diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,5 +1,115 @@
 # Change Log
 
+## [3.27] - 2026-06-13
+
+Bump API version to v1.4.351 — first Vulkan 1.4 release,
+covering spec versions 1.4.303 through 1.4.351.
+
+### Vulkan 1.4 Core
+
+New `Vulkan.Core14` module. The following 15 extensions are promoted to core:
+
+- `VK_EXT_host_image_copy`
+- `VK_EXT_pipeline_protected_access`
+- `VK_EXT_pipeline_robustness`
+- `VK_KHR_dynamic_rendering_local_read`
+- `VK_KHR_global_priority`
+- `VK_KHR_index_type_uint8`
+- `VK_KHR_line_rasterization`
+- `VK_KHR_maintenance5`
+- `VK_KHR_maintenance6`
+- `VK_KHR_map_memory2`
+- `VK_KHR_push_descriptor`
+- `VK_KHR_shader_expect_assume`
+- `VK_KHR_shader_float_controls2`
+- `VK_KHR_shader_subgroup_rotate`
+- `VK_KHR_vertex_attribute_divisor`
+
+Types like `BindDescriptorSetsInfoKHR` now have unprefixed core aliases
+(`BindDescriptorSetsInfo`).
+
+### Breaking Changes
+
+- `Vulkan.Core10.Pipeline` split into `Vulkan.Core10.ComputePipeline` and
+  `Vulkan.Core10.GraphicsPipeline`. Code importing `Vulkan.Core10.Pipeline`
+  directly must update imports. Importing via `Vulkan.Core10` is unaffected.
+- `AccelerationStructureGeometryKHR` is now extensible and takes a type-level
+  list parameter (`AccelerationStructureGeometryKHR '[]`). The `geometries`
+  field now expects `SomeStruct`-wrapped values.
+- `ResourceDescriptorDataEXT` union constructors renamed to avoid ambiguity
+  with handle types (e.g. `Image` → `AnImage`, `TensorARM` → `ATensorARM`).
+- Deprecated KHR/EXT-suffixed constants removed after core promotion:
+  `LUID_SIZE_KHR`, `QUEUE_FAMILY_EXTERNAL_KHR`, `MAX_DEVICE_GROUP_SIZE_KHR`,
+  `MAX_DRIVER_NAME_SIZE_KHR`, `MAX_DRIVER_INFO_SIZE_KHR`, `SHADER_UNUSED_NV`,
+  `MAX_GLOBAL_PRIORITY_SIZE_EXT`,
+  `DYNAMIC_STATE_LINE_STIPPLE_KHR` (now `DYNAMIC_STATE_LINE_STIPPLE`).
+- Some types moved between extension modules due to XML restructuring of
+  conditional `<require depends="...">` blocks (e.g. types previously in
+  `VK_KHR_device_group` now live in `VK_KHR_swapchain`).
+
+### New KHR Extensions
+
+- `VK_KHR_copy_memory_indirect`
+- `VK_KHR_depth_clamp_zero_one`
+- `VK_KHR_device_address_commands`
+- `VK_KHR_device_fault` (promoted from `VK_EXT_device_fault`)
+- `VK_KHR_internally_synchronized_queues`
+- `VK_KHR_maintenance8`
+- `VK_KHR_maintenance9`
+- `VK_KHR_maintenance10`
+- `VK_KHR_maintenance11`
+- `VK_KHR_opacity_micromap` (promoted from `VK_EXT_opacity_micromap`)
+- `VK_KHR_present_id2`
+- `VK_KHR_present_mode_fifo_latest_ready`
+- `VK_KHR_present_wait2`
+- `VK_KHR_robustness2`
+- `VK_KHR_shader_abort`
+- `VK_KHR_shader_bfloat16`
+- `VK_KHR_shader_constant_data`
+- `VK_KHR_shader_fma`
+- `VK_KHR_shader_untyped_pointers`
+- `VK_KHR_surface_maintenance1`
+- `VK_KHR_swapchain_maintenance1`
+- `VK_KHR_unified_image_layouts`
+
+### New EXT Extensions
+
+- `VK_EXT_custom_resolve`
+- `VK_EXT_descriptor_heap`
+- `VK_EXT_external_memory_metal`
+- `VK_EXT_fragment_density_map_offset`
+- `VK_EXT_memory_decompression`
+- `VK_EXT_present_timing`
+- `VK_EXT_primitive_restart_index`
+- `VK_EXT_ray_tracing_invocation_reorder`
+- `VK_EXT_shader_64bit_indexing`
+- `VK_EXT_shader_float8`
+- `VK_EXT_shader_long_vector`
+- `VK_EXT_shader_split_barrier`
+- `VK_EXT_shader_subgroup_partitioned`
+- `VK_EXT_shader_uniform_buffer_unsized_array`
+- `VK_EXT_texture_compression_astc_3d`
+- `VK_EXT_zero_initialize_device_memory`
+
+### New Vendor Extensions
+
+- AMD: `gpa_interface`
+- ARM: `tensors`, `data_graph`, `format_pack`, `pipeline_opacity_micromap`,
+  `data_graph_instruction_set_tosa`, `data_graph_neural_accelerator_statistics`,
+  `data_graph_optical_flow`, `shader_instrumentation`
+- AMDX: `dense_geometry_format`
+- NV: `cooperative_vector`, `external_compute_queue`, `ray_tracing_linear_swept_spheres`,
+  `present_metering`, `push_constant_bank`, `compute_occupancy_priority`
+- QCOM: `tile_shading`, `tile_memory_heap`, `cooperative_matrix_conversion`, `data_graph_model`,
+  `elapsed_timer_query`, `image_processing3`, `queue_perf_hint`, `shader_multiple_wait_queues`
+- SEC: `pipeline_cache_incremental_mode`, `throttle_hint`
+- VALVE: `fragment_density_map_layered`, `shader_mixed_float_dot_product`
+
+### Other
+
+- ~50 new format enumerants: ARM 14/12/10-bit packed formats, 3D ASTC,
+  promoted `FORMAT_A8_UNORM` and `FORMAT_A1B5G5R5_UNORM_PACK16`.
+
 ## [3.26.6] - 2026-03-07
 
 - Bump API version to v1.3.302
diff --git a/package.yaml b/package.yaml
--- a/package.yaml
+++ b/package.yaml
@@ -1,5 +1,5 @@
 name: vulkan
-version: "3.26.6"
+version: "3.27"
 synopsis: Bindings to the Vulkan graphics API.
 description: Please see [the readme](https://github.com/expipiplus1/vulkan/#readme)
 category: Graphics
@@ -18,7 +18,7 @@
   verbatim:
     other-modules:
   dependencies:
-  - base <5
+  - base >= 4.16 && <5
   - bytestring
   - transformers
   - vector
@@ -90,38 +90,26 @@
     - condition: false
       other-modules: Paths_vulkan
 
+language: GHC2021
 default-extensions:
 - AllowAmbiguousTypes
 - CPP
 - DataKinds
 - DefaultSignatures
 - DeriveAnyClass
-- DeriveGeneric
 - DerivingStrategies
 - DuplicateRecordFields
-- FlexibleContexts
-- FlexibleInstances
 - GADTs
-- GeneralizedNewtypeDeriving
-- InstanceSigs
 - LambdaCase
 - MagicHash
-- NamedFieldPuns
 - NoMonomorphismRestriction
 - OverloadedStrings
 - PartialTypeSignatures
 - PatternSynonyms
-- PolyKinds
 - QuantifiedConstraints
-- RankNTypes
 - RecordWildCards
 - RoleAnnotations
-- ScopedTypeVariables
-- StandaloneDeriving
 - Strict
-- TypeApplications
 - TypeFamilyDependencies
-- TypeOperators
-- TypeSynonymInstances
 - UndecidableInstances
 - ViewPatterns
diff --git a/readme.md b/readme.md
--- a/readme.md
+++ b/readme.md
@@ -3,7 +3,7 @@
 Slightly high level Haskell bindings to the Vulkan graphics API.
 
 Join us on Matrix at
-[#vulkan:monoid.al](https://matrix.to/#/#vulkan:monoid.al?via=monoid.al&via=matrix.org&via=nordgedanken.dev)
+[#haskell-vulkan:matrix.org](https://matrix.to/#/#haskell-vulkan:matrix.org)
 
 These bindings present an interface to Vulkan which looks like more idiomatic
 Haskell and which is much less verbose than the C API. Nevertheless, it retains
diff --git a/src/Vulkan.hs b/src/Vulkan.hs
--- a/src/Vulkan.hs
+++ b/src/Vulkan.hs
@@ -5,6 +5,7 @@
                , module Vulkan.Core11
                , module Vulkan.Core12
                , module Vulkan.Core13
+               , module Vulkan.Core14
                , module Vulkan.Extensions
                , module Vulkan.NamedType
                , module Vulkan.SPIRVRequirements
@@ -15,6 +16,7 @@
 import Vulkan.Core11
 import Vulkan.Core12
 import Vulkan.Core13
+import Vulkan.Core14
 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
@@ -54,3219 +54,3977 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureBuildRangeInfoKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureBuildSizesInfoKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_buffer (AccelerationStructureCaptureDescriptorDataInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureCreateInfoKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing (AccelerationStructureCreateInfoNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureDeviceAddressInfoKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureGeometryAabbsDataKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureGeometryInstancesDataKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureGeometryKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing_motion_blur (AccelerationStructureGeometryMotionTrianglesDataNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureGeometryTrianglesDataKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing (AccelerationStructureInfoNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureInstanceKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing_motion_blur (AccelerationStructureMatrixMotionInstanceNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing (AccelerationStructureMemoryRequirementsInfoNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing_motion_blur (AccelerationStructureMotionInfoNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing_motion_blur (AccelerationStructureMotionInstanceNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing_motion_blur (AccelerationStructureSRTMotionInstanceNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_displacement_micromap (AccelerationStructureTrianglesDisplacementMicromapNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_opacity_micromap (AccelerationStructureTrianglesOpacityMicromapEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureVersionInfoKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_swapchain (AcquireNextImageInfoKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_performance_query (AcquireProfilingLockInfoKHR)
-import {-# SOURCE #-} Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)
-import {-# SOURCE #-} Vulkan.Extensions.VK_SEC_amigo_profiling (AmigoProfilingSubmitInfoSEC)
-import {-# SOURCE #-} Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer (AndroidHardwareBufferFormatProperties2ANDROID)
-import {-# SOURCE #-} Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer (AndroidHardwareBufferFormatPropertiesANDROID)
-import {-# SOURCE #-} Vulkan.Extensions.VK_ANDROID_external_format_resolve (AndroidHardwareBufferFormatResolvePropertiesANDROID)
-import {-# SOURCE #-} Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer (AndroidHardwareBufferPropertiesANDROID)
-import {-# SOURCE #-} Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer (AndroidHardwareBufferUsageANDROID)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_android_surface (AndroidSurfaceCreateInfoKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_anti_lag (AntiLagDataAMD)
-import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_anti_lag (AntiLagPresentationInfoAMD)
-import {-# SOURCE #-} Vulkan.Core10.DeviceInitialization (ApplicationInfo)
-import {-# SOURCE #-} Vulkan.Core10.Pass (AttachmentDescription)
-import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2 (AttachmentDescription2)
-import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts (AttachmentDescriptionStencilLayout)
-import {-# SOURCE #-} Vulkan.Core10.Pass (AttachmentReference)
-import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2 (AttachmentReference2)
-import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts (AttachmentReferenceStencilLayout)
-import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_mixed_attachment_samples (AttachmentSampleCountInfoAMD)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_sample_locations (AttachmentSampleLocationsEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing (BindAccelerationStructureMemoryInfoNV)
-import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2 (BindBufferMemoryDeviceGroupInfo)
-import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2 (BindBufferMemoryInfo)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance6 (BindDescriptorBufferEmbeddedSamplersInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance6 (BindDescriptorSetsInfoKHR)
-import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2 (BindImageMemoryDeviceGroupInfo)
-import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2 (BindImageMemoryInfo)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_swapchain (BindImageMemorySwapchainInfoKHR)
-import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion (BindImagePlaneMemoryInfo)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_device_generated_commands (BindIndexBufferIndirectCommandEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_generated_commands (BindIndexBufferIndirectCommandNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance6 (BindMemoryStatusKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_generated_commands_compute (BindPipelineIndirectCommandNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_generated_commands (BindShaderGroupIndirectCommandNV)
-import {-# SOURCE #-} Vulkan.Core10.SparseResourceMemoryManagement (BindSparseInfo)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_device_generated_commands (BindVertexBufferIndirectCommandEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_generated_commands (BindVertexBufferIndirectCommandNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_filter_cubic_weights (BlitImageCubicWeightsInfoQCOM)
-import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2 (BlitImageInfo2)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_buffer (BufferCaptureDescriptorDataInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_FUCHSIA_buffer_collection (BufferCollectionBufferCreateInfoFUCHSIA)
-import {-# SOURCE #-} Vulkan.Extensions.VK_FUCHSIA_buffer_collection (BufferCollectionConstraintsInfoFUCHSIA)
-import {-# SOURCE #-} Vulkan.Extensions.VK_FUCHSIA_buffer_collection (BufferCollectionCreateInfoFUCHSIA)
-import {-# SOURCE #-} Vulkan.Extensions.VK_FUCHSIA_buffer_collection (BufferCollectionImageCreateInfoFUCHSIA)
-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.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.Core13.Promoted_From_VK_KHR_copy_commands2 (BufferImageCopy2)
-import {-# SOURCE #-} Vulkan.Core10.OtherTypes (BufferMemoryBarrier)
-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.Extensions.VK_KHR_maintenance5 (BufferUsageFlags2CreateInfoKHR)
-import {-# SOURCE #-} Vulkan.Core10.BufferView (BufferViewCreateInfo)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_calibrated_timestamps (CalibratedTimestampInfoKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_diagnostic_checkpoints (CheckpointData2NV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_diagnostic_checkpoints (CheckpointDataNV)
-import {-# SOURCE #-} Vulkan.Core10.CommandBufferBuilding (ClearAttachment)
-import {-# SOURCE #-} Vulkan.Core10.CommandBufferBuilding (ClearDepthStencilValue)
-import {-# SOURCE #-} Vulkan.Core10.CommandBufferBuilding (ClearRect)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_shading_rate_image (CoarseSampleLocationNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_shading_rate_image (CoarseSampleOrderCustomNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_extended_dynamic_state3 (ColorBlendAdvancedEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_extended_dynamic_state3 (ColorBlendEquationEXT)
-import {-# SOURCE #-} Vulkan.Core10.CommandBuffer (CommandBufferAllocateInfo)
-import {-# SOURCE #-} Vulkan.Core10.CommandBuffer (CommandBufferBeginInfo)
-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.Core13.Promoted_From_VK_KHR_dynamic_rendering (CommandBufferInheritanceRenderingInfo)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_inherited_viewport_scissor (CommandBufferInheritanceViewportScissorInfoNV)
-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)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_generated_commands_compute (ComputePipelineIndirectBufferInfoNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_conditional_rendering (ConditionalRenderingBeginInfoEXT)
-import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_driver_properties (ConformanceVersion)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_cooperative_matrix2 (CooperativeMatrixFlexibleDimensionsPropertiesNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_cooperative_matrix (CooperativeMatrixPropertiesKHR)
-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.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.Core13.Promoted_From_VK_KHR_copy_commands2 (CopyImageInfo2)
-import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2 (CopyImageToBufferInfo2)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_host_image_copy (CopyImageToImageInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_host_image_copy (CopyImageToMemoryInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_copy_memory_indirect (CopyMemoryIndirectCommandNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (CopyMemoryToAccelerationStructureInfoKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_copy_memory_indirect (CopyMemoryToImageIndirectCommandNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_host_image_copy (CopyMemoryToImageInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_opacity_micromap (CopyMemoryToMicromapInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_opacity_micromap (CopyMicromapInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_opacity_micromap (CopyMicromapToMemoryInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NVX_binary_import (CuFunctionCreateInfoNVX)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NVX_binary_import (CuLaunchInfoNVX)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NVX_binary_import (CuModuleCreateInfoNVX)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NVX_binary_import (CuModuleTexturingModeCreateInfoNVX)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_cuda_kernel_launch (CudaFunctionCreateInfoNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_cuda_kernel_launch (CudaLaunchInfoNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_cuda_kernel_launch (CudaModuleCreateInfoNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_external_semaphore_win32 (D3D12FenceSubmitInfoKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_debug_marker (DebugMarkerMarkerInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_debug_marker (DebugMarkerObjectNameInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_debug_marker (DebugMarkerObjectTagInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_debug_report (DebugReportCallbackCreateInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_debug_utils (DebugUtilsLabelEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_debug_utils (DebugUtilsMessengerCallbackDataEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_debug_utils (DebugUtilsMessengerCreateInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_debug_utils (DebugUtilsObjectNameInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_debug_utils (DebugUtilsObjectTagInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_memory_decompression (DecompressMemoryRegionNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_dedicated_allocation (DedicatedAllocationBufferCreateInfoNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_dedicated_allocation (DedicatedAllocationImageCreateInfoNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_dedicated_allocation (DedicatedAllocationMemoryAllocateInfoNV)
-import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_synchronization2 (DependencyInfo)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_depth_bias_control (DepthBiasInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_depth_bias_control (DepthBiasRepresentationInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_depth_clamp_control (DepthClampRangeEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_buffer (DescriptorAddressInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_buffer (DescriptorBufferBindingInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_buffer (DescriptorBufferBindingPushDescriptorBufferHandleEXT)
-import {-# SOURCE #-} Vulkan.Core10.DescriptorSet (DescriptorBufferInfo)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_buffer (DescriptorGetInfoEXT)
-import {-# SOURCE #-} Vulkan.Core10.DescriptorSet (DescriptorImageInfo)
-import {-# SOURCE #-} Vulkan.Core10.DescriptorSet (DescriptorPoolCreateInfo)
-import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_inline_uniform_block (DescriptorPoolInlineUniformBlockCreateInfo)
-import {-# SOURCE #-} Vulkan.Core10.DescriptorSet (DescriptorPoolSize)
-import {-# SOURCE #-} Vulkan.Core10.DescriptorSet (DescriptorSetAllocateInfo)
-import {-# SOURCE #-} Vulkan.Extensions.VK_VALVE_descriptor_set_host_mapping (DescriptorSetBindingReferenceVALVE)
-import {-# SOURCE #-} Vulkan.Core10.DescriptorSet (DescriptorSetLayoutBinding)
-import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing (DescriptorSetLayoutBindingFlagsCreateInfo)
-import {-# SOURCE #-} Vulkan.Core10.DescriptorSet (DescriptorSetLayoutCreateInfo)
-import {-# SOURCE #-} Vulkan.Extensions.VK_VALVE_descriptor_set_host_mapping (DescriptorSetLayoutHostMappingInfoVALVE)
-import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_maintenance3 (DescriptorSetLayoutSupport)
-import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing (DescriptorSetVariableDescriptorCountAllocateInfo)
-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_EXT_device_address_binding_report (DeviceAddressBindingCallbackDataEXT)
-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)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_display_control (DeviceEventInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_device_fault (DeviceFaultAddressInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_device_fault (DeviceFaultCountsEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_device_fault (DeviceFaultInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_device_fault (DeviceFaultVendorBinaryHeaderVersionOneEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_device_fault (DeviceFaultVendorInfoEXT)
-import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_device_group (DeviceGroupBindSparseInfo)
-import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_device_group (DeviceGroupCommandBufferBeginInfo)
-import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_device_group_creation (DeviceGroupDeviceCreateInfo)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_swapchain (DeviceGroupPresentCapabilitiesKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_swapchain (DeviceGroupPresentInfoKHR)
-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.Core13.Promoted_From_VK_KHR_maintenance4 (DeviceImageMemoryRequirements)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance5 (DeviceImageSubresourceInfoKHR)
-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_KHR_pipeline_binary (DevicePipelineBinaryInternalCacheControlKHR)
-import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_private_data (DevicePrivateDataCreateInfo)
-import {-# SOURCE #-} Vulkan.Core10.Device (DeviceQueueCreateInfo)
-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_ARM_scheduling_controls (DeviceQueueShaderCoreControlCreateInfoARM)
-import {-# SOURCE #-} Vulkan.Extensions.VK_LUNARG_direct_driver_loading (DirectDriverLoadingInfoLUNARG)
-import {-# SOURCE #-} Vulkan.Extensions.VK_LUNARG_direct_driver_loading (DirectDriverLoadingListLUNARG)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_directfb_surface (DirectFBSurfaceCreateInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_AMDX_shader_enqueue (DispatchGraphCountInfoAMDX)
-import {-# SOURCE #-} Vulkan.Extensions.VK_AMDX_shader_enqueue (DispatchGraphInfoAMDX)
-import {-# SOURCE #-} Vulkan.Core10.OtherTypes (DispatchIndirectCommand)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_display_control (DisplayEventInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_display (DisplayModeCreateInfoKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_display (DisplayModeParametersKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_get_display_properties2 (DisplayModeProperties2KHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_display (DisplayModePropertiesKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_display_stereo (DisplayModeStereoPropertiesNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_display_native_hdr (DisplayNativeHdrSurfaceCapabilitiesAMD)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_get_display_properties2 (DisplayPlaneCapabilities2KHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_display (DisplayPlaneCapabilitiesKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_get_display_properties2 (DisplayPlaneInfo2KHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_get_display_properties2 (DisplayPlaneProperties2KHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_display (DisplayPlanePropertiesKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_display_control (DisplayPowerInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_display_swapchain (DisplayPresentInfoKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_get_display_properties2 (DisplayProperties2KHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_display (DisplayPropertiesKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_display (DisplaySurfaceCreateInfoKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_display_stereo (DisplaySurfaceStereoCreateInfoNV)
-import {-# SOURCE #-} Vulkan.Core10.OtherTypes (DrawIndexedIndirectCommand)
-import {-# SOURCE #-} Vulkan.Core10.OtherTypes (DrawIndirectCommand)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_device_generated_commands (DrawIndirectCountIndirectCommandEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_mesh_shader (DrawMeshTasksIndirectCommandEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_mesh_shader (DrawMeshTasksIndirectCommandNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_image_drm_format_modifier (DrmFormatModifierProperties2EXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_image_drm_format_modifier (DrmFormatModifierPropertiesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_image_drm_format_modifier (DrmFormatModifierPropertiesList2EXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_image_drm_format_modifier (DrmFormatModifierPropertiesListEXT)
-import {-# SOURCE #-} Vulkan.Core10.Event (EventCreateInfo)
-import {-# SOURCE #-} Vulkan.Extensions.VK_AMDX_shader_enqueue (ExecutionGraphPipelineCreateInfoAMDX)
-import {-# SOURCE #-} Vulkan.Extensions.VK_AMDX_shader_enqueue (ExecutionGraphPipelineScratchSizeAMDX)
-import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_external_fence (ExportFenceCreateInfo)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_external_fence_win32 (ExportFenceWin32HandleInfoKHR)
-import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_external_memory (ExportMemoryAllocateInfo)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_external_memory (ExportMemoryAllocateInfoNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_external_memory_win32 (ExportMemoryWin32HandleInfoKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_external_memory_win32 (ExportMemoryWin32HandleInfoNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_metal_objects (ExportMetalBufferInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_metal_objects (ExportMetalCommandQueueInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_metal_objects (ExportMetalDeviceInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_metal_objects (ExportMetalIOSurfaceInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_metal_objects (ExportMetalObjectCreateInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_metal_objects (ExportMetalObjectsInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_metal_objects (ExportMetalSharedEventInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_metal_objects (ExportMetalTextureInfoEXT)
-import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore (ExportSemaphoreCreateInfo)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_external_semaphore_win32 (ExportSemaphoreWin32HandleInfoKHR)
-import {-# SOURCE #-} Vulkan.Core10.ExtensionDiscovery (ExtensionProperties)
-import {-# SOURCE #-} Vulkan.Core10.FundamentalTypes (Extent2D)
-import {-# SOURCE #-} Vulkan.Core10.FundamentalTypes (Extent3D)
-import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities (ExternalBufferProperties)
-import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_external_fence_capabilities (ExternalFenceProperties)
-import {-# SOURCE #-} Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer (ExternalFormatANDROID)
-import {-# SOURCE #-} Vulkan.Extensions.VK_QNX_external_memory_screen_buffer (ExternalFormatQNX)
-import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities (ExternalImageFormatProperties)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_external_memory_capabilities (ExternalImageFormatPropertiesNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_external_memory_acquire_unmodified (ExternalMemoryAcquireUnmodifiedEXT)
-import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_external_memory (ExternalMemoryBufferCreateInfo)
-import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_external_memory (ExternalMemoryImageCreateInfo)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_external_memory (ExternalMemoryImageCreateInfoNV)
-import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities (ExternalMemoryProperties)
-import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore_capabilities (ExternalSemaphoreProperties)
-import {-# SOURCE #-} Vulkan.Core10.Fence (FenceCreateInfo)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_external_fence_fd (FenceGetFdInfoKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_external_fence_win32 (FenceGetWin32HandleInfoKHR)
-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.Core13.Promoted_From_VK_KHR_format_feature_flags2 (FormatProperties3)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_fragment_shading_rate (FragmentShadingRateAttachmentInfoKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_frame_boundary (FrameBoundaryEXT)
-import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer (FramebufferAttachmentImageInfo)
-import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer (FramebufferAttachmentsCreateInfo)
-import {-# SOURCE #-} Vulkan.Core10.Pass (FramebufferCreateInfo)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_coverage_reduction_mode (FramebufferMixedSamplesCombinationNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_device_generated_commands (GeneratedCommandsInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_generated_commands (GeneratedCommandsInfoNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_device_generated_commands (GeneratedCommandsMemoryRequirementsInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_generated_commands (GeneratedCommandsMemoryRequirementsInfoNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_device_generated_commands (GeneratedCommandsPipelineInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_device_generated_commands (GeneratedCommandsShaderInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing (GeometryAABBNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing (GeometryDataNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing (GeometryNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing (GeometryTrianglesNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_low_latency2 (GetLatencyMarkerInfoNV)
-import {-# SOURCE #-} Vulkan.Core10.Pipeline (GraphicsPipelineCreateInfo)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_graphics_pipeline_library (GraphicsPipelineLibraryCreateInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_generated_commands (GraphicsPipelineShaderGroupsCreateInfoNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_generated_commands (GraphicsShaderGroupCreateInfoNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_hdr_metadata (HdrMetadataEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_HUAWEI_hdr_vivid (HdrVividDynamicMetadataHUAWEI)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_headless_surface (HeadlessSurfaceCreateInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_host_image_copy (HostImageCopyDevicePerformanceQueryEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_host_image_copy (HostImageLayoutTransitionInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_MVK_ios_surface (IOSSurfaceCreateInfoMVK)
-import {-# SOURCE #-} Vulkan.Extensions.VK_MESA_image_alignment_control (ImageAlignmentControlCreateInfoMESA)
-import {-# SOURCE #-} Vulkan.Core10.CommandBufferBuilding (ImageBlit)
-import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2 (ImageBlit2)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_buffer (ImageCaptureDescriptorDataInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_image_compression_control (ImageCompressionControlEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_image_compression_control (ImageCompressionPropertiesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_FUCHSIA_buffer_collection (ImageConstraintsInfoFUCHSIA)
-import {-# SOURCE #-} Vulkan.Core10.CommandBufferBuilding (ImageCopy)
-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)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_image_drm_format_modifier (ImageDrmFormatModifierPropertiesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_FUCHSIA_buffer_collection (ImageFormatConstraintsInfoFUCHSIA)
-import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_image_format_list (ImageFormatListCreateInfo)
-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.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.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)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance5 (ImageSubresource2KHR)
-import {-# SOURCE #-} Vulkan.Core10.CommandBufferBuilding (ImageSubresourceLayers)
-import {-# SOURCE #-} Vulkan.Core10.ImageView (ImageSubresourceRange)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_swapchain (ImageSwapchainCreateInfoKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_host_image_copy (ImageToMemoryCopyEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_astc_decode_mode (ImageViewASTCDecodeModeEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NVX_image_view_handle (ImageViewAddressPropertiesNVX)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_buffer (ImageViewCaptureDescriptorDataInfoEXT)
-import {-# SOURCE #-} Vulkan.Core10.ImageView (ImageViewCreateInfo)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NVX_image_view_handle (ImageViewHandleInfoNVX)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_image_view_min_lod (ImageViewMinLodCreateInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_image_processing (ImageViewSampleWeightCreateInfoQCOM)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_image_sliced_view_of_3d (ImageViewSlicedCreateInfoEXT)
-import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_maintenance2 (ImageViewUsageCreateInfo)
-import {-# SOURCE #-} Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer (ImportAndroidHardwareBufferInfoANDROID)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_external_fence_fd (ImportFenceFdInfoKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_external_fence_win32 (ImportFenceWin32HandleInfoKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_FUCHSIA_buffer_collection (ImportMemoryBufferCollectionFUCHSIA)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_external_memory_fd (ImportMemoryFdInfoKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_external_memory_host (ImportMemoryHostPointerInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_external_memory_win32 (ImportMemoryWin32HandleInfoKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_external_memory_win32 (ImportMemoryWin32HandleInfoNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_FUCHSIA_external_memory (ImportMemoryZirconHandleInfoFUCHSIA)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_metal_objects (ImportMetalBufferInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_metal_objects (ImportMetalIOSurfaceInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_metal_objects (ImportMetalSharedEventInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_metal_objects (ImportMetalTextureInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_QNX_external_memory_screen_buffer (ImportScreenBufferInfoQNX)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_external_semaphore_fd (ImportSemaphoreFdInfoKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_external_semaphore_win32 (ImportSemaphoreWin32HandleInfoKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_FUCHSIA_external_semaphore (ImportSemaphoreZirconHandleInfoFUCHSIA)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_device_generated_commands (IndirectCommandsExecutionSetTokenEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_device_generated_commands (IndirectCommandsIndexBufferTokenEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_device_generated_commands (IndirectCommandsLayoutCreateInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_generated_commands (IndirectCommandsLayoutCreateInfoNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_device_generated_commands (IndirectCommandsLayoutTokenEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_generated_commands (IndirectCommandsLayoutTokenNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_device_generated_commands (IndirectCommandsPushConstantTokenEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_generated_commands (IndirectCommandsStreamNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_device_generated_commands (IndirectCommandsVertexBufferTokenEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_device_generated_commands (IndirectExecutionSetCreateInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_device_generated_commands (IndirectExecutionSetPipelineInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_device_generated_commands (IndirectExecutionSetShaderInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_device_generated_commands (IndirectExecutionSetShaderLayoutInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_INTEL_performance_query (InitializePerformanceApiInfoINTEL)
-import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_maintenance2 (InputAttachmentAspectReference)
-import {-# SOURCE #-} Vulkan.Core10.DeviceInitialization (InstanceCreateInfo)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_low_latency2 (LatencySleepInfoNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_low_latency2 (LatencySleepModeInfoNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_low_latency2 (LatencySubmissionPresentIdNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_low_latency2 (LatencySurfaceCapabilitiesNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_low_latency2 (LatencyTimingsFrameReportNV)
-import {-# SOURCE #-} Vulkan.Core10.LayerDiscovery (LayerProperties)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_layer_settings (LayerSettingEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_layer_settings (LayerSettingsCreateInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_MVK_macos_surface (MacOSSurfaceCreateInfoMVK)
-import {-# SOURCE #-} Vulkan.Core10.Memory (MappedMemoryRange)
-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.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)
-import {-# SOURCE #-} Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer (MemoryGetAndroidHardwareBufferInfoANDROID)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_external_memory_fd (MemoryGetFdInfoKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_external_memory_rdma (MemoryGetRemoteAddressInfoNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_external_memory_win32 (MemoryGetWin32HandleInfoKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_FUCHSIA_external_memory (MemoryGetZirconHandleInfoFUCHSIA)
-import {-# SOURCE #-} Vulkan.Core10.DeviceInitialization (MemoryHeap)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_external_memory_host (MemoryHostPointerPropertiesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_map_memory2 (MemoryMapInfoKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_map_memory_placed (MemoryMapPlacedInfoEXT)
-import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address (MemoryOpaqueCaptureAddressAllocateInfo)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_memory_priority (MemoryPriorityAllocateInfoEXT)
-import {-# SOURCE #-} Vulkan.Core10.MemoryManagement (MemoryRequirements)
-import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2 (MemoryRequirements2)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_host_image_copy (MemoryToImageCopyEXT)
-import {-# SOURCE #-} Vulkan.Core10.DeviceInitialization (MemoryType)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_map_memory2 (MemoryUnmapInfoKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_external_memory_win32 (MemoryWin32HandlePropertiesKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_FUCHSIA_external_memory (MemoryZirconHandlePropertiesFUCHSIA)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_metal_surface (MetalSurfaceCreateInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_opacity_micromap (MicromapBuildInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_opacity_micromap (MicromapBuildSizesInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_opacity_micromap (MicromapCreateInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_opacity_micromap (MicromapTriangleEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_opacity_micromap (MicromapUsageEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_opacity_micromap (MicromapVersionInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_multi_draw (MultiDrawIndexedInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_multi_draw (MultiDrawInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_sample_locations (MultisamplePropertiesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled (MultisampledRenderToSingleSampledInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NVX_multiview_per_view_attributes (MultiviewPerViewAttributesInfoNVX)
-import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_multiview_per_view_render_areas (MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_mutable_descriptor_type (MutableDescriptorTypeCreateInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_mutable_descriptor_type (MutableDescriptorTypeListEXT)
-import {-# SOURCE #-} Vulkan.Core10.FundamentalTypes (Offset2D)
-import {-# SOURCE #-} Vulkan.Core10.FundamentalTypes (Offset3D)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_buffer (OpaqueCaptureDescriptorDataCreateInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_optical_flow (OpticalFlowExecuteInfoNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_optical_flow (OpticalFlowImageFormatInfoNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_optical_flow (OpticalFlowImageFormatPropertiesNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_optical_flow (OpticalFlowSessionCreateInfoNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_optical_flow (OpticalFlowSessionCreatePrivateDataInfoNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_low_latency2 (OutOfBandQueueTypeInfoNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_GOOGLE_display_timing (PastPresentationTimingGOOGLE)
-import {-# SOURCE #-} Vulkan.Extensions.VK_INTEL_performance_query (PerformanceConfigurationAcquireInfoINTEL)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_performance_query (PerformanceCounterDescriptionKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_performance_query (PerformanceCounterKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_INTEL_performance_query (PerformanceMarkerInfoINTEL)
-import {-# SOURCE #-} Vulkan.Extensions.VK_INTEL_performance_query (PerformanceOverrideInfoINTEL)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_performance_query (PerformanceQuerySubmitInfoKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_INTEL_performance_query (PerformanceStreamMarkerInfoINTEL)
-import {-# SOURCE #-} Vulkan.Extensions.VK_INTEL_performance_query (PerformanceValueINTEL)
-import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_16bit_storage (PhysicalDevice16BitStorageFeatures)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_4444_formats (PhysicalDevice4444FormatsFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_8bit_storage (PhysicalDevice8BitStorageFeatures)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_astc_decode_mode (PhysicalDeviceASTCDecodeFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (PhysicalDeviceAccelerationStructureFeaturesKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (PhysicalDeviceAccelerationStructurePropertiesKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_device_address_binding_report (PhysicalDeviceAddressBindingReportFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_SEC_amigo_profiling (PhysicalDeviceAmigoProfilingFeaturesSEC)
-import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_anti_lag (PhysicalDeviceAntiLagFeaturesAMD)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state (PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_attachment_feedback_loop_layout (PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_blend_operation_advanced (PhysicalDeviceBlendOperationAdvancedFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_blend_operation_advanced (PhysicalDeviceBlendOperationAdvancedPropertiesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_border_color_swizzle (PhysicalDeviceBorderColorSwizzleFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address (PhysicalDeviceBufferDeviceAddressFeatures)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_buffer_device_address (PhysicalDeviceBufferDeviceAddressFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_HUAWEI_cluster_culling_shader (PhysicalDeviceClusterCullingShaderFeaturesHUAWEI)
-import {-# SOURCE #-} Vulkan.Extensions.VK_HUAWEI_cluster_culling_shader (PhysicalDeviceClusterCullingShaderPropertiesHUAWEI)
-import {-# SOURCE #-} Vulkan.Extensions.VK_HUAWEI_cluster_culling_shader (PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI)
-import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_device_coherent_memory (PhysicalDeviceCoherentMemoryFeaturesAMD)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_color_write_enable (PhysicalDeviceColorWriteEnableFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_command_buffer_inheritance (PhysicalDeviceCommandBufferInheritanceFeaturesNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_compute_shader_derivatives (PhysicalDeviceComputeShaderDerivativesFeaturesKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_compute_shader_derivatives (PhysicalDeviceComputeShaderDerivativesPropertiesKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_conditional_rendering (PhysicalDeviceConditionalRenderingFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_conservative_rasterization (PhysicalDeviceConservativeRasterizationPropertiesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_cooperative_matrix2 (PhysicalDeviceCooperativeMatrix2FeaturesNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_cooperative_matrix2 (PhysicalDeviceCooperativeMatrix2PropertiesNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_cooperative_matrix (PhysicalDeviceCooperativeMatrixFeaturesKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_cooperative_matrix (PhysicalDeviceCooperativeMatrixFeaturesNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_cooperative_matrix (PhysicalDeviceCooperativeMatrixPropertiesKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_cooperative_matrix (PhysicalDeviceCooperativeMatrixPropertiesNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_copy_memory_indirect (PhysicalDeviceCopyMemoryIndirectFeaturesNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_copy_memory_indirect (PhysicalDeviceCopyMemoryIndirectPropertiesNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_corner_sampled_image (PhysicalDeviceCornerSampledImageFeaturesNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_coverage_reduction_mode (PhysicalDeviceCoverageReductionModeFeaturesNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_filter_cubic_clamp (PhysicalDeviceCubicClampFeaturesQCOM)
-import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_filter_cubic_weights (PhysicalDeviceCubicWeightsFeaturesQCOM)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_cuda_kernel_launch (PhysicalDeviceCudaKernelLaunchFeaturesNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_cuda_kernel_launch (PhysicalDeviceCudaKernelLaunchPropertiesNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_custom_border_color (PhysicalDeviceCustomBorderColorFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_custom_border_color (PhysicalDeviceCustomBorderColorPropertiesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_dedicated_allocation_image_aliasing (PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_depth_bias_control (PhysicalDeviceDepthBiasControlFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_depth_clamp_control (PhysicalDeviceDepthClampControlFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_depth_clamp_zero_one (PhysicalDeviceDepthClampZeroOneFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_depth_clip_control (PhysicalDeviceDepthClipControlFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_depth_clip_enable (PhysicalDeviceDepthClipEnableFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve (PhysicalDeviceDepthStencilResolveProperties)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_buffer (PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_buffer (PhysicalDeviceDescriptorBufferFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_buffer (PhysicalDeviceDescriptorBufferPropertiesEXT)
-import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing (PhysicalDeviceDescriptorIndexingFeatures)
-import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing (PhysicalDeviceDescriptorIndexingProperties)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_descriptor_pool_overallocation (PhysicalDeviceDescriptorPoolOverallocationFeaturesNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_VALVE_descriptor_set_host_mapping (PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_generated_commands_compute (PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_device_generated_commands (PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_generated_commands (PhysicalDeviceDeviceGeneratedCommandsFeaturesNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_device_generated_commands (PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_generated_commands (PhysicalDeviceDeviceGeneratedCommandsPropertiesNV)
-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_EXT_discard_rectangles (PhysicalDeviceDiscardRectanglePropertiesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_displacement_micromap (PhysicalDeviceDisplacementMicromapFeaturesNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_displacement_micromap (PhysicalDeviceDisplacementMicromapPropertiesNV)
-import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_driver_properties (PhysicalDeviceDriverProperties)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_physical_device_drm (PhysicalDeviceDrmPropertiesEXT)
-import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering (PhysicalDeviceDynamicRenderingFeatures)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read (PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_dynamic_rendering_unused_attachments (PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT)
-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_state3 (PhysicalDeviceExtendedDynamicState3FeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_extended_dynamic_state3 (PhysicalDeviceExtendedDynamicState3PropertiesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_extended_dynamic_state (PhysicalDeviceExtendedDynamicStateFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_extended_sparse_address_space (PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_extended_sparse_address_space (PhysicalDeviceExtendedSparseAddressSpacePropertiesNV)
-import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities (PhysicalDeviceExternalBufferInfo)
-import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_external_fence_capabilities (PhysicalDeviceExternalFenceInfo)
-import {-# SOURCE #-} Vulkan.Extensions.VK_ANDROID_external_format_resolve (PhysicalDeviceExternalFormatResolveFeaturesANDROID)
-import {-# SOURCE #-} Vulkan.Extensions.VK_ANDROID_external_format_resolve (PhysicalDeviceExternalFormatResolvePropertiesANDROID)
-import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities (PhysicalDeviceExternalImageFormatInfo)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_external_memory_host (PhysicalDeviceExternalMemoryHostPropertiesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_external_memory_rdma (PhysicalDeviceExternalMemoryRDMAFeaturesNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_QNX_external_memory_screen_buffer (PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX)
-import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore_capabilities (PhysicalDeviceExternalSemaphoreInfo)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_device_fault (PhysicalDeviceFaultFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Core10.DeviceInitialization (PhysicalDeviceFeatures)
-import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (PhysicalDeviceFeatures2)
-import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_shader_float_controls (PhysicalDeviceFloatControlsProperties)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_fragment_density_map2 (PhysicalDeviceFragmentDensityMap2FeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_fragment_density_map2 (PhysicalDeviceFragmentDensityMap2PropertiesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_fragment_density_map (PhysicalDeviceFragmentDensityMapFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_fragment_density_map_offset (PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM)
-import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_fragment_density_map_offset (PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_fragment_density_map (PhysicalDeviceFragmentDensityMapPropertiesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_fragment_shader_barycentric (PhysicalDeviceFragmentShaderBarycentricFeaturesKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_fragment_shader_barycentric (PhysicalDeviceFragmentShaderBarycentricPropertiesKHR)
-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_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 (PhysicalDeviceFragmentShadingRateKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_fragment_shading_rate (PhysicalDeviceFragmentShadingRatePropertiesKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_frame_boundary (PhysicalDeviceFrameBoundaryFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_global_priority (PhysicalDeviceGlobalPriorityQueryFeaturesKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_graphics_pipeline_library (PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_graphics_pipeline_library (PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT)
-import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_device_group_creation (PhysicalDeviceGroupProperties)
-import {-# SOURCE #-} Vulkan.Extensions.VK_HUAWEI_hdr_vivid (PhysicalDeviceHdrVividFeaturesHUAWEI)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_host_image_copy (PhysicalDeviceHostImageCopyFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_host_image_copy (PhysicalDeviceHostImageCopyPropertiesEXT)
-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_2d_view_of_3d (PhysicalDeviceImage2DViewOf3DFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_MESA_image_alignment_control (PhysicalDeviceImageAlignmentControlFeaturesMESA)
-import {-# SOURCE #-} Vulkan.Extensions.VK_MESA_image_alignment_control (PhysicalDeviceImageAlignmentControlPropertiesMESA)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_image_compression_control (PhysicalDeviceImageCompressionControlFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_image_compression_control_swapchain (PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT)
-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_QCOM_image_processing2 (PhysicalDeviceImageProcessing2FeaturesQCOM)
-import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_image_processing2 (PhysicalDeviceImageProcessing2PropertiesQCOM)
-import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_image_processing (PhysicalDeviceImageProcessingFeaturesQCOM)
-import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_image_processing (PhysicalDeviceImageProcessingPropertiesQCOM)
-import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_image_robustness (PhysicalDeviceImageRobustnessFeatures)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_image_sliced_view_of_3d (PhysicalDeviceImageSlicedViewOf3DFeaturesEXT)
-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_KHR_index_type_uint8 (PhysicalDeviceIndexTypeUint8FeaturesKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_inherited_viewport_scissor (PhysicalDeviceInheritedViewportScissorFeaturesNV)
-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_KHR_maintenance7 (PhysicalDeviceLayeredApiPropertiesKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance7 (PhysicalDeviceLayeredApiPropertiesListKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance7 (PhysicalDeviceLayeredApiVulkanPropertiesKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_MSFT_layered_driver (PhysicalDeviceLayeredDriverPropertiesMSFT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_legacy_dithering (PhysicalDeviceLegacyDitheringFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_legacy_vertex_attributes (PhysicalDeviceLegacyVertexAttributesFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_legacy_vertex_attributes (PhysicalDeviceLegacyVertexAttributesPropertiesEXT)
-import {-# SOURCE #-} Vulkan.Core10.DeviceInitialization (PhysicalDeviceLimits)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_line_rasterization (PhysicalDeviceLineRasterizationFeaturesKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_line_rasterization (PhysicalDeviceLineRasterizationPropertiesKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_linear_color_attachment (PhysicalDeviceLinearColorAttachmentFeaturesNV)
-import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_maintenance3 (PhysicalDeviceMaintenance3Properties)
-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_KHR_maintenance5 (PhysicalDeviceMaintenance5FeaturesKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance5 (PhysicalDeviceMaintenance5PropertiesKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance6 (PhysicalDeviceMaintenance6FeaturesKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance6 (PhysicalDeviceMaintenance6PropertiesKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance7 (PhysicalDeviceMaintenance7FeaturesKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance7 (PhysicalDeviceMaintenance7PropertiesKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_map_memory_placed (PhysicalDeviceMapMemoryPlacedFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_map_memory_placed (PhysicalDeviceMapMemoryPlacedPropertiesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_memory_budget (PhysicalDeviceMemoryBudgetPropertiesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_memory_decompression (PhysicalDeviceMemoryDecompressionFeaturesNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_memory_decompression (PhysicalDeviceMemoryDecompressionPropertiesNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_memory_priority (PhysicalDeviceMemoryPriorityFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Core10.DeviceInitialization (PhysicalDeviceMemoryProperties)
-import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (PhysicalDeviceMemoryProperties2)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_mesh_shader (PhysicalDeviceMeshShaderFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_mesh_shader (PhysicalDeviceMeshShaderFeaturesNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_mesh_shader (PhysicalDeviceMeshShaderPropertiesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_mesh_shader (PhysicalDeviceMeshShaderPropertiesNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_multi_draw (PhysicalDeviceMultiDrawFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_multi_draw (PhysicalDeviceMultiDrawPropertiesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled (PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_multiview (PhysicalDeviceMultiviewFeatures)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NVX_multiview_per_view_attributes (PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX)
-import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_multiview_per_view_render_areas (PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM)
-import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_multiview_per_view_viewports (PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM)
-import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_multiview (PhysicalDeviceMultiviewProperties)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_mutable_descriptor_type (PhysicalDeviceMutableDescriptorTypeFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_nested_command_buffer (PhysicalDeviceNestedCommandBufferFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_nested_command_buffer (PhysicalDeviceNestedCommandBufferPropertiesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_non_seamless_cube_map (PhysicalDeviceNonSeamlessCubeMapFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_opacity_micromap (PhysicalDeviceOpacityMicromapFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_opacity_micromap (PhysicalDeviceOpacityMicromapPropertiesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_optical_flow (PhysicalDeviceOpticalFlowFeaturesNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_optical_flow (PhysicalDeviceOpticalFlowPropertiesNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_pci_bus_info (PhysicalDevicePCIBusInfoPropertiesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_pageable_device_local_memory (PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_per_stage_descriptor_set (PhysicalDevicePerStageDescriptorSetFeaturesNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_performance_query (PhysicalDevicePerformanceQueryFeaturesKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_performance_query (PhysicalDevicePerformanceQueryPropertiesKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_pipeline_binary (PhysicalDevicePipelineBinaryFeaturesKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_pipeline_binary (PhysicalDevicePipelineBinaryPropertiesKHR)
-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_EXT_pipeline_library_group_handles (PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_pipeline_properties (PhysicalDevicePipelinePropertiesFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_pipeline_protected_access (PhysicalDevicePipelineProtectedAccessFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_pipeline_robustness (PhysicalDevicePipelineRobustnessFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_pipeline_robustness (PhysicalDevicePipelineRobustnessPropertiesEXT)
-import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_maintenance2 (PhysicalDevicePointClippingProperties)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_portability_subset (PhysicalDevicePortabilitySubsetFeaturesKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_portability_subset (PhysicalDevicePortabilitySubsetPropertiesKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_present_barrier (PhysicalDevicePresentBarrierFeaturesNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_present_id (PhysicalDevicePresentIdFeaturesKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_present_mode_fifo_latest_ready (PhysicalDevicePresentModeFifoLatestReadyFeaturesEXT)
-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_primitives_generated_query (PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT)
-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)
-import {-# SOURCE #-} Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory (PhysicalDeviceProtectedMemoryProperties)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_provoking_vertex (PhysicalDeviceProvokingVertexFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_provoking_vertex (PhysicalDeviceProvokingVertexPropertiesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_push_descriptor (PhysicalDevicePushDescriptorPropertiesKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_rgba10x6_formats (PhysicalDeviceRGBA10X6FormatsFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_rasterization_order_attachment_access (PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_raw_access_chains (PhysicalDeviceRawAccessChainsFeaturesNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_query (PhysicalDeviceRayQueryFeaturesKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing_invocation_reorder (PhysicalDeviceRayTracingInvocationReorderFeaturesNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing_invocation_reorder (PhysicalDeviceRayTracingInvocationReorderPropertiesNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing_maintenance1 (PhysicalDeviceRayTracingMaintenance1FeaturesKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing_motion_blur (PhysicalDeviceRayTracingMotionBlurFeaturesNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing_pipeline (PhysicalDeviceRayTracingPipelineFeaturesKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing_pipeline (PhysicalDeviceRayTracingPipelinePropertiesKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing_position_fetch (PhysicalDeviceRayTracingPositionFetchFeaturesKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing (PhysicalDeviceRayTracingPropertiesNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing_validation (PhysicalDeviceRayTracingValidationFeaturesNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_IMG_relaxed_line_rasterization (PhysicalDeviceRelaxedLineRasterizationFeaturesIMG)
-import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_render_pass_striped (PhysicalDeviceRenderPassStripedFeaturesARM)
-import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_render_pass_striped (PhysicalDeviceRenderPassStripedPropertiesARM)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_representative_fragment_test (PhysicalDeviceRepresentativeFragmentTestFeaturesNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_robustness2 (PhysicalDeviceRobustness2FeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_robustness2 (PhysicalDeviceRobustness2PropertiesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_sample_locations (PhysicalDeviceSampleLocationsPropertiesEXT)
-import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax (PhysicalDeviceSamplerFilterMinmaxProperties)
-import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion (PhysicalDeviceSamplerYcbcrConversionFeatures)
-import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_EXT_scalar_block_layout (PhysicalDeviceScalarBlockLayoutFeatures)
-import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_scheduling_controls (PhysicalDeviceSchedulingControlsFeaturesARM)
-import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_scheduling_controls (PhysicalDeviceSchedulingControlsPropertiesARM)
-import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts (PhysicalDeviceSeparateDepthStencilLayoutsFeatures)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_shader_atomic_float16_vector (PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_shader_atomic_float2 (PhysicalDeviceShaderAtomicFloat2FeaturesEXT)
-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_ARM_shader_core_builtins (PhysicalDeviceShaderCoreBuiltinsFeaturesARM)
-import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_shader_core_builtins (PhysicalDeviceShaderCoreBuiltinsPropertiesARM)
-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_ARM_shader_core_properties (PhysicalDeviceShaderCorePropertiesARM)
-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.Extensions.VK_AMD_shader_early_and_late_fragment_tests (PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD)
-import {-# SOURCE #-} Vulkan.Extensions.VK_AMDX_shader_enqueue (PhysicalDeviceShaderEnqueueFeaturesAMDX)
-import {-# SOURCE #-} Vulkan.Extensions.VK_AMDX_shader_enqueue (PhysicalDeviceShaderEnqueuePropertiesAMDX)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_shader_expect_assume (PhysicalDeviceShaderExpectAssumeFeaturesKHR)
-import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_shader_float16_int8 (PhysicalDeviceShaderFloat16Int8Features)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_shader_float_controls2 (PhysicalDeviceShaderFloatControls2FeaturesKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_shader_image_atomic_int64 (PhysicalDeviceShaderImageAtomicInt64FeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_shader_image_footprint (PhysicalDeviceShaderImageFootprintFeaturesNV)
-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_KHR_shader_maximal_reconvergence (PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_shader_module_identifier (PhysicalDeviceShaderModuleIdentifierFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_shader_module_identifier (PhysicalDeviceShaderModuleIdentifierPropertiesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_shader_object (PhysicalDeviceShaderObjectFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_shader_object (PhysicalDeviceShaderObjectPropertiesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_shader_quad_control (PhysicalDeviceShaderQuadControlFeaturesKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_shader_relaxed_extended_instruction (PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_shader_replicated_composites (PhysicalDeviceShaderReplicatedCompositesFeaturesEXT)
-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_rotate (PhysicalDeviceShaderSubgroupRotateFeaturesKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_shader_subgroup_uniform_control_flow (PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR)
-import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_shader_terminate_invocation (PhysicalDeviceShaderTerminateInvocationFeatures)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_shader_tile_image (PhysicalDeviceShaderTileImageFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_shader_tile_image (PhysicalDeviceShaderTileImagePropertiesEXT)
-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.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_EXT_subpass_merge_feedback (PhysicalDeviceSubpassMergeFeedbackFeaturesEXT)
-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_EXT_swapchain_maintenance1 (PhysicalDeviceSwapchainMaintenance1FeaturesEXT)
-import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_synchronization2 (PhysicalDeviceSynchronization2Features)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_texel_buffer_alignment (PhysicalDeviceTexelBufferAlignmentFeaturesEXT)
-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.Extensions.VK_QCOM_tile_properties (PhysicalDeviceTilePropertiesFeaturesQCOM)
-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.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)
-import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_variable_pointers (PhysicalDeviceVariablePointersFeatures)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_vertex_attribute_divisor (PhysicalDeviceVertexAttributeDivisorFeaturesKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_vertex_attribute_divisor (PhysicalDeviceVertexAttributeDivisorPropertiesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_vertex_attribute_divisor (PhysicalDeviceVertexAttributeDivisorPropertiesKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_vertex_attribute_robustness (PhysicalDeviceVertexAttributeRobustnessFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state (PhysicalDeviceVertexInputDynamicStateFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Core12 (PhysicalDeviceVulkan11Features)
-import {-# SOURCE #-} Vulkan.Core12 (PhysicalDeviceVulkan11Properties)
-import {-# SOURCE #-} Vulkan.Core12 (PhysicalDeviceVulkan12Features)
-import {-# SOURCE #-} Vulkan.Core12 (PhysicalDeviceVulkan12Properties)
-import {-# SOURCE #-} Vulkan.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_QCOM_ycbcr_degamma (PhysicalDeviceYcbcrDegammaFeaturesQCOM)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_ycbcr_image_arrays (PhysicalDeviceYcbcrImageArraysFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_zero_initialize_workgroup_memory (PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_pipeline_binary (PipelineBinaryCreateInfoKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_pipeline_binary (PipelineBinaryDataInfoKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_pipeline_binary (PipelineBinaryDataKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_pipeline_binary (PipelineBinaryHandlesInfoKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_pipeline_binary (PipelineBinaryInfoKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_pipeline_binary (PipelineBinaryKeyKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_pipeline_binary (PipelineBinaryKeysAndDataKHR)
-import {-# SOURCE #-} Vulkan.Core10.PipelineCache (PipelineCacheCreateInfo)
-import {-# SOURCE #-} Vulkan.Core10.OtherTypes (PipelineCacheHeaderVersionOne)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_blend_operation_advanced (PipelineColorBlendAdvancedStateCreateInfoEXT)
-import {-# SOURCE #-} Vulkan.Core10.Pipeline (PipelineColorBlendAttachmentState)
-import {-# SOURCE #-} Vulkan.Core10.Pipeline (PipelineColorBlendStateCreateInfo)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_color_write_enable (PipelineColorWriteCreateInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_pipeline_compiler_control (PipelineCompilerControlCreateInfoAMD)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_framebuffer_mixed_samples (PipelineCoverageModulationStateCreateInfoNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_coverage_reduction_mode (PipelineCoverageReductionStateCreateInfoNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_fragment_coverage_to_color (PipelineCoverageToColorStateCreateInfoNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance5 (PipelineCreateFlags2CreateInfoKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_pipeline_binary (PipelineCreateInfoKHR)
-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)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_pipeline_executable_properties (PipelineExecutableInfoKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_pipeline_executable_properties (PipelineExecutableInternalRepresentationKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_pipeline_executable_properties (PipelineExecutablePropertiesKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_pipeline_executable_properties (PipelineExecutableStatisticKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_fragment_shading_rate_enums (PipelineFragmentShadingRateEnumStateCreateInfoNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_fragment_shading_rate (PipelineFragmentShadingRateStateCreateInfoKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_generated_commands_compute (PipelineIndirectDeviceAddressInfoNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_pipeline_executable_properties (PipelineInfoKHR)
-import {-# SOURCE #-} Vulkan.Core10.Pipeline (PipelineInputAssemblyStateCreateInfo)
-import {-# SOURCE #-} Vulkan.Core10.PipelineLayout (PipelineLayoutCreateInfo)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_pipeline_library (PipelineLibraryCreateInfoKHR)
-import {-# SOURCE #-} Vulkan.Core10.Pipeline (PipelineMultisampleStateCreateInfo)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_pipeline_properties (PipelinePropertiesIdentifierEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_conservative_rasterization (PipelineRasterizationConservativeStateCreateInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_depth_clip_enable (PipelineRasterizationDepthClipStateCreateInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_line_rasterization (PipelineRasterizationLineStateCreateInfoKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_provoking_vertex (PipelineRasterizationProvokingVertexStateCreateInfoEXT)
-import {-# SOURCE #-} Vulkan.Core10.Pipeline (PipelineRasterizationStateCreateInfo)
-import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_rasterization_order (PipelineRasterizationStateRasterizationOrderAMD)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_transform_feedback (PipelineRasterizationStateStreamCreateInfoEXT)
-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_pipeline_robustness (PipelineRobustnessCreateInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_sample_locations (PipelineSampleLocationsStateCreateInfoEXT)
-import {-# SOURCE #-} Vulkan.Core10.Pipeline (PipelineShaderStageCreateInfo)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_shader_module_identifier (PipelineShaderStageModuleIdentifierCreateInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_AMDX_shader_enqueue (PipelineShaderStageNodeCreateInfoAMDX)
-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_KHR_vertex_attribute_divisor (PipelineVertexInputDivisorStateCreateInfoKHR)
-import {-# SOURCE #-} Vulkan.Core10.Pipeline (PipelineVertexInputStateCreateInfo)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_shading_rate_image (PipelineViewportCoarseSampleOrderStateCreateInfoNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_depth_clamp_control (PipelineViewportDepthClampControlCreateInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_depth_clip_control (PipelineViewportDepthClipControlCreateInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_scissor_exclusive (PipelineViewportExclusiveScissorStateCreateInfoNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_shading_rate_image (PipelineViewportShadingRateImageStateCreateInfoNV)
-import {-# SOURCE #-} Vulkan.Core10.Pipeline (PipelineViewportStateCreateInfo)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_viewport_swizzle (PipelineViewportSwizzleStateCreateInfoNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_clip_space_w_scaling (PipelineViewportWScalingStateCreateInfoNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_GGP_frame_token (PresentFrameTokenGGP)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_present_id (PresentIdKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_swapchain (PresentInfoKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_incremental_present (PresentRegionKHR)
-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.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.Extensions.VK_KHR_maintenance6 (PushConstantsInfoKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance6 (PushDescriptorSetInfoKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance6 (PushDescriptorSetWithTemplateInfoKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_low_latency (QueryLowLatencySupportNV)
-import {-# SOURCE #-} Vulkan.Core10.Query (QueryPoolCreateInfo)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_performance_query (QueryPoolPerformanceCreateInfoKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_INTEL_performance_query (QueryPoolPerformanceQueryCreateInfoINTEL)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_diagnostic_checkpoints (QueueFamilyCheckpointProperties2NV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_diagnostic_checkpoints (QueueFamilyCheckpointPropertiesNV)
-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)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing (RayTracingPipelineCreateInfoNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing_pipeline (RayTracingPipelineInterfaceCreateInfoKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing_pipeline (RayTracingShaderGroupCreateInfoKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing (RayTracingShaderGroupCreateInfoNV)
-import {-# SOURCE #-} Vulkan.Core10.FundamentalTypes (Rect2D)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_incremental_present (RectLayerKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_GOOGLE_display_timing (RefreshCycleDurationGOOGLE)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_pipeline_binary (ReleaseCapturedPipelineDataInfoKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_swapchain_maintenance1 (ReleaseSwapchainImagesInfoEXT)
-import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer (RenderPassAttachmentBeginInfo)
-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_EXT_subpass_merge_feedback (RenderPassCreationControlEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_subpass_merge_feedback (RenderPassCreationFeedbackCreateInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_subpass_merge_feedback (RenderPassCreationFeedbackInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_fragment_density_map (RenderPassFragmentDensityMapCreateInfoEXT)
-import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_maintenance2 (RenderPassInputAttachmentAspectCreateInfo)
-import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_multiview (RenderPassMultiviewCreateInfo)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_sample_locations (RenderPassSampleLocationsBeginInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_render_pass_striped (RenderPassStripeBeginInfoARM)
-import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_render_pass_striped (RenderPassStripeInfoARM)
-import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_render_pass_striped (RenderPassStripeSubmitInfoARM)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_subpass_merge_feedback (RenderPassSubpassFeedbackCreateInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_subpass_merge_feedback (RenderPassSubpassFeedbackInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_render_pass_transform (RenderPassTransformBeginInfoQCOM)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance5 (RenderingAreaInfoKHR)
-import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering (RenderingAttachmentInfo)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read (RenderingAttachmentLocationInfoKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_fragment_density_map (RenderingFragmentDensityMapAttachmentInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_fragment_shading_rate (RenderingFragmentShadingRateAttachmentInfoKHR)
-import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering (RenderingInfo)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read (RenderingInputAttachmentIndexInfoKHR)
-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)
-import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_image_processing2 (SamplerBlockMatchWindowCreateInfoQCOM)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_border_color_swizzle (SamplerBorderColorComponentMappingCreateInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_buffer (SamplerCaptureDescriptorDataInfoEXT)
-import {-# SOURCE #-} Vulkan.Core10.Sampler (SamplerCreateInfo)
-import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_filter_cubic_weights (SamplerCubicWeightsCreateInfoQCOM)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_custom_border_color (SamplerCustomBorderColorCreateInfoEXT)
-import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax (SamplerReductionModeCreateInfo)
-import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion (SamplerYcbcrConversionCreateInfo)
-import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion (SamplerYcbcrConversionImageFormatProperties)
-import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion (SamplerYcbcrConversionInfo)
-import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_ycbcr_degamma (SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM)
-import {-# SOURCE #-} Vulkan.Extensions.VK_QNX_external_memory_screen_buffer (ScreenBufferFormatPropertiesQNX)
-import {-# SOURCE #-} Vulkan.Extensions.VK_QNX_external_memory_screen_buffer (ScreenBufferPropertiesQNX)
-import {-# SOURCE #-} Vulkan.Extensions.VK_QNX_screen_surface (ScreenSurfaceCreateInfoQNX)
-import {-# SOURCE #-} Vulkan.Core10.QueueSemaphore (SemaphoreCreateInfo)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_external_semaphore_fd (SemaphoreGetFdInfoKHR)
-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.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_KHR_maintenance6 (SetDescriptorBufferOffsetsInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_low_latency2 (SetLatencyMarkerInfoNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_generated_commands (SetStateFlagsIndirectCommandNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_shader_object (ShaderCreateInfoEXT)
-import {-# SOURCE #-} Vulkan.Core10.Shader (ShaderModuleCreateInfo)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_shader_module_identifier (ShaderModuleIdentifierEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_validation_cache (ShaderModuleValidationCacheCreateInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_shader_info (ShaderResourceUsageAMD)
-import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_shader_info (ShaderStatisticsInfoAMD)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_shading_rate_image (ShadingRatePaletteNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_shared_presentable_image (SharedPresentSurfaceCapabilitiesKHR)
-import {-# SOURCE #-} Vulkan.Core10.SparseResourceMemoryManagement (SparseBufferMemoryBindInfo)
-import {-# SOURCE #-} Vulkan.Core10.SparseResourceMemoryManagement (SparseImageFormatProperties)
-import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (SparseImageFormatProperties2)
-import {-# SOURCE #-} Vulkan.Core10.SparseResourceMemoryManagement (SparseImageMemoryBind)
-import {-# SOURCE #-} Vulkan.Core10.SparseResourceMemoryManagement (SparseImageMemoryBindInfo)
-import {-# SOURCE #-} Vulkan.Core10.SparseResourceMemoryManagement (SparseImageMemoryRequirements)
-import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2 (SparseImageMemoryRequirements2)
-import {-# SOURCE #-} Vulkan.Core10.SparseResourceMemoryManagement (SparseImageOpaqueMemoryBindInfo)
-import {-# SOURCE #-} Vulkan.Core10.SparseResourceMemoryManagement (SparseMemoryBind)
-import {-# SOURCE #-} Vulkan.Core10.Pipeline (SpecializationInfo)
-import {-# SOURCE #-} Vulkan.Core10.Pipeline (SpecializationMapEntry)
-import {-# SOURCE #-} Vulkan.Core10.Pipeline (StencilOpState)
-import {-# SOURCE #-} Vulkan.Extensions.VK_GGP_stream_descriptor_surface (StreamDescriptorSurfaceCreateInfoGGP)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing_pipeline (StridedDeviceAddressRegionKHR)
-import Vulkan.Core10.Enums.StructureType (StructureType)
-import Vulkan.Core10.Enums.StructureType (StructureType(..))
-import {-# SOURCE #-} Vulkan.Core10.Queue (SubmitInfo)
-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)
-import {-# SOURCE #-} Vulkan.Core10.Pass (SubpassDescription)
-import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2 (SubpassDescription2)
-import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve (SubpassDescriptionDepthStencilResolve)
-import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2 (SubpassEndInfo)
-import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_fragment_density_map_offset (SubpassFragmentDensityMapOffsetEndInfoQCOM)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled (SubpassResolvePerformanceQueryEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_sample_locations (SubpassSampleLocationsEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_HUAWEI_subpass_shading (SubpassShadingPipelineCreateInfoHUAWEI)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_host_image_copy (SubresourceHostMemcpySizeEXT)
-import {-# SOURCE #-} Vulkan.Core10.Image (SubresourceLayout)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance5 (SubresourceLayout2KHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_display_surface_counter (SurfaceCapabilities2EXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_get_surface_capabilities2 (SurfaceCapabilities2KHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_full_screen_exclusive (SurfaceCapabilitiesFullScreenExclusiveEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_surface (SurfaceCapabilitiesKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_present_barrier (SurfaceCapabilitiesPresentBarrierNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_get_surface_capabilities2 (SurfaceFormat2KHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_surface (SurfaceFormatKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_full_screen_exclusive (SurfaceFullScreenExclusiveInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_full_screen_exclusive (SurfaceFullScreenExclusiveWin32InfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_surface_maintenance1 (SurfacePresentModeCompatibilityEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_surface_maintenance1 (SurfacePresentModeEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_surface_maintenance1 (SurfacePresentScalingCapabilitiesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_surface_protected_capabilities (SurfaceProtectedCapabilitiesKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_display_control (SwapchainCounterCreateInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_swapchain (SwapchainCreateInfoKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_display_native_hdr (SwapchainDisplayNativeHdrCreateInfoAMD)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_low_latency2 (SwapchainLatencyCreateInfoNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_present_barrier (SwapchainPresentBarrierCreateInfoNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_swapchain_maintenance1 (SwapchainPresentFenceInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_swapchain_maintenance1 (SwapchainPresentModeInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_swapchain_maintenance1 (SwapchainPresentModesCreateInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_swapchain_maintenance1 (SwapchainPresentScalingCreateInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_FUCHSIA_buffer_collection (SysmemColorSpaceFUCHSIA)
-import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_texture_gather_bias_lod (TextureLODGatherFormatPropertiesAMD)
-import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_tile_properties (TilePropertiesQCOM)
-import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore (TimelineSemaphoreSubmitInfo)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing_maintenance1 (TraceRaysIndirectCommand2KHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing_pipeline (TraceRaysIndirectCommandKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (TransformMatrixKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_validation_cache (ValidationCacheCreateInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_validation_features (ValidationFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_validation_flags (ValidationFlagsEXT)
-import {-# SOURCE #-} Vulkan.Core10.Pipeline (VertexInputAttributeDescription)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state (VertexInputAttributeDescription2EXT)
-import {-# SOURCE #-} Vulkan.Core10.Pipeline (VertexInputBindingDescription)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state (VertexInputBindingDescription2EXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_vertex_attribute_divisor (VertexInputBindingDivisorDescriptionKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NN_vi_surface (ViSurfaceCreateInfoNN)
-import {-# SOURCE #-} Vulkan.Core10.Pipeline (Viewport)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_viewport_swizzle (ViewportSwizzleNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_clip_space_w_scaling (ViewportWScalingNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_wayland_surface (WaylandSurfaceCreateInfoKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_win32_keyed_mutex (Win32KeyedMutexAcquireReleaseInfoKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_win32_keyed_mutex (Win32KeyedMutexAcquireReleaseInfoNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_win32_surface (Win32SurfaceCreateInfoKHR)
-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.Core13.Promoted_From_VK_EXT_inline_uniform_block (WriteDescriptorSetInlineUniformBlock)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_device_generated_commands (WriteIndirectExecutionSetPipelineEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_device_generated_commands (WriteIndirectExecutionSetShaderEXT)
-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)
--- | VkBaseOutStructure - Base structure for a read-only pointer chain
---
--- = Description
---
--- 'BaseOutStructure' can be used to facilitate iterating through a
--- structure pointer chain that returns data back to the application.
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
--- 'BaseOutStructure', 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'Vulkan.Extensions.VK_EXT_pipeline_properties.getPipelinePropertiesEXT'
-data BaseOutStructure = BaseOutStructure
-  { -- | @sType@ is the structure type of the structure being iterated through.
-    sType :: StructureType
-  , -- | @pNext@ is @NULL@ or a pointer to the next structure in a structure
-    -- chain.
-    next :: Ptr BaseOutStructure
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (BaseOutStructure)
-#endif
-deriving instance Show BaseOutStructure
-
-instance ToCStruct BaseOutStructure where
-  withCStruct x f = allocaBytes 16 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p BaseOutStructure{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (sType)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr BaseOutStructure))) (next)
-    f
-  cStructSize = 16
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (zero)
-    f
-
-instance FromCStruct BaseOutStructure where
-  peekCStruct p = do
-    sType <- peek @StructureType ((p `plusPtr` 0 :: Ptr StructureType))
-    pNext <- peek @(Ptr BaseOutStructure) ((p `plusPtr` 8 :: Ptr (Ptr BaseOutStructure)))
-    pure $ BaseOutStructure
-             sType pNext
-
-instance Storable BaseOutStructure where
-  sizeOf ~_ = 16
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero BaseOutStructure where
-  zero = BaseOutStructure
-           zero
-           zero
-
-
--- | VkBaseInStructure - Base structure for a read-only pointer chain
---
--- = Description
---
--- 'BaseInStructure' can be used to facilitate iterating through a
--- read-only structure pointer chain.
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
--- 'BaseInStructure', 'Vulkan.Core10.Enums.StructureType.StructureType'
-data BaseInStructure = BaseInStructure
-  { -- | @sType@ is the structure type of the structure being iterated through.
-    sType :: StructureType
-  , -- | @pNext@ is @NULL@ or a pointer to the next structure in a structure
-    -- chain.
-    next :: Ptr BaseInStructure
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (BaseInStructure)
-#endif
-deriving instance Show BaseInStructure
-
-instance ToCStruct BaseInStructure where
-  withCStruct x f = allocaBytes 16 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p BaseInStructure{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (sType)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr BaseInStructure))) (next)
-    f
-  cStructSize = 16
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (zero)
-    f
-
-instance FromCStruct BaseInStructure where
-  peekCStruct p = do
-    sType <- peek @StructureType ((p `plusPtr` 0 :: Ptr StructureType))
-    pNext <- peek @(Ptr BaseInStructure) ((p `plusPtr` 8 :: Ptr (Ptr BaseInStructure)))
-    pure $ BaseInStructure
-             sType pNext
-
-instance Storable BaseInStructure where
-  sizeOf ~_ = 16
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero BaseInStructure where
-  zero = BaseInStructure
-           zero
-           zero
-
-
-type family Extends (a :: [Type] -> Type) (b :: Type) :: Constraint where
-  Extends AccelerationStructureCreateInfoKHR OpaqueCaptureDescriptorDataCreateInfoEXT = ()
-  Extends AccelerationStructureCreateInfoKHR AccelerationStructureMotionInfoNV = ()
-  Extends AccelerationStructureCreateInfoNV OpaqueCaptureDescriptorDataCreateInfoEXT = ()
-  Extends AccelerationStructureGeometryTrianglesDataKHR AccelerationStructureGeometryMotionTrianglesDataNV = ()
-  Extends AccelerationStructureGeometryTrianglesDataKHR AccelerationStructureTrianglesOpacityMicromapEXT = ()
-  Extends AccelerationStructureGeometryTrianglesDataKHR AccelerationStructureTrianglesDisplacementMicromapNV = ()
-  Extends AndroidHardwareBufferPropertiesANDROID AndroidHardwareBufferFormatPropertiesANDROID = ()
-  Extends AndroidHardwareBufferPropertiesANDROID AndroidHardwareBufferFormatProperties2ANDROID = ()
-  Extends AndroidHardwareBufferPropertiesANDROID AndroidHardwareBufferFormatResolvePropertiesANDROID = ()
-  Extends AttachmentDescription2 ExternalFormatANDROID = ()
-  Extends AttachmentDescription2 AttachmentDescriptionStencilLayout = ()
-  Extends AttachmentReference2 AttachmentReferenceStencilLayout = ()
-  Extends BindBufferMemoryInfo BindBufferMemoryDeviceGroupInfo = ()
-  Extends BindBufferMemoryInfo BindMemoryStatusKHR = ()
-  Extends BindDescriptorBufferEmbeddedSamplersInfoEXT PipelineLayoutCreateInfo = ()
-  Extends BindDescriptorSetsInfoKHR PipelineLayoutCreateInfo = ()
-  Extends BindImageMemoryInfo BindImageMemoryDeviceGroupInfo = ()
-  Extends BindImageMemoryInfo BindImageMemorySwapchainInfoKHR = ()
-  Extends BindImageMemoryInfo BindImagePlaneMemoryInfo = ()
-  Extends BindImageMemoryInfo BindMemoryStatusKHR = ()
-  Extends BindSparseInfo DeviceGroupBindSparseInfo = ()
-  Extends BindSparseInfo TimelineSemaphoreSubmitInfo = ()
-  Extends BindSparseInfo FrameBoundaryEXT = ()
-  Extends BlitImageInfo2 BlitImageCubicWeightsInfoQCOM = ()
-  Extends BufferCreateInfo BufferUsageFlags2CreateInfoKHR = ()
-  Extends BufferCreateInfo DedicatedAllocationBufferCreateInfoNV = ()
-  Extends BufferCreateInfo ExternalMemoryBufferCreateInfo = ()
-  Extends BufferCreateInfo BufferOpaqueCaptureAddressCreateInfo = ()
-  Extends BufferCreateInfo BufferDeviceAddressCreateInfoEXT = ()
-  Extends BufferCreateInfo OpaqueCaptureDescriptorDataCreateInfoEXT = ()
-  Extends BufferCreateInfo BufferCollectionBufferCreateInfoFUCHSIA = ()
-  Extends BufferImageCopy2 CopyCommandTransformInfoQCOM = ()
-  Extends BufferMemoryBarrier ExternalMemoryAcquireUnmodifiedEXT = ()
-  Extends BufferMemoryBarrier2 ExternalMemoryAcquireUnmodifiedEXT = ()
-  Extends BufferViewCreateInfo BufferUsageFlags2CreateInfoKHR = ()
-  Extends BufferViewCreateInfo ExportMetalObjectCreateInfoEXT = ()
-  Extends CommandBufferBeginInfo DeviceGroupCommandBufferBeginInfo = ()
-  Extends CommandBufferInheritanceInfo CommandBufferInheritanceConditionalRenderingInfoEXT = ()
-  Extends CommandBufferInheritanceInfo ExternalFormatANDROID = ()
-  Extends CommandBufferInheritanceInfo CommandBufferInheritanceRenderPassTransformInfoQCOM = ()
-  Extends CommandBufferInheritanceInfo CommandBufferInheritanceViewportScissorInfoNV = ()
-  Extends CommandBufferInheritanceInfo CommandBufferInheritanceRenderingInfo = ()
-  Extends CommandBufferInheritanceInfo AttachmentSampleCountInfoAMD = ()
-  Extends CommandBufferInheritanceInfo MultiviewPerViewAttributesInfoNVX = ()
-  Extends CommandBufferInheritanceInfo RenderingAttachmentLocationInfoKHR = ()
-  Extends CommandBufferInheritanceInfo RenderingInputAttachmentIndexInfoKHR = ()
-  Extends CommandBufferSubmitInfo RenderPassStripeSubmitInfoARM = ()
-  Extends ComputePipelineCreateInfo ComputePipelineIndirectBufferInfoNV = ()
-  Extends ComputePipelineCreateInfo PipelineCreateFlags2CreateInfoKHR = ()
-  Extends ComputePipelineCreateInfo PipelineBinaryInfoKHR = ()
-  Extends ComputePipelineCreateInfo PipelineCreationFeedbackCreateInfo = ()
-  Extends ComputePipelineCreateInfo SubpassShadingPipelineCreateInfoHUAWEI = ()
-  Extends ComputePipelineCreateInfo PipelineCompilerControlCreateInfoAMD = ()
-  Extends ComputePipelineCreateInfo PipelineRobustnessCreateInfoEXT = ()
-  Extends CuModuleCreateInfoNVX CuModuleTexturingModeCreateInfoNVX = ()
-  Extends DebugUtilsMessengerCallbackDataEXT DeviceAddressBindingCallbackDataEXT = ()
-  Extends DepthBiasInfoEXT DepthBiasRepresentationInfoEXT = ()
-  Extends DescriptorBufferBindingInfoEXT BufferUsageFlags2CreateInfoKHR = ()
-  Extends DescriptorBufferBindingInfoEXT DescriptorBufferBindingPushDescriptorBufferHandleEXT = ()
-  Extends DescriptorPoolCreateInfo DescriptorPoolInlineUniformBlockCreateInfo = ()
-  Extends DescriptorPoolCreateInfo MutableDescriptorTypeCreateInfoEXT = ()
-  Extends DescriptorSetAllocateInfo DescriptorSetVariableDescriptorCountAllocateInfo = ()
-  Extends DescriptorSetLayoutCreateInfo DescriptorSetLayoutBindingFlagsCreateInfo = ()
-  Extends DescriptorSetLayoutCreateInfo MutableDescriptorTypeCreateInfoEXT = ()
-  Extends DescriptorSetLayoutSupport DescriptorSetVariableDescriptorCountLayoutSupport = ()
-  Extends DeviceCreateInfo PhysicalDeviceDeviceGeneratedCommandsFeaturesNV = ()
-  Extends DeviceCreateInfo PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV = ()
-  Extends DeviceCreateInfo DevicePrivateDataCreateInfo = ()
-  Extends DeviceCreateInfo PhysicalDevicePrivateDataFeatures = ()
-  Extends DeviceCreateInfo (PhysicalDeviceFeatures2 '[]) = ()
-  Extends DeviceCreateInfo PhysicalDeviceVariablePointersFeatures = ()
-  Extends DeviceCreateInfo PhysicalDeviceMultiviewFeatures = ()
-  Extends DeviceCreateInfo DeviceGroupDeviceCreateInfo = ()
-  Extends DeviceCreateInfo PhysicalDevicePresentIdFeaturesKHR = ()
-  Extends DeviceCreateInfo PhysicalDevicePresentWaitFeaturesKHR = ()
-  Extends DeviceCreateInfo PhysicalDevice16BitStorageFeatures = ()
-  Extends DeviceCreateInfo PhysicalDeviceShaderSubgroupExtendedTypesFeatures = ()
-  Extends DeviceCreateInfo PhysicalDeviceSamplerYcbcrConversionFeatures = ()
-  Extends DeviceCreateInfo PhysicalDeviceProtectedMemoryFeatures = ()
-  Extends DeviceCreateInfo PhysicalDeviceBlendOperationAdvancedFeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDeviceMultiDrawFeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDeviceInlineUniformBlockFeatures = ()
-  Extends DeviceCreateInfo PhysicalDeviceMaintenance4Features = ()
-  Extends DeviceCreateInfo PhysicalDeviceMaintenance5FeaturesKHR = ()
-  Extends DeviceCreateInfo PhysicalDeviceMaintenance6FeaturesKHR = ()
-  Extends DeviceCreateInfo PhysicalDeviceMaintenance7FeaturesKHR = ()
-  Extends DeviceCreateInfo PhysicalDeviceShaderDrawParametersFeatures = ()
-  Extends DeviceCreateInfo PhysicalDeviceShaderFloat16Int8Features = ()
-  Extends DeviceCreateInfo PhysicalDeviceHostQueryResetFeatures = ()
-  Extends DeviceCreateInfo PhysicalDeviceGlobalPriorityQueryFeaturesKHR = ()
-  Extends DeviceCreateInfo PhysicalDeviceDeviceMemoryReportFeaturesEXT = ()
-  Extends DeviceCreateInfo DeviceDeviceMemoryReportCreateInfoEXT = ()
-  Extends DeviceCreateInfo PhysicalDeviceDescriptorIndexingFeatures = ()
-  Extends DeviceCreateInfo PhysicalDeviceTimelineSemaphoreFeatures = ()
-  Extends DeviceCreateInfo PhysicalDevice8BitStorageFeatures = ()
-  Extends DeviceCreateInfo PhysicalDeviceConditionalRenderingFeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDeviceVulkanMemoryModelFeatures = ()
-  Extends DeviceCreateInfo PhysicalDeviceShaderAtomicInt64Features = ()
-  Extends DeviceCreateInfo PhysicalDeviceShaderAtomicFloatFeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDeviceShaderAtomicFloat2FeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDeviceVertexAttributeDivisorFeaturesKHR = ()
-  Extends DeviceCreateInfo PhysicalDeviceASTCDecodeFeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDeviceTransformFeedbackFeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDeviceRepresentativeFragmentTestFeaturesNV = ()
-  Extends DeviceCreateInfo PhysicalDeviceExclusiveScissorFeaturesNV = ()
-  Extends DeviceCreateInfo PhysicalDeviceCornerSampledImageFeaturesNV = ()
-  Extends DeviceCreateInfo PhysicalDeviceComputeShaderDerivativesFeaturesKHR = ()
-  Extends DeviceCreateInfo PhysicalDeviceShaderImageFootprintFeaturesNV = ()
-  Extends DeviceCreateInfo PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV = ()
-  Extends DeviceCreateInfo PhysicalDeviceCopyMemoryIndirectFeaturesNV = ()
-  Extends DeviceCreateInfo PhysicalDeviceMemoryDecompressionFeaturesNV = ()
-  Extends DeviceCreateInfo PhysicalDeviceShadingRateImageFeaturesNV = ()
-  Extends DeviceCreateInfo PhysicalDeviceInvocationMaskFeaturesHUAWEI = ()
-  Extends DeviceCreateInfo PhysicalDeviceMeshShaderFeaturesNV = ()
-  Extends DeviceCreateInfo PhysicalDeviceMeshShaderFeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDeviceAccelerationStructureFeaturesKHR = ()
-  Extends DeviceCreateInfo PhysicalDeviceRayTracingPipelineFeaturesKHR = ()
-  Extends DeviceCreateInfo PhysicalDeviceRayQueryFeaturesKHR = ()
-  Extends DeviceCreateInfo PhysicalDeviceRayTracingMaintenance1FeaturesKHR = ()
-  Extends DeviceCreateInfo DeviceMemoryOverallocationCreateInfoAMD = ()
-  Extends DeviceCreateInfo PhysicalDeviceFragmentDensityMapFeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDeviceFragmentDensityMap2FeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM = ()
-  Extends DeviceCreateInfo PhysicalDeviceScalarBlockLayoutFeatures = ()
-  Extends DeviceCreateInfo PhysicalDeviceUniformBufferStandardLayoutFeatures = ()
-  Extends DeviceCreateInfo PhysicalDeviceDepthClipEnableFeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDeviceMemoryPriorityFeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDeviceBufferDeviceAddressFeatures = ()
-  Extends DeviceCreateInfo PhysicalDeviceBufferDeviceAddressFeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDeviceImagelessFramebufferFeatures = ()
-  Extends DeviceCreateInfo PhysicalDeviceTextureCompressionASTCHDRFeatures = ()
-  Extends DeviceCreateInfo PhysicalDeviceCooperativeMatrixFeaturesNV = ()
-  Extends DeviceCreateInfo PhysicalDeviceYcbcrImageArraysFeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDevicePresentBarrierFeaturesNV = ()
-  Extends DeviceCreateInfo PhysicalDevicePerformanceQueryFeaturesKHR = ()
-  Extends DeviceCreateInfo PhysicalDeviceCoverageReductionModeFeaturesNV = ()
-  Extends DeviceCreateInfo PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL = ()
-  Extends DeviceCreateInfo PhysicalDeviceShaderClockFeaturesKHR = ()
-  Extends DeviceCreateInfo PhysicalDeviceIndexTypeUint8FeaturesKHR = ()
-  Extends DeviceCreateInfo PhysicalDeviceShaderSMBuiltinsFeaturesNV = ()
-  Extends DeviceCreateInfo PhysicalDeviceFragmentShaderInterlockFeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDeviceSeparateDepthStencilLayoutsFeatures = ()
-  Extends DeviceCreateInfo PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDevicePipelineExecutablePropertiesFeaturesKHR = ()
-  Extends DeviceCreateInfo PhysicalDeviceShaderDemoteToHelperInvocationFeatures = ()
-  Extends DeviceCreateInfo PhysicalDeviceTexelBufferAlignmentFeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDeviceSubgroupSizeControlFeatures = ()
-  Extends DeviceCreateInfo PhysicalDeviceLineRasterizationFeaturesKHR = ()
-  Extends DeviceCreateInfo PhysicalDevicePipelineCreationCacheControlFeatures = ()
-  Extends DeviceCreateInfo PhysicalDeviceVulkan11Features = ()
-  Extends DeviceCreateInfo PhysicalDeviceVulkan12Features = ()
-  Extends DeviceCreateInfo PhysicalDeviceVulkan13Features = ()
-  Extends DeviceCreateInfo PhysicalDeviceCoherentMemoryFeaturesAMD = ()
-  Extends DeviceCreateInfo PhysicalDeviceCustomBorderColorFeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDeviceBorderColorSwizzleFeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDeviceExtendedDynamicStateFeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDeviceExtendedDynamicState2FeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDeviceExtendedDynamicState3FeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDeviceDiagnosticsConfigFeaturesNV = ()
-  Extends DeviceCreateInfo DeviceDiagnosticsConfigCreateInfoNV = ()
-  Extends DeviceCreateInfo PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures = ()
-  Extends DeviceCreateInfo PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR = ()
-  Extends DeviceCreateInfo PhysicalDeviceRobustness2FeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDeviceImageRobustnessFeatures = ()
-  Extends DeviceCreateInfo PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR = ()
-  Extends DeviceCreateInfo PhysicalDevicePortabilitySubsetFeaturesKHR = ()
-  Extends DeviceCreateInfo PhysicalDevice4444FormatsFeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDeviceSubpassShadingFeaturesHUAWEI = ()
-  Extends DeviceCreateInfo (PhysicalDeviceClusterCullingShaderFeaturesHUAWEI '[]) = ()
-  Extends DeviceCreateInfo PhysicalDeviceShaderImageAtomicInt64FeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDeviceFragmentShadingRateFeaturesKHR = ()
-  Extends DeviceCreateInfo PhysicalDeviceShaderTerminateInvocationFeatures = ()
-  Extends DeviceCreateInfo PhysicalDeviceFragmentShadingRateEnumsFeaturesNV = ()
-  Extends DeviceCreateInfo PhysicalDeviceImage2DViewOf3DFeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDeviceImageSlicedViewOf3DFeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDeviceLegacyVertexAttributesFeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDeviceMutableDescriptorTypeFeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDeviceDepthClipControlFeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDeviceDepthClampControlFeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDeviceVertexInputDynamicStateFeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDeviceExternalMemoryRDMAFeaturesNV = ()
-  Extends DeviceCreateInfo PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR = ()
-  Extends DeviceCreateInfo PhysicalDeviceColorWriteEnableFeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDeviceSynchronization2Features = ()
-  Extends DeviceCreateInfo PhysicalDeviceHostImageCopyFeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDeviceLegacyDitheringFeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDevicePipelineProtectedAccessFeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDeviceInheritedViewportScissorFeaturesNV = ()
-  Extends DeviceCreateInfo PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDeviceProvokingVertexFeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDeviceDescriptorBufferFeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDeviceShaderIntegerDotProductFeatures = ()
-  Extends DeviceCreateInfo PhysicalDeviceFragmentShaderBarycentricFeaturesKHR = ()
-  Extends DeviceCreateInfo PhysicalDeviceRayTracingMotionBlurFeaturesNV = ()
-  Extends DeviceCreateInfo PhysicalDeviceRayTracingValidationFeaturesNV = ()
-  Extends DeviceCreateInfo PhysicalDeviceRGBA10X6FormatsFeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDeviceDynamicRenderingFeatures = ()
-  Extends DeviceCreateInfo PhysicalDeviceImageViewMinLodFeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDeviceLinearColorAttachmentFeaturesNV = ()
-  Extends DeviceCreateInfo PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDevicePipelineBinaryFeaturesKHR = ()
-  Extends DeviceCreateInfo DevicePipelineBinaryInternalCacheControlKHR = ()
-  Extends DeviceCreateInfo PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE = ()
-  Extends DeviceCreateInfo PhysicalDeviceNestedCommandBufferFeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDeviceShaderModuleIdentifierFeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDeviceImageCompressionControlFeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDeviceSubpassMergeFeedbackFeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDeviceOpacityMicromapFeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDeviceDisplacementMicromapFeaturesNV = ()
-  Extends DeviceCreateInfo PhysicalDevicePipelinePropertiesFeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD = ()
-  Extends DeviceCreateInfo PhysicalDeviceNonSeamlessCubeMapFeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDevicePipelineRobustnessFeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDeviceImageProcessingFeaturesQCOM = ()
-  Extends DeviceCreateInfo PhysicalDeviceTilePropertiesFeaturesQCOM = ()
-  Extends DeviceCreateInfo PhysicalDeviceAmigoProfilingFeaturesSEC = ()
-  Extends DeviceCreateInfo PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDeviceDepthClampZeroOneFeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDeviceAddressBindingReportFeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDeviceOpticalFlowFeaturesNV = ()
-  Extends DeviceCreateInfo PhysicalDeviceFaultFeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDeviceShaderCoreBuiltinsFeaturesARM = ()
-  Extends DeviceCreateInfo PhysicalDeviceFrameBoundaryFeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDeviceSwapchainMaintenance1FeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDeviceDepthBiasControlFeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDeviceRayTracingInvocationReorderFeaturesNV = ()
-  Extends DeviceCreateInfo PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV = ()
-  Extends DeviceCreateInfo PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM = ()
-  Extends DeviceCreateInfo PhysicalDeviceRayTracingPositionFetchFeaturesKHR = ()
-  Extends DeviceCreateInfo PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM = ()
-  Extends DeviceCreateInfo PhysicalDeviceShaderObjectFeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDeviceShaderTileImageFeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX = ()
-  Extends DeviceCreateInfo PhysicalDeviceCooperativeMatrixFeaturesKHR = ()
-  Extends DeviceCreateInfo PhysicalDeviceShaderEnqueueFeaturesAMDX = ()
-  Extends DeviceCreateInfo PhysicalDeviceAntiLagFeaturesAMD = ()
-  Extends DeviceCreateInfo PhysicalDeviceCubicClampFeaturesQCOM = ()
-  Extends DeviceCreateInfo PhysicalDeviceYcbcrDegammaFeaturesQCOM = ()
-  Extends DeviceCreateInfo PhysicalDeviceCubicWeightsFeaturesQCOM = ()
-  Extends DeviceCreateInfo PhysicalDeviceImageProcessing2FeaturesQCOM = ()
-  Extends DeviceCreateInfo PhysicalDeviceDescriptorPoolOverallocationFeaturesNV = ()
-  Extends DeviceCreateInfo PhysicalDevicePerStageDescriptorSetFeaturesNV = ()
-  Extends DeviceCreateInfo PhysicalDeviceExternalFormatResolveFeaturesANDROID = ()
-  Extends DeviceCreateInfo PhysicalDeviceCudaKernelLaunchFeaturesNV = ()
-  Extends DeviceCreateInfo DeviceQueueShaderCoreControlCreateInfoARM = ()
-  Extends DeviceCreateInfo PhysicalDeviceSchedulingControlsFeaturesARM = ()
-  Extends DeviceCreateInfo PhysicalDeviceRelaxedLineRasterizationFeaturesIMG = ()
-  Extends DeviceCreateInfo PhysicalDeviceRenderPassStripedFeaturesARM = ()
-  Extends DeviceCreateInfo PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR = ()
-  Extends DeviceCreateInfo PhysicalDeviceShaderSubgroupRotateFeaturesKHR = ()
-  Extends DeviceCreateInfo PhysicalDeviceShaderExpectAssumeFeaturesKHR = ()
-  Extends DeviceCreateInfo PhysicalDeviceShaderFloatControls2FeaturesKHR = ()
-  Extends DeviceCreateInfo PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR = ()
-  Extends DeviceCreateInfo PhysicalDeviceShaderQuadControlFeaturesKHR = ()
-  Extends DeviceCreateInfo PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV = ()
-  Extends DeviceCreateInfo PhysicalDeviceMapMemoryPlacedFeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDeviceRawAccessChainsFeaturesNV = ()
-  Extends DeviceCreateInfo PhysicalDeviceCommandBufferInheritanceFeaturesNV = ()
-  Extends DeviceCreateInfo PhysicalDeviceImageAlignmentControlFeaturesMESA = ()
-  Extends DeviceCreateInfo PhysicalDeviceShaderReplicatedCompositesFeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDevicePresentModeFifoLatestReadyFeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDeviceCooperativeMatrix2FeaturesNV = ()
-  Extends DeviceCreateInfo PhysicalDeviceHdrVividFeaturesHUAWEI = ()
-  Extends DeviceCreateInfo PhysicalDeviceVertexAttributeRobustnessFeaturesEXT = ()
-  Extends DeviceQueueCreateInfo DeviceQueueGlobalPriorityCreateInfoKHR = ()
-  Extends DeviceQueueCreateInfo DeviceQueueShaderCoreControlCreateInfoARM = ()
-  Extends DisplayModeProperties2KHR DisplayModeStereoPropertiesNV = ()
-  Extends DisplaySurfaceCreateInfoKHR DisplaySurfaceStereoCreateInfoNV = ()
-  Extends EventCreateInfo ExportMetalObjectCreateInfoEXT = ()
-  Extends EventCreateInfo ImportMetalSharedEventInfoEXT = ()
-  Extends ExecutionGraphPipelineCreateInfoAMDX PipelineCreationFeedbackCreateInfo = ()
-  Extends ExecutionGraphPipelineCreateInfoAMDX PipelineCompilerControlCreateInfoAMD = ()
-  Extends ExportMetalObjectsInfoEXT ExportMetalDeviceInfoEXT = ()
-  Extends ExportMetalObjectsInfoEXT ExportMetalCommandQueueInfoEXT = ()
-  Extends ExportMetalObjectsInfoEXT ExportMetalBufferInfoEXT = ()
-  Extends ExportMetalObjectsInfoEXT ExportMetalTextureInfoEXT = ()
-  Extends ExportMetalObjectsInfoEXT ExportMetalIOSurfaceInfoEXT = ()
-  Extends ExportMetalObjectsInfoEXT ExportMetalSharedEventInfoEXT = ()
-  Extends FenceCreateInfo ExportFenceCreateInfo = ()
-  Extends FenceCreateInfo ExportFenceWin32HandleInfoKHR = ()
-  Extends FormatProperties2 DrmFormatModifierPropertiesListEXT = ()
-  Extends FormatProperties2 SubpassResolvePerformanceQueryEXT = ()
-  Extends FormatProperties2 FormatProperties3 = ()
-  Extends FormatProperties2 DrmFormatModifierPropertiesList2EXT = ()
-  Extends FramebufferCreateInfo FramebufferAttachmentsCreateInfo = ()
-  Extends GeneratedCommandsInfoEXT GeneratedCommandsPipelineInfoEXT = ()
-  Extends GeneratedCommandsInfoEXT GeneratedCommandsShaderInfoEXT = ()
-  Extends GeneratedCommandsMemoryRequirementsInfoEXT GeneratedCommandsPipelineInfoEXT = ()
-  Extends GeneratedCommandsMemoryRequirementsInfoEXT GeneratedCommandsShaderInfoEXT = ()
-  Extends GraphicsPipelineCreateInfo PipelineCreateFlags2CreateInfoKHR = ()
-  Extends GraphicsPipelineCreateInfo PipelineBinaryInfoKHR = ()
-  Extends GraphicsPipelineCreateInfo GraphicsPipelineShaderGroupsCreateInfoNV = ()
-  Extends GraphicsPipelineCreateInfo PipelineDiscardRectangleStateCreateInfoEXT = ()
-  Extends GraphicsPipelineCreateInfo ExternalFormatANDROID = ()
-  Extends GraphicsPipelineCreateInfo PipelineRepresentativeFragmentTestStateCreateInfoNV = ()
-  Extends GraphicsPipelineCreateInfo PipelineCreationFeedbackCreateInfo = ()
-  Extends GraphicsPipelineCreateInfo PipelineCompilerControlCreateInfoAMD = ()
-  Extends GraphicsPipelineCreateInfo PipelineLibraryCreateInfoKHR = ()
-  Extends GraphicsPipelineCreateInfo PipelineFragmentShadingRateStateCreateInfoKHR = ()
-  Extends GraphicsPipelineCreateInfo PipelineFragmentShadingRateEnumStateCreateInfoNV = ()
-  Extends GraphicsPipelineCreateInfo PipelineRenderingCreateInfo = ()
-  Extends GraphicsPipelineCreateInfo AttachmentSampleCountInfoAMD = ()
-  Extends GraphicsPipelineCreateInfo MultiviewPerViewAttributesInfoNVX = ()
-  Extends GraphicsPipelineCreateInfo GraphicsPipelineLibraryCreateInfoEXT = ()
-  Extends GraphicsPipelineCreateInfo PipelineRobustnessCreateInfoEXT = ()
-  Extends GraphicsPipelineCreateInfo RenderingAttachmentLocationInfoKHR = ()
-  Extends GraphicsPipelineCreateInfo RenderingInputAttachmentIndexInfoKHR = ()
-  Extends HdrMetadataEXT HdrVividDynamicMetadataHUAWEI = ()
-  Extends ImageBlit2 CopyCommandTransformInfoQCOM = ()
-  Extends ImageCreateInfo DedicatedAllocationImageCreateInfoNV = ()
-  Extends ImageCreateInfo ExternalMemoryImageCreateInfoNV = ()
-  Extends ImageCreateInfo ExternalMemoryImageCreateInfo = ()
-  Extends ImageCreateInfo ImageSwapchainCreateInfoKHR = ()
-  Extends ImageCreateInfo ImageFormatListCreateInfo = ()
-  Extends ImageCreateInfo ExternalFormatANDROID = ()
-  Extends ImageCreateInfo ImageDrmFormatModifierListCreateInfoEXT = ()
-  Extends ImageCreateInfo ImageDrmFormatModifierExplicitCreateInfoEXT = ()
-  Extends ImageCreateInfo ImageStencilUsageCreateInfo = ()
-  Extends ImageCreateInfo OpaqueCaptureDescriptorDataCreateInfoEXT = ()
-  Extends ImageCreateInfo BufferCollectionImageCreateInfoFUCHSIA = ()
-  Extends ImageCreateInfo ImageCompressionControlEXT = ()
-  Extends ImageCreateInfo ExportMetalObjectCreateInfoEXT = ()
-  Extends ImageCreateInfo ImportMetalTextureInfoEXT = ()
-  Extends ImageCreateInfo ImportMetalIOSurfaceInfoEXT = ()
-  Extends ImageCreateInfo OpticalFlowImageFormatInfoNV = ()
-  Extends ImageCreateInfo ExternalFormatQNX = ()
-  Extends ImageCreateInfo ImageAlignmentControlCreateInfoMESA = ()
-  Extends ImageFormatProperties2 ExternalImageFormatProperties = ()
-  Extends ImageFormatProperties2 SamplerYcbcrConversionImageFormatProperties = ()
-  Extends ImageFormatProperties2 TextureLODGatherFormatPropertiesAMD = ()
-  Extends ImageFormatProperties2 AndroidHardwareBufferUsageANDROID = ()
-  Extends ImageFormatProperties2 FilterCubicImageViewImageFormatPropertiesEXT = ()
-  Extends ImageFormatProperties2 HostImageCopyDevicePerformanceQueryEXT = ()
-  Extends ImageFormatProperties2 ImageCompressionPropertiesEXT = ()
-  Extends ImageMemoryBarrier SampleLocationsInfoEXT = ()
-  Extends ImageMemoryBarrier ExternalMemoryAcquireUnmodifiedEXT = ()
-  Extends ImageMemoryBarrier2 SampleLocationsInfoEXT = ()
-  Extends ImageMemoryBarrier2 ExternalMemoryAcquireUnmodifiedEXT = ()
-  Extends ImageMemoryRequirementsInfo2 ImagePlaneMemoryRequirementsInfo = ()
-  Extends ImageViewCreateInfo ImageViewUsageCreateInfo = ()
-  Extends ImageViewCreateInfo ImageViewSlicedCreateInfoEXT = ()
-  Extends ImageViewCreateInfo SamplerYcbcrConversionInfo = ()
-  Extends ImageViewCreateInfo ImageViewASTCDecodeModeEXT = ()
-  Extends ImageViewCreateInfo OpaqueCaptureDescriptorDataCreateInfoEXT = ()
-  Extends ImageViewCreateInfo ImageViewMinLodCreateInfoEXT = ()
-  Extends ImageViewCreateInfo ExportMetalObjectCreateInfoEXT = ()
-  Extends ImageViewCreateInfo ImageViewSampleWeightCreateInfoQCOM = ()
-  Extends IndirectCommandsLayoutCreateInfoEXT PipelineLayoutCreateInfo = ()
-  Extends InstanceCreateInfo DebugReportCallbackCreateInfoEXT = ()
-  Extends InstanceCreateInfo ValidationFlagsEXT = ()
-  Extends InstanceCreateInfo ValidationFeaturesEXT = ()
-  Extends InstanceCreateInfo LayerSettingsCreateInfoEXT = ()
-  Extends InstanceCreateInfo DebugUtilsMessengerCreateInfoEXT = ()
-  Extends InstanceCreateInfo ExportMetalObjectCreateInfoEXT = ()
-  Extends InstanceCreateInfo DirectDriverLoadingListLUNARG = ()
-  Extends MemoryAllocateInfo DedicatedAllocationMemoryAllocateInfoNV = ()
-  Extends MemoryAllocateInfo ExportMemoryAllocateInfoNV = ()
-  Extends MemoryAllocateInfo ImportMemoryWin32HandleInfoNV = ()
-  Extends MemoryAllocateInfo ExportMemoryWin32HandleInfoNV = ()
-  Extends MemoryAllocateInfo ExportMemoryAllocateInfo = ()
-  Extends MemoryAllocateInfo ImportMemoryWin32HandleInfoKHR = ()
-  Extends MemoryAllocateInfo ExportMemoryWin32HandleInfoKHR = ()
-  Extends MemoryAllocateInfo ImportMemoryZirconHandleInfoFUCHSIA = ()
-  Extends MemoryAllocateInfo ImportMemoryFdInfoKHR = ()
-  Extends MemoryAllocateInfo MemoryAllocateFlagsInfo = ()
-  Extends MemoryAllocateInfo MemoryDedicatedAllocateInfo = ()
-  Extends MemoryAllocateInfo ImportMemoryHostPointerInfoEXT = ()
-  Extends MemoryAllocateInfo ImportAndroidHardwareBufferInfoANDROID = ()
-  Extends MemoryAllocateInfo MemoryPriorityAllocateInfoEXT = ()
-  Extends MemoryAllocateInfo MemoryOpaqueCaptureAddressAllocateInfo = ()
-  Extends MemoryAllocateInfo ImportMemoryBufferCollectionFUCHSIA = ()
-  Extends MemoryAllocateInfo ExportMetalObjectCreateInfoEXT = ()
-  Extends MemoryAllocateInfo ImportMetalBufferInfoEXT = ()
-  Extends MemoryAllocateInfo ImportScreenBufferInfoQNX = ()
-  Extends MemoryMapInfoKHR MemoryMapPlacedInfoEXT = ()
-  Extends MemoryRequirements2 MemoryDedicatedRequirements = ()
-  Extends OpticalFlowSessionCreateInfoNV OpticalFlowSessionCreatePrivateDataInfoNV = ()
-  Extends PhysicalDeviceClusterCullingShaderFeaturesHUAWEI PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI = ()
-  Extends PhysicalDeviceExternalBufferInfo BufferUsageFlags2CreateInfoKHR = ()
-  Extends PhysicalDeviceExternalSemaphoreInfo SemaphoreTypeCreateInfo = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceDeviceGeneratedCommandsFeaturesNV = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDevicePrivateDataFeatures = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceVariablePointersFeatures = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceMultiviewFeatures = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDevicePresentIdFeaturesKHR = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDevicePresentWaitFeaturesKHR = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDevice16BitStorageFeatures = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderSubgroupExtendedTypesFeatures = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceSamplerYcbcrConversionFeatures = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceProtectedMemoryFeatures = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceBlendOperationAdvancedFeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceMultiDrawFeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceInlineUniformBlockFeatures = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceMaintenance4Features = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceMaintenance5FeaturesKHR = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceMaintenance6FeaturesKHR = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceMaintenance7FeaturesKHR = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderDrawParametersFeatures = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderFloat16Int8Features = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceHostQueryResetFeatures = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceGlobalPriorityQueryFeaturesKHR = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceDeviceMemoryReportFeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceDescriptorIndexingFeatures = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceTimelineSemaphoreFeatures = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDevice8BitStorageFeatures = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceConditionalRenderingFeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceVulkanMemoryModelFeatures = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderAtomicInt64Features = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderAtomicFloatFeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderAtomicFloat2FeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceVertexAttributeDivisorFeaturesKHR = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceASTCDecodeFeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceTransformFeedbackFeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceRepresentativeFragmentTestFeaturesNV = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceExclusiveScissorFeaturesNV = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceCornerSampledImageFeaturesNV = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceComputeShaderDerivativesFeaturesKHR = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderImageFootprintFeaturesNV = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceCopyMemoryIndirectFeaturesNV = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceMemoryDecompressionFeaturesNV = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceShadingRateImageFeaturesNV = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceInvocationMaskFeaturesHUAWEI = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceMeshShaderFeaturesNV = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceMeshShaderFeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceAccelerationStructureFeaturesKHR = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceRayTracingPipelineFeaturesKHR = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceRayQueryFeaturesKHR = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceRayTracingMaintenance1FeaturesKHR = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceFragmentDensityMapFeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceFragmentDensityMap2FeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceScalarBlockLayoutFeatures = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceUniformBufferStandardLayoutFeatures = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceDepthClipEnableFeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceMemoryPriorityFeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceBufferDeviceAddressFeatures = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceBufferDeviceAddressFeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceImagelessFramebufferFeatures = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceTextureCompressionASTCHDRFeatures = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceCooperativeMatrixFeaturesNV = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceYcbcrImageArraysFeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDevicePresentBarrierFeaturesNV = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDevicePerformanceQueryFeaturesKHR = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceCoverageReductionModeFeaturesNV = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderClockFeaturesKHR = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceIndexTypeUint8FeaturesKHR = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderSMBuiltinsFeaturesNV = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceFragmentShaderInterlockFeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceSeparateDepthStencilLayoutsFeatures = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDevicePipelineExecutablePropertiesFeaturesKHR = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderDemoteToHelperInvocationFeatures = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceTexelBufferAlignmentFeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceSubgroupSizeControlFeatures = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceLineRasterizationFeaturesKHR = ()
-  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 PhysicalDeviceExtendedDynamicState3FeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceDiagnosticsConfigFeaturesNV = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceRobustness2FeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceImageRobustnessFeatures = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDevicePortabilitySubsetFeaturesKHR = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDevice4444FormatsFeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceSubpassShadingFeaturesHUAWEI = ()
-  Extends PhysicalDeviceFeatures2 (PhysicalDeviceClusterCullingShaderFeaturesHUAWEI '[]) = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderImageAtomicInt64FeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceFragmentShadingRateFeaturesKHR = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderTerminateInvocationFeatures = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceFragmentShadingRateEnumsFeaturesNV = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceImage2DViewOf3DFeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceImageSlicedViewOf3DFeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceLegacyVertexAttributesFeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceMutableDescriptorTypeFeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceDepthClipControlFeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceDepthClampControlFeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceVertexInputDynamicStateFeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceExternalMemoryRDMAFeaturesNV = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceColorWriteEnableFeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceSynchronization2Features = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceHostImageCopyFeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceLegacyDitheringFeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDevicePipelineProtectedAccessFeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceInheritedViewportScissorFeaturesNV = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceProvokingVertexFeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceDescriptorBufferFeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderIntegerDotProductFeatures = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceFragmentShaderBarycentricFeaturesKHR = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceRayTracingMotionBlurFeaturesNV = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceRayTracingValidationFeaturesNV = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceRGBA10X6FormatsFeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceDynamicRenderingFeatures = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceImageViewMinLodFeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceLinearColorAttachmentFeaturesNV = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDevicePipelineBinaryFeaturesKHR = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceNestedCommandBufferFeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderModuleIdentifierFeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceImageCompressionControlFeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceSubpassMergeFeedbackFeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceOpacityMicromapFeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceDisplacementMicromapFeaturesNV = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDevicePipelinePropertiesFeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceNonSeamlessCubeMapFeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDevicePipelineRobustnessFeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceImageProcessingFeaturesQCOM = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceTilePropertiesFeaturesQCOM = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceAmigoProfilingFeaturesSEC = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceDepthClampZeroOneFeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceAddressBindingReportFeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceOpticalFlowFeaturesNV = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceFaultFeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderCoreBuiltinsFeaturesARM = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceFrameBoundaryFeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceSwapchainMaintenance1FeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceDepthBiasControlFeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceRayTracingInvocationReorderFeaturesNV = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceRayTracingPositionFetchFeaturesKHR = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderObjectFeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderTileImageFeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceCooperativeMatrixFeaturesKHR = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderEnqueueFeaturesAMDX = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceAntiLagFeaturesAMD = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceCubicClampFeaturesQCOM = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceYcbcrDegammaFeaturesQCOM = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceCubicWeightsFeaturesQCOM = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceImageProcessing2FeaturesQCOM = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceDescriptorPoolOverallocationFeaturesNV = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDevicePerStageDescriptorSetFeaturesNV = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceExternalFormatResolveFeaturesANDROID = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceCudaKernelLaunchFeaturesNV = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceSchedulingControlsFeaturesARM = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceRelaxedLineRasterizationFeaturesIMG = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceRenderPassStripedFeaturesARM = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderSubgroupRotateFeaturesKHR = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderExpectAssumeFeaturesKHR = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderFloatControls2FeaturesKHR = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderQuadControlFeaturesKHR = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceMapMemoryPlacedFeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceRawAccessChainsFeaturesNV = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceCommandBufferInheritanceFeaturesNV = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceImageAlignmentControlFeaturesMESA = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderReplicatedCompositesFeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDevicePresentModeFifoLatestReadyFeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceCooperativeMatrix2FeaturesNV = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceHdrVividFeaturesHUAWEI = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceVertexAttributeRobustnessFeaturesEXT = ()
-  Extends PhysicalDeviceImageFormatInfo2 PhysicalDeviceExternalImageFormatInfo = ()
-  Extends PhysicalDeviceImageFormatInfo2 ImageFormatListCreateInfo = ()
-  Extends PhysicalDeviceImageFormatInfo2 PhysicalDeviceImageDrmFormatModifierInfoEXT = ()
-  Extends PhysicalDeviceImageFormatInfo2 ImageStencilUsageCreateInfo = ()
-  Extends PhysicalDeviceImageFormatInfo2 PhysicalDeviceImageViewImageFormatInfoEXT = ()
-  Extends PhysicalDeviceImageFormatInfo2 ImageCompressionControlEXT = ()
-  Extends PhysicalDeviceImageFormatInfo2 OpticalFlowImageFormatInfoNV = ()
-  Extends PhysicalDeviceLayeredApiPropertiesKHR PhysicalDeviceLayeredApiVulkanPropertiesKHR = ()
-  Extends PhysicalDeviceMemoryProperties2 PhysicalDeviceMemoryBudgetPropertiesEXT = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceDeviceGeneratedCommandsPropertiesNV = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceMultiDrawPropertiesEXT = ()
-  Extends PhysicalDeviceProperties2 PhysicalDevicePushDescriptorPropertiesKHR = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceDriverProperties = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceIDProperties = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceMultiviewProperties = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceDiscardRectanglePropertiesEXT = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceSubgroupProperties = ()
-  Extends PhysicalDeviceProperties2 PhysicalDevicePointClippingProperties = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceProtectedMemoryProperties = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceSamplerFilterMinmaxProperties = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceSampleLocationsPropertiesEXT = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceBlendOperationAdvancedPropertiesEXT = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceInlineUniformBlockProperties = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceMaintenance3Properties = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceMaintenance4Properties = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceMaintenance5PropertiesKHR = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceMaintenance6PropertiesKHR = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceMaintenance7PropertiesKHR = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceLayeredApiPropertiesListKHR = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceFloatControlsProperties = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceExternalMemoryHostPropertiesEXT = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceConservativeRasterizationPropertiesEXT = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceShaderCorePropertiesAMD = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceShaderCoreProperties2AMD = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceDescriptorIndexingProperties = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceTimelineSemaphoreProperties = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceVertexAttributeDivisorPropertiesEXT = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceVertexAttributeDivisorPropertiesKHR = ()
-  Extends PhysicalDeviceProperties2 PhysicalDevicePCIBusInfoPropertiesEXT = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceDepthStencilResolveProperties = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceTransformFeedbackPropertiesEXT = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceComputeShaderDerivativesPropertiesKHR = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceCopyMemoryIndirectPropertiesNV = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceMemoryDecompressionPropertiesNV = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceShadingRateImagePropertiesNV = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceMeshShaderPropertiesNV = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceMeshShaderPropertiesEXT = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceAccelerationStructurePropertiesKHR = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceRayTracingPipelinePropertiesKHR = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceRayTracingPropertiesNV = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceFragmentDensityMapPropertiesEXT = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceFragmentDensityMap2PropertiesEXT = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceCooperativeMatrixPropertiesNV = ()
-  Extends PhysicalDeviceProperties2 PhysicalDevicePerformanceQueryPropertiesKHR = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceShaderSMBuiltinsPropertiesNV = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceTexelBufferAlignmentProperties = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceSubgroupSizeControlProperties = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceSubpassShadingPropertiesHUAWEI = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceClusterCullingShaderPropertiesHUAWEI = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceLineRasterizationPropertiesKHR = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceVulkan11Properties = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceVulkan12Properties = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceVulkan13Properties = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceCustomBorderColorPropertiesEXT = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceExtendedDynamicState3PropertiesEXT = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceRobustness2PropertiesEXT = ()
-  Extends PhysicalDeviceProperties2 PhysicalDevicePortabilitySubsetPropertiesKHR = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceFragmentShadingRatePropertiesKHR = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceFragmentShadingRateEnumsPropertiesNV = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceLegacyVertexAttributesPropertiesEXT = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceHostImageCopyPropertiesEXT = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceProvokingVertexPropertiesEXT = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceDescriptorBufferPropertiesEXT = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceShaderIntegerDotProductProperties = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceDrmPropertiesEXT = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceFragmentShaderBarycentricPropertiesKHR = ()
-  Extends PhysicalDeviceProperties2 PhysicalDevicePipelineBinaryPropertiesKHR = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceNestedCommandBufferPropertiesEXT = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceShaderModuleIdentifierPropertiesEXT = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceOpacityMicromapPropertiesEXT = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceDisplacementMicromapPropertiesNV = ()
-  Extends PhysicalDeviceProperties2 PhysicalDevicePipelineRobustnessPropertiesEXT = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceImageProcessingPropertiesQCOM = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceOpticalFlowPropertiesNV = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceShaderCoreBuiltinsPropertiesARM = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceRayTracingInvocationReorderPropertiesNV = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceExtendedSparseAddressSpacePropertiesNV = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceShaderCorePropertiesARM = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceShaderObjectPropertiesEXT = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceShaderTileImagePropertiesEXT = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceCooperativeMatrixPropertiesKHR = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceShaderEnqueuePropertiesAMDX = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceImageProcessing2PropertiesQCOM = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceLayeredDriverPropertiesMSFT = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceExternalFormatResolvePropertiesANDROID = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceCudaKernelLaunchPropertiesNV = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceSchedulingControlsPropertiesARM = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceRenderPassStripedPropertiesARM = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceMapMemoryPlacedPropertiesEXT = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceImageAlignmentControlPropertiesMESA = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceCooperativeMatrix2PropertiesNV = ()
-  Extends PhysicalDeviceSurfaceInfo2KHR SurfaceFullScreenExclusiveInfoEXT = ()
-  Extends PhysicalDeviceSurfaceInfo2KHR SurfaceFullScreenExclusiveWin32InfoEXT = ()
-  Extends PhysicalDeviceSurfaceInfo2KHR SurfacePresentModeEXT = ()
-  Extends PipelineColorBlendStateCreateInfo PipelineColorBlendAdvancedStateCreateInfoEXT = ()
-  Extends PipelineColorBlendStateCreateInfo PipelineColorWriteCreateInfoEXT = ()
-  Extends PipelineMultisampleStateCreateInfo PipelineCoverageToColorStateCreateInfoNV = ()
-  Extends PipelineMultisampleStateCreateInfo PipelineSampleLocationsStateCreateInfoEXT = ()
-  Extends PipelineMultisampleStateCreateInfo PipelineCoverageModulationStateCreateInfoNV = ()
-  Extends PipelineMultisampleStateCreateInfo PipelineCoverageReductionStateCreateInfoNV = ()
-  Extends PipelineRasterizationStateCreateInfo PipelineRasterizationStateRasterizationOrderAMD = ()
-  Extends PipelineRasterizationStateCreateInfo PipelineRasterizationConservativeStateCreateInfoEXT = ()
-  Extends PipelineRasterizationStateCreateInfo PipelineRasterizationStateStreamCreateInfoEXT = ()
-  Extends PipelineRasterizationStateCreateInfo PipelineRasterizationDepthClipStateCreateInfoEXT = ()
-  Extends PipelineRasterizationStateCreateInfo PipelineRasterizationLineStateCreateInfoKHR = ()
-  Extends PipelineRasterizationStateCreateInfo PipelineRasterizationProvokingVertexStateCreateInfoEXT = ()
-  Extends PipelineRasterizationStateCreateInfo DepthBiasRepresentationInfoEXT = ()
-  Extends PipelineShaderStageCreateInfo (ShaderModuleCreateInfo '[]) = ()
-  Extends PipelineShaderStageCreateInfo ShaderModuleValidationCacheCreateInfoEXT = ()
-  Extends PipelineShaderStageCreateInfo DebugUtilsObjectNameInfoEXT = ()
-  Extends PipelineShaderStageCreateInfo PipelineShaderStageRequiredSubgroupSizeCreateInfo = ()
-  Extends PipelineShaderStageCreateInfo PipelineShaderStageModuleIdentifierCreateInfoEXT = ()
-  Extends PipelineShaderStageCreateInfo PipelineRobustnessCreateInfoEXT = ()
-  Extends PipelineShaderStageCreateInfo PipelineShaderStageNodeCreateInfoAMDX = ()
-  Extends PipelineTessellationStateCreateInfo PipelineTessellationDomainOriginStateCreateInfo = ()
-  Extends PipelineVertexInputStateCreateInfo PipelineVertexInputDivisorStateCreateInfoKHR = ()
-  Extends PipelineViewportStateCreateInfo PipelineViewportWScalingStateCreateInfoNV = ()
-  Extends PipelineViewportStateCreateInfo PipelineViewportSwizzleStateCreateInfoNV = ()
-  Extends PipelineViewportStateCreateInfo PipelineViewportExclusiveScissorStateCreateInfoNV = ()
-  Extends PipelineViewportStateCreateInfo PipelineViewportShadingRateImageStateCreateInfoNV = ()
-  Extends PipelineViewportStateCreateInfo PipelineViewportCoarseSampleOrderStateCreateInfoNV = ()
-  Extends PipelineViewportStateCreateInfo PipelineViewportDepthClipControlCreateInfoEXT = ()
-  Extends PipelineViewportStateCreateInfo PipelineViewportDepthClampControlCreateInfoEXT = ()
-  Extends PresentInfoKHR DisplayPresentInfoKHR = ()
-  Extends PresentInfoKHR PresentRegionsKHR = ()
-  Extends PresentInfoKHR DeviceGroupPresentInfoKHR = ()
-  Extends PresentInfoKHR PresentIdKHR = ()
-  Extends PresentInfoKHR PresentTimesInfoGOOGLE = ()
-  Extends PresentInfoKHR PresentFrameTokenGGP = ()
-  Extends PresentInfoKHR FrameBoundaryEXT = ()
-  Extends PresentInfoKHR SwapchainPresentFenceInfoEXT = ()
-  Extends PresentInfoKHR SwapchainPresentModeInfoEXT = ()
-  Extends PushConstantsInfoKHR PipelineLayoutCreateInfo = ()
-  Extends PushDescriptorSetInfoKHR PipelineLayoutCreateInfo = ()
-  Extends PushDescriptorSetWithTemplateInfoKHR PipelineLayoutCreateInfo = ()
-  Extends QueryPoolCreateInfo QueryPoolPerformanceCreateInfoKHR = ()
-  Extends QueryPoolCreateInfo QueryPoolPerformanceQueryCreateInfoINTEL = ()
-  Extends QueueFamilyProperties2 QueueFamilyGlobalPriorityPropertiesKHR = ()
-  Extends QueueFamilyProperties2 QueueFamilyCheckpointPropertiesNV = ()
-  Extends QueueFamilyProperties2 QueueFamilyCheckpointProperties2NV = ()
-  Extends RayTracingPipelineCreateInfoKHR PipelineCreateFlags2CreateInfoKHR = ()
-  Extends RayTracingPipelineCreateInfoKHR PipelineBinaryInfoKHR = ()
-  Extends RayTracingPipelineCreateInfoKHR PipelineCreationFeedbackCreateInfo = ()
-  Extends RayTracingPipelineCreateInfoKHR PipelineRobustnessCreateInfoEXT = ()
-  Extends RayTracingPipelineCreateInfoNV PipelineCreateFlags2CreateInfoKHR = ()
-  Extends RayTracingPipelineCreateInfoNV PipelineCreationFeedbackCreateInfo = ()
-  Extends RenderPassBeginInfo DeviceGroupRenderPassBeginInfo = ()
-  Extends RenderPassBeginInfo RenderPassSampleLocationsBeginInfoEXT = ()
-  Extends RenderPassBeginInfo RenderPassAttachmentBeginInfo = ()
-  Extends RenderPassBeginInfo RenderPassTransformBeginInfoQCOM = ()
-  Extends RenderPassBeginInfo MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM = ()
-  Extends RenderPassBeginInfo RenderPassStripeBeginInfoARM = ()
-  Extends RenderPassCreateInfo RenderPassMultiviewCreateInfo = ()
-  Extends RenderPassCreateInfo RenderPassInputAttachmentAspectCreateInfo = ()
-  Extends RenderPassCreateInfo RenderPassFragmentDensityMapCreateInfoEXT = ()
-  Extends RenderPassCreateInfo2 RenderPassFragmentDensityMapCreateInfoEXT = ()
-  Extends RenderPassCreateInfo2 RenderPassCreationControlEXT = ()
-  Extends RenderPassCreateInfo2 RenderPassCreationFeedbackCreateInfoEXT = ()
-  Extends RenderingInfo DeviceGroupRenderPassBeginInfo = ()
-  Extends RenderingInfo MultisampledRenderToSingleSampledInfoEXT = ()
-  Extends RenderingInfo RenderingFragmentShadingRateAttachmentInfoKHR = ()
-  Extends RenderingInfo RenderingFragmentDensityMapAttachmentInfoEXT = ()
-  Extends RenderingInfo MultiviewPerViewAttributesInfoNVX = ()
-  Extends RenderingInfo MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM = ()
-  Extends RenderingInfo RenderPassStripeBeginInfoARM = ()
-  Extends SamplerCreateInfo SamplerYcbcrConversionInfo = ()
-  Extends SamplerCreateInfo SamplerReductionModeCreateInfo = ()
-  Extends SamplerCreateInfo SamplerCustomBorderColorCreateInfoEXT = ()
-  Extends SamplerCreateInfo SamplerBorderColorComponentMappingCreateInfoEXT = ()
-  Extends SamplerCreateInfo OpaqueCaptureDescriptorDataCreateInfoEXT = ()
-  Extends SamplerCreateInfo SamplerCubicWeightsCreateInfoQCOM = ()
-  Extends SamplerCreateInfo SamplerBlockMatchWindowCreateInfoQCOM = ()
-  Extends SamplerYcbcrConversionCreateInfo ExternalFormatANDROID = ()
-  Extends SamplerYcbcrConversionCreateInfo ExternalFormatQNX = ()
-  Extends SamplerYcbcrConversionCreateInfo SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM = ()
-  Extends ScreenBufferPropertiesQNX ScreenBufferFormatPropertiesQNX = ()
-  Extends SemaphoreCreateInfo ExportSemaphoreCreateInfo = ()
-  Extends SemaphoreCreateInfo ExportSemaphoreWin32HandleInfoKHR = ()
-  Extends SemaphoreCreateInfo SemaphoreTypeCreateInfo = ()
-  Extends SemaphoreCreateInfo ExportMetalObjectCreateInfoEXT = ()
-  Extends SemaphoreCreateInfo ImportMetalSharedEventInfoEXT = ()
-  Extends SemaphoreCreateInfo QueryLowLatencySupportNV = ()
-  Extends SetDescriptorBufferOffsetsInfoEXT PipelineLayoutCreateInfo = ()
-  Extends ShaderCreateInfoEXT ValidationFeaturesEXT = ()
-  Extends ShaderCreateInfoEXT PipelineShaderStageRequiredSubgroupSizeCreateInfo = ()
-  Extends ShaderModuleCreateInfo ValidationFeaturesEXT = ()
-  Extends ShaderModuleCreateInfo ShaderModuleValidationCacheCreateInfoEXT = ()
-  Extends SubmitInfo Win32KeyedMutexAcquireReleaseInfoNV = ()
-  Extends SubmitInfo Win32KeyedMutexAcquireReleaseInfoKHR = ()
-  Extends SubmitInfo D3D12FenceSubmitInfoKHR = ()
-  Extends SubmitInfo DeviceGroupSubmitInfo = ()
-  Extends SubmitInfo ProtectedSubmitInfo = ()
-  Extends SubmitInfo TimelineSemaphoreSubmitInfo = ()
-  Extends SubmitInfo PerformanceQuerySubmitInfoKHR = ()
-  Extends SubmitInfo AmigoProfilingSubmitInfoSEC = ()
-  Extends SubmitInfo FrameBoundaryEXT = ()
-  Extends SubmitInfo LatencySubmissionPresentIdNV = ()
-  Extends SubmitInfo2 Win32KeyedMutexAcquireReleaseInfoNV = ()
-  Extends SubmitInfo2 Win32KeyedMutexAcquireReleaseInfoKHR = ()
-  Extends SubmitInfo2 PerformanceQuerySubmitInfoKHR = ()
-  Extends SubmitInfo2 FrameBoundaryEXT = ()
-  Extends SubmitInfo2 LatencySubmissionPresentIdNV = ()
-  Extends SubpassDependency2 MemoryBarrier2 = ()
-  Extends SubpassDescription2 SubpassDescriptionDepthStencilResolve = ()
-  Extends SubpassDescription2 FragmentShadingRateAttachmentInfoKHR = ()
-  Extends SubpassDescription2 MultisampledRenderToSingleSampledInfoEXT = ()
-  Extends SubpassDescription2 RenderPassCreationControlEXT = ()
-  Extends SubpassDescription2 RenderPassSubpassFeedbackCreateInfoEXT = ()
-  Extends SubpassEndInfo SubpassFragmentDensityMapOffsetEndInfoQCOM = ()
-  Extends SubresourceLayout2KHR SubresourceHostMemcpySizeEXT = ()
-  Extends SubresourceLayout2KHR ImageCompressionPropertiesEXT = ()
-  Extends SurfaceCapabilities2KHR DisplayNativeHdrSurfaceCapabilitiesAMD = ()
-  Extends SurfaceCapabilities2KHR SharedPresentSurfaceCapabilitiesKHR = ()
-  Extends SurfaceCapabilities2KHR SurfaceProtectedCapabilitiesKHR = ()
-  Extends SurfaceCapabilities2KHR SurfaceCapabilitiesFullScreenExclusiveEXT = ()
-  Extends SurfaceCapabilities2KHR SurfaceCapabilitiesPresentBarrierNV = ()
-  Extends SurfaceCapabilities2KHR SurfacePresentScalingCapabilitiesEXT = ()
-  Extends SurfaceCapabilities2KHR SurfacePresentModeCompatibilityEXT = ()
-  Extends SurfaceCapabilities2KHR LatencySurfaceCapabilitiesNV = ()
-  Extends SurfaceFormat2KHR ImageCompressionPropertiesEXT = ()
-  Extends SwapchainCreateInfoKHR SwapchainCounterCreateInfoEXT = ()
-  Extends SwapchainCreateInfoKHR DeviceGroupSwapchainCreateInfoKHR = ()
-  Extends SwapchainCreateInfoKHR SwapchainDisplayNativeHdrCreateInfoAMD = ()
-  Extends SwapchainCreateInfoKHR ImageFormatListCreateInfo = ()
-  Extends SwapchainCreateInfoKHR SurfaceFullScreenExclusiveInfoEXT = ()
-  Extends SwapchainCreateInfoKHR SurfaceFullScreenExclusiveWin32InfoEXT = ()
-  Extends SwapchainCreateInfoKHR SwapchainPresentBarrierCreateInfoNV = ()
-  Extends SwapchainCreateInfoKHR ImageCompressionControlEXT = ()
-  Extends SwapchainCreateInfoKHR SwapchainPresentModesCreateInfoEXT = ()
-  Extends SwapchainCreateInfoKHR SwapchainPresentScalingCreateInfoEXT = ()
-  Extends SwapchainCreateInfoKHR SwapchainLatencyCreateInfoNV = ()
-  Extends WriteDescriptorSet WriteDescriptorSetInlineUniformBlock = ()
-  Extends WriteDescriptorSet WriteDescriptorSetAccelerationStructureKHR = ()
-  Extends WriteDescriptorSet WriteDescriptorSetAccelerationStructureNV = ()
-  Extends a b = TypeError (ShowType a :<>: Text " is not extended by " :<>: ShowType b)
-
-data SomeStruct (a :: [Type] -> Type) where
-  SomeStruct
-    :: forall a es
-     . (Extendss a es, PokeChain es, Show (Chain es))
-    => a es
-    -> SomeStruct a
-
-deriving instance (forall es. Show (Chain es) => Show (a es)) => Show (SomeStruct a)
-
--- | The constraint is so on this instance to encourage type inference
-instance Zero (a '[]) => Zero (SomeStruct a) where
-  zero = SomeStruct (zero :: a '[])
-
--- | Forget which extensions a pointed-to struct has by casting the pointer
-forgetExtensions :: Ptr (a es) -> Ptr (SomeStruct a)
-forgetExtensions = castPtr
-
--- | Add an extension to the beginning of the struct chain
---
--- This can be used to optionally extend structs based on some condition (for
--- example, an extension or layer being available)
-extendSomeStruct
-  :: (Extensible a, Extends a e, ToCStruct e, Show e)
-  => e
-  -> SomeStruct a
-  -> SomeStruct a
-extendSomeStruct e (SomeStruct a) = SomeStruct (setNext a (e, getNext a))
-
--- | Consume a 'SomeStruct' value
-withSomeStruct
-  :: forall a b
-   . SomeStruct a
-  -> (forall es . (Extendss a es, PokeChain es, Show (Chain es)) => a es -> b)
-  -> b
-withSomeStruct (SomeStruct s) f = f s
-
--- | Write the C representation of some extended @a@ and use the pointer,
--- the pointer must not be returned from the continuation.
-withSomeCStruct
-  :: forall a b
-   . (forall es . (Extendss a es, PokeChain es) => ToCStruct (a es))
-  => SomeStruct a
-  -> (forall es . (Extendss a es, PokeChain es) => Ptr (a es) -> IO b)
-  -> IO b
-withSomeCStruct s f = withSomeStruct s (`withCStruct` f)
-
--- | Given some memory for the head of the chain, allocate and poke the
--- tail and run an action.
-pokeSomeCStruct
-  :: (forall es . (Extendss a es, PokeChain es) => ToCStruct (a es))
-  => Ptr (SomeStruct a)
-  -- ^ Pointer to some memory at least the size of the head of the struct
-  -- chain.
-  -> SomeStruct a
-  -- ^ The struct to poke
-  -> IO b
-  -- ^ Computation to run while the poked tail is valid
-  -> IO b
-pokeSomeCStruct p (SomeStruct s) = pokeCStruct (castPtr p) s
-
--- | Given a pointer to a struct with an unknown chain, peek the struct and
--- its chain.
-peekSomeCStruct
-  :: forall a
-   . (Extensible a, forall es . (Extendss a es, PeekChain es) => FromCStruct (a es))
-  => Ptr (SomeStruct a)
-  -> IO (SomeStruct a)
-peekSomeCStruct p = do
-  head'  <- peekCStruct (castPtr @_ @(a '[]) p)
-  pNext <- peek @(Ptr BaseOutStructure) (p `plusPtr` 8)
-  peekSomeChain @a pNext $ \tail' -> SomeStruct (setNext head' tail')
-
-peekSomeChain
-  :: forall a b
-   . (Extensible a)
-  => Ptr BaseOutStructure
-  -> (  forall es
-      . (Extendss a es, PokeChain es, Show (Chain es))
-     => Chain es
-     -> b
-     )
-  -> IO b
-peekSomeChain p c = if p == nullPtr
-  then pure (c ())
-  else do
-    baseOut <- peek p
-    join
-      $ peekChainHead @a (case baseOut of BaseOutStructure{sType} -> sType)
-                         (castPtr @BaseOutStructure @() p)
-      $ \head' -> peekSomeChain @a (case baseOut of BaseOutStructure{next} -> next)
-                                  (\tail' -> c (head', tail'))
-
-peekChainHead
-  :: forall a b
-   . Extensible a
-  => StructureType
-  -> Ptr ()
-  -> (forall e . (Extends a e, ToCStruct e, Show e) => e -> b)
-  -> IO b
-peekChainHead ty p c = case ty of
-  STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO_KHR -> go @BufferUsageFlags2CreateInfoKHR
-  STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO -> go @(ShaderModuleCreateInfo '[])
-  STRUCTURE_TYPE_COMPUTE_PIPELINE_INDIRECT_BUFFER_INFO_NV -> go @ComputePipelineIndirectBufferInfoNV
-  STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO_KHR -> go @PipelineCreateFlags2CreateInfoKHR
-  STRUCTURE_TYPE_PIPELINE_BINARY_INFO_KHR -> go @PipelineBinaryInfoKHR
-  STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO -> go @PipelineLayoutCreateInfo
-  STRUCTURE_TYPE_DISPLAY_SURFACE_STEREO_CREATE_INFO_NV -> go @DisplaySurfaceStereoCreateInfoNV
-  STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR -> go @DisplayPresentInfoKHR
-  STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT -> go @DebugReportCallbackCreateInfoEXT
-  STRUCTURE_TYPE_VALIDATION_FLAGS_EXT -> go @ValidationFlagsEXT
-  STRUCTURE_TYPE_VALIDATION_FEATURES_EXT -> go @ValidationFeaturesEXT
-  STRUCTURE_TYPE_LAYER_SETTINGS_CREATE_INFO_EXT -> go @LayerSettingsCreateInfoEXT
-  STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD -> go @PipelineRasterizationStateRasterizationOrderAMD
-  STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV -> go @DedicatedAllocationImageCreateInfoNV
-  STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV -> go @DedicatedAllocationBufferCreateInfoNV
-  STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV -> go @DedicatedAllocationMemoryAllocateInfoNV
-  STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV -> go @ExternalMemoryImageCreateInfoNV
-  STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV -> go @ExportMemoryAllocateInfoNV
-  STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV -> go @ImportMemoryWin32HandleInfoNV
-  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_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_COMPUTE_FEATURES_NV -> go @PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV
-  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
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 -> go @(PhysicalDeviceFeatures2 '[])
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR -> go @PhysicalDevicePushDescriptorPropertiesKHR
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES -> go @PhysicalDeviceDriverProperties
-  STRUCTURE_TYPE_PRESENT_REGIONS_KHR -> go @PresentRegionsKHR
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES -> go @PhysicalDeviceVariablePointersFeatures
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO -> go @PhysicalDeviceExternalImageFormatInfo
-  STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES -> go @ExternalImageFormatProperties
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES -> go @PhysicalDeviceIDProperties
-  STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO -> go @ExternalMemoryImageCreateInfo
-  STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO -> go @ExternalMemoryBufferCreateInfo
-  STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO -> go @ExportMemoryAllocateInfo
-  STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR -> go @ImportMemoryWin32HandleInfoKHR
-  STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR -> go @ExportMemoryWin32HandleInfoKHR
-  STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA -> go @ImportMemoryZirconHandleInfoFUCHSIA
-  STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR -> go @ImportMemoryFdInfoKHR
-  STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR -> go @Win32KeyedMutexAcquireReleaseInfoKHR
-  STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO -> go @ExportSemaphoreCreateInfo
-  STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR -> go @ExportSemaphoreWin32HandleInfoKHR
-  STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR -> go @D3D12FenceSubmitInfoKHR
-  STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO -> go @ExportFenceCreateInfo
-  STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR -> go @ExportFenceWin32HandleInfoKHR
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES -> go @PhysicalDeviceMultiviewFeatures
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES -> go @PhysicalDeviceMultiviewProperties
-  STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO -> go @RenderPassMultiviewCreateInfo
-  STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT -> go @SwapchainCounterCreateInfoEXT
-  STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO -> go @MemoryAllocateFlagsInfo
-  STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO -> go @BindBufferMemoryDeviceGroupInfo
-  STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO -> go @BindImageMemoryDeviceGroupInfo
-  STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO -> go @DeviceGroupRenderPassBeginInfo
-  STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO -> go @DeviceGroupCommandBufferBeginInfo
-  STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO -> go @DeviceGroupSubmitInfo
-  STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO -> go @DeviceGroupBindSparseInfo
-  STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR -> go @ImageSwapchainCreateInfoKHR
-  STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR -> go @BindImageMemorySwapchainInfoKHR
-  STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR -> go @DeviceGroupPresentInfoKHR
-  STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO -> go @DeviceGroupDeviceCreateInfo
-  STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR -> go @DeviceGroupSwapchainCreateInfoKHR
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR -> go @PhysicalDevicePresentIdFeaturesKHR
-  STRUCTURE_TYPE_PRESENT_ID_KHR -> go @PresentIdKHR
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR -> go @PhysicalDevicePresentWaitFeaturesKHR
-  STRUCTURE_TYPE_HDR_VIVID_DYNAMIC_METADATA_HUAWEI -> go @HdrVividDynamicMetadataHUAWEI
-  STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD -> go @DisplayNativeHdrSurfaceCapabilitiesAMD
-  STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD -> go @SwapchainDisplayNativeHdrCreateInfoAMD
-  STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE -> go @PresentTimesInfoGOOGLE
-  STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV -> go @PipelineViewportWScalingStateCreateInfoNV
-  STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV -> go @PipelineViewportSwizzleStateCreateInfoNV
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT -> go @PhysicalDeviceDiscardRectanglePropertiesEXT
-  STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT -> go @PipelineDiscardRectangleStateCreateInfoEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX -> go @PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
-  STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO -> go @RenderPassInputAttachmentAspectCreateInfo
-  STRUCTURE_TYPE_DISPLAY_MODE_STEREO_PROPERTIES_NV -> go @DisplayModeStereoPropertiesNV
-  STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR -> go @SharedPresentSurfaceCapabilitiesKHR
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES -> go @PhysicalDevice16BitStorageFeatures
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES -> go @PhysicalDeviceSubgroupProperties
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES -> go @PhysicalDeviceShaderSubgroupExtendedTypesFeatures
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES -> go @PhysicalDevicePointClippingProperties
-  STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS -> go @MemoryDedicatedRequirements
-  STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO -> go @MemoryDedicatedAllocateInfo
-  STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO -> go @ImageViewUsageCreateInfo
-  STRUCTURE_TYPE_IMAGE_VIEW_SLICED_CREATE_INFO_EXT -> go @ImageViewSlicedCreateInfoEXT
-  STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO -> go @PipelineTessellationDomainOriginStateCreateInfo
-  STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO -> go @SamplerYcbcrConversionInfo
-  STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO -> go @BindImagePlaneMemoryInfo
-  STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO -> go @ImagePlaneMemoryRequirementsInfo
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES -> go @PhysicalDeviceSamplerYcbcrConversionFeatures
-  STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES -> go @SamplerYcbcrConversionImageFormatProperties
-  STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD -> go @TextureLODGatherFormatPropertiesAMD
-  STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO -> go @ProtectedSubmitInfo
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES -> go @PhysicalDeviceProtectedMemoryFeatures
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES -> go @PhysicalDeviceProtectedMemoryProperties
-  STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV -> go @PipelineCoverageToColorStateCreateInfoNV
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES -> go @PhysicalDeviceSamplerFilterMinmaxProperties
-  STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT -> go @SampleLocationsInfoEXT
-  STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT -> go @RenderPassSampleLocationsBeginInfoEXT
-  STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT -> go @PipelineSampleLocationsStateCreateInfoEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT -> go @PhysicalDeviceSampleLocationsPropertiesEXT
-  STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO -> go @SamplerReductionModeCreateInfo
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT -> go @PhysicalDeviceBlendOperationAdvancedFeaturesEXT
-  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 -> 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 -> go @PhysicalDeviceMaintenance4Features
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES -> go @PhysicalDeviceMaintenance4Properties
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES_KHR -> go @PhysicalDeviceMaintenance5FeaturesKHR
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES_KHR -> go @PhysicalDeviceMaintenance5PropertiesKHR
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES_KHR -> go @PhysicalDeviceMaintenance6FeaturesKHR
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES_KHR -> go @PhysicalDeviceMaintenance6PropertiesKHR
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_FEATURES_KHR -> go @PhysicalDeviceMaintenance7FeaturesKHR
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_PROPERTIES_KHR -> go @PhysicalDeviceMaintenance7PropertiesKHR
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_LIST_KHR -> go @PhysicalDeviceLayeredApiPropertiesListKHR
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_VULKAN_PROPERTIES_KHR -> go @PhysicalDeviceLayeredApiVulkanPropertiesKHR
-  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_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_OBJECT_NAME_INFO_EXT -> go @DebugUtilsObjectNameInfoEXT
-  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
-  STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT -> go @ImportMemoryHostPointerInfoEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT -> go @PhysicalDeviceExternalMemoryHostPropertiesEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT -> go @PhysicalDeviceConservativeRasterizationPropertiesEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD -> go @PhysicalDeviceShaderCorePropertiesAMD
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD -> go @PhysicalDeviceShaderCoreProperties2AMD
-  STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT -> go @PipelineRasterizationConservativeStateCreateInfoEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES -> go @PhysicalDeviceDescriptorIndexingFeatures
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES -> go @PhysicalDeviceDescriptorIndexingProperties
-  STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO -> go @DescriptorSetLayoutBindingFlagsCreateInfo
-  STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO -> go @DescriptorSetVariableDescriptorCountAllocateInfo
-  STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT -> go @DescriptorSetVariableDescriptorCountLayoutSupport
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES -> go @PhysicalDeviceTimelineSemaphoreFeatures
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES -> go @PhysicalDeviceTimelineSemaphoreProperties
-  STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO -> go @SemaphoreTypeCreateInfo
-  STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO -> go @TimelineSemaphoreSubmitInfo
-  STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_KHR -> go @PipelineVertexInputDivisorStateCreateInfoKHR
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT -> go @PhysicalDeviceVertexAttributeDivisorPropertiesEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_KHR -> go @PhysicalDeviceVertexAttributeDivisorPropertiesKHR
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT -> go @PhysicalDevicePCIBusInfoPropertiesEXT
-  STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID -> go @ImportAndroidHardwareBufferInfoANDROID
-  STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID -> go @AndroidHardwareBufferUsageANDROID
-  STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID -> go @AndroidHardwareBufferFormatPropertiesANDROID
-  STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT -> go @CommandBufferInheritanceConditionalRenderingInfoEXT
-  STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID -> go @ExternalFormatANDROID
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES -> go @PhysicalDevice8BitStorageFeatures
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT -> go @PhysicalDeviceConditionalRenderingFeaturesEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES -> go @PhysicalDeviceVulkanMemoryModelFeatures
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES -> go @PhysicalDeviceShaderAtomicInt64Features
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT -> go @PhysicalDeviceShaderAtomicFloatFeaturesEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT -> go @PhysicalDeviceShaderAtomicFloat2FeaturesEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_KHR -> go @PhysicalDeviceVertexAttributeDivisorFeaturesKHR
-  STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV -> go @QueueFamilyCheckpointPropertiesNV
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES -> go @PhysicalDeviceDepthStencilResolveProperties
-  STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE -> go @SubpassDescriptionDepthStencilResolve
-  STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT -> go @ImageViewASTCDecodeModeEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT -> go @PhysicalDeviceASTCDecodeFeaturesEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT -> go @PhysicalDeviceTransformFeedbackFeaturesEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT -> go @PhysicalDeviceTransformFeedbackPropertiesEXT
-  STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT -> go @PipelineRasterizationStateStreamCreateInfoEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV -> go @PhysicalDeviceRepresentativeFragmentTestFeaturesNV
-  STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV -> go @PipelineRepresentativeFragmentTestStateCreateInfoNV
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV -> go @PhysicalDeviceExclusiveScissorFeaturesNV
-  STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV -> go @PipelineViewportExclusiveScissorStateCreateInfoNV
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV -> go @PhysicalDeviceCornerSampledImageFeaturesNV
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_KHR -> go @PhysicalDeviceComputeShaderDerivativesFeaturesKHR
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_PROPERTIES_KHR -> go @PhysicalDeviceComputeShaderDerivativesPropertiesKHR
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV -> go @PhysicalDeviceShaderImageFootprintFeaturesNV
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV -> go @PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV -> go @PhysicalDeviceCopyMemoryIndirectFeaturesNV
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_NV -> go @PhysicalDeviceCopyMemoryIndirectPropertiesNV
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV -> go @PhysicalDeviceMemoryDecompressionFeaturesNV
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NV -> go @PhysicalDeviceMemoryDecompressionPropertiesNV
-  STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV -> go @PipelineViewportShadingRateImageStateCreateInfoNV
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV -> go @PhysicalDeviceShadingRateImageFeaturesNV
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV -> go @PhysicalDeviceShadingRateImagePropertiesNV
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI -> go @PhysicalDeviceInvocationMaskFeaturesHUAWEI
-  STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV -> go @PipelineViewportCoarseSampleOrderStateCreateInfoNV
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV -> go @PhysicalDeviceMeshShaderFeaturesNV
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV -> go @PhysicalDeviceMeshShaderPropertiesNV
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT -> go @PhysicalDeviceMeshShaderFeaturesEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_EXT -> go @PhysicalDeviceMeshShaderPropertiesEXT
-  STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR -> go @WriteDescriptorSetAccelerationStructureKHR
-  STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV -> go @WriteDescriptorSetAccelerationStructureNV
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR -> go @PhysicalDeviceAccelerationStructureFeaturesKHR
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR -> go @PhysicalDeviceRayTracingPipelineFeaturesKHR
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR -> go @PhysicalDeviceRayQueryFeaturesKHR
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR -> go @PhysicalDeviceAccelerationStructurePropertiesKHR
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR -> go @PhysicalDeviceRayTracingPipelinePropertiesKHR
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV -> go @PhysicalDeviceRayTracingPropertiesNV
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR -> go @PhysicalDeviceRayTracingMaintenance1FeaturesKHR
-  STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT -> go @DrmFormatModifierPropertiesListEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT -> go @PhysicalDeviceImageDrmFormatModifierInfoEXT
-  STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT -> go @ImageDrmFormatModifierListCreateInfoEXT
-  STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT -> go @ImageDrmFormatModifierExplicitCreateInfoEXT
-  STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO -> go @ImageStencilUsageCreateInfo
-  STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD -> go @DeviceMemoryOverallocationCreateInfoAMD
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT -> go @PhysicalDeviceFragmentDensityMapFeaturesEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT -> go @PhysicalDeviceFragmentDensityMap2FeaturesEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM -> go @PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT -> go @PhysicalDeviceFragmentDensityMapPropertiesEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT -> go @PhysicalDeviceFragmentDensityMap2PropertiesEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM -> go @PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM
-  STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT -> go @RenderPassFragmentDensityMapCreateInfoEXT
-  STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM -> go @SubpassFragmentDensityMapOffsetEndInfoQCOM
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES -> go @PhysicalDeviceScalarBlockLayoutFeatures
-  STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR -> go @SurfaceProtectedCapabilitiesKHR
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES -> go @PhysicalDeviceUniformBufferStandardLayoutFeatures
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT -> go @PhysicalDeviceDepthClipEnableFeaturesEXT
-  STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT -> go @PipelineRasterizationDepthClipStateCreateInfoEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT -> go @PhysicalDeviceMemoryBudgetPropertiesEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT -> go @PhysicalDeviceMemoryPriorityFeaturesEXT
-  STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT -> go @MemoryPriorityAllocateInfoEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT -> go @PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES -> go @PhysicalDeviceBufferDeviceAddressFeatures
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT -> go @PhysicalDeviceBufferDeviceAddressFeaturesEXT
-  STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO -> go @BufferOpaqueCaptureAddressCreateInfo
-  STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT -> go @BufferDeviceAddressCreateInfoEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT -> go @PhysicalDeviceImageViewImageFormatInfoEXT
-  STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT -> go @FilterCubicImageViewImageFormatPropertiesEXT
-  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 -> 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 -> 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
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_BARRIER_FEATURES_NV -> go @PhysicalDevicePresentBarrierFeaturesNV
-  STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_BARRIER_NV -> go @SurfaceCapabilitiesPresentBarrierNV
-  STRUCTURE_TYPE_SWAPCHAIN_PRESENT_BARRIER_CREATE_INFO_NV -> go @SwapchainPresentBarrierCreateInfoNV
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR -> go @PhysicalDevicePerformanceQueryFeaturesKHR
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR -> go @PhysicalDevicePerformanceQueryPropertiesKHR
-  STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR -> go @QueryPoolPerformanceCreateInfoKHR
-  STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR -> go @PerformanceQuerySubmitInfoKHR
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV -> go @PhysicalDeviceCoverageReductionModeFeaturesNV
-  STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV -> go @PipelineCoverageReductionStateCreateInfoNV
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL -> go @PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL
-  STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL -> go @QueryPoolPerformanceQueryCreateInfoINTEL
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR -> go @PhysicalDeviceShaderClockFeaturesKHR
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_KHR -> go @PhysicalDeviceIndexTypeUint8FeaturesKHR
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV -> go @PhysicalDeviceShaderSMBuiltinsPropertiesNV
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV -> go @PhysicalDeviceShaderSMBuiltinsFeaturesNV
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT -> go @PhysicalDeviceFragmentShaderInterlockFeaturesEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES -> go @PhysicalDeviceSeparateDepthStencilLayoutsFeatures
-  STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT -> go @AttachmentReferenceStencilLayout
-  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 -> go @PhysicalDeviceShaderDemoteToHelperInvocationFeatures
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT -> go @PhysicalDeviceTexelBufferAlignmentFeaturesEXT
-  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_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI -> go @PhysicalDeviceClusterCullingShaderPropertiesHUAWEI
-  STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO -> go @MemoryOpaqueCaptureAddressAllocateInfo
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_KHR -> go @PhysicalDeviceLineRasterizationFeaturesKHR
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_KHR -> go @PhysicalDeviceLineRasterizationPropertiesKHR
-  STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_KHR -> go @PipelineRasterizationLineStateCreateInfoKHR
-  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
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT -> go @PhysicalDeviceCustomBorderColorPropertiesEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT -> go @PhysicalDeviceCustomBorderColorFeaturesEXT
-  STRUCTURE_TYPE_SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT -> go @SamplerBorderColorComponentMappingCreateInfoEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT -> go @PhysicalDeviceBorderColorSwizzleFeaturesEXT
-  STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR -> go @PipelineLibraryCreateInfoKHR
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT -> go @PhysicalDeviceExtendedDynamicStateFeaturesEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT -> go @PhysicalDeviceExtendedDynamicState2FeaturesEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT -> go @PhysicalDeviceExtendedDynamicState3FeaturesEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT -> go @PhysicalDeviceExtendedDynamicState3PropertiesEXT
-  STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM -> go @RenderPassTransformBeginInfoQCOM
-  STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM -> go @CopyCommandTransformInfoQCOM
-  STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM -> go @CommandBufferInheritanceRenderPassTransformInfoQCOM
-  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 -> 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 -> 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
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT -> go @PhysicalDevice4444FormatsFeaturesEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI -> go @PhysicalDeviceSubpassShadingFeaturesHUAWEI
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI -> go @(PhysicalDeviceClusterCullingShaderFeaturesHUAWEI '[])
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_VRS_FEATURES_HUAWEI -> go @PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT -> go @PhysicalDeviceShaderImageAtomicInt64FeaturesEXT
-  STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR -> go @FragmentShadingRateAttachmentInfoKHR
-  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 -> 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
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT -> go @PhysicalDeviceImage2DViewOf3DFeaturesEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_SLICED_VIEW_OF_3D_FEATURES_EXT -> go @PhysicalDeviceImageSlicedViewOf3DFeaturesEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_FEATURES_EXT -> go @PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_FEATURES_EXT -> go @PhysicalDeviceLegacyVertexAttributesFeaturesEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_PROPERTIES_EXT -> go @PhysicalDeviceLegacyVertexAttributesPropertiesEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT -> go @PhysicalDeviceMutableDescriptorTypeFeaturesEXT
-  STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT -> go @MutableDescriptorTypeCreateInfoEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT -> go @PhysicalDeviceDepthClipControlFeaturesEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXT -> go @PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXT -> go @PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-  STRUCTURE_TYPE_GENERATED_COMMANDS_PIPELINE_INFO_EXT -> go @GeneratedCommandsPipelineInfoEXT
-  STRUCTURE_TYPE_GENERATED_COMMANDS_SHADER_INFO_EXT -> go @GeneratedCommandsShaderInfoEXT
-  STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLIP_CONTROL_CREATE_INFO_EXT -> go @PipelineViewportDepthClipControlCreateInfoEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_CONTROL_FEATURES_EXT -> go @PhysicalDeviceDepthClampControlFeaturesEXT
-  STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLAMP_CONTROL_CREATE_INFO_EXT -> go @PipelineViewportDepthClampControlCreateInfoEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT -> go @PhysicalDeviceVertexInputDynamicStateFeaturesEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV -> go @PhysicalDeviceExternalMemoryRDMAFeaturesNV
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_RELAXED_EXTENDED_INSTRUCTION_FEATURES_KHR -> go @PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR
-  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 -> go @MemoryBarrier2
-  STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV -> go @QueueFamilyCheckpointProperties2NV
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES -> go @PhysicalDeviceSynchronization2Features
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES_EXT -> go @PhysicalDeviceHostImageCopyFeaturesEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES_EXT -> go @PhysicalDeviceHostImageCopyPropertiesEXT
-  STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE_EXT -> go @SubresourceHostMemcpySizeEXT
-  STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY_EXT -> go @HostImageCopyDevicePerformanceQueryEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT -> go @PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT -> go @PhysicalDeviceLegacyDitheringFeaturesEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_FEATURES_EXT -> go @PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT
-  STRUCTURE_TYPE_SUBPASS_RESOLVE_PERFORMANCE_QUERY_EXT -> go @SubpassResolvePerformanceQueryEXT
-  STRUCTURE_TYPE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_INFO_EXT -> go @MultisampledRenderToSingleSampledInfoEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT -> go @PhysicalDevicePipelineProtectedAccessFeaturesEXT
-  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_CU_MODULE_TEXTURING_MODE_CREATE_INFO_NVX -> go @CuModuleTexturingModeCreateInfoNVX
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT -> go @PhysicalDeviceDescriptorBufferFeaturesEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT -> go @PhysicalDeviceDescriptorBufferPropertiesEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT -> go @PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT
-  STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_PUSH_DESCRIPTOR_BUFFER_HANDLE_EXT -> go @DescriptorBufferBindingPushDescriptorBufferHandleEXT
-  STRUCTURE_TYPE_OPAQUE_CAPTURE_DESCRIPTOR_DATA_CREATE_INFO_EXT -> go @OpaqueCaptureDescriptorDataCreateInfoEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES -> go @PhysicalDeviceShaderIntegerDotProductFeatures
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES -> go @PhysicalDeviceShaderIntegerDotProductProperties
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_DRM_PROPERTIES_EXT -> go @PhysicalDeviceDrmPropertiesEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR -> go @PhysicalDeviceFragmentShaderBarycentricFeaturesKHR
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_PROPERTIES_KHR -> go @PhysicalDeviceFragmentShaderBarycentricPropertiesKHR
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV -> go @PhysicalDeviceRayTracingMotionBlurFeaturesNV
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_VALIDATION_FEATURES_NV -> go @PhysicalDeviceRayTracingValidationFeaturesNV
-  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
-  STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MOTION_INFO_NV -> go @AccelerationStructureMotionInfoNV
-  STRUCTURE_TYPE_IMPORT_MEMORY_BUFFER_COLLECTION_FUCHSIA -> go @ImportMemoryBufferCollectionFUCHSIA
-  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 -> 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 -> 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 -> 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
-  STRUCTURE_TYPE_IMAGE_VIEW_MIN_LOD_CREATE_INFO_EXT -> go @ImageViewMinLodCreateInfoEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_EXT -> go @PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV -> go @PhysicalDeviceLinearColorAttachmentFeaturesNV
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT -> go @PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_BINARY_FEATURES_KHR -> go @PhysicalDevicePipelineBinaryFeaturesKHR
-  STRUCTURE_TYPE_DEVICE_PIPELINE_BINARY_INTERNAL_CACHE_CONTROL_KHR -> go @DevicePipelineBinaryInternalCacheControlKHR
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_BINARY_PROPERTIES_KHR -> go @PhysicalDevicePipelineBinaryPropertiesKHR
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT -> go @PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT
-  STRUCTURE_TYPE_GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT -> go @GraphicsPipelineLibraryCreateInfoEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE -> go @PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_FEATURES_EXT -> go @PhysicalDeviceNestedCommandBufferFeaturesEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_PROPERTIES_EXT -> go @PhysicalDeviceNestedCommandBufferPropertiesEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT -> go @PhysicalDeviceShaderModuleIdentifierFeaturesEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_PROPERTIES_EXT -> go @PhysicalDeviceShaderModuleIdentifierPropertiesEXT
-  STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_MODULE_IDENTIFIER_CREATE_INFO_EXT -> go @PipelineShaderStageModuleIdentifierCreateInfoEXT
-  STRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT -> go @ImageCompressionControlEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT -> go @PhysicalDeviceImageCompressionControlFeaturesEXT
-  STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT -> go @ImageCompressionPropertiesEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT -> go @PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT
-  STRUCTURE_TYPE_RENDER_PASS_CREATION_CONTROL_EXT -> go @RenderPassCreationControlEXT
-  STRUCTURE_TYPE_RENDER_PASS_CREATION_FEEDBACK_CREATE_INFO_EXT -> go @RenderPassCreationFeedbackCreateInfoEXT
-  STRUCTURE_TYPE_RENDER_PASS_SUBPASS_FEEDBACK_CREATE_INFO_EXT -> go @RenderPassSubpassFeedbackCreateInfoEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT -> go @PhysicalDeviceSubpassMergeFeedbackFeaturesEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_EXT -> go @PhysicalDeviceOpacityMicromapFeaturesEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_PROPERTIES_EXT -> go @PhysicalDeviceOpacityMicromapPropertiesEXT
-  STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT -> throwIO $ IOError Nothing InvalidArgument "peekChainHead" ("struct type STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT contains an undiscriminated union (DeviceOrHostAddressConstKHR) and can't be safely peeked") Nothing Nothing
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_FEATURES_NV -> go @PhysicalDeviceDisplacementMicromapFeaturesNV
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_PROPERTIES_NV -> go @PhysicalDeviceDisplacementMicromapPropertiesNV
-  STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_DISPLACEMENT_MICROMAP_NV -> throwIO $ IOError Nothing InvalidArgument "peekChainHead" ("struct type STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_DISPLACEMENT_MICROMAP_NV contains an undiscriminated union (DeviceOrHostAddressConstKHR) and can't be safely peeked") Nothing Nothing
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT -> go @PhysicalDevicePipelinePropertiesFeaturesEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_FEATURES_AMD -> go @PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
-  STRUCTURE_TYPE_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT -> go @ExternalMemoryAcquireUnmodifiedEXT
-  STRUCTURE_TYPE_EXPORT_METAL_OBJECT_CREATE_INFO_EXT -> go @ExportMetalObjectCreateInfoEXT
-  STRUCTURE_TYPE_EXPORT_METAL_DEVICE_INFO_EXT -> go @ExportMetalDeviceInfoEXT
-  STRUCTURE_TYPE_EXPORT_METAL_COMMAND_QUEUE_INFO_EXT -> go @ExportMetalCommandQueueInfoEXT
-  STRUCTURE_TYPE_EXPORT_METAL_BUFFER_INFO_EXT -> go @ExportMetalBufferInfoEXT
-  STRUCTURE_TYPE_IMPORT_METAL_BUFFER_INFO_EXT -> go @ImportMetalBufferInfoEXT
-  STRUCTURE_TYPE_EXPORT_METAL_TEXTURE_INFO_EXT -> go @ExportMetalTextureInfoEXT
-  STRUCTURE_TYPE_IMPORT_METAL_TEXTURE_INFO_EXT -> go @ImportMetalTextureInfoEXT
-  STRUCTURE_TYPE_EXPORT_METAL_IO_SURFACE_INFO_EXT -> go @ExportMetalIOSurfaceInfoEXT
-  STRUCTURE_TYPE_IMPORT_METAL_IO_SURFACE_INFO_EXT -> go @ImportMetalIOSurfaceInfoEXT
-  STRUCTURE_TYPE_EXPORT_METAL_SHARED_EVENT_INFO_EXT -> go @ExportMetalSharedEventInfoEXT
-  STRUCTURE_TYPE_IMPORT_METAL_SHARED_EVENT_INFO_EXT -> go @ImportMetalSharedEventInfoEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT -> go @PhysicalDeviceNonSeamlessCubeMapFeaturesEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT -> go @PhysicalDevicePipelineRobustnessFeaturesEXT
-  STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT -> go @PipelineRobustnessCreateInfoEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES_EXT -> go @PhysicalDevicePipelineRobustnessPropertiesEXT
-  STRUCTURE_TYPE_IMAGE_VIEW_SAMPLE_WEIGHT_CREATE_INFO_QCOM -> go @ImageViewSampleWeightCreateInfoQCOM
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM -> go @PhysicalDeviceImageProcessingFeaturesQCOM
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_PROPERTIES_QCOM -> go @PhysicalDeviceImageProcessingPropertiesQCOM
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM -> go @PhysicalDeviceTilePropertiesFeaturesQCOM
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_AMIGO_PROFILING_FEATURES_SEC -> go @PhysicalDeviceAmigoProfilingFeaturesSEC
-  STRUCTURE_TYPE_AMIGO_PROFILING_SUBMIT_INFO_SEC -> go @AmigoProfilingSubmitInfoSEC
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT -> go @PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT -> go @PhysicalDeviceDepthClampZeroOneFeaturesEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_ADDRESS_BINDING_REPORT_FEATURES_EXT -> go @PhysicalDeviceAddressBindingReportFeaturesEXT
-  STRUCTURE_TYPE_DEVICE_ADDRESS_BINDING_CALLBACK_DATA_EXT -> go @DeviceAddressBindingCallbackDataEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_FEATURES_NV -> go @PhysicalDeviceOpticalFlowFeaturesNV
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_PROPERTIES_NV -> go @PhysicalDeviceOpticalFlowPropertiesNV
-  STRUCTURE_TYPE_OPTICAL_FLOW_IMAGE_FORMAT_INFO_NV -> go @OpticalFlowImageFormatInfoNV
-  STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_PRIVATE_DATA_INFO_NV -> go @OpticalFlowSessionCreatePrivateDataInfoNV
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_FEATURES_EXT -> go @PhysicalDeviceFaultFeaturesEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT -> go @PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT
-  STRUCTURE_TYPE_DEPTH_BIAS_REPRESENTATION_INFO_EXT -> go @DepthBiasRepresentationInfoEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_PROPERTIES_ARM -> go @PhysicalDeviceShaderCoreBuiltinsPropertiesARM
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM -> go @PhysicalDeviceShaderCoreBuiltinsFeaturesARM
-  STRUCTURE_TYPE_FRAME_BOUNDARY_EXT -> go @FrameBoundaryEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAME_BOUNDARY_FEATURES_EXT -> go @PhysicalDeviceFrameBoundaryFeaturesEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_FEATURES_EXT -> go @PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT
-  STRUCTURE_TYPE_SURFACE_PRESENT_MODE_EXT -> go @SurfacePresentModeEXT
-  STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_EXT -> go @SurfacePresentScalingCapabilitiesEXT
-  STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_EXT -> go @SurfacePresentModeCompatibilityEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT -> go @PhysicalDeviceSwapchainMaintenance1FeaturesEXT
-  STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT -> go @SwapchainPresentFenceInfoEXT
-  STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT -> go @SwapchainPresentModesCreateInfoEXT
-  STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_EXT -> go @SwapchainPresentModeInfoEXT
-  STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT -> go @SwapchainPresentScalingCreateInfoEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_BIAS_CONTROL_FEATURES_EXT -> go @PhysicalDeviceDepthBiasControlFeaturesEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV -> go @PhysicalDeviceRayTracingInvocationReorderFeaturesNV
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV -> go @PhysicalDeviceRayTracingInvocationReorderPropertiesNV
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_FEATURES_NV -> go @PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_PROPERTIES_NV -> go @PhysicalDeviceExtendedSparseAddressSpacePropertiesNV
-  STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_LIST_LUNARG -> go @DirectDriverLoadingListLUNARG
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_VIEWPORTS_FEATURES_QCOM -> go @PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_POSITION_FETCH_FEATURES_KHR -> go @PhysicalDeviceRayTracingPositionFetchFeaturesKHR
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_ARM -> go @PhysicalDeviceShaderCorePropertiesARM
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_RENDER_AREAS_FEATURES_QCOM -> go @PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
-  STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_RENDER_AREAS_RENDER_PASS_BEGIN_INFO_QCOM -> go @MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM
-  STRUCTURE_TYPE_QUERY_LOW_LATENCY_SUPPORT_NV -> go @QueryLowLatencySupportNV
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT -> go @PhysicalDeviceShaderObjectFeaturesEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_PROPERTIES_EXT -> go @PhysicalDeviceShaderObjectPropertiesEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_FEATURES_EXT -> go @PhysicalDeviceShaderTileImageFeaturesEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_PROPERTIES_EXT -> go @PhysicalDeviceShaderTileImagePropertiesEXT
-  STRUCTURE_TYPE_IMPORT_SCREEN_BUFFER_INFO_QNX -> go @ImportScreenBufferInfoQNX
-  STRUCTURE_TYPE_SCREEN_BUFFER_FORMAT_PROPERTIES_QNX -> go @ScreenBufferFormatPropertiesQNX
-  STRUCTURE_TYPE_EXTERNAL_FORMAT_QNX -> go @ExternalFormatQNX
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCREEN_BUFFER_FEATURES_QNX -> go @PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_KHR -> go @PhysicalDeviceCooperativeMatrixFeaturesKHR
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_KHR -> go @PhysicalDeviceCooperativeMatrixPropertiesKHR
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ENQUEUE_PROPERTIES_AMDX -> go @PhysicalDeviceShaderEnqueuePropertiesAMDX
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ENQUEUE_FEATURES_AMDX -> go @PhysicalDeviceShaderEnqueueFeaturesAMDX
-  STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_NODE_CREATE_INFO_AMDX -> go @PipelineShaderStageNodeCreateInfoAMDX
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_ANTI_LAG_FEATURES_AMD -> go @PhysicalDeviceAntiLagFeaturesAMD
-  STRUCTURE_TYPE_BIND_MEMORY_STATUS_KHR -> go @BindMemoryStatusKHR
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_CLAMP_FEATURES_QCOM -> go @PhysicalDeviceCubicClampFeaturesQCOM
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_DEGAMMA_FEATURES_QCOM -> go @PhysicalDeviceYcbcrDegammaFeaturesQCOM
-  STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_YCBCR_DEGAMMA_CREATE_INFO_QCOM -> go @SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_WEIGHTS_FEATURES_QCOM -> go @PhysicalDeviceCubicWeightsFeaturesQCOM
-  STRUCTURE_TYPE_SAMPLER_CUBIC_WEIGHTS_CREATE_INFO_QCOM -> go @SamplerCubicWeightsCreateInfoQCOM
-  STRUCTURE_TYPE_BLIT_IMAGE_CUBIC_WEIGHTS_INFO_QCOM -> go @BlitImageCubicWeightsInfoQCOM
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_FEATURES_QCOM -> go @PhysicalDeviceImageProcessing2FeaturesQCOM
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_PROPERTIES_QCOM -> go @PhysicalDeviceImageProcessing2PropertiesQCOM
-  STRUCTURE_TYPE_SAMPLER_BLOCK_MATCH_WINDOW_CREATE_INFO_QCOM -> go @SamplerBlockMatchWindowCreateInfoQCOM
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_POOL_OVERALLOCATION_FEATURES_NV -> go @PhysicalDeviceDescriptorPoolOverallocationFeaturesNV
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_DRIVER_PROPERTIES_MSFT -> go @PhysicalDeviceLayeredDriverPropertiesMSFT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_PER_STAGE_DESCRIPTOR_SET_FEATURES_NV -> go @PhysicalDevicePerStageDescriptorSetFeaturesNV
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_FEATURES_ANDROID -> go @PhysicalDeviceExternalFormatResolveFeaturesANDROID
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_PROPERTIES_ANDROID -> go @PhysicalDeviceExternalFormatResolvePropertiesANDROID
-  STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_RESOLVE_PROPERTIES_ANDROID -> go @AndroidHardwareBufferFormatResolvePropertiesANDROID
-  STRUCTURE_TYPE_LATENCY_SUBMISSION_PRESENT_ID_NV -> go @LatencySubmissionPresentIdNV
-  STRUCTURE_TYPE_SWAPCHAIN_LATENCY_CREATE_INFO_NV -> go @SwapchainLatencyCreateInfoNV
-  STRUCTURE_TYPE_LATENCY_SURFACE_CAPABILITIES_NV -> go @LatencySurfaceCapabilitiesNV
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_FEATURES_NV -> go @PhysicalDeviceCudaKernelLaunchFeaturesNV
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_PROPERTIES_NV -> go @PhysicalDeviceCudaKernelLaunchPropertiesNV
-  STRUCTURE_TYPE_DEVICE_QUEUE_SHADER_CORE_CONTROL_CREATE_INFO_ARM -> go @DeviceQueueShaderCoreControlCreateInfoARM
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_FEATURES_ARM -> go @PhysicalDeviceSchedulingControlsFeaturesARM
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_PROPERTIES_ARM -> go @PhysicalDeviceSchedulingControlsPropertiesARM
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_RELAXED_LINE_RASTERIZATION_FEATURES_IMG -> go @PhysicalDeviceRelaxedLineRasterizationFeaturesIMG
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_FEATURES_ARM -> go @PhysicalDeviceRenderPassStripedFeaturesARM
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_PROPERTIES_ARM -> go @PhysicalDeviceRenderPassStripedPropertiesARM
-  STRUCTURE_TYPE_RENDER_PASS_STRIPE_BEGIN_INFO_ARM -> go @RenderPassStripeBeginInfoARM
-  STRUCTURE_TYPE_RENDER_PASS_STRIPE_SUBMIT_INFO_ARM -> go @RenderPassStripeSubmitInfoARM
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MAXIMAL_RECONVERGENCE_FEATURES_KHR -> go @PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES_KHR -> go @PhysicalDeviceShaderSubgroupRotateFeaturesKHR
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES_KHR -> go @PhysicalDeviceShaderExpectAssumeFeaturesKHR
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES_KHR -> go @PhysicalDeviceShaderFloatControls2FeaturesKHR
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES_KHR -> go @PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR
-  STRUCTURE_TYPE_RENDERING_ATTACHMENT_LOCATION_INFO_KHR -> go @RenderingAttachmentLocationInfoKHR
-  STRUCTURE_TYPE_RENDERING_INPUT_ATTACHMENT_INDEX_INFO_KHR -> go @RenderingInputAttachmentIndexInfoKHR
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_QUAD_CONTROL_FEATURES_KHR -> go @PhysicalDeviceShaderQuadControlFeaturesKHR
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT16_VECTOR_FEATURES_NV -> go @PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_MAP_MEMORY_PLACED_FEATURES_EXT -> go @PhysicalDeviceMapMemoryPlacedFeaturesEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_MAP_MEMORY_PLACED_PROPERTIES_EXT -> go @PhysicalDeviceMapMemoryPlacedPropertiesEXT
-  STRUCTURE_TYPE_MEMORY_MAP_PLACED_INFO_EXT -> go @MemoryMapPlacedInfoEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_RAW_ACCESS_CHAINS_FEATURES_NV -> go @PhysicalDeviceRawAccessChainsFeaturesNV
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_COMMAND_BUFFER_INHERITANCE_FEATURES_NV -> go @PhysicalDeviceCommandBufferInheritanceFeaturesNV
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_FEATURES_MESA -> go @PhysicalDeviceImageAlignmentControlFeaturesMESA
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_PROPERTIES_MESA -> go @PhysicalDeviceImageAlignmentControlPropertiesMESA
-  STRUCTURE_TYPE_IMAGE_ALIGNMENT_CONTROL_CREATE_INFO_MESA -> go @ImageAlignmentControlCreateInfoMESA
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_REPLICATED_COMPOSITES_FEATURES_EXT -> go @PhysicalDeviceShaderReplicatedCompositesFeaturesEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_EXT -> go @PhysicalDevicePresentModeFifoLatestReadyFeaturesEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_FEATURES_NV -> go @PhysicalDeviceCooperativeMatrix2FeaturesNV
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_PROPERTIES_NV -> go @PhysicalDeviceCooperativeMatrix2PropertiesNV
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_HDR_VIVID_FEATURES_HUAWEI -> go @PhysicalDeviceHdrVividFeaturesHUAWEI
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_ROBUSTNESS_FEATURES_EXT -> go @PhysicalDeviceVertexAttributeRobustnessFeaturesEXT
-  t -> throwIO $ IOError Nothing InvalidArgument "peekChainHead" ("Unrecognized struct type: " <> show t) Nothing Nothing
- where
-  go :: forall e . (Typeable e, FromCStruct e, ToCStruct e, Show e) => IO b
-  go =
-    let r = extends @a @e Proxy $ do
-          head' <- peekCStruct @e (castPtr p)
-          pure $ c head'
-    in  fromMaybe
-          (throwIO $ IOError
-            Nothing
-            InvalidArgument
-            "peekChainHead"
-            (  "Illegal struct extension of "
-            <> extensibleTypeName @a
-            <> " with "
-            <> show ty
-            )
-            Nothing
-            Nothing
-          )
-          r
-
-class Extensible (a :: [Type] -> Type) where
-  extensibleTypeName :: String
-  -- ^ For error reporting an invalid extension
-  getNext :: a es -> Chain es
-  setNext :: a ds -> Chain es -> a es
-  extends :: forall e b proxy. Typeable e => proxy e -> (Extends a e => b) -> Maybe b
-
-type family Chain (xs :: [a]) = (r :: a) | r -> xs where
-  Chain '[]    = ()
-  Chain (x:xs) = (x, Chain xs)
-
--- | A pattern synonym to separate the head of a struct chain from the
--- tail, use in conjunction with ':&' to extract several members.
---
--- @
--- Head{..} ::& () <- returningNoTail a b c
--- -- Equivalent to
--- Head{..} <- returningNoTail @'[] a b c
--- @
---
--- @
--- Head{..} ::& Foo{..} :& Bar{..} :& () <- returningWithTail a b c
--- @
---
--- @
--- myFun (Head{..} :&& Foo{..} :& ())
--- @
-pattern (::&) :: Extensible a => a es' -> Chain es -> a es
-pattern a ::& es <- (\a -> (a, getNext a) -> (a, es))
-  where a ::& es = setNext a es
-infix 6 ::&
-{-# complete (::&) :: BufferUsageFlags2CreateInfoKHR #-}
-{-# complete (::&) :: ShaderModuleCreateInfo #-}
-{-# complete (::&) :: ComputePipelineIndirectBufferInfoNV #-}
-{-# complete (::&) :: PipelineCreateFlags2CreateInfoKHR #-}
-{-# complete (::&) :: PipelineBinaryInfoKHR #-}
-{-# complete (::&) :: PipelineLayoutCreateInfo #-}
-{-# complete (::&) :: DisplaySurfaceStereoCreateInfoNV #-}
-{-# complete (::&) :: DisplayPresentInfoKHR #-}
-{-# complete (::&) :: DebugReportCallbackCreateInfoEXT #-}
-{-# complete (::&) :: ValidationFlagsEXT #-}
-{-# complete (::&) :: ValidationFeaturesEXT #-}
-{-# complete (::&) :: LayerSettingsCreateInfoEXT #-}
-{-# complete (::&) :: PipelineRasterizationStateRasterizationOrderAMD #-}
-{-# complete (::&) :: DedicatedAllocationImageCreateInfoNV #-}
-{-# complete (::&) :: DedicatedAllocationBufferCreateInfoNV #-}
-{-# complete (::&) :: DedicatedAllocationMemoryAllocateInfoNV #-}
-{-# complete (::&) :: ExternalMemoryImageCreateInfoNV #-}
-{-# complete (::&) :: ExportMemoryAllocateInfoNV #-}
-{-# complete (::&) :: ImportMemoryWin32HandleInfoNV #-}
-{-# complete (::&) :: ExportMemoryWin32HandleInfoNV #-}
-{-# complete (::&) :: Win32KeyedMutexAcquireReleaseInfoNV #-}
-{-# complete (::&) :: PhysicalDeviceDeviceGeneratedCommandsFeaturesNV #-}
-{-# complete (::&) :: PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV #-}
-{-# complete (::&) :: DevicePrivateDataCreateInfo #-}
-{-# complete (::&) :: PhysicalDevicePrivateDataFeatures #-}
-{-# complete (::&) :: PhysicalDeviceDeviceGeneratedCommandsPropertiesNV #-}
-{-# complete (::&) :: PhysicalDeviceMultiDrawPropertiesEXT #-}
-{-# complete (::&) :: GraphicsPipelineShaderGroupsCreateInfoNV #-}
-{-# complete (::&) :: PhysicalDeviceFeatures2 #-}
-{-# complete (::&) :: PhysicalDevicePushDescriptorPropertiesKHR #-}
-{-# complete (::&) :: PhysicalDeviceDriverProperties #-}
-{-# complete (::&) :: PresentRegionsKHR #-}
-{-# complete (::&) :: PhysicalDeviceVariablePointersFeatures #-}
-{-# complete (::&) :: PhysicalDeviceExternalImageFormatInfo #-}
-{-# complete (::&) :: ExternalImageFormatProperties #-}
-{-# complete (::&) :: PhysicalDeviceIDProperties #-}
-{-# complete (::&) :: ExternalMemoryImageCreateInfo #-}
-{-# complete (::&) :: ExternalMemoryBufferCreateInfo #-}
-{-# complete (::&) :: ExportMemoryAllocateInfo #-}
-{-# complete (::&) :: ImportMemoryWin32HandleInfoKHR #-}
-{-# complete (::&) :: ExportMemoryWin32HandleInfoKHR #-}
-{-# complete (::&) :: ImportMemoryZirconHandleInfoFUCHSIA #-}
-{-# complete (::&) :: ImportMemoryFdInfoKHR #-}
-{-# complete (::&) :: Win32KeyedMutexAcquireReleaseInfoKHR #-}
-{-# complete (::&) :: ExportSemaphoreCreateInfo #-}
-{-# complete (::&) :: ExportSemaphoreWin32HandleInfoKHR #-}
-{-# complete (::&) :: D3D12FenceSubmitInfoKHR #-}
-{-# complete (::&) :: ExportFenceCreateInfo #-}
-{-# complete (::&) :: ExportFenceWin32HandleInfoKHR #-}
-{-# complete (::&) :: PhysicalDeviceMultiviewFeatures #-}
-{-# complete (::&) :: PhysicalDeviceMultiviewProperties #-}
-{-# complete (::&) :: RenderPassMultiviewCreateInfo #-}
-{-# complete (::&) :: SwapchainCounterCreateInfoEXT #-}
-{-# complete (::&) :: MemoryAllocateFlagsInfo #-}
-{-# complete (::&) :: BindBufferMemoryDeviceGroupInfo #-}
-{-# complete (::&) :: BindImageMemoryDeviceGroupInfo #-}
-{-# complete (::&) :: DeviceGroupRenderPassBeginInfo #-}
-{-# complete (::&) :: DeviceGroupCommandBufferBeginInfo #-}
-{-# complete (::&) :: DeviceGroupSubmitInfo #-}
-{-# complete (::&) :: DeviceGroupBindSparseInfo #-}
-{-# complete (::&) :: ImageSwapchainCreateInfoKHR #-}
-{-# complete (::&) :: BindImageMemorySwapchainInfoKHR #-}
-{-# complete (::&) :: DeviceGroupPresentInfoKHR #-}
-{-# complete (::&) :: DeviceGroupDeviceCreateInfo #-}
-{-# complete (::&) :: DeviceGroupSwapchainCreateInfoKHR #-}
-{-# complete (::&) :: PhysicalDevicePresentIdFeaturesKHR #-}
-{-# complete (::&) :: PresentIdKHR #-}
-{-# complete (::&) :: PhysicalDevicePresentWaitFeaturesKHR #-}
-{-# complete (::&) :: HdrVividDynamicMetadataHUAWEI #-}
-{-# complete (::&) :: DisplayNativeHdrSurfaceCapabilitiesAMD #-}
-{-# complete (::&) :: SwapchainDisplayNativeHdrCreateInfoAMD #-}
-{-# complete (::&) :: PresentTimesInfoGOOGLE #-}
-{-# complete (::&) :: PipelineViewportWScalingStateCreateInfoNV #-}
-{-# complete (::&) :: PipelineViewportSwizzleStateCreateInfoNV #-}
-{-# complete (::&) :: PhysicalDeviceDiscardRectanglePropertiesEXT #-}
-{-# complete (::&) :: PipelineDiscardRectangleStateCreateInfoEXT #-}
-{-# complete (::&) :: PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX #-}
-{-# complete (::&) :: RenderPassInputAttachmentAspectCreateInfo #-}
-{-# complete (::&) :: DisplayModeStereoPropertiesNV #-}
-{-# complete (::&) :: SharedPresentSurfaceCapabilitiesKHR #-}
-{-# complete (::&) :: PhysicalDevice16BitStorageFeatures #-}
-{-# complete (::&) :: PhysicalDeviceSubgroupProperties #-}
-{-# complete (::&) :: PhysicalDeviceShaderSubgroupExtendedTypesFeatures #-}
-{-# complete (::&) :: PhysicalDevicePointClippingProperties #-}
-{-# complete (::&) :: MemoryDedicatedRequirements #-}
-{-# complete (::&) :: MemoryDedicatedAllocateInfo #-}
-{-# complete (::&) :: ImageViewUsageCreateInfo #-}
-{-# complete (::&) :: ImageViewSlicedCreateInfoEXT #-}
-{-# complete (::&) :: PipelineTessellationDomainOriginStateCreateInfo #-}
-{-# complete (::&) :: SamplerYcbcrConversionInfo #-}
-{-# complete (::&) :: BindImagePlaneMemoryInfo #-}
-{-# complete (::&) :: ImagePlaneMemoryRequirementsInfo #-}
-{-# complete (::&) :: PhysicalDeviceSamplerYcbcrConversionFeatures #-}
-{-# complete (::&) :: SamplerYcbcrConversionImageFormatProperties #-}
-{-# complete (::&) :: TextureLODGatherFormatPropertiesAMD #-}
-{-# complete (::&) :: ProtectedSubmitInfo #-}
-{-# complete (::&) :: PhysicalDeviceProtectedMemoryFeatures #-}
-{-# complete (::&) :: PhysicalDeviceProtectedMemoryProperties #-}
-{-# complete (::&) :: PipelineCoverageToColorStateCreateInfoNV #-}
-{-# complete (::&) :: PhysicalDeviceSamplerFilterMinmaxProperties #-}
-{-# complete (::&) :: SampleLocationsInfoEXT #-}
-{-# complete (::&) :: RenderPassSampleLocationsBeginInfoEXT #-}
-{-# complete (::&) :: PipelineSampleLocationsStateCreateInfoEXT #-}
-{-# complete (::&) :: PhysicalDeviceSampleLocationsPropertiesEXT #-}
-{-# complete (::&) :: SamplerReductionModeCreateInfo #-}
-{-# complete (::&) :: PhysicalDeviceBlendOperationAdvancedFeaturesEXT #-}
-{-# complete (::&) :: PhysicalDeviceMultiDrawFeaturesEXT #-}
-{-# complete (::&) :: PhysicalDeviceBlendOperationAdvancedPropertiesEXT #-}
-{-# complete (::&) :: PipelineColorBlendAdvancedStateCreateInfoEXT #-}
-{-# complete (::&) :: PhysicalDeviceInlineUniformBlockFeatures #-}
-{-# complete (::&) :: PhysicalDeviceInlineUniformBlockProperties #-}
-{-# complete (::&) :: WriteDescriptorSetInlineUniformBlock #-}
-{-# complete (::&) :: DescriptorPoolInlineUniformBlockCreateInfo #-}
-{-# complete (::&) :: PipelineCoverageModulationStateCreateInfoNV #-}
-{-# complete (::&) :: ImageFormatListCreateInfo #-}
-{-# complete (::&) :: ShaderModuleValidationCacheCreateInfoEXT #-}
-{-# complete (::&) :: PhysicalDeviceMaintenance3Properties #-}
-{-# complete (::&) :: PhysicalDeviceMaintenance4Features #-}
-{-# complete (::&) :: PhysicalDeviceMaintenance4Properties #-}
-{-# complete (::&) :: PhysicalDeviceMaintenance5FeaturesKHR #-}
-{-# complete (::&) :: PhysicalDeviceMaintenance5PropertiesKHR #-}
-{-# complete (::&) :: PhysicalDeviceMaintenance6FeaturesKHR #-}
-{-# complete (::&) :: PhysicalDeviceMaintenance6PropertiesKHR #-}
-{-# complete (::&) :: PhysicalDeviceMaintenance7FeaturesKHR #-}
-{-# complete (::&) :: PhysicalDeviceMaintenance7PropertiesKHR #-}
-{-# complete (::&) :: PhysicalDeviceLayeredApiPropertiesListKHR #-}
-{-# complete (::&) :: PhysicalDeviceLayeredApiVulkanPropertiesKHR #-}
-{-# complete (::&) :: PhysicalDeviceShaderDrawParametersFeatures #-}
-{-# complete (::&) :: PhysicalDeviceShaderFloat16Int8Features #-}
-{-# complete (::&) :: PhysicalDeviceFloatControlsProperties #-}
-{-# complete (::&) :: PhysicalDeviceHostQueryResetFeatures #-}
-{-# complete (::&) :: DeviceQueueGlobalPriorityCreateInfoKHR #-}
-{-# complete (::&) :: PhysicalDeviceGlobalPriorityQueryFeaturesKHR #-}
-{-# complete (::&) :: QueueFamilyGlobalPriorityPropertiesKHR #-}
-{-# complete (::&) :: DebugUtilsObjectNameInfoEXT #-}
-{-# complete (::&) :: DebugUtilsMessengerCreateInfoEXT #-}
-{-# complete (::&) :: PhysicalDeviceDeviceMemoryReportFeaturesEXT #-}
-{-# complete (::&) :: DeviceDeviceMemoryReportCreateInfoEXT #-}
-{-# complete (::&) :: ImportMemoryHostPointerInfoEXT #-}
-{-# complete (::&) :: PhysicalDeviceExternalMemoryHostPropertiesEXT #-}
-{-# complete (::&) :: PhysicalDeviceConservativeRasterizationPropertiesEXT #-}
-{-# complete (::&) :: PhysicalDeviceShaderCorePropertiesAMD #-}
-{-# complete (::&) :: PhysicalDeviceShaderCoreProperties2AMD #-}
-{-# complete (::&) :: PipelineRasterizationConservativeStateCreateInfoEXT #-}
-{-# complete (::&) :: PhysicalDeviceDescriptorIndexingFeatures #-}
-{-# complete (::&) :: PhysicalDeviceDescriptorIndexingProperties #-}
-{-# complete (::&) :: DescriptorSetLayoutBindingFlagsCreateInfo #-}
-{-# complete (::&) :: DescriptorSetVariableDescriptorCountAllocateInfo #-}
-{-# complete (::&) :: DescriptorSetVariableDescriptorCountLayoutSupport #-}
-{-# complete (::&) :: PhysicalDeviceTimelineSemaphoreFeatures #-}
-{-# complete (::&) :: PhysicalDeviceTimelineSemaphoreProperties #-}
-{-# complete (::&) :: SemaphoreTypeCreateInfo #-}
-{-# complete (::&) :: TimelineSemaphoreSubmitInfo #-}
-{-# complete (::&) :: PipelineVertexInputDivisorStateCreateInfoKHR #-}
-{-# complete (::&) :: PhysicalDeviceVertexAttributeDivisorPropertiesEXT #-}
-{-# complete (::&) :: PhysicalDeviceVertexAttributeDivisorPropertiesKHR #-}
-{-# complete (::&) :: PhysicalDevicePCIBusInfoPropertiesEXT #-}
-{-# complete (::&) :: ImportAndroidHardwareBufferInfoANDROID #-}
-{-# complete (::&) :: AndroidHardwareBufferUsageANDROID #-}
-{-# complete (::&) :: AndroidHardwareBufferFormatPropertiesANDROID #-}
-{-# complete (::&) :: CommandBufferInheritanceConditionalRenderingInfoEXT #-}
-{-# complete (::&) :: ExternalFormatANDROID #-}
-{-# complete (::&) :: PhysicalDevice8BitStorageFeatures #-}
-{-# complete (::&) :: PhysicalDeviceConditionalRenderingFeaturesEXT #-}
-{-# complete (::&) :: PhysicalDeviceVulkanMemoryModelFeatures #-}
-{-# complete (::&) :: PhysicalDeviceShaderAtomicInt64Features #-}
-{-# complete (::&) :: PhysicalDeviceShaderAtomicFloatFeaturesEXT #-}
-{-# complete (::&) :: PhysicalDeviceShaderAtomicFloat2FeaturesEXT #-}
-{-# complete (::&) :: PhysicalDeviceVertexAttributeDivisorFeaturesKHR #-}
-{-# complete (::&) :: QueueFamilyCheckpointPropertiesNV #-}
-{-# complete (::&) :: PhysicalDeviceDepthStencilResolveProperties #-}
-{-# complete (::&) :: SubpassDescriptionDepthStencilResolve #-}
-{-# complete (::&) :: ImageViewASTCDecodeModeEXT #-}
-{-# complete (::&) :: PhysicalDeviceASTCDecodeFeaturesEXT #-}
-{-# complete (::&) :: PhysicalDeviceTransformFeedbackFeaturesEXT #-}
-{-# complete (::&) :: PhysicalDeviceTransformFeedbackPropertiesEXT #-}
-{-# complete (::&) :: PipelineRasterizationStateStreamCreateInfoEXT #-}
-{-# complete (::&) :: PhysicalDeviceRepresentativeFragmentTestFeaturesNV #-}
-{-# complete (::&) :: PipelineRepresentativeFragmentTestStateCreateInfoNV #-}
-{-# complete (::&) :: PhysicalDeviceExclusiveScissorFeaturesNV #-}
-{-# complete (::&) :: PipelineViewportExclusiveScissorStateCreateInfoNV #-}
-{-# complete (::&) :: PhysicalDeviceCornerSampledImageFeaturesNV #-}
-{-# complete (::&) :: PhysicalDeviceComputeShaderDerivativesFeaturesKHR #-}
-{-# complete (::&) :: PhysicalDeviceComputeShaderDerivativesPropertiesKHR #-}
-{-# complete (::&) :: PhysicalDeviceShaderImageFootprintFeaturesNV #-}
-{-# complete (::&) :: PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV #-}
-{-# complete (::&) :: PhysicalDeviceCopyMemoryIndirectFeaturesNV #-}
-{-# complete (::&) :: PhysicalDeviceCopyMemoryIndirectPropertiesNV #-}
-{-# complete (::&) :: PhysicalDeviceMemoryDecompressionFeaturesNV #-}
-{-# complete (::&) :: PhysicalDeviceMemoryDecompressionPropertiesNV #-}
-{-# complete (::&) :: PipelineViewportShadingRateImageStateCreateInfoNV #-}
-{-# complete (::&) :: PhysicalDeviceShadingRateImageFeaturesNV #-}
-{-# complete (::&) :: PhysicalDeviceShadingRateImagePropertiesNV #-}
-{-# complete (::&) :: PhysicalDeviceInvocationMaskFeaturesHUAWEI #-}
-{-# complete (::&) :: PipelineViewportCoarseSampleOrderStateCreateInfoNV #-}
-{-# complete (::&) :: PhysicalDeviceMeshShaderFeaturesNV #-}
-{-# complete (::&) :: PhysicalDeviceMeshShaderPropertiesNV #-}
-{-# complete (::&) :: PhysicalDeviceMeshShaderFeaturesEXT #-}
-{-# complete (::&) :: PhysicalDeviceMeshShaderPropertiesEXT #-}
-{-# complete (::&) :: WriteDescriptorSetAccelerationStructureKHR #-}
-{-# complete (::&) :: WriteDescriptorSetAccelerationStructureNV #-}
-{-# complete (::&) :: PhysicalDeviceAccelerationStructureFeaturesKHR #-}
-{-# complete (::&) :: PhysicalDeviceRayTracingPipelineFeaturesKHR #-}
-{-# complete (::&) :: PhysicalDeviceRayQueryFeaturesKHR #-}
-{-# complete (::&) :: PhysicalDeviceAccelerationStructurePropertiesKHR #-}
-{-# complete (::&) :: PhysicalDeviceRayTracingPipelinePropertiesKHR #-}
-{-# complete (::&) :: PhysicalDeviceRayTracingPropertiesNV #-}
-{-# complete (::&) :: PhysicalDeviceRayTracingMaintenance1FeaturesKHR #-}
-{-# complete (::&) :: DrmFormatModifierPropertiesListEXT #-}
-{-# complete (::&) :: PhysicalDeviceImageDrmFormatModifierInfoEXT #-}
-{-# complete (::&) :: ImageDrmFormatModifierListCreateInfoEXT #-}
-{-# complete (::&) :: ImageDrmFormatModifierExplicitCreateInfoEXT #-}
-{-# complete (::&) :: ImageStencilUsageCreateInfo #-}
-{-# complete (::&) :: DeviceMemoryOverallocationCreateInfoAMD #-}
-{-# complete (::&) :: PhysicalDeviceFragmentDensityMapFeaturesEXT #-}
-{-# complete (::&) :: PhysicalDeviceFragmentDensityMap2FeaturesEXT #-}
-{-# complete (::&) :: PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM #-}
-{-# complete (::&) :: PhysicalDeviceFragmentDensityMapPropertiesEXT #-}
-{-# complete (::&) :: PhysicalDeviceFragmentDensityMap2PropertiesEXT #-}
-{-# complete (::&) :: PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM #-}
-{-# complete (::&) :: RenderPassFragmentDensityMapCreateInfoEXT #-}
-{-# complete (::&) :: SubpassFragmentDensityMapOffsetEndInfoQCOM #-}
-{-# complete (::&) :: PhysicalDeviceScalarBlockLayoutFeatures #-}
-{-# complete (::&) :: SurfaceProtectedCapabilitiesKHR #-}
-{-# complete (::&) :: PhysicalDeviceUniformBufferStandardLayoutFeatures #-}
-{-# complete (::&) :: PhysicalDeviceDepthClipEnableFeaturesEXT #-}
-{-# complete (::&) :: PipelineRasterizationDepthClipStateCreateInfoEXT #-}
-{-# complete (::&) :: PhysicalDeviceMemoryBudgetPropertiesEXT #-}
-{-# complete (::&) :: PhysicalDeviceMemoryPriorityFeaturesEXT #-}
-{-# complete (::&) :: MemoryPriorityAllocateInfoEXT #-}
-{-# complete (::&) :: PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT #-}
-{-# complete (::&) :: PhysicalDeviceBufferDeviceAddressFeatures #-}
-{-# complete (::&) :: PhysicalDeviceBufferDeviceAddressFeaturesEXT #-}
-{-# complete (::&) :: BufferOpaqueCaptureAddressCreateInfo #-}
-{-# complete (::&) :: BufferDeviceAddressCreateInfoEXT #-}
-{-# complete (::&) :: PhysicalDeviceImageViewImageFormatInfoEXT #-}
-{-# complete (::&) :: FilterCubicImageViewImageFormatPropertiesEXT #-}
-{-# complete (::&) :: PhysicalDeviceImagelessFramebufferFeatures #-}
-{-# complete (::&) :: FramebufferAttachmentsCreateInfo #-}
-{-# complete (::&) :: RenderPassAttachmentBeginInfo #-}
-{-# complete (::&) :: PhysicalDeviceTextureCompressionASTCHDRFeatures #-}
-{-# complete (::&) :: PhysicalDeviceCooperativeMatrixFeaturesNV #-}
-{-# complete (::&) :: PhysicalDeviceCooperativeMatrixPropertiesNV #-}
-{-# complete (::&) :: PhysicalDeviceYcbcrImageArraysFeaturesEXT #-}
-{-# complete (::&) :: PresentFrameTokenGGP #-}
-{-# complete (::&) :: PipelineCreationFeedbackCreateInfo #-}
-{-# complete (::&) :: SurfaceFullScreenExclusiveInfoEXT #-}
-{-# complete (::&) :: SurfaceFullScreenExclusiveWin32InfoEXT #-}
-{-# complete (::&) :: SurfaceCapabilitiesFullScreenExclusiveEXT #-}
-{-# complete (::&) :: PhysicalDevicePresentBarrierFeaturesNV #-}
-{-# complete (::&) :: SurfaceCapabilitiesPresentBarrierNV #-}
-{-# complete (::&) :: SwapchainPresentBarrierCreateInfoNV #-}
-{-# complete (::&) :: PhysicalDevicePerformanceQueryFeaturesKHR #-}
-{-# complete (::&) :: PhysicalDevicePerformanceQueryPropertiesKHR #-}
-{-# complete (::&) :: QueryPoolPerformanceCreateInfoKHR #-}
-{-# complete (::&) :: PerformanceQuerySubmitInfoKHR #-}
-{-# complete (::&) :: PhysicalDeviceCoverageReductionModeFeaturesNV #-}
-{-# complete (::&) :: PipelineCoverageReductionStateCreateInfoNV #-}
-{-# complete (::&) :: PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL #-}
-{-# complete (::&) :: QueryPoolPerformanceQueryCreateInfoINTEL #-}
-{-# complete (::&) :: PhysicalDeviceShaderClockFeaturesKHR #-}
-{-# complete (::&) :: PhysicalDeviceIndexTypeUint8FeaturesKHR #-}
-{-# complete (::&) :: PhysicalDeviceShaderSMBuiltinsPropertiesNV #-}
-{-# complete (::&) :: PhysicalDeviceShaderSMBuiltinsFeaturesNV #-}
-{-# complete (::&) :: PhysicalDeviceFragmentShaderInterlockFeaturesEXT #-}
-{-# complete (::&) :: PhysicalDeviceSeparateDepthStencilLayoutsFeatures #-}
-{-# complete (::&) :: AttachmentReferenceStencilLayout #-}
-{-# complete (::&) :: PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT #-}
-{-# complete (::&) :: AttachmentDescriptionStencilLayout #-}
-{-# complete (::&) :: PhysicalDevicePipelineExecutablePropertiesFeaturesKHR #-}
-{-# complete (::&) :: PhysicalDeviceShaderDemoteToHelperInvocationFeatures #-}
-{-# complete (::&) :: PhysicalDeviceTexelBufferAlignmentFeaturesEXT #-}
-{-# complete (::&) :: PhysicalDeviceTexelBufferAlignmentProperties #-}
-{-# complete (::&) :: PhysicalDeviceSubgroupSizeControlFeatures #-}
-{-# complete (::&) :: PhysicalDeviceSubgroupSizeControlProperties #-}
-{-# complete (::&) :: PipelineShaderStageRequiredSubgroupSizeCreateInfo #-}
-{-# complete (::&) :: SubpassShadingPipelineCreateInfoHUAWEI #-}
-{-# complete (::&) :: PhysicalDeviceSubpassShadingPropertiesHUAWEI #-}
-{-# complete (::&) :: PhysicalDeviceClusterCullingShaderPropertiesHUAWEI #-}
-{-# complete (::&) :: MemoryOpaqueCaptureAddressAllocateInfo #-}
-{-# complete (::&) :: PhysicalDeviceLineRasterizationFeaturesKHR #-}
-{-# complete (::&) :: PhysicalDeviceLineRasterizationPropertiesKHR #-}
-{-# complete (::&) :: PipelineRasterizationLineStateCreateInfoKHR #-}
-{-# complete (::&) :: PhysicalDevicePipelineCreationCacheControlFeatures #-}
-{-# complete (::&) :: PhysicalDeviceVulkan11Features #-}
-{-# complete (::&) :: PhysicalDeviceVulkan11Properties #-}
-{-# complete (::&) :: PhysicalDeviceVulkan12Features #-}
-{-# complete (::&) :: PhysicalDeviceVulkan12Properties #-}
-{-# complete (::&) :: PhysicalDeviceVulkan13Features #-}
-{-# complete (::&) :: PhysicalDeviceVulkan13Properties #-}
-{-# complete (::&) :: PipelineCompilerControlCreateInfoAMD #-}
-{-# complete (::&) :: PhysicalDeviceCoherentMemoryFeaturesAMD #-}
-{-# complete (::&) :: SamplerCustomBorderColorCreateInfoEXT #-}
-{-# complete (::&) :: PhysicalDeviceCustomBorderColorPropertiesEXT #-}
-{-# complete (::&) :: PhysicalDeviceCustomBorderColorFeaturesEXT #-}
-{-# complete (::&) :: SamplerBorderColorComponentMappingCreateInfoEXT #-}
-{-# complete (::&) :: PhysicalDeviceBorderColorSwizzleFeaturesEXT #-}
-{-# complete (::&) :: PipelineLibraryCreateInfoKHR #-}
-{-# complete (::&) :: PhysicalDeviceExtendedDynamicStateFeaturesEXT #-}
-{-# complete (::&) :: PhysicalDeviceExtendedDynamicState2FeaturesEXT #-}
-{-# complete (::&) :: PhysicalDeviceExtendedDynamicState3FeaturesEXT #-}
-{-# complete (::&) :: PhysicalDeviceExtendedDynamicState3PropertiesEXT #-}
-{-# complete (::&) :: RenderPassTransformBeginInfoQCOM #-}
-{-# complete (::&) :: CopyCommandTransformInfoQCOM #-}
-{-# complete (::&) :: CommandBufferInheritanceRenderPassTransformInfoQCOM #-}
-{-# complete (::&) :: PhysicalDeviceDiagnosticsConfigFeaturesNV #-}
-{-# complete (::&) :: DeviceDiagnosticsConfigCreateInfoNV #-}
-{-# complete (::&) :: PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures #-}
-{-# complete (::&) :: PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR #-}
-{-# complete (::&) :: PhysicalDeviceRobustness2FeaturesEXT #-}
-{-# complete (::&) :: PhysicalDeviceRobustness2PropertiesEXT #-}
-{-# complete (::&) :: PhysicalDeviceImageRobustnessFeatures #-}
-{-# complete (::&) :: PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR #-}
-{-# complete (::&) :: PhysicalDevicePortabilitySubsetFeaturesKHR #-}
-{-# complete (::&) :: PhysicalDevicePortabilitySubsetPropertiesKHR #-}
-{-# complete (::&) :: PhysicalDevice4444FormatsFeaturesEXT #-}
-{-# complete (::&) :: PhysicalDeviceSubpassShadingFeaturesHUAWEI #-}
-{-# complete (::&) :: PhysicalDeviceClusterCullingShaderFeaturesHUAWEI #-}
-{-# complete (::&) :: PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI #-}
-{-# complete (::&) :: PhysicalDeviceShaderImageAtomicInt64FeaturesEXT #-}
-{-# complete (::&) :: FragmentShadingRateAttachmentInfoKHR #-}
-{-# complete (::&) :: PipelineFragmentShadingRateStateCreateInfoKHR #-}
-{-# complete (::&) :: PhysicalDeviceFragmentShadingRateFeaturesKHR #-}
-{-# complete (::&) :: PhysicalDeviceFragmentShadingRatePropertiesKHR #-}
-{-# complete (::&) :: PhysicalDeviceShaderTerminateInvocationFeatures #-}
-{-# complete (::&) :: PhysicalDeviceFragmentShadingRateEnumsFeaturesNV #-}
-{-# complete (::&) :: PhysicalDeviceFragmentShadingRateEnumsPropertiesNV #-}
-{-# complete (::&) :: PipelineFragmentShadingRateEnumStateCreateInfoNV #-}
-{-# complete (::&) :: PhysicalDeviceImage2DViewOf3DFeaturesEXT #-}
-{-# complete (::&) :: PhysicalDeviceImageSlicedViewOf3DFeaturesEXT #-}
-{-# complete (::&) :: PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT #-}
-{-# complete (::&) :: PhysicalDeviceLegacyVertexAttributesFeaturesEXT #-}
-{-# complete (::&) :: PhysicalDeviceLegacyVertexAttributesPropertiesEXT #-}
-{-# complete (::&) :: PhysicalDeviceMutableDescriptorTypeFeaturesEXT #-}
-{-# complete (::&) :: MutableDescriptorTypeCreateInfoEXT #-}
-{-# complete (::&) :: PhysicalDeviceDepthClipControlFeaturesEXT #-}
-{-# complete (::&) :: PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT #-}
-{-# complete (::&) :: PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT #-}
-{-# complete (::&) :: GeneratedCommandsPipelineInfoEXT #-}
-{-# complete (::&) :: GeneratedCommandsShaderInfoEXT #-}
-{-# complete (::&) :: PipelineViewportDepthClipControlCreateInfoEXT #-}
-{-# complete (::&) :: PhysicalDeviceDepthClampControlFeaturesEXT #-}
-{-# complete (::&) :: PipelineViewportDepthClampControlCreateInfoEXT #-}
-{-# complete (::&) :: PhysicalDeviceVertexInputDynamicStateFeaturesEXT #-}
-{-# complete (::&) :: PhysicalDeviceExternalMemoryRDMAFeaturesNV #-}
-{-# complete (::&) :: PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR #-}
-{-# complete (::&) :: PhysicalDeviceColorWriteEnableFeaturesEXT #-}
-{-# complete (::&) :: PipelineColorWriteCreateInfoEXT #-}
-{-# complete (::&) :: MemoryBarrier2 #-}
-{-# complete (::&) :: QueueFamilyCheckpointProperties2NV #-}
-{-# complete (::&) :: PhysicalDeviceSynchronization2Features #-}
-{-# complete (::&) :: PhysicalDeviceHostImageCopyFeaturesEXT #-}
-{-# complete (::&) :: PhysicalDeviceHostImageCopyPropertiesEXT #-}
-{-# complete (::&) :: SubresourceHostMemcpySizeEXT #-}
-{-# complete (::&) :: HostImageCopyDevicePerformanceQueryEXT #-}
-{-# complete (::&) :: PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT #-}
-{-# complete (::&) :: PhysicalDeviceLegacyDitheringFeaturesEXT #-}
-{-# complete (::&) :: PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT #-}
-{-# complete (::&) :: SubpassResolvePerformanceQueryEXT #-}
-{-# complete (::&) :: MultisampledRenderToSingleSampledInfoEXT #-}
-{-# complete (::&) :: PhysicalDevicePipelineProtectedAccessFeaturesEXT #-}
-{-# complete (::&) :: PhysicalDeviceInheritedViewportScissorFeaturesNV #-}
-{-# complete (::&) :: CommandBufferInheritanceViewportScissorInfoNV #-}
-{-# complete (::&) :: PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT #-}
-{-# complete (::&) :: PhysicalDeviceProvokingVertexFeaturesEXT #-}
-{-# complete (::&) :: PhysicalDeviceProvokingVertexPropertiesEXT #-}
-{-# complete (::&) :: PipelineRasterizationProvokingVertexStateCreateInfoEXT #-}
-{-# complete (::&) :: CuModuleTexturingModeCreateInfoNVX #-}
-{-# complete (::&) :: PhysicalDeviceDescriptorBufferFeaturesEXT #-}
-{-# complete (::&) :: PhysicalDeviceDescriptorBufferPropertiesEXT #-}
-{-# complete (::&) :: PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT #-}
-{-# complete (::&) :: DescriptorBufferBindingPushDescriptorBufferHandleEXT #-}
-{-# complete (::&) :: OpaqueCaptureDescriptorDataCreateInfoEXT #-}
-{-# complete (::&) :: PhysicalDeviceShaderIntegerDotProductFeatures #-}
-{-# complete (::&) :: PhysicalDeviceShaderIntegerDotProductProperties #-}
-{-# complete (::&) :: PhysicalDeviceDrmPropertiesEXT #-}
-{-# complete (::&) :: PhysicalDeviceFragmentShaderBarycentricFeaturesKHR #-}
-{-# complete (::&) :: PhysicalDeviceFragmentShaderBarycentricPropertiesKHR #-}
-{-# complete (::&) :: PhysicalDeviceRayTracingMotionBlurFeaturesNV #-}
-{-# complete (::&) :: PhysicalDeviceRayTracingValidationFeaturesNV #-}
-{-# complete (::&) :: AccelerationStructureGeometryMotionTrianglesDataNV #-}
-{-# complete (::&) :: AccelerationStructureMotionInfoNV #-}
-{-# complete (::&) :: ImportMemoryBufferCollectionFUCHSIA #-}
-{-# complete (::&) :: BufferCollectionImageCreateInfoFUCHSIA #-}
-{-# complete (::&) :: BufferCollectionBufferCreateInfoFUCHSIA #-}
-{-# complete (::&) :: PhysicalDeviceRGBA10X6FormatsFeaturesEXT #-}
-{-# complete (::&) :: FormatProperties3 #-}
-{-# complete (::&) :: DrmFormatModifierPropertiesList2EXT #-}
-{-# complete (::&) :: AndroidHardwareBufferFormatProperties2ANDROID #-}
-{-# complete (::&) :: PipelineRenderingCreateInfo #-}
-{-# complete (::&) :: RenderingFragmentShadingRateAttachmentInfoKHR #-}
-{-# complete (::&) :: RenderingFragmentDensityMapAttachmentInfoEXT #-}
-{-# complete (::&) :: PhysicalDeviceDynamicRenderingFeatures #-}
-{-# complete (::&) :: CommandBufferInheritanceRenderingInfo #-}
-{-# complete (::&) :: AttachmentSampleCountInfoAMD #-}
-{-# complete (::&) :: MultiviewPerViewAttributesInfoNVX #-}
-{-# complete (::&) :: PhysicalDeviceImageViewMinLodFeaturesEXT #-}
-{-# complete (::&) :: ImageViewMinLodCreateInfoEXT #-}
-{-# complete (::&) :: PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT #-}
-{-# complete (::&) :: PhysicalDeviceLinearColorAttachmentFeaturesNV #-}
-{-# complete (::&) :: PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT #-}
-{-# complete (::&) :: PhysicalDevicePipelineBinaryFeaturesKHR #-}
-{-# complete (::&) :: DevicePipelineBinaryInternalCacheControlKHR #-}
-{-# complete (::&) :: PhysicalDevicePipelineBinaryPropertiesKHR #-}
-{-# complete (::&) :: PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT #-}
-{-# complete (::&) :: GraphicsPipelineLibraryCreateInfoEXT #-}
-{-# complete (::&) :: PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE #-}
-{-# complete (::&) :: PhysicalDeviceNestedCommandBufferFeaturesEXT #-}
-{-# complete (::&) :: PhysicalDeviceNestedCommandBufferPropertiesEXT #-}
-{-# complete (::&) :: PhysicalDeviceShaderModuleIdentifierFeaturesEXT #-}
-{-# complete (::&) :: PhysicalDeviceShaderModuleIdentifierPropertiesEXT #-}
-{-# complete (::&) :: PipelineShaderStageModuleIdentifierCreateInfoEXT #-}
-{-# complete (::&) :: ImageCompressionControlEXT #-}
-{-# complete (::&) :: PhysicalDeviceImageCompressionControlFeaturesEXT #-}
-{-# complete (::&) :: ImageCompressionPropertiesEXT #-}
-{-# complete (::&) :: PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT #-}
-{-# complete (::&) :: RenderPassCreationControlEXT #-}
-{-# complete (::&) :: RenderPassCreationFeedbackCreateInfoEXT #-}
-{-# complete (::&) :: RenderPassSubpassFeedbackCreateInfoEXT #-}
-{-# complete (::&) :: PhysicalDeviceSubpassMergeFeedbackFeaturesEXT #-}
-{-# complete (::&) :: PhysicalDeviceOpacityMicromapFeaturesEXT #-}
-{-# complete (::&) :: PhysicalDeviceOpacityMicromapPropertiesEXT #-}
-{-# complete (::&) :: AccelerationStructureTrianglesOpacityMicromapEXT #-}
-{-# complete (::&) :: PhysicalDeviceDisplacementMicromapFeaturesNV #-}
-{-# complete (::&) :: PhysicalDeviceDisplacementMicromapPropertiesNV #-}
-{-# complete (::&) :: AccelerationStructureTrianglesDisplacementMicromapNV #-}
-{-# complete (::&) :: PhysicalDevicePipelinePropertiesFeaturesEXT #-}
-{-# complete (::&) :: PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD #-}
-{-# complete (::&) :: ExternalMemoryAcquireUnmodifiedEXT #-}
-{-# complete (::&) :: ExportMetalObjectCreateInfoEXT #-}
-{-# complete (::&) :: ExportMetalDeviceInfoEXT #-}
-{-# complete (::&) :: ExportMetalCommandQueueInfoEXT #-}
-{-# complete (::&) :: ExportMetalBufferInfoEXT #-}
-{-# complete (::&) :: ImportMetalBufferInfoEXT #-}
-{-# complete (::&) :: ExportMetalTextureInfoEXT #-}
-{-# complete (::&) :: ImportMetalTextureInfoEXT #-}
-{-# complete (::&) :: ExportMetalIOSurfaceInfoEXT #-}
-{-# complete (::&) :: ImportMetalIOSurfaceInfoEXT #-}
-{-# complete (::&) :: ExportMetalSharedEventInfoEXT #-}
-{-# complete (::&) :: ImportMetalSharedEventInfoEXT #-}
-{-# complete (::&) :: PhysicalDeviceNonSeamlessCubeMapFeaturesEXT #-}
-{-# complete (::&) :: PhysicalDevicePipelineRobustnessFeaturesEXT #-}
-{-# complete (::&) :: PipelineRobustnessCreateInfoEXT #-}
-{-# complete (::&) :: PhysicalDevicePipelineRobustnessPropertiesEXT #-}
-{-# complete (::&) :: ImageViewSampleWeightCreateInfoQCOM #-}
-{-# complete (::&) :: PhysicalDeviceImageProcessingFeaturesQCOM #-}
-{-# complete (::&) :: PhysicalDeviceImageProcessingPropertiesQCOM #-}
-{-# complete (::&) :: PhysicalDeviceTilePropertiesFeaturesQCOM #-}
-{-# complete (::&) :: PhysicalDeviceAmigoProfilingFeaturesSEC #-}
-{-# complete (::&) :: AmigoProfilingSubmitInfoSEC #-}
-{-# complete (::&) :: PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT #-}
-{-# complete (::&) :: PhysicalDeviceDepthClampZeroOneFeaturesEXT #-}
-{-# complete (::&) :: PhysicalDeviceAddressBindingReportFeaturesEXT #-}
-{-# complete (::&) :: DeviceAddressBindingCallbackDataEXT #-}
-{-# complete (::&) :: PhysicalDeviceOpticalFlowFeaturesNV #-}
-{-# complete (::&) :: PhysicalDeviceOpticalFlowPropertiesNV #-}
-{-# complete (::&) :: OpticalFlowImageFormatInfoNV #-}
-{-# complete (::&) :: OpticalFlowSessionCreatePrivateDataInfoNV #-}
-{-# complete (::&) :: PhysicalDeviceFaultFeaturesEXT #-}
-{-# complete (::&) :: PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT #-}
-{-# complete (::&) :: DepthBiasRepresentationInfoEXT #-}
-{-# complete (::&) :: PhysicalDeviceShaderCoreBuiltinsPropertiesARM #-}
-{-# complete (::&) :: PhysicalDeviceShaderCoreBuiltinsFeaturesARM #-}
-{-# complete (::&) :: FrameBoundaryEXT #-}
-{-# complete (::&) :: PhysicalDeviceFrameBoundaryFeaturesEXT #-}
-{-# complete (::&) :: PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT #-}
-{-# complete (::&) :: SurfacePresentModeEXT #-}
-{-# complete (::&) :: SurfacePresentScalingCapabilitiesEXT #-}
-{-# complete (::&) :: SurfacePresentModeCompatibilityEXT #-}
-{-# complete (::&) :: PhysicalDeviceSwapchainMaintenance1FeaturesEXT #-}
-{-# complete (::&) :: SwapchainPresentFenceInfoEXT #-}
-{-# complete (::&) :: SwapchainPresentModesCreateInfoEXT #-}
-{-# complete (::&) :: SwapchainPresentModeInfoEXT #-}
-{-# complete (::&) :: SwapchainPresentScalingCreateInfoEXT #-}
-{-# complete (::&) :: PhysicalDeviceDepthBiasControlFeaturesEXT #-}
-{-# complete (::&) :: PhysicalDeviceRayTracingInvocationReorderFeaturesNV #-}
-{-# complete (::&) :: PhysicalDeviceRayTracingInvocationReorderPropertiesNV #-}
-{-# complete (::&) :: PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV #-}
-{-# complete (::&) :: PhysicalDeviceExtendedSparseAddressSpacePropertiesNV #-}
-{-# complete (::&) :: DirectDriverLoadingListLUNARG #-}
-{-# complete (::&) :: PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM #-}
-{-# complete (::&) :: PhysicalDeviceRayTracingPositionFetchFeaturesKHR #-}
-{-# complete (::&) :: PhysicalDeviceShaderCorePropertiesARM #-}
-{-# complete (::&) :: PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM #-}
-{-# complete (::&) :: MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM #-}
-{-# complete (::&) :: QueryLowLatencySupportNV #-}
-{-# complete (::&) :: PhysicalDeviceShaderObjectFeaturesEXT #-}
-{-# complete (::&) :: PhysicalDeviceShaderObjectPropertiesEXT #-}
-{-# complete (::&) :: PhysicalDeviceShaderTileImageFeaturesEXT #-}
-{-# complete (::&) :: PhysicalDeviceShaderTileImagePropertiesEXT #-}
-{-# complete (::&) :: ImportScreenBufferInfoQNX #-}
-{-# complete (::&) :: ScreenBufferFormatPropertiesQNX #-}
-{-# complete (::&) :: ExternalFormatQNX #-}
-{-# complete (::&) :: PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX #-}
-{-# complete (::&) :: PhysicalDeviceCooperativeMatrixFeaturesKHR #-}
-{-# complete (::&) :: PhysicalDeviceCooperativeMatrixPropertiesKHR #-}
-{-# complete (::&) :: PhysicalDeviceShaderEnqueuePropertiesAMDX #-}
-{-# complete (::&) :: PhysicalDeviceShaderEnqueueFeaturesAMDX #-}
-{-# complete (::&) :: PipelineShaderStageNodeCreateInfoAMDX #-}
-{-# complete (::&) :: PhysicalDeviceAntiLagFeaturesAMD #-}
-{-# complete (::&) :: BindMemoryStatusKHR #-}
-{-# complete (::&) :: PhysicalDeviceCubicClampFeaturesQCOM #-}
-{-# complete (::&) :: PhysicalDeviceYcbcrDegammaFeaturesQCOM #-}
-{-# complete (::&) :: SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM #-}
-{-# complete (::&) :: PhysicalDeviceCubicWeightsFeaturesQCOM #-}
-{-# complete (::&) :: SamplerCubicWeightsCreateInfoQCOM #-}
-{-# complete (::&) :: BlitImageCubicWeightsInfoQCOM #-}
-{-# complete (::&) :: PhysicalDeviceImageProcessing2FeaturesQCOM #-}
-{-# complete (::&) :: PhysicalDeviceImageProcessing2PropertiesQCOM #-}
-{-# complete (::&) :: SamplerBlockMatchWindowCreateInfoQCOM #-}
-{-# complete (::&) :: PhysicalDeviceDescriptorPoolOverallocationFeaturesNV #-}
-{-# complete (::&) :: PhysicalDeviceLayeredDriverPropertiesMSFT #-}
-{-# complete (::&) :: PhysicalDevicePerStageDescriptorSetFeaturesNV #-}
-{-# complete (::&) :: PhysicalDeviceExternalFormatResolveFeaturesANDROID #-}
-{-# complete (::&) :: PhysicalDeviceExternalFormatResolvePropertiesANDROID #-}
-{-# complete (::&) :: AndroidHardwareBufferFormatResolvePropertiesANDROID #-}
-{-# complete (::&) :: LatencySubmissionPresentIdNV #-}
-{-# complete (::&) :: SwapchainLatencyCreateInfoNV #-}
-{-# complete (::&) :: LatencySurfaceCapabilitiesNV #-}
-{-# complete (::&) :: PhysicalDeviceCudaKernelLaunchFeaturesNV #-}
-{-# complete (::&) :: PhysicalDeviceCudaKernelLaunchPropertiesNV #-}
-{-# complete (::&) :: DeviceQueueShaderCoreControlCreateInfoARM #-}
-{-# complete (::&) :: PhysicalDeviceSchedulingControlsFeaturesARM #-}
-{-# complete (::&) :: PhysicalDeviceSchedulingControlsPropertiesARM #-}
-{-# complete (::&) :: PhysicalDeviceRelaxedLineRasterizationFeaturesIMG #-}
-{-# complete (::&) :: PhysicalDeviceRenderPassStripedFeaturesARM #-}
-{-# complete (::&) :: PhysicalDeviceRenderPassStripedPropertiesARM #-}
-{-# complete (::&) :: RenderPassStripeBeginInfoARM #-}
-{-# complete (::&) :: RenderPassStripeSubmitInfoARM #-}
-{-# complete (::&) :: PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR #-}
-{-# complete (::&) :: PhysicalDeviceShaderSubgroupRotateFeaturesKHR #-}
-{-# complete (::&) :: PhysicalDeviceShaderExpectAssumeFeaturesKHR #-}
-{-# complete (::&) :: PhysicalDeviceShaderFloatControls2FeaturesKHR #-}
-{-# complete (::&) :: PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR #-}
-{-# complete (::&) :: RenderingAttachmentLocationInfoKHR #-}
-{-# complete (::&) :: RenderingInputAttachmentIndexInfoKHR #-}
-{-# complete (::&) :: PhysicalDeviceShaderQuadControlFeaturesKHR #-}
-{-# complete (::&) :: PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV #-}
-{-# complete (::&) :: PhysicalDeviceMapMemoryPlacedFeaturesEXT #-}
-{-# complete (::&) :: PhysicalDeviceMapMemoryPlacedPropertiesEXT #-}
-{-# complete (::&) :: MemoryMapPlacedInfoEXT #-}
-{-# complete (::&) :: PhysicalDeviceRawAccessChainsFeaturesNV #-}
-{-# complete (::&) :: PhysicalDeviceCommandBufferInheritanceFeaturesNV #-}
-{-# complete (::&) :: PhysicalDeviceImageAlignmentControlFeaturesMESA #-}
-{-# complete (::&) :: PhysicalDeviceImageAlignmentControlPropertiesMESA #-}
-{-# complete (::&) :: ImageAlignmentControlCreateInfoMESA #-}
-{-# complete (::&) :: PhysicalDeviceShaderReplicatedCompositesFeaturesEXT #-}
-{-# complete (::&) :: PhysicalDevicePresentModeFifoLatestReadyFeaturesEXT #-}
-{-# complete (::&) :: PhysicalDeviceCooperativeMatrix2FeaturesNV #-}
-{-# complete (::&) :: PhysicalDeviceCooperativeMatrix2PropertiesNV #-}
-{-# complete (::&) :: PhysicalDeviceHdrVividFeaturesHUAWEI #-}
-{-# complete (::&) :: PhysicalDeviceVertexAttributeRobustnessFeaturesEXT #-}
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_device_address_commands (AccelerationStructureCreateInfo2KHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureCreateInfoKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing (AccelerationStructureCreateInfoNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_AMDX_dense_geometry_format (AccelerationStructureDenseGeometryFormatTrianglesDataAMDX)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureDeviceAddressInfoKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureGeometryAabbsDataKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureGeometryInstancesDataKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureGeometryKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing_linear_swept_spheres (AccelerationStructureGeometryLinearSweptSpheresDataNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_opacity_micromap (AccelerationStructureGeometryMicromapDataKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing_motion_blur (AccelerationStructureGeometryMotionTrianglesDataNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing_linear_swept_spheres (AccelerationStructureGeometrySpheresDataNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureGeometryTrianglesDataKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing (AccelerationStructureInfoNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureInstanceKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing_motion_blur (AccelerationStructureMatrixMotionInstanceNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing (AccelerationStructureMemoryRequirementsInfoNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing_motion_blur (AccelerationStructureMotionInfoNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing_motion_blur (AccelerationStructureMotionInstanceNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing_motion_blur (AccelerationStructureSRTMotionInstanceNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_displacement_micromap (AccelerationStructureTrianglesDisplacementMicromapNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_opacity_micromap (AccelerationStructureTrianglesOpacityMicromapEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_opacity_micromap (AccelerationStructureTrianglesOpacityMicromapKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureVersionInfoKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_swapchain (AcquireNextImageInfoKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_performance_query (AcquireProfilingLockInfoKHR)
+import {-# SOURCE #-} Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)
+import {-# SOURCE #-} Vulkan.Extensions.VK_SEC_amigo_profiling (AmigoProfilingSubmitInfoSEC)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer (AndroidHardwareBufferFormatProperties2ANDROID)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer (AndroidHardwareBufferFormatPropertiesANDROID)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ANDROID_external_format_resolve (AndroidHardwareBufferFormatResolvePropertiesANDROID)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer (AndroidHardwareBufferPropertiesANDROID)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer (AndroidHardwareBufferUsageANDROID)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_android_surface (AndroidSurfaceCreateInfoKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_anti_lag (AntiLagDataAMD)
+import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_anti_lag (AntiLagPresentationInfoAMD)
+import {-# SOURCE #-} Vulkan.Core10.DeviceInitialization (ApplicationInfo)
+import {-# SOURCE #-} Vulkan.Core10.Pass (AttachmentDescription)
+import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2 (AttachmentDescription2)
+import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts (AttachmentDescriptionStencilLayout)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_unified_image_layouts (AttachmentFeedbackLoopInfoEXT)
+import {-# SOURCE #-} Vulkan.Core10.Pass (AttachmentReference)
+import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2 (AttachmentReference2)
+import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts (AttachmentReferenceStencilLayout)
+import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_mixed_attachment_samples (AttachmentSampleCountInfoAMD)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_sample_locations (AttachmentSampleLocationsEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_custom_resolve (BeginCustomResolveInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing (BindAccelerationStructureMemoryInfoNV)
+import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2 (BindBufferMemoryDeviceGroupInfo)
+import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2 (BindBufferMemoryInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_data_graph (BindDataGraphPipelineSessionMemoryInfoARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance6 (BindDescriptorBufferEmbeddedSamplersInfoEXT)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_maintenance6 (BindDescriptorSetsInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_heap (BindHeapInfoEXT)
+import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2 (BindImageMemoryDeviceGroupInfo)
+import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2 (BindImageMemoryInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_swapchain (BindImageMemorySwapchainInfoKHR)
+import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion (BindImagePlaneMemoryInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_device_address_commands (BindIndexBuffer3InfoKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_device_generated_commands (BindIndexBufferIndirectCommandEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_generated_commands (BindIndexBufferIndirectCommandNV)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_maintenance6 (BindMemoryStatus)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_generated_commands_compute (BindPipelineIndirectCommandNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_generated_commands (BindShaderGroupIndirectCommandNV)
+import {-# SOURCE #-} Vulkan.Core10.SparseResourceMemoryManagement (BindSparseInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_tensors (BindTensorMemoryInfoARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_device_address_commands (BindTransformFeedbackBuffer2InfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_device_address_commands (BindVertexBuffer3InfoKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_device_generated_commands (BindVertexBufferIndirectCommandEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_generated_commands (BindVertexBufferIndirectCommandNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_filter_cubic_weights (BlitImageCubicWeightsInfoQCOM)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2 (BlitImageInfo2)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_buffer (BufferCaptureDescriptorDataInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_FUCHSIA_buffer_collection (BufferCollectionBufferCreateInfoFUCHSIA)
+import {-# SOURCE #-} Vulkan.Extensions.VK_FUCHSIA_buffer_collection (BufferCollectionConstraintsInfoFUCHSIA)
+import {-# SOURCE #-} Vulkan.Extensions.VK_FUCHSIA_buffer_collection (BufferCollectionCreateInfoFUCHSIA)
+import {-# SOURCE #-} Vulkan.Extensions.VK_FUCHSIA_buffer_collection (BufferCollectionImageCreateInfoFUCHSIA)
+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.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.Core13.Promoted_From_VK_KHR_copy_commands2 (BufferImageCopy2)
+import {-# SOURCE #-} Vulkan.Core10.CommandBufferBuilding (BufferMemoryBarrier)
+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.Core14.Promoted_From_VK_KHR_maintenance5 (BufferUsageFlags2CreateInfo)
+import {-# SOURCE #-} Vulkan.Core10.BufferView (BufferViewCreateInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_calibrated_timestamps (CalibratedTimestampInfoKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_diagnostic_checkpoints (CheckpointData2NV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_diagnostic_checkpoints (CheckpointDataNV)
+import {-# SOURCE #-} Vulkan.Core10.CommandBufferBuilding (ClearAttachment)
+import {-# SOURCE #-} Vulkan.Core10.CommandBufferBuilding (ClearDepthStencilValue)
+import {-# SOURCE #-} Vulkan.Core10.CommandBufferBuilding (ClearRect)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_shading_rate_image (CoarseSampleLocationNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_shading_rate_image (CoarseSampleOrderCustomNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_extended_dynamic_state3 (ColorBlendAdvancedEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_extended_dynamic_state3 (ColorBlendEquationEXT)
+import {-# SOURCE #-} Vulkan.Core10.CommandBuffer (CommandBufferAllocateInfo)
+import {-# SOURCE #-} Vulkan.Core10.CommandBuffer (CommandBufferBeginInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_conditional_rendering (CommandBufferInheritanceConditionalRenderingInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_heap (CommandBufferInheritanceDescriptorHeapInfoEXT)
+import {-# SOURCE #-} Vulkan.Core10.CommandBuffer (CommandBufferInheritanceInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_render_pass_transform (CommandBufferInheritanceRenderPassTransformInfoQCOM)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering (CommandBufferInheritanceRenderingInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_inherited_viewport_scissor (CommandBufferInheritanceViewportScissorInfoNV)
+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.Extensions.VK_NV_compute_occupancy_priority (ComputeOccupancyPriorityParametersNV)
+import {-# SOURCE #-} Vulkan.Core10.ComputePipeline (ComputePipelineCreateInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_generated_commands_compute (ComputePipelineIndirectBufferInfoNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_device_address_commands (ConditionalRenderingBeginInfo2EXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_conditional_rendering (ConditionalRenderingBeginInfoEXT)
+import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_driver_properties (ConformanceVersion)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_cooperative_vector (ConvertCooperativeVectorMatrixInfoNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_cooperative_matrix2 (CooperativeMatrixFlexibleDimensionsPropertiesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_cooperative_matrix (CooperativeMatrixPropertiesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_cooperative_matrix (CooperativeMatrixPropertiesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_cooperative_vector (CooperativeVectorPropertiesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (CopyAccelerationStructureInfoKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (CopyAccelerationStructureToMemoryInfoKHR)
+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_device_address_commands (CopyDeviceMemoryImageInfoKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_device_address_commands (CopyDeviceMemoryInfoKHR)
+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.Core14.Promoted_From_VK_EXT_host_image_copy (CopyImageToImageInfo)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy (CopyImageToMemoryInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_copy_memory_indirect (CopyMemoryIndirectCommandKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_copy_memory_indirect (CopyMemoryIndirectInfoKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (CopyMemoryToAccelerationStructureInfoKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_copy_memory_indirect (CopyMemoryToImageIndirectCommandKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_copy_memory_indirect (CopyMemoryToImageIndirectInfoKHR)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy (CopyMemoryToImageInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_opacity_micromap (CopyMemoryToMicromapInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_opacity_micromap (CopyMicromapInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_opacity_micromap (CopyMicromapToMemoryInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_tensors (CopyTensorInfoARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NVX_binary_import (CuFunctionCreateInfoNVX)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NVX_binary_import (CuLaunchInfoNVX)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NVX_binary_import (CuModuleCreateInfoNVX)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NVX_binary_import (CuModuleTexturingModeCreateInfoNVX)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_cuda_kernel_launch (CudaFunctionCreateInfoNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_cuda_kernel_launch (CudaLaunchInfoNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_cuda_kernel_launch (CudaModuleCreateInfoNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_custom_resolve (CustomResolveCreateInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_external_semaphore_win32 (D3D12FenceSubmitInfoKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_data_graph_optical_flow (DataGraphOpticalFlowImageFormatInfoARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_data_graph_optical_flow (DataGraphOpticalFlowImageFormatPropertiesARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_data_graph_model (DataGraphPipelineBuiltinModelCreateInfoQCOM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_data_graph (DataGraphPipelineCompilerControlCreateInfoARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_data_graph (DataGraphPipelineConstantARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_data_graph (DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_data_graph (DataGraphPipelineCreateInfoARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_data_graph (DataGraphPipelineDispatchInfoARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_data_graph (DataGraphPipelineIdentifierCreateInfoARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_data_graph (DataGraphPipelineInfoARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_data_graph_neural_accelerator_statistics (DataGraphPipelineNeuralStatisticsCreateInfoARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_data_graph_optical_flow (DataGraphPipelineOpticalFlowCreateInfoARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_data_graph_optical_flow (DataGraphPipelineOpticalFlowDispatchInfoARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_data_graph (DataGraphPipelinePropertyQueryResultARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_data_graph (DataGraphPipelineResourceInfoARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_data_graph_optical_flow (DataGraphPipelineResourceInfoImageLayoutARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_data_graph (DataGraphPipelineSessionBindPointRequirementARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_data_graph (DataGraphPipelineSessionBindPointRequirementsInfoARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_data_graph (DataGraphPipelineSessionCreateInfoARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_data_graph (DataGraphPipelineSessionMemoryRequirementsInfoARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_data_graph_neural_accelerator_statistics (DataGraphPipelineSessionNeuralStatisticsCreateInfoARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_data_graph (DataGraphPipelineShaderModuleCreateInfoARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_data_graph_optical_flow (DataGraphPipelineSingleNodeConnectionARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_data_graph_optical_flow (DataGraphPipelineSingleNodeCreateInfoARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_data_graph (DataGraphProcessingEngineCreateInfoARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_data_graph_instruction_set_tosa (DataGraphTOSANameQualityARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_debug_marker (DebugMarkerMarkerInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_debug_marker (DebugMarkerObjectNameInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_debug_marker (DebugMarkerObjectTagInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_debug_report (DebugReportCallbackCreateInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_debug_utils (DebugUtilsLabelEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_debug_utils (DebugUtilsMessengerCallbackDataEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_debug_utils (DebugUtilsMessengerCreateInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_debug_utils (DebugUtilsObjectNameInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_debug_utils (DebugUtilsObjectTagInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_memory_decompression (DecompressMemoryInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_memory_decompression (DecompressMemoryRegionEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_memory_decompression (DecompressMemoryRegionNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_dedicated_allocation (DedicatedAllocationBufferCreateInfoNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_dedicated_allocation (DedicatedAllocationImageCreateInfoNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_dedicated_allocation (DedicatedAllocationMemoryAllocateInfoNV)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_synchronization2 (DependencyInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_depth_bias_control (DepthBiasInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_depth_bias_control (DepthBiasRepresentationInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_depth_clamp_control (DepthClampRangeEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_buffer (DescriptorAddressInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_buffer (DescriptorBufferBindingInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_buffer (DescriptorBufferBindingPushDescriptorBufferHandleEXT)
+import {-# SOURCE #-} Vulkan.Core10.DescriptorSet (DescriptorBufferInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_buffer (DescriptorGetInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_tensors (DescriptorGetTensorInfoARM)
+import {-# SOURCE #-} Vulkan.Core10.DescriptorSet (DescriptorImageInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_heap (DescriptorMappingSourceConstantOffsetEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_heap (DescriptorMappingSourceHeapDataEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_heap (DescriptorMappingSourceIndirectAddressEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_heap (DescriptorMappingSourceIndirectIndexArrayEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_heap (DescriptorMappingSourceIndirectIndexEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_heap (DescriptorMappingSourcePushIndexEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_heap (DescriptorMappingSourceShaderRecordIndexEXT)
+import {-# SOURCE #-} Vulkan.Core10.DescriptorSet (DescriptorPoolCreateInfo)
+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.Extensions.VK_EXT_descriptor_heap (DescriptorSetAndBindingMappingEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_VALVE_descriptor_set_host_mapping (DescriptorSetBindingReferenceVALVE)
+import {-# SOURCE #-} Vulkan.Core10.DescriptorSet (DescriptorSetLayoutBinding)
+import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing (DescriptorSetLayoutBindingFlagsCreateInfo)
+import {-# SOURCE #-} Vulkan.Core10.DescriptorSet (DescriptorSetLayoutCreateInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_VALVE_descriptor_set_host_mapping (DescriptorSetLayoutHostMappingInfoVALVE)
+import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_maintenance3 (DescriptorSetLayoutSupport)
+import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing (DescriptorSetVariableDescriptorCountAllocateInfo)
+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_EXT_device_address_binding_report (DeviceAddressBindingCallbackDataEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_device_address_commands (DeviceAddressRangeKHR)
+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)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_display_control (DeviceEventInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_device_fault (DeviceFaultAddressInfoKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_device_fault (DeviceFaultCountsEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_device_fault (DeviceFaultDebugInfoKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_device_fault (DeviceFaultInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_device_fault (DeviceFaultInfoKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_shader_abort (DeviceFaultShaderAbortMessageInfoKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_device_fault (DeviceFaultVendorBinaryHeaderVersionOneKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_device_fault (DeviceFaultVendorInfoKHR)
+import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_device_group (DeviceGroupBindSparseInfo)
+import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_device_group (DeviceGroupCommandBufferBeginInfo)
+import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_device_group_creation (DeviceGroupDeviceCreateInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_swapchain (DeviceGroupPresentCapabilitiesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_swapchain (DeviceGroupPresentInfoKHR)
+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.Core13.Promoted_From_VK_KHR_maintenance4 (DeviceImageMemoryRequirements)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_maintenance5 (DeviceImageSubresourceInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_device_address_commands (DeviceMemoryCopyKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_device_address_commands (DeviceMemoryImageCopyKHR)
+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_KHR_pipeline_binary (DevicePipelineBinaryInternalCacheControlKHR)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_private_data (DevicePrivateDataCreateInfo)
+import {-# SOURCE #-} Vulkan.Core10.Device (DeviceQueueCreateInfo)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_global_priority (DeviceQueueGlobalPriorityCreateInfo)
+import {-# SOURCE #-} Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory (DeviceQueueInfo2)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_scheduling_controls (DeviceQueueShaderCoreControlCreateInfoARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_tensors (DeviceTensorMemoryRequirementsARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_LUNARG_direct_driver_loading (DirectDriverLoadingInfoLUNARG)
+import {-# SOURCE #-} Vulkan.Extensions.VK_LUNARG_direct_driver_loading (DirectDriverLoadingListLUNARG)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_directfb_surface (DirectFBSurfaceCreateInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_AMDX_shader_enqueue (DispatchGraphCountInfoAMDX)
+import {-# SOURCE #-} Vulkan.Extensions.VK_AMDX_shader_enqueue (DispatchGraphInfoAMDX)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_device_address_commands (DispatchIndirect2InfoKHR)
+import {-# SOURCE #-} Vulkan.Core10.OtherTypes (DispatchIndirectCommand)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_scheduling_controls (DispatchParametersARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_tile_shading (DispatchTileInfoQCOM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_display_control (DisplayEventInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_display (DisplayModeCreateInfoKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_display (DisplayModeParametersKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_get_display_properties2 (DisplayModeProperties2KHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_display (DisplayModePropertiesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_display_stereo (DisplayModeStereoPropertiesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_display_native_hdr (DisplayNativeHdrSurfaceCapabilitiesAMD)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_get_display_properties2 (DisplayPlaneCapabilities2KHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_display (DisplayPlaneCapabilitiesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_get_display_properties2 (DisplayPlaneInfo2KHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_get_display_properties2 (DisplayPlaneProperties2KHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_display (DisplayPlanePropertiesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_display_control (DisplayPowerInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_display_swapchain (DisplayPresentInfoKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_get_display_properties2 (DisplayProperties2KHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_display (DisplayPropertiesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_display (DisplaySurfaceCreateInfoKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_display_stereo (DisplaySurfaceStereoCreateInfoNV)
+import {-# SOURCE #-} Vulkan.Core10.OtherTypes (DrawIndexedIndirectCommand)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_device_address_commands (DrawIndirect2InfoKHR)
+import {-# SOURCE #-} Vulkan.Core10.OtherTypes (DrawIndirectCommand)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_device_address_commands (DrawIndirectCount2InfoKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_device_generated_commands (DrawIndirectCountIndirectCommandEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_mesh_shader (DrawMeshTasksIndirectCommandEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_mesh_shader (DrawMeshTasksIndirectCommandNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_image_drm_format_modifier (DrmFormatModifierProperties2EXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_image_drm_format_modifier (DrmFormatModifierPropertiesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_image_drm_format_modifier (DrmFormatModifierPropertiesList2EXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_image_drm_format_modifier (DrmFormatModifierPropertiesListEXT)
+import {-# SOURCE #-} Vulkan.Core10.Event (EventCreateInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_AMDX_shader_enqueue (ExecutionGraphPipelineCreateInfoAMDX)
+import {-# SOURCE #-} Vulkan.Extensions.VK_AMDX_shader_enqueue (ExecutionGraphPipelineScratchSizeAMDX)
+import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_external_fence (ExportFenceCreateInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_external_fence_win32 (ExportFenceWin32HandleInfoKHR)
+import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_external_memory (ExportMemoryAllocateInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_external_memory (ExportMemoryAllocateInfoNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_external_memory_win32 (ExportMemoryWin32HandleInfoKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_external_memory_win32 (ExportMemoryWin32HandleInfoNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_metal_objects (ExportMetalBufferInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_metal_objects (ExportMetalCommandQueueInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_metal_objects (ExportMetalDeviceInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_metal_objects (ExportMetalIOSurfaceInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_metal_objects (ExportMetalObjectCreateInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_metal_objects (ExportMetalObjectsInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_metal_objects (ExportMetalSharedEventInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_metal_objects (ExportMetalTextureInfoEXT)
+import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore (ExportSemaphoreCreateInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_external_semaphore_win32 (ExportSemaphoreWin32HandleInfoKHR)
+import {-# SOURCE #-} Vulkan.Core10.ExtensionDiscovery (ExtensionProperties)
+import {-# SOURCE #-} Vulkan.Core10.FundamentalTypes (Extent2D)
+import {-# SOURCE #-} Vulkan.Core10.FundamentalTypes (Extent3D)
+import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities (ExternalBufferProperties)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_external_compute_queue (ExternalComputeQueueCreateInfoNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_external_compute_queue (ExternalComputeQueueDataParamsNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_external_compute_queue (ExternalComputeQueueDeviceCreateInfoNV)
+import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_external_fence_capabilities (ExternalFenceProperties)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer (ExternalFormatANDROID)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QNX_external_memory_screen_buffer (ExternalFormatQNX)
+import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities (ExternalImageFormatProperties)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_external_memory_capabilities (ExternalImageFormatPropertiesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_external_memory_acquire_unmodified (ExternalMemoryAcquireUnmodifiedEXT)
+import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_external_memory (ExternalMemoryBufferCreateInfo)
+import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_external_memory (ExternalMemoryImageCreateInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_external_memory (ExternalMemoryImageCreateInfoNV)
+import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities (ExternalMemoryProperties)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_tensors (ExternalMemoryTensorCreateInfoARM)
+import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore_capabilities (ExternalSemaphoreProperties)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_tensors (ExternalTensorPropertiesARM)
+import {-# SOURCE #-} Vulkan.Core10.Fence (FenceCreateInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_external_fence_fd (FenceGetFdInfoKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_external_fence_win32 (FenceGetWin32HandleInfoKHR)
+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.Core13.Promoted_From_VK_KHR_format_feature_flags2 (FormatProperties3)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_fragment_shading_rate (FragmentShadingRateAttachmentInfoKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_frame_boundary (FrameBoundaryEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_tensors (FrameBoundaryTensorsARM)
+import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer (FramebufferAttachmentImageInfo)
+import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer (FramebufferAttachmentsCreateInfo)
+import {-# SOURCE #-} Vulkan.Core10.Pass (FramebufferCreateInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_coverage_reduction_mode (FramebufferMixedSamplesCombinationNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_device_generated_commands (GeneratedCommandsInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_generated_commands (GeneratedCommandsInfoNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_device_generated_commands (GeneratedCommandsMemoryRequirementsInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_generated_commands (GeneratedCommandsMemoryRequirementsInfoNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_device_generated_commands (GeneratedCommandsPipelineInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_device_generated_commands (GeneratedCommandsShaderInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing (GeometryAABBNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing (GeometryDataNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing (GeometryNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing (GeometryTrianglesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_low_latency2 (GetLatencyMarkerInfoNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_gpa_interface (GpaDeviceClockModeInfoAMD)
+import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_gpa_interface (GpaDeviceGetClockInfoAMD)
+import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_gpa_interface (GpaPerfBlockPropertiesAMD)
+import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_gpa_interface (GpaPerfCounterAMD)
+import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_gpa_interface (GpaSampleBeginInfoAMD)
+import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_gpa_interface (GpaSessionCreateInfoAMD)
+import {-# SOURCE #-} Vulkan.Core10.GraphicsPipeline (GraphicsPipelineCreateInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_graphics_pipeline_library (GraphicsPipelineLibraryCreateInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_generated_commands (GraphicsPipelineShaderGroupsCreateInfoNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_generated_commands (GraphicsShaderGroupCreateInfoNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_hdr_metadata (HdrMetadataEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_HUAWEI_hdr_vivid (HdrVividDynamicMetadataHUAWEI)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_headless_surface (HeadlessSurfaceCreateInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_heap (HostAddressRangeConstEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_heap (HostAddressRangeEXT)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy (HostImageCopyDevicePerformanceQuery)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy (HostImageLayoutTransitionInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_MVK_ios_surface (IOSSurfaceCreateInfoMVK)
+import {-# SOURCE #-} Vulkan.Extensions.VK_MESA_image_alignment_control (ImageAlignmentControlCreateInfoMESA)
+import {-# SOURCE #-} Vulkan.Core10.CommandBufferBuilding (ImageBlit)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2 (ImageBlit2)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_buffer (ImageCaptureDescriptorDataInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_image_compression_control (ImageCompressionControlEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_image_compression_control (ImageCompressionPropertiesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_FUCHSIA_buffer_collection (ImageConstraintsInfoFUCHSIA)
+import {-# SOURCE #-} Vulkan.Core10.CommandBufferBuilding (ImageCopy)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2 (ImageCopy2)
+import {-# SOURCE #-} Vulkan.Core10.Image (ImageCreateInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_heap (ImageDescriptorInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_image_drm_format_modifier (ImageDrmFormatModifierExplicitCreateInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_image_drm_format_modifier (ImageDrmFormatModifierListCreateInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_image_drm_format_modifier (ImageDrmFormatModifierPropertiesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_FUCHSIA_buffer_collection (ImageFormatConstraintsInfoFUCHSIA)
+import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_image_format_list (ImageFormatListCreateInfo)
+import {-# SOURCE #-} Vulkan.Core10.DeviceInitialization (ImageFormatProperties)
+import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (ImageFormatProperties2)
+import {-# SOURCE #-} Vulkan.Core10.CommandBufferBuilding (ImageMemoryBarrier)
+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.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)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_maintenance5 (ImageSubresource2)
+import {-# SOURCE #-} Vulkan.Core10.CommandBufferBuilding (ImageSubresourceLayers)
+import {-# SOURCE #-} Vulkan.Core10.ImageView (ImageSubresourceRange)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_swapchain (ImageSwapchainCreateInfoKHR)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy (ImageToMemoryCopy)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_astc_decode_mode (ImageViewASTCDecodeModeEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NVX_image_view_handle (ImageViewAddressPropertiesNVX)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_buffer (ImageViewCaptureDescriptorDataInfoEXT)
+import {-# SOURCE #-} Vulkan.Core10.ImageView (ImageViewCreateInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NVX_image_view_handle (ImageViewHandleInfoNVX)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_image_view_min_lod (ImageViewMinLodCreateInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_image_processing (ImageViewSampleWeightCreateInfoQCOM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_image_sliced_view_of_3d (ImageViewSlicedCreateInfoEXT)
+import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_maintenance2 (ImageViewUsageCreateInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer (ImportAndroidHardwareBufferInfoANDROID)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_external_fence_fd (ImportFenceFdInfoKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_external_fence_win32 (ImportFenceWin32HandleInfoKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_FUCHSIA_buffer_collection (ImportMemoryBufferCollectionFUCHSIA)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_external_memory_fd (ImportMemoryFdInfoKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_external_memory_host (ImportMemoryHostPointerInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_external_memory_metal (ImportMemoryMetalHandleInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_external_memory_win32 (ImportMemoryWin32HandleInfoKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_external_memory_win32 (ImportMemoryWin32HandleInfoNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_FUCHSIA_external_memory (ImportMemoryZirconHandleInfoFUCHSIA)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_metal_objects (ImportMetalBufferInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_metal_objects (ImportMetalIOSurfaceInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_metal_objects (ImportMetalSharedEventInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_metal_objects (ImportMetalTextureInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QNX_external_memory_screen_buffer (ImportScreenBufferInfoQNX)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_external_semaphore_fd (ImportSemaphoreFdInfoKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_external_semaphore_win32 (ImportSemaphoreWin32HandleInfoKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_FUCHSIA_external_semaphore (ImportSemaphoreZirconHandleInfoFUCHSIA)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_device_generated_commands (IndirectCommandsExecutionSetTokenEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_device_generated_commands (IndirectCommandsIndexBufferTokenEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_device_generated_commands (IndirectCommandsLayoutCreateInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_generated_commands (IndirectCommandsLayoutCreateInfoNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_heap (IndirectCommandsLayoutPushDataTokenNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_device_generated_commands (IndirectCommandsLayoutTokenEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_generated_commands (IndirectCommandsLayoutTokenNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_device_generated_commands (IndirectCommandsPushConstantTokenEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_generated_commands (IndirectCommandsStreamNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_device_generated_commands (IndirectCommandsVertexBufferTokenEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_device_generated_commands (IndirectExecutionSetCreateInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_device_generated_commands (IndirectExecutionSetPipelineInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_device_generated_commands (IndirectExecutionSetShaderInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_device_generated_commands (IndirectExecutionSetShaderLayoutInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_INTEL_performance_query (InitializePerformanceApiInfoINTEL)
+import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_maintenance2 (InputAttachmentAspectReference)
+import {-# SOURCE #-} Vulkan.Core10.DeviceInitialization (InstanceCreateInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_low_latency2 (LatencySleepInfoNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_low_latency2 (LatencySleepModeInfoNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_low_latency2 (LatencySubmissionPresentIdNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_low_latency2 (LatencySurfaceCapabilitiesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_low_latency2 (LatencyTimingsFrameReportNV)
+import {-# SOURCE #-} Vulkan.Core10.LayerDiscovery (LayerProperties)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_layer_settings (LayerSettingEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_layer_settings (LayerSettingsCreateInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_MVK_macos_surface (MacOSSurfaceCreateInfoMVK)
+import {-# SOURCE #-} Vulkan.Core10.Memory (MappedMemoryRange)
+import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_device_group (MemoryAllocateFlagsInfo)
+import {-# SOURCE #-} Vulkan.Core10.Memory (MemoryAllocateInfo)
+import {-# SOURCE #-} Vulkan.Core10.CommandBufferBuilding (MemoryBarrier)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_synchronization2 (MemoryBarrier2)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance8 (MemoryBarrierAccessFlags3KHR)
+import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation (MemoryDedicatedAllocateInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_tensors (MemoryDedicatedAllocateInfoTensorARM)
+import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation (MemoryDedicatedRequirements)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_external_memory_fd (MemoryFdPropertiesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer (MemoryGetAndroidHardwareBufferInfoANDROID)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_external_memory_fd (MemoryGetFdInfoKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_external_memory_metal (MemoryGetMetalHandleInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_external_memory_rdma (MemoryGetRemoteAddressInfoNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_external_memory_win32 (MemoryGetWin32HandleInfoKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_FUCHSIA_external_memory (MemoryGetZirconHandleInfoFUCHSIA)
+import {-# SOURCE #-} Vulkan.Core10.DeviceInitialization (MemoryHeap)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_external_memory_host (MemoryHostPointerPropertiesEXT)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_map_memory2 (MemoryMapInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_map_memory_placed (MemoryMapPlacedInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_device_address_commands (MemoryMarkerInfoAMD)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_external_memory_metal (MemoryMetalHandlePropertiesEXT)
+import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address (MemoryOpaqueCaptureAddressAllocateInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_memory_priority (MemoryPriorityAllocateInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_device_address_commands (MemoryRangeBarrierKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_device_address_commands (MemoryRangeBarriersInfoKHR)
+import {-# SOURCE #-} Vulkan.Core10.MemoryManagement (MemoryRequirements)
+import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2 (MemoryRequirements2)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy (MemoryToImageCopy)
+import {-# SOURCE #-} Vulkan.Core10.DeviceInitialization (MemoryType)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_map_memory2 (MemoryUnmapInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_external_memory_win32 (MemoryWin32HandlePropertiesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_FUCHSIA_external_memory (MemoryZirconHandlePropertiesFUCHSIA)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_metal_surface (MetalSurfaceCreateInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_opacity_micromap (MicromapBuildInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_opacity_micromap (MicromapBuildSizesInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_opacity_micromap (MicromapCreateInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_opacity_micromap (MicromapTriangleKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_opacity_micromap (MicromapUsageEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_opacity_micromap (MicromapUsageKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_opacity_micromap (MicromapVersionInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_multi_draw (MultiDrawIndexedInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_multi_draw (MultiDrawInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_sample_locations (MultisamplePropertiesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled (MultisampledRenderToSingleSampledInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NVX_multiview_per_view_attributes (MultiviewPerViewAttributesInfoNVX)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_multiview_per_view_render_areas (MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_mutable_descriptor_type (MutableDescriptorTypeCreateInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_mutable_descriptor_type (MutableDescriptorTypeListEXT)
+import {-# SOURCE #-} Vulkan.Core10.FundamentalTypes (Offset2D)
+import {-# SOURCE #-} Vulkan.Core10.FundamentalTypes (Offset3D)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_heap (OpaqueCaptureDataCreateInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_buffer (OpaqueCaptureDescriptorDataCreateInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_optical_flow (OpticalFlowExecuteInfoNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_optical_flow (OpticalFlowImageFormatInfoNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_optical_flow (OpticalFlowImageFormatPropertiesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_optical_flow (OpticalFlowSessionCreateInfoNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_optical_flow (OpticalFlowSessionCreatePrivateDataInfoNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_low_latency2 (OutOfBandQueueTypeInfoNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_present_timing (PastPresentationTimingEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_GOOGLE_display_timing (PastPresentationTimingGOOGLE)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_present_timing (PastPresentationTimingInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_present_timing (PastPresentationTimingPropertiesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_tile_shading (PerTileBeginInfoQCOM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_tile_shading (PerTileEndInfoQCOM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_queue_perf_hint (PerfHintInfoQCOM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_INTEL_performance_query (PerformanceConfigurationAcquireInfoINTEL)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_performance_query (PerformanceCounterDescriptionKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_performance_query (PerformanceCounterKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_INTEL_performance_query (PerformanceMarkerInfoINTEL)
+import {-# SOURCE #-} Vulkan.Extensions.VK_INTEL_performance_query (PerformanceOverrideInfoINTEL)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_performance_query (PerformanceQuerySubmitInfoKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_INTEL_performance_query (PerformanceStreamMarkerInfoINTEL)
+import {-# SOURCE #-} Vulkan.Extensions.VK_INTEL_performance_query (PerformanceValueINTEL)
+import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_16bit_storage (PhysicalDevice16BitStorageFeatures)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_4444_formats (PhysicalDevice4444FormatsFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_8bit_storage (PhysicalDevice8BitStorageFeatures)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_astc_decode_mode (PhysicalDeviceASTCDecodeFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (PhysicalDeviceAccelerationStructureFeaturesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (PhysicalDeviceAccelerationStructurePropertiesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_device_address_binding_report (PhysicalDeviceAddressBindingReportFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_SEC_amigo_profiling (PhysicalDeviceAmigoProfilingFeaturesSEC)
+import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_anti_lag (PhysicalDeviceAntiLagFeaturesAMD)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state (PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_attachment_feedback_loop_layout (PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_blend_operation_advanced (PhysicalDeviceBlendOperationAdvancedFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_blend_operation_advanced (PhysicalDeviceBlendOperationAdvancedPropertiesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_border_color_swizzle (PhysicalDeviceBorderColorSwizzleFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address (PhysicalDeviceBufferDeviceAddressFeatures)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_buffer_device_address (PhysicalDeviceBufferDeviceAddressFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_HUAWEI_cluster_culling_shader (PhysicalDeviceClusterCullingShaderFeaturesHUAWEI)
+import {-# SOURCE #-} Vulkan.Extensions.VK_HUAWEI_cluster_culling_shader (PhysicalDeviceClusterCullingShaderPropertiesHUAWEI)
+import {-# SOURCE #-} Vulkan.Extensions.VK_HUAWEI_cluster_culling_shader (PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI)
+import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_device_coherent_memory (PhysicalDeviceCoherentMemoryFeaturesAMD)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_color_write_enable (PhysicalDeviceColorWriteEnableFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_command_buffer_inheritance (PhysicalDeviceCommandBufferInheritanceFeaturesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_compute_occupancy_priority (PhysicalDeviceComputeOccupancyPriorityFeaturesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_compute_shader_derivatives (PhysicalDeviceComputeShaderDerivativesFeaturesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_compute_shader_derivatives (PhysicalDeviceComputeShaderDerivativesPropertiesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_conditional_rendering (PhysicalDeviceConditionalRenderingFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_conservative_rasterization (PhysicalDeviceConservativeRasterizationPropertiesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_cooperative_matrix2 (PhysicalDeviceCooperativeMatrix2FeaturesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_cooperative_matrix2 (PhysicalDeviceCooperativeMatrix2PropertiesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_cooperative_matrix_conversion (PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_cooperative_matrix (PhysicalDeviceCooperativeMatrixFeaturesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_cooperative_matrix (PhysicalDeviceCooperativeMatrixFeaturesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_cooperative_matrix (PhysicalDeviceCooperativeMatrixPropertiesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_cooperative_matrix (PhysicalDeviceCooperativeMatrixPropertiesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_cooperative_vector (PhysicalDeviceCooperativeVectorFeaturesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_cooperative_vector (PhysicalDeviceCooperativeVectorPropertiesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_copy_memory_indirect (PhysicalDeviceCopyMemoryIndirectFeaturesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_copy_memory_indirect (PhysicalDeviceCopyMemoryIndirectFeaturesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_copy_memory_indirect (PhysicalDeviceCopyMemoryIndirectPropertiesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_corner_sampled_image (PhysicalDeviceCornerSampledImageFeaturesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_coverage_reduction_mode (PhysicalDeviceCoverageReductionModeFeaturesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_filter_cubic_clamp (PhysicalDeviceCubicClampFeaturesQCOM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_filter_cubic_weights (PhysicalDeviceCubicWeightsFeaturesQCOM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_cuda_kernel_launch (PhysicalDeviceCudaKernelLaunchFeaturesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_cuda_kernel_launch (PhysicalDeviceCudaKernelLaunchPropertiesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_custom_border_color (PhysicalDeviceCustomBorderColorFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_custom_border_color (PhysicalDeviceCustomBorderColorPropertiesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_custom_resolve (PhysicalDeviceCustomResolveFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_data_graph (PhysicalDeviceDataGraphFeaturesARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_data_graph_model (PhysicalDeviceDataGraphModelFeaturesQCOM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_data_graph_neural_accelerator_statistics (PhysicalDeviceDataGraphNeuralAcceleratorStatisticsFeaturesARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_data_graph (PhysicalDeviceDataGraphOperationSupportARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_data_graph_optical_flow (PhysicalDeviceDataGraphOpticalFlowFeaturesARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_data_graph (PhysicalDeviceDataGraphProcessingEngineARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_dedicated_allocation_image_aliasing (PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_AMDX_dense_geometry_format (PhysicalDeviceDenseGeometryFormatFeaturesAMDX)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_depth_bias_control (PhysicalDeviceDepthBiasControlFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_depth_clamp_control (PhysicalDeviceDepthClampControlFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_depth_clamp_zero_one (PhysicalDeviceDepthClampZeroOneFeaturesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_depth_clip_control (PhysicalDeviceDepthClipControlFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_depth_clip_enable (PhysicalDeviceDepthClipEnableFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve (PhysicalDeviceDepthStencilResolveProperties)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_buffer (PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_buffer (PhysicalDeviceDescriptorBufferFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_buffer (PhysicalDeviceDescriptorBufferPropertiesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_tensors (PhysicalDeviceDescriptorBufferTensorFeaturesARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_tensors (PhysicalDeviceDescriptorBufferTensorPropertiesARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_heap (PhysicalDeviceDescriptorHeapFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_heap (PhysicalDeviceDescriptorHeapPropertiesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_heap (PhysicalDeviceDescriptorHeapTensorPropertiesARM)
+import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing (PhysicalDeviceDescriptorIndexingFeatures)
+import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing (PhysicalDeviceDescriptorIndexingProperties)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_descriptor_pool_overallocation (PhysicalDeviceDescriptorPoolOverallocationFeaturesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_VALVE_descriptor_set_host_mapping (PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_device_address_commands (PhysicalDeviceDeviceAddressCommandsFeaturesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_generated_commands_compute (PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_device_generated_commands (PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_generated_commands (PhysicalDeviceDeviceGeneratedCommandsFeaturesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_device_generated_commands (PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_generated_commands (PhysicalDeviceDeviceGeneratedCommandsPropertiesNV)
+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_EXT_discard_rectangles (PhysicalDeviceDiscardRectanglePropertiesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_displacement_micromap (PhysicalDeviceDisplacementMicromapFeaturesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_displacement_micromap (PhysicalDeviceDisplacementMicromapPropertiesNV)
+import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_driver_properties (PhysicalDeviceDriverProperties)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_physical_device_drm (PhysicalDeviceDrmPropertiesEXT)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering (PhysicalDeviceDynamicRenderingFeatures)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read (PhysicalDeviceDynamicRenderingLocalReadFeatures)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_dynamic_rendering_unused_attachments (PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_elapsed_timer_query (PhysicalDeviceElapsedTimerQueryFeaturesQCOM)
+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_state3 (PhysicalDeviceExtendedDynamicState3FeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_extended_dynamic_state3 (PhysicalDeviceExtendedDynamicState3PropertiesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_extended_dynamic_state (PhysicalDeviceExtendedDynamicStateFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_extended_sparse_address_space (PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_extended_sparse_address_space (PhysicalDeviceExtendedSparseAddressSpacePropertiesNV)
+import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities (PhysicalDeviceExternalBufferInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_external_compute_queue (PhysicalDeviceExternalComputeQueuePropertiesNV)
+import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_external_fence_capabilities (PhysicalDeviceExternalFenceInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ANDROID_external_format_resolve (PhysicalDeviceExternalFormatResolveFeaturesANDROID)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ANDROID_external_format_resolve (PhysicalDeviceExternalFormatResolvePropertiesANDROID)
+import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities (PhysicalDeviceExternalImageFormatInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_external_memory_host (PhysicalDeviceExternalMemoryHostPropertiesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_external_memory_rdma (PhysicalDeviceExternalMemoryRDMAFeaturesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QNX_external_memory_screen_buffer (PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX)
+import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore_capabilities (PhysicalDeviceExternalSemaphoreInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_tensors (PhysicalDeviceExternalTensorInfoARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_device_fault (PhysicalDeviceFaultFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_device_fault (PhysicalDeviceFaultFeaturesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_device_fault (PhysicalDeviceFaultPropertiesKHR)
+import {-# SOURCE #-} Vulkan.Core10.DeviceInitialization (PhysicalDeviceFeatures)
+import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (PhysicalDeviceFeatures2)
+import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_shader_float_controls (PhysicalDeviceFloatControlsProperties)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_format_pack (PhysicalDeviceFormatPackFeaturesARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_fragment_density_map2 (PhysicalDeviceFragmentDensityMap2FeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_fragment_density_map2 (PhysicalDeviceFragmentDensityMap2PropertiesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_fragment_density_map (PhysicalDeviceFragmentDensityMapFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_VALVE_fragment_density_map_layered (PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE)
+import {-# SOURCE #-} Vulkan.Extensions.VK_VALVE_fragment_density_map_layered (PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_fragment_density_map_offset (PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_fragment_density_map_offset (PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_fragment_density_map (PhysicalDeviceFragmentDensityMapPropertiesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_fragment_shader_barycentric (PhysicalDeviceFragmentShaderBarycentricFeaturesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_fragment_shader_barycentric (PhysicalDeviceFragmentShaderBarycentricPropertiesKHR)
+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_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 (PhysicalDeviceFragmentShadingRateKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_fragment_shading_rate (PhysicalDeviceFragmentShadingRatePropertiesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_frame_boundary (PhysicalDeviceFrameBoundaryFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_global_priority (PhysicalDeviceGlobalPriorityQueryFeatures)
+import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_gpa_interface (PhysicalDeviceGpaFeaturesAMD)
+import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_gpa_interface (PhysicalDeviceGpaProperties2AMD)
+import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_gpa_interface (PhysicalDeviceGpaPropertiesAMD)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_graphics_pipeline_library (PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_graphics_pipeline_library (PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT)
+import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_device_group_creation (PhysicalDeviceGroupProperties)
+import {-# SOURCE #-} Vulkan.Extensions.VK_HUAWEI_hdr_vivid (PhysicalDeviceHdrVividFeaturesHUAWEI)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy (PhysicalDeviceHostImageCopyFeatures)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy (PhysicalDeviceHostImageCopyProperties)
+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_2d_view_of_3d (PhysicalDeviceImage2DViewOf3DFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_MESA_image_alignment_control (PhysicalDeviceImageAlignmentControlFeaturesMESA)
+import {-# SOURCE #-} Vulkan.Extensions.VK_MESA_image_alignment_control (PhysicalDeviceImageAlignmentControlPropertiesMESA)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_image_compression_control (PhysicalDeviceImageCompressionControlFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_image_compression_control_swapchain (PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT)
+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_QCOM_image_processing2 (PhysicalDeviceImageProcessing2FeaturesQCOM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_image_processing2 (PhysicalDeviceImageProcessing2PropertiesQCOM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_image_processing3 (PhysicalDeviceImageProcessing3FeaturesQCOM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_image_processing (PhysicalDeviceImageProcessingFeaturesQCOM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_image_processing (PhysicalDeviceImageProcessingPropertiesQCOM)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_image_robustness (PhysicalDeviceImageRobustnessFeatures)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_image_sliced_view_of_3d (PhysicalDeviceImageSlicedViewOf3DFeaturesEXT)
+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.Core14.Promoted_From_VK_KHR_index_type_uint8 (PhysicalDeviceIndexTypeUint8Features)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_inherited_viewport_scissor (PhysicalDeviceInheritedViewportScissorFeaturesNV)
+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_KHR_internally_synchronized_queues (PhysicalDeviceInternallySynchronizedQueuesFeaturesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_HUAWEI_invocation_mask (PhysicalDeviceInvocationMaskFeaturesHUAWEI)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance7 (PhysicalDeviceLayeredApiPropertiesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance7 (PhysicalDeviceLayeredApiPropertiesListKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance7 (PhysicalDeviceLayeredApiVulkanPropertiesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_MSFT_layered_driver (PhysicalDeviceLayeredDriverPropertiesMSFT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_legacy_dithering (PhysicalDeviceLegacyDitheringFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_legacy_vertex_attributes (PhysicalDeviceLegacyVertexAttributesFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_legacy_vertex_attributes (PhysicalDeviceLegacyVertexAttributesPropertiesEXT)
+import {-# SOURCE #-} Vulkan.Core10.DeviceInitialization (PhysicalDeviceLimits)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_line_rasterization (PhysicalDeviceLineRasterizationFeatures)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_line_rasterization (PhysicalDeviceLineRasterizationProperties)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_linear_color_attachment (PhysicalDeviceLinearColorAttachmentFeaturesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance10 (PhysicalDeviceMaintenance10FeaturesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance10 (PhysicalDeviceMaintenance10PropertiesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance11 (PhysicalDeviceMaintenance11FeaturesKHR)
+import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_maintenance3 (PhysicalDeviceMaintenance3Properties)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_maintenance4 (PhysicalDeviceMaintenance4Features)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_maintenance4 (PhysicalDeviceMaintenance4Properties)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_maintenance5 (PhysicalDeviceMaintenance5Features)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_maintenance5 (PhysicalDeviceMaintenance5Properties)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_maintenance6 (PhysicalDeviceMaintenance6Features)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_maintenance6 (PhysicalDeviceMaintenance6Properties)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance7 (PhysicalDeviceMaintenance7FeaturesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance7 (PhysicalDeviceMaintenance7PropertiesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance8 (PhysicalDeviceMaintenance8FeaturesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance9 (PhysicalDeviceMaintenance9FeaturesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance9 (PhysicalDeviceMaintenance9PropertiesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_map_memory_placed (PhysicalDeviceMapMemoryPlacedFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_map_memory_placed (PhysicalDeviceMapMemoryPlacedPropertiesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_memory_budget (PhysicalDeviceMemoryBudgetPropertiesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_memory_decompression (PhysicalDeviceMemoryDecompressionFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_memory_decompression (PhysicalDeviceMemoryDecompressionPropertiesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_memory_priority (PhysicalDeviceMemoryPriorityFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Core10.DeviceInitialization (PhysicalDeviceMemoryProperties)
+import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (PhysicalDeviceMemoryProperties2)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_mesh_shader (PhysicalDeviceMeshShaderFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_mesh_shader (PhysicalDeviceMeshShaderFeaturesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_mesh_shader (PhysicalDeviceMeshShaderPropertiesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_mesh_shader (PhysicalDeviceMeshShaderPropertiesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_multi_draw (PhysicalDeviceMultiDrawFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_multi_draw (PhysicalDeviceMultiDrawPropertiesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled (PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_multiview (PhysicalDeviceMultiviewFeatures)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NVX_multiview_per_view_attributes (PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_multiview_per_view_render_areas (PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_multiview_per_view_viewports (PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM)
+import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_multiview (PhysicalDeviceMultiviewProperties)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_mutable_descriptor_type (PhysicalDeviceMutableDescriptorTypeFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_nested_command_buffer (PhysicalDeviceNestedCommandBufferFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_nested_command_buffer (PhysicalDeviceNestedCommandBufferPropertiesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_non_seamless_cube_map (PhysicalDeviceNonSeamlessCubeMapFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_opacity_micromap (PhysicalDeviceOpacityMicromapFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_opacity_micromap (PhysicalDeviceOpacityMicromapFeaturesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_opacity_micromap (PhysicalDeviceOpacityMicromapPropertiesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_opacity_micromap (PhysicalDeviceOpacityMicromapPropertiesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_optical_flow (PhysicalDeviceOpticalFlowFeaturesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_optical_flow (PhysicalDeviceOpticalFlowPropertiesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_pci_bus_info (PhysicalDevicePCIBusInfoPropertiesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_pageable_device_local_memory (PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_per_stage_descriptor_set (PhysicalDevicePerStageDescriptorSetFeaturesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_performance_query (PhysicalDevicePerformanceQueryFeaturesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_performance_query (PhysicalDevicePerformanceQueryPropertiesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_pipeline_binary (PhysicalDevicePipelineBinaryFeaturesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_pipeline_binary (PhysicalDevicePipelineBinaryPropertiesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_SEC_pipeline_cache_incremental_mode (PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC)
+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_EXT_pipeline_library_group_handles (PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_pipeline_opacity_micromap (PhysicalDevicePipelineOpacityMicromapFeaturesARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_pipeline_properties (PhysicalDevicePipelinePropertiesFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_EXT_pipeline_protected_access (PhysicalDevicePipelineProtectedAccessFeatures)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_EXT_pipeline_robustness (PhysicalDevicePipelineRobustnessFeatures)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_EXT_pipeline_robustness (PhysicalDevicePipelineRobustnessProperties)
+import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_maintenance2 (PhysicalDevicePointClippingProperties)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_portability_subset (PhysicalDevicePortabilitySubsetFeaturesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_portability_subset (PhysicalDevicePortabilitySubsetPropertiesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_present_barrier (PhysicalDevicePresentBarrierFeaturesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_present_id2 (PhysicalDevicePresentId2FeaturesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_present_id (PhysicalDevicePresentIdFeaturesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_present_metering (PhysicalDevicePresentMeteringFeaturesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_present_mode_fifo_latest_ready (PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_present_timing (PhysicalDevicePresentTimingFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_present_wait2 (PhysicalDevicePresentWait2FeaturesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_present_wait (PhysicalDevicePresentWaitFeaturesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_primitive_restart_index (PhysicalDevicePrimitiveRestartIndexFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_primitive_topology_list_restart (PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_primitives_generated_query (PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT)
+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)
+import {-# SOURCE #-} Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory (PhysicalDeviceProtectedMemoryProperties)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_provoking_vertex (PhysicalDeviceProvokingVertexFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_provoking_vertex (PhysicalDeviceProvokingVertexPropertiesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_push_constant_bank (PhysicalDevicePushConstantBankFeaturesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_push_constant_bank (PhysicalDevicePushConstantBankPropertiesNV)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_push_descriptor (PhysicalDevicePushDescriptorProperties)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_data_graph (PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_queue_perf_hint (PhysicalDeviceQueuePerfHintFeaturesQCOM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_queue_perf_hint (PhysicalDeviceQueuePerfHintPropertiesQCOM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_rgba10x6_formats (PhysicalDeviceRGBA10X6FormatsFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_rasterization_order_attachment_access (PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_raw_access_chains (PhysicalDeviceRawAccessChainsFeaturesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_query (PhysicalDeviceRayQueryFeaturesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_ray_tracing_invocation_reorder (PhysicalDeviceRayTracingInvocationReorderFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing_invocation_reorder (PhysicalDeviceRayTracingInvocationReorderFeaturesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_ray_tracing_invocation_reorder (PhysicalDeviceRayTracingInvocationReorderPropertiesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing_invocation_reorder (PhysicalDeviceRayTracingInvocationReorderPropertiesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing_linear_swept_spheres (PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing_maintenance1 (PhysicalDeviceRayTracingMaintenance1FeaturesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing_motion_blur (PhysicalDeviceRayTracingMotionBlurFeaturesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing_pipeline (PhysicalDeviceRayTracingPipelineFeaturesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing_pipeline (PhysicalDeviceRayTracingPipelinePropertiesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing_position_fetch (PhysicalDeviceRayTracingPositionFetchFeaturesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing (PhysicalDeviceRayTracingPropertiesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing_validation (PhysicalDeviceRayTracingValidationFeaturesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_IMG_relaxed_line_rasterization (PhysicalDeviceRelaxedLineRasterizationFeaturesIMG)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_render_pass_striped (PhysicalDeviceRenderPassStripedFeaturesARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_render_pass_striped (PhysicalDeviceRenderPassStripedPropertiesARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_representative_fragment_test (PhysicalDeviceRepresentativeFragmentTestFeaturesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_robustness2 (PhysicalDeviceRobustness2FeaturesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_robustness2 (PhysicalDeviceRobustness2PropertiesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_sample_locations (PhysicalDeviceSampleLocationsPropertiesEXT)
+import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax (PhysicalDeviceSamplerFilterMinmaxProperties)
+import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion (PhysicalDeviceSamplerYcbcrConversionFeatures)
+import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_EXT_scalar_block_layout (PhysicalDeviceScalarBlockLayoutFeatures)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_scheduling_controls (PhysicalDeviceSchedulingControlsDispatchParametersPropertiesARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_scheduling_controls (PhysicalDeviceSchedulingControlsFeaturesARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_scheduling_controls (PhysicalDeviceSchedulingControlsPropertiesARM)
+import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts (PhysicalDeviceSeparateDepthStencilLayoutsFeatures)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_shader_64bit_indexing (PhysicalDeviceShader64BitIndexingFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_shader_abort (PhysicalDeviceShaderAbortFeaturesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_shader_abort (PhysicalDeviceShaderAbortPropertiesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_shader_atomic_float16_vector (PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_shader_atomic_float2 (PhysicalDeviceShaderAtomicFloat2FeaturesEXT)
+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_bfloat16 (PhysicalDeviceShaderBfloat16FeaturesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_shader_clock (PhysicalDeviceShaderClockFeaturesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_shader_constant_data (PhysicalDeviceShaderConstantDataFeaturesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_shader_core_builtins (PhysicalDeviceShaderCoreBuiltinsFeaturesARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_shader_core_builtins (PhysicalDeviceShaderCoreBuiltinsPropertiesARM)
+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_ARM_shader_core_properties (PhysicalDeviceShaderCorePropertiesARM)
+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.Extensions.VK_AMD_shader_early_and_late_fragment_tests (PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD)
+import {-# SOURCE #-} Vulkan.Extensions.VK_AMDX_shader_enqueue (PhysicalDeviceShaderEnqueueFeaturesAMDX)
+import {-# SOURCE #-} Vulkan.Extensions.VK_AMDX_shader_enqueue (PhysicalDeviceShaderEnqueuePropertiesAMDX)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_shader_expect_assume (PhysicalDeviceShaderExpectAssumeFeatures)
+import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_shader_float16_int8 (PhysicalDeviceShaderFloat16Int8Features)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_shader_float8 (PhysicalDeviceShaderFloat8FeaturesEXT)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_shader_float_controls2 (PhysicalDeviceShaderFloatControls2Features)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_shader_fma (PhysicalDeviceShaderFmaFeaturesKHR)
+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_ARM_shader_instrumentation (PhysicalDeviceShaderInstrumentationFeaturesARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_shader_instrumentation (PhysicalDeviceShaderInstrumentationPropertiesARM)
+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_EXT_shader_long_vector (PhysicalDeviceShaderLongVectorFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_shader_long_vector (PhysicalDeviceShaderLongVectorPropertiesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_shader_maximal_reconvergence (PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_VALVE_shader_mixed_float_dot_product (PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_shader_module_identifier (PhysicalDeviceShaderModuleIdentifierFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_shader_module_identifier (PhysicalDeviceShaderModuleIdentifierPropertiesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_shader_multiple_wait_queues (PhysicalDeviceShaderMultipleWaitQueuesFeaturesQCOM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_shader_multiple_wait_queues (PhysicalDeviceShaderMultipleWaitQueuesPropertiesQCOM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_shader_object (PhysicalDeviceShaderObjectFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_shader_object (PhysicalDeviceShaderObjectPropertiesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_shader_quad_control (PhysicalDeviceShaderQuadControlFeaturesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_shader_relaxed_extended_instruction (PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_shader_replicated_composites (PhysicalDeviceShaderReplicatedCompositesFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_shader_sm_builtins (PhysicalDeviceShaderSMBuiltinsFeaturesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_shader_sm_builtins (PhysicalDeviceShaderSMBuiltinsPropertiesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_shader_split_barrier (PhysicalDeviceShaderSplitBarrierFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_shader_split_barrier (PhysicalDeviceShaderSplitBarrierPropertiesEXT)
+import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_shader_subgroup_extended_types (PhysicalDeviceShaderSubgroupExtendedTypesFeatures)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_shader_subgroup_partitioned (PhysicalDeviceShaderSubgroupPartitionedFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_shader_subgroup_rotate (PhysicalDeviceShaderSubgroupRotateFeatures)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_shader_subgroup_uniform_control_flow (PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_shader_terminate_invocation (PhysicalDeviceShaderTerminateInvocationFeatures)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_shader_tile_image (PhysicalDeviceShaderTileImageFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_shader_tile_image (PhysicalDeviceShaderTileImagePropertiesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_shader_uniform_buffer_unsized_array (PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_shader_untyped_pointers (PhysicalDeviceShaderUntypedPointersFeaturesKHR)
+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.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_EXT_subpass_merge_feedback (PhysicalDeviceSubpassMergeFeedbackFeaturesEXT)
+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_swapchain_maintenance1 (PhysicalDeviceSwapchainMaintenance1FeaturesKHR)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_synchronization2 (PhysicalDeviceSynchronization2Features)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_tensors (PhysicalDeviceTensorFeaturesARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_tensors (PhysicalDeviceTensorPropertiesARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_texel_buffer_alignment (PhysicalDeviceTexelBufferAlignmentFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_texel_buffer_alignment (PhysicalDeviceTexelBufferAlignmentProperties)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_texture_compression_astc_3d (PhysicalDeviceTextureCompressionASTC3DFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_texture_compression_astc_hdr (PhysicalDeviceTextureCompressionASTCHDRFeatures)
+import {-# SOURCE #-} Vulkan.Extensions.VK_SEC_throttle_hint (PhysicalDeviceThrottleHintFeaturesSEC)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_tile_memory_heap (PhysicalDeviceTileMemoryHeapFeaturesQCOM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_tile_memory_heap (PhysicalDeviceTileMemoryHeapPropertiesQCOM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_tile_properties (PhysicalDeviceTilePropertiesFeaturesQCOM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_tile_shading (PhysicalDeviceTileShadingFeaturesQCOM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_tile_shading (PhysicalDeviceTileShadingPropertiesQCOM)
+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.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.Extensions.VK_KHR_unified_image_layouts (PhysicalDeviceUnifiedImageLayoutsFeaturesKHR)
+import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_uniform_buffer_standard_layout (PhysicalDeviceUniformBufferStandardLayoutFeatures)
+import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_variable_pointers (PhysicalDeviceVariablePointersFeatures)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_vertex_attribute_divisor (PhysicalDeviceVertexAttributeDivisorFeatures)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_vertex_attribute_divisor (PhysicalDeviceVertexAttributeDivisorProperties)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_vertex_attribute_divisor (PhysicalDeviceVertexAttributeDivisorPropertiesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_vertex_attribute_robustness (PhysicalDeviceVertexAttributeRobustnessFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state (PhysicalDeviceVertexInputDynamicStateFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Core12 (PhysicalDeviceVulkan11Features)
+import {-# SOURCE #-} Vulkan.Core12 (PhysicalDeviceVulkan11Properties)
+import {-# SOURCE #-} Vulkan.Core12 (PhysicalDeviceVulkan12Features)
+import {-# SOURCE #-} Vulkan.Core12 (PhysicalDeviceVulkan12Properties)
+import {-# SOURCE #-} Vulkan.Core13 (PhysicalDeviceVulkan13Features)
+import {-# SOURCE #-} Vulkan.Core13 (PhysicalDeviceVulkan13Properties)
+import {-# SOURCE #-} Vulkan.Core14 (PhysicalDeviceVulkan14Features)
+import {-# SOURCE #-} Vulkan.Core14 (PhysicalDeviceVulkan14Properties)
+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_QCOM_ycbcr_degamma (PhysicalDeviceYcbcrDegammaFeaturesQCOM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_ycbcr_image_arrays (PhysicalDeviceYcbcrImageArraysFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_zero_initialize_device_memory (PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_zero_initialize_workgroup_memory (PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_pipeline_binary (PipelineBinaryCreateInfoKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_pipeline_binary (PipelineBinaryDataInfoKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_pipeline_binary (PipelineBinaryDataKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_pipeline_binary (PipelineBinaryHandlesInfoKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_pipeline_binary (PipelineBinaryInfoKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_pipeline_binary (PipelineBinaryKeyKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_pipeline_binary (PipelineBinaryKeysAndDataKHR)
+import {-# SOURCE #-} Vulkan.Core10.PipelineCache (PipelineCacheCreateInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_data_graph_model (PipelineCacheHeaderVersionDataGraphQCOM)
+import {-# SOURCE #-} Vulkan.Core10.OtherTypes (PipelineCacheHeaderVersionOne)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_blend_operation_advanced (PipelineColorBlendAdvancedStateCreateInfoEXT)
+import {-# SOURCE #-} Vulkan.Core10.GraphicsPipeline (PipelineColorBlendAttachmentState)
+import {-# SOURCE #-} Vulkan.Core10.GraphicsPipeline (PipelineColorBlendStateCreateInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_color_write_enable (PipelineColorWriteCreateInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_pipeline_compiler_control (PipelineCompilerControlCreateInfoAMD)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_framebuffer_mixed_samples (PipelineCoverageModulationStateCreateInfoNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_coverage_reduction_mode (PipelineCoverageReductionStateCreateInfoNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_fragment_coverage_to_color (PipelineCoverageToColorStateCreateInfoNV)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_maintenance5 (PipelineCreateFlags2CreateInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_pipeline_binary (PipelineCreateInfoKHR)
+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.GraphicsPipeline (PipelineDepthStencilStateCreateInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_discard_rectangles (PipelineDiscardRectangleStateCreateInfoEXT)
+import {-# SOURCE #-} Vulkan.Core10.GraphicsPipeline (PipelineDynamicStateCreateInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_pipeline_executable_properties (PipelineExecutableInfoKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_pipeline_executable_properties (PipelineExecutableInternalRepresentationKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_pipeline_executable_properties (PipelineExecutablePropertiesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_pipeline_executable_properties (PipelineExecutableStatisticKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_VALVE_fragment_density_map_layered (PipelineFragmentDensityMapLayeredCreateInfoVALVE)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_fragment_shading_rate_enums (PipelineFragmentShadingRateEnumStateCreateInfoNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_fragment_shading_rate (PipelineFragmentShadingRateStateCreateInfoKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_generated_commands_compute (PipelineIndirectDeviceAddressInfoNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_pipeline_executable_properties (PipelineInfoKHR)
+import {-# SOURCE #-} Vulkan.Core10.GraphicsPipeline (PipelineInputAssemblyStateCreateInfo)
+import {-# SOURCE #-} Vulkan.Core10.PipelineLayout (PipelineLayoutCreateInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_pipeline_library (PipelineLibraryCreateInfoKHR)
+import {-# SOURCE #-} Vulkan.Core10.GraphicsPipeline (PipelineMultisampleStateCreateInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_pipeline_properties (PipelinePropertiesIdentifierEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_conservative_rasterization (PipelineRasterizationConservativeStateCreateInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_depth_clip_enable (PipelineRasterizationDepthClipStateCreateInfoEXT)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_line_rasterization (PipelineRasterizationLineStateCreateInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_provoking_vertex (PipelineRasterizationProvokingVertexStateCreateInfoEXT)
+import {-# SOURCE #-} Vulkan.Core10.GraphicsPipeline (PipelineRasterizationStateCreateInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_rasterization_order (PipelineRasterizationStateRasterizationOrderAMD)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_transform_feedback (PipelineRasterizationStateStreamCreateInfoEXT)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering (PipelineRenderingCreateInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_representative_fragment_test (PipelineRepresentativeFragmentTestStateCreateInfoNV)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_EXT_pipeline_robustness (PipelineRobustnessCreateInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_sample_locations (PipelineSampleLocationsStateCreateInfoEXT)
+import {-# SOURCE #-} Vulkan.Core10.ComputePipeline (PipelineShaderStageCreateInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_shader_module_identifier (PipelineShaderStageModuleIdentifierCreateInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_AMDX_shader_enqueue (PipelineShaderStageNodeCreateInfoAMDX)
+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.GraphicsPipeline (PipelineTessellationStateCreateInfo)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_vertex_attribute_divisor (PipelineVertexInputDivisorStateCreateInfo)
+import {-# SOURCE #-} Vulkan.Core10.GraphicsPipeline (PipelineVertexInputStateCreateInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_shading_rate_image (PipelineViewportCoarseSampleOrderStateCreateInfoNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_depth_clamp_control (PipelineViewportDepthClampControlCreateInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_depth_clip_control (PipelineViewportDepthClipControlCreateInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_scissor_exclusive (PipelineViewportExclusiveScissorStateCreateInfoNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_shading_rate_image (PipelineViewportShadingRateImageStateCreateInfoNV)
+import {-# SOURCE #-} Vulkan.Core10.GraphicsPipeline (PipelineViewportStateCreateInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_viewport_swizzle (PipelineViewportSwizzleStateCreateInfoNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_clip_space_w_scaling (PipelineViewportWScalingStateCreateInfoNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_GGP_frame_token (PresentFrameTokenGGP)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_present_id2 (PresentId2KHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_present_id (PresentIdKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_swapchain (PresentInfoKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_incremental_present (PresentRegionKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_incremental_present (PresentRegionsKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_present_timing (PresentStageTimeEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_GOOGLE_display_timing (PresentTimeGOOGLE)
+import {-# SOURCE #-} Vulkan.Extensions.VK_GOOGLE_display_timing (PresentTimesInfoGOOGLE)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_present_timing (PresentTimingInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_present_timing (PresentTimingSurfaceCapabilitiesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_present_timing (PresentTimingsInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_present_wait2 (PresentWait2InfoKHR)
+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.Extensions.VK_NV_push_constant_bank (PushConstantBankInfoNV)
+import {-# SOURCE #-} Vulkan.Core10.PipelineLayout (PushConstantRange)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_maintenance6 (PushConstantsInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_heap (PushDataInfoEXT)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_maintenance6 (PushDescriptorSetInfo)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_maintenance6 (PushDescriptorSetWithTemplateInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_low_latency (QueryLowLatencySupportNV)
+import {-# SOURCE #-} Vulkan.Core10.Query (QueryPoolCreateInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_performance_query (QueryPoolPerformanceCreateInfoKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_INTEL_performance_query (QueryPoolPerformanceQueryCreateInfoINTEL)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_diagnostic_checkpoints (QueueFamilyCheckpointProperties2NV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_diagnostic_checkpoints (QueueFamilyCheckpointPropertiesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_data_graph_optical_flow (QueueFamilyDataGraphOpticalFlowPropertiesARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_data_graph (QueueFamilyDataGraphProcessingEnginePropertiesARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_data_graph (QueueFamilyDataGraphPropertiesARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_data_graph_instruction_set_tosa (QueueFamilyDataGraphTOSAPropertiesARM)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_global_priority (QueueFamilyGlobalPriorityProperties)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance11 (QueueFamilyOptimalImageTransferGranularityPropertiesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance9 (QueueFamilyOwnershipTransferPropertiesKHR)
+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)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing (RayTracingPipelineCreateInfoNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing_pipeline (RayTracingPipelineInterfaceCreateInfoKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing_pipeline (RayTracingShaderGroupCreateInfoKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing (RayTracingShaderGroupCreateInfoNV)
+import {-# SOURCE #-} Vulkan.Core10.FundamentalTypes (Rect2D)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_incremental_present (RectLayerKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_GOOGLE_display_timing (RefreshCycleDurationGOOGLE)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_pipeline_binary (ReleaseCapturedPipelineDataInfoKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_swapchain_maintenance1 (ReleaseSwapchainImagesInfoKHR)
+import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer (RenderPassAttachmentBeginInfo)
+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_EXT_subpass_merge_feedback (RenderPassCreationControlEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_subpass_merge_feedback (RenderPassCreationFeedbackCreateInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_subpass_merge_feedback (RenderPassCreationFeedbackInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_fragment_density_map (RenderPassFragmentDensityMapCreateInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_fragment_density_map_offset (RenderPassFragmentDensityMapOffsetEndInfoEXT)
+import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_maintenance2 (RenderPassInputAttachmentAspectCreateInfo)
+import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_multiview (RenderPassMultiviewCreateInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_sample_locations (RenderPassSampleLocationsBeginInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_render_pass_striped (RenderPassStripeBeginInfoARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_render_pass_striped (RenderPassStripeInfoARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_render_pass_striped (RenderPassStripeSubmitInfoARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_subpass_merge_feedback (RenderPassSubpassFeedbackCreateInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_subpass_merge_feedback (RenderPassSubpassFeedbackInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_tile_shading (RenderPassTileShadingCreateInfoQCOM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_render_pass_transform (RenderPassTransformBeginInfoQCOM)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_maintenance5 (RenderingAreaInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance10 (RenderingAttachmentFlagsInfoKHR)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering (RenderingAttachmentInfo)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read (RenderingAttachmentLocationInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance10 (RenderingEndInfoKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_fragment_density_map (RenderingFragmentDensityMapAttachmentInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_fragment_shading_rate (RenderingFragmentShadingRateAttachmentInfoKHR)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering (RenderingInfo)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read (RenderingInputAttachmentIndexInfo)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2 (ResolveImageInfo2)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance10 (ResolveImageModeInfoKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_heap (ResourceDescriptorInfoEXT)
+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)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_image_processing2 (SamplerBlockMatchWindowCreateInfoQCOM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_border_color_swizzle (SamplerBorderColorComponentMappingCreateInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_buffer (SamplerCaptureDescriptorDataInfoEXT)
+import {-# SOURCE #-} Vulkan.Core10.Sampler (SamplerCreateInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_filter_cubic_weights (SamplerCubicWeightsCreateInfoQCOM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_custom_border_color (SamplerCustomBorderColorCreateInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_heap (SamplerCustomBorderColorIndexCreateInfoEXT)
+import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax (SamplerReductionModeCreateInfo)
+import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion (SamplerYcbcrConversionCreateInfo)
+import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion (SamplerYcbcrConversionImageFormatProperties)
+import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion (SamplerYcbcrConversionInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_ycbcr_degamma (SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QNX_external_memory_screen_buffer (ScreenBufferFormatPropertiesQNX)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QNX_external_memory_screen_buffer (ScreenBufferPropertiesQNX)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QNX_screen_surface (ScreenSurfaceCreateInfoQNX)
+import {-# SOURCE #-} Vulkan.Core10.QueueSemaphore (SemaphoreCreateInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_external_semaphore_fd (SemaphoreGetFdInfoKHR)
+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.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_KHR_maintenance6 (SetDescriptorBufferOffsetsInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_low_latency2 (SetLatencyMarkerInfoNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_present_metering (SetPresentConfigNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_generated_commands (SetStateFlagsIndirectCommandNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_shader_object (ShaderCreateInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_heap (ShaderDescriptorSetAndBindingMappingInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_shader_instrumentation (ShaderInstrumentationCreateInfoARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_shader_instrumentation (ShaderInstrumentationMetricDataHeaderARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_shader_instrumentation (ShaderInstrumentationMetricDescriptionARM)
+import {-# SOURCE #-} Vulkan.Core10.Shader (ShaderModuleCreateInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_shader_module_identifier (ShaderModuleIdentifierEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_validation_cache (ShaderModuleValidationCacheCreateInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_shader_info (ShaderResourceUsageAMD)
+import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_shader_info (ShaderStatisticsInfoAMD)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_shading_rate_image (ShadingRatePaletteNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_shared_presentable_image (SharedPresentSurfaceCapabilitiesKHR)
+import {-# SOURCE #-} Vulkan.Core10.SparseResourceMemoryManagement (SparseBufferMemoryBindInfo)
+import {-# SOURCE #-} Vulkan.Core10.SparseResourceMemoryManagement (SparseImageFormatProperties)
+import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (SparseImageFormatProperties2)
+import {-# SOURCE #-} Vulkan.Core10.SparseResourceMemoryManagement (SparseImageMemoryBind)
+import {-# SOURCE #-} Vulkan.Core10.SparseResourceMemoryManagement (SparseImageMemoryBindInfo)
+import {-# SOURCE #-} Vulkan.Core10.SparseResourceMemoryManagement (SparseImageMemoryRequirements)
+import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2 (SparseImageMemoryRequirements2)
+import {-# SOURCE #-} Vulkan.Core10.SparseResourceMemoryManagement (SparseImageOpaqueMemoryBindInfo)
+import {-# SOURCE #-} Vulkan.Core10.SparseResourceMemoryManagement (SparseMemoryBind)
+import {-# SOURCE #-} Vulkan.Core10.ComputePipeline (SpecializationInfo)
+import {-# SOURCE #-} Vulkan.Core10.ComputePipeline (SpecializationMapEntry)
+import {-# SOURCE #-} Vulkan.Core10.GraphicsPipeline (StencilOpState)
+import {-# SOURCE #-} Vulkan.Extensions.VK_GGP_stream_descriptor_surface (StreamDescriptorSurfaceCreateInfoGGP)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_device_address_commands (StridedDeviceAddressRangeKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing_pipeline (StridedDeviceAddressRegionKHR)
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Core10.Enums.StructureType (StructureType(..))
+import {-# SOURCE #-} Vulkan.Core10.Queue (SubmitInfo)
+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)
+import {-# SOURCE #-} Vulkan.Core10.Pass (SubpassDescription)
+import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2 (SubpassDescription2)
+import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve (SubpassDescriptionDepthStencilResolve)
+import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2 (SubpassEndInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled (SubpassResolvePerformanceQueryEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_sample_locations (SubpassSampleLocationsEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_HUAWEI_subpass_shading (SubpassShadingPipelineCreateInfoHUAWEI)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy (SubresourceHostMemcpySize)
+import {-# SOURCE #-} Vulkan.Core10.Image (SubresourceLayout)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_maintenance5 (SubresourceLayout2)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_heap (SubsampledImageFormatPropertiesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_display_surface_counter (SurfaceCapabilities2EXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_get_surface_capabilities2 (SurfaceCapabilities2KHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_full_screen_exclusive (SurfaceCapabilitiesFullScreenExclusiveEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_surface (SurfaceCapabilitiesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_present_barrier (SurfaceCapabilitiesPresentBarrierNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_present_id2 (SurfaceCapabilitiesPresentId2KHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_present_wait2 (SurfaceCapabilitiesPresentWait2KHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_get_surface_capabilities2 (SurfaceFormat2KHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_surface (SurfaceFormatKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_full_screen_exclusive (SurfaceFullScreenExclusiveInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_full_screen_exclusive (SurfaceFullScreenExclusiveWin32InfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_surface_maintenance1 (SurfacePresentModeCompatibilityKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_surface_maintenance1 (SurfacePresentModeKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_surface_maintenance1 (SurfacePresentScalingCapabilitiesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_surface_protected_capabilities (SurfaceProtectedCapabilitiesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_present_timing (SwapchainCalibratedTimestampInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_display_control (SwapchainCounterCreateInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_swapchain (SwapchainCreateInfoKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_display_native_hdr (SwapchainDisplayNativeHdrCreateInfoAMD)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_low_latency2 (SwapchainLatencyCreateInfoNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_present_barrier (SwapchainPresentBarrierCreateInfoNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_swapchain_maintenance1 (SwapchainPresentFenceInfoKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_swapchain_maintenance1 (SwapchainPresentModeInfoKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_swapchain_maintenance1 (SwapchainPresentModesCreateInfoKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_swapchain_maintenance1 (SwapchainPresentScalingCreateInfoKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_present_timing (SwapchainTimeDomainPropertiesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_present_timing (SwapchainTimingPropertiesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_FUCHSIA_buffer_collection (SysmemColorSpaceFUCHSIA)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_tensors (TensorCaptureDescriptorDataInfoARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_tensors (TensorCopyARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_tensors (TensorCreateInfoARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_tensors (TensorDependencyInfoARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_tensors (TensorDescriptionARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_tensors (TensorFormatPropertiesARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_tensors (TensorMemoryBarrierARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_tensors (TensorMemoryRequirementsInfoARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_tensors (TensorViewCaptureDescriptorDataInfoARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_tensors (TensorViewCreateInfoARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_heap (TexelBufferDescriptorInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_texture_gather_bias_lod (TextureLODGatherFormatPropertiesAMD)
+import {-# SOURCE #-} Vulkan.Extensions.VK_SEC_throttle_hint (ThrottleHintSubmitInfoSEC)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_tile_memory_heap (TileMemoryBindInfoQCOM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_tile_memory_heap (TileMemoryRequirementsQCOM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_tile_memory_heap (TileMemorySizeInfoQCOM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_tile_properties (TilePropertiesQCOM)
+import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore (TimelineSemaphoreSubmitInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing_maintenance1 (TraceRaysIndirectCommand2KHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing_pipeline (TraceRaysIndirectCommandKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (TransformMatrixKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_validation_cache (ValidationCacheCreateInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_validation_features (ValidationFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_validation_flags (ValidationFlagsEXT)
+import {-# SOURCE #-} Vulkan.Core10.GraphicsPipeline (VertexInputAttributeDescription)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state (VertexInputAttributeDescription2EXT)
+import {-# SOURCE #-} Vulkan.Core10.GraphicsPipeline (VertexInputBindingDescription)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state (VertexInputBindingDescription2EXT)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_vertex_attribute_divisor (VertexInputBindingDivisorDescription)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NN_vi_surface (ViSurfaceCreateInfoNN)
+import {-# SOURCE #-} Vulkan.Core10.GraphicsPipeline (Viewport)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_viewport_swizzle (ViewportSwizzleNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_clip_space_w_scaling (ViewportWScalingNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_wayland_surface (WaylandSurfaceCreateInfoKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_win32_keyed_mutex (Win32KeyedMutexAcquireReleaseInfoKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_win32_keyed_mutex (Win32KeyedMutexAcquireReleaseInfoNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_win32_surface (Win32SurfaceCreateInfoKHR)
+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.Core13.Promoted_From_VK_EXT_inline_uniform_block (WriteDescriptorSetInlineUniformBlock)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_tensors (WriteDescriptorSetTensorARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_device_generated_commands (WriteIndirectExecutionSetPipelineEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_device_generated_commands (WriteIndirectExecutionSetShaderEXT)
+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)
+-- | VkBaseOutStructure - Base structure for a read-only pointer chain
+--
+-- = Description
+--
+-- 'BaseOutStructure' can be used to facilitate iterating through a
+-- structure pointer chain that returns data back to the application.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
+-- 'BaseOutStructure', 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'Vulkan.Extensions.VK_ARM_data_graph_instruction_set_tosa.getPhysicalDeviceQueueFamilyDataGraphEngineOperationPropertiesARM',
+-- 'Vulkan.Extensions.VK_EXT_pipeline_properties.getPipelinePropertiesEXT'
+data BaseOutStructure = BaseOutStructure
+  { -- | @sType@ is the structure type of the structure being iterated through.
+    sType :: StructureType
+  , -- | @pNext@ is @NULL@ or a pointer to the next structure in a structure
+    -- chain.
+    next :: Ptr BaseOutStructure
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (BaseOutStructure)
+#endif
+deriving instance Show BaseOutStructure
+
+instance ToCStruct BaseOutStructure where
+  withCStruct x f = allocaBytes 16 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p BaseOutStructure{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (sType)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr BaseOutStructure))) (next)
+    f
+  cStructSize = 16
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (zero)
+    f
+
+instance FromCStruct BaseOutStructure where
+  peekCStruct p = do
+    sType <- peek @StructureType ((p `plusPtr` 0 :: Ptr StructureType))
+    pNext <- peek @(Ptr BaseOutStructure) ((p `plusPtr` 8 :: Ptr (Ptr BaseOutStructure)))
+    pure $ BaseOutStructure
+             sType pNext
+
+instance Storable BaseOutStructure where
+  sizeOf ~_ = 16
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero BaseOutStructure where
+  zero = BaseOutStructure
+           zero
+           zero
+
+
+-- | VkBaseInStructure - Base structure for a read-only pointer chain
+--
+-- = Description
+--
+-- 'BaseInStructure' can be used to facilitate iterating through a
+-- read-only structure pointer chain.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
+-- 'BaseInStructure', 'Vulkan.Core10.Enums.StructureType.StructureType'
+data BaseInStructure = BaseInStructure
+  { -- | @sType@ is the structure type of the structure being iterated through.
+    sType :: StructureType
+  , -- | @pNext@ is @NULL@ or a pointer to the next structure in a structure
+    -- chain.
+    next :: Ptr BaseInStructure
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (BaseInStructure)
+#endif
+deriving instance Show BaseInStructure
+
+instance ToCStruct BaseInStructure where
+  withCStruct x f = allocaBytes 16 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p BaseInStructure{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (sType)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr BaseInStructure))) (next)
+    f
+  cStructSize = 16
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (zero)
+    f
+
+instance FromCStruct BaseInStructure where
+  peekCStruct p = do
+    sType <- peek @StructureType ((p `plusPtr` 0 :: Ptr StructureType))
+    pNext <- peek @(Ptr BaseInStructure) ((p `plusPtr` 8 :: Ptr (Ptr BaseInStructure)))
+    pure $ BaseInStructure
+             sType pNext
+
+instance Storable BaseInStructure where
+  sizeOf ~_ = 16
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero BaseInStructure where
+  zero = BaseInStructure
+           zero
+           zero
+
+
+type family Extends (a :: [Type] -> Type) (b :: Type) :: Constraint where
+  Extends AccelerationStructureCreateInfo2KHR OpaqueCaptureDescriptorDataCreateInfoEXT = ()
+  Extends AccelerationStructureCreateInfoKHR OpaqueCaptureDescriptorDataCreateInfoEXT = ()
+  Extends AccelerationStructureCreateInfoKHR AccelerationStructureMotionInfoNV = ()
+  Extends AccelerationStructureCreateInfoNV OpaqueCaptureDescriptorDataCreateInfoEXT = ()
+  Extends AccelerationStructureDenseGeometryFormatTrianglesDataAMDX AccelerationStructureTrianglesOpacityMicromapKHR = ()
+  Extends AccelerationStructureDenseGeometryFormatTrianglesDataAMDX AccelerationStructureTrianglesOpacityMicromapEXT = ()
+  Extends AccelerationStructureGeometryKHR AccelerationStructureGeometryLinearSweptSpheresDataNV = ()
+  Extends AccelerationStructureGeometryKHR AccelerationStructureGeometrySpheresDataNV = ()
+  Extends AccelerationStructureGeometryKHR AccelerationStructureGeometryMicromapDataKHR = ()
+  Extends AccelerationStructureGeometryKHR (AccelerationStructureDenseGeometryFormatTrianglesDataAMDX '[]) = ()
+  Extends AccelerationStructureGeometryTrianglesDataKHR AccelerationStructureGeometryMotionTrianglesDataNV = ()
+  Extends AccelerationStructureGeometryTrianglesDataKHR AccelerationStructureTrianglesOpacityMicromapKHR = ()
+  Extends AccelerationStructureGeometryTrianglesDataKHR AccelerationStructureTrianglesOpacityMicromapEXT = ()
+  Extends AccelerationStructureGeometryTrianglesDataKHR AccelerationStructureTrianglesDisplacementMicromapNV = ()
+  Extends AndroidHardwareBufferPropertiesANDROID AndroidHardwareBufferFormatPropertiesANDROID = ()
+  Extends AndroidHardwareBufferPropertiesANDROID AndroidHardwareBufferFormatProperties2ANDROID = ()
+  Extends AndroidHardwareBufferPropertiesANDROID AndroidHardwareBufferFormatResolvePropertiesANDROID = ()
+  Extends AttachmentDescription2 ExternalFormatANDROID = ()
+  Extends AttachmentDescription2 AttachmentDescriptionStencilLayout = ()
+  Extends AttachmentReference2 AttachmentReferenceStencilLayout = ()
+  Extends BindBufferMemoryInfo BindBufferMemoryDeviceGroupInfo = ()
+  Extends BindBufferMemoryInfo BindMemoryStatus = ()
+  Extends BindDescriptorBufferEmbeddedSamplersInfoEXT PipelineLayoutCreateInfo = ()
+  Extends BindDescriptorSetsInfo PipelineLayoutCreateInfo = ()
+  Extends BindImageMemoryInfo BindImageMemoryDeviceGroupInfo = ()
+  Extends BindImageMemoryInfo BindImageMemorySwapchainInfoKHR = ()
+  Extends BindImageMemoryInfo BindImagePlaneMemoryInfo = ()
+  Extends BindImageMemoryInfo BindMemoryStatus = ()
+  Extends BindSparseInfo DeviceGroupBindSparseInfo = ()
+  Extends BindSparseInfo TimelineSemaphoreSubmitInfo = ()
+  Extends BindSparseInfo FrameBoundaryEXT = ()
+  Extends BindSparseInfo FrameBoundaryTensorsARM = ()
+  Extends BlitImageInfo2 BlitImageCubicWeightsInfoQCOM = ()
+  Extends BufferCreateInfo BufferUsageFlags2CreateInfo = ()
+  Extends BufferCreateInfo DedicatedAllocationBufferCreateInfoNV = ()
+  Extends BufferCreateInfo ExternalMemoryBufferCreateInfo = ()
+  Extends BufferCreateInfo BufferOpaqueCaptureAddressCreateInfo = ()
+  Extends BufferCreateInfo BufferDeviceAddressCreateInfoEXT = ()
+  Extends BufferCreateInfo OpaqueCaptureDescriptorDataCreateInfoEXT = ()
+  Extends BufferCreateInfo BufferCollectionBufferCreateInfoFUCHSIA = ()
+  Extends BufferImageCopy2 CopyCommandTransformInfoQCOM = ()
+  Extends BufferMemoryBarrier ExternalMemoryAcquireUnmodifiedEXT = ()
+  Extends BufferMemoryBarrier2 MemoryBarrierAccessFlags3KHR = ()
+  Extends BufferMemoryBarrier2 ExternalMemoryAcquireUnmodifiedEXT = ()
+  Extends BufferViewCreateInfo BufferUsageFlags2CreateInfo = ()
+  Extends BufferViewCreateInfo ExportMetalObjectCreateInfoEXT = ()
+  Extends CalibratedTimestampInfoKHR SwapchainCalibratedTimestampInfoEXT = ()
+  Extends CommandBufferBeginInfo DeviceGroupCommandBufferBeginInfo = ()
+  Extends CommandBufferInheritanceInfo CommandBufferInheritanceConditionalRenderingInfoEXT = ()
+  Extends CommandBufferInheritanceInfo ExternalFormatANDROID = ()
+  Extends CommandBufferInheritanceInfo CommandBufferInheritanceRenderPassTransformInfoQCOM = ()
+  Extends CommandBufferInheritanceInfo CustomResolveCreateInfoEXT = ()
+  Extends CommandBufferInheritanceInfo CommandBufferInheritanceViewportScissorInfoNV = ()
+  Extends CommandBufferInheritanceInfo CommandBufferInheritanceRenderingInfo = ()
+  Extends CommandBufferInheritanceInfo AttachmentSampleCountInfoAMD = ()
+  Extends CommandBufferInheritanceInfo MultiviewPerViewAttributesInfoNVX = ()
+  Extends CommandBufferInheritanceInfo TileMemoryBindInfoQCOM = ()
+  Extends CommandBufferInheritanceInfo RenderingAttachmentLocationInfo = ()
+  Extends CommandBufferInheritanceInfo RenderingInputAttachmentIndexInfo = ()
+  Extends CommandBufferInheritanceInfo RenderPassTileShadingCreateInfoQCOM = ()
+  Extends CommandBufferInheritanceInfo CommandBufferInheritanceDescriptorHeapInfoEXT = ()
+  Extends CommandBufferSubmitInfo RenderPassStripeSubmitInfoARM = ()
+  Extends CommandPoolCreateInfo DataGraphProcessingEngineCreateInfoARM = ()
+  Extends ComputePipelineCreateInfo ComputePipelineIndirectBufferInfoNV = ()
+  Extends ComputePipelineCreateInfo PipelineCreateFlags2CreateInfo = ()
+  Extends ComputePipelineCreateInfo PipelineBinaryInfoKHR = ()
+  Extends ComputePipelineCreateInfo PipelineCreationFeedbackCreateInfo = ()
+  Extends ComputePipelineCreateInfo SubpassShadingPipelineCreateInfoHUAWEI = ()
+  Extends ComputePipelineCreateInfo PipelineCompilerControlCreateInfoAMD = ()
+  Extends ComputePipelineCreateInfo PipelineRobustnessCreateInfo = ()
+  Extends CuModuleCreateInfoNVX CuModuleTexturingModeCreateInfoNVX = ()
+  Extends DataGraphPipelineConstantARM TensorDescriptionARM = ()
+  Extends DataGraphPipelineConstantARM DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM = ()
+  Extends DataGraphPipelineCreateInfoARM (ShaderModuleCreateInfo '[]) = ()
+  Extends DataGraphPipelineCreateInfoARM PipelineCreationFeedbackCreateInfo = ()
+  Extends DataGraphPipelineCreateInfoARM DataGraphPipelineNeuralStatisticsCreateInfoARM = ()
+  Extends DataGraphPipelineCreateInfoARM DataGraphPipelineCompilerControlCreateInfoARM = ()
+  Extends DataGraphPipelineCreateInfoARM DataGraphPipelineShaderModuleCreateInfoARM = ()
+  Extends DataGraphPipelineCreateInfoARM DataGraphPipelineIdentifierCreateInfoARM = ()
+  Extends DataGraphPipelineCreateInfoARM DataGraphProcessingEngineCreateInfoARM = ()
+  Extends DataGraphPipelineCreateInfoARM DataGraphPipelineBuiltinModelCreateInfoQCOM = ()
+  Extends DataGraphPipelineCreateInfoARM DataGraphPipelineSingleNodeCreateInfoARM = ()
+  Extends DataGraphPipelineCreateInfoARM DataGraphPipelineOpticalFlowCreateInfoARM = ()
+  Extends DataGraphPipelineDispatchInfoARM DataGraphPipelineOpticalFlowDispatchInfoARM = ()
+  Extends DataGraphPipelineResourceInfoARM TensorDescriptionARM = ()
+  Extends DataGraphPipelineResourceInfoARM DataGraphPipelineResourceInfoImageLayoutARM = ()
+  Extends DataGraphPipelineSessionCreateInfoARM DataGraphPipelineSessionNeuralStatisticsCreateInfoARM = ()
+  Extends DebugUtilsMessengerCallbackDataEXT DeviceAddressBindingCallbackDataEXT = ()
+  Extends DependencyInfo TensorMemoryBarrierARM = ()
+  Extends DependencyInfo TensorDependencyInfoARM = ()
+  Extends DependencyInfo (MemoryRangeBarriersInfoKHR '[]) = ()
+  Extends DepthBiasInfoEXT DepthBiasRepresentationInfoEXT = ()
+  Extends DescriptorBufferBindingInfoEXT BufferUsageFlags2CreateInfo = ()
+  Extends DescriptorBufferBindingInfoEXT DescriptorBufferBindingPushDescriptorBufferHandleEXT = ()
+  Extends DescriptorGetInfoEXT DescriptorGetTensorInfoARM = ()
+  Extends DescriptorPoolCreateInfo DescriptorPoolInlineUniformBlockCreateInfo = ()
+  Extends DescriptorPoolCreateInfo MutableDescriptorTypeCreateInfoEXT = ()
+  Extends DescriptorPoolCreateInfo DataGraphProcessingEngineCreateInfoARM = ()
+  Extends DescriptorSetAllocateInfo DescriptorSetVariableDescriptorCountAllocateInfo = ()
+  Extends DescriptorSetAndBindingMappingEXT PushConstantBankInfoNV = ()
+  Extends DescriptorSetLayoutCreateInfo DescriptorSetLayoutBindingFlagsCreateInfo = ()
+  Extends DescriptorSetLayoutCreateInfo MutableDescriptorTypeCreateInfoEXT = ()
+  Extends DescriptorSetLayoutSupport DescriptorSetVariableDescriptorCountLayoutSupport = ()
+  Extends DeviceCreateInfo PhysicalDeviceDeviceGeneratedCommandsFeaturesNV = ()
+  Extends DeviceCreateInfo PhysicalDevicePushConstantBankFeaturesNV = ()
+  Extends DeviceCreateInfo PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV = ()
+  Extends DeviceCreateInfo DevicePrivateDataCreateInfo = ()
+  Extends DeviceCreateInfo PhysicalDevicePrivateDataFeatures = ()
+  Extends DeviceCreateInfo (PhysicalDeviceFeatures2 '[]) = ()
+  Extends DeviceCreateInfo PhysicalDeviceVariablePointersFeatures = ()
+  Extends DeviceCreateInfo PhysicalDeviceMultiviewFeatures = ()
+  Extends DeviceCreateInfo DeviceGroupDeviceCreateInfo = ()
+  Extends DeviceCreateInfo PhysicalDevicePresentIdFeaturesKHR = ()
+  Extends DeviceCreateInfo PhysicalDevicePresentId2FeaturesKHR = ()
+  Extends DeviceCreateInfo PhysicalDevicePresentWaitFeaturesKHR = ()
+  Extends DeviceCreateInfo PhysicalDevicePresentWait2FeaturesKHR = ()
+  Extends DeviceCreateInfo PhysicalDevicePresentTimingFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDevice16BitStorageFeatures = ()
+  Extends DeviceCreateInfo PhysicalDeviceShaderSubgroupExtendedTypesFeatures = ()
+  Extends DeviceCreateInfo PhysicalDeviceSamplerYcbcrConversionFeatures = ()
+  Extends DeviceCreateInfo PhysicalDeviceProtectedMemoryFeatures = ()
+  Extends DeviceCreateInfo PhysicalDeviceBlendOperationAdvancedFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceMultiDrawFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceInlineUniformBlockFeatures = ()
+  Extends DeviceCreateInfo PhysicalDeviceMaintenance4Features = ()
+  Extends DeviceCreateInfo PhysicalDeviceMaintenance5Features = ()
+  Extends DeviceCreateInfo PhysicalDeviceMaintenance6Features = ()
+  Extends DeviceCreateInfo PhysicalDeviceMaintenance7FeaturesKHR = ()
+  Extends DeviceCreateInfo PhysicalDeviceMaintenance8FeaturesKHR = ()
+  Extends DeviceCreateInfo PhysicalDeviceMaintenance9FeaturesKHR = ()
+  Extends DeviceCreateInfo PhysicalDeviceMaintenance11FeaturesKHR = ()
+  Extends DeviceCreateInfo PhysicalDeviceMaintenance10FeaturesKHR = ()
+  Extends DeviceCreateInfo PhysicalDeviceShaderDrawParametersFeatures = ()
+  Extends DeviceCreateInfo PhysicalDeviceShaderFloat16Int8Features = ()
+  Extends DeviceCreateInfo PhysicalDeviceHostQueryResetFeatures = ()
+  Extends DeviceCreateInfo PhysicalDeviceElapsedTimerQueryFeaturesQCOM = ()
+  Extends DeviceCreateInfo PhysicalDeviceGlobalPriorityQueryFeatures = ()
+  Extends DeviceCreateInfo PhysicalDeviceDeviceMemoryReportFeaturesEXT = ()
+  Extends DeviceCreateInfo DeviceDeviceMemoryReportCreateInfoEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceDescriptorIndexingFeatures = ()
+  Extends DeviceCreateInfo PhysicalDeviceTimelineSemaphoreFeatures = ()
+  Extends DeviceCreateInfo PhysicalDevice8BitStorageFeatures = ()
+  Extends DeviceCreateInfo PhysicalDeviceConditionalRenderingFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceVulkanMemoryModelFeatures = ()
+  Extends DeviceCreateInfo PhysicalDeviceShaderAtomicInt64Features = ()
+  Extends DeviceCreateInfo PhysicalDeviceShaderAtomicFloatFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceShaderAtomicFloat2FeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceVertexAttributeDivisorFeatures = ()
+  Extends DeviceCreateInfo PhysicalDeviceASTCDecodeFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceTransformFeedbackFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceRepresentativeFragmentTestFeaturesNV = ()
+  Extends DeviceCreateInfo PhysicalDeviceExclusiveScissorFeaturesNV = ()
+  Extends DeviceCreateInfo PhysicalDeviceCornerSampledImageFeaturesNV = ()
+  Extends DeviceCreateInfo PhysicalDeviceComputeShaderDerivativesFeaturesKHR = ()
+  Extends DeviceCreateInfo PhysicalDeviceShaderImageFootprintFeaturesNV = ()
+  Extends DeviceCreateInfo PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV = ()
+  Extends DeviceCreateInfo PhysicalDeviceCopyMemoryIndirectFeaturesKHR = ()
+  Extends DeviceCreateInfo PhysicalDeviceCopyMemoryIndirectFeaturesNV = ()
+  Extends DeviceCreateInfo PhysicalDeviceMemoryDecompressionFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceShadingRateImageFeaturesNV = ()
+  Extends DeviceCreateInfo PhysicalDeviceInvocationMaskFeaturesHUAWEI = ()
+  Extends DeviceCreateInfo PhysicalDeviceMeshShaderFeaturesNV = ()
+  Extends DeviceCreateInfo PhysicalDeviceMeshShaderFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceAccelerationStructureFeaturesKHR = ()
+  Extends DeviceCreateInfo PhysicalDeviceRayTracingPipelineFeaturesKHR = ()
+  Extends DeviceCreateInfo PhysicalDeviceRayQueryFeaturesKHR = ()
+  Extends DeviceCreateInfo PhysicalDeviceRayTracingMaintenance1FeaturesKHR = ()
+  Extends DeviceCreateInfo DeviceMemoryOverallocationCreateInfoAMD = ()
+  Extends DeviceCreateInfo PhysicalDeviceFragmentDensityMapFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceFragmentDensityMap2FeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceScalarBlockLayoutFeatures = ()
+  Extends DeviceCreateInfo PhysicalDeviceUniformBufferStandardLayoutFeatures = ()
+  Extends DeviceCreateInfo PhysicalDeviceDepthClipEnableFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceMemoryPriorityFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceBufferDeviceAddressFeatures = ()
+  Extends DeviceCreateInfo PhysicalDeviceBufferDeviceAddressFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceImagelessFramebufferFeatures = ()
+  Extends DeviceCreateInfo PhysicalDeviceTextureCompressionASTCHDRFeatures = ()
+  Extends DeviceCreateInfo PhysicalDeviceCooperativeMatrixFeaturesNV = ()
+  Extends DeviceCreateInfo PhysicalDeviceYcbcrImageArraysFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDevicePresentBarrierFeaturesNV = ()
+  Extends DeviceCreateInfo PhysicalDevicePerformanceQueryFeaturesKHR = ()
+  Extends DeviceCreateInfo PhysicalDeviceCoverageReductionModeFeaturesNV = ()
+  Extends DeviceCreateInfo PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL = ()
+  Extends DeviceCreateInfo PhysicalDeviceShaderClockFeaturesKHR = ()
+  Extends DeviceCreateInfo PhysicalDeviceIndexTypeUint8Features = ()
+  Extends DeviceCreateInfo PhysicalDeviceShaderSMBuiltinsFeaturesNV = ()
+  Extends DeviceCreateInfo PhysicalDeviceFragmentShaderInterlockFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceSeparateDepthStencilLayoutsFeatures = ()
+  Extends DeviceCreateInfo PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDevicePipelineExecutablePropertiesFeaturesKHR = ()
+  Extends DeviceCreateInfo PhysicalDeviceShaderDemoteToHelperInvocationFeatures = ()
+  Extends DeviceCreateInfo PhysicalDeviceTexelBufferAlignmentFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceSubgroupSizeControlFeatures = ()
+  Extends DeviceCreateInfo PhysicalDeviceLineRasterizationFeatures = ()
+  Extends DeviceCreateInfo PhysicalDevicePipelineCreationCacheControlFeatures = ()
+  Extends DeviceCreateInfo PhysicalDeviceVulkan11Features = ()
+  Extends DeviceCreateInfo PhysicalDeviceVulkan12Features = ()
+  Extends DeviceCreateInfo PhysicalDeviceVulkan13Features = ()
+  Extends DeviceCreateInfo PhysicalDeviceVulkan14Features = ()
+  Extends DeviceCreateInfo PhysicalDeviceCoherentMemoryFeaturesAMD = ()
+  Extends DeviceCreateInfo PhysicalDeviceGpaFeaturesAMD = ()
+  Extends DeviceCreateInfo PhysicalDeviceCustomBorderColorFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceBorderColorSwizzleFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceExtendedDynamicStateFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceExtendedDynamicState2FeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceExtendedDynamicState3FeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceDiagnosticsConfigFeaturesNV = ()
+  Extends DeviceCreateInfo DeviceDiagnosticsConfigCreateInfoNV = ()
+  Extends DeviceCreateInfo PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures = ()
+  Extends DeviceCreateInfo PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR = ()
+  Extends DeviceCreateInfo PhysicalDeviceRobustness2FeaturesKHR = ()
+  Extends DeviceCreateInfo PhysicalDeviceImageRobustnessFeatures = ()
+  Extends DeviceCreateInfo PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR = ()
+  Extends DeviceCreateInfo PhysicalDevicePortabilitySubsetFeaturesKHR = ()
+  Extends DeviceCreateInfo PhysicalDevice4444FormatsFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceSubpassShadingFeaturesHUAWEI = ()
+  Extends DeviceCreateInfo (PhysicalDeviceClusterCullingShaderFeaturesHUAWEI '[]) = ()
+  Extends DeviceCreateInfo PhysicalDeviceShaderImageAtomicInt64FeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceFragmentShadingRateFeaturesKHR = ()
+  Extends DeviceCreateInfo PhysicalDeviceShaderTerminateInvocationFeatures = ()
+  Extends DeviceCreateInfo PhysicalDeviceFragmentShadingRateEnumsFeaturesNV = ()
+  Extends DeviceCreateInfo PhysicalDeviceImage2DViewOf3DFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceImageSlicedViewOf3DFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceLegacyVertexAttributesFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceMutableDescriptorTypeFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceDepthClipControlFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceCustomResolveFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceDepthClampControlFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceVertexInputDynamicStateFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceExternalMemoryRDMAFeaturesNV = ()
+  Extends DeviceCreateInfo PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR = ()
+  Extends DeviceCreateInfo PhysicalDeviceColorWriteEnableFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceSynchronization2Features = ()
+  Extends DeviceCreateInfo PhysicalDeviceUnifiedImageLayoutsFeaturesKHR = ()
+  Extends DeviceCreateInfo PhysicalDeviceHostImageCopyFeatures = ()
+  Extends DeviceCreateInfo PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceLegacyDitheringFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDevicePipelineProtectedAccessFeatures = ()
+  Extends DeviceCreateInfo PhysicalDeviceInheritedViewportScissorFeaturesNV = ()
+  Extends DeviceCreateInfo PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceProvokingVertexFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceDescriptorBufferFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceShaderIntegerDotProductFeatures = ()
+  Extends DeviceCreateInfo PhysicalDeviceFragmentShaderBarycentricFeaturesKHR = ()
+  Extends DeviceCreateInfo PhysicalDeviceShaderFmaFeaturesKHR = ()
+  Extends DeviceCreateInfo PhysicalDeviceRayTracingMotionBlurFeaturesNV = ()
+  Extends DeviceCreateInfo PhysicalDeviceRayTracingValidationFeaturesNV = ()
+  Extends DeviceCreateInfo PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV = ()
+  Extends DeviceCreateInfo PhysicalDeviceRGBA10X6FormatsFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceDynamicRenderingFeatures = ()
+  Extends DeviceCreateInfo PhysicalDeviceImageViewMinLodFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceLinearColorAttachmentFeaturesNV = ()
+  Extends DeviceCreateInfo PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDevicePipelineBinaryFeaturesKHR = ()
+  Extends DeviceCreateInfo DevicePipelineBinaryInternalCacheControlKHR = ()
+  Extends DeviceCreateInfo PhysicalDeviceDataGraphNeuralAcceleratorStatisticsFeaturesARM = ()
+  Extends DeviceCreateInfo PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE = ()
+  Extends DeviceCreateInfo PhysicalDeviceNestedCommandBufferFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceShaderModuleIdentifierFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceImageCompressionControlFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceSubpassMergeFeedbackFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceOpacityMicromapFeaturesKHR = ()
+  Extends DeviceCreateInfo PhysicalDeviceOpacityMicromapFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceDisplacementMicromapFeaturesNV = ()
+  Extends DeviceCreateInfo PhysicalDevicePipelinePropertiesFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD = ()
+  Extends DeviceCreateInfo PhysicalDeviceNonSeamlessCubeMapFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDevicePipelineRobustnessFeatures = ()
+  Extends DeviceCreateInfo PhysicalDeviceShaderMultipleWaitQueuesFeaturesQCOM = ()
+  Extends DeviceCreateInfo PhysicalDeviceImageProcessingFeaturesQCOM = ()
+  Extends DeviceCreateInfo PhysicalDeviceTilePropertiesFeaturesQCOM = ()
+  Extends DeviceCreateInfo PhysicalDeviceAmigoProfilingFeaturesSEC = ()
+  Extends DeviceCreateInfo PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceAddressBindingReportFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceOpticalFlowFeaturesNV = ()
+  Extends DeviceCreateInfo PhysicalDeviceFaultFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceFaultFeaturesKHR = ()
+  Extends DeviceCreateInfo PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceShaderCoreBuiltinsFeaturesARM = ()
+  Extends DeviceCreateInfo PhysicalDeviceFrameBoundaryFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceInternallySynchronizedQueuesFeaturesKHR = ()
+  Extends DeviceCreateInfo PhysicalDeviceSwapchainMaintenance1FeaturesKHR = ()
+  Extends DeviceCreateInfo PhysicalDeviceDepthBiasControlFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceRayTracingInvocationReorderFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceRayTracingInvocationReorderFeaturesNV = ()
+  Extends DeviceCreateInfo PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV = ()
+  Extends DeviceCreateInfo PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM = ()
+  Extends DeviceCreateInfo PhysicalDeviceRayTracingPositionFetchFeaturesKHR = ()
+  Extends DeviceCreateInfo PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM = ()
+  Extends DeviceCreateInfo PhysicalDeviceShaderObjectFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceShaderTileImageFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX = ()
+  Extends DeviceCreateInfo PhysicalDeviceCooperativeMatrixFeaturesKHR = ()
+  Extends DeviceCreateInfo PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM = ()
+  Extends DeviceCreateInfo PhysicalDeviceShaderEnqueueFeaturesAMDX = ()
+  Extends DeviceCreateInfo PhysicalDeviceAntiLagFeaturesAMD = ()
+  Extends DeviceCreateInfo PhysicalDeviceTileMemoryHeapFeaturesQCOM = ()
+  Extends DeviceCreateInfo PhysicalDeviceCubicClampFeaturesQCOM = ()
+  Extends DeviceCreateInfo PhysicalDeviceYcbcrDegammaFeaturesQCOM = ()
+  Extends DeviceCreateInfo PhysicalDeviceCubicWeightsFeaturesQCOM = ()
+  Extends DeviceCreateInfo PhysicalDeviceImageProcessing2FeaturesQCOM = ()
+  Extends DeviceCreateInfo PhysicalDeviceImageProcessing3FeaturesQCOM = ()
+  Extends DeviceCreateInfo PhysicalDeviceDescriptorPoolOverallocationFeaturesNV = ()
+  Extends DeviceCreateInfo PhysicalDevicePerStageDescriptorSetFeaturesNV = ()
+  Extends DeviceCreateInfo PhysicalDeviceExternalFormatResolveFeaturesANDROID = ()
+  Extends DeviceCreateInfo PhysicalDeviceCudaKernelLaunchFeaturesNV = ()
+  Extends DeviceCreateInfo DeviceQueueShaderCoreControlCreateInfoARM = ()
+  Extends DeviceCreateInfo PhysicalDeviceSchedulingControlsFeaturesARM = ()
+  Extends DeviceCreateInfo PhysicalDeviceRelaxedLineRasterizationFeaturesIMG = ()
+  Extends DeviceCreateInfo PhysicalDeviceRenderPassStripedFeaturesARM = ()
+  Extends DeviceCreateInfo PhysicalDevicePipelineOpacityMicromapFeaturesARM = ()
+  Extends DeviceCreateInfo PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR = ()
+  Extends DeviceCreateInfo PhysicalDeviceShaderSubgroupRotateFeatures = ()
+  Extends DeviceCreateInfo PhysicalDeviceShaderExpectAssumeFeatures = ()
+  Extends DeviceCreateInfo PhysicalDeviceShaderFloatControls2Features = ()
+  Extends DeviceCreateInfo PhysicalDeviceDynamicRenderingLocalReadFeatures = ()
+  Extends DeviceCreateInfo PhysicalDeviceShaderQuadControlFeaturesKHR = ()
+  Extends DeviceCreateInfo PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV = ()
+  Extends DeviceCreateInfo PhysicalDeviceMapMemoryPlacedFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceShaderBfloat16FeaturesKHR = ()
+  Extends DeviceCreateInfo PhysicalDeviceRawAccessChainsFeaturesNV = ()
+  Extends DeviceCreateInfo PhysicalDeviceCommandBufferInheritanceFeaturesNV = ()
+  Extends DeviceCreateInfo PhysicalDeviceImageAlignmentControlFeaturesMESA = ()
+  Extends DeviceCreateInfo PhysicalDeviceShaderReplicatedCompositesFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR = ()
+  Extends DeviceCreateInfo PhysicalDeviceCooperativeMatrix2FeaturesNV = ()
+  Extends DeviceCreateInfo PhysicalDeviceHdrVividFeaturesHUAWEI = ()
+  Extends DeviceCreateInfo PhysicalDeviceVertexAttributeRobustnessFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceDenseGeometryFormatFeaturesAMDX = ()
+  Extends DeviceCreateInfo PhysicalDeviceDepthClampZeroOneFeaturesKHR = ()
+  Extends DeviceCreateInfo PhysicalDeviceCooperativeVectorFeaturesNV = ()
+  Extends DeviceCreateInfo PhysicalDeviceTileShadingFeaturesQCOM = ()
+  Extends DeviceCreateInfo PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE = ()
+  Extends DeviceCreateInfo PhysicalDevicePresentMeteringFeaturesNV = ()
+  Extends DeviceCreateInfo ExternalComputeQueueDeviceCreateInfoNV = ()
+  Extends DeviceCreateInfo PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE = ()
+  Extends DeviceCreateInfo PhysicalDevicePrimitiveRestartIndexFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceFormatPackFeaturesARM = ()
+  Extends DeviceCreateInfo PhysicalDeviceThrottleHintFeaturesSEC = ()
+  Extends DeviceCreateInfo PhysicalDeviceTensorFeaturesARM = ()
+  Extends DeviceCreateInfo PhysicalDeviceDescriptorBufferTensorFeaturesARM = ()
+  Extends DeviceCreateInfo PhysicalDeviceShaderFloat8FeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceDataGraphFeaturesARM = ()
+  Extends DeviceCreateInfo PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC = ()
+  Extends DeviceCreateInfo PhysicalDeviceDataGraphModelFeaturesQCOM = ()
+  Extends DeviceCreateInfo PhysicalDeviceShaderUntypedPointersFeaturesKHR = ()
+  Extends DeviceCreateInfo PhysicalDeviceShader64BitIndexingFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceQueuePerfHintFeaturesQCOM = ()
+  Extends DeviceCreateInfo PhysicalDeviceComputeOccupancyPriorityFeaturesNV = ()
+  Extends DeviceCreateInfo PhysicalDeviceShaderLongVectorFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceTextureCompressionASTC3DFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceShaderSubgroupPartitionedFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceShaderSplitBarrierFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceDescriptorHeapFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceShaderInstrumentationFeaturesARM = ()
+  Extends DeviceCreateInfo PhysicalDeviceDeviceAddressCommandsFeaturesKHR = ()
+  Extends DeviceCreateInfo PhysicalDeviceShaderConstantDataFeaturesKHR = ()
+  Extends DeviceCreateInfo PhysicalDeviceShaderAbortFeaturesKHR = ()
+  Extends DeviceCreateInfo PhysicalDeviceDataGraphOpticalFlowFeaturesARM = ()
+  Extends DeviceFaultDebugInfoKHR DeviceFaultShaderAbortMessageInfoKHR = ()
+  Extends DeviceMemoryImageCopyKHR CopyCommandTransformInfoQCOM = ()
+  Extends DeviceQueueCreateInfo DeviceQueueGlobalPriorityCreateInfo = ()
+  Extends DeviceQueueCreateInfo DeviceQueueShaderCoreControlCreateInfoARM = ()
+  Extends DisplayModeProperties2KHR DisplayModeStereoPropertiesNV = ()
+  Extends DisplaySurfaceCreateInfoKHR DisplaySurfaceStereoCreateInfoNV = ()
+  Extends EventCreateInfo ExportMetalObjectCreateInfoEXT = ()
+  Extends EventCreateInfo ImportMetalSharedEventInfoEXT = ()
+  Extends ExecutionGraphPipelineCreateInfoAMDX PipelineCreationFeedbackCreateInfo = ()
+  Extends ExecutionGraphPipelineCreateInfoAMDX PipelineCompilerControlCreateInfoAMD = ()
+  Extends ExportMetalObjectsInfoEXT ExportMetalDeviceInfoEXT = ()
+  Extends ExportMetalObjectsInfoEXT ExportMetalCommandQueueInfoEXT = ()
+  Extends ExportMetalObjectsInfoEXT ExportMetalBufferInfoEXT = ()
+  Extends ExportMetalObjectsInfoEXT ExportMetalTextureInfoEXT = ()
+  Extends ExportMetalObjectsInfoEXT ExportMetalIOSurfaceInfoEXT = ()
+  Extends ExportMetalObjectsInfoEXT ExportMetalSharedEventInfoEXT = ()
+  Extends FenceCreateInfo ExportFenceCreateInfo = ()
+  Extends FenceCreateInfo ExportFenceWin32HandleInfoKHR = ()
+  Extends FormatProperties2 DrmFormatModifierPropertiesListEXT = ()
+  Extends FormatProperties2 SubpassResolvePerformanceQueryEXT = ()
+  Extends FormatProperties2 FormatProperties3 = ()
+  Extends FormatProperties2 DrmFormatModifierPropertiesList2EXT = ()
+  Extends FormatProperties2 TensorFormatPropertiesARM = ()
+  Extends FramebufferCreateInfo FramebufferAttachmentsCreateInfo = ()
+  Extends GeneratedCommandsInfoEXT GeneratedCommandsPipelineInfoEXT = ()
+  Extends GeneratedCommandsInfoEXT GeneratedCommandsShaderInfoEXT = ()
+  Extends GeneratedCommandsMemoryRequirementsInfoEXT GeneratedCommandsPipelineInfoEXT = ()
+  Extends GeneratedCommandsMemoryRequirementsInfoEXT GeneratedCommandsShaderInfoEXT = ()
+  Extends GraphicsPipelineCreateInfo PipelineCreateFlags2CreateInfo = ()
+  Extends GraphicsPipelineCreateInfo PipelineBinaryInfoKHR = ()
+  Extends GraphicsPipelineCreateInfo GraphicsPipelineShaderGroupsCreateInfoNV = ()
+  Extends GraphicsPipelineCreateInfo PipelineDiscardRectangleStateCreateInfoEXT = ()
+  Extends GraphicsPipelineCreateInfo ExternalFormatANDROID = ()
+  Extends GraphicsPipelineCreateInfo PipelineRepresentativeFragmentTestStateCreateInfoNV = ()
+  Extends GraphicsPipelineCreateInfo PipelineCreationFeedbackCreateInfo = ()
+  Extends GraphicsPipelineCreateInfo PipelineCompilerControlCreateInfoAMD = ()
+  Extends GraphicsPipelineCreateInfo PipelineLibraryCreateInfoKHR = ()
+  Extends GraphicsPipelineCreateInfo PipelineFragmentShadingRateStateCreateInfoKHR = ()
+  Extends GraphicsPipelineCreateInfo PipelineFragmentShadingRateEnumStateCreateInfoNV = ()
+  Extends GraphicsPipelineCreateInfo CustomResolveCreateInfoEXT = ()
+  Extends GraphicsPipelineCreateInfo PipelineRenderingCreateInfo = ()
+  Extends GraphicsPipelineCreateInfo AttachmentSampleCountInfoAMD = ()
+  Extends GraphicsPipelineCreateInfo MultiviewPerViewAttributesInfoNVX = ()
+  Extends GraphicsPipelineCreateInfo GraphicsPipelineLibraryCreateInfoEXT = ()
+  Extends GraphicsPipelineCreateInfo PipelineRobustnessCreateInfo = ()
+  Extends GraphicsPipelineCreateInfo RenderingAttachmentLocationInfo = ()
+  Extends GraphicsPipelineCreateInfo RenderingInputAttachmentIndexInfo = ()
+  Extends GraphicsPipelineCreateInfo PipelineFragmentDensityMapLayeredCreateInfoVALVE = ()
+  Extends HdrMetadataEXT HdrVividDynamicMetadataHUAWEI = ()
+  Extends ImageBlit2 CopyCommandTransformInfoQCOM = ()
+  Extends ImageCreateInfo DedicatedAllocationImageCreateInfoNV = ()
+  Extends ImageCreateInfo ExternalMemoryImageCreateInfoNV = ()
+  Extends ImageCreateInfo ExternalMemoryImageCreateInfo = ()
+  Extends ImageCreateInfo ImageSwapchainCreateInfoKHR = ()
+  Extends ImageCreateInfo ImageFormatListCreateInfo = ()
+  Extends ImageCreateInfo ExternalFormatANDROID = ()
+  Extends ImageCreateInfo ImageDrmFormatModifierListCreateInfoEXT = ()
+  Extends ImageCreateInfo ImageDrmFormatModifierExplicitCreateInfoEXT = ()
+  Extends ImageCreateInfo ImageStencilUsageCreateInfo = ()
+  Extends ImageCreateInfo OpaqueCaptureDescriptorDataCreateInfoEXT = ()
+  Extends ImageCreateInfo BufferCollectionImageCreateInfoFUCHSIA = ()
+  Extends ImageCreateInfo ImageCompressionControlEXT = ()
+  Extends ImageCreateInfo ExportMetalObjectCreateInfoEXT = ()
+  Extends ImageCreateInfo ImportMetalTextureInfoEXT = ()
+  Extends ImageCreateInfo ImportMetalIOSurfaceInfoEXT = ()
+  Extends ImageCreateInfo OpticalFlowImageFormatInfoNV = ()
+  Extends ImageCreateInfo ExternalFormatQNX = ()
+  Extends ImageCreateInfo ImageAlignmentControlCreateInfoMESA = ()
+  Extends ImageCreateInfo OpaqueCaptureDataCreateInfoEXT = ()
+  Extends ImageCreateInfo DataGraphOpticalFlowImageFormatInfoARM = ()
+  Extends ImageFormatProperties2 ExternalImageFormatProperties = ()
+  Extends ImageFormatProperties2 SamplerYcbcrConversionImageFormatProperties = ()
+  Extends ImageFormatProperties2 TextureLODGatherFormatPropertiesAMD = ()
+  Extends ImageFormatProperties2 AndroidHardwareBufferUsageANDROID = ()
+  Extends ImageFormatProperties2 FilterCubicImageViewImageFormatPropertiesEXT = ()
+  Extends ImageFormatProperties2 HostImageCopyDevicePerformanceQuery = ()
+  Extends ImageFormatProperties2 ImageCompressionPropertiesEXT = ()
+  Extends ImageFormatProperties2 SubsampledImageFormatPropertiesEXT = ()
+  Extends ImageMemoryBarrier SampleLocationsInfoEXT = ()
+  Extends ImageMemoryBarrier ExternalMemoryAcquireUnmodifiedEXT = ()
+  Extends ImageMemoryBarrier2 SampleLocationsInfoEXT = ()
+  Extends ImageMemoryBarrier2 MemoryBarrierAccessFlags3KHR = ()
+  Extends ImageMemoryBarrier2 ExternalMemoryAcquireUnmodifiedEXT = ()
+  Extends ImageMemoryRequirementsInfo2 ImagePlaneMemoryRequirementsInfo = ()
+  Extends ImageViewCreateInfo ImageViewUsageCreateInfo = ()
+  Extends ImageViewCreateInfo ImageViewSlicedCreateInfoEXT = ()
+  Extends ImageViewCreateInfo SamplerYcbcrConversionInfo = ()
+  Extends ImageViewCreateInfo ImageViewASTCDecodeModeEXT = ()
+  Extends ImageViewCreateInfo OpaqueCaptureDescriptorDataCreateInfoEXT = ()
+  Extends ImageViewCreateInfo ImageViewMinLodCreateInfoEXT = ()
+  Extends ImageViewCreateInfo ExportMetalObjectCreateInfoEXT = ()
+  Extends ImageViewCreateInfo ImageViewSampleWeightCreateInfoQCOM = ()
+  Extends IndirectCommandsLayoutCreateInfoEXT PipelineLayoutCreateInfo = ()
+  Extends IndirectCommandsLayoutTokenEXT PushConstantBankInfoNV = ()
+  Extends IndirectCommandsLayoutTokenNV IndirectCommandsLayoutPushDataTokenNV = ()
+  Extends InstanceCreateInfo DebugReportCallbackCreateInfoEXT = ()
+  Extends InstanceCreateInfo ValidationFlagsEXT = ()
+  Extends InstanceCreateInfo ValidationFeaturesEXT = ()
+  Extends InstanceCreateInfo LayerSettingsCreateInfoEXT = ()
+  Extends InstanceCreateInfo DebugUtilsMessengerCreateInfoEXT = ()
+  Extends InstanceCreateInfo ExportMetalObjectCreateInfoEXT = ()
+  Extends InstanceCreateInfo DirectDriverLoadingListLUNARG = ()
+  Extends MemoryAllocateInfo DedicatedAllocationMemoryAllocateInfoNV = ()
+  Extends MemoryAllocateInfo ExportMemoryAllocateInfoNV = ()
+  Extends MemoryAllocateInfo ImportMemoryWin32HandleInfoNV = ()
+  Extends MemoryAllocateInfo ExportMemoryWin32HandleInfoNV = ()
+  Extends MemoryAllocateInfo ExportMemoryAllocateInfo = ()
+  Extends MemoryAllocateInfo ImportMemoryWin32HandleInfoKHR = ()
+  Extends MemoryAllocateInfo ExportMemoryWin32HandleInfoKHR = ()
+  Extends MemoryAllocateInfo ImportMemoryZirconHandleInfoFUCHSIA = ()
+  Extends MemoryAllocateInfo ImportMemoryFdInfoKHR = ()
+  Extends MemoryAllocateInfo ImportMemoryMetalHandleInfoEXT = ()
+  Extends MemoryAllocateInfo MemoryAllocateFlagsInfo = ()
+  Extends MemoryAllocateInfo MemoryDedicatedAllocateInfo = ()
+  Extends MemoryAllocateInfo ImportMemoryHostPointerInfoEXT = ()
+  Extends MemoryAllocateInfo ImportAndroidHardwareBufferInfoANDROID = ()
+  Extends MemoryAllocateInfo MemoryPriorityAllocateInfoEXT = ()
+  Extends MemoryAllocateInfo MemoryOpaqueCaptureAddressAllocateInfo = ()
+  Extends MemoryAllocateInfo ImportMemoryBufferCollectionFUCHSIA = ()
+  Extends MemoryAllocateInfo ExportMetalObjectCreateInfoEXT = ()
+  Extends MemoryAllocateInfo ImportMetalBufferInfoEXT = ()
+  Extends MemoryAllocateInfo ImportScreenBufferInfoQNX = ()
+  Extends MemoryAllocateInfo MemoryDedicatedAllocateInfoTensorARM = ()
+  Extends MemoryMapInfo MemoryMapPlacedInfoEXT = ()
+  Extends MemoryRangeBarriersInfoKHR MemoryBarrierAccessFlags3KHR = ()
+  Extends MemoryRequirements2 MemoryDedicatedRequirements = ()
+  Extends MemoryRequirements2 TileMemoryRequirementsQCOM = ()
+  Extends OpticalFlowSessionCreateInfoNV OpticalFlowSessionCreatePrivateDataInfoNV = ()
+  Extends PhysicalDeviceClusterCullingShaderFeaturesHUAWEI PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI = ()
+  Extends PhysicalDeviceExternalBufferInfo BufferUsageFlags2CreateInfo = ()
+  Extends PhysicalDeviceExternalSemaphoreInfo SemaphoreTypeCreateInfo = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceDeviceGeneratedCommandsFeaturesNV = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDevicePushConstantBankFeaturesNV = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDevicePrivateDataFeatures = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceVariablePointersFeatures = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceMultiviewFeatures = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDevicePresentIdFeaturesKHR = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDevicePresentId2FeaturesKHR = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDevicePresentWaitFeaturesKHR = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDevicePresentWait2FeaturesKHR = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDevicePresentTimingFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDevice16BitStorageFeatures = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderSubgroupExtendedTypesFeatures = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceSamplerYcbcrConversionFeatures = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceProtectedMemoryFeatures = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceBlendOperationAdvancedFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceMultiDrawFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceInlineUniformBlockFeatures = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceMaintenance4Features = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceMaintenance5Features = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceMaintenance6Features = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceMaintenance7FeaturesKHR = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceMaintenance8FeaturesKHR = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceMaintenance9FeaturesKHR = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceMaintenance11FeaturesKHR = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceMaintenance10FeaturesKHR = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderDrawParametersFeatures = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderFloat16Int8Features = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceHostQueryResetFeatures = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceElapsedTimerQueryFeaturesQCOM = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceGlobalPriorityQueryFeatures = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceDeviceMemoryReportFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceDescriptorIndexingFeatures = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceTimelineSemaphoreFeatures = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDevice8BitStorageFeatures = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceConditionalRenderingFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceVulkanMemoryModelFeatures = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderAtomicInt64Features = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderAtomicFloatFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderAtomicFloat2FeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceVertexAttributeDivisorFeatures = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceASTCDecodeFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceTransformFeedbackFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceRepresentativeFragmentTestFeaturesNV = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceExclusiveScissorFeaturesNV = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceCornerSampledImageFeaturesNV = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceComputeShaderDerivativesFeaturesKHR = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderImageFootprintFeaturesNV = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceCopyMemoryIndirectFeaturesKHR = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceCopyMemoryIndirectFeaturesNV = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceMemoryDecompressionFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceShadingRateImageFeaturesNV = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceInvocationMaskFeaturesHUAWEI = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceMeshShaderFeaturesNV = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceMeshShaderFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceAccelerationStructureFeaturesKHR = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceRayTracingPipelineFeaturesKHR = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceRayQueryFeaturesKHR = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceRayTracingMaintenance1FeaturesKHR = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceFragmentDensityMapFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceFragmentDensityMap2FeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceScalarBlockLayoutFeatures = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceUniformBufferStandardLayoutFeatures = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceDepthClipEnableFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceMemoryPriorityFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceBufferDeviceAddressFeatures = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceBufferDeviceAddressFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceImagelessFramebufferFeatures = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceTextureCompressionASTCHDRFeatures = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceCooperativeMatrixFeaturesNV = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceYcbcrImageArraysFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDevicePresentBarrierFeaturesNV = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDevicePerformanceQueryFeaturesKHR = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceCoverageReductionModeFeaturesNV = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderClockFeaturesKHR = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceIndexTypeUint8Features = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderSMBuiltinsFeaturesNV = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceFragmentShaderInterlockFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceSeparateDepthStencilLayoutsFeatures = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDevicePipelineExecutablePropertiesFeaturesKHR = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderDemoteToHelperInvocationFeatures = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceTexelBufferAlignmentFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceSubgroupSizeControlFeatures = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceLineRasterizationFeatures = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDevicePipelineCreationCacheControlFeatures = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceVulkan11Features = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceVulkan12Features = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceVulkan13Features = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceVulkan14Features = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceCoherentMemoryFeaturesAMD = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceGpaFeaturesAMD = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceCustomBorderColorFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceBorderColorSwizzleFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceExtendedDynamicStateFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceExtendedDynamicState2FeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceExtendedDynamicState3FeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceDiagnosticsConfigFeaturesNV = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceRobustness2FeaturesKHR = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceImageRobustnessFeatures = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDevicePortabilitySubsetFeaturesKHR = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDevice4444FormatsFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceSubpassShadingFeaturesHUAWEI = ()
+  Extends PhysicalDeviceFeatures2 (PhysicalDeviceClusterCullingShaderFeaturesHUAWEI '[]) = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderImageAtomicInt64FeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceFragmentShadingRateFeaturesKHR = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderTerminateInvocationFeatures = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceFragmentShadingRateEnumsFeaturesNV = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceImage2DViewOf3DFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceImageSlicedViewOf3DFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceLegacyVertexAttributesFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceMutableDescriptorTypeFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceDepthClipControlFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceCustomResolveFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceDepthClampControlFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceVertexInputDynamicStateFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceExternalMemoryRDMAFeaturesNV = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceColorWriteEnableFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceSynchronization2Features = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceUnifiedImageLayoutsFeaturesKHR = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceHostImageCopyFeatures = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceLegacyDitheringFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDevicePipelineProtectedAccessFeatures = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceInheritedViewportScissorFeaturesNV = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceProvokingVertexFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceDescriptorBufferFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderIntegerDotProductFeatures = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceFragmentShaderBarycentricFeaturesKHR = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderFmaFeaturesKHR = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceRayTracingMotionBlurFeaturesNV = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceRayTracingValidationFeaturesNV = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceRGBA10X6FormatsFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceDynamicRenderingFeatures = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceImageViewMinLodFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceLinearColorAttachmentFeaturesNV = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDevicePipelineBinaryFeaturesKHR = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceDataGraphNeuralAcceleratorStatisticsFeaturesARM = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceNestedCommandBufferFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderModuleIdentifierFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceImageCompressionControlFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceSubpassMergeFeedbackFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceOpacityMicromapFeaturesKHR = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceOpacityMicromapFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceDisplacementMicromapFeaturesNV = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDevicePipelinePropertiesFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceNonSeamlessCubeMapFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDevicePipelineRobustnessFeatures = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderMultipleWaitQueuesFeaturesQCOM = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceImageProcessingFeaturesQCOM = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceTilePropertiesFeaturesQCOM = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceAmigoProfilingFeaturesSEC = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceAddressBindingReportFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceOpticalFlowFeaturesNV = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceFaultFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceFaultFeaturesKHR = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderCoreBuiltinsFeaturesARM = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceFrameBoundaryFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceInternallySynchronizedQueuesFeaturesKHR = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceSwapchainMaintenance1FeaturesKHR = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceDepthBiasControlFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceRayTracingInvocationReorderFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceRayTracingInvocationReorderFeaturesNV = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceRayTracingPositionFetchFeaturesKHR = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderObjectFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderTileImageFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceCooperativeMatrixFeaturesKHR = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderEnqueueFeaturesAMDX = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceAntiLagFeaturesAMD = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceTileMemoryHeapFeaturesQCOM = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceCubicClampFeaturesQCOM = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceYcbcrDegammaFeaturesQCOM = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceCubicWeightsFeaturesQCOM = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceImageProcessing2FeaturesQCOM = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceImageProcessing3FeaturesQCOM = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceDescriptorPoolOverallocationFeaturesNV = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDevicePerStageDescriptorSetFeaturesNV = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceExternalFormatResolveFeaturesANDROID = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceCudaKernelLaunchFeaturesNV = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceSchedulingControlsFeaturesARM = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceRelaxedLineRasterizationFeaturesIMG = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceRenderPassStripedFeaturesARM = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDevicePipelineOpacityMicromapFeaturesARM = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderSubgroupRotateFeatures = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderExpectAssumeFeatures = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderFloatControls2Features = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceDynamicRenderingLocalReadFeatures = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderQuadControlFeaturesKHR = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceMapMemoryPlacedFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderBfloat16FeaturesKHR = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceRawAccessChainsFeaturesNV = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceCommandBufferInheritanceFeaturesNV = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceImageAlignmentControlFeaturesMESA = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderReplicatedCompositesFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceCooperativeMatrix2FeaturesNV = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceHdrVividFeaturesHUAWEI = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceVertexAttributeRobustnessFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceDenseGeometryFormatFeaturesAMDX = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceDepthClampZeroOneFeaturesKHR = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceCooperativeVectorFeaturesNV = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceTileShadingFeaturesQCOM = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDevicePresentMeteringFeaturesNV = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDevicePrimitiveRestartIndexFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceFormatPackFeaturesARM = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceThrottleHintFeaturesSEC = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceTensorFeaturesARM = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceDescriptorBufferTensorFeaturesARM = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderFloat8FeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceDataGraphFeaturesARM = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceDataGraphModelFeaturesQCOM = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderUntypedPointersFeaturesKHR = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceShader64BitIndexingFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceQueuePerfHintFeaturesQCOM = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceComputeOccupancyPriorityFeaturesNV = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderLongVectorFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceTextureCompressionASTC3DFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderSubgroupPartitionedFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderSplitBarrierFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceDescriptorHeapFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderInstrumentationFeaturesARM = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceDeviceAddressCommandsFeaturesKHR = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderConstantDataFeaturesKHR = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderAbortFeaturesKHR = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceDataGraphOpticalFlowFeaturesARM = ()
+  Extends PhysicalDeviceImageFormatInfo2 PhysicalDeviceExternalImageFormatInfo = ()
+  Extends PhysicalDeviceImageFormatInfo2 ImageFormatListCreateInfo = ()
+  Extends PhysicalDeviceImageFormatInfo2 PhysicalDeviceImageDrmFormatModifierInfoEXT = ()
+  Extends PhysicalDeviceImageFormatInfo2 ImageStencilUsageCreateInfo = ()
+  Extends PhysicalDeviceImageFormatInfo2 PhysicalDeviceImageViewImageFormatInfoEXT = ()
+  Extends PhysicalDeviceImageFormatInfo2 ImageCompressionControlEXT = ()
+  Extends PhysicalDeviceImageFormatInfo2 OpticalFlowImageFormatInfoNV = ()
+  Extends PhysicalDeviceImageFormatInfo2 DataGraphOpticalFlowImageFormatInfoARM = ()
+  Extends PhysicalDeviceLayeredApiPropertiesKHR PhysicalDeviceLayeredApiVulkanPropertiesKHR = ()
+  Extends PhysicalDeviceMemoryProperties2 PhysicalDeviceMemoryBudgetPropertiesEXT = ()
+  Extends PhysicalDeviceProperties2 PhysicalDevicePushConstantBankPropertiesNV = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceDeviceGeneratedCommandsPropertiesNV = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceMultiDrawPropertiesEXT = ()
+  Extends PhysicalDeviceProperties2 PhysicalDevicePushDescriptorProperties = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceDriverProperties = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceIDProperties = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceMultiviewProperties = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceDiscardRectanglePropertiesEXT = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceSubgroupProperties = ()
+  Extends PhysicalDeviceProperties2 PhysicalDevicePointClippingProperties = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceProtectedMemoryProperties = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceSamplerFilterMinmaxProperties = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceSampleLocationsPropertiesEXT = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceBlendOperationAdvancedPropertiesEXT = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceInlineUniformBlockProperties = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceMaintenance3Properties = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceMaintenance4Properties = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceMaintenance5Properties = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceMaintenance6Properties = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceMaintenance7PropertiesKHR = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceLayeredApiPropertiesListKHR = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceMaintenance9PropertiesKHR = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceMaintenance10PropertiesKHR = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceFloatControlsProperties = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceExternalMemoryHostPropertiesEXT = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceConservativeRasterizationPropertiesEXT = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceShaderCorePropertiesAMD = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceShaderCoreProperties2AMD = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceDescriptorIndexingProperties = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceTimelineSemaphoreProperties = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceVertexAttributeDivisorPropertiesEXT = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceVertexAttributeDivisorProperties = ()
+  Extends PhysicalDeviceProperties2 PhysicalDevicePCIBusInfoPropertiesEXT = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceDepthStencilResolveProperties = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceTransformFeedbackPropertiesEXT = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceComputeShaderDerivativesPropertiesKHR = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceCopyMemoryIndirectPropertiesKHR = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceMemoryDecompressionPropertiesEXT = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceShadingRateImagePropertiesNV = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceMeshShaderPropertiesNV = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceMeshShaderPropertiesEXT = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceAccelerationStructurePropertiesKHR = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceRayTracingPipelinePropertiesKHR = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceRayTracingPropertiesNV = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceFragmentDensityMapPropertiesEXT = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceFragmentDensityMap2PropertiesEXT = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceCooperativeMatrixPropertiesNV = ()
+  Extends PhysicalDeviceProperties2 PhysicalDevicePerformanceQueryPropertiesKHR = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceShaderSMBuiltinsPropertiesNV = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceTexelBufferAlignmentProperties = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceSubgroupSizeControlProperties = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceSubpassShadingPropertiesHUAWEI = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceClusterCullingShaderPropertiesHUAWEI = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceLineRasterizationProperties = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceVulkan11Properties = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceVulkan12Properties = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceVulkan13Properties = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceVulkan14Properties = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceGpaPropertiesAMD = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceGpaProperties2AMD = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceCustomBorderColorPropertiesEXT = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceExtendedDynamicState3PropertiesEXT = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceRobustness2PropertiesKHR = ()
+  Extends PhysicalDeviceProperties2 PhysicalDevicePortabilitySubsetPropertiesKHR = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceFragmentShadingRatePropertiesKHR = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceFragmentShadingRateEnumsPropertiesNV = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceLegacyVertexAttributesPropertiesEXT = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceHostImageCopyProperties = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceProvokingVertexPropertiesEXT = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceDescriptorBufferPropertiesEXT = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceShaderIntegerDotProductProperties = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceDrmPropertiesEXT = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceFragmentShaderBarycentricPropertiesKHR = ()
+  Extends PhysicalDeviceProperties2 PhysicalDevicePipelineBinaryPropertiesKHR = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceNestedCommandBufferPropertiesEXT = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceShaderModuleIdentifierPropertiesEXT = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceOpacityMicromapPropertiesKHR = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceOpacityMicromapPropertiesEXT = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceDisplacementMicromapPropertiesNV = ()
+  Extends PhysicalDeviceProperties2 PhysicalDevicePipelineRobustnessProperties = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceShaderMultipleWaitQueuesPropertiesQCOM = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceImageProcessingPropertiesQCOM = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceOpticalFlowPropertiesNV = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceFaultPropertiesKHR = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceShaderCoreBuiltinsPropertiesARM = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceRayTracingInvocationReorderPropertiesEXT = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceRayTracingInvocationReorderPropertiesNV = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceExtendedSparseAddressSpacePropertiesNV = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceShaderCorePropertiesARM = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceShaderObjectPropertiesEXT = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceShaderTileImagePropertiesEXT = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceCooperativeMatrixPropertiesKHR = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceShaderEnqueuePropertiesAMDX = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceTileMemoryHeapPropertiesQCOM = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceImageProcessing2PropertiesQCOM = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceLayeredDriverPropertiesMSFT = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceExternalFormatResolvePropertiesANDROID = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceCudaKernelLaunchPropertiesNV = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceSchedulingControlsPropertiesARM = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceSchedulingControlsDispatchParametersPropertiesARM = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceRenderPassStripedPropertiesARM = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceMapMemoryPlacedPropertiesEXT = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceImageAlignmentControlPropertiesMESA = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceCooperativeMatrix2PropertiesNV = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceCooperativeVectorPropertiesNV = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceTileShadingPropertiesQCOM = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceExternalComputeQueuePropertiesNV = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceTensorPropertiesARM = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceDescriptorBufferTensorPropertiesARM = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceQueuePerfHintPropertiesQCOM = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceShaderLongVectorPropertiesEXT = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceShaderSplitBarrierPropertiesEXT = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceDescriptorHeapPropertiesEXT = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceDescriptorHeapTensorPropertiesARM = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceShaderInstrumentationPropertiesARM = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceShaderAbortPropertiesKHR = ()
+  Extends PhysicalDeviceSurfaceInfo2KHR SurfaceFullScreenExclusiveInfoEXT = ()
+  Extends PhysicalDeviceSurfaceInfo2KHR SurfaceFullScreenExclusiveWin32InfoEXT = ()
+  Extends PhysicalDeviceSurfaceInfo2KHR SurfacePresentModeKHR = ()
+  Extends PipelineColorBlendStateCreateInfo PipelineColorBlendAdvancedStateCreateInfoEXT = ()
+  Extends PipelineColorBlendStateCreateInfo PipelineColorWriteCreateInfoEXT = ()
+  Extends PipelineMultisampleStateCreateInfo PipelineCoverageToColorStateCreateInfoNV = ()
+  Extends PipelineMultisampleStateCreateInfo PipelineSampleLocationsStateCreateInfoEXT = ()
+  Extends PipelineMultisampleStateCreateInfo PipelineCoverageModulationStateCreateInfoNV = ()
+  Extends PipelineMultisampleStateCreateInfo PipelineCoverageReductionStateCreateInfoNV = ()
+  Extends PipelineRasterizationStateCreateInfo PipelineRasterizationStateRasterizationOrderAMD = ()
+  Extends PipelineRasterizationStateCreateInfo PipelineRasterizationConservativeStateCreateInfoEXT = ()
+  Extends PipelineRasterizationStateCreateInfo PipelineRasterizationStateStreamCreateInfoEXT = ()
+  Extends PipelineRasterizationStateCreateInfo PipelineRasterizationDepthClipStateCreateInfoEXT = ()
+  Extends PipelineRasterizationStateCreateInfo PipelineRasterizationLineStateCreateInfo = ()
+  Extends PipelineRasterizationStateCreateInfo PipelineRasterizationProvokingVertexStateCreateInfoEXT = ()
+  Extends PipelineRasterizationStateCreateInfo DepthBiasRepresentationInfoEXT = ()
+  Extends PipelineShaderStageCreateInfo (ShaderModuleCreateInfo '[]) = ()
+  Extends PipelineShaderStageCreateInfo ShaderModuleValidationCacheCreateInfoEXT = ()
+  Extends PipelineShaderStageCreateInfo DebugUtilsObjectNameInfoEXT = ()
+  Extends PipelineShaderStageCreateInfo PipelineShaderStageRequiredSubgroupSizeCreateInfo = ()
+  Extends PipelineShaderStageCreateInfo PipelineShaderStageModuleIdentifierCreateInfoEXT = ()
+  Extends PipelineShaderStageCreateInfo PipelineRobustnessCreateInfo = ()
+  Extends PipelineShaderStageCreateInfo PipelineShaderStageNodeCreateInfoAMDX = ()
+  Extends PipelineShaderStageCreateInfo ShaderDescriptorSetAndBindingMappingInfoEXT = ()
+  Extends PipelineTessellationStateCreateInfo PipelineTessellationDomainOriginStateCreateInfo = ()
+  Extends PipelineVertexInputStateCreateInfo PipelineVertexInputDivisorStateCreateInfo = ()
+  Extends PipelineViewportStateCreateInfo PipelineViewportWScalingStateCreateInfoNV = ()
+  Extends PipelineViewportStateCreateInfo PipelineViewportSwizzleStateCreateInfoNV = ()
+  Extends PipelineViewportStateCreateInfo PipelineViewportExclusiveScissorStateCreateInfoNV = ()
+  Extends PipelineViewportStateCreateInfo PipelineViewportShadingRateImageStateCreateInfoNV = ()
+  Extends PipelineViewportStateCreateInfo PipelineViewportCoarseSampleOrderStateCreateInfoNV = ()
+  Extends PipelineViewportStateCreateInfo PipelineViewportDepthClipControlCreateInfoEXT = ()
+  Extends PipelineViewportStateCreateInfo PipelineViewportDepthClampControlCreateInfoEXT = ()
+  Extends PresentInfoKHR DisplayPresentInfoKHR = ()
+  Extends PresentInfoKHR PresentRegionsKHR = ()
+  Extends PresentInfoKHR DeviceGroupPresentInfoKHR = ()
+  Extends PresentInfoKHR PresentIdKHR = ()
+  Extends PresentInfoKHR PresentId2KHR = ()
+  Extends PresentInfoKHR PresentTimingsInfoEXT = ()
+  Extends PresentInfoKHR PresentTimesInfoGOOGLE = ()
+  Extends PresentInfoKHR PresentFrameTokenGGP = ()
+  Extends PresentInfoKHR FrameBoundaryEXT = ()
+  Extends PresentInfoKHR SwapchainPresentFenceInfoKHR = ()
+  Extends PresentInfoKHR SwapchainPresentModeInfoKHR = ()
+  Extends PresentInfoKHR SetPresentConfigNV = ()
+  Extends PresentInfoKHR FrameBoundaryTensorsARM = ()
+  Extends PushConstantsInfo PipelineLayoutCreateInfo = ()
+  Extends PushConstantsInfo PushConstantBankInfoNV = ()
+  Extends PushDataInfoEXT PushConstantBankInfoNV = ()
+  Extends PushDescriptorSetInfo PipelineLayoutCreateInfo = ()
+  Extends PushDescriptorSetWithTemplateInfo PipelineLayoutCreateInfo = ()
+  Extends QueryPoolCreateInfo QueryPoolPerformanceCreateInfoKHR = ()
+  Extends QueryPoolCreateInfo QueryPoolPerformanceQueryCreateInfoINTEL = ()
+  Extends QueueFamilyProperties2 QueueFamilyOwnershipTransferPropertiesKHR = ()
+  Extends QueueFamilyProperties2 QueueFamilyOptimalImageTransferGranularityPropertiesKHR = ()
+  Extends QueueFamilyProperties2 QueueFamilyGlobalPriorityProperties = ()
+  Extends QueueFamilyProperties2 QueueFamilyCheckpointPropertiesNV = ()
+  Extends QueueFamilyProperties2 QueueFamilyCheckpointProperties2NV = ()
+  Extends RayTracingPipelineCreateInfoKHR PipelineCreateFlags2CreateInfo = ()
+  Extends RayTracingPipelineCreateInfoKHR PipelineBinaryInfoKHR = ()
+  Extends RayTracingPipelineCreateInfoKHR PipelineCreationFeedbackCreateInfo = ()
+  Extends RayTracingPipelineCreateInfoKHR PipelineRobustnessCreateInfo = ()
+  Extends RayTracingPipelineCreateInfoNV PipelineCreateFlags2CreateInfo = ()
+  Extends RayTracingPipelineCreateInfoNV PipelineCreationFeedbackCreateInfo = ()
+  Extends RenderPassBeginInfo DeviceGroupRenderPassBeginInfo = ()
+  Extends RenderPassBeginInfo RenderPassSampleLocationsBeginInfoEXT = ()
+  Extends RenderPassBeginInfo RenderPassAttachmentBeginInfo = ()
+  Extends RenderPassBeginInfo RenderPassTransformBeginInfoQCOM = ()
+  Extends RenderPassBeginInfo MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM = ()
+  Extends RenderPassBeginInfo RenderPassStripeBeginInfoARM = ()
+  Extends RenderPassCreateInfo RenderPassMultiviewCreateInfo = ()
+  Extends RenderPassCreateInfo RenderPassInputAttachmentAspectCreateInfo = ()
+  Extends RenderPassCreateInfo RenderPassFragmentDensityMapCreateInfoEXT = ()
+  Extends RenderPassCreateInfo TileMemorySizeInfoQCOM = ()
+  Extends RenderPassCreateInfo RenderPassTileShadingCreateInfoQCOM = ()
+  Extends RenderPassCreateInfo2 RenderPassFragmentDensityMapCreateInfoEXT = ()
+  Extends RenderPassCreateInfo2 RenderPassCreationControlEXT = ()
+  Extends RenderPassCreateInfo2 RenderPassCreationFeedbackCreateInfoEXT = ()
+  Extends RenderPassCreateInfo2 TileMemorySizeInfoQCOM = ()
+  Extends RenderPassCreateInfo2 RenderPassTileShadingCreateInfoQCOM = ()
+  Extends RenderingAttachmentInfo AttachmentFeedbackLoopInfoEXT = ()
+  Extends RenderingAttachmentInfo RenderingAttachmentFlagsInfoKHR = ()
+  Extends RenderingEndInfoKHR RenderPassFragmentDensityMapOffsetEndInfoEXT = ()
+  Extends RenderingInfo DeviceGroupRenderPassBeginInfo = ()
+  Extends RenderingInfo MultisampledRenderToSingleSampledInfoEXT = ()
+  Extends RenderingInfo RenderingFragmentShadingRateAttachmentInfoKHR = ()
+  Extends RenderingInfo RenderingFragmentDensityMapAttachmentInfoEXT = ()
+  Extends RenderingInfo MultiviewPerViewAttributesInfoNVX = ()
+  Extends RenderingInfo MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM = ()
+  Extends RenderingInfo TileMemorySizeInfoQCOM = ()
+  Extends RenderingInfo RenderPassStripeBeginInfoARM = ()
+  Extends RenderingInfo RenderPassTileShadingCreateInfoQCOM = ()
+  Extends ResolveImageInfo2 ResolveImageModeInfoKHR = ()
+  Extends ResourceDescriptorInfoEXT DebugUtilsObjectNameInfoEXT = ()
+  Extends SamplerCreateInfo SamplerYcbcrConversionInfo = ()
+  Extends SamplerCreateInfo SamplerReductionModeCreateInfo = ()
+  Extends SamplerCreateInfo DebugUtilsObjectNameInfoEXT = ()
+  Extends SamplerCreateInfo SamplerCustomBorderColorCreateInfoEXT = ()
+  Extends SamplerCreateInfo SamplerBorderColorComponentMappingCreateInfoEXT = ()
+  Extends SamplerCreateInfo OpaqueCaptureDescriptorDataCreateInfoEXT = ()
+  Extends SamplerCreateInfo SamplerCubicWeightsCreateInfoQCOM = ()
+  Extends SamplerCreateInfo SamplerBlockMatchWindowCreateInfoQCOM = ()
+  Extends SamplerCreateInfo SamplerCustomBorderColorIndexCreateInfoEXT = ()
+  Extends SamplerYcbcrConversionCreateInfo ExternalFormatANDROID = ()
+  Extends SamplerYcbcrConversionCreateInfo ExternalFormatQNX = ()
+  Extends SamplerYcbcrConversionCreateInfo SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM = ()
+  Extends ScreenBufferPropertiesQNX ScreenBufferFormatPropertiesQNX = ()
+  Extends SemaphoreCreateInfo ExportSemaphoreCreateInfo = ()
+  Extends SemaphoreCreateInfo ExportSemaphoreWin32HandleInfoKHR = ()
+  Extends SemaphoreCreateInfo SemaphoreTypeCreateInfo = ()
+  Extends SemaphoreCreateInfo ExportMetalObjectCreateInfoEXT = ()
+  Extends SemaphoreCreateInfo ImportMetalSharedEventInfoEXT = ()
+  Extends SemaphoreCreateInfo QueryLowLatencySupportNV = ()
+  Extends SetDescriptorBufferOffsetsInfoEXT PipelineLayoutCreateInfo = ()
+  Extends ShaderCreateInfoEXT ValidationFeaturesEXT = ()
+  Extends ShaderCreateInfoEXT PipelineShaderStageRequiredSubgroupSizeCreateInfo = ()
+  Extends ShaderCreateInfoEXT CustomResolveCreateInfoEXT = ()
+  Extends ShaderCreateInfoEXT ShaderDescriptorSetAndBindingMappingInfoEXT = ()
+  Extends ShaderModuleCreateInfo ValidationFeaturesEXT = ()
+  Extends ShaderModuleCreateInfo ShaderModuleValidationCacheCreateInfoEXT = ()
+  Extends SubmitInfo Win32KeyedMutexAcquireReleaseInfoNV = ()
+  Extends SubmitInfo Win32KeyedMutexAcquireReleaseInfoKHR = ()
+  Extends SubmitInfo D3D12FenceSubmitInfoKHR = ()
+  Extends SubmitInfo DeviceGroupSubmitInfo = ()
+  Extends SubmitInfo ProtectedSubmitInfo = ()
+  Extends SubmitInfo TimelineSemaphoreSubmitInfo = ()
+  Extends SubmitInfo PerformanceQuerySubmitInfoKHR = ()
+  Extends SubmitInfo AmigoProfilingSubmitInfoSEC = ()
+  Extends SubmitInfo FrameBoundaryEXT = ()
+  Extends SubmitInfo LatencySubmissionPresentIdNV = ()
+  Extends SubmitInfo ThrottleHintSubmitInfoSEC = ()
+  Extends SubmitInfo FrameBoundaryTensorsARM = ()
+  Extends SubmitInfo2 Win32KeyedMutexAcquireReleaseInfoNV = ()
+  Extends SubmitInfo2 Win32KeyedMutexAcquireReleaseInfoKHR = ()
+  Extends SubmitInfo2 PerformanceQuerySubmitInfoKHR = ()
+  Extends SubmitInfo2 FrameBoundaryEXT = ()
+  Extends SubmitInfo2 LatencySubmissionPresentIdNV = ()
+  Extends SubmitInfo2 FrameBoundaryTensorsARM = ()
+  Extends SubpassDependency2 MemoryBarrier2 = ()
+  Extends SubpassDependency2 MemoryBarrierAccessFlags3KHR = ()
+  Extends SubpassDescription2 SubpassDescriptionDepthStencilResolve = ()
+  Extends SubpassDescription2 FragmentShadingRateAttachmentInfoKHR = ()
+  Extends SubpassDescription2 MultisampledRenderToSingleSampledInfoEXT = ()
+  Extends SubpassDescription2 RenderPassCreationControlEXT = ()
+  Extends SubpassDescription2 RenderPassSubpassFeedbackCreateInfoEXT = ()
+  Extends SubpassEndInfo RenderPassFragmentDensityMapOffsetEndInfoEXT = ()
+  Extends SubresourceLayout2 SubresourceHostMemcpySize = ()
+  Extends SubresourceLayout2 ImageCompressionPropertiesEXT = ()
+  Extends SurfaceCapabilities2KHR PresentTimingSurfaceCapabilitiesEXT = ()
+  Extends SurfaceCapabilities2KHR DisplayNativeHdrSurfaceCapabilitiesAMD = ()
+  Extends SurfaceCapabilities2KHR SharedPresentSurfaceCapabilitiesKHR = ()
+  Extends SurfaceCapabilities2KHR SurfaceProtectedCapabilitiesKHR = ()
+  Extends SurfaceCapabilities2KHR SurfaceCapabilitiesFullScreenExclusiveEXT = ()
+  Extends SurfaceCapabilities2KHR SurfaceCapabilitiesPresentBarrierNV = ()
+  Extends SurfaceCapabilities2KHR SurfaceCapabilitiesPresentId2KHR = ()
+  Extends SurfaceCapabilities2KHR SurfaceCapabilitiesPresentWait2KHR = ()
+  Extends SurfaceCapabilities2KHR SurfacePresentScalingCapabilitiesKHR = ()
+  Extends SurfaceCapabilities2KHR SurfacePresentModeCompatibilityKHR = ()
+  Extends SurfaceCapabilities2KHR LatencySurfaceCapabilitiesNV = ()
+  Extends SurfaceFormat2KHR ImageCompressionPropertiesEXT = ()
+  Extends SwapchainCreateInfoKHR SwapchainCounterCreateInfoEXT = ()
+  Extends SwapchainCreateInfoKHR DeviceGroupSwapchainCreateInfoKHR = ()
+  Extends SwapchainCreateInfoKHR SwapchainDisplayNativeHdrCreateInfoAMD = ()
+  Extends SwapchainCreateInfoKHR ImageFormatListCreateInfo = ()
+  Extends SwapchainCreateInfoKHR SurfaceFullScreenExclusiveInfoEXT = ()
+  Extends SwapchainCreateInfoKHR SurfaceFullScreenExclusiveWin32InfoEXT = ()
+  Extends SwapchainCreateInfoKHR SwapchainPresentBarrierCreateInfoNV = ()
+  Extends SwapchainCreateInfoKHR ImageCompressionControlEXT = ()
+  Extends SwapchainCreateInfoKHR SwapchainPresentModesCreateInfoKHR = ()
+  Extends SwapchainCreateInfoKHR SwapchainPresentScalingCreateInfoKHR = ()
+  Extends SwapchainCreateInfoKHR SwapchainLatencyCreateInfoNV = ()
+  Extends TensorCreateInfoARM OpaqueCaptureDescriptorDataCreateInfoEXT = ()
+  Extends TensorCreateInfoARM ExternalMemoryTensorCreateInfoARM = ()
+  Extends TensorCreateInfoARM OpaqueCaptureDataCreateInfoEXT = ()
+  Extends TensorViewCreateInfoARM OpaqueCaptureDescriptorDataCreateInfoEXT = ()
+  Extends WriteDescriptorSet WriteDescriptorSetInlineUniformBlock = ()
+  Extends WriteDescriptorSet WriteDescriptorSetAccelerationStructureKHR = ()
+  Extends WriteDescriptorSet WriteDescriptorSetAccelerationStructureNV = ()
+  Extends WriteDescriptorSet WriteDescriptorSetTensorARM = ()
+  Extends a b = TypeError (ShowType a :<>: Text " is not extended by " :<>: ShowType b)
+
+data SomeStruct (a :: [Type] -> Type) where
+  SomeStruct
+    :: forall a es
+     . (Extendss a es, PokeChain es, Show (Chain es))
+    => a es
+    -> SomeStruct a
+
+deriving instance (forall es. Show (Chain es) => Show (a es)) => Show (SomeStruct a)
+
+-- | The constraint is so on this instance to encourage type inference
+instance Zero (a '[]) => Zero (SomeStruct a) where
+  zero = SomeStruct (zero :: a '[])
+
+-- | Forget which extensions a pointed-to struct has by casting the pointer
+forgetExtensions :: Ptr (a es) -> Ptr (SomeStruct a)
+forgetExtensions = castPtr
+
+-- | Add an extension to the beginning of the struct chain
+--
+-- This can be used to optionally extend structs based on some condition (for
+-- example, an extension or layer being available)
+extendSomeStruct
+  :: (Extensible a, Extends a e, ToCStruct e, Show e)
+  => e
+  -> SomeStruct a
+  -> SomeStruct a
+extendSomeStruct e (SomeStruct a) = SomeStruct (setNext a (e, getNext a))
+
+-- | Consume a 'SomeStruct' value
+withSomeStruct
+  :: forall a b
+   . SomeStruct a
+  -> (forall es . (Extendss a es, PokeChain es, Show (Chain es)) => a es -> b)
+  -> b
+withSomeStruct (SomeStruct s) f = f s
+
+-- | Write the C representation of some extended @a@ and use the pointer,
+-- the pointer must not be returned from the continuation.
+withSomeCStruct
+  :: forall a b
+   . (forall es . (Extendss a es, PokeChain es) => ToCStruct (a es))
+  => SomeStruct a
+  -> (forall es . (Extendss a es, PokeChain es) => Ptr (a es) -> IO b)
+  -> IO b
+withSomeCStruct s f = withSomeStruct s (`withCStruct` f)
+
+-- | Given some memory for the head of the chain, allocate and poke the
+-- tail and run an action.
+pokeSomeCStruct
+  :: (forall es . (Extendss a es, PokeChain es) => ToCStruct (a es))
+  => Ptr (SomeStruct a)
+  -- ^ Pointer to some memory at least the size of the head of the struct
+  -- chain.
+  -> SomeStruct a
+  -- ^ The struct to poke
+  -> IO b
+  -- ^ Computation to run while the poked tail is valid
+  -> IO b
+pokeSomeCStruct p (SomeStruct s) = pokeCStruct (castPtr p) s
+
+-- | Given a pointer to a struct with an unknown chain, peek the struct and
+-- its chain.
+peekSomeCStruct
+  :: forall a
+   . (Extensible a, forall es . (Extendss a es, PeekChain es) => FromCStruct (a es))
+  => Ptr (SomeStruct a)
+  -> IO (SomeStruct a)
+peekSomeCStruct p = do
+  head'  <- peekCStruct (castPtr @_ @(a '[]) p)
+  pNext <- peek @(Ptr BaseOutStructure) (p `plusPtr` 8)
+  peekSomeChain @a pNext $ \tail' -> SomeStruct (setNext head' tail')
+
+peekSomeChain
+  :: forall a b
+   . (Extensible a)
+  => Ptr BaseOutStructure
+  -> (  forall es
+      . (Extendss a es, PokeChain es, Show (Chain es))
+     => Chain es
+     -> b
+     )
+  -> IO b
+peekSomeChain p c = if p == nullPtr
+  then pure (c ())
+  else do
+    baseOut <- peek p
+    join
+      $ peekChainHead @a (case baseOut of BaseOutStructure{sType} -> sType)
+                         (castPtr @BaseOutStructure @() p)
+      $ \head' -> peekSomeChain @a (case baseOut of BaseOutStructure{next} -> next)
+                                  (\tail' -> c (head', tail'))
+
+peekChainHead
+  :: forall a b
+   . Extensible a
+  => StructureType
+  -> Ptr ()
+  -> (forall e . (Extends a e, ToCStruct e, Show e) => e -> b)
+  -> IO b
+peekChainHead ty p c = case ty of
+  STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO -> go @BufferUsageFlags2CreateInfo
+  STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO -> go @(ShaderModuleCreateInfo '[])
+  STRUCTURE_TYPE_COMPUTE_PIPELINE_INDIRECT_BUFFER_INFO_NV -> go @ComputePipelineIndirectBufferInfoNV
+  STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO -> go @PipelineCreateFlags2CreateInfo
+  STRUCTURE_TYPE_PIPELINE_BINARY_INFO_KHR -> go @PipelineBinaryInfoKHR
+  STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO -> go @PipelineLayoutCreateInfo
+  STRUCTURE_TYPE_DISPLAY_SURFACE_STEREO_CREATE_INFO_NV -> go @DisplaySurfaceStereoCreateInfoNV
+  STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR -> go @DisplayPresentInfoKHR
+  STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT -> go @DebugReportCallbackCreateInfoEXT
+  STRUCTURE_TYPE_VALIDATION_FLAGS_EXT -> go @ValidationFlagsEXT
+  STRUCTURE_TYPE_VALIDATION_FEATURES_EXT -> go @ValidationFeaturesEXT
+  STRUCTURE_TYPE_LAYER_SETTINGS_CREATE_INFO_EXT -> go @LayerSettingsCreateInfoEXT
+  STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD -> go @PipelineRasterizationStateRasterizationOrderAMD
+  STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV -> go @DedicatedAllocationImageCreateInfoNV
+  STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV -> go @DedicatedAllocationBufferCreateInfoNV
+  STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV -> go @DedicatedAllocationMemoryAllocateInfoNV
+  STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV -> go @ExternalMemoryImageCreateInfoNV
+  STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV -> go @ExportMemoryAllocateInfoNV
+  STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV -> go @ImportMemoryWin32HandleInfoNV
+  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_PUSH_CONSTANT_BANK_INFO_NV -> go @PushConstantBankInfoNV
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_CONSTANT_BANK_FEATURES_NV -> go @PhysicalDevicePushConstantBankFeaturesNV
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_CONSTANT_BANK_PROPERTIES_NV -> go @PhysicalDevicePushConstantBankPropertiesNV
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_COMPUTE_FEATURES_NV -> go @PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV
+  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
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 -> go @(PhysicalDeviceFeatures2 '[])
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES -> go @PhysicalDevicePushDescriptorProperties
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES -> go @PhysicalDeviceDriverProperties
+  STRUCTURE_TYPE_PRESENT_REGIONS_KHR -> go @PresentRegionsKHR
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES -> go @PhysicalDeviceVariablePointersFeatures
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO -> go @PhysicalDeviceExternalImageFormatInfo
+  STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES -> go @ExternalImageFormatProperties
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES -> go @PhysicalDeviceIDProperties
+  STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO -> go @ExternalMemoryImageCreateInfo
+  STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO -> go @ExternalMemoryBufferCreateInfo
+  STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO -> go @ExportMemoryAllocateInfo
+  STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR -> go @ImportMemoryWin32HandleInfoKHR
+  STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR -> go @ExportMemoryWin32HandleInfoKHR
+  STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA -> go @ImportMemoryZirconHandleInfoFUCHSIA
+  STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR -> go @ImportMemoryFdInfoKHR
+  STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR -> go @Win32KeyedMutexAcquireReleaseInfoKHR
+  STRUCTURE_TYPE_IMPORT_MEMORY_METAL_HANDLE_INFO_EXT -> go @ImportMemoryMetalHandleInfoEXT
+  STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO -> go @ExportSemaphoreCreateInfo
+  STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR -> go @ExportSemaphoreWin32HandleInfoKHR
+  STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR -> go @D3D12FenceSubmitInfoKHR
+  STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO -> go @ExportFenceCreateInfo
+  STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR -> go @ExportFenceWin32HandleInfoKHR
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES -> go @PhysicalDeviceMultiviewFeatures
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES -> go @PhysicalDeviceMultiviewProperties
+  STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO -> go @RenderPassMultiviewCreateInfo
+  STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT -> go @SwapchainCounterCreateInfoEXT
+  STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO -> go @MemoryAllocateFlagsInfo
+  STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO -> go @BindBufferMemoryDeviceGroupInfo
+  STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO -> go @BindImageMemoryDeviceGroupInfo
+  STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO -> go @DeviceGroupRenderPassBeginInfo
+  STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO -> go @DeviceGroupCommandBufferBeginInfo
+  STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO -> go @DeviceGroupSubmitInfo
+  STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO -> go @DeviceGroupBindSparseInfo
+  STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR -> go @ImageSwapchainCreateInfoKHR
+  STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR -> go @BindImageMemorySwapchainInfoKHR
+  STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR -> go @DeviceGroupPresentInfoKHR
+  STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO -> go @DeviceGroupDeviceCreateInfo
+  STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR -> go @DeviceGroupSwapchainCreateInfoKHR
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR -> go @PhysicalDevicePresentIdFeaturesKHR
+  STRUCTURE_TYPE_PRESENT_ID_KHR -> go @PresentIdKHR
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_2_FEATURES_KHR -> go @PhysicalDevicePresentId2FeaturesKHR
+  STRUCTURE_TYPE_PRESENT_ID_2_KHR -> go @PresentId2KHR
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR -> go @PhysicalDevicePresentWaitFeaturesKHR
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_2_FEATURES_KHR -> go @PhysicalDevicePresentWait2FeaturesKHR
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_TIMING_FEATURES_EXT -> go @PhysicalDevicePresentTimingFeaturesEXT
+  STRUCTURE_TYPE_PRESENT_TIMING_SURFACE_CAPABILITIES_EXT -> go @PresentTimingSurfaceCapabilitiesEXT
+  STRUCTURE_TYPE_PRESENT_TIMINGS_INFO_EXT -> go @PresentTimingsInfoEXT
+  STRUCTURE_TYPE_SWAPCHAIN_CALIBRATED_TIMESTAMP_INFO_EXT -> go @SwapchainCalibratedTimestampInfoEXT
+  STRUCTURE_TYPE_HDR_VIVID_DYNAMIC_METADATA_HUAWEI -> go @HdrVividDynamicMetadataHUAWEI
+  STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD -> go @DisplayNativeHdrSurfaceCapabilitiesAMD
+  STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD -> go @SwapchainDisplayNativeHdrCreateInfoAMD
+  STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE -> go @PresentTimesInfoGOOGLE
+  STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV -> go @PipelineViewportWScalingStateCreateInfoNV
+  STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV -> go @PipelineViewportSwizzleStateCreateInfoNV
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT -> go @PhysicalDeviceDiscardRectanglePropertiesEXT
+  STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT -> go @PipelineDiscardRectangleStateCreateInfoEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX -> go @PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
+  STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO -> go @RenderPassInputAttachmentAspectCreateInfo
+  STRUCTURE_TYPE_DISPLAY_MODE_STEREO_PROPERTIES_NV -> go @DisplayModeStereoPropertiesNV
+  STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR -> go @SharedPresentSurfaceCapabilitiesKHR
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES -> go @PhysicalDevice16BitStorageFeatures
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES -> go @PhysicalDeviceSubgroupProperties
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES -> go @PhysicalDeviceShaderSubgroupExtendedTypesFeatures
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES -> go @PhysicalDevicePointClippingProperties
+  STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS -> go @MemoryDedicatedRequirements
+  STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO -> go @MemoryDedicatedAllocateInfo
+  STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO -> go @ImageViewUsageCreateInfo
+  STRUCTURE_TYPE_IMAGE_VIEW_SLICED_CREATE_INFO_EXT -> go @ImageViewSlicedCreateInfoEXT
+  STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO -> go @PipelineTessellationDomainOriginStateCreateInfo
+  STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO -> go @SamplerYcbcrConversionInfo
+  STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO -> go @BindImagePlaneMemoryInfo
+  STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO -> go @ImagePlaneMemoryRequirementsInfo
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES -> go @PhysicalDeviceSamplerYcbcrConversionFeatures
+  STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES -> go @SamplerYcbcrConversionImageFormatProperties
+  STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD -> go @TextureLODGatherFormatPropertiesAMD
+  STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO -> go @ProtectedSubmitInfo
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES -> go @PhysicalDeviceProtectedMemoryFeatures
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES -> go @PhysicalDeviceProtectedMemoryProperties
+  STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV -> go @PipelineCoverageToColorStateCreateInfoNV
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES -> go @PhysicalDeviceSamplerFilterMinmaxProperties
+  STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT -> go @SampleLocationsInfoEXT
+  STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT -> go @RenderPassSampleLocationsBeginInfoEXT
+  STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT -> go @PipelineSampleLocationsStateCreateInfoEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT -> go @PhysicalDeviceSampleLocationsPropertiesEXT
+  STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO -> go @SamplerReductionModeCreateInfo
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT -> go @PhysicalDeviceBlendOperationAdvancedFeaturesEXT
+  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 -> 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 -> go @PhysicalDeviceMaintenance4Features
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES -> go @PhysicalDeviceMaintenance4Properties
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES -> go @PhysicalDeviceMaintenance5Features
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES -> go @PhysicalDeviceMaintenance5Properties
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES -> go @PhysicalDeviceMaintenance6Features
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES -> go @PhysicalDeviceMaintenance6Properties
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_FEATURES_KHR -> go @PhysicalDeviceMaintenance7FeaturesKHR
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_PROPERTIES_KHR -> go @PhysicalDeviceMaintenance7PropertiesKHR
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_LIST_KHR -> go @PhysicalDeviceLayeredApiPropertiesListKHR
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_VULKAN_PROPERTIES_KHR -> go @PhysicalDeviceLayeredApiVulkanPropertiesKHR
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_8_FEATURES_KHR -> go @PhysicalDeviceMaintenance8FeaturesKHR
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_FEATURES_KHR -> go @PhysicalDeviceMaintenance9FeaturesKHR
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_PROPERTIES_KHR -> go @PhysicalDeviceMaintenance9PropertiesKHR
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_11_FEATURES_KHR -> go @PhysicalDeviceMaintenance11FeaturesKHR
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_10_PROPERTIES_KHR -> go @PhysicalDeviceMaintenance10PropertiesKHR
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_10_FEATURES_KHR -> go @PhysicalDeviceMaintenance10FeaturesKHR
+  STRUCTURE_TYPE_QUEUE_FAMILY_OWNERSHIP_TRANSFER_PROPERTIES_KHR -> go @QueueFamilyOwnershipTransferPropertiesKHR
+  STRUCTURE_TYPE_QUEUE_FAMILY_OPTIMAL_IMAGE_TRANSFER_GRANULARITY_PROPERTIES_KHR -> go @QueueFamilyOptimalImageTransferGranularityPropertiesKHR
+  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_PHYSICAL_DEVICE_ELAPSED_TIMER_QUERY_FEATURES_QCOM -> go @PhysicalDeviceElapsedTimerQueryFeaturesQCOM
+  STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO -> go @DeviceQueueGlobalPriorityCreateInfo
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES -> go @PhysicalDeviceGlobalPriorityQueryFeatures
+  STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES -> go @QueueFamilyGlobalPriorityProperties
+  STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT -> go @DebugUtilsObjectNameInfoEXT
+  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
+  STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT -> go @ImportMemoryHostPointerInfoEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT -> go @PhysicalDeviceExternalMemoryHostPropertiesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT -> go @PhysicalDeviceConservativeRasterizationPropertiesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD -> go @PhysicalDeviceShaderCorePropertiesAMD
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD -> go @PhysicalDeviceShaderCoreProperties2AMD
+  STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT -> go @PipelineRasterizationConservativeStateCreateInfoEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES -> go @PhysicalDeviceDescriptorIndexingFeatures
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES -> go @PhysicalDeviceDescriptorIndexingProperties
+  STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO -> go @DescriptorSetLayoutBindingFlagsCreateInfo
+  STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO -> go @DescriptorSetVariableDescriptorCountAllocateInfo
+  STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT -> go @DescriptorSetVariableDescriptorCountLayoutSupport
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES -> go @PhysicalDeviceTimelineSemaphoreFeatures
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES -> go @PhysicalDeviceTimelineSemaphoreProperties
+  STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO -> go @SemaphoreTypeCreateInfo
+  STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO -> go @TimelineSemaphoreSubmitInfo
+  STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO -> go @PipelineVertexInputDivisorStateCreateInfo
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT -> go @PhysicalDeviceVertexAttributeDivisorPropertiesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES -> go @PhysicalDeviceVertexAttributeDivisorProperties
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT -> go @PhysicalDevicePCIBusInfoPropertiesEXT
+  STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID -> go @ImportAndroidHardwareBufferInfoANDROID
+  STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID -> go @AndroidHardwareBufferUsageANDROID
+  STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID -> go @AndroidHardwareBufferFormatPropertiesANDROID
+  STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT -> go @CommandBufferInheritanceConditionalRenderingInfoEXT
+  STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID -> go @ExternalFormatANDROID
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES -> go @PhysicalDevice8BitStorageFeatures
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT -> go @PhysicalDeviceConditionalRenderingFeaturesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES -> go @PhysicalDeviceVulkanMemoryModelFeatures
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES -> go @PhysicalDeviceShaderAtomicInt64Features
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT -> go @PhysicalDeviceShaderAtomicFloatFeaturesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT -> go @PhysicalDeviceShaderAtomicFloat2FeaturesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES -> go @PhysicalDeviceVertexAttributeDivisorFeatures
+  STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV -> go @QueueFamilyCheckpointPropertiesNV
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES -> go @PhysicalDeviceDepthStencilResolveProperties
+  STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE -> go @SubpassDescriptionDepthStencilResolve
+  STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT -> go @ImageViewASTCDecodeModeEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT -> go @PhysicalDeviceASTCDecodeFeaturesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT -> go @PhysicalDeviceTransformFeedbackFeaturesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT -> go @PhysicalDeviceTransformFeedbackPropertiesEXT
+  STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT -> go @PipelineRasterizationStateStreamCreateInfoEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV -> go @PhysicalDeviceRepresentativeFragmentTestFeaturesNV
+  STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV -> go @PipelineRepresentativeFragmentTestStateCreateInfoNV
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV -> go @PhysicalDeviceExclusiveScissorFeaturesNV
+  STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV -> go @PipelineViewportExclusiveScissorStateCreateInfoNV
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV -> go @PhysicalDeviceCornerSampledImageFeaturesNV
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_KHR -> go @PhysicalDeviceComputeShaderDerivativesFeaturesKHR
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_PROPERTIES_KHR -> go @PhysicalDeviceComputeShaderDerivativesPropertiesKHR
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV -> go @PhysicalDeviceShaderImageFootprintFeaturesNV
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV -> go @PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_KHR -> go @PhysicalDeviceCopyMemoryIndirectFeaturesKHR
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV -> go @PhysicalDeviceCopyMemoryIndirectFeaturesNV
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_KHR -> go @PhysicalDeviceCopyMemoryIndirectPropertiesKHR
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_EXT -> go @PhysicalDeviceMemoryDecompressionFeaturesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_EXT -> go @PhysicalDeviceMemoryDecompressionPropertiesEXT
+  STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV -> go @PipelineViewportShadingRateImageStateCreateInfoNV
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV -> go @PhysicalDeviceShadingRateImageFeaturesNV
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV -> go @PhysicalDeviceShadingRateImagePropertiesNV
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI -> go @PhysicalDeviceInvocationMaskFeaturesHUAWEI
+  STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV -> go @PipelineViewportCoarseSampleOrderStateCreateInfoNV
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV -> go @PhysicalDeviceMeshShaderFeaturesNV
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV -> go @PhysicalDeviceMeshShaderPropertiesNV
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT -> go @PhysicalDeviceMeshShaderFeaturesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_EXT -> go @PhysicalDeviceMeshShaderPropertiesEXT
+  STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR -> go @WriteDescriptorSetAccelerationStructureKHR
+  STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV -> go @WriteDescriptorSetAccelerationStructureNV
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR -> go @PhysicalDeviceAccelerationStructureFeaturesKHR
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR -> go @PhysicalDeviceRayTracingPipelineFeaturesKHR
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR -> go @PhysicalDeviceRayQueryFeaturesKHR
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR -> go @PhysicalDeviceAccelerationStructurePropertiesKHR
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR -> go @PhysicalDeviceRayTracingPipelinePropertiesKHR
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV -> go @PhysicalDeviceRayTracingPropertiesNV
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR -> go @PhysicalDeviceRayTracingMaintenance1FeaturesKHR
+  STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT -> go @DrmFormatModifierPropertiesListEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT -> go @PhysicalDeviceImageDrmFormatModifierInfoEXT
+  STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT -> go @ImageDrmFormatModifierListCreateInfoEXT
+  STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT -> go @ImageDrmFormatModifierExplicitCreateInfoEXT
+  STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO -> go @ImageStencilUsageCreateInfo
+  STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD -> go @DeviceMemoryOverallocationCreateInfoAMD
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT -> go @PhysicalDeviceFragmentDensityMapFeaturesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT -> go @PhysicalDeviceFragmentDensityMap2FeaturesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_EXT -> go @PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT -> go @PhysicalDeviceFragmentDensityMapPropertiesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT -> go @PhysicalDeviceFragmentDensityMap2PropertiesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_EXT -> go @PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT
+  STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT -> go @RenderPassFragmentDensityMapCreateInfoEXT
+  STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_EXT -> go @RenderPassFragmentDensityMapOffsetEndInfoEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES -> go @PhysicalDeviceScalarBlockLayoutFeatures
+  STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR -> go @SurfaceProtectedCapabilitiesKHR
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES -> go @PhysicalDeviceUniformBufferStandardLayoutFeatures
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT -> go @PhysicalDeviceDepthClipEnableFeaturesEXT
+  STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT -> go @PipelineRasterizationDepthClipStateCreateInfoEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT -> go @PhysicalDeviceMemoryBudgetPropertiesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT -> go @PhysicalDeviceMemoryPriorityFeaturesEXT
+  STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT -> go @MemoryPriorityAllocateInfoEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT -> go @PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES -> go @PhysicalDeviceBufferDeviceAddressFeatures
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT -> go @PhysicalDeviceBufferDeviceAddressFeaturesEXT
+  STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO -> go @BufferOpaqueCaptureAddressCreateInfo
+  STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT -> go @BufferDeviceAddressCreateInfoEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT -> go @PhysicalDeviceImageViewImageFormatInfoEXT
+  STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT -> go @FilterCubicImageViewImageFormatPropertiesEXT
+  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 -> 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 -> 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
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_BARRIER_FEATURES_NV -> go @PhysicalDevicePresentBarrierFeaturesNV
+  STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_BARRIER_NV -> go @SurfaceCapabilitiesPresentBarrierNV
+  STRUCTURE_TYPE_SWAPCHAIN_PRESENT_BARRIER_CREATE_INFO_NV -> go @SwapchainPresentBarrierCreateInfoNV
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR -> go @PhysicalDevicePerformanceQueryFeaturesKHR
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR -> go @PhysicalDevicePerformanceQueryPropertiesKHR
+  STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR -> go @QueryPoolPerformanceCreateInfoKHR
+  STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR -> go @PerformanceQuerySubmitInfoKHR
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV -> go @PhysicalDeviceCoverageReductionModeFeaturesNV
+  STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV -> go @PipelineCoverageReductionStateCreateInfoNV
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL -> go @PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL
+  STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL -> go @QueryPoolPerformanceQueryCreateInfoINTEL
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR -> go @PhysicalDeviceShaderClockFeaturesKHR
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES -> go @PhysicalDeviceIndexTypeUint8Features
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV -> go @PhysicalDeviceShaderSMBuiltinsPropertiesNV
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV -> go @PhysicalDeviceShaderSMBuiltinsFeaturesNV
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT -> go @PhysicalDeviceFragmentShaderInterlockFeaturesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES -> go @PhysicalDeviceSeparateDepthStencilLayoutsFeatures
+  STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT -> go @AttachmentReferenceStencilLayout
+  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 -> go @PhysicalDeviceShaderDemoteToHelperInvocationFeatures
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT -> go @PhysicalDeviceTexelBufferAlignmentFeaturesEXT
+  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_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI -> go @PhysicalDeviceClusterCullingShaderPropertiesHUAWEI
+  STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO -> go @MemoryOpaqueCaptureAddressAllocateInfo
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES -> go @PhysicalDeviceLineRasterizationFeatures
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES -> go @PhysicalDeviceLineRasterizationProperties
+  STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO -> go @PipelineRasterizationLineStateCreateInfo
+  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_PHYSICAL_DEVICE_VULKAN_1_4_FEATURES -> go @PhysicalDeviceVulkan14Features
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_PROPERTIES -> go @PhysicalDeviceVulkan14Properties
+  STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD -> go @PipelineCompilerControlCreateInfoAMD
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD -> go @PhysicalDeviceCoherentMemoryFeaturesAMD
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_GPA_FEATURES_AMD -> go @PhysicalDeviceGpaFeaturesAMD
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_GPA_PROPERTIES_AMD -> go @PhysicalDeviceGpaPropertiesAMD
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_GPA_PROPERTIES_2_AMD -> go @PhysicalDeviceGpaProperties2AMD
+  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
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT -> go @PhysicalDeviceCustomBorderColorPropertiesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT -> go @PhysicalDeviceCustomBorderColorFeaturesEXT
+  STRUCTURE_TYPE_SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT -> go @SamplerBorderColorComponentMappingCreateInfoEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT -> go @PhysicalDeviceBorderColorSwizzleFeaturesEXT
+  STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_LINEAR_SWEPT_SPHERES_DATA_NV -> throwIO $ IOError Nothing InvalidArgument "peekChainHead" ("struct type STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_LINEAR_SWEPT_SPHERES_DATA_NV contains an undiscriminated union (DeviceOrHostAddressConstKHR) and can't be safely peeked") Nothing Nothing
+  STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_SPHERES_DATA_NV -> throwIO $ IOError Nothing InvalidArgument "peekChainHead" ("struct type STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_SPHERES_DATA_NV contains an undiscriminated union (DeviceOrHostAddressConstKHR) and can't be safely peeked") Nothing Nothing
+  STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR -> go @PipelineLibraryCreateInfoKHR
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT -> go @PhysicalDeviceExtendedDynamicStateFeaturesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT -> go @PhysicalDeviceExtendedDynamicState2FeaturesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT -> go @PhysicalDeviceExtendedDynamicState3FeaturesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT -> go @PhysicalDeviceExtendedDynamicState3PropertiesEXT
+  STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM -> go @RenderPassTransformBeginInfoQCOM
+  STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM -> go @CopyCommandTransformInfoQCOM
+  STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM -> go @CommandBufferInheritanceRenderPassTransformInfoQCOM
+  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 -> go @PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR -> go @PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_KHR -> go @PhysicalDeviceRobustness2FeaturesKHR
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_KHR -> go @PhysicalDeviceRobustness2PropertiesKHR
+  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
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT -> go @PhysicalDevice4444FormatsFeaturesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI -> go @PhysicalDeviceSubpassShadingFeaturesHUAWEI
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI -> go @(PhysicalDeviceClusterCullingShaderFeaturesHUAWEI '[])
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_VRS_FEATURES_HUAWEI -> go @PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT -> go @PhysicalDeviceShaderImageAtomicInt64FeaturesEXT
+  STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR -> go @FragmentShadingRateAttachmentInfoKHR
+  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 -> 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
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT -> go @PhysicalDeviceImage2DViewOf3DFeaturesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_SLICED_VIEW_OF_3D_FEATURES_EXT -> go @PhysicalDeviceImageSlicedViewOf3DFeaturesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_FEATURES_EXT -> go @PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_FEATURES_EXT -> go @PhysicalDeviceLegacyVertexAttributesFeaturesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_PROPERTIES_EXT -> go @PhysicalDeviceLegacyVertexAttributesPropertiesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT -> go @PhysicalDeviceMutableDescriptorTypeFeaturesEXT
+  STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT -> go @MutableDescriptorTypeCreateInfoEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT -> go @PhysicalDeviceDepthClipControlFeaturesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_DEVICE_MEMORY_FEATURES_EXT -> go @PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_RESOLVE_FEATURES_EXT -> go @PhysicalDeviceCustomResolveFeaturesEXT
+  STRUCTURE_TYPE_CUSTOM_RESOLVE_CREATE_INFO_EXT -> go @CustomResolveCreateInfoEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXT -> go @PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXT -> go @PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
+  STRUCTURE_TYPE_GENERATED_COMMANDS_PIPELINE_INFO_EXT -> go @GeneratedCommandsPipelineInfoEXT
+  STRUCTURE_TYPE_GENERATED_COMMANDS_SHADER_INFO_EXT -> go @GeneratedCommandsShaderInfoEXT
+  STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLIP_CONTROL_CREATE_INFO_EXT -> go @PipelineViewportDepthClipControlCreateInfoEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_CONTROL_FEATURES_EXT -> go @PhysicalDeviceDepthClampControlFeaturesEXT
+  STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLAMP_CONTROL_CREATE_INFO_EXT -> go @PipelineViewportDepthClampControlCreateInfoEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT -> go @PhysicalDeviceVertexInputDynamicStateFeaturesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV -> go @PhysicalDeviceExternalMemoryRDMAFeaturesNV
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_RELAXED_EXTENDED_INSTRUCTION_FEATURES_KHR -> go @PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR
+  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 -> go @MemoryBarrier2
+  STRUCTURE_TYPE_MEMORY_BARRIER_ACCESS_FLAGS_3_KHR -> go @MemoryBarrierAccessFlags3KHR
+  STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV -> go @QueueFamilyCheckpointProperties2NV
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES -> go @PhysicalDeviceSynchronization2Features
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFIED_IMAGE_LAYOUTS_FEATURES_KHR -> go @PhysicalDeviceUnifiedImageLayoutsFeaturesKHR
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES -> go @PhysicalDeviceHostImageCopyFeatures
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES -> go @PhysicalDeviceHostImageCopyProperties
+  STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE -> go @SubresourceHostMemcpySize
+  STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY -> go @HostImageCopyDevicePerformanceQuery
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT -> go @PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT -> go @PhysicalDeviceLegacyDitheringFeaturesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_FEATURES_EXT -> go @PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT
+  STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_ID_2_KHR -> go @SurfaceCapabilitiesPresentId2KHR
+  STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_WAIT_2_KHR -> go @SurfaceCapabilitiesPresentWait2KHR
+  STRUCTURE_TYPE_SUBPASS_RESOLVE_PERFORMANCE_QUERY_EXT -> go @SubpassResolvePerformanceQueryEXT
+  STRUCTURE_TYPE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_INFO_EXT -> go @MultisampledRenderToSingleSampledInfoEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES -> go @PhysicalDevicePipelineProtectedAccessFeatures
+  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_CU_MODULE_TEXTURING_MODE_CREATE_INFO_NVX -> go @CuModuleTexturingModeCreateInfoNVX
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT -> go @PhysicalDeviceDescriptorBufferFeaturesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT -> go @PhysicalDeviceDescriptorBufferPropertiesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT -> go @PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT
+  STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_PUSH_DESCRIPTOR_BUFFER_HANDLE_EXT -> go @DescriptorBufferBindingPushDescriptorBufferHandleEXT
+  STRUCTURE_TYPE_OPAQUE_CAPTURE_DESCRIPTOR_DATA_CREATE_INFO_EXT -> go @OpaqueCaptureDescriptorDataCreateInfoEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES -> go @PhysicalDeviceShaderIntegerDotProductFeatures
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES -> go @PhysicalDeviceShaderIntegerDotProductProperties
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_DRM_PROPERTIES_EXT -> go @PhysicalDeviceDrmPropertiesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR -> go @PhysicalDeviceFragmentShaderBarycentricFeaturesKHR
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_PROPERTIES_KHR -> go @PhysicalDeviceFragmentShaderBarycentricPropertiesKHR
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FMA_FEATURES_KHR -> go @PhysicalDeviceShaderFmaFeaturesKHR
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV -> go @PhysicalDeviceRayTracingMotionBlurFeaturesNV
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_VALIDATION_FEATURES_NV -> go @PhysicalDeviceRayTracingValidationFeaturesNV
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_LINEAR_SWEPT_SPHERES_FEATURES_NV -> go @PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
+  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
+  STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MOTION_INFO_NV -> go @AccelerationStructureMotionInfoNV
+  STRUCTURE_TYPE_IMPORT_MEMORY_BUFFER_COLLECTION_FUCHSIA -> go @ImportMemoryBufferCollectionFUCHSIA
+  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 -> 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 -> 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 -> 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
+  STRUCTURE_TYPE_IMAGE_VIEW_MIN_LOD_CREATE_INFO_EXT -> go @ImageViewMinLodCreateInfoEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_EXT -> go @PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV -> go @PhysicalDeviceLinearColorAttachmentFeaturesNV
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT -> go @PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_BINARY_FEATURES_KHR -> go @PhysicalDevicePipelineBinaryFeaturesKHR
+  STRUCTURE_TYPE_DEVICE_PIPELINE_BINARY_INTERNAL_CACHE_CONTROL_KHR -> go @DevicePipelineBinaryInternalCacheControlKHR
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_BINARY_PROPERTIES_KHR -> go @PhysicalDevicePipelineBinaryPropertiesKHR
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT -> go @PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT
+  STRUCTURE_TYPE_GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT -> go @GraphicsPipelineLibraryCreateInfoEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_NEURAL_ACCELERATOR_STATISTICS_FEATURES_ARM -> go @PhysicalDeviceDataGraphNeuralAcceleratorStatisticsFeaturesARM
+  STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_NEURAL_STATISTICS_CREATE_INFO_ARM -> go @DataGraphPipelineNeuralStatisticsCreateInfoARM
+  STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_NEURAL_STATISTICS_CREATE_INFO_ARM -> go @DataGraphPipelineSessionNeuralStatisticsCreateInfoARM
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE -> go @PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_FEATURES_EXT -> go @PhysicalDeviceNestedCommandBufferFeaturesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_PROPERTIES_EXT -> go @PhysicalDeviceNestedCommandBufferPropertiesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT -> go @PhysicalDeviceShaderModuleIdentifierFeaturesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_PROPERTIES_EXT -> go @PhysicalDeviceShaderModuleIdentifierPropertiesEXT
+  STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_MODULE_IDENTIFIER_CREATE_INFO_EXT -> go @PipelineShaderStageModuleIdentifierCreateInfoEXT
+  STRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT -> go @ImageCompressionControlEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT -> go @PhysicalDeviceImageCompressionControlFeaturesEXT
+  STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT -> go @ImageCompressionPropertiesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT -> go @PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT
+  STRUCTURE_TYPE_RENDER_PASS_CREATION_CONTROL_EXT -> go @RenderPassCreationControlEXT
+  STRUCTURE_TYPE_RENDER_PASS_CREATION_FEEDBACK_CREATE_INFO_EXT -> go @RenderPassCreationFeedbackCreateInfoEXT
+  STRUCTURE_TYPE_RENDER_PASS_SUBPASS_FEEDBACK_CREATE_INFO_EXT -> go @RenderPassSubpassFeedbackCreateInfoEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT -> go @PhysicalDeviceSubpassMergeFeedbackFeaturesEXT
+  STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MICROMAP_DATA_KHR -> go @AccelerationStructureGeometryMicromapDataKHR
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_KHR -> go @PhysicalDeviceOpacityMicromapFeaturesKHR
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_EXT -> go @PhysicalDeviceOpacityMicromapFeaturesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_PROPERTIES_KHR -> go @PhysicalDeviceOpacityMicromapPropertiesKHR
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_PROPERTIES_EXT -> go @PhysicalDeviceOpacityMicromapPropertiesEXT
+  STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_KHR -> go @AccelerationStructureTrianglesOpacityMicromapKHR
+  STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT -> throwIO $ IOError Nothing InvalidArgument "peekChainHead" ("struct type STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT contains an undiscriminated union (DeviceOrHostAddressConstKHR) and can't be safely peeked") Nothing Nothing
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_FEATURES_NV -> go @PhysicalDeviceDisplacementMicromapFeaturesNV
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_PROPERTIES_NV -> go @PhysicalDeviceDisplacementMicromapPropertiesNV
+  STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_DISPLACEMENT_MICROMAP_NV -> throwIO $ IOError Nothing InvalidArgument "peekChainHead" ("struct type STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_DISPLACEMENT_MICROMAP_NV contains an undiscriminated union (DeviceOrHostAddressConstKHR) and can't be safely peeked") Nothing Nothing
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT -> go @PhysicalDevicePipelinePropertiesFeaturesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_FEATURES_AMD -> go @PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
+  STRUCTURE_TYPE_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT -> go @ExternalMemoryAcquireUnmodifiedEXT
+  STRUCTURE_TYPE_EXPORT_METAL_OBJECT_CREATE_INFO_EXT -> go @ExportMetalObjectCreateInfoEXT
+  STRUCTURE_TYPE_EXPORT_METAL_DEVICE_INFO_EXT -> go @ExportMetalDeviceInfoEXT
+  STRUCTURE_TYPE_EXPORT_METAL_COMMAND_QUEUE_INFO_EXT -> go @ExportMetalCommandQueueInfoEXT
+  STRUCTURE_TYPE_EXPORT_METAL_BUFFER_INFO_EXT -> go @ExportMetalBufferInfoEXT
+  STRUCTURE_TYPE_IMPORT_METAL_BUFFER_INFO_EXT -> go @ImportMetalBufferInfoEXT
+  STRUCTURE_TYPE_EXPORT_METAL_TEXTURE_INFO_EXT -> go @ExportMetalTextureInfoEXT
+  STRUCTURE_TYPE_IMPORT_METAL_TEXTURE_INFO_EXT -> go @ImportMetalTextureInfoEXT
+  STRUCTURE_TYPE_EXPORT_METAL_IO_SURFACE_INFO_EXT -> go @ExportMetalIOSurfaceInfoEXT
+  STRUCTURE_TYPE_IMPORT_METAL_IO_SURFACE_INFO_EXT -> go @ImportMetalIOSurfaceInfoEXT
+  STRUCTURE_TYPE_EXPORT_METAL_SHARED_EVENT_INFO_EXT -> go @ExportMetalSharedEventInfoEXT
+  STRUCTURE_TYPE_IMPORT_METAL_SHARED_EVENT_INFO_EXT -> go @ImportMetalSharedEventInfoEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT -> go @PhysicalDeviceNonSeamlessCubeMapFeaturesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES -> go @PhysicalDevicePipelineRobustnessFeatures
+  STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO -> go @PipelineRobustnessCreateInfo
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES -> go @PhysicalDevicePipelineRobustnessProperties
+  STRUCTURE_TYPE_IMAGE_VIEW_SAMPLE_WEIGHT_CREATE_INFO_QCOM -> go @ImageViewSampleWeightCreateInfoQCOM
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MULTIPLE_WAIT_QUEUES_FEATURES_QCOM -> go @PhysicalDeviceShaderMultipleWaitQueuesFeaturesQCOM
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MULTIPLE_WAIT_QUEUES_PROPERTIES_QCOM -> go @PhysicalDeviceShaderMultipleWaitQueuesPropertiesQCOM
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM -> go @PhysicalDeviceImageProcessingFeaturesQCOM
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_PROPERTIES_QCOM -> go @PhysicalDeviceImageProcessingPropertiesQCOM
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM -> go @PhysicalDeviceTilePropertiesFeaturesQCOM
+  STRUCTURE_TYPE_TILE_MEMORY_BIND_INFO_QCOM -> go @TileMemoryBindInfoQCOM
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_AMIGO_PROFILING_FEATURES_SEC -> go @PhysicalDeviceAmigoProfilingFeaturesSEC
+  STRUCTURE_TYPE_AMIGO_PROFILING_SUBMIT_INFO_SEC -> go @AmigoProfilingSubmitInfoSEC
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT -> go @PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT
+  STRUCTURE_TYPE_ATTACHMENT_FEEDBACK_LOOP_INFO_EXT -> go @AttachmentFeedbackLoopInfoEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_ADDRESS_BINDING_REPORT_FEATURES_EXT -> go @PhysicalDeviceAddressBindingReportFeaturesEXT
+  STRUCTURE_TYPE_RENDERING_ATTACHMENT_FLAGS_INFO_KHR -> go @RenderingAttachmentFlagsInfoKHR
+  STRUCTURE_TYPE_RESOLVE_IMAGE_MODE_INFO_KHR -> go @ResolveImageModeInfoKHR
+  STRUCTURE_TYPE_DEVICE_ADDRESS_BINDING_CALLBACK_DATA_EXT -> go @DeviceAddressBindingCallbackDataEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_FEATURES_NV -> go @PhysicalDeviceOpticalFlowFeaturesNV
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_PROPERTIES_NV -> go @PhysicalDeviceOpticalFlowPropertiesNV
+  STRUCTURE_TYPE_OPTICAL_FLOW_IMAGE_FORMAT_INFO_NV -> go @OpticalFlowImageFormatInfoNV
+  STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_PRIVATE_DATA_INFO_NV -> go @OpticalFlowSessionCreatePrivateDataInfoNV
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_FEATURES_EXT -> go @PhysicalDeviceFaultFeaturesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_FEATURES_KHR -> go @PhysicalDeviceFaultFeaturesKHR
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_PROPERTIES_KHR -> go @PhysicalDeviceFaultPropertiesKHR
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT -> go @PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT
+  STRUCTURE_TYPE_DEPTH_BIAS_REPRESENTATION_INFO_EXT -> go @DepthBiasRepresentationInfoEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_PROPERTIES_ARM -> go @PhysicalDeviceShaderCoreBuiltinsPropertiesARM
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM -> go @PhysicalDeviceShaderCoreBuiltinsFeaturesARM
+  STRUCTURE_TYPE_FRAME_BOUNDARY_EXT -> go @FrameBoundaryEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAME_BOUNDARY_FEATURES_EXT -> go @PhysicalDeviceFrameBoundaryFeaturesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_FEATURES_EXT -> go @PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_INTERNALLY_SYNCHRONIZED_QUEUES_FEATURES_KHR -> go @PhysicalDeviceInternallySynchronizedQueuesFeaturesKHR
+  STRUCTURE_TYPE_SURFACE_PRESENT_MODE_KHR -> go @SurfacePresentModeKHR
+  STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_KHR -> go @SurfacePresentScalingCapabilitiesKHR
+  STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_KHR -> go @SurfacePresentModeCompatibilityKHR
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_KHR -> go @PhysicalDeviceSwapchainMaintenance1FeaturesKHR
+  STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_KHR -> go @SwapchainPresentFenceInfoKHR
+  STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_KHR -> go @SwapchainPresentModesCreateInfoKHR
+  STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_KHR -> go @SwapchainPresentModeInfoKHR
+  STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_KHR -> go @SwapchainPresentScalingCreateInfoKHR
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_BIAS_CONTROL_FEATURES_EXT -> go @PhysicalDeviceDepthBiasControlFeaturesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_EXT -> go @PhysicalDeviceRayTracingInvocationReorderFeaturesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV -> go @PhysicalDeviceRayTracingInvocationReorderFeaturesNV
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_EXT -> go @PhysicalDeviceRayTracingInvocationReorderPropertiesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV -> go @PhysicalDeviceRayTracingInvocationReorderPropertiesNV
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_FEATURES_NV -> go @PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_PROPERTIES_NV -> go @PhysicalDeviceExtendedSparseAddressSpacePropertiesNV
+  STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_LIST_LUNARG -> go @DirectDriverLoadingListLUNARG
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_VIEWPORTS_FEATURES_QCOM -> go @PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_POSITION_FETCH_FEATURES_KHR -> go @PhysicalDeviceRayTracingPositionFetchFeaturesKHR
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_ARM -> go @PhysicalDeviceShaderCorePropertiesARM
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_RENDER_AREAS_FEATURES_QCOM -> go @PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
+  STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_RENDER_AREAS_RENDER_PASS_BEGIN_INFO_QCOM -> go @MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM
+  STRUCTURE_TYPE_QUERY_LOW_LATENCY_SUPPORT_NV -> go @QueryLowLatencySupportNV
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT -> go @PhysicalDeviceShaderObjectFeaturesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_PROPERTIES_EXT -> go @PhysicalDeviceShaderObjectPropertiesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_FEATURES_EXT -> go @PhysicalDeviceShaderTileImageFeaturesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_PROPERTIES_EXT -> go @PhysicalDeviceShaderTileImagePropertiesEXT
+  STRUCTURE_TYPE_IMPORT_SCREEN_BUFFER_INFO_QNX -> go @ImportScreenBufferInfoQNX
+  STRUCTURE_TYPE_SCREEN_BUFFER_FORMAT_PROPERTIES_QNX -> go @ScreenBufferFormatPropertiesQNX
+  STRUCTURE_TYPE_EXTERNAL_FORMAT_QNX -> go @ExternalFormatQNX
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCREEN_BUFFER_FEATURES_QNX -> go @PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_KHR -> go @PhysicalDeviceCooperativeMatrixFeaturesKHR
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_KHR -> go @PhysicalDeviceCooperativeMatrixPropertiesKHR
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_CONVERSION_FEATURES_QCOM -> go @PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ENQUEUE_PROPERTIES_AMDX -> go @PhysicalDeviceShaderEnqueuePropertiesAMDX
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ENQUEUE_FEATURES_AMDX -> go @PhysicalDeviceShaderEnqueueFeaturesAMDX
+  STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_NODE_CREATE_INFO_AMDX -> go @PipelineShaderStageNodeCreateInfoAMDX
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_ANTI_LAG_FEATURES_AMD -> go @PhysicalDeviceAntiLagFeaturesAMD
+  STRUCTURE_TYPE_BIND_MEMORY_STATUS -> go @BindMemoryStatus
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_MEMORY_HEAP_FEATURES_QCOM -> go @PhysicalDeviceTileMemoryHeapFeaturesQCOM
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_MEMORY_HEAP_PROPERTIES_QCOM -> go @PhysicalDeviceTileMemoryHeapPropertiesQCOM
+  STRUCTURE_TYPE_TILE_MEMORY_SIZE_INFO_QCOM -> go @TileMemorySizeInfoQCOM
+  STRUCTURE_TYPE_TILE_MEMORY_REQUIREMENTS_QCOM -> go @TileMemoryRequirementsQCOM
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_CLAMP_FEATURES_QCOM -> go @PhysicalDeviceCubicClampFeaturesQCOM
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_DEGAMMA_FEATURES_QCOM -> go @PhysicalDeviceYcbcrDegammaFeaturesQCOM
+  STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_YCBCR_DEGAMMA_CREATE_INFO_QCOM -> go @SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_WEIGHTS_FEATURES_QCOM -> go @PhysicalDeviceCubicWeightsFeaturesQCOM
+  STRUCTURE_TYPE_SAMPLER_CUBIC_WEIGHTS_CREATE_INFO_QCOM -> go @SamplerCubicWeightsCreateInfoQCOM
+  STRUCTURE_TYPE_BLIT_IMAGE_CUBIC_WEIGHTS_INFO_QCOM -> go @BlitImageCubicWeightsInfoQCOM
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_FEATURES_QCOM -> go @PhysicalDeviceImageProcessing2FeaturesQCOM
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_PROPERTIES_QCOM -> go @PhysicalDeviceImageProcessing2PropertiesQCOM
+  STRUCTURE_TYPE_SAMPLER_BLOCK_MATCH_WINDOW_CREATE_INFO_QCOM -> go @SamplerBlockMatchWindowCreateInfoQCOM
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_3_FEATURES_QCOM -> go @PhysicalDeviceImageProcessing3FeaturesQCOM
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_POOL_OVERALLOCATION_FEATURES_NV -> go @PhysicalDeviceDescriptorPoolOverallocationFeaturesNV
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_DRIVER_PROPERTIES_MSFT -> go @PhysicalDeviceLayeredDriverPropertiesMSFT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_PER_STAGE_DESCRIPTOR_SET_FEATURES_NV -> go @PhysicalDevicePerStageDescriptorSetFeaturesNV
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_FEATURES_ANDROID -> go @PhysicalDeviceExternalFormatResolveFeaturesANDROID
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_PROPERTIES_ANDROID -> go @PhysicalDeviceExternalFormatResolvePropertiesANDROID
+  STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_RESOLVE_PROPERTIES_ANDROID -> go @AndroidHardwareBufferFormatResolvePropertiesANDROID
+  STRUCTURE_TYPE_LATENCY_SUBMISSION_PRESENT_ID_NV -> go @LatencySubmissionPresentIdNV
+  STRUCTURE_TYPE_SWAPCHAIN_LATENCY_CREATE_INFO_NV -> go @SwapchainLatencyCreateInfoNV
+  STRUCTURE_TYPE_LATENCY_SURFACE_CAPABILITIES_NV -> go @LatencySurfaceCapabilitiesNV
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_FEATURES_NV -> go @PhysicalDeviceCudaKernelLaunchFeaturesNV
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_PROPERTIES_NV -> go @PhysicalDeviceCudaKernelLaunchPropertiesNV
+  STRUCTURE_TYPE_DEVICE_QUEUE_SHADER_CORE_CONTROL_CREATE_INFO_ARM -> go @DeviceQueueShaderCoreControlCreateInfoARM
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_FEATURES_ARM -> go @PhysicalDeviceSchedulingControlsFeaturesARM
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_PROPERTIES_ARM -> go @PhysicalDeviceSchedulingControlsPropertiesARM
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_DISPATCH_PARAMETERS_PROPERTIES_ARM -> go @PhysicalDeviceSchedulingControlsDispatchParametersPropertiesARM
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_RELAXED_LINE_RASTERIZATION_FEATURES_IMG -> go @PhysicalDeviceRelaxedLineRasterizationFeaturesIMG
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_FEATURES_ARM -> go @PhysicalDeviceRenderPassStripedFeaturesARM
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_PROPERTIES_ARM -> go @PhysicalDeviceRenderPassStripedPropertiesARM
+  STRUCTURE_TYPE_RENDER_PASS_STRIPE_BEGIN_INFO_ARM -> go @RenderPassStripeBeginInfoARM
+  STRUCTURE_TYPE_RENDER_PASS_STRIPE_SUBMIT_INFO_ARM -> go @RenderPassStripeSubmitInfoARM
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_OPACITY_MICROMAP_FEATURES_ARM -> go @PhysicalDevicePipelineOpacityMicromapFeaturesARM
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MAXIMAL_RECONVERGENCE_FEATURES_KHR -> go @PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES -> go @PhysicalDeviceShaderSubgroupRotateFeatures
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES -> go @PhysicalDeviceShaderExpectAssumeFeatures
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES -> go @PhysicalDeviceShaderFloatControls2Features
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES -> go @PhysicalDeviceDynamicRenderingLocalReadFeatures
+  STRUCTURE_TYPE_RENDERING_ATTACHMENT_LOCATION_INFO -> go @RenderingAttachmentLocationInfo
+  STRUCTURE_TYPE_RENDERING_INPUT_ATTACHMENT_INDEX_INFO -> go @RenderingInputAttachmentIndexInfo
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_QUAD_CONTROL_FEATURES_KHR -> go @PhysicalDeviceShaderQuadControlFeaturesKHR
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT16_VECTOR_FEATURES_NV -> go @PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_MAP_MEMORY_PLACED_FEATURES_EXT -> go @PhysicalDeviceMapMemoryPlacedFeaturesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_MAP_MEMORY_PLACED_PROPERTIES_EXT -> go @PhysicalDeviceMapMemoryPlacedPropertiesEXT
+  STRUCTURE_TYPE_MEMORY_MAP_PLACED_INFO_EXT -> go @MemoryMapPlacedInfoEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_BFLOAT16_FEATURES_KHR -> go @PhysicalDeviceShaderBfloat16FeaturesKHR
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_RAW_ACCESS_CHAINS_FEATURES_NV -> go @PhysicalDeviceRawAccessChainsFeaturesNV
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_COMMAND_BUFFER_INHERITANCE_FEATURES_NV -> go @PhysicalDeviceCommandBufferInheritanceFeaturesNV
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_FEATURES_MESA -> go @PhysicalDeviceImageAlignmentControlFeaturesMESA
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_PROPERTIES_MESA -> go @PhysicalDeviceImageAlignmentControlPropertiesMESA
+  STRUCTURE_TYPE_IMAGE_ALIGNMENT_CONTROL_CREATE_INFO_MESA -> go @ImageAlignmentControlCreateInfoMESA
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_REPLICATED_COMPOSITES_FEATURES_EXT -> go @PhysicalDeviceShaderReplicatedCompositesFeaturesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_KHR -> go @PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_FEATURES_NV -> go @PhysicalDeviceCooperativeMatrix2FeaturesNV
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_PROPERTIES_NV -> go @PhysicalDeviceCooperativeMatrix2PropertiesNV
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_HDR_VIVID_FEATURES_HUAWEI -> go @PhysicalDeviceHdrVividFeaturesHUAWEI
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_ROBUSTNESS_FEATURES_EXT -> go @PhysicalDeviceVertexAttributeRobustnessFeaturesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_DENSE_GEOMETRY_FORMAT_FEATURES_AMDX -> go @PhysicalDeviceDenseGeometryFormatFeaturesAMDX
+  STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DENSE_GEOMETRY_FORMAT_TRIANGLES_DATA_AMDX -> throwIO $ IOError Nothing InvalidArgument "peekChainHead" ("struct type STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DENSE_GEOMETRY_FORMAT_TRIANGLES_DATA_AMDX contains an undiscriminated union (DeviceOrHostAddressConstKHR) and can't be safely peeked") Nothing Nothing
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_KHR -> go @PhysicalDeviceDepthClampZeroOneFeaturesKHR
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_VECTOR_FEATURES_NV -> go @PhysicalDeviceCooperativeVectorFeaturesNV
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_VECTOR_PROPERTIES_NV -> go @PhysicalDeviceCooperativeVectorPropertiesNV
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_SHADING_FEATURES_QCOM -> go @PhysicalDeviceTileShadingFeaturesQCOM
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_SHADING_PROPERTIES_QCOM -> go @PhysicalDeviceTileShadingPropertiesQCOM
+  STRUCTURE_TYPE_RENDER_PASS_TILE_SHADING_CREATE_INFO_QCOM -> go @RenderPassTileShadingCreateInfoQCOM
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_PROPERTIES_VALVE -> go @PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_FEATURES_VALVE -> go @PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE
+  STRUCTURE_TYPE_PIPELINE_FRAGMENT_DENSITY_MAP_LAYERED_CREATE_INFO_VALVE -> go @PipelineFragmentDensityMapLayeredCreateInfoVALVE
+  STRUCTURE_TYPE_SET_PRESENT_CONFIG_NV -> go @SetPresentConfigNV
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_METERING_FEATURES_NV -> go @PhysicalDevicePresentMeteringFeaturesNV
+  STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_DEVICE_CREATE_INFO_NV -> go @ExternalComputeQueueDeviceCreateInfoNV
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_COMPUTE_QUEUE_PROPERTIES_NV -> go @PhysicalDeviceExternalComputeQueuePropertiesNV
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_UNIFORM_BUFFER_UNSIZED_ARRAY_FEATURES_EXT -> go @PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MIXED_FLOAT_DOT_PRODUCT_FEATURES_VALVE -> go @PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_RESTART_INDEX_FEATURES_EXT -> go @PhysicalDevicePrimitiveRestartIndexFeaturesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_FORMAT_PACK_FEATURES_ARM -> go @PhysicalDeviceFormatPackFeaturesARM
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_THROTTLE_HINT_FEATURES_SEC -> go @PhysicalDeviceThrottleHintFeaturesSEC
+  STRUCTURE_TYPE_THROTTLE_HINT_SUBMIT_INFO_SEC -> go @ThrottleHintSubmitInfoSEC
+  STRUCTURE_TYPE_TENSOR_DESCRIPTION_ARM -> go @TensorDescriptionARM
+  STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_TENSOR_ARM -> go @WriteDescriptorSetTensorARM
+  STRUCTURE_TYPE_TENSOR_FORMAT_PROPERTIES_ARM -> go @TensorFormatPropertiesARM
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_TENSOR_PROPERTIES_ARM -> go @PhysicalDeviceTensorPropertiesARM
+  STRUCTURE_TYPE_TENSOR_MEMORY_BARRIER_ARM -> go @TensorMemoryBarrierARM
+  STRUCTURE_TYPE_TENSOR_DEPENDENCY_INFO_ARM -> go @TensorDependencyInfoARM
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_TENSOR_FEATURES_ARM -> go @PhysicalDeviceTensorFeaturesARM
+  STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_TENSOR_ARM -> go @MemoryDedicatedAllocateInfoTensorARM
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_PROPERTIES_ARM -> go @PhysicalDeviceDescriptorBufferTensorPropertiesARM
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_FEATURES_ARM -> go @PhysicalDeviceDescriptorBufferTensorFeaturesARM
+  STRUCTURE_TYPE_DESCRIPTOR_GET_TENSOR_INFO_ARM -> go @DescriptorGetTensorInfoARM
+  STRUCTURE_TYPE_FRAME_BOUNDARY_TENSORS_ARM -> go @FrameBoundaryTensorsARM
+  STRUCTURE_TYPE_EXTERNAL_MEMORY_TENSOR_CREATE_INFO_ARM -> go @ExternalMemoryTensorCreateInfoARM
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT8_FEATURES_EXT -> go @PhysicalDeviceShaderFloat8FeaturesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_FEATURES_ARM -> go @PhysicalDeviceDataGraphFeaturesARM
+  STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CONSTANT_TENSOR_SEMI_STRUCTURED_SPARSITY_INFO_ARM -> go @DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM
+  STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_RESOURCE_INFO_IMAGE_LAYOUT_ARM -> go @DataGraphPipelineResourceInfoImageLayoutARM
+  STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_COMPILER_CONTROL_CREATE_INFO_ARM -> go @DataGraphPipelineCompilerControlCreateInfoARM
+  STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SHADER_MODULE_CREATE_INFO_ARM -> go @DataGraphPipelineShaderModuleCreateInfoARM
+  STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_IDENTIFIER_CREATE_INFO_ARM -> go @DataGraphPipelineIdentifierCreateInfoARM
+  STRUCTURE_TYPE_DATA_GRAPH_PROCESSING_ENGINE_CREATE_INFO_ARM -> go @DataGraphProcessingEngineCreateInfoARM
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CACHE_INCREMENTAL_MODE_FEATURES_SEC -> go @PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC
+  STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_BUILTIN_MODEL_CREATE_INFO_QCOM -> go @DataGraphPipelineBuiltinModelCreateInfoQCOM
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_MODEL_FEATURES_QCOM -> go @PhysicalDeviceDataGraphModelFeaturesQCOM
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_UNTYPED_POINTERS_FEATURES_KHR -> go @PhysicalDeviceShaderUntypedPointersFeaturesKHR
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_64_BIT_INDEXING_FEATURES_EXT -> go @PhysicalDeviceShader64BitIndexingFeaturesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_QUEUE_PERF_HINT_FEATURES_QCOM -> go @PhysicalDeviceQueuePerfHintFeaturesQCOM
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_QUEUE_PERF_HINT_PROPERTIES_QCOM -> go @PhysicalDeviceQueuePerfHintPropertiesQCOM
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_OCCUPANCY_PRIORITY_FEATURES_NV -> go @PhysicalDeviceComputeOccupancyPriorityFeaturesNV
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_LONG_VECTOR_FEATURES_EXT -> go @PhysicalDeviceShaderLongVectorFeaturesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_LONG_VECTOR_PROPERTIES_EXT -> go @PhysicalDeviceShaderLongVectorPropertiesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_3D_FEATURES_EXT -> go @PhysicalDeviceTextureCompressionASTC3DFeaturesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_PARTITIONED_FEATURES_EXT -> go @PhysicalDeviceShaderSubgroupPartitionedFeaturesEXT
+  STRUCTURE_TYPE_SHADER_DESCRIPTOR_SET_AND_BINDING_MAPPING_INFO_EXT -> throwIO $ IOError Nothing InvalidArgument "peekChainHead" ("struct type STRUCTURE_TYPE_SHADER_DESCRIPTOR_SET_AND_BINDING_MAPPING_INFO_EXT contains an undiscriminated union (DescriptorMappingSourceDataEXT) and can't be safely peeked") Nothing Nothing
+  STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_INDEX_CREATE_INFO_EXT -> go @SamplerCustomBorderColorIndexCreateInfoEXT
+  STRUCTURE_TYPE_OPAQUE_CAPTURE_DATA_CREATE_INFO_EXT -> go @OpaqueCaptureDataCreateInfoEXT
+  STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_PUSH_DATA_TOKEN_NV -> go @IndirectCommandsLayoutPushDataTokenNV
+  STRUCTURE_TYPE_SUBSAMPLED_IMAGE_FORMAT_PROPERTIES_EXT -> go @SubsampledImageFormatPropertiesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SPLIT_BARRIER_FEATURES_EXT -> go @PhysicalDeviceShaderSplitBarrierFeaturesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SPLIT_BARRIER_PROPERTIES_EXT -> go @PhysicalDeviceShaderSplitBarrierPropertiesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_HEAP_FEATURES_EXT -> go @PhysicalDeviceDescriptorHeapFeaturesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_HEAP_PROPERTIES_EXT -> go @PhysicalDeviceDescriptorHeapPropertiesEXT
+  STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_DESCRIPTOR_HEAP_INFO_EXT -> go @CommandBufferInheritanceDescriptorHeapInfoEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_HEAP_TENSOR_PROPERTIES_ARM -> go @PhysicalDeviceDescriptorHeapTensorPropertiesARM
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INSTRUMENTATION_FEATURES_ARM -> go @PhysicalDeviceShaderInstrumentationFeaturesARM
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INSTRUMENTATION_PROPERTIES_ARM -> go @PhysicalDeviceShaderInstrumentationPropertiesARM
+  STRUCTURE_TYPE_MEMORY_RANGE_BARRIERS_INFO_KHR -> go @(MemoryRangeBarriersInfoKHR '[])
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_ADDRESS_COMMANDS_FEATURES_KHR -> go @PhysicalDeviceDeviceAddressCommandsFeaturesKHR
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CONSTANT_DATA_FEATURES_KHR -> go @PhysicalDeviceShaderConstantDataFeaturesKHR
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ABORT_FEATURES_KHR -> go @PhysicalDeviceShaderAbortFeaturesKHR
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ABORT_PROPERTIES_KHR -> go @PhysicalDeviceShaderAbortPropertiesKHR
+  STRUCTURE_TYPE_DEVICE_FAULT_SHADER_ABORT_MESSAGE_INFO_KHR -> go @DeviceFaultShaderAbortMessageInfoKHR
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_OPTICAL_FLOW_FEATURES_ARM -> go @PhysicalDeviceDataGraphOpticalFlowFeaturesARM
+  STRUCTURE_TYPE_DATA_GRAPH_OPTICAL_FLOW_IMAGE_FORMAT_INFO_ARM -> go @DataGraphOpticalFlowImageFormatInfoARM
+  STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SINGLE_NODE_CREATE_INFO_ARM -> go @DataGraphPipelineSingleNodeCreateInfoARM
+  STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_OPTICAL_FLOW_CREATE_INFO_ARM -> go @DataGraphPipelineOpticalFlowCreateInfoARM
+  STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_OPTICAL_FLOW_DISPATCH_INFO_ARM -> go @DataGraphPipelineOpticalFlowDispatchInfoARM
+  t -> throwIO $ IOError Nothing InvalidArgument "peekChainHead" ("Unrecognized struct type: " <> show t) Nothing Nothing
+ where
+  go :: forall e . (Typeable e, FromCStruct e, ToCStruct e, Show e) => IO b
+  go =
+    let r = extends @a @e Proxy $ do
+          head' <- peekCStruct @e (castPtr p)
+          pure $ c head'
+    in  fromMaybe
+          (throwIO $ IOError
+            Nothing
+            InvalidArgument
+            "peekChainHead"
+            (  "Illegal struct extension of "
+            <> extensibleTypeName @a
+            <> " with "
+            <> show ty
+            )
+            Nothing
+            Nothing
+          )
+          r
+
+class Extensible (a :: [Type] -> Type) where
+  extensibleTypeName :: String
+  -- ^ For error reporting an invalid extension
+  getNext :: a es -> Chain es
+  setNext :: a ds -> Chain es -> a es
+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends a e => b) -> Maybe b
+
+type family Chain (xs :: [Type]) = (r :: Type) | r -> xs where
+  Chain '[]    = ()
+  Chain (x:xs) = (x, Chain xs)
+
+-- | A pattern synonym to separate the head of a struct chain from the
+-- tail, use in conjunction with ':&' to extract several members.
+--
+-- @
+-- Head{..} ::& () <- returningNoTail a b c
+-- -- Equivalent to
+-- Head{..} <- returningNoTail @'[] a b c
+-- @
+--
+-- @
+-- Head{..} ::& Foo{..} :& Bar{..} :& () <- returningWithTail a b c
+-- @
+--
+-- @
+-- myFun (Head{..} :&& Foo{..} :& ())
+-- @
+pattern (::&) :: Extensible a => a es' -> Chain es -> a es
+pattern a ::& es <- (\a -> (a, getNext a) -> (a, es))
+  where a ::& es = setNext a es
+infix 6 ::&
+{-# complete (::&) :: BufferUsageFlags2CreateInfo #-}
+{-# complete (::&) :: ShaderModuleCreateInfo #-}
+{-# complete (::&) :: ComputePipelineIndirectBufferInfoNV #-}
+{-# complete (::&) :: PipelineCreateFlags2CreateInfo #-}
+{-# complete (::&) :: PipelineBinaryInfoKHR #-}
+{-# complete (::&) :: PipelineLayoutCreateInfo #-}
+{-# complete (::&) :: DisplaySurfaceStereoCreateInfoNV #-}
+{-# complete (::&) :: DisplayPresentInfoKHR #-}
+{-# complete (::&) :: DebugReportCallbackCreateInfoEXT #-}
+{-# complete (::&) :: ValidationFlagsEXT #-}
+{-# complete (::&) :: ValidationFeaturesEXT #-}
+{-# complete (::&) :: LayerSettingsCreateInfoEXT #-}
+{-# complete (::&) :: PipelineRasterizationStateRasterizationOrderAMD #-}
+{-# complete (::&) :: DedicatedAllocationImageCreateInfoNV #-}
+{-# complete (::&) :: DedicatedAllocationBufferCreateInfoNV #-}
+{-# complete (::&) :: DedicatedAllocationMemoryAllocateInfoNV #-}
+{-# complete (::&) :: ExternalMemoryImageCreateInfoNV #-}
+{-# complete (::&) :: ExportMemoryAllocateInfoNV #-}
+{-# complete (::&) :: ImportMemoryWin32HandleInfoNV #-}
+{-# complete (::&) :: ExportMemoryWin32HandleInfoNV #-}
+{-# complete (::&) :: Win32KeyedMutexAcquireReleaseInfoNV #-}
+{-# complete (::&) :: PhysicalDeviceDeviceGeneratedCommandsFeaturesNV #-}
+{-# complete (::&) :: PushConstantBankInfoNV #-}
+{-# complete (::&) :: PhysicalDevicePushConstantBankFeaturesNV #-}
+{-# complete (::&) :: PhysicalDevicePushConstantBankPropertiesNV #-}
+{-# complete (::&) :: PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV #-}
+{-# complete (::&) :: DevicePrivateDataCreateInfo #-}
+{-# complete (::&) :: PhysicalDevicePrivateDataFeatures #-}
+{-# complete (::&) :: PhysicalDeviceDeviceGeneratedCommandsPropertiesNV #-}
+{-# complete (::&) :: PhysicalDeviceMultiDrawPropertiesEXT #-}
+{-# complete (::&) :: GraphicsPipelineShaderGroupsCreateInfoNV #-}
+{-# complete (::&) :: PhysicalDeviceFeatures2 #-}
+{-# complete (::&) :: PhysicalDevicePushDescriptorProperties #-}
+{-# complete (::&) :: PhysicalDeviceDriverProperties #-}
+{-# complete (::&) :: PresentRegionsKHR #-}
+{-# complete (::&) :: PhysicalDeviceVariablePointersFeatures #-}
+{-# complete (::&) :: PhysicalDeviceExternalImageFormatInfo #-}
+{-# complete (::&) :: ExternalImageFormatProperties #-}
+{-# complete (::&) :: PhysicalDeviceIDProperties #-}
+{-# complete (::&) :: ExternalMemoryImageCreateInfo #-}
+{-# complete (::&) :: ExternalMemoryBufferCreateInfo #-}
+{-# complete (::&) :: ExportMemoryAllocateInfo #-}
+{-# complete (::&) :: ImportMemoryWin32HandleInfoKHR #-}
+{-# complete (::&) :: ExportMemoryWin32HandleInfoKHR #-}
+{-# complete (::&) :: ImportMemoryZirconHandleInfoFUCHSIA #-}
+{-# complete (::&) :: ImportMemoryFdInfoKHR #-}
+{-# complete (::&) :: Win32KeyedMutexAcquireReleaseInfoKHR #-}
+{-# complete (::&) :: ImportMemoryMetalHandleInfoEXT #-}
+{-# complete (::&) :: ExportSemaphoreCreateInfo #-}
+{-# complete (::&) :: ExportSemaphoreWin32HandleInfoKHR #-}
+{-# complete (::&) :: D3D12FenceSubmitInfoKHR #-}
+{-# complete (::&) :: ExportFenceCreateInfo #-}
+{-# complete (::&) :: ExportFenceWin32HandleInfoKHR #-}
+{-# complete (::&) :: PhysicalDeviceMultiviewFeatures #-}
+{-# complete (::&) :: PhysicalDeviceMultiviewProperties #-}
+{-# complete (::&) :: RenderPassMultiviewCreateInfo #-}
+{-# complete (::&) :: SwapchainCounterCreateInfoEXT #-}
+{-# complete (::&) :: MemoryAllocateFlagsInfo #-}
+{-# complete (::&) :: BindBufferMemoryDeviceGroupInfo #-}
+{-# complete (::&) :: BindImageMemoryDeviceGroupInfo #-}
+{-# complete (::&) :: DeviceGroupRenderPassBeginInfo #-}
+{-# complete (::&) :: DeviceGroupCommandBufferBeginInfo #-}
+{-# complete (::&) :: DeviceGroupSubmitInfo #-}
+{-# complete (::&) :: DeviceGroupBindSparseInfo #-}
+{-# complete (::&) :: ImageSwapchainCreateInfoKHR #-}
+{-# complete (::&) :: BindImageMemorySwapchainInfoKHR #-}
+{-# complete (::&) :: DeviceGroupPresentInfoKHR #-}
+{-# complete (::&) :: DeviceGroupDeviceCreateInfo #-}
+{-# complete (::&) :: DeviceGroupSwapchainCreateInfoKHR #-}
+{-# complete (::&) :: PhysicalDevicePresentIdFeaturesKHR #-}
+{-# complete (::&) :: PresentIdKHR #-}
+{-# complete (::&) :: PhysicalDevicePresentId2FeaturesKHR #-}
+{-# complete (::&) :: PresentId2KHR #-}
+{-# complete (::&) :: PhysicalDevicePresentWaitFeaturesKHR #-}
+{-# complete (::&) :: PhysicalDevicePresentWait2FeaturesKHR #-}
+{-# complete (::&) :: PhysicalDevicePresentTimingFeaturesEXT #-}
+{-# complete (::&) :: PresentTimingSurfaceCapabilitiesEXT #-}
+{-# complete (::&) :: PresentTimingsInfoEXT #-}
+{-# complete (::&) :: SwapchainCalibratedTimestampInfoEXT #-}
+{-# complete (::&) :: HdrVividDynamicMetadataHUAWEI #-}
+{-# complete (::&) :: DisplayNativeHdrSurfaceCapabilitiesAMD #-}
+{-# complete (::&) :: SwapchainDisplayNativeHdrCreateInfoAMD #-}
+{-# complete (::&) :: PresentTimesInfoGOOGLE #-}
+{-# complete (::&) :: PipelineViewportWScalingStateCreateInfoNV #-}
+{-# complete (::&) :: PipelineViewportSwizzleStateCreateInfoNV #-}
+{-# complete (::&) :: PhysicalDeviceDiscardRectanglePropertiesEXT #-}
+{-# complete (::&) :: PipelineDiscardRectangleStateCreateInfoEXT #-}
+{-# complete (::&) :: PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX #-}
+{-# complete (::&) :: RenderPassInputAttachmentAspectCreateInfo #-}
+{-# complete (::&) :: DisplayModeStereoPropertiesNV #-}
+{-# complete (::&) :: SharedPresentSurfaceCapabilitiesKHR #-}
+{-# complete (::&) :: PhysicalDevice16BitStorageFeatures #-}
+{-# complete (::&) :: PhysicalDeviceSubgroupProperties #-}
+{-# complete (::&) :: PhysicalDeviceShaderSubgroupExtendedTypesFeatures #-}
+{-# complete (::&) :: PhysicalDevicePointClippingProperties #-}
+{-# complete (::&) :: MemoryDedicatedRequirements #-}
+{-# complete (::&) :: MemoryDedicatedAllocateInfo #-}
+{-# complete (::&) :: ImageViewUsageCreateInfo #-}
+{-# complete (::&) :: ImageViewSlicedCreateInfoEXT #-}
+{-# complete (::&) :: PipelineTessellationDomainOriginStateCreateInfo #-}
+{-# complete (::&) :: SamplerYcbcrConversionInfo #-}
+{-# complete (::&) :: BindImagePlaneMemoryInfo #-}
+{-# complete (::&) :: ImagePlaneMemoryRequirementsInfo #-}
+{-# complete (::&) :: PhysicalDeviceSamplerYcbcrConversionFeatures #-}
+{-# complete (::&) :: SamplerYcbcrConversionImageFormatProperties #-}
+{-# complete (::&) :: TextureLODGatherFormatPropertiesAMD #-}
+{-# complete (::&) :: ProtectedSubmitInfo #-}
+{-# complete (::&) :: PhysicalDeviceProtectedMemoryFeatures #-}
+{-# complete (::&) :: PhysicalDeviceProtectedMemoryProperties #-}
+{-# complete (::&) :: PipelineCoverageToColorStateCreateInfoNV #-}
+{-# complete (::&) :: PhysicalDeviceSamplerFilterMinmaxProperties #-}
+{-# complete (::&) :: SampleLocationsInfoEXT #-}
+{-# complete (::&) :: RenderPassSampleLocationsBeginInfoEXT #-}
+{-# complete (::&) :: PipelineSampleLocationsStateCreateInfoEXT #-}
+{-# complete (::&) :: PhysicalDeviceSampleLocationsPropertiesEXT #-}
+{-# complete (::&) :: SamplerReductionModeCreateInfo #-}
+{-# complete (::&) :: PhysicalDeviceBlendOperationAdvancedFeaturesEXT #-}
+{-# complete (::&) :: PhysicalDeviceMultiDrawFeaturesEXT #-}
+{-# complete (::&) :: PhysicalDeviceBlendOperationAdvancedPropertiesEXT #-}
+{-# complete (::&) :: PipelineColorBlendAdvancedStateCreateInfoEXT #-}
+{-# complete (::&) :: PhysicalDeviceInlineUniformBlockFeatures #-}
+{-# complete (::&) :: PhysicalDeviceInlineUniformBlockProperties #-}
+{-# complete (::&) :: WriteDescriptorSetInlineUniformBlock #-}
+{-# complete (::&) :: DescriptorPoolInlineUniformBlockCreateInfo #-}
+{-# complete (::&) :: PipelineCoverageModulationStateCreateInfoNV #-}
+{-# complete (::&) :: ImageFormatListCreateInfo #-}
+{-# complete (::&) :: ShaderModuleValidationCacheCreateInfoEXT #-}
+{-# complete (::&) :: PhysicalDeviceMaintenance3Properties #-}
+{-# complete (::&) :: PhysicalDeviceMaintenance4Features #-}
+{-# complete (::&) :: PhysicalDeviceMaintenance4Properties #-}
+{-# complete (::&) :: PhysicalDeviceMaintenance5Features #-}
+{-# complete (::&) :: PhysicalDeviceMaintenance5Properties #-}
+{-# complete (::&) :: PhysicalDeviceMaintenance6Features #-}
+{-# complete (::&) :: PhysicalDeviceMaintenance6Properties #-}
+{-# complete (::&) :: PhysicalDeviceMaintenance7FeaturesKHR #-}
+{-# complete (::&) :: PhysicalDeviceMaintenance7PropertiesKHR #-}
+{-# complete (::&) :: PhysicalDeviceLayeredApiPropertiesListKHR #-}
+{-# complete (::&) :: PhysicalDeviceLayeredApiVulkanPropertiesKHR #-}
+{-# complete (::&) :: PhysicalDeviceMaintenance8FeaturesKHR #-}
+{-# complete (::&) :: PhysicalDeviceMaintenance9FeaturesKHR #-}
+{-# complete (::&) :: PhysicalDeviceMaintenance9PropertiesKHR #-}
+{-# complete (::&) :: PhysicalDeviceMaintenance11FeaturesKHR #-}
+{-# complete (::&) :: PhysicalDeviceMaintenance10PropertiesKHR #-}
+{-# complete (::&) :: PhysicalDeviceMaintenance10FeaturesKHR #-}
+{-# complete (::&) :: QueueFamilyOwnershipTransferPropertiesKHR #-}
+{-# complete (::&) :: QueueFamilyOptimalImageTransferGranularityPropertiesKHR #-}
+{-# complete (::&) :: PhysicalDeviceShaderDrawParametersFeatures #-}
+{-# complete (::&) :: PhysicalDeviceShaderFloat16Int8Features #-}
+{-# complete (::&) :: PhysicalDeviceFloatControlsProperties #-}
+{-# complete (::&) :: PhysicalDeviceHostQueryResetFeatures #-}
+{-# complete (::&) :: PhysicalDeviceElapsedTimerQueryFeaturesQCOM #-}
+{-# complete (::&) :: DeviceQueueGlobalPriorityCreateInfo #-}
+{-# complete (::&) :: PhysicalDeviceGlobalPriorityQueryFeatures #-}
+{-# complete (::&) :: QueueFamilyGlobalPriorityProperties #-}
+{-# complete (::&) :: DebugUtilsObjectNameInfoEXT #-}
+{-# complete (::&) :: DebugUtilsMessengerCreateInfoEXT #-}
+{-# complete (::&) :: PhysicalDeviceDeviceMemoryReportFeaturesEXT #-}
+{-# complete (::&) :: DeviceDeviceMemoryReportCreateInfoEXT #-}
+{-# complete (::&) :: ImportMemoryHostPointerInfoEXT #-}
+{-# complete (::&) :: PhysicalDeviceExternalMemoryHostPropertiesEXT #-}
+{-# complete (::&) :: PhysicalDeviceConservativeRasterizationPropertiesEXT #-}
+{-# complete (::&) :: PhysicalDeviceShaderCorePropertiesAMD #-}
+{-# complete (::&) :: PhysicalDeviceShaderCoreProperties2AMD #-}
+{-# complete (::&) :: PipelineRasterizationConservativeStateCreateInfoEXT #-}
+{-# complete (::&) :: PhysicalDeviceDescriptorIndexingFeatures #-}
+{-# complete (::&) :: PhysicalDeviceDescriptorIndexingProperties #-}
+{-# complete (::&) :: DescriptorSetLayoutBindingFlagsCreateInfo #-}
+{-# complete (::&) :: DescriptorSetVariableDescriptorCountAllocateInfo #-}
+{-# complete (::&) :: DescriptorSetVariableDescriptorCountLayoutSupport #-}
+{-# complete (::&) :: PhysicalDeviceTimelineSemaphoreFeatures #-}
+{-# complete (::&) :: PhysicalDeviceTimelineSemaphoreProperties #-}
+{-# complete (::&) :: SemaphoreTypeCreateInfo #-}
+{-# complete (::&) :: TimelineSemaphoreSubmitInfo #-}
+{-# complete (::&) :: PipelineVertexInputDivisorStateCreateInfo #-}
+{-# complete (::&) :: PhysicalDeviceVertexAttributeDivisorPropertiesEXT #-}
+{-# complete (::&) :: PhysicalDeviceVertexAttributeDivisorProperties #-}
+{-# complete (::&) :: PhysicalDevicePCIBusInfoPropertiesEXT #-}
+{-# complete (::&) :: ImportAndroidHardwareBufferInfoANDROID #-}
+{-# complete (::&) :: AndroidHardwareBufferUsageANDROID #-}
+{-# complete (::&) :: AndroidHardwareBufferFormatPropertiesANDROID #-}
+{-# complete (::&) :: CommandBufferInheritanceConditionalRenderingInfoEXT #-}
+{-# complete (::&) :: ExternalFormatANDROID #-}
+{-# complete (::&) :: PhysicalDevice8BitStorageFeatures #-}
+{-# complete (::&) :: PhysicalDeviceConditionalRenderingFeaturesEXT #-}
+{-# complete (::&) :: PhysicalDeviceVulkanMemoryModelFeatures #-}
+{-# complete (::&) :: PhysicalDeviceShaderAtomicInt64Features #-}
+{-# complete (::&) :: PhysicalDeviceShaderAtomicFloatFeaturesEXT #-}
+{-# complete (::&) :: PhysicalDeviceShaderAtomicFloat2FeaturesEXT #-}
+{-# complete (::&) :: PhysicalDeviceVertexAttributeDivisorFeatures #-}
+{-# complete (::&) :: QueueFamilyCheckpointPropertiesNV #-}
+{-# complete (::&) :: PhysicalDeviceDepthStencilResolveProperties #-}
+{-# complete (::&) :: SubpassDescriptionDepthStencilResolve #-}
+{-# complete (::&) :: ImageViewASTCDecodeModeEXT #-}
+{-# complete (::&) :: PhysicalDeviceASTCDecodeFeaturesEXT #-}
+{-# complete (::&) :: PhysicalDeviceTransformFeedbackFeaturesEXT #-}
+{-# complete (::&) :: PhysicalDeviceTransformFeedbackPropertiesEXT #-}
+{-# complete (::&) :: PipelineRasterizationStateStreamCreateInfoEXT #-}
+{-# complete (::&) :: PhysicalDeviceRepresentativeFragmentTestFeaturesNV #-}
+{-# complete (::&) :: PipelineRepresentativeFragmentTestStateCreateInfoNV #-}
+{-# complete (::&) :: PhysicalDeviceExclusiveScissorFeaturesNV #-}
+{-# complete (::&) :: PipelineViewportExclusiveScissorStateCreateInfoNV #-}
+{-# complete (::&) :: PhysicalDeviceCornerSampledImageFeaturesNV #-}
+{-# complete (::&) :: PhysicalDeviceComputeShaderDerivativesFeaturesKHR #-}
+{-# complete (::&) :: PhysicalDeviceComputeShaderDerivativesPropertiesKHR #-}
+{-# complete (::&) :: PhysicalDeviceShaderImageFootprintFeaturesNV #-}
+{-# complete (::&) :: PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV #-}
+{-# complete (::&) :: PhysicalDeviceCopyMemoryIndirectFeaturesKHR #-}
+{-# complete (::&) :: PhysicalDeviceCopyMemoryIndirectFeaturesNV #-}
+{-# complete (::&) :: PhysicalDeviceCopyMemoryIndirectPropertiesKHR #-}
+{-# complete (::&) :: PhysicalDeviceMemoryDecompressionFeaturesEXT #-}
+{-# complete (::&) :: PhysicalDeviceMemoryDecompressionPropertiesEXT #-}
+{-# complete (::&) :: PipelineViewportShadingRateImageStateCreateInfoNV #-}
+{-# complete (::&) :: PhysicalDeviceShadingRateImageFeaturesNV #-}
+{-# complete (::&) :: PhysicalDeviceShadingRateImagePropertiesNV #-}
+{-# complete (::&) :: PhysicalDeviceInvocationMaskFeaturesHUAWEI #-}
+{-# complete (::&) :: PipelineViewportCoarseSampleOrderStateCreateInfoNV #-}
+{-# complete (::&) :: PhysicalDeviceMeshShaderFeaturesNV #-}
+{-# complete (::&) :: PhysicalDeviceMeshShaderPropertiesNV #-}
+{-# complete (::&) :: PhysicalDeviceMeshShaderFeaturesEXT #-}
+{-# complete (::&) :: PhysicalDeviceMeshShaderPropertiesEXT #-}
+{-# complete (::&) :: WriteDescriptorSetAccelerationStructureKHR #-}
+{-# complete (::&) :: WriteDescriptorSetAccelerationStructureNV #-}
+{-# complete (::&) :: PhysicalDeviceAccelerationStructureFeaturesKHR #-}
+{-# complete (::&) :: PhysicalDeviceRayTracingPipelineFeaturesKHR #-}
+{-# complete (::&) :: PhysicalDeviceRayQueryFeaturesKHR #-}
+{-# complete (::&) :: PhysicalDeviceAccelerationStructurePropertiesKHR #-}
+{-# complete (::&) :: PhysicalDeviceRayTracingPipelinePropertiesKHR #-}
+{-# complete (::&) :: PhysicalDeviceRayTracingPropertiesNV #-}
+{-# complete (::&) :: PhysicalDeviceRayTracingMaintenance1FeaturesKHR #-}
+{-# complete (::&) :: DrmFormatModifierPropertiesListEXT #-}
+{-# complete (::&) :: PhysicalDeviceImageDrmFormatModifierInfoEXT #-}
+{-# complete (::&) :: ImageDrmFormatModifierListCreateInfoEXT #-}
+{-# complete (::&) :: ImageDrmFormatModifierExplicitCreateInfoEXT #-}
+{-# complete (::&) :: ImageStencilUsageCreateInfo #-}
+{-# complete (::&) :: DeviceMemoryOverallocationCreateInfoAMD #-}
+{-# complete (::&) :: PhysicalDeviceFragmentDensityMapFeaturesEXT #-}
+{-# complete (::&) :: PhysicalDeviceFragmentDensityMap2FeaturesEXT #-}
+{-# complete (::&) :: PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT #-}
+{-# complete (::&) :: PhysicalDeviceFragmentDensityMapPropertiesEXT #-}
+{-# complete (::&) :: PhysicalDeviceFragmentDensityMap2PropertiesEXT #-}
+{-# complete (::&) :: PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT #-}
+{-# complete (::&) :: RenderPassFragmentDensityMapCreateInfoEXT #-}
+{-# complete (::&) :: RenderPassFragmentDensityMapOffsetEndInfoEXT #-}
+{-# complete (::&) :: PhysicalDeviceScalarBlockLayoutFeatures #-}
+{-# complete (::&) :: SurfaceProtectedCapabilitiesKHR #-}
+{-# complete (::&) :: PhysicalDeviceUniformBufferStandardLayoutFeatures #-}
+{-# complete (::&) :: PhysicalDeviceDepthClipEnableFeaturesEXT #-}
+{-# complete (::&) :: PipelineRasterizationDepthClipStateCreateInfoEXT #-}
+{-# complete (::&) :: PhysicalDeviceMemoryBudgetPropertiesEXT #-}
+{-# complete (::&) :: PhysicalDeviceMemoryPriorityFeaturesEXT #-}
+{-# complete (::&) :: MemoryPriorityAllocateInfoEXT #-}
+{-# complete (::&) :: PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT #-}
+{-# complete (::&) :: PhysicalDeviceBufferDeviceAddressFeatures #-}
+{-# complete (::&) :: PhysicalDeviceBufferDeviceAddressFeaturesEXT #-}
+{-# complete (::&) :: BufferOpaqueCaptureAddressCreateInfo #-}
+{-# complete (::&) :: BufferDeviceAddressCreateInfoEXT #-}
+{-# complete (::&) :: PhysicalDeviceImageViewImageFormatInfoEXT #-}
+{-# complete (::&) :: FilterCubicImageViewImageFormatPropertiesEXT #-}
+{-# complete (::&) :: PhysicalDeviceImagelessFramebufferFeatures #-}
+{-# complete (::&) :: FramebufferAttachmentsCreateInfo #-}
+{-# complete (::&) :: RenderPassAttachmentBeginInfo #-}
+{-# complete (::&) :: PhysicalDeviceTextureCompressionASTCHDRFeatures #-}
+{-# complete (::&) :: PhysicalDeviceCooperativeMatrixFeaturesNV #-}
+{-# complete (::&) :: PhysicalDeviceCooperativeMatrixPropertiesNV #-}
+{-# complete (::&) :: PhysicalDeviceYcbcrImageArraysFeaturesEXT #-}
+{-# complete (::&) :: PresentFrameTokenGGP #-}
+{-# complete (::&) :: PipelineCreationFeedbackCreateInfo #-}
+{-# complete (::&) :: SurfaceFullScreenExclusiveInfoEXT #-}
+{-# complete (::&) :: SurfaceFullScreenExclusiveWin32InfoEXT #-}
+{-# complete (::&) :: SurfaceCapabilitiesFullScreenExclusiveEXT #-}
+{-# complete (::&) :: PhysicalDevicePresentBarrierFeaturesNV #-}
+{-# complete (::&) :: SurfaceCapabilitiesPresentBarrierNV #-}
+{-# complete (::&) :: SwapchainPresentBarrierCreateInfoNV #-}
+{-# complete (::&) :: PhysicalDevicePerformanceQueryFeaturesKHR #-}
+{-# complete (::&) :: PhysicalDevicePerformanceQueryPropertiesKHR #-}
+{-# complete (::&) :: QueryPoolPerformanceCreateInfoKHR #-}
+{-# complete (::&) :: PerformanceQuerySubmitInfoKHR #-}
+{-# complete (::&) :: PhysicalDeviceCoverageReductionModeFeaturesNV #-}
+{-# complete (::&) :: PipelineCoverageReductionStateCreateInfoNV #-}
+{-# complete (::&) :: PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL #-}
+{-# complete (::&) :: QueryPoolPerformanceQueryCreateInfoINTEL #-}
+{-# complete (::&) :: PhysicalDeviceShaderClockFeaturesKHR #-}
+{-# complete (::&) :: PhysicalDeviceIndexTypeUint8Features #-}
+{-# complete (::&) :: PhysicalDeviceShaderSMBuiltinsPropertiesNV #-}
+{-# complete (::&) :: PhysicalDeviceShaderSMBuiltinsFeaturesNV #-}
+{-# complete (::&) :: PhysicalDeviceFragmentShaderInterlockFeaturesEXT #-}
+{-# complete (::&) :: PhysicalDeviceSeparateDepthStencilLayoutsFeatures #-}
+{-# complete (::&) :: AttachmentReferenceStencilLayout #-}
+{-# complete (::&) :: PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT #-}
+{-# complete (::&) :: AttachmentDescriptionStencilLayout #-}
+{-# complete (::&) :: PhysicalDevicePipelineExecutablePropertiesFeaturesKHR #-}
+{-# complete (::&) :: PhysicalDeviceShaderDemoteToHelperInvocationFeatures #-}
+{-# complete (::&) :: PhysicalDeviceTexelBufferAlignmentFeaturesEXT #-}
+{-# complete (::&) :: PhysicalDeviceTexelBufferAlignmentProperties #-}
+{-# complete (::&) :: PhysicalDeviceSubgroupSizeControlFeatures #-}
+{-# complete (::&) :: PhysicalDeviceSubgroupSizeControlProperties #-}
+{-# complete (::&) :: PipelineShaderStageRequiredSubgroupSizeCreateInfo #-}
+{-# complete (::&) :: SubpassShadingPipelineCreateInfoHUAWEI #-}
+{-# complete (::&) :: PhysicalDeviceSubpassShadingPropertiesHUAWEI #-}
+{-# complete (::&) :: PhysicalDeviceClusterCullingShaderPropertiesHUAWEI #-}
+{-# complete (::&) :: MemoryOpaqueCaptureAddressAllocateInfo #-}
+{-# complete (::&) :: PhysicalDeviceLineRasterizationFeatures #-}
+{-# complete (::&) :: PhysicalDeviceLineRasterizationProperties #-}
+{-# complete (::&) :: PipelineRasterizationLineStateCreateInfo #-}
+{-# complete (::&) :: PhysicalDevicePipelineCreationCacheControlFeatures #-}
+{-# complete (::&) :: PhysicalDeviceVulkan11Features #-}
+{-# complete (::&) :: PhysicalDeviceVulkan11Properties #-}
+{-# complete (::&) :: PhysicalDeviceVulkan12Features #-}
+{-# complete (::&) :: PhysicalDeviceVulkan12Properties #-}
+{-# complete (::&) :: PhysicalDeviceVulkan13Features #-}
+{-# complete (::&) :: PhysicalDeviceVulkan13Properties #-}
+{-# complete (::&) :: PhysicalDeviceVulkan14Features #-}
+{-# complete (::&) :: PhysicalDeviceVulkan14Properties #-}
+{-# complete (::&) :: PipelineCompilerControlCreateInfoAMD #-}
+{-# complete (::&) :: PhysicalDeviceCoherentMemoryFeaturesAMD #-}
+{-# complete (::&) :: PhysicalDeviceGpaFeaturesAMD #-}
+{-# complete (::&) :: PhysicalDeviceGpaPropertiesAMD #-}
+{-# complete (::&) :: PhysicalDeviceGpaProperties2AMD #-}
+{-# complete (::&) :: SamplerCustomBorderColorCreateInfoEXT #-}
+{-# complete (::&) :: PhysicalDeviceCustomBorderColorPropertiesEXT #-}
+{-# complete (::&) :: PhysicalDeviceCustomBorderColorFeaturesEXT #-}
+{-# complete (::&) :: SamplerBorderColorComponentMappingCreateInfoEXT #-}
+{-# complete (::&) :: PhysicalDeviceBorderColorSwizzleFeaturesEXT #-}
+{-# complete (::&) :: AccelerationStructureGeometryLinearSweptSpheresDataNV #-}
+{-# complete (::&) :: AccelerationStructureGeometrySpheresDataNV #-}
+{-# complete (::&) :: PipelineLibraryCreateInfoKHR #-}
+{-# complete (::&) :: PhysicalDeviceExtendedDynamicStateFeaturesEXT #-}
+{-# complete (::&) :: PhysicalDeviceExtendedDynamicState2FeaturesEXT #-}
+{-# complete (::&) :: PhysicalDeviceExtendedDynamicState3FeaturesEXT #-}
+{-# complete (::&) :: PhysicalDeviceExtendedDynamicState3PropertiesEXT #-}
+{-# complete (::&) :: RenderPassTransformBeginInfoQCOM #-}
+{-# complete (::&) :: CopyCommandTransformInfoQCOM #-}
+{-# complete (::&) :: CommandBufferInheritanceRenderPassTransformInfoQCOM #-}
+{-# complete (::&) :: PhysicalDeviceDiagnosticsConfigFeaturesNV #-}
+{-# complete (::&) :: DeviceDiagnosticsConfigCreateInfoNV #-}
+{-# complete (::&) :: PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures #-}
+{-# complete (::&) :: PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR #-}
+{-# complete (::&) :: PhysicalDeviceRobustness2FeaturesKHR #-}
+{-# complete (::&) :: PhysicalDeviceRobustness2PropertiesKHR #-}
+{-# complete (::&) :: PhysicalDeviceImageRobustnessFeatures #-}
+{-# complete (::&) :: PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR #-}
+{-# complete (::&) :: PhysicalDevicePortabilitySubsetFeaturesKHR #-}
+{-# complete (::&) :: PhysicalDevicePortabilitySubsetPropertiesKHR #-}
+{-# complete (::&) :: PhysicalDevice4444FormatsFeaturesEXT #-}
+{-# complete (::&) :: PhysicalDeviceSubpassShadingFeaturesHUAWEI #-}
+{-# complete (::&) :: PhysicalDeviceClusterCullingShaderFeaturesHUAWEI #-}
+{-# complete (::&) :: PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI #-}
+{-# complete (::&) :: PhysicalDeviceShaderImageAtomicInt64FeaturesEXT #-}
+{-# complete (::&) :: FragmentShadingRateAttachmentInfoKHR #-}
+{-# complete (::&) :: PipelineFragmentShadingRateStateCreateInfoKHR #-}
+{-# complete (::&) :: PhysicalDeviceFragmentShadingRateFeaturesKHR #-}
+{-# complete (::&) :: PhysicalDeviceFragmentShadingRatePropertiesKHR #-}
+{-# complete (::&) :: PhysicalDeviceShaderTerminateInvocationFeatures #-}
+{-# complete (::&) :: PhysicalDeviceFragmentShadingRateEnumsFeaturesNV #-}
+{-# complete (::&) :: PhysicalDeviceFragmentShadingRateEnumsPropertiesNV #-}
+{-# complete (::&) :: PipelineFragmentShadingRateEnumStateCreateInfoNV #-}
+{-# complete (::&) :: PhysicalDeviceImage2DViewOf3DFeaturesEXT #-}
+{-# complete (::&) :: PhysicalDeviceImageSlicedViewOf3DFeaturesEXT #-}
+{-# complete (::&) :: PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT #-}
+{-# complete (::&) :: PhysicalDeviceLegacyVertexAttributesFeaturesEXT #-}
+{-# complete (::&) :: PhysicalDeviceLegacyVertexAttributesPropertiesEXT #-}
+{-# complete (::&) :: PhysicalDeviceMutableDescriptorTypeFeaturesEXT #-}
+{-# complete (::&) :: MutableDescriptorTypeCreateInfoEXT #-}
+{-# complete (::&) :: PhysicalDeviceDepthClipControlFeaturesEXT #-}
+{-# complete (::&) :: PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT #-}
+{-# complete (::&) :: PhysicalDeviceCustomResolveFeaturesEXT #-}
+{-# complete (::&) :: CustomResolveCreateInfoEXT #-}
+{-# complete (::&) :: PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT #-}
+{-# complete (::&) :: PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT #-}
+{-# complete (::&) :: GeneratedCommandsPipelineInfoEXT #-}
+{-# complete (::&) :: GeneratedCommandsShaderInfoEXT #-}
+{-# complete (::&) :: PipelineViewportDepthClipControlCreateInfoEXT #-}
+{-# complete (::&) :: PhysicalDeviceDepthClampControlFeaturesEXT #-}
+{-# complete (::&) :: PipelineViewportDepthClampControlCreateInfoEXT #-}
+{-# complete (::&) :: PhysicalDeviceVertexInputDynamicStateFeaturesEXT #-}
+{-# complete (::&) :: PhysicalDeviceExternalMemoryRDMAFeaturesNV #-}
+{-# complete (::&) :: PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR #-}
+{-# complete (::&) :: PhysicalDeviceColorWriteEnableFeaturesEXT #-}
+{-# complete (::&) :: PipelineColorWriteCreateInfoEXT #-}
+{-# complete (::&) :: MemoryBarrier2 #-}
+{-# complete (::&) :: MemoryBarrierAccessFlags3KHR #-}
+{-# complete (::&) :: QueueFamilyCheckpointProperties2NV #-}
+{-# complete (::&) :: PhysicalDeviceSynchronization2Features #-}
+{-# complete (::&) :: PhysicalDeviceUnifiedImageLayoutsFeaturesKHR #-}
+{-# complete (::&) :: PhysicalDeviceHostImageCopyFeatures #-}
+{-# complete (::&) :: PhysicalDeviceHostImageCopyProperties #-}
+{-# complete (::&) :: SubresourceHostMemcpySize #-}
+{-# complete (::&) :: HostImageCopyDevicePerformanceQuery #-}
+{-# complete (::&) :: PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT #-}
+{-# complete (::&) :: PhysicalDeviceLegacyDitheringFeaturesEXT #-}
+{-# complete (::&) :: PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT #-}
+{-# complete (::&) :: SurfaceCapabilitiesPresentId2KHR #-}
+{-# complete (::&) :: SurfaceCapabilitiesPresentWait2KHR #-}
+{-# complete (::&) :: SubpassResolvePerformanceQueryEXT #-}
+{-# complete (::&) :: MultisampledRenderToSingleSampledInfoEXT #-}
+{-# complete (::&) :: PhysicalDevicePipelineProtectedAccessFeatures #-}
+{-# complete (::&) :: PhysicalDeviceInheritedViewportScissorFeaturesNV #-}
+{-# complete (::&) :: CommandBufferInheritanceViewportScissorInfoNV #-}
+{-# complete (::&) :: PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT #-}
+{-# complete (::&) :: PhysicalDeviceProvokingVertexFeaturesEXT #-}
+{-# complete (::&) :: PhysicalDeviceProvokingVertexPropertiesEXT #-}
+{-# complete (::&) :: PipelineRasterizationProvokingVertexStateCreateInfoEXT #-}
+{-# complete (::&) :: CuModuleTexturingModeCreateInfoNVX #-}
+{-# complete (::&) :: PhysicalDeviceDescriptorBufferFeaturesEXT #-}
+{-# complete (::&) :: PhysicalDeviceDescriptorBufferPropertiesEXT #-}
+{-# complete (::&) :: PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT #-}
+{-# complete (::&) :: DescriptorBufferBindingPushDescriptorBufferHandleEXT #-}
+{-# complete (::&) :: OpaqueCaptureDescriptorDataCreateInfoEXT #-}
+{-# complete (::&) :: PhysicalDeviceShaderIntegerDotProductFeatures #-}
+{-# complete (::&) :: PhysicalDeviceShaderIntegerDotProductProperties #-}
+{-# complete (::&) :: PhysicalDeviceDrmPropertiesEXT #-}
+{-# complete (::&) :: PhysicalDeviceFragmentShaderBarycentricFeaturesKHR #-}
+{-# complete (::&) :: PhysicalDeviceFragmentShaderBarycentricPropertiesKHR #-}
+{-# complete (::&) :: PhysicalDeviceShaderFmaFeaturesKHR #-}
+{-# complete (::&) :: PhysicalDeviceRayTracingMotionBlurFeaturesNV #-}
+{-# complete (::&) :: PhysicalDeviceRayTracingValidationFeaturesNV #-}
+{-# complete (::&) :: PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV #-}
+{-# complete (::&) :: AccelerationStructureGeometryMotionTrianglesDataNV #-}
+{-# complete (::&) :: AccelerationStructureMotionInfoNV #-}
+{-# complete (::&) :: ImportMemoryBufferCollectionFUCHSIA #-}
+{-# complete (::&) :: BufferCollectionImageCreateInfoFUCHSIA #-}
+{-# complete (::&) :: BufferCollectionBufferCreateInfoFUCHSIA #-}
+{-# complete (::&) :: PhysicalDeviceRGBA10X6FormatsFeaturesEXT #-}
+{-# complete (::&) :: FormatProperties3 #-}
+{-# complete (::&) :: DrmFormatModifierPropertiesList2EXT #-}
+{-# complete (::&) :: AndroidHardwareBufferFormatProperties2ANDROID #-}
+{-# complete (::&) :: PipelineRenderingCreateInfo #-}
+{-# complete (::&) :: RenderingFragmentShadingRateAttachmentInfoKHR #-}
+{-# complete (::&) :: RenderingFragmentDensityMapAttachmentInfoEXT #-}
+{-# complete (::&) :: PhysicalDeviceDynamicRenderingFeatures #-}
+{-# complete (::&) :: CommandBufferInheritanceRenderingInfo #-}
+{-# complete (::&) :: AttachmentSampleCountInfoAMD #-}
+{-# complete (::&) :: MultiviewPerViewAttributesInfoNVX #-}
+{-# complete (::&) :: PhysicalDeviceImageViewMinLodFeaturesEXT #-}
+{-# complete (::&) :: ImageViewMinLodCreateInfoEXT #-}
+{-# complete (::&) :: PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT #-}
+{-# complete (::&) :: PhysicalDeviceLinearColorAttachmentFeaturesNV #-}
+{-# complete (::&) :: PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT #-}
+{-# complete (::&) :: PhysicalDevicePipelineBinaryFeaturesKHR #-}
+{-# complete (::&) :: DevicePipelineBinaryInternalCacheControlKHR #-}
+{-# complete (::&) :: PhysicalDevicePipelineBinaryPropertiesKHR #-}
+{-# complete (::&) :: PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT #-}
+{-# complete (::&) :: GraphicsPipelineLibraryCreateInfoEXT #-}
+{-# complete (::&) :: PhysicalDeviceDataGraphNeuralAcceleratorStatisticsFeaturesARM #-}
+{-# complete (::&) :: DataGraphPipelineNeuralStatisticsCreateInfoARM #-}
+{-# complete (::&) :: DataGraphPipelineSessionNeuralStatisticsCreateInfoARM #-}
+{-# complete (::&) :: PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE #-}
+{-# complete (::&) :: PhysicalDeviceNestedCommandBufferFeaturesEXT #-}
+{-# complete (::&) :: PhysicalDeviceNestedCommandBufferPropertiesEXT #-}
+{-# complete (::&) :: PhysicalDeviceShaderModuleIdentifierFeaturesEXT #-}
+{-# complete (::&) :: PhysicalDeviceShaderModuleIdentifierPropertiesEXT #-}
+{-# complete (::&) :: PipelineShaderStageModuleIdentifierCreateInfoEXT #-}
+{-# complete (::&) :: ImageCompressionControlEXT #-}
+{-# complete (::&) :: PhysicalDeviceImageCompressionControlFeaturesEXT #-}
+{-# complete (::&) :: ImageCompressionPropertiesEXT #-}
+{-# complete (::&) :: PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT #-}
+{-# complete (::&) :: RenderPassCreationControlEXT #-}
+{-# complete (::&) :: RenderPassCreationFeedbackCreateInfoEXT #-}
+{-# complete (::&) :: RenderPassSubpassFeedbackCreateInfoEXT #-}
+{-# complete (::&) :: PhysicalDeviceSubpassMergeFeedbackFeaturesEXT #-}
+{-# complete (::&) :: AccelerationStructureGeometryMicromapDataKHR #-}
+{-# complete (::&) :: PhysicalDeviceOpacityMicromapFeaturesKHR #-}
+{-# complete (::&) :: PhysicalDeviceOpacityMicromapFeaturesEXT #-}
+{-# complete (::&) :: PhysicalDeviceOpacityMicromapPropertiesKHR #-}
+{-# complete (::&) :: PhysicalDeviceOpacityMicromapPropertiesEXT #-}
+{-# complete (::&) :: AccelerationStructureTrianglesOpacityMicromapKHR #-}
+{-# complete (::&) :: AccelerationStructureTrianglesOpacityMicromapEXT #-}
+{-# complete (::&) :: PhysicalDeviceDisplacementMicromapFeaturesNV #-}
+{-# complete (::&) :: PhysicalDeviceDisplacementMicromapPropertiesNV #-}
+{-# complete (::&) :: AccelerationStructureTrianglesDisplacementMicromapNV #-}
+{-# complete (::&) :: PhysicalDevicePipelinePropertiesFeaturesEXT #-}
+{-# complete (::&) :: PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD #-}
+{-# complete (::&) :: ExternalMemoryAcquireUnmodifiedEXT #-}
+{-# complete (::&) :: ExportMetalObjectCreateInfoEXT #-}
+{-# complete (::&) :: ExportMetalDeviceInfoEXT #-}
+{-# complete (::&) :: ExportMetalCommandQueueInfoEXT #-}
+{-# complete (::&) :: ExportMetalBufferInfoEXT #-}
+{-# complete (::&) :: ImportMetalBufferInfoEXT #-}
+{-# complete (::&) :: ExportMetalTextureInfoEXT #-}
+{-# complete (::&) :: ImportMetalTextureInfoEXT #-}
+{-# complete (::&) :: ExportMetalIOSurfaceInfoEXT #-}
+{-# complete (::&) :: ImportMetalIOSurfaceInfoEXT #-}
+{-# complete (::&) :: ExportMetalSharedEventInfoEXT #-}
+{-# complete (::&) :: ImportMetalSharedEventInfoEXT #-}
+{-# complete (::&) :: PhysicalDeviceNonSeamlessCubeMapFeaturesEXT #-}
+{-# complete (::&) :: PhysicalDevicePipelineRobustnessFeatures #-}
+{-# complete (::&) :: PipelineRobustnessCreateInfo #-}
+{-# complete (::&) :: PhysicalDevicePipelineRobustnessProperties #-}
+{-# complete (::&) :: ImageViewSampleWeightCreateInfoQCOM #-}
+{-# complete (::&) :: PhysicalDeviceShaderMultipleWaitQueuesFeaturesQCOM #-}
+{-# complete (::&) :: PhysicalDeviceShaderMultipleWaitQueuesPropertiesQCOM #-}
+{-# complete (::&) :: PhysicalDeviceImageProcessingFeaturesQCOM #-}
+{-# complete (::&) :: PhysicalDeviceImageProcessingPropertiesQCOM #-}
+{-# complete (::&) :: PhysicalDeviceTilePropertiesFeaturesQCOM #-}
+{-# complete (::&) :: TileMemoryBindInfoQCOM #-}
+{-# complete (::&) :: PhysicalDeviceAmigoProfilingFeaturesSEC #-}
+{-# complete (::&) :: AmigoProfilingSubmitInfoSEC #-}
+{-# complete (::&) :: PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT #-}
+{-# complete (::&) :: AttachmentFeedbackLoopInfoEXT #-}
+{-# complete (::&) :: PhysicalDeviceAddressBindingReportFeaturesEXT #-}
+{-# complete (::&) :: RenderingAttachmentFlagsInfoKHR #-}
+{-# complete (::&) :: ResolveImageModeInfoKHR #-}
+{-# complete (::&) :: DeviceAddressBindingCallbackDataEXT #-}
+{-# complete (::&) :: PhysicalDeviceOpticalFlowFeaturesNV #-}
+{-# complete (::&) :: PhysicalDeviceOpticalFlowPropertiesNV #-}
+{-# complete (::&) :: OpticalFlowImageFormatInfoNV #-}
+{-# complete (::&) :: OpticalFlowSessionCreatePrivateDataInfoNV #-}
+{-# complete (::&) :: PhysicalDeviceFaultFeaturesEXT #-}
+{-# complete (::&) :: PhysicalDeviceFaultFeaturesKHR #-}
+{-# complete (::&) :: PhysicalDeviceFaultPropertiesKHR #-}
+{-# complete (::&) :: PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT #-}
+{-# complete (::&) :: DepthBiasRepresentationInfoEXT #-}
+{-# complete (::&) :: PhysicalDeviceShaderCoreBuiltinsPropertiesARM #-}
+{-# complete (::&) :: PhysicalDeviceShaderCoreBuiltinsFeaturesARM #-}
+{-# complete (::&) :: FrameBoundaryEXT #-}
+{-# complete (::&) :: PhysicalDeviceFrameBoundaryFeaturesEXT #-}
+{-# complete (::&) :: PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT #-}
+{-# complete (::&) :: PhysicalDeviceInternallySynchronizedQueuesFeaturesKHR #-}
+{-# complete (::&) :: SurfacePresentModeKHR #-}
+{-# complete (::&) :: SurfacePresentScalingCapabilitiesKHR #-}
+{-# complete (::&) :: SurfacePresentModeCompatibilityKHR #-}
+{-# complete (::&) :: PhysicalDeviceSwapchainMaintenance1FeaturesKHR #-}
+{-# complete (::&) :: SwapchainPresentFenceInfoKHR #-}
+{-# complete (::&) :: SwapchainPresentModesCreateInfoKHR #-}
+{-# complete (::&) :: SwapchainPresentModeInfoKHR #-}
+{-# complete (::&) :: SwapchainPresentScalingCreateInfoKHR #-}
+{-# complete (::&) :: PhysicalDeviceDepthBiasControlFeaturesEXT #-}
+{-# complete (::&) :: PhysicalDeviceRayTracingInvocationReorderFeaturesEXT #-}
+{-# complete (::&) :: PhysicalDeviceRayTracingInvocationReorderFeaturesNV #-}
+{-# complete (::&) :: PhysicalDeviceRayTracingInvocationReorderPropertiesEXT #-}
+{-# complete (::&) :: PhysicalDeviceRayTracingInvocationReorderPropertiesNV #-}
+{-# complete (::&) :: PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV #-}
+{-# complete (::&) :: PhysicalDeviceExtendedSparseAddressSpacePropertiesNV #-}
+{-# complete (::&) :: DirectDriverLoadingListLUNARG #-}
+{-# complete (::&) :: PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM #-}
+{-# complete (::&) :: PhysicalDeviceRayTracingPositionFetchFeaturesKHR #-}
+{-# complete (::&) :: PhysicalDeviceShaderCorePropertiesARM #-}
+{-# complete (::&) :: PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM #-}
+{-# complete (::&) :: MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM #-}
+{-# complete (::&) :: QueryLowLatencySupportNV #-}
+{-# complete (::&) :: PhysicalDeviceShaderObjectFeaturesEXT #-}
+{-# complete (::&) :: PhysicalDeviceShaderObjectPropertiesEXT #-}
+{-# complete (::&) :: PhysicalDeviceShaderTileImageFeaturesEXT #-}
+{-# complete (::&) :: PhysicalDeviceShaderTileImagePropertiesEXT #-}
+{-# complete (::&) :: ImportScreenBufferInfoQNX #-}
+{-# complete (::&) :: ScreenBufferFormatPropertiesQNX #-}
+{-# complete (::&) :: ExternalFormatQNX #-}
+{-# complete (::&) :: PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX #-}
+{-# complete (::&) :: PhysicalDeviceCooperativeMatrixFeaturesKHR #-}
+{-# complete (::&) :: PhysicalDeviceCooperativeMatrixPropertiesKHR #-}
+{-# complete (::&) :: PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM #-}
+{-# complete (::&) :: PhysicalDeviceShaderEnqueuePropertiesAMDX #-}
+{-# complete (::&) :: PhysicalDeviceShaderEnqueueFeaturesAMDX #-}
+{-# complete (::&) :: PipelineShaderStageNodeCreateInfoAMDX #-}
+{-# complete (::&) :: PhysicalDeviceAntiLagFeaturesAMD #-}
+{-# complete (::&) :: BindMemoryStatus #-}
+{-# complete (::&) :: PhysicalDeviceTileMemoryHeapFeaturesQCOM #-}
+{-# complete (::&) :: PhysicalDeviceTileMemoryHeapPropertiesQCOM #-}
+{-# complete (::&) :: TileMemorySizeInfoQCOM #-}
+{-# complete (::&) :: TileMemoryRequirementsQCOM #-}
+{-# complete (::&) :: PhysicalDeviceCubicClampFeaturesQCOM #-}
+{-# complete (::&) :: PhysicalDeviceYcbcrDegammaFeaturesQCOM #-}
+{-# complete (::&) :: SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM #-}
+{-# complete (::&) :: PhysicalDeviceCubicWeightsFeaturesQCOM #-}
+{-# complete (::&) :: SamplerCubicWeightsCreateInfoQCOM #-}
+{-# complete (::&) :: BlitImageCubicWeightsInfoQCOM #-}
+{-# complete (::&) :: PhysicalDeviceImageProcessing2FeaturesQCOM #-}
+{-# complete (::&) :: PhysicalDeviceImageProcessing2PropertiesQCOM #-}
+{-# complete (::&) :: SamplerBlockMatchWindowCreateInfoQCOM #-}
+{-# complete (::&) :: PhysicalDeviceImageProcessing3FeaturesQCOM #-}
+{-# complete (::&) :: PhysicalDeviceDescriptorPoolOverallocationFeaturesNV #-}
+{-# complete (::&) :: PhysicalDeviceLayeredDriverPropertiesMSFT #-}
+{-# complete (::&) :: PhysicalDevicePerStageDescriptorSetFeaturesNV #-}
+{-# complete (::&) :: PhysicalDeviceExternalFormatResolveFeaturesANDROID #-}
+{-# complete (::&) :: PhysicalDeviceExternalFormatResolvePropertiesANDROID #-}
+{-# complete (::&) :: AndroidHardwareBufferFormatResolvePropertiesANDROID #-}
+{-# complete (::&) :: LatencySubmissionPresentIdNV #-}
+{-# complete (::&) :: SwapchainLatencyCreateInfoNV #-}
+{-# complete (::&) :: LatencySurfaceCapabilitiesNV #-}
+{-# complete (::&) :: PhysicalDeviceCudaKernelLaunchFeaturesNV #-}
+{-# complete (::&) :: PhysicalDeviceCudaKernelLaunchPropertiesNV #-}
+{-# complete (::&) :: DeviceQueueShaderCoreControlCreateInfoARM #-}
+{-# complete (::&) :: PhysicalDeviceSchedulingControlsFeaturesARM #-}
+{-# complete (::&) :: PhysicalDeviceSchedulingControlsPropertiesARM #-}
+{-# complete (::&) :: PhysicalDeviceSchedulingControlsDispatchParametersPropertiesARM #-}
+{-# complete (::&) :: PhysicalDeviceRelaxedLineRasterizationFeaturesIMG #-}
+{-# complete (::&) :: PhysicalDeviceRenderPassStripedFeaturesARM #-}
+{-# complete (::&) :: PhysicalDeviceRenderPassStripedPropertiesARM #-}
+{-# complete (::&) :: RenderPassStripeBeginInfoARM #-}
+{-# complete (::&) :: RenderPassStripeSubmitInfoARM #-}
+{-# complete (::&) :: PhysicalDevicePipelineOpacityMicromapFeaturesARM #-}
+{-# complete (::&) :: PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR #-}
+{-# complete (::&) :: PhysicalDeviceShaderSubgroupRotateFeatures #-}
+{-# complete (::&) :: PhysicalDeviceShaderExpectAssumeFeatures #-}
+{-# complete (::&) :: PhysicalDeviceShaderFloatControls2Features #-}
+{-# complete (::&) :: PhysicalDeviceDynamicRenderingLocalReadFeatures #-}
+{-# complete (::&) :: RenderingAttachmentLocationInfo #-}
+{-# complete (::&) :: RenderingInputAttachmentIndexInfo #-}
+{-# complete (::&) :: PhysicalDeviceShaderQuadControlFeaturesKHR #-}
+{-# complete (::&) :: PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV #-}
+{-# complete (::&) :: PhysicalDeviceMapMemoryPlacedFeaturesEXT #-}
+{-# complete (::&) :: PhysicalDeviceMapMemoryPlacedPropertiesEXT #-}
+{-# complete (::&) :: MemoryMapPlacedInfoEXT #-}
+{-# complete (::&) :: PhysicalDeviceShaderBfloat16FeaturesKHR #-}
+{-# complete (::&) :: PhysicalDeviceRawAccessChainsFeaturesNV #-}
+{-# complete (::&) :: PhysicalDeviceCommandBufferInheritanceFeaturesNV #-}
+{-# complete (::&) :: PhysicalDeviceImageAlignmentControlFeaturesMESA #-}
+{-# complete (::&) :: PhysicalDeviceImageAlignmentControlPropertiesMESA #-}
+{-# complete (::&) :: ImageAlignmentControlCreateInfoMESA #-}
+{-# complete (::&) :: PhysicalDeviceShaderReplicatedCompositesFeaturesEXT #-}
+{-# complete (::&) :: PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR #-}
+{-# complete (::&) :: PhysicalDeviceCooperativeMatrix2FeaturesNV #-}
+{-# complete (::&) :: PhysicalDeviceCooperativeMatrix2PropertiesNV #-}
+{-# complete (::&) :: PhysicalDeviceHdrVividFeaturesHUAWEI #-}
+{-# complete (::&) :: PhysicalDeviceVertexAttributeRobustnessFeaturesEXT #-}
+{-# complete (::&) :: PhysicalDeviceDenseGeometryFormatFeaturesAMDX #-}
+{-# complete (::&) :: AccelerationStructureDenseGeometryFormatTrianglesDataAMDX #-}
+{-# complete (::&) :: PhysicalDeviceDepthClampZeroOneFeaturesKHR #-}
+{-# complete (::&) :: PhysicalDeviceCooperativeVectorFeaturesNV #-}
+{-# complete (::&) :: PhysicalDeviceCooperativeVectorPropertiesNV #-}
+{-# complete (::&) :: PhysicalDeviceTileShadingFeaturesQCOM #-}
+{-# complete (::&) :: PhysicalDeviceTileShadingPropertiesQCOM #-}
+{-# complete (::&) :: RenderPassTileShadingCreateInfoQCOM #-}
+{-# complete (::&) :: PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE #-}
+{-# complete (::&) :: PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE #-}
+{-# complete (::&) :: PipelineFragmentDensityMapLayeredCreateInfoVALVE #-}
+{-# complete (::&) :: SetPresentConfigNV #-}
+{-# complete (::&) :: PhysicalDevicePresentMeteringFeaturesNV #-}
+{-# complete (::&) :: ExternalComputeQueueDeviceCreateInfoNV #-}
+{-# complete (::&) :: PhysicalDeviceExternalComputeQueuePropertiesNV #-}
+{-# complete (::&) :: PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT #-}
+{-# complete (::&) :: PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE #-}
+{-# complete (::&) :: PhysicalDevicePrimitiveRestartIndexFeaturesEXT #-}
+{-# complete (::&) :: PhysicalDeviceFormatPackFeaturesARM #-}
+{-# complete (::&) :: PhysicalDeviceThrottleHintFeaturesSEC #-}
+{-# complete (::&) :: ThrottleHintSubmitInfoSEC #-}
+{-# complete (::&) :: TensorDescriptionARM #-}
+{-# complete (::&) :: WriteDescriptorSetTensorARM #-}
+{-# complete (::&) :: TensorFormatPropertiesARM #-}
+{-# complete (::&) :: PhysicalDeviceTensorPropertiesARM #-}
+{-# complete (::&) :: TensorMemoryBarrierARM #-}
+{-# complete (::&) :: TensorDependencyInfoARM #-}
+{-# complete (::&) :: PhysicalDeviceTensorFeaturesARM #-}
+{-# complete (::&) :: MemoryDedicatedAllocateInfoTensorARM #-}
+{-# complete (::&) :: PhysicalDeviceDescriptorBufferTensorPropertiesARM #-}
+{-# complete (::&) :: PhysicalDeviceDescriptorBufferTensorFeaturesARM #-}
+{-# complete (::&) :: DescriptorGetTensorInfoARM #-}
+{-# complete (::&) :: FrameBoundaryTensorsARM #-}
+{-# complete (::&) :: ExternalMemoryTensorCreateInfoARM #-}
+{-# complete (::&) :: PhysicalDeviceShaderFloat8FeaturesEXT #-}
+{-# complete (::&) :: PhysicalDeviceDataGraphFeaturesARM #-}
+{-# complete (::&) :: DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM #-}
+{-# complete (::&) :: DataGraphPipelineResourceInfoImageLayoutARM #-}
+{-# complete (::&) :: DataGraphPipelineCompilerControlCreateInfoARM #-}
+{-# complete (::&) :: DataGraphPipelineShaderModuleCreateInfoARM #-}
+{-# complete (::&) :: DataGraphPipelineIdentifierCreateInfoARM #-}
+{-# complete (::&) :: DataGraphProcessingEngineCreateInfoARM #-}
+{-# complete (::&) :: PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC #-}
+{-# complete (::&) :: DataGraphPipelineBuiltinModelCreateInfoQCOM #-}
+{-# complete (::&) :: PhysicalDeviceDataGraphModelFeaturesQCOM #-}
+{-# complete (::&) :: PhysicalDeviceShaderUntypedPointersFeaturesKHR #-}
+{-# complete (::&) :: PhysicalDeviceShader64BitIndexingFeaturesEXT #-}
+{-# complete (::&) :: PhysicalDeviceQueuePerfHintFeaturesQCOM #-}
+{-# complete (::&) :: PhysicalDeviceQueuePerfHintPropertiesQCOM #-}
+{-# complete (::&) :: PhysicalDeviceComputeOccupancyPriorityFeaturesNV #-}
+{-# complete (::&) :: PhysicalDeviceShaderLongVectorFeaturesEXT #-}
+{-# complete (::&) :: PhysicalDeviceShaderLongVectorPropertiesEXT #-}
+{-# complete (::&) :: PhysicalDeviceTextureCompressionASTC3DFeaturesEXT #-}
+{-# complete (::&) :: PhysicalDeviceShaderSubgroupPartitionedFeaturesEXT #-}
+{-# complete (::&) :: ShaderDescriptorSetAndBindingMappingInfoEXT #-}
+{-# complete (::&) :: SamplerCustomBorderColorIndexCreateInfoEXT #-}
+{-# complete (::&) :: OpaqueCaptureDataCreateInfoEXT #-}
+{-# complete (::&) :: IndirectCommandsLayoutPushDataTokenNV #-}
+{-# complete (::&) :: SubsampledImageFormatPropertiesEXT #-}
+{-# complete (::&) :: PhysicalDeviceShaderSplitBarrierFeaturesEXT #-}
+{-# complete (::&) :: PhysicalDeviceShaderSplitBarrierPropertiesEXT #-}
+{-# complete (::&) :: PhysicalDeviceDescriptorHeapFeaturesEXT #-}
+{-# complete (::&) :: PhysicalDeviceDescriptorHeapPropertiesEXT #-}
+{-# complete (::&) :: CommandBufferInheritanceDescriptorHeapInfoEXT #-}
+{-# complete (::&) :: PhysicalDeviceDescriptorHeapTensorPropertiesARM #-}
+{-# complete (::&) :: PhysicalDeviceShaderInstrumentationFeaturesARM #-}
+{-# complete (::&) :: PhysicalDeviceShaderInstrumentationPropertiesARM #-}
+{-# complete (::&) :: MemoryRangeBarriersInfoKHR #-}
+{-# complete (::&) :: PhysicalDeviceDeviceAddressCommandsFeaturesKHR #-}
+{-# complete (::&) :: PhysicalDeviceShaderConstantDataFeaturesKHR #-}
+{-# complete (::&) :: PhysicalDeviceShaderAbortFeaturesKHR #-}
+{-# complete (::&) :: PhysicalDeviceShaderAbortPropertiesKHR #-}
+{-# complete (::&) :: DeviceFaultShaderAbortMessageInfoKHR #-}
+{-# complete (::&) :: PhysicalDeviceDataGraphOpticalFlowFeaturesARM #-}
+{-# complete (::&) :: DataGraphOpticalFlowImageFormatInfoARM #-}
+{-# complete (::&) :: DataGraphPipelineSingleNodeCreateInfoARM #-}
+{-# complete (::&) :: DataGraphPipelineOpticalFlowCreateInfoARM #-}
+{-# complete (::&) :: DataGraphPipelineOpticalFlowDispatchInfoARM #-}
 
 -- | View the head and tail of a 'Chain', see '::&'
 --
diff --git a/src/Vulkan/CStruct/Extends.hs-boot b/src/Vulkan/CStruct/Extends.hs-boot
--- a/src/Vulkan/CStruct/Extends.hs-boot
+++ b/src/Vulkan/CStruct/Extends.hs-boot
@@ -35,7 +35,7 @@
 type family Extendss (p :: [Type] -> Type) (xs :: [Type]) :: Constraint where
   Extendss p '[]      = ()
   Extendss p (x : xs) = (Extends p x, Extendss p xs)
-type family Chain (xs :: [a]) = (r :: a) | r -> xs where
+type family Chain (xs :: [Type]) = (r :: Type) | r -> xs where
   Chain '[]    = ()
   Chain (x:xs) = (x, Chain xs)
 
diff --git a/src/Vulkan/Core10.hs b/src/Vulkan/Core10.hs
--- a/src/Vulkan/Core10.hs
+++ b/src/Vulkan/Core10.hs
@@ -8,6 +8,7 @@
                       , module Vulkan.Core10.CommandBuffer
                       , module Vulkan.Core10.CommandBufferBuilding
                       , module Vulkan.Core10.CommandPool
+                      , module Vulkan.Core10.ComputePipeline
                       , module Vulkan.Core10.DescriptorSet
                       , module Vulkan.Core10.Device
                       , module Vulkan.Core10.DeviceInitialization
@@ -17,6 +18,7 @@
                       , module Vulkan.Core10.Fence
                       , module Vulkan.Core10.FuncPointers
                       , module Vulkan.Core10.FundamentalTypes
+                      , module Vulkan.Core10.GraphicsPipeline
                       , module Vulkan.Core10.Handles
                       , module Vulkan.Core10.Image
                       , module Vulkan.Core10.ImageView
@@ -25,7 +27,6 @@
                       , module Vulkan.Core10.MemoryManagement
                       , module Vulkan.Core10.OtherTypes
                       , module Vulkan.Core10.Pass
-                      , module Vulkan.Core10.Pipeline
                       , module Vulkan.Core10.PipelineCache
                       , module Vulkan.Core10.PipelineLayout
                       , module Vulkan.Core10.Query
@@ -42,6 +43,7 @@
 import Vulkan.Core10.CommandBuffer
 import Vulkan.Core10.CommandBufferBuilding
 import Vulkan.Core10.CommandPool
+import Vulkan.Core10.ComputePipeline
 import Vulkan.Core10.DescriptorSet
 import Vulkan.Core10.Device
 import Vulkan.Core10.DeviceInitialization
@@ -51,6 +53,7 @@
 import Vulkan.Core10.Fence
 import Vulkan.Core10.FuncPointers
 import Vulkan.Core10.FundamentalTypes
+import Vulkan.Core10.GraphicsPipeline
 import Vulkan.Core10.Handles
 import Vulkan.Core10.Image
 import Vulkan.Core10.ImageView
@@ -59,7 +62,6 @@
 import Vulkan.Core10.MemoryManagement
 import Vulkan.Core10.OtherTypes
 import Vulkan.Core10.Pass
-import Vulkan.Core10.Pipeline
 import Vulkan.Core10.PipelineCache
 import Vulkan.Core10.PipelineLayout
 import Vulkan.Core10.Query
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
@@ -1,13 +1,9 @@
 {-# language CPP #-}
 -- No documentation found for Chapter "APIConstants"
 module Vulkan.Core10.APIConstants  ( pattern LOD_CLAMP_NONE
-                                   , LUID_SIZE_KHR
-                                   , QUEUE_FAMILY_EXTERNAL_KHR
-                                   , MAX_DEVICE_GROUP_SIZE_KHR
-                                   , MAX_DRIVER_NAME_SIZE_KHR
-                                   , MAX_DRIVER_INFO_SIZE_KHR
-                                   , SHADER_UNUSED_NV
-                                   , MAX_GLOBAL_PRIORITY_SIZE_EXT
+                                   , pattern COMPUTE_OCCUPANCY_PRIORITY_LOW_NV
+                                   , pattern COMPUTE_OCCUPANCY_PRIORITY_NORMAL_NV
+                                   , pattern COMPUTE_OCCUPANCY_PRIORITY_HIGH_NV
                                    , MAX_PHYSICAL_DEVICE_NAME_SIZE
                                    , pattern MAX_PHYSICAL_DEVICE_NAME_SIZE
                                    , UUID_SIZE
@@ -48,21 +44,34 @@
                                    , pattern MAX_DRIVER_INFO_SIZE
                                    , SHADER_UNUSED_KHR
                                    , pattern SHADER_UNUSED_KHR
-                                   , MAX_GLOBAL_PRIORITY_SIZE_KHR
-                                   , pattern MAX_GLOBAL_PRIORITY_SIZE_KHR
+                                   , MAX_GLOBAL_PRIORITY_SIZE
+                                   , pattern MAX_GLOBAL_PRIORITY_SIZE
                                    , MAX_SHADER_MODULE_IDENTIFIER_SIZE_EXT
                                    , pattern MAX_SHADER_MODULE_IDENTIFIER_SIZE_EXT
                                    , MAX_PIPELINE_BINARY_KEY_SIZE_KHR
                                    , pattern MAX_PIPELINE_BINARY_KEY_SIZE_KHR
                                    , MAX_VIDEO_AV1_REFERENCES_PER_FRAME_KHR
                                    , pattern MAX_VIDEO_AV1_REFERENCES_PER_FRAME_KHR
+                                   , MAX_VIDEO_VP9_REFERENCES_PER_FRAME_KHR
+                                   , pattern MAX_VIDEO_VP9_REFERENCES_PER_FRAME_KHR
                                    , SHADER_INDEX_UNUSED_AMDX
                                    , pattern SHADER_INDEX_UNUSED_AMDX
+                                   , PARTITIONED_ACCELERATION_STRUCTURE_PARTITION_INDEX_GLOBAL_NV
+                                   , pattern PARTITIONED_ACCELERATION_STRUCTURE_PARTITION_INDEX_GLOBAL_NV
+                                   , COMPRESSED_TRIANGLE_FORMAT_DGF1_BYTE_ALIGNMENT_AMDX
+                                   , pattern COMPRESSED_TRIANGLE_FORMAT_DGF1_BYTE_ALIGNMENT_AMDX
+                                   , COMPRESSED_TRIANGLE_FORMAT_DGF1_BYTE_STRIDE_AMDX
+                                   , pattern COMPRESSED_TRIANGLE_FORMAT_DGF1_BYTE_STRIDE_AMDX
+                                   , MAX_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_SET_NAME_SIZE_ARM
+                                   , pattern MAX_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_SET_NAME_SIZE_ARM
+                                   , DATA_GRAPH_MODEL_TOOLCHAIN_VERSION_LENGTH_QCOM
+                                   , pattern DATA_GRAPH_MODEL_TOOLCHAIN_VERSION_LENGTH_QCOM
+                                   , MAX_DATA_GRAPH_TOSA_NAME_SIZE_ARM
+                                   , pattern MAX_DATA_GRAPH_TOSA_NAME_SIZE_ARM
                                    , pattern NULL_HANDLE
                                    , IsHandle
                                    , HasObjectType(..)
                                    , Bool32(..)
-                                   , PipelineCacheHeaderVersion(..)
                                    ) where
 
 import Vulkan.Zero (Zero(..))
@@ -70,7 +79,6 @@
 import Data.Word (Word64)
 import Vulkan.Core10.Enums.ObjectType (ObjectType)
 import Vulkan.Core10.FundamentalTypes (Bool32(..))
-import Vulkan.Core10.Enums.PipelineCacheHeaderVersion (PipelineCacheHeaderVersion(..))
 -- | VK_LOD_CLAMP_NONE - Maximum LOD unclamped access sentinel
 --
 -- = See Also
@@ -80,32 +88,32 @@
 pattern LOD_CLAMP_NONE = 1000.0
 
 
--- No documentation found for TopLevel "VK_LUID_SIZE_KHR"
-type LUID_SIZE_KHR = LUID_SIZE
-
-
--- No documentation found for TopLevel "VK_QUEUE_FAMILY_EXTERNAL_KHR"
-type QUEUE_FAMILY_EXTERNAL_KHR = QUEUE_FAMILY_EXTERNAL
-
-
--- No documentation found for TopLevel "VK_MAX_DEVICE_GROUP_SIZE_KHR"
-type MAX_DEVICE_GROUP_SIZE_KHR = MAX_DEVICE_GROUP_SIZE
-
-
--- No documentation found for TopLevel "VK_MAX_DRIVER_NAME_SIZE_KHR"
-type MAX_DRIVER_NAME_SIZE_KHR = MAX_DRIVER_NAME_SIZE
-
-
--- No documentation found for TopLevel "VK_MAX_DRIVER_INFO_SIZE_KHR"
-type MAX_DRIVER_INFO_SIZE_KHR = MAX_DRIVER_INFO_SIZE
+-- | VK_COMPUTE_OCCUPANCY_PRIORITY_LOW_NV - Low occupancy priority constant
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_compute_occupancy_priority VK_NV_compute_occupancy_priority>
+pattern COMPUTE_OCCUPANCY_PRIORITY_LOW_NV :: Float
+pattern COMPUTE_OCCUPANCY_PRIORITY_LOW_NV = 0.25
 
 
--- No documentation found for TopLevel "VK_SHADER_UNUSED_NV"
-type SHADER_UNUSED_NV = SHADER_UNUSED_KHR
+-- | VK_COMPUTE_OCCUPANCY_PRIORITY_NORMAL_NV - Normal occupancy priority
+-- constant
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_compute_occupancy_priority VK_NV_compute_occupancy_priority>
+pattern COMPUTE_OCCUPANCY_PRIORITY_NORMAL_NV :: Float
+pattern COMPUTE_OCCUPANCY_PRIORITY_NORMAL_NV = 0.5
 
 
--- No documentation found for TopLevel "VK_MAX_GLOBAL_PRIORITY_SIZE_EXT"
-type MAX_GLOBAL_PRIORITY_SIZE_EXT = MAX_GLOBAL_PRIORITY_SIZE_KHR
+-- | VK_COMPUTE_OCCUPANCY_PRIORITY_HIGH_NV - High occupancy priority constant
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_compute_occupancy_priority VK_NV_compute_occupancy_priority>
+pattern COMPUTE_OCCUPANCY_PRIORITY_HIGH_NV :: Float
+pattern COMPUTE_OCCUPANCY_PRIORITY_HIGH_NV = 0.75
 
 
 type MAX_PHYSICAL_DEVICE_NAME_SIZE = 256
@@ -342,16 +350,18 @@
 pattern SHADER_UNUSED_KHR = 0xffffffff
 
 
-type MAX_GLOBAL_PRIORITY_SIZE_KHR = 16
+type MAX_GLOBAL_PRIORITY_SIZE = 16
 
--- | VK_MAX_GLOBAL_PRIORITY_SIZE_KHR - Length of an array of global queue
+-- | VK_MAX_GLOBAL_PRIORITY_SIZE - 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
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_global_priority_query VK_EXT_global_priority_query>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_global_priority VK_KHR_global_priority>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>
+pattern MAX_GLOBAL_PRIORITY_SIZE :: forall a . Integral a => a
+pattern MAX_GLOBAL_PRIORITY_SIZE = 16
 
 
 type MAX_SHADER_MODULE_IDENTIFIER_SIZE_EXT = 32
@@ -379,11 +389,29 @@
 
 type MAX_VIDEO_AV1_REFERENCES_PER_FRAME_KHR = 7
 
--- No documentation found for TopLevel "VK_MAX_VIDEO_AV1_REFERENCES_PER_FRAME_KHR"
+-- | VK_MAX_VIDEO_AV1_REFERENCES_PER_FRAME_KHR - Length of an array of
+-- supported queue priorities
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_video_decode_av1 VK_KHR_video_decode_av1>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_video_encode_av1 VK_KHR_video_encode_av1>
 pattern MAX_VIDEO_AV1_REFERENCES_PER_FRAME_KHR :: forall a . Integral a => a
 pattern MAX_VIDEO_AV1_REFERENCES_PER_FRAME_KHR = 7
 
 
+type MAX_VIDEO_VP9_REFERENCES_PER_FRAME_KHR = 3
+
+-- | VK_MAX_VIDEO_VP9_REFERENCES_PER_FRAME_KHR - Length of an array of
+-- supported queue priorities
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_video_decode_vp9 VK_KHR_video_decode_vp9>
+pattern MAX_VIDEO_VP9_REFERENCES_PER_FRAME_KHR :: forall a . Integral a => a
+pattern MAX_VIDEO_VP9_REFERENCES_PER_FRAME_KHR = 3
+
+
 type SHADER_INDEX_UNUSED_AMDX = 0xffffffff
 
 -- | VK_SHADER_INDEX_UNUSED_AMDX - Sentinel for an unused shader index
@@ -393,6 +421,78 @@
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMDX_shader_enqueue VK_AMDX_shader_enqueue>
 pattern SHADER_INDEX_UNUSED_AMDX :: Word32
 pattern SHADER_INDEX_UNUSED_AMDX = 0xffffffff
+
+
+type PARTITIONED_ACCELERATION_STRUCTURE_PARTITION_INDEX_GLOBAL_NV = 0xffffffff
+
+-- | VK_PARTITIONED_ACCELERATION_STRUCTURE_PARTITION_INDEX_GLOBAL_NV -
+-- Sentinel for global acceleration structure partitions
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_partitioned_acceleration_structure VK_NV_partitioned_acceleration_structure>
+pattern PARTITIONED_ACCELERATION_STRUCTURE_PARTITION_INDEX_GLOBAL_NV :: Word32
+pattern PARTITIONED_ACCELERATION_STRUCTURE_PARTITION_INDEX_GLOBAL_NV = 0xffffffff
+
+
+type COMPRESSED_TRIANGLE_FORMAT_DGF1_BYTE_ALIGNMENT_AMDX = 128
+
+-- | VK_COMPRESSED_TRIANGLE_FORMAT_DGF1_BYTE_ALIGNMENT_AMDX - Alignment
+-- requirement for DGF1 compressed data
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMDX_dense_geometry_format VK_AMDX_dense_geometry_format>
+pattern COMPRESSED_TRIANGLE_FORMAT_DGF1_BYTE_ALIGNMENT_AMDX :: forall a . Integral a => a
+pattern COMPRESSED_TRIANGLE_FORMAT_DGF1_BYTE_ALIGNMENT_AMDX = 128
+
+
+type COMPRESSED_TRIANGLE_FORMAT_DGF1_BYTE_STRIDE_AMDX = 128
+
+-- | VK_COMPRESSED_TRIANGLE_FORMAT_DGF1_BYTE_STRIDE_AMDX - Alignment
+-- requirement for DGF1 compressed data
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMDX_dense_geometry_format VK_AMDX_dense_geometry_format>
+pattern COMPRESSED_TRIANGLE_FORMAT_DGF1_BYTE_STRIDE_AMDX :: forall a . Integral a => a
+pattern COMPRESSED_TRIANGLE_FORMAT_DGF1_BYTE_STRIDE_AMDX = 128
+
+
+type MAX_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_SET_NAME_SIZE_ARM = 128
+
+-- | VK_MAX_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_SET_NAME_SIZE_ARM - Length
+-- of a data graph operation name string
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_data_graph VK_ARM_data_graph>
+pattern MAX_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_SET_NAME_SIZE_ARM :: forall a . Integral a => a
+pattern MAX_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_SET_NAME_SIZE_ARM = 128
+
+
+type DATA_GRAPH_MODEL_TOOLCHAIN_VERSION_LENGTH_QCOM = 3
+
+-- | VK_DATA_GRAPH_MODEL_TOOLCHAIN_VERSION_LENGTH_QCOM - Length of a data
+-- graph toolchain version string
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_data_graph_model VK_QCOM_data_graph_model>
+pattern DATA_GRAPH_MODEL_TOOLCHAIN_VERSION_LENGTH_QCOM :: forall a . Integral a => a
+pattern DATA_GRAPH_MODEL_TOOLCHAIN_VERSION_LENGTH_QCOM = 3
+
+
+type MAX_DATA_GRAPH_TOSA_NAME_SIZE_ARM = 128
+
+-- | VK_MAX_DATA_GRAPH_TOSA_NAME_SIZE_ARM - Length of a data graph TOSA
+-- profile or extension name string
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_data_graph_instruction_set_tosa VK_ARM_data_graph_instruction_set_tosa>
+pattern MAX_DATA_GRAPH_TOSA_NAME_SIZE_ARM :: forall a . Integral a => a
+pattern MAX_DATA_GRAPH_TOSA_NAME_SIZE_ARM = 128
 
 
 -- | VK_NULL_HANDLE - Reserved non-valid object handle
diff --git a/src/Vulkan/Core10/APIConstants.hs-boot b/src/Vulkan/Core10/APIConstants.hs-boot
deleted file mode 100644
--- a/src/Vulkan/Core10/APIConstants.hs-boot
+++ /dev/null
@@ -1,33 +0,0 @@
-{-# language CPP #-}
--- No documentation found for Chapter "APIConstants"
-module Vulkan.Core10.APIConstants  ( LUID_SIZE
-                                   , QUEUE_FAMILY_EXTERNAL
-                                   , MAX_DEVICE_GROUP_SIZE
-                                   , MAX_DRIVER_NAME_SIZE
-                                   , MAX_DRIVER_INFO_SIZE
-                                   , SHADER_UNUSED_KHR
-                                   , MAX_GLOBAL_PRIORITY_SIZE_KHR
-                                   ) where
-
-
-
-type LUID_SIZE = 8
-
-
-type QUEUE_FAMILY_EXTERNAL = 0xfffffffe
-
-
-type MAX_DEVICE_GROUP_SIZE = 32
-
-
-type MAX_DRIVER_NAME_SIZE = 256
-
-
-type MAX_DRIVER_INFO_SIZE = 256
-
-
-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
@@ -27,12 +27,13 @@
 --
 -- = Description
 --
--- -   @pUserData@ is a value to be interpreted by the implementation of
---     the callbacks. When any of the callbacks in 'AllocationCallbacks'
---     are called, the Vulkan implementation will pass this value as the
---     first parameter to the callback. This value /can/ vary each time an
---     allocator is passed into a command, even when the same object takes
---     an allocator in multiple commands.
+-- -   @pUserData@ is NULL or an application-defined user data pointer to
+--     be interpreted by the implementation of the callbacks. When any of
+--     the callbacks in 'AllocationCallbacks' are called, the Vulkan
+--     implementation will pass this value as the first parameter to the
+--     callback. This value /can/ vary each time an allocator is passed
+--     into a command, even when the same object takes an allocator in
+--     multiple commands.
 --
 -- -   @pfnAllocation@ is a
 --     'Vulkan.Core10.FuncPointers.PFN_vkAllocationFunction' pointer to an
@@ -82,6 +83,7 @@
 -- 'Vulkan.Core10.FuncPointers.PFN_vkReallocationFunction',
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
 -- 'Vulkan.Core10.Memory.allocateMemory',
+-- 'Vulkan.Extensions.VK_KHR_device_address_commands.createAccelerationStructure2KHR',
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.createAccelerationStructureKHR',
 -- 'Vulkan.Extensions.VK_NV_ray_tracing.createAccelerationStructureNV',
 -- 'Vulkan.Extensions.VK_KHR_android_surface.createAndroidSurfaceKHR',
@@ -89,27 +91,31 @@
 -- 'Vulkan.Extensions.VK_FUCHSIA_buffer_collection.createBufferCollectionFUCHSIA',
 -- 'Vulkan.Core10.BufferView.createBufferView',
 -- 'Vulkan.Core10.CommandPool.createCommandPool',
--- 'Vulkan.Core10.Pipeline.createComputePipelines',
+-- 'Vulkan.Core10.ComputePipeline.createComputePipelines',
 -- 'Vulkan.Extensions.VK_NVX_binary_import.createCuFunctionNVX',
 -- 'Vulkan.Extensions.VK_NVX_binary_import.createCuModuleNVX',
 -- 'Vulkan.Extensions.VK_NV_cuda_kernel_launch.createCudaFunctionNV',
 -- 'Vulkan.Extensions.VK_NV_cuda_kernel_launch.createCudaModuleNV',
+-- 'Vulkan.Extensions.VK_ARM_data_graph.createDataGraphPipelineSessionARM',
+-- 'Vulkan.Extensions.VK_ARM_data_graph.createDataGraphPipelinesARM',
 -- 'Vulkan.Extensions.VK_EXT_debug_report.createDebugReportCallbackEXT',
 -- 'Vulkan.Extensions.VK_EXT_debug_utils.createDebugUtilsMessengerEXT',
 -- 'Vulkan.Extensions.VK_KHR_deferred_host_operations.createDeferredOperationKHR',
 -- 'Vulkan.Core10.DescriptorSet.createDescriptorPool',
 -- 'Vulkan.Core10.DescriptorSet.createDescriptorSetLayout',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template.createDescriptorUpdateTemplate',
--- 'Vulkan.Extensions.VK_KHR_descriptor_update_template.createDescriptorUpdateTemplateKHR',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template.createDescriptorUpdateTemplate',
 -- 'Vulkan.Core10.Device.createDevice',
 -- 'Vulkan.Extensions.VK_EXT_directfb_surface.createDirectFBSurfaceEXT',
 -- 'Vulkan.Extensions.VK_KHR_display.createDisplayModeKHR',
 -- 'Vulkan.Extensions.VK_KHR_display.createDisplayPlaneSurfaceKHR',
 -- 'Vulkan.Core10.Event.createEvent',
 -- 'Vulkan.Extensions.VK_AMDX_shader_enqueue.createExecutionGraphPipelinesAMDX',
+-- 'Vulkan.Extensions.VK_NV_external_compute_queue.createExternalComputeQueueNV',
 -- 'Vulkan.Core10.Fence.createFence',
 -- 'Vulkan.Core10.Pass.createFramebuffer',
--- 'Vulkan.Core10.Pipeline.createGraphicsPipelines',
+-- 'Vulkan.Extensions.VK_AMD_gpa_interface.createGpaSessionAMD',
+-- 'Vulkan.Core10.GraphicsPipeline.createGraphicsPipelines',
 -- 'Vulkan.Extensions.VK_EXT_headless_surface.createHeadlessSurfaceEXT',
 -- 'Vulkan.Extensions.VK_MVK_ios_surface.createIOSSurfaceMVK',
 -- 'Vulkan.Core10.Image.createImage',
@@ -127,23 +133,28 @@
 -- '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.Core13.Promoted_From_VK_EXT_private_data.createPrivateDataSlot',
 -- 'Vulkan.Core10.Query.createQueryPool',
 -- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.createRayTracingPipelinesKHR',
 -- 'Vulkan.Extensions.VK_NV_ray_tracing.createRayTracingPipelinesNV',
 -- 'Vulkan.Core10.Pass.createRenderPass',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.createRenderPass2',
--- 'Vulkan.Extensions.VK_KHR_create_renderpass2.createRenderPass2KHR',
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.createRenderPass2',
 -- 'Vulkan.Core10.Sampler.createSampler',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.createSamplerYcbcrConversion',
--- 'Vulkan.Extensions.VK_KHR_sampler_ycbcr_conversion.createSamplerYcbcrConversionKHR',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.createSamplerYcbcrConversion',
 -- 'Vulkan.Extensions.VK_QNX_screen_surface.createScreenSurfaceQNX',
 -- 'Vulkan.Core10.QueueSemaphore.createSemaphore',
+-- 'Vulkan.Extensions.VK_ARM_shader_instrumentation.createShaderInstrumentationARM',
 -- 'Vulkan.Core10.Shader.createShaderModule',
 -- 'Vulkan.Extensions.VK_EXT_shader_object.createShadersEXT',
 -- 'Vulkan.Extensions.VK_KHR_display_swapchain.createSharedSwapchainsKHR',
 -- 'Vulkan.Extensions.VK_GGP_stream_descriptor_surface.createStreamDescriptorSurfaceGGP',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCreateSurfaceOHOS vkCreateSurfaceOHOS>,
 -- 'Vulkan.Extensions.VK_KHR_swapchain.createSwapchainKHR',
+-- 'Vulkan.Extensions.VK_ARM_tensors.createTensorARM',
+-- 'Vulkan.Extensions.VK_ARM_tensors.createTensorViewARM',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCreateUbmSurfaceSEC vkCreateUbmSurfaceSEC>,
 -- 'Vulkan.Extensions.VK_EXT_validation_cache.createValidationCacheEXT',
 -- 'Vulkan.Extensions.VK_NN_vi_surface.createViSurfaceNN',
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCreateVideoSessionKHR vkCreateVideoSessionKHR>,
@@ -162,16 +173,20 @@
 -- 'Vulkan.Extensions.VK_NVX_binary_import.destroyCuModuleNVX',
 -- 'Vulkan.Extensions.VK_NV_cuda_kernel_launch.destroyCudaFunctionNV',
 -- 'Vulkan.Extensions.VK_NV_cuda_kernel_launch.destroyCudaModuleNV',
+-- 'Vulkan.Extensions.VK_ARM_data_graph.destroyDataGraphPipelineSessionARM',
 -- 'Vulkan.Extensions.VK_EXT_debug_report.destroyDebugReportCallbackEXT',
 -- 'Vulkan.Extensions.VK_EXT_debug_utils.destroyDebugUtilsMessengerEXT',
 -- 'Vulkan.Extensions.VK_KHR_deferred_host_operations.destroyDeferredOperationKHR',
 -- 'Vulkan.Core10.DescriptorSet.destroyDescriptorPool',
 -- 'Vulkan.Core10.DescriptorSet.destroyDescriptorSetLayout',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template.destroyDescriptorUpdateTemplate',
--- 'Vulkan.Extensions.VK_KHR_descriptor_update_template.destroyDescriptorUpdateTemplateKHR',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template.destroyDescriptorUpdateTemplate',
 -- 'Vulkan.Core10.Device.destroyDevice',
--- 'Vulkan.Core10.Event.destroyEvent', 'Vulkan.Core10.Fence.destroyFence',
+-- 'Vulkan.Core10.Event.destroyEvent',
+-- 'Vulkan.Extensions.VK_NV_external_compute_queue.destroyExternalComputeQueueNV',
+-- 'Vulkan.Core10.Fence.destroyFence',
 -- 'Vulkan.Core10.Pass.destroyFramebuffer',
+-- 'Vulkan.Extensions.VK_AMD_gpa_interface.destroyGpaSessionAMD',
 -- 'Vulkan.Core10.Image.destroyImage',
 -- 'Vulkan.Core10.ImageView.destroyImageView',
 -- 'Vulkan.Extensions.VK_EXT_device_generated_commands.destroyIndirectCommandsLayoutEXT',
@@ -180,22 +195,25 @@
 -- 'Vulkan.Core10.DeviceInitialization.destroyInstance',
 -- 'Vulkan.Extensions.VK_EXT_opacity_micromap.destroyMicromapEXT',
 -- 'Vulkan.Extensions.VK_NV_optical_flow.destroyOpticalFlowSessionNV',
--- 'Vulkan.Core10.Pipeline.destroyPipeline',
+-- 'Vulkan.Core10.ComputePipeline.destroyPipeline',
 -- 'Vulkan.Extensions.VK_KHR_pipeline_binary.destroyPipelineBinaryKHR',
 -- '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.Core13.Promoted_From_VK_EXT_private_data.destroyPrivateDataSlot',
 -- 'Vulkan.Core10.Query.destroyQueryPool',
 -- 'Vulkan.Core10.Pass.destroyRenderPass',
 -- 'Vulkan.Core10.Sampler.destroySampler',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.destroySamplerYcbcrConversion',
--- 'Vulkan.Extensions.VK_KHR_sampler_ycbcr_conversion.destroySamplerYcbcrConversionKHR',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.destroySamplerYcbcrConversion',
 -- 'Vulkan.Core10.QueueSemaphore.destroySemaphore',
 -- 'Vulkan.Extensions.VK_EXT_shader_object.destroyShaderEXT',
+-- 'Vulkan.Extensions.VK_ARM_shader_instrumentation.destroyShaderInstrumentationARM',
 -- 'Vulkan.Core10.Shader.destroyShaderModule',
 -- 'Vulkan.Extensions.VK_KHR_surface.destroySurfaceKHR',
 -- 'Vulkan.Extensions.VK_KHR_swapchain.destroySwapchainKHR',
+-- 'Vulkan.Extensions.VK_ARM_tensors.destroyTensorARM',
+-- 'Vulkan.Extensions.VK_ARM_tensors.destroyTensorViewARM',
 -- 'Vulkan.Extensions.VK_EXT_validation_cache.destroyValidationCacheEXT',
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkDestroyVideoSessionKHR vkDestroyVideoSessionKHR>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkDestroyVideoSessionParametersKHR vkDestroyVideoSessionParametersKHR>,
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
@@ -61,7 +61,7 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_buffer_device_address (BufferDeviceAddressCreateInfoEXT)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address (BufferOpaqueCaptureAddressCreateInfo)
 import Vulkan.Core10.Enums.BufferUsageFlagBits (BufferUsageFlags)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance5 (BufferUsageFlags2CreateInfoKHR)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_maintenance5 (BufferUsageFlags2CreateInfo)
 import Vulkan.CStruct.Extends (Chain)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_dedicated_allocation (DedicatedAllocationBufferCreateInfoNV)
 import Vulkan.Core10.Handles (Device)
@@ -103,11 +103,33 @@
 
 -- | vkCreateBuffer - Create a new buffer object
 --
+-- = Description
+--
+-- Implementations /may/ fail to create a buffer if the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-effective-buffer-usage effective usage>
+-- includes the
+-- 'Vulkan.Core14.Enums.BufferUsageFlags2.BUFFER_USAGE_2_DESCRIPTOR_HEAP_BIT_EXT'
+-- flag, and @size@ is greater than the maximum of
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxResourceHeapSize maxResourceHeapSize>
+-- and
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxSamplerHeapSize maxSamplerHeapSize>.
+-- If this happens, 'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+-- will be returned.
+--
+-- This is an issue identified with
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_heap VK_EXT_descriptor_heap>,
+-- which we plan to tighten up for the KHR version. Applications using
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_heap VK_EXT_descriptor_heap>
+-- may wish to avoid suballocating heaps from the same buffer, instead
+-- creating one buffer per heap, to avoid situations where this causes
+-- issues.
+--
 -- == Valid Usage
 --
 -- -   #VUID-vkCreateBuffer-device-09664# @device@ /must/ support at least
---     one queue family with one of the @VK_QUEUE_VIDEO_ENCODE_BIT_KHR@,
---     @VK_QUEUE_VIDEO_DECODE_BIT_KHR@,
+--     one queue family with one of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits VK_QUEUE_VIDEO_ENCODE_BIT_KHR>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits VK_QUEUE_VIDEO_DECODE_BIT_KHR>,
 --     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_SPARSE_BINDING_BIT',
 --     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_TRANSFER_BIT',
 --     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', or
@@ -117,7 +139,7 @@
 --     @pCreateInfo@ includes
 --     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_SPARSE_BINDING_BIT',
 --     and the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedSparseAddressSpace extendedSparseAddressSpace>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-extendedSparseAddressSpace extendedSparseAddressSpace>
 --     feature is not enabled, creating this 'Vulkan.Core10.Handles.Buffer'
 --     /must/ not cause the total required sparse memory for all currently
 --     valid sparse resources on the device to exceed
@@ -127,7 +149,7 @@
 --     @pCreateInfo@ includes
 --     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_SPARSE_BINDING_BIT',
 --     the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedSparseAddressSpace extendedSparseAddressSpace>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-extendedSparseAddressSpace extendedSparseAddressSpace>
 --     feature is enabled, and the @usage@ member of @pCreateInfo@ contains
 --     bits not in
 --     'Vulkan.Extensions.VK_NV_extended_sparse_address_space.PhysicalDeviceExtendedSparseAddressSpacePropertiesNV'::@extendedSparseBufferUsageFlags@,
@@ -146,7 +168,7 @@
 --     @pCreateInfo@ includes
 --     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_SPARSE_BINDING_BIT'
 --     and the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedSparseAddressSpace extendedSparseAddressSpace>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-extendedSparseAddressSpace extendedSparseAddressSpace>
 --     feature is enabled, creating this 'Vulkan.Core10.Handles.Buffer'
 --     /must/ not cause the total required sparse memory for all currently
 --     valid sparse resources on the device to exceed
@@ -176,6 +198,9 @@
 -- -   #VUID-vkCreateBuffer-pBuffer-parameter# @pBuffer@ /must/ be a valid
 --     pointer to a 'Vulkan.Core10.Handles.Buffer' handle
 --
+-- -   #VUID-vkCreateBuffer-device-queuecount# The device /must/ have been
+--     created with at least @1@ queue
+--
 -- == Return Codes
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
@@ -184,12 +209,16 @@
 --
 -- [<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.Extensions.VK_KHR_buffer_device_address.ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR'
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
 --
---     -   'Vulkan.Extensions.VK_KHR_buffer_device_address.ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -204,7 +233,7 @@
                 -- parameters affecting creation of the buffer.
                 (BufferCreateInfo a)
              -> -- | @pAllocator@ controls host memory allocation as described in the
-                -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
                 -- chapter.
                 ("allocator" ::: Maybe AllocationCallbacks)
              -> io (Buffer)
@@ -297,7 +326,7 @@
               -> -- | @buffer@ is the buffer to destroy.
                  Buffer
               -> -- | @pAllocator@ controls host memory allocation as described in the
-                 -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                 -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
                  -- chapter.
                  ("allocator" ::: Maybe AllocationCallbacks)
               -> io ()
@@ -321,23 +350,25 @@
 --
 -- = Description
 --
--- If the @pNext@ chain includes a
--- 'Vulkan.Extensions.VK_KHR_maintenance5.BufferUsageFlags2CreateInfoKHR'
+-- @usage@ defines the effective usage flags for the buffer. If the @pNext@
+-- chain includes a
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.BufferUsageFlags2CreateInfo'
 -- structure,
--- 'Vulkan.Extensions.VK_KHR_maintenance5.BufferUsageFlags2CreateInfoKHR'::@usage@
--- from that structure is used instead of @usage@ from this structure.
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.BufferUsageFlags2CreateInfo'::@usage@
+-- from that structure is used as the effective usage instead of @usage@
+-- from this structure.
 --
 -- == Valid Usage
 --
 -- -   #VUID-VkBufferCreateInfo-None-09499# If the @pNext@ chain does not
 --     include a
---     'Vulkan.Extensions.VK_KHR_maintenance5.BufferUsageFlags2CreateInfoKHR'
+--     'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.BufferUsageFlags2CreateInfo'
 --     structure, @usage@ /must/ be a valid combination of
 --     'Vulkan.Core10.Enums.BufferUsageFlagBits.BufferUsageFlagBits' values
 --
 -- -   #VUID-VkBufferCreateInfo-None-09500# If the @pNext@ chain does not
 --     include a
---     'Vulkan.Extensions.VK_KHR_maintenance5.BufferUsageFlags2CreateInfoKHR'
+--     'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.BufferUsageFlags2CreateInfo'
 --     structure, @usage@ /must/ not be 0
 --
 -- -   #VUID-VkBufferCreateInfo-size-00912# @size@ /must/ be greater than
@@ -348,8 +379,16 @@
 --     @pQueueFamilyIndices@ /must/ be a valid pointer to an array of
 --     @queueFamilyIndexCount@ @uint32_t@ values
 --
--- -   #VUID-VkBufferCreateInfo-sharingMode-00914# If @sharingMode@ is
---     'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_CONCURRENT',
+-- -   #VUID-VkBufferCreateInfo-maintenance11-13353# If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance11 maintenance11>
+--     feature is enabled and @sharingMode@ is
+--     'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_CONCURRENT', then
+--     @queueFamilyIndexCount@ /must/ be greater than @0@
+--
+-- -   #VUID-VkBufferCreateInfo-sharingMode-00914# If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance11 maintenance11>
+--     feature is not enabled and @sharingMode@ is
+--     'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_CONCURRENT', then
 --     @queueFamilyIndexCount@ /must/ be greater than @1@
 --
 -- -   #VUID-VkBufferCreateInfo-sharingMode-01419# If @sharingMode@ is
@@ -362,17 +401,17 @@
 --     for the @physicalDevice@ that was used to create @device@
 --
 -- -   #VUID-VkBufferCreateInfo-flags-00915# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-sparseBinding sparseBinding>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-sparseBinding sparseBinding>
 --     feature is not enabled, @flags@ /must/ not contain
 --     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_SPARSE_BINDING_BIT'
 --
 -- -   #VUID-VkBufferCreateInfo-flags-00916# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-sparseResidencyBuffer sparseResidencyBuffer>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-sparseResidencyBuffer sparseResidencyBuffer>
 --     feature is not enabled, @flags@ /must/ not contain
 --     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_SPARSE_RESIDENCY_BIT'
 --
 -- -   #VUID-VkBufferCreateInfo-flags-00917# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-sparseResidencyAliased sparseResidencyAliased>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-sparseResidencyAliased sparseResidencyAliased>
 --     feature is not enabled, @flags@ /must/ not contain
 --     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_SPARSE_ALIASED_BIT'
 --
@@ -396,7 +435,7 @@
 --     'Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryBufferCreateInfo'::@handleTypes@
 --
 -- -   #VUID-VkBufferCreateInfo-flags-01887# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-protectedMemory protectedMemory>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-protectedMemory protectedMemory>
 --     feature is not enabled, @flags@ /must/ not contain
 --     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT'
 --
@@ -433,14 +472,18 @@
 -- -   #VUID-VkBufferCreateInfo-flags-03338# If @flags@ includes
 --     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT',
 --     the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-bufferDeviceAddressCaptureReplayEXT bufferDeviceAddressCaptureReplay>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-bufferDeviceAddressCaptureReplayEXT ::bufferDeviceAddressCaptureReplay>
+--     feature or the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-bufferDeviceAddressCaptureReplay bufferDeviceAddressCaptureReplay>
 --     feature /must/ be enabled
 --
 -- -   #VUID-VkBufferCreateInfo-usage-04813# If @usage@ includes
---     @VK_BUFFER_USAGE_VIDEO_DECODE_SRC_BIT_KHR@ or
---     @VK_BUFFER_USAGE_VIDEO_DECODE_DST_BIT_KHR@, and @flags@ does not
---     include @VK_BUFFER_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR@, then
---     the @pNext@ chain /must/ include a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkBufferUsageFlagBits VK_BUFFER_USAGE_VIDEO_DECODE_SRC_BIT_KHR>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkBufferUsageFlagBits VK_BUFFER_USAGE_VIDEO_DECODE_DST_BIT_KHR>,
+--     and @flags@ does not include
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkBufferCreateFlagBits VK_BUFFER_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR>,
+--     then the @pNext@ chain /must/ include a
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoProfileListInfoKHR VkVideoProfileListInfoKHR>
 --     structure with @profileCount@ greater than @0@ and @pProfiles@
 --     including at least one
@@ -449,10 +492,12 @@
 --     operation
 --
 -- -   #VUID-VkBufferCreateInfo-usage-04814# If @usage@ includes
---     @VK_BUFFER_USAGE_VIDEO_ENCODE_SRC_BIT_KHR@ or
---     @VK_BUFFER_USAGE_VIDEO_ENCODE_DST_BIT_KHR@, and @flags@ does not
---     include @VK_BUFFER_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR@, then
---     the @pNext@ chain /must/ include a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkBufferUsageFlagBits VK_BUFFER_USAGE_VIDEO_ENCODE_SRC_BIT_KHR>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkBufferUsageFlagBits VK_BUFFER_USAGE_VIDEO_ENCODE_DST_BIT_KHR>,
+--     and @flags@ does not include
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkBufferCreateFlagBits VK_BUFFER_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR>,
+--     then the @pNext@ chain /must/ include a
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoProfileListInfoKHR VkVideoProfileListInfoKHR>
 --     structure with @profileCount@ greater than @0@ and @pProfiles@
 --     including at least one
@@ -461,19 +506,38 @@
 --     operation
 --
 -- -   #VUID-VkBufferCreateInfo-flags-08325# If @flags@ includes
---     @VK_BUFFER_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR@, then
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-videoMaintenance1 videoMaintenance1>
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkBufferCreateFlagBits VK_BUFFER_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR>,
+--     then
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-videoMaintenance1 videoMaintenance1>
 --     /must/ be enabled
 --
+-- -   #VUID-VkBufferCreateInfo-pNext-10783# If the @pNext@ chain includes
+--     a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoProfileListInfoKHR VkVideoProfileListInfoKHR>
+--     structure and for any element of its @pProfiles@ member
+--     @videoCodecOperation@ is
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoCodecOperationFlagBitsKHR VK_VIDEO_CODEC_OPERATION_DECODE_VP9_BIT_KHR>,
+--     then the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-videoDecodeVP9 videoDecodeVP9>
+--     feature /must/ be enabled
+--
 -- -   #VUID-VkBufferCreateInfo-pNext-10249# If the @pNext@ chain includes
 --     a
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoProfileListInfoKHR VkVideoProfileListInfoKHR>
 --     structure and for any element of its @pProfiles@ member
 --     @videoCodecOperation@ is
---     @VK_VIDEO_CODEC_OPERATION_ENCODE_AV1_BIT_KHR@, then the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-videoEncodeAV1 videoEncodeAV1>
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoCodecOperationFlagBitsKHR VK_VIDEO_CODEC_OPERATION_ENCODE_AV1_BIT_KHR>,
+--     then the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-videoEncodeAV1 videoEncodeAV1>
 --     feature /must/ be enabled
 --
+-- -   #VUID-VkBufferCreateInfo-pNext-10919# If the @pNext@ chain includes
+--     a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeProfileRgbConversionInfoVALVE VkVideoEncodeProfileRgbConversionInfoVALVE>
+--     structure, then the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-videoEncodeRgbConversion videoEncodeRgbConversion>
+--     feature /must/ be enabled
+--
 -- -   #VUID-VkBufferCreateInfo-size-06409# @size@ /must/ be less than or
 --     equal to
 --     'Vulkan.Core13.Promoted_From_VK_KHR_maintenance4.PhysicalDeviceMaintenance4Properties'::@maxBufferSize@
@@ -499,7 +563,7 @@
 -- -   #VUID-VkBufferCreateInfo-flags-08099# If @flags@ includes
 --     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT',
 --     the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-descriptorBufferCaptureReplay descriptorBufferCaptureReplay>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-descriptorBufferCaptureReplay descriptorBufferCaptureReplay>
 --     feature /must/ be enabled
 --
 -- -   #VUID-VkBufferCreateInfo-pNext-08100# If the @pNext@ chain includes
@@ -511,12 +575,12 @@
 -- -   #VUID-VkBufferCreateInfo-usage-08101# If @usage@ includes
 --     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT',
 --     the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-descriptorBufferPushDescriptors descriptorBufferPushDescriptors>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-descriptorBufferPushDescriptors descriptorBufferPushDescriptors>
 --     feature /must/ be enabled
 --
 -- -   #VUID-VkBufferCreateInfo-usage-08102# If @usage@ includes
 --     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT'
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-bufferlessPushDescriptors ::bufferlessPushDescriptors>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-bufferlessPushDescriptors ::bufferlessPushDescriptors>
 --     /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
 --
 -- -   #VUID-VkBufferCreateInfo-usage-08103# If @usage@ includes
@@ -526,32 +590,99 @@
 --     or
 --     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT'
 --
+-- -   #VUID-VkBufferCreateInfo-tileMemoryHeap-10762# If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-tileMemoryHeap tileMemoryHeap>
+--     feature is not enabled, @usage@ /must/ not include
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TILE_MEMORY_BIT_QCOM'
+--
+-- -   #VUID-VkBufferCreateInfo-usage-10763# If @usage@ includes
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TILE_MEMORY_BIT_QCOM',
+--     then @flags@ /must/ not contain any of the following bits
+--
+--     -   'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_SPARSE_BINDING_BIT'
+--
+--     -   'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_SPARSE_RESIDENCY_BIT'
+--
+--     -   'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_SPARSE_ALIASED_BIT'
+--
+--     -   'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT'
+--
+--     -   'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT'
+--
+--     -   'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT'
+--
+--     -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkBufferCreateFlagBits VK_BUFFER_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR>
+--
+-- -   #VUID-VkBufferCreateInfo-usage-10764# If @usage@ includes
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TILE_MEMORY_BIT_QCOM',
+--     then only the following @usages@ may be set:
+--
+--     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT'
+--
+--     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT'
+--
+--     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_BUFFER_BIT'
+--
+--     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_STORAGE_BUFFER_BIT'
+--
+--     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT'
+--
+--     -   and if
+--         'Vulkan.Extensions.VK_QCOM_tile_memory_heap.PhysicalDeviceTileMemoryHeapPropertiesQCOM'::@tileBufferTransfers@
+--         is 'Vulkan.Core10.FundamentalTypes.TRUE' then additionally
+--         'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_SRC_BIT'
+--         or
+--         'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_DST_BIT'
+--
 -- -   #VUID-VkBufferCreateInfo-flags-09641# If @flags@ includes
 --     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT',
---     then @usage@ /must/ not contain any of the following bits
+--     then the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-effective-buffer-usage effective usage>
+--     /must/ not contain bits other than
 --
---     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT'
+--     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_SRC_BIT'
 --
---     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT'
+--     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_DST_BIT'
 --
---     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT'
+--     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT'
 --
---     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR'
+--     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT'
 --
---     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR'
+--     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_BUFFER_BIT'
 --
---     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR'
+--     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_STORAGE_BUFFER_BIT'
 --
---     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT'
+--     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT'
 --
---     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT'
+--     -   'Vulkan.Core14.Enums.BufferUsageFlags2.BUFFER_USAGE_2_VIDEO_DECODE_SRC_BIT_KHR'
 --
---     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT'
+--     -   'Vulkan.Core14.Enums.BufferUsageFlags2.BUFFER_USAGE_2_VIDEO_ENCODE_DST_BIT_KHR'
 --
---     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXT'
+--     -   'Vulkan.Core14.Enums.BufferUsageFlags2.BUFFER_USAGE_2_DESCRIPTOR_HEAP_BIT_EXT'
 --
---     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_MICROMAP_STORAGE_BIT_EXT'
+-- -   #VUID-VkBufferCreateInfo-flags-11277# If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-protectedDescriptorHeaps protectedDescriptorHeaps>
+--     property is not supported and the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-effective-buffer-usage effective usage>
+--     includes the
+--     'Vulkan.Core14.Enums.BufferUsageFlags2.BUFFER_USAGE_2_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag, @flags@ /must/ not include the
+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT'
+--     flag
 --
+-- -   #VUID-VkBufferCreateInfo-flags-11279# If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-sparseDescriptorHeaps sparseDescriptorHeaps>
+--     property is not supported and the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-effective-buffer-usage effective usage>
+--     includes the
+--     'Vulkan.Core14.Enums.BufferUsageFlags2.BUFFER_USAGE_2_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag, @flags@ /must/ not include any of the
+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_SPARSE_BINDING_BIT',
+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_SPARSE_RESIDENCY_BIT',
+--     or
+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_SPARSE_ALIASED_BIT'
+--     flags
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-VkBufferCreateInfo-sType-sType# @sType@ /must/ be
@@ -563,7 +694,7 @@
 --     'Vulkan.Extensions.VK_FUCHSIA_buffer_collection.BufferCollectionBufferCreateInfoFUCHSIA',
 --     'Vulkan.Extensions.VK_EXT_buffer_device_address.BufferDeviceAddressCreateInfoEXT',
 --     'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.BufferOpaqueCaptureAddressCreateInfo',
---     'Vulkan.Extensions.VK_KHR_maintenance5.BufferUsageFlags2CreateInfoKHR',
+--     'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.BufferUsageFlags2CreateInfo',
 --     'Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationBufferCreateInfoNV',
 --     'Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryBufferCreateInfo',
 --     'Vulkan.Extensions.VK_EXT_descriptor_buffer.OpaqueCaptureDescriptorDataCreateInfoEXT',
@@ -571,7 +702,7 @@
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoProfileListInfoKHR VkVideoProfileListInfoKHR>
 --
 -- -   #VUID-VkBufferCreateInfo-sType-unique# The @sType@ value of each
---     struct in the @pNext@ chain /must/ be unique
+--     structure in the @pNext@ chain /must/ be unique
 --
 -- -   #VUID-VkBufferCreateInfo-flags-parameter# @flags@ /must/ be a valid
 --     combination of
@@ -631,7 +762,7 @@
     | Just Refl <- eqT @e @BufferOpaqueCaptureAddressCreateInfo = Just f
     | Just Refl <- eqT @e @ExternalMemoryBufferCreateInfo = Just f
     | Just Refl <- eqT @e @DedicatedAllocationBufferCreateInfoNV = Just f
-    | Just Refl <- eqT @e @BufferUsageFlags2CreateInfoKHR = Just f
+    | Just Refl <- eqT @e @BufferUsageFlags2CreateInfo = Just f
     | otherwise = Nothing
 
 instance ( Extendss BufferCreateInfo es
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
@@ -45,7 +45,7 @@
 import Vulkan.NamedType ((:::))
 import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)
 import Vulkan.Core10.Handles (Buffer)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance5 (BufferUsageFlags2CreateInfoKHR)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_maintenance5 (BufferUsageFlags2CreateInfo)
 import Vulkan.Core10.Handles (BufferView)
 import Vulkan.Core10.Handles (BufferView(..))
 import Vulkan.Core10.Enums.BufferViewCreateFlags (BufferViewCreateFlags)
@@ -106,6 +106,9 @@
 -- -   #VUID-vkCreateBufferView-pView-parameter# @pView@ /must/ be a valid
 --     pointer to a 'Vulkan.Core10.Handles.BufferView' handle
 --
+-- -   #VUID-vkCreateBufferView-device-queuecount# The device /must/ have
+--     been created with at least @1@ queue
+--
 -- == Return Codes
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
@@ -114,10 +117,14 @@
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -132,7 +139,7 @@
                     -- containing parameters to be used to create the buffer view.
                     (BufferViewCreateInfo a)
                  -> -- | @pAllocator@ controls host memory allocation as described in the
-                    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
                     -- chapter.
                     ("allocator" ::: Maybe AllocationCallbacks)
                  -> io (BufferView)
@@ -226,7 +233,7 @@
                   -> -- | @bufferView@ is the buffer view to destroy.
                      BufferView
                   -> -- | @pAllocator@ controls host memory allocation as described in the
-                     -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                     -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
                      -- chapter.
                      ("allocator" ::: Maybe AllocationCallbacks)
                   -> io ()
@@ -253,7 +260,7 @@
 -- The buffer view has a /buffer view usage/ identifying which descriptor
 -- types can be created from it. This usage /can/ be defined by including
 -- the
--- 'Vulkan.Extensions.VK_KHR_maintenance5.BufferUsageFlags2CreateInfoKHR'
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.BufferUsageFlags2CreateInfo'
 -- structure in the @pNext@ chain, and specifying the @usage@ value there.
 -- If this structure is not included, it is equal to the
 -- 'Vulkan.Core10.Buffer.BufferCreateInfo'::@usage@ value used to create
@@ -277,7 +284,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#formats-compatibility Compatible Formats>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-compatibility Compatible Formats>
 --     table for @format@, /must/ be less than or equal to
 --     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxTexelBufferElements@
 --
@@ -290,31 +297,32 @@
 --     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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#formats-compatibility Compatible Formats>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-compatibility Compatible Formats>
 --     table for @format@, /must/ be less than or equal to
 --     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxTexelBufferElements@
 --
 -- -   #VUID-VkBufferViewCreateInfo-buffer-00932# @buffer@ /must/ have been
---     created with a @usage@ value containing at least one of
+--     created with at least one of the
 --     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT'
 --     or
 --     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT'
+--     usage flags set
 --
 -- -   #VUID-VkBufferViewCreateInfo-format-08778# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-buffer-views-usage buffer view usage>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-buffer-views-usage buffer view usage>
 --     contains
 --     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT',
 --     then
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-buffer-view-format-features format features>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-buffer-view-format-features format features>
 --     of @format@ /must/ contain
 --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT'
 --
 -- -   #VUID-VkBufferViewCreateInfo-format-08779# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-buffer-views-usage buffer view usage>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-buffer-views-usage buffer view usage>
 --     contains
 --     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT',
 --     then
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-buffer-view-format-features format features>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-buffer-view-format-features format features>
 --     of @format@ /must/ contain
 --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT'
 --
@@ -322,38 +330,23 @@
 --     then it /must/ be bound completely and contiguously to a single
 --     'Vulkan.Core10.Handles.DeviceMemory' object
 --
--- -   #VUID-VkBufferViewCreateInfo-offset-02749# If the
---     <https://registry.khronos.org/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://registry.khronos.org/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.Core13.Promoted_From_VK_EXT_texel_buffer_alignment.PhysicalDeviceTexelBufferAlignmentProperties'::@storageTexelBufferOffsetAlignmentBytes@
---     or, if
---     '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-02750# If @buffer@ was created
+--     with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT'
+--     usage flag set, @offset@ /must/ be a multiple of the effective
+--     alignment requirement of @format@ for
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'
+--     as defined by
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-minTexelBufferOffsetAlignment minTexelBufferOffsetAlignment>
 --
--- -   #VUID-VkBufferViewCreateInfo-buffer-02751# If the
---     <https://registry.khronos.org/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.Core13.Promoted_From_VK_EXT_texel_buffer_alignment.PhysicalDeviceTexelBufferAlignmentProperties'::@uniformTexelBufferOffsetAlignmentBytes@
---     or, if
---     '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
---     instead
+-- -   #VUID-VkBufferViewCreateInfo-buffer-02751# If @buffer@ was created
+--     with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT'
+--     usage flag set, @offset@ /must/ be a multiple of the effective
+--     alignment requirement of @format@ for
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER'
+--     as defined by
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-minTexelBufferOffsetAlignment minTexelBufferOffsetAlignment>
 --
 -- -   #VUID-VkBufferViewCreateInfo-pNext-06782# If the @pNext@ chain
 --     includes a
@@ -363,21 +356,30 @@
 --
 -- -   #VUID-VkBufferViewCreateInfo-pNext-08780# If the @pNext@ chain
 --     includes a
---     'Vulkan.Extensions.VK_KHR_maintenance5.BufferUsageFlags2CreateInfoKHR',
+--     'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.BufferUsageFlags2CreateInfo',
 --     its @usage@ /must/ not contain any other bit than
---     'Vulkan.Extensions.VK_KHR_maintenance5.BUFFER_USAGE_2_UNIFORM_TEXEL_BUFFER_BIT_KHR'
+--     'Vulkan.Core14.Enums.BufferUsageFlags2.BUFFER_USAGE_2_UNIFORM_TEXEL_BUFFER_BIT'
 --     or
---     'Vulkan.Extensions.VK_KHR_maintenance5.BUFFER_USAGE_2_STORAGE_TEXEL_BUFFER_BIT_KHR'
+--     'Vulkan.Core14.Enums.BufferUsageFlags2.BUFFER_USAGE_2_STORAGE_TEXEL_BUFFER_BIT'
 --
 -- -   #VUID-VkBufferViewCreateInfo-pNext-08781# If the @pNext@ chain
 --     includes a
---     'Vulkan.Extensions.VK_KHR_maintenance5.BufferUsageFlags2CreateInfoKHR',
+--     'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.BufferUsageFlags2CreateInfo',
 --     its @usage@ /must/ be a subset of the
 --     'Vulkan.Core10.Buffer.BufferCreateInfo'::@usage@ specified or
---     'Vulkan.Extensions.VK_KHR_maintenance5.BufferUsageFlags2CreateInfoKHR'::@usage@
+--     'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.BufferUsageFlags2CreateInfo'::@usage@
 --     from 'Vulkan.Core10.Buffer.BufferCreateInfo'::@pNext@ when creating
 --     @buffer@
 --
+-- -   #VUID-VkBufferViewCreateInfo-None-12278# If Vulkan 1.3 is not
+--     supported and the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-ycbcr2plane444Formats ycbcr2plane444Formats>
+--     feature is not enabled, @format@ /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_G8_B8R8_2PLANE_444_UNORM',
+--     'Vulkan.Core10.Enums.Format.FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16',
+--     'Vulkan.Core10.Enums.Format.FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16',
+--     or 'Vulkan.Core10.Enums.Format.FORMAT_G16_B16R16_2PLANE_444_UNORM'
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-VkBufferViewCreateInfo-sType-sType# @sType@ /must/ be
@@ -386,13 +388,13 @@
 -- -   #VUID-VkBufferViewCreateInfo-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_maintenance5.BufferUsageFlags2CreateInfoKHR'
+--     'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.BufferUsageFlags2CreateInfo'
 --     or
 --     'Vulkan.Extensions.VK_EXT_metal_objects.ExportMetalObjectCreateInfoEXT'
 --
 -- -   #VUID-VkBufferViewCreateInfo-sType-unique# The @sType@ value of each
---     struct in the @pNext@ chain /must/ be unique, with the exception of
---     structures of type
+--     structure in the @pNext@ chain /must/ be unique, with the exception
+--     of structures of type
 --     'Vulkan.Extensions.VK_EXT_metal_objects.ExportMetalObjectCreateInfoEXT'
 --
 -- -   #VUID-VkBufferViewCreateInfo-flags-zerobitmask# @flags@ /must/ be
@@ -431,7 +433,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#texel-block-size texel block size>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#texel-block-size texel block size>
     -- of @format@, the nearest smaller multiple is used.
     range :: DeviceSize
   }
@@ -448,7 +450,7 @@
   extends :: forall e b proxy. Typeable e => proxy e -> (Extends BufferViewCreateInfo e => b) -> Maybe b
   extends _ f
     | Just Refl <- eqT @e @ExportMetalObjectCreateInfoEXT = Just f
-    | Just Refl <- eqT @e @BufferUsageFlags2CreateInfoKHR = Just f
+    | Just Refl <- eqT @e @BufferUsageFlags2CreateInfo = Just f
     | otherwise = Nothing
 
 instance ( Extendss BufferViewCreateInfo es
diff --git a/src/Vulkan/Core10/CommandBuffer.hs b/src/Vulkan/Core10/CommandBuffer.hs
--- a/src/Vulkan/Core10/CommandBuffer.hs
+++ b/src/Vulkan/Core10/CommandBuffer.hs
@@ -75,6 +75,7 @@
 import Vulkan.Core10.Handles (CommandBuffer(..))
 import Vulkan.Core10.Handles (CommandBuffer(CommandBuffer))
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_conditional_rendering (CommandBufferInheritanceConditionalRenderingInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_heap (CommandBufferInheritanceDescriptorHeapInfoEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_render_pass_transform (CommandBufferInheritanceRenderPassTransformInfoQCOM)
 import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering (CommandBufferInheritanceRenderingInfo)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_inherited_viewport_scissor (CommandBufferInheritanceViewportScissorInfoNV)
@@ -85,6 +86,7 @@
 import Vulkan.Core10.Handles (CommandBuffer_T)
 import Vulkan.Core10.Handles (CommandPool)
 import Vulkan.Core10.Handles (CommandPool(..))
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_custom_resolve (CustomResolveCreateInfoEXT)
 import Vulkan.Core10.Handles (Device)
 import Vulkan.Core10.Handles (Device(..))
 import Vulkan.Core10.Handles (Device(Device))
@@ -108,12 +110,14 @@
 import Vulkan.Core10.Enums.QueryControlFlagBits (QueryControlFlags)
 import Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits (QueryPipelineStatisticFlags)
 import Vulkan.Core10.Handles (RenderPass)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read (RenderingAttachmentLocationInfoKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read (RenderingInputAttachmentIndexInfoKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_tile_shading (RenderPassTileShadingCreateInfoQCOM)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read (RenderingAttachmentLocationInfo)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read (RenderingInputAttachmentIndexInfo)
 import Vulkan.Core10.Enums.Result (Result)
 import Vulkan.Core10.Enums.Result (Result(..))
 import Vulkan.CStruct.Extends (SomeStruct)
 import Vulkan.Core10.Enums.StructureType (StructureType)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_tile_memory_heap (TileMemoryBindInfoQCOM)
 import Vulkan.Exception (VulkanException(..))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO))
@@ -150,7 +154,7 @@
 -- contents.
 --
 -- When command buffers are first allocated, they are in the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle initial state>.
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#commandbuffers-lifecycle initial state>.
 --
 -- == Valid Usage (Implicit)
 --
@@ -166,14 +170,12 @@
 --     @pAllocateInfo->commandBufferCount@
 --     'Vulkan.Core10.Handles.CommandBuffer' handles
 --
+-- -   #VUID-vkAllocateCommandBuffers-device-queuecount# The device /must/
+--     have been created with at least @1@ queue
+--
 -- -   #VUID-vkAllocateCommandBuffers-pAllocateInfo::commandBufferCount-arraylength#
 --     @pAllocateInfo->commandBufferCount@ /must/ be greater than @0@
 --
--- == Host Synchronization
---
--- -   Host access to @pAllocateInfo->commandPool@ /must/ be externally
---     synchronized
---
 -- == Return Codes
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
@@ -182,10 +184,14 @@
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -196,7 +202,8 @@
                        => -- | @device@ is the logical device that owns the command pool.
                           Device
                        -> -- | @pAllocateInfo@ is a pointer to a 'CommandBufferAllocateInfo' structure
-                          -- describing parameters of the allocation.
+                          -- describing parameters of the allocation. @commandPool@ /may/ be accessed
+                          -- any time one of the resulting command buffers is accessed.
                           CommandBufferAllocateInfo
                        -> io (("commandBuffers" ::: Vector CommandBuffer))
 allocateCommandBuffers device allocateInfo = liftIO . evalContT $ do
@@ -245,15 +252,15 @@
 -- = Description
 --
 -- Any primary command buffer that is in the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle recording or executable state>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#commandbuffers-lifecycle recording or executable state>
 -- and has any element of @pCommandBuffers@ recorded into it, becomes
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle invalid>.
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#commandbuffers-lifecycle invalid>.
 --
 -- == Valid Usage
 --
 -- -   #VUID-vkFreeCommandBuffers-pCommandBuffers-00047# All elements of
 --     @pCommandBuffers@ /must/ not be in the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle pending state>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#commandbuffers-lifecycle pending state>
 --
 -- -   #VUID-vkFreeCommandBuffers-pCommandBuffers-00048# @pCommandBuffers@
 --     /must/ be a valid pointer to an array of @commandBufferCount@
@@ -329,14 +336,14 @@
 --
 -- -   #VUID-vkBeginCommandBuffer-commandBuffer-00049# @commandBuffer@
 --     /must/ not be in the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle recording or pending state>
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle initial state>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#commandbuffers-lifecycle initial state>
 --
 -- -   #VUID-vkBeginCommandBuffer-commandBuffer-00051# If @commandBuffer@
 --     is a secondary command buffer, the @pInheritanceInfo@ member of
@@ -347,7 +354,7 @@
 --     is a secondary command buffer and either the @occlusionQueryEnable@
 --     member of the @pInheritanceInfo@ member of @pBeginInfo@ is
 --     'Vulkan.Core10.FundamentalTypes.FALSE', or the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-occlusionQueryPrecise occlusionQueryPrecise>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-occlusionQueryPrecise occlusionQueryPrecise>
 --     feature is not enabled, then
 --     @pBeginInfo->pInheritanceInfo->queryFlags@ /must/ not contain
 --     'Vulkan.Core10.Enums.QueryControlFlagBits.QUERY_CONTROL_PRECISE_BIT'
@@ -383,10 +390,14 @@
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -437,48 +448,49 @@
 -- = Description
 --
 -- The command buffer /must/ have been in the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#commandbuffers-lifecycle recording state>,
 -- and, if successful, is moved to the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle executable state>.
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#commandbuffers-lifecycle executable state>.
 --
 -- If there was an error during recording, the application will be notified
 -- by an unsuccessful return code returned by 'endCommandBuffer', and the
 -- command buffer will be moved to the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle invalid state>.
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#commandbuffers-lifecycle invalid state>.
 --
 -- In case the application recorded one or more
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#video-encode-operations video encode operations>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#video-encode-operations video encode operations>
 -- into the command buffer, implementations /may/ return the
--- @VK_ERROR_INVALID_VIDEO_STD_PARAMETERS_KHR@ error if any of the
--- specified Video Std parameters do not adhere to the syntactic or
--- semantic requirements of the used video compression standard, or if
--- values derived from parameters according to the rules defined by the
--- used video compression standard do not adhere to the capabilities of the
--- video compression standard or the implementation.
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkResult VK_ERROR_INVALID_VIDEO_STD_PARAMETERS_KHR>
+-- error if any of the specified Video Std parameters do not adhere to the
+-- syntactic or semantic requirements of the used video compression
+-- standard, or if values derived from parameters according to the rules
+-- defined by the used video compression standard do not adhere to the
+-- capabilities of the video compression standard or the implementation.
 --
 -- Applications /should/ not rely on the
--- @VK_ERROR_INVALID_VIDEO_STD_PARAMETERS_KHR@ error being returned by any
--- command as a means to verify Video Std parameters, as implementations
--- are not required to report the error in any specific set of cases.
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkResult VK_ERROR_INVALID_VIDEO_STD_PARAMETERS_KHR>
+-- error being returned by any command as a means to verify Video Std
+-- parameters, as implementations are not required to report the error in
+-- any specific set of cases.
 --
 -- == Valid Usage
 --
 -- -   #VUID-vkEndCommandBuffer-commandBuffer-00059# @commandBuffer@ /must/
 --     be in the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#queries-operation-active active>
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#active-conditional-rendering active>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#active-conditional-rendering active>
 --
 -- -   #VUID-vkEndCommandBuffer-None-06991# There /must/ be no video
 --     session object bound
@@ -497,6 +509,10 @@
 --     ended by a call to
 --     'Vulkan.Extensions.VK_EXT_debug_marker.cmdDebugMarkerEndEXT'
 --
+-- -   #VUID-vkEndCommandBuffer-commandBuffer-12372# @commandBuffer@ /must/
+--     not have any shader instrumentation
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-instrumentation-active active>
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-vkEndCommandBuffer-commandBuffer-parameter# @commandBuffer@
@@ -517,12 +533,16 @@
 --
 -- [<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'
+--     -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkResult VK_ERROR_INVALID_VIDEO_STD_PARAMETERS_KHR>
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
 --
---     -   @VK_ERROR_INVALID_VIDEO_STD_PARAMETERS_KHR@
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -554,15 +574,19 @@
 -- = Description
 --
 -- Any primary command buffer that is in the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle recording or executable state>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#commandbuffers-lifecycle recording or executable state>
 -- and has @commandBuffer@ recorded into it, becomes
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle invalid>.
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#commandbuffers-lifecycle invalid>.
 --
+-- After a command buffer is reset, any objects or memory specified by
+-- commands recorded into the command buffer /must/ no longer be accessed
+-- when the command buffer is accessed by the implementation.
+--
 -- == Valid Usage
 --
 -- -   #VUID-vkResetCommandBuffer-commandBuffer-00045# @commandBuffer@
 --     /must/ not be in the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle pending state>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#commandbuffers-lifecycle pending state>
 --
 -- -   #VUID-vkResetCommandBuffer-commandBuffer-00046# @commandBuffer@
 --     /must/ have been allocated from a pool that was created with the
@@ -595,6 +619,10 @@
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -604,9 +632,9 @@
                     . (MonadIO io)
                    => -- | @commandBuffer@ is the command buffer to reset. The command buffer /can/
                       -- be in any state other than
-                      -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle pending>,
+                      -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#commandbuffers-lifecycle pending>,
                       -- and is moved into the
-                      -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle initial state>.
+                      -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#commandbuffers-lifecycle initial state>.
                       CommandBuffer
                    -> -- | @flags@ is a bitmask of
                       -- 'Vulkan.Core10.Enums.CommandBufferResetFlagBits.CommandBufferResetFlagBits'
@@ -629,6 +657,24 @@
 --
 -- == Valid Usage (Implicit)
 --
+-- -   #VUID-VkCommandBufferAllocateInfo-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO'
+--
+-- -   #VUID-VkCommandBufferAllocateInfo-pNext-pNext# @pNext@ /must/ be
+--     @NULL@
+--
+-- -   #VUID-VkCommandBufferAllocateInfo-commandPool-parameter#
+--     @commandPool@ /must/ be a valid 'Vulkan.Core10.Handles.CommandPool'
+--     handle
+--
+-- -   #VUID-VkCommandBufferAllocateInfo-level-parameter# @level@ /must/ be
+--     a valid 'Vulkan.Core10.Enums.CommandBufferLevel.CommandBufferLevel'
+--     value
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandPool@ /must/ be externally synchronized
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -639,15 +685,9 @@
 data CommandBufferAllocateInfo = CommandBufferAllocateInfo
   { -- | @commandPool@ is the command pool from which the command buffers are
     -- allocated.
-    --
-    -- #VUID-VkCommandBufferAllocateInfo-commandPool-parameter# @commandPool@
-    -- /must/ be a valid 'Vulkan.Core10.Handles.CommandPool' handle
     commandPool :: CommandPool
   , -- | @level@ is a 'Vulkan.Core10.Enums.CommandBufferLevel.CommandBufferLevel'
     -- value specifying the command buffer level.
-    --
-    -- #VUID-VkCommandBufferAllocateInfo-level-parameter# @level@ /must/ be a
-    -- valid 'Vulkan.Core10.Enums.CommandBufferLevel.CommandBufferLevel' value
     level :: CommandBufferLevel
   , -- | @commandBufferCount@ is the number of command buffers to allocate from
     -- the pool.
@@ -713,23 +753,23 @@
 --
 -- -   #VUID-VkCommandBufferInheritanceInfo-occlusionQueryEnable-00056# If
 --     the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-inheritedQueries inheritedQueries>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-inheritedQueries inheritedQueries>
 --     feature is not enabled, @occlusionQueryEnable@ /must/ be
 --     'Vulkan.Core10.FundamentalTypes.FALSE'
 --
 -- -   #VUID-VkCommandBufferInheritanceInfo-queryFlags-00057# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-inheritedQueries inheritedQueries>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-inheritedQueries inheritedQueries>
 --     feature is enabled, @queryFlags@ /must/ be a valid combination of
 --     'Vulkan.Core10.Enums.QueryControlFlagBits.QueryControlFlagBits'
 --     values
 --
 -- -   #VUID-VkCommandBufferInheritanceInfo-queryFlags-02788# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-inheritedQueries inheritedQueries>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-inheritedQueries inheritedQueries>
 --     feature is not enabled, @queryFlags@ /must/ be @0@
 --
 -- -   #VUID-VkCommandBufferInheritanceInfo-pipelineStatistics-02789# If
 --     the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-pipelineStatisticsQuery pipelineStatisticsQuery>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-pipelineStatisticsQuery pipelineStatisticsQuery>
 --     feature is enabled, @pipelineStatistics@ /must/ be a valid
 --     combination of
 --     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QueryPipelineStatisticFlagBits'
@@ -737,7 +777,7 @@
 --
 -- -   #VUID-VkCommandBufferInheritanceInfo-pipelineStatistics-00058# If
 --     the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-pipelineStatisticsQuery pipelineStatisticsQuery>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-pipelineStatisticsQuery pipelineStatisticsQuery>
 --     feature is not enabled, @pipelineStatistics@ /must/ be @0@
 --
 -- == Valid Usage (Implicit)
@@ -750,17 +790,22 @@
 --     /must/ be either @NULL@ or a pointer to a valid instance of
 --     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD',
 --     'Vulkan.Extensions.VK_EXT_conditional_rendering.CommandBufferInheritanceConditionalRenderingInfoEXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.CommandBufferInheritanceDescriptorHeapInfoEXT',
 --     'Vulkan.Extensions.VK_QCOM_render_pass_transform.CommandBufferInheritanceRenderPassTransformInfoQCOM',
 --     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.CommandBufferInheritanceRenderingInfo',
 --     'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT',
 --     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID',
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkExternalFormatOHOS VkExternalFormatOHOS>,
 --     'Vulkan.Extensions.VK_NVX_multiview_per_view_attributes.MultiviewPerViewAttributesInfoNVX',
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingAttachmentLocationInfoKHR',
+--     'Vulkan.Extensions.VK_QCOM_tile_shading.RenderPassTileShadingCreateInfoQCOM',
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingAttachmentLocationInfo',
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo',
 --     or
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR'
+--     'Vulkan.Extensions.VK_QCOM_tile_memory_heap.TileMemoryBindInfoQCOM'
 --
 -- -   #VUID-VkCommandBufferInheritanceInfo-sType-unique# The @sType@ value
---     of each struct in the @pNext@ chain /must/ be unique
+--     of each structure in the @pNext@ chain /must/ be unique
 --
 -- -   #VUID-VkCommandBufferInheritanceInfo-commonparent# Both of
 --     @framebuffer@, and @renderPass@ that are valid handles of
@@ -781,7 +826,7 @@
     next :: Chain es
   , -- | @renderPass@ is a 'Vulkan.Core10.Handles.RenderPass' object defining
     -- which render passes the 'Vulkan.Core10.Handles.CommandBuffer' will be
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-compatibility compatible>
+    -- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -837,12 +882,16 @@
   getNext CommandBufferInheritanceInfo{..} = next
   extends :: forall e b proxy. Typeable e => proxy e -> (Extends CommandBufferInheritanceInfo e => b) -> Maybe b
   extends _ f
-    | Just Refl <- eqT @e @RenderingInputAttachmentIndexInfoKHR = Just f
-    | Just Refl <- eqT @e @RenderingAttachmentLocationInfoKHR = Just f
+    | Just Refl <- eqT @e @CommandBufferInheritanceDescriptorHeapInfoEXT = Just f
+    | Just Refl <- eqT @e @RenderPassTileShadingCreateInfoQCOM = Just f
+    | Just Refl <- eqT @e @RenderingInputAttachmentIndexInfo = Just f
+    | Just Refl <- eqT @e @RenderingAttachmentLocationInfo = Just f
+    | Just Refl <- eqT @e @TileMemoryBindInfoQCOM = Just f
     | Just Refl <- eqT @e @MultiviewPerViewAttributesInfoNVX = Just f
     | Just Refl <- eqT @e @AttachmentSampleCountInfoAMD = Just f
     | Just Refl <- eqT @e @CommandBufferInheritanceRenderingInfo = Just f
     | Just Refl <- eqT @e @CommandBufferInheritanceViewportScissorInfoNV = Just f
+    | Just Refl <- eqT @e @CustomResolveCreateInfoEXT = Just f
     | Just Refl <- eqT @e @CommandBufferInheritanceRenderPassTransformInfoQCOM = Just f
     | Just Refl <- eqT @e @ExternalFormatANDROID = Just f
     | Just Refl <- eqT @e @CommandBufferInheritanceConditionalRenderingInfoEXT = Just f
@@ -923,7 +972,7 @@
 -- -   #VUID-VkCommandBufferBeginInfo-flags-09240# If @flags@ contains
 --     'Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT'
 --     and the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-dynamicRendering dynamicRendering>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-dynamicRendering dynamicRendering>
 --     feature is not enabled, the @renderPass@ member of
 --     @pInheritanceInfo@ /must/ not be
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE'
@@ -962,6 +1011,33 @@
 --     @pInheritanceInfo@ /must/ be a valid subpass index within the
 --     @renderPass@ member of @pInheritanceInfo@
 --
+-- -   #VUID-VkCommandBufferBeginInfo-flags-10617# If @flags@ contains
+--     'Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT'
+--     , the @renderPass@ member of @pInheritanceInfo@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', and @renderPass@ was
+--     created with
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-tile-shading tile shading enabled>,
+--     'Vulkan.Extensions.VK_QCOM_tile_shading.TILE_SHADING_RENDER_PASS_ENABLE_BIT_QCOM'
+--     /must/ be included in
+--     'Vulkan.Extensions.VK_QCOM_tile_shading.RenderPassTileShadingCreateInfoQCOM'::@flags@
+--
+-- -   #VUID-VkCommandBufferBeginInfo-flags-10618# If @flags@ does not
+--     contain
+--     'Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT'
+--     , the @renderPass@ member of @pInheritanceInfo@ is
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', or @renderPass@ was not
+--     created with tile shading enabled,
+--     'Vulkan.Extensions.VK_QCOM_tile_shading.TILE_SHADING_RENDER_PASS_ENABLE_BIT_QCOM'
+--     /must/ not be included in
+--     'Vulkan.Extensions.VK_QCOM_tile_shading.RenderPassTileShadingCreateInfoQCOM'::@flags@
+--
+-- -   #VUID-VkCommandBufferBeginInfo-flags-10619# If
+--     'Vulkan.Extensions.VK_QCOM_tile_shading.TILE_SHADING_RENDER_PASS_ENABLE_BIT_QCOM'
+--     is included in
+--     'Vulkan.Extensions.VK_QCOM_tile_shading.RenderPassTileShadingCreateInfoQCOM'::@flags@,
+--     'Vulkan.Extensions.VK_QCOM_tile_shading.RenderPassTileShadingCreateInfoQCOM'::@tileApronSize@
+--     /must/ be equal to the @tileApronSize@ used to create @renderPass@
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-VkCommandBufferBeginInfo-sType-sType# @sType@ /must/ be
@@ -972,7 +1048,7 @@
 --     'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupCommandBufferBeginInfo'
 --
 -- -   #VUID-VkCommandBufferBeginInfo-sType-unique# The @sType@ value of
---     each struct in the @pNext@ chain /must/ be unique
+--     each structure in the @pNext@ chain /must/ be unique
 --
 -- -   #VUID-VkCommandBufferBeginInfo-flags-parameter# @flags@ /must/ be a
 --     valid combination of
diff --git a/src/Vulkan/Core10/CommandBufferBuilding.hs b/src/Vulkan/Core10/CommandBufferBuilding.hs
# file too large to diff: src/Vulkan/Core10/CommandBufferBuilding.hs
diff --git a/src/Vulkan/Core10/CommandBufferBuilding.hs-boot b/src/Vulkan/Core10/CommandBufferBuilding.hs-boot
--- a/src/Vulkan/Core10/CommandBufferBuilding.hs-boot
+++ b/src/Vulkan/Core10/CommandBufferBuilding.hs-boot
@@ -2,13 +2,16 @@
 -- No documentation found for Chapter "CommandBufferBuilding"
 module Vulkan.Core10.CommandBufferBuilding  ( BufferCopy
                                             , BufferImageCopy
+                                            , BufferMemoryBarrier
                                             , ClearAttachment
                                             , ClearDepthStencilValue
                                             , ClearRect
                                             , ImageBlit
                                             , ImageCopy
+                                            , ImageMemoryBarrier
                                             , ImageResolve
                                             , ImageSubresourceLayers
+                                            , MemoryBarrier
                                             , RenderPassBeginInfo
                                             , ClearColorValue
                                             ) where
@@ -18,6 +21,7 @@
 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 BufferCopy
 
@@ -35,6 +39,17 @@
 instance FromCStruct BufferImageCopy
 
 
+type role BufferMemoryBarrier nominal
+data BufferMemoryBarrier (es :: [Type])
+
+instance ( Extendss BufferMemoryBarrier es
+         , PokeChain es ) => ToCStruct (BufferMemoryBarrier es)
+instance Show (Chain es) => Show (BufferMemoryBarrier es)
+
+instance ( Extendss BufferMemoryBarrier es
+         , PeekChain es ) => FromCStruct (BufferMemoryBarrier es)
+
+
 data ClearAttachment
 
 instance ToCStruct ClearAttachment
@@ -73,6 +88,17 @@
 instance FromCStruct ImageCopy
 
 
+type role ImageMemoryBarrier nominal
+data ImageMemoryBarrier (es :: [Type])
+
+instance ( Extendss ImageMemoryBarrier es
+         , PokeChain es ) => ToCStruct (ImageMemoryBarrier es)
+instance Show (Chain es) => Show (ImageMemoryBarrier es)
+
+instance ( Extendss ImageMemoryBarrier es
+         , PeekChain es ) => FromCStruct (ImageMemoryBarrier es)
+
+
 data ImageResolve
 
 instance ToCStruct ImageResolve
@@ -87,6 +113,14 @@
 instance Show ImageSubresourceLayers
 
 instance FromCStruct ImageSubresourceLayers
+
+
+data MemoryBarrier
+
+instance ToCStruct MemoryBarrier
+instance Show MemoryBarrier
+
+instance FromCStruct MemoryBarrier
 
 
 type role RenderPassBeginInfo nominal
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
@@ -16,11 +16,13 @@
 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)
@@ -32,11 +34,10 @@
 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(..))
@@ -45,13 +46,16 @@
 import Data.Word (Word32)
 import Data.Kind (Type)
 import Control.Monad.Trans.Cont (ContT(..))
+import Vulkan.CStruct.Extends (forgetExtensions)
 import Vulkan.NamedType ((:::))
 import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)
+import Vulkan.CStruct.Extends (Chain)
 import Vulkan.Core10.Handles (CommandPool)
 import Vulkan.Core10.Handles (CommandPool(..))
 import Vulkan.Core10.Enums.CommandPoolCreateFlagBits (CommandPoolCreateFlags)
 import Vulkan.Core10.Enums.CommandPoolResetFlagBits (CommandPoolResetFlagBits(..))
 import Vulkan.Core10.Enums.CommandPoolResetFlagBits (CommandPoolResetFlags)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_data_graph (DataGraphProcessingEngineCreateInfoARM)
 import Vulkan.Core10.Handles (Device)
 import Vulkan.Core10.Handles (Device(..))
 import Vulkan.Core10.Handles (Device(Device))
@@ -59,8 +63,16 @@
 import Vulkan.Dynamic (DeviceCmds(pVkDestroyCommandPool))
 import Vulkan.Dynamic (DeviceCmds(pVkResetCommandPool))
 import Vulkan.Core10.Handles (Device_T)
+import Vulkan.CStruct.Extends (Extends)
+import Vulkan.CStruct.Extends (Extendss)
+import Vulkan.CStruct.Extends (Extensible(..))
+import Vulkan.CStruct.Extends (PeekChain)
+import Vulkan.CStruct.Extends (PeekChain(..))
+import Vulkan.CStruct.Extends (PokeChain)
+import Vulkan.CStruct.Extends (PokeChain(..))
 import Vulkan.Core10.Enums.Result (Result)
 import Vulkan.Core10.Enums.Result (Result(..))
+import Vulkan.CStruct.Extends (SomeStruct)
 import Vulkan.Core10.Enums.StructureType (StructureType)
 import Vulkan.Exception (VulkanException(..))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO))
@@ -75,7 +87,7 @@
   unsafe
 #endif
   "dynamic" mkVkCreateCommandPool
-  :: FunPtr (Ptr Device_T -> Ptr CommandPoolCreateInfo -> Ptr AllocationCallbacks -> Ptr CommandPool -> IO Result) -> Ptr Device_T -> Ptr CommandPoolCreateInfo -> Ptr AllocationCallbacks -> Ptr CommandPool -> IO Result
+  :: FunPtr (Ptr Device_T -> Ptr (SomeStruct CommandPoolCreateInfo) -> Ptr AllocationCallbacks -> Ptr CommandPool -> IO Result) -> Ptr Device_T -> Ptr (SomeStruct CommandPoolCreateInfo) -> Ptr AllocationCallbacks -> Ptr CommandPool -> IO Result
 
 -- | vkCreateCommandPool - Create a new command pool object
 --
@@ -102,6 +114,9 @@
 --     /must/ be a valid pointer to a 'Vulkan.Core10.Handles.CommandPool'
 --     handle
 --
+-- -   #VUID-vkCreateCommandPool-device-queuecount# The device /must/ have
+--     been created with at least @1@ queue
+--
 -- == Return Codes
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
@@ -110,25 +125,29 @@
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = 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.AllocationCallbacks.AllocationCallbacks',
 -- 'Vulkan.Core10.Handles.CommandPool', 'CommandPoolCreateInfo',
 -- 'Vulkan.Core10.Handles.Device'
-createCommandPool :: forall io
-                   . (MonadIO io)
+createCommandPool :: forall a io
+                   . (Extendss CommandPoolCreateInfo a, PokeChain a, MonadIO io)
                   => -- | @device@ is the logical device that creates the command pool.
                      Device
                   -> -- | @pCreateInfo@ is a pointer to a 'CommandPoolCreateInfo' structure
                      -- specifying the state of the command pool object.
-                     CommandPoolCreateInfo
+                     (CommandPoolCreateInfo a)
                   -> -- | @pAllocator@ controls host memory allocation as described in the
-                     -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                     -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
                      -- chapter.
                      ("allocator" ::: Maybe AllocationCallbacks)
                   -> io (CommandPool)
@@ -144,7 +163,7 @@
   pPCommandPool <- ContT $ bracket (callocBytes @CommandPool 8) free
   r <- lift $ traceAroundEvent "vkCreateCommandPool" (vkCreateCommandPool'
                                                         (deviceHandle (device))
-                                                        pCreateInfo
+                                                        (forgetExtensions pCreateInfo)
                                                         pAllocator
                                                         (pPCommandPool))
   lift $ when (r < SUCCESS) (throwIO (VulkanException r))
@@ -159,7 +178,7 @@
 -- favourite resource management library) as the last argument.
 -- To just extract the pair pass '(,)' as the last argument.
 --
-withCommandPool :: forall io r . MonadIO io => Device -> CommandPoolCreateInfo -> Maybe AllocationCallbacks -> (io CommandPool -> (CommandPool -> io ()) -> r) -> r
+withCommandPool :: forall a io r . (Extendss CommandPoolCreateInfo a, PokeChain a, MonadIO io) => Device -> CommandPoolCreateInfo a -> Maybe AllocationCallbacks -> (io CommandPool -> (CommandPool -> io ()) -> r) -> r
 withCommandPool device pCreateInfo pAllocator b =
   b (createCommandPool device pCreateInfo pAllocator)
     (\(o0) -> destroyCommandPool device o0 pAllocator)
@@ -181,17 +200,17 @@
 --
 -- Any primary command buffer allocated from another
 -- 'Vulkan.Core10.Handles.CommandPool' that is in the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle recording or executable state>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#commandbuffers-lifecycle recording or executable state>
 -- and has a secondary command buffer allocated from @commandPool@ recorded
 -- into it, becomes
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle invalid>.
+-- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle pending state>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#commandbuffers-lifecycle pending state>
 --
 -- -   #VUID-vkDestroyCommandPool-commandPool-00042# If
 --     'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' were
@@ -236,7 +255,7 @@
                    -> -- | @commandPool@ is the handle of the command pool to destroy.
                       CommandPool
                    -> -- | @pAllocator@ controls host memory allocation as described in the
-                      -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                      -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
                       -- chapter.
                       ("allocator" ::: Maybe AllocationCallbacks)
                    -> io ()
@@ -270,21 +289,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle initial state>.
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#commandbuffers-lifecycle initial state>.
 --
 -- Any primary command buffer allocated from another
 -- 'Vulkan.Core10.Handles.CommandPool' that is in the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle recording or executable state>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#commandbuffers-lifecycle recording or executable state>
 -- and has a secondary command buffer allocated from @commandPool@ recorded
 -- into it, becomes
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle invalid>.
+-- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle pending state>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#commandbuffers-lifecycle pending state>
 --
 -- == Valid Usage (Implicit)
 --
@@ -316,6 +335,10 @@
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -351,18 +374,57 @@
 -- == Valid Usage
 --
 -- -   #VUID-VkCommandPoolCreateInfo-flags-02860# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-protectedMemory protectedMemory>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-protectedMemory protectedMemory>
 --     feature is not enabled, the
 --     'Vulkan.Core10.Enums.CommandPoolCreateFlagBits.COMMAND_POOL_CREATE_PROTECTED_BIT'
 --     bit of @flags@ /must/ not be set
 --
+-- -   #VUID-VkCommandPoolCreateInfo-pNext-09908# If the @pNext@ chain
+--     includes a
+--     'Vulkan.Extensions.VK_ARM_data_graph.DataGraphProcessingEngineCreateInfoARM'
+--     structure, then @queueFamilyIndex@ /must/ designate a queue family
+--     that supports
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_DATA_GRAPH_BIT_ARM'
+--
+-- -   #VUID-VkCommandPoolCreateInfo-pNext-09909# If the @pNext@ chain
+--     includes a
+--     'Vulkan.Extensions.VK_ARM_data_graph.DataGraphProcessingEngineCreateInfoARM'
+--     structure, each member of @pProcessingEngines@ /must/ be identical
+--     to
+--     'Vulkan.Extensions.VK_ARM_data_graph.QueueFamilyDataGraphPropertiesARM'::@engine@
+--     retrieved from
+--     'Vulkan.Extensions.VK_ARM_data_graph.getPhysicalDeviceQueueFamilyDataGraphPropertiesARM'
+--     with @queueFamilyIndex@ and the @physicalDevice@ that was used to
+--     create @device@
+--
+-- -   #VUID-VkCommandPoolCreateInfo-queueFamilyIndex-11830# If
+--     @queueFamilyIndex@ designates a queue family that supports
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_DATA_GRAPH_BIT_ARM' and
+--     enumerates a foreign engine through
+--     'Vulkan.Extensions.VK_ARM_data_graph.getPhysicalDeviceQueueFamilyDataGraphPropertiesARM'
+--     with type
+--     'Vulkan.Extensions.VK_ARM_data_graph.PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_NEURAL_QCOM'
+--     or
+--     'Vulkan.Extensions.VK_ARM_data_graph.PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_COMPUTE_QCOM',
+--     the @pNext@ chain must include
+--     'Vulkan.Extensions.VK_ARM_data_graph.DataGraphProcessingEngineCreateInfoARM'
+--     with
+--     'Vulkan.Extensions.VK_ARM_data_graph.PhysicalDeviceDataGraphProcessingEngineARM'::@isForeign@
+--     set to 'Vulkan.Core10.FundamentalTypes.TRUE' for all elements of
+--     @pProcessingEngines@
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-VkCommandPoolCreateInfo-sType-sType# @sType@ /must/ be
 --     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO'
 --
 -- -   #VUID-VkCommandPoolCreateInfo-pNext-pNext# @pNext@ /must/ be @NULL@
+--     or a pointer to a valid instance of
+--     'Vulkan.Extensions.VK_ARM_data_graph.DataGraphProcessingEngineCreateInfoARM'
 --
+-- -   #VUID-VkCommandPoolCreateInfo-sType-unique# The @sType@ value of
+--     each structure in the @pNext@ chain /must/ be unique
+--
 -- -   #VUID-VkCommandPoolCreateInfo-flags-parameter# @flags@ /must/ be a
 --     valid combination of
 --     'Vulkan.Core10.Enums.CommandPoolCreateFlagBits.CommandPoolCreateFlagBits'
@@ -373,55 +435,67 @@
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
 -- 'Vulkan.Core10.Enums.CommandPoolCreateFlagBits.CommandPoolCreateFlags',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType', 'createCommandPool'
-data CommandPoolCreateInfo = CommandPoolCreateInfo
-  { -- | @flags@ is a bitmask of
+data CommandPoolCreateInfo (es :: [Type]) = CommandPoolCreateInfo
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
+    next :: Chain es
+  , -- | @flags@ is a bitmask of
     -- 'Vulkan.Core10.Enums.CommandPoolCreateFlagBits.CommandPoolCreateFlagBits'
     -- indicating usage behavior for the pool and command buffers allocated
     -- from it.
     flags :: CommandPoolCreateFlags
   , -- | @queueFamilyIndex@ designates a queue family as described in section
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-queueprops Queue Family Properties>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/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
   }
-  deriving (Typeable, Eq)
+  deriving (Typeable)
 #if defined(GENERIC_INSTANCES)
-deriving instance Generic (CommandPoolCreateInfo)
+deriving instance Generic (CommandPoolCreateInfo (es :: [Type]))
 #endif
-deriving instance Show CommandPoolCreateInfo
+deriving instance Show (Chain es) => Show (CommandPoolCreateInfo es)
 
-instance ToCStruct CommandPoolCreateInfo where
+instance Extensible CommandPoolCreateInfo where
+  extensibleTypeName = "CommandPoolCreateInfo"
+  setNext CommandPoolCreateInfo{..} next' = CommandPoolCreateInfo{next = next', ..}
+  getNext CommandPoolCreateInfo{..} = next
+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends CommandPoolCreateInfo e => b) -> Maybe b
+  extends _ f
+    | Just Refl <- eqT @e @DataGraphProcessingEngineCreateInfoARM = Just f
+    | otherwise = Nothing
+
+instance ( Extendss CommandPoolCreateInfo es
+         , PokeChain es ) => ToCStruct (CommandPoolCreateInfo es) where
   withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p CommandPoolCreateInfo{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr CommandPoolCreateFlags)) (flags)
-    poke ((p `plusPtr` 20 :: Ptr Word32)) (queueFamilyIndex)
-    f
+  pokeCStruct p CommandPoolCreateInfo{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO)
+    pNext'' <- fmap castPtr . ContT $ withChain (next)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
+    lift $ poke ((p `plusPtr` 16 :: Ptr CommandPoolCreateFlags)) (flags)
+    lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) (queueFamilyIndex)
+    lift $ f
   cStructSize = 24
   cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)
-    f
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO)
+    pNext' <- fmap castPtr . ContT $ withZeroChain @es
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
+    lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)
+    lift $ f
 
-instance FromCStruct CommandPoolCreateInfo where
+instance ( Extendss CommandPoolCreateInfo es
+         , PeekChain es ) => FromCStruct (CommandPoolCreateInfo es) where
   peekCStruct p = do
+    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
+    next <- peekChain (castPtr pNext)
     flags <- peek @CommandPoolCreateFlags ((p `plusPtr` 16 :: Ptr CommandPoolCreateFlags))
     queueFamilyIndex <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
     pure $ CommandPoolCreateInfo
-             flags queueFamilyIndex
-
-instance Storable CommandPoolCreateInfo where
-  sizeOf ~_ = 24
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
+             next flags queueFamilyIndex
 
-instance Zero CommandPoolCreateInfo where
+instance es ~ '[] => Zero (CommandPoolCreateInfo es) where
   zero = CommandPoolCreateInfo
+           ()
            zero
            zero
 
diff --git a/src/Vulkan/Core10/CommandPool.hs-boot b/src/Vulkan/Core10/CommandPool.hs-boot
--- a/src/Vulkan/Core10/CommandPool.hs-boot
+++ b/src/Vulkan/Core10/CommandPool.hs-boot
@@ -5,11 +5,17 @@
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (ToCStruct)
 import Data.Kind (Type)
-
-data CommandPoolCreateInfo
+import {-# SOURCE #-} Vulkan.CStruct.Extends (Chain)
+import {-# SOURCE #-} Vulkan.CStruct.Extends (Extendss)
+import {-# SOURCE #-} Vulkan.CStruct.Extends (PeekChain)
+import {-# SOURCE #-} Vulkan.CStruct.Extends (PokeChain)
+type role CommandPoolCreateInfo nominal
+data CommandPoolCreateInfo (es :: [Type])
 
-instance ToCStruct CommandPoolCreateInfo
-instance Show CommandPoolCreateInfo
+instance ( Extendss CommandPoolCreateInfo es
+         , PokeChain es ) => ToCStruct (CommandPoolCreateInfo es)
+instance Show (Chain es) => Show (CommandPoolCreateInfo es)
 
-instance FromCStruct CommandPoolCreateInfo
+instance ( Extendss CommandPoolCreateInfo es
+         , PeekChain es ) => FromCStruct (CommandPoolCreateInfo es)
 
diff --git a/src/Vulkan/Core10/ComputePipeline.hs b/src/Vulkan/Core10/ComputePipeline.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core10/ComputePipeline.hs
@@ -0,0 +1,1465 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "ComputePipeline"
+module Vulkan.Core10.ComputePipeline  ( createComputePipelines
+                                      , withComputePipelines
+                                      , destroyPipeline
+                                      , SpecializationMapEntry(..)
+                                      , SpecializationInfo(..)
+                                      , PipelineShaderStageCreateInfo(..)
+                                      , ComputePipelineCreateInfo(..)
+                                      , Pipeline(..)
+                                      , PipelineCreateFlagBits(..)
+                                      , PipelineCreateFlags
+                                      , PipelineShaderStageCreateFlagBits(..)
+                                      , PipelineShaderStageCreateFlags
+                                      , PipelineLayoutCreateFlagBits(..)
+                                      , PipelineLayoutCreateFlags
+                                      ) where
+
+import Vulkan.Internal.Utils (traceAroundEvent)
+import Control.Exception.Base (bracket)
+import Control.Monad (unless)
+import Control.Monad.IO.Class (liftIO)
+import Data.Foldable (traverse_)
+import Data.Typeable (eqT)
+import Foreign.Marshal.Alloc (allocaBytes)
+import Foreign.Marshal.Alloc (callocBytes)
+import Foreign.Marshal.Alloc (free)
+import Foreign.Marshal.Utils (maybePeek)
+import GHC.Base (when)
+import GHC.IO (throwIO)
+import GHC.Ptr (castPtr)
+import GHC.Ptr (nullFunPtr)
+import Foreign.Ptr (nullPtr)
+import Foreign.Ptr (plusPtr)
+import Data.ByteString (packCString)
+import Data.ByteString (useAsCString)
+import Data.Coerce (coerce)
+import Control.Monad.Trans.Class (lift)
+import Control.Monad.Trans.Cont (evalContT)
+import Data.Vector (generateM)
+import qualified Data.Vector (imapM_)
+import qualified Data.Vector (length)
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (FromCStruct(..))
+import Vulkan.CStruct (ToCStruct)
+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.C.Types (CChar)
+import Foreign.C.Types (CSize)
+import Foreign.C.Types (CSize(..))
+import Foreign.C.Types (CSize(CSize))
+import Foreign.Storable (Storable)
+import Foreign.Storable (Storable(peek))
+import Foreign.Storable (Storable(poke))
+import qualified Foreign.Storable (Storable(..))
+import GHC.Generics (Generic)
+import GHC.IO.Exception (IOErrorType(..))
+import GHC.IO.Exception (IOException(..))
+import Data.Int (Int32)
+import Foreign.Ptr (FunPtr)
+import Foreign.Ptr (Ptr)
+import Data.Word (Word32)
+import Data.Word (Word64)
+import Data.ByteString (ByteString)
+import Data.Kind (Type)
+import Control.Monad.Trans.Cont (ContT(..))
+import Data.Vector (Vector)
+import Vulkan.CStruct.Utils (advancePtrBytes)
+import Vulkan.CStruct.Extends (forgetExtensions)
+import Vulkan.CStruct.Extends (peekSomeCStruct)
+import Vulkan.CStruct.Extends (pokeSomeCStruct)
+import Vulkan.NamedType ((:::))
+import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)
+import Vulkan.CStruct.Extends (Chain)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_generated_commands_compute (ComputePipelineIndirectBufferInfoNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_debug_utils (DebugUtilsObjectNameInfoEXT)
+import Vulkan.Core10.Handles (Device)
+import Vulkan.Core10.Handles (Device(..))
+import Vulkan.Core10.Handles (Device(Device))
+import Vulkan.Dynamic (DeviceCmds(pVkCreateComputePipelines))
+import Vulkan.Dynamic (DeviceCmds(pVkDestroyPipeline))
+import Vulkan.Core10.Handles (Device_T)
+import Vulkan.CStruct.Extends (Extends)
+import Vulkan.CStruct.Extends (Extendss)
+import Vulkan.CStruct.Extends (Extensible(..))
+import Vulkan.CStruct.Extends (PeekChain)
+import Vulkan.CStruct.Extends (PeekChain(..))
+import Vulkan.Core10.Handles (Pipeline)
+import Vulkan.Core10.Handles (Pipeline(..))
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_pipeline_binary (PipelineBinaryInfoKHR)
+import Vulkan.Core10.Handles (PipelineCache)
+import Vulkan.Core10.Handles (PipelineCache(..))
+import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_pipeline_compiler_control (PipelineCompilerControlCreateInfoAMD)
+import Vulkan.Core10.Enums.PipelineCreateFlagBits (PipelineCreateFlags)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_maintenance5 (PipelineCreateFlags2CreateInfo)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_pipeline_creation_feedback (PipelineCreationFeedbackCreateInfo)
+import Vulkan.Core10.Handles (PipelineLayout)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_EXT_pipeline_robustness (PipelineRobustnessCreateInfo)
+import Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits (PipelineShaderStageCreateFlags)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_shader_module_identifier (PipelineShaderStageModuleIdentifierCreateInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_AMDX_shader_enqueue (PipelineShaderStageNodeCreateInfoAMDX)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_subgroup_size_control (PipelineShaderStageRequiredSubgroupSizeCreateInfo)
+import Vulkan.CStruct.Extends (PokeChain)
+import Vulkan.CStruct.Extends (PokeChain(..))
+import Vulkan.Core10.Enums.Result (Result)
+import Vulkan.Core10.Enums.Result (Result(..))
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_heap (ShaderDescriptorSetAndBindingMappingInfoEXT)
+import Vulkan.Core10.Handles (ShaderModule)
+import {-# SOURCE #-} Vulkan.Core10.Shader (ShaderModuleCreateInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_validation_cache (ShaderModuleValidationCacheCreateInfoEXT)
+import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlagBits)
+import Vulkan.CStruct.Extends (SomeStruct)
+import Vulkan.CStruct.Extends (SomeStruct(..))
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import {-# SOURCE #-} Vulkan.Extensions.VK_HUAWEI_subpass_shading (SubpassShadingPipelineCreateInfoHUAWEI)
+import Vulkan.Exception (VulkanException(..))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO))
+import Vulkan.Core10.Enums.Result (Result(SUCCESS))
+import Vulkan.Core10.Handles (Pipeline(..))
+import Vulkan.Core10.Enums.PipelineCreateFlagBits (PipelineCreateFlagBits(..))
+import Vulkan.Core10.Enums.PipelineCreateFlagBits (PipelineCreateFlags)
+import Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits (PipelineLayoutCreateFlagBits(..))
+import Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits (PipelineLayoutCreateFlags)
+import Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits (PipelineShaderStageCreateFlagBits(..))
+import Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits (PipelineShaderStageCreateFlags)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCreateComputePipelines
+  :: FunPtr (Ptr Device_T -> PipelineCache -> Word32 -> Ptr (SomeStruct ComputePipelineCreateInfo) -> Ptr AllocationCallbacks -> Ptr Pipeline -> IO Result) -> Ptr Device_T -> PipelineCache -> Word32 -> Ptr (SomeStruct ComputePipelineCreateInfo) -> Ptr AllocationCallbacks -> Ptr Pipeline -> IO Result
+
+-- | vkCreateComputePipelines - Creates a new compute pipeline object
+--
+-- = Description
+--
+-- Pipelines are created and returned as described for
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-multiple Multiple Pipeline Creation>.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCreateComputePipelines-device-09661# @device@ /must/ support
+--     at least one queue family with the
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT' capability
+--
+-- -   #VUID-vkCreateComputePipelines-flags-00695# If the @flags@ member of
+--     any element of @pCreateInfos@ contains the
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'
+--     flag, and the @basePipelineIndex@ member of that same element is not
+--     @-1@, @basePipelineIndex@ /must/ be less than the index into
+--     @pCreateInfos@ that corresponds to that element
+--
+-- -   #VUID-vkCreateComputePipelines-flags-00696# If the @flags@ member of
+--     any element of @pCreateInfos@ contains the
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'
+--     flag, the base pipeline /must/ have been created with the
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT'
+--     flag set
+--
+-- -   #VUID-vkCreateComputePipelines-pipelineCache-02873# If
+--     @pipelineCache@ was created with
+--     'Vulkan.Core10.Enums.PipelineCacheCreateFlagBits.PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT',
+--     host access to @pipelineCache@ /must/ be
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#fundamentals-threadingbehavior externally synchronized>
+--
+-- -   #VUID-vkCreateComputePipelines-pNext-09616# If
+--     'Vulkan.Extensions.VK_KHR_pipeline_binary.PipelineBinaryInfoKHR'::@binaryCount@
+--     is not @0@ for any element of @pCreateInfos@, @pipelineCache@ /must/
+--     be 'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-vkCreateComputePipelines-pNext-09617# If a
+--     'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlags2CreateInfoKHR'
+--     structure with the
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR'
+--     flag set is included in the @pNext@ chain of any element of
+--     @pCreateInfos@, @pipelineCache@ /must/ be
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-vkCreateComputePipelines-binaryCount-09620# If
+--     'Vulkan.Extensions.VK_KHR_pipeline_binary.PipelineBinaryInfoKHR'::@binaryCount@
+--     is not @0@ for any element of @pCreateInfos@,
+--     'Vulkan.Core13.Enums.PipelineCreationFeedbackFlagBits.PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT'
+--     /must/ not be set in the @flags@ of that element
+--
+-- -   #VUID-vkCreateComputePipelines-binaryCount-09621# If
+--     'Vulkan.Extensions.VK_KHR_pipeline_binary.PipelineBinaryInfoKHR'::@binaryCount@
+--     is not @0@ for any element of @pCreateInfos@,
+--     'Vulkan.Core13.Enums.PipelineCreationFeedbackFlagBits.PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT'
+--     /must/ not be set in the @flags@ of that element
+--
+-- -   #VUID-vkCreateComputePipelines-binaryCount-09622# If
+--     'Vulkan.Extensions.VK_KHR_pipeline_binary.PipelineBinaryInfoKHR'::@binaryCount@
+--     is not @0@ for any element of @pCreateInfos@,
+--     'Vulkan.Extensions.VK_EXT_pipeline_creation_cache_control.PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT'
+--     /must/ not be set in the @flags@ of that element
+--
+-- -   #VUID-vkCreateComputePipelines-pCreateInfos-11414# If any element of
+--     @pCreateInfos@ sets
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT'
+--     and includes embedded sampler mappings, there /must/ be less than
+--     (<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxSamplerAllocationCount maxSamplerAllocationCount>
+--     -
+--     (<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minSamplerHeapReservedRangeWithEmbedded minSamplerHeapReservedRangeWithEmbedded>
+--     \/
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-samplerDescriptorSize samplerDescriptorSize>))
+--     'Vulkan.Core10.Handles.Sampler' objects currently created on the
+--     device
+--
+-- -   #VUID-vkCreateComputePipelines-pCreateInfos-11429# If any element of
+--     @pCreateInfos@ sets
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT'
+--     and includes embedded sampler mappings, this command /must/ not
+--     cause the total number of unique embedded samplers in pipelines and
+--     shaders on this device to exceed
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxDescriptorHeapEmbeddedSamplers maxDescriptorHeapEmbeddedSamplers>
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCreateComputePipelines-device-parameter# @device@ /must/ be
+--     a valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkCreateComputePipelines-pipelineCache-parameter# If
+--     @pipelineCache@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
+--     @pipelineCache@ /must/ be a valid
+--     'Vulkan.Core10.Handles.PipelineCache' handle
+--
+-- -   #VUID-vkCreateComputePipelines-pCreateInfos-parameter#
+--     @pCreateInfos@ /must/ be a valid pointer to an array of
+--     @createInfoCount@ valid 'ComputePipelineCreateInfo' structures
+--
+-- -   #VUID-vkCreateComputePipelines-pAllocator-parameter# If @pAllocator@
+--     is not @NULL@, @pAllocator@ /must/ be a valid pointer to a valid
+--     'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' structure
+--
+-- -   #VUID-vkCreateComputePipelines-pPipelines-parameter# @pPipelines@
+--     /must/ be a valid pointer to an array of @createInfoCount@
+--     'Vulkan.Core10.Handles.Pipeline' handles
+--
+-- -   #VUID-vkCreateComputePipelines-createInfoCount-arraylength#
+--     @createInfoCount@ /must/ be greater than @0@
+--
+-- -   #VUID-vkCreateComputePipelines-pipelineCache-parent# If
+--     @pipelineCache@ is a valid handle, it /must/ have been created,
+--     allocated, or retrieved from @device@
+--
+-- == Return Codes
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
+--
+--     -   'Vulkan.Extensions.VK_EXT_pipeline_creation_cache_control.PIPELINE_COMPILE_REQUIRED_EXT'
+--
+--     -   '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_INVALID_SHADER_NV'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = 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.AllocationCallbacks.AllocationCallbacks',
+-- 'ComputePipelineCreateInfo', 'Vulkan.Core10.Handles.Device',
+-- 'Vulkan.Core10.Handles.Pipeline', 'Vulkan.Core10.Handles.PipelineCache'
+createComputePipelines :: forall io
+                        . (MonadIO io)
+                       => -- | @device@ is the logical device that creates the compute pipelines.
+                          Device
+                       -> -- | @pipelineCache@ is either 'Vulkan.Core10.APIConstants.NULL_HANDLE',
+                          -- indicating that pipeline caching is disabled, or to enable caching, the
+                          -- handle of a valid 'Vulkan.Core10.Handles.PipelineCache' object. The
+                          -- implementation /must/ not access this object outside of the duration of
+                          -- this command.
+                          PipelineCache
+                       -> -- | @pCreateInfos@ is a pointer to an array of 'ComputePipelineCreateInfo'
+                          -- structures.
+                          ("createInfos" ::: Vector (SomeStruct ComputePipelineCreateInfo))
+                       -> -- | @pAllocator@ controls host memory allocation as described in the
+                          -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
+                          -- chapter.
+                          ("allocator" ::: Maybe AllocationCallbacks)
+                       -> io (Result, ("pipelines" ::: Vector Pipeline))
+createComputePipelines device
+                         pipelineCache
+                         createInfos
+                         allocator = liftIO . evalContT $ do
+  let vkCreateComputePipelinesPtr = pVkCreateComputePipelines (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCreateComputePipelinesPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCreateComputePipelines is null" Nothing Nothing
+  let vkCreateComputePipelines' = mkVkCreateComputePipelines vkCreateComputePipelinesPtr
+  pPCreateInfos <- ContT $ allocaBytes @(ComputePipelineCreateInfo _) ((Data.Vector.length (createInfos)) * 96)
+  Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPCreateInfos `plusPtr` (96 * (i)) :: Ptr (ComputePipelineCreateInfo _))) (e) . ($ ())) (createInfos)
+  pAllocator <- case (allocator) of
+    Nothing -> pure nullPtr
+    Just j -> ContT $ withCStruct (j)
+  pPPipelines <- ContT $ bracket (callocBytes @Pipeline ((fromIntegral ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32))) * 8)) free
+  r <- lift $ traceAroundEvent "vkCreateComputePipelines" (vkCreateComputePipelines'
+                                                             (deviceHandle (device))
+                                                             (pipelineCache)
+                                                             ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32))
+                                                             (forgetExtensions (pPCreateInfos))
+                                                             pAllocator
+                                                             (pPPipelines))
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+  pPipelines <- lift $ generateM (fromIntegral ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32))) (\i -> peek @Pipeline ((pPPipelines `advancePtrBytes` (8 * (i)) :: Ptr Pipeline)))
+  pure $ (r, pPipelines)
+
+-- | A convenience wrapper to make a compatible pair of calls to
+-- 'createComputePipelines' and 'destroyPipeline'
+--
+-- To ensure that 'destroyPipeline' 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.
+--
+withComputePipelines :: forall io r . MonadIO io => Device -> PipelineCache -> Vector (SomeStruct ComputePipelineCreateInfo) -> Maybe AllocationCallbacks -> (io (Result, Vector Pipeline) -> ((Result, Vector Pipeline) -> io ()) -> r) -> r
+withComputePipelines device pipelineCache pCreateInfos pAllocator b =
+  b (createComputePipelines device pipelineCache pCreateInfos pAllocator)
+    (\(_, o1) -> traverse_ (\o1Elem -> destroyPipeline device
+                                                         o1Elem
+                                                         pAllocator) o1)
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkDestroyPipeline
+  :: FunPtr (Ptr Device_T -> Pipeline -> Ptr AllocationCallbacks -> IO ()) -> Ptr Device_T -> Pipeline -> Ptr AllocationCallbacks -> IO ()
+
+-- | vkDestroyPipeline - Destroy a pipeline object
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkDestroyPipeline-pipeline-00765# All submitted commands that
+--     refer to @pipeline@ /must/ have completed execution
+--
+-- -   #VUID-vkDestroyPipeline-pipeline-00766# If
+--     'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' were
+--     provided when @pipeline@ was created, a compatible set of callbacks
+--     /must/ be provided here
+--
+-- -   #VUID-vkDestroyPipeline-pipeline-00767# If no
+--     'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' were
+--     provided when @pipeline@ was created, @pAllocator@ /must/ be @NULL@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkDestroyPipeline-device-parameter# @device@ /must/ be a valid
+--     'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkDestroyPipeline-pipeline-parameter# If @pipeline@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', @pipeline@ /must/ be a
+--     valid 'Vulkan.Core10.Handles.Pipeline' handle
+--
+-- -   #VUID-vkDestroyPipeline-pAllocator-parameter# If @pAllocator@ is not
+--     @NULL@, @pAllocator@ /must/ be a valid pointer to a valid
+--     'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' structure
+--
+-- -   #VUID-vkDestroyPipeline-pipeline-parent# If @pipeline@ is a valid
+--     handle, it /must/ have been created, allocated, or retrieved from
+--     @device@
+--
+-- == Host Synchronization
+--
+-- -   Host access to @pipeline@ /must/ be externally synchronized
+--
+-- = 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.AllocationCallbacks.AllocationCallbacks',
+-- 'Vulkan.Core10.Handles.Device', 'Vulkan.Core10.Handles.Pipeline'
+destroyPipeline :: forall io
+                 . (MonadIO io)
+                => -- | @device@ is the logical device that destroys the pipeline.
+                   Device
+                -> -- | @pipeline@ is the handle of the pipeline to destroy.
+                   Pipeline
+                -> -- | @pAllocator@ controls host memory allocation as described in the
+                   -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
+                   -- chapter.
+                   ("allocator" ::: Maybe AllocationCallbacks)
+                -> io ()
+destroyPipeline device pipeline allocator = liftIO . evalContT $ do
+  let vkDestroyPipelinePtr = pVkDestroyPipeline (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkDestroyPipelinePtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkDestroyPipeline is null" Nothing Nothing
+  let vkDestroyPipeline' = mkVkDestroyPipeline vkDestroyPipelinePtr
+  pAllocator <- case (allocator) of
+    Nothing -> pure nullPtr
+    Just j -> ContT $ withCStruct (j)
+  lift $ traceAroundEvent "vkDestroyPipeline" (vkDestroyPipeline'
+                                                 (deviceHandle (device))
+                                                 (pipeline)
+                                                 pAllocator)
+  pure $ ()
+
+
+-- | VkSpecializationMapEntry - Structure specifying a specialization map
+-- entry
+--
+-- = Description
+--
+-- If a @constantID@ value is not a specialization constant ID used in the
+-- shader, that map entry does not affect the behavior of the pipeline.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkSpecializationMapEntry-constantID-00776# For a @constantID@
+--     specialization constant declared in a shader, @size@ /must/ match
+--     the byte size of the @constantID@. If the specialization constant is
+--     of type @boolean@, @size@ /must/ be the byte size of
+--     'Vulkan.Core10.FundamentalTypes.Bool32'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
+-- 'SpecializationInfo'
+data SpecializationMapEntry = SpecializationMapEntry
+  { -- | @constantID@ is the ID of the specialization constant in SPIR-V.
+    constantID :: Word32
+  , -- | @offset@ is the byte offset of the specialization constant value within
+    -- the supplied data buffer.
+    offset :: Word32
+  , -- | @size@ is the byte size of the specialization constant value within the
+    -- supplied data buffer.
+    size :: Word64
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (SpecializationMapEntry)
+#endif
+deriving instance Show SpecializationMapEntry
+
+instance ToCStruct SpecializationMapEntry where
+  withCStruct x f = allocaBytes 16 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p SpecializationMapEntry{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr Word32)) (constantID)
+    poke ((p `plusPtr` 4 :: Ptr Word32)) (offset)
+    poke ((p `plusPtr` 8 :: Ptr CSize)) (CSize (size))
+    f
+  cStructSize = 16
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 8 :: Ptr CSize)) (CSize (zero))
+    f
+
+instance FromCStruct SpecializationMapEntry where
+  peekCStruct p = do
+    constantID <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))
+    offset <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))
+    size <- peek @CSize ((p `plusPtr` 8 :: Ptr CSize))
+    pure $ SpecializationMapEntry
+             constantID offset (coerce @CSize @Word64 size)
+
+instance Storable SpecializationMapEntry where
+  sizeOf ~_ = 16
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero SpecializationMapEntry where
+  zero = SpecializationMapEntry
+           zero
+           zero
+           zero
+
+
+-- | VkSpecializationInfo - Structure specifying specialization information
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkSpecializationInfo-offset-00773# The @offset@ member of each
+--     element of @pMapEntries@ /must/ be less than @dataSize@
+--
+-- -   #VUID-VkSpecializationInfo-pMapEntries-00774# The @size@ member of
+--     each element of @pMapEntries@ /must/ be less than or equal to
+--     @dataSize@ minus @offset@
+--
+-- -   #VUID-VkSpecializationInfo-constantID-04911# The @constantID@ value
+--     of each element of @pMapEntries@ /must/ be unique within
+--     @pMapEntries@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkSpecializationInfo-pMapEntries-parameter# If @mapEntryCount@
+--     is not @0@, @pMapEntries@ /must/ be a valid pointer to an array of
+--     @mapEntryCount@ valid 'SpecializationMapEntry' structures
+--
+-- -   #VUID-VkSpecializationInfo-pData-parameter# If @dataSize@ is not
+--     @0@, @pData@ /must/ be a valid pointer to an array of @dataSize@
+--     bytes
+--
+-- = 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_ARM_data_graph.DataGraphPipelineShaderModuleCreateInfoARM',
+-- 'PipelineShaderStageCreateInfo',
+-- 'Vulkan.Extensions.VK_EXT_shader_object.ShaderCreateInfoEXT',
+-- 'SpecializationMapEntry'
+data SpecializationInfo = SpecializationInfo
+  { -- | @pMapEntries@ is a pointer to an array of 'SpecializationMapEntry'
+    -- structures, which map constant IDs to offsets in @pData@.
+    mapEntries :: Vector SpecializationMapEntry
+  , -- | @dataSize@ is the byte size of the @pData@ buffer.
+    dataSize :: Word64
+  , -- | @pData@ contains the actual constant values to specialize with.
+    data' :: Ptr ()
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (SpecializationInfo)
+#endif
+deriving instance Show SpecializationInfo
+
+instance ToCStruct SpecializationInfo where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p SpecializationInfo{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (mapEntries)) :: Word32))
+    pPMapEntries' <- ContT $ allocaBytes @SpecializationMapEntry ((Data.Vector.length (mapEntries)) * 16)
+    lift $ Data.Vector.imapM_ (\i e -> poke (pPMapEntries' `plusPtr` (16 * (i)) :: Ptr SpecializationMapEntry) (e)) (mapEntries)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr SpecializationMapEntry))) (pPMapEntries')
+    lift $ poke ((p `plusPtr` 16 :: Ptr CSize)) (CSize (dataSize))
+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr ()))) (data')
+    lift $ f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 24 :: Ptr (Ptr ()))) (zero)
+    f
+
+instance FromCStruct SpecializationInfo where
+  peekCStruct p = do
+    mapEntryCount <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))
+    pMapEntries <- peek @(Ptr SpecializationMapEntry) ((p `plusPtr` 8 :: Ptr (Ptr SpecializationMapEntry)))
+    pMapEntries' <- generateM (fromIntegral mapEntryCount) (\i -> peekCStruct @SpecializationMapEntry ((pMapEntries `advancePtrBytes` (16 * (i)) :: Ptr SpecializationMapEntry)))
+    dataSize <- peek @CSize ((p `plusPtr` 16 :: Ptr CSize))
+    pData <- peek @(Ptr ()) ((p `plusPtr` 24 :: Ptr (Ptr ())))
+    pure $ SpecializationInfo
+             pMapEntries' (coerce @CSize @Word64 dataSize) pData
+
+instance Zero SpecializationInfo where
+  zero = SpecializationInfo
+           mempty
+           zero
+           zero
+
+
+-- | VkPipelineShaderStageCreateInfo - Structure specifying parameters of a
+-- newly created pipeline shader stage
+--
+-- = Description
+--
+-- If @module@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the shader
+-- code used by the pipeline is defined by @module@. If @module@ is
+-- 'Vulkan.Core10.APIConstants.NULL_HANDLE', the shader code is defined by
+-- the chained 'Vulkan.Core10.Shader.ShaderModuleCreateInfo' if present.
+--
+-- If the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-shaderModuleIdentifier shaderModuleIdentifier>
+-- feature is enabled, applications /can/ omit shader code for @stage@ and
+-- instead provide a module identifier. This is done by including a
+-- 'Vulkan.Extensions.VK_EXT_shader_module_identifier.PipelineShaderStageModuleIdentifierCreateInfoEXT'
+-- structure with @identifierSize@ not equal to 0 in the @pNext@ chain. A
+-- shader stage created in this way is equivalent to one created using a
+-- shader module with the same identifier. The identifier allows an
+-- implementation to look up a pipeline without consuming a valid SPIR-V
+-- module. If a pipeline is not found, pipeline compilation is not possible
+-- and the implementation /must/ fail as specified by
+-- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT'.
+--
+-- When an identifier is used in lieu of a shader module, implementations
+-- /may/ fail pipeline compilation with
+-- 'Vulkan.Core10.Enums.Result.PIPELINE_COMPILE_REQUIRED' for any reason.
+--
+-- The rationale for the relaxed requirement on implementations to return a
+-- pipeline with
+-- 'Vulkan.Extensions.VK_EXT_shader_module_identifier.PipelineShaderStageModuleIdentifierCreateInfoEXT'
+-- is that layers or tools may intercept pipeline creation calls and
+-- require the full SPIR-V context to operate correctly. ICDs are not
+-- expected to fail pipeline compilation if the pipeline exists in a cache
+-- somewhere.
+--
+-- Applications /can/ use identifiers when creating pipelines with
+-- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR'.
+-- When creating such pipelines, 'Vulkan.Core10.Enums.Result.SUCCESS' /may/
+-- be returned, but subsequently fail when referencing the pipeline in a
+-- 'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'
+-- struct. Applications /must/ allow pipeline compilation to fail during
+-- link steps with
+-- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT'
+-- as it /may/ not be possible to determine if a pipeline /can/ be created
+-- from identifiers until the link step.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkPipelineShaderStageCreateInfo-descriptorHeap-11314# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-descriptorHeap descriptorHeap>
+--     feature is not enabled,
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.ShaderDescriptorSetAndBindingMappingInfoEXT'::@mappingCount@
+--     /must/ be 0
+--
+-- -   #VUID-VkPipelineShaderStageCreateInfo-pNext-11315# If the @pNext@
+--     chain specifies a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_DATA_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_DATA_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_RESOURCE_HEAP_DATA_EXT',
+--     the mapped resource in the shader /must/ be a variable with a
+--     structure type decorated with @Block@ in the @Uniform@ @Storage@
+--     @Class@
+--
+-- -   #VUID-VkPipelineShaderStageCreateInfo-pNext-11316# If the @pNext@
+--     chain specifies a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_DATA_EXT',
+--     the mapped structure /must/ not be larger than the sum of
+--     @pushDataOffset@ used in the mapping and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxPushDataSize maxPushDataSize>
+--
+-- -   #VUID-VkPipelineShaderStageCreateInfo-pNext-11317# If the @pNext@
+--     chain specifies a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_DATA_EXT',
+--     the sum of mapped structure size and @shaderRecordDataOffset@ used
+--     in the mapping /must/ not be larger than
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxShaderGroupStride maxShaderGroupStride>
+--
+-- -   #VUID-VkPipelineShaderStageCreateInfo-pNext-11318# If the @pNext@
+--     chain specifies a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     the mapped resource in the shader /must/ be one of:
+--
+--     -   A variable with a structure type decorated with @Block@ in the
+--         @Uniform@ @Storage@ @Class@
+--
+--     -   A variable with a structure type decorated with @BufferBlock@ in
+--         the @Uniform@ @Storage@ @Class@
+--
+--     -   A variable with a structure type decorated with @Block@ in the
+--         @StorageBuffer@ @Storage@ @Class@
+--
+--     -   A @OpTypeAccelerationStructureKHR@ variable
+--
+--     -   A @OpTypeAccelerationStructureNV@ variable
+--
+-- -   #VUID-VkPipelineShaderStageCreateInfo-pNext-11378# If the @pNext@
+--     chain specifies a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     the @OpArrayLength@ or @OpUntypedArrayLengthKHR@ instruction /must/
+--     not be used on that resource
+--
+-- -   #VUID-VkPipelineShaderStageCreateInfo-pNext-11399# If the @pNext@
+--     chain specifies a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_CONSTANT_OFFSET_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     and the mapped resource declaration is an array, the
+--     @pEmbeddedSampler@ member of the corresponding mapping structure
+--     /must/ be @NULL@
+--
+-- -   #VUID-VkPipelineShaderStageCreateInfo-stage-00704# If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-geometryShader geometryShader>
+--     feature is not enabled, @stage@ /must/ not be
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
+--
+-- -   #VUID-VkPipelineShaderStageCreateInfo-stage-00705# If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-tessellationShader tessellationShader>
+--     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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-meshShader meshShaders>
+--     feature is not enabled, @stage@ /must/ not be
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--
+-- -   #VUID-VkPipelineShaderStageCreateInfo-stage-02092# If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-taskShader taskShaders>
+--     feature is not enabled, @stage@ /must/ not be
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--
+-- -   #VUID-VkPipelineShaderStageCreateInfo-clustercullingShader-07813# If
+--     the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-clustercullingShader clustercullingShader>
+--     feature is not enabled, @stage@ /must/ not be
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_CLUSTER_CULLING_BIT_HUAWEI'
+--
+-- -   #VUID-VkPipelineShaderStageCreateInfo-stage-00706# @stage@ /must/
+--     not be
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_ALL_GRAPHICS',
+--     or 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_ALL'
+--
+-- -   #VUID-VkPipelineShaderStageCreateInfo-pName-00707# @pName@ /must/ be
+--     the name of an @OpEntryPoint@ in @module@ with an execution model
+--     that matches @stage@
+--
+-- -   #VUID-VkPipelineShaderStageCreateInfo-maxClipDistances-00708# If the
+--     identified entry point includes any variable in its interface that
+--     is declared with the @ClipDistance@ @BuiltIn@ decoration, that
+--     variable /must/ not have an array size greater than
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxClipDistances@
+--
+-- -   #VUID-VkPipelineShaderStageCreateInfo-maxCullDistances-00709# If the
+--     identified entry point includes any variable in its interface that
+--     is declared with the @CullDistance@ @BuiltIn@ decoration, that
+--     variable /must/ not have an array size greater than
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxCullDistances@
+--
+-- -   #VUID-VkPipelineShaderStageCreateInfo-maxCombinedClipAndCullDistances-00710#
+--     If the identified entry point includes variables in its interface
+--     that are declared with the @ClipDistance@ @BuiltIn@ decoration and
+--     variables in its interface that are declared with the @CullDistance@
+--     @BuiltIn@ decoration, those variables /must/ not have array sizes
+--     which sum to more than
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxCombinedClipAndCullDistances@
+--
+-- -   #VUID-VkPipelineShaderStageCreateInfo-maxSampleMaskWords-00711# If
+--     the identified entry point includes any variable in its interface
+--     that is declared with the
+--     'Vulkan.Core10.FundamentalTypes.SampleMask' @BuiltIn@ decoration,
+--     that variable /must/ not have an array size greater than
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxSampleMaskWords@
+--
+-- -   #VUID-VkPipelineShaderStageCreateInfo-stage-00713# If @stage@ is
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT',
+--     and the identified entry point has an @OpExecutionMode@ instruction
+--     specifying a patch size with @OutputVertices@, the patch size /must/
+--     be greater than @0@ and less than or equal to
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxTessellationPatchSize@
+--
+-- -   #VUID-VkPipelineShaderStageCreateInfo-stage-00714# If @stage@ is
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT',
+--     the identified entry point /must/ have an @OpExecutionMode@
+--     instruction specifying a maximum output vertex count that is greater
+--     than @0@ and less than or equal to
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxGeometryOutputVertices@
+--
+-- -   #VUID-VkPipelineShaderStageCreateInfo-stage-00715# If @stage@ is
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT',
+--     the identified entry point /must/ have an @OpExecutionMode@
+--     instruction specifying an invocation count that is greater than @0@
+--     and less than or equal to
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxGeometryShaderInvocations@
+--
+-- -   #VUID-VkPipelineShaderStageCreateInfo-stage-02596# If @stage@ is
+--     either
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT',
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT',
+--     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
+--     either
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT',
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT',
+--     and the identified entry point writes to @ViewportIndex@ for any
+--     primitive, it /must/ write the same value to @ViewportIndex@ for all
+--     vertices of a given primitive
+--
+-- -   #VUID-VkPipelineShaderStageCreateInfo-stage-06685# If @stage@ is
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT',
+--     and the identified entry point writes to @FragDepth@ in any
+--     execution path, all execution paths that are not exclusive to helper
+--     invocations /must/ either discard the fragment, or write or
+--     initialize the value of @FragDepth@
+--
+-- -   #VUID-VkPipelineShaderStageCreateInfo-stage-06686# If @stage@ is
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT',
+--     and the identified entry point writes to @FragStencilRefEXT@ in any
+--     execution path, all execution paths that are not exclusive to helper
+--     invocations /must/ either discard the fragment, or write or
+--     initialize the value of @FragStencilRefEXT@
+--
+-- -   #VUID-VkPipelineShaderStageCreateInfo-flags-02784# If @flags@ has
+--     the
+--     'Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT'
+--     flag set, the
+--     <https://registry.khronos.org/vulkan/specs/latest/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'
+--     flag set, the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-computeFullSubgroups computeFullSubgroups>
+--     feature /must/ be enabled
+--
+-- -   #VUID-VkPipelineShaderStageCreateInfo-flags-08988# If @flags@
+--     includes
+--     'Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT',
+--     @stage@ /must/ be one of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT',
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT'
+--
+-- -   #VUID-VkPipelineShaderStageCreateInfo-pNext-02754# If a
+--     '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'
+--     flag set
+--
+-- -   #VUID-VkPipelineShaderStageCreateInfo-pNext-02755# If a
+--     'Vulkan.Core13.Promoted_From_VK_EXT_subgroup_size_control.PipelineShaderStageRequiredSubgroupSizeCreateInfo'
+--     structure is included in the @pNext@ chain, the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-subgroupSizeControl subgroupSizeControl>
+--     feature /must/ be enabled, and @stage@ /must/ be a valid bit
+--     specified in
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-requiredSubgroupSizeStages requiredSubgroupSizeStages>
+--
+-- -   #VUID-VkPipelineShaderStageCreateInfo-pNext-02756# If a
+--     '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',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT',
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT',
+--     the local workgroup size of the shader /must/ be less than or equal
+--     to the product of
+--     'Vulkan.Core13.Promoted_From_VK_EXT_subgroup_size_control.PipelineShaderStageRequiredSubgroupSizeCreateInfo'::@requiredSubgroupSize@
+--     and
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxComputeWorkgroupSubgroups maxComputeWorkgroupSubgroups>
+--
+-- -   #VUID-VkPipelineShaderStageCreateInfo-pNext-02757# If a
+--     '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'
+--     flag set, the local workgroup size in the X dimension of the
+--     pipeline /must/ be a multiple of
+--     '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'
+--     and
+--     '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://registry.khronos.org/vulkan/specs/latest/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'
+--     flag set and @flags@ does not have the
+--     'Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT'
+--     flag set and no
+--     '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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-subgroupSize subgroupSize>
+--
+-- -   #VUID-VkPipelineShaderStageCreateInfo-module-08987# If @module@ uses
+--     the @OpTypeCooperativeMatrixKHR@ instruction with a @Scope@ equal to
+--     @Subgroup@, then the local workgroup size in the X dimension of the
+--     pipeline /must/ be a multiple of the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-sgs effective subgroup size>
+--
+-- -   #VUID-VkPipelineShaderStageCreateInfo-module-10169# If @module@ uses
+--     the @OpTypeCooperativeMatrixKHR@ instruction with a @Scope@ equal to
+--     @Workgroup@, then the local workgroup size in the X dimension of the
+--     pipeline /must/ be a multiple of the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-sgs effective subgroup size>
+--     and the total local workgroup size /must/ be a power of two multiple
+--     of the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-sgs effective subgroup size>
+--     and /must/ be less than or equal to
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-cooperativeMatrixWorkgroupScopeMaxWorkgroupSize cooperativeMatrixWorkgroupScopeMaxWorkgroupSize>
+--
+-- -   #VUID-VkPipelineShaderStageCreateInfo-stage-08771# If a shader
+--     module identifier is not specified for this @stage@, @module@ /must/
+--     be a valid 'Vulkan.Core10.Handles.ShaderModule' , or the @pNext@
+--     chain of the parent @Vk*CreateInfo@ structure /must/ set
+--     'Vulkan.Extensions.VK_KHR_pipeline_binary.PipelineBinaryInfoKHR'::@binaryCount@
+--     to a value greater than @0@, if none of the following features are
+--     enabled:
+--
+--     -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-graphicsPipelineLibrary graphicsPipelineLibrary>
+--
+--     -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance5 maintenance5>
+--
+-- -   #VUID-VkPipelineShaderStageCreateInfo-stage-06845# If a shader
+--     module identifier is not specified for this @stage@, @module@ /must/
+--     be a valid 'Vulkan.Core10.Handles.ShaderModule', or there /must/ be
+--     a valid 'Vulkan.Core10.Shader.ShaderModuleCreateInfo' structure in
+--     the @pNext@ chain , or the @pNext@ chain of the parent
+--     @Vk*CreateInfo@ structure /must/ set
+--     'Vulkan.Extensions.VK_KHR_pipeline_binary.PipelineBinaryInfoKHR'::@binaryCount@
+--     to a value greater than @0@,
+--
+-- -   #VUID-VkPipelineShaderStageCreateInfo-stage-06844# If a shader
+--     module identifier is specified for this @stage@, the @pNext@ chain
+--     /must/ not include a 'Vulkan.Core10.Shader.ShaderModuleCreateInfo'
+--     structure
+--
+-- -   #VUID-VkPipelineShaderStageCreateInfo-stage-06848# If a shader
+--     module identifier is specified for this @stage@, @module@ /must/ be
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-VkPipelineShaderStageCreateInfo-pSpecializationInfo-06849# If
+--     a shader module identifier is not specified, the shader code used by
+--     the pipeline /must/ be valid as described by the
+--     <https://registry.khronos.org/vulkan/specs/latest/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
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkPipelineShaderStageCreateInfo-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO'
+--
+-- -   #VUID-VkPipelineShaderStageCreateInfo-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_debug_utils.DebugUtilsObjectNameInfoEXT',
+--     'Vulkan.Core14.Promoted_From_VK_EXT_pipeline_robustness.PipelineRobustnessCreateInfo',
+--     'Vulkan.Extensions.VK_EXT_shader_module_identifier.PipelineShaderStageModuleIdentifierCreateInfoEXT',
+--     'Vulkan.Extensions.VK_AMDX_shader_enqueue.PipelineShaderStageNodeCreateInfoAMDX',
+--     'Vulkan.Core13.Promoted_From_VK_EXT_subgroup_size_control.PipelineShaderStageRequiredSubgroupSizeCreateInfo',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.ShaderDescriptorSetAndBindingMappingInfoEXT',
+--     'Vulkan.Core10.Shader.ShaderModuleCreateInfo', or
+--     'Vulkan.Extensions.VK_EXT_validation_cache.ShaderModuleValidationCacheCreateInfoEXT'
+--
+-- -   #VUID-VkPipelineShaderStageCreateInfo-sType-unique# The @sType@
+--     value of each structure in the @pNext@ chain /must/ be unique
+--
+-- -   #VUID-VkPipelineShaderStageCreateInfo-flags-parameter# @flags@
+--     /must/ be a valid combination of
+--     'Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PipelineShaderStageCreateFlagBits'
+--     values
+--
+-- -   #VUID-VkPipelineShaderStageCreateInfo-stage-parameter# @stage@
+--     /must/ be a valid
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits' value
+--
+-- -   #VUID-VkPipelineShaderStageCreateInfo-module-parameter# If @module@
+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @module@ /must/ be
+--     a valid 'Vulkan.Core10.Handles.ShaderModule' handle
+--
+-- -   #VUID-VkPipelineShaderStageCreateInfo-pName-parameter# @pName@
+--     /must/ be a null-terminated UTF-8 string
+--
+-- -   #VUID-VkPipelineShaderStageCreateInfo-pSpecializationInfo-parameter#
+--     If @pSpecializationInfo@ is not @NULL@, @pSpecializationInfo@ /must/
+--     be a valid pointer to a valid 'SpecializationInfo' structure
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
+-- 'ComputePipelineCreateInfo',
+-- 'Vulkan.Extensions.VK_AMDX_shader_enqueue.ExecutionGraphPipelineCreateInfoAMDX',
+-- 'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo',
+-- 'Vulkan.Extensions.VK_NV_device_generated_commands.GraphicsShaderGroupCreateInfoNV',
+-- 'Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PipelineShaderStageCreateFlags',
+-- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingPipelineCreateInfoKHR',
+-- 'Vulkan.Extensions.VK_NV_ray_tracing.RayTracingPipelineCreateInfoNV',
+-- 'Vulkan.Core10.Handles.ShaderModule',
+-- 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits',
+-- 'SpecializationInfo', 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PipelineShaderStageCreateInfo (es :: [Type]) = PipelineShaderStageCreateInfo
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
+    next :: Chain es
+  , -- | @flags@ is a bitmask of
+    -- 'Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PipelineShaderStageCreateFlagBits'
+    -- specifying how the pipeline shader stage will be generated.
+    flags :: PipelineShaderStageCreateFlags
+  , -- | @stage@ is a
+    -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits' value
+    -- specifying a single pipeline stage.
+    stage :: ShaderStageFlagBits
+  , -- | @module@ is optionally a 'Vulkan.Core10.Handles.ShaderModule' object
+    -- containing the shader code for this stage. The implementation /must/ not
+    -- access this object outside of the duration of the command this structure
+    -- is passed to.
+    module' :: ShaderModule
+  , -- | @pName@ is a pointer to a null-terminated UTF-8 string specifying the
+    -- entry point name of the shader for this stage.
+    name :: ByteString
+  , -- | @pSpecializationInfo@ is a pointer to a 'SpecializationInfo' structure,
+    -- as described in
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-specialization-constants Specialization Constants>,
+    -- or @NULL@.
+    specializationInfo :: Maybe SpecializationInfo
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PipelineShaderStageCreateInfo (es :: [Type]))
+#endif
+deriving instance Show (Chain es) => Show (PipelineShaderStageCreateInfo es)
+
+instance Extensible PipelineShaderStageCreateInfo where
+  extensibleTypeName = "PipelineShaderStageCreateInfo"
+  setNext PipelineShaderStageCreateInfo{..} next' = PipelineShaderStageCreateInfo{next = next', ..}
+  getNext PipelineShaderStageCreateInfo{..} = next
+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends PipelineShaderStageCreateInfo e => b) -> Maybe b
+  extends _ f
+    | Just Refl <- eqT @e @ShaderDescriptorSetAndBindingMappingInfoEXT = Just f
+    | Just Refl <- eqT @e @PipelineShaderStageNodeCreateInfoAMDX = Just f
+    | Just Refl <- eqT @e @PipelineRobustnessCreateInfo = Just f
+    | Just Refl <- eqT @e @PipelineShaderStageModuleIdentifierCreateInfoEXT = Just f
+    | Just Refl <- eqT @e @PipelineShaderStageRequiredSubgroupSizeCreateInfo = Just f
+    | Just Refl <- eqT @e @DebugUtilsObjectNameInfoEXT = Just f
+    | Just Refl <- eqT @e @ShaderModuleValidationCacheCreateInfoEXT = Just f
+    | Just Refl <- eqT @e @(ShaderModuleCreateInfo '[]) = Just f
+    | otherwise = Nothing
+
+instance ( Extendss PipelineShaderStageCreateInfo es
+         , PokeChain es ) => ToCStruct (PipelineShaderStageCreateInfo es) where
+  withCStruct x f = allocaBytes 48 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PipelineShaderStageCreateInfo{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO)
+    pNext'' <- fmap castPtr . ContT $ withChain (next)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
+    lift $ poke ((p `plusPtr` 16 :: Ptr PipelineShaderStageCreateFlags)) (flags)
+    lift $ poke ((p `plusPtr` 20 :: Ptr ShaderStageFlagBits)) (stage)
+    lift $ poke ((p `plusPtr` 24 :: Ptr ShaderModule)) (module')
+    pName'' <- ContT $ useAsCString (name)
+    lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr CChar))) pName''
+    pSpecializationInfo'' <- case (specializationInfo) of
+      Nothing -> pure nullPtr
+      Just j -> ContT $ withCStruct (j)
+    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr SpecializationInfo))) pSpecializationInfo''
+    lift $ f
+  cStructSize = 48
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO)
+    pNext' <- fmap castPtr . ContT $ withZeroChain @es
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
+    lift $ poke ((p `plusPtr` 20 :: Ptr ShaderStageFlagBits)) (zero)
+    pName'' <- ContT $ useAsCString (mempty)
+    lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr CChar))) pName''
+    lift $ f
+
+instance ( Extendss PipelineShaderStageCreateInfo es
+         , PeekChain es ) => FromCStruct (PipelineShaderStageCreateInfo es) where
+  peekCStruct p = do
+    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
+    next <- peekChain (castPtr pNext)
+    flags <- peek @PipelineShaderStageCreateFlags ((p `plusPtr` 16 :: Ptr PipelineShaderStageCreateFlags))
+    stage <- peek @ShaderStageFlagBits ((p `plusPtr` 20 :: Ptr ShaderStageFlagBits))
+    module' <- peek @ShaderModule ((p `plusPtr` 24 :: Ptr ShaderModule))
+    pName <- packCString =<< peek ((p `plusPtr` 32 :: Ptr (Ptr CChar)))
+    pSpecializationInfo <- peek @(Ptr SpecializationInfo) ((p `plusPtr` 40 :: Ptr (Ptr SpecializationInfo)))
+    pSpecializationInfo' <- maybePeek (\j -> peekCStruct @SpecializationInfo (j)) pSpecializationInfo
+    pure $ PipelineShaderStageCreateInfo
+             next flags stage module' pName pSpecializationInfo'
+
+instance es ~ '[] => Zero (PipelineShaderStageCreateInfo es) where
+  zero = PipelineShaderStageCreateInfo
+           ()
+           zero
+           zero
+           zero
+           mempty
+           Nothing
+
+
+-- | VkComputePipelineCreateInfo - Structure specifying parameters of a newly
+-- created compute pipeline
+--
+-- = Description
+--
+-- The parameters @basePipelineHandle@ and @basePipelineIndex@ are
+-- described in more detail in
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-pipeline-derivatives Pipeline Derivatives>.
+--
+-- If the @pNext@ chain includes a
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.PipelineCreateFlags2CreateInfo'
+-- structure,
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.PipelineCreateFlags2CreateInfo'::@flags@
+-- from that structure is used instead of @flags@ from this structure.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkComputePipelineCreateInfo-None-09497# If the @pNext@ chain
+--     does not include a
+--     'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.PipelineCreateFlags2CreateInfo'
+--     structure, @flags@ /must/ be a valid combination of
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits'
+--     values
+--
+-- -   #VUID-VkComputePipelineCreateInfo-flags-07984# If @flags@ contains
+--     the
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'
+--     flag, and @basePipelineIndex@ is -1, @basePipelineHandle@ /must/ be
+--     a valid compute 'Vulkan.Core10.Handles.Pipeline' handle
+--
+-- -   #VUID-VkComputePipelineCreateInfo-flags-07985# If @flags@ contains
+--     the
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'
+--     flag, and @basePipelineHandle@ is
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', @basePipelineIndex@ /must/
+--     be a valid index into the calling command’s @pCreateInfos@ parameter
+--
+-- -   #VUID-VkComputePipelineCreateInfo-flags-07986# If @flags@ contains
+--     the
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'
+--     flag, @basePipelineIndex@ /must/ be -1 or @basePipelineHandle@
+--     /must/ be 'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-VkComputePipelineCreateInfo-layout-07987# If a push constant
+--     block is declared in a shader and @layout@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', a push constant range in
+--     @layout@ /must/ match the shader stage
+--
+-- -   #VUID-VkComputePipelineCreateInfo-layout-10069# If a push constant
+--     block is declared in a shader and @layout@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', the block must be
+--     contained inside the push constant range in @layout@ that matches
+--     the stage
+--
+-- -   #VUID-VkComputePipelineCreateInfo-layout-07988# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-resources resource variable>
+--     is declared in a shader and @layout@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', the corresponding
+--     descriptor set in @layout@ /must/ match the shader stage
+--
+-- -   #VUID-VkComputePipelineCreateInfo-layout-07990# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-resources resource variable>
+--     is declared in a shader, @layout@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the descriptor type is
+--     not
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_MUTABLE_EXT',
+--     the corresponding descriptor set in @layout@ /must/ match the
+--     descriptor type
+--
+-- -   #VUID-VkComputePipelineCreateInfo-layout-07991# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-resources resource variable>
+--     is declared in a shader as an array and @layout@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', the corresponding
+--     descriptor binding used to create @layout@ /must/ have a
+--     @descriptorCount@ that is greater than or equal to the length of the
+--     array
+--
+-- -   #VUID-VkComputePipelineCreateInfo-None-10391# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-resources resource variables>
+--     is declared in a shader as an array of descriptors, then the
+--     descriptor type of that variable /must/ not be
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK'
+--
+-- -   #VUID-VkComputePipelineCreateInfo-flags-11798# If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shader64BitIndexing shader64BitIndexing>
+--     feature is not enabled, @flags@ /must/ not contain
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_64_BIT_INDEXING_BIT_EXT'
+--
+-- -   #VUID-VkComputePipelineCreateInfo-pipelineCreationCacheControl-02878#
+--     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'
+--     nor
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT'
+--
+-- -   #VUID-VkComputePipelineCreateInfo-pipelineProtectedAccess-07368# If
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineProtectedAccess pipelineProtectedAccess>
+--     feature is not enabled, @flags@ /must/ not include
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT'
+--     nor
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT'
+--
+-- -   #VUID-VkComputePipelineCreateInfo-flags-07369# @flags@ /must/ not
+--     include both
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT'
+--     and
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT'
+--
+-- -   #VUID-VkComputePipelineCreateInfo-flags-11311# If
+--     'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlags2CreateInfoKHR'::@flags@
+--     includes
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT',
+--     @layout@ /must/ be 'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-VkComputePipelineCreateInfo-flags-11312# If
+--     'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlags2CreateInfoKHR'::@flags@
+--     includes
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT',
+--     all shader variables in the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-resources shader resource interface>
+--     with a 'Vulkan.Core10.Handles.DescriptorSet' and @Binding@
+--     decoration /must/ have a mapping declared in
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.ShaderDescriptorSetAndBindingMappingInfoEXT'::@pMappings@
+--
+-- -   #VUID-VkComputePipelineCreateInfo-flags-03365# @flags@ /must/ not
+--     include
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR'
+--
+-- -   #VUID-VkComputePipelineCreateInfo-flags-03366# @flags@ /must/ not
+--     include
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR'
+--
+-- -   #VUID-VkComputePipelineCreateInfo-flags-03367# @flags@ /must/ not
+--     include
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR'
+--
+-- -   #VUID-VkComputePipelineCreateInfo-flags-03368# @flags@ /must/ not
+--     include
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR'
+--
+-- -   #VUID-VkComputePipelineCreateInfo-flags-03369# @flags@ /must/ not
+--     include
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR'
+--
+-- -   #VUID-VkComputePipelineCreateInfo-flags-03370# @flags@ /must/ not
+--     include
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR'
+--
+-- -   #VUID-VkComputePipelineCreateInfo-flags-03576# @flags@ /must/ not
+--     include
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR'
+--
+-- -   #VUID-VkComputePipelineCreateInfo-flags-04945# @flags@ /must/ not
+--     include
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV'
+--
+-- -   #VUID-VkComputePipelineCreateInfo-flags-09007# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-deviceGeneratedComputePipelines ::deviceGeneratedComputePipelines>
+--     feature is not enabled, @flags@ /must/ not include
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV'
+--
+-- -   #VUID-VkComputePipelineCreateInfo-flags-09008# If @flags@ includes
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV',
+--     then the @pNext@ chain /must/ include a pointer to a valid instance
+--     of
+--     'Vulkan.Extensions.VK_NV_device_generated_commands_compute.ComputePipelineIndirectBufferInfoNV'
+--     specifying the address where the pipeline’s metadata will be saved
+--
+-- -   #VUID-VkComputePipelineCreateInfo-flags-11007# If @flags@ includes
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXT',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-deviceGeneratedCommands ::deviceGeneratedCommands>
+--     feature /must/ be enabled
+--
+-- -   #VUID-VkComputePipelineCreateInfo-stage-00701# The @stage@ member of
+--     @stage@ /must/ be
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT'
+--
+-- -   #VUID-VkComputePipelineCreateInfo-stage-00702# The shader code for
+--     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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces Shader Interfaces>
+--     chapter
+--
+-- -   #VUID-VkComputePipelineCreateInfo-layout-01687# If @layout@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', the number of resources in
+--     @layout@ accessible to the compute shader stage /must/ be less than
+--     or equal to
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxPerStageResources@
+--
+-- -   #VUID-VkComputePipelineCreateInfo-shaderEnqueue-09177# If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-shaderEnqueue shaderEnqueue>
+--     feature is not enabled, @flags@ /must/ not include
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR'
+--
+-- -   #VUID-VkComputePipelineCreateInfo-flags-09178# If @flags@ does not
+--     include
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR',
+--     the shader specified by @stage@ /must/ not declare the
+--     @ShaderEnqueueAMDX@ capability
+--
+-- -   #VUID-VkComputePipelineCreateInfo-pipelineStageCreationFeedbackCount-06566#
+--     If
+--     'Vulkan.Core13.Promoted_From_VK_EXT_pipeline_creation_feedback.PipelineCreationFeedbackCreateInfo'::@pipelineStageCreationFeedbackCount@
+--     is not @0@, it /must/ be @1@
+--
+-- -   #VUID-VkComputePipelineCreateInfo-flags-07367# @flags@ /must/ not
+--     include
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_KHR'
+--
+-- -   #VUID-VkComputePipelineCreateInfo-flags-11593# If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-micromap ::micromap>
+--     feature is not enabled, @flags@ /must/ not include
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_KHR'
+--
+-- -   #VUID-VkComputePipelineCreateInfo-flags-07996# @flags@ /must/ not
+--     include
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV'
+--
+-- -   #VUID-VkComputePipelineCreateInfo-layout-12396# If @layout@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', it /must/ not have been
+--     created with
+--     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT'
+--
+-- -   #VUID-VkComputePipelineCreateInfo-None-11367# If
+--     'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlags2CreateInfoKHR'::@flags@
+--     does not include
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT',
+--     @layout@ /must/ not be 'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkComputePipelineCreateInfo-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO'
+--
+-- -   #VUID-VkComputePipelineCreateInfo-pNext-pNext# Each @pNext@ member
+--     of any structure (including this one) in the @pNext@ chain /must/ be
+--     either @NULL@ or a pointer to a valid instance of
+--     'Vulkan.Extensions.VK_NV_device_generated_commands_compute.ComputePipelineIndirectBufferInfoNV',
+--     'Vulkan.Extensions.VK_KHR_pipeline_binary.PipelineBinaryInfoKHR',
+--     'Vulkan.Extensions.VK_AMD_pipeline_compiler_control.PipelineCompilerControlCreateInfoAMD',
+--     'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.PipelineCreateFlags2CreateInfo',
+--     'Vulkan.Core13.Promoted_From_VK_EXT_pipeline_creation_feedback.PipelineCreationFeedbackCreateInfo',
+--     'Vulkan.Core14.Promoted_From_VK_EXT_pipeline_robustness.PipelineRobustnessCreateInfo',
+--     or
+--     'Vulkan.Extensions.VK_HUAWEI_subpass_shading.SubpassShadingPipelineCreateInfoHUAWEI'
+--
+-- -   #VUID-VkComputePipelineCreateInfo-sType-unique# The @sType@ value of
+--     each structure in the @pNext@ chain /must/ be unique
+--
+-- -   #VUID-VkComputePipelineCreateInfo-stage-parameter# @stage@ /must/ be
+--     a valid 'PipelineShaderStageCreateInfo' structure
+--
+-- -   #VUID-VkComputePipelineCreateInfo-layout-parameter# If @layout@ is
+--     not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @layout@ /must/ be a
+--     valid 'Vulkan.Core10.Handles.PipelineLayout' handle
+--
+-- -   #VUID-VkComputePipelineCreateInfo-commonparent# Both of
+--     @basePipelineHandle@, and @layout@ 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_VERSION_1_0 VK_VERSION_1_0>,
+-- 'Vulkan.Core10.Handles.Pipeline',
+-- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlags',
+-- 'Vulkan.Core10.Handles.PipelineLayout', 'PipelineShaderStageCreateInfo',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'createComputePipelines',
+-- 'Vulkan.Extensions.VK_NV_device_generated_commands_compute.getPipelineIndirectMemoryRequirementsNV'
+data ComputePipelineCreateInfo (es :: [Type]) = ComputePipelineCreateInfo
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
+    next :: Chain es
+  , -- | @flags@ is a bitmask of
+    -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits'
+    -- specifying how the pipeline will be generated.
+    flags :: PipelineCreateFlags
+  , -- | @stage@ is a 'PipelineShaderStageCreateInfo' structure describing the
+    -- compute shader.
+    stage :: SomeStruct PipelineShaderStageCreateInfo
+  , -- | @layout@ is the description of binding locations used by both the
+    -- pipeline and descriptor sets used with the pipeline. If
+    -- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceProperties'::@apiVersion@
+    -- is greater than or equal to Vulkan 1.3 or
+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance4 VK_KHR_maintenance4>
+    -- is enabled @layout@ /must/ not be accessed by the implementation outside
+    -- of the duration of the command this structure is passed to.
+    layout :: PipelineLayout
+  , -- | @basePipelineHandle@ is a pipeline to derive from.
+    basePipelineHandle :: Pipeline
+  , -- | @basePipelineIndex@ is an index into the @pCreateInfos@ parameter to use
+    -- as a pipeline to derive from.
+    basePipelineIndex :: Int32
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (ComputePipelineCreateInfo (es :: [Type]))
+#endif
+deriving instance Show (Chain es) => Show (ComputePipelineCreateInfo es)
+
+instance Extensible ComputePipelineCreateInfo where
+  extensibleTypeName = "ComputePipelineCreateInfo"
+  setNext ComputePipelineCreateInfo{..} next' = ComputePipelineCreateInfo{next = next', ..}
+  getNext ComputePipelineCreateInfo{..} = next
+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends ComputePipelineCreateInfo e => b) -> Maybe b
+  extends _ f
+    | Just Refl <- eqT @e @PipelineRobustnessCreateInfo = Just f
+    | Just Refl <- eqT @e @PipelineCompilerControlCreateInfoAMD = Just f
+    | Just Refl <- eqT @e @SubpassShadingPipelineCreateInfoHUAWEI = Just f
+    | Just Refl <- eqT @e @PipelineCreationFeedbackCreateInfo = Just f
+    | Just Refl <- eqT @e @PipelineBinaryInfoKHR = Just f
+    | Just Refl <- eqT @e @PipelineCreateFlags2CreateInfo = Just f
+    | Just Refl <- eqT @e @ComputePipelineIndirectBufferInfoNV = Just f
+    | otherwise = Nothing
+
+instance ( Extendss ComputePipelineCreateInfo es
+         , PokeChain es ) => ToCStruct (ComputePipelineCreateInfo es) where
+  withCStruct x f = allocaBytes 96 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p ComputePipelineCreateInfo{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO)
+    pNext'' <- fmap castPtr . ContT $ withChain (next)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
+    lift $ poke ((p `plusPtr` 16 :: Ptr PipelineCreateFlags)) (flags)
+    ContT $ pokeSomeCStruct (forgetExtensions ((p `plusPtr` 24 :: Ptr (PipelineShaderStageCreateInfo _)))) (stage) . ($ ())
+    lift $ poke ((p `plusPtr` 72 :: Ptr PipelineLayout)) (layout)
+    lift $ poke ((p `plusPtr` 80 :: Ptr Pipeline)) (basePipelineHandle)
+    lift $ poke ((p `plusPtr` 88 :: Ptr Int32)) (basePipelineIndex)
+    lift $ f
+  cStructSize = 96
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO)
+    pNext' <- fmap castPtr . ContT $ withZeroChain @es
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
+    ContT $ pokeSomeCStruct (forgetExtensions ((p `plusPtr` 24 :: Ptr (PipelineShaderStageCreateInfo _)))) ((SomeStruct zero)) . ($ ())
+    lift $ poke ((p `plusPtr` 88 :: Ptr Int32)) (zero)
+    lift $ f
+
+instance ( Extendss ComputePipelineCreateInfo es
+         , PeekChain es ) => FromCStruct (ComputePipelineCreateInfo es) where
+  peekCStruct p = do
+    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
+    next <- peekChain (castPtr pNext)
+    flags <- peek @PipelineCreateFlags ((p `plusPtr` 16 :: Ptr PipelineCreateFlags))
+    stage <- peekSomeCStruct (forgetExtensions ((p `plusPtr` 24 :: Ptr (PipelineShaderStageCreateInfo _))))
+    layout <- peek @PipelineLayout ((p `plusPtr` 72 :: Ptr PipelineLayout))
+    basePipelineHandle <- peek @Pipeline ((p `plusPtr` 80 :: Ptr Pipeline))
+    basePipelineIndex <- peek @Int32 ((p `plusPtr` 88 :: Ptr Int32))
+    pure $ ComputePipelineCreateInfo
+             next flags stage layout basePipelineHandle basePipelineIndex
+
+instance es ~ '[] => Zero (ComputePipelineCreateInfo es) where
+  zero = ComputePipelineCreateInfo
+           ()
+           zero
+           (SomeStruct zero)
+           zero
+           zero
+           zero
+
diff --git a/src/Vulkan/Core10/ComputePipeline.hs-boot b/src/Vulkan/Core10/ComputePipeline.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core10/ComputePipeline.hs-boot
@@ -0,0 +1,52 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "ComputePipeline"
+module Vulkan.Core10.ComputePipeline  ( ComputePipelineCreateInfo
+                                      , PipelineShaderStageCreateInfo
+                                      , SpecializationInfo
+                                      , SpecializationMapEntry
+                                      ) 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)
+type role ComputePipelineCreateInfo nominal
+data ComputePipelineCreateInfo (es :: [Type])
+
+instance ( Extendss ComputePipelineCreateInfo es
+         , PokeChain es ) => ToCStruct (ComputePipelineCreateInfo es)
+instance Show (Chain es) => Show (ComputePipelineCreateInfo es)
+
+instance ( Extendss ComputePipelineCreateInfo es
+         , PeekChain es ) => FromCStruct (ComputePipelineCreateInfo es)
+
+
+type role PipelineShaderStageCreateInfo nominal
+data PipelineShaderStageCreateInfo (es :: [Type])
+
+instance ( Extendss PipelineShaderStageCreateInfo es
+         , PokeChain es ) => ToCStruct (PipelineShaderStageCreateInfo es)
+instance Show (Chain es) => Show (PipelineShaderStageCreateInfo es)
+
+instance ( Extendss PipelineShaderStageCreateInfo es
+         , PeekChain es ) => FromCStruct (PipelineShaderStageCreateInfo es)
+
+
+data SpecializationInfo
+
+instance ToCStruct SpecializationInfo
+instance Show SpecializationInfo
+
+instance FromCStruct SpecializationInfo
+
+
+data SpecializationMapEntry
+
+instance ToCStruct SpecializationMapEntry
+instance Show SpecializationMapEntry
+
+instance FromCStruct SpecializationMapEntry
+
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
@@ -80,6 +80,7 @@
 import Vulkan.Core10.Handles (Buffer)
 import Vulkan.Core10.Handles (BufferView)
 import Vulkan.CStruct.Extends (Chain)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_data_graph (DataGraphProcessingEngineCreateInfoARM)
 import Vulkan.Core10.Handles (DescriptorPool)
 import Vulkan.Core10.Handles (DescriptorPool(..))
 import Vulkan.Core10.Enums.DescriptorPoolCreateFlagBits (DescriptorPoolCreateFlags)
@@ -127,6 +128,7 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (WriteDescriptorSetAccelerationStructureKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing (WriteDescriptorSetAccelerationStructureNV)
 import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_inline_uniform_block (WriteDescriptorSetInlineUniformBlock)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_tensors (WriteDescriptorSetTensorARM)
 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))
@@ -155,7 +157,7 @@
 --
 -- -   #VUID-vkCreateDescriptorSetLayout-support-09582# If the descriptor
 --     layout exceeds the limits reported through the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits physical device limits>,
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits physical device limits>,
 --     then
 --     'Vulkan.Core11.Promoted_From_VK_KHR_maintenance3.getDescriptorSetLayoutSupport'
 --     /must/ have returned
@@ -189,10 +191,14 @@
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -209,7 +215,7 @@
                              -- structure specifying the state of the descriptor set layout object.
                              (DescriptorSetLayoutCreateInfo a)
                           -> -- | @pAllocator@ controls host memory allocation as described in the
-                             -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                             -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
                              -- chapter.
                              ("allocator" ::: Maybe AllocationCallbacks)
                           -> io (DescriptorSetLayout)
@@ -304,7 +310,7 @@
                            -> -- | @descriptorSetLayout@ is the descriptor set layout to destroy.
                               DescriptorSetLayout
                            -> -- | @pAllocator@ controls host memory allocation as described in the
-                              -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                              -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
                               -- chapter.
                               ("allocator" ::: Maybe AllocationCallbacks)
                            -> io ()
@@ -355,6 +361,9 @@
 --     @pDescriptorPool@ /must/ be a valid pointer to a
 --     'Vulkan.Core10.Handles.DescriptorPool' handle
 --
+-- -   #VUID-vkCreateDescriptorPool-device-queuecount# The device /must/
+--     have been created with at least @1@ queue
+--
 -- == Return Codes
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
@@ -363,12 +372,16 @@
 --
 -- [<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.Extensions.VK_EXT_descriptor_indexing.ERROR_FRAGMENTATION_EXT'
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
 --
---     -   'Vulkan.Extensions.VK_EXT_descriptor_indexing.ERROR_FRAGMENTATION_EXT'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -385,7 +398,7 @@
                         -- specifying the state of the descriptor pool object.
                         (DescriptorPoolCreateInfo a)
                      -> -- | @pAllocator@ controls host memory allocation as described in the
-                        -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                        -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
                         -- chapter.
                         ("allocator" ::: Maybe AllocationCallbacks)
                      -> io (DescriptorPool)
@@ -488,7 +501,7 @@
                       -> -- | @descriptorPool@ is the descriptor pool to destroy.
                          DescriptorPool
                       -> -- | @pAllocator@ controls host memory allocation as described in the
-                         -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                         -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
                          -- chapter.
                          ("allocator" ::: Maybe AllocationCallbacks)
                       -> io ()
@@ -556,8 +569,11 @@
 --     -   'Vulkan.Core10.Enums.Result.SUCCESS'
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
---     None
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -578,11 +594,11 @@
   unless (vkResetDescriptorPoolPtr /= nullFunPtr) $
     throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkResetDescriptorPool is null" Nothing Nothing
   let vkResetDescriptorPool' = mkVkResetDescriptorPool vkResetDescriptorPoolPtr
-  _ <- traceAroundEvent "vkResetDescriptorPool" (vkResetDescriptorPool'
+  r <- traceAroundEvent "vkResetDescriptorPool" (vkResetDescriptorPool'
                                                    (deviceHandle (device))
                                                    (descriptorPool)
                                                    (flags))
-  pure $ ()
+  when (r < SUCCESS) (throwIO (VulkanException r))
 
 
 foreign import ccall
@@ -610,18 +626,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-binding consumed>.
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-binding consumed>.
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-binding consumed>.
 --
 -- -   Descriptor bindings with descriptor type of
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK'
 --     /can/ be undefined when the descriptor set is
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-binding consumed>;
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-binding consumed>;
 --     though values in that block will be undefined.
 --
 -- -   Entries that are not used by a pipeline /can/ have undefined
@@ -669,14 +685,12 @@
 --     @pAllocateInfo->descriptorSetCount@
 --     'Vulkan.Core10.Handles.DescriptorSet' handles
 --
+-- -   #VUID-vkAllocateDescriptorSets-device-queuecount# The device /must/
+--     have been created with at least @1@ queue
+--
 -- -   #VUID-vkAllocateDescriptorSets-pAllocateInfo::descriptorSetCount-arraylength#
 --     @pAllocateInfo->descriptorSetCount@ /must/ be greater than @0@
 --
--- == Host Synchronization
---
--- -   Host access to @pAllocateInfo->descriptorPool@ /must/ be externally
---     synchronized
---
 -- == Return Codes
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
@@ -685,14 +699,18 @@
 --
 -- [<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_FRAGMENTED_POOL'
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_FRAGMENTED_POOL'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_POOL_MEMORY'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -803,8 +821,11 @@
 --     -   'Vulkan.Core10.Enums.Result.SUCCESS'
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
---     None
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -830,12 +851,12 @@
   let vkFreeDescriptorSets' = mkVkFreeDescriptorSets vkFreeDescriptorSetsPtr
   pPDescriptorSets <- ContT $ allocaBytes @DescriptorSet ((Data.Vector.length (descriptorSets)) * 8)
   lift $ Data.Vector.imapM_ (\i e -> poke (pPDescriptorSets `plusPtr` (8 * (i)) :: Ptr DescriptorSet) (e)) (descriptorSets)
-  _ <- lift $ traceAroundEvent "vkFreeDescriptorSets" (vkFreeDescriptorSets'
+  r <- lift $ traceAroundEvent "vkFreeDescriptorSets" (vkFreeDescriptorSets'
                                                          (deviceHandle (device))
                                                          (descriptorPool)
                                                          ((fromIntegral (Data.Vector.length $ (descriptorSets)) :: Word32))
                                                          (pPDescriptorSets))
-  pure $ ()
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
 
 
 foreign import ccall
@@ -864,15 +885,21 @@
 -- 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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle recording or executable state>,
+-- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle invalid>.
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#commandbuffers-lifecycle invalid>.
 --
+-- Copying a descriptor from a descriptor set does not constitute a use of
+-- the referenced resource or view, as it is the reference itself that is
+-- copied. Applications /can/ copy a descriptor referencing a destroyed
+-- resource, and it /can/ copy an undefined descriptor. The destination
+-- descriptor becomes undefined in both cases.
+--
 -- == Valid Usage
 --
 -- -   #VUID-vkUpdateDescriptorSets-pDescriptorWrites-06236# For each
@@ -907,6 +934,8 @@
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM',
 --     or
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER'
 --     the @imageView@ member of any element of @pDescriptorWrites@[i]
@@ -928,13 +957,13 @@
 --     structure in the @pNext@ chain of @pDescriptorWrites@[i] /must/ have
 --     been created on @device@
 --
--- -   #VUID-vkUpdateDescriptorSets-pDescriptorWrites-06940# For each
+-- -   #VUID-vkUpdateDescriptorSets-pDescriptorWrites-12324# For each
 --     element i where @pDescriptorWrites@[i].@descriptorType@ is
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM'
---     or
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM',
---     the @imageView@ member of any element of @pDescriptorWrites@[i]
---     /must/ have been created on @device@
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM',
+--     elements of the @pTensorViews@ member of a
+--     'Vulkan.Extensions.VK_ARM_tensors.WriteDescriptorSetTensorARM'
+--     structure in the @pNext@ chain of @pDescriptorWrites@[i] /must/ have
+--     been created on @device@
 --
 -- -   #VUID-vkUpdateDescriptorSets-pDescriptorWrites-06493# For each
 --     element i where @pDescriptorWrites@[i].@descriptorType@ is
@@ -942,21 +971,14 @@
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER',
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM',
 --     or
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT',
 --     @pDescriptorWrites@[i].@pImageInfo@ /must/ be a valid pointer to an
 --     array of @pDescriptorWrites@[i].@descriptorCount@ valid
 --     'DescriptorImageInfo' structures
 --
--- -   #VUID-vkUpdateDescriptorSets-pDescriptorWrites-06941# For each
---     element i where @pDescriptorWrites@[i].@descriptorType@ is
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM'
---     or
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM',
---     @pDescriptorWrites@[i].@pImageInfo@ /must/ be a valid pointer to an
---     array of @pDescriptorWrites@[i].@descriptorCount@ valid
---     'DescriptorImageInfo' structures
---
 -- -   #VUID-vkUpdateDescriptorSets-None-03047# The @dstSet@ member of each
 --     element of @pDescriptorWrites@ or @pDescriptorCopies@ for bindings
 --     which were created without the
@@ -965,12 +987,12 @@
 --     '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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle pending state>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#commandbuffers-lifecycle pending state>
 --
 -- -   #VUID-vkUpdateDescriptorSets-pDescriptorWrites-06993# Host access to
 --     @pDescriptorWrites@[i].@dstSet@ and @pDescriptorCopies@[i].@dstSet@
 --     /must/ be
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#fundamentals-threadingbehavior externally synchronized>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#fundamentals-threadingbehavior externally synchronized>
 --     unless explicitly denoted otherwise for specific flags
 --
 -- == Valid Usage (Implicit)
@@ -1055,7 +1077,7 @@
 --     or equal to the size of @buffer@ minus @offset@
 --
 -- -   #VUID-VkDescriptorBufferInfo-buffer-02998# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-nullDescriptor nullDescriptor>
 --     feature is not enabled, @buffer@ /must/ not be
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE'
 --
@@ -1087,11 +1109,11 @@
     -- to the end of the buffer.
     --
     -- When setting @range@ to 'Vulkan.Core10.APIConstants.WHOLE_SIZE', the
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#buffer-info-effective-range effective range>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#buffer-info-effective-range effective range>
     -- /must/ not be larger than the maximum range for the descriptor type
-    -- (<https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxUniformBufferRange maxUniformBufferRange>
+    -- (<https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxUniformBufferRange maxUniformBufferRange>
     -- or
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxStorageBufferRange maxStorageBufferRange>).
+    -- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -1166,13 +1188,13 @@
 --     set
 --
 -- -   #VUID-VkDescriptorImageInfo-descriptorType-06713# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-image2DViewOf3D image2DViewOf3D>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-image2DViewOf3D image2DViewOf3D>
 --     feature is not enabled or @descriptorType@ is not
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE'
 --     then @imageView@ /must/ not be a 2D view created from a 3D image
 --
 -- -   #VUID-VkDescriptorImageInfo-descriptorType-06714# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-sampler2DViewOf3D sampler2DViewOf3D>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-sampler2DViewOf3D sampler2DViewOf3D>
 --     feature is not enabled or @descriptorType@ is not
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE'
 --     or
@@ -1206,19 +1228,13 @@
 --     then the @aspectMask@ used to create @imageView@ /must/ not include
 --     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'
 --
--- -   #VUID-VkDescriptorImageInfo-imageLayout-00344# @imageLayout@ /must/
---     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://registry.khronos.org/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>,
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-multiplanar 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 a valid
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#formats-planes-image-aspect multi-planar aspect mask>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-multiplanar-image-aspect multi-planar aspect mask>
 --     bit
 --
 -- -   #VUID-VkDescriptorImageInfo-mutableComparisonSamplers-04450# If the
@@ -1314,36 +1330,81 @@
 --
 -- = Description
 --
--- Only one of @pImageInfo@, @pBufferInfo@, or @pTexelBufferView@ members
--- 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
+-- Members of @pImageInfo@, @pBufferInfo@ and @pTexelBufferView@ are only
+-- accessed by the implementation when they correspond to a descriptor type
+-- being defined - otherwise they are ignored. The members accessed are as
+-- follows for each descriptor type:
+--
+-- -   For 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLER',
+--     only the @sampler@ member of each element of
+--     'WriteDescriptorSet'::@pImageInfo@ is accessed.
+--
+-- -   For
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',
+--     or
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT',
+--     only the @imageView@ and @imageLayout@ members of each element of
+--     'WriteDescriptorSet'::@pImageInfo@ are accessed.
+--
+-- -   For
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER',
+--     all members of each element of 'WriteDescriptorSet'::@pImageInfo@
+--     are accessed.
+--
+-- -   For
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC',
+--     or
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC',
+--     all members of each element of 'WriteDescriptorSet'::@pBufferInfo@
+--     are accessed.
+--
+-- -   For
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER'
+--     or
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER',
+--     each element of 'WriteDescriptorSet'::@pTexelBufferView@ is
+--     accessed.
+--
+-- When updating descriptor sets with a @descriptorType@ of
 -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK',
--- in which case the source data for the descriptor writes is taken from
--- the
+-- none of the @pImageInfo@, @pBufferInfo@, or @pTexelBufferView@ members
+-- are accessed, instead the source data of the descriptor update operation
+-- is taken from the
 -- 'Vulkan.Core13.Promoted_From_VK_EXT_inline_uniform_block.WriteDescriptorSetInlineUniformBlock'
--- structure included in the @pNext@ chain of 'WriteDescriptorSet', or if
--- @descriptorType@ is
+-- structure in the @pNext@ chain of 'WriteDescriptorSet'. When updating
+-- descriptor sets with a @descriptorType@ of
 -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR',
--- in which case the source data for the descriptor writes is taken from
--- the
+-- 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_KHR_acceleration_structure.WriteDescriptorSetAccelerationStructureKHR'
--- structure in the @pNext@ chain of 'WriteDescriptorSet', or if
--- @descriptorType@ is
+-- structure in the @pNext@ chain of 'WriteDescriptorSet'. When updating
+-- descriptor sets with a @descriptorType@ of
 -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV',
--- in which case the source data for the descriptor writes is taken from
--- the
+-- 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_NV_ray_tracing.WriteDescriptorSetAccelerationStructureNV'
--- structure in the @pNext@ chain of 'WriteDescriptorSet', as specified
--- below.
+-- structure in the @pNext@ chain of 'WriteDescriptorSet'. When updating
+-- descriptor sets with a @descriptorType@ of
+-- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM', none of
+-- the @pImageInfo@, @pBufferInfo@, or @pTexelBufferView@ members are
+-- accessed, instead the source data of the descriptor update operation is
+-- taken from the instance of
+-- 'Vulkan.Extensions.VK_ARM_tensors.WriteDescriptorSetTensorARM' in the
+-- @pNext@ chain of 'WriteDescriptorSet'.
 --
 -- If the
--- <https://registry.khronos.org/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
--- descriptor are discarded. A null acceleration structure descriptor
--- results in the miss shader being invoked.
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-nullDescriptor nullDescriptor>
+-- feature is enabled, the buffer, acceleration structure, tensor,
+-- 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 descriptor are
+-- discarded. A null acceleration structure descriptor results in the miss
+-- shader being invoked.
 --
 -- If the destination descriptor is a mutable descriptor, the active
 -- descriptor type for the destination descriptor becomes @descriptorType@.
@@ -1393,13 +1454,23 @@
 -- -   #VUID-VkWriteDescriptorSet-descriptorCount-00317# All consecutive
 --     bindings updated via a single 'WriteDescriptorSet' structure, except
 --     those with a @descriptorCount@ of zero, /must/ have identical
---     @descriptorType@ and @stageFlags@
+--     @descriptorType@
 --
+-- -   #VUID-VkWriteDescriptorSet-descriptorCount-10776# All consecutive
+--     bindings updated via a single 'WriteDescriptorSet' structure, except
+--     those with a @descriptorCount@ of zero, /must/ have identical
+--     @stageFlags@
+--
 -- -   #VUID-VkWriteDescriptorSet-descriptorCount-00318# All consecutive
 --     bindings updated via a single 'WriteDescriptorSet' structure, except
 --     those with a @descriptorCount@ of zero, /must/ all either use
 --     immutable samplers or /must/ all not use immutable samplers
 --
+-- -   #VUID-VkWriteDescriptorSet-descriptorCount-10777# All consecutive
+--     bindings updated via a single 'WriteDescriptorSet' structure, except
+--     those with a @descriptorCount@ of zero, /must/ have identical
+--     'Vulkan.Core12.Enums.DescriptorBindingFlagBits.DescriptorBindingFlagBits'
+--
 -- -   #VUID-VkWriteDescriptorSet-descriptorType-00319# @descriptorType@
 --     /must/ match the type of @dstBinding@ within @dstSet@
 --
@@ -1410,7 +1481,7 @@
 --     @dstArrayElement@ and @descriptorCount@ /must/ be less than or equal
 --     to the number of array elements in the descriptor set binding
 --     specified by @dstBinding@, and all applicable
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-updates-consecutive consecutive bindings>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-sets-updates-consecutive consecutive bindings>
 --
 -- -   #VUID-VkWriteDescriptorSet-descriptorType-02219# If @descriptorType@
 --     is
@@ -1437,7 +1508,7 @@
 --     or
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'
 --     and the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-nullDescriptor nullDescriptor>
 --     feature is not enabled, each element of @pTexelBufferView@ /must/
 --     not be 'Vulkan.Core10.APIConstants.NULL_HANDLE'
 --
@@ -1476,15 +1547,18 @@
 --     or
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',
 --     and the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-nullDescriptor nullDescriptor>
 --     feature is not enabled, the @imageView@ member of each element of
 --     @pImageInfo@ /must/ not be 'Vulkan.Core10.APIConstants.NULL_HANDLE'
 --
 -- -   #VUID-VkWriteDescriptorSet-descriptorType-07683# If @descriptorType@
 --     is
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM',
+--     or
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT',
---     the @imageView@ member of each element of @pImageInfo@ /must/ not be
---     'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--     then the @imageView@ member of each element of @pImageInfo@ /must/
+--     not be 'Vulkan.Core10.APIConstants.NULL_HANDLE'
 --
 -- -   #VUID-VkWriteDescriptorSet-descriptorType-02221# If @descriptorType@
 --     is
@@ -1509,6 +1583,12 @@
 --     structure whose @accelerationStructureCount@ member equals
 --     @descriptorCount@
 --
+-- -   #VUID-VkWriteDescriptorSet-descriptorType-09945# If @descriptorType@
+--     is 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM',
+--     the @pNext@ chain /must/ include a
+--     'Vulkan.Extensions.VK_ARM_tensors.WriteDescriptorSetTensorARM'
+--     structure whose @tensorViewCount@ member equals @descriptorCount@
+--
 -- -   #VUID-VkWriteDescriptorSet-descriptorType-01946# If @descriptorType@
 --     is
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',
@@ -1526,7 +1606,8 @@
 --     structure in its @pNext@ chain, then @dstSet@ /must/ have been
 --     allocated with a layout that included immutable samplers for
 --     @dstBinding@, and the corresponding immutable sampler /must/ have
---     been created with an /identically defined/
+--     been created with an
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#glossary-identically-defined identically defined>
 --     'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionInfo'
 --     object
 --
@@ -1537,10 +1618,11 @@
 --     samplers for @dstBinding@, then the @imageView@ member of each
 --     element of @pImageInfo@ which corresponds to an immutable sampler
 --     that enables
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
+--     <https://registry.khronos.org/vulkan/specs/latest/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/
+--     structure in its @pNext@ chain with an
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#glossary-identically-defined identically defined>
 --     'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionInfo'
 --     to the corresponding immutable sampler
 --
@@ -1549,7 +1631,7 @@
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER',
 --     @dstSet@ was allocated with a layout that included immutable
 --     samplers for @dstBinding@, and those samplers enable
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,
 --     then @imageView@ /must/ not be
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE'
 --
@@ -1589,9 +1671,9 @@
 --     or
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC',
 --     the @buffer@ member of each element of @pBufferInfo@ /must/ have
---     been created with
+--     been created with the
 --     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_BUFFER_BIT'
---     set
+--     usage flag set
 --
 -- -   #VUID-VkWriteDescriptorSet-descriptorType-00331# If @descriptorType@
 --     is
@@ -1599,9 +1681,9 @@
 --     or
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC',
 --     the @buffer@ member of each element of @pBufferInfo@ /must/ have
---     been created with
+--     been created with the
 --     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_STORAGE_BUFFER_BIT'
---     set
+--     usage flag set
 --
 -- -   #VUID-VkWriteDescriptorSet-descriptorType-00332# If @descriptorType@
 --     is
@@ -1609,7 +1691,7 @@
 --     or
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC',
 --     the @range@ member of each element of @pBufferInfo@, or the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#buffer-info-effective-range effective range>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#buffer-info-effective-range effective range>
 --     if @range@ is 'Vulkan.Core10.APIConstants.WHOLE_SIZE', /must/ be
 --     less than or equal to
 --     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxUniformBufferRange@
@@ -1619,8 +1701,11 @@
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER'
 --     or
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC',
---     the @range@ member of each element of @pBufferInfo@, or the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#buffer-info-effective-range effective range>
+--     and the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-shader64BitIndexing shader64BitIndexing>
+--     feature is not enabled, the @range@ member of each element of
+--     @pBufferInfo@, or the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#buffer-info-effective-range effective range>
 --     if @range@ is 'Vulkan.Core10.APIConstants.WHOLE_SIZE', /must/ be
 --     less than or equal to
 --     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxStorageBufferRange@
@@ -1629,7 +1714,7 @@
 --     is
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER',
 --     the @pTexelBufferView@
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-buffer-views-usage buffer view usage>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-buffer-views-usage buffer view usage>
 --     /must/ include
 --     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT'
 --
@@ -1637,7 +1722,7 @@
 --     is
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER',
 --     the @pTexelBufferView@
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-buffer-views-usage buffer view usage>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-buffer-views-usage buffer view usage>
 --     /must/ include
 --     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT'
 --
@@ -1648,7 +1733,7 @@
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT',
 --     the @imageView@ member of each element of @pImageInfo@ /must/ have
 --     been created with the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-views-identity-mappings identity swizzle>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-image-views-identity-mappings identity swizzle>
 --
 -- -   #VUID-VkWriteDescriptorSet-descriptorType-00337# If @descriptorType@
 --     is
@@ -1656,51 +1741,53 @@
 --     or
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER',
 --     the @imageView@ member of each element of @pImageInfo@ /must/ have
---     been created with
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT' set
+--     been created with the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT'
+--     usage flag set
 --
 -- -   #VUID-VkWriteDescriptorSet-descriptorType-04149# If @descriptorType@
 --     is
 --     '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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-sampledimage Sampled Image>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-combinedimagesampler Combined Image Sampler>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-inputattachment Input Attachment>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storageimage Storage Image>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-storageimage Storage Image>
 --
 -- -   #VUID-VkWriteDescriptorSet-descriptorType-00338# If @descriptorType@
 --     is
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT',
 --     the @imageView@ member of each element of @pImageInfo@ /must/ have
---     been created with
+--     been created with the
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT'
---     set
+--     usage flag set
 --
 -- -   #VUID-VkWriteDescriptorSet-descriptorType-00339# If @descriptorType@
 --     is
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',
 --     the @imageView@ member of each element of @pImageInfo@ /must/ have
---     been created with
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_STORAGE_BIT' set
+--     been created with the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_STORAGE_BIT'
+--     usage flag set
 --
 -- -   #VUID-VkWriteDescriptorSet-descriptorType-02752# If @descriptorType@
 --     is 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLER',
@@ -1727,15 +1814,17 @@
 --     is
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM',
 --     the @imageView@ member of each element of @pImageInfo@ /must/ have
---     been created with a view created with an @image@ created with
+--     been created with a view created with an @image@ created with the
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLE_WEIGHT_BIT_QCOM'
+--     usage flag set
 --
 -- -   #VUID-VkWriteDescriptorSet-descriptorType-06943# If @descriptorType@
 --     is
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM',
 --     the @imageView@ member of each element of @pImageInfo@ /must/ have
---     been created with a view created with an @image@ created with
+--     been created with a view created with an @image@ created with the
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLE_BLOCK_MATCH_BIT_QCOM'
+--     usage flag set
 --
 -- == Valid Usage (Implicit)
 --
@@ -1747,11 +1836,12 @@
 --     @NULL@ or a pointer to a valid instance of
 --     'Vulkan.Extensions.VK_KHR_acceleration_structure.WriteDescriptorSetAccelerationStructureKHR',
 --     'Vulkan.Extensions.VK_NV_ray_tracing.WriteDescriptorSetAccelerationStructureNV',
---     or
---     'Vulkan.Core13.Promoted_From_VK_EXT_inline_uniform_block.WriteDescriptorSetInlineUniformBlock'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_inline_uniform_block.WriteDescriptorSetInlineUniformBlock',
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkWriteDescriptorSetPartitionedAccelerationStructureNV VkWriteDescriptorSetPartitionedAccelerationStructureNV>,
+--     or 'Vulkan.Extensions.VK_ARM_tensors.WriteDescriptorSetTensorARM'
 --
 -- -   #VUID-VkWriteDescriptorSet-sType-unique# The @sType@ value of each
---     struct in the @pNext@ chain /must/ be unique
+--     structure in the @pNext@ chain /must/ be unique
 --
 -- -   #VUID-VkWriteDescriptorSet-descriptorType-parameter#
 --     @descriptorType@ /must/ be a valid
@@ -1771,9 +1861,10 @@
 -- 'Vulkan.Core10.Handles.BufferView', 'DescriptorBufferInfo',
 -- 'DescriptorImageInfo', 'Vulkan.Core10.Handles.DescriptorSet',
 -- 'Vulkan.Core10.Enums.DescriptorType.DescriptorType',
--- 'Vulkan.Extensions.VK_KHR_maintenance6.PushDescriptorSetInfoKHR',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance6.PushDescriptorSetInfo',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'Vulkan.Extensions.VK_KHR_push_descriptor.cmdPushDescriptorSetKHR',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_push_descriptor.cmdPushDescriptorSet',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_push_descriptor.cmdPushDescriptorSet',
 -- 'updateDescriptorSets'
 data WriteDescriptorSet (es :: [Type]) = WriteDescriptorSet
   { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
@@ -1811,6 +1902,10 @@
     --     or
     --     'Vulkan.Extensions.VK_NV_ray_tracing.WriteDescriptorSetAccelerationStructureNV'
     --     structure in the @pNext@ chain
+    --
+    -- -   a value matching the @descriptorCount@ of a
+    --     'Vulkan.Extensions.VK_ARM_tensors.WriteDescriptorSetTensorARM'
+    --     structure in the @pNext@ chain
     descriptorCount :: Word32
   , -- | @descriptorType@ is a
     -- 'Vulkan.Core10.Enums.DescriptorType.DescriptorType' specifying the type
@@ -1831,7 +1926,7 @@
     bufferInfo :: Vector DescriptorBufferInfo
   , -- | @pTexelBufferView@ is a pointer to an array of
     -- 'Vulkan.Core10.Handles.BufferView' handles as described in the
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-buffer-views Buffer Views>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-buffer-views Buffer Views>
     -- section or is ignored, as described below.
     texelBufferView :: Vector BufferView
   }
@@ -1847,6 +1942,7 @@
   getNext WriteDescriptorSet{..} = next
   extends :: forall e b proxy. Typeable e => proxy e -> (Extends WriteDescriptorSet e => b) -> Maybe b
   extends _ f
+    | Just Refl <- eqT @e @WriteDescriptorSetTensorARM = Just f
     | Just Refl <- eqT @e @WriteDescriptorSetAccelerationStructureNV = Just f
     | Just Refl <- eqT @e @WriteDescriptorSetAccelerationStructureKHR = Just f
     | Just Refl <- eqT @e @WriteDescriptorSetInlineUniformBlock = Just f
@@ -1981,7 +2077,7 @@
 --     @srcArrayElement@ and @descriptorCount@ /must/ be less than or equal
 --     to the number of array elements in the descriptor set binding
 --     specified by @srcBinding@, and all applicable
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-updates-consecutive consecutive bindings>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-sets-updates-consecutive consecutive bindings>
 --
 -- -   #VUID-VkCopyDescriptorSet-dstBinding-00347# @dstBinding@ /must/ be a
 --     valid binding within @dstSet@
@@ -1990,7 +2086,7 @@
 --     @dstArrayElement@ and @descriptorCount@ /must/ be less than or equal
 --     to the number of array elements in the descriptor set binding
 --     specified by @dstBinding@, and all applicable
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-updates-consecutive consecutive bindings>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-sets-updates-consecutive consecutive bindings>
 --
 -- -   #VUID-VkCopyDescriptorSet-dstBinding-02632# The type of @dstBinding@
 --     within @dstSet@ /must/ be equal to the type of @srcBinding@ within
@@ -2000,7 +2096,7 @@
 --     @dstSet@, then the source and destination ranges of descriptors
 --     /must/ not overlap, where the ranges /may/ include array elements
 --     from
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-updates-consecutive consecutive bindings>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-sets-updates-consecutive consecutive bindings>
 --
 -- -   #VUID-VkCopyDescriptorSet-srcBinding-02223# If the descriptor type
 --     of the descriptor set binding specified by @srcBinding@ is
@@ -2239,8 +2335,24 @@
 --     @NULL@, @pImmutableSamplers@ /must/ be a valid pointer to an array
 --     of @descriptorCount@ valid 'Vulkan.Core10.Handles.Sampler' handles
 --
+-- -   #VUID-VkDescriptorSetLayoutBinding-descriptorType-12200# If
+--     @descriptorType@ is
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER',
+--     and @descriptorCount@ is not @0@ and @pImmutableSamplers@ is not
+--     @NULL@, either each element of @pImmutableSamplers@ /must/ be a
+--     'Vulkan.Core10.Handles.Sampler' that enables
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
+--     or none of them enable sampler Y′CBCR conversion
+--
+-- -   #VUID-VkDescriptorSetLayoutBinding-descriptorType-12215# If
+--     @descriptorType@ is
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLER', each
+--     element of @pImmutableSamplers@ /must/ not be a
+--     'Vulkan.Core10.Handles.Sampler' object that enables
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
+--
 -- -   #VUID-VkDescriptorSetLayoutBinding-descriptorType-04604# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-inlineUniformBlock inlineUniformBlock>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-inlineUniformBlock inlineUniformBlock>
 --     feature is not enabled, @descriptorType@ /must/ not be
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK'
 --
@@ -2266,7 +2378,7 @@
 -- -   #VUID-VkDescriptorSetLayoutBinding-flags-08006# If
 --     'DescriptorSetLayoutCreateInfo'::@flags@ contains
 --     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_EMBEDDED_IMMUTABLE_SAMPLERS_BIT_EXT',
---     @descriptorCount@ /must/ less than or equal to @1@
+--     @descriptorCount@ /must/ be less than or equal to @1@
 --
 -- -   #VUID-VkDescriptorSetLayoutBinding-flags-08007# If
 --     'DescriptorSetLayoutCreateInfo'::@flags@ contains
@@ -2444,15 +2556,24 @@
 -- == Valid Usage
 --
 -- -   #VUID-VkDescriptorSetLayoutCreateInfo-binding-00279# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-perStageDescriptorSet perStageDescriptorSet>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-perStageDescriptorSet perStageDescriptorSet>
 --     feature is not enabled, or @flags@ does not contain
 --     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_PER_STAGE_BIT_NV',
 --     then the 'DescriptorSetLayoutBinding'::@binding@ members of the
 --     elements of the @pBindings@ array /must/ each have different values
 --
+-- -   #VUID-VkDescriptorSetLayoutCreateInfo-flags-10354# If @flags@
+--     contains
+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT',
+--     and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_push_descriptor VK_KHR_push_descriptor>
+--     extension is not enabled,
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-pushDescriptor pushDescriptor>
+--     /must/ be enabled
+--
 -- -   #VUID-VkDescriptorSetLayoutCreateInfo-flags-00280# If @flags@
 --     contains
---     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR',
+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT',
 --     then all elements of @pBindings@ /must/ not have a @descriptorType@
 --     of
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC'
@@ -2461,27 +2582,27 @@
 --
 -- -   #VUID-VkDescriptorSetLayoutCreateInfo-flags-02208# If @flags@
 --     contains
---     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR',
+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT',
 --     then all elements of @pBindings@ /must/ not have a @descriptorType@
 --     of
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK'
 --
 -- -   #VUID-VkDescriptorSetLayoutCreateInfo-flags-00281# If @flags@
 --     contains
---     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR',
+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT',
 --     then the total number of elements of all bindings /must/ be less
 --     than or equal to
---     'Vulkan.Extensions.VK_KHR_push_descriptor.PhysicalDevicePushDescriptorPropertiesKHR'::@maxPushDescriptors@
+--     'Vulkan.Core14.Promoted_From_VK_KHR_push_descriptor.PhysicalDevicePushDescriptorProperties'::@maxPushDescriptors@
 --
 -- -   #VUID-VkDescriptorSetLayoutCreateInfo-flags-04590# If @flags@
 --     contains
---     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR',
+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT',
 --     @flags@ /must/ not contain
 --     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT'
 --
 -- -   #VUID-VkDescriptorSetLayoutCreateInfo-flags-04591# If @flags@
 --     contains
---     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR',
+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT',
 --     @pBindings@ /must/ not have a @descriptorType@ of
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_MUTABLE_EXT'
 --
@@ -2555,13 +2676,13 @@
 --     contains
 --     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
 --     then @flags@ /must/ not contain
---     'Vulkan.Extensions.VK_VALVE_mutable_descriptor_type.DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_VALVE'
+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT'
 --
 -- -   #VUID-VkDescriptorSetLayoutCreateInfo-flags-09463# If @flags@
 --     contains
 --     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_PER_STAGE_BIT_NV',
 --     then
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-perStageDescriptorSet perStageDescriptorSet>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-perStageDescriptorSet perStageDescriptorSet>
 --     /must/ be enabled
 --
 -- -   #VUID-VkDescriptorSetLayoutCreateInfo-flags-09464# If @flags@
@@ -2585,7 +2706,7 @@
 --     'Vulkan.Extensions.VK_EXT_mutable_descriptor_type.MutableDescriptorTypeCreateInfoEXT'
 --
 -- -   #VUID-VkDescriptorSetLayoutCreateInfo-sType-unique# The @sType@
---     value of each struct in the @pNext@ chain /must/ be unique
+--     value of each structure in the @pNext@ chain /must/ be unique
 --
 -- -   #VUID-VkDescriptorSetLayoutCreateInfo-flags-parameter# @flags@
 --     /must/ be a valid combination of
@@ -2605,7 +2726,7 @@
 -- 'Vulkan.Core10.Enums.StructureType.StructureType',
 -- 'createDescriptorSetLayout',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_maintenance3.getDescriptorSetLayoutSupport',
--- 'Vulkan.Extensions.VK_KHR_maintenance3.getDescriptorSetLayoutSupportKHR'
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_maintenance3.getDescriptorSetLayoutSupport'
 data DescriptorSetLayoutCreateInfo (es :: [Type]) = DescriptorSetLayoutCreateInfo
   { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
@@ -2678,15 +2799,16 @@
 -- = Description
 --
 -- When creating a descriptor pool that will contain descriptors for
--- combined image samplers of multi-planar formats, an application needs to
--- account for non-trivial descriptor consumption when choosing the
--- @descriptorCount@ value, as indicated by
+-- combined image samplers of
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-multiplanar multi-planar formats>,
+-- an application needs to account for non-trivial descriptor consumption
+-- when choosing the @descriptorCount@ value, as indicated by
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionImageFormatProperties'::@combinedImageSamplerDescriptorCount@.
 --
 -- For simplicity the application /can/ use the
--- 'Vulkan.Extensions.VK_KHR_maintenance6.PhysicalDeviceMaintenance6PropertiesKHR'::@maxCombinedImageSamplerDescriptorCount@
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance6.PhysicalDeviceMaintenance6Properties'::@maxCombinedImageSamplerDescriptorCount@
 -- property, which is sized to accommodate any and all
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion formats that require a sampler Y′CBCR conversion>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion formats that require a sampler Y′CBCR conversion>
 -- supported by the implementation.
 --
 -- == Valid Usage
@@ -2801,7 +2923,7 @@
 -- If a @pPoolSizes@[i]::@type@ is
 -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_MUTABLE_EXT', a
 -- 'Vulkan.Extensions.VK_EXT_mutable_descriptor_type.MutableDescriptorTypeCreateInfoEXT'
--- struct in the @pNext@ chain /can/ be used to specify which mutable
+-- structure in the @pNext@ chain /can/ be used to specify which mutable
 -- descriptor types /can/ be allocated from the pool. If included in the
 -- @pNext@ chain,
 -- 'Vulkan.Extensions.VK_EXT_mutable_descriptor_type.MutableDescriptorTypeCreateInfoEXT'::@pMutableDescriptorTypeLists@[i]
@@ -2842,7 +2964,7 @@
 --
 -- -   #VUID-VkDescriptorPoolCreateInfo-descriptorPoolOverallocation-09227#
 --     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-descriptorPoolOverallocation descriptorPoolOverallocation>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-descriptorPoolOverallocation descriptorPoolOverallocation>
 --     feature is not enabled, or @flags@ does not have
 --     'Vulkan.Core10.Enums.DescriptorPoolCreateFlagBits.DESCRIPTOR_POOL_CREATE_ALLOW_OVERALLOCATION_SETS_BIT_NV'
 --     set, @maxSets@ /must/ be greater than @0@
@@ -2852,7 +2974,7 @@
 --     or
 --     'Vulkan.Core10.Enums.DescriptorPoolCreateFlagBits.DESCRIPTOR_POOL_CREATE_ALLOW_OVERALLOCATION_POOLS_BIT_NV'
 --     bits set, then
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-descriptorPoolOverallocation descriptorPoolOverallocation>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-descriptorPoolOverallocation descriptorPoolOverallocation>
 --     /must/ be enabled
 --
 -- -   #VUID-VkDescriptorPoolCreateInfo-flags-04607# If @flags@ has the
@@ -2887,6 +3009,15 @@
 --     'Vulkan.Core13.Promoted_From_VK_EXT_inline_uniform_block.DescriptorPoolInlineUniformBlockCreateInfo'
 --     structure whose @maxInlineUniformBlockBindings@ member is not zero
 --
+-- -   #VUID-VkDescriptorPoolCreateInfo-pNext-09946# If a
+--     'Vulkan.Extensions.VK_ARM_data_graph.DataGraphProcessingEngineCreateInfoARM'
+--     structure is included in the @pNext@ chain, each member of
+--     @pProcessingEngines@ /must/ be identical to an
+--     'Vulkan.Extensions.VK_ARM_data_graph.QueueFamilyDataGraphPropertiesARM'::@engine@
+--     retrieved from
+--     'Vulkan.Extensions.VK_ARM_data_graph.getPhysicalDeviceQueueFamilyDataGraphPropertiesARM'
+--     with the @physicalDevice@ that was used to create @device@
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-VkDescriptorPoolCreateInfo-sType-sType# @sType@ /must/ be
@@ -2895,12 +3026,13 @@
 -- -   #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.Core13.Promoted_From_VK_EXT_inline_uniform_block.DescriptorPoolInlineUniformBlockCreateInfo'
+--     'Vulkan.Extensions.VK_ARM_data_graph.DataGraphProcessingEngineCreateInfoARM',
+--     'Vulkan.Core13.Promoted_From_VK_EXT_inline_uniform_block.DescriptorPoolInlineUniformBlockCreateInfo',
 --     or
 --     'Vulkan.Extensions.VK_EXT_mutable_descriptor_type.MutableDescriptorTypeCreateInfoEXT'
 --
 -- -   #VUID-VkDescriptorPoolCreateInfo-sType-unique# The @sType@ value of
---     each struct in the @pNext@ chain /must/ be unique
+--     each structure in the @pNext@ chain /must/ be unique
 --
 -- -   #VUID-VkDescriptorPoolCreateInfo-flags-parameter# @flags@ /must/ be
 --     a valid combination of
@@ -2944,6 +3076,7 @@
   getNext DescriptorPoolCreateInfo{..} = next
   extends :: forall e b proxy. Typeable e => proxy e -> (Extends DescriptorPoolCreateInfo e => b) -> Maybe b
   extends _ f
+    | Just Refl <- eqT @e @DataGraphProcessingEngineCreateInfoARM = Just f
     | Just Refl <- eqT @e @MutableDescriptorTypeCreateInfoEXT = Just f
     | Just Refl <- eqT @e @DescriptorPoolInlineUniformBlockCreateInfo = Just f
     | otherwise = Nothing
@@ -3015,7 +3148,7 @@
 --
 -- -   #VUID-VkDescriptorSetAllocateInfo-pSetLayouts-00308# Each element of
 --     @pSetLayouts@ /must/ not have been created with
---     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR'
+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT'
 --     set
 --
 -- -   #VUID-VkDescriptorSetAllocateInfo-pSetLayouts-03044# If any element
@@ -3061,7 +3194,7 @@
 --     'Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.DescriptorSetVariableDescriptorCountAllocateInfo'
 --
 -- -   #VUID-VkDescriptorSetAllocateInfo-sType-unique# The @sType@ value of
---     each struct in the @pNext@ chain /must/ be unique
+--     each structure in the @pNext@ chain /must/ be unique
 --
 -- -   #VUID-VkDescriptorSetAllocateInfo-descriptorPool-parameter#
 --     @descriptorPool@ /must/ be a valid
@@ -3079,6 +3212,10 @@
 --     @descriptorPool@, and the elements of @pSetLayouts@ /must/ have been
 --     created, allocated, or retrieved from the same
 --     'Vulkan.Core10.Handles.Device'
+--
+-- == Host Synchronization
+--
+-- -   Host access to @descriptorPool@ /must/ be externally synchronized
 --
 -- = See Also
 --
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
@@ -78,12 +78,13 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_pipeline_binary (DevicePipelineBinaryInternalCacheControlKHR)
 import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_private_data (DevicePrivateDataCreateInfo)
 import Vulkan.Core10.Enums.DeviceQueueCreateFlagBits (DeviceQueueCreateFlags)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_global_priority (DeviceQueueGlobalPriorityCreateInfoKHR)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_global_priority (DeviceQueueGlobalPriorityCreateInfo)
 import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_scheduling_controls (DeviceQueueShaderCoreControlCreateInfoARM)
 import Vulkan.Core10.Handles (Device_T)
 import Vulkan.CStruct.Extends (Extends)
 import Vulkan.CStruct.Extends (Extendss)
 import Vulkan.CStruct.Extends (Extensible(..))
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_external_compute_queue (ExternalComputeQueueDeviceCreateInfoNV)
 import Vulkan.Dynamic (InstanceCmds(pVkCreateDevice))
 import Vulkan.CStruct.Extends (PeekChain)
 import Vulkan.CStruct.Extends (PeekChain(..))
@@ -108,11 +109,15 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_device_coherent_memory (PhysicalDeviceCoherentMemoryFeaturesAMD)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_color_write_enable (PhysicalDeviceColorWriteEnableFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_command_buffer_inheritance (PhysicalDeviceCommandBufferInheritanceFeaturesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_compute_occupancy_priority (PhysicalDeviceComputeOccupancyPriorityFeaturesNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_compute_shader_derivatives (PhysicalDeviceComputeShaderDerivativesFeaturesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_conditional_rendering (PhysicalDeviceConditionalRenderingFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_cooperative_matrix2 (PhysicalDeviceCooperativeMatrix2FeaturesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_cooperative_matrix_conversion (PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_cooperative_matrix (PhysicalDeviceCooperativeMatrixFeaturesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_cooperative_matrix (PhysicalDeviceCooperativeMatrixFeaturesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_cooperative_vector (PhysicalDeviceCooperativeVectorFeaturesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_copy_memory_indirect (PhysicalDeviceCopyMemoryIndirectFeaturesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_copy_memory_indirect (PhysicalDeviceCopyMemoryIndirectFeaturesNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_corner_sampled_image (PhysicalDeviceCornerSampledImageFeaturesNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_coverage_reduction_mode (PhysicalDeviceCoverageReductionModeFeaturesNV)
@@ -120,16 +125,25 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_filter_cubic_weights (PhysicalDeviceCubicWeightsFeaturesQCOM)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_cuda_kernel_launch (PhysicalDeviceCudaKernelLaunchFeaturesNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_custom_border_color (PhysicalDeviceCustomBorderColorFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_custom_resolve (PhysicalDeviceCustomResolveFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_data_graph (PhysicalDeviceDataGraphFeaturesARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_data_graph_model (PhysicalDeviceDataGraphModelFeaturesQCOM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_data_graph_neural_accelerator_statistics (PhysicalDeviceDataGraphNeuralAcceleratorStatisticsFeaturesARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_data_graph_optical_flow (PhysicalDeviceDataGraphOpticalFlowFeaturesARM)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_dedicated_allocation_image_aliasing (PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_AMDX_dense_geometry_format (PhysicalDeviceDenseGeometryFormatFeaturesAMDX)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_depth_bias_control (PhysicalDeviceDepthBiasControlFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_depth_clamp_control (PhysicalDeviceDepthClampControlFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_depth_clamp_zero_one (PhysicalDeviceDepthClampZeroOneFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_depth_clamp_zero_one (PhysicalDeviceDepthClampZeroOneFeaturesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_depth_clip_control (PhysicalDeviceDepthClipControlFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_depth_clip_enable (PhysicalDeviceDepthClipEnableFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_buffer (PhysicalDeviceDescriptorBufferFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_tensors (PhysicalDeviceDescriptorBufferTensorFeaturesARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_heap (PhysicalDeviceDescriptorHeapFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing (PhysicalDeviceDescriptorIndexingFeatures)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_descriptor_pool_overallocation (PhysicalDeviceDescriptorPoolOverallocationFeaturesNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_VALVE_descriptor_set_host_mapping (PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_device_address_commands (PhysicalDeviceDeviceAddressCommandsFeaturesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_generated_commands_compute (PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_device_generated_commands (PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_generated_commands (PhysicalDeviceDeviceGeneratedCommandsFeaturesNV)
@@ -137,8 +151,9 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_diagnostics_config (PhysicalDeviceDiagnosticsConfigFeaturesNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_displacement_micromap (PhysicalDeviceDisplacementMicromapFeaturesNV)
 import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering (PhysicalDeviceDynamicRenderingFeatures)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read (PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read (PhysicalDeviceDynamicRenderingLocalReadFeatures)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_dynamic_rendering_unused_attachments (PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_elapsed_timer_query (PhysicalDeviceElapsedTimerQueryFeaturesQCOM)
 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_state3 (PhysicalDeviceExtendedDynamicState3FeaturesEXT)
@@ -148,45 +163,55 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_external_memory_rdma (PhysicalDeviceExternalMemoryRDMAFeaturesNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_QNX_external_memory_screen_buffer (PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_device_fault (PhysicalDeviceFaultFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_device_fault (PhysicalDeviceFaultFeaturesKHR)
 import Vulkan.Core10.DeviceInitialization (PhysicalDeviceFeatures)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (PhysicalDeviceFeatures2)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_format_pack (PhysicalDeviceFormatPackFeaturesARM)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_fragment_density_map2 (PhysicalDeviceFragmentDensityMap2FeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_fragment_density_map (PhysicalDeviceFragmentDensityMapFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_fragment_density_map_offset (PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_VALVE_fragment_density_map_layered (PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_fragment_density_map_offset (PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_fragment_shader_barycentric (PhysicalDeviceFragmentShaderBarycentricFeaturesKHR)
 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_frame_boundary (PhysicalDeviceFrameBoundaryFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_global_priority (PhysicalDeviceGlobalPriorityQueryFeaturesKHR)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_global_priority (PhysicalDeviceGlobalPriorityQueryFeatures)
+import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_gpa_interface (PhysicalDeviceGpaFeaturesAMD)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_graphics_pipeline_library (PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_HUAWEI_hdr_vivid (PhysicalDeviceHdrVividFeaturesHUAWEI)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_host_image_copy (PhysicalDeviceHostImageCopyFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy (PhysicalDeviceHostImageCopyFeatures)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_EXT_host_query_reset (PhysicalDeviceHostQueryResetFeatures)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_image_2d_view_of_3d (PhysicalDeviceImage2DViewOf3DFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_MESA_image_alignment_control (PhysicalDeviceImageAlignmentControlFeaturesMESA)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_image_compression_control (PhysicalDeviceImageCompressionControlFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_image_compression_control_swapchain (PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_image_processing2 (PhysicalDeviceImageProcessing2FeaturesQCOM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_image_processing3 (PhysicalDeviceImageProcessing3FeaturesQCOM)
 import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_image_processing (PhysicalDeviceImageProcessingFeaturesQCOM)
 import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_image_robustness (PhysicalDeviceImageRobustnessFeatures)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_image_sliced_view_of_3d (PhysicalDeviceImageSlicedViewOf3DFeaturesEXT)
 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_KHR_index_type_uint8 (PhysicalDeviceIndexTypeUint8FeaturesKHR)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_index_type_uint8 (PhysicalDeviceIndexTypeUint8Features)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_inherited_viewport_scissor (PhysicalDeviceInheritedViewportScissorFeaturesNV)
 import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_inline_uniform_block (PhysicalDeviceInlineUniformBlockFeatures)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_internally_synchronized_queues (PhysicalDeviceInternallySynchronizedQueuesFeaturesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_HUAWEI_invocation_mask (PhysicalDeviceInvocationMaskFeaturesHUAWEI)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_legacy_dithering (PhysicalDeviceLegacyDitheringFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_legacy_vertex_attributes (PhysicalDeviceLegacyVertexAttributesFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_line_rasterization (PhysicalDeviceLineRasterizationFeaturesKHR)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_line_rasterization (PhysicalDeviceLineRasterizationFeatures)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_linear_color_attachment (PhysicalDeviceLinearColorAttachmentFeaturesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance10 (PhysicalDeviceMaintenance10FeaturesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance11 (PhysicalDeviceMaintenance11FeaturesKHR)
 import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_maintenance4 (PhysicalDeviceMaintenance4Features)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance5 (PhysicalDeviceMaintenance5FeaturesKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance6 (PhysicalDeviceMaintenance6FeaturesKHR)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_maintenance5 (PhysicalDeviceMaintenance5Features)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_maintenance6 (PhysicalDeviceMaintenance6Features)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance7 (PhysicalDeviceMaintenance7FeaturesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance8 (PhysicalDeviceMaintenance8FeaturesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance9 (PhysicalDeviceMaintenance9FeaturesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_map_memory_placed (PhysicalDeviceMapMemoryPlacedFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_memory_decompression (PhysicalDeviceMemoryDecompressionFeaturesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_memory_decompression (PhysicalDeviceMemoryDecompressionFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_memory_priority (PhysicalDeviceMemoryPriorityFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_mesh_shader (PhysicalDeviceMeshShaderFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_mesh_shader (PhysicalDeviceMeshShaderFeaturesNV)
@@ -199,32 +224,44 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_nested_command_buffer (PhysicalDeviceNestedCommandBufferFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_non_seamless_cube_map (PhysicalDeviceNonSeamlessCubeMapFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_opacity_micromap (PhysicalDeviceOpacityMicromapFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_opacity_micromap (PhysicalDeviceOpacityMicromapFeaturesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_optical_flow (PhysicalDeviceOpticalFlowFeaturesNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_pageable_device_local_memory (PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_per_stage_descriptor_set (PhysicalDevicePerStageDescriptorSetFeaturesNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_performance_query (PhysicalDevicePerformanceQueryFeaturesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_pipeline_binary (PhysicalDevicePipelineBinaryFeaturesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_SEC_pipeline_cache_incremental_mode (PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC)
 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_EXT_pipeline_library_group_handles (PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_pipeline_opacity_micromap (PhysicalDevicePipelineOpacityMicromapFeaturesARM)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_pipeline_properties (PhysicalDevicePipelinePropertiesFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_pipeline_protected_access (PhysicalDevicePipelineProtectedAccessFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_pipeline_robustness (PhysicalDevicePipelineRobustnessFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_EXT_pipeline_protected_access (PhysicalDevicePipelineProtectedAccessFeatures)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_EXT_pipeline_robustness (PhysicalDevicePipelineRobustnessFeatures)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_portability_subset (PhysicalDevicePortabilitySubsetFeaturesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_present_barrier (PhysicalDevicePresentBarrierFeaturesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_present_id2 (PhysicalDevicePresentId2FeaturesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_present_id (PhysicalDevicePresentIdFeaturesKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_present_mode_fifo_latest_ready (PhysicalDevicePresentModeFifoLatestReadyFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_present_metering (PhysicalDevicePresentMeteringFeaturesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_present_mode_fifo_latest_ready (PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_present_timing (PhysicalDevicePresentTimingFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_present_wait2 (PhysicalDevicePresentWait2FeaturesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_present_wait (PhysicalDevicePresentWaitFeaturesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_primitive_restart_index (PhysicalDevicePrimitiveRestartIndexFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_primitive_topology_list_restart (PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_primitives_generated_query (PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT)
 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_NV_push_constant_bank (PhysicalDevicePushConstantBankFeaturesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_queue_perf_hint (PhysicalDeviceQueuePerfHintFeaturesQCOM)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_rgba10x6_formats (PhysicalDeviceRGBA10X6FormatsFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_rasterization_order_attachment_access (PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_raw_access_chains (PhysicalDeviceRawAccessChainsFeaturesNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_query (PhysicalDeviceRayQueryFeaturesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_ray_tracing_invocation_reorder (PhysicalDeviceRayTracingInvocationReorderFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing_invocation_reorder (PhysicalDeviceRayTracingInvocationReorderFeaturesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing_linear_swept_spheres (PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing_maintenance1 (PhysicalDeviceRayTracingMaintenance1FeaturesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing_motion_blur (PhysicalDeviceRayTracingMotionBlurFeaturesNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing_pipeline (PhysicalDeviceRayTracingPipelineFeaturesKHR)
@@ -233,64 +270,86 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_IMG_relaxed_line_rasterization (PhysicalDeviceRelaxedLineRasterizationFeaturesIMG)
 import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_render_pass_striped (PhysicalDeviceRenderPassStripedFeaturesARM)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_representative_fragment_test (PhysicalDeviceRepresentativeFragmentTestFeaturesNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_robustness2 (PhysicalDeviceRobustness2FeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_robustness2 (PhysicalDeviceRobustness2FeaturesKHR)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion (PhysicalDeviceSamplerYcbcrConversionFeatures)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_EXT_scalar_block_layout (PhysicalDeviceScalarBlockLayoutFeatures)
 import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_scheduling_controls (PhysicalDeviceSchedulingControlsFeaturesARM)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts (PhysicalDeviceSeparateDepthStencilLayoutsFeatures)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_shader_64bit_indexing (PhysicalDeviceShader64BitIndexingFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_shader_abort (PhysicalDeviceShaderAbortFeaturesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_shader_atomic_float16_vector (PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_shader_atomic_float2 (PhysicalDeviceShaderAtomicFloat2FeaturesEXT)
 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_bfloat16 (PhysicalDeviceShaderBfloat16FeaturesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_shader_clock (PhysicalDeviceShaderClockFeaturesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_shader_constant_data (PhysicalDeviceShaderConstantDataFeaturesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_shader_core_builtins (PhysicalDeviceShaderCoreBuiltinsFeaturesARM)
 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.Extensions.VK_AMD_shader_early_and_late_fragment_tests (PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD)
 import {-# SOURCE #-} Vulkan.Extensions.VK_AMDX_shader_enqueue (PhysicalDeviceShaderEnqueueFeaturesAMDX)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_shader_expect_assume (PhysicalDeviceShaderExpectAssumeFeaturesKHR)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_shader_expect_assume (PhysicalDeviceShaderExpectAssumeFeatures)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_shader_float16_int8 (PhysicalDeviceShaderFloat16Int8Features)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_shader_float_controls2 (PhysicalDeviceShaderFloatControls2FeaturesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_shader_float8 (PhysicalDeviceShaderFloat8FeaturesEXT)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_shader_float_controls2 (PhysicalDeviceShaderFloatControls2Features)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_shader_fma (PhysicalDeviceShaderFmaFeaturesKHR)
 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_ARM_shader_instrumentation (PhysicalDeviceShaderInstrumentationFeaturesARM)
 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_EXT_shader_long_vector (PhysicalDeviceShaderLongVectorFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_shader_maximal_reconvergence (PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_VALVE_shader_mixed_float_dot_product (PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_shader_module_identifier (PhysicalDeviceShaderModuleIdentifierFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_shader_multiple_wait_queues (PhysicalDeviceShaderMultipleWaitQueuesFeaturesQCOM)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_shader_object (PhysicalDeviceShaderObjectFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_shader_quad_control (PhysicalDeviceShaderQuadControlFeaturesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_shader_relaxed_extended_instruction (PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_shader_replicated_composites (PhysicalDeviceShaderReplicatedCompositesFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_shader_sm_builtins (PhysicalDeviceShaderSMBuiltinsFeaturesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_shader_split_barrier (PhysicalDeviceShaderSplitBarrierFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_shader_subgroup_extended_types (PhysicalDeviceShaderSubgroupExtendedTypesFeatures)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_shader_subgroup_rotate (PhysicalDeviceShaderSubgroupRotateFeaturesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_shader_subgroup_partitioned (PhysicalDeviceShaderSubgroupPartitionedFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_shader_subgroup_rotate (PhysicalDeviceShaderSubgroupRotateFeatures)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_shader_subgroup_uniform_control_flow (PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR)
 import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_shader_terminate_invocation (PhysicalDeviceShaderTerminateInvocationFeatures)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_shader_tile_image (PhysicalDeviceShaderTileImageFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_shader_uniform_buffer_unsized_array (PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_shader_untyped_pointers (PhysicalDeviceShaderUntypedPointersFeaturesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_shading_rate_image (PhysicalDeviceShadingRateImageFeaturesNV)
 import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_subgroup_size_control (PhysicalDeviceSubgroupSizeControlFeatures)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_subpass_merge_feedback (PhysicalDeviceSubpassMergeFeedbackFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_HUAWEI_subpass_shading (PhysicalDeviceSubpassShadingFeaturesHUAWEI)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_swapchain_maintenance1 (PhysicalDeviceSwapchainMaintenance1FeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_swapchain_maintenance1 (PhysicalDeviceSwapchainMaintenance1FeaturesKHR)
 import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_synchronization2 (PhysicalDeviceSynchronization2Features)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_tensors (PhysicalDeviceTensorFeaturesARM)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_texel_buffer_alignment (PhysicalDeviceTexelBufferAlignmentFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_texture_compression_astc_3d (PhysicalDeviceTextureCompressionASTC3DFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_texture_compression_astc_hdr (PhysicalDeviceTextureCompressionASTCHDRFeatures)
+import {-# SOURCE #-} Vulkan.Extensions.VK_SEC_throttle_hint (PhysicalDeviceThrottleHintFeaturesSEC)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_tile_memory_heap (PhysicalDeviceTileMemoryHeapFeaturesQCOM)
 import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_tile_properties (PhysicalDeviceTilePropertiesFeaturesQCOM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_tile_shading (PhysicalDeviceTileShadingFeaturesQCOM)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore (PhysicalDeviceTimelineSemaphoreFeatures)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_transform_feedback (PhysicalDeviceTransformFeedbackFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_unified_image_layouts (PhysicalDeviceUnifiedImageLayoutsFeaturesKHR)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_uniform_buffer_standard_layout (PhysicalDeviceUniformBufferStandardLayoutFeatures)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_variable_pointers (PhysicalDeviceVariablePointersFeatures)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_vertex_attribute_divisor (PhysicalDeviceVertexAttributeDivisorFeaturesKHR)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_vertex_attribute_divisor (PhysicalDeviceVertexAttributeDivisorFeatures)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_vertex_attribute_robustness (PhysicalDeviceVertexAttributeRobustnessFeaturesEXT)
 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.Core14 (PhysicalDeviceVulkan14Features)
 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_QCOM_ycbcr_degamma (PhysicalDeviceYcbcrDegammaFeaturesQCOM)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_ycbcr_image_arrays (PhysicalDeviceYcbcrImageArraysFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_zero_initialize_device_memory (PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_zero_initialize_workgroup_memory (PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures)
 import Vulkan.Core10.Handles (PhysicalDevice_T)
 import Vulkan.CStruct.Extends (PokeChain)
@@ -342,7 +401,7 @@
 -- == Valid Usage
 --
 -- -   #VUID-vkCreateDevice-ppEnabledExtensionNames-01387# All
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#extendingvulkan-extensions-extensiondependencies required device extensions>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#extendingvulkan-extensions-extensiondependencies required device extensions>
 --     for each extension in the
 --     'DeviceCreateInfo'::@ppEnabledExtensionNames@ list /must/ also be
 --     present in that list
@@ -370,20 +429,24 @@
 --
 -- [<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_DEVICE_LOST'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_EXTENSION_NOT_PRESENT'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_FEATURE_NOT_PRESENT'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_INITIALIZATION_FAILED'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_EXTENSION_NOT_PRESENT'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_FEATURE_NOT_PRESENT'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_TOO_MANY_OBJECTS'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -395,13 +458,13 @@
              => -- | @physicalDevice@ /must/ be one of the device handles returned from a
                 -- call to 'Vulkan.Core10.DeviceInitialization.enumeratePhysicalDevices'
                 -- (see
-                -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-physical-device-enumeration Physical Device Enumeration>).
+                -- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
                 -- chapter.
                 ("allocator" ::: Maybe AllocationCallbacks)
              -> io (Device)
@@ -454,9 +517,10 @@
 -- To ensure that no work is active on the device,
 -- 'Vulkan.Core10.Queue.deviceWaitIdle' /can/ be used to gate the
 -- destruction of the device. Prior to destroying a device, an application
--- is responsible for destroying\/freeing any Vulkan objects that were
--- created using that device as the first parameter of the corresponding
--- @vkCreate*@ or @vkAllocate*@ command.
+-- is responsible for destroying\/freeing any Vulkan objects with explicit
+-- @vkDestroy*@ or @vkFree*@ commands that were created using that device
+-- as the first parameter of the corresponding @vkCreate*@ or @vkAllocate*@
+-- command.
 --
 -- The lifetime of each of these objects is bound by the lifetime of the
 -- 'Vulkan.Core10.Handles.Device' object. Therefore, to avoid resource
@@ -466,7 +530,8 @@
 -- == Valid Usage
 --
 -- -   #VUID-vkDestroyDevice-device-05137# All child objects created on
---     @device@ /must/ have been destroyed prior to destroying @device@
+--     @device@ that can be destroyed or freed /must/ have been destroyed
+--     or freed prior to destroying @device@
 --
 -- -   #VUID-vkDestroyDevice-device-00379# If
 --     'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' were
@@ -503,7 +568,7 @@
               => -- | @device@ is the logical device to destroy.
                  Device
               -> -- | @pAllocator@ controls host memory allocation as described in the
-                 -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                 -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
                  -- chapter.
                  ("allocator" ::: Maybe AllocationCallbacks)
               -> io ()
@@ -524,6 +589,30 @@
 -- | VkDeviceQueueCreateInfo - Structure specifying parameters of a newly
 -- created device queue
 --
+-- = Description
+--
+-- Some queue families support functionality which requires a device
+-- feature or extension to be enabled, as indicated by the
+-- 'Vulkan.Core10.DeviceInitialization.QueueFamilyProperties'::@queueFlags@
+-- member. Applications /may/ create such queues and submit
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#devsandqueues-submission queue submission commands>
+-- to them without enabling the corresponding feature or extension, but
+-- /must/ not utilize the specific functionality that they did not enable.
+--
+-- For example,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#sparsememory sparse memory management operations>
+-- /can/ be performed on queues from queue families exposing the
+-- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_SPARSE_BINDING_BIT' bit,
+-- provided the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-sparseBinding sparseBinding>
+-- feature is enabled. If a queue family supports both the
+-- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_SPARSE_BINDING_BIT' and
+-- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_TRANSFER_BIT' bits,
+-- applications /may/ create a queue from this family and issue transfer
+-- operations without enabling the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-sparseBinding sparseBinding>
+-- feature.
+--
 -- == Valid Usage
 --
 -- -   #VUID-VkDeviceQueueCreateInfo-queueFamilyIndex-00381#
@@ -542,7 +631,7 @@
 --     of @pQueuePriorities@ /must/ be between @0.0@ and @1.0@ inclusive
 --
 -- -   #VUID-VkDeviceQueueCreateInfo-flags-02861# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-protectedMemory protectedMemory>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-protectedMemory protectedMemory>
 --     feature is not enabled, the
 --     'Vulkan.Core10.Enums.DeviceQueueCreateFlagBits.DEVICE_QUEUE_CREATE_PROTECTED_BIT'
 --     bit of @flags@ /must/ not be set
@@ -561,6 +650,12 @@
 --     /must/ contain
 --     'Vulkan.Extensions.VK_ARM_scheduling_controls.PHYSICAL_DEVICE_SCHEDULING_CONTROLS_SHADER_CORE_COUNT_ARM'
 --
+-- -   #VUID-VkDeviceQueueCreateInfo-internallySynchronizedQueues-12348# If
+--     the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-internallySynchronizedQueues internallySynchronizedQueues>
+--     feature is not enabled, @flags@ /must/ not include
+--     'Vulkan.Core10.Enums.DeviceQueueCreateFlagBits.DEVICE_QUEUE_CREATE_INTERNALLY_SYNCHRONIZED_BIT_KHR'
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-VkDeviceQueueCreateInfo-sType-sType# @sType@ /must/ be
@@ -569,12 +664,12 @@
 -- -   #VUID-VkDeviceQueueCreateInfo-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_global_priority.DeviceQueueGlobalPriorityCreateInfoKHR'
+--     'Vulkan.Core14.Promoted_From_VK_KHR_global_priority.DeviceQueueGlobalPriorityCreateInfo'
 --     or
 --     'Vulkan.Extensions.VK_ARM_scheduling_controls.DeviceQueueShaderCoreControlCreateInfoARM'
 --
 -- -   #VUID-VkDeviceQueueCreateInfo-sType-unique# The @sType@ value of
---     each struct in the @pNext@ chain /must/ be unique
+--     each structure in the @pNext@ chain /must/ be unique
 --
 -- -   #VUID-VkDeviceQueueCreateInfo-flags-parameter# @flags@ /must/ be a
 --     valid combination of
@@ -608,7 +703,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-priority Queue Priority>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#devsandqueues-priority Queue Priority>
     -- for more information.
     queuePriorities :: Vector Float
   }
@@ -625,7 +720,7 @@
   extends :: forall e b proxy. Typeable e => proxy e -> (Extends DeviceQueueCreateInfo e => b) -> Maybe b
   extends _ f
     | Just Refl <- eqT @e @DeviceQueueShaderCoreControlCreateInfoARM = Just f
-    | Just Refl <- eqT @e @DeviceQueueGlobalPriorityCreateInfoKHR = Just f
+    | Just Refl <- eqT @e @DeviceQueueGlobalPriorityCreateInfo = Just f
     | otherwise = Nothing
 
 instance ( Extendss DeviceQueueCreateInfo es
@@ -679,12 +774,10 @@
 --
 -- == Valid Usage
 --
--- -   #VUID-VkDeviceCreateInfo-queueFamilyIndex-02802# The
---     @queueFamilyIndex@ member of each element of @pQueueCreateInfos@
---     /must/ be unique within @pQueueCreateInfos@ , except that two
---     members can share the same @queueFamilyIndex@ if one describes
---     protected-capable queues and one describes queues that are not
---     protected-capable
+-- -   #VUID-VkDeviceCreateInfo-queueFamilyIndex-02802# The combination of
+--     the values in the @queueFamilyIndex@ and @flags@ members of each
+--     element of @pQueueCreateInfos@ /must/ be unique within
+--     @pQueueCreateInfos@
 --
 -- -   #VUID-VkDeviceCreateInfo-pQueueCreateInfos-06755# If multiple
 --     elements of @pQueueCreateInfos@ share the same @queueFamilyIndex@,
@@ -699,7 +792,7 @@
 --     elements of @pQueueCreateInfos@ share the same @queueFamilyIndex@,
 --     then all of such elements /must/ have the same global priority
 --     level, which /can/ be specified explicitly by the including a
---     'Vulkan.Extensions.VK_KHR_global_priority.DeviceQueueGlobalPriorityCreateInfoKHR'
+--     'Vulkan.Core14.Promoted_From_VK_KHR_global_priority.DeviceQueueGlobalPriorityCreateInfo'
 --     structure in the @pNext@ chain, or by the implicit default value
 --
 -- -   #VUID-VkDeviceCreateInfo-pNext-00373# If the @pNext@ chain includes
@@ -822,6 +915,32 @@
 --     'Vulkan.Core13.Promoted_From_VK_KHR_zero_initialize_workgroup_memory.PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures'
 --     structure
 --
+-- -   #VUID-VkDeviceCreateInfo-pNext-10360# If the @pNext@ chain includes
+--     a 'Vulkan.Core14.PhysicalDeviceVulkan14Features' structure, then it
+--     /must/ not include a
+--     'Vulkan.Core14.Promoted_From_VK_KHR_global_priority.PhysicalDeviceGlobalPriorityQueryFeatures',
+--     'Vulkan.Core14.Promoted_From_VK_KHR_shader_subgroup_rotate.PhysicalDeviceShaderSubgroupRotateFeatures',
+--     'Vulkan.Core14.Promoted_From_VK_KHR_shader_float_controls2.PhysicalDeviceShaderFloatControls2Features',
+--     'Vulkan.Core14.Promoted_From_VK_KHR_shader_expect_assume.PhysicalDeviceShaderExpectAssumeFeatures',
+--     'Vulkan.Core14.Promoted_From_VK_KHR_line_rasterization.PhysicalDeviceLineRasterizationFeatures',
+--     'Vulkan.Core14.Promoted_From_VK_KHR_vertex_attribute_divisor.PhysicalDeviceVertexAttributeDivisorFeatures',
+--     'Vulkan.Core14.Promoted_From_VK_KHR_index_type_uint8.PhysicalDeviceIndexTypeUint8Features',
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.PhysicalDeviceDynamicRenderingLocalReadFeatures',
+--     'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.PhysicalDeviceMaintenance5Features',
+--     'Vulkan.Core14.Promoted_From_VK_KHR_maintenance6.PhysicalDeviceMaintenance6Features',
+--     'Vulkan.Core14.Promoted_From_VK_EXT_pipeline_protected_access.PhysicalDevicePipelineProtectedAccessFeatures',
+--     'Vulkan.Core14.Promoted_From_VK_EXT_pipeline_robustness.PhysicalDevicePipelineRobustnessFeatures',
+--     or
+--     'Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy.PhysicalDeviceHostImageCopyFeatures'
+--     structure
+--
+-- -   #VUID-VkDeviceCreateInfo-ppEnabledExtensionNames-10858# If
+--     @ppEnabledExtensionNames@ contains @\"VK_KHR_push_descriptor\"@ and
+--     the @pNext@ chain includes a
+--     'Vulkan.Core14.PhysicalDeviceVulkan14Features' structure, then
+--     'Vulkan.Core14.PhysicalDeviceVulkan14Features'::@pushDescriptor@
+--     /must/ be 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
 -- -   #VUID-VkDeviceCreateInfo-pProperties-04451# If the
 --     @VK_KHR_portability_subset@ extension is included in @pProperties@
 --     of
@@ -830,80 +949,80 @@
 --     @\"VK_KHR_portability_subset\"@
 --
 -- -   #VUID-VkDeviceCreateInfo-shadingRateImage-04478# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-shadingRateImage shadingRateImage>
 --     feature is enabled, the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate>
 --     feature /must/ not be enabled
 --
 -- -   #VUID-VkDeviceCreateInfo-shadingRateImage-04479# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-shadingRateImage shadingRateImage>
 --     feature is enabled, the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-primitiveFragmentShadingRate primitiveFragmentShadingRate>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-primitiveFragmentShadingRate primitiveFragmentShadingRate>
 --     feature /must/ not be enabled
 --
 -- -   #VUID-VkDeviceCreateInfo-shadingRateImage-04480# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-shadingRateImage shadingRateImage>
 --     feature is enabled, the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate>
 --     feature /must/ not be enabled
 --
 -- -   #VUID-VkDeviceCreateInfo-fragmentDensityMap-04481# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-fragmentDensityMap fragmentDensityMap>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-fragmentDensityMap fragmentDensityMap>
 --     feature is enabled, the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate>
 --     feature /must/ not be enabled
 --
 -- -   #VUID-VkDeviceCreateInfo-fragmentDensityMap-04482# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-fragmentDensityMap fragmentDensityMap>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-fragmentDensityMap fragmentDensityMap>
 --     feature is enabled, the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-primitiveFragmentShadingRate primitiveFragmentShadingRate>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-primitiveFragmentShadingRate primitiveFragmentShadingRate>
 --     feature /must/ not be enabled
 --
 -- -   #VUID-VkDeviceCreateInfo-fragmentDensityMap-04483# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-fragmentDensityMap fragmentDensityMap>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-fragmentDensityMap fragmentDensityMap>
 --     feature is enabled, the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate>
 --     feature /must/ not be enabled
 --
 -- -   #VUID-VkDeviceCreateInfo-None-04896# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-sparseImageInt64Atomics sparseImageInt64Atomics>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-sparseImageInt64Atomics sparseImageInt64Atomics>
 --     feature is enabled,
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-shaderImageInt64Atomics shaderImageInt64Atomics>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-shaderImageInt64Atomics shaderImageInt64Atomics>
 --     /must/ be enabled
 --
 -- -   #VUID-VkDeviceCreateInfo-None-04897# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-sparseImageFloat32Atomics sparseImageFloat32Atomics>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-sparseImageFloat32Atomics sparseImageFloat32Atomics>
 --     feature is enabled,
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-shaderImageFloat32Atomics shaderImageFloat32Atomics>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-shaderImageFloat32Atomics shaderImageFloat32Atomics>
 --     /must/ be enabled
 --
 -- -   #VUID-VkDeviceCreateInfo-None-04898# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-sparseImageFloat32AtomicAdd sparseImageFloat32AtomicAdd>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-sparseImageFloat32AtomicAdd sparseImageFloat32AtomicAdd>
 --     feature is enabled,
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-shaderImageFloat32AtomicAdd shaderImageFloat32AtomicAdd>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-shaderImageFloat32AtomicAdd shaderImageFloat32AtomicAdd>
 --     /must/ be enabled
 --
 -- -   #VUID-VkDeviceCreateInfo-sparseImageFloat32AtomicMinMax-04975# If
 --     the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-sparseImageFloat32AtomicMinMax sparseImageFloat32AtomicMinMax>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-sparseImageFloat32AtomicMinMax sparseImageFloat32AtomicMinMax>
 --     feature is enabled,
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-shaderImageFloat32AtomicMinMax shaderImageFloat32AtomicMinMax>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-shaderImageFloat32AtomicMinMax shaderImageFloat32AtomicMinMax>
 --     /must/ be enabled
 --
 -- -   #VUID-VkDeviceCreateInfo-robustBufferAccess-10247# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
 --     feature is enabled, and
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-robustBufferAccessUpdateAfterBind robustBufferAccessUpdateAfterBind>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-robustBufferAccessUpdateAfterBind robustBufferAccessUpdateAfterBind>
 --     is 'Vulkan.Core10.FundamentalTypes.FALSE', then
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-descriptorBindingUniformBufferUpdateAfterBind descriptorBindingUniformBufferUpdateAfterBind>,
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-descriptorBindingStorageBufferUpdateAfterBind descriptorBindingStorageBufferUpdateAfterBind>,
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-descriptorBindingUniformTexelBufferUpdateAfterBind descriptorBindingUniformTexelBufferUpdateAfterBind>,
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-descriptorBindingUniformBufferUpdateAfterBind descriptorBindingUniformBufferUpdateAfterBind>,
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-descriptorBindingStorageBufferUpdateAfterBind descriptorBindingStorageBufferUpdateAfterBind>,
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-descriptorBindingUniformTexelBufferUpdateAfterBind descriptorBindingUniformTexelBufferUpdateAfterBind>,
 --     and
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-descriptorBindingStorageTexelBufferUpdateAfterBind descriptorBindingStorageTexelBufferUpdateAfterBind>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-descriptorBindingStorageTexelBufferUpdateAfterBind descriptorBindingStorageTexelBufferUpdateAfterBind>
 --     /must/ not be enabled
 --
 -- -   #VUID-VkDeviceCreateInfo-None-08095# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-descriptorBuffer descriptorBuffer>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-descriptorBuffer descriptorBuffer>
 --     feature is enabled, @ppEnabledExtensionNames@ /must/ not contain
 --     @VK_AMD_shader_fragment_mask@
 --
@@ -921,6 +1040,32 @@
 --     /must/ contain
 --     'Vulkan.Extensions.VK_ARM_scheduling_controls.PHYSICAL_DEVICE_SCHEDULING_CONTROLS_SHADER_CORE_COUNT_ARM'
 --
+-- -   #VUID-VkDeviceCreateInfo-None-10778# If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance9 maintenance9>
+--     feature is not supported, @queueCreateInfoCount@ /must/ be greater
+--     than @0@
+--
+-- -   #VUID-VkDeviceCreateInfo-queueFamilyIndex-11831# If any element of
+--     pQueueCreateInfos specifies a @queueFamilyIndex@ that supports
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_DATA_GRAPH_BIT_ARM' and
+--     that @queueFamilyIndex@ enumerates an engine through
+--     'Vulkan.Extensions.VK_ARM_data_graph.getPhysicalDeviceQueueFamilyDataGraphPropertiesARM'
+--     with @type@
+--     'Vulkan.Extensions.VK_ARM_data_graph.PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_NEURAL_QCOM'
+--     or
+--     'Vulkan.Extensions.VK_ARM_data_graph.PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_COMPUTE_QCOM',
+--     a
+--     'Vulkan.Extensions.VK_QCOM_data_graph_model.PhysicalDeviceDataGraphModelFeaturesQCOM'
+--     structure /must/ be included in @pNext@ with
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-dataGraphModelQCOM dataGraphModel>
+--     set to 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-VkDeviceCreateInfo-enabledLayerCount-12384#
+--     @enabledLayerCount@ /must/ be 0
+--
+-- -   #VUID-VkDeviceCreateInfo-ppEnabledLayerNames-12385#
+--     @ppEnabledLayerNames@ /must/ be @NULL@
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-VkDeviceCreateInfo-sType-sType# @sType@ /must/ be
@@ -936,6 +1081,7 @@
 --     'Vulkan.Extensions.VK_KHR_pipeline_binary.DevicePipelineBinaryInternalCacheControlKHR',
 --     'Vulkan.Core13.Promoted_From_VK_EXT_private_data.DevicePrivateDataCreateInfo',
 --     'Vulkan.Extensions.VK_ARM_scheduling_controls.DeviceQueueShaderCoreControlCreateInfoARM',
+--     'Vulkan.Extensions.VK_NV_external_compute_queue.ExternalComputeQueueDeviceCreateInfoNV',
 --     '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',
@@ -950,15 +1096,20 @@
 --     'Vulkan.Extensions.VK_EXT_border_color_swizzle.PhysicalDeviceBorderColorSwizzleFeaturesEXT',
 --     'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.PhysicalDeviceBufferDeviceAddressFeatures',
 --     'Vulkan.Extensions.VK_EXT_buffer_device_address.PhysicalDeviceBufferDeviceAddressFeaturesEXT',
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPhysicalDeviceClusterAccelerationStructureFeaturesNV VkPhysicalDeviceClusterAccelerationStructureFeaturesNV>,
 --     'Vulkan.Extensions.VK_HUAWEI_cluster_culling_shader.PhysicalDeviceClusterCullingShaderFeaturesHUAWEI',
 --     'Vulkan.Extensions.VK_AMD_device_coherent_memory.PhysicalDeviceCoherentMemoryFeaturesAMD',
 --     'Vulkan.Extensions.VK_EXT_color_write_enable.PhysicalDeviceColorWriteEnableFeaturesEXT',
 --     'Vulkan.Extensions.VK_NV_command_buffer_inheritance.PhysicalDeviceCommandBufferInheritanceFeaturesNV',
+--     'Vulkan.Extensions.VK_NV_compute_occupancy_priority.PhysicalDeviceComputeOccupancyPriorityFeaturesNV',
 --     'Vulkan.Extensions.VK_KHR_compute_shader_derivatives.PhysicalDeviceComputeShaderDerivativesFeaturesKHR',
 --     'Vulkan.Extensions.VK_EXT_conditional_rendering.PhysicalDeviceConditionalRenderingFeaturesEXT',
 --     'Vulkan.Extensions.VK_NV_cooperative_matrix2.PhysicalDeviceCooperativeMatrix2FeaturesNV',
+--     'Vulkan.Extensions.VK_QCOM_cooperative_matrix_conversion.PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM',
 --     'Vulkan.Extensions.VK_KHR_cooperative_matrix.PhysicalDeviceCooperativeMatrixFeaturesKHR',
 --     'Vulkan.Extensions.VK_NV_cooperative_matrix.PhysicalDeviceCooperativeMatrixFeaturesNV',
+--     'Vulkan.Extensions.VK_NV_cooperative_vector.PhysicalDeviceCooperativeVectorFeaturesNV',
+--     'Vulkan.Extensions.VK_KHR_copy_memory_indirect.PhysicalDeviceCopyMemoryIndirectFeaturesKHR',
 --     'Vulkan.Extensions.VK_NV_copy_memory_indirect.PhysicalDeviceCopyMemoryIndirectFeaturesNV',
 --     'Vulkan.Extensions.VK_NV_corner_sampled_image.PhysicalDeviceCornerSampledImageFeaturesNV',
 --     'Vulkan.Extensions.VK_NV_coverage_reduction_mode.PhysicalDeviceCoverageReductionModeFeaturesNV',
@@ -966,16 +1117,25 @@
 --     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.PhysicalDeviceCubicWeightsFeaturesQCOM',
 --     'Vulkan.Extensions.VK_NV_cuda_kernel_launch.PhysicalDeviceCudaKernelLaunchFeaturesNV',
 --     'Vulkan.Extensions.VK_EXT_custom_border_color.PhysicalDeviceCustomBorderColorFeaturesEXT',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.PhysicalDeviceCustomResolveFeaturesEXT',
+--     'Vulkan.Extensions.VK_ARM_data_graph.PhysicalDeviceDataGraphFeaturesARM',
+--     'Vulkan.Extensions.VK_QCOM_data_graph_model.PhysicalDeviceDataGraphModelFeaturesQCOM',
+--     'Vulkan.Extensions.VK_ARM_data_graph_neural_accelerator_statistics.PhysicalDeviceDataGraphNeuralAcceleratorStatisticsFeaturesARM',
+--     'Vulkan.Extensions.VK_ARM_data_graph_optical_flow.PhysicalDeviceDataGraphOpticalFlowFeaturesARM',
 --     'Vulkan.Extensions.VK_NV_dedicated_allocation_image_aliasing.PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV',
+--     'Vulkan.Extensions.VK_AMDX_dense_geometry_format.PhysicalDeviceDenseGeometryFormatFeaturesAMDX',
 --     'Vulkan.Extensions.VK_EXT_depth_bias_control.PhysicalDeviceDepthBiasControlFeaturesEXT',
 --     'Vulkan.Extensions.VK_EXT_depth_clamp_control.PhysicalDeviceDepthClampControlFeaturesEXT',
---     'Vulkan.Extensions.VK_EXT_depth_clamp_zero_one.PhysicalDeviceDepthClampZeroOneFeaturesEXT',
+--     'Vulkan.Extensions.VK_KHR_depth_clamp_zero_one.PhysicalDeviceDepthClampZeroOneFeaturesKHR',
 --     'Vulkan.Extensions.VK_EXT_depth_clip_control.PhysicalDeviceDepthClipControlFeaturesEXT',
 --     'Vulkan.Extensions.VK_EXT_depth_clip_enable.PhysicalDeviceDepthClipEnableFeaturesEXT',
 --     'Vulkan.Extensions.VK_EXT_descriptor_buffer.PhysicalDeviceDescriptorBufferFeaturesEXT',
+--     'Vulkan.Extensions.VK_ARM_tensors.PhysicalDeviceDescriptorBufferTensorFeaturesARM',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.PhysicalDeviceDescriptorHeapFeaturesEXT',
 --     'Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.PhysicalDeviceDescriptorIndexingFeatures',
 --     'Vulkan.Extensions.VK_NV_descriptor_pool_overallocation.PhysicalDeviceDescriptorPoolOverallocationFeaturesNV',
 --     'Vulkan.Extensions.VK_VALVE_descriptor_set_host_mapping.PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE',
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.PhysicalDeviceDeviceAddressCommandsFeaturesKHR',
 --     'Vulkan.Extensions.VK_NV_device_generated_commands_compute.PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV',
 --     'Vulkan.Extensions.VK_EXT_device_generated_commands.PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT',
 --     'Vulkan.Extensions.VK_NV_device_generated_commands.PhysicalDeviceDeviceGeneratedCommandsFeaturesNV',
@@ -983,8 +1143,9 @@
 --     'Vulkan.Extensions.VK_NV_device_diagnostics_config.PhysicalDeviceDiagnosticsConfigFeaturesNV',
 --     'Vulkan.Extensions.VK_NV_displacement_micromap.PhysicalDeviceDisplacementMicromapFeaturesNV',
 --     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PhysicalDeviceDynamicRenderingFeatures',
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR',
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.PhysicalDeviceDynamicRenderingLocalReadFeatures',
 --     'Vulkan.Extensions.VK_EXT_dynamic_rendering_unused_attachments.PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT',
+--     'Vulkan.Extensions.VK_QCOM_elapsed_timer_query.PhysicalDeviceElapsedTimerQueryFeaturesQCOM',
 --     'Vulkan.Extensions.VK_NV_scissor_exclusive.PhysicalDeviceExclusiveScissorFeaturesNV',
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.PhysicalDeviceExtendedDynamicState2FeaturesEXT',
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.PhysicalDeviceExtendedDynamicState3FeaturesEXT',
@@ -994,44 +1155,54 @@
 --     'Vulkan.Extensions.VK_NV_external_memory_rdma.PhysicalDeviceExternalMemoryRDMAFeaturesNV',
 --     'Vulkan.Extensions.VK_QNX_external_memory_screen_buffer.PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX',
 --     'Vulkan.Extensions.VK_EXT_device_fault.PhysicalDeviceFaultFeaturesEXT',
+--     'Vulkan.Extensions.VK_KHR_device_fault.PhysicalDeviceFaultFeaturesKHR',
 --     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Extensions.VK_ARM_format_pack.PhysicalDeviceFormatPackFeaturesARM',
 --     'Vulkan.Extensions.VK_EXT_fragment_density_map2.PhysicalDeviceFragmentDensityMap2FeaturesEXT',
 --     'Vulkan.Extensions.VK_EXT_fragment_density_map.PhysicalDeviceFragmentDensityMapFeaturesEXT',
---     'Vulkan.Extensions.VK_QCOM_fragment_density_map_offset.PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM',
+--     'Vulkan.Extensions.VK_VALVE_fragment_density_map_layered.PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE',
+--     'Vulkan.Extensions.VK_EXT_fragment_density_map_offset.PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT',
 --     'Vulkan.Extensions.VK_KHR_fragment_shader_barycentric.PhysicalDeviceFragmentShaderBarycentricFeaturesKHR',
 --     '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_frame_boundary.PhysicalDeviceFrameBoundaryFeaturesEXT',
---     'Vulkan.Extensions.VK_KHR_global_priority.PhysicalDeviceGlobalPriorityQueryFeaturesKHR',
+--     'Vulkan.Core14.Promoted_From_VK_KHR_global_priority.PhysicalDeviceGlobalPriorityQueryFeatures',
+--     'Vulkan.Extensions.VK_AMD_gpa_interface.PhysicalDeviceGpaFeaturesAMD',
 --     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT',
 --     'Vulkan.Extensions.VK_HUAWEI_hdr_vivid.PhysicalDeviceHdrVividFeaturesHUAWEI',
---     'Vulkan.Extensions.VK_EXT_host_image_copy.PhysicalDeviceHostImageCopyFeaturesEXT',
+--     'Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy.PhysicalDeviceHostImageCopyFeatures',
 --     'Vulkan.Core12.Promoted_From_VK_EXT_host_query_reset.PhysicalDeviceHostQueryResetFeatures',
 --     'Vulkan.Extensions.VK_EXT_image_2d_view_of_3d.PhysicalDeviceImage2DViewOf3DFeaturesEXT',
 --     'Vulkan.Extensions.VK_MESA_image_alignment_control.PhysicalDeviceImageAlignmentControlFeaturesMESA',
 --     'Vulkan.Extensions.VK_EXT_image_compression_control.PhysicalDeviceImageCompressionControlFeaturesEXT',
 --     'Vulkan.Extensions.VK_EXT_image_compression_control_swapchain.PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT',
 --     'Vulkan.Extensions.VK_QCOM_image_processing2.PhysicalDeviceImageProcessing2FeaturesQCOM',
+--     'Vulkan.Extensions.VK_QCOM_image_processing3.PhysicalDeviceImageProcessing3FeaturesQCOM',
 --     'Vulkan.Extensions.VK_QCOM_image_processing.PhysicalDeviceImageProcessingFeaturesQCOM',
 --     'Vulkan.Core13.Promoted_From_VK_EXT_image_robustness.PhysicalDeviceImageRobustnessFeatures',
 --     'Vulkan.Extensions.VK_EXT_image_sliced_view_of_3d.PhysicalDeviceImageSlicedViewOf3DFeaturesEXT',
 --     'Vulkan.Extensions.VK_EXT_image_view_min_lod.PhysicalDeviceImageViewMinLodFeaturesEXT',
 --     'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.PhysicalDeviceImagelessFramebufferFeatures',
---     'Vulkan.Extensions.VK_KHR_index_type_uint8.PhysicalDeviceIndexTypeUint8FeaturesKHR',
+--     'Vulkan.Core14.Promoted_From_VK_KHR_index_type_uint8.PhysicalDeviceIndexTypeUint8Features',
 --     'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.PhysicalDeviceInheritedViewportScissorFeaturesNV',
 --     'Vulkan.Core13.Promoted_From_VK_EXT_inline_uniform_block.PhysicalDeviceInlineUniformBlockFeatures',
+--     'Vulkan.Extensions.VK_KHR_internally_synchronized_queues.PhysicalDeviceInternallySynchronizedQueuesFeaturesKHR',
 --     'Vulkan.Extensions.VK_HUAWEI_invocation_mask.PhysicalDeviceInvocationMaskFeaturesHUAWEI',
 --     'Vulkan.Extensions.VK_EXT_legacy_dithering.PhysicalDeviceLegacyDitheringFeaturesEXT',
 --     'Vulkan.Extensions.VK_EXT_legacy_vertex_attributes.PhysicalDeviceLegacyVertexAttributesFeaturesEXT',
---     'Vulkan.Extensions.VK_KHR_line_rasterization.PhysicalDeviceLineRasterizationFeaturesKHR',
+--     'Vulkan.Core14.Promoted_From_VK_KHR_line_rasterization.PhysicalDeviceLineRasterizationFeatures',
 --     'Vulkan.Extensions.VK_NV_linear_color_attachment.PhysicalDeviceLinearColorAttachmentFeaturesNV',
+--     'Vulkan.Extensions.VK_KHR_maintenance10.PhysicalDeviceMaintenance10FeaturesKHR',
+--     'Vulkan.Extensions.VK_KHR_maintenance11.PhysicalDeviceMaintenance11FeaturesKHR',
 --     'Vulkan.Core13.Promoted_From_VK_KHR_maintenance4.PhysicalDeviceMaintenance4Features',
---     'Vulkan.Extensions.VK_KHR_maintenance5.PhysicalDeviceMaintenance5FeaturesKHR',
---     'Vulkan.Extensions.VK_KHR_maintenance6.PhysicalDeviceMaintenance6FeaturesKHR',
+--     'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.PhysicalDeviceMaintenance5Features',
+--     'Vulkan.Core14.Promoted_From_VK_KHR_maintenance6.PhysicalDeviceMaintenance6Features',
 --     'Vulkan.Extensions.VK_KHR_maintenance7.PhysicalDeviceMaintenance7FeaturesKHR',
+--     'Vulkan.Extensions.VK_KHR_maintenance8.PhysicalDeviceMaintenance8FeaturesKHR',
+--     'Vulkan.Extensions.VK_KHR_maintenance9.PhysicalDeviceMaintenance9FeaturesKHR',
 --     'Vulkan.Extensions.VK_EXT_map_memory_placed.PhysicalDeviceMapMemoryPlacedFeaturesEXT',
---     'Vulkan.Extensions.VK_NV_memory_decompression.PhysicalDeviceMemoryDecompressionFeaturesNV',
+--     'Vulkan.Extensions.VK_EXT_memory_decompression.PhysicalDeviceMemoryDecompressionFeaturesEXT',
 --     'Vulkan.Extensions.VK_EXT_memory_priority.PhysicalDeviceMemoryPriorityFeaturesEXT',
 --     'Vulkan.Extensions.VK_EXT_mesh_shader.PhysicalDeviceMeshShaderFeaturesEXT',
 --     'Vulkan.Extensions.VK_NV_mesh_shader.PhysicalDeviceMeshShaderFeaturesNV',
@@ -1044,32 +1215,46 @@
 --     'Vulkan.Extensions.VK_EXT_nested_command_buffer.PhysicalDeviceNestedCommandBufferFeaturesEXT',
 --     'Vulkan.Extensions.VK_EXT_non_seamless_cube_map.PhysicalDeviceNonSeamlessCubeMapFeaturesEXT',
 --     'Vulkan.Extensions.VK_EXT_opacity_micromap.PhysicalDeviceOpacityMicromapFeaturesEXT',
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.PhysicalDeviceOpacityMicromapFeaturesKHR',
 --     'Vulkan.Extensions.VK_NV_optical_flow.PhysicalDeviceOpticalFlowFeaturesNV',
 --     'Vulkan.Extensions.VK_EXT_pageable_device_local_memory.PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT',
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPhysicalDevicePartitionedAccelerationStructureFeaturesNV VkPhysicalDevicePartitionedAccelerationStructureFeaturesNV>,
 --     'Vulkan.Extensions.VK_NV_per_stage_descriptor_set.PhysicalDevicePerStageDescriptorSetFeaturesNV',
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPhysicalDevicePerformanceCountersByRegionFeaturesARM VkPhysicalDevicePerformanceCountersByRegionFeaturesARM>,
 --     'Vulkan.Extensions.VK_KHR_performance_query.PhysicalDevicePerformanceQueryFeaturesKHR',
 --     'Vulkan.Extensions.VK_KHR_pipeline_binary.PhysicalDevicePipelineBinaryFeaturesKHR',
+--     'Vulkan.Extensions.VK_SEC_pipeline_cache_incremental_mode.PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC',
 --     'Vulkan.Core13.Promoted_From_VK_EXT_pipeline_creation_cache_control.PhysicalDevicePipelineCreationCacheControlFeatures',
 --     'Vulkan.Extensions.VK_KHR_pipeline_executable_properties.PhysicalDevicePipelineExecutablePropertiesFeaturesKHR',
 --     'Vulkan.Extensions.VK_EXT_pipeline_library_group_handles.PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT',
+--     'Vulkan.Extensions.VK_ARM_pipeline_opacity_micromap.PhysicalDevicePipelineOpacityMicromapFeaturesARM',
 --     'Vulkan.Extensions.VK_EXT_pipeline_properties.PhysicalDevicePipelinePropertiesFeaturesEXT',
---     'Vulkan.Extensions.VK_EXT_pipeline_protected_access.PhysicalDevicePipelineProtectedAccessFeaturesEXT',
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PhysicalDevicePipelineRobustnessFeaturesEXT',
+--     'Vulkan.Core14.Promoted_From_VK_EXT_pipeline_protected_access.PhysicalDevicePipelineProtectedAccessFeatures',
+--     'Vulkan.Core14.Promoted_From_VK_EXT_pipeline_robustness.PhysicalDevicePipelineRobustnessFeatures',
 --     'Vulkan.Extensions.VK_KHR_portability_subset.PhysicalDevicePortabilitySubsetFeaturesKHR',
 --     'Vulkan.Extensions.VK_NV_present_barrier.PhysicalDevicePresentBarrierFeaturesNV',
+--     'Vulkan.Extensions.VK_KHR_present_id2.PhysicalDevicePresentId2FeaturesKHR',
 --     'Vulkan.Extensions.VK_KHR_present_id.PhysicalDevicePresentIdFeaturesKHR',
---     'Vulkan.Extensions.VK_EXT_present_mode_fifo_latest_ready.PhysicalDevicePresentModeFifoLatestReadyFeaturesEXT',
+--     'Vulkan.Extensions.VK_NV_present_metering.PhysicalDevicePresentMeteringFeaturesNV',
+--     'Vulkan.Extensions.VK_KHR_present_mode_fifo_latest_ready.PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR',
+--     'Vulkan.Extensions.VK_EXT_present_timing.PhysicalDevicePresentTimingFeaturesEXT',
+--     'Vulkan.Extensions.VK_KHR_present_wait2.PhysicalDevicePresentWait2FeaturesKHR',
 --     'Vulkan.Extensions.VK_KHR_present_wait.PhysicalDevicePresentWaitFeaturesKHR',
+--     'Vulkan.Extensions.VK_EXT_primitive_restart_index.PhysicalDevicePrimitiveRestartIndexFeaturesEXT',
 --     'Vulkan.Extensions.VK_EXT_primitive_topology_list_restart.PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT',
 --     'Vulkan.Extensions.VK_EXT_primitives_generated_query.PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT',
 --     '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_NV_push_constant_bank.PhysicalDevicePushConstantBankFeaturesNV',
+--     'Vulkan.Extensions.VK_QCOM_queue_perf_hint.PhysicalDeviceQueuePerfHintFeaturesQCOM',
 --     'Vulkan.Extensions.VK_EXT_rgba10x6_formats.PhysicalDeviceRGBA10X6FormatsFeaturesEXT',
 --     'Vulkan.Extensions.VK_EXT_rasterization_order_attachment_access.PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT',
 --     'Vulkan.Extensions.VK_NV_raw_access_chains.PhysicalDeviceRawAccessChainsFeaturesNV',
 --     'Vulkan.Extensions.VK_KHR_ray_query.PhysicalDeviceRayQueryFeaturesKHR',
+--     'Vulkan.Extensions.VK_EXT_ray_tracing_invocation_reorder.PhysicalDeviceRayTracingInvocationReorderFeaturesEXT',
 --     'Vulkan.Extensions.VK_NV_ray_tracing_invocation_reorder.PhysicalDeviceRayTracingInvocationReorderFeaturesNV',
+--     'Vulkan.Extensions.VK_NV_ray_tracing_linear_swept_spheres.PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV',
 --     'Vulkan.Extensions.VK_KHR_ray_tracing_maintenance1.PhysicalDeviceRayTracingMaintenance1FeaturesKHR',
 --     'Vulkan.Extensions.VK_NV_ray_tracing_motion_blur.PhysicalDeviceRayTracingMotionBlurFeaturesNV',
 --     'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.PhysicalDeviceRayTracingPipelineFeaturesKHR',
@@ -1078,87 +1263,109 @@
 --     'Vulkan.Extensions.VK_IMG_relaxed_line_rasterization.PhysicalDeviceRelaxedLineRasterizationFeaturesIMG',
 --     'Vulkan.Extensions.VK_ARM_render_pass_striped.PhysicalDeviceRenderPassStripedFeaturesARM',
 --     'Vulkan.Extensions.VK_NV_representative_fragment_test.PhysicalDeviceRepresentativeFragmentTestFeaturesNV',
---     'Vulkan.Extensions.VK_EXT_robustness2.PhysicalDeviceRobustness2FeaturesEXT',
+--     'Vulkan.Extensions.VK_KHR_robustness2.PhysicalDeviceRobustness2FeaturesKHR',
 --     'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.PhysicalDeviceSamplerYcbcrConversionFeatures',
 --     'Vulkan.Core12.Promoted_From_VK_EXT_scalar_block_layout.PhysicalDeviceScalarBlockLayoutFeatures',
 --     'Vulkan.Extensions.VK_ARM_scheduling_controls.PhysicalDeviceSchedulingControlsFeaturesARM',
 --     'Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts.PhysicalDeviceSeparateDepthStencilLayoutsFeatures',
+--     'Vulkan.Extensions.VK_EXT_shader_64bit_indexing.PhysicalDeviceShader64BitIndexingFeaturesEXT',
+--     'Vulkan.Extensions.VK_KHR_shader_abort.PhysicalDeviceShaderAbortFeaturesKHR',
 --     'Vulkan.Extensions.VK_NV_shader_atomic_float16_vector.PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV',
 --     'Vulkan.Extensions.VK_EXT_shader_atomic_float2.PhysicalDeviceShaderAtomicFloat2FeaturesEXT',
 --     'Vulkan.Extensions.VK_EXT_shader_atomic_float.PhysicalDeviceShaderAtomicFloatFeaturesEXT',
 --     'Vulkan.Core12.Promoted_From_VK_KHR_shader_atomic_int64.PhysicalDeviceShaderAtomicInt64Features',
+--     'Vulkan.Extensions.VK_KHR_shader_bfloat16.PhysicalDeviceShaderBfloat16FeaturesKHR',
 --     'Vulkan.Extensions.VK_KHR_shader_clock.PhysicalDeviceShaderClockFeaturesKHR',
+--     'Vulkan.Extensions.VK_KHR_shader_constant_data.PhysicalDeviceShaderConstantDataFeaturesKHR',
 --     'Vulkan.Extensions.VK_ARM_shader_core_builtins.PhysicalDeviceShaderCoreBuiltinsFeaturesARM',
 --     'Vulkan.Core13.Promoted_From_VK_EXT_shader_demote_to_helper_invocation.PhysicalDeviceShaderDemoteToHelperInvocationFeatures',
 --     'Vulkan.Core11.Promoted_From_VK_KHR_shader_draw_parameters.PhysicalDeviceShaderDrawParametersFeatures',
 --     'Vulkan.Extensions.VK_AMD_shader_early_and_late_fragment_tests.PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD',
 --     'Vulkan.Extensions.VK_AMDX_shader_enqueue.PhysicalDeviceShaderEnqueueFeaturesAMDX',
---     'Vulkan.Extensions.VK_KHR_shader_expect_assume.PhysicalDeviceShaderExpectAssumeFeaturesKHR',
+--     'Vulkan.Core14.Promoted_From_VK_KHR_shader_expect_assume.PhysicalDeviceShaderExpectAssumeFeatures',
 --     'Vulkan.Core12.Promoted_From_VK_KHR_shader_float16_int8.PhysicalDeviceShaderFloat16Int8Features',
---     'Vulkan.Extensions.VK_KHR_shader_float_controls2.PhysicalDeviceShaderFloatControls2FeaturesKHR',
+--     'Vulkan.Extensions.VK_EXT_shader_float8.PhysicalDeviceShaderFloat8FeaturesEXT',
+--     'Vulkan.Core14.Promoted_From_VK_KHR_shader_float_controls2.PhysicalDeviceShaderFloatControls2Features',
+--     'Vulkan.Extensions.VK_KHR_shader_fma.PhysicalDeviceShaderFmaFeaturesKHR',
 --     'Vulkan.Extensions.VK_EXT_shader_image_atomic_int64.PhysicalDeviceShaderImageAtomicInt64FeaturesEXT',
 --     'Vulkan.Extensions.VK_NV_shader_image_footprint.PhysicalDeviceShaderImageFootprintFeaturesNV',
+--     'Vulkan.Extensions.VK_ARM_shader_instrumentation.PhysicalDeviceShaderInstrumentationFeaturesARM',
 --     'Vulkan.Core13.Promoted_From_VK_KHR_shader_integer_dot_product.PhysicalDeviceShaderIntegerDotProductFeatures',
 --     'Vulkan.Extensions.VK_INTEL_shader_integer_functions2.PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL',
+--     'Vulkan.Extensions.VK_EXT_shader_long_vector.PhysicalDeviceShaderLongVectorFeaturesEXT',
 --     'Vulkan.Extensions.VK_KHR_shader_maximal_reconvergence.PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR',
+--     'Vulkan.Extensions.VK_VALVE_shader_mixed_float_dot_product.PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE',
 --     'Vulkan.Extensions.VK_EXT_shader_module_identifier.PhysicalDeviceShaderModuleIdentifierFeaturesEXT',
+--     'Vulkan.Extensions.VK_QCOM_shader_multiple_wait_queues.PhysicalDeviceShaderMultipleWaitQueuesFeaturesQCOM',
 --     'Vulkan.Extensions.VK_EXT_shader_object.PhysicalDeviceShaderObjectFeaturesEXT',
 --     'Vulkan.Extensions.VK_KHR_shader_quad_control.PhysicalDeviceShaderQuadControlFeaturesKHR',
 --     'Vulkan.Extensions.VK_KHR_shader_relaxed_extended_instruction.PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR',
 --     'Vulkan.Extensions.VK_EXT_shader_replicated_composites.PhysicalDeviceShaderReplicatedCompositesFeaturesEXT',
 --     'Vulkan.Extensions.VK_NV_shader_sm_builtins.PhysicalDeviceShaderSMBuiltinsFeaturesNV',
+--     'Vulkan.Extensions.VK_EXT_shader_split_barrier.PhysicalDeviceShaderSplitBarrierFeaturesEXT',
 --     'Vulkan.Core12.Promoted_From_VK_KHR_shader_subgroup_extended_types.PhysicalDeviceShaderSubgroupExtendedTypesFeatures',
---     'Vulkan.Extensions.VK_KHR_shader_subgroup_rotate.PhysicalDeviceShaderSubgroupRotateFeaturesKHR',
+--     'Vulkan.Extensions.VK_EXT_shader_subgroup_partitioned.PhysicalDeviceShaderSubgroupPartitionedFeaturesEXT',
+--     'Vulkan.Core14.Promoted_From_VK_KHR_shader_subgroup_rotate.PhysicalDeviceShaderSubgroupRotateFeatures',
 --     'Vulkan.Extensions.VK_KHR_shader_subgroup_uniform_control_flow.PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR',
 --     'Vulkan.Core13.Promoted_From_VK_KHR_shader_terminate_invocation.PhysicalDeviceShaderTerminateInvocationFeatures',
 --     'Vulkan.Extensions.VK_EXT_shader_tile_image.PhysicalDeviceShaderTileImageFeaturesEXT',
+--     'Vulkan.Extensions.VK_EXT_shader_uniform_buffer_unsized_array.PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT',
+--     'Vulkan.Extensions.VK_KHR_shader_untyped_pointers.PhysicalDeviceShaderUntypedPointersFeaturesKHR',
 --     'Vulkan.Extensions.VK_NV_shading_rate_image.PhysicalDeviceShadingRateImageFeaturesNV',
 --     'Vulkan.Core13.Promoted_From_VK_EXT_subgroup_size_control.PhysicalDeviceSubgroupSizeControlFeatures',
 --     'Vulkan.Extensions.VK_EXT_subpass_merge_feedback.PhysicalDeviceSubpassMergeFeedbackFeaturesEXT',
 --     'Vulkan.Extensions.VK_HUAWEI_subpass_shading.PhysicalDeviceSubpassShadingFeaturesHUAWEI',
---     'Vulkan.Extensions.VK_EXT_swapchain_maintenance1.PhysicalDeviceSwapchainMaintenance1FeaturesEXT',
+--     'Vulkan.Extensions.VK_KHR_swapchain_maintenance1.PhysicalDeviceSwapchainMaintenance1FeaturesKHR',
 --     'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.PhysicalDeviceSynchronization2Features',
+--     'Vulkan.Extensions.VK_ARM_tensors.PhysicalDeviceTensorFeaturesARM',
 --     'Vulkan.Extensions.VK_EXT_texel_buffer_alignment.PhysicalDeviceTexelBufferAlignmentFeaturesEXT',
+--     'Vulkan.Extensions.VK_EXT_texture_compression_astc_3d.PhysicalDeviceTextureCompressionASTC3DFeaturesEXT',
 --     'Vulkan.Core13.Promoted_From_VK_EXT_texture_compression_astc_hdr.PhysicalDeviceTextureCompressionASTCHDRFeatures',
+--     'Vulkan.Extensions.VK_SEC_throttle_hint.PhysicalDeviceThrottleHintFeaturesSEC',
+--     'Vulkan.Extensions.VK_QCOM_tile_memory_heap.PhysicalDeviceTileMemoryHeapFeaturesQCOM',
 --     'Vulkan.Extensions.VK_QCOM_tile_properties.PhysicalDeviceTilePropertiesFeaturesQCOM',
+--     'Vulkan.Extensions.VK_QCOM_tile_shading.PhysicalDeviceTileShadingFeaturesQCOM',
 --     'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.PhysicalDeviceTimelineSemaphoreFeatures',
 --     'Vulkan.Extensions.VK_EXT_transform_feedback.PhysicalDeviceTransformFeedbackFeaturesEXT',
+--     'Vulkan.Extensions.VK_KHR_unified_image_layouts.PhysicalDeviceUnifiedImageLayoutsFeaturesKHR',
 --     'Vulkan.Core12.Promoted_From_VK_KHR_uniform_buffer_standard_layout.PhysicalDeviceUniformBufferStandardLayoutFeatures',
 --     'Vulkan.Core11.Promoted_From_VK_KHR_variable_pointers.PhysicalDeviceVariablePointersFeatures',
---     'Vulkan.Extensions.VK_KHR_vertex_attribute_divisor.PhysicalDeviceVertexAttributeDivisorFeaturesKHR',
+--     'Vulkan.Core14.Promoted_From_VK_KHR_vertex_attribute_divisor.PhysicalDeviceVertexAttributeDivisorFeatures',
 --     'Vulkan.Extensions.VK_EXT_vertex_attribute_robustness.PhysicalDeviceVertexAttributeRobustnessFeaturesEXT',
 --     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.PhysicalDeviceVertexInputDynamicStateFeaturesEXT',
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPhysicalDeviceVideoDecodeVP9FeaturesKHR VkPhysicalDeviceVideoDecodeVP9FeaturesKHR>,
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPhysicalDeviceVideoEncodeAV1FeaturesKHR VkPhysicalDeviceVideoEncodeAV1FeaturesKHR>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR VkPhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR>,
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE VkPhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE>,
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPhysicalDeviceVideoMaintenance1FeaturesKHR VkPhysicalDeviceVideoMaintenance1FeaturesKHR>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPhysicalDeviceVideoMaintenance2FeaturesKHR VkPhysicalDeviceVideoMaintenance2FeaturesKHR>,
 --     'Vulkan.Core12.PhysicalDeviceVulkan11Features',
 --     'Vulkan.Core12.PhysicalDeviceVulkan12Features',
 --     'Vulkan.Core13.PhysicalDeviceVulkan13Features',
+--     'Vulkan.Core14.PhysicalDeviceVulkan14Features',
 --     '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_QCOM_ycbcr_degamma.PhysicalDeviceYcbcrDegammaFeaturesQCOM',
 --     'Vulkan.Extensions.VK_EXT_ycbcr_image_arrays.PhysicalDeviceYcbcrImageArraysFeaturesEXT',
+--     'Vulkan.Extensions.VK_EXT_zero_initialize_device_memory.PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT',
 --     or
 --     '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
+--     structure in the @pNext@ chain /must/ be unique, with the exception
+--     of structures of type
 --     'Vulkan.Extensions.VK_EXT_device_memory_report.DeviceDeviceMemoryReportCreateInfoEXT'
 --     or
 --     'Vulkan.Core13.Promoted_From_VK_EXT_private_data.DevicePrivateDataCreateInfo'
 --
 -- -   #VUID-VkDeviceCreateInfo-flags-zerobitmask# @flags@ /must/ be @0@
 --
--- -   #VUID-VkDeviceCreateInfo-pQueueCreateInfos-parameter#
---     @pQueueCreateInfos@ /must/ be a valid pointer to an array of
---     @queueCreateInfoCount@ valid 'DeviceQueueCreateInfo' structures
---
--- -   #VUID-VkDeviceCreateInfo-ppEnabledLayerNames-parameter# If
---     @enabledLayerCount@ is not @0@, @ppEnabledLayerNames@ /must/ be a
---     valid pointer to an array of @enabledLayerCount@ null-terminated
---     UTF-8 strings
+-- -   #VUID-VkDeviceCreateInfo-pQueueCreateInfos-parameter# If
+--     @queueCreateInfoCount@ is not @0@, @pQueueCreateInfos@ /must/ be a
+--     valid pointer to an array of @queueCreateInfoCount@ valid
+--     'DeviceQueueCreateInfo' structures
 --
 -- -   #VUID-VkDeviceCreateInfo-ppEnabledExtensionNames-parameter# If
 --     @enabledExtensionCount@ is not @0@, @ppEnabledExtensionNames@ /must/
@@ -1171,9 +1378,6 @@
 --     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceFeatures'
 --     structure
 --
--- -   #VUID-VkDeviceCreateInfo-queueCreateInfoCount-arraylength#
---     @queueCreateInfoCount@ /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>,
@@ -1189,24 +1393,26 @@
   , -- | @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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-queue-creation Queue Creation>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#devsandqueues-queue-creation Queue Creation>
     -- section below for further details.
     queueCreateInfos :: Vector (SomeStruct DeviceQueueCreateInfo)
-  , -- | @ppEnabledLayerNames@ is deprecated and ignored. See
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#extendingvulkan-layers-devicelayerdeprecation>.
+  , -- | @ppEnabledLayerNames@ is legacy and not used. Implementations /must/ not
+    -- access this parameter. It /must/ be @NULL@. See
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#legacy-devicelayers>.
     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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#extendingvulkan-extensions>
+    -- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features Features>
-    -- section for further details.
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features Features>
+    -- section for further details. This field is legacy. See
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#legacy-gpdp2>.
     enabledFeatures :: Maybe PhysicalDeviceFeatures
   }
   deriving (Typeable)
@@ -1221,22 +1427,56 @@
   getNext DeviceCreateInfo{..} = next
   extends :: forall e b proxy. Typeable e => proxy e -> (Extends DeviceCreateInfo e => b) -> Maybe b
   extends _ f
+    | Just Refl <- eqT @e @PhysicalDeviceDataGraphOpticalFlowFeaturesARM = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceShaderAbortFeaturesKHR = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceShaderConstantDataFeaturesKHR = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceDeviceAddressCommandsFeaturesKHR = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceShaderInstrumentationFeaturesARM = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceDescriptorHeapFeaturesEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceShaderSplitBarrierFeaturesEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceShaderSubgroupPartitionedFeaturesEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceTextureCompressionASTC3DFeaturesEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceShaderLongVectorFeaturesEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceComputeOccupancyPriorityFeaturesNV = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceQueuePerfHintFeaturesQCOM = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceShader64BitIndexingFeaturesEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceShaderUntypedPointersFeaturesKHR = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceDataGraphModelFeaturesQCOM = Just f
+    | Just Refl <- eqT @e @PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceDataGraphFeaturesARM = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceShaderFloat8FeaturesEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceDescriptorBufferTensorFeaturesARM = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceTensorFeaturesARM = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceThrottleHintFeaturesSEC = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceFormatPackFeaturesARM = Just f
+    | Just Refl <- eqT @e @PhysicalDevicePrimitiveRestartIndexFeaturesEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT = Just f
+    | Just Refl <- eqT @e @ExternalComputeQueueDeviceCreateInfoNV = Just f
+    | Just Refl <- eqT @e @PhysicalDevicePresentMeteringFeaturesNV = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceTileShadingFeaturesQCOM = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceCooperativeVectorFeaturesNV = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceDepthClampZeroOneFeaturesKHR = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceDenseGeometryFormatFeaturesAMDX = Just f
     | Just Refl <- eqT @e @PhysicalDeviceVertexAttributeRobustnessFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceHdrVividFeaturesHUAWEI = Just f
     | Just Refl <- eqT @e @PhysicalDeviceCooperativeMatrix2FeaturesNV = Just f
-    | Just Refl <- eqT @e @PhysicalDevicePresentModeFifoLatestReadyFeaturesEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR = Just f
     | Just Refl <- eqT @e @PhysicalDeviceShaderReplicatedCompositesFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceImageAlignmentControlFeaturesMESA = Just f
     | Just Refl <- eqT @e @PhysicalDeviceCommandBufferInheritanceFeaturesNV = Just f
     | Just Refl <- eqT @e @PhysicalDeviceRawAccessChainsFeaturesNV = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceShaderBfloat16FeaturesKHR = Just f
     | Just Refl <- eqT @e @PhysicalDeviceMapMemoryPlacedFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV = Just f
     | Just Refl <- eqT @e @PhysicalDeviceShaderQuadControlFeaturesKHR = Just f
-    | Just Refl <- eqT @e @PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR = Just f
-    | Just Refl <- eqT @e @PhysicalDeviceShaderFloatControls2FeaturesKHR = Just f
-    | Just Refl <- eqT @e @PhysicalDeviceShaderExpectAssumeFeaturesKHR = Just f
-    | Just Refl <- eqT @e @PhysicalDeviceShaderSubgroupRotateFeaturesKHR = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceDynamicRenderingLocalReadFeatures = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceShaderFloatControls2Features = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceShaderExpectAssumeFeatures = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceShaderSubgroupRotateFeatures = Just f
     | Just Refl <- eqT @e @PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR = Just f
+    | Just Refl <- eqT @e @PhysicalDevicePipelineOpacityMicromapFeaturesARM = Just f
     | Just Refl <- eqT @e @PhysicalDeviceRenderPassStripedFeaturesARM = Just f
     | Just Refl <- eqT @e @PhysicalDeviceRelaxedLineRasterizationFeaturesIMG = Just f
     | Just Refl <- eqT @e @PhysicalDeviceSchedulingControlsFeaturesARM = Just f
@@ -1245,12 +1485,15 @@
     | Just Refl <- eqT @e @PhysicalDeviceExternalFormatResolveFeaturesANDROID = Just f
     | Just Refl <- eqT @e @PhysicalDevicePerStageDescriptorSetFeaturesNV = Just f
     | Just Refl <- eqT @e @PhysicalDeviceDescriptorPoolOverallocationFeaturesNV = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceImageProcessing3FeaturesQCOM = Just f
     | Just Refl <- eqT @e @PhysicalDeviceImageProcessing2FeaturesQCOM = Just f
     | Just Refl <- eqT @e @PhysicalDeviceCubicWeightsFeaturesQCOM = Just f
     | Just Refl <- eqT @e @PhysicalDeviceYcbcrDegammaFeaturesQCOM = Just f
     | Just Refl <- eqT @e @PhysicalDeviceCubicClampFeaturesQCOM = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceTileMemoryHeapFeaturesQCOM = Just f
     | Just Refl <- eqT @e @PhysicalDeviceAntiLagFeaturesAMD = Just f
     | Just Refl <- eqT @e @PhysicalDeviceShaderEnqueueFeaturesAMDX = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM = Just f
     | Just Refl <- eqT @e @PhysicalDeviceCooperativeMatrixFeaturesKHR = Just f
     | Just Refl <- eqT @e @PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX = Just f
     | Just Refl <- eqT @e @PhysicalDeviceShaderTileImageFeaturesEXT = Just f
@@ -1260,32 +1503,37 @@
     | Just Refl <- eqT @e @PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM = Just f
     | Just Refl <- eqT @e @PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV = Just f
     | Just Refl <- eqT @e @PhysicalDeviceRayTracingInvocationReorderFeaturesNV = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceRayTracingInvocationReorderFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceDepthBiasControlFeaturesEXT = Just f
-    | Just Refl <- eqT @e @PhysicalDeviceSwapchainMaintenance1FeaturesEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceSwapchainMaintenance1FeaturesKHR = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceInternallySynchronizedQueuesFeaturesKHR = Just f
     | Just Refl <- eqT @e @PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceFrameBoundaryFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceShaderCoreBuiltinsFeaturesARM = Just f
     | Just Refl <- eqT @e @PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceFaultFeaturesKHR = Just f
     | Just Refl <- eqT @e @PhysicalDeviceFaultFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceOpticalFlowFeaturesNV = Just f
     | Just Refl <- eqT @e @PhysicalDeviceAddressBindingReportFeaturesEXT = Just f
-    | Just Refl <- eqT @e @PhysicalDeviceDepthClampZeroOneFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceAmigoProfilingFeaturesSEC = Just f
     | Just Refl <- eqT @e @PhysicalDeviceTilePropertiesFeaturesQCOM = Just f
     | Just Refl <- eqT @e @PhysicalDeviceImageProcessingFeaturesQCOM = Just f
-    | Just Refl <- eqT @e @PhysicalDevicePipelineRobustnessFeaturesEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceShaderMultipleWaitQueuesFeaturesQCOM = Just f
+    | Just Refl <- eqT @e @PhysicalDevicePipelineRobustnessFeatures = Just f
     | Just Refl <- eqT @e @PhysicalDeviceNonSeamlessCubeMapFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD = Just f
     | Just Refl <- eqT @e @PhysicalDevicePipelinePropertiesFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceDisplacementMicromapFeaturesNV = Just f
     | Just Refl <- eqT @e @PhysicalDeviceOpacityMicromapFeaturesEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceOpacityMicromapFeaturesKHR = Just f
     | Just Refl <- eqT @e @PhysicalDeviceSubpassMergeFeedbackFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceImageCompressionControlFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceShaderModuleIdentifierFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceNestedCommandBufferFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceDataGraphNeuralAcceleratorStatisticsFeaturesARM = Just f
     | Just Refl <- eqT @e @DevicePipelineBinaryInternalCacheControlKHR = Just f
     | Just Refl <- eqT @e @PhysicalDevicePipelineBinaryFeaturesKHR = Just f
     | Just Refl <- eqT @e @PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT = Just f
@@ -1294,19 +1542,22 @@
     | Just Refl <- eqT @e @PhysicalDeviceImageViewMinLodFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceDynamicRenderingFeatures = Just f
     | Just Refl <- eqT @e @PhysicalDeviceRGBA10X6FormatsFeaturesEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV = Just f
     | Just Refl <- eqT @e @PhysicalDeviceRayTracingValidationFeaturesNV = Just f
     | Just Refl <- eqT @e @PhysicalDeviceRayTracingMotionBlurFeaturesNV = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceShaderFmaFeaturesKHR = Just f
     | Just Refl <- eqT @e @PhysicalDeviceFragmentShaderBarycentricFeaturesKHR = Just f
     | Just Refl <- eqT @e @PhysicalDeviceShaderIntegerDotProductFeatures = Just f
     | Just Refl <- eqT @e @PhysicalDeviceDescriptorBufferFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceProvokingVertexFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceInheritedViewportScissorFeaturesNV = Just f
-    | Just Refl <- eqT @e @PhysicalDevicePipelineProtectedAccessFeaturesEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDevicePipelineProtectedAccessFeatures = Just f
     | Just Refl <- eqT @e @PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceLegacyDitheringFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT = Just f
-    | Just Refl <- eqT @e @PhysicalDeviceHostImageCopyFeaturesEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceHostImageCopyFeatures = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceUnifiedImageLayoutsFeaturesKHR = Just f
     | Just Refl <- eqT @e @PhysicalDeviceSynchronization2Features = Just f
     | Just Refl <- eqT @e @PhysicalDeviceColorWriteEnableFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR = Just f
@@ -1314,6 +1565,8 @@
     | Just Refl <- eqT @e @PhysicalDeviceVertexInputDynamicStateFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceDepthClampControlFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceCustomResolveFeaturesEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceDepthClipControlFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceMutableDescriptorTypeFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceLegacyVertexAttributesFeaturesEXT = Just f
@@ -1330,7 +1583,7 @@
     | Just Refl <- eqT @e @PhysicalDevicePortabilitySubsetFeaturesKHR = Just f
     | Just Refl <- eqT @e @PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR = Just f
     | Just Refl <- eqT @e @PhysicalDeviceImageRobustnessFeatures = Just f
-    | Just Refl <- eqT @e @PhysicalDeviceRobustness2FeaturesEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceRobustness2FeaturesKHR = Just f
     | Just Refl <- eqT @e @PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR = Just f
     | Just Refl <- eqT @e @PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures = Just f
     | Just Refl <- eqT @e @DeviceDiagnosticsConfigCreateInfoNV = Just f
@@ -1340,12 +1593,14 @@
     | 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 @PhysicalDeviceGpaFeaturesAMD = Just f
     | Just Refl <- eqT @e @PhysicalDeviceCoherentMemoryFeaturesAMD = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceVulkan14Features = 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 @PhysicalDevicePipelineCreationCacheControlFeatures = Just f
-    | Just Refl <- eqT @e @PhysicalDeviceLineRasterizationFeaturesKHR = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceLineRasterizationFeatures = Just f
     | Just Refl <- eqT @e @PhysicalDeviceSubgroupSizeControlFeatures = Just f
     | Just Refl <- eqT @e @PhysicalDeviceTexelBufferAlignmentFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceShaderDemoteToHelperInvocationFeatures = Just f
@@ -1354,7 +1609,7 @@
     | Just Refl <- eqT @e @PhysicalDeviceSeparateDepthStencilLayoutsFeatures = Just f
     | Just Refl <- eqT @e @PhysicalDeviceFragmentShaderInterlockFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceShaderSMBuiltinsFeaturesNV = Just f
-    | Just Refl <- eqT @e @PhysicalDeviceIndexTypeUint8FeaturesKHR = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceIndexTypeUint8Features = Just f
     | Just Refl <- eqT @e @PhysicalDeviceShaderClockFeaturesKHR = Just f
     | Just Refl <- eqT @e @PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL = Just f
     | Just Refl <- eqT @e @PhysicalDeviceCoverageReductionModeFeaturesNV = Just f
@@ -1371,7 +1626,7 @@
     | Just Refl <- eqT @e @PhysicalDeviceDepthClipEnableFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceUniformBufferStandardLayoutFeatures = Just f
     | Just Refl <- eqT @e @PhysicalDeviceScalarBlockLayoutFeatures = Just f
-    | Just Refl <- eqT @e @PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceFragmentDensityMap2FeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceFragmentDensityMapFeaturesEXT = Just f
     | Just Refl <- eqT @e @DeviceMemoryOverallocationCreateInfoAMD = Just f
@@ -1383,8 +1638,9 @@
     | Just Refl <- eqT @e @PhysicalDeviceMeshShaderFeaturesNV = Just f
     | Just Refl <- eqT @e @PhysicalDeviceInvocationMaskFeaturesHUAWEI = Just f
     | Just Refl <- eqT @e @PhysicalDeviceShadingRateImageFeaturesNV = Just f
-    | Just Refl <- eqT @e @PhysicalDeviceMemoryDecompressionFeaturesNV = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceMemoryDecompressionFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceCopyMemoryIndirectFeaturesNV = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceCopyMemoryIndirectFeaturesKHR = Just f
     | Just Refl <- eqT @e @PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV = Just f
     | Just Refl <- eqT @e @PhysicalDeviceShaderImageFootprintFeaturesNV = Just f
     | Just Refl <- eqT @e @PhysicalDeviceComputeShaderDerivativesFeaturesKHR = Just f
@@ -1393,7 +1649,7 @@
     | Just Refl <- eqT @e @PhysicalDeviceRepresentativeFragmentTestFeaturesNV = Just f
     | Just Refl <- eqT @e @PhysicalDeviceTransformFeedbackFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceASTCDecodeFeaturesEXT = Just f
-    | Just Refl <- eqT @e @PhysicalDeviceVertexAttributeDivisorFeaturesKHR = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceVertexAttributeDivisorFeatures = Just f
     | Just Refl <- eqT @e @PhysicalDeviceShaderAtomicFloat2FeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceShaderAtomicFloatFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceShaderAtomicInt64Features = Just f
@@ -1404,13 +1660,18 @@
     | 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 @PhysicalDeviceGlobalPriorityQueryFeaturesKHR = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceGlobalPriorityQueryFeatures = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceElapsedTimerQueryFeaturesQCOM = 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 @PhysicalDeviceMaintenance10FeaturesKHR = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceMaintenance11FeaturesKHR = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceMaintenance9FeaturesKHR = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceMaintenance8FeaturesKHR = Just f
     | Just Refl <- eqT @e @PhysicalDeviceMaintenance7FeaturesKHR = Just f
-    | Just Refl <- eqT @e @PhysicalDeviceMaintenance6FeaturesKHR = Just f
-    | Just Refl <- eqT @e @PhysicalDeviceMaintenance5FeaturesKHR = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceMaintenance6Features = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceMaintenance5Features = Just f
     | Just Refl <- eqT @e @PhysicalDeviceMaintenance4Features = Just f
     | Just Refl <- eqT @e @PhysicalDeviceInlineUniformBlockFeatures = Just f
     | Just Refl <- eqT @e @PhysicalDeviceMultiDrawFeaturesEXT = Just f
@@ -1419,7 +1680,10 @@
     | Just Refl <- eqT @e @PhysicalDeviceSamplerYcbcrConversionFeatures = Just f
     | Just Refl <- eqT @e @PhysicalDeviceShaderSubgroupExtendedTypesFeatures = Just f
     | Just Refl <- eqT @e @PhysicalDevice16BitStorageFeatures = Just f
+    | Just Refl <- eqT @e @PhysicalDevicePresentTimingFeaturesEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDevicePresentWait2FeaturesKHR = Just f
     | Just Refl <- eqT @e @PhysicalDevicePresentWaitFeaturesKHR = Just f
+    | Just Refl <- eqT @e @PhysicalDevicePresentId2FeaturesKHR = Just f
     | Just Refl <- eqT @e @PhysicalDevicePresentIdFeaturesKHR = Just f
     | Just Refl <- eqT @e @DeviceGroupDeviceCreateInfo = Just f
     | Just Refl <- eqT @e @PhysicalDeviceMultiviewFeatures = Just f
@@ -1428,6 +1692,7 @@
     | Just Refl <- eqT @e @PhysicalDevicePrivateDataFeatures = Just f
     | Just Refl <- eqT @e @DevicePrivateDataCreateInfo = Just f
     | Just Refl <- eqT @e @PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV = Just f
+    | Just Refl <- eqT @e @PhysicalDevicePushConstantBankFeaturesNV = 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
@@ -39,4899 +39,4646 @@
                                            , MemoryPropertyFlags
                                            , MemoryHeapFlagBits(..)
                                            , MemoryHeapFlags
-                                           , ImageUsageFlagBits(..)
-                                           , ImageUsageFlags
-                                           , ImageCreateFlagBits(..)
-                                           , ImageCreateFlags
-                                           , FormatFeatureFlagBits(..)
-                                           , FormatFeatureFlags
-                                           , SampleCountFlagBits(..)
-                                           , SampleCountFlags
-                                           , InstanceCreateFlagBits(..)
-                                           , InstanceCreateFlags
-                                           , FN_vkInternalAllocationNotification
-                                           , PFN_vkInternalAllocationNotification
-                                           , FN_vkInternalFreeNotification
-                                           , PFN_vkInternalFreeNotification
-                                           , FN_vkReallocationFunction
-                                           , PFN_vkReallocationFunction
-                                           , FN_vkAllocationFunction
-                                           , PFN_vkAllocationFunction
-                                           , FN_vkFreeFunction
-                                           , PFN_vkFreeFunction
-                                           , FN_vkVoidFunction
-                                           , PFN_vkVoidFunction
-                                           ) 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 Data.Typeable (eqT)
-import Foreign.Marshal.Alloc (allocaBytes)
-import Foreign.Marshal.Alloc (callocBytes)
-import Foreign.Marshal.Alloc (free)
-import Foreign.Marshal.Utils (maybePeek)
-import GHC.Base (when)
-import GHC.IO (throwIO)
-import Foreign.Ptr (castFunPtr)
-import GHC.Ptr (castPtr)
-import GHC.Ptr (nullFunPtr)
-import Foreign.Ptr (nullPtr)
-import Foreign.Ptr (plusPtr)
-import Data.ByteString (packCString)
-import Data.ByteString (useAsCString)
-import Data.Coerce (coerce)
-import Control.Monad.Trans.Class (lift)
-import Control.Monad.Trans.Cont (evalContT)
-import Data.Vector (generateM)
-import qualified Data.Vector (imapM_)
-import qualified Data.Vector (length)
-import Foreign.C.Types (CChar(..))
-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.C.Types (CChar)
-import Foreign.C.Types (CFloat)
-import Foreign.C.Types (CFloat(..))
-import Foreign.C.Types (CFloat(CFloat))
-import Foreign.C.Types (CSize)
-import Foreign.C.Types (CSize(..))
-import Foreign.C.Types (CSize(CSize))
-import Foreign.Storable (Storable)
-import Foreign.Storable (Storable(peek))
-import Foreign.Storable (Storable(poke))
-import qualified Foreign.Storable (Storable(..))
-import GHC.Generics (Generic)
-import GHC.IO.Exception (IOErrorType(..))
-import GHC.IO.Exception (IOException(..))
-import Data.Int (Int32)
-import Foreign.Ptr (FunPtr)
-import Foreign.Ptr (Ptr)
-import GHC.Ptr (Ptr(Ptr))
-import Data.Word (Word32)
-import Data.Word (Word64)
-import Data.Word (Word8)
-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.Core10.FundamentalTypes (bool32ToBool)
-import Vulkan.Core10.FundamentalTypes (boolToBool32)
-import Vulkan.CStruct.Extends (forgetExtensions)
-import Vulkan.Dynamic (getInstanceProcAddr')
-import Vulkan.Dynamic (initInstanceCmds)
-import Vulkan.CStruct.Utils (lowerArrayPtr)
-import Vulkan.CStruct.Utils (peekByteStringFromSizedVectorPtr)
-import Vulkan.CStruct.Utils (pokeFixedLengthByteString)
-import Vulkan.CStruct.Utils (pokeFixedLengthNullTerminatedByteString)
-import Vulkan.NamedType ((:::))
-import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)
-import Vulkan.Core10.FundamentalTypes (Bool32)
-import Vulkan.CStruct.Extends (Chain)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_debug_report (DebugReportCallbackCreateInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_debug_utils (DebugUtilsMessengerCreateInfoEXT)
-import Vulkan.Core10.Handles (Device)
-import Vulkan.Core10.Handles (Device(..))
-import Vulkan.Core10.Handles (Device(Device))
-import Vulkan.Dynamic (DeviceCmds(pVkGetDeviceProcAddr))
-import Vulkan.Core10.FundamentalTypes (DeviceSize)
-import Vulkan.Core10.Handles (Device_T)
-import {-# SOURCE #-} Vulkan.Extensions.VK_LUNARG_direct_driver_loading (DirectDriverLoadingListLUNARG)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_metal_objects (ExportMetalObjectCreateInfoEXT)
-import Vulkan.CStruct.Extends (Extends)
-import Vulkan.CStruct.Extends (Extendss)
-import Vulkan.CStruct.Extends (Extensible(..))
-import Vulkan.Core10.FundamentalTypes (Extent3D)
-import Vulkan.Core10.Enums.Format (Format)
-import Vulkan.Core10.Enums.Format (Format(..))
-import Vulkan.Core10.Enums.FormatFeatureFlagBits (FormatFeatureFlags)
-import Vulkan.Core10.Enums.ImageCreateFlagBits (ImageCreateFlagBits(..))
-import Vulkan.Core10.Enums.ImageCreateFlagBits (ImageCreateFlags)
-import Vulkan.Core10.Enums.ImageTiling (ImageTiling)
-import Vulkan.Core10.Enums.ImageTiling (ImageTiling(..))
-import Vulkan.Core10.Enums.ImageType (ImageType)
-import Vulkan.Core10.Enums.ImageType (ImageType(..))
-import Vulkan.Core10.Enums.ImageUsageFlagBits (ImageUsageFlagBits(..))
-import Vulkan.Core10.Enums.ImageUsageFlagBits (ImageUsageFlags)
-import Vulkan.Core10.Handles (Instance)
-import Vulkan.Core10.Handles (Instance(..))
-import Vulkan.Core10.Handles (Instance(Instance))
-import Vulkan.Dynamic (InstanceCmds(pVkDestroyInstance))
-import Vulkan.Dynamic (InstanceCmds(pVkEnumeratePhysicalDevices))
-import Vulkan.Dynamic (InstanceCmds(pVkGetInstanceProcAddr))
-import Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceFeatures))
-import Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceFormatProperties))
-import Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceImageFormatProperties))
-import Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceMemoryProperties))
-import Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceProperties))
-import Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceQueueFamilyProperties))
-import Vulkan.Core10.Enums.InstanceCreateFlagBits (InstanceCreateFlags)
-import Vulkan.Core10.Handles (Instance_T)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_layer_settings (LayerSettingsCreateInfoEXT)
-import Vulkan.Core10.APIConstants (MAX_MEMORY_HEAPS)
-import Vulkan.Core10.APIConstants (MAX_MEMORY_TYPES)
-import Vulkan.Core10.APIConstants (MAX_PHYSICAL_DEVICE_NAME_SIZE)
-import Vulkan.Core10.Enums.MemoryHeapFlagBits (MemoryHeapFlags)
-import Vulkan.Core10.Enums.MemoryPropertyFlagBits (MemoryPropertyFlags)
-import Vulkan.Core10.FuncPointers (PFN_vkVoidFunction)
-import Vulkan.CStruct.Extends (PeekChain)
-import Vulkan.CStruct.Extends (PeekChain(..))
-import Vulkan.Core10.Handles (PhysicalDevice)
-import Vulkan.Core10.Handles (PhysicalDevice(..))
-import Vulkan.Core10.Handles (PhysicalDevice(PhysicalDevice))
-import Vulkan.Core10.Enums.PhysicalDeviceType (PhysicalDeviceType)
-import Vulkan.Core10.Handles (PhysicalDevice_T)
-import Vulkan.CStruct.Extends (PokeChain)
-import Vulkan.CStruct.Extends (PokeChain(..))
-import Vulkan.Core10.Enums.QueueFlagBits (QueueFlags)
-import Vulkan.Core10.Enums.Result (Result)
-import Vulkan.Core10.Enums.Result (Result(..))
-import Vulkan.Core10.Enums.SampleCountFlagBits (SampleCountFlags)
-import Vulkan.CStruct.Extends (SomeStruct)
-import Vulkan.Core10.Enums.StructureType (StructureType)
-import Vulkan.Core10.APIConstants (UUID_SIZE)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_validation_features (ValidationFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_validation_flags (ValidationFlagsEXT)
-import Vulkan.Exception (VulkanException(..))
-import Vulkan.Core10.APIConstants (pattern MAX_MEMORY_HEAPS)
-import Vulkan.Core10.APIConstants (pattern MAX_MEMORY_TYPES)
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_APPLICATION_INFO))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_INSTANCE_CREATE_INFO))
-import Vulkan.Core10.Enums.Result (Result(SUCCESS))
-import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks(..))
-import Vulkan.Core10.FuncPointers (FN_vkAllocationFunction)
-import Vulkan.Core10.FuncPointers (FN_vkFreeFunction)
-import Vulkan.Core10.FuncPointers (FN_vkInternalAllocationNotification)
-import Vulkan.Core10.FuncPointers (FN_vkInternalFreeNotification)
-import Vulkan.Core10.FuncPointers (FN_vkReallocationFunction)
-import Vulkan.Core10.FuncPointers (FN_vkVoidFunction)
-import Vulkan.Core10.Enums.Format (Format(..))
-import Vulkan.Core10.Enums.FormatFeatureFlagBits (FormatFeatureFlagBits(..))
-import Vulkan.Core10.Enums.FormatFeatureFlagBits (FormatFeatureFlags)
-import Vulkan.Core10.Enums.ImageCreateFlagBits (ImageCreateFlagBits(..))
-import Vulkan.Core10.Enums.ImageCreateFlagBits (ImageCreateFlags)
-import Vulkan.Core10.Enums.ImageTiling (ImageTiling(..))
-import Vulkan.Core10.Enums.ImageType (ImageType(..))
-import Vulkan.Core10.Enums.ImageUsageFlagBits (ImageUsageFlagBits(..))
-import Vulkan.Core10.Enums.ImageUsageFlagBits (ImageUsageFlags)
-import Vulkan.Core10.Handles (Instance(..))
-import Vulkan.Core10.Enums.InstanceCreateFlagBits (InstanceCreateFlagBits(..))
-import Vulkan.Core10.Enums.InstanceCreateFlagBits (InstanceCreateFlags)
-import Vulkan.Core10.Enums.InternalAllocationType (InternalAllocationType(..))
-import Vulkan.Core10.Enums.MemoryHeapFlagBits (MemoryHeapFlagBits(..))
-import Vulkan.Core10.Enums.MemoryHeapFlagBits (MemoryHeapFlags)
-import Vulkan.Core10.Enums.MemoryPropertyFlagBits (MemoryPropertyFlagBits(..))
-import Vulkan.Core10.Enums.MemoryPropertyFlagBits (MemoryPropertyFlags)
-import Vulkan.Core10.FuncPointers (PFN_vkAllocationFunction)
-import Vulkan.Core10.FuncPointers (PFN_vkFreeFunction)
-import Vulkan.Core10.FuncPointers (PFN_vkInternalAllocationNotification)
-import Vulkan.Core10.FuncPointers (PFN_vkInternalFreeNotification)
-import Vulkan.Core10.FuncPointers (PFN_vkReallocationFunction)
-import Vulkan.Core10.FuncPointers (PFN_vkVoidFunction)
-import Vulkan.Core10.Handles (PhysicalDevice(..))
-import Vulkan.Core10.Enums.PhysicalDeviceType (PhysicalDeviceType(..))
-import Vulkan.Core10.Enums.QueueFlagBits (QueueFlagBits(..))
-import Vulkan.Core10.Enums.QueueFlagBits (QueueFlags)
-import Vulkan.Core10.Enums.SampleCountFlagBits (SampleCountFlagBits(..))
-import Vulkan.Core10.Enums.SampleCountFlagBits (SampleCountFlags)
-import Vulkan.Core10.Enums.SystemAllocationScope (SystemAllocationScope(..))
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCreateInstance
-  :: FunPtr (Ptr (SomeStruct InstanceCreateInfo) -> Ptr AllocationCallbacks -> Ptr (Ptr Instance_T) -> IO Result) -> Ptr (SomeStruct InstanceCreateInfo) -> Ptr AllocationCallbacks -> Ptr (Ptr Instance_T) -> IO Result
-
--- | vkCreateInstance - Create a new Vulkan instance
---
--- = Description
---
--- 'createInstance' verifies that the requested layers exist. If not,
--- 'createInstance' will return
--- 'Vulkan.Core10.Enums.Result.ERROR_LAYER_NOT_PRESENT'. Next
--- 'createInstance' verifies that the requested extensions are supported
--- (e.g. in the implementation or in any enabled instance layer) and if any
--- requested extension is not supported, 'createInstance' /must/ return
--- 'Vulkan.Core10.Enums.Result.ERROR_EXTENSION_NOT_PRESENT'. After
--- verifying and enabling the instance layers and extensions the
--- 'Vulkan.Core10.Handles.Instance' object is created and returned to the
--- application. If a requested extension is only supported by a layer, both
--- the layer and the extension need to be specified at 'createInstance'
--- time for the creation to succeed.
---
--- == Valid Usage
---
--- -   #VUID-vkCreateInstance-ppEnabledExtensionNames-01388# All
---     <https://registry.khronos.org/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
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCreateInstance-pCreateInfo-parameter# @pCreateInfo@ /must/
---     be a valid pointer to a valid 'InstanceCreateInfo' structure
---
--- -   #VUID-vkCreateInstance-pAllocator-parameter# If @pAllocator@ is not
---     @NULL@, @pAllocator@ /must/ be a valid pointer to a valid
---     'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' structure
---
--- -   #VUID-vkCreateInstance-pInstance-parameter# @pInstance@ /must/ be a
---     valid pointer to a 'Vulkan.Core10.Handles.Instance' 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'
---
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
---
---     -   'Vulkan.Core10.Enums.Result.ERROR_INITIALIZATION_FAILED'
---
---     -   'Vulkan.Core10.Enums.Result.ERROR_LAYER_NOT_PRESENT'
---
---     -   'Vulkan.Core10.Enums.Result.ERROR_EXTENSION_NOT_PRESENT'
---
---     -   'Vulkan.Core10.Enums.Result.ERROR_INCOMPATIBLE_DRIVER'
---
--- = 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.AllocationCallbacks.AllocationCallbacks',
--- 'Vulkan.Core10.Handles.Instance', 'InstanceCreateInfo'
-createInstance :: forall a io
-                . (Extendss InstanceCreateInfo a, PokeChain a, MonadIO io)
-               => -- | @pCreateInfo@ is a pointer to a 'InstanceCreateInfo' structure
-                  -- controlling creation of the instance.
-                  (InstanceCreateInfo a)
-               -> -- | @pAllocator@ controls host memory allocation as described in the
-                  -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
-                  -- chapter.
-                  ("allocator" ::: Maybe AllocationCallbacks)
-               -> io (Instance)
-createInstance createInfo allocator = liftIO . evalContT $ do
-  vkCreateInstancePtr <- lift $ castFunPtr @_ @(("pCreateInfo" ::: Ptr (SomeStruct InstanceCreateInfo)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pInstance" ::: Ptr (Ptr Instance_T)) -> IO Result) <$> getInstanceProcAddr' nullPtr (Ptr "vkCreateInstance"#)
-  lift $ unless (vkCreateInstancePtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCreateInstance is null" Nothing Nothing
-  let vkCreateInstance' = mkVkCreateInstance vkCreateInstancePtr
-  pCreateInfo <- ContT $ withCStruct (createInfo)
-  pAllocator <- case (allocator) of
-    Nothing -> pure nullPtr
-    Just j -> ContT $ withCStruct (j)
-  pPInstance <- ContT $ bracket (callocBytes @(Ptr Instance_T) 8) free
-  r <- lift $ traceAroundEvent "vkCreateInstance" (vkCreateInstance'
-                                                     (forgetExtensions pCreateInfo)
-                                                     pAllocator
-                                                     (pPInstance))
-  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
-  pInstance <- lift $ peek @(Ptr Instance_T) pPInstance
-  pInstance' <- lift $ (\h -> Instance h <$> initInstanceCmds h) pInstance
-  pure $ (pInstance')
-
--- | A convenience wrapper to make a compatible pair of calls to
--- 'createInstance' and 'destroyInstance'
---
--- To ensure that 'destroyInstance' 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.
---
-withInstance :: forall a io r . (Extendss InstanceCreateInfo a, PokeChain a, MonadIO io) => InstanceCreateInfo a -> Maybe AllocationCallbacks -> (io Instance -> (Instance -> io ()) -> r) -> r
-withInstance pCreateInfo pAllocator b =
-  b (createInstance pCreateInfo pAllocator)
-    (\(o0) -> destroyInstance o0 pAllocator)
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkDestroyInstance
-  :: FunPtr (Ptr Instance_T -> Ptr AllocationCallbacks -> IO ()) -> Ptr Instance_T -> Ptr AllocationCallbacks -> IO ()
-
--- | vkDestroyInstance - Destroy an instance of Vulkan
---
--- == Valid Usage
---
--- -   #VUID-vkDestroyInstance-instance-00629# All child objects created
---     using @instance@ /must/ have been destroyed prior to destroying
---     @instance@
---
--- -   #VUID-vkDestroyInstance-instance-00630# If
---     'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' were
---     provided when @instance@ was created, a compatible set of callbacks
---     /must/ be provided here
---
--- -   #VUID-vkDestroyInstance-instance-00631# If no
---     'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' were
---     provided when @instance@ was created, @pAllocator@ /must/ be @NULL@
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkDestroyInstance-instance-parameter# If @instance@ is not
---     @NULL@, @instance@ /must/ be a valid
---     'Vulkan.Core10.Handles.Instance' handle
---
--- -   #VUID-vkDestroyInstance-pAllocator-parameter# If @pAllocator@ is not
---     @NULL@, @pAllocator@ /must/ be a valid pointer to a valid
---     'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' structure
---
--- == Host Synchronization
---
--- -   Host access to @instance@ /must/ be externally synchronized
---
--- -   Host access to all 'Vulkan.Core10.Handles.PhysicalDevice' objects
---     enumerated from @instance@ /must/ be externally synchronized
---
--- = 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.AllocationCallbacks.AllocationCallbacks',
--- 'Vulkan.Core10.Handles.Instance'
-destroyInstance :: forall io
-                 . (MonadIO io)
-                => -- | @instance@ is the handle of the instance to destroy.
-                   Instance
-                -> -- | @pAllocator@ controls host memory allocation as described in the
-                   -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
-                   -- chapter.
-                   ("allocator" ::: Maybe AllocationCallbacks)
-                -> io ()
-destroyInstance instance' allocator = liftIO . evalContT $ do
-  let vkDestroyInstancePtr = pVkDestroyInstance (case instance' of Instance{instanceCmds} -> instanceCmds)
-  lift $ unless (vkDestroyInstancePtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkDestroyInstance is null" Nothing Nothing
-  let vkDestroyInstance' = mkVkDestroyInstance vkDestroyInstancePtr
-  pAllocator <- case (allocator) of
-    Nothing -> pure nullPtr
-    Just j -> ContT $ withCStruct (j)
-  lift $ traceAroundEvent "vkDestroyInstance" (vkDestroyInstance'
-                                                 (instanceHandle (instance'))
-                                                 pAllocator)
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkEnumeratePhysicalDevices
-  :: FunPtr (Ptr Instance_T -> Ptr Word32 -> Ptr (Ptr PhysicalDevice_T) -> IO Result) -> Ptr Instance_T -> Ptr Word32 -> Ptr (Ptr PhysicalDevice_T) -> IO Result
-
--- | vkEnumeratePhysicalDevices - Enumerates the physical devices accessible
--- to a Vulkan instance
---
--- = Description
---
--- If @pPhysicalDevices@ is @NULL@, then the number of physical devices
--- available is returned in @pPhysicalDeviceCount@. Otherwise,
--- @pPhysicalDeviceCount@ /must/ point to a variable set by the application
--- to the number of elements in the @pPhysicalDevices@ array, and on return
--- the variable is overwritten with the number of handles actually written
--- to @pPhysicalDevices@. If @pPhysicalDeviceCount@ is less than the number
--- of physical devices available, at most @pPhysicalDeviceCount@ structures
--- will be written, and 'Vulkan.Core10.Enums.Result.INCOMPLETE' will be
--- returned instead of 'Vulkan.Core10.Enums.Result.SUCCESS', to indicate
--- that not all the available physical devices were returned.
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkEnumeratePhysicalDevices-instance-parameter# @instance@
---     /must/ be a valid 'Vulkan.Core10.Handles.Instance' handle
---
--- -   #VUID-vkEnumeratePhysicalDevices-pPhysicalDeviceCount-parameter#
---     @pPhysicalDeviceCount@ /must/ be a valid pointer to a @uint32_t@
---     value
---
--- -   #VUID-vkEnumeratePhysicalDevices-pPhysicalDevices-parameter# If the
---     value referenced by @pPhysicalDeviceCount@ is not @0@, and
---     @pPhysicalDevices@ is not @NULL@, @pPhysicalDevices@ /must/ be a
---     valid pointer to an array of @pPhysicalDeviceCount@
---     'Vulkan.Core10.Handles.PhysicalDevice' handles
---
--- == 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'
---
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
---
---     -   'Vulkan.Core10.Enums.Result.ERROR_INITIALIZATION_FAILED'
---
--- = 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.Instance', 'Vulkan.Core10.Handles.PhysicalDevice'
-enumeratePhysicalDevices :: forall io
-                          . (MonadIO io)
-                         => -- | @instance@ is a handle to a Vulkan instance previously created with
-                            -- 'createInstance'.
-                            Instance
-                         -> io (Result, ("physicalDevices" ::: Vector PhysicalDevice))
-enumeratePhysicalDevices instance' = liftIO . evalContT $ do
-  let cmds = case instance' of Instance{instanceCmds} -> instanceCmds
-  let vkEnumeratePhysicalDevicesPtr = pVkEnumeratePhysicalDevices cmds
-  lift $ unless (vkEnumeratePhysicalDevicesPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkEnumeratePhysicalDevices is null" Nothing Nothing
-  let vkEnumeratePhysicalDevices' = mkVkEnumeratePhysicalDevices vkEnumeratePhysicalDevicesPtr
-  let instance'' = instanceHandle (instance')
-  pPPhysicalDeviceCount <- ContT $ bracket (callocBytes @Word32 4) free
-  r <- lift $ traceAroundEvent "vkEnumeratePhysicalDevices" (vkEnumeratePhysicalDevices'
-                                                               instance''
-                                                               (pPPhysicalDeviceCount)
-                                                               (nullPtr))
-  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
-  pPhysicalDeviceCount <- lift $ peek @Word32 pPPhysicalDeviceCount
-  pPPhysicalDevices <- ContT $ bracket (callocBytes @(Ptr PhysicalDevice_T) ((fromIntegral (pPhysicalDeviceCount)) * 8)) free
-  r' <- lift $ traceAroundEvent "vkEnumeratePhysicalDevices" (vkEnumeratePhysicalDevices'
-                                                                instance''
-                                                                (pPPhysicalDeviceCount)
-                                                                (pPPhysicalDevices))
-  lift $ when (r' < SUCCESS) (throwIO (VulkanException r'))
-  pPhysicalDeviceCount' <- lift $ peek @Word32 pPPhysicalDeviceCount
-  pPhysicalDevices' <- lift $ generateM (fromIntegral (pPhysicalDeviceCount')) (\i -> do
-    pPhysicalDevicesElem <- peek @(Ptr PhysicalDevice_T) ((pPPhysicalDevices `advancePtrBytes` (8 * (i)) :: Ptr (Ptr PhysicalDevice_T)))
-    pure $ (\h -> PhysicalDevice h cmds ) pPhysicalDevicesElem)
-  pure $ ((r'), pPhysicalDevices')
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkGetDeviceProcAddr
-  :: FunPtr (Ptr Device_T -> Ptr CChar -> IO PFN_vkVoidFunction) -> Ptr Device_T -> Ptr CChar -> IO PFN_vkVoidFunction
-
--- | vkGetDeviceProcAddr - Return a function pointer for a command
---
--- = Description
---
--- The table below defines the various use cases for 'getDeviceProcAddr'
--- and expected return value (“fp” is “function pointer”) for each case. A
--- valid returned function pointer (“fp”) /must/ not be @NULL@.
---
--- The returned function pointer is of type
--- 'Vulkan.Core10.FuncPointers.PFN_vkVoidFunction', and /must/ be cast to
--- the type of the command being queried before use. The function pointer
--- /must/ only be called with a dispatchable object (the first parameter)
--- that is @device@ or a child of @device@.
---
--- +------------------+------------------+------------------+
--- | @device@         | @pName@          | return value     |
--- +==================+==================+==================+
--- | @NULL@           | *1               | undefined        |
--- +------------------+------------------+------------------+
--- | invalid device   | *1               | undefined        |
--- +------------------+------------------+------------------+
--- | device           | @NULL@           | undefined        |
--- +------------------+------------------+------------------+
--- | device           | requested core   | fp4              |
--- |                  | version2         |                  |
--- |                  | device-level     |                  |
--- |                  | dispatchable     |                  |
--- |                  | command3         |                  |
--- +------------------+------------------+------------------+
--- | device           | enabled          | fp4              |
--- |                  | extension        |                  |
--- |                  | device-level     |                  |
--- |                  | dispatchable     |                  |
--- |                  | command3         |                  |
--- +------------------+------------------+------------------+
--- | any other case,  |                  | @NULL@           |
--- | not covered      |                  |                  |
--- | above            |                  |                  |
--- +------------------+------------------+------------------+
---
--- 'getDeviceProcAddr' behavior
---
--- [1]
---     \"*\" means any representable value for the parameter (including
---     valid values, invalid values, and @NULL@).
---
--- [2]
---     Device-level commands which are part of the core version specified
---     by 'ApplicationInfo'::@apiVersion@ when creating the instance will
---     always return a valid function pointer. If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-maintenance5 maintenance5>
---     feature is enabled, core commands beyond that version which are
---     supported by the implementation will return @NULL@, otherwise the
---     implementation /may/ either return @NULL@ or a function pointer. If
---     a function pointer is returned, it /must/ not be called.
---
--- [3]
---     In this function, device-level excludes all physical-device-level
---     commands.
---
--- [4]
---     The returned function pointer /must/ only be called with a
---     dispatchable object (the first parameter) that is @device@ or a
---     child of @device@ e.g. 'Vulkan.Core10.Handles.Device',
---     'Vulkan.Core10.Handles.Queue', or
---     'Vulkan.Core10.Handles.CommandBuffer'.
---
--- == Valid Usage (Implicit)
---
--- = See Also
---
--- 'Vulkan.Core10.FuncPointers.PFN_vkVoidFunction',
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
--- 'Vulkan.Core10.Handles.Device'
-getDeviceProcAddr :: forall io
-                   . (MonadIO io)
-                  => -- | #VUID-vkGetDeviceProcAddr-device-parameter# @device@ /must/ be a valid
-                     -- 'Vulkan.Core10.Handles.Device' handle
-                     Device
-                  -> -- | #VUID-vkGetDeviceProcAddr-pName-parameter# @pName@ /must/ be a
-                     -- null-terminated UTF-8 string
-                     ("name" ::: ByteString)
-                  -> io (PFN_vkVoidFunction)
-getDeviceProcAddr device name = liftIO . evalContT $ do
-  let vkGetDeviceProcAddrPtr = pVkGetDeviceProcAddr (case device of Device{deviceCmds} -> deviceCmds)
-  lift $ unless (vkGetDeviceProcAddrPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetDeviceProcAddr is null" Nothing Nothing
-  let vkGetDeviceProcAddr' = mkVkGetDeviceProcAddr vkGetDeviceProcAddrPtr
-  pName <- ContT $ useAsCString (name)
-  r <- lift $ traceAroundEvent "vkGetDeviceProcAddr" (vkGetDeviceProcAddr'
-                                                        (deviceHandle (device))
-                                                        pName)
-  pure $ (r)
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkGetInstanceProcAddr
-  :: FunPtr (Ptr Instance_T -> Ptr CChar -> IO PFN_vkVoidFunction) -> Ptr Instance_T -> Ptr CChar -> IO PFN_vkVoidFunction
-
--- | vkGetInstanceProcAddr - Return a function pointer for a command
---
--- = Description
---
--- 'getInstanceProcAddr' itself is obtained in a platform- and loader-
--- specific manner. Typically, the loader library will export this command
--- as a function symbol, so applications /can/ link against the loader
--- library, or load it dynamically and look up the symbol using
--- platform-specific APIs.
---
--- The table below defines the various use cases for 'getInstanceProcAddr'
--- and expected return value (“fp” is “function pointer”) for each case. A
--- valid returned function pointer (“fp”) /must/ not be @NULL@.
---
--- The returned function pointer is of type
--- 'Vulkan.Core10.FuncPointers.PFN_vkVoidFunction', and /must/ be cast to
--- the type of the command being queried before use.
---
--- +------------------+-----------------------+------------------+
--- | @instance@       | @pName@               | return value     |
--- +==================+=======================+==================+
--- | *1               | @NULL@                | undefined        |
--- +------------------+-----------------------+------------------+
--- | invalid          | *1                    | undefined        |
--- | non-@NULL@       |                       |                  |
--- | instance         |                       |                  |
--- +------------------+-----------------------+------------------+
--- | @NULL@           | /global command/2     | fp               |
--- +------------------+-----------------------+------------------+
--- | @NULL@           | 'getInstanceProcAddr' | fp5              |
--- +------------------+-----------------------+------------------+
--- | instance         | 'getInstanceProcAddr' | fp               |
--- +------------------+-----------------------+------------------+
--- | instance         | core /dispatchable    | fp3              |
--- |                  | command/              |                  |
--- +------------------+-----------------------+------------------+
--- | instance         | enabled instance      | fp3              |
--- |                  | extension             |                  |
--- |                  | dispatchable command  |                  |
--- |                  | for @instance@        |                  |
--- +------------------+-----------------------+------------------+
--- | instance         | available device      | fp3              |
--- |                  | extension4            |                  |
--- |                  | dispatchable command  |                  |
--- |                  | for @instance@        |                  |
--- +------------------+-----------------------+------------------+
--- | any other case,  |                       | @NULL@           |
--- | not covered      |                       |                  |
--- | above            |                       |                  |
--- +------------------+-----------------------+------------------+
---
--- 'getInstanceProcAddr' behavior
---
--- [1]
---     \"*\" means any representable value for the parameter (including
---     valid values, invalid values, and @NULL@).
---
--- [2]
---     The global commands are:
---     'Vulkan.Core11.DeviceInitialization.enumerateInstanceVersion',
---     'Vulkan.Core10.ExtensionDiscovery.enumerateInstanceExtensionProperties',
---     'Vulkan.Core10.LayerDiscovery.enumerateInstanceLayerProperties', and
---     'createInstance'. Dispatchable commands are all other commands which
---     are not global.
---
--- [3]
---     The returned function pointer /must/ only be called with a
---     dispatchable object (the first parameter) that is @instance@ or a
---     child of @instance@, e.g. 'Vulkan.Core10.Handles.Instance',
---     'Vulkan.Core10.Handles.PhysicalDevice',
---     'Vulkan.Core10.Handles.Device', 'Vulkan.Core10.Handles.Queue', or
---     'Vulkan.Core10.Handles.CommandBuffer'.
---
--- [4]
---     An “available device extension” is a device extension supported by
---     any physical device enumerated by @instance@.
---
--- [5]
---     Starting with Vulkan 1.2, 'getInstanceProcAddr' can resolve itself
---     with a @NULL@ instance pointer.
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkGetInstanceProcAddr-instance-parameter# If @instance@ is not
---     @NULL@, @instance@ /must/ be a valid
---     'Vulkan.Core10.Handles.Instance' handle
---
--- -   #VUID-vkGetInstanceProcAddr-pName-parameter# @pName@ /must/ be a
---     null-terminated UTF-8 string
---
--- = See Also
---
--- 'Vulkan.Core10.FuncPointers.PFN_vkVoidFunction',
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
--- 'Vulkan.Core10.Handles.Instance'
-getInstanceProcAddr :: forall io
-                     . (MonadIO io)
-                    => -- | @instance@ is the instance that the function pointer will be compatible
-                       -- with, or @NULL@ for commands not dependent on any instance.
-                       Instance
-                    -> -- | @pName@ is the name of the command to obtain.
-                       ("name" ::: ByteString)
-                    -> io (PFN_vkVoidFunction)
-getInstanceProcAddr instance' name = liftIO . evalContT $ do
-  let vkGetInstanceProcAddrPtr = pVkGetInstanceProcAddr (case instance' of Instance{instanceCmds} -> instanceCmds)
-  lift $ unless (vkGetInstanceProcAddrPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetInstanceProcAddr is null" Nothing Nothing
-  let vkGetInstanceProcAddr' = mkVkGetInstanceProcAddr vkGetInstanceProcAddrPtr
-  pName <- ContT $ useAsCString (name)
-  r <- lift $ traceAroundEvent "vkGetInstanceProcAddr" (vkGetInstanceProcAddr'
-                                                          (instanceHandle (instance'))
-                                                          pName)
-  pure $ (r)
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkGetPhysicalDeviceProperties
-  :: FunPtr (Ptr PhysicalDevice_T -> Ptr PhysicalDeviceProperties -> IO ()) -> Ptr PhysicalDevice_T -> Ptr PhysicalDeviceProperties -> IO ()
-
--- | vkGetPhysicalDeviceProperties - Returns properties of a physical device
---
--- == Valid Usage (Implicit)
---
--- = 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.PhysicalDevice', 'PhysicalDeviceProperties'
-getPhysicalDeviceProperties :: forall io
-                             . (MonadIO io)
-                            => -- | @physicalDevice@ is the handle to the physical device whose properties
-                               -- will be queried.
-                               --
-                               -- #VUID-vkGetPhysicalDeviceProperties-physicalDevice-parameter#
-                               -- @physicalDevice@ /must/ be a valid
-                               -- 'Vulkan.Core10.Handles.PhysicalDevice' handle
-                               PhysicalDevice
-                            -> io (PhysicalDeviceProperties)
-getPhysicalDeviceProperties physicalDevice = liftIO . evalContT $ do
-  let vkGetPhysicalDevicePropertiesPtr = pVkGetPhysicalDeviceProperties (case physicalDevice of PhysicalDevice{instanceCmds} -> instanceCmds)
-  lift $ unless (vkGetPhysicalDevicePropertiesPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetPhysicalDeviceProperties is null" Nothing Nothing
-  let vkGetPhysicalDeviceProperties' = mkVkGetPhysicalDeviceProperties vkGetPhysicalDevicePropertiesPtr
-  pPProperties <- ContT (withZeroCStruct @PhysicalDeviceProperties)
-  lift $ traceAroundEvent "vkGetPhysicalDeviceProperties" (vkGetPhysicalDeviceProperties'
-                                                             (physicalDeviceHandle (physicalDevice))
-                                                             (pPProperties))
-  pProperties <- lift $ peekCStruct @PhysicalDeviceProperties pPProperties
-  pure $ (pProperties)
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkGetPhysicalDeviceQueueFamilyProperties
-  :: FunPtr (Ptr PhysicalDevice_T -> Ptr Word32 -> Ptr QueueFamilyProperties -> IO ()) -> Ptr PhysicalDevice_T -> Ptr Word32 -> Ptr QueueFamilyProperties -> IO ()
-
--- | vkGetPhysicalDeviceQueueFamilyProperties - Reports properties of the
--- queues of the specified physical device
---
--- = Description
---
--- If @pQueueFamilyProperties@ is @NULL@, then the number of queue families
--- available is returned in @pQueueFamilyPropertyCount@. Implementations
--- /must/ support at least one queue family. Otherwise,
--- @pQueueFamilyPropertyCount@ /must/ point to a variable set by the
--- application to the number of elements in the @pQueueFamilyProperties@
--- array, and on return the variable is overwritten with the number of
--- structures actually written to @pQueueFamilyProperties@. If
--- @pQueueFamilyPropertyCount@ is less than the number of queue families
--- available, at most @pQueueFamilyPropertyCount@ structures will be
--- written.
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkGetPhysicalDeviceQueueFamilyProperties-physicalDevice-parameter#
---     @physicalDevice@ /must/ be a valid
---     'Vulkan.Core10.Handles.PhysicalDevice' handle
---
--- -   #VUID-vkGetPhysicalDeviceQueueFamilyProperties-pQueueFamilyPropertyCount-parameter#
---     @pQueueFamilyPropertyCount@ /must/ be a valid pointer to a
---     @uint32_t@ value
---
--- -   #VUID-vkGetPhysicalDeviceQueueFamilyProperties-pQueueFamilyProperties-parameter#
---     If the value referenced by @pQueueFamilyPropertyCount@ is not @0@,
---     and @pQueueFamilyProperties@ is not @NULL@, @pQueueFamilyProperties@
---     /must/ be a valid pointer to an array of @pQueueFamilyPropertyCount@
---     'QueueFamilyProperties' structures
---
--- = 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.PhysicalDevice', 'QueueFamilyProperties'
-getPhysicalDeviceQueueFamilyProperties :: forall io
-                                        . (MonadIO io)
-                                       => -- | @physicalDevice@ is the handle to the physical device whose properties
-                                          -- will be queried.
-                                          PhysicalDevice
-                                       -> io (("queueFamilyProperties" ::: Vector QueueFamilyProperties))
-getPhysicalDeviceQueueFamilyProperties physicalDevice = liftIO . evalContT $ do
-  let vkGetPhysicalDeviceQueueFamilyPropertiesPtr = pVkGetPhysicalDeviceQueueFamilyProperties (case physicalDevice of PhysicalDevice{instanceCmds} -> instanceCmds)
-  lift $ unless (vkGetPhysicalDeviceQueueFamilyPropertiesPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetPhysicalDeviceQueueFamilyProperties is null" Nothing Nothing
-  let vkGetPhysicalDeviceQueueFamilyProperties' = mkVkGetPhysicalDeviceQueueFamilyProperties vkGetPhysicalDeviceQueueFamilyPropertiesPtr
-  let physicalDevice' = physicalDeviceHandle (physicalDevice)
-  pPQueueFamilyPropertyCount <- ContT $ bracket (callocBytes @Word32 4) free
-  lift $ traceAroundEvent "vkGetPhysicalDeviceQueueFamilyProperties" (vkGetPhysicalDeviceQueueFamilyProperties'
-                                                                        physicalDevice'
-                                                                        (pPQueueFamilyPropertyCount)
-                                                                        (nullPtr))
-  pQueueFamilyPropertyCount <- lift $ peek @Word32 pPQueueFamilyPropertyCount
-  pPQueueFamilyProperties <- ContT $ bracket (callocBytes @QueueFamilyProperties ((fromIntegral (pQueueFamilyPropertyCount)) * 24)) free
-  _ <- traverse (\i -> ContT $ pokeZeroCStruct (pPQueueFamilyProperties `advancePtrBytes` (i * 24) :: Ptr QueueFamilyProperties) . ($ ())) [0..(fromIntegral (pQueueFamilyPropertyCount)) - 1]
-  lift $ traceAroundEvent "vkGetPhysicalDeviceQueueFamilyProperties" (vkGetPhysicalDeviceQueueFamilyProperties'
-                                                                        physicalDevice'
-                                                                        (pPQueueFamilyPropertyCount)
-                                                                        ((pPQueueFamilyProperties)))
-  pQueueFamilyPropertyCount' <- lift $ peek @Word32 pPQueueFamilyPropertyCount
-  pQueueFamilyProperties' <- lift $ generateM (fromIntegral (pQueueFamilyPropertyCount')) (\i -> peekCStruct @QueueFamilyProperties (((pPQueueFamilyProperties) `advancePtrBytes` (24 * (i)) :: Ptr QueueFamilyProperties)))
-  pure $ (pQueueFamilyProperties')
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkGetPhysicalDeviceMemoryProperties
-  :: FunPtr (Ptr PhysicalDevice_T -> Ptr PhysicalDeviceMemoryProperties -> IO ()) -> Ptr PhysicalDevice_T -> Ptr PhysicalDeviceMemoryProperties -> IO ()
-
--- | vkGetPhysicalDeviceMemoryProperties - Reports memory information for the
--- specified physical device
---
--- == Valid Usage (Implicit)
---
--- = 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.PhysicalDevice', 'PhysicalDeviceMemoryProperties'
-getPhysicalDeviceMemoryProperties :: forall io
-                                   . (MonadIO io)
-                                  => -- | @physicalDevice@ is the handle to the device to query.
-                                     --
-                                     -- #VUID-vkGetPhysicalDeviceMemoryProperties-physicalDevice-parameter#
-                                     -- @physicalDevice@ /must/ be a valid
-                                     -- 'Vulkan.Core10.Handles.PhysicalDevice' handle
-                                     PhysicalDevice
-                                  -> io (PhysicalDeviceMemoryProperties)
-getPhysicalDeviceMemoryProperties physicalDevice = liftIO . evalContT $ do
-  let vkGetPhysicalDeviceMemoryPropertiesPtr = pVkGetPhysicalDeviceMemoryProperties (case physicalDevice of PhysicalDevice{instanceCmds} -> instanceCmds)
-  lift $ unless (vkGetPhysicalDeviceMemoryPropertiesPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetPhysicalDeviceMemoryProperties is null" Nothing Nothing
-  let vkGetPhysicalDeviceMemoryProperties' = mkVkGetPhysicalDeviceMemoryProperties vkGetPhysicalDeviceMemoryPropertiesPtr
-  pPMemoryProperties <- ContT (withZeroCStruct @PhysicalDeviceMemoryProperties)
-  lift $ traceAroundEvent "vkGetPhysicalDeviceMemoryProperties" (vkGetPhysicalDeviceMemoryProperties'
-                                                                   (physicalDeviceHandle (physicalDevice))
-                                                                   (pPMemoryProperties))
-  pMemoryProperties <- lift $ peekCStruct @PhysicalDeviceMemoryProperties pPMemoryProperties
-  pure $ (pMemoryProperties)
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkGetPhysicalDeviceFeatures
-  :: FunPtr (Ptr PhysicalDevice_T -> Ptr PhysicalDeviceFeatures -> IO ()) -> Ptr PhysicalDevice_T -> Ptr PhysicalDeviceFeatures -> IO ()
-
--- | vkGetPhysicalDeviceFeatures - Reports capabilities of a physical device
---
--- == Valid Usage (Implicit)
---
--- = 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.PhysicalDevice', 'PhysicalDeviceFeatures'
-getPhysicalDeviceFeatures :: forall io
-                           . (MonadIO io)
-                          => -- | @physicalDevice@ is the physical device from which to query the
-                             -- supported features.
-                             --
-                             -- #VUID-vkGetPhysicalDeviceFeatures-physicalDevice-parameter#
-                             -- @physicalDevice@ /must/ be a valid
-                             -- 'Vulkan.Core10.Handles.PhysicalDevice' handle
-                             PhysicalDevice
-                          -> io (PhysicalDeviceFeatures)
-getPhysicalDeviceFeatures physicalDevice = liftIO . evalContT $ do
-  let vkGetPhysicalDeviceFeaturesPtr = pVkGetPhysicalDeviceFeatures (case physicalDevice of PhysicalDevice{instanceCmds} -> instanceCmds)
-  lift $ unless (vkGetPhysicalDeviceFeaturesPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetPhysicalDeviceFeatures is null" Nothing Nothing
-  let vkGetPhysicalDeviceFeatures' = mkVkGetPhysicalDeviceFeatures vkGetPhysicalDeviceFeaturesPtr
-  pPFeatures <- ContT (withZeroCStruct @PhysicalDeviceFeatures)
-  lift $ traceAroundEvent "vkGetPhysicalDeviceFeatures" (vkGetPhysicalDeviceFeatures'
-                                                           (physicalDeviceHandle (physicalDevice))
-                                                           (pPFeatures))
-  pFeatures <- lift $ peekCStruct @PhysicalDeviceFeatures pPFeatures
-  pure $ (pFeatures)
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkGetPhysicalDeviceFormatProperties
-  :: FunPtr (Ptr PhysicalDevice_T -> Format -> Ptr FormatProperties -> IO ()) -> Ptr PhysicalDevice_T -> Format -> Ptr FormatProperties -> IO ()
-
--- | vkGetPhysicalDeviceFormatProperties - Lists physical device’s format
--- capabilities
---
--- == Valid Usage (Implicit)
---
--- = 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.Enums.Format.Format', 'FormatProperties',
--- 'Vulkan.Core10.Handles.PhysicalDevice'
-getPhysicalDeviceFormatProperties :: forall io
-                                   . (MonadIO io)
-                                  => -- | @physicalDevice@ is the physical device from which to query the format
-                                     -- properties.
-                                     --
-                                     -- #VUID-vkGetPhysicalDeviceFormatProperties-physicalDevice-parameter#
-                                     -- @physicalDevice@ /must/ be a valid
-                                     -- 'Vulkan.Core10.Handles.PhysicalDevice' handle
-                                     PhysicalDevice
-                                  -> -- | @format@ is the format whose properties are queried.
-                                     --
-                                     -- #VUID-vkGetPhysicalDeviceFormatProperties-format-parameter# @format@
-                                     -- /must/ be a valid 'Vulkan.Core10.Enums.Format.Format' value
-                                     Format
-                                  -> io (FormatProperties)
-getPhysicalDeviceFormatProperties physicalDevice
-                                    format = liftIO . evalContT $ do
-  let vkGetPhysicalDeviceFormatPropertiesPtr = pVkGetPhysicalDeviceFormatProperties (case physicalDevice of PhysicalDevice{instanceCmds} -> instanceCmds)
-  lift $ unless (vkGetPhysicalDeviceFormatPropertiesPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetPhysicalDeviceFormatProperties is null" Nothing Nothing
-  let vkGetPhysicalDeviceFormatProperties' = mkVkGetPhysicalDeviceFormatProperties vkGetPhysicalDeviceFormatPropertiesPtr
-  pPFormatProperties <- ContT (withZeroCStruct @FormatProperties)
-  lift $ traceAroundEvent "vkGetPhysicalDeviceFormatProperties" (vkGetPhysicalDeviceFormatProperties'
-                                                                   (physicalDeviceHandle (physicalDevice))
-                                                                   (format)
-                                                                   (pPFormatProperties))
-  pFormatProperties <- lift $ peekCStruct @FormatProperties pPFormatProperties
-  pure $ (pFormatProperties)
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkGetPhysicalDeviceImageFormatProperties
-  :: FunPtr (Ptr PhysicalDevice_T -> Format -> ImageType -> ImageTiling -> ImageUsageFlags -> ImageCreateFlags -> Ptr ImageFormatProperties -> IO Result) -> Ptr PhysicalDevice_T -> Format -> ImageType -> ImageTiling -> ImageUsageFlags -> ImageCreateFlags -> Ptr ImageFormatProperties -> IO Result
-
--- | vkGetPhysicalDeviceImageFormatProperties - Lists physical device’s image
--- format capabilities
---
--- = Description
---
--- The @format@, @type@, @tiling@, @usage@, and @flags@ parameters
--- correspond to parameters that would be consumed by
--- 'Vulkan.Core10.Image.createImage' (as members of
--- 'Vulkan.Core10.Image.ImageCreateInfo').
---
--- If @format@ is not a supported image format, or if the combination of
--- @format@, @type@, @tiling@, @usage@, and @flags@ is not supported for
--- images, then 'getPhysicalDeviceImageFormatProperties' returns
--- 'Vulkan.Core10.Enums.Result.ERROR_FORMAT_NOT_SUPPORTED'.
---
--- The limitations on an image format that are reported by
--- 'getPhysicalDeviceImageFormatProperties' have the following property: if
--- @usage1@ and @usage2@ of type
--- 'Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlags' are such that
--- the bits set in @usage1@ are a subset of the bits set in @usage2@, and
--- @flags1@ and @flags2@ of type
--- 'Vulkan.Core10.Enums.ImageCreateFlagBits.ImageCreateFlags' are such that
--- the bits set in @flags1@ are a subset of the bits set in @flags2@, then
--- the limitations for @usage1@ and @flags1@ /must/ be no more strict than
--- the limitations for @usage2@ and @flags2@, for all values of @format@,
--- @type@, and @tiling@.
---
--- If the @VK_EXT_host_image_copy@ extension is supported, @usage@ includes
--- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT', and
--- @flags@ does not include either of
--- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_BINDING_BIT',
--- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_RESIDENCY_BIT',
--- or
--- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_ALIASED_BIT',
--- then the result of calls to 'getPhysicalDeviceImageFormatProperties'
--- with identical parameters except for the inclusion of
--- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_HOST_TRANSFER_BIT_EXT'
--- in @usage@ /must/ be identical.
---
--- == 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_FORMAT_NOT_SUPPORTED'
---
--- = 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.Enums.Format.Format',
--- 'Vulkan.Core10.Enums.ImageCreateFlagBits.ImageCreateFlags',
--- 'ImageFormatProperties', 'Vulkan.Core10.Enums.ImageTiling.ImageTiling',
--- 'Vulkan.Core10.Enums.ImageType.ImageType',
--- 'Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlags',
--- 'Vulkan.Core10.Handles.PhysicalDevice'
-getPhysicalDeviceImageFormatProperties :: forall io
-                                        . (MonadIO io)
-                                       => -- | @physicalDevice@ is the physical device from which to query the image
-                                          -- capabilities.
-                                          --
-                                          -- #VUID-vkGetPhysicalDeviceImageFormatProperties-physicalDevice-parameter#
-                                          -- @physicalDevice@ /must/ be a valid
-                                          -- 'Vulkan.Core10.Handles.PhysicalDevice' handle
-                                          PhysicalDevice
-                                       -> -- | @format@ is a 'Vulkan.Core10.Enums.Format.Format' value specifying the
-                                          -- image format, corresponding to
-                                          -- 'Vulkan.Core10.Image.ImageCreateInfo'::@format@.
-                                          --
-                                          -- #VUID-vkGetPhysicalDeviceImageFormatProperties-format-parameter#
-                                          -- @format@ /must/ be a valid 'Vulkan.Core10.Enums.Format.Format' value
-                                          Format
-                                       -> -- | @type@ is a 'Vulkan.Core10.Enums.ImageType.ImageType' value specifying
-                                          -- the image type, corresponding to
-                                          -- 'Vulkan.Core10.Image.ImageCreateInfo'::@imageType@.
-                                          --
-                                          -- #VUID-vkGetPhysicalDeviceImageFormatProperties-type-parameter# @type@
-                                          -- /must/ be a valid 'Vulkan.Core10.Enums.ImageType.ImageType' value
-                                          ImageType
-                                       -> -- | @tiling@ is a 'Vulkan.Core10.Enums.ImageTiling.ImageTiling' value
-                                          -- specifying the image tiling, corresponding to
-                                          -- 'Vulkan.Core10.Image.ImageCreateInfo'::@tiling@.
-                                          --
-                                          -- #VUID-vkGetPhysicalDeviceImageFormatProperties-tiling-02248# @tiling@
-                                          -- /must/ not be
-                                          -- 'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT'.
-                                          -- (Use
-                                          -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'
-                                          -- instead)
-                                          --
-                                          -- #VUID-vkGetPhysicalDeviceImageFormatProperties-tiling-parameter#
-                                          -- @tiling@ /must/ be a valid 'Vulkan.Core10.Enums.ImageTiling.ImageTiling'
-                                          -- value
-                                          ImageTiling
-                                       -> -- | @usage@ is a bitmask of
-                                          -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlagBits' specifying
-                                          -- the intended usage of the image, corresponding to
-                                          -- 'Vulkan.Core10.Image.ImageCreateInfo'::@usage@.
-                                          --
-                                          -- #VUID-vkGetPhysicalDeviceImageFormatProperties-usage-parameter# @usage@
-                                          -- /must/ be a valid combination of
-                                          -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlagBits' values
-                                          --
-                                          -- #VUID-vkGetPhysicalDeviceImageFormatProperties-usage-requiredbitmask#
-                                          -- @usage@ /must/ not be @0@
-                                          ImageUsageFlags
-                                       -> -- | @flags@ is a bitmask of
-                                          -- 'Vulkan.Core10.Enums.ImageCreateFlagBits.ImageCreateFlagBits' specifying
-                                          -- additional parameters of the image, corresponding to
-                                          -- 'Vulkan.Core10.Image.ImageCreateInfo'::@flags@.
-                                          --
-                                          -- #VUID-vkGetPhysicalDeviceImageFormatProperties-flags-parameter# @flags@
-                                          -- /must/ be a valid combination of
-                                          -- 'Vulkan.Core10.Enums.ImageCreateFlagBits.ImageCreateFlagBits' values
-                                          ImageCreateFlags
-                                       -> io (ImageFormatProperties)
-getPhysicalDeviceImageFormatProperties physicalDevice
-                                         format
-                                         type'
-                                         tiling
-                                         usage
-                                         flags = liftIO . evalContT $ do
-  let vkGetPhysicalDeviceImageFormatPropertiesPtr = pVkGetPhysicalDeviceImageFormatProperties (case physicalDevice of PhysicalDevice{instanceCmds} -> instanceCmds)
-  lift $ unless (vkGetPhysicalDeviceImageFormatPropertiesPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetPhysicalDeviceImageFormatProperties is null" Nothing Nothing
-  let vkGetPhysicalDeviceImageFormatProperties' = mkVkGetPhysicalDeviceImageFormatProperties vkGetPhysicalDeviceImageFormatPropertiesPtr
-  pPImageFormatProperties <- ContT (withZeroCStruct @ImageFormatProperties)
-  r <- lift $ traceAroundEvent "vkGetPhysicalDeviceImageFormatProperties" (vkGetPhysicalDeviceImageFormatProperties'
-                                                                             (physicalDeviceHandle (physicalDevice))
-                                                                             (format)
-                                                                             (type')
-                                                                             (tiling)
-                                                                             (usage)
-                                                                             (flags)
-                                                                             (pPImageFormatProperties))
-  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
-  pImageFormatProperties <- lift $ peekCStruct @ImageFormatProperties pPImageFormatProperties
-  pure $ (pImageFormatProperties)
-
-
--- | VkPhysicalDeviceProperties - Structure specifying physical device
--- properties
---
--- = Description
---
--- The value of @apiVersion@ /may/ be different than the version returned
--- by 'Vulkan.Core11.DeviceInitialization.enumerateInstanceVersion'; either
--- higher or lower. In such cases, the application /must/ not use
--- functionality that exceeds the version of Vulkan associated with a given
--- object. The @pApiVersion@ parameter returned by
--- 'Vulkan.Core11.DeviceInitialization.enumerateInstanceVersion' is the
--- version associated with a 'Vulkan.Core10.Handles.Instance' and its
--- children, except for a 'Vulkan.Core10.Handles.PhysicalDevice' and its
--- children. 'PhysicalDeviceProperties'::@apiVersion@ is the version
--- associated with a 'Vulkan.Core10.Handles.PhysicalDevice' and its
--- children.
---
--- The encoding of @driverVersion@ is implementation-defined. It /may/ not
--- use the same encoding as @apiVersion@. Applications should follow
--- information from the /vendor/ on how to extract the version information
--- from @driverVersion@.
---
--- On implementations that claim support for the
--- <https://registry.khronos.org/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.
---
--- These /may/ include performance profiles, hardware errata, or other
--- characteristics.
---
--- The /vendor/ identified by @vendorID@ is the entity responsible for the
--- most salient characteristics of the underlying implementation of the
--- 'Vulkan.Core10.Handles.PhysicalDevice' being queried.
---
--- For example, in the case of a discrete GPU implementation, this /should/
--- be the GPU chipset vendor. In the case of a hardware accelerator
--- integrated into a system-on-chip (SoC), this /should/ be the supplier of
--- the silicon IP used to create the accelerator.
---
--- If the vendor has a
--- <https://pcisig.com/membership/member-companies PCI vendor ID>, the low
--- 16 bits of @vendorID@ /must/ contain that PCI vendor ID, and the
--- remaining bits /must/ be zero. Otherwise, the value returned /must/ be a
--- valid Khronos vendor ID, obtained as described in the
--- <https://registry.khronos.org/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
--- in the 'Vulkan.Core10.Enums.VendorId.VendorId' type.
---
--- The vendor is also responsible for the value returned in @deviceID@. If
--- the implementation is driven primarily by a
--- <https://pcisig.com/ PCI device> with a
--- <https://pcisig.com/ PCI device ID>, the low 16 bits of @deviceID@
--- /must/ contain that PCI device ID, and the remaining bits /must/ be
--- zero. Otherwise, the choice of what values to return /may/ be dictated
--- by operating system or platform policies - but /should/ uniquely
--- identify both the device version and any major configuration options
--- (for example, core count in the case of multicore devices).
---
--- The same device ID /should/ be used for all physical implementations of
--- that device version and configuration. For example, all uses of a
--- specific silicon IP GPU version and configuration /should/ use the same
--- device ID, even if those uses occur in different SoCs.
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
--- 'PhysicalDeviceLimits',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',
--- 'PhysicalDeviceSparseProperties',
--- 'Vulkan.Core10.Enums.PhysicalDeviceType.PhysicalDeviceType',
--- 'getPhysicalDeviceProperties'
-data PhysicalDeviceProperties = PhysicalDeviceProperties
-  { -- | @apiVersion@ is the version of Vulkan supported by the device, encoded
-    -- as described in
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#extendingvulkan-coreversions-versionnumbers>.
-    apiVersion :: Word32
-  , -- | @driverVersion@ is the vendor-specified version of the driver.
-    driverVersion :: Word32
-  , -- | @vendorID@ is a unique identifier for the /vendor/ (see below) of the
-    -- physical device.
-    vendorID :: Word32
-  , -- | @deviceID@ is a unique identifier for the physical device among devices
-    -- available from the vendor.
-    deviceID :: Word32
-  , -- | @deviceType@ is a
-    -- 'Vulkan.Core10.Enums.PhysicalDeviceType.PhysicalDeviceType' specifying
-    -- the type of device.
-    deviceType :: PhysicalDeviceType
-  , -- | @deviceName@ is an array of
-    -- 'Vulkan.Core10.APIConstants.MAX_PHYSICAL_DEVICE_NAME_SIZE' @char@
-    -- containing a null-terminated UTF-8 string which is the name of the
-    -- device.
-    deviceName :: ByteString
-  , -- | @pipelineCacheUUID@ is an array of
-    -- 'Vulkan.Core10.APIConstants.UUID_SIZE' @uint8_t@ values representing a
-    -- universally unique identifier for the device.
-    pipelineCacheUUID :: ByteString
-  , -- | @limits@ is the 'PhysicalDeviceLimits' structure specifying
-    -- device-specific limits of the physical device. See
-    -- <https://registry.khronos.org/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#sparsememory-physicalprops Sparse Properties>
-    -- for details.
-    sparseProperties :: PhysicalDeviceSparseProperties
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PhysicalDeviceProperties)
-#endif
-deriving instance Show PhysicalDeviceProperties
-
-instance ToCStruct PhysicalDeviceProperties where
-  withCStruct x f = allocaBytes 824 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PhysicalDeviceProperties{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr Word32)) (apiVersion)
-    poke ((p `plusPtr` 4 :: Ptr Word32)) (driverVersion)
-    poke ((p `plusPtr` 8 :: Ptr Word32)) (vendorID)
-    poke ((p `plusPtr` 12 :: Ptr Word32)) (deviceID)
-    poke ((p `plusPtr` 16 :: Ptr PhysicalDeviceType)) (deviceType)
-    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 20 :: Ptr (FixedArray MAX_PHYSICAL_DEVICE_NAME_SIZE CChar))) (deviceName)
-    pokeFixedLengthByteString ((p `plusPtr` 276 :: Ptr (FixedArray UUID_SIZE Word8))) (pipelineCacheUUID)
-    poke ((p `plusPtr` 296 :: Ptr PhysicalDeviceLimits)) (limits)
-    poke ((p `plusPtr` 800 :: Ptr PhysicalDeviceSparseProperties)) (sparseProperties)
-    f
-  cStructSize = 824
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 12 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 16 :: Ptr PhysicalDeviceType)) (zero)
-    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 20 :: Ptr (FixedArray MAX_PHYSICAL_DEVICE_NAME_SIZE CChar))) (mempty)
-    pokeFixedLengthByteString ((p `plusPtr` 276 :: Ptr (FixedArray UUID_SIZE Word8))) (mempty)
-    poke ((p `plusPtr` 296 :: Ptr PhysicalDeviceLimits)) (zero)
-    poke ((p `plusPtr` 800 :: Ptr PhysicalDeviceSparseProperties)) (zero)
-    f
-
-instance FromCStruct PhysicalDeviceProperties where
-  peekCStruct p = do
-    apiVersion <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))
-    driverVersion <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))
-    vendorID <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))
-    deviceID <- peek @Word32 ((p `plusPtr` 12 :: Ptr Word32))
-    deviceType <- peek @PhysicalDeviceType ((p `plusPtr` 16 :: Ptr PhysicalDeviceType))
-    deviceName <- packCString (lowerArrayPtr ((p `plusPtr` 20 :: Ptr (FixedArray MAX_PHYSICAL_DEVICE_NAME_SIZE CChar))))
-    pipelineCacheUUID <- peekByteStringFromSizedVectorPtr ((p `plusPtr` 276 :: Ptr (FixedArray UUID_SIZE Word8)))
-    limits <- peekCStruct @PhysicalDeviceLimits ((p `plusPtr` 296 :: Ptr PhysicalDeviceLimits))
-    sparseProperties <- peekCStruct @PhysicalDeviceSparseProperties ((p `plusPtr` 800 :: Ptr PhysicalDeviceSparseProperties))
-    pure $ PhysicalDeviceProperties
-             apiVersion
-             driverVersion
-             vendorID
-             deviceID
-             deviceType
-             deviceName
-             pipelineCacheUUID
-             limits
-             sparseProperties
-
-instance Storable PhysicalDeviceProperties where
-  sizeOf ~_ = 824
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero PhysicalDeviceProperties where
-  zero = PhysicalDeviceProperties
-           zero
-           zero
-           zero
-           zero
-           zero
-           mempty
-           mempty
-           zero
-           zero
-
-
--- | VkApplicationInfo - Structure specifying application information
---
--- = Description
---
--- Vulkan 1.0 implementations were required to return
--- 'Vulkan.Core10.Enums.Result.ERROR_INCOMPATIBLE_DRIVER' if @apiVersion@
--- was larger than 1.0. Implementations that support Vulkan 1.1 or later
--- /must/ not return 'Vulkan.Core10.Enums.Result.ERROR_INCOMPATIBLE_DRIVER'
--- for any value of @apiVersion@ .
---
--- Because Vulkan 1.0 implementations /may/ fail with
--- 'Vulkan.Core10.Enums.Result.ERROR_INCOMPATIBLE_DRIVER', applications
--- /should/ determine the version of Vulkan available before calling
--- 'createInstance'. If the 'getInstanceProcAddr' returns @NULL@ for
--- 'Vulkan.Core11.DeviceInitialization.enumerateInstanceVersion', it is a
--- Vulkan 1.0 implementation. Otherwise, the application /can/ call
--- 'Vulkan.Core11.DeviceInitialization.enumerateInstanceVersion' to
--- determine the version of Vulkan.
---
--- As long as the instance supports at least Vulkan 1.1, an application
--- /can/ use different versions of Vulkan with an instance than it does
--- with a device or physical device.
---
--- The Khronos validation layers will treat @apiVersion@ as the highest API
--- version the application targets, and will validate API usage against the
--- minimum of that version and the implementation version (instance or
--- device, depending on context). If an application tries to use
--- functionality from a greater version than this, a validation error will
--- be triggered.
---
--- For example, if the instance supports Vulkan 1.1 and three physical
--- devices support Vulkan 1.0, Vulkan 1.1, and Vulkan 1.2, respectively,
--- and if the application sets @apiVersion@ to 1.2, the application /can/
--- use the following versions of Vulkan:
---
--- -   Vulkan 1.0 /can/ be used with the instance and with all physical
---     devices.
---
--- -   Vulkan 1.1 /can/ be used with the instance and with the physical
---     devices that support Vulkan 1.1 and Vulkan 1.2.
---
--- -   Vulkan 1.2 /can/ be used with the physical device that supports
---     Vulkan 1.2.
---
--- If we modify the above example so that the application sets @apiVersion@
--- to 1.1, then the application /must/ not use Vulkan 1.2 functionality on
--- the physical device that supports Vulkan 1.2.
---
--- Providing a @NULL@ 'InstanceCreateInfo'::@pApplicationInfo@ or providing
--- an @apiVersion@ of 0 is equivalent to providing an @apiVersion@ of
--- @VK_MAKE_API_VERSION(0,1,0,0)@.
---
--- == Valid Usage
---
--- -   #VUID-VkApplicationInfo-apiVersion-04010# If @apiVersion@ is not
---     @0@, then it /must/ be greater than or equal to
---     'Vulkan.Core10.API_VERSION_1_0'
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkApplicationInfo-sType-sType# @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_APPLICATION_INFO'
---
--- -   #VUID-VkApplicationInfo-pNext-pNext# @pNext@ /must/ be @NULL@
---
--- -   #VUID-VkApplicationInfo-pApplicationName-parameter# If
---     @pApplicationName@ is not @NULL@, @pApplicationName@ /must/ be a
---     null-terminated UTF-8 string
---
--- -   #VUID-VkApplicationInfo-pEngineName-parameter# If @pEngineName@ is
---     not @NULL@, @pEngineName@ /must/ be a null-terminated UTF-8 string
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
--- 'InstanceCreateInfo', 'Vulkan.Core10.Enums.StructureType.StructureType'
-data ApplicationInfo = ApplicationInfo
-  { -- | @pApplicationName@ is @NULL@ or is a pointer to a null-terminated UTF-8
-    -- string containing the name of the application.
-    applicationName :: Maybe ByteString
-  , -- | @applicationVersion@ is an unsigned integer variable containing the
-    -- developer-supplied version number of the application.
-    applicationVersion :: Word32
-  , -- | @pEngineName@ is @NULL@ or is a pointer to a null-terminated UTF-8
-    -- string containing the name of the engine (if any) used to create the
-    -- application.
-    engineName :: Maybe ByteString
-  , -- | @engineVersion@ is an unsigned integer variable containing the
-    -- developer-supplied version number of the engine used to create the
-    -- application.
-    engineVersion :: Word32
-  , -- | @apiVersion@ /must/ be the highest version of Vulkan that the
-    -- application is designed to use, encoded as described in
-    -- <https://registry.khronos.org/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. The variant version of the instance /must/
-    -- match that requested in @apiVersion@.
-    apiVersion :: Word32
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (ApplicationInfo)
-#endif
-deriving instance Show ApplicationInfo
-
-instance ToCStruct ApplicationInfo where
-  withCStruct x f = allocaBytes 48 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p ApplicationInfo{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_APPLICATION_INFO)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    pApplicationName'' <- case (applicationName) of
-      Nothing -> pure nullPtr
-      Just j -> ContT $ useAsCString (j)
-    lift $ poke ((p `plusPtr` 16 :: Ptr (Ptr CChar))) pApplicationName''
-    lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) (applicationVersion)
-    pEngineName'' <- case (engineName) of
-      Nothing -> pure nullPtr
-      Just j -> ContT $ useAsCString (j)
-    lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr CChar))) pEngineName''
-    lift $ poke ((p `plusPtr` 40 :: Ptr Word32)) (engineVersion)
-    lift $ poke ((p `plusPtr` 44 :: Ptr Word32)) (apiVersion)
-    lift $ f
-  cStructSize = 48
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_APPLICATION_INFO)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 40 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 44 :: Ptr Word32)) (zero)
-    f
-
-instance FromCStruct ApplicationInfo where
-  peekCStruct p = do
-    pApplicationName <- peek @(Ptr CChar) ((p `plusPtr` 16 :: Ptr (Ptr CChar)))
-    pApplicationName' <- maybePeek (\j -> packCString (j)) pApplicationName
-    applicationVersion <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))
-    pEngineName <- peek @(Ptr CChar) ((p `plusPtr` 32 :: Ptr (Ptr CChar)))
-    pEngineName' <- maybePeek (\j -> packCString (j)) pEngineName
-    engineVersion <- peek @Word32 ((p `plusPtr` 40 :: Ptr Word32))
-    apiVersion <- peek @Word32 ((p `plusPtr` 44 :: Ptr Word32))
-    pure $ ApplicationInfo
-             pApplicationName'
-             applicationVersion
-             pEngineName'
-             engineVersion
-             apiVersion
-
-instance Zero ApplicationInfo where
-  zero = ApplicationInfo
-           Nothing
-           zero
-           Nothing
-           zero
-           zero
-
-
--- | VkInstanceCreateInfo - Structure specifying parameters of a newly
--- created instance
---
--- = Description
---
--- To capture events that occur while creating or destroying an instance,
--- an application /can/ link a
--- 'Vulkan.Extensions.VK_EXT_debug_report.DebugReportCallbackCreateInfoEXT'
--- structure or a
--- 'Vulkan.Extensions.VK_EXT_debug_utils.DebugUtilsMessengerCreateInfoEXT'
--- structure to the @pNext@ element of the 'InstanceCreateInfo' structure
--- given to 'createInstance'. This callback is only valid for the duration
--- of the 'createInstance' and the 'destroyInstance' call. Use
--- 'Vulkan.Extensions.VK_EXT_debug_report.createDebugReportCallbackEXT' or
--- 'Vulkan.Extensions.VK_EXT_debug_utils.createDebugUtilsMessengerEXT' to
--- create persistent callback objects.
---
--- An application can add additional drivers by including the
--- 'Vulkan.Extensions.VK_LUNARG_direct_driver_loading.DirectDriverLoadingListLUNARG'
--- struct to the @pNext@ element of the 'InstanceCreateInfo' structure
--- given to 'createInstance'.
---
--- 'Vulkan.Extensions.VK_LUNARG_direct_driver_loading.DirectDriverLoadingListLUNARG'
--- allows applications to ship drivers with themselves. Only drivers that
--- are designed to work with it should be used, such as drivers that
--- implement Vulkan in software or that implement Vulkan by translating it
--- to a different API. Any driver that requires installation should not be
--- used, such as hardware drivers.
---
--- == Valid Usage
---
--- -   #VUID-VkInstanceCreateInfo-pNext-04925# If the @pNext@ chain of
---     'InstanceCreateInfo' includes a
---     'Vulkan.Extensions.VK_EXT_debug_report.DebugReportCallbackCreateInfoEXT'
---     structure, the list of enabled extensions in
---     @ppEnabledExtensionNames@ /must/ contain @VK_EXT_debug_report@
---
--- -   #VUID-VkInstanceCreateInfo-pNext-04926# If the @pNext@ chain of
---     'InstanceCreateInfo' includes a
---     'Vulkan.Extensions.VK_EXT_debug_utils.DebugUtilsMessengerCreateInfoEXT'
---     structure, the list of enabled extensions in
---     @ppEnabledExtensionNames@ /must/ contain @VK_EXT_debug_utils@
---
--- -   #VUID-VkInstanceCreateInfo-pNext-06779# If the @pNext@ chain
---     includes a
---     'Vulkan.Extensions.VK_EXT_metal_objects.ExportMetalObjectCreateInfoEXT'
---     structure, its @exportObjectType@ member /must/ be either
---     'Vulkan.Extensions.VK_EXT_metal_objects.EXPORT_METAL_OBJECT_TYPE_METAL_DEVICE_BIT_EXT'
---     or
---     'Vulkan.Extensions.VK_EXT_metal_objects.EXPORT_METAL_OBJECT_TYPE_METAL_COMMAND_QUEUE_BIT_EXT'
---
--- -   #VUID-VkInstanceCreateInfo-flags-06559# If @flags@ has the
---     'Vulkan.Core10.Enums.InstanceCreateFlagBits.INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR'
---     bit set, the list of enabled extensions in @ppEnabledExtensionNames@
---     /must/ contain @VK_KHR_portability_enumeration@
---
--- -   #VUID-VkInstanceCreateInfo-pNext-09400# If the @pNext@ chain of
---     'InstanceCreateInfo' includes a
---     'Vulkan.Extensions.VK_LUNARG_direct_driver_loading.DirectDriverLoadingListLUNARG'
---     structure, the list of enabled extensions in
---     @ppEnabledExtensionNames@ /must/ contain
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_LUNARG_direct_driver_loading VK_LUNARG_direct_driver_loading>
---
--- -   #VUID-VkInstanceCreateInfo-pNext-10242# If the @pNext@ chain of
---     'InstanceCreateInfo' includes a
---     'Vulkan.Extensions.VK_EXT_layer_settings.LayerSettingsCreateInfoEXT'
---     structure, the list of enabled extensions in
---     @ppEnabledExtensionNames@ /must/ contain
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_layer_settings VK_EXT_layer_settings>
---
--- -   #VUID-VkInstanceCreateInfo-pNext-10243# If the @pNext@ chain of
---     'InstanceCreateInfo' includes a
---     'Vulkan.Extensions.VK_EXT_validation_features.ValidationFeaturesEXT'
---     structure, the list of enabled extensions in
---     @ppEnabledExtensionNames@ /must/ contain
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_validation_features VK_EXT_validation_features>
---
--- -   #VUID-VkInstanceCreateInfo-pNext-10244# If the @pNext@ chain of
---     'InstanceCreateInfo' includes a
---     'Vulkan.Extensions.VK_EXT_validation_flags.ValidationFlagsEXT'
---     structure, the list of enabled extensions in
---     @ppEnabledExtensionNames@ /must/ contain
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_validation_flags VK_EXT_validation_flags>
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkInstanceCreateInfo-sType-sType# @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_INSTANCE_CREATE_INFO'
---
--- -   #VUID-VkInstanceCreateInfo-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_debug_report.DebugReportCallbackCreateInfoEXT',
---     'Vulkan.Extensions.VK_EXT_debug_utils.DebugUtilsMessengerCreateInfoEXT',
---     'Vulkan.Extensions.VK_LUNARG_direct_driver_loading.DirectDriverLoadingListLUNARG',
---     'Vulkan.Extensions.VK_EXT_metal_objects.ExportMetalObjectCreateInfoEXT',
---     'Vulkan.Extensions.VK_EXT_layer_settings.LayerSettingsCreateInfoEXT',
---     'Vulkan.Extensions.VK_EXT_validation_features.ValidationFeaturesEXT',
---     or 'Vulkan.Extensions.VK_EXT_validation_flags.ValidationFlagsEXT'
---
--- -   #VUID-VkInstanceCreateInfo-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_debug_utils.DebugUtilsMessengerCreateInfoEXT',
---     'Vulkan.Extensions.VK_EXT_metal_objects.ExportMetalObjectCreateInfoEXT',
---     or
---     'Vulkan.Extensions.VK_EXT_layer_settings.LayerSettingsCreateInfoEXT'
---
--- -   #VUID-VkInstanceCreateInfo-flags-parameter# @flags@ /must/ be a
---     valid combination of
---     'Vulkan.Core10.Enums.InstanceCreateFlagBits.InstanceCreateFlagBits'
---     values
---
--- -   #VUID-VkInstanceCreateInfo-pApplicationInfo-parameter# If
---     @pApplicationInfo@ is not @NULL@, @pApplicationInfo@ /must/ be a
---     valid pointer to a valid 'ApplicationInfo' structure
---
--- -   #VUID-VkInstanceCreateInfo-ppEnabledLayerNames-parameter# If
---     @enabledLayerCount@ is not @0@, @ppEnabledLayerNames@ /must/ be a
---     valid pointer to an array of @enabledLayerCount@ null-terminated
---     UTF-8 strings
---
--- -   #VUID-VkInstanceCreateInfo-ppEnabledExtensionNames-parameter# If
---     @enabledExtensionCount@ is not @0@, @ppEnabledExtensionNames@ /must/
---     be a valid pointer to an array of @enabledExtensionCount@
---     null-terminated UTF-8 strings
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
--- 'ApplicationInfo',
--- 'Vulkan.Core10.Enums.InstanceCreateFlagBits.InstanceCreateFlags',
--- 'Vulkan.Core10.Enums.StructureType.StructureType', 'createInstance'
-data InstanceCreateInfo (es :: [Type]) = InstanceCreateInfo
-  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
-    next :: Chain es
-  , -- | @flags@ is a bitmask of
-    -- 'Vulkan.Core10.Enums.InstanceCreateFlagBits.InstanceCreateFlagBits'
-    -- indicating the behavior of the instance.
-    flags :: InstanceCreateFlags
-  , -- | @pApplicationInfo@ is @NULL@ or a pointer to a 'ApplicationInfo'
-    -- structure. If not @NULL@, this information helps implementations
-    -- recognize behavior inherent to classes of applications.
-    -- 'ApplicationInfo' is defined in detail below.
-    applicationInfo :: Maybe ApplicationInfo
-  , -- | @ppEnabledLayerNames@ is a pointer to an array of @enabledLayerCount@
-    -- null-terminated UTF-8 strings containing the names of layers to enable
-    -- for the created instance. The layers are loaded in the order they are
-    -- 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://registry.khronos.org/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
-    -- @enabledExtensionCount@ null-terminated UTF-8 strings containing the
-    -- names of extensions to enable.
-    enabledExtensionNames :: Vector ByteString
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (InstanceCreateInfo (es :: [Type]))
-#endif
-deriving instance Show (Chain es) => Show (InstanceCreateInfo es)
-
-instance Extensible InstanceCreateInfo where
-  extensibleTypeName = "InstanceCreateInfo"
-  setNext InstanceCreateInfo{..} next' = InstanceCreateInfo{next = next', ..}
-  getNext InstanceCreateInfo{..} = next
-  extends :: forall e b proxy. Typeable e => proxy e -> (Extends InstanceCreateInfo e => b) -> Maybe b
-  extends _ f
-    | Just Refl <- eqT @e @DirectDriverLoadingListLUNARG = Just f
-    | Just Refl <- eqT @e @ExportMetalObjectCreateInfoEXT = Just f
-    | Just Refl <- eqT @e @DebugUtilsMessengerCreateInfoEXT = Just f
-    | Just Refl <- eqT @e @LayerSettingsCreateInfoEXT = Just f
-    | Just Refl <- eqT @e @ValidationFeaturesEXT = Just f
-    | Just Refl <- eqT @e @ValidationFlagsEXT = Just f
-    | Just Refl <- eqT @e @DebugReportCallbackCreateInfoEXT = Just f
-    | otherwise = Nothing
-
-instance ( Extendss InstanceCreateInfo es
-         , PokeChain es ) => ToCStruct (InstanceCreateInfo es) where
-  withCStruct x f = allocaBytes 64 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p InstanceCreateInfo{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_INSTANCE_CREATE_INFO)
-    pNext'' <- fmap castPtr . ContT $ withChain (next)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
-    lift $ poke ((p `plusPtr` 16 :: Ptr InstanceCreateFlags)) (flags)
-    pApplicationInfo'' <- case (applicationInfo) of
-      Nothing -> pure nullPtr
-      Just j -> ContT $ withCStruct (j)
-    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr ApplicationInfo))) pApplicationInfo''
-    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (enabledLayerNames)) :: Word32))
-    pPpEnabledLayerNames' <- ContT $ allocaBytes @(Ptr CChar) ((Data.Vector.length (enabledLayerNames)) * 8)
-    Data.Vector.imapM_ (\i e -> do
-      ppEnabledLayerNames'' <- ContT $ useAsCString (e)
-      lift $ poke (pPpEnabledLayerNames' `plusPtr` (8 * (i)) :: Ptr (Ptr CChar)) ppEnabledLayerNames'') (enabledLayerNames)
-    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr (Ptr CChar)))) (pPpEnabledLayerNames')
-    lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (enabledExtensionNames)) :: Word32))
-    pPpEnabledExtensionNames' <- ContT $ allocaBytes @(Ptr CChar) ((Data.Vector.length (enabledExtensionNames)) * 8)
-    Data.Vector.imapM_ (\i e -> do
-      ppEnabledExtensionNames'' <- ContT $ useAsCString (e)
-      lift $ poke (pPpEnabledExtensionNames' `plusPtr` (8 * (i)) :: Ptr (Ptr CChar)) ppEnabledExtensionNames'') (enabledExtensionNames)
-    lift $ poke ((p `plusPtr` 56 :: Ptr (Ptr (Ptr CChar)))) (pPpEnabledExtensionNames')
-    lift $ f
-  cStructSize = 64
-  cStructAlignment = 8
-  pokeZeroCStruct p f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_INSTANCE_CREATE_INFO)
-    pNext' <- fmap castPtr . ContT $ withZeroChain @es
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
-    lift $ f
-
-instance ( Extendss InstanceCreateInfo es
-         , PeekChain es ) => FromCStruct (InstanceCreateInfo es) where
-  peekCStruct p = do
-    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
-    next <- peekChain (castPtr pNext)
-    flags <- peek @InstanceCreateFlags ((p `plusPtr` 16 :: Ptr InstanceCreateFlags))
-    pApplicationInfo <- peek @(Ptr ApplicationInfo) ((p `plusPtr` 24 :: Ptr (Ptr ApplicationInfo)))
-    pApplicationInfo' <- maybePeek (\j -> peekCStruct @ApplicationInfo (j)) pApplicationInfo
-    enabledLayerCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))
-    ppEnabledLayerNames <- peek @(Ptr (Ptr CChar)) ((p `plusPtr` 40 :: Ptr (Ptr (Ptr CChar))))
-    ppEnabledLayerNames' <- generateM (fromIntegral enabledLayerCount) (\i -> packCString =<< peek ((ppEnabledLayerNames `advancePtrBytes` (8 * (i)) :: Ptr (Ptr CChar))))
-    enabledExtensionCount <- peek @Word32 ((p `plusPtr` 48 :: Ptr Word32))
-    ppEnabledExtensionNames <- peek @(Ptr (Ptr CChar)) ((p `plusPtr` 56 :: Ptr (Ptr (Ptr CChar))))
-    ppEnabledExtensionNames' <- generateM (fromIntegral enabledExtensionCount) (\i -> packCString =<< peek ((ppEnabledExtensionNames `advancePtrBytes` (8 * (i)) :: Ptr (Ptr CChar))))
-    pure $ InstanceCreateInfo
-             next
-             flags
-             pApplicationInfo'
-             ppEnabledLayerNames'
-             ppEnabledExtensionNames'
-
-instance es ~ '[] => Zero (InstanceCreateInfo es) where
-  zero = InstanceCreateInfo
-           ()
-           zero
-           Nothing
-           mempty
-           mempty
-
-
--- | VkQueueFamilyProperties - Structure providing information about a queue
--- family
---
--- = Description
---
--- The value returned in @minImageTransferGranularity@ has a unit of
--- compressed texel blocks for images having a block-compressed format, and
--- a unit of texels otherwise.
---
--- Possible values of @minImageTransferGranularity@ are:
---
--- -   (0,0,0) specifies that only whole mip levels /must/ be transferred
---     using the image transfer operations on the corresponding queues. In
---     this case, the following restrictions apply to all offset and extent
---     parameters of image transfer operations:
---
---     -   The @x@, @y@, and @z@ members of a
---         'Vulkan.Core10.FundamentalTypes.Offset3D' parameter /must/
---         always be zero.
---
---     -   The @width@, @height@, and @depth@ members of a
---         'Vulkan.Core10.FundamentalTypes.Extent3D' parameter /must/
---         always match the width, height, and depth of the image
---         subresource corresponding to the parameter, respectively.
---
--- -   (Ax, Ay, Az) where Ax, Ay, and Az are all integer powers of two. In
---     this case the following restrictions apply to all image transfer
---     operations:
---
---     -   @x@, @y@, and @z@ of a 'Vulkan.Core10.FundamentalTypes.Offset3D'
---         parameter /must/ be integer multiples of Ax, Ay, and Az,
---         respectively.
---
---     -   @width@ of a 'Vulkan.Core10.FundamentalTypes.Extent3D' parameter
---         /must/ be an integer multiple of Ax, or else @x@ + @width@
---         /must/ equal the width of the image subresource corresponding to
---         the parameter.
---
---     -   @height@ of a 'Vulkan.Core10.FundamentalTypes.Extent3D'
---         parameter /must/ be an integer multiple of Ay, or else @y@ +
---         @height@ /must/ equal the height of the image subresource
---         corresponding to the parameter.
---
---     -   @depth@ of a 'Vulkan.Core10.FundamentalTypes.Extent3D' parameter
---         /must/ be an integer multiple of Az, or else @z@ + @depth@
---         /must/ equal the depth of the image subresource corresponding to
---         the parameter.
---
---     -   If the format of the image corresponding to the parameters is
---         one of the block-compressed formats then for the purposes of the
---         above calculations the granularity /must/ be scaled up by the
---         compressed texel block dimensions.
---
--- Queues supporting graphics and\/or compute operations /must/ report
--- (1,1,1) in @minImageTransferGranularity@, meaning that there are no
--- additional restrictions on the granularity of image transfer operations
--- for these queues. Other queues supporting image transfer operations are
--- only /required/ to support whole mip level transfers, thus
--- @minImageTransferGranularity@ for queues belonging to such queue
--- families /may/ be (0,0,0).
---
--- The
--- <https://registry.khronos.org/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features Features>
--- chapter.
---
--- = 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',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.QueueFamilyProperties2',
--- 'Vulkan.Core10.Enums.QueueFlagBits.QueueFlags',
--- 'getPhysicalDeviceQueueFamilyProperties'
-data QueueFamilyProperties = QueueFamilyProperties
-  { -- | @queueFlags@ is a bitmask of
-    -- 'Vulkan.Core10.Enums.QueueFlagBits.QueueFlagBits' indicating
-    -- capabilities of the queues in this queue family.
-    queueFlags :: QueueFlags
-  , -- | @queueCount@ is the unsigned integer count of queues in this queue
-    -- family. Each queue family /must/ support at least one queue.
-    queueCount :: Word32
-  , -- | @timestampValidBits@ is the unsigned integer count of meaningful bits in
-    -- the timestamps written via
-    -- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.cmdWriteTimestamp2'
-    -- or 'Vulkan.Core10.CommandBufferBuilding.cmdWriteTimestamp'. The valid
-    -- range for the count is 36 to 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.
-    minImageTransferGranularity :: Extent3D
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (QueueFamilyProperties)
-#endif
-deriving instance Show QueueFamilyProperties
-
-instance ToCStruct QueueFamilyProperties where
-  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p QueueFamilyProperties{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr QueueFlags)) (queueFlags)
-    poke ((p `plusPtr` 4 :: Ptr Word32)) (queueCount)
-    poke ((p `plusPtr` 8 :: Ptr Word32)) (timestampValidBits)
-    poke ((p `plusPtr` 12 :: Ptr Extent3D)) (minImageTransferGranularity)
-    f
-  cStructSize = 24
-  cStructAlignment = 4
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 12 :: Ptr Extent3D)) (zero)
-    f
-
-instance FromCStruct QueueFamilyProperties where
-  peekCStruct p = do
-    queueFlags <- peek @QueueFlags ((p `plusPtr` 0 :: Ptr QueueFlags))
-    queueCount <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))
-    timestampValidBits <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))
-    minImageTransferGranularity <- peekCStruct @Extent3D ((p `plusPtr` 12 :: Ptr Extent3D))
-    pure $ QueueFamilyProperties
-             queueFlags
-             queueCount
-             timestampValidBits
-             minImageTransferGranularity
-
-instance Storable QueueFamilyProperties where
-  sizeOf ~_ = 24
-  alignment ~_ = 4
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero QueueFamilyProperties where
-  zero = QueueFamilyProperties
-           zero
-           zero
-           zero
-           zero
-
-
--- | VkPhysicalDeviceMemoryProperties - Structure specifying physical device
--- memory properties
---
--- = Description
---
--- The 'PhysicalDeviceMemoryProperties' structure describes a number of
--- /memory heaps/ as well as a number of /memory types/ that /can/ be used
--- to access memory allocated in those heaps. Each heap describes a memory
--- resource of a particular size, and each memory type describes a set of
--- memory properties (e.g. host cached vs. uncached) that /can/ be used
--- with a given memory heap. Allocations using a particular memory type
--- will consume resources from the heap indicated by that memory type’s
--- heap index. More than one memory type /may/ share each heap, and the
--- heaps and memory types provide a mechanism to advertise an accurate size
--- of the physical memory resources while allowing the memory to be used
--- with a variety of different properties.
---
--- The number of memory heaps is given by @memoryHeapCount@ and is less
--- than or equal to 'Vulkan.Core10.APIConstants.MAX_MEMORY_HEAPS'. Each
--- heap is described by an element of the @memoryHeaps@ array as a
--- 'MemoryHeap' structure. The number of memory types available across all
--- memory heaps is given by @memoryTypeCount@ and is less than or equal to
--- 'Vulkan.Core10.APIConstants.MAX_MEMORY_TYPES'. Each memory type is
--- described by an element of the @memoryTypes@ array as a 'MemoryType'
--- structure.
---
--- At least one heap /must/ include
--- 'Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_DEVICE_LOCAL_BIT' in
--- 'MemoryHeap'::@flags@. If there are multiple heaps that all have similar
--- performance characteristics, they /may/ all include
--- 'Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_DEVICE_LOCAL_BIT'.
--- In a unified memory architecture (UMA) system there is often only a
--- single memory heap which is considered to be equally “local” to the host
--- and to the device, and such an implementation /must/ advertise the heap
--- as device-local.
---
--- Each memory type returned by 'getPhysicalDeviceMemoryProperties' /must/
--- have its @propertyFlags@ set to one of the following values:
---
--- -   0
---
--- -   'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_VISIBLE_BIT'
---     |
---     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_COHERENT_BIT'
---
--- -   'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_VISIBLE_BIT'
---     |
---     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_CACHED_BIT'
---
--- -   'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_VISIBLE_BIT'
---     |
---     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_CACHED_BIT'
---     |
---     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_COHERENT_BIT'
---
--- -   'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_LOCAL_BIT'
---
--- -   'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_LOCAL_BIT'
---     |
---     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_VISIBLE_BIT'
---     |
---     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_COHERENT_BIT'
---
--- -   'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_LOCAL_BIT'
---     |
---     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_VISIBLE_BIT'
---     |
---     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_CACHED_BIT'
---
--- -   'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_LOCAL_BIT'
---     |
---     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_VISIBLE_BIT'
---     |
---     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_CACHED_BIT'
---     |
---     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_COHERENT_BIT'
---
--- -   'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_LOCAL_BIT'
---     |
---     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT'
---
--- -   'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_PROTECTED_BIT'
---
--- -   'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_PROTECTED_BIT'
---     |
---     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_LOCAL_BIT'
---
--- -   'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_VISIBLE_BIT'
---     |
---     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_COHERENT_BIT'
---     |
---     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD'
---
--- -   'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_VISIBLE_BIT'
---     |
---     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_CACHED_BIT'
---     |
---     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_COHERENT_BIT'
---     |
---     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD'
---
--- -   'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_LOCAL_BIT'
---     |
---     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD'
---
--- -   'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_LOCAL_BIT'
---     |
---     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_VISIBLE_BIT'
---     |
---     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_COHERENT_BIT'
---     |
---     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD'
---
--- -   'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_LOCAL_BIT'
---     |
---     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_VISIBLE_BIT'
---     |
---     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_CACHED_BIT'
---     |
---     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_COHERENT_BIT'
---     |
---     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD'
---
--- -   'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_VISIBLE_BIT'
---     |
---     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_COHERENT_BIT'
---     |
---     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD'
---     |
---     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD'
---
--- -   'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_VISIBLE_BIT'
---     |
---     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_CACHED_BIT'
---     |
---     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_COHERENT_BIT'
---     |
---     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD'
---     |
---     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD'
---
--- -   'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_LOCAL_BIT'
---     |
---     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD'
---     |
---     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD'
---
--- -   'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_LOCAL_BIT'
---     |
---     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_VISIBLE_BIT'
---     |
---     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_COHERENT_BIT'
---     |
---     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD'
---     |
---     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD'
---
--- -   'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_LOCAL_BIT'
---     |
---     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_VISIBLE_BIT'
---     |
---     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_CACHED_BIT'
---     |
---     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_COHERENT_BIT'
---     |
---     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD'
---     |
---     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD'
---
--- -   'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_LOCAL_BIT'
---     |
---     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_RDMA_CAPABLE_BIT_NV'
---
--- There /must/ be at least one memory type with both the
--- 'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_VISIBLE_BIT'
--- and
--- 'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_COHERENT_BIT'
--- bits set in its @propertyFlags@. There /must/ be at least one memory
--- type with the
--- 'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_LOCAL_BIT'
--- bit set in its @propertyFlags@. If the
--- <https://registry.khronos.org/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@.
---
--- For each pair of elements __X__ and __Y__ returned in @memoryTypes@,
--- __X__ /must/ be placed at a lower index position than __Y__ if:
---
--- -   the set of bit flags returned in the @propertyFlags@ member of __X__
---     is a strict subset of the set of bit flags returned in the
---     @propertyFlags@ member of __Y__; or
---
--- -   the @propertyFlags@ members of __X__ and __Y__ are equal, and __X__
---     belongs to a memory heap with greater performance (as determined in
---     an implementation-specific manner) ; or
---
--- -   the @propertyFlags@ members of __Y__ includes
---     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD'
---     or
---     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD'
---     and __X__ does not
---
--- There is no ordering requirement between __X__ and __Y__ elements for
--- 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://registry.khronos.org/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
--- 'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_VISIBLE_BIT'
--- |
--- 'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_COHERENT_BIT',
--- the list would still be in a valid order.
---
--- There may be a performance penalty for using device coherent or uncached
--- device memory types, and using these accidentally is undesirable. In
--- order to avoid this, memory types with these properties always appear at
--- the end of the list; but are subject to the same rules otherwise.
---
--- This ordering requirement enables applications to use a simple search
--- loop to select the desired memory type along the lines of:
---
--- > // Find a memory in `memoryTypeBitsRequirement` that includes all of `requiredProperties`
--- > int32_t findProperties(const VkPhysicalDeviceMemoryProperties* pMemoryProperties,
--- >                        uint32_t memoryTypeBitsRequirement,
--- >                        VkMemoryPropertyFlags requiredProperties) {
--- >     const uint32_t memoryCount = pMemoryProperties->memoryTypeCount;
--- >     for (uint32_t memoryIndex = 0; memoryIndex < memoryCount; ++memoryIndex) {
--- >         const uint32_t memoryTypeBits = (1 << memoryIndex);
--- >         const bool isRequiredMemoryType = memoryTypeBitsRequirement & memoryTypeBits;
--- >
--- >         const VkMemoryPropertyFlags properties =
--- >             pMemoryProperties->memoryTypes[memoryIndex].propertyFlags;
--- >         const bool hasRequiredProperties =
--- >             (properties & requiredProperties) == requiredProperties;
--- >
--- >         if (isRequiredMemoryType && hasRequiredProperties)
--- >             return static_cast<int32_t>(memoryIndex);
--- >     }
--- >
--- >     // failed to find memory type
--- >     return -1;
--- > }
--- >
--- > // Try to find an optimal memory type, or if it does not exist try fallback memory type
--- > // `device` is the VkDevice
--- > // `image` is the VkImage that requires memory to be bound
--- > // `memoryProperties` properties as returned by vkGetPhysicalDeviceMemoryProperties
--- > // `requiredProperties` are the property flags that must be present
--- > // `optimalProperties` are the property flags that are preferred by the application
--- > VkMemoryRequirements memoryRequirements;
--- > vkGetImageMemoryRequirements(device, image, &memoryRequirements);
--- > int32_t memoryType =
--- >     findProperties(&memoryProperties, memoryRequirements.memoryTypeBits, optimalProperties);
--- > if (memoryType == -1) // not found; try fallback properties
--- >     memoryType =
--- >         findProperties(&memoryProperties, memoryRequirements.memoryTypeBits, requiredProperties);
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
--- 'MemoryHeap', 'MemoryType',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceMemoryProperties2',
--- 'getPhysicalDeviceMemoryProperties'
-data PhysicalDeviceMemoryProperties = PhysicalDeviceMemoryProperties
-  { -- | @memoryTypeCount@ is the number of valid elements in the @memoryTypes@
-    -- array.
-    memoryTypeCount :: Word32
-  , -- | @memoryTypes@ is an array of
-    -- 'Vulkan.Core10.APIConstants.MAX_MEMORY_TYPES' 'MemoryType' structures
-    -- describing the /memory types/ that /can/ be used to access memory
-    -- allocated from the heaps specified by @memoryHeaps@.
-    memoryTypes :: Vector MemoryType
-  , -- | @memoryHeapCount@ is the number of valid elements in the @memoryHeaps@
-    -- array.
-    memoryHeapCount :: Word32
-  , -- | @memoryHeaps@ is an array of
-    -- 'Vulkan.Core10.APIConstants.MAX_MEMORY_HEAPS' 'MemoryHeap' structures
-    -- describing the /memory heaps/ from which memory /can/ be allocated.
-    memoryHeaps :: Vector MemoryHeap
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PhysicalDeviceMemoryProperties)
-#endif
-deriving instance Show PhysicalDeviceMemoryProperties
-
-instance ToCStruct PhysicalDeviceMemoryProperties where
-  withCStruct x f = allocaBytes 520 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PhysicalDeviceMemoryProperties{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr Word32)) (memoryTypeCount)
-    unless ((Data.Vector.length $ (memoryTypes)) <= MAX_MEMORY_TYPES) $
-      throwIO $ IOError Nothing InvalidArgument "" "memoryTypes is too long, a maximum of MAX_MEMORY_TYPES elements are allowed" Nothing Nothing
-    Data.Vector.imapM_ (\i e -> poke ((lowerArrayPtr ((p `plusPtr` 4 :: Ptr (FixedArray MAX_MEMORY_TYPES MemoryType)))) `plusPtr` (8 * (i)) :: Ptr MemoryType) (e)) (memoryTypes)
-    poke ((p `plusPtr` 260 :: Ptr Word32)) (memoryHeapCount)
-    unless ((Data.Vector.length $ (memoryHeaps)) <= MAX_MEMORY_HEAPS) $
-      throwIO $ IOError Nothing InvalidArgument "" "memoryHeaps is too long, a maximum of MAX_MEMORY_HEAPS elements are allowed" Nothing Nothing
-    Data.Vector.imapM_ (\i e -> poke ((lowerArrayPtr ((p `plusPtr` 264 :: Ptr (FixedArray MAX_MEMORY_HEAPS MemoryHeap)))) `plusPtr` (16 * (i)) :: Ptr MemoryHeap) (e)) (memoryHeaps)
-    f
-  cStructSize = 520
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 260 :: Ptr Word32)) (zero)
-    f
-
-instance FromCStruct PhysicalDeviceMemoryProperties where
-  peekCStruct p = do
-    memoryTypeCount <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))
-    memoryTypes <- generateM (MAX_MEMORY_TYPES) (\i -> peekCStruct @MemoryType (((lowerArrayPtr @MemoryType ((p `plusPtr` 4 :: Ptr (FixedArray MAX_MEMORY_TYPES MemoryType)))) `advancePtrBytes` (8 * (i)) :: Ptr MemoryType)))
-    memoryHeapCount <- peek @Word32 ((p `plusPtr` 260 :: Ptr Word32))
-    memoryHeaps <- generateM (MAX_MEMORY_HEAPS) (\i -> peekCStruct @MemoryHeap (((lowerArrayPtr @MemoryHeap ((p `plusPtr` 264 :: Ptr (FixedArray MAX_MEMORY_HEAPS MemoryHeap)))) `advancePtrBytes` (16 * (i)) :: Ptr MemoryHeap)))
-    pure $ PhysicalDeviceMemoryProperties
-             memoryTypeCount memoryTypes memoryHeapCount memoryHeaps
-
-instance Storable PhysicalDeviceMemoryProperties where
-  sizeOf ~_ = 520
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero PhysicalDeviceMemoryProperties where
-  zero = PhysicalDeviceMemoryProperties
-           zero
-           mempty
-           zero
-           mempty
-
-
--- | VkMemoryType - Structure specifying memory type
---
--- = 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.Enums.MemoryPropertyFlagBits.MemoryPropertyFlags',
--- 'PhysicalDeviceMemoryProperties'
-data MemoryType = MemoryType
-  { -- | @propertyFlags@ is a bitmask of
-    -- 'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MemoryPropertyFlagBits' of
-    -- properties for this memory type.
-    propertyFlags :: MemoryPropertyFlags
-  , -- | @heapIndex@ describes which memory heap this memory type corresponds to,
-    -- and /must/ be less than @memoryHeapCount@ from the
-    -- 'PhysicalDeviceMemoryProperties' structure.
-    heapIndex :: Word32
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (MemoryType)
-#endif
-deriving instance Show MemoryType
-
-instance ToCStruct MemoryType where
-  withCStruct x f = allocaBytes 8 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p MemoryType{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr MemoryPropertyFlags)) (propertyFlags)
-    poke ((p `plusPtr` 4 :: Ptr Word32)) (heapIndex)
-    f
-  cStructSize = 8
-  cStructAlignment = 4
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)
-    f
-
-instance FromCStruct MemoryType where
-  peekCStruct p = do
-    propertyFlags <- peek @MemoryPropertyFlags ((p `plusPtr` 0 :: Ptr MemoryPropertyFlags))
-    heapIndex <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))
-    pure $ MemoryType
-             propertyFlags heapIndex
-
-instance Storable MemoryType where
-  sizeOf ~_ = 8
-  alignment ~_ = 4
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero MemoryType where
-  zero = MemoryType
-           zero
-           zero
-
-
--- | VkMemoryHeap - Structure specifying a memory heap
---
--- = 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.Enums.MemoryHeapFlagBits.MemoryHeapFlags',
--- 'PhysicalDeviceMemoryProperties'
-data MemoryHeap = MemoryHeap
-  { -- | @size@ is the total memory size in bytes in the heap.
-    size :: DeviceSize
-  , -- | @flags@ is a bitmask of
-    -- 'Vulkan.Core10.Enums.MemoryHeapFlagBits.MemoryHeapFlagBits' specifying
-    -- attribute flags for the heap.
-    flags :: MemoryHeapFlags
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (MemoryHeap)
-#endif
-deriving instance Show MemoryHeap
-
-instance ToCStruct MemoryHeap where
-  withCStruct x f = allocaBytes 16 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p MemoryHeap{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr DeviceSize)) (size)
-    poke ((p `plusPtr` 8 :: Ptr MemoryHeapFlags)) (flags)
-    f
-  cStructSize = 16
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr DeviceSize)) (zero)
-    f
-
-instance FromCStruct MemoryHeap where
-  peekCStruct p = do
-    size <- peek @DeviceSize ((p `plusPtr` 0 :: Ptr DeviceSize))
-    flags <- peek @MemoryHeapFlags ((p `plusPtr` 8 :: Ptr MemoryHeapFlags))
-    pure $ MemoryHeap
-             size flags
-
-instance Storable MemoryHeap where
-  sizeOf ~_ = 16
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero MemoryHeap where
-  zero = MemoryHeap
-           zero
-           zero
-
-
--- | VkFormatProperties - Structure specifying image format properties
---
--- = Description
---
--- If no format feature flags are supported, the format itself is not
--- supported, and images of that format cannot be created.
---
--- If @format@ is a block-compressed format, then @bufferFeatures@ /must/
--- not support any features for the format.
---
--- If @format@ is not a multi-plane format then @linearTilingFeatures@ and
--- @optimalTilingFeatures@ /must/ not contain
--- 'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_DISJOINT_BIT'.
---
--- = 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.Enums.FormatFeatureFlagBits.FormatFeatureFlags',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.FormatProperties2',
--- 'getPhysicalDeviceFormatProperties'
-data FormatProperties = FormatProperties
-  { -- | @linearTilingFeatures@ is a bitmask of
-    -- 'Vulkan.Core10.Enums.FormatFeatureFlagBits.FormatFeatureFlagBits'
-    -- specifying features supported by images created with a @tiling@
-    -- parameter of 'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR'.
-    linearTilingFeatures :: FormatFeatureFlags
-  , -- | @optimalTilingFeatures@ is a bitmask of
-    -- 'Vulkan.Core10.Enums.FormatFeatureFlagBits.FormatFeatureFlagBits'
-    -- specifying features supported by images created with a @tiling@
-    -- parameter of 'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL'.
-    optimalTilingFeatures :: FormatFeatureFlags
-  , -- | @bufferFeatures@ is a bitmask of
-    -- 'Vulkan.Core10.Enums.FormatFeatureFlagBits.FormatFeatureFlagBits'
-    -- specifying features supported by buffers.
-    bufferFeatures :: FormatFeatureFlags
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (FormatProperties)
-#endif
-deriving instance Show FormatProperties
-
-instance ToCStruct FormatProperties where
-  withCStruct x f = allocaBytes 12 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p FormatProperties{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr FormatFeatureFlags)) (linearTilingFeatures)
-    poke ((p `plusPtr` 4 :: Ptr FormatFeatureFlags)) (optimalTilingFeatures)
-    poke ((p `plusPtr` 8 :: Ptr FormatFeatureFlags)) (bufferFeatures)
-    f
-  cStructSize = 12
-  cStructAlignment = 4
-  pokeZeroCStruct _ f = f
-
-instance FromCStruct FormatProperties where
-  peekCStruct p = do
-    linearTilingFeatures <- peek @FormatFeatureFlags ((p `plusPtr` 0 :: Ptr FormatFeatureFlags))
-    optimalTilingFeatures <- peek @FormatFeatureFlags ((p `plusPtr` 4 :: Ptr FormatFeatureFlags))
-    bufferFeatures <- peek @FormatFeatureFlags ((p `plusPtr` 8 :: Ptr FormatFeatureFlags))
-    pure $ FormatProperties
-             linearTilingFeatures optimalTilingFeatures bufferFeatures
-
-instance Storable FormatProperties where
-  sizeOf ~_ = 12
-  alignment ~_ = 4
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero FormatProperties where
-  zero = FormatProperties
-           zero
-           zero
-           zero
-
-
--- | VkImageFormatProperties - Structure specifying an image format
--- properties
---
--- = Members
---
--- -   @maxExtent@ are the maximum image dimensions. See the
---     <https://registry.khronos.org/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.
---     @maxMipLevels@ /must/ be equal to the number of levels in the
---     complete mipmap chain based on the @maxExtent.width@,
---     @maxExtent.height@, and @maxExtent.depth@, except when one of the
---     following conditions is true, in which case it /may/ instead be @1@:
---
---     -   'getPhysicalDeviceImageFormatProperties'::@tiling@ was
---         'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR'
---
---     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceImageFormatInfo2'::@tiling@
---         was
---         'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT'
---
---     -   the
---         'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceImageFormatInfo2'::@pNext@
---         chain included a
---         'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceExternalImageFormatInfo'
---         structure with a handle type included in the @handleTypes@
---         member for which mipmap image support is not required
---
---     -   image @format@ is one of the
---         <https://registry.khronos.org/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'
---
--- -   @maxArrayLayers@ is the maximum number of array layers.
---     @maxArrayLayers@ /must/ be no less than
---     'PhysicalDeviceLimits'::@maxImageArrayLayers@, except when one of
---     the following conditions is true, in which case it /may/ instead be
---     @1@:
---
---     -   @tiling@ is
---         'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR'
---
---     -   @tiling@ is
---         'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL' and
---         @type@ is 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D'
---
---     -   @format@ is one of the
---         <https://registry.khronos.org/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',
---     then @maxArrayLayers@ /must/ not be 0.
---
--- -   @sampleCounts@ is a bitmask of
---     'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits'
---     specifying all the supported sample counts for this image as
---     described
---     <https://registry.khronos.org/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/
---     have an address space limit on total size of a resource, which is
---     advertised by this property. @maxResourceSize@ /must/ be at least
---     231.
---
--- = Description
---
--- There is no mechanism to query the size of an image before creating it,
--- to compare that size against @maxResourceSize@. If an application
--- attempts to create an image that exceeds this limit, the creation will
--- fail and 'Vulkan.Core10.Image.createImage' will return
--- 'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'. While the
--- advertised limit /must/ be at least 231, it /may/ not be possible to
--- create an image that approaches that size, particularly for
--- 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D'.
---
--- If the combination of parameters to
--- 'getPhysicalDeviceImageFormatProperties' is not supported by the
--- implementation for use in 'Vulkan.Core10.Image.createImage', then all
--- members of 'ImageFormatProperties' will be filled with zero.
---
--- Filling 'ImageFormatProperties' with zero for unsupported formats is an
--- exception to the usual rule that output structures have undefined
--- contents on error. This exception was unintentional, but is preserved
--- for backwards compatibility.
---
--- = 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',
--- 'Vulkan.Extensions.VK_NV_external_memory_capabilities.ExternalImageFormatPropertiesNV',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.ImageFormatProperties2',
--- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlags',
--- 'getPhysicalDeviceImageFormatProperties'
-data ImageFormatProperties = ImageFormatProperties
-  { -- No documentation found for Nested "VkImageFormatProperties" "maxExtent"
-    maxExtent :: Extent3D
-  , -- No documentation found for Nested "VkImageFormatProperties" "maxMipLevels"
-    maxMipLevels :: Word32
-  , -- No documentation found for Nested "VkImageFormatProperties" "maxArrayLayers"
-    maxArrayLayers :: Word32
-  , -- No documentation found for Nested "VkImageFormatProperties" "sampleCounts"
-    sampleCounts :: SampleCountFlags
-  , -- No documentation found for Nested "VkImageFormatProperties" "maxResourceSize"
-    maxResourceSize :: DeviceSize
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (ImageFormatProperties)
-#endif
-deriving instance Show ImageFormatProperties
-
-instance ToCStruct ImageFormatProperties where
-  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p ImageFormatProperties{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr Extent3D)) (maxExtent)
-    poke ((p `plusPtr` 12 :: Ptr Word32)) (maxMipLevels)
-    poke ((p `plusPtr` 16 :: Ptr Word32)) (maxArrayLayers)
-    poke ((p `plusPtr` 20 :: Ptr SampleCountFlags)) (sampleCounts)
-    poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (maxResourceSize)
-    f
-  cStructSize = 32
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr Extent3D)) (zero)
-    poke ((p `plusPtr` 12 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (zero)
-    f
-
-instance FromCStruct ImageFormatProperties where
-  peekCStruct p = do
-    maxExtent <- peekCStruct @Extent3D ((p `plusPtr` 0 :: Ptr Extent3D))
-    maxMipLevels <- peek @Word32 ((p `plusPtr` 12 :: Ptr Word32))
-    maxArrayLayers <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
-    sampleCounts <- peek @SampleCountFlags ((p `plusPtr` 20 :: Ptr SampleCountFlags))
-    maxResourceSize <- peek @DeviceSize ((p `plusPtr` 24 :: Ptr DeviceSize))
-    pure $ ImageFormatProperties
-             maxExtent maxMipLevels maxArrayLayers sampleCounts maxResourceSize
-
-instance Storable ImageFormatProperties where
-  sizeOf ~_ = 32
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero ImageFormatProperties where
-  zero = ImageFormatProperties
-           zero
-           zero
-           zero
-           zero
-           zero
-
-
--- | VkPhysicalDeviceFeatures - Structure describing the fine-grained
--- features that can be supported by an implementation
---
--- = Members
---
--- This structure describes the following features:
---
--- = Description
---
--- -   If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
---     feature 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
---     bytes away from the out of bounds address /may/ also be considered
---     out of bounds.
---
--- -   If the access is a load that reads from the same memory locations as
---     a prior store in the same shader invocation, with no other
---     intervening accesses to the same memory locations in that shader
---     invocation, then the result of the load /may/ be the value stored by
---     the store instruction, even if the access is out of bounds. If the
---     load is @Volatile@, then an out of bounds load /must/ return the
---     appropriate out of bounds value.
---
---     -   Accesses to descriptors written with a
---         'Vulkan.Core10.APIConstants.NULL_HANDLE' resource or view are
---         not considered to be out of bounds. Instead, each type of
---         descriptor access defines a specific behavior for accesses to a
---         null descriptor.
---
---     -   Out-of-bounds buffer loads will return any of the following
---         values:
---
--- -   If the access is to a uniform buffer and the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
---     feature 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://registry.khronos.org/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://registry.khronos.org/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 the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
---     feature 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://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/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
---     bits /may/ be decomposed into 32-bit accesses that are individually
---     bounds-checked.
---
--- -   If the access is to an index buffer and the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
---     feature is enabled, zero values /must/ be returned.
---
--- -   If the access is to a uniform texel buffer or storage texel buffer
---     and the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
---     feature is enabled, zero values /must/ be returned, and then
---     <https://registry.khronos.org/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 buffer
---     (possibly including bytes of memory past the end of the buffer, up
---     to the end of the bound range).
---
--- -   Zero values, or (0,0,0,x) vectors for vector reads where x is a
---     valid value represented in the type of the vector components and
---     /may/ be any of:
---
---     -   0, 1, or the maximum representable positive integer value, for
---         signed or unsigned integer components
---
---     -   0.0 or 1.0, for floating-point components
---
---         -   Out-of-bounds writes /may/ modify values within the memory
---             range(s) bound to the buffer, but /must/ not modify any
---             other memory.
---
--- -   If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
---     feature is enabled, out of bounds writes /must/ not modify any
---     memory.
---
---     -   Out-of-bounds atomics /may/ modify values within the memory
---         range(s) bound to the buffer, but /must/ not modify any other
---         memory, and return an undefined value.
---
--- -   If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
---     feature is enabled, out of bounds atomics /must/ not modify any
---     memory, and return an undefined value.
---
---     -   If the
---         <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
---         feature is not 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
---         either:
---
--- -   @vertexBufferRangeSize@, if @bindingStride@ == 0; or
---
--- -   (@vertexBufferRangeSize@ - (@vertexBufferRangeSize@ %
---     @bindingStride@))
---
---     where @vertexBufferRangeSize@ is the byte size of the memory range
---     bound to the vertex buffer binding and @bindingStride@ is the byte
---     stride of the corresponding vertex input binding. Further, if any
---     vertex input attribute using a specific vertex input binding is out
---     of bounds, then all vertex input attributes using that vertex input
---     binding for that vertex shader invocation are considered out of
---     bounds.
---
--- -   If a vertex input attribute is out of bounds, it will be assigned
---     one of the following values:
---
---     -   Values from anywhere within the memory range(s) bound to the
---         buffer, converted according to the format of the attribute.
---
---     -   Zero values, format converted according to the format of the
---         attribute.
---
---     -   Zero values, or (0,0,0,x) vectors, as described above.
---
---         -   If the
---             <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
---             feature 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://registry.khronos.org/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)>.
---
---     -   If @robustBufferAccess@ is not enabled, applications /must/ not
---         perform out of bounds accesses except under the conditions
---         enabled by the
---         <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-pipelineRobustness pipelineRobustness>
---         feature .
---
---         -   #features-fullDrawIndexUint32# @fullDrawIndexUint32@
---             specifies the full 32-bit range of indices is supported for
---             indexed draw calls when using a
---             'Vulkan.Core10.Enums.IndexType.IndexType' of
---             'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT32'.
---             @maxDrawIndexedIndexValue@ is the maximum index value that
---             /may/ be used (aside from the primitive restart index, which
---             is always 232-1 when the
---             'Vulkan.Core10.Enums.IndexType.IndexType' is
---             '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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxDrawIndexedIndexValue maxDrawIndexedIndexValue>.
---
---         -   #features-imageCubeArray# @imageCubeArray@ specifies whether
---             image views with a
---             'Vulkan.Core10.Enums.ImageViewType.ImageViewType' of
---             'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY'
---             /can/ be created, and that the corresponding
---             @SampledCubeArray@ and @ImageCubeArray@ SPIR-V capabilities
---             /can/ be used in shader code.
---
---         -   #features-independentBlend# @independentBlend@ specifies
---             whether the
---             'Vulkan.Core10.Pipeline.PipelineColorBlendAttachmentState'
---             settings are controlled independently per-attachment. If
---             this feature is not enabled, the
---             'Vulkan.Core10.Pipeline.PipelineColorBlendAttachmentState'
---             settings for all color attachments /must/ be identical.
---             Otherwise, a different
---             'Vulkan.Core10.Pipeline.PipelineColorBlendAttachmentState'
---             /can/ be provided for each bound color attachment.
---
---         -   #features-geometryShader# @geometryShader@ specifies whether
---             geometry shaders are supported. If this feature is not
---             enabled, the
---             'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---             and
---             'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT'
---             enum values /must/ not be used. This also specifies whether
---             shader modules /can/ declare the @Geometry@ capability.
---
---         -   #features-tessellationShader# @tessellationShader@ specifies
---             whether tessellation control and evaluation shaders are
---             supported. If this feature is not enabled, the
---             'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
---             'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT',
---             'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT',
---             'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT',
---             and
---             'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO'
---             enum values /must/ not be used. This also specifies whether
---             shader modules /can/ declare the @Tessellation@ capability.
---
---         -   #features-sampleRateShading# @sampleRateShading@ specifies
---             whether
---             <https://registry.khronos.org/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 /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
---             and the @minSampleShading@ member is ignored. This also
---             specifies whether shader modules /can/ declare the
---             @SampleRateShading@ capability.
---
---         -   #features-dualSrcBlend# @dualSrcBlend@ specifies whether
---             blend operations which take two sources are supported. If
---             this feature is not enabled, the
---             'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_SRC1_COLOR',
---             'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_SRC1_COLOR',
---             '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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#framebuffer-dsb>.
---
---         -   #features-logicOp# @logicOp@ specifies whether logic
---             operations are supported. If this feature is not enabled,
---             the @logicOpEnable@ member of the
---             'Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo'
---             structure /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE',
---             and the @logicOp@ member is ignored.
---
---         -   #features-multiDrawIndirect# @multiDrawIndirect@ specifies
---             whether multiple draw indirect is supported. If this feature
---             is not enabled, the @drawCount@ parameter to the
---             'Vulkan.Core10.CommandBufferBuilding.cmdDrawIndirect' and
---             'Vulkan.Core10.CommandBufferBuilding.cmdDrawIndexedIndirect'
---             commands /must/ be 0 or 1. The @maxDrawIndirectCount@ member
---             of the 'PhysicalDeviceLimits' structure /must/ also be 1 if
---             this feature is not supported. See
---             <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxDrawIndirectCount maxDrawIndirectCount>.
---
---         -   #features-drawIndirectFirstInstance#
---             @drawIndirectFirstInstance@ specifies whether indirect
---             drawing calls support the @firstInstance@ parameter. If this
---             feature is not enabled, the @firstInstance@ member of all
---             'Vulkan.Core10.OtherTypes.DrawIndirectCommand' and
---             'Vulkan.Core10.OtherTypes.DrawIndexedIndirectCommand'
---             structures that are provided to the
---             'Vulkan.Core10.CommandBufferBuilding.cmdDrawIndirect' and
---             'Vulkan.Core10.CommandBufferBuilding.cmdDrawIndexedIndirect'
---             commands /must/ be 0.
---
---         -   #features-depthClamp# @depthClamp@ specifies whether depth
---             clamping is supported. If this feature is not enabled, the
---             @depthClampEnable@ member of the
---             'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo'
---             structure /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'.
---             Otherwise, setting @depthClampEnable@ to
---             'Vulkan.Core10.FundamentalTypes.TRUE' will enable depth
---             clamping.
---
---         -   #features-depthBiasClamp# @depthBiasClamp@ specifies whether
---             depth bias clamping is supported. If this feature is not
---             enabled, the @depthBiasClamp@ member of the
---             'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo'
---             structure /must/ be 0.0 unless the
---             'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS'
---             dynamic state is enabled, in which case the @depthBiasClamp@
---             parameter to
---             'Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBias' /must/
---             be 0.0.
---
---         -   #features-fillModeNonSolid# @fillModeNonSolid@ specifies
---             whether point and wireframe fill modes are supported. If
---             this feature is not enabled, the
---             'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_POINT' and
---             'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_LINE' enum
---             values /must/ not be used.
---
---         -   #features-depthBounds# @depthBounds@ specifies whether depth
---             bounds tests are supported. If this feature is not enabled,
---             the @depthBoundsTestEnable@ member of the
---             'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo'
---             structure /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
---             unless the
---             'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE'
---             dynamic state is enabled, in which case the
---             @depthBoundsTestEnable@ parameter to
---             'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthBoundsTestEnable'
---             /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'. When
---             @depthBoundsTestEnable@ is
---             'Vulkan.Core10.FundamentalTypes.FALSE', the @minDepthBounds@
---             and @maxDepthBounds@ members of the
---             'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo'
---             structure are ignored.
---
---         -   #features-wideLines# @wideLines@ specifies whether lines
---             with width other than 1.0 are supported. If this feature is
---             not enabled, the @lineWidth@ member of the
---             'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo'
---             structure /must/ be 1.0 unless the
---             'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_WIDTH'
---             dynamic state is enabled, in which case the @lineWidth@
---             parameter to
---             'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth' /must/
---             be 1.0. When this feature is supported, the range and
---             granularity of supported line widths are indicated by the
---             @lineWidthRange@ and @lineWidthGranularity@ members of the
---             'PhysicalDeviceLimits' structure, respectively.
---
---         -   #features-largePoints# @largePoints@ specifies whether
---             points with size greater than 1.0 are supported. If this
---             feature is not enabled, only a point size of 1.0 written by
---             a shader is supported. The range and granularity of
---             supported point sizes are indicated by the @pointSizeRange@
---             and @pointSizeGranularity@ members of the
---             'PhysicalDeviceLimits' structure, respectively.
---
---         -   #features-alphaToOne# @alphaToOne@ specifies whether the
---             implementation is able to replace the alpha value of the
---             fragment shader color output in the
---             <https://registry.khronos.org/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 /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'.
---             Otherwise setting @alphaToOneEnable@ to
---             'Vulkan.Core10.FundamentalTypes.TRUE' will enable
---             alpha-to-one behavior.
---
---         -   #features-multiViewport# @multiViewport@ specifies whether
---             more than one viewport is supported. If this feature is not
---             enabled:
---
---     -   The @viewportCount@ and @scissorCount@ members of the
---         'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'
---         structure /must/ be 1.
---
---     -   The @firstViewport@ and @viewportCount@ parameters to the
---         'Vulkan.Core10.CommandBufferBuilding.cmdSetViewport' command
---         /must/ be 0 and 1, respectively.
---
---     -   The @firstScissor@ and @scissorCount@ parameters to the
---         'Vulkan.Core10.CommandBufferBuilding.cmdSetScissor' command
---         /must/ be 0 and 1, respectively.
---
---     -   The @exclusiveScissorCount@ member of the
---         'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'
---         structure /must/ be 0 or 1.
---
---     -   The @firstExclusiveScissor@ and @exclusiveScissorCount@
---         parameters to the
---         'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorNV'
---         command /must/ be 0 and 1, respectively.
---
---         -   #features-samplerAnisotropy# @samplerAnisotropy@ specifies
---             whether anisotropic filtering is supported. If this feature
---             is not enabled, the @anisotropyEnable@ member of the
---             'Vulkan.Core10.Sampler.SamplerCreateInfo' structure /must/
---             be 'Vulkan.Core10.FundamentalTypes.FALSE'.
---
---         -   #features-textureCompressionETC2# @textureCompressionETC2@
---             specifies whether all of the ETC2 and EAC 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_ETC2_R8G8B8_UNORM_BLOCK'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_ETC2_R8G8B8_SRGB_BLOCK'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_EAC_R11_UNORM_BLOCK'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_EAC_R11_SNORM_BLOCK'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_EAC_R11G11_UNORM_BLOCK'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_EAC_R11G11_SNORM_BLOCK'
---
---         To query for additional properties, or if the feature is not
---         enabled, 'getPhysicalDeviceFormatProperties' and
---         'getPhysicalDeviceImageFormatProperties' /can/ be used to check
---         for supported properties of individual formats as normal.
---
---         -   #features-textureCompressionASTC_LDR#
---             @textureCompressionASTC_LDR@ specifies whether all of the
---             ASTC LDR 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_UNORM_BLOCK'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_4x4_SRGB_BLOCK'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_5x4_UNORM_BLOCK'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_5x4_SRGB_BLOCK'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_5x5_UNORM_BLOCK'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_5x5_SRGB_BLOCK'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_6x5_UNORM_BLOCK'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_6x5_SRGB_BLOCK'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_6x6_UNORM_BLOCK'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_6x6_SRGB_BLOCK'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_8x5_UNORM_BLOCK'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_8x5_SRGB_BLOCK'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_8x6_UNORM_BLOCK'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_8x6_SRGB_BLOCK'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_8x8_UNORM_BLOCK'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_8x8_SRGB_BLOCK'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_10x5_UNORM_BLOCK'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_10x5_SRGB_BLOCK'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_10x6_UNORM_BLOCK'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_10x6_SRGB_BLOCK'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_10x8_UNORM_BLOCK'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_10x8_SRGB_BLOCK'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_10x10_UNORM_BLOCK'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_10x10_SRGB_BLOCK'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_12x10_UNORM_BLOCK'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_12x10_SRGB_BLOCK'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_12x12_UNORM_BLOCK'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_12x12_SRGB_BLOCK'
---
---         To query for additional properties, or if the feature is not
---         enabled, 'getPhysicalDeviceFormatProperties' and
---         'getPhysicalDeviceImageFormatProperties' /can/ be used to check
---         for supported properties of individual formats as normal.
---
---         -   #features-textureCompressionBC# @textureCompressionBC@
---             specifies whether all of the BC 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_BC1_RGB_UNORM_BLOCK'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_BC1_RGB_SRGB_BLOCK'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_BC1_RGBA_UNORM_BLOCK'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_BC1_RGBA_SRGB_BLOCK'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_BC2_UNORM_BLOCK'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_BC2_SRGB_BLOCK'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_BC3_UNORM_BLOCK'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_BC3_SRGB_BLOCK'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_BC4_UNORM_BLOCK'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_BC4_SNORM_BLOCK'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_BC5_UNORM_BLOCK'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_BC5_SNORM_BLOCK'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_BC6H_UFLOAT_BLOCK'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_BC6H_SFLOAT_BLOCK'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_BC7_UNORM_BLOCK'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_BC7_SRGB_BLOCK'
---
---         To query for additional properties, or if the feature is not
---         enabled, 'getPhysicalDeviceFormatProperties' and
---         'getPhysicalDeviceImageFormatProperties' /can/ be used to check
---         for supported properties of individual formats as normal.
---
---         -   #features-occlusionQueryPrecise# @occlusionQueryPrecise@
---             specifies whether occlusion queries returning actual sample
---             counts are supported. Occlusion queries are created in a
---             'Vulkan.Core10.Handles.QueryPool' by specifying the
---             @queryType@ of
---             'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_OCCLUSION' in the
---             'Vulkan.Core10.Query.QueryPoolCreateInfo' structure which is
---             passed to 'Vulkan.Core10.Query.createQueryPool'. If this
---             feature is enabled, queries of this type /can/ enable
---             'Vulkan.Core10.Enums.QueryControlFlagBits.QUERY_CONTROL_PRECISE_BIT'
---             in the @flags@ parameter to
---             'Vulkan.Core10.CommandBufferBuilding.cmdBeginQuery'. If this
---             feature is not supported, the implementation supports only
---             boolean occlusion queries. When any samples are passed,
---             boolean queries will return a non-zero result value,
---             otherwise a result value of zero is returned. When this
---             feature is enabled and
---             'Vulkan.Core10.Enums.QueryControlFlagBits.QUERY_CONTROL_PRECISE_BIT'
---             is set, occlusion queries will report the actual number of
---             samples passed.
---
---         -   #features-pipelineStatisticsQuery# @pipelineStatisticsQuery@
---             specifies whether the pipeline statistics queries are
---             supported. If this feature is not enabled, queries of type
---             'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PIPELINE_STATISTICS'
---             /cannot/ be created, and none of the
---             'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QueryPipelineStatisticFlagBits'
---             bits /can/ be set in the @pipelineStatistics@ member of the
---             'Vulkan.Core10.Query.QueryPoolCreateInfo' structure.
---
---         -   #features-vertexPipelineStoresAndAtomics#
---             @vertexPipelineStoresAndAtomics@ specifies whether storage
---             buffers and images support stores and atomic operations in
---             the vertex, tessellation, and geometry shader stages. If
---             this feature is not enabled, all storage image, storage
---             texel buffer, and storage buffer variables used by these
---             stages in shader modules /must/ be decorated with the
---             @NonWritable@ decoration (or the @readonly@ memory qualifier
---             in GLSL).
---
---         -   #features-fragmentStoresAndAtomics#
---             @fragmentStoresAndAtomics@ specifies whether storage buffers
---             and images support stores and atomic operations in the
---             fragment shader stage. If this feature is not enabled, all
---             storage image, storage texel buffer, and storage buffer
---             variables used by the fragment stage in shader modules
---             /must/ be decorated with the @NonWritable@ decoration (or
---             the @readonly@ memory qualifier in GLSL).
---
---         -   #features-shaderTessellationAndGeometryPointSize#
---             @shaderTessellationAndGeometryPointSize@ specifies whether
---             the @PointSize@ built-in decoration is available in the
---             tessellation control, tessellation evaluation, and geometry
---             shader stages. If this feature is not enabled, members
---             decorated with the @PointSize@ built-in decoration /must/
---             not be read from or written to and all points written from a
---             tessellation or geometry shader will have a size of 1.0.
---             This also specifies whether shader modules /can/ declare the
---             @TessellationPointSize@ capability for tessellation control
---             and 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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-tessellationShader tessellationShader>
---             or
---             <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-geometryShader geometryShader>
---             features.
---
---         -   #features-shaderImageGatherExtended#
---             @shaderImageGatherExtended@ specifies whether the extended
---             set of image gather instructions are available in shader
---             code. If this feature is not enabled, the @OpImage*Gather@
---             instructions do not support the @Offset@ and @ConstOffsets@
---             operands. This also specifies whether shader modules /can/
---             declare the @ImageGatherExtended@ capability.
---
---         -   #features-shaderStorageImageExtendedFormats#
---             @shaderStorageImageExtendedFormats@ specifies whether all
---             the “storage image extended formats” below are supported; if
---             this feature is supported, then the
---             'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_IMAGE_BIT'
---             /must/ be supported in @optimalTilingFeatures@ for the
---             following formats:
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_R16G16_SFLOAT'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_B10G11R11_UFLOAT_PACK32'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_R16_SFLOAT'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_R16G16B16A16_UNORM'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_A2B10G10R10_UNORM_PACK32'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_R16G16_UNORM'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_R8G8_UNORM'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_R16_UNORM'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_R8_UNORM'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_R16G16B16A16_SNORM'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_R16G16_SNORM'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_R8G8_SNORM'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_R16_SNORM'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_R8_SNORM'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_R16G16_SINT'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_R8G8_SINT'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_R16_SINT'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_R8_SINT'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_A2B10G10R10_UINT_PACK32'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_R16G16_UINT'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_R8G8_UINT'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_R16_UINT'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT'
---
---         @shaderStorageImageExtendedFormats@ feature only adds a
---         guarantee of format support, which is specified for the whole
---         physical device. Therefore enabling or disabling the feature via
---         'Vulkan.Core10.Device.createDevice' has no practical effect.
---
---         To query for additional properties, or if the feature is not
---         supported, 'getPhysicalDeviceFormatProperties' and
---         'getPhysicalDeviceImageFormatProperties' /can/ be used to check
---         for supported properties of individual formats, as usual rules
---         allow.
---
---         'Vulkan.Core10.Enums.Format.FORMAT_R32G32_UINT',
---         'Vulkan.Core10.Enums.Format.FORMAT_R32G32_SINT', and
---         'Vulkan.Core10.Enums.Format.FORMAT_R32G32_SFLOAT' from
---         @StorageImageExtendedFormats@ SPIR-V capability, are already
---         covered by core Vulkan
---         <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#formats-mandatory-features-32bit mandatory format support>.
---
---         -   #features-shaderStorageImageMultisample#
---             @shaderStorageImageMultisample@ specifies whether
---             multisampled storage images are supported. If this feature
---             is not enabled, images that are created with a @usage@ that
---             includes
---             'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_STORAGE_BIT'
---             /must/ be created with @samples@ equal to
---             'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'.
---             This also specifies whether shader modules /can/ declare the
---             @StorageImageMultisample@ and @ImageMSArray@ capabilities.
---
---         -   #features-shaderStorageImageReadWithoutFormat#
---             @shaderStorageImageReadWithoutFormat@ specifies whether
---             storage images and storage texel buffers require a format
---             qualifier to be specified when reading.
---             @shaderStorageImageReadWithoutFormat@ applies only to
---             formats listed in the
---             <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#formats-without-shader-storage-format storage without format>
---             list.
---
---         -   #features-shaderStorageImageWriteWithoutFormat#
---             @shaderStorageImageWriteWithoutFormat@ specifies whether
---             storage images and storage texel buffers require a format
---             qualifier to be specified when writing.
---             @shaderStorageImageWriteWithoutFormat@ applies only to
---             formats listed in the
---             <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#formats-without-shader-storage-format storage without format>
---             list.
---
---         -   #features-shaderUniformBufferArrayDynamicIndexing#
---             @shaderUniformBufferArrayDynamicIndexing@ specifies whether
---             arrays of uniform buffers /can/ be indexed by integer
---             expressions that are dynamically uniform within either the
---             subgroup or the invocation group in shader code. If this
---             feature is not enabled, resources with a descriptor type of
---             'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER'
---             or
---             'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC'
---             /must/ be indexed only by constant integral expressions when
---             aggregated into arrays in shader code. This also specifies
---             whether shader modules /can/ declare the
---             @UniformBufferArrayDynamicIndexing@ capability.
---
---         -   #features-shaderSampledImageArrayDynamicIndexing#
---             @shaderSampledImageArrayDynamicIndexing@ specifies whether
---             arrays of samplers or sampled images /can/ be indexed by
---             integer expressions that are dynamically uniform within
---             either the subgroup or the invocation group in shader code.
---             If this feature is not enabled, resources with a descriptor
---             type of
---             'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLER',
---             'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER',
---             or
---             'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE'
---             /must/ be indexed only by constant integral expressions when
---             aggregated into arrays in shader code. This also specifies
---             whether shader modules /can/ declare the
---             @SampledImageArrayDynamicIndexing@ capability.
---
---         -   #features-shaderStorageBufferArrayDynamicIndexing#
---             @shaderStorageBufferArrayDynamicIndexing@ specifies whether
---             arrays of storage buffers /can/ be indexed by integer
---             expressions that are dynamically uniform within either the
---             subgroup or the invocation group in shader code. If this
---             feature is not enabled, resources with a descriptor type of
---             'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER'
---             or
---             'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC'
---             /must/ be indexed only by constant integral expressions when
---             aggregated into arrays in shader code. This also specifies
---             whether shader modules /can/ declare the
---             @StorageBufferArrayDynamicIndexing@ capability.
---
---         -   #features-shaderStorageImageArrayDynamicIndexing#
---             @shaderStorageImageArrayDynamicIndexing@ specifies whether
---             arrays of storage images /can/ be indexed by integer
---             expressions that are dynamically uniform within either the
---             subgroup or the invocation group in shader code. If this
---             feature is not enabled, resources with a descriptor type of
---             'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE'
---             /must/ be indexed only by constant integral expressions when
---             aggregated into arrays in shader code. This also specifies
---             whether shader modules /can/ declare the
---             @StorageImageArrayDynamicIndexing@ capability.
---
---         -   #features-shaderClipDistance# @shaderClipDistance@ specifies
---             whether clip distances are supported in shader code. If this
---             feature is not enabled, any members decorated with the
---             @ClipDistance@ built-in decoration /must/ not be read from
---             or written to in shader modules. This also specifies whether
---             shader modules /can/ declare the @ClipDistance@ capability.
---
---         -   #features-shaderCullDistance# @shaderCullDistance@ specifies
---             whether cull distances are supported in shader code. If this
---             feature is not enabled, any members decorated with the
---             @CullDistance@ built-in decoration /must/ not be read from
---             or written to in shader modules. This also specifies whether
---             shader modules /can/ declare the @CullDistance@ capability.
---
---         -   #features-shaderFloat64# @shaderFloat64@ specifies whether
---             64-bit floats (doubles) are supported in shader code. If
---             this feature is not enabled, 64-bit floating-point types
---             /must/ not be used in shader code. This also specifies
---             whether shader modules /can/ declare the @Float64@
---             capability. Declaring and using 64-bit floats is enabled for
---             all storage classes that SPIR-V allows with the @Float64@
---             capability.
---
---         -   #features-shaderInt64# @shaderInt64@ specifies whether
---             64-bit integers (signed and unsigned) are supported in
---             shader code. If this feature is not enabled, 64-bit integer
---             types /must/ not be used in shader code. This also specifies
---             whether shader modules /can/ declare the @Int64@ capability.
---             Declaring and using 64-bit integers is enabled for all
---             storage classes that SPIR-V allows with the @Int64@
---             capability.
---
---         -   #features-shaderInt16# @shaderInt16@ specifies whether
---             16-bit integers (signed and unsigned) are supported in
---             shader code. If this feature is not enabled, 16-bit integer
---             types /must/ not be used in shader code. This also specifies
---             whether shader modules /can/ declare the @Int16@ capability.
---             However, this only enables a subset of the storage classes
---             that SPIR-V allows for the @Int16@ SPIR-V capability:
---             Declaring and using 16-bit integers in the @Private@,
---             @Workgroup@ (for non-Block variables), and @Function@
---             storage classes is enabled, while declaring them in the
---             interface storage classes (e.g., @UniformConstant@,
---             @Uniform@, @StorageBuffer@, @Input@, @Output@, and
---             @PushConstant@) is not enabled.
---
---         -   #features-shaderResourceResidency# @shaderResourceResidency@
---             specifies whether image operations that return resource
---             residency information are supported in shader code. If this
---             feature is not enabled, the @OpImageSparse*@ instructions
---             /must/ not be used in shader code. This also specifies
---             whether shader modules /can/ declare the @SparseResidency@
---             capability. The feature requires at least one of the
---             @sparseResidency*@ features to be supported.
---
---         -   #features-shaderResourceMinLod# @shaderResourceMinLod@
---             specifies whether image operations specifying the minimum
---             resource LOD are supported in shader code. If this feature
---             is not enabled, the @MinLod@ image operand /must/ not be
---             used in shader code. This also specifies whether shader
---             modules /can/ declare the @MinLod@ capability.
---
---         -   #features-sparseBinding# @sparseBinding@ specifies whether
---             resource memory /can/ be managed at opaque sparse block
---             level instead of at the object level. If this feature is not
---             enabled, resource memory /must/ be bound only on a
---             per-object basis using the
---             'Vulkan.Core10.MemoryManagement.bindBufferMemory' and
---             'Vulkan.Core10.MemoryManagement.bindImageMemory' commands.
---             In this case, buffers and images /must/ not be created with
---             'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_SPARSE_BINDING_BIT'
---             and
---             'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_BINDING_BIT'
---             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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#sparsememory-sparseresourcefeatures Sparse Resource Features>.
---
---         -   #features-sparseResidencyBuffer# @sparseResidencyBuffer@
---             specifies whether the device /can/ access partially resident
---             buffers. If this feature is not enabled, buffers /must/ not
---             be created with
---             'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_SPARSE_RESIDENCY_BIT'
---             set in the @flags@ member of the
---             'Vulkan.Core10.Buffer.BufferCreateInfo' structure.
---
---         -   #features-sparseResidencyImage2D# @sparseResidencyImage2D@
---             specifies whether the device /can/ access partially resident
---             2D images with 1 sample per pixel. If this feature is not
---             enabled, images with an @imageType@ of
---             'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D' and @samples@
---             set to
---             'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'
---             /must/ not be created with
---             'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_RESIDENCY_BIT'
---             set in the @flags@ member of the
---             'Vulkan.Core10.Image.ImageCreateInfo' structure.
---
---         -   #features-sparseResidencyImage3D# @sparseResidencyImage3D@
---             specifies whether the device /can/ access partially resident
---             3D images. If this feature is not enabled, images with an
---             @imageType@ of 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D'
---             /must/ not be created with
---             'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_RESIDENCY_BIT'
---             set in the @flags@ member of the
---             'Vulkan.Core10.Image.ImageCreateInfo' structure.
---
---         -   #features-sparseResidency2Samples# @sparseResidency2Samples@
---             specifies whether the physical device /can/ access partially
---             resident 2D images with 2 samples per pixel. If this feature
---             is not enabled, images with an @imageType@ of
---             'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D' and @samples@
---             set to
---             'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_2_BIT'
---             /must/ not be created with
---             'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_RESIDENCY_BIT'
---             set in the @flags@ member of the
---             'Vulkan.Core10.Image.ImageCreateInfo' structure.
---
---         -   #features-sparseResidency4Samples# @sparseResidency4Samples@
---             specifies whether the physical device /can/ access partially
---             resident 2D images with 4 samples per pixel. If this feature
---             is not enabled, images with an @imageType@ of
---             'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D' and @samples@
---             set to
---             'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_4_BIT'
---             /must/ not be created with
---             'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_RESIDENCY_BIT'
---             set in the @flags@ member of the
---             'Vulkan.Core10.Image.ImageCreateInfo' structure.
---
---         -   #features-sparseResidency8Samples# @sparseResidency8Samples@
---             specifies whether the physical device /can/ access partially
---             resident 2D images with 8 samples per pixel. If this feature
---             is not enabled, images with an @imageType@ of
---             'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D' and @samples@
---             set to
---             'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_8_BIT'
---             /must/ not be created with
---             'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_RESIDENCY_BIT'
---             set in the @flags@ member of the
---             'Vulkan.Core10.Image.ImageCreateInfo' structure.
---
---         -   #features-sparseResidency16Samples#
---             @sparseResidency16Samples@ specifies whether the physical
---             device /can/ access partially resident 2D images with 16
---             samples per pixel. If this feature is not enabled, images
---             with an @imageType@ of
---             'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D' and @samples@
---             set to
---             'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_16_BIT'
---             /must/ not be created with
---             'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_RESIDENCY_BIT'
---             set in the @flags@ member of the
---             'Vulkan.Core10.Image.ImageCreateInfo' structure.
---
---         -   #features-sparseResidencyAliased# @sparseResidencyAliased@
---             specifies whether the physical device /can/ correctly access
---             data aliased into multiple locations. If this feature is not
---             enabled, the
---             'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_SPARSE_ALIASED_BIT'
---             and
---             'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_ALIASED_BIT'
---             enum values /must/ not be used in @flags@ members of the
---             'Vulkan.Core10.Buffer.BufferCreateInfo' and
---             'Vulkan.Core10.Image.ImageCreateInfo' structures,
---             respectively.
---
---         -   #features-variableMultisampleRate# @variableMultisampleRate@
---             specifies whether all pipelines that will be bound to a
---             command buffer during a
---             <https://registry.khronos.org/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 supports variable multisample rates in a
---             subpass which uses no attachments. If set to
---             'Vulkan.Core10.FundamentalTypes.FALSE', then all pipelines
---             bound in such a subpass /must/ have the same multisample
---             rate. This has no effect in situations where a subpass uses
---             any attachments.
---
---         -   #features-inheritedQueries# @inheritedQueries@ specifies
---             whether a secondary command buffer /may/ be executed while a
---             query is active.
---
--- = 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.Bool32',
--- 'Vulkan.Core10.Device.DeviceCreateInfo',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--- 'getPhysicalDeviceFeatures'
-data PhysicalDeviceFeatures = PhysicalDeviceFeatures
-  { -- | #features-robustBufferAccess# @robustBufferAccess@ specifies that
-    -- accesses to buffers are bounds-checked against the range of the buffer
-    -- descriptor (as determined by
-    -- 'Vulkan.Core10.DescriptorSet.DescriptorBufferInfo'::@range@,
-    -- 'Vulkan.Core10.BufferView.BufferViewCreateInfo'::@range@, or the size of
-    -- the buffer). Out of bounds accesses /must/ not cause application
-    -- termination, and the effects of shader loads, stores, and atomics /must/
-    -- conform to an implementation-dependent behavior as described below.
-    --
-    -- -   A buffer access is considered to be out of bounds if any of the
-    --     following are true:
-    --
-    --     -   The pointer was formed by @OpImageTexelPointer@ and the
-    --         coordinate is less than zero or greater than or equal to the
-    --         number of whole elements in the bound range.
-    --
-    --     -   The pointer was not formed by @OpImageTexelPointer@ and the
-    --         object pointed to is not wholly contained within the bound
-    --         range. This includes accesses performed via /variable pointers/
-    --         where the buffer descriptor being accessed cannot be statically
-    --         determined. Uninitialized pointers and pointers equal to
-    --         @OpConstantNull@ are treated as pointing to a zero-sized object,
-    --         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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-cooperativeMatrixRobustBufferAccessNV ::cooperativeMatrixRobustBufferAccess>
-    --         feature is not enabled, then accesses using
-    --         @OpCooperativeMatrixLoadNV@ and @OpCooperativeMatrixStoreNV@
-    --         /may/ not be bounds-checked.
-    --
-    --     -   If the
-    --         <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-cooperativeMatrixRobustBufferAccess ::cooperativeMatrixRobustBufferAccess>
-    --         feature is not enabled, then accesses using
-    --         @OpCooperativeMatrixLoadKHR@ and @OpCooperativeMatrixStoreKHR@
-    --         /may/ not be bounds-checked.
-    --
-    --         If a SPIR-V @OpLoad@ instruction loads a structure and the tail
-    --         end of the structure is out of bounds, then all members of the
-    --         structure are considered out of bounds even if the members at
-    --         the end are not statically used.
-    robustBufferAccess :: Bool
-  , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "fullDrawIndexUint32"
-    fullDrawIndexUint32 :: Bool
-  , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "imageCubeArray"
-    imageCubeArray :: Bool
-  , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "independentBlend"
-    independentBlend :: Bool
-  , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "geometryShader"
-    geometryShader :: Bool
-  , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "tessellationShader"
-    tessellationShader :: Bool
-  , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "sampleRateShading"
-    sampleRateShading :: Bool
-  , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "dualSrcBlend"
-    dualSrcBlend :: Bool
-  , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "logicOp"
-    logicOp :: Bool
-  , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "multiDrawIndirect"
-    multiDrawIndirect :: Bool
-  , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "drawIndirectFirstInstance"
-    drawIndirectFirstInstance :: Bool
-  , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "depthClamp"
-    depthClamp :: Bool
-  , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "depthBiasClamp"
-    depthBiasClamp :: Bool
-  , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "fillModeNonSolid"
-    fillModeNonSolid :: Bool
-  , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "depthBounds"
-    depthBounds :: Bool
-  , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "wideLines"
-    wideLines :: Bool
-  , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "largePoints"
-    largePoints :: Bool
-  , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "alphaToOne"
-    alphaToOne :: Bool
-  , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "multiViewport"
-    multiViewport :: Bool
-  , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "samplerAnisotropy"
-    samplerAnisotropy :: Bool
-  , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "textureCompressionETC2"
-    textureCompressionETC2 :: Bool
-  , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "textureCompressionASTC_LDR"
-    textureCompressionASTC_LDR :: Bool
-  , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "textureCompressionBC"
-    textureCompressionBC :: Bool
-  , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "occlusionQueryPrecise"
-    occlusionQueryPrecise :: Bool
-  , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "pipelineStatisticsQuery"
-    pipelineStatisticsQuery :: Bool
-  , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "vertexPipelineStoresAndAtomics"
-    vertexPipelineStoresAndAtomics :: Bool
-  , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "fragmentStoresAndAtomics"
-    fragmentStoresAndAtomics :: Bool
-  , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "shaderTessellationAndGeometryPointSize"
-    shaderTessellationAndGeometryPointSize :: Bool
-  , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "shaderImageGatherExtended"
-    shaderImageGatherExtended :: Bool
-  , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "shaderStorageImageExtendedFormats"
-    shaderStorageImageExtendedFormats :: Bool
-  , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "shaderStorageImageMultisample"
-    shaderStorageImageMultisample :: Bool
-  , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "shaderStorageImageReadWithoutFormat"
-    shaderStorageImageReadWithoutFormat :: Bool
-  , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "shaderStorageImageWriteWithoutFormat"
-    shaderStorageImageWriteWithoutFormat :: Bool
-  , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "shaderUniformBufferArrayDynamicIndexing"
-    shaderUniformBufferArrayDynamicIndexing :: Bool
-  , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "shaderSampledImageArrayDynamicIndexing"
-    shaderSampledImageArrayDynamicIndexing :: Bool
-  , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "shaderStorageBufferArrayDynamicIndexing"
-    shaderStorageBufferArrayDynamicIndexing :: Bool
-  , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "shaderStorageImageArrayDynamicIndexing"
-    shaderStorageImageArrayDynamicIndexing :: Bool
-  , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "shaderClipDistance"
-    shaderClipDistance :: Bool
-  , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "shaderCullDistance"
-    shaderCullDistance :: Bool
-  , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "shaderFloat64"
-    shaderFloat64 :: Bool
-  , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "shaderInt64"
-    shaderInt64 :: Bool
-  , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "shaderInt16"
-    shaderInt16 :: Bool
-  , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "shaderResourceResidency"
-    shaderResourceResidency :: Bool
-  , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "shaderResourceMinLod"
-    shaderResourceMinLod :: Bool
-  , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "sparseBinding"
-    sparseBinding :: Bool
-  , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "sparseResidencyBuffer"
-    sparseResidencyBuffer :: Bool
-  , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "sparseResidencyImage2D"
-    sparseResidencyImage2D :: Bool
-  , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "sparseResidencyImage3D"
-    sparseResidencyImage3D :: Bool
-  , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "sparseResidency2Samples"
-    sparseResidency2Samples :: Bool
-  , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "sparseResidency4Samples"
-    sparseResidency4Samples :: Bool
-  , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "sparseResidency8Samples"
-    sparseResidency8Samples :: Bool
-  , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "sparseResidency16Samples"
-    sparseResidency16Samples :: Bool
-  , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "sparseResidencyAliased"
-    sparseResidencyAliased :: Bool
-  , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "variableMultisampleRate"
-    variableMultisampleRate :: Bool
-  , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "inheritedQueries"
-    inheritedQueries :: Bool
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PhysicalDeviceFeatures)
-#endif
-deriving instance Show PhysicalDeviceFeatures
-
-instance ToCStruct PhysicalDeviceFeatures where
-  withCStruct x f = allocaBytes 220 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PhysicalDeviceFeatures{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr Bool32)) (boolToBool32 (robustBufferAccess))
-    poke ((p `plusPtr` 4 :: Ptr Bool32)) (boolToBool32 (fullDrawIndexUint32))
-    poke ((p `plusPtr` 8 :: Ptr Bool32)) (boolToBool32 (imageCubeArray))
-    poke ((p `plusPtr` 12 :: Ptr Bool32)) (boolToBool32 (independentBlend))
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (geometryShader))
-    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (tessellationShader))
-    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (sampleRateShading))
-    poke ((p `plusPtr` 28 :: Ptr Bool32)) (boolToBool32 (dualSrcBlend))
-    poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (logicOp))
-    poke ((p `plusPtr` 36 :: Ptr Bool32)) (boolToBool32 (multiDrawIndirect))
-    poke ((p `plusPtr` 40 :: Ptr Bool32)) (boolToBool32 (drawIndirectFirstInstance))
-    poke ((p `plusPtr` 44 :: Ptr Bool32)) (boolToBool32 (depthClamp))
-    poke ((p `plusPtr` 48 :: Ptr Bool32)) (boolToBool32 (depthBiasClamp))
-    poke ((p `plusPtr` 52 :: Ptr Bool32)) (boolToBool32 (fillModeNonSolid))
-    poke ((p `plusPtr` 56 :: Ptr Bool32)) (boolToBool32 (depthBounds))
-    poke ((p `plusPtr` 60 :: Ptr Bool32)) (boolToBool32 (wideLines))
-    poke ((p `plusPtr` 64 :: Ptr Bool32)) (boolToBool32 (largePoints))
-    poke ((p `plusPtr` 68 :: Ptr Bool32)) (boolToBool32 (alphaToOne))
-    poke ((p `plusPtr` 72 :: Ptr Bool32)) (boolToBool32 (multiViewport))
-    poke ((p `plusPtr` 76 :: Ptr Bool32)) (boolToBool32 (samplerAnisotropy))
-    poke ((p `plusPtr` 80 :: Ptr Bool32)) (boolToBool32 (textureCompressionETC2))
-    poke ((p `plusPtr` 84 :: Ptr Bool32)) (boolToBool32 (textureCompressionASTC_LDR))
-    poke ((p `plusPtr` 88 :: Ptr Bool32)) (boolToBool32 (textureCompressionBC))
-    poke ((p `plusPtr` 92 :: Ptr Bool32)) (boolToBool32 (occlusionQueryPrecise))
-    poke ((p `plusPtr` 96 :: Ptr Bool32)) (boolToBool32 (pipelineStatisticsQuery))
-    poke ((p `plusPtr` 100 :: Ptr Bool32)) (boolToBool32 (vertexPipelineStoresAndAtomics))
-    poke ((p `plusPtr` 104 :: Ptr Bool32)) (boolToBool32 (fragmentStoresAndAtomics))
-    poke ((p `plusPtr` 108 :: Ptr Bool32)) (boolToBool32 (shaderTessellationAndGeometryPointSize))
-    poke ((p `plusPtr` 112 :: Ptr Bool32)) (boolToBool32 (shaderImageGatherExtended))
-    poke ((p `plusPtr` 116 :: Ptr Bool32)) (boolToBool32 (shaderStorageImageExtendedFormats))
-    poke ((p `plusPtr` 120 :: Ptr Bool32)) (boolToBool32 (shaderStorageImageMultisample))
-    poke ((p `plusPtr` 124 :: Ptr Bool32)) (boolToBool32 (shaderStorageImageReadWithoutFormat))
-    poke ((p `plusPtr` 128 :: Ptr Bool32)) (boolToBool32 (shaderStorageImageWriteWithoutFormat))
-    poke ((p `plusPtr` 132 :: Ptr Bool32)) (boolToBool32 (shaderUniformBufferArrayDynamicIndexing))
-    poke ((p `plusPtr` 136 :: Ptr Bool32)) (boolToBool32 (shaderSampledImageArrayDynamicIndexing))
-    poke ((p `plusPtr` 140 :: Ptr Bool32)) (boolToBool32 (shaderStorageBufferArrayDynamicIndexing))
-    poke ((p `plusPtr` 144 :: Ptr Bool32)) (boolToBool32 (shaderStorageImageArrayDynamicIndexing))
-    poke ((p `plusPtr` 148 :: Ptr Bool32)) (boolToBool32 (shaderClipDistance))
-    poke ((p `plusPtr` 152 :: Ptr Bool32)) (boolToBool32 (shaderCullDistance))
-    poke ((p `plusPtr` 156 :: Ptr Bool32)) (boolToBool32 (shaderFloat64))
-    poke ((p `plusPtr` 160 :: Ptr Bool32)) (boolToBool32 (shaderInt64))
-    poke ((p `plusPtr` 164 :: Ptr Bool32)) (boolToBool32 (shaderInt16))
-    poke ((p `plusPtr` 168 :: Ptr Bool32)) (boolToBool32 (shaderResourceResidency))
-    poke ((p `plusPtr` 172 :: Ptr Bool32)) (boolToBool32 (shaderResourceMinLod))
-    poke ((p `plusPtr` 176 :: Ptr Bool32)) (boolToBool32 (sparseBinding))
-    poke ((p `plusPtr` 180 :: Ptr Bool32)) (boolToBool32 (sparseResidencyBuffer))
-    poke ((p `plusPtr` 184 :: Ptr Bool32)) (boolToBool32 (sparseResidencyImage2D))
-    poke ((p `plusPtr` 188 :: Ptr Bool32)) (boolToBool32 (sparseResidencyImage3D))
-    poke ((p `plusPtr` 192 :: Ptr Bool32)) (boolToBool32 (sparseResidency2Samples))
-    poke ((p `plusPtr` 196 :: Ptr Bool32)) (boolToBool32 (sparseResidency4Samples))
-    poke ((p `plusPtr` 200 :: Ptr Bool32)) (boolToBool32 (sparseResidency8Samples))
-    poke ((p `plusPtr` 204 :: Ptr Bool32)) (boolToBool32 (sparseResidency16Samples))
-    poke ((p `plusPtr` 208 :: Ptr Bool32)) (boolToBool32 (sparseResidencyAliased))
-    poke ((p `plusPtr` 212 :: Ptr Bool32)) (boolToBool32 (variableMultisampleRate))
-    poke ((p `plusPtr` 216 :: Ptr Bool32)) (boolToBool32 (inheritedQueries))
-    f
-  cStructSize = 220
-  cStructAlignment = 4
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr Bool32)) (boolToBool32 (zero))
-    poke ((p `plusPtr` 4 :: Ptr Bool32)) (boolToBool32 (zero))
-    poke ((p `plusPtr` 8 :: Ptr Bool32)) (boolToBool32 (zero))
-    poke ((p `plusPtr` 12 :: Ptr Bool32)) (boolToBool32 (zero))
-    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))
-    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 Bool32)) (boolToBool32 (zero))
-    poke ((p `plusPtr` 180 :: Ptr Bool32)) (boolToBool32 (zero))
-    poke ((p `plusPtr` 184 :: Ptr Bool32)) (boolToBool32 (zero))
-    poke ((p `plusPtr` 188 :: Ptr Bool32)) (boolToBool32 (zero))
-    poke ((p `plusPtr` 192 :: Ptr Bool32)) (boolToBool32 (zero))
-    poke ((p `plusPtr` 196 :: Ptr Bool32)) (boolToBool32 (zero))
-    poke ((p `plusPtr` 200 :: Ptr Bool32)) (boolToBool32 (zero))
-    poke ((p `plusPtr` 204 :: Ptr Bool32)) (boolToBool32 (zero))
-    poke ((p `plusPtr` 208 :: Ptr Bool32)) (boolToBool32 (zero))
-    poke ((p `plusPtr` 212 :: Ptr Bool32)) (boolToBool32 (zero))
-    poke ((p `plusPtr` 216 :: Ptr Bool32)) (boolToBool32 (zero))
-    f
-
-instance FromCStruct PhysicalDeviceFeatures where
-  peekCStruct p = do
-    robustBufferAccess <- peek @Bool32 ((p `plusPtr` 0 :: Ptr Bool32))
-    fullDrawIndexUint32 <- peek @Bool32 ((p `plusPtr` 4 :: Ptr Bool32))
-    imageCubeArray <- peek @Bool32 ((p `plusPtr` 8 :: Ptr Bool32))
-    independentBlend <- peek @Bool32 ((p `plusPtr` 12 :: Ptr Bool32))
-    geometryShader <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
-    tessellationShader <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
-    sampleRateShading <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))
-    dualSrcBlend <- peek @Bool32 ((p `plusPtr` 28 :: Ptr Bool32))
-    logicOp <- peek @Bool32 ((p `plusPtr` 32 :: Ptr Bool32))
-    multiDrawIndirect <- peek @Bool32 ((p `plusPtr` 36 :: Ptr Bool32))
-    drawIndirectFirstInstance <- peek @Bool32 ((p `plusPtr` 40 :: Ptr Bool32))
-    depthClamp <- peek @Bool32 ((p `plusPtr` 44 :: Ptr Bool32))
-    depthBiasClamp <- peek @Bool32 ((p `plusPtr` 48 :: Ptr Bool32))
-    fillModeNonSolid <- peek @Bool32 ((p `plusPtr` 52 :: Ptr Bool32))
-    depthBounds <- peek @Bool32 ((p `plusPtr` 56 :: Ptr Bool32))
-    wideLines <- peek @Bool32 ((p `plusPtr` 60 :: Ptr Bool32))
-    largePoints <- peek @Bool32 ((p `plusPtr` 64 :: Ptr Bool32))
-    alphaToOne <- peek @Bool32 ((p `plusPtr` 68 :: Ptr Bool32))
-    multiViewport <- peek @Bool32 ((p `plusPtr` 72 :: Ptr Bool32))
-    samplerAnisotropy <- peek @Bool32 ((p `plusPtr` 76 :: Ptr Bool32))
-    textureCompressionETC2 <- peek @Bool32 ((p `plusPtr` 80 :: Ptr Bool32))
-    textureCompressionASTC_LDR <- peek @Bool32 ((p `plusPtr` 84 :: Ptr Bool32))
-    textureCompressionBC <- peek @Bool32 ((p `plusPtr` 88 :: Ptr Bool32))
-    occlusionQueryPrecise <- peek @Bool32 ((p `plusPtr` 92 :: Ptr Bool32))
-    pipelineStatisticsQuery <- peek @Bool32 ((p `plusPtr` 96 :: Ptr Bool32))
-    vertexPipelineStoresAndAtomics <- peek @Bool32 ((p `plusPtr` 100 :: Ptr Bool32))
-    fragmentStoresAndAtomics <- peek @Bool32 ((p `plusPtr` 104 :: Ptr Bool32))
-    shaderTessellationAndGeometryPointSize <- peek @Bool32 ((p `plusPtr` 108 :: Ptr Bool32))
-    shaderImageGatherExtended <- peek @Bool32 ((p `plusPtr` 112 :: Ptr Bool32))
-    shaderStorageImageExtendedFormats <- peek @Bool32 ((p `plusPtr` 116 :: Ptr Bool32))
-    shaderStorageImageMultisample <- peek @Bool32 ((p `plusPtr` 120 :: Ptr Bool32))
-    shaderStorageImageReadWithoutFormat <- peek @Bool32 ((p `plusPtr` 124 :: Ptr Bool32))
-    shaderStorageImageWriteWithoutFormat <- peek @Bool32 ((p `plusPtr` 128 :: Ptr Bool32))
-    shaderUniformBufferArrayDynamicIndexing <- peek @Bool32 ((p `plusPtr` 132 :: Ptr Bool32))
-    shaderSampledImageArrayDynamicIndexing <- peek @Bool32 ((p `plusPtr` 136 :: Ptr Bool32))
-    shaderStorageBufferArrayDynamicIndexing <- peek @Bool32 ((p `plusPtr` 140 :: Ptr Bool32))
-    shaderStorageImageArrayDynamicIndexing <- peek @Bool32 ((p `plusPtr` 144 :: Ptr Bool32))
-    shaderClipDistance <- peek @Bool32 ((p `plusPtr` 148 :: Ptr Bool32))
-    shaderCullDistance <- peek @Bool32 ((p `plusPtr` 152 :: Ptr Bool32))
-    shaderFloat64 <- peek @Bool32 ((p `plusPtr` 156 :: Ptr Bool32))
-    shaderInt64 <- peek @Bool32 ((p `plusPtr` 160 :: Ptr Bool32))
-    shaderInt16 <- peek @Bool32 ((p `plusPtr` 164 :: Ptr Bool32))
-    shaderResourceResidency <- peek @Bool32 ((p `plusPtr` 168 :: Ptr Bool32))
-    shaderResourceMinLod <- peek @Bool32 ((p `plusPtr` 172 :: Ptr Bool32))
-    sparseBinding <- peek @Bool32 ((p `plusPtr` 176 :: Ptr Bool32))
-    sparseResidencyBuffer <- peek @Bool32 ((p `plusPtr` 180 :: Ptr Bool32))
-    sparseResidencyImage2D <- peek @Bool32 ((p `plusPtr` 184 :: Ptr Bool32))
-    sparseResidencyImage3D <- peek @Bool32 ((p `plusPtr` 188 :: Ptr Bool32))
-    sparseResidency2Samples <- peek @Bool32 ((p `plusPtr` 192 :: Ptr Bool32))
-    sparseResidency4Samples <- peek @Bool32 ((p `plusPtr` 196 :: Ptr Bool32))
-    sparseResidency8Samples <- peek @Bool32 ((p `plusPtr` 200 :: Ptr Bool32))
-    sparseResidency16Samples <- peek @Bool32 ((p `plusPtr` 204 :: Ptr Bool32))
-    sparseResidencyAliased <- peek @Bool32 ((p `plusPtr` 208 :: Ptr Bool32))
-    variableMultisampleRate <- peek @Bool32 ((p `plusPtr` 212 :: Ptr Bool32))
-    inheritedQueries <- peek @Bool32 ((p `plusPtr` 216 :: Ptr Bool32))
-    pure $ PhysicalDeviceFeatures
-             (bool32ToBool robustBufferAccess)
-             (bool32ToBool fullDrawIndexUint32)
-             (bool32ToBool imageCubeArray)
-             (bool32ToBool independentBlend)
-             (bool32ToBool geometryShader)
-             (bool32ToBool tessellationShader)
-             (bool32ToBool sampleRateShading)
-             (bool32ToBool dualSrcBlend)
-             (bool32ToBool logicOp)
-             (bool32ToBool multiDrawIndirect)
-             (bool32ToBool drawIndirectFirstInstance)
-             (bool32ToBool depthClamp)
-             (bool32ToBool depthBiasClamp)
-             (bool32ToBool fillModeNonSolid)
-             (bool32ToBool depthBounds)
-             (bool32ToBool wideLines)
-             (bool32ToBool largePoints)
-             (bool32ToBool alphaToOne)
-             (bool32ToBool multiViewport)
-             (bool32ToBool samplerAnisotropy)
-             (bool32ToBool textureCompressionETC2)
-             (bool32ToBool textureCompressionASTC_LDR)
-             (bool32ToBool textureCompressionBC)
-             (bool32ToBool occlusionQueryPrecise)
-             (bool32ToBool pipelineStatisticsQuery)
-             (bool32ToBool vertexPipelineStoresAndAtomics)
-             (bool32ToBool fragmentStoresAndAtomics)
-             (bool32ToBool shaderTessellationAndGeometryPointSize)
-             (bool32ToBool shaderImageGatherExtended)
-             (bool32ToBool shaderStorageImageExtendedFormats)
-             (bool32ToBool shaderStorageImageMultisample)
-             (bool32ToBool shaderStorageImageReadWithoutFormat)
-             (bool32ToBool shaderStorageImageWriteWithoutFormat)
-             (bool32ToBool shaderUniformBufferArrayDynamicIndexing)
-             (bool32ToBool shaderSampledImageArrayDynamicIndexing)
-             (bool32ToBool shaderStorageBufferArrayDynamicIndexing)
-             (bool32ToBool shaderStorageImageArrayDynamicIndexing)
-             (bool32ToBool shaderClipDistance)
-             (bool32ToBool shaderCullDistance)
-             (bool32ToBool shaderFloat64)
-             (bool32ToBool shaderInt64)
-             (bool32ToBool shaderInt16)
-             (bool32ToBool shaderResourceResidency)
-             (bool32ToBool shaderResourceMinLod)
-             (bool32ToBool sparseBinding)
-             (bool32ToBool sparseResidencyBuffer)
-             (bool32ToBool sparseResidencyImage2D)
-             (bool32ToBool sparseResidencyImage3D)
-             (bool32ToBool sparseResidency2Samples)
-             (bool32ToBool sparseResidency4Samples)
-             (bool32ToBool sparseResidency8Samples)
-             (bool32ToBool sparseResidency16Samples)
-             (bool32ToBool sparseResidencyAliased)
-             (bool32ToBool variableMultisampleRate)
-             (bool32ToBool inheritedQueries)
-
-instance Storable PhysicalDeviceFeatures where
-  sizeOf ~_ = 220
-  alignment ~_ = 4
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero PhysicalDeviceFeatures where
-  zero = PhysicalDeviceFeatures
-           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
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-
-
--- | VkPhysicalDeviceSparseProperties - Structure specifying physical device
--- sparse memory properties
---
--- = 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.Bool32', 'PhysicalDeviceProperties'
-data PhysicalDeviceSparseProperties = PhysicalDeviceSparseProperties
-  { -- | @residencyStandard2DBlockShape@ is 'Vulkan.Core10.FundamentalTypes.TRUE'
-    -- 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://registry.khronos.org/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'
-    -- structure for single-sample 2D images is not /required/ to match the
-    -- standard sparse image block dimensions listed in the table.
-    residencyStandard2DBlockShape :: Bool
-  , -- | @residencyStandard2DMultisampleBlockShape@ is
-    -- '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://registry.khronos.org/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'
-    -- structure for multisample 2D images is not /required/ to match the
-    -- standard sparse image block dimensions listed in the table.
-    residencyStandard2DMultisampleBlockShape :: Bool
-  , -- | @residencyStandard3DBlockShape@ is 'Vulkan.Core10.FundamentalTypes.TRUE'
-    -- 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://registry.khronos.org/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'
-    -- structure for 3D images is not /required/ to match the standard sparse
-    -- image block dimensions listed in the table.
-    residencyStandard3DBlockShape :: Bool
-  , -- | @residencyAlignedMipSize@ is 'Vulkan.Core10.FundamentalTypes.TRUE' if
-    -- images with mip level dimensions that are not integer multiples of the
-    -- corresponding dimensions of the sparse image block /may/ be placed in
-    -- the mip tail. If this property is not reported, only mip levels with
-    -- dimensions smaller than the @imageGranularity@ member of the
-    -- 'Vulkan.Core10.SparseResourceMemoryManagement.SparseImageFormatProperties'
-    -- structure will be placed in the mip tail. If this property is reported
-    -- the implementation is allowed to return
-    -- 'Vulkan.Core10.Enums.SparseImageFormatFlagBits.SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT'
-    -- in the @flags@ member of
-    -- 'Vulkan.Core10.SparseResourceMemoryManagement.SparseImageFormatProperties',
-    -- indicating that mip level dimensions that are not integer multiples of
-    -- the corresponding dimensions of the sparse image block will be placed in
-    -- the mip tail.
-    residencyAlignedMipSize :: Bool
-  , -- | @residencyNonResidentStrict@ specifies whether the physical device /can/
-    -- consistently access non-resident regions of a resource. If this property
-    -- is 'Vulkan.Core10.FundamentalTypes.TRUE', access to non-resident regions
-    -- of resources will be guaranteed to return values as if the resource was
-    -- populated with 0; writes to non-resident regions will be discarded.
-    residencyNonResidentStrict :: Bool
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PhysicalDeviceSparseProperties)
-#endif
-deriving instance Show PhysicalDeviceSparseProperties
-
-instance ToCStruct PhysicalDeviceSparseProperties where
-  withCStruct x f = allocaBytes 20 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PhysicalDeviceSparseProperties{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr Bool32)) (boolToBool32 (residencyStandard2DBlockShape))
-    poke ((p `plusPtr` 4 :: Ptr Bool32)) (boolToBool32 (residencyStandard2DMultisampleBlockShape))
-    poke ((p `plusPtr` 8 :: Ptr Bool32)) (boolToBool32 (residencyStandard3DBlockShape))
-    poke ((p `plusPtr` 12 :: Ptr Bool32)) (boolToBool32 (residencyAlignedMipSize))
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (residencyNonResidentStrict))
-    f
-  cStructSize = 20
-  cStructAlignment = 4
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr Bool32)) (boolToBool32 (zero))
-    poke ((p `plusPtr` 4 :: Ptr Bool32)) (boolToBool32 (zero))
-    poke ((p `plusPtr` 8 :: Ptr Bool32)) (boolToBool32 (zero))
-    poke ((p `plusPtr` 12 :: Ptr Bool32)) (boolToBool32 (zero))
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
-    f
-
-instance FromCStruct PhysicalDeviceSparseProperties where
-  peekCStruct p = do
-    residencyStandard2DBlockShape <- peek @Bool32 ((p `plusPtr` 0 :: Ptr Bool32))
-    residencyStandard2DMultisampleBlockShape <- peek @Bool32 ((p `plusPtr` 4 :: Ptr Bool32))
-    residencyStandard3DBlockShape <- peek @Bool32 ((p `plusPtr` 8 :: Ptr Bool32))
-    residencyAlignedMipSize <- peek @Bool32 ((p `plusPtr` 12 :: Ptr Bool32))
-    residencyNonResidentStrict <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
-    pure $ PhysicalDeviceSparseProperties
-             (bool32ToBool residencyStandard2DBlockShape)
-             (bool32ToBool residencyStandard2DMultisampleBlockShape)
-             (bool32ToBool residencyStandard3DBlockShape)
-             (bool32ToBool residencyAlignedMipSize)
-             (bool32ToBool residencyNonResidentStrict)
-
-instance Storable PhysicalDeviceSparseProperties where
-  sizeOf ~_ = 20
-  alignment ~_ = 4
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero PhysicalDeviceSparseProperties where
-  zero = PhysicalDeviceSparseProperties
-           zero
-           zero
-           zero
-           zero
-           zero
-
-
--- | VkPhysicalDeviceLimits - Structure reporting implementation-dependent
--- physical device limits
---
--- = Members
---
--- The 'PhysicalDeviceLimits' are properties of the physical device. These
--- are available in the @limits@ member of the 'PhysicalDeviceProperties'
--- structure which is returned from 'getPhysicalDeviceProperties'.
---
--- = 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.Bool32',
--- 'Vulkan.Core10.FundamentalTypes.DeviceSize', 'PhysicalDeviceProperties',
--- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlags'
-data PhysicalDeviceLimits = PhysicalDeviceLimits
-  { -- | #limits-maxImageDimension1D# @maxImageDimension1D@ is the largest
-    -- dimension (@width@) that is guaranteed to be supported for all images
-    -- created with an @imageType@ of
-    -- 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D'. Some combinations of
-    -- image parameters (format, usage, etc.) /may/ allow support for larger
-    -- dimensions, which /can/ be queried using
-    -- 'getPhysicalDeviceImageFormatProperties'.
-    maxImageDimension1D :: Word32
-  , -- | #limits-maxImageDimension2D# @maxImageDimension2D@ is the largest
-    -- dimension (@width@ or @height@) that is guaranteed to be supported for
-    -- all images created with an @imageType@ of
-    -- 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D' and without
-    -- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_CUBE_COMPATIBLE_BIT'
-    -- set in @flags@. Some combinations of image parameters (format, usage,
-    -- etc.) /may/ allow support for larger dimensions, which /can/ be queried
-    -- using 'getPhysicalDeviceImageFormatProperties'.
-    maxImageDimension2D :: Word32
-  , -- | #limits-maxImageDimension3D# @maxImageDimension3D@ is the largest
-    -- dimension (@width@, @height@, or @depth@) that is guaranteed to be
-    -- supported for all images created with an @imageType@ of
-    -- 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D'. Some combinations of
-    -- image parameters (format, usage, etc.) /may/ allow support for larger
-    -- dimensions, which /can/ be queried using
-    -- 'getPhysicalDeviceImageFormatProperties'.
-    maxImageDimension3D :: Word32
-  , -- | #limits-maxImageDimensionCube# @maxImageDimensionCube@ is the largest
-    -- dimension (@width@ or @height@) that is guaranteed to be supported for
-    -- all images created with an @imageType@ of
-    -- 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D' and with
-    -- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_CUBE_COMPATIBLE_BIT'
-    -- set in @flags@. Some combinations of image parameters (format, usage,
-    -- etc.) /may/ allow support for larger dimensions, which /can/ be queried
-    -- using 'getPhysicalDeviceImageFormatProperties'.
-    maxImageDimensionCube :: Word32
-  , -- | #limits-maxImageArrayLayers# @maxImageArrayLayers@ is the maximum number
-    -- of layers (@arrayLayers@) for an image.
-    maxImageArrayLayers :: Word32
-  , -- | #limits-maxTexelBufferElements# @maxTexelBufferElements@ is the maximum
-    -- number of addressable texels for a buffer view created on a buffer which
-    -- was created with the
-    -- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT'
-    -- or
-    -- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT'
-    -- set in the @usage@ member of the 'Vulkan.Core10.Buffer.BufferCreateInfo'
-    -- structure.
-    maxTexelBufferElements :: Word32
-  , -- | #limits-maxUniformBufferRange# @maxUniformBufferRange@ is the maximum
-    -- value that /can/ be specified in the @range@ member of a
-    -- 'Vulkan.Core10.DescriptorSet.DescriptorBufferInfo' structure passed to
-    -- 'Vulkan.Core10.DescriptorSet.updateDescriptorSets' for descriptors of
-    -- type 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER'
-    -- or
-    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC'.
-    maxUniformBufferRange :: Word32
-  , -- | #limits-maxStorageBufferRange# @maxStorageBufferRange@ is the maximum
-    -- value that /can/ be specified in the @range@ member of a
-    -- 'Vulkan.Core10.DescriptorSet.DescriptorBufferInfo' structure passed to
-    -- 'Vulkan.Core10.DescriptorSet.updateDescriptorSets' for descriptors of
-    -- type 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER'
-    -- or
-    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC'.
-    maxStorageBufferRange :: Word32
-  , -- | #limits-maxPushConstantsSize# @maxPushConstantsSize@ is the maximum
-    -- size, in bytes, of the pool of push constant memory. For each of the
-    -- push constant ranges indicated by the @pPushConstantRanges@ member of
-    -- the 'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo' structure,
-    -- (@offset@ + @size@) /must/ be less than or equal to this limit.
-    maxPushConstantsSize :: Word32
-  , -- | #limits-maxMemoryAllocationCount# @maxMemoryAllocationCount@ is the
-    -- maximum number of device memory allocations, as created by
-    -- 'Vulkan.Core10.Memory.allocateMemory', which /can/ simultaneously exist.
-    maxMemoryAllocationCount :: Word32
-  , -- | #limits-maxSamplerAllocationCount# @maxSamplerAllocationCount@ is the
-    -- maximum number of sampler objects, as created by
-    -- 'Vulkan.Core10.Sampler.createSampler', which /can/ simultaneously exist
-    -- on a device.
-    maxSamplerAllocationCount :: Word32
-  , -- | #limits-bufferImageGranularity# @bufferImageGranularity@ is the
-    -- 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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-bufferimagegranularity Buffer-Image Granularity>
-    -- for more details.
-    bufferImageGranularity :: DeviceSize
-  , -- | #limits-sparseAddressSpaceSize# @sparseAddressSpaceSize@ is the total
-    -- amount of address space available, in bytes, for sparse memory
-    -- resources. This is an upper bound on the sum of the sizes of all sparse
-    -- resources, regardless of whether any memory is bound to them. If the
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedSparseAddressSpace extendedSparseAddressSpace>
-    -- feature is enabled, then the difference between
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-extendedSparseAddressSpaceSize extendedSparseAddressSpaceSize>
-    -- and @sparseAddressSpaceSize@ can also be used, by
-    -- 'Vulkan.Core10.Handles.Image' created with the @usage@ member of
-    -- 'Vulkan.Core10.Image.ImageCreateInfo' only containing bits in
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-extendedSparseImageUsageFlags extendedSparseImageUsageFlags>
-    -- and 'Vulkan.Core10.Handles.Buffer' created with the @usage@ member of
-    -- 'Vulkan.Core10.Buffer.BufferCreateInfo' only containing bits in
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-extendedSparseBufferUsageFlags extendedSparseBufferUsageFlags>.
-    sparseAddressSpaceSize :: DeviceSize
-  , -- | #limits-maxBoundDescriptorSets# @maxBoundDescriptorSets@ is the maximum
-    -- number of descriptor sets that /can/ be simultaneously used by a
-    -- pipeline. All 'Vulkan.Core10.Handles.DescriptorSet' decorations in
-    -- shader modules /must/ have a value less than @maxBoundDescriptorSets@.
-    -- See
-    -- <https://registry.khronos.org/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
-    -- shader stage in a pipeline layout. Descriptors with a type of
-    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLER' or
-    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER'
-    -- count against this limit. Only descriptors 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. A descriptor is accessible to a shader
-    -- stage when the @stageFlags@ member of the
-    -- 'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutBinding' structure has
-    -- the bit for that shader stage set. See
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-sampler>
-    -- and
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-combinedimagesampler>.
-    maxPerStageDescriptorSamplers :: Word32
-  , -- | #limits-maxPerStageDescriptorUniformBuffers#
-    -- @maxPerStageDescriptorUniformBuffers@ is the maximum number of uniform
-    -- buffers that /can/ be accessible to a single shader stage in a pipeline
-    -- layout. Descriptors with a type of
-    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER' or
-    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC'
-    -- count against this limit. Only descriptors 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. A descriptor is accessible to a shader
-    -- stage when the @stageFlags@ member of the
-    -- 'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutBinding' structure has
-    -- the bit for that shader stage set. See
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-uniformbuffer>
-    -- and
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-uniformbufferdynamic>.
-    maxPerStageDescriptorUniformBuffers :: Word32
-  , -- | #limits-maxPerStageDescriptorStorageBuffers#
-    -- @maxPerStageDescriptorStorageBuffers@ is the maximum number of storage
-    -- buffers that /can/ be accessible to a single shader stage in a pipeline
-    -- layout. Descriptors with a type of
-    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER' or
-    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC'
-    -- count against this limit. Only descriptors 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. A descriptor is accessible to a
-    -- pipeline shader stage when the @stageFlags@ member of the
-    -- 'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutBinding' structure has
-    -- the bit for that shader stage set. See
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storagebuffer>
-    -- and
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storagebufferdynamic>.
-    maxPerStageDescriptorStorageBuffers :: Word32
-  , -- | #limits-maxPerStageDescriptorSampledImages#
-    -- @maxPerStageDescriptorSampledImages@ is the maximum number of sampled
-    -- images that /can/ be accessible to a single shader stage in a pipeline
-    -- layout. Descriptors with a type of
-    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER',
-    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE', or
-    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER'
-    -- count against this limit. Only descriptors 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. A descriptor is accessible to a
-    -- pipeline shader stage when the @stageFlags@ member of the
-    -- 'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutBinding' structure has
-    -- the bit for that shader stage set. See
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-combinedimagesampler>,
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-sampledimage>,
-    -- and
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-uniformtexelbuffer>.
-    maxPerStageDescriptorSampledImages :: Word32
-  , -- | #limits-maxPerStageDescriptorStorageImages#
-    -- @maxPerStageDescriptorStorageImages@ is the maximum number of storage
-    -- images that /can/ be accessible to a single shader stage in a pipeline
-    -- layout. Descriptors with a type of
-    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE', or
-    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'
-    -- count against this limit. Only descriptors 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. A descriptor is accessible to a
-    -- pipeline shader stage when the @stageFlags@ member of the
-    -- 'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutBinding' structure has
-    -- the bit for that shader stage set. See
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storageimage>,
-    -- and
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storagetexelbuffer>.
-    maxPerStageDescriptorStorageImages :: Word32
-  , -- | #limits-maxPerStageDescriptorInputAttachments#
-    -- @maxPerStageDescriptorInputAttachments@ is the maximum number of input
-    -- attachments that /can/ be accessible to a single shader stage in a
-    -- pipeline layout. Descriptors with a type of
-    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'
-    -- count against this limit. Only descriptors 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. A descriptor is accessible to a
-    -- pipeline shader stage when the @stageFlags@ member of the
-    -- 'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutBinding' structure has
-    -- the bit for that shader stage set. These are only supported for the
-    -- fragment stage. See
-    -- <https://registry.khronos.org/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
-    -- a pipeline layout. Descriptors with a type of
-    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER',
-    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',
-    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',
-    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER',
-    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER',
-    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER',
-    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER',
-    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC',
-    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC',
-    -- or 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'
-    -- count against this limit. Only descriptors 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. For the fragment shader stage the
-    -- framebuffer color attachments also count against this limit.
-    maxPerStageResources :: Word32
-  , -- | #limits-maxDescriptorSetSamplers# @maxDescriptorSetSamplers@ is the
-    -- maximum number of samplers that /can/ be included in a pipeline layout.
-    -- Descriptors with a type of
-    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLER' or
-    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER'
-    -- count against this limit. Only descriptors 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. See
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-sampler>
-    -- and
-    -- <https://registry.khronos.org/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
-    -- pipeline layout. Descriptors with a type of
-    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER' or
-    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC'
-    -- count against this limit. Only descriptors 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. See
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-uniformbuffer>
-    -- and
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-uniformbufferdynamic>.
-    maxDescriptorSetUniformBuffers :: Word32
-  , -- | #limits-maxDescriptorSetUniformBuffersDynamic#
-    -- @maxDescriptorSetUniformBuffersDynamic@ is the maximum number of dynamic
-    -- uniform buffers that /can/ be included in a pipeline layout. Descriptors
-    -- with a type of
-    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC'
-    -- count against this limit. Only descriptors 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. See
-    -- <https://registry.khronos.org/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
-    -- pipeline layout. Descriptors with a type of
-    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER' or
-    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC'
-    -- count against this limit. Only descriptors 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. See
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storagebuffer>
-    -- and
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storagebufferdynamic>.
-    maxDescriptorSetStorageBuffers :: Word32
-  , -- | #limits-maxDescriptorSetStorageBuffersDynamic#
-    -- @maxDescriptorSetStorageBuffersDynamic@ is the maximum number of dynamic
-    -- storage buffers that /can/ be included in a pipeline layout. Descriptors
-    -- with a type of
-    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC'
-    -- count against this limit. Only descriptors 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. See
-    -- <https://registry.khronos.org/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
-    -- pipeline layout. Descriptors with a type of
-    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER',
-    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE', or
-    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER'
-    -- count against this limit. Only descriptors 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. See
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-combinedimagesampler>,
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-sampledimage>,
-    -- and
-    -- <https://registry.khronos.org/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
-    -- pipeline layout. Descriptors with a type of
-    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE', or
-    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'
-    -- count against this limit. Only descriptors 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. See
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storageimage>,
-    -- and
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storagetexelbuffer>.
-    maxDescriptorSetStorageImages :: Word32
-  , -- | #limits-maxDescriptorSetInputAttachments#
-    -- @maxDescriptorSetInputAttachments@ is the maximum number of input
-    -- attachments that /can/ be included in a pipeline layout. Descriptors
-    -- with a type of
-    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'
-    -- count against this limit. Only descriptors 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. See
-    -- <https://registry.khronos.org/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
-    -- graphics pipeline. These are described in the array of
-    -- 'Vulkan.Core10.Pipeline.VertexInputAttributeDescription' structures that
-    -- are provided at graphics pipeline creation time via the
-    -- @pVertexAttributeDescriptions@ member of the
-    -- 'Vulkan.Core10.Pipeline.PipelineVertexInputStateCreateInfo' structure.
-    -- See
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#fxvertex-attrib>
-    -- and
-    -- <https://registry.khronos.org/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
-    -- attributes to a graphics pipeline. These are described in the array of
-    -- 'Vulkan.Core10.Pipeline.VertexInputBindingDescription' structures that
-    -- are provided at graphics pipeline creation time via the
-    -- @pVertexBindingDescriptions@ member of the
-    -- 'Vulkan.Core10.Pipeline.PipelineVertexInputStateCreateInfo' structure.
-    -- The @binding@ member of
-    -- 'Vulkan.Core10.Pipeline.VertexInputBindingDescription' /must/ be less
-    -- than this limit. See
-    -- <https://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/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
-    -- the tessellation control shader and tessellation primitive generator.
-    -- The @patchControlPoints@ member of the
-    -- 'Vulkan.Core10.Pipeline.PipelineTessellationStateCreateInfo' structure
-    -- 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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#tessellation>.
-    maxTessellationPatchSize :: Word32
-  , -- | #limits-maxTessellationControlPerVertexInputComponents#
-    -- @maxTessellationControlPerVertexInputComponents@ is the maximum number
-    -- of components of input variables which /can/ be provided as per-vertex
-    -- inputs to the tessellation control shader stage.
-    maxTessellationControlPerVertexInputComponents :: Word32
-  , -- | #limits-maxTessellationControlPerVertexOutputComponents#
-    -- @maxTessellationControlPerVertexOutputComponents@ is the maximum number
-    -- of components of per-vertex output variables which /can/ be output from
-    -- the tessellation control shader stage.
-    maxTessellationControlPerVertexOutputComponents :: Word32
-  , -- | #limits-maxTessellationControlPerPatchOutputComponents#
-    -- @maxTessellationControlPerPatchOutputComponents@ is the maximum number
-    -- of components of per-patch output variables which /can/ be output from
-    -- the tessellation control shader stage.
-    maxTessellationControlPerPatchOutputComponents :: Word32
-  , -- | #limits-maxTessellationControlTotalOutputComponents#
-    -- @maxTessellationControlTotalOutputComponents@ is the maximum total
-    -- number of components of per-vertex and per-patch output variables which
-    -- /can/ be output from the tessellation control shader stage.
-    maxTessellationControlTotalOutputComponents :: Word32
-  , -- | #limits-maxTessellationEvaluationInputComponents#
-    -- @maxTessellationEvaluationInputComponents@ is the maximum number of
-    -- components of input variables which /can/ be provided as per-vertex
-    -- inputs to the tessellation evaluation shader stage.
-    maxTessellationEvaluationInputComponents :: Word32
-  , -- | #limits-maxTessellationEvaluationOutputComponents#
-    -- @maxTessellationEvaluationOutputComponents@ is the maximum number of
-    -- components of per-vertex output variables which /can/ be output from the
-    -- tessellation evaluation shader stage.
-    maxTessellationEvaluationOutputComponents :: Word32
-  , -- | #limits-maxGeometryShaderInvocations# @maxGeometryShaderInvocations@ is
-    -- 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://registry.khronos.org/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
-    -- as inputs to the geometry shader stage.
-    maxGeometryInputComponents :: Word32
-  , -- | #limits-maxGeometryOutputComponents# @maxGeometryOutputComponents@ is
-    -- the maximum number of components of output variables which /can/ be
-    -- output from the geometry shader stage.
-    maxGeometryOutputComponents :: Word32
-  , -- | #limits-maxGeometryOutputVertices# @maxGeometryOutputVertices@ is the
-    -- maximum number of vertices which /can/ be emitted by any geometry
-    -- shader.
-    maxGeometryOutputVertices :: Word32
-  , -- | #limits-maxGeometryTotalOutputComponents#
-    -- @maxGeometryTotalOutputComponents@ is the maximum total number of
-    -- components of output variables, across all emitted vertices, which /can/
-    -- be output from the geometry shader stage.
-    maxGeometryTotalOutputComponents :: Word32
-  , -- | #limits-maxFragmentInputComponents# @maxFragmentInputComponents@ is the
-    -- maximum number of components of input variables which /can/ be provided
-    -- as inputs to the fragment shader stage.
-    maxFragmentInputComponents :: Word32
-  , -- | #limits-maxFragmentOutputAttachments# @maxFragmentOutputAttachments@ is
-    -- the maximum number of output attachments which /can/ be written to by
-    -- the fragment shader stage.
-    maxFragmentOutputAttachments :: Word32
-  , -- | #limits-maxFragmentDualSrcAttachments# @maxFragmentDualSrcAttachments@
-    -- 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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#framebuffer-dsb>
-    -- and
-    -- <https://registry.khronos.org/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://registry.khronos.org/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
-    -- maximum total storage size, in bytes, available for variables declared
-    -- with the @Workgroup@ storage class in shader modules (or with the
-    -- @shared@ storage qualifier in GLSL) in the compute shader stage.
-    maxComputeSharedMemorySize :: Word32
-  , -- | #limits-maxComputeWorkGroupCount# @maxComputeWorkGroupCount@[3] is the
-    -- maximum number of local workgroups that /can/ be dispatched by a single
-    -- dispatching command. These three values represent the maximum number of
-    -- local workgroups for the X, Y, and Z dimensions, respectively. The
-    -- workgroup count parameters to the dispatching commands /must/ be less
-    -- than or equal to the corresponding limit. See
-    -- <https://registry.khronos.org/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
-    -- local workgroup. The product of the X, Y, and Z sizes, as specified by
-    -- the @LocalSize@ or @LocalSizeId@ execution mode in shader modules or by
-    -- the object decorated by the @WorkgroupSize@ decoration, /must/ be less
-    -- than or equal to this limit.
-    maxComputeWorkGroupInvocations :: Word32
-  , -- | #limits-maxComputeWorkGroupSize# @maxComputeWorkGroupSize@[3] is the
-    -- maximum size of a local compute workgroup, per dimension. These three
-    -- values represent the maximum local workgroup size in the X, Y, and Z
-    -- dimensions, respectively. The @x@, @y@, and @z@ sizes, as specified by
-    -- the @LocalSize@ or @LocalSizeId@ execution mode or by the object
-    -- decorated by the @WorkgroupSize@ decoration in shader modules, /must/ be
-    -- less than or equal to the corresponding limit.
-    maxComputeWorkGroupSize :: (Word32, Word32, Word32)
-  , -- | #limits-subPixelPrecisionBits# @subPixelPrecisionBits@ is the number of
-    -- bits of subpixel precision in framebuffer coordinates xf and yf. See
-    -- <https://registry.khronos.org/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
-    -- minification and magnification filters. 2@subTexelPrecisionBits@ is the
-    -- actual number of divisions along each axis of the image represented.
-    -- Sub-texel values calculated during image sampling will snap to these
-    -- locations when generating the filtered results.
-    subTexelPrecisionBits :: Word32
-  , -- | #limits-mipmapPrecisionBits# @mipmapPrecisionBits@ is the number of bits
-    -- of division that the LOD calculation for mipmap fetching get snapped to
-    -- when determining the contribution from each mip level to the mip
-    -- filtered results. 2@mipmapPrecisionBits@ is the actual number of
-    -- divisions.
-    mipmapPrecisionBits :: Word32
-  , -- | #limits-maxDrawIndexedIndexValue# @maxDrawIndexedIndexValue@ is the
-    -- 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://registry.khronos.org/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://registry.khronos.org/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
-    -- 'Vulkan.Core10.Sampler.SamplerCreateInfo' structure and the @Bias@
-    -- 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://registry.khronos.org/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://registry.khronos.org/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
-    -- 'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo' structure that
-    -- is provided at pipeline creation /must/ be less than or equal to this
-    -- limit.
-    maxViewports :: Word32
-  , -- | #limits-maxViewportDimensions# @maxViewportDimensions@[2] are the
-    -- maximum viewport dimensions in the X (width) and Y (height) dimensions,
-    -- 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://registry.khronos.org/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#vertexpostproc-viewport Controlling the Viewport>.
-    --
-    -- The intent of the @viewportBoundsRange@ limit is to allow a maximum
-    -- sized viewport to be arbitrarily shifted relative to the output target
-    -- as long as at least some portion intersects. This would give a bounds
-    -- limit of [-@size@ + 1, 2 × @size@ - 1] which would allow all possible
-    -- non-empty-set intersections of the output target and the viewport. Since
-    -- these numbers are typically powers of two, picking the signed number
-    -- range using the smallest possible number of bits ends up with the
-    -- specified range.
-    viewportBoundsRange :: (Float, Float)
-  , -- | #limits-viewportSubPixelBits# @viewportSubPixelBits@ is the number of
-    -- bits of subpixel precision for viewport bounds. The subpixel precision
-    -- that floating-point viewport bounds are interpreted at is given by this
-    -- limit.
-    viewportSubPixelBits :: Word32
-  , -- | #limits-minMemoryMapAlignment# @minMemoryMapAlignment@ is the minimum
-    -- /required/ alignment, in bytes, of host visible memory allocations
-    -- within the host address space. When mapping a memory allocation with
-    -- 'Vulkan.Core10.Memory.mapMemory', subtracting @offset@ bytes from the
-    -- returned pointer will always produce an integer multiple of this limit.
-    -- See
-    -- <https://registry.khronos.org/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 the
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-texelBufferAlignment texelBufferAlignment>
-    -- feature is enabled, this limit is equivalent to the maximum of the
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-uniformTexelBufferOffsetAlignmentBytes uniformTexelBufferOffsetAlignmentBytes>
-    -- and
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-storageTexelBufferOffsetAlignmentBytes storageTexelBufferOffsetAlignmentBytes>
-    -- members of
-    -- 'Vulkan.Core13.Promoted_From_VK_EXT_texel_buffer_alignment.PhysicalDeviceTexelBufferAlignmentProperties',
-    -- but smaller alignment is /optionally/ allowed by
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-storageTexelBufferOffsetSingleTexelAlignment storageTexelBufferOffsetSingleTexelAlignment>
-    -- and
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-uniformTexelBufferOffsetSingleTexelAlignment uniformTexelBufferOffsetSingleTexelAlignment>.
-    -- If the
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-texelBufferAlignment texelBufferAlignment>
-    -- feature is not enabled,
-    -- 'Vulkan.Core10.BufferView.BufferViewCreateInfo'::@offset@ /must/ be a
-    -- multiple of this value.
-    minTexelBufferOffsetAlignment :: DeviceSize
-  , -- | #limits-minUniformBufferOffsetAlignment#
-    -- @minUniformBufferOffsetAlignment@ is the minimum /required/ alignment,
-    -- in bytes, for the @offset@ member of the
-    -- 'Vulkan.Core10.DescriptorSet.DescriptorBufferInfo' structure for uniform
-    -- buffers. When a descriptor of type
-    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER' or
-    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC'
-    -- is updated, the @offset@ /must/ be an integer multiple of this limit.
-    -- Similarly, dynamic offsets for uniform buffers /must/ be multiples of
-    -- this limit. The value /must/ be a power of two.
-    minUniformBufferOffsetAlignment :: DeviceSize
-  , -- | #limits-minStorageBufferOffsetAlignment#
-    -- @minStorageBufferOffsetAlignment@ is the minimum /required/ alignment,
-    -- in bytes, for the @offset@ member of the
-    -- 'Vulkan.Core10.DescriptorSet.DescriptorBufferInfo' structure for storage
-    -- buffers. When a descriptor of type
-    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER' or
-    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC'
-    -- is updated, the @offset@ /must/ be an integer multiple of this limit.
-    -- Similarly, dynamic offsets for storage buffers /must/ be multiples of
-    -- this limit. The value /must/ be a power of two.
-    minStorageBufferOffsetAlignment :: DeviceSize
-  , -- | #limits-minTexelOffset# @minTexelOffset@ is the minimum offset value for
-    -- the @ConstOffset@ image operand of any of the @OpImageSample*@ or
-    -- @OpImageFetch*@ image instructions.
-    minTexelOffset :: Int32
-  , -- | #limits-maxTexelOffset# @maxTexelOffset@ is the maximum offset value for
-    -- the @ConstOffset@ image operand of any of the @OpImageSample*@ or
-    -- @OpImageFetch*@ image instructions.
-    maxTexelOffset :: Word32
-  , -- | #limits-minTexelGatherOffset# @minTexelGatherOffset@ is the minimum
-    -- offset value for the @Offset@, @ConstOffset@, or @ConstOffsets@ image
-    -- operands of any of the @OpImage*Gather@ image instructions.
-    minTexelGatherOffset :: Int32
-  , -- | #limits-maxTexelGatherOffset# @maxTexelGatherOffset@ is the maximum
-    -- offset value for the @Offset@, @ConstOffset@, or @ConstOffsets@ image
-    -- operands of any of the @OpImage*Gather@ image instructions.
-    maxTexelGatherOffset :: Word32
-  , -- | #limits-minInterpolationOffset# @minInterpolationOffset@ is the base
-    -- minimum (inclusive) negative offset value for the @Offset@ operand of
-    -- the @InterpolateAtOffset@ extended instruction.
-    minInterpolationOffset :: Float
-  , -- | #limits-maxInterpolationOffset# @maxInterpolationOffset@ is the base
-    -- maximum (inclusive) positive offset value for the @Offset@ operand of
-    -- the @InterpolateAtOffset@ extended instruction.
-    maxInterpolationOffset :: Float
-  , -- | #limits-subPixelInterpolationOffsetBits#
-    -- @subPixelInterpolationOffsetBits@ is the number of fractional bits that
-    -- the @x@ and @y@ offsets to the @InterpolateAtOffset@ extended
-    -- instruction /may/ be rounded to as fixed-point values.
-    subPixelInterpolationOffsetBits :: Word32
-  , -- | #limits-maxFramebufferWidth# @maxFramebufferWidth@ is the maximum width
-    -- for a framebuffer. The @width@ member of the
-    -- 'Vulkan.Core10.Pass.FramebufferCreateInfo' structure /must/ be less than
-    -- or equal to this limit.
-    maxFramebufferWidth :: Word32
-  , -- | #limits-maxFramebufferHeight# @maxFramebufferHeight@ is the maximum
-    -- height for a framebuffer. The @height@ member of the
-    -- 'Vulkan.Core10.Pass.FramebufferCreateInfo' structure /must/ be less than
-    -- or equal to this limit.
-    maxFramebufferHeight :: Word32
-  , -- | #limits-maxFramebufferLayers# @maxFramebufferLayers@ is the maximum
-    -- layer count for a layered framebuffer. The @layers@ member of the
-    -- 'Vulkan.Core10.Pass.FramebufferCreateInfo' structure /must/ be less than
-    -- or equal to this limit.
-    maxFramebufferLayers :: Word32
-  , -- | #limits-framebufferColorSampleCounts# @framebufferColorSampleCounts@ is
-    -- a bitmask1 of
-    -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' indicating
-    -- 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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-framebufferIntegerColorSampleCounts framebufferIntegerColorSampleCounts>.
-    framebufferColorSampleCounts :: SampleCountFlags
-  , -- | #limits-framebufferDepthSampleCounts# @framebufferDepthSampleCounts@ is
-    -- a bitmask1 of
-    -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' indicating
-    -- the supported depth sample counts for all framebuffer depth\/stencil
-    -- attachments, when the format includes a depth component.
-    framebufferDepthSampleCounts :: SampleCountFlags
-  , -- | #limits-framebufferStencilSampleCounts# @framebufferStencilSampleCounts@
-    -- is a bitmask1 of
-    -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' indicating
-    -- the supported stencil sample counts for all framebuffer depth\/stencil
-    -- attachments, when the format includes a stencil component.
-    framebufferStencilSampleCounts :: SampleCountFlags
-  , -- | #limits-framebufferNoAttachmentsSampleCounts#
-    -- @framebufferNoAttachmentsSampleCounts@ is a bitmask1 of
-    -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' indicating
-    -- the supported sample counts for a
-    -- <https://registry.khronos.org/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.
-    -- The @colorAttachmentCount@ member of the
-    -- 'Vulkan.Core10.Pass.SubpassDescription' or
-    -- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.SubpassDescription2'
-    -- structure /must/ be less than or equal to this limit.
-    maxColorAttachments :: Word32
-  , -- | #limits-sampledImageColorSampleCounts# @sampledImageColorSampleCounts@
-    -- is a bitmask1 of
-    -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' indicating
-    -- the sample counts supported for all 2D images created with
-    -- 'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL', @usage@
-    -- containing
-    -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT', and a
-    -- non-integer color format.
-    sampledImageColorSampleCounts :: SampleCountFlags
-  , -- | #limits-sampledImageIntegerSampleCounts#
-    -- @sampledImageIntegerSampleCounts@ is a bitmask1 of
-    -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' indicating
-    -- the sample counts supported for all 2D images created with
-    -- 'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL', @usage@
-    -- containing
-    -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT', and an
-    -- integer color format.
-    sampledImageIntegerSampleCounts :: SampleCountFlags
-  , -- | #limits-sampledImageDepthSampleCounts# @sampledImageDepthSampleCounts@
-    -- is a bitmask1 of
-    -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' indicating
-    -- the sample counts supported for all 2D images created with
-    -- 'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL', @usage@
-    -- containing
-    -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT', and a
-    -- depth format.
-    sampledImageDepthSampleCounts :: SampleCountFlags
-  , -- | #limits-sampledImageStencilSampleCounts#
-    -- @sampledImageStencilSampleCounts@ is a bitmask1 of
-    -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' indicating
-    -- the sample counts supported for all 2D images created with
-    -- 'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL', @usage@
-    -- containing
-    -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT', and a
-    -- stencil format.
-    sampledImageStencilSampleCounts :: SampleCountFlags
-  , -- | #limits-storageImageSampleCounts# @storageImageSampleCounts@ is a
-    -- bitmask1 of
-    -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' indicating
-    -- the sample counts supported for all 2D images created with
-    -- 'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL', and @usage@
-    -- containing
-    -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_STORAGE_BIT'.
-    storageImageSampleCounts :: SampleCountFlags
-  , -- | #limits-maxSampleMaskWords# @maxSampleMaskWords@ is the maximum number
-    -- of array elements of a variable decorated with the
-    -- 'Vulkan.Core10.FundamentalTypes.SampleMask' built-in decoration.
-    maxSampleMaskWords :: Word32
-  , -- | #limits-timestampComputeAndGraphics# @timestampComputeAndGraphics@
-    -- specifies support for timestamps on all graphics and compute queues. If
-    -- this limit is 'Vulkan.Core10.FundamentalTypes.TRUE', all queues that
-    -- advertise the 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' or
-    -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT' in the
-    -- 'QueueFamilyProperties'::@queueFlags@ support
-    -- 'QueueFamilyProperties'::@timestampValidBits@ of at least 36. See
-    -- <https://registry.khronos.org/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://registry.khronos.org/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
-    -- any array declared with the @ClipDistance@ built-in decoration in a
-    -- shader module /must/ be less than or equal to this limit.
-    maxClipDistances :: Word32
-  , -- | #limits-maxCullDistances# @maxCullDistances@ is the maximum number of
-    -- cull distances that /can/ be used in a single shader stage. The size of
-    -- any array declared with the @CullDistance@ built-in decoration in a
-    -- shader module /must/ be less than or equal to this limit.
-    maxCullDistances :: Word32
-  , -- | #limits-maxCombinedClipAndCullDistances#
-    -- @maxCombinedClipAndCullDistances@ is the maximum combined number of clip
-    -- and cull distances that /can/ be used in a single shader stage. The sum
-    -- of the sizes of all arrays declared with the @ClipDistance@ and
-    -- @CullDistance@ built-in decoration used by a single shader stage in a
-    -- shader module /must/ be less than or equal to this limit.
-    maxCombinedClipAndCullDistances :: Word32
-  , -- | #limits-discreteQueuePriorities# @discreteQueuePriorities@ is the number
-    -- of discrete priorities that /can/ be assigned to a queue based on the
-    -- value of each member of
-    -- '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://registry.khronos.org/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
-    -- variables decorated with the @PointSize@ built-in decoration are clamped
-    -- to this range.
-    pointSizeRange :: (Float, Float)
-  , -- | #limits-lineWidthRange# @lineWidthRange@[2] is the range
-    -- [@minimum@,@maximum@] of supported widths for lines. Values specified by
-    -- the @lineWidth@ member of the
-    -- 'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo' or the
-    -- @lineWidth@ parameter to
-    -- 'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth' are clamped to
-    -- this range.
-    lineWidthRange :: (Float, Float)
-  , -- | #limits-pointSizeGranularity# @pointSizeGranularity@ is the granularity
-    -- of supported point sizes. Not all point sizes in the range defined by
-    -- @pointSizeRange@ are supported. This limit specifies the granularity (or
-    -- increment) between successive supported point sizes.
-    pointSizeGranularity :: Float
-  , -- | #limits-lineWidthGranularity# @lineWidthGranularity@ is the granularity
-    -- of supported line widths. Not all line widths in the range defined by
-    -- @lineWidthRange@ are supported. This limit specifies the granularity (or
-    -- increment) between successive supported line widths.
-    lineWidthGranularity :: Float
-  , -- | #limits-strictLines# @strictLines@ specifies whether lines are
-    -- rasterized according to the preferred method of rasterization. If set to
-    -- '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://registry.khronos.org/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://registry.khronos.org/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
-    -- different sample locations.
-    standardSampleLocations :: Bool
-  , -- | #limits-optimalBufferCopyOffsetAlignment#
-    -- @optimalBufferCopyOffsetAlignment@ is the optimal buffer offset
-    -- alignment in bytes for
-    -- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.cmdCopyBufferToImage2',
-    -- 'Vulkan.Core10.CommandBufferBuilding.cmdCopyBufferToImage',
-    -- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.cmdCopyImageToBuffer2',
-    -- and 'Vulkan.Core10.CommandBufferBuilding.cmdCopyImageToBuffer'. This
-    -- value is also the optimal host memory offset alignment in bytes for
-    -- 'Vulkan.Extensions.VK_EXT_host_image_copy.copyMemoryToImageEXT' and
-    -- 'Vulkan.Extensions.VK_EXT_host_image_copy.copyImageToMemoryEXT'. 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.
-    optimalBufferCopyOffsetAlignment :: DeviceSize
-  , -- | #limits-optimalBufferCopyRowPitchAlignment#
-    -- @optimalBufferCopyRowPitchAlignment@ is the optimal buffer row pitch
-    -- alignment in bytes for
-    -- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.cmdCopyBufferToImage2',
-    -- 'Vulkan.Core10.CommandBufferBuilding.cmdCopyBufferToImage',
-    -- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.cmdCopyImageToBuffer2',
-    -- and 'Vulkan.Core10.CommandBufferBuilding.cmdCopyImageToBuffer'. This
-    -- value is also the optimal host memory row pitch alignment in bytes for
-    -- 'Vulkan.Extensions.VK_EXT_host_image_copy.copyMemoryToImageEXT' and
-    -- 'Vulkan.Extensions.VK_EXT_host_image_copy.copyImageToMemoryEXT'. 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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-device-hostaccess host-mapped device memory>.
-    -- The value /must/ be a power of two.
-    --
-    -- [1]
-    --     For all bitmasks of
-    --     'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits', the
-    --     sample count limits defined above represent the minimum supported
-    --     sample counts for each image type. Individual images /may/ support
-    --     additional sample counts, which are queried using
-    --     'getPhysicalDeviceImageFormatProperties' as described in
-    --     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-supported-sample-counts Supported Sample Counts>.
+                                           , ShaderStageFlagBits(..)
+                                           , ShaderStageFlags
+                                           , ImageUsageFlagBits(..)
+                                           , ImageUsageFlags
+                                           , ImageCreateFlagBits(..)
+                                           , ImageCreateFlags
+                                           , FormatFeatureFlagBits(..)
+                                           , FormatFeatureFlags
+                                           , SampleCountFlagBits(..)
+                                           , SampleCountFlags
+                                           , InstanceCreateFlagBits(..)
+                                           , InstanceCreateFlags
+                                           , FN_vkInternalAllocationNotification
+                                           , PFN_vkInternalAllocationNotification
+                                           , FN_vkInternalFreeNotification
+                                           , PFN_vkInternalFreeNotification
+                                           , FN_vkReallocationFunction
+                                           , PFN_vkReallocationFunction
+                                           , FN_vkAllocationFunction
+                                           , PFN_vkAllocationFunction
+                                           , FN_vkFreeFunction
+                                           , PFN_vkFreeFunction
+                                           , FN_vkVoidFunction
+                                           , PFN_vkVoidFunction
+                                           ) 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 Data.Typeable (eqT)
+import Foreign.Marshal.Alloc (allocaBytes)
+import Foreign.Marshal.Alloc (callocBytes)
+import Foreign.Marshal.Alloc (free)
+import Foreign.Marshal.Utils (maybePeek)
+import GHC.Base (when)
+import GHC.IO (throwIO)
+import Foreign.Ptr (castFunPtr)
+import GHC.Ptr (castPtr)
+import GHC.Ptr (nullFunPtr)
+import Foreign.Ptr (nullPtr)
+import Foreign.Ptr (plusPtr)
+import Data.ByteString (packCString)
+import Data.ByteString (useAsCString)
+import Data.Coerce (coerce)
+import Control.Monad.Trans.Class (lift)
+import Control.Monad.Trans.Cont (evalContT)
+import Data.Vector (generateM)
+import qualified Data.Vector (imapM_)
+import qualified Data.Vector (length)
+import Foreign.C.Types (CChar(..))
+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.C.Types (CChar)
+import Foreign.C.Types (CFloat)
+import Foreign.C.Types (CFloat(..))
+import Foreign.C.Types (CFloat(CFloat))
+import Foreign.C.Types (CSize)
+import Foreign.C.Types (CSize(..))
+import Foreign.C.Types (CSize(CSize))
+import Foreign.Storable (Storable)
+import Foreign.Storable (Storable(peek))
+import Foreign.Storable (Storable(poke))
+import qualified Foreign.Storable (Storable(..))
+import GHC.Generics (Generic)
+import GHC.IO.Exception (IOErrorType(..))
+import GHC.IO.Exception (IOException(..))
+import Data.Int (Int32)
+import Foreign.Ptr (FunPtr)
+import Foreign.Ptr (Ptr)
+import GHC.Ptr (Ptr(Ptr))
+import Data.Word (Word32)
+import Data.Word (Word64)
+import Data.Word (Word8)
+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.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.CStruct.Extends (forgetExtensions)
+import Vulkan.Dynamic (getInstanceProcAddr')
+import Vulkan.Dynamic (initInstanceCmds)
+import Vulkan.CStruct.Utils (lowerArrayPtr)
+import Vulkan.CStruct.Utils (peekByteStringFromSizedVectorPtr)
+import Vulkan.CStruct.Utils (pokeFixedLengthByteString)
+import Vulkan.CStruct.Utils (pokeFixedLengthNullTerminatedByteString)
+import Vulkan.NamedType ((:::))
+import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.CStruct.Extends (Chain)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_debug_report (DebugReportCallbackCreateInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_debug_utils (DebugUtilsMessengerCreateInfoEXT)
+import Vulkan.Core10.Handles (Device)
+import Vulkan.Core10.Handles (Device(..))
+import Vulkan.Core10.Handles (Device(Device))
+import Vulkan.Dynamic (DeviceCmds(pVkGetDeviceProcAddr))
+import Vulkan.Core10.FundamentalTypes (DeviceSize)
+import Vulkan.Core10.Handles (Device_T)
+import {-# SOURCE #-} Vulkan.Extensions.VK_LUNARG_direct_driver_loading (DirectDriverLoadingListLUNARG)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_metal_objects (ExportMetalObjectCreateInfoEXT)
+import Vulkan.CStruct.Extends (Extends)
+import Vulkan.CStruct.Extends (Extendss)
+import Vulkan.CStruct.Extends (Extensible(..))
+import Vulkan.Core10.FundamentalTypes (Extent3D)
+import Vulkan.Core10.Enums.Format (Format)
+import Vulkan.Core10.Enums.Format (Format(..))
+import Vulkan.Core10.Enums.FormatFeatureFlagBits (FormatFeatureFlags)
+import Vulkan.Core10.Enums.ImageCreateFlagBits (ImageCreateFlagBits(..))
+import Vulkan.Core10.Enums.ImageCreateFlagBits (ImageCreateFlags)
+import Vulkan.Core10.Enums.ImageTiling (ImageTiling)
+import Vulkan.Core10.Enums.ImageTiling (ImageTiling(..))
+import Vulkan.Core10.Enums.ImageType (ImageType)
+import Vulkan.Core10.Enums.ImageType (ImageType(..))
+import Vulkan.Core10.Enums.ImageUsageFlagBits (ImageUsageFlagBits(..))
+import Vulkan.Core10.Enums.ImageUsageFlagBits (ImageUsageFlags)
+import Vulkan.Core10.Handles (Instance)
+import Vulkan.Core10.Handles (Instance(..))
+import Vulkan.Core10.Handles (Instance(Instance))
+import Vulkan.Dynamic (InstanceCmds(pVkDestroyInstance))
+import Vulkan.Dynamic (InstanceCmds(pVkEnumeratePhysicalDevices))
+import Vulkan.Dynamic (InstanceCmds(pVkGetInstanceProcAddr))
+import Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceFeatures))
+import Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceFormatProperties))
+import Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceImageFormatProperties))
+import Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceMemoryProperties))
+import Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceProperties))
+import Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceQueueFamilyProperties))
+import Vulkan.Core10.Enums.InstanceCreateFlagBits (InstanceCreateFlags)
+import Vulkan.Core10.Handles (Instance_T)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_layer_settings (LayerSettingsCreateInfoEXT)
+import Vulkan.Core10.APIConstants (MAX_MEMORY_HEAPS)
+import Vulkan.Core10.APIConstants (MAX_MEMORY_TYPES)
+import Vulkan.Core10.APIConstants (MAX_PHYSICAL_DEVICE_NAME_SIZE)
+import Vulkan.Core10.Enums.MemoryHeapFlagBits (MemoryHeapFlags)
+import Vulkan.Core10.Enums.MemoryPropertyFlagBits (MemoryPropertyFlags)
+import Vulkan.Core10.FuncPointers (PFN_vkVoidFunction)
+import Vulkan.CStruct.Extends (PeekChain)
+import Vulkan.CStruct.Extends (PeekChain(..))
+import Vulkan.Core10.Handles (PhysicalDevice)
+import Vulkan.Core10.Handles (PhysicalDevice(..))
+import Vulkan.Core10.Handles (PhysicalDevice(PhysicalDevice))
+import Vulkan.Core10.Enums.PhysicalDeviceType (PhysicalDeviceType)
+import Vulkan.Core10.Handles (PhysicalDevice_T)
+import Vulkan.CStruct.Extends (PokeChain)
+import Vulkan.CStruct.Extends (PokeChain(..))
+import Vulkan.Core10.Enums.QueueFlagBits (QueueFlags)
+import Vulkan.Core10.Enums.Result (Result)
+import Vulkan.Core10.Enums.Result (Result(..))
+import Vulkan.Core10.Enums.SampleCountFlagBits (SampleCountFlags)
+import Vulkan.CStruct.Extends (SomeStruct)
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Core10.APIConstants (UUID_SIZE)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_validation_features (ValidationFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_validation_flags (ValidationFlagsEXT)
+import Vulkan.Exception (VulkanException(..))
+import Vulkan.Core10.APIConstants (pattern MAX_MEMORY_HEAPS)
+import Vulkan.Core10.APIConstants (pattern MAX_MEMORY_TYPES)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_APPLICATION_INFO))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_INSTANCE_CREATE_INFO))
+import Vulkan.Core10.Enums.Result (Result(SUCCESS))
+import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks(..))
+import Vulkan.Core10.FuncPointers (FN_vkAllocationFunction)
+import Vulkan.Core10.FuncPointers (FN_vkFreeFunction)
+import Vulkan.Core10.FuncPointers (FN_vkInternalAllocationNotification)
+import Vulkan.Core10.FuncPointers (FN_vkInternalFreeNotification)
+import Vulkan.Core10.FuncPointers (FN_vkReallocationFunction)
+import Vulkan.Core10.FuncPointers (FN_vkVoidFunction)
+import Vulkan.Core10.Enums.Format (Format(..))
+import Vulkan.Core10.Enums.FormatFeatureFlagBits (FormatFeatureFlagBits(..))
+import Vulkan.Core10.Enums.FormatFeatureFlagBits (FormatFeatureFlags)
+import Vulkan.Core10.Enums.ImageCreateFlagBits (ImageCreateFlagBits(..))
+import Vulkan.Core10.Enums.ImageCreateFlagBits (ImageCreateFlags)
+import Vulkan.Core10.Enums.ImageTiling (ImageTiling(..))
+import Vulkan.Core10.Enums.ImageType (ImageType(..))
+import Vulkan.Core10.Enums.ImageUsageFlagBits (ImageUsageFlagBits(..))
+import Vulkan.Core10.Enums.ImageUsageFlagBits (ImageUsageFlags)
+import Vulkan.Core10.Handles (Instance(..))
+import Vulkan.Core10.Enums.InstanceCreateFlagBits (InstanceCreateFlagBits(..))
+import Vulkan.Core10.Enums.InstanceCreateFlagBits (InstanceCreateFlags)
+import Vulkan.Core10.Enums.InternalAllocationType (InternalAllocationType(..))
+import Vulkan.Core10.Enums.MemoryHeapFlagBits (MemoryHeapFlagBits(..))
+import Vulkan.Core10.Enums.MemoryHeapFlagBits (MemoryHeapFlags)
+import Vulkan.Core10.Enums.MemoryPropertyFlagBits (MemoryPropertyFlagBits(..))
+import Vulkan.Core10.Enums.MemoryPropertyFlagBits (MemoryPropertyFlags)
+import Vulkan.Core10.FuncPointers (PFN_vkAllocationFunction)
+import Vulkan.Core10.FuncPointers (PFN_vkFreeFunction)
+import Vulkan.Core10.FuncPointers (PFN_vkInternalAllocationNotification)
+import Vulkan.Core10.FuncPointers (PFN_vkInternalFreeNotification)
+import Vulkan.Core10.FuncPointers (PFN_vkReallocationFunction)
+import Vulkan.Core10.FuncPointers (PFN_vkVoidFunction)
+import Vulkan.Core10.Handles (PhysicalDevice(..))
+import Vulkan.Core10.Enums.PhysicalDeviceType (PhysicalDeviceType(..))
+import Vulkan.Core10.Enums.QueueFlagBits (QueueFlagBits(..))
+import Vulkan.Core10.Enums.QueueFlagBits (QueueFlags)
+import Vulkan.Core10.Enums.SampleCountFlagBits (SampleCountFlagBits(..))
+import Vulkan.Core10.Enums.SampleCountFlagBits (SampleCountFlags)
+import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlagBits(..))
+import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)
+import Vulkan.Core10.Enums.SystemAllocationScope (SystemAllocationScope(..))
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCreateInstance
+  :: FunPtr (Ptr (SomeStruct InstanceCreateInfo) -> Ptr AllocationCallbacks -> Ptr (Ptr Instance_T) -> IO Result) -> Ptr (SomeStruct InstanceCreateInfo) -> Ptr AllocationCallbacks -> Ptr (Ptr Instance_T) -> IO Result
+
+-- | vkCreateInstance - Create a new Vulkan instance
+--
+-- = Description
+--
+-- 'createInstance' verifies that the requested layers exist. If not,
+-- 'createInstance' will return
+-- 'Vulkan.Core10.Enums.Result.ERROR_LAYER_NOT_PRESENT'. Next
+-- 'createInstance' verifies that the requested extensions are supported
+-- (e.g. in the implementation or in any enabled instance layer) and if any
+-- requested extension is not supported, 'createInstance' /must/ return
+-- 'Vulkan.Core10.Enums.Result.ERROR_EXTENSION_NOT_PRESENT'. After
+-- verifying and enabling the instance layers and extensions the
+-- 'Vulkan.Core10.Handles.Instance' object is created and returned to the
+-- application. If a requested extension is only supported by a layer, both
+-- the layer and the extension need to be specified at 'createInstance'
+-- time for the creation to succeed.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCreateInstance-ppEnabledExtensionNames-01388# All
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#extendingvulkan-extensions-extensiondependencies required extensions>
+--     for each extension in the
+--     'InstanceCreateInfo'::@ppEnabledExtensionNames@ list /must/ also be
+--     present in that list
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCreateInstance-pCreateInfo-parameter# @pCreateInfo@ /must/
+--     be a valid pointer to a valid 'InstanceCreateInfo' structure
+--
+-- -   #VUID-vkCreateInstance-pAllocator-parameter# If @pAllocator@ is not
+--     @NULL@, @pAllocator@ /must/ be a valid pointer to a valid
+--     'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' structure
+--
+-- -   #VUID-vkCreateInstance-pInstance-parameter# @pInstance@ /must/ be a
+--     valid pointer to a 'Vulkan.Core10.Handles.Instance' 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_EXTENSION_NOT_PRESENT'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_INCOMPATIBLE_DRIVER'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_INITIALIZATION_FAILED'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_LAYER_NOT_PRESENT'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = 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.AllocationCallbacks.AllocationCallbacks',
+-- 'Vulkan.Core10.Handles.Instance', 'InstanceCreateInfo'
+createInstance :: forall a io
+                . (Extendss InstanceCreateInfo a, PokeChain a, MonadIO io)
+               => -- | @pCreateInfo@ is a pointer to a 'InstanceCreateInfo' structure
+                  -- controlling creation of the instance.
+                  (InstanceCreateInfo a)
+               -> -- | @pAllocator@ controls host memory allocation as described in the
+                  -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
+                  -- chapter.
+                  ("allocator" ::: Maybe AllocationCallbacks)
+               -> io (Instance)
+createInstance createInfo allocator = liftIO . evalContT $ do
+  vkCreateInstancePtr <- lift $ castFunPtr @_ @(("pCreateInfo" ::: Ptr (SomeStruct InstanceCreateInfo)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pInstance" ::: Ptr (Ptr Instance_T)) -> IO Result) <$> getInstanceProcAddr' nullPtr (Ptr "vkCreateInstance"#)
+  lift $ unless (vkCreateInstancePtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCreateInstance is null" Nothing Nothing
+  let vkCreateInstance' = mkVkCreateInstance vkCreateInstancePtr
+  pCreateInfo <- ContT $ withCStruct (createInfo)
+  pAllocator <- case (allocator) of
+    Nothing -> pure nullPtr
+    Just j -> ContT $ withCStruct (j)
+  pPInstance <- ContT $ bracket (callocBytes @(Ptr Instance_T) 8) free
+  r <- lift $ traceAroundEvent "vkCreateInstance" (vkCreateInstance'
+                                                     (forgetExtensions pCreateInfo)
+                                                     pAllocator
+                                                     (pPInstance))
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+  pInstance <- lift $ peek @(Ptr Instance_T) pPInstance
+  pInstance' <- lift $ (\h -> Instance h <$> initInstanceCmds h) pInstance
+  pure $ (pInstance')
+
+-- | A convenience wrapper to make a compatible pair of calls to
+-- 'createInstance' and 'destroyInstance'
+--
+-- To ensure that 'destroyInstance' 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.
+--
+withInstance :: forall a io r . (Extendss InstanceCreateInfo a, PokeChain a, MonadIO io) => InstanceCreateInfo a -> Maybe AllocationCallbacks -> (io Instance -> (Instance -> io ()) -> r) -> r
+withInstance pCreateInfo pAllocator b =
+  b (createInstance pCreateInfo pAllocator)
+    (\(o0) -> destroyInstance o0 pAllocator)
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkDestroyInstance
+  :: FunPtr (Ptr Instance_T -> Ptr AllocationCallbacks -> IO ()) -> Ptr Instance_T -> Ptr AllocationCallbacks -> IO ()
+
+-- | vkDestroyInstance - Destroy an instance of Vulkan
+--
+-- = Description
+--
+-- Prior to destroying an instance, an application is responsible for
+-- destroying\/freeing any Vulkan objects with explicit @vkDestroy*@ or
+-- @vkFree*@ commands that were created using that instance, or any
+-- 'Vulkan.Core10.Handles.PhysicalDevice' object retrieved from it, as the
+-- first parameter of the corresponding @vkCreate*@ or @vkAllocate*@
+-- command.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkDestroyInstance-instance-00629# All child objects that were
+--     created with @instance@ or with a
+--     'Vulkan.Core10.Handles.PhysicalDevice' retrieved from it, and that
+--     /can/ be destroyed or freed, /must/ have been destroyed or freed
+--     prior to destroying @instance@
+--
+-- -   #VUID-vkDestroyInstance-instance-00630# If
+--     'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' were
+--     provided when @instance@ was created, a compatible set of callbacks
+--     /must/ be provided here
+--
+-- -   #VUID-vkDestroyInstance-instance-00631# If no
+--     'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' were
+--     provided when @instance@ was created, @pAllocator@ /must/ be @NULL@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkDestroyInstance-instance-parameter# If @instance@ is not
+--     @NULL@, @instance@ /must/ be a valid
+--     'Vulkan.Core10.Handles.Instance' handle
+--
+-- -   #VUID-vkDestroyInstance-pAllocator-parameter# If @pAllocator@ is not
+--     @NULL@, @pAllocator@ /must/ be a valid pointer to a valid
+--     'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' structure
+--
+-- == Host Synchronization
+--
+-- -   Host access to @instance@ /must/ be externally synchronized
+--
+-- -   Host access to all 'Vulkan.Core10.Handles.PhysicalDevice' objects
+--     enumerated from @instance@ /must/ be externally synchronized
+--
+-- = 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.AllocationCallbacks.AllocationCallbacks',
+-- 'Vulkan.Core10.Handles.Instance'
+destroyInstance :: forall io
+                 . (MonadIO io)
+                => -- | @instance@ is the handle of the instance to destroy.
+                   Instance
+                -> -- | @pAllocator@ controls host memory allocation as described in the
+                   -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
+                   -- chapter.
+                   ("allocator" ::: Maybe AllocationCallbacks)
+                -> io ()
+destroyInstance instance' allocator = liftIO . evalContT $ do
+  let vkDestroyInstancePtr = pVkDestroyInstance (case instance' of Instance{instanceCmds} -> instanceCmds)
+  lift $ unless (vkDestroyInstancePtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkDestroyInstance is null" Nothing Nothing
+  let vkDestroyInstance' = mkVkDestroyInstance vkDestroyInstancePtr
+  pAllocator <- case (allocator) of
+    Nothing -> pure nullPtr
+    Just j -> ContT $ withCStruct (j)
+  lift $ traceAroundEvent "vkDestroyInstance" (vkDestroyInstance'
+                                                 (instanceHandle (instance'))
+                                                 pAllocator)
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkEnumeratePhysicalDevices
+  :: FunPtr (Ptr Instance_T -> Ptr Word32 -> Ptr (Ptr PhysicalDevice_T) -> IO Result) -> Ptr Instance_T -> Ptr Word32 -> Ptr (Ptr PhysicalDevice_T) -> IO Result
+
+-- | vkEnumeratePhysicalDevices - Enumerates the physical devices accessible
+-- to a Vulkan instance
+--
+-- = Description
+--
+-- If @pPhysicalDevices@ is @NULL@, then the number of physical devices
+-- available is returned in @pPhysicalDeviceCount@. Otherwise,
+-- @pPhysicalDeviceCount@ /must/ point to a variable set by the application
+-- to the number of elements in the @pPhysicalDevices@ array, and on return
+-- the variable is overwritten with the number of handles actually written
+-- to @pPhysicalDevices@. If @pPhysicalDeviceCount@ is less than the number
+-- of physical devices available, at most @pPhysicalDeviceCount@ structures
+-- will be written, and 'Vulkan.Core10.Enums.Result.INCOMPLETE' will be
+-- returned instead of 'Vulkan.Core10.Enums.Result.SUCCESS', to indicate
+-- that not all the available physical devices were returned.
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkEnumeratePhysicalDevices-instance-parameter# @instance@
+--     /must/ be a valid 'Vulkan.Core10.Handles.Instance' handle
+--
+-- -   #VUID-vkEnumeratePhysicalDevices-pPhysicalDeviceCount-parameter#
+--     @pPhysicalDeviceCount@ /must/ be a valid pointer to a @uint32_t@
+--     value
+--
+-- -   #VUID-vkEnumeratePhysicalDevices-pPhysicalDevices-parameter# If the
+--     value referenced by @pPhysicalDeviceCount@ is not @0@, and
+--     @pPhysicalDevices@ is not @NULL@, @pPhysicalDevices@ /must/ be a
+--     valid pointer to an array of @pPhysicalDeviceCount@
+--     'Vulkan.Core10.Handles.PhysicalDevice' handles
+--
+-- == Return Codes
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
+--
+--     -   'Vulkan.Core10.Enums.Result.INCOMPLETE'
+--
+--     -   '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_INITIALIZATION_FAILED'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = 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.Instance', 'Vulkan.Core10.Handles.PhysicalDevice'
+enumeratePhysicalDevices :: forall io
+                          . (MonadIO io)
+                         => -- | @instance@ is a handle to a Vulkan instance previously created with
+                            -- 'createInstance'.
+                            Instance
+                         -> io (Result, ("physicalDevices" ::: Vector PhysicalDevice))
+enumeratePhysicalDevices instance' = liftIO . evalContT $ do
+  let cmds = case instance' of Instance{instanceCmds} -> instanceCmds
+  let vkEnumeratePhysicalDevicesPtr = pVkEnumeratePhysicalDevices cmds
+  lift $ unless (vkEnumeratePhysicalDevicesPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkEnumeratePhysicalDevices is null" Nothing Nothing
+  let vkEnumeratePhysicalDevices' = mkVkEnumeratePhysicalDevices vkEnumeratePhysicalDevicesPtr
+  let instance'' = instanceHandle (instance')
+  pPPhysicalDeviceCount <- ContT $ bracket (callocBytes @Word32 4) free
+  r <- lift $ traceAroundEvent "vkEnumeratePhysicalDevices" (vkEnumeratePhysicalDevices'
+                                                               instance''
+                                                               (pPPhysicalDeviceCount)
+                                                               (nullPtr))
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+  pPhysicalDeviceCount <- lift $ peek @Word32 pPPhysicalDeviceCount
+  pPPhysicalDevices <- ContT $ bracket (callocBytes @(Ptr PhysicalDevice_T) ((fromIntegral (pPhysicalDeviceCount)) * 8)) free
+  r' <- lift $ traceAroundEvent "vkEnumeratePhysicalDevices" (vkEnumeratePhysicalDevices'
+                                                                instance''
+                                                                (pPPhysicalDeviceCount)
+                                                                (pPPhysicalDevices))
+  lift $ when (r' < SUCCESS) (throwIO (VulkanException r'))
+  pPhysicalDeviceCount' <- lift $ peek @Word32 pPPhysicalDeviceCount
+  pPhysicalDevices' <- lift $ generateM (fromIntegral (pPhysicalDeviceCount')) (\i -> do
+    pPhysicalDevicesElem <- peek @(Ptr PhysicalDevice_T) ((pPPhysicalDevices `advancePtrBytes` (8 * (i)) :: Ptr (Ptr PhysicalDevice_T)))
+    pure $ (\h -> PhysicalDevice h cmds ) pPhysicalDevicesElem)
+  pure $ ((r'), pPhysicalDevices')
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetDeviceProcAddr
+  :: FunPtr (Ptr Device_T -> Ptr CChar -> IO PFN_vkVoidFunction) -> Ptr Device_T -> Ptr CChar -> IO PFN_vkVoidFunction
+
+-- | vkGetDeviceProcAddr - Return a function pointer for a command
+--
+-- = Description
+--
+-- The table below defines the various use cases for 'getDeviceProcAddr'
+-- and expected return value (“fp” is “function pointer”) for each case. A
+-- valid returned function pointer (“fp”) /must/ not be @NULL@.
+--
+-- The returned function pointer is of type
+-- 'Vulkan.Core10.FuncPointers.PFN_vkVoidFunction', and /must/ be cast to
+-- the type of the command being queried before use. The function pointer
+-- /must/ only be called with a dispatchable object (the first parameter)
+-- that is @device@ or a child of @device@.
+--
+-- +------------------+------------------+------------------+
+-- | @device@         | @pName@          | return value     |
+-- +==================+==================+==================+
+-- | @NULL@           | *1               | undefined        |
+-- +------------------+------------------+------------------+
+-- | invalid device   | *1               | undefined        |
+-- +------------------+------------------+------------------+
+-- | device           | @NULL@           | undefined        |
+-- +------------------+------------------+------------------+
+-- | device           | requested core   | fp4              |
+-- |                  | version2         |                  |
+-- |                  | device-level     |                  |
+-- |                  | dispatchable     |                  |
+-- |                  | command3         |                  |
+-- +------------------+------------------+------------------+
+-- | device           | enabled          | fp4              |
+-- |                  | extension        |                  |
+-- |                  | device-level     |                  |
+-- |                  | dispatchable     |                  |
+-- |                  | command3         |                  |
+-- +------------------+------------------+------------------+
+-- | any other case,  |                  | @NULL@           |
+-- | not covered      |                  |                  |
+-- | above            |                  |                  |
+-- +------------------+------------------+------------------+
+--
+-- 'getDeviceProcAddr' behavior
+--
+-- [1]
+--     \"*\" means any representable value for the parameter (including
+--     valid values, invalid values, and @NULL@).
+--
+-- [2]
+--     Device-level commands which are part of the core version specified
+--     by 'ApplicationInfo'::@apiVersion@ when creating the instance will
+--     always return a valid function pointer. If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance5 maintenance5>
+--     feature is enabled, core commands beyond that version which are
+--     supported by the implementation will return @NULL@, otherwise the
+--     implementation /may/ either return @NULL@ or a function pointer. If
+--     a function pointer is returned, it /must/ not be called.
+--
+-- [3]
+--     In this function, device-level excludes all physical-device-level
+--     commands.
+--
+-- [4]
+--     The returned function pointer /must/ only be called with a
+--     dispatchable object (the first parameter) that is @device@ or a
+--     child of @device@ e.g. 'Vulkan.Core10.Handles.Device',
+--     'Vulkan.Core10.Handles.Queue', or
+--     'Vulkan.Core10.Handles.CommandBuffer'.
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- 'Vulkan.Core10.FuncPointers.PFN_vkVoidFunction',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
+-- 'Vulkan.Core10.Handles.Device'
+getDeviceProcAddr :: forall io
+                   . (MonadIO io)
+                  => -- | #VUID-vkGetDeviceProcAddr-device-parameter# @device@ /must/ be a valid
+                     -- 'Vulkan.Core10.Handles.Device' handle
+                     Device
+                  -> -- | #VUID-vkGetDeviceProcAddr-pName-parameter# @pName@ /must/ be a
+                     -- null-terminated UTF-8 string
+                     ("name" ::: ByteString)
+                  -> io (PFN_vkVoidFunction)
+getDeviceProcAddr device name = liftIO . evalContT $ do
+  let vkGetDeviceProcAddrPtr = pVkGetDeviceProcAddr (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkGetDeviceProcAddrPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetDeviceProcAddr is null" Nothing Nothing
+  let vkGetDeviceProcAddr' = mkVkGetDeviceProcAddr vkGetDeviceProcAddrPtr
+  pName <- ContT $ useAsCString (name)
+  r <- lift $ traceAroundEvent "vkGetDeviceProcAddr" (vkGetDeviceProcAddr'
+                                                        (deviceHandle (device))
+                                                        pName)
+  pure $ (r)
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetInstanceProcAddr
+  :: FunPtr (Ptr Instance_T -> Ptr CChar -> IO PFN_vkVoidFunction) -> Ptr Instance_T -> Ptr CChar -> IO PFN_vkVoidFunction
+
+-- | vkGetInstanceProcAddr - Return a function pointer for a command
+--
+-- = Description
+--
+-- 'getInstanceProcAddr' itself is obtained in a platform- and loader-
+-- specific manner. Typically, the loader library will export this command
+-- as a function symbol, so applications /can/ link against the loader
+-- library, or load it dynamically and look up the symbol using
+-- platform-specific APIs.
+--
+-- The table below defines the various use cases for 'getInstanceProcAddr'
+-- and expected return value (“fp” is “function pointer”) for each case. A
+-- valid returned function pointer (“fp”) /must/ not be @NULL@.
+--
+-- The returned function pointer is of type
+-- 'Vulkan.Core10.FuncPointers.PFN_vkVoidFunction', and /must/ be cast to
+-- the type of the command being queried before use.
+--
+-- +------------------+-----------------------+------------------+
+-- | @instance@       | @pName@               | return value     |
+-- +==================+=======================+==================+
+-- | *1               | @NULL@                | undefined        |
+-- +------------------+-----------------------+------------------+
+-- | invalid          | *1                    | undefined        |
+-- | non-@NULL@       |                       |                  |
+-- | instance         |                       |                  |
+-- +------------------+-----------------------+------------------+
+-- | @NULL@           | /global command/2     | fp               |
+-- +------------------+-----------------------+------------------+
+-- | @NULL@           | 'getInstanceProcAddr' | fp5              |
+-- +------------------+-----------------------+------------------+
+-- | instance         | 'getInstanceProcAddr' | fp               |
+-- +------------------+-----------------------+------------------+
+-- | instance         | core /dispatchable    | fp3              |
+-- |                  | command/              |                  |
+-- +------------------+-----------------------+------------------+
+-- | instance         | enabled instance      | fp3              |
+-- |                  | extension             |                  |
+-- |                  | dispatchable command  |                  |
+-- |                  | for @instance@        |                  |
+-- +------------------+-----------------------+------------------+
+-- | instance         | available device      | fp3              |
+-- |                  | extension4            |                  |
+-- |                  | dispatchable command  |                  |
+-- |                  | for @instance@        |                  |
+-- +------------------+-----------------------+------------------+
+-- | any other case,  |                       | @NULL@           |
+-- | not covered      |                       |                  |
+-- | above            |                       |                  |
+-- +------------------+-----------------------+------------------+
+--
+-- 'getInstanceProcAddr' behavior
+--
+-- [1]
+--     \"*\" means any representable value for the parameter (including
+--     valid values, invalid values, and @NULL@).
+--
+-- [2]
+--     The global commands are:
+--     'Vulkan.Core11.DeviceInitialization.enumerateInstanceVersion',
+--     'Vulkan.Core10.ExtensionDiscovery.enumerateInstanceExtensionProperties',
+--     'Vulkan.Core10.LayerDiscovery.enumerateInstanceLayerProperties', and
+--     'createInstance'. Dispatchable commands are all other commands which
+--     are not global.
+--
+-- [3]
+--     The returned function pointer /must/ only be called with a
+--     dispatchable object (the first parameter) that is @instance@ or a
+--     child of @instance@, e.g. 'Vulkan.Core10.Handles.Instance',
+--     'Vulkan.Core10.Handles.PhysicalDevice',
+--     'Vulkan.Core10.Handles.Device', 'Vulkan.Core10.Handles.Queue', or
+--     'Vulkan.Core10.Handles.CommandBuffer'.
+--
+-- [4]
+--     An “available device extension” is a device extension supported by
+--     any physical device enumerated by @instance@.
+--
+-- [5]
+--     Starting with Vulkan 1.2, 'getInstanceProcAddr' can resolve itself
+--     with a @NULL@ instance pointer.
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkGetInstanceProcAddr-instance-parameter# If @instance@ is not
+--     @NULL@, @instance@ /must/ be a valid
+--     'Vulkan.Core10.Handles.Instance' handle
+--
+-- -   #VUID-vkGetInstanceProcAddr-pName-parameter# @pName@ /must/ be a
+--     null-terminated UTF-8 string
+--
+-- = See Also
+--
+-- 'Vulkan.Core10.FuncPointers.PFN_vkVoidFunction',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
+-- 'Vulkan.Core10.Handles.Instance'
+getInstanceProcAddr :: forall io
+                     . (MonadIO io)
+                    => -- | @instance@ is the instance that the function pointer will be compatible
+                       -- with, or @NULL@ for commands not dependent on any instance.
+                       Instance
+                    -> -- | @pName@ is the name of the command to obtain.
+                       ("name" ::: ByteString)
+                    -> io (PFN_vkVoidFunction)
+getInstanceProcAddr instance' name = liftIO . evalContT $ do
+  let vkGetInstanceProcAddrPtr = pVkGetInstanceProcAddr (case instance' of Instance{instanceCmds} -> instanceCmds)
+  lift $ unless (vkGetInstanceProcAddrPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetInstanceProcAddr is null" Nothing Nothing
+  let vkGetInstanceProcAddr' = mkVkGetInstanceProcAddr vkGetInstanceProcAddrPtr
+  pName <- ContT $ useAsCString (name)
+  r <- lift $ traceAroundEvent "vkGetInstanceProcAddr" (vkGetInstanceProcAddr'
+                                                          (instanceHandle (instance'))
+                                                          pName)
+  pure $ (r)
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetPhysicalDeviceProperties
+  :: FunPtr (Ptr PhysicalDevice_T -> Ptr PhysicalDeviceProperties -> IO ()) -> Ptr PhysicalDevice_T -> Ptr PhysicalDeviceProperties -> IO ()
+
+-- | vkGetPhysicalDeviceProperties - Returns properties of a physical device
+--
+-- == Valid Usage (Implicit)
+--
+-- = 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.PhysicalDevice', 'PhysicalDeviceProperties'
+getPhysicalDeviceProperties :: forall io
+                             . (MonadIO io)
+                            => -- | @physicalDevice@ is the handle to the physical device whose properties
+                               -- will be queried.
+                               --
+                               -- #VUID-vkGetPhysicalDeviceProperties-physicalDevice-parameter#
+                               -- @physicalDevice@ /must/ be a valid
+                               -- 'Vulkan.Core10.Handles.PhysicalDevice' handle
+                               PhysicalDevice
+                            -> io (PhysicalDeviceProperties)
+getPhysicalDeviceProperties physicalDevice = liftIO . evalContT $ do
+  let vkGetPhysicalDevicePropertiesPtr = pVkGetPhysicalDeviceProperties (case physicalDevice of PhysicalDevice{instanceCmds} -> instanceCmds)
+  lift $ unless (vkGetPhysicalDevicePropertiesPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetPhysicalDeviceProperties is null" Nothing Nothing
+  let vkGetPhysicalDeviceProperties' = mkVkGetPhysicalDeviceProperties vkGetPhysicalDevicePropertiesPtr
+  pPProperties <- ContT (withZeroCStruct @PhysicalDeviceProperties)
+  lift $ traceAroundEvent "vkGetPhysicalDeviceProperties" (vkGetPhysicalDeviceProperties'
+                                                             (physicalDeviceHandle (physicalDevice))
+                                                             (pPProperties))
+  pProperties <- lift $ peekCStruct @PhysicalDeviceProperties pPProperties
+  pure $ (pProperties)
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetPhysicalDeviceQueueFamilyProperties
+  :: FunPtr (Ptr PhysicalDevice_T -> Ptr Word32 -> Ptr QueueFamilyProperties -> IO ()) -> Ptr PhysicalDevice_T -> Ptr Word32 -> Ptr QueueFamilyProperties -> IO ()
+
+-- | vkGetPhysicalDeviceQueueFamilyProperties - Reports properties of the
+-- queues of the specified physical device
+--
+-- = Description
+--
+-- If @pQueueFamilyProperties@ is @NULL@, then the number of queue families
+-- available is returned in @pQueueFamilyPropertyCount@. Implementations
+-- /must/ support at least one queue family. Otherwise,
+-- @pQueueFamilyPropertyCount@ /must/ point to a variable set by the
+-- application to the number of elements in the @pQueueFamilyProperties@
+-- array, and on return the variable is overwritten with the number of
+-- structures actually written to @pQueueFamilyProperties@. If
+-- @pQueueFamilyPropertyCount@ is less than the number of queue families
+-- available, at most @pQueueFamilyPropertyCount@ structures will be
+-- written.
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkGetPhysicalDeviceQueueFamilyProperties-physicalDevice-parameter#
+--     @physicalDevice@ /must/ be a valid
+--     'Vulkan.Core10.Handles.PhysicalDevice' handle
+--
+-- -   #VUID-vkGetPhysicalDeviceQueueFamilyProperties-pQueueFamilyPropertyCount-parameter#
+--     @pQueueFamilyPropertyCount@ /must/ be a valid pointer to a
+--     @uint32_t@ value
+--
+-- -   #VUID-vkGetPhysicalDeviceQueueFamilyProperties-pQueueFamilyProperties-parameter#
+--     If the value referenced by @pQueueFamilyPropertyCount@ is not @0@,
+--     and @pQueueFamilyProperties@ is not @NULL@, @pQueueFamilyProperties@
+--     /must/ be a valid pointer to an array of @pQueueFamilyPropertyCount@
+--     'QueueFamilyProperties' structures
+--
+-- = 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.PhysicalDevice', 'QueueFamilyProperties'
+getPhysicalDeviceQueueFamilyProperties :: forall io
+                                        . (MonadIO io)
+                                       => -- | @physicalDevice@ is the handle to the physical device whose properties
+                                          -- will be queried.
+                                          PhysicalDevice
+                                       -> io (("queueFamilyProperties" ::: Vector QueueFamilyProperties))
+getPhysicalDeviceQueueFamilyProperties physicalDevice = liftIO . evalContT $ do
+  let vkGetPhysicalDeviceQueueFamilyPropertiesPtr = pVkGetPhysicalDeviceQueueFamilyProperties (case physicalDevice of PhysicalDevice{instanceCmds} -> instanceCmds)
+  lift $ unless (vkGetPhysicalDeviceQueueFamilyPropertiesPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetPhysicalDeviceQueueFamilyProperties is null" Nothing Nothing
+  let vkGetPhysicalDeviceQueueFamilyProperties' = mkVkGetPhysicalDeviceQueueFamilyProperties vkGetPhysicalDeviceQueueFamilyPropertiesPtr
+  let physicalDevice' = physicalDeviceHandle (physicalDevice)
+  pPQueueFamilyPropertyCount <- ContT $ bracket (callocBytes @Word32 4) free
+  lift $ traceAroundEvent "vkGetPhysicalDeviceQueueFamilyProperties" (vkGetPhysicalDeviceQueueFamilyProperties'
+                                                                        physicalDevice'
+                                                                        (pPQueueFamilyPropertyCount)
+                                                                        (nullPtr))
+  pQueueFamilyPropertyCount <- lift $ peek @Word32 pPQueueFamilyPropertyCount
+  pPQueueFamilyProperties <- ContT $ bracket (callocBytes @QueueFamilyProperties ((fromIntegral (pQueueFamilyPropertyCount)) * 24)) free
+  _ <- traverse (\i -> ContT $ pokeZeroCStruct (pPQueueFamilyProperties `advancePtrBytes` (i * 24) :: Ptr QueueFamilyProperties) . ($ ())) [0..(fromIntegral (pQueueFamilyPropertyCount)) - 1]
+  lift $ traceAroundEvent "vkGetPhysicalDeviceQueueFamilyProperties" (vkGetPhysicalDeviceQueueFamilyProperties'
+                                                                        physicalDevice'
+                                                                        (pPQueueFamilyPropertyCount)
+                                                                        ((pPQueueFamilyProperties)))
+  pQueueFamilyPropertyCount' <- lift $ peek @Word32 pPQueueFamilyPropertyCount
+  pQueueFamilyProperties' <- lift $ generateM (fromIntegral (pQueueFamilyPropertyCount')) (\i -> peekCStruct @QueueFamilyProperties (((pPQueueFamilyProperties) `advancePtrBytes` (24 * (i)) :: Ptr QueueFamilyProperties)))
+  pure $ (pQueueFamilyProperties')
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetPhysicalDeviceMemoryProperties
+  :: FunPtr (Ptr PhysicalDevice_T -> Ptr PhysicalDeviceMemoryProperties -> IO ()) -> Ptr PhysicalDevice_T -> Ptr PhysicalDeviceMemoryProperties -> IO ()
+
+-- | vkGetPhysicalDeviceMemoryProperties - Reports memory information for the
+-- specified physical device
+--
+-- == Valid Usage (Implicit)
+--
+-- = 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.PhysicalDevice', 'PhysicalDeviceMemoryProperties'
+getPhysicalDeviceMemoryProperties :: forall io
+                                   . (MonadIO io)
+                                  => -- | @physicalDevice@ is the handle to the device to query.
+                                     --
+                                     -- #VUID-vkGetPhysicalDeviceMemoryProperties-physicalDevice-parameter#
+                                     -- @physicalDevice@ /must/ be a valid
+                                     -- 'Vulkan.Core10.Handles.PhysicalDevice' handle
+                                     PhysicalDevice
+                                  -> io (PhysicalDeviceMemoryProperties)
+getPhysicalDeviceMemoryProperties physicalDevice = liftIO . evalContT $ do
+  let vkGetPhysicalDeviceMemoryPropertiesPtr = pVkGetPhysicalDeviceMemoryProperties (case physicalDevice of PhysicalDevice{instanceCmds} -> instanceCmds)
+  lift $ unless (vkGetPhysicalDeviceMemoryPropertiesPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetPhysicalDeviceMemoryProperties is null" Nothing Nothing
+  let vkGetPhysicalDeviceMemoryProperties' = mkVkGetPhysicalDeviceMemoryProperties vkGetPhysicalDeviceMemoryPropertiesPtr
+  pPMemoryProperties <- ContT (withZeroCStruct @PhysicalDeviceMemoryProperties)
+  lift $ traceAroundEvent "vkGetPhysicalDeviceMemoryProperties" (vkGetPhysicalDeviceMemoryProperties'
+                                                                   (physicalDeviceHandle (physicalDevice))
+                                                                   (pPMemoryProperties))
+  pMemoryProperties <- lift $ peekCStruct @PhysicalDeviceMemoryProperties pPMemoryProperties
+  pure $ (pMemoryProperties)
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetPhysicalDeviceFeatures
+  :: FunPtr (Ptr PhysicalDevice_T -> Ptr PhysicalDeviceFeatures -> IO ()) -> Ptr PhysicalDevice_T -> Ptr PhysicalDeviceFeatures -> IO ()
+
+-- | vkGetPhysicalDeviceFeatures - Reports capabilities of a physical device
+--
+-- == Valid Usage (Implicit)
+--
+-- = 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.PhysicalDevice', 'PhysicalDeviceFeatures'
+getPhysicalDeviceFeatures :: forall io
+                           . (MonadIO io)
+                          => -- | @physicalDevice@ is the physical device from which to query the
+                             -- supported features.
+                             --
+                             -- #VUID-vkGetPhysicalDeviceFeatures-physicalDevice-parameter#
+                             -- @physicalDevice@ /must/ be a valid
+                             -- 'Vulkan.Core10.Handles.PhysicalDevice' handle
+                             PhysicalDevice
+                          -> io (PhysicalDeviceFeatures)
+getPhysicalDeviceFeatures physicalDevice = liftIO . evalContT $ do
+  let vkGetPhysicalDeviceFeaturesPtr = pVkGetPhysicalDeviceFeatures (case physicalDevice of PhysicalDevice{instanceCmds} -> instanceCmds)
+  lift $ unless (vkGetPhysicalDeviceFeaturesPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetPhysicalDeviceFeatures is null" Nothing Nothing
+  let vkGetPhysicalDeviceFeatures' = mkVkGetPhysicalDeviceFeatures vkGetPhysicalDeviceFeaturesPtr
+  pPFeatures <- ContT (withZeroCStruct @PhysicalDeviceFeatures)
+  lift $ traceAroundEvent "vkGetPhysicalDeviceFeatures" (vkGetPhysicalDeviceFeatures'
+                                                           (physicalDeviceHandle (physicalDevice))
+                                                           (pPFeatures))
+  pFeatures <- lift $ peekCStruct @PhysicalDeviceFeatures pPFeatures
+  pure $ (pFeatures)
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetPhysicalDeviceFormatProperties
+  :: FunPtr (Ptr PhysicalDevice_T -> Format -> Ptr FormatProperties -> IO ()) -> Ptr PhysicalDevice_T -> Format -> Ptr FormatProperties -> IO ()
+
+-- | vkGetPhysicalDeviceFormatProperties - Lists physical device’s format
+-- capabilities
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkGetPhysicalDeviceFormatProperties-None-12272# If Vulkan 1.3
+--     is not supported, the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance5 maintenance5>
+--     feature is not supported, and the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-ycbcr2plane444Formats ycbcr2plane444Formats>
+--     feature is not supported, @format@ /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_G8_B8R8_2PLANE_444_UNORM',
+--     'Vulkan.Core10.Enums.Format.FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16',
+--     'Vulkan.Core10.Enums.Format.FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16',
+--     or 'Vulkan.Core10.Enums.Format.FORMAT_G16_B16R16_2PLANE_444_UNORM'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkGetPhysicalDeviceFormatProperties-physicalDevice-parameter#
+--     @physicalDevice@ /must/ be a valid
+--     'Vulkan.Core10.Handles.PhysicalDevice' handle
+--
+-- -   #VUID-vkGetPhysicalDeviceFormatProperties-format-parameter# @format@
+--     /must/ be a valid 'Vulkan.Core10.Enums.Format.Format' value
+--
+-- -   #VUID-vkGetPhysicalDeviceFormatProperties-pFormatProperties-parameter#
+--     @pFormatProperties@ /must/ be a valid pointer to a
+--     'FormatProperties' 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.Enums.Format.Format', 'FormatProperties',
+-- 'Vulkan.Core10.Handles.PhysicalDevice'
+getPhysicalDeviceFormatProperties :: forall io
+                                   . (MonadIO io)
+                                  => -- | @physicalDevice@ is the physical device from which to query the format
+                                     -- properties.
+                                     PhysicalDevice
+                                  -> -- | @format@ is the format whose properties are queried.
+                                     Format
+                                  -> io (FormatProperties)
+getPhysicalDeviceFormatProperties physicalDevice
+                                    format = liftIO . evalContT $ do
+  let vkGetPhysicalDeviceFormatPropertiesPtr = pVkGetPhysicalDeviceFormatProperties (case physicalDevice of PhysicalDevice{instanceCmds} -> instanceCmds)
+  lift $ unless (vkGetPhysicalDeviceFormatPropertiesPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetPhysicalDeviceFormatProperties is null" Nothing Nothing
+  let vkGetPhysicalDeviceFormatProperties' = mkVkGetPhysicalDeviceFormatProperties vkGetPhysicalDeviceFormatPropertiesPtr
+  pPFormatProperties <- ContT (withZeroCStruct @FormatProperties)
+  lift $ traceAroundEvent "vkGetPhysicalDeviceFormatProperties" (vkGetPhysicalDeviceFormatProperties'
+                                                                   (physicalDeviceHandle (physicalDevice))
+                                                                   (format)
+                                                                   (pPFormatProperties))
+  pFormatProperties <- lift $ peekCStruct @FormatProperties pPFormatProperties
+  pure $ (pFormatProperties)
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetPhysicalDeviceImageFormatProperties
+  :: FunPtr (Ptr PhysicalDevice_T -> Format -> ImageType -> ImageTiling -> ImageUsageFlags -> ImageCreateFlags -> Ptr ImageFormatProperties -> IO Result) -> Ptr PhysicalDevice_T -> Format -> ImageType -> ImageTiling -> ImageUsageFlags -> ImageCreateFlags -> Ptr ImageFormatProperties -> IO Result
+
+-- | vkGetPhysicalDeviceImageFormatProperties - Lists physical device’s image
+-- format capabilities
+--
+-- = Description
+--
+-- The @format@, @type@, @tiling@, @usage@, and @flags@ parameters
+-- correspond to parameters that would be consumed by
+-- 'Vulkan.Core10.Image.createImage' (as members of
+-- 'Vulkan.Core10.Image.ImageCreateInfo').
+--
+-- If @format@ is not a supported image format, or if the combination of
+-- @format@, @type@, @tiling@, @usage@, and @flags@ is not supported for
+-- images, then 'getPhysicalDeviceImageFormatProperties' returns
+-- 'Vulkan.Core10.Enums.Result.ERROR_FORMAT_NOT_SUPPORTED'.
+--
+-- The limitations on an image format that are reported by
+-- 'getPhysicalDeviceImageFormatProperties' have the following property: if
+-- @usage1@ and @usage2@ of type
+-- 'Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlags' are such that
+-- the bits set in @usage1@ are a subset of the bits set in @usage2@, and
+-- @flags1@ and @flags2@ of type
+-- 'Vulkan.Core10.Enums.ImageCreateFlagBits.ImageCreateFlags' are such that
+-- the bits set in @flags1@ are a subset of the bits set in @flags2@, then
+-- the limitations for @usage1@ and @flags1@ /must/ be no more strict than
+-- the limitations for @usage2@ and @flags2@, for all values of @format@,
+-- @type@, and @tiling@.
+--
+-- If the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-hostImageCopy hostImageCopy>
+-- feature is supported, and:
+--
+-- Then the result of calls to 'getPhysicalDeviceImageFormatProperties'
+-- with identical parameters except for the inclusion of
+-- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_HOST_TRANSFER_BIT'
+-- in @usage@ /must/ be identical.
+--
+-- == 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_FORMAT_NOT_SUPPORTED'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = 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.Enums.Format.Format',
+-- 'Vulkan.Core10.Enums.ImageCreateFlagBits.ImageCreateFlags',
+-- 'ImageFormatProperties', 'Vulkan.Core10.Enums.ImageTiling.ImageTiling',
+-- 'Vulkan.Core10.Enums.ImageType.ImageType',
+-- 'Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlags',
+-- 'Vulkan.Core10.Handles.PhysicalDevice'
+getPhysicalDeviceImageFormatProperties :: forall io
+                                        . (MonadIO io)
+                                       => -- | @physicalDevice@ is the physical device from which to query the image
+                                          -- capabilities.
+                                          --
+                                          -- #VUID-vkGetPhysicalDeviceImageFormatProperties-physicalDevice-parameter#
+                                          -- @physicalDevice@ /must/ be a valid
+                                          -- 'Vulkan.Core10.Handles.PhysicalDevice' handle
+                                          PhysicalDevice
+                                       -> -- | @format@ is a 'Vulkan.Core10.Enums.Format.Format' value specifying the
+                                          -- image format, corresponding to
+                                          -- 'Vulkan.Core10.Image.ImageCreateInfo'::@format@.
+                                          --
+                                          -- #VUID-vkGetPhysicalDeviceImageFormatProperties-format-parameter#
+                                          -- @format@ /must/ be a valid 'Vulkan.Core10.Enums.Format.Format' value
+                                          Format
+                                       -> -- | @type@ is a 'Vulkan.Core10.Enums.ImageType.ImageType' value specifying
+                                          -- the image type, corresponding to
+                                          -- 'Vulkan.Core10.Image.ImageCreateInfo'::@imageType@.
+                                          --
+                                          -- #VUID-vkGetPhysicalDeviceImageFormatProperties-type-parameter# @type@
+                                          -- /must/ be a valid 'Vulkan.Core10.Enums.ImageType.ImageType' value
+                                          ImageType
+                                       -> -- | @tiling@ is a 'Vulkan.Core10.Enums.ImageTiling.ImageTiling' value
+                                          -- specifying the image tiling, corresponding to
+                                          -- 'Vulkan.Core10.Image.ImageCreateInfo'::@tiling@.
+                                          --
+                                          -- #VUID-vkGetPhysicalDeviceImageFormatProperties-tiling-02248# @tiling@
+                                          -- /must/ not be
+                                          -- 'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT'.
+                                          -- (Use
+                                          -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'
+                                          -- instead)
+                                          --
+                                          -- #VUID-vkGetPhysicalDeviceImageFormatProperties-tiling-parameter#
+                                          -- @tiling@ /must/ be a valid 'Vulkan.Core10.Enums.ImageTiling.ImageTiling'
+                                          -- value
+                                          ImageTiling
+                                       -> -- | @usage@ is a bitmask of
+                                          -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlagBits' specifying
+                                          -- the intended usage of the image, corresponding to
+                                          -- 'Vulkan.Core10.Image.ImageCreateInfo'::@usage@.
+                                          --
+                                          -- @usage@ includes
+                                          -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT', and
+                                          --
+                                          -- #VUID-vkGetPhysicalDeviceImageFormatProperties-usage-parameter# @usage@
+                                          -- /must/ be a valid combination of
+                                          -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlagBits' values
+                                          --
+                                          -- #VUID-vkGetPhysicalDeviceImageFormatProperties-usage-requiredbitmask#
+                                          -- @usage@ /must/ not be @0@
+                                          ImageUsageFlags
+                                       -> -- | @flags@ is a bitmask of
+                                          -- 'Vulkan.Core10.Enums.ImageCreateFlagBits.ImageCreateFlagBits' specifying
+                                          -- additional parameters of the image, corresponding to
+                                          -- 'Vulkan.Core10.Image.ImageCreateInfo'::@flags@.
+                                          --
+                                          -- @flags@ does not include any of
+                                          -- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_BINDING_BIT',
+                                          -- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_RESIDENCY_BIT',
+                                          -- or
+                                          -- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_ALIASED_BIT'
+                                          --
+                                          -- #VUID-vkGetPhysicalDeviceImageFormatProperties-flags-parameter# @flags@
+                                          -- /must/ be a valid combination of
+                                          -- 'Vulkan.Core10.Enums.ImageCreateFlagBits.ImageCreateFlagBits' values
+                                          ImageCreateFlags
+                                       -> io (ImageFormatProperties)
+getPhysicalDeviceImageFormatProperties physicalDevice
+                                         format
+                                         type'
+                                         tiling
+                                         usage
+                                         flags = liftIO . evalContT $ do
+  let vkGetPhysicalDeviceImageFormatPropertiesPtr = pVkGetPhysicalDeviceImageFormatProperties (case physicalDevice of PhysicalDevice{instanceCmds} -> instanceCmds)
+  lift $ unless (vkGetPhysicalDeviceImageFormatPropertiesPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetPhysicalDeviceImageFormatProperties is null" Nothing Nothing
+  let vkGetPhysicalDeviceImageFormatProperties' = mkVkGetPhysicalDeviceImageFormatProperties vkGetPhysicalDeviceImageFormatPropertiesPtr
+  pPImageFormatProperties <- ContT (withZeroCStruct @ImageFormatProperties)
+  r <- lift $ traceAroundEvent "vkGetPhysicalDeviceImageFormatProperties" (vkGetPhysicalDeviceImageFormatProperties'
+                                                                             (physicalDeviceHandle (physicalDevice))
+                                                                             (format)
+                                                                             (type')
+                                                                             (tiling)
+                                                                             (usage)
+                                                                             (flags)
+                                                                             (pPImageFormatProperties))
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+  pImageFormatProperties <- lift $ peekCStruct @ImageFormatProperties pPImageFormatProperties
+  pure $ (pImageFormatProperties)
+
+
+-- | VkPhysicalDeviceProperties - Structure specifying physical device
+-- properties
+--
+-- = Description
+--
+-- The value of @apiVersion@ /may/ be different than the version returned
+-- by 'Vulkan.Core11.DeviceInitialization.enumerateInstanceVersion'; either
+-- higher or lower. In such cases, the application /must/ not use
+-- functionality that exceeds the version of Vulkan associated with a given
+-- object. The @pApiVersion@ parameter returned by
+-- 'Vulkan.Core11.DeviceInitialization.enumerateInstanceVersion' is the
+-- version associated with a 'Vulkan.Core10.Handles.Instance' and its
+-- children, except for a 'Vulkan.Core10.Handles.PhysicalDevice' and its
+-- children. 'PhysicalDeviceProperties'::@apiVersion@ is the version
+-- associated with a 'Vulkan.Core10.Handles.PhysicalDevice' and its
+-- children.
+--
+-- The encoding of @driverVersion@ is implementation-defined. It /may/ not
+-- use the same encoding as @apiVersion@. Applications should follow
+-- information from the /vendor/ on how to extract the version information
+-- from @driverVersion@.
+--
+-- On implementations that claim support for the
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
+--
+-- These /may/ include performance profiles, hardware errata, or other
+-- characteristics.
+--
+-- The /vendor/ identified by @vendorID@ is the entity responsible for the
+-- most salient characteristics of the underlying implementation of the
+-- 'Vulkan.Core10.Handles.PhysicalDevice' being queried.
+--
+-- For example, in the case of a discrete GPU implementation, this /should/
+-- be the GPU chipset vendor. In the case of a hardware accelerator
+-- integrated into a system-on-chip (SoC), this /should/ be the supplier of
+-- the silicon IP used to create the accelerator.
+--
+-- If the vendor has a
+-- <https://pcisig.com/membership/member-companies PCI vendor ID>, the low
+-- 16 bits of @vendorID@ /must/ contain that PCI vendor ID, and the
+-- remaining bits /must/ be zero. Otherwise, the value returned /must/ be a
+-- valid Khronos vendor ID, obtained as described in the
+-- <https://registry.khronos.org/vulkan/specs/latest/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
+-- in the 'Vulkan.Core10.Enums.VendorId.VendorId' type.
+--
+-- The vendor is also responsible for the value returned in @deviceID@. If
+-- the implementation is driven primarily by a
+-- <https://pcisig.com/ PCI device> with a
+-- <https://pcisig.com/ PCI device ID>, the low 16 bits of @deviceID@
+-- /must/ contain that PCI device ID, and the remaining bits /must/ be
+-- zero. Otherwise, the choice of what values to return /may/ be dictated
+-- by operating system or platform policies - but /should/ uniquely
+-- identify both the device version and any major configuration options
+-- (for example, core count in the case of multicore devices).
+--
+-- The same device ID /should/ be used for all physical implementations of
+-- that device version and configuration. For example, all uses of a
+-- specific silicon IP GPU version and configuration /should/ use the same
+-- device ID, even if those uses occur in different SoCs.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
+-- 'PhysicalDeviceLimits',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',
+-- 'PhysicalDeviceSparseProperties',
+-- 'Vulkan.Core10.Enums.PhysicalDeviceType.PhysicalDeviceType',
+-- 'getPhysicalDeviceProperties'
+data PhysicalDeviceProperties = PhysicalDeviceProperties
+  { -- | @apiVersion@ is the version of Vulkan supported by the device, encoded
+    -- as described in
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#extendingvulkan-coreversions-versionnumbers>.
+    apiVersion :: Word32
+  , -- | @driverVersion@ is the vendor-specified version of the driver.
+    driverVersion :: Word32
+  , -- | @vendorID@ is a unique identifier for the /vendor/ (see below) of the
+    -- physical device.
+    vendorID :: Word32
+  , -- | @deviceID@ is a unique identifier for the physical device among devices
+    -- available from the vendor.
+    deviceID :: Word32
+  , -- | @deviceType@ is a
+    -- 'Vulkan.Core10.Enums.PhysicalDeviceType.PhysicalDeviceType' specifying
+    -- the type of device.
+    deviceType :: PhysicalDeviceType
+  , -- | @deviceName@ is an array of
+    -- 'Vulkan.Core10.APIConstants.MAX_PHYSICAL_DEVICE_NAME_SIZE' @char@
+    -- containing a null-terminated UTF-8 string which is the name of the
+    -- device.
+    deviceName :: ByteString
+  , -- | @pipelineCacheUUID@ is an array of
+    -- 'Vulkan.Core10.APIConstants.UUID_SIZE' @uint8_t@ values representing a
+    -- universally unique identifier for the device.
+    pipelineCacheUUID :: ByteString
+  , -- | @limits@ is the 'PhysicalDeviceLimits' structure specifying
+    -- device-specific limits of the physical device. See
+    -- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#sparsememory-physicalprops Sparse Properties>
+    -- for details.
+    sparseProperties :: PhysicalDeviceSparseProperties
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceProperties)
+#endif
+deriving instance Show PhysicalDeviceProperties
+
+instance ToCStruct PhysicalDeviceProperties where
+  withCStruct x f = allocaBytes 824 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceProperties{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr Word32)) (apiVersion)
+    poke ((p `plusPtr` 4 :: Ptr Word32)) (driverVersion)
+    poke ((p `plusPtr` 8 :: Ptr Word32)) (vendorID)
+    poke ((p `plusPtr` 12 :: Ptr Word32)) (deviceID)
+    poke ((p `plusPtr` 16 :: Ptr PhysicalDeviceType)) (deviceType)
+    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 20 :: Ptr (FixedArray MAX_PHYSICAL_DEVICE_NAME_SIZE CChar))) (deviceName)
+    pokeFixedLengthByteString ((p `plusPtr` 276 :: Ptr (FixedArray UUID_SIZE Word8))) (pipelineCacheUUID)
+    poke ((p `plusPtr` 296 :: Ptr PhysicalDeviceLimits)) (limits)
+    poke ((p `plusPtr` 800 :: Ptr PhysicalDeviceSparseProperties)) (sparseProperties)
+    f
+  cStructSize = 824
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 12 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 16 :: Ptr PhysicalDeviceType)) (zero)
+    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 20 :: Ptr (FixedArray MAX_PHYSICAL_DEVICE_NAME_SIZE CChar))) (mempty)
+    pokeFixedLengthByteString ((p `plusPtr` 276 :: Ptr (FixedArray UUID_SIZE Word8))) (mempty)
+    poke ((p `plusPtr` 296 :: Ptr PhysicalDeviceLimits)) (zero)
+    poke ((p `plusPtr` 800 :: Ptr PhysicalDeviceSparseProperties)) (zero)
+    f
+
+instance FromCStruct PhysicalDeviceProperties where
+  peekCStruct p = do
+    apiVersion <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))
+    driverVersion <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))
+    vendorID <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))
+    deviceID <- peek @Word32 ((p `plusPtr` 12 :: Ptr Word32))
+    deviceType <- peek @PhysicalDeviceType ((p `plusPtr` 16 :: Ptr PhysicalDeviceType))
+    deviceName <- packCString (lowerArrayPtr ((p `plusPtr` 20 :: Ptr (FixedArray MAX_PHYSICAL_DEVICE_NAME_SIZE CChar))))
+    pipelineCacheUUID <- peekByteStringFromSizedVectorPtr ((p `plusPtr` 276 :: Ptr (FixedArray UUID_SIZE Word8)))
+    limits <- peekCStruct @PhysicalDeviceLimits ((p `plusPtr` 296 :: Ptr PhysicalDeviceLimits))
+    sparseProperties <- peekCStruct @PhysicalDeviceSparseProperties ((p `plusPtr` 800 :: Ptr PhysicalDeviceSparseProperties))
+    pure $ PhysicalDeviceProperties
+             apiVersion
+             driverVersion
+             vendorID
+             deviceID
+             deviceType
+             deviceName
+             pipelineCacheUUID
+             limits
+             sparseProperties
+
+instance Storable PhysicalDeviceProperties where
+  sizeOf ~_ = 824
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceProperties where
+  zero = PhysicalDeviceProperties
+           zero
+           zero
+           zero
+           zero
+           zero
+           mempty
+           mempty
+           zero
+           zero
+
+
+-- | VkApplicationInfo - Structure specifying application information
+--
+-- = Description
+--
+-- Vulkan 1.0 implementations were required to return
+-- 'Vulkan.Core10.Enums.Result.ERROR_INCOMPATIBLE_DRIVER' if @apiVersion@
+-- was larger than 1.0. Implementations that support Vulkan 1.1 or later
+-- /must/ not return 'Vulkan.Core10.Enums.Result.ERROR_INCOMPATIBLE_DRIVER'
+-- for any value of @apiVersion@ .
+--
+-- Because Vulkan 1.0 implementations /may/ fail with
+-- 'Vulkan.Core10.Enums.Result.ERROR_INCOMPATIBLE_DRIVER', applications
+-- /should/ determine the version of Vulkan available before calling
+-- 'createInstance'. If the 'getInstanceProcAddr' returns @NULL@ for
+-- 'Vulkan.Core11.DeviceInitialization.enumerateInstanceVersion', it is a
+-- Vulkan 1.0 implementation. Otherwise, the application /can/ call
+-- 'Vulkan.Core11.DeviceInitialization.enumerateInstanceVersion' to
+-- determine the version of Vulkan.
+--
+-- As long as the instance supports at least Vulkan 1.1, an application
+-- /can/ use different versions of Vulkan with an instance than it does
+-- with a device or physical device.
+--
+-- The Khronos validation layers will treat @apiVersion@ as the highest API
+-- version the application targets, and will validate API usage against the
+-- minimum of that version and the implementation version (instance or
+-- device, depending on context). If an application tries to use
+-- functionality from a greater version than this, a validation error will
+-- be triggered.
+--
+-- For example, if the instance supports Vulkan 1.1 and three physical
+-- devices support Vulkan 1.0, Vulkan 1.1, and Vulkan 1.2, respectively,
+-- and if the application sets @apiVersion@ to 1.2, the application /can/
+-- use the following versions of Vulkan:
+--
+-- -   Vulkan 1.0 /can/ be used with the instance and with all physical
+--     devices.
+--
+-- -   Vulkan 1.1 /can/ be used with the instance and with the physical
+--     devices that support Vulkan 1.1 and Vulkan 1.2.
+--
+-- -   Vulkan 1.2 /can/ be used with the physical device that supports
+--     Vulkan 1.2.
+--
+-- If we modify the above example so that the application sets @apiVersion@
+-- to 1.1, then the application /must/ not use Vulkan 1.2 functionality on
+-- the physical device that supports Vulkan 1.2.
+--
+-- Providing a @NULL@ 'InstanceCreateInfo'::@pApplicationInfo@ or providing
+-- an @apiVersion@ of 0 is equivalent to providing an @apiVersion@ of
+-- @VK_MAKE_API_VERSION(0,1,0,0)@.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkApplicationInfo-apiVersion-04010# If @apiVersion@ is not
+--     @0@, then it /must/ be greater than or equal to
+--     'Vulkan.Core10.API_VERSION_1_0'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkApplicationInfo-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_APPLICATION_INFO'
+--
+-- -   #VUID-VkApplicationInfo-pNext-pNext# @pNext@ /must/ be @NULL@
+--
+-- -   #VUID-VkApplicationInfo-pApplicationName-parameter# If
+--     @pApplicationName@ is not @NULL@, @pApplicationName@ /must/ be a
+--     null-terminated UTF-8 string
+--
+-- -   #VUID-VkApplicationInfo-pEngineName-parameter# If @pEngineName@ is
+--     not @NULL@, @pEngineName@ /must/ be a null-terminated UTF-8 string
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
+-- 'InstanceCreateInfo', 'Vulkan.Core10.Enums.StructureType.StructureType'
+data ApplicationInfo = ApplicationInfo
+  { -- | @pApplicationName@ is @NULL@ or is a pointer to a null-terminated UTF-8
+    -- string containing the name of the application.
+    applicationName :: Maybe ByteString
+  , -- | @applicationVersion@ is an unsigned integer variable containing the
+    -- developer-supplied version number of the application.
+    applicationVersion :: Word32
+  , -- | @pEngineName@ is @NULL@ or is a pointer to a null-terminated UTF-8
+    -- string containing the name of the engine (if any) used to create the
+    -- application.
+    engineName :: Maybe ByteString
+  , -- | @engineVersion@ is an unsigned integer variable containing the
+    -- developer-supplied version number of the engine used to create the
+    -- application.
+    engineVersion :: Word32
+  , -- | @apiVersion@ /must/ be the highest version of Vulkan that the
+    -- application is designed to use, encoded as described in
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#extendingvulkan-coreversions-versionnumbers>.
+    -- The patch version number specified in @apiVersion@ is ignored when
+    -- creating an instance object. The variant version of the instance /must/
+    -- match that requested in @apiVersion@.
+    apiVersion :: Word32
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (ApplicationInfo)
+#endif
+deriving instance Show ApplicationInfo
+
+instance ToCStruct ApplicationInfo where
+  withCStruct x f = allocaBytes 48 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p ApplicationInfo{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_APPLICATION_INFO)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    pApplicationName'' <- case (applicationName) of
+      Nothing -> pure nullPtr
+      Just j -> ContT $ useAsCString (j)
+    lift $ poke ((p `plusPtr` 16 :: Ptr (Ptr CChar))) pApplicationName''
+    lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) (applicationVersion)
+    pEngineName'' <- case (engineName) of
+      Nothing -> pure nullPtr
+      Just j -> ContT $ useAsCString (j)
+    lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr CChar))) pEngineName''
+    lift $ poke ((p `plusPtr` 40 :: Ptr Word32)) (engineVersion)
+    lift $ poke ((p `plusPtr` 44 :: Ptr Word32)) (apiVersion)
+    lift $ f
+  cStructSize = 48
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_APPLICATION_INFO)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 40 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 44 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct ApplicationInfo where
+  peekCStruct p = do
+    pApplicationName <- peek @(Ptr CChar) ((p `plusPtr` 16 :: Ptr (Ptr CChar)))
+    pApplicationName' <- maybePeek (\j -> packCString (j)) pApplicationName
+    applicationVersion <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))
+    pEngineName <- peek @(Ptr CChar) ((p `plusPtr` 32 :: Ptr (Ptr CChar)))
+    pEngineName' <- maybePeek (\j -> packCString (j)) pEngineName
+    engineVersion <- peek @Word32 ((p `plusPtr` 40 :: Ptr Word32))
+    apiVersion <- peek @Word32 ((p `plusPtr` 44 :: Ptr Word32))
+    pure $ ApplicationInfo
+             pApplicationName'
+             applicationVersion
+             pEngineName'
+             engineVersion
+             apiVersion
+
+instance Zero ApplicationInfo where
+  zero = ApplicationInfo
+           Nothing
+           zero
+           Nothing
+           zero
+           zero
+
+
+-- | VkInstanceCreateInfo - Structure specifying parameters of a newly
+-- created instance
+--
+-- = Description
+--
+-- To capture events that occur while creating or destroying an instance,
+-- an application /can/ link a
+-- 'Vulkan.Extensions.VK_EXT_debug_report.DebugReportCallbackCreateInfoEXT'
+-- structure or a
+-- 'Vulkan.Extensions.VK_EXT_debug_utils.DebugUtilsMessengerCreateInfoEXT'
+-- structure to the @pNext@ chain of the 'InstanceCreateInfo' structure
+-- passed to 'createInstance'. This callback is only valid for the duration
+-- of the 'createInstance' and the 'destroyInstance' call. Use
+-- 'Vulkan.Extensions.VK_EXT_debug_report.createDebugReportCallbackEXT' or
+-- 'Vulkan.Extensions.VK_EXT_debug_utils.createDebugUtilsMessengerEXT' to
+-- create persistent callback objects.
+--
+-- An application can add additional drivers by including the
+-- 'Vulkan.Extensions.VK_LUNARG_direct_driver_loading.DirectDriverLoadingListLUNARG'
+-- structure in the @pNext@ chain of the 'InstanceCreateInfo' structure
+-- passed to 'createInstance'.
+--
+-- 'Vulkan.Extensions.VK_LUNARG_direct_driver_loading.DirectDriverLoadingListLUNARG'
+-- allows applications to ship drivers with themselves. Only drivers that
+-- are designed to work with it should be used, such as drivers that
+-- implement Vulkan in software or that implement Vulkan by translating it
+-- to a different API. Any driver that requires installation should not be
+-- used, such as hardware drivers.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkInstanceCreateInfo-pNext-04925# If the @pNext@ chain of
+--     'InstanceCreateInfo' includes a
+--     'Vulkan.Extensions.VK_EXT_debug_report.DebugReportCallbackCreateInfoEXT'
+--     structure, the list of enabled extensions in
+--     @ppEnabledExtensionNames@ /must/ contain @VK_EXT_debug_report@
+--
+-- -   #VUID-VkInstanceCreateInfo-pNext-04926# If the @pNext@ chain of
+--     'InstanceCreateInfo' includes a
+--     'Vulkan.Extensions.VK_EXT_debug_utils.DebugUtilsMessengerCreateInfoEXT'
+--     structure, the list of enabled extensions in
+--     @ppEnabledExtensionNames@ /must/ contain @VK_EXT_debug_utils@
+--
+-- -   #VUID-VkInstanceCreateInfo-pNext-06779# If the @pNext@ chain
+--     includes a
+--     'Vulkan.Extensions.VK_EXT_metal_objects.ExportMetalObjectCreateInfoEXT'
+--     structure, its @exportObjectType@ member /must/ be either
+--     'Vulkan.Extensions.VK_EXT_metal_objects.EXPORT_METAL_OBJECT_TYPE_METAL_DEVICE_BIT_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_metal_objects.EXPORT_METAL_OBJECT_TYPE_METAL_COMMAND_QUEUE_BIT_EXT'
+--
+-- -   #VUID-VkInstanceCreateInfo-flags-06559# If @flags@ has the
+--     'Vulkan.Core10.Enums.InstanceCreateFlagBits.INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR'
+--     bit set, the list of enabled extensions in @ppEnabledExtensionNames@
+--     /must/ contain @VK_KHR_portability_enumeration@
+--
+-- -   #VUID-VkInstanceCreateInfo-pNext-09400# If the @pNext@ chain of
+--     'InstanceCreateInfo' includes a
+--     'Vulkan.Extensions.VK_LUNARG_direct_driver_loading.DirectDriverLoadingListLUNARG'
+--     structure, the list of enabled extensions in
+--     @ppEnabledExtensionNames@ /must/ contain
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_LUNARG_direct_driver_loading VK_LUNARG_direct_driver_loading>
+--
+-- -   #VUID-VkInstanceCreateInfo-pNext-10242# If the @pNext@ chain of
+--     'InstanceCreateInfo' includes a
+--     'Vulkan.Extensions.VK_EXT_layer_settings.LayerSettingsCreateInfoEXT'
+--     structure, the list of enabled extensions in
+--     @ppEnabledExtensionNames@ /must/ contain
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_layer_settings VK_EXT_layer_settings>
+--
+-- -   #VUID-VkInstanceCreateInfo-pNext-10243# If the @pNext@ chain of
+--     'InstanceCreateInfo' includes a
+--     'Vulkan.Extensions.VK_EXT_validation_features.ValidationFeaturesEXT'
+--     structure, the list of enabled extensions in
+--     @ppEnabledExtensionNames@ /must/ contain
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_validation_features VK_EXT_validation_features>
+--
+-- -   #VUID-VkInstanceCreateInfo-pNext-10244# If the @pNext@ chain of
+--     'InstanceCreateInfo' includes a
+--     'Vulkan.Extensions.VK_EXT_validation_flags.ValidationFlagsEXT'
+--     structure, the list of enabled extensions in
+--     @ppEnabledExtensionNames@ /must/ contain
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_validation_flags VK_EXT_validation_flags>
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkInstanceCreateInfo-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_INSTANCE_CREATE_INFO'
+--
+-- -   #VUID-VkInstanceCreateInfo-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_debug_report.DebugReportCallbackCreateInfoEXT',
+--     'Vulkan.Extensions.VK_EXT_debug_utils.DebugUtilsMessengerCreateInfoEXT',
+--     'Vulkan.Extensions.VK_LUNARG_direct_driver_loading.DirectDriverLoadingListLUNARG',
+--     'Vulkan.Extensions.VK_EXT_metal_objects.ExportMetalObjectCreateInfoEXT',
+--     'Vulkan.Extensions.VK_EXT_layer_settings.LayerSettingsCreateInfoEXT',
+--     'Vulkan.Extensions.VK_EXT_validation_features.ValidationFeaturesEXT',
+--     or 'Vulkan.Extensions.VK_EXT_validation_flags.ValidationFlagsEXT'
+--
+-- -   #VUID-VkInstanceCreateInfo-sType-unique# The @sType@ value of each
+--     structure in the @pNext@ chain /must/ be unique, with the exception
+--     of structures of type
+--     'Vulkan.Extensions.VK_EXT_debug_utils.DebugUtilsMessengerCreateInfoEXT',
+--     'Vulkan.Extensions.VK_EXT_metal_objects.ExportMetalObjectCreateInfoEXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_layer_settings.LayerSettingsCreateInfoEXT'
+--
+-- -   #VUID-VkInstanceCreateInfo-flags-parameter# @flags@ /must/ be a
+--     valid combination of
+--     'Vulkan.Core10.Enums.InstanceCreateFlagBits.InstanceCreateFlagBits'
+--     values
+--
+-- -   #VUID-VkInstanceCreateInfo-pApplicationInfo-parameter# If
+--     @pApplicationInfo@ is not @NULL@, @pApplicationInfo@ /must/ be a
+--     valid pointer to a valid 'ApplicationInfo' structure
+--
+-- -   #VUID-VkInstanceCreateInfo-ppEnabledLayerNames-parameter# If
+--     @enabledLayerCount@ is not @0@, @ppEnabledLayerNames@ /must/ be a
+--     valid pointer to an array of @enabledLayerCount@ null-terminated
+--     UTF-8 strings
+--
+-- -   #VUID-VkInstanceCreateInfo-ppEnabledExtensionNames-parameter# If
+--     @enabledExtensionCount@ is not @0@, @ppEnabledExtensionNames@ /must/
+--     be a valid pointer to an array of @enabledExtensionCount@
+--     null-terminated UTF-8 strings
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
+-- 'ApplicationInfo',
+-- 'Vulkan.Core10.Enums.InstanceCreateFlagBits.InstanceCreateFlags',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType', 'createInstance'
+data InstanceCreateInfo (es :: [Type]) = InstanceCreateInfo
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
+    next :: Chain es
+  , -- | @flags@ is a bitmask of
+    -- 'Vulkan.Core10.Enums.InstanceCreateFlagBits.InstanceCreateFlagBits'
+    -- indicating the behavior of the instance.
+    flags :: InstanceCreateFlags
+  , -- | @pApplicationInfo@ is @NULL@ or a pointer to a 'ApplicationInfo'
+    -- structure. If not @NULL@, this information helps implementations
+    -- recognize behavior inherent to classes of applications.
+    -- 'ApplicationInfo' is defined in detail below.
+    applicationInfo :: Maybe ApplicationInfo
+  , -- | @ppEnabledLayerNames@ is a pointer to an array of @enabledLayerCount@
+    -- null-terminated UTF-8 strings containing the names of layers to enable
+    -- for the created instance. The layers are loaded in the order they are
+    -- 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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#extendingvulkan-layers>
+    -- section for further details.
+    enabledLayerNames :: Vector ByteString
+  , -- | @ppEnabledExtensionNames@ is a pointer to an array of
+    -- @enabledExtensionCount@ null-terminated UTF-8 strings containing the
+    -- names of extensions to enable.
+    enabledExtensionNames :: Vector ByteString
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (InstanceCreateInfo (es :: [Type]))
+#endif
+deriving instance Show (Chain es) => Show (InstanceCreateInfo es)
+
+instance Extensible InstanceCreateInfo where
+  extensibleTypeName = "InstanceCreateInfo"
+  setNext InstanceCreateInfo{..} next' = InstanceCreateInfo{next = next', ..}
+  getNext InstanceCreateInfo{..} = next
+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends InstanceCreateInfo e => b) -> Maybe b
+  extends _ f
+    | Just Refl <- eqT @e @DirectDriverLoadingListLUNARG = Just f
+    | Just Refl <- eqT @e @ExportMetalObjectCreateInfoEXT = Just f
+    | Just Refl <- eqT @e @DebugUtilsMessengerCreateInfoEXT = Just f
+    | Just Refl <- eqT @e @LayerSettingsCreateInfoEXT = Just f
+    | Just Refl <- eqT @e @ValidationFeaturesEXT = Just f
+    | Just Refl <- eqT @e @ValidationFlagsEXT = Just f
+    | Just Refl <- eqT @e @DebugReportCallbackCreateInfoEXT = Just f
+    | otherwise = Nothing
+
+instance ( Extendss InstanceCreateInfo es
+         , PokeChain es ) => ToCStruct (InstanceCreateInfo es) where
+  withCStruct x f = allocaBytes 64 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p InstanceCreateInfo{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_INSTANCE_CREATE_INFO)
+    pNext'' <- fmap castPtr . ContT $ withChain (next)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
+    lift $ poke ((p `plusPtr` 16 :: Ptr InstanceCreateFlags)) (flags)
+    pApplicationInfo'' <- case (applicationInfo) of
+      Nothing -> pure nullPtr
+      Just j -> ContT $ withCStruct (j)
+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr ApplicationInfo))) pApplicationInfo''
+    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (enabledLayerNames)) :: Word32))
+    pPpEnabledLayerNames' <- ContT $ allocaBytes @(Ptr CChar) ((Data.Vector.length (enabledLayerNames)) * 8)
+    Data.Vector.imapM_ (\i e -> do
+      ppEnabledLayerNames'' <- ContT $ useAsCString (e)
+      lift $ poke (pPpEnabledLayerNames' `plusPtr` (8 * (i)) :: Ptr (Ptr CChar)) ppEnabledLayerNames'') (enabledLayerNames)
+    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr (Ptr CChar)))) (pPpEnabledLayerNames')
+    lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (enabledExtensionNames)) :: Word32))
+    pPpEnabledExtensionNames' <- ContT $ allocaBytes @(Ptr CChar) ((Data.Vector.length (enabledExtensionNames)) * 8)
+    Data.Vector.imapM_ (\i e -> do
+      ppEnabledExtensionNames'' <- ContT $ useAsCString (e)
+      lift $ poke (pPpEnabledExtensionNames' `plusPtr` (8 * (i)) :: Ptr (Ptr CChar)) ppEnabledExtensionNames'') (enabledExtensionNames)
+    lift $ poke ((p `plusPtr` 56 :: Ptr (Ptr (Ptr CChar)))) (pPpEnabledExtensionNames')
+    lift $ f
+  cStructSize = 64
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_INSTANCE_CREATE_INFO)
+    pNext' <- fmap castPtr . ContT $ withZeroChain @es
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
+    lift $ f
+
+instance ( Extendss InstanceCreateInfo es
+         , PeekChain es ) => FromCStruct (InstanceCreateInfo es) where
+  peekCStruct p = do
+    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
+    next <- peekChain (castPtr pNext)
+    flags <- peek @InstanceCreateFlags ((p `plusPtr` 16 :: Ptr InstanceCreateFlags))
+    pApplicationInfo <- peek @(Ptr ApplicationInfo) ((p `plusPtr` 24 :: Ptr (Ptr ApplicationInfo)))
+    pApplicationInfo' <- maybePeek (\j -> peekCStruct @ApplicationInfo (j)) pApplicationInfo
+    enabledLayerCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))
+    ppEnabledLayerNames <- peek @(Ptr (Ptr CChar)) ((p `plusPtr` 40 :: Ptr (Ptr (Ptr CChar))))
+    ppEnabledLayerNames' <- generateM (fromIntegral enabledLayerCount) (\i -> packCString =<< peek ((ppEnabledLayerNames `advancePtrBytes` (8 * (i)) :: Ptr (Ptr CChar))))
+    enabledExtensionCount <- peek @Word32 ((p `plusPtr` 48 :: Ptr Word32))
+    ppEnabledExtensionNames <- peek @(Ptr (Ptr CChar)) ((p `plusPtr` 56 :: Ptr (Ptr (Ptr CChar))))
+    ppEnabledExtensionNames' <- generateM (fromIntegral enabledExtensionCount) (\i -> packCString =<< peek ((ppEnabledExtensionNames `advancePtrBytes` (8 * (i)) :: Ptr (Ptr CChar))))
+    pure $ InstanceCreateInfo
+             next
+             flags
+             pApplicationInfo'
+             ppEnabledLayerNames'
+             ppEnabledExtensionNames'
+
+instance es ~ '[] => Zero (InstanceCreateInfo es) where
+  zero = InstanceCreateInfo
+           ()
+           zero
+           Nothing
+           mempty
+           mempty
+
+
+-- | VkQueueFamilyProperties - Structure providing information about a queue
+-- family
+--
+-- = Description
+--
+-- The value returned in @minImageTransferGranularity@ has a unit of
+-- compressed texel blocks for images having a block-compressed format, and
+-- a unit of texels otherwise.
+--
+-- Possible values of @minImageTransferGranularity@ are:
+--
+-- -   (0,0,0) specifies that only whole mip levels /must/ be transferred
+--     using the image transfer operations on the corresponding queues. In
+--     this case, the following restrictions apply to all offset and extent
+--     parameters of image transfer operations:
+--
+--     -   The @x@, @y@, and @z@ members of a
+--         'Vulkan.Core10.FundamentalTypes.Offset3D' parameter /must/
+--         always be zero.
+--
+--     -   The @width@, @height@, and @depth@ members of a
+--         'Vulkan.Core10.FundamentalTypes.Extent3D' parameter /must/
+--         always match the width, height, and depth of the image
+--         subresource corresponding to the parameter, respectively.
+--
+-- -   (Ax, Ay, Az) where Ax, Ay, and Az are all integer powers of two. In
+--     this case the following restrictions apply to all image transfer
+--     operations:
+--
+--     -   @x@, @y@, and @z@ of a 'Vulkan.Core10.FundamentalTypes.Offset3D'
+--         parameter /must/ be integer multiples of Ax, Ay, and Az,
+--         respectively.
+--
+--     -   @width@ of a 'Vulkan.Core10.FundamentalTypes.Extent3D' parameter
+--         /must/ be an integer multiple of Ax, or else @x@ + @width@
+--         /must/ equal the width of the image subresource corresponding to
+--         the parameter.
+--
+--     -   @height@ of a 'Vulkan.Core10.FundamentalTypes.Extent3D'
+--         parameter /must/ be an integer multiple of Ay, or else @y@ +
+--         @height@ /must/ equal the height of the image subresource
+--         corresponding to the parameter.
+--
+--     -   @depth@ of a 'Vulkan.Core10.FundamentalTypes.Extent3D' parameter
+--         /must/ be an integer multiple of Az, or else @z@ + @depth@
+--         /must/ equal the depth of the image subresource corresponding to
+--         the parameter.
+--
+--     -   If the format of the image corresponding to the parameters is
+--         one of the block-compressed formats then for the purposes of the
+--         above calculations the granularity /must/ be scaled up by the
+--         compressed texel block dimensions.
+--
+-- Queues supporting graphics and\/or compute and\/or, if the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance11 maintenance11>
+-- feature is supported, transfer operations, /must/ report (1,1,1) in
+-- @minImageTransferGranularity@, meaning that there are no additional
+-- restrictions on the granularity of image transfer operations for these
+-- queues. Other queues supporting image transfer operations are only
+-- /required/ to support whole mip level transfers, thus
+-- @minImageTransferGranularity@ for queues belonging to such queue
+-- families /may/ be (0,0,0).
+--
+-- If the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance11 maintenance11>
+-- feature is supported,
+-- 'Vulkan.Extensions.VK_KHR_maintenance11.QueueFamilyOptimalImageTransferGranularityPropertiesKHR'::@optimalImageTransferGranularity@
+-- /can/ be used to determine the optimal image transfer granularity for a
+-- particular queue family.
+--
+-- The
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-device Device Memory>
+-- section describes memory properties queried from the physical device.
+--
+-- For physical device feature queries see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features Features>
+-- chapter.
+--
+-- = 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',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.QueueFamilyProperties2',
+-- 'Vulkan.Core10.Enums.QueueFlagBits.QueueFlags',
+-- 'getPhysicalDeviceQueueFamilyProperties'
+data QueueFamilyProperties = QueueFamilyProperties
+  { -- | @queueFlags@ is a bitmask of
+    -- 'Vulkan.Core10.Enums.QueueFlagBits.QueueFlagBits' indicating
+    -- capabilities of the queues in this queue family.
+    queueFlags :: QueueFlags
+  , -- | @queueCount@ is the unsigned integer count of queues in this queue
+    -- family. Each queue family /must/ support at least one queue.
+    queueCount :: Word32
+  , -- | @timestampValidBits@ is the unsigned integer count of meaningful bits in
+    -- the timestamps written via
+    -- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.cmdWriteTimestamp2'
+    -- or 'Vulkan.Core10.CommandBufferBuilding.cmdWriteTimestamp'. The valid
+    -- range for the count is 36 to 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.
+    minImageTransferGranularity :: Extent3D
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (QueueFamilyProperties)
+#endif
+deriving instance Show QueueFamilyProperties
+
+instance ToCStruct QueueFamilyProperties where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p QueueFamilyProperties{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr QueueFlags)) (queueFlags)
+    poke ((p `plusPtr` 4 :: Ptr Word32)) (queueCount)
+    poke ((p `plusPtr` 8 :: Ptr Word32)) (timestampValidBits)
+    poke ((p `plusPtr` 12 :: Ptr Extent3D)) (minImageTransferGranularity)
+    f
+  cStructSize = 24
+  cStructAlignment = 4
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 12 :: Ptr Extent3D)) (zero)
+    f
+
+instance FromCStruct QueueFamilyProperties where
+  peekCStruct p = do
+    queueFlags <- peek @QueueFlags ((p `plusPtr` 0 :: Ptr QueueFlags))
+    queueCount <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))
+    timestampValidBits <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))
+    minImageTransferGranularity <- peekCStruct @Extent3D ((p `plusPtr` 12 :: Ptr Extent3D))
+    pure $ QueueFamilyProperties
+             queueFlags
+             queueCount
+             timestampValidBits
+             minImageTransferGranularity
+
+instance Storable QueueFamilyProperties where
+  sizeOf ~_ = 24
+  alignment ~_ = 4
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero QueueFamilyProperties where
+  zero = QueueFamilyProperties
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkPhysicalDeviceMemoryProperties - Structure specifying physical device
+-- memory properties
+--
+-- = Description
+--
+-- The 'PhysicalDeviceMemoryProperties' structure describes a number of
+-- /memory heaps/ as well as a number of /memory types/ that /can/ be used
+-- to access memory allocated in those heaps. Each heap describes a memory
+-- resource of a particular size, and each memory type describes a set of
+-- memory properties (e.g. host cached vs. uncached) that /can/ be used
+-- with a given memory heap. Allocations using a particular memory type
+-- will consume resources from the heap indicated by that memory type’s
+-- heap index. More than one memory type /may/ share each heap, and the
+-- heaps and memory types provide a mechanism to advertise an accurate size
+-- of the physical memory resources while allowing the memory to be used
+-- with a variety of different properties.
+--
+-- The number of memory heaps is given by @memoryHeapCount@ and is less
+-- than or equal to 'Vulkan.Core10.APIConstants.MAX_MEMORY_HEAPS'. Each
+-- heap is described by an element of the @memoryHeaps@ array as a
+-- 'MemoryHeap' structure. The number of memory types available across all
+-- memory heaps is given by @memoryTypeCount@ and is less than or equal to
+-- 'Vulkan.Core10.APIConstants.MAX_MEMORY_TYPES'. Each memory type is
+-- described by an element of the @memoryTypes@ array as a 'MemoryType'
+-- structure.
+--
+-- At least one heap /must/ include
+-- 'Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_DEVICE_LOCAL_BIT' in
+-- 'MemoryHeap'::@flags@. If there are multiple heaps that all have similar
+-- performance characteristics, they /may/ all include
+-- 'Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_DEVICE_LOCAL_BIT'.
+-- In a unified memory architecture (UMA) system there is often only a
+-- single memory heap which is considered to be equally “local” to the host
+-- and to the device, and such an implementation /must/ advertise the heap
+-- as device-local.
+--
+-- Memory contents within a tile memory heap, denoted by
+-- 'Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_TILE_MEMORY_BIT_QCOM',
+-- are only visible across the command buffers executed in a single command
+-- buffer submission batch within a 'Vulkan.Core10.Queue.queueSubmit' or
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.queueSubmit2' call.
+-- If the
+-- 'Vulkan.Extensions.VK_QCOM_tile_memory_heap.PhysicalDeviceTileMemoryHeapPropertiesQCOM'::@queueSubmitBoundary@
+-- property is set, the visibility is extended across all batches in the
+-- submit call. Memory contents are discarded and made undefined after the
+-- respective submission batch or submit call. Tile memory /may/ have
+-- different performance characteristics than non tile memory. Tile memory
+-- /can/ be used simultaneously by command buffers in other queues without
+-- invalidating each others contents. Collectively, these rules define the
+-- /tile memory scope/.
+--
+-- Tile memory heaps work differently than most heaps as it is allowing
+-- addressing on device cache memory. Therefore, the heap’s address space
+-- is aliased across the different queues, with each queue retaining its
+-- individual copy of the heap. The implementation takes care of any
+-- required saving and restoring of the tile memory contents.
+--
+-- Effectively, this means that the same address in the heap in different
+-- queues have simultaneously different defined contents and the contents
+-- has a lifespan scoped to the submit or batch for that specific queues.
+--
+-- Each memory type returned by 'getPhysicalDeviceMemoryProperties' /must/
+-- have its @propertyFlags@ set to one of the following values:
+--
+-- -   0
+--
+-- -   'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_VISIBLE_BIT'
+--     |
+--     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_COHERENT_BIT'
+--
+-- -   'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_VISIBLE_BIT'
+--     |
+--     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_CACHED_BIT'
+--
+-- -   'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_VISIBLE_BIT'
+--     |
+--     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_CACHED_BIT'
+--     |
+--     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_COHERENT_BIT'
+--
+-- -   'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_LOCAL_BIT'
+--
+-- -   'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_LOCAL_BIT'
+--     |
+--     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_VISIBLE_BIT'
+--     |
+--     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_COHERENT_BIT'
+--
+-- -   'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_LOCAL_BIT'
+--     |
+--     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_VISIBLE_BIT'
+--     |
+--     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_CACHED_BIT'
+--
+-- -   'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_LOCAL_BIT'
+--     |
+--     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_VISIBLE_BIT'
+--     |
+--     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_CACHED_BIT'
+--     |
+--     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_COHERENT_BIT'
+--
+-- -   'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_LOCAL_BIT'
+--     |
+--     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT'
+--
+-- -   'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_PROTECTED_BIT'
+--
+-- -   'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_PROTECTED_BIT'
+--     |
+--     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_LOCAL_BIT'
+--
+-- -   'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_VISIBLE_BIT'
+--     |
+--     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_COHERENT_BIT'
+--     |
+--     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD'
+--
+-- -   'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_VISIBLE_BIT'
+--     |
+--     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_CACHED_BIT'
+--     |
+--     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_COHERENT_BIT'
+--     |
+--     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD'
+--
+-- -   'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_LOCAL_BIT'
+--     |
+--     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD'
+--
+-- -   'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_LOCAL_BIT'
+--     |
+--     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_VISIBLE_BIT'
+--     |
+--     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_COHERENT_BIT'
+--     |
+--     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD'
+--
+-- -   'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_LOCAL_BIT'
+--     |
+--     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_VISIBLE_BIT'
+--     |
+--     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_CACHED_BIT'
+--     |
+--     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_COHERENT_BIT'
+--     |
+--     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD'
+--
+-- -   'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_VISIBLE_BIT'
+--     |
+--     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_COHERENT_BIT'
+--     |
+--     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD'
+--     |
+--     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD'
+--
+-- -   'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_VISIBLE_BIT'
+--     |
+--     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_CACHED_BIT'
+--     |
+--     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_COHERENT_BIT'
+--     |
+--     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD'
+--     |
+--     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD'
+--
+-- -   'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_LOCAL_BIT'
+--     |
+--     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD'
+--     |
+--     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD'
+--
+-- -   'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_LOCAL_BIT'
+--     |
+--     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_VISIBLE_BIT'
+--     |
+--     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_COHERENT_BIT'
+--     |
+--     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD'
+--     |
+--     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD'
+--
+-- -   'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_LOCAL_BIT'
+--     |
+--     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_VISIBLE_BIT'
+--     |
+--     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_CACHED_BIT'
+--     |
+--     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_COHERENT_BIT'
+--     |
+--     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD'
+--     |
+--     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD'
+--
+-- -   'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_LOCAL_BIT'
+--     |
+--     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_RDMA_CAPABLE_BIT_NV'
+--
+-- There /must/ be at least one memory type with both the
+-- 'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_VISIBLE_BIT'
+-- and
+-- 'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_COHERENT_BIT'
+-- bits set in its @propertyFlags@. There /must/ be at least one memory
+-- type with the
+-- 'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_LOCAL_BIT'
+-- bit set in its @propertyFlags@. If the
+-- <https://registry.khronos.org/vulkan/specs/latest/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@.
+--
+-- For each pair of elements __X__ and __Y__ returned in @memoryTypes@,
+-- __X__ /must/ be placed at a lower index position than __Y__ if:
+--
+-- -   the set of bit flags returned in the @propertyFlags@ member of __X__
+--     is a strict subset of the set of bit flags returned in the
+--     @propertyFlags@ member of __Y__; or
+--
+-- -   the @propertyFlags@ members of __X__ and __Y__ are equal, and __X__
+--     belongs to a memory heap with greater performance (as determined in
+--     an implementation-specific manner) ; or
+--
+-- -   the @propertyFlags@ members of __Y__ includes
+--     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD'
+--     or
+--     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD'
+--     and __X__ does not
+--
+-- There is no ordering requirement between __X__ and __Y__ elements for
+-- 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://registry.khronos.org/vulkan/specs/latest/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
+-- 'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_VISIBLE_BIT'
+-- |
+-- 'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_COHERENT_BIT',
+-- the list would still be in a valid order.
+--
+-- There may be a performance penalty for using device coherent or uncached
+-- device memory types, and using these accidentally is undesirable. In
+-- order to avoid this, memory types with these properties always appear at
+-- the end of the list; but are subject to the same rules otherwise.
+--
+-- This ordering requirement enables applications to use a simple search
+-- loop to select the desired memory type along the lines of:
+--
+-- > // Find a memory in `memoryTypeBitsRequirement` that includes all of `requiredProperties`
+-- > int32_t findProperties(const VkPhysicalDeviceMemoryProperties* pMemoryProperties,
+-- >                        uint32_t memoryTypeBitsRequirement,
+-- >                        VkMemoryPropertyFlags requiredProperties) {
+-- >     const uint32_t memoryCount = pMemoryProperties->memoryTypeCount;
+-- >     for (uint32_t memoryIndex = 0; memoryIndex < memoryCount; ++memoryIndex) {
+-- >         const uint32_t memoryTypeBits = (1 << memoryIndex);
+-- >         const bool isRequiredMemoryType = memoryTypeBitsRequirement & memoryTypeBits;
+-- >
+-- >         const VkMemoryPropertyFlags properties =
+-- >             pMemoryProperties->memoryTypes[memoryIndex].propertyFlags;
+-- >         const bool hasRequiredProperties =
+-- >             (properties & requiredProperties) == requiredProperties;
+-- >
+-- >         if (isRequiredMemoryType && hasRequiredProperties)
+-- >             return static_cast<int32_t>(memoryIndex);
+-- >     }
+-- >
+-- >     // failed to find memory type
+-- >     return -1;
+-- > }
+-- >
+-- > // Try to find an optimal memory type, or if it does not exist try fallback memory type
+-- > // `device` is the VkDevice
+-- > // `image` is the VkImage that requires memory to be bound
+-- > // `memoryProperties` properties as returned by vkGetPhysicalDeviceMemoryProperties
+-- > // `requiredProperties` are the property flags that must be present
+-- > // `optimalProperties` are the property flags that are preferred by the application
+-- > VkMemoryRequirements memoryRequirements;
+-- > vkGetImageMemoryRequirements(device, image, &memoryRequirements);
+-- > int32_t memoryType =
+-- >     findProperties(&memoryProperties, memoryRequirements.memoryTypeBits, optimalProperties);
+-- > if (memoryType == -1) // not found; try fallback properties
+-- >     memoryType =
+-- >         findProperties(&memoryProperties, memoryRequirements.memoryTypeBits, requiredProperties);
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
+-- 'MemoryHeap', 'MemoryType',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceMemoryProperties2',
+-- 'getPhysicalDeviceMemoryProperties'
+data PhysicalDeviceMemoryProperties = PhysicalDeviceMemoryProperties
+  { -- | @memoryTypeCount@ is the number of valid elements in the @memoryTypes@
+    -- array.
+    memoryTypeCount :: Word32
+  , -- | @memoryTypes@ is an array of
+    -- 'Vulkan.Core10.APIConstants.MAX_MEMORY_TYPES' 'MemoryType' structures
+    -- describing the /memory types/ that /can/ be used to access memory
+    -- allocated from the heaps specified by @memoryHeaps@.
+    memoryTypes :: Vector MemoryType
+  , -- | @memoryHeapCount@ is the number of valid elements in the @memoryHeaps@
+    -- array.
+    memoryHeapCount :: Word32
+  , -- | @memoryHeaps@ is an array of
+    -- 'Vulkan.Core10.APIConstants.MAX_MEMORY_HEAPS' 'MemoryHeap' structures
+    -- describing the /memory heaps/ from which memory /can/ be allocated.
+    memoryHeaps :: Vector MemoryHeap
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceMemoryProperties)
+#endif
+deriving instance Show PhysicalDeviceMemoryProperties
+
+instance ToCStruct PhysicalDeviceMemoryProperties where
+  withCStruct x f = allocaBytes 520 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceMemoryProperties{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr Word32)) (memoryTypeCount)
+    unless ((Data.Vector.length $ (memoryTypes)) <= MAX_MEMORY_TYPES) $
+      throwIO $ IOError Nothing InvalidArgument "" "memoryTypes is too long, a maximum of MAX_MEMORY_TYPES elements are allowed" Nothing Nothing
+    Data.Vector.imapM_ (\i e -> poke ((lowerArrayPtr ((p `plusPtr` 4 :: Ptr (FixedArray MAX_MEMORY_TYPES MemoryType)))) `plusPtr` (8 * (i)) :: Ptr MemoryType) (e)) (memoryTypes)
+    poke ((p `plusPtr` 260 :: Ptr Word32)) (memoryHeapCount)
+    unless ((Data.Vector.length $ (memoryHeaps)) <= MAX_MEMORY_HEAPS) $
+      throwIO $ IOError Nothing InvalidArgument "" "memoryHeaps is too long, a maximum of MAX_MEMORY_HEAPS elements are allowed" Nothing Nothing
+    Data.Vector.imapM_ (\i e -> poke ((lowerArrayPtr ((p `plusPtr` 264 :: Ptr (FixedArray MAX_MEMORY_HEAPS MemoryHeap)))) `plusPtr` (16 * (i)) :: Ptr MemoryHeap) (e)) (memoryHeaps)
+    f
+  cStructSize = 520
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 260 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct PhysicalDeviceMemoryProperties where
+  peekCStruct p = do
+    memoryTypeCount <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))
+    memoryTypes <- generateM (MAX_MEMORY_TYPES) (\i -> peekCStruct @MemoryType (((lowerArrayPtr @MemoryType ((p `plusPtr` 4 :: Ptr (FixedArray MAX_MEMORY_TYPES MemoryType)))) `advancePtrBytes` (8 * (i)) :: Ptr MemoryType)))
+    memoryHeapCount <- peek @Word32 ((p `plusPtr` 260 :: Ptr Word32))
+    memoryHeaps <- generateM (MAX_MEMORY_HEAPS) (\i -> peekCStruct @MemoryHeap (((lowerArrayPtr @MemoryHeap ((p `plusPtr` 264 :: Ptr (FixedArray MAX_MEMORY_HEAPS MemoryHeap)))) `advancePtrBytes` (16 * (i)) :: Ptr MemoryHeap)))
+    pure $ PhysicalDeviceMemoryProperties
+             memoryTypeCount memoryTypes memoryHeapCount memoryHeaps
+
+instance Storable PhysicalDeviceMemoryProperties where
+  sizeOf ~_ = 520
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceMemoryProperties where
+  zero = PhysicalDeviceMemoryProperties
+           zero
+           mempty
+           zero
+           mempty
+
+
+-- | VkMemoryType - Structure specifying memory type
+--
+-- = 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.Enums.MemoryPropertyFlagBits.MemoryPropertyFlags',
+-- 'PhysicalDeviceMemoryProperties'
+data MemoryType = MemoryType
+  { -- | @propertyFlags@ is a bitmask of
+    -- 'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MemoryPropertyFlagBits' of
+    -- properties for this memory type.
+    propertyFlags :: MemoryPropertyFlags
+  , -- | @heapIndex@ describes which memory heap this memory type corresponds to,
+    -- and /must/ be less than @memoryHeapCount@ from the
+    -- 'PhysicalDeviceMemoryProperties' structure.
+    heapIndex :: Word32
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (MemoryType)
+#endif
+deriving instance Show MemoryType
+
+instance ToCStruct MemoryType where
+  withCStruct x f = allocaBytes 8 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p MemoryType{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr MemoryPropertyFlags)) (propertyFlags)
+    poke ((p `plusPtr` 4 :: Ptr Word32)) (heapIndex)
+    f
+  cStructSize = 8
+  cStructAlignment = 4
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct MemoryType where
+  peekCStruct p = do
+    propertyFlags <- peek @MemoryPropertyFlags ((p `plusPtr` 0 :: Ptr MemoryPropertyFlags))
+    heapIndex <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))
+    pure $ MemoryType
+             propertyFlags heapIndex
+
+instance Storable MemoryType where
+  sizeOf ~_ = 8
+  alignment ~_ = 4
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero MemoryType where
+  zero = MemoryType
+           zero
+           zero
+
+
+-- | VkMemoryHeap - Structure specifying a memory heap
+--
+-- = 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.Enums.MemoryHeapFlagBits.MemoryHeapFlags',
+-- 'PhysicalDeviceMemoryProperties'
+data MemoryHeap = MemoryHeap
+  { -- | @size@ is the total memory size in bytes in the heap.
+    size :: DeviceSize
+  , -- | @flags@ is a bitmask of
+    -- 'Vulkan.Core10.Enums.MemoryHeapFlagBits.MemoryHeapFlagBits' specifying
+    -- attribute flags for the heap.
+    flags :: MemoryHeapFlags
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (MemoryHeap)
+#endif
+deriving instance Show MemoryHeap
+
+instance ToCStruct MemoryHeap where
+  withCStruct x f = allocaBytes 16 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p MemoryHeap{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr DeviceSize)) (size)
+    poke ((p `plusPtr` 8 :: Ptr MemoryHeapFlags)) (flags)
+    f
+  cStructSize = 16
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr DeviceSize)) (zero)
+    f
+
+instance FromCStruct MemoryHeap where
+  peekCStruct p = do
+    size <- peek @DeviceSize ((p `plusPtr` 0 :: Ptr DeviceSize))
+    flags <- peek @MemoryHeapFlags ((p `plusPtr` 8 :: Ptr MemoryHeapFlags))
+    pure $ MemoryHeap
+             size flags
+
+instance Storable MemoryHeap where
+  sizeOf ~_ = 16
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero MemoryHeap where
+  zero = MemoryHeap
+           zero
+           zero
+
+
+-- | VkFormatProperties - Structure specifying image format properties
+--
+-- = Description
+--
+-- If no format feature flags are supported, the format itself is not
+-- supported, and images of that format cannot be created.
+--
+-- If @format@ is block-compressed,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion requires sampler Y′CBCR conversion>,
+-- or is a depth\/stencil format then @bufferFeatures@ /must/ not support
+-- any features for the format.
+--
+-- If @format@ is not a multi-plane format then @linearTilingFeatures@ and
+-- @optimalTilingFeatures@ /must/ not contain
+-- 'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_DISJOINT_BIT'.
+--
+-- = 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.Enums.FormatFeatureFlagBits.FormatFeatureFlags',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.FormatProperties2',
+-- 'getPhysicalDeviceFormatProperties'
+data FormatProperties = FormatProperties
+  { -- | @linearTilingFeatures@ is a bitmask of
+    -- 'Vulkan.Core10.Enums.FormatFeatureFlagBits.FormatFeatureFlagBits'
+    -- specifying features supported by images created with a @tiling@
+    -- parameter of 'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR'.
+    linearTilingFeatures :: FormatFeatureFlags
+  , -- | @optimalTilingFeatures@ is a bitmask of
+    -- 'Vulkan.Core10.Enums.FormatFeatureFlagBits.FormatFeatureFlagBits'
+    -- specifying features supported by images created with a @tiling@
+    -- parameter of 'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL'.
+    optimalTilingFeatures :: FormatFeatureFlags
+  , -- | @bufferFeatures@ is a bitmask of
+    -- 'Vulkan.Core10.Enums.FormatFeatureFlagBits.FormatFeatureFlagBits'
+    -- specifying features supported by buffers.
+    bufferFeatures :: FormatFeatureFlags
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (FormatProperties)
+#endif
+deriving instance Show FormatProperties
+
+instance ToCStruct FormatProperties where
+  withCStruct x f = allocaBytes 12 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p FormatProperties{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr FormatFeatureFlags)) (linearTilingFeatures)
+    poke ((p `plusPtr` 4 :: Ptr FormatFeatureFlags)) (optimalTilingFeatures)
+    poke ((p `plusPtr` 8 :: Ptr FormatFeatureFlags)) (bufferFeatures)
+    f
+  cStructSize = 12
+  cStructAlignment = 4
+  pokeZeroCStruct _ f = f
+
+instance FromCStruct FormatProperties where
+  peekCStruct p = do
+    linearTilingFeatures <- peek @FormatFeatureFlags ((p `plusPtr` 0 :: Ptr FormatFeatureFlags))
+    optimalTilingFeatures <- peek @FormatFeatureFlags ((p `plusPtr` 4 :: Ptr FormatFeatureFlags))
+    bufferFeatures <- peek @FormatFeatureFlags ((p `plusPtr` 8 :: Ptr FormatFeatureFlags))
+    pure $ FormatProperties
+             linearTilingFeatures optimalTilingFeatures bufferFeatures
+
+instance Storable FormatProperties where
+  sizeOf ~_ = 12
+  alignment ~_ = 4
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero FormatProperties where
+  zero = FormatProperties
+           zero
+           zero
+           zero
+
+
+-- | VkImageFormatProperties - Structure specifying an image format
+-- properties
+--
+-- = Members
+--
+-- -   @maxExtent@ are the maximum image dimensions. See the
+--     <https://registry.khronos.org/vulkan/specs/latest/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.
+--     @maxMipLevels@ /must/ be equal to the number of levels in the
+--     complete mipmap chain based on the @maxExtent.width@,
+--     @maxExtent.height@, and @maxExtent.depth@, except when one of the
+--     following conditions is true, in which case it /may/ instead be @1@:
+--
+--     -   'getPhysicalDeviceImageFormatProperties'::@tiling@ was
+--         'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceImageFormatInfo2'::@tiling@
+--         was
+--         'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT'
+--
+--     -   the
+--         'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceImageFormatInfo2'::@pNext@
+--         chain included a
+--         'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceExternalImageFormatInfo'
+--         structure with a handle type included in the @handleTypes@
+--         member for which mipmap image support is not required
+--
+--     -   image @format@ is one of the
+--         <https://registry.khronos.org/vulkan/specs/latest/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'
+--
+-- -   @maxArrayLayers@ is the maximum number of array layers.
+--     @maxArrayLayers@ /must/ be no less than
+--     'PhysicalDeviceLimits'::@maxImageArrayLayers@, except when one of
+--     the following conditions is true, in which case it /may/ instead be
+--     @1@:
+--
+--     -   @tiling@ is
+--         'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR'
+--
+--     -   @tiling@ is
+--         'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL' and
+--         @type@ is 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D'
+--
+--     -   @format@ is one of the
+--         <https://registry.khronos.org/vulkan/specs/latest/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',
+--     then @maxArrayLayers@ /must/ not be 0.
+--
+-- -   @sampleCounts@ is a bitmask of
+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits'
+--     specifying all the supported sample counts for this image as
+--     described
+--     <https://registry.khronos.org/vulkan/specs/latest/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/
+--     have an address space limit on total size of a resource, which is
+--     advertised by this property. @maxResourceSize@ /must/ be at least
+--     231.
+--
+-- = Description
+--
+-- There is no mechanism to query the size of an image before creating it,
+-- to compare that size against @maxResourceSize@. If an application
+-- attempts to create an image that exceeds this limit, the creation will
+-- fail and 'Vulkan.Core10.Image.createImage' will return
+-- 'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'. While the
+-- advertised limit /must/ be at least 231, it /may/ not be possible to
+-- create an image that approaches that size, particularly for
+-- 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D'.
+--
+-- If the combination of parameters to
+-- 'getPhysicalDeviceImageFormatProperties' is not supported by the
+-- implementation for use in 'Vulkan.Core10.Image.createImage', then all
+-- members of 'ImageFormatProperties' will be filled with zero.
+--
+-- Filling 'ImageFormatProperties' with zero for unsupported formats is an
+-- exception to the usual rule that output structures have undefined
+-- contents on error. This exception was unintentional, but is preserved
+-- for backwards compatibility.
+--
+-- = 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',
+-- 'Vulkan.Extensions.VK_NV_external_memory_capabilities.ExternalImageFormatPropertiesNV',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.ImageFormatProperties2',
+-- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlags',
+-- 'getPhysicalDeviceImageFormatProperties'
+data ImageFormatProperties = ImageFormatProperties
+  { -- No documentation found for Nested "VkImageFormatProperties" "maxExtent"
+    maxExtent :: Extent3D
+  , -- No documentation found for Nested "VkImageFormatProperties" "maxMipLevels"
+    maxMipLevels :: Word32
+  , -- No documentation found for Nested "VkImageFormatProperties" "maxArrayLayers"
+    maxArrayLayers :: Word32
+  , -- No documentation found for Nested "VkImageFormatProperties" "sampleCounts"
+    sampleCounts :: SampleCountFlags
+  , -- No documentation found for Nested "VkImageFormatProperties" "maxResourceSize"
+    maxResourceSize :: DeviceSize
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (ImageFormatProperties)
+#endif
+deriving instance Show ImageFormatProperties
+
+instance ToCStruct ImageFormatProperties where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p ImageFormatProperties{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr Extent3D)) (maxExtent)
+    poke ((p `plusPtr` 12 :: Ptr Word32)) (maxMipLevels)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (maxArrayLayers)
+    poke ((p `plusPtr` 20 :: Ptr SampleCountFlags)) (sampleCounts)
+    poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (maxResourceSize)
+    f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr Extent3D)) (zero)
+    poke ((p `plusPtr` 12 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (zero)
+    f
+
+instance FromCStruct ImageFormatProperties where
+  peekCStruct p = do
+    maxExtent <- peekCStruct @Extent3D ((p `plusPtr` 0 :: Ptr Extent3D))
+    maxMipLevels <- peek @Word32 ((p `plusPtr` 12 :: Ptr Word32))
+    maxArrayLayers <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    sampleCounts <- peek @SampleCountFlags ((p `plusPtr` 20 :: Ptr SampleCountFlags))
+    maxResourceSize <- peek @DeviceSize ((p `plusPtr` 24 :: Ptr DeviceSize))
+    pure $ ImageFormatProperties
+             maxExtent maxMipLevels maxArrayLayers sampleCounts maxResourceSize
+
+instance Storable ImageFormatProperties where
+  sizeOf ~_ = 32
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero ImageFormatProperties where
+  zero = ImageFormatProperties
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkPhysicalDeviceFeatures - Structure describing the fine-grained
+-- features that can be supported by an implementation
+--
+-- = Members
+--
+-- This structure describes the following features:
+--
+-- = 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.Bool32',
+-- 'Vulkan.Core10.Device.DeviceCreateInfo',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+-- 'getPhysicalDeviceFeatures'
+data PhysicalDeviceFeatures = PhysicalDeviceFeatures
+  { -- | #features-robustBufferAccess# @robustBufferAccess@ enables
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-robust-buffer-access>
+    -- guarantees for shader buffer accesses.
+    robustBufferAccess :: Bool
+  , -- | #features-fullDrawIndexUint32# @fullDrawIndexUint32@ specifies the full
+    -- 32-bit range of indices is supported for indexed draw calls when using a
+    -- 'Vulkan.Core10.Enums.IndexType.IndexType' of
+    -- 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT32'.
+    -- @maxDrawIndexedIndexValue@ is the maximum index value that /may/ be used
+    -- (aside from the primitive restart index, which is always 232-1 when the
+    -- 'Vulkan.Core10.Enums.IndexType.IndexType' is
+    -- '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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxDrawIndexedIndexValue maxDrawIndexedIndexValue>.
+    fullDrawIndexUint32 :: Bool
+  , -- | #features-imageCubeArray# @imageCubeArray@ specifies whether image views
+    -- with a 'Vulkan.Core10.Enums.ImageViewType.ImageViewType' of
+    -- 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY' /can/ be
+    -- created, and that the corresponding @SampledCubeArray@ and
+    -- @ImageCubeArray@ SPIR-V capabilities /can/ be used in shader code.
+    imageCubeArray :: Bool
+  , -- | #features-independentBlend# @independentBlend@ specifies whether the
+    -- 'Vulkan.Core10.GraphicsPipeline.PipelineColorBlendAttachmentState'
+    -- settings are controlled independently per-attachment. If this feature is
+    -- not enabled, the
+    -- 'Vulkan.Core10.GraphicsPipeline.PipelineColorBlendAttachmentState'
+    -- settings for all color attachments /must/ be identical. Otherwise, a
+    -- different
+    -- 'Vulkan.Core10.GraphicsPipeline.PipelineColorBlendAttachmentState' /can/
+    -- be provided for each bound color attachment.
+    independentBlend :: Bool
+  , -- | #features-geometryShader# @geometryShader@ specifies whether geometry
+    -- shaders are supported. If this feature is not enabled, the
+    -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT' and
+    -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT'
+    -- enum values /must/ not be used. This also specifies whether shader
+    -- modules /can/ declare the @Geometry@ capability.
+    geometryShader :: Bool
+  , -- | #features-tessellationShader# @tessellationShader@ specifies whether
+    -- tessellation control and evaluation shaders are supported. If this
+    -- feature is not enabled, the
+    -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
+    -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT',
+    -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT',
+    -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT',
+    -- and
+    -- 'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO'
+    -- enum values /must/ not be used. This also specifies whether shader
+    -- modules /can/ declare the @Tessellation@ capability.
+    tessellationShader :: Bool
+  , -- | #features-sampleRateShading# @sampleRateShading@ specifies whether
+    -- <https://registry.khronos.org/vulkan/specs/latest/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.GraphicsPipeline.PipelineMultisampleStateCreateInfo'
+    -- structure /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE' and the
+    -- @minSampleShading@ member is ignored. This also specifies whether shader
+    -- modules /can/ declare the @SampleRateShading@ capability.
+    sampleRateShading :: Bool
+  , -- | #features-dualSrcBlend# @dualSrcBlend@ specifies whether blend
+    -- operations which take two sources are supported. If this feature is not
+    -- enabled, the 'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_SRC1_COLOR',
+    -- 'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_SRC1_COLOR',
+    -- '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://registry.khronos.org/vulkan/specs/latest/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
+    -- the 'Vulkan.Core10.GraphicsPipeline.PipelineColorBlendStateCreateInfo'
+    -- structure /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE', and the
+    -- @logicOp@ member is ignored.
+    logicOp :: Bool
+  , -- | #features-multiDrawIndirect# @multiDrawIndirect@ specifies whether
+    -- multiple draw indirect is supported. If this feature is not enabled, the
+    -- @drawCount@ parameter to the
+    -- 'Vulkan.Core10.CommandBufferBuilding.cmdDrawIndirect' and
+    -- 'Vulkan.Core10.CommandBufferBuilding.cmdDrawIndexedIndirect' commands
+    -- /must/ be 0 or 1. The @maxDrawIndirectCount@ member of the
+    -- 'PhysicalDeviceLimits' structure /must/ also be 1 if this feature is not
+    -- supported. See
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxDrawIndirectCount maxDrawIndirectCount>.
+    multiDrawIndirect :: Bool
+  , -- | #features-drawIndirectFirstInstance# @drawIndirectFirstInstance@
+    -- specifies whether indirect drawing calls support the @firstInstance@
+    -- parameter. If this feature is not enabled, the @firstInstance@ member of
+    -- all 'Vulkan.Core10.OtherTypes.DrawIndirectCommand' and
+    -- 'Vulkan.Core10.OtherTypes.DrawIndexedIndirectCommand' structures that
+    -- are provided to the
+    -- 'Vulkan.Core10.CommandBufferBuilding.cmdDrawIndirect' and
+    -- 'Vulkan.Core10.CommandBufferBuilding.cmdDrawIndexedIndirect' commands
+    -- /must/ be 0.
+    drawIndirectFirstInstance :: Bool
+  , -- | #features-depthClamp# @depthClamp@ specifies whether depth clamping is
+    -- supported. If this feature is not enabled, the @depthClampEnable@ member
+    -- of the
+    -- 'Vulkan.Core10.GraphicsPipeline.PipelineRasterizationStateCreateInfo'
+    -- structure /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'. Otherwise,
+    -- setting @depthClampEnable@ to 'Vulkan.Core10.FundamentalTypes.TRUE' will
+    -- enable depth clamping.
+    depthClamp :: Bool
+  , -- | #features-depthBiasClamp# @depthBiasClamp@ specifies whether depth bias
+    -- clamping is supported. If this feature is not enabled, the
+    -- @depthBiasClamp@ member of the
+    -- 'Vulkan.Core10.GraphicsPipeline.PipelineRasterizationStateCreateInfo'
+    -- structure /must/ be 0.0 unless the
+    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS' dynamic
+    -- state is enabled, in which case the @depthBiasClamp@ parameter to
+    -- 'Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBias' /must/ be 0.0.
+    depthBiasClamp :: Bool
+  , -- | #features-fillModeNonSolid# @fillModeNonSolid@ specifies whether point
+    -- and wireframe fill modes are supported. If this feature is not enabled,
+    -- the 'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_POINT' and
+    -- 'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_LINE' enum values /must/
+    -- not be used.
+    fillModeNonSolid :: Bool
+  , -- | #features-depthBounds# @depthBounds@ specifies whether depth bounds
+    -- tests are supported. If this feature is not enabled, the
+    -- @depthBoundsTestEnable@ member of the
+    -- 'Vulkan.Core10.GraphicsPipeline.PipelineDepthStencilStateCreateInfo'
+    -- structure /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE' unless the
+    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE'
+    -- dynamic state is enabled, in which case the @depthBoundsTestEnable@
+    -- parameter to
+    -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthBoundsTestEnable'
+    -- /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'. When
+    -- @depthBoundsTestEnable@ is 'Vulkan.Core10.FundamentalTypes.FALSE', the
+    -- @minDepthBounds@ and @maxDepthBounds@ members of the
+    -- 'Vulkan.Core10.GraphicsPipeline.PipelineDepthStencilStateCreateInfo'
+    -- structure are ignored.
+    depthBounds :: Bool
+  , -- | #features-wideLines# @wideLines@ specifies whether lines with width
+    -- other than 1.0 are supported. If this feature is not enabled, the
+    -- @lineWidth@ member of the
+    -- 'Vulkan.Core10.GraphicsPipeline.PipelineRasterizationStateCreateInfo'
+    -- structure /must/ be 1.0 unless the
+    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_WIDTH' dynamic
+    -- state is enabled, in which case the @lineWidth@ parameter to
+    -- 'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth' /must/ be 1.0.
+    -- When this feature is supported, the range and granularity of supported
+    -- line widths are indicated by the @lineWidthRange@ and
+    -- @lineWidthGranularity@ members of the 'PhysicalDeviceLimits' structure,
+    -- respectively.
+    wideLines :: Bool
+  , -- | #features-largePoints# @largePoints@ specifies whether points with size
+    -- greater than 1.0 are supported. If this feature is not enabled, only a
+    -- point size of 1.0 written by a shader is supported. The range and
+    -- granularity of supported point sizes are indicated by the
+    -- @pointSizeRange@ and @pointSizeGranularity@ members of the
+    -- 'PhysicalDeviceLimits' structure, respectively.
+    largePoints :: Bool
+  , -- | #features-alphaToOne# @alphaToOne@ specifies whether the implementation
+    -- is able to replace the alpha value of the fragment shader color output
+    -- in the
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#fragops-covg Multisample Coverage>
+    -- fragment operation. If this feature is not enabled, then the
+    -- @alphaToOneEnable@ member of the
+    -- 'Vulkan.Core10.GraphicsPipeline.PipelineMultisampleStateCreateInfo'
+    -- structure /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'. Otherwise
+    -- setting @alphaToOneEnable@ to 'Vulkan.Core10.FundamentalTypes.TRUE' will
+    -- enable alpha-to-one behavior.
+    alphaToOne :: Bool
+  , -- | #features-multiViewport# @multiViewport@ specifies whether more than one
+    -- viewport is supported. If this feature is not enabled:
+    --
+    -- -   The @viewportCount@ and @scissorCount@ members of the
+    --     'Vulkan.Core10.GraphicsPipeline.PipelineViewportStateCreateInfo'
+    --     structure /must/ be 1.
+    --
+    -- -   The @firstViewport@ and @viewportCount@ parameters to the
+    --     'Vulkan.Core10.CommandBufferBuilding.cmdSetViewport' command /must/
+    --     be 0 and 1, respectively.
+    --
+    -- -   The @firstScissor@ and @scissorCount@ parameters to the
+    --     'Vulkan.Core10.CommandBufferBuilding.cmdSetScissor' command /must/
+    --     be 0 and 1, respectively.
+    --
+    -- -   The @exclusiveScissorCount@ member of the
+    --     'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'
+    --     structure /must/ be 0 or 1.
+    --
+    -- -   The @firstExclusiveScissor@ and @exclusiveScissorCount@ parameters
+    --     to the
+    --     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorNV'
+    --     command /must/ be 0 and 1, respectively.
+    multiViewport :: Bool
+  , -- | #features-samplerAnisotropy# @samplerAnisotropy@ specifies whether
+    -- anisotropic filtering is supported. If this feature is not enabled, the
+    -- @anisotropyEnable@ member of the
+    -- 'Vulkan.Core10.Sampler.SamplerCreateInfo' structure /must/ be
+    -- 'Vulkan.Core10.FundamentalTypes.FALSE'.
+    samplerAnisotropy :: Bool
+  , -- | #features-textureCompressionETC2# @textureCompressionETC2@ specifies
+    -- whether all of the ETC2 and EAC 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_ETC2_R8G8B8_UNORM_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ETC2_R8G8B8_SRGB_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_EAC_R11_UNORM_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_EAC_R11_SNORM_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_EAC_R11G11_UNORM_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_EAC_R11G11_SNORM_BLOCK'
+    --
+    --     To query for additional properties, or if the feature is not
+    --     enabled, 'getPhysicalDeviceFormatProperties' and
+    --     'getPhysicalDeviceImageFormatProperties' /can/ be used to check for
+    --     supported properties of individual formats as normal.
+    textureCompressionETC2 :: Bool
+  , -- | #features-textureCompressionASTC_LDR# @textureCompressionASTC_LDR@
+    -- specifies whether all of the ASTC LDR 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_UNORM_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_4x4_SRGB_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_5x4_UNORM_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_5x4_SRGB_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_5x5_UNORM_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_5x5_SRGB_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_6x5_UNORM_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_6x5_SRGB_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_6x6_UNORM_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_6x6_SRGB_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_8x5_UNORM_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_8x5_SRGB_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_8x6_UNORM_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_8x6_SRGB_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_8x8_UNORM_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_8x8_SRGB_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_10x5_UNORM_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_10x5_SRGB_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_10x6_UNORM_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_10x6_SRGB_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_10x8_UNORM_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_10x8_SRGB_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_10x10_UNORM_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_10x10_SRGB_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_12x10_UNORM_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_12x10_SRGB_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_12x12_UNORM_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_12x12_SRGB_BLOCK'
+    --
+    --     To query for additional properties, or if the feature is not
+    --     enabled, 'getPhysicalDeviceFormatProperties' and
+    --     'getPhysicalDeviceImageFormatProperties' /can/ be used to check for
+    --     supported properties of individual formats as normal.
+    textureCompressionASTC_LDR :: Bool
+  , -- | #features-textureCompressionBC# @textureCompressionBC@ specifies whether
+    -- all of the BC 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_BC1_RGB_UNORM_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_BC1_RGB_SRGB_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_BC1_RGBA_UNORM_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_BC1_RGBA_SRGB_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_BC2_UNORM_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_BC2_SRGB_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_BC3_UNORM_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_BC3_SRGB_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_BC4_UNORM_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_BC4_SNORM_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_BC5_UNORM_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_BC5_SNORM_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_BC6H_UFLOAT_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_BC6H_SFLOAT_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_BC7_UNORM_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_BC7_SRGB_BLOCK'
+    --
+    --     To query for additional properties, or if the feature is not
+    --     enabled, 'getPhysicalDeviceFormatProperties' and
+    --     'getPhysicalDeviceImageFormatProperties' /can/ be used to check for
+    --     supported properties of individual formats as normal.
+    textureCompressionBC :: Bool
+  , -- | #features-occlusionQueryPrecise# @occlusionQueryPrecise@ specifies
+    -- whether occlusion queries returning actual sample counts are supported.
+    -- Occlusion queries are created in a 'Vulkan.Core10.Handles.QueryPool' by
+    -- specifying the @queryType@ of
+    -- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_OCCLUSION' in the
+    -- 'Vulkan.Core10.Query.QueryPoolCreateInfo' structure which is passed to
+    -- 'Vulkan.Core10.Query.createQueryPool'. If this feature is enabled,
+    -- queries of this type /can/ enable
+    -- 'Vulkan.Core10.Enums.QueryControlFlagBits.QUERY_CONTROL_PRECISE_BIT' in
+    -- the @flags@ parameter to
+    -- 'Vulkan.Core10.CommandBufferBuilding.cmdBeginQuery'. If this feature is
+    -- not supported, the implementation supports only boolean occlusion
+    -- queries. When any samples are passed, boolean queries will return a
+    -- non-zero result value, otherwise a result value of zero is returned.
+    -- When this feature is enabled and
+    -- 'Vulkan.Core10.Enums.QueryControlFlagBits.QUERY_CONTROL_PRECISE_BIT' is
+    -- set, occlusion queries will report the actual number of samples passed.
+    occlusionQueryPrecise :: Bool
+  , -- | #features-pipelineStatisticsQuery# @pipelineStatisticsQuery@ specifies
+    -- whether the pipeline statistics queries are supported. If this feature
+    -- is not enabled, queries of type
+    -- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PIPELINE_STATISTICS' /cannot/
+    -- be created, and none of the
+    -- 'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QueryPipelineStatisticFlagBits'
+    -- bits /can/ be set in the @pipelineStatistics@ member of the
+    -- 'Vulkan.Core10.Query.QueryPoolCreateInfo' structure.
+    pipelineStatisticsQuery :: Bool
+  , -- | #features-vertexPipelineStoresAndAtomics#
+    -- @vertexPipelineStoresAndAtomics@ specifies whether storage buffers and
+    -- images support stores and atomic operations in the vertex, tessellation,
+    -- and geometry shader stages. If this feature is not enabled, all storage
+    -- image, storage texel buffer, and storage buffer variables used by these
+    -- stages in shader modules /must/ be decorated with the @NonWritable@
+    -- decoration (or the @readonly@ memory qualifier in GLSL).
+    vertexPipelineStoresAndAtomics :: Bool
+  , -- | #features-fragmentStoresAndAtomics# @fragmentStoresAndAtomics@ specifies
+    -- whether storage buffers and images support stores and atomic operations
+    -- in the fragment shader stage. If this feature is not enabled, all
+    -- storage image, storage texel buffer, and storage buffer variables used
+    -- by the fragment stage in shader modules /must/ be decorated with the
+    -- @NonWritable@ decoration (or the @readonly@ memory qualifier in GLSL).
+    fragmentStoresAndAtomics :: Bool
+  , -- | #features-shaderTessellationAndGeometryPointSize#
+    -- @shaderTessellationAndGeometryPointSize@ specifies whether the
+    -- @PointSize@ built-in decoration is available in the tessellation
+    -- control, tessellation evaluation, and geometry shader stages. If this
+    -- feature is not enabled, members decorated with the @PointSize@ built-in
+    -- decoration /must/ not be read from or written to and all points written
+    -- from a tessellation or geometry shader will have a size of 1.0. This
+    -- also specifies whether shader modules /can/ declare the
+    -- @TessellationPointSize@ capability for tessellation control and
+    -- 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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-tessellationShader tessellationShader>
+    -- or
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-geometryShader geometryShader>
+    -- features.
+    shaderTessellationAndGeometryPointSize :: Bool
+  , -- | #features-shaderImageGatherExtended# @shaderImageGatherExtended@
+    -- specifies whether the extended set of image gather instructions are
+    -- available in shader code. If this feature is not enabled, the
+    -- @OpImage*Gather@ and @OpImageGatherQCOM@ instructions do not support the
+    -- @Offset@ and @ConstOffsets@ operands. The @OpImageGatherQCOM@
+    -- instruction does not support the @ConstOffsets@ operand regardless of
+    -- the value of this feature. This also specifies whether shader modules
+    -- /can/ declare the @ImageGatherExtended@ capability.
+    shaderImageGatherExtended :: Bool
+  , -- | #features-shaderStorageImageExtendedFormats#
+    -- @shaderStorageImageExtendedFormats@ specifies whether all the “storage
+    -- image extended formats” below are supported; if this feature is
+    -- supported, then the
+    -- 'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_IMAGE_BIT'
+    -- /must/ be supported in @optimalTilingFeatures@ for the following
+    -- formats:
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_R16G16_SFLOAT'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_B10G11R11_UFLOAT_PACK32'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_R16_SFLOAT'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_R16G16B16A16_UNORM'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_A2B10G10R10_UNORM_PACK32'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_R16G16_UNORM'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_R8G8_UNORM'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_R16_UNORM'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_R8_UNORM'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_R16G16B16A16_SNORM'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_R16G16_SNORM'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_R8G8_SNORM'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_R16_SNORM'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_R8_SNORM'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_R16G16_SINT'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_R8G8_SINT'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_R16_SINT'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_R8_SINT'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_A2B10G10R10_UINT_PACK32'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_R16G16_UINT'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_R8G8_UINT'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_R16_UINT'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT'
+    --
+    --     @shaderStorageImageExtendedFormats@ feature only adds a guarantee of
+    --     format support, which is specified for the whole physical device.
+    --     Therefore enabling or disabling the feature via
+    --     'Vulkan.Core10.Device.createDevice' has no practical effect.
+    --
+    --     To query for additional properties, or if the feature is not
+    --     supported, 'getPhysicalDeviceFormatProperties' and
+    --     'getPhysicalDeviceImageFormatProperties' /can/ be used to check for
+    --     supported properties of individual formats, as usual rules allow.
+    --
+    --     'Vulkan.Core10.Enums.Format.FORMAT_R32G32_UINT',
+    --     'Vulkan.Core10.Enums.Format.FORMAT_R32G32_SINT', and
+    --     'Vulkan.Core10.Enums.Format.FORMAT_R32G32_SFLOAT' from
+    --     @StorageImageExtendedFormats@ SPIR-V capability, are already covered
+    --     by core Vulkan
+    --     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-mandatory-features-32bit mandatory format support>.
+    shaderStorageImageExtendedFormats :: Bool
+  , -- | #features-shaderStorageImageMultisample# @shaderStorageImageMultisample@
+    -- specifies whether multisampled storage images are supported. If this
+    -- feature is not enabled, images that are created with the
+    -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_STORAGE_BIT' usage
+    -- flag set /must/ be created with @samples@ equal to
+    -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'. This also
+    -- specifies whether shader modules /can/ declare the
+    -- @StorageImageMultisample@ and @ImageMSArray@ capabilities.
+    shaderStorageImageMultisample :: Bool
+  , -- | #features-shaderStorageImageReadWithoutFormat#
+    -- @shaderStorageImageReadWithoutFormat@ specifies whether storage images
+    -- and storage texel buffers require a format qualifier to be specified
+    -- when reading. @shaderStorageImageReadWithoutFormat@ applies only to
+    -- formats listed in the
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-without-shader-storage-format storage without format>
+    -- list.
+    shaderStorageImageReadWithoutFormat :: Bool
+  , -- | #features-shaderStorageImageWriteWithoutFormat#
+    -- @shaderStorageImageWriteWithoutFormat@ specifies whether storage images
+    -- and storage texel buffers require a format qualifier to be specified
+    -- when writing. @shaderStorageImageWriteWithoutFormat@ applies only to
+    -- formats listed in the
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-without-shader-storage-format storage without format>
+    -- list.
+    shaderStorageImageWriteWithoutFormat :: Bool
+  , -- | #features-shaderUniformBufferArrayDynamicIndexing#
+    -- @shaderUniformBufferArrayDynamicIndexing@ specifies whether arrays of
+    -- uniform buffers /can/ be indexed by integer expressions that are
+    -- dynamically uniform within either the subgroup or the invocation group
+    -- in shader code. If this feature is not enabled, resources with a
+    -- descriptor type of
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER' or
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC'
+    -- /must/ be indexed only by constant integral expressions when aggregated
+    -- into arrays in shader code. This also specifies whether shader modules
+    -- /can/ declare the @UniformBufferArrayDynamicIndexing@ capability.
+    shaderUniformBufferArrayDynamicIndexing :: Bool
+  , -- | #features-shaderSampledImageArrayDynamicIndexing#
+    -- @shaderSampledImageArrayDynamicIndexing@ specifies whether arrays of
+    -- samplers or sampled images /can/ be indexed by integer expressions that
+    -- are dynamically uniform within either the subgroup or the invocation
+    -- group in shader code. If this feature is not enabled, resources with a
+    -- descriptor type of
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLER',
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER',
+    -- or 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE'
+    -- /must/ be indexed only by constant integral expressions when aggregated
+    -- into arrays in shader code. This also specifies whether shader modules
+    -- /can/ declare the @SampledImageArrayDynamicIndexing@ capability.
+    shaderSampledImageArrayDynamicIndexing :: Bool
+  , -- | #features-shaderStorageBufferArrayDynamicIndexing#
+    -- @shaderStorageBufferArrayDynamicIndexing@ specifies whether arrays of
+    -- storage buffers /can/ be indexed by integer expressions that are
+    -- dynamically uniform within either the subgroup or the invocation group
+    -- in shader code. If this feature is not enabled, resources with a
+    -- descriptor type of
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER' or
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC'
+    -- /must/ be indexed only by constant integral expressions when aggregated
+    -- into arrays in shader code. This also specifies whether shader modules
+    -- /can/ declare the @StorageBufferArrayDynamicIndexing@ capability.
+    shaderStorageBufferArrayDynamicIndexing :: Bool
+  , -- | #features-shaderStorageImageArrayDynamicIndexing#
+    -- @shaderStorageImageArrayDynamicIndexing@ specifies whether arrays of
+    -- storage images /can/ be indexed by integer expressions that are
+    -- dynamically uniform within either the subgroup or the invocation group
+    -- in shader code. If this feature is not enabled, resources with a
+    -- descriptor type of
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE'
+    -- /must/ be indexed only by constant integral expressions when aggregated
+    -- into arrays in shader code. This also specifies whether shader modules
+    -- /can/ declare the @StorageImageArrayDynamicIndexing@ capability.
+    shaderStorageImageArrayDynamicIndexing :: Bool
+  , -- | #features-shaderClipDistance# @shaderClipDistance@ specifies whether
+    -- clip distances are supported in shader code. If this feature is not
+    -- enabled, any members decorated with the @ClipDistance@ built-in
+    -- decoration /must/ not be read from or written to in shader modules. This
+    -- also specifies whether shader modules /can/ declare the @ClipDistance@
+    -- capability.
+    shaderClipDistance :: Bool
+  , -- | #features-shaderCullDistance# @shaderCullDistance@ specifies whether
+    -- cull distances are supported in shader code. If this feature is not
+    -- enabled, any members decorated with the @CullDistance@ built-in
+    -- decoration /must/ not be read from or written to in shader modules. This
+    -- also specifies whether shader modules /can/ declare the @CullDistance@
+    -- capability.
+    shaderCullDistance :: Bool
+  , -- | #features-shaderFloat64# @shaderFloat64@ specifies whether 64-bit floats
+    -- (doubles) are supported in shader code. If this feature is not enabled,
+    -- 64-bit floating-point types /must/ not be used in shader code. This also
+    -- specifies whether shader modules /can/ declare the @Float64@ capability.
+    -- Declaring and using 64-bit floats is enabled for all storage classes
+    -- that SPIR-V allows with the @Float64@ capability.
+    shaderFloat64 :: Bool
+  , -- | #features-shaderInt64# @shaderInt64@ specifies whether 64-bit integers
+    -- (signed and unsigned) are supported in shader code. If this feature is
+    -- not enabled, 64-bit integer types /must/ not be used in shader code.
+    -- This also specifies whether shader modules /can/ declare the @Int64@
+    -- capability. Declaring and using 64-bit integers is enabled for all
+    -- storage classes that SPIR-V allows with the @Int64@ capability.
+    shaderInt64 :: Bool
+  , -- | #features-shaderInt16# @shaderInt16@ specifies whether 16-bit integers
+    -- (signed and unsigned) are supported in shader code. If this feature is
+    -- not enabled, 16-bit integer types /must/ not be used in shader code.
+    -- This also specifies whether shader modules /can/ declare the @Int16@
+    -- capability. However, this only enables a subset of the storage classes
+    -- that SPIR-V allows for the @Int16@ SPIR-V capability: Declaring and
+    -- using 16-bit integers in the @Private@, @Workgroup@ (for non-Block
+    -- variables), and @Function@ storage classes is enabled, while declaring
+    -- them in the interface storage classes (e.g., @UniformConstant@,
+    -- @Uniform@, @StorageBuffer@, @Input@, @Output@, and @PushConstant@) is
+    -- not enabled.
+    shaderInt16 :: Bool
+  , -- | #features-shaderResourceResidency# @shaderResourceResidency@ specifies
+    -- whether image operations that return resource residency information are
+    -- supported in shader code. If this feature is not enabled, the
+    -- @OpImageSparse*@ instructions /must/ not be used in shader code. This
+    -- also specifies whether shader modules /can/ declare the
+    -- @SparseResidency@ capability. The feature requires at least one of the
+    -- @sparseResidency*@ features to be supported.
+    shaderResourceResidency :: Bool
+  , -- | #features-shaderResourceMinLod# @shaderResourceMinLod@ specifies whether
+    -- image operations specifying the minimum resource LOD are supported in
+    -- shader code. If this feature is not enabled, the @MinLod@ image operand
+    -- /must/ not be used in shader code. This also specifies whether shader
+    -- modules /can/ declare the @MinLod@ capability.
+    shaderResourceMinLod :: Bool
+  , -- | #features-sparseBinding# @sparseBinding@ specifies whether resource
+    -- memory /can/ be managed at opaque sparse block level instead of at the
+    -- object level. If this feature is not enabled, resource memory /must/ be
+    -- bound only on a per-object basis using the
+    -- 'Vulkan.Core10.MemoryManagement.bindBufferMemory' and
+    -- 'Vulkan.Core10.MemoryManagement.bindImageMemory' commands. In this case,
+    -- buffers and images /must/ not be created with
+    -- 'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_SPARSE_BINDING_BIT'
+    -- and
+    -- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_BINDING_BIT'
+    -- 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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#sparsememory-sparseresourcefeatures Sparse Resource Features>.
+    sparseBinding :: Bool
+  , -- | #features-sparseResidencyBuffer# @sparseResidencyBuffer@ specifies
+    -- whether the device /can/ access partially resident buffers. If this
+    -- feature is not enabled, buffers /must/ not be created with
+    -- 'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_SPARSE_RESIDENCY_BIT'
+    -- set in the @flags@ member of the 'Vulkan.Core10.Buffer.BufferCreateInfo'
+    -- structure.
+    sparseResidencyBuffer :: Bool
+  , -- | #features-sparseResidencyImage2D# @sparseResidencyImage2D@ specifies
+    -- whether the device /can/ access partially resident 2D images with 1
+    -- sample per pixel. If this feature is not enabled, images with an
+    -- @imageType@ of 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D' and
+    -- @samples@ set to
+    -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' /must/ not
+    -- be created with
+    -- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_RESIDENCY_BIT'
+    -- set in the @flags@ member of the 'Vulkan.Core10.Image.ImageCreateInfo'
+    -- structure.
+    sparseResidencyImage2D :: Bool
+  , -- | #features-sparseResidencyImage3D# @sparseResidencyImage3D@ specifies
+    -- whether the device /can/ access partially resident 3D images. If this
+    -- feature is not enabled, images with an @imageType@ of
+    -- 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D' /must/ not be created with
+    -- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_RESIDENCY_BIT'
+    -- set in the @flags@ member of the 'Vulkan.Core10.Image.ImageCreateInfo'
+    -- structure.
+    sparseResidencyImage3D :: Bool
+  , -- | #features-sparseResidency2Samples# @sparseResidency2Samples@ specifies
+    -- whether the physical device /can/ access partially resident 2D images
+    -- with 2 samples per pixel. If this feature is not enabled, images with an
+    -- @imageType@ of 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D' and
+    -- @samples@ set to
+    -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_2_BIT' /must/ not
+    -- be created with
+    -- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_RESIDENCY_BIT'
+    -- set in the @flags@ member of the 'Vulkan.Core10.Image.ImageCreateInfo'
+    -- structure.
+    sparseResidency2Samples :: Bool
+  , -- | #features-sparseResidency4Samples# @sparseResidency4Samples@ specifies
+    -- whether the physical device /can/ access partially resident 2D images
+    -- with 4 samples per pixel. If this feature is not enabled, images with an
+    -- @imageType@ of 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D' and
+    -- @samples@ set to
+    -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_4_BIT' /must/ not
+    -- be created with
+    -- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_RESIDENCY_BIT'
+    -- set in the @flags@ member of the 'Vulkan.Core10.Image.ImageCreateInfo'
+    -- structure.
+    sparseResidency4Samples :: Bool
+  , -- | #features-sparseResidency8Samples# @sparseResidency8Samples@ specifies
+    -- whether the physical device /can/ access partially resident 2D images
+    -- with 8 samples per pixel. If this feature is not enabled, images with an
+    -- @imageType@ of 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D' and
+    -- @samples@ set to
+    -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_8_BIT' /must/ not
+    -- be created with
+    -- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_RESIDENCY_BIT'
+    -- set in the @flags@ member of the 'Vulkan.Core10.Image.ImageCreateInfo'
+    -- structure.
+    sparseResidency8Samples :: Bool
+  , -- | #features-sparseResidency16Samples# @sparseResidency16Samples@ specifies
+    -- whether the physical device /can/ access partially resident 2D images
+    -- with 16 samples per pixel. If this feature is not enabled, images with
+    -- an @imageType@ of 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D' and
+    -- @samples@ set to
+    -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_16_BIT' /must/ not
+    -- be created with
+    -- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_RESIDENCY_BIT'
+    -- set in the @flags@ member of the 'Vulkan.Core10.Image.ImageCreateInfo'
+    -- structure.
+    sparseResidency16Samples :: Bool
+  , -- | #features-sparseResidencyAliased# @sparseResidencyAliased@ specifies
+    -- whether the physical device /can/ correctly access data aliased into
+    -- multiple locations. If this feature is not enabled, the
+    -- 'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_SPARSE_ALIASED_BIT'
+    -- and
+    -- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_ALIASED_BIT'
+    -- enum values /must/ not be used in @flags@ members of the
+    -- 'Vulkan.Core10.Buffer.BufferCreateInfo' and
+    -- 'Vulkan.Core10.Image.ImageCreateInfo' structures, respectively.
+    sparseResidencyAliased :: Bool
+  , -- | #features-variableMultisampleRate# @variableMultisampleRate@ specifies
+    -- whether all pipelines that will be bound to a command buffer during a
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-noattachments subpass which uses no attachments>
+    -- /must/ have the same value for
+    -- 'Vulkan.Core10.GraphicsPipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@.
+    -- If set to 'Vulkan.Core10.FundamentalTypes.TRUE', the implementation
+    -- supports variable multisample rates in a subpass which uses no
+    -- attachments. If set to 'Vulkan.Core10.FundamentalTypes.FALSE', then all
+    -- pipelines bound in such a subpass /must/ have the same multisample rate.
+    -- This has no effect in situations where a subpass uses any attachments.
+    variableMultisampleRate :: Bool
+  , -- | #features-inheritedQueries# @inheritedQueries@ specifies whether a
+    -- secondary command buffer /may/ be executed while a query is active.
+    inheritedQueries :: Bool
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceFeatures)
+#endif
+deriving instance Show PhysicalDeviceFeatures
+
+instance ToCStruct PhysicalDeviceFeatures where
+  withCStruct x f = allocaBytes 220 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceFeatures{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr Bool32)) (boolToBool32 (robustBufferAccess))
+    poke ((p `plusPtr` 4 :: Ptr Bool32)) (boolToBool32 (fullDrawIndexUint32))
+    poke ((p `plusPtr` 8 :: Ptr Bool32)) (boolToBool32 (imageCubeArray))
+    poke ((p `plusPtr` 12 :: Ptr Bool32)) (boolToBool32 (independentBlend))
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (geometryShader))
+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (tessellationShader))
+    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (sampleRateShading))
+    poke ((p `plusPtr` 28 :: Ptr Bool32)) (boolToBool32 (dualSrcBlend))
+    poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (logicOp))
+    poke ((p `plusPtr` 36 :: Ptr Bool32)) (boolToBool32 (multiDrawIndirect))
+    poke ((p `plusPtr` 40 :: Ptr Bool32)) (boolToBool32 (drawIndirectFirstInstance))
+    poke ((p `plusPtr` 44 :: Ptr Bool32)) (boolToBool32 (depthClamp))
+    poke ((p `plusPtr` 48 :: Ptr Bool32)) (boolToBool32 (depthBiasClamp))
+    poke ((p `plusPtr` 52 :: Ptr Bool32)) (boolToBool32 (fillModeNonSolid))
+    poke ((p `plusPtr` 56 :: Ptr Bool32)) (boolToBool32 (depthBounds))
+    poke ((p `plusPtr` 60 :: Ptr Bool32)) (boolToBool32 (wideLines))
+    poke ((p `plusPtr` 64 :: Ptr Bool32)) (boolToBool32 (largePoints))
+    poke ((p `plusPtr` 68 :: Ptr Bool32)) (boolToBool32 (alphaToOne))
+    poke ((p `plusPtr` 72 :: Ptr Bool32)) (boolToBool32 (multiViewport))
+    poke ((p `plusPtr` 76 :: Ptr Bool32)) (boolToBool32 (samplerAnisotropy))
+    poke ((p `plusPtr` 80 :: Ptr Bool32)) (boolToBool32 (textureCompressionETC2))
+    poke ((p `plusPtr` 84 :: Ptr Bool32)) (boolToBool32 (textureCompressionASTC_LDR))
+    poke ((p `plusPtr` 88 :: Ptr Bool32)) (boolToBool32 (textureCompressionBC))
+    poke ((p `plusPtr` 92 :: Ptr Bool32)) (boolToBool32 (occlusionQueryPrecise))
+    poke ((p `plusPtr` 96 :: Ptr Bool32)) (boolToBool32 (pipelineStatisticsQuery))
+    poke ((p `plusPtr` 100 :: Ptr Bool32)) (boolToBool32 (vertexPipelineStoresAndAtomics))
+    poke ((p `plusPtr` 104 :: Ptr Bool32)) (boolToBool32 (fragmentStoresAndAtomics))
+    poke ((p `plusPtr` 108 :: Ptr Bool32)) (boolToBool32 (shaderTessellationAndGeometryPointSize))
+    poke ((p `plusPtr` 112 :: Ptr Bool32)) (boolToBool32 (shaderImageGatherExtended))
+    poke ((p `plusPtr` 116 :: Ptr Bool32)) (boolToBool32 (shaderStorageImageExtendedFormats))
+    poke ((p `plusPtr` 120 :: Ptr Bool32)) (boolToBool32 (shaderStorageImageMultisample))
+    poke ((p `plusPtr` 124 :: Ptr Bool32)) (boolToBool32 (shaderStorageImageReadWithoutFormat))
+    poke ((p `plusPtr` 128 :: Ptr Bool32)) (boolToBool32 (shaderStorageImageWriteWithoutFormat))
+    poke ((p `plusPtr` 132 :: Ptr Bool32)) (boolToBool32 (shaderUniformBufferArrayDynamicIndexing))
+    poke ((p `plusPtr` 136 :: Ptr Bool32)) (boolToBool32 (shaderSampledImageArrayDynamicIndexing))
+    poke ((p `plusPtr` 140 :: Ptr Bool32)) (boolToBool32 (shaderStorageBufferArrayDynamicIndexing))
+    poke ((p `plusPtr` 144 :: Ptr Bool32)) (boolToBool32 (shaderStorageImageArrayDynamicIndexing))
+    poke ((p `plusPtr` 148 :: Ptr Bool32)) (boolToBool32 (shaderClipDistance))
+    poke ((p `plusPtr` 152 :: Ptr Bool32)) (boolToBool32 (shaderCullDistance))
+    poke ((p `plusPtr` 156 :: Ptr Bool32)) (boolToBool32 (shaderFloat64))
+    poke ((p `plusPtr` 160 :: Ptr Bool32)) (boolToBool32 (shaderInt64))
+    poke ((p `plusPtr` 164 :: Ptr Bool32)) (boolToBool32 (shaderInt16))
+    poke ((p `plusPtr` 168 :: Ptr Bool32)) (boolToBool32 (shaderResourceResidency))
+    poke ((p `plusPtr` 172 :: Ptr Bool32)) (boolToBool32 (shaderResourceMinLod))
+    poke ((p `plusPtr` 176 :: Ptr Bool32)) (boolToBool32 (sparseBinding))
+    poke ((p `plusPtr` 180 :: Ptr Bool32)) (boolToBool32 (sparseResidencyBuffer))
+    poke ((p `plusPtr` 184 :: Ptr Bool32)) (boolToBool32 (sparseResidencyImage2D))
+    poke ((p `plusPtr` 188 :: Ptr Bool32)) (boolToBool32 (sparseResidencyImage3D))
+    poke ((p `plusPtr` 192 :: Ptr Bool32)) (boolToBool32 (sparseResidency2Samples))
+    poke ((p `plusPtr` 196 :: Ptr Bool32)) (boolToBool32 (sparseResidency4Samples))
+    poke ((p `plusPtr` 200 :: Ptr Bool32)) (boolToBool32 (sparseResidency8Samples))
+    poke ((p `plusPtr` 204 :: Ptr Bool32)) (boolToBool32 (sparseResidency16Samples))
+    poke ((p `plusPtr` 208 :: Ptr Bool32)) (boolToBool32 (sparseResidencyAliased))
+    poke ((p `plusPtr` 212 :: Ptr Bool32)) (boolToBool32 (variableMultisampleRate))
+    poke ((p `plusPtr` 216 :: Ptr Bool32)) (boolToBool32 (inheritedQueries))
+    f
+  cStructSize = 220
+  cStructAlignment = 4
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 4 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 8 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 12 :: Ptr Bool32)) (boolToBool32 (zero))
+    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))
+    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 Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 180 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 184 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 188 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 192 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 196 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 200 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 204 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 208 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 212 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 216 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceFeatures where
+  peekCStruct p = do
+    robustBufferAccess <- peek @Bool32 ((p `plusPtr` 0 :: Ptr Bool32))
+    fullDrawIndexUint32 <- peek @Bool32 ((p `plusPtr` 4 :: Ptr Bool32))
+    imageCubeArray <- peek @Bool32 ((p `plusPtr` 8 :: Ptr Bool32))
+    independentBlend <- peek @Bool32 ((p `plusPtr` 12 :: Ptr Bool32))
+    geometryShader <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    tessellationShader <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
+    sampleRateShading <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))
+    dualSrcBlend <- peek @Bool32 ((p `plusPtr` 28 :: Ptr Bool32))
+    logicOp <- peek @Bool32 ((p `plusPtr` 32 :: Ptr Bool32))
+    multiDrawIndirect <- peek @Bool32 ((p `plusPtr` 36 :: Ptr Bool32))
+    drawIndirectFirstInstance <- peek @Bool32 ((p `plusPtr` 40 :: Ptr Bool32))
+    depthClamp <- peek @Bool32 ((p `plusPtr` 44 :: Ptr Bool32))
+    depthBiasClamp <- peek @Bool32 ((p `plusPtr` 48 :: Ptr Bool32))
+    fillModeNonSolid <- peek @Bool32 ((p `plusPtr` 52 :: Ptr Bool32))
+    depthBounds <- peek @Bool32 ((p `plusPtr` 56 :: Ptr Bool32))
+    wideLines <- peek @Bool32 ((p `plusPtr` 60 :: Ptr Bool32))
+    largePoints <- peek @Bool32 ((p `plusPtr` 64 :: Ptr Bool32))
+    alphaToOne <- peek @Bool32 ((p `plusPtr` 68 :: Ptr Bool32))
+    multiViewport <- peek @Bool32 ((p `plusPtr` 72 :: Ptr Bool32))
+    samplerAnisotropy <- peek @Bool32 ((p `plusPtr` 76 :: Ptr Bool32))
+    textureCompressionETC2 <- peek @Bool32 ((p `plusPtr` 80 :: Ptr Bool32))
+    textureCompressionASTC_LDR <- peek @Bool32 ((p `plusPtr` 84 :: Ptr Bool32))
+    textureCompressionBC <- peek @Bool32 ((p `plusPtr` 88 :: Ptr Bool32))
+    occlusionQueryPrecise <- peek @Bool32 ((p `plusPtr` 92 :: Ptr Bool32))
+    pipelineStatisticsQuery <- peek @Bool32 ((p `plusPtr` 96 :: Ptr Bool32))
+    vertexPipelineStoresAndAtomics <- peek @Bool32 ((p `plusPtr` 100 :: Ptr Bool32))
+    fragmentStoresAndAtomics <- peek @Bool32 ((p `plusPtr` 104 :: Ptr Bool32))
+    shaderTessellationAndGeometryPointSize <- peek @Bool32 ((p `plusPtr` 108 :: Ptr Bool32))
+    shaderImageGatherExtended <- peek @Bool32 ((p `plusPtr` 112 :: Ptr Bool32))
+    shaderStorageImageExtendedFormats <- peek @Bool32 ((p `plusPtr` 116 :: Ptr Bool32))
+    shaderStorageImageMultisample <- peek @Bool32 ((p `plusPtr` 120 :: Ptr Bool32))
+    shaderStorageImageReadWithoutFormat <- peek @Bool32 ((p `plusPtr` 124 :: Ptr Bool32))
+    shaderStorageImageWriteWithoutFormat <- peek @Bool32 ((p `plusPtr` 128 :: Ptr Bool32))
+    shaderUniformBufferArrayDynamicIndexing <- peek @Bool32 ((p `plusPtr` 132 :: Ptr Bool32))
+    shaderSampledImageArrayDynamicIndexing <- peek @Bool32 ((p `plusPtr` 136 :: Ptr Bool32))
+    shaderStorageBufferArrayDynamicIndexing <- peek @Bool32 ((p `plusPtr` 140 :: Ptr Bool32))
+    shaderStorageImageArrayDynamicIndexing <- peek @Bool32 ((p `plusPtr` 144 :: Ptr Bool32))
+    shaderClipDistance <- peek @Bool32 ((p `plusPtr` 148 :: Ptr Bool32))
+    shaderCullDistance <- peek @Bool32 ((p `plusPtr` 152 :: Ptr Bool32))
+    shaderFloat64 <- peek @Bool32 ((p `plusPtr` 156 :: Ptr Bool32))
+    shaderInt64 <- peek @Bool32 ((p `plusPtr` 160 :: Ptr Bool32))
+    shaderInt16 <- peek @Bool32 ((p `plusPtr` 164 :: Ptr Bool32))
+    shaderResourceResidency <- peek @Bool32 ((p `plusPtr` 168 :: Ptr Bool32))
+    shaderResourceMinLod <- peek @Bool32 ((p `plusPtr` 172 :: Ptr Bool32))
+    sparseBinding <- peek @Bool32 ((p `plusPtr` 176 :: Ptr Bool32))
+    sparseResidencyBuffer <- peek @Bool32 ((p `plusPtr` 180 :: Ptr Bool32))
+    sparseResidencyImage2D <- peek @Bool32 ((p `plusPtr` 184 :: Ptr Bool32))
+    sparseResidencyImage3D <- peek @Bool32 ((p `plusPtr` 188 :: Ptr Bool32))
+    sparseResidency2Samples <- peek @Bool32 ((p `plusPtr` 192 :: Ptr Bool32))
+    sparseResidency4Samples <- peek @Bool32 ((p `plusPtr` 196 :: Ptr Bool32))
+    sparseResidency8Samples <- peek @Bool32 ((p `plusPtr` 200 :: Ptr Bool32))
+    sparseResidency16Samples <- peek @Bool32 ((p `plusPtr` 204 :: Ptr Bool32))
+    sparseResidencyAliased <- peek @Bool32 ((p `plusPtr` 208 :: Ptr Bool32))
+    variableMultisampleRate <- peek @Bool32 ((p `plusPtr` 212 :: Ptr Bool32))
+    inheritedQueries <- peek @Bool32 ((p `plusPtr` 216 :: Ptr Bool32))
+    pure $ PhysicalDeviceFeatures
+             (bool32ToBool robustBufferAccess)
+             (bool32ToBool fullDrawIndexUint32)
+             (bool32ToBool imageCubeArray)
+             (bool32ToBool independentBlend)
+             (bool32ToBool geometryShader)
+             (bool32ToBool tessellationShader)
+             (bool32ToBool sampleRateShading)
+             (bool32ToBool dualSrcBlend)
+             (bool32ToBool logicOp)
+             (bool32ToBool multiDrawIndirect)
+             (bool32ToBool drawIndirectFirstInstance)
+             (bool32ToBool depthClamp)
+             (bool32ToBool depthBiasClamp)
+             (bool32ToBool fillModeNonSolid)
+             (bool32ToBool depthBounds)
+             (bool32ToBool wideLines)
+             (bool32ToBool largePoints)
+             (bool32ToBool alphaToOne)
+             (bool32ToBool multiViewport)
+             (bool32ToBool samplerAnisotropy)
+             (bool32ToBool textureCompressionETC2)
+             (bool32ToBool textureCompressionASTC_LDR)
+             (bool32ToBool textureCompressionBC)
+             (bool32ToBool occlusionQueryPrecise)
+             (bool32ToBool pipelineStatisticsQuery)
+             (bool32ToBool vertexPipelineStoresAndAtomics)
+             (bool32ToBool fragmentStoresAndAtomics)
+             (bool32ToBool shaderTessellationAndGeometryPointSize)
+             (bool32ToBool shaderImageGatherExtended)
+             (bool32ToBool shaderStorageImageExtendedFormats)
+             (bool32ToBool shaderStorageImageMultisample)
+             (bool32ToBool shaderStorageImageReadWithoutFormat)
+             (bool32ToBool shaderStorageImageWriteWithoutFormat)
+             (bool32ToBool shaderUniformBufferArrayDynamicIndexing)
+             (bool32ToBool shaderSampledImageArrayDynamicIndexing)
+             (bool32ToBool shaderStorageBufferArrayDynamicIndexing)
+             (bool32ToBool shaderStorageImageArrayDynamicIndexing)
+             (bool32ToBool shaderClipDistance)
+             (bool32ToBool shaderCullDistance)
+             (bool32ToBool shaderFloat64)
+             (bool32ToBool shaderInt64)
+             (bool32ToBool shaderInt16)
+             (bool32ToBool shaderResourceResidency)
+             (bool32ToBool shaderResourceMinLod)
+             (bool32ToBool sparseBinding)
+             (bool32ToBool sparseResidencyBuffer)
+             (bool32ToBool sparseResidencyImage2D)
+             (bool32ToBool sparseResidencyImage3D)
+             (bool32ToBool sparseResidency2Samples)
+             (bool32ToBool sparseResidency4Samples)
+             (bool32ToBool sparseResidency8Samples)
+             (bool32ToBool sparseResidency16Samples)
+             (bool32ToBool sparseResidencyAliased)
+             (bool32ToBool variableMultisampleRate)
+             (bool32ToBool inheritedQueries)
+
+instance Storable PhysicalDeviceFeatures where
+  sizeOf ~_ = 220
+  alignment ~_ = 4
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceFeatures where
+  zero = PhysicalDeviceFeatures
+           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
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkPhysicalDeviceSparseProperties - Structure specifying physical device
+-- sparse memory properties
+--
+-- = 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.Bool32', 'PhysicalDeviceProperties'
+data PhysicalDeviceSparseProperties = PhysicalDeviceSparseProperties
+  { -- | @residencyStandard2DBlockShape@ is 'Vulkan.Core10.FundamentalTypes.TRUE'
+    -- 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://registry.khronos.org/vulkan/specs/latest/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'
+    -- structure for single-sample 2D images is not /required/ to match the
+    -- standard sparse image block dimensions listed in the table.
+    residencyStandard2DBlockShape :: Bool
+  , -- | @residencyStandard2DMultisampleBlockShape@ is
+    -- '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://registry.khronos.org/vulkan/specs/latest/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'
+    -- structure for multisample 2D images is not /required/ to match the
+    -- standard sparse image block dimensions listed in the table.
+    residencyStandard2DMultisampleBlockShape :: Bool
+  , -- | @residencyStandard3DBlockShape@ is 'Vulkan.Core10.FundamentalTypes.TRUE'
+    -- 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://registry.khronos.org/vulkan/specs/latest/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'
+    -- structure for 3D images is not /required/ to match the standard sparse
+    -- image block dimensions listed in the table.
+    residencyStandard3DBlockShape :: Bool
+  , -- | @residencyAlignedMipSize@ is 'Vulkan.Core10.FundamentalTypes.TRUE' if
+    -- images with mip level dimensions that are not integer multiples of the
+    -- corresponding dimensions of the sparse image block /may/ be placed in
+    -- the mip tail. If this property is not reported, only mip levels with
+    -- dimensions smaller than the @imageGranularity@ member of the
+    -- 'Vulkan.Core10.SparseResourceMemoryManagement.SparseImageFormatProperties'
+    -- structure will be placed in the mip tail. If this property is reported
+    -- the implementation is allowed to return
+    -- 'Vulkan.Core10.Enums.SparseImageFormatFlagBits.SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT'
+    -- in the @flags@ member of
+    -- 'Vulkan.Core10.SparseResourceMemoryManagement.SparseImageFormatProperties',
+    -- indicating that mip level dimensions that are not integer multiples of
+    -- the corresponding dimensions of the sparse image block will be placed in
+    -- the mip tail.
+    residencyAlignedMipSize :: Bool
+  , -- | @residencyNonResidentStrict@ specifies whether the physical device /can/
+    -- consistently access non-resident regions of a resource. If this property
+    -- is 'Vulkan.Core10.FundamentalTypes.TRUE', access to non-resident regions
+    -- of resources will be guaranteed to return values as if the resource was
+    -- populated with 0; writes to non-resident regions will be discarded.
+    residencyNonResidentStrict :: Bool
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceSparseProperties)
+#endif
+deriving instance Show PhysicalDeviceSparseProperties
+
+instance ToCStruct PhysicalDeviceSparseProperties where
+  withCStruct x f = allocaBytes 20 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceSparseProperties{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr Bool32)) (boolToBool32 (residencyStandard2DBlockShape))
+    poke ((p `plusPtr` 4 :: Ptr Bool32)) (boolToBool32 (residencyStandard2DMultisampleBlockShape))
+    poke ((p `plusPtr` 8 :: Ptr Bool32)) (boolToBool32 (residencyStandard3DBlockShape))
+    poke ((p `plusPtr` 12 :: Ptr Bool32)) (boolToBool32 (residencyAlignedMipSize))
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (residencyNonResidentStrict))
+    f
+  cStructSize = 20
+  cStructAlignment = 4
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 4 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 8 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 12 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceSparseProperties where
+  peekCStruct p = do
+    residencyStandard2DBlockShape <- peek @Bool32 ((p `plusPtr` 0 :: Ptr Bool32))
+    residencyStandard2DMultisampleBlockShape <- peek @Bool32 ((p `plusPtr` 4 :: Ptr Bool32))
+    residencyStandard3DBlockShape <- peek @Bool32 ((p `plusPtr` 8 :: Ptr Bool32))
+    residencyAlignedMipSize <- peek @Bool32 ((p `plusPtr` 12 :: Ptr Bool32))
+    residencyNonResidentStrict <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDeviceSparseProperties
+             (bool32ToBool residencyStandard2DBlockShape)
+             (bool32ToBool residencyStandard2DMultisampleBlockShape)
+             (bool32ToBool residencyStandard3DBlockShape)
+             (bool32ToBool residencyAlignedMipSize)
+             (bool32ToBool residencyNonResidentStrict)
+
+instance Storable PhysicalDeviceSparseProperties where
+  sizeOf ~_ = 20
+  alignment ~_ = 4
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceSparseProperties where
+  zero = PhysicalDeviceSparseProperties
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkPhysicalDeviceLimits - Structure reporting implementation-dependent
+-- physical device limits
+--
+-- = Members
+--
+-- The 'PhysicalDeviceLimits' are properties of the physical device. These
+-- are available in the @limits@ member of the 'PhysicalDeviceProperties'
+-- structure which is returned from 'getPhysicalDeviceProperties'.
+--
+-- = 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.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize', 'PhysicalDeviceProperties',
+-- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlags'
+data PhysicalDeviceLimits = PhysicalDeviceLimits
+  { -- | #limits-maxImageDimension1D# @maxImageDimension1D@ is the largest
+    -- dimension (@width@) that is guaranteed to be supported for all images
+    -- created with an @imageType@ of
+    -- 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D'. Some combinations of
+    -- image parameters (format, usage, etc.) /may/ allow support for larger
+    -- dimensions, which /can/ be queried using
+    -- 'getPhysicalDeviceImageFormatProperties'.
+    maxImageDimension1D :: Word32
+  , -- | #limits-maxImageDimension2D# @maxImageDimension2D@ is the largest
+    -- dimension (@width@ or @height@) that is guaranteed to be supported for
+    -- all images created with an @imageType@ of
+    -- 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D' and without
+    -- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_CUBE_COMPATIBLE_BIT'
+    -- set in @flags@. Some combinations of image parameters (format, usage,
+    -- etc.) /may/ allow support for larger dimensions, which /can/ be queried
+    -- using 'getPhysicalDeviceImageFormatProperties'.
+    maxImageDimension2D :: Word32
+  , -- | #limits-maxImageDimension3D# @maxImageDimension3D@ is the largest
+    -- dimension (@width@, @height@, or @depth@) that is guaranteed to be
+    -- supported for all images created with an @imageType@ of
+    -- 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D'. Some combinations of
+    -- image parameters (format, usage, etc.) /may/ allow support for larger
+    -- dimensions, which /can/ be queried using
+    -- 'getPhysicalDeviceImageFormatProperties'.
+    maxImageDimension3D :: Word32
+  , -- | #limits-maxImageDimensionCube# @maxImageDimensionCube@ is the largest
+    -- dimension (@width@ or @height@) that is guaranteed to be supported for
+    -- all images created with an @imageType@ of
+    -- 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D' and with
+    -- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_CUBE_COMPATIBLE_BIT'
+    -- set in @flags@. Some combinations of image parameters (format, usage,
+    -- etc.) /may/ allow support for larger dimensions, which /can/ be queried
+    -- using 'getPhysicalDeviceImageFormatProperties'.
+    maxImageDimensionCube :: Word32
+  , -- | #limits-maxImageArrayLayers# @maxImageArrayLayers@ is the maximum number
+    -- of layers (@arrayLayers@) for an image.
+    maxImageArrayLayers :: Word32
+  , -- | #limits-maxTexelBufferElements# @maxTexelBufferElements@ is the maximum
+    -- number of addressable texels for a buffer view created on a buffer which
+    -- was created with the
+    -- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT'
+    -- or
+    -- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT'
+    -- usage flag set.
+    maxTexelBufferElements :: Word32
+  , -- | #limits-maxUniformBufferRange# @maxUniformBufferRange@ is the maximum
+    -- value that /can/ be specified in the @range@ member of a
+    -- 'Vulkan.Core10.DescriptorSet.DescriptorBufferInfo' structure passed to
+    -- 'Vulkan.Core10.DescriptorSet.updateDescriptorSets' for descriptors of
+    -- type 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER'
+    -- or
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC'.
+    maxUniformBufferRange :: Word32
+  , -- | #limits-maxStorageBufferRange# @maxStorageBufferRange@ is the maximum
+    -- value that /can/ be specified in the @range@ member of a
+    -- 'Vulkan.Core10.DescriptorSet.DescriptorBufferInfo' structure passed to
+    -- 'Vulkan.Core10.DescriptorSet.updateDescriptorSets' for descriptors of
+    -- type 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER'
+    -- or
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC'.
+    -- If the
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-shader64BitIndexing shader64BitIndexing>
+    -- feature is enabled, this limit does not apply.
+    maxStorageBufferRange :: Word32
+  , -- | #limits-maxPushConstantsSize# @maxPushConstantsSize@ is the maximum
+    -- size, in bytes, of the pool of push constant memory. For each of the
+    -- push constant ranges indicated by the @pPushConstantRanges@ member of
+    -- the 'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo' structure,
+    -- (@offset@ + @size@) /must/ be less than or equal to this limit.
+    maxPushConstantsSize :: Word32
+  , -- | #limits-maxMemoryAllocationCount# @maxMemoryAllocationCount@ is the
+    -- maximum number of device memory allocations, as created by
+    -- 'Vulkan.Core10.Memory.allocateMemory', which /can/ simultaneously exist.
+    maxMemoryAllocationCount :: Word32
+  , -- | #limits-maxSamplerAllocationCount# @maxSamplerAllocationCount@ is the
+    -- maximum number of sampler objects, as created by
+    -- 'Vulkan.Core10.Sampler.createSampler', which /can/ simultaneously exist
+    -- on a device. If the
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-descriptorHeap descriptorHeap>
+    -- feature is enabled and the application intends to use embedded samplers,
+    -- the number advertised here is effectively reduced by the quotient of
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-minSamplerHeapReservedRangeWithEmbedded minSamplerHeapReservedRangeWithEmbedded>
+    -- divided by
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-samplerDescriptorSize samplerDescriptorSize>,
+    -- to provide storage for embedded samplers when switching to heaps. If
+    -- embedded samplers are not used, this can be ignored.
+    maxSamplerAllocationCount :: Word32
+  , -- | #limits-bufferImageGranularity# @bufferImageGranularity@ is the
+    -- granularity, in bytes, at which buffer or linear image resources, linear
+    -- or optimal tensor resources, and optimal image resources /can/ be bound
+    -- to adjacent offsets in the same 'Vulkan.Core10.Handles.DeviceMemory'
+    -- object without aliasing. See
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-bufferimagegranularity Buffer-Image Granularity>
+    -- for more details.
+    bufferImageGranularity :: DeviceSize
+  , -- | #limits-sparseAddressSpaceSize# @sparseAddressSpaceSize@ is the total
+    -- amount of address space available, in bytes, for sparse memory
+    -- resources. This is an upper bound on the sum of the sizes of all sparse
+    -- resources, regardless of whether any memory is bound to them. If the
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-extendedSparseAddressSpace extendedSparseAddressSpace>
+    -- feature is enabled, then the difference between
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-extendedSparseAddressSpaceSize extendedSparseAddressSpaceSize>
+    -- and @sparseAddressSpaceSize@ can also be used, by
+    -- 'Vulkan.Core10.Handles.Image' created with the @usage@ member of
+    -- 'Vulkan.Core10.Image.ImageCreateInfo' only containing bits in
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-extendedSparseImageUsageFlags extendedSparseImageUsageFlags>
+    -- and 'Vulkan.Core10.Handles.Buffer' created with the @usage@ member of
+    -- 'Vulkan.Core10.Buffer.BufferCreateInfo' only containing bits in
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-extendedSparseBufferUsageFlags extendedSparseBufferUsageFlags>.
+    sparseAddressSpaceSize :: DeviceSize
+  , -- | #limits-maxBoundDescriptorSets# @maxBoundDescriptorSets@ is the maximum
+    -- number of descriptor sets that /can/ be simultaneously used by a
+    -- pipeline. See
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-sets>.
+    maxBoundDescriptorSets :: Word32
+  , -- | #limits-maxPerStageDescriptorSamplers# @maxPerStageDescriptorSamplers@
+    -- is the maximum number of samplers that /can/ be accessible to a single
+    -- shader stage in a pipeline layout. Descriptors with a type of
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLER' or
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER'
+    -- count against this limit. Only descriptors 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. A descriptor is accessible to a shader
+    -- stage when the @stageFlags@ member of the
+    -- 'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutBinding' structure has
+    -- the bit for that shader stage set. See
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-sampler>
+    -- and
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-combinedimagesampler>.
+    maxPerStageDescriptorSamplers :: Word32
+  , -- | #limits-maxPerStageDescriptorUniformBuffers#
+    -- @maxPerStageDescriptorUniformBuffers@ is the maximum number of uniform
+    -- buffers that /can/ be accessible to a single shader stage in a pipeline
+    -- layout. Descriptors with a type of
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER' or
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC'
+    -- count against this limit. Only descriptors 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. A descriptor is accessible to a shader
+    -- stage when the @stageFlags@ member of the
+    -- 'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutBinding' structure has
+    -- the bit for that shader stage set. See
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-uniformbuffer>
+    -- and
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-uniformbufferdynamic>.
+    maxPerStageDescriptorUniformBuffers :: Word32
+  , -- | #limits-maxPerStageDescriptorStorageBuffers#
+    -- @maxPerStageDescriptorStorageBuffers@ is the maximum number of storage
+    -- buffers that /can/ be accessible to a single shader stage in a pipeline
+    -- layout. Descriptors with a type of
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER' or
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC'
+    -- count against this limit. Only descriptors 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. A descriptor is accessible to a
+    -- pipeline shader stage when the @stageFlags@ member of the
+    -- 'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutBinding' structure has
+    -- the bit for that shader stage set. See
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-storagebuffer>
+    -- and
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-storagebufferdynamic>.
+    maxPerStageDescriptorStorageBuffers :: Word32
+  , -- | #limits-maxPerStageDescriptorSampledImages#
+    -- @maxPerStageDescriptorSampledImages@ is the maximum number of sampled
+    -- images that /can/ be accessible to a single shader stage in a pipeline
+    -- layout. Descriptors with a type of
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER',
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE', or
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER'
+    -- count against this limit. Only descriptors 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. A descriptor is accessible to a
+    -- pipeline shader stage when the @stageFlags@ member of the
+    -- 'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutBinding' structure has
+    -- the bit for that shader stage set. See
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-combinedimagesampler>,
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-sampledimage>,
+    -- and
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-uniformtexelbuffer>.
+    maxPerStageDescriptorSampledImages :: Word32
+  , -- | #limits-maxPerStageDescriptorStorageImages#
+    -- @maxPerStageDescriptorStorageImages@ is the maximum number of storage
+    -- images that /can/ be accessible to a single shader stage in a pipeline
+    -- layout. Descriptors with a type of
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE', or
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'
+    -- count against this limit. Only descriptors 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. A descriptor is accessible to a
+    -- pipeline shader stage when the @stageFlags@ member of the
+    -- 'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutBinding' structure has
+    -- the bit for that shader stage set. See
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-storageimage>,
+    -- and
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-storagetexelbuffer>.
+    maxPerStageDescriptorStorageImages :: Word32
+  , -- | #limits-maxPerStageDescriptorInputAttachments#
+    -- @maxPerStageDescriptorInputAttachments@ is the maximum number of input
+    -- attachments that /can/ be accessible to a single shader stage in a
+    -- pipeline layout, as well as the maximum usable input attachment index.
+    -- Descriptors with a type of
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'
+    -- count against this limit. Only descriptors 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. A descriptor is accessible to a
+    -- pipeline shader stage when the @stageFlags@ member of the
+    -- 'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutBinding' structure has
+    -- the bit for that shader stage set. These are only supported for the
+    -- fragment stage. See
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-inputattachment>.
+    --
+    -- @maxPerStageDescriptorInputAttachments@ was originally only intended to
+    -- limit the number of attachments per stage, not the number of available
+    -- input indices across all shaders in a render pass. The input indices
+    -- were allowed to be semi arbitrary for render pass objects, or fully
+    -- arbitrary for dynamic rendering, however some implementations have fixed
+    -- limits for them. Applications already exist that exceed this limit, and
+    -- they will continue to work where they already did, but will fail to
+    -- render on some platforms. For forward looking applications, this can be
+    -- worked around by either making careful use of index remapping with
+    -- 'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'
+    -- for dynamic rendering, or splitting a subpass with too many input
+    -- attachments into multiple subpasses.
+    maxPerStageDescriptorInputAttachments :: Word32
+  , -- | #limits-maxPerStageResources# @maxPerStageResources@ is the maximum
+    -- number of resources that /can/ be accessible to a single shader stage in
+    -- a pipeline layout. Descriptors with a type of
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER',
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER',
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER',
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER',
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER',
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC',
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC',
+    -- or 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'
+    -- count against this limit. Only descriptors 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. For the fragment shader stage the
+    -- framebuffer color attachments also count against this limit.
+    maxPerStageResources :: Word32
+  , -- | #limits-maxDescriptorSetSamplers# @maxDescriptorSetSamplers@ is the
+    -- maximum number of samplers that /can/ be included in a pipeline layout.
+    -- Descriptors with a type of
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLER' or
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER'
+    -- count against this limit. Only descriptors 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. See
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-sampler>
+    -- and
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-combinedimagesampler>.
+    maxDescriptorSetSamplers :: Word32
+  , -- | #limits-maxDescriptorSetUniformBuffers# @maxDescriptorSetUniformBuffers@
+    -- is the maximum number of uniform buffers that /can/ be included in a
+    -- pipeline layout. Descriptors with a type of
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER' or
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC'
+    -- count against this limit. Only descriptors 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. See
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-uniformbuffer>
+    -- and
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-uniformbufferdynamic>.
+    maxDescriptorSetUniformBuffers :: Word32
+  , -- | #limits-maxDescriptorSetUniformBuffersDynamic#
+    -- @maxDescriptorSetUniformBuffersDynamic@ is the maximum number of dynamic
+    -- uniform buffers that /can/ be included in a pipeline layout. Descriptors
+    -- with a type of
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC'
+    -- count against this limit. Only descriptors 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. See
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-uniformbufferdynamic>.
+    maxDescriptorSetUniformBuffersDynamic :: Word32
+  , -- | #limits-maxDescriptorSetStorageBuffers# @maxDescriptorSetStorageBuffers@
+    -- is the maximum number of storage buffers that /can/ be included in a
+    -- pipeline layout. Descriptors with a type of
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER' or
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC'
+    -- count against this limit. Only descriptors 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. See
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-storagebuffer>
+    -- and
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-storagebufferdynamic>.
+    maxDescriptorSetStorageBuffers :: Word32
+  , -- | #limits-maxDescriptorSetStorageBuffersDynamic#
+    -- @maxDescriptorSetStorageBuffersDynamic@ is the maximum number of dynamic
+    -- storage buffers that /can/ be included in a pipeline layout. Descriptors
+    -- with a type of
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC'
+    -- count against this limit. Only descriptors 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. See
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-storagebufferdynamic>.
+    maxDescriptorSetStorageBuffersDynamic :: Word32
+  , -- | #limits-maxDescriptorSetSampledImages# @maxDescriptorSetSampledImages@
+    -- is the maximum number of sampled images that /can/ be included in a
+    -- pipeline layout. Descriptors with a type of
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER',
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE', or
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER'
+    -- count against this limit. Only descriptors 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. See
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-combinedimagesampler>,
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-sampledimage>,
+    -- and
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-uniformtexelbuffer>.
+    maxDescriptorSetSampledImages :: Word32
+  , -- | #limits-maxDescriptorSetStorageImages# @maxDescriptorSetStorageImages@
+    -- is the maximum number of storage images that /can/ be included in a
+    -- pipeline layout. Descriptors with a type of
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE', or
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'
+    -- count against this limit. Only descriptors 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. See
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-storageimage>,
+    -- and
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-storagetexelbuffer>.
+    maxDescriptorSetStorageImages :: Word32
+  , -- | #limits-maxDescriptorSetInputAttachments#
+    -- @maxDescriptorSetInputAttachments@ is the maximum number of input
+    -- attachments that /can/ be included in a pipeline layout. Descriptors
+    -- with a type of
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'
+    -- count against this limit. Only descriptors 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. See
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-inputattachment>.
+    maxDescriptorSetInputAttachments :: Word32
+  , -- | #limits-maxVertexInputAttributes# @maxVertexInputAttributes@ is the
+    -- maximum number of vertex input attributes that /can/ be specified for a
+    -- graphics pipeline. These are described in the array of
+    -- 'Vulkan.Core10.GraphicsPipeline.VertexInputAttributeDescription'
+    -- structures that are provided at graphics pipeline creation time via the
+    -- @pVertexAttributeDescriptions@ member of the
+    -- 'Vulkan.Core10.GraphicsPipeline.PipelineVertexInputStateCreateInfo'
+    -- structure. See
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#fxvertex-attrib>
+    -- and
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#fxvertex-input>.
+    maxVertexInputAttributes :: Word32
+  , -- | #limits-maxVertexInputBindings# @maxVertexInputBindings@ is the maximum
+    -- number of vertex buffers that /can/ be specified for providing vertex
+    -- attributes to a graphics pipeline. These are described in the array of
+    -- 'Vulkan.Core10.GraphicsPipeline.VertexInputBindingDescription'
+    -- structures that are provided at graphics pipeline creation time via the
+    -- @pVertexBindingDescriptions@ member of the
+    -- 'Vulkan.Core10.GraphicsPipeline.PipelineVertexInputStateCreateInfo'
+    -- structure. The @binding@ member of
+    -- 'Vulkan.Core10.GraphicsPipeline.VertexInputBindingDescription' /must/ be
+    -- less than this limit. See
+    -- <https://registry.khronos.org/vulkan/specs/latest/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.GraphicsPipeline.VertexInputAttributeDescription'
+    -- structure /must/ be less than or equal to this limit. See
+    -- <https://registry.khronos.org/vulkan/specs/latest/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.GraphicsPipeline.VertexInputBindingDescription' structure
+    -- /must/ be less than or equal to this limit. See
+    -- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#tessellation>.
+    maxTessellationGenerationLevel :: Word32
+  , -- | #limits-maxTessellationPatchSize# @maxTessellationPatchSize@ is the
+    -- maximum patch size, in vertices, of patches that /can/ be processed by
+    -- the tessellation control shader and tessellation primitive generator.
+    -- The @patchControlPoints@ member of the
+    -- 'Vulkan.Core10.GraphicsPipeline.PipelineTessellationStateCreateInfo'
+    -- structure 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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#tessellation>.
+    maxTessellationPatchSize :: Word32
+  , -- | #limits-maxTessellationControlPerVertexInputComponents#
+    -- @maxTessellationControlPerVertexInputComponents@ is the maximum number
+    -- of components of input variables which /can/ be provided as per-vertex
+    -- inputs to the tessellation control shader stage.
+    maxTessellationControlPerVertexInputComponents :: Word32
+  , -- | #limits-maxTessellationControlPerVertexOutputComponents#
+    -- @maxTessellationControlPerVertexOutputComponents@ is the maximum number
+    -- of components of per-vertex output variables which /can/ be output from
+    -- the tessellation control shader stage.
+    maxTessellationControlPerVertexOutputComponents :: Word32
+  , -- | #limits-maxTessellationControlPerPatchOutputComponents#
+    -- @maxTessellationControlPerPatchOutputComponents@ is the maximum number
+    -- of components of per-patch output variables which /can/ be output from
+    -- the tessellation control shader stage.
+    maxTessellationControlPerPatchOutputComponents :: Word32
+  , -- | #limits-maxTessellationControlTotalOutputComponents#
+    -- @maxTessellationControlTotalOutputComponents@ is the maximum total
+    -- number of components of per-vertex and per-patch output variables which
+    -- /can/ be output from the tessellation control shader stage.
+    maxTessellationControlTotalOutputComponents :: Word32
+  , -- | #limits-maxTessellationEvaluationInputComponents#
+    -- @maxTessellationEvaluationInputComponents@ is the maximum number of
+    -- components of input variables which /can/ be provided as per-vertex
+    -- inputs to the tessellation evaluation shader stage.
+    maxTessellationEvaluationInputComponents :: Word32
+  , -- | #limits-maxTessellationEvaluationOutputComponents#
+    -- @maxTessellationEvaluationOutputComponents@ is the maximum number of
+    -- components of per-vertex output variables which /can/ be output from the
+    -- tessellation evaluation shader stage.
+    maxTessellationEvaluationOutputComponents :: Word32
+  , -- | #limits-maxGeometryShaderInvocations# @maxGeometryShaderInvocations@ is
+    -- 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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#geometry>.
+    maxGeometryShaderInvocations :: Word32
+  , -- | #limits-maxGeometryInputComponents# @maxGeometryInputComponents@ is the
+    -- maximum number of components of input variables which /can/ be provided
+    -- as inputs to the geometry shader stage.
+    maxGeometryInputComponents :: Word32
+  , -- | #limits-maxGeometryOutputComponents# @maxGeometryOutputComponents@ is
+    -- the maximum number of components of output variables which /can/ be
+    -- output from the geometry shader stage.
+    maxGeometryOutputComponents :: Word32
+  , -- | #limits-maxGeometryOutputVertices# @maxGeometryOutputVertices@ is the
+    -- maximum number of vertices which /can/ be emitted by any geometry
+    -- shader.
+    maxGeometryOutputVertices :: Word32
+  , -- | #limits-maxGeometryTotalOutputComponents#
+    -- @maxGeometryTotalOutputComponents@ is the maximum total number of
+    -- components of output variables, across all emitted vertices, which /can/
+    -- be output from the geometry shader stage.
+    maxGeometryTotalOutputComponents :: Word32
+  , -- | #limits-maxFragmentInputComponents# @maxFragmentInputComponents@ is the
+    -- maximum number of components of input variables which /can/ be provided
+    -- as inputs to the fragment shader stage.
+    maxFragmentInputComponents :: Word32
+  , -- | #limits-maxFragmentOutputAttachments# @maxFragmentOutputAttachments@ is
+    -- the maximum number of output attachments which /can/ be written to by
+    -- the fragment shader stage.
+    maxFragmentOutputAttachments :: Word32
+  , -- | #limits-maxFragmentDualSrcAttachments# @maxFragmentDualSrcAttachments@
+    -- 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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#framebuffer-dsb>
+    -- and
+    -- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-fragmentoutput Fragment Output Interface>)
+    -- which /can/ be used in the fragment shader stage.
+    maxFragmentCombinedOutputResources :: Word32
+  , -- | #limits-maxComputeSharedMemorySize# @maxComputeSharedMemorySize@ is the
+    -- maximum total storage size, in bytes, available for variables declared
+    -- with the @Workgroup@ storage class in shader modules (or with the
+    -- @shared@ storage qualifier in GLSL) in the compute shader stage.
+    maxComputeSharedMemorySize :: Word32
+  , -- | #limits-maxComputeWorkGroupCount# @maxComputeWorkGroupCount@[3] is the
+    -- maximum number of local workgroups that /can/ be dispatched by a single
+    -- dispatching command. These three values represent the maximum number of
+    -- local workgroups for the X, Y, and Z dimensions, respectively. The
+    -- workgroup count parameters to the dispatching commands /must/ be less
+    -- than or equal to the corresponding limit. See
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#dispatch>.
+    maxComputeWorkGroupCount :: (Word32, Word32, Word32)
+  , -- | #limits-maxComputeWorkGroupInvocations# @maxComputeWorkGroupInvocations@
+    -- is the maximum total number of compute shader invocations in a single
+    -- local workgroup. The product of the X, Y, and Z sizes, as specified by
+    -- the @LocalSize@ or @LocalSizeId@ execution mode in shader modules or by
+    -- the object decorated by the @WorkgroupSize@ decoration, /must/ be less
+    -- than or equal to this limit.
+    maxComputeWorkGroupInvocations :: Word32
+  , -- | #limits-maxComputeWorkGroupSize# @maxComputeWorkGroupSize@[3] is the
+    -- maximum size of a local compute workgroup, per dimension. These three
+    -- values represent the maximum local workgroup size in the X, Y, and Z
+    -- dimensions, respectively. The @x@, @y@, and @z@ sizes, as specified by
+    -- the @LocalSize@ or @LocalSizeId@ execution mode or by the object
+    -- decorated by the @WorkgroupSize@ decoration in shader modules, /must/ be
+    -- less than or equal to the corresponding limit.
+    maxComputeWorkGroupSize :: (Word32, Word32, Word32)
+  , -- | #limits-subPixelPrecisionBits# @subPixelPrecisionBits@ is the number of
+    -- bits of subpixel precision in framebuffer coordinates xf and yf. See
+    -- <https://registry.khronos.org/vulkan/specs/latest/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
+    -- minification and magnification filters. 2@subTexelPrecisionBits@ is the
+    -- actual number of divisions along each axis of the image represented.
+    -- Sub-texel values calculated during image sampling will snap to these
+    -- locations when generating the filtered results.
+    subTexelPrecisionBits :: Word32
+  , -- | #limits-mipmapPrecisionBits# @mipmapPrecisionBits@ is the number of bits
+    -- of division that the LOD calculation for mipmap fetching get snapped to
+    -- when determining the contribution from each mip level to the mip
+    -- filtered results. 2@mipmapPrecisionBits@ is the actual number of
+    -- divisions.
+    mipmapPrecisionBits :: Word32
+  , -- | #limits-maxDrawIndexedIndexValue# @maxDrawIndexedIndexValue@ is the
+    -- 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://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/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
+    -- 'Vulkan.Core10.Sampler.SamplerCreateInfo' structure and the @Bias@
+    -- 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://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#samplers-maxAnisotropy>.
+    maxSamplerAnisotropy :: Float
+  , -- | #limits-maxViewports# @maxViewports@ is the maximum number of active
+    -- viewports. The @viewportCount@ member of the
+    -- 'Vulkan.Core10.GraphicsPipeline.PipelineViewportStateCreateInfo'
+    -- structure that is provided at pipeline creation /must/ be less than or
+    -- equal to this limit.
+    maxViewports :: Word32
+  , -- | #limits-maxViewportDimensions# @maxViewportDimensions@[2] are the
+    -- maximum viewport dimensions in the X (width) and Y (height) dimensions,
+    -- 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://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#vertexpostproc-viewport Controlling the Viewport>.
+    --
+    -- The wide range of values required for @viewportBoundsRange@ allows the
+    -- viewport to be arbitrarily shifted relative to the output render target
+    -- while still partially overlapping. However, the minimum range required
+    -- to achieve this would actually be [-@size@ + 1, 2 × @size@ - 1]. As
+    -- these limits in implementations are typically simple power-of-two
+    -- values, the specification reflects this convention, rounding the lower
+    -- bound accordingly.
+    viewportBoundsRange :: (Float, Float)
+  , -- | #limits-viewportSubPixelBits# @viewportSubPixelBits@ is the number of
+    -- bits of subpixel precision for viewport bounds. The subpixel precision
+    -- that floating-point viewport bounds are interpreted at is given by this
+    -- limit.
+    viewportSubPixelBits :: Word32
+  , -- | #limits-minMemoryMapAlignment# @minMemoryMapAlignment@ is the minimum
+    -- /required/ alignment, in bytes, of host visible memory allocations
+    -- within the host address space. When mapping a memory allocation with
+    -- 'Vulkan.Core10.Memory.mapMemory', subtracting @offset@ bytes from the
+    -- returned pointer will always produce an integer multiple of this limit.
+    -- See
+    -- <https://registry.khronos.org/vulkan/specs/latest/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. This limit is
+    -- equivalent to the maximum of the
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-uniformTexelBufferOffsetAlignmentBytes uniformTexelBufferOffsetAlignmentBytes>
+    -- and
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-storageTexelBufferOffsetAlignmentBytes storageTexelBufferOffsetAlignmentBytes>
+    -- members of
+    -- 'Vulkan.Core13.Promoted_From_VK_EXT_texel_buffer_alignment.PhysicalDeviceTexelBufferAlignmentProperties',
+    -- but smaller alignment is /optionally/ allowed by
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-storageTexelBufferOffsetSingleTexelAlignment storageTexelBufferOffsetSingleTexelAlignment>
+    -- and
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-uniformTexelBufferOffsetSingleTexelAlignment uniformTexelBufferOffsetSingleTexelAlignment>.
+    -- For single texel alignment, a format has an alignment requirement which
+    -- is the size of a single component if the size of the format is a
+    -- multiple of three bytes, otherwise, it is the size of the format itself.
+    -- The effective alignment requirement is the minimum of the per-format
+    -- alignment and
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-uniformTexelBufferOffsetAlignmentBytes uniformTexelBufferOffsetAlignmentBytes>
+    -- or
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-storageTexelBufferOffsetAlignmentBytes storageTexelBufferOffsetAlignmentBytes>
+    -- depending on the descriptor type. If the
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-texelBufferAlignment texelBufferAlignment>
+    -- feature is not enabled, the effective alignment requirement for any
+    -- format is @minTexelBufferOffsetAlignment@.
+    -- 'Vulkan.Core10.BufferView.BufferViewCreateInfo'::@offset@ /must/ be a
+    -- multiple of this value.
+    minTexelBufferOffsetAlignment :: DeviceSize
+  , -- | #limits-minUniformBufferOffsetAlignment#
+    -- @minUniformBufferOffsetAlignment@ is the minimum /required/ alignment,
+    -- in bytes, for the @offset@ member of the
+    -- 'Vulkan.Core10.DescriptorSet.DescriptorBufferInfo' structure for uniform
+    -- buffers. When a descriptor of type
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER' or
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC'
+    -- is updated, the @offset@ /must/ be an integer multiple of this limit.
+    -- Similarly, dynamic offsets for uniform buffers /must/ be multiples of
+    -- this limit. The value /must/ be a power of two.
+    minUniformBufferOffsetAlignment :: DeviceSize
+  , -- | #limits-minStorageBufferOffsetAlignment#
+    -- @minStorageBufferOffsetAlignment@ is the minimum /required/ alignment,
+    -- in bytes, for the @offset@ member of the
+    -- 'Vulkan.Core10.DescriptorSet.DescriptorBufferInfo' structure for storage
+    -- buffers. When a descriptor of type
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER' or
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC'
+    -- is updated, the @offset@ /must/ be an integer multiple of this limit.
+    -- Similarly, dynamic offsets for storage buffers /must/ be multiples of
+    -- this limit. The value /must/ be a power of two.
+    minStorageBufferOffsetAlignment :: DeviceSize
+  , -- | #limits-minTexelOffset# @minTexelOffset@ is the minimum offset value for
+    -- the @Offset@ or @ConstOffset@ image operand of any of the
+    -- @OpImageSample*@ or @OpImageFetch*@ image instructions.
+    minTexelOffset :: Int32
+  , -- | #limits-maxTexelOffset# @maxTexelOffset@ is the maximum offset value for
+    -- the @Offset@ or @ConstOffset@ image operand of any of the
+    -- @OpImageSample*@ or @OpImageFetch*@ image instructions.
+    maxTexelOffset :: Word32
+  , -- | #limits-minTexelGatherOffset# @minTexelGatherOffset@ is the minimum
+    -- offset value for the @Offset@, @ConstOffset@, or @ConstOffsets@ image
+    -- operands of any of the @OpImage*Gather@ and @OpImageGatherQCOM@ image
+    -- instructions.
+    minTexelGatherOffset :: Int32
+  , -- | #limits-maxTexelGatherOffset# @maxTexelGatherOffset@ is the maximum
+    -- offset value for the @Offset@, @ConstOffset@, or @ConstOffsets@ image
+    -- operands of any of the @OpImage*Gather@ and @OpImageGatherQCOM@ image
+    -- instructions.
+    maxTexelGatherOffset :: Word32
+  , -- | #limits-minInterpolationOffset# @minInterpolationOffset@ is the base
+    -- minimum (inclusive) negative offset value for the @Offset@ operand of
+    -- the @InterpolateAtOffset@ extended instruction.
+    minInterpolationOffset :: Float
+  , -- | #limits-maxInterpolationOffset# @maxInterpolationOffset@ is the base
+    -- maximum (inclusive) positive offset value for the @Offset@ operand of
+    -- the @InterpolateAtOffset@ extended instruction.
+    maxInterpolationOffset :: Float
+  , -- | #limits-subPixelInterpolationOffsetBits#
+    -- @subPixelInterpolationOffsetBits@ is the number of fractional bits that
+    -- the @x@ and @y@ offsets to the @InterpolateAtOffset@ extended
+    -- instruction /may/ be rounded to as fixed-point values.
+    subPixelInterpolationOffsetBits :: Word32
+  , -- | #limits-maxFramebufferWidth# @maxFramebufferWidth@ is the maximum width
+    -- for a framebuffer. The @width@ member of the
+    -- 'Vulkan.Core10.Pass.FramebufferCreateInfo' structure /must/ be less than
+    -- or equal to this limit.
+    maxFramebufferWidth :: Word32
+  , -- | #limits-maxFramebufferHeight# @maxFramebufferHeight@ is the maximum
+    -- height for a framebuffer. The @height@ member of the
+    -- 'Vulkan.Core10.Pass.FramebufferCreateInfo' structure /must/ be less than
+    -- or equal to this limit.
+    maxFramebufferHeight :: Word32
+  , -- | #limits-maxFramebufferLayers# @maxFramebufferLayers@ is the maximum
+    -- layer count for a layered framebuffer. The @layers@ member of the
+    -- 'Vulkan.Core10.Pass.FramebufferCreateInfo' structure /must/ be less than
+    -- or equal to this limit.
+    maxFramebufferLayers :: Word32
+  , -- | #limits-framebufferColorSampleCounts# @framebufferColorSampleCounts@ is
+    -- a bitmask1 of
+    -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' indicating
+    -- 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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-framebufferIntegerColorSampleCounts framebufferIntegerColorSampleCounts>.
+    framebufferColorSampleCounts :: SampleCountFlags
+  , -- | #limits-framebufferDepthSampleCounts# @framebufferDepthSampleCounts@ is
+    -- a bitmask1 of
+    -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' indicating
+    -- the supported depth sample counts for all framebuffer depth\/stencil
+    -- attachments, when the format includes a depth component.
+    framebufferDepthSampleCounts :: SampleCountFlags
+  , -- | #limits-framebufferStencilSampleCounts# @framebufferStencilSampleCounts@
+    -- is a bitmask1 of
+    -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' indicating
+    -- the supported stencil sample counts for all framebuffer depth\/stencil
+    -- attachments, when the format includes a stencil component.
+    framebufferStencilSampleCounts :: SampleCountFlags
+  , -- | #limits-framebufferNoAttachmentsSampleCounts#
+    -- @framebufferNoAttachmentsSampleCounts@ is a bitmask1 of
+    -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' indicating
+    -- the supported sample counts for a
+    -- <https://registry.khronos.org/vulkan/specs/latest/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.
+    -- The @colorAttachmentCount@ member of the
+    -- 'Vulkan.Core10.Pass.SubpassDescription' or
+    -- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.SubpassDescription2'
+    -- structure /must/ be less than or equal to this limit.
+    maxColorAttachments :: Word32
+  , -- | #limits-sampledImageColorSampleCounts# @sampledImageColorSampleCounts@
+    -- is a bitmask1 of
+    -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' indicating
+    -- the sample counts supported for all 2D images created with
+    -- 'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL', the
+    -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT' usage
+    -- flag set, and a non-integer color format.
+    sampledImageColorSampleCounts :: SampleCountFlags
+  , -- | #limits-sampledImageIntegerSampleCounts#
+    -- @sampledImageIntegerSampleCounts@ is a bitmask1 of
+    -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' indicating
+    -- the sample counts supported for all 2D images created with
+    -- 'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL', the
+    -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT' usage
+    -- flag set, and an integer color format.
+    sampledImageIntegerSampleCounts :: SampleCountFlags
+  , -- | #limits-sampledImageDepthSampleCounts# @sampledImageDepthSampleCounts@
+    -- is a bitmask1 of
+    -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' indicating
+    -- the sample counts supported for all 2D images created with
+    -- 'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL', the
+    -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT' usage
+    -- flag set, and a depth format.
+    sampledImageDepthSampleCounts :: SampleCountFlags
+  , -- | #limits-sampledImageStencilSampleCounts#
+    -- @sampledImageStencilSampleCounts@ is a bitmask1 of
+    -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' indicating
+    -- the sample counts supported for all 2D images created with
+    -- 'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL', the
+    -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT' usage
+    -- flag set, and a stencil format.
+    sampledImageStencilSampleCounts :: SampleCountFlags
+  , -- | #limits-storageImageSampleCounts# @storageImageSampleCounts@ is a
+    -- bitmask1 of
+    -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' indicating
+    -- the sample counts supported for all 2D images created with
+    -- 'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL', and the
+    -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_STORAGE_BIT' usage
+    -- flag set.
+    storageImageSampleCounts :: SampleCountFlags
+  , -- | #limits-maxSampleMaskWords# @maxSampleMaskWords@ is the maximum number
+    -- of array elements of a variable decorated with the
+    -- 'Vulkan.Core10.FundamentalTypes.SampleMask' built-in decoration.
+    maxSampleMaskWords :: Word32
+  , -- | #limits-timestampComputeAndGraphics# @timestampComputeAndGraphics@
+    -- specifies support for timestamps on all graphics and compute queues. If
+    -- this limit is 'Vulkan.Core10.FundamentalTypes.TRUE', all queues that
+    -- advertise the 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' or
+    -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT' in the
+    -- 'QueueFamilyProperties'::@queueFlags@ support
+    -- 'QueueFamilyProperties'::@timestampValidBits@ of at least 36. See
+    -- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/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
+    -- any array declared with the @ClipDistance@ built-in decoration in a
+    -- shader module /must/ be less than or equal to this limit.
+    maxClipDistances :: Word32
+  , -- | #limits-maxCullDistances# @maxCullDistances@ is the maximum number of
+    -- cull distances that /can/ be used in a single shader stage. The size of
+    -- any array declared with the @CullDistance@ built-in decoration in a
+    -- shader module /must/ be less than or equal to this limit.
+    maxCullDistances :: Word32
+  , -- | #limits-maxCombinedClipAndCullDistances#
+    -- @maxCombinedClipAndCullDistances@ is the maximum combined number of clip
+    -- and cull distances that /can/ be used in a single shader stage. The sum
+    -- of the sizes of all arrays declared with the @ClipDistance@ and
+    -- @CullDistance@ built-in decoration used by a single shader stage in a
+    -- shader module /must/ be less than or equal to this limit.
+    maxCombinedClipAndCullDistances :: Word32
+  , -- | #limits-discreteQueuePriorities# @discreteQueuePriorities@ is the number
+    -- of discrete priorities that /can/ be assigned to a queue based on the
+    -- value of each member of
+    -- '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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#devsandqueues-priority>.
+    discreteQueuePriorities :: Word32
+  , -- | #limits-pointSizeRange# @pointSizeRange@[2] is the range
+    -- [@minimum@,@maximum@] of supported sizes for points. Values written to
+    -- variables decorated with the @PointSize@ built-in decoration are clamped
+    -- to this range.
+    pointSizeRange :: (Float, Float)
+  , -- | #limits-lineWidthRange# @lineWidthRange@[2] is the range
+    -- [@minimum@,@maximum@] of supported widths for lines. Values specified by
+    -- the @lineWidth@ member of the
+    -- 'Vulkan.Core10.GraphicsPipeline.PipelineRasterizationStateCreateInfo' or
+    -- the @lineWidth@ parameter to
+    -- 'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth' are clamped to
+    -- this range.
+    lineWidthRange :: (Float, Float)
+  , -- | #limits-pointSizeGranularity# @pointSizeGranularity@ is the granularity
+    -- of supported point sizes. Not all point sizes in the range defined by
+    -- @pointSizeRange@ are supported. This limit specifies the granularity (or
+    -- increment) between successive supported point sizes.
+    pointSizeGranularity :: Float
+  , -- | #limits-lineWidthGranularity# @lineWidthGranularity@ is the granularity
+    -- of supported line widths. Not all line widths in the range defined by
+    -- @lineWidthRange@ are supported. This limit specifies the granularity (or
+    -- increment) between successive supported line widths.
+    lineWidthGranularity :: Float
+  , -- | #limits-strictLines# @strictLines@ specifies whether lines are
+    -- rasterized according to the preferred method of rasterization. If set to
+    -- '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://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/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
+    -- different sample locations.
+    standardSampleLocations :: Bool
+  , -- | #limits-optimalBufferCopyOffsetAlignment#
+    -- @optimalBufferCopyOffsetAlignment@ is the optimal buffer offset
+    -- alignment in bytes for
+    -- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.cmdCopyBufferToImage2',
+    -- 'Vulkan.Core10.CommandBufferBuilding.cmdCopyBufferToImage',
+    -- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.cmdCopyImageToBuffer2',
+    -- and 'Vulkan.Core10.CommandBufferBuilding.cmdCopyImageToBuffer'. This
+    -- value is also the optimal host memory offset alignment in bytes for
+    -- 'Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy.copyMemoryToImage'
+    -- and
+    -- 'Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy.copyImageToMemory'.
+    -- 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.
+    optimalBufferCopyOffsetAlignment :: DeviceSize
+  , -- | #limits-optimalBufferCopyRowPitchAlignment#
+    -- @optimalBufferCopyRowPitchAlignment@ is the optimal buffer row pitch
+    -- alignment in bytes for
+    -- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.cmdCopyBufferToImage2',
+    -- 'Vulkan.Core10.CommandBufferBuilding.cmdCopyBufferToImage',
+    -- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.cmdCopyImageToBuffer2',
+    -- and 'Vulkan.Core10.CommandBufferBuilding.cmdCopyImageToBuffer'. This
+    -- value is also the optimal host memory row pitch alignment in bytes for
+    -- 'Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy.copyMemoryToImage'
+    -- and
+    -- 'Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy.copyImageToMemory'.
+    -- 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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-device-hostaccess host-mapped device memory>.
+    -- The value /must/ be a power of two.
+    --
+    -- [1]
+    --     For all bitmasks of
+    --     'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits', the
+    --     sample count limits defined above represent the minimum supported
+    --     sample counts for each image type. Individual images /may/ support
+    --     additional sample counts, which are queried using
+    --     'getPhysicalDeviceImageFormatProperties' as described in
+    --     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-supported-sample-counts Supported Sample Counts>.
     nonCoherentAtomSize :: DeviceSize
   }
   deriving (Typeable, Eq)
diff --git a/src/Vulkan/Core10/Enums.hs b/src/Vulkan/Core10/Enums.hs
--- a/src/Vulkan/Core10/Enums.hs
+++ b/src/Vulkan/Core10/Enums.hs
@@ -71,7 +71,7 @@
                             , module Vulkan.Core10.Enums.PrimitiveTopology
                             , module Vulkan.Core10.Enums.QueryControlFlagBits
                             , module Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits
-                            , module Vulkan.Core10.Enums.QueryPoolCreateFlags
+                            , module Vulkan.Core10.Enums.QueryPoolCreateFlagBits
                             , module Vulkan.Core10.Enums.QueryResultFlagBits
                             , module Vulkan.Core10.Enums.QueryType
                             , module Vulkan.Core10.Enums.QueueFlagBits
@@ -167,7 +167,7 @@
 import Vulkan.Core10.Enums.PrimitiveTopology
 import Vulkan.Core10.Enums.QueryControlFlagBits
 import Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits
-import Vulkan.Core10.Enums.QueryPoolCreateFlags
+import Vulkan.Core10.Enums.QueryPoolCreateFlagBits
 import Vulkan.Core10.Enums.QueryResultFlagBits
 import Vulkan.Core10.Enums.QueryType
 import Vulkan.Core10.Enums.QueueFlagBits
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,8 +18,8 @@
                                                            , ACCESS_HOST_WRITE_BIT
                                                            , ACCESS_MEMORY_READ_BIT
                                                            , ACCESS_MEMORY_WRITE_BIT
-                                                           , ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV
-                                                           , ACCESS_COMMAND_PREPROCESS_READ_BIT_NV
+                                                           , ACCESS_COMMAND_PREPROCESS_WRITE_BIT_EXT
+                                                           , ACCESS_COMMAND_PREPROCESS_READ_BIT_EXT
                                                            , ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR
                                                            , ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT
                                                            , ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR
@@ -55,10 +55,275 @@
 -- These values all have the same meaning as the equivalently named values
 -- for 'Vulkan.Core13.Enums.AccessFlags2.AccessFlags2'.
 --
+-- -   'ACCESS_NONE' specifies no accesses.
+--
+-- -   '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.
+--
+-- -   '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.
+--
+-- -   'ACCESS_INDIRECT_COMMAND_READ_BIT' specifies read access to indirect
+--     command data read as part of an indirect build, trace, drawing or
+--     dispatching command. Such access occurs in the
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_DRAW_INDIRECT_BIT'
+--     pipeline stage.
+--
+-- -   'ACCESS_INDEX_READ_BIT' specifies read access to an index buffer as
+--     part of an indexed drawing command, bound by
+--     'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.cmdBindIndexBuffer2'
+--     and 'Vulkan.Core10.CommandBufferBuilding.cmdBindIndexBuffer'. Such
+--     access occurs in the
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_VERTEX_INPUT_BIT'
+--     pipeline stage.
+--
+-- -   '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.
+--
+-- -   'ACCESS_UNIFORM_READ_BIT' specifies read access to a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-uniformbuffer uniform buffer>
+--     in any shader pipeline stage.
+--
+-- -   'ACCESS_INPUT_ATTACHMENT_READ_BIT' specifies read access to an
+--     <https://registry.khronos.org/vulkan/specs/latest/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_SHADER_BIT_HUAWEI'
+--     or
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_SHADER_BIT'
+--     pipeline stage.
+--
+-- -   'ACCESS_SHADER_READ_BIT' specifies read access to a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-uniformtexelbuffer uniform texel buffer>,
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-sampledimage sampled image>,
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-storagebuffer storage buffer>,
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-physical-storage-buffer physical storage buffer>,
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shader-binding-table shader binding table>,
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-storagetensor storage tensor>,
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-storagetexelbuffer storage texel buffer>,
+--     or
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-storageimage storage image>
+--     in any shader pipeline stage.
+--
+-- -   'ACCESS_SHADER_WRITE_BIT' specifies write access to a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-storagebuffer storage buffer>,
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-physical-storage-buffer physical storage buffer>,
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-storagetensor storage tensor>,
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-storagetexelbuffer storage texel buffer>,
+--     or
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-storageimage storage image>
+--     in any shader pipeline stage.
+--
+-- -   'ACCESS_COLOR_ATTACHMENT_READ_BIT' specifies read access to a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass color attachment>,
+--     such as via
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#framebuffer-blending blending>
+--     (other than
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#framebuffer-blend-advanced advanced blend operations>),
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#framebuffer-logicop logic operations>
+--     or certain
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-load-operations render pass load operations>
+--     in the
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT'
+--     pipeline stage or via
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#fragops-shader-tileimage-reads fragment shader tile image reads>
+--     in the
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_SHADER_BIT'
+--     pipeline stage.
+--
+-- -   'ACCESS_COLOR_ATTACHMENT_WRITE_BIT' specifies write access to a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass color attachment>
+--     during a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass render pass>
+--     or via certain render pass
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-load-operations load>,
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-store-operations store>,
+--     and
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-resolve-operations multisample resolve>
+--     operations. This includes
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-resolve-operations multisample resolve>
+--     operations for depth\/stencil resolve attachments. Such access
+--     occurs in the
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT'
+--     pipeline stage.
+--
+-- -   'ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT' specifies read access to
+--     a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass depth\/stencil attachment>,
+--     via
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#fragops-ds-state depth or stencil operations>
+--     or certain
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-load-operations render pass load operations>
+--     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 or via
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#fragops-shader-tileimage-reads fragment shader tile image reads>
+--     in the
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_SHADER_BIT'
+--     pipeline stage.
+--
+-- -   'ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT' specifies write access
+--     to a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass depth\/stencil attachment>,
+--     via
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#fragops-ds-state depth or stencil operations>
+--     or certain render pass
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-load-operations load>
+--     and
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-store-operations 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.
+--
+-- -   'ACCESS_TRANSFER_READ_BIT' specifies read access to an image,
+--     tensor, or buffer in a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#copies copy>
+--     operation. Such access occurs in the
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_TRANSFER_BIT'
+--     pipeline stage.
+--
+-- -   'ACCESS_TRANSFER_WRITE_BIT' specifies write access to an image,
+--     tensor, or buffer in a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#clears clear>
+--     or
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#copies copy>
+--     operation. Such access occurs in the
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_TRANSFER_BIT'
+--     pipeline stage.
+--
+-- -   '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.
+--
+-- -   '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.
+--
+-- -   'ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT' specifies read access to
+--     a predicate as part of conditional rendering. Such access occurs in
+--     the
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT'
+--     pipeline stage.
+--
+-- -   'ACCESS_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.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT'
+--     pipeline stage.
+--
+-- -   'ACCESS_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.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT'
+--     pipeline stage.
+--
+-- -   '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'
+--     executes. Such access occurs in the
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT'
+--     pipeline stage.
+--
+-- -   'Vulkan.Extensions.VK_NV_device_generated_commands.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.Extensions.VK_NV_device_generated_commands.PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV'
+--     pipeline stage.
+--
+-- -   'Vulkan.Extensions.VK_NV_device_generated_commands.ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV'
+--     specifies writes to the target command buffer preprocess outputs in
+--     'Vulkan.Extensions.VK_NV_device_generated_commands.cmdPreprocessGeneratedCommandsNV'.
+--     Such access occurs in the
+--     'Vulkan.Extensions.VK_NV_device_generated_commands.PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV'
+--     pipeline stage.
+--
+-- -   'ACCESS_COMMAND_PREPROCESS_READ_BIT_EXT' specifies reads from buffer
+--     inputs to
+--     'Vulkan.Extensions.VK_EXT_device_generated_commands.cmdPreprocessGeneratedCommandsEXT'.
+--     Such access occurs in the
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_EXT'
+--     pipeline stage.
+--
+-- -   'ACCESS_COMMAND_PREPROCESS_WRITE_BIT_EXT' specifies writes to the
+--     target command buffer preprocess outputs in
+--     'Vulkan.Extensions.VK_EXT_device_generated_commands.cmdPreprocessGeneratedCommandsEXT'.
+--     Such access occurs in the
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_EXT'
+--     pipeline stage.
+--
+-- -   'ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT' specifies read
+--     access to
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass color attachments>,
+--     including
+--     <https://registry.khronos.org/vulkan/specs/latest/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.
+--
+-- -   'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI'
+--     specifies read access to an invocation mask image in the
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI'
+--     pipeline stage.
+--
+-- -   '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://registry.khronos.org/vulkan/specs/latest/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.
+--
+-- -   'ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR' specifies write access
+--     to an acceleration structure or
+--     <https://registry.khronos.org/vulkan/specs/latest/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.
+--
+-- -   'ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT' specifies read access to
+--     a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-fragmentdensitymapattachment fragment density map attachment>
+--     during dynamic
+--     <https://registry.khronos.org/vulkan/specs/latest/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.
+--
+-- -   'ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR' specifies
+--     read access to a fragment shading rate attachment during
+--     rasterization. Such access occurs in the
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
+--     pipeline stage.
+--
+-- -   'Vulkan.Extensions.VK_NV_shading_rate_image.ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV'
+--     specifies read access to a shading rate image during rasterization.
+--     Such access occurs in the
+--     'Vulkan.Extensions.VK_NV_shading_rate_image.PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV'
+--     pipeline stage. It is equivalent to
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'.
+--
 -- 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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scopes>
+-- <https://registry.khronos.org/vulkan/specs/latest/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,205 +331,264 @@
 -- 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                                                                           |
--- +===========================================================================================+=====================================================================================================+
--- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_NONE'                                          | Any                                                                                                 |
--- +-------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
--- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_INDIRECT_COMMAND_READ_BIT'                     | '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.AccessFlags2.ACCESS_2_INDEX_READ_BIT'                                | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_VERTEX_INPUT_BIT',                        |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_INDEX_INPUT_BIT'                          |
--- +-------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
--- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT'                     | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_VERTEX_INPUT_BIT',                        |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT'               |
--- +-------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
--- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_UNIFORM_READ_BIT'                              | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_VERTEX_SHADER_BIT',                       |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT',         |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT',      |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT',                     |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT',                     |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COMPUTE_SHADER_BIT',                      |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR',              |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT',                     |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT',                     |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI',               |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI'        |
--- +-------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
--- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_INPUT_ATTACHMENT_READ_BIT'                     | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT',                     |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI'                |
--- +-------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
--- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_READ_BIT'                               | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',    |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT',                  |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_VERTEX_SHADER_BIT',                       |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT',         |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT',      |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT',                     |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT',                     |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COMPUTE_SHADER_BIT',                      |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR',              |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT',                     |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT',                     |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI',               |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI'        |
--- +-------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
--- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_WRITE_BIT'                              | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_VERTEX_SHADER_BIT',                       |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT',         |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT',      |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT',                     |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT',                     |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COMPUTE_SHADER_BIT',                      |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR',              |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT',                     |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT',                     |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI',               |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI'        |
--- +-------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
--- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_COLOR_ATTACHMENT_READ_BIT'                     | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT',                     |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT'              |
--- +-------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
--- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT'                    | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT'              |
--- +-------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
--- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT'             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT',                     |
--- |                                                                                           | '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.AccessFlags2.ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT'            | '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.AccessFlags2.ACCESS_2_TRANSFER_READ_BIT'                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_TRANSFER_BIT',                        |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COPY_BIT',                                |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RESOLVE_BIT',                             |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_BLIT_BIT',                                |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',    |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR',     |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT'                   |
--- +-------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
--- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_TRANSFER_WRITE_BIT'                            | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_TRANSFER_BIT',                        |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COPY_BIT',                                |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RESOLVE_BIT',                             |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_BLIT_BIT',                                |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CLEAR_BIT',                               |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',    |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR',     |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT'                   |
--- +-------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
--- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_HOST_READ_BIT'                                 | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_HOST_BIT'                                 |
--- +-------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
--- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_HOST_WRITE_BIT'                                | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_HOST_BIT'                                 |
--- +-------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
--- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_MEMORY_READ_BIT'                               | Any                                                                                                 |
--- +-------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
--- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_MEMORY_WRITE_BIT'                              | Any                                                                                                 |
--- +-------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
--- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_SAMPLED_READ_BIT'                       | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_VERTEX_SHADER_BIT',                       |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT',         |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT',      |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT',                     |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT',                     |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COMPUTE_SHADER_BIT',                      |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR',              |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT',                     |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT',                     |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI',               |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI'        |
--- +-------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
--- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_STORAGE_READ_BIT'                       | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_VERTEX_SHADER_BIT',                       |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT',         |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT',      |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT',                     |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT',                     |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COMPUTE_SHADER_BIT',                      |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR',              |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT',                     |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT',                     |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI',               |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI'        |
--- +-------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
--- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_STORAGE_WRITE_BIT'                      | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_VERTEX_SHADER_BIT',                       |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT',         |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT',      |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT',                     |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT',                     |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COMPUTE_SHADER_BIT',                      |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR',              |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT',                     |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT',                     |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI',               |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI'        |
--- +-------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
--- | @VK_ACCESS_2_VIDEO_DECODE_READ_BIT_KHR@                                                   | @VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR@                                                          |
--- +-------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
--- | @VK_ACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR@                                                  | @VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR@                                                          |
--- +-------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
--- | @VK_ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR@                                                   | @VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR@                                                          |
--- +-------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
--- | @VK_ACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR@                                                  | @VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR@                                                          |
--- +-------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
--- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT'              | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT'               |
--- +-------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
--- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT'       | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_DRAW_INDIRECT_BIT',                       |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT'               |
--- +-------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
--- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT'      | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT'               |
--- +-------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
--- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT'            | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT'            |
--- +-------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
--- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV'                | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV'                |
--- +-------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
--- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV'               | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV'                |
--- +-------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
--- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_COMMAND_PREPROCESS_READ_BIT_EXT'               | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_EXT'               |
--- +-------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
--- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_EXT'              | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_EXT'               |
--- +-------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
--- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR' | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR' |
--- +-------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
--- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR'           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_VERTEX_SHADER_BIT',                       |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT',         |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT',      |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT',                     |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT',                     |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COMPUTE_SHADER_BIT',                      |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR',              |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT',                     |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT',                     |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI',       |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',    |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR',     |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI'                |
--- +-------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
--- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR'          | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',    |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR'      |
--- +-------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
--- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT'             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT'         |
--- +-------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
--- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT'     | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT'              |
--- +-------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
--- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_DESCRIPTOR_BUFFER_READ_BIT_EXT'                | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_VERTEX_SHADER_BIT',                       |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT',         |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT',      |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT',                     |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT',                     |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COMPUTE_SHADER_BIT',                      |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR',              |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT',                     |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT',                     |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI',               |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI'        |
--- +-------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
--- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI'               | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI'               |
--- +-------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
--- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_MICROMAP_READ_BIT_EXT'                         | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT',                  |
--- |                                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'     |
--- +-------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
--- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_MICROMAP_WRITE_BIT_EXT'                        | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT'                   |
--- +-------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
--- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_OPTICAL_FLOW_READ_BIT_NV'                      | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV'                      |
--- +-------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
--- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_OPTICAL_FLOW_WRITE_BIT_NV'                     | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV'                      |
--- +-------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
+-- +---------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
+-- | Access flag                                                                                                                                 | Supported pipeline stages                                                                                                                            |
+-- +=============================================================================================================================================+======================================================================================================================================================+
+-- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_NONE',                                                                                           | Any                                                                                                                                                  |
+-- | 'ACCESS_NONE'                                                                                                                               |                                                                                                                                                      |
+-- +---------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_INDIRECT_COMMAND_READ_BIT',                                                                      | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_DRAW_INDIRECT_BIT',                                                                        |
+-- | 'ACCESS_INDIRECT_COMMAND_READ_BIT'                                                                                                          | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',                                                     |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COPY_INDIRECT_BIT_KHR'                                                                     |
+-- +---------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_INDEX_READ_BIT',                                                                                 | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_VERTEX_INPUT_BIT',                                                                         |
+-- | 'ACCESS_INDEX_READ_BIT'                                                                                                                     | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_INDEX_INPUT_BIT'                                                                           |
+-- +---------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT',                                                                      | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_VERTEX_INPUT_BIT',                                                                         |
+-- | 'ACCESS_VERTEX_ATTRIBUTE_READ_BIT'                                                                                                          | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT'                                                                |
+-- +---------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_UNIFORM_READ_BIT',                                                                               | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_VERTEX_SHADER_BIT',                                                                        |
+-- | 'ACCESS_UNIFORM_READ_BIT'                                                                                                                   | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT',                                                          |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT',                                                       |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT',                                                                      |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT',                                                                      |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COMPUTE_SHADER_BIT',                                                                       |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR',                                                               |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT',                                                                      |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT',                                                                      |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI',                                                                |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI'                                                         |
+-- +---------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_INPUT_ATTACHMENT_READ_BIT',                                                                      | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT',                                                                      |
+-- | 'ACCESS_INPUT_ATTACHMENT_READ_BIT'                                                                                                          | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI'                                                                 |
+-- +---------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_READ_BIT',                                                                                | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',                                                     |
+-- | 'ACCESS_SHADER_READ_BIT'                                                                                                                    | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT',                                                                   |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_VERTEX_SHADER_BIT',                                                                        |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT',                                                          |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT',                                                       |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT',                                                                      |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT',                                                                      |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COMPUTE_SHADER_BIT',                                                                       |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR',                                                               |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT',                                                                      |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT',                                                                      |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI',                                                                |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI'                                                         |
+-- +---------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_WRITE_BIT',                                                                               | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_VERTEX_SHADER_BIT',                                                                        |
+-- | 'ACCESS_SHADER_WRITE_BIT'                                                                                                                   | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT',                                                          |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT',                                                       |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT',                                                                      |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT',                                                                      |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COMPUTE_SHADER_BIT',                                                                       |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR',                                                               |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT',                                                                      |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT',                                                                      |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI',                                                                |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI'                                                         |
+-- +---------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_COLOR_ATTACHMENT_READ_BIT',                                                                      | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT',                                                                      |
+-- | 'ACCESS_COLOR_ATTACHMENT_READ_BIT'                                                                                                          | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT'                                                               |
+-- +---------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT',                                                                     | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT'                                                               |
+-- | 'ACCESS_COLOR_ATTACHMENT_WRITE_BIT'                                                                                                         |                                                                                                                                                      |
+-- +---------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT',                                                              | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT',                                                                      |
+-- | 'ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT'                                                                                                  | '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.AccessFlags2.ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT',                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT',                                                                 |
+-- | 'ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT'                                                                                                 | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT'                                                                   |
+-- +---------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_TRANSFER_READ_BIT',                                                                              | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_TRANSFER_BIT', 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COPY_BIT',    |
+-- | 'ACCESS_TRANSFER_READ_BIT'                                                                                                                  | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RESOLVE_BIT', 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_BLIT_BIT',         |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',                                                     |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR',                                                      |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT',                                                                   |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CONVERT_COOPERATIVE_VECTOR_MATRIX_BIT_NV'                                                  |
+-- +---------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_TRANSFER_WRITE_BIT',                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_TRANSFER_BIT', 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COPY_BIT',    |
+-- | 'ACCESS_TRANSFER_WRITE_BIT'                                                                                                                 | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RESOLVE_BIT', 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_BLIT_BIT',         |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CLEAR_BIT',                                                                                |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',                                                     |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR',                                                      |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT',                                                                   |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CONVERT_COOPERATIVE_VECTOR_MATRIX_BIT_NV'                                                  |
+-- +---------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_HOST_READ_BIT',                                                                                  | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_HOST_BIT'                                                                                  |
+-- | 'ACCESS_HOST_READ_BIT'                                                                                                                      |                                                                                                                                                      |
+-- +---------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_HOST_WRITE_BIT',                                                                                 | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_HOST_BIT'                                                                                  |
+-- | 'ACCESS_HOST_WRITE_BIT'                                                                                                                     |                                                                                                                                                      |
+-- +---------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_MEMORY_READ_BIT',                                                                                | Any                                                                                                                                                  |
+-- | 'ACCESS_MEMORY_READ_BIT'                                                                                                                    |                                                                                                                                                      |
+-- +---------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_MEMORY_WRITE_BIT',                                                                               | Any                                                                                                                                                  |
+-- | 'ACCESS_MEMORY_WRITE_BIT'                                                                                                                   |                                                                                                                                                      |
+-- +---------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_SAMPLED_READ_BIT'                                                                         | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_VERTEX_SHADER_BIT',                                                                        |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT',                                                          |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT',                                                       |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT',                                                                      |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT',                                                                      |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COMPUTE_SHADER_BIT',                                                                       |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR',                                                               |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT',                                                                      |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT',                                                                      |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI',                                                                |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI'                                                         |
+-- +---------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_STORAGE_READ_BIT'                                                                         | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_VERTEX_SHADER_BIT',                                                                        |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT',                                                          |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT',                                                       |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT',                                                                      |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT',                                                                      |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COMPUTE_SHADER_BIT',                                                                       |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR',                                                               |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT',                                                                      |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT',                                                                      |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI',                                                                |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI'                                                         |
+-- +---------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_STORAGE_WRITE_BIT'                                                                        | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_VERTEX_SHADER_BIT',                                                                        |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT',                                                          |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT',                                                       |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT',                                                                      |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT',                                                                      |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COMPUTE_SHADER_BIT',                                                                       |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR',                                                               |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT',                                                                      |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT',                                                                      |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI',                                                                |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI'                                                         |
+-- +---------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkAccessFlagBits2KHR VK_ACCESS_2_VIDEO_DECODE_READ_BIT_KHR>  | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR> |
+-- +---------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkAccessFlagBits2KHR VK_ACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR> |
+-- +---------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkAccessFlagBits2KHR VK_ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR>  | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR> |
+-- +---------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkAccessFlagBits2KHR VK_ACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR> |
+-- +---------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT',                                                               | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT'                                                                |
+-- | 'ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT'                                                                                                   |                                                                                                                                                      |
+-- +---------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT',                                                        | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_DRAW_INDIRECT_BIT',                                                                        |
+-- | 'ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT'                                                                                            | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT'                                                                |
+-- +---------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT',                                                       | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT'                                                                |
+-- | 'ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT'                                                                                           |                                                                                                                                                      |
+-- +---------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT',                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT'                                                             |
+-- | 'ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT'                                                                                                 |                                                                                                                                                      |
+-- +---------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_COMMAND_PREPROCESS_READ_BIT_EXT',                                                                | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_EXT'                                                                |
+-- | 'ACCESS_COMMAND_PREPROCESS_READ_BIT_EXT'                                                                                                    |                                                                                                                                                      |
+-- +---------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_EXT',                                                               | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_EXT'                                                                |
+-- | 'ACCESS_COMMAND_PREPROCESS_WRITE_BIT_EXT'                                                                                                   |                                                                                                                                                      |
+-- +---------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_MEMORY_DECOMPRESSION_READ_BIT_EXT'                                                               | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MEMORY_DECOMPRESSION_BIT_EXT'                                                              |
+-- +---------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_MEMORY_DECOMPRESSION_WRITE_BIT_EXT'                                                              | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MEMORY_DECOMPRESSION_BIT_EXT'                                                              |
+-- +---------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR',                                                  | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'                                                  |
+-- | 'ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR'                                                                                      |                                                                                                                                                      |
+-- +---------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR',                                                            | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_VERTEX_SHADER_BIT',                                                                        |
+-- | 'ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR'                                                                                                | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT',                                                          |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT',                                                       |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT',                                                                      |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT',                                                                      |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COMPUTE_SHADER_BIT',                                                                       |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR',                                                               |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT',                                                                      |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT',                                                                      |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI',                                                        |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',                                                     |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR',                                                      |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI'                                                                 |
+-- +---------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR',                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',                                                     |
+-- | 'ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR'                                                                                               | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR'                                                       |
+-- +---------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT',                                                              | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT'                                                          |
+-- | 'ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT'                                                                                                  |                                                                                                                                                      |
+-- +---------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT',                                                      | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT'                                                               |
+-- | 'ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT'                                                                                          |                                                                                                                                                      |
+-- +---------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_DESCRIPTOR_BUFFER_READ_BIT_EXT'                                                                  | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_VERTEX_SHADER_BIT',                                                                        |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT',                                                          |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT',                                                       |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT',                                                                      |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT',                                                                      |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COMPUTE_SHADER_BIT',                                                                       |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR',                                                               |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT',                                                                      |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT',                                                                      |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI',                                                                |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI'                                                         |
+-- +---------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI'                                                                 | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI'                                                                |
+-- +---------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHR'                                                               | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_VERTEX_SHADER_BIT',                                                                        |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT',                                                          |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT',                                                       |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT',                                                                      |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT',                                                                      |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COMPUTE_SHADER_BIT',                                                                       |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR',                                                               |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT',                                                                      |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT',                                                                      |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI',                                                                |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI'                                                         |
+-- +---------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_MICROMAP_READ_BIT_EXT'                                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT',                                                                   |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'                                                      |
+-- +---------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_MICROMAP_WRITE_BIT_EXT'                                                                          | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT'                                                                    |
+-- +---------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_OPTICAL_FLOW_READ_BIT_NV'                                                                        | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV'                                                                       |
+-- +---------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_OPTICAL_FLOW_WRITE_BIT_NV'                                                                       | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV'                                                                       |
+-- +---------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_TILE_ATTACHMENT_READ_BIT_QCOM'                                                            | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT',                                                                      |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COMPUTE_SHADER_BIT'                                                                        |
+-- +---------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_TILE_ATTACHMENT_WRITE_BIT_QCOM'                                                           | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT',                                                                      |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COMPUTE_SHADER_BIT'                                                                        |
+-- +---------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_DATA_GRAPH_READ_BIT_ARM'                                                                         | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_DATA_GRAPH_BIT_ARM'                                                                        |
+-- +---------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_DATA_GRAPH_WRITE_BIT_ARM'                                                                        | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_DATA_GRAPH_BIT_ARM'                                                                        |
+-- +---------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SAMPLER_HEAP_READ_BIT_EXT'                                                                       | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_VERTEX_SHADER_BIT',                                                                        |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT',                                                          |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT',                                                       |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT',                                                                      |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT',                                                                      |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COMPUTE_SHADER_BIT',                                                                       |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR',                                                               |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT',                                                                      |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT',                                                                      |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI',                                                                |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI'                                                         |
+-- +---------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_RESOURCE_HEAP_READ_BIT_EXT'                                                                      | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_VERTEX_SHADER_BIT',                                                                        |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT',                                                          |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT',                                                       |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT',                                                                      |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT',                                                                      |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COMPUTE_SHADER_BIT',                                                                       |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR',                                                               |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT',                                                                      |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT',                                                                      |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI',                                                                |
+-- |                                                                                                                                             | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI'                                                         |
+-- +---------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
 --
 -- Supported Access Types
 --
@@ -275,262 +599,91 @@
 newtype AccessFlagBits = AccessFlagBits Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'ACCESS_INDIRECT_COMMAND_READ_BIT' specifies read access to indirect
--- command data read as part of an indirect build, trace, drawing or
--- dispatching command. Such access occurs in the
--- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_DRAW_INDIRECT_BIT'
--- pipeline stage.
+-- No documentation found for Nested "VkAccessFlagBits" "VK_ACCESS_INDIRECT_COMMAND_READ_BIT"
 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.Extensions.VK_KHR_maintenance5.cmdBindIndexBuffer2KHR' and
--- 'Vulkan.Core10.CommandBufferBuilding.cmdBindIndexBuffer'. Such access
--- occurs in the
--- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_VERTEX_INPUT_BIT'
--- pipeline stage.
+-- No documentation found for Nested "VkAccessFlagBits" "VK_ACCESS_INDEX_READ_BIT"
 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.
+-- No documentation found for Nested "VkAccessFlagBits" "VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT"
 pattern ACCESS_VERTEX_ATTRIBUTE_READ_BIT = AccessFlagBits 0x00000004
 
--- | 'ACCESS_UNIFORM_READ_BIT' specifies read access to a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-uniformbuffer uniform buffer>
--- in any shader pipeline stage.
+-- No documentation found for Nested "VkAccessFlagBits" "VK_ACCESS_UNIFORM_READ_BIT"
 pattern ACCESS_UNIFORM_READ_BIT = AccessFlagBits 0x00000008
 
--- | 'ACCESS_INPUT_ATTACHMENT_READ_BIT' specifies read access to an
--- <https://registry.khronos.org/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_SHADER_BIT_HUAWEI'
--- or
--- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_SHADER_BIT'
--- pipeline stage.
+-- No documentation found for Nested "VkAccessFlagBits" "VK_ACCESS_INPUT_ATTACHMENT_READ_BIT"
 pattern ACCESS_INPUT_ATTACHMENT_READ_BIT = AccessFlagBits 0x00000010
 
--- | 'ACCESS_SHADER_READ_BIT' specifies read access to a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-uniformtexelbuffer uniform texel buffer>,
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-sampledimage sampled image>,
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storagebuffer storage buffer>,
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-physical-storage-buffer physical storage buffer>,
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shader-binding-table shader binding table>,
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storagetexelbuffer storage texel buffer>,
--- or
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storageimage storage image>
--- in any shader pipeline stage.
+-- No documentation found for Nested "VkAccessFlagBits" "VK_ACCESS_SHADER_READ_BIT"
 pattern ACCESS_SHADER_READ_BIT = AccessFlagBits 0x00000020
 
--- | 'ACCESS_SHADER_WRITE_BIT' specifies write access to a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storagebuffer storage buffer>,
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-physical-storage-buffer physical storage buffer>,
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storagetexelbuffer storage texel buffer>,
--- or
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storageimage storage image>
--- in any shader pipeline stage.
+-- No documentation found for Nested "VkAccessFlagBits" "VK_ACCESS_SHADER_WRITE_BIT"
 pattern ACCESS_SHADER_WRITE_BIT = AccessFlagBits 0x00000040
 
--- | 'ACCESS_COLOR_ATTACHMENT_READ_BIT' specifies read access to a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass color attachment>,
--- such as via
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#framebuffer-blending blending>
--- (other than
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#framebuffer-blend-advanced advanced blend operations>),
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#framebuffer-logicop logic operations>
--- or certain
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-load-operations render pass load operations>
--- in the
--- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT'
--- pipeline stage or via
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-shader-tileimage-reads fragment shader tile image reads>
--- in the
--- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_SHADER_BIT'
--- pipeline stage.
+-- No documentation found for Nested "VkAccessFlagBits" "VK_ACCESS_COLOR_ATTACHMENT_READ_BIT"
 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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass render pass>
--- or via certain render pass
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-load-operations load>
--- and
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-store-operations store>
--- operations. Such access occurs in the
--- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT'
--- pipeline stage.
+-- No documentation found for Nested "VkAccessFlagBits" "VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT"
 pattern ACCESS_COLOR_ATTACHMENT_WRITE_BIT = AccessFlagBits 0x00000100
 
--- | 'ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT' specifies read access to a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass depth\/stencil attachment>,
--- via
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-ds-state depth or stencil operations>
--- or certain
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-load-operations render pass load operations>
--- 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 or via
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-shader-tileimage-reads fragment shader tile image reads>
--- in the
--- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_SHADER_BIT'
--- pipeline stage.
+-- No documentation found for Nested "VkAccessFlagBits" "VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT"
 pattern ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT = AccessFlagBits 0x00000200
 
--- | 'ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT' specifies write access to a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass depth\/stencil attachment>,
--- via
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-ds-state depth or stencil operations>
--- or certain render pass
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-load-operations load>
--- and
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-store-operations 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.
+-- No documentation found for Nested "VkAccessFlagBits" "VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT"
 pattern ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = AccessFlagBits 0x00000400
 
--- | 'ACCESS_TRANSFER_READ_BIT' specifies read access to an image or buffer
--- in a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#copies copy>
--- operation. Such access occurs in the
--- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_TRANSFER_BIT'
--- pipeline stage.
+-- No documentation found for Nested "VkAccessFlagBits" "VK_ACCESS_TRANSFER_READ_BIT"
 pattern ACCESS_TRANSFER_READ_BIT = AccessFlagBits 0x00000800
 
--- | 'ACCESS_TRANSFER_WRITE_BIT' specifies write access to an image or buffer
--- in a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#clears clear>
--- or
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#copies copy>
--- operation. Such access occurs in the
--- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_TRANSFER_BIT'
--- pipeline stage.
+-- No documentation found for Nested "VkAccessFlagBits" "VK_ACCESS_TRANSFER_WRITE_BIT"
 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.
+-- No documentation found for Nested "VkAccessFlagBits" "VK_ACCESS_HOST_READ_BIT"
 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.
+-- No documentation found for Nested "VkAccessFlagBits" "VK_ACCESS_HOST_WRITE_BIT"
 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.
+-- No documentation found for Nested "VkAccessFlagBits" "VK_ACCESS_MEMORY_READ_BIT"
 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.
+-- No documentation found for Nested "VkAccessFlagBits" "VK_ACCESS_MEMORY_WRITE_BIT"
 pattern ACCESS_MEMORY_WRITE_BIT = AccessFlagBits 0x00010000
 
--- | 'ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV' specifies writes to the target
--- command buffer 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
+-- No documentation found for Nested "VkAccessFlagBits" "VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_EXT"
+pattern ACCESS_COMMAND_PREPROCESS_WRITE_BIT_EXT = 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
+-- No documentation found for Nested "VkAccessFlagBits" "VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_EXT"
+pattern ACCESS_COMMAND_PREPROCESS_READ_BIT_EXT = 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
--- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
--- pipeline stage.
+-- No documentation found for Nested "VkAccessFlagBits" "VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR"
 pattern ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR = AccessFlagBits 0x00800000
 
--- | 'ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT' specifies read access to a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-fragmentdensitymapattachment fragment density map attachment>
--- during dynamic
--- <https://registry.khronos.org/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.
+-- No documentation found for Nested "VkAccessFlagBits" "VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT"
 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://registry.khronos.org/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.
+-- No documentation found for Nested "VkAccessFlagBits" "VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR"
 pattern ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR = AccessFlagBits 0x00400000
 
--- | '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://registry.khronos.org/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.
+-- No documentation found for Nested "VkAccessFlagBits" "VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR"
 pattern ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR = AccessFlagBits 0x00200000
 
--- | 'ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT' specifies read access
--- to
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass color attachments>,
--- including
--- <https://registry.khronos.org/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.
+-- No documentation found for Nested "VkAccessFlagBits" "VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT"
 pattern ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = AccessFlagBits 0x00080000
 
--- | 'ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT' specifies read access to a
--- predicate as part of conditional rendering. Such access occurs in the
--- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT'
--- pipeline stage.
+-- No documentation found for Nested "VkAccessFlagBits" "VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT"
 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'
--- executes. Such access occurs in the
--- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT'
--- pipeline stage.
+-- No documentation found for Nested "VkAccessFlagBits" "VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT"
 pattern ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT = AccessFlagBits 0x08000000
 
--- | 'ACCESS_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.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT'
--- pipeline stage.
+-- No documentation found for Nested "VkAccessFlagBits" "VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT"
 pattern ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT = AccessFlagBits 0x04000000
 
--- | 'ACCESS_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.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT'
--- pipeline stage.
+-- No documentation found for Nested "VkAccessFlagBits" "VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT"
 pattern ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT = AccessFlagBits 0x02000000
 
--- | 'ACCESS_NONE' specifies no accesses.
+-- No documentation found for Nested "VkAccessFlagBits" "VK_ACCESS_NONE"
 pattern ACCESS_NONE = AccessFlagBits 0x00000000
 
 conNameAccessFlagBits :: String
@@ -580,12 +733,12 @@
   , (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_WRITE_BIT_EXT
+    , "COMMAND_PREPROCESS_WRITE_BIT_EXT"
     )
   ,
-    ( ACCESS_COMMAND_PREPROCESS_READ_BIT_NV
-    , "COMMAND_PREPROCESS_READ_BIT_NV"
+    ( ACCESS_COMMAND_PREPROCESS_READ_BIT_EXT
+    , "COMMAND_PREPROCESS_READ_BIT_EXT"
     )
   ,
     ( ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR
diff --git a/src/Vulkan/Core10/Enums/AttachmentDescriptionFlagBits.hs b/src/Vulkan/Core10/Enums/AttachmentDescriptionFlagBits.hs
--- a/src/Vulkan/Core10/Enums/AttachmentDescriptionFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/AttachmentDescriptionFlagBits.hs
@@ -2,6 +2,8 @@
 -- No documentation found for Chapter "AttachmentDescriptionFlagBits"
 module Vulkan.Core10.Enums.AttachmentDescriptionFlagBits  ( AttachmentDescriptionFlags
                                                           , AttachmentDescriptionFlagBits( ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT
+                                                                                         , ATTACHMENT_DESCRIPTION_RESOLVE_ENABLE_TRANSFER_FUNCTION_BIT_KHR
+                                                                                         , ATTACHMENT_DESCRIPTION_RESOLVE_SKIP_TRANSFER_FUNCTION_BIT_KHR
                                                                                          , ..
                                                                                          )
                                                           ) where
@@ -22,6 +24,21 @@
 -- | VkAttachmentDescriptionFlagBits - Bitmask specifying additional
 -- properties of an attachment
 --
+-- = Description
+--
+-- -   'ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT' specifies that the attachment
+--     aliases the same device memory as other attachments.
+--
+-- -   'ATTACHMENT_DESCRIPTION_RESOLVE_SKIP_TRANSFER_FUNCTION_BIT_KHR'
+--     specifies that resolve operations happening to an sRGB encoded
+--     attachment /must/ not convert samples from nonlinear to linear
+--     before averaging.
+--
+-- -   'ATTACHMENT_DESCRIPTION_RESOLVE_ENABLE_TRANSFER_FUNCTION_BIT_KHR'
+--     specifies that resolve operations happening to an sRGB encoded
+--     attachment /must/ convert samples from nonlinear to linear before
+--     averaging.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -29,21 +46,34 @@
 newtype AttachmentDescriptionFlagBits = AttachmentDescriptionFlagBits Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT' specifies that the attachment
--- aliases the same device memory as other attachments.
+-- No documentation found for Nested "VkAttachmentDescriptionFlagBits" "VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT"
 pattern ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = AttachmentDescriptionFlagBits 0x00000001
 
+-- No documentation found for Nested "VkAttachmentDescriptionFlagBits" "VK_ATTACHMENT_DESCRIPTION_RESOLVE_ENABLE_TRANSFER_FUNCTION_BIT_KHR"
+pattern ATTACHMENT_DESCRIPTION_RESOLVE_ENABLE_TRANSFER_FUNCTION_BIT_KHR = AttachmentDescriptionFlagBits 0x00000004
+
+-- No documentation found for Nested "VkAttachmentDescriptionFlagBits" "VK_ATTACHMENT_DESCRIPTION_RESOLVE_SKIP_TRANSFER_FUNCTION_BIT_KHR"
+pattern ATTACHMENT_DESCRIPTION_RESOLVE_SKIP_TRANSFER_FUNCTION_BIT_KHR = AttachmentDescriptionFlagBits 0x00000002
+
 conNameAttachmentDescriptionFlagBits :: String
 conNameAttachmentDescriptionFlagBits = "AttachmentDescriptionFlagBits"
 
 enumPrefixAttachmentDescriptionFlagBits :: String
-enumPrefixAttachmentDescriptionFlagBits = "ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT"
+enumPrefixAttachmentDescriptionFlagBits = "ATTACHMENT_DESCRIPTION_"
 
 showTableAttachmentDescriptionFlagBits :: [(AttachmentDescriptionFlagBits, String)]
 showTableAttachmentDescriptionFlagBits =
   [
     ( ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT
-    , ""
+    , "MAY_ALIAS_BIT"
+    )
+  ,
+    ( ATTACHMENT_DESCRIPTION_RESOLVE_ENABLE_TRANSFER_FUNCTION_BIT_KHR
+    , "RESOLVE_ENABLE_TRANSFER_FUNCTION_BIT_KHR"
+    )
+  ,
+    ( ATTACHMENT_DESCRIPTION_RESOLVE_SKIP_TRANSFER_FUNCTION_BIT_KHR
+    , "RESOLVE_SKIP_TRANSFER_FUNCTION_BIT_KHR"
     )
   ]
 
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
@@ -3,7 +3,7 @@
 module Vulkan.Core10.Enums.AttachmentLoadOp  (AttachmentLoadOp( ATTACHMENT_LOAD_OP_LOAD
                                                               , ATTACHMENT_LOAD_OP_CLEAR
                                                               , ATTACHMENT_LOAD_OP_DONT_CARE
-                                                              , ATTACHMENT_LOAD_OP_NONE_KHR
+                                                              , ATTACHMENT_LOAD_OP_NONE
                                                               , ..
                                                               )) where
 
@@ -19,6 +19,36 @@
 -- | VkAttachmentLoadOp - Specify how contents of an attachment are treated
 -- at the beginning of the subpass where it is first used
 --
+-- = Description
+--
+-- -   'ATTACHMENT_LOAD_OP_LOAD' specifies that the previous contents of
+--     the image within the render area will be preserved as the initial
+--     values. For attachments with a depth\/stencil format, this uses the
+--     access type
+--     'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT'.
+--     For attachments with a color format, this uses the access type
+--     'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_COLOR_ATTACHMENT_READ_BIT'.
+--
+-- -   'ATTACHMENT_LOAD_OP_CLEAR' specifies that the contents within the
+--     render area will be cleared to a uniform value, which is specified
+--     when a render pass instance is begun. For attachments with a
+--     depth\/stencil format, this uses the access type
+--     'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT'.
+--     For attachments with a color format, this uses the access type
+--     'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_COLOR_ATTACHMENT_WRITE_BIT'.
+--
+-- -   'ATTACHMENT_LOAD_OP_DONT_CARE' specifies that the previous contents
+--     within the area need not be preserved; the contents of the
+--     attachment will be undefined inside the render area. For attachments
+--     with a depth\/stencil format, this uses the access type
+--     'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT'.
+--     For attachments with a color format, this uses the access type
+--     'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_COLOR_ATTACHMENT_WRITE_BIT'.
+--
+-- -   'ATTACHMENT_LOAD_OP_NONE' specifies that the previous contents of
+--     the image will be undefined inside the render pass. No access type
+--     is used as the image is not accessed.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -28,42 +58,23 @@
 newtype AttachmentLoadOp = AttachmentLoadOp Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'ATTACHMENT_LOAD_OP_LOAD' specifies that the previous contents of the
--- image within the render area will be preserved as the initial values.
--- For attachments with a depth\/stencil format, this uses the access type
--- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT'.
--- For attachments with a color format, this uses the access type
--- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_COLOR_ATTACHMENT_READ_BIT'.
+-- No documentation found for Nested "VkAttachmentLoadOp" "VK_ATTACHMENT_LOAD_OP_LOAD"
 pattern ATTACHMENT_LOAD_OP_LOAD = AttachmentLoadOp 0
 
--- | 'ATTACHMENT_LOAD_OP_CLEAR' specifies that the contents within the render
--- area will be cleared to a uniform value, which is specified when a
--- render pass instance is begun. For attachments with a depth\/stencil
--- format, this uses the access type
--- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT'.
--- For attachments with a color format, this uses the access type
--- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_COLOR_ATTACHMENT_WRITE_BIT'.
+-- No documentation found for Nested "VkAttachmentLoadOp" "VK_ATTACHMENT_LOAD_OP_CLEAR"
 pattern ATTACHMENT_LOAD_OP_CLEAR = AttachmentLoadOp 1
 
--- | 'ATTACHMENT_LOAD_OP_DONT_CARE' specifies that the previous contents
--- within the area need not be preserved; the contents of the attachment
--- will be undefined inside the render area. For attachments with a
--- depth\/stencil format, this uses the access type
--- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT'.
--- For attachments with a color format, this uses the access type
--- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_COLOR_ATTACHMENT_WRITE_BIT'.
+-- No documentation found for Nested "VkAttachmentLoadOp" "VK_ATTACHMENT_LOAD_OP_DONT_CARE"
 pattern ATTACHMENT_LOAD_OP_DONT_CARE = AttachmentLoadOp 2
 
--- | 'ATTACHMENT_LOAD_OP_NONE_KHR' specifies that the previous contents of
--- the image will be undefined inside the render pass. No access type is
--- used as the image is not accessed.
-pattern ATTACHMENT_LOAD_OP_NONE_KHR = AttachmentLoadOp 1000400000
+-- No documentation found for Nested "VkAttachmentLoadOp" "VK_ATTACHMENT_LOAD_OP_NONE"
+pattern ATTACHMENT_LOAD_OP_NONE = AttachmentLoadOp 1000400000
 
 {-# COMPLETE
   ATTACHMENT_LOAD_OP_LOAD
   , ATTACHMENT_LOAD_OP_CLEAR
   , ATTACHMENT_LOAD_OP_DONT_CARE
-  , ATTACHMENT_LOAD_OP_NONE_KHR ::
+  , ATTACHMENT_LOAD_OP_NONE ::
     AttachmentLoadOp
   #-}
 
@@ -78,7 +89,7 @@
   [ (ATTACHMENT_LOAD_OP_LOAD, "LOAD")
   , (ATTACHMENT_LOAD_OP_CLEAR, "CLEAR")
   , (ATTACHMENT_LOAD_OP_DONT_CARE, "DONT_CARE")
-  , (ATTACHMENT_LOAD_OP_NONE_KHR, "NONE_KHR")
+  , (ATTACHMENT_LOAD_OP_NONE, "NONE")
   ]
 
 instance Show AttachmentLoadOp where
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
@@ -20,6 +20,29 @@
 --
 -- = Description
 --
+-- -   'ATTACHMENT_STORE_OP_STORE' specifies the contents generated during
+--     the render pass and within the render area are written to memory.
+--     For attachments with a depth\/stencil format, this uses the access
+--     type
+--     'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT'.
+--     For attachments with a color format, this uses the access type
+--     'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_COLOR_ATTACHMENT_WRITE_BIT'.
+--
+-- -   'ATTACHMENT_STORE_OP_DONT_CARE' specifies the contents within the
+--     render area are not needed after rendering, and /may/ be discarded;
+--     the contents of the attachment will be undefined inside the render
+--     area. For attachments with a depth\/stencil format, this uses the
+--     access type
+--     'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT'.
+--     For attachments with a color format, this uses the access type
+--     'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_COLOR_ATTACHMENT_WRITE_BIT'.
+--
+-- -   'ATTACHMENT_STORE_OP_NONE' specifies the contents within the render
+--     area are not accessed by the store operation as long as no values
+--     are written to the attachment during the render pass. If values are
+--     written during the render pass, this behaves identically to
+--     'ATTACHMENT_STORE_OP_DONT_CARE' and with matching access semantics.
+--
 -- 'ATTACHMENT_STORE_OP_DONT_CARE' /can/ cause contents generated during
 -- previous render passes to be discarded before reaching memory, even if
 -- no write to the attachment occurs during the current render pass.
@@ -33,28 +56,13 @@
 newtype AttachmentStoreOp = AttachmentStoreOp Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'ATTACHMENT_STORE_OP_STORE' specifies the contents generated during the
--- render pass and within the render area are written to memory. For
--- attachments with a depth\/stencil format, this uses the access type
--- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT'.
--- For attachments with a color format, this uses the access type
--- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_COLOR_ATTACHMENT_WRITE_BIT'.
+-- No documentation found for Nested "VkAttachmentStoreOp" "VK_ATTACHMENT_STORE_OP_STORE"
 pattern ATTACHMENT_STORE_OP_STORE = AttachmentStoreOp 0
 
--- | 'ATTACHMENT_STORE_OP_DONT_CARE' specifies the contents within the render
--- area are not needed after rendering, and /may/ be discarded; the
--- contents of the attachment will be undefined inside the render area. For
--- attachments with a depth\/stencil format, this uses the access type
--- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT'.
--- For attachments with a color format, this uses the access type
--- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_COLOR_ATTACHMENT_WRITE_BIT'.
+-- No documentation found for Nested "VkAttachmentStoreOp" "VK_ATTACHMENT_STORE_OP_DONT_CARE"
 pattern ATTACHMENT_STORE_OP_DONT_CARE = AttachmentStoreOp 1
 
--- | 'ATTACHMENT_STORE_OP_NONE' specifies the contents within the render area
--- are not accessed by the store operation as long as no values are written
--- to the attachment during the render pass. If values are written during
--- the render pass, this behaves identically to
--- 'ATTACHMENT_STORE_OP_DONT_CARE' and with matching access semantics.
+-- No documentation found for Nested "VkAttachmentStoreOp" "VK_ATTACHMENT_STORE_OP_NONE"
 pattern ATTACHMENT_STORE_OP_NONE = AttachmentStoreOp 1000301000
 
 {-# COMPLETE
diff --git a/src/Vulkan/Core10/Enums/BlendFactor.hs b/src/Vulkan/Core10/Enums/BlendFactor.hs
--- a/src/Vulkan/Core10/Enums/BlendFactor.hs
+++ b/src/Vulkan/Core10/Enums/BlendFactor.hs
@@ -108,7 +108,7 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.ColorBlendEquationEXT',
--- 'Vulkan.Core10.Pipeline.PipelineColorBlendAttachmentState'
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineColorBlendAttachmentState'
 newtype BlendFactor = BlendFactor Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
diff --git a/src/Vulkan/Core10/Enums/BlendOp.hs b/src/Vulkan/Core10/Enums/BlendOp.hs
--- a/src/Vulkan/Core10/Enums/BlendOp.hs
+++ b/src/Vulkan/Core10/Enums/BlendOp.hs
@@ -136,7 +136,7 @@
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.ColorBlendAdvancedEXT',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.ColorBlendEquationEXT',
--- 'Vulkan.Core10.Pipeline.PipelineColorBlendAttachmentState'
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineColorBlendAttachmentState'
 newtype BlendOp = BlendOp Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
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
@@ -24,8 +24,38 @@
 --
 -- = Description
 --
+-- -   'BORDER_COLOR_FLOAT_TRANSPARENT_BLACK' specifies a transparent,
+--     floating-point format, black color.
+--
+-- -   'BORDER_COLOR_INT_TRANSPARENT_BLACK' specifies a transparent,
+--     integer format, black color.
+--
+-- -   'BORDER_COLOR_FLOAT_OPAQUE_BLACK' specifies an opaque,
+--     floating-point format, black color.
+--
+-- -   'BORDER_COLOR_INT_OPAQUE_BLACK' specifies an opaque, integer format,
+--     black color.
+--
+-- -   'BORDER_COLOR_FLOAT_OPAQUE_WHITE' specifies an opaque,
+--     floating-point format, white color.
+--
+-- -   'BORDER_COLOR_INT_OPAQUE_WHITE' specifies an opaque, integer format,
+--     white color.
+--
+-- -   'BORDER_COLOR_FLOAT_CUSTOM_EXT' specifies that a
+--     'Vulkan.Extensions.VK_EXT_custom_border_color.SamplerCustomBorderColorCreateInfoEXT'
+--     structure is included in the
+--     'Vulkan.Core10.Sampler.SamplerCreateInfo'::@pNext@ chain containing
+--     the color data in floating-point format.
+--
+-- -   'BORDER_COLOR_INT_CUSTOM_EXT' specifies that a
+--     'Vulkan.Extensions.VK_EXT_custom_border_color.SamplerCustomBorderColorCreateInfoEXT'
+--     structure is included in the
+--     'Vulkan.Core10.Sampler.SamplerCreateInfo'::@pNext@ chain containing
+--     the color data in integer format.
+--
 -- These colors are described in detail in
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#textures-texel-replacement Texel Replacement>.
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#textures-border-replacement Border Replacement>.
 --
 -- = See Also
 --
@@ -34,42 +64,28 @@
 newtype BorderColor = BorderColor Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'BORDER_COLOR_FLOAT_TRANSPARENT_BLACK' specifies a transparent,
--- floating-point format, black color.
+-- No documentation found for Nested "VkBorderColor" "VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK"
 pattern BORDER_COLOR_FLOAT_TRANSPARENT_BLACK = BorderColor 0
 
--- | 'BORDER_COLOR_INT_TRANSPARENT_BLACK' specifies a transparent, integer
--- format, black color.
+-- No documentation found for Nested "VkBorderColor" "VK_BORDER_COLOR_INT_TRANSPARENT_BLACK"
 pattern BORDER_COLOR_INT_TRANSPARENT_BLACK = BorderColor 1
 
--- | 'BORDER_COLOR_FLOAT_OPAQUE_BLACK' specifies an opaque, floating-point
--- format, black color.
+-- No documentation found for Nested "VkBorderColor" "VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK"
 pattern BORDER_COLOR_FLOAT_OPAQUE_BLACK = BorderColor 2
 
--- | 'BORDER_COLOR_INT_OPAQUE_BLACK' specifies an opaque, integer format,
--- black color.
+-- No documentation found for Nested "VkBorderColor" "VK_BORDER_COLOR_INT_OPAQUE_BLACK"
 pattern BORDER_COLOR_INT_OPAQUE_BLACK = BorderColor 3
 
--- | 'BORDER_COLOR_FLOAT_OPAQUE_WHITE' specifies an opaque, floating-point
--- format, white color.
+-- No documentation found for Nested "VkBorderColor" "VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE"
 pattern BORDER_COLOR_FLOAT_OPAQUE_WHITE = BorderColor 4
 
--- | 'BORDER_COLOR_INT_OPAQUE_WHITE' specifies an opaque, integer format,
--- white color.
+-- No documentation found for Nested "VkBorderColor" "VK_BORDER_COLOR_INT_OPAQUE_WHITE"
 pattern BORDER_COLOR_INT_OPAQUE_WHITE = BorderColor 5
 
--- | 'BORDER_COLOR_INT_CUSTOM_EXT' specifies that a
--- 'Vulkan.Extensions.VK_EXT_custom_border_color.SamplerCustomBorderColorCreateInfoEXT'
--- structure is included in the
--- 'Vulkan.Core10.Sampler.SamplerCreateInfo'::@pNext@ chain containing the
--- color data in integer format.
+-- No documentation found for Nested "VkBorderColor" "VK_BORDER_COLOR_INT_CUSTOM_EXT"
 pattern BORDER_COLOR_INT_CUSTOM_EXT = BorderColor 1000287004
 
--- | 'BORDER_COLOR_FLOAT_CUSTOM_EXT' specifies that a
--- 'Vulkan.Extensions.VK_EXT_custom_border_color.SamplerCustomBorderColorCreateInfoEXT'
--- structure is included in the
--- 'Vulkan.Core10.Sampler.SamplerCreateInfo'::@pNext@ chain containing the
--- color data in floating-point format.
+-- No documentation found for Nested "VkBorderColor" "VK_BORDER_COLOR_FLOAT_CUSTOM_EXT"
 pattern BORDER_COLOR_FLOAT_CUSTOM_EXT = BorderColor 1000287003
 
 {-# COMPLETE
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,10 +29,45 @@
 --
 -- = Description
 --
+-- -   'BUFFER_CREATE_SPARSE_BINDING_BIT' specifies that the buffer will be
+--     backed using sparse memory binding.
+--
+-- -   'BUFFER_CREATE_SPARSE_RESIDENCY_BIT' specifies that the buffer /can/
+--     be partially backed using sparse memory binding. Buffers created
+--     with this flag /must/ also be created with the
+--     'BUFFER_CREATE_SPARSE_BINDING_BIT' flag.
+--
+-- -   'BUFFER_CREATE_SPARSE_ALIASED_BIT' specifies that the buffer will be
+--     backed using sparse memory binding with memory ranges that might
+--     also simultaneously be backing another buffer (or another portion of
+--     the same buffer). Buffers created with this flag /must/ also be
+--     created with the 'BUFFER_CREATE_SPARSE_BINDING_BIT' flag.
+--
+-- -   'BUFFER_CREATE_PROTECTED_BIT' specifies that the buffer is a
+--     protected buffer.
+--
+-- -   'BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT' specifies that the
+--     buffer’s address /can/ be saved and reused on a subsequent run (e.g.
+--     for trace capture and replay), see
+--     'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.BufferOpaqueCaptureAddressCreateInfo'
+--     for more detail.
+--
+-- -   'BUFFER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT' specifies
+--     that the buffer /can/ be used with descriptor buffers when capturing
+--     and replaying (e.g. for trace capture and replay), see
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.OpaqueCaptureDescriptorDataCreateInfoEXT'
+--     for more detail.
+--
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkBufferCreateFlagBits VK_BUFFER_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR>
+--     specifies that the buffer /can/ be used in
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#video-coding video coding operations>
+--     without having to specify at buffer creation time the set of video
+--     profiles the buffer will be used with.
+--
 -- See
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#sparsememory-sparseresourcefeatures Sparse Resource Features>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#sparsememory-sparseresourcefeatures Sparse Resource Features>
 -- and
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features Physical Device Features>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features Physical Device Features>
 -- for details of the sparse memory features supported on a device.
 --
 -- = See Also
@@ -42,39 +77,22 @@
 newtype BufferCreateFlagBits = BufferCreateFlagBits Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'BUFFER_CREATE_SPARSE_BINDING_BIT' specifies that the buffer will be
--- backed using sparse memory binding.
+-- No documentation found for Nested "VkBufferCreateFlagBits" "VK_BUFFER_CREATE_SPARSE_BINDING_BIT"
 pattern BUFFER_CREATE_SPARSE_BINDING_BIT = BufferCreateFlagBits 0x00000001
 
--- | 'BUFFER_CREATE_SPARSE_RESIDENCY_BIT' specifies that the buffer /can/ be
--- partially backed using sparse memory binding. Buffers created with this
--- flag /must/ also be created with the 'BUFFER_CREATE_SPARSE_BINDING_BIT'
--- flag.
+-- No documentation found for Nested "VkBufferCreateFlagBits" "VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT"
 pattern BUFFER_CREATE_SPARSE_RESIDENCY_BIT = BufferCreateFlagBits 0x00000002
 
--- | 'BUFFER_CREATE_SPARSE_ALIASED_BIT' specifies that the buffer will be
--- backed using sparse memory binding with memory ranges that might also
--- simultaneously be backing another buffer (or another portion of the same
--- buffer). Buffers created with this flag /must/ also be created with the
--- 'BUFFER_CREATE_SPARSE_BINDING_BIT' flag.
+-- No documentation found for Nested "VkBufferCreateFlagBits" "VK_BUFFER_CREATE_SPARSE_ALIASED_BIT"
 pattern BUFFER_CREATE_SPARSE_ALIASED_BIT = BufferCreateFlagBits 0x00000004
 
--- | 'BUFFER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT' specifies that
--- the buffer /can/ be used with descriptor buffers when capturing and
--- replaying (e.g. for trace capture and replay), see
--- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.OpaqueCaptureDescriptorDataCreateInfoEXT'
--- for more detail.
+-- No documentation found for Nested "VkBufferCreateFlagBits" "VK_BUFFER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT"
 pattern BUFFER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = BufferCreateFlagBits 0x00000020
 
--- | 'BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT' specifies that the
--- buffer’s address /can/ be saved and reused on a subsequent run (e.g. for
--- trace capture and replay), see
--- 'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.BufferOpaqueCaptureAddressCreateInfo'
--- for more detail.
+-- No documentation found for Nested "VkBufferCreateFlagBits" "VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT"
 pattern BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = BufferCreateFlagBits 0x00000010
 
--- | 'BUFFER_CREATE_PROTECTED_BIT' specifies that the buffer is a protected
--- buffer.
+-- No documentation found for Nested "VkBufferCreateFlagBits" "VK_BUFFER_CREATE_PROTECTED_BIT"
 pattern BUFFER_CREATE_PROTECTED_BIT = BufferCreateFlagBits 0x00000008
 
 conNameBufferCreateFlagBits :: String
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
@@ -10,6 +10,7 @@
                                                                      , BUFFER_USAGE_INDEX_BUFFER_BIT
                                                                      , BUFFER_USAGE_VERTEX_BUFFER_BIT
                                                                      , BUFFER_USAGE_INDIRECT_BUFFER_BIT
+                                                                     , BUFFER_USAGE_TILE_MEMORY_BIT_QCOM
                                                                      , BUFFER_USAGE_MICROMAP_STORAGE_BIT_EXT
                                                                      , BUFFER_USAGE_MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXT
                                                                      , BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT
@@ -18,6 +19,7 @@
                                                                      , BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR
                                                                      , BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR
                                                                      , BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR
+                                                                     , BUFFER_USAGE_DESCRIPTOR_HEAP_BIT_EXT
                                                                      , BUFFER_USAGE_EXECUTION_GRAPH_SCRATCH_BIT_AMDX
                                                                      , BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT
                                                                      , BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT
@@ -42,6 +44,166 @@
 
 -- | VkBufferUsageFlagBits - Bitmask specifying allowed usage of a buffer
 --
+-- = Description
+--
+-- -   'BUFFER_USAGE_TRANSFER_SRC_BIT' specifies that the buffer /can/ be
+--     used as the source of a /transfer command/ (see the definition of
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-pipeline-stages-transfer >).
+--
+-- -   'BUFFER_USAGE_TRANSFER_DST_BIT' specifies that the buffer /can/ be
+--     used as the destination of a transfer command.
+--
+-- -   'BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT' specifies that the buffer
+--     /can/ be used to create a 'Vulkan.Core10.Handles.BufferView'
+--     suitable for occupying a 'Vulkan.Core10.Handles.DescriptorSet' slot
+--     of type
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER'.
+--
+-- -   'BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT' specifies that the buffer
+--     /can/ be used to create a 'Vulkan.Core10.Handles.BufferView'
+--     suitable for occupying a 'Vulkan.Core10.Handles.DescriptorSet' slot
+--     of type
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'.
+--
+-- -   'BUFFER_USAGE_UNIFORM_BUFFER_BIT' specifies that the buffer /can/ be
+--     used in a 'Vulkan.Core10.DescriptorSet.DescriptorBufferInfo'
+--     suitable for occupying a 'Vulkan.Core10.Handles.DescriptorSet' slot
+--     either of type
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER'
+--     or
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC'.
+--
+-- -   'BUFFER_USAGE_STORAGE_BUFFER_BIT' specifies that the buffer /can/ be
+--     used in a 'Vulkan.Core10.DescriptorSet.DescriptorBufferInfo'
+--     suitable for occupying a 'Vulkan.Core10.Handles.DescriptorSet' slot
+--     either of type
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER'
+--     or
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC'.
+--
+-- -   'BUFFER_USAGE_INDEX_BUFFER_BIT' specifies that the buffer is
+--     suitable for passing as the @buffer@ parameter to
+--     'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.cmdBindIndexBuffer2'
+--     and 'Vulkan.Core10.CommandBufferBuilding.cmdBindIndexBuffer'.
+--
+-- -   'BUFFER_USAGE_VERTEX_BUFFER_BIT' specifies that the buffer is
+--     suitable for passing as an element of the @pBuffers@ array to
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBindVertexBuffers'.
+--
+-- -   'BUFFER_USAGE_INDIRECT_BUFFER_BIT' specifies that the buffer is
+--     suitable for passing as the @buffer@ parameter to
+--     'Vulkan.Core10.CommandBufferBuilding.cmdDrawIndirect',
+--     'Vulkan.Core10.CommandBufferBuilding.cmdDrawIndexedIndirect',
+--     'Vulkan.Extensions.VK_NV_mesh_shader.cmdDrawMeshTasksIndirectNV',
+--     'Vulkan.Extensions.VK_NV_mesh_shader.cmdDrawMeshTasksIndirectCountNV',
+--     'Vulkan.Extensions.VK_EXT_mesh_shader.cmdDrawMeshTasksIndirectEXT',
+--     'Vulkan.Extensions.VK_EXT_mesh_shader.cmdDrawMeshTasksIndirectCountEXT',
+--     'Vulkan.Extensions.VK_HUAWEI_cluster_culling_shader.cmdDrawClusterIndirectHUAWEI',
+--     or 'Vulkan.Core10.CommandBufferBuilding.cmdDispatchIndirect'. It is
+--     also suitable for passing as the @buffer@ member of
+--     'Vulkan.Extensions.VK_NV_device_generated_commands.IndirectCommandsStreamNV',
+--     or @sequencesCountBuffer@ or @sequencesIndexBuffer@ or
+--     @preprocessedBuffer@ member of
+--     'Vulkan.Extensions.VK_NV_device_generated_commands.GeneratedCommandsInfoNV'.
+--     It is also suitable for passing as the underlying buffer of either
+--     the @preprocessAddress@ or @sequenceCountAddress@ members of
+--     'Vulkan.Extensions.VK_EXT_device_generated_commands.GeneratedCommandsInfoEXT'.
+--
+-- -   'BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT' specifies that the
+--     buffer is suitable for passing as the @buffer@ parameter to
+--     'Vulkan.Extensions.VK_EXT_conditional_rendering.cmdBeginConditionalRenderingEXT'.
+--
+-- -   'BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT' specifies that the
+--     buffer is suitable for using for binding as a transform feedback
+--     buffer with
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.cmdBindTransformFeedbackBuffers2EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_transform_feedback.cmdBindTransformFeedbackBuffersEXT'.
+--
+-- -   'BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT' specifies
+--     that the buffer is suitable for using as a counter buffer with
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.cmdBeginTransformFeedback2EXT',
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.cmdEndTransformFeedback2EXT',
+--     'Vulkan.Extensions.VK_EXT_transform_feedback.cmdBeginTransformFeedbackEXT',
+--     and
+--     'Vulkan.Extensions.VK_EXT_transform_feedback.cmdEndTransformFeedbackEXT'.
+--
+-- -   'BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT' specifies that the
+--     buffer is suitable to contain sampler and combined image sampler
+--     descriptors when bound as a descriptor buffer. Buffers containing
+--     combined image sampler descriptors /must/ also specify
+--     'BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT'.
+--
+-- -   'BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT' specifies that the
+--     buffer is suitable to contain resource descriptors when bound as a
+--     descriptor buffer.
+--
+-- -   'BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT' specifies
+--     that the buffer, when bound, /can/ be used by the implementation to
+--     support push descriptors when using descriptor buffers.
+--
+-- -   'BUFFER_USAGE_MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXT' specifies that
+--     when building a 'Vulkan.Extensions.Handles.MicromapEXT', the buffer
+--     /can/ be used as a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#micromap-building read-only micromap build input>,
+--     which includes the @data@ and @triangleArray@ parameters
+--
+-- -   'BUFFER_USAGE_MICROMAP_STORAGE_BIT_EXT' specifies that the buffer
+--     /can/ be used to
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-micromaps create  objects>.
+--
+-- -   'BUFFER_USAGE_TILE_MEMORY_BIT_QCOM' specifies that the buffer /can/
+--     be bound to 'Vulkan.Core10.Handles.DeviceMemory' allocated from a
+--     'Vulkan.Core10.DeviceInitialization.MemoryHeap' with the
+--     'Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_TILE_MEMORY_BIT_QCOM'
+--     property.
+--
+-- -   'Vulkan.Extensions.VK_NV_ray_tracing.BUFFER_USAGE_RAY_TRACING_BIT_NV'
+--     specifies that the buffer is suitable for use in
+--     'Vulkan.Extensions.VK_NV_ray_tracing.cmdTraceRaysNV'.
+--
+-- -   'BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR' specifies that the
+--     buffer is suitable for use as a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shader-binding-table Shader Binding Table>.
+--
+-- -   '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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#acceleration-structure-building acceleration structure build>.
+--
+-- -   'BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR' specifies that
+--     the buffer is suitable for storage space for a
+--     'Vulkan.Extensions.Handles.AccelerationStructureKHR'.
+--
+-- -   'BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT' specifies that the buffer
+--     /can/ be used to retrieve a buffer device address via
+--     'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.getBufferDeviceAddress'
+--     and use that address to access the buffer’s memory from a shader.
+--
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkBufferUsageFlagBits VK_BUFFER_USAGE_VIDEO_DECODE_SRC_BIT_KHR>
+--     specifies that the buffer /can/ be used as the source video
+--     bitstream buffer in a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#video-decode-operations video decode operation>.
+--
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkBufferUsageFlagBits VK_BUFFER_USAGE_VIDEO_DECODE_DST_BIT_KHR>
+--     is reserved for future use.
+--
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkBufferUsageFlagBits VK_BUFFER_USAGE_VIDEO_ENCODE_DST_BIT_KHR>
+--     specifies that the buffer /can/ be used as the destination video
+--     bitstream buffer in a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#video-encode-operations video encode operation>.
+--
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkBufferUsageFlagBits VK_BUFFER_USAGE_VIDEO_ENCODE_SRC_BIT_KHR>
+--     is reserved for future use.
+--
+-- -   'BUFFER_USAGE_EXECUTION_GRAPH_SCRATCH_BIT_AMDX' specifies that the
+--     buffer /can/ be used for as scratch memory for
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#executiongraphs execution graph dispatch>.
+--
+-- -   'BUFFER_USAGE_DESCRIPTOR_HEAP_BIT_EXT' specifies that the buffer
+--     /can/ be used as a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptorheaps descriptor heap>.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -49,139 +211,76 @@
 newtype BufferUsageFlagBits = BufferUsageFlagBits Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'BUFFER_USAGE_TRANSFER_SRC_BIT' specifies that the buffer /can/ be used
--- as the source of a /transfer command/ (see the definition of
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages-transfer >).
+-- No documentation found for Nested "VkBufferUsageFlagBits" "VK_BUFFER_USAGE_TRANSFER_SRC_BIT"
 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.
+-- No documentation found for Nested "VkBufferUsageFlagBits" "VK_BUFFER_USAGE_TRANSFER_DST_BIT"
 pattern BUFFER_USAGE_TRANSFER_DST_BIT = BufferUsageFlagBits 0x00000002
 
--- | 'BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT' specifies that the buffer /can/
--- be used to create a 'Vulkan.Core10.Handles.BufferView' suitable for
--- occupying a 'Vulkan.Core10.Handles.DescriptorSet' slot of type
--- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER'.
+-- No documentation found for Nested "VkBufferUsageFlagBits" "VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT"
 pattern BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = BufferUsageFlagBits 0x00000004
 
--- | 'BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT' specifies that the buffer /can/
--- be used to create a 'Vulkan.Core10.Handles.BufferView' suitable for
--- occupying a 'Vulkan.Core10.Handles.DescriptorSet' slot of type
--- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'.
+-- No documentation found for Nested "VkBufferUsageFlagBits" "VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT"
 pattern BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = BufferUsageFlagBits 0x00000008
 
--- | 'BUFFER_USAGE_UNIFORM_BUFFER_BIT' specifies that the buffer /can/ be
--- used in a 'Vulkan.Core10.DescriptorSet.DescriptorBufferInfo' suitable
--- for occupying a 'Vulkan.Core10.Handles.DescriptorSet' slot either of
--- type 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER'
--- or
--- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC'.
+-- No documentation found for Nested "VkBufferUsageFlagBits" "VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT"
 pattern BUFFER_USAGE_UNIFORM_BUFFER_BIT = BufferUsageFlagBits 0x00000010
 
--- | 'BUFFER_USAGE_STORAGE_BUFFER_BIT' specifies that the buffer /can/ be
--- used in a 'Vulkan.Core10.DescriptorSet.DescriptorBufferInfo' suitable
--- for occupying a 'Vulkan.Core10.Handles.DescriptorSet' slot either of
--- type 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER'
--- or
--- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC'.
+-- No documentation found for Nested "VkBufferUsageFlagBits" "VK_BUFFER_USAGE_STORAGE_BUFFER_BIT"
 pattern BUFFER_USAGE_STORAGE_BUFFER_BIT = BufferUsageFlagBits 0x00000020
 
--- | 'BUFFER_USAGE_INDEX_BUFFER_BIT' specifies that the buffer is suitable
--- for passing as the @buffer@ parameter to
--- 'Vulkan.Extensions.VK_KHR_maintenance5.cmdBindIndexBuffer2KHR' and
--- 'Vulkan.Core10.CommandBufferBuilding.cmdBindIndexBuffer'.
+-- No documentation found for Nested "VkBufferUsageFlagBits" "VK_BUFFER_USAGE_INDEX_BUFFER_BIT"
 pattern BUFFER_USAGE_INDEX_BUFFER_BIT = BufferUsageFlagBits 0x00000040
 
--- | 'BUFFER_USAGE_VERTEX_BUFFER_BIT' specifies that the buffer is suitable
--- for passing as an element of the @pBuffers@ array to
--- 'Vulkan.Core10.CommandBufferBuilding.cmdBindVertexBuffers'.
+-- No documentation found for Nested "VkBufferUsageFlagBits" "VK_BUFFER_USAGE_VERTEX_BUFFER_BIT"
 pattern BUFFER_USAGE_VERTEX_BUFFER_BIT = BufferUsageFlagBits 0x00000080
 
--- | 'BUFFER_USAGE_INDIRECT_BUFFER_BIT' specifies that the buffer is suitable
--- for passing as the @buffer@ parameter to
--- 'Vulkan.Core10.CommandBufferBuilding.cmdDrawIndirect',
--- 'Vulkan.Core10.CommandBufferBuilding.cmdDrawIndexedIndirect',
--- 'Vulkan.Extensions.VK_NV_mesh_shader.cmdDrawMeshTasksIndirectNV',
--- 'Vulkan.Extensions.VK_NV_mesh_shader.cmdDrawMeshTasksIndirectCountNV',
--- 'Vulkan.Extensions.VK_EXT_mesh_shader.cmdDrawMeshTasksIndirectEXT',
--- 'Vulkan.Extensions.VK_EXT_mesh_shader.cmdDrawMeshTasksIndirectCountEXT',
--- 'Vulkan.Extensions.VK_HUAWEI_cluster_culling_shader.cmdDrawClusterIndirectHUAWEI',
--- or 'Vulkan.Core10.CommandBufferBuilding.cmdDispatchIndirect'. It is also
--- suitable for passing as the @buffer@ member of
--- 'Vulkan.Extensions.VK_NV_device_generated_commands.IndirectCommandsStreamNV',
--- or @sequencesCountBuffer@ or @sequencesIndexBuffer@ or
--- @preprocessedBuffer@ member of
--- 'Vulkan.Extensions.VK_NV_device_generated_commands.GeneratedCommandsInfoNV'.
--- It is also suitable for passing as the underlying buffer of either the
--- @preprocessAddress@ or @sequenceCountAddress@ members of
--- 'Vulkan.Extensions.VK_EXT_device_generated_commands.GeneratedCommandsInfoEXT'.
+-- No documentation found for Nested "VkBufferUsageFlagBits" "VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT"
 pattern BUFFER_USAGE_INDIRECT_BUFFER_BIT = BufferUsageFlagBits 0x00000100
 
+-- No documentation found for Nested "VkBufferUsageFlagBits" "VK_BUFFER_USAGE_TILE_MEMORY_BIT_QCOM"
+pattern BUFFER_USAGE_TILE_MEMORY_BIT_QCOM = BufferUsageFlagBits 0x08000000
+
 -- No documentation found for Nested "VkBufferUsageFlagBits" "VK_BUFFER_USAGE_MICROMAP_STORAGE_BIT_EXT"
 pattern BUFFER_USAGE_MICROMAP_STORAGE_BIT_EXT = BufferUsageFlagBits 0x01000000
 
 -- No documentation found for Nested "VkBufferUsageFlagBits" "VK_BUFFER_USAGE_MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXT"
 pattern BUFFER_USAGE_MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXT = BufferUsageFlagBits 0x00800000
 
--- | 'BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT' specifies that
--- the buffer, when bound, /can/ be used by the implementation to support
--- push descriptors when using descriptor buffers.
+-- No documentation found for Nested "VkBufferUsageFlagBits" "VK_BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT"
 pattern BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT = BufferUsageFlagBits 0x04000000
 
--- | 'BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT' specifies that the
--- buffer is suitable to contain resource descriptors when bound as a
--- descriptor buffer.
+-- No documentation found for Nested "VkBufferUsageFlagBits" "VK_BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT"
 pattern BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT = BufferUsageFlagBits 0x00400000
 
--- | 'BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT' specifies that the
--- buffer is suitable to contain sampler and combined image sampler
--- descriptors when bound as a descriptor buffer. Buffers containing
--- combined image sampler descriptors /must/ also specify
--- 'BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT'.
+-- No documentation found for Nested "VkBufferUsageFlagBits" "VK_BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT"
 pattern BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT = BufferUsageFlagBits 0x00200000
 
--- | 'BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR' specifies that the buffer is
--- suitable for use as a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shader-binding-table Shader Binding Table>.
+-- No documentation found for Nested "VkBufferUsageFlagBits" "VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR"
 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
--- 'Vulkan.Extensions.Handles.AccelerationStructureKHR'.
+-- No documentation found for Nested "VkBufferUsageFlagBits" "VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR"
 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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#acceleration-structure-building acceleration structure build>.
+-- No documentation found for Nested "VkBufferUsageFlagBits" "VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR"
 pattern BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR = BufferUsageFlagBits 0x00080000
 
--- | 'BUFFER_USAGE_EXECUTION_GRAPH_SCRATCH_BIT_AMDX' specifies that the
--- buffer /can/ be used for as scratch memory for
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#executiongraphs execution graph dispatch>.
+-- No documentation found for Nested "VkBufferUsageFlagBits" "VK_BUFFER_USAGE_DESCRIPTOR_HEAP_BIT_EXT"
+pattern BUFFER_USAGE_DESCRIPTOR_HEAP_BIT_EXT = BufferUsageFlagBits 0x10000000
+
+-- No documentation found for Nested "VkBufferUsageFlagBits" "VK_BUFFER_USAGE_EXECUTION_GRAPH_SCRATCH_BIT_AMDX"
 pattern BUFFER_USAGE_EXECUTION_GRAPH_SCRATCH_BIT_AMDX = BufferUsageFlagBits 0x02000000
 
--- | 'BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT' specifies that the buffer
--- is suitable for passing as the @buffer@ parameter to
--- 'Vulkan.Extensions.VK_EXT_conditional_rendering.cmdBeginConditionalRenderingEXT'.
+-- No documentation found for Nested "VkBufferUsageFlagBits" "VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT"
 pattern BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT = BufferUsageFlagBits 0x00000200
 
--- | 'BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT' specifies that
--- the buffer is suitable for using as a counter buffer with
--- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdBeginTransformFeedbackEXT'
--- and
--- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdEndTransformFeedbackEXT'.
+-- No documentation found for Nested "VkBufferUsageFlagBits" "VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT"
 pattern BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT = BufferUsageFlagBits 0x00001000
 
--- | 'BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT' specifies that the
--- buffer is suitable for using for binding as a transform feedback buffer
--- with
--- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdBindTransformFeedbackBuffersEXT'.
+-- No documentation found for Nested "VkBufferUsageFlagBits" "VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT"
 pattern BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT = BufferUsageFlagBits 0x00000800
 
--- | 'BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT' specifies that the buffer /can/
--- be used to retrieve a buffer device address via
--- 'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.getBufferDeviceAddress'
--- and use that address to access the buffer’s memory from a shader.
+-- No documentation found for Nested "VkBufferUsageFlagBits" "VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT"
 pattern BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT = BufferUsageFlagBits 0x00020000
 
 conNameBufferUsageFlagBits :: String
@@ -229,6 +328,10 @@
     , "INDIRECT_BUFFER_BIT"
     )
   ,
+    ( BUFFER_USAGE_TILE_MEMORY_BIT_QCOM
+    , "TILE_MEMORY_BIT_QCOM"
+    )
+  ,
     ( BUFFER_USAGE_MICROMAP_STORAGE_BIT_EXT
     , "MICROMAP_STORAGE_BIT_EXT"
     )
@@ -259,6 +362,10 @@
   ,
     ( BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR
     , "ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR"
+    )
+  ,
+    ( BUFFER_USAGE_DESCRIPTOR_HEAP_BIT_EXT
+    , "DESCRIPTOR_HEAP_BIT_EXT"
     )
   ,
     ( BUFFER_USAGE_EXECUTION_GRAPH_SCRATCH_BIT_AMDX
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
@@ -27,11 +27,27 @@
 --
 -- = Description
 --
+-- -   'COLOR_COMPONENT_R_BIT' specifies that the R value is written to the
+--     color attachment for the appropriate sample. Otherwise, the value in
+--     memory is unmodified.
+--
+-- -   'COLOR_COMPONENT_G_BIT' specifies that the G value is written to the
+--     color attachment for the appropriate sample. Otherwise, the value in
+--     memory is unmodified.
+--
+-- -   'COLOR_COMPONENT_B_BIT' specifies that the B value is written to the
+--     color attachment for the appropriate sample. Otherwise, the value in
+--     memory is unmodified.
+--
+-- -   'COLOR_COMPONENT_A_BIT' specifies that the A value is written to the
+--     color attachment for the appropriate sample. Otherwise, the value in
+--     memory is unmodified.
+--
 -- The color write mask operation is applied regardless of whether blending
 -- is enabled.
 --
 -- The color write mask operation is applied only if
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#framebuffer-color-write-enable Color Write Enable>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
 --
@@ -42,24 +58,16 @@
 newtype ColorComponentFlagBits = ColorComponentFlagBits Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'COLOR_COMPONENT_R_BIT' specifies that the R value is written to the
--- color attachment for the appropriate sample. Otherwise, the value in
--- memory is unmodified.
+-- No documentation found for Nested "VkColorComponentFlagBits" "VK_COLOR_COMPONENT_R_BIT"
 pattern COLOR_COMPONENT_R_BIT = ColorComponentFlagBits 0x00000001
 
--- | 'COLOR_COMPONENT_G_BIT' specifies that the G value is written to the
--- color attachment for the appropriate sample. Otherwise, the value in
--- memory is unmodified.
+-- No documentation found for Nested "VkColorComponentFlagBits" "VK_COLOR_COMPONENT_G_BIT"
 pattern COLOR_COMPONENT_G_BIT = ColorComponentFlagBits 0x00000002
 
--- | 'COLOR_COMPONENT_B_BIT' specifies that the B value is written to the
--- color attachment for the appropriate sample. Otherwise, the value in
--- memory is unmodified.
+-- No documentation found for Nested "VkColorComponentFlagBits" "VK_COLOR_COMPONENT_B_BIT"
 pattern COLOR_COMPONENT_B_BIT = ColorComponentFlagBits 0x00000004
 
--- | 'COLOR_COMPONENT_A_BIT' specifies that the A value is written to the
--- color attachment for the appropriate sample. Otherwise, the value in
--- memory is unmodified.
+-- No documentation found for Nested "VkColorComponentFlagBits" "VK_COLOR_COMPONENT_A_BIT"
 pattern COLOR_COMPONENT_A_BIT = ColorComponentFlagBits 0x00000008
 
 conNameColorComponentFlagBits :: String
diff --git a/src/Vulkan/Core10/Enums/CommandBufferLevel.hs b/src/Vulkan/Core10/Enums/CommandBufferLevel.hs
--- a/src/Vulkan/Core10/Enums/CommandBufferLevel.hs
+++ b/src/Vulkan/Core10/Enums/CommandBufferLevel.hs
@@ -16,6 +16,13 @@
 
 -- | VkCommandBufferLevel - Enumerant specifying a command buffer level
 --
+-- = Description
+--
+-- -   'COMMAND_BUFFER_LEVEL_PRIMARY' specifies a primary command buffer.
+--
+-- -   'COMMAND_BUFFER_LEVEL_SECONDARY' specifies a secondary command
+--     buffer.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -23,10 +30,10 @@
 newtype CommandBufferLevel = CommandBufferLevel Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'COMMAND_BUFFER_LEVEL_PRIMARY' specifies a primary command buffer.
+-- No documentation found for Nested "VkCommandBufferLevel" "VK_COMMAND_BUFFER_LEVEL_PRIMARY"
 pattern COMMAND_BUFFER_LEVEL_PRIMARY = CommandBufferLevel 0
 
--- | 'COMMAND_BUFFER_LEVEL_SECONDARY' specifies a secondary command buffer.
+-- No documentation found for Nested "VkCommandBufferLevel" "VK_COMMAND_BUFFER_LEVEL_SECONDARY"
 pattern COMMAND_BUFFER_LEVEL_SECONDARY = CommandBufferLevel 1
 
 {-# COMPLETE
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
@@ -22,6 +22,15 @@
 -- | VkCommandBufferResetFlagBits - Bitmask controlling behavior of a command
 -- buffer reset
 --
+-- = Description
+--
+-- -   'COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT' specifies that most or
+--     all memory resources currently owned by the command buffer /should/
+--     be 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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#commandbuffers-lifecycle initial state>.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -29,12 +38,7 @@
 newtype CommandBufferResetFlagBits = CommandBufferResetFlagBits Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT' specifies that most or all
--- memory resources currently owned by the command buffer /should/ be
--- 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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle initial state>.
+-- No documentation found for Nested "VkCommandBufferResetFlagBits" "VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT"
 pattern COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = CommandBufferResetFlagBits 0x00000001
 
 conNameCommandBufferResetFlagBits :: String
diff --git a/src/Vulkan/Core10/Enums/CommandBufferUsageFlagBits.hs b/src/Vulkan/Core10/Enums/CommandBufferUsageFlagBits.hs
--- a/src/Vulkan/Core10/Enums/CommandBufferUsageFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/CommandBufferUsageFlagBits.hs
@@ -24,6 +24,23 @@
 -- | VkCommandBufferUsageFlagBits - Bitmask specifying usage behavior for
 -- command buffer
 --
+-- = Description
+--
+-- -   'COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT' specifies that each
+--     recording of the command buffer will only be submitted once, and the
+--     command buffer will be reset and recorded again between each
+--     submission.
+--
+-- -   'COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT' specifies that a
+--     secondary command buffer is considered to be entirely inside a
+--     render pass. If this is a primary command buffer, then this bit is
+--     ignored.
+--
+-- -   'COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT' specifies that a command
+--     buffer /can/ be resubmitted to any queue of the same queue family
+--     while it is in the /pending state/, and recorded into multiple
+--     primary command buffers.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -31,20 +48,13 @@
 newtype CommandBufferUsageFlagBits = CommandBufferUsageFlagBits Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT' specifies that each recording
--- of the command buffer will only be submitted once, and the command
--- buffer will be reset and recorded again between each submission.
+-- No documentation found for Nested "VkCommandBufferUsageFlagBits" "VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT"
 pattern COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT = CommandBufferUsageFlagBits 0x00000001
 
--- | 'COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT' specifies that a
--- secondary command buffer is considered to be entirely inside a render
--- pass. If this is a primary command buffer, then this bit is ignored.
+-- No documentation found for Nested "VkCommandBufferUsageFlagBits" "VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT"
 pattern COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT = CommandBufferUsageFlagBits 0x00000002
 
--- | 'COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT' specifies that a command
--- buffer /can/ be resubmitted to any queue of the same queue family while
--- it is in the /pending state/, and recorded into multiple primary command
--- buffers.
+-- No documentation found for Nested "VkCommandBufferUsageFlagBits" "VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT"
 pattern COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT = CommandBufferUsageFlagBits 0x00000004
 
 conNameCommandBufferUsageFlagBits :: 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
@@ -24,6 +24,27 @@
 -- | VkCommandPoolCreateFlagBits - Bitmask specifying usage behavior for a
 -- command pool
 --
+-- = Description
+--
+-- -   'COMMAND_POOL_CREATE_TRANSIENT_BIT' specifies that command buffers
+--     allocated from the pool will be short-lived, meaning that they will
+--     be reset or freed in a relatively short timeframe. This flag /may/
+--     be used by the implementation to control memory allocation behavior
+--     within the pool.
+--
+-- -   'COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT' allows any command
+--     buffer allocated from a pool to be individually reset to the
+--     <https://registry.khronos.org/vulkan/specs/latest/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 set on a pool, then
+--     'Vulkan.Core10.CommandBuffer.resetCommandBuffer' /must/ not be
+--     called for any command buffer allocated from that pool.
+--
+-- -   'COMMAND_POOL_CREATE_PROTECTED_BIT' specifies that command buffers
+--     allocated from the pool are protected command buffers.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -31,25 +52,13 @@
 newtype CommandPoolCreateFlagBits = CommandPoolCreateFlagBits Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'COMMAND_POOL_CREATE_TRANSIENT_BIT' specifies that command buffers
--- allocated from the pool will be short-lived, meaning that they will be
--- reset or freed in a relatively short timeframe. This flag /may/ be used
--- by the implementation to control memory allocation behavior within the
--- pool.
+-- No documentation found for Nested "VkCommandPoolCreateFlagBits" "VK_COMMAND_POOL_CREATE_TRANSIENT_BIT"
 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://registry.khronos.org/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
--- set on a pool, then 'Vulkan.Core10.CommandBuffer.resetCommandBuffer'
--- /must/ not be called for any command buffer allocated from that pool.
+-- No documentation found for Nested "VkCommandPoolCreateFlagBits" "VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT"
 pattern COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT = CommandPoolCreateFlagBits 0x00000002
 
--- | 'COMMAND_POOL_CREATE_PROTECTED_BIT' specifies that command buffers
--- allocated from the pool are protected command buffers.
+-- No documentation found for Nested "VkCommandPoolCreateFlagBits" "VK_COMMAND_POOL_CREATE_PROTECTED_BIT"
 pattern COMMAND_POOL_CREATE_PROTECTED_BIT = CommandPoolCreateFlagBits 0x00000004
 
 conNameCommandPoolCreateFlagBits :: String
diff --git a/src/Vulkan/Core10/Enums/CommandPoolResetFlagBits.hs b/src/Vulkan/Core10/Enums/CommandPoolResetFlagBits.hs
--- a/src/Vulkan/Core10/Enums/CommandPoolResetFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/CommandPoolResetFlagBits.hs
@@ -22,6 +22,12 @@
 -- | VkCommandPoolResetFlagBits - Bitmask controlling behavior of a command
 -- pool reset
 --
+-- = Description
+--
+-- -   'COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT' specifies that resetting
+--     a command pool recycles all of the resources from the command pool
+--     back to the system.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -29,9 +35,7 @@
 newtype CommandPoolResetFlagBits = CommandPoolResetFlagBits Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT' specifies that resetting a
--- command pool recycles all of the resources from the command pool back to
--- the system.
+-- No documentation found for Nested "VkCommandPoolResetFlagBits" "VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT"
 pattern COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = CommandPoolResetFlagBits 0x00000001
 
 conNameCommandPoolResetFlagBits :: String
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
@@ -52,24 +52,24 @@
 -- Comparison operators are used for:
 --
 -- -   The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#textures-depth-compare-operation Depth Compare Operation>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#textures-depth-compare-operation Depth Compare Operation>
 --     operator for a sampler, specified by
 --     'Vulkan.Core10.Sampler.SamplerCreateInfo'::@compareOp@.
 --
 -- -   The stencil comparison operator for the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-stencil stencil test>,
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#fragops-stencil stencil test>,
 --     specified by
 --     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilOp'::@compareOp@
---     or 'Vulkan.Core10.Pipeline.StencilOpState'::@compareOp@.
+--     or 'Vulkan.Core10.GraphicsPipeline.StencilOpState'::@compareOp@.
 --
 -- -   The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-depth-comparison Depth Comparison>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#fragops-depth-comparison Depth Comparison>
 --     operator for the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-depth depth test>,
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#fragops-depth depth test>,
 --     specified by
 --     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthCompareOp'::@depthCompareOp@
 --     or
---     'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo'::@depthCompareOp@.
+--     'Vulkan.Core10.GraphicsPipeline.PipelineDepthStencilStateCreateInfo'::@depthCompareOp@.
 --
 -- Each such use describes how the /reference/ and /test/ values for that
 -- comparison are determined.
@@ -77,13 +77,13 @@
 -- = 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.Pipeline.PipelineDepthStencilStateCreateInfo',
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDepthStencilStateCreateInfo',
 -- 'Vulkan.Core10.Sampler.SamplerCreateInfo',
--- 'Vulkan.Core10.Pipeline.StencilOpState',
+-- 'Vulkan.Core10.GraphicsPipeline.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.cmdSetDepthCompareOp',
 -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilOp',
--- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetStencilOpEXT'
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilOp'
 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
@@ -23,6 +23,31 @@
 --
 -- = Description
 --
+-- -   'COMPONENT_SWIZZLE_IDENTITY' specifies that the component is set to
+--     the identity swizzle.
+--
+-- -   'COMPONENT_SWIZZLE_ZERO' specifies that the component is set to
+--     zero.
+--
+-- -   '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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-definition Format Definition>
+--     section for each 'Vulkan.Core10.Enums.Format.Format'.
+--
+-- -   'COMPONENT_SWIZZLE_R' specifies that the component is set to the
+--     value of the R component of the image.
+--
+-- -   'COMPONENT_SWIZZLE_G' specifies that the component is set to the
+--     value of the G component of the image.
+--
+-- -   'COMPONENT_SWIZZLE_B' specifies that the component is set to the
+--     value of the B component of the image.
+--
+-- -   'COMPONENT_SWIZZLE_A' specifies that the component is set to the
+--     value of the A component of the image.
+--
 -- Setting the identity swizzle on a component is equivalent to setting the
 -- identity mapping on that component. That is:
 --
@@ -47,34 +72,25 @@
 newtype ComponentSwizzle = ComponentSwizzle Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'COMPONENT_SWIZZLE_IDENTITY' specifies that the component is set to the
--- identity swizzle.
+-- No documentation found for Nested "VkComponentSwizzle" "VK_COMPONENT_SWIZZLE_IDENTITY"
 pattern COMPONENT_SWIZZLE_IDENTITY = ComponentSwizzle 0
 
--- | 'COMPONENT_SWIZZLE_ZERO' specifies that the component is set to zero.
+-- No documentation found for Nested "VkComponentSwizzle" "VK_COMPONENT_SWIZZLE_ZERO"
 pattern COMPONENT_SWIZZLE_ZERO = ComponentSwizzle 1
 
--- | '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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#formats-definition Format Definition>
--- section for each 'Vulkan.Core10.Enums.Format.Format'.
+-- No documentation found for Nested "VkComponentSwizzle" "VK_COMPONENT_SWIZZLE_ONE"
 pattern COMPONENT_SWIZZLE_ONE = ComponentSwizzle 2
 
--- | 'COMPONENT_SWIZZLE_R' specifies that the component is set to the value
--- of the R component of the image.
+-- No documentation found for Nested "VkComponentSwizzle" "VK_COMPONENT_SWIZZLE_R"
 pattern COMPONENT_SWIZZLE_R = ComponentSwizzle 3
 
--- | 'COMPONENT_SWIZZLE_G' specifies that the component is set to the value
--- of the G component of the image.
+-- No documentation found for Nested "VkComponentSwizzle" "VK_COMPONENT_SWIZZLE_G"
 pattern COMPONENT_SWIZZLE_G = ComponentSwizzle 4
 
--- | 'COMPONENT_SWIZZLE_B' specifies that the component is set to the value
--- of the B component of the image.
+-- No documentation found for Nested "VkComponentSwizzle" "VK_COMPONENT_SWIZZLE_B"
 pattern COMPONENT_SWIZZLE_B = ComponentSwizzle 5
 
--- | 'COMPONENT_SWIZZLE_A' specifies that the component is set to the value
--- of the A component of the image.
+-- No documentation found for Nested "VkComponentSwizzle" "VK_COMPONENT_SWIZZLE_A"
 pattern COMPONENT_SWIZZLE_A = ComponentSwizzle 6
 
 {-# COMPLETE
diff --git a/src/Vulkan/Core10/Enums/CullModeFlagBits.hs b/src/Vulkan/Core10/Enums/CullModeFlagBits.hs
--- a/src/Vulkan/Core10/Enums/CullModeFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/CullModeFlagBits.hs
@@ -26,6 +26,17 @@
 --
 -- = Description
 --
+-- -   'CULL_MODE_NONE' specifies that no triangles are discarded
+--
+-- -   'CULL_MODE_FRONT_BIT' specifies that front-facing triangles are
+--     discarded
+--
+-- -   'CULL_MODE_BACK_BIT' specifies that back-facing triangles are
+--     discarded
+--
+-- -   'CULL_MODE_FRONT_AND_BACK' specifies that all triangles are
+--     discarded.
+--
 -- Following culling, fragments are produced for any triangles which have
 -- not been discarded.
 --
@@ -36,17 +47,16 @@
 newtype CullModeFlagBits = CullModeFlagBits Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'CULL_MODE_NONE' specifies that no triangles are discarded
+-- No documentation found for Nested "VkCullModeFlagBits" "VK_CULL_MODE_NONE"
 pattern CULL_MODE_NONE = CullModeFlagBits 0x00000000
 
--- | 'CULL_MODE_FRONT_BIT' specifies that front-facing triangles are
--- discarded
+-- No documentation found for Nested "VkCullModeFlagBits" "VK_CULL_MODE_FRONT_BIT"
 pattern CULL_MODE_FRONT_BIT = CullModeFlagBits 0x00000001
 
--- | 'CULL_MODE_BACK_BIT' specifies that back-facing triangles are discarded
+-- No documentation found for Nested "VkCullModeFlagBits" "VK_CULL_MODE_BACK_BIT"
 pattern CULL_MODE_BACK_BIT = CullModeFlagBits 0x00000002
 
--- | 'CULL_MODE_FRONT_AND_BACK' specifies that all triangles are discarded.
+-- No documentation found for Nested "VkCullModeFlagBits" "VK_CULL_MODE_FRONT_AND_BACK"
 pattern CULL_MODE_FRONT_AND_BACK = CullModeFlagBits 0x00000003
 
 conNameCullModeFlagBits :: String
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
@@ -2,6 +2,8 @@
 -- No documentation found for Chapter "DependencyFlagBits"
 module Vulkan.Core10.Enums.DependencyFlagBits  ( DependencyFlags
                                                , DependencyFlagBits( DEPENDENCY_BY_REGION_BIT
+                                                                   , DEPENDENCY_ASYMMETRIC_EVENT_BIT_KHR
+                                                                   , DEPENDENCY_QUEUE_FAMILY_OWNERSHIP_TRANSFER_USE_ALL_STAGES_BIT_KHR
                                                                    , DEPENDENCY_FEEDBACK_LOOP_BIT_EXT
                                                                    , DEPENDENCY_VIEW_LOCAL_BIT
                                                                    , DEPENDENCY_DEVICE_GROUP_BIT
@@ -25,6 +27,40 @@
 -- | VkDependencyFlagBits - Bitmask specifying how execution and memory
 -- dependencies are formed
 --
+-- = Description
+--
+-- -   'DEPENDENCY_BY_REGION_BIT' specifies that dependencies will be split
+--     into multiple
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-framebuffer-regions framebuffer-local regions>
+--     according to the (x,y,layer,sample) coordinates.
+--
+-- -   'DEPENDENCY_VIEW_LOCAL_BIT' specifies that dependencies will be
+--     split into multiple
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-framebuffer-regions framebuffer-local regions>
+--     according to the view.
+--
+-- -   'DEPENDENCY_DEVICE_GROUP_BIT' specifies that dependencies are
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-device-local-dependencies non-device-local>.
+--
+-- -   'DEPENDENCY_FEEDBACK_LOOP_BIT_EXT' specifies that the render pass
+--     will write to and read from the same image with
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-feedbackloop feedback loop enabled>.
+--
+-- -   'DEPENDENCY_QUEUE_FAMILY_OWNERSHIP_TRANSFER_USE_ALL_STAGES_BIT_KHR'
+--     specifies that source and destination stages are not ignored when
+--     performing a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>.
+--
+-- -   'DEPENDENCY_ASYMMETRIC_EVENT_BIT_KHR' specifies that the access
+--     scopes of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.cmdSetEvent2'
+--     and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.cmdWaitEvents2'
+--     do not need to match for a given event when it is specified in both
+--     commands, and the access scope of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.cmdSetEvent2'
+--     is empty.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -32,22 +68,22 @@
 newtype DependencyFlagBits = DependencyFlagBits Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'DEPENDENCY_BY_REGION_BIT' specifies that dependencies will be
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-framebuffer-regions framebuffer-local>.
+-- No documentation found for Nested "VkDependencyFlagBits" "VK_DEPENDENCY_BY_REGION_BIT"
 pattern DEPENDENCY_BY_REGION_BIT = DependencyFlagBits 0x00000001
 
--- | 'DEPENDENCY_FEEDBACK_LOOP_BIT_EXT' specifies that the render pass will
--- write to and read from the same image using the
--- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
--- layout.
+-- No documentation found for Nested "VkDependencyFlagBits" "VK_DEPENDENCY_ASYMMETRIC_EVENT_BIT_KHR"
+pattern DEPENDENCY_ASYMMETRIC_EVENT_BIT_KHR = DependencyFlagBits 0x00000040
+
+-- No documentation found for Nested "VkDependencyFlagBits" "VK_DEPENDENCY_QUEUE_FAMILY_OWNERSHIP_TRANSFER_USE_ALL_STAGES_BIT_KHR"
+pattern DEPENDENCY_QUEUE_FAMILY_OWNERSHIP_TRANSFER_USE_ALL_STAGES_BIT_KHR = DependencyFlagBits 0x00000020
+
+-- No documentation found for Nested "VkDependencyFlagBits" "VK_DEPENDENCY_FEEDBACK_LOOP_BIT_EXT"
 pattern DEPENDENCY_FEEDBACK_LOOP_BIT_EXT = DependencyFlagBits 0x00000008
 
--- | 'DEPENDENCY_VIEW_LOCAL_BIT' specifies that dependencies will be
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-view-local-dependencies view-local>.
+-- No documentation found for Nested "VkDependencyFlagBits" "VK_DEPENDENCY_VIEW_LOCAL_BIT"
 pattern DEPENDENCY_VIEW_LOCAL_BIT = DependencyFlagBits 0x00000002
 
--- | 'DEPENDENCY_DEVICE_GROUP_BIT' specifies that dependencies are
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-device-local-dependencies non-device-local>.
+-- No documentation found for Nested "VkDependencyFlagBits" "VK_DEPENDENCY_DEVICE_GROUP_BIT"
 pattern DEPENDENCY_DEVICE_GROUP_BIT = DependencyFlagBits 0x00000004
 
 conNameDependencyFlagBits :: String
@@ -59,6 +95,14 @@
 showTableDependencyFlagBits :: [(DependencyFlagBits, String)]
 showTableDependencyFlagBits =
   [ (DEPENDENCY_BY_REGION_BIT, "BY_REGION_BIT")
+  ,
+    ( DEPENDENCY_ASYMMETRIC_EVENT_BIT_KHR
+    , "ASYMMETRIC_EVENT_BIT_KHR"
+    )
+  ,
+    ( DEPENDENCY_QUEUE_FAMILY_OWNERSHIP_TRANSFER_USE_ALL_STAGES_BIT_KHR
+    , "QUEUE_FAMILY_OWNERSHIP_TRANSFER_USE_ALL_STAGES_BIT_KHR"
+    )
   ,
     ( DEPENDENCY_FEEDBACK_LOOP_BIT_EXT
     , "FEEDBACK_LOOP_BIT_EXT"
diff --git a/src/Vulkan/Core10/Enums/DescriptorPoolCreateFlagBits.hs b/src/Vulkan/Core10/Enums/DescriptorPoolCreateFlagBits.hs
--- a/src/Vulkan/Core10/Enums/DescriptorPoolCreateFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/DescriptorPoolCreateFlagBits.hs
@@ -26,6 +26,64 @@
 -- | VkDescriptorPoolCreateFlagBits - Bitmask specifying certain supported
 -- operations on a descriptor pool
 --
+-- = Description
+--
+-- -   'DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT' specifies that
+--     descriptor sets /can/ return their individual allocations to the
+--     pool, i.e. all of
+--     'Vulkan.Core10.DescriptorSet.allocateDescriptorSets',
+--     'Vulkan.Core10.DescriptorSet.freeDescriptorSets', and
+--     'Vulkan.Core10.DescriptorSet.resetDescriptorPool' are allowed.
+--     Otherwise, descriptor sets allocated from the pool /must/ not be
+--     individually freed back to the pool, i.e. only
+--     'Vulkan.Core10.DescriptorSet.allocateDescriptorSets' and
+--     'Vulkan.Core10.DescriptorSet.resetDescriptorPool' are allowed.
+--
+-- -   'DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT' specifies that
+--     descriptor sets allocated from this pool /can/ include bindings with
+--     the
+--     'Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT'
+--     bit set. It is valid to allocate descriptor sets that have bindings
+--     that do not set the
+--     'Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT'
+--     bit from a pool that has
+--     'DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT' set.
+--
+-- -   'DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_EXT' specifies that this
+--     descriptor pool and the descriptor sets allocated from it reside
+--     entirely in host memory and cannot be bound. Similar to descriptor
+--     sets allocated without this flag, applications /can/ copy-from and
+--     copy-to descriptors sets allocated from this descriptor pool.
+--     Descriptor sets allocated from this pool are partially exempt from
+--     the external synchronization requirement in
+--     'Vulkan.Extensions.VK_KHR_descriptor_update_template.updateDescriptorSetWithTemplateKHR'
+--     and 'Vulkan.Core10.DescriptorSet.updateDescriptorSets'. Descriptor
+--     sets and their descriptors can be updated concurrently in different
+--     threads, though the same descriptor /must/ not be updated
+--     concurrently by two threads.
+--
+-- -   'DESCRIPTOR_POOL_CREATE_ALLOW_OVERALLOCATION_SETS_BIT_NV' specifies
+--     that the implementation should allow the application to allocate
+--     more than
+--     'Vulkan.Core10.DescriptorSet.DescriptorPoolCreateInfo'::@maxSets@
+--     descriptor set objects from the descriptor pool as available
+--     resources allow. The implementation /may/ use the @maxSets@ value to
+--     allocate the initial available sets, but using zero is permitted.
+--
+-- -   'DESCRIPTOR_POOL_CREATE_ALLOW_OVERALLOCATION_POOLS_BIT_NV' specifies
+--     that the implementation should allow the application to allocate
+--     more descriptors from the pool than was specified by the
+--     'Vulkan.Core10.DescriptorSet.DescriptorPoolSize'::@descriptorCount@
+--     for any descriptor type as specified by
+--     'Vulkan.Core10.DescriptorSet.DescriptorPoolCreateInfo'::@poolSizeCount@
+--     and
+--     'Vulkan.Core10.DescriptorSet.DescriptorPoolCreateInfo'::@pPoolSizes@,
+--     as available resources allow. The implementation /may/ use the
+--     @descriptorCount@ for each descriptor type to allocate the initial
+--     pool, but the application is allowed to set the @poolSizeCount@ to
+--     zero, or any of the @descriptorCount@ values in the @pPoolSizes@
+--     array to zero.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -33,61 +91,19 @@
 newtype DescriptorPoolCreateFlagBits = DescriptorPoolCreateFlagBits Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT' specifies that
--- descriptor sets /can/ return their individual allocations to the pool,
--- i.e. all of 'Vulkan.Core10.DescriptorSet.allocateDescriptorSets',
--- 'Vulkan.Core10.DescriptorSet.freeDescriptorSets', and
--- 'Vulkan.Core10.DescriptorSet.resetDescriptorPool' are allowed.
--- Otherwise, descriptor sets allocated from the pool /must/ not be
--- individually freed back to the pool, i.e. only
--- 'Vulkan.Core10.DescriptorSet.allocateDescriptorSets' and
--- 'Vulkan.Core10.DescriptorSet.resetDescriptorPool' are allowed.
+-- No documentation found for Nested "VkDescriptorPoolCreateFlagBits" "VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT"
 pattern DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = DescriptorPoolCreateFlagBits 0x00000001
 
--- | 'DESCRIPTOR_POOL_CREATE_ALLOW_OVERALLOCATION_POOLS_BIT_NV' specifies
--- that the implementation should allow the application to allocate more
--- descriptors from the pool than was specified by the
--- 'Vulkan.Core10.DescriptorSet.DescriptorPoolSize'::@descriptorCount@ for
--- any descriptor type as specified by
--- 'Vulkan.Core10.DescriptorSet.DescriptorPoolCreateInfo'::@poolSizeCount@
--- and
--- 'Vulkan.Core10.DescriptorSet.DescriptorPoolCreateInfo'::@pPoolSizes@, as
--- available resources allow. The implementation /may/ use the
--- @descriptorCount@ for each descriptor type to allocate the initial pool,
--- but the application is allowed to set the @poolSizeCount@ to zero, or
--- any of the @descriptorCount@ values in the @pPoolSizes@ array to zero.
+-- No documentation found for Nested "VkDescriptorPoolCreateFlagBits" "VK_DESCRIPTOR_POOL_CREATE_ALLOW_OVERALLOCATION_POOLS_BIT_NV"
 pattern DESCRIPTOR_POOL_CREATE_ALLOW_OVERALLOCATION_POOLS_BIT_NV = DescriptorPoolCreateFlagBits 0x00000010
 
--- | 'DESCRIPTOR_POOL_CREATE_ALLOW_OVERALLOCATION_SETS_BIT_NV' specifies that
--- the implementation should allow the application to allocate more than
--- 'Vulkan.Core10.DescriptorSet.DescriptorPoolCreateInfo'::@maxSets@
--- descriptor set objects from the descriptor pool as available resources
--- allow. The implementation /may/ use the @maxSets@ value to allocate the
--- initial available sets, but using zero is permitted.
+-- No documentation found for Nested "VkDescriptorPoolCreateFlagBits" "VK_DESCRIPTOR_POOL_CREATE_ALLOW_OVERALLOCATION_SETS_BIT_NV"
 pattern DESCRIPTOR_POOL_CREATE_ALLOW_OVERALLOCATION_SETS_BIT_NV = DescriptorPoolCreateFlagBits 0x00000008
 
--- | 'DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_EXT' specifies that this
--- descriptor pool and the descriptor sets allocated from it reside
--- entirely in host memory and cannot be bound. Similar to descriptor sets
--- allocated without this flag, applications /can/ copy-from and copy-to
--- descriptors sets allocated from this descriptor pool. Descriptor sets
--- allocated from this pool are partially exempt from the external
--- synchronization requirement in
--- 'Vulkan.Extensions.VK_KHR_descriptor_update_template.updateDescriptorSetWithTemplateKHR'
--- and 'Vulkan.Core10.DescriptorSet.updateDescriptorSets'. Descriptor sets
--- and their descriptors can be updated concurrently in different threads,
--- though the same descriptor /must/ not be updated concurrently by two
--- threads.
+-- No documentation found for Nested "VkDescriptorPoolCreateFlagBits" "VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_EXT"
 pattern DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_EXT = DescriptorPoolCreateFlagBits 0x00000004
 
--- | 'DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT' specifies that descriptor
--- sets allocated from this pool /can/ include bindings with the
--- 'Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT'
--- bit set. It is valid to allocate descriptor sets that have bindings that
--- do not set the
--- 'Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT'
--- bit from a pool that has 'DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT'
--- set.
+-- No documentation found for Nested "VkDescriptorPoolCreateFlagBits" "VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT"
 pattern DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT = DescriptorPoolCreateFlagBits 0x00000002
 
 conNameDescriptorPoolCreateFlagBits :: String
diff --git a/src/Vulkan/Core10/Enums/DescriptorSetLayoutCreateFlagBits.hs b/src/Vulkan/Core10/Enums/DescriptorSetLayoutCreateFlagBits.hs
--- a/src/Vulkan/Core10/Enums/DescriptorSetLayoutCreateFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/DescriptorSetLayoutCreateFlagBits.hs
@@ -6,7 +6,7 @@
                                                                                                  , DESCRIPTOR_SET_LAYOUT_CREATE_INDIRECT_BINDABLE_BIT_NV
                                                                                                  , DESCRIPTOR_SET_LAYOUT_CREATE_EMBEDDED_IMMUTABLE_SAMPLERS_BIT_EXT
                                                                                                  , DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT
-                                                                                                 , DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR
+                                                                                                 , DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT
                                                                                                  , DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT
                                                                                                  , ..
                                                                                                  )
@@ -28,6 +28,56 @@
 -- | VkDescriptorSetLayoutCreateFlagBits - Bitmask specifying descriptor set
 -- layout properties
 --
+-- = Description
+--
+-- -   'DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT' specifies that
+--     descriptor sets /must/ not be allocated using this layout, and
+--     descriptors are instead pushed by
+--     'Vulkan.Core14.Promoted_From_VK_KHR_push_descriptor.cmdPushDescriptorSet'.
+--
+-- -   'DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT' specifies
+--     that descriptor sets using this layout /must/ be allocated from a
+--     descriptor pool created with the
+--     'Vulkan.Core10.Enums.DescriptorPoolCreateFlagBits.DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT'
+--     bit set. Descriptor set layouts created with this bit set have
+--     alternate limits for the maximum number of descriptors per-stage and
+--     per-pipeline layout. The non-UpdateAfterBind limits only count
+--     descriptors in sets created without this flag. The UpdateAfterBind
+--     limits count all descriptors, but the limits /may/ be higher than
+--     the non-UpdateAfterBind limits.
+--
+-- -   'DESCRIPTOR_SET_LAYOUT_CREATE_INDIRECT_BINDABLE_BIT_NV' specifies
+--     that descriptor sets using this layout allows them to be bound with
+--     compute pipelines that are created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV'
+--     flag set to be used in
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#device-generated-commands Device-Generated Commands>.
+--
+-- -   'DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT' specifies
+--     that this layout /must/ only be used with descriptor buffers.
+--
+-- -   'DESCRIPTOR_SET_LAYOUT_CREATE_EMBEDDED_IMMUTABLE_SAMPLERS_BIT_EXT'
+--     specifies that this is a layout only containing immutable samplers
+--     that /can/ be bound by
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdBindDescriptorBufferEmbeddedSamplersEXT'.
+--     Unlike normal immutable samplers, embedded immutable samplers do not
+--     require the application to provide them in a descriptor buffer.
+--
+-- -   'DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT' specifies that
+--     descriptor sets using this layout /must/ be allocated from a
+--     descriptor pool created with the
+--     'Vulkan.Core10.Enums.DescriptorPoolCreateFlagBits.DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_EXT'
+--     bit set. Descriptor set layouts created with this bit have no
+--     expressible limit for maximum number of descriptors per-stage. Host
+--     descriptor sets are limited only by available host memory, but /may/
+--     be limited for implementation specific reasons. Implementations
+--     /may/ limit the number of supported descriptors to UpdateAfterBind
+--     limits or non-UpdateAfterBind limits, whichever is larger.
+--
+-- -   'DESCRIPTOR_SET_LAYOUT_CREATE_PER_STAGE_BIT_NV' specifies that
+--     binding numbers in descriptor sets using this layout /may/ represent
+--     different resources and\/or types of resources in each stage.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -35,59 +85,25 @@
 newtype DescriptorSetLayoutCreateFlagBits = DescriptorSetLayoutCreateFlagBits Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'DESCRIPTOR_SET_LAYOUT_CREATE_PER_STAGE_BIT_NV' specifies that binding
--- numbers in descriptor sets using this layout /may/ represent different
--- resources and\/or types of resources in each stage.
+-- No documentation found for Nested "VkDescriptorSetLayoutCreateFlagBits" "VK_DESCRIPTOR_SET_LAYOUT_CREATE_PER_STAGE_BIT_NV"
 pattern DESCRIPTOR_SET_LAYOUT_CREATE_PER_STAGE_BIT_NV = DescriptorSetLayoutCreateFlagBits 0x00000040
 
--- | 'DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT' specifies that
--- descriptor sets using this layout /must/ be allocated from a descriptor
--- pool created with the
--- 'Vulkan.Core10.Enums.DescriptorPoolCreateFlagBits.DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_EXT'
--- bit set. Descriptor set layouts created with this bit have no
--- expressible limit for maximum number of descriptors per-stage. Host
--- descriptor sets are limited only by available host memory, but /may/ be
--- limited for implementation specific reasons. Implementations /may/ limit
--- the number of supported descriptors to UpdateAfterBind limits or
--- non-UpdateAfterBind limits, whichever is larger.
+-- No documentation found for Nested "VkDescriptorSetLayoutCreateFlagBits" "VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT"
 pattern DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT = DescriptorSetLayoutCreateFlagBits 0x00000004
 
--- | 'DESCRIPTOR_SET_LAYOUT_CREATE_INDIRECT_BINDABLE_BIT_NV' specifies that
--- descriptor sets using this layout allows them to be bound with compute
--- pipelines that are created with
--- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV'
--- flag set to be used in
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#device-generated-commands Device-Generated Commands>.
+-- No documentation found for Nested "VkDescriptorSetLayoutCreateFlagBits" "VK_DESCRIPTOR_SET_LAYOUT_CREATE_INDIRECT_BINDABLE_BIT_NV"
 pattern DESCRIPTOR_SET_LAYOUT_CREATE_INDIRECT_BINDABLE_BIT_NV = DescriptorSetLayoutCreateFlagBits 0x00000080
 
--- | 'DESCRIPTOR_SET_LAYOUT_CREATE_EMBEDDED_IMMUTABLE_SAMPLERS_BIT_EXT'
--- specifies that this is a layout only containing immutable samplers that
--- /can/ be bound by
--- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdBindDescriptorBufferEmbeddedSamplersEXT'.
--- Unlike normal immutable samplers, embedded immutable samplers do not
--- require the application to provide them in a descriptor buffer.
+-- No documentation found for Nested "VkDescriptorSetLayoutCreateFlagBits" "VK_DESCRIPTOR_SET_LAYOUT_CREATE_EMBEDDED_IMMUTABLE_SAMPLERS_BIT_EXT"
 pattern DESCRIPTOR_SET_LAYOUT_CREATE_EMBEDDED_IMMUTABLE_SAMPLERS_BIT_EXT = DescriptorSetLayoutCreateFlagBits 0x00000020
 
--- | 'DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT' specifies that
--- this layout /must/ only be used with descriptor buffers.
+-- No documentation found for Nested "VkDescriptorSetLayoutCreateFlagBits" "VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT"
 pattern DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT = DescriptorSetLayoutCreateFlagBits 0x00000010
 
--- | 'DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR' specifies that
--- descriptor sets /must/ not be allocated using this layout, and
--- descriptors are instead pushed by
--- 'Vulkan.Extensions.VK_KHR_push_descriptor.cmdPushDescriptorSetKHR'.
-pattern DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR = DescriptorSetLayoutCreateFlagBits 0x00000001
+-- No documentation found for Nested "VkDescriptorSetLayoutCreateFlagBits" "VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT"
+pattern DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT = DescriptorSetLayoutCreateFlagBits 0x00000001
 
--- | 'DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT' specifies that
--- descriptor sets using this layout /must/ be allocated from a descriptor
--- pool created with the
--- 'Vulkan.Core10.Enums.DescriptorPoolCreateFlagBits.DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT'
--- bit set. Descriptor set layouts created with this bit set have alternate
--- limits for the maximum number of descriptors per-stage and per-pipeline
--- layout. The non-UpdateAfterBind limits only count descriptors in sets
--- created without this flag. The UpdateAfterBind limits count all
--- descriptors, but the limits /may/ be higher than the non-UpdateAfterBind
--- limits.
+-- No documentation found for Nested "VkDescriptorSetLayoutCreateFlagBits" "VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT"
 pattern DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT = DescriptorSetLayoutCreateFlagBits 0x00000002
 
 conNameDescriptorSetLayoutCreateFlagBits :: String
@@ -119,8 +135,8 @@
     , "DESCRIPTOR_BUFFER_BIT_EXT"
     )
   ,
-    ( DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR
-    , "PUSH_DESCRIPTOR_BIT_KHR"
+    ( DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT
+    , "PUSH_DESCRIPTOR_BIT"
     )
   ,
     ( DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT
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
@@ -12,6 +12,7 @@
                                                           , DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC
                                                           , DESCRIPTOR_TYPE_INPUT_ATTACHMENT
                                                           , DESCRIPTOR_TYPE_MUTABLE_EXT
+                                                          , DESCRIPTOR_TYPE_TENSOR_ARM
                                                           , DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM
                                                           , DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM
                                                           , DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV
@@ -35,108 +36,62 @@
 -- = Description
 --
 -- -   'DESCRIPTOR_TYPE_SAMPLER' specifies a
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-sampler sampler descriptor>.
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-sampler sampler descriptor>.
 --
 -- -   'DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER' specifies a
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-combinedimagesampler combined image sampler descriptor>.
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-combinedimagesampler combined image sampler descriptor>.
 --
 -- -   'DESCRIPTOR_TYPE_SAMPLED_IMAGE' specifies a
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-sampledimage sampled image descriptor>.
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-sampledimage sampled image descriptor>.
 --
 -- -   'DESCRIPTOR_TYPE_STORAGE_IMAGE' specifies a
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storageimage storage image descriptor>.
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-storageimage storage image descriptor>.
 --
 -- -   'DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER' specifies a
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-uniformtexelbuffer uniform texel buffer descriptor>.
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-uniformtexelbuffer uniform texel buffer descriptor>.
 --
 -- -   'DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER' specifies a
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storagetexelbuffer storage texel buffer descriptor>.
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-storagetexelbuffer storage texel buffer descriptor>.
 --
 -- -   'DESCRIPTOR_TYPE_UNIFORM_BUFFER' specifies a
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-uniformbuffer uniform buffer descriptor>.
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-uniformbuffer uniform buffer descriptor>.
 --
 -- -   'DESCRIPTOR_TYPE_STORAGE_BUFFER' specifies a
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storagebuffer storage buffer descriptor>.
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-storagebuffer storage buffer descriptor>.
 --
 -- -   'DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC' specifies a
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-uniformbufferdynamic dynamic uniform buffer descriptor>.
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-uniformbufferdynamic dynamic uniform buffer descriptor>.
 --
 -- -   'DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC' specifies a
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storagebufferdynamic dynamic storage buffer descriptor>.
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-storagebufferdynamic dynamic storage buffer descriptor>.
 --
 -- -   'DESCRIPTOR_TYPE_INPUT_ATTACHMENT' specifies an
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-inputattachment input attachment descriptor>.
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-inputattachment input attachment descriptor>.
 --
 -- -   'DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK' specifies an
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-inlineuniformblock inline uniform block>.
---
--- -   'DESCRIPTOR_TYPE_MUTABLE_EXT' specifies a
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-mutable descriptor of mutable type>.
---
--- -   'DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM' specifies a
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-weightimage sampled weight image descriptor>.
---
--- -   'DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM' specifies a
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-blockmatch block matching image descriptor>.
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-inlineuniformblock inline uniform block>.
 --
--- When a descriptor set is updated via elements of
--- 'Vulkan.Core10.DescriptorSet.WriteDescriptorSet', members of
--- @pImageInfo@, @pBufferInfo@ and @pTexelBufferView@ are only accessed by
--- the implementation when they correspond to descriptor type being defined
--- - otherwise they are ignored. The members accessed are as follows for
--- each descriptor type:
+-- -   'DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR' specifies an
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-accelerationstructure acceleration structure descriptor>.
 --
--- -   For 'DESCRIPTOR_TYPE_SAMPLER', only the @sampler@ member of each
---     element of
---     'Vulkan.Core10.DescriptorSet.WriteDescriptorSet'::@pImageInfo@ is
---     accessed.
+-- -   'DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV' specifies an
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-accelerationstructure acceleration structure descriptor>.
 --
--- -   For 'DESCRIPTOR_TYPE_SAMPLED_IMAGE',
---     'DESCRIPTOR_TYPE_STORAGE_IMAGE', or
---     'DESCRIPTOR_TYPE_INPUT_ATTACHMENT', only the @imageView@ and
---     @imageLayout@ members of each element of
---     'Vulkan.Core10.DescriptorSet.WriteDescriptorSet'::@pImageInfo@ are
---     accessed.
+-- -   'DESCRIPTOR_TYPE_MUTABLE_EXT' specifies a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-mutable descriptor of mutable type>.
 --
--- -   For 'DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER', all members of each
---     element of
---     'Vulkan.Core10.DescriptorSet.WriteDescriptorSet'::@pImageInfo@ are
---     accessed.
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkDescriptorType VK_DESCRIPTOR_TYPE_PARTITIONED_ACCELERATION_STRUCTURE_NV>
+--     specifies a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-partitionedaccelerationstructure partitioned acceleration structure descriptor>.
 --
--- -   For 'DESCRIPTOR_TYPE_UNIFORM_BUFFER',
---     'DESCRIPTOR_TYPE_STORAGE_BUFFER',
---     'DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC', or
---     'DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC', all members of each
---     element of
---     'Vulkan.Core10.DescriptorSet.WriteDescriptorSet'::@pBufferInfo@ are
---     accessed.
+-- -   'DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM' specifies a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-weightimage sampled weight image descriptor>.
 --
--- -   For 'DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER' or
---     'DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER', each element of
---     'Vulkan.Core10.DescriptorSet.WriteDescriptorSet'::@pTexelBufferView@
---     is accessed.
+-- -   'DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM' specifies a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-blockmatch block matching image descriptor>.
 --
--- When updating descriptors with a @descriptorType@ of
--- '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.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
--- 'DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR', 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_KHR_acceleration_structure.WriteDescriptorSetAccelerationStructureKHR'
--- structure in the @pNext@ chain of
--- 'Vulkan.Core10.DescriptorSet.WriteDescriptorSet'. When updating
--- descriptors with a @descriptorType@ of
--- 'DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV', 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_NV_ray_tracing.WriteDescriptorSetAccelerationStructureNV'
--- structure in the @pNext@ chain of
--- 'Vulkan.Core10.DescriptorSet.WriteDescriptorSet'.
+-- -   'DESCRIPTOR_TYPE_TENSOR_ARM' specifies a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-storagetensor storage tensor descriptor>.
 --
 -- = See Also
 --
@@ -147,7 +102,9 @@
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template.DescriptorUpdateTemplateEntry',
 -- 'Vulkan.Extensions.VK_NVX_image_view_handle.ImageViewHandleInfoNVX',
 -- 'Vulkan.Extensions.VK_EXT_mutable_descriptor_type.MutableDescriptorTypeListEXT',
--- 'Vulkan.Core10.DescriptorSet.WriteDescriptorSet'
+-- 'Vulkan.Extensions.VK_EXT_descriptor_heap.ResourceDescriptorInfoEXT',
+-- 'Vulkan.Core10.DescriptorSet.WriteDescriptorSet',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_heap.getPhysicalDeviceDescriptorSizeEXT'
 newtype DescriptorType = DescriptorType Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
@@ -187,6 +144,9 @@
 -- No documentation found for Nested "VkDescriptorType" "VK_DESCRIPTOR_TYPE_MUTABLE_EXT"
 pattern DESCRIPTOR_TYPE_MUTABLE_EXT = DescriptorType 1000351000
 
+-- No documentation found for Nested "VkDescriptorType" "VK_DESCRIPTOR_TYPE_TENSOR_ARM"
+pattern DESCRIPTOR_TYPE_TENSOR_ARM = DescriptorType 1000460000
+
 -- No documentation found for Nested "VkDescriptorType" "VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM"
 pattern DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM = DescriptorType 1000440001
 
@@ -215,6 +175,7 @@
   , DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC
   , DESCRIPTOR_TYPE_INPUT_ATTACHMENT
   , DESCRIPTOR_TYPE_MUTABLE_EXT
+  , DESCRIPTOR_TYPE_TENSOR_ARM
   , DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM
   , DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM
   , DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV
@@ -261,6 +222,7 @@
     , "INPUT_ATTACHMENT"
     )
   , (DESCRIPTOR_TYPE_MUTABLE_EXT, "MUTABLE_EXT")
+  , (DESCRIPTOR_TYPE_TENSOR_ARM, "TENSOR_ARM")
   ,
     ( DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM
     , "BLOCK_MATCH_IMAGE_QCOM"
diff --git a/src/Vulkan/Core10/Enums/DescriptorType.hs-boot b/src/Vulkan/Core10/Enums/DescriptorType.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core10/Enums/DescriptorType.hs-boot
@@ -0,0 +1,8 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "DescriptorType"
+module Vulkan.Core10.Enums.DescriptorType  (DescriptorType) where
+
+
+
+data DescriptorType
+
diff --git a/src/Vulkan/Core10/Enums/DeviceQueueCreateFlagBits.hs b/src/Vulkan/Core10/Enums/DeviceQueueCreateFlagBits.hs
--- a/src/Vulkan/Core10/Enums/DeviceQueueCreateFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/DeviceQueueCreateFlagBits.hs
@@ -1,7 +1,8 @@
 {-# language CPP #-}
 -- No documentation found for Chapter "DeviceQueueCreateFlagBits"
 module Vulkan.Core10.Enums.DeviceQueueCreateFlagBits  ( DeviceQueueCreateFlags
-                                                      , DeviceQueueCreateFlagBits( DEVICE_QUEUE_CREATE_PROTECTED_BIT
+                                                      , DeviceQueueCreateFlagBits( DEVICE_QUEUE_CREATE_INTERNALLY_SYNCHRONIZED_BIT_KHR
+                                                                                 , DEVICE_QUEUE_CREATE_PROTECTED_BIT
                                                                                  , ..
                                                                                  )
                                                       ) where
@@ -21,6 +22,15 @@
 
 -- | VkDeviceQueueCreateFlagBits - Bitmask specifying behavior of the queue
 --
+-- = Description
+--
+-- -   'DEVICE_QUEUE_CREATE_PROTECTED_BIT' specifies that the device queue
+--     is a protected-capable queue.
+--
+-- -   'DEVICE_QUEUE_CREATE_INTERNALLY_SYNCHRONIZED_BIT_KHR' specifies that
+--     the device queue is internally synchronized and does not require
+--     external synchronization.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
@@ -28,18 +38,29 @@
 newtype DeviceQueueCreateFlagBits = DeviceQueueCreateFlagBits Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'DEVICE_QUEUE_CREATE_PROTECTED_BIT' specifies that the device queue is a
--- protected-capable queue.
+-- No documentation found for Nested "VkDeviceQueueCreateFlagBits" "VK_DEVICE_QUEUE_CREATE_INTERNALLY_SYNCHRONIZED_BIT_KHR"
+pattern DEVICE_QUEUE_CREATE_INTERNALLY_SYNCHRONIZED_BIT_KHR = DeviceQueueCreateFlagBits 0x00000004
+
+-- No documentation found for Nested "VkDeviceQueueCreateFlagBits" "VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT"
 pattern DEVICE_QUEUE_CREATE_PROTECTED_BIT = DeviceQueueCreateFlagBits 0x00000001
 
 conNameDeviceQueueCreateFlagBits :: String
 conNameDeviceQueueCreateFlagBits = "DeviceQueueCreateFlagBits"
 
 enumPrefixDeviceQueueCreateFlagBits :: String
-enumPrefixDeviceQueueCreateFlagBits = "DEVICE_QUEUE_CREATE_PROTECTED_BIT"
+enumPrefixDeviceQueueCreateFlagBits = "DEVICE_QUEUE_CREATE_"
 
 showTableDeviceQueueCreateFlagBits :: [(DeviceQueueCreateFlagBits, String)]
-showTableDeviceQueueCreateFlagBits = [(DEVICE_QUEUE_CREATE_PROTECTED_BIT, "")]
+showTableDeviceQueueCreateFlagBits =
+  [
+    ( DEVICE_QUEUE_CREATE_INTERNALLY_SYNCHRONIZED_BIT_KHR
+    , "INTERNALLY_SYNCHRONIZED_BIT_KHR"
+    )
+  ,
+    ( DEVICE_QUEUE_CREATE_PROTECTED_BIT
+    , "PROTECTED_BIT"
+    )
+  ]
 
 instance Show DeviceQueueCreateFlagBits where
   showsPrec =
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,975 +10,1160 @@
                                                       , DYNAMIC_STATE_STENCIL_WRITE_MASK
                                                       , DYNAMIC_STATE_STENCIL_REFERENCE
                                                       , DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT
-                                                      , DYNAMIC_STATE_LINE_STIPPLE_KHR
-                                                      , DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT
-                                                      , DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV
-                                                      , DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV
-                                                      , DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV
-                                                      , DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV
-                                                      , DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV
-                                                      , DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV
-                                                      , DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV
-                                                      , DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV
-                                                      , DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV
-                                                      , DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV
-                                                      , DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT
-                                                      , DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
-                                                      , DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
-                                                      , DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT
-                                                      , DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT
-                                                      , DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
-                                                      , DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT
-                                                      , DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT
-                                                      , DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT
-                                                      , DYNAMIC_STATE_RASTERIZATION_STREAM_EXT
-                                                      , DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT
-                                                      , DYNAMIC_STATE_COLOR_WRITE_MASK_EXT
-                                                      , DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT
-                                                      , DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
-                                                      , DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT
-                                                      , DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT
-                                                      , DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT
-                                                      , DYNAMIC_STATE_SAMPLE_MASK_EXT
-                                                      , DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
-                                                      , DYNAMIC_STATE_POLYGON_MODE_EXT
-                                                      , DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT
-                                                      , DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT
-                                                      , DYNAMIC_STATE_LOGIC_OP_EXT
-                                                      , DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT
-                                                      , DYNAMIC_STATE_VERTEX_INPUT_EXT
-                                                      , DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR
-                                                      , DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV
-                                                      , DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV
-                                                      , DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV
-                                                      , DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV
-                                                      , DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR
-                                                      , DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
-                                                      , DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT
-                                                      , DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_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
-
-import Vulkan.Internal.Utils (enumReadPrec)
-import Vulkan.Internal.Utils (enumShowsPrec)
-import GHC.Show (showsPrec)
-import Vulkan.Zero (Zero)
-import Foreign.Storable (Storable)
-import Data.Int (Int32)
-import GHC.Read (Read(readPrec))
-import GHC.Show (Show(showsPrec))
-
--- | VkDynamicState - Indicate which dynamic state is taken from dynamic
--- state commands
---
--- = 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.Pipeline.PipelineDynamicStateCreateInfo'
-newtype DynamicState = DynamicState Int32
-  deriving newtype (Eq, Ord, Storable, Zero)
-
--- | 'DYNAMIC_STATE_VIEWPORT' specifies that the @pViewports@ state in
--- 'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo' will be ignored
--- and /must/ be set dynamically with
--- 'Vulkan.Core10.CommandBufferBuilding.cmdSetViewport' before any drawing
--- commands. The number of viewports used by a pipeline is still specified
--- by the @viewportCount@ member of
--- 'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'.
-pattern DYNAMIC_STATE_VIEWPORT = DynamicState 0
-
--- | 'DYNAMIC_STATE_SCISSOR' specifies that the @pScissors@ state in
--- 'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo' will be ignored
--- and /must/ be set dynamically with
--- 'Vulkan.Core10.CommandBufferBuilding.cmdSetScissor' before any drawing
--- commands. The number of scissor rectangles used by a pipeline is still
--- specified by the @scissorCount@ member of
--- 'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'.
-pattern DYNAMIC_STATE_SCISSOR = DynamicState 1
-
--- | 'DYNAMIC_STATE_LINE_WIDTH' specifies that the @lineWidth@ state in
--- 'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo' will be
--- ignored and /must/ be set dynamically with
--- 'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth' before any drawing
--- commands that generate line primitives for the rasterizer.
-pattern DYNAMIC_STATE_LINE_WIDTH = DynamicState 2
-
--- | 'DYNAMIC_STATE_DEPTH_BIAS' specifies that any instance of
--- 'Vulkan.Extensions.VK_EXT_depth_bias_control.DepthBiasRepresentationInfoEXT'
--- included in the @pNext@ chain of
--- 'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo' as well as
--- the @depthBiasConstantFactor@, @depthBiasClamp@ and
--- @depthBiasSlopeFactor@ states in
--- 'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo' will be
--- ignored and /must/ be set dynamically with
--- 'Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBias' or
--- 'Vulkan.Extensions.VK_EXT_depth_bias_control.cmdSetDepthBias2EXT' before
--- any draws are performed with
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-depthbias-enable depth bias enabled>.
-pattern DYNAMIC_STATE_DEPTH_BIAS = DynamicState 3
-
--- | 'DYNAMIC_STATE_BLEND_CONSTANTS' specifies that the @blendConstants@
--- state in 'Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo' will
--- be ignored and /must/ be set dynamically with
--- 'Vulkan.Core10.CommandBufferBuilding.cmdSetBlendConstants' before any
--- draws are performed with a pipeline state with
--- 'Vulkan.Core10.Pipeline.PipelineColorBlendAttachmentState' member
--- @blendEnable@ set to 'Vulkan.Core10.FundamentalTypes.TRUE' and any of
--- the blend functions using a constant blend color.
-pattern DYNAMIC_STATE_BLEND_CONSTANTS = DynamicState 4
-
--- | 'DYNAMIC_STATE_DEPTH_BOUNDS' specifies that the @minDepthBounds@ and
--- @maxDepthBounds@ states of
--- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo' will be
--- ignored and /must/ be set dynamically with
--- 'Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBounds' before any draws
--- are performed with a pipeline state with
--- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo' member
--- @depthBoundsTestEnable@ set to 'Vulkan.Core10.FundamentalTypes.TRUE'.
-pattern DYNAMIC_STATE_DEPTH_BOUNDS = DynamicState 5
-
--- | 'DYNAMIC_STATE_STENCIL_COMPARE_MASK' specifies that the @compareMask@
--- state in 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo'
--- for both @front@ and @back@ will be ignored and /must/ be set
--- dynamically with
--- 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilCompareMask' 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_COMPARE_MASK = DynamicState 6
-
--- | 'DYNAMIC_STATE_STENCIL_WRITE_MASK' specifies that the @writeMask@ state
--- in 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo' for both
--- @front@ and @back@ will be ignored and /must/ be set dynamically with
--- 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilWriteMask' 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_WRITE_MASK = DynamicState 7
-
--- | 'DYNAMIC_STATE_STENCIL_REFERENCE' specifies that the @reference@ state
--- in 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo' for both
--- @front@ and @back@ will be ignored and /must/ be set dynamically with
--- 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilReference' 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_REFERENCE = DynamicState 8
-
--- | 'DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT' specifies that the
--- @depthClampMode@ and @pDepthClampRange@ state in
--- 'Vulkan.Extensions.VK_EXT_depth_clamp_control.PipelineViewportDepthClampControlCreateInfoEXT'
--- will be ignored and /must/ be set dynamically with
--- 'Vulkan.Extensions.VK_EXT_depth_clamp_control.cmdSetDepthClampRangeEXT'
--- before any draw call.
-pattern DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT = DynamicState 1000582000
-
--- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_LINE_STIPPLE_KHR"
-pattern DYNAMIC_STATE_LINE_STIPPLE_KHR = DynamicState 1000259000
-
--- | 'DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT' specifies that the
--- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT'
--- and
--- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT'
--- flags will be ignored and /must/ be set dynamically with
--- 'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
--- before any draw call.
-pattern DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT = DynamicState 1000524000
-
--- | 'DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV' specifies that the
--- @coverageReductionMode@ state in
--- 'Vulkan.Extensions.VK_NV_coverage_reduction_mode.PipelineCoverageReductionStateCreateInfoNV'
--- will be ignored and /must/ be set dynamically with
--- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageReductionModeNV'
--- before any draw call.
-pattern DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV = DynamicState 1000455032
-
--- | 'DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV' specifies that
--- the @representativeFragmentTestEnable@ state in
--- 'Vulkan.Extensions.VK_NV_representative_fragment_test.PipelineRepresentativeFragmentTestStateCreateInfoNV'
--- will be ignored and /must/ be set dynamically with
--- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRepresentativeFragmentTestEnableNV'
--- before any draw call.
-pattern DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV = DynamicState 1000455031
-
--- | 'DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV' specifies that the
--- @shadingRateImageEnable@ state in
--- 'Vulkan.Extensions.VK_NV_shading_rate_image.PipelineViewportShadingRateImageStateCreateInfoNV'
--- will be ignored and /must/ be set dynamically with
--- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetShadingRateImageEnableNV'
--- before any draw call.
-pattern DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV = DynamicState 1000455030
-
--- | 'DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV' specifies that the
--- @coverageModulationTableCount@, and @pCoverageModulationTable@ states in
--- 'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.PipelineCoverageModulationStateCreateInfoNV'
--- will be ignored and /must/ be set dynamically with
--- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableNV'
--- before any draw call.
-pattern DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV = DynamicState 1000455029
-
--- | 'DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV' specifies that the
--- @coverageModulationTableEnable@ state in
--- 'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.PipelineCoverageModulationStateCreateInfoNV'
--- will be ignored and /must/ be set dynamically with
--- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV'
--- before any draw call.
-pattern DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV = DynamicState 1000455028
-
--- | 'DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV' specifies that the
--- @coverageModulationMode@ state in
--- 'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.PipelineCoverageModulationStateCreateInfoNV'
--- will be ignored and /must/ be set dynamically with
--- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationModeNV'
--- before any draw call.
-pattern DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV = DynamicState 1000455027
-
--- | 'DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV' specifies that the
--- @coverageToColorLocation@ state in
--- 'Vulkan.Extensions.VK_NV_fragment_coverage_to_color.PipelineCoverageToColorStateCreateInfoNV'
--- will be ignored and /must/ be set dynamically with
--- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
--- before any draw call.
-pattern DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV = DynamicState 1000455026
-
--- | 'DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV' specifies that the
--- @coverageToColorEnable@ state in
--- 'Vulkan.Extensions.VK_NV_fragment_coverage_to_color.PipelineCoverageToColorStateCreateInfoNV'
--- will be ignored and /must/ be set dynamically with
--- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
--- before any draw call.
-pattern DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV = DynamicState 1000455025
-
--- | 'DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV' specifies that the @viewportCount@,
--- and @pViewportSwizzles@ states in
--- 'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV'
--- will be ignored and /must/ be set dynamically with
--- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
--- before any draw call.
-pattern DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV = DynamicState 1000455024
-
--- | 'DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV' specifies that the
--- @viewportWScalingEnable@ state in
--- 'Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV'
--- will be ignored and /must/ be set dynamically with
--- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportWScalingEnableNV'
--- before any draw call.
-pattern DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV = DynamicState 1000455023
-
--- | 'DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT' specifies that the
--- @negativeOneToOne@ state in
--- 'Vulkan.Extensions.VK_EXT_depth_clip_control.PipelineViewportDepthClipControlCreateInfoEXT'
--- will be ignored and /must/ be set dynamically with
--- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipNegativeOneToOneEXT'
--- before any draw call.
-pattern DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT = DynamicState 1000455022
-
--- | 'DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT' specifies that the
--- @stippledLineEnable@ state in
--- 'Vulkan.Extensions.VK_KHR_line_rasterization.PipelineRasterizationLineStateCreateInfoKHR'
--- will be ignored and /must/ be set dynamically with
--- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
--- before any draw call.
-pattern DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT = DynamicState 1000455021
-
--- | 'DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT' specifies that the
--- @lineRasterizationMode@ state in
--- 'Vulkan.Extensions.VK_KHR_line_rasterization.PipelineRasterizationLineStateCreateInfoKHR'
--- will be ignored and /must/ be set dynamically with
--- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
--- before any draw call.
-pattern DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT = DynamicState 1000455020
-
--- | 'DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT' specifies that the
--- @provokingVertexMode@ state in
--- 'Vulkan.Extensions.VK_EXT_provoking_vertex.PipelineRasterizationProvokingVertexStateCreateInfoEXT'
--- will be ignored and /must/ be set dynamically with
--- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetProvokingVertexModeEXT'
--- before any draw call.
-pattern DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT = DynamicState 1000455019
-
--- | 'DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT' specifies that the
--- @colorBlendOp@ state in
--- 'Vulkan.Core10.Pipeline.PipelineColorBlendAttachmentState', and
--- @srcPremultiplied@, @dstPremultiplied@, and @blendOverlap@ states in
--- 'Vulkan.Extensions.VK_EXT_blend_operation_advanced.PipelineColorBlendAdvancedStateCreateInfoEXT'
--- will be ignored and /must/ be set dynamically with
--- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
--- before any draw call.
-pattern DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT = DynamicState 1000455018
-
--- | 'DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT' specifies that the
--- @sampleLocationsEnable@ state in
--- 'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'
--- will be ignored and /must/ be set dynamically with
--- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT'
--- before any draw call.
-pattern DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT = DynamicState 1000455017
-
--- | 'DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT' specifies that the
--- @depthClipEnable@ state in
--- 'Vulkan.Extensions.VK_EXT_depth_clip_enable.PipelineRasterizationDepthClipStateCreateInfoEXT'
--- will be ignored and /must/ be set dynamically with
--- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipEnableEXT'
--- before any draw call.
-pattern DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT = DynamicState 1000455016
-
--- | 'DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT' specifies that
--- the @extraPrimitiveOverestimationSize@ state in
--- 'Vulkan.Extensions.VK_EXT_conservative_rasterization.PipelineRasterizationConservativeStateCreateInfoEXT'
--- will be ignored and /must/ be set dynamically with
--- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetExtraPrimitiveOverestimationSizeEXT'
--- before any draw call.
-pattern DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT = DynamicState 1000455015
-
--- | 'DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT' specifies that the
--- @conservativeRasterizationMode@ state in
--- 'Vulkan.Extensions.VK_EXT_conservative_rasterization.PipelineRasterizationConservativeStateCreateInfoEXT'
--- will be ignored and /must/ be set dynamically with
--- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetConservativeRasterizationModeEXT'
--- before any draw call.
-pattern DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT = DynamicState 1000455014
-
--- | 'DYNAMIC_STATE_RASTERIZATION_STREAM_EXT' specifies that the
--- @rasterizationStream@ state in
--- 'Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT'
--- will be ignored and /must/ be set dynamically with
--- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationStreamEXT'
--- before any draw call.
-pattern DYNAMIC_STATE_RASTERIZATION_STREAM_EXT = DynamicState 1000455013
-
--- | 'DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT' specifies that the
--- @domainOrigin@ state in
--- 'Vulkan.Core11.Promoted_From_VK_KHR_maintenance2.PipelineTessellationDomainOriginStateCreateInfo'
--- will be ignored and /must/ be set dynamically with
--- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetTessellationDomainOriginEXT'
--- before any draw call.
-pattern DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT = DynamicState 1000455002
-
--- | 'DYNAMIC_STATE_COLOR_WRITE_MASK_EXT' specifies that the @colorWriteMask@
--- state in 'Vulkan.Core10.Pipeline.PipelineColorBlendAttachmentState' will
--- be ignored and /must/ be set dynamically with
--- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
--- before any draw call.
-pattern DYNAMIC_STATE_COLOR_WRITE_MASK_EXT = DynamicState 1000455012
-
--- | 'DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT' specifies that the
--- @srcColorBlendFactor@, @dstColorBlendFactor@, @colorBlendOp@,
--- @srcAlphaBlendFactor@, @dstAlphaBlendFactor@, and @alphaBlendOp@ states
--- in 'Vulkan.Core10.Pipeline.PipelineColorBlendAttachmentState' will be
--- ignored and /must/ be set dynamically with
--- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
--- before any draw call.
-pattern DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT = DynamicState 1000455011
-
--- | 'DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT' specifies that the @blendEnable@
--- state in 'Vulkan.Core10.Pipeline.PipelineColorBlendAttachmentState' will
--- be ignored and /must/ be set dynamically with
--- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
--- before any draw call.
-pattern DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT = DynamicState 1000455010
-
--- | 'DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT' specifies that the @logicOpEnable@
--- state in 'Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo' will
--- be ignored and /must/ be set dynamically with
--- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLogicOpEnableEXT'
--- before any draw call.
-pattern DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT = DynamicState 1000455009
-
--- | 'DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT' specifies that the
--- @alphaToOneEnable@ state in
--- 'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo' will be
--- ignored and /must/ be set dynamically with
--- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToOneEnableEXT'
--- before any draw call.
-pattern DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT = DynamicState 1000455008
-
--- | 'DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT' specifies that the
--- @alphaToCoverageEnable@ state in
--- 'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo' will be
--- ignored and /must/ be set dynamically with
--- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT'
--- before any draw call.
-pattern DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT = DynamicState 1000455007
-
--- | 'DYNAMIC_STATE_SAMPLE_MASK_EXT' specifies that the @pSampleMask@ state
--- in 'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo' will be
--- ignored and /must/ be set dynamically with
--- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
--- before any draw call.
-pattern DYNAMIC_STATE_SAMPLE_MASK_EXT = DynamicState 1000455006
-
--- | 'DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT' specifies that the
--- @rasterizationSamples@ state in
--- 'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo' will be
--- ignored and /must/ be set dynamically with
--- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
--- before any draw call.
-pattern DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT = DynamicState 1000455005
-
--- | 'DYNAMIC_STATE_POLYGON_MODE_EXT' specifies that the @polygonMode@ state
--- in 'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo' will be
--- ignored and /must/ be set dynamically with
--- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
--- before any draw call.
-pattern DYNAMIC_STATE_POLYGON_MODE_EXT = DynamicState 1000455004
-
--- | 'DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT' specifies that the
--- @depthClampEnable@ state in
--- 'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo' will be
--- ignored and /must/ be set dynamically with
--- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClampEnableEXT'
--- before any draw call.
-pattern DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT = DynamicState 1000455003
-
--- | 'DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT' specifies that the
--- @pColorWriteEnables@ state in
--- 'Vulkan.Extensions.VK_EXT_color_write_enable.PipelineColorWriteCreateInfoEXT'
--- will be ignored and /must/ be set dynamically with
--- 'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
--- before any draw call.
-pattern DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT = DynamicState 1000381000
-
--- | 'DYNAMIC_STATE_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_PATCH_CONTROL_POINTS_EXT' specifies that the
--- @patchControlPoints@ state in
--- 'Vulkan.Core10.Pipeline.PipelineTessellationStateCreateInfo' will be
--- ignored and /must/ be set dynamically with
--- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPatchControlPointsEXT'
--- before any drawing commands.
-pattern DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT = DynamicState 1000377000
-
--- | 'DYNAMIC_STATE_VERTEX_INPUT_EXT' specifies that the @pVertexInputState@
--- state will be ignored and /must/ be set dynamically with
--- 'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.cmdSetVertexInputEXT'
--- before any drawing commands
-pattern DYNAMIC_STATE_VERTEX_INPUT_EXT = DynamicState 1000352000
-
--- | 'DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR' specifies that state in
--- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'
--- and
--- 'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PipelineFragmentShadingRateEnumStateCreateInfoNV'
--- will be ignored and /must/ be set dynamically with
--- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
--- or
--- 'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.cmdSetFragmentShadingRateEnumNV'
--- before any drawing commands.
-pattern DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR = DynamicState 1000226000
-
--- | 'DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV' specifies that the
--- @pExclusiveScissors@ state in
--- 'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'
--- will be ignored and /must/ be set dynamically with
--- 'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorNV'
--- before any drawing commands.
-pattern DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV = DynamicState 1000205001
-
--- | 'DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV' specifies that the exclusive
--- scissors /must/ be explicitly enabled with
--- 'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorEnableNV'
--- and the @exclusiveScissorCount@ value in
--- 'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'
--- will not implicitly enable them. This is available on implementations
--- that support at least @specVersion@ @2@ of the @VK_NV_scissor_exclusive@
--- extension.
-pattern DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV = DynamicState 1000205000
-
--- | 'DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV' specifies that the
--- coarse sample order state in
--- 'Vulkan.Extensions.VK_NV_shading_rate_image.PipelineViewportCoarseSampleOrderStateCreateInfoNV'
--- will be ignored and /must/ be set dynamically with
--- 'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetCoarseSampleOrderNV'
--- before any drawing commands.
-pattern DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV = DynamicState 1000164006
-
--- | 'DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV' specifies that the
--- @pShadingRatePalettes@ state in
--- 'Vulkan.Extensions.VK_NV_shading_rate_image.PipelineViewportShadingRateImageStateCreateInfoNV'
--- will be ignored and /must/ be set dynamically with
--- 'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetViewportShadingRatePaletteNV'
--- before any drawing commands.
-pattern DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV = DynamicState 1000164004
-
--- | 'DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR' specifies that the
--- default stack size computation for the pipeline will be ignored and
--- /must/ be set dynamically with
--- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.cmdSetRayTracingPipelineStackSizeKHR'
--- before any ray tracing calls are performed.
-pattern DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR = DynamicState 1000347000
-
--- | 'DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT' specifies that the
--- @sampleLocationsInfo@ state in
--- 'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'
--- will be ignored and /must/ be set dynamically with
--- 'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
--- before any draw or clear commands. Enabling custom sample locations is
--- still indicated by the @sampleLocationsEnable@ member of
--- 'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'.
-pattern DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT = DynamicState 1000143000
-
--- | 'DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT' specifies that the
--- @discardRectangleMode@ state in
--- 'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'
--- will be ignored and /must/ be set dynamically with
--- 'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleModeEXT'
--- before any draw commands. This is available on implementations that
--- support at least @specVersion@ @2@ of the @VK_EXT_discard_rectangles@
--- extension.
-pattern DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT = DynamicState 1000099002
-
--- | 'DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT' specifies that the presence
--- of the
--- 'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'
--- structure in the 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'
--- chain with a @discardRectangleCount@ greater than zero does not
--- implicitly enable discard rectangles and they /must/ be enabled
--- dynamically with
--- 'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEnableEXT'
--- before any draw commands. This is available on implementations that
--- support at least @specVersion@ @2@ of the @VK_EXT_discard_rectangles@
--- extension.
-pattern DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT = DynamicState 1000099001
-
--- | 'DYNAMIC_STATE_DISCARD_RECTANGLE_EXT' specifies that the
--- @pDiscardRectangles@ state in
--- 'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'
--- will be ignored and /must/ be set dynamically with
--- 'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT'
--- before any draw or clear commands.
-pattern DYNAMIC_STATE_DISCARD_RECTANGLE_EXT = DynamicState 1000099000
-
--- | 'DYNAMIC_STATE_VIEWPORT_W_SCALING_NV' specifies that the
--- @pViewportWScalings@ state in
--- 'Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV'
--- will be ignored and /must/ be set dynamically with
--- 'Vulkan.Extensions.VK_NV_clip_space_w_scaling.cmdSetViewportWScalingNV'
--- before any draws are performed with a pipeline state with
--- 'Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV'
--- 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://registry.khronos.org/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
-  , DYNAMIC_STATE_DEPTH_BIAS
-  , DYNAMIC_STATE_BLEND_CONSTANTS
-  , DYNAMIC_STATE_DEPTH_BOUNDS
-  , DYNAMIC_STATE_STENCIL_COMPARE_MASK
-  , DYNAMIC_STATE_STENCIL_WRITE_MASK
-  , DYNAMIC_STATE_STENCIL_REFERENCE
-  , DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT
-  , DYNAMIC_STATE_LINE_STIPPLE_KHR
-  , DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT
-  , DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV
-  , DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV
-  , DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV
-  , DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV
-  , DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV
-  , DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV
-  , DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV
-  , DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV
-  , DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV
-  , DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV
-  , DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT
-  , DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
-  , DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
-  , DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT
-  , DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT
-  , DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
-  , DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT
-  , DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT
-  , DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT
-  , DYNAMIC_STATE_RASTERIZATION_STREAM_EXT
-  , DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT
-  , DYNAMIC_STATE_COLOR_WRITE_MASK_EXT
-  , DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT
-  , DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
-  , DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT
-  , DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT
-  , DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT
-  , DYNAMIC_STATE_SAMPLE_MASK_EXT
-  , DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
-  , DYNAMIC_STATE_POLYGON_MODE_EXT
-  , DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT
-  , DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT
-  , DYNAMIC_STATE_LOGIC_OP_EXT
-  , DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT
-  , DYNAMIC_STATE_VERTEX_INPUT_EXT
-  , DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR
-  , DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV
-  , DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV
-  , DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV
-  , DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV
-  , DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR
-  , DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
-  , DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT
-  , DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_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 ::
-    DynamicState
-  #-}
-
-conNameDynamicState :: String
-conNameDynamicState = "DynamicState"
-
-enumPrefixDynamicState :: String
-enumPrefixDynamicState = "DYNAMIC_STATE_"
-
-showTableDynamicState :: [(DynamicState, String)]
-showTableDynamicState =
-  [ (DYNAMIC_STATE_VIEWPORT, "VIEWPORT")
-  , (DYNAMIC_STATE_SCISSOR, "SCISSOR")
-  , (DYNAMIC_STATE_LINE_WIDTH, "LINE_WIDTH")
-  , (DYNAMIC_STATE_DEPTH_BIAS, "DEPTH_BIAS")
-  , (DYNAMIC_STATE_BLEND_CONSTANTS, "BLEND_CONSTANTS")
-  , (DYNAMIC_STATE_DEPTH_BOUNDS, "DEPTH_BOUNDS")
-  ,
-    ( DYNAMIC_STATE_STENCIL_COMPARE_MASK
-    , "STENCIL_COMPARE_MASK"
-    )
-  ,
-    ( DYNAMIC_STATE_STENCIL_WRITE_MASK
-    , "STENCIL_WRITE_MASK"
-    )
-  , (DYNAMIC_STATE_STENCIL_REFERENCE, "STENCIL_REFERENCE")
-  ,
-    ( DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT
-    , "DEPTH_CLAMP_RANGE_EXT"
-    )
-  , (DYNAMIC_STATE_LINE_STIPPLE_KHR, "LINE_STIPPLE_KHR")
-  ,
-    ( DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT
-    , "ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT"
-    )
-  ,
-    ( DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV
-    , "COVERAGE_REDUCTION_MODE_NV"
-    )
-  ,
-    ( DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV
-    , "REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV"
-    )
-  ,
-    ( DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV
-    , "SHADING_RATE_IMAGE_ENABLE_NV"
-    )
-  ,
-    ( DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV
-    , "COVERAGE_MODULATION_TABLE_NV"
-    )
-  ,
-    ( DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV
-    , "COVERAGE_MODULATION_TABLE_ENABLE_NV"
-    )
-  ,
-    ( DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV
-    , "COVERAGE_MODULATION_MODE_NV"
-    )
-  ,
-    ( DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV
-    , "COVERAGE_TO_COLOR_LOCATION_NV"
-    )
-  ,
-    ( DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV
-    , "COVERAGE_TO_COLOR_ENABLE_NV"
-    )
-  ,
-    ( DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV
-    , "VIEWPORT_SWIZZLE_NV"
-    )
-  ,
-    ( DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV
-    , "VIEWPORT_W_SCALING_ENABLE_NV"
-    )
-  ,
-    ( DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT
-    , "DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT"
-    )
-  ,
-    ( DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
-    , "LINE_STIPPLE_ENABLE_EXT"
-    )
-  ,
-    ( DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
-    , "LINE_RASTERIZATION_MODE_EXT"
-    )
-  ,
-    ( DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT
-    , "PROVOKING_VERTEX_MODE_EXT"
-    )
-  ,
-    ( DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT
-    , "COLOR_BLEND_ADVANCED_EXT"
-    )
-  ,
-    ( DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
-    , "SAMPLE_LOCATIONS_ENABLE_EXT"
-    )
-  ,
-    ( DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT
-    , "DEPTH_CLIP_ENABLE_EXT"
-    )
-  ,
-    ( DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT
-    , "EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT"
-    )
-  ,
-    ( DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT
-    , "CONSERVATIVE_RASTERIZATION_MODE_EXT"
-    )
-  ,
-    ( DYNAMIC_STATE_RASTERIZATION_STREAM_EXT
-    , "RASTERIZATION_STREAM_EXT"
-    )
-  ,
-    ( DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT
-    , "TESSELLATION_DOMAIN_ORIGIN_EXT"
-    )
-  ,
-    ( DYNAMIC_STATE_COLOR_WRITE_MASK_EXT
-    , "COLOR_WRITE_MASK_EXT"
-    )
-  ,
-    ( DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT
-    , "COLOR_BLEND_EQUATION_EXT"
-    )
-  ,
-    ( DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
-    , "COLOR_BLEND_ENABLE_EXT"
-    )
-  ,
-    ( DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT
-    , "LOGIC_OP_ENABLE_EXT"
-    )
-  ,
-    ( DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT
-    , "ALPHA_TO_ONE_ENABLE_EXT"
-    )
-  ,
-    ( DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT
-    , "ALPHA_TO_COVERAGE_ENABLE_EXT"
-    )
-  , (DYNAMIC_STATE_SAMPLE_MASK_EXT, "SAMPLE_MASK_EXT")
-  ,
-    ( DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
-    , "RASTERIZATION_SAMPLES_EXT"
-    )
-  , (DYNAMIC_STATE_POLYGON_MODE_EXT, "POLYGON_MODE_EXT")
-  ,
-    ( DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT
-    , "DEPTH_CLAMP_ENABLE_EXT"
-    )
-  ,
-    ( DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT
-    , "COLOR_WRITE_ENABLE_EXT"
-    )
-  , (DYNAMIC_STATE_LOGIC_OP_EXT, "LOGIC_OP_EXT")
-  ,
-    ( DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT
-    , "PATCH_CONTROL_POINTS_EXT"
-    )
-  , (DYNAMIC_STATE_VERTEX_INPUT_EXT, "VERTEX_INPUT_EXT")
-  ,
-    ( DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR
-    , "FRAGMENT_SHADING_RATE_KHR"
-    )
-  ,
-    ( DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV
-    , "EXCLUSIVE_SCISSOR_NV"
-    )
-  ,
-    ( DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV
-    , "EXCLUSIVE_SCISSOR_ENABLE_NV"
-    )
-  ,
-    ( DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV
-    , "VIEWPORT_COARSE_SAMPLE_ORDER_NV"
-    )
-  ,
-    ( DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV
-    , "VIEWPORT_SHADING_RATE_PALETTE_NV"
-    )
-  ,
-    ( DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR
-    , "RAY_TRACING_PIPELINE_STACK_SIZE_KHR"
-    )
-  ,
-    ( DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
-    , "SAMPLE_LOCATIONS_EXT"
-    )
-  ,
-    ( DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT
-    , "DISCARD_RECTANGLE_MODE_EXT"
-    )
-  ,
-    ( DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT
-    , "DISCARD_RECTANGLE_ENABLE_EXT"
-    )
-  ,
-    ( DYNAMIC_STATE_DISCARD_RECTANGLE_EXT
-    , "DISCARD_RECTANGLE_EXT"
-    )
-  ,
-    ( DYNAMIC_STATE_VIEWPORT_W_SCALING_NV
-    , "VIEWPORT_W_SCALING_NV"
-    )
+                                                      , DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT
+                                                      , DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV
+                                                      , DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV
+                                                      , DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV
+                                                      , DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV
+                                                      , DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV
+                                                      , DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV
+                                                      , DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV
+                                                      , DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV
+                                                      , DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV
+                                                      , DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV
+                                                      , DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT
+                                                      , DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
+                                                      , DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
+                                                      , DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT
+                                                      , DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT
+                                                      , DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
+                                                      , DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT
+                                                      , DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT
+                                                      , DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT
+                                                      , DYNAMIC_STATE_RASTERIZATION_STREAM_EXT
+                                                      , DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT
+                                                      , DYNAMIC_STATE_COLOR_WRITE_MASK_EXT
+                                                      , DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT
+                                                      , DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
+                                                      , DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT
+                                                      , DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT
+                                                      , DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT
+                                                      , DYNAMIC_STATE_SAMPLE_MASK_EXT
+                                                      , DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
+                                                      , DYNAMIC_STATE_POLYGON_MODE_EXT
+                                                      , DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT
+                                                      , DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT
+                                                      , DYNAMIC_STATE_LOGIC_OP_EXT
+                                                      , DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT
+                                                      , DYNAMIC_STATE_VERTEX_INPUT_EXT
+                                                      , DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR
+                                                      , DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV
+                                                      , DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV
+                                                      , DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV
+                                                      , DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV
+                                                      , DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR
+                                                      , DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
+                                                      , DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT
+                                                      , DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT
+                                                      , DYNAMIC_STATE_DISCARD_RECTANGLE_EXT
+                                                      , DYNAMIC_STATE_VIEWPORT_W_SCALING_NV
+                                                      , DYNAMIC_STATE_LINE_STIPPLE
+                                                      , 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
+
+import Vulkan.Internal.Utils (enumReadPrec)
+import Vulkan.Internal.Utils (enumShowsPrec)
+import GHC.Show (showsPrec)
+import Vulkan.Zero (Zero)
+import Foreign.Storable (Storable)
+import Data.Int (Int32)
+import GHC.Read (Read(readPrec))
+import GHC.Show (Show(showsPrec))
+
+-- | VkDynamicState - Indicate which dynamic state is taken from dynamic
+-- state commands
+--
+-- = Description
+--
+-- -   'DYNAMIC_STATE_VIEWPORT' specifies that the @pViewports@ state in
+--     'Vulkan.Core10.GraphicsPipeline.PipelineViewportStateCreateInfo'
+--     will be ignored and /must/ be set dynamically with
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetViewport' before any
+--     drawing commands. The number of viewports used by a pipeline is
+--     still specified by the @viewportCount@ member of
+--     'Vulkan.Core10.GraphicsPipeline.PipelineViewportStateCreateInfo'.
+--
+-- -   'DYNAMIC_STATE_SCISSOR' specifies that the @pScissors@ state in
+--     'Vulkan.Core10.GraphicsPipeline.PipelineViewportStateCreateInfo'
+--     will be ignored and /must/ be set dynamically with
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetScissor' before any
+--     drawing commands. The number of scissor rectangles used by a
+--     pipeline is still specified by the @scissorCount@ member of
+--     'Vulkan.Core10.GraphicsPipeline.PipelineViewportStateCreateInfo'.
+--
+-- -   'DYNAMIC_STATE_LINE_WIDTH' specifies that the @lineWidth@ state in
+--     'Vulkan.Core10.GraphicsPipeline.PipelineRasterizationStateCreateInfo'
+--     will be ignored and /must/ be set dynamically with
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth' before any
+--     drawing commands that generate line primitives for the rasterizer.
+--
+-- -   'DYNAMIC_STATE_DEPTH_BIAS' specifies that any instance of
+--     'Vulkan.Extensions.VK_EXT_depth_bias_control.DepthBiasRepresentationInfoEXT'
+--     included in the @pNext@ chain of
+--     'Vulkan.Core10.GraphicsPipeline.PipelineRasterizationStateCreateInfo'
+--     as well as the @depthBiasConstantFactor@, @depthBiasClamp@ and
+--     @depthBiasSlopeFactor@ states in
+--     'Vulkan.Core10.GraphicsPipeline.PipelineRasterizationStateCreateInfo'
+--     will be ignored and /must/ be set dynamically with
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBias' or
+--     'Vulkan.Extensions.VK_EXT_depth_bias_control.cmdSetDepthBias2EXT'
+--     before any draws are performed with
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-depthbias-enable depth bias enabled>.
+--
+-- -   'DYNAMIC_STATE_BLEND_CONSTANTS' specifies that the @blendConstants@
+--     state in
+--     'Vulkan.Core10.GraphicsPipeline.PipelineColorBlendStateCreateInfo'
+--     will be ignored and /must/ be set dynamically with
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetBlendConstants' before
+--     any draws are performed with a pipeline state with
+--     'Vulkan.Core10.GraphicsPipeline.PipelineColorBlendAttachmentState'
+--     member @blendEnable@ set to 'Vulkan.Core10.FundamentalTypes.TRUE'
+--     and any of the blend functions using a constant blend color.
+--
+-- -   'DYNAMIC_STATE_DEPTH_BOUNDS' specifies that the @minDepthBounds@ and
+--     @maxDepthBounds@ states of
+--     'Vulkan.Core10.GraphicsPipeline.PipelineDepthStencilStateCreateInfo'
+--     will be ignored and /must/ be set dynamically with
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBounds' before any
+--     draws are performed with a pipeline state with
+--     'Vulkan.Core10.GraphicsPipeline.PipelineDepthStencilStateCreateInfo'
+--     member @depthBoundsTestEnable@ set to
+--     'Vulkan.Core10.FundamentalTypes.TRUE'.
+--
+-- -   'DYNAMIC_STATE_STENCIL_COMPARE_MASK' specifies that the
+--     @compareMask@ state in
+--     'Vulkan.Core10.GraphicsPipeline.PipelineDepthStencilStateCreateInfo'
+--     for both @front@ and @back@ will be ignored and /must/ be set
+--     dynamically with
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilCompareMask'
+--     before any draws are performed with a pipeline state with
+--     'Vulkan.Core10.GraphicsPipeline.PipelineDepthStencilStateCreateInfo'
+--     member @stencilTestEnable@ set to
+--     'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   'DYNAMIC_STATE_STENCIL_WRITE_MASK' specifies that the @writeMask@
+--     state in
+--     'Vulkan.Core10.GraphicsPipeline.PipelineDepthStencilStateCreateInfo'
+--     for both @front@ and @back@ will be ignored and /must/ be set
+--     dynamically with
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilWriteMask' before
+--     any draws are performed with a pipeline state with
+--     'Vulkan.Core10.GraphicsPipeline.PipelineDepthStencilStateCreateInfo'
+--     member @stencilTestEnable@ set to
+--     'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   'DYNAMIC_STATE_STENCIL_REFERENCE' specifies that the @reference@
+--     state in
+--     'Vulkan.Core10.GraphicsPipeline.PipelineDepthStencilStateCreateInfo'
+--     for both @front@ and @back@ will be ignored and /must/ be set
+--     dynamically with
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilReference' before
+--     any draws are performed with a pipeline state with
+--     'Vulkan.Core10.GraphicsPipeline.PipelineDepthStencilStateCreateInfo'
+--     member @stencilTestEnable@ set to
+--     'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   'DYNAMIC_STATE_VIEWPORT_W_SCALING_NV' specifies that the
+--     @pViewportWScalings@ state in
+--     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV'
+--     will be ignored and /must/ be set dynamically with
+--     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.cmdSetViewportWScalingNV'
+--     before any draws are performed with a pipeline state with
+--     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV'
+--     member @viewportScalingEnable@ set to
+--     'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   'DYNAMIC_STATE_DISCARD_RECTANGLE_EXT' specifies that the
+--     @pDiscardRectangles@ state in
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'
+--     will be ignored and /must/ be set dynamically with
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT'
+--     before any draw or clear commands.
+--
+-- -   'DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT' specifies that the
+--     presence of the
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'
+--     structure in the
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo' chain
+--     with a @discardRectangleCount@ greater than zero does not implicitly
+--     enable discard rectangles and they /must/ be enabled dynamically
+--     with
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEnableEXT'
+--     before any draw commands. This is available on implementations that
+--     support at least @specVersion@ @2@ of the
+--     @VK_EXT_discard_rectangles@ extension.
+--
+-- -   'DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT' specifies that the
+--     @discardRectangleMode@ state in
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'
+--     will be ignored and /must/ be set dynamically with
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleModeEXT'
+--     before any draw commands. This is available on implementations that
+--     support at least @specVersion@ @2@ of the
+--     @VK_EXT_discard_rectangles@ extension.
+--
+-- -   'DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT' specifies that the
+--     @sampleLocationsInfo@ state in
+--     'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'
+--     will be ignored and /must/ be set dynamically with
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     before any draw or clear commands. Enabling custom sample locations
+--     is still indicated by the @sampleLocationsEnable@ member of
+--     'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'.
+--
+-- -   'DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV' specifies that the
+--     @pExclusiveScissors@ state in
+--     'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'
+--     will be ignored and /must/ be set dynamically with
+--     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorNV'
+--     before any drawing commands.
+--
+-- -   'DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV' specifies that the
+--     exclusive scissors /must/ be explicitly enabled with
+--     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorEnableNV'
+--     and the @exclusiveScissorCount@ value in
+--     'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'
+--     will not implicitly enable them. This is available on
+--     implementations that support at least @specVersion@ @2@ of the
+--     @VK_NV_scissor_exclusive@ extension.
+--
+-- -   'DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV' specifies that the
+--     @pShadingRatePalettes@ state in
+--     'Vulkan.Extensions.VK_NV_shading_rate_image.PipelineViewportShadingRateImageStateCreateInfoNV'
+--     will be ignored and /must/ be set dynamically with
+--     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetViewportShadingRatePaletteNV'
+--     before any drawing commands.
+--
+-- -   'DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV' specifies that the
+--     coarse sample order state in
+--     'Vulkan.Extensions.VK_NV_shading_rate_image.PipelineViewportCoarseSampleOrderStateCreateInfoNV'
+--     will be ignored and /must/ be set dynamically with
+--     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetCoarseSampleOrderNV'
+--     before any drawing commands.
+--
+-- -   'DYNAMIC_STATE_LINE_STIPPLE' specifies that the @lineStippleFactor@
+--     and @lineStipplePattern@ state in
+--     'Vulkan.Core14.Promoted_From_VK_KHR_line_rasterization.PipelineRasterizationLineStateCreateInfo'
+--     will be ignored and /must/ be set dynamically with
+--     'Vulkan.Core14.Promoted_From_VK_KHR_line_rasterization.cmdSetLineStipple'
+--     before any draws are performed with a pipeline state with
+--     'Vulkan.Core14.Promoted_From_VK_KHR_line_rasterization.PipelineRasterizationLineStateCreateInfo'
+--     member @stippledLineEnable@ set to
+--     'Vulkan.Core10.FundamentalTypes.TRUE'.
+--
+-- -   'DYNAMIC_STATE_CULL_MODE' specifies that the @cullMode@ state in
+--     'Vulkan.Core10.GraphicsPipeline.PipelineRasterizationStateCreateInfo'
+--     will be ignored and /must/ be set dynamically with
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetCullMode'
+--     before any drawing commands.
+--
+-- -   'DYNAMIC_STATE_FRONT_FACE' specifies that the @frontFace@ state in
+--     'Vulkan.Core10.GraphicsPipeline.PipelineRasterizationStateCreateInfo'
+--     will be ignored and /must/ be set dynamically with
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetFrontFace'
+--     before any drawing commands.
+--
+-- -   'DYNAMIC_STATE_PRIMITIVE_TOPOLOGY' specifies that the @topology@
+--     state in
+--     'Vulkan.Core10.GraphicsPipeline.PipelineInputAssemblyStateCreateInfo'
+--     only specifies the
+--     <https://registry.khronos.org/vulkan/specs/latest/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.
+--
+-- -   'DYNAMIC_STATE_VIEWPORT_WITH_COUNT' specifies that the
+--     @viewportCount@ and @pViewports@ state in
+--     'Vulkan.Core10.GraphicsPipeline.PipelineViewportStateCreateInfo'
+--     will be ignored and /must/ be set dynamically with
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
+--     before any draw call.
+--
+-- -   'DYNAMIC_STATE_SCISSOR_WITH_COUNT' specifies that the @scissorCount@
+--     and @pScissors@ state in
+--     'Vulkan.Core10.GraphicsPipeline.PipelineViewportStateCreateInfo'
+--     will be ignored and /must/ be set dynamically with
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
+--     before any draw call.
+--
+-- -   'DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE' specifies that the
+--     @stride@ state in
+--     'Vulkan.Core10.GraphicsPipeline.VertexInputBindingDescription' will
+--     be ignored and /must/ be set dynamically with
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2'
+--     before any draw call.
+--
+-- -   'DYNAMIC_STATE_DEPTH_TEST_ENABLE' specifies that the
+--     @depthTestEnable@ state in
+--     'Vulkan.Core10.GraphicsPipeline.PipelineDepthStencilStateCreateInfo'
+--     will be ignored and /must/ be set dynamically with
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthTestEnable'
+--     before any draw call.
+--
+-- -   'DYNAMIC_STATE_DEPTH_WRITE_ENABLE' specifies that the
+--     @depthWriteEnable@ state in
+--     'Vulkan.Core10.GraphicsPipeline.PipelineDepthStencilStateCreateInfo'
+--     will be ignored and /must/ be set dynamically with
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthWriteEnable'
+--     before any draw call.
+--
+-- -   'DYNAMIC_STATE_DEPTH_COMPARE_OP' specifies that the @depthCompareOp@
+--     state in
+--     'Vulkan.Core10.GraphicsPipeline.PipelineDepthStencilStateCreateInfo'
+--     will be ignored and /must/ be set dynamically with
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthCompareOp'
+--     before any draw call.
+--
+-- -   'DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE' specifies that the
+--     @depthBoundsTestEnable@ state in
+--     'Vulkan.Core10.GraphicsPipeline.PipelineDepthStencilStateCreateInfo'
+--     will be ignored and /must/ be set dynamically with
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthBoundsTestEnable'
+--     before any draw call.
+--
+-- -   'DYNAMIC_STATE_STENCIL_TEST_ENABLE' specifies that the
+--     @stencilTestEnable@ state in
+--     'Vulkan.Core10.GraphicsPipeline.PipelineDepthStencilStateCreateInfo'
+--     will be ignored and /must/ be set dynamically with
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilTestEnable'
+--     before any draw call.
+--
+-- -   'DYNAMIC_STATE_STENCIL_OP' specifies that the @failOp@, @passOp@,
+--     @depthFailOp@, and @compareOp@ states in
+--     'Vulkan.Core10.GraphicsPipeline.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.GraphicsPipeline.PipelineDepthStencilStateCreateInfo'
+--     member @stencilTestEnable@ set to
+--     'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   'DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT' specifies that the
+--     @patchControlPoints@ state in
+--     'Vulkan.Core10.GraphicsPipeline.PipelineTessellationStateCreateInfo'
+--     will be ignored and /must/ be set dynamically with
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPatchControlPointsEXT'
+--     before any drawing commands.
+--
+-- -   'DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE' specifies that the
+--     @rasterizerDiscardEnable@ state in
+--     'Vulkan.Core10.GraphicsPipeline.PipelineRasterizationStateCreateInfo'
+--     will be ignored and /must/ be set dynamically with
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
+--     before any drawing commands.
+--
+-- -   'DYNAMIC_STATE_DEPTH_BIAS_ENABLE' specifies that the
+--     @depthBiasEnable@ state in
+--     'Vulkan.Core10.GraphicsPipeline.PipelineRasterizationStateCreateInfo'
+--     will be ignored and /must/ be set dynamically with
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnable'
+--     before any drawing commands.
+--
+-- -   'DYNAMIC_STATE_LOGIC_OP_EXT' specifies that the @logicOp@ state in
+--     'Vulkan.Core10.GraphicsPipeline.PipelineColorBlendStateCreateInfo'
+--     will be ignored and /must/ be set dynamically with
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetLogicOpEXT'
+--     before any drawing commands.
+--
+-- -   'DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE' specifies that the
+--     @primitiveRestartEnable@ state in
+--     'Vulkan.Core10.GraphicsPipeline.PipelineInputAssemblyStateCreateInfo'
+--     will be ignored and /must/ be set dynamically with
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnable'
+--     before any drawing commands.
+--
+-- -   'DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR' specifies that state in
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'
+--     and
+--     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PipelineFragmentShadingRateEnumStateCreateInfoNV'
+--     will be ignored and /must/ be set dynamically with
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     or
+--     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.cmdSetFragmentShadingRateEnumNV'
+--     before any drawing commands.
+--
+-- -   'DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR' specifies that
+--     the default stack size computation for the pipeline will be ignored
+--     and /must/ be set dynamically with
+--     'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.cmdSetRayTracingPipelineStackSizeKHR'
+--     before any ray tracing calls are performed.
+--
+-- -   'DYNAMIC_STATE_VERTEX_INPUT_EXT' specifies that the
+--     @pVertexInputState@ state will be ignored and /must/ be set
+--     dynamically with
+--     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.cmdSetVertexInputEXT'
+--     before any drawing commands
+--
+-- -   'DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT' specifies that the
+--     @pColorWriteEnables@ state in
+--     'Vulkan.Extensions.VK_EXT_color_write_enable.PipelineColorWriteCreateInfoEXT'
+--     will be ignored and /must/ be set dynamically with
+--     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
+--     before any draw call.
+--
+-- -   'DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT' specifies that the
+--     @domainOrigin@ state in
+--     'Vulkan.Core11.Promoted_From_VK_KHR_maintenance2.PipelineTessellationDomainOriginStateCreateInfo'
+--     will be ignored and /must/ be set dynamically with
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetTessellationDomainOriginEXT'
+--     before any draw call.
+--
+-- -   'DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT' specifies that the
+--     @depthClampEnable@ state in
+--     'Vulkan.Core10.GraphicsPipeline.PipelineRasterizationStateCreateInfo'
+--     will be ignored and /must/ be set dynamically with
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClampEnableEXT'
+--     before any draw call.
+--
+-- -   'DYNAMIC_STATE_POLYGON_MODE_EXT' specifies that the @polygonMode@
+--     state in
+--     'Vulkan.Core10.GraphicsPipeline.PipelineRasterizationStateCreateInfo'
+--     will be ignored and /must/ be set dynamically with
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
+--     before any draw call.
+--
+-- -   'DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT' specifies that the
+--     @rasterizationSamples@ state in
+--     'Vulkan.Core10.GraphicsPipeline.PipelineMultisampleStateCreateInfo'
+--     will be ignored and /must/ be set dynamically with
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     before any draw call.
+--
+-- -   'DYNAMIC_STATE_SAMPLE_MASK_EXT' specifies that the @pSampleMask@
+--     state in
+--     'Vulkan.Core10.GraphicsPipeline.PipelineMultisampleStateCreateInfo'
+--     will be ignored and /must/ be set dynamically with
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
+--     before any draw call.
+--
+-- -   'DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT' specifies that the
+--     @alphaToCoverageEnable@ state in
+--     'Vulkan.Core10.GraphicsPipeline.PipelineMultisampleStateCreateInfo'
+--     will be ignored and /must/ be set dynamically with
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT'
+--     before any draw call.
+--
+-- -   'DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT' specifies that the
+--     @alphaToOneEnable@ state in
+--     'Vulkan.Core10.GraphicsPipeline.PipelineMultisampleStateCreateInfo'
+--     will be ignored and /must/ be set dynamically with
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToOneEnableEXT'
+--     before any draw call.
+--
+-- -   'DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT' specifies that the
+--     @logicOpEnable@ state in
+--     'Vulkan.Core10.GraphicsPipeline.PipelineColorBlendStateCreateInfo'
+--     will be ignored and /must/ be set dynamically with
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLogicOpEnableEXT'
+--     before any draw call.
+--
+-- -   'DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT' specifies that the
+--     @blendEnable@ state in
+--     'Vulkan.Core10.GraphicsPipeline.PipelineColorBlendAttachmentState'
+--     will be ignored and /must/ be set dynamically with
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
+--     before any draw call.
+--
+-- -   'DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT' specifies that the
+--     @srcColorBlendFactor@, @dstColorBlendFactor@, @colorBlendOp@,
+--     @srcAlphaBlendFactor@, @dstAlphaBlendFactor@, and @alphaBlendOp@
+--     states in
+--     'Vulkan.Core10.GraphicsPipeline.PipelineColorBlendAttachmentState'
+--     will be ignored and /must/ be set dynamically with
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
+--     before any draw call.
+--
+-- -   'DYNAMIC_STATE_COLOR_WRITE_MASK_EXT' specifies that the
+--     @colorWriteMask@ state in
+--     'Vulkan.Core10.GraphicsPipeline.PipelineColorBlendAttachmentState'
+--     will be ignored and /must/ be set dynamically with
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
+--     before any draw call.
+--
+-- -   'DYNAMIC_STATE_RASTERIZATION_STREAM_EXT' specifies that the
+--     @rasterizationStream@ state in
+--     'Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT'
+--     will be ignored and /must/ be set dynamically with
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationStreamEXT'
+--     before any draw call.
+--
+-- -   'DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT' specifies that
+--     the @conservativeRasterizationMode@ state in
+--     'Vulkan.Extensions.VK_EXT_conservative_rasterization.PipelineRasterizationConservativeStateCreateInfoEXT'
+--     will be ignored and /must/ be set dynamically with
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetConservativeRasterizationModeEXT'
+--     before any draw call.
+--
+-- -   'DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT' specifies
+--     that the @extraPrimitiveOverestimationSize@ state in
+--     'Vulkan.Extensions.VK_EXT_conservative_rasterization.PipelineRasterizationConservativeStateCreateInfoEXT'
+--     will be ignored and /must/ be set dynamically with
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetExtraPrimitiveOverestimationSizeEXT'
+--     before any draw call.
+--
+-- -   'DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT' specifies that the
+--     @depthClipEnable@ state in
+--     'Vulkan.Extensions.VK_EXT_depth_clip_enable.PipelineRasterizationDepthClipStateCreateInfoEXT'
+--     will be ignored and /must/ be set dynamically with
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipEnableEXT'
+--     before any draw call.
+--
+-- -   'DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT' specifies that the
+--     @sampleLocationsEnable@ state in
+--     'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'
+--     will be ignored and /must/ be set dynamically with
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT'
+--     before any draw call.
+--
+-- -   'DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT' specifies that the
+--     @colorBlendOp@ state in
+--     'Vulkan.Core10.GraphicsPipeline.PipelineColorBlendAttachmentState',
+--     and @srcPremultiplied@, @dstPremultiplied@, and @blendOverlap@
+--     states in
+--     'Vulkan.Extensions.VK_EXT_blend_operation_advanced.PipelineColorBlendAdvancedStateCreateInfoEXT'
+--     will be ignored and /must/ be set dynamically with
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
+--     before any draw call.
+--
+-- -   'DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT' specifies that the
+--     @provokingVertexMode@ state in
+--     'Vulkan.Extensions.VK_EXT_provoking_vertex.PipelineRasterizationProvokingVertexStateCreateInfoEXT'
+--     will be ignored and /must/ be set dynamically with
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetProvokingVertexModeEXT'
+--     before any draw call.
+--
+-- -   'DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT' specifies that the
+--     @lineRasterizationMode@ state in
+--     'Vulkan.Core14.Promoted_From_VK_KHR_line_rasterization.PipelineRasterizationLineStateCreateInfo'
+--     will be ignored and /must/ be set dynamically with
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
+--     before any draw call.
+--
+-- -   'DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT' specifies that the
+--     @stippledLineEnable@ state in
+--     'Vulkan.Core14.Promoted_From_VK_KHR_line_rasterization.PipelineRasterizationLineStateCreateInfo'
+--     will be ignored and /must/ be set dynamically with
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
+--     before any draw call.
+--
+-- -   'DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT' specifies that
+--     the @negativeOneToOne@ state in
+--     'Vulkan.Extensions.VK_EXT_depth_clip_control.PipelineViewportDepthClipControlCreateInfoEXT'
+--     will be ignored and /must/ be set dynamically with
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipNegativeOneToOneEXT'
+--     before any draw call.
+--
+-- -   'DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT' specifies that the
+--     @depthClampMode@ and @pDepthClampRange@ state in
+--     'Vulkan.Extensions.VK_EXT_depth_clamp_control.PipelineViewportDepthClampControlCreateInfoEXT'
+--     will be ignored and /must/ be set dynamically with
+--     'Vulkan.Extensions.VK_EXT_depth_clamp_control.cmdSetDepthClampRangeEXT'
+--     before any draw call.
+--
+-- -   'DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV' specifies that the
+--     @viewportWScalingEnable@ state in
+--     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV'
+--     will be ignored and /must/ be set dynamically with
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportWScalingEnableNV'
+--     before any draw call.
+--
+-- -   'DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV' specifies that the
+--     @viewportCount@, and @pViewportSwizzles@ states in
+--     'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV'
+--     will be ignored and /must/ be set dynamically with
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
+--     before any draw call.
+--
+-- -   'DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV' specifies that the
+--     @coverageToColorEnable@ state in
+--     'Vulkan.Extensions.VK_NV_fragment_coverage_to_color.PipelineCoverageToColorStateCreateInfoNV'
+--     will be ignored and /must/ be set dynamically with
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
+--     before any draw call.
+--
+-- -   'DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV' specifies that the
+--     @coverageToColorLocation@ state in
+--     'Vulkan.Extensions.VK_NV_fragment_coverage_to_color.PipelineCoverageToColorStateCreateInfoNV'
+--     will be ignored and /must/ be set dynamically with
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
+--     before any draw call.
+--
+-- -   'DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV' specifies that the
+--     @coverageModulationMode@ state in
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.PipelineCoverageModulationStateCreateInfoNV'
+--     will be ignored and /must/ be set dynamically with
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationModeNV'
+--     before any draw call.
+--
+-- -   'DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV' specifies that
+--     the @coverageModulationTableEnable@ state in
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.PipelineCoverageModulationStateCreateInfoNV'
+--     will be ignored and /must/ be set dynamically with
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV'
+--     before any draw call.
+--
+-- -   'DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV' specifies that the
+--     @coverageModulationTableCount@, and @pCoverageModulationTable@
+--     states in
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.PipelineCoverageModulationStateCreateInfoNV'
+--     will be ignored and /must/ be set dynamically with
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableNV'
+--     before any draw call.
+--
+-- -   'DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV' specifies that the
+--     @shadingRateImageEnable@ state in
+--     'Vulkan.Extensions.VK_NV_shading_rate_image.PipelineViewportShadingRateImageStateCreateInfoNV'
+--     will be ignored and /must/ be set dynamically with
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetShadingRateImageEnableNV'
+--     before any draw call.
+--
+-- -   'DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV' specifies
+--     that the @representativeFragmentTestEnable@ state in
+--     'Vulkan.Extensions.VK_NV_representative_fragment_test.PipelineRepresentativeFragmentTestStateCreateInfoNV'
+--     will be ignored and /must/ be set dynamically with
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRepresentativeFragmentTestEnableNV'
+--     before any draw call.
+--
+-- -   'DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV' specifies that the
+--     @coverageReductionMode@ state in
+--     'Vulkan.Extensions.VK_NV_coverage_reduction_mode.PipelineCoverageReductionStateCreateInfoNV'
+--     will be ignored and /must/ be set dynamically with
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageReductionModeNV'
+--     before any draw call.
+--
+-- -   'DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT' specifies that
+--     the
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT'
+--     and
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT'
+--     flags will be ignored and /must/ be set dynamically with
+--     'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
+--     before any draw call.
+--
+-- = 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.GraphicsPipeline.PipelineDynamicStateCreateInfo'
+newtype DynamicState = DynamicState Int32
+  deriving newtype (Eq, Ord, Storable, Zero)
+
+-- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_VIEWPORT"
+pattern DYNAMIC_STATE_VIEWPORT = DynamicState 0
+
+-- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_SCISSOR"
+pattern DYNAMIC_STATE_SCISSOR = DynamicState 1
+
+-- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_LINE_WIDTH"
+pattern DYNAMIC_STATE_LINE_WIDTH = DynamicState 2
+
+-- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_DEPTH_BIAS"
+pattern DYNAMIC_STATE_DEPTH_BIAS = DynamicState 3
+
+-- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_BLEND_CONSTANTS"
+pattern DYNAMIC_STATE_BLEND_CONSTANTS = DynamicState 4
+
+-- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_DEPTH_BOUNDS"
+pattern DYNAMIC_STATE_DEPTH_BOUNDS = DynamicState 5
+
+-- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK"
+pattern DYNAMIC_STATE_STENCIL_COMPARE_MASK = DynamicState 6
+
+-- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_STENCIL_WRITE_MASK"
+pattern DYNAMIC_STATE_STENCIL_WRITE_MASK = DynamicState 7
+
+-- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_STENCIL_REFERENCE"
+pattern DYNAMIC_STATE_STENCIL_REFERENCE = DynamicState 8
+
+-- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT"
+pattern DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT = DynamicState 1000582000
+
+-- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT"
+pattern DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT = DynamicState 1000524000
+
+-- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV"
+pattern DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV = DynamicState 1000455032
+
+-- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV"
+pattern DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV = DynamicState 1000455031
+
+-- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV"
+pattern DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV = DynamicState 1000455030
+
+-- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV"
+pattern DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV = DynamicState 1000455029
+
+-- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV"
+pattern DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV = DynamicState 1000455028
+
+-- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV"
+pattern DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV = DynamicState 1000455027
+
+-- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV"
+pattern DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV = DynamicState 1000455026
+
+-- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV"
+pattern DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV = DynamicState 1000455025
+
+-- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV"
+pattern DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV = DynamicState 1000455024
+
+-- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV"
+pattern DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV = DynamicState 1000455023
+
+-- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT"
+pattern DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT = DynamicState 1000455022
+
+-- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT"
+pattern DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT = DynamicState 1000455021
+
+-- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT"
+pattern DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT = DynamicState 1000455020
+
+-- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT"
+pattern DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT = DynamicState 1000455019
+
+-- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT"
+pattern DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT = DynamicState 1000455018
+
+-- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT"
+pattern DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT = DynamicState 1000455017
+
+-- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT"
+pattern DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT = DynamicState 1000455016
+
+-- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT"
+pattern DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT = DynamicState 1000455015
+
+-- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT"
+pattern DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT = DynamicState 1000455014
+
+-- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT"
+pattern DYNAMIC_STATE_RASTERIZATION_STREAM_EXT = DynamicState 1000455013
+
+-- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT"
+pattern DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT = DynamicState 1000455002
+
+-- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT"
+pattern DYNAMIC_STATE_COLOR_WRITE_MASK_EXT = DynamicState 1000455012
+
+-- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT"
+pattern DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT = DynamicState 1000455011
+
+-- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT"
+pattern DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT = DynamicState 1000455010
+
+-- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT"
+pattern DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT = DynamicState 1000455009
+
+-- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT"
+pattern DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT = DynamicState 1000455008
+
+-- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT"
+pattern DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT = DynamicState 1000455007
+
+-- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_SAMPLE_MASK_EXT"
+pattern DYNAMIC_STATE_SAMPLE_MASK_EXT = DynamicState 1000455006
+
+-- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT"
+pattern DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT = DynamicState 1000455005
+
+-- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_POLYGON_MODE_EXT"
+pattern DYNAMIC_STATE_POLYGON_MODE_EXT = DynamicState 1000455004
+
+-- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT"
+pattern DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT = DynamicState 1000455003
+
+-- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT"
+pattern DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT = DynamicState 1000381000
+
+-- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_LOGIC_OP_EXT"
+pattern DYNAMIC_STATE_LOGIC_OP_EXT = DynamicState 1000377003
+
+-- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT"
+pattern DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT = DynamicState 1000377000
+
+-- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_VERTEX_INPUT_EXT"
+pattern DYNAMIC_STATE_VERTEX_INPUT_EXT = DynamicState 1000352000
+
+-- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR"
+pattern DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR = DynamicState 1000226000
+
+-- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV"
+pattern DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV = DynamicState 1000205001
+
+-- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV"
+pattern DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV = DynamicState 1000205000
+
+-- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV"
+pattern DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV = DynamicState 1000164006
+
+-- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV"
+pattern DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV = DynamicState 1000164004
+
+-- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR"
+pattern DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR = DynamicState 1000347000
+
+-- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT"
+pattern DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT = DynamicState 1000143000
+
+-- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT"
+pattern DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT = DynamicState 1000099002
+
+-- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT"
+pattern DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT = DynamicState 1000099001
+
+-- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT"
+pattern DYNAMIC_STATE_DISCARD_RECTANGLE_EXT = DynamicState 1000099000
+
+-- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV"
+pattern DYNAMIC_STATE_VIEWPORT_W_SCALING_NV = DynamicState 1000087000
+
+-- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_LINE_STIPPLE"
+pattern DYNAMIC_STATE_LINE_STIPPLE = DynamicState 1000259000
+
+-- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE"
+pattern DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE = DynamicState 1000377004
+
+-- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE"
+pattern DYNAMIC_STATE_DEPTH_BIAS_ENABLE = DynamicState 1000377002
+
+-- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE"
+pattern DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE = DynamicState 1000377001
+
+-- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_STENCIL_OP"
+pattern DYNAMIC_STATE_STENCIL_OP = DynamicState 1000267011
+
+-- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE"
+pattern DYNAMIC_STATE_STENCIL_TEST_ENABLE = DynamicState 1000267010
+
+-- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE"
+pattern DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE = DynamicState 1000267009
+
+-- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_DEPTH_COMPARE_OP"
+pattern DYNAMIC_STATE_DEPTH_COMPARE_OP = DynamicState 1000267008
+
+-- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE"
+pattern DYNAMIC_STATE_DEPTH_WRITE_ENABLE = DynamicState 1000267007
+
+-- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE"
+pattern DYNAMIC_STATE_DEPTH_TEST_ENABLE = DynamicState 1000267006
+
+-- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE"
+pattern DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE = DynamicState 1000267005
+
+-- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT"
+pattern DYNAMIC_STATE_SCISSOR_WITH_COUNT = DynamicState 1000267004
+
+-- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT"
+pattern DYNAMIC_STATE_VIEWPORT_WITH_COUNT = DynamicState 1000267003
+
+-- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY"
+pattern DYNAMIC_STATE_PRIMITIVE_TOPOLOGY = DynamicState 1000267002
+
+-- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_FRONT_FACE"
+pattern DYNAMIC_STATE_FRONT_FACE = DynamicState 1000267001
+
+-- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_CULL_MODE"
+pattern DYNAMIC_STATE_CULL_MODE = DynamicState 1000267000
+
+{-# COMPLETE
+  DYNAMIC_STATE_VIEWPORT
+  , DYNAMIC_STATE_SCISSOR
+  , DYNAMIC_STATE_LINE_WIDTH
+  , DYNAMIC_STATE_DEPTH_BIAS
+  , DYNAMIC_STATE_BLEND_CONSTANTS
+  , DYNAMIC_STATE_DEPTH_BOUNDS
+  , DYNAMIC_STATE_STENCIL_COMPARE_MASK
+  , DYNAMIC_STATE_STENCIL_WRITE_MASK
+  , DYNAMIC_STATE_STENCIL_REFERENCE
+  , DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT
+  , DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT
+  , DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV
+  , DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV
+  , DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV
+  , DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV
+  , DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV
+  , DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV
+  , DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV
+  , DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV
+  , DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV
+  , DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV
+  , DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT
+  , DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
+  , DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
+  , DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT
+  , DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT
+  , DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
+  , DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT
+  , DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT
+  , DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT
+  , DYNAMIC_STATE_RASTERIZATION_STREAM_EXT
+  , DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT
+  , DYNAMIC_STATE_COLOR_WRITE_MASK_EXT
+  , DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT
+  , DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
+  , DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT
+  , DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT
+  , DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT
+  , DYNAMIC_STATE_SAMPLE_MASK_EXT
+  , DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
+  , DYNAMIC_STATE_POLYGON_MODE_EXT
+  , DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT
+  , DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT
+  , DYNAMIC_STATE_LOGIC_OP_EXT
+  , DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT
+  , DYNAMIC_STATE_VERTEX_INPUT_EXT
+  , DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR
+  , DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV
+  , DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV
+  , DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV
+  , DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV
+  , DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR
+  , DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
+  , DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT
+  , DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT
+  , DYNAMIC_STATE_DISCARD_RECTANGLE_EXT
+  , DYNAMIC_STATE_VIEWPORT_W_SCALING_NV
+  , DYNAMIC_STATE_LINE_STIPPLE
+  , 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"
+
+enumPrefixDynamicState :: String
+enumPrefixDynamicState = "DYNAMIC_STATE_"
+
+showTableDynamicState :: [(DynamicState, String)]
+showTableDynamicState =
+  [ (DYNAMIC_STATE_VIEWPORT, "VIEWPORT")
+  , (DYNAMIC_STATE_SCISSOR, "SCISSOR")
+  , (DYNAMIC_STATE_LINE_WIDTH, "LINE_WIDTH")
+  , (DYNAMIC_STATE_DEPTH_BIAS, "DEPTH_BIAS")
+  , (DYNAMIC_STATE_BLEND_CONSTANTS, "BLEND_CONSTANTS")
+  , (DYNAMIC_STATE_DEPTH_BOUNDS, "DEPTH_BOUNDS")
+  ,
+    ( DYNAMIC_STATE_STENCIL_COMPARE_MASK
+    , "STENCIL_COMPARE_MASK"
+    )
+  ,
+    ( DYNAMIC_STATE_STENCIL_WRITE_MASK
+    , "STENCIL_WRITE_MASK"
+    )
+  , (DYNAMIC_STATE_STENCIL_REFERENCE, "STENCIL_REFERENCE")
+  ,
+    ( DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT
+    , "DEPTH_CLAMP_RANGE_EXT"
+    )
+  ,
+    ( DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT
+    , "ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT"
+    )
+  ,
+    ( DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV
+    , "COVERAGE_REDUCTION_MODE_NV"
+    )
+  ,
+    ( DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV
+    , "REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV"
+    )
+  ,
+    ( DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV
+    , "SHADING_RATE_IMAGE_ENABLE_NV"
+    )
+  ,
+    ( DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV
+    , "COVERAGE_MODULATION_TABLE_NV"
+    )
+  ,
+    ( DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV
+    , "COVERAGE_MODULATION_TABLE_ENABLE_NV"
+    )
+  ,
+    ( DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV
+    , "COVERAGE_MODULATION_MODE_NV"
+    )
+  ,
+    ( DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV
+    , "COVERAGE_TO_COLOR_LOCATION_NV"
+    )
+  ,
+    ( DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV
+    , "COVERAGE_TO_COLOR_ENABLE_NV"
+    )
+  ,
+    ( DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV
+    , "VIEWPORT_SWIZZLE_NV"
+    )
+  ,
+    ( DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV
+    , "VIEWPORT_W_SCALING_ENABLE_NV"
+    )
+  ,
+    ( DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT
+    , "DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT"
+    )
+  ,
+    ( DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
+    , "LINE_STIPPLE_ENABLE_EXT"
+    )
+  ,
+    ( DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
+    , "LINE_RASTERIZATION_MODE_EXT"
+    )
+  ,
+    ( DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT
+    , "PROVOKING_VERTEX_MODE_EXT"
+    )
+  ,
+    ( DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT
+    , "COLOR_BLEND_ADVANCED_EXT"
+    )
+  ,
+    ( DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
+    , "SAMPLE_LOCATIONS_ENABLE_EXT"
+    )
+  ,
+    ( DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT
+    , "DEPTH_CLIP_ENABLE_EXT"
+    )
+  ,
+    ( DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT
+    , "EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT"
+    )
+  ,
+    ( DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT
+    , "CONSERVATIVE_RASTERIZATION_MODE_EXT"
+    )
+  ,
+    ( DYNAMIC_STATE_RASTERIZATION_STREAM_EXT
+    , "RASTERIZATION_STREAM_EXT"
+    )
+  ,
+    ( DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT
+    , "TESSELLATION_DOMAIN_ORIGIN_EXT"
+    )
+  ,
+    ( DYNAMIC_STATE_COLOR_WRITE_MASK_EXT
+    , "COLOR_WRITE_MASK_EXT"
+    )
+  ,
+    ( DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT
+    , "COLOR_BLEND_EQUATION_EXT"
+    )
+  ,
+    ( DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
+    , "COLOR_BLEND_ENABLE_EXT"
+    )
+  ,
+    ( DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT
+    , "LOGIC_OP_ENABLE_EXT"
+    )
+  ,
+    ( DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT
+    , "ALPHA_TO_ONE_ENABLE_EXT"
+    )
+  ,
+    ( DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT
+    , "ALPHA_TO_COVERAGE_ENABLE_EXT"
+    )
+  , (DYNAMIC_STATE_SAMPLE_MASK_EXT, "SAMPLE_MASK_EXT")
+  ,
+    ( DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
+    , "RASTERIZATION_SAMPLES_EXT"
+    )
+  , (DYNAMIC_STATE_POLYGON_MODE_EXT, "POLYGON_MODE_EXT")
+  ,
+    ( DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT
+    , "DEPTH_CLAMP_ENABLE_EXT"
+    )
+  ,
+    ( DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT
+    , "COLOR_WRITE_ENABLE_EXT"
+    )
+  , (DYNAMIC_STATE_LOGIC_OP_EXT, "LOGIC_OP_EXT")
+  ,
+    ( DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT
+    , "PATCH_CONTROL_POINTS_EXT"
+    )
+  , (DYNAMIC_STATE_VERTEX_INPUT_EXT, "VERTEX_INPUT_EXT")
+  ,
+    ( DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR
+    , "FRAGMENT_SHADING_RATE_KHR"
+    )
+  ,
+    ( DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV
+    , "EXCLUSIVE_SCISSOR_NV"
+    )
+  ,
+    ( DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV
+    , "EXCLUSIVE_SCISSOR_ENABLE_NV"
+    )
+  ,
+    ( DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV
+    , "VIEWPORT_COARSE_SAMPLE_ORDER_NV"
+    )
+  ,
+    ( DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV
+    , "VIEWPORT_SHADING_RATE_PALETTE_NV"
+    )
+  ,
+    ( DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR
+    , "RAY_TRACING_PIPELINE_STACK_SIZE_KHR"
+    )
+  ,
+    ( DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
+    , "SAMPLE_LOCATIONS_EXT"
+    )
+  ,
+    ( DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT
+    , "DISCARD_RECTANGLE_MODE_EXT"
+    )
+  ,
+    ( DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT
+    , "DISCARD_RECTANGLE_ENABLE_EXT"
+    )
+  ,
+    ( DYNAMIC_STATE_DISCARD_RECTANGLE_EXT
+    , "DISCARD_RECTANGLE_EXT"
+    )
+  ,
+    ( DYNAMIC_STATE_VIEWPORT_W_SCALING_NV
+    , "VIEWPORT_W_SCALING_NV"
+    )
+  , (DYNAMIC_STATE_LINE_STIPPLE, "LINE_STIPPLE")
   ,
     ( DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE
     , "PRIMITIVE_RESTART_ENABLE"
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
@@ -21,6 +21,11 @@
 
 -- | VkEventCreateFlagBits - Event creation flag bits
 --
+-- = Description
+--
+-- -   'EVENT_CREATE_DEVICE_ONLY_BIT' specifies that host event commands
+--     will not be used with this event.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -28,8 +33,7 @@
 newtype EventCreateFlagBits = EventCreateFlagBits Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'EVENT_CREATE_DEVICE_ONLY_BIT' specifies that host event commands will
--- not be used with this event.
+-- No documentation found for Nested "VkEventCreateFlagBits" "VK_EVENT_CREATE_DEVICE_ONLY_BIT"
 pattern EVENT_CREATE_DEVICE_ONLY_BIT = EventCreateFlagBits 0x00000001
 
 conNameEventCreateFlagBits :: String
diff --git a/src/Vulkan/Core10/Enums/FenceCreateFlagBits.hs b/src/Vulkan/Core10/Enums/FenceCreateFlagBits.hs
--- a/src/Vulkan/Core10/Enums/FenceCreateFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/FenceCreateFlagBits.hs
@@ -22,6 +22,12 @@
 -- | VkFenceCreateFlagBits - Bitmask specifying initial state and behavior of
 -- a fence
 --
+-- = Description
+--
+-- -   'FENCE_CREATE_SIGNALED_BIT' specifies that the fence object is
+--     created in the signaled state. Otherwise, it is created in the
+--     unsignaled state.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -29,8 +35,7 @@
 newtype FenceCreateFlagBits = FenceCreateFlagBits Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'FENCE_CREATE_SIGNALED_BIT' specifies that the fence object is created
--- in the signaled state. Otherwise, it is created in the unsignaled state.
+-- No documentation found for Nested "VkFenceCreateFlagBits" "VK_FENCE_CREATE_SIGNALED_BIT"
 pattern FENCE_CREATE_SIGNALED_BIT = FenceCreateFlagBits 0x00000001
 
 conNameFenceCreateFlagBits :: String
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
@@ -19,8 +19,14 @@
 --
 -- = Description
 --
+-- -   'FILTER_NEAREST' specifies nearest filtering.
+--
+-- -   'FILTER_LINEAR' specifies linear filtering.
+--
+-- -   'FILTER_CUBIC_EXT' specifies cubic filtering.
+--
 -- These filters are described in detail in
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#textures-texel-filtering Texel Filtering>.
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#textures-texel-filtering Texel Filtering>.
 --
 -- = See Also
 --
@@ -32,13 +38,13 @@
 newtype Filter = Filter Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'FILTER_NEAREST' specifies nearest filtering.
+-- No documentation found for Nested "VkFilter" "VK_FILTER_NEAREST"
 pattern FILTER_NEAREST = Filter 0
 
--- | 'FILTER_LINEAR' specifies linear filtering.
+-- No documentation found for Nested "VkFilter" "VK_FILTER_LINEAR"
 pattern FILTER_LINEAR = Filter 1
 
--- | 'FILTER_CUBIC_EXT' specifies cubic filtering.
+-- No documentation found for Nested "VkFilter" "VK_FILTER_CUBIC_EXT"
 pattern FILTER_CUBIC_EXT = Filter 1000015000
 
 {-# COMPLETE
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,2397 +185,3626 @@
                                           , FORMAT_ASTC_12x10_SRGB_BLOCK
                                           , FORMAT_ASTC_12x12_UNORM_BLOCK
                                           , FORMAT_ASTC_12x12_SRGB_BLOCK
-                                          , FORMAT_A8_UNORM_KHR
-                                          , FORMAT_A1B5G5R5_UNORM_PACK16_KHR
-                                          , FORMAT_R16G16_SFIXED5_NV
-                                          , FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG
-                                          , FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG
-                                          , FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG
-                                          , FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG
-                                          , FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG
-                                          , 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
-                                          , FORMAT_G16_B16R16_2PLANE_420_UNORM
-                                          , FORMAT_G16_B16_R16_3PLANE_420_UNORM
-                                          , FORMAT_B16G16R16G16_422_UNORM
-                                          , FORMAT_G16B16G16R16_422_UNORM
-                                          , FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16
-                                          , FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16
-                                          , FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16
-                                          , FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16
-                                          , FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16
-                                          , FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16
-                                          , FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16
-                                          , FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16
-                                          , FORMAT_R12X4G12X4_UNORM_2PACK16
-                                          , FORMAT_R12X4_UNORM_PACK16
-                                          , FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16
-                                          , FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16
-                                          , FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16
-                                          , FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16
-                                          , FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16
-                                          , FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16
-                                          , FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16
-                                          , FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16
-                                          , FORMAT_R10X6G10X6_UNORM_2PACK16
-                                          , FORMAT_R10X6_UNORM_PACK16
-                                          , FORMAT_G8_B8_R8_3PLANE_444_UNORM
-                                          , FORMAT_G8_B8R8_2PLANE_422_UNORM
-                                          , FORMAT_G8_B8_R8_3PLANE_422_UNORM
-                                          , FORMAT_G8_B8R8_2PLANE_420_UNORM
-                                          , FORMAT_G8_B8_R8_3PLANE_420_UNORM
-                                          , FORMAT_B8G8R8G8_422_UNORM
-                                          , FORMAT_G8B8G8R8_422_UNORM
-                                          , ..
-                                          )) where
-
-import Vulkan.Internal.Utils (enumReadPrec)
-import Vulkan.Internal.Utils (enumShowsPrec)
-import GHC.Show (showsPrec)
-import Vulkan.Zero (Zero)
-import Foreign.Storable (Storable)
-import Data.Int (Int32)
-import GHC.Read (Read(readPrec))
-import GHC.Show (Show(showsPrec))
-
--- | VkFormat - Available image formats
---
--- = 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_acceleration_structure.AccelerationStructureGeometryTrianglesDataKHR',
--- 'Vulkan.Extensions.VK_NV_displacement_micromap.AccelerationStructureTrianglesDisplacementMicromapNV',
--- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.AndroidHardwareBufferFormatProperties2ANDROID',
--- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.AndroidHardwareBufferFormatPropertiesANDROID',
--- 'Vulkan.Extensions.VK_ANDROID_external_format_resolve.AndroidHardwareBufferFormatResolvePropertiesANDROID',
--- 'Vulkan.Core10.Pass.AttachmentDescription',
--- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.AttachmentDescription2',
--- 'Vulkan.Core10.BufferView.BufferViewCreateInfo',
--- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.CommandBufferInheritanceRenderingInfo',
--- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.DescriptorAddressInfoEXT',
--- 'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentImageInfo',
--- 'Vulkan.Extensions.VK_NV_ray_tracing.GeometryTrianglesNV',
--- 'Vulkan.Core10.Image.ImageCreateInfo',
--- 'Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo',
--- 'Vulkan.Extensions.VK_EXT_astc_decode_mode.ImageViewASTCDecodeModeEXT',
--- 'Vulkan.Core10.ImageView.ImageViewCreateInfo',
--- 'Vulkan.Extensions.VK_NV_optical_flow.OpticalFlowImageFormatPropertiesNV',
--- 'Vulkan.Extensions.VK_NV_optical_flow.OpticalFlowSessionCreateInfoNV',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceImageFormatInfo2',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceSparseImageFormatInfo2',
--- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo',
--- 'Vulkan.Extensions.VK_KHR_maintenance5.RenderingAreaInfoKHR',
--- 'Vulkan.Extensions.VK_EXT_custom_border_color.SamplerCustomBorderColorCreateInfoEXT',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionCreateInfo',
--- 'Vulkan.Extensions.VK_QNX_external_memory_screen_buffer.ScreenBufferFormatPropertiesQNX',
--- 'Vulkan.Extensions.VK_KHR_surface.SurfaceFormatKHR',
--- 'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR',
--- 'Vulkan.Core10.Pipeline.VertexInputAttributeDescription',
--- 'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT',
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoFormatPropertiesKHR VkVideoFormatPropertiesKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoSessionCreateInfoKHR VkVideoSessionCreateInfoKHR>,
--- 'Vulkan.Extensions.VK_NV_external_memory_capabilities.getPhysicalDeviceExternalImageFormatPropertiesNV',
--- 'Vulkan.Core10.DeviceInitialization.getPhysicalDeviceFormatProperties',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFormatProperties2',
--- 'Vulkan.Extensions.VK_KHR_get_physical_device_properties2.getPhysicalDeviceFormatProperties2KHR',
--- 'Vulkan.Core10.DeviceInitialization.getPhysicalDeviceImageFormatProperties',
--- 'Vulkan.Core10.SparseResourceMemoryManagement.getPhysicalDeviceSparseImageFormatProperties'
-newtype Format = Format Int32
-  deriving newtype (Eq, Ord, Storable, Zero)
-
--- | 'FORMAT_UNDEFINED' specifies that the format is not specified.
-pattern FORMAT_UNDEFINED = Format 0
-
--- | 'FORMAT_R4G4_UNORM_PACK8' specifies a two-component, 8-bit packed
--- unsigned normalized format that has a 4-bit R component in bits 4..7,
--- and a 4-bit G component in bits 0..3.
-pattern FORMAT_R4G4_UNORM_PACK8 = Format 1
-
--- | 'FORMAT_R4G4B4A4_UNORM_PACK16' specifies a four-component, 16-bit packed
--- unsigned normalized format that has a 4-bit R component in bits 12..15,
--- a 4-bit G component in bits 8..11, a 4-bit B component in bits 4..7, and
--- a 4-bit A component in bits 0..3.
-pattern FORMAT_R4G4B4A4_UNORM_PACK16 = Format 2
-
--- | 'FORMAT_B4G4R4A4_UNORM_PACK16' specifies a four-component, 16-bit packed
--- unsigned normalized format that has a 4-bit B component in bits 12..15,
--- a 4-bit G component in bits 8..11, a 4-bit R component in bits 4..7, and
--- a 4-bit A component in bits 0..3.
-pattern FORMAT_B4G4R4A4_UNORM_PACK16 = Format 3
-
--- | 'FORMAT_R5G6B5_UNORM_PACK16' specifies a three-component, 16-bit packed
--- unsigned normalized format that has a 5-bit R component in bits 11..15,
--- a 6-bit G component in bits 5..10, and a 5-bit B component in bits 0..4.
-pattern FORMAT_R5G6B5_UNORM_PACK16 = Format 4
-
--- | 'FORMAT_B5G6R5_UNORM_PACK16' specifies a three-component, 16-bit packed
--- unsigned normalized format that has a 5-bit B component in bits 11..15,
--- a 6-bit G component in bits 5..10, and a 5-bit R component in bits 0..4.
-pattern FORMAT_B5G6R5_UNORM_PACK16 = Format 5
-
--- | 'FORMAT_R5G5B5A1_UNORM_PACK16' specifies a four-component, 16-bit packed
--- unsigned normalized format that has a 5-bit R component in bits 11..15,
--- a 5-bit G component in bits 6..10, a 5-bit B component in bits 1..5, and
--- a 1-bit A component in bit 0.
-pattern FORMAT_R5G5B5A1_UNORM_PACK16 = Format 6
-
--- | 'FORMAT_B5G5R5A1_UNORM_PACK16' specifies a four-component, 16-bit packed
--- unsigned normalized format that has a 5-bit B component in bits 11..15,
--- a 5-bit G component in bits 6..10, a 5-bit R component in bits 1..5, and
--- a 1-bit A component in bit 0.
-pattern FORMAT_B5G5R5A1_UNORM_PACK16 = Format 7
-
--- | 'FORMAT_A1R5G5B5_UNORM_PACK16' specifies a four-component, 16-bit packed
--- unsigned normalized format that has a 1-bit A component in bit 15, a
--- 5-bit R component in bits 10..14, a 5-bit G component in bits 5..9, and
--- a 5-bit B component in bits 0..4.
-pattern FORMAT_A1R5G5B5_UNORM_PACK16 = Format 8
-
--- | 'FORMAT_R8_UNORM' specifies a one-component, 8-bit unsigned normalized
--- format that has a single 8-bit R component.
-pattern FORMAT_R8_UNORM = Format 9
-
--- | 'FORMAT_R8_SNORM' specifies a one-component, 8-bit signed normalized
--- format that has a single 8-bit R component.
-pattern FORMAT_R8_SNORM = Format 10
-
--- | 'FORMAT_R8_USCALED' specifies a one-component, 8-bit unsigned scaled
--- integer format that has a single 8-bit R component.
-pattern FORMAT_R8_USCALED = Format 11
-
--- | 'FORMAT_R8_SSCALED' specifies a one-component, 8-bit signed scaled
--- integer format that has a single 8-bit R component.
-pattern FORMAT_R8_SSCALED = Format 12
-
--- | 'FORMAT_R8_UINT' specifies a one-component, 8-bit unsigned integer
--- format that has a single 8-bit R component.
-pattern FORMAT_R8_UINT = Format 13
-
--- | 'FORMAT_R8_SINT' specifies a one-component, 8-bit signed integer format
--- that has a single 8-bit R component.
-pattern FORMAT_R8_SINT = Format 14
-
--- | 'FORMAT_R8_SRGB' specifies a one-component, 8-bit unsigned normalized
--- format that has a single 8-bit R component stored with sRGB nonlinear
--- encoding.
-pattern FORMAT_R8_SRGB = Format 15
-
--- | 'FORMAT_R8G8_UNORM' specifies a two-component, 16-bit unsigned
--- normalized format that has an 8-bit R component in byte 0, and an 8-bit
--- G component in byte 1.
-pattern FORMAT_R8G8_UNORM = Format 16
-
--- | 'FORMAT_R8G8_SNORM' specifies a two-component, 16-bit signed normalized
--- format that has an 8-bit R component in byte 0, and an 8-bit G component
--- in byte 1.
-pattern FORMAT_R8G8_SNORM = Format 17
-
--- | 'FORMAT_R8G8_USCALED' specifies a two-component, 16-bit unsigned scaled
--- integer format that has an 8-bit R component in byte 0, and an 8-bit G
--- component in byte 1.
-pattern FORMAT_R8G8_USCALED = Format 18
-
--- | 'FORMAT_R8G8_SSCALED' specifies a two-component, 16-bit signed scaled
--- integer format that has an 8-bit R component in byte 0, and an 8-bit G
--- component in byte 1.
-pattern FORMAT_R8G8_SSCALED = Format 19
-
--- | 'FORMAT_R8G8_UINT' specifies a two-component, 16-bit unsigned integer
--- format that has an 8-bit R component in byte 0, and an 8-bit G component
--- in byte 1.
-pattern FORMAT_R8G8_UINT = Format 20
-
--- | 'FORMAT_R8G8_SINT' specifies a two-component, 16-bit signed integer
--- format that has an 8-bit R component in byte 0, and an 8-bit G component
--- in byte 1.
-pattern FORMAT_R8G8_SINT = Format 21
-
--- | 'FORMAT_R8G8_SRGB' specifies a two-component, 16-bit unsigned normalized
--- format that has an 8-bit R component stored with sRGB nonlinear encoding
--- in byte 0, and an 8-bit G component stored with sRGB nonlinear encoding
--- in byte 1.
-pattern FORMAT_R8G8_SRGB = Format 22
-
--- | 'FORMAT_R8G8B8_UNORM' specifies a three-component, 24-bit unsigned
--- normalized format that has an 8-bit R component in byte 0, an 8-bit G
--- component in byte 1, and an 8-bit B component in byte 2.
-pattern FORMAT_R8G8B8_UNORM = Format 23
-
--- | 'FORMAT_R8G8B8_SNORM' specifies a three-component, 24-bit signed
--- normalized format that has an 8-bit R component in byte 0, an 8-bit G
--- component in byte 1, and an 8-bit B component in byte 2.
-pattern FORMAT_R8G8B8_SNORM = Format 24
-
--- | 'FORMAT_R8G8B8_USCALED' specifies a three-component, 24-bit unsigned
--- scaled format that has an 8-bit R component in byte 0, an 8-bit G
--- component in byte 1, and an 8-bit B component in byte 2.
-pattern FORMAT_R8G8B8_USCALED = Format 25
-
--- | 'FORMAT_R8G8B8_SSCALED' specifies a three-component, 24-bit signed
--- scaled format that has an 8-bit R component in byte 0, an 8-bit G
--- component in byte 1, and an 8-bit B component in byte 2.
-pattern FORMAT_R8G8B8_SSCALED = Format 26
-
--- | 'FORMAT_R8G8B8_UINT' specifies a three-component, 24-bit unsigned
--- integer format that has an 8-bit R component in byte 0, an 8-bit G
--- component in byte 1, and an 8-bit B component in byte 2.
-pattern FORMAT_R8G8B8_UINT = Format 27
-
--- | 'FORMAT_R8G8B8_SINT' specifies a three-component, 24-bit signed integer
--- format that has an 8-bit R component in byte 0, an 8-bit G component in
--- byte 1, and an 8-bit B component in byte 2.
-pattern FORMAT_R8G8B8_SINT = Format 28
-
--- | 'FORMAT_R8G8B8_SRGB' specifies a three-component, 24-bit unsigned
--- normalized format that has an 8-bit R component stored with sRGB
--- nonlinear encoding in byte 0, an 8-bit G component stored with sRGB
--- nonlinear encoding in byte 1, and an 8-bit B component stored with sRGB
--- nonlinear encoding in byte 2.
-pattern FORMAT_R8G8B8_SRGB = Format 29
-
--- | 'FORMAT_B8G8R8_UNORM' specifies a three-component, 24-bit unsigned
--- normalized format that has an 8-bit B component in byte 0, an 8-bit G
--- component in byte 1, and an 8-bit R component in byte 2.
-pattern FORMAT_B8G8R8_UNORM = Format 30
-
--- | 'FORMAT_B8G8R8_SNORM' specifies a three-component, 24-bit signed
--- normalized format that has an 8-bit B component in byte 0, an 8-bit G
--- component in byte 1, and an 8-bit R component in byte 2.
-pattern FORMAT_B8G8R8_SNORM = Format 31
-
--- | 'FORMAT_B8G8R8_USCALED' specifies a three-component, 24-bit unsigned
--- scaled format that has an 8-bit B component in byte 0, an 8-bit G
--- component in byte 1, and an 8-bit R component in byte 2.
-pattern FORMAT_B8G8R8_USCALED = Format 32
-
--- | 'FORMAT_B8G8R8_SSCALED' specifies a three-component, 24-bit signed
--- scaled format that has an 8-bit B component in byte 0, an 8-bit G
--- component in byte 1, and an 8-bit R component in byte 2.
-pattern FORMAT_B8G8R8_SSCALED = Format 33
-
--- | 'FORMAT_B8G8R8_UINT' specifies a three-component, 24-bit unsigned
--- integer format that has an 8-bit B component in byte 0, an 8-bit G
--- component in byte 1, and an 8-bit R component in byte 2.
-pattern FORMAT_B8G8R8_UINT = Format 34
-
--- | 'FORMAT_B8G8R8_SINT' specifies a three-component, 24-bit signed integer
--- format that has an 8-bit B component in byte 0, an 8-bit G component in
--- byte 1, and an 8-bit R component in byte 2.
-pattern FORMAT_B8G8R8_SINT = Format 35
-
--- | 'FORMAT_B8G8R8_SRGB' specifies a three-component, 24-bit unsigned
--- normalized format that has an 8-bit B component stored with sRGB
--- nonlinear encoding in byte 0, an 8-bit G component stored with sRGB
--- nonlinear encoding in byte 1, and an 8-bit R component stored with sRGB
--- nonlinear encoding in byte 2.
-pattern FORMAT_B8G8R8_SRGB = Format 36
-
--- | 'FORMAT_R8G8B8A8_UNORM' specifies a four-component, 32-bit unsigned
--- normalized format that has an 8-bit R component in byte 0, an 8-bit G
--- component in byte 1, an 8-bit B component in byte 2, and an 8-bit A
--- component in byte 3.
-pattern FORMAT_R8G8B8A8_UNORM = Format 37
-
--- | 'FORMAT_R8G8B8A8_SNORM' specifies a four-component, 32-bit signed
--- normalized format that has an 8-bit R component in byte 0, an 8-bit G
--- component in byte 1, an 8-bit B component in byte 2, and an 8-bit A
--- component in byte 3.
-pattern FORMAT_R8G8B8A8_SNORM = Format 38
-
--- | 'FORMAT_R8G8B8A8_USCALED' specifies a four-component, 32-bit unsigned
--- scaled format that has an 8-bit R component in byte 0, an 8-bit G
--- component in byte 1, an 8-bit B component in byte 2, and an 8-bit A
--- component in byte 3.
-pattern FORMAT_R8G8B8A8_USCALED = Format 39
-
--- | 'FORMAT_R8G8B8A8_SSCALED' specifies a four-component, 32-bit signed
--- scaled format that has an 8-bit R component in byte 0, an 8-bit G
--- component in byte 1, an 8-bit B component in byte 2, and an 8-bit A
--- component in byte 3.
-pattern FORMAT_R8G8B8A8_SSCALED = Format 40
-
--- | 'FORMAT_R8G8B8A8_UINT' specifies a four-component, 32-bit unsigned
--- integer format that has an 8-bit R component in byte 0, an 8-bit G
--- component in byte 1, an 8-bit B component in byte 2, and an 8-bit A
--- component in byte 3.
-pattern FORMAT_R8G8B8A8_UINT = Format 41
-
--- | 'FORMAT_R8G8B8A8_SINT' specifies a four-component, 32-bit signed integer
--- format that has an 8-bit R component in byte 0, an 8-bit G component in
--- byte 1, an 8-bit B component in byte 2, and an 8-bit A component in byte
--- 3.
-pattern FORMAT_R8G8B8A8_SINT = Format 42
-
--- | 'FORMAT_R8G8B8A8_SRGB' specifies a four-component, 32-bit unsigned
--- normalized format that has an 8-bit R component stored with sRGB
--- nonlinear encoding in byte 0, an 8-bit G component stored with sRGB
--- nonlinear encoding in byte 1, an 8-bit B component stored with sRGB
--- nonlinear encoding in byte 2, and an 8-bit A component in byte 3.
-pattern FORMAT_R8G8B8A8_SRGB = Format 43
-
--- | 'FORMAT_B8G8R8A8_UNORM' specifies a four-component, 32-bit unsigned
--- normalized format that has an 8-bit B component in byte 0, an 8-bit G
--- component in byte 1, an 8-bit R component in byte 2, and an 8-bit A
--- component in byte 3.
-pattern FORMAT_B8G8R8A8_UNORM = Format 44
-
--- | 'FORMAT_B8G8R8A8_SNORM' specifies a four-component, 32-bit signed
--- normalized format that has an 8-bit B component in byte 0, an 8-bit G
--- component in byte 1, an 8-bit R component in byte 2, and an 8-bit A
--- component in byte 3.
-pattern FORMAT_B8G8R8A8_SNORM = Format 45
-
--- | 'FORMAT_B8G8R8A8_USCALED' specifies a four-component, 32-bit unsigned
--- scaled format that has an 8-bit B component in byte 0, an 8-bit G
--- component in byte 1, an 8-bit R component in byte 2, and an 8-bit A
--- component in byte 3.
-pattern FORMAT_B8G8R8A8_USCALED = Format 46
-
--- | 'FORMAT_B8G8R8A8_SSCALED' specifies a four-component, 32-bit signed
--- scaled format that has an 8-bit B component in byte 0, an 8-bit G
--- component in byte 1, an 8-bit R component in byte 2, and an 8-bit A
--- component in byte 3.
-pattern FORMAT_B8G8R8A8_SSCALED = Format 47
-
--- | 'FORMAT_B8G8R8A8_UINT' specifies a four-component, 32-bit unsigned
--- integer format that has an 8-bit B component in byte 0, an 8-bit G
--- component in byte 1, an 8-bit R component in byte 2, and an 8-bit A
--- component in byte 3.
-pattern FORMAT_B8G8R8A8_UINT = Format 48
-
--- | 'FORMAT_B8G8R8A8_SINT' specifies a four-component, 32-bit signed integer
--- format that has an 8-bit B component in byte 0, an 8-bit G component in
--- byte 1, an 8-bit R component in byte 2, and an 8-bit A component in byte
--- 3.
-pattern FORMAT_B8G8R8A8_SINT = Format 49
-
--- | 'FORMAT_B8G8R8A8_SRGB' specifies a four-component, 32-bit unsigned
--- normalized format that has an 8-bit B component stored with sRGB
--- nonlinear encoding in byte 0, an 8-bit G component stored with sRGB
--- nonlinear encoding in byte 1, an 8-bit R component stored with sRGB
--- nonlinear encoding in byte 2, and an 8-bit A component in byte 3.
-pattern FORMAT_B8G8R8A8_SRGB = Format 50
-
--- | 'FORMAT_A8B8G8R8_UNORM_PACK32' specifies a four-component, 32-bit packed
--- unsigned normalized format that has an 8-bit A component in bits 24..31,
--- an 8-bit B component in bits 16..23, an 8-bit G component in bits 8..15,
--- and an 8-bit R component in bits 0..7.
-pattern FORMAT_A8B8G8R8_UNORM_PACK32 = Format 51
-
--- | 'FORMAT_A8B8G8R8_SNORM_PACK32' specifies a four-component, 32-bit packed
--- signed normalized format that has an 8-bit A component in bits 24..31,
--- an 8-bit B component in bits 16..23, an 8-bit G component in bits 8..15,
--- and an 8-bit R component in bits 0..7.
-pattern FORMAT_A8B8G8R8_SNORM_PACK32 = Format 52
-
--- | 'FORMAT_A8B8G8R8_USCALED_PACK32' specifies a four-component, 32-bit
--- packed unsigned scaled integer format that has an 8-bit A component in
--- bits 24..31, an 8-bit B component in bits 16..23, an 8-bit G component
--- in bits 8..15, and an 8-bit R component in bits 0..7.
-pattern FORMAT_A8B8G8R8_USCALED_PACK32 = Format 53
-
--- | 'FORMAT_A8B8G8R8_SSCALED_PACK32' specifies a four-component, 32-bit
--- packed signed scaled integer format that has an 8-bit A component in
--- bits 24..31, an 8-bit B component in bits 16..23, an 8-bit G component
--- in bits 8..15, and an 8-bit R component in bits 0..7.
-pattern FORMAT_A8B8G8R8_SSCALED_PACK32 = Format 54
-
--- | 'FORMAT_A8B8G8R8_UINT_PACK32' specifies a four-component, 32-bit packed
--- unsigned integer format that has an 8-bit A component in bits 24..31, an
--- 8-bit B component in bits 16..23, an 8-bit G component in bits 8..15,
--- and an 8-bit R component in bits 0..7.
-pattern FORMAT_A8B8G8R8_UINT_PACK32 = Format 55
-
--- | 'FORMAT_A8B8G8R8_SINT_PACK32' specifies a four-component, 32-bit packed
--- signed integer format that has an 8-bit A component in bits 24..31, an
--- 8-bit B component in bits 16..23, an 8-bit G component in bits 8..15,
--- and an 8-bit R component in bits 0..7.
-pattern FORMAT_A8B8G8R8_SINT_PACK32 = Format 56
-
--- | 'FORMAT_A8B8G8R8_SRGB_PACK32' specifies a four-component, 32-bit packed
--- unsigned normalized format that has an 8-bit A component in bits 24..31,
--- an 8-bit B component stored with sRGB nonlinear encoding in bits 16..23,
--- an 8-bit G component stored with sRGB nonlinear encoding in bits 8..15,
--- and an 8-bit R component stored with sRGB nonlinear encoding in bits
--- 0..7.
-pattern FORMAT_A8B8G8R8_SRGB_PACK32 = Format 57
-
--- | 'FORMAT_A2R10G10B10_UNORM_PACK32' specifies a four-component, 32-bit
--- packed unsigned normalized format that has a 2-bit A component in bits
--- 30..31, a 10-bit R component in bits 20..29, a 10-bit G component in
--- bits 10..19, and a 10-bit B component in bits 0..9.
-pattern FORMAT_A2R10G10B10_UNORM_PACK32 = Format 58
-
--- | 'FORMAT_A2R10G10B10_SNORM_PACK32' specifies a four-component, 32-bit
--- packed signed normalized format that has a 2-bit A component in bits
--- 30..31, a 10-bit R component in bits 20..29, a 10-bit G component in
--- bits 10..19, and a 10-bit B component in bits 0..9.
-pattern FORMAT_A2R10G10B10_SNORM_PACK32 = Format 59
-
--- | 'FORMAT_A2R10G10B10_USCALED_PACK32' specifies a four-component, 32-bit
--- packed unsigned scaled integer format that has a 2-bit A component in
--- bits 30..31, a 10-bit R component in bits 20..29, a 10-bit G component
--- in bits 10..19, and a 10-bit B component in bits 0..9.
-pattern FORMAT_A2R10G10B10_USCALED_PACK32 = Format 60
-
--- | 'FORMAT_A2R10G10B10_SSCALED_PACK32' specifies a four-component, 32-bit
--- packed signed scaled integer format that has a 2-bit A component in bits
--- 30..31, a 10-bit R component in bits 20..29, a 10-bit G component in
--- bits 10..19, and a 10-bit B component in bits 0..9.
-pattern FORMAT_A2R10G10B10_SSCALED_PACK32 = Format 61
-
--- | 'FORMAT_A2R10G10B10_UINT_PACK32' specifies a four-component, 32-bit
--- packed unsigned integer format that has a 2-bit A component in bits
--- 30..31, a 10-bit R component in bits 20..29, a 10-bit G component in
--- bits 10..19, and a 10-bit B component in bits 0..9.
-pattern FORMAT_A2R10G10B10_UINT_PACK32 = Format 62
-
--- | 'FORMAT_A2R10G10B10_SINT_PACK32' specifies a four-component, 32-bit
--- packed signed integer format that has a 2-bit A component in bits
--- 30..31, a 10-bit R component in bits 20..29, a 10-bit G component in
--- bits 10..19, and a 10-bit B component in bits 0..9.
-pattern FORMAT_A2R10G10B10_SINT_PACK32 = Format 63
-
--- | 'FORMAT_A2B10G10R10_UNORM_PACK32' specifies a four-component, 32-bit
--- packed unsigned normalized format that has a 2-bit A component in bits
--- 30..31, a 10-bit B component in bits 20..29, a 10-bit G component in
--- bits 10..19, and a 10-bit R component in bits 0..9.
-pattern FORMAT_A2B10G10R10_UNORM_PACK32 = Format 64
-
--- | 'FORMAT_A2B10G10R10_SNORM_PACK32' specifies a four-component, 32-bit
--- packed signed normalized format that has a 2-bit A component in bits
--- 30..31, a 10-bit B component in bits 20..29, a 10-bit G component in
--- bits 10..19, and a 10-bit R component in bits 0..9.
-pattern FORMAT_A2B10G10R10_SNORM_PACK32 = Format 65
-
--- | 'FORMAT_A2B10G10R10_USCALED_PACK32' specifies a four-component, 32-bit
--- packed unsigned scaled integer format that has a 2-bit A component in
--- bits 30..31, a 10-bit B component in bits 20..29, a 10-bit G component
--- in bits 10..19, and a 10-bit R component in bits 0..9.
-pattern FORMAT_A2B10G10R10_USCALED_PACK32 = Format 66
-
--- | 'FORMAT_A2B10G10R10_SSCALED_PACK32' specifies a four-component, 32-bit
--- packed signed scaled integer format that has a 2-bit A component in bits
--- 30..31, a 10-bit B component in bits 20..29, a 10-bit G component in
--- bits 10..19, and a 10-bit R component in bits 0..9.
-pattern FORMAT_A2B10G10R10_SSCALED_PACK32 = Format 67
-
--- | 'FORMAT_A2B10G10R10_UINT_PACK32' specifies a four-component, 32-bit
--- packed unsigned integer format that has a 2-bit A component in bits
--- 30..31, a 10-bit B component in bits 20..29, a 10-bit G component in
--- bits 10..19, and a 10-bit R component in bits 0..9.
-pattern FORMAT_A2B10G10R10_UINT_PACK32 = Format 68
-
--- | 'FORMAT_A2B10G10R10_SINT_PACK32' specifies a four-component, 32-bit
--- packed signed integer format that has a 2-bit A component in bits
--- 30..31, a 10-bit B component in bits 20..29, a 10-bit G component in
--- bits 10..19, and a 10-bit R component in bits 0..9.
-pattern FORMAT_A2B10G10R10_SINT_PACK32 = Format 69
-
--- | 'FORMAT_R16_UNORM' specifies a one-component, 16-bit unsigned normalized
--- format that has a single 16-bit R component.
-pattern FORMAT_R16_UNORM = Format 70
-
--- | 'FORMAT_R16_SNORM' specifies a one-component, 16-bit signed normalized
--- format that has a single 16-bit R component.
-pattern FORMAT_R16_SNORM = Format 71
-
--- | 'FORMAT_R16_USCALED' specifies a one-component, 16-bit unsigned scaled
--- integer format that has a single 16-bit R component.
-pattern FORMAT_R16_USCALED = Format 72
-
--- | 'FORMAT_R16_SSCALED' specifies a one-component, 16-bit signed scaled
--- integer format that has a single 16-bit R component.
-pattern FORMAT_R16_SSCALED = Format 73
-
--- | 'FORMAT_R16_UINT' specifies a one-component, 16-bit unsigned integer
--- format that has a single 16-bit R component.
-pattern FORMAT_R16_UINT = Format 74
-
--- | 'FORMAT_R16_SINT' specifies a one-component, 16-bit signed integer
--- format that has a single 16-bit R component.
-pattern FORMAT_R16_SINT = Format 75
-
--- | 'FORMAT_R16_SFLOAT' specifies a one-component, 16-bit signed
--- floating-point format that has a single 16-bit R component.
-pattern FORMAT_R16_SFLOAT = Format 76
-
--- | 'FORMAT_R16G16_UNORM' specifies a two-component, 32-bit unsigned
--- normalized format that has a 16-bit R component in bytes 0..1, and a
--- 16-bit G component in bytes 2..3.
-pattern FORMAT_R16G16_UNORM = Format 77
-
--- | 'FORMAT_R16G16_SNORM' specifies a two-component, 32-bit signed
--- normalized format that has a 16-bit R component in bytes 0..1, and a
--- 16-bit G component in bytes 2..3.
-pattern FORMAT_R16G16_SNORM = Format 78
-
--- | 'FORMAT_R16G16_USCALED' specifies a two-component, 32-bit unsigned
--- scaled integer format that has a 16-bit R component in bytes 0..1, and a
--- 16-bit G component in bytes 2..3.
-pattern FORMAT_R16G16_USCALED = Format 79
-
--- | 'FORMAT_R16G16_SSCALED' specifies a two-component, 32-bit signed scaled
--- integer format that has a 16-bit R component in bytes 0..1, and a 16-bit
--- G component in bytes 2..3.
-pattern FORMAT_R16G16_SSCALED = Format 80
-
--- | 'FORMAT_R16G16_UINT' specifies a two-component, 32-bit unsigned integer
--- format that has a 16-bit R component in bytes 0..1, and a 16-bit G
--- component in bytes 2..3.
-pattern FORMAT_R16G16_UINT = Format 81
-
--- | 'FORMAT_R16G16_SINT' specifies a two-component, 32-bit signed integer
--- format that has a 16-bit R component in bytes 0..1, and a 16-bit G
--- component in bytes 2..3.
-pattern FORMAT_R16G16_SINT = Format 82
-
--- | 'FORMAT_R16G16_SFLOAT' specifies a two-component, 32-bit signed
--- floating-point format that has a 16-bit R component in bytes 0..1, and a
--- 16-bit G component in bytes 2..3.
-pattern FORMAT_R16G16_SFLOAT = Format 83
-
--- | 'FORMAT_R16G16B16_UNORM' specifies a three-component, 48-bit unsigned
--- normalized format that has a 16-bit R component in bytes 0..1, a 16-bit
--- G component in bytes 2..3, and a 16-bit B component in bytes 4..5.
-pattern FORMAT_R16G16B16_UNORM = Format 84
-
--- | 'FORMAT_R16G16B16_SNORM' specifies a three-component, 48-bit signed
--- normalized format that has a 16-bit R component in bytes 0..1, a 16-bit
--- G component in bytes 2..3, and a 16-bit B component in bytes 4..5.
-pattern FORMAT_R16G16B16_SNORM = Format 85
-
--- | 'FORMAT_R16G16B16_USCALED' specifies a three-component, 48-bit unsigned
--- scaled integer format that has a 16-bit R component in bytes 0..1, a
--- 16-bit G component in bytes 2..3, and a 16-bit B component in bytes
--- 4..5.
-pattern FORMAT_R16G16B16_USCALED = Format 86
-
--- | 'FORMAT_R16G16B16_SSCALED' specifies a three-component, 48-bit signed
--- scaled integer format that has a 16-bit R component in bytes 0..1, a
--- 16-bit G component in bytes 2..3, and a 16-bit B component in bytes
--- 4..5.
-pattern FORMAT_R16G16B16_SSCALED = Format 87
-
--- | 'FORMAT_R16G16B16_UINT' specifies a three-component, 48-bit unsigned
--- integer format that has a 16-bit R component in bytes 0..1, a 16-bit G
--- component in bytes 2..3, and a 16-bit B component in bytes 4..5.
-pattern FORMAT_R16G16B16_UINT = Format 88
-
--- | 'FORMAT_R16G16B16_SINT' specifies a three-component, 48-bit signed
--- integer format that has a 16-bit R component in bytes 0..1, a 16-bit G
--- component in bytes 2..3, and a 16-bit B component in bytes 4..5.
-pattern FORMAT_R16G16B16_SINT = Format 89
-
--- | 'FORMAT_R16G16B16_SFLOAT' specifies a three-component, 48-bit signed
--- floating-point format that has a 16-bit R component in bytes 0..1, a
--- 16-bit G component in bytes 2..3, and a 16-bit B component in bytes
--- 4..5.
-pattern FORMAT_R16G16B16_SFLOAT = Format 90
-
--- | 'FORMAT_R16G16B16A16_UNORM' specifies a four-component, 64-bit unsigned
--- normalized format that has a 16-bit R component in bytes 0..1, a 16-bit
--- G component in bytes 2..3, a 16-bit B component in bytes 4..5, and a
--- 16-bit A component in bytes 6..7.
-pattern FORMAT_R16G16B16A16_UNORM = Format 91
-
--- | 'FORMAT_R16G16B16A16_SNORM' specifies a four-component, 64-bit signed
--- normalized format that has a 16-bit R component in bytes 0..1, a 16-bit
--- G component in bytes 2..3, a 16-bit B component in bytes 4..5, and a
--- 16-bit A component in bytes 6..7.
-pattern FORMAT_R16G16B16A16_SNORM = Format 92
-
--- | 'FORMAT_R16G16B16A16_USCALED' specifies a four-component, 64-bit
--- unsigned scaled integer format that has a 16-bit R component in bytes
--- 0..1, a 16-bit G component in bytes 2..3, a 16-bit B component in bytes
--- 4..5, and a 16-bit A component in bytes 6..7.
-pattern FORMAT_R16G16B16A16_USCALED = Format 93
-
--- | 'FORMAT_R16G16B16A16_SSCALED' specifies a four-component, 64-bit signed
--- scaled integer format that has a 16-bit R component in bytes 0..1, a
--- 16-bit G component in bytes 2..3, a 16-bit B component in bytes 4..5,
--- and a 16-bit A component in bytes 6..7.
-pattern FORMAT_R16G16B16A16_SSCALED = Format 94
-
--- | 'FORMAT_R16G16B16A16_UINT' specifies a four-component, 64-bit unsigned
--- integer format that has a 16-bit R component in bytes 0..1, a 16-bit G
--- component in bytes 2..3, a 16-bit B component in bytes 4..5, and a
--- 16-bit A component in bytes 6..7.
-pattern FORMAT_R16G16B16A16_UINT = Format 95
-
--- | 'FORMAT_R16G16B16A16_SINT' specifies a four-component, 64-bit signed
--- integer format that has a 16-bit R component in bytes 0..1, a 16-bit G
--- component in bytes 2..3, a 16-bit B component in bytes 4..5, and a
--- 16-bit A component in bytes 6..7.
-pattern FORMAT_R16G16B16A16_SINT = Format 96
-
--- | 'FORMAT_R16G16B16A16_SFLOAT' specifies a four-component, 64-bit signed
--- floating-point format that has a 16-bit R component in bytes 0..1, a
--- 16-bit G component in bytes 2..3, a 16-bit B component in bytes 4..5,
--- and a 16-bit A component in bytes 6..7.
-pattern FORMAT_R16G16B16A16_SFLOAT = Format 97
-
--- | 'FORMAT_R32_UINT' specifies a one-component, 32-bit unsigned integer
--- format that has a single 32-bit R component.
-pattern FORMAT_R32_UINT = Format 98
-
--- | 'FORMAT_R32_SINT' specifies a one-component, 32-bit signed integer
--- format that has a single 32-bit R component.
-pattern FORMAT_R32_SINT = Format 99
-
--- | 'FORMAT_R32_SFLOAT' specifies a one-component, 32-bit signed
--- floating-point format that has a single 32-bit R component.
-pattern FORMAT_R32_SFLOAT = Format 100
-
--- | 'FORMAT_R32G32_UINT' specifies a two-component, 64-bit unsigned integer
--- format that has a 32-bit R component in bytes 0..3, and a 32-bit G
--- component in bytes 4..7.
-pattern FORMAT_R32G32_UINT = Format 101
-
--- | 'FORMAT_R32G32_SINT' specifies a two-component, 64-bit signed integer
--- format that has a 32-bit R component in bytes 0..3, and a 32-bit G
--- component in bytes 4..7.
-pattern FORMAT_R32G32_SINT = Format 102
-
--- | 'FORMAT_R32G32_SFLOAT' specifies a two-component, 64-bit signed
--- floating-point format that has a 32-bit R component in bytes 0..3, and a
--- 32-bit G component in bytes 4..7.
-pattern FORMAT_R32G32_SFLOAT = Format 103
-
--- | 'FORMAT_R32G32B32_UINT' specifies a three-component, 96-bit unsigned
--- integer format that has a 32-bit R component in bytes 0..3, a 32-bit G
--- component in bytes 4..7, and a 32-bit B component in bytes 8..11.
-pattern FORMAT_R32G32B32_UINT = Format 104
-
--- | 'FORMAT_R32G32B32_SINT' specifies a three-component, 96-bit signed
--- integer format that has a 32-bit R component in bytes 0..3, a 32-bit G
--- component in bytes 4..7, and a 32-bit B component in bytes 8..11.
-pattern FORMAT_R32G32B32_SINT = Format 105
-
--- | 'FORMAT_R32G32B32_SFLOAT' specifies a three-component, 96-bit signed
--- floating-point format that has a 32-bit R component in bytes 0..3, a
--- 32-bit G component in bytes 4..7, and a 32-bit B component in bytes
--- 8..11.
-pattern FORMAT_R32G32B32_SFLOAT = Format 106
-
--- | 'FORMAT_R32G32B32A32_UINT' specifies a four-component, 128-bit unsigned
--- integer format that has a 32-bit R component in bytes 0..3, a 32-bit G
--- component in bytes 4..7, a 32-bit B component in bytes 8..11, and a
--- 32-bit A component in bytes 12..15.
-pattern FORMAT_R32G32B32A32_UINT = Format 107
-
--- | 'FORMAT_R32G32B32A32_SINT' specifies a four-component, 128-bit signed
--- integer format that has a 32-bit R component in bytes 0..3, a 32-bit G
--- component in bytes 4..7, a 32-bit B component in bytes 8..11, and a
--- 32-bit A component in bytes 12..15.
-pattern FORMAT_R32G32B32A32_SINT = Format 108
-
--- | 'FORMAT_R32G32B32A32_SFLOAT' specifies a four-component, 128-bit signed
--- floating-point format that has a 32-bit R component in bytes 0..3, a
--- 32-bit G component in bytes 4..7, a 32-bit B component in bytes 8..11,
--- and a 32-bit A component in bytes 12..15.
-pattern FORMAT_R32G32B32A32_SFLOAT = Format 109
-
--- | 'FORMAT_R64_UINT' specifies a one-component, 64-bit unsigned integer
--- format that has a single 64-bit R component.
-pattern FORMAT_R64_UINT = Format 110
-
--- | 'FORMAT_R64_SINT' specifies a one-component, 64-bit signed integer
--- format that has a single 64-bit R component.
-pattern FORMAT_R64_SINT = Format 111
-
--- | 'FORMAT_R64_SFLOAT' specifies a one-component, 64-bit signed
--- floating-point format that has a single 64-bit R component.
-pattern FORMAT_R64_SFLOAT = Format 112
-
--- | 'FORMAT_R64G64_UINT' specifies a two-component, 128-bit unsigned integer
--- format that has a 64-bit R component in bytes 0..7, and a 64-bit G
--- component in bytes 8..15.
-pattern FORMAT_R64G64_UINT = Format 113
-
--- | 'FORMAT_R64G64_SINT' specifies a two-component, 128-bit signed integer
--- format that has a 64-bit R component in bytes 0..7, and a 64-bit G
--- component in bytes 8..15.
-pattern FORMAT_R64G64_SINT = Format 114
-
--- | 'FORMAT_R64G64_SFLOAT' specifies a two-component, 128-bit signed
--- floating-point format that has a 64-bit R component in bytes 0..7, and a
--- 64-bit G component in bytes 8..15.
-pattern FORMAT_R64G64_SFLOAT = Format 115
-
--- | 'FORMAT_R64G64B64_UINT' specifies a three-component, 192-bit unsigned
--- integer format that has a 64-bit R component in bytes 0..7, a 64-bit G
--- component in bytes 8..15, and a 64-bit B component in bytes 16..23.
-pattern FORMAT_R64G64B64_UINT = Format 116
-
--- | 'FORMAT_R64G64B64_SINT' specifies a three-component, 192-bit signed
--- integer format that has a 64-bit R component in bytes 0..7, a 64-bit G
--- component in bytes 8..15, and a 64-bit B component in bytes 16..23.
-pattern FORMAT_R64G64B64_SINT = Format 117
-
--- | 'FORMAT_R64G64B64_SFLOAT' specifies a three-component, 192-bit signed
--- floating-point format that has a 64-bit R component in bytes 0..7, a
--- 64-bit G component in bytes 8..15, and a 64-bit B component in bytes
--- 16..23.
-pattern FORMAT_R64G64B64_SFLOAT = Format 118
-
--- | 'FORMAT_R64G64B64A64_UINT' specifies a four-component, 256-bit unsigned
--- integer format that has a 64-bit R component in bytes 0..7, a 64-bit G
--- component in bytes 8..15, a 64-bit B component in bytes 16..23, and a
--- 64-bit A component in bytes 24..31.
-pattern FORMAT_R64G64B64A64_UINT = Format 119
-
--- | 'FORMAT_R64G64B64A64_SINT' specifies a four-component, 256-bit signed
--- integer format that has a 64-bit R component in bytes 0..7, a 64-bit G
--- component in bytes 8..15, a 64-bit B component in bytes 16..23, and a
--- 64-bit A component in bytes 24..31.
-pattern FORMAT_R64G64B64A64_SINT = Format 120
-
--- | 'FORMAT_R64G64B64A64_SFLOAT' specifies a four-component, 256-bit signed
--- floating-point format that has a 64-bit R component in bytes 0..7, a
--- 64-bit G component in bytes 8..15, a 64-bit B component in bytes 16..23,
--- and a 64-bit A component in bytes 24..31.
-pattern FORMAT_R64G64B64A64_SFLOAT = Format 121
-
--- | 'FORMAT_B10G11R11_UFLOAT_PACK32' specifies a three-component, 32-bit
--- 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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#fundamentals-fp10>
--- and
--- <https://registry.khronos.org/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
--- in bits 27..31, a 9-bit B component mantissa in bits 18..26, a 9-bit G
--- component mantissa in bits 9..17, and a 9-bit R component mantissa in
--- bits 0..8.
-pattern FORMAT_E5B9G9R9_UFLOAT_PACK32 = Format 123
-
--- | 'FORMAT_D16_UNORM' specifies a one-component, 16-bit unsigned normalized
--- format that has a single 16-bit depth component.
-pattern FORMAT_D16_UNORM = Format 124
-
--- | 'FORMAT_X8_D24_UNORM_PACK32' specifies a two-component, 32-bit format
--- that has 24 unsigned normalized bits in the depth component and,
--- /optionally/, 8 bits that are unused.
-pattern FORMAT_X8_D24_UNORM_PACK32 = Format 125
-
--- | 'FORMAT_D32_SFLOAT' specifies a one-component, 32-bit signed
--- floating-point format that has 32 bits in the depth component.
-pattern FORMAT_D32_SFLOAT = Format 126
-
--- | 'FORMAT_S8_UINT' specifies a one-component, 8-bit unsigned integer
--- format that has 8 bits in the stencil component.
-pattern FORMAT_S8_UINT = Format 127
-
--- | 'FORMAT_D16_UNORM_S8_UINT' specifies a two-component, 24-bit format that
--- has 16 unsigned normalized bits in the depth component and 8 unsigned
--- integer bits in the stencil component.
-pattern FORMAT_D16_UNORM_S8_UINT = Format 128
-
--- | 'FORMAT_D24_UNORM_S8_UINT' specifies a two-component, 32-bit packed
--- format that has 8 unsigned integer bits in the stencil component, and 24
--- unsigned normalized bits in the depth component.
-pattern FORMAT_D24_UNORM_S8_UINT = Format 129
-
--- | 'FORMAT_D32_SFLOAT_S8_UINT' specifies a two-component format that has 32
--- signed float bits in the depth component and 8 unsigned integer bits in
--- the stencil component. There are /optionally/ 24 bits that are unused.
-pattern FORMAT_D32_SFLOAT_S8_UINT = Format 130
-
--- | 'FORMAT_BC1_RGB_UNORM_BLOCK' specifies a three-component,
--- block-compressed format where each 64-bit compressed texel block encodes
--- a 4×4 rectangle of unsigned normalized RGB texel data. This format has
--- no alpha and is considered opaque.
-pattern FORMAT_BC1_RGB_UNORM_BLOCK = Format 131
-
--- | 'FORMAT_BC1_RGB_SRGB_BLOCK' specifies a three-component,
--- block-compressed format where each 64-bit compressed texel block encodes
--- a 4×4 rectangle of unsigned normalized RGB texel data with sRGB
--- nonlinear encoding. This format has no alpha and is considered opaque.
-pattern FORMAT_BC1_RGB_SRGB_BLOCK = Format 132
-
--- | 'FORMAT_BC1_RGBA_UNORM_BLOCK' specifies a four-component,
--- block-compressed format where each 64-bit compressed texel block encodes
--- a 4×4 rectangle of unsigned normalized RGB texel data, and provides 1
--- bit of alpha.
-pattern FORMAT_BC1_RGBA_UNORM_BLOCK = Format 133
-
--- | 'FORMAT_BC1_RGBA_SRGB_BLOCK' specifies a four-component,
--- block-compressed format where each 64-bit compressed texel block encodes
--- a 4×4 rectangle of unsigned normalized RGB texel data with sRGB
--- nonlinear encoding, and provides 1 bit of alpha.
-pattern FORMAT_BC1_RGBA_SRGB_BLOCK = Format 134
-
--- | 'FORMAT_BC2_UNORM_BLOCK' specifies a four-component, block-compressed
--- format where each 128-bit compressed texel block encodes a 4×4 rectangle
--- of unsigned normalized RGBA texel data with the first 64 bits encoding
--- alpha values followed by 64 bits encoding RGB values.
-pattern FORMAT_BC2_UNORM_BLOCK = Format 135
-
--- | 'FORMAT_BC2_SRGB_BLOCK' specifies a four-component, block-compressed
--- format where each 128-bit compressed texel block encodes a 4×4 rectangle
--- of unsigned normalized RGBA texel data with the first 64 bits encoding
--- alpha values followed by 64 bits encoding RGB values with sRGB nonlinear
--- encoding.
-pattern FORMAT_BC2_SRGB_BLOCK = Format 136
-
--- | 'FORMAT_BC3_UNORM_BLOCK' specifies a four-component, block-compressed
--- format where each 128-bit compressed texel block encodes a 4×4 rectangle
--- of unsigned normalized RGBA texel data with the first 64 bits encoding
--- alpha values followed by 64 bits encoding RGB values.
-pattern FORMAT_BC3_UNORM_BLOCK = Format 137
-
--- | 'FORMAT_BC3_SRGB_BLOCK' specifies a four-component, block-compressed
--- format where each 128-bit compressed texel block encodes a 4×4 rectangle
--- of unsigned normalized RGBA texel data with the first 64 bits encoding
--- alpha values followed by 64 bits encoding RGB values with sRGB nonlinear
--- encoding.
-pattern FORMAT_BC3_SRGB_BLOCK = Format 138
-
--- | 'FORMAT_BC4_UNORM_BLOCK' specifies a one-component, block-compressed
--- format where each 64-bit compressed texel block encodes a 4×4 rectangle
--- of unsigned normalized red texel data.
-pattern FORMAT_BC4_UNORM_BLOCK = Format 139
-
--- | 'FORMAT_BC4_SNORM_BLOCK' specifies a one-component, block-compressed
--- format where each 64-bit compressed texel block encodes a 4×4 rectangle
--- of signed normalized red texel data.
-pattern FORMAT_BC4_SNORM_BLOCK = Format 140
-
--- | 'FORMAT_BC5_UNORM_BLOCK' specifies a two-component, block-compressed
--- format where each 128-bit compressed texel block encodes a 4×4 rectangle
--- of unsigned normalized RG texel data with the first 64 bits encoding red
--- values followed by 64 bits encoding green values.
-pattern FORMAT_BC5_UNORM_BLOCK = Format 141
-
--- | 'FORMAT_BC5_SNORM_BLOCK' specifies a two-component, block-compressed
--- format where each 128-bit compressed texel block encodes a 4×4 rectangle
--- of signed normalized RG texel data with the first 64 bits encoding red
--- values followed by 64 bits encoding green values.
-pattern FORMAT_BC5_SNORM_BLOCK = Format 142
-
--- | 'FORMAT_BC6H_UFLOAT_BLOCK' specifies a three-component, block-compressed
--- format where each 128-bit compressed texel block encodes a 4×4 rectangle
--- of unsigned floating-point RGB texel data.
-pattern FORMAT_BC6H_UFLOAT_BLOCK = Format 143
-
--- | 'FORMAT_BC6H_SFLOAT_BLOCK' specifies a three-component, block-compressed
--- format where each 128-bit compressed texel block encodes a 4×4 rectangle
--- of signed floating-point RGB texel data.
-pattern FORMAT_BC6H_SFLOAT_BLOCK = Format 144
-
--- | 'FORMAT_BC7_UNORM_BLOCK' specifies a four-component, block-compressed
--- format where each 128-bit compressed texel block encodes a 4×4 rectangle
--- of unsigned normalized RGBA texel data.
-pattern FORMAT_BC7_UNORM_BLOCK = Format 145
-
--- | 'FORMAT_BC7_SRGB_BLOCK' specifies a four-component, block-compressed
--- format where each 128-bit compressed texel block encodes a 4×4 rectangle
--- of unsigned normalized RGBA texel data with sRGB nonlinear encoding
--- applied to the RGB components.
-pattern FORMAT_BC7_SRGB_BLOCK = Format 146
-
--- | 'FORMAT_ETC2_R8G8B8_UNORM_BLOCK' specifies a three-component, ETC2
--- compressed format where each 64-bit compressed texel block encodes a 4×4
--- rectangle of unsigned normalized RGB texel data. This format has no
--- alpha and is considered opaque.
-pattern FORMAT_ETC2_R8G8B8_UNORM_BLOCK = Format 147
-
--- | 'FORMAT_ETC2_R8G8B8_SRGB_BLOCK' specifies a three-component, ETC2
--- compressed format where each 64-bit compressed texel block encodes a 4×4
--- rectangle of unsigned normalized RGB texel data with sRGB nonlinear
--- encoding. This format has no alpha and is considered opaque.
-pattern FORMAT_ETC2_R8G8B8_SRGB_BLOCK = Format 148
-
--- | 'FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK' specifies a four-component, ETC2
--- compressed format where each 64-bit compressed texel block encodes a 4×4
--- rectangle of unsigned normalized RGB texel data, and provides 1 bit of
--- alpha.
-pattern FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK = Format 149
-
--- | 'FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK' specifies a four-component, ETC2
--- compressed format where each 64-bit compressed texel block encodes a 4×4
--- rectangle of unsigned normalized RGB texel data with sRGB nonlinear
--- encoding, and provides 1 bit of alpha.
-pattern FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK = Format 150
-
--- | 'FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK' specifies a four-component, ETC2
--- compressed format where each 128-bit compressed texel block encodes a
--- 4×4 rectangle of unsigned normalized RGBA texel data with the first 64
--- bits encoding alpha values followed by 64 bits encoding RGB values.
-pattern FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK = Format 151
-
--- | 'FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK' specifies a four-component, ETC2
--- compressed format where each 128-bit compressed texel block encodes a
--- 4×4 rectangle of unsigned normalized RGBA texel data with the first 64
--- bits encoding alpha values followed by 64 bits encoding RGB values with
--- sRGB nonlinear encoding applied.
-pattern FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK = Format 152
-
--- | 'FORMAT_EAC_R11_UNORM_BLOCK' specifies a one-component, ETC2 compressed
--- format where each 64-bit compressed texel block encodes a 4×4 rectangle
--- of unsigned normalized red texel data.
-pattern FORMAT_EAC_R11_UNORM_BLOCK = Format 153
-
--- | 'FORMAT_EAC_R11_SNORM_BLOCK' specifies a one-component, ETC2 compressed
--- format where each 64-bit compressed texel block encodes a 4×4 rectangle
--- of signed normalized red texel data.
-pattern FORMAT_EAC_R11_SNORM_BLOCK = Format 154
-
--- | 'FORMAT_EAC_R11G11_UNORM_BLOCK' specifies a two-component, ETC2
--- compressed format where each 128-bit compressed texel block encodes a
--- 4×4 rectangle of unsigned normalized RG texel data with the first 64
--- bits encoding red values followed by 64 bits encoding green values.
-pattern FORMAT_EAC_R11G11_UNORM_BLOCK = Format 155
-
--- | 'FORMAT_EAC_R11G11_SNORM_BLOCK' specifies a two-component, ETC2
--- compressed format where each 128-bit compressed texel block encodes a
--- 4×4 rectangle of signed normalized RG texel data with the first 64 bits
--- encoding red values followed by 64 bits encoding green values.
-pattern FORMAT_EAC_R11G11_SNORM_BLOCK = Format 156
-
--- | 'FORMAT_ASTC_4x4_UNORM_BLOCK' specifies a four-component, ASTC
--- compressed format where each 128-bit compressed texel block encodes a
--- 4×4 rectangle of unsigned normalized RGBA texel data.
-pattern FORMAT_ASTC_4x4_UNORM_BLOCK = Format 157
-
--- | 'FORMAT_ASTC_4x4_SRGB_BLOCK' specifies a four-component, ASTC compressed
--- format where each 128-bit compressed texel block encodes a 4×4 rectangle
--- of unsigned normalized RGBA texel data with sRGB nonlinear encoding
--- applied to the RGB components.
-pattern FORMAT_ASTC_4x4_SRGB_BLOCK = Format 158
-
--- | 'FORMAT_ASTC_5x4_UNORM_BLOCK' specifies a four-component, ASTC
--- compressed format where each 128-bit compressed texel block encodes a
--- 5×4 rectangle of unsigned normalized RGBA texel data.
-pattern FORMAT_ASTC_5x4_UNORM_BLOCK = Format 159
-
--- | 'FORMAT_ASTC_5x4_SRGB_BLOCK' specifies a four-component, ASTC compressed
--- format where each 128-bit compressed texel block encodes a 5×4 rectangle
--- of unsigned normalized RGBA texel data with sRGB nonlinear encoding
--- applied to the RGB components.
-pattern FORMAT_ASTC_5x4_SRGB_BLOCK = Format 160
-
--- | 'FORMAT_ASTC_5x5_UNORM_BLOCK' specifies a four-component, ASTC
--- compressed format where each 128-bit compressed texel block encodes a
--- 5×5 rectangle of unsigned normalized RGBA texel data.
-pattern FORMAT_ASTC_5x5_UNORM_BLOCK = Format 161
-
--- | 'FORMAT_ASTC_5x5_SRGB_BLOCK' specifies a four-component, ASTC compressed
--- format where each 128-bit compressed texel block encodes a 5×5 rectangle
--- of unsigned normalized RGBA texel data with sRGB nonlinear encoding
--- applied to the RGB components.
-pattern FORMAT_ASTC_5x5_SRGB_BLOCK = Format 162
-
--- | 'FORMAT_ASTC_6x5_UNORM_BLOCK' specifies a four-component, ASTC
--- compressed format where each 128-bit compressed texel block encodes a
--- 6×5 rectangle of unsigned normalized RGBA texel data.
-pattern FORMAT_ASTC_6x5_UNORM_BLOCK = Format 163
-
--- | 'FORMAT_ASTC_6x5_SRGB_BLOCK' specifies a four-component, ASTC compressed
--- format where each 128-bit compressed texel block encodes a 6×5 rectangle
--- of unsigned normalized RGBA texel data with sRGB nonlinear encoding
--- applied to the RGB components.
-pattern FORMAT_ASTC_6x5_SRGB_BLOCK = Format 164
-
--- | 'FORMAT_ASTC_6x6_UNORM_BLOCK' specifies a four-component, ASTC
--- compressed format where each 128-bit compressed texel block encodes a
--- 6×6 rectangle of unsigned normalized RGBA texel data.
-pattern FORMAT_ASTC_6x6_UNORM_BLOCK = Format 165
-
--- | 'FORMAT_ASTC_6x6_SRGB_BLOCK' specifies a four-component, ASTC compressed
--- format where each 128-bit compressed texel block encodes a 6×6 rectangle
--- of unsigned normalized RGBA texel data with sRGB nonlinear encoding
--- applied to the RGB components.
-pattern FORMAT_ASTC_6x6_SRGB_BLOCK = Format 166
-
--- | 'FORMAT_ASTC_8x5_UNORM_BLOCK' specifies a four-component, ASTC
--- compressed format where each 128-bit compressed texel block encodes an
--- 8×5 rectangle of unsigned normalized RGBA texel data.
-pattern FORMAT_ASTC_8x5_UNORM_BLOCK = Format 167
-
--- | 'FORMAT_ASTC_8x5_SRGB_BLOCK' specifies a four-component, ASTC compressed
--- format where each 128-bit compressed texel block encodes an 8×5
--- rectangle of unsigned normalized RGBA texel data with sRGB nonlinear
--- encoding applied to the RGB components.
-pattern FORMAT_ASTC_8x5_SRGB_BLOCK = Format 168
-
--- | 'FORMAT_ASTC_8x6_UNORM_BLOCK' specifies a four-component, ASTC
--- compressed format where each 128-bit compressed texel block encodes an
--- 8×6 rectangle of unsigned normalized RGBA texel data.
-pattern FORMAT_ASTC_8x6_UNORM_BLOCK = Format 169
-
--- | 'FORMAT_ASTC_8x6_SRGB_BLOCK' specifies a four-component, ASTC compressed
--- format where each 128-bit compressed texel block encodes an 8×6
--- rectangle of unsigned normalized RGBA texel data with sRGB nonlinear
--- encoding applied to the RGB components.
-pattern FORMAT_ASTC_8x6_SRGB_BLOCK = Format 170
-
--- | 'FORMAT_ASTC_8x8_UNORM_BLOCK' specifies a four-component, ASTC
--- compressed format where each 128-bit compressed texel block encodes an
--- 8×8 rectangle of unsigned normalized RGBA texel data.
-pattern FORMAT_ASTC_8x8_UNORM_BLOCK = Format 171
-
--- | 'FORMAT_ASTC_8x8_SRGB_BLOCK' specifies a four-component, ASTC compressed
--- format where each 128-bit compressed texel block encodes an 8×8
--- rectangle of unsigned normalized RGBA texel data with sRGB nonlinear
--- encoding applied to the RGB components.
-pattern FORMAT_ASTC_8x8_SRGB_BLOCK = Format 172
-
--- | 'FORMAT_ASTC_10x5_UNORM_BLOCK' specifies a four-component, ASTC
--- compressed format where each 128-bit compressed texel block encodes a
--- 10×5 rectangle of unsigned normalized RGBA texel data.
-pattern FORMAT_ASTC_10x5_UNORM_BLOCK = Format 173
-
--- | 'FORMAT_ASTC_10x5_SRGB_BLOCK' specifies a four-component, ASTC
--- compressed format where each 128-bit compressed texel block encodes a
--- 10×5 rectangle of unsigned normalized RGBA texel data with sRGB
--- nonlinear encoding applied to the RGB components.
-pattern FORMAT_ASTC_10x5_SRGB_BLOCK = Format 174
-
--- | 'FORMAT_ASTC_10x6_UNORM_BLOCK' specifies a four-component, ASTC
--- compressed format where each 128-bit compressed texel block encodes a
--- 10×6 rectangle of unsigned normalized RGBA texel data.
-pattern FORMAT_ASTC_10x6_UNORM_BLOCK = Format 175
-
--- | 'FORMAT_ASTC_10x6_SRGB_BLOCK' specifies a four-component, ASTC
--- compressed format where each 128-bit compressed texel block encodes a
--- 10×6 rectangle of unsigned normalized RGBA texel data with sRGB
--- nonlinear encoding applied to the RGB components.
-pattern FORMAT_ASTC_10x6_SRGB_BLOCK = Format 176
-
--- | 'FORMAT_ASTC_10x8_UNORM_BLOCK' specifies a four-component, ASTC
--- compressed format where each 128-bit compressed texel block encodes a
--- 10×8 rectangle of unsigned normalized RGBA texel data.
-pattern FORMAT_ASTC_10x8_UNORM_BLOCK = Format 177
-
--- | 'FORMAT_ASTC_10x8_SRGB_BLOCK' specifies a four-component, ASTC
--- compressed format where each 128-bit compressed texel block encodes a
--- 10×8 rectangle of unsigned normalized RGBA texel data with sRGB
--- nonlinear encoding applied to the RGB components.
-pattern FORMAT_ASTC_10x8_SRGB_BLOCK = Format 178
-
--- | 'FORMAT_ASTC_10x10_UNORM_BLOCK' specifies a four-component, ASTC
--- compressed format where each 128-bit compressed texel block encodes a
--- 10×10 rectangle of unsigned normalized RGBA texel data.
-pattern FORMAT_ASTC_10x10_UNORM_BLOCK = Format 179
-
--- | 'FORMAT_ASTC_10x10_SRGB_BLOCK' specifies a four-component, ASTC
--- compressed format where each 128-bit compressed texel block encodes a
--- 10×10 rectangle of unsigned normalized RGBA texel data with sRGB
--- nonlinear encoding applied to the RGB components.
-pattern FORMAT_ASTC_10x10_SRGB_BLOCK = Format 180
-
--- | 'FORMAT_ASTC_12x10_UNORM_BLOCK' specifies a four-component, ASTC
--- compressed format where each 128-bit compressed texel block encodes a
--- 12×10 rectangle of unsigned normalized RGBA texel data.
-pattern FORMAT_ASTC_12x10_UNORM_BLOCK = Format 181
-
--- | 'FORMAT_ASTC_12x10_SRGB_BLOCK' specifies a four-component, ASTC
--- compressed format where each 128-bit compressed texel block encodes a
--- 12×10 rectangle of unsigned normalized RGBA texel data with sRGB
--- nonlinear encoding applied to the RGB components.
-pattern FORMAT_ASTC_12x10_SRGB_BLOCK = Format 182
-
--- | 'FORMAT_ASTC_12x12_UNORM_BLOCK' specifies a four-component, ASTC
--- compressed format where each 128-bit compressed texel block encodes a
--- 12×12 rectangle of unsigned normalized RGBA texel data.
-pattern FORMAT_ASTC_12x12_UNORM_BLOCK = Format 183
-
--- | 'FORMAT_ASTC_12x12_SRGB_BLOCK' specifies a four-component, ASTC
--- compressed format where each 128-bit compressed texel block encodes a
--- 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_A8_UNORM_KHR' specifies a one-component, 8-bit unsigned
--- normalized format that has a single 8-bit A component.
-pattern FORMAT_A8_UNORM_KHR = Format 1000470001
-
--- | 'FORMAT_A1B5G5R5_UNORM_PACK16_KHR' specifies a four-component, 16-bit
--- packed unsigned normalized format that has a 1-bit A component in bit
--- 15, a 5-bit B component in bits 10..14, a 5-bit G component in bits
--- 5..9, and a 5-bit R component in bits 0..4.
-pattern FORMAT_A1B5G5R5_UNORM_PACK16_KHR = Format 1000470000
-
--- | 'FORMAT_R16G16_SFIXED5_NV' specifies a two-component, 16-bit signed
--- fixed-point format with linear encoding. The components are signed
--- two’s-complement integers where the most significant bit specifies the
--- sign bit, the next 10 bits specify the integer value, and the last 5
--- bits represent the fractional value. The signed 16-bit values /can/ be
--- converted to floats in the range [-1024,1023.96875] by dividing the
--- value by 32 (25).
-pattern FORMAT_R16G16_SFIXED5_NV = Format 1000464000
-
--- | '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
--- encoding applied to the RGB components.
-pattern FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG = Format 1000054007
-
--- | 'FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG' specifies a four-component, PVRTC
--- compressed format where each 64-bit compressed texel block encodes an
--- 8×4 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear
--- encoding applied to the RGB components.
-pattern FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG = Format 1000054006
-
--- | 'FORMAT_PVRTC1_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
--- encoding applied to the RGB components.
-pattern FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG = Format 1000054005
-
--- | 'FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG' specifies a four-component, PVRTC
--- compressed format where each 64-bit compressed texel block encodes an
--- 8×4 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear
--- encoding applied to the RGB components.
-pattern FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG = Format 1000054004
-
--- | 'FORMAT_PVRTC2_4BPP_UNORM_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.
-pattern FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG = Format 1000054003
-
--- | 'FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG' specifies a four-component, PVRTC
--- compressed format where each 64-bit compressed texel block encodes an
--- 8×4 rectangle of unsigned normalized RGBA texel data.
-pattern FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG = Format 1000054002
-
--- | 'FORMAT_PVRTC1_4BPP_UNORM_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.
-pattern FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG = Format 1000054001
-
--- | 'FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG' specifies a four-component, PVRTC
--- 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
--- 16-bit R component in each 16-bit word of plane 2. Each plane has 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,
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for
--- the B plane, and
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT' for
--- the R plane.
-pattern FORMAT_G16_B16_R16_3PLANE_444_UNORM = Format 1000156033
-
--- | 'FORMAT_G16_B16R16_2PLANE_422_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. The horizontal dimension of the BR plane is
--- halved relative to the image dimensions, and each R and B value is
--- shared with the G components for which
--- \(\left\lfloor i_G \times 0.5 \right\rfloor = i_B = i_R\). The location
--- of each plane when this image is in linear layout can be determined via
--- 'Vulkan.Core10.Image.getImageSubresourceLayout', using
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT' for
--- the G plane, and
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for
--- the BR plane. This format only supports images with a width that is a
--- multiple of two.
-pattern FORMAT_G16_B16R16_2PLANE_422_UNORM = Format 1000156032
-
--- | 'FORMAT_G16_B16_R16_3PLANE_422_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
--- 16-bit R component in each 16-bit word of plane 2. The horizontal
--- dimension of the R and B plane is halved relative to the image
--- dimensions, and each R and B value is shared with the G components for
--- which \(\left\lfloor i_G \times 0.5 \right\rfloor = i_B =
--- i_R\). The location of each plane when this image is in linear layout
--- can be determined via 'Vulkan.Core10.Image.getImageSubresourceLayout',
--- using 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'
--- for the G plane,
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for
--- the B plane, and
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT' for
--- the R plane. This format only supports images with a width that is a
--- multiple of two.
-pattern FORMAT_G16_B16_R16_3PLANE_422_UNORM = Format 1000156031
-
--- | 'FORMAT_G16_B16R16_2PLANE_420_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. The horizontal and vertical dimensions of the
--- BR plane are halved relative to the image dimensions, and each R and B
--- value is shared with the G components for which
--- \(\left\lfloor i_G \times 0.5
--- \right\rfloor = i_B = i_R\) and \(\left\lfloor j_G \times 0.5
--- \right\rfloor = j_B = j_R\). The location of each plane when this image
--- is in linear layout can be determined via
--- 'Vulkan.Core10.Image.getImageSubresourceLayout', using
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT' for
--- the G plane, and
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for
--- the BR plane. This format only supports images with a width and height
--- that is a multiple of two.
-pattern FORMAT_G16_B16R16_2PLANE_420_UNORM = Format 1000156030
-
--- | 'FORMAT_G16_B16_R16_3PLANE_420_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
--- 16-bit R component in each 16-bit word of plane 2. The horizontal and
--- vertical dimensions of the R and B planes are halved relative to the
--- image dimensions, and each R and B component is shared with the G
--- components for which \(\left\lfloor i_G \times 0.5
--- \right\rfloor = i_B = i_R\) and \(\left\lfloor j_G \times 0.5
--- \right\rfloor = j_B = j_R\). The location of each plane when this image
--- 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,
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for
--- the B plane, and
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT' for
--- the R plane. This format only supports images with a width and height
--- that is a multiple of two.
-pattern FORMAT_G16_B16_R16_3PLANE_420_UNORM = Format 1000156029
-
--- | 'FORMAT_B16G16R16G16_422_UNORM' specifies a four-component, 64-bit
--- format containing a pair of G components, an R component, and a B
--- component, collectively encoding a 2×1 rectangle of unsigned normalized
--- RGB texel data. One G value is present at each /i/ coordinate, with the
--- B and R values shared across both G values and thus recorded at half the
--- horizontal resolution of the image. This format has a 16-bit B component
--- in the word in bytes 0..1, a 16-bit G component for the even /i/
--- coordinate in the word in bytes 2..3, a 16-bit R component in the word
--- in bytes 4..5, and a 16-bit G component for the odd /i/ coordinate in
--- the word in bytes 6..7. This format only supports images with a width
--- that is a multiple of two. For the purposes of the constraints on copy
--- extents, this format is treated as a compressed format with a 2×1
--- compressed texel block.
-pattern FORMAT_B16G16R16G16_422_UNORM = Format 1000156028
-
--- | 'FORMAT_G16B16G16R16_422_UNORM' specifies a four-component, 64-bit
--- format containing a pair of G components, an R component, and a B
--- component, collectively encoding a 2×1 rectangle of unsigned normalized
--- RGB texel data. One G value is present at each /i/ coordinate, with the
--- B and R values shared across both G values and thus recorded at half the
--- horizontal resolution of the image. This format has a 16-bit G component
--- for the even /i/ coordinate in the word in bytes 0..1, a 16-bit B
--- component in the word in bytes 2..3, a 16-bit G component for the odd
--- /i/ coordinate in the word in bytes 4..5, and a 16-bit R component in
--- the word in bytes 6..7. This format only supports images with a width
--- that is a multiple of two. For the purposes of the constraints on copy
--- extents, this format is treated as a compressed format with a 2×1
--- compressed texel block.
-pattern FORMAT_G16B16G16R16_422_UNORM = Format 1000156027
-
--- | 'FORMAT_G12X4_B12X4_R12X4_3PLANE_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, a 12-bit B component
--- in the top 12 bits of each 16-bit word of plane 1, and a 12-bit R
--- component in the top 12 bits of each 16-bit word of plane 2, with the
--- bottom 4 bits of each word unused. Each plane has 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,
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for
--- the B plane, and
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT' for
--- the R plane.
-pattern FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 = Format 1000156026
-
--- | 'FORMAT_G12X4_B12X4R12X4_2PLANE_422_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, with the bottom 4 bits of each word unused. The
--- horizontal dimension of the BR plane is halved relative to the image
--- dimensions, and each R and B value is shared with the G components for
--- which \(\left\lfloor i_G \times 0.5 \right\rfloor = i_B = i_R\). The
--- location of each plane when this image is in linear layout can be
--- determined via 'Vulkan.Core10.Image.getImageSubresourceLayout', using
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT' for
--- the G plane, and
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for
--- the BR plane. This format only supports images with a width that is a
--- multiple of two.
-pattern FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 = Format 1000156025
-
--- | 'FORMAT_G12X4_B12X4_R12X4_3PLANE_422_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, a 12-bit B component
--- in the top 12 bits of each 16-bit word of plane 1, and a 12-bit R
--- component in the top 12 bits of each 16-bit word of plane 2, with the
--- bottom 4 bits of each word unused. The horizontal dimension of the R and
--- B plane is halved relative to the image dimensions, and each R and B
--- value is shared with the G components for which
--- \(\left\lfloor i_G \times 0.5 \right\rfloor = i_B =
--- i_R\). The location of each plane when this image is in linear layout
--- can be determined via 'Vulkan.Core10.Image.getImageSubresourceLayout',
--- using 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'
--- for the G plane,
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for
--- the B plane, and
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT' for
--- the R plane. This format only supports images with a width that is a
--- multiple of two.
-pattern FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 = Format 1000156024
-
--- | 'FORMAT_G12X4_B12X4R12X4_2PLANE_420_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, with the bottom 4 bits of each word unused. The
--- horizontal and vertical dimensions of the BR plane are halved relative
--- to the image dimensions, and each R and B value is shared with the G
--- components for which \(\left\lfloor i_G \times 0.5
--- \right\rfloor = i_B = i_R\) and \(\left\lfloor j_G \times 0.5
--- \right\rfloor = j_B = j_R\). The location of each plane when this image
--- is in linear layout can be determined via
--- 'Vulkan.Core10.Image.getImageSubresourceLayout', using
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT' for
--- the G plane, and
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for
--- the BR plane. This format only supports images with a width and height
--- that is a multiple of two.
-pattern FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 = Format 1000156023
-
--- | 'FORMAT_G12X4_B12X4_R12X4_3PLANE_420_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, a 12-bit B component
--- in the top 12 bits of each 16-bit word of plane 1, and a 12-bit R
--- component in the top 12 bits of each 16-bit word of plane 2, with the
--- bottom 4 bits of each word unused. The horizontal and vertical
--- dimensions of the R and B planes are halved relative to the image
--- dimensions, and each R and B component is shared with the G components
--- for which \(\left\lfloor i_G \times 0.5
--- \right\rfloor = i_B = i_R\) and \(\left\lfloor j_G \times 0.5
--- \right\rfloor = j_B = j_R\). The location of each plane when this image
--- 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,
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for
--- the B plane, and
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT' for
--- the R plane. This format only supports images with a width and height
--- that is a multiple of two.
-pattern FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 = Format 1000156022
-
--- | 'FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16' specifies a
--- four-component, 64-bit format containing a pair of G components, an R
--- component, and a B component, collectively encoding a 2×1 rectangle of
--- unsigned normalized RGB texel data. One G value is present at each /i/
--- coordinate, with the B and R values shared across both G values and thus
--- recorded at half the horizontal resolution of the image. This format has
--- a 12-bit B component in the top 12 bits of the word in bytes 0..1, a
--- 12-bit G component for the even /i/ coordinate in the top 12 bits of the
--- word in bytes 2..3, a 12-bit R component in the top 12 bits of the word
--- in bytes 4..5, and a 12-bit G component for the odd /i/ coordinate in
--- the top 12 bits of the word in bytes 6..7, with the bottom 4 bits of
--- each word unused. This format only supports images with a width that is
--- a multiple of two. For the purposes of the constraints on copy extents,
--- this format is treated as a compressed format with a 2×1 compressed
--- texel block.
-pattern FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 = Format 1000156021
-
--- | 'FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16' specifies a
--- four-component, 64-bit format containing a pair of G components, an R
--- component, and a B component, collectively encoding a 2×1 rectangle of
--- unsigned normalized RGB texel data. One G value is present at each /i/
--- coordinate, with the B and R values shared across both G values and thus
--- recorded at half the horizontal resolution of the image. This format has
--- a 12-bit G component for the even /i/ coordinate in the top 12 bits of
--- the word in bytes 0..1, a 12-bit B component in the top 12 bits of the
--- word in bytes 2..3, a 12-bit G component for the odd /i/ coordinate in
--- the top 12 bits of the word in bytes 4..5, and a 12-bit R component in
--- the top 12 bits of the word in bytes 6..7, with the bottom 4 bits of
--- each word unused. This format only supports images with a width that is
--- a multiple of two. For the purposes of the constraints on copy extents,
--- this format is treated as a compressed format with a 2×1 compressed
--- texel block.
-pattern FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 = Format 1000156020
-
--- | 'FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16' specifies a four-component,
--- 64-bit unsigned normalized format that has a 12-bit R component in the
--- top 12 bits of the word in bytes 0..1, a 12-bit G component in the top
--- 12 bits of the word in bytes 2..3, a 12-bit B component in the top 12
--- bits of the word in bytes 4..5, and a 12-bit A component in the top 12
--- bits of the word in bytes 6..7, with the bottom 4 bits of each word
--- unused.
-pattern FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 = Format 1000156019
-
--- | 'FORMAT_R12X4G12X4_UNORM_2PACK16' specifies a two-component, 32-bit
--- unsigned normalized format that has a 12-bit R component in the top 12
--- bits of the word in bytes 0..1, and a 12-bit G component in the top 12
--- bits of the word in bytes 2..3, with the bottom 4 bits of each word
--- unused.
-pattern FORMAT_R12X4G12X4_UNORM_2PACK16 = Format 1000156018
-
--- | 'FORMAT_R12X4_UNORM_PACK16' specifies a one-component, 16-bit unsigned
--- normalized format that has a single 12-bit R component in the top 12
--- bits of a 16-bit word, with the bottom 4 bits unused.
-pattern FORMAT_R12X4_UNORM_PACK16 = Format 1000156017
-
--- | 'FORMAT_G10X6_B10X6_R10X6_3PLANE_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, a 10-bit B component
--- in the top 10 bits of each 16-bit word of plane 1, and a 10-bit R
--- component in the top 10 bits of each 16-bit word of plane 2, with the
--- bottom 6 bits of each word unused. Each plane has 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,
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for
--- the B plane, and
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT' for
--- the R plane.
-pattern FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 = Format 1000156016
-
--- | 'FORMAT_G10X6_B10X6R10X6_2PLANE_422_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, with the bottom 6 bits of each word unused. The
--- horizontal dimension of the BR plane is halved relative to the image
--- dimensions, and each R and B value is shared with the G components for
--- which \(\left\lfloor i_G \times 0.5 \right\rfloor = i_B = i_R\). The
--- location of each plane when this image is in linear layout can be
--- determined via 'Vulkan.Core10.Image.getImageSubresourceLayout', using
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT' for
--- the G plane, and
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for
--- the BR plane. This format only supports images with a width that is a
--- multiple of two.
-pattern FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 = Format 1000156015
-
--- | 'FORMAT_G10X6_B10X6_R10X6_3PLANE_422_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, a 10-bit B component
--- in the top 10 bits of each 16-bit word of plane 1, and a 10-bit R
--- component in the top 10 bits of each 16-bit word of plane 2, with the
--- bottom 6 bits of each word unused. The horizontal dimension of the R and
--- B plane is halved relative to the image dimensions, and each R and B
--- value is shared with the G components for which
--- \(\left\lfloor i_G \times 0.5 \right\rfloor = i_B =
--- i_R\). The location of each plane when this image is in linear layout
--- can be determined via 'Vulkan.Core10.Image.getImageSubresourceLayout',
--- using 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'
--- for the G plane,
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for
--- the B plane, and
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT' for
--- the R plane. This format only supports images with a width that is a
--- multiple of two.
-pattern FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 = Format 1000156014
-
--- | 'FORMAT_G10X6_B10X6R10X6_2PLANE_420_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, with the bottom 6 bits of each word unused. The
--- horizontal and vertical dimensions of the BR plane are halved relative
--- to the image dimensions, and each R and B value is shared with the G
--- components for which \(\left\lfloor i_G \times 0.5
--- \right\rfloor = i_B = i_R\) and \(\left\lfloor j_G \times 0.5
--- \right\rfloor = j_B = j_R\). The location of each plane when this image
--- is in linear layout can be determined via
--- 'Vulkan.Core10.Image.getImageSubresourceLayout', using
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT' for
--- the G plane, and
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for
--- the BR plane. This format only supports images with a width and height
--- that is a multiple of two.
-pattern FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 = Format 1000156013
-
--- | 'FORMAT_G10X6_B10X6_R10X6_3PLANE_420_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, a 10-bit B component
--- in the top 10 bits of each 16-bit word of plane 1, and a 10-bit R
--- component in the top 10 bits of each 16-bit word of plane 2, with the
--- bottom 6 bits of each word unused. The horizontal and vertical
--- dimensions of the R and B planes are halved relative to the image
--- dimensions, and each R and B component is shared with the G components
--- for which \(\left\lfloor i_G \times 0.5
--- \right\rfloor = i_B = i_R\) and \(\left\lfloor j_G \times 0.5
--- \right\rfloor = j_B = j_R\). The location of each plane when this image
--- 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,
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for
--- the B plane, and
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT' for
--- the R plane. This format only supports images with a width and height
--- that is a multiple of two.
-pattern FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 = Format 1000156012
-
--- | 'FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16' specifies a
--- four-component, 64-bit format containing a pair of G components, an R
--- component, and a B component, collectively encoding a 2×1 rectangle of
--- unsigned normalized RGB texel data. One G value is present at each /i/
--- coordinate, with the B and R values shared across both G values and thus
--- recorded at half the horizontal resolution of the image. This format has
--- a 10-bit B component in the top 10 bits of the word in bytes 0..1, a
--- 10-bit G component for the even /i/ coordinate in the top 10 bits of the
--- word in bytes 2..3, a 10-bit R component in the top 10 bits of the word
--- in bytes 4..5, and a 10-bit G component for the odd /i/ coordinate in
--- the top 10 bits of the word in bytes 6..7, with the bottom 6 bits of
--- each word unused. This format only supports images with a width that is
--- a multiple of two. For the purposes of the constraints on copy extents,
--- this format is treated as a compressed format with a 2×1 compressed
--- texel block.
-pattern FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 = Format 1000156011
-
--- | 'FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16' specifies a
--- four-component, 64-bit format containing a pair of G components, an R
--- component, and a B component, collectively encoding a 2×1 rectangle of
--- unsigned normalized RGB texel data. One G value is present at each /i/
--- coordinate, with the B and R values shared across both G values and thus
--- recorded at half the horizontal resolution of the image. This format has
--- a 10-bit G component for the even /i/ coordinate in the top 10 bits of
--- the word in bytes 0..1, a 10-bit B component in the top 10 bits of the
--- word in bytes 2..3, a 10-bit G component for the odd /i/ coordinate in
--- the top 10 bits of the word in bytes 4..5, and a 10-bit R component in
--- the top 10 bits of the word in bytes 6..7, with the bottom 6 bits of
--- each word unused. This format only supports images with a width that is
--- a multiple of two. For the purposes of the constraints on copy extents,
--- this format is treated as a compressed format with a 2×1 compressed
--- texel block.
-pattern FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 = Format 1000156010
-
--- | 'FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16' specifies a four-component,
--- 64-bit unsigned normalized format that has a 10-bit R component in the
--- top 10 bits of the word in bytes 0..1, a 10-bit G component in the top
--- 10 bits of the word in bytes 2..3, a 10-bit B component in the top 10
--- bits of the word in bytes 4..5, and a 10-bit A component in the top 10
--- bits of the word in bytes 6..7, with the bottom 6 bits of each word
--- unused.
-pattern FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 = Format 1000156009
-
--- | 'FORMAT_R10X6G10X6_UNORM_2PACK16' specifies a two-component, 32-bit
--- unsigned normalized format that has a 10-bit R component in the top 10
--- bits of the word in bytes 0..1, and a 10-bit G component in the top 10
--- bits of the word in bytes 2..3, with the bottom 6 bits of each word
--- unused.
-pattern FORMAT_R10X6G10X6_UNORM_2PACK16 = Format 1000156008
-
--- | 'FORMAT_R10X6_UNORM_PACK16' specifies a one-component, 16-bit unsigned
--- normalized format that has a single 10-bit R component in the top 10
--- bits of a 16-bit word, with the bottom 6 bits unused.
-pattern FORMAT_R10X6_UNORM_PACK16 = Format 1000156007
-
--- | 'FORMAT_G8_B8_R8_3PLANE_444_UNORM' specifies an unsigned normalized
--- /multi-planar format/ that has an 8-bit G component in plane 0, an 8-bit
--- B component in plane 1, and an 8-bit R component in plane 2. Each plane
--- has 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,
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for
--- the B plane, and
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT' for
--- the R plane.
-pattern FORMAT_G8_B8_R8_3PLANE_444_UNORM = Format 1000156006
-
--- | 'FORMAT_G8_B8R8_2PLANE_422_UNORM' specifies an unsigned normalized
--- /multi-planar format/ that has an 8-bit G component in plane 0, and a
--- two-component, 16-bit BR plane 1 consisting of an 8-bit B component in
--- byte 0 and an 8-bit R component in byte 1. The horizontal dimension of
--- the BR plane is halved relative to the image dimensions, and each R and
--- B value is shared with the G components for which
--- \(\left\lfloor i_G \times 0.5 \right\rfloor = i_B = i_R\). The location
--- of each plane when this image is in linear layout can be determined via
--- 'Vulkan.Core10.Image.getImageSubresourceLayout', using
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT' for
--- the G plane, and
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for
--- the BR plane. This format only supports images with a width that is a
--- multiple of two.
-pattern FORMAT_G8_B8R8_2PLANE_422_UNORM = Format 1000156005
-
--- | 'FORMAT_G8_B8_R8_3PLANE_422_UNORM' specifies an unsigned normalized
--- /multi-planar format/ that has an 8-bit G component in plane 0, an 8-bit
--- B component in plane 1, and an 8-bit R component in plane 2. The
--- horizontal dimension of the R and B plane is halved relative to the
--- image dimensions, and each R and B value is shared with the G components
--- for which \(\left\lfloor i_G \times 0.5 \right\rfloor = i_B =
--- i_R\). The location of each plane when this image is in linear layout
--- can be determined via 'Vulkan.Core10.Image.getImageSubresourceLayout',
--- using 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'
--- for the G plane,
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for
--- the B plane, and
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT' for
--- the R plane. This format only supports images with a width that is a
--- multiple of two.
-pattern FORMAT_G8_B8_R8_3PLANE_422_UNORM = Format 1000156004
-
--- | 'FORMAT_G8_B8R8_2PLANE_420_UNORM' specifies an unsigned normalized
--- /multi-planar format/ that has an 8-bit G component in plane 0, and a
--- two-component, 16-bit BR plane 1 consisting of an 8-bit B component in
--- byte 0 and an 8-bit R component in byte 1. The horizontal and vertical
--- dimensions of the BR plane are halved relative to the image dimensions,
--- and each R and B value is shared with the G components for which
--- \(\left\lfloor i_G \times 0.5
--- \right\rfloor = i_B = i_R\) and \(\left\lfloor j_G \times 0.5
--- \right\rfloor = j_B = j_R\). The location of each plane when this image
--- is in linear layout can be determined via
--- 'Vulkan.Core10.Image.getImageSubresourceLayout', using
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT' for
--- the G plane, and
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for
--- the BR plane. This format only supports images with a width and height
--- that is a multiple of two.
-pattern FORMAT_G8_B8R8_2PLANE_420_UNORM = Format 1000156003
-
--- | 'FORMAT_G8_B8_R8_3PLANE_420_UNORM' specifies an unsigned normalized
--- /multi-planar format/ that has an 8-bit G component in plane 0, an 8-bit
--- B component in plane 1, and an 8-bit R component in plane 2. The
--- horizontal and vertical dimensions of the R and B planes are halved
--- relative to the image dimensions, and each R and B component is shared
--- with the G components for which \(\left\lfloor i_G \times 0.5
--- \right\rfloor = i_B = i_R\) and \(\left\lfloor j_G \times 0.5
--- \right\rfloor = j_B = j_R\). The location of each plane when this image
--- 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,
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for
--- the B plane, and
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT' for
--- the R plane. This format only supports images with a width and height
--- that is a multiple of two.
-pattern FORMAT_G8_B8_R8_3PLANE_420_UNORM = Format 1000156002
-
--- | 'FORMAT_B8G8R8G8_422_UNORM' specifies a four-component, 32-bit format
--- containing a pair of G components, an R component, and a B component,
--- collectively encoding a 2×1 rectangle of unsigned normalized RGB texel
--- data. One G value is present at each /i/ coordinate, with the B and R
--- values shared across both G values and thus recorded at half the
--- horizontal resolution of the image. This format has an 8-bit B component
--- in byte 0, an 8-bit G component for the even /i/ coordinate in byte 1,
--- an 8-bit R component in byte 2, and an 8-bit G component for the odd /i/
--- coordinate in byte 3. This format only supports images with a width that
--- is a multiple of two. For the purposes of the constraints on copy
--- extents, this format is treated as a compressed format with a 2×1
--- compressed texel block.
-pattern FORMAT_B8G8R8G8_422_UNORM = Format 1000156001
-
--- | 'FORMAT_G8B8G8R8_422_UNORM' specifies a four-component, 32-bit format
--- containing a pair of G components, an R component, and a B component,
--- collectively encoding a 2×1 rectangle of unsigned normalized RGB texel
--- data. One G value is present at each /i/ coordinate, with the B and R
--- values shared across both G values and thus recorded at half the
--- horizontal resolution of the image. This format has an 8-bit G component
--- for the even /i/ coordinate in byte 0, an 8-bit B component in byte 1,
--- an 8-bit G component for the odd /i/ coordinate in byte 2, and an 8-bit
--- R component in byte 3. This format only supports images with a width
--- that is a multiple of two. For the purposes of the constraints on copy
--- extents, this format is treated as a compressed format with a 2×1
--- compressed texel block.
-pattern FORMAT_G8B8G8R8_422_UNORM = Format 1000156000
-
-{-# COMPLETE
-  FORMAT_UNDEFINED
-  , FORMAT_R4G4_UNORM_PACK8
-  , FORMAT_R4G4B4A4_UNORM_PACK16
-  , FORMAT_B4G4R4A4_UNORM_PACK16
-  , FORMAT_R5G6B5_UNORM_PACK16
-  , FORMAT_B5G6R5_UNORM_PACK16
-  , FORMAT_R5G5B5A1_UNORM_PACK16
-  , FORMAT_B5G5R5A1_UNORM_PACK16
-  , FORMAT_A1R5G5B5_UNORM_PACK16
-  , FORMAT_R8_UNORM
-  , FORMAT_R8_SNORM
-  , FORMAT_R8_USCALED
-  , FORMAT_R8_SSCALED
-  , FORMAT_R8_UINT
-  , FORMAT_R8_SINT
-  , FORMAT_R8_SRGB
-  , FORMAT_R8G8_UNORM
-  , FORMAT_R8G8_SNORM
-  , FORMAT_R8G8_USCALED
-  , FORMAT_R8G8_SSCALED
-  , FORMAT_R8G8_UINT
-  , FORMAT_R8G8_SINT
-  , FORMAT_R8G8_SRGB
-  , FORMAT_R8G8B8_UNORM
-  , FORMAT_R8G8B8_SNORM
-  , FORMAT_R8G8B8_USCALED
-  , FORMAT_R8G8B8_SSCALED
-  , FORMAT_R8G8B8_UINT
-  , FORMAT_R8G8B8_SINT
-  , FORMAT_R8G8B8_SRGB
-  , FORMAT_B8G8R8_UNORM
-  , FORMAT_B8G8R8_SNORM
-  , FORMAT_B8G8R8_USCALED
-  , FORMAT_B8G8R8_SSCALED
-  , FORMAT_B8G8R8_UINT
-  , FORMAT_B8G8R8_SINT
-  , FORMAT_B8G8R8_SRGB
-  , FORMAT_R8G8B8A8_UNORM
-  , FORMAT_R8G8B8A8_SNORM
-  , FORMAT_R8G8B8A8_USCALED
-  , FORMAT_R8G8B8A8_SSCALED
-  , FORMAT_R8G8B8A8_UINT
-  , FORMAT_R8G8B8A8_SINT
-  , FORMAT_R8G8B8A8_SRGB
-  , FORMAT_B8G8R8A8_UNORM
-  , FORMAT_B8G8R8A8_SNORM
-  , FORMAT_B8G8R8A8_USCALED
-  , FORMAT_B8G8R8A8_SSCALED
-  , FORMAT_B8G8R8A8_UINT
-  , FORMAT_B8G8R8A8_SINT
-  , FORMAT_B8G8R8A8_SRGB
-  , FORMAT_A8B8G8R8_UNORM_PACK32
-  , FORMAT_A8B8G8R8_SNORM_PACK32
-  , FORMAT_A8B8G8R8_USCALED_PACK32
-  , FORMAT_A8B8G8R8_SSCALED_PACK32
-  , FORMAT_A8B8G8R8_UINT_PACK32
-  , FORMAT_A8B8G8R8_SINT_PACK32
-  , FORMAT_A8B8G8R8_SRGB_PACK32
-  , FORMAT_A2R10G10B10_UNORM_PACK32
-  , FORMAT_A2R10G10B10_SNORM_PACK32
-  , FORMAT_A2R10G10B10_USCALED_PACK32
-  , FORMAT_A2R10G10B10_SSCALED_PACK32
-  , FORMAT_A2R10G10B10_UINT_PACK32
-  , FORMAT_A2R10G10B10_SINT_PACK32
-  , FORMAT_A2B10G10R10_UNORM_PACK32
-  , FORMAT_A2B10G10R10_SNORM_PACK32
-  , FORMAT_A2B10G10R10_USCALED_PACK32
-  , FORMAT_A2B10G10R10_SSCALED_PACK32
-  , FORMAT_A2B10G10R10_UINT_PACK32
-  , FORMAT_A2B10G10R10_SINT_PACK32
-  , FORMAT_R16_UNORM
-  , FORMAT_R16_SNORM
-  , FORMAT_R16_USCALED
-  , FORMAT_R16_SSCALED
-  , FORMAT_R16_UINT
-  , FORMAT_R16_SINT
-  , FORMAT_R16_SFLOAT
-  , FORMAT_R16G16_UNORM
-  , FORMAT_R16G16_SNORM
-  , FORMAT_R16G16_USCALED
-  , FORMAT_R16G16_SSCALED
-  , FORMAT_R16G16_UINT
-  , FORMAT_R16G16_SINT
-  , FORMAT_R16G16_SFLOAT
-  , FORMAT_R16G16B16_UNORM
-  , FORMAT_R16G16B16_SNORM
-  , FORMAT_R16G16B16_USCALED
-  , FORMAT_R16G16B16_SSCALED
-  , FORMAT_R16G16B16_UINT
-  , FORMAT_R16G16B16_SINT
-  , FORMAT_R16G16B16_SFLOAT
-  , FORMAT_R16G16B16A16_UNORM
-  , FORMAT_R16G16B16A16_SNORM
-  , FORMAT_R16G16B16A16_USCALED
-  , FORMAT_R16G16B16A16_SSCALED
-  , FORMAT_R16G16B16A16_UINT
-  , FORMAT_R16G16B16A16_SINT
-  , FORMAT_R16G16B16A16_SFLOAT
-  , FORMAT_R32_UINT
-  , FORMAT_R32_SINT
-  , FORMAT_R32_SFLOAT
-  , FORMAT_R32G32_UINT
-  , FORMAT_R32G32_SINT
-  , FORMAT_R32G32_SFLOAT
-  , FORMAT_R32G32B32_UINT
-  , FORMAT_R32G32B32_SINT
-  , FORMAT_R32G32B32_SFLOAT
-  , FORMAT_R32G32B32A32_UINT
-  , FORMAT_R32G32B32A32_SINT
-  , FORMAT_R32G32B32A32_SFLOAT
-  , FORMAT_R64_UINT
-  , FORMAT_R64_SINT
-  , FORMAT_R64_SFLOAT
-  , FORMAT_R64G64_UINT
-  , FORMAT_R64G64_SINT
-  , FORMAT_R64G64_SFLOAT
-  , FORMAT_R64G64B64_UINT
-  , FORMAT_R64G64B64_SINT
-  , FORMAT_R64G64B64_SFLOAT
-  , FORMAT_R64G64B64A64_UINT
-  , FORMAT_R64G64B64A64_SINT
-  , FORMAT_R64G64B64A64_SFLOAT
-  , FORMAT_B10G11R11_UFLOAT_PACK32
-  , FORMAT_E5B9G9R9_UFLOAT_PACK32
-  , FORMAT_D16_UNORM
-  , FORMAT_X8_D24_UNORM_PACK32
-  , FORMAT_D32_SFLOAT
-  , FORMAT_S8_UINT
-  , FORMAT_D16_UNORM_S8_UINT
-  , FORMAT_D24_UNORM_S8_UINT
-  , FORMAT_D32_SFLOAT_S8_UINT
-  , FORMAT_BC1_RGB_UNORM_BLOCK
-  , FORMAT_BC1_RGB_SRGB_BLOCK
-  , FORMAT_BC1_RGBA_UNORM_BLOCK
-  , FORMAT_BC1_RGBA_SRGB_BLOCK
-  , FORMAT_BC2_UNORM_BLOCK
-  , FORMAT_BC2_SRGB_BLOCK
-  , FORMAT_BC3_UNORM_BLOCK
-  , FORMAT_BC3_SRGB_BLOCK
-  , FORMAT_BC4_UNORM_BLOCK
-  , FORMAT_BC4_SNORM_BLOCK
-  , FORMAT_BC5_UNORM_BLOCK
-  , FORMAT_BC5_SNORM_BLOCK
-  , FORMAT_BC6H_UFLOAT_BLOCK
-  , FORMAT_BC6H_SFLOAT_BLOCK
-  , FORMAT_BC7_UNORM_BLOCK
-  , FORMAT_BC7_SRGB_BLOCK
-  , FORMAT_ETC2_R8G8B8_UNORM_BLOCK
-  , FORMAT_ETC2_R8G8B8_SRGB_BLOCK
-  , FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK
-  , FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK
-  , FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK
-  , FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK
-  , FORMAT_EAC_R11_UNORM_BLOCK
-  , FORMAT_EAC_R11_SNORM_BLOCK
-  , FORMAT_EAC_R11G11_UNORM_BLOCK
-  , FORMAT_EAC_R11G11_SNORM_BLOCK
-  , FORMAT_ASTC_4x4_UNORM_BLOCK
-  , FORMAT_ASTC_4x4_SRGB_BLOCK
-  , FORMAT_ASTC_5x4_UNORM_BLOCK
-  , FORMAT_ASTC_5x4_SRGB_BLOCK
-  , FORMAT_ASTC_5x5_UNORM_BLOCK
-  , FORMAT_ASTC_5x5_SRGB_BLOCK
-  , FORMAT_ASTC_6x5_UNORM_BLOCK
-  , FORMAT_ASTC_6x5_SRGB_BLOCK
-  , FORMAT_ASTC_6x6_UNORM_BLOCK
-  , FORMAT_ASTC_6x6_SRGB_BLOCK
-  , FORMAT_ASTC_8x5_UNORM_BLOCK
-  , FORMAT_ASTC_8x5_SRGB_BLOCK
-  , FORMAT_ASTC_8x6_UNORM_BLOCK
-  , FORMAT_ASTC_8x6_SRGB_BLOCK
-  , FORMAT_ASTC_8x8_UNORM_BLOCK
-  , FORMAT_ASTC_8x8_SRGB_BLOCK
-  , FORMAT_ASTC_10x5_UNORM_BLOCK
-  , FORMAT_ASTC_10x5_SRGB_BLOCK
-  , FORMAT_ASTC_10x6_UNORM_BLOCK
-  , FORMAT_ASTC_10x6_SRGB_BLOCK
-  , FORMAT_ASTC_10x8_UNORM_BLOCK
-  , FORMAT_ASTC_10x8_SRGB_BLOCK
-  , FORMAT_ASTC_10x10_UNORM_BLOCK
-  , FORMAT_ASTC_10x10_SRGB_BLOCK
-  , FORMAT_ASTC_12x10_UNORM_BLOCK
-  , FORMAT_ASTC_12x10_SRGB_BLOCK
-  , FORMAT_ASTC_12x12_UNORM_BLOCK
-  , FORMAT_ASTC_12x12_SRGB_BLOCK
-  , FORMAT_A8_UNORM_KHR
-  , FORMAT_A1B5G5R5_UNORM_PACK16_KHR
-  , FORMAT_R16G16_SFIXED5_NV
-  , FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG
-  , FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG
-  , FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG
-  , FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG
-  , FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG
-  , 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
-  , FORMAT_G16_B16R16_2PLANE_420_UNORM
-  , FORMAT_G16_B16_R16_3PLANE_420_UNORM
-  , FORMAT_B16G16R16G16_422_UNORM
-  , FORMAT_G16B16G16R16_422_UNORM
-  , FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16
-  , FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16
-  , FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16
-  , FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16
-  , FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16
-  , FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16
-  , FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16
-  , FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16
-  , FORMAT_R12X4G12X4_UNORM_2PACK16
-  , FORMAT_R12X4_UNORM_PACK16
-  , FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16
-  , FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16
-  , FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16
-  , FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16
-  , FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16
-  , FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16
-  , FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16
-  , FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16
-  , FORMAT_R10X6G10X6_UNORM_2PACK16
-  , FORMAT_R10X6_UNORM_PACK16
-  , FORMAT_G8_B8_R8_3PLANE_444_UNORM
-  , FORMAT_G8_B8R8_2PLANE_422_UNORM
-  , FORMAT_G8_B8_R8_3PLANE_422_UNORM
-  , FORMAT_G8_B8R8_2PLANE_420_UNORM
-  , FORMAT_G8_B8_R8_3PLANE_420_UNORM
-  , FORMAT_B8G8R8G8_422_UNORM
-  , FORMAT_G8B8G8R8_422_UNORM ::
-    Format
-  #-}
-
-conNameFormat :: String
-conNameFormat = "Format"
-
-enumPrefixFormat :: String
-enumPrefixFormat = "FORMAT_"
-
-showTableFormat :: [(Format, String)]
-showTableFormat =
-  [ (FORMAT_UNDEFINED, "UNDEFINED")
-  , (FORMAT_R4G4_UNORM_PACK8, "R4G4_UNORM_PACK8")
-  , (FORMAT_R4G4B4A4_UNORM_PACK16, "R4G4B4A4_UNORM_PACK16")
-  , (FORMAT_B4G4R4A4_UNORM_PACK16, "B4G4R4A4_UNORM_PACK16")
-  , (FORMAT_R5G6B5_UNORM_PACK16, "R5G6B5_UNORM_PACK16")
-  , (FORMAT_B5G6R5_UNORM_PACK16, "B5G6R5_UNORM_PACK16")
-  , (FORMAT_R5G5B5A1_UNORM_PACK16, "R5G5B5A1_UNORM_PACK16")
-  , (FORMAT_B5G5R5A1_UNORM_PACK16, "B5G5R5A1_UNORM_PACK16")
-  , (FORMAT_A1R5G5B5_UNORM_PACK16, "A1R5G5B5_UNORM_PACK16")
-  , (FORMAT_R8_UNORM, "R8_UNORM")
-  , (FORMAT_R8_SNORM, "R8_SNORM")
-  , (FORMAT_R8_USCALED, "R8_USCALED")
-  , (FORMAT_R8_SSCALED, "R8_SSCALED")
-  , (FORMAT_R8_UINT, "R8_UINT")
-  , (FORMAT_R8_SINT, "R8_SINT")
-  , (FORMAT_R8_SRGB, "R8_SRGB")
-  , (FORMAT_R8G8_UNORM, "R8G8_UNORM")
-  , (FORMAT_R8G8_SNORM, "R8G8_SNORM")
-  , (FORMAT_R8G8_USCALED, "R8G8_USCALED")
-  , (FORMAT_R8G8_SSCALED, "R8G8_SSCALED")
-  , (FORMAT_R8G8_UINT, "R8G8_UINT")
-  , (FORMAT_R8G8_SINT, "R8G8_SINT")
-  , (FORMAT_R8G8_SRGB, "R8G8_SRGB")
-  , (FORMAT_R8G8B8_UNORM, "R8G8B8_UNORM")
-  , (FORMAT_R8G8B8_SNORM, "R8G8B8_SNORM")
-  , (FORMAT_R8G8B8_USCALED, "R8G8B8_USCALED")
-  , (FORMAT_R8G8B8_SSCALED, "R8G8B8_SSCALED")
-  , (FORMAT_R8G8B8_UINT, "R8G8B8_UINT")
-  , (FORMAT_R8G8B8_SINT, "R8G8B8_SINT")
-  , (FORMAT_R8G8B8_SRGB, "R8G8B8_SRGB")
-  , (FORMAT_B8G8R8_UNORM, "B8G8R8_UNORM")
-  , (FORMAT_B8G8R8_SNORM, "B8G8R8_SNORM")
-  , (FORMAT_B8G8R8_USCALED, "B8G8R8_USCALED")
-  , (FORMAT_B8G8R8_SSCALED, "B8G8R8_SSCALED")
-  , (FORMAT_B8G8R8_UINT, "B8G8R8_UINT")
-  , (FORMAT_B8G8R8_SINT, "B8G8R8_SINT")
-  , (FORMAT_B8G8R8_SRGB, "B8G8R8_SRGB")
-  , (FORMAT_R8G8B8A8_UNORM, "R8G8B8A8_UNORM")
-  , (FORMAT_R8G8B8A8_SNORM, "R8G8B8A8_SNORM")
-  , (FORMAT_R8G8B8A8_USCALED, "R8G8B8A8_USCALED")
-  , (FORMAT_R8G8B8A8_SSCALED, "R8G8B8A8_SSCALED")
-  , (FORMAT_R8G8B8A8_UINT, "R8G8B8A8_UINT")
-  , (FORMAT_R8G8B8A8_SINT, "R8G8B8A8_SINT")
-  , (FORMAT_R8G8B8A8_SRGB, "R8G8B8A8_SRGB")
-  , (FORMAT_B8G8R8A8_UNORM, "B8G8R8A8_UNORM")
-  , (FORMAT_B8G8R8A8_SNORM, "B8G8R8A8_SNORM")
-  , (FORMAT_B8G8R8A8_USCALED, "B8G8R8A8_USCALED")
-  , (FORMAT_B8G8R8A8_SSCALED, "B8G8R8A8_SSCALED")
-  , (FORMAT_B8G8R8A8_UINT, "B8G8R8A8_UINT")
-  , (FORMAT_B8G8R8A8_SINT, "B8G8R8A8_SINT")
-  , (FORMAT_B8G8R8A8_SRGB, "B8G8R8A8_SRGB")
-  , (FORMAT_A8B8G8R8_UNORM_PACK32, "A8B8G8R8_UNORM_PACK32")
-  , (FORMAT_A8B8G8R8_SNORM_PACK32, "A8B8G8R8_SNORM_PACK32")
-  , (FORMAT_A8B8G8R8_USCALED_PACK32, "A8B8G8R8_USCALED_PACK32")
-  , (FORMAT_A8B8G8R8_SSCALED_PACK32, "A8B8G8R8_SSCALED_PACK32")
-  , (FORMAT_A8B8G8R8_UINT_PACK32, "A8B8G8R8_UINT_PACK32")
-  , (FORMAT_A8B8G8R8_SINT_PACK32, "A8B8G8R8_SINT_PACK32")
-  , (FORMAT_A8B8G8R8_SRGB_PACK32, "A8B8G8R8_SRGB_PACK32")
-  ,
-    ( FORMAT_A2R10G10B10_UNORM_PACK32
-    , "A2R10G10B10_UNORM_PACK32"
-    )
-  ,
-    ( FORMAT_A2R10G10B10_SNORM_PACK32
-    , "A2R10G10B10_SNORM_PACK32"
-    )
-  ,
-    ( FORMAT_A2R10G10B10_USCALED_PACK32
-    , "A2R10G10B10_USCALED_PACK32"
-    )
-  ,
-    ( FORMAT_A2R10G10B10_SSCALED_PACK32
-    , "A2R10G10B10_SSCALED_PACK32"
-    )
-  , (FORMAT_A2R10G10B10_UINT_PACK32, "A2R10G10B10_UINT_PACK32")
-  , (FORMAT_A2R10G10B10_SINT_PACK32, "A2R10G10B10_SINT_PACK32")
-  ,
-    ( FORMAT_A2B10G10R10_UNORM_PACK32
-    , "A2B10G10R10_UNORM_PACK32"
-    )
-  ,
-    ( FORMAT_A2B10G10R10_SNORM_PACK32
-    , "A2B10G10R10_SNORM_PACK32"
-    )
-  ,
-    ( FORMAT_A2B10G10R10_USCALED_PACK32
-    , "A2B10G10R10_USCALED_PACK32"
-    )
-  ,
-    ( FORMAT_A2B10G10R10_SSCALED_PACK32
-    , "A2B10G10R10_SSCALED_PACK32"
-    )
-  , (FORMAT_A2B10G10R10_UINT_PACK32, "A2B10G10R10_UINT_PACK32")
-  , (FORMAT_A2B10G10R10_SINT_PACK32, "A2B10G10R10_SINT_PACK32")
-  , (FORMAT_R16_UNORM, "R16_UNORM")
-  , (FORMAT_R16_SNORM, "R16_SNORM")
-  , (FORMAT_R16_USCALED, "R16_USCALED")
-  , (FORMAT_R16_SSCALED, "R16_SSCALED")
-  , (FORMAT_R16_UINT, "R16_UINT")
-  , (FORMAT_R16_SINT, "R16_SINT")
-  , (FORMAT_R16_SFLOAT, "R16_SFLOAT")
-  , (FORMAT_R16G16_UNORM, "R16G16_UNORM")
-  , (FORMAT_R16G16_SNORM, "R16G16_SNORM")
-  , (FORMAT_R16G16_USCALED, "R16G16_USCALED")
-  , (FORMAT_R16G16_SSCALED, "R16G16_SSCALED")
-  , (FORMAT_R16G16_UINT, "R16G16_UINT")
-  , (FORMAT_R16G16_SINT, "R16G16_SINT")
-  , (FORMAT_R16G16_SFLOAT, "R16G16_SFLOAT")
-  , (FORMAT_R16G16B16_UNORM, "R16G16B16_UNORM")
-  , (FORMAT_R16G16B16_SNORM, "R16G16B16_SNORM")
-  , (FORMAT_R16G16B16_USCALED, "R16G16B16_USCALED")
-  , (FORMAT_R16G16B16_SSCALED, "R16G16B16_SSCALED")
-  , (FORMAT_R16G16B16_UINT, "R16G16B16_UINT")
-  , (FORMAT_R16G16B16_SINT, "R16G16B16_SINT")
-  , (FORMAT_R16G16B16_SFLOAT, "R16G16B16_SFLOAT")
-  , (FORMAT_R16G16B16A16_UNORM, "R16G16B16A16_UNORM")
-  , (FORMAT_R16G16B16A16_SNORM, "R16G16B16A16_SNORM")
-  , (FORMAT_R16G16B16A16_USCALED, "R16G16B16A16_USCALED")
-  , (FORMAT_R16G16B16A16_SSCALED, "R16G16B16A16_SSCALED")
-  , (FORMAT_R16G16B16A16_UINT, "R16G16B16A16_UINT")
-  , (FORMAT_R16G16B16A16_SINT, "R16G16B16A16_SINT")
-  , (FORMAT_R16G16B16A16_SFLOAT, "R16G16B16A16_SFLOAT")
-  , (FORMAT_R32_UINT, "R32_UINT")
-  , (FORMAT_R32_SINT, "R32_SINT")
-  , (FORMAT_R32_SFLOAT, "R32_SFLOAT")
-  , (FORMAT_R32G32_UINT, "R32G32_UINT")
-  , (FORMAT_R32G32_SINT, "R32G32_SINT")
-  , (FORMAT_R32G32_SFLOAT, "R32G32_SFLOAT")
-  , (FORMAT_R32G32B32_UINT, "R32G32B32_UINT")
-  , (FORMAT_R32G32B32_SINT, "R32G32B32_SINT")
-  , (FORMAT_R32G32B32_SFLOAT, "R32G32B32_SFLOAT")
-  , (FORMAT_R32G32B32A32_UINT, "R32G32B32A32_UINT")
-  , (FORMAT_R32G32B32A32_SINT, "R32G32B32A32_SINT")
-  , (FORMAT_R32G32B32A32_SFLOAT, "R32G32B32A32_SFLOAT")
-  , (FORMAT_R64_UINT, "R64_UINT")
-  , (FORMAT_R64_SINT, "R64_SINT")
-  , (FORMAT_R64_SFLOAT, "R64_SFLOAT")
-  , (FORMAT_R64G64_UINT, "R64G64_UINT")
-  , (FORMAT_R64G64_SINT, "R64G64_SINT")
-  , (FORMAT_R64G64_SFLOAT, "R64G64_SFLOAT")
-  , (FORMAT_R64G64B64_UINT, "R64G64B64_UINT")
-  , (FORMAT_R64G64B64_SINT, "R64G64B64_SINT")
-  , (FORMAT_R64G64B64_SFLOAT, "R64G64B64_SFLOAT")
-  , (FORMAT_R64G64B64A64_UINT, "R64G64B64A64_UINT")
-  , (FORMAT_R64G64B64A64_SINT, "R64G64B64A64_SINT")
-  , (FORMAT_R64G64B64A64_SFLOAT, "R64G64B64A64_SFLOAT")
-  , (FORMAT_B10G11R11_UFLOAT_PACK32, "B10G11R11_UFLOAT_PACK32")
-  , (FORMAT_E5B9G9R9_UFLOAT_PACK32, "E5B9G9R9_UFLOAT_PACK32")
-  , (FORMAT_D16_UNORM, "D16_UNORM")
-  , (FORMAT_X8_D24_UNORM_PACK32, "X8_D24_UNORM_PACK32")
-  , (FORMAT_D32_SFLOAT, "D32_SFLOAT")
-  , (FORMAT_S8_UINT, "S8_UINT")
-  , (FORMAT_D16_UNORM_S8_UINT, "D16_UNORM_S8_UINT")
-  , (FORMAT_D24_UNORM_S8_UINT, "D24_UNORM_S8_UINT")
-  , (FORMAT_D32_SFLOAT_S8_UINT, "D32_SFLOAT_S8_UINT")
-  , (FORMAT_BC1_RGB_UNORM_BLOCK, "BC1_RGB_UNORM_BLOCK")
-  , (FORMAT_BC1_RGB_SRGB_BLOCK, "BC1_RGB_SRGB_BLOCK")
-  , (FORMAT_BC1_RGBA_UNORM_BLOCK, "BC1_RGBA_UNORM_BLOCK")
-  , (FORMAT_BC1_RGBA_SRGB_BLOCK, "BC1_RGBA_SRGB_BLOCK")
-  , (FORMAT_BC2_UNORM_BLOCK, "BC2_UNORM_BLOCK")
-  , (FORMAT_BC2_SRGB_BLOCK, "BC2_SRGB_BLOCK")
-  , (FORMAT_BC3_UNORM_BLOCK, "BC3_UNORM_BLOCK")
-  , (FORMAT_BC3_SRGB_BLOCK, "BC3_SRGB_BLOCK")
-  , (FORMAT_BC4_UNORM_BLOCK, "BC4_UNORM_BLOCK")
-  , (FORMAT_BC4_SNORM_BLOCK, "BC4_SNORM_BLOCK")
-  , (FORMAT_BC5_UNORM_BLOCK, "BC5_UNORM_BLOCK")
-  , (FORMAT_BC5_SNORM_BLOCK, "BC5_SNORM_BLOCK")
-  , (FORMAT_BC6H_UFLOAT_BLOCK, "BC6H_UFLOAT_BLOCK")
-  , (FORMAT_BC6H_SFLOAT_BLOCK, "BC6H_SFLOAT_BLOCK")
-  , (FORMAT_BC7_UNORM_BLOCK, "BC7_UNORM_BLOCK")
-  , (FORMAT_BC7_SRGB_BLOCK, "BC7_SRGB_BLOCK")
-  , (FORMAT_ETC2_R8G8B8_UNORM_BLOCK, "ETC2_R8G8B8_UNORM_BLOCK")
-  , (FORMAT_ETC2_R8G8B8_SRGB_BLOCK, "ETC2_R8G8B8_SRGB_BLOCK")
-  ,
-    ( FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK
-    , "ETC2_R8G8B8A1_UNORM_BLOCK"
-    )
-  ,
-    ( FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK
-    , "ETC2_R8G8B8A1_SRGB_BLOCK"
-    )
-  ,
-    ( FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK
-    , "ETC2_R8G8B8A8_UNORM_BLOCK"
-    )
-  ,
-    ( FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK
-    , "ETC2_R8G8B8A8_SRGB_BLOCK"
-    )
-  , (FORMAT_EAC_R11_UNORM_BLOCK, "EAC_R11_UNORM_BLOCK")
-  , (FORMAT_EAC_R11_SNORM_BLOCK, "EAC_R11_SNORM_BLOCK")
-  , (FORMAT_EAC_R11G11_UNORM_BLOCK, "EAC_R11G11_UNORM_BLOCK")
-  , (FORMAT_EAC_R11G11_SNORM_BLOCK, "EAC_R11G11_SNORM_BLOCK")
-  , (FORMAT_ASTC_4x4_UNORM_BLOCK, "ASTC_4x4_UNORM_BLOCK")
-  , (FORMAT_ASTC_4x4_SRGB_BLOCK, "ASTC_4x4_SRGB_BLOCK")
-  , (FORMAT_ASTC_5x4_UNORM_BLOCK, "ASTC_5x4_UNORM_BLOCK")
-  , (FORMAT_ASTC_5x4_SRGB_BLOCK, "ASTC_5x4_SRGB_BLOCK")
-  , (FORMAT_ASTC_5x5_UNORM_BLOCK, "ASTC_5x5_UNORM_BLOCK")
-  , (FORMAT_ASTC_5x5_SRGB_BLOCK, "ASTC_5x5_SRGB_BLOCK")
-  , (FORMAT_ASTC_6x5_UNORM_BLOCK, "ASTC_6x5_UNORM_BLOCK")
-  , (FORMAT_ASTC_6x5_SRGB_BLOCK, "ASTC_6x5_SRGB_BLOCK")
-  , (FORMAT_ASTC_6x6_UNORM_BLOCK, "ASTC_6x6_UNORM_BLOCK")
-  , (FORMAT_ASTC_6x6_SRGB_BLOCK, "ASTC_6x6_SRGB_BLOCK")
-  , (FORMAT_ASTC_8x5_UNORM_BLOCK, "ASTC_8x5_UNORM_BLOCK")
-  , (FORMAT_ASTC_8x5_SRGB_BLOCK, "ASTC_8x5_SRGB_BLOCK")
-  , (FORMAT_ASTC_8x6_UNORM_BLOCK, "ASTC_8x6_UNORM_BLOCK")
-  , (FORMAT_ASTC_8x6_SRGB_BLOCK, "ASTC_8x6_SRGB_BLOCK")
-  , (FORMAT_ASTC_8x8_UNORM_BLOCK, "ASTC_8x8_UNORM_BLOCK")
-  , (FORMAT_ASTC_8x8_SRGB_BLOCK, "ASTC_8x8_SRGB_BLOCK")
-  , (FORMAT_ASTC_10x5_UNORM_BLOCK, "ASTC_10x5_UNORM_BLOCK")
-  , (FORMAT_ASTC_10x5_SRGB_BLOCK, "ASTC_10x5_SRGB_BLOCK")
-  , (FORMAT_ASTC_10x6_UNORM_BLOCK, "ASTC_10x6_UNORM_BLOCK")
-  , (FORMAT_ASTC_10x6_SRGB_BLOCK, "ASTC_10x6_SRGB_BLOCK")
-  , (FORMAT_ASTC_10x8_UNORM_BLOCK, "ASTC_10x8_UNORM_BLOCK")
-  , (FORMAT_ASTC_10x8_SRGB_BLOCK, "ASTC_10x8_SRGB_BLOCK")
-  , (FORMAT_ASTC_10x10_UNORM_BLOCK, "ASTC_10x10_UNORM_BLOCK")
-  , (FORMAT_ASTC_10x10_SRGB_BLOCK, "ASTC_10x10_SRGB_BLOCK")
-  , (FORMAT_ASTC_12x10_UNORM_BLOCK, "ASTC_12x10_UNORM_BLOCK")
-  , (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_A8_UNORM_KHR, "A8_UNORM_KHR")
-  ,
-    ( FORMAT_A1B5G5R5_UNORM_PACK16_KHR
-    , "A1B5G5R5_UNORM_PACK16_KHR"
-    )
-  , (FORMAT_R16G16_SFIXED5_NV, "R16G16_SFIXED5_NV")
-  ,
-    ( 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"
-    )
-  ,
-    ( FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG
-    , "PVRTC1_2BPP_SRGB_BLOCK_IMG"
-    )
-  ,
-    ( FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG
-    , "PVRTC2_4BPP_UNORM_BLOCK_IMG"
-    )
-  ,
-    ( 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_G14X2_B14X2R14X2_2PLANE_422_UNORM_3PACK16_ARM
+                                          , FORMAT_G14X2_B14X2R14X2_2PLANE_420_UNORM_3PACK16_ARM
+                                          , FORMAT_R14X2G14X2B14X2A14X2_UNORM_4PACK16_ARM
+                                          , FORMAT_R14X2G14X2_UNORM_2PACK16_ARM
+                                          , FORMAT_R14X2_UNORM_PACK16_ARM
+                                          , FORMAT_R14X2G14X2B14X2A14X2_UINT_4PACK16_ARM
+                                          , FORMAT_R14X2G14X2_UINT_2PACK16_ARM
+                                          , FORMAT_R14X2_UINT_PACK16_ARM
+                                          , FORMAT_R12X4G12X4B12X4A12X4_UINT_4PACK16_ARM
+                                          , FORMAT_R12X4G12X4_UINT_2PACK16_ARM
+                                          , FORMAT_R12X4_UINT_PACK16_ARM
+                                          , FORMAT_R10X6G10X6B10X6A10X6_UINT_4PACK16_ARM
+                                          , FORMAT_R10X6G10X6_UINT_2PACK16_ARM
+                                          , FORMAT_R10X6_UINT_PACK16_ARM
+                                          , FORMAT_R16G16_SFIXED5_NV
+                                          , FORMAT_R8_SFLOAT_FPENCODING_FLOAT8E5M2_ARM
+                                          , FORMAT_R8_SFLOAT_FPENCODING_FLOAT8E4M3_ARM
+                                          , FORMAT_R16_SFLOAT_FPENCODING_BFLOAT16_ARM
+                                          , FORMAT_R8_BOOL_ARM
+                                          , FORMAT_ASTC_6x6x6_SFLOAT_BLOCK_EXT
+                                          , FORMAT_ASTC_6x6x6_SRGB_BLOCK_EXT
+                                          , FORMAT_ASTC_6x6x6_UNORM_BLOCK_EXT
+                                          , FORMAT_ASTC_6x6x5_SFLOAT_BLOCK_EXT
+                                          , FORMAT_ASTC_6x6x5_SRGB_BLOCK_EXT
+                                          , FORMAT_ASTC_6x6x5_UNORM_BLOCK_EXT
+                                          , FORMAT_ASTC_6x5x5_SFLOAT_BLOCK_EXT
+                                          , FORMAT_ASTC_6x5x5_SRGB_BLOCK_EXT
+                                          , FORMAT_ASTC_6x5x5_UNORM_BLOCK_EXT
+                                          , FORMAT_ASTC_5x5x5_SFLOAT_BLOCK_EXT
+                                          , FORMAT_ASTC_5x5x5_SRGB_BLOCK_EXT
+                                          , FORMAT_ASTC_5x5x5_UNORM_BLOCK_EXT
+                                          , FORMAT_ASTC_5x5x4_SFLOAT_BLOCK_EXT
+                                          , FORMAT_ASTC_5x5x4_SRGB_BLOCK_EXT
+                                          , FORMAT_ASTC_5x5x4_UNORM_BLOCK_EXT
+                                          , FORMAT_ASTC_5x4x4_SFLOAT_BLOCK_EXT
+                                          , FORMAT_ASTC_5x4x4_SRGB_BLOCK_EXT
+                                          , FORMAT_ASTC_5x4x4_UNORM_BLOCK_EXT
+                                          , FORMAT_ASTC_4x4x4_SFLOAT_BLOCK_EXT
+                                          , FORMAT_ASTC_4x4x4_SRGB_BLOCK_EXT
+                                          , FORMAT_ASTC_4x4x4_UNORM_BLOCK_EXT
+                                          , FORMAT_ASTC_4x4x3_SFLOAT_BLOCK_EXT
+                                          , FORMAT_ASTC_4x4x3_SRGB_BLOCK_EXT
+                                          , FORMAT_ASTC_4x4x3_UNORM_BLOCK_EXT
+                                          , FORMAT_ASTC_4x3x3_SFLOAT_BLOCK_EXT
+                                          , FORMAT_ASTC_4x3x3_SRGB_BLOCK_EXT
+                                          , FORMAT_ASTC_4x3x3_UNORM_BLOCK_EXT
+                                          , FORMAT_ASTC_3x3x3_SFLOAT_BLOCK_EXT
+                                          , FORMAT_ASTC_3x3x3_SRGB_BLOCK_EXT
+                                          , FORMAT_ASTC_3x3x3_UNORM_BLOCK_EXT
+                                          , FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG
+                                          , FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG
+                                          , FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG
+                                          , FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG
+                                          , FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG
+                                          , FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG
+                                          , FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG
+                                          , FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG
+                                          , FORMAT_A8_UNORM
+                                          , FORMAT_A1B5G5R5_UNORM_PACK16
+                                          , 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
+                                          , FORMAT_G16_B16R16_2PLANE_420_UNORM
+                                          , FORMAT_G16_B16_R16_3PLANE_420_UNORM
+                                          , FORMAT_B16G16R16G16_422_UNORM
+                                          , FORMAT_G16B16G16R16_422_UNORM
+                                          , FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16
+                                          , FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16
+                                          , FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16
+                                          , FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16
+                                          , FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16
+                                          , FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16
+                                          , FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16
+                                          , FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16
+                                          , FORMAT_R12X4G12X4_UNORM_2PACK16
+                                          , FORMAT_R12X4_UNORM_PACK16
+                                          , FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16
+                                          , FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16
+                                          , FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16
+                                          , FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16
+                                          , FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16
+                                          , FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16
+                                          , FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16
+                                          , FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16
+                                          , FORMAT_R10X6G10X6_UNORM_2PACK16
+                                          , FORMAT_R10X6_UNORM_PACK16
+                                          , FORMAT_G8_B8_R8_3PLANE_444_UNORM
+                                          , FORMAT_G8_B8R8_2PLANE_422_UNORM
+                                          , FORMAT_G8_B8_R8_3PLANE_422_UNORM
+                                          , FORMAT_G8_B8R8_2PLANE_420_UNORM
+                                          , FORMAT_G8_B8_R8_3PLANE_420_UNORM
+                                          , FORMAT_B8G8R8G8_422_UNORM
+                                          , FORMAT_G8B8G8R8_422_UNORM
+                                          , ..
+                                          )) where
+
+import Vulkan.Internal.Utils (enumReadPrec)
+import Vulkan.Internal.Utils (enumShowsPrec)
+import GHC.Show (showsPrec)
+import Vulkan.Zero (Zero)
+import Foreign.Storable (Storable)
+import Data.Int (Int32)
+import GHC.Read (Read(readPrec))
+import GHC.Show (Show(showsPrec))
+
+-- | VkFormat - Available image formats
+--
+-- = Description
+--
+-- -   'FORMAT_UNDEFINED' specifies that the format is not specified.
+--
+-- -   'FORMAT_R4G4_UNORM_PACK8' specifies a two-component, 8-bit packed
+--     unsigned normalized format that has a 4-bit R component in bits
+--     4..7, and a 4-bit G component in bits 0..3.
+--
+-- -   'FORMAT_R4G4B4A4_UNORM_PACK16' specifies a four-component, 16-bit
+--     packed unsigned normalized format that has a 4-bit R component in
+--     bits 12..15, a 4-bit G component in bits 8..11, a 4-bit B component
+--     in bits 4..7, and a 4-bit A component in bits 0..3.
+--
+-- -   'FORMAT_B4G4R4A4_UNORM_PACK16' specifies a four-component, 16-bit
+--     packed unsigned normalized format that has a 4-bit B component in
+--     bits 12..15, a 4-bit G component in bits 8..11, a 4-bit R component
+--     in bits 4..7, and a 4-bit A component in bits 0..3.
+--
+-- -   '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.
+--
+-- -   '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.
+--
+-- -   'FORMAT_R5G6B5_UNORM_PACK16' specifies a three-component, 16-bit
+--     packed unsigned normalized format that has a 5-bit R component in
+--     bits 11..15, a 6-bit G component in bits 5..10, and a 5-bit B
+--     component in bits 0..4.
+--
+-- -   'FORMAT_B5G6R5_UNORM_PACK16' specifies a three-component, 16-bit
+--     packed unsigned normalized format that has a 5-bit B component in
+--     bits 11..15, a 6-bit G component in bits 5..10, and a 5-bit R
+--     component in bits 0..4.
+--
+-- -   'FORMAT_R5G5B5A1_UNORM_PACK16' specifies a four-component, 16-bit
+--     packed unsigned normalized format that has a 5-bit R component in
+--     bits 11..15, a 5-bit G component in bits 6..10, a 5-bit B component
+--     in bits 1..5, and a 1-bit A component in bit 0.
+--
+-- -   'FORMAT_B5G5R5A1_UNORM_PACK16' specifies a four-component, 16-bit
+--     packed unsigned normalized format that has a 5-bit B component in
+--     bits 11..15, a 5-bit G component in bits 6..10, a 5-bit R component
+--     in bits 1..5, and a 1-bit A component in bit 0.
+--
+-- -   'FORMAT_A1R5G5B5_UNORM_PACK16' specifies a four-component, 16-bit
+--     packed unsigned normalized format that has a 1-bit A component in
+--     bit 15, a 5-bit R component in bits 10..14, a 5-bit G component in
+--     bits 5..9, and a 5-bit B component in bits 0..4.
+--
+-- -   'FORMAT_A1B5G5R5_UNORM_PACK16' specifies a four-component, 16-bit
+--     packed unsigned normalized format that has a 1-bit A component in
+--     bit 15, a 5-bit B component in bits 10..14, a 5-bit G component in
+--     bits 5..9, and a 5-bit R component in bits 0..4.
+--
+-- -   'FORMAT_A8_UNORM' specifies a one-component, 8-bit unsigned
+--     normalized format that has a single 8-bit A component.
+--
+-- -   'FORMAT_R8_UNORM' specifies a one-component, 8-bit unsigned
+--     normalized format that has a single 8-bit R component.
+--
+-- -   'FORMAT_R8_SNORM' specifies a one-component, 8-bit signed normalized
+--     format that has a single 8-bit R component.
+--
+-- -   'FORMAT_R8_USCALED' specifies a one-component, 8-bit unsigned scaled
+--     integer format that has a single 8-bit R component.
+--
+-- -   'FORMAT_R8_SSCALED' specifies a one-component, 8-bit signed scaled
+--     integer format that has a single 8-bit R component.
+--
+-- -   'FORMAT_R8_UINT' specifies a one-component, 8-bit unsigned integer
+--     format that has a single 8-bit R component.
+--
+-- -   'FORMAT_R8_SINT' specifies a one-component, 8-bit signed integer
+--     format that has a single 8-bit R component.
+--
+-- -   'FORMAT_R8_SRGB' specifies a one-component, 8-bit unsigned
+--     normalized format that has a single 8-bit R component stored with
+--     sRGB nonlinear encoding.
+--
+-- -   'FORMAT_R8G8_UNORM' specifies a two-component, 16-bit unsigned
+--     normalized format that has an 8-bit R component in byte 0, and an
+--     8-bit G component in byte 1.
+--
+-- -   'FORMAT_R8G8_SNORM' specifies a two-component, 16-bit signed
+--     normalized format that has an 8-bit R component in byte 0, and an
+--     8-bit G component in byte 1.
+--
+-- -   'FORMAT_R8G8_USCALED' specifies a two-component, 16-bit unsigned
+--     scaled integer format that has an 8-bit R component in byte 0, and
+--     an 8-bit G component in byte 1.
+--
+-- -   'FORMAT_R8G8_SSCALED' specifies a two-component, 16-bit signed
+--     scaled integer format that has an 8-bit R component in byte 0, and
+--     an 8-bit G component in byte 1.
+--
+-- -   'FORMAT_R8G8_UINT' specifies a two-component, 16-bit unsigned
+--     integer format that has an 8-bit R component in byte 0, and an 8-bit
+--     G component in byte 1.
+--
+-- -   'FORMAT_R8G8_SINT' specifies a two-component, 16-bit signed integer
+--     format that has an 8-bit R component in byte 0, and an 8-bit G
+--     component in byte 1.
+--
+-- -   'FORMAT_R8G8_SRGB' specifies a two-component, 16-bit unsigned
+--     normalized format that has an 8-bit R component stored with sRGB
+--     nonlinear encoding in byte 0, and an 8-bit G component stored with
+--     sRGB nonlinear encoding in byte 1.
+--
+-- -   'FORMAT_R8G8B8_UNORM' specifies a three-component, 24-bit unsigned
+--     normalized format that has an 8-bit R component in byte 0, an 8-bit
+--     G component in byte 1, and an 8-bit B component in byte 2.
+--
+-- -   'FORMAT_R8G8B8_SNORM' specifies a three-component, 24-bit signed
+--     normalized format that has an 8-bit R component in byte 0, an 8-bit
+--     G component in byte 1, and an 8-bit B component in byte 2.
+--
+-- -   'FORMAT_R8G8B8_USCALED' specifies a three-component, 24-bit unsigned
+--     scaled format that has an 8-bit R component in byte 0, an 8-bit G
+--     component in byte 1, and an 8-bit B component in byte 2.
+--
+-- -   'FORMAT_R8G8B8_SSCALED' specifies a three-component, 24-bit signed
+--     scaled format that has an 8-bit R component in byte 0, an 8-bit G
+--     component in byte 1, and an 8-bit B component in byte 2.
+--
+-- -   'FORMAT_R8G8B8_UINT' specifies a three-component, 24-bit unsigned
+--     integer format that has an 8-bit R component in byte 0, an 8-bit G
+--     component in byte 1, and an 8-bit B component in byte 2.
+--
+-- -   'FORMAT_R8G8B8_SINT' specifies a three-component, 24-bit signed
+--     integer format that has an 8-bit R component in byte 0, an 8-bit G
+--     component in byte 1, and an 8-bit B component in byte 2.
+--
+-- -   'FORMAT_R8G8B8_SRGB' specifies a three-component, 24-bit unsigned
+--     normalized format that has an 8-bit R component stored with sRGB
+--     nonlinear encoding in byte 0, an 8-bit G component stored with sRGB
+--     nonlinear encoding in byte 1, and an 8-bit B component stored with
+--     sRGB nonlinear encoding in byte 2.
+--
+-- -   'FORMAT_B8G8R8_UNORM' specifies a three-component, 24-bit unsigned
+--     normalized format that has an 8-bit B component in byte 0, an 8-bit
+--     G component in byte 1, and an 8-bit R component in byte 2.
+--
+-- -   'FORMAT_B8G8R8_SNORM' specifies a three-component, 24-bit signed
+--     normalized format that has an 8-bit B component in byte 0, an 8-bit
+--     G component in byte 1, and an 8-bit R component in byte 2.
+--
+-- -   'FORMAT_B8G8R8_USCALED' specifies a three-component, 24-bit unsigned
+--     scaled format that has an 8-bit B component in byte 0, an 8-bit G
+--     component in byte 1, and an 8-bit R component in byte 2.
+--
+-- -   'FORMAT_B8G8R8_SSCALED' specifies a three-component, 24-bit signed
+--     scaled format that has an 8-bit B component in byte 0, an 8-bit G
+--     component in byte 1, and an 8-bit R component in byte 2.
+--
+-- -   'FORMAT_B8G8R8_UINT' specifies a three-component, 24-bit unsigned
+--     integer format that has an 8-bit B component in byte 0, an 8-bit G
+--     component in byte 1, and an 8-bit R component in byte 2.
+--
+-- -   'FORMAT_B8G8R8_SINT' specifies a three-component, 24-bit signed
+--     integer format that has an 8-bit B component in byte 0, an 8-bit G
+--     component in byte 1, and an 8-bit R component in byte 2.
+--
+-- -   'FORMAT_B8G8R8_SRGB' specifies a three-component, 24-bit unsigned
+--     normalized format that has an 8-bit B component stored with sRGB
+--     nonlinear encoding in byte 0, an 8-bit G component stored with sRGB
+--     nonlinear encoding in byte 1, and an 8-bit R component stored with
+--     sRGB nonlinear encoding in byte 2.
+--
+-- -   'FORMAT_R8G8B8A8_UNORM' specifies a four-component, 32-bit unsigned
+--     normalized format that has an 8-bit R component in byte 0, an 8-bit
+--     G component in byte 1, an 8-bit B component in byte 2, and an 8-bit
+--     A component in byte 3.
+--
+-- -   'FORMAT_R8G8B8A8_SNORM' specifies a four-component, 32-bit signed
+--     normalized format that has an 8-bit R component in byte 0, an 8-bit
+--     G component in byte 1, an 8-bit B component in byte 2, and an 8-bit
+--     A component in byte 3.
+--
+-- -   'FORMAT_R8G8B8A8_USCALED' specifies a four-component, 32-bit
+--     unsigned scaled format that has an 8-bit R component in byte 0, an
+--     8-bit G component in byte 1, an 8-bit B component in byte 2, and an
+--     8-bit A component in byte 3.
+--
+-- -   'FORMAT_R8G8B8A8_SSCALED' specifies a four-component, 32-bit signed
+--     scaled format that has an 8-bit R component in byte 0, an 8-bit G
+--     component in byte 1, an 8-bit B component in byte 2, and an 8-bit A
+--     component in byte 3.
+--
+-- -   'FORMAT_R8G8B8A8_UINT' specifies a four-component, 32-bit unsigned
+--     integer format that has an 8-bit R component in byte 0, an 8-bit G
+--     component in byte 1, an 8-bit B component in byte 2, and an 8-bit A
+--     component in byte 3.
+--
+-- -   'FORMAT_R8G8B8A8_SINT' specifies a four-component, 32-bit signed
+--     integer format that has an 8-bit R component in byte 0, an 8-bit G
+--     component in byte 1, an 8-bit B component in byte 2, and an 8-bit A
+--     component in byte 3.
+--
+-- -   'FORMAT_R8G8B8A8_SRGB' specifies a four-component, 32-bit unsigned
+--     normalized format that has an 8-bit R component stored with sRGB
+--     nonlinear encoding in byte 0, an 8-bit G component stored with sRGB
+--     nonlinear encoding in byte 1, an 8-bit B component stored with sRGB
+--     nonlinear encoding in byte 2, and an 8-bit A component in byte 3.
+--
+-- -   'FORMAT_B8G8R8A8_UNORM' specifies a four-component, 32-bit unsigned
+--     normalized format that has an 8-bit B component in byte 0, an 8-bit
+--     G component in byte 1, an 8-bit R component in byte 2, and an 8-bit
+--     A component in byte 3.
+--
+-- -   'FORMAT_B8G8R8A8_SNORM' specifies a four-component, 32-bit signed
+--     normalized format that has an 8-bit B component in byte 0, an 8-bit
+--     G component in byte 1, an 8-bit R component in byte 2, and an 8-bit
+--     A component in byte 3.
+--
+-- -   'FORMAT_B8G8R8A8_USCALED' specifies a four-component, 32-bit
+--     unsigned scaled format that has an 8-bit B component in byte 0, an
+--     8-bit G component in byte 1, an 8-bit R component in byte 2, and an
+--     8-bit A component in byte 3.
+--
+-- -   'FORMAT_B8G8R8A8_SSCALED' specifies a four-component, 32-bit signed
+--     scaled format that has an 8-bit B component in byte 0, an 8-bit G
+--     component in byte 1, an 8-bit R component in byte 2, and an 8-bit A
+--     component in byte 3.
+--
+-- -   'FORMAT_B8G8R8A8_UINT' specifies a four-component, 32-bit unsigned
+--     integer format that has an 8-bit B component in byte 0, an 8-bit G
+--     component in byte 1, an 8-bit R component in byte 2, and an 8-bit A
+--     component in byte 3.
+--
+-- -   'FORMAT_B8G8R8A8_SINT' specifies a four-component, 32-bit signed
+--     integer format that has an 8-bit B component in byte 0, an 8-bit G
+--     component in byte 1, an 8-bit R component in byte 2, and an 8-bit A
+--     component in byte 3.
+--
+-- -   'FORMAT_B8G8R8A8_SRGB' specifies a four-component, 32-bit unsigned
+--     normalized format that has an 8-bit B component stored with sRGB
+--     nonlinear encoding in byte 0, an 8-bit G component stored with sRGB
+--     nonlinear encoding in byte 1, an 8-bit R component stored with sRGB
+--     nonlinear encoding in byte 2, and an 8-bit A component in byte 3.
+--
+-- -   'FORMAT_A8B8G8R8_UNORM_PACK32' specifies a four-component, 32-bit
+--     packed unsigned normalized format that has an 8-bit A component in
+--     bits 24..31, an 8-bit B component in bits 16..23, an 8-bit G
+--     component in bits 8..15, and an 8-bit R component in bits 0..7.
+--
+-- -   'FORMAT_A8B8G8R8_SNORM_PACK32' specifies a four-component, 32-bit
+--     packed signed normalized format that has an 8-bit A component in
+--     bits 24..31, an 8-bit B component in bits 16..23, an 8-bit G
+--     component in bits 8..15, and an 8-bit R component in bits 0..7.
+--
+-- -   'FORMAT_A8B8G8R8_USCALED_PACK32' specifies a four-component, 32-bit
+--     packed unsigned scaled integer format that has an 8-bit A component
+--     in bits 24..31, an 8-bit B component in bits 16..23, an 8-bit G
+--     component in bits 8..15, and an 8-bit R component in bits 0..7.
+--
+-- -   'FORMAT_A8B8G8R8_SSCALED_PACK32' specifies a four-component, 32-bit
+--     packed signed scaled integer format that has an 8-bit A component in
+--     bits 24..31, an 8-bit B component in bits 16..23, an 8-bit G
+--     component in bits 8..15, and an 8-bit R component in bits 0..7.
+--
+-- -   'FORMAT_A8B8G8R8_UINT_PACK32' specifies a four-component, 32-bit
+--     packed unsigned integer format that has an 8-bit A component in bits
+--     24..31, an 8-bit B component in bits 16..23, an 8-bit G component in
+--     bits 8..15, and an 8-bit R component in bits 0..7.
+--
+-- -   'FORMAT_A8B8G8R8_SINT_PACK32' specifies a four-component, 32-bit
+--     packed signed integer format that has an 8-bit A component in bits
+--     24..31, an 8-bit B component in bits 16..23, an 8-bit G component in
+--     bits 8..15, and an 8-bit R component in bits 0..7.
+--
+-- -   'FORMAT_A8B8G8R8_SRGB_PACK32' specifies a four-component, 32-bit
+--     packed unsigned normalized format that has an 8-bit A component in
+--     bits 24..31, an 8-bit B component stored with sRGB nonlinear
+--     encoding in bits 16..23, an 8-bit G component stored with sRGB
+--     nonlinear encoding in bits 8..15, and an 8-bit R component stored
+--     with sRGB nonlinear encoding in bits 0..7.
+--
+-- -   'FORMAT_A2R10G10B10_UNORM_PACK32' specifies a four-component, 32-bit
+--     packed unsigned normalized format that has a 2-bit A component in
+--     bits 30..31, a 10-bit R component in bits 20..29, a 10-bit G
+--     component in bits 10..19, and a 10-bit B component in bits 0..9.
+--
+-- -   'FORMAT_A2R10G10B10_SNORM_PACK32' specifies a four-component, 32-bit
+--     packed signed normalized format that has a 2-bit A component in bits
+--     30..31, a 10-bit R component in bits 20..29, a 10-bit G component in
+--     bits 10..19, and a 10-bit B component in bits 0..9.
+--
+-- -   'FORMAT_A2R10G10B10_USCALED_PACK32' specifies a four-component,
+--     32-bit packed unsigned scaled integer format that has a 2-bit A
+--     component in bits 30..31, a 10-bit R component in bits 20..29, a
+--     10-bit G component in bits 10..19, and a 10-bit B component in bits
+--     0..9.
+--
+-- -   'FORMAT_A2R10G10B10_SSCALED_PACK32' specifies a four-component,
+--     32-bit packed signed scaled integer format that has a 2-bit A
+--     component in bits 30..31, a 10-bit R component in bits 20..29, a
+--     10-bit G component in bits 10..19, and a 10-bit B component in bits
+--     0..9.
+--
+-- -   'FORMAT_A2R10G10B10_UINT_PACK32' specifies a four-component, 32-bit
+--     packed unsigned integer format that has a 2-bit A component in bits
+--     30..31, a 10-bit R component in bits 20..29, a 10-bit G component in
+--     bits 10..19, and a 10-bit B component in bits 0..9.
+--
+-- -   'FORMAT_A2R10G10B10_SINT_PACK32' specifies a four-component, 32-bit
+--     packed signed integer format that has a 2-bit A component in bits
+--     30..31, a 10-bit R component in bits 20..29, a 10-bit G component in
+--     bits 10..19, and a 10-bit B component in bits 0..9.
+--
+-- -   'FORMAT_A2B10G10R10_UNORM_PACK32' specifies a four-component, 32-bit
+--     packed unsigned normalized format that has a 2-bit A component in
+--     bits 30..31, a 10-bit B component in bits 20..29, a 10-bit G
+--     component in bits 10..19, and a 10-bit R component in bits 0..9.
+--
+-- -   'FORMAT_A2B10G10R10_SNORM_PACK32' specifies a four-component, 32-bit
+--     packed signed normalized format that has a 2-bit A component in bits
+--     30..31, a 10-bit B component in bits 20..29, a 10-bit G component in
+--     bits 10..19, and a 10-bit R component in bits 0..9.
+--
+-- -   'FORMAT_A2B10G10R10_USCALED_PACK32' specifies a four-component,
+--     32-bit packed unsigned scaled integer format that has a 2-bit A
+--     component in bits 30..31, a 10-bit B component in bits 20..29, a
+--     10-bit G component in bits 10..19, and a 10-bit R component in bits
+--     0..9.
+--
+-- -   'FORMAT_A2B10G10R10_SSCALED_PACK32' specifies a four-component,
+--     32-bit packed signed scaled integer format that has a 2-bit A
+--     component in bits 30..31, a 10-bit B component in bits 20..29, a
+--     10-bit G component in bits 10..19, and a 10-bit R component in bits
+--     0..9.
+--
+-- -   'FORMAT_A2B10G10R10_UINT_PACK32' specifies a four-component, 32-bit
+--     packed unsigned integer format that has a 2-bit A component in bits
+--     30..31, a 10-bit B component in bits 20..29, a 10-bit G component in
+--     bits 10..19, and a 10-bit R component in bits 0..9.
+--
+-- -   'FORMAT_A2B10G10R10_SINT_PACK32' specifies a four-component, 32-bit
+--     packed signed integer format that has a 2-bit A component in bits
+--     30..31, a 10-bit B component in bits 20..29, a 10-bit G component in
+--     bits 10..19, and a 10-bit R component in bits 0..9.
+--
+-- -   'FORMAT_R16_UNORM' specifies a one-component, 16-bit unsigned
+--     normalized format that has a single 16-bit R component.
+--
+-- -   'FORMAT_R16_SNORM' specifies a one-component, 16-bit signed
+--     normalized format that has a single 16-bit R component.
+--
+-- -   'FORMAT_R16_USCALED' specifies a one-component, 16-bit unsigned
+--     scaled integer format that has a single 16-bit R component.
+--
+-- -   'FORMAT_R16_SSCALED' specifies a one-component, 16-bit signed scaled
+--     integer format that has a single 16-bit R component.
+--
+-- -   'FORMAT_R16_UINT' specifies a one-component, 16-bit unsigned integer
+--     format that has a single 16-bit R component.
+--
+-- -   'FORMAT_R16_SINT' specifies a one-component, 16-bit signed integer
+--     format that has a single 16-bit R component.
+--
+-- -   'FORMAT_R16_SFLOAT' specifies a one-component, 16-bit signed
+--     floating-point format that has a single 16-bit R component.
+--
+-- -   'FORMAT_R16G16_UNORM' specifies a two-component, 32-bit unsigned
+--     normalized format that has a 16-bit R component in bytes 0..1, and a
+--     16-bit G component in bytes 2..3.
+--
+-- -   'FORMAT_R16G16_SNORM' specifies a two-component, 32-bit signed
+--     normalized format that has a 16-bit R component in bytes 0..1, and a
+--     16-bit G component in bytes 2..3.
+--
+-- -   'FORMAT_R16G16_USCALED' specifies a two-component, 32-bit unsigned
+--     scaled integer format that has a 16-bit R component in bytes 0..1,
+--     and a 16-bit G component in bytes 2..3.
+--
+-- -   'FORMAT_R16G16_SSCALED' specifies a two-component, 32-bit signed
+--     scaled integer format that has a 16-bit R component in bytes 0..1,
+--     and a 16-bit G component in bytes 2..3.
+--
+-- -   'FORMAT_R16G16_UINT' specifies a two-component, 32-bit unsigned
+--     integer format that has a 16-bit R component in bytes 0..1, and a
+--     16-bit G component in bytes 2..3.
+--
+-- -   'FORMAT_R16G16_SINT' specifies a two-component, 32-bit signed
+--     integer format that has a 16-bit R component in bytes 0..1, and a
+--     16-bit G component in bytes 2..3.
+--
+-- -   'FORMAT_R16G16_SFLOAT' specifies a two-component, 32-bit signed
+--     floating-point format that has a 16-bit R component in bytes 0..1,
+--     and a 16-bit G component in bytes 2..3.
+--
+-- -   'FORMAT_R16G16B16_UNORM' specifies a three-component, 48-bit
+--     unsigned normalized format that has a 16-bit R component in bytes
+--     0..1, a 16-bit G component in bytes 2..3, and a 16-bit B component
+--     in bytes 4..5.
+--
+-- -   'FORMAT_R16G16B16_SNORM' specifies a three-component, 48-bit signed
+--     normalized format that has a 16-bit R component in bytes 0..1, a
+--     16-bit G component in bytes 2..3, and a 16-bit B component in bytes
+--     4..5.
+--
+-- -   'FORMAT_R16G16B16_USCALED' specifies a three-component, 48-bit
+--     unsigned scaled integer format that has a 16-bit R component in
+--     bytes 0..1, a 16-bit G component in bytes 2..3, and a 16-bit B
+--     component in bytes 4..5.
+--
+-- -   'FORMAT_R16G16B16_SSCALED' specifies a three-component, 48-bit
+--     signed scaled integer format that has a 16-bit R component in bytes
+--     0..1, a 16-bit G component in bytes 2..3, and a 16-bit B component
+--     in bytes 4..5.
+--
+-- -   'FORMAT_R16G16B16_UINT' specifies a three-component, 48-bit unsigned
+--     integer format that has a 16-bit R component in bytes 0..1, a 16-bit
+--     G component in bytes 2..3, and a 16-bit B component in bytes 4..5.
+--
+-- -   'FORMAT_R16G16B16_SINT' specifies a three-component, 48-bit signed
+--     integer format that has a 16-bit R component in bytes 0..1, a 16-bit
+--     G component in bytes 2..3, and a 16-bit B component in bytes 4..5.
+--
+-- -   'FORMAT_R16G16B16_SFLOAT' specifies a three-component, 48-bit signed
+--     floating-point format that has a 16-bit R component in bytes 0..1, a
+--     16-bit G component in bytes 2..3, and a 16-bit B component in bytes
+--     4..5.
+--
+-- -   'FORMAT_R16G16B16A16_UNORM' specifies a four-component, 64-bit
+--     unsigned normalized format that has a 16-bit R component in bytes
+--     0..1, a 16-bit G component in bytes 2..3, a 16-bit B component in
+--     bytes 4..5, and a 16-bit A component in bytes 6..7.
+--
+-- -   'FORMAT_R16G16B16A16_SNORM' specifies a four-component, 64-bit
+--     signed normalized format that has a 16-bit R component in bytes
+--     0..1, a 16-bit G component in bytes 2..3, a 16-bit B component in
+--     bytes 4..5, and a 16-bit A component in bytes 6..7.
+--
+-- -   'FORMAT_R16G16B16A16_USCALED' specifies a four-component, 64-bit
+--     unsigned scaled integer format that has a 16-bit R component in
+--     bytes 0..1, a 16-bit G component in bytes 2..3, a 16-bit B component
+--     in bytes 4..5, and a 16-bit A component in bytes 6..7.
+--
+-- -   'FORMAT_R16G16B16A16_SSCALED' specifies a four-component, 64-bit
+--     signed scaled integer format that has a 16-bit R component in bytes
+--     0..1, a 16-bit G component in bytes 2..3, a 16-bit B component in
+--     bytes 4..5, and a 16-bit A component in bytes 6..7.
+--
+-- -   'FORMAT_R16G16B16A16_UINT' specifies a four-component, 64-bit
+--     unsigned integer format that has a 16-bit R component in bytes 0..1,
+--     a 16-bit G component in bytes 2..3, a 16-bit B component in bytes
+--     4..5, and a 16-bit A component in bytes 6..7.
+--
+-- -   'FORMAT_R16G16B16A16_SINT' specifies a four-component, 64-bit signed
+--     integer format that has a 16-bit R component in bytes 0..1, a 16-bit
+--     G component in bytes 2..3, a 16-bit B component in bytes 4..5, and a
+--     16-bit A component in bytes 6..7.
+--
+-- -   'FORMAT_R16G16B16A16_SFLOAT' specifies a four-component, 64-bit
+--     signed floating-point format that has a 16-bit R component in bytes
+--     0..1, a 16-bit G component in bytes 2..3, a 16-bit B component in
+--     bytes 4..5, and a 16-bit A component in bytes 6..7.
+--
+-- -   'FORMAT_R32_UINT' specifies a one-component, 32-bit unsigned integer
+--     format that has a single 32-bit R component.
+--
+-- -   'FORMAT_R32_SINT' specifies a one-component, 32-bit signed integer
+--     format that has a single 32-bit R component.
+--
+-- -   'FORMAT_R32_SFLOAT' specifies a one-component, 32-bit signed
+--     floating-point format that has a single 32-bit R component.
+--
+-- -   'FORMAT_R32G32_UINT' specifies a two-component, 64-bit unsigned
+--     integer format that has a 32-bit R component in bytes 0..3, and a
+--     32-bit G component in bytes 4..7.
+--
+-- -   'FORMAT_R32G32_SINT' specifies a two-component, 64-bit signed
+--     integer format that has a 32-bit R component in bytes 0..3, and a
+--     32-bit G component in bytes 4..7.
+--
+-- -   'FORMAT_R32G32_SFLOAT' specifies a two-component, 64-bit signed
+--     floating-point format that has a 32-bit R component in bytes 0..3,
+--     and a 32-bit G component in bytes 4..7.
+--
+-- -   'FORMAT_R32G32B32_UINT' specifies a three-component, 96-bit unsigned
+--     integer format that has a 32-bit R component in bytes 0..3, a 32-bit
+--     G component in bytes 4..7, and a 32-bit B component in bytes 8..11.
+--
+-- -   'FORMAT_R32G32B32_SINT' specifies a three-component, 96-bit signed
+--     integer format that has a 32-bit R component in bytes 0..3, a 32-bit
+--     G component in bytes 4..7, and a 32-bit B component in bytes 8..11.
+--
+-- -   'FORMAT_R32G32B32_SFLOAT' specifies a three-component, 96-bit signed
+--     floating-point format that has a 32-bit R component in bytes 0..3, a
+--     32-bit G component in bytes 4..7, and a 32-bit B component in bytes
+--     8..11.
+--
+-- -   'FORMAT_R32G32B32A32_UINT' specifies a four-component, 128-bit
+--     unsigned integer format that has a 32-bit R component in bytes 0..3,
+--     a 32-bit G component in bytes 4..7, a 32-bit B component in bytes
+--     8..11, and a 32-bit A component in bytes 12..15.
+--
+-- -   'FORMAT_R32G32B32A32_SINT' specifies a four-component, 128-bit
+--     signed integer format that has a 32-bit R component in bytes 0..3, a
+--     32-bit G component in bytes 4..7, a 32-bit B component in bytes
+--     8..11, and a 32-bit A component in bytes 12..15.
+--
+-- -   'FORMAT_R32G32B32A32_SFLOAT' specifies a four-component, 128-bit
+--     signed floating-point format that has a 32-bit R component in bytes
+--     0..3, a 32-bit G component in bytes 4..7, a 32-bit B component in
+--     bytes 8..11, and a 32-bit A component in bytes 12..15.
+--
+-- -   'FORMAT_R64_UINT' specifies a one-component, 64-bit unsigned integer
+--     format that has a single 64-bit R component.
+--
+-- -   'FORMAT_R64_SINT' specifies a one-component, 64-bit signed integer
+--     format that has a single 64-bit R component.
+--
+-- -   'FORMAT_R64_SFLOAT' specifies a one-component, 64-bit signed
+--     floating-point format that has a single 64-bit R component.
+--
+-- -   'FORMAT_R64G64_UINT' specifies a two-component, 128-bit unsigned
+--     integer format that has a 64-bit R component in bytes 0..7, and a
+--     64-bit G component in bytes 8..15.
+--
+-- -   'FORMAT_R64G64_SINT' specifies a two-component, 128-bit signed
+--     integer format that has a 64-bit R component in bytes 0..7, and a
+--     64-bit G component in bytes 8..15.
+--
+-- -   'FORMAT_R64G64_SFLOAT' specifies a two-component, 128-bit signed
+--     floating-point format that has a 64-bit R component in bytes 0..7,
+--     and a 64-bit G component in bytes 8..15.
+--
+-- -   'FORMAT_R64G64B64_UINT' specifies a three-component, 192-bit
+--     unsigned integer format that has a 64-bit R component in bytes 0..7,
+--     a 64-bit G component in bytes 8..15, and a 64-bit B component in
+--     bytes 16..23.
+--
+-- -   'FORMAT_R64G64B64_SINT' specifies a three-component, 192-bit signed
+--     integer format that has a 64-bit R component in bytes 0..7, a 64-bit
+--     G component in bytes 8..15, and a 64-bit B component in bytes
+--     16..23.
+--
+-- -   'FORMAT_R64G64B64_SFLOAT' specifies a three-component, 192-bit
+--     signed floating-point format that has a 64-bit R component in bytes
+--     0..7, a 64-bit G component in bytes 8..15, and a 64-bit B component
+--     in bytes 16..23.
+--
+-- -   'FORMAT_R64G64B64A64_UINT' specifies a four-component, 256-bit
+--     unsigned integer format that has a 64-bit R component in bytes 0..7,
+--     a 64-bit G component in bytes 8..15, a 64-bit B component in bytes
+--     16..23, and a 64-bit A component in bytes 24..31.
+--
+-- -   'FORMAT_R64G64B64A64_SINT' specifies a four-component, 256-bit
+--     signed integer format that has a 64-bit R component in bytes 0..7, a
+--     64-bit G component in bytes 8..15, a 64-bit B component in bytes
+--     16..23, and a 64-bit A component in bytes 24..31.
+--
+-- -   'FORMAT_R64G64B64A64_SFLOAT' specifies a four-component, 256-bit
+--     signed floating-point format that has a 64-bit R component in bytes
+--     0..7, a 64-bit G component in bytes 8..15, a 64-bit B component in
+--     bytes 16..23, and a 64-bit A component in bytes 24..31.
+--
+-- -   'FORMAT_B10G11R11_UFLOAT_PACK32' specifies a three-component, 32-bit
+--     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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#fundamentals-fp10>
+--     and
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#fundamentals-fp11>.
+--
+-- -   'FORMAT_E5B9G9R9_UFLOAT_PACK32' specifies a three-component, 32-bit
+--     packed unsigned floating-point format that has a 5-bit shared
+--     exponent in bits 27..31, a 9-bit B component mantissa in bits
+--     18..26, a 9-bit G component mantissa in bits 9..17, and a 9-bit R
+--     component mantissa in bits 0..8.
+--
+-- -   'FORMAT_D16_UNORM' specifies a one-component, 16-bit unsigned
+--     normalized format that has a single 16-bit depth component.
+--
+-- -   'FORMAT_X8_D24_UNORM_PACK32' specifies a two-component, 32-bit
+--     format that has 24 unsigned normalized bits in the depth component
+--     and, /optionally/, 8 bits that are unused.
+--
+-- -   'FORMAT_D32_SFLOAT' specifies a one-component, 32-bit signed
+--     floating-point format that has 32 bits in the depth component.
+--
+-- -   'FORMAT_S8_UINT' specifies a one-component, 8-bit unsigned integer
+--     format that has 8 bits in the stencil component.
+--
+-- -   'FORMAT_D16_UNORM_S8_UINT' specifies a two-component, 24-bit format
+--     that has 16 unsigned normalized bits in the depth component and 8
+--     unsigned integer bits in the stencil component.
+--
+-- -   'FORMAT_D24_UNORM_S8_UINT' specifies a two-component, 32-bit packed
+--     format that has 8 unsigned integer bits in the stencil component,
+--     and 24 unsigned normalized bits in the depth component.
+--
+-- -   'FORMAT_D32_SFLOAT_S8_UINT' specifies a two-component format that
+--     has 32 signed float bits in the depth component and 8 unsigned
+--     integer bits in the stencil component. There are /optionally/ 24
+--     bits that are unused.
+--
+-- -   'FORMAT_BC1_RGB_UNORM_BLOCK' specifies a three-component,
+--     block-compressed format where each 64-bit compressed texel block
+--     encodes a 4×4 rectangle of unsigned normalized RGB texel data. This
+--     format has no alpha and is considered opaque.
+--
+-- -   'FORMAT_BC1_RGB_SRGB_BLOCK' specifies a three-component,
+--     block-compressed format where each 64-bit compressed texel block
+--     encodes a 4×4 rectangle of unsigned normalized RGB texel data with
+--     sRGB nonlinear encoding. This format has no alpha and is considered
+--     opaque.
+--
+-- -   'FORMAT_BC1_RGBA_UNORM_BLOCK' specifies a four-component,
+--     block-compressed format where each 64-bit compressed texel block
+--     encodes a 4×4 rectangle of unsigned normalized RGB texel data, and
+--     provides 1 bit of alpha.
+--
+-- -   'FORMAT_BC1_RGBA_SRGB_BLOCK' specifies a four-component,
+--     block-compressed format where each 64-bit compressed texel block
+--     encodes a 4×4 rectangle of unsigned normalized RGB texel data with
+--     sRGB nonlinear encoding, and provides 1 bit of alpha.
+--
+-- -   'FORMAT_BC2_UNORM_BLOCK' specifies a four-component,
+--     block-compressed format where each 128-bit compressed texel block
+--     encodes a 4×4 rectangle of unsigned normalized RGBA texel data with
+--     the first 64 bits encoding alpha values followed by 64 bits encoding
+--     RGB values.
+--
+-- -   'FORMAT_BC2_SRGB_BLOCK' specifies a four-component, block-compressed
+--     format where each 128-bit compressed texel block encodes a 4×4
+--     rectangle of unsigned normalized RGBA texel data with the first 64
+--     bits encoding alpha values followed by 64 bits encoding RGB values
+--     with sRGB nonlinear encoding.
+--
+-- -   'FORMAT_BC3_UNORM_BLOCK' specifies a four-component,
+--     block-compressed format where each 128-bit compressed texel block
+--     encodes a 4×4 rectangle of unsigned normalized RGBA texel data with
+--     the first 64 bits encoding alpha values followed by 64 bits encoding
+--     RGB values.
+--
+-- -   'FORMAT_BC3_SRGB_BLOCK' specifies a four-component, block-compressed
+--     format where each 128-bit compressed texel block encodes a 4×4
+--     rectangle of unsigned normalized RGBA texel data with the first 64
+--     bits encoding alpha values followed by 64 bits encoding RGB values
+--     with sRGB nonlinear encoding.
+--
+-- -   'FORMAT_BC4_UNORM_BLOCK' specifies a one-component, block-compressed
+--     format where each 64-bit compressed texel block encodes a 4×4
+--     rectangle of unsigned normalized red texel data.
+--
+-- -   'FORMAT_BC4_SNORM_BLOCK' specifies a one-component, block-compressed
+--     format where each 64-bit compressed texel block encodes a 4×4
+--     rectangle of signed normalized red texel data.
+--
+-- -   'FORMAT_BC5_UNORM_BLOCK' specifies a two-component, block-compressed
+--     format where each 128-bit compressed texel block encodes a 4×4
+--     rectangle of unsigned normalized RG texel data with the first 64
+--     bits encoding red values followed by 64 bits encoding green values.
+--
+-- -   'FORMAT_BC5_SNORM_BLOCK' specifies a two-component, block-compressed
+--     format where each 128-bit compressed texel block encodes a 4×4
+--     rectangle of signed normalized RG texel data with the first 64 bits
+--     encoding red values followed by 64 bits encoding green values.
+--
+-- -   'FORMAT_BC6H_UFLOAT_BLOCK' specifies a three-component,
+--     block-compressed format where each 128-bit compressed texel block
+--     encodes a 4×4 rectangle of unsigned floating-point RGB texel data.
+--
+-- -   'FORMAT_BC6H_SFLOAT_BLOCK' specifies a three-component,
+--     block-compressed format where each 128-bit compressed texel block
+--     encodes a 4×4 rectangle of signed floating-point RGB texel data.
+--
+-- -   'FORMAT_BC7_UNORM_BLOCK' specifies a four-component,
+--     block-compressed format where each 128-bit compressed texel block
+--     encodes a 4×4 rectangle of unsigned normalized RGBA texel data.
+--
+-- -   'FORMAT_BC7_SRGB_BLOCK' specifies a four-component, block-compressed
+--     format where each 128-bit compressed texel block encodes a 4×4
+--     rectangle of unsigned normalized RGBA texel data with sRGB nonlinear
+--     encoding applied to the RGB components.
+--
+-- -   'FORMAT_ETC2_R8G8B8_UNORM_BLOCK' specifies a three-component, ETC2
+--     compressed format where each 64-bit compressed texel block encodes a
+--     4×4 rectangle of unsigned normalized RGB texel data. This format has
+--     no alpha and is considered opaque.
+--
+-- -   'FORMAT_ETC2_R8G8B8_SRGB_BLOCK' specifies a three-component, ETC2
+--     compressed format where each 64-bit compressed texel block encodes a
+--     4×4 rectangle of unsigned normalized RGB texel data with sRGB
+--     nonlinear encoding. This format has no alpha and is considered
+--     opaque.
+--
+-- -   'FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK' specifies a four-component, ETC2
+--     compressed format where each 64-bit compressed texel block encodes a
+--     4×4 rectangle of unsigned normalized RGB texel data, and provides 1
+--     bit of alpha.
+--
+-- -   'FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK' specifies a four-component, ETC2
+--     compressed format where each 64-bit compressed texel block encodes a
+--     4×4 rectangle of unsigned normalized RGB texel data with sRGB
+--     nonlinear encoding, and provides 1 bit of alpha.
+--
+-- -   'FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK' specifies a four-component, ETC2
+--     compressed format where each 128-bit compressed texel block encodes
+--     a 4×4 rectangle of unsigned normalized RGBA texel data with the
+--     first 64 bits encoding alpha values followed by 64 bits encoding RGB
+--     values.
+--
+-- -   'FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK' specifies a four-component, ETC2
+--     compressed format where each 128-bit compressed texel block encodes
+--     a 4×4 rectangle of unsigned normalized RGBA texel data with the
+--     first 64 bits encoding alpha values followed by 64 bits encoding RGB
+--     values with sRGB nonlinear encoding applied.
+--
+-- -   'FORMAT_EAC_R11_UNORM_BLOCK' specifies a one-component, ETC2
+--     compressed format where each 64-bit compressed texel block encodes a
+--     4×4 rectangle of unsigned normalized red texel data.
+--
+-- -   'FORMAT_EAC_R11_SNORM_BLOCK' specifies a one-component, ETC2
+--     compressed format where each 64-bit compressed texel block encodes a
+--     4×4 rectangle of signed normalized red texel data.
+--
+-- -   'FORMAT_EAC_R11G11_UNORM_BLOCK' specifies a two-component, ETC2
+--     compressed format where each 128-bit compressed texel block encodes
+--     a 4×4 rectangle of unsigned normalized RG texel data with the first
+--     64 bits encoding red values followed by 64 bits encoding green
+--     values.
+--
+-- -   'FORMAT_EAC_R11G11_SNORM_BLOCK' specifies a two-component, ETC2
+--     compressed format where each 128-bit compressed texel block encodes
+--     a 4×4 rectangle of signed normalized RG texel data with the first 64
+--     bits encoding red values followed by 64 bits encoding green values.
+--
+-- -   'FORMAT_ASTC_4x4_UNORM_BLOCK' specifies a four-component, ASTC
+--     compressed format where each 128-bit compressed texel block encodes
+--     a 4×4 rectangle of unsigned normalized RGBA texel data.
+--
+-- -   'FORMAT_ASTC_4x4_SRGB_BLOCK' specifies a four-component, ASTC
+--     compressed format where each 128-bit compressed texel block encodes
+--     a 4×4 rectangle of unsigned normalized RGBA texel data with sRGB
+--     nonlinear encoding applied to the RGB components.
+--
+-- -   '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.
+--
+-- -   'FORMAT_ASTC_5x4_UNORM_BLOCK' specifies a four-component, ASTC
+--     compressed format where each 128-bit compressed texel block encodes
+--     a 5×4 rectangle of unsigned normalized RGBA texel data.
+--
+-- -   'FORMAT_ASTC_5x4_SRGB_BLOCK' specifies a four-component, ASTC
+--     compressed format where each 128-bit compressed texel block encodes
+--     a 5×4 rectangle of unsigned normalized RGBA texel data with sRGB
+--     nonlinear encoding applied to the RGB components.
+--
+-- -   '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.
+--
+-- -   'FORMAT_ASTC_5x5_UNORM_BLOCK' specifies a four-component, ASTC
+--     compressed format where each 128-bit compressed texel block encodes
+--     a 5×5 rectangle of unsigned normalized RGBA texel data.
+--
+-- -   'FORMAT_ASTC_5x5_SRGB_BLOCK' specifies a four-component, ASTC
+--     compressed format where each 128-bit compressed texel block encodes
+--     a 5×5 rectangle of unsigned normalized RGBA texel data with sRGB
+--     nonlinear encoding applied to the RGB components.
+--
+-- -   '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.
+--
+-- -   'FORMAT_ASTC_6x5_UNORM_BLOCK' specifies a four-component, ASTC
+--     compressed format where each 128-bit compressed texel block encodes
+--     a 6×5 rectangle of unsigned normalized RGBA texel data.
+--
+-- -   'FORMAT_ASTC_6x5_SRGB_BLOCK' specifies a four-component, ASTC
+--     compressed format where each 128-bit compressed texel block encodes
+--     a 6×5 rectangle of unsigned normalized RGBA texel data with sRGB
+--     nonlinear encoding applied to the RGB components.
+--
+-- -   '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.
+--
+-- -   'FORMAT_ASTC_6x6_UNORM_BLOCK' specifies a four-component, ASTC
+--     compressed format where each 128-bit compressed texel block encodes
+--     a 6×6 rectangle of unsigned normalized RGBA texel data.
+--
+-- -   'FORMAT_ASTC_6x6_SRGB_BLOCK' specifies a four-component, ASTC
+--     compressed format where each 128-bit compressed texel block encodes
+--     a 6×6 rectangle of unsigned normalized RGBA texel data with sRGB
+--     nonlinear encoding applied to the RGB components.
+--
+-- -   '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.
+--
+-- -   'FORMAT_ASTC_8x5_UNORM_BLOCK' specifies a four-component, ASTC
+--     compressed format where each 128-bit compressed texel block encodes
+--     an 8×5 rectangle of unsigned normalized RGBA texel data.
+--
+-- -   'FORMAT_ASTC_8x5_SRGB_BLOCK' specifies a four-component, ASTC
+--     compressed format where each 128-bit compressed texel block encodes
+--     an 8×5 rectangle of unsigned normalized RGBA texel data with sRGB
+--     nonlinear encoding applied to the RGB components.
+--
+-- -   '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.
+--
+-- -   'FORMAT_ASTC_8x6_UNORM_BLOCK' specifies a four-component, ASTC
+--     compressed format where each 128-bit compressed texel block encodes
+--     an 8×6 rectangle of unsigned normalized RGBA texel data.
+--
+-- -   'FORMAT_ASTC_8x6_SRGB_BLOCK' specifies a four-component, ASTC
+--     compressed format where each 128-bit compressed texel block encodes
+--     an 8×6 rectangle of unsigned normalized RGBA texel data with sRGB
+--     nonlinear encoding applied to the RGB components.
+--
+-- -   '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.
+--
+-- -   'FORMAT_ASTC_8x8_UNORM_BLOCK' specifies a four-component, ASTC
+--     compressed format where each 128-bit compressed texel block encodes
+--     an 8×8 rectangle of unsigned normalized RGBA texel data.
+--
+-- -   'FORMAT_ASTC_8x8_SRGB_BLOCK' specifies a four-component, ASTC
+--     compressed format where each 128-bit compressed texel block encodes
+--     an 8×8 rectangle of unsigned normalized RGBA texel data with sRGB
+--     nonlinear encoding applied to the RGB components.
+--
+-- -   '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.
+--
+-- -   'FORMAT_ASTC_10x5_UNORM_BLOCK' specifies a four-component, ASTC
+--     compressed format where each 128-bit compressed texel block encodes
+--     a 10×5 rectangle of unsigned normalized RGBA texel data.
+--
+-- -   'FORMAT_ASTC_10x5_SRGB_BLOCK' specifies a four-component, ASTC
+--     compressed format where each 128-bit compressed texel block encodes
+--     a 10×5 rectangle of unsigned normalized RGBA texel data with sRGB
+--     nonlinear encoding applied to the RGB components.
+--
+-- -   '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.
+--
+-- -   'FORMAT_ASTC_10x6_UNORM_BLOCK' specifies a four-component, ASTC
+--     compressed format where each 128-bit compressed texel block encodes
+--     a 10×6 rectangle of unsigned normalized RGBA texel data.
+--
+-- -   'FORMAT_ASTC_10x6_SRGB_BLOCK' specifies a four-component, ASTC
+--     compressed format where each 128-bit compressed texel block encodes
+--     a 10×6 rectangle of unsigned normalized RGBA texel data with sRGB
+--     nonlinear encoding applied to the RGB components.
+--
+-- -   '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.
+--
+-- -   'FORMAT_ASTC_10x8_UNORM_BLOCK' specifies a four-component, ASTC
+--     compressed format where each 128-bit compressed texel block encodes
+--     a 10×8 rectangle of unsigned normalized RGBA texel data.
+--
+-- -   'FORMAT_ASTC_10x8_SRGB_BLOCK' specifies a four-component, ASTC
+--     compressed format where each 128-bit compressed texel block encodes
+--     a 10×8 rectangle of unsigned normalized RGBA texel data with sRGB
+--     nonlinear encoding applied to the RGB components.
+--
+-- -   '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.
+--
+-- -   'FORMAT_ASTC_10x10_UNORM_BLOCK' specifies a four-component, ASTC
+--     compressed format where each 128-bit compressed texel block encodes
+--     a 10×10 rectangle of unsigned normalized RGBA texel data.
+--
+-- -   'FORMAT_ASTC_10x10_SRGB_BLOCK' specifies a four-component, ASTC
+--     compressed format where each 128-bit compressed texel block encodes
+--     a 10×10 rectangle of unsigned normalized RGBA texel data with sRGB
+--     nonlinear encoding applied to the RGB components.
+--
+-- -   '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.
+--
+-- -   'FORMAT_ASTC_12x10_UNORM_BLOCK' specifies a four-component, ASTC
+--     compressed format where each 128-bit compressed texel block encodes
+--     a 12×10 rectangle of unsigned normalized RGBA texel data.
+--
+-- -   'FORMAT_ASTC_12x10_SRGB_BLOCK' specifies a four-component, ASTC
+--     compressed format where each 128-bit compressed texel block encodes
+--     a 12×10 rectangle of unsigned normalized RGBA texel data with sRGB
+--     nonlinear encoding applied to the RGB components.
+--
+-- -   '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.
+--
+-- -   'FORMAT_ASTC_12x12_UNORM_BLOCK' specifies a four-component, ASTC
+--     compressed format where each 128-bit compressed texel block encodes
+--     a 12×12 rectangle of unsigned normalized RGBA texel data.
+--
+-- -   'FORMAT_ASTC_12x12_SRGB_BLOCK' specifies a four-component, ASTC
+--     compressed format where each 128-bit compressed texel block encodes
+--     a 12×12 rectangle of unsigned normalized RGBA texel data with sRGB
+--     nonlinear encoding applied to the RGB components.
+--
+-- -   '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.
+--
+-- -   'FORMAT_ASTC_3x3x3_UNORM_BLOCK_EXT' specifies a four-component, ASTC
+--     compressed format where each 128-bit compressed texel block encodes
+--     a 3×3×3 cuboid of unsigned normalized RGBA texel data.
+--
+-- -   'FORMAT_ASTC_3x3x3_SRGB_BLOCK_EXT' specifies a four-component, ASTC
+--     compressed format where each 128-bit compressed texel block encodes
+--     a 3×3×3 cuboid of unsigned normalized RGBA texel data with sRGB
+--     nonlinear encoding applied to the RGB components.
+--
+-- -   'FORMAT_ASTC_3x3x3_SFLOAT_BLOCK_EXT' specifies a four-component,
+--     ASTC compressed format where each 128-bit compressed texel block
+--     encodes a 3×3×3 cuboid of signed floating-point RGBA texel data.
+--
+-- -   'FORMAT_ASTC_4x3x3_UNORM_BLOCK_EXT' specifies a four-component, ASTC
+--     compressed format where each 128-bit compressed texel block encodes
+--     a 4×3×3 cuboid of unsigned normalized RGBA texel data.
+--
+-- -   'FORMAT_ASTC_4x3x3_SRGB_BLOCK_EXT' specifies a four-component, ASTC
+--     compressed format where each 128-bit compressed texel block encodes
+--     a 4×3×3 cuboid of unsigned normalized RGBA texel data with sRGB
+--     nonlinear encoding applied to the RGB components.
+--
+-- -   'FORMAT_ASTC_4x3x3_SFLOAT_BLOCK_EXT' specifies a four-component,
+--     ASTC compressed format where each 128-bit compressed texel block
+--     encodes a 4×3×3 cuboid of signed floating-point RGBA texel data.
+--
+-- -   'FORMAT_ASTC_4x4x3_UNORM_BLOCK_EXT' specifies a four-component, ASTC
+--     compressed format where each 128-bit compressed texel block encodes
+--     a 4×4×3 cuboid of unsigned normalized RGBA texel data.
+--
+-- -   'FORMAT_ASTC_4x4x3_SRGB_BLOCK_EXT' specifies a four-component, ASTC
+--     compressed format where each 128-bit compressed texel block encodes
+--     a 4×4×3 cuboid of unsigned normalized RGBA texel data with sRGB
+--     nonlinear encoding applied to the RGB components.
+--
+-- -   'FORMAT_ASTC_4x4x3_SFLOAT_BLOCK_EXT' specifies a four-component,
+--     ASTC compressed format where each 128-bit compressed texel block
+--     encodes a 4×4×3 cuboid of signed floating-point RGBA texel data.
+--
+-- -   'FORMAT_ASTC_4x4x4_UNORM_BLOCK_EXT' specifies a four-component, ASTC
+--     compressed format where each 128-bit compressed texel block encodes
+--     a 4×4×4 cuboid of unsigned normalized RGBA texel data.
+--
+-- -   'FORMAT_ASTC_4x4x4_SRGB_BLOCK_EXT' specifies a four-component, ASTC
+--     compressed format where each 128-bit compressed texel block encodes
+--     a 4×4×4 cuboid of unsigned normalized RGBA texel data with sRGB
+--     nonlinear encoding applied to the RGB components.
+--
+-- -   'FORMAT_ASTC_4x4x4_SFLOAT_BLOCK_EXT' specifies a four-component,
+--     ASTC compressed format where each 128-bit compressed texel block
+--     encodes a 4×4×4 cuboid of signed floating-point RGBA texel data.
+--
+-- -   'FORMAT_ASTC_5x4x4_UNORM_BLOCK_EXT' specifies a four-component, ASTC
+--     compressed format where each 128-bit compressed texel block encodes
+--     a 5×4×4 cuboid of unsigned normalized RGBA texel data.
+--
+-- -   'FORMAT_ASTC_5x4x4_SRGB_BLOCK_EXT' specifies a four-component, ASTC
+--     compressed format where each 128-bit compressed texel block encodes
+--     a 5×4×4 cuboid of unsigned normalized RGBA texel data with sRGB
+--     nonlinear encoding applied to the RGB components.
+--
+-- -   'FORMAT_ASTC_5x4x4_SFLOAT_BLOCK_EXT' specifies a four-component,
+--     ASTC compressed format where each 128-bit compressed texel block
+--     encodes a 5×4×4 cuboid of signed floating-point RGBA texel data.
+--
+-- -   'FORMAT_ASTC_5x5x4_UNORM_BLOCK_EXT' specifies a four-component, ASTC
+--     compressed format where each 128-bit compressed texel block encodes
+--     a 5×5×4 cuboid of unsigned normalized RGBA texel data.
+--
+-- -   'FORMAT_ASTC_5x5x4_SRGB_BLOCK_EXT' specifies a four-component, ASTC
+--     compressed format where each 128-bit compressed texel block encodes
+--     a 5×5×4 cuboid of unsigned normalized RGBA texel data with sRGB
+--     nonlinear encoding applied to the RGB components.
+--
+-- -   'FORMAT_ASTC_5x5x4_SFLOAT_BLOCK_EXT' specifies a four-component,
+--     ASTC compressed format where each 128-bit compressed texel block
+--     encodes a 5×5×4 cuboid of signed floating-point RGBA texel data.
+--
+-- -   'FORMAT_ASTC_5x5x5_UNORM_BLOCK_EXT' specifies a four-component, ASTC
+--     compressed format where each 128-bit compressed texel block encodes
+--     a 5×5×5 cuboid of unsigned normalized RGBA texel data.
+--
+-- -   'FORMAT_ASTC_5x5x5_SRGB_BLOCK_EXT' specifies a four-component, ASTC
+--     compressed format where each 128-bit compressed texel block encodes
+--     a 5×5×5 cuboid of unsigned normalized RGBA texel data with sRGB
+--     nonlinear encoding applied to the RGB components.
+--
+-- -   'FORMAT_ASTC_5x5x5_SFLOAT_BLOCK_EXT' specifies a four-component,
+--     ASTC compressed format where each 128-bit compressed texel block
+--     encodes a 5×5×5 cuboid of signed floating-point RGBA texel data.
+--
+-- -   'FORMAT_ASTC_6x5x5_UNORM_BLOCK_EXT' specifies a four-component, ASTC
+--     compressed format where each 128-bit compressed texel block encodes
+--     a 6×5×5 cuboid of unsigned normalized RGBA texel data.
+--
+-- -   'FORMAT_ASTC_6x5x5_SRGB_BLOCK_EXT' specifies a four-component, ASTC
+--     compressed format where each 128-bit compressed texel block encodes
+--     a 6×5×5 cuboid of unsigned normalized RGBA texel data with sRGB
+--     nonlinear encoding applied to the RGB components.
+--
+-- -   'FORMAT_ASTC_6x5x5_SFLOAT_BLOCK_EXT' specifies a four-component,
+--     ASTC compressed format where each 128-bit compressed texel block
+--     encodes a 6×5×5 cuboid of signed floating-point RGBA texel data.
+--
+-- -   'FORMAT_ASTC_6x6x5_UNORM_BLOCK_EXT' specifies a four-component, ASTC
+--     compressed format where each 128-bit compressed texel block encodes
+--     a 6×6×5 cuboid of unsigned normalized RGBA texel data.
+--
+-- -   'FORMAT_ASTC_6x6x5_SRGB_BLOCK_EXT' specifies a four-component, ASTC
+--     compressed format where each 128-bit compressed texel block encodes
+--     a 6×6×5 cuboid of unsigned normalized RGBA texel data with sRGB
+--     nonlinear encoding applied to the RGB components.
+--
+-- -   'FORMAT_ASTC_6x6x5_SFLOAT_BLOCK_EXT' specifies a four-component,
+--     ASTC compressed format where each 128-bit compressed texel block
+--     encodes a 6×6×5 cuboid of signed floating-point RGBA texel data.
+--
+-- -   'FORMAT_ASTC_6x6x6_UNORM_BLOCK_EXT' specifies a four-component, ASTC
+--     compressed format where each 128-bit compressed texel block encodes
+--     a 6×6×6 cuboid of unsigned normalized RGBA texel data.
+--
+-- -   'FORMAT_ASTC_6x6x6_SRGB_BLOCK_EXT' specifies a four-component, ASTC
+--     compressed format where each 128-bit compressed texel block encodes
+--     a 6×6×6 cuboid of unsigned normalized RGBA texel data with sRGB
+--     nonlinear encoding applied to the RGB components.
+--
+-- -   'FORMAT_ASTC_6x6x6_SFLOAT_BLOCK_EXT' specifies a four-component,
+--     ASTC compressed format where each 128-bit compressed texel block
+--     encodes a 6×6×6 cuboid of signed floating-point RGBA texel data.
+--
+-- -   'FORMAT_G8B8G8R8_422_UNORM' specifies a four-component, 32-bit
+--     format containing a pair of G components, an R component, and a B
+--     component, collectively encoding a 2×1 rectangle of unsigned
+--     normalized RGB texel data. One G value is present at each /i/
+--     coordinate, with the B and R values shared across both G values and
+--     thus recorded at half the horizontal resolution of the image. This
+--     format has an 8-bit G component for the even /i/ coordinate in byte
+--     0, an 8-bit B component in byte 1, an 8-bit G component for the odd
+--     /i/ coordinate in byte 2, and an 8-bit R component in byte 3. This
+--     format only supports images with a width that is a multiple of two.
+--     For the purposes of the constraints on copy extents, this format is
+--     treated as a compressed format with a 2×1 compressed texel block.
+--
+-- -   'FORMAT_B8G8R8G8_422_UNORM' specifies a four-component, 32-bit
+--     format containing a pair of G components, an R component, and a B
+--     component, collectively encoding a 2×1 rectangle of unsigned
+--     normalized RGB texel data. One G value is present at each /i/
+--     coordinate, with the B and R values shared across both G values and
+--     thus recorded at half the horizontal resolution of the image. This
+--     format has an 8-bit B component in byte 0, an 8-bit G component for
+--     the even /i/ coordinate in byte 1, an 8-bit R component in byte 2,
+--     and an 8-bit G component for the odd /i/ coordinate in byte 3. This
+--     format only supports images with a width that is a multiple of two.
+--     For the purposes of the constraints on copy extents, this format is
+--     treated as a compressed format with a 2×1 compressed texel block.
+--
+-- -   'FORMAT_G8_B8_R8_3PLANE_420_UNORM' specifies an unsigned normalized
+--     /multi-planar format/ that has an 8-bit G component in plane 0, an
+--     8-bit B component in plane 1, and an 8-bit R component in plane 2.
+--     The horizontal and vertical dimensions of the R and B planes are
+--     halved relative to the image dimensions, and each R and B component
+--     is shared with the G components for which
+--     \(\left\lfloor i_G \times 0.5
+--     \right\rfloor = i_B = i_R\) and \(\left\lfloor j_G \times 0.5
+--     \right\rfloor = j_B = j_R\). The location of each plane when this
+--     image 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,
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT'
+--     for the B plane, and
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'
+--     for the R plane. This format only supports images with a width and
+--     height that is a multiple of two.
+--
+-- -   'FORMAT_G8_B8R8_2PLANE_420_UNORM' specifies an unsigned normalized
+--     /multi-planar format/ that has an 8-bit G component in plane 0, and
+--     a two-component, 16-bit BR plane 1 consisting of an 8-bit B
+--     component in byte 0 and an 8-bit R component in byte 1. The
+--     horizontal and vertical dimensions of the BR plane are halved
+--     relative to the image dimensions, and each R and B value is shared
+--     with the G components for which \(\left\lfloor i_G \times 0.5
+--     \right\rfloor = i_B = i_R\) and \(\left\lfloor j_G \times 0.5
+--     \right\rfloor = j_B = j_R\). The location of each plane when this
+--     image is in linear layout can be determined via
+--     'Vulkan.Core10.Image.getImageSubresourceLayout', using
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'
+--     for the G plane, and
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT'
+--     for the BR plane. This format only supports images with a width and
+--     height that is a multiple of two.
+--
+-- -   'FORMAT_G8_B8_R8_3PLANE_422_UNORM' specifies an unsigned normalized
+--     /multi-planar format/ that has an 8-bit G component in plane 0, an
+--     8-bit B component in plane 1, and an 8-bit R component in plane 2.
+--     The horizontal dimension of the R and B plane is halved relative to
+--     the image dimensions, and each R and B value is shared with the G
+--     components for which
+--     \(\left\lfloor i_G \times 0.5 \right\rfloor = i_B =
+--     i_R\). The location of each plane when this image is in linear
+--     layout can be determined via
+--     'Vulkan.Core10.Image.getImageSubresourceLayout', using
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'
+--     for the G plane,
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT'
+--     for the B plane, and
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'
+--     for the R plane. This format only supports images with a width that
+--     is a multiple of two.
+--
+-- -   'FORMAT_G8_B8R8_2PLANE_422_UNORM' specifies an unsigned normalized
+--     /multi-planar format/ that has an 8-bit G component in plane 0, and
+--     a two-component, 16-bit BR plane 1 consisting of an 8-bit B
+--     component in byte 0 and an 8-bit R component in byte 1. The
+--     horizontal dimension of the BR plane is halved relative to the image
+--     dimensions, and each R and B value is shared with the G components
+--     for which \(\left\lfloor i_G \times 0.5 \right\rfloor = i_B = i_R\).
+--     The location of each plane when this image is in linear layout can
+--     be determined via 'Vulkan.Core10.Image.getImageSubresourceLayout',
+--     using
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'
+--     for the G plane, and
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT'
+--     for the BR plane. This format only supports images with a width that
+--     is a multiple of two.
+--
+-- -   'FORMAT_G8_B8_R8_3PLANE_444_UNORM' specifies an unsigned normalized
+--     /multi-planar format/ that has an 8-bit G component in plane 0, an
+--     8-bit B component in plane 1, and an 8-bit R component in plane 2.
+--     Each plane has 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,
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT'
+--     for the B plane, and
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'
+--     for the R plane.
+--
+-- -   'FORMAT_R10X6_UNORM_PACK16' specifies a one-component, 16-bit
+--     unsigned normalized format that has a single 10-bit R component in
+--     the top 10 bits of a 16-bit word, with the bottom 6 bits unused.
+--
+-- -   'FORMAT_R10X6G10X6_UNORM_2PACK16' specifies a two-component, 32-bit
+--     unsigned normalized format that has a 10-bit R component in the top
+--     10 bits of the word in bytes 0..1, and a 10-bit G component in the
+--     top 10 bits of the word in bytes 2..3, with the bottom 6 bits of
+--     each word unused.
+--
+-- -   'FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16' specifies a
+--     four-component, 64-bit unsigned normalized format that has a 10-bit
+--     R component in the top 10 bits of the word in bytes 0..1, a 10-bit G
+--     component in the top 10 bits of the word in bytes 2..3, a 10-bit B
+--     component in the top 10 bits of the word in bytes 4..5, and a 10-bit
+--     A component in the top 10 bits of the word in bytes 6..7, with the
+--     bottom 6 bits of each word unused.
+--
+-- -   'FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16' specifies a
+--     four-component, 64-bit format containing a pair of G components, an
+--     R component, and a B component, collectively encoding a 2×1
+--     rectangle of unsigned normalized RGB texel data. One G value is
+--     present at each /i/ coordinate, with the B and R values shared
+--     across both G values and thus recorded at half the horizontal
+--     resolution of the image. This format has a 10-bit G component for
+--     the even /i/ coordinate in the top 10 bits of the word in bytes
+--     0..1, a 10-bit B component in the top 10 bits of the word in bytes
+--     2..3, a 10-bit G component for the odd /i/ coordinate in the top 10
+--     bits of the word in bytes 4..5, and a 10-bit R component in the top
+--     10 bits of the word in bytes 6..7, with the bottom 6 bits of each
+--     word unused. This format only supports images with a width that is a
+--     multiple of two. For the purposes of the constraints on copy
+--     extents, this format is treated as a compressed format with a 2×1
+--     compressed texel block.
+--
+-- -   'FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16' specifies a
+--     four-component, 64-bit format containing a pair of G components, an
+--     R component, and a B component, collectively encoding a 2×1
+--     rectangle of unsigned normalized RGB texel data. One G value is
+--     present at each /i/ coordinate, with the B and R values shared
+--     across both G values and thus recorded at half the horizontal
+--     resolution of the image. This format has a 10-bit B component in the
+--     top 10 bits of the word in bytes 0..1, a 10-bit G component for the
+--     even /i/ coordinate in the top 10 bits of the word in bytes 2..3, a
+--     10-bit R component in the top 10 bits of the word in bytes 4..5, and
+--     a 10-bit G component for the odd /i/ coordinate in the top 10 bits
+--     of the word in bytes 6..7, with the bottom 6 bits of each word
+--     unused. This format only supports images with a width that is a
+--     multiple of two. For the purposes of the constraints on copy
+--     extents, this format is treated as a compressed format with a 2×1
+--     compressed texel block.
+--
+-- -   'FORMAT_G10X6_B10X6_R10X6_3PLANE_420_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, a
+--     10-bit B component in the top 10 bits of each 16-bit word of plane
+--     1, and a 10-bit R component in the top 10 bits of each 16-bit word
+--     of plane 2, with the bottom 6 bits of each word unused. The
+--     horizontal and vertical dimensions of the R and B planes are halved
+--     relative to the image dimensions, and each R and B component is
+--     shared with the G components for which \(\left\lfloor i_G \times 0.5
+--     \right\rfloor = i_B = i_R\) and \(\left\lfloor j_G \times 0.5
+--     \right\rfloor = j_B = j_R\). The location of each plane when this
+--     image 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,
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT'
+--     for the B plane, and
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'
+--     for the R plane. This format only supports images with a width and
+--     height that is a multiple of two.
+--
+-- -   'FORMAT_G10X6_B10X6R10X6_2PLANE_420_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, with the
+--     bottom 6 bits of each word unused. The horizontal and vertical
+--     dimensions of the BR plane are halved relative to the image
+--     dimensions, and each R and B value is shared with the G components
+--     for which \(\left\lfloor i_G \times 0.5
+--     \right\rfloor = i_B = i_R\) and \(\left\lfloor j_G \times 0.5
+--     \right\rfloor = j_B = j_R\). The location of each plane when this
+--     image is in linear layout can be determined via
+--     'Vulkan.Core10.Image.getImageSubresourceLayout', using
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'
+--     for the G plane, and
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT'
+--     for the BR plane. This format only supports images with a width and
+--     height that is a multiple of two.
+--
+-- -   'FORMAT_G10X6_B10X6_R10X6_3PLANE_422_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, a
+--     10-bit B component in the top 10 bits of each 16-bit word of plane
+--     1, and a 10-bit R component in the top 10 bits of each 16-bit word
+--     of plane 2, with the bottom 6 bits of each word unused. The
+--     horizontal dimension of the R and B plane is halved relative to the
+--     image dimensions, and each R and B value is shared with the G
+--     components for which
+--     \(\left\lfloor i_G \times 0.5 \right\rfloor = i_B =
+--     i_R\). The location of each plane when this image is in linear
+--     layout can be determined via
+--     'Vulkan.Core10.Image.getImageSubresourceLayout', using
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'
+--     for the G plane,
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT'
+--     for the B plane, and
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'
+--     for the R plane. This format only supports images with a width that
+--     is a multiple of two.
+--
+-- -   'FORMAT_G10X6_B10X6R10X6_2PLANE_422_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, with the
+--     bottom 6 bits of each word unused. The horizontal dimension of the
+--     BR plane is halved relative to the image dimensions, and each R and
+--     B value is shared with the G components for which
+--     \(\left\lfloor i_G \times 0.5 \right\rfloor = i_B = i_R\). The
+--     location of each plane when this image is in linear layout can be
+--     determined via 'Vulkan.Core10.Image.getImageSubresourceLayout',
+--     using
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'
+--     for the G plane, and
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT'
+--     for the BR plane. This format only supports images with a width that
+--     is a multiple of two.
+--
+-- -   'FORMAT_G10X6_B10X6_R10X6_3PLANE_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, a
+--     10-bit B component in the top 10 bits of each 16-bit word of plane
+--     1, and a 10-bit R component in the top 10 bits of each 16-bit word
+--     of plane 2, with the bottom 6 bits of each word unused. Each plane
+--     has 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,
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT'
+--     for the B plane, and
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'
+--     for the R plane.
+--
+-- -   'FORMAT_R12X4_UNORM_PACK16' specifies a one-component, 16-bit
+--     unsigned normalized format that has a single 12-bit R component in
+--     the top 12 bits of a 16-bit word, with the bottom 4 bits unused.
+--
+-- -   'FORMAT_R12X4G12X4_UNORM_2PACK16' specifies a two-component, 32-bit
+--     unsigned normalized format that has a 12-bit R component in the top
+--     12 bits of the word in bytes 0..1, and a 12-bit G component in the
+--     top 12 bits of the word in bytes 2..3, with the bottom 4 bits of
+--     each word unused.
+--
+-- -   'FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16' specifies a
+--     four-component, 64-bit unsigned normalized format that has a 12-bit
+--     R component in the top 12 bits of the word in bytes 0..1, a 12-bit G
+--     component in the top 12 bits of the word in bytes 2..3, a 12-bit B
+--     component in the top 12 bits of the word in bytes 4..5, and a 12-bit
+--     A component in the top 12 bits of the word in bytes 6..7, with the
+--     bottom 4 bits of each word unused.
+--
+-- -   'FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16' specifies a
+--     four-component, 64-bit format containing a pair of G components, an
+--     R component, and a B component, collectively encoding a 2×1
+--     rectangle of unsigned normalized RGB texel data. One G value is
+--     present at each /i/ coordinate, with the B and R values shared
+--     across both G values and thus recorded at half the horizontal
+--     resolution of the image. This format has a 12-bit G component for
+--     the even /i/ coordinate in the top 12 bits of the word in bytes
+--     0..1, a 12-bit B component in the top 12 bits of the word in bytes
+--     2..3, a 12-bit G component for the odd /i/ coordinate in the top 12
+--     bits of the word in bytes 4..5, and a 12-bit R component in the top
+--     12 bits of the word in bytes 6..7, with the bottom 4 bits of each
+--     word unused. This format only supports images with a width that is a
+--     multiple of two. For the purposes of the constraints on copy
+--     extents, this format is treated as a compressed format with a 2×1
+--     compressed texel block.
+--
+-- -   'FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16' specifies a
+--     four-component, 64-bit format containing a pair of G components, an
+--     R component, and a B component, collectively encoding a 2×1
+--     rectangle of unsigned normalized RGB texel data. One G value is
+--     present at each /i/ coordinate, with the B and R values shared
+--     across both G values and thus recorded at half the horizontal
+--     resolution of the image. This format has a 12-bit B component in the
+--     top 12 bits of the word in bytes 0..1, a 12-bit G component for the
+--     even /i/ coordinate in the top 12 bits of the word in bytes 2..3, a
+--     12-bit R component in the top 12 bits of the word in bytes 4..5, and
+--     a 12-bit G component for the odd /i/ coordinate in the top 12 bits
+--     of the word in bytes 6..7, with the bottom 4 bits of each word
+--     unused. This format only supports images with a width that is a
+--     multiple of two. For the purposes of the constraints on copy
+--     extents, this format is treated as a compressed format with a 2×1
+--     compressed texel block.
+--
+-- -   'FORMAT_G12X4_B12X4_R12X4_3PLANE_420_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, a
+--     12-bit B component in the top 12 bits of each 16-bit word of plane
+--     1, and a 12-bit R component in the top 12 bits of each 16-bit word
+--     of plane 2, with the bottom 4 bits of each word unused. The
+--     horizontal and vertical dimensions of the R and B planes are halved
+--     relative to the image dimensions, and each R and B component is
+--     shared with the G components for which \(\left\lfloor i_G \times 0.5
+--     \right\rfloor = i_B = i_R\) and \(\left\lfloor j_G \times 0.5
+--     \right\rfloor = j_B = j_R\). The location of each plane when this
+--     image 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,
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT'
+--     for the B plane, and
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'
+--     for the R plane. This format only supports images with a width and
+--     height that is a multiple of two.
+--
+-- -   'FORMAT_G12X4_B12X4R12X4_2PLANE_420_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, with the
+--     bottom 4 bits of each word unused. The horizontal and vertical
+--     dimensions of the BR plane are halved relative to the image
+--     dimensions, and each R and B value is shared with the G components
+--     for which \(\left\lfloor i_G \times 0.5
+--     \right\rfloor = i_B = i_R\) and \(\left\lfloor j_G \times 0.5
+--     \right\rfloor = j_B = j_R\). The location of each plane when this
+--     image is in linear layout can be determined via
+--     'Vulkan.Core10.Image.getImageSubresourceLayout', using
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'
+--     for the G plane, and
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT'
+--     for the BR plane. This format only supports images with a width and
+--     height that is a multiple of two.
+--
+-- -   'FORMAT_G12X4_B12X4_R12X4_3PLANE_422_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, a
+--     12-bit B component in the top 12 bits of each 16-bit word of plane
+--     1, and a 12-bit R component in the top 12 bits of each 16-bit word
+--     of plane 2, with the bottom 4 bits of each word unused. The
+--     horizontal dimension of the R and B plane is halved relative to the
+--     image dimensions, and each R and B value is shared with the G
+--     components for which
+--     \(\left\lfloor i_G \times 0.5 \right\rfloor = i_B =
+--     i_R\). The location of each plane when this image is in linear
+--     layout can be determined via
+--     'Vulkan.Core10.Image.getImageSubresourceLayout', using
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'
+--     for the G plane,
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT'
+--     for the B plane, and
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'
+--     for the R plane. This format only supports images with a width that
+--     is a multiple of two.
+--
+-- -   'FORMAT_G12X4_B12X4R12X4_2PLANE_422_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, with the
+--     bottom 4 bits of each word unused. The horizontal dimension of the
+--     BR plane is halved relative to the image dimensions, and each R and
+--     B value is shared with the G components for which
+--     \(\left\lfloor i_G \times 0.5 \right\rfloor = i_B = i_R\). The
+--     location of each plane when this image is in linear layout can be
+--     determined via 'Vulkan.Core10.Image.getImageSubresourceLayout',
+--     using
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'
+--     for the G plane, and
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT'
+--     for the BR plane. This format only supports images with a width that
+--     is a multiple of two.
+--
+-- -   'FORMAT_G12X4_B12X4_R12X4_3PLANE_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, a
+--     12-bit B component in the top 12 bits of each 16-bit word of plane
+--     1, and a 12-bit R component in the top 12 bits of each 16-bit word
+--     of plane 2, with the bottom 4 bits of each word unused. Each plane
+--     has 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,
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT'
+--     for the B plane, and
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'
+--     for the R plane.
+--
+-- -   'FORMAT_G16B16G16R16_422_UNORM' specifies a four-component, 64-bit
+--     format containing a pair of G components, an R component, and a B
+--     component, collectively encoding a 2×1 rectangle of unsigned
+--     normalized RGB texel data. One G value is present at each /i/
+--     coordinate, with the B and R values shared across both G values and
+--     thus recorded at half the horizontal resolution of the image. This
+--     format has a 16-bit G component for the even /i/ coordinate in the
+--     word in bytes 0..1, a 16-bit B component in the word in bytes 2..3,
+--     a 16-bit G component for the odd /i/ coordinate in the word in bytes
+--     4..5, and a 16-bit R component in the word in bytes 6..7. This
+--     format only supports images with a width that is a multiple of two.
+--     For the purposes of the constraints on copy extents, this format is
+--     treated as a compressed format with a 2×1 compressed texel block.
+--
+-- -   'FORMAT_B16G16R16G16_422_UNORM' specifies a four-component, 64-bit
+--     format containing a pair of G components, an R component, and a B
+--     component, collectively encoding a 2×1 rectangle of unsigned
+--     normalized RGB texel data. One G value is present at each /i/
+--     coordinate, with the B and R values shared across both G values and
+--     thus recorded at half the horizontal resolution of the image. This
+--     format has a 16-bit B component in the word in bytes 0..1, a 16-bit
+--     G component for the even /i/ coordinate in the word in bytes 2..3, a
+--     16-bit R component in the word in bytes 4..5, and a 16-bit G
+--     component for the odd /i/ coordinate in the word in bytes 6..7. This
+--     format only supports images with a width that is a multiple of two.
+--     For the purposes of the constraints on copy extents, this format is
+--     treated as a compressed format with a 2×1 compressed texel block.
+--
+-- -   'FORMAT_G16_B16_R16_3PLANE_420_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 16-bit R component in each 16-bit word of
+--     plane 2. The horizontal and vertical dimensions of the R and B
+--     planes are halved relative to the image dimensions, and each R and B
+--     component is shared with the G components for which
+--     \(\left\lfloor i_G \times 0.5
+--     \right\rfloor = i_B = i_R\) and \(\left\lfloor j_G \times 0.5
+--     \right\rfloor = j_B = j_R\). The location of each plane when this
+--     image 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,
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT'
+--     for the B plane, and
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'
+--     for the R plane. This format only supports images with a width and
+--     height that is a multiple of two.
+--
+-- -   'FORMAT_G16_B16R16_2PLANE_420_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. The horizontal and
+--     vertical dimensions of the BR plane are halved relative to the image
+--     dimensions, and each R and B value is shared with the G components
+--     for which \(\left\lfloor i_G \times 0.5
+--     \right\rfloor = i_B = i_R\) and \(\left\lfloor j_G \times 0.5
+--     \right\rfloor = j_B = j_R\). The location of each plane when this
+--     image is in linear layout can be determined via
+--     'Vulkan.Core10.Image.getImageSubresourceLayout', using
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'
+--     for the G plane, and
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT'
+--     for the BR plane. This format only supports images with a width and
+--     height that is a multiple of two.
+--
+-- -   'FORMAT_G16_B16_R16_3PLANE_422_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 16-bit R component in each 16-bit word of
+--     plane 2. The horizontal dimension of the R and B plane is halved
+--     relative to the image dimensions, and each R and B value is shared
+--     with the G components for which
+--     \(\left\lfloor i_G \times 0.5 \right\rfloor = i_B =
+--     i_R\). The location of each plane when this image is in linear
+--     layout can be determined via
+--     'Vulkan.Core10.Image.getImageSubresourceLayout', using
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'
+--     for the G plane,
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT'
+--     for the B plane, and
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'
+--     for the R plane. This format only supports images with a width that
+--     is a multiple of two.
+--
+-- -   'FORMAT_G16_B16R16_2PLANE_422_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. The horizontal
+--     dimension of the BR plane is halved relative to the image
+--     dimensions, and each R and B value is shared with the G components
+--     for which \(\left\lfloor i_G \times 0.5 \right\rfloor = i_B = i_R\).
+--     The location of each plane when this image is in linear layout can
+--     be determined via 'Vulkan.Core10.Image.getImageSubresourceLayout',
+--     using
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'
+--     for the G plane, and
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT'
+--     for the BR plane. This format only supports images with a width that
+--     is a multiple of two.
+--
+-- -   '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 16-bit R component in each 16-bit word of
+--     plane 2. Each plane has 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,
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT'
+--     for the B plane, and
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'
+--     for the R plane.
+--
+-- -   '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.
+--
+-- -   '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.
+--
+-- -   '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.
+--
+-- -   '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.
+--
+-- -   'FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG' specifies a four-component,
+--     PVRTC compressed format where each 64-bit compressed texel block
+--     encodes an 8×4 rectangle of unsigned normalized RGBA texel data.
+--
+-- -   'FORMAT_PVRTC1_4BPP_UNORM_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.
+--
+-- -   'FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG' specifies a four-component,
+--     PVRTC compressed format where each 64-bit compressed texel block
+--     encodes an 8×4 rectangle of unsigned normalized RGBA texel data.
+--
+-- -   'FORMAT_PVRTC2_4BPP_UNORM_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.
+--
+-- -   'FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG' specifies a four-component,
+--     PVRTC compressed format where each 64-bit compressed texel block
+--     encodes an 8×4 rectangle of unsigned normalized RGBA texel data with
+--     sRGB nonlinear encoding applied to the RGB components.
+--
+-- -   'FORMAT_PVRTC1_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 encoding applied to the RGB components.
+--
+-- -   'FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG' specifies a four-component,
+--     PVRTC compressed format where each 64-bit compressed texel block
+--     encodes an 8×4 rectangle of unsigned normalized RGBA texel data with
+--     sRGB nonlinear encoding applied to the RGB components.
+--
+-- -   '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 encoding applied to the RGB components.
+--
+-- -   'FORMAT_R16G16_SFIXED5_NV' specifies a two-component, 16-bit signed
+--     fixed-point format with linear encoding. The components are signed
+--     two’s-complement integers where the most significant bit specifies
+--     the sign bit, the next 10 bits specify the integer value, and the
+--     last 5 bits represent the fractional value. The signed 16-bit values
+--     /can/ be converted to floats in the range [-1024,1023.96875] by
+--     dividing the value by 32 (25).
+--
+-- -   'FORMAT_R10X6_UINT_PACK16_ARM' specifies a one-component, 16-bit
+--     unsigned integer format that has a single 10-bit R component in the
+--     top 10 bits of a 16-bit word, with the bottom 6 bits unused.
+--
+-- -   'FORMAT_R10X6G10X6_UINT_2PACK16_ARM' specifies a two-component,
+--     32-bit unsigned integer format that has a 10-bit R component in the
+--     top 10 bits of the word in bytes 0..1, and a 10-bit G component in
+--     the top 10 bits of the word in bytes 2..3, with the bottom 6 bits of
+--     each word unused.
+--
+-- -   'FORMAT_R10X6G10X6B10X6A10X6_UINT_4PACK16_ARM' specifies a
+--     four-component, 64-bit unsigned integer format that has a 10-bit R
+--     component in the top 10 bits of the word in bytes 0..1, a 10-bit G
+--     component in the top 10 bits of the word in bytes 2..3, a 10-bit B
+--     component in the top 10 bits of the word in bytes 4..5, and a 10-bit
+--     A component in the top 10 bits of the word in bytes 6..7, with the
+--     bottom 6 bits of each word unused.
+--
+-- -   'FORMAT_R12X4_UINT_PACK16_ARM' specifies a one-component, 16-bit
+--     unsigned integer format that has a single 12-bit R component in the
+--     top 12 bits of a 16-bit word, with the bottom 4 bits unused.
+--
+-- -   'FORMAT_R12X4G12X4_UINT_2PACK16_ARM' specifies a two-component,
+--     32-bit unsigned integer format that has a 12-bit R component in the
+--     top 12 bits of the word in bytes 0..1, and a 12-bit G component in
+--     the top 12 bits of the word in bytes 2..3, with the bottom 4 bits of
+--     each word unused.
+--
+-- -   'FORMAT_R12X4G12X4B12X4A12X4_UINT_4PACK16_ARM' specifies a
+--     four-component, 64-bit unsigned integer format that has a 12-bit R
+--     component in the top 12 bits of the word in bytes 0..1, a 12-bit G
+--     component in the top 12 bits of the word in bytes 2..3, a 12-bit B
+--     component in the top 12 bits of the word in bytes 4..5, and a 12-bit
+--     A component in the top 12 bits of the word in bytes 6..7, with the
+--     bottom 4 bits of each word unused.
+--
+-- -   'FORMAT_R14X2_UINT_PACK16_ARM' specifies a one-component, 16-bit
+--     unsigned integer format that has a single 14-bit R component in the
+--     top 14 bits of a 16-bit word, with the bottom 2 bits unused.
+--
+-- -   'FORMAT_R14X2G14X2_UINT_2PACK16_ARM' specifies a two-component,
+--     32-bit unsigned integer format that has a 14-bit R component in the
+--     top 14 bits of the word in bytes 0..1, and a 14-bit G component in
+--     the top 14 bits of the word in bytes 2..3, with the bottom 2 bits of
+--     each word unused.
+--
+-- -   'FORMAT_R14X2G14X2B14X2A14X2_UINT_4PACK16_ARM' specifies a
+--     four-component, 64-bit unsigned integer format that has a 14-bit R
+--     component in the top 14 bits of the word in bytes 0..1, a 14-bit G
+--     component in the top 14 bits of the word in bytes 2..3, a 14-bit B
+--     component in the top 14 bits of the word in bytes 4..5, and a 14-bit
+--     A component in the top 14 bits of the word in bytes 6..7, with the
+--     bottom 2 bits of each word unused.
+--
+-- -   'FORMAT_R14X2_UNORM_PACK16_ARM' specifies a one-component, 16-bit
+--     unsigned normalized format that has a single 14-bit R component in
+--     the top 14 bits of a 16-bit word, with the bottom 2 bits unused.
+--
+-- -   'FORMAT_R14X2G14X2_UNORM_2PACK16_ARM' specifies a two-component,
+--     32-bit unsigned normalized format that has a 14-bit R component in
+--     the top 14 bits of the word in bytes 0..1, and a 14-bit G component
+--     in the top 14 bits of the word in bytes 2..3, with the bottom 2 bits
+--     of each word unused.
+--
+-- -   'FORMAT_R14X2G14X2B14X2A14X2_UNORM_4PACK16_ARM' specifies a
+--     four-component, 64-bit unsigned normalized format that has a 14-bit
+--     R component in the top 14 bits of the word in bytes 0..1, a 14-bit G
+--     component in the top 14 bits of the word in bytes 2..3, a 14-bit B
+--     component in the top 14 bits of the word in bytes 4..5, and a 14-bit
+--     A component in the top 14 bits of the word in bytes 6..7, with the
+--     bottom 2 bits of each word unused.
+--
+-- -   'FORMAT_G14X2_B14X2R14X2_2PLANE_420_UNORM_3PACK16_ARM' specifies an
+--     unsigned normalized /multi-planar format/ that has a 14-bit G
+--     component in the top 14 bits of each 16-bit word of plane 0, and a
+--     two-component, 32-bit BR plane 1 consisting of a 14-bit B component
+--     in the top 14 bits of the word in bytes 0..1, and a 14-bit R
+--     component in the top 14 bits of the word in bytes 2..3, with the
+--     bottom 2 bits of each word unused. The horizontal and vertical
+--     dimensions of the BR plane are halved relative to the image
+--     dimensions, and each R and B value is shared with the G components
+--     for which \(\left\lfloor i_G \times 0.5
+--     \right\rfloor = i_B = i_R\) and \(\left\lfloor j_G \times 0.5
+--     \right\rfloor = j_B = j_R\). The location of each plane when this
+--     image is in linear layout can be determined via
+--     'Vulkan.Core10.Image.getImageSubresourceLayout', using
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'
+--     for the G plane, and
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT'
+--     for the BR plane. This format only supports images with a width and
+--     height that is a multiple of two.
+--
+-- -   'FORMAT_G14X2_B14X2R14X2_2PLANE_422_UNORM_3PACK16_ARM' specifies an
+--     unsigned normalized /multi-planar format/ that has a 14-bit G
+--     component in the top 14 bits of each 16-bit word of plane 0, and a
+--     two-component, 32-bit BR plane 1 consisting of a 14-bit B component
+--     in the top 14 bits of the word in bytes 0..1, and a 14-bit R
+--     component in the top 14 bits of the word in bytes 2..3, with the
+--     bottom 2 bits of each word unused. The horizontal dimension of the
+--     BR plane is halved relative to the image dimensions, and each R and
+--     B value is shared with the G components for which
+--     \(\left\lfloor i_G \times 0.5 \right\rfloor = i_B = i_R\). The
+--     location of each plane when this image is in linear layout can be
+--     determined via 'Vulkan.Core10.Image.getImageSubresourceLayout',
+--     using
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'
+--     for the G plane, and
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT'
+--     for the BR plane. This format only supports images with a width that
+--     is a multiple of two.
+--
+-- -   'FORMAT_R8_BOOL_ARM' specifies a one-component 8-bit boolean format
+--     that has a single 8-bit R component. See
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#fundamentals-bool>.
+--
+-- -   'FORMAT_R16_SFLOAT_FPENCODING_BFLOAT16_ARM' specifies a
+--     one-component, 16-bit signed floating-point format with BFLOAT16
+--     encoding that has a single 16-bit R component.
+--
+-- -   'FORMAT_R8_SFLOAT_FPENCODING_FLOAT8E4M3_ARM' specifies a
+--     one-component, 8-bit signed floating-point format with FLOAT8E4M3
+--     encoding that has a single 8-bit R component.
+--
+-- -   'FORMAT_R8_SFLOAT_FPENCODING_FLOAT8E5M2_ARM' specifies a
+--     one-component, 8-bit signed floating-point format with FLOAT8E5M2
+--     encoding that has a single 8-bit R component.
+--
+-- = 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_NV_ray_tracing_linear_swept_spheres.AccelerationStructureGeometryLinearSweptSpheresDataNV',
+-- 'Vulkan.Extensions.VK_NV_ray_tracing_linear_swept_spheres.AccelerationStructureGeometrySpheresDataNV',
+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureGeometryTrianglesDataKHR',
+-- 'Vulkan.Extensions.VK_NV_displacement_micromap.AccelerationStructureTrianglesDisplacementMicromapNV',
+-- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.AndroidHardwareBufferFormatProperties2ANDROID',
+-- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.AndroidHardwareBufferFormatPropertiesANDROID',
+-- 'Vulkan.Extensions.VK_ANDROID_external_format_resolve.AndroidHardwareBufferFormatResolvePropertiesANDROID',
+-- 'Vulkan.Core10.Pass.AttachmentDescription',
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.AttachmentDescription2',
+-- 'Vulkan.Core10.BufferView.BufferViewCreateInfo',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkClusterAccelerationStructureTriangleClusterInputNV VkClusterAccelerationStructureTriangleClusterInputNV>,
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.CommandBufferInheritanceRenderingInfo',
+-- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT',
+-- 'Vulkan.Extensions.VK_ARM_data_graph_optical_flow.DataGraphOpticalFlowImageFormatPropertiesARM',
+-- 'Vulkan.Extensions.VK_ARM_data_graph_optical_flow.DataGraphPipelineOpticalFlowCreateInfoARM',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.DescriptorAddressInfoEXT',
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentImageInfo',
+-- 'Vulkan.Extensions.VK_NV_ray_tracing.GeometryTrianglesNV',
+-- 'Vulkan.Core10.Image.ImageCreateInfo',
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo',
+-- 'Vulkan.Extensions.VK_EXT_astc_decode_mode.ImageViewASTCDecodeModeEXT',
+-- 'Vulkan.Core10.ImageView.ImageViewCreateInfo',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkNativeBufferFormatPropertiesOHOS VkNativeBufferFormatPropertiesOHOS>,
+-- 'Vulkan.Extensions.VK_NV_optical_flow.OpticalFlowImageFormatPropertiesNV',
+-- 'Vulkan.Extensions.VK_NV_optical_flow.OpticalFlowSessionCreateInfoNV',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceImageFormatInfo2',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceSparseImageFormatInfo2',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.RenderingAreaInfo',
+-- 'Vulkan.Extensions.VK_EXT_custom_border_color.SamplerCustomBorderColorCreateInfoEXT',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionCreateInfo',
+-- 'Vulkan.Extensions.VK_QNX_external_memory_screen_buffer.ScreenBufferFormatPropertiesQNX',
+-- 'Vulkan.Extensions.VK_KHR_surface.SurfaceFormatKHR',
+-- 'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR',
+-- 'Vulkan.Extensions.VK_ARM_tensors.TensorDescriptionARM',
+-- 'Vulkan.Extensions.VK_ARM_tensors.TensorViewCreateInfoARM',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_heap.TexelBufferDescriptorInfoEXT',
+-- 'Vulkan.Core10.GraphicsPipeline.VertexInputAttributeDescription',
+-- 'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoFormatPropertiesKHR VkVideoFormatPropertiesKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoSessionCreateInfoKHR VkVideoSessionCreateInfoKHR>,
+-- 'Vulkan.Extensions.VK_NV_external_memory_capabilities.getPhysicalDeviceExternalImageFormatPropertiesNV',
+-- 'Vulkan.Core10.DeviceInitialization.getPhysicalDeviceFormatProperties',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFormatProperties2',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFormatProperties2',
+-- 'Vulkan.Core10.DeviceInitialization.getPhysicalDeviceImageFormatProperties',
+-- 'Vulkan.Core10.SparseResourceMemoryManagement.getPhysicalDeviceSparseImageFormatProperties'
+newtype Format = Format Int32
+  deriving newtype (Eq, Ord, Storable, Zero)
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_UNDEFINED"
+pattern FORMAT_UNDEFINED = Format 0
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R4G4_UNORM_PACK8"
+pattern FORMAT_R4G4_UNORM_PACK8 = Format 1
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R4G4B4A4_UNORM_PACK16"
+pattern FORMAT_R4G4B4A4_UNORM_PACK16 = Format 2
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_B4G4R4A4_UNORM_PACK16"
+pattern FORMAT_B4G4R4A4_UNORM_PACK16 = Format 3
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R5G6B5_UNORM_PACK16"
+pattern FORMAT_R5G6B5_UNORM_PACK16 = Format 4
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_B5G6R5_UNORM_PACK16"
+pattern FORMAT_B5G6R5_UNORM_PACK16 = Format 5
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R5G5B5A1_UNORM_PACK16"
+pattern FORMAT_R5G5B5A1_UNORM_PACK16 = Format 6
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_B5G5R5A1_UNORM_PACK16"
+pattern FORMAT_B5G5R5A1_UNORM_PACK16 = Format 7
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_A1R5G5B5_UNORM_PACK16"
+pattern FORMAT_A1R5G5B5_UNORM_PACK16 = Format 8
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R8_UNORM"
+pattern FORMAT_R8_UNORM = Format 9
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R8_SNORM"
+pattern FORMAT_R8_SNORM = Format 10
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R8_USCALED"
+pattern FORMAT_R8_USCALED = Format 11
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R8_SSCALED"
+pattern FORMAT_R8_SSCALED = Format 12
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R8_UINT"
+pattern FORMAT_R8_UINT = Format 13
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R8_SINT"
+pattern FORMAT_R8_SINT = Format 14
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R8_SRGB"
+pattern FORMAT_R8_SRGB = Format 15
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R8G8_UNORM"
+pattern FORMAT_R8G8_UNORM = Format 16
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R8G8_SNORM"
+pattern FORMAT_R8G8_SNORM = Format 17
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R8G8_USCALED"
+pattern FORMAT_R8G8_USCALED = Format 18
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R8G8_SSCALED"
+pattern FORMAT_R8G8_SSCALED = Format 19
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R8G8_UINT"
+pattern FORMAT_R8G8_UINT = Format 20
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R8G8_SINT"
+pattern FORMAT_R8G8_SINT = Format 21
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R8G8_SRGB"
+pattern FORMAT_R8G8_SRGB = Format 22
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R8G8B8_UNORM"
+pattern FORMAT_R8G8B8_UNORM = Format 23
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R8G8B8_SNORM"
+pattern FORMAT_R8G8B8_SNORM = Format 24
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R8G8B8_USCALED"
+pattern FORMAT_R8G8B8_USCALED = Format 25
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R8G8B8_SSCALED"
+pattern FORMAT_R8G8B8_SSCALED = Format 26
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R8G8B8_UINT"
+pattern FORMAT_R8G8B8_UINT = Format 27
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R8G8B8_SINT"
+pattern FORMAT_R8G8B8_SINT = Format 28
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R8G8B8_SRGB"
+pattern FORMAT_R8G8B8_SRGB = Format 29
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_B8G8R8_UNORM"
+pattern FORMAT_B8G8R8_UNORM = Format 30
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_B8G8R8_SNORM"
+pattern FORMAT_B8G8R8_SNORM = Format 31
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_B8G8R8_USCALED"
+pattern FORMAT_B8G8R8_USCALED = Format 32
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_B8G8R8_SSCALED"
+pattern FORMAT_B8G8R8_SSCALED = Format 33
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_B8G8R8_UINT"
+pattern FORMAT_B8G8R8_UINT = Format 34
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_B8G8R8_SINT"
+pattern FORMAT_B8G8R8_SINT = Format 35
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_B8G8R8_SRGB"
+pattern FORMAT_B8G8R8_SRGB = Format 36
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R8G8B8A8_UNORM"
+pattern FORMAT_R8G8B8A8_UNORM = Format 37
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R8G8B8A8_SNORM"
+pattern FORMAT_R8G8B8A8_SNORM = Format 38
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R8G8B8A8_USCALED"
+pattern FORMAT_R8G8B8A8_USCALED = Format 39
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R8G8B8A8_SSCALED"
+pattern FORMAT_R8G8B8A8_SSCALED = Format 40
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R8G8B8A8_UINT"
+pattern FORMAT_R8G8B8A8_UINT = Format 41
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R8G8B8A8_SINT"
+pattern FORMAT_R8G8B8A8_SINT = Format 42
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R8G8B8A8_SRGB"
+pattern FORMAT_R8G8B8A8_SRGB = Format 43
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_B8G8R8A8_UNORM"
+pattern FORMAT_B8G8R8A8_UNORM = Format 44
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_B8G8R8A8_SNORM"
+pattern FORMAT_B8G8R8A8_SNORM = Format 45
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_B8G8R8A8_USCALED"
+pattern FORMAT_B8G8R8A8_USCALED = Format 46
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_B8G8R8A8_SSCALED"
+pattern FORMAT_B8G8R8A8_SSCALED = Format 47
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_B8G8R8A8_UINT"
+pattern FORMAT_B8G8R8A8_UINT = Format 48
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_B8G8R8A8_SINT"
+pattern FORMAT_B8G8R8A8_SINT = Format 49
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_B8G8R8A8_SRGB"
+pattern FORMAT_B8G8R8A8_SRGB = Format 50
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_A8B8G8R8_UNORM_PACK32"
+pattern FORMAT_A8B8G8R8_UNORM_PACK32 = Format 51
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_A8B8G8R8_SNORM_PACK32"
+pattern FORMAT_A8B8G8R8_SNORM_PACK32 = Format 52
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_A8B8G8R8_USCALED_PACK32"
+pattern FORMAT_A8B8G8R8_USCALED_PACK32 = Format 53
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_A8B8G8R8_SSCALED_PACK32"
+pattern FORMAT_A8B8G8R8_SSCALED_PACK32 = Format 54
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_A8B8G8R8_UINT_PACK32"
+pattern FORMAT_A8B8G8R8_UINT_PACK32 = Format 55
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_A8B8G8R8_SINT_PACK32"
+pattern FORMAT_A8B8G8R8_SINT_PACK32 = Format 56
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_A8B8G8R8_SRGB_PACK32"
+pattern FORMAT_A8B8G8R8_SRGB_PACK32 = Format 57
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_A2R10G10B10_UNORM_PACK32"
+pattern FORMAT_A2R10G10B10_UNORM_PACK32 = Format 58
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_A2R10G10B10_SNORM_PACK32"
+pattern FORMAT_A2R10G10B10_SNORM_PACK32 = Format 59
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_A2R10G10B10_USCALED_PACK32"
+pattern FORMAT_A2R10G10B10_USCALED_PACK32 = Format 60
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_A2R10G10B10_SSCALED_PACK32"
+pattern FORMAT_A2R10G10B10_SSCALED_PACK32 = Format 61
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_A2R10G10B10_UINT_PACK32"
+pattern FORMAT_A2R10G10B10_UINT_PACK32 = Format 62
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_A2R10G10B10_SINT_PACK32"
+pattern FORMAT_A2R10G10B10_SINT_PACK32 = Format 63
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_A2B10G10R10_UNORM_PACK32"
+pattern FORMAT_A2B10G10R10_UNORM_PACK32 = Format 64
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_A2B10G10R10_SNORM_PACK32"
+pattern FORMAT_A2B10G10R10_SNORM_PACK32 = Format 65
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_A2B10G10R10_USCALED_PACK32"
+pattern FORMAT_A2B10G10R10_USCALED_PACK32 = Format 66
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_A2B10G10R10_SSCALED_PACK32"
+pattern FORMAT_A2B10G10R10_SSCALED_PACK32 = Format 67
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_A2B10G10R10_UINT_PACK32"
+pattern FORMAT_A2B10G10R10_UINT_PACK32 = Format 68
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_A2B10G10R10_SINT_PACK32"
+pattern FORMAT_A2B10G10R10_SINT_PACK32 = Format 69
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R16_UNORM"
+pattern FORMAT_R16_UNORM = Format 70
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R16_SNORM"
+pattern FORMAT_R16_SNORM = Format 71
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R16_USCALED"
+pattern FORMAT_R16_USCALED = Format 72
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R16_SSCALED"
+pattern FORMAT_R16_SSCALED = Format 73
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R16_UINT"
+pattern FORMAT_R16_UINT = Format 74
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R16_SINT"
+pattern FORMAT_R16_SINT = Format 75
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R16_SFLOAT"
+pattern FORMAT_R16_SFLOAT = Format 76
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R16G16_UNORM"
+pattern FORMAT_R16G16_UNORM = Format 77
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R16G16_SNORM"
+pattern FORMAT_R16G16_SNORM = Format 78
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R16G16_USCALED"
+pattern FORMAT_R16G16_USCALED = Format 79
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R16G16_SSCALED"
+pattern FORMAT_R16G16_SSCALED = Format 80
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R16G16_UINT"
+pattern FORMAT_R16G16_UINT = Format 81
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R16G16_SINT"
+pattern FORMAT_R16G16_SINT = Format 82
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R16G16_SFLOAT"
+pattern FORMAT_R16G16_SFLOAT = Format 83
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R16G16B16_UNORM"
+pattern FORMAT_R16G16B16_UNORM = Format 84
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R16G16B16_SNORM"
+pattern FORMAT_R16G16B16_SNORM = Format 85
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R16G16B16_USCALED"
+pattern FORMAT_R16G16B16_USCALED = Format 86
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R16G16B16_SSCALED"
+pattern FORMAT_R16G16B16_SSCALED = Format 87
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R16G16B16_UINT"
+pattern FORMAT_R16G16B16_UINT = Format 88
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R16G16B16_SINT"
+pattern FORMAT_R16G16B16_SINT = Format 89
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R16G16B16_SFLOAT"
+pattern FORMAT_R16G16B16_SFLOAT = Format 90
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R16G16B16A16_UNORM"
+pattern FORMAT_R16G16B16A16_UNORM = Format 91
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R16G16B16A16_SNORM"
+pattern FORMAT_R16G16B16A16_SNORM = Format 92
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R16G16B16A16_USCALED"
+pattern FORMAT_R16G16B16A16_USCALED = Format 93
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R16G16B16A16_SSCALED"
+pattern FORMAT_R16G16B16A16_SSCALED = Format 94
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R16G16B16A16_UINT"
+pattern FORMAT_R16G16B16A16_UINT = Format 95
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R16G16B16A16_SINT"
+pattern FORMAT_R16G16B16A16_SINT = Format 96
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R16G16B16A16_SFLOAT"
+pattern FORMAT_R16G16B16A16_SFLOAT = Format 97
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R32_UINT"
+pattern FORMAT_R32_UINT = Format 98
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R32_SINT"
+pattern FORMAT_R32_SINT = Format 99
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R32_SFLOAT"
+pattern FORMAT_R32_SFLOAT = Format 100
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R32G32_UINT"
+pattern FORMAT_R32G32_UINT = Format 101
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R32G32_SINT"
+pattern FORMAT_R32G32_SINT = Format 102
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R32G32_SFLOAT"
+pattern FORMAT_R32G32_SFLOAT = Format 103
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R32G32B32_UINT"
+pattern FORMAT_R32G32B32_UINT = Format 104
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R32G32B32_SINT"
+pattern FORMAT_R32G32B32_SINT = Format 105
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R32G32B32_SFLOAT"
+pattern FORMAT_R32G32B32_SFLOAT = Format 106
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R32G32B32A32_UINT"
+pattern FORMAT_R32G32B32A32_UINT = Format 107
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R32G32B32A32_SINT"
+pattern FORMAT_R32G32B32A32_SINT = Format 108
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R32G32B32A32_SFLOAT"
+pattern FORMAT_R32G32B32A32_SFLOAT = Format 109
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R64_UINT"
+pattern FORMAT_R64_UINT = Format 110
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R64_SINT"
+pattern FORMAT_R64_SINT = Format 111
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R64_SFLOAT"
+pattern FORMAT_R64_SFLOAT = Format 112
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R64G64_UINT"
+pattern FORMAT_R64G64_UINT = Format 113
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R64G64_SINT"
+pattern FORMAT_R64G64_SINT = Format 114
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R64G64_SFLOAT"
+pattern FORMAT_R64G64_SFLOAT = Format 115
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R64G64B64_UINT"
+pattern FORMAT_R64G64B64_UINT = Format 116
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R64G64B64_SINT"
+pattern FORMAT_R64G64B64_SINT = Format 117
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R64G64B64_SFLOAT"
+pattern FORMAT_R64G64B64_SFLOAT = Format 118
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R64G64B64A64_UINT"
+pattern FORMAT_R64G64B64A64_UINT = Format 119
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R64G64B64A64_SINT"
+pattern FORMAT_R64G64B64A64_SINT = Format 120
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R64G64B64A64_SFLOAT"
+pattern FORMAT_R64G64B64A64_SFLOAT = Format 121
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_B10G11R11_UFLOAT_PACK32"
+pattern FORMAT_B10G11R11_UFLOAT_PACK32 = Format 122
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_E5B9G9R9_UFLOAT_PACK32"
+pattern FORMAT_E5B9G9R9_UFLOAT_PACK32 = Format 123
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_D16_UNORM"
+pattern FORMAT_D16_UNORM = Format 124
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_X8_D24_UNORM_PACK32"
+pattern FORMAT_X8_D24_UNORM_PACK32 = Format 125
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_D32_SFLOAT"
+pattern FORMAT_D32_SFLOAT = Format 126
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_S8_UINT"
+pattern FORMAT_S8_UINT = Format 127
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_D16_UNORM_S8_UINT"
+pattern FORMAT_D16_UNORM_S8_UINT = Format 128
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_D24_UNORM_S8_UINT"
+pattern FORMAT_D24_UNORM_S8_UINT = Format 129
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_D32_SFLOAT_S8_UINT"
+pattern FORMAT_D32_SFLOAT_S8_UINT = Format 130
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_BC1_RGB_UNORM_BLOCK"
+pattern FORMAT_BC1_RGB_UNORM_BLOCK = Format 131
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_BC1_RGB_SRGB_BLOCK"
+pattern FORMAT_BC1_RGB_SRGB_BLOCK = Format 132
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_BC1_RGBA_UNORM_BLOCK"
+pattern FORMAT_BC1_RGBA_UNORM_BLOCK = Format 133
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_BC1_RGBA_SRGB_BLOCK"
+pattern FORMAT_BC1_RGBA_SRGB_BLOCK = Format 134
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_BC2_UNORM_BLOCK"
+pattern FORMAT_BC2_UNORM_BLOCK = Format 135
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_BC2_SRGB_BLOCK"
+pattern FORMAT_BC2_SRGB_BLOCK = Format 136
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_BC3_UNORM_BLOCK"
+pattern FORMAT_BC3_UNORM_BLOCK = Format 137
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_BC3_SRGB_BLOCK"
+pattern FORMAT_BC3_SRGB_BLOCK = Format 138
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_BC4_UNORM_BLOCK"
+pattern FORMAT_BC4_UNORM_BLOCK = Format 139
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_BC4_SNORM_BLOCK"
+pattern FORMAT_BC4_SNORM_BLOCK = Format 140
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_BC5_UNORM_BLOCK"
+pattern FORMAT_BC5_UNORM_BLOCK = Format 141
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_BC5_SNORM_BLOCK"
+pattern FORMAT_BC5_SNORM_BLOCK = Format 142
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_BC6H_UFLOAT_BLOCK"
+pattern FORMAT_BC6H_UFLOAT_BLOCK = Format 143
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_BC6H_SFLOAT_BLOCK"
+pattern FORMAT_BC6H_SFLOAT_BLOCK = Format 144
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_BC7_UNORM_BLOCK"
+pattern FORMAT_BC7_UNORM_BLOCK = Format 145
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_BC7_SRGB_BLOCK"
+pattern FORMAT_BC7_SRGB_BLOCK = Format 146
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK"
+pattern FORMAT_ETC2_R8G8B8_UNORM_BLOCK = Format 147
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK"
+pattern FORMAT_ETC2_R8G8B8_SRGB_BLOCK = Format 148
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK"
+pattern FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK = Format 149
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK"
+pattern FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK = Format 150
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK"
+pattern FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK = Format 151
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK"
+pattern FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK = Format 152
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_EAC_R11_UNORM_BLOCK"
+pattern FORMAT_EAC_R11_UNORM_BLOCK = Format 153
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_EAC_R11_SNORM_BLOCK"
+pattern FORMAT_EAC_R11_SNORM_BLOCK = Format 154
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_EAC_R11G11_UNORM_BLOCK"
+pattern FORMAT_EAC_R11G11_UNORM_BLOCK = Format 155
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_EAC_R11G11_SNORM_BLOCK"
+pattern FORMAT_EAC_R11G11_SNORM_BLOCK = Format 156
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ASTC_4x4_UNORM_BLOCK"
+pattern FORMAT_ASTC_4x4_UNORM_BLOCK = Format 157
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ASTC_4x4_SRGB_BLOCK"
+pattern FORMAT_ASTC_4x4_SRGB_BLOCK = Format 158
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ASTC_5x4_UNORM_BLOCK"
+pattern FORMAT_ASTC_5x4_UNORM_BLOCK = Format 159
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ASTC_5x4_SRGB_BLOCK"
+pattern FORMAT_ASTC_5x4_SRGB_BLOCK = Format 160
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ASTC_5x5_UNORM_BLOCK"
+pattern FORMAT_ASTC_5x5_UNORM_BLOCK = Format 161
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ASTC_5x5_SRGB_BLOCK"
+pattern FORMAT_ASTC_5x5_SRGB_BLOCK = Format 162
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ASTC_6x5_UNORM_BLOCK"
+pattern FORMAT_ASTC_6x5_UNORM_BLOCK = Format 163
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ASTC_6x5_SRGB_BLOCK"
+pattern FORMAT_ASTC_6x5_SRGB_BLOCK = Format 164
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ASTC_6x6_UNORM_BLOCK"
+pattern FORMAT_ASTC_6x6_UNORM_BLOCK = Format 165
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ASTC_6x6_SRGB_BLOCK"
+pattern FORMAT_ASTC_6x6_SRGB_BLOCK = Format 166
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ASTC_8x5_UNORM_BLOCK"
+pattern FORMAT_ASTC_8x5_UNORM_BLOCK = Format 167
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ASTC_8x5_SRGB_BLOCK"
+pattern FORMAT_ASTC_8x5_SRGB_BLOCK = Format 168
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ASTC_8x6_UNORM_BLOCK"
+pattern FORMAT_ASTC_8x6_UNORM_BLOCK = Format 169
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ASTC_8x6_SRGB_BLOCK"
+pattern FORMAT_ASTC_8x6_SRGB_BLOCK = Format 170
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ASTC_8x8_UNORM_BLOCK"
+pattern FORMAT_ASTC_8x8_UNORM_BLOCK = Format 171
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ASTC_8x8_SRGB_BLOCK"
+pattern FORMAT_ASTC_8x8_SRGB_BLOCK = Format 172
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ASTC_10x5_UNORM_BLOCK"
+pattern FORMAT_ASTC_10x5_UNORM_BLOCK = Format 173
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ASTC_10x5_SRGB_BLOCK"
+pattern FORMAT_ASTC_10x5_SRGB_BLOCK = Format 174
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ASTC_10x6_UNORM_BLOCK"
+pattern FORMAT_ASTC_10x6_UNORM_BLOCK = Format 175
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ASTC_10x6_SRGB_BLOCK"
+pattern FORMAT_ASTC_10x6_SRGB_BLOCK = Format 176
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ASTC_10x8_UNORM_BLOCK"
+pattern FORMAT_ASTC_10x8_UNORM_BLOCK = Format 177
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ASTC_10x8_SRGB_BLOCK"
+pattern FORMAT_ASTC_10x8_SRGB_BLOCK = Format 178
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ASTC_10x10_UNORM_BLOCK"
+pattern FORMAT_ASTC_10x10_UNORM_BLOCK = Format 179
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ASTC_10x10_SRGB_BLOCK"
+pattern FORMAT_ASTC_10x10_SRGB_BLOCK = Format 180
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ASTC_12x10_UNORM_BLOCK"
+pattern FORMAT_ASTC_12x10_UNORM_BLOCK = Format 181
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ASTC_12x10_SRGB_BLOCK"
+pattern FORMAT_ASTC_12x10_SRGB_BLOCK = Format 182
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ASTC_12x12_UNORM_BLOCK"
+pattern FORMAT_ASTC_12x12_UNORM_BLOCK = Format 183
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ASTC_12x12_SRGB_BLOCK"
+pattern FORMAT_ASTC_12x12_SRGB_BLOCK = Format 184
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_G14X2_B14X2R14X2_2PLANE_422_UNORM_3PACK16_ARM"
+pattern FORMAT_G14X2_B14X2R14X2_2PLANE_422_UNORM_3PACK16_ARM = Format 1000609013
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_G14X2_B14X2R14X2_2PLANE_420_UNORM_3PACK16_ARM"
+pattern FORMAT_G14X2_B14X2R14X2_2PLANE_420_UNORM_3PACK16_ARM = Format 1000609012
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R14X2G14X2B14X2A14X2_UNORM_4PACK16_ARM"
+pattern FORMAT_R14X2G14X2B14X2A14X2_UNORM_4PACK16_ARM = Format 1000609011
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R14X2G14X2_UNORM_2PACK16_ARM"
+pattern FORMAT_R14X2G14X2_UNORM_2PACK16_ARM = Format 1000609010
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R14X2_UNORM_PACK16_ARM"
+pattern FORMAT_R14X2_UNORM_PACK16_ARM = Format 1000609009
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R14X2G14X2B14X2A14X2_UINT_4PACK16_ARM"
+pattern FORMAT_R14X2G14X2B14X2A14X2_UINT_4PACK16_ARM = Format 1000609008
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R14X2G14X2_UINT_2PACK16_ARM"
+pattern FORMAT_R14X2G14X2_UINT_2PACK16_ARM = Format 1000609007
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R14X2_UINT_PACK16_ARM"
+pattern FORMAT_R14X2_UINT_PACK16_ARM = Format 1000609006
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R12X4G12X4B12X4A12X4_UINT_4PACK16_ARM"
+pattern FORMAT_R12X4G12X4B12X4A12X4_UINT_4PACK16_ARM = Format 1000609005
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R12X4G12X4_UINT_2PACK16_ARM"
+pattern FORMAT_R12X4G12X4_UINT_2PACK16_ARM = Format 1000609004
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R12X4_UINT_PACK16_ARM"
+pattern FORMAT_R12X4_UINT_PACK16_ARM = Format 1000609003
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R10X6G10X6B10X6A10X6_UINT_4PACK16_ARM"
+pattern FORMAT_R10X6G10X6B10X6A10X6_UINT_4PACK16_ARM = Format 1000609002
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R10X6G10X6_UINT_2PACK16_ARM"
+pattern FORMAT_R10X6G10X6_UINT_2PACK16_ARM = Format 1000609001
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R10X6_UINT_PACK16_ARM"
+pattern FORMAT_R10X6_UINT_PACK16_ARM = Format 1000609000
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R16G16_SFIXED5_NV"
+pattern FORMAT_R16G16_SFIXED5_NV = Format 1000464000
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R8_SFLOAT_FPENCODING_FLOAT8E5M2_ARM"
+pattern FORMAT_R8_SFLOAT_FPENCODING_FLOAT8E5M2_ARM = Format 1000460003
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R8_SFLOAT_FPENCODING_FLOAT8E4M3_ARM"
+pattern FORMAT_R8_SFLOAT_FPENCODING_FLOAT8E4M3_ARM = Format 1000460002
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R16_SFLOAT_FPENCODING_BFLOAT16_ARM"
+pattern FORMAT_R16_SFLOAT_FPENCODING_BFLOAT16_ARM = Format 1000460001
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R8_BOOL_ARM"
+pattern FORMAT_R8_BOOL_ARM = Format 1000460000
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ASTC_6x6x6_SFLOAT_BLOCK_EXT"
+pattern FORMAT_ASTC_6x6x6_SFLOAT_BLOCK_EXT = Format 1000288029
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ASTC_6x6x6_SRGB_BLOCK_EXT"
+pattern FORMAT_ASTC_6x6x6_SRGB_BLOCK_EXT = Format 1000288028
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ASTC_6x6x6_UNORM_BLOCK_EXT"
+pattern FORMAT_ASTC_6x6x6_UNORM_BLOCK_EXT = Format 1000288027
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ASTC_6x6x5_SFLOAT_BLOCK_EXT"
+pattern FORMAT_ASTC_6x6x5_SFLOAT_BLOCK_EXT = Format 1000288026
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ASTC_6x6x5_SRGB_BLOCK_EXT"
+pattern FORMAT_ASTC_6x6x5_SRGB_BLOCK_EXT = Format 1000288025
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ASTC_6x6x5_UNORM_BLOCK_EXT"
+pattern FORMAT_ASTC_6x6x5_UNORM_BLOCK_EXT = Format 1000288024
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ASTC_6x5x5_SFLOAT_BLOCK_EXT"
+pattern FORMAT_ASTC_6x5x5_SFLOAT_BLOCK_EXT = Format 1000288023
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ASTC_6x5x5_SRGB_BLOCK_EXT"
+pattern FORMAT_ASTC_6x5x5_SRGB_BLOCK_EXT = Format 1000288022
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ASTC_6x5x5_UNORM_BLOCK_EXT"
+pattern FORMAT_ASTC_6x5x5_UNORM_BLOCK_EXT = Format 1000288021
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ASTC_5x5x5_SFLOAT_BLOCK_EXT"
+pattern FORMAT_ASTC_5x5x5_SFLOAT_BLOCK_EXT = Format 1000288020
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ASTC_5x5x5_SRGB_BLOCK_EXT"
+pattern FORMAT_ASTC_5x5x5_SRGB_BLOCK_EXT = Format 1000288019
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ASTC_5x5x5_UNORM_BLOCK_EXT"
+pattern FORMAT_ASTC_5x5x5_UNORM_BLOCK_EXT = Format 1000288018
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ASTC_5x5x4_SFLOAT_BLOCK_EXT"
+pattern FORMAT_ASTC_5x5x4_SFLOAT_BLOCK_EXT = Format 1000288017
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ASTC_5x5x4_SRGB_BLOCK_EXT"
+pattern FORMAT_ASTC_5x5x4_SRGB_BLOCK_EXT = Format 1000288016
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ASTC_5x5x4_UNORM_BLOCK_EXT"
+pattern FORMAT_ASTC_5x5x4_UNORM_BLOCK_EXT = Format 1000288015
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ASTC_5x4x4_SFLOAT_BLOCK_EXT"
+pattern FORMAT_ASTC_5x4x4_SFLOAT_BLOCK_EXT = Format 1000288014
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ASTC_5x4x4_SRGB_BLOCK_EXT"
+pattern FORMAT_ASTC_5x4x4_SRGB_BLOCK_EXT = Format 1000288013
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ASTC_5x4x4_UNORM_BLOCK_EXT"
+pattern FORMAT_ASTC_5x4x4_UNORM_BLOCK_EXT = Format 1000288012
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ASTC_4x4x4_SFLOAT_BLOCK_EXT"
+pattern FORMAT_ASTC_4x4x4_SFLOAT_BLOCK_EXT = Format 1000288011
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ASTC_4x4x4_SRGB_BLOCK_EXT"
+pattern FORMAT_ASTC_4x4x4_SRGB_BLOCK_EXT = Format 1000288010
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ASTC_4x4x4_UNORM_BLOCK_EXT"
+pattern FORMAT_ASTC_4x4x4_UNORM_BLOCK_EXT = Format 1000288009
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ASTC_4x4x3_SFLOAT_BLOCK_EXT"
+pattern FORMAT_ASTC_4x4x3_SFLOAT_BLOCK_EXT = Format 1000288008
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ASTC_4x4x3_SRGB_BLOCK_EXT"
+pattern FORMAT_ASTC_4x4x3_SRGB_BLOCK_EXT = Format 1000288007
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ASTC_4x4x3_UNORM_BLOCK_EXT"
+pattern FORMAT_ASTC_4x4x3_UNORM_BLOCK_EXT = Format 1000288006
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ASTC_4x3x3_SFLOAT_BLOCK_EXT"
+pattern FORMAT_ASTC_4x3x3_SFLOAT_BLOCK_EXT = Format 1000288005
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ASTC_4x3x3_SRGB_BLOCK_EXT"
+pattern FORMAT_ASTC_4x3x3_SRGB_BLOCK_EXT = Format 1000288004
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ASTC_4x3x3_UNORM_BLOCK_EXT"
+pattern FORMAT_ASTC_4x3x3_UNORM_BLOCK_EXT = Format 1000288003
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ASTC_3x3x3_SFLOAT_BLOCK_EXT"
+pattern FORMAT_ASTC_3x3x3_SFLOAT_BLOCK_EXT = Format 1000288002
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ASTC_3x3x3_SRGB_BLOCK_EXT"
+pattern FORMAT_ASTC_3x3x3_SRGB_BLOCK_EXT = Format 1000288001
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ASTC_3x3x3_UNORM_BLOCK_EXT"
+pattern FORMAT_ASTC_3x3x3_UNORM_BLOCK_EXT = Format 1000288000
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG"
+pattern FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG = Format 1000054007
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG"
+pattern FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG = Format 1000054006
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG"
+pattern FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG = Format 1000054005
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG"
+pattern FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG = Format 1000054004
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG"
+pattern FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG = Format 1000054003
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG"
+pattern FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG = Format 1000054002
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG"
+pattern FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG = Format 1000054001
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG"
+pattern FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG = Format 1000054000
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_A8_UNORM"
+pattern FORMAT_A8_UNORM = Format 1000470001
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_A1B5G5R5_UNORM_PACK16"
+pattern FORMAT_A1B5G5R5_UNORM_PACK16 = Format 1000470000
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK"
+pattern FORMAT_ASTC_12x12_SFLOAT_BLOCK = Format 1000066013
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK"
+pattern FORMAT_ASTC_12x10_SFLOAT_BLOCK = Format 1000066012
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK"
+pattern FORMAT_ASTC_10x10_SFLOAT_BLOCK = Format 1000066011
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK"
+pattern FORMAT_ASTC_10x8_SFLOAT_BLOCK = Format 1000066010
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK"
+pattern FORMAT_ASTC_10x6_SFLOAT_BLOCK = Format 1000066009
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK"
+pattern FORMAT_ASTC_10x5_SFLOAT_BLOCK = Format 1000066008
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK"
+pattern FORMAT_ASTC_8x8_SFLOAT_BLOCK = Format 1000066007
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK"
+pattern FORMAT_ASTC_8x6_SFLOAT_BLOCK = Format 1000066006
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK"
+pattern FORMAT_ASTC_8x5_SFLOAT_BLOCK = Format 1000066005
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK"
+pattern FORMAT_ASTC_6x6_SFLOAT_BLOCK = Format 1000066004
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK"
+pattern FORMAT_ASTC_6x5_SFLOAT_BLOCK = Format 1000066003
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK"
+pattern FORMAT_ASTC_5x5_SFLOAT_BLOCK = Format 1000066002
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK"
+pattern FORMAT_ASTC_5x4_SFLOAT_BLOCK = Format 1000066001
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK"
+pattern FORMAT_ASTC_4x4_SFLOAT_BLOCK = Format 1000066000
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_A4B4G4R4_UNORM_PACK16"
+pattern FORMAT_A4B4G4R4_UNORM_PACK16 = Format 1000340001
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_A4R4G4B4_UNORM_PACK16"
+pattern FORMAT_A4R4G4B4_UNORM_PACK16 = Format 1000340000
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_G16_B16R16_2PLANE_444_UNORM"
+pattern FORMAT_G16_B16R16_2PLANE_444_UNORM = Format 1000330003
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16"
+pattern FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16 = Format 1000330002
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16"
+pattern FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16 = Format 1000330001
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_G8_B8R8_2PLANE_444_UNORM"
+pattern FORMAT_G8_B8R8_2PLANE_444_UNORM = Format 1000330000
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM"
+pattern FORMAT_G16_B16_R16_3PLANE_444_UNORM = Format 1000156033
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_G16_B16R16_2PLANE_422_UNORM"
+pattern FORMAT_G16_B16R16_2PLANE_422_UNORM = Format 1000156032
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM"
+pattern FORMAT_G16_B16_R16_3PLANE_422_UNORM = Format 1000156031
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_G16_B16R16_2PLANE_420_UNORM"
+pattern FORMAT_G16_B16R16_2PLANE_420_UNORM = Format 1000156030
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM"
+pattern FORMAT_G16_B16_R16_3PLANE_420_UNORM = Format 1000156029
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_B16G16R16G16_422_UNORM"
+pattern FORMAT_B16G16R16G16_422_UNORM = Format 1000156028
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_G16B16G16R16_422_UNORM"
+pattern FORMAT_G16B16G16R16_422_UNORM = Format 1000156027
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16"
+pattern FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 = Format 1000156026
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16"
+pattern FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 = Format 1000156025
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16"
+pattern FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 = Format 1000156024
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16"
+pattern FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 = Format 1000156023
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16"
+pattern FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 = Format 1000156022
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16"
+pattern FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 = Format 1000156021
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16"
+pattern FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 = Format 1000156020
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16"
+pattern FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 = Format 1000156019
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R12X4G12X4_UNORM_2PACK16"
+pattern FORMAT_R12X4G12X4_UNORM_2PACK16 = Format 1000156018
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R12X4_UNORM_PACK16"
+pattern FORMAT_R12X4_UNORM_PACK16 = Format 1000156017
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16"
+pattern FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 = Format 1000156016
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16"
+pattern FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 = Format 1000156015
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16"
+pattern FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 = Format 1000156014
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16"
+pattern FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 = Format 1000156013
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16"
+pattern FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 = Format 1000156012
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16"
+pattern FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 = Format 1000156011
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16"
+pattern FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 = Format 1000156010
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16"
+pattern FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 = Format 1000156009
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R10X6G10X6_UNORM_2PACK16"
+pattern FORMAT_R10X6G10X6_UNORM_2PACK16 = Format 1000156008
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_R10X6_UNORM_PACK16"
+pattern FORMAT_R10X6_UNORM_PACK16 = Format 1000156007
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM"
+pattern FORMAT_G8_B8_R8_3PLANE_444_UNORM = Format 1000156006
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_G8_B8R8_2PLANE_422_UNORM"
+pattern FORMAT_G8_B8R8_2PLANE_422_UNORM = Format 1000156005
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM"
+pattern FORMAT_G8_B8_R8_3PLANE_422_UNORM = Format 1000156004
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_G8_B8R8_2PLANE_420_UNORM"
+pattern FORMAT_G8_B8R8_2PLANE_420_UNORM = Format 1000156003
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM"
+pattern FORMAT_G8_B8_R8_3PLANE_420_UNORM = Format 1000156002
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_B8G8R8G8_422_UNORM"
+pattern FORMAT_B8G8R8G8_422_UNORM = Format 1000156001
+
+-- No documentation found for Nested "VkFormat" "VK_FORMAT_G8B8G8R8_422_UNORM"
+pattern FORMAT_G8B8G8R8_422_UNORM = Format 1000156000
+
+{-# COMPLETE
+  FORMAT_UNDEFINED
+  , FORMAT_R4G4_UNORM_PACK8
+  , FORMAT_R4G4B4A4_UNORM_PACK16
+  , FORMAT_B4G4R4A4_UNORM_PACK16
+  , FORMAT_R5G6B5_UNORM_PACK16
+  , FORMAT_B5G6R5_UNORM_PACK16
+  , FORMAT_R5G5B5A1_UNORM_PACK16
+  , FORMAT_B5G5R5A1_UNORM_PACK16
+  , FORMAT_A1R5G5B5_UNORM_PACK16
+  , FORMAT_R8_UNORM
+  , FORMAT_R8_SNORM
+  , FORMAT_R8_USCALED
+  , FORMAT_R8_SSCALED
+  , FORMAT_R8_UINT
+  , FORMAT_R8_SINT
+  , FORMAT_R8_SRGB
+  , FORMAT_R8G8_UNORM
+  , FORMAT_R8G8_SNORM
+  , FORMAT_R8G8_USCALED
+  , FORMAT_R8G8_SSCALED
+  , FORMAT_R8G8_UINT
+  , FORMAT_R8G8_SINT
+  , FORMAT_R8G8_SRGB
+  , FORMAT_R8G8B8_UNORM
+  , FORMAT_R8G8B8_SNORM
+  , FORMAT_R8G8B8_USCALED
+  , FORMAT_R8G8B8_SSCALED
+  , FORMAT_R8G8B8_UINT
+  , FORMAT_R8G8B8_SINT
+  , FORMAT_R8G8B8_SRGB
+  , FORMAT_B8G8R8_UNORM
+  , FORMAT_B8G8R8_SNORM
+  , FORMAT_B8G8R8_USCALED
+  , FORMAT_B8G8R8_SSCALED
+  , FORMAT_B8G8R8_UINT
+  , FORMAT_B8G8R8_SINT
+  , FORMAT_B8G8R8_SRGB
+  , FORMAT_R8G8B8A8_UNORM
+  , FORMAT_R8G8B8A8_SNORM
+  , FORMAT_R8G8B8A8_USCALED
+  , FORMAT_R8G8B8A8_SSCALED
+  , FORMAT_R8G8B8A8_UINT
+  , FORMAT_R8G8B8A8_SINT
+  , FORMAT_R8G8B8A8_SRGB
+  , FORMAT_B8G8R8A8_UNORM
+  , FORMAT_B8G8R8A8_SNORM
+  , FORMAT_B8G8R8A8_USCALED
+  , FORMAT_B8G8R8A8_SSCALED
+  , FORMAT_B8G8R8A8_UINT
+  , FORMAT_B8G8R8A8_SINT
+  , FORMAT_B8G8R8A8_SRGB
+  , FORMAT_A8B8G8R8_UNORM_PACK32
+  , FORMAT_A8B8G8R8_SNORM_PACK32
+  , FORMAT_A8B8G8R8_USCALED_PACK32
+  , FORMAT_A8B8G8R8_SSCALED_PACK32
+  , FORMAT_A8B8G8R8_UINT_PACK32
+  , FORMAT_A8B8G8R8_SINT_PACK32
+  , FORMAT_A8B8G8R8_SRGB_PACK32
+  , FORMAT_A2R10G10B10_UNORM_PACK32
+  , FORMAT_A2R10G10B10_SNORM_PACK32
+  , FORMAT_A2R10G10B10_USCALED_PACK32
+  , FORMAT_A2R10G10B10_SSCALED_PACK32
+  , FORMAT_A2R10G10B10_UINT_PACK32
+  , FORMAT_A2R10G10B10_SINT_PACK32
+  , FORMAT_A2B10G10R10_UNORM_PACK32
+  , FORMAT_A2B10G10R10_SNORM_PACK32
+  , FORMAT_A2B10G10R10_USCALED_PACK32
+  , FORMAT_A2B10G10R10_SSCALED_PACK32
+  , FORMAT_A2B10G10R10_UINT_PACK32
+  , FORMAT_A2B10G10R10_SINT_PACK32
+  , FORMAT_R16_UNORM
+  , FORMAT_R16_SNORM
+  , FORMAT_R16_USCALED
+  , FORMAT_R16_SSCALED
+  , FORMAT_R16_UINT
+  , FORMAT_R16_SINT
+  , FORMAT_R16_SFLOAT
+  , FORMAT_R16G16_UNORM
+  , FORMAT_R16G16_SNORM
+  , FORMAT_R16G16_USCALED
+  , FORMAT_R16G16_SSCALED
+  , FORMAT_R16G16_UINT
+  , FORMAT_R16G16_SINT
+  , FORMAT_R16G16_SFLOAT
+  , FORMAT_R16G16B16_UNORM
+  , FORMAT_R16G16B16_SNORM
+  , FORMAT_R16G16B16_USCALED
+  , FORMAT_R16G16B16_SSCALED
+  , FORMAT_R16G16B16_UINT
+  , FORMAT_R16G16B16_SINT
+  , FORMAT_R16G16B16_SFLOAT
+  , FORMAT_R16G16B16A16_UNORM
+  , FORMAT_R16G16B16A16_SNORM
+  , FORMAT_R16G16B16A16_USCALED
+  , FORMAT_R16G16B16A16_SSCALED
+  , FORMAT_R16G16B16A16_UINT
+  , FORMAT_R16G16B16A16_SINT
+  , FORMAT_R16G16B16A16_SFLOAT
+  , FORMAT_R32_UINT
+  , FORMAT_R32_SINT
+  , FORMAT_R32_SFLOAT
+  , FORMAT_R32G32_UINT
+  , FORMAT_R32G32_SINT
+  , FORMAT_R32G32_SFLOAT
+  , FORMAT_R32G32B32_UINT
+  , FORMAT_R32G32B32_SINT
+  , FORMAT_R32G32B32_SFLOAT
+  , FORMAT_R32G32B32A32_UINT
+  , FORMAT_R32G32B32A32_SINT
+  , FORMAT_R32G32B32A32_SFLOAT
+  , FORMAT_R64_UINT
+  , FORMAT_R64_SINT
+  , FORMAT_R64_SFLOAT
+  , FORMAT_R64G64_UINT
+  , FORMAT_R64G64_SINT
+  , FORMAT_R64G64_SFLOAT
+  , FORMAT_R64G64B64_UINT
+  , FORMAT_R64G64B64_SINT
+  , FORMAT_R64G64B64_SFLOAT
+  , FORMAT_R64G64B64A64_UINT
+  , FORMAT_R64G64B64A64_SINT
+  , FORMAT_R64G64B64A64_SFLOAT
+  , FORMAT_B10G11R11_UFLOAT_PACK32
+  , FORMAT_E5B9G9R9_UFLOAT_PACK32
+  , FORMAT_D16_UNORM
+  , FORMAT_X8_D24_UNORM_PACK32
+  , FORMAT_D32_SFLOAT
+  , FORMAT_S8_UINT
+  , FORMAT_D16_UNORM_S8_UINT
+  , FORMAT_D24_UNORM_S8_UINT
+  , FORMAT_D32_SFLOAT_S8_UINT
+  , FORMAT_BC1_RGB_UNORM_BLOCK
+  , FORMAT_BC1_RGB_SRGB_BLOCK
+  , FORMAT_BC1_RGBA_UNORM_BLOCK
+  , FORMAT_BC1_RGBA_SRGB_BLOCK
+  , FORMAT_BC2_UNORM_BLOCK
+  , FORMAT_BC2_SRGB_BLOCK
+  , FORMAT_BC3_UNORM_BLOCK
+  , FORMAT_BC3_SRGB_BLOCK
+  , FORMAT_BC4_UNORM_BLOCK
+  , FORMAT_BC4_SNORM_BLOCK
+  , FORMAT_BC5_UNORM_BLOCK
+  , FORMAT_BC5_SNORM_BLOCK
+  , FORMAT_BC6H_UFLOAT_BLOCK
+  , FORMAT_BC6H_SFLOAT_BLOCK
+  , FORMAT_BC7_UNORM_BLOCK
+  , FORMAT_BC7_SRGB_BLOCK
+  , FORMAT_ETC2_R8G8B8_UNORM_BLOCK
+  , FORMAT_ETC2_R8G8B8_SRGB_BLOCK
+  , FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK
+  , FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK
+  , FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK
+  , FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK
+  , FORMAT_EAC_R11_UNORM_BLOCK
+  , FORMAT_EAC_R11_SNORM_BLOCK
+  , FORMAT_EAC_R11G11_UNORM_BLOCK
+  , FORMAT_EAC_R11G11_SNORM_BLOCK
+  , FORMAT_ASTC_4x4_UNORM_BLOCK
+  , FORMAT_ASTC_4x4_SRGB_BLOCK
+  , FORMAT_ASTC_5x4_UNORM_BLOCK
+  , FORMAT_ASTC_5x4_SRGB_BLOCK
+  , FORMAT_ASTC_5x5_UNORM_BLOCK
+  , FORMAT_ASTC_5x5_SRGB_BLOCK
+  , FORMAT_ASTC_6x5_UNORM_BLOCK
+  , FORMAT_ASTC_6x5_SRGB_BLOCK
+  , FORMAT_ASTC_6x6_UNORM_BLOCK
+  , FORMAT_ASTC_6x6_SRGB_BLOCK
+  , FORMAT_ASTC_8x5_UNORM_BLOCK
+  , FORMAT_ASTC_8x5_SRGB_BLOCK
+  , FORMAT_ASTC_8x6_UNORM_BLOCK
+  , FORMAT_ASTC_8x6_SRGB_BLOCK
+  , FORMAT_ASTC_8x8_UNORM_BLOCK
+  , FORMAT_ASTC_8x8_SRGB_BLOCK
+  , FORMAT_ASTC_10x5_UNORM_BLOCK
+  , FORMAT_ASTC_10x5_SRGB_BLOCK
+  , FORMAT_ASTC_10x6_UNORM_BLOCK
+  , FORMAT_ASTC_10x6_SRGB_BLOCK
+  , FORMAT_ASTC_10x8_UNORM_BLOCK
+  , FORMAT_ASTC_10x8_SRGB_BLOCK
+  , FORMAT_ASTC_10x10_UNORM_BLOCK
+  , FORMAT_ASTC_10x10_SRGB_BLOCK
+  , FORMAT_ASTC_12x10_UNORM_BLOCK
+  , FORMAT_ASTC_12x10_SRGB_BLOCK
+  , FORMAT_ASTC_12x12_UNORM_BLOCK
+  , FORMAT_ASTC_12x12_SRGB_BLOCK
+  , FORMAT_G14X2_B14X2R14X2_2PLANE_422_UNORM_3PACK16_ARM
+  , FORMAT_G14X2_B14X2R14X2_2PLANE_420_UNORM_3PACK16_ARM
+  , FORMAT_R14X2G14X2B14X2A14X2_UNORM_4PACK16_ARM
+  , FORMAT_R14X2G14X2_UNORM_2PACK16_ARM
+  , FORMAT_R14X2_UNORM_PACK16_ARM
+  , FORMAT_R14X2G14X2B14X2A14X2_UINT_4PACK16_ARM
+  , FORMAT_R14X2G14X2_UINT_2PACK16_ARM
+  , FORMAT_R14X2_UINT_PACK16_ARM
+  , FORMAT_R12X4G12X4B12X4A12X4_UINT_4PACK16_ARM
+  , FORMAT_R12X4G12X4_UINT_2PACK16_ARM
+  , FORMAT_R12X4_UINT_PACK16_ARM
+  , FORMAT_R10X6G10X6B10X6A10X6_UINT_4PACK16_ARM
+  , FORMAT_R10X6G10X6_UINT_2PACK16_ARM
+  , FORMAT_R10X6_UINT_PACK16_ARM
+  , FORMAT_R16G16_SFIXED5_NV
+  , FORMAT_R8_SFLOAT_FPENCODING_FLOAT8E5M2_ARM
+  , FORMAT_R8_SFLOAT_FPENCODING_FLOAT8E4M3_ARM
+  , FORMAT_R16_SFLOAT_FPENCODING_BFLOAT16_ARM
+  , FORMAT_R8_BOOL_ARM
+  , FORMAT_ASTC_6x6x6_SFLOAT_BLOCK_EXT
+  , FORMAT_ASTC_6x6x6_SRGB_BLOCK_EXT
+  , FORMAT_ASTC_6x6x6_UNORM_BLOCK_EXT
+  , FORMAT_ASTC_6x6x5_SFLOAT_BLOCK_EXT
+  , FORMAT_ASTC_6x6x5_SRGB_BLOCK_EXT
+  , FORMAT_ASTC_6x6x5_UNORM_BLOCK_EXT
+  , FORMAT_ASTC_6x5x5_SFLOAT_BLOCK_EXT
+  , FORMAT_ASTC_6x5x5_SRGB_BLOCK_EXT
+  , FORMAT_ASTC_6x5x5_UNORM_BLOCK_EXT
+  , FORMAT_ASTC_5x5x5_SFLOAT_BLOCK_EXT
+  , FORMAT_ASTC_5x5x5_SRGB_BLOCK_EXT
+  , FORMAT_ASTC_5x5x5_UNORM_BLOCK_EXT
+  , FORMAT_ASTC_5x5x4_SFLOAT_BLOCK_EXT
+  , FORMAT_ASTC_5x5x4_SRGB_BLOCK_EXT
+  , FORMAT_ASTC_5x5x4_UNORM_BLOCK_EXT
+  , FORMAT_ASTC_5x4x4_SFLOAT_BLOCK_EXT
+  , FORMAT_ASTC_5x4x4_SRGB_BLOCK_EXT
+  , FORMAT_ASTC_5x4x4_UNORM_BLOCK_EXT
+  , FORMAT_ASTC_4x4x4_SFLOAT_BLOCK_EXT
+  , FORMAT_ASTC_4x4x4_SRGB_BLOCK_EXT
+  , FORMAT_ASTC_4x4x4_UNORM_BLOCK_EXT
+  , FORMAT_ASTC_4x4x3_SFLOAT_BLOCK_EXT
+  , FORMAT_ASTC_4x4x3_SRGB_BLOCK_EXT
+  , FORMAT_ASTC_4x4x3_UNORM_BLOCK_EXT
+  , FORMAT_ASTC_4x3x3_SFLOAT_BLOCK_EXT
+  , FORMAT_ASTC_4x3x3_SRGB_BLOCK_EXT
+  , FORMAT_ASTC_4x3x3_UNORM_BLOCK_EXT
+  , FORMAT_ASTC_3x3x3_SFLOAT_BLOCK_EXT
+  , FORMAT_ASTC_3x3x3_SRGB_BLOCK_EXT
+  , FORMAT_ASTC_3x3x3_UNORM_BLOCK_EXT
+  , FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG
+  , FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG
+  , FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG
+  , FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG
+  , FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG
+  , FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG
+  , FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG
+  , FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG
+  , FORMAT_A8_UNORM
+  , FORMAT_A1B5G5R5_UNORM_PACK16
+  , 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
+  , FORMAT_G16_B16R16_2PLANE_420_UNORM
+  , FORMAT_G16_B16_R16_3PLANE_420_UNORM
+  , FORMAT_B16G16R16G16_422_UNORM
+  , FORMAT_G16B16G16R16_422_UNORM
+  , FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16
+  , FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16
+  , FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16
+  , FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16
+  , FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16
+  , FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16
+  , FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16
+  , FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16
+  , FORMAT_R12X4G12X4_UNORM_2PACK16
+  , FORMAT_R12X4_UNORM_PACK16
+  , FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16
+  , FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16
+  , FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16
+  , FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16
+  , FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16
+  , FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16
+  , FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16
+  , FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16
+  , FORMAT_R10X6G10X6_UNORM_2PACK16
+  , FORMAT_R10X6_UNORM_PACK16
+  , FORMAT_G8_B8_R8_3PLANE_444_UNORM
+  , FORMAT_G8_B8R8_2PLANE_422_UNORM
+  , FORMAT_G8_B8_R8_3PLANE_422_UNORM
+  , FORMAT_G8_B8R8_2PLANE_420_UNORM
+  , FORMAT_G8_B8_R8_3PLANE_420_UNORM
+  , FORMAT_B8G8R8G8_422_UNORM
+  , FORMAT_G8B8G8R8_422_UNORM ::
+    Format
+  #-}
+
+conNameFormat :: String
+conNameFormat = "Format"
+
+enumPrefixFormat :: String
+enumPrefixFormat = "FORMAT_"
+
+showTableFormat :: [(Format, String)]
+showTableFormat =
+  [ (FORMAT_UNDEFINED, "UNDEFINED")
+  , (FORMAT_R4G4_UNORM_PACK8, "R4G4_UNORM_PACK8")
+  , (FORMAT_R4G4B4A4_UNORM_PACK16, "R4G4B4A4_UNORM_PACK16")
+  , (FORMAT_B4G4R4A4_UNORM_PACK16, "B4G4R4A4_UNORM_PACK16")
+  , (FORMAT_R5G6B5_UNORM_PACK16, "R5G6B5_UNORM_PACK16")
+  , (FORMAT_B5G6R5_UNORM_PACK16, "B5G6R5_UNORM_PACK16")
+  , (FORMAT_R5G5B5A1_UNORM_PACK16, "R5G5B5A1_UNORM_PACK16")
+  , (FORMAT_B5G5R5A1_UNORM_PACK16, "B5G5R5A1_UNORM_PACK16")
+  , (FORMAT_A1R5G5B5_UNORM_PACK16, "A1R5G5B5_UNORM_PACK16")
+  , (FORMAT_R8_UNORM, "R8_UNORM")
+  , (FORMAT_R8_SNORM, "R8_SNORM")
+  , (FORMAT_R8_USCALED, "R8_USCALED")
+  , (FORMAT_R8_SSCALED, "R8_SSCALED")
+  , (FORMAT_R8_UINT, "R8_UINT")
+  , (FORMAT_R8_SINT, "R8_SINT")
+  , (FORMAT_R8_SRGB, "R8_SRGB")
+  , (FORMAT_R8G8_UNORM, "R8G8_UNORM")
+  , (FORMAT_R8G8_SNORM, "R8G8_SNORM")
+  , (FORMAT_R8G8_USCALED, "R8G8_USCALED")
+  , (FORMAT_R8G8_SSCALED, "R8G8_SSCALED")
+  , (FORMAT_R8G8_UINT, "R8G8_UINT")
+  , (FORMAT_R8G8_SINT, "R8G8_SINT")
+  , (FORMAT_R8G8_SRGB, "R8G8_SRGB")
+  , (FORMAT_R8G8B8_UNORM, "R8G8B8_UNORM")
+  , (FORMAT_R8G8B8_SNORM, "R8G8B8_SNORM")
+  , (FORMAT_R8G8B8_USCALED, "R8G8B8_USCALED")
+  , (FORMAT_R8G8B8_SSCALED, "R8G8B8_SSCALED")
+  , (FORMAT_R8G8B8_UINT, "R8G8B8_UINT")
+  , (FORMAT_R8G8B8_SINT, "R8G8B8_SINT")
+  , (FORMAT_R8G8B8_SRGB, "R8G8B8_SRGB")
+  , (FORMAT_B8G8R8_UNORM, "B8G8R8_UNORM")
+  , (FORMAT_B8G8R8_SNORM, "B8G8R8_SNORM")
+  , (FORMAT_B8G8R8_USCALED, "B8G8R8_USCALED")
+  , (FORMAT_B8G8R8_SSCALED, "B8G8R8_SSCALED")
+  , (FORMAT_B8G8R8_UINT, "B8G8R8_UINT")
+  , (FORMAT_B8G8R8_SINT, "B8G8R8_SINT")
+  , (FORMAT_B8G8R8_SRGB, "B8G8R8_SRGB")
+  , (FORMAT_R8G8B8A8_UNORM, "R8G8B8A8_UNORM")
+  , (FORMAT_R8G8B8A8_SNORM, "R8G8B8A8_SNORM")
+  , (FORMAT_R8G8B8A8_USCALED, "R8G8B8A8_USCALED")
+  , (FORMAT_R8G8B8A8_SSCALED, "R8G8B8A8_SSCALED")
+  , (FORMAT_R8G8B8A8_UINT, "R8G8B8A8_UINT")
+  , (FORMAT_R8G8B8A8_SINT, "R8G8B8A8_SINT")
+  , (FORMAT_R8G8B8A8_SRGB, "R8G8B8A8_SRGB")
+  , (FORMAT_B8G8R8A8_UNORM, "B8G8R8A8_UNORM")
+  , (FORMAT_B8G8R8A8_SNORM, "B8G8R8A8_SNORM")
+  , (FORMAT_B8G8R8A8_USCALED, "B8G8R8A8_USCALED")
+  , (FORMAT_B8G8R8A8_SSCALED, "B8G8R8A8_SSCALED")
+  , (FORMAT_B8G8R8A8_UINT, "B8G8R8A8_UINT")
+  , (FORMAT_B8G8R8A8_SINT, "B8G8R8A8_SINT")
+  , (FORMAT_B8G8R8A8_SRGB, "B8G8R8A8_SRGB")
+  , (FORMAT_A8B8G8R8_UNORM_PACK32, "A8B8G8R8_UNORM_PACK32")
+  , (FORMAT_A8B8G8R8_SNORM_PACK32, "A8B8G8R8_SNORM_PACK32")
+  , (FORMAT_A8B8G8R8_USCALED_PACK32, "A8B8G8R8_USCALED_PACK32")
+  , (FORMAT_A8B8G8R8_SSCALED_PACK32, "A8B8G8R8_SSCALED_PACK32")
+  , (FORMAT_A8B8G8R8_UINT_PACK32, "A8B8G8R8_UINT_PACK32")
+  , (FORMAT_A8B8G8R8_SINT_PACK32, "A8B8G8R8_SINT_PACK32")
+  , (FORMAT_A8B8G8R8_SRGB_PACK32, "A8B8G8R8_SRGB_PACK32")
+  ,
+    ( FORMAT_A2R10G10B10_UNORM_PACK32
+    , "A2R10G10B10_UNORM_PACK32"
+    )
+  ,
+    ( FORMAT_A2R10G10B10_SNORM_PACK32
+    , "A2R10G10B10_SNORM_PACK32"
+    )
+  ,
+    ( FORMAT_A2R10G10B10_USCALED_PACK32
+    , "A2R10G10B10_USCALED_PACK32"
+    )
+  ,
+    ( FORMAT_A2R10G10B10_SSCALED_PACK32
+    , "A2R10G10B10_SSCALED_PACK32"
+    )
+  , (FORMAT_A2R10G10B10_UINT_PACK32, "A2R10G10B10_UINT_PACK32")
+  , (FORMAT_A2R10G10B10_SINT_PACK32, "A2R10G10B10_SINT_PACK32")
+  ,
+    ( FORMAT_A2B10G10R10_UNORM_PACK32
+    , "A2B10G10R10_UNORM_PACK32"
+    )
+  ,
+    ( FORMAT_A2B10G10R10_SNORM_PACK32
+    , "A2B10G10R10_SNORM_PACK32"
+    )
+  ,
+    ( FORMAT_A2B10G10R10_USCALED_PACK32
+    , "A2B10G10R10_USCALED_PACK32"
+    )
+  ,
+    ( FORMAT_A2B10G10R10_SSCALED_PACK32
+    , "A2B10G10R10_SSCALED_PACK32"
+    )
+  , (FORMAT_A2B10G10R10_UINT_PACK32, "A2B10G10R10_UINT_PACK32")
+  , (FORMAT_A2B10G10R10_SINT_PACK32, "A2B10G10R10_SINT_PACK32")
+  , (FORMAT_R16_UNORM, "R16_UNORM")
+  , (FORMAT_R16_SNORM, "R16_SNORM")
+  , (FORMAT_R16_USCALED, "R16_USCALED")
+  , (FORMAT_R16_SSCALED, "R16_SSCALED")
+  , (FORMAT_R16_UINT, "R16_UINT")
+  , (FORMAT_R16_SINT, "R16_SINT")
+  , (FORMAT_R16_SFLOAT, "R16_SFLOAT")
+  , (FORMAT_R16G16_UNORM, "R16G16_UNORM")
+  , (FORMAT_R16G16_SNORM, "R16G16_SNORM")
+  , (FORMAT_R16G16_USCALED, "R16G16_USCALED")
+  , (FORMAT_R16G16_SSCALED, "R16G16_SSCALED")
+  , (FORMAT_R16G16_UINT, "R16G16_UINT")
+  , (FORMAT_R16G16_SINT, "R16G16_SINT")
+  , (FORMAT_R16G16_SFLOAT, "R16G16_SFLOAT")
+  , (FORMAT_R16G16B16_UNORM, "R16G16B16_UNORM")
+  , (FORMAT_R16G16B16_SNORM, "R16G16B16_SNORM")
+  , (FORMAT_R16G16B16_USCALED, "R16G16B16_USCALED")
+  , (FORMAT_R16G16B16_SSCALED, "R16G16B16_SSCALED")
+  , (FORMAT_R16G16B16_UINT, "R16G16B16_UINT")
+  , (FORMAT_R16G16B16_SINT, "R16G16B16_SINT")
+  , (FORMAT_R16G16B16_SFLOAT, "R16G16B16_SFLOAT")
+  , (FORMAT_R16G16B16A16_UNORM, "R16G16B16A16_UNORM")
+  , (FORMAT_R16G16B16A16_SNORM, "R16G16B16A16_SNORM")
+  , (FORMAT_R16G16B16A16_USCALED, "R16G16B16A16_USCALED")
+  , (FORMAT_R16G16B16A16_SSCALED, "R16G16B16A16_SSCALED")
+  , (FORMAT_R16G16B16A16_UINT, "R16G16B16A16_UINT")
+  , (FORMAT_R16G16B16A16_SINT, "R16G16B16A16_SINT")
+  , (FORMAT_R16G16B16A16_SFLOAT, "R16G16B16A16_SFLOAT")
+  , (FORMAT_R32_UINT, "R32_UINT")
+  , (FORMAT_R32_SINT, "R32_SINT")
+  , (FORMAT_R32_SFLOAT, "R32_SFLOAT")
+  , (FORMAT_R32G32_UINT, "R32G32_UINT")
+  , (FORMAT_R32G32_SINT, "R32G32_SINT")
+  , (FORMAT_R32G32_SFLOAT, "R32G32_SFLOAT")
+  , (FORMAT_R32G32B32_UINT, "R32G32B32_UINT")
+  , (FORMAT_R32G32B32_SINT, "R32G32B32_SINT")
+  , (FORMAT_R32G32B32_SFLOAT, "R32G32B32_SFLOAT")
+  , (FORMAT_R32G32B32A32_UINT, "R32G32B32A32_UINT")
+  , (FORMAT_R32G32B32A32_SINT, "R32G32B32A32_SINT")
+  , (FORMAT_R32G32B32A32_SFLOAT, "R32G32B32A32_SFLOAT")
+  , (FORMAT_R64_UINT, "R64_UINT")
+  , (FORMAT_R64_SINT, "R64_SINT")
+  , (FORMAT_R64_SFLOAT, "R64_SFLOAT")
+  , (FORMAT_R64G64_UINT, "R64G64_UINT")
+  , (FORMAT_R64G64_SINT, "R64G64_SINT")
+  , (FORMAT_R64G64_SFLOAT, "R64G64_SFLOAT")
+  , (FORMAT_R64G64B64_UINT, "R64G64B64_UINT")
+  , (FORMAT_R64G64B64_SINT, "R64G64B64_SINT")
+  , (FORMAT_R64G64B64_SFLOAT, "R64G64B64_SFLOAT")
+  , (FORMAT_R64G64B64A64_UINT, "R64G64B64A64_UINT")
+  , (FORMAT_R64G64B64A64_SINT, "R64G64B64A64_SINT")
+  , (FORMAT_R64G64B64A64_SFLOAT, "R64G64B64A64_SFLOAT")
+  , (FORMAT_B10G11R11_UFLOAT_PACK32, "B10G11R11_UFLOAT_PACK32")
+  , (FORMAT_E5B9G9R9_UFLOAT_PACK32, "E5B9G9R9_UFLOAT_PACK32")
+  , (FORMAT_D16_UNORM, "D16_UNORM")
+  , (FORMAT_X8_D24_UNORM_PACK32, "X8_D24_UNORM_PACK32")
+  , (FORMAT_D32_SFLOAT, "D32_SFLOAT")
+  , (FORMAT_S8_UINT, "S8_UINT")
+  , (FORMAT_D16_UNORM_S8_UINT, "D16_UNORM_S8_UINT")
+  , (FORMAT_D24_UNORM_S8_UINT, "D24_UNORM_S8_UINT")
+  , (FORMAT_D32_SFLOAT_S8_UINT, "D32_SFLOAT_S8_UINT")
+  , (FORMAT_BC1_RGB_UNORM_BLOCK, "BC1_RGB_UNORM_BLOCK")
+  , (FORMAT_BC1_RGB_SRGB_BLOCK, "BC1_RGB_SRGB_BLOCK")
+  , (FORMAT_BC1_RGBA_UNORM_BLOCK, "BC1_RGBA_UNORM_BLOCK")
+  , (FORMAT_BC1_RGBA_SRGB_BLOCK, "BC1_RGBA_SRGB_BLOCK")
+  , (FORMAT_BC2_UNORM_BLOCK, "BC2_UNORM_BLOCK")
+  , (FORMAT_BC2_SRGB_BLOCK, "BC2_SRGB_BLOCK")
+  , (FORMAT_BC3_UNORM_BLOCK, "BC3_UNORM_BLOCK")
+  , (FORMAT_BC3_SRGB_BLOCK, "BC3_SRGB_BLOCK")
+  , (FORMAT_BC4_UNORM_BLOCK, "BC4_UNORM_BLOCK")
+  , (FORMAT_BC4_SNORM_BLOCK, "BC4_SNORM_BLOCK")
+  , (FORMAT_BC5_UNORM_BLOCK, "BC5_UNORM_BLOCK")
+  , (FORMAT_BC5_SNORM_BLOCK, "BC5_SNORM_BLOCK")
+  , (FORMAT_BC6H_UFLOAT_BLOCK, "BC6H_UFLOAT_BLOCK")
+  , (FORMAT_BC6H_SFLOAT_BLOCK, "BC6H_SFLOAT_BLOCK")
+  , (FORMAT_BC7_UNORM_BLOCK, "BC7_UNORM_BLOCK")
+  , (FORMAT_BC7_SRGB_BLOCK, "BC7_SRGB_BLOCK")
+  , (FORMAT_ETC2_R8G8B8_UNORM_BLOCK, "ETC2_R8G8B8_UNORM_BLOCK")
+  , (FORMAT_ETC2_R8G8B8_SRGB_BLOCK, "ETC2_R8G8B8_SRGB_BLOCK")
+  ,
+    ( FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK
+    , "ETC2_R8G8B8A1_UNORM_BLOCK"
+    )
+  ,
+    ( FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK
+    , "ETC2_R8G8B8A1_SRGB_BLOCK"
+    )
+  ,
+    ( FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK
+    , "ETC2_R8G8B8A8_UNORM_BLOCK"
+    )
+  ,
+    ( FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK
+    , "ETC2_R8G8B8A8_SRGB_BLOCK"
+    )
+  , (FORMAT_EAC_R11_UNORM_BLOCK, "EAC_R11_UNORM_BLOCK")
+  , (FORMAT_EAC_R11_SNORM_BLOCK, "EAC_R11_SNORM_BLOCK")
+  , (FORMAT_EAC_R11G11_UNORM_BLOCK, "EAC_R11G11_UNORM_BLOCK")
+  , (FORMAT_EAC_R11G11_SNORM_BLOCK, "EAC_R11G11_SNORM_BLOCK")
+  , (FORMAT_ASTC_4x4_UNORM_BLOCK, "ASTC_4x4_UNORM_BLOCK")
+  , (FORMAT_ASTC_4x4_SRGB_BLOCK, "ASTC_4x4_SRGB_BLOCK")
+  , (FORMAT_ASTC_5x4_UNORM_BLOCK, "ASTC_5x4_UNORM_BLOCK")
+  , (FORMAT_ASTC_5x4_SRGB_BLOCK, "ASTC_5x4_SRGB_BLOCK")
+  , (FORMAT_ASTC_5x5_UNORM_BLOCK, "ASTC_5x5_UNORM_BLOCK")
+  , (FORMAT_ASTC_5x5_SRGB_BLOCK, "ASTC_5x5_SRGB_BLOCK")
+  , (FORMAT_ASTC_6x5_UNORM_BLOCK, "ASTC_6x5_UNORM_BLOCK")
+  , (FORMAT_ASTC_6x5_SRGB_BLOCK, "ASTC_6x5_SRGB_BLOCK")
+  , (FORMAT_ASTC_6x6_UNORM_BLOCK, "ASTC_6x6_UNORM_BLOCK")
+  , (FORMAT_ASTC_6x6_SRGB_BLOCK, "ASTC_6x6_SRGB_BLOCK")
+  , (FORMAT_ASTC_8x5_UNORM_BLOCK, "ASTC_8x5_UNORM_BLOCK")
+  , (FORMAT_ASTC_8x5_SRGB_BLOCK, "ASTC_8x5_SRGB_BLOCK")
+  , (FORMAT_ASTC_8x6_UNORM_BLOCK, "ASTC_8x6_UNORM_BLOCK")
+  , (FORMAT_ASTC_8x6_SRGB_BLOCK, "ASTC_8x6_SRGB_BLOCK")
+  , (FORMAT_ASTC_8x8_UNORM_BLOCK, "ASTC_8x8_UNORM_BLOCK")
+  , (FORMAT_ASTC_8x8_SRGB_BLOCK, "ASTC_8x8_SRGB_BLOCK")
+  , (FORMAT_ASTC_10x5_UNORM_BLOCK, "ASTC_10x5_UNORM_BLOCK")
+  , (FORMAT_ASTC_10x5_SRGB_BLOCK, "ASTC_10x5_SRGB_BLOCK")
+  , (FORMAT_ASTC_10x6_UNORM_BLOCK, "ASTC_10x6_UNORM_BLOCK")
+  , (FORMAT_ASTC_10x6_SRGB_BLOCK, "ASTC_10x6_SRGB_BLOCK")
+  , (FORMAT_ASTC_10x8_UNORM_BLOCK, "ASTC_10x8_UNORM_BLOCK")
+  , (FORMAT_ASTC_10x8_SRGB_BLOCK, "ASTC_10x8_SRGB_BLOCK")
+  , (FORMAT_ASTC_10x10_UNORM_BLOCK, "ASTC_10x10_UNORM_BLOCK")
+  , (FORMAT_ASTC_10x10_SRGB_BLOCK, "ASTC_10x10_SRGB_BLOCK")
+  , (FORMAT_ASTC_12x10_UNORM_BLOCK, "ASTC_12x10_UNORM_BLOCK")
+  , (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_G14X2_B14X2R14X2_2PLANE_422_UNORM_3PACK16_ARM
+    , "G14X2_B14X2R14X2_2PLANE_422_UNORM_3PACK16_ARM"
+    )
+  ,
+    ( FORMAT_G14X2_B14X2R14X2_2PLANE_420_UNORM_3PACK16_ARM
+    , "G14X2_B14X2R14X2_2PLANE_420_UNORM_3PACK16_ARM"
+    )
+  ,
+    ( FORMAT_R14X2G14X2B14X2A14X2_UNORM_4PACK16_ARM
+    , "R14X2G14X2B14X2A14X2_UNORM_4PACK16_ARM"
+    )
+  ,
+    ( FORMAT_R14X2G14X2_UNORM_2PACK16_ARM
+    , "R14X2G14X2_UNORM_2PACK16_ARM"
+    )
+  , (FORMAT_R14X2_UNORM_PACK16_ARM, "R14X2_UNORM_PACK16_ARM")
+  ,
+    ( FORMAT_R14X2G14X2B14X2A14X2_UINT_4PACK16_ARM
+    , "R14X2G14X2B14X2A14X2_UINT_4PACK16_ARM"
+    )
+  ,
+    ( FORMAT_R14X2G14X2_UINT_2PACK16_ARM
+    , "R14X2G14X2_UINT_2PACK16_ARM"
+    )
+  , (FORMAT_R14X2_UINT_PACK16_ARM, "R14X2_UINT_PACK16_ARM")
+  ,
+    ( FORMAT_R12X4G12X4B12X4A12X4_UINT_4PACK16_ARM
+    , "R12X4G12X4B12X4A12X4_UINT_4PACK16_ARM"
+    )
+  ,
+    ( FORMAT_R12X4G12X4_UINT_2PACK16_ARM
+    , "R12X4G12X4_UINT_2PACK16_ARM"
+    )
+  , (FORMAT_R12X4_UINT_PACK16_ARM, "R12X4_UINT_PACK16_ARM")
+  ,
+    ( FORMAT_R10X6G10X6B10X6A10X6_UINT_4PACK16_ARM
+    , "R10X6G10X6B10X6A10X6_UINT_4PACK16_ARM"
+    )
+  ,
+    ( FORMAT_R10X6G10X6_UINT_2PACK16_ARM
+    , "R10X6G10X6_UINT_2PACK16_ARM"
+    )
+  , (FORMAT_R10X6_UINT_PACK16_ARM, "R10X6_UINT_PACK16_ARM")
+  , (FORMAT_R16G16_SFIXED5_NV, "R16G16_SFIXED5_NV")
+  ,
+    ( FORMAT_R8_SFLOAT_FPENCODING_FLOAT8E5M2_ARM
+    , "R8_SFLOAT_FPENCODING_FLOAT8E5M2_ARM"
+    )
+  ,
+    ( FORMAT_R8_SFLOAT_FPENCODING_FLOAT8E4M3_ARM
+    , "R8_SFLOAT_FPENCODING_FLOAT8E4M3_ARM"
+    )
+  ,
+    ( FORMAT_R16_SFLOAT_FPENCODING_BFLOAT16_ARM
+    , "R16_SFLOAT_FPENCODING_BFLOAT16_ARM"
+    )
+  , (FORMAT_R8_BOOL_ARM, "R8_BOOL_ARM")
+  ,
+    ( FORMAT_ASTC_6x6x6_SFLOAT_BLOCK_EXT
+    , "ASTC_6x6x6_SFLOAT_BLOCK_EXT"
+    )
+  ,
+    ( FORMAT_ASTC_6x6x6_SRGB_BLOCK_EXT
+    , "ASTC_6x6x6_SRGB_BLOCK_EXT"
+    )
+  ,
+    ( FORMAT_ASTC_6x6x6_UNORM_BLOCK_EXT
+    , "ASTC_6x6x6_UNORM_BLOCK_EXT"
+    )
+  ,
+    ( FORMAT_ASTC_6x6x5_SFLOAT_BLOCK_EXT
+    , "ASTC_6x6x5_SFLOAT_BLOCK_EXT"
+    )
+  ,
+    ( FORMAT_ASTC_6x6x5_SRGB_BLOCK_EXT
+    , "ASTC_6x6x5_SRGB_BLOCK_EXT"
+    )
+  ,
+    ( FORMAT_ASTC_6x6x5_UNORM_BLOCK_EXT
+    , "ASTC_6x6x5_UNORM_BLOCK_EXT"
+    )
+  ,
+    ( FORMAT_ASTC_6x5x5_SFLOAT_BLOCK_EXT
+    , "ASTC_6x5x5_SFLOAT_BLOCK_EXT"
+    )
+  ,
+    ( FORMAT_ASTC_6x5x5_SRGB_BLOCK_EXT
+    , "ASTC_6x5x5_SRGB_BLOCK_EXT"
+    )
+  ,
+    ( FORMAT_ASTC_6x5x5_UNORM_BLOCK_EXT
+    , "ASTC_6x5x5_UNORM_BLOCK_EXT"
+    )
+  ,
+    ( FORMAT_ASTC_5x5x5_SFLOAT_BLOCK_EXT
+    , "ASTC_5x5x5_SFLOAT_BLOCK_EXT"
+    )
+  ,
+    ( FORMAT_ASTC_5x5x5_SRGB_BLOCK_EXT
+    , "ASTC_5x5x5_SRGB_BLOCK_EXT"
+    )
+  ,
+    ( FORMAT_ASTC_5x5x5_UNORM_BLOCK_EXT
+    , "ASTC_5x5x5_UNORM_BLOCK_EXT"
+    )
+  ,
+    ( FORMAT_ASTC_5x5x4_SFLOAT_BLOCK_EXT
+    , "ASTC_5x5x4_SFLOAT_BLOCK_EXT"
+    )
+  ,
+    ( FORMAT_ASTC_5x5x4_SRGB_BLOCK_EXT
+    , "ASTC_5x5x4_SRGB_BLOCK_EXT"
+    )
+  ,
+    ( FORMAT_ASTC_5x5x4_UNORM_BLOCK_EXT
+    , "ASTC_5x5x4_UNORM_BLOCK_EXT"
+    )
+  ,
+    ( FORMAT_ASTC_5x4x4_SFLOAT_BLOCK_EXT
+    , "ASTC_5x4x4_SFLOAT_BLOCK_EXT"
+    )
+  ,
+    ( FORMAT_ASTC_5x4x4_SRGB_BLOCK_EXT
+    , "ASTC_5x4x4_SRGB_BLOCK_EXT"
+    )
+  ,
+    ( FORMAT_ASTC_5x4x4_UNORM_BLOCK_EXT
+    , "ASTC_5x4x4_UNORM_BLOCK_EXT"
+    )
+  ,
+    ( FORMAT_ASTC_4x4x4_SFLOAT_BLOCK_EXT
+    , "ASTC_4x4x4_SFLOAT_BLOCK_EXT"
+    )
+  ,
+    ( FORMAT_ASTC_4x4x4_SRGB_BLOCK_EXT
+    , "ASTC_4x4x4_SRGB_BLOCK_EXT"
+    )
+  ,
+    ( FORMAT_ASTC_4x4x4_UNORM_BLOCK_EXT
+    , "ASTC_4x4x4_UNORM_BLOCK_EXT"
+    )
+  ,
+    ( FORMAT_ASTC_4x4x3_SFLOAT_BLOCK_EXT
+    , "ASTC_4x4x3_SFLOAT_BLOCK_EXT"
+    )
+  ,
+    ( FORMAT_ASTC_4x4x3_SRGB_BLOCK_EXT
+    , "ASTC_4x4x3_SRGB_BLOCK_EXT"
+    )
+  ,
+    ( FORMAT_ASTC_4x4x3_UNORM_BLOCK_EXT
+    , "ASTC_4x4x3_UNORM_BLOCK_EXT"
+    )
+  ,
+    ( FORMAT_ASTC_4x3x3_SFLOAT_BLOCK_EXT
+    , "ASTC_4x3x3_SFLOAT_BLOCK_EXT"
+    )
+  ,
+    ( FORMAT_ASTC_4x3x3_SRGB_BLOCK_EXT
+    , "ASTC_4x3x3_SRGB_BLOCK_EXT"
+    )
+  ,
+    ( FORMAT_ASTC_4x3x3_UNORM_BLOCK_EXT
+    , "ASTC_4x3x3_UNORM_BLOCK_EXT"
+    )
+  ,
+    ( FORMAT_ASTC_3x3x3_SFLOAT_BLOCK_EXT
+    , "ASTC_3x3x3_SFLOAT_BLOCK_EXT"
+    )
+  ,
+    ( FORMAT_ASTC_3x3x3_SRGB_BLOCK_EXT
+    , "ASTC_3x3x3_SRGB_BLOCK_EXT"
+    )
+  ,
+    ( FORMAT_ASTC_3x3x3_UNORM_BLOCK_EXT
+    , "ASTC_3x3x3_UNORM_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"
+    )
+  ,
+    ( FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG
+    , "PVRTC1_2BPP_SRGB_BLOCK_IMG"
+    )
+  ,
+    ( FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG
+    , "PVRTC2_4BPP_UNORM_BLOCK_IMG"
+    )
+  ,
+    ( 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_A8_UNORM, "A8_UNORM")
+  , (FORMAT_A1B5G5R5_UNORM_PACK16, "A1B5G5R5_UNORM_PACK16")
   , (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")
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
@@ -62,11 +62,11 @@
 --
 -- -   'FORMAT_FEATURE_SAMPLED_IMAGE_BIT' specifies that an image view
 --     /can/ be
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-sampledimage sampled from>.
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-sampledimage sampled from>.
 --
 -- -   'FORMAT_FEATURE_STORAGE_IMAGE_BIT' specifies that an image view
 --     /can/ be used as a
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storageimage storage image>.
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-storageimage storage image>.
 --
 -- -   'FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT' specifies that an image
 --     view /can/ be used as storage image that supports atomic operations.
@@ -121,7 +121,7 @@
 --
 -- -   'FORMAT_FEATURE_TRANSFER_SRC_BIT' specifies that an image /can/ be
 --     used as a source image for
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#copies copy commands>.
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#copies copy commands>.
 --     If the application @apiVersion@ is Vulkan 1.0 and
 --     @VK_KHR_maintenance1@ is not supported,
 --     'FORMAT_FEATURE_TRANSFER_SRC_BIT' is implied to be set when the
@@ -129,9 +129,9 @@
 --
 -- -   'FORMAT_FEATURE_TRANSFER_DST_BIT' specifies that an image /can/ be
 --     used as a destination image for
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#copies copy commands>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#copies copy commands>
 --     and
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#clears clear commands>.
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#clears clear commands>.
 --     If the application @apiVersion@ is Vulkan 1.0 and
 --     @VK_KHR_maintenance1@ is not supported,
 --     'FORMAT_FEATURE_TRANSFER_DST_BIT' is implied to be set when the
@@ -157,7 +157,7 @@
 --
 -- -   'FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT' specifies that an
 --     application /can/ define a
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
+--     <https://registry.khronos.org/vulkan/specs/latest/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'
@@ -172,7 +172,7 @@
 --
 -- -   'FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT' specifies that an
 --     application /can/ define a
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
+--     <https://registry.khronos.org/vulkan/specs/latest/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'
@@ -183,12 +183,12 @@
 --     neither 'FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT' nor
 --     'FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT' is set, the application
 --     /must/ not define a
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
+--     <https://registry.khronos.org/vulkan/specs/latest/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'.
 --
@@ -198,7 +198,7 @@
 --
 -- -   'FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT'
 --     specifies that reconstruction is explicit, as described in
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#textures-chroma-reconstruction>.
+--     <https://registry.khronos.org/vulkan/specs/latest/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'
@@ -219,45 +219,47 @@
 --
 -- -   'FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT' specifies that an
 --     image view /can/ be used as a
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-fragmentdensitymapattachment fragment density map attachment>.
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment>.
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment>.
 --     An implementation /must/ not set this feature for formats with a
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#formats-numericformat numeric format>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-numericformat numeric format>
 --     other than @UINT@, or set it as a buffer feature.
 --
--- -   @VK_FORMAT_FEATURE_VIDEO_DECODE_OUTPUT_BIT_KHR@ specifies that an
---     image view with this format /can/ be used as a
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#decode-output-picture decode output picture>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatFeatureFlagBits VK_FORMAT_FEATURE_VIDEO_DECODE_OUTPUT_BIT_KHR>
+--     specifies that an image view with this format /can/ be used as a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#decode-output-picture decode output picture>
 --     in
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#video-decode-operations video decode operations>.
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#video-decode-operations video decode operations>.
 --
--- -   @VK_FORMAT_FEATURE_VIDEO_DECODE_DPB_BIT_KHR@ specifies that an image
---     view with this format /can/ be used as an output
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#reconstructed-picture reconstructed picture>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatFeatureFlagBits VK_FORMAT_FEATURE_VIDEO_DECODE_DPB_BIT_KHR>
+--     specifies that an image view with this format /can/ be used as an
+--     output
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#reconstructed-picture reconstructed picture>
 --     or an input
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#reference-picture reference picture>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#reference-picture reference picture>
 --     in
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#video-decode-operations video decode operations>.
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#video-decode-operations video decode operations>.
 --
--- -   @VK_FORMAT_FEATURE_VIDEO_ENCODE_INPUT_BIT_KHR@ specifies that an
---     image view with this format /can/ be used as an
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#encode-input-picture encode input picture>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatFeatureFlagBits VK_FORMAT_FEATURE_VIDEO_ENCODE_INPUT_BIT_KHR>
+--     specifies that an image view with this format /can/ be used as an
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#encode-input-picture encode input picture>
 --     in
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#video-encode-operations video encode operations>.
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#video-encode-operations video encode operations>.
 --
--- -   @VK_FORMAT_FEATURE_VIDEO_ENCODE_DPB_BIT_KHR@ specifies that an image
---     view with this format /can/ be used as an output
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#reconstructed-picture reconstructed picture>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatFeatureFlagBits VK_FORMAT_FEATURE_VIDEO_ENCODE_DPB_BIT_KHR>
+--     specifies that an image view with this format /can/ be used as an
+--     output
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#reconstructed-picture reconstructed picture>
 --     or an input
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#reference-picture reference picture>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#reference-picture reference picture>
 --     in
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#video-encode-operations video encode operations>.
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#video-encode-operations video encode operations>.
 --
 --     Specific
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#video-profiles video profiles>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#video-profiles video profiles>
 --     /may/ have additional restrictions on the format and other image
 --     creation parameters corresponding to image views used by video
 --     coding operations that /can/ be enumerated using the
@@ -286,16 +288,16 @@
 --
 -- -   'FORMAT_FEATURE_VERTEX_BUFFER_BIT' specifies that the format /can/
 --     be used as a vertex attribute format
---     ('Vulkan.Core10.Pipeline.VertexInputAttributeDescription'::@format@).
+--     ('Vulkan.Core10.GraphicsPipeline.VertexInputAttributeDescription'::@format@).
 --
 -- -   'FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR'
 --     specifies that the format /can/ be used as the vertex format when
 --     creating an
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#acceleration-structure acceleration structure>
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#host-acceleration-structure host acceleration structure>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#host-acceleration-structure host acceleration structure>
 --     builds.
 --
 -- 'FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT' and
@@ -310,220 +312,85 @@
 newtype FormatFeatureFlagBits = FormatFeatureFlagBits Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'FORMAT_FEATURE_SAMPLED_IMAGE_BIT' specifies that an image view /can/ be
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-sampledimage sampled from>.
+-- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT"
 pattern FORMAT_FEATURE_SAMPLED_IMAGE_BIT = FormatFeatureFlagBits 0x00000001
 
--- | 'FORMAT_FEATURE_STORAGE_IMAGE_BIT' specifies that an image view /can/ be
--- used as a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storageimage storage image>.
+-- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT"
 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.
+-- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT"
 pattern FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = FormatFeatureFlagBits 0x00000004
 
--- | 'FORMAT_FEATURE_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.
+-- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT"
 pattern FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = FormatFeatureFlagBits 0x00000008
 
--- | 'FORMAT_FEATURE_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.
+-- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT"
 pattern FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = FormatFeatureFlagBits 0x00000010
 
--- | 'FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT' specifies that atomic
--- operations are supported on
--- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'
--- with this format.
+-- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT"
 pattern FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = FormatFeatureFlagBits 0x00000020
 
--- | 'FORMAT_FEATURE_VERTEX_BUFFER_BIT' specifies that the format /can/ be
--- used as a vertex attribute format
--- ('Vulkan.Core10.Pipeline.VertexInputAttributeDescription'::@format@).
+-- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT"
 pattern FORMAT_FEATURE_VERTEX_BUFFER_BIT = FormatFeatureFlagBits 0x00000040
 
--- | 'FORMAT_FEATURE_COLOR_ATTACHMENT_BIT' specifies that an image view /can/
--- be used as a framebuffer color attachment and as an input attachment.
+-- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT"
 pattern FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = FormatFeatureFlagBits 0x00000080
 
--- | 'FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT' specifies that an image view
--- /can/ be used as a framebuffer color attachment that supports blending.
+-- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT"
 pattern FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = FormatFeatureFlagBits 0x00000100
 
--- | 'FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT' specifies that an image
--- view /can/ be used as a framebuffer depth\/stencil attachment and as an
--- input attachment.
+-- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT"
 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.Core13.Promoted_From_VK_KHR_copy_commands2.cmdBlitImage2' and
--- 'Vulkan.Core10.CommandBufferBuilding.cmdBlitImage' commands.
+-- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_BLIT_SRC_BIT"
 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.Core13.Promoted_From_VK_KHR_copy_commands2.cmdBlitImage2' and
--- 'Vulkan.Core10.CommandBufferBuilding.cmdBlitImage' commands.
+-- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_BLIT_DST_BIT"
 pattern FORMAT_FEATURE_BLIT_DST_BIT = FormatFeatureFlagBits 0x00000800
 
--- | 'FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT' specifies that if
--- 'FORMAT_FEATURE_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_BLIT_SRC_BIT' is also set, an image can be used as the
--- @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'.
---
--- 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, and that linear filtering of the
--- depth aspect is supported whether depth compare is enabled in the
--- sampler or not. 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.
+-- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT"
 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://registry.khronos.org/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 a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#formats-numericformat numeric format>
--- other than @UINT@, or set it as a buffer feature.
+-- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"
 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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-fragmentdensitymapattachment fragment density map attachment>.
+-- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT"
 pattern FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT = FormatFeatureFlagBits 0x01000000
 
--- | 'FORMAT_FEATURE_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.Core10.Enums.Filter.FILTER_CUBIC_EXT', or be the source image
--- for a blit with @filter@ set to
--- 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT'. This bit /must/ only be
--- exposed for formats that also support the
--- 'FORMAT_FEATURE_SAMPLED_IMAGE_BIT'. If the format being queried is a
--- depth\/stencil format, this only specifies that the depth aspect is
--- cubic filterable.
+-- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT"
 pattern FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = FormatFeatureFlagBits 0x00002000
 
--- | 'FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR' specifies
--- that the format /can/ be used as the vertex format when creating an
--- <https://registry.khronos.org/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#host-acceleration-structure host acceleration structure>
--- builds.
+-- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR"
 pattern FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR = FormatFeatureFlagBits 0x20000000
 
--- | 'FORMAT_FEATURE_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_SAMPLED_IMAGE_BIT'.
+-- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT"
 pattern FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT = FormatFeatureFlagBits 0x00010000
 
--- | 'FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT' specifies that an
--- application /can/ define a
--- <https://registry.khronos.org/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_COSITED_CHROMA_SAMPLES_BIT' nor
--- 'FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT' is set, the application
--- /must/ not define a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
--- using this format as a source.
+-- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT"
 pattern FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT = FormatFeatureFlagBits 0x00800000
 
--- | 'FORMAT_FEATURE_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_DISJOINT_BIT' for /single-plane formats/.
+-- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_DISJOINT_BIT"
 pattern FORMAT_FEATURE_DISJOINT_BIT = FormatFeatureFlagBits 0x00400000
 
--- | 'FORMAT_FEATURE_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_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT'
--- it /must/ also support
--- 'FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT'.
+-- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT"
 pattern FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT = FormatFeatureFlagBits 0x00200000
 
--- | 'FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT'
--- specifies that reconstruction is explicit, as described in
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#textures-chroma-reconstruction>.
--- If this bit is not present, reconstruction is implicit by default.
+-- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT"
 pattern FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT = FormatFeatureFlagBits 0x00100000
 
--- | 'FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT'
--- specifies that the format can have different chroma, min, and mag
--- filters.
+-- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT"
 pattern FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT = FormatFeatureFlagBits 0x00080000
 
--- | 'FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT'
--- specifies that an application /can/ define a
--- <https://registry.khronos.org/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'.
+-- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT"
 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://registry.khronos.org/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_MIDPOINT_CHROMA_SAMPLES_BIT'.
+-- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT"
 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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#copies copy commands>
--- and
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#clears clear commands>.
--- If the application @apiVersion@ is Vulkan 1.0 and @VK_KHR_maintenance1@
--- is not supported, 'FORMAT_FEATURE_TRANSFER_DST_BIT' is implied to be set
--- when the format feature flag is not 0.
+-- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_TRANSFER_DST_BIT"
 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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#copies copy commands>.
--- If the application @apiVersion@ is Vulkan 1.0 and @VK_KHR_maintenance1@
--- is not supported, 'FORMAT_FEATURE_TRANSFER_SRC_BIT' is implied to be set
--- when the format feature flag is not 0.
+-- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_TRANSFER_SRC_BIT"
 pattern FORMAT_FEATURE_TRANSFER_SRC_BIT = FormatFeatureFlagBits 0x00004000
 
 conNameFormatFeatureFlagBits :: String
diff --git a/src/Vulkan/Core10/Enums/FramebufferCreateFlagBits.hs b/src/Vulkan/Core10/Enums/FramebufferCreateFlagBits.hs
--- a/src/Vulkan/Core10/Enums/FramebufferCreateFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/FramebufferCreateFlagBits.hs
@@ -21,6 +21,14 @@
 
 -- | VkFramebufferCreateFlagBits - Bitmask specifying framebuffer properties
 --
+-- = Description
+--
+-- -   'FRAMEBUFFER_CREATE_IMAGELESS_BIT' specifies that image views are
+--     not specified, and only attachment compatibility information will be
+--     provided via a
+--     'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentImageInfo'
+--     structure.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -28,11 +36,7 @@
 newtype FramebufferCreateFlagBits = FramebufferCreateFlagBits Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'FRAMEBUFFER_CREATE_IMAGELESS_BIT' specifies that image views are not
--- specified, and only attachment compatibility information will be
--- provided via a
--- 'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentImageInfo'
--- structure.
+-- No documentation found for Nested "VkFramebufferCreateFlagBits" "VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT"
 pattern FRAMEBUFFER_CREATE_IMAGELESS_BIT = FramebufferCreateFlagBits 0x00000001
 
 conNameFramebufferCreateFlagBits :: 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
@@ -18,24 +18,28 @@
 --
 -- = Description
 --
+-- -   'FRONT_FACE_COUNTER_CLOCKWISE' specifies that a triangle with
+--     positive area is considered front-facing.
+--
+-- -   'FRONT_FACE_CLOCKWISE' specifies that a triangle with negative area
+--     is considered front-facing.
+--
 -- Any triangle which is not front-facing is back-facing, including
 -- zero-area triangles.
 --
 -- = 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.Pipeline.PipelineRasterizationStateCreateInfo',
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineRasterizationStateCreateInfo',
 -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetFrontFace',
--- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetFrontFaceEXT'
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetFrontFace'
 newtype FrontFace = FrontFace Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'FRONT_FACE_COUNTER_CLOCKWISE' specifies that a triangle with positive
--- area is considered front-facing.
+-- No documentation found for Nested "VkFrontFace" "VK_FRONT_FACE_COUNTER_CLOCKWISE"
 pattern FRONT_FACE_COUNTER_CLOCKWISE = FrontFace 0
 
--- | 'FRONT_FACE_CLOCKWISE' specifies that a triangle with negative area is
--- considered front-facing.
+-- No documentation found for Nested "VkFrontFace" "VK_FRONT_FACE_CLOCKWISE"
 pattern FRONT_FACE_CLOCKWISE = FrontFace 1
 
 {-# COMPLETE
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
@@ -33,6 +33,38 @@
 -- | VkImageAspectFlagBits - Bitmask specifying which aspects of an image are
 -- included in a view
 --
+-- = Description
+--
+-- -   'IMAGE_ASPECT_NONE' specifies no image aspect, or the image aspect
+--     is not applicable.
+--
+-- -   'IMAGE_ASPECT_COLOR_BIT' specifies the color aspect.
+--
+-- -   'IMAGE_ASPECT_DEPTH_BIT' specifies the depth aspect.
+--
+-- -   'IMAGE_ASPECT_STENCIL_BIT' specifies the stencil aspect.
+--
+-- -   'IMAGE_ASPECT_METADATA_BIT' specifies the metadata aspect used for
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#sparsememory sparse resource>
+--     operations.
+--
+-- -   'IMAGE_ASPECT_PLANE_0_BIT' specifies plane 0 of a /multi-planar/
+--     image format.
+--
+-- -   'IMAGE_ASPECT_PLANE_1_BIT' specifies plane 1 of a /multi-planar/
+--     image format.
+--
+-- -   'IMAGE_ASPECT_PLANE_2_BIT' specifies plane 2 of a /multi-planar/
+--     image format.
+--
+-- -   'IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT' specifies /memory plane/ 0.
+--
+-- -   'IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT' specifies /memory plane/ 1.
+--
+-- -   'IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT' specifies /memory plane/ 2.
+--
+-- -   'IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT' specifies /memory plane/ 3.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -45,46 +77,40 @@
 newtype ImageAspectFlagBits = ImageAspectFlagBits Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'IMAGE_ASPECT_COLOR_BIT' specifies the color aspect.
+-- No documentation found for Nested "VkImageAspectFlagBits" "VK_IMAGE_ASPECT_COLOR_BIT"
 pattern IMAGE_ASPECT_COLOR_BIT = ImageAspectFlagBits 0x00000001
 
--- | 'IMAGE_ASPECT_DEPTH_BIT' specifies the depth aspect.
+-- No documentation found for Nested "VkImageAspectFlagBits" "VK_IMAGE_ASPECT_DEPTH_BIT"
 pattern IMAGE_ASPECT_DEPTH_BIT = ImageAspectFlagBits 0x00000002
 
--- | 'IMAGE_ASPECT_STENCIL_BIT' specifies the stencil aspect.
+-- No documentation found for Nested "VkImageAspectFlagBits" "VK_IMAGE_ASPECT_STENCIL_BIT"
 pattern IMAGE_ASPECT_STENCIL_BIT = ImageAspectFlagBits 0x00000004
 
--- | 'IMAGE_ASPECT_METADATA_BIT' specifies the metadata aspect used for
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#sparsememory sparse resource>
--- operations.
+-- No documentation found for Nested "VkImageAspectFlagBits" "VK_IMAGE_ASPECT_METADATA_BIT"
 pattern IMAGE_ASPECT_METADATA_BIT = ImageAspectFlagBits 0x00000008
 
--- | 'IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT' specifies /memory plane/ 3.
+-- No documentation found for Nested "VkImageAspectFlagBits" "VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT"
 pattern IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT = ImageAspectFlagBits 0x00000400
 
--- | 'IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT' specifies /memory plane/ 2.
+-- No documentation found for Nested "VkImageAspectFlagBits" "VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT"
 pattern IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT = ImageAspectFlagBits 0x00000200
 
--- | 'IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT' specifies /memory plane/ 1.
+-- No documentation found for Nested "VkImageAspectFlagBits" "VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT"
 pattern IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT = ImageAspectFlagBits 0x00000100
 
--- | 'IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT' specifies /memory plane/ 0.
+-- No documentation found for Nested "VkImageAspectFlagBits" "VK_IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT"
 pattern IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT = ImageAspectFlagBits 0x00000080
 
--- | 'IMAGE_ASPECT_NONE' specifies no image aspect, or the image aspect is
--- not applicable.
+-- No documentation found for Nested "VkImageAspectFlagBits" "VK_IMAGE_ASPECT_NONE"
 pattern IMAGE_ASPECT_NONE = ImageAspectFlagBits 0x00000000
 
--- | 'IMAGE_ASPECT_PLANE_2_BIT' specifies plane 2 of a /multi-planar/ image
--- format.
+-- No documentation found for Nested "VkImageAspectFlagBits" "VK_IMAGE_ASPECT_PLANE_2_BIT"
 pattern IMAGE_ASPECT_PLANE_2_BIT = ImageAspectFlagBits 0x00000040
 
--- | 'IMAGE_ASPECT_PLANE_1_BIT' specifies plane 1 of a /multi-planar/ image
--- format.
+-- No documentation found for Nested "VkImageAspectFlagBits" "VK_IMAGE_ASPECT_PLANE_1_BIT"
 pattern IMAGE_ASPECT_PLANE_1_BIT = ImageAspectFlagBits 0x00000020
 
--- | 'IMAGE_ASPECT_PLANE_0_BIT' specifies plane 0 of a /multi-planar/ image
--- format.
+-- No documentation found for Nested "VkImageAspectFlagBits" "VK_IMAGE_ASPECT_PLANE_0_BIT"
 pattern IMAGE_ASPECT_PLANE_0_BIT = ImageAspectFlagBits 0x00000010
 
 conNameImageAspectFlagBits :: String
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
@@ -7,12 +7,13 @@
                                                                      , IMAGE_CREATE_SPARSE_ALIASED_BIT
                                                                      , IMAGE_CREATE_MUTABLE_FORMAT_BIT
                                                                      , IMAGE_CREATE_CUBE_COMPATIBLE_BIT
-                                                                     , IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM
+                                                                     , IMAGE_CREATE_ALIAS_SINGLE_LAYER_DESCRIPTOR_BIT_KHR
+                                                                     , IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_EXT
                                                                      , IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT
                                                                      , IMAGE_CREATE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_BIT_EXT
-                                                                     , IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT
                                                                      , IMAGE_CREATE_SUBSAMPLED_BIT_EXT
                                                                      , IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT
+                                                                     , IMAGE_CREATE_DESCRIPTOR_HEAP_CAPTURE_REPLAY_BIT_EXT
                                                                      , IMAGE_CREATE_CORNER_SAMPLED_BIT_NV
                                                                      , IMAGE_CREATE_DISJOINT_BIT
                                                                      , IMAGE_CREATE_PROTECTED_BIT
@@ -47,10 +48,219 @@
 --
 -- = Description
 --
+-- -   'IMAGE_CREATE_SPARSE_BINDING_BIT' specifies that the image will be
+--     backed using sparse memory binding.
+--
+-- -   'IMAGE_CREATE_SPARSE_RESIDENCY_BIT' specifies that the image /can/
+--     be partially backed using sparse memory binding. Images created with
+--     this flag /must/ also be created with the
+--     'IMAGE_CREATE_SPARSE_BINDING_BIT' flag.
+--
+-- -   'IMAGE_CREATE_SPARSE_ALIASED_BIT' specifies that the image will be
+--     backed using sparse memory binding with memory ranges that might
+--     also simultaneously be backing another image (or another portion of
+--     the same image). Images created with this flag /must/ also be
+--     created with the 'IMAGE_CREATE_SPARSE_BINDING_BIT' flag.
+--
+-- -   'IMAGE_CREATE_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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-multiplanar multi-planar formats>,
+--     'IMAGE_CREATE_MUTABLE_FORMAT_BIT' specifies that a
+--     'Vulkan.Core10.Handles.ImageView' can be created of a /plane/ of the
+--     image.
+--
+-- -   'IMAGE_CREATE_CUBE_COMPATIBLE_BIT' specifies that the image /can/ be
+--     used to create a 'Vulkan.Core10.Handles.ImageView' of type
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE' or
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY'.
+--
+-- -   'IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT' specifies that the image
+--     /can/ be used to create a 'Vulkan.Core10.Handles.ImageView' of type
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D' or
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D_ARRAY'.
+--
+-- -   'IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT' specifies that the image
+--     /can/ be used to create a 'Vulkan.Core10.Handles.ImageView' of type
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D'.
+--
+-- -   'IMAGE_CREATE_PROTECTED_BIT' specifies that the image is a protected
+--     image.
+--
+-- -   'IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT' specifies that the
+--     image /can/ be used with a non-zero value of the
+--     @splitInstanceBindRegionCount@ member of a
+--     'Vulkan.Core11.Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2.BindImageMemoryDeviceGroupInfo'
+--     structure passed into
+--     'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.bindImageMemory2'.
+--     This flag also has the effect of making the image use the standard
+--     sparse image block dimensions.
+--
+-- -   'IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT' specifies that the
+--     image having a compressed format /can/ be used to create a
+--     'Vulkan.Core10.Handles.ImageView' with an uncompressed format where
+--     each texel in the image view corresponds to a compressed texel block
+--     of the image.
+--
+-- -   'IMAGE_CREATE_EXTENDED_USAGE_BIT' specifies that the image /can/ be
+--     created with usage flags that are not supported for the format the
+--     image is created with but are supported for at least one format a
+--     'Vulkan.Core10.Handles.ImageView' created from the image /can/ have.
+--
+-- -   'IMAGE_CREATE_DISJOINT_BIT' specifies that an image with a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-multiplanar 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.
+--
+-- -   'IMAGE_CREATE_ALIAS_BIT' specifies that two images created with the
+--     same 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://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-compatible-planes>.
+--     If the @pNext@ chain includes a
+--     'Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryImageCreateInfo'
+--     or
+--     'Vulkan.Extensions.VK_NV_external_memory.ExternalMemoryImageCreateInfoNV'
+--     structure whose @handleTypes@ member is not @0@, it is as if
+--     'IMAGE_CREATE_ALIAS_BIT' is set.
+--
+-- -   'IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT' specifies
+--     that an image with a depth or depth\/stencil format /can/ be used
+--     with custom sample locations when used as a depth\/stencil
+--     attachment.
+--
+-- -   'IMAGE_CREATE_CORNER_SAMPLED_BIT_NV' specifies that the image is a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-images-corner-sampled corner-sampled image>.
+--
+-- -   'IMAGE_CREATE_SUBSAMPLED_BIT_EXT' specifies that an image /can/ be
+--     in a subsampled format which /may/ be more optimal when written as
+--     an attachment by a render pass that has a fragment density map
+--     attachment. Accessing a subsampled image has additional
+--     considerations:
+--
+--     -   Image data read as an image sampler will have undefined values
+--         if the sampler was not created with @flags@ containing
+--         'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_SUBSAMPLED_BIT_EXT'
+--         or was not sampled through a combined
+--         <VkDescriptorSetAndBindingMappingEXT.html embedded sampler and image mapping>
+--         if using descriptor heaps, or the use of a combined image
+--         sampler with an immutable sampler in
+--         'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutBinding'.
+--
+--     -   Image data read with an input attachment will have undefined
+--         values if the contents were not written as an attachment in an
+--         earlier subpass of the same render pass.
+--
+--     -   Image data read as an image sampler in the fragment shader will
+--         be additionally be read by the device during
+--         'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_VERTEX_SHADER_BIT'
+--         if
+--         <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-subsampledLoads ::subsampledLoads>
+--         is 'Vulkan.Core10.FundamentalTypes.TRUE'. Otherwise, values of
+--         image data are undefined.
+--
+--     -   Image contents outside of the render area take on undefined
+--         values if the image is stored as a render pass attachment.
+--
+-- -   'IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_EXT' specifies that an
+--     image /can/ be used in a render pass with non-zero
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-fragmentdensitymapoffsets fragment density map offsets>.
+--     In a render pass with non-zero offsets, fragment density map
+--     attachments, input attachments, color attachments, depth\/stencil
+--     attachment, resolve attachments, and preserve attachments /must/ be
+--     created with 'IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_EXT'.
+--
+-- -   'Vulkan.Extensions.VK_EXT_descriptor_buffer.IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT'
+--     specifies that the image /can/ be used with descriptor buffers when
+--     capturing and replaying (e.g. for trace capture and replay), see
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.OpaqueCaptureDescriptorDataCreateInfoEXT'
+--     for more detail.
+--
+-- -   'IMAGE_CREATE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_BIT_EXT'
+--     specifies that an image /can/ be used with
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#multisampled-render-to-single-sampled multisampled rendering as a single-sampled framebuffer attachment>
+--
+-- -   'IMAGE_CREATE_ALIAS_SINGLE_LAYER_DESCRIPTOR_BIT_KHR' specifies that
+--     a single layer image view created from this image can be accessed
+--     with both @Arrayed@ equal to 0 and @Arrayed@ equal to 1 in a shader.
+--     If accessed with @Arrayed@ equal to 1 in a shader, and
+--     'Vulkan.Core10.ImageView.ImageViewCreateInfo'::@viewType@ is
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D' or
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D', the image is
+--     treated as having an array size of @1@, and
+--     @subresourceRange.baseArrayLayer@ is accessed. If accessed with
+--     @Arrayed@ equal to 0 in a shader, and
+--     'Vulkan.Core10.ImageView.ImageViewCreateInfo'::@viewType@ is
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D_ARRAY' or
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D_ARRAY', the
+--     descriptor is accessed as-if the view was created with
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D' or
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D' respectively.
+--     Cube map view aliasing is not included by this flag bit. Also, image
+--     views created with a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-multiplanar multi-planar format>
+--     /can/ not alias like this.
+--
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageCreateFlagBits VK_IMAGE_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR>
+--     specifies that the image /can/ be used in
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#video-coding video coding operations>
+--     without having to specify at image creation time the set of video
+--     profiles the image will be used with, except for images used only as
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#dpb DPB>
+--     pictures, as long as the image is otherwise
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#video-profile-compatibility compatible>
+--     with the video profile in question.
+--
+--     This enables exchanging video picture data without additional copies
+--     or conversions when used as:
+--
+--     -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#decode-output-picture Decode output pictures>,
+--         regardless of the video profile used to produce them.
+--
+--     -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#encode-input-picture Encode input pictures>,
+--         regardless of the video profile used to consume them.
+--
+--     This includes images created with both
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR>
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR>,
+--     which is necessary to use the same video picture as the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#reconstructed-picture reconstructed picture>
+--     and
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#decode-output-picture decode output picture>
+--     in a video decode operation on implementations supporting
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeCapabilityFlagBitsKHR VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR>.
+--
+--     However, images with only DPB usage remain tied to the video
+--     profiles the image was created with, as the data layout of such
+--     DPB-only images /may/ be implementation- and codec-dependent.
+--
+--     If an application would like to share or reuse the device memory
+--     backing such images (e.g. for the purposes of temporal aliasing),
+--     then it /should/ create separate image objects for each video
+--     profile and bind them to the same underlying device memory range,
+--     similar to how memory resources /can/ be shared across separate
+--     video sessions or any other memory-backed resource.
+--
 -- See
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#sparsememory-sparseresourcefeatures Sparse Resource Features>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#sparsememory-sparseresourcefeatures Sparse Resource Features>
 -- and
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#sparsememory-physicalfeatures Sparse Physical Device Features>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#sparsememory-physicalfeatures Sparse Physical Device Features>
 -- for more details.
 --
 -- = See Also
@@ -60,165 +270,64 @@
 newtype ImageCreateFlagBits = ImageCreateFlagBits Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'IMAGE_CREATE_SPARSE_BINDING_BIT' specifies that the image will be
--- backed using sparse memory binding.
+-- No documentation found for Nested "VkImageCreateFlagBits" "VK_IMAGE_CREATE_SPARSE_BINDING_BIT"
 pattern IMAGE_CREATE_SPARSE_BINDING_BIT = ImageCreateFlagBits 0x00000001
 
--- | 'IMAGE_CREATE_SPARSE_RESIDENCY_BIT' specifies that the image /can/ be
--- partially backed using sparse memory binding. Images created with this
--- flag /must/ also be created with the 'IMAGE_CREATE_SPARSE_BINDING_BIT'
--- flag.
+-- No documentation found for Nested "VkImageCreateFlagBits" "VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT"
 pattern IMAGE_CREATE_SPARSE_RESIDENCY_BIT = ImageCreateFlagBits 0x00000002
 
--- | 'IMAGE_CREATE_SPARSE_ALIASED_BIT' specifies that the image will be
--- backed using sparse memory binding with memory ranges that might also
--- simultaneously be backing another image (or another portion of the same
--- image). Images created with this flag /must/ also be created with the
--- 'IMAGE_CREATE_SPARSE_BINDING_BIT' flag.
+-- No documentation found for Nested "VkImageCreateFlagBits" "VK_IMAGE_CREATE_SPARSE_ALIASED_BIT"
 pattern IMAGE_CREATE_SPARSE_ALIASED_BIT = ImageCreateFlagBits 0x00000004
 
--- | 'IMAGE_CREATE_MUTABLE_FORMAT_BIT' specifies that the image /can/ be used
--- to create a 'Vulkan.Core10.Handles.ImageView' with a different format
--- from the image. For
--- <https://registry.khronos.org/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.
+-- No documentation found for Nested "VkImageCreateFlagBits" "VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT"
 pattern IMAGE_CREATE_MUTABLE_FORMAT_BIT = ImageCreateFlagBits 0x00000008
 
--- | 'IMAGE_CREATE_CUBE_COMPATIBLE_BIT' specifies that the image /can/ be
--- used to create a 'Vulkan.Core10.Handles.ImageView' of type
--- 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE' or
--- 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY'.
+-- No documentation found for Nested "VkImageCreateFlagBits" "VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT"
 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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-fragmentdensitymapoffsets fragment density map offsets>.
--- In a render pass with non-zero offsets, fragment density map
--- attachments, input attachments, color attachments, depth\/stencil
--- attachment, resolve attachments, and preserve attachments /must/ be
--- created with 'IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM'.
-pattern IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM = ImageCreateFlagBits 0x00008000
+-- No documentation found for Nested "VkImageCreateFlagBits" "VK_IMAGE_CREATE_ALIAS_SINGLE_LAYER_DESCRIPTOR_BIT_KHR"
+pattern IMAGE_CREATE_ALIAS_SINGLE_LAYER_DESCRIPTOR_BIT_KHR = ImageCreateFlagBits 0x00400000
 
--- | 'IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT' specifies that the image /can/
--- be used to create a 'Vulkan.Core10.Handles.ImageView' of type
--- 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D'.
+-- No documentation found for Nested "VkImageCreateFlagBits" "VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_EXT"
+pattern IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_EXT = ImageCreateFlagBits 0x00008000
+
+-- No documentation found for Nested "VkImageCreateFlagBits" "VK_IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT"
 pattern IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT = ImageCreateFlagBits 0x00020000
 
--- | 'IMAGE_CREATE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_BIT_EXT' specifies
--- that an image /can/ be used with
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#multisampled-render-to-single-sampled multisampled rendering as a single-sampled framebuffer attachment>
+-- No documentation found for Nested "VkImageCreateFlagBits" "VK_IMAGE_CREATE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_BIT_EXT"
 pattern IMAGE_CREATE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_BIT_EXT = ImageCreateFlagBits 0x00040000
 
--- | 'IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT' specifies that
--- the image /can/ be used with descriptor buffers when capturing and
--- replaying (e.g. for trace capture and replay), see
--- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.OpaqueCaptureDescriptorDataCreateInfoEXT'
--- for more detail.
-pattern IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = ImageCreateFlagBits 0x00010000
-
--- | 'IMAGE_CREATE_SUBSAMPLED_BIT_EXT' specifies that an image /can/ be in a
--- subsampled format which /may/ be more optimal when written as an
--- attachment by a render pass that has a fragment density map attachment.
--- Accessing a subsampled image has additional considerations:
---
--- -   Image data read as an image sampler will have undefined values if
---     the sampler was not created with @flags@ containing
---     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_SUBSAMPLED_BIT_EXT'
---     or was not sampled through the use of a combined image sampler with
---     an immutable sampler in
---     'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutBinding'.
---
--- -   Image data read with an input attachment will have undefined values
---     if the contents were not written as an attachment in an earlier
---     subpass of the same render pass.
---
--- -   Image data read as an image sampler in the fragment shader will be
---     additionally be read by the device during
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_VERTEX_SHADER_BIT'
---     if
---     <https://registry.khronos.org/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-subsampledLoads ::subsampledLoads>
---     is 'Vulkan.Core10.FundamentalTypes.TRUE'. Otherwise, values of image
---     data are undefined.
---
--- -   Image contents outside of the render area take on undefined values
---     if the image is stored as a render pass attachment.
+-- No documentation found for Nested "VkImageCreateFlagBits" "VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT"
 pattern IMAGE_CREATE_SUBSAMPLED_BIT_EXT = ImageCreateFlagBits 0x00004000
 
--- | 'IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT' specifies that
--- an image with a depth or depth\/stencil format /can/ be used with custom
--- sample locations when used as a depth\/stencil attachment.
+-- No documentation found for Nested "VkImageCreateFlagBits" "VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT"
 pattern IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT = ImageCreateFlagBits 0x00001000
 
--- | 'IMAGE_CREATE_CORNER_SAMPLED_BIT_NV' specifies that the image is a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-images-corner-sampled corner-sampled image>.
+-- No documentation found for Nested "VkImageCreateFlagBits" "VK_IMAGE_CREATE_DESCRIPTOR_HEAP_CAPTURE_REPLAY_BIT_EXT"
+pattern IMAGE_CREATE_DESCRIPTOR_HEAP_CAPTURE_REPLAY_BIT_EXT = ImageCreateFlagBits 0x00010000
+
+-- No documentation found for Nested "VkImageCreateFlagBits" "VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV"
 pattern IMAGE_CREATE_CORNER_SAMPLED_BIT_NV = ImageCreateFlagBits 0x00002000
 
--- | 'IMAGE_CREATE_DISJOINT_BIT' specifies that an image with a
--- <https://registry.khronos.org/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.
+-- No documentation found for Nested "VkImageCreateFlagBits" "VK_IMAGE_CREATE_DISJOINT_BIT"
 pattern IMAGE_CREATE_DISJOINT_BIT = ImageCreateFlagBits 0x00000200
 
--- | 'IMAGE_CREATE_PROTECTED_BIT' specifies that the image is a protected
--- image.
+-- No documentation found for Nested "VkImageCreateFlagBits" "VK_IMAGE_CREATE_PROTECTED_BIT"
 pattern IMAGE_CREATE_PROTECTED_BIT = ImageCreateFlagBits 0x00000800
 
--- | 'IMAGE_CREATE_EXTENDED_USAGE_BIT' specifies that the image /can/ be
--- created with usage flags that are not supported for the format the image
--- is created with but are supported for at least one format a
--- 'Vulkan.Core10.Handles.ImageView' created from the image /can/ have.
+-- No documentation found for Nested "VkImageCreateFlagBits" "VK_IMAGE_CREATE_EXTENDED_USAGE_BIT"
 pattern IMAGE_CREATE_EXTENDED_USAGE_BIT = ImageCreateFlagBits 0x00000100
 
--- | 'IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT' specifies that the image
--- having a compressed format /can/ be used to create a
--- 'Vulkan.Core10.Handles.ImageView' with an uncompressed format where each
--- texel in the image view corresponds to a compressed texel block of the
--- image.
+-- No documentation found for Nested "VkImageCreateFlagBits" "VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT"
 pattern IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT = ImageCreateFlagBits 0x00000080
 
--- | 'IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT' specifies that the image /can/ be
--- used to create a 'Vulkan.Core10.Handles.ImageView' of type
--- 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D' or
--- 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D_ARRAY'.
+-- No documentation found for Nested "VkImageCreateFlagBits" "VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT"
 pattern IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT = ImageCreateFlagBits 0x00000020
 
--- | 'IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT' specifies that the image
--- /can/ be used with a non-zero value of the
--- @splitInstanceBindRegionCount@ member of a
--- 'Vulkan.Core11.Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2.BindImageMemoryDeviceGroupInfo'
--- structure passed into
--- 'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.bindImageMemory2'. This
--- flag also has the effect of making the image use the standard sparse
--- image block dimensions.
+-- No documentation found for Nested "VkImageCreateFlagBits" "VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT"
 pattern IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT = ImageCreateFlagBits 0x00000040
 
--- | 'IMAGE_CREATE_ALIAS_BIT' specifies that two images created with the same
--- 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://registry.khronos.org/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://registry.khronos.org/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
--- 'Vulkan.Extensions.VK_NV_external_memory.ExternalMemoryImageCreateInfoNV'
--- structure whose @handleTypes@ member is not @0@, it is as if
--- 'IMAGE_CREATE_ALIAS_BIT' is set.
+-- No documentation found for Nested "VkImageCreateFlagBits" "VK_IMAGE_CREATE_ALIAS_BIT"
 pattern IMAGE_CREATE_ALIAS_BIT = ImageCreateFlagBits 0x00000400
 
 conNameImageCreateFlagBits :: String
@@ -250,10 +359,14 @@
     , "CUBE_COMPATIBLE_BIT"
     )
   ,
-    ( IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM
-    , "FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM"
+    ( IMAGE_CREATE_ALIAS_SINGLE_LAYER_DESCRIPTOR_BIT_KHR
+    , "ALIAS_SINGLE_LAYER_DESCRIPTOR_BIT_KHR"
     )
   ,
+    ( IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_EXT
+    , "FRAGMENT_DENSITY_MAP_OFFSET_BIT_EXT"
+    )
+  ,
     ( IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT
     , "2D_VIEW_COMPATIBLE_BIT_EXT"
     )
@@ -262,16 +375,16 @@
     , "MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_BIT_EXT"
     )
   ,
-    ( IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT
-    , "DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT"
-    )
-  ,
     ( IMAGE_CREATE_SUBSAMPLED_BIT_EXT
     , "SUBSAMPLED_BIT_EXT"
     )
   ,
     ( IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT
     , "SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT"
+    )
+  ,
+    ( IMAGE_CREATE_DESCRIPTOR_HEAP_CAPTURE_REPLAY_BIT_EXT
+    , "DESCRIPTOR_HEAP_CAPTURE_REPLAY_BIT_EXT"
     )
   ,
     ( IMAGE_CREATE_CORNER_SAMPLED_BIT_NV
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,14 @@
                                                     , IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL
                                                     , IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL
                                                     , IMAGE_LAYOUT_PREINITIALIZED
+                                                    , IMAGE_LAYOUT_ZERO_INITIALIZED_EXT
+                                                    , IMAGE_LAYOUT_TENSOR_ALIASING_ARM
                                                     , IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT
-                                                    , IMAGE_LAYOUT_RENDERING_LOCAL_READ_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_RENDERING_LOCAL_READ
                                                     , IMAGE_LAYOUT_ATTACHMENT_OPTIMAL
                                                     , IMAGE_LAYOUT_READ_ONLY_OPTIMAL
                                                     , IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL
@@ -41,6 +43,252 @@
 --
 -- The type(s) of device access supported by each layout are:
 --
+-- -   'IMAGE_LAYOUT_UNDEFINED' specifies that the layout is unknown. Image
+--     memory /cannot/ be transitioned into this layout. This layout /can/
+--     be used as the @initialLayout@ member of
+--     'Vulkan.Core10.Image.ImageCreateInfo'. This layout /can/ be used in
+--     place of the current image layout in a layout transition, but doing
+--     so will cause the contents of the image’s memory to be undefined.
+--
+-- -   'IMAGE_LAYOUT_PREINITIALIZED' specifies that an image’s memory is in
+--     a defined layout and /can/ be populated by data, but that it has not
+--     yet been initialized by the driver. Image memory /cannot/ be
+--     transitioned into this layout. This layout /can/ be used as the
+--     @initialLayout@ member of 'Vulkan.Core10.Image.ImageCreateInfo'.
+--     This layout is intended to be used as the initial layout for an
+--     image whose contents are written 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://registry.khronos.org/vulkan/specs/latest/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.
+--
+-- -   'IMAGE_LAYOUT_GENERAL' supports all types of device access, unless
+--     specified otherwise.
+--
+-- -   'IMAGE_LAYOUT_ZERO_INITIALIZED_EXT' specifies that an image’s memory
+--     is in a defined layout and is zeroed, but that it has not yet been
+--     initialized by the driver. Image memory /cannot/ be transitioned
+--     into this layout. This layout /can/ be used as the @initialLayout@
+--     member of 'Vulkan.Core10.Image.ImageCreateInfo'. This layout is
+--     intended to be used as the initial layout for an image whose
+--     contents are already zeroed, either from being explicitly set to
+--     zero by an application or from being allocated with
+--     'Vulkan.Core11.Enums.MemoryAllocateFlagBits.MEMORY_ALLOCATE_ZERO_INITIALIZE_BIT_EXT'.
+--
+-- -   'IMAGE_LAYOUT_ATTACHMENT_OPTIMAL' specifies a layout that /must/
+--     only be used with attachment accesses in the graphics pipeline.
+--
+-- -   '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.
+--
+-- -   'IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL' /must/ only be used as a
+--     color or resolve attachment in a
+--     'Vulkan.Core10.Handles.Framebuffer'. This layout is valid only for
+--     image subresources of images created with the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT'
+--     usage flag set.
+--
+-- -   'IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL' specifies a layout
+--     for both the depth and stencil aspects of a depth\/stencil format
+--     image allowing read and write access as a depth\/stencil attachment.
+--     It is equivalent to 'IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL' and
+--     'IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL'.
+--
+-- -   'IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL' specifies a layout
+--     for both the depth and stencil aspects of a depth\/stencil format
+--     image allowing read only access as a depth\/stencil attachment or in
+--     shaders as a sampled image, combined image\/sampler, or input
+--     attachment. It is equivalent to
+--     'IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL' and
+--     'IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL'.
+--
+-- -   'IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL' specifies
+--     a layout for depth\/stencil format images allowing read and write
+--     access to the stencil aspect as a stencil attachment, and read only
+--     access to the depth aspect as a depth attachment or in shaders as a
+--     sampled image, combined image\/sampler, or input attachment. It is
+--     equivalent to 'IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL' and
+--     'IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL'.
+--
+-- -   'IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL' specifies
+--     a layout for depth\/stencil format images allowing read and write
+--     access to the depth aspect as a depth attachment, and read only
+--     access to the stencil aspect as a stencil attachment or in shaders
+--     as a sampled image, combined image\/sampler, or input attachment. It
+--     is equivalent to 'IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL' and
+--     'IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL'.
+--
+-- -   'IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL' specifies a layout for the
+--     depth aspect of a depth\/stencil format image allowing read and
+--     write access as a depth attachment.
+--
+-- -   'IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL' specifies a layout for the
+--     depth aspect of a depth\/stencil format image allowing read-only
+--     access as a depth attachment or in shaders as a sampled image,
+--     combined image\/sampler, or input attachment.
+--
+-- -   'IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL' specifies a layout for the
+--     stencil aspect of a depth\/stencil format image allowing read and
+--     write access as a stencil attachment.
+--
+-- -   '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,
+--     combined image\/sampler, or input attachment.
+--
+-- -   'IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL' specifies a layout allowing
+--     read-only access in a shader as a sampled image, combined
+--     image\/sampler, or input attachment. This layout is valid only for
+--     image subresources of images created with the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT' or
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT'
+--     usage bits enabled.
+--
+-- -   'IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL' /must/ only be used as a source
+--     image of a transfer command (see the definition of
+--     <https://registry.khronos.org/vulkan/specs/latest/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'
+--     usage flag set.
+--
+-- -   'IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL' /must/ only be used as a
+--     destination image of a transfer command. This layout is valid only
+--     for image subresources of images created with the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'
+--     usage flag set.
+--
+-- -   'IMAGE_LAYOUT_PRESENT_SRC_KHR' /must/ only be used for presenting a
+--     presentable image for display.
+--
+-- -   'IMAGE_LAYOUT_SHARED_PRESENT_KHR' is valid only for shared
+--     presentable images, and /must/ be used for any usage the image
+--     supports.
+--
+-- -   'IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR' /must/
+--     only be used as a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment>
+--     or
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-shading-rate-image shading rate image>.
+--     This layout is valid only for image subresources of images created
+--     with the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
+--     usage flag set.
+--
+-- -   'IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT' /must/ only be used
+--     as a fragment density map attachment in a
+--     'Vulkan.Core10.Handles.RenderPass'. This layout is valid only for
+--     image subresources of images created with the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT'
+--     usage flag set.
+--
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageLayout VK_IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR>
+--     /must/ only be used as a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#decode-output-picture decode output picture>
+--     in a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#video-decode-operations video decode operation>.
+--     This layout is valid only for image subresources of images created
+--     with the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR>
+--     usage flag set.
+--
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageLayout VK_IMAGE_LAYOUT_VIDEO_DECODE_SRC_KHR>
+--     is reserved for future use.
+--
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageLayout VK_IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR>
+--     /must/ only be used as an output
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#reconstructed-picture reconstructed picture>
+--     or an input
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#reference-picture reference picture>
+--     in a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#video-decode-operations video decode operation>.
+--     This layout is valid only for image subresources of images created
+--     with the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR>
+--     usage flag set.
+--
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageLayout VK_IMAGE_LAYOUT_VIDEO_ENCODE_DST_KHR>
+--     is reserved for future use.
+--
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageLayout VK_IMAGE_LAYOUT_VIDEO_ENCODE_SRC_KHR>
+--     /must/ only be used as an
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#encode-input-picture encode input picture>
+--     in a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#video-encode-operations video encode operation>.
+--     This layout is valid only for image subresources of images created
+--     with the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR>
+--     usage flag set.
+--
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageLayout VK_IMAGE_LAYOUT_VIDEO_ENCODE_DPB_KHR>
+--     /must/ only be used as an output
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#reconstructed-picture reconstructed picture>
+--     or an input
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#reference-picture reference picture>
+--     in a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#video-encode-operations video encode operation>.
+--     This layout is valid only for image subresources of images created
+--     with the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR>
+--     usage flag set.
+--
+-- -   'IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT' /must/ only be
+--     used as either a color attachment or depth\/stencil attachment
+--     and\/or read-only access in a shader as a sampled image, combined
+--     image\/sampler, or input attachment. This layout is valid only for
+--     image subresources of images created with the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT'
+--     usage flag set, and either the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT'
+--     or
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'
+--     usage flags set, and either the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT'
+--     or 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT'
+--     usage flags set
+--
+-- -   'IMAGE_LAYOUT_RENDERING_LOCAL_READ' /must/ only be used as either a
+--     storage image, or a color or depth\/stencil attachment and an input
+--     attachment. This layout is valid only for image subresources of
+--     images created with either the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_STORAGE_BIT'
+--     usage flag set, or both the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT'
+--     and either of the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT'
+--     or
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'
+--     usage flags set.
+--
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageLayout VK_IMAGE_LAYOUT_VIDEO_ENCODE_QUANTIZATION_MAP_KHR>
+--     /must/ only be used as a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#encode-quantization-map quantization map>
+--     in a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#video-encode-operations video encode operation>.
+--     This layout is valid only for image subresources of images created
+--     with the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR>
+--     usage flags set.
+--
+-- -   'IMAGE_LAYOUT_TENSOR_ALIASING_ARM' specifies the layout that an
+--     image created with
+--     'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL' /must/ be in,
+--     if the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-unifiedImageLayouts unifiedImageLayouts>
+--     feature is disabled, or /may/ be in if it is enabled, for it and a
+--     tensor bound to the same aliased range of memory to consistently
+--     interpret the data in memory. See
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-memory-aliasing>
+--     for a complete set of rules for tensor\/image aliasing. This layout
+--     is valid only for image subresources of images created with the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TENSOR_ALIASING_BIT_ARM'
+--     usage flag set.
+--
 -- The layout of each image subresource is not a state of the image
 -- subresource itself, but is rather a property of how the data in memory
 -- is organized, and thus for each mechanism of accessing an image in the
@@ -48,43 +296,60 @@
 -- 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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#clears>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#clears>
 -- and
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#copies>).
+-- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass Render Pass>).
+-- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-updates>).
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-sets-updates>).
 --
+-- If the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-unifiedImageLayouts unifiedImageLayouts>
+-- feature is enabled, the 'IMAGE_LAYOUT_GENERAL' image layout /may/ be
+-- used in place of the other layouts where allowed with no loss of
+-- performance.
+--
 -- 'IMAGE_LAYOUT_GENERAL' can be a useful catch-all image layout, but there
 -- are situations where a dedicated image layout must be used instead. Some
 -- examples include:
 --
 -- -   'IMAGE_LAYOUT_PRESENT_SRC_KHR'
 --
--- -   @VK_IMAGE_LAYOUT_VIDEO_DECODE_SRC_KHR@
---
--- -   @VK_IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR@
---
--- -   @VK_IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR@
+-- -   'IMAGE_LAYOUT_SHARED_PRESENT_KHR'
 --
--- -   @VK_IMAGE_LAYOUT_VIDEO_ENCODE_SRC_KHR@
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageLayout VK_IMAGE_LAYOUT_VIDEO_DECODE_SRC_KHR>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageLayout VK_IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR>,
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageLayout VK_IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR>
+--     without the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-unifiedImageLayoutsVideo unifiedImageLayoutsVideo>
+--     feature
 --
--- -   @VK_IMAGE_LAYOUT_VIDEO_ENCODE_DST_KHR@
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageLayout VK_IMAGE_LAYOUT_VIDEO_ENCODE_SRC_KHR>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageLayout VK_IMAGE_LAYOUT_VIDEO_ENCODE_DST_KHR>,
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageLayout VK_IMAGE_LAYOUT_VIDEO_ENCODE_DPB_KHR>
+--     without the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-unifiedImageLayoutsVideo unifiedImageLayoutsVideo>
+--     feature
 --
--- -   @VK_IMAGE_LAYOUT_VIDEO_ENCODE_DPB_KHR@
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageLayout VK_IMAGE_LAYOUT_VIDEO_ENCODE_QUANTIZATION_MAP_KHR>
+--     without the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-unifiedImageLayoutsVideo unifiedImageLayoutsVideo>
+--     feature
 --
 -- While 'IMAGE_LAYOUT_GENERAL' suggests that all types of device access is
 -- possible, it does not mean that all patterns of memory accesses are safe
 -- in all situations.
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#common-render-pass-data-races Common Render Pass Data Races>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#common-render-pass-data-races Common Render Pass Data Races>
 -- outlines some situations where data races are unavoidable. For example,
 -- when a subresource is used as both an attachment and a sampled image
 -- (i.e., not an input attachment),
--- 'IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT' adds extra
--- guarantees which 'IMAGE_LAYOUT_GENERAL' does not.
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-feedbackloop enabling feedback loop>
+-- adds extra guarantees which 'IMAGE_LAYOUT_GENERAL' alone does not.
 --
 -- = See Also
 --
@@ -99,15 +364,20 @@
 -- '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_EXT_host_image_copy.CopyImageToImageInfoEXT',
--- 'Vulkan.Extensions.VK_EXT_host_image_copy.CopyImageToMemoryInfoEXT',
--- 'Vulkan.Extensions.VK_EXT_host_image_copy.CopyMemoryToImageInfoEXT',
+-- 'Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy.CopyImageToImageInfo',
+-- 'Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy.CopyImageToMemoryInfo',
+-- 'Vulkan.Extensions.VK_KHR_copy_memory_indirect.CopyMemoryToImageIndirectInfoKHR',
+-- 'Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy.CopyMemoryToImageInfo',
+-- 'Vulkan.Extensions.VK_ARM_data_graph_optical_flow.DataGraphPipelineResourceInfoImageLayoutARM',
 -- 'Vulkan.Core10.DescriptorSet.DescriptorImageInfo',
--- 'Vulkan.Extensions.VK_EXT_host_image_copy.HostImageLayoutTransitionInfoEXT',
+-- 'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceMemoryImageCopyKHR',
+-- 'Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy.HostImageLayoutTransitionInfo',
 -- 'Vulkan.Core10.Image.ImageCreateInfo',
--- 'Vulkan.Core10.OtherTypes.ImageMemoryBarrier',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_heap.ImageDescriptorInfoEXT',
+-- 'Vulkan.Core10.CommandBufferBuilding.ImageMemoryBarrier',
 -- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.ImageMemoryBarrier2',
--- 'Vulkan.Extensions.VK_EXT_host_image_copy.PhysicalDeviceHostImageCopyPropertiesEXT',
+-- 'Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy.PhysicalDeviceHostImageCopyProperties',
+-- 'Vulkan.Core14.PhysicalDeviceVulkan14Properties',
 -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingAttachmentInfo',
 -- 'Vulkan.Extensions.VK_EXT_fragment_density_map.RenderingFragmentDensityMapAttachmentInfoEXT',
 -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.RenderingFragmentShadingRateAttachmentInfoKHR',
@@ -126,182 +396,79 @@
 newtype ImageLayout = ImageLayout Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'IMAGE_LAYOUT_UNDEFINED' specifies that the layout is unknown. Image
--- memory /cannot/ be transitioned into this layout. This layout /can/ be
--- used as the @initialLayout@ member of
--- 'Vulkan.Core10.Image.ImageCreateInfo'. This layout /can/ be used in
--- place of the current image layout in a layout transition, but doing so
--- will cause the contents of the image’s memory to be undefined.
+-- No documentation found for Nested "VkImageLayout" "VK_IMAGE_LAYOUT_UNDEFINED"
 pattern IMAGE_LAYOUT_UNDEFINED = ImageLayout 0
 
--- | 'IMAGE_LAYOUT_GENERAL' supports all types of device access, unless
--- specified otherwise.
+-- No documentation found for Nested "VkImageLayout" "VK_IMAGE_LAYOUT_GENERAL"
 pattern IMAGE_LAYOUT_GENERAL = ImageLayout 1
 
--- | 'IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL' /must/ only be used as a color
--- or resolve attachment in a 'Vulkan.Core10.Handles.Framebuffer'. This
--- layout is valid only for image subresources of images created with the
--- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT'
--- usage bit enabled.
+-- No documentation found for Nested "VkImageLayout" "VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL"
 pattern IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = ImageLayout 2
 
--- | 'IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL' specifies a layout for
--- both the depth and stencil aspects of a depth\/stencil format image
--- allowing read and write access as a depth\/stencil attachment. It is
--- equivalent to 'IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL' and
--- 'IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL'.
+-- No documentation found for Nested "VkImageLayout" "VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL"
 pattern IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = ImageLayout 3
 
--- | 'IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL' specifies a layout for
--- both the depth and stencil aspects of a depth\/stencil format image
--- allowing read only access as a depth\/stencil attachment or in shaders
--- as a sampled image, combined image\/sampler, or input attachment. It is
--- equivalent to 'IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL' and
--- 'IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL'.
+-- No documentation found for Nested "VkImageLayout" "VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL"
 pattern IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = ImageLayout 4
 
--- | 'IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL' specifies a layout allowing
--- read-only access in a shader as a sampled image, combined
--- image\/sampler, or input attachment. This layout is valid only for image
--- subresources of images created with the
--- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT' or
--- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT'
--- usage bits enabled.
+-- No documentation found for Nested "VkImageLayout" "VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL"
 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://registry.khronos.org/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'
--- usage bit enabled.
+-- No documentation found for Nested "VkImageLayout" "VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL"
 pattern IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = ImageLayout 6
 
--- | 'IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL' /must/ only be used as a destination
--- image of a transfer command. This layout is valid only for image
--- subresources of images created with the
--- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'
--- usage bit enabled.
+-- No documentation found for Nested "VkImageLayout" "VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL"
 pattern IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = ImageLayout 7
 
--- | 'IMAGE_LAYOUT_PREINITIALIZED' specifies that an image’s memory is in a
--- defined layout and /can/ be populated by data, but that it has not yet
--- been initialized by the driver. Image memory /cannot/ be transitioned
--- into this layout. This layout /can/ be used as the @initialLayout@
--- member of 'Vulkan.Core10.Image.ImageCreateInfo'. This layout is intended
--- to be used as the initial layout for an image whose contents are written
--- 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://registry.khronos.org/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.
+-- No documentation found for Nested "VkImageLayout" "VK_IMAGE_LAYOUT_PREINITIALIZED"
 pattern IMAGE_LAYOUT_PREINITIALIZED = ImageLayout 8
 
--- | 'IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT' /must/ only be used
--- as either a color attachment or depth\/stencil attachment in a
--- 'Vulkan.Core10.Handles.Framebuffer' and\/or read-only access in a shader
--- as a sampled image, combined image\/sampler, or input attachment. This
--- layout is valid only for image subresources of images created with the
--- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT'
--- usage bit enabled and either the
--- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT'
--- or
--- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'
--- and either the
--- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT'
--- or 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT'
--- usage bits enabled.
-pattern IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT = ImageLayout 1000339000
+-- No documentation found for Nested "VkImageLayout" "VK_IMAGE_LAYOUT_ZERO_INITIALIZED_EXT"
+pattern IMAGE_LAYOUT_ZERO_INITIALIZED_EXT = ImageLayout 1000620000
 
--- | 'IMAGE_LAYOUT_RENDERING_LOCAL_READ_KHR' /must/ only be used as either a
--- storage image, or a color or depth\/stencil attachment and an input
--- attachment. This layout is valid only for image subresources of images
--- created with either
--- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_STORAGE_BIT', or
--- both
--- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT'
--- and either of
--- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT'
--- or
--- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'.
-pattern IMAGE_LAYOUT_RENDERING_LOCAL_READ_KHR = ImageLayout 1000232000
+-- No documentation found for Nested "VkImageLayout" "VK_IMAGE_LAYOUT_TENSOR_ALIASING_ARM"
+pattern IMAGE_LAYOUT_TENSOR_ALIASING_ARM = ImageLayout 1000460000
 
--- | 'IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR' /must/ only
--- be used as a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment>
--- or
--- <https://registry.khronos.org/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'
--- usage bit enabled.
+-- No documentation found for Nested "VkImageLayout" "VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT"
+pattern IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT = ImageLayout 1000339000
+
+-- No documentation found for Nested "VkImageLayout" "VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR"
 pattern IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR = ImageLayout 1000164003
 
--- | 'IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT' /must/ only be used as a
--- fragment density map attachment in a 'Vulkan.Core10.Handles.RenderPass'.
--- This layout is valid only for image subresources of images created with
--- the
--- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT'
--- usage bit enabled.
+-- No documentation found for Nested "VkImageLayout" "VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT"
 pattern IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT = ImageLayout 1000218000
 
--- | 'IMAGE_LAYOUT_SHARED_PRESENT_KHR' is valid only for shared presentable
--- images, and /must/ be used for any usage the image supports.
+-- No documentation found for Nested "VkImageLayout" "VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR"
 pattern IMAGE_LAYOUT_SHARED_PRESENT_KHR = ImageLayout 1000111000
 
--- | 'IMAGE_LAYOUT_PRESENT_SRC_KHR' /must/ only be used for presenting a
--- presentable image for display.
+-- No documentation found for Nested "VkImageLayout" "VK_IMAGE_LAYOUT_PRESENT_SRC_KHR"
 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.
+-- No documentation found for Nested "VkImageLayout" "VK_IMAGE_LAYOUT_RENDERING_LOCAL_READ"
+pattern IMAGE_LAYOUT_RENDERING_LOCAL_READ = ImageLayout 1000232000
+
+-- No documentation found for Nested "VkImageLayout" "VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL"
 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.
+-- No documentation found for Nested "VkImageLayout" "VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL"
 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,
--- combined image\/sampler, or input attachment.
+-- No documentation found for Nested "VkImageLayout" "VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL"
 pattern IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL = ImageLayout 1000241003
 
--- | 'IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL' specifies a layout for the
--- stencil aspect of a depth\/stencil format image allowing read and write
--- access as a stencil attachment.
+-- No documentation found for Nested "VkImageLayout" "VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL"
 pattern IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL = ImageLayout 1000241002
 
--- | 'IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL' specifies a layout for the depth
--- aspect of a depth\/stencil format image allowing read-only access as a
--- depth attachment or in shaders as a sampled image, combined
--- image\/sampler, or input attachment.
+-- No documentation found for Nested "VkImageLayout" "VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL"
 pattern IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL = ImageLayout 1000241001
 
--- | 'IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL' specifies a layout for the depth
--- aspect of a depth\/stencil format image allowing read and write access
--- as a depth attachment.
+-- No documentation found for Nested "VkImageLayout" "VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL"
 pattern IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL = ImageLayout 1000241000
 
--- | 'IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL' specifies a
--- layout for depth\/stencil format images allowing read and write access
--- to the depth aspect as a depth attachment, and read only access to the
--- stencil aspect as a stencil attachment or in shaders as a sampled image,
--- combined image\/sampler, or input attachment. It is equivalent to
--- 'IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL' and
--- 'IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL'.
+-- No documentation found for Nested "VkImageLayout" "VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL"
 pattern IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL = ImageLayout 1000117001
 
--- | 'IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL' specifies a
--- layout for depth\/stencil format images allowing read and write access
--- to the stencil aspect as a stencil attachment, and read only access to
--- the depth aspect as a depth attachment or in shaders as a sampled image,
--- combined image\/sampler, or input attachment. It is equivalent to
--- 'IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL' and
--- 'IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL'.
+-- No documentation found for Nested "VkImageLayout" "VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL"
 pattern IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL = ImageLayout 1000117000
 
 {-# COMPLETE
@@ -314,12 +481,14 @@
   , IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL
   , IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL
   , IMAGE_LAYOUT_PREINITIALIZED
+  , IMAGE_LAYOUT_ZERO_INITIALIZED_EXT
+  , IMAGE_LAYOUT_TENSOR_ALIASING_ARM
   , IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT
-  , IMAGE_LAYOUT_RENDERING_LOCAL_READ_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_RENDERING_LOCAL_READ
   , IMAGE_LAYOUT_ATTACHMENT_OPTIMAL
   , IMAGE_LAYOUT_READ_ONLY_OPTIMAL
   , IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL
@@ -367,14 +536,18 @@
     )
   , (IMAGE_LAYOUT_PREINITIALIZED, "PREINITIALIZED")
   ,
-    ( IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT
-    , "ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT"
+    ( IMAGE_LAYOUT_ZERO_INITIALIZED_EXT
+    , "ZERO_INITIALIZED_EXT"
     )
   ,
-    ( IMAGE_LAYOUT_RENDERING_LOCAL_READ_KHR
-    , "RENDERING_LOCAL_READ_KHR"
+    ( IMAGE_LAYOUT_TENSOR_ALIASING_ARM
+    , "TENSOR_ALIASING_ARM"
     )
   ,
+    ( IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT
+    , "ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT"
+    )
+  ,
     ( IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR
     , "FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR"
     )
@@ -384,6 +557,10 @@
     )
   , (IMAGE_LAYOUT_SHARED_PRESENT_KHR, "SHARED_PRESENT_KHR")
   , (IMAGE_LAYOUT_PRESENT_SRC_KHR, "PRESENT_SRC_KHR")
+  ,
+    ( IMAGE_LAYOUT_RENDERING_LOCAL_READ
+    , "RENDERING_LOCAL_READ"
+    )
   , (IMAGE_LAYOUT_ATTACHMENT_OPTIMAL, "ATTACHMENT_OPTIMAL")
   , (IMAGE_LAYOUT_READ_ONLY_OPTIMAL, "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
@@ -17,6 +17,26 @@
 
 -- | VkImageTiling - Specifies the tiling arrangement of data in an image
 --
+-- = Description
+--
+-- -   'IMAGE_TILING_OPTIMAL' specifies optimal tiling (texels are laid out
+--     in an implementation-dependent arrangement, for more efficient
+--     memory access).
+--
+-- -   'IMAGE_TILING_LINEAR' specifies linear tiling (texels are laid out
+--     in memory in row-major order, possibly with some padding on each
+--     row).
+--
+-- -   'IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT' specifies that the image’s
+--     tiling is defined by a
+--     <https://registry.khronos.org/vulkan/specs/latest/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
+--     'Vulkan.Extensions.VK_EXT_image_drm_format_modifier.ImageDrmFormatModifierExplicitCreateInfoEXT',
+--     and /can/ be queried with
+--     'Vulkan.Extensions.VK_EXT_image_drm_format_modifier.getImageDrmFormatModifierPropertiesEXT'.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -30,24 +50,13 @@
 newtype ImageTiling = ImageTiling Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'IMAGE_TILING_OPTIMAL' specifies optimal tiling (texels are laid out in
--- an implementation-dependent arrangement, for more efficient memory
--- access).
+-- No documentation found for Nested "VkImageTiling" "VK_IMAGE_TILING_OPTIMAL"
 pattern IMAGE_TILING_OPTIMAL = ImageTiling 0
 
--- | 'IMAGE_TILING_LINEAR' specifies linear tiling (texels are laid out in
--- memory in row-major order, possibly with some padding on each row).
+-- No documentation found for Nested "VkImageTiling" "VK_IMAGE_TILING_LINEAR"
 pattern IMAGE_TILING_LINEAR = ImageTiling 1
 
--- | 'IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT' specifies that the image’s tiling
--- is defined by a
--- <https://registry.khronos.org/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
--- 'Vulkan.Extensions.VK_EXT_image_drm_format_modifier.ImageDrmFormatModifierExplicitCreateInfoEXT',
--- and /can/ be queried with
--- 'Vulkan.Extensions.VK_EXT_image_drm_format_modifier.getImageDrmFormatModifierPropertiesEXT'.
+-- No documentation found for Nested "VkImageTiling" "VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT"
 pattern IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT = ImageTiling 1000158000
 
 {-# COMPLETE
diff --git a/src/Vulkan/Core10/Enums/ImageType.hs b/src/Vulkan/Core10/Enums/ImageType.hs
--- a/src/Vulkan/Core10/Enums/ImageType.hs
+++ b/src/Vulkan/Core10/Enums/ImageType.hs
@@ -17,6 +17,14 @@
 
 -- | VkImageType - Specifies the type of an image object
 --
+-- = Description
+--
+-- -   'IMAGE_TYPE_1D' specifies a one-dimensional image.
+--
+-- -   'IMAGE_TYPE_2D' specifies a two-dimensional image.
+--
+-- -   'IMAGE_TYPE_3D' specifies a three-dimensional image.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -30,13 +38,13 @@
 newtype ImageType = ImageType Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'IMAGE_TYPE_1D' specifies a one-dimensional image.
+-- No documentation found for Nested "VkImageType" "VK_IMAGE_TYPE_1D"
 pattern IMAGE_TYPE_1D = ImageType 0
 
--- | 'IMAGE_TYPE_2D' specifies a two-dimensional image.
+-- No documentation found for Nested "VkImageType" "VK_IMAGE_TYPE_2D"
 pattern IMAGE_TYPE_2D = ImageType 1
 
--- | 'IMAGE_TYPE_3D' specifies a three-dimensional image.
+-- No documentation found for Nested "VkImageType" "VK_IMAGE_TYPE_3D"
 pattern IMAGE_TYPE_3D = ImageType 2
 
 {-# COMPLETE
diff --git a/src/Vulkan/Core10/Enums/ImageUsageFlagBits.hs b/src/Vulkan/Core10/Enums/ImageUsageFlagBits.hs
--- a/src/Vulkan/Core10/Enums/ImageUsageFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/ImageUsageFlagBits.hs
@@ -9,13 +9,15 @@
                                                                    , IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
                                                                    , IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT
                                                                    , IMAGE_USAGE_INPUT_ATTACHMENT_BIT
+                                                                   , IMAGE_USAGE_TILE_MEMORY_BIT_QCOM
+                                                                   , IMAGE_USAGE_TENSOR_ALIASING_BIT_ARM
                                                                    , IMAGE_USAGE_SAMPLE_BLOCK_MATCH_BIT_QCOM
                                                                    , IMAGE_USAGE_SAMPLE_WEIGHT_BIT_QCOM
                                                                    , IMAGE_USAGE_INVOCATION_MASK_BIT_HUAWEI
                                                                    , IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT
-                                                                   , IMAGE_USAGE_HOST_TRANSFER_BIT_EXT
                                                                    , IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
                                                                    , IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT
+                                                                   , IMAGE_USAGE_HOST_TRANSFER_BIT
                                                                    , ..
                                                                    )
                                                ) where
@@ -35,6 +37,144 @@
 
 -- | VkImageUsageFlagBits - Bitmask specifying intended usage of an image
 --
+-- = Description
+--
+-- -   'IMAGE_USAGE_TRANSFER_SRC_BIT' specifies that the image /can/ be
+--     used as the source of a transfer command.
+--
+-- -   'IMAGE_USAGE_TRANSFER_DST_BIT' specifies that the image /can/ be
+--     used as the destination of a transfer command.
+--
+-- -   'IMAGE_USAGE_SAMPLED_BIT' specifies that the image /can/ be used to
+--     create a 'Vulkan.Core10.Handles.ImageView' suitable for occupying a
+--     'Vulkan.Core10.Handles.DescriptorSet' slot either of type
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE'
+--     or
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER',
+--     and be sampled by a shader.
+--
+-- -   'IMAGE_USAGE_STORAGE_BIT' specifies that the image /can/ be used to
+--     create a 'Vulkan.Core10.Handles.ImageView' suitable for occupying a
+--     'Vulkan.Core10.Handles.DescriptorSet' slot of type
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE'.
+--
+-- -   'IMAGE_USAGE_COLOR_ATTACHMENT_BIT' specifies that the image /can/ be
+--     used to create a 'Vulkan.Core10.Handles.ImageView' suitable for use
+--     as a color or resolve attachment in a
+--     'Vulkan.Core10.Handles.Framebuffer'.
+--
+-- -   'IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT' specifies that the image
+--     /can/ be used to create a 'Vulkan.Core10.Handles.ImageView' suitable
+--     for use as a depth\/stencil or depth\/stencil resolve attachment in
+--     a 'Vulkan.Core10.Handles.Framebuffer'.
+--
+-- -   'IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT' specifies that
+--     implementations /may/ support using
+--     <https://registry.khronos.org/vulkan/specs/latest/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 that /can/ be used to create a
+--     'Vulkan.Core10.Handles.ImageView' suitable for use as a color,
+--     resolve, depth\/stencil, or input attachment.
+--
+-- -   'IMAGE_USAGE_INPUT_ATTACHMENT_BIT' specifies that the image /can/ be
+--     used to create a 'Vulkan.Core10.Handles.ImageView' suitable for
+--     occupying 'Vulkan.Core10.Handles.DescriptorSet' slot of type
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT';
+--     be read from a shader as an input attachment; and be used as an
+--     input attachment in a framebuffer.
+--
+-- -   '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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#fragmentdensitymapops fragment density map image>.
+--
+-- -   '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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment>
+--     or
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-shading-rate-image shading rate image>
+--
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR>
+--     specifies that the image /can/ be used as a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#decode-output-picture decode output picture>
+--     in a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#video-decode-operations video decode operation>.
+--
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR>
+--     is reserved for future use.
+--
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR>
+--     specifies that the image /can/ be used as an output
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#reconstructed-picture reconstructed picture>
+--     or an input
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#reference-picture reference picture>
+--     in a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#video-decode-operations video decode operation>.
+--
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR>
+--     is reserved for future use.
+--
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR>
+--     specifies that the image /can/ be used as an
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#encode-input-picture encode input picture>
+--     in a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#video-encode-operations video encode operation>.
+--
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR>
+--     specifies that the image /can/ be used as an output
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#reconstructed-picture reconstructed picture>
+--     or an input
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#reference-picture reference picture>
+--     in a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#video-encode-operations video encode operation>.
+--
+-- -   'IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT' specifies that the
+--     image /can/ be used as a color or depth\/stencil attachment with
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-feedbackloop feedback loop enabled>.
+--
+-- -   'IMAGE_USAGE_SAMPLE_WEIGHT_BIT_QCOM' specifies that the image /can/
+--     be used in
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#textures-weightimage weight image sampling operations>.
+--
+-- -   'IMAGE_USAGE_SAMPLE_BLOCK_MATCH_BIT_QCOM' specifies that the image
+--     /can/ be used in
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#textures-blockmatch block matching operations>.
+--
+-- -   'IMAGE_USAGE_TILE_MEMORY_BIT_QCOM' specifies that the image /can/ be
+--     bound to 'Vulkan.Core10.Handles.DeviceMemory' allocated from a
+--     'Vulkan.Core10.DeviceInitialization.MemoryHeap' with the
+--     'Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_TILE_MEMORY_BIT_QCOM'
+--     property.
+--
+-- -   'IMAGE_USAGE_HOST_TRANSFER_BIT' specifies that the image /can/ be
+--     used with host copy commands and host layout transitions.
+--
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR>
+--     specifies that the image /can/ be used as a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#encode-quantization-delta-map quantization delta map>
+--     in a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#video-encode-operations video encode operation>.
+--
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR>
+--     specifies that the image /can/ be used as an
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#encode-emphasis-map emphasis map>
+--     in a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#video-encode-operations video encode operation>.
+--
+-- -   'Vulkan.Extensions.VK_EXT_host_image_copy.IMAGE_USAGE_HOST_TRANSFER_BIT_EXT'
+--     specifies that the image /can/ be used with host copy commands and
+--     host layout transitions.
+--
+-- -   'IMAGE_USAGE_TENSOR_ALIASING_BIT_ARM' specifies that the image /can/
+--     be transitioned to the
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TENSOR_ALIASING_ARM'
+--     layout. See
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-memory-aliasing>
+--     for a complete set of rules for tensor\/image aliasing.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -42,58 +182,36 @@
 newtype ImageUsageFlagBits = ImageUsageFlagBits Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'IMAGE_USAGE_TRANSFER_SRC_BIT' specifies that the image /can/ be used as
--- the source of a transfer command.
+-- No documentation found for Nested "VkImageUsageFlagBits" "VK_IMAGE_USAGE_TRANSFER_SRC_BIT"
 pattern IMAGE_USAGE_TRANSFER_SRC_BIT = ImageUsageFlagBits 0x00000001
 
--- | 'IMAGE_USAGE_TRANSFER_DST_BIT' specifies that the image /can/ be used as
--- the destination of a transfer command.
+-- No documentation found for Nested "VkImageUsageFlagBits" "VK_IMAGE_USAGE_TRANSFER_DST_BIT"
 pattern IMAGE_USAGE_TRANSFER_DST_BIT = ImageUsageFlagBits 0x00000002
 
--- | 'IMAGE_USAGE_SAMPLED_BIT' specifies that the image /can/ be used to
--- create a 'Vulkan.Core10.Handles.ImageView' suitable for occupying a
--- 'Vulkan.Core10.Handles.DescriptorSet' slot either of type
--- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE' or
--- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER',
--- and be sampled by a shader.
+-- No documentation found for Nested "VkImageUsageFlagBits" "VK_IMAGE_USAGE_SAMPLED_BIT"
 pattern IMAGE_USAGE_SAMPLED_BIT = ImageUsageFlagBits 0x00000004
 
--- | 'IMAGE_USAGE_STORAGE_BIT' specifies that the image /can/ be used to
--- create a 'Vulkan.Core10.Handles.ImageView' suitable for occupying a
--- 'Vulkan.Core10.Handles.DescriptorSet' slot of type
--- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE'.
+-- No documentation found for Nested "VkImageUsageFlagBits" "VK_IMAGE_USAGE_STORAGE_BIT"
 pattern IMAGE_USAGE_STORAGE_BIT = ImageUsageFlagBits 0x00000008
 
--- | 'IMAGE_USAGE_COLOR_ATTACHMENT_BIT' specifies that the image /can/ be
--- used to create a 'Vulkan.Core10.Handles.ImageView' suitable for use as a
--- color or resolve attachment in a 'Vulkan.Core10.Handles.Framebuffer'.
+-- No documentation found for Nested "VkImageUsageFlagBits" "VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT"
 pattern IMAGE_USAGE_COLOR_ATTACHMENT_BIT = ImageUsageFlagBits 0x00000010
 
--- | 'IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT' specifies that the image
--- /can/ be used to create a 'Vulkan.Core10.Handles.ImageView' suitable for
--- use as a depth\/stencil or depth\/stencil resolve attachment in a
--- 'Vulkan.Core10.Handles.Framebuffer'.
+-- No documentation found for Nested "VkImageUsageFlagBits" "VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT"
 pattern IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = ImageUsageFlagBits 0x00000020
 
--- | 'IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT' specifies that implementations
--- /may/ support using
--- <https://registry.khronos.org/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
--- that /can/ be used to create a 'Vulkan.Core10.Handles.ImageView'
--- suitable for use as a color, resolve, depth\/stencil, or input
--- attachment.
+-- No documentation found for Nested "VkImageUsageFlagBits" "VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT"
 pattern IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = ImageUsageFlagBits 0x00000040
 
--- | 'IMAGE_USAGE_INPUT_ATTACHMENT_BIT' specifies that the image /can/ be
--- used to create a 'Vulkan.Core10.Handles.ImageView' suitable for
--- occupying 'Vulkan.Core10.Handles.DescriptorSet' slot of type
--- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT';
--- be read from a shader as an input attachment; and be used as an input
--- attachment in a framebuffer.
+-- No documentation found for Nested "VkImageUsageFlagBits" "VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT"
 pattern IMAGE_USAGE_INPUT_ATTACHMENT_BIT = ImageUsageFlagBits 0x00000080
 
+-- No documentation found for Nested "VkImageUsageFlagBits" "VK_IMAGE_USAGE_TILE_MEMORY_BIT_QCOM"
+pattern IMAGE_USAGE_TILE_MEMORY_BIT_QCOM = ImageUsageFlagBits 0x08000000
+
+-- No documentation found for Nested "VkImageUsageFlagBits" "VK_IMAGE_USAGE_TENSOR_ALIASING_BIT_ARM"
+pattern IMAGE_USAGE_TENSOR_ALIASING_BIT_ARM = ImageUsageFlagBits 0x00800000
+
 -- No documentation found for Nested "VkImageUsageFlagBits" "VK_IMAGE_USAGE_SAMPLE_BLOCK_MATCH_BIT_QCOM"
 pattern IMAGE_USAGE_SAMPLE_BLOCK_MATCH_BIT_QCOM = ImageUsageFlagBits 0x00200000
 
@@ -103,33 +221,18 @@
 -- No documentation found for Nested "VkImageUsageFlagBits" "VK_IMAGE_USAGE_INVOCATION_MASK_BIT_HUAWEI"
 pattern IMAGE_USAGE_INVOCATION_MASK_BIT_HUAWEI = ImageUsageFlagBits 0x00040000
 
--- | 'IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT' specifies that the image
--- /can/ be transitioned to the
--- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
--- layout to be used as a color or depth\/stencil attachment in a
--- 'Vulkan.Core10.Handles.Framebuffer' and\/or as a read-only input
--- resource in a shader (sampled image, combined image sampler or input
--- attachment) in the same render pass.
+-- No documentation found for Nested "VkImageUsageFlagBits" "VK_IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT"
 pattern IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = ImageUsageFlagBits 0x00080000
 
--- | 'IMAGE_USAGE_HOST_TRANSFER_BIT_EXT' specifies that the image /can/ be
--- used with host copy commands and host layout transitions.
-pattern IMAGE_USAGE_HOST_TRANSFER_BIT_EXT = ImageUsageFlagBits 0x00400000
-
--- | '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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment>
--- or
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-shading-rate-image shading rate image>
+-- No documentation found for Nested "VkImageUsageFlagBits" "VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"
 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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#fragmentdensitymapops fragment density map image>.
+-- No documentation found for Nested "VkImageUsageFlagBits" "VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT"
 pattern IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT = ImageUsageFlagBits 0x00000200
 
+-- No documentation found for Nested "VkImageUsageFlagBits" "VK_IMAGE_USAGE_HOST_TRANSFER_BIT"
+pattern IMAGE_USAGE_HOST_TRANSFER_BIT = ImageUsageFlagBits 0x00400000
+
 conNameImageUsageFlagBits :: String
 conNameImageUsageFlagBits = "ImageUsageFlagBits"
 
@@ -165,6 +268,14 @@
     , "INPUT_ATTACHMENT_BIT"
     )
   ,
+    ( IMAGE_USAGE_TILE_MEMORY_BIT_QCOM
+    , "TILE_MEMORY_BIT_QCOM"
+    )
+  ,
+    ( IMAGE_USAGE_TENSOR_ALIASING_BIT_ARM
+    , "TENSOR_ALIASING_BIT_ARM"
+    )
+  ,
     ( IMAGE_USAGE_SAMPLE_BLOCK_MATCH_BIT_QCOM
     , "SAMPLE_BLOCK_MATCH_BIT_QCOM"
     )
@@ -181,16 +292,16 @@
     , "ATTACHMENT_FEEDBACK_LOOP_BIT_EXT"
     )
   ,
-    ( IMAGE_USAGE_HOST_TRANSFER_BIT_EXT
-    , "HOST_TRANSFER_BIT_EXT"
-    )
-  ,
     ( IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
     , "FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"
     )
   ,
     ( IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT
     , "FRAGMENT_DENSITY_MAP_BIT_EXT"
+    )
+  ,
+    ( IMAGE_USAGE_HOST_TRANSFER_BIT
+    , "HOST_TRANSFER_BIT"
     )
   ]
 
diff --git a/src/Vulkan/Core10/Enums/ImageViewCreateFlagBits.hs b/src/Vulkan/Core10/Enums/ImageViewCreateFlagBits.hs
--- a/src/Vulkan/Core10/Enums/ImageViewCreateFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/ImageViewCreateFlagBits.hs
@@ -24,6 +24,24 @@
 -- | VkImageViewCreateFlagBits - Bitmask specifying additional parameters of
 -- an image view
 --
+-- = Description
+--
+-- -   'IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT' specifies
+--     that the fragment density map will be read by device during
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT'
+--
+-- -   'IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT' specifies
+--     that the fragment density map will be read by the host during
+--     'Vulkan.Core10.CommandBuffer.endCommandBuffer' for the primary
+--     command buffer that the render pass is recorded into
+--
+-- -   'IMAGE_VIEW_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT'
+--     specifies that the image view /can/ be used with descriptor buffers
+--     when capturing and replaying (e.g. for trace capture and replay),
+--     see
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.OpaqueCaptureDescriptorDataCreateInfoEXT'
+--     for more detail.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -31,22 +49,13 @@
 newtype ImageViewCreateFlagBits = ImageViewCreateFlagBits Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT' specifies that
--- the fragment density map will be read by the host during
--- 'Vulkan.Core10.CommandBuffer.endCommandBuffer' for the primary command
--- buffer that the render pass is recorded into
+-- No documentation found for Nested "VkImageViewCreateFlagBits" "VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT"
 pattern IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT = ImageViewCreateFlagBits 0x00000002
 
--- | 'IMAGE_VIEW_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT' specifies
--- that the image view /can/ be used with descriptor buffers when capturing
--- and replaying (e.g. for trace capture and replay), see
--- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.OpaqueCaptureDescriptorDataCreateInfoEXT'
--- for more detail.
+-- No documentation found for Nested "VkImageViewCreateFlagBits" "VK_IMAGE_VIEW_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT"
 pattern IMAGE_VIEW_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = ImageViewCreateFlagBits 0x00000004
 
--- | 'IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT' specifies that
--- the fragment density map will be read by device during
--- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT'
+-- No documentation found for Nested "VkImageViewCreateFlagBits" "VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT"
 pattern IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT = ImageViewCreateFlagBits 0x00000001
 
 conNameImageViewCreateFlagBits :: String
diff --git a/src/Vulkan/Core10/Enums/IndexType.hs b/src/Vulkan/Core10/Enums/IndexType.hs
--- a/src/Vulkan/Core10/Enums/IndexType.hs
+++ b/src/Vulkan/Core10/Enums/IndexType.hs
@@ -2,8 +2,8 @@
 -- No documentation found for Chapter "IndexType"
 module Vulkan.Core10.Enums.IndexType  (IndexType( INDEX_TYPE_UINT16
                                                 , INDEX_TYPE_UINT32
-                                                , INDEX_TYPE_UINT8_KHR
                                                 , INDEX_TYPE_NONE_KHR
+                                                , INDEX_TYPE_UINT8
                                                 , ..
                                                 )) where
 
@@ -18,41 +18,56 @@
 
 -- | VkIndexType - Type of index buffer indices
 --
+-- = Description
+--
+-- -   'INDEX_TYPE_UINT16' specifies that indices are 16-bit unsigned
+--     integer values.
+--
+-- -   'INDEX_TYPE_UINT32' specifies that indices are 32-bit unsigned
+--     integer values.
+--
+-- -   'INDEX_TYPE_NONE_KHR' specifies that no indices are provided.
+--
+-- -   'INDEX_TYPE_UINT8' specifies that indices are 8-bit unsigned integer
+--     values.
+--
 -- = 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_NV_ray_tracing_linear_swept_spheres.AccelerationStructureGeometryLinearSweptSpheresDataNV',
+-- 'Vulkan.Extensions.VK_NV_ray_tracing_linear_swept_spheres.AccelerationStructureGeometrySpheresDataNV',
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureGeometryTrianglesDataKHR',
 -- 'Vulkan.Extensions.VK_NV_displacement_micromap.AccelerationStructureTrianglesDisplacementMicromapNV',
 -- 'Vulkan.Extensions.VK_EXT_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapEXT',
+-- 'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapKHR',
+-- 'Vulkan.Extensions.VK_KHR_device_address_commands.BindIndexBuffer3InfoKHR',
 -- 'Vulkan.Extensions.VK_EXT_device_generated_commands.BindIndexBufferIndirectCommandEXT',
 -- 'Vulkan.Extensions.VK_NV_device_generated_commands.BindIndexBufferIndirectCommandNV',
 -- 'Vulkan.Extensions.VK_NV_ray_tracing.GeometryTrianglesNV',
 -- 'Vulkan.Extensions.VK_NV_device_generated_commands.IndirectCommandsLayoutTokenNV',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdBindIndexBuffer',
--- 'Vulkan.Extensions.VK_KHR_maintenance5.cmdBindIndexBuffer2KHR'
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.cmdBindIndexBuffer2',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.cmdBindIndexBuffer2'
 newtype IndexType = IndexType Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'INDEX_TYPE_UINT16' specifies that indices are 16-bit unsigned integer
--- values.
+-- No documentation found for Nested "VkIndexType" "VK_INDEX_TYPE_UINT16"
 pattern INDEX_TYPE_UINT16 = IndexType 0
 
--- | 'INDEX_TYPE_UINT32' specifies that indices are 32-bit unsigned integer
--- values.
+-- No documentation found for Nested "VkIndexType" "VK_INDEX_TYPE_UINT32"
 pattern INDEX_TYPE_UINT32 = IndexType 1
 
--- | 'INDEX_TYPE_UINT8_KHR' specifies that indices are 8-bit unsigned integer
--- values.
-pattern INDEX_TYPE_UINT8_KHR = IndexType 1000265000
-
--- | 'INDEX_TYPE_NONE_KHR' specifies that no indices are provided.
+-- No documentation found for Nested "VkIndexType" "VK_INDEX_TYPE_NONE_KHR"
 pattern INDEX_TYPE_NONE_KHR = IndexType 1000165000
 
+-- No documentation found for Nested "VkIndexType" "VK_INDEX_TYPE_UINT8"
+pattern INDEX_TYPE_UINT8 = IndexType 1000265000
+
 {-# COMPLETE
   INDEX_TYPE_UINT16
   , INDEX_TYPE_UINT32
-  , INDEX_TYPE_UINT8_KHR
-  , INDEX_TYPE_NONE_KHR ::
+  , INDEX_TYPE_NONE_KHR
+  , INDEX_TYPE_UINT8 ::
     IndexType
   #-}
 
@@ -66,8 +81,8 @@
 showTableIndexType =
   [ (INDEX_TYPE_UINT16, "UINT16")
   , (INDEX_TYPE_UINT32, "UINT32")
-  , (INDEX_TYPE_UINT8_KHR, "UINT8_KHR")
   , (INDEX_TYPE_NONE_KHR, "NONE_KHR")
+  , (INDEX_TYPE_UINT8, "UINT8")
   ]
 
 instance Show IndexType where
diff --git a/src/Vulkan/Core10/Enums/InstanceCreateFlagBits.hs b/src/Vulkan/Core10/Enums/InstanceCreateFlagBits.hs
--- a/src/Vulkan/Core10/Enums/InstanceCreateFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/InstanceCreateFlagBits.hs
@@ -21,6 +21,13 @@
 
 -- | VkInstanceCreateFlagBits - Bitmask specifying behavior of the instance
 --
+-- = Description
+--
+-- -   'INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR' specifies that the
+--     instance will enumerate available Vulkan Portability-compliant
+--     physical devices and groups in addition to the Vulkan physical
+--     devices and groups that are enumerated by default.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -28,10 +35,7 @@
 newtype InstanceCreateFlagBits = InstanceCreateFlagBits Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR' specifies that the
--- instance will enumerate available Vulkan Portability-compliant physical
--- devices and groups in addition to the Vulkan physical devices and groups
--- that are enumerated by default.
+-- No documentation found for Nested "VkInstanceCreateFlagBits" "VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR"
 pattern INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR = InstanceCreateFlagBits 0x00000001
 
 conNameInstanceCreateFlagBits :: String
diff --git a/src/Vulkan/Core10/Enums/InternalAllocationType.hs b/src/Vulkan/Core10/Enums/InternalAllocationType.hs
--- a/src/Vulkan/Core10/Enums/InternalAllocationType.hs
+++ b/src/Vulkan/Core10/Enums/InternalAllocationType.hs
@@ -15,6 +15,11 @@
 
 -- | VkInternalAllocationType - Allocation type
 --
+-- = Description
+--
+-- -   'INTERNAL_ALLOCATION_TYPE_EXECUTABLE' specifies that the allocation
+--     is intended for execution by the host.
+--
 -- = See Also
 --
 -- 'Vulkan.Core10.FuncPointers.PFN_vkInternalAllocationNotification',
@@ -23,8 +28,7 @@
 newtype InternalAllocationType = InternalAllocationType Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'INTERNAL_ALLOCATION_TYPE_EXECUTABLE' specifies that the allocation is
--- intended for execution by the host.
+-- No documentation found for Nested "VkInternalAllocationType" "VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE"
 pattern INTERNAL_ALLOCATION_TYPE_EXECUTABLE = InternalAllocationType 0
 
 {-# COMPLETE INTERNAL_ALLOCATION_TYPE_EXECUTABLE :: InternalAllocationType #-}
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,12 +89,12 @@
 --
 -- The result of the logical operation is then written to the color
 -- attachment as controlled by the component write mask, described in
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#framebuffer-blendoperations Blend Operations>.
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#framebuffer-blendoperations Blend Operations>.
 --
 -- = 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.Pipeline.PipelineColorBlendStateCreateInfo',
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineColorBlendStateCreateInfo',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetLogicOpEXT'
 newtype LogicOp = LogicOp Int32
   deriving newtype (Eq, Ord, Storable, Zero)
diff --git a/src/Vulkan/Core10/Enums/MemoryHeapFlagBits.hs b/src/Vulkan/Core10/Enums/MemoryHeapFlagBits.hs
--- a/src/Vulkan/Core10/Enums/MemoryHeapFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/MemoryHeapFlagBits.hs
@@ -2,6 +2,7 @@
 -- No documentation found for Chapter "MemoryHeapFlagBits"
 module Vulkan.Core10.Enums.MemoryHeapFlagBits  ( MemoryHeapFlags
                                                , MemoryHeapFlagBits( MEMORY_HEAP_DEVICE_LOCAL_BIT
+                                                                   , MEMORY_HEAP_TILE_MEMORY_BIT_QCOM
                                                                    , MEMORY_HEAP_SEU_SAFE_BIT
                                                                    , MEMORY_HEAP_MULTI_INSTANCE_BIT
                                                                    , ..
@@ -23,6 +24,22 @@
 
 -- | VkMemoryHeapFlagBits - Bitmask specifying attribute flags for a heap
 --
+-- = Description
+--
+-- -   'MEMORY_HEAP_DEVICE_LOCAL_BIT' specifies that the heap corresponds
+--     to device-local memory. Device-local memory /may/ have different
+--     performance characteristics than host-local memory, and /may/
+--     support different memory property flags.
+--
+-- -   'MEMORY_HEAP_MULTI_INSTANCE_BIT' specifies that in a logical device
+--     representing more than one physical device, there is a per-physical
+--     device instance of the heap memory. By default, an allocation from
+--     such a heap will be replicated to each physical device’s instance of
+--     the heap.
+--
+-- -   'MEMORY_HEAP_TILE_MEMORY_BIT_QCOM' bit specifies that the heap
+--     corresponds to tile memory.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -30,20 +47,16 @@
 newtype MemoryHeapFlagBits = MemoryHeapFlagBits Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'MEMORY_HEAP_DEVICE_LOCAL_BIT' specifies that the heap corresponds to
--- device-local memory. Device-local memory /may/ have different
--- performance characteristics than host-local memory, and /may/ support
--- different memory property flags.
+-- No documentation found for Nested "VkMemoryHeapFlagBits" "VK_MEMORY_HEAP_DEVICE_LOCAL_BIT"
 pattern MEMORY_HEAP_DEVICE_LOCAL_BIT = MemoryHeapFlagBits 0x00000001
 
+-- No documentation found for Nested "VkMemoryHeapFlagBits" "VK_MEMORY_HEAP_TILE_MEMORY_BIT_QCOM"
+pattern MEMORY_HEAP_TILE_MEMORY_BIT_QCOM = MemoryHeapFlagBits 0x00000008
+
 -- No documentation found for Nested "VkMemoryHeapFlagBits" "VK_MEMORY_HEAP_SEU_SAFE_BIT"
 pattern MEMORY_HEAP_SEU_SAFE_BIT = MemoryHeapFlagBits 0x00000004
 
--- | 'MEMORY_HEAP_MULTI_INSTANCE_BIT' specifies that in a logical device
--- representing more than one physical device, there is a per-physical
--- device instance of the heap memory. By default, an allocation from such
--- a heap will be replicated to each physical device’s instance of the
--- heap.
+-- No documentation found for Nested "VkMemoryHeapFlagBits" "VK_MEMORY_HEAP_MULTI_INSTANCE_BIT"
 pattern MEMORY_HEAP_MULTI_INSTANCE_BIT = MemoryHeapFlagBits 0x00000002
 
 conNameMemoryHeapFlagBits :: String
@@ -57,6 +70,10 @@
   [
     ( MEMORY_HEAP_DEVICE_LOCAL_BIT
     , "DEVICE_LOCAL_BIT"
+    )
+  ,
+    ( MEMORY_HEAP_TILE_MEMORY_BIT_QCOM
+    , "TILE_MEMORY_BIT_QCOM"
     )
   , (MEMORY_HEAP_SEU_SAFE_BIT, "SEU_SAFE_BIT")
   ,
diff --git a/src/Vulkan/Core10/Enums/MemoryMapFlagBits.hs b/src/Vulkan/Core10/Enums/MemoryMapFlagBits.hs
--- a/src/Vulkan/Core10/Enums/MemoryMapFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/MemoryMapFlagBits.hs
@@ -22,6 +22,16 @@
 -- | VkMemoryMapFlagBits - Bitmask specifying additional parameters of a
 -- memory map
 --
+-- = Description
+--
+-- -   'MEMORY_MAP_PLACED_BIT_EXT' requests that the implementation place
+--     the memory map at the virtual address specified by the application
+--     via
+--     'Vulkan.Extensions.VK_EXT_map_memory_placed.MemoryMapPlacedInfoEXT'::@pPlacedAddress@,
+--     replacing any existing mapping at that address. This flag /must/ not
+--     be used with 'Vulkan.Core10.Memory.mapMemory' as there is no way to
+--     specify the placement address.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -29,12 +39,7 @@
 newtype MemoryMapFlagBits = MemoryMapFlagBits Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'MEMORY_MAP_PLACED_BIT_EXT' requests that the implementation place the
--- memory map at the virtual address specified by the application via
--- 'Vulkan.Extensions.VK_EXT_map_memory_placed.MemoryMapPlacedInfoEXT'::@pPlacedAddress@,
--- replacing any existing mapping at that address. This flag /must/ not be
--- used with 'Vulkan.Core10.Memory.mapMemory' as there is no way to specify
--- the placement address.
+-- No documentation found for Nested "VkMemoryMapFlagBits" "VK_MEMORY_MAP_PLACED_BIT_EXT"
 pattern MEMORY_MAP_PLACED_BIT_EXT = MemoryMapFlagBits 0x00000001
 
 conNameMemoryMapFlagBits :: String
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
@@ -32,6 +32,60 @@
 --
 -- = Description
 --
+-- -   'MEMORY_PROPERTY_DEVICE_LOCAL_BIT' bit specifies that memory
+--     allocated with this type is the most efficient for device access.
+--     This property will be set if and only if the memory type belongs to
+--     a heap with the
+--     'Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_DEVICE_LOCAL_BIT'
+--     set.
+--
+-- -   'MEMORY_PROPERTY_HOST_VISIBLE_BIT' bit specifies that memory
+--     allocated with this type /can/ be mapped for host access using
+--     'Vulkan.Core10.Memory.mapMemory'.
+--
+-- -   #memory-coherent# 'MEMORY_PROPERTY_HOST_COHERENT_BIT' bit specifies
+--     that the host cache management commands
+--     'Vulkan.Core10.Memory.flushMappedMemoryRanges' and
+--     'Vulkan.Core10.Memory.invalidateMappedMemoryRanges' are not needed
+--     to manage
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-available-and-visible availability and visibility>
+--     on the host.
+--
+-- -   'MEMORY_PROPERTY_HOST_CACHED_BIT' bit specifies that memory
+--     allocated with this type is cached on the host. Host memory accesses
+--     to uncached memory are slower than to cached memory, however
+--     uncached memory is always host coherent.
+--
+-- -   'MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT' bit specifies that the memory
+--     type only allows device access to the memory. Memory types /must/
+--     not have both 'MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT' and
+--     'MEMORY_PROPERTY_HOST_VISIBLE_BIT' set. Additionally, the object’s
+--     backing memory /may/ be provided by the implementation lazily as
+--     specified in
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-device-lazy_allocation Lazily Allocated Memory>.
+--
+-- -   'MEMORY_PROPERTY_PROTECTED_BIT' bit specifies that the memory type
+--     only allows device access to the memory, and allows protected queue
+--     operations to access the memory. Memory types /must/ not have
+--     'MEMORY_PROPERTY_PROTECTED_BIT' set and any of
+--     'MEMORY_PROPERTY_HOST_VISIBLE_BIT' set, or
+--     'MEMORY_PROPERTY_HOST_COHERENT_BIT' set, or
+--     'MEMORY_PROPERTY_HOST_CACHED_BIT' set.
+--
+-- -   'MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD' bit specifies that device
+--     accesses to allocations of this memory type are automatically made
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-available-and-visible available and visible>
+--     on the device. If paired with 'MEMORY_PROPERTY_HOST_COHERENT_BIT',
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-available-and-visible memory domain operations>
+--     are also performed automatically between host and device.
+--
+-- -   'MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD' bit specifies that memory
+--     allocated with this type is not cached on the device. Uncached
+--     device memory is always device coherent.
+--
+-- -   'MEMORY_PROPERTY_RDMA_CAPABLE_BIT_NV' bit specifies that external
+--     devices can access this memory directly.
+--
 -- For any memory allocated with both the
 -- 'MEMORY_PROPERTY_HOST_COHERENT_BIT' and the
 -- 'MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD', host or device accesses also
@@ -57,66 +111,31 @@
 newtype MemoryPropertyFlagBits = MemoryPropertyFlagBits Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'MEMORY_PROPERTY_DEVICE_LOCAL_BIT' bit specifies that memory allocated
--- with this type is the most efficient for device access. This property
--- will be set if and only if the memory type belongs to a heap with the
--- 'Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_DEVICE_LOCAL_BIT'
--- set.
+-- No documentation found for Nested "VkMemoryPropertyFlagBits" "VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT"
 pattern MEMORY_PROPERTY_DEVICE_LOCAL_BIT = MemoryPropertyFlagBits 0x00000001
 
--- | 'MEMORY_PROPERTY_HOST_VISIBLE_BIT' bit specifies that memory allocated
--- with this type /can/ be mapped for host access using
--- 'Vulkan.Core10.Memory.mapMemory'.
+-- No documentation found for Nested "VkMemoryPropertyFlagBits" "VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT"
 pattern MEMORY_PROPERTY_HOST_VISIBLE_BIT = MemoryPropertyFlagBits 0x00000002
 
--- | #memory-coherent# 'MEMORY_PROPERTY_HOST_COHERENT_BIT' bit specifies that
--- the host cache management commands
--- 'Vulkan.Core10.Memory.flushMappedMemoryRanges' and
--- 'Vulkan.Core10.Memory.invalidateMappedMemoryRanges' are not needed to
--- manage
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-available-and-visible availability and visibility>
--- on the host.
+-- No documentation found for Nested "VkMemoryPropertyFlagBits" "VK_MEMORY_PROPERTY_HOST_COHERENT_BIT"
 pattern MEMORY_PROPERTY_HOST_COHERENT_BIT = MemoryPropertyFlagBits 0x00000004
 
--- | 'MEMORY_PROPERTY_HOST_CACHED_BIT' bit specifies that memory allocated
--- with this type is cached on the host. Host memory accesses to uncached
--- memory are slower than to cached memory, however uncached memory is
--- always host coherent.
+-- No documentation found for Nested "VkMemoryPropertyFlagBits" "VK_MEMORY_PROPERTY_HOST_CACHED_BIT"
 pattern MEMORY_PROPERTY_HOST_CACHED_BIT = MemoryPropertyFlagBits 0x00000008
 
--- | 'MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT' bit specifies that the memory
--- type only allows device access to the memory. Memory types /must/ not
--- have both 'MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT' and
--- 'MEMORY_PROPERTY_HOST_VISIBLE_BIT' set. Additionally, the object’s
--- backing memory /may/ be provided by the implementation lazily as
--- specified in
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-device-lazy_allocation Lazily Allocated Memory>.
+-- No documentation found for Nested "VkMemoryPropertyFlagBits" "VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT"
 pattern MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT = MemoryPropertyFlagBits 0x00000010
 
--- | 'MEMORY_PROPERTY_RDMA_CAPABLE_BIT_NV' bit specifies that external
--- devices can access this memory directly.
+-- No documentation found for Nested "VkMemoryPropertyFlagBits" "VK_MEMORY_PROPERTY_RDMA_CAPABLE_BIT_NV"
 pattern MEMORY_PROPERTY_RDMA_CAPABLE_BIT_NV = MemoryPropertyFlagBits 0x00000100
 
--- | 'MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD' bit specifies that memory
--- allocated with this type is not cached on the device. Uncached device
--- memory is always device coherent.
+-- No documentation found for Nested "VkMemoryPropertyFlagBits" "VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD"
 pattern MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD = MemoryPropertyFlagBits 0x00000080
 
--- | 'MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD' bit specifies that device
--- accesses to allocations of this memory type are automatically made
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-available-and-visible available and visible>
--- on the device. If paired with 'MEMORY_PROPERTY_HOST_COHERENT_BIT',
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-available-and-visible memory domain operations>
--- are also performed automatically between host and device.
+-- No documentation found for Nested "VkMemoryPropertyFlagBits" "VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD"
 pattern MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD = MemoryPropertyFlagBits 0x00000040
 
--- | 'MEMORY_PROPERTY_PROTECTED_BIT' bit specifies that the memory type only
--- allows device access to the memory, and allows protected queue
--- operations to access the memory. Memory types /must/ not have
--- 'MEMORY_PROPERTY_PROTECTED_BIT' set and any of
--- 'MEMORY_PROPERTY_HOST_VISIBLE_BIT' set, or
--- 'MEMORY_PROPERTY_HOST_COHERENT_BIT' set, or
--- 'MEMORY_PROPERTY_HOST_CACHED_BIT' set.
+-- No documentation found for Nested "VkMemoryPropertyFlagBits" "VK_MEMORY_PROPERTY_PROTECTED_BIT"
 pattern MEMORY_PROPERTY_PROTECTED_BIT = MemoryPropertyFlagBits 0x00000020
 
 conNameMemoryPropertyFlagBits :: String
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
@@ -26,11 +26,16 @@
                                                   , OBJECT_TYPE_DESCRIPTOR_SET
                                                   , OBJECT_TYPE_FRAMEBUFFER
                                                   , OBJECT_TYPE_COMMAND_POOL
+                                                  , OBJECT_TYPE_SHADER_INSTRUMENTATION_ARM
                                                   , OBJECT_TYPE_INDIRECT_EXECUTION_SET_EXT
                                                   , OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_EXT
+                                                  , OBJECT_TYPE_EXTERNAL_COMPUTE_QUEUE_NV
+                                                  , OBJECT_TYPE_DATA_GRAPH_PIPELINE_SESSION_ARM
                                                   , OBJECT_TYPE_PIPELINE_BINARY_KHR
                                                   , OBJECT_TYPE_SHADER_EXT
                                                   , OBJECT_TYPE_OPTICAL_FLOW_SESSION_NV
+                                                  , OBJECT_TYPE_TENSOR_VIEW_ARM
+                                                  , OBJECT_TYPE_TENSOR_ARM
                                                   , OBJECT_TYPE_MICROMAP_EXT
                                                   , OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA
                                                   , OBJECT_TYPE_CUDA_FUNCTION_NV
@@ -41,6 +46,7 @@
                                                   , OBJECT_TYPE_ACCELERATION_STRUCTURE_NV
                                                   , OBJECT_TYPE_VALIDATION_CACHE_EXT
                                                   , OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR
+                                                  , OBJECT_TYPE_GPA_SESSION_AMD
                                                   , OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT
                                                   , OBJECT_TYPE_CU_FUNCTION_NVX
                                                   , OBJECT_TYPE_CU_MODULE_NVX
@@ -50,8 +56,8 @@
                                                   , OBJECT_TYPE_SWAPCHAIN_KHR
                                                   , OBJECT_TYPE_SURFACE_KHR
                                                   , OBJECT_TYPE_PRIVATE_DATA_SLOT
-                                                  , OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE
                                                   , OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION
+                                                  , OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE
                                                   , ..
                                                   )) where
 
@@ -70,107 +76,113 @@
 --
 -- \'
 --
--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
--- | 'ObjectType'                                  | Vulkan Handle Type                                                                                                                      |
--- +===============================================+=========================================================================================================================================+
--- | 'OBJECT_TYPE_UNKNOWN'                         | Unknown\/Undefined Handle                                                                                                               |
--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
--- | 'OBJECT_TYPE_INSTANCE'                        | 'Vulkan.Core10.Handles.Instance'                                                                                                        |
--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
--- | 'OBJECT_TYPE_PHYSICAL_DEVICE'                 | 'Vulkan.Core10.Handles.PhysicalDevice'                                                                                                  |
--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
--- | 'OBJECT_TYPE_DEVICE'                          | 'Vulkan.Core10.Handles.Device'                                                                                                          |
--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
--- | 'OBJECT_TYPE_QUEUE'                           | 'Vulkan.Core10.Handles.Queue'                                                                                                           |
--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
--- | 'OBJECT_TYPE_SEMAPHORE'                       | 'Vulkan.Core10.Handles.Semaphore'                                                                                                       |
--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
--- | 'OBJECT_TYPE_COMMAND_BUFFER'                  | 'Vulkan.Core10.Handles.CommandBuffer'                                                                                                   |
--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
--- | 'OBJECT_TYPE_FENCE'                           | 'Vulkan.Core10.Handles.Fence'                                                                                                           |
--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
--- | 'OBJECT_TYPE_DEVICE_MEMORY'                   | 'Vulkan.Core10.Handles.DeviceMemory'                                                                                                    |
--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
--- | 'OBJECT_TYPE_BUFFER'                          | 'Vulkan.Core10.Handles.Buffer'                                                                                                          |
--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
--- | 'OBJECT_TYPE_IMAGE'                           | 'Vulkan.Core10.Handles.Image'                                                                                                           |
--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
--- | 'OBJECT_TYPE_EVENT'                           | 'Vulkan.Core10.Handles.Event'                                                                                                           |
--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
--- | 'OBJECT_TYPE_QUERY_POOL'                      | 'Vulkan.Core10.Handles.QueryPool'                                                                                                       |
--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
--- | 'OBJECT_TYPE_BUFFER_VIEW'                     | 'Vulkan.Core10.Handles.BufferView'                                                                                                      |
--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
--- | 'OBJECT_TYPE_IMAGE_VIEW'                      | 'Vulkan.Core10.Handles.ImageView'                                                                                                       |
--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
--- | 'OBJECT_TYPE_SHADER_MODULE'                   | 'Vulkan.Core10.Handles.ShaderModule'                                                                                                    |
--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
--- | 'OBJECT_TYPE_PIPELINE_CACHE'                  | 'Vulkan.Core10.Handles.PipelineCache'                                                                                                   |
--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
--- | 'OBJECT_TYPE_PIPELINE_LAYOUT'                 | 'Vulkan.Core10.Handles.PipelineLayout'                                                                                                  |
--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
--- | 'OBJECT_TYPE_RENDER_PASS'                     | 'Vulkan.Core10.Handles.RenderPass'                                                                                                      |
--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
--- | 'OBJECT_TYPE_PIPELINE'                        | 'Vulkan.Core10.Handles.Pipeline'                                                                                                        |
--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
--- | 'OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT'           | 'Vulkan.Core10.Handles.DescriptorSetLayout'                                                                                             |
--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
--- | 'OBJECT_TYPE_SAMPLER'                         | 'Vulkan.Core10.Handles.Sampler'                                                                                                         |
--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
--- | 'OBJECT_TYPE_DESCRIPTOR_POOL'                 | 'Vulkan.Core10.Handles.DescriptorPool'                                                                                                  |
--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
--- | 'OBJECT_TYPE_DESCRIPTOR_SET'                  | 'Vulkan.Core10.Handles.DescriptorSet'                                                                                                   |
--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
--- | 'OBJECT_TYPE_FRAMEBUFFER'                     | 'Vulkan.Core10.Handles.Framebuffer'                                                                                                     |
--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
--- | 'OBJECT_TYPE_COMMAND_POOL'                    | 'Vulkan.Core10.Handles.CommandPool'                                                                                                     |
--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
--- | 'OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION'        | 'Vulkan.Core11.Handles.SamplerYcbcrConversion'                                                                                          |
--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
--- | 'OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE'      | 'Vulkan.Core11.Handles.DescriptorUpdateTemplate'                                                                                        |
--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
--- | 'OBJECT_TYPE_PRIVATE_DATA_SLOT'               | 'Vulkan.Core13.Handles.PrivateDataSlot'                                                                                                 |
--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
--- | 'OBJECT_TYPE_SURFACE_KHR'                     | 'Vulkan.Extensions.Handles.SurfaceKHR'                                                                                                  |
--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
--- | 'OBJECT_TYPE_SWAPCHAIN_KHR'                   | 'Vulkan.Extensions.Handles.SwapchainKHR'                                                                                                |
--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
--- | 'OBJECT_TYPE_DISPLAY_KHR'                     | 'Vulkan.Extensions.Handles.DisplayKHR'                                                                                                  |
--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
--- | 'OBJECT_TYPE_DISPLAY_MODE_KHR'                | 'Vulkan.Extensions.Handles.DisplayModeKHR'                                                                                              |
--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
--- | 'OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT'       | 'Vulkan.Extensions.Handles.DebugReportCallbackEXT'                                                                                      |
--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
--- | @VK_OBJECT_TYPE_VIDEO_SESSION_KHR@            | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoSessionKHR VkVideoSessionKHR>                     |
--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
--- | @VK_OBJECT_TYPE_VIDEO_SESSION_PARAMETERS_KHR@ | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoSessionParametersKHR VkVideoSessionParametersKHR> |
--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
--- | 'OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT'       | 'Vulkan.Extensions.Handles.DebugUtilsMessengerEXT'                                                                                      |
--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
--- | 'OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR'      | 'Vulkan.Extensions.Handles.AccelerationStructureKHR'                                                                                    |
--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
--- | 'OBJECT_TYPE_VALIDATION_CACHE_EXT'            | 'Vulkan.Extensions.Handles.ValidationCacheEXT'                                                                                          |
--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
--- | 'OBJECT_TYPE_ACCELERATION_STRUCTURE_NV'       | 'Vulkan.Extensions.Handles.AccelerationStructureNV'                                                                                     |
--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
--- | 'OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL' | 'Vulkan.Extensions.Handles.PerformanceConfigurationINTEL'                                                                               |
--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
--- | 'OBJECT_TYPE_DEFERRED_OPERATION_KHR'          | 'Vulkan.Extensions.Handles.DeferredOperationKHR'                                                                                        |
--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
--- | 'OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV'     | 'Vulkan.Extensions.Handles.IndirectCommandsLayoutNV'                                                                                    |
--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
--- | 'OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_EXT'    | 'Vulkan.Extensions.Handles.IndirectCommandsLayoutEXT'                                                                                   |
--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
--- | 'OBJECT_TYPE_INDIRECT_EXECUTION_SET_EXT'      | 'Vulkan.Extensions.Handles.IndirectExecutionSetEXT'                                                                                     |
--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
--- | 'OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA'       | 'Vulkan.Extensions.Handles.BufferCollectionFUCHSIA'                                                                                     |
--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
--- | 'OBJECT_TYPE_MICROMAP_EXT'                    | 'Vulkan.Extensions.Handles.MicromapEXT'                                                                                                 |
--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
--- | 'OBJECT_TYPE_OPTICAL_FLOW_SESSION_NV'         | 'Vulkan.Extensions.Handles.OpticalFlowSessionNV'                                                                                        |
--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
--- | 'OBJECT_TYPE_SHADER_EXT'                      | 'Vulkan.Extensions.Handles.ShaderEXT'                                                                                                   |
--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
+-- +------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'ObjectType'                                                                                                                             | Vulkan Handle Type                                                                                                                      |
+-- +==========================================================================================================================================+=========================================================================================================================================+
+-- | 'OBJECT_TYPE_UNKNOWN'                                                                                                                    | Unknown\/Undefined Handle                                                                                                               |
+-- +------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'OBJECT_TYPE_INSTANCE'                                                                                                                   | 'Vulkan.Core10.Handles.Instance'                                                                                                        |
+-- +------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'OBJECT_TYPE_PHYSICAL_DEVICE'                                                                                                            | 'Vulkan.Core10.Handles.PhysicalDevice'                                                                                                  |
+-- +------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'OBJECT_TYPE_DEVICE'                                                                                                                     | 'Vulkan.Core10.Handles.Device'                                                                                                          |
+-- +------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'OBJECT_TYPE_QUEUE'                                                                                                                      | 'Vulkan.Core10.Handles.Queue'                                                                                                           |
+-- +------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'OBJECT_TYPE_SEMAPHORE'                                                                                                                  | 'Vulkan.Core10.Handles.Semaphore'                                                                                                       |
+-- +------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'OBJECT_TYPE_COMMAND_BUFFER'                                                                                                             | 'Vulkan.Core10.Handles.CommandBuffer'                                                                                                   |
+-- +------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'OBJECT_TYPE_FENCE'                                                                                                                      | 'Vulkan.Core10.Handles.Fence'                                                                                                           |
+-- +------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'OBJECT_TYPE_DEVICE_MEMORY'                                                                                                              | 'Vulkan.Core10.Handles.DeviceMemory'                                                                                                    |
+-- +------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'OBJECT_TYPE_BUFFER'                                                                                                                     | 'Vulkan.Core10.Handles.Buffer'                                                                                                          |
+-- +------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'OBJECT_TYPE_IMAGE'                                                                                                                      | 'Vulkan.Core10.Handles.Image'                                                                                                           |
+-- +------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'OBJECT_TYPE_EVENT'                                                                                                                      | 'Vulkan.Core10.Handles.Event'                                                                                                           |
+-- +------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'OBJECT_TYPE_QUERY_POOL'                                                                                                                 | 'Vulkan.Core10.Handles.QueryPool'                                                                                                       |
+-- +------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'OBJECT_TYPE_BUFFER_VIEW'                                                                                                                | 'Vulkan.Core10.Handles.BufferView'                                                                                                      |
+-- +------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'OBJECT_TYPE_IMAGE_VIEW'                                                                                                                 | 'Vulkan.Core10.Handles.ImageView'                                                                                                       |
+-- +------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'OBJECT_TYPE_SHADER_MODULE'                                                                                                              | 'Vulkan.Core10.Handles.ShaderModule'                                                                                                    |
+-- +------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'OBJECT_TYPE_PIPELINE_CACHE'                                                                                                             | 'Vulkan.Core10.Handles.PipelineCache'                                                                                                   |
+-- +------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'OBJECT_TYPE_PIPELINE_LAYOUT'                                                                                                            | 'Vulkan.Core10.Handles.PipelineLayout'                                                                                                  |
+-- +------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'OBJECT_TYPE_RENDER_PASS'                                                                                                                | 'Vulkan.Core10.Handles.RenderPass'                                                                                                      |
+-- +------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'OBJECT_TYPE_PIPELINE'                                                                                                                   | 'Vulkan.Core10.Handles.Pipeline'                                                                                                        |
+-- +------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT'                                                                                                      | 'Vulkan.Core10.Handles.DescriptorSetLayout'                                                                                             |
+-- +------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'OBJECT_TYPE_SAMPLER'                                                                                                                    | 'Vulkan.Core10.Handles.Sampler'                                                                                                         |
+-- +------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'OBJECT_TYPE_DESCRIPTOR_POOL'                                                                                                            | 'Vulkan.Core10.Handles.DescriptorPool'                                                                                                  |
+-- +------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'OBJECT_TYPE_DESCRIPTOR_SET'                                                                                                             | 'Vulkan.Core10.Handles.DescriptorSet'                                                                                                   |
+-- +------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'OBJECT_TYPE_FRAMEBUFFER'                                                                                                                | 'Vulkan.Core10.Handles.Framebuffer'                                                                                                     |
+-- +------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'OBJECT_TYPE_COMMAND_POOL'                                                                                                               | 'Vulkan.Core10.Handles.CommandPool'                                                                                                     |
+-- +------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION'                                                                                                   | 'Vulkan.Core11.Handles.SamplerYcbcrConversion'                                                                                          |
+-- +------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE'                                                                                                 | 'Vulkan.Core11.Handles.DescriptorUpdateTemplate'                                                                                        |
+-- +------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'OBJECT_TYPE_PRIVATE_DATA_SLOT'                                                                                                          | 'Vulkan.Core13.Handles.PrivateDataSlot'                                                                                                 |
+-- +------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'OBJECT_TYPE_SURFACE_KHR'                                                                                                                | 'Vulkan.Extensions.Handles.SurfaceKHR'                                                                                                  |
+-- +------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'OBJECT_TYPE_SWAPCHAIN_KHR'                                                                                                              | 'Vulkan.Extensions.Handles.SwapchainKHR'                                                                                                |
+-- +------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'OBJECT_TYPE_DISPLAY_KHR'                                                                                                                | 'Vulkan.Extensions.Handles.DisplayKHR'                                                                                                  |
+-- +------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'OBJECT_TYPE_DISPLAY_MODE_KHR'                                                                                                           | 'Vulkan.Extensions.Handles.DisplayModeKHR'                                                                                              |
+-- +------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT'                                                                                                  | 'Vulkan.Extensions.Handles.DebugReportCallbackEXT'                                                                                      |
+-- +------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkObjectType VK_OBJECT_TYPE_VIDEO_SESSION_KHR>            | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoSessionKHR VkVideoSessionKHR>                     |
+-- +------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkObjectType VK_OBJECT_TYPE_VIDEO_SESSION_PARAMETERS_KHR> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoSessionParametersKHR VkVideoSessionParametersKHR> |
+-- +------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT'                                                                                                  | 'Vulkan.Extensions.Handles.DebugUtilsMessengerEXT'                                                                                      |
+-- +------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR'                                                                                                 | 'Vulkan.Extensions.Handles.AccelerationStructureKHR'                                                                                    |
+-- +------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'OBJECT_TYPE_VALIDATION_CACHE_EXT'                                                                                                       | 'Vulkan.Extensions.Handles.ValidationCacheEXT'                                                                                          |
+-- +------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'OBJECT_TYPE_ACCELERATION_STRUCTURE_NV'                                                                                                  | 'Vulkan.Extensions.Handles.AccelerationStructureNV'                                                                                     |
+-- +------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL'                                                                                            | 'Vulkan.Extensions.Handles.PerformanceConfigurationINTEL'                                                                               |
+-- +------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'OBJECT_TYPE_DEFERRED_OPERATION_KHR'                                                                                                     | 'Vulkan.Extensions.Handles.DeferredOperationKHR'                                                                                        |
+-- +------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV'                                                                                                | 'Vulkan.Extensions.Handles.IndirectCommandsLayoutNV'                                                                                    |
+-- +------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_EXT'                                                                                               | 'Vulkan.Extensions.Handles.IndirectCommandsLayoutEXT'                                                                                   |
+-- +------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'OBJECT_TYPE_INDIRECT_EXECUTION_SET_EXT'                                                                                                 | 'Vulkan.Extensions.Handles.IndirectExecutionSetEXT'                                                                                     |
+-- +------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA'                                                                                                  | 'Vulkan.Extensions.Handles.BufferCollectionFUCHSIA'                                                                                     |
+-- +------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'OBJECT_TYPE_MICROMAP_EXT'                                                                                                               | 'Vulkan.Extensions.Handles.MicromapEXT'                                                                                                 |
+-- +------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'OBJECT_TYPE_OPTICAL_FLOW_SESSION_NV'                                                                                                    | 'Vulkan.Extensions.Handles.OpticalFlowSessionNV'                                                                                        |
+-- +------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'OBJECT_TYPE_SHADER_EXT'                                                                                                                 | 'Vulkan.Extensions.Handles.ShaderEXT'                                                                                                   |
+-- +------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'OBJECT_TYPE_TENSOR_ARM'                                                                                                                 | 'Vulkan.Extensions.Handles.TensorARM'                                                                                                   |
+-- +------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'OBJECT_TYPE_TENSOR_VIEW_ARM'                                                                                                            | 'Vulkan.Extensions.Handles.TensorViewARM'                                                                                               |
+-- +------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
+-- | 'OBJECT_TYPE_DATA_GRAPH_PIPELINE_SESSION_ARM'                                                                                            | 'Vulkan.Extensions.Handles.DataGraphPipelineSessionARM'                                                                                 |
+-- +------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
 --
 -- 'ObjectType' and Vulkan Handle Relationship
 --
@@ -181,9 +193,9 @@
 -- '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.getPrivateData',
 -- 'Vulkan.Core13.Promoted_From_VK_EXT_private_data.setPrivateData',
--- 'Vulkan.Extensions.VK_EXT_private_data.setPrivateDataEXT'
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_private_data.setPrivateData'
 newtype ObjectType = ObjectType Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
@@ -265,12 +277,21 @@
 -- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_COMMAND_POOL"
 pattern OBJECT_TYPE_COMMAND_POOL = ObjectType 25
 
+-- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_SHADER_INSTRUMENTATION_ARM"
+pattern OBJECT_TYPE_SHADER_INSTRUMENTATION_ARM = ObjectType 1000607000
+
 -- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_INDIRECT_EXECUTION_SET_EXT"
 pattern OBJECT_TYPE_INDIRECT_EXECUTION_SET_EXT = ObjectType 1000572001
 
 -- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_EXT"
 pattern OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_EXT = ObjectType 1000572000
 
+-- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_EXTERNAL_COMPUTE_QUEUE_NV"
+pattern OBJECT_TYPE_EXTERNAL_COMPUTE_QUEUE_NV = ObjectType 1000556000
+
+-- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_DATA_GRAPH_PIPELINE_SESSION_ARM"
+pattern OBJECT_TYPE_DATA_GRAPH_PIPELINE_SESSION_ARM = ObjectType 1000507000
+
 -- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_PIPELINE_BINARY_KHR"
 pattern OBJECT_TYPE_PIPELINE_BINARY_KHR = ObjectType 1000483000
 
@@ -280,6 +301,12 @@
 -- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_OPTICAL_FLOW_SESSION_NV"
 pattern OBJECT_TYPE_OPTICAL_FLOW_SESSION_NV = ObjectType 1000464000
 
+-- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_TENSOR_VIEW_ARM"
+pattern OBJECT_TYPE_TENSOR_VIEW_ARM = ObjectType 1000460001
+
+-- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_TENSOR_ARM"
+pattern OBJECT_TYPE_TENSOR_ARM = ObjectType 1000460000
+
 -- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_MICROMAP_EXT"
 pattern OBJECT_TYPE_MICROMAP_EXT = ObjectType 1000396000
 
@@ -310,6 +337,9 @@
 -- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR"
 pattern OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR = ObjectType 1000150000
 
+-- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_GPA_SESSION_AMD"
+pattern OBJECT_TYPE_GPA_SESSION_AMD = ObjectType 1000133000
+
 -- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT"
 pattern OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT = ObjectType 1000128000
 
@@ -337,12 +367,12 @@
 -- 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"
 pattern OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION = ObjectType 1000156000
 
+-- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE"
+pattern OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE = ObjectType 1000085000
+
 {-# COMPLETE
   OBJECT_TYPE_UNKNOWN
   , OBJECT_TYPE_INSTANCE
@@ -370,11 +400,16 @@
   , OBJECT_TYPE_DESCRIPTOR_SET
   , OBJECT_TYPE_FRAMEBUFFER
   , OBJECT_TYPE_COMMAND_POOL
+  , OBJECT_TYPE_SHADER_INSTRUMENTATION_ARM
   , OBJECT_TYPE_INDIRECT_EXECUTION_SET_EXT
   , OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_EXT
+  , OBJECT_TYPE_EXTERNAL_COMPUTE_QUEUE_NV
+  , OBJECT_TYPE_DATA_GRAPH_PIPELINE_SESSION_ARM
   , OBJECT_TYPE_PIPELINE_BINARY_KHR
   , OBJECT_TYPE_SHADER_EXT
   , OBJECT_TYPE_OPTICAL_FLOW_SESSION_NV
+  , OBJECT_TYPE_TENSOR_VIEW_ARM
+  , OBJECT_TYPE_TENSOR_ARM
   , OBJECT_TYPE_MICROMAP_EXT
   , OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA
   , OBJECT_TYPE_CUDA_FUNCTION_NV
@@ -385,6 +420,7 @@
   , OBJECT_TYPE_ACCELERATION_STRUCTURE_NV
   , OBJECT_TYPE_VALIDATION_CACHE_EXT
   , OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR
+  , OBJECT_TYPE_GPA_SESSION_AMD
   , OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT
   , OBJECT_TYPE_CU_FUNCTION_NVX
   , OBJECT_TYPE_CU_MODULE_NVX
@@ -394,8 +430,8 @@
   , OBJECT_TYPE_SWAPCHAIN_KHR
   , OBJECT_TYPE_SURFACE_KHR
   , OBJECT_TYPE_PRIVATE_DATA_SLOT
-  , OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE
-  , OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION ::
+  , OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION
+  , OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE ::
     ObjectType
   #-}
 
@@ -437,6 +473,10 @@
   , (OBJECT_TYPE_FRAMEBUFFER, "FRAMEBUFFER")
   , (OBJECT_TYPE_COMMAND_POOL, "COMMAND_POOL")
   ,
+    ( OBJECT_TYPE_SHADER_INSTRUMENTATION_ARM
+    , "SHADER_INSTRUMENTATION_ARM"
+    )
+  ,
     ( OBJECT_TYPE_INDIRECT_EXECUTION_SET_EXT
     , "INDIRECT_EXECUTION_SET_EXT"
     )
@@ -444,12 +484,22 @@
     ( OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_EXT
     , "INDIRECT_COMMANDS_LAYOUT_EXT"
     )
+  ,
+    ( OBJECT_TYPE_EXTERNAL_COMPUTE_QUEUE_NV
+    , "EXTERNAL_COMPUTE_QUEUE_NV"
+    )
+  ,
+    ( OBJECT_TYPE_DATA_GRAPH_PIPELINE_SESSION_ARM
+    , "DATA_GRAPH_PIPELINE_SESSION_ARM"
+    )
   , (OBJECT_TYPE_PIPELINE_BINARY_KHR, "PIPELINE_BINARY_KHR")
   , (OBJECT_TYPE_SHADER_EXT, "SHADER_EXT")
   ,
     ( OBJECT_TYPE_OPTICAL_FLOW_SESSION_NV
     , "OPTICAL_FLOW_SESSION_NV"
     )
+  , (OBJECT_TYPE_TENSOR_VIEW_ARM, "TENSOR_VIEW_ARM")
+  , (OBJECT_TYPE_TENSOR_ARM, "TENSOR_ARM")
   , (OBJECT_TYPE_MICROMAP_EXT, "MICROMAP_EXT")
   ,
     ( OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA
@@ -481,6 +531,7 @@
     ( OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR
     , "ACCELERATION_STRUCTURE_KHR"
     )
+  , (OBJECT_TYPE_GPA_SESSION_AMD, "GPA_SESSION_AMD")
   ,
     ( OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT
     , "DEBUG_UTILS_MESSENGER_EXT"
@@ -497,12 +548,12 @@
   , (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"
+    )
+  ,
+    ( OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE
+    , "DESCRIPTOR_UPDATE_TEMPLATE"
     )
   ]
 
diff --git a/src/Vulkan/Core10/Enums/PhysicalDeviceType.hs b/src/Vulkan/Core10/Enums/PhysicalDeviceType.hs
--- a/src/Vulkan/Core10/Enums/PhysicalDeviceType.hs
+++ b/src/Vulkan/Core10/Enums/PhysicalDeviceType.hs
@@ -21,6 +21,21 @@
 --
 -- = Description
 --
+-- -   'PHYSICAL_DEVICE_TYPE_OTHER' - the device does not match any other
+--     available types.
+--
+-- -   'PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU' - the device is typically one
+--     embedded in or tightly coupled with the host.
+--
+-- -   'PHYSICAL_DEVICE_TYPE_DISCRETE_GPU' - the device is typically a
+--     separate processor connected to the host via an interlink.
+--
+-- -   'PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU' - the device is typically a
+--     virtual node in a virtualization environment.
+--
+-- -   'PHYSICAL_DEVICE_TYPE_CPU' - the device is typically running on the
+--     same processors as the host.
+--
 -- The physical device type is advertised for informational purposes only,
 -- and does not directly affect the operation of the system. However, the
 -- device type /may/ correlate with other advertised properties or
@@ -33,24 +48,19 @@
 newtype PhysicalDeviceType = PhysicalDeviceType Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'PHYSICAL_DEVICE_TYPE_OTHER' - the device does not match any other
--- available types.
+-- No documentation found for Nested "VkPhysicalDeviceType" "VK_PHYSICAL_DEVICE_TYPE_OTHER"
 pattern PHYSICAL_DEVICE_TYPE_OTHER = PhysicalDeviceType 0
 
--- | 'PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU' - the device is typically one
--- embedded in or tightly coupled with the host.
+-- No documentation found for Nested "VkPhysicalDeviceType" "VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU"
 pattern PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = PhysicalDeviceType 1
 
--- | 'PHYSICAL_DEVICE_TYPE_DISCRETE_GPU' - the device is typically a separate
--- processor connected to the host via an interlink.
+-- No documentation found for Nested "VkPhysicalDeviceType" "VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU"
 pattern PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = PhysicalDeviceType 2
 
--- | 'PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU' - the device is typically a virtual
--- node in a virtualization environment.
+-- No documentation found for Nested "VkPhysicalDeviceType" "VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU"
 pattern PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = PhysicalDeviceType 3
 
--- | 'PHYSICAL_DEVICE_TYPE_CPU' - the device is typically running on the same
--- processors as the host.
+-- No documentation found for Nested "VkPhysicalDeviceType" "VK_PHYSICAL_DEVICE_TYPE_CPU"
 pattern PHYSICAL_DEVICE_TYPE_CPU = PhysicalDeviceType 4
 
 {-# COMPLETE
diff --git a/src/Vulkan/Core10/Enums/PipelineBindPoint.hs b/src/Vulkan/Core10/Enums/PipelineBindPoint.hs
--- a/src/Vulkan/Core10/Enums/PipelineBindPoint.hs
+++ b/src/Vulkan/Core10/Enums/PipelineBindPoint.hs
@@ -2,6 +2,7 @@
 -- No documentation found for Chapter "PipelineBindPoint"
 module Vulkan.Core10.Enums.PipelineBindPoint  (PipelineBindPoint( PIPELINE_BIND_POINT_GRAPHICS
                                                                 , PIPELINE_BIND_POINT_COMPUTE
+                                                                , PIPELINE_BIND_POINT_DATA_GRAPH_ARM
                                                                 , PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI
                                                                 , PIPELINE_BIND_POINT_RAY_TRACING_KHR
                                                                 , PIPELINE_BIND_POINT_EXECUTION_GRAPH_AMDX
@@ -20,6 +21,23 @@
 -- | VkPipelineBindPoint - Specify the bind point of a pipeline object to a
 -- command buffer
 --
+-- = Description
+--
+-- -   'PIPELINE_BIND_POINT_COMPUTE' specifies binding as a compute
+--     pipeline.
+--
+-- -   'PIPELINE_BIND_POINT_GRAPHICS' specifies binding as a graphics
+--     pipeline.
+--
+-- -   'PIPELINE_BIND_POINT_RAY_TRACING_KHR' specifies binding as a ray
+--     tracing pipeline.
+--
+-- -   'PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI' specifies binding as a
+--     subpass shading pipeline.
+--
+-- -   'PIPELINE_BIND_POINT_EXECUTION_GRAPH_AMDX' specifies binding as an
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#executiongraphs execution graph pipeline>.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -34,33 +52,35 @@
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdBindPipeline',
 -- 'Vulkan.Extensions.VK_NV_device_generated_commands.cmdBindPipelineShaderGroupNV',
--- 'Vulkan.Extensions.VK_KHR_push_descriptor.cmdPushDescriptorSetKHR',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_push_descriptor.cmdPushDescriptorSet',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_push_descriptor.cmdPushDescriptorSet',
 -- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
 -- 'Vulkan.Extensions.VK_NV_device_generated_commands_compute.cmdUpdatePipelineIndirectBufferNV'
 newtype PipelineBindPoint = PipelineBindPoint Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'PIPELINE_BIND_POINT_GRAPHICS' specifies binding as a graphics pipeline.
+-- No documentation found for Nested "VkPipelineBindPoint" "VK_PIPELINE_BIND_POINT_GRAPHICS"
 pattern PIPELINE_BIND_POINT_GRAPHICS = PipelineBindPoint 0
 
--- | 'PIPELINE_BIND_POINT_COMPUTE' specifies binding as a compute pipeline.
+-- No documentation found for Nested "VkPipelineBindPoint" "VK_PIPELINE_BIND_POINT_COMPUTE"
 pattern PIPELINE_BIND_POINT_COMPUTE = PipelineBindPoint 1
 
--- | 'PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI' specifies binding as a
--- subpass shading pipeline.
+-- No documentation found for Nested "VkPipelineBindPoint" "VK_PIPELINE_BIND_POINT_DATA_GRAPH_ARM"
+pattern PIPELINE_BIND_POINT_DATA_GRAPH_ARM = PipelineBindPoint 1000507000
+
+-- No documentation found for Nested "VkPipelineBindPoint" "VK_PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI"
 pattern PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI = PipelineBindPoint 1000369003
 
--- | 'PIPELINE_BIND_POINT_RAY_TRACING_KHR' specifies binding as a ray tracing
--- pipeline.
+-- No documentation found for Nested "VkPipelineBindPoint" "VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR"
 pattern PIPELINE_BIND_POINT_RAY_TRACING_KHR = PipelineBindPoint 1000165000
 
--- | 'PIPELINE_BIND_POINT_EXECUTION_GRAPH_AMDX' specifies binding as an
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#executiongraphs execution graph pipeline>.
+-- No documentation found for Nested "VkPipelineBindPoint" "VK_PIPELINE_BIND_POINT_EXECUTION_GRAPH_AMDX"
 pattern PIPELINE_BIND_POINT_EXECUTION_GRAPH_AMDX = PipelineBindPoint 1000134000
 
 {-# COMPLETE
   PIPELINE_BIND_POINT_GRAPHICS
   , PIPELINE_BIND_POINT_COMPUTE
+  , PIPELINE_BIND_POINT_DATA_GRAPH_ARM
   , PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI
   , PIPELINE_BIND_POINT_RAY_TRACING_KHR
   , PIPELINE_BIND_POINT_EXECUTION_GRAPH_AMDX ::
@@ -77,6 +97,10 @@
 showTablePipelineBindPoint =
   [ (PIPELINE_BIND_POINT_GRAPHICS, "GRAPHICS")
   , (PIPELINE_BIND_POINT_COMPUTE, "COMPUTE")
+  ,
+    ( PIPELINE_BIND_POINT_DATA_GRAPH_ARM
+    , "DATA_GRAPH_ARM"
+    )
   ,
     ( PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI
     , "SUBPASS_SHADING_HUAWEI"
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,8 @@
 {-# language CPP #-}
 -- No documentation found for Chapter "PipelineCacheCreateFlagBits"
 module Vulkan.Core10.Enums.PipelineCacheCreateFlagBits  ( PipelineCacheCreateFlags
-                                                        , PipelineCacheCreateFlagBits( PIPELINE_CACHE_CREATE_USE_APPLICATION_STORAGE_BIT
+                                                        , PipelineCacheCreateFlagBits( PIPELINE_CACHE_CREATE_INTERNALLY_SYNCHRONIZED_MERGE_BIT_KHR
+                                                                                     , PIPELINE_CACHE_CREATE_USE_APPLICATION_STORAGE_BIT
                                                                                      , PIPELINE_CACHE_CREATE_READ_ONLY_BIT
                                                                                      , PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT
                                                                                      , ..
@@ -24,26 +25,44 @@
 -- | VkPipelineCacheCreateFlagBits - Bitmask specifying the behavior of the
 -- pipeline cache
 --
+-- = Description
+--
+-- -   'PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT' specifies that
+--     all commands that modify the created
+--     'Vulkan.Core10.Handles.PipelineCache' will be
+--     <https://registry.khronos.org/vulkan/specs/latest/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.
+--
+-- -   'PIPELINE_CACHE_CREATE_INTERNALLY_SYNCHRONIZED_MERGE_BIT_KHR'
+--     specifies that when the created
+--     'Vulkan.Core10.Handles.PipelineCache' is used as the @dstCache@
+--     parameter of 'Vulkan.Core10.PipelineCache.mergePipelineCaches', it
+--     does not need to be
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#fundamentals-threadingbehavior externally synchronized>.
+--     This flag is mutually exclusive with
+--     'PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT'.
+--
 -- = 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_KHR_maintenance8 VK_KHR_maintenance8>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
 -- 'PipelineCacheCreateFlags'
 newtype PipelineCacheCreateFlagBits = PipelineCacheCreateFlagBits Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
+-- No documentation found for Nested "VkPipelineCacheCreateFlagBits" "VK_PIPELINE_CACHE_CREATE_INTERNALLY_SYNCHRONIZED_MERGE_BIT_KHR"
+pattern PIPELINE_CACHE_CREATE_INTERNALLY_SYNCHRONIZED_MERGE_BIT_KHR = PipelineCacheCreateFlagBits 0x00000008
+
 -- No documentation found for Nested "VkPipelineCacheCreateFlagBits" "VK_PIPELINE_CACHE_CREATE_USE_APPLICATION_STORAGE_BIT"
 pattern PIPELINE_CACHE_CREATE_USE_APPLICATION_STORAGE_BIT = PipelineCacheCreateFlagBits 0x00000004
 
 -- No documentation found for Nested "VkPipelineCacheCreateFlagBits" "VK_PIPELINE_CACHE_CREATE_READ_ONLY_BIT"
 pattern PIPELINE_CACHE_CREATE_READ_ONLY_BIT = PipelineCacheCreateFlagBits 0x00000002
 
--- | 'PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT' specifies that all
--- commands that modify the created 'Vulkan.Core10.Handles.PipelineCache'
--- will be
--- <https://registry.khronos.org/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.
+-- No documentation found for Nested "VkPipelineCacheCreateFlagBits" "VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT"
 pattern PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT = PipelineCacheCreateFlagBits 0x00000001
 
 conNamePipelineCacheCreateFlagBits :: String
@@ -55,6 +74,10 @@
 showTablePipelineCacheCreateFlagBits :: [(PipelineCacheCreateFlagBits, String)]
 showTablePipelineCacheCreateFlagBits =
   [
+    ( PIPELINE_CACHE_CREATE_INTERNALLY_SYNCHRONIZED_MERGE_BIT_KHR
+    , "INTERNALLY_SYNCHRONIZED_MERGE_BIT_KHR"
+    )
+  ,
     ( PIPELINE_CACHE_CREATE_USE_APPLICATION_STORAGE_BIT
     , "USE_APPLICATION_STORAGE_BIT"
     )
diff --git a/src/Vulkan/Core10/Enums/PipelineCacheHeaderVersion.hs b/src/Vulkan/Core10/Enums/PipelineCacheHeaderVersion.hs
--- a/src/Vulkan/Core10/Enums/PipelineCacheHeaderVersion.hs
+++ b/src/Vulkan/Core10/Enums/PipelineCacheHeaderVersion.hs
@@ -1,6 +1,7 @@
 {-# language CPP #-}
 -- No documentation found for Chapter "PipelineCacheHeaderVersion"
 module Vulkan.Core10.Enums.PipelineCacheHeaderVersion  (PipelineCacheHeaderVersion( PIPELINE_CACHE_HEADER_VERSION_ONE
+                                                                                  , PIPELINE_CACHE_HEADER_VERSION_DATA_GRAPH_QCOM
                                                                                   , PIPELINE_CACHE_HEADER_VERSION_SAFETY_CRITICAL_ONE
                                                                                   , ..
                                                                                   )) where
@@ -16,9 +17,20 @@
 
 -- | VkPipelineCacheHeaderVersion - Encode pipeline cache version
 --
+-- = Description
+--
+-- -   'PIPELINE_CACHE_HEADER_VERSION_ONE' specifies version one of the
+--     pipeline cache, described by
+--     'Vulkan.Core10.OtherTypes.PipelineCacheHeaderVersionOne'.
+--
+-- -   'PIPELINE_CACHE_HEADER_VERSION_DATA_GRAPH_QCOM' specifies a pipeline
+--     cache for offline built data graph models, described by
+--     'Vulkan.Extensions.VK_QCOM_data_graph_model.PipelineCacheHeaderVersionDataGraphQCOM'.
+--
 -- = 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_QCOM_data_graph_model.PipelineCacheHeaderVersionDataGraphQCOM',
 -- 'Vulkan.Core10.OtherTypes.PipelineCacheHeaderVersionOne',
 -- 'Vulkan.Core10.PipelineCache.createPipelineCache',
 -- 'Vulkan.Core10.PipelineCache.getPipelineCacheData'
@@ -27,16 +39,18 @@
 
 -- Note that the zero instance does not produce a valid value, passing 'zero' to Vulkan will result in an error
 
--- | 'PIPELINE_CACHE_HEADER_VERSION_ONE' specifies version one of the
--- pipeline cache, described by
--- 'Vulkan.Core10.OtherTypes.PipelineCacheHeaderVersionOne'.
+-- No documentation found for Nested "VkPipelineCacheHeaderVersion" "VK_PIPELINE_CACHE_HEADER_VERSION_ONE"
 pattern PIPELINE_CACHE_HEADER_VERSION_ONE = PipelineCacheHeaderVersion 1
 
+-- No documentation found for Nested "VkPipelineCacheHeaderVersion" "VK_PIPELINE_CACHE_HEADER_VERSION_DATA_GRAPH_QCOM"
+pattern PIPELINE_CACHE_HEADER_VERSION_DATA_GRAPH_QCOM = PipelineCacheHeaderVersion 1000629000
+
 -- No documentation found for Nested "VkPipelineCacheHeaderVersion" "VK_PIPELINE_CACHE_HEADER_VERSION_SAFETY_CRITICAL_ONE"
 pattern PIPELINE_CACHE_HEADER_VERSION_SAFETY_CRITICAL_ONE = PipelineCacheHeaderVersion 1000298001
 
 {-# COMPLETE
   PIPELINE_CACHE_HEADER_VERSION_ONE
+  , PIPELINE_CACHE_HEADER_VERSION_DATA_GRAPH_QCOM
   , PIPELINE_CACHE_HEADER_VERSION_SAFETY_CRITICAL_ONE ::
     PipelineCacheHeaderVersion
   #-}
@@ -52,6 +66,10 @@
   [
     ( PIPELINE_CACHE_HEADER_VERSION_ONE
     , "ONE"
+    )
+  ,
+    ( PIPELINE_CACHE_HEADER_VERSION_DATA_GRAPH_QCOM
+    , "DATA_GRAPH_QCOM"
     )
   ,
     ( PIPELINE_CACHE_HEADER_VERSION_SAFETY_CRITICAL_ONE
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
@@ -37,32 +37,33 @@
 -- pipeline with the following scopes:
 --
 -- -   The first
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
 --     includes the
 --     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT'
 --     pipeline stage executed by all previous fragments (as defined by
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#drawing-primitive-order primitive order>)
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#drawing-primitive-order primitive order>)
 --     in the corresponding
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-framebuffer-regions framebuffer regions>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-framebuffer-regions framebuffer regions>
 --     including those generated by the same draw command.
 --
 -- -   The second
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
 --     includes the
 --     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_SHADER_BIT'
 --     pipeline stage executed by the generated fragment.
 --
 -- -   The first
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
 --     includes all writes to color attachments.
 --
 -- -   The second
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
 --     includes all reads from input attachments.
 --
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_rasterization_order_attachment_access VK_EXT_rasterization_order_attachment_access>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
 -- 'PipelineColorBlendStateCreateFlags'
 newtype PipelineColorBlendStateCreateFlagBits = PipelineColorBlendStateCreateFlagBits Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
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
@@ -4,10 +4,8 @@
                                                    , PipelineCreateFlagBits( PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT
                                                                            , PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT
                                                                            , PIPELINE_CREATE_DERIVATIVE_BIT
-                                                                           , PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT
-                                                                           , PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT
+                                                                           , PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_KHR
                                                                            , PIPELINE_CREATE_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV
-                                                                           , PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT
                                                                            , PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT
                                                                            , PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT
                                                                            , PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV
@@ -28,10 +26,12 @@
                                                                            , PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR
                                                                            , PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR
                                                                            , PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR
+                                                                           , PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT
+                                                                           , PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT
                                                                            , 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
+                                                                           , PIPELINE_CREATE_DISPATCH_BASE_BIT
                                                                            , ..
                                                                            )
                                                    ) where
@@ -68,8 +68,8 @@
 --     any shader input variables decorated as @ViewIndex@ will be assigned
 --     values as if they were decorated as @DeviceIndex@.
 --
--- -   'Vulkan.Core11.Promoted_From_VK_KHR_device_group.PIPELINE_CREATE_DISPATCH_BASE'
---     specifies that a compute pipeline /can/ be used with
+-- -   'PIPELINE_CREATE_DISPATCH_BASE_BIT' specifies that a compute
+--     pipeline /can/ be used with
 --     'Vulkan.Core11.Promoted_From_VK_KHR_device_group.cmdDispatchBase'
 --     with a non-zero base workgroup.
 --
@@ -134,13 +134,14 @@
 --     shader group consisting entirely of zeros.
 --
 -- -   'PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR' specifies that
---     triangle primitives will be skipped during traversal using
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#glossary-pipeline-trace-ray pipeline trace ray>
+--     sphere, LSS and triangle primitives will be skipped during traversal
+--     using
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#glossary-pipeline-trace-ray pipeline trace ray>
 --     instructions.
 --
 -- -   'PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR' specifies that AABB
 --     primitives will be skipped during traversal using
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#glossary-pipeline-trace-ray pipeline trace ray>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#glossary-pipeline-trace-ray pipeline trace ray>
 --     instructions.
 --
 -- -   'PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR'
@@ -149,7 +150,7 @@
 --
 -- -   'PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV' specifies that the
 --     pipeline /can/ be used in combination with
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#device-generated-commands>.
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#device-generated-commands>.
 --
 -- -   'PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT' specifies
 --     that pipeline creation will fail if a compile is required for
@@ -188,44 +189,47 @@
 --
 -- -   'PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT' specifies that a
 --     pipeline will be used with
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorbuffers descriptor buffers>,
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptorbuffers descriptor buffers>,
 --     rather than
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets descriptor sets>.
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors descriptor sets>.
 --
 -- -   'PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT' specifies
---     that the pipeline /may/ be used with an attachment feedback loop
+--     that the pipeline /may/ be used with an attachment
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-feedbackloop feedback loop>
 --     including color attachments. It is ignored if
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
 --     is set in @pDynamicStates@.
 --
 -- -   'PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT'
 --     specifies that the pipeline /may/ be used with an attachment
---     feedback loop including depth-stencil attachments. It is ignored if
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     including depth-stencil attachments. It is ignored if
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
 --     is set in @pDynamicStates@.
 --
--- -   'PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT' specifies
+-- -   'PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_KHR' specifies
 --     that the ray tracing pipeline /can/ be used with acceleration
---     structures which reference an opacity micromap array.
+--     structures which reference an opacity micromap array. This flag has
+--     no effect on using opacity micromaps with ray queries.
 --
 -- -   'PIPELINE_CREATE_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV' specifies
 --     that the ray tracing pipeline /can/ be used with acceleration
 --     structures which reference a displacement micromap array.
 --
--- -   'PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT' specifies that the
+-- -   'PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT' specifies that the
 --     pipeline /must/ not be bound to a protected command buffer.
 --
--- -   'PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT' specifies that the
+-- -   'PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT' specifies that the
 --     pipeline /must/ not be bound to an unprotected command buffer.
 --
 -- 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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-pipeline-derivatives Pipeline Derivatives>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-pipeline-derivatives Pipeline Derivatives>
 -- for more information.
 --
 -- When an implementation is looking up a pipeline in a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-cache pipeline cache>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-cache pipeline cache>,
 -- if that pipeline is being created using linked libraries,
 -- implementations /should/ always return an equivalent pipeline created
 -- with 'PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT' if available,
@@ -259,18 +263,12 @@
 -- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_DERIVATIVE_BIT"
 pattern PIPELINE_CREATE_DERIVATIVE_BIT = PipelineCreateFlagBits 0x00000004
 
--- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT"
-pattern PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT = PipelineCreateFlagBits 0x40000000
-
--- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT"
-pattern PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT = PipelineCreateFlagBits 0x08000000
+-- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_KHR"
+pattern PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_KHR = PipelineCreateFlagBits 0x01000000
 
 -- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV"
 pattern PIPELINE_CREATE_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV = PipelineCreateFlagBits 0x10000000
 
--- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT"
-pattern PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT = PipelineCreateFlagBits 0x01000000
-
 -- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT"
 pattern PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = PipelineCreateFlagBits 0x04000000
 
@@ -331,18 +329,24 @@
 -- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR"
 pattern PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR = PipelineCreateFlagBits 0x00004000
 
+-- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT"
+pattern PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT = PipelineCreateFlagBits 0x40000000
+
+-- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT"
+pattern PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT = PipelineCreateFlagBits 0x08000000
+
 -- 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"
 pattern PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT = PipelineCreateFlagBits 0x00000008
 
+-- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_DISPATCH_BASE_BIT"
+pattern PIPELINE_CREATE_DISPATCH_BASE_BIT = PipelineCreateFlagBits 0x00000010
+
 conNamePipelineCreateFlagBits :: String
 conNamePipelineCreateFlagBits = "PipelineCreateFlagBits"
 
@@ -364,22 +368,14 @@
     , "DERIVATIVE_BIT"
     )
   ,
-    ( PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT
-    , "PROTECTED_ACCESS_ONLY_BIT_EXT"
-    )
-  ,
-    ( PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT
-    , "NO_PROTECTED_ACCESS_BIT_EXT"
+    ( PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_KHR
+    , "RAY_TRACING_OPACITY_MICROMAP_BIT_KHR"
     )
   ,
     ( PIPELINE_CREATE_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV
     , "RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV"
     )
   ,
-    ( PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT
-    , "RAY_TRACING_OPACITY_MICROMAP_BIT_EXT"
-    )
-  ,
     ( PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT
     , "DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT"
     )
@@ -460,6 +456,14 @@
     , "RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR"
     )
   ,
+    ( PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT
+    , "PROTECTED_ACCESS_ONLY_BIT"
+    )
+  ,
+    ( PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT
+    , "NO_PROTECTED_ACCESS_BIT"
+    )
+  ,
     ( PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT
     , "EARLY_RETURN_ON_FAILURE_BIT"
     )
@@ -468,12 +472,12 @@
     , "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"
+    )
+  ,
+    ( PIPELINE_CREATE_DISPATCH_BASE_BIT
+    , "DISPATCH_BASE_BIT"
     )
   ]
 
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
@@ -42,30 +42,30 @@
 -- pipeline with the following scopes:
 --
 -- -   The first
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
 --     includes
 --     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_SHADER_BIT'
 --     and
 --     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT'
 --     pipeline stages executed by all previous fragments (as defined by
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#drawing-primitive-order primitive order>)
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#drawing-primitive-order primitive order>)
 --     in the corresponding
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-framebuffer-regions framebuffer regions>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-framebuffer-regions framebuffer regions>
 --     including those generated by the same draw command.
 --
 -- -   The second
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
 --     includes
 --     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_SHADER_BIT'
 --     stage executed by the generated fragment.
 --
 -- -   The first
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
 --     includes all writes to the depth aspect of depth\/stencil
 --     attachments.
 --
 -- -   The second
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
 --     includes all reads from the depth aspect of input attachments.
 --
 -- When
@@ -75,18 +75,18 @@
 -- pipeline with the following scopes:
 --
 -- -   The first
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
 --     includes
 --     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_SHADER_BIT'
 --     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT'
 --     pipeline stages executed by all previous fragments (as defined by
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#drawing-primitive-order primitive order>)
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#drawing-primitive-order primitive order>)
 --     in the corresponding
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-framebuffer-regions framebuffer regions>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-framebuffer-regions framebuffer regions>
 --     including those generated by the same draw command.
 --
 -- -   The second
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
 --     includes
 --     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_SHADER_BIT'
 --     and
@@ -94,17 +94,18 @@
 --     pipeline stages executed by the generated fragment.
 --
 -- -   The first
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
 --     includes all writes to the stencil aspect of depth\/stencil
 --     attachments.
 --
 -- -   The second
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
 --     includes all reads from the stencil aspect of input attachments.
 --
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_rasterization_order_attachment_access VK_EXT_rasterization_order_attachment_access>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
 -- 'PipelineDepthStencilStateCreateFlags'
 newtype PipelineDepthStencilStateCreateFlagBits = PipelineDepthStencilStateCreateFlagBits Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
diff --git a/src/Vulkan/Core10/Enums/PipelineDynamicStateCreateFlags.hs b/src/Vulkan/Core10/Enums/PipelineDynamicStateCreateFlags.hs
--- a/src/Vulkan/Core10/Enums/PipelineDynamicStateCreateFlags.hs
+++ b/src/Vulkan/Core10/Enums/PipelineDynamicStateCreateFlags.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.FundamentalTypes.Flags',
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'
 newtype PipelineDynamicStateCreateFlags = PipelineDynamicStateCreateFlags Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
diff --git a/src/Vulkan/Core10/Enums/PipelineInputAssemblyStateCreateFlags.hs b/src/Vulkan/Core10/Enums/PipelineInputAssemblyStateCreateFlags.hs
--- a/src/Vulkan/Core10/Enums/PipelineInputAssemblyStateCreateFlags.hs
+++ b/src/Vulkan/Core10/Enums/PipelineInputAssemblyStateCreateFlags.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.FundamentalTypes.Flags',
--- 'Vulkan.Core10.Pipeline.PipelineInputAssemblyStateCreateInfo'
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineInputAssemblyStateCreateInfo'
 newtype PipelineInputAssemblyStateCreateFlags = PipelineInputAssemblyStateCreateFlags Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
diff --git a/src/Vulkan/Core10/Enums/PipelineLayoutCreateFlagBits.hs b/src/Vulkan/Core10/Enums/PipelineLayoutCreateFlagBits.hs
--- a/src/Vulkan/Core10/Enums/PipelineLayoutCreateFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/PipelineLayoutCreateFlagBits.hs
@@ -1,7 +1,8 @@
 {-# language CPP #-}
 -- No documentation found for Chapter "PipelineLayoutCreateFlagBits"
 module Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits  ( PipelineLayoutCreateFlags
-                                                         , PipelineLayoutCreateFlagBits( PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT
+                                                         , PipelineLayoutCreateFlagBits( PIPELINE_LAYOUT_CREATE_NO_TASK_SHADER_BIT_KHR
+                                                                                       , PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT
                                                                                        , ..
                                                                                        )
                                                          ) where
@@ -21,32 +22,50 @@
 
 -- | VkPipelineLayoutCreateFlagBits - Pipeline layout creation flag bits
 --
+-- = Description
+--
+-- -   'PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT' specifies that
+--     implementations /must/ ensure that the properties and\/or absence of
+--     a particular descriptor set do not influence any other properties of
+--     the pipeline layout. This allows pipelines libraries linked without
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT'
+--     to be created with a subset of the total descriptor sets.
+--
+-- -   'PIPELINE_LAYOUT_CREATE_NO_TASK_SHADER_BIT_KHR', when used in
+--     combination with 'PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT',
+--     specifies that this pipeline layout will only be used to draw with
+--     shader objects created with
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_graphics_pipeline_library VK_EXT_graphics_pipeline_library>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
 -- 'PipelineLayoutCreateFlags'
 newtype PipelineLayoutCreateFlagBits = PipelineLayoutCreateFlagBits Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT' specifies that
--- implementations /must/ ensure that the properties and\/or absence of a
--- particular descriptor set do not influence any other properties of the
--- pipeline layout. This allows pipelines libraries linked without
--- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT'
--- to be created with a subset of the total descriptor sets.
+-- No documentation found for Nested "VkPipelineLayoutCreateFlagBits" "VK_PIPELINE_LAYOUT_CREATE_NO_TASK_SHADER_BIT_KHR"
+pattern PIPELINE_LAYOUT_CREATE_NO_TASK_SHADER_BIT_KHR = PipelineLayoutCreateFlagBits 0x00000004
+
+-- No documentation found for Nested "VkPipelineLayoutCreateFlagBits" "VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT"
 pattern PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT = PipelineLayoutCreateFlagBits 0x00000002
 
 conNamePipelineLayoutCreateFlagBits :: String
 conNamePipelineLayoutCreateFlagBits = "PipelineLayoutCreateFlagBits"
 
 enumPrefixPipelineLayoutCreateFlagBits :: String
-enumPrefixPipelineLayoutCreateFlagBits = "PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT"
+enumPrefixPipelineLayoutCreateFlagBits = "PIPELINE_LAYOUT_CREATE_"
 
 showTablePipelineLayoutCreateFlagBits :: [(PipelineLayoutCreateFlagBits, String)]
 showTablePipelineLayoutCreateFlagBits =
   [
+    ( PIPELINE_LAYOUT_CREATE_NO_TASK_SHADER_BIT_KHR
+    , "NO_TASK_SHADER_BIT_KHR"
+    )
+  ,
     ( PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT
-    , ""
+    , "INDEPENDENT_SETS_BIT_EXT"
     )
   ]
 
diff --git a/src/Vulkan/Core10/Enums/PipelineMultisampleStateCreateFlags.hs b/src/Vulkan/Core10/Enums/PipelineMultisampleStateCreateFlags.hs
--- a/src/Vulkan/Core10/Enums/PipelineMultisampleStateCreateFlags.hs
+++ b/src/Vulkan/Core10/Enums/PipelineMultisampleStateCreateFlags.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.FundamentalTypes.Flags',
--- 'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineMultisampleStateCreateInfo'
 newtype PipelineMultisampleStateCreateFlags = PipelineMultisampleStateCreateFlags Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
diff --git a/src/Vulkan/Core10/Enums/PipelineRasterizationStateCreateFlags.hs b/src/Vulkan/Core10/Enums/PipelineRasterizationStateCreateFlags.hs
--- a/src/Vulkan/Core10/Enums/PipelineRasterizationStateCreateFlags.hs
+++ b/src/Vulkan/Core10/Enums/PipelineRasterizationStateCreateFlags.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.FundamentalTypes.Flags',
--- 'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo'
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineRasterizationStateCreateInfo'
 newtype PipelineRasterizationStateCreateFlags = PipelineRasterizationStateCreateFlags Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
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
@@ -25,19 +25,28 @@
 --
 -- = Description
 --
+-- -   'PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT'
+--     specifies that the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-sgs SubgroupSize>
+--     /may/ vary in the shader stage.
+--
+-- -   'PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT' specifies
+--     that the subgroup sizes /must/ be launched with all invocations
+--     active in the task, mesh, or compute stage.
+--
 -- 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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-minSubgroupSize minSubgroupSize>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-minSubgroupSize minSubgroupSize>
 -- does not equal
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxSubgroupSize maxSubgroupSize>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxSubgroupSize maxSubgroupSize>
 -- and no
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-required-subgroup-size required subgroup size>
+-- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-sgs SubgroupSize>
+-- <https://registry.khronos.org/vulkan/specs/latest/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 +57,10 @@
 newtype PipelineShaderStageCreateFlagBits = PipelineShaderStageCreateFlagBits Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT' specifies that
--- the subgroup sizes /must/ be launched with all invocations active in the
--- task, mesh, or compute stage.
+-- No documentation found for Nested "VkPipelineShaderStageCreateFlagBits" "VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT"
 pattern PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT = PipelineShaderStageCreateFlagBits 0x00000002
 
--- | 'PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT' specifies
--- that the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-sgs SubgroupSize>
--- /may/ vary in the shader stage.
+-- No documentation found for Nested "VkPipelineShaderStageCreateFlagBits" "VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT"
 pattern PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT = PipelineShaderStageCreateFlagBits 0x00000001
 
 conNamePipelineShaderStageCreateFlagBits :: String
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,9 +18,9 @@
                                                                          , PIPELINE_STAGE_HOST_BIT
                                                                          , PIPELINE_STAGE_ALL_GRAPHICS_BIT
                                                                          , PIPELINE_STAGE_ALL_COMMANDS_BIT
+                                                                         , PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_EXT
                                                                          , PIPELINE_STAGE_MESH_SHADER_BIT_EXT
                                                                          , PIPELINE_STAGE_TASK_SHADER_BIT_EXT
-                                                                         , PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV
                                                                          , PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
                                                                          , PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT
                                                                          , PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR
@@ -52,6 +52,199 @@
 -- These values all have the same meaning as the equivalently named values
 -- for 'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlags2'.
 --
+-- -   'PIPELINE_STAGE_NONE' specifies no stages of execution.
+--
+-- -   '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'.
+--     This stage also includes reading commands written by
+--     'Vulkan.Extensions.VK_EXT_device_generated_commands.cmdExecuteGeneratedCommandsEXT'.
+--
+-- -   'PIPELINE_STAGE_TASK_SHADER_BIT_EXT' specifies the task shader
+--     stage.
+--
+-- -   'PIPELINE_STAGE_MESH_SHADER_BIT_EXT' specifies the mesh shader
+--     stage.
+--
+-- -   'PIPELINE_STAGE_VERTEX_INPUT_BIT' specifies the stage of the
+--     pipeline where vertex and index buffers are consumed.
+--
+-- -   'PIPELINE_STAGE_VERTEX_SHADER_BIT' specifies the vertex shader
+--     stage.
+--
+-- -   'PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT' specifies the
+--     tessellation control shader stage.
+--
+-- -   'PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT' specifies the
+--     tessellation evaluation shader stage.
+--
+-- -   'PIPELINE_STAGE_GEOMETRY_SHADER_BIT' specifies the geometry shader
+--     stage.
+--
+-- -   'PIPELINE_STAGE_FRAGMENT_SHADER_BIT' specifies the fragment shader
+--     stage.
+--
+-- -   '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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-load-operations render pass load operations>
+--     for framebuffer attachments with a depth\/stencil format.
+--
+-- -   '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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-store-operations render pass store operations>
+--     for framebuffer attachments with a depth\/stencil format.
+--
+-- -   '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 includes
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#framebuffer-blending blending>,
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#framebuffer-logicop logic operations>,
+--     render pass
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-load-operations load>
+--     and
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-store-operations store>
+--     operations for color attachments,
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-resolve-operations render pass multisample resolve operations>,
+--     and 'Vulkan.Core10.CommandBufferBuilding.cmdClearAttachments'.
+--
+-- -   'PIPELINE_STAGE_COMPUTE_SHADER_BIT' specifies the execution of a
+--     compute shader.
+--
+-- -   #synchronization-pipeline-stages-transfer#
+--     'PIPELINE_STAGE_TRANSFER_BIT' specifies the following commands:
+--
+--     -   All
+--         <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#copies copy commands>,
+--         including
+--         'Vulkan.Core10.CommandBufferBuilding.cmdCopyQueryPoolResults'
+--
+--     -   'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.cmdBlitImage2'
+--         and 'Vulkan.Core10.CommandBufferBuilding.cmdBlitImage'
+--
+--     -   'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.cmdResolveImage2'
+--         and 'Vulkan.Core10.CommandBufferBuilding.cmdResolveImage'
+--
+--     -   All
+--         <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#clears clear commands>,
+--         with the exception of
+--         'Vulkan.Core10.CommandBufferBuilding.cmdClearAttachments'
+--
+-- -   '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.
+--
+-- -   'PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR' specifies the
+--     execution of
+--     'Vulkan.Extensions.VK_NV_ray_tracing.cmdBuildAccelerationStructureNV',
+--     'Vulkan.Extensions.VK_NV_ray_tracing.cmdCopyAccelerationStructureNV',
+--     'Vulkan.Extensions.VK_NV_ray_tracing.cmdWriteAccelerationStructuresPropertiesNV'
+--     ,
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.cmdBuildAccelerationStructuresKHR',
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.cmdBuildAccelerationStructuresIndirectKHR',
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.cmdCopyAccelerationStructureKHR',
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.cmdCopyAccelerationStructureToMemoryKHR',
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.cmdCopyMemoryToAccelerationStructureKHR',
+--     and
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.cmdWriteAccelerationStructuresPropertiesKHR'.
+--
+-- -   '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'
+--
+-- -   'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MEMORY_DECOMPRESSION_BIT_EXT'
+--     specifies the execution of decompression commands with
+--     'Vulkan.Extensions.VK_EXT_memory_decompression.cmdDecompressMemoryEXT'
+--     and
+--     'Vulkan.Extensions.VK_EXT_memory_decompression.cmdDecompressMemoryIndirectCountEXT'.
+--
+-- -   'PIPELINE_STAGE_ALL_GRAPHICS_BIT' specifies the execution of all
+--     graphics pipeline stages, and is equivalent to the logical OR of:
+--
+--     -   'PIPELINE_STAGE_DRAW_INDIRECT_BIT'
+--
+--     -   'PIPELINE_STAGE_TASK_SHADER_BIT_EXT'
+--
+--     -   'PIPELINE_STAGE_MESH_SHADER_BIT_EXT'
+--
+--     -   'PIPELINE_STAGE_VERTEX_INPUT_BIT'
+--
+--     -   'PIPELINE_STAGE_VERTEX_SHADER_BIT'
+--
+--     -   'PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT'
+--
+--     -   'PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT'
+--
+--     -   'PIPELINE_STAGE_GEOMETRY_SHADER_BIT'
+--
+--     -   'PIPELINE_STAGE_FRAGMENT_SHADER_BIT'
+--
+--     -   'PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT'
+--
+--     -   'PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT'
+--
+--     -   'PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT'
+--
+--     -   'PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT'
+--
+--     -   'PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT'
+--
+--     -   'PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
+--
+--     -   'PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT'
+--
+-- -   'PIPELINE_STAGE_ALL_COMMANDS_BIT' specifies all operations performed
+--     by all commands supported on the queue it is used with.
+--
+-- -   'PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT' specifies the stage
+--     of the pipeline where the predicate of conditional rendering is
+--     consumed.
+--
+-- -   'PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT' specifies the stage of
+--     the pipeline where vertex attribute output values are written to the
+--     transform feedback buffers.
+--
+-- -   'Vulkan.Extensions.VK_NV_device_generated_commands.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.
+--
+-- -   'PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_EXT' specifies the stage of
+--     the pipeline where device-side preprocessing for generated commands
+--     via
+--     'Vulkan.Extensions.VK_EXT_device_generated_commands.cmdPreprocessGeneratedCommandsEXT'
+--     is handled.
+--
+-- -   'PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR' specifies
+--     the stage of the pipeline where the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment>
+--     or
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-shading-rate-image shading rate image>
+--     is read to determine the fragment shading rate for portions of a
+--     rasterized primitive.
+--
+-- -   'PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT' specifies the
+--     stage of the pipeline where the fragment density map is read to
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#fragmentdensitymapops generate the fragment areas>.
+--
+-- -   'PIPELINE_STAGE_TOP_OF_PIPE_BIT' is equivalent to
+--     'PIPELINE_STAGE_ALL_COMMANDS_BIT' with
+--     '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.
+--
+-- -   '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.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -62,207 +255,85 @@
 newtype PipelineStageFlagBits = PipelineStageFlagBits Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'PIPELINE_STAGE_TOP_OF_PIPE_BIT' is equivalent to
--- 'PIPELINE_STAGE_ALL_COMMANDS_BIT' with
--- '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.
+-- No documentation found for Nested "VkPipelineStageFlagBits" "VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT"
 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'.
--- This stage also includes reading commands written by
--- 'Vulkan.Extensions.VK_EXT_device_generated_commands.cmdExecuteGeneratedCommandsEXT'.
+-- No documentation found for Nested "VkPipelineStageFlagBits" "VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT"
 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.
+-- No documentation found for Nested "VkPipelineStageFlagBits" "VK_PIPELINE_STAGE_VERTEX_INPUT_BIT"
 pattern PIPELINE_STAGE_VERTEX_INPUT_BIT = PipelineStageFlagBits 0x00000004
 
--- | 'PIPELINE_STAGE_VERTEX_SHADER_BIT' specifies the vertex shader stage.
+-- No documentation found for Nested "VkPipelineStageFlagBits" "VK_PIPELINE_STAGE_VERTEX_SHADER_BIT"
 pattern PIPELINE_STAGE_VERTEX_SHADER_BIT = PipelineStageFlagBits 0x00000008
 
--- | 'PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT' specifies the
--- tessellation control shader stage.
+-- No documentation found for Nested "VkPipelineStageFlagBits" "VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT"
 pattern PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT = PipelineStageFlagBits 0x00000010
 
--- | 'PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT' specifies the
--- tessellation evaluation shader stage.
+-- No documentation found for Nested "VkPipelineStageFlagBits" "VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT"
 pattern PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT = PipelineStageFlagBits 0x00000020
 
--- | 'PIPELINE_STAGE_GEOMETRY_SHADER_BIT' specifies the geometry shader
--- stage.
+-- No documentation found for Nested "VkPipelineStageFlagBits" "VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT"
 pattern PIPELINE_STAGE_GEOMETRY_SHADER_BIT = PipelineStageFlagBits 0x00000040
 
--- | 'PIPELINE_STAGE_FRAGMENT_SHADER_BIT' specifies the fragment shader
--- stage.
+-- No documentation found for Nested "VkPipelineStageFlagBits" "VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT"
 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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-load-operations render pass load operations>
--- for framebuffer attachments with a depth\/stencil format.
+-- No documentation found for Nested "VkPipelineStageFlagBits" "VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT"
 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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-store-operations render pass store operations>
--- for framebuffer attachments with a depth\/stencil format.
+-- No documentation found for Nested "VkPipelineStageFlagBits" "VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT"
 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 includes
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#framebuffer-blending blending>,
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#framebuffer-logicop logic operations>,
--- render pass
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-load-operations load>
--- and
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-store-operations store>
--- operations for color attachments,
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-resolve-operations render pass multisample resolve operations>,
--- and 'Vulkan.Core10.CommandBufferBuilding.cmdClearAttachments'.
+-- No documentation found for Nested "VkPipelineStageFlagBits" "VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT"
 pattern PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT = PipelineStageFlagBits 0x00000400
 
--- | 'PIPELINE_STAGE_COMPUTE_SHADER_BIT' specifies the execution of a compute
--- shader.
+-- No documentation found for Nested "VkPipelineStageFlagBits" "VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT"
 pattern PIPELINE_STAGE_COMPUTE_SHADER_BIT = PipelineStageFlagBits 0x00000800
 
--- | #synchronization-pipeline-stages-transfer# 'PIPELINE_STAGE_TRANSFER_BIT'
--- specifies the following commands:
---
--- -   All
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#copies copy commands>,
---     including
---     'Vulkan.Core10.CommandBufferBuilding.cmdCopyQueryPoolResults'
---
--- -   'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.cmdBlitImage2'
---     and 'Vulkan.Core10.CommandBufferBuilding.cmdBlitImage'
---
--- -   'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.cmdResolveImage2'
---     and 'Vulkan.Core10.CommandBufferBuilding.cmdResolveImage'
---
--- -   All
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#clears clear commands>,
---     with the exception of
---     'Vulkan.Core10.CommandBufferBuilding.cmdClearAttachments'
+-- No documentation found for Nested "VkPipelineStageFlagBits" "VK_PIPELINE_STAGE_TRANSFER_BIT"
 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.
+-- No documentation found for Nested "VkPipelineStageFlagBits" "VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT"
 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.
+-- No documentation found for Nested "VkPipelineStageFlagBits" "VK_PIPELINE_STAGE_HOST_BIT"
 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:
---
--- -   'PIPELINE_STAGE_DRAW_INDIRECT_BIT'
---
--- -   'PIPELINE_STAGE_TASK_SHADER_BIT_EXT'
---
--- -   'PIPELINE_STAGE_MESH_SHADER_BIT_EXT'
---
--- -   'PIPELINE_STAGE_VERTEX_INPUT_BIT'
---
--- -   'PIPELINE_STAGE_VERTEX_SHADER_BIT'
---
--- -   'PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT'
---
--- -   'PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT'
---
--- -   'PIPELINE_STAGE_GEOMETRY_SHADER_BIT'
---
--- -   'PIPELINE_STAGE_FRAGMENT_SHADER_BIT'
---
--- -   'PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT'
---
--- -   'PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT'
---
--- -   'PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT'
---
--- -   'PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT'
---
--- -   'PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT'
---
--- -   'PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
---
--- -   'PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT'
+-- No documentation found for Nested "VkPipelineStageFlagBits" "VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT"
 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.
+-- No documentation found for Nested "VkPipelineStageFlagBits" "VK_PIPELINE_STAGE_ALL_COMMANDS_BIT"
 pattern PIPELINE_STAGE_ALL_COMMANDS_BIT = PipelineStageFlagBits 0x00010000
 
--- | 'PIPELINE_STAGE_MESH_SHADER_BIT_EXT' specifies the mesh shader stage.
+-- No documentation found for Nested "VkPipelineStageFlagBits" "VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_EXT"
+pattern PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_EXT = PipelineStageFlagBits 0x00020000
+
+-- No documentation found for Nested "VkPipelineStageFlagBits" "VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT"
 pattern PIPELINE_STAGE_MESH_SHADER_BIT_EXT = PipelineStageFlagBits 0x00100000
 
--- | 'PIPELINE_STAGE_TASK_SHADER_BIT_EXT' specifies the task shader stage.
+-- No documentation found for Nested "VkPipelineStageFlagBits" "VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT"
 pattern PIPELINE_STAGE_TASK_SHADER_BIT_EXT = PipelineStageFlagBits 0x00080000
 
--- | '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
-
--- | 'PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR' specifies the
--- stage of the pipeline where the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment>
--- or
--- <https://registry.khronos.org/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.
+-- No documentation found for Nested "VkPipelineStageFlagBits" "VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"
 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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#fragmentdensitymapops generate the fragment areas>.
+-- No documentation found for Nested "VkPipelineStageFlagBits" "VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT"
 pattern PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT = PipelineStageFlagBits 0x00800000
 
--- | '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'
+-- No documentation found for Nested "VkPipelineStageFlagBits" "VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR"
 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',
--- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdCopyAccelerationStructureNV',
--- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdWriteAccelerationStructuresPropertiesNV'
--- ,
--- 'Vulkan.Extensions.VK_KHR_acceleration_structure.cmdBuildAccelerationStructuresKHR',
--- 'Vulkan.Extensions.VK_KHR_acceleration_structure.cmdBuildAccelerationStructuresIndirectKHR',
--- 'Vulkan.Extensions.VK_KHR_acceleration_structure.cmdCopyAccelerationStructureKHR',
--- 'Vulkan.Extensions.VK_KHR_acceleration_structure.cmdCopyAccelerationStructureToMemoryKHR',
--- 'Vulkan.Extensions.VK_KHR_acceleration_structure.cmdCopyMemoryToAccelerationStructureKHR',
--- and
--- 'Vulkan.Extensions.VK_KHR_acceleration_structure.cmdWriteAccelerationStructuresPropertiesKHR'.
+-- No documentation found for Nested "VkPipelineStageFlagBits" "VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR"
 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.
+-- No documentation found for Nested "VkPipelineStageFlagBits" "VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT"
 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.
+-- No documentation found for Nested "VkPipelineStageFlagBits" "VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT"
 pattern PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT = PipelineStageFlagBits 0x01000000
 
--- | 'PIPELINE_STAGE_NONE' specifies no stages of execution.
+-- No documentation found for Nested "VkPipelineStageFlagBits" "VK_PIPELINE_STAGE_NONE"
 pattern PIPELINE_STAGE_NONE = PipelineStageFlagBits 0x00000000
 
 conNamePipelineStageFlagBits :: String
@@ -336,16 +407,16 @@
     , "ALL_COMMANDS_BIT"
     )
   ,
+    ( PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_EXT
+    , "COMMAND_PREPROCESS_BIT_EXT"
+    )
+  ,
     ( PIPELINE_STAGE_MESH_SHADER_BIT_EXT
     , "MESH_SHADER_BIT_EXT"
     )
   ,
     ( PIPELINE_STAGE_TASK_SHADER_BIT_EXT
     , "TASK_SHADER_BIT_EXT"
-    )
-  ,
-    ( PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV
-    , "COMMAND_PREPROCESS_BIT_NV"
     )
   ,
     ( PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
diff --git a/src/Vulkan/Core10/Enums/PipelineTessellationStateCreateFlags.hs b/src/Vulkan/Core10/Enums/PipelineTessellationStateCreateFlags.hs
--- a/src/Vulkan/Core10/Enums/PipelineTessellationStateCreateFlags.hs
+++ b/src/Vulkan/Core10/Enums/PipelineTessellationStateCreateFlags.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.FundamentalTypes.Flags',
--- 'Vulkan.Core10.Pipeline.PipelineTessellationStateCreateInfo'
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineTessellationStateCreateInfo'
 newtype PipelineTessellationStateCreateFlags = PipelineTessellationStateCreateFlags Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
diff --git a/src/Vulkan/Core10/Enums/PipelineVertexInputStateCreateFlags.hs b/src/Vulkan/Core10/Enums/PipelineVertexInputStateCreateFlags.hs
--- a/src/Vulkan/Core10/Enums/PipelineVertexInputStateCreateFlags.hs
+++ b/src/Vulkan/Core10/Enums/PipelineVertexInputStateCreateFlags.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.FundamentalTypes.Flags',
--- 'Vulkan.Core10.Pipeline.PipelineVertexInputStateCreateInfo'
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineVertexInputStateCreateInfo'
 newtype PipelineVertexInputStateCreateFlags = PipelineVertexInputStateCreateFlags Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
diff --git a/src/Vulkan/Core10/Enums/PipelineViewportStateCreateFlags.hs b/src/Vulkan/Core10/Enums/PipelineViewportStateCreateFlags.hs
--- a/src/Vulkan/Core10/Enums/PipelineViewportStateCreateFlags.hs
+++ b/src/Vulkan/Core10/Enums/PipelineViewportStateCreateFlags.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.FundamentalTypes.Flags',
--- 'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineViewportStateCreateInfo'
 newtype PipelineViewportStateCreateFlags = PipelineViewportStateCreateFlags Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
diff --git a/src/Vulkan/Core10/Enums/PolygonMode.hs b/src/Vulkan/Core10/Enums/PolygonMode.hs
--- a/src/Vulkan/Core10/Enums/PolygonMode.hs
+++ b/src/Vulkan/Core10/Enums/PolygonMode.hs
@@ -20,62 +20,70 @@
 --
 -- = Description
 --
+-- -   'POLYGON_MODE_POINT' specifies that polygon vertices are drawn as
+--     points.
+--
+-- -   'POLYGON_MODE_LINE' specifies that polygon edges are drawn as line
+--     segments.
+--
+-- -   'POLYGON_MODE_FILL' specifies that polygons are rendered using the
+--     polygon rasterization rules in this section.
+--
+-- -   'POLYGON_MODE_FILL_RECTANGLE_NV' specifies that polygons are
+--     rendered using polygon rasterization rules, modified to consider a
+--     sample within the primitive if the sample location is inside the
+--     axis-aligned bounding box of the triangle after projection. Note
+--     that the barycentric weights used in attribute interpolation /can/
+--     extend outside the range [0,1] when these primitives are shaded.
+--     Special treatment is given to a sample position on the boundary edge
+--     of the bounding box. In such a case, if two rectangles lie on either
+--     side of a common edge (with identical endpoints) on which a sample
+--     position lies, then exactly one of the triangles /must/ produce a
+--     fragment that covers that sample during rasterization.
+--
+--     Polygons rendered in 'POLYGON_MODE_FILL_RECTANGLE_NV' mode /may/ be
+--     clipped by the frustum or by user clip planes. If clipping is
+--     applied, the triangle is culled rather than clipped.
+--
+--     Area calculation and facingness are determined for
+--     'POLYGON_MODE_FILL_RECTANGLE_NV' mode using the triangle’s vertices.
+--
 -- These modes affect only the final rasterization of polygons: in
 -- particular, a polygon’s vertices are shaded and the polygon is clipped
 -- and possibly culled before these modes are applied.
 --
 -- If
--- 'Vulkan.Extensions.VK_KHR_maintenance5.PhysicalDeviceMaintenance5PropertiesKHR'::@polygonModePointSize@
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.PhysicalDeviceMaintenance5Properties'::@polygonModePointSize@
 -- is 'Vulkan.Core10.FundamentalTypes.TRUE', the point size of the final
 -- rasterization of polygons is taken from @PointSize@ when
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-polygonmode polygon mode>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-polygonmode polygon mode>
 -- is 'POLYGON_MODE_POINT'.
 --
 -- Otherwise, if
--- 'Vulkan.Extensions.VK_KHR_maintenance5.PhysicalDeviceMaintenance5PropertiesKHR'::@polygonModePointSize@
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.PhysicalDeviceMaintenance5Properties'::@polygonModePointSize@
 -- is 'Vulkan.Core10.FundamentalTypes.FALSE', the point size of the final
 -- rasterization of polygons is 1.0 when
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-polygonmode polygon mode>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-polygonmode polygon mode>
 -- is 'POLYGON_MODE_POINT'.
 --
 -- = 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.Pipeline.PipelineRasterizationStateCreateInfo',
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineRasterizationStateCreateInfo',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
 newtype PolygonMode = PolygonMode Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'POLYGON_MODE_FILL' specifies that polygons are rendered using the
--- polygon rasterization rules in this section.
+-- No documentation found for Nested "VkPolygonMode" "VK_POLYGON_MODE_FILL"
 pattern POLYGON_MODE_FILL = PolygonMode 0
 
--- | 'POLYGON_MODE_LINE' specifies that polygon edges are drawn as line
--- segments.
+-- No documentation found for Nested "VkPolygonMode" "VK_POLYGON_MODE_LINE"
 pattern POLYGON_MODE_LINE = PolygonMode 1
 
--- | 'POLYGON_MODE_POINT' specifies that polygon vertices are drawn as
--- points.
+-- No documentation found for Nested "VkPolygonMode" "VK_POLYGON_MODE_POINT"
 pattern POLYGON_MODE_POINT = PolygonMode 2
 
--- | 'POLYGON_MODE_FILL_RECTANGLE_NV' specifies that polygons are rendered
--- using polygon rasterization rules, modified to consider a sample within
--- the primitive if the sample location is inside the axis-aligned bounding
--- box of the triangle after projection. Note that the barycentric weights
--- used in attribute interpolation /can/ extend outside the range [0,1]
--- when these primitives are shaded. Special treatment is given to a sample
--- position on the boundary edge of the bounding box. In such a case, if
--- two rectangles lie on either side of a common edge (with identical
--- endpoints) on which a sample position lies, then exactly one of the
--- triangles /must/ produce a fragment that covers that sample during
--- rasterization.
---
--- Polygons rendered in 'POLYGON_MODE_FILL_RECTANGLE_NV' mode /may/ be
--- clipped by the frustum or by user clip planes. If clipping is applied,
--- the triangle is culled rather than clipped.
---
--- Area calculation and facingness are determined for
--- 'POLYGON_MODE_FILL_RECTANGLE_NV' mode using the triangle’s vertices.
+-- No documentation found for Nested "VkPolygonMode" "VK_POLYGON_MODE_FILL_RECTANGLE_NV"
 pattern POLYGON_MODE_FILL_RECTANGLE_NV = PolygonMode 1000153000
 
 {-# COMPLETE
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
@@ -27,29 +27,73 @@
 --
 -- = Description
 --
+-- -   'PRIMITIVE_TOPOLOGY_POINT_LIST' specifies a series of
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#drawing-point-lists separate point primitives>.
+--
+-- -   'PRIMITIVE_TOPOLOGY_LINE_LIST' specifies a series of
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#drawing-line-lists separate line primitives>.
+--
+-- -   'PRIMITIVE_TOPOLOGY_LINE_STRIP' specifies a series of
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#drawing-line-strips connected line primitives>
+--     with consecutive lines sharing a vertex.
+--
+-- -   'PRIMITIVE_TOPOLOGY_TRIANGLE_LIST' specifies a series of
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#drawing-triangle-lists separate triangle primitives>.
+--
+-- -   'PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP' specifies a series of
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#drawing-triangle-strips connected triangle primitives>
+--     with consecutive triangles sharing an edge.
+--
+-- -   'PRIMITIVE_TOPOLOGY_TRIANGLE_FAN' specifies a series of
+--     <https://registry.khronos.org/vulkan/specs/latest/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@
+--     is 'Vulkan.Core10.FundamentalTypes.FALSE', then triangle fans are
+--     not supported by the implementation, and
+--     'PRIMITIVE_TOPOLOGY_TRIANGLE_FAN' /must/ not be used.
+--
+-- -   'PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY' specifies a series of
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#drawing-line-lists-with-adjacency separate line primitives with adjacency>.
+--
+-- -   'PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY' specifies a series of
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#drawing-line-strips-with-adjacency connected line primitives with adjacency>,
+--     with consecutive primitives sharing three vertices.
+--
+-- -   'PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY' specifies a series
+--     of
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#drawing-triangle-lists-with-adjacency separate triangle primitives with adjacency>.
+--
+-- -   'PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY' specifies
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#drawing-triangle-strips-with-adjacency connected triangle primitives with adjacency>,
+--     with consecutive triangles sharing an edge.
+--
+-- -   'PRIMITIVE_TOPOLOGY_PATCH_LIST' specifies
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#drawing-patch-lists separate patch primitives>.
+--
 -- Each primitive topology, and its construction from a list of vertices,
 -- is described in detail below with a supporting diagram, according to the
 -- following key:
 --
--- +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------+----------------------------------------------------------------------------------------------------------------------------+
--- | <<data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiCiAgIHhtbG5zOmlua3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIgogICB3aWR0aD0iOC45ODE3ODY3IgogICBoZWlnaHQ9IjguOTgxNzg2NyIKICAgdmlld0JveD0iMCAwIDguOTgxNzg2OCA4Ljk4MTc4NyIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0ic3ZnODY1MyIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC45Mi40ICg1ZGE2ODljMzEzLCAyMDE5LTAxLTE0KSIKICAgc29kaXBvZGk6ZG9jbmFtZT0icHJpbWl0aXZlX3RvcG9sb2d5X2tleV92ZXJ0ZXguc3ZnIj4KICA8ZGVmcwogICAgIGlkPSJkZWZzODY0NyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgaWQ9ImJhc2UiCiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEuMCIKICAgICBpbmtzY2FwZTpwYWdlb3BhY2l0eT0iMC4wIgogICAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiCiAgICAgaW5rc2NhcGU6em9vbT0iMi44Mjg0MjcxIgogICAgIGlua3NjYXBlOmN4PSIxMDAuMjYxNiIKICAgICBpbmtzY2FwZTpjeT0iLTEwNC40NTE0NyIKICAgICBpbmtzY2FwZTpkb2N1bWVudC11bml0cz0icHgiCiAgICAgaW5rc2NhcGU6Y3VycmVudC1sYXllcj0ibGF5ZXIxIgogICAgIHNob3dncmlkPSJ0cnVlIgogICAgIGlua3NjYXBlOndpbmRvdy13aWR0aD0iMTkyMCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSIxMDAxIgogICAgIGlua3NjYXBlOndpbmRvdy14PSItOSIKICAgICBpbmtzY2FwZTp3aW5kb3cteT0iLTkiCiAgICAgaW5rc2NhcGU6d2luZG93LW1heGltaXplZD0iMCIKICAgICBmaXQtbWFyZ2luLXRvcD0iMSIKICAgICBmaXQtbWFyZ2luLWxlZnQ9IjEiCiAgICAgZml0LW1hcmdpbi1yaWdodD0iMSIKICAgICBmaXQtbWFyZ2luLWJvdHRvbT0iMSIKICAgICBpbmtzY2FwZTpzbmFwLWdyaWRzPSJ0cnVlIgogICAgIGlua3NjYXBlOnNuYXAtdGV4dC1iYXNlbGluZT0idHJ1ZSIKICAgICBpbmtzY2FwZTpzbmFwLW9iamVjdC1taWRwb2ludHM9InRydWUiCiAgICAgdW5pdHM9InB4IgogICAgIGJvcmRlcmxheWVyPSJmYWxzZSI+CiAgICA8aW5rc2NhcGU6Z3JpZAogICAgICAgdHlwZT0ieHlncmlkIgogICAgICAgaWQ9ImdyaWQ5NjI2IgogICAgICAgb3JpZ2lueD0iLTkwLjUwOTExIgogICAgICAgb3JpZ2lueT0iLTY0NS41MDkyMiIgLz4KICA8L3NvZGlwb2RpOm5hbWVkdmlldz4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGE4NjUwIj4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICAgIDxkYzp0aXRsZSAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZwogICAgIGlua3NjYXBlOmxhYmVsPSJMYXllciAxIgogICAgIGlua3NjYXBlOmdyb3VwbW9kZT0ibGF5ZXIiCiAgICAgaWQ9ImxheWVyMSIKICAgICB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTAzLjA0MzUsMjMyLjUyNikiPgogICAgPGNpcmNsZQogICAgICAgc3R5bGU9ImZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MTtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIgogICAgICAgaWQ9InBhdGg0NTE3LTAtOC01LTItMyIKICAgICAgIGN4PSIxMDcuNTM0MzkiCiAgICAgICBjeT0iLTIyOC4wMzUxMSIKICAgICAgIHI9IjMuNDkwODkzMSIgLz4KICA8L2c+Cjwvc3ZnPgo= primitive topology key vertex>>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | Vertex    | A point in 3-dimensional space. Positions chosen within the diagrams are arbitrary and for illustration only.              |
--- +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------+----------------------------------------------------------------------------------------------------------------------------+
--- | <<data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiCiAgIHhtbG5zOmlua3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIgogICB3aWR0aD0iOS41NzgxMjUiCiAgIGhlaWdodD0iMTMuODc1IgogICB2aWV3Qm94PSIwIDAgOS41NzgxMjUxIDEzLjg3NSIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0ic3ZnODY1MyIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC45Mi40ICg1ZGE2ODljMzEzLCAyMDE5LTAxLTE0KSIKICAgc29kaXBvZGk6ZG9jbmFtZT0icHJpbWl0aXZlX3RvcG9sb2d5X2tleV92ZXJ0ZXhfbnVtYmVyLnN2ZyI+CiAgPGRlZnMKICAgICBpZD0iZGVmczg2NDciIC8+CiAgPHNvZGlwb2RpOm5hbWVkdmlldwogICAgIGlkPSJiYXNlIgogICAgIHBhZ2Vjb2xvcj0iI2ZmZmZmZiIKICAgICBib3JkZXJjb2xvcj0iIzY2NjY2NiIKICAgICBib3JkZXJvcGFjaXR5PSIxLjAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAuMCIKICAgICBpbmtzY2FwZTpwYWdlc2hhZG93PSIyIgogICAgIGlua3NjYXBlOnpvb209IjIuODI4NDI3MSIKICAgICBpbmtzY2FwZTpjeD0iNzguNTg2NDQiCiAgICAgaW5rc2NhcGU6Y3k9Ii02OS41NjgzODgiCiAgICAgaW5rc2NhcGU6ZG9jdW1lbnQtdW5pdHM9InB4IgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9ImxheWVyMSIKICAgICBzaG93Z3JpZD0idHJ1ZSIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjE5MjAiCiAgICAgaW5rc2NhcGU6d2luZG93LWhlaWdodD0iMTAwMSIKICAgICBpbmtzY2FwZTp3aW5kb3cteD0iLTkiCiAgICAgaW5rc2NhcGU6d2luZG93LXk9Ii05IgogICAgIGlua3NjYXBlOndpbmRvdy1tYXhpbWl6ZWQ9IjAiCiAgICAgZml0LW1hcmdpbi10b3A9IjEiCiAgICAgZml0LW1hcmdpbi1sZWZ0PSIxIgogICAgIGZpdC1tYXJnaW4tcmlnaHQ9IjEiCiAgICAgZml0LW1hcmdpbi1ib3R0b209IjEiCiAgICAgaW5rc2NhcGU6c25hcC1ncmlkcz0idHJ1ZSIKICAgICBpbmtzY2FwZTpzbmFwLXRleHQtYmFzZWxpbmU9InRydWUiCiAgICAgaW5rc2NhcGU6c25hcC1vYmplY3QtbWlkcG9pbnRzPSJ0cnVlIgogICAgIHVuaXRzPSJweCIKICAgICBib3JkZXJsYXllcj0iZmFsc2UiPgogICAgPGlua3NjYXBlOmdyaWQKICAgICAgIHR5cGU9Inh5Z3JpZCIKICAgICAgIGlkPSJncmlkOTYyNiIKICAgICAgIG9yaWdpbng9Ii05MC4zNjcxOTEiCiAgICAgICBvcmlnaW55PSItNjE4Ljc1Nzg0IiAvPgogIDwvc29kaXBvZGk6bmFtZWR2aWV3PgogIDxtZXRhZGF0YQogICAgIGlkPSJtZXRhZGF0YTg2NTAiPgogICAgPHJkZjpSREY+CiAgICAgIDxjYzpXb3JrCiAgICAgICAgIHJkZjphYm91dD0iIj4KICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3N2Zyt4bWw8L2RjOmZvcm1hdD4KICAgICAgICA8ZGM6dHlwZQogICAgICAgICAgIHJkZjpyZXNvdXJjZT0iaHR0cDovL3B1cmwub3JnL2RjL2RjbWl0eXBlL1N0aWxsSW1hZ2UiIC8+CiAgICAgICAgPGRjOnRpdGxlPjwvZGM6dGl0bGU+CiAgICAgIDwvY2M6V29yaz4KICAgIDwvcmRmOlJERj4KICA8L21ldGFkYXRhPgogIDxnCiAgICAgaW5rc2NhcGU6bGFiZWw9IkxheWVyIDEiCiAgICAgaW5rc2NhcGU6Z3JvdXBtb2RlPSJsYXllciIKICAgICBpZD0ibGF5ZXIxIgogICAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xMDIuOTAxNTgsMjEwLjY2Nzg2KSI+CiAgICA8dGV4dAogICAgICAgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIKICAgICAgIHN0eWxlPSJmb250LXN0eWxlOm5vcm1hbDtmb250LXZhcmlhbnQ6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXN0cmV0Y2g6bm9ybWFsO2ZvbnQtc2l6ZToxNnB4O2xpbmUtaGVpZ2h0OjEuMjU7Zm9udC1mYW1pbHk6c2Fucy1zZXJpZjstaW5rc2NhcGUtZm9udC1zcGVjaWZpY2F0aW9uOidzYW5zLXNlcmlmLCBOb3JtYWwnO2ZvbnQtdmFyaWFudC1saWdhdHVyZXM6bm9ybWFsO2ZvbnQtdmFyaWFudC1jYXBzOm5vcm1hbDtmb250LXZhcmlhbnQtbnVtZXJpYzpub3JtYWw7Zm9udC1mZWF0dXJlLXNldHRpbmdzOm5vcm1hbDt0ZXh0LWFsaWduOmNlbnRlcjtsZXR0ZXItc3BhY2luZzowcHg7d29yZC1zcGFjaW5nOjBweDt3cml0aW5nLW1vZGU6bHItdGI7dGV4dC1hbmNob3I6bWlkZGxlO2ZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MS4xNjQyNzM5OCIKICAgICAgIHg9IjEwNy41MzQzOSIKICAgICAgIHk9Ii0xOTguMDM1MDUiCiAgICAgICBpZD0idGV4dDUwNzAtMi0yLTktOS00MS05Ij48dHNwYW4KICAgICAgICAgc29kaXBvZGk6cm9sZT0ibGluZSIKICAgICAgICAgaWQ9InRzcGFuNTA2OC0wLTMtMzYtOS0xLTUiCiAgICAgICAgIHg9IjEwNy41MzQzOSIKICAgICAgICAgeT0iLTE5OC4wMzUwNSIKICAgICAgICAgc3R5bGU9ImZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtdmFyaWFudDpub3JtYWw7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZvbnQtc3RyZXRjaDpub3JtYWw7Zm9udC1zaXplOjE2cHg7Zm9udC1mYW1pbHk6c2Fucy1zZXJpZjstaW5rc2NhcGUtZm9udC1zcGVjaWZpY2F0aW9uOidzYW5zLXNlcmlmLCBOb3JtYWwnO2ZvbnQtdmFyaWFudC1saWdhdHVyZXM6bm9ybWFsO2ZvbnQtdmFyaWFudC1jYXBzOm5vcm1hbDtmb250LXZhcmlhbnQtbnVtZXJpYzpub3JtYWw7Zm9udC1mZWF0dXJlLXNldHRpbmdzOm5vcm1hbDt0ZXh0LWFsaWduOmNlbnRlcjt3cml0aW5nLW1vZGU6bHItdGI7dGV4dC1hbmNob3I6bWlkZGxlO2ZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtzdHJva2Utd2lkdGg6MS4xNjQyNzM5OCI+NTwvdHNwYW4+PC90ZXh0PgogIDwvZz4KPC9zdmc+Cg== primitive topology key vertex number>>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | Vertex    | Sequence position of a vertex within the provided vertex data.                                                             |
--- |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | Number    |                                                                                                                            |
--- +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------+----------------------------------------------------------------------------------------------------------------------------+
--- | <<data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+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://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-polygons-basic facing determination>. |
--- |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |           | This ordering has no specific start or end point.                                                                          |
--- +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------+----------------------------------------------------------------------------------------------------------------------------+
+-- +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------+--------------------------------------------------------------------------------------------------------------------+
+-- | <<data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiCiAgIHhtbG5zOmlua3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIgogICB3aWR0aD0iOC45ODE3ODY3IgogICBoZWlnaHQ9IjguOTgxNzg2NyIKICAgdmlld0JveD0iMCAwIDguOTgxNzg2OCA4Ljk4MTc4NyIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0ic3ZnODY1MyIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC45Mi40ICg1ZGE2ODljMzEzLCAyMDE5LTAxLTE0KSIKICAgc29kaXBvZGk6ZG9jbmFtZT0icHJpbWl0aXZlX3RvcG9sb2d5X2tleV92ZXJ0ZXguc3ZnIj4KICA8ZGVmcwogICAgIGlkPSJkZWZzODY0NyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgaWQ9ImJhc2UiCiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEuMCIKICAgICBpbmtzY2FwZTpwYWdlb3BhY2l0eT0iMC4wIgogICAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiCiAgICAgaW5rc2NhcGU6em9vbT0iMi44Mjg0MjcxIgogICAgIGlua3NjYXBlOmN4PSIxMDAuMjYxNiIKICAgICBpbmtzY2FwZTpjeT0iLTEwNC40NTE0NyIKICAgICBpbmtzY2FwZTpkb2N1bWVudC11bml0cz0icHgiCiAgICAgaW5rc2NhcGU6Y3VycmVudC1sYXllcj0ibGF5ZXIxIgogICAgIHNob3dncmlkPSJ0cnVlIgogICAgIGlua3NjYXBlOndpbmRvdy13aWR0aD0iMTkyMCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSIxMDAxIgogICAgIGlua3NjYXBlOndpbmRvdy14PSItOSIKICAgICBpbmtzY2FwZTp3aW5kb3cteT0iLTkiCiAgICAgaW5rc2NhcGU6d2luZG93LW1heGltaXplZD0iMCIKICAgICBmaXQtbWFyZ2luLXRvcD0iMSIKICAgICBmaXQtbWFyZ2luLWxlZnQ9IjEiCiAgICAgZml0LW1hcmdpbi1yaWdodD0iMSIKICAgICBmaXQtbWFyZ2luLWJvdHRvbT0iMSIKICAgICBpbmtzY2FwZTpzbmFwLWdyaWRzPSJ0cnVlIgogICAgIGlua3NjYXBlOnNuYXAtdGV4dC1iYXNlbGluZT0idHJ1ZSIKICAgICBpbmtzY2FwZTpzbmFwLW9iamVjdC1taWRwb2ludHM9InRydWUiCiAgICAgdW5pdHM9InB4IgogICAgIGJvcmRlcmxheWVyPSJmYWxzZSI+CiAgICA8aW5rc2NhcGU6Z3JpZAogICAgICAgdHlwZT0ieHlncmlkIgogICAgICAgaWQ9ImdyaWQ5NjI2IgogICAgICAgb3JpZ2lueD0iLTkwLjUwOTExIgogICAgICAgb3JpZ2lueT0iLTY0NS41MDkyMiIgLz4KICA8L3NvZGlwb2RpOm5hbWVkdmlldz4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGE4NjUwIj4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICAgIDxkYzp0aXRsZSAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZwogICAgIGlua3NjYXBlOmxhYmVsPSJMYXllciAxIgogICAgIGlua3NjYXBlOmdyb3VwbW9kZT0ibGF5ZXIiCiAgICAgaWQ9ImxheWVyMSIKICAgICB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTAzLjA0MzUsMjMyLjUyNikiPgogICAgPGNpcmNsZQogICAgICAgc3R5bGU9ImZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MTtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIgogICAgICAgaWQ9InBhdGg0NTE3LTAtOC01LTItMyIKICAgICAgIGN4PSIxMDcuNTM0MzkiCiAgICAgICBjeT0iLTIyOC4wMzUxMSIKICAgICAgIHI9IjMuNDkwODkzMSIgLz4KICA8L2c+Cjwvc3ZnPgo= primitive topology key vertex>>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | Vertex    | A point in 3-dimensional space. Positions chosen within the diagrams are arbitrary and for illustration only.      |
+-- +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------+--------------------------------------------------------------------------------------------------------------------+
+-- | <<data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiCiAgIHhtbG5zOmlua3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIgogICB3aWR0aD0iOS41NzgxMjUiCiAgIGhlaWdodD0iMTMuODc1IgogICB2aWV3Qm94PSIwIDAgOS41NzgxMjUxIDEzLjg3NSIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0ic3ZnODY1MyIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC45Mi40ICg1ZGE2ODljMzEzLCAyMDE5LTAxLTE0KSIKICAgc29kaXBvZGk6ZG9jbmFtZT0icHJpbWl0aXZlX3RvcG9sb2d5X2tleV92ZXJ0ZXhfbnVtYmVyLnN2ZyI+CiAgPGRlZnMKICAgICBpZD0iZGVmczg2NDciIC8+CiAgPHNvZGlwb2RpOm5hbWVkdmlldwogICAgIGlkPSJiYXNlIgogICAgIHBhZ2Vjb2xvcj0iI2ZmZmZmZiIKICAgICBib3JkZXJjb2xvcj0iIzY2NjY2NiIKICAgICBib3JkZXJvcGFjaXR5PSIxLjAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAuMCIKICAgICBpbmtzY2FwZTpwYWdlc2hhZG93PSIyIgogICAgIGlua3NjYXBlOnpvb209IjIuODI4NDI3MSIKICAgICBpbmtzY2FwZTpjeD0iNzguNTg2NDQiCiAgICAgaW5rc2NhcGU6Y3k9Ii02OS41NjgzODgiCiAgICAgaW5rc2NhcGU6ZG9jdW1lbnQtdW5pdHM9InB4IgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9ImxheWVyMSIKICAgICBzaG93Z3JpZD0idHJ1ZSIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjE5MjAiCiAgICAgaW5rc2NhcGU6d2luZG93LWhlaWdodD0iMTAwMSIKICAgICBpbmtzY2FwZTp3aW5kb3cteD0iLTkiCiAgICAgaW5rc2NhcGU6d2luZG93LXk9Ii05IgogICAgIGlua3NjYXBlOndpbmRvdy1tYXhpbWl6ZWQ9IjAiCiAgICAgZml0LW1hcmdpbi10b3A9IjEiCiAgICAgZml0LW1hcmdpbi1sZWZ0PSIxIgogICAgIGZpdC1tYXJnaW4tcmlnaHQ9IjEiCiAgICAgZml0LW1hcmdpbi1ib3R0b209IjEiCiAgICAgaW5rc2NhcGU6c25hcC1ncmlkcz0idHJ1ZSIKICAgICBpbmtzY2FwZTpzbmFwLXRleHQtYmFzZWxpbmU9InRydWUiCiAgICAgaW5rc2NhcGU6c25hcC1vYmplY3QtbWlkcG9pbnRzPSJ0cnVlIgogICAgIHVuaXRzPSJweCIKICAgICBib3JkZXJsYXllcj0iZmFsc2UiPgogICAgPGlua3NjYXBlOmdyaWQKICAgICAgIHR5cGU9Inh5Z3JpZCIKICAgICAgIGlkPSJncmlkOTYyNiIKICAgICAgIG9yaWdpbng9Ii05MC4zNjcxOTEiCiAgICAgICBvcmlnaW55PSItNjE4Ljc1Nzg0IiAvPgogIDwvc29kaXBvZGk6bmFtZWR2aWV3PgogIDxtZXRhZGF0YQogICAgIGlkPSJtZXRhZGF0YTg2NTAiPgogICAgPHJkZjpSREY+CiAgICAgIDxjYzpXb3JrCiAgICAgICAgIHJkZjphYm91dD0iIj4KICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3N2Zyt4bWw8L2RjOmZvcm1hdD4KICAgICAgICA8ZGM6dHlwZQogICAgICAgICAgIHJkZjpyZXNvdXJjZT0iaHR0cDovL3B1cmwub3JnL2RjL2RjbWl0eXBlL1N0aWxsSW1hZ2UiIC8+CiAgICAgICAgPGRjOnRpdGxlPjwvZGM6dGl0bGU+CiAgICAgIDwvY2M6V29yaz4KICAgIDwvcmRmOlJERj4KICA8L21ldGFkYXRhPgogIDxnCiAgICAgaW5rc2NhcGU6bGFiZWw9IkxheWVyIDEiCiAgICAgaW5rc2NhcGU6Z3JvdXBtb2RlPSJsYXllciIKICAgICBpZD0ibGF5ZXIxIgogICAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xMDIuOTAxNTgsMjEwLjY2Nzg2KSI+CiAgICA8dGV4dAogICAgICAgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIKICAgICAgIHN0eWxlPSJmb250LXN0eWxlOm5vcm1hbDtmb250LXZhcmlhbnQ6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXN0cmV0Y2g6bm9ybWFsO2ZvbnQtc2l6ZToxNnB4O2xpbmUtaGVpZ2h0OjEuMjU7Zm9udC1mYW1pbHk6c2Fucy1zZXJpZjstaW5rc2NhcGUtZm9udC1zcGVjaWZpY2F0aW9uOidzYW5zLXNlcmlmLCBOb3JtYWwnO2ZvbnQtdmFyaWFudC1saWdhdHVyZXM6bm9ybWFsO2ZvbnQtdmFyaWFudC1jYXBzOm5vcm1hbDtmb250LXZhcmlhbnQtbnVtZXJpYzpub3JtYWw7Zm9udC1mZWF0dXJlLXNldHRpbmdzOm5vcm1hbDt0ZXh0LWFsaWduOmNlbnRlcjtsZXR0ZXItc3BhY2luZzowcHg7d29yZC1zcGFjaW5nOjBweDt3cml0aW5nLW1vZGU6bHItdGI7dGV4dC1hbmNob3I6bWlkZGxlO2ZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MS4xNjQyNzM5OCIKICAgICAgIHg9IjEwNy41MzQzOSIKICAgICAgIHk9Ii0xOTguMDM1MDUiCiAgICAgICBpZD0idGV4dDUwNzAtMi0yLTktOS00MS05Ij48dHNwYW4KICAgICAgICAgc29kaXBvZGk6cm9sZT0ibGluZSIKICAgICAgICAgaWQ9InRzcGFuNTA2OC0wLTMtMzYtOS0xLTUiCiAgICAgICAgIHg9IjEwNy41MzQzOSIKICAgICAgICAgeT0iLTE5OC4wMzUwNSIKICAgICAgICAgc3R5bGU9ImZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtdmFyaWFudDpub3JtYWw7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZvbnQtc3RyZXRjaDpub3JtYWw7Zm9udC1zaXplOjE2cHg7Zm9udC1mYW1pbHk6c2Fucy1zZXJpZjstaW5rc2NhcGUtZm9udC1zcGVjaWZpY2F0aW9uOidzYW5zLXNlcmlmLCBOb3JtYWwnO2ZvbnQtdmFyaWFudC1saWdhdHVyZXM6bm9ybWFsO2ZvbnQtdmFyaWFudC1jYXBzOm5vcm1hbDtmb250LXZhcmlhbnQtbnVtZXJpYzpub3JtYWw7Zm9udC1mZWF0dXJlLXNldHRpbmdzOm5vcm1hbDt0ZXh0LWFsaWduOmNlbnRlcjt3cml0aW5nLW1vZGU6bHItdGI7dGV4dC1hbmNob3I6bWlkZGxlO2ZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtzdHJva2Utd2lkdGg6MS4xNjQyNzM5OCI+NTwvdHNwYW4+PC90ZXh0PgogIDwvZz4KPC9zdmc+Cg== primitive topology key vertex number>>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | Vertex    | Sequence position of a vertex within the provided vertex data.                                                     |
+-- |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | Number    |                                                                                                                    |
+-- +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------+--------------------------------------------------------------------------------------------------------------------+
+-- | <<data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+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://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-polygons-basic facing determination>. |
+-- |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |           | This ordering has no specific start or end point.                                                                  |
+-- +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------+--------------------------------------------------------------------------------------------------------------------+
 --
 -- The diagrams are supported with mathematical definitions where the
 -- vertices (v) and primitives (p) are numbered starting from 0; v0 is the
@@ -59,64 +103,43 @@
 -- = 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.Pipeline.PipelineInputAssemblyStateCreateInfo',
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineInputAssemblyStateCreateInfo',
 -- '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_state.cmdSetPrimitiveTopology'
 newtype PrimitiveTopology = PrimitiveTopology Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'PRIMITIVE_TOPOLOGY_POINT_LIST' specifies a series of
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#drawing-point-lists separate point primitives>.
+-- No documentation found for Nested "VkPrimitiveTopology" "VK_PRIMITIVE_TOPOLOGY_POINT_LIST"
 pattern PRIMITIVE_TOPOLOGY_POINT_LIST = PrimitiveTopology 0
 
--- | 'PRIMITIVE_TOPOLOGY_LINE_LIST' specifies a series of
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#drawing-line-lists separate line primitives>.
+-- No documentation found for Nested "VkPrimitiveTopology" "VK_PRIMITIVE_TOPOLOGY_LINE_LIST"
 pattern PRIMITIVE_TOPOLOGY_LINE_LIST = PrimitiveTopology 1
 
--- | 'PRIMITIVE_TOPOLOGY_LINE_STRIP' specifies a series of
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#drawing-line-strips connected line primitives>
--- with consecutive lines sharing a vertex.
+-- No documentation found for Nested "VkPrimitiveTopology" "VK_PRIMITIVE_TOPOLOGY_LINE_STRIP"
 pattern PRIMITIVE_TOPOLOGY_LINE_STRIP = PrimitiveTopology 2
 
--- | 'PRIMITIVE_TOPOLOGY_TRIANGLE_LIST' specifies a series of
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#drawing-triangle-lists separate triangle primitives>.
+-- No documentation found for Nested "VkPrimitiveTopology" "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST"
 pattern PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = PrimitiveTopology 3
 
--- | 'PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP' specifies a series of
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#drawing-triangle-strips connected triangle primitives>
--- with consecutive triangles sharing an edge.
+-- No documentation found for Nested "VkPrimitiveTopology" "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP"
 pattern PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = PrimitiveTopology 4
 
--- | 'PRIMITIVE_TOPOLOGY_TRIANGLE_FAN' specifies a series of
--- <https://registry.khronos.org/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@
--- is 'Vulkan.Core10.FundamentalTypes.FALSE', then triangle fans are not
--- supported by the implementation, and 'PRIMITIVE_TOPOLOGY_TRIANGLE_FAN'
--- /must/ not be used.
+-- No documentation found for Nested "VkPrimitiveTopology" "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN"
 pattern PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = PrimitiveTopology 5
 
--- | 'PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY' specifies a series of
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#drawing-line-lists-with-adjacency separate line primitives with adjacency>.
+-- No documentation found for Nested "VkPrimitiveTopology" "VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY"
 pattern PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = PrimitiveTopology 6
 
--- | 'PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY' specifies a series of
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#drawing-line-strips-with-adjacency connected line primitives with adjacency>,
--- with consecutive primitives sharing three vertices.
+-- No documentation found for Nested "VkPrimitiveTopology" "VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY"
 pattern PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = PrimitiveTopology 7
 
--- | 'PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY' specifies a series of
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#drawing-triangle-lists-with-adjacency separate triangle primitives with adjacency>.
+-- No documentation found for Nested "VkPrimitiveTopology" "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY"
 pattern PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = PrimitiveTopology 8
 
--- | 'PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY' specifies
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#drawing-triangle-strips-with-adjacency connected triangle primitives with adjacency>,
--- with consecutive triangles sharing an edge.
+-- No documentation found for Nested "VkPrimitiveTopology" "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY"
 pattern PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = PrimitiveTopology 9
 
--- | 'PRIMITIVE_TOPOLOGY_PATCH_LIST' specifies
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#drawing-patch-lists separate patch primitives>.
+-- No documentation found for Nested "VkPrimitiveTopology" "VK_PRIMITIVE_TOPOLOGY_PATCH_LIST"
 pattern PRIMITIVE_TOPOLOGY_PATCH_LIST = PrimitiveTopology 10
 
 {-# COMPLETE
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
@@ -21,6 +21,11 @@
 
 -- | VkQueryControlFlagBits - Bitmask specifying constraints on a query
 --
+-- = Description
+--
+-- -   'QUERY_CONTROL_PRECISE_BIT' specifies the precision of
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#queries-occlusion occlusion queries>.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -28,8 +33,7 @@
 newtype QueryControlFlagBits = QueryControlFlagBits Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'QUERY_CONTROL_PRECISE_BIT' specifies the precision of
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#queries-occlusion occlusion queries>.
+-- No documentation found for Nested "VkQueryControlFlagBits" "VK_QUERY_CONTROL_PRECISE_BIT"
 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
@@ -37,11 +37,110 @@
 --
 -- = Description
 --
+-- -   'QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT' specifies
+--     that queries managed by the pool will count the number of vertices
+--     processed by the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#drawing input assembly>
+--     stage. Vertices corresponding to incomplete primitives /may/
+--     contribute to the count.
+--
+-- -   'QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT' specifies
+--     that queries managed by the pool will count the number of primitives
+--     processed by the
+--     <https://registry.khronos.org/vulkan/specs/latest/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.
+--
+-- -   'QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT' specifies
+--     that 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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-vertex-execution invoked>.
+--
+-- -   '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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-geometry-execution invoked>.
+--     In the case of
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#geometry-invocations instanced geometry shaders>,
+--     the geometry shader invocations count is incremented for each
+--     separate instanced invocation.
+--
+-- -   'QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT' specifies
+--     that queries managed by the pool will count the number of primitives
+--     generated by geometry shader invocations. The counter’s value is
+--     incremented each time the geometry shader emits a primitive.
+--     Restarting primitive topology using the SPIR-V instructions
+--     @OpEndPrimitive@ or @OpEndStreamPrimitive@ has no effect on the
+--     geometry shader output primitives count.
+--
+-- -   'QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT' specifies that
+--     queries managed by the pool will count the number of primitives
+--     processed by the
+--     <https://registry.khronos.org/vulkan/specs/latest/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.
+--
+-- -   'QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT' specifies that
+--     queries managed by the pool will count the number of primitives
+--     output by the
+--     <https://registry.khronos.org/vulkan/specs/latest/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 primitive is implementation-dependent but /must/
+--     satisfy the following conditions:
+--
+--     -   If at least one vertex of the input primitive lies inside the
+--         clipping volume, the counter is incremented by one or more.
+--
+--     -   Otherwise, the counter is incremented by zero or more.
+--
+-- -   'QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT' specifies
+--     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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#fragops-shader invoked>.
+--
+-- -   '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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-tessellation-control-execution invoked>.
+--
+-- -   '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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-tessellation-evaluation-execution invoked>.
+--
+-- -   'QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT' specifies
+--     that queries managed by the pool will count the number of compute
+--     shader invocations. The counter’s value is incremented every time
+--     the compute shader is invoked. Implementations /may/ skip the
+--     execution of certain compute shader invocations or execute
+--     additional compute shader invocations for implementation-dependent
+--     reasons as long as the results of rendering otherwise remain
+--     unchanged.
+--
+-- -   'QUERY_PIPELINE_STATISTIC_TASK_SHADER_INVOCATIONS_BIT_EXT' specifies
+--     that queries managed by the pool will count the number of task
+--     shader invocations. The counter’s value is incremented every time
+--     the task shader is invoked.
+--
+-- -   'QUERY_PIPELINE_STATISTIC_MESH_SHADER_INVOCATIONS_BIT_EXT' specifies
+--     that queries managed by the pool will count the number of mesh
+--     shader invocations. The counter’s value is incremented every time
+--     the mesh shader is invoked.
+--
 -- These values are intended to measure relative statistics on one
 -- implementation. Various device architectures will count these values
 -- differently. Any or all counters /may/ be affected by the issues
 -- described in
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#queries-operation-undefined Query Operation>.
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#queries-operation-undefined Query Operation>.
 --
 -- This counting difference is especially true if the pipeline contains
 -- mesh or task shaders, which may affect several of the counters in
@@ -52,7 +151,7 @@
 --
 -- If a pipeline has @rasterizerDiscardEnable@ enabled, implementations
 -- /may/ discard primitives after the final
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader stage>.
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-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.
 --
@@ -69,118 +168,46 @@
 newtype QueryPipelineStatisticFlagBits = QueryPipelineStatisticFlagBits Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT' specifies that
--- queries managed by the pool will count the number of vertices processed
--- by the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#drawing input assembly>
--- stage. Vertices corresponding to incomplete primitives /may/ contribute
--- to the count.
+-- No documentation found for Nested "VkQueryPipelineStatisticFlagBits" "VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT"
 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://registry.khronos.org/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.
+-- No documentation found for Nested "VkQueryPipelineStatisticFlagBits" "VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT"
 pattern QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT = QueryPipelineStatisticFlagBits 0x00000002
 
--- | 'QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT' specifies that
--- 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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-vertex-execution invoked>.
+-- No documentation found for Nested "VkQueryPipelineStatisticFlagBits" "VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT"
 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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-geometry-execution invoked>.
--- In the case of
--- <https://registry.khronos.org/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.
+-- No documentation found for Nested "VkQueryPipelineStatisticFlagBits" "VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT"
 pattern QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT = QueryPipelineStatisticFlagBits 0x00000008
 
--- | 'QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT' specifies that
--- queries managed by the pool will count the number of primitives
--- generated by geometry shader invocations. The counter’s value is
--- incremented each time the geometry shader emits a primitive. Restarting
--- primitive topology using the SPIR-V instructions @OpEndPrimitive@ or
--- @OpEndStreamPrimitive@ has no effect on the geometry shader output
--- primitives count.
+-- No documentation found for Nested "VkQueryPipelineStatisticFlagBits" "VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT"
 pattern QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT = QueryPipelineStatisticFlagBits 0x00000010
 
--- | 'QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT' specifies that
--- queries managed by the pool will count the number of primitives
--- processed by the
--- <https://registry.khronos.org/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.
+-- No documentation found for Nested "VkQueryPipelineStatisticFlagBits" "VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT"
 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://registry.khronos.org/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
--- primitive is implementation-dependent but /must/ satisfy the following
--- conditions:
---
--- -   If at least one vertex of the input primitive lies inside the
---     clipping volume, the counter is incremented by one or more.
---
--- -   Otherwise, the counter is incremented by zero or more.
+-- No documentation found for Nested "VkQueryPipelineStatisticFlagBits" "VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT"
 pattern QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT = QueryPipelineStatisticFlagBits 0x00000040
 
--- | 'QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT' specifies
--- 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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-shader invoked>.
+-- No documentation found for Nested "VkQueryPipelineStatisticFlagBits" "VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT"
 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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-tessellation-control-execution invoked>.
+-- No documentation found for Nested "VkQueryPipelineStatisticFlagBits" "VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT"
 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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-tessellation-evaluation-execution invoked>.
+-- No documentation found for Nested "VkQueryPipelineStatisticFlagBits" "VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT"
 pattern QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT = QueryPipelineStatisticFlagBits 0x00000200
 
--- | 'QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT' specifies that
--- queries managed by the pool will count the number of compute shader
--- invocations. The counter’s value is incremented every time the compute
--- shader is invoked. Implementations /may/ skip the execution of certain
--- compute shader invocations or execute additional compute shader
--- invocations for implementation-dependent reasons as long as the results
--- of rendering otherwise remain unchanged.
+-- No documentation found for Nested "VkQueryPipelineStatisticFlagBits" "VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT"
 pattern QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT = QueryPipelineStatisticFlagBits 0x00000400
 
 -- No documentation found for Nested "VkQueryPipelineStatisticFlagBits" "VK_QUERY_PIPELINE_STATISTIC_CLUSTER_CULLING_SHADER_INVOCATIONS_BIT_HUAWEI"
 pattern QUERY_PIPELINE_STATISTIC_CLUSTER_CULLING_SHADER_INVOCATIONS_BIT_HUAWEI = QueryPipelineStatisticFlagBits 0x00002000
 
--- | 'QUERY_PIPELINE_STATISTIC_MESH_SHADER_INVOCATIONS_BIT_EXT' specifies
--- that queries managed by the pool will count the number of mesh shader
--- invocations. The counter’s value is incremented every time the mesh
--- shader is invoked.
+-- No documentation found for Nested "VkQueryPipelineStatisticFlagBits" "VK_QUERY_PIPELINE_STATISTIC_MESH_SHADER_INVOCATIONS_BIT_EXT"
 pattern QUERY_PIPELINE_STATISTIC_MESH_SHADER_INVOCATIONS_BIT_EXT = QueryPipelineStatisticFlagBits 0x00001000
 
--- | 'QUERY_PIPELINE_STATISTIC_TASK_SHADER_INVOCATIONS_BIT_EXT' specifies
--- that queries managed by the pool will count the number of task shader
--- invocations. The counter’s value is incremented every time the task
--- shader is invoked.
+-- No documentation found for Nested "VkQueryPipelineStatisticFlagBits" "VK_QUERY_PIPELINE_STATISTIC_TASK_SHADER_INVOCATIONS_BIT_EXT"
 pattern QUERY_PIPELINE_STATISTIC_TASK_SHADER_INVOCATIONS_BIT_EXT = QueryPipelineStatisticFlagBits 0x00000800
 
 conNameQueryPipelineStatisticFlagBits :: String
diff --git a/src/Vulkan/Core10/Enums/QueryPoolCreateFlagBits.hs b/src/Vulkan/Core10/Enums/QueryPoolCreateFlagBits.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core10/Enums/QueryPoolCreateFlagBits.hs
@@ -0,0 +1,64 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "QueryPoolCreateFlagBits"
+module Vulkan.Core10.Enums.QueryPoolCreateFlagBits  ( QueryPoolCreateFlags
+                                                    , QueryPoolCreateFlagBits( QUERY_POOL_CREATE_RESET_BIT_KHR
+                                                                             , ..
+                                                                             )
+                                                    ) where
+
+import Data.Bits (Bits)
+import Data.Bits (FiniteBits)
+import Vulkan.Internal.Utils (enumReadPrec)
+import Vulkan.Internal.Utils (enumShowsPrec)
+import GHC.Show (showString)
+import Numeric (showHex)
+import Vulkan.Zero (Zero)
+import Foreign.Storable (Storable)
+import GHC.Read (Read(readPrec))
+import GHC.Show (Show(showsPrec))
+import Vulkan.Core10.FundamentalTypes (Flags)
+type QueryPoolCreateFlags = QueryPoolCreateFlagBits
+
+-- | VkQueryPoolCreateFlagBits - Bitmask specifying query pool properties
+--
+-- = Description
+--
+-- -   'QUERY_POOL_CREATE_RESET_BIT_KHR' specifies that queries in the
+--     query pool are initialized on creation and do not need to be reset
+--     before first use.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
+-- 'QueryPoolCreateFlags'
+newtype QueryPoolCreateFlagBits = QueryPoolCreateFlagBits Flags
+  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
+
+-- No documentation found for Nested "VkQueryPoolCreateFlagBits" "VK_QUERY_POOL_CREATE_RESET_BIT_KHR"
+pattern QUERY_POOL_CREATE_RESET_BIT_KHR = QueryPoolCreateFlagBits 0x00000001
+
+conNameQueryPoolCreateFlagBits :: String
+conNameQueryPoolCreateFlagBits = "QueryPoolCreateFlagBits"
+
+enumPrefixQueryPoolCreateFlagBits :: String
+enumPrefixQueryPoolCreateFlagBits = "QUERY_POOL_CREATE_RESET_BIT_KHR"
+
+showTableQueryPoolCreateFlagBits :: [(QueryPoolCreateFlagBits, String)]
+showTableQueryPoolCreateFlagBits = [(QUERY_POOL_CREATE_RESET_BIT_KHR, "")]
+
+instance Show QueryPoolCreateFlagBits where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixQueryPoolCreateFlagBits
+      showTableQueryPoolCreateFlagBits
+      conNameQueryPoolCreateFlagBits
+      (\(QueryPoolCreateFlagBits x) -> x)
+      (\x -> showString "0x" . showHex x)
+
+instance Read QueryPoolCreateFlagBits where
+  readPrec =
+    enumReadPrec
+      enumPrefixQueryPoolCreateFlagBits
+      showTableQueryPoolCreateFlagBits
+      conNameQueryPoolCreateFlagBits
+      QueryPoolCreateFlagBits
diff --git a/src/Vulkan/Core10/Enums/QueryPoolCreateFlags.hs b/src/Vulkan/Core10/Enums/QueryPoolCreateFlags.hs
deleted file mode 100644
--- a/src/Vulkan/Core10/Enums/QueryPoolCreateFlags.hs
+++ /dev/null
@@ -1,55 +0,0 @@
-{-# language CPP #-}
--- No documentation found for Chapter "QueryPoolCreateFlags"
-module Vulkan.Core10.Enums.QueryPoolCreateFlags  (QueryPoolCreateFlags(..)) where
-
-import Data.Bits (Bits)
-import Data.Bits (FiniteBits)
-import Vulkan.Internal.Utils (enumReadPrec)
-import Vulkan.Internal.Utils (enumShowsPrec)
-import GHC.Show (showString)
-import Numeric (showHex)
-import Vulkan.Zero (Zero)
-import Foreign.Storable (Storable)
-import GHC.Read (Read(readPrec))
-import GHC.Show (Show(showsPrec))
-import Vulkan.Core10.FundamentalTypes (Flags)
--- | VkQueryPoolCreateFlags - Reserved for future use
---
--- = Description
---
--- 'QueryPoolCreateFlags' is a bitmask type for setting a mask, but is
--- currently reserved for future use.
---
--- = 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.Flags',
--- 'Vulkan.Core10.Query.QueryPoolCreateInfo'
-newtype QueryPoolCreateFlags = QueryPoolCreateFlags Flags
-  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
-
-conNameQueryPoolCreateFlags :: String
-conNameQueryPoolCreateFlags = "QueryPoolCreateFlags"
-
-enumPrefixQueryPoolCreateFlags :: String
-enumPrefixQueryPoolCreateFlags = ""
-
-showTableQueryPoolCreateFlags :: [(QueryPoolCreateFlags, String)]
-showTableQueryPoolCreateFlags = []
-
-instance Show QueryPoolCreateFlags where
-  showsPrec =
-    enumShowsPrec
-      enumPrefixQueryPoolCreateFlags
-      showTableQueryPoolCreateFlags
-      conNameQueryPoolCreateFlags
-      (\(QueryPoolCreateFlags x) -> x)
-      (\x -> showString "0x" . showHex x)
-
-instance Read QueryPoolCreateFlags where
-  readPrec =
-    enumReadPrec
-      enumPrefixQueryPoolCreateFlags
-      showTableQueryPoolCreateFlags
-      conNameQueryPoolCreateFlags
-      QueryPoolCreateFlags
diff --git a/src/Vulkan/Core10/Enums/QueryResultFlagBits.hs b/src/Vulkan/Core10/Enums/QueryResultFlagBits.hs
--- a/src/Vulkan/Core10/Enums/QueryResultFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/QueryResultFlagBits.hs
@@ -25,6 +25,30 @@
 -- | VkQueryResultFlagBits - Bitmask specifying how and when query results
 -- are returned
 --
+-- = Description
+--
+-- -   'QUERY_RESULT_64_BIT' specifies the results will be written as an
+--     array of 64-bit unsigned integer values. If this bit is not set, the
+--     results will be written as an array of 32-bit unsigned integer
+--     values.
+--
+-- -   'QUERY_RESULT_WAIT_BIT' specifies that Vulkan will wait for each
+--     query’s status to become available before retrieving its results.
+--
+-- -   'QUERY_RESULT_WITH_AVAILABILITY_BIT' specifies that the availability
+--     status accompanies the results.
+--
+-- -   'QUERY_RESULT_PARTIAL_BIT' specifies that returning partial results
+--     is acceptable.
+--
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueryResultFlagBits VK_QUERY_RESULT_WITH_STATUS_BIT_KHR>
+--     specifies that the last value returned in the query is a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueryResultStatusKHR VkQueryResultStatusKHR>
+--     value. See
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#queries-result-status-only result status query>
+--     for information on how an application can determine whether the use
+--     of this flag bit is supported.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -32,21 +56,16 @@
 newtype QueryResultFlagBits = QueryResultFlagBits Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'QUERY_RESULT_64_BIT' specifies the results will be written as an array
--- of 64-bit unsigned integer values. If this bit is not set, the results
--- will be written as an array of 32-bit unsigned integer values.
+-- No documentation found for Nested "VkQueryResultFlagBits" "VK_QUERY_RESULT_64_BIT"
 pattern QUERY_RESULT_64_BIT = QueryResultFlagBits 0x00000001
 
--- | 'QUERY_RESULT_WAIT_BIT' specifies that Vulkan will wait for each query’s
--- status to become available before retrieving its results.
+-- No documentation found for Nested "VkQueryResultFlagBits" "VK_QUERY_RESULT_WAIT_BIT"
 pattern QUERY_RESULT_WAIT_BIT = QueryResultFlagBits 0x00000002
 
--- | 'QUERY_RESULT_WITH_AVAILABILITY_BIT' specifies that the availability
--- status accompanies the results.
+-- No documentation found for Nested "VkQueryResultFlagBits" "VK_QUERY_RESULT_WITH_AVAILABILITY_BIT"
 pattern QUERY_RESULT_WITH_AVAILABILITY_BIT = QueryResultFlagBits 0x00000004
 
--- | 'QUERY_RESULT_PARTIAL_BIT' specifies that returning partial results is
--- acceptable.
+-- No documentation found for Nested "VkQueryResultFlagBits" "VK_QUERY_RESULT_PARTIAL_BIT"
 pattern QUERY_RESULT_PARTIAL_BIT = QueryResultFlagBits 0x00000008
 
 conNameQueryResultFlagBits :: String
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
@@ -10,6 +10,7 @@
                                                 , QUERY_TYPE_PRIMITIVES_GENERATED_EXT
                                                 , QUERY_TYPE_MESH_PRIMITIVES_GENERATED_EXT
                                                 , QUERY_TYPE_PERFORMANCE_QUERY_INTEL
+                                                , QUERY_TYPE_TIME_ELAPSED_QCOM
                                                 , QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV
                                                 , QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR
                                                 , QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR
@@ -29,6 +30,76 @@
 
 -- | VkQueryType - Specify the type of queries managed by a query pool
 --
+-- = Description
+--
+-- -   'QUERY_TYPE_OCCLUSION' specifies an
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#queries-occlusion occlusion query>.
+--
+-- -   'QUERY_TYPE_PIPELINE_STATISTICS' specifies a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#queries-pipestats pipeline statistics query>.
+--
+-- -   'QUERY_TYPE_TIMESTAMP' specifies a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#queries-timestamps timestamp query>.
+--
+-- -   'QUERY_TYPE_PERFORMANCE_QUERY_KHR' specifies a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#queries-performance performance query>.
+--
+-- -   'QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT' specifies a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#queries-transform-feedback transform feedback query>.
+--
+-- -   'QUERY_TYPE_PRIMITIVES_GENERATED_EXT' specifies a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#queries-primitives-generated primitives generated query>.
+--
+-- -   'QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR' specifies a
+--     <https://registry.khronos.org/vulkan/specs/latest/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'.
+--
+-- -   'QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR' specifies
+--     a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#acceleration-structure-copying serialization acceleration structure size query>.
+--
+-- -   'QUERY_TYPE_ACCELERATION_STRUCTURE_SIZE_KHR' specifies an
+--     <https://registry.khronos.org/vulkan/specs/latest/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'.
+--
+-- -   'QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR'
+--     specifies a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#serialized-as-header serialization acceleration structure pointer count query>.
+--
+-- -   'QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV' specifies an
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#acceleration-structure-copying acceleration structure size query>
+--     for use with
+--     'Vulkan.Extensions.VK_NV_ray_tracing.cmdWriteAccelerationStructuresPropertiesNV'.
+--
+-- -   'QUERY_TYPE_PERFORMANCE_QUERY_INTEL' specifies a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#queries-performance-intel Intel performance query>.
+--
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueryType VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR>
+--     specifies a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#queries-result-status-only result status query>.
+--
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueryType VK_QUERY_TYPE_VIDEO_ENCODE_FEEDBACK_KHR>
+--     specifies a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#queries-video-encode-feedback video encode feedback query>.
+--
+-- -   'QUERY_TYPE_MESH_PRIMITIVES_GENERATED_EXT' specifies a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#queries-mesh-shader generated mesh primitives query>.
+--
+-- -   'QUERY_TYPE_TIME_ELAPSED_QCOM' specifies an
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#queries-elapsed-timer elapsed timer query>.
+--
+-- -   'QUERY_TYPE_MICROMAP_SERIALIZATION_SIZE_EXT' specifies a micromap
+--     query to get the size required by a serialized micromap.
+--
+-- -   'QUERY_TYPE_MICROMAP_COMPACTED_SIZE_EXT' specifies a micromap query
+--     to get the size required by a compacted micromap.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -41,16 +112,13 @@
 newtype QueryType = QueryType Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'QUERY_TYPE_OCCLUSION' specifies an
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#queries-occlusion occlusion query>.
+-- No documentation found for Nested "VkQueryType" "VK_QUERY_TYPE_OCCLUSION"
 pattern QUERY_TYPE_OCCLUSION = QueryType 0
 
--- | 'QUERY_TYPE_PIPELINE_STATISTICS' specifies a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#queries-pipestats pipeline statistics query>.
+-- No documentation found for Nested "VkQueryType" "VK_QUERY_TYPE_PIPELINE_STATISTICS"
 pattern QUERY_TYPE_PIPELINE_STATISTICS = QueryType 1
 
--- | 'QUERY_TYPE_TIMESTAMP' specifies a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#queries-timestamps timestamp query>.
+-- No documentation found for Nested "VkQueryType" "VK_QUERY_TYPE_TIMESTAMP"
 pattern QUERY_TYPE_TIMESTAMP = QueryType 2
 
 -- No documentation found for Nested "VkQueryType" "VK_QUERY_TYPE_MICROMAP_COMPACTED_SIZE_EXT"
@@ -59,55 +127,37 @@
 -- No documentation found for Nested "VkQueryType" "VK_QUERY_TYPE_MICROMAP_SERIALIZATION_SIZE_EXT"
 pattern QUERY_TYPE_MICROMAP_SERIALIZATION_SIZE_EXT = QueryType 1000396000
 
--- | 'QUERY_TYPE_ACCELERATION_STRUCTURE_SIZE_KHR' specifies an
--- <https://registry.khronos.org/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'.
+-- No documentation found for Nested "VkQueryType" "VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SIZE_KHR"
 pattern QUERY_TYPE_ACCELERATION_STRUCTURE_SIZE_KHR = QueryType 1000386001
 
--- | 'QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR'
--- specifies a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#serialized-as-header serialization acceleration structure pointer count query>.
+-- No documentation found for Nested "VkQueryType" "VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR"
 pattern QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR = QueryType 1000386000
 
--- | 'QUERY_TYPE_PRIMITIVES_GENERATED_EXT' specifies a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#queries-primitives-generated primitives generated query>.
+-- No documentation found for Nested "VkQueryType" "VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT"
 pattern QUERY_TYPE_PRIMITIVES_GENERATED_EXT = QueryType 1000382000
 
--- | 'QUERY_TYPE_MESH_PRIMITIVES_GENERATED_EXT' specifies a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#queries-mesh-shader generated mesh primitives query>.
+-- No documentation found for Nested "VkQueryType" "VK_QUERY_TYPE_MESH_PRIMITIVES_GENERATED_EXT"
 pattern QUERY_TYPE_MESH_PRIMITIVES_GENERATED_EXT = QueryType 1000328000
 
--- | 'QUERY_TYPE_PERFORMANCE_QUERY_INTEL' specifies a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#queries-performance-intel Intel performance query>.
+-- No documentation found for Nested "VkQueryType" "VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL"
 pattern QUERY_TYPE_PERFORMANCE_QUERY_INTEL = QueryType 1000210000
 
--- | 'QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV' specifies an
--- <https://registry.khronos.org/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'.
+-- No documentation found for Nested "VkQueryType" "VK_QUERY_TYPE_TIME_ELAPSED_QCOM"
+pattern QUERY_TYPE_TIME_ELAPSED_QCOM = QueryType 1000173000
+
+-- No documentation found for Nested "VkQueryType" "VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV"
 pattern QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV = QueryType 1000165000
 
--- | 'QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR' specifies a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#acceleration-structure-copying serialization acceleration structure size query>.
+-- No documentation found for Nested "VkQueryType" "VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR"
 pattern QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR = QueryType 1000150001
 
--- | 'QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR' specifies a
--- <https://registry.khronos.org/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'.
+-- No documentation found for Nested "VkQueryType" "VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR"
 pattern QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR = QueryType 1000150000
 
--- | 'QUERY_TYPE_PERFORMANCE_QUERY_KHR' specifies a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#queries-performance performance query>.
+-- No documentation found for Nested "VkQueryType" "VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR"
 pattern QUERY_TYPE_PERFORMANCE_QUERY_KHR = QueryType 1000116000
 
--- | 'QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT' specifies a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#queries-transform-feedback transform feedback query>.
+-- No documentation found for Nested "VkQueryType" "VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT"
 pattern QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT = QueryType 1000028004
 
 {-# COMPLETE
@@ -121,6 +171,7 @@
   , QUERY_TYPE_PRIMITIVES_GENERATED_EXT
   , QUERY_TYPE_MESH_PRIMITIVES_GENERATED_EXT
   , QUERY_TYPE_PERFORMANCE_QUERY_INTEL
+  , QUERY_TYPE_TIME_ELAPSED_QCOM
   , QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV
   , QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR
   , QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR
@@ -168,6 +219,7 @@
     ( QUERY_TYPE_PERFORMANCE_QUERY_INTEL
     , "PERFORMANCE_QUERY_INTEL"
     )
+  , (QUERY_TYPE_TIME_ELAPSED_QCOM, "TIME_ELAPSED_QCOM")
   ,
     ( QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV
     , "ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV"
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
@@ -5,6 +5,7 @@
                                                          , QUEUE_COMPUTE_BIT
                                                          , QUEUE_TRANSFER_BIT
                                                          , QUEUE_SPARSE_BINDING_BIT
+                                                         , QUEUE_DATA_GRAPH_BIT_ARM
                                                          , QUEUE_OPTICAL_FLOW_BIT_NV
                                                          , QUEUE_PROTECTED_BIT
                                                          , ..
@@ -29,13 +30,64 @@
 --
 -- = Description
 --
+-- -   'QUEUE_GRAPHICS_BIT' specifies that queues in this queue family
+--     support graphics operations.
+--
+-- -   'QUEUE_COMPUTE_BIT' specifies that queues in this queue family
+--     support compute operations.
+--
+-- -   'QUEUE_TRANSFER_BIT' specifies that queues in this queue family
+--     support transfer operations.
+--
+-- -   'QUEUE_SPARSE_BINDING_BIT' specifies that queues in this queue
+--     family support sparse memory management operations (see
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#sparsememory Sparse Resources>).
+--     If any of the sparse resource features are supported, then at least
+--     one queue family /must/ support this bit.
+--
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits VK_QUEUE_VIDEO_DECODE_BIT_KHR>
+--     specifies that queues in this queue family support
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#video-decode-operations video decode operations>.
+--
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits VK_QUEUE_VIDEO_ENCODE_BIT_KHR>
+--     specifies that queues in this queue family support
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#video-encode-operations video encode operations>.
+--
+-- -   'QUEUE_OPTICAL_FLOW_BIT_NV' specifies that queues in this queue
+--     family support optical flow operations.
+--
+-- -   'QUEUE_DATA_GRAPH_BIT_ARM' specifies that queues in this queue
+--     family support
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#graphs-operations data graph operations>.
+--
+-- -   'QUEUE_PROTECTED_BIT' specifies that queues in this queue family
+--     support the
+--     'Vulkan.Core10.Enums.DeviceQueueCreateFlagBits.DEVICE_QUEUE_CREATE_PROTECTED_BIT'
+--     bit. (see
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-protected-memory Protected Memory>).
+--     If the physical device supports the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-protectedMemory protectedMemory>
+--     feature, at least one of its queue families /must/ support this bit.
+--
+-- At least one queue family of at least one physical device exposed by the
+-- implementation /must/ support at least one of the following sets of
+-- operations:
+--
+-- -   graphics operations
+--
+-- -   compute operations
+--
+-- -   video encode operations
+--
+-- -   video decode operations
+--
 -- If an implementation exposes any queue family that supports graphics
 -- operations, at least one queue family of at least one physical device
 -- exposed by the implementation /must/ support both graphics and compute
 -- operations.
 --
 -- Furthermore, if the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-protectedMemory protectedMemory>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-protectedMemory protectedMemory>
 -- physical device feature is supported, then at least one queue family of
 -- at least one physical device exposed by the implementation /must/
 -- support graphics operations, compute operations, and protected memory
@@ -49,7 +101,7 @@
 -- /optional/.
 --
 -- For further details see
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-queues Queues>.
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#devsandqueues-queues Queues>.
 --
 -- = See Also
 --
@@ -58,37 +110,25 @@
 newtype QueueFlagBits = QueueFlagBits Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'QUEUE_GRAPHICS_BIT' specifies that queues in this queue family support
--- graphics operations.
+-- No documentation found for Nested "VkQueueFlagBits" "VK_QUEUE_GRAPHICS_BIT"
 pattern QUEUE_GRAPHICS_BIT = QueueFlagBits 0x00000001
 
--- | 'QUEUE_COMPUTE_BIT' specifies that queues in this queue family support
--- compute operations.
+-- No documentation found for Nested "VkQueueFlagBits" "VK_QUEUE_COMPUTE_BIT"
 pattern QUEUE_COMPUTE_BIT = QueueFlagBits 0x00000002
 
--- | 'QUEUE_TRANSFER_BIT' specifies that queues in this queue family support
--- transfer operations.
+-- No documentation found for Nested "VkQueueFlagBits" "VK_QUEUE_TRANSFER_BIT"
 pattern QUEUE_TRANSFER_BIT = QueueFlagBits 0x00000004
 
--- | 'QUEUE_SPARSE_BINDING_BIT' specifies that queues in this queue family
--- support sparse memory management operations (see
--- <https://registry.khronos.org/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.
+-- No documentation found for Nested "VkQueueFlagBits" "VK_QUEUE_SPARSE_BINDING_BIT"
 pattern QUEUE_SPARSE_BINDING_BIT = QueueFlagBits 0x00000008
 
--- | 'QUEUE_OPTICAL_FLOW_BIT_NV' specifies that queues in this queue family
--- support optical flow operations.
+-- No documentation found for Nested "VkQueueFlagBits" "VK_QUEUE_DATA_GRAPH_BIT_ARM"
+pattern QUEUE_DATA_GRAPH_BIT_ARM = QueueFlagBits 0x00000400
+
+-- No documentation found for Nested "VkQueueFlagBits" "VK_QUEUE_OPTICAL_FLOW_BIT_NV"
 pattern QUEUE_OPTICAL_FLOW_BIT_NV = QueueFlagBits 0x00000100
 
--- | 'QUEUE_PROTECTED_BIT' specifies that queues in this queue family support
--- the
--- 'Vulkan.Core10.Enums.DeviceQueueCreateFlagBits.DEVICE_QUEUE_CREATE_PROTECTED_BIT'
--- bit. (see
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-protected-memory Protected Memory>).
--- If the physical device supports the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-protectedMemory protectedMemory>
--- feature, at least one of its queue families /must/ support this bit.
+-- No documentation found for Nested "VkQueueFlagBits" "VK_QUEUE_PROTECTED_BIT"
 pattern QUEUE_PROTECTED_BIT = QueueFlagBits 0x00000010
 
 conNameQueueFlagBits :: String
@@ -103,6 +143,7 @@
   , (QUEUE_COMPUTE_BIT, "COMPUTE_BIT")
   , (QUEUE_TRANSFER_BIT, "TRANSFER_BIT")
   , (QUEUE_SPARSE_BINDING_BIT, "SPARSE_BINDING_BIT")
+  , (QUEUE_DATA_GRAPH_BIT_ARM, "DATA_GRAPH_BIT_ARM")
   , (QUEUE_OPTICAL_FLOW_BIT_NV, "OPTICAL_FLOW_BIT_NV")
   , (QUEUE_PROTECTED_BIT, "PROTECTED_BIT")
   ]
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
@@ -1,7 +1,8 @@
 {-# language CPP #-}
 -- No documentation found for Chapter "RenderPassCreateFlagBits"
 module Vulkan.Core10.Enums.RenderPassCreateFlagBits  ( RenderPassCreateFlags
-                                                     , RenderPassCreateFlagBits( RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM
+                                                     , RenderPassCreateFlagBits( RENDER_PASS_CREATE_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE
+                                                                               , RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM
                                                                                , ..
                                                                                )
                                                      ) where
@@ -22,6 +23,16 @@
 -- | VkRenderPassCreateFlagBits - Bitmask specifying additional properties of
 -- a render pass
 --
+-- = Description
+--
+-- -   'RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM' specifies that the created
+--     render pass is compatible with
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#vertexpostproc-renderpass-transform render pass transform>.
+--
+-- -   'RENDER_PASS_CREATE_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE' specifies
+--     that the created render pass is usable with layered fragment density
+--     maps.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -29,22 +40,27 @@
 newtype RenderPassCreateFlagBits = RenderPassCreateFlagBits Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM' specifies that the created
--- render pass is compatible with
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#vertexpostproc-renderpass-transform render pass transform>.
+-- No documentation found for Nested "VkRenderPassCreateFlagBits" "VK_RENDER_PASS_CREATE_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE"
+pattern RENDER_PASS_CREATE_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE = RenderPassCreateFlagBits 0x00000004
+
+-- No documentation found for Nested "VkRenderPassCreateFlagBits" "VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM"
 pattern RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM = RenderPassCreateFlagBits 0x00000002
 
 conNameRenderPassCreateFlagBits :: String
 conNameRenderPassCreateFlagBits = "RenderPassCreateFlagBits"
 
 enumPrefixRenderPassCreateFlagBits :: String
-enumPrefixRenderPassCreateFlagBits = "RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM"
+enumPrefixRenderPassCreateFlagBits = "RENDER_PASS_CREATE_"
 
 showTableRenderPassCreateFlagBits :: [(RenderPassCreateFlagBits, String)]
 showTableRenderPassCreateFlagBits =
   [
+    ( RENDER_PASS_CREATE_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE
+    , "PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE"
+    )
+  ,
     ( RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM
-    , ""
+    , "TRANSFORM_BIT_QCOM"
     )
   ]
 
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
@@ -28,10 +28,9 @@
                                           , THREAD_DONE_KHR
                                           , THREAD_IDLE_KHR
                                           , ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT
-                                          , ERROR_NOT_PERMITTED_KHR
+                                          , ERROR_PRESENT_TIMING_QUEUE_FULL_EXT
                                           , ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT
                                           , ERROR_INVALID_SHADER_NV
-                                          , ERROR_VALIDATION_FAILED_EXT
                                           , ERROR_INCOMPATIBLE_DISPLAY_KHR
                                           , ERROR_OUT_OF_DATE_KHR
                                           , SUBOPTIMAL_KHR
@@ -39,12 +38,13 @@
                                           , ERROR_SURFACE_LOST_KHR
                                           , ERROR_NO_PIPELINE_MATCH
                                           , ERROR_INVALID_PIPELINE_CACHE_DATA
-                                          , ERROR_VALIDATION_FAILED
+                                          , ERROR_NOT_PERMITTED
                                           , PIPELINE_COMPILE_REQUIRED
-                                          , ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS
                                           , ERROR_FRAGMENTATION
+                                          , ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS
                                           , ERROR_INVALID_EXTERNAL_HANDLE
                                           , ERROR_OUT_OF_POOL_MEMORY
+                                          , ERROR_VALIDATION_FAILED
                                           , ..
                                           )) where
 
@@ -61,6 +61,197 @@
 --
 -- = Description
 --
+-- -   'SUCCESS' Command successfully completed
+--
+-- -   'NOT_READY' A fence or query has not yet completed
+--
+-- -   'TIMEOUT' A wait operation has not completed in the specified time
+--
+-- -   'EVENT_SET' An event is signaled
+--
+-- -   'EVENT_RESET' An event is unsignaled
+--
+-- -   'INCOMPLETE' A return array was too small for the result
+--
+-- -   'SUBOPTIMAL_KHR' A swapchain no longer matches the surface
+--     properties exactly, but /can/ still be used to present to the
+--     surface successfully.
+--
+-- -   'THREAD_IDLE_KHR' A deferred operation is not complete but there is
+--     currently no work for this thread to do at the time of this call.
+--
+-- -   'THREAD_DONE_KHR' A deferred operation is not complete but there is
+--     no work remaining to assign to additional threads.
+--
+-- -   'OPERATION_DEFERRED_KHR' A deferred operation was requested and at
+--     least some of the work was deferred.
+--
+-- -   'OPERATION_NOT_DEFERRED_KHR' A deferred operation was requested and
+--     no operations were deferred.
+--
+-- -   'PIPELINE_COMPILE_REQUIRED' A requested pipeline creation would have
+--     required compilation, but the application requested compilation to
+--     not be performed.
+--
+-- -   'PIPELINE_BINARY_MISSING_KHR' The application attempted to create a
+--     pipeline binary by querying an internal cache, but the internal
+--     cache entry did not exist.
+--
+-- -   'INCOMPATIBLE_SHADER_BINARY_EXT' The provided binary shader code is
+--     not compatible with this device.
+--
+--     In the initial version of the @VK_EXT_shader_object@ extension, this
+--     return code was named
+--     'Vulkan.Extensions.VK_EXT_shader_object.ERROR_INCOMPATIBLE_SHADER_BINARY_EXT'
+--     and improperly described as an error code. The name has been
+--     changed, but the old name is retained as an alias for compatibility
+--     with old code.
+--
+-- -   'ERROR_OUT_OF_HOST_MEMORY' A host memory allocation has failed.
+--
+-- -   'ERROR_OUT_OF_DEVICE_MEMORY' A device memory allocation has failed.
+--
+-- -   'ERROR_INITIALIZATION_FAILED' Initialization of an object could not
+--     be completed for implementation-specific reasons.
+--
+-- -   'ERROR_DEVICE_LOST' The logical or physical device has been lost.
+--     See
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#devsandqueues-lost-device Lost Device>
+--
+-- -   'ERROR_MEMORY_MAP_FAILED' Mapping of a memory object has failed.
+--
+-- -   'ERROR_LAYER_NOT_PRESENT' A requested layer is not present or could
+--     not be loaded.
+--
+-- -   'ERROR_EXTENSION_NOT_PRESENT' A requested extension is not
+--     supported.
+--
+-- -   'ERROR_FEATURE_NOT_PRESENT' A requested feature is not supported.
+--
+-- -   'ERROR_INCOMPATIBLE_DRIVER' The requested version of Vulkan is not
+--     supported by the driver or is otherwise incompatible for
+--     implementation-specific reasons.
+--
+-- -   'ERROR_TOO_MANY_OBJECTS' Too many objects of the type have already
+--     been created.
+--
+-- -   '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. This /must/ only be returned if
+--     no attempt to allocate host or device memory was made to accommodate
+--     the new allocation. This /should/ be returned in preference to
+--     'ERROR_OUT_OF_POOL_MEMORY', but only if the implementation is
+--     certain that the pool allocation failure was due to fragmentation.
+--
+-- -   'ERROR_SURFACE_LOST_KHR' A surface is no longer available.
+--
+-- -   '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_OUT_OF_DATE_KHR' A surface has changed in such a way that it
+--     is no longer compatible with the swapchain, and further presentation
+--     requests using the swapchain will fail. Applications /must/ query
+--     the new surface properties and recreate their swapchain if they wish
+--     to continue presenting to the surface.
+--
+-- -   'ERROR_INCOMPATIBLE_DISPLAY_KHR' The display used by a swapchain
+--     does not use the same presentable image layout, or is incompatible
+--     in a way that prevents sharing an image.
+--
+-- -   'ERROR_INVALID_SHADER_NV' One or more shaders failed to compile or
+--     link. More details are reported back to the application via
+--     @VK_EXT_debug_report@ if enabled.
+--
+-- -   'ERROR_OUT_OF_POOL_MEMORY' A pool memory allocation has failed. This
+--     /must/ only be returned if no attempt to allocate host or device
+--     memory was made to accommodate the new allocation. If the failure
+--     was definitely due to fragmentation of the pool,
+--     'ERROR_FRAGMENTED_POOL' /should/ be returned instead.
+--
+-- -   'ERROR_INVALID_EXTERNAL_HANDLE' An external handle is not a valid
+--     handle of the specified type.
+--
+-- -   'ERROR_FRAGMENTATION' A descriptor pool creation has failed due to
+--     fragmentation.
+--
+-- -   'Vulkan.Extensions.VK_EXT_buffer_device_address.ERROR_INVALID_DEVICE_ADDRESS_EXT'
+--     A buffer creation failed because the requested address is not
+--     available.
+--
+-- -   '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 handle information is no longer valid.
+--
+-- -   'ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT' An operation on a
+--     swapchain created with
+--     'Vulkan.Extensions.VK_EXT_full_screen_exclusive.FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT'
+--     failed as it did not have exclusive full-screen access. This /may/
+--     occur due to implementation-dependent reasons, outside of the
+--     application’s control.
+--
+-- -   'ERROR_PRESENT_TIMING_QUEUE_FULL_EXT' A present operation on a
+--     swapchain created with
+--     'Vulkan.Extensions.VK_KHR_swapchain.SWAPCHAIN_CREATE_PRESENT_TIMING_BIT_EXT'
+--     failed due to insufficient space in the swapchain’s internal results
+--     queue to hold requested present timing data.
+--
+-- -   'ERROR_VALIDATION_FAILED' A command failed because invalid usage was
+--     detected by the implementation or a validation layer. This /may/
+--     result in the command not being dispatched to the ICD.
+--
+-- -   'ERROR_COMPRESSION_EXHAUSTED_EXT' An image creation failed because
+--     internal resources required for compression are exhausted. This
+--     /must/ only be returned when fixed-rate compression is requested.
+--
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkResult VK_ERROR_IMAGE_USAGE_NOT_SUPPORTED_KHR>
+--     The requested
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlags' are not
+--     supported.
+--
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkResult VK_ERROR_VIDEO_PICTURE_LAYOUT_NOT_SUPPORTED_KHR>
+--     The requested video picture layout is not supported.
+--
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkResult VK_ERROR_VIDEO_PROFILE_OPERATION_NOT_SUPPORTED_KHR>
+--     A video profile operation specified via
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoProfileInfoKHR VkVideoProfileInfoKHR>::@videoCodecOperation@
+--     is not supported.
+--
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkResult VK_ERROR_VIDEO_PROFILE_FORMAT_NOT_SUPPORTED_KHR>
+--     Format parameters in a requested
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoProfileInfoKHR VkVideoProfileInfoKHR>
+--     chain are not supported.
+--
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkResult VK_ERROR_VIDEO_PROFILE_CODEC_NOT_SUPPORTED_KHR>
+--     Codec-specific parameters in a requested
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoProfileInfoKHR VkVideoProfileInfoKHR>
+--     chain are not supported.
+--
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkResult VK_ERROR_VIDEO_STD_VERSION_NOT_SUPPORTED_KHR>
+--     The specified video Std header version is not supported.
+--
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkResult VK_ERROR_INVALID_VIDEO_STD_PARAMETERS_KHR>
+--     The specified Video Std parameters do not adhere to the syntactic or
+--     semantic requirements of the used video compression standard, or
+--     values derived from parameters according to the rules defined by the
+--     used video compression standard do not adhere to the capabilities of
+--     the video compression standard or the implementation.
+--
+-- -   'ERROR_NOT_PERMITTED' The driver implementation has denied a request
+--     to acquire a priority above the default priority
+--     ('Vulkan.Extensions.VK_EXT_global_priority.QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT')
+--     because the application does not have sufficient privileges.
+--
+-- -   'ERROR_NOT_ENOUGH_SPACE_KHR' The application did not provide enough
+--     space to return all the required data.
+--
+-- -   'ERROR_UNKNOWN' An unknown error has occurred; either the
+--     application has provided invalid input, or an implementation failure
+--     has occurred.
+--
 -- If a command returns a runtime error, unless otherwise specified any
 -- output parameters will have undefined contents, except that if the
 -- output parameter is a structure with @sType@ and @pNext@ fields, those
@@ -84,15 +275,13 @@
 --
 -- 'ERROR_UNKNOWN' is not expected to ever be returned if the application
 -- behavior is valid, and if the implementation is bug-free. If
--- 'ERROR_UNKNOWN' is received, the application should be checked against
+-- 'ERROR_UNKNOWN' is returned, the application should be checked against
 -- the latest validation layers to verify correct behavior as much as
 -- possible. If no issues are identified it could be an implementation
 -- issue, and the implementor should be contacted for support.
 --
--- Any command returning a 'Result' /may/ return
--- 'ERROR_VALIDATION_FAILED_EXT' if a violation of valid usage is detected,
--- even though commands do not explicitly list this as a possible return
--- code.
+-- Any command returning a 'Result' /may/ return 'ERROR_VALIDATION_FAILED'
+-- if a violation of valid usage is detected.
 --
 -- Performance-critical commands generally do not have return codes. If a
 -- runtime error occurs in such commands, the implementation will defer
@@ -103,170 +292,117 @@
 -- = 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_maintenance6.BindMemoryStatusKHR',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance6.BindMemoryStatus',
 -- 'Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR'
 newtype Result = Result Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'SUCCESS' Command successfully completed
+-- No documentation found for Nested "VkResult" "VK_SUCCESS"
 pattern SUCCESS = Result 0
 
--- | 'NOT_READY' A fence or query has not yet completed
+-- No documentation found for Nested "VkResult" "VK_NOT_READY"
 pattern NOT_READY = Result 1
 
--- | 'TIMEOUT' A wait operation has not completed in the specified time
+-- No documentation found for Nested "VkResult" "VK_TIMEOUT"
 pattern TIMEOUT = Result 2
 
--- | 'EVENT_SET' An event is signaled
+-- No documentation found for Nested "VkResult" "VK_EVENT_SET"
 pattern EVENT_SET = Result 3
 
--- | 'EVENT_RESET' An event is unsignaled
+-- No documentation found for Nested "VkResult" "VK_EVENT_RESET"
 pattern EVENT_RESET = Result 4
 
--- | 'INCOMPLETE' A return array was too small for the result
+-- No documentation found for Nested "VkResult" "VK_INCOMPLETE"
 pattern INCOMPLETE = Result 5
 
--- | 'ERROR_OUT_OF_HOST_MEMORY' A host memory allocation has failed.
+-- No documentation found for Nested "VkResult" "VK_ERROR_OUT_OF_HOST_MEMORY"
 pattern ERROR_OUT_OF_HOST_MEMORY = Result (-1)
 
--- | 'ERROR_OUT_OF_DEVICE_MEMORY' A device memory allocation has failed.
+-- No documentation found for Nested "VkResult" "VK_ERROR_OUT_OF_DEVICE_MEMORY"
 pattern ERROR_OUT_OF_DEVICE_MEMORY = Result (-2)
 
--- | 'ERROR_INITIALIZATION_FAILED' Initialization of an object could not be
--- completed for implementation-specific reasons.
+-- No documentation found for Nested "VkResult" "VK_ERROR_INITIALIZATION_FAILED"
 pattern ERROR_INITIALIZATION_FAILED = Result (-3)
 
--- | 'ERROR_DEVICE_LOST' The logical or physical device has been lost. See
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-lost-device Lost Device>
+-- No documentation found for Nested "VkResult" "VK_ERROR_DEVICE_LOST"
 pattern ERROR_DEVICE_LOST = Result (-4)
 
--- | 'ERROR_MEMORY_MAP_FAILED' Mapping of a memory object has failed.
+-- No documentation found for Nested "VkResult" "VK_ERROR_MEMORY_MAP_FAILED"
 pattern ERROR_MEMORY_MAP_FAILED = Result (-5)
 
--- | 'ERROR_LAYER_NOT_PRESENT' A requested layer is not present or could not
--- be loaded.
+-- No documentation found for Nested "VkResult" "VK_ERROR_LAYER_NOT_PRESENT"
 pattern ERROR_LAYER_NOT_PRESENT = Result (-6)
 
--- | 'ERROR_EXTENSION_NOT_PRESENT' A requested extension is not supported.
+-- No documentation found for Nested "VkResult" "VK_ERROR_EXTENSION_NOT_PRESENT"
 pattern ERROR_EXTENSION_NOT_PRESENT = Result (-7)
 
--- | 'ERROR_FEATURE_NOT_PRESENT' A requested feature is not supported.
+-- No documentation found for Nested "VkResult" "VK_ERROR_FEATURE_NOT_PRESENT"
 pattern ERROR_FEATURE_NOT_PRESENT = Result (-8)
 
--- | 'ERROR_INCOMPATIBLE_DRIVER' The requested version of Vulkan is not
--- supported by the driver or is otherwise incompatible for
--- implementation-specific reasons.
+-- No documentation found for Nested "VkResult" "VK_ERROR_INCOMPATIBLE_DRIVER"
 pattern ERROR_INCOMPATIBLE_DRIVER = Result (-9)
 
--- | 'ERROR_TOO_MANY_OBJECTS' Too many objects of the type have already been
--- created.
+-- No documentation found for Nested "VkResult" "VK_ERROR_TOO_MANY_OBJECTS"
 pattern ERROR_TOO_MANY_OBJECTS = Result (-10)
 
--- | 'ERROR_FORMAT_NOT_SUPPORTED' A requested format is not supported on this
--- device.
+-- No documentation found for Nested "VkResult" "VK_ERROR_FORMAT_NOT_SUPPORTED"
 pattern ERROR_FORMAT_NOT_SUPPORTED = Result (-11)
 
--- | 'ERROR_FRAGMENTED_POOL' A pool allocation has failed due to
--- fragmentation of the pool’s memory. This /must/ only be returned if no
--- attempt to allocate host or device memory was made to accommodate the
--- new allocation. This /should/ be returned in preference to
--- 'ERROR_OUT_OF_POOL_MEMORY', but only if the implementation is certain
--- that the pool allocation failure was due to fragmentation.
+-- No documentation found for Nested "VkResult" "VK_ERROR_FRAGMENTED_POOL"
 pattern ERROR_FRAGMENTED_POOL = Result (-12)
 
--- | 'ERROR_UNKNOWN' An unknown error has occurred; either the application
--- has provided invalid input, or an implementation failure has occurred.
+-- No documentation found for Nested "VkResult" "VK_ERROR_UNKNOWN"
 pattern ERROR_UNKNOWN = Result (-13)
 
--- | 'ERROR_NOT_ENOUGH_SPACE_KHR' The application did not provide enough
--- space to return all the required data.
+-- No documentation found for Nested "VkResult" "VK_ERROR_NOT_ENOUGH_SPACE_KHR"
 pattern ERROR_NOT_ENOUGH_SPACE_KHR = Result (-1000483000)
 
--- | 'PIPELINE_BINARY_MISSING_KHR' The application attempted to create a
--- pipeline binary by querying an internal cache, but the internal cache
--- entry did not exist.
+-- No documentation found for Nested "VkResult" "VK_PIPELINE_BINARY_MISSING_KHR"
 pattern PIPELINE_BINARY_MISSING_KHR = Result 1000483000
 
--- | 'INCOMPATIBLE_SHADER_BINARY_EXT' The provided binary shader code is not
--- compatible with this device.
---
--- In the initial version of the @VK_EXT_shader_object@ extension, this
--- return code was named
--- 'Vulkan.Extensions.VK_EXT_shader_object.ERROR_INCOMPATIBLE_SHADER_BINARY_EXT'
--- and improperly described as an error code. The name has been changed,
--- but the old name is retained as an alias for compatibility with old
--- code.
+-- No documentation found for Nested "VkResult" "VK_INCOMPATIBLE_SHADER_BINARY_EXT"
 pattern INCOMPATIBLE_SHADER_BINARY_EXT = Result 1000482000
 
--- | 'ERROR_COMPRESSION_EXHAUSTED_EXT' An image creation failed because
--- internal resources required for compression are exhausted. This /must/
--- only be returned when fixed-rate compression is requested.
+-- No documentation found for Nested "VkResult" "VK_ERROR_COMPRESSION_EXHAUSTED_EXT"
 pattern ERROR_COMPRESSION_EXHAUSTED_EXT = Result (-1000338000)
 
--- | 'OPERATION_NOT_DEFERRED_KHR' A deferred operation was requested and no
--- operations were deferred.
+-- No documentation found for Nested "VkResult" "VK_OPERATION_NOT_DEFERRED_KHR"
 pattern OPERATION_NOT_DEFERRED_KHR = Result 1000268003
 
--- | 'OPERATION_DEFERRED_KHR' A deferred operation was requested and at least
--- some of the work was deferred.
+-- No documentation found for Nested "VkResult" "VK_OPERATION_DEFERRED_KHR"
 pattern OPERATION_DEFERRED_KHR = Result 1000268002
 
--- | 'THREAD_DONE_KHR' A deferred operation is not complete but there is no
--- work remaining to assign to additional threads.
+-- No documentation found for Nested "VkResult" "VK_THREAD_DONE_KHR"
 pattern THREAD_DONE_KHR = Result 1000268001
 
--- | 'THREAD_IDLE_KHR' A deferred operation is not complete but there is
--- currently no work for this thread to do at the time of this call.
+-- No documentation found for Nested "VkResult" "VK_THREAD_IDLE_KHR"
 pattern THREAD_IDLE_KHR = Result 1000268000
 
--- | 'ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT' An operation on a swapchain
--- created with
--- 'Vulkan.Extensions.VK_EXT_full_screen_exclusive.FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT'
--- failed as it did not have exclusive full-screen access. This /may/ occur
--- due to implementation-dependent reasons, outside of the application’s
--- control.
+-- No documentation found for Nested "VkResult" "VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT"
 pattern ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT = Result (-1000255000)
 
--- | 'ERROR_NOT_PERMITTED_KHR' The driver implementation has denied a request
--- to acquire a priority above the default priority
--- ('Vulkan.Extensions.VK_KHR_global_priority.QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT')
--- because the application does not have sufficient privileges.
-pattern ERROR_NOT_PERMITTED_KHR = Result (-1000174001)
+-- No documentation found for Nested "VkResult" "VK_ERROR_PRESENT_TIMING_QUEUE_FULL_EXT"
+pattern ERROR_PRESENT_TIMING_QUEUE_FULL_EXT = Result (-1000208000)
 
 -- 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.
--- More details are reported back to the application via
--- @VK_EXT_debug_report@ if enabled.
+-- No documentation found for Nested "VkResult" "VK_ERROR_INVALID_SHADER_NV"
 pattern ERROR_INVALID_SHADER_NV = Result (-1000012000)
 
--- | 'ERROR_VALIDATION_FAILED_EXT' A command failed because invalid usage was
--- detected by the implementation or a validation-layer.
-pattern ERROR_VALIDATION_FAILED_EXT = Result (-1000011001)
-
--- | 'ERROR_INCOMPATIBLE_DISPLAY_KHR' The display used by a swapchain does
--- not use the same presentable image layout, or is incompatible in a way
--- that prevents sharing an image.
+-- No documentation found for Nested "VkResult" "VK_ERROR_INCOMPATIBLE_DISPLAY_KHR"
 pattern ERROR_INCOMPATIBLE_DISPLAY_KHR = Result (-1000003001)
 
--- | 'ERROR_OUT_OF_DATE_KHR' A surface has changed in such a way that it is
--- no longer compatible with the swapchain, and further presentation
--- requests using the swapchain will fail. Applications /must/ query the
--- new surface properties and recreate their swapchain if they wish to
--- continue presenting to the surface.
+-- No documentation found for Nested "VkResult" "VK_ERROR_OUT_OF_DATE_KHR"
 pattern ERROR_OUT_OF_DATE_KHR = Result (-1000001004)
 
--- | 'SUBOPTIMAL_KHR' A swapchain no longer matches the surface properties
--- exactly, but /can/ still be used to present to the surface successfully.
+-- No documentation found for Nested "VkResult" "VK_SUBOPTIMAL_KHR"
 pattern SUBOPTIMAL_KHR = Result 1000001003
 
--- | '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.
+-- No documentation found for Nested "VkResult" "VK_ERROR_NATIVE_WINDOW_IN_USE_KHR"
 pattern ERROR_NATIVE_WINDOW_IN_USE_KHR = Result (-1000000001)
 
--- | 'ERROR_SURFACE_LOST_KHR' A surface is no longer available.
+-- No documentation found for Nested "VkResult" "VK_ERROR_SURFACE_LOST_KHR"
 pattern ERROR_SURFACE_LOST_KHR = Result (-1000000000)
 
 -- No documentation found for Nested "VkResult" "VK_ERROR_NO_PIPELINE_MATCH"
@@ -275,35 +411,27 @@
 -- No documentation found for Nested "VkResult" "VK_ERROR_INVALID_PIPELINE_CACHE_DATA"
 pattern ERROR_INVALID_PIPELINE_CACHE_DATA = Result (-1000298000)
 
--- No documentation found for Nested "VkResult" "VK_ERROR_VALIDATION_FAILED"
-pattern ERROR_VALIDATION_FAILED = Result (-1000011001)
+-- No documentation found for Nested "VkResult" "VK_ERROR_NOT_PERMITTED"
+pattern ERROR_NOT_PERMITTED = Result (-1000174001)
 
--- | 'PIPELINE_COMPILE_REQUIRED' A requested pipeline creation would have
--- required compilation, but the application requested compilation to not
--- be performed.
+-- No documentation found for Nested "VkResult" "VK_PIPELINE_COMPILE_REQUIRED"
 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
--- handle information is no longer valid.
-pattern ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS = Result (-1000257000)
-
--- | 'ERROR_FRAGMENTATION' A descriptor pool creation has failed due to
--- fragmentation.
+-- No documentation found for Nested "VkResult" "VK_ERROR_FRAGMENTATION"
 pattern ERROR_FRAGMENTATION = Result (-1000161000)
 
--- | 'ERROR_INVALID_EXTERNAL_HANDLE' An external handle is not a valid handle
--- of the specified type.
+-- No documentation found for Nested "VkResult" "VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS"
+pattern ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS = Result (-1000257000)
+
+-- No documentation found for Nested "VkResult" "VK_ERROR_INVALID_EXTERNAL_HANDLE"
 pattern ERROR_INVALID_EXTERNAL_HANDLE = Result (-1000072003)
 
--- | 'ERROR_OUT_OF_POOL_MEMORY' A pool memory allocation has failed. This
--- /must/ only be returned if no attempt to allocate host or device memory
--- was made to accommodate the new allocation. If the failure was
--- definitely due to fragmentation of the pool, 'ERROR_FRAGMENTED_POOL'
--- /should/ be returned instead.
+-- No documentation found for Nested "VkResult" "VK_ERROR_OUT_OF_POOL_MEMORY"
 pattern ERROR_OUT_OF_POOL_MEMORY = Result (-1000069000)
 
+-- No documentation found for Nested "VkResult" "VK_ERROR_VALIDATION_FAILED"
+pattern ERROR_VALIDATION_FAILED = Result (-1000011001)
+
 {-# COMPLETE
   SUCCESS
   , NOT_READY
@@ -333,10 +461,9 @@
   , THREAD_DONE_KHR
   , THREAD_IDLE_KHR
   , ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT
-  , ERROR_NOT_PERMITTED_KHR
+  , ERROR_PRESENT_TIMING_QUEUE_FULL_EXT
   , ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT
   , ERROR_INVALID_SHADER_NV
-  , ERROR_VALIDATION_FAILED_EXT
   , ERROR_INCOMPATIBLE_DISPLAY_KHR
   , ERROR_OUT_OF_DATE_KHR
   , SUBOPTIMAL_KHR
@@ -344,12 +471,13 @@
   , ERROR_SURFACE_LOST_KHR
   , ERROR_NO_PIPELINE_MATCH
   , ERROR_INVALID_PIPELINE_CACHE_DATA
-  , ERROR_VALIDATION_FAILED
+  , ERROR_NOT_PERMITTED
   , PIPELINE_COMPILE_REQUIRED
-  , ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS
   , ERROR_FRAGMENTATION
+  , ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS
   , ERROR_INVALID_EXTERNAL_HANDLE
-  , ERROR_OUT_OF_POOL_MEMORY ::
+  , ERROR_OUT_OF_POOL_MEMORY
+  , ERROR_VALIDATION_FAILED ::
     Result
   #-}
 
@@ -398,13 +526,15 @@
     ( ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT
     , "ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT"
     )
-  , (ERROR_NOT_PERMITTED_KHR, "ERROR_NOT_PERMITTED_KHR")
   ,
+    ( ERROR_PRESENT_TIMING_QUEUE_FULL_EXT
+    , "ERROR_PRESENT_TIMING_QUEUE_FULL_EXT"
+    )
+  ,
     ( 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")
   ,
     ( ERROR_INCOMPATIBLE_DISPLAY_KHR
     , "ERROR_INCOMPATIBLE_DISPLAY_KHR"
@@ -421,18 +551,19 @@
     ( ERROR_INVALID_PIPELINE_CACHE_DATA
     , "ERROR_INVALID_PIPELINE_CACHE_DATA"
     )
-  , (ERROR_VALIDATION_FAILED, "ERROR_VALIDATION_FAILED")
+  , (ERROR_NOT_PERMITTED, "ERROR_NOT_PERMITTED")
   , (PIPELINE_COMPILE_REQUIRED, "PIPELINE_COMPILE_REQUIRED")
+  , (ERROR_FRAGMENTATION, "ERROR_FRAGMENTATION")
   ,
     ( ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS
     , "ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS"
     )
-  , (ERROR_FRAGMENTATION, "ERROR_FRAGMENTATION")
   ,
     ( ERROR_INVALID_EXTERNAL_HANDLE
     , "ERROR_INVALID_EXTERNAL_HANDLE"
     )
   , (ERROR_OUT_OF_POOL_MEMORY, "ERROR_OUT_OF_POOL_MEMORY")
+  , (ERROR_VALIDATION_FAILED, "ERROR_VALIDATION_FAILED")
   ]
 
 instance Show Result where
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
@@ -28,6 +28,22 @@
 -- | VkSampleCountFlagBits - Bitmask specifying sample counts supported for
 -- an image used for storage operations
 --
+-- = Description
+--
+-- -   'SAMPLE_COUNT_1_BIT' specifies an image with one sample per pixel.
+--
+-- -   'SAMPLE_COUNT_2_BIT' specifies an image with 2 samples per pixel.
+--
+-- -   'SAMPLE_COUNT_4_BIT' specifies an image with 4 samples per pixel.
+--
+-- -   'SAMPLE_COUNT_8_BIT' specifies an image with 8 samples per pixel.
+--
+-- -   'SAMPLE_COUNT_16_BIT' specifies an image with 16 samples per pixel.
+--
+-- -   'SAMPLE_COUNT_32_BIT' specifies an image with 32 samples per pixel.
+--
+-- -   'SAMPLE_COUNT_64_BIT' specifies an image with 64 samples per pixel.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -41,7 +57,7 @@
 -- 'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PhysicalDeviceFragmentShadingRateEnumsPropertiesNV',
 -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PhysicalDeviceFragmentShadingRatePropertiesKHR',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceSparseImageFormatInfo2',
--- 'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo',
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineMultisampleStateCreateInfo',
 -- 'SampleCountFlags',
 -- 'Vulkan.Extensions.VK_EXT_sample_locations.SampleLocationsInfoEXT',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT',
@@ -51,25 +67,25 @@
 newtype SampleCountFlagBits = SampleCountFlagBits Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'SAMPLE_COUNT_1_BIT' specifies an image with one sample per pixel.
+-- No documentation found for Nested "VkSampleCountFlagBits" "VK_SAMPLE_COUNT_1_BIT"
 pattern SAMPLE_COUNT_1_BIT = SampleCountFlagBits 0x00000001
 
--- | 'SAMPLE_COUNT_2_BIT' specifies an image with 2 samples per pixel.
+-- No documentation found for Nested "VkSampleCountFlagBits" "VK_SAMPLE_COUNT_2_BIT"
 pattern SAMPLE_COUNT_2_BIT = SampleCountFlagBits 0x00000002
 
--- | 'SAMPLE_COUNT_4_BIT' specifies an image with 4 samples per pixel.
+-- No documentation found for Nested "VkSampleCountFlagBits" "VK_SAMPLE_COUNT_4_BIT"
 pattern SAMPLE_COUNT_4_BIT = SampleCountFlagBits 0x00000004
 
--- | 'SAMPLE_COUNT_8_BIT' specifies an image with 8 samples per pixel.
+-- No documentation found for Nested "VkSampleCountFlagBits" "VK_SAMPLE_COUNT_8_BIT"
 pattern SAMPLE_COUNT_8_BIT = SampleCountFlagBits 0x00000008
 
--- | 'SAMPLE_COUNT_16_BIT' specifies an image with 16 samples per pixel.
+-- No documentation found for Nested "VkSampleCountFlagBits" "VK_SAMPLE_COUNT_16_BIT"
 pattern SAMPLE_COUNT_16_BIT = SampleCountFlagBits 0x00000010
 
--- | 'SAMPLE_COUNT_32_BIT' specifies an image with 32 samples per pixel.
+-- No documentation found for Nested "VkSampleCountFlagBits" "VK_SAMPLE_COUNT_32_BIT"
 pattern SAMPLE_COUNT_32_BIT = SampleCountFlagBits 0x00000020
 
--- | 'SAMPLE_COUNT_64_BIT' specifies an image with 64 samples per pixel.
+-- No documentation found for Nested "VkSampleCountFlagBits" "VK_SAMPLE_COUNT_64_BIT"
 pattern SAMPLE_COUNT_64_BIT = SampleCountFlagBits 0x00000040
 
 conNameSampleCountFlagBits :: String
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
@@ -20,6 +20,27 @@
 -- | VkSamplerAddressMode - Specify behavior of sampling with texture
 -- coordinates outside an image
 --
+-- = Description
+--
+-- -   'SAMPLER_ADDRESS_MODE_REPEAT' specifies that the repeat wrap mode
+--     will be used.
+--
+-- -   'SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT' specifies that the mirrored
+--     repeat wrap mode will be used.
+--
+-- -   'SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE' specifies that the clamp to
+--     edge wrap mode will be used.
+--
+-- -   'SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER' specifies that the clamp to
+--     border wrap mode will be used.
+--
+-- -   'SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE' specifies that the
+--     mirror clamp to edge wrap mode will be used. This is only valid if
+--     the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-samplerMirrorClampToEdge samplerMirrorClampToEdge>
+--     feature is enabled, or if the @VK_KHR_sampler_mirror_clamp_to_edge@
+--     extension is enabled.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -27,27 +48,19 @@
 newtype SamplerAddressMode = SamplerAddressMode Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'SAMPLER_ADDRESS_MODE_REPEAT' specifies that the repeat wrap mode will
--- be used.
+-- No documentation found for Nested "VkSamplerAddressMode" "VK_SAMPLER_ADDRESS_MODE_REPEAT"
 pattern SAMPLER_ADDRESS_MODE_REPEAT = SamplerAddressMode 0
 
--- | 'SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT' specifies that the mirrored
--- repeat wrap mode will be used.
+-- No documentation found for Nested "VkSamplerAddressMode" "VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT"
 pattern SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT = SamplerAddressMode 1
 
--- | 'SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE' specifies that the clamp to edge
--- wrap mode will be used.
+-- No documentation found for Nested "VkSamplerAddressMode" "VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE"
 pattern SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE = SamplerAddressMode 2
 
--- | 'SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER' specifies that the clamp to
--- border wrap mode will be used.
+-- No documentation found for Nested "VkSamplerAddressMode" "VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER"
 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 the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-samplerMirrorClampToEdge samplerMirrorClampToEdge>
--- feature is enabled, or if the @VK_KHR_sampler_mirror_clamp_to_edge@
--- extension is enabled.
+-- No documentation found for Nested "VkSamplerAddressMode" "VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE"
 pattern SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE = SamplerAddressMode 4
 
 {-# COMPLETE
diff --git a/src/Vulkan/Core10/Enums/SamplerCreateFlagBits.hs b/src/Vulkan/Core10/Enums/SamplerCreateFlagBits.hs
--- a/src/Vulkan/Core10/Enums/SamplerCreateFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/SamplerCreateFlagBits.hs
@@ -28,6 +28,27 @@
 --
 -- = Description
 --
+-- -   #samplers-subsamplesampler# 'SAMPLER_CREATE_SUBSAMPLED_BIT_EXT'
+--     specifies that the sampler will read from an image created with
+--     @flags@ containing
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT'.
+--
+-- -   'SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT' specifies
+--     that the implementation /may/ use approximations when reconstructing
+--     a full color value for texture access from a subsampled image.
+--
+-- -   'SAMPLER_CREATE_NON_SEAMLESS_CUBE_MAP_BIT_EXT' specifies that
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#textures-cubemapedge cube map edge handling>
+--     is not performed.
+--
+-- -   #samplers-imageprocessingsampler#
+--     'SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM' specifies that the
+--     sampler will read from images using only
+--     @OpImageSampleWeightedQCOM@, @OpImageBoxFilterQCOM@,
+--     @OpImageBlockMatchGatherSSDQCOM@, @OpImageBlockMatchGatherSADQCOM@,
+--     @OpImageBlockMatchWindowSSDQCOM@, @OpImageBlockMatchWindowSADQCOM@,
+--     @OpImageBlockMatchSSDQCOM@, or @OpImageBlockMatchSADQCOM@.
+--
 -- The approximations used when
 -- 'SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT' is specified
 -- are implementation defined. Some implementations /may/ interpolate
@@ -35,6 +56,12 @@
 -- this bit /may/ be used to decide whether the interpolation factors are
 -- calculated per fragment or at a coarser granularity.
 --
+-- -   'SAMPLER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT' specifies
+--     that the sampler /can/ be used with descriptor buffers when
+--     capturing and replaying (e.g. for trace capture and replay), see
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.OpaqueCaptureDescriptorDataCreateInfoEXT'
+--     for more detail.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -42,36 +69,19 @@
 newtype SamplerCreateFlagBits = SamplerCreateFlagBits Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | #samplers-imageprocessingsampler#
--- 'SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM' specifies that the sampler
--- will read from images using only @OpImageWeightedSampleQCOM@,
--- @OpImageBoxFilterQCOM@, @OpImageBlockMatchGatherSSDQCOM@,
--- @OpImageBlockMatchGatherSADQCOM@, @OpImageBlockMatchWindowSSDQCOM@,
--- @OpImageBlockMatchWindowSADQCOM@, @OpImageBlockMatchSSDQCOM@, or
--- @OpImageBlockMatchSADQCOM@.
+-- No documentation found for Nested "VkSamplerCreateFlagBits" "VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM"
 pattern SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM = SamplerCreateFlagBits 0x00000010
 
--- | 'SAMPLER_CREATE_NON_SEAMLESS_CUBE_MAP_BIT_EXT' specifies that
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#textures-cubemapedge cube map edge handling>
--- is not performed.
+-- No documentation found for Nested "VkSamplerCreateFlagBits" "VK_SAMPLER_CREATE_NON_SEAMLESS_CUBE_MAP_BIT_EXT"
 pattern SAMPLER_CREATE_NON_SEAMLESS_CUBE_MAP_BIT_EXT = SamplerCreateFlagBits 0x00000004
 
--- | 'SAMPLER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT' specifies that
--- the sampler /can/ be used with descriptor buffers when capturing and
--- replaying (e.g. for trace capture and replay), see
--- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.OpaqueCaptureDescriptorDataCreateInfoEXT'
--- for more detail.
+-- No documentation found for Nested "VkSamplerCreateFlagBits" "VK_SAMPLER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT"
 pattern SAMPLER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = SamplerCreateFlagBits 0x00000008
 
--- | 'SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT' specifies that
--- the implementation /may/ use approximations when reconstructing a full
--- color value for texture access from a subsampled image.
+-- No documentation found for Nested "VkSamplerCreateFlagBits" "VK_SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT"
 pattern SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT = SamplerCreateFlagBits 0x00000002
 
--- | #samplers-subsamplesampler# 'SAMPLER_CREATE_SUBSAMPLED_BIT_EXT'
--- specifies that the sampler will read from an image created with @flags@
--- containing
--- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT'.
+-- No documentation found for Nested "VkSamplerCreateFlagBits" "VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT"
 pattern SAMPLER_CREATE_SUBSAMPLED_BIT_EXT = SamplerCreateFlagBits 0x00000001
 
 conNameSamplerCreateFlagBits :: String
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
@@ -18,8 +18,12 @@
 --
 -- = Description
 --
+-- -   'SAMPLER_MIPMAP_MODE_NEAREST' specifies nearest filtering.
+--
+-- -   'SAMPLER_MIPMAP_MODE_LINEAR' specifies linear filtering.
+--
 -- These modes are described in detail in
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#textures-texel-filtering Texel Filtering>.
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#textures-texel-filtering Texel Filtering>.
 --
 -- = See Also
 --
@@ -28,10 +32,10 @@
 newtype SamplerMipmapMode = SamplerMipmapMode Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'SAMPLER_MIPMAP_MODE_NEAREST' specifies nearest filtering.
+-- No documentation found for Nested "VkSamplerMipmapMode" "VK_SAMPLER_MIPMAP_MODE_NEAREST"
 pattern SAMPLER_MIPMAP_MODE_NEAREST = SamplerMipmapMode 0
 
--- | 'SAMPLER_MIPMAP_MODE_LINEAR' specifies linear filtering.
+-- No documentation found for Nested "VkSamplerMipmapMode" "VK_SAMPLER_MIPMAP_MODE_LINEAR"
 pattern SAMPLER_MIPMAP_MODE_LINEAR = SamplerMipmapMode 1
 
 {-# COMPLETE
diff --git a/src/Vulkan/Core10/Enums/ShaderStageFlagBits.hs b/src/Vulkan/Core10/Enums/ShaderStageFlagBits.hs
--- a/src/Vulkan/Core10/Enums/ShaderStageFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/ShaderStageFlagBits.hs
@@ -40,6 +40,48 @@
 --
 -- = Description
 --
+-- -   'SHADER_STAGE_VERTEX_BIT' specifies the vertex stage.
+--
+-- -   'SHADER_STAGE_TESSELLATION_CONTROL_BIT' specifies the tessellation
+--     control stage.
+--
+-- -   'SHADER_STAGE_TESSELLATION_EVALUATION_BIT' specifies the
+--     tessellation evaluation stage.
+--
+-- -   'SHADER_STAGE_GEOMETRY_BIT' specifies the geometry stage.
+--
+-- -   'SHADER_STAGE_FRAGMENT_BIT' specifies the fragment stage.
+--
+-- -   'SHADER_STAGE_COMPUTE_BIT' specifies the compute stage.
+--
+-- -   'SHADER_STAGE_ALL_GRAPHICS' is a combination of bits used as
+--     shorthand to specify all graphics stages defined above (excluding
+--     the compute stage).
+--
+-- -   'SHADER_STAGE_ALL' is a combination of bits used as shorthand to
+--     specify all shader stages supported by the device, including all
+--     additional stages which are introduced by extensions.
+--
+-- -   'SHADER_STAGE_TASK_BIT_EXT' specifies the task stage.
+--
+-- -   'SHADER_STAGE_MESH_BIT_EXT' specifies the mesh stage.
+--
+-- -   'SHADER_STAGE_CLUSTER_CULLING_BIT_HUAWEI' specifies the cluster
+--     culling stage.
+--
+-- -   'SHADER_STAGE_RAYGEN_BIT_KHR' specifies the ray generation stage.
+--
+-- -   'SHADER_STAGE_ANY_HIT_BIT_KHR' specifies the any-hit stage.
+--
+-- -   'SHADER_STAGE_CLOSEST_HIT_BIT_KHR' specifies the closest hit stage.
+--
+-- -   'SHADER_STAGE_MISS_BIT_KHR' specifies the miss stage.
+--
+-- -   'SHADER_STAGE_INTERSECTION_BIT_KHR' specifies the intersection
+--     stage.
+--
+-- -   'SHADER_STAGE_CALLABLE_BIT_KHR' specifies the callable stage.
+--
 -- 'SHADER_STAGE_ALL_GRAPHICS' only includes the original five graphics
 -- stages included in Vulkan 1.0, and not any stages added by extensions.
 -- Thus, it may not have the desired effect in all cases.
@@ -47,7 +89,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.Core10.Pipeline.PipelineShaderStageCreateInfo',
+-- 'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo',
 -- 'Vulkan.Extensions.VK_EXT_shader_object.ShaderCreateInfoEXT',
 -- 'ShaderStageFlags',
 -- 'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT',
@@ -55,65 +97,58 @@
 newtype ShaderStageFlagBits = ShaderStageFlagBits Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'SHADER_STAGE_VERTEX_BIT' specifies the vertex stage.
+-- No documentation found for Nested "VkShaderStageFlagBits" "VK_SHADER_STAGE_VERTEX_BIT"
 pattern SHADER_STAGE_VERTEX_BIT = ShaderStageFlagBits 0x00000001
 
--- | 'SHADER_STAGE_TESSELLATION_CONTROL_BIT' specifies the tessellation
--- control stage.
+-- No documentation found for Nested "VkShaderStageFlagBits" "VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT"
 pattern SHADER_STAGE_TESSELLATION_CONTROL_BIT = ShaderStageFlagBits 0x00000002
 
--- | 'SHADER_STAGE_TESSELLATION_EVALUATION_BIT' specifies the tessellation
--- evaluation stage.
+-- No documentation found for Nested "VkShaderStageFlagBits" "VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT"
 pattern SHADER_STAGE_TESSELLATION_EVALUATION_BIT = ShaderStageFlagBits 0x00000004
 
--- | 'SHADER_STAGE_GEOMETRY_BIT' specifies the geometry stage.
+-- No documentation found for Nested "VkShaderStageFlagBits" "VK_SHADER_STAGE_GEOMETRY_BIT"
 pattern SHADER_STAGE_GEOMETRY_BIT = ShaderStageFlagBits 0x00000008
 
--- | 'SHADER_STAGE_FRAGMENT_BIT' specifies the fragment stage.
+-- No documentation found for Nested "VkShaderStageFlagBits" "VK_SHADER_STAGE_FRAGMENT_BIT"
 pattern SHADER_STAGE_FRAGMENT_BIT = ShaderStageFlagBits 0x00000010
 
--- | 'SHADER_STAGE_COMPUTE_BIT' specifies the compute stage.
+-- No documentation found for Nested "VkShaderStageFlagBits" "VK_SHADER_STAGE_COMPUTE_BIT"
 pattern SHADER_STAGE_COMPUTE_BIT = ShaderStageFlagBits 0x00000020
 
--- | 'SHADER_STAGE_ALL_GRAPHICS' is a combination of bits used as shorthand
--- to specify all graphics stages defined above (excluding the compute
--- stage).
+-- No documentation found for Nested "VkShaderStageFlagBits" "VK_SHADER_STAGE_ALL_GRAPHICS"
 pattern SHADER_STAGE_ALL_GRAPHICS = ShaderStageFlagBits 0x0000001f
 
--- | 'SHADER_STAGE_ALL' is a combination of bits used as shorthand to specify
--- all shader stages supported by the device, including all additional
--- stages which are introduced by extensions.
+-- No documentation found for Nested "VkShaderStageFlagBits" "VK_SHADER_STAGE_ALL"
 pattern SHADER_STAGE_ALL = ShaderStageFlagBits 0x7fffffff
 
--- | 'SHADER_STAGE_CLUSTER_CULLING_BIT_HUAWEI' specifies the cluster culling
--- stage.
+-- No documentation found for Nested "VkShaderStageFlagBits" "VK_SHADER_STAGE_CLUSTER_CULLING_BIT_HUAWEI"
 pattern SHADER_STAGE_CLUSTER_CULLING_BIT_HUAWEI = ShaderStageFlagBits 0x00080000
 
 -- No documentation found for Nested "VkShaderStageFlagBits" "VK_SHADER_STAGE_SUBPASS_SHADING_BIT_HUAWEI"
 pattern SHADER_STAGE_SUBPASS_SHADING_BIT_HUAWEI = ShaderStageFlagBits 0x00004000
 
--- | 'SHADER_STAGE_MESH_BIT_EXT' specifies the mesh stage.
+-- No documentation found for Nested "VkShaderStageFlagBits" "VK_SHADER_STAGE_MESH_BIT_EXT"
 pattern SHADER_STAGE_MESH_BIT_EXT = ShaderStageFlagBits 0x00000080
 
--- | 'SHADER_STAGE_TASK_BIT_EXT' specifies the task stage.
+-- No documentation found for Nested "VkShaderStageFlagBits" "VK_SHADER_STAGE_TASK_BIT_EXT"
 pattern SHADER_STAGE_TASK_BIT_EXT = ShaderStageFlagBits 0x00000040
 
--- | 'SHADER_STAGE_CALLABLE_BIT_KHR' specifies the callable stage.
+-- No documentation found for Nested "VkShaderStageFlagBits" "VK_SHADER_STAGE_CALLABLE_BIT_KHR"
 pattern SHADER_STAGE_CALLABLE_BIT_KHR = ShaderStageFlagBits 0x00002000
 
--- | 'SHADER_STAGE_INTERSECTION_BIT_KHR' specifies the intersection stage.
+-- No documentation found for Nested "VkShaderStageFlagBits" "VK_SHADER_STAGE_INTERSECTION_BIT_KHR"
 pattern SHADER_STAGE_INTERSECTION_BIT_KHR = ShaderStageFlagBits 0x00001000
 
--- | 'SHADER_STAGE_MISS_BIT_KHR' specifies the miss stage.
+-- No documentation found for Nested "VkShaderStageFlagBits" "VK_SHADER_STAGE_MISS_BIT_KHR"
 pattern SHADER_STAGE_MISS_BIT_KHR = ShaderStageFlagBits 0x00000800
 
--- | 'SHADER_STAGE_CLOSEST_HIT_BIT_KHR' specifies the closest hit stage.
+-- No documentation found for Nested "VkShaderStageFlagBits" "VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR"
 pattern SHADER_STAGE_CLOSEST_HIT_BIT_KHR = ShaderStageFlagBits 0x00000400
 
--- | 'SHADER_STAGE_ANY_HIT_BIT_KHR' specifies the any-hit stage.
+-- No documentation found for Nested "VkShaderStageFlagBits" "VK_SHADER_STAGE_ANY_HIT_BIT_KHR"
 pattern SHADER_STAGE_ANY_HIT_BIT_KHR = ShaderStageFlagBits 0x00000200
 
--- | 'SHADER_STAGE_RAYGEN_BIT_KHR' specifies the ray generation stage.
+-- No documentation found for Nested "VkShaderStageFlagBits" "VK_SHADER_STAGE_RAYGEN_BIT_KHR"
 pattern SHADER_STAGE_RAYGEN_BIT_KHR = ShaderStageFlagBits 0x00000100
 
 conNameShaderStageFlagBits :: String
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
@@ -18,6 +18,14 @@
 --
 -- = Description
 --
+-- -   'SHARING_MODE_EXCLUSIVE' specifies that access to any range or image
+--     subresource of the object will be exclusive to a single queue family
+--     at a time.
+--
+-- -   'SHARING_MODE_CONCURRENT' specifies that concurrent access to any
+--     range or image subresource of the object from multiple queue
+--     families is supported.
+--
 -- 'SHARING_MODE_CONCURRENT' /may/ result in lower performance access to
 -- the buffer or image than 'SHARING_MODE_EXCLUSIVE'.
 --
@@ -26,48 +34,113 @@
 -- family that has /ownership/ of the resource. Upon creation, such
 -- resources are not owned by any queue family; ownership is implicitly
 -- 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://registry.khronos.org/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.
+-- 'SHARING_MODE_EXCLUSIVE' is owned by some queue family, unless the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance9 maintenance9>
+-- feature is enabled, the application /must/ perform a
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>
+-- if it wishes to make the memory contents of a range or image subresource
+-- accessible to a different queue family. 'SHARING_MODE_EXCLUSIVE'
+-- resources that are already owned by a queue family /may/ be acquired by
+-- a different queue family without a queue family ownership transfer, but
+-- unless the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance9 maintenance9>
+-- feature is enabled, their contents become undefined.
 --
--- Images still require a
--- <https://registry.khronos.org/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.
+-- If the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance9 maintenance9>
+-- feature is enabled, the contents of buffer resources, and of linear
+-- image resources (i.e., those created with @tiling@ set to
+-- 'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR') are always
+-- preserved when they are implicitly acquired by a different queue family
+-- on the same logical device (i.e., neither queue family is
+-- 'Vulkan.Core10.APIConstants.QUEUE_FAMILY_FOREIGN_EXT' or
+-- 'Vulkan.Core10.APIConstants.QUEUE_FAMILY_EXTERNAL'). This means that
+-- whenever the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance9 maintenance9>
+-- feature is enabled, explicit queue family ownership transfers of buffer
+-- and linear image resources between different queue families on the same
+-- logical device are /optional/.
 --
--- A queue family /can/ take ownership of an image subresource or buffer
--- range of a resource created with 'SHARING_MODE_EXCLUSIVE', without an
--- ownership transfer, in the same way as for a resource that was just
--- created; however, taking ownership in this way has the effect that the
--- contents of the image subresource or buffer range are undefined.
+-- Additionally, if the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance9 maintenance9>
+-- feature is enabled, the contents of some optimal image resources (i.e.,
+-- those created with
+-- 'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL') are always
+-- preserved when they are implicitly acquired by a different queue family
+-- on the same logical device (i.e., neither queue family is
+-- 'Vulkan.Core10.APIConstants.QUEUE_FAMILY_FOREIGN_EXT' or
+-- 'Vulkan.Core10.APIConstants.QUEUE_FAMILY_EXTERNAL'). This applies only
+-- to optimal images that are being implicitly acquired by a queue family
+-- whose index bit is set in the current queue family’s
+-- 'Vulkan.Extensions.VK_KHR_maintenance9.QueueFamilyOwnershipTransferPropertiesKHR'::@optimalImageTransferToQueueFamilies@,
+-- and that were created without any of the following bits set in @usage@:
 --
--- Ranges of buffers and image subresources of image objects created using
--- 'SHARING_MODE_CONCURRENT' /must/ only be accessed by queues from the
--- queue families specified through the @queueFamilyIndexCount@ and
--- @pQueueFamilyIndices@ members of the corresponding create info
--- structures.
+-- -   'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT'
 --
+-- -   'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'
+--
+-- -   'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT'
+--
+-- -   'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT'
+--
+-- -   'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT'
+--
+-- -   'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
+--
+-- This means that whenever the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance9 maintenance9>
+-- feature is enabled, explicit queue family ownership transfers of such
+-- image resources between such combinations of queue families are
+-- /optional/. For all other optimal images and\/or combinations of queue
+-- families, the application /must/ still perform an explicit queue family
+-- ownership transfer if it wishes to make the memory contents of an
+-- optimal image subresource already owned by a queue family accessible to
+-- a different queue family.
+--
+-- Applications are allowed to perform explicit queue family ownership
+-- transfers in circumstances where they are not required, but there is no
+-- functional nor performance advantage in doing so. Performing explicit
+-- transfers in such cases remains supported for backward compatibility and
+-- is not recommended for new applications.
+--
+-- Before being used on the first queue, images still require a
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-image-layouts layout transition>
+-- from these layouts:
+--
+-- -   'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_UNDEFINED'
+--
+-- -   'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_PREINITIALIZED'
+--
+-- -   'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ZERO_INITIALIZED_EXT'
+--
+-- A queue family /can/ take ownership of an image subresource, tensor
+-- subresource, or buffer range of a resource created with
+-- 'SHARING_MODE_EXCLUSIVE', without an ownership transfer, in the same way
+-- as for a resource that was just created; however, taking ownership in
+-- this way has the effect that the contents of the image subresource or
+-- buffer range are undefined.
+--
+-- Ranges of buffers, tensor subresources of tensor objects, and image
+-- subresources of image objects created using 'SHARING_MODE_CONCURRENT'
+-- /must/ only be accessed by queues from the queue families specified
+-- through the @queueFamilyIndexCount@ and @pQueueFamilyIndices@ members of
+-- the corresponding create info structures.
+--
 -- = 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.Buffer.BufferCreateInfo',
 -- 'Vulkan.Core10.Image.ImageCreateInfo',
 -- 'Vulkan.Extensions.VK_EXT_image_drm_format_modifier.PhysicalDeviceImageDrmFormatModifierInfoEXT',
--- 'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR'
+-- 'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR',
+-- 'Vulkan.Extensions.VK_ARM_tensors.TensorCreateInfoARM'
 newtype SharingMode = SharingMode Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'SHARING_MODE_EXCLUSIVE' specifies that access to any range or image
--- subresource of the object will be exclusive to a single queue family at
--- a time.
+-- No documentation found for Nested "VkSharingMode" "VK_SHARING_MODE_EXCLUSIVE"
 pattern SHARING_MODE_EXCLUSIVE = SharingMode 0
 
--- | 'SHARING_MODE_CONCURRENT' specifies that concurrent access to any range
--- or image subresource of the object from multiple queue families is
--- supported.
+-- No documentation found for Nested "VkSharingMode" "VK_SHARING_MODE_CONCURRENT"
 pattern SHARING_MODE_CONCURRENT = SharingMode 1
 
 {-# COMPLETE
diff --git a/src/Vulkan/Core10/Enums/SparseImageFormatFlagBits.hs b/src/Vulkan/Core10/Enums/SparseImageFormatFlagBits.hs
--- a/src/Vulkan/Core10/Enums/SparseImageFormatFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/SparseImageFormatFlagBits.hs
@@ -24,6 +24,21 @@
 -- | VkSparseImageFormatFlagBits - Bitmask specifying additional information
 -- about a sparse image resource
 --
+-- = Description
+--
+-- -   'SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT' specifies that the image
+--     uses a single mip tail region for all array layers.
+--
+-- -   'SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT' specifies that the first
+--     mip level whose dimensions are not integer multiples of the
+--     corresponding dimensions of the sparse image block begins the mip
+--     tail region.
+--
+-- -   'SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT' specifies that the
+--     image uses non-standard sparse image block dimensions, and the
+--     @imageGranularity@ values do not match the standard sparse image
+--     block dimensions for the given format.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -31,19 +46,13 @@
 newtype SparseImageFormatFlagBits = SparseImageFormatFlagBits Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT' specifies that the image uses a
--- single mip tail region for all array layers.
+-- No documentation found for Nested "VkSparseImageFormatFlagBits" "VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT"
 pattern SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT = SparseImageFormatFlagBits 0x00000001
 
--- | 'SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT' specifies that the first mip
--- level whose dimensions are not integer multiples of the corresponding
--- dimensions of the sparse image block begins the mip tail region.
+-- No documentation found for Nested "VkSparseImageFormatFlagBits" "VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT"
 pattern SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT = SparseImageFormatFlagBits 0x00000002
 
--- | 'SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT' specifies that the
--- image uses non-standard sparse image block dimensions, and the
--- @imageGranularity@ values do not match the standard sparse image block
--- dimensions for the given format.
+-- No documentation found for Nested "VkSparseImageFormatFlagBits" "VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT"
 pattern SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT = SparseImageFormatFlagBits 0x00000004
 
 conNameSparseImageFormatFlagBits :: String
diff --git a/src/Vulkan/Core10/Enums/SparseMemoryBindFlagBits.hs b/src/Vulkan/Core10/Enums/SparseMemoryBindFlagBits.hs
--- a/src/Vulkan/Core10/Enums/SparseMemoryBindFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/SparseMemoryBindFlagBits.hs
@@ -22,6 +22,11 @@
 -- | VkSparseMemoryBindFlagBits - Bitmask specifying usage of a sparse memory
 -- binding operation
 --
+-- = Description
+--
+-- -   'SPARSE_MEMORY_BIND_METADATA_BIT' specifies that the memory being
+--     bound is only for the metadata aspect.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -29,8 +34,7 @@
 newtype SparseMemoryBindFlagBits = SparseMemoryBindFlagBits Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'SPARSE_MEMORY_BIND_METADATA_BIT' specifies that the memory being bound
--- is only for the metadata aspect.
+-- No documentation found for Nested "VkSparseMemoryBindFlagBits" "VK_SPARSE_MEMORY_BIND_METADATA_BIT"
 pattern SPARSE_MEMORY_BIND_METADATA_BIT = SparseMemoryBindFlagBits 0x00000001
 
 conNameSparseMemoryBindFlagBits :: String
diff --git a/src/Vulkan/Core10/Enums/StencilFaceFlagBits.hs b/src/Vulkan/Core10/Enums/StencilFaceFlagBits.hs
--- a/src/Vulkan/Core10/Enums/StencilFaceFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/StencilFaceFlagBits.hs
@@ -29,6 +29,18 @@
 -- | VkStencilFaceFlagBits - Bitmask specifying sets of stencil state for
 -- which to update the compare mask
 --
+-- = Description
+--
+-- -   'STENCIL_FACE_FRONT_BIT' specifies that only the front set of
+--     stencil state is updated.
+--
+-- -   'STENCIL_FACE_BACK_BIT' specifies that only the back set of stencil
+--     state is updated.
+--
+-- -   'STENCIL_FACE_FRONT_AND_BACK' is the combination of
+--     'STENCIL_FACE_FRONT_BIT' and 'STENCIL_FACE_BACK_BIT', and specifies
+--     that both sets of stencil state are updated.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -36,17 +48,13 @@
 newtype StencilFaceFlagBits = StencilFaceFlagBits Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'STENCIL_FACE_FRONT_BIT' specifies that only the front set of stencil
--- state is updated.
+-- No documentation found for Nested "VkStencilFaceFlagBits" "VK_STENCIL_FACE_FRONT_BIT"
 pattern STENCIL_FACE_FRONT_BIT = StencilFaceFlagBits 0x00000001
 
--- | 'STENCIL_FACE_BACK_BIT' specifies that only the back set of stencil
--- state is updated.
+-- No documentation found for Nested "VkStencilFaceFlagBits" "VK_STENCIL_FACE_BACK_BIT"
 pattern STENCIL_FACE_BACK_BIT = StencilFaceFlagBits 0x00000002
 
--- | 'STENCIL_FACE_FRONT_AND_BACK' is the combination of
--- 'STENCIL_FACE_FRONT_BIT' and 'STENCIL_FACE_BACK_BIT', and specifies that
--- both sets of stencil state are updated.
+-- No documentation found for Nested "VkStencilFaceFlagBits" "VK_STENCIL_FACE_FRONT_AND_BACK"
 pattern STENCIL_FACE_FRONT_AND_BACK = StencilFaceFlagBits 0x00000003
 
 conNameStencilFaceFlagBits :: String
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
@@ -24,44 +24,60 @@
 --
 -- = Description
 --
+-- -   'STENCIL_OP_KEEP' keeps the current value.
+--
+-- -   'STENCIL_OP_ZERO' sets the value to 0.
+--
+-- -   'STENCIL_OP_REPLACE' sets the value to @reference@.
+--
+-- -   'STENCIL_OP_INCREMENT_AND_CLAMP' increments the current value and
+--     clamps to the maximum representable unsigned value.
+--
+-- -   'STENCIL_OP_DECREMENT_AND_CLAMP' decrements the current value and
+--     clamps to 0.
+--
+-- -   'STENCIL_OP_INVERT' bitwise-inverts the current value.
+--
+-- -   'STENCIL_OP_INCREMENT_AND_WRAP' increments the current value and
+--     wraps to 0 when the maximum value would have been exceeded.
+--
+-- -   'STENCIL_OP_DECREMENT_AND_WRAP' decrements the current value and
+--     wraps to the maximum possible value when the value would go below 0.
+--
 -- For purposes of increment and decrement, the stencil bits are considered
 -- as an unsigned integer.
 --
 -- = 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.Pipeline.StencilOpState',
+-- 'Vulkan.Core10.GraphicsPipeline.StencilOpState',
 -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilOp',
--- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetStencilOpEXT'
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilOp'
 newtype StencilOp = StencilOp Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'STENCIL_OP_KEEP' keeps the current value.
+-- No documentation found for Nested "VkStencilOp" "VK_STENCIL_OP_KEEP"
 pattern STENCIL_OP_KEEP = StencilOp 0
 
--- | 'STENCIL_OP_ZERO' sets the value to 0.
+-- No documentation found for Nested "VkStencilOp" "VK_STENCIL_OP_ZERO"
 pattern STENCIL_OP_ZERO = StencilOp 1
 
--- | 'STENCIL_OP_REPLACE' sets the value to @reference@.
+-- No documentation found for Nested "VkStencilOp" "VK_STENCIL_OP_REPLACE"
 pattern STENCIL_OP_REPLACE = StencilOp 2
 
--- | 'STENCIL_OP_INCREMENT_AND_CLAMP' increments the current value and clamps
--- to the maximum representable unsigned value.
+-- No documentation found for Nested "VkStencilOp" "VK_STENCIL_OP_INCREMENT_AND_CLAMP"
 pattern STENCIL_OP_INCREMENT_AND_CLAMP = StencilOp 3
 
--- | 'STENCIL_OP_DECREMENT_AND_CLAMP' decrements the current value and clamps
--- to 0.
+-- No documentation found for Nested "VkStencilOp" "VK_STENCIL_OP_DECREMENT_AND_CLAMP"
 pattern STENCIL_OP_DECREMENT_AND_CLAMP = StencilOp 4
 
--- | 'STENCIL_OP_INVERT' bitwise-inverts the current value.
+-- No documentation found for Nested "VkStencilOp" "VK_STENCIL_OP_INVERT"
 pattern STENCIL_OP_INVERT = StencilOp 5
 
--- | 'STENCIL_OP_INCREMENT_AND_WRAP' increments the current value and wraps
--- to 0 when the maximum value would have been exceeded.
+-- No documentation found for Nested "VkStencilOp" "VK_STENCIL_OP_INCREMENT_AND_WRAP"
 pattern STENCIL_OP_INCREMENT_AND_WRAP = StencilOp 6
 
--- | 'STENCIL_OP_DECREMENT_AND_WRAP' decrements the current value and wraps
--- to the maximum possible value when the value would go below 0.
+-- No documentation found for Nested "VkStencilOp" "VK_STENCIL_OP_DECREMENT_AND_WRAP"
 pattern STENCIL_OP_DECREMENT_AND_WRAP = StencilOp 7
 
 {-# COMPLETE
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
@@ -51,8819 +51,11074 @@
                                                          , STRUCTURE_TYPE_MEMORY_BARRIER
                                                          , STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO
                                                          , STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_ROBUSTNESS_FEATURES_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_PROPERTIES_NV
-                                                         , STRUCTURE_TYPE_COOPERATIVE_MATRIX_FLEXIBLE_DIMENSIONS_PROPERTIES_NV
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_FEATURES_NV
-                                                         , STRUCTURE_TYPE_HDR_VIVID_DYNAMIC_METADATA_HUAWEI
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_HDR_VIVID_FEATURES_HUAWEI
-                                                         , STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLAMP_CONTROL_CREATE_INFO_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_CONTROL_FEATURES_EXT
-                                                         , STRUCTURE_TYPE_IMAGE_ALIGNMENT_CONTROL_CREATE_INFO_MESA
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_PROPERTIES_MESA
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_FEATURES_MESA
-                                                         , STRUCTURE_TYPE_GENERATED_COMMANDS_SHADER_INFO_EXT
-                                                         , STRUCTURE_TYPE_GENERATED_COMMANDS_PIPELINE_INFO_EXT
-                                                         , STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXT
-                                                         , STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_INFO_EXT
-                                                         , STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXT
-                                                         , STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_SHADER_EXT
-                                                         , STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXT
-                                                         , STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_EXT
-                                                         , STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXT
-                                                         , STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_EXT
-                                                         , STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_CREATE_INFO_EXT
-                                                         , STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_VALIDATION_FEATURES_NV
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_REPLICATED_COMPOSITES_FEATURES_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT16_VECTOR_FEATURES_NV
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_VULKAN_PROPERTIES_KHR
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_KHR
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_LIST_KHR
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_PROPERTIES_KHR
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_FEATURES_KHR
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_COMMAND_BUFFER_INHERITANCE_FEATURES_NV
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_RELAXED_EXTENDED_INSTRUCTION_FEATURES_KHR
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_RAW_ACCESS_CHAINS_FEATURES_NV
-                                                         , STRUCTURE_TYPE_DISPLAY_MODE_STEREO_PROPERTIES_NV
-                                                         , STRUCTURE_TYPE_DISPLAY_SURFACE_STEREO_CREATE_INFO_NV
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_POOL_OVERALLOCATION_FEATURES_NV
-                                                         , STRUCTURE_TYPE_BIND_DESCRIPTOR_BUFFER_EMBEDDED_SAMPLERS_INFO_EXT
-                                                         , STRUCTURE_TYPE_SET_DESCRIPTOR_BUFFER_OFFSETS_INFO_EXT
-                                                         , STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO_KHR
-                                                         , STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_INFO_KHR
-                                                         , STRUCTURE_TYPE_PUSH_CONSTANTS_INFO_KHR
-                                                         , STRUCTURE_TYPE_BIND_DESCRIPTOR_SETS_INFO_KHR
-                                                         , STRUCTURE_TYPE_BIND_MEMORY_STATUS_KHR
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES_KHR
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES_KHR
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES_KHR
-                                                         , STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_KHR
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_KHR
-                                                         , STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_KHR
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_KHR
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_KHR
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_DRIVER_PROPERTIES_MSFT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCREEN_BUFFER_FEATURES_QNX
-                                                         , STRUCTURE_TYPE_EXTERNAL_FORMAT_QNX
-                                                         , STRUCTURE_TYPE_IMPORT_SCREEN_BUFFER_INFO_QNX
-                                                         , STRUCTURE_TYPE_SCREEN_BUFFER_FORMAT_PROPERTIES_QNX
-                                                         , STRUCTURE_TYPE_SCREEN_BUFFER_PROPERTIES_QNX
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES_KHR
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_KHR
-                                                         , STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_KHR
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_KHR
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_FEATURES_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_CLAMP_FEATURES_QCOM
-                                                         , STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_YCBCR_DEGAMMA_CREATE_INFO_QCOM
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_DEGAMMA_FEATURES_QCOM
-                                                         , STRUCTURE_TYPE_BLIT_IMAGE_CUBIC_WEIGHTS_INFO_QCOM
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_WEIGHTS_FEATURES_QCOM
-                                                         , STRUCTURE_TYPE_SAMPLER_CUBIC_WEIGHTS_CREATE_INFO_QCOM
-                                                         , STRUCTURE_TYPE_SAMPLER_BLOCK_MATCH_WINDOW_CREATE_INFO_QCOM
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_PROPERTIES_QCOM
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_FEATURES_QCOM
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_PER_STAGE_DESCRIPTOR_SET_FEATURES_NV
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_PROPERTIES_KHR
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_KHR
-                                                         , STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_RENDER_AREAS_RENDER_PASS_BEGIN_INFO_QCOM
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_RENDER_AREAS_FEATURES_QCOM
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_KHR
-                                                         , STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_KHR
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_KHR
-                                                         , STRUCTURE_TYPE_LATENCY_SURFACE_CAPABILITIES_NV
-                                                         , STRUCTURE_TYPE_SWAPCHAIN_LATENCY_CREATE_INFO_NV
-                                                         , STRUCTURE_TYPE_OUT_OF_BAND_QUEUE_TYPE_INFO_NV
-                                                         , STRUCTURE_TYPE_LATENCY_SUBMISSION_PRESENT_ID_NV
-                                                         , STRUCTURE_TYPE_LATENCY_TIMINGS_FRAME_REPORT_NV
-                                                         , STRUCTURE_TYPE_GET_LATENCY_MARKER_INFO_NV
-                                                         , STRUCTURE_TYPE_SET_LATENCY_MARKER_INFO_NV
-                                                         , STRUCTURE_TYPE_LATENCY_SLEEP_INFO_NV
-                                                         , STRUCTURE_TYPE_LATENCY_SLEEP_MODE_INFO_NV
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_FEATURES_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_PROPERTIES_ARM
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM
-                                                         , STRUCTURE_TYPE_LAYER_SETTINGS_CREATE_INFO_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_PROPERTIES_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_FEATURES_EXT
-                                                         , STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_PROPERTIES_NV
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_FEATURES_NV
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_VIEWPORTS_FEATURES_QCOM
-                                                         , STRUCTURE_TYPE_AMIGO_PROFILING_SUBMIT_INFO_SEC
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_AMIGO_PROFILING_FEATURES_SEC
-                                                         , STRUCTURE_TYPE_TILE_PROPERTIES_QCOM
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM
-                                                         , STRUCTURE_TYPE_PIPELINE_BINARY_HANDLES_INFO_KHR
-                                                         , STRUCTURE_TYPE_DEVICE_PIPELINE_BINARY_INTERNAL_CACHE_CONTROL_KHR
-                                                         , STRUCTURE_TYPE_PIPELINE_CREATE_INFO_KHR
-                                                         , STRUCTURE_TYPE_PIPELINE_BINARY_DATA_INFO_KHR
-                                                         , STRUCTURE_TYPE_RELEASE_CAPTURED_PIPELINE_DATA_INFO_KHR
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_BINARY_PROPERTIES_KHR
-                                                         , STRUCTURE_TYPE_PIPELINE_BINARY_KEY_KHR
-                                                         , STRUCTURE_TYPE_PIPELINE_BINARY_INFO_KHR
-                                                         , STRUCTURE_TYPE_PIPELINE_BINARY_CREATE_INFO_KHR
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_BINARY_FEATURES_KHR
-                                                         , STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT
-                                                         , STRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT
-                                                         , STRUCTURE_TYPE_SHADER_CREATE_INFO_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_PROPERTIES_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_POSITION_FETCH_FEATURES_KHR
-                                                         , STRUCTURE_TYPE_ANTI_LAG_PRESENTATION_INFO_AMD
-                                                         , STRUCTURE_TYPE_ANTI_LAG_DATA_AMD
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_ANTI_LAG_FEATURES_AMD
-                                                         , STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO_KHR
-                                                         , STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO_KHR
-                                                         , STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_KHR
-                                                         , STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_KHR
-                                                         , STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO_KHR
-                                                         , STRUCTURE_TYPE_RENDERING_AREA_INFO_KHR
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES_KHR
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES_KHR
-                                                         , STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_RESOLVE_PROPERTIES_ANDROID
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_PROPERTIES_ANDROID
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_FEATURES_ANDROID
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT
-                                                         , STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_PRIVATE_DATA_INFO_NV
-                                                         , STRUCTURE_TYPE_OPTICAL_FLOW_EXECUTE_INFO_NV
-                                                         , STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_INFO_NV
-                                                         , STRUCTURE_TYPE_OPTICAL_FLOW_IMAGE_FORMAT_PROPERTIES_NV
-                                                         , STRUCTURE_TYPE_OPTICAL_FLOW_IMAGE_FORMAT_INFO_NV
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_PROPERTIES_NV
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_FEATURES_NV
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_EXT
-                                                         , STRUCTURE_TYPE_SHADER_MODULE_IDENTIFIER_EXT
-                                                         , STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_MODULE_IDENTIFIER_CREATE_INFO_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_PROPERTIES_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT
-                                                         , STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_LIST_LUNARG
-                                                         , STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_INFO_LUNARG
-                                                         , STRUCTURE_TYPE_RENDER_PASS_SUBPASS_FEEDBACK_CREATE_INFO_EXT
-                                                         , STRUCTURE_TYPE_RENDER_PASS_CREATION_FEEDBACK_CREATE_INFO_EXT
-                                                         , STRUCTURE_TYPE_RENDER_PASS_CREATION_CONTROL_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT
-                                                         , STRUCTURE_TYPE_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_PROPERTIES_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_FEATURES_EXT
-                                                         , STRUCTURE_TYPE_IMAGE_VIEW_SAMPLE_WEIGHT_CREATE_INFO_QCOM
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_PROPERTIES_QCOM
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MAXIMAL_RECONVERGENCE_FEATURES_KHR
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV
-                                                         , STRUCTURE_TYPE_PIPELINE_INDIRECT_DEVICE_ADDRESS_INFO_NV
-                                                         , STRUCTURE_TYPE_COMPUTE_PIPELINE_INDIRECT_BUFFER_INFO_NV
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_COMPUTE_FEATURES_NV
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NV
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_NV
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV
-                                                         , STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM
-                                                         , STRUCTURE_TYPE_RENDER_PASS_STRIPE_SUBMIT_INFO_ARM
-                                                         , STRUCTURE_TYPE_RENDER_PASS_STRIPE_INFO_ARM
-                                                         , STRUCTURE_TYPE_RENDER_PASS_STRIPE_BEGIN_INFO_ARM
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_PROPERTIES_ARM
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_FEATURES_ARM
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT
-                                                         , STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE
-                                                         , STRUCTURE_TYPE_DESCRIPTOR_SET_BINDING_REFERENCE_VALVE
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE
-                                                         , STRUCTURE_TYPE_IMAGE_VIEW_SLICED_CREATE_INFO_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_SLICED_VIEW_OF_3D_FEATURES_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_PROPERTIES_ARM
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_FEATURES_ARM
-                                                         , STRUCTURE_TYPE_DEVICE_QUEUE_SHADER_CORE_CONTROL_CREATE_INFO_ARM
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES_KHR
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_ARM
-                                                         , 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
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_VRS_FEATURES_HUAWEI
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI
-                                                         , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_DISPLACEMENT_MICROMAP_NV
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_PROPERTIES_NV
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_FEATURES_NV
-                                                         , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT
-                                                         , STRUCTURE_TYPE_MICROMAP_BUILD_SIZES_INFO_EXT
-                                                         , STRUCTURE_TYPE_MICROMAP_CREATE_INFO_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_PROPERTIES_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_EXT
-                                                         , STRUCTURE_TYPE_COPY_MEMORY_TO_MICROMAP_INFO_EXT
-                                                         , STRUCTURE_TYPE_COPY_MICROMAP_TO_MEMORY_INFO_EXT
-                                                         , STRUCTURE_TYPE_COPY_MICROMAP_INFO_EXT
-                                                         , STRUCTURE_TYPE_MICROMAP_VERSION_INFO_EXT
-                                                         , STRUCTURE_TYPE_MICROMAP_BUILD_INFO_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_PROPERTIES_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_FEATURES_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT
-                                                         , 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_PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_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
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT
-                                                         , STRUCTURE_TYPE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_INFO_EXT
-                                                         , STRUCTURE_TYPE_SUBPASS_RESOLVE_PERFORMANCE_QUERY_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_FEATURES_EXT
-                                                         , STRUCTURE_TYPE_FRAME_BOUNDARY_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAME_BOUNDARY_FEATURES_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT
-                                                         , STRUCTURE_TYPE_PIPELINE_PROPERTIES_IDENTIFIER_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV
-                                                         , STRUCTURE_TYPE_MEMORY_GET_REMOTE_ADDRESS_INFO_NV
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_PROPERTIES_HUAWEI
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI
-                                                         , STRUCTURE_TYPE_SUBPASS_SHADING_PIPELINE_CREATE_INFO_HUAWEI
-                                                         , STRUCTURE_TYPE_BUFFER_COLLECTION_CONSTRAINTS_INFO_FUCHSIA
-                                                         , STRUCTURE_TYPE_SYSMEM_COLOR_SPACE_FUCHSIA
-                                                         , STRUCTURE_TYPE_IMAGE_FORMAT_CONSTRAINTS_INFO_FUCHSIA
-                                                         , STRUCTURE_TYPE_IMAGE_CONSTRAINTS_INFO_FUCHSIA
-                                                         , STRUCTURE_TYPE_BUFFER_COLLECTION_BUFFER_CREATE_INFO_FUCHSIA
-                                                         , STRUCTURE_TYPE_BUFFER_CONSTRAINTS_INFO_FUCHSIA
-                                                         , STRUCTURE_TYPE_BUFFER_COLLECTION_PROPERTIES_FUCHSIA
-                                                         , STRUCTURE_TYPE_BUFFER_COLLECTION_IMAGE_CREATE_INFO_FUCHSIA
-                                                         , STRUCTURE_TYPE_IMPORT_MEMORY_BUFFER_COLLECTION_FUCHSIA
-                                                         , STRUCTURE_TYPE_BUFFER_COLLECTION_CREATE_INFO_FUCHSIA
-                                                         , STRUCTURE_TYPE_SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA
-                                                         , STRUCTURE_TYPE_IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA
-                                                         , STRUCTURE_TYPE_MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA
-                                                         , STRUCTURE_TYPE_MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA
-                                                         , STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_EXT
-                                                         , 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
-                                                         , STRUCTURE_TYPE_DEVICE_ADDRESS_BINDING_CALLBACK_DATA_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_ADDRESS_BINDING_REPORT_FEATURES_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_DRM_PROPERTIES_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT
-                                                         , STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT
-                                                         , STRUCTURE_TYPE_DEVICE_FAULT_INFO_EXT
-                                                         , STRUCTURE_TYPE_DEVICE_FAULT_COUNTS_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_FEATURES_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT
-                                                         , STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT
-                                                         , STRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR
-                                                         , STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT
-                                                         , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MOTION_INFO_NV
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV
-                                                         , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV
-                                                         , 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_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_PROPERTIES_KHR
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_FEATURES_AMD
-                                                         , STRUCTURE_TYPE_GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT
-                                                         , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT
-                                                         , STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_PUSH_DESCRIPTOR_BUFFER_HANDLE_EXT
-                                                         , STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_INFO_EXT
-                                                         , STRUCTURE_TYPE_OPAQUE_CAPTURE_DESCRIPTOR_DATA_CREATE_INFO_EXT
-                                                         , STRUCTURE_TYPE_SAMPLER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT
-                                                         , STRUCTURE_TYPE_IMAGE_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_EXT
-                                                         , STRUCTURE_TYPE_IMAGE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT
-                                                         , STRUCTURE_TYPE_BUFFER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT
-                                                         , STRUCTURE_TYPE_DESCRIPTOR_GET_INFO_EXT
-                                                         , STRUCTURE_TYPE_DESCRIPTOR_ADDRESS_INFO_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT
-                                                         , STRUCTURE_TYPE_IMPORT_METAL_SHARED_EVENT_INFO_EXT
-                                                         , STRUCTURE_TYPE_EXPORT_METAL_SHARED_EVENT_INFO_EXT
-                                                         , STRUCTURE_TYPE_IMPORT_METAL_IO_SURFACE_INFO_EXT
-                                                         , STRUCTURE_TYPE_EXPORT_METAL_IO_SURFACE_INFO_EXT
-                                                         , STRUCTURE_TYPE_IMPORT_METAL_TEXTURE_INFO_EXT
-                                                         , STRUCTURE_TYPE_EXPORT_METAL_TEXTURE_INFO_EXT
-                                                         , STRUCTURE_TYPE_IMPORT_METAL_BUFFER_INFO_EXT
-                                                         , STRUCTURE_TYPE_EXPORT_METAL_BUFFER_INFO_EXT
-                                                         , STRUCTURE_TYPE_EXPORT_METAL_COMMAND_QUEUE_INFO_EXT
-                                                         , STRUCTURE_TYPE_EXPORT_METAL_DEVICE_INFO_EXT
-                                                         , STRUCTURE_TYPE_EXPORT_METAL_OBJECTS_INFO_EXT
-                                                         , STRUCTURE_TYPE_EXPORT_METAL_OBJECT_CREATE_INFO_EXT
-                                                         , STRUCTURE_TYPE_QUERY_LOW_LATENCY_SUPPORT_NV
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_PROPERTIES_NV
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_FEATURES_NV
-                                                         , STRUCTURE_TYPE_CUDA_LAUNCH_INFO_NV
-                                                         , STRUCTURE_TYPE_CUDA_FUNCTION_CREATE_INFO_NV
-                                                         , STRUCTURE_TYPE_CUDA_MODULE_CREATE_INFO_NV
-                                                         , STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR
-                                                         , STRUCTURE_TYPE_PRESENT_ID_KHR
-                                                         , STRUCTURE_TYPE_SWAPCHAIN_PRESENT_BARRIER_CREATE_INFO_NV
-                                                         , STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_BARRIER_NV
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_BARRIER_FEATURES_NV
-                                                         , STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT
-                                                         , STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT
-                                                         , STRUCTURE_TYPE_DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT
-                                                         , STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT
-                                                         , STRUCTURE_TYPE_DEPTH_BIAS_REPRESENTATION_INFO_EXT
-                                                         , STRUCTURE_TYPE_DEPTH_BIAS_INFO_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_BIAS_CONTROL_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_FEATURES_EXT
-                                                         , STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV
-                                                         , STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV
-                                                         , STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV
-                                                         , STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV
-                                                         , STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV
-                                                         , 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_RELEASE_SWAPCHAIN_IMAGES_INFO_EXT
-                                                         , STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT
-                                                         , STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_EXT
-                                                         , STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT
-                                                         , STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT
-                                                         , STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_EXT
-                                                         , STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_EXT
-                                                         , STRUCTURE_TYPE_SURFACE_PRESENT_MODE_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT
-                                                         , STRUCTURE_TYPE_MEMORY_MAP_PLACED_INFO_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_MAP_MEMORY_PLACED_PROPERTIES_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_MAP_MEMORY_PLACED_FEATURES_EXT
-                                                         , STRUCTURE_TYPE_MEMORY_UNMAP_INFO_KHR
-                                                         , STRUCTURE_TYPE_MEMORY_MAP_INFO_KHR
-                                                         , STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY_EXT
-                                                         , STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE_EXT
-                                                         , STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO_EXT
-                                                         , STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO_EXT
-                                                         , STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO_EXT
-                                                         , STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO_EXT
-                                                         , STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY_EXT
-                                                         , STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES_EXT
-                                                         , STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR
-                                                         , STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR
-                                                         , STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR
-                                                         , STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR
-                                                         , STRUCTURE_TYPE_PIPELINE_INFO_KHR
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT
-                                                         , STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT
-                                                         , STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT
-                                                         , STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT
-                                                         , STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT
-                                                         , STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT
-                                                         , STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV
-                                                         , STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV
-                                                         , STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR
-                                                         , STRUCTURE_TYPE_VALIDATION_FEATURES_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
-                                                         , STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR
-                                                         , STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_QUAD_CONTROL_FEATURES_KHR
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT
-                                                         , STRUCTURE_TYPE_RENDERING_INPUT_ATTACHMENT_INDEX_INFO_KHR
-                                                         , STRUCTURE_TYPE_RENDERING_ATTACHMENT_LOCATION_INFO_KHR
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES_KHR
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD
-                                                         , STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR
-                                                         , 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_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_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_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA
-                                                         , STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD
-                                                         , STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT
-                                                         , STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL
-                                                         , STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL
-                                                         , STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL
-                                                         , STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL
-                                                         , STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL
-                                                         , STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL
-                                                         , STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV
-                                                         , STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV
-                                                         , STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV
-                                                         , STRUCTURE_TYPE_CHECKPOINT_DATA_NV
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV
-                                                         , STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV
-                                                         , STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP
-                                                         , 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_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR
-                                                         , 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_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
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV
-                                                         , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV
-                                                         , STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV
-                                                         , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV
-                                                         , STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV
-                                                         , STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV
-                                                         , STRUCTURE_TYPE_GEOMETRY_AABB_NV
-                                                         , STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV
-                                                         , STRUCTURE_TYPE_GEOMETRY_NV
-                                                         , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV
-                                                         , STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV
-                                                         , STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV
-                                                         , STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR
-                                                         , STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT
-                                                         , STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT
-                                                         , STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT
-                                                         , STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT
-                                                         , STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT
-                                                         , STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT
-                                                         , STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV
-                                                         , STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR
-                                                         , STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR
-                                                         , STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR
-                                                         , STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR
-                                                         , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR
-                                                         , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR
-                                                         , STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR
-                                                         , STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR
-                                                         , STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR
-                                                         , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR
-                                                         , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR
-                                                         , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR
-                                                         , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR
-                                                         , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR
-                                                         , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR
-                                                         , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR
-                                                         , STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR
-                                                         , STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV
-                                                         , STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT
-                                                         , STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT
-                                                         , 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_ATTACHMENT_SAMPLE_COUNT_INFO_AMD
-                                                         , STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_NODE_CREATE_INFO_AMDX
-                                                         , STRUCTURE_TYPE_EXECUTION_GRAPH_PIPELINE_CREATE_INFO_AMDX
-                                                         , STRUCTURE_TYPE_EXECUTION_GRAPH_PIPELINE_SCRATCH_SIZE_AMDX
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ENQUEUE_PROPERTIES_AMDX
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ENQUEUE_FEATURES_AMDX
-                                                         , STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID
-                                                         , STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID
-                                                         , STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID
-                                                         , STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID
-                                                         , STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID
-                                                         , STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID
-                                                         , STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID
-                                                         , STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT
-                                                         , STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT
-                                                         , STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT
-                                                         , STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT
-                                                         , STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT
-                                                         , STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK
-                                                         , STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK
-                                                         , STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR
-                                                         , STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR
-                                                         , STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR
-                                                         , STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR
-                                                         , STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR
-                                                         , STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR
-                                                         , STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR
-                                                         , STRUCTURE_TYPE_PERFORMANCE_QUERY_RESERVATION_INFO_KHR
-                                                         , STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR
-                                                         , STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR
-                                                         , STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR
-                                                         , STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR
-                                                         , STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR
-                                                         , STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR
-                                                         , STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR
-                                                         , STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR
-                                                         , STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR
-                                                         , STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR
-                                                         , STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_RELAXED_LINE_RASTERIZATION_FEATURES_IMG
-                                                         , STRUCTURE_TYPE_HDR_METADATA_EXT
-                                                         , STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT
-                                                         , STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT
-                                                         , STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT
-                                                         , STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV
-                                                         , STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX
-                                                         , STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE
-                                                         , STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT
-                                                         , STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT
-                                                         , STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT
-                                                         , STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT
-                                                         , STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT
-                                                         , STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV
-                                                         , STRUCTURE_TYPE_PRESENT_REGIONS_KHR
-                                                         , STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT
-                                                         , STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR
-                                                         , STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR
-                                                         , STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR
-                                                         , STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR
-                                                         , STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR
-                                                         , STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR
-                                                         , STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR
-                                                         , STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR
-                                                         , STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR
-                                                         , STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR
-                                                         , STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR
-                                                         , STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR
-                                                         , STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR
-                                                         , STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR
-                                                         , STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT
-                                                         , STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT
-                                                         , STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT
-                                                         , STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN
-                                                         , STRUCTURE_TYPE_VALIDATION_FLAGS_EXT
-                                                         , STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR
-                                                         , STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR
-                                                         , STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR
-                                                         , STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR
-                                                         , STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR
-                                                         , STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR
-                                                         , STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV
-                                                         , STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV
-                                                         , STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV
-                                                         , STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV
-                                                         , STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV
-                                                         , STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP
-                                                         , STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD
-                                                         , STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX
-                                                         , STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX
-                                                         , STRUCTURE_TYPE_CU_MODULE_TEXTURING_MODE_CREATE_INFO_NVX
-                                                         , STRUCTURE_TYPE_CU_LAUNCH_INFO_NVX
-                                                         , STRUCTURE_TYPE_CU_FUNCTION_CREATE_INFO_NVX
-                                                         , STRUCTURE_TYPE_CU_MODULE_CREATE_INFO_NVX
-                                                         , STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT
-                                                         , STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV
-                                                         , STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV
-                                                         , STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV
-                                                         , STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT
-                                                         , STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT
-                                                         , STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT
-                                                         , STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD
-                                                         , STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT
-                                                         , STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR
-                                                         , STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR
-                                                         , STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR
-                                                         , STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR
-                                                         , STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR
-                                                         , STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR
-                                                         , STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR
-                                                         , STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR
-                                                         , STRUCTURE_TYPE_PRESENT_INFO_KHR
-                                                         , STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR
-                                                         , STRUCTURE_TYPE_PIPELINE_OFFLINE_CREATE_INFO
-                                                         , STRUCTURE_TYPE_FAULT_CALLBACK_INFO
-                                                         , STRUCTURE_TYPE_FAULT_DATA
-                                                         , STRUCTURE_TYPE_PIPELINE_POOL_SIZE
-                                                         , STRUCTURE_TYPE_COMMAND_POOL_MEMORY_CONSUMPTION
-                                                         , STRUCTURE_TYPE_COMMAND_POOL_MEMORY_RESERVATION_CREATE_INFO
-                                                         , STRUCTURE_TYPE_DEVICE_OBJECT_RESERVATION_CREATE_INFO
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_SC_1_0_PROPERTIES
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_SC_1_0_FEATURES
-                                                         , 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
-                                                         , STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES
-                                                         , STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO
-                                                         , STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO
-                                                         , STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO
-                                                         , STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES
-                                                         , STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT
-                                                         , STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES
-                                                         , STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO
-                                                         , STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO
-                                                         , STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES
-                                                         , STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES
-                                                         , STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES
-                                                         , STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES
-                                                         , STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT
-                                                         , STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES
-                                                         , STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES
-                                                         , STRUCTURE_TYPE_SUBPASS_END_INFO
-                                                         , STRUCTURE_TYPE_SUBPASS_BEGIN_INFO
-                                                         , STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2
-                                                         , STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2
-                                                         , STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2
-                                                         , STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2
-                                                         , STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2
-                                                         , STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES
-                                                         , STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES
-                                                         , STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO
-                                                         , STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO
-                                                         , STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO
-                                                         , STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO
-                                                         , STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO
-                                                         , STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO
-                                                         , STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES
-                                                         , STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO
-                                                         , STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO
-                                                         , STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO
-                                                         , STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES
-                                                         , STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO
-                                                         , STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO
-                                                         , STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO
-                                                         , STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO
-                                                         , STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES
-                                                         , STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES
-                                                         , STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO
-                                                         , STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO
-                                                         , STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO
-                                                         , STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2
-                                                         , STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2
-                                                         , STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2
-                                                         , STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2
-                                                         , STRUCTURE_TYPE_FORMAT_PROPERTIES_2
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2
-                                                         , STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2
-                                                         , STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2
-                                                         , STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2
-                                                         , STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2
-                                                         , STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2
-                                                         , STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES
-                                                         , STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO
-                                                         , STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO
-                                                         , STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO
-                                                         , STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO
-                                                         , STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO
-                                                         , STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO
-                                                         , STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO
-                                                         , STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO
-                                                         , STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES
-                                                         , STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO
-                                                         , STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO
-                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES
-                                                         , ..
-                                                         )
-                                          ) where
-
-import Vulkan.Internal.Utils (enumReadPrec)
-import Vulkan.Internal.Utils (enumShowsPrec)
-import GHC.Show (showsPrec)
-import Vulkan.Zero (Zero)
-import Foreign.Storable (Storable)
-import Data.Int (Int32)
-import GHC.Read (Read(readPrec))
-import GHC.Show (Show(showsPrec))
-
--- No documentation found for TopLevel "VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHR"
-pattern STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHR = STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO
-
-
--- No documentation found for TopLevel "VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHR"
-pattern STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHR = STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO
-
-
--- | VkStructureType - Vulkan structure types (@sType@)
---
--- = 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_acceleration_structure.AccelerationStructureBuildGeometryInfoKHR',
--- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureBuildSizesInfoKHR',
--- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.AccelerationStructureCaptureDescriptorDataInfoEXT',
--- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureCreateInfoKHR',
--- 'Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureCreateInfoNV',
--- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureDeviceAddressInfoKHR',
--- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureGeometryAabbsDataKHR',
--- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureGeometryInstancesDataKHR',
--- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureGeometryKHR',
--- 'Vulkan.Extensions.VK_NV_ray_tracing_motion_blur.AccelerationStructureGeometryMotionTrianglesDataNV',
--- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureGeometryTrianglesDataKHR',
--- 'Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureInfoNV',
--- 'Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureMemoryRequirementsInfoNV',
--- 'Vulkan.Extensions.VK_NV_ray_tracing_motion_blur.AccelerationStructureMotionInfoNV',
--- 'Vulkan.Extensions.VK_NV_displacement_micromap.AccelerationStructureTrianglesDisplacementMicromapNV',
--- 'Vulkan.Extensions.VK_EXT_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapEXT',
--- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureVersionInfoKHR',
--- 'Vulkan.Extensions.VK_KHR_swapchain.AcquireNextImageInfoKHR',
--- 'Vulkan.Extensions.VK_KHR_performance_query.AcquireProfilingLockInfoKHR',
--- 'Vulkan.Extensions.VK_SEC_amigo_profiling.AmigoProfilingSubmitInfoSEC',
--- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.AndroidHardwareBufferFormatProperties2ANDROID',
--- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.AndroidHardwareBufferFormatPropertiesANDROID',
--- 'Vulkan.Extensions.VK_ANDROID_external_format_resolve.AndroidHardwareBufferFormatResolvePropertiesANDROID',
--- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.AndroidHardwareBufferPropertiesANDROID',
--- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.AndroidHardwareBufferUsageANDROID',
--- 'Vulkan.Extensions.VK_KHR_android_surface.AndroidSurfaceCreateInfoKHR',
--- 'Vulkan.Extensions.VK_AMD_anti_lag.AntiLagDataAMD',
--- 'Vulkan.Extensions.VK_AMD_anti_lag.AntiLagPresentationInfoAMD',
--- 'Vulkan.Core10.DeviceInitialization.ApplicationInfo',
--- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.AttachmentDescription2',
--- 'Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts.AttachmentDescriptionStencilLayout',
--- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.AttachmentReference2',
--- 'Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts.AttachmentReferenceStencilLayout',
--- 'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD',
--- 'Vulkan.CStruct.Extends.BaseInStructure',
--- 'Vulkan.CStruct.Extends.BaseOutStructure',
--- 'Vulkan.Extensions.VK_NV_ray_tracing.BindAccelerationStructureMemoryInfoNV',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2.BindBufferMemoryDeviceGroupInfo',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindBufferMemoryInfo',
--- 'Vulkan.Extensions.VK_KHR_maintenance6.BindDescriptorBufferEmbeddedSamplersInfoEXT',
--- 'Vulkan.Extensions.VK_KHR_maintenance6.BindDescriptorSetsInfoKHR',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2.BindImageMemoryDeviceGroupInfo',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindImageMemoryInfo',
--- 'Vulkan.Extensions.VK_KHR_swapchain.BindImageMemorySwapchainInfoKHR',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.BindImagePlaneMemoryInfo',
--- 'Vulkan.Extensions.VK_KHR_maintenance6.BindMemoryStatusKHR',
--- 'Vulkan.Core10.SparseResourceMemoryManagement.BindSparseInfo',
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkBindVideoSessionMemoryInfoKHR VkBindVideoSessionMemoryInfoKHR>,
--- 'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.BlitImageCubicWeightsInfoQCOM',
--- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.BlitImageInfo2',
--- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.BufferCaptureDescriptorDataInfoEXT',
--- 'Vulkan.Extensions.VK_FUCHSIA_buffer_collection.BufferCollectionBufferCreateInfoFUCHSIA',
--- 'Vulkan.Extensions.VK_FUCHSIA_buffer_collection.BufferCollectionConstraintsInfoFUCHSIA',
--- 'Vulkan.Extensions.VK_FUCHSIA_buffer_collection.BufferCollectionCreateInfoFUCHSIA',
--- 'Vulkan.Extensions.VK_FUCHSIA_buffer_collection.BufferCollectionImageCreateInfoFUCHSIA',
--- 'Vulkan.Extensions.VK_FUCHSIA_buffer_collection.BufferCollectionPropertiesFUCHSIA',
--- 'Vulkan.Extensions.VK_FUCHSIA_buffer_collection.BufferConstraintsInfoFUCHSIA',
--- '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.Core13.Promoted_From_VK_KHR_copy_commands2.BufferImageCopy2',
--- 'Vulkan.Core10.OtherTypes.BufferMemoryBarrier',
--- '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.Extensions.VK_KHR_maintenance5.BufferUsageFlags2CreateInfoKHR',
--- 'Vulkan.Core10.BufferView.BufferViewCreateInfo',
--- 'Vulkan.Extensions.VK_KHR_calibrated_timestamps.CalibratedTimestampInfoKHR',
--- 'Vulkan.Extensions.VK_NV_device_diagnostic_checkpoints.CheckpointData2NV',
--- 'Vulkan.Extensions.VK_NV_device_diagnostic_checkpoints.CheckpointDataNV',
--- 'Vulkan.Core10.CommandBuffer.CommandBufferAllocateInfo',
--- 'Vulkan.Core10.CommandBuffer.CommandBufferBeginInfo',
--- 'Vulkan.Extensions.VK_EXT_conditional_rendering.CommandBufferInheritanceConditionalRenderingInfoEXT',
--- 'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo',
--- 'Vulkan.Extensions.VK_QCOM_render_pass_transform.CommandBufferInheritanceRenderPassTransformInfoQCOM',
--- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.CommandBufferInheritanceRenderingInfo',
--- 'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV',
--- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.CommandBufferSubmitInfo',
--- 'Vulkan.Core10.CommandPool.CommandPoolCreateInfo',
--- 'Vulkan.Core10.Pipeline.ComputePipelineCreateInfo',
--- 'Vulkan.Extensions.VK_NV_device_generated_commands_compute.ComputePipelineIndirectBufferInfoNV',
--- 'Vulkan.Extensions.VK_EXT_conditional_rendering.ConditionalRenderingBeginInfoEXT',
--- 'Vulkan.Extensions.VK_NV_cooperative_matrix2.CooperativeMatrixFlexibleDimensionsPropertiesNV',
--- 'Vulkan.Extensions.VK_KHR_cooperative_matrix.CooperativeMatrixPropertiesKHR',
--- 'Vulkan.Extensions.VK_NV_cooperative_matrix.CooperativeMatrixPropertiesNV',
--- 'Vulkan.Extensions.VK_KHR_acceleration_structure.CopyAccelerationStructureInfoKHR',
--- 'Vulkan.Extensions.VK_KHR_acceleration_structure.CopyAccelerationStructureToMemoryInfoKHR',
--- '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.Core13.Promoted_From_VK_KHR_copy_commands2.CopyImageInfo2',
--- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.CopyImageToBufferInfo2',
--- 'Vulkan.Extensions.VK_EXT_host_image_copy.CopyImageToImageInfoEXT',
--- 'Vulkan.Extensions.VK_EXT_host_image_copy.CopyImageToMemoryInfoEXT',
--- 'Vulkan.Extensions.VK_KHR_acceleration_structure.CopyMemoryToAccelerationStructureInfoKHR',
--- 'Vulkan.Extensions.VK_EXT_host_image_copy.CopyMemoryToImageInfoEXT',
--- 'Vulkan.Extensions.VK_EXT_opacity_micromap.CopyMemoryToMicromapInfoEXT',
--- 'Vulkan.Extensions.VK_EXT_opacity_micromap.CopyMicromapInfoEXT',
--- 'Vulkan.Extensions.VK_EXT_opacity_micromap.CopyMicromapToMemoryInfoEXT',
--- 'Vulkan.Extensions.VK_NVX_binary_import.CuFunctionCreateInfoNVX',
--- 'Vulkan.Extensions.VK_NVX_binary_import.CuLaunchInfoNVX',
--- 'Vulkan.Extensions.VK_NVX_binary_import.CuModuleCreateInfoNVX',
--- 'Vulkan.Extensions.VK_NVX_binary_import.CuModuleTexturingModeCreateInfoNVX',
--- 'Vulkan.Extensions.VK_NV_cuda_kernel_launch.CudaFunctionCreateInfoNV',
--- 'Vulkan.Extensions.VK_NV_cuda_kernel_launch.CudaLaunchInfoNV',
--- 'Vulkan.Extensions.VK_NV_cuda_kernel_launch.CudaModuleCreateInfoNV',
--- 'Vulkan.Extensions.VK_KHR_external_semaphore_win32.D3D12FenceSubmitInfoKHR',
--- 'Vulkan.Extensions.VK_EXT_debug_marker.DebugMarkerMarkerInfoEXT',
--- 'Vulkan.Extensions.VK_EXT_debug_marker.DebugMarkerObjectNameInfoEXT',
--- 'Vulkan.Extensions.VK_EXT_debug_marker.DebugMarkerObjectTagInfoEXT',
--- 'Vulkan.Extensions.VK_EXT_debug_report.DebugReportCallbackCreateInfoEXT',
--- 'Vulkan.Extensions.VK_EXT_debug_utils.DebugUtilsLabelEXT',
--- 'Vulkan.Extensions.VK_EXT_debug_utils.DebugUtilsMessengerCallbackDataEXT',
--- 'Vulkan.Extensions.VK_EXT_debug_utils.DebugUtilsMessengerCreateInfoEXT',
--- 'Vulkan.Extensions.VK_EXT_debug_utils.DebugUtilsObjectNameInfoEXT',
--- 'Vulkan.Extensions.VK_EXT_debug_utils.DebugUtilsObjectTagInfoEXT',
--- 'Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationBufferCreateInfoNV',
--- 'Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationImageCreateInfoNV',
--- 'Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationMemoryAllocateInfoNV',
--- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.DependencyInfo',
--- 'Vulkan.Extensions.VK_EXT_depth_bias_control.DepthBiasInfoEXT',
--- 'Vulkan.Extensions.VK_EXT_depth_bias_control.DepthBiasRepresentationInfoEXT',
--- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.DescriptorAddressInfoEXT',
--- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.DescriptorBufferBindingInfoEXT',
--- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.DescriptorBufferBindingPushDescriptorBufferHandleEXT',
--- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.DescriptorGetInfoEXT',
--- 'Vulkan.Core10.DescriptorSet.DescriptorPoolCreateInfo',
--- 'Vulkan.Core13.Promoted_From_VK_EXT_inline_uniform_block.DescriptorPoolInlineUniformBlockCreateInfo',
--- 'Vulkan.Core10.DescriptorSet.DescriptorSetAllocateInfo',
--- 'Vulkan.Extensions.VK_VALVE_descriptor_set_host_mapping.DescriptorSetBindingReferenceVALVE',
--- 'Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.DescriptorSetLayoutBindingFlagsCreateInfo',
--- 'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutCreateInfo',
--- 'Vulkan.Extensions.VK_VALVE_descriptor_set_host_mapping.DescriptorSetLayoutHostMappingInfoVALVE',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_maintenance3.DescriptorSetLayoutSupport',
--- '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_EXT_device_address_binding_report.DeviceAddressBindingCallbackDataEXT',
--- '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',
--- 'Vulkan.Extensions.VK_EXT_display_control.DeviceEventInfoEXT',
--- 'Vulkan.Extensions.VK_EXT_device_fault.DeviceFaultCountsEXT',
--- 'Vulkan.Extensions.VK_EXT_device_fault.DeviceFaultInfoEXT',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupBindSparseInfo',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupCommandBufferBeginInfo',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group_creation.DeviceGroupDeviceCreateInfo',
--- 'Vulkan.Extensions.VK_KHR_swapchain.DeviceGroupPresentCapabilitiesKHR',
--- 'Vulkan.Extensions.VK_KHR_swapchain.DeviceGroupPresentInfoKHR',
--- '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.Core13.Promoted_From_VK_KHR_maintenance4.DeviceImageMemoryRequirements',
--- 'Vulkan.Extensions.VK_KHR_maintenance5.DeviceImageSubresourceInfoKHR',
--- '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_KHR_pipeline_binary.DevicePipelineBinaryInternalCacheControlKHR',
--- 'Vulkan.Core13.Promoted_From_VK_EXT_private_data.DevicePrivateDataCreateInfo',
--- 'Vulkan.Core10.Device.DeviceQueueCreateInfo',
--- 'Vulkan.Extensions.VK_KHR_global_priority.DeviceQueueGlobalPriorityCreateInfoKHR',
--- 'Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory.DeviceQueueInfo2',
--- 'Vulkan.Extensions.VK_ARM_scheduling_controls.DeviceQueueShaderCoreControlCreateInfoARM',
--- 'Vulkan.Extensions.VK_LUNARG_direct_driver_loading.DirectDriverLoadingInfoLUNARG',
--- 'Vulkan.Extensions.VK_LUNARG_direct_driver_loading.DirectDriverLoadingListLUNARG',
--- 'Vulkan.Extensions.VK_EXT_directfb_surface.DirectFBSurfaceCreateInfoEXT',
--- 'Vulkan.Extensions.VK_EXT_display_control.DisplayEventInfoEXT',
--- 'Vulkan.Extensions.VK_KHR_display.DisplayModeCreateInfoKHR',
--- 'Vulkan.Extensions.VK_KHR_get_display_properties2.DisplayModeProperties2KHR',
--- 'Vulkan.Extensions.VK_NV_display_stereo.DisplayModeStereoPropertiesNV',
--- 'Vulkan.Extensions.VK_AMD_display_native_hdr.DisplayNativeHdrSurfaceCapabilitiesAMD',
--- 'Vulkan.Extensions.VK_KHR_get_display_properties2.DisplayPlaneCapabilities2KHR',
--- 'Vulkan.Extensions.VK_KHR_get_display_properties2.DisplayPlaneInfo2KHR',
--- 'Vulkan.Extensions.VK_KHR_get_display_properties2.DisplayPlaneProperties2KHR',
--- 'Vulkan.Extensions.VK_EXT_display_control.DisplayPowerInfoEXT',
--- 'Vulkan.Extensions.VK_KHR_display_swapchain.DisplayPresentInfoKHR',
--- 'Vulkan.Extensions.VK_KHR_get_display_properties2.DisplayProperties2KHR',
--- 'Vulkan.Extensions.VK_KHR_display.DisplaySurfaceCreateInfoKHR',
--- 'Vulkan.Extensions.VK_NV_display_stereo.DisplaySurfaceStereoCreateInfoNV',
--- 'Vulkan.Extensions.VK_EXT_image_drm_format_modifier.DrmFormatModifierPropertiesList2EXT',
--- 'Vulkan.Extensions.VK_EXT_image_drm_format_modifier.DrmFormatModifierPropertiesListEXT',
--- 'Vulkan.Core10.Event.EventCreateInfo',
--- 'Vulkan.Extensions.VK_AMDX_shader_enqueue.ExecutionGraphPipelineCreateInfoAMDX',
--- 'Vulkan.Extensions.VK_AMDX_shader_enqueue.ExecutionGraphPipelineScratchSizeAMDX',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_external_fence.ExportFenceCreateInfo',
--- 'Vulkan.Extensions.VK_KHR_external_fence_win32.ExportFenceWin32HandleInfoKHR',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExportMemoryAllocateInfo',
--- 'Vulkan.Extensions.VK_NV_external_memory.ExportMemoryAllocateInfoNV',
--- 'Vulkan.Extensions.VK_KHR_external_memory_win32.ExportMemoryWin32HandleInfoKHR',
--- 'Vulkan.Extensions.VK_NV_external_memory_win32.ExportMemoryWin32HandleInfoNV',
--- 'Vulkan.Extensions.VK_EXT_metal_objects.ExportMetalBufferInfoEXT',
--- 'Vulkan.Extensions.VK_EXT_metal_objects.ExportMetalCommandQueueInfoEXT',
--- 'Vulkan.Extensions.VK_EXT_metal_objects.ExportMetalDeviceInfoEXT',
--- 'Vulkan.Extensions.VK_EXT_metal_objects.ExportMetalIOSurfaceInfoEXT',
--- 'Vulkan.Extensions.VK_EXT_metal_objects.ExportMetalObjectCreateInfoEXT',
--- 'Vulkan.Extensions.VK_EXT_metal_objects.ExportMetalObjectsInfoEXT',
--- 'Vulkan.Extensions.VK_EXT_metal_objects.ExportMetalSharedEventInfoEXT',
--- 'Vulkan.Extensions.VK_EXT_metal_objects.ExportMetalTextureInfoEXT',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore.ExportSemaphoreCreateInfo',
--- 'Vulkan.Extensions.VK_KHR_external_semaphore_win32.ExportSemaphoreWin32HandleInfoKHR',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.ExternalBufferProperties',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_external_fence_capabilities.ExternalFenceProperties',
--- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID',
--- 'Vulkan.Extensions.VK_QNX_external_memory_screen_buffer.ExternalFormatQNX',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.ExternalImageFormatProperties',
--- 'Vulkan.Extensions.VK_EXT_external_memory_acquire_unmodified.ExternalMemoryAcquireUnmodifiedEXT',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryBufferCreateInfo',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryImageCreateInfo',
--- 'Vulkan.Extensions.VK_NV_external_memory.ExternalMemoryImageCreateInfoNV',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore_capabilities.ExternalSemaphoreProperties',
--- 'Vulkan.Core10.Fence.FenceCreateInfo',
--- 'Vulkan.Extensions.VK_KHR_external_fence_fd.FenceGetFdInfoKHR',
--- '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.Core13.Promoted_From_VK_KHR_format_feature_flags2.FormatProperties3',
--- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FragmentShadingRateAttachmentInfoKHR',
--- 'Vulkan.Extensions.VK_EXT_frame_boundary.FrameBoundaryEXT',
--- 'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentImageInfo',
--- 'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfo',
--- 'Vulkan.Core10.Pass.FramebufferCreateInfo',
--- 'Vulkan.Extensions.VK_NV_coverage_reduction_mode.FramebufferMixedSamplesCombinationNV',
--- 'Vulkan.Extensions.VK_EXT_device_generated_commands.GeneratedCommandsInfoEXT',
--- 'Vulkan.Extensions.VK_NV_device_generated_commands.GeneratedCommandsInfoNV',
--- 'Vulkan.Extensions.VK_EXT_device_generated_commands.GeneratedCommandsMemoryRequirementsInfoEXT',
--- 'Vulkan.Extensions.VK_NV_device_generated_commands.GeneratedCommandsMemoryRequirementsInfoNV',
--- 'Vulkan.Extensions.VK_EXT_device_generated_commands.GeneratedCommandsPipelineInfoEXT',
--- 'Vulkan.Extensions.VK_EXT_device_generated_commands.GeneratedCommandsShaderInfoEXT',
--- 'Vulkan.Extensions.VK_NV_ray_tracing.GeometryAABBNV',
--- 'Vulkan.Extensions.VK_NV_ray_tracing.GeometryNV',
--- 'Vulkan.Extensions.VK_NV_ray_tracing.GeometryTrianglesNV',
--- 'Vulkan.Extensions.VK_NV_low_latency2.GetLatencyMarkerInfoNV',
--- 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo',
--- 'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT',
--- 'Vulkan.Extensions.VK_NV_device_generated_commands.GraphicsPipelineShaderGroupsCreateInfoNV',
--- 'Vulkan.Extensions.VK_NV_device_generated_commands.GraphicsShaderGroupCreateInfoNV',
--- 'Vulkan.Extensions.VK_EXT_hdr_metadata.HdrMetadataEXT',
--- 'Vulkan.Extensions.VK_HUAWEI_hdr_vivid.HdrVividDynamicMetadataHUAWEI',
--- 'Vulkan.Extensions.VK_EXT_headless_surface.HeadlessSurfaceCreateInfoEXT',
--- 'Vulkan.Extensions.VK_EXT_host_image_copy.HostImageCopyDevicePerformanceQueryEXT',
--- 'Vulkan.Extensions.VK_EXT_host_image_copy.HostImageLayoutTransitionInfoEXT',
--- 'Vulkan.Extensions.VK_MVK_ios_surface.IOSSurfaceCreateInfoMVK',
--- 'Vulkan.Extensions.VK_MESA_image_alignment_control.ImageAlignmentControlCreateInfoMESA',
--- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.ImageBlit2',
--- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.ImageCaptureDescriptorDataInfoEXT',
--- 'Vulkan.Extensions.VK_EXT_image_compression_control.ImageCompressionControlEXT',
--- 'Vulkan.Extensions.VK_EXT_image_compression_control.ImageCompressionPropertiesEXT',
--- 'Vulkan.Extensions.VK_FUCHSIA_buffer_collection.ImageConstraintsInfoFUCHSIA',
--- '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',
--- 'Vulkan.Extensions.VK_EXT_image_drm_format_modifier.ImageDrmFormatModifierPropertiesEXT',
--- 'Vulkan.Extensions.VK_FUCHSIA_buffer_collection.ImageFormatConstraintsInfoFUCHSIA',
--- '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.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.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_maintenance5.ImageSubresource2KHR',
--- 'Vulkan.Extensions.VK_KHR_swapchain.ImageSwapchainCreateInfoKHR',
--- 'Vulkan.Extensions.VK_EXT_host_image_copy.ImageToMemoryCopyEXT',
--- 'Vulkan.Extensions.VK_EXT_astc_decode_mode.ImageViewASTCDecodeModeEXT',
--- 'Vulkan.Extensions.VK_NVX_image_view_handle.ImageViewAddressPropertiesNVX',
--- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.ImageViewCaptureDescriptorDataInfoEXT',
--- 'Vulkan.Core10.ImageView.ImageViewCreateInfo',
--- 'Vulkan.Extensions.VK_NVX_image_view_handle.ImageViewHandleInfoNVX',
--- 'Vulkan.Extensions.VK_EXT_image_view_min_lod.ImageViewMinLodCreateInfoEXT',
--- 'Vulkan.Extensions.VK_QCOM_image_processing.ImageViewSampleWeightCreateInfoQCOM',
--- 'Vulkan.Extensions.VK_EXT_image_sliced_view_of_3d.ImageViewSlicedCreateInfoEXT',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_maintenance2.ImageViewUsageCreateInfo',
--- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ImportAndroidHardwareBufferInfoANDROID',
--- 'Vulkan.Extensions.VK_KHR_external_fence_fd.ImportFenceFdInfoKHR',
--- 'Vulkan.Extensions.VK_KHR_external_fence_win32.ImportFenceWin32HandleInfoKHR',
--- 'Vulkan.Extensions.VK_FUCHSIA_buffer_collection.ImportMemoryBufferCollectionFUCHSIA',
--- 'Vulkan.Extensions.VK_KHR_external_memory_fd.ImportMemoryFdInfoKHR',
--- 'Vulkan.Extensions.VK_EXT_external_memory_host.ImportMemoryHostPointerInfoEXT',
--- 'Vulkan.Extensions.VK_KHR_external_memory_win32.ImportMemoryWin32HandleInfoKHR',
--- 'Vulkan.Extensions.VK_NV_external_memory_win32.ImportMemoryWin32HandleInfoNV',
--- 'Vulkan.Extensions.VK_FUCHSIA_external_memory.ImportMemoryZirconHandleInfoFUCHSIA',
--- 'Vulkan.Extensions.VK_EXT_metal_objects.ImportMetalBufferInfoEXT',
--- 'Vulkan.Extensions.VK_EXT_metal_objects.ImportMetalIOSurfaceInfoEXT',
--- 'Vulkan.Extensions.VK_EXT_metal_objects.ImportMetalSharedEventInfoEXT',
--- 'Vulkan.Extensions.VK_EXT_metal_objects.ImportMetalTextureInfoEXT',
--- 'Vulkan.Extensions.VK_QNX_external_memory_screen_buffer.ImportScreenBufferInfoQNX',
--- 'Vulkan.Extensions.VK_KHR_external_semaphore_fd.ImportSemaphoreFdInfoKHR',
--- 'Vulkan.Extensions.VK_KHR_external_semaphore_win32.ImportSemaphoreWin32HandleInfoKHR',
--- 'Vulkan.Extensions.VK_FUCHSIA_external_semaphore.ImportSemaphoreZirconHandleInfoFUCHSIA',
--- 'Vulkan.Extensions.VK_EXT_device_generated_commands.IndirectCommandsLayoutCreateInfoEXT',
--- 'Vulkan.Extensions.VK_NV_device_generated_commands.IndirectCommandsLayoutCreateInfoNV',
--- 'Vulkan.Extensions.VK_EXT_device_generated_commands.IndirectCommandsLayoutTokenEXT',
--- 'Vulkan.Extensions.VK_NV_device_generated_commands.IndirectCommandsLayoutTokenNV',
--- 'Vulkan.Extensions.VK_EXT_device_generated_commands.IndirectExecutionSetCreateInfoEXT',
--- 'Vulkan.Extensions.VK_EXT_device_generated_commands.IndirectExecutionSetPipelineInfoEXT',
--- 'Vulkan.Extensions.VK_EXT_device_generated_commands.IndirectExecutionSetShaderInfoEXT',
--- 'Vulkan.Extensions.VK_EXT_device_generated_commands.IndirectExecutionSetShaderLayoutInfoEXT',
--- 'Vulkan.Extensions.VK_INTEL_performance_query.InitializePerformanceApiInfoINTEL',
--- 'Vulkan.Core10.DeviceInitialization.InstanceCreateInfo',
--- 'Vulkan.Extensions.VK_NV_low_latency2.LatencySleepInfoNV',
--- 'Vulkan.Extensions.VK_NV_low_latency2.LatencySleepModeInfoNV',
--- 'Vulkan.Extensions.VK_NV_low_latency2.LatencySubmissionPresentIdNV',
--- 'Vulkan.Extensions.VK_NV_low_latency2.LatencySurfaceCapabilitiesNV',
--- 'Vulkan.Extensions.VK_NV_low_latency2.LatencyTimingsFrameReportNV',
--- 'Vulkan.Extensions.VK_EXT_layer_settings.LayerSettingsCreateInfoEXT',
--- 'Vulkan.Extensions.VK_MVK_macos_surface.MacOSSurfaceCreateInfoMVK',
--- 'Vulkan.Core10.Memory.MappedMemoryRange',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group.MemoryAllocateFlagsInfo',
--- 'Vulkan.Core10.Memory.MemoryAllocateInfo',
--- 'Vulkan.Core10.OtherTypes.MemoryBarrier',
--- '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',
--- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.MemoryGetAndroidHardwareBufferInfoANDROID',
--- 'Vulkan.Extensions.VK_KHR_external_memory_fd.MemoryGetFdInfoKHR',
--- 'Vulkan.Extensions.VK_NV_external_memory_rdma.MemoryGetRemoteAddressInfoNV',
--- 'Vulkan.Extensions.VK_KHR_external_memory_win32.MemoryGetWin32HandleInfoKHR',
--- 'Vulkan.Extensions.VK_FUCHSIA_external_memory.MemoryGetZirconHandleInfoFUCHSIA',
--- 'Vulkan.Extensions.VK_EXT_external_memory_host.MemoryHostPointerPropertiesEXT',
--- 'Vulkan.Extensions.VK_KHR_map_memory2.MemoryMapInfoKHR',
--- 'Vulkan.Extensions.VK_EXT_map_memory_placed.MemoryMapPlacedInfoEXT',
--- 'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.MemoryOpaqueCaptureAddressAllocateInfo',
--- 'Vulkan.Extensions.VK_EXT_memory_priority.MemoryPriorityAllocateInfoEXT',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.MemoryRequirements2',
--- 'Vulkan.Extensions.VK_EXT_host_image_copy.MemoryToImageCopyEXT',
--- 'Vulkan.Extensions.VK_KHR_map_memory2.MemoryUnmapInfoKHR',
--- 'Vulkan.Extensions.VK_KHR_external_memory_win32.MemoryWin32HandlePropertiesKHR',
--- 'Vulkan.Extensions.VK_FUCHSIA_external_memory.MemoryZirconHandlePropertiesFUCHSIA',
--- 'Vulkan.Extensions.VK_EXT_metal_surface.MetalSurfaceCreateInfoEXT',
--- 'Vulkan.Extensions.VK_EXT_opacity_micromap.MicromapBuildInfoEXT',
--- 'Vulkan.Extensions.VK_EXT_opacity_micromap.MicromapBuildSizesInfoEXT',
--- 'Vulkan.Extensions.VK_EXT_opacity_micromap.MicromapCreateInfoEXT',
--- 'Vulkan.Extensions.VK_EXT_opacity_micromap.MicromapVersionInfoEXT',
--- 'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT',
--- 'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT',
--- 'Vulkan.Extensions.VK_NVX_multiview_per_view_attributes.MultiviewPerViewAttributesInfoNVX',
--- 'Vulkan.Extensions.VK_QCOM_multiview_per_view_render_areas.MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM',
--- 'Vulkan.Extensions.VK_EXT_mutable_descriptor_type.MutableDescriptorTypeCreateInfoEXT',
--- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.OpaqueCaptureDescriptorDataCreateInfoEXT',
--- 'Vulkan.Extensions.VK_NV_optical_flow.OpticalFlowExecuteInfoNV',
--- 'Vulkan.Extensions.VK_NV_optical_flow.OpticalFlowImageFormatInfoNV',
--- 'Vulkan.Extensions.VK_NV_optical_flow.OpticalFlowImageFormatPropertiesNV',
--- 'Vulkan.Extensions.VK_NV_optical_flow.OpticalFlowSessionCreateInfoNV',
--- 'Vulkan.Extensions.VK_NV_optical_flow.OpticalFlowSessionCreatePrivateDataInfoNV',
--- 'Vulkan.Extensions.VK_NV_low_latency2.OutOfBandQueueTypeInfoNV',
--- 'Vulkan.Extensions.VK_INTEL_performance_query.PerformanceConfigurationAcquireInfoINTEL',
--- 'Vulkan.Extensions.VK_KHR_performance_query.PerformanceCounterDescriptionKHR',
--- 'Vulkan.Extensions.VK_KHR_performance_query.PerformanceCounterKHR',
--- 'Vulkan.Extensions.VK_INTEL_performance_query.PerformanceMarkerInfoINTEL',
--- 'Vulkan.Extensions.VK_INTEL_performance_query.PerformanceOverrideInfoINTEL',
--- 'Vulkan.Extensions.VK_KHR_performance_query.PerformanceQuerySubmitInfoKHR',
--- 'Vulkan.Extensions.VK_INTEL_performance_query.PerformanceStreamMarkerInfoINTEL',
--- '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',
--- 'Vulkan.Extensions.VK_EXT_astc_decode_mode.PhysicalDeviceASTCDecodeFeaturesEXT',
--- 'Vulkan.Extensions.VK_KHR_acceleration_structure.PhysicalDeviceAccelerationStructureFeaturesKHR',
--- 'Vulkan.Extensions.VK_KHR_acceleration_structure.PhysicalDeviceAccelerationStructurePropertiesKHR',
--- 'Vulkan.Extensions.VK_EXT_device_address_binding_report.PhysicalDeviceAddressBindingReportFeaturesEXT',
--- 'Vulkan.Extensions.VK_SEC_amigo_profiling.PhysicalDeviceAmigoProfilingFeaturesSEC',
--- 'Vulkan.Extensions.VK_AMD_anti_lag.PhysicalDeviceAntiLagFeaturesAMD',
--- 'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT',
--- 'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_layout.PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT',
--- 'Vulkan.Extensions.VK_EXT_blend_operation_advanced.PhysicalDeviceBlendOperationAdvancedFeaturesEXT',
--- 'Vulkan.Extensions.VK_EXT_blend_operation_advanced.PhysicalDeviceBlendOperationAdvancedPropertiesEXT',
--- 'Vulkan.Extensions.VK_EXT_border_color_swizzle.PhysicalDeviceBorderColorSwizzleFeaturesEXT',
--- 'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.PhysicalDeviceBufferDeviceAddressFeatures',
--- 'Vulkan.Extensions.VK_EXT_buffer_device_address.PhysicalDeviceBufferDeviceAddressFeaturesEXT',
--- 'Vulkan.Extensions.VK_HUAWEI_cluster_culling_shader.PhysicalDeviceClusterCullingShaderFeaturesHUAWEI',
--- 'Vulkan.Extensions.VK_HUAWEI_cluster_culling_shader.PhysicalDeviceClusterCullingShaderPropertiesHUAWEI',
--- 'Vulkan.Extensions.VK_HUAWEI_cluster_culling_shader.PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI',
--- 'Vulkan.Extensions.VK_AMD_device_coherent_memory.PhysicalDeviceCoherentMemoryFeaturesAMD',
--- 'Vulkan.Extensions.VK_EXT_color_write_enable.PhysicalDeviceColorWriteEnableFeaturesEXT',
--- 'Vulkan.Extensions.VK_NV_command_buffer_inheritance.PhysicalDeviceCommandBufferInheritanceFeaturesNV',
--- 'Vulkan.Extensions.VK_KHR_compute_shader_derivatives.PhysicalDeviceComputeShaderDerivativesFeaturesKHR',
--- 'Vulkan.Extensions.VK_KHR_compute_shader_derivatives.PhysicalDeviceComputeShaderDerivativesPropertiesKHR',
--- 'Vulkan.Extensions.VK_EXT_conditional_rendering.PhysicalDeviceConditionalRenderingFeaturesEXT',
--- 'Vulkan.Extensions.VK_EXT_conservative_rasterization.PhysicalDeviceConservativeRasterizationPropertiesEXT',
--- 'Vulkan.Extensions.VK_NV_cooperative_matrix2.PhysicalDeviceCooperativeMatrix2FeaturesNV',
--- 'Vulkan.Extensions.VK_NV_cooperative_matrix2.PhysicalDeviceCooperativeMatrix2PropertiesNV',
--- 'Vulkan.Extensions.VK_KHR_cooperative_matrix.PhysicalDeviceCooperativeMatrixFeaturesKHR',
--- 'Vulkan.Extensions.VK_NV_cooperative_matrix.PhysicalDeviceCooperativeMatrixFeaturesNV',
--- 'Vulkan.Extensions.VK_KHR_cooperative_matrix.PhysicalDeviceCooperativeMatrixPropertiesKHR',
--- 'Vulkan.Extensions.VK_NV_cooperative_matrix.PhysicalDeviceCooperativeMatrixPropertiesNV',
--- 'Vulkan.Extensions.VK_NV_copy_memory_indirect.PhysicalDeviceCopyMemoryIndirectFeaturesNV',
--- 'Vulkan.Extensions.VK_NV_copy_memory_indirect.PhysicalDeviceCopyMemoryIndirectPropertiesNV',
--- 'Vulkan.Extensions.VK_NV_corner_sampled_image.PhysicalDeviceCornerSampledImageFeaturesNV',
--- 'Vulkan.Extensions.VK_NV_coverage_reduction_mode.PhysicalDeviceCoverageReductionModeFeaturesNV',
--- 'Vulkan.Extensions.VK_QCOM_filter_cubic_clamp.PhysicalDeviceCubicClampFeaturesQCOM',
--- 'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.PhysicalDeviceCubicWeightsFeaturesQCOM',
--- 'Vulkan.Extensions.VK_NV_cuda_kernel_launch.PhysicalDeviceCudaKernelLaunchFeaturesNV',
--- 'Vulkan.Extensions.VK_NV_cuda_kernel_launch.PhysicalDeviceCudaKernelLaunchPropertiesNV',
--- 'Vulkan.Extensions.VK_EXT_custom_border_color.PhysicalDeviceCustomBorderColorFeaturesEXT',
--- 'Vulkan.Extensions.VK_EXT_custom_border_color.PhysicalDeviceCustomBorderColorPropertiesEXT',
--- 'Vulkan.Extensions.VK_NV_dedicated_allocation_image_aliasing.PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV',
--- 'Vulkan.Extensions.VK_EXT_depth_bias_control.PhysicalDeviceDepthBiasControlFeaturesEXT',
--- 'Vulkan.Extensions.VK_EXT_depth_clamp_control.PhysicalDeviceDepthClampControlFeaturesEXT',
--- 'Vulkan.Extensions.VK_EXT_depth_clamp_zero_one.PhysicalDeviceDepthClampZeroOneFeaturesEXT',
--- 'Vulkan.Extensions.VK_EXT_depth_clip_control.PhysicalDeviceDepthClipControlFeaturesEXT',
--- 'Vulkan.Extensions.VK_EXT_depth_clip_enable.PhysicalDeviceDepthClipEnableFeaturesEXT',
--- 'Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve.PhysicalDeviceDepthStencilResolveProperties',
--- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT',
--- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.PhysicalDeviceDescriptorBufferFeaturesEXT',
--- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.PhysicalDeviceDescriptorBufferPropertiesEXT',
--- 'Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.PhysicalDeviceDescriptorIndexingFeatures',
--- 'Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.PhysicalDeviceDescriptorIndexingProperties',
--- 'Vulkan.Extensions.VK_NV_descriptor_pool_overallocation.PhysicalDeviceDescriptorPoolOverallocationFeaturesNV',
--- 'Vulkan.Extensions.VK_VALVE_descriptor_set_host_mapping.PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE',
--- 'Vulkan.Extensions.VK_NV_device_generated_commands_compute.PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV',
--- 'Vulkan.Extensions.VK_EXT_device_generated_commands.PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT',
--- 'Vulkan.Extensions.VK_NV_device_generated_commands.PhysicalDeviceDeviceGeneratedCommandsFeaturesNV',
--- 'Vulkan.Extensions.VK_EXT_device_generated_commands.PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT',
--- 'Vulkan.Extensions.VK_NV_device_generated_commands.PhysicalDeviceDeviceGeneratedCommandsPropertiesNV',
--- 'Vulkan.Extensions.VK_EXT_device_memory_report.PhysicalDeviceDeviceMemoryReportFeaturesEXT',
--- 'Vulkan.Extensions.VK_NV_device_diagnostics_config.PhysicalDeviceDiagnosticsConfigFeaturesNV',
--- 'Vulkan.Extensions.VK_EXT_discard_rectangles.PhysicalDeviceDiscardRectanglePropertiesEXT',
--- 'Vulkan.Extensions.VK_NV_displacement_micromap.PhysicalDeviceDisplacementMicromapFeaturesNV',
--- 'Vulkan.Extensions.VK_NV_displacement_micromap.PhysicalDeviceDisplacementMicromapPropertiesNV',
--- 'Vulkan.Core12.Promoted_From_VK_KHR_driver_properties.PhysicalDeviceDriverProperties',
--- 'Vulkan.Extensions.VK_EXT_physical_device_drm.PhysicalDeviceDrmPropertiesEXT',
--- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PhysicalDeviceDynamicRenderingFeatures',
--- 'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR',
--- 'Vulkan.Extensions.VK_EXT_dynamic_rendering_unused_attachments.PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT',
--- 'Vulkan.Extensions.VK_NV_scissor_exclusive.PhysicalDeviceExclusiveScissorFeaturesNV',
--- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.PhysicalDeviceExtendedDynamicState2FeaturesEXT',
--- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.PhysicalDeviceExtendedDynamicState3FeaturesEXT',
--- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.PhysicalDeviceExtendedDynamicState3PropertiesEXT',
--- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.PhysicalDeviceExtendedDynamicStateFeaturesEXT',
--- 'Vulkan.Extensions.VK_NV_extended_sparse_address_space.PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV',
--- 'Vulkan.Extensions.VK_NV_extended_sparse_address_space.PhysicalDeviceExtendedSparseAddressSpacePropertiesNV',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceExternalBufferInfo',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_external_fence_capabilities.PhysicalDeviceExternalFenceInfo',
--- 'Vulkan.Extensions.VK_ANDROID_external_format_resolve.PhysicalDeviceExternalFormatResolveFeaturesANDROID',
--- 'Vulkan.Extensions.VK_ANDROID_external_format_resolve.PhysicalDeviceExternalFormatResolvePropertiesANDROID',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceExternalImageFormatInfo',
--- 'Vulkan.Extensions.VK_EXT_external_memory_host.PhysicalDeviceExternalMemoryHostPropertiesEXT',
--- 'Vulkan.Extensions.VK_NV_external_memory_rdma.PhysicalDeviceExternalMemoryRDMAFeaturesNV',
--- 'Vulkan.Extensions.VK_QNX_external_memory_screen_buffer.PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore_capabilities.PhysicalDeviceExternalSemaphoreInfo',
--- 'Vulkan.Extensions.VK_EXT_device_fault.PhysicalDeviceFaultFeaturesEXT',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--- 'Vulkan.Core12.Promoted_From_VK_KHR_shader_float_controls.PhysicalDeviceFloatControlsProperties',
--- 'Vulkan.Extensions.VK_EXT_fragment_density_map2.PhysicalDeviceFragmentDensityMap2FeaturesEXT',
--- 'Vulkan.Extensions.VK_EXT_fragment_density_map2.PhysicalDeviceFragmentDensityMap2PropertiesEXT',
--- 'Vulkan.Extensions.VK_EXT_fragment_density_map.PhysicalDeviceFragmentDensityMapFeaturesEXT',
--- 'Vulkan.Extensions.VK_QCOM_fragment_density_map_offset.PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM',
--- 'Vulkan.Extensions.VK_QCOM_fragment_density_map_offset.PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM',
--- 'Vulkan.Extensions.VK_EXT_fragment_density_map.PhysicalDeviceFragmentDensityMapPropertiesEXT',
--- 'Vulkan.Extensions.VK_KHR_fragment_shader_barycentric.PhysicalDeviceFragmentShaderBarycentricFeaturesKHR',
--- 'Vulkan.Extensions.VK_KHR_fragment_shader_barycentric.PhysicalDeviceFragmentShaderBarycentricPropertiesKHR',
--- 'Vulkan.Extensions.VK_EXT_fragment_shader_interlock.PhysicalDeviceFragmentShaderInterlockFeaturesEXT',
--- 'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PhysicalDeviceFragmentShadingRateEnumsFeaturesNV',
--- 'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PhysicalDeviceFragmentShadingRateEnumsPropertiesNV',
--- '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_frame_boundary.PhysicalDeviceFrameBoundaryFeaturesEXT',
--- 'Vulkan.Extensions.VK_KHR_global_priority.PhysicalDeviceGlobalPriorityQueryFeaturesKHR',
--- 'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT',
--- 'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group_creation.PhysicalDeviceGroupProperties',
--- 'Vulkan.Extensions.VK_HUAWEI_hdr_vivid.PhysicalDeviceHdrVividFeaturesHUAWEI',
--- 'Vulkan.Extensions.VK_EXT_host_image_copy.PhysicalDeviceHostImageCopyFeaturesEXT',
--- 'Vulkan.Extensions.VK_EXT_host_image_copy.PhysicalDeviceHostImageCopyPropertiesEXT',
--- '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_2d_view_of_3d.PhysicalDeviceImage2DViewOf3DFeaturesEXT',
--- 'Vulkan.Extensions.VK_MESA_image_alignment_control.PhysicalDeviceImageAlignmentControlFeaturesMESA',
--- 'Vulkan.Extensions.VK_MESA_image_alignment_control.PhysicalDeviceImageAlignmentControlPropertiesMESA',
--- 'Vulkan.Extensions.VK_EXT_image_compression_control.PhysicalDeviceImageCompressionControlFeaturesEXT',
--- 'Vulkan.Extensions.VK_EXT_image_compression_control_swapchain.PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT',
--- 'Vulkan.Extensions.VK_EXT_image_drm_format_modifier.PhysicalDeviceImageDrmFormatModifierInfoEXT',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceImageFormatInfo2',
--- 'Vulkan.Extensions.VK_QCOM_image_processing2.PhysicalDeviceImageProcessing2FeaturesQCOM',
--- 'Vulkan.Extensions.VK_QCOM_image_processing2.PhysicalDeviceImageProcessing2PropertiesQCOM',
--- 'Vulkan.Extensions.VK_QCOM_image_processing.PhysicalDeviceImageProcessingFeaturesQCOM',
--- 'Vulkan.Extensions.VK_QCOM_image_processing.PhysicalDeviceImageProcessingPropertiesQCOM',
--- 'Vulkan.Core13.Promoted_From_VK_EXT_image_robustness.PhysicalDeviceImageRobustnessFeatures',
--- 'Vulkan.Extensions.VK_EXT_image_sliced_view_of_3d.PhysicalDeviceImageSlicedViewOf3DFeaturesEXT',
--- '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_KHR_index_type_uint8.PhysicalDeviceIndexTypeUint8FeaturesKHR',
--- 'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.PhysicalDeviceInheritedViewportScissorFeaturesNV',
--- '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_KHR_maintenance7.PhysicalDeviceLayeredApiPropertiesKHR',
--- 'Vulkan.Extensions.VK_KHR_maintenance7.PhysicalDeviceLayeredApiPropertiesListKHR',
--- 'Vulkan.Extensions.VK_KHR_maintenance7.PhysicalDeviceLayeredApiVulkanPropertiesKHR',
--- 'Vulkan.Extensions.VK_MSFT_layered_driver.PhysicalDeviceLayeredDriverPropertiesMSFT',
--- 'Vulkan.Extensions.VK_EXT_legacy_dithering.PhysicalDeviceLegacyDitheringFeaturesEXT',
--- 'Vulkan.Extensions.VK_EXT_legacy_vertex_attributes.PhysicalDeviceLegacyVertexAttributesFeaturesEXT',
--- 'Vulkan.Extensions.VK_EXT_legacy_vertex_attributes.PhysicalDeviceLegacyVertexAttributesPropertiesEXT',
--- 'Vulkan.Extensions.VK_KHR_line_rasterization.PhysicalDeviceLineRasterizationFeaturesKHR',
--- 'Vulkan.Extensions.VK_KHR_line_rasterization.PhysicalDeviceLineRasterizationPropertiesKHR',
--- 'Vulkan.Extensions.VK_NV_linear_color_attachment.PhysicalDeviceLinearColorAttachmentFeaturesNV',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_maintenance3.PhysicalDeviceMaintenance3Properties',
--- 'Vulkan.Core13.Promoted_From_VK_KHR_maintenance4.PhysicalDeviceMaintenance4Features',
--- 'Vulkan.Core13.Promoted_From_VK_KHR_maintenance4.PhysicalDeviceMaintenance4Properties',
--- 'Vulkan.Extensions.VK_KHR_maintenance5.PhysicalDeviceMaintenance5FeaturesKHR',
--- 'Vulkan.Extensions.VK_KHR_maintenance5.PhysicalDeviceMaintenance5PropertiesKHR',
--- 'Vulkan.Extensions.VK_KHR_maintenance6.PhysicalDeviceMaintenance6FeaturesKHR',
--- 'Vulkan.Extensions.VK_KHR_maintenance6.PhysicalDeviceMaintenance6PropertiesKHR',
--- 'Vulkan.Extensions.VK_KHR_maintenance7.PhysicalDeviceMaintenance7FeaturesKHR',
--- 'Vulkan.Extensions.VK_KHR_maintenance7.PhysicalDeviceMaintenance7PropertiesKHR',
--- 'Vulkan.Extensions.VK_EXT_map_memory_placed.PhysicalDeviceMapMemoryPlacedFeaturesEXT',
--- 'Vulkan.Extensions.VK_EXT_map_memory_placed.PhysicalDeviceMapMemoryPlacedPropertiesEXT',
--- 'Vulkan.Extensions.VK_EXT_memory_budget.PhysicalDeviceMemoryBudgetPropertiesEXT',
--- 'Vulkan.Extensions.VK_NV_memory_decompression.PhysicalDeviceMemoryDecompressionFeaturesNV',
--- 'Vulkan.Extensions.VK_NV_memory_decompression.PhysicalDeviceMemoryDecompressionPropertiesNV',
--- 'Vulkan.Extensions.VK_EXT_memory_priority.PhysicalDeviceMemoryPriorityFeaturesEXT',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceMemoryProperties2',
--- 'Vulkan.Extensions.VK_EXT_mesh_shader.PhysicalDeviceMeshShaderFeaturesEXT',
--- 'Vulkan.Extensions.VK_NV_mesh_shader.PhysicalDeviceMeshShaderFeaturesNV',
--- 'Vulkan.Extensions.VK_EXT_mesh_shader.PhysicalDeviceMeshShaderPropertiesEXT',
--- 'Vulkan.Extensions.VK_NV_mesh_shader.PhysicalDeviceMeshShaderPropertiesNV',
--- 'Vulkan.Extensions.VK_EXT_multi_draw.PhysicalDeviceMultiDrawFeaturesEXT',
--- 'Vulkan.Extensions.VK_EXT_multi_draw.PhysicalDeviceMultiDrawPropertiesEXT',
--- 'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_multiview.PhysicalDeviceMultiviewFeatures',
--- 'Vulkan.Extensions.VK_NVX_multiview_per_view_attributes.PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX',
--- 'Vulkan.Extensions.VK_QCOM_multiview_per_view_render_areas.PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM',
--- 'Vulkan.Extensions.VK_QCOM_multiview_per_view_viewports.PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_multiview.PhysicalDeviceMultiviewProperties',
--- 'Vulkan.Extensions.VK_EXT_mutable_descriptor_type.PhysicalDeviceMutableDescriptorTypeFeaturesEXT',
--- 'Vulkan.Extensions.VK_EXT_nested_command_buffer.PhysicalDeviceNestedCommandBufferFeaturesEXT',
--- 'Vulkan.Extensions.VK_EXT_nested_command_buffer.PhysicalDeviceNestedCommandBufferPropertiesEXT',
--- 'Vulkan.Extensions.VK_EXT_non_seamless_cube_map.PhysicalDeviceNonSeamlessCubeMapFeaturesEXT',
--- 'Vulkan.Extensions.VK_EXT_opacity_micromap.PhysicalDeviceOpacityMicromapFeaturesEXT',
--- 'Vulkan.Extensions.VK_EXT_opacity_micromap.PhysicalDeviceOpacityMicromapPropertiesEXT',
--- 'Vulkan.Extensions.VK_NV_optical_flow.PhysicalDeviceOpticalFlowFeaturesNV',
--- 'Vulkan.Extensions.VK_NV_optical_flow.PhysicalDeviceOpticalFlowPropertiesNV',
--- 'Vulkan.Extensions.VK_EXT_pci_bus_info.PhysicalDevicePCIBusInfoPropertiesEXT',
--- 'Vulkan.Extensions.VK_EXT_pageable_device_local_memory.PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT',
--- 'Vulkan.Extensions.VK_NV_per_stage_descriptor_set.PhysicalDevicePerStageDescriptorSetFeaturesNV',
--- 'Vulkan.Extensions.VK_KHR_performance_query.PhysicalDevicePerformanceQueryFeaturesKHR',
--- 'Vulkan.Extensions.VK_KHR_performance_query.PhysicalDevicePerformanceQueryPropertiesKHR',
--- 'Vulkan.Extensions.VK_KHR_pipeline_binary.PhysicalDevicePipelineBinaryFeaturesKHR',
--- 'Vulkan.Extensions.VK_KHR_pipeline_binary.PhysicalDevicePipelineBinaryPropertiesKHR',
--- 'Vulkan.Core13.Promoted_From_VK_EXT_pipeline_creation_cache_control.PhysicalDevicePipelineCreationCacheControlFeatures',
--- 'Vulkan.Extensions.VK_KHR_pipeline_executable_properties.PhysicalDevicePipelineExecutablePropertiesFeaturesKHR',
--- 'Vulkan.Extensions.VK_EXT_pipeline_library_group_handles.PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT',
--- 'Vulkan.Extensions.VK_EXT_pipeline_properties.PhysicalDevicePipelinePropertiesFeaturesEXT',
--- 'Vulkan.Extensions.VK_EXT_pipeline_protected_access.PhysicalDevicePipelineProtectedAccessFeaturesEXT',
--- 'Vulkan.Extensions.VK_EXT_pipeline_robustness.PhysicalDevicePipelineRobustnessFeaturesEXT',
--- 'Vulkan.Extensions.VK_EXT_pipeline_robustness.PhysicalDevicePipelineRobustnessPropertiesEXT',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_maintenance2.PhysicalDevicePointClippingProperties',
--- 'Vulkan.Extensions.VK_KHR_portability_subset.PhysicalDevicePortabilitySubsetFeaturesKHR',
--- 'Vulkan.Extensions.VK_KHR_portability_subset.PhysicalDevicePortabilitySubsetPropertiesKHR',
--- 'Vulkan.Extensions.VK_NV_present_barrier.PhysicalDevicePresentBarrierFeaturesNV',
--- 'Vulkan.Extensions.VK_KHR_present_id.PhysicalDevicePresentIdFeaturesKHR',
--- 'Vulkan.Extensions.VK_EXT_present_mode_fifo_latest_ready.PhysicalDevicePresentModeFifoLatestReadyFeaturesEXT',
--- 'Vulkan.Extensions.VK_KHR_present_wait.PhysicalDevicePresentWaitFeaturesKHR',
--- 'Vulkan.Extensions.VK_EXT_primitive_topology_list_restart.PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT',
--- 'Vulkan.Extensions.VK_EXT_primitives_generated_query.PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT',
--- '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',
--- 'Vulkan.Extensions.VK_EXT_provoking_vertex.PhysicalDeviceProvokingVertexFeaturesEXT',
--- 'Vulkan.Extensions.VK_EXT_provoking_vertex.PhysicalDeviceProvokingVertexPropertiesEXT',
--- 'Vulkan.Extensions.VK_KHR_push_descriptor.PhysicalDevicePushDescriptorPropertiesKHR',
--- 'Vulkan.Extensions.VK_EXT_rgba10x6_formats.PhysicalDeviceRGBA10X6FormatsFeaturesEXT',
--- 'Vulkan.Extensions.VK_EXT_rasterization_order_attachment_access.PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT',
--- 'Vulkan.Extensions.VK_NV_raw_access_chains.PhysicalDeviceRawAccessChainsFeaturesNV',
--- 'Vulkan.Extensions.VK_KHR_ray_query.PhysicalDeviceRayQueryFeaturesKHR',
--- 'Vulkan.Extensions.VK_NV_ray_tracing_invocation_reorder.PhysicalDeviceRayTracingInvocationReorderFeaturesNV',
--- 'Vulkan.Extensions.VK_NV_ray_tracing_invocation_reorder.PhysicalDeviceRayTracingInvocationReorderPropertiesNV',
--- 'Vulkan.Extensions.VK_KHR_ray_tracing_maintenance1.PhysicalDeviceRayTracingMaintenance1FeaturesKHR',
--- 'Vulkan.Extensions.VK_NV_ray_tracing_motion_blur.PhysicalDeviceRayTracingMotionBlurFeaturesNV',
--- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.PhysicalDeviceRayTracingPipelineFeaturesKHR',
--- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.PhysicalDeviceRayTracingPipelinePropertiesKHR',
--- 'Vulkan.Extensions.VK_KHR_ray_tracing_position_fetch.PhysicalDeviceRayTracingPositionFetchFeaturesKHR',
--- 'Vulkan.Extensions.VK_NV_ray_tracing.PhysicalDeviceRayTracingPropertiesNV',
--- 'Vulkan.Extensions.VK_NV_ray_tracing_validation.PhysicalDeviceRayTracingValidationFeaturesNV',
--- 'Vulkan.Extensions.VK_IMG_relaxed_line_rasterization.PhysicalDeviceRelaxedLineRasterizationFeaturesIMG',
--- 'Vulkan.Extensions.VK_ARM_render_pass_striped.PhysicalDeviceRenderPassStripedFeaturesARM',
--- 'Vulkan.Extensions.VK_ARM_render_pass_striped.PhysicalDeviceRenderPassStripedPropertiesARM',
--- 'Vulkan.Extensions.VK_NV_representative_fragment_test.PhysicalDeviceRepresentativeFragmentTestFeaturesNV',
--- 'Vulkan.Extensions.VK_EXT_robustness2.PhysicalDeviceRobustness2FeaturesEXT',
--- 'Vulkan.Extensions.VK_EXT_robustness2.PhysicalDeviceRobustness2PropertiesEXT',
--- 'Vulkan.Extensions.VK_EXT_sample_locations.PhysicalDeviceSampleLocationsPropertiesEXT',
--- 'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.PhysicalDeviceSamplerFilterMinmaxProperties',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.PhysicalDeviceSamplerYcbcrConversionFeatures',
--- 'Vulkan.Core12.Promoted_From_VK_EXT_scalar_block_layout.PhysicalDeviceScalarBlockLayoutFeatures',
--- 'Vulkan.Extensions.VK_ARM_scheduling_controls.PhysicalDeviceSchedulingControlsFeaturesARM',
--- 'Vulkan.Extensions.VK_ARM_scheduling_controls.PhysicalDeviceSchedulingControlsPropertiesARM',
--- 'Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts.PhysicalDeviceSeparateDepthStencilLayoutsFeatures',
--- 'Vulkan.Extensions.VK_NV_shader_atomic_float16_vector.PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV',
--- 'Vulkan.Extensions.VK_EXT_shader_atomic_float2.PhysicalDeviceShaderAtomicFloat2FeaturesEXT',
--- '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_ARM_shader_core_builtins.PhysicalDeviceShaderCoreBuiltinsFeaturesARM',
--- 'Vulkan.Extensions.VK_ARM_shader_core_builtins.PhysicalDeviceShaderCoreBuiltinsPropertiesARM',
--- 'Vulkan.Extensions.VK_AMD_shader_core_properties2.PhysicalDeviceShaderCoreProperties2AMD',
--- 'Vulkan.Extensions.VK_AMD_shader_core_properties.PhysicalDeviceShaderCorePropertiesAMD',
--- 'Vulkan.Extensions.VK_ARM_shader_core_properties.PhysicalDeviceShaderCorePropertiesARM',
--- 'Vulkan.Core13.Promoted_From_VK_EXT_shader_demote_to_helper_invocation.PhysicalDeviceShaderDemoteToHelperInvocationFeatures',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_shader_draw_parameters.PhysicalDeviceShaderDrawParametersFeatures',
--- 'Vulkan.Extensions.VK_AMD_shader_early_and_late_fragment_tests.PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD',
--- 'Vulkan.Extensions.VK_AMDX_shader_enqueue.PhysicalDeviceShaderEnqueueFeaturesAMDX',
--- 'Vulkan.Extensions.VK_AMDX_shader_enqueue.PhysicalDeviceShaderEnqueuePropertiesAMDX',
--- 'Vulkan.Extensions.VK_KHR_shader_expect_assume.PhysicalDeviceShaderExpectAssumeFeaturesKHR',
--- 'Vulkan.Core12.Promoted_From_VK_KHR_shader_float16_int8.PhysicalDeviceShaderFloat16Int8Features',
--- 'Vulkan.Extensions.VK_KHR_shader_float_controls2.PhysicalDeviceShaderFloatControls2FeaturesKHR',
--- 'Vulkan.Extensions.VK_EXT_shader_image_atomic_int64.PhysicalDeviceShaderImageAtomicInt64FeaturesEXT',
--- 'Vulkan.Extensions.VK_NV_shader_image_footprint.PhysicalDeviceShaderImageFootprintFeaturesNV',
--- '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_KHR_shader_maximal_reconvergence.PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR',
--- 'Vulkan.Extensions.VK_EXT_shader_module_identifier.PhysicalDeviceShaderModuleIdentifierFeaturesEXT',
--- 'Vulkan.Extensions.VK_EXT_shader_module_identifier.PhysicalDeviceShaderModuleIdentifierPropertiesEXT',
--- 'Vulkan.Extensions.VK_EXT_shader_object.PhysicalDeviceShaderObjectFeaturesEXT',
--- 'Vulkan.Extensions.VK_EXT_shader_object.PhysicalDeviceShaderObjectPropertiesEXT',
--- 'Vulkan.Extensions.VK_KHR_shader_quad_control.PhysicalDeviceShaderQuadControlFeaturesKHR',
--- 'Vulkan.Extensions.VK_KHR_shader_relaxed_extended_instruction.PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR',
--- 'Vulkan.Extensions.VK_EXT_shader_replicated_composites.PhysicalDeviceShaderReplicatedCompositesFeaturesEXT',
--- '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_rotate.PhysicalDeviceShaderSubgroupRotateFeaturesKHR',
--- 'Vulkan.Extensions.VK_KHR_shader_subgroup_uniform_control_flow.PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR',
--- 'Vulkan.Core13.Promoted_From_VK_KHR_shader_terminate_invocation.PhysicalDeviceShaderTerminateInvocationFeatures',
--- 'Vulkan.Extensions.VK_EXT_shader_tile_image.PhysicalDeviceShaderTileImageFeaturesEXT',
--- 'Vulkan.Extensions.VK_EXT_shader_tile_image.PhysicalDeviceShaderTileImagePropertiesEXT',
--- '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.Core13.Promoted_From_VK_EXT_subgroup_size_control.PhysicalDeviceSubgroupSizeControlFeatures',
--- 'Vulkan.Core13.Promoted_From_VK_EXT_subgroup_size_control.PhysicalDeviceSubgroupSizeControlProperties',
--- 'Vulkan.Extensions.VK_EXT_subpass_merge_feedback.PhysicalDeviceSubpassMergeFeedbackFeaturesEXT',
--- '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_EXT_swapchain_maintenance1.PhysicalDeviceSwapchainMaintenance1FeaturesEXT',
--- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.PhysicalDeviceSynchronization2Features',
--- 'Vulkan.Extensions.VK_EXT_texel_buffer_alignment.PhysicalDeviceTexelBufferAlignmentFeaturesEXT',
--- 'Vulkan.Core13.Promoted_From_VK_EXT_texel_buffer_alignment.PhysicalDeviceTexelBufferAlignmentProperties',
--- 'Vulkan.Core13.Promoted_From_VK_EXT_texture_compression_astc_hdr.PhysicalDeviceTextureCompressionASTCHDRFeatures',
--- 'Vulkan.Extensions.VK_QCOM_tile_properties.PhysicalDeviceTilePropertiesFeaturesQCOM',
--- 'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.PhysicalDeviceTimelineSemaphoreFeatures',
--- 'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.PhysicalDeviceTimelineSemaphoreProperties',
--- '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',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_variable_pointers.PhysicalDeviceVariablePointersFeatures',
--- 'Vulkan.Extensions.VK_KHR_vertex_attribute_divisor.PhysicalDeviceVertexAttributeDivisorFeaturesKHR',
--- 'Vulkan.Extensions.VK_EXT_vertex_attribute_divisor.PhysicalDeviceVertexAttributeDivisorPropertiesEXT',
--- 'Vulkan.Extensions.VK_KHR_vertex_attribute_divisor.PhysicalDeviceVertexAttributeDivisorPropertiesKHR',
--- 'Vulkan.Extensions.VK_EXT_vertex_attribute_robustness.PhysicalDeviceVertexAttributeRobustnessFeaturesEXT',
--- 'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.PhysicalDeviceVertexInputDynamicStateFeaturesEXT',
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPhysicalDeviceVideoEncodeAV1FeaturesKHR VkPhysicalDeviceVideoEncodeAV1FeaturesKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPhysicalDeviceVideoFormatInfoKHR VkPhysicalDeviceVideoFormatInfoKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPhysicalDeviceVideoMaintenance1FeaturesKHR VkPhysicalDeviceVideoMaintenance1FeaturesKHR>,
--- 'Vulkan.Core12.PhysicalDeviceVulkan11Features',
--- '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_QCOM_ycbcr_degamma.PhysicalDeviceYcbcrDegammaFeaturesQCOM',
--- 'Vulkan.Extensions.VK_EXT_ycbcr_image_arrays.PhysicalDeviceYcbcrImageArraysFeaturesEXT',
--- 'Vulkan.Core13.Promoted_From_VK_KHR_zero_initialize_workgroup_memory.PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures',
--- 'Vulkan.Extensions.VK_KHR_pipeline_binary.PipelineBinaryCreateInfoKHR',
--- 'Vulkan.Extensions.VK_KHR_pipeline_binary.PipelineBinaryDataInfoKHR',
--- 'Vulkan.Extensions.VK_KHR_pipeline_binary.PipelineBinaryHandlesInfoKHR',
--- 'Vulkan.Extensions.VK_KHR_pipeline_binary.PipelineBinaryInfoKHR',
--- 'Vulkan.Extensions.VK_KHR_pipeline_binary.PipelineBinaryKeyKHR',
--- 'Vulkan.Core10.PipelineCache.PipelineCacheCreateInfo',
--- 'Vulkan.Extensions.VK_EXT_blend_operation_advanced.PipelineColorBlendAdvancedStateCreateInfoEXT',
--- 'Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo',
--- 'Vulkan.Extensions.VK_EXT_color_write_enable.PipelineColorWriteCreateInfoEXT',
--- 'Vulkan.Extensions.VK_AMD_pipeline_compiler_control.PipelineCompilerControlCreateInfoAMD',
--- 'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.PipelineCoverageModulationStateCreateInfoNV',
--- 'Vulkan.Extensions.VK_NV_coverage_reduction_mode.PipelineCoverageReductionStateCreateInfoNV',
--- 'Vulkan.Extensions.VK_NV_fragment_coverage_to_color.PipelineCoverageToColorStateCreateInfoNV',
--- 'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlags2CreateInfoKHR',
--- 'Vulkan.Extensions.VK_KHR_pipeline_binary.PipelineCreateInfoKHR',
--- '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',
--- 'Vulkan.Extensions.VK_KHR_pipeline_executable_properties.PipelineExecutableInfoKHR',
--- 'Vulkan.Extensions.VK_KHR_pipeline_executable_properties.PipelineExecutableInternalRepresentationKHR',
--- 'Vulkan.Extensions.VK_KHR_pipeline_executable_properties.PipelineExecutablePropertiesKHR',
--- 'Vulkan.Extensions.VK_KHR_pipeline_executable_properties.PipelineExecutableStatisticKHR',
--- 'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PipelineFragmentShadingRateEnumStateCreateInfoNV',
--- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR',
--- 'Vulkan.Extensions.VK_NV_device_generated_commands_compute.PipelineIndirectDeviceAddressInfoNV',
--- 'Vulkan.Extensions.VK_KHR_pipeline_executable_properties.PipelineInfoKHR',
--- 'Vulkan.Core10.Pipeline.PipelineInputAssemblyStateCreateInfo',
--- 'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo',
--- 'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR',
--- 'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo',
--- 'Vulkan.Extensions.VK_EXT_pipeline_properties.PipelinePropertiesIdentifierEXT',
--- 'Vulkan.Extensions.VK_EXT_conservative_rasterization.PipelineRasterizationConservativeStateCreateInfoEXT',
--- 'Vulkan.Extensions.VK_EXT_depth_clip_enable.PipelineRasterizationDepthClipStateCreateInfoEXT',
--- 'Vulkan.Extensions.VK_KHR_line_rasterization.PipelineRasterizationLineStateCreateInfoKHR',
--- 'Vulkan.Extensions.VK_EXT_provoking_vertex.PipelineRasterizationProvokingVertexStateCreateInfoEXT',
--- 'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo',
--- 'Vulkan.Extensions.VK_AMD_rasterization_order.PipelineRasterizationStateRasterizationOrderAMD',
--- 'Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT',
--- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo',
--- 'Vulkan.Extensions.VK_NV_representative_fragment_test.PipelineRepresentativeFragmentTestStateCreateInfoNV',
--- 'Vulkan.Extensions.VK_EXT_pipeline_robustness.PipelineRobustnessCreateInfoEXT',
--- 'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT',
--- 'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo',
--- 'Vulkan.Extensions.VK_EXT_shader_module_identifier.PipelineShaderStageModuleIdentifierCreateInfoEXT',
--- 'Vulkan.Extensions.VK_AMDX_shader_enqueue.PipelineShaderStageNodeCreateInfoAMDX',
--- '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_KHR_vertex_attribute_divisor.PipelineVertexInputDivisorStateCreateInfoKHR',
--- 'Vulkan.Core10.Pipeline.PipelineVertexInputStateCreateInfo',
--- 'Vulkan.Extensions.VK_NV_shading_rate_image.PipelineViewportCoarseSampleOrderStateCreateInfoNV',
--- 'Vulkan.Extensions.VK_EXT_depth_clamp_control.PipelineViewportDepthClampControlCreateInfoEXT',
--- 'Vulkan.Extensions.VK_EXT_depth_clip_control.PipelineViewportDepthClipControlCreateInfoEXT',
--- 'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV',
--- 'Vulkan.Extensions.VK_NV_shading_rate_image.PipelineViewportShadingRateImageStateCreateInfoNV',
--- 'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo',
--- 'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV',
--- 'Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV',
--- 'Vulkan.Extensions.VK_GGP_frame_token.PresentFrameTokenGGP',
--- 'Vulkan.Extensions.VK_KHR_present_id.PresentIdKHR',
--- 'Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR',
--- 'Vulkan.Extensions.VK_KHR_incremental_present.PresentRegionsKHR',
--- 'Vulkan.Extensions.VK_GOOGLE_display_timing.PresentTimesInfoGOOGLE',
--- 'Vulkan.Core13.Promoted_From_VK_EXT_private_data.PrivateDataSlotCreateInfo',
--- 'Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory.ProtectedSubmitInfo',
--- 'Vulkan.Extensions.VK_KHR_maintenance6.PushConstantsInfoKHR',
--- 'Vulkan.Extensions.VK_KHR_maintenance6.PushDescriptorSetInfoKHR',
--- 'Vulkan.Extensions.VK_KHR_maintenance6.PushDescriptorSetWithTemplateInfoKHR',
--- 'Vulkan.Extensions.VK_NV_low_latency.QueryLowLatencySupportNV',
--- 'Vulkan.Core10.Query.QueryPoolCreateInfo',
--- 'Vulkan.Extensions.VK_KHR_performance_query.QueryPoolPerformanceCreateInfoKHR',
--- 'Vulkan.Extensions.VK_INTEL_performance_query.QueryPoolPerformanceQueryCreateInfoINTEL',
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueryPoolVideoEncodeFeedbackCreateInfoKHR VkQueryPoolVideoEncodeFeedbackCreateInfoKHR>,
--- 'Vulkan.Extensions.VK_NV_device_diagnostic_checkpoints.QueueFamilyCheckpointProperties2NV',
--- 'Vulkan.Extensions.VK_NV_device_diagnostic_checkpoints.QueueFamilyCheckpointPropertiesNV',
--- '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#VkQueueFamilyQueryResultStatusPropertiesKHR VkQueueFamilyQueryResultStatusPropertiesKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFamilyVideoPropertiesKHR VkQueueFamilyVideoPropertiesKHR>,
--- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingPipelineCreateInfoKHR',
--- 'Vulkan.Extensions.VK_NV_ray_tracing.RayTracingPipelineCreateInfoNV',
--- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingPipelineInterfaceCreateInfoKHR',
--- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingShaderGroupCreateInfoKHR',
--- 'Vulkan.Extensions.VK_NV_ray_tracing.RayTracingShaderGroupCreateInfoNV',
--- 'Vulkan.Extensions.VK_KHR_pipeline_binary.ReleaseCapturedPipelineDataInfoKHR',
--- 'Vulkan.Extensions.VK_EXT_swapchain_maintenance1.ReleaseSwapchainImagesInfoEXT',
--- 'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.RenderPassAttachmentBeginInfo',
--- 'Vulkan.Core10.CommandBufferBuilding.RenderPassBeginInfo',
--- 'Vulkan.Core10.Pass.RenderPassCreateInfo',
--- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.RenderPassCreateInfo2',
--- 'Vulkan.Extensions.VK_EXT_subpass_merge_feedback.RenderPassCreationControlEXT',
--- 'Vulkan.Extensions.VK_EXT_subpass_merge_feedback.RenderPassCreationFeedbackCreateInfoEXT',
--- 'Vulkan.Extensions.VK_EXT_fragment_density_map.RenderPassFragmentDensityMapCreateInfoEXT',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_maintenance2.RenderPassInputAttachmentAspectCreateInfo',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_multiview.RenderPassMultiviewCreateInfo',
--- 'Vulkan.Extensions.VK_EXT_sample_locations.RenderPassSampleLocationsBeginInfoEXT',
--- 'Vulkan.Extensions.VK_ARM_render_pass_striped.RenderPassStripeBeginInfoARM',
--- 'Vulkan.Extensions.VK_ARM_render_pass_striped.RenderPassStripeInfoARM',
--- 'Vulkan.Extensions.VK_ARM_render_pass_striped.RenderPassStripeSubmitInfoARM',
--- 'Vulkan.Extensions.VK_EXT_subpass_merge_feedback.RenderPassSubpassFeedbackCreateInfoEXT',
--- 'Vulkan.Extensions.VK_QCOM_render_pass_transform.RenderPassTransformBeginInfoQCOM',
--- 'Vulkan.Extensions.VK_KHR_maintenance5.RenderingAreaInfoKHR',
--- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingAttachmentInfo',
--- 'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingAttachmentLocationInfoKHR',
--- 'Vulkan.Extensions.VK_EXT_fragment_density_map.RenderingFragmentDensityMapAttachmentInfoEXT',
--- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.RenderingFragmentShadingRateAttachmentInfoKHR',
--- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo',
--- 'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR',
--- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.ResolveImageInfo2',
--- 'Vulkan.Extensions.VK_EXT_sample_locations.SampleLocationsInfoEXT',
--- 'Vulkan.Extensions.VK_QCOM_image_processing2.SamplerBlockMatchWindowCreateInfoQCOM',
--- 'Vulkan.Extensions.VK_EXT_border_color_swizzle.SamplerBorderColorComponentMappingCreateInfoEXT',
--- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.SamplerCaptureDescriptorDataInfoEXT',
--- 'Vulkan.Core10.Sampler.SamplerCreateInfo',
--- 'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.SamplerCubicWeightsCreateInfoQCOM',
--- 'Vulkan.Extensions.VK_EXT_custom_border_color.SamplerCustomBorderColorCreateInfoEXT',
--- 'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionCreateInfo',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionImageFormatProperties',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionInfo',
--- 'Vulkan.Extensions.VK_QCOM_ycbcr_degamma.SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM',
--- 'Vulkan.Extensions.VK_QNX_external_memory_screen_buffer.ScreenBufferFormatPropertiesQNX',
--- 'Vulkan.Extensions.VK_QNX_external_memory_screen_buffer.ScreenBufferPropertiesQNX',
--- 'Vulkan.Extensions.VK_QNX_screen_surface.ScreenSurfaceCreateInfoQNX',
--- 'Vulkan.Core10.QueueSemaphore.SemaphoreCreateInfo',
--- 'Vulkan.Extensions.VK_KHR_external_semaphore_fd.SemaphoreGetFdInfoKHR',
--- '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.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.Extensions.VK_KHR_maintenance6.SetDescriptorBufferOffsetsInfoEXT',
--- 'Vulkan.Extensions.VK_NV_low_latency2.SetLatencyMarkerInfoNV',
--- 'Vulkan.Extensions.VK_EXT_shader_object.ShaderCreateInfoEXT',
--- 'Vulkan.Core10.Shader.ShaderModuleCreateInfo',
--- 'Vulkan.Extensions.VK_EXT_shader_module_identifier.ShaderModuleIdentifierEXT',
--- 'Vulkan.Extensions.VK_EXT_validation_cache.ShaderModuleValidationCacheCreateInfoEXT',
--- 'Vulkan.Extensions.VK_KHR_shared_presentable_image.SharedPresentSurfaceCapabilitiesKHR',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.SparseImageFormatProperties2',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.SparseImageMemoryRequirements2',
--- 'Vulkan.Extensions.VK_GGP_stream_descriptor_surface.StreamDescriptorSurfaceCreateInfoGGP',
--- 'Vulkan.Core10.Queue.SubmitInfo',
--- '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',
--- 'Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve.SubpassDescriptionDepthStencilResolve',
--- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.SubpassEndInfo',
--- 'Vulkan.Extensions.VK_QCOM_fragment_density_map_offset.SubpassFragmentDensityMapOffsetEndInfoQCOM',
--- 'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.SubpassResolvePerformanceQueryEXT',
--- 'Vulkan.Extensions.VK_HUAWEI_subpass_shading.SubpassShadingPipelineCreateInfoHUAWEI',
--- 'Vulkan.Extensions.VK_EXT_host_image_copy.SubresourceHostMemcpySizeEXT',
--- 'Vulkan.Extensions.VK_KHR_maintenance5.SubresourceLayout2KHR',
--- 'Vulkan.Extensions.VK_EXT_display_surface_counter.SurfaceCapabilities2EXT',
--- 'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.SurfaceCapabilities2KHR',
--- 'Vulkan.Extensions.VK_EXT_full_screen_exclusive.SurfaceCapabilitiesFullScreenExclusiveEXT',
--- 'Vulkan.Extensions.VK_NV_present_barrier.SurfaceCapabilitiesPresentBarrierNV',
--- 'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.SurfaceFormat2KHR',
--- 'Vulkan.Extensions.VK_EXT_full_screen_exclusive.SurfaceFullScreenExclusiveInfoEXT',
--- 'Vulkan.Extensions.VK_EXT_full_screen_exclusive.SurfaceFullScreenExclusiveWin32InfoEXT',
--- 'Vulkan.Extensions.VK_EXT_surface_maintenance1.SurfacePresentModeCompatibilityEXT',
--- 'Vulkan.Extensions.VK_EXT_surface_maintenance1.SurfacePresentModeEXT',
--- 'Vulkan.Extensions.VK_EXT_surface_maintenance1.SurfacePresentScalingCapabilitiesEXT',
--- 'Vulkan.Extensions.VK_KHR_surface_protected_capabilities.SurfaceProtectedCapabilitiesKHR',
--- 'Vulkan.Extensions.VK_EXT_display_control.SwapchainCounterCreateInfoEXT',
--- 'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR',
--- 'Vulkan.Extensions.VK_AMD_display_native_hdr.SwapchainDisplayNativeHdrCreateInfoAMD',
--- 'Vulkan.Extensions.VK_NV_low_latency2.SwapchainLatencyCreateInfoNV',
--- 'Vulkan.Extensions.VK_NV_present_barrier.SwapchainPresentBarrierCreateInfoNV',
--- 'Vulkan.Extensions.VK_EXT_swapchain_maintenance1.SwapchainPresentFenceInfoEXT',
--- 'Vulkan.Extensions.VK_EXT_swapchain_maintenance1.SwapchainPresentModeInfoEXT',
--- 'Vulkan.Extensions.VK_EXT_swapchain_maintenance1.SwapchainPresentModesCreateInfoEXT',
--- 'Vulkan.Extensions.VK_EXT_swapchain_maintenance1.SwapchainPresentScalingCreateInfoEXT',
--- 'Vulkan.Extensions.VK_FUCHSIA_buffer_collection.SysmemColorSpaceFUCHSIA',
--- 'Vulkan.Extensions.VK_AMD_texture_gather_bias_lod.TextureLODGatherFormatPropertiesAMD',
--- 'Vulkan.Extensions.VK_QCOM_tile_properties.TilePropertiesQCOM',
--- 'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.TimelineSemaphoreSubmitInfo',
--- 'Vulkan.Extensions.VK_EXT_validation_cache.ValidationCacheCreateInfoEXT',
--- 'Vulkan.Extensions.VK_EXT_validation_features.ValidationFeaturesEXT',
--- 'Vulkan.Extensions.VK_EXT_validation_flags.ValidationFlagsEXT',
--- 'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT',
--- 'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputBindingDescription2EXT',
--- 'Vulkan.Extensions.VK_NN_vi_surface.ViSurfaceCreateInfoNN',
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoBeginCodingInfoKHR VkVideoBeginCodingInfoKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoCapabilitiesKHR VkVideoCapabilitiesKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoCodingControlInfoKHR VkVideoCodingControlInfoKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeAV1CapabilitiesKHR VkVideoDecodeAV1CapabilitiesKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeAV1DpbSlotInfoKHR VkVideoDecodeAV1DpbSlotInfoKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeAV1PictureInfoKHR VkVideoDecodeAV1PictureInfoKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeAV1ProfileInfoKHR VkVideoDecodeAV1ProfileInfoKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeAV1SessionParametersCreateInfoKHR VkVideoDecodeAV1SessionParametersCreateInfoKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeCapabilitiesKHR VkVideoDecodeCapabilitiesKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH264CapabilitiesKHR VkVideoDecodeH264CapabilitiesKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH264DpbSlotInfoKHR VkVideoDecodeH264DpbSlotInfoKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH264PictureInfoKHR VkVideoDecodeH264PictureInfoKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH264ProfileInfoKHR VkVideoDecodeH264ProfileInfoKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH264SessionParametersAddInfoKHR VkVideoDecodeH264SessionParametersAddInfoKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH264SessionParametersCreateInfoKHR VkVideoDecodeH264SessionParametersCreateInfoKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH265CapabilitiesKHR VkVideoDecodeH265CapabilitiesKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH265DpbSlotInfoKHR VkVideoDecodeH265DpbSlotInfoKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH265PictureInfoKHR VkVideoDecodeH265PictureInfoKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH265ProfileInfoKHR VkVideoDecodeH265ProfileInfoKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH265SessionParametersAddInfoKHR VkVideoDecodeH265SessionParametersAddInfoKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH265SessionParametersCreateInfoKHR VkVideoDecodeH265SessionParametersCreateInfoKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeInfoKHR VkVideoDecodeInfoKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeUsageInfoKHR VkVideoDecodeUsageInfoKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeAV1CapabilitiesKHR VkVideoEncodeAV1CapabilitiesKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeAV1DpbSlotInfoKHR VkVideoEncodeAV1DpbSlotInfoKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeAV1GopRemainingFrameInfoKHR VkVideoEncodeAV1GopRemainingFrameInfoKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeAV1PictureInfoKHR VkVideoEncodeAV1PictureInfoKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeAV1ProfileInfoKHR VkVideoEncodeAV1ProfileInfoKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeAV1QualityLevelPropertiesKHR VkVideoEncodeAV1QualityLevelPropertiesKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeAV1QuantizationMapCapabilitiesKHR VkVideoEncodeAV1QuantizationMapCapabilitiesKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeAV1RateControlInfoKHR VkVideoEncodeAV1RateControlInfoKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeAV1RateControlLayerInfoKHR VkVideoEncodeAV1RateControlLayerInfoKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeAV1SessionCreateInfoKHR VkVideoEncodeAV1SessionCreateInfoKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeAV1SessionParametersCreateInfoKHR VkVideoEncodeAV1SessionParametersCreateInfoKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeCapabilitiesKHR VkVideoEncodeCapabilitiesKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264CapabilitiesKHR VkVideoEncodeH264CapabilitiesKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264DpbSlotInfoKHR VkVideoEncodeH264DpbSlotInfoKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264GopRemainingFrameInfoKHR VkVideoEncodeH264GopRemainingFrameInfoKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264NaluSliceInfoKHR VkVideoEncodeH264NaluSliceInfoKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264PictureInfoKHR VkVideoEncodeH264PictureInfoKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264ProfileInfoKHR VkVideoEncodeH264ProfileInfoKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264QualityLevelPropertiesKHR VkVideoEncodeH264QualityLevelPropertiesKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264QuantizationMapCapabilitiesKHR VkVideoEncodeH264QuantizationMapCapabilitiesKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264RateControlInfoKHR VkVideoEncodeH264RateControlInfoKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264RateControlLayerInfoKHR VkVideoEncodeH264RateControlLayerInfoKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264SessionCreateInfoKHR VkVideoEncodeH264SessionCreateInfoKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264SessionParametersAddInfoKHR VkVideoEncodeH264SessionParametersAddInfoKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264SessionParametersCreateInfoKHR VkVideoEncodeH264SessionParametersCreateInfoKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264SessionParametersFeedbackInfoKHR VkVideoEncodeH264SessionParametersFeedbackInfoKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264SessionParametersGetInfoKHR VkVideoEncodeH264SessionParametersGetInfoKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH265CapabilitiesKHR VkVideoEncodeH265CapabilitiesKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH265DpbSlotInfoKHR VkVideoEncodeH265DpbSlotInfoKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH265GopRemainingFrameInfoKHR VkVideoEncodeH265GopRemainingFrameInfoKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH265NaluSliceSegmentInfoKHR VkVideoEncodeH265NaluSliceSegmentInfoKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH265PictureInfoKHR VkVideoEncodeH265PictureInfoKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH265ProfileInfoKHR VkVideoEncodeH265ProfileInfoKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH265QualityLevelPropertiesKHR VkVideoEncodeH265QualityLevelPropertiesKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH265QuantizationMapCapabilitiesKHR VkVideoEncodeH265QuantizationMapCapabilitiesKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH265RateControlInfoKHR VkVideoEncodeH265RateControlInfoKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH265RateControlLayerInfoKHR VkVideoEncodeH265RateControlLayerInfoKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH265SessionCreateInfoKHR VkVideoEncodeH265SessionCreateInfoKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH265SessionParametersAddInfoKHR VkVideoEncodeH265SessionParametersAddInfoKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH265SessionParametersCreateInfoKHR VkVideoEncodeH265SessionParametersCreateInfoKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH265SessionParametersFeedbackInfoKHR VkVideoEncodeH265SessionParametersFeedbackInfoKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH265SessionParametersGetInfoKHR VkVideoEncodeH265SessionParametersGetInfoKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeInfoKHR VkVideoEncodeInfoKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeQualityLevelInfoKHR VkVideoEncodeQualityLevelInfoKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeQualityLevelPropertiesKHR VkVideoEncodeQualityLevelPropertiesKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeQuantizationMapCapabilitiesKHR VkVideoEncodeQuantizationMapCapabilitiesKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeQuantizationMapInfoKHR VkVideoEncodeQuantizationMapInfoKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeQuantizationMapSessionParametersCreateInfoKHR VkVideoEncodeQuantizationMapSessionParametersCreateInfoKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeRateControlInfoKHR VkVideoEncodeRateControlInfoKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeRateControlLayerInfoKHR VkVideoEncodeRateControlLayerInfoKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeSessionParametersFeedbackInfoKHR VkVideoEncodeSessionParametersFeedbackInfoKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeSessionParametersGetInfoKHR VkVideoEncodeSessionParametersGetInfoKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeUsageInfoKHR VkVideoEncodeUsageInfoKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEndCodingInfoKHR VkVideoEndCodingInfoKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoFormatAV1QuantizationMapPropertiesKHR VkVideoFormatAV1QuantizationMapPropertiesKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoFormatH265QuantizationMapPropertiesKHR VkVideoFormatH265QuantizationMapPropertiesKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoFormatPropertiesKHR VkVideoFormatPropertiesKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoFormatQuantizationMapPropertiesKHR VkVideoFormatQuantizationMapPropertiesKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoInlineQueryInfoKHR VkVideoInlineQueryInfoKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoPictureResourceInfoKHR VkVideoPictureResourceInfoKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoProfileInfoKHR VkVideoProfileInfoKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoProfileListInfoKHR VkVideoProfileListInfoKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoReferenceSlotInfoKHR VkVideoReferenceSlotInfoKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoSessionCreateInfoKHR VkVideoSessionCreateInfoKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoSessionMemoryRequirementsKHR VkVideoSessionMemoryRequirementsKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoSessionParametersCreateInfoKHR VkVideoSessionParametersCreateInfoKHR>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoSessionParametersUpdateInfoKHR VkVideoSessionParametersUpdateInfoKHR>,
--- 'Vulkan.Extensions.VK_KHR_wayland_surface.WaylandSurfaceCreateInfoKHR',
--- 'Vulkan.Extensions.VK_KHR_win32_keyed_mutex.Win32KeyedMutexAcquireReleaseInfoKHR',
--- 'Vulkan.Extensions.VK_NV_win32_keyed_mutex.Win32KeyedMutexAcquireReleaseInfoNV',
--- 'Vulkan.Extensions.VK_KHR_win32_surface.Win32SurfaceCreateInfoKHR',
--- 'Vulkan.Core10.DescriptorSet.WriteDescriptorSet',
--- 'Vulkan.Extensions.VK_KHR_acceleration_structure.WriteDescriptorSetAccelerationStructureKHR',
--- 'Vulkan.Extensions.VK_NV_ray_tracing.WriteDescriptorSetAccelerationStructureNV',
--- 'Vulkan.Core13.Promoted_From_VK_EXT_inline_uniform_block.WriteDescriptorSetInlineUniformBlock',
--- 'Vulkan.Extensions.VK_EXT_device_generated_commands.WriteIndirectExecutionSetPipelineEXT',
--- 'Vulkan.Extensions.VK_EXT_device_generated_commands.WriteIndirectExecutionSetShaderEXT',
--- 'Vulkan.Extensions.VK_KHR_xcb_surface.XcbSurfaceCreateInfoKHR',
--- 'Vulkan.Extensions.VK_KHR_xlib_surface.XlibSurfaceCreateInfoKHR'
-newtype StructureType = StructureType Int32
-  deriving newtype (Eq, Ord, Storable, Zero)
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_APPLICATION_INFO"
-pattern STRUCTURE_TYPE_APPLICATION_INFO = StructureType 0
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO"
-pattern STRUCTURE_TYPE_INSTANCE_CREATE_INFO = StructureType 1
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO"
-pattern STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = StructureType 2
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO"
-pattern STRUCTURE_TYPE_DEVICE_CREATE_INFO = StructureType 3
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SUBMIT_INFO"
-pattern STRUCTURE_TYPE_SUBMIT_INFO = StructureType 4
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO"
-pattern STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = StructureType 5
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE"
-pattern STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = StructureType 6
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BIND_SPARSE_INFO"
-pattern STRUCTURE_TYPE_BIND_SPARSE_INFO = StructureType 7
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_FENCE_CREATE_INFO"
-pattern STRUCTURE_TYPE_FENCE_CREATE_INFO = StructureType 8
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO"
-pattern STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = StructureType 9
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EVENT_CREATE_INFO"
-pattern STRUCTURE_TYPE_EVENT_CREATE_INFO = StructureType 10
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO"
-pattern STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = StructureType 11
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO"
-pattern STRUCTURE_TYPE_BUFFER_CREATE_INFO = StructureType 12
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO"
-pattern STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = StructureType 13
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO"
-pattern STRUCTURE_TYPE_IMAGE_CREATE_INFO = StructureType 14
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO"
-pattern STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = StructureType 15
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO"
-pattern STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = StructureType 16
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO"
-pattern STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = StructureType 17
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO"
-pattern STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = StructureType 18
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO"
-pattern STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = StructureType 19
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO"
-pattern STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = StructureType 20
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO"
-pattern STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = StructureType 21
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO"
-pattern STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = StructureType 22
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO"
-pattern STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = StructureType 23
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO"
-pattern STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = StructureType 24
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO"
-pattern STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = StructureType 25
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO"
-pattern STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = StructureType 26
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO"
-pattern STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = StructureType 27
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO"
-pattern STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = StructureType 28
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO"
-pattern STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = StructureType 29
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO"
-pattern STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = StructureType 30
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO"
-pattern STRUCTURE_TYPE_SAMPLER_CREATE_INFO = StructureType 31
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO"
-pattern STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = StructureType 32
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO"
-pattern STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = StructureType 33
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO"
-pattern STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = StructureType 34
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET"
-pattern STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = StructureType 35
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET"
-pattern STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = StructureType 36
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO"
-pattern STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = StructureType 37
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO"
-pattern STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = StructureType 38
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO"
-pattern STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = StructureType 39
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO"
-pattern STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = StructureType 40
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO"
-pattern STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = StructureType 41
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO"
-pattern STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = StructureType 42
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO"
-pattern STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = StructureType 43
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER"
-pattern STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = StructureType 44
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER"
-pattern STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = StructureType 45
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_BARRIER"
-pattern STRUCTURE_TYPE_MEMORY_BARRIER = StructureType 46
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO"
-pattern STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = StructureType 47
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO"
-pattern STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = StructureType 48
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_ROBUSTNESS_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_ROBUSTNESS_FEATURES_EXT = StructureType 1000608000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_PROPERTIES_NV"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_PROPERTIES_NV = StructureType 1000593002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_FLEXIBLE_DIMENSIONS_PROPERTIES_NV"
-pattern STRUCTURE_TYPE_COOPERATIVE_MATRIX_FLEXIBLE_DIMENSIONS_PROPERTIES_NV = StructureType 1000593001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_FEATURES_NV"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_FEATURES_NV = StructureType 1000593000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_HDR_VIVID_DYNAMIC_METADATA_HUAWEI"
-pattern STRUCTURE_TYPE_HDR_VIVID_DYNAMIC_METADATA_HUAWEI = StructureType 1000590001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HDR_VIVID_FEATURES_HUAWEI"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_HDR_VIVID_FEATURES_HUAWEI = StructureType 1000590000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLAMP_CONTROL_CREATE_INFO_EXT"
-pattern STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLAMP_CONTROL_CREATE_INFO_EXT = StructureType 1000582001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_CONTROL_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_CONTROL_FEATURES_EXT = StructureType 1000582000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_ALIGNMENT_CONTROL_CREATE_INFO_MESA"
-pattern STRUCTURE_TYPE_IMAGE_ALIGNMENT_CONTROL_CREATE_INFO_MESA = StructureType 1000575002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_PROPERTIES_MESA"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_PROPERTIES_MESA = StructureType 1000575001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_FEATURES_MESA"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_FEATURES_MESA = StructureType 1000575000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_GENERATED_COMMANDS_SHADER_INFO_EXT"
-pattern STRUCTURE_TYPE_GENERATED_COMMANDS_SHADER_INFO_EXT = StructureType 1000572014
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_GENERATED_COMMANDS_PIPELINE_INFO_EXT"
-pattern STRUCTURE_TYPE_GENERATED_COMMANDS_PIPELINE_INFO_EXT = StructureType 1000572013
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXT"
-pattern STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXT = StructureType 1000572012
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_INFO_EXT"
-pattern STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_INFO_EXT = StructureType 1000572011
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXT"
-pattern STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXT = StructureType 1000572010
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_SHADER_EXT"
-pattern STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_SHADER_EXT = StructureType 1000572009
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXT"
-pattern STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXT = StructureType 1000572008
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_EXT"
-pattern STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_EXT = StructureType 1000572007
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXT"
-pattern STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXT = StructureType 1000572006
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_EXT"
-pattern STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_EXT = StructureType 1000572004
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_CREATE_INFO_EXT"
-pattern STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_CREATE_INFO_EXT = StructureType 1000572003
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXT"
-pattern STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXT = StructureType 1000572002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXT = StructureType 1000572001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXT = StructureType 1000572000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_VALIDATION_FEATURES_NV"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_VALIDATION_FEATURES_NV = StructureType 1000568000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_REPLICATED_COMPOSITES_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_REPLICATED_COMPOSITES_FEATURES_EXT = StructureType 1000564000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT16_VECTOR_FEATURES_NV"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT16_VECTOR_FEATURES_NV = StructureType 1000563000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_VULKAN_PROPERTIES_KHR"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_VULKAN_PROPERTIES_KHR = StructureType 1000562004
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_KHR"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_KHR = StructureType 1000562003
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_LIST_KHR"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_LIST_KHR = StructureType 1000562002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_PROPERTIES_KHR"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_PROPERTIES_KHR = StructureType 1000562001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_FEATURES_KHR"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_FEATURES_KHR = StructureType 1000562000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMMAND_BUFFER_INHERITANCE_FEATURES_NV"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_COMMAND_BUFFER_INHERITANCE_FEATURES_NV = StructureType 1000559000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_RELAXED_EXTENDED_INSTRUCTION_FEATURES_KHR"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_RELAXED_EXTENDED_INSTRUCTION_FEATURES_KHR = StructureType 1000558000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAW_ACCESS_CHAINS_FEATURES_NV"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_RAW_ACCESS_CHAINS_FEATURES_NV = StructureType 1000555000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DISPLAY_MODE_STEREO_PROPERTIES_NV"
-pattern STRUCTURE_TYPE_DISPLAY_MODE_STEREO_PROPERTIES_NV = StructureType 1000551001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DISPLAY_SURFACE_STEREO_CREATE_INFO_NV"
-pattern STRUCTURE_TYPE_DISPLAY_SURFACE_STEREO_CREATE_INFO_NV = StructureType 1000551000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_POOL_OVERALLOCATION_FEATURES_NV"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_POOL_OVERALLOCATION_FEATURES_NV = StructureType 1000546000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BIND_DESCRIPTOR_BUFFER_EMBEDDED_SAMPLERS_INFO_EXT"
-pattern STRUCTURE_TYPE_BIND_DESCRIPTOR_BUFFER_EMBEDDED_SAMPLERS_INFO_EXT = StructureType 1000545008
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SET_DESCRIPTOR_BUFFER_OFFSETS_INFO_EXT"
-pattern STRUCTURE_TYPE_SET_DESCRIPTOR_BUFFER_OFFSETS_INFO_EXT = StructureType 1000545007
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO_KHR"
-pattern STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO_KHR = StructureType 1000545006
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_INFO_KHR"
-pattern STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_INFO_KHR = StructureType 1000545005
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PUSH_CONSTANTS_INFO_KHR"
-pattern STRUCTURE_TYPE_PUSH_CONSTANTS_INFO_KHR = StructureType 1000545004
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BIND_DESCRIPTOR_SETS_INFO_KHR"
-pattern STRUCTURE_TYPE_BIND_DESCRIPTOR_SETS_INFO_KHR = StructureType 1000545003
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BIND_MEMORY_STATUS_KHR"
-pattern STRUCTURE_TYPE_BIND_MEMORY_STATUS_KHR = StructureType 1000545002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES_KHR"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES_KHR = StructureType 1000545001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES_KHR"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES_KHR = StructureType 1000545000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES_KHR"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES_KHR = StructureType 1000544000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_KHR"
-pattern STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_KHR = StructureType 1000184000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_KHR"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_KHR = StructureType 1000259002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_KHR"
-pattern STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_KHR = StructureType 1000259001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_KHR"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_KHR = StructureType 1000259000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_KHR"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_KHR = StructureType 1000265000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_DRIVER_PROPERTIES_MSFT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_DRIVER_PROPERTIES_MSFT = StructureType 1000530000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCREEN_BUFFER_FEATURES_QNX"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCREEN_BUFFER_FEATURES_QNX = StructureType 1000529004
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_QNX"
-pattern STRUCTURE_TYPE_EXTERNAL_FORMAT_QNX = StructureType 1000529003
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMPORT_SCREEN_BUFFER_INFO_QNX"
-pattern STRUCTURE_TYPE_IMPORT_SCREEN_BUFFER_INFO_QNX = StructureType 1000529002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SCREEN_BUFFER_FORMAT_PROPERTIES_QNX"
-pattern STRUCTURE_TYPE_SCREEN_BUFFER_FORMAT_PROPERTIES_QNX = StructureType 1000529001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SCREEN_BUFFER_PROPERTIES_QNX"
-pattern STRUCTURE_TYPE_SCREEN_BUFFER_PROPERTIES_QNX = StructureType 1000529000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES_KHR"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES_KHR = StructureType 1000528000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_KHR"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_KHR = StructureType 1000190002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_KHR"
-pattern STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_KHR = StructureType 1000190001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_KHR"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_KHR = StructureType 1000525000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_FEATURES_EXT = StructureType 1000524000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_CLAMP_FEATURES_QCOM"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_CLAMP_FEATURES_QCOM = StructureType 1000521000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_YCBCR_DEGAMMA_CREATE_INFO_QCOM"
-pattern STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_YCBCR_DEGAMMA_CREATE_INFO_QCOM = StructureType 1000520001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_DEGAMMA_FEATURES_QCOM"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_DEGAMMA_FEATURES_QCOM = StructureType 1000520000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BLIT_IMAGE_CUBIC_WEIGHTS_INFO_QCOM"
-pattern STRUCTURE_TYPE_BLIT_IMAGE_CUBIC_WEIGHTS_INFO_QCOM = StructureType 1000519002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_WEIGHTS_FEATURES_QCOM"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_WEIGHTS_FEATURES_QCOM = StructureType 1000519001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SAMPLER_CUBIC_WEIGHTS_CREATE_INFO_QCOM"
-pattern STRUCTURE_TYPE_SAMPLER_CUBIC_WEIGHTS_CREATE_INFO_QCOM = StructureType 1000519000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SAMPLER_BLOCK_MATCH_WINDOW_CREATE_INFO_QCOM"
-pattern STRUCTURE_TYPE_SAMPLER_BLOCK_MATCH_WINDOW_CREATE_INFO_QCOM = StructureType 1000518002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_PROPERTIES_QCOM"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_PROPERTIES_QCOM = StructureType 1000518001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_FEATURES_QCOM"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_FEATURES_QCOM = StructureType 1000518000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PER_STAGE_DESCRIPTOR_SET_FEATURES_NV"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PER_STAGE_DESCRIPTOR_SET_FEATURES_NV = StructureType 1000516000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_PROPERTIES_KHR"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_PROPERTIES_KHR = StructureType 1000511000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_KHR"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_KHR = StructureType 1000201000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_RENDER_AREAS_RENDER_PASS_BEGIN_INFO_QCOM"
-pattern STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_RENDER_AREAS_RENDER_PASS_BEGIN_INFO_QCOM = StructureType 1000510001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_RENDER_AREAS_FEATURES_QCOM"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_RENDER_AREAS_FEATURES_QCOM = StructureType 1000510000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_KHR"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_KHR = StructureType 1000506002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_KHR"
-pattern STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_KHR = StructureType 1000506001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_KHR"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_KHR = StructureType 1000506000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_LATENCY_SURFACE_CAPABILITIES_NV"
-pattern STRUCTURE_TYPE_LATENCY_SURFACE_CAPABILITIES_NV = StructureType 1000505008
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SWAPCHAIN_LATENCY_CREATE_INFO_NV"
-pattern STRUCTURE_TYPE_SWAPCHAIN_LATENCY_CREATE_INFO_NV = StructureType 1000505007
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_OUT_OF_BAND_QUEUE_TYPE_INFO_NV"
-pattern STRUCTURE_TYPE_OUT_OF_BAND_QUEUE_TYPE_INFO_NV = StructureType 1000505006
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_LATENCY_SUBMISSION_PRESENT_ID_NV"
-pattern STRUCTURE_TYPE_LATENCY_SUBMISSION_PRESENT_ID_NV = StructureType 1000505005
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_LATENCY_TIMINGS_FRAME_REPORT_NV"
-pattern STRUCTURE_TYPE_LATENCY_TIMINGS_FRAME_REPORT_NV = StructureType 1000505004
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_GET_LATENCY_MARKER_INFO_NV"
-pattern STRUCTURE_TYPE_GET_LATENCY_MARKER_INFO_NV = StructureType 1000505003
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SET_LATENCY_MARKER_INFO_NV"
-pattern STRUCTURE_TYPE_SET_LATENCY_MARKER_INFO_NV = StructureType 1000505002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_LATENCY_SLEEP_INFO_NV"
-pattern STRUCTURE_TYPE_LATENCY_SLEEP_INFO_NV = StructureType 1000505001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_LATENCY_SLEEP_MODE_INFO_NV"
-pattern STRUCTURE_TYPE_LATENCY_SLEEP_MODE_INFO_NV = StructureType 1000505000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_FEATURES_EXT = StructureType 1000499000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT = StructureType 1000498000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_PROPERTIES_ARM"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_PROPERTIES_ARM = StructureType 1000497001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM = StructureType 1000497000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_LAYER_SETTINGS_CREATE_INFO_EXT"
-pattern STRUCTURE_TYPE_LAYER_SETTINGS_CREATE_INFO_EXT = StructureType 1000496000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_PROPERTIES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_PROPERTIES_EXT = StructureType 1000495001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_FEATURES_EXT = StructureType 1000495000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT"
-pattern STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT = StructureType 1000351002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT = StructureType 1000351000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_PROPERTIES_NV"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_PROPERTIES_NV = StructureType 1000492001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_FEATURES_NV"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_FEATURES_NV = StructureType 1000492000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV = StructureType 1000490001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV = StructureType 1000490000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_VIEWPORTS_FEATURES_QCOM"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_VIEWPORTS_FEATURES_QCOM = StructureType 1000488000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_AMIGO_PROFILING_SUBMIT_INFO_SEC"
-pattern STRUCTURE_TYPE_AMIGO_PROFILING_SUBMIT_INFO_SEC = StructureType 1000485001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_AMIGO_PROFILING_FEATURES_SEC"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_AMIGO_PROFILING_FEATURES_SEC = StructureType 1000485000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_TILE_PROPERTIES_QCOM"
-pattern STRUCTURE_TYPE_TILE_PROPERTIES_QCOM = StructureType 1000484001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM = StructureType 1000484000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_BINARY_HANDLES_INFO_KHR"
-pattern STRUCTURE_TYPE_PIPELINE_BINARY_HANDLES_INFO_KHR = StructureType 1000483009
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_PIPELINE_BINARY_INTERNAL_CACHE_CONTROL_KHR"
-pattern STRUCTURE_TYPE_DEVICE_PIPELINE_BINARY_INTERNAL_CACHE_CONTROL_KHR = StructureType 1000483008
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_CREATE_INFO_KHR"
-pattern STRUCTURE_TYPE_PIPELINE_CREATE_INFO_KHR = StructureType 1000483007
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_BINARY_DATA_INFO_KHR"
-pattern STRUCTURE_TYPE_PIPELINE_BINARY_DATA_INFO_KHR = StructureType 1000483006
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RELEASE_CAPTURED_PIPELINE_DATA_INFO_KHR"
-pattern STRUCTURE_TYPE_RELEASE_CAPTURED_PIPELINE_DATA_INFO_KHR = StructureType 1000483005
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_BINARY_PROPERTIES_KHR"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_BINARY_PROPERTIES_KHR = StructureType 1000483004
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_BINARY_KEY_KHR"
-pattern STRUCTURE_TYPE_PIPELINE_BINARY_KEY_KHR = StructureType 1000483003
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_BINARY_INFO_KHR"
-pattern STRUCTURE_TYPE_PIPELINE_BINARY_INFO_KHR = StructureType 1000483002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_BINARY_CREATE_INFO_KHR"
-pattern STRUCTURE_TYPE_PIPELINE_BINARY_CREATE_INFO_KHR = StructureType 1000483001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_BINARY_FEATURES_KHR"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_BINARY_FEATURES_KHR = StructureType 1000483000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT"
-pattern STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT = StructureType 1000352002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT"
-pattern STRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT = StructureType 1000352001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SHADER_CREATE_INFO_EXT"
-pattern STRUCTURE_TYPE_SHADER_CREATE_INFO_EXT = StructureType 1000482002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_PROPERTIES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_PROPERTIES_EXT = StructureType 1000482001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT = StructureType 1000482000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_POSITION_FETCH_FEATURES_KHR"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_POSITION_FETCH_FEATURES_KHR = StructureType 1000481000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ANTI_LAG_PRESENTATION_INFO_AMD"
-pattern STRUCTURE_TYPE_ANTI_LAG_PRESENTATION_INFO_AMD = StructureType 1000476002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ANTI_LAG_DATA_AMD"
-pattern STRUCTURE_TYPE_ANTI_LAG_DATA_AMD = StructureType 1000476001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ANTI_LAG_FEATURES_AMD"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_ANTI_LAG_FEATURES_AMD = StructureType 1000476000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO_KHR"
-pattern STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO_KHR = StructureType 1000470006
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO_KHR"
-pattern STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO_KHR = StructureType 1000470005
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_KHR"
-pattern STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_KHR = StructureType 1000338003
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_KHR"
-pattern STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_KHR = StructureType 1000338002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO_KHR"
-pattern STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO_KHR = StructureType 1000470004
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDERING_AREA_INFO_KHR"
-pattern STRUCTURE_TYPE_RENDERING_AREA_INFO_KHR = StructureType 1000470003
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES_KHR"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES_KHR = StructureType 1000470001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES_KHR"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES_KHR = StructureType 1000470000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_RESOLVE_PROPERTIES_ANDROID"
-pattern STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_RESOLVE_PROPERTIES_ANDROID = StructureType 1000468002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_PROPERTIES_ANDROID"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_PROPERTIES_ANDROID = StructureType 1000468001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_FEATURES_ANDROID"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_FEATURES_ANDROID = StructureType 1000468000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT = StructureType 1000466000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT = StructureType 1000465000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_PRIVATE_DATA_INFO_NV"
-pattern STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_PRIVATE_DATA_INFO_NV = StructureType 1000464010
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_OPTICAL_FLOW_EXECUTE_INFO_NV"
-pattern STRUCTURE_TYPE_OPTICAL_FLOW_EXECUTE_INFO_NV = StructureType 1000464005
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_INFO_NV"
-pattern STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_INFO_NV = StructureType 1000464004
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_OPTICAL_FLOW_IMAGE_FORMAT_PROPERTIES_NV"
-pattern STRUCTURE_TYPE_OPTICAL_FLOW_IMAGE_FORMAT_PROPERTIES_NV = StructureType 1000464003
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_OPTICAL_FLOW_IMAGE_FORMAT_INFO_NV"
-pattern STRUCTURE_TYPE_OPTICAL_FLOW_IMAGE_FORMAT_INFO_NV = StructureType 1000464002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_PROPERTIES_NV"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_PROPERTIES_NV = StructureType 1000464001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_FEATURES_NV"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_FEATURES_NV = StructureType 1000464000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_EXT = StructureType 1000342000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SHADER_MODULE_IDENTIFIER_EXT"
-pattern STRUCTURE_TYPE_SHADER_MODULE_IDENTIFIER_EXT = StructureType 1000462003
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_MODULE_IDENTIFIER_CREATE_INFO_EXT"
-pattern STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_MODULE_IDENTIFIER_CREATE_INFO_EXT = StructureType 1000462002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_PROPERTIES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_PROPERTIES_EXT = StructureType 1000462001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT = StructureType 1000462000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_LIST_LUNARG"
-pattern STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_LIST_LUNARG = StructureType 1000459001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_INFO_LUNARG"
-pattern STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_INFO_LUNARG = StructureType 1000459000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDER_PASS_SUBPASS_FEEDBACK_CREATE_INFO_EXT"
-pattern STRUCTURE_TYPE_RENDER_PASS_SUBPASS_FEEDBACK_CREATE_INFO_EXT = StructureType 1000458003
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDER_PASS_CREATION_FEEDBACK_CREATE_INFO_EXT"
-pattern STRUCTURE_TYPE_RENDER_PASS_CREATION_FEEDBACK_CREATE_INFO_EXT = StructureType 1000458002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDER_PASS_CREATION_CONTROL_EXT"
-pattern STRUCTURE_TYPE_RENDER_PASS_CREATION_CONTROL_EXT = StructureType 1000458001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT = StructureType 1000458000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT = StructureType 1000455001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT = StructureType 1000455000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT"
-pattern STRUCTURE_TYPE_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT = StructureType 1000453000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_PROPERTIES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_PROPERTIES_EXT = StructureType 1000451001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_FEATURES_EXT = StructureType 1000451000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_VIEW_SAMPLE_WEIGHT_CREATE_INFO_QCOM"
-pattern STRUCTURE_TYPE_IMAGE_VIEW_SAMPLE_WEIGHT_CREATE_INFO_QCOM = StructureType 1000440002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_PROPERTIES_QCOM"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_PROPERTIES_QCOM = StructureType 1000440001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM = StructureType 1000440000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT = StructureType 1000437000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MAXIMAL_RECONVERGENCE_FEATURES_KHR"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MAXIMAL_RECONVERGENCE_FEATURES_KHR = StructureType 1000434000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV = StructureType 1000430000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_INDIRECT_DEVICE_ADDRESS_INFO_NV"
-pattern STRUCTURE_TYPE_PIPELINE_INDIRECT_DEVICE_ADDRESS_INFO_NV = StructureType 1000428002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_INDIRECT_BUFFER_INFO_NV"
-pattern STRUCTURE_TYPE_COMPUTE_PIPELINE_INDIRECT_BUFFER_INFO_NV = StructureType 1000428001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_COMPUTE_FEATURES_NV"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_COMPUTE_FEATURES_NV = StructureType 1000428000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NV"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NV = StructureType 1000427001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV = StructureType 1000427000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_NV"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_NV = StructureType 1000426001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV = StructureType 1000426000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM"
-pattern STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM = StructureType 1000425002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM"
-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_RENDER_PASS_STRIPE_SUBMIT_INFO_ARM"
-pattern STRUCTURE_TYPE_RENDER_PASS_STRIPE_SUBMIT_INFO_ARM = StructureType 1000424004
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_INFO_ARM"
-pattern STRUCTURE_TYPE_RENDER_PASS_STRIPE_INFO_ARM = StructureType 1000424003
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_BEGIN_INFO_ARM"
-pattern STRUCTURE_TYPE_RENDER_PASS_STRIPE_BEGIN_INFO_ARM = StructureType 1000424002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_PROPERTIES_ARM"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_PROPERTIES_ARM = StructureType 1000424001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_FEATURES_ARM"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_FEATURES_ARM = StructureType 1000424000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT = StructureType 1000422000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT = StructureType 1000421000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE"
-pattern STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE = StructureType 1000420002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_BINDING_REFERENCE_VALVE"
-pattern STRUCTURE_TYPE_DESCRIPTOR_SET_BINDING_REFERENCE_VALVE = StructureType 1000420001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE = StructureType 1000420000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_VIEW_SLICED_CREATE_INFO_EXT"
-pattern STRUCTURE_TYPE_IMAGE_VIEW_SLICED_CREATE_INFO_EXT = StructureType 1000418001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_SLICED_VIEW_OF_3D_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_SLICED_VIEW_OF_3D_FEATURES_EXT = StructureType 1000418000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_PROPERTIES_ARM"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_PROPERTIES_ARM = StructureType 1000417002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_FEATURES_ARM"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_FEATURES_ARM = StructureType 1000417001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_QUEUE_SHADER_CORE_CONTROL_CREATE_INFO_ARM"
-pattern STRUCTURE_TYPE_DEVICE_QUEUE_SHADER_CORE_CONTROL_CREATE_INFO_ARM = StructureType 1000417000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES_KHR"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES_KHR = StructureType 1000416000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_ARM"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_ARM = StructureType 1000415000
-
--- 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"
-pattern STRUCTURE_TYPE_SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT = StructureType 1000411001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT = StructureType 1000411000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_VRS_FEATURES_HUAWEI"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_VRS_FEATURES_HUAWEI = StructureType 1000404002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI = StructureType 1000404001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI = StructureType 1000404000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_DISPLACEMENT_MICROMAP_NV"
-pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_DISPLACEMENT_MICROMAP_NV = StructureType 1000397002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_PROPERTIES_NV"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_PROPERTIES_NV = StructureType 1000397001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_FEATURES_NV"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_FEATURES_NV = StructureType 1000397000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT"
-pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT = StructureType 1000396009
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MICROMAP_BUILD_SIZES_INFO_EXT"
-pattern STRUCTURE_TYPE_MICROMAP_BUILD_SIZES_INFO_EXT = StructureType 1000396008
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MICROMAP_CREATE_INFO_EXT"
-pattern STRUCTURE_TYPE_MICROMAP_CREATE_INFO_EXT = StructureType 1000396007
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_PROPERTIES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_PROPERTIES_EXT = StructureType 1000396006
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_EXT = StructureType 1000396005
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COPY_MEMORY_TO_MICROMAP_INFO_EXT"
-pattern STRUCTURE_TYPE_COPY_MEMORY_TO_MICROMAP_INFO_EXT = StructureType 1000396004
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COPY_MICROMAP_TO_MEMORY_INFO_EXT"
-pattern STRUCTURE_TYPE_COPY_MICROMAP_TO_MEMORY_INFO_EXT = StructureType 1000396003
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COPY_MICROMAP_INFO_EXT"
-pattern STRUCTURE_TYPE_COPY_MICROMAP_INFO_EXT = StructureType 1000396002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MICROMAP_VERSION_INFO_EXT"
-pattern STRUCTURE_TYPE_MICROMAP_VERSION_INFO_EXT = StructureType 1000396001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MICROMAP_BUILD_INFO_EXT"
-pattern STRUCTURE_TYPE_MICROMAP_BUILD_INFO_EXT = StructureType 1000396000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_PROPERTIES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_PROPERTIES_EXT = StructureType 1000395001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_FEATURES_EXT = StructureType 1000395000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT = StructureType 1000393000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT = StructureType 1000392001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT = StructureType 1000392000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_VIEW_MIN_LOD_CREATE_INFO_EXT"
-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_PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR = StructureType 1000386000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT = StructureType 1000382000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT"
-pattern STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT = StructureType 1000381001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT = StructureType 1000381000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SCREEN_SURFACE_CREATE_INFO_QNX"
-pattern STRUCTURE_TYPE_SCREEN_SURFACE_CREATE_INFO_QNX = StructureType 1000378000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT = StructureType 1000377000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_INFO_EXT"
-pattern STRUCTURE_TYPE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_INFO_EXT = StructureType 1000376002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SUBPASS_RESOLVE_PERFORMANCE_QUERY_EXT"
-pattern STRUCTURE_TYPE_SUBPASS_RESOLVE_PERFORMANCE_QUERY_EXT = StructureType 1000376001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_FEATURES_EXT = StructureType 1000376000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_FRAME_BOUNDARY_EXT"
-pattern STRUCTURE_TYPE_FRAME_BOUNDARY_EXT = StructureType 1000375001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAME_BOUNDARY_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAME_BOUNDARY_FEATURES_EXT = StructureType 1000375000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT = StructureType 1000372001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_PROPERTIES_IDENTIFIER_EXT"
-pattern STRUCTURE_TYPE_PIPELINE_PROPERTIES_IDENTIFIER_EXT = StructureType 1000372000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV = StructureType 1000371001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_GET_REMOTE_ADDRESS_INFO_NV"
-pattern STRUCTURE_TYPE_MEMORY_GET_REMOTE_ADDRESS_INFO_NV = StructureType 1000371000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI = StructureType 1000370000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_PROPERTIES_HUAWEI"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_PROPERTIES_HUAWEI = StructureType 1000369002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI = StructureType 1000369001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SUBPASS_SHADING_PIPELINE_CREATE_INFO_HUAWEI"
-pattern STRUCTURE_TYPE_SUBPASS_SHADING_PIPELINE_CREATE_INFO_HUAWEI = StructureType 1000369000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BUFFER_COLLECTION_CONSTRAINTS_INFO_FUCHSIA"
-pattern STRUCTURE_TYPE_BUFFER_COLLECTION_CONSTRAINTS_INFO_FUCHSIA = StructureType 1000366009
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SYSMEM_COLOR_SPACE_FUCHSIA"
-pattern STRUCTURE_TYPE_SYSMEM_COLOR_SPACE_FUCHSIA = StructureType 1000366008
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_FORMAT_CONSTRAINTS_INFO_FUCHSIA"
-pattern STRUCTURE_TYPE_IMAGE_FORMAT_CONSTRAINTS_INFO_FUCHSIA = StructureType 1000366007
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_CONSTRAINTS_INFO_FUCHSIA"
-pattern STRUCTURE_TYPE_IMAGE_CONSTRAINTS_INFO_FUCHSIA = StructureType 1000366006
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BUFFER_COLLECTION_BUFFER_CREATE_INFO_FUCHSIA"
-pattern STRUCTURE_TYPE_BUFFER_COLLECTION_BUFFER_CREATE_INFO_FUCHSIA = StructureType 1000366005
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BUFFER_CONSTRAINTS_INFO_FUCHSIA"
-pattern STRUCTURE_TYPE_BUFFER_CONSTRAINTS_INFO_FUCHSIA = StructureType 1000366004
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BUFFER_COLLECTION_PROPERTIES_FUCHSIA"
-pattern STRUCTURE_TYPE_BUFFER_COLLECTION_PROPERTIES_FUCHSIA = StructureType 1000366003
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BUFFER_COLLECTION_IMAGE_CREATE_INFO_FUCHSIA"
-pattern STRUCTURE_TYPE_BUFFER_COLLECTION_IMAGE_CREATE_INFO_FUCHSIA = StructureType 1000366002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMPORT_MEMORY_BUFFER_COLLECTION_FUCHSIA"
-pattern STRUCTURE_TYPE_IMPORT_MEMORY_BUFFER_COLLECTION_FUCHSIA = StructureType 1000366001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BUFFER_COLLECTION_CREATE_INFO_FUCHSIA"
-pattern STRUCTURE_TYPE_BUFFER_COLLECTION_CREATE_INFO_FUCHSIA = StructureType 1000366000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA"
-pattern STRUCTURE_TYPE_SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA = StructureType 1000365001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA"
-pattern STRUCTURE_TYPE_IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA = StructureType 1000365000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA"
-pattern STRUCTURE_TYPE_MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA = StructureType 1000364002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA"
-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_PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_EXT = StructureType 1000361000
-
--- 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"
-pattern STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLIP_CONTROL_CREATE_INFO_EXT = StructureType 1000355001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT = StructureType 1000355000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_ADDRESS_BINDING_CALLBACK_DATA_EXT"
-pattern STRUCTURE_TYPE_DEVICE_ADDRESS_BINDING_CALLBACK_DATA_EXT = StructureType 1000354001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ADDRESS_BINDING_REPORT_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_ADDRESS_BINDING_REPORT_FEATURES_EXT = StructureType 1000354000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRM_PROPERTIES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DRM_PROPERTIES_EXT = StructureType 1000353000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT = StructureType 1000352000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT"
-pattern STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT = StructureType 1000346000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT = StructureType 1000344000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_FAULT_INFO_EXT"
-pattern STRUCTURE_TYPE_DEVICE_FAULT_INFO_EXT = StructureType 1000341002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_FAULT_COUNTS_EXT"
-pattern STRUCTURE_TYPE_DEVICE_FAULT_COUNTS_EXT = StructureType 1000341001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_FEATURES_EXT = StructureType 1000341000
-
--- 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_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT = StructureType 1000339000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT"
-pattern STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT = StructureType 1000338004
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT"
-pattern STRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT = StructureType 1000338001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT = StructureType 1000338000
-
--- 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_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"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT = StructureType 1000332001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT = StructureType 1000332000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT = StructureType 1000330000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_EXT = StructureType 1000328001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT = StructureType 1000328000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MOTION_INFO_NV"
-pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MOTION_INFO_NV = StructureType 1000327002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV = StructureType 1000327001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV"
-pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV = StructureType 1000327000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV"
-pattern STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV = StructureType 1000326002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV"
-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_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_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_PROPERTIES_KHR"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_PROPERTIES_KHR = StructureType 1000322000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR = StructureType 1000203000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_FEATURES_AMD"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_FEATURES_AMD = StructureType 1000321000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT"
-pattern STRUCTURE_TYPE_GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT = StructureType 1000320002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT = StructureType 1000320001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT = StructureType 1000320000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT"
-pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT = StructureType 1000316009
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_PUSH_DESCRIPTOR_BUFFER_HANDLE_EXT"
-pattern STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_PUSH_DESCRIPTOR_BUFFER_HANDLE_EXT = StructureType 1000316012
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_INFO_EXT"
-pattern STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_INFO_EXT = StructureType 1000316011
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_OPAQUE_CAPTURE_DESCRIPTOR_DATA_CREATE_INFO_EXT"
-pattern STRUCTURE_TYPE_OPAQUE_CAPTURE_DESCRIPTOR_DATA_CREATE_INFO_EXT = StructureType 1000316010
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SAMPLER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT"
-pattern STRUCTURE_TYPE_SAMPLER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT = StructureType 1000316008
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_EXT"
-pattern STRUCTURE_TYPE_IMAGE_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_EXT = StructureType 1000316007
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT"
-pattern STRUCTURE_TYPE_IMAGE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT = StructureType 1000316006
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BUFFER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT"
-pattern STRUCTURE_TYPE_BUFFER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT = StructureType 1000316005
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_GET_INFO_EXT"
-pattern STRUCTURE_TYPE_DESCRIPTOR_GET_INFO_EXT = StructureType 1000316004
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_ADDRESS_INFO_EXT"
-pattern STRUCTURE_TYPE_DESCRIPTOR_ADDRESS_INFO_EXT = StructureType 1000316003
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT = StructureType 1000316002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT = StructureType 1000316001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT = StructureType 1000316000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMPORT_METAL_SHARED_EVENT_INFO_EXT"
-pattern STRUCTURE_TYPE_IMPORT_METAL_SHARED_EVENT_INFO_EXT = StructureType 1000311011
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXPORT_METAL_SHARED_EVENT_INFO_EXT"
-pattern STRUCTURE_TYPE_EXPORT_METAL_SHARED_EVENT_INFO_EXT = StructureType 1000311010
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMPORT_METAL_IO_SURFACE_INFO_EXT"
-pattern STRUCTURE_TYPE_IMPORT_METAL_IO_SURFACE_INFO_EXT = StructureType 1000311009
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXPORT_METAL_IO_SURFACE_INFO_EXT"
-pattern STRUCTURE_TYPE_EXPORT_METAL_IO_SURFACE_INFO_EXT = StructureType 1000311008
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMPORT_METAL_TEXTURE_INFO_EXT"
-pattern STRUCTURE_TYPE_IMPORT_METAL_TEXTURE_INFO_EXT = StructureType 1000311007
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXPORT_METAL_TEXTURE_INFO_EXT"
-pattern STRUCTURE_TYPE_EXPORT_METAL_TEXTURE_INFO_EXT = StructureType 1000311006
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMPORT_METAL_BUFFER_INFO_EXT"
-pattern STRUCTURE_TYPE_IMPORT_METAL_BUFFER_INFO_EXT = StructureType 1000311005
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXPORT_METAL_BUFFER_INFO_EXT"
-pattern STRUCTURE_TYPE_EXPORT_METAL_BUFFER_INFO_EXT = StructureType 1000311004
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXPORT_METAL_COMMAND_QUEUE_INFO_EXT"
-pattern STRUCTURE_TYPE_EXPORT_METAL_COMMAND_QUEUE_INFO_EXT = StructureType 1000311003
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXPORT_METAL_DEVICE_INFO_EXT"
-pattern STRUCTURE_TYPE_EXPORT_METAL_DEVICE_INFO_EXT = StructureType 1000311002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECTS_INFO_EXT"
-pattern STRUCTURE_TYPE_EXPORT_METAL_OBJECTS_INFO_EXT = StructureType 1000311001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECT_CREATE_INFO_EXT"
-pattern STRUCTURE_TYPE_EXPORT_METAL_OBJECT_CREATE_INFO_EXT = StructureType 1000311000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_QUERY_LOW_LATENCY_SUPPORT_NV"
-pattern STRUCTURE_TYPE_QUERY_LOW_LATENCY_SUPPORT_NV = StructureType 1000310000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_PROPERTIES_NV"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_PROPERTIES_NV = StructureType 1000307004
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_FEATURES_NV"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_FEATURES_NV = StructureType 1000307003
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_CUDA_LAUNCH_INFO_NV"
-pattern STRUCTURE_TYPE_CUDA_LAUNCH_INFO_NV = StructureType 1000307002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_CUDA_FUNCTION_CREATE_INFO_NV"
-pattern STRUCTURE_TYPE_CUDA_FUNCTION_CREATE_INFO_NV = StructureType 1000307001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_CUDA_MODULE_CREATE_INFO_NV"
-pattern STRUCTURE_TYPE_CUDA_MODULE_CREATE_INFO_NV = StructureType 1000307000
-
--- 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_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"
-pattern STRUCTURE_TYPE_PRESENT_ID_KHR = StructureType 1000294000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_BARRIER_CREATE_INFO_NV"
-pattern STRUCTURE_TYPE_SWAPCHAIN_PRESENT_BARRIER_CREATE_INFO_NV = StructureType 1000292002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_BARRIER_NV"
-pattern STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_BARRIER_NV = StructureType 1000292001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_BARRIER_FEATURES_NV"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_BARRIER_FEATURES_NV = StructureType 1000292000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR"
-pattern STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR = StructureType 1000290000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT = StructureType 1000287002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT = StructureType 1000287001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT"
-pattern STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT = StructureType 1000287000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT = StructureType 1000286001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT = StructureType 1000286000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT"
-pattern STRUCTURE_TYPE_DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT = StructureType 1000284002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT"
-pattern STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT = StructureType 1000284001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT = StructureType 1000284000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEPTH_BIAS_REPRESENTATION_INFO_EXT"
-pattern STRUCTURE_TYPE_DEPTH_BIAS_REPRESENTATION_INFO_EXT = StructureType 1000283002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEPTH_BIAS_INFO_EXT"
-pattern STRUCTURE_TYPE_DEPTH_BIAS_INFO_EXT = StructureType 1000283001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_BIAS_CONTROL_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_BIAS_CONTROL_FEATURES_EXT = StructureType 1000283000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM"
-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_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT = StructureType 1000281000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV"
-pattern STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV = StructureType 1000278001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV = StructureType 1000278000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV = StructureType 1000277007
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV"
-pattern STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV = StructureType 1000277006
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV"
-pattern STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV = StructureType 1000277005
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV"
-pattern STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV = StructureType 1000277004
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV"
-pattern STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV = StructureType 1000277003
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV"
-pattern STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV = StructureType 1000277002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV"
-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_RELEASE_SWAPCHAIN_IMAGES_INFO_EXT"
-pattern STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_EXT = StructureType 1000275005
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT"
-pattern STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT = StructureType 1000275004
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_EXT"
-pattern STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_EXT = StructureType 1000275003
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT"
-pattern STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT = StructureType 1000275002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT"
-pattern STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT = StructureType 1000275001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT = StructureType 1000275000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_EXT"
-pattern STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_EXT = StructureType 1000274002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_EXT"
-pattern STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_EXT = StructureType 1000274001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_EXT"
-pattern STRUCTURE_TYPE_SURFACE_PRESENT_MODE_EXT = StructureType 1000274000
-
--- 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_MEMORY_MAP_PLACED_INFO_EXT"
-pattern STRUCTURE_TYPE_MEMORY_MAP_PLACED_INFO_EXT = StructureType 1000272002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAP_MEMORY_PLACED_PROPERTIES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MAP_MEMORY_PLACED_PROPERTIES_EXT = StructureType 1000272001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAP_MEMORY_PLACED_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MAP_MEMORY_PLACED_FEATURES_EXT = StructureType 1000272000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_UNMAP_INFO_KHR"
-pattern STRUCTURE_TYPE_MEMORY_UNMAP_INFO_KHR = StructureType 1000271001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_MAP_INFO_KHR"
-pattern STRUCTURE_TYPE_MEMORY_MAP_INFO_KHR = StructureType 1000271000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY_EXT"
-pattern STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY_EXT = StructureType 1000270009
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE_EXT"
-pattern STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE_EXT = StructureType 1000270008
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO_EXT"
-pattern STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO_EXT = StructureType 1000270007
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO_EXT"
-pattern STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO_EXT = StructureType 1000270006
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO_EXT"
-pattern STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO_EXT = StructureType 1000270005
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO_EXT"
-pattern STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO_EXT = StructureType 1000270004
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY_EXT"
-pattern STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY_EXT = StructureType 1000270003
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY_EXT"
-pattern STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY_EXT = StructureType 1000270002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES_EXT = StructureType 1000270001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES_EXT = StructureType 1000270000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR"
-pattern STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR = StructureType 1000269005
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR"
-pattern STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR = StructureType 1000269004
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR"
-pattern STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR = StructureType 1000269003
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR"
-pattern STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR = StructureType 1000269002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR"
-pattern STRUCTURE_TYPE_PIPELINE_INFO_KHR = StructureType 1000269001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR = StructureType 1000269000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT = StructureType 1000267000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT = StructureType 1000260000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT"
-pattern STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT = StructureType 1000256000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT"
-pattern STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT = StructureType 1000255001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT"
-pattern STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT = StructureType 1000255002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT"
-pattern STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT = StructureType 1000255000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT = StructureType 1000254002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT"
-pattern STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT = StructureType 1000254001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT = StructureType 1000254000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT = StructureType 1000252000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT = StructureType 1000251000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV"
-pattern STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV = StructureType 1000250002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV"
-pattern STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV = StructureType 1000250001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV = StructureType 1000250000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV = StructureType 1000249002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV"
-pattern STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV = StructureType 1000249001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV = StructureType 1000249000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR"
-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_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"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT = StructureType 1000244000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV = StructureType 1000240000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR"
-pattern STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR = StructureType 1000239000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT"
-pattern STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT = StructureType 1000238001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT = StructureType 1000238000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT = StructureType 1000237000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_QUAD_CONTROL_FEATURES_KHR"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_QUAD_CONTROL_FEATURES_KHR = StructureType 1000235000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT = StructureType 1000234000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDERING_INPUT_ATTACHMENT_INDEX_INFO_KHR"
-pattern STRUCTURE_TYPE_RENDERING_INPUT_ATTACHMENT_INDEX_INFO_KHR = StructureType 1000232002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_LOCATION_INFO_KHR"
-pattern STRUCTURE_TYPE_RENDERING_ATTACHMENT_LOCATION_INFO_KHR = StructureType 1000232001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES_KHR"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES_KHR = StructureType 1000232000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD = StructureType 1000229000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD = StructureType 1000227000
-
--- 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_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR = StructureType 1000226004
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR = StructureType 1000226003
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR = StructureType 1000226002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR"
-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_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT"
-pattern STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT = StructureType 1000044007
-
--- 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"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT = StructureType 1000218001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT"
-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_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"
-pattern STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD = StructureType 1000213001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD"
-pattern STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD = StructureType 1000213000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT = StructureType 1000212000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL"
-pattern STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL = StructureType 1000210005
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL"
-pattern STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL = StructureType 1000210004
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL"
-pattern STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL = StructureType 1000210003
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL"
-pattern STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL = StructureType 1000210002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL"
-pattern STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL = StructureType 1000210001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL"
-pattern STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL = StructureType 1000210000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL = StructureType 1000209000
-
--- 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_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV"
-pattern STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV = StructureType 1000206001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV"
-pattern STRUCTURE_TYPE_CHECKPOINT_DATA_NV = StructureType 1000206000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV = StructureType 1000205002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV"
-pattern STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV = StructureType 1000205000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV = StructureType 1000204000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV = StructureType 1000202001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV = StructureType 1000202000
-
--- 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_PROPERTIES_EXT"
-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_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD"
-pattern STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD = StructureType 1000183000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR = StructureType 1000181000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT = StructureType 1000178002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT"
-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_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"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT = StructureType 1000170000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV"
-pattern STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV = StructureType 1000166001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV = StructureType 1000166000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV"
-pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV = StructureType 1000165012
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV"
-pattern STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV = StructureType 1000165011
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV = StructureType 1000165009
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV"
-pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV = StructureType 1000165008
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV"
-pattern STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV = StructureType 1000165007
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV"
-pattern STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV = StructureType 1000165006
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV"
-pattern STRUCTURE_TYPE_GEOMETRY_AABB_NV = StructureType 1000165005
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV"
-pattern STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV = StructureType 1000165004
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_GEOMETRY_NV"
-pattern STRUCTURE_TYPE_GEOMETRY_NV = StructureType 1000165003
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV"
-pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV = StructureType 1000165001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV"
-pattern STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV = StructureType 1000165000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV"
-pattern STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV = StructureType 1000164005
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV = StructureType 1000164002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV = StructureType 1000164001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV"
-pattern STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV = StructureType 1000164000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR = StructureType 1000163001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR = StructureType 1000163000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT"
-pattern STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT = StructureType 1000160001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT"
-pattern STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT = StructureType 1000160000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT"
-pattern STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT = StructureType 1000158006
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT"
-pattern STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = StructureType 1000158005
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT"
-pattern STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT = StructureType 1000158004
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT"
-pattern STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT = StructureType 1000158003
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT = StructureType 1000158002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT"
-pattern STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT = StructureType 1000158000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV = StructureType 1000154001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV = StructureType 1000154000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV"
-pattern STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV = StructureType 1000152000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR = StructureType 1000348013
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR"
-pattern STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR = StructureType 1000150018
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR"
-pattern STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR = StructureType 1000150016
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR"
-pattern STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR = StructureType 1000150015
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR = StructureType 1000347001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR = StructureType 1000347000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR"
-pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR = StructureType 1000150020
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR"
-pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR = StructureType 1000150017
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR = StructureType 1000150014
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR = StructureType 1000150013
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR"
-pattern STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR = StructureType 1000150012
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR"
-pattern STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR = StructureType 1000150011
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR"
-pattern STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR = StructureType 1000150010
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR"
-pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR = StructureType 1000150009
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR"
-pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR = StructureType 1000150006
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR"
-pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR = StructureType 1000150005
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR"
-pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR = StructureType 1000150004
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR"
-pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR = StructureType 1000150003
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR"
-pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR = StructureType 1000150002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR"
-pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR = StructureType 1000150000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR"
-pattern STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR = StructureType 1000150007
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV"
-pattern STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV = StructureType 1000149000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT"
-pattern STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT = StructureType 1000148002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT = StructureType 1000148001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT = StructureType 1000148000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT"
-pattern STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT = StructureType 1000143004
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT = StructureType 1000143003
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT"
-pattern STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT = StructureType 1000143002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT"
-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_ATTACHMENT_SAMPLE_COUNT_INFO_AMD"
-pattern STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD = StructureType 1000044008
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_NODE_CREATE_INFO_AMDX"
-pattern STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_NODE_CREATE_INFO_AMDX = StructureType 1000134004
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXECUTION_GRAPH_PIPELINE_CREATE_INFO_AMDX"
-pattern STRUCTURE_TYPE_EXECUTION_GRAPH_PIPELINE_CREATE_INFO_AMDX = StructureType 1000134003
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXECUTION_GRAPH_PIPELINE_SCRATCH_SIZE_AMDX"
-pattern STRUCTURE_TYPE_EXECUTION_GRAPH_PIPELINE_SCRATCH_SIZE_AMDX = StructureType 1000134002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ENQUEUE_PROPERTIES_AMDX"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ENQUEUE_PROPERTIES_AMDX = StructureType 1000134001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ENQUEUE_FEATURES_AMDX"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ENQUEUE_FEATURES_AMDX = StructureType 1000134000
-
--- 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"
-pattern STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID = StructureType 1000129005
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID"
-pattern STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = StructureType 1000129004
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID"
-pattern STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = StructureType 1000129003
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID"
-pattern STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID = StructureType 1000129002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID"
-pattern STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID = StructureType 1000129001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID"
-pattern STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID = StructureType 1000129000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT"
-pattern STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT = StructureType 1000128004
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT"
-pattern STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT = StructureType 1000128003
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT"
-pattern STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT = StructureType 1000128002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT"
-pattern STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT = StructureType 1000128001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT"
-pattern STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT = StructureType 1000128000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK"
-pattern STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK = StructureType 1000123000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK"
-pattern STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK = StructureType 1000122000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR"
-pattern STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR = StructureType 1000121004
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR"
-pattern STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR = StructureType 1000121003
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR"
-pattern STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR = StructureType 1000121002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR"
-pattern STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR = StructureType 1000121001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR"
-pattern STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR = StructureType 1000121000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR"
-pattern STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR = StructureType 1000119002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR"
-pattern STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR = StructureType 1000119001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR = StructureType 1000119000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_RESERVATION_INFO_KHR"
-pattern STRUCTURE_TYPE_PERFORMANCE_QUERY_RESERVATION_INFO_KHR = StructureType 1000116007
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR"
-pattern STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR = StructureType 1000116006
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR"
-pattern STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR = StructureType 1000116005
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR"
-pattern STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR = StructureType 1000116004
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR"
-pattern STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR = StructureType 1000116003
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR"
-pattern STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR = StructureType 1000116002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR = StructureType 1000116001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR = StructureType 1000116000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR"
-pattern STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR = StructureType 1000115001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR"
-pattern STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR = StructureType 1000115000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR"
-pattern STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR = StructureType 1000114002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR"
-pattern STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR = StructureType 1000114001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR"
-pattern STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR = StructureType 1000114000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR"
-pattern STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR = StructureType 1000111000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RELAXED_LINE_RASTERIZATION_FEATURES_IMG"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_RELAXED_LINE_RASTERIZATION_FEATURES_IMG = StructureType 1000110000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_HDR_METADATA_EXT"
-pattern STRUCTURE_TYPE_HDR_METADATA_EXT = StructureType 1000105000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT"
-pattern STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT = StructureType 1000102001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT = StructureType 1000102000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT"
-pattern STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT = StructureType 1000101001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT = StructureType 1000101000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT"
-pattern STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT = StructureType 1000099001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT = StructureType 1000099000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV"
-pattern STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV = StructureType 1000098000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX"
-pattern STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX = StructureType 1000044009
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX = StructureType 1000097000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE"
-pattern STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE = StructureType 1000092000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT"
-pattern STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT = StructureType 1000091003
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT"
-pattern STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT = StructureType 1000091002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT"
-pattern STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT = StructureType 1000091001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT"
-pattern STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT = StructureType 1000091000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT"
-pattern STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT = StructureType 1000090000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV"
-pattern STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV = StructureType 1000087000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR"
-pattern STRUCTURE_TYPE_PRESENT_REGIONS_KHR = StructureType 1000084000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT"
-pattern STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT = StructureType 1000081002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT = StructureType 1000081001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT"
-pattern STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT = StructureType 1000081000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR = StructureType 1000080000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR"
-pattern STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR = StructureType 1000079001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR"
-pattern STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR = StructureType 1000079000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR"
-pattern STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR = StructureType 1000078003
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR"
-pattern STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR = StructureType 1000078002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR"
-pattern STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = StructureType 1000078001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR"
-pattern STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = StructureType 1000078000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR"
-pattern STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR = StructureType 1000075000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR"
-pattern STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR = StructureType 1000074002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR"
-pattern STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR = StructureType 1000074001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR"
-pattern STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR = StructureType 1000074000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR"
-pattern STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR = StructureType 1000073003
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR"
-pattern STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR = StructureType 1000073002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR"
-pattern STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR = StructureType 1000073001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR"
-pattern STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR = StructureType 1000073000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES_EXT = StructureType 1000068002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT = StructureType 1000068001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT"
-pattern STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT = StructureType 1000068000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT"
-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_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"
-pattern STRUCTURE_TYPE_VALIDATION_FLAGS_EXT = StructureType 1000061000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR"
-pattern STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR = StructureType 1000060012
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR"
-pattern STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR = StructureType 1000060011
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR"
-pattern STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR = StructureType 1000060010
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR"
-pattern STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR = StructureType 1000060009
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR"
-pattern STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR = StructureType 1000060008
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR"
-pattern STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR = StructureType 1000060007
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV"
-pattern STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV = StructureType 1000058000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV"
-pattern STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV = StructureType 1000057001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV"
-pattern STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV = StructureType 1000057000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV"
-pattern STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV = StructureType 1000056001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV"
-pattern STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV = StructureType 1000056000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV = StructureType 1000050000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP"
-pattern STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP = StructureType 1000049000
-
--- 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"
-pattern STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX = StructureType 1000030001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX"
-pattern STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX = StructureType 1000030000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_CU_MODULE_TEXTURING_MODE_CREATE_INFO_NVX"
-pattern STRUCTURE_TYPE_CU_MODULE_TEXTURING_MODE_CREATE_INFO_NVX = StructureType 1000029004
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_CU_LAUNCH_INFO_NVX"
-pattern STRUCTURE_TYPE_CU_LAUNCH_INFO_NVX = StructureType 1000029002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_CU_FUNCTION_CREATE_INFO_NVX"
-pattern STRUCTURE_TYPE_CU_FUNCTION_CREATE_INFO_NVX = StructureType 1000029001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_CU_MODULE_CREATE_INFO_NVX"
-pattern STRUCTURE_TYPE_CU_MODULE_CREATE_INFO_NVX = StructureType 1000029000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT"
-pattern STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT = StructureType 1000028002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT = StructureType 1000028001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT = StructureType 1000028000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV"
-pattern STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV = StructureType 1000026002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV"
-pattern STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV = StructureType 1000026001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV"
-pattern STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV = StructureType 1000026000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT"
-pattern STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT = StructureType 1000022002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT"
-pattern STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT = StructureType 1000022001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT"
-pattern STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT = StructureType 1000022000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD"
-pattern STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD = StructureType 1000018000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT"
-pattern STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT = StructureType 1000011000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR"
-pattern STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR = StructureType 1000009000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR"
-pattern STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR = StructureType 1000008000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR"
-pattern STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR = StructureType 1000006000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR"
-pattern STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR = StructureType 1000005000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR"
-pattern STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR = StructureType 1000004000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR"
-pattern STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR = StructureType 1000003000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR"
-pattern STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR = StructureType 1000002001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR"
-pattern STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR = StructureType 1000002000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PRESENT_INFO_KHR"
-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_PIPELINE_OFFLINE_CREATE_INFO"
-pattern STRUCTURE_TYPE_PIPELINE_OFFLINE_CREATE_INFO = StructureType 1000298010
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_FAULT_CALLBACK_INFO"
-pattern STRUCTURE_TYPE_FAULT_CALLBACK_INFO = StructureType 1000298008
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_FAULT_DATA"
-pattern STRUCTURE_TYPE_FAULT_DATA = StructureType 1000298007
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_POOL_SIZE"
-pattern STRUCTURE_TYPE_PIPELINE_POOL_SIZE = StructureType 1000298005
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COMMAND_POOL_MEMORY_CONSUMPTION"
-pattern STRUCTURE_TYPE_COMMAND_POOL_MEMORY_CONSUMPTION = StructureType 1000298004
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COMMAND_POOL_MEMORY_RESERVATION_CREATE_INFO"
-pattern STRUCTURE_TYPE_COMMAND_POOL_MEMORY_RESERVATION_CREATE_INFO = StructureType 1000298003
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_OBJECT_RESERVATION_CREATE_INFO"
-pattern STRUCTURE_TYPE_DEVICE_OBJECT_RESERVATION_CREATE_INFO = StructureType 1000298002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_SC_1_0_PROPERTIES"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_SC_1_0_PROPERTIES = StructureType 1000298001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_SC_1_0_FEATURES"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_SC_1_0_FEATURES = StructureType 1000298000
-
--- 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"
-pattern STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO = StructureType 1000257003
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO"
-pattern STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO = StructureType 1000257002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO"
-pattern STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO = StructureType 1000244001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES = StructureType 1000257000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO"
-pattern STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO = StructureType 1000207005
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO"
-pattern STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO = StructureType 1000207004
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO"
-pattern STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO = StructureType 1000207003
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO"
-pattern STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO = StructureType 1000207002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES = StructureType 1000207001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES = StructureType 1000207000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES = StructureType 1000261000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT"
-pattern STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT = StructureType 1000241002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT"
-pattern STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT = StructureType 1000241001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES = StructureType 1000241000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES = StructureType 1000175000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES = StructureType 1000253000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO"
-pattern STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO = StructureType 1000108003
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO"
-pattern STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO = StructureType 1000108002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO"
-pattern STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO = StructureType 1000108001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES = StructureType 1000108000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES = StructureType 1000211000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO"
-pattern STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO = StructureType 1000130001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES = StructureType 1000130000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO"
-pattern STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO = StructureType 1000246000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES = StructureType 1000221000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE"
-pattern STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE = StructureType 1000199001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES = StructureType 1000199000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT"
-pattern STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT = StructureType 1000161004
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO"
-pattern STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO = StructureType 1000161003
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES = StructureType 1000161002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES = StructureType 1000161001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO"
-pattern STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO = StructureType 1000161000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES = StructureType 1000197000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES = StructureType 1000082000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES = StructureType 1000180000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES = StructureType 1000196000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES = StructureType 1000177000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SUBPASS_END_INFO"
-pattern STRUCTURE_TYPE_SUBPASS_END_INFO = StructureType 1000109006
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO"
-pattern STRUCTURE_TYPE_SUBPASS_BEGIN_INFO = StructureType 1000109005
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2"
-pattern STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2 = StructureType 1000109004
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2"
-pattern STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2 = StructureType 1000109003
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2"
-pattern STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2 = StructureType 1000109002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2"
-pattern STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2 = StructureType 1000109001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2"
-pattern STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2 = StructureType 1000109000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO"
-pattern STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO = StructureType 1000147000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES = StructureType 52
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES = StructureType 51
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES = StructureType 50
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES = StructureType 49
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES = StructureType 1000063000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT"
-pattern STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT = StructureType 1000168001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES = StructureType 1000168000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES"
-pattern STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES = StructureType 1000076001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO = StructureType 1000076000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO"
-pattern STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO = StructureType 1000077000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO"
-pattern STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO = StructureType 1000113000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES"
-pattern STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES = StructureType 1000112001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO = StructureType 1000112000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO"
-pattern STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO = StructureType 1000072002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO"
-pattern STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO = StructureType 1000072001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO"
-pattern STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO = StructureType 1000072000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES = StructureType 1000071004
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES"
-pattern STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES = StructureType 1000071003
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO = StructureType 1000071002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES"
-pattern STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES = StructureType 1000071001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO = StructureType 1000071000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO"
-pattern STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO = StructureType 1000085000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES"
-pattern STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES = StructureType 1000156005
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES = StructureType 1000156004
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO"
-pattern STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO = StructureType 1000156003
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO"
-pattern STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO = StructureType 1000156002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO"
-pattern STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO = StructureType 1000156001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO"
-pattern STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO = StructureType 1000156000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2"
-pattern STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2 = StructureType 1000145003
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES = StructureType 1000145002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES = StructureType 1000145001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO"
-pattern STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO = StructureType 1000145000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES = StructureType 1000120000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES = StructureType 1000053002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES = StructureType 1000053001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO"
-pattern STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO = StructureType 1000053000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO"
-pattern STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO = StructureType 1000117003
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO"
-pattern STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO = StructureType 1000117002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO"
-pattern STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO = StructureType 1000117001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES = StructureType 1000117000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2 = StructureType 1000059008
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2"
-pattern STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2 = StructureType 1000059007
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 = StructureType 1000059006
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2"
-pattern STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2 = StructureType 1000059005
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 = StructureType 1000059004
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2"
-pattern STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2 = StructureType 1000059003
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2"
-pattern STRUCTURE_TYPE_FORMAT_PROPERTIES_2 = StructureType 1000059002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2 = StructureType 1000059001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 = StructureType 1000059000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2"
-pattern STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 = StructureType 1000146004
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2"
-pattern STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 = StructureType 1000146003
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2"
-pattern STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2 = StructureType 1000146002
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2"
-pattern STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 = StructureType 1000146001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2"
-pattern STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 = StructureType 1000146000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO"
-pattern STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO = StructureType 1000070001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES = StructureType 1000070000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO"
-pattern STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO = StructureType 1000060014
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO"
-pattern STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO = StructureType 1000060013
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO"
-pattern STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO = StructureType 1000060006
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO"
-pattern STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO = StructureType 1000060005
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO"
-pattern STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO = StructureType 1000060004
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO"
-pattern STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO = StructureType 1000060003
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO"
-pattern STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO = StructureType 1000060000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO"
-pattern STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO = StructureType 1000127001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS"
-pattern STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS = StructureType 1000127000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES = StructureType 1000083000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO"
-pattern STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO = StructureType 1000157001
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO"
-pattern STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO = StructureType 1000157000
-
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES = StructureType 1000094000
-
-{-# COMPLETE
-  STRUCTURE_TYPE_APPLICATION_INFO
-  , STRUCTURE_TYPE_INSTANCE_CREATE_INFO
-  , STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO
-  , STRUCTURE_TYPE_DEVICE_CREATE_INFO
-  , STRUCTURE_TYPE_SUBMIT_INFO
-  , STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO
-  , STRUCTURE_TYPE_MAPPED_MEMORY_RANGE
-  , STRUCTURE_TYPE_BIND_SPARSE_INFO
-  , STRUCTURE_TYPE_FENCE_CREATE_INFO
-  , STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO
-  , STRUCTURE_TYPE_EVENT_CREATE_INFO
-  , STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO
-  , STRUCTURE_TYPE_BUFFER_CREATE_INFO
-  , STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO
-  , STRUCTURE_TYPE_IMAGE_CREATE_INFO
-  , STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO
-  , STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO
-  , STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO
-  , STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO
-  , STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO
-  , STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO
-  , STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO
-  , STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO
-  , STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO
-  , STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO
-  , STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO
-  , STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO
-  , STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO
-  , STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO
-  , STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO
-  , STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO
-  , STRUCTURE_TYPE_SAMPLER_CREATE_INFO
-  , STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO
-  , STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO
-  , STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO
-  , STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET
-  , STRUCTURE_TYPE_COPY_DESCRIPTOR_SET
-  , STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO
-  , STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO
-  , STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO
-  , STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO
-  , STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO
-  , STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO
-  , STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO
-  , STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER
-  , STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER
-  , STRUCTURE_TYPE_MEMORY_BARRIER
-  , STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO
-  , STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_ROBUSTNESS_FEATURES_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_PROPERTIES_NV
-  , STRUCTURE_TYPE_COOPERATIVE_MATRIX_FLEXIBLE_DIMENSIONS_PROPERTIES_NV
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_FEATURES_NV
-  , STRUCTURE_TYPE_HDR_VIVID_DYNAMIC_METADATA_HUAWEI
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_HDR_VIVID_FEATURES_HUAWEI
-  , STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLAMP_CONTROL_CREATE_INFO_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_CONTROL_FEATURES_EXT
-  , STRUCTURE_TYPE_IMAGE_ALIGNMENT_CONTROL_CREATE_INFO_MESA
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_PROPERTIES_MESA
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_FEATURES_MESA
-  , STRUCTURE_TYPE_GENERATED_COMMANDS_SHADER_INFO_EXT
-  , STRUCTURE_TYPE_GENERATED_COMMANDS_PIPELINE_INFO_EXT
-  , STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXT
-  , STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_INFO_EXT
-  , STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXT
-  , STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_SHADER_EXT
-  , STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXT
-  , STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_EXT
-  , STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXT
-  , STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_EXT
-  , STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_CREATE_INFO_EXT
-  , STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_VALIDATION_FEATURES_NV
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_REPLICATED_COMPOSITES_FEATURES_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT16_VECTOR_FEATURES_NV
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_VULKAN_PROPERTIES_KHR
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_KHR
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_LIST_KHR
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_PROPERTIES_KHR
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_FEATURES_KHR
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_COMMAND_BUFFER_INHERITANCE_FEATURES_NV
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_RELAXED_EXTENDED_INSTRUCTION_FEATURES_KHR
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_RAW_ACCESS_CHAINS_FEATURES_NV
-  , STRUCTURE_TYPE_DISPLAY_MODE_STEREO_PROPERTIES_NV
-  , STRUCTURE_TYPE_DISPLAY_SURFACE_STEREO_CREATE_INFO_NV
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_POOL_OVERALLOCATION_FEATURES_NV
-  , STRUCTURE_TYPE_BIND_DESCRIPTOR_BUFFER_EMBEDDED_SAMPLERS_INFO_EXT
-  , STRUCTURE_TYPE_SET_DESCRIPTOR_BUFFER_OFFSETS_INFO_EXT
-  , STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO_KHR
-  , STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_INFO_KHR
-  , STRUCTURE_TYPE_PUSH_CONSTANTS_INFO_KHR
-  , STRUCTURE_TYPE_BIND_DESCRIPTOR_SETS_INFO_KHR
-  , STRUCTURE_TYPE_BIND_MEMORY_STATUS_KHR
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES_KHR
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES_KHR
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES_KHR
-  , STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_KHR
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_KHR
-  , STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_KHR
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_KHR
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_KHR
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_DRIVER_PROPERTIES_MSFT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCREEN_BUFFER_FEATURES_QNX
-  , STRUCTURE_TYPE_EXTERNAL_FORMAT_QNX
-  , STRUCTURE_TYPE_IMPORT_SCREEN_BUFFER_INFO_QNX
-  , STRUCTURE_TYPE_SCREEN_BUFFER_FORMAT_PROPERTIES_QNX
-  , STRUCTURE_TYPE_SCREEN_BUFFER_PROPERTIES_QNX
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES_KHR
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_KHR
-  , STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_KHR
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_KHR
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_FEATURES_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_CLAMP_FEATURES_QCOM
-  , STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_YCBCR_DEGAMMA_CREATE_INFO_QCOM
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_DEGAMMA_FEATURES_QCOM
-  , STRUCTURE_TYPE_BLIT_IMAGE_CUBIC_WEIGHTS_INFO_QCOM
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_WEIGHTS_FEATURES_QCOM
-  , STRUCTURE_TYPE_SAMPLER_CUBIC_WEIGHTS_CREATE_INFO_QCOM
-  , STRUCTURE_TYPE_SAMPLER_BLOCK_MATCH_WINDOW_CREATE_INFO_QCOM
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_PROPERTIES_QCOM
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_FEATURES_QCOM
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_PER_STAGE_DESCRIPTOR_SET_FEATURES_NV
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_PROPERTIES_KHR
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_KHR
-  , STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_RENDER_AREAS_RENDER_PASS_BEGIN_INFO_QCOM
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_RENDER_AREAS_FEATURES_QCOM
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_KHR
-  , STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_KHR
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_KHR
-  , STRUCTURE_TYPE_LATENCY_SURFACE_CAPABILITIES_NV
-  , STRUCTURE_TYPE_SWAPCHAIN_LATENCY_CREATE_INFO_NV
-  , STRUCTURE_TYPE_OUT_OF_BAND_QUEUE_TYPE_INFO_NV
-  , STRUCTURE_TYPE_LATENCY_SUBMISSION_PRESENT_ID_NV
-  , STRUCTURE_TYPE_LATENCY_TIMINGS_FRAME_REPORT_NV
-  , STRUCTURE_TYPE_GET_LATENCY_MARKER_INFO_NV
-  , STRUCTURE_TYPE_SET_LATENCY_MARKER_INFO_NV
-  , STRUCTURE_TYPE_LATENCY_SLEEP_INFO_NV
-  , STRUCTURE_TYPE_LATENCY_SLEEP_MODE_INFO_NV
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_FEATURES_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_PROPERTIES_ARM
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM
-  , STRUCTURE_TYPE_LAYER_SETTINGS_CREATE_INFO_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_PROPERTIES_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_FEATURES_EXT
-  , STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_PROPERTIES_NV
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_FEATURES_NV
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_VIEWPORTS_FEATURES_QCOM
-  , STRUCTURE_TYPE_AMIGO_PROFILING_SUBMIT_INFO_SEC
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_AMIGO_PROFILING_FEATURES_SEC
-  , STRUCTURE_TYPE_TILE_PROPERTIES_QCOM
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM
-  , STRUCTURE_TYPE_PIPELINE_BINARY_HANDLES_INFO_KHR
-  , STRUCTURE_TYPE_DEVICE_PIPELINE_BINARY_INTERNAL_CACHE_CONTROL_KHR
-  , STRUCTURE_TYPE_PIPELINE_CREATE_INFO_KHR
-  , STRUCTURE_TYPE_PIPELINE_BINARY_DATA_INFO_KHR
-  , STRUCTURE_TYPE_RELEASE_CAPTURED_PIPELINE_DATA_INFO_KHR
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_BINARY_PROPERTIES_KHR
-  , STRUCTURE_TYPE_PIPELINE_BINARY_KEY_KHR
-  , STRUCTURE_TYPE_PIPELINE_BINARY_INFO_KHR
-  , STRUCTURE_TYPE_PIPELINE_BINARY_CREATE_INFO_KHR
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_BINARY_FEATURES_KHR
-  , STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT
-  , STRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT
-  , STRUCTURE_TYPE_SHADER_CREATE_INFO_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_PROPERTIES_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_POSITION_FETCH_FEATURES_KHR
-  , STRUCTURE_TYPE_ANTI_LAG_PRESENTATION_INFO_AMD
-  , STRUCTURE_TYPE_ANTI_LAG_DATA_AMD
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_ANTI_LAG_FEATURES_AMD
-  , STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO_KHR
-  , STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO_KHR
-  , STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_KHR
-  , STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_KHR
-  , STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO_KHR
-  , STRUCTURE_TYPE_RENDERING_AREA_INFO_KHR
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES_KHR
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES_KHR
-  , STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_RESOLVE_PROPERTIES_ANDROID
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_PROPERTIES_ANDROID
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_FEATURES_ANDROID
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT
-  , STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_PRIVATE_DATA_INFO_NV
-  , STRUCTURE_TYPE_OPTICAL_FLOW_EXECUTE_INFO_NV
-  , STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_INFO_NV
-  , STRUCTURE_TYPE_OPTICAL_FLOW_IMAGE_FORMAT_PROPERTIES_NV
-  , STRUCTURE_TYPE_OPTICAL_FLOW_IMAGE_FORMAT_INFO_NV
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_PROPERTIES_NV
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_FEATURES_NV
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_EXT
-  , STRUCTURE_TYPE_SHADER_MODULE_IDENTIFIER_EXT
-  , STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_MODULE_IDENTIFIER_CREATE_INFO_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_PROPERTIES_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT
-  , STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_LIST_LUNARG
-  , STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_INFO_LUNARG
-  , STRUCTURE_TYPE_RENDER_PASS_SUBPASS_FEEDBACK_CREATE_INFO_EXT
-  , STRUCTURE_TYPE_RENDER_PASS_CREATION_FEEDBACK_CREATE_INFO_EXT
-  , STRUCTURE_TYPE_RENDER_PASS_CREATION_CONTROL_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT
-  , STRUCTURE_TYPE_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_PROPERTIES_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_FEATURES_EXT
-  , STRUCTURE_TYPE_IMAGE_VIEW_SAMPLE_WEIGHT_CREATE_INFO_QCOM
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_PROPERTIES_QCOM
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MAXIMAL_RECONVERGENCE_FEATURES_KHR
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV
-  , STRUCTURE_TYPE_PIPELINE_INDIRECT_DEVICE_ADDRESS_INFO_NV
-  , STRUCTURE_TYPE_COMPUTE_PIPELINE_INDIRECT_BUFFER_INFO_NV
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_COMPUTE_FEATURES_NV
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NV
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_NV
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV
-  , STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM
-  , STRUCTURE_TYPE_RENDER_PASS_STRIPE_SUBMIT_INFO_ARM
-  , STRUCTURE_TYPE_RENDER_PASS_STRIPE_INFO_ARM
-  , STRUCTURE_TYPE_RENDER_PASS_STRIPE_BEGIN_INFO_ARM
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_PROPERTIES_ARM
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_FEATURES_ARM
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT
-  , STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE
-  , STRUCTURE_TYPE_DESCRIPTOR_SET_BINDING_REFERENCE_VALVE
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE
-  , STRUCTURE_TYPE_IMAGE_VIEW_SLICED_CREATE_INFO_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_SLICED_VIEW_OF_3D_FEATURES_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_PROPERTIES_ARM
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_FEATURES_ARM
-  , STRUCTURE_TYPE_DEVICE_QUEUE_SHADER_CORE_CONTROL_CREATE_INFO_ARM
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES_KHR
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_ARM
-  , 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
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_VRS_FEATURES_HUAWEI
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI
-  , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_DISPLACEMENT_MICROMAP_NV
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_PROPERTIES_NV
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_FEATURES_NV
-  , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT
-  , STRUCTURE_TYPE_MICROMAP_BUILD_SIZES_INFO_EXT
-  , STRUCTURE_TYPE_MICROMAP_CREATE_INFO_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_PROPERTIES_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_EXT
-  , STRUCTURE_TYPE_COPY_MEMORY_TO_MICROMAP_INFO_EXT
-  , STRUCTURE_TYPE_COPY_MICROMAP_TO_MEMORY_INFO_EXT
-  , STRUCTURE_TYPE_COPY_MICROMAP_INFO_EXT
-  , STRUCTURE_TYPE_MICROMAP_VERSION_INFO_EXT
-  , STRUCTURE_TYPE_MICROMAP_BUILD_INFO_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_PROPERTIES_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_FEATURES_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT
-  , 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_PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_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
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT
-  , STRUCTURE_TYPE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_INFO_EXT
-  , STRUCTURE_TYPE_SUBPASS_RESOLVE_PERFORMANCE_QUERY_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_FEATURES_EXT
-  , STRUCTURE_TYPE_FRAME_BOUNDARY_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAME_BOUNDARY_FEATURES_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT
-  , STRUCTURE_TYPE_PIPELINE_PROPERTIES_IDENTIFIER_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV
-  , STRUCTURE_TYPE_MEMORY_GET_REMOTE_ADDRESS_INFO_NV
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_PROPERTIES_HUAWEI
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI
-  , STRUCTURE_TYPE_SUBPASS_SHADING_PIPELINE_CREATE_INFO_HUAWEI
-  , STRUCTURE_TYPE_BUFFER_COLLECTION_CONSTRAINTS_INFO_FUCHSIA
-  , STRUCTURE_TYPE_SYSMEM_COLOR_SPACE_FUCHSIA
-  , STRUCTURE_TYPE_IMAGE_FORMAT_CONSTRAINTS_INFO_FUCHSIA
-  , STRUCTURE_TYPE_IMAGE_CONSTRAINTS_INFO_FUCHSIA
-  , STRUCTURE_TYPE_BUFFER_COLLECTION_BUFFER_CREATE_INFO_FUCHSIA
-  , STRUCTURE_TYPE_BUFFER_CONSTRAINTS_INFO_FUCHSIA
-  , STRUCTURE_TYPE_BUFFER_COLLECTION_PROPERTIES_FUCHSIA
-  , STRUCTURE_TYPE_BUFFER_COLLECTION_IMAGE_CREATE_INFO_FUCHSIA
-  , STRUCTURE_TYPE_IMPORT_MEMORY_BUFFER_COLLECTION_FUCHSIA
-  , STRUCTURE_TYPE_BUFFER_COLLECTION_CREATE_INFO_FUCHSIA
-  , STRUCTURE_TYPE_SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA
-  , STRUCTURE_TYPE_IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA
-  , STRUCTURE_TYPE_MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA
-  , STRUCTURE_TYPE_MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA
-  , STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_EXT
-  , 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
-  , STRUCTURE_TYPE_DEVICE_ADDRESS_BINDING_CALLBACK_DATA_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_ADDRESS_BINDING_REPORT_FEATURES_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_DRM_PROPERTIES_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT
-  , STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT
-  , STRUCTURE_TYPE_DEVICE_FAULT_INFO_EXT
-  , STRUCTURE_TYPE_DEVICE_FAULT_COUNTS_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_FEATURES_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT
-  , STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT
-  , STRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR
-  , STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT
-  , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MOTION_INFO_NV
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV
-  , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV
-  , 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_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_PROPERTIES_KHR
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_FEATURES_AMD
-  , STRUCTURE_TYPE_GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT
-  , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT
-  , STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_PUSH_DESCRIPTOR_BUFFER_HANDLE_EXT
-  , STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_INFO_EXT
-  , STRUCTURE_TYPE_OPAQUE_CAPTURE_DESCRIPTOR_DATA_CREATE_INFO_EXT
-  , STRUCTURE_TYPE_SAMPLER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT
-  , STRUCTURE_TYPE_IMAGE_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_EXT
-  , STRUCTURE_TYPE_IMAGE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT
-  , STRUCTURE_TYPE_BUFFER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT
-  , STRUCTURE_TYPE_DESCRIPTOR_GET_INFO_EXT
-  , STRUCTURE_TYPE_DESCRIPTOR_ADDRESS_INFO_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT
-  , STRUCTURE_TYPE_IMPORT_METAL_SHARED_EVENT_INFO_EXT
-  , STRUCTURE_TYPE_EXPORT_METAL_SHARED_EVENT_INFO_EXT
-  , STRUCTURE_TYPE_IMPORT_METAL_IO_SURFACE_INFO_EXT
-  , STRUCTURE_TYPE_EXPORT_METAL_IO_SURFACE_INFO_EXT
-  , STRUCTURE_TYPE_IMPORT_METAL_TEXTURE_INFO_EXT
-  , STRUCTURE_TYPE_EXPORT_METAL_TEXTURE_INFO_EXT
-  , STRUCTURE_TYPE_IMPORT_METAL_BUFFER_INFO_EXT
-  , STRUCTURE_TYPE_EXPORT_METAL_BUFFER_INFO_EXT
-  , STRUCTURE_TYPE_EXPORT_METAL_COMMAND_QUEUE_INFO_EXT
-  , STRUCTURE_TYPE_EXPORT_METAL_DEVICE_INFO_EXT
-  , STRUCTURE_TYPE_EXPORT_METAL_OBJECTS_INFO_EXT
-  , STRUCTURE_TYPE_EXPORT_METAL_OBJECT_CREATE_INFO_EXT
-  , STRUCTURE_TYPE_QUERY_LOW_LATENCY_SUPPORT_NV
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_PROPERTIES_NV
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_FEATURES_NV
-  , STRUCTURE_TYPE_CUDA_LAUNCH_INFO_NV
-  , STRUCTURE_TYPE_CUDA_FUNCTION_CREATE_INFO_NV
-  , STRUCTURE_TYPE_CUDA_MODULE_CREATE_INFO_NV
-  , STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR
-  , STRUCTURE_TYPE_PRESENT_ID_KHR
-  , STRUCTURE_TYPE_SWAPCHAIN_PRESENT_BARRIER_CREATE_INFO_NV
-  , STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_BARRIER_NV
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_BARRIER_FEATURES_NV
-  , STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT
-  , STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT
-  , STRUCTURE_TYPE_DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT
-  , STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT
-  , STRUCTURE_TYPE_DEPTH_BIAS_REPRESENTATION_INFO_EXT
-  , STRUCTURE_TYPE_DEPTH_BIAS_INFO_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_BIAS_CONTROL_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_FEATURES_EXT
-  , STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV
-  , STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV
-  , STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV
-  , STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV
-  , STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV
-  , 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_RELEASE_SWAPCHAIN_IMAGES_INFO_EXT
-  , STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT
-  , STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_EXT
-  , STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT
-  , STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT
-  , STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_EXT
-  , STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_EXT
-  , STRUCTURE_TYPE_SURFACE_PRESENT_MODE_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT
-  , STRUCTURE_TYPE_MEMORY_MAP_PLACED_INFO_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_MAP_MEMORY_PLACED_PROPERTIES_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_MAP_MEMORY_PLACED_FEATURES_EXT
-  , STRUCTURE_TYPE_MEMORY_UNMAP_INFO_KHR
-  , STRUCTURE_TYPE_MEMORY_MAP_INFO_KHR
-  , STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY_EXT
-  , STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE_EXT
-  , STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO_EXT
-  , STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO_EXT
-  , STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO_EXT
-  , STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO_EXT
-  , STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY_EXT
-  , STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES_EXT
-  , STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR
-  , STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR
-  , STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR
-  , STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR
-  , STRUCTURE_TYPE_PIPELINE_INFO_KHR
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT
-  , STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT
-  , STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT
-  , STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT
-  , STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT
-  , STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT
-  , STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV
-  , STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV
-  , STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR
-  , STRUCTURE_TYPE_VALIDATION_FEATURES_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
-  , STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR
-  , STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_QUAD_CONTROL_FEATURES_KHR
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT
-  , STRUCTURE_TYPE_RENDERING_INPUT_ATTACHMENT_INDEX_INFO_KHR
-  , STRUCTURE_TYPE_RENDERING_ATTACHMENT_LOCATION_INFO_KHR
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES_KHR
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD
-  , STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR
-  , 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_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_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_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA
-  , STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD
-  , STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT
-  , STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL
-  , STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL
-  , STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL
-  , STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL
-  , STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL
-  , STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL
-  , STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV
-  , STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV
-  , STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV
-  , STRUCTURE_TYPE_CHECKPOINT_DATA_NV
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV
-  , STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV
-  , STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP
-  , 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_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR
-  , 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_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
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV
-  , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV
-  , STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV
-  , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV
-  , STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV
-  , STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV
-  , STRUCTURE_TYPE_GEOMETRY_AABB_NV
-  , STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV
-  , STRUCTURE_TYPE_GEOMETRY_NV
-  , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV
-  , STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV
-  , STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV
-  , STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR
-  , STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT
-  , STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT
-  , STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT
-  , STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT
-  , STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT
-  , STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT
-  , STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV
-  , STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR
-  , STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR
-  , STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR
-  , STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR
-  , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR
-  , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR
-  , STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR
-  , STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR
-  , STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR
-  , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR
-  , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR
-  , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR
-  , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR
-  , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR
-  , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR
-  , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR
-  , STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR
-  , STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV
-  , STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT
-  , STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT
-  , 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_ATTACHMENT_SAMPLE_COUNT_INFO_AMD
-  , STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_NODE_CREATE_INFO_AMDX
-  , STRUCTURE_TYPE_EXECUTION_GRAPH_PIPELINE_CREATE_INFO_AMDX
-  , STRUCTURE_TYPE_EXECUTION_GRAPH_PIPELINE_SCRATCH_SIZE_AMDX
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ENQUEUE_PROPERTIES_AMDX
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ENQUEUE_FEATURES_AMDX
-  , STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID
-  , STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID
-  , STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID
-  , STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID
-  , STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID
-  , STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID
-  , STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID
-  , STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT
-  , STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT
-  , STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT
-  , STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT
-  , STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT
-  , STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK
-  , STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK
-  , STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR
-  , STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR
-  , STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR
-  , STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR
-  , STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR
-  , STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR
-  , STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR
-  , STRUCTURE_TYPE_PERFORMANCE_QUERY_RESERVATION_INFO_KHR
-  , STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR
-  , STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR
-  , STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR
-  , STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR
-  , STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR
-  , STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR
-  , STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR
-  , STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR
-  , STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR
-  , STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR
-  , STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_RELAXED_LINE_RASTERIZATION_FEATURES_IMG
-  , STRUCTURE_TYPE_HDR_METADATA_EXT
-  , STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT
-  , STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT
-  , STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT
-  , STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV
-  , STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX
-  , STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE
-  , STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT
-  , STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT
-  , STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT
-  , STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT
-  , STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT
-  , STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV
-  , STRUCTURE_TYPE_PRESENT_REGIONS_KHR
-  , STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT
-  , STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR
-  , STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR
-  , STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR
-  , STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR
-  , STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR
-  , STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR
-  , STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR
-  , STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR
-  , STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR
-  , STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR
-  , STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR
-  , STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR
-  , STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR
-  , STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR
-  , STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT
-  , STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT
-  , STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT
-  , STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN
-  , STRUCTURE_TYPE_VALIDATION_FLAGS_EXT
-  , STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR
-  , STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR
-  , STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR
-  , STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR
-  , STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR
-  , STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR
-  , STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV
-  , STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV
-  , STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV
-  , STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV
-  , STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV
-  , STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP
-  , STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD
-  , STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX
-  , STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX
-  , STRUCTURE_TYPE_CU_MODULE_TEXTURING_MODE_CREATE_INFO_NVX
-  , STRUCTURE_TYPE_CU_LAUNCH_INFO_NVX
-  , STRUCTURE_TYPE_CU_FUNCTION_CREATE_INFO_NVX
-  , STRUCTURE_TYPE_CU_MODULE_CREATE_INFO_NVX
-  , STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT
-  , STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV
-  , STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV
-  , STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV
-  , STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT
-  , STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT
-  , STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT
-  , STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD
-  , STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT
-  , STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR
-  , STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR
-  , STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR
-  , STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR
-  , STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR
-  , STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR
-  , STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR
-  , STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR
-  , STRUCTURE_TYPE_PRESENT_INFO_KHR
-  , STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR
-  , STRUCTURE_TYPE_PIPELINE_OFFLINE_CREATE_INFO
-  , STRUCTURE_TYPE_FAULT_CALLBACK_INFO
-  , STRUCTURE_TYPE_FAULT_DATA
-  , STRUCTURE_TYPE_PIPELINE_POOL_SIZE
-  , STRUCTURE_TYPE_COMMAND_POOL_MEMORY_CONSUMPTION
-  , STRUCTURE_TYPE_COMMAND_POOL_MEMORY_RESERVATION_CREATE_INFO
-  , STRUCTURE_TYPE_DEVICE_OBJECT_RESERVATION_CREATE_INFO
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_SC_1_0_PROPERTIES
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_SC_1_0_FEATURES
-  , 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
-  , STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES
-  , STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO
-  , STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO
-  , STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO
-  , STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES
-  , STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT
-  , STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES
-  , STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO
-  , STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO
-  , STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES
-  , STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES
-  , STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES
-  , STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES
-  , STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT
-  , STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES
-  , STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES
-  , STRUCTURE_TYPE_SUBPASS_END_INFO
-  , STRUCTURE_TYPE_SUBPASS_BEGIN_INFO
-  , STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2
-  , STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2
-  , STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2
-  , STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2
-  , STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2
-  , STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES
-  , STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES
-  , STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO
-  , STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO
-  , STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO
-  , STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO
-  , STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO
-  , STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO
-  , STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES
-  , STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO
-  , STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO
-  , STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO
-  , STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES
-  , STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO
-  , STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO
-  , STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO
-  , STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO
-  , STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES
-  , STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES
-  , STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO
-  , STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO
-  , STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO
-  , STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2
-  , STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2
-  , STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2
-  , STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2
-  , STRUCTURE_TYPE_FORMAT_PROPERTIES_2
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2
-  , STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2
-  , STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2
-  , STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2
-  , STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2
-  , STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2
-  , STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES
-  , STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO
-  , STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO
-  , STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO
-  , STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO
-  , STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO
-  , STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO
-  , STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO
-  , STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO
-  , STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES
-  , STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO
-  , STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO
-  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES ::
-    StructureType
-  #-}
-
-conNameStructureType :: String
-conNameStructureType = "StructureType"
-
-enumPrefixStructureType :: String
-enumPrefixStructureType = "STRUCTURE_TYPE_"
-
-showTableStructureType :: [(StructureType, String)]
-showTableStructureType =
-  [ (STRUCTURE_TYPE_APPLICATION_INFO, "APPLICATION_INFO")
-  ,
-    ( STRUCTURE_TYPE_INSTANCE_CREATE_INFO
-    , "INSTANCE_CREATE_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO
-    , "DEVICE_QUEUE_CREATE_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_DEVICE_CREATE_INFO
-    , "DEVICE_CREATE_INFO"
-    )
-  , (STRUCTURE_TYPE_SUBMIT_INFO, "SUBMIT_INFO")
-  ,
-    ( STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO
-    , "MEMORY_ALLOCATE_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_MAPPED_MEMORY_RANGE
-    , "MAPPED_MEMORY_RANGE"
-    )
-  , (STRUCTURE_TYPE_BIND_SPARSE_INFO, "BIND_SPARSE_INFO")
-  ,
-    ( STRUCTURE_TYPE_FENCE_CREATE_INFO
-    , "FENCE_CREATE_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO
-    , "SEMAPHORE_CREATE_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_EVENT_CREATE_INFO
-    , "EVENT_CREATE_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO
-    , "QUERY_POOL_CREATE_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_BUFFER_CREATE_INFO
-    , "BUFFER_CREATE_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO
-    , "BUFFER_VIEW_CREATE_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_IMAGE_CREATE_INFO
-    , "IMAGE_CREATE_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO
-    , "IMAGE_VIEW_CREATE_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO
-    , "SHADER_MODULE_CREATE_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO
-    , "PIPELINE_CACHE_CREATE_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO
-    , "PIPELINE_SHADER_STAGE_CREATE_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO
-    , "PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO
-    , "PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO
-    , "PIPELINE_TESSELLATION_STATE_CREATE_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO
-    , "PIPELINE_VIEWPORT_STATE_CREATE_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO
-    , "PIPELINE_RASTERIZATION_STATE_CREATE_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO
-    , "PIPELINE_MULTISAMPLE_STATE_CREATE_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO
-    , "PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO
-    , "PIPELINE_COLOR_BLEND_STATE_CREATE_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO
-    , "PIPELINE_DYNAMIC_STATE_CREATE_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO
-    , "GRAPHICS_PIPELINE_CREATE_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO
-    , "COMPUTE_PIPELINE_CREATE_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO
-    , "PIPELINE_LAYOUT_CREATE_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_SAMPLER_CREATE_INFO
-    , "SAMPLER_CREATE_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO
-    , "DESCRIPTOR_SET_LAYOUT_CREATE_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO
-    , "DESCRIPTOR_POOL_CREATE_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO
-    , "DESCRIPTOR_SET_ALLOCATE_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET
-    , "WRITE_DESCRIPTOR_SET"
-    )
-  ,
-    ( STRUCTURE_TYPE_COPY_DESCRIPTOR_SET
-    , "COPY_DESCRIPTOR_SET"
-    )
-  ,
-    ( STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO
-    , "FRAMEBUFFER_CREATE_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO
-    , "RENDER_PASS_CREATE_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO
-    , "COMMAND_POOL_CREATE_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO
-    , "COMMAND_BUFFER_ALLOCATE_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO
-    , "COMMAND_BUFFER_INHERITANCE_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO
-    , "COMMAND_BUFFER_BEGIN_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO
-    , "RENDER_PASS_BEGIN_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER
-    , "BUFFER_MEMORY_BARRIER"
-    )
-  ,
-    ( STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER
-    , "IMAGE_MEMORY_BARRIER"
-    )
-  , (STRUCTURE_TYPE_MEMORY_BARRIER, "MEMORY_BARRIER")
-  ,
-    ( STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO
-    , "LOADER_INSTANCE_CREATE_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO
-    , "LOADER_DEVICE_CREATE_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_ROBUSTNESS_FEATURES_EXT
-    , "PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_ROBUSTNESS_FEATURES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_PROPERTIES_NV
-    , "PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_PROPERTIES_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_COOPERATIVE_MATRIX_FLEXIBLE_DIMENSIONS_PROPERTIES_NV
-    , "COOPERATIVE_MATRIX_FLEXIBLE_DIMENSIONS_PROPERTIES_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_FEATURES_NV
-    , "PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_FEATURES_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_HDR_VIVID_DYNAMIC_METADATA_HUAWEI
-    , "HDR_VIVID_DYNAMIC_METADATA_HUAWEI"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_HDR_VIVID_FEATURES_HUAWEI
-    , "PHYSICAL_DEVICE_HDR_VIVID_FEATURES_HUAWEI"
-    )
-  ,
-    ( STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLAMP_CONTROL_CREATE_INFO_EXT
-    , "PIPELINE_VIEWPORT_DEPTH_CLAMP_CONTROL_CREATE_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_CONTROL_FEATURES_EXT
-    , "PHYSICAL_DEVICE_DEPTH_CLAMP_CONTROL_FEATURES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_IMAGE_ALIGNMENT_CONTROL_CREATE_INFO_MESA
-    , "IMAGE_ALIGNMENT_CONTROL_CREATE_INFO_MESA"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_PROPERTIES_MESA
-    , "PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_PROPERTIES_MESA"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_FEATURES_MESA
-    , "PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_FEATURES_MESA"
-    )
-  ,
-    ( STRUCTURE_TYPE_GENERATED_COMMANDS_SHADER_INFO_EXT
-    , "GENERATED_COMMANDS_SHADER_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_GENERATED_COMMANDS_PIPELINE_INFO_EXT
-    , "GENERATED_COMMANDS_PIPELINE_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXT
-    , "INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_INFO_EXT
-    , "INDIRECT_EXECUTION_SET_SHADER_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXT
-    , "INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_SHADER_EXT
-    , "WRITE_INDIRECT_EXECUTION_SET_SHADER_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXT
-    , "WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_EXT
-    , "INDIRECT_COMMANDS_LAYOUT_TOKEN_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXT
-    , "INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_EXT
-    , "GENERATED_COMMANDS_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_CREATE_INFO_EXT
-    , "INDIRECT_EXECUTION_SET_CREATE_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXT
-    , "GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXT
-    , "PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXT
-    , "PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_VALIDATION_FEATURES_NV
-    , "PHYSICAL_DEVICE_RAY_TRACING_VALIDATION_FEATURES_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_REPLICATED_COMPOSITES_FEATURES_EXT
-    , "PHYSICAL_DEVICE_SHADER_REPLICATED_COMPOSITES_FEATURES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT16_VECTOR_FEATURES_NV
-    , "PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT16_VECTOR_FEATURES_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_VULKAN_PROPERTIES_KHR
-    , "PHYSICAL_DEVICE_LAYERED_API_VULKAN_PROPERTIES_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_KHR
-    , "PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_LIST_KHR
-    , "PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_LIST_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_PROPERTIES_KHR
-    , "PHYSICAL_DEVICE_MAINTENANCE_7_PROPERTIES_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_FEATURES_KHR
-    , "PHYSICAL_DEVICE_MAINTENANCE_7_FEATURES_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_COMMAND_BUFFER_INHERITANCE_FEATURES_NV
-    , "PHYSICAL_DEVICE_COMMAND_BUFFER_INHERITANCE_FEATURES_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_RELAXED_EXTENDED_INSTRUCTION_FEATURES_KHR
-    , "PHYSICAL_DEVICE_SHADER_RELAXED_EXTENDED_INSTRUCTION_FEATURES_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_RAW_ACCESS_CHAINS_FEATURES_NV
-    , "PHYSICAL_DEVICE_RAW_ACCESS_CHAINS_FEATURES_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_DISPLAY_MODE_STEREO_PROPERTIES_NV
-    , "DISPLAY_MODE_STEREO_PROPERTIES_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_DISPLAY_SURFACE_STEREO_CREATE_INFO_NV
-    , "DISPLAY_SURFACE_STEREO_CREATE_INFO_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_POOL_OVERALLOCATION_FEATURES_NV
-    , "PHYSICAL_DEVICE_DESCRIPTOR_POOL_OVERALLOCATION_FEATURES_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_BIND_DESCRIPTOR_BUFFER_EMBEDDED_SAMPLERS_INFO_EXT
-    , "BIND_DESCRIPTOR_BUFFER_EMBEDDED_SAMPLERS_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_SET_DESCRIPTOR_BUFFER_OFFSETS_INFO_EXT
-    , "SET_DESCRIPTOR_BUFFER_OFFSETS_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO_KHR
-    , "PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_INFO_KHR
-    , "PUSH_DESCRIPTOR_SET_INFO_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_PUSH_CONSTANTS_INFO_KHR
-    , "PUSH_CONSTANTS_INFO_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_BIND_DESCRIPTOR_SETS_INFO_KHR
-    , "BIND_DESCRIPTOR_SETS_INFO_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_BIND_MEMORY_STATUS_KHR
-    , "BIND_MEMORY_STATUS_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES_KHR
-    , "PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES_KHR
-    , "PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES_KHR
-    , "PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_KHR
-    , "CALIBRATED_TIMESTAMP_INFO_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_KHR
-    , "PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_KHR
-    , "PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_KHR
-    , "PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_KHR
-    , "PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_DRIVER_PROPERTIES_MSFT
-    , "PHYSICAL_DEVICE_LAYERED_DRIVER_PROPERTIES_MSFT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCREEN_BUFFER_FEATURES_QNX
-    , "PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCREEN_BUFFER_FEATURES_QNX"
-    )
-  ,
-    ( STRUCTURE_TYPE_EXTERNAL_FORMAT_QNX
-    , "EXTERNAL_FORMAT_QNX"
-    )
-  ,
-    ( STRUCTURE_TYPE_IMPORT_SCREEN_BUFFER_INFO_QNX
-    , "IMPORT_SCREEN_BUFFER_INFO_QNX"
-    )
-  ,
-    ( STRUCTURE_TYPE_SCREEN_BUFFER_FORMAT_PROPERTIES_QNX
-    , "SCREEN_BUFFER_FORMAT_PROPERTIES_QNX"
-    )
-  ,
-    ( STRUCTURE_TYPE_SCREEN_BUFFER_PROPERTIES_QNX
-    , "SCREEN_BUFFER_PROPERTIES_QNX"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES_KHR
-    , "PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_KHR
-    , "PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_KHR
-    , "PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_KHR
-    , "PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_FEATURES_EXT
-    , "PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_FEATURES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_CLAMP_FEATURES_QCOM
-    , "PHYSICAL_DEVICE_CUBIC_CLAMP_FEATURES_QCOM"
-    )
-  ,
-    ( STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_YCBCR_DEGAMMA_CREATE_INFO_QCOM
-    , "SAMPLER_YCBCR_CONVERSION_YCBCR_DEGAMMA_CREATE_INFO_QCOM"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_DEGAMMA_FEATURES_QCOM
-    , "PHYSICAL_DEVICE_YCBCR_DEGAMMA_FEATURES_QCOM"
-    )
-  ,
-    ( STRUCTURE_TYPE_BLIT_IMAGE_CUBIC_WEIGHTS_INFO_QCOM
-    , "BLIT_IMAGE_CUBIC_WEIGHTS_INFO_QCOM"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_WEIGHTS_FEATURES_QCOM
-    , "PHYSICAL_DEVICE_CUBIC_WEIGHTS_FEATURES_QCOM"
-    )
-  ,
-    ( STRUCTURE_TYPE_SAMPLER_CUBIC_WEIGHTS_CREATE_INFO_QCOM
-    , "SAMPLER_CUBIC_WEIGHTS_CREATE_INFO_QCOM"
-    )
-  ,
-    ( STRUCTURE_TYPE_SAMPLER_BLOCK_MATCH_WINDOW_CREATE_INFO_QCOM
-    , "SAMPLER_BLOCK_MATCH_WINDOW_CREATE_INFO_QCOM"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_PROPERTIES_QCOM
-    , "PHYSICAL_DEVICE_IMAGE_PROCESSING_2_PROPERTIES_QCOM"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_FEATURES_QCOM
-    , "PHYSICAL_DEVICE_IMAGE_PROCESSING_2_FEATURES_QCOM"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_PER_STAGE_DESCRIPTOR_SET_FEATURES_NV
-    , "PHYSICAL_DEVICE_PER_STAGE_DESCRIPTOR_SET_FEATURES_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_PROPERTIES_KHR
-    , "PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_PROPERTIES_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_KHR
-    , "PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_RENDER_AREAS_RENDER_PASS_BEGIN_INFO_QCOM
-    , "MULTIVIEW_PER_VIEW_RENDER_AREAS_RENDER_PASS_BEGIN_INFO_QCOM"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_RENDER_AREAS_FEATURES_QCOM
-    , "PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_RENDER_AREAS_FEATURES_QCOM"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_KHR
-    , "PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_KHR
-    , "COOPERATIVE_MATRIX_PROPERTIES_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_KHR
-    , "PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_LATENCY_SURFACE_CAPABILITIES_NV
-    , "LATENCY_SURFACE_CAPABILITIES_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_SWAPCHAIN_LATENCY_CREATE_INFO_NV
-    , "SWAPCHAIN_LATENCY_CREATE_INFO_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_OUT_OF_BAND_QUEUE_TYPE_INFO_NV
-    , "OUT_OF_BAND_QUEUE_TYPE_INFO_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_LATENCY_SUBMISSION_PRESENT_ID_NV
-    , "LATENCY_SUBMISSION_PRESENT_ID_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_LATENCY_TIMINGS_FRAME_REPORT_NV
-    , "LATENCY_TIMINGS_FRAME_REPORT_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_GET_LATENCY_MARKER_INFO_NV
-    , "GET_LATENCY_MARKER_INFO_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_SET_LATENCY_MARKER_INFO_NV
-    , "SET_LATENCY_MARKER_INFO_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_LATENCY_SLEEP_INFO_NV
-    , "LATENCY_SLEEP_INFO_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_LATENCY_SLEEP_MODE_INFO_NV
-    , "LATENCY_SLEEP_MODE_INFO_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_FEATURES_EXT
-    , "PHYSICAL_DEVICE_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_FEATURES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT
-    , "PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_PROPERTIES_ARM
-    , "PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_PROPERTIES_ARM"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM
-    , "PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM"
-    )
-  ,
-    ( STRUCTURE_TYPE_LAYER_SETTINGS_CREATE_INFO_EXT
-    , "LAYER_SETTINGS_CREATE_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_PROPERTIES_EXT
-    , "PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_PROPERTIES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_FEATURES_EXT
-    , "PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_FEATURES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT
-    , "MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT
-    , "PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_PROPERTIES_NV
-    , "PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_PROPERTIES_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_FEATURES_NV
-    , "PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_FEATURES_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV
-    , "PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV
-    , "PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_VIEWPORTS_FEATURES_QCOM
-    , "PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_VIEWPORTS_FEATURES_QCOM"
-    )
-  ,
-    ( STRUCTURE_TYPE_AMIGO_PROFILING_SUBMIT_INFO_SEC
-    , "AMIGO_PROFILING_SUBMIT_INFO_SEC"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_AMIGO_PROFILING_FEATURES_SEC
-    , "PHYSICAL_DEVICE_AMIGO_PROFILING_FEATURES_SEC"
-    )
-  ,
-    ( STRUCTURE_TYPE_TILE_PROPERTIES_QCOM
-    , "TILE_PROPERTIES_QCOM"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM
-    , "PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM"
-    )
-  ,
-    ( STRUCTURE_TYPE_PIPELINE_BINARY_HANDLES_INFO_KHR
-    , "PIPELINE_BINARY_HANDLES_INFO_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_DEVICE_PIPELINE_BINARY_INTERNAL_CACHE_CONTROL_KHR
-    , "DEVICE_PIPELINE_BINARY_INTERNAL_CACHE_CONTROL_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_PIPELINE_CREATE_INFO_KHR
-    , "PIPELINE_CREATE_INFO_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_PIPELINE_BINARY_DATA_INFO_KHR
-    , "PIPELINE_BINARY_DATA_INFO_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_RELEASE_CAPTURED_PIPELINE_DATA_INFO_KHR
-    , "RELEASE_CAPTURED_PIPELINE_DATA_INFO_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_BINARY_PROPERTIES_KHR
-    , "PHYSICAL_DEVICE_PIPELINE_BINARY_PROPERTIES_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_PIPELINE_BINARY_KEY_KHR
-    , "PIPELINE_BINARY_KEY_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_PIPELINE_BINARY_INFO_KHR
-    , "PIPELINE_BINARY_INFO_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_PIPELINE_BINARY_CREATE_INFO_KHR
-    , "PIPELINE_BINARY_CREATE_INFO_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_BINARY_FEATURES_KHR
-    , "PHYSICAL_DEVICE_PIPELINE_BINARY_FEATURES_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT
-    , "VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT
-    , "VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_SHADER_CREATE_INFO_EXT
-    , "SHADER_CREATE_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_PROPERTIES_EXT
-    , "PHYSICAL_DEVICE_SHADER_OBJECT_PROPERTIES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT
-    , "PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_POSITION_FETCH_FEATURES_KHR
-    , "PHYSICAL_DEVICE_RAY_TRACING_POSITION_FETCH_FEATURES_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_ANTI_LAG_PRESENTATION_INFO_AMD
-    , "ANTI_LAG_PRESENTATION_INFO_AMD"
-    )
-  ,
-    ( STRUCTURE_TYPE_ANTI_LAG_DATA_AMD
-    , "ANTI_LAG_DATA_AMD"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_ANTI_LAG_FEATURES_AMD
-    , "PHYSICAL_DEVICE_ANTI_LAG_FEATURES_AMD"
-    )
-  ,
-    ( STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO_KHR
-    , "BUFFER_USAGE_FLAGS_2_CREATE_INFO_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO_KHR
-    , "PIPELINE_CREATE_FLAGS_2_CREATE_INFO_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_KHR
-    , "IMAGE_SUBRESOURCE_2_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_KHR
-    , "SUBRESOURCE_LAYOUT_2_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO_KHR
-    , "DEVICE_IMAGE_SUBRESOURCE_INFO_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_RENDERING_AREA_INFO_KHR
-    , "RENDERING_AREA_INFO_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES_KHR
-    , "PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES_KHR
-    , "PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_RESOLVE_PROPERTIES_ANDROID
-    , "ANDROID_HARDWARE_BUFFER_FORMAT_RESOLVE_PROPERTIES_ANDROID"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_PROPERTIES_ANDROID
-    , "PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_PROPERTIES_ANDROID"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_FEATURES_ANDROID
-    , "PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_FEATURES_ANDROID"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT
-    , "PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT
-    , "PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_PRIVATE_DATA_INFO_NV
-    , "OPTICAL_FLOW_SESSION_CREATE_PRIVATE_DATA_INFO_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_OPTICAL_FLOW_EXECUTE_INFO_NV
-    , "OPTICAL_FLOW_EXECUTE_INFO_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_INFO_NV
-    , "OPTICAL_FLOW_SESSION_CREATE_INFO_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_OPTICAL_FLOW_IMAGE_FORMAT_PROPERTIES_NV
-    , "OPTICAL_FLOW_IMAGE_FORMAT_PROPERTIES_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_OPTICAL_FLOW_IMAGE_FORMAT_INFO_NV
-    , "OPTICAL_FLOW_IMAGE_FORMAT_INFO_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_PROPERTIES_NV
-    , "PHYSICAL_DEVICE_OPTICAL_FLOW_PROPERTIES_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_FEATURES_NV
-    , "PHYSICAL_DEVICE_OPTICAL_FLOW_FEATURES_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_EXT
-    , "PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_SHADER_MODULE_IDENTIFIER_EXT
-    , "SHADER_MODULE_IDENTIFIER_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_MODULE_IDENTIFIER_CREATE_INFO_EXT
-    , "PIPELINE_SHADER_STAGE_MODULE_IDENTIFIER_CREATE_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_PROPERTIES_EXT
-    , "PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_PROPERTIES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT
-    , "PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_LIST_LUNARG
-    , "DIRECT_DRIVER_LOADING_LIST_LUNARG"
-    )
-  ,
-    ( STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_INFO_LUNARG
-    , "DIRECT_DRIVER_LOADING_INFO_LUNARG"
-    )
-  ,
-    ( STRUCTURE_TYPE_RENDER_PASS_SUBPASS_FEEDBACK_CREATE_INFO_EXT
-    , "RENDER_PASS_SUBPASS_FEEDBACK_CREATE_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_RENDER_PASS_CREATION_FEEDBACK_CREATE_INFO_EXT
-    , "RENDER_PASS_CREATION_FEEDBACK_CREATE_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_RENDER_PASS_CREATION_CONTROL_EXT
-    , "RENDER_PASS_CREATION_CONTROL_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT
-    , "PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT
-    , "PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT
-    , "PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT
-    , "EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_PROPERTIES_EXT
-    , "PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_PROPERTIES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_FEATURES_EXT
-    , "PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_FEATURES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_IMAGE_VIEW_SAMPLE_WEIGHT_CREATE_INFO_QCOM
-    , "IMAGE_VIEW_SAMPLE_WEIGHT_CREATE_INFO_QCOM"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_PROPERTIES_QCOM
-    , "PHYSICAL_DEVICE_IMAGE_PROCESSING_PROPERTIES_QCOM"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM
-    , "PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT
-    , "PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MAXIMAL_RECONVERGENCE_FEATURES_KHR
-    , "PHYSICAL_DEVICE_SHADER_MAXIMAL_RECONVERGENCE_FEATURES_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV
-    , "PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_PIPELINE_INDIRECT_DEVICE_ADDRESS_INFO_NV
-    , "PIPELINE_INDIRECT_DEVICE_ADDRESS_INFO_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_COMPUTE_PIPELINE_INDIRECT_BUFFER_INFO_NV
-    , "COMPUTE_PIPELINE_INDIRECT_BUFFER_INFO_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_COMPUTE_FEATURES_NV
-    , "PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_COMPUTE_FEATURES_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NV
-    , "PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV
-    , "PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_NV
-    , "PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV
-    , "PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM
-    , "SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM
-    , "PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM
-    , "PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM"
-    )
-  ,
-    ( STRUCTURE_TYPE_RENDER_PASS_STRIPE_SUBMIT_INFO_ARM
-    , "RENDER_PASS_STRIPE_SUBMIT_INFO_ARM"
-    )
-  ,
-    ( STRUCTURE_TYPE_RENDER_PASS_STRIPE_INFO_ARM
-    , "RENDER_PASS_STRIPE_INFO_ARM"
-    )
-  ,
-    ( STRUCTURE_TYPE_RENDER_PASS_STRIPE_BEGIN_INFO_ARM
-    , "RENDER_PASS_STRIPE_BEGIN_INFO_ARM"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_PROPERTIES_ARM
-    , "PHYSICAL_DEVICE_RENDER_PASS_STRIPED_PROPERTIES_ARM"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_FEATURES_ARM
-    , "PHYSICAL_DEVICE_RENDER_PASS_STRIPED_FEATURES_ARM"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT
-    , "PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT
-    , "PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE
-    , "DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE"
-    )
-  ,
-    ( STRUCTURE_TYPE_DESCRIPTOR_SET_BINDING_REFERENCE_VALVE
-    , "DESCRIPTOR_SET_BINDING_REFERENCE_VALVE"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE
-    , "PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE"
-    )
-  ,
-    ( STRUCTURE_TYPE_IMAGE_VIEW_SLICED_CREATE_INFO_EXT
-    , "IMAGE_VIEW_SLICED_CREATE_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_SLICED_VIEW_OF_3D_FEATURES_EXT
-    , "PHYSICAL_DEVICE_IMAGE_SLICED_VIEW_OF_3D_FEATURES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_PROPERTIES_ARM
-    , "PHYSICAL_DEVICE_SCHEDULING_CONTROLS_PROPERTIES_ARM"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_FEATURES_ARM
-    , "PHYSICAL_DEVICE_SCHEDULING_CONTROLS_FEATURES_ARM"
-    )
-  ,
-    ( STRUCTURE_TYPE_DEVICE_QUEUE_SHADER_CORE_CONTROL_CREATE_INFO_ARM
-    , "DEVICE_QUEUE_SHADER_CORE_CONTROL_CREATE_INFO_ARM"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES_KHR
-    , "PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_ARM
-    , "PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_ARM"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT
-    , "PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT
-    , "SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT
-    , "PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_VRS_FEATURES_HUAWEI
-    , "PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_VRS_FEATURES_HUAWEI"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI
-    , "PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI
-    , "PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI"
-    )
-  ,
-    ( STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_DISPLACEMENT_MICROMAP_NV
-    , "ACCELERATION_STRUCTURE_TRIANGLES_DISPLACEMENT_MICROMAP_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_PROPERTIES_NV
-    , "PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_PROPERTIES_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_FEATURES_NV
-    , "PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_FEATURES_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT
-    , "ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_MICROMAP_BUILD_SIZES_INFO_EXT
-    , "MICROMAP_BUILD_SIZES_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_MICROMAP_CREATE_INFO_EXT
-    , "MICROMAP_CREATE_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_PROPERTIES_EXT
-    , "PHYSICAL_DEVICE_OPACITY_MICROMAP_PROPERTIES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_EXT
-    , "PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_COPY_MEMORY_TO_MICROMAP_INFO_EXT
-    , "COPY_MEMORY_TO_MICROMAP_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_COPY_MICROMAP_TO_MEMORY_INFO_EXT
-    , "COPY_MICROMAP_TO_MEMORY_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_COPY_MICROMAP_INFO_EXT
-    , "COPY_MICROMAP_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_MICROMAP_VERSION_INFO_EXT
-    , "MICROMAP_VERSION_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_MICROMAP_BUILD_INFO_EXT
-    , "MICROMAP_BUILD_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_PROPERTIES_EXT
-    , "PHYSICAL_DEVICE_SHADER_TILE_IMAGE_PROPERTIES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_FEATURES_EXT
-    , "PHYSICAL_DEVICE_SHADER_TILE_IMAGE_FEATURES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT
-    , "PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT
-    , "PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT"
-    )
-  ,
-    ( 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_PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR
-    , "PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT
-    , "PHYSICAL_DEVICE_PRIMITIVES_GENERATED_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"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT
-    , "PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_INFO_EXT
-    , "MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_SUBPASS_RESOLVE_PERFORMANCE_QUERY_EXT
-    , "SUBPASS_RESOLVE_PERFORMANCE_QUERY_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_FEATURES_EXT
-    , "PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_FEATURES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_FRAME_BOUNDARY_EXT
-    , "FRAME_BOUNDARY_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAME_BOUNDARY_FEATURES_EXT
-    , "PHYSICAL_DEVICE_FRAME_BOUNDARY_FEATURES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT
-    , "PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PIPELINE_PROPERTIES_IDENTIFIER_EXT
-    , "PIPELINE_PROPERTIES_IDENTIFIER_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV
-    , "PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_MEMORY_GET_REMOTE_ADDRESS_INFO_NV
-    , "MEMORY_GET_REMOTE_ADDRESS_INFO_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI
-    , "PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_PROPERTIES_HUAWEI
-    , "PHYSICAL_DEVICE_SUBPASS_SHADING_PROPERTIES_HUAWEI"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI
-    , "PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI"
-    )
-  ,
-    ( STRUCTURE_TYPE_SUBPASS_SHADING_PIPELINE_CREATE_INFO_HUAWEI
-    , "SUBPASS_SHADING_PIPELINE_CREATE_INFO_HUAWEI"
-    )
-  ,
-    ( STRUCTURE_TYPE_BUFFER_COLLECTION_CONSTRAINTS_INFO_FUCHSIA
-    , "BUFFER_COLLECTION_CONSTRAINTS_INFO_FUCHSIA"
-    )
-  ,
-    ( STRUCTURE_TYPE_SYSMEM_COLOR_SPACE_FUCHSIA
-    , "SYSMEM_COLOR_SPACE_FUCHSIA"
-    )
-  ,
-    ( STRUCTURE_TYPE_IMAGE_FORMAT_CONSTRAINTS_INFO_FUCHSIA
-    , "IMAGE_FORMAT_CONSTRAINTS_INFO_FUCHSIA"
-    )
-  ,
-    ( STRUCTURE_TYPE_IMAGE_CONSTRAINTS_INFO_FUCHSIA
-    , "IMAGE_CONSTRAINTS_INFO_FUCHSIA"
-    )
-  ,
-    ( STRUCTURE_TYPE_BUFFER_COLLECTION_BUFFER_CREATE_INFO_FUCHSIA
-    , "BUFFER_COLLECTION_BUFFER_CREATE_INFO_FUCHSIA"
-    )
-  ,
-    ( STRUCTURE_TYPE_BUFFER_CONSTRAINTS_INFO_FUCHSIA
-    , "BUFFER_CONSTRAINTS_INFO_FUCHSIA"
-    )
-  ,
-    ( STRUCTURE_TYPE_BUFFER_COLLECTION_PROPERTIES_FUCHSIA
-    , "BUFFER_COLLECTION_PROPERTIES_FUCHSIA"
-    )
-  ,
-    ( STRUCTURE_TYPE_BUFFER_COLLECTION_IMAGE_CREATE_INFO_FUCHSIA
-    , "BUFFER_COLLECTION_IMAGE_CREATE_INFO_FUCHSIA"
-    )
-  ,
-    ( STRUCTURE_TYPE_IMPORT_MEMORY_BUFFER_COLLECTION_FUCHSIA
-    , "IMPORT_MEMORY_BUFFER_COLLECTION_FUCHSIA"
-    )
-  ,
-    ( STRUCTURE_TYPE_BUFFER_COLLECTION_CREATE_INFO_FUCHSIA
-    , "BUFFER_COLLECTION_CREATE_INFO_FUCHSIA"
-    )
-  ,
-    ( STRUCTURE_TYPE_SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA
-    , "SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA"
-    )
-  ,
-    ( STRUCTURE_TYPE_IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA
-    , "IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA"
-    )
-  ,
-    ( STRUCTURE_TYPE_MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA
-    , "MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA"
-    )
-  ,
-    ( STRUCTURE_TYPE_MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA
-    , "MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA"
-    )
-  ,
-    ( STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA
-    , "IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_EXT
-    , "PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT
-    , "PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLIP_CONTROL_CREATE_INFO_EXT
-    , "PIPELINE_VIEWPORT_DEPTH_CLIP_CONTROL_CREATE_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT
-    , "PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_DEVICE_ADDRESS_BINDING_CALLBACK_DATA_EXT
-    , "DEVICE_ADDRESS_BINDING_CALLBACK_DATA_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_ADDRESS_BINDING_REPORT_FEATURES_EXT
-    , "PHYSICAL_DEVICE_ADDRESS_BINDING_REPORT_FEATURES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DRM_PROPERTIES_EXT
-    , "PHYSICAL_DEVICE_DRM_PROPERTIES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT
-    , "PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT
-    , "DIRECTFB_SURFACE_CREATE_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT
-    , "PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_DEVICE_FAULT_INFO_EXT
-    , "DEVICE_FAULT_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_DEVICE_FAULT_COUNTS_EXT
-    , "DEVICE_FAULT_COUNTS_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_FEATURES_EXT
-    , "PHYSICAL_DEVICE_FAULT_FEATURES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT
-    , "PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT
-    , "PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT
-    , "IMAGE_COMPRESSION_PROPERTIES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT
-    , "IMAGE_COMPRESSION_CONTROL_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT
-    , "PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR
-    , "PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR"
-    )
-  ,
-    ( 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"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT
-    , "PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT
-    , "PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_EXT
-    , "PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT
-    , "PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MOTION_INFO_NV
-    , "ACCELERATION_STRUCTURE_MOTION_INFO_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV
-    , "PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV
-    , "ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV
-    , "PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV
-    , "PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV
-    , "PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR
-    , "PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_PROPERTIES_KHR
-    , "PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_PROPERTIES_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR
-    , "PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_FEATURES_AMD
-    , "PHYSICAL_DEVICE_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_FEATURES_AMD"
-    )
-  ,
-    ( STRUCTURE_TYPE_GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT
-    , "GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT
-    , "PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT
-    , "PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT
-    , "ACCELERATION_STRUCTURE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_PUSH_DESCRIPTOR_BUFFER_HANDLE_EXT
-    , "DESCRIPTOR_BUFFER_BINDING_PUSH_DESCRIPTOR_BUFFER_HANDLE_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_INFO_EXT
-    , "DESCRIPTOR_BUFFER_BINDING_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_OPAQUE_CAPTURE_DESCRIPTOR_DATA_CREATE_INFO_EXT
-    , "OPAQUE_CAPTURE_DESCRIPTOR_DATA_CREATE_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_SAMPLER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT
-    , "SAMPLER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_IMAGE_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_EXT
-    , "IMAGE_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_IMAGE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT
-    , "IMAGE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_BUFFER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT
-    , "BUFFER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_DESCRIPTOR_GET_INFO_EXT
-    , "DESCRIPTOR_GET_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_DESCRIPTOR_ADDRESS_INFO_EXT
-    , "DESCRIPTOR_ADDRESS_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT
-    , "PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT
-    , "PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT
-    , "PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_IMPORT_METAL_SHARED_EVENT_INFO_EXT
-    , "IMPORT_METAL_SHARED_EVENT_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_EXPORT_METAL_SHARED_EVENT_INFO_EXT
-    , "EXPORT_METAL_SHARED_EVENT_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_IMPORT_METAL_IO_SURFACE_INFO_EXT
-    , "IMPORT_METAL_IO_SURFACE_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_EXPORT_METAL_IO_SURFACE_INFO_EXT
-    , "EXPORT_METAL_IO_SURFACE_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_IMPORT_METAL_TEXTURE_INFO_EXT
-    , "IMPORT_METAL_TEXTURE_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_EXPORT_METAL_TEXTURE_INFO_EXT
-    , "EXPORT_METAL_TEXTURE_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_IMPORT_METAL_BUFFER_INFO_EXT
-    , "IMPORT_METAL_BUFFER_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_EXPORT_METAL_BUFFER_INFO_EXT
-    , "EXPORT_METAL_BUFFER_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_EXPORT_METAL_COMMAND_QUEUE_INFO_EXT
-    , "EXPORT_METAL_COMMAND_QUEUE_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_EXPORT_METAL_DEVICE_INFO_EXT
-    , "EXPORT_METAL_DEVICE_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_EXPORT_METAL_OBJECTS_INFO_EXT
-    , "EXPORT_METAL_OBJECTS_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_EXPORT_METAL_OBJECT_CREATE_INFO_EXT
-    , "EXPORT_METAL_OBJECT_CREATE_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_QUERY_LOW_LATENCY_SUPPORT_NV
-    , "QUERY_LOW_LATENCY_SUPPORT_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_PROPERTIES_NV
-    , "PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_PROPERTIES_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_FEATURES_NV
-    , "PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_FEATURES_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_CUDA_LAUNCH_INFO_NV
-    , "CUDA_LAUNCH_INFO_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_CUDA_FUNCTION_CREATE_INFO_NV
-    , "CUDA_FUNCTION_CREATE_INFO_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_CUDA_MODULE_CREATE_INFO_NV
-    , "CUDA_MODULE_CREATE_INFO_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_PRESENT_ID_FEATURES_KHR
-    , "PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR"
-    )
-  , (STRUCTURE_TYPE_PRESENT_ID_KHR, "PRESENT_ID_KHR")
-  ,
-    ( STRUCTURE_TYPE_SWAPCHAIN_PRESENT_BARRIER_CREATE_INFO_NV
-    , "SWAPCHAIN_PRESENT_BARRIER_CREATE_INFO_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_BARRIER_NV
-    , "SURFACE_CAPABILITIES_PRESENT_BARRIER_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_BARRIER_FEATURES_NV
-    , "PHYSICAL_DEVICE_PRESENT_BARRIER_FEATURES_NV"
-    )
-  ,
-    ( 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"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT
-    , "PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT
-    , "SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT
-    , "PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT
-    , "PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT
-    , "DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT
-    , "DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT
-    , "PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_DEPTH_BIAS_REPRESENTATION_INFO_EXT
-    , "DEPTH_BIAS_REPRESENTATION_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_DEPTH_BIAS_INFO_EXT
-    , "DEPTH_BIAS_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_BIAS_CONTROL_FEATURES_EXT
-    , "PHYSICAL_DEVICE_DEPTH_BIAS_CONTROL_FEATURES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM
-    , "RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM"
-    )
-  ,
-    ( 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_FEATURES_EXT
-    , "PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV
-    , "COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV
-    , "PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV
-    , "PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV
-    , "GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV
-    , "GENERATED_COMMANDS_INFO_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV
-    , "INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV
-    , "INDIRECT_COMMANDS_LAYOUT_TOKEN_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV
-    , "GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV
-    , "GRAPHICS_SHADER_GROUP_CREATE_INFO_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV
-    , "PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_EXT
-    , "RELEASE_SWAPCHAIN_IMAGES_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT
-    , "SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_EXT
-    , "SWAPCHAIN_PRESENT_MODE_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT
-    , "SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT
-    , "SWAPCHAIN_PRESENT_FENCE_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT
-    , "PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_EXT
-    , "SURFACE_PRESENT_MODE_COMPATIBILITY_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_EXT
-    , "SURFACE_PRESENT_SCALING_CAPABILITIES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_SURFACE_PRESENT_MODE_EXT
-    , "SURFACE_PRESENT_MODE_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT
-    , "PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_MEMORY_MAP_PLACED_INFO_EXT
-    , "MEMORY_MAP_PLACED_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_MAP_MEMORY_PLACED_PROPERTIES_EXT
-    , "PHYSICAL_DEVICE_MAP_MEMORY_PLACED_PROPERTIES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_MAP_MEMORY_PLACED_FEATURES_EXT
-    , "PHYSICAL_DEVICE_MAP_MEMORY_PLACED_FEATURES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_MEMORY_UNMAP_INFO_KHR
-    , "MEMORY_UNMAP_INFO_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_MEMORY_MAP_INFO_KHR
-    , "MEMORY_MAP_INFO_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY_EXT
-    , "HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE_EXT
-    , "SUBRESOURCE_HOST_MEMCPY_SIZE_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO_EXT
-    , "COPY_IMAGE_TO_IMAGE_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO_EXT
-    , "HOST_IMAGE_LAYOUT_TRANSITION_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO_EXT
-    , "COPY_MEMORY_TO_IMAGE_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO_EXT
-    , "COPY_IMAGE_TO_MEMORY_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY_EXT
-    , "IMAGE_TO_MEMORY_COPY_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY_EXT
-    , "MEMORY_TO_IMAGE_COPY_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES_EXT
-    , "PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES_EXT
-    , "PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR
-    , "PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR
-    , "PIPELINE_EXECUTABLE_STATISTIC_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR
-    , "PIPELINE_EXECUTABLE_INFO_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR
-    , "PIPELINE_EXECUTABLE_PROPERTIES_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_PIPELINE_INFO_KHR
-    , "PIPELINE_INFO_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR
-    , "PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT
-    , "PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT
-    , "PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT
-    , "HEADLESS_SURFACE_CREATE_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT
-    , "SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT
-    , "SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT
-    , "SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT
-    , "PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT
-    , "PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT
-    , "PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT
-    , "PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT
-    , "PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV
-    , "FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV
-    , "PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV
-    , "PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV
-    , "PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV
-    , "COOPERATIVE_MATRIX_PROPERTIES_NV"
-    )
-  ,
-    ( 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_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"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV
-    , "PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR
-    , "SURFACE_PROTECTED_CAPABILITIES_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT
-    , "MEMORY_PRIORITY_ALLOCATE_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT
-    , "PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT
-    , "PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_QUAD_CONTROL_FEATURES_KHR
-    , "PHYSICAL_DEVICE_SHADER_QUAD_CONTROL_FEATURES_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT
-    , "PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_RENDERING_INPUT_ATTACHMENT_INDEX_INFO_KHR
-    , "RENDERING_INPUT_ATTACHMENT_INDEX_INFO_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_RENDERING_ATTACHMENT_LOCATION_INFO_KHR
-    , "RENDERING_ATTACHMENT_LOCATION_INFO_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES_KHR
-    , "PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD
-    , "PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD
-    , "PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD"
-    )
-  ,
-    ( STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR
-    , "RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR
-    , "PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR
-    , "PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR
-    , "PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR
-    , "PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR
-    , "FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT
-    , "RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT
-    , "RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT
-    , "PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT"
-    )
-  ,
-    ( 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_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"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT
-    , "PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL
-    , "PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL"
-    )
-  ,
-    ( STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL
-    , "PERFORMANCE_OVERRIDE_INFO_INTEL"
-    )
-  ,
-    ( STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL
-    , "PERFORMANCE_STREAM_MARKER_INFO_INTEL"
-    )
-  ,
-    ( STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL
-    , "PERFORMANCE_MARKER_INFO_INTEL"
-    )
-  ,
-    ( STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL
-    , "INITIALIZE_PERFORMANCE_API_INFO_INTEL"
-    )
-  ,
-    ( STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL
-    , "QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL
-    , "PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL"
-    )
-  ,
-    ( 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_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV
-    , "QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_CHECKPOINT_DATA_NV
-    , "CHECKPOINT_DATA_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV
-    , "PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV
-    , "PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV
-    , "PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV
-    , "PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV
-    , "PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP
-    , "PRESENT_FRAME_TOKEN_GGP"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT
-    , "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_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD
-    , "PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR
-    , "PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR"
-    )
-  ,
-    ( 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_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT
-    , "FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT
-    , "PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV
-    , "PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV
-    , "PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV
-    , "ACCELERATION_STRUCTURE_INFO_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV
-    , "RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV
-    , "PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV
-    , "ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV
-    , "WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV
-    , "BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV"
-    )
-  , (STRUCTURE_TYPE_GEOMETRY_AABB_NV, "GEOMETRY_AABB_NV")
-  ,
-    ( STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV
-    , "GEOMETRY_TRIANGLES_NV"
-    )
-  , (STRUCTURE_TYPE_GEOMETRY_NV, "GEOMETRY_NV")
-  ,
-    ( STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV
-    , "ACCELERATION_STRUCTURE_CREATE_INFO_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV
-    , "RAY_TRACING_PIPELINE_CREATE_INFO_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV
-    , "PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV
-    , "PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV
-    , "PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV
-    , "PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR
-    , "PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR
-    , "PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT
-    , "SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT
-    , "VALIDATION_CACHE_CREATE_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT
-    , "DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT
-    , "IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT
-    , "IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT
-    , "IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT
-    , "PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT
-    , "DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV
-    , "PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV
-    , "PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV
-    , "PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR
-    , "PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR
-    , "RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR
-    , "RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR
-    , "RAY_TRACING_PIPELINE_CREATE_INFO_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR
-    , "PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR
-    , "PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR
-    , "ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR
-    , "ACCELERATION_STRUCTURE_CREATE_INFO_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR
-    , "PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR
-    , "PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR
-    , "COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR
-    , "COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR
-    , "COPY_ACCELERATION_STRUCTURE_INFO_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR
-    , "ACCELERATION_STRUCTURE_VERSION_INFO_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR
-    , "ACCELERATION_STRUCTURE_GEOMETRY_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR
-    , "ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR
-    , "ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR
-    , "ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR
-    , "ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR
-    , "ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR
-    , "WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV
-    , "PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT
-    , "PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT
-    , "PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT
-    , "PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT
-    , "MULTISAMPLE_PROPERTIES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT
-    , "PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT"
-    )
-  ,
-    ( 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_ATTACHMENT_SAMPLE_COUNT_INFO_AMD
-    , "ATTACHMENT_SAMPLE_COUNT_INFO_AMD"
-    )
-  ,
-    ( STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_NODE_CREATE_INFO_AMDX
-    , "PIPELINE_SHADER_STAGE_NODE_CREATE_INFO_AMDX"
-    )
-  ,
-    ( STRUCTURE_TYPE_EXECUTION_GRAPH_PIPELINE_CREATE_INFO_AMDX
-    , "EXECUTION_GRAPH_PIPELINE_CREATE_INFO_AMDX"
-    )
-  ,
-    ( STRUCTURE_TYPE_EXECUTION_GRAPH_PIPELINE_SCRATCH_SIZE_AMDX
-    , "EXECUTION_GRAPH_PIPELINE_SCRATCH_SIZE_AMDX"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ENQUEUE_PROPERTIES_AMDX
-    , "PHYSICAL_DEVICE_SHADER_ENQUEUE_PROPERTIES_AMDX"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ENQUEUE_FEATURES_AMDX
-    , "PHYSICAL_DEVICE_SHADER_ENQUEUE_FEATURES_AMDX"
-    )
-  ,
-    ( STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID
-    , "ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID"
-    )
-  ,
-    ( STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID
-    , "EXTERNAL_FORMAT_ANDROID"
-    )
-  ,
-    ( STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID
-    , "MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID"
-    )
-  ,
-    ( STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID
-    , "IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID"
-    )
-  ,
-    ( STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID
-    , "ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID"
-    )
-  ,
-    ( STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID
-    , "ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID"
-    )
-  ,
-    ( STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID
-    , "ANDROID_HARDWARE_BUFFER_USAGE_ANDROID"
-    )
-  ,
-    ( STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT
-    , "DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT
-    , "DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT
-    , "DEBUG_UTILS_LABEL_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT
-    , "DEBUG_UTILS_OBJECT_TAG_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT
-    , "DEBUG_UTILS_OBJECT_NAME_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK
-    , "MACOS_SURFACE_CREATE_INFO_MVK"
-    )
-  ,
-    ( STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK
-    , "IOS_SURFACE_CREATE_INFO_MVK"
-    )
-  ,
-    ( STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR
-    , "DISPLAY_PLANE_CAPABILITIES_2_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR
-    , "DISPLAY_PLANE_INFO_2_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR
-    , "DISPLAY_MODE_PROPERTIES_2_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR
-    , "DISPLAY_PLANE_PROPERTIES_2_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR
-    , "DISPLAY_PROPERTIES_2_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR
-    , "SURFACE_FORMAT_2_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR
-    , "SURFACE_CAPABILITIES_2_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR
-    , "PHYSICAL_DEVICE_SURFACE_INFO_2_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_PERFORMANCE_QUERY_RESERVATION_INFO_KHR
-    , "PERFORMANCE_QUERY_RESERVATION_INFO_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR
-    , "PERFORMANCE_COUNTER_DESCRIPTION_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR
-    , "PERFORMANCE_COUNTER_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR
-    , "ACQUIRE_PROFILING_LOCK_INFO_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR
-    , "PERFORMANCE_QUERY_SUBMIT_INFO_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR
-    , "QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR
-    , "PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR
-    , "PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR
-    , "FENCE_GET_FD_INFO_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR
-    , "IMPORT_FENCE_FD_INFO_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR
-    , "FENCE_GET_WIN32_HANDLE_INFO_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR
-    , "EXPORT_FENCE_WIN32_HANDLE_INFO_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR
-    , "IMPORT_FENCE_WIN32_HANDLE_INFO_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR
-    , "SHARED_PRESENT_SURFACE_CAPABILITIES_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_RELAXED_LINE_RASTERIZATION_FEATURES_IMG
-    , "PHYSICAL_DEVICE_RELAXED_LINE_RASTERIZATION_FEATURES_IMG"
-    )
-  , (STRUCTURE_TYPE_HDR_METADATA_EXT, "HDR_METADATA_EXT")
-  ,
-    ( STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT
-    , "PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT
-    , "PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT
-    , "PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT
-    , "PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT
-    , "PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT
-    , "PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV
-    , "PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX
-    , "MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX
-    , "PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX"
-    )
-  ,
-    ( STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE
-    , "PRESENT_TIMES_INFO_GOOGLE"
-    )
-  ,
-    ( STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT
-    , "SWAPCHAIN_COUNTER_CREATE_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT
-    , "DISPLAY_EVENT_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT
-    , "DEVICE_EVENT_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT
-    , "DISPLAY_POWER_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT
-    , "SURFACE_CAPABILITIES_2_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV
-    , "PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_PRESENT_REGIONS_KHR
-    , "PRESENT_REGIONS_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT
-    , "CONDITIONAL_RENDERING_BEGIN_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT
-    , "PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT
-    , "COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR
-    , "PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR
-    , "SEMAPHORE_GET_FD_INFO_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR
-    , "IMPORT_SEMAPHORE_FD_INFO_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR
-    , "SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR
-    , "D3D12_FENCE_SUBMIT_INFO_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR
-    , "EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR
-    , "IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR
-    , "WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR
-    , "MEMORY_GET_FD_INFO_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR
-    , "MEMORY_FD_PROPERTIES_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR
-    , "IMPORT_MEMORY_FD_INFO_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR
-    , "MEMORY_GET_WIN32_HANDLE_INFO_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR
-    , "MEMORY_WIN32_HANDLE_PROPERTIES_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR
-    , "EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR
-    , "IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES_EXT
-    , "PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT
-    , "PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT
-    , "PIPELINE_ROBUSTNESS_CREATE_INFO_EXT"
-    )
-  ,
-    ( 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_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"
-    )
-  ,
-    ( STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP
-    , "STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP"
-    )
-  ,
-    ( 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_MODULE_TEXTURING_MODE_CREATE_INFO_NVX
-    , "CU_MODULE_TEXTURING_MODE_CREATE_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"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT
-    , "PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT
-    , "PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV
-    , "DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV
-    , "DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV
-    , "DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV"
-    )
-  ,
-    ( STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT
-    , "DEBUG_MARKER_MARKER_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT
-    , "DEBUG_MARKER_OBJECT_TAG_INFO_EXT"
-    )
-  ,
-    ( STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT
-    , "DEBUG_MARKER_OBJECT_NAME_INFO_EXT"
-    )
-  ,
-    ( 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_PIPELINE_OFFLINE_CREATE_INFO
-    , "PIPELINE_OFFLINE_CREATE_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_FAULT_CALLBACK_INFO
-    , "FAULT_CALLBACK_INFO"
-    )
-  , (STRUCTURE_TYPE_FAULT_DATA, "FAULT_DATA")
-  ,
-    ( STRUCTURE_TYPE_PIPELINE_POOL_SIZE
-    , "PIPELINE_POOL_SIZE"
-    )
-  ,
-    ( STRUCTURE_TYPE_COMMAND_POOL_MEMORY_CONSUMPTION
-    , "COMMAND_POOL_MEMORY_CONSUMPTION"
-    )
-  ,
-    ( STRUCTURE_TYPE_COMMAND_POOL_MEMORY_RESERVATION_CREATE_INFO
-    , "COMMAND_POOL_MEMORY_RESERVATION_CREATE_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_DEVICE_OBJECT_RESERVATION_CREATE_INFO
-    , "DEVICE_OBJECT_RESERVATION_CREATE_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_SC_1_0_PROPERTIES
-    , "PHYSICAL_DEVICE_VULKAN_SC_1_0_PROPERTIES"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_SC_1_0_FEATURES
-    , "PHYSICAL_DEVICE_VULKAN_SC_1_0_FEATURES"
-    )
-  ,
-    ( 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"
-    )
-  ,
-    ( STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO
-    , "BUFFER_DEVICE_ADDRESS_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES
-    , "PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES"
-    )
-  ,
-    ( STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO
-    , "SEMAPHORE_SIGNAL_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO
-    , "SEMAPHORE_WAIT_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO
-    , "TIMELINE_SEMAPHORE_SUBMIT_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO
-    , "SEMAPHORE_TYPE_CREATE_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES
-    , "PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES
-    , "PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES
-    , "PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES"
-    )
-  ,
-    ( STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT
-    , "ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT"
-    )
-  ,
-    ( STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT
-    , "ATTACHMENT_REFERENCE_STENCIL_LAYOUT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES
-    , "PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES
-    , "PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES
-    , "PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES"
-    )
-  ,
-    ( STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO
-    , "RENDER_PASS_ATTACHMENT_BEGIN_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO
-    , "FRAMEBUFFER_ATTACHMENT_IMAGE_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO
-    , "FRAMEBUFFER_ATTACHMENTS_CREATE_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES
-    , "PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES
-    , "PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES"
-    )
-  ,
-    ( STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO
-    , "SAMPLER_REDUCTION_MODE_CREATE_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES
-    , "PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES"
-    )
-  ,
-    ( STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO
-    , "IMAGE_STENCIL_USAGE_CREATE_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES
-    , "PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES"
-    )
-  ,
-    ( STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE
-    , "SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES
-    , "PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES"
-    )
-  ,
-    ( STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT
-    , "DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT"
-    )
-  ,
-    ( STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO
-    , "DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES
-    , "PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES
-    , "PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES"
-    )
-  ,
-    ( STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO
-    , "DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES
-    , "PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES
-    , "PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES
-    , "PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES
-    , "PHYSICAL_DEVICE_DRIVER_PROPERTIES"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES
-    , "PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES"
-    )
-  , (STRUCTURE_TYPE_SUBPASS_END_INFO, "SUBPASS_END_INFO")
-  ,
-    ( STRUCTURE_TYPE_SUBPASS_BEGIN_INFO
-    , "SUBPASS_BEGIN_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2
-    , "RENDER_PASS_CREATE_INFO_2"
-    )
-  ,
-    ( STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2
-    , "SUBPASS_DEPENDENCY_2"
-    )
-  ,
-    ( STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2
-    , "SUBPASS_DESCRIPTION_2"
-    )
-  ,
-    ( STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2
-    , "ATTACHMENT_REFERENCE_2"
-    )
-  ,
-    ( STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2
-    , "ATTACHMENT_DESCRIPTION_2"
-    )
-  ,
-    ( STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO
-    , "IMAGE_FORMAT_LIST_CREATE_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES
-    , "PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES
-    , "PHYSICAL_DEVICE_VULKAN_1_2_FEATURES"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES
-    , "PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES
-    , "PHYSICAL_DEVICE_VULKAN_1_1_FEATURES"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES
-    , "PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES"
-    )
-  ,
-    ( STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT
-    , "DESCRIPTOR_SET_LAYOUT_SUPPORT"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES
-    , "PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES"
-    )
-  ,
-    ( STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES
-    , "EXTERNAL_SEMAPHORE_PROPERTIES"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO
-    , "PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO
-    , "EXPORT_SEMAPHORE_CREATE_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO
-    , "EXPORT_FENCE_CREATE_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES
-    , "EXTERNAL_FENCE_PROPERTIES"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO
-    , "PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO
-    , "EXPORT_MEMORY_ALLOCATE_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO
-    , "EXTERNAL_MEMORY_IMAGE_CREATE_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO
-    , "EXTERNAL_MEMORY_BUFFER_CREATE_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES
-    , "PHYSICAL_DEVICE_ID_PROPERTIES"
-    )
-  ,
-    ( STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES
-    , "EXTERNAL_BUFFER_PROPERTIES"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO
-    , "PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES
-    , "EXTERNAL_IMAGE_FORMAT_PROPERTIES"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO
-    , "PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO
-    , "DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES
-    , "SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES
-    , "PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES"
-    )
-  ,
-    ( STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO
-    , "IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO
-    , "BIND_IMAGE_PLANE_MEMORY_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO
-    , "SAMPLER_YCBCR_CONVERSION_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO
-    , "SAMPLER_YCBCR_CONVERSION_CREATE_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2
-    , "DEVICE_QUEUE_INFO_2"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES
-    , "PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES
-    , "PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES"
-    )
-  ,
-    ( STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO
-    , "PROTECTED_SUBMIT_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES
-    , "PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES
-    , "PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES
-    , "PHYSICAL_DEVICE_MULTIVIEW_FEATURES"
-    )
-  ,
-    ( STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO
-    , "RENDER_PASS_MULTIVIEW_CREATE_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO
-    , "PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO
-    , "IMAGE_VIEW_USAGE_CREATE_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO
-    , "RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES
-    , "PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2
-    , "PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2"
-    )
-  ,
-    ( STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2
-    , "SPARSE_IMAGE_FORMAT_PROPERTIES_2"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2
-    , "PHYSICAL_DEVICE_MEMORY_PROPERTIES_2"
-    )
-  ,
-    ( STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2
-    , "QUEUE_FAMILY_PROPERTIES_2"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2
-    , "PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2"
-    )
-  ,
-    ( STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2
-    , "IMAGE_FORMAT_PROPERTIES_2"
-    )
-  ,
-    ( STRUCTURE_TYPE_FORMAT_PROPERTIES_2
-    , "FORMAT_PROPERTIES_2"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2
-    , "PHYSICAL_DEVICE_PROPERTIES_2"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2
-    , "PHYSICAL_DEVICE_FEATURES_2"
-    )
-  ,
-    ( STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2
-    , "SPARSE_IMAGE_MEMORY_REQUIREMENTS_2"
-    )
-  ,
-    ( STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2
-    , "MEMORY_REQUIREMENTS_2"
-    )
-  ,
-    ( STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2
-    , "IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2"
-    )
-  ,
-    ( STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2
-    , "IMAGE_MEMORY_REQUIREMENTS_INFO_2"
-    )
-  ,
-    ( STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2
-    , "BUFFER_MEMORY_REQUIREMENTS_INFO_2"
-    )
-  ,
-    ( STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO
-    , "DEVICE_GROUP_DEVICE_CREATE_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES
-    , "PHYSICAL_DEVICE_GROUP_PROPERTIES"
-    )
-  ,
-    ( STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO
-    , "BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO
-    , "BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO
-    , "DEVICE_GROUP_BIND_SPARSE_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO
-    , "DEVICE_GROUP_SUBMIT_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO
-    , "DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO
-    , "DEVICE_GROUP_RENDER_PASS_BEGIN_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO
-    , "MEMORY_ALLOCATE_FLAGS_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO
-    , "MEMORY_DEDICATED_ALLOCATE_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS
-    , "MEMORY_DEDICATED_REQUIREMENTS"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES
-    , "PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES"
-    )
-  ,
-    ( STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO
-    , "BIND_IMAGE_MEMORY_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO
-    , "BIND_BUFFER_MEMORY_INFO"
-    )
-  ,
-    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES
-    , "PHYSICAL_DEVICE_SUBGROUP_PROPERTIES"
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_RESTART_INDEX_FEATURES_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_NEURAL_ACCELERATOR_STATISTICS_FEATURES_ARM
+                                                         , STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_NEURAL_STATISTICS_CREATE_INFO_ARM
+                                                         , STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_NEURAL_STATISTICS_CREATE_INFO_ARM
+                                                         , STRUCTURE_TYPE_THROTTLE_HINT_SUBMIT_INFO_SEC
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_THROTTLE_HINT_FEATURES_SEC
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MIXED_FLOAT_DOT_PRODUCT_FEATURES_VALVE
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_PARTITIONED_FEATURES_EXT
+                                                         , STRUCTURE_TYPE_QUEUE_FAMILY_OPTIMAL_IMAGE_TRANSFER_GRANULARITY_PROPERTIES_KHR
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_11_FEATURES_KHR
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_OCCUPANCY_PRIORITY_FEATURES_NV
+                                                         , STRUCTURE_TYPE_COMPUTE_OCCUPANCY_PRIORITY_PARAMETERS_NV
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_UNIFORM_BUFFER_UNSIZED_ARRAY_FEATURES_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CACHE_INCREMENTAL_MODE_FEATURES_SEC
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_LONG_VECTOR_PROPERTIES_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_LONG_VECTOR_FEATURES_EXT
+                                                         , STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SINGLE_NODE_CONNECTION_ARM
+                                                         , STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SINGLE_NODE_CREATE_INFO_ARM
+                                                         , STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_RESOURCE_INFO_IMAGE_LAYOUT_ARM
+                                                         , STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_OPTICAL_FLOW_CREATE_INFO_ARM
+                                                         , STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_OPTICAL_FLOW_DISPATCH_INFO_ARM
+                                                         , STRUCTURE_TYPE_DATA_GRAPH_OPTICAL_FLOW_IMAGE_FORMAT_PROPERTIES_ARM
+                                                         , STRUCTURE_TYPE_DATA_GRAPH_OPTICAL_FLOW_IMAGE_FORMAT_INFO_ARM
+                                                         , STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_OPTICAL_FLOW_PROPERTIES_ARM
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_OPTICAL_FLOW_FEATURES_ARM
+                                                         , STRUCTURE_TYPE_RESOLVE_IMAGE_MODE_INFO_KHR
+                                                         , STRUCTURE_TYPE_RENDERING_END_INFO_KHR
+                                                         , STRUCTURE_TYPE_RENDERING_ATTACHMENT_FLAGS_INFO_KHR
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_10_PROPERTIES_KHR
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_10_FEATURES_KHR
+                                                         , STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_BUILTIN_MODEL_CREATE_INFO_QCOM
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_MODEL_FEATURES_QCOM
+                                                         , STRUCTURE_TYPE_CUSTOM_RESOLVE_CREATE_INFO_EXT
+                                                         , STRUCTURE_TYPE_BEGIN_CUSTOM_RESOLVE_INFO_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_RESOLVE_FEATURES_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_64_BIT_INDEXING_FEATURES_EXT
+                                                         , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_KHR
+                                                         , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MICROMAP_DATA_KHR
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_PROPERTIES_KHR
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_KHR
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_KHR
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_DEVICE_MEMORY_FEATURES_EXT
+                                                         , STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_METERING_FEATURES_NV
+                                                         , STRUCTURE_TYPE_SET_PRESENT_CONFIG_NV
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_KHR
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_KHR
+                                                         , STRUCTURE_TYPE_PIPELINE_FRAGMENT_DENSITY_MAP_LAYERED_CREATE_INFO_VALVE
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_PROPERTIES_VALVE
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_FEATURES_VALVE
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_FORMAT_PACK_FEATURES_ARM
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_ROBUSTNESS_FEATURES_EXT
+                                                         , STRUCTURE_TYPE_SHADER_INSTRUMENTATION_METRIC_DESCRIPTION_ARM
+                                                         , STRUCTURE_TYPE_SHADER_INSTRUMENTATION_CREATE_INFO_ARM
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INSTRUMENTATION_PROPERTIES_ARM
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INSTRUMENTATION_FEATURES_ARM
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_KHR
+                                                         , STRUCTURE_TYPE_MEMORY_GET_METAL_HANDLE_INFO_EXT
+                                                         , STRUCTURE_TYPE_MEMORY_METAL_HANDLE_PROPERTIES_EXT
+                                                         , STRUCTURE_TYPE_IMPORT_MEMORY_METAL_HANDLE_INFO_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_OPACITY_MICROMAP_FEATURES_ARM
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_PROPERTIES_NV
+                                                         , STRUCTURE_TYPE_COOPERATIVE_MATRIX_FLEXIBLE_DIMENSIONS_PROPERTIES_NV
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_FEATURES_NV
+                                                         , STRUCTURE_TYPE_HDR_VIVID_DYNAMIC_METADATA_HUAWEI
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_HDR_VIVID_FEATURES_HUAWEI
+                                                         , STRUCTURE_TYPE_QUEUE_FAMILY_OWNERSHIP_TRANSFER_PROPERTIES_KHR
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_PROPERTIES_KHR
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_FEATURES_KHR
+                                                         , STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLAMP_CONTROL_CREATE_INFO_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_CONTROL_FEATURES_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_CONSTANT_BANK_PROPERTIES_NV
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_CONSTANT_BANK_FEATURES_NV
+                                                         , STRUCTURE_TYPE_PUSH_CONSTANT_BANK_INFO_NV
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FMA_FEATURES_KHR
+                                                         , STRUCTURE_TYPE_IMAGE_ALIGNMENT_CONTROL_CREATE_INFO_MESA
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_PROPERTIES_MESA
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_FEATURES_MESA
+                                                         , STRUCTURE_TYPE_MEMORY_BARRIER_ACCESS_FLAGS_3_KHR
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_8_FEATURES_KHR
+                                                         , STRUCTURE_TYPE_DEVICE_FAULT_DEBUG_INFO_KHR
+                                                         , STRUCTURE_TYPE_DEVICE_FAULT_INFO_KHR
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_PROPERTIES_KHR
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_FEATURES_KHR
+                                                         , STRUCTURE_TYPE_GENERATED_COMMANDS_SHADER_INFO_EXT
+                                                         , STRUCTURE_TYPE_GENERATED_COMMANDS_PIPELINE_INFO_EXT
+                                                         , STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXT
+                                                         , STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_INFO_EXT
+                                                         , STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXT
+                                                         , STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_SHADER_EXT
+                                                         , STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXT
+                                                         , STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_EXT
+                                                         , STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXT
+                                                         , STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_EXT
+                                                         , STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_CREATE_INFO_EXT
+                                                         , STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_VALIDATION_FEATURES_NV
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT8_FEATURES_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_REPLICATED_COMPOSITES_FEATURES_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT16_VECTOR_FEATURES_NV
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_VULKAN_PROPERTIES_KHR
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_KHR
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_LIST_KHR
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_PROPERTIES_KHR
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_FEATURES_KHR
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_COMMAND_BUFFER_INHERITANCE_FEATURES_NV
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_RELAXED_EXTENDED_INSTRUCTION_FEATURES_KHR
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_COMPUTE_QUEUE_PROPERTIES_NV
+                                                         , STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_DATA_PARAMS_NV
+                                                         , STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_CREATE_INFO_NV
+                                                         , STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_DEVICE_CREATE_INFO_NV
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_RAW_ACCESS_CHAINS_FEATURES_NV
+                                                         , STRUCTURE_TYPE_DISPLAY_MODE_STEREO_PROPERTIES_NV
+                                                         , STRUCTURE_TYPE_DISPLAY_SURFACE_STEREO_CREATE_INFO_NV
+                                                         , STRUCTURE_TYPE_DECOMPRESS_MEMORY_INFO_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_EXT
+                                                         , STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INDIRECT_INFO_KHR
+                                                         , STRUCTURE_TYPE_COPY_MEMORY_INDIRECT_INFO_KHR
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_KHR
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_KHR
+                                                         , STRUCTURE_TYPE_TILE_MEMORY_SIZE_INFO_QCOM
+                                                         , STRUCTURE_TYPE_TILE_MEMORY_BIND_INFO_QCOM
+                                                         , STRUCTURE_TYPE_TILE_MEMORY_REQUIREMENTS_QCOM
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_MEMORY_HEAP_PROPERTIES_QCOM
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_MEMORY_HEAP_FEATURES_QCOM
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_POOL_OVERALLOCATION_FEATURES_NV
+                                                         , STRUCTURE_TYPE_BIND_DESCRIPTOR_BUFFER_EMBEDDED_SAMPLERS_INFO_EXT
+                                                         , STRUCTURE_TYPE_SET_DESCRIPTOR_BUFFER_OFFSETS_INFO_EXT
+                                                         , STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_KHR
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_DRIVER_PROPERTIES_MSFT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCREEN_BUFFER_FEATURES_QNX
+                                                         , STRUCTURE_TYPE_EXTERNAL_FORMAT_QNX
+                                                         , STRUCTURE_TYPE_IMPORT_SCREEN_BUFFER_INFO_QNX
+                                                         , STRUCTURE_TYPE_SCREEN_BUFFER_FORMAT_PROPERTIES_QNX
+                                                         , STRUCTURE_TYPE_SCREEN_BUFFER_PROPERTIES_QNX
+                                                         , STRUCTURE_TYPE_ATTACHMENT_FEEDBACK_LOOP_INFO_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFIED_IMAGE_LAYOUTS_FEATURES_KHR
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_FEATURES_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_CLAMP_FEATURES_QCOM
+                                                         , STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_YCBCR_DEGAMMA_CREATE_INFO_QCOM
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_DEGAMMA_FEATURES_QCOM
+                                                         , STRUCTURE_TYPE_BLIT_IMAGE_CUBIC_WEIGHTS_INFO_QCOM
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_WEIGHTS_FEATURES_QCOM
+                                                         , STRUCTURE_TYPE_SAMPLER_CUBIC_WEIGHTS_CREATE_INFO_QCOM
+                                                         , STRUCTURE_TYPE_SAMPLER_BLOCK_MATCH_WINDOW_CREATE_INFO_QCOM
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_PROPERTIES_QCOM
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_FEATURES_QCOM
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_PER_STAGE_DESCRIPTOR_SET_FEATURES_NV
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_PROPERTIES_KHR
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_KHR
+                                                         , STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_RENDER_AREAS_RENDER_PASS_BEGIN_INFO_QCOM
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_RENDER_AREAS_FEATURES_QCOM
+                                                         , STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_TOSA_PROPERTIES_ARM
+                                                         , STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CONSTANT_TENSOR_SEMI_STRUCTURED_SPARSITY_INFO_ARM
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_INFO_ARM
+                                                         , STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_PROPERTIES_ARM
+                                                         , STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_PROPERTIES_ARM
+                                                         , STRUCTURE_TYPE_DATA_GRAPH_PROCESSING_ENGINE_CREATE_INFO_ARM
+                                                         , STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_DISPATCH_INFO_ARM
+                                                         , STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_IDENTIFIER_CREATE_INFO_ARM
+                                                         , STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENT_ARM
+                                                         , STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENTS_INFO_ARM
+                                                         , STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_COMPILER_CONTROL_CREATE_INFO_ARM
+                                                         , STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_INFO_ARM
+                                                         , STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_PROPERTY_QUERY_RESULT_ARM
+                                                         , STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SHADER_MODULE_CREATE_INFO_ARM
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_FEATURES_ARM
+                                                         , STRUCTURE_TYPE_BIND_DATA_GRAPH_PIPELINE_SESSION_MEMORY_INFO_ARM
+                                                         , STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_MEMORY_REQUIREMENTS_INFO_ARM
+                                                         , STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CONSTANT_ARM
+                                                         , STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_RESOURCE_INFO_ARM
+                                                         , STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_CREATE_INFO_ARM
+                                                         , STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CREATE_INFO_ARM
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_KHR
+                                                         , STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_KHR
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_KHR
+                                                         , STRUCTURE_TYPE_LATENCY_SURFACE_CAPABILITIES_NV
+                                                         , STRUCTURE_TYPE_SWAPCHAIN_LATENCY_CREATE_INFO_NV
+                                                         , STRUCTURE_TYPE_OUT_OF_BAND_QUEUE_TYPE_INFO_NV
+                                                         , STRUCTURE_TYPE_LATENCY_SUBMISSION_PRESENT_ID_NV
+                                                         , STRUCTURE_TYPE_LATENCY_TIMINGS_FRAME_REPORT_NV
+                                                         , STRUCTURE_TYPE_GET_LATENCY_MARKER_INFO_NV
+                                                         , STRUCTURE_TYPE_SET_LATENCY_MARKER_INFO_NV
+                                                         , STRUCTURE_TYPE_LATENCY_SLEEP_INFO_NV
+                                                         , STRUCTURE_TYPE_LATENCY_SLEEP_MODE_INFO_NV
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_INTERNALLY_SYNCHRONIZED_QUEUES_FEATURES_KHR
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_FEATURES_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_PROPERTIES_ARM
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM
+                                                         , STRUCTURE_TYPE_LAYER_SETTINGS_CREATE_INFO_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_PROPERTIES_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_FEATURES_EXT
+                                                         , STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_PROPERTIES_NV
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_FEATURES_NV
+                                                         , STRUCTURE_TYPE_CONVERT_COOPERATIVE_VECTOR_MATRIX_INFO_NV
+                                                         , STRUCTURE_TYPE_COOPERATIVE_VECTOR_PROPERTIES_NV
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_VECTOR_PROPERTIES_NV
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_VECTOR_FEATURES_NV
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_VIEWPORTS_FEATURES_QCOM
+                                                         , STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_KHR
+                                                         , STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_KHR
+                                                         , STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_KHR
+                                                         , STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_KHR
+                                                         , STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_KHR
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_KHR
+                                                         , STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_KHR
+                                                         , STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_KHR
+                                                         , STRUCTURE_TYPE_SURFACE_PRESENT_MODE_KHR
+                                                         , STRUCTURE_TYPE_AMIGO_PROFILING_SUBMIT_INFO_SEC
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_AMIGO_PROFILING_FEATURES_SEC
+                                                         , STRUCTURE_TYPE_TILE_PROPERTIES_QCOM
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM
+                                                         , STRUCTURE_TYPE_PIPELINE_BINARY_HANDLES_INFO_KHR
+                                                         , STRUCTURE_TYPE_DEVICE_PIPELINE_BINARY_INTERNAL_CACHE_CONTROL_KHR
+                                                         , STRUCTURE_TYPE_PIPELINE_CREATE_INFO_KHR
+                                                         , STRUCTURE_TYPE_PIPELINE_BINARY_DATA_INFO_KHR
+                                                         , STRUCTURE_TYPE_RELEASE_CAPTURED_PIPELINE_DATA_INFO_KHR
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_BINARY_PROPERTIES_KHR
+                                                         , STRUCTURE_TYPE_PIPELINE_BINARY_KEY_KHR
+                                                         , STRUCTURE_TYPE_PIPELINE_BINARY_INFO_KHR
+                                                         , STRUCTURE_TYPE_PIPELINE_BINARY_CREATE_INFO_KHR
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_BINARY_FEATURES_KHR
+                                                         , STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT
+                                                         , STRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT
+                                                         , STRUCTURE_TYPE_SHADER_CREATE_INFO_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_PROPERTIES_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_POSITION_FETCH_FEATURES_KHR
+                                                         , STRUCTURE_TYPE_PRESENT_WAIT_2_INFO_KHR
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_2_FEATURES_KHR
+                                                         , STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_WAIT_2_KHR
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_2_FEATURES_KHR
+                                                         , STRUCTURE_TYPE_PRESENT_ID_2_KHR
+                                                         , STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_ID_2_KHR
+                                                         , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DENSE_GEOMETRY_FORMAT_TRIANGLES_DATA_AMDX
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_DENSE_GEOMETRY_FORMAT_FEATURES_AMDX
+                                                         , STRUCTURE_TYPE_ANTI_LAG_PRESENTATION_INFO_AMD
+                                                         , STRUCTURE_TYPE_ANTI_LAG_DATA_AMD
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_ANTI_LAG_FEATURES_AMD
+                                                         , STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_RESOLVE_PROPERTIES_ANDROID
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_PROPERTIES_ANDROID
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_FEATURES_ANDROID
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT
+                                                         , STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_PRIVATE_DATA_INFO_NV
+                                                         , STRUCTURE_TYPE_OPTICAL_FLOW_EXECUTE_INFO_NV
+                                                         , STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_INFO_NV
+                                                         , STRUCTURE_TYPE_OPTICAL_FLOW_IMAGE_FORMAT_PROPERTIES_NV
+                                                         , STRUCTURE_TYPE_OPTICAL_FLOW_IMAGE_FORMAT_INFO_NV
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_PROPERTIES_NV
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_FEATURES_NV
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_EXT
+                                                         , STRUCTURE_TYPE_SHADER_MODULE_IDENTIFIER_EXT
+                                                         , STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_MODULE_IDENTIFIER_CREATE_INFO_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_PROPERTIES_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT
+                                                         , STRUCTURE_TYPE_FRAME_BOUNDARY_TENSORS_ARM
+                                                         , STRUCTURE_TYPE_TENSOR_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_ARM
+                                                         , STRUCTURE_TYPE_TENSOR_CAPTURE_DESCRIPTOR_DATA_INFO_ARM
+                                                         , STRUCTURE_TYPE_DESCRIPTOR_GET_TENSOR_INFO_ARM
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_PROPERTIES_ARM
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_FEATURES_ARM
+                                                         , STRUCTURE_TYPE_EXTERNAL_MEMORY_TENSOR_CREATE_INFO_ARM
+                                                         , STRUCTURE_TYPE_EXTERNAL_TENSOR_PROPERTIES_ARM
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_TENSOR_INFO_ARM
+                                                         , STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_TENSOR_ARM
+                                                         , STRUCTURE_TYPE_TENSOR_DEPENDENCY_INFO_ARM
+                                                         , STRUCTURE_TYPE_TENSOR_COPY_ARM
+                                                         , STRUCTURE_TYPE_COPY_TENSOR_INFO_ARM
+                                                         , STRUCTURE_TYPE_DEVICE_TENSOR_MEMORY_REQUIREMENTS_ARM
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_TENSOR_FEATURES_ARM
+                                                         , STRUCTURE_TYPE_TENSOR_MEMORY_BARRIER_ARM
+                                                         , STRUCTURE_TYPE_TENSOR_MEMORY_REQUIREMENTS_INFO_ARM
+                                                         , STRUCTURE_TYPE_TENSOR_DESCRIPTION_ARM
+                                                         , STRUCTURE_TYPE_TENSOR_FORMAT_PROPERTIES_ARM
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_TENSOR_PROPERTIES_ARM
+                                                         , STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_TENSOR_ARM
+                                                         , STRUCTURE_TYPE_BIND_TENSOR_MEMORY_INFO_ARM
+                                                         , STRUCTURE_TYPE_TENSOR_VIEW_CREATE_INFO_ARM
+                                                         , STRUCTURE_TYPE_TENSOR_CREATE_INFO_ARM
+                                                         , STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_LIST_LUNARG
+                                                         , STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_INFO_LUNARG
+                                                         , STRUCTURE_TYPE_RENDER_PASS_SUBPASS_FEEDBACK_CREATE_INFO_EXT
+                                                         , STRUCTURE_TYPE_RENDER_PASS_CREATION_FEEDBACK_CREATE_INFO_EXT
+                                                         , STRUCTURE_TYPE_RENDER_PASS_CREATION_CONTROL_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT
+                                                         , STRUCTURE_TYPE_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_PROPERTIES_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_FEATURES_EXT
+                                                         , STRUCTURE_TYPE_IMAGE_VIEW_SAMPLE_WEIGHT_CREATE_INFO_QCOM
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_PROPERTIES_QCOM
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MAXIMAL_RECONVERGENCE_FEATURES_KHR
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV
+                                                         , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_SPHERES_DATA_NV
+                                                         , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_LINEAR_SWEPT_SPHERES_DATA_NV
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_LINEAR_SWEPT_SPHERES_FEATURES_NV
+                                                         , STRUCTURE_TYPE_PIPELINE_INDIRECT_DEVICE_ADDRESS_INFO_NV
+                                                         , STRUCTURE_TYPE_COMPUTE_PIPELINE_INDIRECT_BUFFER_INFO_NV
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_COMPUTE_FEATURES_NV
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV
+                                                         , STRUCTURE_TYPE_RENDER_PASS_STRIPE_SUBMIT_INFO_ARM
+                                                         , STRUCTURE_TYPE_RENDER_PASS_STRIPE_INFO_ARM
+                                                         , STRUCTURE_TYPE_RENDER_PASS_STRIPE_BEGIN_INFO_ARM
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_PROPERTIES_ARM
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_FEATURES_ARM
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT
+                                                         , STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE
+                                                         , STRUCTURE_TYPE_DESCRIPTOR_SET_BINDING_REFERENCE_VALVE
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE
+                                                         , STRUCTURE_TYPE_IMAGE_VIEW_SLICED_CREATE_INFO_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_SLICED_VIEW_OF_3D_FEATURES_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_DISPATCH_PARAMETERS_PROPERTIES_ARM
+                                                         , STRUCTURE_TYPE_DISPATCH_PARAMETERS_ARM
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_PROPERTIES_ARM
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_FEATURES_ARM
+                                                         , STRUCTURE_TYPE_DEVICE_QUEUE_SHADER_CORE_CONTROL_CREATE_INFO_ARM
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_ARM
+                                                         , 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
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_VRS_FEATURES_HUAWEI
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI
+                                                         , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_DISPLACEMENT_MICROMAP_NV
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_PROPERTIES_NV
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_FEATURES_NV
+                                                         , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT
+                                                         , STRUCTURE_TYPE_MICROMAP_BUILD_SIZES_INFO_EXT
+                                                         , STRUCTURE_TYPE_MICROMAP_CREATE_INFO_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_PROPERTIES_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_EXT
+                                                         , STRUCTURE_TYPE_COPY_MEMORY_TO_MICROMAP_INFO_EXT
+                                                         , STRUCTURE_TYPE_COPY_MICROMAP_TO_MEMORY_INFO_EXT
+                                                         , STRUCTURE_TYPE_COPY_MICROMAP_INFO_EXT
+                                                         , STRUCTURE_TYPE_MICROMAP_VERSION_INFO_EXT
+                                                         , STRUCTURE_TYPE_MICROMAP_BUILD_INFO_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_PROPERTIES_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_FEATURES_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT
+                                                         , 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_PHYSICAL_DEVICE_SHADER_UNTYPED_POINTERS_FEATURES_KHR
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_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
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT
+                                                         , STRUCTURE_TYPE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_INFO_EXT
+                                                         , STRUCTURE_TYPE_SUBPASS_RESOLVE_PERFORMANCE_QUERY_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_FEATURES_EXT
+                                                         , STRUCTURE_TYPE_FRAME_BOUNDARY_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAME_BOUNDARY_FEATURES_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT
+                                                         , STRUCTURE_TYPE_PIPELINE_PROPERTIES_IDENTIFIER_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV
+                                                         , STRUCTURE_TYPE_MEMORY_GET_REMOTE_ADDRESS_INFO_NV
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_PROPERTIES_HUAWEI
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI
+                                                         , STRUCTURE_TYPE_SUBPASS_SHADING_PIPELINE_CREATE_INFO_HUAWEI
+                                                         , STRUCTURE_TYPE_BUFFER_COLLECTION_CONSTRAINTS_INFO_FUCHSIA
+                                                         , STRUCTURE_TYPE_SYSMEM_COLOR_SPACE_FUCHSIA
+                                                         , STRUCTURE_TYPE_IMAGE_FORMAT_CONSTRAINTS_INFO_FUCHSIA
+                                                         , STRUCTURE_TYPE_IMAGE_CONSTRAINTS_INFO_FUCHSIA
+                                                         , STRUCTURE_TYPE_BUFFER_COLLECTION_BUFFER_CREATE_INFO_FUCHSIA
+                                                         , STRUCTURE_TYPE_BUFFER_CONSTRAINTS_INFO_FUCHSIA
+                                                         , STRUCTURE_TYPE_BUFFER_COLLECTION_PROPERTIES_FUCHSIA
+                                                         , STRUCTURE_TYPE_BUFFER_COLLECTION_IMAGE_CREATE_INFO_FUCHSIA
+                                                         , STRUCTURE_TYPE_IMPORT_MEMORY_BUFFER_COLLECTION_FUCHSIA
+                                                         , STRUCTURE_TYPE_BUFFER_COLLECTION_CREATE_INFO_FUCHSIA
+                                                         , STRUCTURE_TYPE_SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA
+                                                         , STRUCTURE_TYPE_IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA
+                                                         , STRUCTURE_TYPE_MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA
+                                                         , STRUCTURE_TYPE_MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA
+                                                         , STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA
+                                                         , STRUCTURE_TYPE_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
+                                                         , STRUCTURE_TYPE_DEVICE_ADDRESS_BINDING_CALLBACK_DATA_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_ADDRESS_BINDING_REPORT_FEATURES_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_DRM_PROPERTIES_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT
+                                                         , STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT
+                                                         , STRUCTURE_TYPE_DEVICE_FAULT_INFO_EXT
+                                                         , STRUCTURE_TYPE_DEVICE_FAULT_COUNTS_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_FEATURES_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT
+                                                         , STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT
+                                                         , STRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR
+                                                         , STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT
+                                                         , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MOTION_INFO_NV
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV
+                                                         , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV
+                                                         , 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_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_PROPERTIES_KHR
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_FEATURES_AMD
+                                                         , STRUCTURE_TYPE_GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT
+                                                         , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_2_KHR
+                                                         , STRUCTURE_TYPE_MEMORY_MARKER_INFO_AMD
+                                                         , STRUCTURE_TYPE_BIND_TRANSFORM_FEEDBACK_BUFFER_2_INFO_EXT
+                                                         , STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_2_EXT
+                                                         , STRUCTURE_TYPE_DISPATCH_INDIRECT_2_INFO_KHR
+                                                         , STRUCTURE_TYPE_DRAW_INDIRECT_COUNT_2_INFO_KHR
+                                                         , STRUCTURE_TYPE_DRAW_INDIRECT_2_INFO_KHR
+                                                         , STRUCTURE_TYPE_BIND_VERTEX_BUFFER_3_INFO_KHR
+                                                         , STRUCTURE_TYPE_BIND_INDEX_BUFFER_3_INFO_KHR
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_ADDRESS_COMMANDS_FEATURES_KHR
+                                                         , STRUCTURE_TYPE_MEMORY_RANGE_BARRIER_KHR
+                                                         , STRUCTURE_TYPE_MEMORY_RANGE_BARRIERS_INFO_KHR
+                                                         , STRUCTURE_TYPE_COPY_DEVICE_MEMORY_IMAGE_INFO_KHR
+                                                         , STRUCTURE_TYPE_DEVICE_MEMORY_IMAGE_COPY_KHR
+                                                         , STRUCTURE_TYPE_COPY_DEVICE_MEMORY_INFO_KHR
+                                                         , STRUCTURE_TYPE_DEVICE_MEMORY_COPY_KHR
+                                                         , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT
+                                                         , STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_PUSH_DESCRIPTOR_BUFFER_HANDLE_EXT
+                                                         , STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_INFO_EXT
+                                                         , STRUCTURE_TYPE_OPAQUE_CAPTURE_DESCRIPTOR_DATA_CREATE_INFO_EXT
+                                                         , STRUCTURE_TYPE_SAMPLER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT
+                                                         , STRUCTURE_TYPE_IMAGE_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_EXT
+                                                         , STRUCTURE_TYPE_IMAGE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT
+                                                         , STRUCTURE_TYPE_BUFFER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT
+                                                         , STRUCTURE_TYPE_DESCRIPTOR_GET_INFO_EXT
+                                                         , STRUCTURE_TYPE_DESCRIPTOR_ADDRESS_INFO_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT
+                                                         , STRUCTURE_TYPE_IMPORT_METAL_SHARED_EVENT_INFO_EXT
+                                                         , STRUCTURE_TYPE_EXPORT_METAL_SHARED_EVENT_INFO_EXT
+                                                         , STRUCTURE_TYPE_IMPORT_METAL_IO_SURFACE_INFO_EXT
+                                                         , STRUCTURE_TYPE_EXPORT_METAL_IO_SURFACE_INFO_EXT
+                                                         , STRUCTURE_TYPE_IMPORT_METAL_TEXTURE_INFO_EXT
+                                                         , STRUCTURE_TYPE_EXPORT_METAL_TEXTURE_INFO_EXT
+                                                         , STRUCTURE_TYPE_IMPORT_METAL_BUFFER_INFO_EXT
+                                                         , STRUCTURE_TYPE_EXPORT_METAL_BUFFER_INFO_EXT
+                                                         , STRUCTURE_TYPE_EXPORT_METAL_COMMAND_QUEUE_INFO_EXT
+                                                         , STRUCTURE_TYPE_EXPORT_METAL_DEVICE_INFO_EXT
+                                                         , STRUCTURE_TYPE_EXPORT_METAL_OBJECTS_INFO_EXT
+                                                         , STRUCTURE_TYPE_EXPORT_METAL_OBJECT_CREATE_INFO_EXT
+                                                         , STRUCTURE_TYPE_QUERY_LOW_LATENCY_SUPPORT_NV
+                                                         , STRUCTURE_TYPE_DISPATCH_TILE_INFO_QCOM
+                                                         , STRUCTURE_TYPE_PER_TILE_END_INFO_QCOM
+                                                         , STRUCTURE_TYPE_PER_TILE_BEGIN_INFO_QCOM
+                                                         , STRUCTURE_TYPE_RENDER_PASS_TILE_SHADING_CREATE_INFO_QCOM
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_SHADING_PROPERTIES_QCOM
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_SHADING_FEATURES_QCOM
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_PROPERTIES_NV
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_FEATURES_NV
+                                                         , STRUCTURE_TYPE_CUDA_LAUNCH_INFO_NV
+                                                         , STRUCTURE_TYPE_CUDA_FUNCTION_CREATE_INFO_NV
+                                                         , STRUCTURE_TYPE_CUDA_MODULE_CREATE_INFO_NV
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SPLIT_BARRIER_PROPERTIES_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SPLIT_BARRIER_FEATURES_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MULTIPLE_WAIT_QUEUES_PROPERTIES_QCOM
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MULTIPLE_WAIT_QUEUES_FEATURES_QCOM
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_3_FEATURES_QCOM
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_QUEUE_PERF_HINT_PROPERTIES_QCOM
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_QUEUE_PERF_HINT_FEATURES_QCOM
+                                                         , STRUCTURE_TYPE_PERF_HINT_INFO_QCOM
+                                                         , STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR
+                                                         , STRUCTURE_TYPE_PRESENT_ID_KHR
+                                                         , STRUCTURE_TYPE_SWAPCHAIN_PRESENT_BARRIER_CREATE_INFO_NV
+                                                         , STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_BARRIER_NV
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_BARRIER_FEATURES_NV
+                                                         , STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_3D_FEATURES_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT
+                                                         , STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT
+                                                         , STRUCTURE_TYPE_DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT
+                                                         , STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT
+                                                         , STRUCTURE_TYPE_DEPTH_BIAS_REPRESENTATION_INFO_EXT
+                                                         , STRUCTURE_TYPE_DEPTH_BIAS_INFO_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_BIAS_CONTROL_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_FEATURES_EXT
+                                                         , STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV
+                                                         , STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV
+                                                         , STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV
+                                                         , STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV
+                                                         , STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV
+                                                         , 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_ATOMIC_FLOAT_2_FEATURES_EXT
+                                                         , STRUCTURE_TYPE_MEMORY_MAP_PLACED_INFO_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_MAP_MEMORY_PLACED_PROPERTIES_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_MAP_MEMORY_PLACED_FEATURES_EXT
+                                                         , STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR
+                                                         , STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR
+                                                         , STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR
+                                                         , STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR
+                                                         , STRUCTURE_TYPE_PIPELINE_INFO_KHR
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT
+                                                         , STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT
+                                                         , STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT
+                                                         , STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT
+                                                         , STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT
+                                                         , STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT
+                                                         , STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV
+                                                         , STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV
+                                                         , STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR
+                                                         , STRUCTURE_TYPE_VALIDATION_FEATURES_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
+                                                         , STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR
+                                                         , STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_QUAD_CONTROL_FEATURES_KHR
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ABORT_PROPERTIES_KHR
+                                                         , STRUCTURE_TYPE_DEVICE_FAULT_SHADER_ABORT_MESSAGE_INFO_KHR
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ABORT_FEATURES_KHR
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CONSTANT_DATA_FEATURES_KHR
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD
+                                                         , STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR
+                                                         , 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_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_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_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA
+                                                         , STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD
+                                                         , STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT
+                                                         , STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL
+                                                         , STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL
+                                                         , STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL
+                                                         , STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL
+                                                         , STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL
+                                                         , STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL
+                                                         , STRUCTURE_TYPE_SWAPCHAIN_CALIBRATED_TIMESTAMP_INFO_EXT
+                                                         , STRUCTURE_TYPE_PRESENT_TIMING_SURFACE_CAPABILITIES_EXT
+                                                         , STRUCTURE_TYPE_PAST_PRESENTATION_TIMING_EXT
+                                                         , STRUCTURE_TYPE_PAST_PRESENTATION_TIMING_PROPERTIES_EXT
+                                                         , STRUCTURE_TYPE_PAST_PRESENTATION_TIMING_INFO_EXT
+                                                         , STRUCTURE_TYPE_PRESENT_TIMING_INFO_EXT
+                                                         , STRUCTURE_TYPE_PRESENT_TIMINGS_INFO_EXT
+                                                         , STRUCTURE_TYPE_SWAPCHAIN_TIME_DOMAIN_PROPERTIES_EXT
+                                                         , STRUCTURE_TYPE_SWAPCHAIN_TIMING_PROPERTIES_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_TIMING_FEATURES_EXT
+                                                         , STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV
+                                                         , STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV
+                                                         , STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV
+                                                         , STRUCTURE_TYPE_CHECKPOINT_DATA_NV
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV
+                                                         , STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV
+                                                         , STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT
+                                                         , STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD
+                                                         , STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR
+                                                         , 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_PHYSICAL_DEVICE_ELAPSED_TIMER_QUERY_FEATURES_QCOM
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_CONVERSION_FEATURES_QCOM
+                                                         , 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
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV
+                                                         , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV
+                                                         , STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV
+                                                         , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV
+                                                         , STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV
+                                                         , STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV
+                                                         , STRUCTURE_TYPE_GEOMETRY_AABB_NV
+                                                         , STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV
+                                                         , STRUCTURE_TYPE_GEOMETRY_NV
+                                                         , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV
+                                                         , STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV
+                                                         , STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV
+                                                         , STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR
+                                                         , STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT
+                                                         , STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT
+                                                         , STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT
+                                                         , STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT
+                                                         , STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT
+                                                         , STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT
+                                                         , STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV
+                                                         , STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR
+                                                         , STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR
+                                                         , STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR
+                                                         , STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR
+                                                         , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR
+                                                         , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR
+                                                         , STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR
+                                                         , STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR
+                                                         , STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR
+                                                         , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR
+                                                         , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR
+                                                         , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR
+                                                         , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR
+                                                         , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR
+                                                         , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR
+                                                         , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR
+                                                         , STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR
+                                                         , STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV
+                                                         , STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT
+                                                         , STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT
+                                                         , 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_PHYSICAL_DEVICE_SHADER_BFLOAT16_FEATURES_KHR
+                                                         , STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_HEAP_TENSOR_PROPERTIES_ARM
+                                                         , STRUCTURE_TYPE_SUBSAMPLED_IMAGE_FORMAT_PROPERTIES_EXT
+                                                         , STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_PUSH_DATA_TOKEN_NV
+                                                         , STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_INDEX_CREATE_INFO_EXT
+                                                         , STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_DESCRIPTOR_HEAP_INFO_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_HEAP_FEATURES_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_HEAP_PROPERTIES_EXT
+                                                         , STRUCTURE_TYPE_OPAQUE_CAPTURE_DATA_CREATE_INFO_EXT
+                                                         , STRUCTURE_TYPE_SHADER_DESCRIPTOR_SET_AND_BINDING_MAPPING_INFO_EXT
+                                                         , STRUCTURE_TYPE_DESCRIPTOR_SET_AND_BINDING_MAPPING_EXT
+                                                         , STRUCTURE_TYPE_PUSH_DATA_INFO_EXT
+                                                         , STRUCTURE_TYPE_BIND_HEAP_INFO_EXT
+                                                         , STRUCTURE_TYPE_RESOURCE_DESCRIPTOR_INFO_EXT
+                                                         , STRUCTURE_TYPE_IMAGE_DESCRIPTOR_INFO_EXT
+                                                         , STRUCTURE_TYPE_TEXEL_BUFFER_DESCRIPTOR_INFO_EXT
+                                                         , STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_NODE_CREATE_INFO_AMDX
+                                                         , STRUCTURE_TYPE_EXECUTION_GRAPH_PIPELINE_CREATE_INFO_AMDX
+                                                         , STRUCTURE_TYPE_EXECUTION_GRAPH_PIPELINE_SCRATCH_SIZE_AMDX
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ENQUEUE_PROPERTIES_AMDX
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ENQUEUE_FEATURES_AMDX
+                                                         , STRUCTURE_TYPE_GPA_DEVICE_GET_CLOCK_INFO_AMD
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_GPA_PROPERTIES_2_AMD
+                                                         , STRUCTURE_TYPE_GPA_DEVICE_CLOCK_MODE_INFO_AMD
+                                                         , STRUCTURE_TYPE_GPA_SESSION_CREATE_INFO_AMD
+                                                         , STRUCTURE_TYPE_GPA_SAMPLE_BEGIN_INFO_AMD
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_GPA_PROPERTIES_AMD
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_GPA_FEATURES_AMD
+                                                         , STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID
+                                                         , STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID
+                                                         , STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID
+                                                         , STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID
+                                                         , STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID
+                                                         , STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID
+                                                         , STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID
+                                                         , STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT
+                                                         , STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT
+                                                         , STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT
+                                                         , STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT
+                                                         , STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT
+                                                         , STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK
+                                                         , STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK
+                                                         , STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR
+                                                         , STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR
+                                                         , STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR
+                                                         , STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR
+                                                         , STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR
+                                                         , STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR
+                                                         , STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR
+                                                         , STRUCTURE_TYPE_PERFORMANCE_QUERY_RESERVATION_INFO_KHR
+                                                         , STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR
+                                                         , STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR
+                                                         , STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR
+                                                         , STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR
+                                                         , STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR
+                                                         , STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR
+                                                         , STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR
+                                                         , STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR
+                                                         , STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR
+                                                         , STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR
+                                                         , STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_RELAXED_LINE_RASTERIZATION_FEATURES_IMG
+                                                         , STRUCTURE_TYPE_HDR_METADATA_EXT
+                                                         , STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT
+                                                         , STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT
+                                                         , STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT
+                                                         , STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV
+                                                         , STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX
+                                                         , STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE
+                                                         , STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT
+                                                         , STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT
+                                                         , STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT
+                                                         , STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT
+                                                         , STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT
+                                                         , STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV
+                                                         , STRUCTURE_TYPE_PRESENT_REGIONS_KHR
+                                                         , STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT
+                                                         , STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT
+                                                         , STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR
+                                                         , STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR
+                                                         , STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR
+                                                         , STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR
+                                                         , STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR
+                                                         , STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR
+                                                         , STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR
+                                                         , STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR
+                                                         , STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR
+                                                         , STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR
+                                                         , STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR
+                                                         , STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR
+                                                         , STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR
+                                                         , 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_VI_SURFACE_CREATE_INFO_NN
+                                                         , STRUCTURE_TYPE_VALIDATION_FLAGS_EXT
+                                                         , STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR
+                                                         , STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR
+                                                         , STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR
+                                                         , STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR
+                                                         , STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR
+                                                         , STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR
+                                                         , STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV
+                                                         , STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV
+                                                         , STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV
+                                                         , STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV
+                                                         , STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV
+                                                         , STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP
+                                                         , STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD
+                                                         , STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX
+                                                         , STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX
+                                                         , STRUCTURE_TYPE_CU_MODULE_TEXTURING_MODE_CREATE_INFO_NVX
+                                                         , STRUCTURE_TYPE_CU_LAUNCH_INFO_NVX
+                                                         , STRUCTURE_TYPE_CU_FUNCTION_CREATE_INFO_NVX
+                                                         , STRUCTURE_TYPE_CU_MODULE_CREATE_INFO_NVX
+                                                         , STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT
+                                                         , STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV
+                                                         , STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV
+                                                         , STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV
+                                                         , STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT
+                                                         , STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT
+                                                         , STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT
+                                                         , STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD
+                                                         , STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT
+                                                         , STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR
+                                                         , STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR
+                                                         , STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR
+                                                         , STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR
+                                                         , STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR
+                                                         , STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR
+                                                         , STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR
+                                                         , STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR
+                                                         , STRUCTURE_TYPE_PRESENT_INFO_KHR
+                                                         , STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR
+                                                         , STRUCTURE_TYPE_PIPELINE_OFFLINE_CREATE_INFO
+                                                         , STRUCTURE_TYPE_FAULT_CALLBACK_INFO
+                                                         , STRUCTURE_TYPE_FAULT_DATA
+                                                         , STRUCTURE_TYPE_PIPELINE_POOL_SIZE
+                                                         , STRUCTURE_TYPE_COMMAND_POOL_MEMORY_CONSUMPTION
+                                                         , STRUCTURE_TYPE_COMMAND_POOL_MEMORY_RESERVATION_CREATE_INFO
+                                                         , STRUCTURE_TYPE_DEVICE_OBJECT_RESERVATION_CREATE_INFO
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_SC_1_0_PROPERTIES
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_SC_1_0_FEATURES
+                                                         , STRUCTURE_TYPE_RENDERING_INPUT_ATTACHMENT_INDEX_INFO
+                                                         , STRUCTURE_TYPE_RENDERING_ATTACHMENT_LOCATION_INFO
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES
+                                                         , STRUCTURE_TYPE_RENDERING_AREA_INFO
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES
+                                                         , STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES
+                                                         , STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES
+                                                         , STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES
+                                                         , STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO
+                                                         , STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_INFO
+                                                         , STRUCTURE_TYPE_PUSH_CONSTANTS_INFO
+                                                         , STRUCTURE_TYPE_BIND_DESCRIPTOR_SETS_INFO
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES
+                                                         , STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES
+                                                         , STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY
+                                                         , STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE
+                                                         , STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO
+                                                         , STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO
+                                                         , STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO
+                                                         , STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO
+                                                         , STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY
+                                                         , STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES
+                                                         , STRUCTURE_TYPE_BIND_MEMORY_STATUS
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES
+                                                         , STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO
+                                                         , STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2
+                                                         , STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2
+                                                         , STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES
+                                                         , STRUCTURE_TYPE_MEMORY_UNMAP_INFO
+                                                         , STRUCTURE_TYPE_MEMORY_MAP_INFO
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES
+                                                         , STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES
+                                                         , STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_PROPERTIES
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_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_IMAGE_RESOLVE_2
+                                                         , STRUCTURE_TYPE_IMAGE_BLIT_2
+                                                         , STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2
+                                                         , STRUCTURE_TYPE_BLIT_IMAGE_INFO_2
+                                                         , 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_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_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES
+                                                         , STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO
+                                                         , 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_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES
+                                                         , STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2
+                                                         , STRUCTURE_TYPE_IMAGE_COPY_2
+                                                         , STRUCTURE_TYPE_BUFFER_COPY_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_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_PRIVATE_DATA_SLOT_CREATE_INFO
+                                                         , STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES
+                                                         , STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT
+                                                         , STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES
+                                                         , STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO
+                                                         , STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO
+                                                         , STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES
+                                                         , STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO
+                                                         , STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES
+                                                         , STRUCTURE_TYPE_SUBPASS_END_INFO
+                                                         , STRUCTURE_TYPE_SUBPASS_BEGIN_INFO
+                                                         , STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2
+                                                         , STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2
+                                                         , STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2
+                                                         , STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2
+                                                         , STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES
+                                                         , STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES
+                                                         , STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT
+                                                         , STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES
+                                                         , STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_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
+                                                         , STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES
+                                                         , STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO
+                                                         , STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO
+                                                         , STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO
+                                                         , STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES
+                                                         , STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES
+                                                         , STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO
+                                                         , STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO
+                                                         , STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES
+                                                         , STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO
+                                                         , STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES
+                                                         , STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO
+                                                         , STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO
+                                                         , STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO
+                                                         , STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO
+                                                         , STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES
+                                                         , STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES
+                                                         , STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO
+                                                         , STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO
+                                                         , STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO
+                                                         , STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO
+                                                         , STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO
+                                                         , STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO
+                                                         , STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES
+                                                         , STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO
+                                                         , STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO
+                                                         , STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES
+                                                         , STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO
+                                                         , STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2
+                                                         , STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2
+                                                         , STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2
+                                                         , STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2
+                                                         , STRUCTURE_TYPE_FORMAT_PROPERTIES_2
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2
+                                                         , STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2
+                                                         , STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2
+                                                         , STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2
+                                                         , STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2
+                                                         , STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2
+                                                         , STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO
+                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES
+                                                         , STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO
+                                                         , STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO
+                                                         , STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO
+                                                         , STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO
+                                                         , STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO
+                                                         , STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO
+                                                         , STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO
+                                                         , STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS
+                                                         , STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO
+                                                         , STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO
+                                                         , ..
+                                                         )
+                                          ) where
+
+import Vulkan.Internal.Utils (enumReadPrec)
+import Vulkan.Internal.Utils (enumShowsPrec)
+import GHC.Show (showsPrec)
+import Vulkan.Zero (Zero)
+import Foreign.Storable (Storable)
+import Data.Int (Int32)
+import GHC.Read (Read(readPrec))
+import GHC.Show (Show(showsPrec))
+
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHR"
+pattern STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHR = STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO
+
+
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHR"
+pattern STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHR = STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO
+
+
+-- | VkStructureType - Vulkan structure types (@sType@)
+--
+-- = 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_acceleration_structure.AccelerationStructureBuildGeometryInfoKHR',
+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureBuildSizesInfoKHR',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.AccelerationStructureCaptureDescriptorDataInfoEXT',
+-- 'Vulkan.Extensions.VK_KHR_device_address_commands.AccelerationStructureCreateInfo2KHR',
+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureCreateInfoKHR',
+-- 'Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureCreateInfoNV',
+-- 'Vulkan.Extensions.VK_AMDX_dense_geometry_format.AccelerationStructureDenseGeometryFormatTrianglesDataAMDX',
+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureDeviceAddressInfoKHR',
+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureGeometryAabbsDataKHR',
+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureGeometryInstancesDataKHR',
+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureGeometryKHR',
+-- 'Vulkan.Extensions.VK_NV_ray_tracing_linear_swept_spheres.AccelerationStructureGeometryLinearSweptSpheresDataNV',
+-- 'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureGeometryMicromapDataKHR',
+-- 'Vulkan.Extensions.VK_NV_ray_tracing_motion_blur.AccelerationStructureGeometryMotionTrianglesDataNV',
+-- 'Vulkan.Extensions.VK_NV_ray_tracing_linear_swept_spheres.AccelerationStructureGeometrySpheresDataNV',
+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureGeometryTrianglesDataKHR',
+-- 'Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureInfoNV',
+-- 'Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureMemoryRequirementsInfoNV',
+-- 'Vulkan.Extensions.VK_NV_ray_tracing_motion_blur.AccelerationStructureMotionInfoNV',
+-- 'Vulkan.Extensions.VK_NV_displacement_micromap.AccelerationStructureTrianglesDisplacementMicromapNV',
+-- 'Vulkan.Extensions.VK_EXT_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapEXT',
+-- 'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapKHR',
+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureVersionInfoKHR',
+-- 'Vulkan.Extensions.VK_KHR_swapchain.AcquireNextImageInfoKHR',
+-- 'Vulkan.Extensions.VK_KHR_performance_query.AcquireProfilingLockInfoKHR',
+-- 'Vulkan.Extensions.VK_SEC_amigo_profiling.AmigoProfilingSubmitInfoSEC',
+-- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.AndroidHardwareBufferFormatProperties2ANDROID',
+-- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.AndroidHardwareBufferFormatPropertiesANDROID',
+-- 'Vulkan.Extensions.VK_ANDROID_external_format_resolve.AndroidHardwareBufferFormatResolvePropertiesANDROID',
+-- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.AndroidHardwareBufferPropertiesANDROID',
+-- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.AndroidHardwareBufferUsageANDROID',
+-- 'Vulkan.Extensions.VK_KHR_android_surface.AndroidSurfaceCreateInfoKHR',
+-- 'Vulkan.Extensions.VK_AMD_anti_lag.AntiLagDataAMD',
+-- 'Vulkan.Extensions.VK_AMD_anti_lag.AntiLagPresentationInfoAMD',
+-- 'Vulkan.Core10.DeviceInitialization.ApplicationInfo',
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.AttachmentDescription2',
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts.AttachmentDescriptionStencilLayout',
+-- 'Vulkan.Extensions.VK_KHR_unified_image_layouts.AttachmentFeedbackLoopInfoEXT',
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.AttachmentReference2',
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts.AttachmentReferenceStencilLayout',
+-- 'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD',
+-- 'Vulkan.CStruct.Extends.BaseInStructure',
+-- 'Vulkan.CStruct.Extends.BaseOutStructure',
+-- 'Vulkan.Extensions.VK_EXT_custom_resolve.BeginCustomResolveInfoEXT',
+-- 'Vulkan.Extensions.VK_NV_ray_tracing.BindAccelerationStructureMemoryInfoNV',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2.BindBufferMemoryDeviceGroupInfo',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindBufferMemoryInfo',
+-- 'Vulkan.Extensions.VK_ARM_data_graph.BindDataGraphPipelineSessionMemoryInfoARM',
+-- 'Vulkan.Extensions.VK_KHR_maintenance6.BindDescriptorBufferEmbeddedSamplersInfoEXT',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance6.BindDescriptorSetsInfo',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_heap.BindHeapInfoEXT',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2.BindImageMemoryDeviceGroupInfo',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindImageMemoryInfo',
+-- 'Vulkan.Extensions.VK_KHR_swapchain.BindImageMemorySwapchainInfoKHR',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.BindImagePlaneMemoryInfo',
+-- 'Vulkan.Extensions.VK_KHR_device_address_commands.BindIndexBuffer3InfoKHR',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance6.BindMemoryStatus',
+-- 'Vulkan.Core10.SparseResourceMemoryManagement.BindSparseInfo',
+-- 'Vulkan.Extensions.VK_ARM_tensors.BindTensorMemoryInfoARM',
+-- 'Vulkan.Extensions.VK_KHR_device_address_commands.BindTransformFeedbackBuffer2InfoEXT',
+-- 'Vulkan.Extensions.VK_KHR_device_address_commands.BindVertexBuffer3InfoKHR',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkBindVideoSessionMemoryInfoKHR VkBindVideoSessionMemoryInfoKHR>,
+-- 'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.BlitImageCubicWeightsInfoQCOM',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.BlitImageInfo2',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.BufferCaptureDescriptorDataInfoEXT',
+-- 'Vulkan.Extensions.VK_FUCHSIA_buffer_collection.BufferCollectionBufferCreateInfoFUCHSIA',
+-- 'Vulkan.Extensions.VK_FUCHSIA_buffer_collection.BufferCollectionConstraintsInfoFUCHSIA',
+-- 'Vulkan.Extensions.VK_FUCHSIA_buffer_collection.BufferCollectionCreateInfoFUCHSIA',
+-- 'Vulkan.Extensions.VK_FUCHSIA_buffer_collection.BufferCollectionImageCreateInfoFUCHSIA',
+-- 'Vulkan.Extensions.VK_FUCHSIA_buffer_collection.BufferCollectionPropertiesFUCHSIA',
+-- 'Vulkan.Extensions.VK_FUCHSIA_buffer_collection.BufferConstraintsInfoFUCHSIA',
+-- '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.Core13.Promoted_From_VK_KHR_copy_commands2.BufferImageCopy2',
+-- 'Vulkan.Core10.CommandBufferBuilding.BufferMemoryBarrier',
+-- '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.Core14.Promoted_From_VK_KHR_maintenance5.BufferUsageFlags2CreateInfo',
+-- 'Vulkan.Core10.BufferView.BufferViewCreateInfo',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkBuildPartitionedAccelerationStructureInfoNV VkBuildPartitionedAccelerationStructureInfoNV>,
+-- 'Vulkan.Extensions.VK_KHR_calibrated_timestamps.CalibratedTimestampInfoKHR',
+-- 'Vulkan.Extensions.VK_NV_device_diagnostic_checkpoints.CheckpointData2NV',
+-- 'Vulkan.Extensions.VK_NV_device_diagnostic_checkpoints.CheckpointDataNV',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkClusterAccelerationStructureClustersBottomLevelInputNV VkClusterAccelerationStructureClustersBottomLevelInputNV>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkClusterAccelerationStructureCommandsInfoNV VkClusterAccelerationStructureCommandsInfoNV>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkClusterAccelerationStructureInputInfoNV VkClusterAccelerationStructureInputInfoNV>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkClusterAccelerationStructureMoveObjectsInputNV VkClusterAccelerationStructureMoveObjectsInputNV>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkClusterAccelerationStructureTriangleClusterInputNV VkClusterAccelerationStructureTriangleClusterInputNV>,
+-- 'Vulkan.Core10.CommandBuffer.CommandBufferAllocateInfo',
+-- 'Vulkan.Core10.CommandBuffer.CommandBufferBeginInfo',
+-- 'Vulkan.Extensions.VK_EXT_conditional_rendering.CommandBufferInheritanceConditionalRenderingInfoEXT',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_heap.CommandBufferInheritanceDescriptorHeapInfoEXT',
+-- 'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo',
+-- 'Vulkan.Extensions.VK_QCOM_render_pass_transform.CommandBufferInheritanceRenderPassTransformInfoQCOM',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.CommandBufferInheritanceRenderingInfo',
+-- 'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.CommandBufferSubmitInfo',
+-- 'Vulkan.Core10.CommandPool.CommandPoolCreateInfo',
+-- 'Vulkan.Extensions.VK_NV_compute_occupancy_priority.ComputeOccupancyPriorityParametersNV',
+-- 'Vulkan.Core10.ComputePipeline.ComputePipelineCreateInfo',
+-- 'Vulkan.Extensions.VK_NV_device_generated_commands_compute.ComputePipelineIndirectBufferInfoNV',
+-- 'Vulkan.Extensions.VK_KHR_device_address_commands.ConditionalRenderingBeginInfo2EXT',
+-- 'Vulkan.Extensions.VK_EXT_conditional_rendering.ConditionalRenderingBeginInfoEXT',
+-- 'Vulkan.Extensions.VK_NV_cooperative_vector.ConvertCooperativeVectorMatrixInfoNV',
+-- 'Vulkan.Extensions.VK_NV_cooperative_matrix2.CooperativeMatrixFlexibleDimensionsPropertiesNV',
+-- 'Vulkan.Extensions.VK_KHR_cooperative_matrix.CooperativeMatrixPropertiesKHR',
+-- 'Vulkan.Extensions.VK_NV_cooperative_matrix.CooperativeMatrixPropertiesNV',
+-- 'Vulkan.Extensions.VK_NV_cooperative_vector.CooperativeVectorPropertiesNV',
+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.CopyAccelerationStructureInfoKHR',
+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.CopyAccelerationStructureToMemoryInfoKHR',
+-- '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_device_address_commands.CopyDeviceMemoryImageInfoKHR',
+-- 'Vulkan.Extensions.VK_KHR_device_address_commands.CopyDeviceMemoryInfoKHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.CopyImageInfo2',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.CopyImageToBufferInfo2',
+-- 'Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy.CopyImageToImageInfo',
+-- 'Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy.CopyImageToMemoryInfo',
+-- 'Vulkan.Extensions.VK_KHR_copy_memory_indirect.CopyMemoryIndirectInfoKHR',
+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.CopyMemoryToAccelerationStructureInfoKHR',
+-- 'Vulkan.Extensions.VK_KHR_copy_memory_indirect.CopyMemoryToImageIndirectInfoKHR',
+-- 'Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy.CopyMemoryToImageInfo',
+-- 'Vulkan.Extensions.VK_EXT_opacity_micromap.CopyMemoryToMicromapInfoEXT',
+-- 'Vulkan.Extensions.VK_EXT_opacity_micromap.CopyMicromapInfoEXT',
+-- 'Vulkan.Extensions.VK_EXT_opacity_micromap.CopyMicromapToMemoryInfoEXT',
+-- 'Vulkan.Extensions.VK_ARM_tensors.CopyTensorInfoARM',
+-- 'Vulkan.Extensions.VK_NVX_binary_import.CuFunctionCreateInfoNVX',
+-- 'Vulkan.Extensions.VK_NVX_binary_import.CuLaunchInfoNVX',
+-- 'Vulkan.Extensions.VK_NVX_binary_import.CuModuleCreateInfoNVX',
+-- 'Vulkan.Extensions.VK_NVX_binary_import.CuModuleTexturingModeCreateInfoNVX',
+-- 'Vulkan.Extensions.VK_NV_cuda_kernel_launch.CudaFunctionCreateInfoNV',
+-- 'Vulkan.Extensions.VK_NV_cuda_kernel_launch.CudaLaunchInfoNV',
+-- 'Vulkan.Extensions.VK_NV_cuda_kernel_launch.CudaModuleCreateInfoNV',
+-- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT',
+-- 'Vulkan.Extensions.VK_KHR_external_semaphore_win32.D3D12FenceSubmitInfoKHR',
+-- 'Vulkan.Extensions.VK_ARM_data_graph_optical_flow.DataGraphOpticalFlowImageFormatInfoARM',
+-- 'Vulkan.Extensions.VK_ARM_data_graph_optical_flow.DataGraphOpticalFlowImageFormatPropertiesARM',
+-- 'Vulkan.Extensions.VK_QCOM_data_graph_model.DataGraphPipelineBuiltinModelCreateInfoQCOM',
+-- 'Vulkan.Extensions.VK_ARM_data_graph.DataGraphPipelineCompilerControlCreateInfoARM',
+-- 'Vulkan.Extensions.VK_ARM_data_graph.DataGraphPipelineConstantARM',
+-- 'Vulkan.Extensions.VK_ARM_data_graph.DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM',
+-- 'Vulkan.Extensions.VK_ARM_data_graph.DataGraphPipelineCreateInfoARM',
+-- 'Vulkan.Extensions.VK_ARM_data_graph.DataGraphPipelineDispatchInfoARM',
+-- 'Vulkan.Extensions.VK_ARM_data_graph.DataGraphPipelineIdentifierCreateInfoARM',
+-- 'Vulkan.Extensions.VK_ARM_data_graph.DataGraphPipelineInfoARM',
+-- 'Vulkan.Extensions.VK_ARM_data_graph_neural_accelerator_statistics.DataGraphPipelineNeuralStatisticsCreateInfoARM',
+-- 'Vulkan.Extensions.VK_ARM_data_graph_optical_flow.DataGraphPipelineOpticalFlowCreateInfoARM',
+-- 'Vulkan.Extensions.VK_ARM_data_graph_optical_flow.DataGraphPipelineOpticalFlowDispatchInfoARM',
+-- 'Vulkan.Extensions.VK_ARM_data_graph.DataGraphPipelinePropertyQueryResultARM',
+-- 'Vulkan.Extensions.VK_ARM_data_graph.DataGraphPipelineResourceInfoARM',
+-- 'Vulkan.Extensions.VK_ARM_data_graph_optical_flow.DataGraphPipelineResourceInfoImageLayoutARM',
+-- 'Vulkan.Extensions.VK_ARM_data_graph.DataGraphPipelineSessionBindPointRequirementARM',
+-- 'Vulkan.Extensions.VK_ARM_data_graph.DataGraphPipelineSessionBindPointRequirementsInfoARM',
+-- 'Vulkan.Extensions.VK_ARM_data_graph.DataGraphPipelineSessionCreateInfoARM',
+-- 'Vulkan.Extensions.VK_ARM_data_graph.DataGraphPipelineSessionMemoryRequirementsInfoARM',
+-- 'Vulkan.Extensions.VK_ARM_data_graph_neural_accelerator_statistics.DataGraphPipelineSessionNeuralStatisticsCreateInfoARM',
+-- 'Vulkan.Extensions.VK_ARM_data_graph.DataGraphPipelineShaderModuleCreateInfoARM',
+-- 'Vulkan.Extensions.VK_ARM_data_graph_optical_flow.DataGraphPipelineSingleNodeConnectionARM',
+-- 'Vulkan.Extensions.VK_ARM_data_graph_optical_flow.DataGraphPipelineSingleNodeCreateInfoARM',
+-- 'Vulkan.Extensions.VK_ARM_data_graph.DataGraphProcessingEngineCreateInfoARM',
+-- 'Vulkan.Extensions.VK_EXT_debug_marker.DebugMarkerMarkerInfoEXT',
+-- 'Vulkan.Extensions.VK_EXT_debug_marker.DebugMarkerObjectNameInfoEXT',
+-- 'Vulkan.Extensions.VK_EXT_debug_marker.DebugMarkerObjectTagInfoEXT',
+-- 'Vulkan.Extensions.VK_EXT_debug_report.DebugReportCallbackCreateInfoEXT',
+-- 'Vulkan.Extensions.VK_EXT_debug_utils.DebugUtilsLabelEXT',
+-- 'Vulkan.Extensions.VK_EXT_debug_utils.DebugUtilsMessengerCallbackDataEXT',
+-- 'Vulkan.Extensions.VK_EXT_debug_utils.DebugUtilsMessengerCreateInfoEXT',
+-- 'Vulkan.Extensions.VK_EXT_debug_utils.DebugUtilsObjectNameInfoEXT',
+-- 'Vulkan.Extensions.VK_EXT_debug_utils.DebugUtilsObjectTagInfoEXT',
+-- 'Vulkan.Extensions.VK_EXT_memory_decompression.DecompressMemoryInfoEXT',
+-- 'Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationBufferCreateInfoNV',
+-- 'Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationImageCreateInfoNV',
+-- 'Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationMemoryAllocateInfoNV',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.DependencyInfo',
+-- 'Vulkan.Extensions.VK_EXT_depth_bias_control.DepthBiasInfoEXT',
+-- 'Vulkan.Extensions.VK_EXT_depth_bias_control.DepthBiasRepresentationInfoEXT',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.DescriptorAddressInfoEXT',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.DescriptorBufferBindingInfoEXT',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.DescriptorBufferBindingPushDescriptorBufferHandleEXT',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.DescriptorGetInfoEXT',
+-- 'Vulkan.Extensions.VK_ARM_tensors.DescriptorGetTensorInfoARM',
+-- 'Vulkan.Core10.DescriptorSet.DescriptorPoolCreateInfo',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_inline_uniform_block.DescriptorPoolInlineUniformBlockCreateInfo',
+-- 'Vulkan.Core10.DescriptorSet.DescriptorSetAllocateInfo',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DescriptorSetAndBindingMappingEXT',
+-- 'Vulkan.Extensions.VK_VALVE_descriptor_set_host_mapping.DescriptorSetBindingReferenceVALVE',
+-- 'Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.DescriptorSetLayoutBindingFlagsCreateInfo',
+-- 'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutCreateInfo',
+-- 'Vulkan.Extensions.VK_VALVE_descriptor_set_host_mapping.DescriptorSetLayoutHostMappingInfoVALVE',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_maintenance3.DescriptorSetLayoutSupport',
+-- '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_EXT_device_address_binding_report.DeviceAddressBindingCallbackDataEXT',
+-- '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',
+-- 'Vulkan.Extensions.VK_EXT_display_control.DeviceEventInfoEXT',
+-- 'Vulkan.Extensions.VK_EXT_device_fault.DeviceFaultCountsEXT',
+-- 'Vulkan.Extensions.VK_KHR_device_fault.DeviceFaultDebugInfoKHR',
+-- 'Vulkan.Extensions.VK_EXT_device_fault.DeviceFaultInfoEXT',
+-- 'Vulkan.Extensions.VK_KHR_device_fault.DeviceFaultInfoKHR',
+-- 'Vulkan.Extensions.VK_KHR_shader_abort.DeviceFaultShaderAbortMessageInfoKHR',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupBindSparseInfo',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupCommandBufferBeginInfo',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group_creation.DeviceGroupDeviceCreateInfo',
+-- 'Vulkan.Extensions.VK_KHR_swapchain.DeviceGroupPresentCapabilitiesKHR',
+-- 'Vulkan.Extensions.VK_KHR_swapchain.DeviceGroupPresentInfoKHR',
+-- '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.Core13.Promoted_From_VK_KHR_maintenance4.DeviceImageMemoryRequirements',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.DeviceImageSubresourceInfo',
+-- 'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceMemoryCopyKHR',
+-- 'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceMemoryImageCopyKHR',
+-- '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_KHR_pipeline_binary.DevicePipelineBinaryInternalCacheControlKHR',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_private_data.DevicePrivateDataCreateInfo',
+-- 'Vulkan.Core10.Device.DeviceQueueCreateInfo',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_global_priority.DeviceQueueGlobalPriorityCreateInfo',
+-- 'Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory.DeviceQueueInfo2',
+-- 'Vulkan.Extensions.VK_ARM_scheduling_controls.DeviceQueueShaderCoreControlCreateInfoARM',
+-- 'Vulkan.Extensions.VK_ARM_tensors.DeviceTensorMemoryRequirementsARM',
+-- 'Vulkan.Extensions.VK_LUNARG_direct_driver_loading.DirectDriverLoadingInfoLUNARG',
+-- 'Vulkan.Extensions.VK_LUNARG_direct_driver_loading.DirectDriverLoadingListLUNARG',
+-- 'Vulkan.Extensions.VK_EXT_directfb_surface.DirectFBSurfaceCreateInfoEXT',
+-- 'Vulkan.Extensions.VK_KHR_device_address_commands.DispatchIndirect2InfoKHR',
+-- 'Vulkan.Extensions.VK_ARM_scheduling_controls.DispatchParametersARM',
+-- 'Vulkan.Extensions.VK_QCOM_tile_shading.DispatchTileInfoQCOM',
+-- 'Vulkan.Extensions.VK_EXT_display_control.DisplayEventInfoEXT',
+-- 'Vulkan.Extensions.VK_KHR_display.DisplayModeCreateInfoKHR',
+-- 'Vulkan.Extensions.VK_KHR_get_display_properties2.DisplayModeProperties2KHR',
+-- 'Vulkan.Extensions.VK_NV_display_stereo.DisplayModeStereoPropertiesNV',
+-- 'Vulkan.Extensions.VK_AMD_display_native_hdr.DisplayNativeHdrSurfaceCapabilitiesAMD',
+-- 'Vulkan.Extensions.VK_KHR_get_display_properties2.DisplayPlaneCapabilities2KHR',
+-- 'Vulkan.Extensions.VK_KHR_get_display_properties2.DisplayPlaneInfo2KHR',
+-- 'Vulkan.Extensions.VK_KHR_get_display_properties2.DisplayPlaneProperties2KHR',
+-- 'Vulkan.Extensions.VK_EXT_display_control.DisplayPowerInfoEXT',
+-- 'Vulkan.Extensions.VK_KHR_display_swapchain.DisplayPresentInfoKHR',
+-- 'Vulkan.Extensions.VK_KHR_get_display_properties2.DisplayProperties2KHR',
+-- 'Vulkan.Extensions.VK_KHR_display.DisplaySurfaceCreateInfoKHR',
+-- 'Vulkan.Extensions.VK_NV_display_stereo.DisplaySurfaceStereoCreateInfoNV',
+-- 'Vulkan.Extensions.VK_KHR_device_address_commands.DrawIndirect2InfoKHR',
+-- 'Vulkan.Extensions.VK_KHR_device_address_commands.DrawIndirectCount2InfoKHR',
+-- 'Vulkan.Extensions.VK_EXT_image_drm_format_modifier.DrmFormatModifierPropertiesList2EXT',
+-- 'Vulkan.Extensions.VK_EXT_image_drm_format_modifier.DrmFormatModifierPropertiesListEXT',
+-- 'Vulkan.Core10.Event.EventCreateInfo',
+-- 'Vulkan.Extensions.VK_AMDX_shader_enqueue.ExecutionGraphPipelineCreateInfoAMDX',
+-- 'Vulkan.Extensions.VK_AMDX_shader_enqueue.ExecutionGraphPipelineScratchSizeAMDX',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_external_fence.ExportFenceCreateInfo',
+-- 'Vulkan.Extensions.VK_KHR_external_fence_win32.ExportFenceWin32HandleInfoKHR',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExportMemoryAllocateInfo',
+-- 'Vulkan.Extensions.VK_NV_external_memory.ExportMemoryAllocateInfoNV',
+-- 'Vulkan.Extensions.VK_KHR_external_memory_win32.ExportMemoryWin32HandleInfoKHR',
+-- 'Vulkan.Extensions.VK_NV_external_memory_win32.ExportMemoryWin32HandleInfoNV',
+-- 'Vulkan.Extensions.VK_EXT_metal_objects.ExportMetalBufferInfoEXT',
+-- 'Vulkan.Extensions.VK_EXT_metal_objects.ExportMetalCommandQueueInfoEXT',
+-- 'Vulkan.Extensions.VK_EXT_metal_objects.ExportMetalDeviceInfoEXT',
+-- 'Vulkan.Extensions.VK_EXT_metal_objects.ExportMetalIOSurfaceInfoEXT',
+-- 'Vulkan.Extensions.VK_EXT_metal_objects.ExportMetalObjectCreateInfoEXT',
+-- 'Vulkan.Extensions.VK_EXT_metal_objects.ExportMetalObjectsInfoEXT',
+-- 'Vulkan.Extensions.VK_EXT_metal_objects.ExportMetalSharedEventInfoEXT',
+-- 'Vulkan.Extensions.VK_EXT_metal_objects.ExportMetalTextureInfoEXT',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore.ExportSemaphoreCreateInfo',
+-- 'Vulkan.Extensions.VK_KHR_external_semaphore_win32.ExportSemaphoreWin32HandleInfoKHR',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.ExternalBufferProperties',
+-- 'Vulkan.Extensions.VK_NV_external_compute_queue.ExternalComputeQueueCreateInfoNV',
+-- 'Vulkan.Extensions.VK_NV_external_compute_queue.ExternalComputeQueueDataParamsNV',
+-- 'Vulkan.Extensions.VK_NV_external_compute_queue.ExternalComputeQueueDeviceCreateInfoNV',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_external_fence_capabilities.ExternalFenceProperties',
+-- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkExternalFormatOHOS VkExternalFormatOHOS>,
+-- 'Vulkan.Extensions.VK_QNX_external_memory_screen_buffer.ExternalFormatQNX',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.ExternalImageFormatProperties',
+-- 'Vulkan.Extensions.VK_EXT_external_memory_acquire_unmodified.ExternalMemoryAcquireUnmodifiedEXT',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryBufferCreateInfo',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryImageCreateInfo',
+-- 'Vulkan.Extensions.VK_NV_external_memory.ExternalMemoryImageCreateInfoNV',
+-- 'Vulkan.Extensions.VK_ARM_tensors.ExternalMemoryTensorCreateInfoARM',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore_capabilities.ExternalSemaphoreProperties',
+-- 'Vulkan.Extensions.VK_ARM_tensors.ExternalTensorPropertiesARM',
+-- 'Vulkan.Core10.Fence.FenceCreateInfo',
+-- 'Vulkan.Extensions.VK_KHR_external_fence_fd.FenceGetFdInfoKHR',
+-- '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.Core13.Promoted_From_VK_KHR_format_feature_flags2.FormatProperties3',
+-- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FragmentShadingRateAttachmentInfoKHR',
+-- 'Vulkan.Extensions.VK_EXT_frame_boundary.FrameBoundaryEXT',
+-- 'Vulkan.Extensions.VK_ARM_tensors.FrameBoundaryTensorsARM',
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentImageInfo',
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfo',
+-- 'Vulkan.Core10.Pass.FramebufferCreateInfo',
+-- 'Vulkan.Extensions.VK_NV_coverage_reduction_mode.FramebufferMixedSamplesCombinationNV',
+-- 'Vulkan.Extensions.VK_EXT_device_generated_commands.GeneratedCommandsInfoEXT',
+-- 'Vulkan.Extensions.VK_NV_device_generated_commands.GeneratedCommandsInfoNV',
+-- 'Vulkan.Extensions.VK_EXT_device_generated_commands.GeneratedCommandsMemoryRequirementsInfoEXT',
+-- 'Vulkan.Extensions.VK_NV_device_generated_commands.GeneratedCommandsMemoryRequirementsInfoNV',
+-- 'Vulkan.Extensions.VK_EXT_device_generated_commands.GeneratedCommandsPipelineInfoEXT',
+-- 'Vulkan.Extensions.VK_EXT_device_generated_commands.GeneratedCommandsShaderInfoEXT',
+-- 'Vulkan.Extensions.VK_NV_ray_tracing.GeometryAABBNV',
+-- 'Vulkan.Extensions.VK_NV_ray_tracing.GeometryNV',
+-- 'Vulkan.Extensions.VK_NV_ray_tracing.GeometryTrianglesNV',
+-- 'Vulkan.Extensions.VK_NV_low_latency2.GetLatencyMarkerInfoNV',
+-- 'Vulkan.Extensions.VK_AMD_gpa_interface.GpaDeviceClockModeInfoAMD',
+-- 'Vulkan.Extensions.VK_AMD_gpa_interface.GpaDeviceGetClockInfoAMD',
+-- 'Vulkan.Extensions.VK_AMD_gpa_interface.GpaSampleBeginInfoAMD',
+-- 'Vulkan.Extensions.VK_AMD_gpa_interface.GpaSessionCreateInfoAMD',
+-- 'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo',
+-- 'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT',
+-- 'Vulkan.Extensions.VK_NV_device_generated_commands.GraphicsPipelineShaderGroupsCreateInfoNV',
+-- 'Vulkan.Extensions.VK_NV_device_generated_commands.GraphicsShaderGroupCreateInfoNV',
+-- 'Vulkan.Extensions.VK_EXT_hdr_metadata.HdrMetadataEXT',
+-- 'Vulkan.Extensions.VK_HUAWEI_hdr_vivid.HdrVividDynamicMetadataHUAWEI',
+-- 'Vulkan.Extensions.VK_EXT_headless_surface.HeadlessSurfaceCreateInfoEXT',
+-- 'Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy.HostImageCopyDevicePerformanceQuery',
+-- 'Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy.HostImageLayoutTransitionInfo',
+-- 'Vulkan.Extensions.VK_MVK_ios_surface.IOSSurfaceCreateInfoMVK',
+-- 'Vulkan.Extensions.VK_MESA_image_alignment_control.ImageAlignmentControlCreateInfoMESA',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.ImageBlit2',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.ImageCaptureDescriptorDataInfoEXT',
+-- 'Vulkan.Extensions.VK_EXT_image_compression_control.ImageCompressionControlEXT',
+-- 'Vulkan.Extensions.VK_EXT_image_compression_control.ImageCompressionPropertiesEXT',
+-- 'Vulkan.Extensions.VK_FUCHSIA_buffer_collection.ImageConstraintsInfoFUCHSIA',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.ImageCopy2',
+-- 'Vulkan.Core10.Image.ImageCreateInfo',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_heap.ImageDescriptorInfoEXT',
+-- 'Vulkan.Extensions.VK_EXT_image_drm_format_modifier.ImageDrmFormatModifierExplicitCreateInfoEXT',
+-- 'Vulkan.Extensions.VK_EXT_image_drm_format_modifier.ImageDrmFormatModifierListCreateInfoEXT',
+-- 'Vulkan.Extensions.VK_EXT_image_drm_format_modifier.ImageDrmFormatModifierPropertiesEXT',
+-- 'Vulkan.Extensions.VK_FUCHSIA_buffer_collection.ImageFormatConstraintsInfoFUCHSIA',
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.ImageFormatProperties2',
+-- 'Vulkan.Core10.CommandBufferBuilding.ImageMemoryBarrier',
+-- '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.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.Core14.Promoted_From_VK_KHR_maintenance5.ImageSubresource2',
+-- 'Vulkan.Extensions.VK_KHR_swapchain.ImageSwapchainCreateInfoKHR',
+-- 'Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy.ImageToMemoryCopy',
+-- 'Vulkan.Extensions.VK_EXT_astc_decode_mode.ImageViewASTCDecodeModeEXT',
+-- 'Vulkan.Extensions.VK_NVX_image_view_handle.ImageViewAddressPropertiesNVX',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.ImageViewCaptureDescriptorDataInfoEXT',
+-- 'Vulkan.Core10.ImageView.ImageViewCreateInfo',
+-- 'Vulkan.Extensions.VK_NVX_image_view_handle.ImageViewHandleInfoNVX',
+-- 'Vulkan.Extensions.VK_EXT_image_view_min_lod.ImageViewMinLodCreateInfoEXT',
+-- 'Vulkan.Extensions.VK_QCOM_image_processing.ImageViewSampleWeightCreateInfoQCOM',
+-- 'Vulkan.Extensions.VK_EXT_image_sliced_view_of_3d.ImageViewSlicedCreateInfoEXT',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_maintenance2.ImageViewUsageCreateInfo',
+-- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ImportAndroidHardwareBufferInfoANDROID',
+-- 'Vulkan.Extensions.VK_KHR_external_fence_fd.ImportFenceFdInfoKHR',
+-- 'Vulkan.Extensions.VK_KHR_external_fence_win32.ImportFenceWin32HandleInfoKHR',
+-- 'Vulkan.Extensions.VK_FUCHSIA_buffer_collection.ImportMemoryBufferCollectionFUCHSIA',
+-- 'Vulkan.Extensions.VK_KHR_external_memory_fd.ImportMemoryFdInfoKHR',
+-- 'Vulkan.Extensions.VK_EXT_external_memory_host.ImportMemoryHostPointerInfoEXT',
+-- 'Vulkan.Extensions.VK_EXT_external_memory_metal.ImportMemoryMetalHandleInfoEXT',
+-- 'Vulkan.Extensions.VK_KHR_external_memory_win32.ImportMemoryWin32HandleInfoKHR',
+-- 'Vulkan.Extensions.VK_NV_external_memory_win32.ImportMemoryWin32HandleInfoNV',
+-- 'Vulkan.Extensions.VK_FUCHSIA_external_memory.ImportMemoryZirconHandleInfoFUCHSIA',
+-- 'Vulkan.Extensions.VK_EXT_metal_objects.ImportMetalBufferInfoEXT',
+-- 'Vulkan.Extensions.VK_EXT_metal_objects.ImportMetalIOSurfaceInfoEXT',
+-- 'Vulkan.Extensions.VK_EXT_metal_objects.ImportMetalSharedEventInfoEXT',
+-- 'Vulkan.Extensions.VK_EXT_metal_objects.ImportMetalTextureInfoEXT',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImportNativeBufferInfoOHOS VkImportNativeBufferInfoOHOS>,
+-- 'Vulkan.Extensions.VK_QNX_external_memory_screen_buffer.ImportScreenBufferInfoQNX',
+-- 'Vulkan.Extensions.VK_KHR_external_semaphore_fd.ImportSemaphoreFdInfoKHR',
+-- 'Vulkan.Extensions.VK_KHR_external_semaphore_win32.ImportSemaphoreWin32HandleInfoKHR',
+-- 'Vulkan.Extensions.VK_FUCHSIA_external_semaphore.ImportSemaphoreZirconHandleInfoFUCHSIA',
+-- 'Vulkan.Extensions.VK_EXT_device_generated_commands.IndirectCommandsLayoutCreateInfoEXT',
+-- 'Vulkan.Extensions.VK_NV_device_generated_commands.IndirectCommandsLayoutCreateInfoNV',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_heap.IndirectCommandsLayoutPushDataTokenNV',
+-- 'Vulkan.Extensions.VK_EXT_device_generated_commands.IndirectCommandsLayoutTokenEXT',
+-- 'Vulkan.Extensions.VK_NV_device_generated_commands.IndirectCommandsLayoutTokenNV',
+-- 'Vulkan.Extensions.VK_EXT_device_generated_commands.IndirectExecutionSetCreateInfoEXT',
+-- 'Vulkan.Extensions.VK_EXT_device_generated_commands.IndirectExecutionSetPipelineInfoEXT',
+-- 'Vulkan.Extensions.VK_EXT_device_generated_commands.IndirectExecutionSetShaderInfoEXT',
+-- 'Vulkan.Extensions.VK_EXT_device_generated_commands.IndirectExecutionSetShaderLayoutInfoEXT',
+-- 'Vulkan.Extensions.VK_INTEL_performance_query.InitializePerformanceApiInfoINTEL',
+-- 'Vulkan.Core10.DeviceInitialization.InstanceCreateInfo',
+-- 'Vulkan.Extensions.VK_NV_low_latency2.LatencySleepInfoNV',
+-- 'Vulkan.Extensions.VK_NV_low_latency2.LatencySleepModeInfoNV',
+-- 'Vulkan.Extensions.VK_NV_low_latency2.LatencySubmissionPresentIdNV',
+-- 'Vulkan.Extensions.VK_NV_low_latency2.LatencySurfaceCapabilitiesNV',
+-- 'Vulkan.Extensions.VK_NV_low_latency2.LatencyTimingsFrameReportNV',
+-- 'Vulkan.Extensions.VK_EXT_layer_settings.LayerSettingsCreateInfoEXT',
+-- 'Vulkan.Extensions.VK_MVK_macos_surface.MacOSSurfaceCreateInfoMVK',
+-- 'Vulkan.Core10.Memory.MappedMemoryRange',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group.MemoryAllocateFlagsInfo',
+-- 'Vulkan.Core10.Memory.MemoryAllocateInfo',
+-- 'Vulkan.Core10.CommandBufferBuilding.MemoryBarrier',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.MemoryBarrier2',
+-- 'Vulkan.Extensions.VK_KHR_maintenance8.MemoryBarrierAccessFlags3KHR',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo',
+-- 'Vulkan.Extensions.VK_ARM_tensors.MemoryDedicatedAllocateInfoTensorARM',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedRequirements',
+-- 'Vulkan.Extensions.VK_KHR_external_memory_fd.MemoryFdPropertiesKHR',
+-- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.MemoryGetAndroidHardwareBufferInfoANDROID',
+-- 'Vulkan.Extensions.VK_KHR_external_memory_fd.MemoryGetFdInfoKHR',
+-- 'Vulkan.Extensions.VK_EXT_external_memory_metal.MemoryGetMetalHandleInfoEXT',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkMemoryGetNativeBufferInfoOHOS VkMemoryGetNativeBufferInfoOHOS>,
+-- 'Vulkan.Extensions.VK_NV_external_memory_rdma.MemoryGetRemoteAddressInfoNV',
+-- 'Vulkan.Extensions.VK_KHR_external_memory_win32.MemoryGetWin32HandleInfoKHR',
+-- 'Vulkan.Extensions.VK_FUCHSIA_external_memory.MemoryGetZirconHandleInfoFUCHSIA',
+-- 'Vulkan.Extensions.VK_EXT_external_memory_host.MemoryHostPointerPropertiesEXT',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_map_memory2.MemoryMapInfo',
+-- 'Vulkan.Extensions.VK_EXT_map_memory_placed.MemoryMapPlacedInfoEXT',
+-- 'Vulkan.Extensions.VK_KHR_device_address_commands.MemoryMarkerInfoAMD',
+-- 'Vulkan.Extensions.VK_EXT_external_memory_metal.MemoryMetalHandlePropertiesEXT',
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.MemoryOpaqueCaptureAddressAllocateInfo',
+-- 'Vulkan.Extensions.VK_EXT_memory_priority.MemoryPriorityAllocateInfoEXT',
+-- 'Vulkan.Extensions.VK_KHR_device_address_commands.MemoryRangeBarrierKHR',
+-- 'Vulkan.Extensions.VK_KHR_device_address_commands.MemoryRangeBarriersInfoKHR',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.MemoryRequirements2',
+-- 'Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy.MemoryToImageCopy',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_map_memory2.MemoryUnmapInfo',
+-- 'Vulkan.Extensions.VK_KHR_external_memory_win32.MemoryWin32HandlePropertiesKHR',
+-- 'Vulkan.Extensions.VK_FUCHSIA_external_memory.MemoryZirconHandlePropertiesFUCHSIA',
+-- 'Vulkan.Extensions.VK_EXT_metal_surface.MetalSurfaceCreateInfoEXT',
+-- 'Vulkan.Extensions.VK_EXT_opacity_micromap.MicromapBuildInfoEXT',
+-- 'Vulkan.Extensions.VK_EXT_opacity_micromap.MicromapBuildSizesInfoEXT',
+-- 'Vulkan.Extensions.VK_EXT_opacity_micromap.MicromapCreateInfoEXT',
+-- 'Vulkan.Extensions.VK_EXT_opacity_micromap.MicromapVersionInfoEXT',
+-- 'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT',
+-- 'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT',
+-- 'Vulkan.Extensions.VK_NVX_multiview_per_view_attributes.MultiviewPerViewAttributesInfoNVX',
+-- 'Vulkan.Extensions.VK_QCOM_multiview_per_view_render_areas.MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM',
+-- 'Vulkan.Extensions.VK_EXT_mutable_descriptor_type.MutableDescriptorTypeCreateInfoEXT',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkNativeBufferFormatPropertiesOHOS VkNativeBufferFormatPropertiesOHOS>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkNativeBufferPropertiesOHOS VkNativeBufferPropertiesOHOS>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkNativeBufferUsageOHOS VkNativeBufferUsageOHOS>,
+-- 'Vulkan.Extensions.VK_EXT_descriptor_heap.OpaqueCaptureDataCreateInfoEXT',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.OpaqueCaptureDescriptorDataCreateInfoEXT',
+-- 'Vulkan.Extensions.VK_NV_optical_flow.OpticalFlowExecuteInfoNV',
+-- 'Vulkan.Extensions.VK_NV_optical_flow.OpticalFlowImageFormatInfoNV',
+-- 'Vulkan.Extensions.VK_NV_optical_flow.OpticalFlowImageFormatPropertiesNV',
+-- 'Vulkan.Extensions.VK_NV_optical_flow.OpticalFlowSessionCreateInfoNV',
+-- 'Vulkan.Extensions.VK_NV_optical_flow.OpticalFlowSessionCreatePrivateDataInfoNV',
+-- 'Vulkan.Extensions.VK_NV_low_latency2.OutOfBandQueueTypeInfoNV',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPartitionedAccelerationStructureFlagsNV VkPartitionedAccelerationStructureFlagsNV>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPartitionedAccelerationStructureInstancesInputNV VkPartitionedAccelerationStructureInstancesInputNV>,
+-- 'Vulkan.Extensions.VK_EXT_present_timing.PastPresentationTimingEXT',
+-- 'Vulkan.Extensions.VK_EXT_present_timing.PastPresentationTimingInfoEXT',
+-- 'Vulkan.Extensions.VK_EXT_present_timing.PastPresentationTimingPropertiesEXT',
+-- 'Vulkan.Extensions.VK_QCOM_tile_shading.PerTileBeginInfoQCOM',
+-- 'Vulkan.Extensions.VK_QCOM_tile_shading.PerTileEndInfoQCOM',
+-- 'Vulkan.Extensions.VK_QCOM_queue_perf_hint.PerfHintInfoQCOM',
+-- 'Vulkan.Extensions.VK_INTEL_performance_query.PerformanceConfigurationAcquireInfoINTEL',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPerformanceCounterARM VkPerformanceCounterARM>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPerformanceCounterDescriptionARM VkPerformanceCounterDescriptionARM>,
+-- 'Vulkan.Extensions.VK_KHR_performance_query.PerformanceCounterDescriptionKHR',
+-- 'Vulkan.Extensions.VK_KHR_performance_query.PerformanceCounterKHR',
+-- 'Vulkan.Extensions.VK_INTEL_performance_query.PerformanceMarkerInfoINTEL',
+-- 'Vulkan.Extensions.VK_INTEL_performance_query.PerformanceOverrideInfoINTEL',
+-- 'Vulkan.Extensions.VK_KHR_performance_query.PerformanceQuerySubmitInfoKHR',
+-- 'Vulkan.Extensions.VK_INTEL_performance_query.PerformanceStreamMarkerInfoINTEL',
+-- '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',
+-- 'Vulkan.Extensions.VK_EXT_astc_decode_mode.PhysicalDeviceASTCDecodeFeaturesEXT',
+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.PhysicalDeviceAccelerationStructureFeaturesKHR',
+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.PhysicalDeviceAccelerationStructurePropertiesKHR',
+-- 'Vulkan.Extensions.VK_EXT_device_address_binding_report.PhysicalDeviceAddressBindingReportFeaturesEXT',
+-- 'Vulkan.Extensions.VK_SEC_amigo_profiling.PhysicalDeviceAmigoProfilingFeaturesSEC',
+-- 'Vulkan.Extensions.VK_AMD_anti_lag.PhysicalDeviceAntiLagFeaturesAMD',
+-- 'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT',
+-- 'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_layout.PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT',
+-- 'Vulkan.Extensions.VK_EXT_blend_operation_advanced.PhysicalDeviceBlendOperationAdvancedFeaturesEXT',
+-- 'Vulkan.Extensions.VK_EXT_blend_operation_advanced.PhysicalDeviceBlendOperationAdvancedPropertiesEXT',
+-- 'Vulkan.Extensions.VK_EXT_border_color_swizzle.PhysicalDeviceBorderColorSwizzleFeaturesEXT',
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.PhysicalDeviceBufferDeviceAddressFeatures',
+-- 'Vulkan.Extensions.VK_EXT_buffer_device_address.PhysicalDeviceBufferDeviceAddressFeaturesEXT',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPhysicalDeviceClusterAccelerationStructureFeaturesNV VkPhysicalDeviceClusterAccelerationStructureFeaturesNV>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPhysicalDeviceClusterAccelerationStructurePropertiesNV VkPhysicalDeviceClusterAccelerationStructurePropertiesNV>,
+-- 'Vulkan.Extensions.VK_HUAWEI_cluster_culling_shader.PhysicalDeviceClusterCullingShaderFeaturesHUAWEI',
+-- 'Vulkan.Extensions.VK_HUAWEI_cluster_culling_shader.PhysicalDeviceClusterCullingShaderPropertiesHUAWEI',
+-- 'Vulkan.Extensions.VK_HUAWEI_cluster_culling_shader.PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI',
+-- 'Vulkan.Extensions.VK_AMD_device_coherent_memory.PhysicalDeviceCoherentMemoryFeaturesAMD',
+-- 'Vulkan.Extensions.VK_EXT_color_write_enable.PhysicalDeviceColorWriteEnableFeaturesEXT',
+-- 'Vulkan.Extensions.VK_NV_command_buffer_inheritance.PhysicalDeviceCommandBufferInheritanceFeaturesNV',
+-- 'Vulkan.Extensions.VK_NV_compute_occupancy_priority.PhysicalDeviceComputeOccupancyPriorityFeaturesNV',
+-- 'Vulkan.Extensions.VK_KHR_compute_shader_derivatives.PhysicalDeviceComputeShaderDerivativesFeaturesKHR',
+-- 'Vulkan.Extensions.VK_KHR_compute_shader_derivatives.PhysicalDeviceComputeShaderDerivativesPropertiesKHR',
+-- 'Vulkan.Extensions.VK_EXT_conditional_rendering.PhysicalDeviceConditionalRenderingFeaturesEXT',
+-- 'Vulkan.Extensions.VK_EXT_conservative_rasterization.PhysicalDeviceConservativeRasterizationPropertiesEXT',
+-- 'Vulkan.Extensions.VK_NV_cooperative_matrix2.PhysicalDeviceCooperativeMatrix2FeaturesNV',
+-- 'Vulkan.Extensions.VK_NV_cooperative_matrix2.PhysicalDeviceCooperativeMatrix2PropertiesNV',
+-- 'Vulkan.Extensions.VK_QCOM_cooperative_matrix_conversion.PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM',
+-- 'Vulkan.Extensions.VK_KHR_cooperative_matrix.PhysicalDeviceCooperativeMatrixFeaturesKHR',
+-- 'Vulkan.Extensions.VK_NV_cooperative_matrix.PhysicalDeviceCooperativeMatrixFeaturesNV',
+-- 'Vulkan.Extensions.VK_KHR_cooperative_matrix.PhysicalDeviceCooperativeMatrixPropertiesKHR',
+-- 'Vulkan.Extensions.VK_NV_cooperative_matrix.PhysicalDeviceCooperativeMatrixPropertiesNV',
+-- 'Vulkan.Extensions.VK_NV_cooperative_vector.PhysicalDeviceCooperativeVectorFeaturesNV',
+-- 'Vulkan.Extensions.VK_NV_cooperative_vector.PhysicalDeviceCooperativeVectorPropertiesNV',
+-- 'Vulkan.Extensions.VK_KHR_copy_memory_indirect.PhysicalDeviceCopyMemoryIndirectFeaturesKHR',
+-- 'Vulkan.Extensions.VK_NV_copy_memory_indirect.PhysicalDeviceCopyMemoryIndirectFeaturesNV',
+-- 'Vulkan.Extensions.VK_KHR_copy_memory_indirect.PhysicalDeviceCopyMemoryIndirectPropertiesKHR',
+-- 'Vulkan.Extensions.VK_NV_corner_sampled_image.PhysicalDeviceCornerSampledImageFeaturesNV',
+-- 'Vulkan.Extensions.VK_NV_coverage_reduction_mode.PhysicalDeviceCoverageReductionModeFeaturesNV',
+-- 'Vulkan.Extensions.VK_QCOM_filter_cubic_clamp.PhysicalDeviceCubicClampFeaturesQCOM',
+-- 'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.PhysicalDeviceCubicWeightsFeaturesQCOM',
+-- 'Vulkan.Extensions.VK_NV_cuda_kernel_launch.PhysicalDeviceCudaKernelLaunchFeaturesNV',
+-- 'Vulkan.Extensions.VK_NV_cuda_kernel_launch.PhysicalDeviceCudaKernelLaunchPropertiesNV',
+-- 'Vulkan.Extensions.VK_EXT_custom_border_color.PhysicalDeviceCustomBorderColorFeaturesEXT',
+-- 'Vulkan.Extensions.VK_EXT_custom_border_color.PhysicalDeviceCustomBorderColorPropertiesEXT',
+-- 'Vulkan.Extensions.VK_EXT_custom_resolve.PhysicalDeviceCustomResolveFeaturesEXT',
+-- 'Vulkan.Extensions.VK_ARM_data_graph.PhysicalDeviceDataGraphFeaturesARM',
+-- 'Vulkan.Extensions.VK_QCOM_data_graph_model.PhysicalDeviceDataGraphModelFeaturesQCOM',
+-- 'Vulkan.Extensions.VK_ARM_data_graph_neural_accelerator_statistics.PhysicalDeviceDataGraphNeuralAcceleratorStatisticsFeaturesARM',
+-- 'Vulkan.Extensions.VK_ARM_data_graph_optical_flow.PhysicalDeviceDataGraphOpticalFlowFeaturesARM',
+-- 'Vulkan.Extensions.VK_NV_dedicated_allocation_image_aliasing.PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV',
+-- 'Vulkan.Extensions.VK_AMDX_dense_geometry_format.PhysicalDeviceDenseGeometryFormatFeaturesAMDX',
+-- 'Vulkan.Extensions.VK_EXT_depth_bias_control.PhysicalDeviceDepthBiasControlFeaturesEXT',
+-- 'Vulkan.Extensions.VK_EXT_depth_clamp_control.PhysicalDeviceDepthClampControlFeaturesEXT',
+-- 'Vulkan.Extensions.VK_KHR_depth_clamp_zero_one.PhysicalDeviceDepthClampZeroOneFeaturesKHR',
+-- 'Vulkan.Extensions.VK_EXT_depth_clip_control.PhysicalDeviceDepthClipControlFeaturesEXT',
+-- 'Vulkan.Extensions.VK_EXT_depth_clip_enable.PhysicalDeviceDepthClipEnableFeaturesEXT',
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve.PhysicalDeviceDepthStencilResolveProperties',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.PhysicalDeviceDescriptorBufferFeaturesEXT',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.PhysicalDeviceDescriptorBufferPropertiesEXT',
+-- 'Vulkan.Extensions.VK_ARM_tensors.PhysicalDeviceDescriptorBufferTensorFeaturesARM',
+-- 'Vulkan.Extensions.VK_ARM_tensors.PhysicalDeviceDescriptorBufferTensorPropertiesARM',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_heap.PhysicalDeviceDescriptorHeapFeaturesEXT',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_heap.PhysicalDeviceDescriptorHeapPropertiesEXT',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_heap.PhysicalDeviceDescriptorHeapTensorPropertiesARM',
+-- 'Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.PhysicalDeviceDescriptorIndexingFeatures',
+-- 'Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.PhysicalDeviceDescriptorIndexingProperties',
+-- 'Vulkan.Extensions.VK_NV_descriptor_pool_overallocation.PhysicalDeviceDescriptorPoolOverallocationFeaturesNV',
+-- 'Vulkan.Extensions.VK_VALVE_descriptor_set_host_mapping.PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE',
+-- 'Vulkan.Extensions.VK_KHR_device_address_commands.PhysicalDeviceDeviceAddressCommandsFeaturesKHR',
+-- 'Vulkan.Extensions.VK_NV_device_generated_commands_compute.PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV',
+-- 'Vulkan.Extensions.VK_EXT_device_generated_commands.PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT',
+-- 'Vulkan.Extensions.VK_NV_device_generated_commands.PhysicalDeviceDeviceGeneratedCommandsFeaturesNV',
+-- 'Vulkan.Extensions.VK_EXT_device_generated_commands.PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT',
+-- 'Vulkan.Extensions.VK_NV_device_generated_commands.PhysicalDeviceDeviceGeneratedCommandsPropertiesNV',
+-- 'Vulkan.Extensions.VK_EXT_device_memory_report.PhysicalDeviceDeviceMemoryReportFeaturesEXT',
+-- 'Vulkan.Extensions.VK_NV_device_diagnostics_config.PhysicalDeviceDiagnosticsConfigFeaturesNV',
+-- 'Vulkan.Extensions.VK_EXT_discard_rectangles.PhysicalDeviceDiscardRectanglePropertiesEXT',
+-- 'Vulkan.Extensions.VK_NV_displacement_micromap.PhysicalDeviceDisplacementMicromapFeaturesNV',
+-- 'Vulkan.Extensions.VK_NV_displacement_micromap.PhysicalDeviceDisplacementMicromapPropertiesNV',
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_driver_properties.PhysicalDeviceDriverProperties',
+-- 'Vulkan.Extensions.VK_EXT_physical_device_drm.PhysicalDeviceDrmPropertiesEXT',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PhysicalDeviceDynamicRenderingFeatures',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.PhysicalDeviceDynamicRenderingLocalReadFeatures',
+-- 'Vulkan.Extensions.VK_EXT_dynamic_rendering_unused_attachments.PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT',
+-- 'Vulkan.Extensions.VK_QCOM_elapsed_timer_query.PhysicalDeviceElapsedTimerQueryFeaturesQCOM',
+-- 'Vulkan.Extensions.VK_NV_scissor_exclusive.PhysicalDeviceExclusiveScissorFeaturesNV',
+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.PhysicalDeviceExtendedDynamicState2FeaturesEXT',
+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.PhysicalDeviceExtendedDynamicState3FeaturesEXT',
+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.PhysicalDeviceExtendedDynamicState3PropertiesEXT',
+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.PhysicalDeviceExtendedDynamicStateFeaturesEXT',
+-- 'Vulkan.Extensions.VK_NV_extended_sparse_address_space.PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV',
+-- 'Vulkan.Extensions.VK_NV_extended_sparse_address_space.PhysicalDeviceExtendedSparseAddressSpacePropertiesNV',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceExternalBufferInfo',
+-- 'Vulkan.Extensions.VK_NV_external_compute_queue.PhysicalDeviceExternalComputeQueuePropertiesNV',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_external_fence_capabilities.PhysicalDeviceExternalFenceInfo',
+-- 'Vulkan.Extensions.VK_ANDROID_external_format_resolve.PhysicalDeviceExternalFormatResolveFeaturesANDROID',
+-- 'Vulkan.Extensions.VK_ANDROID_external_format_resolve.PhysicalDeviceExternalFormatResolvePropertiesANDROID',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceExternalImageFormatInfo',
+-- 'Vulkan.Extensions.VK_EXT_external_memory_host.PhysicalDeviceExternalMemoryHostPropertiesEXT',
+-- 'Vulkan.Extensions.VK_NV_external_memory_rdma.PhysicalDeviceExternalMemoryRDMAFeaturesNV',
+-- 'Vulkan.Extensions.VK_QNX_external_memory_screen_buffer.PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore_capabilities.PhysicalDeviceExternalSemaphoreInfo',
+-- 'Vulkan.Extensions.VK_ARM_tensors.PhysicalDeviceExternalTensorInfoARM',
+-- 'Vulkan.Extensions.VK_EXT_device_fault.PhysicalDeviceFaultFeaturesEXT',
+-- 'Vulkan.Extensions.VK_KHR_device_fault.PhysicalDeviceFaultFeaturesKHR',
+-- 'Vulkan.Extensions.VK_KHR_device_fault.PhysicalDeviceFaultPropertiesKHR',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_shader_float_controls.PhysicalDeviceFloatControlsProperties',
+-- 'Vulkan.Extensions.VK_ARM_format_pack.PhysicalDeviceFormatPackFeaturesARM',
+-- 'Vulkan.Extensions.VK_EXT_fragment_density_map2.PhysicalDeviceFragmentDensityMap2FeaturesEXT',
+-- 'Vulkan.Extensions.VK_EXT_fragment_density_map2.PhysicalDeviceFragmentDensityMap2PropertiesEXT',
+-- 'Vulkan.Extensions.VK_EXT_fragment_density_map.PhysicalDeviceFragmentDensityMapFeaturesEXT',
+-- 'Vulkan.Extensions.VK_VALVE_fragment_density_map_layered.PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE',
+-- 'Vulkan.Extensions.VK_VALVE_fragment_density_map_layered.PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE',
+-- 'Vulkan.Extensions.VK_EXT_fragment_density_map_offset.PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT',
+-- 'Vulkan.Extensions.VK_EXT_fragment_density_map_offset.PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT',
+-- 'Vulkan.Extensions.VK_EXT_fragment_density_map.PhysicalDeviceFragmentDensityMapPropertiesEXT',
+-- 'Vulkan.Extensions.VK_KHR_fragment_shader_barycentric.PhysicalDeviceFragmentShaderBarycentricFeaturesKHR',
+-- 'Vulkan.Extensions.VK_KHR_fragment_shader_barycentric.PhysicalDeviceFragmentShaderBarycentricPropertiesKHR',
+-- 'Vulkan.Extensions.VK_EXT_fragment_shader_interlock.PhysicalDeviceFragmentShaderInterlockFeaturesEXT',
+-- 'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PhysicalDeviceFragmentShadingRateEnumsFeaturesNV',
+-- 'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PhysicalDeviceFragmentShadingRateEnumsPropertiesNV',
+-- '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_frame_boundary.PhysicalDeviceFrameBoundaryFeaturesEXT',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_global_priority.PhysicalDeviceGlobalPriorityQueryFeatures',
+-- 'Vulkan.Extensions.VK_AMD_gpa_interface.PhysicalDeviceGpaFeaturesAMD',
+-- 'Vulkan.Extensions.VK_AMD_gpa_interface.PhysicalDeviceGpaProperties2AMD',
+-- 'Vulkan.Extensions.VK_AMD_gpa_interface.PhysicalDeviceGpaPropertiesAMD',
+-- 'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT',
+-- 'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group_creation.PhysicalDeviceGroupProperties',
+-- 'Vulkan.Extensions.VK_HUAWEI_hdr_vivid.PhysicalDeviceHdrVividFeaturesHUAWEI',
+-- 'Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy.PhysicalDeviceHostImageCopyFeatures',
+-- 'Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy.PhysicalDeviceHostImageCopyProperties',
+-- '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_2d_view_of_3d.PhysicalDeviceImage2DViewOf3DFeaturesEXT',
+-- 'Vulkan.Extensions.VK_MESA_image_alignment_control.PhysicalDeviceImageAlignmentControlFeaturesMESA',
+-- 'Vulkan.Extensions.VK_MESA_image_alignment_control.PhysicalDeviceImageAlignmentControlPropertiesMESA',
+-- 'Vulkan.Extensions.VK_EXT_image_compression_control.PhysicalDeviceImageCompressionControlFeaturesEXT',
+-- 'Vulkan.Extensions.VK_EXT_image_compression_control_swapchain.PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT',
+-- 'Vulkan.Extensions.VK_EXT_image_drm_format_modifier.PhysicalDeviceImageDrmFormatModifierInfoEXT',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceImageFormatInfo2',
+-- 'Vulkan.Extensions.VK_QCOM_image_processing2.PhysicalDeviceImageProcessing2FeaturesQCOM',
+-- 'Vulkan.Extensions.VK_QCOM_image_processing2.PhysicalDeviceImageProcessing2PropertiesQCOM',
+-- 'Vulkan.Extensions.VK_QCOM_image_processing3.PhysicalDeviceImageProcessing3FeaturesQCOM',
+-- 'Vulkan.Extensions.VK_QCOM_image_processing.PhysicalDeviceImageProcessingFeaturesQCOM',
+-- 'Vulkan.Extensions.VK_QCOM_image_processing.PhysicalDeviceImageProcessingPropertiesQCOM',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_image_robustness.PhysicalDeviceImageRobustnessFeatures',
+-- 'Vulkan.Extensions.VK_EXT_image_sliced_view_of_3d.PhysicalDeviceImageSlicedViewOf3DFeaturesEXT',
+-- '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.Core14.Promoted_From_VK_KHR_index_type_uint8.PhysicalDeviceIndexTypeUint8Features',
+-- 'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.PhysicalDeviceInheritedViewportScissorFeaturesNV',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_inline_uniform_block.PhysicalDeviceInlineUniformBlockFeatures',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_inline_uniform_block.PhysicalDeviceInlineUniformBlockProperties',
+-- 'Vulkan.Extensions.VK_KHR_internally_synchronized_queues.PhysicalDeviceInternallySynchronizedQueuesFeaturesKHR',
+-- 'Vulkan.Extensions.VK_HUAWEI_invocation_mask.PhysicalDeviceInvocationMaskFeaturesHUAWEI',
+-- 'Vulkan.Extensions.VK_KHR_maintenance7.PhysicalDeviceLayeredApiPropertiesKHR',
+-- 'Vulkan.Extensions.VK_KHR_maintenance7.PhysicalDeviceLayeredApiPropertiesListKHR',
+-- 'Vulkan.Extensions.VK_KHR_maintenance7.PhysicalDeviceLayeredApiVulkanPropertiesKHR',
+-- 'Vulkan.Extensions.VK_MSFT_layered_driver.PhysicalDeviceLayeredDriverPropertiesMSFT',
+-- 'Vulkan.Extensions.VK_EXT_legacy_dithering.PhysicalDeviceLegacyDitheringFeaturesEXT',
+-- 'Vulkan.Extensions.VK_EXT_legacy_vertex_attributes.PhysicalDeviceLegacyVertexAttributesFeaturesEXT',
+-- 'Vulkan.Extensions.VK_EXT_legacy_vertex_attributes.PhysicalDeviceLegacyVertexAttributesPropertiesEXT',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_line_rasterization.PhysicalDeviceLineRasterizationFeatures',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_line_rasterization.PhysicalDeviceLineRasterizationProperties',
+-- 'Vulkan.Extensions.VK_NV_linear_color_attachment.PhysicalDeviceLinearColorAttachmentFeaturesNV',
+-- 'Vulkan.Extensions.VK_KHR_maintenance10.PhysicalDeviceMaintenance10FeaturesKHR',
+-- 'Vulkan.Extensions.VK_KHR_maintenance10.PhysicalDeviceMaintenance10PropertiesKHR',
+-- 'Vulkan.Extensions.VK_KHR_maintenance11.PhysicalDeviceMaintenance11FeaturesKHR',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_maintenance3.PhysicalDeviceMaintenance3Properties',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_maintenance4.PhysicalDeviceMaintenance4Features',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_maintenance4.PhysicalDeviceMaintenance4Properties',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.PhysicalDeviceMaintenance5Features',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.PhysicalDeviceMaintenance5Properties',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance6.PhysicalDeviceMaintenance6Features',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance6.PhysicalDeviceMaintenance6Properties',
+-- 'Vulkan.Extensions.VK_KHR_maintenance7.PhysicalDeviceMaintenance7FeaturesKHR',
+-- 'Vulkan.Extensions.VK_KHR_maintenance7.PhysicalDeviceMaintenance7PropertiesKHR',
+-- 'Vulkan.Extensions.VK_KHR_maintenance8.PhysicalDeviceMaintenance8FeaturesKHR',
+-- 'Vulkan.Extensions.VK_KHR_maintenance9.PhysicalDeviceMaintenance9FeaturesKHR',
+-- 'Vulkan.Extensions.VK_KHR_maintenance9.PhysicalDeviceMaintenance9PropertiesKHR',
+-- 'Vulkan.Extensions.VK_EXT_map_memory_placed.PhysicalDeviceMapMemoryPlacedFeaturesEXT',
+-- 'Vulkan.Extensions.VK_EXT_map_memory_placed.PhysicalDeviceMapMemoryPlacedPropertiesEXT',
+-- 'Vulkan.Extensions.VK_EXT_memory_budget.PhysicalDeviceMemoryBudgetPropertiesEXT',
+-- 'Vulkan.Extensions.VK_EXT_memory_decompression.PhysicalDeviceMemoryDecompressionFeaturesEXT',
+-- 'Vulkan.Extensions.VK_EXT_memory_decompression.PhysicalDeviceMemoryDecompressionPropertiesEXT',
+-- 'Vulkan.Extensions.VK_EXT_memory_priority.PhysicalDeviceMemoryPriorityFeaturesEXT',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceMemoryProperties2',
+-- 'Vulkan.Extensions.VK_EXT_mesh_shader.PhysicalDeviceMeshShaderFeaturesEXT',
+-- 'Vulkan.Extensions.VK_NV_mesh_shader.PhysicalDeviceMeshShaderFeaturesNV',
+-- 'Vulkan.Extensions.VK_EXT_mesh_shader.PhysicalDeviceMeshShaderPropertiesEXT',
+-- 'Vulkan.Extensions.VK_NV_mesh_shader.PhysicalDeviceMeshShaderPropertiesNV',
+-- 'Vulkan.Extensions.VK_EXT_multi_draw.PhysicalDeviceMultiDrawFeaturesEXT',
+-- 'Vulkan.Extensions.VK_EXT_multi_draw.PhysicalDeviceMultiDrawPropertiesEXT',
+-- 'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_multiview.PhysicalDeviceMultiviewFeatures',
+-- 'Vulkan.Extensions.VK_NVX_multiview_per_view_attributes.PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX',
+-- 'Vulkan.Extensions.VK_QCOM_multiview_per_view_render_areas.PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM',
+-- 'Vulkan.Extensions.VK_QCOM_multiview_per_view_viewports.PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_multiview.PhysicalDeviceMultiviewProperties',
+-- 'Vulkan.Extensions.VK_EXT_mutable_descriptor_type.PhysicalDeviceMutableDescriptorTypeFeaturesEXT',
+-- 'Vulkan.Extensions.VK_EXT_nested_command_buffer.PhysicalDeviceNestedCommandBufferFeaturesEXT',
+-- 'Vulkan.Extensions.VK_EXT_nested_command_buffer.PhysicalDeviceNestedCommandBufferPropertiesEXT',
+-- 'Vulkan.Extensions.VK_EXT_non_seamless_cube_map.PhysicalDeviceNonSeamlessCubeMapFeaturesEXT',
+-- 'Vulkan.Extensions.VK_EXT_opacity_micromap.PhysicalDeviceOpacityMicromapFeaturesEXT',
+-- 'Vulkan.Extensions.VK_KHR_opacity_micromap.PhysicalDeviceOpacityMicromapFeaturesKHR',
+-- 'Vulkan.Extensions.VK_EXT_opacity_micromap.PhysicalDeviceOpacityMicromapPropertiesEXT',
+-- 'Vulkan.Extensions.VK_KHR_opacity_micromap.PhysicalDeviceOpacityMicromapPropertiesKHR',
+-- 'Vulkan.Extensions.VK_NV_optical_flow.PhysicalDeviceOpticalFlowFeaturesNV',
+-- 'Vulkan.Extensions.VK_NV_optical_flow.PhysicalDeviceOpticalFlowPropertiesNV',
+-- 'Vulkan.Extensions.VK_EXT_pci_bus_info.PhysicalDevicePCIBusInfoPropertiesEXT',
+-- 'Vulkan.Extensions.VK_EXT_pageable_device_local_memory.PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPhysicalDevicePartitionedAccelerationStructureFeaturesNV VkPhysicalDevicePartitionedAccelerationStructureFeaturesNV>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPhysicalDevicePartitionedAccelerationStructurePropertiesNV VkPhysicalDevicePartitionedAccelerationStructurePropertiesNV>,
+-- 'Vulkan.Extensions.VK_NV_per_stage_descriptor_set.PhysicalDevicePerStageDescriptorSetFeaturesNV',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPhysicalDevicePerformanceCountersByRegionFeaturesARM VkPhysicalDevicePerformanceCountersByRegionFeaturesARM>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPhysicalDevicePerformanceCountersByRegionPropertiesARM VkPhysicalDevicePerformanceCountersByRegionPropertiesARM>,
+-- 'Vulkan.Extensions.VK_KHR_performance_query.PhysicalDevicePerformanceQueryFeaturesKHR',
+-- 'Vulkan.Extensions.VK_KHR_performance_query.PhysicalDevicePerformanceQueryPropertiesKHR',
+-- 'Vulkan.Extensions.VK_KHR_pipeline_binary.PhysicalDevicePipelineBinaryFeaturesKHR',
+-- 'Vulkan.Extensions.VK_KHR_pipeline_binary.PhysicalDevicePipelineBinaryPropertiesKHR',
+-- 'Vulkan.Extensions.VK_SEC_pipeline_cache_incremental_mode.PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_pipeline_creation_cache_control.PhysicalDevicePipelineCreationCacheControlFeatures',
+-- 'Vulkan.Extensions.VK_KHR_pipeline_executable_properties.PhysicalDevicePipelineExecutablePropertiesFeaturesKHR',
+-- 'Vulkan.Extensions.VK_EXT_pipeline_library_group_handles.PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT',
+-- 'Vulkan.Extensions.VK_ARM_pipeline_opacity_micromap.PhysicalDevicePipelineOpacityMicromapFeaturesARM',
+-- 'Vulkan.Extensions.VK_EXT_pipeline_properties.PhysicalDevicePipelinePropertiesFeaturesEXT',
+-- 'Vulkan.Core14.Promoted_From_VK_EXT_pipeline_protected_access.PhysicalDevicePipelineProtectedAccessFeatures',
+-- 'Vulkan.Core14.Promoted_From_VK_EXT_pipeline_robustness.PhysicalDevicePipelineRobustnessFeatures',
+-- 'Vulkan.Core14.Promoted_From_VK_EXT_pipeline_robustness.PhysicalDevicePipelineRobustnessProperties',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_maintenance2.PhysicalDevicePointClippingProperties',
+-- 'Vulkan.Extensions.VK_KHR_portability_subset.PhysicalDevicePortabilitySubsetFeaturesKHR',
+-- 'Vulkan.Extensions.VK_KHR_portability_subset.PhysicalDevicePortabilitySubsetPropertiesKHR',
+-- 'Vulkan.Extensions.VK_NV_present_barrier.PhysicalDevicePresentBarrierFeaturesNV',
+-- 'Vulkan.Extensions.VK_KHR_present_id2.PhysicalDevicePresentId2FeaturesKHR',
+-- 'Vulkan.Extensions.VK_KHR_present_id.PhysicalDevicePresentIdFeaturesKHR',
+-- 'Vulkan.Extensions.VK_NV_present_metering.PhysicalDevicePresentMeteringFeaturesNV',
+-- 'Vulkan.Extensions.VK_KHR_present_mode_fifo_latest_ready.PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR',
+-- 'Vulkan.Extensions.VK_EXT_present_timing.PhysicalDevicePresentTimingFeaturesEXT',
+-- 'Vulkan.Extensions.VK_KHR_present_wait2.PhysicalDevicePresentWait2FeaturesKHR',
+-- 'Vulkan.Extensions.VK_KHR_present_wait.PhysicalDevicePresentWaitFeaturesKHR',
+-- 'Vulkan.Extensions.VK_EXT_primitive_restart_index.PhysicalDevicePrimitiveRestartIndexFeaturesEXT',
+-- 'Vulkan.Extensions.VK_EXT_primitive_topology_list_restart.PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT',
+-- 'Vulkan.Extensions.VK_EXT_primitives_generated_query.PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT',
+-- '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',
+-- 'Vulkan.Extensions.VK_EXT_provoking_vertex.PhysicalDeviceProvokingVertexFeaturesEXT',
+-- 'Vulkan.Extensions.VK_EXT_provoking_vertex.PhysicalDeviceProvokingVertexPropertiesEXT',
+-- 'Vulkan.Extensions.VK_NV_push_constant_bank.PhysicalDevicePushConstantBankFeaturesNV',
+-- 'Vulkan.Extensions.VK_NV_push_constant_bank.PhysicalDevicePushConstantBankPropertiesNV',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_push_descriptor.PhysicalDevicePushDescriptorProperties',
+-- 'Vulkan.Extensions.VK_ARM_data_graph.PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM',
+-- 'Vulkan.Extensions.VK_QCOM_queue_perf_hint.PhysicalDeviceQueuePerfHintFeaturesQCOM',
+-- 'Vulkan.Extensions.VK_QCOM_queue_perf_hint.PhysicalDeviceQueuePerfHintPropertiesQCOM',
+-- 'Vulkan.Extensions.VK_EXT_rgba10x6_formats.PhysicalDeviceRGBA10X6FormatsFeaturesEXT',
+-- 'Vulkan.Extensions.VK_EXT_rasterization_order_attachment_access.PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT',
+-- 'Vulkan.Extensions.VK_NV_raw_access_chains.PhysicalDeviceRawAccessChainsFeaturesNV',
+-- 'Vulkan.Extensions.VK_KHR_ray_query.PhysicalDeviceRayQueryFeaturesKHR',
+-- 'Vulkan.Extensions.VK_EXT_ray_tracing_invocation_reorder.PhysicalDeviceRayTracingInvocationReorderFeaturesEXT',
+-- 'Vulkan.Extensions.VK_NV_ray_tracing_invocation_reorder.PhysicalDeviceRayTracingInvocationReorderFeaturesNV',
+-- 'Vulkan.Extensions.VK_EXT_ray_tracing_invocation_reorder.PhysicalDeviceRayTracingInvocationReorderPropertiesEXT',
+-- 'Vulkan.Extensions.VK_NV_ray_tracing_invocation_reorder.PhysicalDeviceRayTracingInvocationReorderPropertiesNV',
+-- 'Vulkan.Extensions.VK_NV_ray_tracing_linear_swept_spheres.PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV',
+-- 'Vulkan.Extensions.VK_KHR_ray_tracing_maintenance1.PhysicalDeviceRayTracingMaintenance1FeaturesKHR',
+-- 'Vulkan.Extensions.VK_NV_ray_tracing_motion_blur.PhysicalDeviceRayTracingMotionBlurFeaturesNV',
+-- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.PhysicalDeviceRayTracingPipelineFeaturesKHR',
+-- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.PhysicalDeviceRayTracingPipelinePropertiesKHR',
+-- 'Vulkan.Extensions.VK_KHR_ray_tracing_position_fetch.PhysicalDeviceRayTracingPositionFetchFeaturesKHR',
+-- 'Vulkan.Extensions.VK_NV_ray_tracing.PhysicalDeviceRayTracingPropertiesNV',
+-- 'Vulkan.Extensions.VK_NV_ray_tracing_validation.PhysicalDeviceRayTracingValidationFeaturesNV',
+-- 'Vulkan.Extensions.VK_IMG_relaxed_line_rasterization.PhysicalDeviceRelaxedLineRasterizationFeaturesIMG',
+-- 'Vulkan.Extensions.VK_ARM_render_pass_striped.PhysicalDeviceRenderPassStripedFeaturesARM',
+-- 'Vulkan.Extensions.VK_ARM_render_pass_striped.PhysicalDeviceRenderPassStripedPropertiesARM',
+-- 'Vulkan.Extensions.VK_NV_representative_fragment_test.PhysicalDeviceRepresentativeFragmentTestFeaturesNV',
+-- 'Vulkan.Extensions.VK_KHR_robustness2.PhysicalDeviceRobustness2FeaturesKHR',
+-- 'Vulkan.Extensions.VK_KHR_robustness2.PhysicalDeviceRobustness2PropertiesKHR',
+-- 'Vulkan.Extensions.VK_EXT_sample_locations.PhysicalDeviceSampleLocationsPropertiesEXT',
+-- 'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.PhysicalDeviceSamplerFilterMinmaxProperties',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.PhysicalDeviceSamplerYcbcrConversionFeatures',
+-- 'Vulkan.Core12.Promoted_From_VK_EXT_scalar_block_layout.PhysicalDeviceScalarBlockLayoutFeatures',
+-- 'Vulkan.Extensions.VK_ARM_scheduling_controls.PhysicalDeviceSchedulingControlsDispatchParametersPropertiesARM',
+-- 'Vulkan.Extensions.VK_ARM_scheduling_controls.PhysicalDeviceSchedulingControlsFeaturesARM',
+-- 'Vulkan.Extensions.VK_ARM_scheduling_controls.PhysicalDeviceSchedulingControlsPropertiesARM',
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts.PhysicalDeviceSeparateDepthStencilLayoutsFeatures',
+-- 'Vulkan.Extensions.VK_EXT_shader_64bit_indexing.PhysicalDeviceShader64BitIndexingFeaturesEXT',
+-- 'Vulkan.Extensions.VK_KHR_shader_abort.PhysicalDeviceShaderAbortFeaturesKHR',
+-- 'Vulkan.Extensions.VK_KHR_shader_abort.PhysicalDeviceShaderAbortPropertiesKHR',
+-- 'Vulkan.Extensions.VK_NV_shader_atomic_float16_vector.PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV',
+-- 'Vulkan.Extensions.VK_EXT_shader_atomic_float2.PhysicalDeviceShaderAtomicFloat2FeaturesEXT',
+-- 'Vulkan.Extensions.VK_EXT_shader_atomic_float.PhysicalDeviceShaderAtomicFloatFeaturesEXT',
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_shader_atomic_int64.PhysicalDeviceShaderAtomicInt64Features',
+-- 'Vulkan.Extensions.VK_KHR_shader_bfloat16.PhysicalDeviceShaderBfloat16FeaturesKHR',
+-- 'Vulkan.Extensions.VK_KHR_shader_clock.PhysicalDeviceShaderClockFeaturesKHR',
+-- 'Vulkan.Extensions.VK_KHR_shader_constant_data.PhysicalDeviceShaderConstantDataFeaturesKHR',
+-- 'Vulkan.Extensions.VK_ARM_shader_core_builtins.PhysicalDeviceShaderCoreBuiltinsFeaturesARM',
+-- 'Vulkan.Extensions.VK_ARM_shader_core_builtins.PhysicalDeviceShaderCoreBuiltinsPropertiesARM',
+-- 'Vulkan.Extensions.VK_AMD_shader_core_properties2.PhysicalDeviceShaderCoreProperties2AMD',
+-- 'Vulkan.Extensions.VK_AMD_shader_core_properties.PhysicalDeviceShaderCorePropertiesAMD',
+-- 'Vulkan.Extensions.VK_ARM_shader_core_properties.PhysicalDeviceShaderCorePropertiesARM',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_shader_demote_to_helper_invocation.PhysicalDeviceShaderDemoteToHelperInvocationFeatures',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_shader_draw_parameters.PhysicalDeviceShaderDrawParametersFeatures',
+-- 'Vulkan.Extensions.VK_AMD_shader_early_and_late_fragment_tests.PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD',
+-- 'Vulkan.Extensions.VK_AMDX_shader_enqueue.PhysicalDeviceShaderEnqueueFeaturesAMDX',
+-- 'Vulkan.Extensions.VK_AMDX_shader_enqueue.PhysicalDeviceShaderEnqueuePropertiesAMDX',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_shader_expect_assume.PhysicalDeviceShaderExpectAssumeFeatures',
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_shader_float16_int8.PhysicalDeviceShaderFloat16Int8Features',
+-- 'Vulkan.Extensions.VK_EXT_shader_float8.PhysicalDeviceShaderFloat8FeaturesEXT',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_shader_float_controls2.PhysicalDeviceShaderFloatControls2Features',
+-- 'Vulkan.Extensions.VK_KHR_shader_fma.PhysicalDeviceShaderFmaFeaturesKHR',
+-- 'Vulkan.Extensions.VK_EXT_shader_image_atomic_int64.PhysicalDeviceShaderImageAtomicInt64FeaturesEXT',
+-- 'Vulkan.Extensions.VK_NV_shader_image_footprint.PhysicalDeviceShaderImageFootprintFeaturesNV',
+-- 'Vulkan.Extensions.VK_ARM_shader_instrumentation.PhysicalDeviceShaderInstrumentationFeaturesARM',
+-- 'Vulkan.Extensions.VK_ARM_shader_instrumentation.PhysicalDeviceShaderInstrumentationPropertiesARM',
+-- '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_EXT_shader_long_vector.PhysicalDeviceShaderLongVectorFeaturesEXT',
+-- 'Vulkan.Extensions.VK_EXT_shader_long_vector.PhysicalDeviceShaderLongVectorPropertiesEXT',
+-- 'Vulkan.Extensions.VK_KHR_shader_maximal_reconvergence.PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR',
+-- 'Vulkan.Extensions.VK_VALVE_shader_mixed_float_dot_product.PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE',
+-- 'Vulkan.Extensions.VK_EXT_shader_module_identifier.PhysicalDeviceShaderModuleIdentifierFeaturesEXT',
+-- 'Vulkan.Extensions.VK_EXT_shader_module_identifier.PhysicalDeviceShaderModuleIdentifierPropertiesEXT',
+-- 'Vulkan.Extensions.VK_QCOM_shader_multiple_wait_queues.PhysicalDeviceShaderMultipleWaitQueuesFeaturesQCOM',
+-- 'Vulkan.Extensions.VK_QCOM_shader_multiple_wait_queues.PhysicalDeviceShaderMultipleWaitQueuesPropertiesQCOM',
+-- 'Vulkan.Extensions.VK_EXT_shader_object.PhysicalDeviceShaderObjectFeaturesEXT',
+-- 'Vulkan.Extensions.VK_EXT_shader_object.PhysicalDeviceShaderObjectPropertiesEXT',
+-- 'Vulkan.Extensions.VK_KHR_shader_quad_control.PhysicalDeviceShaderQuadControlFeaturesKHR',
+-- 'Vulkan.Extensions.VK_KHR_shader_relaxed_extended_instruction.PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR',
+-- 'Vulkan.Extensions.VK_EXT_shader_replicated_composites.PhysicalDeviceShaderReplicatedCompositesFeaturesEXT',
+-- 'Vulkan.Extensions.VK_NV_shader_sm_builtins.PhysicalDeviceShaderSMBuiltinsFeaturesNV',
+-- 'Vulkan.Extensions.VK_NV_shader_sm_builtins.PhysicalDeviceShaderSMBuiltinsPropertiesNV',
+-- 'Vulkan.Extensions.VK_EXT_shader_split_barrier.PhysicalDeviceShaderSplitBarrierFeaturesEXT',
+-- 'Vulkan.Extensions.VK_EXT_shader_split_barrier.PhysicalDeviceShaderSplitBarrierPropertiesEXT',
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_shader_subgroup_extended_types.PhysicalDeviceShaderSubgroupExtendedTypesFeatures',
+-- 'Vulkan.Extensions.VK_EXT_shader_subgroup_partitioned.PhysicalDeviceShaderSubgroupPartitionedFeaturesEXT',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_shader_subgroup_rotate.PhysicalDeviceShaderSubgroupRotateFeatures',
+-- 'Vulkan.Extensions.VK_KHR_shader_subgroup_uniform_control_flow.PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_shader_terminate_invocation.PhysicalDeviceShaderTerminateInvocationFeatures',
+-- 'Vulkan.Extensions.VK_EXT_shader_tile_image.PhysicalDeviceShaderTileImageFeaturesEXT',
+-- 'Vulkan.Extensions.VK_EXT_shader_tile_image.PhysicalDeviceShaderTileImagePropertiesEXT',
+-- 'Vulkan.Extensions.VK_EXT_shader_uniform_buffer_unsized_array.PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT',
+-- 'Vulkan.Extensions.VK_KHR_shader_untyped_pointers.PhysicalDeviceShaderUntypedPointersFeaturesKHR',
+-- '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.Core13.Promoted_From_VK_EXT_subgroup_size_control.PhysicalDeviceSubgroupSizeControlFeatures',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_subgroup_size_control.PhysicalDeviceSubgroupSizeControlProperties',
+-- 'Vulkan.Extensions.VK_EXT_subpass_merge_feedback.PhysicalDeviceSubpassMergeFeedbackFeaturesEXT',
+-- '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_swapchain_maintenance1.PhysicalDeviceSwapchainMaintenance1FeaturesKHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.PhysicalDeviceSynchronization2Features',
+-- 'Vulkan.Extensions.VK_ARM_tensors.PhysicalDeviceTensorFeaturesARM',
+-- 'Vulkan.Extensions.VK_ARM_tensors.PhysicalDeviceTensorPropertiesARM',
+-- 'Vulkan.Extensions.VK_EXT_texel_buffer_alignment.PhysicalDeviceTexelBufferAlignmentFeaturesEXT',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_texel_buffer_alignment.PhysicalDeviceTexelBufferAlignmentProperties',
+-- 'Vulkan.Extensions.VK_EXT_texture_compression_astc_3d.PhysicalDeviceTextureCompressionASTC3DFeaturesEXT',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_texture_compression_astc_hdr.PhysicalDeviceTextureCompressionASTCHDRFeatures',
+-- 'Vulkan.Extensions.VK_SEC_throttle_hint.PhysicalDeviceThrottleHintFeaturesSEC',
+-- 'Vulkan.Extensions.VK_QCOM_tile_memory_heap.PhysicalDeviceTileMemoryHeapFeaturesQCOM',
+-- 'Vulkan.Extensions.VK_QCOM_tile_memory_heap.PhysicalDeviceTileMemoryHeapPropertiesQCOM',
+-- 'Vulkan.Extensions.VK_QCOM_tile_properties.PhysicalDeviceTilePropertiesFeaturesQCOM',
+-- 'Vulkan.Extensions.VK_QCOM_tile_shading.PhysicalDeviceTileShadingFeaturesQCOM',
+-- 'Vulkan.Extensions.VK_QCOM_tile_shading.PhysicalDeviceTileShadingPropertiesQCOM',
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.PhysicalDeviceTimelineSemaphoreFeatures',
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.PhysicalDeviceTimelineSemaphoreProperties',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_tooling_info.PhysicalDeviceToolProperties',
+-- 'Vulkan.Extensions.VK_EXT_transform_feedback.PhysicalDeviceTransformFeedbackFeaturesEXT',
+-- 'Vulkan.Extensions.VK_EXT_transform_feedback.PhysicalDeviceTransformFeedbackPropertiesEXT',
+-- 'Vulkan.Extensions.VK_KHR_unified_image_layouts.PhysicalDeviceUnifiedImageLayoutsFeaturesKHR',
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_uniform_buffer_standard_layout.PhysicalDeviceUniformBufferStandardLayoutFeatures',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_variable_pointers.PhysicalDeviceVariablePointersFeatures',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_vertex_attribute_divisor.PhysicalDeviceVertexAttributeDivisorFeatures',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_vertex_attribute_divisor.PhysicalDeviceVertexAttributeDivisorProperties',
+-- 'Vulkan.Extensions.VK_EXT_vertex_attribute_divisor.PhysicalDeviceVertexAttributeDivisorPropertiesEXT',
+-- 'Vulkan.Extensions.VK_EXT_vertex_attribute_robustness.PhysicalDeviceVertexAttributeRobustnessFeaturesEXT',
+-- 'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.PhysicalDeviceVertexInputDynamicStateFeaturesEXT',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPhysicalDeviceVideoDecodeVP9FeaturesKHR VkPhysicalDeviceVideoDecodeVP9FeaturesKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPhysicalDeviceVideoEncodeAV1FeaturesKHR VkPhysicalDeviceVideoEncodeAV1FeaturesKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR VkPhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE VkPhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPhysicalDeviceVideoFormatInfoKHR VkPhysicalDeviceVideoFormatInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPhysicalDeviceVideoMaintenance1FeaturesKHR VkPhysicalDeviceVideoMaintenance1FeaturesKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPhysicalDeviceVideoMaintenance2FeaturesKHR VkPhysicalDeviceVideoMaintenance2FeaturesKHR>,
+-- 'Vulkan.Core12.PhysicalDeviceVulkan11Features',
+-- 'Vulkan.Core12.PhysicalDeviceVulkan11Properties',
+-- 'Vulkan.Core12.PhysicalDeviceVulkan12Features',
+-- 'Vulkan.Core12.PhysicalDeviceVulkan12Properties',
+-- 'Vulkan.Core13.PhysicalDeviceVulkan13Features',
+-- 'Vulkan.Core13.PhysicalDeviceVulkan13Properties',
+-- 'Vulkan.Core14.PhysicalDeviceVulkan14Features',
+-- 'Vulkan.Core14.PhysicalDeviceVulkan14Properties',
+-- '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_QCOM_ycbcr_degamma.PhysicalDeviceYcbcrDegammaFeaturesQCOM',
+-- 'Vulkan.Extensions.VK_EXT_ycbcr_image_arrays.PhysicalDeviceYcbcrImageArraysFeaturesEXT',
+-- 'Vulkan.Extensions.VK_EXT_zero_initialize_device_memory.PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_zero_initialize_workgroup_memory.PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures',
+-- 'Vulkan.Extensions.VK_KHR_pipeline_binary.PipelineBinaryCreateInfoKHR',
+-- 'Vulkan.Extensions.VK_KHR_pipeline_binary.PipelineBinaryDataInfoKHR',
+-- 'Vulkan.Extensions.VK_KHR_pipeline_binary.PipelineBinaryHandlesInfoKHR',
+-- 'Vulkan.Extensions.VK_KHR_pipeline_binary.PipelineBinaryInfoKHR',
+-- 'Vulkan.Extensions.VK_KHR_pipeline_binary.PipelineBinaryKeyKHR',
+-- 'Vulkan.Core10.PipelineCache.PipelineCacheCreateInfo',
+-- 'Vulkan.Extensions.VK_EXT_blend_operation_advanced.PipelineColorBlendAdvancedStateCreateInfoEXT',
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineColorBlendStateCreateInfo',
+-- 'Vulkan.Extensions.VK_EXT_color_write_enable.PipelineColorWriteCreateInfoEXT',
+-- 'Vulkan.Extensions.VK_AMD_pipeline_compiler_control.PipelineCompilerControlCreateInfoAMD',
+-- 'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.PipelineCoverageModulationStateCreateInfoNV',
+-- 'Vulkan.Extensions.VK_NV_coverage_reduction_mode.PipelineCoverageReductionStateCreateInfoNV',
+-- 'Vulkan.Extensions.VK_NV_fragment_coverage_to_color.PipelineCoverageToColorStateCreateInfoNV',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.PipelineCreateFlags2CreateInfo',
+-- 'Vulkan.Extensions.VK_KHR_pipeline_binary.PipelineCreateInfoKHR',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_pipeline_creation_feedback.PipelineCreationFeedbackCreateInfo',
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDepthStencilStateCreateInfo',
+-- 'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT',
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo',
+-- 'Vulkan.Extensions.VK_KHR_pipeline_executable_properties.PipelineExecutableInfoKHR',
+-- 'Vulkan.Extensions.VK_KHR_pipeline_executable_properties.PipelineExecutableInternalRepresentationKHR',
+-- 'Vulkan.Extensions.VK_KHR_pipeline_executable_properties.PipelineExecutablePropertiesKHR',
+-- 'Vulkan.Extensions.VK_KHR_pipeline_executable_properties.PipelineExecutableStatisticKHR',
+-- 'Vulkan.Extensions.VK_VALVE_fragment_density_map_layered.PipelineFragmentDensityMapLayeredCreateInfoVALVE',
+-- 'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PipelineFragmentShadingRateEnumStateCreateInfoNV',
+-- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR',
+-- 'Vulkan.Extensions.VK_NV_device_generated_commands_compute.PipelineIndirectDeviceAddressInfoNV',
+-- 'Vulkan.Extensions.VK_KHR_pipeline_executable_properties.PipelineInfoKHR',
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineInputAssemblyStateCreateInfo',
+-- 'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo',
+-- 'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR',
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineMultisampleStateCreateInfo',
+-- 'Vulkan.Extensions.VK_EXT_pipeline_properties.PipelinePropertiesIdentifierEXT',
+-- 'Vulkan.Extensions.VK_EXT_conservative_rasterization.PipelineRasterizationConservativeStateCreateInfoEXT',
+-- 'Vulkan.Extensions.VK_EXT_depth_clip_enable.PipelineRasterizationDepthClipStateCreateInfoEXT',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_line_rasterization.PipelineRasterizationLineStateCreateInfo',
+-- 'Vulkan.Extensions.VK_EXT_provoking_vertex.PipelineRasterizationProvokingVertexStateCreateInfoEXT',
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineRasterizationStateCreateInfo',
+-- 'Vulkan.Extensions.VK_AMD_rasterization_order.PipelineRasterizationStateRasterizationOrderAMD',
+-- 'Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo',
+-- 'Vulkan.Extensions.VK_NV_representative_fragment_test.PipelineRepresentativeFragmentTestStateCreateInfoNV',
+-- 'Vulkan.Core14.Promoted_From_VK_EXT_pipeline_robustness.PipelineRobustnessCreateInfo',
+-- 'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT',
+-- 'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo',
+-- 'Vulkan.Extensions.VK_EXT_shader_module_identifier.PipelineShaderStageModuleIdentifierCreateInfoEXT',
+-- 'Vulkan.Extensions.VK_AMDX_shader_enqueue.PipelineShaderStageNodeCreateInfoAMDX',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_subgroup_size_control.PipelineShaderStageRequiredSubgroupSizeCreateInfo',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_maintenance2.PipelineTessellationDomainOriginStateCreateInfo',
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineTessellationStateCreateInfo',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_vertex_attribute_divisor.PipelineVertexInputDivisorStateCreateInfo',
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineVertexInputStateCreateInfo',
+-- 'Vulkan.Extensions.VK_NV_shading_rate_image.PipelineViewportCoarseSampleOrderStateCreateInfoNV',
+-- 'Vulkan.Extensions.VK_EXT_depth_clamp_control.PipelineViewportDepthClampControlCreateInfoEXT',
+-- 'Vulkan.Extensions.VK_EXT_depth_clip_control.PipelineViewportDepthClipControlCreateInfoEXT',
+-- 'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV',
+-- 'Vulkan.Extensions.VK_NV_shading_rate_image.PipelineViewportShadingRateImageStateCreateInfoNV',
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineViewportStateCreateInfo',
+-- 'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV',
+-- 'Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV',
+-- 'Vulkan.Extensions.VK_GGP_frame_token.PresentFrameTokenGGP',
+-- 'Vulkan.Extensions.VK_KHR_present_id2.PresentId2KHR',
+-- 'Vulkan.Extensions.VK_KHR_present_id.PresentIdKHR',
+-- 'Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR',
+-- 'Vulkan.Extensions.VK_KHR_incremental_present.PresentRegionsKHR',
+-- 'Vulkan.Extensions.VK_GOOGLE_display_timing.PresentTimesInfoGOOGLE',
+-- 'Vulkan.Extensions.VK_EXT_present_timing.PresentTimingInfoEXT',
+-- 'Vulkan.Extensions.VK_EXT_present_timing.PresentTimingSurfaceCapabilitiesEXT',
+-- 'Vulkan.Extensions.VK_EXT_present_timing.PresentTimingsInfoEXT',
+-- 'Vulkan.Extensions.VK_KHR_present_wait2.PresentWait2InfoKHR',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_private_data.PrivateDataSlotCreateInfo',
+-- 'Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory.ProtectedSubmitInfo',
+-- 'Vulkan.Extensions.VK_NV_push_constant_bank.PushConstantBankInfoNV',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance6.PushConstantsInfo',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_heap.PushDataInfoEXT',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance6.PushDescriptorSetInfo',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance6.PushDescriptorSetWithTemplateInfo',
+-- 'Vulkan.Extensions.VK_NV_low_latency.QueryLowLatencySupportNV',
+-- 'Vulkan.Core10.Query.QueryPoolCreateInfo',
+-- 'Vulkan.Extensions.VK_KHR_performance_query.QueryPoolPerformanceCreateInfoKHR',
+-- 'Vulkan.Extensions.VK_INTEL_performance_query.QueryPoolPerformanceQueryCreateInfoINTEL',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueryPoolVideoEncodeFeedbackCreateInfoKHR VkQueryPoolVideoEncodeFeedbackCreateInfoKHR>,
+-- 'Vulkan.Extensions.VK_NV_device_diagnostic_checkpoints.QueueFamilyCheckpointProperties2NV',
+-- 'Vulkan.Extensions.VK_NV_device_diagnostic_checkpoints.QueueFamilyCheckpointPropertiesNV',
+-- 'Vulkan.Extensions.VK_ARM_data_graph_optical_flow.QueueFamilyDataGraphOpticalFlowPropertiesARM',
+-- 'Vulkan.Extensions.VK_ARM_data_graph.QueueFamilyDataGraphProcessingEnginePropertiesARM',
+-- 'Vulkan.Extensions.VK_ARM_data_graph.QueueFamilyDataGraphPropertiesARM',
+-- 'Vulkan.Extensions.VK_ARM_data_graph_instruction_set_tosa.QueueFamilyDataGraphTOSAPropertiesARM',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_global_priority.QueueFamilyGlobalPriorityProperties',
+-- 'Vulkan.Extensions.VK_KHR_maintenance11.QueueFamilyOptimalImageTransferGranularityPropertiesKHR',
+-- 'Vulkan.Extensions.VK_KHR_maintenance9.QueueFamilyOwnershipTransferPropertiesKHR',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.QueueFamilyProperties2',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFamilyQueryResultStatusPropertiesKHR VkQueueFamilyQueryResultStatusPropertiesKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFamilyVideoPropertiesKHR VkQueueFamilyVideoPropertiesKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkRayTracingPipelineClusterAccelerationStructureCreateInfoNV VkRayTracingPipelineClusterAccelerationStructureCreateInfoNV>,
+-- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingPipelineCreateInfoKHR',
+-- 'Vulkan.Extensions.VK_NV_ray_tracing.RayTracingPipelineCreateInfoNV',
+-- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingPipelineInterfaceCreateInfoKHR',
+-- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingShaderGroupCreateInfoKHR',
+-- 'Vulkan.Extensions.VK_NV_ray_tracing.RayTracingShaderGroupCreateInfoNV',
+-- 'Vulkan.Extensions.VK_KHR_pipeline_binary.ReleaseCapturedPipelineDataInfoKHR',
+-- 'Vulkan.Extensions.VK_KHR_swapchain_maintenance1.ReleaseSwapchainImagesInfoKHR',
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.RenderPassAttachmentBeginInfo',
+-- 'Vulkan.Core10.CommandBufferBuilding.RenderPassBeginInfo',
+-- 'Vulkan.Core10.Pass.RenderPassCreateInfo',
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.RenderPassCreateInfo2',
+-- 'Vulkan.Extensions.VK_EXT_subpass_merge_feedback.RenderPassCreationControlEXT',
+-- 'Vulkan.Extensions.VK_EXT_subpass_merge_feedback.RenderPassCreationFeedbackCreateInfoEXT',
+-- 'Vulkan.Extensions.VK_EXT_fragment_density_map.RenderPassFragmentDensityMapCreateInfoEXT',
+-- 'Vulkan.Extensions.VK_EXT_fragment_density_map_offset.RenderPassFragmentDensityMapOffsetEndInfoEXT',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_maintenance2.RenderPassInputAttachmentAspectCreateInfo',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_multiview.RenderPassMultiviewCreateInfo',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkRenderPassPerformanceCountersByRegionBeginInfoARM VkRenderPassPerformanceCountersByRegionBeginInfoARM>,
+-- 'Vulkan.Extensions.VK_EXT_sample_locations.RenderPassSampleLocationsBeginInfoEXT',
+-- 'Vulkan.Extensions.VK_ARM_render_pass_striped.RenderPassStripeBeginInfoARM',
+-- 'Vulkan.Extensions.VK_ARM_render_pass_striped.RenderPassStripeInfoARM',
+-- 'Vulkan.Extensions.VK_ARM_render_pass_striped.RenderPassStripeSubmitInfoARM',
+-- 'Vulkan.Extensions.VK_EXT_subpass_merge_feedback.RenderPassSubpassFeedbackCreateInfoEXT',
+-- 'Vulkan.Extensions.VK_QCOM_tile_shading.RenderPassTileShadingCreateInfoQCOM',
+-- 'Vulkan.Extensions.VK_QCOM_render_pass_transform.RenderPassTransformBeginInfoQCOM',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.RenderingAreaInfo',
+-- 'Vulkan.Extensions.VK_KHR_maintenance10.RenderingAttachmentFlagsInfoKHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingAttachmentInfo',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingAttachmentLocationInfo',
+-- 'Vulkan.Extensions.VK_KHR_maintenance10.RenderingEndInfoKHR',
+-- 'Vulkan.Extensions.VK_EXT_fragment_density_map.RenderingFragmentDensityMapAttachmentInfoEXT',
+-- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.RenderingFragmentShadingRateAttachmentInfoKHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.ResolveImageInfo2',
+-- 'Vulkan.Extensions.VK_KHR_maintenance10.ResolveImageModeInfoKHR',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_heap.ResourceDescriptorInfoEXT',
+-- 'Vulkan.Extensions.VK_EXT_sample_locations.SampleLocationsInfoEXT',
+-- 'Vulkan.Extensions.VK_QCOM_image_processing2.SamplerBlockMatchWindowCreateInfoQCOM',
+-- 'Vulkan.Extensions.VK_EXT_border_color_swizzle.SamplerBorderColorComponentMappingCreateInfoEXT',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.SamplerCaptureDescriptorDataInfoEXT',
+-- 'Vulkan.Core10.Sampler.SamplerCreateInfo',
+-- 'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.SamplerCubicWeightsCreateInfoQCOM',
+-- 'Vulkan.Extensions.VK_EXT_custom_border_color.SamplerCustomBorderColorCreateInfoEXT',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_heap.SamplerCustomBorderColorIndexCreateInfoEXT',
+-- 'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionCreateInfo',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionImageFormatProperties',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionInfo',
+-- 'Vulkan.Extensions.VK_QCOM_ycbcr_degamma.SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM',
+-- 'Vulkan.Extensions.VK_QNX_external_memory_screen_buffer.ScreenBufferFormatPropertiesQNX',
+-- 'Vulkan.Extensions.VK_QNX_external_memory_screen_buffer.ScreenBufferPropertiesQNX',
+-- 'Vulkan.Extensions.VK_QNX_screen_surface.ScreenSurfaceCreateInfoQNX',
+-- 'Vulkan.Core10.QueueSemaphore.SemaphoreCreateInfo',
+-- 'Vulkan.Extensions.VK_KHR_external_semaphore_fd.SemaphoreGetFdInfoKHR',
+-- '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.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.Extensions.VK_KHR_maintenance6.SetDescriptorBufferOffsetsInfoEXT',
+-- 'Vulkan.Extensions.VK_NV_low_latency2.SetLatencyMarkerInfoNV',
+-- 'Vulkan.Extensions.VK_NV_present_metering.SetPresentConfigNV',
+-- 'Vulkan.Extensions.VK_EXT_shader_object.ShaderCreateInfoEXT',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_heap.ShaderDescriptorSetAndBindingMappingInfoEXT',
+-- 'Vulkan.Extensions.VK_ARM_shader_instrumentation.ShaderInstrumentationCreateInfoARM',
+-- 'Vulkan.Extensions.VK_ARM_shader_instrumentation.ShaderInstrumentationMetricDescriptionARM',
+-- 'Vulkan.Core10.Shader.ShaderModuleCreateInfo',
+-- 'Vulkan.Extensions.VK_EXT_shader_module_identifier.ShaderModuleIdentifierEXT',
+-- 'Vulkan.Extensions.VK_EXT_validation_cache.ShaderModuleValidationCacheCreateInfoEXT',
+-- 'Vulkan.Extensions.VK_KHR_shared_presentable_image.SharedPresentSurfaceCapabilitiesKHR',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.SparseImageFormatProperties2',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.SparseImageMemoryRequirements2',
+-- 'Vulkan.Extensions.VK_GGP_stream_descriptor_surface.StreamDescriptorSurfaceCreateInfoGGP',
+-- 'Vulkan.Core10.Queue.SubmitInfo',
+-- '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',
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve.SubpassDescriptionDepthStencilResolve',
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.SubpassEndInfo',
+-- 'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.SubpassResolvePerformanceQueryEXT',
+-- 'Vulkan.Extensions.VK_HUAWEI_subpass_shading.SubpassShadingPipelineCreateInfoHUAWEI',
+-- 'Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy.SubresourceHostMemcpySize',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.SubresourceLayout2',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_heap.SubsampledImageFormatPropertiesEXT',
+-- 'Vulkan.Extensions.VK_EXT_display_surface_counter.SurfaceCapabilities2EXT',
+-- 'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.SurfaceCapabilities2KHR',
+-- 'Vulkan.Extensions.VK_EXT_full_screen_exclusive.SurfaceCapabilitiesFullScreenExclusiveEXT',
+-- 'Vulkan.Extensions.VK_NV_present_barrier.SurfaceCapabilitiesPresentBarrierNV',
+-- 'Vulkan.Extensions.VK_KHR_present_id2.SurfaceCapabilitiesPresentId2KHR',
+-- 'Vulkan.Extensions.VK_KHR_present_wait2.SurfaceCapabilitiesPresentWait2KHR',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkSurfaceCreateInfoOHOS VkSurfaceCreateInfoOHOS>,
+-- 'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.SurfaceFormat2KHR',
+-- 'Vulkan.Extensions.VK_EXT_full_screen_exclusive.SurfaceFullScreenExclusiveInfoEXT',
+-- 'Vulkan.Extensions.VK_EXT_full_screen_exclusive.SurfaceFullScreenExclusiveWin32InfoEXT',
+-- 'Vulkan.Extensions.VK_KHR_surface_maintenance1.SurfacePresentModeCompatibilityKHR',
+-- 'Vulkan.Extensions.VK_KHR_surface_maintenance1.SurfacePresentModeKHR',
+-- 'Vulkan.Extensions.VK_KHR_surface_maintenance1.SurfacePresentScalingCapabilitiesKHR',
+-- 'Vulkan.Extensions.VK_KHR_surface_protected_capabilities.SurfaceProtectedCapabilitiesKHR',
+-- 'Vulkan.Extensions.VK_EXT_present_timing.SwapchainCalibratedTimestampInfoEXT',
+-- 'Vulkan.Extensions.VK_EXT_display_control.SwapchainCounterCreateInfoEXT',
+-- 'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR',
+-- 'Vulkan.Extensions.VK_AMD_display_native_hdr.SwapchainDisplayNativeHdrCreateInfoAMD',
+-- 'Vulkan.Extensions.VK_NV_low_latency2.SwapchainLatencyCreateInfoNV',
+-- 'Vulkan.Extensions.VK_NV_present_barrier.SwapchainPresentBarrierCreateInfoNV',
+-- 'Vulkan.Extensions.VK_KHR_swapchain_maintenance1.SwapchainPresentFenceInfoKHR',
+-- 'Vulkan.Extensions.VK_KHR_swapchain_maintenance1.SwapchainPresentModeInfoKHR',
+-- 'Vulkan.Extensions.VK_KHR_swapchain_maintenance1.SwapchainPresentModesCreateInfoKHR',
+-- 'Vulkan.Extensions.VK_KHR_swapchain_maintenance1.SwapchainPresentScalingCreateInfoKHR',
+-- 'Vulkan.Extensions.VK_EXT_present_timing.SwapchainTimeDomainPropertiesEXT',
+-- 'Vulkan.Extensions.VK_EXT_present_timing.SwapchainTimingPropertiesEXT',
+-- 'Vulkan.Extensions.VK_FUCHSIA_buffer_collection.SysmemColorSpaceFUCHSIA',
+-- 'Vulkan.Extensions.VK_ARM_tensors.TensorCaptureDescriptorDataInfoARM',
+-- 'Vulkan.Extensions.VK_ARM_tensors.TensorCopyARM',
+-- 'Vulkan.Extensions.VK_ARM_tensors.TensorCreateInfoARM',
+-- 'Vulkan.Extensions.VK_ARM_tensors.TensorDependencyInfoARM',
+-- 'Vulkan.Extensions.VK_ARM_tensors.TensorDescriptionARM',
+-- 'Vulkan.Extensions.VK_ARM_tensors.TensorFormatPropertiesARM',
+-- 'Vulkan.Extensions.VK_ARM_tensors.TensorMemoryBarrierARM',
+-- 'Vulkan.Extensions.VK_ARM_tensors.TensorMemoryRequirementsInfoARM',
+-- 'Vulkan.Extensions.VK_ARM_tensors.TensorViewCaptureDescriptorDataInfoARM',
+-- 'Vulkan.Extensions.VK_ARM_tensors.TensorViewCreateInfoARM',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_heap.TexelBufferDescriptorInfoEXT',
+-- 'Vulkan.Extensions.VK_AMD_texture_gather_bias_lod.TextureLODGatherFormatPropertiesAMD',
+-- 'Vulkan.Extensions.VK_SEC_throttle_hint.ThrottleHintSubmitInfoSEC',
+-- 'Vulkan.Extensions.VK_QCOM_tile_memory_heap.TileMemoryBindInfoQCOM',
+-- 'Vulkan.Extensions.VK_QCOM_tile_memory_heap.TileMemoryRequirementsQCOM',
+-- 'Vulkan.Extensions.VK_QCOM_tile_memory_heap.TileMemorySizeInfoQCOM',
+-- 'Vulkan.Extensions.VK_QCOM_tile_properties.TilePropertiesQCOM',
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.TimelineSemaphoreSubmitInfo',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkUbmSurfaceCreateInfoSEC VkUbmSurfaceCreateInfoSEC>,
+-- 'Vulkan.Extensions.VK_EXT_validation_cache.ValidationCacheCreateInfoEXT',
+-- 'Vulkan.Extensions.VK_EXT_validation_features.ValidationFeaturesEXT',
+-- 'Vulkan.Extensions.VK_EXT_validation_flags.ValidationFlagsEXT',
+-- 'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT',
+-- 'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputBindingDescription2EXT',
+-- 'Vulkan.Extensions.VK_NN_vi_surface.ViSurfaceCreateInfoNN',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoBeginCodingInfoKHR VkVideoBeginCodingInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoCapabilitiesKHR VkVideoCapabilitiesKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoCodingControlInfoKHR VkVideoCodingControlInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeAV1CapabilitiesKHR VkVideoDecodeAV1CapabilitiesKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeAV1DpbSlotInfoKHR VkVideoDecodeAV1DpbSlotInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeAV1InlineSessionParametersInfoKHR VkVideoDecodeAV1InlineSessionParametersInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeAV1PictureInfoKHR VkVideoDecodeAV1PictureInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeAV1ProfileInfoKHR VkVideoDecodeAV1ProfileInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeAV1SessionParametersCreateInfoKHR VkVideoDecodeAV1SessionParametersCreateInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeCapabilitiesKHR VkVideoDecodeCapabilitiesKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH264CapabilitiesKHR VkVideoDecodeH264CapabilitiesKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH264DpbSlotInfoKHR VkVideoDecodeH264DpbSlotInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH264InlineSessionParametersInfoKHR VkVideoDecodeH264InlineSessionParametersInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH264PictureInfoKHR VkVideoDecodeH264PictureInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH264ProfileInfoKHR VkVideoDecodeH264ProfileInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH264SessionParametersAddInfoKHR VkVideoDecodeH264SessionParametersAddInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH264SessionParametersCreateInfoKHR VkVideoDecodeH264SessionParametersCreateInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH265CapabilitiesKHR VkVideoDecodeH265CapabilitiesKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH265DpbSlotInfoKHR VkVideoDecodeH265DpbSlotInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH265InlineSessionParametersInfoKHR VkVideoDecodeH265InlineSessionParametersInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH265PictureInfoKHR VkVideoDecodeH265PictureInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH265ProfileInfoKHR VkVideoDecodeH265ProfileInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH265SessionParametersAddInfoKHR VkVideoDecodeH265SessionParametersAddInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH265SessionParametersCreateInfoKHR VkVideoDecodeH265SessionParametersCreateInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeInfoKHR VkVideoDecodeInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeUsageInfoKHR VkVideoDecodeUsageInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeVP9CapabilitiesKHR VkVideoDecodeVP9CapabilitiesKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeVP9PictureInfoKHR VkVideoDecodeVP9PictureInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeVP9ProfileInfoKHR VkVideoDecodeVP9ProfileInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeAV1CapabilitiesKHR VkVideoEncodeAV1CapabilitiesKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeAV1DpbSlotInfoKHR VkVideoEncodeAV1DpbSlotInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeAV1GopRemainingFrameInfoKHR VkVideoEncodeAV1GopRemainingFrameInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeAV1PictureInfoKHR VkVideoEncodeAV1PictureInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeAV1ProfileInfoKHR VkVideoEncodeAV1ProfileInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeAV1QualityLevelPropertiesKHR VkVideoEncodeAV1QualityLevelPropertiesKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeAV1QuantizationMapCapabilitiesKHR VkVideoEncodeAV1QuantizationMapCapabilitiesKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeAV1RateControlInfoKHR VkVideoEncodeAV1RateControlInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeAV1RateControlLayerInfoKHR VkVideoEncodeAV1RateControlLayerInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeAV1SessionCreateInfoKHR VkVideoEncodeAV1SessionCreateInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeAV1SessionParametersCreateInfoKHR VkVideoEncodeAV1SessionParametersCreateInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeCapabilitiesKHR VkVideoEncodeCapabilitiesKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264CapabilitiesKHR VkVideoEncodeH264CapabilitiesKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264DpbSlotInfoKHR VkVideoEncodeH264DpbSlotInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264GopRemainingFrameInfoKHR VkVideoEncodeH264GopRemainingFrameInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264NaluSliceInfoKHR VkVideoEncodeH264NaluSliceInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264PictureInfoKHR VkVideoEncodeH264PictureInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264ProfileInfoKHR VkVideoEncodeH264ProfileInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264QualityLevelPropertiesKHR VkVideoEncodeH264QualityLevelPropertiesKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264QuantizationMapCapabilitiesKHR VkVideoEncodeH264QuantizationMapCapabilitiesKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264RateControlInfoKHR VkVideoEncodeH264RateControlInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264RateControlLayerInfoKHR VkVideoEncodeH264RateControlLayerInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264SessionCreateInfoKHR VkVideoEncodeH264SessionCreateInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264SessionParametersAddInfoKHR VkVideoEncodeH264SessionParametersAddInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264SessionParametersCreateInfoKHR VkVideoEncodeH264SessionParametersCreateInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264SessionParametersFeedbackInfoKHR VkVideoEncodeH264SessionParametersFeedbackInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264SessionParametersGetInfoKHR VkVideoEncodeH264SessionParametersGetInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH265CapabilitiesKHR VkVideoEncodeH265CapabilitiesKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH265DpbSlotInfoKHR VkVideoEncodeH265DpbSlotInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH265GopRemainingFrameInfoKHR VkVideoEncodeH265GopRemainingFrameInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH265NaluSliceSegmentInfoKHR VkVideoEncodeH265NaluSliceSegmentInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH265PictureInfoKHR VkVideoEncodeH265PictureInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH265ProfileInfoKHR VkVideoEncodeH265ProfileInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH265QualityLevelPropertiesKHR VkVideoEncodeH265QualityLevelPropertiesKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH265QuantizationMapCapabilitiesKHR VkVideoEncodeH265QuantizationMapCapabilitiesKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH265RateControlInfoKHR VkVideoEncodeH265RateControlInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH265RateControlLayerInfoKHR VkVideoEncodeH265RateControlLayerInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH265SessionCreateInfoKHR VkVideoEncodeH265SessionCreateInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH265SessionParametersAddInfoKHR VkVideoEncodeH265SessionParametersAddInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH265SessionParametersCreateInfoKHR VkVideoEncodeH265SessionParametersCreateInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH265SessionParametersFeedbackInfoKHR VkVideoEncodeH265SessionParametersFeedbackInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH265SessionParametersGetInfoKHR VkVideoEncodeH265SessionParametersGetInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeInfoKHR VkVideoEncodeInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeIntraRefreshCapabilitiesKHR VkVideoEncodeIntraRefreshCapabilitiesKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeIntraRefreshInfoKHR VkVideoEncodeIntraRefreshInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeProfileRgbConversionInfoVALVE VkVideoEncodeProfileRgbConversionInfoVALVE>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeQualityLevelInfoKHR VkVideoEncodeQualityLevelInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeQualityLevelPropertiesKHR VkVideoEncodeQualityLevelPropertiesKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeQuantizationMapCapabilitiesKHR VkVideoEncodeQuantizationMapCapabilitiesKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeQuantizationMapInfoKHR VkVideoEncodeQuantizationMapInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeQuantizationMapSessionParametersCreateInfoKHR VkVideoEncodeQuantizationMapSessionParametersCreateInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeRateControlInfoKHR VkVideoEncodeRateControlInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeRateControlLayerInfoKHR VkVideoEncodeRateControlLayerInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeRgbConversionCapabilitiesVALVE VkVideoEncodeRgbConversionCapabilitiesVALVE>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeSessionIntraRefreshCreateInfoKHR VkVideoEncodeSessionIntraRefreshCreateInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeSessionParametersFeedbackInfoKHR VkVideoEncodeSessionParametersFeedbackInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeSessionParametersGetInfoKHR VkVideoEncodeSessionParametersGetInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeSessionRgbConversionCreateInfoVALVE VkVideoEncodeSessionRgbConversionCreateInfoVALVE>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeUsageInfoKHR VkVideoEncodeUsageInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEndCodingInfoKHR VkVideoEndCodingInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoFormatAV1QuantizationMapPropertiesKHR VkVideoFormatAV1QuantizationMapPropertiesKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoFormatH265QuantizationMapPropertiesKHR VkVideoFormatH265QuantizationMapPropertiesKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoFormatPropertiesKHR VkVideoFormatPropertiesKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoFormatQuantizationMapPropertiesKHR VkVideoFormatQuantizationMapPropertiesKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoInlineQueryInfoKHR VkVideoInlineQueryInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoPictureResourceInfoKHR VkVideoPictureResourceInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoProfileInfoKHR VkVideoProfileInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoProfileListInfoKHR VkVideoProfileListInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoReferenceIntraRefreshInfoKHR VkVideoReferenceIntraRefreshInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoReferenceSlotInfoKHR VkVideoReferenceSlotInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoSessionCreateInfoKHR VkVideoSessionCreateInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoSessionMemoryRequirementsKHR VkVideoSessionMemoryRequirementsKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoSessionParametersCreateInfoKHR VkVideoSessionParametersCreateInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoSessionParametersUpdateInfoKHR VkVideoSessionParametersUpdateInfoKHR>,
+-- 'Vulkan.Extensions.VK_KHR_wayland_surface.WaylandSurfaceCreateInfoKHR',
+-- 'Vulkan.Extensions.VK_KHR_win32_keyed_mutex.Win32KeyedMutexAcquireReleaseInfoKHR',
+-- 'Vulkan.Extensions.VK_NV_win32_keyed_mutex.Win32KeyedMutexAcquireReleaseInfoNV',
+-- 'Vulkan.Extensions.VK_KHR_win32_surface.Win32SurfaceCreateInfoKHR',
+-- 'Vulkan.Core10.DescriptorSet.WriteDescriptorSet',
+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.WriteDescriptorSetAccelerationStructureKHR',
+-- 'Vulkan.Extensions.VK_NV_ray_tracing.WriteDescriptorSetAccelerationStructureNV',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_inline_uniform_block.WriteDescriptorSetInlineUniformBlock',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkWriteDescriptorSetPartitionedAccelerationStructureNV VkWriteDescriptorSetPartitionedAccelerationStructureNV>,
+-- 'Vulkan.Extensions.VK_ARM_tensors.WriteDescriptorSetTensorARM',
+-- 'Vulkan.Extensions.VK_EXT_device_generated_commands.WriteIndirectExecutionSetPipelineEXT',
+-- 'Vulkan.Extensions.VK_EXT_device_generated_commands.WriteIndirectExecutionSetShaderEXT',
+-- 'Vulkan.Extensions.VK_KHR_xcb_surface.XcbSurfaceCreateInfoKHR',
+-- 'Vulkan.Extensions.VK_KHR_xlib_surface.XlibSurfaceCreateInfoKHR'
+newtype StructureType = StructureType Int32
+  deriving newtype (Eq, Ord, Storable, Zero)
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_APPLICATION_INFO"
+pattern STRUCTURE_TYPE_APPLICATION_INFO = StructureType 0
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO"
+pattern STRUCTURE_TYPE_INSTANCE_CREATE_INFO = StructureType 1
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO"
+pattern STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = StructureType 2
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO"
+pattern STRUCTURE_TYPE_DEVICE_CREATE_INFO = StructureType 3
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SUBMIT_INFO"
+pattern STRUCTURE_TYPE_SUBMIT_INFO = StructureType 4
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO"
+pattern STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = StructureType 5
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE"
+pattern STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = StructureType 6
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BIND_SPARSE_INFO"
+pattern STRUCTURE_TYPE_BIND_SPARSE_INFO = StructureType 7
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_FENCE_CREATE_INFO"
+pattern STRUCTURE_TYPE_FENCE_CREATE_INFO = StructureType 8
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO"
+pattern STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = StructureType 9
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EVENT_CREATE_INFO"
+pattern STRUCTURE_TYPE_EVENT_CREATE_INFO = StructureType 10
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO"
+pattern STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = StructureType 11
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO"
+pattern STRUCTURE_TYPE_BUFFER_CREATE_INFO = StructureType 12
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO"
+pattern STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = StructureType 13
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO"
+pattern STRUCTURE_TYPE_IMAGE_CREATE_INFO = StructureType 14
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO"
+pattern STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = StructureType 15
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO"
+pattern STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = StructureType 16
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO"
+pattern STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = StructureType 17
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO"
+pattern STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = StructureType 18
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO"
+pattern STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = StructureType 19
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO"
+pattern STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = StructureType 20
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO"
+pattern STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = StructureType 21
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO"
+pattern STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = StructureType 22
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO"
+pattern STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = StructureType 23
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO"
+pattern STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = StructureType 24
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO"
+pattern STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = StructureType 25
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO"
+pattern STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = StructureType 26
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO"
+pattern STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = StructureType 27
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO"
+pattern STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = StructureType 28
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO"
+pattern STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = StructureType 29
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO"
+pattern STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = StructureType 30
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO"
+pattern STRUCTURE_TYPE_SAMPLER_CREATE_INFO = StructureType 31
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO"
+pattern STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = StructureType 32
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO"
+pattern STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = StructureType 33
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO"
+pattern STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = StructureType 34
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET"
+pattern STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = StructureType 35
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET"
+pattern STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = StructureType 36
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO"
+pattern STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = StructureType 37
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO"
+pattern STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = StructureType 38
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO"
+pattern STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = StructureType 39
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO"
+pattern STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = StructureType 40
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO"
+pattern STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = StructureType 41
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO"
+pattern STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = StructureType 42
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO"
+pattern STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = StructureType 43
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER"
+pattern STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = StructureType 44
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER"
+pattern STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = StructureType 45
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_BARRIER"
+pattern STRUCTURE_TYPE_MEMORY_BARRIER = StructureType 46
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO"
+pattern STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = StructureType 47
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO"
+pattern STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = StructureType 48
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_RESTART_INDEX_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_RESTART_INDEX_FEATURES_EXT = StructureType 1000678000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_NEURAL_ACCELERATOR_STATISTICS_FEATURES_ARM"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_NEURAL_ACCELERATOR_STATISTICS_FEATURES_ARM = StructureType 1000676002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_NEURAL_STATISTICS_CREATE_INFO_ARM"
+pattern STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_NEURAL_STATISTICS_CREATE_INFO_ARM = StructureType 1000676001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_NEURAL_STATISTICS_CREATE_INFO_ARM"
+pattern STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_NEURAL_STATISTICS_CREATE_INFO_ARM = StructureType 1000676000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_THROTTLE_HINT_SUBMIT_INFO_SEC"
+pattern STRUCTURE_TYPE_THROTTLE_HINT_SUBMIT_INFO_SEC = StructureType 1000674001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_THROTTLE_HINT_FEATURES_SEC"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_THROTTLE_HINT_FEATURES_SEC = StructureType 1000674000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MIXED_FLOAT_DOT_PRODUCT_FEATURES_VALVE"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MIXED_FLOAT_DOT_PRODUCT_FEATURES_VALVE = StructureType 1000673000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_PARTITIONED_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_PARTITIONED_FEATURES_EXT = StructureType 1000662000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_QUEUE_FAMILY_OPTIMAL_IMAGE_TRANSFER_GRANULARITY_PROPERTIES_KHR"
+pattern STRUCTURE_TYPE_QUEUE_FAMILY_OPTIMAL_IMAGE_TRANSFER_GRANULARITY_PROPERTIES_KHR = StructureType 1000657001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_11_FEATURES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_11_FEATURES_KHR = StructureType 1000657000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_OCCUPANCY_PRIORITY_FEATURES_NV"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_OCCUPANCY_PRIORITY_FEATURES_NV = StructureType 1000645001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COMPUTE_OCCUPANCY_PRIORITY_PARAMETERS_NV"
+pattern STRUCTURE_TYPE_COMPUTE_OCCUPANCY_PRIORITY_PARAMETERS_NV = StructureType 1000645000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_UNIFORM_BUFFER_UNSIZED_ARRAY_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_UNIFORM_BUFFER_UNSIZED_ARRAY_FEATURES_EXT = StructureType 1000642000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CACHE_INCREMENTAL_MODE_FEATURES_SEC"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CACHE_INCREMENTAL_MODE_FEATURES_SEC = StructureType 1000637000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_LONG_VECTOR_PROPERTIES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_LONG_VECTOR_PROPERTIES_EXT = StructureType 1000635001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_LONG_VECTOR_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_LONG_VECTOR_FEATURES_EXT = StructureType 1000635000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SINGLE_NODE_CONNECTION_ARM"
+pattern STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SINGLE_NODE_CONNECTION_ARM = StructureType 1000631008
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SINGLE_NODE_CREATE_INFO_ARM"
+pattern STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SINGLE_NODE_CREATE_INFO_ARM = StructureType 1000631007
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_RESOURCE_INFO_IMAGE_LAYOUT_ARM"
+pattern STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_RESOURCE_INFO_IMAGE_LAYOUT_ARM = StructureType 1000631006
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_OPTICAL_FLOW_CREATE_INFO_ARM"
+pattern STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_OPTICAL_FLOW_CREATE_INFO_ARM = StructureType 1000631002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_OPTICAL_FLOW_DISPATCH_INFO_ARM"
+pattern STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_OPTICAL_FLOW_DISPATCH_INFO_ARM = StructureType 1000631005
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DATA_GRAPH_OPTICAL_FLOW_IMAGE_FORMAT_PROPERTIES_ARM"
+pattern STRUCTURE_TYPE_DATA_GRAPH_OPTICAL_FLOW_IMAGE_FORMAT_PROPERTIES_ARM = StructureType 1000631004
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DATA_GRAPH_OPTICAL_FLOW_IMAGE_FORMAT_INFO_ARM"
+pattern STRUCTURE_TYPE_DATA_GRAPH_OPTICAL_FLOW_IMAGE_FORMAT_INFO_ARM = StructureType 1000631003
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_OPTICAL_FLOW_PROPERTIES_ARM"
+pattern STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_OPTICAL_FLOW_PROPERTIES_ARM = StructureType 1000631001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_OPTICAL_FLOW_FEATURES_ARM"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_OPTICAL_FLOW_FEATURES_ARM = StructureType 1000631000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RESOLVE_IMAGE_MODE_INFO_KHR"
+pattern STRUCTURE_TYPE_RESOLVE_IMAGE_MODE_INFO_KHR = StructureType 1000630004
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDERING_END_INFO_KHR"
+pattern STRUCTURE_TYPE_RENDERING_END_INFO_KHR = StructureType 1000619003
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_FLAGS_INFO_KHR"
+pattern STRUCTURE_TYPE_RENDERING_ATTACHMENT_FLAGS_INFO_KHR = StructureType 1000630002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_10_PROPERTIES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_10_PROPERTIES_KHR = StructureType 1000630001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_10_FEATURES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_10_FEATURES_KHR = StructureType 1000630000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_BUILTIN_MODEL_CREATE_INFO_QCOM"
+pattern STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_BUILTIN_MODEL_CREATE_INFO_QCOM = StructureType 1000629001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_MODEL_FEATURES_QCOM"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_MODEL_FEATURES_QCOM = StructureType 1000629000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_CUSTOM_RESOLVE_CREATE_INFO_EXT"
+pattern STRUCTURE_TYPE_CUSTOM_RESOLVE_CREATE_INFO_EXT = StructureType 1000628002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BEGIN_CUSTOM_RESOLVE_INFO_EXT"
+pattern STRUCTURE_TYPE_BEGIN_CUSTOM_RESOLVE_INFO_EXT = StructureType 1000628001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_RESOLVE_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_RESOLVE_FEATURES_EXT = StructureType 1000628000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_64_BIT_INDEXING_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_64_BIT_INDEXING_FEATURES_EXT = StructureType 1000627000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_KHR"
+pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_KHR = StructureType 1000623003
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MICROMAP_DATA_KHR"
+pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MICROMAP_DATA_KHR = StructureType 1000623002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_PROPERTIES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_PROPERTIES_KHR = StructureType 1000623001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_KHR = StructureType 1000623000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_KHR = StructureType 1000361000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_DEVICE_MEMORY_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_DEVICE_MEMORY_FEATURES_EXT = StructureType 1000620000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_EXT"
+pattern STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_EXT = StructureType 1000425002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_EXT = StructureType 1000425001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_EXT = StructureType 1000425000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_METERING_FEATURES_NV"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_METERING_FEATURES_NV = StructureType 1000613001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SET_PRESENT_CONFIG_NV"
+pattern STRUCTURE_TYPE_SET_PRESENT_CONFIG_NV = StructureType 1000613000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_KHR = StructureType 1000286001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_KHR = StructureType 1000286000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_DENSITY_MAP_LAYERED_CREATE_INFO_VALVE"
+pattern STRUCTURE_TYPE_PIPELINE_FRAGMENT_DENSITY_MAP_LAYERED_CREATE_INFO_VALVE = StructureType 1000611002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_PROPERTIES_VALVE"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_PROPERTIES_VALVE = StructureType 1000611001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_FEATURES_VALVE"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_FEATURES_VALVE = StructureType 1000611000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FORMAT_PACK_FEATURES_ARM"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FORMAT_PACK_FEATURES_ARM = StructureType 1000609000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_ROBUSTNESS_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_ROBUSTNESS_FEATURES_EXT = StructureType 1000608000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SHADER_INSTRUMENTATION_METRIC_DESCRIPTION_ARM"
+pattern STRUCTURE_TYPE_SHADER_INSTRUMENTATION_METRIC_DESCRIPTION_ARM = StructureType 1000607003
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SHADER_INSTRUMENTATION_CREATE_INFO_ARM"
+pattern STRUCTURE_TYPE_SHADER_INSTRUMENTATION_CREATE_INFO_ARM = StructureType 1000607002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INSTRUMENTATION_PROPERTIES_ARM"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INSTRUMENTATION_PROPERTIES_ARM = StructureType 1000607001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INSTRUMENTATION_FEATURES_ARM"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INSTRUMENTATION_FEATURES_ARM = StructureType 1000607000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_KHR = StructureType 1000421000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_GET_METAL_HANDLE_INFO_EXT"
+pattern STRUCTURE_TYPE_MEMORY_GET_METAL_HANDLE_INFO_EXT = StructureType 1000602002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_METAL_HANDLE_PROPERTIES_EXT"
+pattern STRUCTURE_TYPE_MEMORY_METAL_HANDLE_PROPERTIES_EXT = StructureType 1000602001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMPORT_MEMORY_METAL_HANDLE_INFO_EXT"
+pattern STRUCTURE_TYPE_IMPORT_MEMORY_METAL_HANDLE_INFO_EXT = StructureType 1000602000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_OPACITY_MICROMAP_FEATURES_ARM"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_OPACITY_MICROMAP_FEATURES_ARM = StructureType 1000596000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_PROPERTIES_NV"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_PROPERTIES_NV = StructureType 1000593002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_FLEXIBLE_DIMENSIONS_PROPERTIES_NV"
+pattern STRUCTURE_TYPE_COOPERATIVE_MATRIX_FLEXIBLE_DIMENSIONS_PROPERTIES_NV = StructureType 1000593001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_FEATURES_NV"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_FEATURES_NV = StructureType 1000593000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_HDR_VIVID_DYNAMIC_METADATA_HUAWEI"
+pattern STRUCTURE_TYPE_HDR_VIVID_DYNAMIC_METADATA_HUAWEI = StructureType 1000590001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HDR_VIVID_FEATURES_HUAWEI"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_HDR_VIVID_FEATURES_HUAWEI = StructureType 1000590000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_QUEUE_FAMILY_OWNERSHIP_TRANSFER_PROPERTIES_KHR"
+pattern STRUCTURE_TYPE_QUEUE_FAMILY_OWNERSHIP_TRANSFER_PROPERTIES_KHR = StructureType 1000584002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_PROPERTIES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_PROPERTIES_KHR = StructureType 1000584001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_FEATURES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_FEATURES_KHR = StructureType 1000584000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLAMP_CONTROL_CREATE_INFO_EXT"
+pattern STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLAMP_CONTROL_CREATE_INFO_EXT = StructureType 1000582001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_CONTROL_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_CONTROL_FEATURES_EXT = StructureType 1000582000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_EXT = StructureType 1000581001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_EXT = StructureType 1000581000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_CONSTANT_BANK_PROPERTIES_NV"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_CONSTANT_BANK_PROPERTIES_NV = StructureType 1000580002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_CONSTANT_BANK_FEATURES_NV"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_CONSTANT_BANK_FEATURES_NV = StructureType 1000580001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PUSH_CONSTANT_BANK_INFO_NV"
+pattern STRUCTURE_TYPE_PUSH_CONSTANT_BANK_INFO_NV = StructureType 1000580000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FMA_FEATURES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FMA_FEATURES_KHR = StructureType 1000579000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_ALIGNMENT_CONTROL_CREATE_INFO_MESA"
+pattern STRUCTURE_TYPE_IMAGE_ALIGNMENT_CONTROL_CREATE_INFO_MESA = StructureType 1000575002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_PROPERTIES_MESA"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_PROPERTIES_MESA = StructureType 1000575001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_FEATURES_MESA"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_FEATURES_MESA = StructureType 1000575000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_BARRIER_ACCESS_FLAGS_3_KHR"
+pattern STRUCTURE_TYPE_MEMORY_BARRIER_ACCESS_FLAGS_3_KHR = StructureType 1000574002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_8_FEATURES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_8_FEATURES_KHR = StructureType 1000574000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_FAULT_DEBUG_INFO_KHR"
+pattern STRUCTURE_TYPE_DEVICE_FAULT_DEBUG_INFO_KHR = StructureType 1000573003
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_FAULT_INFO_KHR"
+pattern STRUCTURE_TYPE_DEVICE_FAULT_INFO_KHR = StructureType 1000573002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_PROPERTIES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_PROPERTIES_KHR = StructureType 1000573001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_FEATURES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_FEATURES_KHR = StructureType 1000573000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_GENERATED_COMMANDS_SHADER_INFO_EXT"
+pattern STRUCTURE_TYPE_GENERATED_COMMANDS_SHADER_INFO_EXT = StructureType 1000572014
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_GENERATED_COMMANDS_PIPELINE_INFO_EXT"
+pattern STRUCTURE_TYPE_GENERATED_COMMANDS_PIPELINE_INFO_EXT = StructureType 1000572013
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXT"
+pattern STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXT = StructureType 1000572012
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_INFO_EXT"
+pattern STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_INFO_EXT = StructureType 1000572011
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXT"
+pattern STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXT = StructureType 1000572010
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_SHADER_EXT"
+pattern STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_SHADER_EXT = StructureType 1000572009
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXT"
+pattern STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXT = StructureType 1000572008
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_EXT"
+pattern STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_EXT = StructureType 1000572007
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXT"
+pattern STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXT = StructureType 1000572006
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_EXT"
+pattern STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_EXT = StructureType 1000572004
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_CREATE_INFO_EXT"
+pattern STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_CREATE_INFO_EXT = StructureType 1000572003
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXT"
+pattern STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXT = StructureType 1000572002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXT = StructureType 1000572001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXT = StructureType 1000572000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_VALIDATION_FEATURES_NV"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_VALIDATION_FEATURES_NV = StructureType 1000568000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT8_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT8_FEATURES_EXT = StructureType 1000567000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_REPLICATED_COMPOSITES_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_REPLICATED_COMPOSITES_FEATURES_EXT = StructureType 1000564000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT16_VECTOR_FEATURES_NV"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT16_VECTOR_FEATURES_NV = StructureType 1000563000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_VULKAN_PROPERTIES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_VULKAN_PROPERTIES_KHR = StructureType 1000562004
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_KHR = StructureType 1000562003
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_LIST_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_LIST_KHR = StructureType 1000562002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_PROPERTIES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_PROPERTIES_KHR = StructureType 1000562001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_FEATURES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_FEATURES_KHR = StructureType 1000562000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMMAND_BUFFER_INHERITANCE_FEATURES_NV"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_COMMAND_BUFFER_INHERITANCE_FEATURES_NV = StructureType 1000559000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_RELAXED_EXTENDED_INSTRUCTION_FEATURES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_RELAXED_EXTENDED_INSTRUCTION_FEATURES_KHR = StructureType 1000558000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_COMPUTE_QUEUE_PROPERTIES_NV"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_COMPUTE_QUEUE_PROPERTIES_NV = StructureType 1000556003
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_DATA_PARAMS_NV"
+pattern STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_DATA_PARAMS_NV = StructureType 1000556002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_CREATE_INFO_NV"
+pattern STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_CREATE_INFO_NV = StructureType 1000556001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_DEVICE_CREATE_INFO_NV"
+pattern STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_DEVICE_CREATE_INFO_NV = StructureType 1000556000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAW_ACCESS_CHAINS_FEATURES_NV"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_RAW_ACCESS_CHAINS_FEATURES_NV = StructureType 1000555000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DISPLAY_MODE_STEREO_PROPERTIES_NV"
+pattern STRUCTURE_TYPE_DISPLAY_MODE_STEREO_PROPERTIES_NV = StructureType 1000551001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DISPLAY_SURFACE_STEREO_CREATE_INFO_NV"
+pattern STRUCTURE_TYPE_DISPLAY_SURFACE_STEREO_CREATE_INFO_NV = StructureType 1000551000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DECOMPRESS_MEMORY_INFO_EXT"
+pattern STRUCTURE_TYPE_DECOMPRESS_MEMORY_INFO_EXT = StructureType 1000550002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_EXT = StructureType 1000427001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_EXT = StructureType 1000427000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INDIRECT_INFO_KHR"
+pattern STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INDIRECT_INFO_KHR = StructureType 1000549003
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COPY_MEMORY_INDIRECT_INFO_KHR"
+pattern STRUCTURE_TYPE_COPY_MEMORY_INDIRECT_INFO_KHR = StructureType 1000549002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_KHR = StructureType 1000426001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_KHR = StructureType 1000549000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_TILE_MEMORY_SIZE_INFO_QCOM"
+pattern STRUCTURE_TYPE_TILE_MEMORY_SIZE_INFO_QCOM = StructureType 1000547004
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_TILE_MEMORY_BIND_INFO_QCOM"
+pattern STRUCTURE_TYPE_TILE_MEMORY_BIND_INFO_QCOM = StructureType 1000547003
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_TILE_MEMORY_REQUIREMENTS_QCOM"
+pattern STRUCTURE_TYPE_TILE_MEMORY_REQUIREMENTS_QCOM = StructureType 1000547002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_MEMORY_HEAP_PROPERTIES_QCOM"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_MEMORY_HEAP_PROPERTIES_QCOM = StructureType 1000547001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_MEMORY_HEAP_FEATURES_QCOM"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_MEMORY_HEAP_FEATURES_QCOM = StructureType 1000547000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_POOL_OVERALLOCATION_FEATURES_NV"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_POOL_OVERALLOCATION_FEATURES_NV = StructureType 1000546000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BIND_DESCRIPTOR_BUFFER_EMBEDDED_SAMPLERS_INFO_EXT"
+pattern STRUCTURE_TYPE_BIND_DESCRIPTOR_BUFFER_EMBEDDED_SAMPLERS_INFO_EXT = StructureType 1000545008
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SET_DESCRIPTOR_BUFFER_OFFSETS_INFO_EXT"
+pattern STRUCTURE_TYPE_SET_DESCRIPTOR_BUFFER_OFFSETS_INFO_EXT = StructureType 1000545007
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_KHR"
+pattern STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_KHR = StructureType 1000184000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_DRIVER_PROPERTIES_MSFT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_DRIVER_PROPERTIES_MSFT = StructureType 1000530000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCREEN_BUFFER_FEATURES_QNX"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCREEN_BUFFER_FEATURES_QNX = StructureType 1000529004
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_QNX"
+pattern STRUCTURE_TYPE_EXTERNAL_FORMAT_QNX = StructureType 1000529003
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMPORT_SCREEN_BUFFER_INFO_QNX"
+pattern STRUCTURE_TYPE_IMPORT_SCREEN_BUFFER_INFO_QNX = StructureType 1000529002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SCREEN_BUFFER_FORMAT_PROPERTIES_QNX"
+pattern STRUCTURE_TYPE_SCREEN_BUFFER_FORMAT_PROPERTIES_QNX = StructureType 1000529001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SCREEN_BUFFER_PROPERTIES_QNX"
+pattern STRUCTURE_TYPE_SCREEN_BUFFER_PROPERTIES_QNX = StructureType 1000529000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ATTACHMENT_FEEDBACK_LOOP_INFO_EXT"
+pattern STRUCTURE_TYPE_ATTACHMENT_FEEDBACK_LOOP_INFO_EXT = StructureType 1000527001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFIED_IMAGE_LAYOUTS_FEATURES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFIED_IMAGE_LAYOUTS_FEATURES_KHR = StructureType 1000527000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_FEATURES_EXT = StructureType 1000524000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_CLAMP_FEATURES_QCOM"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_CLAMP_FEATURES_QCOM = StructureType 1000521000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_YCBCR_DEGAMMA_CREATE_INFO_QCOM"
+pattern STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_YCBCR_DEGAMMA_CREATE_INFO_QCOM = StructureType 1000520001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_DEGAMMA_FEATURES_QCOM"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_DEGAMMA_FEATURES_QCOM = StructureType 1000520000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BLIT_IMAGE_CUBIC_WEIGHTS_INFO_QCOM"
+pattern STRUCTURE_TYPE_BLIT_IMAGE_CUBIC_WEIGHTS_INFO_QCOM = StructureType 1000519002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_WEIGHTS_FEATURES_QCOM"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_WEIGHTS_FEATURES_QCOM = StructureType 1000519001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SAMPLER_CUBIC_WEIGHTS_CREATE_INFO_QCOM"
+pattern STRUCTURE_TYPE_SAMPLER_CUBIC_WEIGHTS_CREATE_INFO_QCOM = StructureType 1000519000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SAMPLER_BLOCK_MATCH_WINDOW_CREATE_INFO_QCOM"
+pattern STRUCTURE_TYPE_SAMPLER_BLOCK_MATCH_WINDOW_CREATE_INFO_QCOM = StructureType 1000518002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_PROPERTIES_QCOM"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_PROPERTIES_QCOM = StructureType 1000518001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_FEATURES_QCOM"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_FEATURES_QCOM = StructureType 1000518000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PER_STAGE_DESCRIPTOR_SET_FEATURES_NV"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PER_STAGE_DESCRIPTOR_SET_FEATURES_NV = StructureType 1000516000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_PROPERTIES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_PROPERTIES_KHR = StructureType 1000511000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_KHR = StructureType 1000201000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_RENDER_AREAS_RENDER_PASS_BEGIN_INFO_QCOM"
+pattern STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_RENDER_AREAS_RENDER_PASS_BEGIN_INFO_QCOM = StructureType 1000510001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_RENDER_AREAS_FEATURES_QCOM"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_RENDER_AREAS_FEATURES_QCOM = StructureType 1000510000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_TOSA_PROPERTIES_ARM"
+pattern STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_TOSA_PROPERTIES_ARM = StructureType 1000508000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CONSTANT_TENSOR_SEMI_STRUCTURED_SPARSITY_INFO_ARM"
+pattern STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CONSTANT_TENSOR_SEMI_STRUCTURED_SPARSITY_INFO_ARM = StructureType 1000507015
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_INFO_ARM"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_INFO_ARM = StructureType 1000507019
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_PROPERTIES_ARM"
+pattern STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_PROPERTIES_ARM = StructureType 1000507018
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_PROPERTIES_ARM"
+pattern STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_PROPERTIES_ARM = StructureType 1000507017
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DATA_GRAPH_PROCESSING_ENGINE_CREATE_INFO_ARM"
+pattern STRUCTURE_TYPE_DATA_GRAPH_PROCESSING_ENGINE_CREATE_INFO_ARM = StructureType 1000507016
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_DISPATCH_INFO_ARM"
+pattern STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_DISPATCH_INFO_ARM = StructureType 1000507014
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_IDENTIFIER_CREATE_INFO_ARM"
+pattern STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_IDENTIFIER_CREATE_INFO_ARM = StructureType 1000507013
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENT_ARM"
+pattern STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENT_ARM = StructureType 1000507012
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENTS_INFO_ARM"
+pattern STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENTS_INFO_ARM = StructureType 1000507011
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_COMPILER_CONTROL_CREATE_INFO_ARM"
+pattern STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_COMPILER_CONTROL_CREATE_INFO_ARM = StructureType 1000507010
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_INFO_ARM"
+pattern STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_INFO_ARM = StructureType 1000507009
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_PROPERTY_QUERY_RESULT_ARM"
+pattern STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_PROPERTY_QUERY_RESULT_ARM = StructureType 1000507008
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SHADER_MODULE_CREATE_INFO_ARM"
+pattern STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SHADER_MODULE_CREATE_INFO_ARM = StructureType 1000507007
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_FEATURES_ARM"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_FEATURES_ARM = StructureType 1000507006
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BIND_DATA_GRAPH_PIPELINE_SESSION_MEMORY_INFO_ARM"
+pattern STRUCTURE_TYPE_BIND_DATA_GRAPH_PIPELINE_SESSION_MEMORY_INFO_ARM = StructureType 1000507005
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_MEMORY_REQUIREMENTS_INFO_ARM"
+pattern STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_MEMORY_REQUIREMENTS_INFO_ARM = StructureType 1000507004
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CONSTANT_ARM"
+pattern STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CONSTANT_ARM = StructureType 1000507003
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_RESOURCE_INFO_ARM"
+pattern STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_RESOURCE_INFO_ARM = StructureType 1000507002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_CREATE_INFO_ARM"
+pattern STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_CREATE_INFO_ARM = StructureType 1000507001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CREATE_INFO_ARM"
+pattern STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CREATE_INFO_ARM = StructureType 1000507000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_KHR = StructureType 1000506002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_KHR"
+pattern STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_KHR = StructureType 1000506001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_KHR = StructureType 1000506000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_LATENCY_SURFACE_CAPABILITIES_NV"
+pattern STRUCTURE_TYPE_LATENCY_SURFACE_CAPABILITIES_NV = StructureType 1000505008
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SWAPCHAIN_LATENCY_CREATE_INFO_NV"
+pattern STRUCTURE_TYPE_SWAPCHAIN_LATENCY_CREATE_INFO_NV = StructureType 1000505007
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_OUT_OF_BAND_QUEUE_TYPE_INFO_NV"
+pattern STRUCTURE_TYPE_OUT_OF_BAND_QUEUE_TYPE_INFO_NV = StructureType 1000505006
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_LATENCY_SUBMISSION_PRESENT_ID_NV"
+pattern STRUCTURE_TYPE_LATENCY_SUBMISSION_PRESENT_ID_NV = StructureType 1000505005
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_LATENCY_TIMINGS_FRAME_REPORT_NV"
+pattern STRUCTURE_TYPE_LATENCY_TIMINGS_FRAME_REPORT_NV = StructureType 1000505004
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_GET_LATENCY_MARKER_INFO_NV"
+pattern STRUCTURE_TYPE_GET_LATENCY_MARKER_INFO_NV = StructureType 1000505003
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SET_LATENCY_MARKER_INFO_NV"
+pattern STRUCTURE_TYPE_SET_LATENCY_MARKER_INFO_NV = StructureType 1000505002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_LATENCY_SLEEP_INFO_NV"
+pattern STRUCTURE_TYPE_LATENCY_SLEEP_INFO_NV = StructureType 1000505001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_LATENCY_SLEEP_MODE_INFO_NV"
+pattern STRUCTURE_TYPE_LATENCY_SLEEP_MODE_INFO_NV = StructureType 1000505000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INTERNALLY_SYNCHRONIZED_QUEUES_FEATURES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_INTERNALLY_SYNCHRONIZED_QUEUES_FEATURES_KHR = StructureType 1000504000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_FEATURES_EXT = StructureType 1000499000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT = StructureType 1000498000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_PROPERTIES_ARM"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_PROPERTIES_ARM = StructureType 1000497001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM = StructureType 1000497000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_LAYER_SETTINGS_CREATE_INFO_EXT"
+pattern STRUCTURE_TYPE_LAYER_SETTINGS_CREATE_INFO_EXT = StructureType 1000496000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_PROPERTIES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_PROPERTIES_EXT = StructureType 1000495001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_FEATURES_EXT = StructureType 1000495000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT"
+pattern STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT = StructureType 1000351002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT = StructureType 1000351000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_PROPERTIES_NV"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_PROPERTIES_NV = StructureType 1000492001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_FEATURES_NV"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_FEATURES_NV = StructureType 1000492000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_CONVERT_COOPERATIVE_VECTOR_MATRIX_INFO_NV"
+pattern STRUCTURE_TYPE_CONVERT_COOPERATIVE_VECTOR_MATRIX_INFO_NV = StructureType 1000491004
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COOPERATIVE_VECTOR_PROPERTIES_NV"
+pattern STRUCTURE_TYPE_COOPERATIVE_VECTOR_PROPERTIES_NV = StructureType 1000491002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_VECTOR_PROPERTIES_NV"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_VECTOR_PROPERTIES_NV = StructureType 1000491001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_VECTOR_FEATURES_NV"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_VECTOR_FEATURES_NV = StructureType 1000491000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV = StructureType 1000490001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV = StructureType 1000490000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_VIEWPORTS_FEATURES_QCOM"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_VIEWPORTS_FEATURES_QCOM = StructureType 1000488000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_KHR"
+pattern STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_KHR = StructureType 1000275005
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_KHR"
+pattern STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_KHR = StructureType 1000275004
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_KHR"
+pattern STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_KHR = StructureType 1000275003
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_KHR"
+pattern STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_KHR = StructureType 1000275002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_KHR"
+pattern STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_KHR = StructureType 1000275001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_KHR = StructureType 1000275000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_KHR"
+pattern STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_KHR = StructureType 1000274002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_KHR"
+pattern STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_KHR = StructureType 1000274001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_KHR"
+pattern STRUCTURE_TYPE_SURFACE_PRESENT_MODE_KHR = StructureType 1000274000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_AMIGO_PROFILING_SUBMIT_INFO_SEC"
+pattern STRUCTURE_TYPE_AMIGO_PROFILING_SUBMIT_INFO_SEC = StructureType 1000485001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_AMIGO_PROFILING_FEATURES_SEC"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_AMIGO_PROFILING_FEATURES_SEC = StructureType 1000485000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_TILE_PROPERTIES_QCOM"
+pattern STRUCTURE_TYPE_TILE_PROPERTIES_QCOM = StructureType 1000484001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM = StructureType 1000484000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_BINARY_HANDLES_INFO_KHR"
+pattern STRUCTURE_TYPE_PIPELINE_BINARY_HANDLES_INFO_KHR = StructureType 1000483009
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_PIPELINE_BINARY_INTERNAL_CACHE_CONTROL_KHR"
+pattern STRUCTURE_TYPE_DEVICE_PIPELINE_BINARY_INTERNAL_CACHE_CONTROL_KHR = StructureType 1000483008
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_CREATE_INFO_KHR"
+pattern STRUCTURE_TYPE_PIPELINE_CREATE_INFO_KHR = StructureType 1000483007
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_BINARY_DATA_INFO_KHR"
+pattern STRUCTURE_TYPE_PIPELINE_BINARY_DATA_INFO_KHR = StructureType 1000483006
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RELEASE_CAPTURED_PIPELINE_DATA_INFO_KHR"
+pattern STRUCTURE_TYPE_RELEASE_CAPTURED_PIPELINE_DATA_INFO_KHR = StructureType 1000483005
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_BINARY_PROPERTIES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_BINARY_PROPERTIES_KHR = StructureType 1000483004
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_BINARY_KEY_KHR"
+pattern STRUCTURE_TYPE_PIPELINE_BINARY_KEY_KHR = StructureType 1000483003
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_BINARY_INFO_KHR"
+pattern STRUCTURE_TYPE_PIPELINE_BINARY_INFO_KHR = StructureType 1000483002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_BINARY_CREATE_INFO_KHR"
+pattern STRUCTURE_TYPE_PIPELINE_BINARY_CREATE_INFO_KHR = StructureType 1000483001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_BINARY_FEATURES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_BINARY_FEATURES_KHR = StructureType 1000483000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT"
+pattern STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT = StructureType 1000352002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT"
+pattern STRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT = StructureType 1000352001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SHADER_CREATE_INFO_EXT"
+pattern STRUCTURE_TYPE_SHADER_CREATE_INFO_EXT = StructureType 1000482002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_PROPERTIES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_PROPERTIES_EXT = StructureType 1000482001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT = StructureType 1000482000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_POSITION_FETCH_FEATURES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_POSITION_FETCH_FEATURES_KHR = StructureType 1000481000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PRESENT_WAIT_2_INFO_KHR"
+pattern STRUCTURE_TYPE_PRESENT_WAIT_2_INFO_KHR = StructureType 1000480002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_2_FEATURES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_2_FEATURES_KHR = StructureType 1000480001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_WAIT_2_KHR"
+pattern STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_WAIT_2_KHR = StructureType 1000480000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_2_FEATURES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_2_FEATURES_KHR = StructureType 1000479002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PRESENT_ID_2_KHR"
+pattern STRUCTURE_TYPE_PRESENT_ID_2_KHR = StructureType 1000479001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_ID_2_KHR"
+pattern STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_ID_2_KHR = StructureType 1000479000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DENSE_GEOMETRY_FORMAT_TRIANGLES_DATA_AMDX"
+pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DENSE_GEOMETRY_FORMAT_TRIANGLES_DATA_AMDX = StructureType 1000478001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DENSE_GEOMETRY_FORMAT_FEATURES_AMDX"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DENSE_GEOMETRY_FORMAT_FEATURES_AMDX = StructureType 1000478000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ANTI_LAG_PRESENTATION_INFO_AMD"
+pattern STRUCTURE_TYPE_ANTI_LAG_PRESENTATION_INFO_AMD = StructureType 1000476002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ANTI_LAG_DATA_AMD"
+pattern STRUCTURE_TYPE_ANTI_LAG_DATA_AMD = StructureType 1000476001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ANTI_LAG_FEATURES_AMD"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_ANTI_LAG_FEATURES_AMD = StructureType 1000476000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_RESOLVE_PROPERTIES_ANDROID"
+pattern STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_RESOLVE_PROPERTIES_ANDROID = StructureType 1000468002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_PROPERTIES_ANDROID"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_PROPERTIES_ANDROID = StructureType 1000468001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_FEATURES_ANDROID"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_FEATURES_ANDROID = StructureType 1000468000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT = StructureType 1000465000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_PRIVATE_DATA_INFO_NV"
+pattern STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_PRIVATE_DATA_INFO_NV = StructureType 1000464010
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_OPTICAL_FLOW_EXECUTE_INFO_NV"
+pattern STRUCTURE_TYPE_OPTICAL_FLOW_EXECUTE_INFO_NV = StructureType 1000464005
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_INFO_NV"
+pattern STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_INFO_NV = StructureType 1000464004
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_OPTICAL_FLOW_IMAGE_FORMAT_PROPERTIES_NV"
+pattern STRUCTURE_TYPE_OPTICAL_FLOW_IMAGE_FORMAT_PROPERTIES_NV = StructureType 1000464003
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_OPTICAL_FLOW_IMAGE_FORMAT_INFO_NV"
+pattern STRUCTURE_TYPE_OPTICAL_FLOW_IMAGE_FORMAT_INFO_NV = StructureType 1000464002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_PROPERTIES_NV"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_PROPERTIES_NV = StructureType 1000464001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_FEATURES_NV"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_FEATURES_NV = StructureType 1000464000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_EXT = StructureType 1000342000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SHADER_MODULE_IDENTIFIER_EXT"
+pattern STRUCTURE_TYPE_SHADER_MODULE_IDENTIFIER_EXT = StructureType 1000462003
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_MODULE_IDENTIFIER_CREATE_INFO_EXT"
+pattern STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_MODULE_IDENTIFIER_CREATE_INFO_EXT = StructureType 1000462002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_PROPERTIES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_PROPERTIES_EXT = StructureType 1000462001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT = StructureType 1000462000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_FRAME_BOUNDARY_TENSORS_ARM"
+pattern STRUCTURE_TYPE_FRAME_BOUNDARY_TENSORS_ARM = StructureType 1000460023
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_TENSOR_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_ARM"
+pattern STRUCTURE_TYPE_TENSOR_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_ARM = StructureType 1000460022
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_TENSOR_CAPTURE_DESCRIPTOR_DATA_INFO_ARM"
+pattern STRUCTURE_TYPE_TENSOR_CAPTURE_DESCRIPTOR_DATA_INFO_ARM = StructureType 1000460021
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_GET_TENSOR_INFO_ARM"
+pattern STRUCTURE_TYPE_DESCRIPTOR_GET_TENSOR_INFO_ARM = StructureType 1000460020
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_PROPERTIES_ARM"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_PROPERTIES_ARM = StructureType 1000460019
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_FEATURES_ARM"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_FEATURES_ARM = StructureType 1000460018
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_TENSOR_CREATE_INFO_ARM"
+pattern STRUCTURE_TYPE_EXTERNAL_MEMORY_TENSOR_CREATE_INFO_ARM = StructureType 1000460017
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXTERNAL_TENSOR_PROPERTIES_ARM"
+pattern STRUCTURE_TYPE_EXTERNAL_TENSOR_PROPERTIES_ARM = StructureType 1000460016
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_TENSOR_INFO_ARM"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_TENSOR_INFO_ARM = StructureType 1000460015
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_TENSOR_ARM"
+pattern STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_TENSOR_ARM = StructureType 1000460014
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_TENSOR_DEPENDENCY_INFO_ARM"
+pattern STRUCTURE_TYPE_TENSOR_DEPENDENCY_INFO_ARM = StructureType 1000460013
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_TENSOR_COPY_ARM"
+pattern STRUCTURE_TYPE_TENSOR_COPY_ARM = StructureType 1000460012
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COPY_TENSOR_INFO_ARM"
+pattern STRUCTURE_TYPE_COPY_TENSOR_INFO_ARM = StructureType 1000460011
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_TENSOR_MEMORY_REQUIREMENTS_ARM"
+pattern STRUCTURE_TYPE_DEVICE_TENSOR_MEMORY_REQUIREMENTS_ARM = StructureType 1000460010
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TENSOR_FEATURES_ARM"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_TENSOR_FEATURES_ARM = StructureType 1000460009
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_TENSOR_MEMORY_BARRIER_ARM"
+pattern STRUCTURE_TYPE_TENSOR_MEMORY_BARRIER_ARM = StructureType 1000460008
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_TENSOR_MEMORY_REQUIREMENTS_INFO_ARM"
+pattern STRUCTURE_TYPE_TENSOR_MEMORY_REQUIREMENTS_INFO_ARM = StructureType 1000460007
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_TENSOR_DESCRIPTION_ARM"
+pattern STRUCTURE_TYPE_TENSOR_DESCRIPTION_ARM = StructureType 1000460006
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_TENSOR_FORMAT_PROPERTIES_ARM"
+pattern STRUCTURE_TYPE_TENSOR_FORMAT_PROPERTIES_ARM = StructureType 1000460005
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TENSOR_PROPERTIES_ARM"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_TENSOR_PROPERTIES_ARM = StructureType 1000460004
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_TENSOR_ARM"
+pattern STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_TENSOR_ARM = StructureType 1000460003
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BIND_TENSOR_MEMORY_INFO_ARM"
+pattern STRUCTURE_TYPE_BIND_TENSOR_MEMORY_INFO_ARM = StructureType 1000460002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_TENSOR_VIEW_CREATE_INFO_ARM"
+pattern STRUCTURE_TYPE_TENSOR_VIEW_CREATE_INFO_ARM = StructureType 1000460001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_TENSOR_CREATE_INFO_ARM"
+pattern STRUCTURE_TYPE_TENSOR_CREATE_INFO_ARM = StructureType 1000460000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_LIST_LUNARG"
+pattern STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_LIST_LUNARG = StructureType 1000459001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_INFO_LUNARG"
+pattern STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_INFO_LUNARG = StructureType 1000459000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDER_PASS_SUBPASS_FEEDBACK_CREATE_INFO_EXT"
+pattern STRUCTURE_TYPE_RENDER_PASS_SUBPASS_FEEDBACK_CREATE_INFO_EXT = StructureType 1000458003
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDER_PASS_CREATION_FEEDBACK_CREATE_INFO_EXT"
+pattern STRUCTURE_TYPE_RENDER_PASS_CREATION_FEEDBACK_CREATE_INFO_EXT = StructureType 1000458002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDER_PASS_CREATION_CONTROL_EXT"
+pattern STRUCTURE_TYPE_RENDER_PASS_CREATION_CONTROL_EXT = StructureType 1000458001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT = StructureType 1000458000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT = StructureType 1000455001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT = StructureType 1000455000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT"
+pattern STRUCTURE_TYPE_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT = StructureType 1000453000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_PROPERTIES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_PROPERTIES_EXT = StructureType 1000451001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_FEATURES_EXT = StructureType 1000451000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_VIEW_SAMPLE_WEIGHT_CREATE_INFO_QCOM"
+pattern STRUCTURE_TYPE_IMAGE_VIEW_SAMPLE_WEIGHT_CREATE_INFO_QCOM = StructureType 1000440002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_PROPERTIES_QCOM"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_PROPERTIES_QCOM = StructureType 1000440001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM = StructureType 1000440000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT = StructureType 1000437000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MAXIMAL_RECONVERGENCE_FEATURES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MAXIMAL_RECONVERGENCE_FEATURES_KHR = StructureType 1000434000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV = StructureType 1000430000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_SPHERES_DATA_NV"
+pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_SPHERES_DATA_NV = StructureType 1000429010
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_LINEAR_SWEPT_SPHERES_DATA_NV"
+pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_LINEAR_SWEPT_SPHERES_DATA_NV = StructureType 1000429009
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_LINEAR_SWEPT_SPHERES_FEATURES_NV"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_LINEAR_SWEPT_SPHERES_FEATURES_NV = StructureType 1000429008
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_INDIRECT_DEVICE_ADDRESS_INFO_NV"
+pattern STRUCTURE_TYPE_PIPELINE_INDIRECT_DEVICE_ADDRESS_INFO_NV = StructureType 1000428002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_INDIRECT_BUFFER_INFO_NV"
+pattern STRUCTURE_TYPE_COMPUTE_PIPELINE_INDIRECT_BUFFER_INFO_NV = StructureType 1000428001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_COMPUTE_FEATURES_NV"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_COMPUTE_FEATURES_NV = StructureType 1000428000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV = StructureType 1000426000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_SUBMIT_INFO_ARM"
+pattern STRUCTURE_TYPE_RENDER_PASS_STRIPE_SUBMIT_INFO_ARM = StructureType 1000424004
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_INFO_ARM"
+pattern STRUCTURE_TYPE_RENDER_PASS_STRIPE_INFO_ARM = StructureType 1000424003
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_BEGIN_INFO_ARM"
+pattern STRUCTURE_TYPE_RENDER_PASS_STRIPE_BEGIN_INFO_ARM = StructureType 1000424002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_PROPERTIES_ARM"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_PROPERTIES_ARM = StructureType 1000424001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_FEATURES_ARM"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_FEATURES_ARM = StructureType 1000424000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT = StructureType 1000422000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE"
+pattern STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE = StructureType 1000420002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_BINDING_REFERENCE_VALVE"
+pattern STRUCTURE_TYPE_DESCRIPTOR_SET_BINDING_REFERENCE_VALVE = StructureType 1000420001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE = StructureType 1000420000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_VIEW_SLICED_CREATE_INFO_EXT"
+pattern STRUCTURE_TYPE_IMAGE_VIEW_SLICED_CREATE_INFO_EXT = StructureType 1000418001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_SLICED_VIEW_OF_3D_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_SLICED_VIEW_OF_3D_FEATURES_EXT = StructureType 1000418000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_DISPATCH_PARAMETERS_PROPERTIES_ARM"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_DISPATCH_PARAMETERS_PROPERTIES_ARM = StructureType 1000417004
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DISPATCH_PARAMETERS_ARM"
+pattern STRUCTURE_TYPE_DISPATCH_PARAMETERS_ARM = StructureType 1000417003
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_PROPERTIES_ARM"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_PROPERTIES_ARM = StructureType 1000417002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_FEATURES_ARM"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_FEATURES_ARM = StructureType 1000417001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_QUEUE_SHADER_CORE_CONTROL_CREATE_INFO_ARM"
+pattern STRUCTURE_TYPE_DEVICE_QUEUE_SHADER_CORE_CONTROL_CREATE_INFO_ARM = StructureType 1000417000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_ARM"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_ARM = StructureType 1000415000
+
+-- 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"
+pattern STRUCTURE_TYPE_SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT = StructureType 1000411001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT = StructureType 1000411000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_VRS_FEATURES_HUAWEI"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_VRS_FEATURES_HUAWEI = StructureType 1000404002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI = StructureType 1000404001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI = StructureType 1000404000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_DISPLACEMENT_MICROMAP_NV"
+pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_DISPLACEMENT_MICROMAP_NV = StructureType 1000397002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_PROPERTIES_NV"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_PROPERTIES_NV = StructureType 1000397001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_FEATURES_NV"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_FEATURES_NV = StructureType 1000397000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT"
+pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT = StructureType 1000396009
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MICROMAP_BUILD_SIZES_INFO_EXT"
+pattern STRUCTURE_TYPE_MICROMAP_BUILD_SIZES_INFO_EXT = StructureType 1000396008
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MICROMAP_CREATE_INFO_EXT"
+pattern STRUCTURE_TYPE_MICROMAP_CREATE_INFO_EXT = StructureType 1000396007
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_PROPERTIES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_PROPERTIES_EXT = StructureType 1000396006
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_EXT = StructureType 1000396005
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COPY_MEMORY_TO_MICROMAP_INFO_EXT"
+pattern STRUCTURE_TYPE_COPY_MEMORY_TO_MICROMAP_INFO_EXT = StructureType 1000396004
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COPY_MICROMAP_TO_MEMORY_INFO_EXT"
+pattern STRUCTURE_TYPE_COPY_MICROMAP_TO_MEMORY_INFO_EXT = StructureType 1000396003
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COPY_MICROMAP_INFO_EXT"
+pattern STRUCTURE_TYPE_COPY_MICROMAP_INFO_EXT = StructureType 1000396002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MICROMAP_VERSION_INFO_EXT"
+pattern STRUCTURE_TYPE_MICROMAP_VERSION_INFO_EXT = StructureType 1000396001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MICROMAP_BUILD_INFO_EXT"
+pattern STRUCTURE_TYPE_MICROMAP_BUILD_INFO_EXT = StructureType 1000396000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_PROPERTIES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_PROPERTIES_EXT = StructureType 1000395001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_FEATURES_EXT = StructureType 1000395000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT = StructureType 1000393000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT = StructureType 1000392001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT = StructureType 1000392000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_VIEW_MIN_LOD_CREATE_INFO_EXT"
+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_PHYSICAL_DEVICE_SHADER_UNTYPED_POINTERS_FEATURES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_UNTYPED_POINTERS_FEATURES_KHR = StructureType 1000387000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR = StructureType 1000386000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT = StructureType 1000382000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT"
+pattern STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT = StructureType 1000381001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT = StructureType 1000381000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SCREEN_SURFACE_CREATE_INFO_QNX"
+pattern STRUCTURE_TYPE_SCREEN_SURFACE_CREATE_INFO_QNX = StructureType 1000378000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT = StructureType 1000377000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_INFO_EXT"
+pattern STRUCTURE_TYPE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_INFO_EXT = StructureType 1000376002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SUBPASS_RESOLVE_PERFORMANCE_QUERY_EXT"
+pattern STRUCTURE_TYPE_SUBPASS_RESOLVE_PERFORMANCE_QUERY_EXT = StructureType 1000376001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_FEATURES_EXT = StructureType 1000376000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_FRAME_BOUNDARY_EXT"
+pattern STRUCTURE_TYPE_FRAME_BOUNDARY_EXT = StructureType 1000375001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAME_BOUNDARY_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAME_BOUNDARY_FEATURES_EXT = StructureType 1000375000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT = StructureType 1000372001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_PROPERTIES_IDENTIFIER_EXT"
+pattern STRUCTURE_TYPE_PIPELINE_PROPERTIES_IDENTIFIER_EXT = StructureType 1000372000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV = StructureType 1000371001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_GET_REMOTE_ADDRESS_INFO_NV"
+pattern STRUCTURE_TYPE_MEMORY_GET_REMOTE_ADDRESS_INFO_NV = StructureType 1000371000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI = StructureType 1000370000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_PROPERTIES_HUAWEI"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_PROPERTIES_HUAWEI = StructureType 1000369002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI = StructureType 1000369001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SUBPASS_SHADING_PIPELINE_CREATE_INFO_HUAWEI"
+pattern STRUCTURE_TYPE_SUBPASS_SHADING_PIPELINE_CREATE_INFO_HUAWEI = StructureType 1000369000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BUFFER_COLLECTION_CONSTRAINTS_INFO_FUCHSIA"
+pattern STRUCTURE_TYPE_BUFFER_COLLECTION_CONSTRAINTS_INFO_FUCHSIA = StructureType 1000366009
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SYSMEM_COLOR_SPACE_FUCHSIA"
+pattern STRUCTURE_TYPE_SYSMEM_COLOR_SPACE_FUCHSIA = StructureType 1000366008
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_FORMAT_CONSTRAINTS_INFO_FUCHSIA"
+pattern STRUCTURE_TYPE_IMAGE_FORMAT_CONSTRAINTS_INFO_FUCHSIA = StructureType 1000366007
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_CONSTRAINTS_INFO_FUCHSIA"
+pattern STRUCTURE_TYPE_IMAGE_CONSTRAINTS_INFO_FUCHSIA = StructureType 1000366006
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BUFFER_COLLECTION_BUFFER_CREATE_INFO_FUCHSIA"
+pattern STRUCTURE_TYPE_BUFFER_COLLECTION_BUFFER_CREATE_INFO_FUCHSIA = StructureType 1000366005
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BUFFER_CONSTRAINTS_INFO_FUCHSIA"
+pattern STRUCTURE_TYPE_BUFFER_CONSTRAINTS_INFO_FUCHSIA = StructureType 1000366004
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BUFFER_COLLECTION_PROPERTIES_FUCHSIA"
+pattern STRUCTURE_TYPE_BUFFER_COLLECTION_PROPERTIES_FUCHSIA = StructureType 1000366003
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BUFFER_COLLECTION_IMAGE_CREATE_INFO_FUCHSIA"
+pattern STRUCTURE_TYPE_BUFFER_COLLECTION_IMAGE_CREATE_INFO_FUCHSIA = StructureType 1000366002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMPORT_MEMORY_BUFFER_COLLECTION_FUCHSIA"
+pattern STRUCTURE_TYPE_IMPORT_MEMORY_BUFFER_COLLECTION_FUCHSIA = StructureType 1000366001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BUFFER_COLLECTION_CREATE_INFO_FUCHSIA"
+pattern STRUCTURE_TYPE_BUFFER_COLLECTION_CREATE_INFO_FUCHSIA = StructureType 1000366000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA"
+pattern STRUCTURE_TYPE_SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA = StructureType 1000365001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA"
+pattern STRUCTURE_TYPE_IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA = StructureType 1000365000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA"
+pattern STRUCTURE_TYPE_MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA = StructureType 1000364002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA"
+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_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"
+pattern STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLIP_CONTROL_CREATE_INFO_EXT = StructureType 1000355001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT = StructureType 1000355000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_ADDRESS_BINDING_CALLBACK_DATA_EXT"
+pattern STRUCTURE_TYPE_DEVICE_ADDRESS_BINDING_CALLBACK_DATA_EXT = StructureType 1000354001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ADDRESS_BINDING_REPORT_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_ADDRESS_BINDING_REPORT_FEATURES_EXT = StructureType 1000354000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRM_PROPERTIES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DRM_PROPERTIES_EXT = StructureType 1000353000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT = StructureType 1000352000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT"
+pattern STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT = StructureType 1000346000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT = StructureType 1000344000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_FAULT_INFO_EXT"
+pattern STRUCTURE_TYPE_DEVICE_FAULT_INFO_EXT = StructureType 1000341002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_FAULT_COUNTS_EXT"
+pattern STRUCTURE_TYPE_DEVICE_FAULT_COUNTS_EXT = StructureType 1000341001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_FEATURES_EXT = StructureType 1000341000
+
+-- 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_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT = StructureType 1000339000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT"
+pattern STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT = StructureType 1000338004
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT"
+pattern STRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT = StructureType 1000338001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT = StructureType 1000338000
+
+-- 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_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"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT = StructureType 1000332001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT = StructureType 1000332000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT = StructureType 1000330000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_EXT = StructureType 1000328001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT = StructureType 1000328000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MOTION_INFO_NV"
+pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MOTION_INFO_NV = StructureType 1000327002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV = StructureType 1000327001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV"
+pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV = StructureType 1000327000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV"
+pattern STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV = StructureType 1000326002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV"
+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_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_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_PROPERTIES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_PROPERTIES_KHR = StructureType 1000322000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR = StructureType 1000203000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_FEATURES_AMD"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_FEATURES_AMD = StructureType 1000321000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT"
+pattern STRUCTURE_TYPE_GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT = StructureType 1000320002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT = StructureType 1000320001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT = StructureType 1000320000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_2_KHR"
+pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_2_KHR = StructureType 1000318015
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_MARKER_INFO_AMD"
+pattern STRUCTURE_TYPE_MEMORY_MARKER_INFO_AMD = StructureType 1000318014
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BIND_TRANSFORM_FEEDBACK_BUFFER_2_INFO_EXT"
+pattern STRUCTURE_TYPE_BIND_TRANSFORM_FEEDBACK_BUFFER_2_INFO_EXT = StructureType 1000318013
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_2_EXT"
+pattern STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_2_EXT = StructureType 1000318012
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DISPATCH_INDIRECT_2_INFO_KHR"
+pattern STRUCTURE_TYPE_DISPATCH_INDIRECT_2_INFO_KHR = StructureType 1000318011
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DRAW_INDIRECT_COUNT_2_INFO_KHR"
+pattern STRUCTURE_TYPE_DRAW_INDIRECT_COUNT_2_INFO_KHR = StructureType 1000318010
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DRAW_INDIRECT_2_INFO_KHR"
+pattern STRUCTURE_TYPE_DRAW_INDIRECT_2_INFO_KHR = StructureType 1000318009
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BIND_VERTEX_BUFFER_3_INFO_KHR"
+pattern STRUCTURE_TYPE_BIND_VERTEX_BUFFER_3_INFO_KHR = StructureType 1000318008
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BIND_INDEX_BUFFER_3_INFO_KHR"
+pattern STRUCTURE_TYPE_BIND_INDEX_BUFFER_3_INFO_KHR = StructureType 1000318007
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_ADDRESS_COMMANDS_FEATURES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_ADDRESS_COMMANDS_FEATURES_KHR = StructureType 1000318006
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_RANGE_BARRIER_KHR"
+pattern STRUCTURE_TYPE_MEMORY_RANGE_BARRIER_KHR = StructureType 1000318005
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_RANGE_BARRIERS_INFO_KHR"
+pattern STRUCTURE_TYPE_MEMORY_RANGE_BARRIERS_INFO_KHR = StructureType 1000318004
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COPY_DEVICE_MEMORY_IMAGE_INFO_KHR"
+pattern STRUCTURE_TYPE_COPY_DEVICE_MEMORY_IMAGE_INFO_KHR = StructureType 1000318003
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_MEMORY_IMAGE_COPY_KHR"
+pattern STRUCTURE_TYPE_DEVICE_MEMORY_IMAGE_COPY_KHR = StructureType 1000318002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COPY_DEVICE_MEMORY_INFO_KHR"
+pattern STRUCTURE_TYPE_COPY_DEVICE_MEMORY_INFO_KHR = StructureType 1000318001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_MEMORY_COPY_KHR"
+pattern STRUCTURE_TYPE_DEVICE_MEMORY_COPY_KHR = StructureType 1000318000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT"
+pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT = StructureType 1000316009
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_PUSH_DESCRIPTOR_BUFFER_HANDLE_EXT"
+pattern STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_PUSH_DESCRIPTOR_BUFFER_HANDLE_EXT = StructureType 1000316012
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_INFO_EXT"
+pattern STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_INFO_EXT = StructureType 1000316011
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_OPAQUE_CAPTURE_DESCRIPTOR_DATA_CREATE_INFO_EXT"
+pattern STRUCTURE_TYPE_OPAQUE_CAPTURE_DESCRIPTOR_DATA_CREATE_INFO_EXT = StructureType 1000316010
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SAMPLER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT"
+pattern STRUCTURE_TYPE_SAMPLER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT = StructureType 1000316008
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_EXT"
+pattern STRUCTURE_TYPE_IMAGE_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_EXT = StructureType 1000316007
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT"
+pattern STRUCTURE_TYPE_IMAGE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT = StructureType 1000316006
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BUFFER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT"
+pattern STRUCTURE_TYPE_BUFFER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT = StructureType 1000316005
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_GET_INFO_EXT"
+pattern STRUCTURE_TYPE_DESCRIPTOR_GET_INFO_EXT = StructureType 1000316004
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_ADDRESS_INFO_EXT"
+pattern STRUCTURE_TYPE_DESCRIPTOR_ADDRESS_INFO_EXT = StructureType 1000316003
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT = StructureType 1000316002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT = StructureType 1000316001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT = StructureType 1000316000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMPORT_METAL_SHARED_EVENT_INFO_EXT"
+pattern STRUCTURE_TYPE_IMPORT_METAL_SHARED_EVENT_INFO_EXT = StructureType 1000311011
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXPORT_METAL_SHARED_EVENT_INFO_EXT"
+pattern STRUCTURE_TYPE_EXPORT_METAL_SHARED_EVENT_INFO_EXT = StructureType 1000311010
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMPORT_METAL_IO_SURFACE_INFO_EXT"
+pattern STRUCTURE_TYPE_IMPORT_METAL_IO_SURFACE_INFO_EXT = StructureType 1000311009
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXPORT_METAL_IO_SURFACE_INFO_EXT"
+pattern STRUCTURE_TYPE_EXPORT_METAL_IO_SURFACE_INFO_EXT = StructureType 1000311008
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMPORT_METAL_TEXTURE_INFO_EXT"
+pattern STRUCTURE_TYPE_IMPORT_METAL_TEXTURE_INFO_EXT = StructureType 1000311007
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXPORT_METAL_TEXTURE_INFO_EXT"
+pattern STRUCTURE_TYPE_EXPORT_METAL_TEXTURE_INFO_EXT = StructureType 1000311006
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMPORT_METAL_BUFFER_INFO_EXT"
+pattern STRUCTURE_TYPE_IMPORT_METAL_BUFFER_INFO_EXT = StructureType 1000311005
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXPORT_METAL_BUFFER_INFO_EXT"
+pattern STRUCTURE_TYPE_EXPORT_METAL_BUFFER_INFO_EXT = StructureType 1000311004
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXPORT_METAL_COMMAND_QUEUE_INFO_EXT"
+pattern STRUCTURE_TYPE_EXPORT_METAL_COMMAND_QUEUE_INFO_EXT = StructureType 1000311003
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXPORT_METAL_DEVICE_INFO_EXT"
+pattern STRUCTURE_TYPE_EXPORT_METAL_DEVICE_INFO_EXT = StructureType 1000311002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECTS_INFO_EXT"
+pattern STRUCTURE_TYPE_EXPORT_METAL_OBJECTS_INFO_EXT = StructureType 1000311001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECT_CREATE_INFO_EXT"
+pattern STRUCTURE_TYPE_EXPORT_METAL_OBJECT_CREATE_INFO_EXT = StructureType 1000311000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_QUERY_LOW_LATENCY_SUPPORT_NV"
+pattern STRUCTURE_TYPE_QUERY_LOW_LATENCY_SUPPORT_NV = StructureType 1000310000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DISPATCH_TILE_INFO_QCOM"
+pattern STRUCTURE_TYPE_DISPATCH_TILE_INFO_QCOM = StructureType 1000309005
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PER_TILE_END_INFO_QCOM"
+pattern STRUCTURE_TYPE_PER_TILE_END_INFO_QCOM = StructureType 1000309004
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PER_TILE_BEGIN_INFO_QCOM"
+pattern STRUCTURE_TYPE_PER_TILE_BEGIN_INFO_QCOM = StructureType 1000309003
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDER_PASS_TILE_SHADING_CREATE_INFO_QCOM"
+pattern STRUCTURE_TYPE_RENDER_PASS_TILE_SHADING_CREATE_INFO_QCOM = StructureType 1000309002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_SHADING_PROPERTIES_QCOM"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_SHADING_PROPERTIES_QCOM = StructureType 1000309001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_SHADING_FEATURES_QCOM"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_SHADING_FEATURES_QCOM = StructureType 1000309000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_PROPERTIES_NV"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_PROPERTIES_NV = StructureType 1000307004
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_FEATURES_NV"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_FEATURES_NV = StructureType 1000307003
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_CUDA_LAUNCH_INFO_NV"
+pattern STRUCTURE_TYPE_CUDA_LAUNCH_INFO_NV = StructureType 1000307002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_CUDA_FUNCTION_CREATE_INFO_NV"
+pattern STRUCTURE_TYPE_CUDA_FUNCTION_CREATE_INFO_NV = StructureType 1000307001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_CUDA_MODULE_CREATE_INFO_NV"
+pattern STRUCTURE_TYPE_CUDA_MODULE_CREATE_INFO_NV = StructureType 1000307000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SPLIT_BARRIER_PROPERTIES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SPLIT_BARRIER_PROPERTIES_EXT = StructureType 1000305001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SPLIT_BARRIER_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SPLIT_BARRIER_FEATURES_EXT = StructureType 1000305000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MULTIPLE_WAIT_QUEUES_PROPERTIES_QCOM"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MULTIPLE_WAIT_QUEUES_PROPERTIES_QCOM = StructureType 1000304001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MULTIPLE_WAIT_QUEUES_FEATURES_QCOM"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MULTIPLE_WAIT_QUEUES_FEATURES_QCOM = StructureType 1000304000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_3_FEATURES_QCOM"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_3_FEATURES_QCOM = StructureType 1000303000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_QUEUE_PERF_HINT_PROPERTIES_QCOM"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_QUEUE_PERF_HINT_PROPERTIES_QCOM = StructureType 1000302002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_QUEUE_PERF_HINT_FEATURES_QCOM"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_QUEUE_PERF_HINT_FEATURES_QCOM = StructureType 1000302001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PERF_HINT_INFO_QCOM"
+pattern STRUCTURE_TYPE_PERF_HINT_INFO_QCOM = StructureType 1000302000
+
+-- 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_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"
+pattern STRUCTURE_TYPE_PRESENT_ID_KHR = StructureType 1000294000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_BARRIER_CREATE_INFO_NV"
+pattern STRUCTURE_TYPE_SWAPCHAIN_PRESENT_BARRIER_CREATE_INFO_NV = StructureType 1000292002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_BARRIER_NV"
+pattern STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_BARRIER_NV = StructureType 1000292001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_BARRIER_FEATURES_NV"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_BARRIER_FEATURES_NV = StructureType 1000292000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR"
+pattern STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR = StructureType 1000290000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_3D_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_3D_FEATURES_EXT = StructureType 1000288000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT = StructureType 1000287002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT = StructureType 1000287001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT"
+pattern STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT = StructureType 1000287000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT"
+pattern STRUCTURE_TYPE_DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT = StructureType 1000284002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT"
+pattern STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT = StructureType 1000284001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT = StructureType 1000284000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEPTH_BIAS_REPRESENTATION_INFO_EXT"
+pattern STRUCTURE_TYPE_DEPTH_BIAS_REPRESENTATION_INFO_EXT = StructureType 1000283002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEPTH_BIAS_INFO_EXT"
+pattern STRUCTURE_TYPE_DEPTH_BIAS_INFO_EXT = StructureType 1000283001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_BIAS_CONTROL_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_BIAS_CONTROL_FEATURES_EXT = StructureType 1000283000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM"
+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_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT = StructureType 1000281000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV"
+pattern STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV = StructureType 1000278001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV = StructureType 1000278000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV = StructureType 1000277007
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV"
+pattern STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV = StructureType 1000277006
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV"
+pattern STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV = StructureType 1000277005
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV"
+pattern STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV = StructureType 1000277004
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV"
+pattern STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV = StructureType 1000277003
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV"
+pattern STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV = StructureType 1000277002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV"
+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_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_MEMORY_MAP_PLACED_INFO_EXT"
+pattern STRUCTURE_TYPE_MEMORY_MAP_PLACED_INFO_EXT = StructureType 1000272002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAP_MEMORY_PLACED_PROPERTIES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MAP_MEMORY_PLACED_PROPERTIES_EXT = StructureType 1000272001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAP_MEMORY_PLACED_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MAP_MEMORY_PLACED_FEATURES_EXT = StructureType 1000272000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR"
+pattern STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR = StructureType 1000269005
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR"
+pattern STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR = StructureType 1000269004
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR"
+pattern STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR = StructureType 1000269003
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR"
+pattern STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR = StructureType 1000269002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR"
+pattern STRUCTURE_TYPE_PIPELINE_INFO_KHR = StructureType 1000269001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR = StructureType 1000269000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT = StructureType 1000267000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT = StructureType 1000260000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT"
+pattern STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT = StructureType 1000256000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT"
+pattern STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT = StructureType 1000255001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT"
+pattern STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT = StructureType 1000255002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT"
+pattern STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT = StructureType 1000255000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT = StructureType 1000254002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT"
+pattern STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT = StructureType 1000254001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT = StructureType 1000254000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT = StructureType 1000252000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT = StructureType 1000251000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV"
+pattern STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV = StructureType 1000250002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV"
+pattern STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV = StructureType 1000250001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV = StructureType 1000250000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV = StructureType 1000249002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV"
+pattern STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV = StructureType 1000249001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV = StructureType 1000249000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR"
+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_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"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT = StructureType 1000244000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV = StructureType 1000240000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR"
+pattern STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR = StructureType 1000239000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT"
+pattern STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT = StructureType 1000238001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT = StructureType 1000238000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT = StructureType 1000237000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_QUAD_CONTROL_FEATURES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_QUAD_CONTROL_FEATURES_KHR = StructureType 1000235000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT = StructureType 1000234000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ABORT_PROPERTIES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ABORT_PROPERTIES_KHR = StructureType 1000233002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_FAULT_SHADER_ABORT_MESSAGE_INFO_KHR"
+pattern STRUCTURE_TYPE_DEVICE_FAULT_SHADER_ABORT_MESSAGE_INFO_KHR = StructureType 1000233001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ABORT_FEATURES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ABORT_FEATURES_KHR = StructureType 1000233000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CONSTANT_DATA_FEATURES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CONSTANT_DATA_FEATURES_KHR = StructureType 1000231000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD = StructureType 1000229000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD = StructureType 1000227000
+
+-- 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_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR = StructureType 1000226004
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR = StructureType 1000226003
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR = StructureType 1000226002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR"
+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_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT"
+pattern STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT = StructureType 1000044007
+
+-- 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"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT = StructureType 1000218001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT"
+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_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"
+pattern STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD = StructureType 1000213001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD"
+pattern STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD = StructureType 1000213000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT = StructureType 1000212000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL"
+pattern STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL = StructureType 1000210005
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL"
+pattern STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL = StructureType 1000210004
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL"
+pattern STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL = StructureType 1000210003
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL"
+pattern STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL = StructureType 1000210002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL"
+pattern STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL = StructureType 1000210001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL"
+pattern STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL = StructureType 1000210000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL = StructureType 1000209000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SWAPCHAIN_CALIBRATED_TIMESTAMP_INFO_EXT"
+pattern STRUCTURE_TYPE_SWAPCHAIN_CALIBRATED_TIMESTAMP_INFO_EXT = StructureType 1000208009
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PRESENT_TIMING_SURFACE_CAPABILITIES_EXT"
+pattern STRUCTURE_TYPE_PRESENT_TIMING_SURFACE_CAPABILITIES_EXT = StructureType 1000208008
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PAST_PRESENTATION_TIMING_EXT"
+pattern STRUCTURE_TYPE_PAST_PRESENTATION_TIMING_EXT = StructureType 1000208007
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PAST_PRESENTATION_TIMING_PROPERTIES_EXT"
+pattern STRUCTURE_TYPE_PAST_PRESENTATION_TIMING_PROPERTIES_EXT = StructureType 1000208006
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PAST_PRESENTATION_TIMING_INFO_EXT"
+pattern STRUCTURE_TYPE_PAST_PRESENTATION_TIMING_INFO_EXT = StructureType 1000208005
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PRESENT_TIMING_INFO_EXT"
+pattern STRUCTURE_TYPE_PRESENT_TIMING_INFO_EXT = StructureType 1000208004
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PRESENT_TIMINGS_INFO_EXT"
+pattern STRUCTURE_TYPE_PRESENT_TIMINGS_INFO_EXT = StructureType 1000208003
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SWAPCHAIN_TIME_DOMAIN_PROPERTIES_EXT"
+pattern STRUCTURE_TYPE_SWAPCHAIN_TIME_DOMAIN_PROPERTIES_EXT = StructureType 1000208002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SWAPCHAIN_TIMING_PROPERTIES_EXT"
+pattern STRUCTURE_TYPE_SWAPCHAIN_TIMING_PROPERTIES_EXT = StructureType 1000208001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_TIMING_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_TIMING_FEATURES_EXT = StructureType 1000208000
+
+-- 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_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV"
+pattern STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV = StructureType 1000206001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV"
+pattern STRUCTURE_TYPE_CHECKPOINT_DATA_NV = StructureType 1000206000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV = StructureType 1000205002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV"
+pattern STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV = StructureType 1000205000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV = StructureType 1000204000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV = StructureType 1000202001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV = StructureType 1000202000
+
+-- 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_PROPERTIES_EXT"
+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_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_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD"
+pattern STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD = StructureType 1000183000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR = StructureType 1000181000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT = StructureType 1000178002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT"
+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_PHYSICAL_DEVICE_ELAPSED_TIMER_QUERY_FEATURES_QCOM"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_ELAPSED_TIMER_QUERY_FEATURES_QCOM = StructureType 1000173000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_CONVERSION_FEATURES_QCOM"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_CONVERSION_FEATURES_QCOM = StructureType 1000172000
+
+-- 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"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT = StructureType 1000170000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV"
+pattern STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV = StructureType 1000166001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV = StructureType 1000166000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV"
+pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV = StructureType 1000165012
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV"
+pattern STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV = StructureType 1000165011
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV = StructureType 1000165009
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV"
+pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV = StructureType 1000165008
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV"
+pattern STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV = StructureType 1000165007
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV"
+pattern STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV = StructureType 1000165006
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV"
+pattern STRUCTURE_TYPE_GEOMETRY_AABB_NV = StructureType 1000165005
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV"
+pattern STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV = StructureType 1000165004
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_GEOMETRY_NV"
+pattern STRUCTURE_TYPE_GEOMETRY_NV = StructureType 1000165003
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV"
+pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV = StructureType 1000165001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV"
+pattern STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV = StructureType 1000165000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV"
+pattern STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV = StructureType 1000164005
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV = StructureType 1000164002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV = StructureType 1000164001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV"
+pattern STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV = StructureType 1000164000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR = StructureType 1000163001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR = StructureType 1000163000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT"
+pattern STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT = StructureType 1000160001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT"
+pattern STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT = StructureType 1000160000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT"
+pattern STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT = StructureType 1000158006
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT"
+pattern STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = StructureType 1000158005
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT"
+pattern STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT = StructureType 1000158004
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT"
+pattern STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT = StructureType 1000158003
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT = StructureType 1000158002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT"
+pattern STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT = StructureType 1000158000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV = StructureType 1000154001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV = StructureType 1000154000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV"
+pattern STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV = StructureType 1000152000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR = StructureType 1000348013
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR"
+pattern STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR = StructureType 1000150018
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR"
+pattern STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR = StructureType 1000150016
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR"
+pattern STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR = StructureType 1000150015
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR = StructureType 1000347001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR = StructureType 1000347000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR"
+pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR = StructureType 1000150020
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR"
+pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR = StructureType 1000150017
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR = StructureType 1000150014
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR = StructureType 1000150013
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR"
+pattern STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR = StructureType 1000150012
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR"
+pattern STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR = StructureType 1000150011
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR"
+pattern STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR = StructureType 1000150010
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR"
+pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR = StructureType 1000150009
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR"
+pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR = StructureType 1000150006
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR"
+pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR = StructureType 1000150005
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR"
+pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR = StructureType 1000150004
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR"
+pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR = StructureType 1000150003
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR"
+pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR = StructureType 1000150002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR"
+pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR = StructureType 1000150000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR"
+pattern STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR = StructureType 1000150007
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV"
+pattern STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV = StructureType 1000149000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT"
+pattern STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT = StructureType 1000148002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT = StructureType 1000148001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT = StructureType 1000148000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT"
+pattern STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT = StructureType 1000143004
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT = StructureType 1000143003
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT"
+pattern STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT = StructureType 1000143002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT"
+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_PHYSICAL_DEVICE_SHADER_BFLOAT16_FEATURES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_BFLOAT16_FEATURES_KHR = StructureType 1000141000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD"
+pattern STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD = StructureType 1000044008
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_HEAP_TENSOR_PROPERTIES_ARM"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_HEAP_TENSOR_PROPERTIES_ARM = StructureType 1000135014
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SUBSAMPLED_IMAGE_FORMAT_PROPERTIES_EXT"
+pattern STRUCTURE_TYPE_SUBSAMPLED_IMAGE_FORMAT_PROPERTIES_EXT = StructureType 1000135013
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_PUSH_DATA_TOKEN_NV"
+pattern STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_PUSH_DATA_TOKEN_NV = StructureType 1000135012
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_INDEX_CREATE_INFO_EXT"
+pattern STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_INDEX_CREATE_INFO_EXT = StructureType 1000135011
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_DESCRIPTOR_HEAP_INFO_EXT"
+pattern STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_DESCRIPTOR_HEAP_INFO_EXT = StructureType 1000135010
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_HEAP_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_HEAP_FEATURES_EXT = StructureType 1000135009
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_HEAP_PROPERTIES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_HEAP_PROPERTIES_EXT = StructureType 1000135008
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_OPAQUE_CAPTURE_DATA_CREATE_INFO_EXT"
+pattern STRUCTURE_TYPE_OPAQUE_CAPTURE_DATA_CREATE_INFO_EXT = StructureType 1000135007
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SHADER_DESCRIPTOR_SET_AND_BINDING_MAPPING_INFO_EXT"
+pattern STRUCTURE_TYPE_SHADER_DESCRIPTOR_SET_AND_BINDING_MAPPING_INFO_EXT = StructureType 1000135006
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_AND_BINDING_MAPPING_EXT"
+pattern STRUCTURE_TYPE_DESCRIPTOR_SET_AND_BINDING_MAPPING_EXT = StructureType 1000135005
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PUSH_DATA_INFO_EXT"
+pattern STRUCTURE_TYPE_PUSH_DATA_INFO_EXT = StructureType 1000135004
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BIND_HEAP_INFO_EXT"
+pattern STRUCTURE_TYPE_BIND_HEAP_INFO_EXT = StructureType 1000135003
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RESOURCE_DESCRIPTOR_INFO_EXT"
+pattern STRUCTURE_TYPE_RESOURCE_DESCRIPTOR_INFO_EXT = StructureType 1000135002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_DESCRIPTOR_INFO_EXT"
+pattern STRUCTURE_TYPE_IMAGE_DESCRIPTOR_INFO_EXT = StructureType 1000135001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_TEXEL_BUFFER_DESCRIPTOR_INFO_EXT"
+pattern STRUCTURE_TYPE_TEXEL_BUFFER_DESCRIPTOR_INFO_EXT = StructureType 1000135000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_NODE_CREATE_INFO_AMDX"
+pattern STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_NODE_CREATE_INFO_AMDX = StructureType 1000134004
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXECUTION_GRAPH_PIPELINE_CREATE_INFO_AMDX"
+pattern STRUCTURE_TYPE_EXECUTION_GRAPH_PIPELINE_CREATE_INFO_AMDX = StructureType 1000134003
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXECUTION_GRAPH_PIPELINE_SCRATCH_SIZE_AMDX"
+pattern STRUCTURE_TYPE_EXECUTION_GRAPH_PIPELINE_SCRATCH_SIZE_AMDX = StructureType 1000134002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ENQUEUE_PROPERTIES_AMDX"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ENQUEUE_PROPERTIES_AMDX = StructureType 1000134001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ENQUEUE_FEATURES_AMDX"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ENQUEUE_FEATURES_AMDX = StructureType 1000134000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_GPA_DEVICE_GET_CLOCK_INFO_AMD"
+pattern STRUCTURE_TYPE_GPA_DEVICE_GET_CLOCK_INFO_AMD = StructureType 1000133006
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GPA_PROPERTIES_2_AMD"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_GPA_PROPERTIES_2_AMD = StructureType 1000133005
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_GPA_DEVICE_CLOCK_MODE_INFO_AMD"
+pattern STRUCTURE_TYPE_GPA_DEVICE_CLOCK_MODE_INFO_AMD = StructureType 1000133004
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_GPA_SESSION_CREATE_INFO_AMD"
+pattern STRUCTURE_TYPE_GPA_SESSION_CREATE_INFO_AMD = StructureType 1000133003
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_GPA_SAMPLE_BEGIN_INFO_AMD"
+pattern STRUCTURE_TYPE_GPA_SAMPLE_BEGIN_INFO_AMD = StructureType 1000133002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GPA_PROPERTIES_AMD"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_GPA_PROPERTIES_AMD = StructureType 1000133001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GPA_FEATURES_AMD"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_GPA_FEATURES_AMD = StructureType 1000133000
+
+-- 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"
+pattern STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID = StructureType 1000129005
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID"
+pattern STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = StructureType 1000129004
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID"
+pattern STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = StructureType 1000129003
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID"
+pattern STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID = StructureType 1000129002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID"
+pattern STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID = StructureType 1000129001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID"
+pattern STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID = StructureType 1000129000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT"
+pattern STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT = StructureType 1000128004
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT"
+pattern STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT = StructureType 1000128003
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT"
+pattern STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT = StructureType 1000128002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT"
+pattern STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT = StructureType 1000128001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT"
+pattern STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT = StructureType 1000128000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK"
+pattern STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK = StructureType 1000123000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK"
+pattern STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK = StructureType 1000122000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR"
+pattern STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR = StructureType 1000121004
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR"
+pattern STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR = StructureType 1000121003
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR"
+pattern STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR = StructureType 1000121002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR"
+pattern STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR = StructureType 1000121001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR"
+pattern STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR = StructureType 1000121000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR"
+pattern STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR = StructureType 1000119002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR"
+pattern STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR = StructureType 1000119001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR = StructureType 1000119000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_RESERVATION_INFO_KHR"
+pattern STRUCTURE_TYPE_PERFORMANCE_QUERY_RESERVATION_INFO_KHR = StructureType 1000116007
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR"
+pattern STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR = StructureType 1000116006
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR"
+pattern STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR = StructureType 1000116005
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR"
+pattern STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR = StructureType 1000116004
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR"
+pattern STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR = StructureType 1000116003
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR"
+pattern STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR = StructureType 1000116002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR = StructureType 1000116001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR = StructureType 1000116000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR"
+pattern STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR = StructureType 1000115001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR"
+pattern STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR = StructureType 1000115000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR"
+pattern STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR = StructureType 1000114002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR"
+pattern STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR = StructureType 1000114001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR"
+pattern STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR = StructureType 1000114000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR"
+pattern STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR = StructureType 1000111000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RELAXED_LINE_RASTERIZATION_FEATURES_IMG"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_RELAXED_LINE_RASTERIZATION_FEATURES_IMG = StructureType 1000110000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_HDR_METADATA_EXT"
+pattern STRUCTURE_TYPE_HDR_METADATA_EXT = StructureType 1000105000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT"
+pattern STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT = StructureType 1000102001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT = StructureType 1000102000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT"
+pattern STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT = StructureType 1000101001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT = StructureType 1000101000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT"
+pattern STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT = StructureType 1000099001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT = StructureType 1000099000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV"
+pattern STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV = StructureType 1000098000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX"
+pattern STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX = StructureType 1000044009
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX = StructureType 1000097000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE"
+pattern STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE = StructureType 1000092000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT"
+pattern STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT = StructureType 1000091003
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT"
+pattern STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT = StructureType 1000091002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT"
+pattern STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT = StructureType 1000091001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT"
+pattern STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT = StructureType 1000091000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT"
+pattern STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT = StructureType 1000090000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV"
+pattern STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV = StructureType 1000087000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR"
+pattern STRUCTURE_TYPE_PRESENT_REGIONS_KHR = StructureType 1000084000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT"
+pattern STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT = StructureType 1000081002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT = StructureType 1000081001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT"
+pattern STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT = StructureType 1000081000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR"
+pattern STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR = StructureType 1000079001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR"
+pattern STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR = StructureType 1000079000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR"
+pattern STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR = StructureType 1000078003
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR"
+pattern STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR = StructureType 1000078002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR"
+pattern STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = StructureType 1000078001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR"
+pattern STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = StructureType 1000078000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR"
+pattern STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR = StructureType 1000075000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR"
+pattern STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR = StructureType 1000074002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR"
+pattern STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR = StructureType 1000074001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR"
+pattern STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR = StructureType 1000074000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR"
+pattern STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR = StructureType 1000073003
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR"
+pattern STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR = StructureType 1000073002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR"
+pattern STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR = StructureType 1000073001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR"
+pattern STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR = StructureType 1000073000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT"
+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_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"
+pattern STRUCTURE_TYPE_VALIDATION_FLAGS_EXT = StructureType 1000061000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR"
+pattern STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR = StructureType 1000060012
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR"
+pattern STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR = StructureType 1000060011
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR"
+pattern STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR = StructureType 1000060010
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR"
+pattern STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR = StructureType 1000060009
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR"
+pattern STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR = StructureType 1000060008
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR"
+pattern STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR = StructureType 1000060007
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV"
+pattern STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV = StructureType 1000058000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV"
+pattern STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV = StructureType 1000057001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV"
+pattern STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV = StructureType 1000057000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV"
+pattern STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV = StructureType 1000056001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV"
+pattern STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV = StructureType 1000056000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV = StructureType 1000050000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP"
+pattern STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP = StructureType 1000049000
+
+-- 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"
+pattern STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX = StructureType 1000030001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX"
+pattern STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX = StructureType 1000030000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_CU_MODULE_TEXTURING_MODE_CREATE_INFO_NVX"
+pattern STRUCTURE_TYPE_CU_MODULE_TEXTURING_MODE_CREATE_INFO_NVX = StructureType 1000029004
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_CU_LAUNCH_INFO_NVX"
+pattern STRUCTURE_TYPE_CU_LAUNCH_INFO_NVX = StructureType 1000029002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_CU_FUNCTION_CREATE_INFO_NVX"
+pattern STRUCTURE_TYPE_CU_FUNCTION_CREATE_INFO_NVX = StructureType 1000029001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_CU_MODULE_CREATE_INFO_NVX"
+pattern STRUCTURE_TYPE_CU_MODULE_CREATE_INFO_NVX = StructureType 1000029000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT"
+pattern STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT = StructureType 1000028002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT = StructureType 1000028001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT = StructureType 1000028000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV"
+pattern STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV = StructureType 1000026002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV"
+pattern STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV = StructureType 1000026001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV"
+pattern STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV = StructureType 1000026000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT"
+pattern STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT = StructureType 1000022002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT"
+pattern STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT = StructureType 1000022001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT"
+pattern STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT = StructureType 1000022000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD"
+pattern STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD = StructureType 1000018000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT"
+pattern STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT = StructureType 1000011000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR"
+pattern STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR = StructureType 1000009000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR"
+pattern STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR = StructureType 1000008000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR"
+pattern STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR = StructureType 1000006000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR"
+pattern STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR = StructureType 1000005000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR"
+pattern STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR = StructureType 1000004000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR"
+pattern STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR = StructureType 1000003000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR"
+pattern STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR = StructureType 1000002001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR"
+pattern STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR = StructureType 1000002000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PRESENT_INFO_KHR"
+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_PIPELINE_OFFLINE_CREATE_INFO"
+pattern STRUCTURE_TYPE_PIPELINE_OFFLINE_CREATE_INFO = StructureType 1000298010
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_FAULT_CALLBACK_INFO"
+pattern STRUCTURE_TYPE_FAULT_CALLBACK_INFO = StructureType 1000298008
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_FAULT_DATA"
+pattern STRUCTURE_TYPE_FAULT_DATA = StructureType 1000298007
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_POOL_SIZE"
+pattern STRUCTURE_TYPE_PIPELINE_POOL_SIZE = StructureType 1000298005
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COMMAND_POOL_MEMORY_CONSUMPTION"
+pattern STRUCTURE_TYPE_COMMAND_POOL_MEMORY_CONSUMPTION = StructureType 1000298004
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COMMAND_POOL_MEMORY_RESERVATION_CREATE_INFO"
+pattern STRUCTURE_TYPE_COMMAND_POOL_MEMORY_RESERVATION_CREATE_INFO = StructureType 1000298003
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_OBJECT_RESERVATION_CREATE_INFO"
+pattern STRUCTURE_TYPE_DEVICE_OBJECT_RESERVATION_CREATE_INFO = StructureType 1000298002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_SC_1_0_PROPERTIES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_SC_1_0_PROPERTIES = StructureType 1000298001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_SC_1_0_FEATURES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_SC_1_0_FEATURES = StructureType 1000298000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDERING_INPUT_ATTACHMENT_INDEX_INFO"
+pattern STRUCTURE_TYPE_RENDERING_INPUT_ATTACHMENT_INDEX_INFO = StructureType 1000232002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_LOCATION_INFO"
+pattern STRUCTURE_TYPE_RENDERING_ATTACHMENT_LOCATION_INFO = StructureType 1000232001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES = StructureType 1000232000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDERING_AREA_INFO"
+pattern STRUCTURE_TYPE_RENDERING_AREA_INFO = StructureType 1000470003
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES = StructureType 1000190002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO"
+pattern STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO = StructureType 1000190001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES = StructureType 1000525000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES = StructureType 1000259002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO"
+pattern STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO = StructureType 1000259001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES = StructureType 1000259000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES = StructureType 1000068002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES = StructureType 1000068001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO"
+pattern STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO = StructureType 1000068000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES = StructureType 1000466000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO"
+pattern STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO = StructureType 1000545006
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_INFO"
+pattern STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_INFO = StructureType 1000545005
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PUSH_CONSTANTS_INFO"
+pattern STRUCTURE_TYPE_PUSH_CONSTANTS_INFO = StructureType 1000545004
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BIND_DESCRIPTOR_SETS_INFO"
+pattern STRUCTURE_TYPE_BIND_DESCRIPTOR_SETS_INFO = StructureType 1000545003
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES = StructureType 1000080000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO"
+pattern STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO = StructureType 1000470005
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES = StructureType 1000544000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES = StructureType 1000528000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES = StructureType 1000416000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY"
+pattern STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY = StructureType 1000270009
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE"
+pattern STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE = StructureType 1000270008
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO"
+pattern STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO = StructureType 1000270007
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO"
+pattern STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO = StructureType 1000270006
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO"
+pattern STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO = StructureType 1000270005
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO"
+pattern STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO = StructureType 1000270004
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY"
+pattern STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY = StructureType 1000270003
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY"
+pattern STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY = StructureType 1000270002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES = StructureType 1000270001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES = StructureType 1000270000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BIND_MEMORY_STATUS"
+pattern STRUCTURE_TYPE_BIND_MEMORY_STATUS = StructureType 1000545002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES = StructureType 1000545001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES = StructureType 1000545000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO"
+pattern STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO = StructureType 1000470006
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2"
+pattern STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2 = StructureType 1000338003
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2"
+pattern STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2 = StructureType 1000338002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO"
+pattern STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO = StructureType 1000470004
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES = StructureType 1000470001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES = StructureType 1000470000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_UNMAP_INFO"
+pattern STRUCTURE_TYPE_MEMORY_UNMAP_INFO = StructureType 1000271001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_MAP_INFO"
+pattern STRUCTURE_TYPE_MEMORY_MAP_INFO = StructureType 1000271000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES = StructureType 1000265000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES"
+pattern STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES = StructureType 1000388001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES = StructureType 1000388000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO"
+pattern STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO = StructureType 1000174000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_PROPERTIES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_PROPERTIES = StructureType 56
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_FEATURES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_FEATURES = StructureType 55
+
+-- 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_IMAGE_RESOLVE_2"
+pattern STRUCTURE_TYPE_IMAGE_RESOLVE_2 = StructureType 1000337010
+
+-- 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_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_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_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_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_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_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_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_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_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_BUFFER_IMAGE_COPY_2"
+pattern STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2 = StructureType 1000337009
+
+-- 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_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_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_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_TOOL_PROPERTIES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES = StructureType 1000245000
+
+-- 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_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT"
+pattern STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT = StructureType 1000241002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT"
+pattern STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT = StructureType 1000241001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES = StructureType 1000241000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO"
+pattern STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO = StructureType 1000108003
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO"
+pattern STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO = StructureType 1000108002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO"
+pattern STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO = StructureType 1000108001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES = StructureType 1000108000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO"
+pattern STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO = StructureType 1000246000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE"
+pattern STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE = StructureType 1000199001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES = StructureType 1000199000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SUBPASS_END_INFO"
+pattern STRUCTURE_TYPE_SUBPASS_END_INFO = StructureType 1000109006
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO"
+pattern STRUCTURE_TYPE_SUBPASS_BEGIN_INFO = StructureType 1000109005
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2"
+pattern STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2 = StructureType 1000109004
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2"
+pattern STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2 = StructureType 1000109003
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2"
+pattern STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2 = StructureType 1000109002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2"
+pattern STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2 = StructureType 1000109001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2"
+pattern STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2 = StructureType 1000109000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES = StructureType 1000175000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES = StructureType 1000253000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO"
+pattern STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO = StructureType 1000130001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES = StructureType 1000130000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES = StructureType 1000221000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT"
+pattern STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT = StructureType 1000161004
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO"
+pattern STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO = StructureType 1000161003
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES = StructureType 1000161002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES = StructureType 1000161001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO"
+pattern STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO = StructureType 1000161000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES = StructureType 1000197000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES = StructureType 1000082000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES = StructureType 1000180000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES = StructureType 1000177000
+
+-- 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"
+pattern STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO = StructureType 1000257003
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO"
+pattern STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO = StructureType 1000257002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO"
+pattern STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO = StructureType 1000244001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES = StructureType 1000257000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO"
+pattern STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO = StructureType 1000207005
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO"
+pattern STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO = StructureType 1000207004
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO"
+pattern STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO = StructureType 1000207003
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO"
+pattern STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO = StructureType 1000207002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES = StructureType 1000207001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES = StructureType 1000207000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES = StructureType 1000261000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES = StructureType 1000211000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO"
+pattern STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO = StructureType 1000147000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES = StructureType 52
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES = StructureType 51
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES = StructureType 50
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES = StructureType 49
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES = StructureType 1000196000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES = StructureType 1000063000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES = StructureType 1000053002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES = StructureType 1000053001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO"
+pattern STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO = StructureType 1000053000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO"
+pattern STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO = StructureType 1000117003
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO"
+pattern STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO = StructureType 1000117001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES = StructureType 1000117000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO"
+pattern STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO = StructureType 1000060003
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES"
+pattern STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES = StructureType 1000156005
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES = StructureType 1000156004
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO"
+pattern STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO = StructureType 1000156003
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO"
+pattern STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO = StructureType 1000156002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO"
+pattern STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO = StructureType 1000156001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO"
+pattern STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO = StructureType 1000156000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT"
+pattern STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT = StructureType 1000168001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES = StructureType 1000168000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO"
+pattern STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO = StructureType 1000085000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES = StructureType 1000120000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES = StructureType 1000083000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES = StructureType 1000094000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES"
+pattern STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES = StructureType 1000076001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO = StructureType 1000076000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO"
+pattern STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO = StructureType 1000077000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO"
+pattern STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO = StructureType 1000113000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES"
+pattern STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES = StructureType 1000112001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO = StructureType 1000112000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO"
+pattern STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO = StructureType 1000072002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO"
+pattern STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO = StructureType 1000072001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO"
+pattern STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO = StructureType 1000072000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES = StructureType 1000071004
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES"
+pattern STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES = StructureType 1000071003
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO = StructureType 1000071002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES"
+pattern STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES = StructureType 1000071001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO = StructureType 1000071000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2"
+pattern STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2 = StructureType 1000145003
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES = StructureType 1000145002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES = StructureType 1000145001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO"
+pattern STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO = StructureType 1000145000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO"
+pattern STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO = StructureType 1000117002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2 = StructureType 1000059008
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2"
+pattern STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2 = StructureType 1000059007
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 = StructureType 1000059006
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2"
+pattern STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2 = StructureType 1000059005
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 = StructureType 1000059004
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2"
+pattern STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2 = StructureType 1000059003
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2"
+pattern STRUCTURE_TYPE_FORMAT_PROPERTIES_2 = StructureType 1000059002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2 = StructureType 1000059001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 = StructureType 1000059000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2"
+pattern STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 = StructureType 1000146004
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2"
+pattern STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 = StructureType 1000146003
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2"
+pattern STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2 = StructureType 1000146002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2"
+pattern STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 = StructureType 1000146001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2"
+pattern STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 = StructureType 1000146000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO"
+pattern STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO = StructureType 1000070001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES = StructureType 1000070000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO"
+pattern STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO = StructureType 1000060014
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO"
+pattern STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO = StructureType 1000060013
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO"
+pattern STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO = StructureType 1000060006
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO"
+pattern STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO = StructureType 1000060005
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO"
+pattern STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO = StructureType 1000060004
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO"
+pattern STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO = StructureType 1000060000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO"
+pattern STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO = StructureType 1000127001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS"
+pattern STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS = StructureType 1000127000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO"
+pattern STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO = StructureType 1000157001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO"
+pattern STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO = StructureType 1000157000
+
+{-# COMPLETE
+  STRUCTURE_TYPE_APPLICATION_INFO
+  , STRUCTURE_TYPE_INSTANCE_CREATE_INFO
+  , STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO
+  , STRUCTURE_TYPE_DEVICE_CREATE_INFO
+  , STRUCTURE_TYPE_SUBMIT_INFO
+  , STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO
+  , STRUCTURE_TYPE_MAPPED_MEMORY_RANGE
+  , STRUCTURE_TYPE_BIND_SPARSE_INFO
+  , STRUCTURE_TYPE_FENCE_CREATE_INFO
+  , STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO
+  , STRUCTURE_TYPE_EVENT_CREATE_INFO
+  , STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO
+  , STRUCTURE_TYPE_BUFFER_CREATE_INFO
+  , STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO
+  , STRUCTURE_TYPE_IMAGE_CREATE_INFO
+  , STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO
+  , STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO
+  , STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO
+  , STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO
+  , STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO
+  , STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO
+  , STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO
+  , STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO
+  , STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO
+  , STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO
+  , STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO
+  , STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO
+  , STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO
+  , STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO
+  , STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO
+  , STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO
+  , STRUCTURE_TYPE_SAMPLER_CREATE_INFO
+  , STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO
+  , STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO
+  , STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO
+  , STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET
+  , STRUCTURE_TYPE_COPY_DESCRIPTOR_SET
+  , STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO
+  , STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO
+  , STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO
+  , STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO
+  , STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO
+  , STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO
+  , STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO
+  , STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER
+  , STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER
+  , STRUCTURE_TYPE_MEMORY_BARRIER
+  , STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO
+  , STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_RESTART_INDEX_FEATURES_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_NEURAL_ACCELERATOR_STATISTICS_FEATURES_ARM
+  , STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_NEURAL_STATISTICS_CREATE_INFO_ARM
+  , STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_NEURAL_STATISTICS_CREATE_INFO_ARM
+  , STRUCTURE_TYPE_THROTTLE_HINT_SUBMIT_INFO_SEC
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_THROTTLE_HINT_FEATURES_SEC
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MIXED_FLOAT_DOT_PRODUCT_FEATURES_VALVE
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_PARTITIONED_FEATURES_EXT
+  , STRUCTURE_TYPE_QUEUE_FAMILY_OPTIMAL_IMAGE_TRANSFER_GRANULARITY_PROPERTIES_KHR
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_11_FEATURES_KHR
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_OCCUPANCY_PRIORITY_FEATURES_NV
+  , STRUCTURE_TYPE_COMPUTE_OCCUPANCY_PRIORITY_PARAMETERS_NV
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_UNIFORM_BUFFER_UNSIZED_ARRAY_FEATURES_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CACHE_INCREMENTAL_MODE_FEATURES_SEC
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_LONG_VECTOR_PROPERTIES_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_LONG_VECTOR_FEATURES_EXT
+  , STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SINGLE_NODE_CONNECTION_ARM
+  , STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SINGLE_NODE_CREATE_INFO_ARM
+  , STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_RESOURCE_INFO_IMAGE_LAYOUT_ARM
+  , STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_OPTICAL_FLOW_CREATE_INFO_ARM
+  , STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_OPTICAL_FLOW_DISPATCH_INFO_ARM
+  , STRUCTURE_TYPE_DATA_GRAPH_OPTICAL_FLOW_IMAGE_FORMAT_PROPERTIES_ARM
+  , STRUCTURE_TYPE_DATA_GRAPH_OPTICAL_FLOW_IMAGE_FORMAT_INFO_ARM
+  , STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_OPTICAL_FLOW_PROPERTIES_ARM
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_OPTICAL_FLOW_FEATURES_ARM
+  , STRUCTURE_TYPE_RESOLVE_IMAGE_MODE_INFO_KHR
+  , STRUCTURE_TYPE_RENDERING_END_INFO_KHR
+  , STRUCTURE_TYPE_RENDERING_ATTACHMENT_FLAGS_INFO_KHR
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_10_PROPERTIES_KHR
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_10_FEATURES_KHR
+  , STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_BUILTIN_MODEL_CREATE_INFO_QCOM
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_MODEL_FEATURES_QCOM
+  , STRUCTURE_TYPE_CUSTOM_RESOLVE_CREATE_INFO_EXT
+  , STRUCTURE_TYPE_BEGIN_CUSTOM_RESOLVE_INFO_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_RESOLVE_FEATURES_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_64_BIT_INDEXING_FEATURES_EXT
+  , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_KHR
+  , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MICROMAP_DATA_KHR
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_PROPERTIES_KHR
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_KHR
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_KHR
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_DEVICE_MEMORY_FEATURES_EXT
+  , STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_METERING_FEATURES_NV
+  , STRUCTURE_TYPE_SET_PRESENT_CONFIG_NV
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_KHR
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_KHR
+  , STRUCTURE_TYPE_PIPELINE_FRAGMENT_DENSITY_MAP_LAYERED_CREATE_INFO_VALVE
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_PROPERTIES_VALVE
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_FEATURES_VALVE
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_FORMAT_PACK_FEATURES_ARM
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_ROBUSTNESS_FEATURES_EXT
+  , STRUCTURE_TYPE_SHADER_INSTRUMENTATION_METRIC_DESCRIPTION_ARM
+  , STRUCTURE_TYPE_SHADER_INSTRUMENTATION_CREATE_INFO_ARM
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INSTRUMENTATION_PROPERTIES_ARM
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INSTRUMENTATION_FEATURES_ARM
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_KHR
+  , STRUCTURE_TYPE_MEMORY_GET_METAL_HANDLE_INFO_EXT
+  , STRUCTURE_TYPE_MEMORY_METAL_HANDLE_PROPERTIES_EXT
+  , STRUCTURE_TYPE_IMPORT_MEMORY_METAL_HANDLE_INFO_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_OPACITY_MICROMAP_FEATURES_ARM
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_PROPERTIES_NV
+  , STRUCTURE_TYPE_COOPERATIVE_MATRIX_FLEXIBLE_DIMENSIONS_PROPERTIES_NV
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_FEATURES_NV
+  , STRUCTURE_TYPE_HDR_VIVID_DYNAMIC_METADATA_HUAWEI
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_HDR_VIVID_FEATURES_HUAWEI
+  , STRUCTURE_TYPE_QUEUE_FAMILY_OWNERSHIP_TRANSFER_PROPERTIES_KHR
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_PROPERTIES_KHR
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_FEATURES_KHR
+  , STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLAMP_CONTROL_CREATE_INFO_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_CONTROL_FEATURES_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_CONSTANT_BANK_PROPERTIES_NV
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_CONSTANT_BANK_FEATURES_NV
+  , STRUCTURE_TYPE_PUSH_CONSTANT_BANK_INFO_NV
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FMA_FEATURES_KHR
+  , STRUCTURE_TYPE_IMAGE_ALIGNMENT_CONTROL_CREATE_INFO_MESA
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_PROPERTIES_MESA
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_FEATURES_MESA
+  , STRUCTURE_TYPE_MEMORY_BARRIER_ACCESS_FLAGS_3_KHR
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_8_FEATURES_KHR
+  , STRUCTURE_TYPE_DEVICE_FAULT_DEBUG_INFO_KHR
+  , STRUCTURE_TYPE_DEVICE_FAULT_INFO_KHR
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_PROPERTIES_KHR
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_FEATURES_KHR
+  , STRUCTURE_TYPE_GENERATED_COMMANDS_SHADER_INFO_EXT
+  , STRUCTURE_TYPE_GENERATED_COMMANDS_PIPELINE_INFO_EXT
+  , STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXT
+  , STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_INFO_EXT
+  , STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXT
+  , STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_SHADER_EXT
+  , STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXT
+  , STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_EXT
+  , STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXT
+  , STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_EXT
+  , STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_CREATE_INFO_EXT
+  , STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_VALIDATION_FEATURES_NV
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT8_FEATURES_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_REPLICATED_COMPOSITES_FEATURES_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT16_VECTOR_FEATURES_NV
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_VULKAN_PROPERTIES_KHR
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_KHR
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_LIST_KHR
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_PROPERTIES_KHR
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_FEATURES_KHR
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_COMMAND_BUFFER_INHERITANCE_FEATURES_NV
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_RELAXED_EXTENDED_INSTRUCTION_FEATURES_KHR
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_COMPUTE_QUEUE_PROPERTIES_NV
+  , STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_DATA_PARAMS_NV
+  , STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_CREATE_INFO_NV
+  , STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_DEVICE_CREATE_INFO_NV
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_RAW_ACCESS_CHAINS_FEATURES_NV
+  , STRUCTURE_TYPE_DISPLAY_MODE_STEREO_PROPERTIES_NV
+  , STRUCTURE_TYPE_DISPLAY_SURFACE_STEREO_CREATE_INFO_NV
+  , STRUCTURE_TYPE_DECOMPRESS_MEMORY_INFO_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_EXT
+  , STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INDIRECT_INFO_KHR
+  , STRUCTURE_TYPE_COPY_MEMORY_INDIRECT_INFO_KHR
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_KHR
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_KHR
+  , STRUCTURE_TYPE_TILE_MEMORY_SIZE_INFO_QCOM
+  , STRUCTURE_TYPE_TILE_MEMORY_BIND_INFO_QCOM
+  , STRUCTURE_TYPE_TILE_MEMORY_REQUIREMENTS_QCOM
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_MEMORY_HEAP_PROPERTIES_QCOM
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_MEMORY_HEAP_FEATURES_QCOM
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_POOL_OVERALLOCATION_FEATURES_NV
+  , STRUCTURE_TYPE_BIND_DESCRIPTOR_BUFFER_EMBEDDED_SAMPLERS_INFO_EXT
+  , STRUCTURE_TYPE_SET_DESCRIPTOR_BUFFER_OFFSETS_INFO_EXT
+  , STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_KHR
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_DRIVER_PROPERTIES_MSFT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCREEN_BUFFER_FEATURES_QNX
+  , STRUCTURE_TYPE_EXTERNAL_FORMAT_QNX
+  , STRUCTURE_TYPE_IMPORT_SCREEN_BUFFER_INFO_QNX
+  , STRUCTURE_TYPE_SCREEN_BUFFER_FORMAT_PROPERTIES_QNX
+  , STRUCTURE_TYPE_SCREEN_BUFFER_PROPERTIES_QNX
+  , STRUCTURE_TYPE_ATTACHMENT_FEEDBACK_LOOP_INFO_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFIED_IMAGE_LAYOUTS_FEATURES_KHR
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_FEATURES_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_CLAMP_FEATURES_QCOM
+  , STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_YCBCR_DEGAMMA_CREATE_INFO_QCOM
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_DEGAMMA_FEATURES_QCOM
+  , STRUCTURE_TYPE_BLIT_IMAGE_CUBIC_WEIGHTS_INFO_QCOM
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_WEIGHTS_FEATURES_QCOM
+  , STRUCTURE_TYPE_SAMPLER_CUBIC_WEIGHTS_CREATE_INFO_QCOM
+  , STRUCTURE_TYPE_SAMPLER_BLOCK_MATCH_WINDOW_CREATE_INFO_QCOM
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_PROPERTIES_QCOM
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_FEATURES_QCOM
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_PER_STAGE_DESCRIPTOR_SET_FEATURES_NV
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_PROPERTIES_KHR
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_KHR
+  , STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_RENDER_AREAS_RENDER_PASS_BEGIN_INFO_QCOM
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_RENDER_AREAS_FEATURES_QCOM
+  , STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_TOSA_PROPERTIES_ARM
+  , STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CONSTANT_TENSOR_SEMI_STRUCTURED_SPARSITY_INFO_ARM
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_INFO_ARM
+  , STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_PROPERTIES_ARM
+  , STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_PROPERTIES_ARM
+  , STRUCTURE_TYPE_DATA_GRAPH_PROCESSING_ENGINE_CREATE_INFO_ARM
+  , STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_DISPATCH_INFO_ARM
+  , STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_IDENTIFIER_CREATE_INFO_ARM
+  , STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENT_ARM
+  , STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENTS_INFO_ARM
+  , STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_COMPILER_CONTROL_CREATE_INFO_ARM
+  , STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_INFO_ARM
+  , STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_PROPERTY_QUERY_RESULT_ARM
+  , STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SHADER_MODULE_CREATE_INFO_ARM
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_FEATURES_ARM
+  , STRUCTURE_TYPE_BIND_DATA_GRAPH_PIPELINE_SESSION_MEMORY_INFO_ARM
+  , STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_MEMORY_REQUIREMENTS_INFO_ARM
+  , STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CONSTANT_ARM
+  , STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_RESOURCE_INFO_ARM
+  , STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_CREATE_INFO_ARM
+  , STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CREATE_INFO_ARM
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_KHR
+  , STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_KHR
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_KHR
+  , STRUCTURE_TYPE_LATENCY_SURFACE_CAPABILITIES_NV
+  , STRUCTURE_TYPE_SWAPCHAIN_LATENCY_CREATE_INFO_NV
+  , STRUCTURE_TYPE_OUT_OF_BAND_QUEUE_TYPE_INFO_NV
+  , STRUCTURE_TYPE_LATENCY_SUBMISSION_PRESENT_ID_NV
+  , STRUCTURE_TYPE_LATENCY_TIMINGS_FRAME_REPORT_NV
+  , STRUCTURE_TYPE_GET_LATENCY_MARKER_INFO_NV
+  , STRUCTURE_TYPE_SET_LATENCY_MARKER_INFO_NV
+  , STRUCTURE_TYPE_LATENCY_SLEEP_INFO_NV
+  , STRUCTURE_TYPE_LATENCY_SLEEP_MODE_INFO_NV
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_INTERNALLY_SYNCHRONIZED_QUEUES_FEATURES_KHR
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_FEATURES_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_PROPERTIES_ARM
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM
+  , STRUCTURE_TYPE_LAYER_SETTINGS_CREATE_INFO_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_PROPERTIES_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_FEATURES_EXT
+  , STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_PROPERTIES_NV
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_FEATURES_NV
+  , STRUCTURE_TYPE_CONVERT_COOPERATIVE_VECTOR_MATRIX_INFO_NV
+  , STRUCTURE_TYPE_COOPERATIVE_VECTOR_PROPERTIES_NV
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_VECTOR_PROPERTIES_NV
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_VECTOR_FEATURES_NV
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_VIEWPORTS_FEATURES_QCOM
+  , STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_KHR
+  , STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_KHR
+  , STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_KHR
+  , STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_KHR
+  , STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_KHR
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_KHR
+  , STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_KHR
+  , STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_KHR
+  , STRUCTURE_TYPE_SURFACE_PRESENT_MODE_KHR
+  , STRUCTURE_TYPE_AMIGO_PROFILING_SUBMIT_INFO_SEC
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_AMIGO_PROFILING_FEATURES_SEC
+  , STRUCTURE_TYPE_TILE_PROPERTIES_QCOM
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM
+  , STRUCTURE_TYPE_PIPELINE_BINARY_HANDLES_INFO_KHR
+  , STRUCTURE_TYPE_DEVICE_PIPELINE_BINARY_INTERNAL_CACHE_CONTROL_KHR
+  , STRUCTURE_TYPE_PIPELINE_CREATE_INFO_KHR
+  , STRUCTURE_TYPE_PIPELINE_BINARY_DATA_INFO_KHR
+  , STRUCTURE_TYPE_RELEASE_CAPTURED_PIPELINE_DATA_INFO_KHR
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_BINARY_PROPERTIES_KHR
+  , STRUCTURE_TYPE_PIPELINE_BINARY_KEY_KHR
+  , STRUCTURE_TYPE_PIPELINE_BINARY_INFO_KHR
+  , STRUCTURE_TYPE_PIPELINE_BINARY_CREATE_INFO_KHR
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_BINARY_FEATURES_KHR
+  , STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT
+  , STRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT
+  , STRUCTURE_TYPE_SHADER_CREATE_INFO_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_PROPERTIES_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_POSITION_FETCH_FEATURES_KHR
+  , STRUCTURE_TYPE_PRESENT_WAIT_2_INFO_KHR
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_2_FEATURES_KHR
+  , STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_WAIT_2_KHR
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_2_FEATURES_KHR
+  , STRUCTURE_TYPE_PRESENT_ID_2_KHR
+  , STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_ID_2_KHR
+  , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DENSE_GEOMETRY_FORMAT_TRIANGLES_DATA_AMDX
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_DENSE_GEOMETRY_FORMAT_FEATURES_AMDX
+  , STRUCTURE_TYPE_ANTI_LAG_PRESENTATION_INFO_AMD
+  , STRUCTURE_TYPE_ANTI_LAG_DATA_AMD
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_ANTI_LAG_FEATURES_AMD
+  , STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_RESOLVE_PROPERTIES_ANDROID
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_PROPERTIES_ANDROID
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_FEATURES_ANDROID
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT
+  , STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_PRIVATE_DATA_INFO_NV
+  , STRUCTURE_TYPE_OPTICAL_FLOW_EXECUTE_INFO_NV
+  , STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_INFO_NV
+  , STRUCTURE_TYPE_OPTICAL_FLOW_IMAGE_FORMAT_PROPERTIES_NV
+  , STRUCTURE_TYPE_OPTICAL_FLOW_IMAGE_FORMAT_INFO_NV
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_PROPERTIES_NV
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_FEATURES_NV
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_EXT
+  , STRUCTURE_TYPE_SHADER_MODULE_IDENTIFIER_EXT
+  , STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_MODULE_IDENTIFIER_CREATE_INFO_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_PROPERTIES_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT
+  , STRUCTURE_TYPE_FRAME_BOUNDARY_TENSORS_ARM
+  , STRUCTURE_TYPE_TENSOR_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_ARM
+  , STRUCTURE_TYPE_TENSOR_CAPTURE_DESCRIPTOR_DATA_INFO_ARM
+  , STRUCTURE_TYPE_DESCRIPTOR_GET_TENSOR_INFO_ARM
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_PROPERTIES_ARM
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_FEATURES_ARM
+  , STRUCTURE_TYPE_EXTERNAL_MEMORY_TENSOR_CREATE_INFO_ARM
+  , STRUCTURE_TYPE_EXTERNAL_TENSOR_PROPERTIES_ARM
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_TENSOR_INFO_ARM
+  , STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_TENSOR_ARM
+  , STRUCTURE_TYPE_TENSOR_DEPENDENCY_INFO_ARM
+  , STRUCTURE_TYPE_TENSOR_COPY_ARM
+  , STRUCTURE_TYPE_COPY_TENSOR_INFO_ARM
+  , STRUCTURE_TYPE_DEVICE_TENSOR_MEMORY_REQUIREMENTS_ARM
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_TENSOR_FEATURES_ARM
+  , STRUCTURE_TYPE_TENSOR_MEMORY_BARRIER_ARM
+  , STRUCTURE_TYPE_TENSOR_MEMORY_REQUIREMENTS_INFO_ARM
+  , STRUCTURE_TYPE_TENSOR_DESCRIPTION_ARM
+  , STRUCTURE_TYPE_TENSOR_FORMAT_PROPERTIES_ARM
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_TENSOR_PROPERTIES_ARM
+  , STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_TENSOR_ARM
+  , STRUCTURE_TYPE_BIND_TENSOR_MEMORY_INFO_ARM
+  , STRUCTURE_TYPE_TENSOR_VIEW_CREATE_INFO_ARM
+  , STRUCTURE_TYPE_TENSOR_CREATE_INFO_ARM
+  , STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_LIST_LUNARG
+  , STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_INFO_LUNARG
+  , STRUCTURE_TYPE_RENDER_PASS_SUBPASS_FEEDBACK_CREATE_INFO_EXT
+  , STRUCTURE_TYPE_RENDER_PASS_CREATION_FEEDBACK_CREATE_INFO_EXT
+  , STRUCTURE_TYPE_RENDER_PASS_CREATION_CONTROL_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT
+  , STRUCTURE_TYPE_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_PROPERTIES_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_FEATURES_EXT
+  , STRUCTURE_TYPE_IMAGE_VIEW_SAMPLE_WEIGHT_CREATE_INFO_QCOM
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_PROPERTIES_QCOM
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MAXIMAL_RECONVERGENCE_FEATURES_KHR
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV
+  , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_SPHERES_DATA_NV
+  , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_LINEAR_SWEPT_SPHERES_DATA_NV
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_LINEAR_SWEPT_SPHERES_FEATURES_NV
+  , STRUCTURE_TYPE_PIPELINE_INDIRECT_DEVICE_ADDRESS_INFO_NV
+  , STRUCTURE_TYPE_COMPUTE_PIPELINE_INDIRECT_BUFFER_INFO_NV
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_COMPUTE_FEATURES_NV
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV
+  , STRUCTURE_TYPE_RENDER_PASS_STRIPE_SUBMIT_INFO_ARM
+  , STRUCTURE_TYPE_RENDER_PASS_STRIPE_INFO_ARM
+  , STRUCTURE_TYPE_RENDER_PASS_STRIPE_BEGIN_INFO_ARM
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_PROPERTIES_ARM
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_FEATURES_ARM
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT
+  , STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE
+  , STRUCTURE_TYPE_DESCRIPTOR_SET_BINDING_REFERENCE_VALVE
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE
+  , STRUCTURE_TYPE_IMAGE_VIEW_SLICED_CREATE_INFO_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_SLICED_VIEW_OF_3D_FEATURES_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_DISPATCH_PARAMETERS_PROPERTIES_ARM
+  , STRUCTURE_TYPE_DISPATCH_PARAMETERS_ARM
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_PROPERTIES_ARM
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_FEATURES_ARM
+  , STRUCTURE_TYPE_DEVICE_QUEUE_SHADER_CORE_CONTROL_CREATE_INFO_ARM
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_ARM
+  , 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
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_VRS_FEATURES_HUAWEI
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI
+  , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_DISPLACEMENT_MICROMAP_NV
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_PROPERTIES_NV
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_FEATURES_NV
+  , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT
+  , STRUCTURE_TYPE_MICROMAP_BUILD_SIZES_INFO_EXT
+  , STRUCTURE_TYPE_MICROMAP_CREATE_INFO_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_PROPERTIES_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_EXT
+  , STRUCTURE_TYPE_COPY_MEMORY_TO_MICROMAP_INFO_EXT
+  , STRUCTURE_TYPE_COPY_MICROMAP_TO_MEMORY_INFO_EXT
+  , STRUCTURE_TYPE_COPY_MICROMAP_INFO_EXT
+  , STRUCTURE_TYPE_MICROMAP_VERSION_INFO_EXT
+  , STRUCTURE_TYPE_MICROMAP_BUILD_INFO_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_PROPERTIES_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_FEATURES_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT
+  , 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_PHYSICAL_DEVICE_SHADER_UNTYPED_POINTERS_FEATURES_KHR
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_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
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT
+  , STRUCTURE_TYPE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_INFO_EXT
+  , STRUCTURE_TYPE_SUBPASS_RESOLVE_PERFORMANCE_QUERY_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_FEATURES_EXT
+  , STRUCTURE_TYPE_FRAME_BOUNDARY_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAME_BOUNDARY_FEATURES_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT
+  , STRUCTURE_TYPE_PIPELINE_PROPERTIES_IDENTIFIER_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV
+  , STRUCTURE_TYPE_MEMORY_GET_REMOTE_ADDRESS_INFO_NV
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_PROPERTIES_HUAWEI
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI
+  , STRUCTURE_TYPE_SUBPASS_SHADING_PIPELINE_CREATE_INFO_HUAWEI
+  , STRUCTURE_TYPE_BUFFER_COLLECTION_CONSTRAINTS_INFO_FUCHSIA
+  , STRUCTURE_TYPE_SYSMEM_COLOR_SPACE_FUCHSIA
+  , STRUCTURE_TYPE_IMAGE_FORMAT_CONSTRAINTS_INFO_FUCHSIA
+  , STRUCTURE_TYPE_IMAGE_CONSTRAINTS_INFO_FUCHSIA
+  , STRUCTURE_TYPE_BUFFER_COLLECTION_BUFFER_CREATE_INFO_FUCHSIA
+  , STRUCTURE_TYPE_BUFFER_CONSTRAINTS_INFO_FUCHSIA
+  , STRUCTURE_TYPE_BUFFER_COLLECTION_PROPERTIES_FUCHSIA
+  , STRUCTURE_TYPE_BUFFER_COLLECTION_IMAGE_CREATE_INFO_FUCHSIA
+  , STRUCTURE_TYPE_IMPORT_MEMORY_BUFFER_COLLECTION_FUCHSIA
+  , STRUCTURE_TYPE_BUFFER_COLLECTION_CREATE_INFO_FUCHSIA
+  , STRUCTURE_TYPE_SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA
+  , STRUCTURE_TYPE_IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA
+  , STRUCTURE_TYPE_MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA
+  , STRUCTURE_TYPE_MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA
+  , STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA
+  , STRUCTURE_TYPE_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
+  , STRUCTURE_TYPE_DEVICE_ADDRESS_BINDING_CALLBACK_DATA_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_ADDRESS_BINDING_REPORT_FEATURES_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_DRM_PROPERTIES_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT
+  , STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT
+  , STRUCTURE_TYPE_DEVICE_FAULT_INFO_EXT
+  , STRUCTURE_TYPE_DEVICE_FAULT_COUNTS_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_FEATURES_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT
+  , STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT
+  , STRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR
+  , STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT
+  , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MOTION_INFO_NV
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV
+  , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV
+  , 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_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_PROPERTIES_KHR
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_FEATURES_AMD
+  , STRUCTURE_TYPE_GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT
+  , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_2_KHR
+  , STRUCTURE_TYPE_MEMORY_MARKER_INFO_AMD
+  , STRUCTURE_TYPE_BIND_TRANSFORM_FEEDBACK_BUFFER_2_INFO_EXT
+  , STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_2_EXT
+  , STRUCTURE_TYPE_DISPATCH_INDIRECT_2_INFO_KHR
+  , STRUCTURE_TYPE_DRAW_INDIRECT_COUNT_2_INFO_KHR
+  , STRUCTURE_TYPE_DRAW_INDIRECT_2_INFO_KHR
+  , STRUCTURE_TYPE_BIND_VERTEX_BUFFER_3_INFO_KHR
+  , STRUCTURE_TYPE_BIND_INDEX_BUFFER_3_INFO_KHR
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_ADDRESS_COMMANDS_FEATURES_KHR
+  , STRUCTURE_TYPE_MEMORY_RANGE_BARRIER_KHR
+  , STRUCTURE_TYPE_MEMORY_RANGE_BARRIERS_INFO_KHR
+  , STRUCTURE_TYPE_COPY_DEVICE_MEMORY_IMAGE_INFO_KHR
+  , STRUCTURE_TYPE_DEVICE_MEMORY_IMAGE_COPY_KHR
+  , STRUCTURE_TYPE_COPY_DEVICE_MEMORY_INFO_KHR
+  , STRUCTURE_TYPE_DEVICE_MEMORY_COPY_KHR
+  , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT
+  , STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_PUSH_DESCRIPTOR_BUFFER_HANDLE_EXT
+  , STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_INFO_EXT
+  , STRUCTURE_TYPE_OPAQUE_CAPTURE_DESCRIPTOR_DATA_CREATE_INFO_EXT
+  , STRUCTURE_TYPE_SAMPLER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT
+  , STRUCTURE_TYPE_IMAGE_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_EXT
+  , STRUCTURE_TYPE_IMAGE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT
+  , STRUCTURE_TYPE_BUFFER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT
+  , STRUCTURE_TYPE_DESCRIPTOR_GET_INFO_EXT
+  , STRUCTURE_TYPE_DESCRIPTOR_ADDRESS_INFO_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT
+  , STRUCTURE_TYPE_IMPORT_METAL_SHARED_EVENT_INFO_EXT
+  , STRUCTURE_TYPE_EXPORT_METAL_SHARED_EVENT_INFO_EXT
+  , STRUCTURE_TYPE_IMPORT_METAL_IO_SURFACE_INFO_EXT
+  , STRUCTURE_TYPE_EXPORT_METAL_IO_SURFACE_INFO_EXT
+  , STRUCTURE_TYPE_IMPORT_METAL_TEXTURE_INFO_EXT
+  , STRUCTURE_TYPE_EXPORT_METAL_TEXTURE_INFO_EXT
+  , STRUCTURE_TYPE_IMPORT_METAL_BUFFER_INFO_EXT
+  , STRUCTURE_TYPE_EXPORT_METAL_BUFFER_INFO_EXT
+  , STRUCTURE_TYPE_EXPORT_METAL_COMMAND_QUEUE_INFO_EXT
+  , STRUCTURE_TYPE_EXPORT_METAL_DEVICE_INFO_EXT
+  , STRUCTURE_TYPE_EXPORT_METAL_OBJECTS_INFO_EXT
+  , STRUCTURE_TYPE_EXPORT_METAL_OBJECT_CREATE_INFO_EXT
+  , STRUCTURE_TYPE_QUERY_LOW_LATENCY_SUPPORT_NV
+  , STRUCTURE_TYPE_DISPATCH_TILE_INFO_QCOM
+  , STRUCTURE_TYPE_PER_TILE_END_INFO_QCOM
+  , STRUCTURE_TYPE_PER_TILE_BEGIN_INFO_QCOM
+  , STRUCTURE_TYPE_RENDER_PASS_TILE_SHADING_CREATE_INFO_QCOM
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_SHADING_PROPERTIES_QCOM
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_SHADING_FEATURES_QCOM
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_PROPERTIES_NV
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_FEATURES_NV
+  , STRUCTURE_TYPE_CUDA_LAUNCH_INFO_NV
+  , STRUCTURE_TYPE_CUDA_FUNCTION_CREATE_INFO_NV
+  , STRUCTURE_TYPE_CUDA_MODULE_CREATE_INFO_NV
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SPLIT_BARRIER_PROPERTIES_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SPLIT_BARRIER_FEATURES_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MULTIPLE_WAIT_QUEUES_PROPERTIES_QCOM
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MULTIPLE_WAIT_QUEUES_FEATURES_QCOM
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_3_FEATURES_QCOM
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_QUEUE_PERF_HINT_PROPERTIES_QCOM
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_QUEUE_PERF_HINT_FEATURES_QCOM
+  , STRUCTURE_TYPE_PERF_HINT_INFO_QCOM
+  , STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR
+  , STRUCTURE_TYPE_PRESENT_ID_KHR
+  , STRUCTURE_TYPE_SWAPCHAIN_PRESENT_BARRIER_CREATE_INFO_NV
+  , STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_BARRIER_NV
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_BARRIER_FEATURES_NV
+  , STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_3D_FEATURES_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT
+  , STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT
+  , STRUCTURE_TYPE_DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT
+  , STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT
+  , STRUCTURE_TYPE_DEPTH_BIAS_REPRESENTATION_INFO_EXT
+  , STRUCTURE_TYPE_DEPTH_BIAS_INFO_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_BIAS_CONTROL_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_FEATURES_EXT
+  , STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV
+  , STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV
+  , STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV
+  , STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV
+  , STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV
+  , 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_ATOMIC_FLOAT_2_FEATURES_EXT
+  , STRUCTURE_TYPE_MEMORY_MAP_PLACED_INFO_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_MAP_MEMORY_PLACED_PROPERTIES_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_MAP_MEMORY_PLACED_FEATURES_EXT
+  , STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR
+  , STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR
+  , STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR
+  , STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR
+  , STRUCTURE_TYPE_PIPELINE_INFO_KHR
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT
+  , STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT
+  , STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT
+  , STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT
+  , STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT
+  , STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT
+  , STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV
+  , STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV
+  , STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR
+  , STRUCTURE_TYPE_VALIDATION_FEATURES_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
+  , STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR
+  , STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_QUAD_CONTROL_FEATURES_KHR
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ABORT_PROPERTIES_KHR
+  , STRUCTURE_TYPE_DEVICE_FAULT_SHADER_ABORT_MESSAGE_INFO_KHR
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ABORT_FEATURES_KHR
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CONSTANT_DATA_FEATURES_KHR
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD
+  , STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR
+  , 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_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_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_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA
+  , STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD
+  , STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT
+  , STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL
+  , STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL
+  , STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL
+  , STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL
+  , STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL
+  , STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL
+  , STRUCTURE_TYPE_SWAPCHAIN_CALIBRATED_TIMESTAMP_INFO_EXT
+  , STRUCTURE_TYPE_PRESENT_TIMING_SURFACE_CAPABILITIES_EXT
+  , STRUCTURE_TYPE_PAST_PRESENTATION_TIMING_EXT
+  , STRUCTURE_TYPE_PAST_PRESENTATION_TIMING_PROPERTIES_EXT
+  , STRUCTURE_TYPE_PAST_PRESENTATION_TIMING_INFO_EXT
+  , STRUCTURE_TYPE_PRESENT_TIMING_INFO_EXT
+  , STRUCTURE_TYPE_PRESENT_TIMINGS_INFO_EXT
+  , STRUCTURE_TYPE_SWAPCHAIN_TIME_DOMAIN_PROPERTIES_EXT
+  , STRUCTURE_TYPE_SWAPCHAIN_TIMING_PROPERTIES_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_TIMING_FEATURES_EXT
+  , STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV
+  , STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV
+  , STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV
+  , STRUCTURE_TYPE_CHECKPOINT_DATA_NV
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV
+  , STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV
+  , STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT
+  , STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD
+  , STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR
+  , 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_PHYSICAL_DEVICE_ELAPSED_TIMER_QUERY_FEATURES_QCOM
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_CONVERSION_FEATURES_QCOM
+  , 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
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV
+  , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV
+  , STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV
+  , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV
+  , STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV
+  , STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV
+  , STRUCTURE_TYPE_GEOMETRY_AABB_NV
+  , STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV
+  , STRUCTURE_TYPE_GEOMETRY_NV
+  , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV
+  , STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV
+  , STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV
+  , STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR
+  , STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT
+  , STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT
+  , STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT
+  , STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT
+  , STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT
+  , STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT
+  , STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV
+  , STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR
+  , STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR
+  , STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR
+  , STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR
+  , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR
+  , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR
+  , STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR
+  , STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR
+  , STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR
+  , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR
+  , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR
+  , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR
+  , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR
+  , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR
+  , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR
+  , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR
+  , STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR
+  , STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV
+  , STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT
+  , STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT
+  , 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_PHYSICAL_DEVICE_SHADER_BFLOAT16_FEATURES_KHR
+  , STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_HEAP_TENSOR_PROPERTIES_ARM
+  , STRUCTURE_TYPE_SUBSAMPLED_IMAGE_FORMAT_PROPERTIES_EXT
+  , STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_PUSH_DATA_TOKEN_NV
+  , STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_INDEX_CREATE_INFO_EXT
+  , STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_DESCRIPTOR_HEAP_INFO_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_HEAP_FEATURES_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_HEAP_PROPERTIES_EXT
+  , STRUCTURE_TYPE_OPAQUE_CAPTURE_DATA_CREATE_INFO_EXT
+  , STRUCTURE_TYPE_SHADER_DESCRIPTOR_SET_AND_BINDING_MAPPING_INFO_EXT
+  , STRUCTURE_TYPE_DESCRIPTOR_SET_AND_BINDING_MAPPING_EXT
+  , STRUCTURE_TYPE_PUSH_DATA_INFO_EXT
+  , STRUCTURE_TYPE_BIND_HEAP_INFO_EXT
+  , STRUCTURE_TYPE_RESOURCE_DESCRIPTOR_INFO_EXT
+  , STRUCTURE_TYPE_IMAGE_DESCRIPTOR_INFO_EXT
+  , STRUCTURE_TYPE_TEXEL_BUFFER_DESCRIPTOR_INFO_EXT
+  , STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_NODE_CREATE_INFO_AMDX
+  , STRUCTURE_TYPE_EXECUTION_GRAPH_PIPELINE_CREATE_INFO_AMDX
+  , STRUCTURE_TYPE_EXECUTION_GRAPH_PIPELINE_SCRATCH_SIZE_AMDX
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ENQUEUE_PROPERTIES_AMDX
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ENQUEUE_FEATURES_AMDX
+  , STRUCTURE_TYPE_GPA_DEVICE_GET_CLOCK_INFO_AMD
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_GPA_PROPERTIES_2_AMD
+  , STRUCTURE_TYPE_GPA_DEVICE_CLOCK_MODE_INFO_AMD
+  , STRUCTURE_TYPE_GPA_SESSION_CREATE_INFO_AMD
+  , STRUCTURE_TYPE_GPA_SAMPLE_BEGIN_INFO_AMD
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_GPA_PROPERTIES_AMD
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_GPA_FEATURES_AMD
+  , STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID
+  , STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID
+  , STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID
+  , STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID
+  , STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID
+  , STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID
+  , STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID
+  , STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT
+  , STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT
+  , STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT
+  , STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT
+  , STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT
+  , STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK
+  , STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK
+  , STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR
+  , STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR
+  , STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR
+  , STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR
+  , STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR
+  , STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR
+  , STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR
+  , STRUCTURE_TYPE_PERFORMANCE_QUERY_RESERVATION_INFO_KHR
+  , STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR
+  , STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR
+  , STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR
+  , STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR
+  , STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR
+  , STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR
+  , STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR
+  , STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR
+  , STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR
+  , STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR
+  , STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_RELAXED_LINE_RASTERIZATION_FEATURES_IMG
+  , STRUCTURE_TYPE_HDR_METADATA_EXT
+  , STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT
+  , STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT
+  , STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT
+  , STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV
+  , STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX
+  , STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE
+  , STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT
+  , STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT
+  , STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT
+  , STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT
+  , STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT
+  , STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV
+  , STRUCTURE_TYPE_PRESENT_REGIONS_KHR
+  , STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT
+  , STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT
+  , STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR
+  , STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR
+  , STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR
+  , STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR
+  , STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR
+  , STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR
+  , STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR
+  , STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR
+  , STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR
+  , STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR
+  , STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR
+  , STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR
+  , STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR
+  , 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_VI_SURFACE_CREATE_INFO_NN
+  , STRUCTURE_TYPE_VALIDATION_FLAGS_EXT
+  , STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR
+  , STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR
+  , STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR
+  , STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR
+  , STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR
+  , STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR
+  , STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV
+  , STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV
+  , STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV
+  , STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV
+  , STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV
+  , STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP
+  , STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD
+  , STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX
+  , STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX
+  , STRUCTURE_TYPE_CU_MODULE_TEXTURING_MODE_CREATE_INFO_NVX
+  , STRUCTURE_TYPE_CU_LAUNCH_INFO_NVX
+  , STRUCTURE_TYPE_CU_FUNCTION_CREATE_INFO_NVX
+  , STRUCTURE_TYPE_CU_MODULE_CREATE_INFO_NVX
+  , STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT
+  , STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV
+  , STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV
+  , STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV
+  , STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT
+  , STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT
+  , STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT
+  , STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD
+  , STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT
+  , STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR
+  , STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR
+  , STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR
+  , STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR
+  , STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR
+  , STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR
+  , STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR
+  , STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR
+  , STRUCTURE_TYPE_PRESENT_INFO_KHR
+  , STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR
+  , STRUCTURE_TYPE_PIPELINE_OFFLINE_CREATE_INFO
+  , STRUCTURE_TYPE_FAULT_CALLBACK_INFO
+  , STRUCTURE_TYPE_FAULT_DATA
+  , STRUCTURE_TYPE_PIPELINE_POOL_SIZE
+  , STRUCTURE_TYPE_COMMAND_POOL_MEMORY_CONSUMPTION
+  , STRUCTURE_TYPE_COMMAND_POOL_MEMORY_RESERVATION_CREATE_INFO
+  , STRUCTURE_TYPE_DEVICE_OBJECT_RESERVATION_CREATE_INFO
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_SC_1_0_PROPERTIES
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_SC_1_0_FEATURES
+  , STRUCTURE_TYPE_RENDERING_INPUT_ATTACHMENT_INDEX_INFO
+  , STRUCTURE_TYPE_RENDERING_ATTACHMENT_LOCATION_INFO
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES
+  , STRUCTURE_TYPE_RENDERING_AREA_INFO
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES
+  , STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES
+  , STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES
+  , STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES
+  , STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO
+  , STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_INFO
+  , STRUCTURE_TYPE_PUSH_CONSTANTS_INFO
+  , STRUCTURE_TYPE_BIND_DESCRIPTOR_SETS_INFO
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES
+  , STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES
+  , STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY
+  , STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE
+  , STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO
+  , STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO
+  , STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO
+  , STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO
+  , STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY
+  , STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES
+  , STRUCTURE_TYPE_BIND_MEMORY_STATUS
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES
+  , STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO
+  , STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2
+  , STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2
+  , STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES
+  , STRUCTURE_TYPE_MEMORY_UNMAP_INFO
+  , STRUCTURE_TYPE_MEMORY_MAP_INFO
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES
+  , STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES
+  , STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_PROPERTIES
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_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_IMAGE_RESOLVE_2
+  , STRUCTURE_TYPE_IMAGE_BLIT_2
+  , STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2
+  , STRUCTURE_TYPE_BLIT_IMAGE_INFO_2
+  , 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_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_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES
+  , STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO
+  , 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_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES
+  , STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2
+  , STRUCTURE_TYPE_IMAGE_COPY_2
+  , STRUCTURE_TYPE_BUFFER_COPY_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_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_PRIVATE_DATA_SLOT_CREATE_INFO
+  , STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES
+  , STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT
+  , STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES
+  , STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO
+  , STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO
+  , STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES
+  , STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO
+  , STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES
+  , STRUCTURE_TYPE_SUBPASS_END_INFO
+  , STRUCTURE_TYPE_SUBPASS_BEGIN_INFO
+  , STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2
+  , STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2
+  , STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2
+  , STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2
+  , STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES
+  , STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES
+  , STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT
+  , STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES
+  , STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_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
+  , STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES
+  , STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO
+  , STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO
+  , STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO
+  , STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES
+  , STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES
+  , STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO
+  , STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO
+  , STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES
+  , STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO
+  , STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES
+  , STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO
+  , STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO
+  , STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO
+  , STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO
+  , STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES
+  , STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES
+  , STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO
+  , STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO
+  , STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO
+  , STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO
+  , STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO
+  , STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO
+  , STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES
+  , STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO
+  , STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO
+  , STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES
+  , STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO
+  , STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2
+  , STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2
+  , STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2
+  , STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2
+  , STRUCTURE_TYPE_FORMAT_PROPERTIES_2
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2
+  , STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2
+  , STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2
+  , STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2
+  , STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2
+  , STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2
+  , STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES
+  , STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO
+  , STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO
+  , STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO
+  , STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO
+  , STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO
+  , STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO
+  , STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO
+  , STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS
+  , STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO
+  , STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO ::
+    StructureType
+  #-}
+
+conNameStructureType :: String
+conNameStructureType = "StructureType"
+
+enumPrefixStructureType :: String
+enumPrefixStructureType = "STRUCTURE_TYPE_"
+
+showTableStructureType :: [(StructureType, String)]
+showTableStructureType =
+  [ (STRUCTURE_TYPE_APPLICATION_INFO, "APPLICATION_INFO")
+  ,
+    ( STRUCTURE_TYPE_INSTANCE_CREATE_INFO
+    , "INSTANCE_CREATE_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO
+    , "DEVICE_QUEUE_CREATE_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_DEVICE_CREATE_INFO
+    , "DEVICE_CREATE_INFO"
+    )
+  , (STRUCTURE_TYPE_SUBMIT_INFO, "SUBMIT_INFO")
+  ,
+    ( STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO
+    , "MEMORY_ALLOCATE_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_MAPPED_MEMORY_RANGE
+    , "MAPPED_MEMORY_RANGE"
+    )
+  , (STRUCTURE_TYPE_BIND_SPARSE_INFO, "BIND_SPARSE_INFO")
+  ,
+    ( STRUCTURE_TYPE_FENCE_CREATE_INFO
+    , "FENCE_CREATE_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO
+    , "SEMAPHORE_CREATE_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_EVENT_CREATE_INFO
+    , "EVENT_CREATE_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO
+    , "QUERY_POOL_CREATE_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_BUFFER_CREATE_INFO
+    , "BUFFER_CREATE_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO
+    , "BUFFER_VIEW_CREATE_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_IMAGE_CREATE_INFO
+    , "IMAGE_CREATE_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO
+    , "IMAGE_VIEW_CREATE_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO
+    , "SHADER_MODULE_CREATE_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO
+    , "PIPELINE_CACHE_CREATE_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO
+    , "PIPELINE_SHADER_STAGE_CREATE_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO
+    , "PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO
+    , "PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO
+    , "PIPELINE_TESSELLATION_STATE_CREATE_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO
+    , "PIPELINE_VIEWPORT_STATE_CREATE_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO
+    , "PIPELINE_RASTERIZATION_STATE_CREATE_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO
+    , "PIPELINE_MULTISAMPLE_STATE_CREATE_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO
+    , "PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO
+    , "PIPELINE_COLOR_BLEND_STATE_CREATE_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO
+    , "PIPELINE_DYNAMIC_STATE_CREATE_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO
+    , "GRAPHICS_PIPELINE_CREATE_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO
+    , "COMPUTE_PIPELINE_CREATE_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO
+    , "PIPELINE_LAYOUT_CREATE_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_SAMPLER_CREATE_INFO
+    , "SAMPLER_CREATE_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO
+    , "DESCRIPTOR_SET_LAYOUT_CREATE_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO
+    , "DESCRIPTOR_POOL_CREATE_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO
+    , "DESCRIPTOR_SET_ALLOCATE_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET
+    , "WRITE_DESCRIPTOR_SET"
+    )
+  ,
+    ( STRUCTURE_TYPE_COPY_DESCRIPTOR_SET
+    , "COPY_DESCRIPTOR_SET"
+    )
+  ,
+    ( STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO
+    , "FRAMEBUFFER_CREATE_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO
+    , "RENDER_PASS_CREATE_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO
+    , "COMMAND_POOL_CREATE_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO
+    , "COMMAND_BUFFER_ALLOCATE_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO
+    , "COMMAND_BUFFER_INHERITANCE_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO
+    , "COMMAND_BUFFER_BEGIN_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO
+    , "RENDER_PASS_BEGIN_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER
+    , "BUFFER_MEMORY_BARRIER"
+    )
+  ,
+    ( STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER
+    , "IMAGE_MEMORY_BARRIER"
+    )
+  , (STRUCTURE_TYPE_MEMORY_BARRIER, "MEMORY_BARRIER")
+  ,
+    ( STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO
+    , "LOADER_INSTANCE_CREATE_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO
+    , "LOADER_DEVICE_CREATE_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_RESTART_INDEX_FEATURES_EXT
+    , "PHYSICAL_DEVICE_PRIMITIVE_RESTART_INDEX_FEATURES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_NEURAL_ACCELERATOR_STATISTICS_FEATURES_ARM
+    , "PHYSICAL_DEVICE_DATA_GRAPH_NEURAL_ACCELERATOR_STATISTICS_FEATURES_ARM"
+    )
+  ,
+    ( STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_NEURAL_STATISTICS_CREATE_INFO_ARM
+    , "DATA_GRAPH_PIPELINE_SESSION_NEURAL_STATISTICS_CREATE_INFO_ARM"
+    )
+  ,
+    ( STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_NEURAL_STATISTICS_CREATE_INFO_ARM
+    , "DATA_GRAPH_PIPELINE_NEURAL_STATISTICS_CREATE_INFO_ARM"
+    )
+  ,
+    ( STRUCTURE_TYPE_THROTTLE_HINT_SUBMIT_INFO_SEC
+    , "THROTTLE_HINT_SUBMIT_INFO_SEC"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_THROTTLE_HINT_FEATURES_SEC
+    , "PHYSICAL_DEVICE_THROTTLE_HINT_FEATURES_SEC"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MIXED_FLOAT_DOT_PRODUCT_FEATURES_VALVE
+    , "PHYSICAL_DEVICE_SHADER_MIXED_FLOAT_DOT_PRODUCT_FEATURES_VALVE"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_PARTITIONED_FEATURES_EXT
+    , "PHYSICAL_DEVICE_SHADER_SUBGROUP_PARTITIONED_FEATURES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_QUEUE_FAMILY_OPTIMAL_IMAGE_TRANSFER_GRANULARITY_PROPERTIES_KHR
+    , "QUEUE_FAMILY_OPTIMAL_IMAGE_TRANSFER_GRANULARITY_PROPERTIES_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_11_FEATURES_KHR
+    , "PHYSICAL_DEVICE_MAINTENANCE_11_FEATURES_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_OCCUPANCY_PRIORITY_FEATURES_NV
+    , "PHYSICAL_DEVICE_COMPUTE_OCCUPANCY_PRIORITY_FEATURES_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_COMPUTE_OCCUPANCY_PRIORITY_PARAMETERS_NV
+    , "COMPUTE_OCCUPANCY_PRIORITY_PARAMETERS_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_UNIFORM_BUFFER_UNSIZED_ARRAY_FEATURES_EXT
+    , "PHYSICAL_DEVICE_SHADER_UNIFORM_BUFFER_UNSIZED_ARRAY_FEATURES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CACHE_INCREMENTAL_MODE_FEATURES_SEC
+    , "PHYSICAL_DEVICE_PIPELINE_CACHE_INCREMENTAL_MODE_FEATURES_SEC"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_LONG_VECTOR_PROPERTIES_EXT
+    , "PHYSICAL_DEVICE_SHADER_LONG_VECTOR_PROPERTIES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_LONG_VECTOR_FEATURES_EXT
+    , "PHYSICAL_DEVICE_SHADER_LONG_VECTOR_FEATURES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SINGLE_NODE_CONNECTION_ARM
+    , "DATA_GRAPH_PIPELINE_SINGLE_NODE_CONNECTION_ARM"
+    )
+  ,
+    ( STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SINGLE_NODE_CREATE_INFO_ARM
+    , "DATA_GRAPH_PIPELINE_SINGLE_NODE_CREATE_INFO_ARM"
+    )
+  ,
+    ( STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_RESOURCE_INFO_IMAGE_LAYOUT_ARM
+    , "DATA_GRAPH_PIPELINE_RESOURCE_INFO_IMAGE_LAYOUT_ARM"
+    )
+  ,
+    ( STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_OPTICAL_FLOW_CREATE_INFO_ARM
+    , "DATA_GRAPH_PIPELINE_OPTICAL_FLOW_CREATE_INFO_ARM"
+    )
+  ,
+    ( STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_OPTICAL_FLOW_DISPATCH_INFO_ARM
+    , "DATA_GRAPH_PIPELINE_OPTICAL_FLOW_DISPATCH_INFO_ARM"
+    )
+  ,
+    ( STRUCTURE_TYPE_DATA_GRAPH_OPTICAL_FLOW_IMAGE_FORMAT_PROPERTIES_ARM
+    , "DATA_GRAPH_OPTICAL_FLOW_IMAGE_FORMAT_PROPERTIES_ARM"
+    )
+  ,
+    ( STRUCTURE_TYPE_DATA_GRAPH_OPTICAL_FLOW_IMAGE_FORMAT_INFO_ARM
+    , "DATA_GRAPH_OPTICAL_FLOW_IMAGE_FORMAT_INFO_ARM"
+    )
+  ,
+    ( STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_OPTICAL_FLOW_PROPERTIES_ARM
+    , "QUEUE_FAMILY_DATA_GRAPH_OPTICAL_FLOW_PROPERTIES_ARM"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_OPTICAL_FLOW_FEATURES_ARM
+    , "PHYSICAL_DEVICE_DATA_GRAPH_OPTICAL_FLOW_FEATURES_ARM"
+    )
+  ,
+    ( STRUCTURE_TYPE_RESOLVE_IMAGE_MODE_INFO_KHR
+    , "RESOLVE_IMAGE_MODE_INFO_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_RENDERING_END_INFO_KHR
+    , "RENDERING_END_INFO_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_RENDERING_ATTACHMENT_FLAGS_INFO_KHR
+    , "RENDERING_ATTACHMENT_FLAGS_INFO_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_10_PROPERTIES_KHR
+    , "PHYSICAL_DEVICE_MAINTENANCE_10_PROPERTIES_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_10_FEATURES_KHR
+    , "PHYSICAL_DEVICE_MAINTENANCE_10_FEATURES_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_BUILTIN_MODEL_CREATE_INFO_QCOM
+    , "DATA_GRAPH_PIPELINE_BUILTIN_MODEL_CREATE_INFO_QCOM"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_MODEL_FEATURES_QCOM
+    , "PHYSICAL_DEVICE_DATA_GRAPH_MODEL_FEATURES_QCOM"
+    )
+  ,
+    ( STRUCTURE_TYPE_CUSTOM_RESOLVE_CREATE_INFO_EXT
+    , "CUSTOM_RESOLVE_CREATE_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_BEGIN_CUSTOM_RESOLVE_INFO_EXT
+    , "BEGIN_CUSTOM_RESOLVE_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_RESOLVE_FEATURES_EXT
+    , "PHYSICAL_DEVICE_CUSTOM_RESOLVE_FEATURES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_64_BIT_INDEXING_FEATURES_EXT
+    , "PHYSICAL_DEVICE_SHADER_64_BIT_INDEXING_FEATURES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_KHR
+    , "ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MICROMAP_DATA_KHR
+    , "ACCELERATION_STRUCTURE_GEOMETRY_MICROMAP_DATA_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_PROPERTIES_KHR
+    , "PHYSICAL_DEVICE_OPACITY_MICROMAP_PROPERTIES_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_KHR
+    , "PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_KHR
+    , "PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_DEVICE_MEMORY_FEATURES_EXT
+    , "PHYSICAL_DEVICE_ZERO_INITIALIZE_DEVICE_MEMORY_FEATURES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_EXT
+    , "RENDER_PASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_EXT
+    , "PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_EXT
+    , "PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_METERING_FEATURES_NV
+    , "PHYSICAL_DEVICE_PRESENT_METERING_FEATURES_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_SET_PRESENT_CONFIG_NV
+    , "SET_PRESENT_CONFIG_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_KHR
+    , "PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_KHR
+    , "PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PIPELINE_FRAGMENT_DENSITY_MAP_LAYERED_CREATE_INFO_VALVE
+    , "PIPELINE_FRAGMENT_DENSITY_MAP_LAYERED_CREATE_INFO_VALVE"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_PROPERTIES_VALVE
+    , "PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_PROPERTIES_VALVE"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_FEATURES_VALVE
+    , "PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_FEATURES_VALVE"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_FORMAT_PACK_FEATURES_ARM
+    , "PHYSICAL_DEVICE_FORMAT_PACK_FEATURES_ARM"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_ROBUSTNESS_FEATURES_EXT
+    , "PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_ROBUSTNESS_FEATURES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_SHADER_INSTRUMENTATION_METRIC_DESCRIPTION_ARM
+    , "SHADER_INSTRUMENTATION_METRIC_DESCRIPTION_ARM"
+    )
+  ,
+    ( STRUCTURE_TYPE_SHADER_INSTRUMENTATION_CREATE_INFO_ARM
+    , "SHADER_INSTRUMENTATION_CREATE_INFO_ARM"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INSTRUMENTATION_PROPERTIES_ARM
+    , "PHYSICAL_DEVICE_SHADER_INSTRUMENTATION_PROPERTIES_ARM"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INSTRUMENTATION_FEATURES_ARM
+    , "PHYSICAL_DEVICE_SHADER_INSTRUMENTATION_FEATURES_ARM"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_KHR
+    , "PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_MEMORY_GET_METAL_HANDLE_INFO_EXT
+    , "MEMORY_GET_METAL_HANDLE_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_MEMORY_METAL_HANDLE_PROPERTIES_EXT
+    , "MEMORY_METAL_HANDLE_PROPERTIES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_IMPORT_MEMORY_METAL_HANDLE_INFO_EXT
+    , "IMPORT_MEMORY_METAL_HANDLE_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_OPACITY_MICROMAP_FEATURES_ARM
+    , "PHYSICAL_DEVICE_PIPELINE_OPACITY_MICROMAP_FEATURES_ARM"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_PROPERTIES_NV
+    , "PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_PROPERTIES_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_COOPERATIVE_MATRIX_FLEXIBLE_DIMENSIONS_PROPERTIES_NV
+    , "COOPERATIVE_MATRIX_FLEXIBLE_DIMENSIONS_PROPERTIES_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_FEATURES_NV
+    , "PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_FEATURES_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_HDR_VIVID_DYNAMIC_METADATA_HUAWEI
+    , "HDR_VIVID_DYNAMIC_METADATA_HUAWEI"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_HDR_VIVID_FEATURES_HUAWEI
+    , "PHYSICAL_DEVICE_HDR_VIVID_FEATURES_HUAWEI"
+    )
+  ,
+    ( STRUCTURE_TYPE_QUEUE_FAMILY_OWNERSHIP_TRANSFER_PROPERTIES_KHR
+    , "QUEUE_FAMILY_OWNERSHIP_TRANSFER_PROPERTIES_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_PROPERTIES_KHR
+    , "PHYSICAL_DEVICE_MAINTENANCE_9_PROPERTIES_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_FEATURES_KHR
+    , "PHYSICAL_DEVICE_MAINTENANCE_9_FEATURES_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLAMP_CONTROL_CREATE_INFO_EXT
+    , "PIPELINE_VIEWPORT_DEPTH_CLAMP_CONTROL_CREATE_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_CONTROL_FEATURES_EXT
+    , "PHYSICAL_DEVICE_DEPTH_CLAMP_CONTROL_FEATURES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_EXT
+    , "PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_EXT
+    , "PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_CONSTANT_BANK_PROPERTIES_NV
+    , "PHYSICAL_DEVICE_PUSH_CONSTANT_BANK_PROPERTIES_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_CONSTANT_BANK_FEATURES_NV
+    , "PHYSICAL_DEVICE_PUSH_CONSTANT_BANK_FEATURES_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_PUSH_CONSTANT_BANK_INFO_NV
+    , "PUSH_CONSTANT_BANK_INFO_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FMA_FEATURES_KHR
+    , "PHYSICAL_DEVICE_SHADER_FMA_FEATURES_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_IMAGE_ALIGNMENT_CONTROL_CREATE_INFO_MESA
+    , "IMAGE_ALIGNMENT_CONTROL_CREATE_INFO_MESA"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_PROPERTIES_MESA
+    , "PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_PROPERTIES_MESA"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_FEATURES_MESA
+    , "PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_FEATURES_MESA"
+    )
+  ,
+    ( STRUCTURE_TYPE_MEMORY_BARRIER_ACCESS_FLAGS_3_KHR
+    , "MEMORY_BARRIER_ACCESS_FLAGS_3_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_8_FEATURES_KHR
+    , "PHYSICAL_DEVICE_MAINTENANCE_8_FEATURES_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_DEVICE_FAULT_DEBUG_INFO_KHR
+    , "DEVICE_FAULT_DEBUG_INFO_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_DEVICE_FAULT_INFO_KHR
+    , "DEVICE_FAULT_INFO_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_PROPERTIES_KHR
+    , "PHYSICAL_DEVICE_FAULT_PROPERTIES_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_FEATURES_KHR
+    , "PHYSICAL_DEVICE_FAULT_FEATURES_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_GENERATED_COMMANDS_SHADER_INFO_EXT
+    , "GENERATED_COMMANDS_SHADER_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_GENERATED_COMMANDS_PIPELINE_INFO_EXT
+    , "GENERATED_COMMANDS_PIPELINE_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXT
+    , "INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_INFO_EXT
+    , "INDIRECT_EXECUTION_SET_SHADER_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXT
+    , "INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_SHADER_EXT
+    , "WRITE_INDIRECT_EXECUTION_SET_SHADER_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXT
+    , "WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_EXT
+    , "INDIRECT_COMMANDS_LAYOUT_TOKEN_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXT
+    , "INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_EXT
+    , "GENERATED_COMMANDS_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_CREATE_INFO_EXT
+    , "INDIRECT_EXECUTION_SET_CREATE_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXT
+    , "GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXT
+    , "PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXT
+    , "PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_VALIDATION_FEATURES_NV
+    , "PHYSICAL_DEVICE_RAY_TRACING_VALIDATION_FEATURES_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT8_FEATURES_EXT
+    , "PHYSICAL_DEVICE_SHADER_FLOAT8_FEATURES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_REPLICATED_COMPOSITES_FEATURES_EXT
+    , "PHYSICAL_DEVICE_SHADER_REPLICATED_COMPOSITES_FEATURES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT16_VECTOR_FEATURES_NV
+    , "PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT16_VECTOR_FEATURES_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_VULKAN_PROPERTIES_KHR
+    , "PHYSICAL_DEVICE_LAYERED_API_VULKAN_PROPERTIES_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_KHR
+    , "PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_LIST_KHR
+    , "PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_LIST_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_PROPERTIES_KHR
+    , "PHYSICAL_DEVICE_MAINTENANCE_7_PROPERTIES_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_FEATURES_KHR
+    , "PHYSICAL_DEVICE_MAINTENANCE_7_FEATURES_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_COMMAND_BUFFER_INHERITANCE_FEATURES_NV
+    , "PHYSICAL_DEVICE_COMMAND_BUFFER_INHERITANCE_FEATURES_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_RELAXED_EXTENDED_INSTRUCTION_FEATURES_KHR
+    , "PHYSICAL_DEVICE_SHADER_RELAXED_EXTENDED_INSTRUCTION_FEATURES_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_COMPUTE_QUEUE_PROPERTIES_NV
+    , "PHYSICAL_DEVICE_EXTERNAL_COMPUTE_QUEUE_PROPERTIES_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_DATA_PARAMS_NV
+    , "EXTERNAL_COMPUTE_QUEUE_DATA_PARAMS_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_CREATE_INFO_NV
+    , "EXTERNAL_COMPUTE_QUEUE_CREATE_INFO_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_DEVICE_CREATE_INFO_NV
+    , "EXTERNAL_COMPUTE_QUEUE_DEVICE_CREATE_INFO_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_RAW_ACCESS_CHAINS_FEATURES_NV
+    , "PHYSICAL_DEVICE_RAW_ACCESS_CHAINS_FEATURES_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_DISPLAY_MODE_STEREO_PROPERTIES_NV
+    , "DISPLAY_MODE_STEREO_PROPERTIES_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_DISPLAY_SURFACE_STEREO_CREATE_INFO_NV
+    , "DISPLAY_SURFACE_STEREO_CREATE_INFO_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_DECOMPRESS_MEMORY_INFO_EXT
+    , "DECOMPRESS_MEMORY_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_EXT
+    , "PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_EXT
+    , "PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INDIRECT_INFO_KHR
+    , "COPY_MEMORY_TO_IMAGE_INDIRECT_INFO_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_COPY_MEMORY_INDIRECT_INFO_KHR
+    , "COPY_MEMORY_INDIRECT_INFO_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_KHR
+    , "PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_KHR
+    , "PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_TILE_MEMORY_SIZE_INFO_QCOM
+    , "TILE_MEMORY_SIZE_INFO_QCOM"
+    )
+  ,
+    ( STRUCTURE_TYPE_TILE_MEMORY_BIND_INFO_QCOM
+    , "TILE_MEMORY_BIND_INFO_QCOM"
+    )
+  ,
+    ( STRUCTURE_TYPE_TILE_MEMORY_REQUIREMENTS_QCOM
+    , "TILE_MEMORY_REQUIREMENTS_QCOM"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_MEMORY_HEAP_PROPERTIES_QCOM
+    , "PHYSICAL_DEVICE_TILE_MEMORY_HEAP_PROPERTIES_QCOM"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_MEMORY_HEAP_FEATURES_QCOM
+    , "PHYSICAL_DEVICE_TILE_MEMORY_HEAP_FEATURES_QCOM"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_POOL_OVERALLOCATION_FEATURES_NV
+    , "PHYSICAL_DEVICE_DESCRIPTOR_POOL_OVERALLOCATION_FEATURES_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_BIND_DESCRIPTOR_BUFFER_EMBEDDED_SAMPLERS_INFO_EXT
+    , "BIND_DESCRIPTOR_BUFFER_EMBEDDED_SAMPLERS_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_SET_DESCRIPTOR_BUFFER_OFFSETS_INFO_EXT
+    , "SET_DESCRIPTOR_BUFFER_OFFSETS_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_KHR
+    , "CALIBRATED_TIMESTAMP_INFO_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_DRIVER_PROPERTIES_MSFT
+    , "PHYSICAL_DEVICE_LAYERED_DRIVER_PROPERTIES_MSFT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCREEN_BUFFER_FEATURES_QNX
+    , "PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCREEN_BUFFER_FEATURES_QNX"
+    )
+  ,
+    ( STRUCTURE_TYPE_EXTERNAL_FORMAT_QNX
+    , "EXTERNAL_FORMAT_QNX"
+    )
+  ,
+    ( STRUCTURE_TYPE_IMPORT_SCREEN_BUFFER_INFO_QNX
+    , "IMPORT_SCREEN_BUFFER_INFO_QNX"
+    )
+  ,
+    ( STRUCTURE_TYPE_SCREEN_BUFFER_FORMAT_PROPERTIES_QNX
+    , "SCREEN_BUFFER_FORMAT_PROPERTIES_QNX"
+    )
+  ,
+    ( STRUCTURE_TYPE_SCREEN_BUFFER_PROPERTIES_QNX
+    , "SCREEN_BUFFER_PROPERTIES_QNX"
+    )
+  ,
+    ( STRUCTURE_TYPE_ATTACHMENT_FEEDBACK_LOOP_INFO_EXT
+    , "ATTACHMENT_FEEDBACK_LOOP_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFIED_IMAGE_LAYOUTS_FEATURES_KHR
+    , "PHYSICAL_DEVICE_UNIFIED_IMAGE_LAYOUTS_FEATURES_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_FEATURES_EXT
+    , "PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_FEATURES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_CLAMP_FEATURES_QCOM
+    , "PHYSICAL_DEVICE_CUBIC_CLAMP_FEATURES_QCOM"
+    )
+  ,
+    ( STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_YCBCR_DEGAMMA_CREATE_INFO_QCOM
+    , "SAMPLER_YCBCR_CONVERSION_YCBCR_DEGAMMA_CREATE_INFO_QCOM"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_DEGAMMA_FEATURES_QCOM
+    , "PHYSICAL_DEVICE_YCBCR_DEGAMMA_FEATURES_QCOM"
+    )
+  ,
+    ( STRUCTURE_TYPE_BLIT_IMAGE_CUBIC_WEIGHTS_INFO_QCOM
+    , "BLIT_IMAGE_CUBIC_WEIGHTS_INFO_QCOM"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_WEIGHTS_FEATURES_QCOM
+    , "PHYSICAL_DEVICE_CUBIC_WEIGHTS_FEATURES_QCOM"
+    )
+  ,
+    ( STRUCTURE_TYPE_SAMPLER_CUBIC_WEIGHTS_CREATE_INFO_QCOM
+    , "SAMPLER_CUBIC_WEIGHTS_CREATE_INFO_QCOM"
+    )
+  ,
+    ( STRUCTURE_TYPE_SAMPLER_BLOCK_MATCH_WINDOW_CREATE_INFO_QCOM
+    , "SAMPLER_BLOCK_MATCH_WINDOW_CREATE_INFO_QCOM"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_PROPERTIES_QCOM
+    , "PHYSICAL_DEVICE_IMAGE_PROCESSING_2_PROPERTIES_QCOM"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_FEATURES_QCOM
+    , "PHYSICAL_DEVICE_IMAGE_PROCESSING_2_FEATURES_QCOM"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_PER_STAGE_DESCRIPTOR_SET_FEATURES_NV
+    , "PHYSICAL_DEVICE_PER_STAGE_DESCRIPTOR_SET_FEATURES_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_PROPERTIES_KHR
+    , "PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_PROPERTIES_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_KHR
+    , "PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_RENDER_AREAS_RENDER_PASS_BEGIN_INFO_QCOM
+    , "MULTIVIEW_PER_VIEW_RENDER_AREAS_RENDER_PASS_BEGIN_INFO_QCOM"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_RENDER_AREAS_FEATURES_QCOM
+    , "PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_RENDER_AREAS_FEATURES_QCOM"
+    )
+  ,
+    ( STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_TOSA_PROPERTIES_ARM
+    , "QUEUE_FAMILY_DATA_GRAPH_TOSA_PROPERTIES_ARM"
+    )
+  ,
+    ( STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CONSTANT_TENSOR_SEMI_STRUCTURED_SPARSITY_INFO_ARM
+    , "DATA_GRAPH_PIPELINE_CONSTANT_TENSOR_SEMI_STRUCTURED_SPARSITY_INFO_ARM"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_INFO_ARM
+    , "PHYSICAL_DEVICE_QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_INFO_ARM"
+    )
+  ,
+    ( STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_PROPERTIES_ARM
+    , "QUEUE_FAMILY_DATA_GRAPH_PROPERTIES_ARM"
+    )
+  ,
+    ( STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_PROPERTIES_ARM
+    , "QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_PROPERTIES_ARM"
+    )
+  ,
+    ( STRUCTURE_TYPE_DATA_GRAPH_PROCESSING_ENGINE_CREATE_INFO_ARM
+    , "DATA_GRAPH_PROCESSING_ENGINE_CREATE_INFO_ARM"
+    )
+  ,
+    ( STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_DISPATCH_INFO_ARM
+    , "DATA_GRAPH_PIPELINE_DISPATCH_INFO_ARM"
+    )
+  ,
+    ( STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_IDENTIFIER_CREATE_INFO_ARM
+    , "DATA_GRAPH_PIPELINE_IDENTIFIER_CREATE_INFO_ARM"
+    )
+  ,
+    ( STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENT_ARM
+    , "DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENT_ARM"
+    )
+  ,
+    ( STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENTS_INFO_ARM
+    , "DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENTS_INFO_ARM"
+    )
+  ,
+    ( STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_COMPILER_CONTROL_CREATE_INFO_ARM
+    , "DATA_GRAPH_PIPELINE_COMPILER_CONTROL_CREATE_INFO_ARM"
+    )
+  ,
+    ( STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_INFO_ARM
+    , "DATA_GRAPH_PIPELINE_INFO_ARM"
+    )
+  ,
+    ( STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_PROPERTY_QUERY_RESULT_ARM
+    , "DATA_GRAPH_PIPELINE_PROPERTY_QUERY_RESULT_ARM"
+    )
+  ,
+    ( STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SHADER_MODULE_CREATE_INFO_ARM
+    , "DATA_GRAPH_PIPELINE_SHADER_MODULE_CREATE_INFO_ARM"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_FEATURES_ARM
+    , "PHYSICAL_DEVICE_DATA_GRAPH_FEATURES_ARM"
+    )
+  ,
+    ( STRUCTURE_TYPE_BIND_DATA_GRAPH_PIPELINE_SESSION_MEMORY_INFO_ARM
+    , "BIND_DATA_GRAPH_PIPELINE_SESSION_MEMORY_INFO_ARM"
+    )
+  ,
+    ( STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_MEMORY_REQUIREMENTS_INFO_ARM
+    , "DATA_GRAPH_PIPELINE_SESSION_MEMORY_REQUIREMENTS_INFO_ARM"
+    )
+  ,
+    ( STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CONSTANT_ARM
+    , "DATA_GRAPH_PIPELINE_CONSTANT_ARM"
+    )
+  ,
+    ( STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_RESOURCE_INFO_ARM
+    , "DATA_GRAPH_PIPELINE_RESOURCE_INFO_ARM"
+    )
+  ,
+    ( STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_CREATE_INFO_ARM
+    , "DATA_GRAPH_PIPELINE_SESSION_CREATE_INFO_ARM"
+    )
+  ,
+    ( STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CREATE_INFO_ARM
+    , "DATA_GRAPH_PIPELINE_CREATE_INFO_ARM"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_KHR
+    , "PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_KHR
+    , "COOPERATIVE_MATRIX_PROPERTIES_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_KHR
+    , "PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_LATENCY_SURFACE_CAPABILITIES_NV
+    , "LATENCY_SURFACE_CAPABILITIES_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_SWAPCHAIN_LATENCY_CREATE_INFO_NV
+    , "SWAPCHAIN_LATENCY_CREATE_INFO_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_OUT_OF_BAND_QUEUE_TYPE_INFO_NV
+    , "OUT_OF_BAND_QUEUE_TYPE_INFO_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_LATENCY_SUBMISSION_PRESENT_ID_NV
+    , "LATENCY_SUBMISSION_PRESENT_ID_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_LATENCY_TIMINGS_FRAME_REPORT_NV
+    , "LATENCY_TIMINGS_FRAME_REPORT_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_GET_LATENCY_MARKER_INFO_NV
+    , "GET_LATENCY_MARKER_INFO_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_SET_LATENCY_MARKER_INFO_NV
+    , "SET_LATENCY_MARKER_INFO_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_LATENCY_SLEEP_INFO_NV
+    , "LATENCY_SLEEP_INFO_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_LATENCY_SLEEP_MODE_INFO_NV
+    , "LATENCY_SLEEP_MODE_INFO_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_INTERNALLY_SYNCHRONIZED_QUEUES_FEATURES_KHR
+    , "PHYSICAL_DEVICE_INTERNALLY_SYNCHRONIZED_QUEUES_FEATURES_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_FEATURES_EXT
+    , "PHYSICAL_DEVICE_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_FEATURES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT
+    , "PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_PROPERTIES_ARM
+    , "PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_PROPERTIES_ARM"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM
+    , "PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM"
+    )
+  ,
+    ( STRUCTURE_TYPE_LAYER_SETTINGS_CREATE_INFO_EXT
+    , "LAYER_SETTINGS_CREATE_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_PROPERTIES_EXT
+    , "PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_PROPERTIES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_FEATURES_EXT
+    , "PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_FEATURES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT
+    , "MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT
+    , "PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_PROPERTIES_NV
+    , "PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_PROPERTIES_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_FEATURES_NV
+    , "PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_FEATURES_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_CONVERT_COOPERATIVE_VECTOR_MATRIX_INFO_NV
+    , "CONVERT_COOPERATIVE_VECTOR_MATRIX_INFO_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_COOPERATIVE_VECTOR_PROPERTIES_NV
+    , "COOPERATIVE_VECTOR_PROPERTIES_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_VECTOR_PROPERTIES_NV
+    , "PHYSICAL_DEVICE_COOPERATIVE_VECTOR_PROPERTIES_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_VECTOR_FEATURES_NV
+    , "PHYSICAL_DEVICE_COOPERATIVE_VECTOR_FEATURES_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV
+    , "PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV
+    , "PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_VIEWPORTS_FEATURES_QCOM
+    , "PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_VIEWPORTS_FEATURES_QCOM"
+    )
+  ,
+    ( STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_KHR
+    , "RELEASE_SWAPCHAIN_IMAGES_INFO_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_KHR
+    , "SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_KHR
+    , "SWAPCHAIN_PRESENT_MODE_INFO_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_KHR
+    , "SWAPCHAIN_PRESENT_MODES_CREATE_INFO_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_KHR
+    , "SWAPCHAIN_PRESENT_FENCE_INFO_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_KHR
+    , "PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_KHR
+    , "SURFACE_PRESENT_MODE_COMPATIBILITY_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_KHR
+    , "SURFACE_PRESENT_SCALING_CAPABILITIES_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_SURFACE_PRESENT_MODE_KHR
+    , "SURFACE_PRESENT_MODE_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_AMIGO_PROFILING_SUBMIT_INFO_SEC
+    , "AMIGO_PROFILING_SUBMIT_INFO_SEC"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_AMIGO_PROFILING_FEATURES_SEC
+    , "PHYSICAL_DEVICE_AMIGO_PROFILING_FEATURES_SEC"
+    )
+  ,
+    ( STRUCTURE_TYPE_TILE_PROPERTIES_QCOM
+    , "TILE_PROPERTIES_QCOM"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM
+    , "PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM"
+    )
+  ,
+    ( STRUCTURE_TYPE_PIPELINE_BINARY_HANDLES_INFO_KHR
+    , "PIPELINE_BINARY_HANDLES_INFO_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_DEVICE_PIPELINE_BINARY_INTERNAL_CACHE_CONTROL_KHR
+    , "DEVICE_PIPELINE_BINARY_INTERNAL_CACHE_CONTROL_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PIPELINE_CREATE_INFO_KHR
+    , "PIPELINE_CREATE_INFO_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PIPELINE_BINARY_DATA_INFO_KHR
+    , "PIPELINE_BINARY_DATA_INFO_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_RELEASE_CAPTURED_PIPELINE_DATA_INFO_KHR
+    , "RELEASE_CAPTURED_PIPELINE_DATA_INFO_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_BINARY_PROPERTIES_KHR
+    , "PHYSICAL_DEVICE_PIPELINE_BINARY_PROPERTIES_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PIPELINE_BINARY_KEY_KHR
+    , "PIPELINE_BINARY_KEY_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PIPELINE_BINARY_INFO_KHR
+    , "PIPELINE_BINARY_INFO_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PIPELINE_BINARY_CREATE_INFO_KHR
+    , "PIPELINE_BINARY_CREATE_INFO_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_BINARY_FEATURES_KHR
+    , "PHYSICAL_DEVICE_PIPELINE_BINARY_FEATURES_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT
+    , "VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT
+    , "VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_SHADER_CREATE_INFO_EXT
+    , "SHADER_CREATE_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_PROPERTIES_EXT
+    , "PHYSICAL_DEVICE_SHADER_OBJECT_PROPERTIES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT
+    , "PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_POSITION_FETCH_FEATURES_KHR
+    , "PHYSICAL_DEVICE_RAY_TRACING_POSITION_FETCH_FEATURES_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PRESENT_WAIT_2_INFO_KHR
+    , "PRESENT_WAIT_2_INFO_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_2_FEATURES_KHR
+    , "PHYSICAL_DEVICE_PRESENT_WAIT_2_FEATURES_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_WAIT_2_KHR
+    , "SURFACE_CAPABILITIES_PRESENT_WAIT_2_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_2_FEATURES_KHR
+    , "PHYSICAL_DEVICE_PRESENT_ID_2_FEATURES_KHR"
+    )
+  , (STRUCTURE_TYPE_PRESENT_ID_2_KHR, "PRESENT_ID_2_KHR")
+  ,
+    ( STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_ID_2_KHR
+    , "SURFACE_CAPABILITIES_PRESENT_ID_2_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DENSE_GEOMETRY_FORMAT_TRIANGLES_DATA_AMDX
+    , "ACCELERATION_STRUCTURE_DENSE_GEOMETRY_FORMAT_TRIANGLES_DATA_AMDX"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DENSE_GEOMETRY_FORMAT_FEATURES_AMDX
+    , "PHYSICAL_DEVICE_DENSE_GEOMETRY_FORMAT_FEATURES_AMDX"
+    )
+  ,
+    ( STRUCTURE_TYPE_ANTI_LAG_PRESENTATION_INFO_AMD
+    , "ANTI_LAG_PRESENTATION_INFO_AMD"
+    )
+  ,
+    ( STRUCTURE_TYPE_ANTI_LAG_DATA_AMD
+    , "ANTI_LAG_DATA_AMD"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_ANTI_LAG_FEATURES_AMD
+    , "PHYSICAL_DEVICE_ANTI_LAG_FEATURES_AMD"
+    )
+  ,
+    ( STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_RESOLVE_PROPERTIES_ANDROID
+    , "ANDROID_HARDWARE_BUFFER_FORMAT_RESOLVE_PROPERTIES_ANDROID"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_PROPERTIES_ANDROID
+    , "PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_PROPERTIES_ANDROID"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_FEATURES_ANDROID
+    , "PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_FEATURES_ANDROID"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT
+    , "PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_PRIVATE_DATA_INFO_NV
+    , "OPTICAL_FLOW_SESSION_CREATE_PRIVATE_DATA_INFO_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_OPTICAL_FLOW_EXECUTE_INFO_NV
+    , "OPTICAL_FLOW_EXECUTE_INFO_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_INFO_NV
+    , "OPTICAL_FLOW_SESSION_CREATE_INFO_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_OPTICAL_FLOW_IMAGE_FORMAT_PROPERTIES_NV
+    , "OPTICAL_FLOW_IMAGE_FORMAT_PROPERTIES_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_OPTICAL_FLOW_IMAGE_FORMAT_INFO_NV
+    , "OPTICAL_FLOW_IMAGE_FORMAT_INFO_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_PROPERTIES_NV
+    , "PHYSICAL_DEVICE_OPTICAL_FLOW_PROPERTIES_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_FEATURES_NV
+    , "PHYSICAL_DEVICE_OPTICAL_FLOW_FEATURES_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_EXT
+    , "PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_SHADER_MODULE_IDENTIFIER_EXT
+    , "SHADER_MODULE_IDENTIFIER_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_MODULE_IDENTIFIER_CREATE_INFO_EXT
+    , "PIPELINE_SHADER_STAGE_MODULE_IDENTIFIER_CREATE_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_PROPERTIES_EXT
+    , "PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_PROPERTIES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT
+    , "PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_FRAME_BOUNDARY_TENSORS_ARM
+    , "FRAME_BOUNDARY_TENSORS_ARM"
+    )
+  ,
+    ( STRUCTURE_TYPE_TENSOR_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_ARM
+    , "TENSOR_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_ARM"
+    )
+  ,
+    ( STRUCTURE_TYPE_TENSOR_CAPTURE_DESCRIPTOR_DATA_INFO_ARM
+    , "TENSOR_CAPTURE_DESCRIPTOR_DATA_INFO_ARM"
+    )
+  ,
+    ( STRUCTURE_TYPE_DESCRIPTOR_GET_TENSOR_INFO_ARM
+    , "DESCRIPTOR_GET_TENSOR_INFO_ARM"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_PROPERTIES_ARM
+    , "PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_PROPERTIES_ARM"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_FEATURES_ARM
+    , "PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_FEATURES_ARM"
+    )
+  ,
+    ( STRUCTURE_TYPE_EXTERNAL_MEMORY_TENSOR_CREATE_INFO_ARM
+    , "EXTERNAL_MEMORY_TENSOR_CREATE_INFO_ARM"
+    )
+  ,
+    ( STRUCTURE_TYPE_EXTERNAL_TENSOR_PROPERTIES_ARM
+    , "EXTERNAL_TENSOR_PROPERTIES_ARM"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_TENSOR_INFO_ARM
+    , "PHYSICAL_DEVICE_EXTERNAL_TENSOR_INFO_ARM"
+    )
+  ,
+    ( STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_TENSOR_ARM
+    , "MEMORY_DEDICATED_ALLOCATE_INFO_TENSOR_ARM"
+    )
+  ,
+    ( STRUCTURE_TYPE_TENSOR_DEPENDENCY_INFO_ARM
+    , "TENSOR_DEPENDENCY_INFO_ARM"
+    )
+  , (STRUCTURE_TYPE_TENSOR_COPY_ARM, "TENSOR_COPY_ARM")
+  ,
+    ( STRUCTURE_TYPE_COPY_TENSOR_INFO_ARM
+    , "COPY_TENSOR_INFO_ARM"
+    )
+  ,
+    ( STRUCTURE_TYPE_DEVICE_TENSOR_MEMORY_REQUIREMENTS_ARM
+    , "DEVICE_TENSOR_MEMORY_REQUIREMENTS_ARM"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_TENSOR_FEATURES_ARM
+    , "PHYSICAL_DEVICE_TENSOR_FEATURES_ARM"
+    )
+  ,
+    ( STRUCTURE_TYPE_TENSOR_MEMORY_BARRIER_ARM
+    , "TENSOR_MEMORY_BARRIER_ARM"
+    )
+  ,
+    ( STRUCTURE_TYPE_TENSOR_MEMORY_REQUIREMENTS_INFO_ARM
+    , "TENSOR_MEMORY_REQUIREMENTS_INFO_ARM"
+    )
+  ,
+    ( STRUCTURE_TYPE_TENSOR_DESCRIPTION_ARM
+    , "TENSOR_DESCRIPTION_ARM"
+    )
+  ,
+    ( STRUCTURE_TYPE_TENSOR_FORMAT_PROPERTIES_ARM
+    , "TENSOR_FORMAT_PROPERTIES_ARM"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_TENSOR_PROPERTIES_ARM
+    , "PHYSICAL_DEVICE_TENSOR_PROPERTIES_ARM"
+    )
+  ,
+    ( STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_TENSOR_ARM
+    , "WRITE_DESCRIPTOR_SET_TENSOR_ARM"
+    )
+  ,
+    ( STRUCTURE_TYPE_BIND_TENSOR_MEMORY_INFO_ARM
+    , "BIND_TENSOR_MEMORY_INFO_ARM"
+    )
+  ,
+    ( STRUCTURE_TYPE_TENSOR_VIEW_CREATE_INFO_ARM
+    , "TENSOR_VIEW_CREATE_INFO_ARM"
+    )
+  ,
+    ( STRUCTURE_TYPE_TENSOR_CREATE_INFO_ARM
+    , "TENSOR_CREATE_INFO_ARM"
+    )
+  ,
+    ( STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_LIST_LUNARG
+    , "DIRECT_DRIVER_LOADING_LIST_LUNARG"
+    )
+  ,
+    ( STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_INFO_LUNARG
+    , "DIRECT_DRIVER_LOADING_INFO_LUNARG"
+    )
+  ,
+    ( STRUCTURE_TYPE_RENDER_PASS_SUBPASS_FEEDBACK_CREATE_INFO_EXT
+    , "RENDER_PASS_SUBPASS_FEEDBACK_CREATE_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_RENDER_PASS_CREATION_FEEDBACK_CREATE_INFO_EXT
+    , "RENDER_PASS_CREATION_FEEDBACK_CREATE_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_RENDER_PASS_CREATION_CONTROL_EXT
+    , "RENDER_PASS_CREATION_CONTROL_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT
+    , "PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT
+    , "PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT
+    , "PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT
+    , "EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_PROPERTIES_EXT
+    , "PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_PROPERTIES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_FEATURES_EXT
+    , "PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_FEATURES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_IMAGE_VIEW_SAMPLE_WEIGHT_CREATE_INFO_QCOM
+    , "IMAGE_VIEW_SAMPLE_WEIGHT_CREATE_INFO_QCOM"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_PROPERTIES_QCOM
+    , "PHYSICAL_DEVICE_IMAGE_PROCESSING_PROPERTIES_QCOM"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM
+    , "PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT
+    , "PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MAXIMAL_RECONVERGENCE_FEATURES_KHR
+    , "PHYSICAL_DEVICE_SHADER_MAXIMAL_RECONVERGENCE_FEATURES_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV
+    , "PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_SPHERES_DATA_NV
+    , "ACCELERATION_STRUCTURE_GEOMETRY_SPHERES_DATA_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_LINEAR_SWEPT_SPHERES_DATA_NV
+    , "ACCELERATION_STRUCTURE_GEOMETRY_LINEAR_SWEPT_SPHERES_DATA_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_LINEAR_SWEPT_SPHERES_FEATURES_NV
+    , "PHYSICAL_DEVICE_RAY_TRACING_LINEAR_SWEPT_SPHERES_FEATURES_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_PIPELINE_INDIRECT_DEVICE_ADDRESS_INFO_NV
+    , "PIPELINE_INDIRECT_DEVICE_ADDRESS_INFO_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_COMPUTE_PIPELINE_INDIRECT_BUFFER_INFO_NV
+    , "COMPUTE_PIPELINE_INDIRECT_BUFFER_INFO_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_COMPUTE_FEATURES_NV
+    , "PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_COMPUTE_FEATURES_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV
+    , "PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_RENDER_PASS_STRIPE_SUBMIT_INFO_ARM
+    , "RENDER_PASS_STRIPE_SUBMIT_INFO_ARM"
+    )
+  ,
+    ( STRUCTURE_TYPE_RENDER_PASS_STRIPE_INFO_ARM
+    , "RENDER_PASS_STRIPE_INFO_ARM"
+    )
+  ,
+    ( STRUCTURE_TYPE_RENDER_PASS_STRIPE_BEGIN_INFO_ARM
+    , "RENDER_PASS_STRIPE_BEGIN_INFO_ARM"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_PROPERTIES_ARM
+    , "PHYSICAL_DEVICE_RENDER_PASS_STRIPED_PROPERTIES_ARM"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_FEATURES_ARM
+    , "PHYSICAL_DEVICE_RENDER_PASS_STRIPED_FEATURES_ARM"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT
+    , "PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE
+    , "DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE"
+    )
+  ,
+    ( STRUCTURE_TYPE_DESCRIPTOR_SET_BINDING_REFERENCE_VALVE
+    , "DESCRIPTOR_SET_BINDING_REFERENCE_VALVE"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE
+    , "PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE"
+    )
+  ,
+    ( STRUCTURE_TYPE_IMAGE_VIEW_SLICED_CREATE_INFO_EXT
+    , "IMAGE_VIEW_SLICED_CREATE_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_SLICED_VIEW_OF_3D_FEATURES_EXT
+    , "PHYSICAL_DEVICE_IMAGE_SLICED_VIEW_OF_3D_FEATURES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_DISPATCH_PARAMETERS_PROPERTIES_ARM
+    , "PHYSICAL_DEVICE_SCHEDULING_CONTROLS_DISPATCH_PARAMETERS_PROPERTIES_ARM"
+    )
+  ,
+    ( STRUCTURE_TYPE_DISPATCH_PARAMETERS_ARM
+    , "DISPATCH_PARAMETERS_ARM"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_PROPERTIES_ARM
+    , "PHYSICAL_DEVICE_SCHEDULING_CONTROLS_PROPERTIES_ARM"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_FEATURES_ARM
+    , "PHYSICAL_DEVICE_SCHEDULING_CONTROLS_FEATURES_ARM"
+    )
+  ,
+    ( STRUCTURE_TYPE_DEVICE_QUEUE_SHADER_CORE_CONTROL_CREATE_INFO_ARM
+    , "DEVICE_QUEUE_SHADER_CORE_CONTROL_CREATE_INFO_ARM"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_ARM
+    , "PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_ARM"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT
+    , "PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT
+    , "SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT
+    , "PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_VRS_FEATURES_HUAWEI
+    , "PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_VRS_FEATURES_HUAWEI"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI
+    , "PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI
+    , "PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI"
+    )
+  ,
+    ( STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_DISPLACEMENT_MICROMAP_NV
+    , "ACCELERATION_STRUCTURE_TRIANGLES_DISPLACEMENT_MICROMAP_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_PROPERTIES_NV
+    , "PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_PROPERTIES_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_FEATURES_NV
+    , "PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_FEATURES_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT
+    , "ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_MICROMAP_BUILD_SIZES_INFO_EXT
+    , "MICROMAP_BUILD_SIZES_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_MICROMAP_CREATE_INFO_EXT
+    , "MICROMAP_CREATE_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_PROPERTIES_EXT
+    , "PHYSICAL_DEVICE_OPACITY_MICROMAP_PROPERTIES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_EXT
+    , "PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_COPY_MEMORY_TO_MICROMAP_INFO_EXT
+    , "COPY_MEMORY_TO_MICROMAP_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_COPY_MICROMAP_TO_MEMORY_INFO_EXT
+    , "COPY_MICROMAP_TO_MEMORY_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_COPY_MICROMAP_INFO_EXT
+    , "COPY_MICROMAP_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_MICROMAP_VERSION_INFO_EXT
+    , "MICROMAP_VERSION_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_MICROMAP_BUILD_INFO_EXT
+    , "MICROMAP_BUILD_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_PROPERTIES_EXT
+    , "PHYSICAL_DEVICE_SHADER_TILE_IMAGE_PROPERTIES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_FEATURES_EXT
+    , "PHYSICAL_DEVICE_SHADER_TILE_IMAGE_FEATURES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT
+    , "PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT
+    , "PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT"
+    )
+  ,
+    ( 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_PHYSICAL_DEVICE_SHADER_UNTYPED_POINTERS_FEATURES_KHR
+    , "PHYSICAL_DEVICE_SHADER_UNTYPED_POINTERS_FEATURES_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR
+    , "PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT
+    , "PHYSICAL_DEVICE_PRIMITIVES_GENERATED_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"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT
+    , "PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_INFO_EXT
+    , "MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_SUBPASS_RESOLVE_PERFORMANCE_QUERY_EXT
+    , "SUBPASS_RESOLVE_PERFORMANCE_QUERY_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_FEATURES_EXT
+    , "PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_FEATURES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_FRAME_BOUNDARY_EXT
+    , "FRAME_BOUNDARY_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAME_BOUNDARY_FEATURES_EXT
+    , "PHYSICAL_DEVICE_FRAME_BOUNDARY_FEATURES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT
+    , "PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PIPELINE_PROPERTIES_IDENTIFIER_EXT
+    , "PIPELINE_PROPERTIES_IDENTIFIER_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV
+    , "PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_MEMORY_GET_REMOTE_ADDRESS_INFO_NV
+    , "MEMORY_GET_REMOTE_ADDRESS_INFO_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI
+    , "PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_PROPERTIES_HUAWEI
+    , "PHYSICAL_DEVICE_SUBPASS_SHADING_PROPERTIES_HUAWEI"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI
+    , "PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI"
+    )
+  ,
+    ( STRUCTURE_TYPE_SUBPASS_SHADING_PIPELINE_CREATE_INFO_HUAWEI
+    , "SUBPASS_SHADING_PIPELINE_CREATE_INFO_HUAWEI"
+    )
+  ,
+    ( STRUCTURE_TYPE_BUFFER_COLLECTION_CONSTRAINTS_INFO_FUCHSIA
+    , "BUFFER_COLLECTION_CONSTRAINTS_INFO_FUCHSIA"
+    )
+  ,
+    ( STRUCTURE_TYPE_SYSMEM_COLOR_SPACE_FUCHSIA
+    , "SYSMEM_COLOR_SPACE_FUCHSIA"
+    )
+  ,
+    ( STRUCTURE_TYPE_IMAGE_FORMAT_CONSTRAINTS_INFO_FUCHSIA
+    , "IMAGE_FORMAT_CONSTRAINTS_INFO_FUCHSIA"
+    )
+  ,
+    ( STRUCTURE_TYPE_IMAGE_CONSTRAINTS_INFO_FUCHSIA
+    , "IMAGE_CONSTRAINTS_INFO_FUCHSIA"
+    )
+  ,
+    ( STRUCTURE_TYPE_BUFFER_COLLECTION_BUFFER_CREATE_INFO_FUCHSIA
+    , "BUFFER_COLLECTION_BUFFER_CREATE_INFO_FUCHSIA"
+    )
+  ,
+    ( STRUCTURE_TYPE_BUFFER_CONSTRAINTS_INFO_FUCHSIA
+    , "BUFFER_CONSTRAINTS_INFO_FUCHSIA"
+    )
+  ,
+    ( STRUCTURE_TYPE_BUFFER_COLLECTION_PROPERTIES_FUCHSIA
+    , "BUFFER_COLLECTION_PROPERTIES_FUCHSIA"
+    )
+  ,
+    ( STRUCTURE_TYPE_BUFFER_COLLECTION_IMAGE_CREATE_INFO_FUCHSIA
+    , "BUFFER_COLLECTION_IMAGE_CREATE_INFO_FUCHSIA"
+    )
+  ,
+    ( STRUCTURE_TYPE_IMPORT_MEMORY_BUFFER_COLLECTION_FUCHSIA
+    , "IMPORT_MEMORY_BUFFER_COLLECTION_FUCHSIA"
+    )
+  ,
+    ( STRUCTURE_TYPE_BUFFER_COLLECTION_CREATE_INFO_FUCHSIA
+    , "BUFFER_COLLECTION_CREATE_INFO_FUCHSIA"
+    )
+  ,
+    ( STRUCTURE_TYPE_SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA
+    , "SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA"
+    )
+  ,
+    ( STRUCTURE_TYPE_IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA
+    , "IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA"
+    )
+  ,
+    ( STRUCTURE_TYPE_MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA
+    , "MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA"
+    )
+  ,
+    ( STRUCTURE_TYPE_MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA
+    , "MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA"
+    )
+  ,
+    ( STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA
+    , "IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT
+    , "PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLIP_CONTROL_CREATE_INFO_EXT
+    , "PIPELINE_VIEWPORT_DEPTH_CLIP_CONTROL_CREATE_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT
+    , "PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_DEVICE_ADDRESS_BINDING_CALLBACK_DATA_EXT
+    , "DEVICE_ADDRESS_BINDING_CALLBACK_DATA_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_ADDRESS_BINDING_REPORT_FEATURES_EXT
+    , "PHYSICAL_DEVICE_ADDRESS_BINDING_REPORT_FEATURES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DRM_PROPERTIES_EXT
+    , "PHYSICAL_DEVICE_DRM_PROPERTIES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT
+    , "PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT
+    , "DIRECTFB_SURFACE_CREATE_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT
+    , "PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_DEVICE_FAULT_INFO_EXT
+    , "DEVICE_FAULT_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_DEVICE_FAULT_COUNTS_EXT
+    , "DEVICE_FAULT_COUNTS_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_FEATURES_EXT
+    , "PHYSICAL_DEVICE_FAULT_FEATURES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT
+    , "PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT
+    , "PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT
+    , "IMAGE_COMPRESSION_PROPERTIES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT
+    , "IMAGE_COMPRESSION_CONTROL_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT
+    , "PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR
+    , "PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR"
+    )
+  ,
+    ( 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"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT
+    , "PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT
+    , "PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_EXT
+    , "PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT
+    , "PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MOTION_INFO_NV
+    , "ACCELERATION_STRUCTURE_MOTION_INFO_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV
+    , "PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV
+    , "ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV
+    , "PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV
+    , "PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV
+    , "PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR
+    , "PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_PROPERTIES_KHR
+    , "PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_PROPERTIES_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR
+    , "PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_FEATURES_AMD
+    , "PHYSICAL_DEVICE_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_FEATURES_AMD"
+    )
+  ,
+    ( STRUCTURE_TYPE_GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT
+    , "GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT
+    , "PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT
+    , "PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_2_KHR
+    , "ACCELERATION_STRUCTURE_CREATE_INFO_2_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_MEMORY_MARKER_INFO_AMD
+    , "MEMORY_MARKER_INFO_AMD"
+    )
+  ,
+    ( STRUCTURE_TYPE_BIND_TRANSFORM_FEEDBACK_BUFFER_2_INFO_EXT
+    , "BIND_TRANSFORM_FEEDBACK_BUFFER_2_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_2_EXT
+    , "CONDITIONAL_RENDERING_BEGIN_INFO_2_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_DISPATCH_INDIRECT_2_INFO_KHR
+    , "DISPATCH_INDIRECT_2_INFO_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_DRAW_INDIRECT_COUNT_2_INFO_KHR
+    , "DRAW_INDIRECT_COUNT_2_INFO_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_DRAW_INDIRECT_2_INFO_KHR
+    , "DRAW_INDIRECT_2_INFO_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_BIND_VERTEX_BUFFER_3_INFO_KHR
+    , "BIND_VERTEX_BUFFER_3_INFO_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_BIND_INDEX_BUFFER_3_INFO_KHR
+    , "BIND_INDEX_BUFFER_3_INFO_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_ADDRESS_COMMANDS_FEATURES_KHR
+    , "PHYSICAL_DEVICE_DEVICE_ADDRESS_COMMANDS_FEATURES_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_MEMORY_RANGE_BARRIER_KHR
+    , "MEMORY_RANGE_BARRIER_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_MEMORY_RANGE_BARRIERS_INFO_KHR
+    , "MEMORY_RANGE_BARRIERS_INFO_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_COPY_DEVICE_MEMORY_IMAGE_INFO_KHR
+    , "COPY_DEVICE_MEMORY_IMAGE_INFO_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_DEVICE_MEMORY_IMAGE_COPY_KHR
+    , "DEVICE_MEMORY_IMAGE_COPY_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_COPY_DEVICE_MEMORY_INFO_KHR
+    , "COPY_DEVICE_MEMORY_INFO_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_DEVICE_MEMORY_COPY_KHR
+    , "DEVICE_MEMORY_COPY_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT
+    , "ACCELERATION_STRUCTURE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_PUSH_DESCRIPTOR_BUFFER_HANDLE_EXT
+    , "DESCRIPTOR_BUFFER_BINDING_PUSH_DESCRIPTOR_BUFFER_HANDLE_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_INFO_EXT
+    , "DESCRIPTOR_BUFFER_BINDING_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_OPAQUE_CAPTURE_DESCRIPTOR_DATA_CREATE_INFO_EXT
+    , "OPAQUE_CAPTURE_DESCRIPTOR_DATA_CREATE_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_SAMPLER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT
+    , "SAMPLER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_IMAGE_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_EXT
+    , "IMAGE_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_IMAGE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT
+    , "IMAGE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_BUFFER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT
+    , "BUFFER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_DESCRIPTOR_GET_INFO_EXT
+    , "DESCRIPTOR_GET_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_DESCRIPTOR_ADDRESS_INFO_EXT
+    , "DESCRIPTOR_ADDRESS_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT
+    , "PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT
+    , "PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT
+    , "PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_IMPORT_METAL_SHARED_EVENT_INFO_EXT
+    , "IMPORT_METAL_SHARED_EVENT_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_EXPORT_METAL_SHARED_EVENT_INFO_EXT
+    , "EXPORT_METAL_SHARED_EVENT_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_IMPORT_METAL_IO_SURFACE_INFO_EXT
+    , "IMPORT_METAL_IO_SURFACE_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_EXPORT_METAL_IO_SURFACE_INFO_EXT
+    , "EXPORT_METAL_IO_SURFACE_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_IMPORT_METAL_TEXTURE_INFO_EXT
+    , "IMPORT_METAL_TEXTURE_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_EXPORT_METAL_TEXTURE_INFO_EXT
+    , "EXPORT_METAL_TEXTURE_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_IMPORT_METAL_BUFFER_INFO_EXT
+    , "IMPORT_METAL_BUFFER_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_EXPORT_METAL_BUFFER_INFO_EXT
+    , "EXPORT_METAL_BUFFER_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_EXPORT_METAL_COMMAND_QUEUE_INFO_EXT
+    , "EXPORT_METAL_COMMAND_QUEUE_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_EXPORT_METAL_DEVICE_INFO_EXT
+    , "EXPORT_METAL_DEVICE_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_EXPORT_METAL_OBJECTS_INFO_EXT
+    , "EXPORT_METAL_OBJECTS_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_EXPORT_METAL_OBJECT_CREATE_INFO_EXT
+    , "EXPORT_METAL_OBJECT_CREATE_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_QUERY_LOW_LATENCY_SUPPORT_NV
+    , "QUERY_LOW_LATENCY_SUPPORT_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_DISPATCH_TILE_INFO_QCOM
+    , "DISPATCH_TILE_INFO_QCOM"
+    )
+  ,
+    ( STRUCTURE_TYPE_PER_TILE_END_INFO_QCOM
+    , "PER_TILE_END_INFO_QCOM"
+    )
+  ,
+    ( STRUCTURE_TYPE_PER_TILE_BEGIN_INFO_QCOM
+    , "PER_TILE_BEGIN_INFO_QCOM"
+    )
+  ,
+    ( STRUCTURE_TYPE_RENDER_PASS_TILE_SHADING_CREATE_INFO_QCOM
+    , "RENDER_PASS_TILE_SHADING_CREATE_INFO_QCOM"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_SHADING_PROPERTIES_QCOM
+    , "PHYSICAL_DEVICE_TILE_SHADING_PROPERTIES_QCOM"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_SHADING_FEATURES_QCOM
+    , "PHYSICAL_DEVICE_TILE_SHADING_FEATURES_QCOM"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_PROPERTIES_NV
+    , "PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_PROPERTIES_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_FEATURES_NV
+    , "PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_FEATURES_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_CUDA_LAUNCH_INFO_NV
+    , "CUDA_LAUNCH_INFO_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_CUDA_FUNCTION_CREATE_INFO_NV
+    , "CUDA_FUNCTION_CREATE_INFO_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_CUDA_MODULE_CREATE_INFO_NV
+    , "CUDA_MODULE_CREATE_INFO_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SPLIT_BARRIER_PROPERTIES_EXT
+    , "PHYSICAL_DEVICE_SHADER_SPLIT_BARRIER_PROPERTIES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SPLIT_BARRIER_FEATURES_EXT
+    , "PHYSICAL_DEVICE_SHADER_SPLIT_BARRIER_FEATURES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MULTIPLE_WAIT_QUEUES_PROPERTIES_QCOM
+    , "PHYSICAL_DEVICE_SHADER_MULTIPLE_WAIT_QUEUES_PROPERTIES_QCOM"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MULTIPLE_WAIT_QUEUES_FEATURES_QCOM
+    , "PHYSICAL_DEVICE_SHADER_MULTIPLE_WAIT_QUEUES_FEATURES_QCOM"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_3_FEATURES_QCOM
+    , "PHYSICAL_DEVICE_IMAGE_PROCESSING_3_FEATURES_QCOM"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_QUEUE_PERF_HINT_PROPERTIES_QCOM
+    , "PHYSICAL_DEVICE_QUEUE_PERF_HINT_PROPERTIES_QCOM"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_QUEUE_PERF_HINT_FEATURES_QCOM
+    , "PHYSICAL_DEVICE_QUEUE_PERF_HINT_FEATURES_QCOM"
+    )
+  ,
+    ( STRUCTURE_TYPE_PERF_HINT_INFO_QCOM
+    , "PERF_HINT_INFO_QCOM"
+    )
+  ,
+    ( 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_PRESENT_ID_FEATURES_KHR
+    , "PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR"
+    )
+  , (STRUCTURE_TYPE_PRESENT_ID_KHR, "PRESENT_ID_KHR")
+  ,
+    ( STRUCTURE_TYPE_SWAPCHAIN_PRESENT_BARRIER_CREATE_INFO_NV
+    , "SWAPCHAIN_PRESENT_BARRIER_CREATE_INFO_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_BARRIER_NV
+    , "SURFACE_CAPABILITIES_PRESENT_BARRIER_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_BARRIER_FEATURES_NV
+    , "PHYSICAL_DEVICE_PRESENT_BARRIER_FEATURES_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR
+    , "PIPELINE_LIBRARY_CREATE_INFO_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_3D_FEATURES_EXT
+    , "PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_3D_FEATURES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT
+    , "PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT
+    , "PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT
+    , "SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT
+    , "DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT
+    , "DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT
+    , "PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_DEPTH_BIAS_REPRESENTATION_INFO_EXT
+    , "DEPTH_BIAS_REPRESENTATION_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_DEPTH_BIAS_INFO_EXT
+    , "DEPTH_BIAS_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_BIAS_CONTROL_FEATURES_EXT
+    , "PHYSICAL_DEVICE_DEPTH_BIAS_CONTROL_FEATURES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM
+    , "RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM"
+    )
+  ,
+    ( 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_FEATURES_EXT
+    , "PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV
+    , "COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV
+    , "PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV
+    , "PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV
+    , "GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV
+    , "GENERATED_COMMANDS_INFO_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV
+    , "INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV
+    , "INDIRECT_COMMANDS_LAYOUT_TOKEN_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV
+    , "GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV
+    , "GRAPHICS_SHADER_GROUP_CREATE_INFO_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV
+    , "PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT
+    , "PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_MEMORY_MAP_PLACED_INFO_EXT
+    , "MEMORY_MAP_PLACED_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_MAP_MEMORY_PLACED_PROPERTIES_EXT
+    , "PHYSICAL_DEVICE_MAP_MEMORY_PLACED_PROPERTIES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_MAP_MEMORY_PLACED_FEATURES_EXT
+    , "PHYSICAL_DEVICE_MAP_MEMORY_PLACED_FEATURES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR
+    , "PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR
+    , "PIPELINE_EXECUTABLE_STATISTIC_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR
+    , "PIPELINE_EXECUTABLE_INFO_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR
+    , "PIPELINE_EXECUTABLE_PROPERTIES_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PIPELINE_INFO_KHR
+    , "PIPELINE_INFO_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR
+    , "PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT
+    , "PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT
+    , "PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT
+    , "HEADLESS_SURFACE_CREATE_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT
+    , "SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT
+    , "SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT
+    , "SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT
+    , "PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT
+    , "PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT
+    , "PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT
+    , "PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT
+    , "PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV
+    , "FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV
+    , "PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV
+    , "PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV
+    , "PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV
+    , "COOPERATIVE_MATRIX_PROPERTIES_NV"
+    )
+  ,
+    ( 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_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"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV
+    , "PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR
+    , "SURFACE_PROTECTED_CAPABILITIES_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT
+    , "MEMORY_PRIORITY_ALLOCATE_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT
+    , "PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT
+    , "PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_QUAD_CONTROL_FEATURES_KHR
+    , "PHYSICAL_DEVICE_SHADER_QUAD_CONTROL_FEATURES_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT
+    , "PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ABORT_PROPERTIES_KHR
+    , "PHYSICAL_DEVICE_SHADER_ABORT_PROPERTIES_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_DEVICE_FAULT_SHADER_ABORT_MESSAGE_INFO_KHR
+    , "DEVICE_FAULT_SHADER_ABORT_MESSAGE_INFO_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ABORT_FEATURES_KHR
+    , "PHYSICAL_DEVICE_SHADER_ABORT_FEATURES_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CONSTANT_DATA_FEATURES_KHR
+    , "PHYSICAL_DEVICE_SHADER_CONSTANT_DATA_FEATURES_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD
+    , "PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD
+    , "PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD"
+    )
+  ,
+    ( STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR
+    , "RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR
+    , "PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR
+    , "PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR
+    , "PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR
+    , "PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR
+    , "FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT
+    , "RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT
+    , "RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT
+    , "PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT"
+    )
+  ,
+    ( 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_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"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT
+    , "PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL
+    , "PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL"
+    )
+  ,
+    ( STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL
+    , "PERFORMANCE_OVERRIDE_INFO_INTEL"
+    )
+  ,
+    ( STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL
+    , "PERFORMANCE_STREAM_MARKER_INFO_INTEL"
+    )
+  ,
+    ( STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL
+    , "PERFORMANCE_MARKER_INFO_INTEL"
+    )
+  ,
+    ( STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL
+    , "INITIALIZE_PERFORMANCE_API_INFO_INTEL"
+    )
+  ,
+    ( STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL
+    , "QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL
+    , "PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL"
+    )
+  ,
+    ( STRUCTURE_TYPE_SWAPCHAIN_CALIBRATED_TIMESTAMP_INFO_EXT
+    , "SWAPCHAIN_CALIBRATED_TIMESTAMP_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PRESENT_TIMING_SURFACE_CAPABILITIES_EXT
+    , "PRESENT_TIMING_SURFACE_CAPABILITIES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PAST_PRESENTATION_TIMING_EXT
+    , "PAST_PRESENTATION_TIMING_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PAST_PRESENTATION_TIMING_PROPERTIES_EXT
+    , "PAST_PRESENTATION_TIMING_PROPERTIES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PAST_PRESENTATION_TIMING_INFO_EXT
+    , "PAST_PRESENTATION_TIMING_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PRESENT_TIMING_INFO_EXT
+    , "PRESENT_TIMING_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PRESENT_TIMINGS_INFO_EXT
+    , "PRESENT_TIMINGS_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_SWAPCHAIN_TIME_DOMAIN_PROPERTIES_EXT
+    , "SWAPCHAIN_TIME_DOMAIN_PROPERTIES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_SWAPCHAIN_TIMING_PROPERTIES_EXT
+    , "SWAPCHAIN_TIMING_PROPERTIES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_TIMING_FEATURES_EXT
+    , "PHYSICAL_DEVICE_PRESENT_TIMING_FEATURES_EXT"
+    )
+  ,
+    ( 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_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV
+    , "QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_CHECKPOINT_DATA_NV
+    , "CHECKPOINT_DATA_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV
+    , "PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV
+    , "PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV
+    , "PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV
+    , "PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV
+    , "PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP
+    , "PRESENT_FRAME_TOKEN_GGP"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT
+    , "PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD
+    , "DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD
+    , "PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD"
+    )
+  ,
+    ( STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD
+    , "PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR
+    , "PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR"
+    )
+  ,
+    ( 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_PHYSICAL_DEVICE_ELAPSED_TIMER_QUERY_FEATURES_QCOM
+    , "PHYSICAL_DEVICE_ELAPSED_TIMER_QUERY_FEATURES_QCOM"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_CONVERSION_FEATURES_QCOM
+    , "PHYSICAL_DEVICE_COOPERATIVE_MATRIX_CONVERSION_FEATURES_QCOM"
+    )
+  ,
+    ( STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT
+    , "FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT
+    , "PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV
+    , "PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV
+    , "PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV
+    , "ACCELERATION_STRUCTURE_INFO_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV
+    , "RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV
+    , "PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV
+    , "ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV
+    , "WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV
+    , "BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV"
+    )
+  , (STRUCTURE_TYPE_GEOMETRY_AABB_NV, "GEOMETRY_AABB_NV")
+  ,
+    ( STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV
+    , "GEOMETRY_TRIANGLES_NV"
+    )
+  , (STRUCTURE_TYPE_GEOMETRY_NV, "GEOMETRY_NV")
+  ,
+    ( STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV
+    , "ACCELERATION_STRUCTURE_CREATE_INFO_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV
+    , "RAY_TRACING_PIPELINE_CREATE_INFO_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV
+    , "PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV
+    , "PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV
+    , "PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV
+    , "PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR
+    , "PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR
+    , "PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT
+    , "SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT
+    , "VALIDATION_CACHE_CREATE_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT
+    , "DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT
+    , "IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT
+    , "IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT
+    , "IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT
+    , "PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT
+    , "DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV
+    , "PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV
+    , "PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV
+    , "PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR
+    , "PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR
+    , "RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR
+    , "RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR
+    , "RAY_TRACING_PIPELINE_CREATE_INFO_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR
+    , "PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR
+    , "PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR
+    , "ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR
+    , "ACCELERATION_STRUCTURE_CREATE_INFO_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR
+    , "PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR
+    , "PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR
+    , "COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR
+    , "COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR
+    , "COPY_ACCELERATION_STRUCTURE_INFO_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR
+    , "ACCELERATION_STRUCTURE_VERSION_INFO_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR
+    , "ACCELERATION_STRUCTURE_GEOMETRY_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR
+    , "ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR
+    , "ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR
+    , "ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR
+    , "ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR
+    , "ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR
+    , "WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV
+    , "PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT
+    , "PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT
+    , "PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT
+    , "PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT
+    , "MULTISAMPLE_PROPERTIES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT
+    , "PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT"
+    )
+  ,
+    ( 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_PHYSICAL_DEVICE_SHADER_BFLOAT16_FEATURES_KHR
+    , "PHYSICAL_DEVICE_SHADER_BFLOAT16_FEATURES_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD
+    , "ATTACHMENT_SAMPLE_COUNT_INFO_AMD"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_HEAP_TENSOR_PROPERTIES_ARM
+    , "PHYSICAL_DEVICE_DESCRIPTOR_HEAP_TENSOR_PROPERTIES_ARM"
+    )
+  ,
+    ( STRUCTURE_TYPE_SUBSAMPLED_IMAGE_FORMAT_PROPERTIES_EXT
+    , "SUBSAMPLED_IMAGE_FORMAT_PROPERTIES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_PUSH_DATA_TOKEN_NV
+    , "INDIRECT_COMMANDS_LAYOUT_PUSH_DATA_TOKEN_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_INDEX_CREATE_INFO_EXT
+    , "SAMPLER_CUSTOM_BORDER_COLOR_INDEX_CREATE_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_DESCRIPTOR_HEAP_INFO_EXT
+    , "COMMAND_BUFFER_INHERITANCE_DESCRIPTOR_HEAP_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_HEAP_FEATURES_EXT
+    , "PHYSICAL_DEVICE_DESCRIPTOR_HEAP_FEATURES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_HEAP_PROPERTIES_EXT
+    , "PHYSICAL_DEVICE_DESCRIPTOR_HEAP_PROPERTIES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_OPAQUE_CAPTURE_DATA_CREATE_INFO_EXT
+    , "OPAQUE_CAPTURE_DATA_CREATE_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_SHADER_DESCRIPTOR_SET_AND_BINDING_MAPPING_INFO_EXT
+    , "SHADER_DESCRIPTOR_SET_AND_BINDING_MAPPING_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_DESCRIPTOR_SET_AND_BINDING_MAPPING_EXT
+    , "DESCRIPTOR_SET_AND_BINDING_MAPPING_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PUSH_DATA_INFO_EXT
+    , "PUSH_DATA_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_BIND_HEAP_INFO_EXT
+    , "BIND_HEAP_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_RESOURCE_DESCRIPTOR_INFO_EXT
+    , "RESOURCE_DESCRIPTOR_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_IMAGE_DESCRIPTOR_INFO_EXT
+    , "IMAGE_DESCRIPTOR_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_TEXEL_BUFFER_DESCRIPTOR_INFO_EXT
+    , "TEXEL_BUFFER_DESCRIPTOR_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_NODE_CREATE_INFO_AMDX
+    , "PIPELINE_SHADER_STAGE_NODE_CREATE_INFO_AMDX"
+    )
+  ,
+    ( STRUCTURE_TYPE_EXECUTION_GRAPH_PIPELINE_CREATE_INFO_AMDX
+    , "EXECUTION_GRAPH_PIPELINE_CREATE_INFO_AMDX"
+    )
+  ,
+    ( STRUCTURE_TYPE_EXECUTION_GRAPH_PIPELINE_SCRATCH_SIZE_AMDX
+    , "EXECUTION_GRAPH_PIPELINE_SCRATCH_SIZE_AMDX"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ENQUEUE_PROPERTIES_AMDX
+    , "PHYSICAL_DEVICE_SHADER_ENQUEUE_PROPERTIES_AMDX"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ENQUEUE_FEATURES_AMDX
+    , "PHYSICAL_DEVICE_SHADER_ENQUEUE_FEATURES_AMDX"
+    )
+  ,
+    ( STRUCTURE_TYPE_GPA_DEVICE_GET_CLOCK_INFO_AMD
+    , "GPA_DEVICE_GET_CLOCK_INFO_AMD"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_GPA_PROPERTIES_2_AMD
+    , "PHYSICAL_DEVICE_GPA_PROPERTIES_2_AMD"
+    )
+  ,
+    ( STRUCTURE_TYPE_GPA_DEVICE_CLOCK_MODE_INFO_AMD
+    , "GPA_DEVICE_CLOCK_MODE_INFO_AMD"
+    )
+  ,
+    ( STRUCTURE_TYPE_GPA_SESSION_CREATE_INFO_AMD
+    , "GPA_SESSION_CREATE_INFO_AMD"
+    )
+  ,
+    ( STRUCTURE_TYPE_GPA_SAMPLE_BEGIN_INFO_AMD
+    , "GPA_SAMPLE_BEGIN_INFO_AMD"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_GPA_PROPERTIES_AMD
+    , "PHYSICAL_DEVICE_GPA_PROPERTIES_AMD"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_GPA_FEATURES_AMD
+    , "PHYSICAL_DEVICE_GPA_FEATURES_AMD"
+    )
+  ,
+    ( STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID
+    , "ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID"
+    )
+  ,
+    ( STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID
+    , "EXTERNAL_FORMAT_ANDROID"
+    )
+  ,
+    ( STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID
+    , "MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID"
+    )
+  ,
+    ( STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID
+    , "IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID"
+    )
+  ,
+    ( STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID
+    , "ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID"
+    )
+  ,
+    ( STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID
+    , "ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID"
+    )
+  ,
+    ( STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID
+    , "ANDROID_HARDWARE_BUFFER_USAGE_ANDROID"
+    )
+  ,
+    ( STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT
+    , "DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT
+    , "DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT
+    , "DEBUG_UTILS_LABEL_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT
+    , "DEBUG_UTILS_OBJECT_TAG_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT
+    , "DEBUG_UTILS_OBJECT_NAME_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK
+    , "MACOS_SURFACE_CREATE_INFO_MVK"
+    )
+  ,
+    ( STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK
+    , "IOS_SURFACE_CREATE_INFO_MVK"
+    )
+  ,
+    ( STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR
+    , "DISPLAY_PLANE_CAPABILITIES_2_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR
+    , "DISPLAY_PLANE_INFO_2_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR
+    , "DISPLAY_MODE_PROPERTIES_2_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR
+    , "DISPLAY_PLANE_PROPERTIES_2_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR
+    , "DISPLAY_PROPERTIES_2_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR
+    , "SURFACE_FORMAT_2_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR
+    , "SURFACE_CAPABILITIES_2_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR
+    , "PHYSICAL_DEVICE_SURFACE_INFO_2_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PERFORMANCE_QUERY_RESERVATION_INFO_KHR
+    , "PERFORMANCE_QUERY_RESERVATION_INFO_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR
+    , "PERFORMANCE_COUNTER_DESCRIPTION_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR
+    , "PERFORMANCE_COUNTER_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR
+    , "ACQUIRE_PROFILING_LOCK_INFO_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR
+    , "PERFORMANCE_QUERY_SUBMIT_INFO_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR
+    , "QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR
+    , "PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR
+    , "PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR
+    , "FENCE_GET_FD_INFO_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR
+    , "IMPORT_FENCE_FD_INFO_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR
+    , "FENCE_GET_WIN32_HANDLE_INFO_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR
+    , "EXPORT_FENCE_WIN32_HANDLE_INFO_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR
+    , "IMPORT_FENCE_WIN32_HANDLE_INFO_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR
+    , "SHARED_PRESENT_SURFACE_CAPABILITIES_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_RELAXED_LINE_RASTERIZATION_FEATURES_IMG
+    , "PHYSICAL_DEVICE_RELAXED_LINE_RASTERIZATION_FEATURES_IMG"
+    )
+  , (STRUCTURE_TYPE_HDR_METADATA_EXT, "HDR_METADATA_EXT")
+  ,
+    ( STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT
+    , "PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT
+    , "PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT
+    , "PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT
+    , "PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT
+    , "PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT
+    , "PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV
+    , "PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX
+    , "MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX
+    , "PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX"
+    )
+  ,
+    ( STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE
+    , "PRESENT_TIMES_INFO_GOOGLE"
+    )
+  ,
+    ( STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT
+    , "SWAPCHAIN_COUNTER_CREATE_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT
+    , "DISPLAY_EVENT_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT
+    , "DEVICE_EVENT_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT
+    , "DISPLAY_POWER_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT
+    , "SURFACE_CAPABILITIES_2_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV
+    , "PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_PRESENT_REGIONS_KHR
+    , "PRESENT_REGIONS_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT
+    , "CONDITIONAL_RENDERING_BEGIN_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT
+    , "PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT
+    , "COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR
+    , "SEMAPHORE_GET_FD_INFO_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR
+    , "IMPORT_SEMAPHORE_FD_INFO_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR
+    , "SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR
+    , "D3D12_FENCE_SUBMIT_INFO_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR
+    , "EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR
+    , "IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR
+    , "WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR
+    , "MEMORY_GET_FD_INFO_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR
+    , "MEMORY_FD_PROPERTIES_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR
+    , "IMPORT_MEMORY_FD_INFO_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR
+    , "MEMORY_GET_WIN32_HANDLE_INFO_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR
+    , "MEMORY_WIN32_HANDLE_PROPERTIES_KHR"
+    )
+  ,
+    ( STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR
+    , "EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR"
+    )
+  ,
+    ( 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_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"
+    )
+  ,
+    ( STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP
+    , "STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP"
+    )
+  ,
+    ( 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_MODULE_TEXTURING_MODE_CREATE_INFO_NVX
+    , "CU_MODULE_TEXTURING_MODE_CREATE_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"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT
+    , "PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT
+    , "PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV
+    , "DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV
+    , "DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV
+    , "DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT
+    , "DEBUG_MARKER_MARKER_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT
+    , "DEBUG_MARKER_OBJECT_TAG_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT
+    , "DEBUG_MARKER_OBJECT_NAME_INFO_EXT"
+    )
+  ,
+    ( 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_PIPELINE_OFFLINE_CREATE_INFO
+    , "PIPELINE_OFFLINE_CREATE_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_FAULT_CALLBACK_INFO
+    , "FAULT_CALLBACK_INFO"
+    )
+  , (STRUCTURE_TYPE_FAULT_DATA, "FAULT_DATA")
+  ,
+    ( STRUCTURE_TYPE_PIPELINE_POOL_SIZE
+    , "PIPELINE_POOL_SIZE"
+    )
+  ,
+    ( STRUCTURE_TYPE_COMMAND_POOL_MEMORY_CONSUMPTION
+    , "COMMAND_POOL_MEMORY_CONSUMPTION"
+    )
+  ,
+    ( STRUCTURE_TYPE_COMMAND_POOL_MEMORY_RESERVATION_CREATE_INFO
+    , "COMMAND_POOL_MEMORY_RESERVATION_CREATE_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_DEVICE_OBJECT_RESERVATION_CREATE_INFO
+    , "DEVICE_OBJECT_RESERVATION_CREATE_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_SC_1_0_PROPERTIES
+    , "PHYSICAL_DEVICE_VULKAN_SC_1_0_PROPERTIES"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_SC_1_0_FEATURES
+    , "PHYSICAL_DEVICE_VULKAN_SC_1_0_FEATURES"
+    )
+  ,
+    ( STRUCTURE_TYPE_RENDERING_INPUT_ATTACHMENT_INDEX_INFO
+    , "RENDERING_INPUT_ATTACHMENT_INDEX_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_RENDERING_ATTACHMENT_LOCATION_INFO
+    , "RENDERING_ATTACHMENT_LOCATION_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES
+    , "PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES"
+    )
+  ,
+    ( STRUCTURE_TYPE_RENDERING_AREA_INFO
+    , "RENDERING_AREA_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES
+    , "PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES"
+    )
+  ,
+    ( STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO
+    , "PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES
+    , "PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES
+    , "PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES"
+    )
+  ,
+    ( STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO
+    , "PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES
+    , "PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES
+    , "PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES
+    , "PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES"
+    )
+  ,
+    ( STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO
+    , "PIPELINE_ROBUSTNESS_CREATE_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES
+    , "PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES"
+    )
+  ,
+    ( STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO
+    , "PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_INFO
+    , "PUSH_DESCRIPTOR_SET_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_PUSH_CONSTANTS_INFO
+    , "PUSH_CONSTANTS_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_BIND_DESCRIPTOR_SETS_INFO
+    , "BIND_DESCRIPTOR_SETS_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES
+    , "PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES"
+    )
+  ,
+    ( STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO
+    , "PIPELINE_CREATE_FLAGS_2_CREATE_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES
+    , "PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES
+    , "PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES
+    , "PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES"
+    )
+  ,
+    ( STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY
+    , "HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY"
+    )
+  ,
+    ( STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE
+    , "SUBRESOURCE_HOST_MEMCPY_SIZE"
+    )
+  ,
+    ( STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO
+    , "COPY_IMAGE_TO_IMAGE_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO
+    , "HOST_IMAGE_LAYOUT_TRANSITION_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO
+    , "COPY_MEMORY_TO_IMAGE_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO
+    , "COPY_IMAGE_TO_MEMORY_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY
+    , "IMAGE_TO_MEMORY_COPY"
+    )
+  ,
+    ( STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY
+    , "MEMORY_TO_IMAGE_COPY"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES
+    , "PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES
+    , "PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES"
+    )
+  ,
+    ( STRUCTURE_TYPE_BIND_MEMORY_STATUS
+    , "BIND_MEMORY_STATUS"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES
+    , "PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES
+    , "PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES"
+    )
+  ,
+    ( STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO
+    , "BUFFER_USAGE_FLAGS_2_CREATE_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2
+    , "IMAGE_SUBRESOURCE_2"
+    )
+  ,
+    ( STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2
+    , "SUBRESOURCE_LAYOUT_2"
+    )
+  ,
+    ( STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO
+    , "DEVICE_IMAGE_SUBRESOURCE_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES
+    , "PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES
+    , "PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES"
+    )
+  ,
+    ( STRUCTURE_TYPE_MEMORY_UNMAP_INFO
+    , "MEMORY_UNMAP_INFO"
+    )
+  , (STRUCTURE_TYPE_MEMORY_MAP_INFO, "MEMORY_MAP_INFO")
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES
+    , "PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES"
+    )
+  ,
+    ( STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES
+    , "QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES
+    , "PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES"
+    )
+  ,
+    ( STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO
+    , "DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_PROPERTIES
+    , "PHYSICAL_DEVICE_VULKAN_1_4_PROPERTIES"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_FEATURES
+    , "PHYSICAL_DEVICE_VULKAN_1_4_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_IMAGE_RESOLVE_2, "IMAGE_RESOLVE_2")
+  , (STRUCTURE_TYPE_IMAGE_BLIT_2, "IMAGE_BLIT_2")
+  ,
+    ( STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2
+    , "RESOLVE_IMAGE_INFO_2"
+    )
+  ,
+    ( STRUCTURE_TYPE_BLIT_IMAGE_INFO_2
+    , "BLIT_IMAGE_INFO_2"
+    )
+  ,
+    ( 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_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_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_PIPELINE_CREATION_CACHE_CONTROL_FEATURES
+    , "PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES
+    , "PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES"
+    )
+  ,
+    ( 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_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_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES
+    , "PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES"
+    )
+  ,
+    ( STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2
+    , "BUFFER_IMAGE_COPY_2"
+    )
+  , (STRUCTURE_TYPE_IMAGE_COPY_2, "IMAGE_COPY_2")
+  , (STRUCTURE_TYPE_BUFFER_COPY_2, "BUFFER_COPY_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_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_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_TOOL_PROPERTIES
+    , "PHYSICAL_DEVICE_TOOL_PROPERTIES"
+    )
+  ,
+    ( 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_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT
+    , "ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT"
+    )
+  ,
+    ( STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT
+    , "ATTACHMENT_REFERENCE_STENCIL_LAYOUT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES
+    , "PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES"
+    )
+  ,
+    ( STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO
+    , "RENDER_PASS_ATTACHMENT_BEGIN_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO
+    , "FRAMEBUFFER_ATTACHMENT_IMAGE_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO
+    , "FRAMEBUFFER_ATTACHMENTS_CREATE_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES
+    , "PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES"
+    )
+  ,
+    ( STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO
+    , "IMAGE_STENCIL_USAGE_CREATE_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE
+    , "SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES
+    , "PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES"
+    )
+  , (STRUCTURE_TYPE_SUBPASS_END_INFO, "SUBPASS_END_INFO")
+  ,
+    ( STRUCTURE_TYPE_SUBPASS_BEGIN_INFO
+    , "SUBPASS_BEGIN_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2
+    , "RENDER_PASS_CREATE_INFO_2"
+    )
+  ,
+    ( STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2
+    , "SUBPASS_DEPENDENCY_2"
+    )
+  ,
+    ( STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2
+    , "SUBPASS_DESCRIPTION_2"
+    )
+  ,
+    ( STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2
+    , "ATTACHMENT_REFERENCE_2"
+    )
+  ,
+    ( STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2
+    , "ATTACHMENT_DESCRIPTION_2"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES
+    , "PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES
+    , "PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES"
+    )
+  ,
+    ( STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO
+    , "SAMPLER_REDUCTION_MODE_CREATE_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES
+    , "PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES
+    , "PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES"
+    )
+  ,
+    ( STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT
+    , "DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT"
+    )
+  ,
+    ( STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO
+    , "DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES
+    , "PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES
+    , "PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES"
+    )
+  ,
+    ( STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO
+    , "DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES
+    , "PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES
+    , "PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES
+    , "PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES
+    , "PHYSICAL_DEVICE_8BIT_STORAGE_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"
+    )
+  ,
+    ( STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO
+    , "BUFFER_DEVICE_ADDRESS_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES
+    , "PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES"
+    )
+  ,
+    ( STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO
+    , "SEMAPHORE_SIGNAL_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO
+    , "SEMAPHORE_WAIT_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO
+    , "TIMELINE_SEMAPHORE_SUBMIT_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO
+    , "SEMAPHORE_TYPE_CREATE_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES
+    , "PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES
+    , "PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES
+    , "PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES
+    , "PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES"
+    )
+  ,
+    ( STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO
+    , "IMAGE_FORMAT_LIST_CREATE_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES
+    , "PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES
+    , "PHYSICAL_DEVICE_VULKAN_1_2_FEATURES"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES
+    , "PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES
+    , "PHYSICAL_DEVICE_VULKAN_1_1_FEATURES"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES
+    , "PHYSICAL_DEVICE_DRIVER_PROPERTIES"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES
+    , "PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES
+    , "PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES
+    , "PHYSICAL_DEVICE_MULTIVIEW_FEATURES"
+    )
+  ,
+    ( STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO
+    , "RENDER_PASS_MULTIVIEW_CREATE_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO
+    , "PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO
+    , "RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES
+    , "PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES"
+    )
+  ,
+    ( STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO
+    , "DEVICE_GROUP_RENDER_PASS_BEGIN_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES
+    , "SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES
+    , "PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES"
+    )
+  ,
+    ( STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO
+    , "IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO
+    , "BIND_IMAGE_PLANE_MEMORY_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO
+    , "SAMPLER_YCBCR_CONVERSION_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO
+    , "SAMPLER_YCBCR_CONVERSION_CREATE_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT
+    , "DESCRIPTOR_SET_LAYOUT_SUPPORT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES
+    , "PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES"
+    )
+  ,
+    ( STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO
+    , "DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES
+    , "PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES
+    , "PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES
+    , "PHYSICAL_DEVICE_SUBGROUP_PROPERTIES"
+    )
+  ,
+    ( STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES
+    , "EXTERNAL_SEMAPHORE_PROPERTIES"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO
+    , "PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO
+    , "EXPORT_SEMAPHORE_CREATE_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO
+    , "EXPORT_FENCE_CREATE_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES
+    , "EXTERNAL_FENCE_PROPERTIES"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO
+    , "PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO
+    , "EXPORT_MEMORY_ALLOCATE_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO
+    , "EXTERNAL_MEMORY_IMAGE_CREATE_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO
+    , "EXTERNAL_MEMORY_BUFFER_CREATE_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES
+    , "PHYSICAL_DEVICE_ID_PROPERTIES"
+    )
+  ,
+    ( STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES
+    , "EXTERNAL_BUFFER_PROPERTIES"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO
+    , "PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES
+    , "EXTERNAL_IMAGE_FORMAT_PROPERTIES"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO
+    , "PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2
+    , "DEVICE_QUEUE_INFO_2"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES
+    , "PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES
+    , "PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES"
+    )
+  ,
+    ( STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO
+    , "PROTECTED_SUBMIT_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO
+    , "IMAGE_VIEW_USAGE_CREATE_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2
+    , "PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2"
+    )
+  ,
+    ( STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2
+    , "SPARSE_IMAGE_FORMAT_PROPERTIES_2"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2
+    , "PHYSICAL_DEVICE_MEMORY_PROPERTIES_2"
+    )
+  ,
+    ( STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2
+    , "QUEUE_FAMILY_PROPERTIES_2"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2
+    , "PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2"
+    )
+  ,
+    ( STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2
+    , "IMAGE_FORMAT_PROPERTIES_2"
+    )
+  ,
+    ( STRUCTURE_TYPE_FORMAT_PROPERTIES_2
+    , "FORMAT_PROPERTIES_2"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2
+    , "PHYSICAL_DEVICE_PROPERTIES_2"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2
+    , "PHYSICAL_DEVICE_FEATURES_2"
+    )
+  ,
+    ( STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2
+    , "SPARSE_IMAGE_MEMORY_REQUIREMENTS_2"
+    )
+  ,
+    ( STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2
+    , "MEMORY_REQUIREMENTS_2"
+    )
+  ,
+    ( STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2
+    , "IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2"
+    )
+  ,
+    ( STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2
+    , "IMAGE_MEMORY_REQUIREMENTS_INFO_2"
+    )
+  ,
+    ( STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2
+    , "BUFFER_MEMORY_REQUIREMENTS_INFO_2"
+    )
+  ,
+    ( STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO
+    , "DEVICE_GROUP_DEVICE_CREATE_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES
+    , "PHYSICAL_DEVICE_GROUP_PROPERTIES"
+    )
+  ,
+    ( STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO
+    , "BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO
+    , "BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO
+    , "DEVICE_GROUP_BIND_SPARSE_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO
+    , "DEVICE_GROUP_SUBMIT_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO
+    , "DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO
+    , "MEMORY_ALLOCATE_FLAGS_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO
+    , "MEMORY_DEDICATED_ALLOCATE_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS
+    , "MEMORY_DEDICATED_REQUIREMENTS"
+    )
+  ,
+    ( STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO
+    , "BIND_IMAGE_MEMORY_INFO"
+    )
+  ,
+    ( STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO
+    , "BIND_BUFFER_MEMORY_INFO"
     )
   ]
 
diff --git a/src/Vulkan/Core10/Enums/SubpassContents.hs b/src/Vulkan/Core10/Enums/SubpassContents.hs
--- a/src/Vulkan/Core10/Enums/SubpassContents.hs
+++ b/src/Vulkan/Core10/Enums/SubpassContents.hs
@@ -18,6 +18,26 @@
 -- | VkSubpassContents - Specify how commands in the first subpass of a
 -- render pass are provided
 --
+-- = Description
+--
+-- -   'SUBPASS_CONTENTS_INLINE' specifies that the contents of the subpass
+--     will be recorded inline in the primary command buffer, and secondary
+--     command buffers /must/ not be executed within the subpass.
+--
+-- -   'SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS' specifies that the
+--     contents are recorded in secondary command buffers that will be
+--     called from the primary command buffer, and
+--     'Vulkan.Core10.CommandBufferBuilding.cmdExecuteCommands' is the only
+--     valid command in the command buffer until
+--     'Vulkan.Core10.CommandBufferBuilding.cmdNextSubpass' or
+--     'Vulkan.Core10.CommandBufferBuilding.cmdEndRenderPass'.
+--
+-- -   'SUBPASS_CONTENTS_INLINE_AND_SECONDARY_COMMAND_BUFFERS_KHR'
+--     specifies that the contents of the subpass /can/ be recorded both
+--     inline and in secondary command buffers executed from this command
+--     buffer with
+--     'Vulkan.Core10.CommandBufferBuilding.cmdExecuteCommands'.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -27,24 +47,13 @@
 newtype SubpassContents = SubpassContents Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'SUBPASS_CONTENTS_INLINE' specifies that the contents of the subpass
--- will be recorded inline in the primary command buffer, and secondary
--- command buffers /must/ not be executed within the subpass.
+-- No documentation found for Nested "VkSubpassContents" "VK_SUBPASS_CONTENTS_INLINE"
 pattern SUBPASS_CONTENTS_INLINE = SubpassContents 0
 
--- | 'SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS' specifies that the contents
--- are recorded in secondary command buffers that will be called from the
--- primary command buffer, and
--- 'Vulkan.Core10.CommandBufferBuilding.cmdExecuteCommands' is the only
--- valid command in the command buffer until
--- 'Vulkan.Core10.CommandBufferBuilding.cmdNextSubpass' or
--- 'Vulkan.Core10.CommandBufferBuilding.cmdEndRenderPass'.
+-- No documentation found for Nested "VkSubpassContents" "VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS"
 pattern SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = SubpassContents 1
 
--- | 'SUBPASS_CONTENTS_INLINE_AND_SECONDARY_COMMAND_BUFFERS_KHR' specifies
--- that the contents of the subpass /can/ be recorded both inline and in
--- secondary command buffers executed from this command buffer with
--- 'Vulkan.Core10.CommandBufferBuilding.cmdExecuteCommands'.
+-- No documentation found for Nested "VkSubpassContents" "VK_SUBPASS_CONTENTS_INLINE_AND_SECONDARY_COMMAND_BUFFERS_KHR"
 pattern SUBPASS_CONTENTS_INLINE_AND_SECONDARY_COMMAND_BUFFERS_KHR = SubpassContents 1000451000
 
 {-# COMPLETE
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
@@ -1,12 +1,13 @@
 {-# language CPP #-}
 -- No documentation found for Chapter "SubpassDescriptionFlagBits"
 module Vulkan.Core10.Enums.SubpassDescriptionFlagBits  ( SubpassDescriptionFlags
-                                                       , SubpassDescriptionFlagBits( SUBPASS_DESCRIPTION_ENABLE_LEGACY_DITHERING_BIT_EXT
+                                                       , SubpassDescriptionFlagBits( SUBPASS_DESCRIPTION_CUSTOM_RESOLVE_BIT_EXT
+                                                                                   , SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_EXT
+                                                                                   , SUBPASS_DESCRIPTION_ENABLE_LEGACY_DITHERING_BIT_EXT
                                                                                    , SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT
                                                                                    , SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT
                                                                                    , SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS_BIT_EXT
-                                                                                   , SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM
-                                                                                   , SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM
+                                                                                   , SUBPASS_DESCRIPTION_TILE_SHADING_APRON_BIT_QCOM
                                                                                    , SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX
                                                                                    , SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX
                                                                                    , ..
@@ -30,6 +31,49 @@
 --
 -- = Description
 --
+-- -   '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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-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.
+--
+-- -   'SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX' specifies
+--     that shaders compiled for this subpass use per-view positions which
+--     only differ in value in the x component. Per-view viewport mask
+--     /can/ also be used.
+--
+-- -   'SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_EXT' specifies that the
+--     framebuffer region is the fragment region, that is, the minimum
+--     region dependencies are by pixel rather than by sample, such that
+--     any fragment shader invocation /can/ access any sample associated
+--     with that fragment shader invocation.
+--
+-- -   'SUBPASS_DESCRIPTION_CUSTOM_RESOLVE_BIT_EXT' specifies that the
+--     subpass performs shader resolve operations.
+--
+-- -   'SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS_BIT_EXT'
+--     specifies that this subpass supports pipelines created with
+--     'Vulkan.Core10.Enums.PipelineColorBlendStateCreateFlagBits.PIPELINE_COLOR_BLEND_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_BIT_EXT'.
+--
+-- -   'SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT'
+--     specifies that this subpass supports pipelines created with
+--     'Vulkan.Core10.Enums.PipelineDepthStencilStateCreateFlagBits.PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT'.
+--
+-- -   'SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT'
+--     specifies that this subpass supports pipelines created with
+--     'Vulkan.Core10.Enums.PipelineDepthStencilStateCreateFlagBits.PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT'.
+--
+-- -   'SUBPASS_DESCRIPTION_ENABLE_LEGACY_DITHERING_BIT_EXT' specifies that
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-legacy-dithering Legacy Dithering>
+--     is enabled for this subpass.
+--
+-- -   'SUBPASS_DESCRIPTION_TILE_SHADING_APRON_BIT_QCOM' specifies that
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-tile-shading-aprons apron regions>
+--     /can/ be read within this subpass when
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-tile-shading tile shading is enabled>.
+--
 -- Shader resolve operations allow for custom resolve operations, but
 -- overdrawing pixels /may/ have a performance and\/or power cost.
 -- Furthermore, since the content of any depth stencil attachment or color
@@ -37,6 +81,16 @@
 -- any depth testing, stencil testing, or blending operation which sources
 -- these undefined values also has undefined result value.
 --
+-- There is no equivalent to
+-- 'SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS_BIT_EXT',
+-- 'SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT',
+-- or
+-- 'SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT'
+-- for render pass instances begun with
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'.
+-- For such render passes, only the corresponding pipeline flags are
+-- specified.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -44,50 +98,31 @@
 newtype SubpassDescriptionFlagBits = SubpassDescriptionFlagBits Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'SUBPASS_DESCRIPTION_ENABLE_LEGACY_DITHERING_BIT_EXT' specifies that
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-legacy-dithering Legacy Dithering>
--- is enabled for this subpass.
+-- No documentation found for Nested "VkSubpassDescriptionFlagBits" "VK_SUBPASS_DESCRIPTION_CUSTOM_RESOLVE_BIT_EXT"
+pattern SUBPASS_DESCRIPTION_CUSTOM_RESOLVE_BIT_EXT = SubpassDescriptionFlagBits 0x00000008
+
+-- No documentation found for Nested "VkSubpassDescriptionFlagBits" "VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_EXT"
+pattern SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_EXT = SubpassDescriptionFlagBits 0x00000004
+
+-- No documentation found for Nested "VkSubpassDescriptionFlagBits" "VK_SUBPASS_DESCRIPTION_ENABLE_LEGACY_DITHERING_BIT_EXT"
 pattern SUBPASS_DESCRIPTION_ENABLE_LEGACY_DITHERING_BIT_EXT = SubpassDescriptionFlagBits 0x00000080
 
--- | 'SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT'
--- specifies that this subpass supports pipelines created with
--- 'Vulkan.Core10.Enums.PipelineDepthStencilStateCreateFlagBits.PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT'.
+-- No documentation found for Nested "VkSubpassDescriptionFlagBits" "VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT"
 pattern SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT = SubpassDescriptionFlagBits 0x00000040
 
--- | 'SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT'
--- specifies that this subpass supports pipelines created with
--- 'Vulkan.Core10.Enums.PipelineDepthStencilStateCreateFlagBits.PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT'.
+-- No documentation found for Nested "VkSubpassDescriptionFlagBits" "VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT"
 pattern SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT = SubpassDescriptionFlagBits 0x00000020
 
--- | 'SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS_BIT_EXT'
--- specifies that this subpass supports pipelines created with
--- 'Vulkan.Core10.Enums.PipelineColorBlendStateCreateFlagBits.PIPELINE_COLOR_BLEND_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_BIT_EXT'.
+-- No documentation found for Nested "VkSubpassDescriptionFlagBits" "VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS_BIT_EXT"
 pattern SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS_BIT_EXT = SubpassDescriptionFlagBits 0x00000010
 
--- | 'SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM' specifies that the subpass
--- performs shader resolve operations.
-pattern SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM = SubpassDescriptionFlagBits 0x00000008
-
--- | 'SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM' specifies that the
--- framebuffer region is the fragment region, that is, the minimum region
--- dependencies are by pixel rather than by sample, such that any fragment
--- shader invocation /can/ access any sample associated with that fragment
--- shader invocation.
-pattern SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM = SubpassDescriptionFlagBits 0x00000004
+-- No documentation found for Nested "VkSubpassDescriptionFlagBits" "VK_SUBPASS_DESCRIPTION_TILE_SHADING_APRON_BIT_QCOM"
+pattern SUBPASS_DESCRIPTION_TILE_SHADING_APRON_BIT_QCOM = SubpassDescriptionFlagBits 0x00000100
 
--- | 'SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX' specifies that
--- shaders compiled for this subpass use per-view positions which only
--- differ in value in the x component. Per-view viewport mask /can/ also be
--- used.
+-- No documentation found for Nested "VkSubpassDescriptionFlagBits" "VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX"
 pattern SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX = SubpassDescriptionFlagBits 0x00000002
 
--- | 'SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX' specifies that shaders
--- compiled for this subpass write the attributes for all views in a single
--- invocation of each
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-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.
+-- No documentation found for Nested "VkSubpassDescriptionFlagBits" "VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX"
 pattern SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX = SubpassDescriptionFlagBits 0x00000001
 
 conNameSubpassDescriptionFlagBits :: String
@@ -99,6 +134,14 @@
 showTableSubpassDescriptionFlagBits :: [(SubpassDescriptionFlagBits, String)]
 showTableSubpassDescriptionFlagBits =
   [
+    ( SUBPASS_DESCRIPTION_CUSTOM_RESOLVE_BIT_EXT
+    , "CUSTOM_RESOLVE_BIT_EXT"
+    )
+  ,
+    ( SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_EXT
+    , "FRAGMENT_REGION_BIT_EXT"
+    )
+  ,
     ( SUBPASS_DESCRIPTION_ENABLE_LEGACY_DITHERING_BIT_EXT
     , "ENABLE_LEGACY_DITHERING_BIT_EXT"
     )
@@ -115,12 +158,8 @@
     , "RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS_BIT_EXT"
     )
   ,
-    ( SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM
-    , "SHADER_RESOLVE_BIT_QCOM"
-    )
-  ,
-    ( SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM
-    , "FRAGMENT_REGION_BIT_QCOM"
+    ( SUBPASS_DESCRIPTION_TILE_SHADING_APRON_BIT_QCOM
+    , "TILE_SHADING_APRON_BIT_QCOM"
     )
   ,
     ( SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX
diff --git a/src/Vulkan/Core10/Enums/VertexInputRate.hs b/src/Vulkan/Core10/Enums/VertexInputRate.hs
--- a/src/Vulkan/Core10/Enums/VertexInputRate.hs
+++ b/src/Vulkan/Core10/Enums/VertexInputRate.hs
@@ -17,20 +17,26 @@
 -- | VkVertexInputRate - Specify rate at which vertex attributes are pulled
 -- from buffers
 --
+-- = Description
+--
+-- -   'VERTEX_INPUT_RATE_VERTEX' specifies that vertex attribute
+--     addressing is a function of the vertex index.
+--
+-- -   'VERTEX_INPUT_RATE_INSTANCE' specifies that vertex attribute
+--     addressing is a function of the instance index.
+--
 -- = 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.Pipeline.VertexInputBindingDescription',
+-- 'Vulkan.Core10.GraphicsPipeline.VertexInputBindingDescription',
 -- 'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputBindingDescription2EXT'
 newtype VertexInputRate = VertexInputRate Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'VERTEX_INPUT_RATE_VERTEX' specifies that vertex attribute addressing is
--- a function of the vertex index.
+-- No documentation found for Nested "VkVertexInputRate" "VK_VERTEX_INPUT_RATE_VERTEX"
 pattern VERTEX_INPUT_RATE_VERTEX = VertexInputRate 0
 
--- | 'VERTEX_INPUT_RATE_INSTANCE' specifies that vertex attribute addressing
--- is a function of the instance index.
+-- No documentation found for Nested "VkVertexInputRate" "VK_VERTEX_INPUT_RATE_INSTANCE"
 pattern VERTEX_INPUT_RATE_INSTANCE = VertexInputRate 1
 
 {-# COMPLETE
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
@@ -96,8 +96,9 @@
 -- == Valid Usage
 --
 -- -   #VUID-vkCreateEvent-device-09672# @device@ /must/ support at least
---     one queue family with one of the @VK_QUEUE_VIDEO_ENCODE_BIT_KHR@,
---     @VK_QUEUE_VIDEO_DECODE_BIT_KHR@,
+--     one queue family with one of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits VK_QUEUE_VIDEO_ENCODE_BIT_KHR>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits VK_QUEUE_VIDEO_DECODE_BIT_KHR>,
 --     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', or
 --     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' capabilities
 --
@@ -106,7 +107,7 @@
 --     'Vulkan.Extensions.VK_KHR_portability_subset.PhysicalDevicePortabilitySubsetFeaturesKHR'::@events@
 --     is 'Vulkan.Core10.FundamentalTypes.FALSE', then the implementation
 --     does not support
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-events events>,
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-events events>,
 --     and 'createEvent' /must/ not be used
 --
 -- == Valid Usage (Implicit)
@@ -124,6 +125,9 @@
 -- -   #VUID-vkCreateEvent-pEvent-parameter# @pEvent@ /must/ be a valid
 --     pointer to a 'Vulkan.Core10.Handles.Event' handle
 --
+-- -   #VUID-vkCreateEvent-device-queuecount# The device /must/ have been
+--     created with at least @1@ queue
+--
 -- == Return Codes
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
@@ -132,10 +136,14 @@
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -150,7 +158,7 @@
                -- information about how the event is to be created.
                (EventCreateInfo a)
             -> -- | @pAllocator@ controls host memory allocation as described in the
-               -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+               -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
                -- chapter.
                ("allocator" ::: Maybe AllocationCallbacks)
             -> io (Event)
@@ -242,7 +250,7 @@
              -> -- | @event@ is the handle of the event to destroy.
                 Event
              -> -- | @pAllocator@ controls host memory allocation as described in the
-                -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
                 -- chapter.
                 ("allocator" ::: Maybe AllocationCallbacks)
              -> io ()
@@ -290,7 +298,7 @@
 -- If a 'Vulkan.Core10.CommandBufferBuilding.cmdSetEvent' or
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdResetEvent' command is in a
 -- command buffer that is in the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle pending state>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#commandbuffers-lifecycle pending state>,
 -- then the value returned by this command /may/ immediately be out of
 -- date.
 --
@@ -303,18 +311,22 @@
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
 --
---     -   'Vulkan.Core10.Enums.Result.EVENT_SET'
---
 --     -   'Vulkan.Core10.Enums.Result.EVENT_RESET'
 --
+--     -   'Vulkan.Core10.Enums.Result.EVENT_SET'
+--
 -- [<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_DEVICE_LOST'
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -371,7 +383,7 @@
 -- If a command buffer is waiting for an event to be signaled from the
 -- host, the application must signal the event before submitting the
 -- command buffer, as described in the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-submission-progress queue forward progress>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#commandbuffers-submission-progress queue forward progress>
 -- section.
 --
 -- == Valid Usage
@@ -382,7 +394,7 @@
 --
 -- -   #VUID-vkSetEvent-event-09543# @event@ /must/ not be waited on by a
 --     command buffer in the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle pending state>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#commandbuffers-lifecycle pending state>
 --
 -- == Valid Usage (Implicit)
 --
@@ -407,10 +419,14 @@
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -492,6 +508,10 @@
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -537,8 +557,8 @@
 --     'Vulkan.Extensions.VK_EXT_metal_objects.ImportMetalSharedEventInfoEXT'
 --
 -- -   #VUID-VkEventCreateInfo-sType-unique# The @sType@ value of each
---     struct in the @pNext@ chain /must/ be unique, with the exception of
---     structures of type
+--     structure in the @pNext@ chain /must/ be unique, with the exception
+--     of structures of type
 --     'Vulkan.Extensions.VK_EXT_metal_objects.ExportMetalObjectCreateInfoEXT'
 --
 -- -   #VUID-VkEventCreateInfo-flags-parameter# @flags@ /must/ be a valid
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
@@ -120,18 +120,22 @@
 --
 -- [<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'
 --
+--     -   '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_LAYER_NOT_PRESENT'
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_LAYER_NOT_PRESENT'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -194,13 +198,17 @@
 -- supported by this query, the @VK_KHR_pipeline_library@ extension /must/
 -- also be supported.
 --
+-- If the @VK_EXT_descriptor_heap@ extension is advertised as supported by
+-- this query, the @VK_KHR_shader_untyped_pointers@ extension /must/ also
+-- be supported.
+--
 -- Implementations claiming support for the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#roadmap-2022 Roadmap 2022>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#roadmap-2022 Roadmap 2022>
 -- profile /must/ advertise the @VK_KHR_global_priority@ extension in
 -- @pProperties@.
 --
 -- Implementations claiming support for the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#roadmap-2024 Roadmap 2024>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#roadmap-2024 Roadmap 2024>
 -- profile /must/ advertise the following extensions in @pProperties@:
 --
 -- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering_local_read VK_KHR_dynamic_rendering_local_read>
@@ -258,17 +266,21 @@
 --
 -- [<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'
 --
+--     -   '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_LAYER_NOT_PRESENT'
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_LAYER_NOT_PRESENT'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
 --
 -- = See Also
 --
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
@@ -113,6 +113,9 @@
 -- -   #VUID-vkCreateFence-pFence-parameter# @pFence@ /must/ be a valid
 --     pointer to a 'Vulkan.Core10.Handles.Fence' handle
 --
+-- -   #VUID-vkCreateFence-device-queuecount# The device /must/ have been
+--     created with at least @1@ queue
+--
 -- == Return Codes
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
@@ -121,10 +124,14 @@
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -139,7 +146,7 @@
                -- information about how the fence is to be created.
                (FenceCreateInfo a)
             -> -- | @pAllocator@ controls host memory allocation as described in the
-               -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+               -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
                -- chapter.
                ("allocator" ::: Maybe AllocationCallbacks)
             -> io (Fence)
@@ -188,7 +195,7 @@
 -- == Valid Usage
 --
 -- -   #VUID-vkDestroyFence-fence-01120# All
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-submission queue submission>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#devsandqueues-submission queue submission>
 --     commands that refer to @fence@ /must/ have completed execution
 --
 -- -   #VUID-vkDestroyFence-fence-01121# If
@@ -232,7 +239,7 @@
              -> -- | @fence@ is the handle of the fence to destroy.
                 Fence
              -> -- | @pAllocator@ controls host memory allocation as described in the
-                -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
                 -- chapter.
                 ("allocator" ::: Maybe AllocationCallbacks)
              -> io ()
@@ -263,7 +270,7 @@
 -- = Description
 --
 -- If any member of @pFences@ currently has its
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-fences-importing payload imported>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -312,6 +319,10 @@
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -351,26 +362,26 @@
 -- Upon success, 'getFenceStatus' returns the status of the fence object,
 -- with the following return codes:
 --
--- +------------------------------------------------+--------------------------------------------------------------------------------------------------------------------+
--- | Status                                         | Meaning                                                                                                            |
--- +================================================+====================================================================================================================+
--- | 'Vulkan.Core10.Enums.Result.SUCCESS'           | The fence specified by @fence@ is signaled.                                                                        |
--- +------------------------------------------------+--------------------------------------------------------------------------------------------------------------------+
--- | '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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-lost-device Lost Device>. |
--- +------------------------------------------------+--------------------------------------------------------------------------------------------------------------------+
+-- +------------------------------------------------+------------------------------------------------------------------------------------------------------------+
+-- | Status                                         | Meaning                                                                                                    |
+-- +================================================+============================================================================================================+
+-- | 'Vulkan.Core10.Enums.Result.SUCCESS'           | The fence specified by @fence@ is signaled.                                                                |
+-- +------------------------------------------------+------------------------------------------------------------------------------------------------------------+
+-- | '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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#devsandqueues-lost-device Lost Device>. |
+-- +------------------------------------------------+------------------------------------------------------------------------------------------------------------+
 --
 -- Fence Object Status Codes
 --
 -- If a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-submission queue submission>
+-- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-lost-device Lost Device>),
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -380,18 +391,22 @@
 --
 -- [<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.NOT_READY'
 --
+--     -   '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_DEVICE_LOST'
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -496,7 +511,7 @@
 -- @timeout@ has expired.
 --
 -- If device loss occurs (see
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-lost-device Lost Device>)
+-- <https://registry.khronos.org/vulkan/specs/latest/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'.
@@ -532,12 +547,16 @@
 --
 -- [<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_DEVICE_LOST'
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -601,7 +620,7 @@
 --     'Vulkan.Extensions.VK_KHR_external_fence_win32.ExportFenceWin32HandleInfoKHR'
 --
 -- -   #VUID-VkFenceCreateInfo-sType-unique# The @sType@ value of each
---     struct in the @pNext@ chain /must/ be unique
+--     structure in the @pNext@ chain /must/ be unique
 --
 -- -   #VUID-VkFenceCreateInfo-flags-parameter# @flags@ /must/ be a valid
 --     combination of
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
@@ -43,7 +43,7 @@
 --
 -- = Description
 --
--- > described link:https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-host-allocation-scope[here^].
+-- > described link:https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-host-allocation-scope[here^].
 --
 -- = See Also
 --
@@ -123,7 +123,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#fundamentals-errorcodes Return Codes>.
+-- <https://registry.khronos.org/vulkan/specs/latest/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,
@@ -156,7 +156,7 @@
 type PFN_vkFreeFunction = FunPtr FN_vkFreeFunction
 
 
-type FN_vkVoidFunction = () -> IO ()
+type FN_vkVoidFunction = IO ()
 -- | PFN_vkVoidFunction - Placeholder function pointer type returned by
 -- queries
 --
@@ -167,6 +167,7 @@
 --
 -- = See Also
 --
+-- 'Vulkan.Extensions.VK_LUNARG_direct_driver_loading.PFN_vkGetInstanceProcAddrLUNARG',
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
 -- 'Vulkan.Core10.DeviceInitialization.getDeviceProcAddr',
 -- 'Vulkan.Core10.DeviceInitialization.getInstanceProcAddr'
diff --git a/src/Vulkan/Core10/FuncPointers.hs-boot b/src/Vulkan/Core10/FuncPointers.hs-boot
--- a/src/Vulkan/Core10/FuncPointers.hs-boot
+++ b/src/Vulkan/Core10/FuncPointers.hs-boot
@@ -6,7 +6,7 @@
 
 import Foreign.Ptr (FunPtr)
 
-type FN_vkVoidFunction = () -> IO ()
+type FN_vkVoidFunction = IO ()
 -- | PFN_vkVoidFunction - Placeholder function pointer type returned by
 -- queries
 --
@@ -17,6 +17,7 @@
 --
 -- = See Also
 --
+-- 'Vulkan.Extensions.VK_LUNARG_direct_driver_loading.PFN_vkGetInstanceProcAddrLUNARG',
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
 -- 'Vulkan.Core10.DeviceInitialization.getDeviceProcAddr',
 -- 'Vulkan.Core10.DeviceInitialization.getInstanceProcAddr'
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
@@ -64,7 +64,7 @@
 -- 'Vulkan.Extensions.VK_KHR_display.DisplayPlaneCapabilitiesKHR',
 -- 'Vulkan.Extensions.VK_QCOM_image_processing.ImageViewSampleWeightCreateInfoQCOM',
 -- 'Rect2D', 'Vulkan.Extensions.VK_KHR_incremental_present.RectLayerKHR',
--- 'Vulkan.Extensions.VK_QCOM_fragment_density_map_offset.SubpassFragmentDensityMapOffsetEndInfoQCOM',
+-- 'Vulkan.Extensions.VK_EXT_fragment_density_map_offset.RenderPassFragmentDensityMapOffsetEndInfoEXT',
 -- 'Vulkan.Extensions.VK_QCOM_tile_properties.TilePropertiesQCOM',
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH264CapabilitiesKHR VkVideoDecodeH264CapabilitiesKHR>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoPictureResourceInfoKHR VkVideoPictureResourceInfoKHR>
@@ -119,15 +119,16 @@
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
 -- 'Vulkan.Core10.CommandBufferBuilding.BufferImageCopy',
 -- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.BufferImageCopy2',
--- 'Vulkan.Extensions.VK_NV_copy_memory_indirect.CopyMemoryToImageIndirectCommandNV',
+-- 'Vulkan.Extensions.VK_KHR_copy_memory_indirect.CopyMemoryToImageIndirectCommandKHR',
+-- 'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceMemoryImageCopyKHR',
 -- 'Vulkan.Core10.CommandBufferBuilding.ImageBlit',
 -- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.ImageBlit2',
 -- 'Vulkan.Core10.CommandBufferBuilding.ImageCopy',
 -- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.ImageCopy2',
 -- 'Vulkan.Core10.CommandBufferBuilding.ImageResolve',
 -- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.ImageResolve2',
--- 'Vulkan.Extensions.VK_EXT_host_image_copy.ImageToMemoryCopyEXT',
--- 'Vulkan.Extensions.VK_EXT_host_image_copy.MemoryToImageCopyEXT',
+-- 'Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy.ImageToMemoryCopy',
+-- 'Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy.MemoryToImageCopy',
 -- 'Vulkan.Core10.SparseResourceMemoryManagement.SparseImageMemoryBind'
 data Offset3D = Offset3D
   { -- | @x@ is the x offset.
@@ -191,23 +192,26 @@
 -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FragmentShadingRateAttachmentInfoKHR',
 -- 'Vulkan.Extensions.VK_QCOM_image_processing.ImageViewSampleWeightCreateInfoQCOM',
 -- 'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT',
--- 'Vulkan.Extensions.VK_QCOM_fragment_density_map_offset.PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM',
+-- 'Vulkan.Extensions.VK_EXT_fragment_density_map_offset.PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT',
 -- 'Vulkan.Extensions.VK_EXT_fragment_density_map.PhysicalDeviceFragmentDensityMapPropertiesEXT',
 -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PhysicalDeviceFragmentShadingRateKHR',
 -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PhysicalDeviceFragmentShadingRatePropertiesKHR',
 -- 'Vulkan.Extensions.VK_QCOM_image_processing2.PhysicalDeviceImageProcessing2PropertiesQCOM',
 -- 'Vulkan.Extensions.VK_QCOM_image_processing.PhysicalDeviceImageProcessingPropertiesQCOM',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPhysicalDevicePerformanceCountersByRegionPropertiesARM VkPhysicalDevicePerformanceCountersByRegionPropertiesARM>,
 -- 'Vulkan.Extensions.VK_ARM_render_pass_striped.PhysicalDeviceRenderPassStripedPropertiesARM',
 -- 'Vulkan.Extensions.VK_EXT_sample_locations.PhysicalDeviceSampleLocationsPropertiesEXT',
 -- 'Vulkan.Extensions.VK_NV_shading_rate_image.PhysicalDeviceShadingRateImagePropertiesNV',
+-- 'Vulkan.Extensions.VK_QCOM_tile_shading.PhysicalDeviceTileShadingPropertiesQCOM',
 -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR',
 -- 'Rect2D', 'Vulkan.Extensions.VK_KHR_incremental_present.RectLayerKHR',
+-- 'Vulkan.Extensions.VK_QCOM_tile_shading.RenderPassTileShadingCreateInfoQCOM',
 -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.RenderingFragmentShadingRateAttachmentInfoKHR',
 -- 'Vulkan.Extensions.VK_EXT_sample_locations.SampleLocationsInfoEXT',
 -- 'Vulkan.Extensions.VK_QCOM_image_processing2.SamplerBlockMatchWindowCreateInfoQCOM',
 -- 'Vulkan.Extensions.VK_EXT_display_surface_counter.SurfaceCapabilities2EXT',
 -- 'Vulkan.Extensions.VK_KHR_surface.SurfaceCapabilitiesKHR',
--- 'Vulkan.Extensions.VK_EXT_surface_maintenance1.SurfacePresentScalingCapabilitiesEXT',
+-- 'Vulkan.Extensions.VK_KHR_surface_maintenance1.SurfacePresentScalingCapabilitiesKHR',
 -- 'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR',
 -- 'Vulkan.Extensions.VK_QCOM_tile_properties.TilePropertiesQCOM',
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoCapabilitiesKHR VkVideoCapabilitiesKHR>,
@@ -223,7 +227,8 @@
 -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR',
 -- 'Vulkan.Extensions.VK_HUAWEI_subpass_shading.getDeviceSubpassShadingMaxWorkgroupSizeHUAWEI',
 -- 'Vulkan.Core10.Pass.getRenderAreaGranularity',
--- 'Vulkan.Extensions.VK_KHR_maintenance5.getRenderingAreaGranularityKHR'
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.getRenderingAreaGranularity',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.getRenderingAreaGranularity'
 data Extent2D = Extent2D
   { -- | @width@ is the width of the extent.
     width :: Word32
@@ -275,15 +280,17 @@
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
 -- 'Vulkan.Core10.CommandBufferBuilding.BufferImageCopy',
 -- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.BufferImageCopy2',
--- 'Vulkan.Extensions.VK_NV_copy_memory_indirect.CopyMemoryToImageIndirectCommandNV',
+-- 'Vulkan.Extensions.VK_KHR_copy_memory_indirect.CopyMemoryToImageIndirectCommandKHR',
+-- 'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceMemoryImageCopyKHR',
 -- 'Vulkan.Core10.CommandBufferBuilding.ImageCopy',
 -- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.ImageCopy2',
 -- 'Vulkan.Core10.Image.ImageCreateInfo',
 -- 'Vulkan.Core10.DeviceInitialization.ImageFormatProperties',
 -- 'Vulkan.Core10.CommandBufferBuilding.ImageResolve',
 -- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.ImageResolve2',
--- 'Vulkan.Extensions.VK_EXT_host_image_copy.ImageToMemoryCopyEXT',
--- 'Vulkan.Extensions.VK_EXT_host_image_copy.MemoryToImageCopyEXT',
+-- 'Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy.ImageToMemoryCopy',
+-- 'Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy.MemoryToImageCopy',
+-- 'Vulkan.Extensions.VK_KHR_maintenance11.QueueFamilyOptimalImageTransferGranularityPropertiesKHR',
 -- 'Vulkan.Core10.DeviceInitialization.QueueFamilyProperties',
 -- 'Vulkan.Core10.SparseResourceMemoryManagement.SparseImageFormatProperties',
 -- 'Vulkan.Core10.SparseResourceMemoryManagement.SparseImageMemoryBind',
@@ -354,7 +361,7 @@
 -- 'Vulkan.Extensions.VK_NV_optical_flow.OpticalFlowExecuteInfoNV',
 -- 'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT',
 -- 'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV',
--- 'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo',
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineViewportStateCreateInfo',
 -- 'Vulkan.Core10.CommandBufferBuilding.RenderPassBeginInfo',
 -- 'Vulkan.Extensions.VK_ARM_render_pass_striped.RenderPassStripeInfoARM',
 -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo',
@@ -362,7 +369,7 @@
 -- '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.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount',
 -- 'Vulkan.Extensions.VK_KHR_swapchain.getPhysicalDevicePresentRectanglesKHR'
 data Rect2D = Rect2D
   { -- | @offset@ is a 'Offset2D' specifying the rectangle offset.
@@ -423,19 +430,32 @@
 --
 -- = See Also
 --
+-- 'Vulkan.Extensions.VK_EXT_debug_report.PFN_vkDebugReportCallbackEXT',
+-- 'Vulkan.Extensions.VK_EXT_debug_utils.PFN_vkDebugUtilsMessengerCallbackEXT',
 -- 'FALSE', 'TRUE',
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureGeometryInstancesDataKHR',
+-- 'Vulkan.Extensions.VK_KHR_unified_image_layouts.AttachmentFeedbackLoopInfoEXT',
+-- 'Vulkan.Extensions.VK_KHR_device_address_commands.BindVertexBuffer3InfoKHR',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkClusterAccelerationStructureMoveObjectsInputNV VkClusterAccelerationStructureMoveObjectsInputNV>,
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.ColorBlendAdvancedEXT',
 -- 'Vulkan.Extensions.VK_EXT_conditional_rendering.CommandBufferInheritanceConditionalRenderingInfoEXT',
 -- 'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo',
 -- 'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV',
 -- 'Vulkan.Extensions.VK_NV_cooperative_matrix2.CooperativeMatrixFlexibleDimensionsPropertiesNV',
 -- 'Vulkan.Extensions.VK_KHR_cooperative_matrix.CooperativeMatrixPropertiesKHR',
+-- 'Vulkan.Extensions.VK_NV_cooperative_vector.CooperativeVectorPropertiesNV',
 -- 'Vulkan.Extensions.VK_NVX_binary_import.CuModuleTexturingModeCreateInfoNVX',
+-- 'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT',
+-- 'Vulkan.Extensions.VK_ARM_data_graph_neural_accelerator_statistics.DataGraphPipelineNeuralStatisticsCreateInfoARM',
+-- 'Vulkan.Extensions.VK_ARM_data_graph.DataGraphPipelinePropertyQueryResultARM',
 -- 'Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationBufferCreateInfoNV',
 -- 'Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationImageCreateInfoNV',
 -- 'Vulkan.Extensions.VK_EXT_depth_bias_control.DepthBiasRepresentationInfoEXT',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DescriptorMappingSourceIndirectIndexArrayEXT',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DescriptorMappingSourceIndirectIndexEXT',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DescriptorMappingSourcePushIndexEXT',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DescriptorMappingSourceShaderRecordIndexEXT',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_maintenance3.DescriptorSetLayoutSupport',
 -- 'Vulkan.Extensions.VK_KHR_pipeline_binary.DevicePipelineBinaryInternalCacheControlKHR',
 -- 'Vulkan.Extensions.VK_NV_display_stereo.DisplayModeStereoPropertiesNV',
@@ -444,13 +464,16 @@
 -- 'Vulkan.Extensions.VK_KHR_display.DisplayPropertiesKHR',
 -- 'Vulkan.Extensions.VK_EXT_external_memory_acquire_unmodified.ExternalMemoryAcquireUnmodifiedEXT',
 -- 'Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT',
--- 'Vulkan.Extensions.VK_EXT_host_image_copy.HostImageCopyDevicePerformanceQueryEXT',
+-- 'Vulkan.Extensions.VK_AMD_gpa_interface.GpaSampleBeginInfoAMD',
+-- 'Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy.HostImageCopyDevicePerformanceQuery',
 -- 'Vulkan.Extensions.VK_NV_device_generated_commands.IndirectCommandsLayoutTokenNV',
 -- 'Vulkan.Extensions.VK_NV_low_latency2.LatencySleepModeInfoNV',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedRequirements',
 -- 'Vulkan.Extensions.VK_EXT_opacity_micromap.MicromapBuildSizesInfoEXT',
 -- 'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT',
 -- 'Vulkan.Extensions.VK_NVX_multiview_per_view_attributes.MultiviewPerViewAttributesInfoNVX',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPartitionedAccelerationStructureFlagsNV VkPartitionedAccelerationStructureFlagsNV>,
+-- 'Vulkan.Extensions.VK_EXT_present_timing.PastPresentationTimingEXT',
 -- 'Vulkan.Extensions.VK_INTEL_performance_query.PerformanceOverrideInfoINTEL',
 -- 'Vulkan.Extensions.VK_INTEL_performance_query.PerformanceValueDataINTEL',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_16bit_storage.PhysicalDevice16BitStorageFeatures',
@@ -468,18 +491,24 @@
 -- 'Vulkan.Extensions.VK_EXT_border_color_swizzle.PhysicalDeviceBorderColorSwizzleFeaturesEXT',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.PhysicalDeviceBufferDeviceAddressFeatures',
 -- 'Vulkan.Extensions.VK_EXT_buffer_device_address.PhysicalDeviceBufferDeviceAddressFeaturesEXT',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPhysicalDeviceClusterAccelerationStructureFeaturesNV VkPhysicalDeviceClusterAccelerationStructureFeaturesNV>,
 -- 'Vulkan.Extensions.VK_HUAWEI_cluster_culling_shader.PhysicalDeviceClusterCullingShaderFeaturesHUAWEI',
 -- 'Vulkan.Extensions.VK_HUAWEI_cluster_culling_shader.PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI',
 -- 'Vulkan.Extensions.VK_AMD_device_coherent_memory.PhysicalDeviceCoherentMemoryFeaturesAMD',
 -- 'Vulkan.Extensions.VK_EXT_color_write_enable.PhysicalDeviceColorWriteEnableFeaturesEXT',
 -- 'Vulkan.Extensions.VK_NV_command_buffer_inheritance.PhysicalDeviceCommandBufferInheritanceFeaturesNV',
+-- 'Vulkan.Extensions.VK_NV_compute_occupancy_priority.PhysicalDeviceComputeOccupancyPriorityFeaturesNV',
 -- 'Vulkan.Extensions.VK_KHR_compute_shader_derivatives.PhysicalDeviceComputeShaderDerivativesFeaturesKHR',
 -- 'Vulkan.Extensions.VK_KHR_compute_shader_derivatives.PhysicalDeviceComputeShaderDerivativesPropertiesKHR',
 -- 'Vulkan.Extensions.VK_EXT_conditional_rendering.PhysicalDeviceConditionalRenderingFeaturesEXT',
 -- 'Vulkan.Extensions.VK_EXT_conservative_rasterization.PhysicalDeviceConservativeRasterizationPropertiesEXT',
 -- 'Vulkan.Extensions.VK_NV_cooperative_matrix2.PhysicalDeviceCooperativeMatrix2FeaturesNV',
+-- 'Vulkan.Extensions.VK_QCOM_cooperative_matrix_conversion.PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM',
 -- 'Vulkan.Extensions.VK_KHR_cooperative_matrix.PhysicalDeviceCooperativeMatrixFeaturesKHR',
 -- 'Vulkan.Extensions.VK_NV_cooperative_matrix.PhysicalDeviceCooperativeMatrixFeaturesNV',
+-- 'Vulkan.Extensions.VK_NV_cooperative_vector.PhysicalDeviceCooperativeVectorFeaturesNV',
+-- 'Vulkan.Extensions.VK_NV_cooperative_vector.PhysicalDeviceCooperativeVectorPropertiesNV',
+-- 'Vulkan.Extensions.VK_KHR_copy_memory_indirect.PhysicalDeviceCopyMemoryIndirectFeaturesKHR',
 -- 'Vulkan.Extensions.VK_NV_copy_memory_indirect.PhysicalDeviceCopyMemoryIndirectFeaturesNV',
 -- 'Vulkan.Extensions.VK_NV_corner_sampled_image.PhysicalDeviceCornerSampledImageFeaturesNV',
 -- 'Vulkan.Extensions.VK_NV_coverage_reduction_mode.PhysicalDeviceCoverageReductionModeFeaturesNV',
@@ -487,19 +516,30 @@
 -- 'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.PhysicalDeviceCubicWeightsFeaturesQCOM',
 -- 'Vulkan.Extensions.VK_NV_cuda_kernel_launch.PhysicalDeviceCudaKernelLaunchFeaturesNV',
 -- 'Vulkan.Extensions.VK_EXT_custom_border_color.PhysicalDeviceCustomBorderColorFeaturesEXT',
+-- 'Vulkan.Extensions.VK_EXT_custom_resolve.PhysicalDeviceCustomResolveFeaturesEXT',
+-- 'Vulkan.Extensions.VK_ARM_data_graph.PhysicalDeviceDataGraphFeaturesARM',
+-- 'Vulkan.Extensions.VK_QCOM_data_graph_model.PhysicalDeviceDataGraphModelFeaturesQCOM',
+-- 'Vulkan.Extensions.VK_ARM_data_graph_neural_accelerator_statistics.PhysicalDeviceDataGraphNeuralAcceleratorStatisticsFeaturesARM',
+-- 'Vulkan.Extensions.VK_ARM_data_graph_optical_flow.PhysicalDeviceDataGraphOpticalFlowFeaturesARM',
+-- 'Vulkan.Extensions.VK_ARM_data_graph.PhysicalDeviceDataGraphProcessingEngineARM',
 -- 'Vulkan.Extensions.VK_NV_dedicated_allocation_image_aliasing.PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV',
+-- 'Vulkan.Extensions.VK_AMDX_dense_geometry_format.PhysicalDeviceDenseGeometryFormatFeaturesAMDX',
 -- 'Vulkan.Extensions.VK_EXT_depth_bias_control.PhysicalDeviceDepthBiasControlFeaturesEXT',
 -- 'Vulkan.Extensions.VK_EXT_depth_clamp_control.PhysicalDeviceDepthClampControlFeaturesEXT',
--- 'Vulkan.Extensions.VK_EXT_depth_clamp_zero_one.PhysicalDeviceDepthClampZeroOneFeaturesEXT',
+-- 'Vulkan.Extensions.VK_KHR_depth_clamp_zero_one.PhysicalDeviceDepthClampZeroOneFeaturesKHR',
 -- 'Vulkan.Extensions.VK_EXT_depth_clip_control.PhysicalDeviceDepthClipControlFeaturesEXT',
 -- 'Vulkan.Extensions.VK_EXT_depth_clip_enable.PhysicalDeviceDepthClipEnableFeaturesEXT',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve.PhysicalDeviceDepthStencilResolveProperties',
 -- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.PhysicalDeviceDescriptorBufferFeaturesEXT',
 -- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.PhysicalDeviceDescriptorBufferPropertiesEXT',
+-- 'Vulkan.Extensions.VK_ARM_tensors.PhysicalDeviceDescriptorBufferTensorFeaturesARM',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_heap.PhysicalDeviceDescriptorHeapFeaturesEXT',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_heap.PhysicalDeviceDescriptorHeapPropertiesEXT',
 -- 'Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.PhysicalDeviceDescriptorIndexingFeatures',
 -- 'Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.PhysicalDeviceDescriptorIndexingProperties',
 -- 'Vulkan.Extensions.VK_NV_descriptor_pool_overallocation.PhysicalDeviceDescriptorPoolOverallocationFeaturesNV',
 -- 'Vulkan.Extensions.VK_VALVE_descriptor_set_host_mapping.PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE',
+-- 'Vulkan.Extensions.VK_KHR_device_address_commands.PhysicalDeviceDeviceAddressCommandsFeaturesKHR',
 -- 'Vulkan.Extensions.VK_NV_device_generated_commands_compute.PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV',
 -- 'Vulkan.Extensions.VK_EXT_device_generated_commands.PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT',
 -- 'Vulkan.Extensions.VK_NV_device_generated_commands.PhysicalDeviceDeviceGeneratedCommandsFeaturesNV',
@@ -509,8 +549,9 @@
 -- 'Vulkan.Extensions.VK_NV_displacement_micromap.PhysicalDeviceDisplacementMicromapFeaturesNV',
 -- 'Vulkan.Extensions.VK_EXT_physical_device_drm.PhysicalDeviceDrmPropertiesEXT',
 -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PhysicalDeviceDynamicRenderingFeatures',
--- 'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.PhysicalDeviceDynamicRenderingLocalReadFeatures',
 -- 'Vulkan.Extensions.VK_EXT_dynamic_rendering_unused_attachments.PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT',
+-- 'Vulkan.Extensions.VK_QCOM_elapsed_timer_query.PhysicalDeviceElapsedTimerQueryFeaturesQCOM',
 -- 'Vulkan.Extensions.VK_NV_scissor_exclusive.PhysicalDeviceExclusiveScissorFeaturesNV',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.PhysicalDeviceExtendedDynamicState2FeaturesEXT',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.PhysicalDeviceExtendedDynamicState3FeaturesEXT',
@@ -522,12 +563,15 @@
 -- 'Vulkan.Extensions.VK_NV_external_memory_rdma.PhysicalDeviceExternalMemoryRDMAFeaturesNV',
 -- 'Vulkan.Extensions.VK_QNX_external_memory_screen_buffer.PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX',
 -- 'Vulkan.Extensions.VK_EXT_device_fault.PhysicalDeviceFaultFeaturesEXT',
+-- 'Vulkan.Extensions.VK_KHR_device_fault.PhysicalDeviceFaultFeaturesKHR',
 -- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceFeatures',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_shader_float_controls.PhysicalDeviceFloatControlsProperties',
+-- 'Vulkan.Extensions.VK_ARM_format_pack.PhysicalDeviceFormatPackFeaturesARM',
 -- 'Vulkan.Extensions.VK_EXT_fragment_density_map2.PhysicalDeviceFragmentDensityMap2FeaturesEXT',
 -- 'Vulkan.Extensions.VK_EXT_fragment_density_map2.PhysicalDeviceFragmentDensityMap2PropertiesEXT',
 -- 'Vulkan.Extensions.VK_EXT_fragment_density_map.PhysicalDeviceFragmentDensityMapFeaturesEXT',
--- 'Vulkan.Extensions.VK_QCOM_fragment_density_map_offset.PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM',
+-- 'Vulkan.Extensions.VK_VALVE_fragment_density_map_layered.PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE',
+-- 'Vulkan.Extensions.VK_EXT_fragment_density_map_offset.PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT',
 -- 'Vulkan.Extensions.VK_EXT_fragment_density_map.PhysicalDeviceFragmentDensityMapPropertiesEXT',
 -- 'Vulkan.Extensions.VK_KHR_fragment_shader_barycentric.PhysicalDeviceFragmentShaderBarycentricFeaturesKHR',
 -- 'Vulkan.Extensions.VK_KHR_fragment_shader_barycentric.PhysicalDeviceFragmentShaderBarycentricPropertiesKHR',
@@ -536,13 +580,14 @@
 -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PhysicalDeviceFragmentShadingRateFeaturesKHR',
 -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PhysicalDeviceFragmentShadingRatePropertiesKHR',
 -- 'Vulkan.Extensions.VK_EXT_frame_boundary.PhysicalDeviceFrameBoundaryFeaturesEXT',
--- 'Vulkan.Extensions.VK_KHR_global_priority.PhysicalDeviceGlobalPriorityQueryFeaturesKHR',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_global_priority.PhysicalDeviceGlobalPriorityQueryFeatures',
+-- 'Vulkan.Extensions.VK_AMD_gpa_interface.PhysicalDeviceGpaFeaturesAMD',
 -- 'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT',
 -- 'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group_creation.PhysicalDeviceGroupProperties',
 -- 'Vulkan.Extensions.VK_HUAWEI_hdr_vivid.PhysicalDeviceHdrVividFeaturesHUAWEI',
--- 'Vulkan.Extensions.VK_EXT_host_image_copy.PhysicalDeviceHostImageCopyFeaturesEXT',
--- 'Vulkan.Extensions.VK_EXT_host_image_copy.PhysicalDeviceHostImageCopyPropertiesEXT',
+-- 'Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy.PhysicalDeviceHostImageCopyFeatures',
+-- 'Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy.PhysicalDeviceHostImageCopyProperties',
 -- '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_2d_view_of_3d.PhysicalDeviceImage2DViewOf3DFeaturesEXT',
@@ -550,30 +595,38 @@
 -- 'Vulkan.Extensions.VK_EXT_image_compression_control.PhysicalDeviceImageCompressionControlFeaturesEXT',
 -- 'Vulkan.Extensions.VK_EXT_image_compression_control_swapchain.PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT',
 -- 'Vulkan.Extensions.VK_QCOM_image_processing2.PhysicalDeviceImageProcessing2FeaturesQCOM',
+-- 'Vulkan.Extensions.VK_QCOM_image_processing3.PhysicalDeviceImageProcessing3FeaturesQCOM',
 -- 'Vulkan.Extensions.VK_QCOM_image_processing.PhysicalDeviceImageProcessingFeaturesQCOM',
 -- 'Vulkan.Core13.Promoted_From_VK_EXT_image_robustness.PhysicalDeviceImageRobustnessFeatures',
 -- 'Vulkan.Extensions.VK_EXT_image_sliced_view_of_3d.PhysicalDeviceImageSlicedViewOf3DFeaturesEXT',
 -- 'Vulkan.Extensions.VK_EXT_image_view_min_lod.PhysicalDeviceImageViewMinLodFeaturesEXT',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.PhysicalDeviceImagelessFramebufferFeatures',
--- 'Vulkan.Extensions.VK_KHR_index_type_uint8.PhysicalDeviceIndexTypeUint8FeaturesKHR',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_index_type_uint8.PhysicalDeviceIndexTypeUint8Features',
 -- 'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.PhysicalDeviceInheritedViewportScissorFeaturesNV',
 -- 'Vulkan.Core13.Promoted_From_VK_EXT_inline_uniform_block.PhysicalDeviceInlineUniformBlockFeatures',
+-- 'Vulkan.Extensions.VK_KHR_internally_synchronized_queues.PhysicalDeviceInternallySynchronizedQueuesFeaturesKHR',
 -- 'Vulkan.Extensions.VK_HUAWEI_invocation_mask.PhysicalDeviceInvocationMaskFeaturesHUAWEI',
 -- 'Vulkan.Extensions.VK_EXT_legacy_dithering.PhysicalDeviceLegacyDitheringFeaturesEXT',
 -- 'Vulkan.Extensions.VK_EXT_legacy_vertex_attributes.PhysicalDeviceLegacyVertexAttributesFeaturesEXT',
 -- 'Vulkan.Extensions.VK_EXT_legacy_vertex_attributes.PhysicalDeviceLegacyVertexAttributesPropertiesEXT',
 -- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits',
--- 'Vulkan.Extensions.VK_KHR_line_rasterization.PhysicalDeviceLineRasterizationFeaturesKHR',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_line_rasterization.PhysicalDeviceLineRasterizationFeatures',
 -- 'Vulkan.Extensions.VK_NV_linear_color_attachment.PhysicalDeviceLinearColorAttachmentFeaturesNV',
+-- 'Vulkan.Extensions.VK_KHR_maintenance10.PhysicalDeviceMaintenance10FeaturesKHR',
+-- 'Vulkan.Extensions.VK_KHR_maintenance10.PhysicalDeviceMaintenance10PropertiesKHR',
+-- 'Vulkan.Extensions.VK_KHR_maintenance11.PhysicalDeviceMaintenance11FeaturesKHR',
 -- 'Vulkan.Core13.Promoted_From_VK_KHR_maintenance4.PhysicalDeviceMaintenance4Features',
--- 'Vulkan.Extensions.VK_KHR_maintenance5.PhysicalDeviceMaintenance5FeaturesKHR',
--- 'Vulkan.Extensions.VK_KHR_maintenance5.PhysicalDeviceMaintenance5PropertiesKHR',
--- 'Vulkan.Extensions.VK_KHR_maintenance6.PhysicalDeviceMaintenance6FeaturesKHR',
--- 'Vulkan.Extensions.VK_KHR_maintenance6.PhysicalDeviceMaintenance6PropertiesKHR',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.PhysicalDeviceMaintenance5Features',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.PhysicalDeviceMaintenance5Properties',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance6.PhysicalDeviceMaintenance6Features',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance6.PhysicalDeviceMaintenance6Properties',
 -- 'Vulkan.Extensions.VK_KHR_maintenance7.PhysicalDeviceMaintenance7FeaturesKHR',
 -- 'Vulkan.Extensions.VK_KHR_maintenance7.PhysicalDeviceMaintenance7PropertiesKHR',
+-- 'Vulkan.Extensions.VK_KHR_maintenance8.PhysicalDeviceMaintenance8FeaturesKHR',
+-- 'Vulkan.Extensions.VK_KHR_maintenance9.PhysicalDeviceMaintenance9FeaturesKHR',
+-- 'Vulkan.Extensions.VK_KHR_maintenance9.PhysicalDeviceMaintenance9PropertiesKHR',
 -- 'Vulkan.Extensions.VK_EXT_map_memory_placed.PhysicalDeviceMapMemoryPlacedFeaturesEXT',
--- 'Vulkan.Extensions.VK_NV_memory_decompression.PhysicalDeviceMemoryDecompressionFeaturesNV',
+-- 'Vulkan.Extensions.VK_EXT_memory_decompression.PhysicalDeviceMemoryDecompressionFeaturesEXT',
 -- 'Vulkan.Extensions.VK_EXT_memory_priority.PhysicalDeviceMemoryPriorityFeaturesEXT',
 -- 'Vulkan.Extensions.VK_EXT_mesh_shader.PhysicalDeviceMeshShaderFeaturesEXT',
 -- 'Vulkan.Extensions.VK_NV_mesh_shader.PhysicalDeviceMeshShaderFeaturesNV',
@@ -588,25 +641,36 @@
 -- 'Vulkan.Extensions.VK_EXT_nested_command_buffer.PhysicalDeviceNestedCommandBufferFeaturesEXT',
 -- 'Vulkan.Extensions.VK_EXT_non_seamless_cube_map.PhysicalDeviceNonSeamlessCubeMapFeaturesEXT',
 -- 'Vulkan.Extensions.VK_EXT_opacity_micromap.PhysicalDeviceOpacityMicromapFeaturesEXT',
+-- 'Vulkan.Extensions.VK_KHR_opacity_micromap.PhysicalDeviceOpacityMicromapFeaturesKHR',
 -- 'Vulkan.Extensions.VK_NV_optical_flow.PhysicalDeviceOpticalFlowFeaturesNV',
 -- 'Vulkan.Extensions.VK_NV_optical_flow.PhysicalDeviceOpticalFlowPropertiesNV',
 -- 'Vulkan.Extensions.VK_EXT_pageable_device_local_memory.PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPhysicalDevicePartitionedAccelerationStructureFeaturesNV VkPhysicalDevicePartitionedAccelerationStructureFeaturesNV>,
 -- 'Vulkan.Extensions.VK_NV_per_stage_descriptor_set.PhysicalDevicePerStageDescriptorSetFeaturesNV',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPhysicalDevicePerformanceCountersByRegionFeaturesARM VkPhysicalDevicePerformanceCountersByRegionFeaturesARM>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPhysicalDevicePerformanceCountersByRegionPropertiesARM VkPhysicalDevicePerformanceCountersByRegionPropertiesARM>,
 -- 'Vulkan.Extensions.VK_KHR_performance_query.PhysicalDevicePerformanceQueryFeaturesKHR',
 -- 'Vulkan.Extensions.VK_KHR_performance_query.PhysicalDevicePerformanceQueryPropertiesKHR',
 -- 'Vulkan.Extensions.VK_KHR_pipeline_binary.PhysicalDevicePipelineBinaryFeaturesKHR',
 -- 'Vulkan.Extensions.VK_KHR_pipeline_binary.PhysicalDevicePipelineBinaryPropertiesKHR',
+-- 'Vulkan.Extensions.VK_SEC_pipeline_cache_incremental_mode.PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC',
 -- 'Vulkan.Core13.Promoted_From_VK_EXT_pipeline_creation_cache_control.PhysicalDevicePipelineCreationCacheControlFeatures',
 -- 'Vulkan.Extensions.VK_KHR_pipeline_executable_properties.PhysicalDevicePipelineExecutablePropertiesFeaturesKHR',
 -- 'Vulkan.Extensions.VK_EXT_pipeline_library_group_handles.PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT',
+-- 'Vulkan.Extensions.VK_ARM_pipeline_opacity_micromap.PhysicalDevicePipelineOpacityMicromapFeaturesARM',
 -- 'Vulkan.Extensions.VK_EXT_pipeline_properties.PhysicalDevicePipelinePropertiesFeaturesEXT',
--- 'Vulkan.Extensions.VK_EXT_pipeline_protected_access.PhysicalDevicePipelineProtectedAccessFeaturesEXT',
--- 'Vulkan.Extensions.VK_EXT_pipeline_robustness.PhysicalDevicePipelineRobustnessFeaturesEXT',
+-- 'Vulkan.Core14.Promoted_From_VK_EXT_pipeline_protected_access.PhysicalDevicePipelineProtectedAccessFeatures',
+-- 'Vulkan.Core14.Promoted_From_VK_EXT_pipeline_robustness.PhysicalDevicePipelineRobustnessFeatures',
 -- 'Vulkan.Extensions.VK_KHR_portability_subset.PhysicalDevicePortabilitySubsetFeaturesKHR',
 -- 'Vulkan.Extensions.VK_NV_present_barrier.PhysicalDevicePresentBarrierFeaturesNV',
+-- 'Vulkan.Extensions.VK_KHR_present_id2.PhysicalDevicePresentId2FeaturesKHR',
 -- 'Vulkan.Extensions.VK_KHR_present_id.PhysicalDevicePresentIdFeaturesKHR',
--- 'Vulkan.Extensions.VK_EXT_present_mode_fifo_latest_ready.PhysicalDevicePresentModeFifoLatestReadyFeaturesEXT',
+-- 'Vulkan.Extensions.VK_NV_present_metering.PhysicalDevicePresentMeteringFeaturesNV',
+-- 'Vulkan.Extensions.VK_KHR_present_mode_fifo_latest_ready.PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR',
+-- 'Vulkan.Extensions.VK_EXT_present_timing.PhysicalDevicePresentTimingFeaturesEXT',
+-- 'Vulkan.Extensions.VK_KHR_present_wait2.PhysicalDevicePresentWait2FeaturesKHR',
 -- 'Vulkan.Extensions.VK_KHR_present_wait.PhysicalDevicePresentWaitFeaturesKHR',
+-- 'Vulkan.Extensions.VK_EXT_primitive_restart_index.PhysicalDevicePrimitiveRestartIndexFeaturesEXT',
 -- 'Vulkan.Extensions.VK_EXT_primitive_topology_list_restart.PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT',
 -- 'Vulkan.Extensions.VK_EXT_primitives_generated_query.PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT',
 -- 'Vulkan.Core13.Promoted_From_VK_EXT_private_data.PhysicalDevicePrivateDataFeatures',
@@ -614,11 +678,15 @@
 -- 'Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory.PhysicalDeviceProtectedMemoryProperties',
 -- 'Vulkan.Extensions.VK_EXT_provoking_vertex.PhysicalDeviceProvokingVertexFeaturesEXT',
 -- 'Vulkan.Extensions.VK_EXT_provoking_vertex.PhysicalDeviceProvokingVertexPropertiesEXT',
+-- 'Vulkan.Extensions.VK_NV_push_constant_bank.PhysicalDevicePushConstantBankFeaturesNV',
+-- 'Vulkan.Extensions.VK_QCOM_queue_perf_hint.PhysicalDeviceQueuePerfHintFeaturesQCOM',
 -- 'Vulkan.Extensions.VK_EXT_rgba10x6_formats.PhysicalDeviceRGBA10X6FormatsFeaturesEXT',
 -- 'Vulkan.Extensions.VK_EXT_rasterization_order_attachment_access.PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT',
 -- 'Vulkan.Extensions.VK_NV_raw_access_chains.PhysicalDeviceRawAccessChainsFeaturesNV',
 -- 'Vulkan.Extensions.VK_KHR_ray_query.PhysicalDeviceRayQueryFeaturesKHR',
+-- 'Vulkan.Extensions.VK_EXT_ray_tracing_invocation_reorder.PhysicalDeviceRayTracingInvocationReorderFeaturesEXT',
 -- 'Vulkan.Extensions.VK_NV_ray_tracing_invocation_reorder.PhysicalDeviceRayTracingInvocationReorderFeaturesNV',
+-- 'Vulkan.Extensions.VK_NV_ray_tracing_linear_swept_spheres.PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV',
 -- 'Vulkan.Extensions.VK_KHR_ray_tracing_maintenance1.PhysicalDeviceRayTracingMaintenance1FeaturesKHR',
 -- 'Vulkan.Extensions.VK_NV_ray_tracing_motion_blur.PhysicalDeviceRayTracingMotionBlurFeaturesNV',
 -- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.PhysicalDeviceRayTracingPipelineFeaturesKHR',
@@ -627,102 +695,137 @@
 -- 'Vulkan.Extensions.VK_IMG_relaxed_line_rasterization.PhysicalDeviceRelaxedLineRasterizationFeaturesIMG',
 -- 'Vulkan.Extensions.VK_ARM_render_pass_striped.PhysicalDeviceRenderPassStripedFeaturesARM',
 -- 'Vulkan.Extensions.VK_NV_representative_fragment_test.PhysicalDeviceRepresentativeFragmentTestFeaturesNV',
--- 'Vulkan.Extensions.VK_EXT_robustness2.PhysicalDeviceRobustness2FeaturesEXT',
+-- 'Vulkan.Extensions.VK_KHR_robustness2.PhysicalDeviceRobustness2FeaturesKHR',
 -- 'Vulkan.Extensions.VK_EXT_sample_locations.PhysicalDeviceSampleLocationsPropertiesEXT',
 -- 'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.PhysicalDeviceSamplerFilterMinmaxProperties',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.PhysicalDeviceSamplerYcbcrConversionFeatures',
 -- 'Vulkan.Core12.Promoted_From_VK_EXT_scalar_block_layout.PhysicalDeviceScalarBlockLayoutFeatures',
 -- 'Vulkan.Extensions.VK_ARM_scheduling_controls.PhysicalDeviceSchedulingControlsFeaturesARM',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts.PhysicalDeviceSeparateDepthStencilLayoutsFeatures',
+-- 'Vulkan.Extensions.VK_EXT_shader_64bit_indexing.PhysicalDeviceShader64BitIndexingFeaturesEXT',
+-- 'Vulkan.Extensions.VK_KHR_shader_abort.PhysicalDeviceShaderAbortFeaturesKHR',
 -- 'Vulkan.Extensions.VK_NV_shader_atomic_float16_vector.PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV',
 -- 'Vulkan.Extensions.VK_EXT_shader_atomic_float2.PhysicalDeviceShaderAtomicFloat2FeaturesEXT',
 -- 'Vulkan.Extensions.VK_EXT_shader_atomic_float.PhysicalDeviceShaderAtomicFloatFeaturesEXT',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_shader_atomic_int64.PhysicalDeviceShaderAtomicInt64Features',
+-- 'Vulkan.Extensions.VK_KHR_shader_bfloat16.PhysicalDeviceShaderBfloat16FeaturesKHR',
 -- 'Vulkan.Extensions.VK_KHR_shader_clock.PhysicalDeviceShaderClockFeaturesKHR',
+-- 'Vulkan.Extensions.VK_KHR_shader_constant_data.PhysicalDeviceShaderConstantDataFeaturesKHR',
 -- 'Vulkan.Extensions.VK_ARM_shader_core_builtins.PhysicalDeviceShaderCoreBuiltinsFeaturesARM',
 -- 'Vulkan.Core13.Promoted_From_VK_EXT_shader_demote_to_helper_invocation.PhysicalDeviceShaderDemoteToHelperInvocationFeatures',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_shader_draw_parameters.PhysicalDeviceShaderDrawParametersFeatures',
 -- 'Vulkan.Extensions.VK_AMD_shader_early_and_late_fragment_tests.PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD',
 -- 'Vulkan.Extensions.VK_AMDX_shader_enqueue.PhysicalDeviceShaderEnqueueFeaturesAMDX',
--- 'Vulkan.Extensions.VK_KHR_shader_expect_assume.PhysicalDeviceShaderExpectAssumeFeaturesKHR',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_shader_expect_assume.PhysicalDeviceShaderExpectAssumeFeatures',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_shader_float16_int8.PhysicalDeviceShaderFloat16Int8Features',
--- 'Vulkan.Extensions.VK_KHR_shader_float_controls2.PhysicalDeviceShaderFloatControls2FeaturesKHR',
+-- 'Vulkan.Extensions.VK_EXT_shader_float8.PhysicalDeviceShaderFloat8FeaturesEXT',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_shader_float_controls2.PhysicalDeviceShaderFloatControls2Features',
+-- 'Vulkan.Extensions.VK_KHR_shader_fma.PhysicalDeviceShaderFmaFeaturesKHR',
 -- 'Vulkan.Extensions.VK_EXT_shader_image_atomic_int64.PhysicalDeviceShaderImageAtomicInt64FeaturesEXT',
 -- 'Vulkan.Extensions.VK_NV_shader_image_footprint.PhysicalDeviceShaderImageFootprintFeaturesNV',
+-- 'Vulkan.Extensions.VK_ARM_shader_instrumentation.PhysicalDeviceShaderInstrumentationFeaturesARM',
+-- 'Vulkan.Extensions.VK_ARM_shader_instrumentation.PhysicalDeviceShaderInstrumentationPropertiesARM',
 -- '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_EXT_shader_long_vector.PhysicalDeviceShaderLongVectorFeaturesEXT',
 -- 'Vulkan.Extensions.VK_KHR_shader_maximal_reconvergence.PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR',
+-- 'Vulkan.Extensions.VK_VALVE_shader_mixed_float_dot_product.PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE',
 -- 'Vulkan.Extensions.VK_EXT_shader_module_identifier.PhysicalDeviceShaderModuleIdentifierFeaturesEXT',
+-- 'Vulkan.Extensions.VK_QCOM_shader_multiple_wait_queues.PhysicalDeviceShaderMultipleWaitQueuesFeaturesQCOM',
 -- 'Vulkan.Extensions.VK_EXT_shader_object.PhysicalDeviceShaderObjectFeaturesEXT',
 -- 'Vulkan.Extensions.VK_KHR_shader_quad_control.PhysicalDeviceShaderQuadControlFeaturesKHR',
 -- 'Vulkan.Extensions.VK_KHR_shader_relaxed_extended_instruction.PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR',
 -- 'Vulkan.Extensions.VK_EXT_shader_replicated_composites.PhysicalDeviceShaderReplicatedCompositesFeaturesEXT',
 -- 'Vulkan.Extensions.VK_NV_shader_sm_builtins.PhysicalDeviceShaderSMBuiltinsFeaturesNV',
+-- 'Vulkan.Extensions.VK_EXT_shader_split_barrier.PhysicalDeviceShaderSplitBarrierFeaturesEXT',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_shader_subgroup_extended_types.PhysicalDeviceShaderSubgroupExtendedTypesFeatures',
--- 'Vulkan.Extensions.VK_KHR_shader_subgroup_rotate.PhysicalDeviceShaderSubgroupRotateFeaturesKHR',
+-- 'Vulkan.Extensions.VK_EXT_shader_subgroup_partitioned.PhysicalDeviceShaderSubgroupPartitionedFeaturesEXT',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_shader_subgroup_rotate.PhysicalDeviceShaderSubgroupRotateFeatures',
 -- 'Vulkan.Extensions.VK_KHR_shader_subgroup_uniform_control_flow.PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR',
 -- 'Vulkan.Core13.Promoted_From_VK_KHR_shader_terminate_invocation.PhysicalDeviceShaderTerminateInvocationFeatures',
 -- 'Vulkan.Extensions.VK_EXT_shader_tile_image.PhysicalDeviceShaderTileImageFeaturesEXT',
 -- 'Vulkan.Extensions.VK_EXT_shader_tile_image.PhysicalDeviceShaderTileImagePropertiesEXT',
+-- 'Vulkan.Extensions.VK_EXT_shader_uniform_buffer_unsized_array.PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT',
+-- 'Vulkan.Extensions.VK_KHR_shader_untyped_pointers.PhysicalDeviceShaderUntypedPointersFeaturesKHR',
 -- 'Vulkan.Extensions.VK_NV_shading_rate_image.PhysicalDeviceShadingRateImageFeaturesNV',
 -- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceSparseProperties',
 -- 'Vulkan.Core11.Originally_Based_On_VK_KHR_subgroup.PhysicalDeviceSubgroupProperties',
 -- 'Vulkan.Core13.Promoted_From_VK_EXT_subgroup_size_control.PhysicalDeviceSubgroupSizeControlFeatures',
 -- 'Vulkan.Extensions.VK_EXT_subpass_merge_feedback.PhysicalDeviceSubpassMergeFeedbackFeaturesEXT',
 -- 'Vulkan.Extensions.VK_HUAWEI_subpass_shading.PhysicalDeviceSubpassShadingFeaturesHUAWEI',
--- 'Vulkan.Extensions.VK_EXT_swapchain_maintenance1.PhysicalDeviceSwapchainMaintenance1FeaturesEXT',
+-- 'Vulkan.Extensions.VK_KHR_swapchain_maintenance1.PhysicalDeviceSwapchainMaintenance1FeaturesKHR',
 -- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.PhysicalDeviceSynchronization2Features',
+-- 'Vulkan.Extensions.VK_ARM_tensors.PhysicalDeviceTensorFeaturesARM',
+-- 'Vulkan.Extensions.VK_ARM_tensors.PhysicalDeviceTensorPropertiesARM',
 -- 'Vulkan.Extensions.VK_EXT_texel_buffer_alignment.PhysicalDeviceTexelBufferAlignmentFeaturesEXT',
 -- 'Vulkan.Core13.Promoted_From_VK_EXT_texel_buffer_alignment.PhysicalDeviceTexelBufferAlignmentProperties',
+-- 'Vulkan.Extensions.VK_EXT_texture_compression_astc_3d.PhysicalDeviceTextureCompressionASTC3DFeaturesEXT',
 -- 'Vulkan.Core13.Promoted_From_VK_EXT_texture_compression_astc_hdr.PhysicalDeviceTextureCompressionASTCHDRFeatures',
+-- 'Vulkan.Extensions.VK_SEC_throttle_hint.PhysicalDeviceThrottleHintFeaturesSEC',
+-- 'Vulkan.Extensions.VK_QCOM_tile_memory_heap.PhysicalDeviceTileMemoryHeapFeaturesQCOM',
+-- 'Vulkan.Extensions.VK_QCOM_tile_memory_heap.PhysicalDeviceTileMemoryHeapPropertiesQCOM',
 -- 'Vulkan.Extensions.VK_QCOM_tile_properties.PhysicalDeviceTilePropertiesFeaturesQCOM',
+-- 'Vulkan.Extensions.VK_QCOM_tile_shading.PhysicalDeviceTileShadingFeaturesQCOM',
+-- 'Vulkan.Extensions.VK_QCOM_tile_shading.PhysicalDeviceTileShadingPropertiesQCOM',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.PhysicalDeviceTimelineSemaphoreFeatures',
 -- 'Vulkan.Extensions.VK_EXT_transform_feedback.PhysicalDeviceTransformFeedbackFeaturesEXT',
 -- 'Vulkan.Extensions.VK_EXT_transform_feedback.PhysicalDeviceTransformFeedbackPropertiesEXT',
+-- 'Vulkan.Extensions.VK_KHR_unified_image_layouts.PhysicalDeviceUnifiedImageLayoutsFeaturesKHR',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_uniform_buffer_standard_layout.PhysicalDeviceUniformBufferStandardLayoutFeatures',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_variable_pointers.PhysicalDeviceVariablePointersFeatures',
--- 'Vulkan.Extensions.VK_KHR_vertex_attribute_divisor.PhysicalDeviceVertexAttributeDivisorFeaturesKHR',
--- 'Vulkan.Extensions.VK_KHR_vertex_attribute_divisor.PhysicalDeviceVertexAttributeDivisorPropertiesKHR',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_vertex_attribute_divisor.PhysicalDeviceVertexAttributeDivisorFeatures',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_vertex_attribute_divisor.PhysicalDeviceVertexAttributeDivisorProperties',
 -- 'Vulkan.Extensions.VK_EXT_vertex_attribute_robustness.PhysicalDeviceVertexAttributeRobustnessFeaturesEXT',
 -- 'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.PhysicalDeviceVertexInputDynamicStateFeaturesEXT',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPhysicalDeviceVideoDecodeVP9FeaturesKHR VkPhysicalDeviceVideoDecodeVP9FeaturesKHR>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPhysicalDeviceVideoEncodeAV1FeaturesKHR VkPhysicalDeviceVideoEncodeAV1FeaturesKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR VkPhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE VkPhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPhysicalDeviceVideoMaintenance1FeaturesKHR VkPhysicalDeviceVideoMaintenance1FeaturesKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPhysicalDeviceVideoMaintenance2FeaturesKHR VkPhysicalDeviceVideoMaintenance2FeaturesKHR>,
 -- 'Vulkan.Core12.PhysicalDeviceVulkan11Features',
 -- 'Vulkan.Core12.PhysicalDeviceVulkan11Properties',
 -- 'Vulkan.Core12.PhysicalDeviceVulkan12Features',
 -- 'Vulkan.Core12.PhysicalDeviceVulkan12Properties',
 -- 'Vulkan.Core13.PhysicalDeviceVulkan13Features',
 -- 'Vulkan.Core13.PhysicalDeviceVulkan13Properties',
+-- 'Vulkan.Core14.PhysicalDeviceVulkan14Features',
+-- 'Vulkan.Core14.PhysicalDeviceVulkan14Properties',
 -- '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_QCOM_ycbcr_degamma.PhysicalDeviceYcbcrDegammaFeaturesQCOM',
 -- 'Vulkan.Extensions.VK_EXT_ycbcr_image_arrays.PhysicalDeviceYcbcrImageArraysFeaturesEXT',
+-- 'Vulkan.Extensions.VK_EXT_zero_initialize_device_memory.PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT',
 -- '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',
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineColorBlendAttachmentState',
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineColorBlendStateCreateInfo',
 -- 'Vulkan.Extensions.VK_EXT_color_write_enable.PipelineColorWriteCreateInfoEXT',
 -- 'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.PipelineCoverageModulationStateCreateInfoNV',
 -- 'Vulkan.Extensions.VK_NV_fragment_coverage_to_color.PipelineCoverageToColorStateCreateInfoNV',
--- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo',
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDepthStencilStateCreateInfo',
 -- 'Vulkan.Extensions.VK_KHR_pipeline_executable_properties.PipelineExecutableInternalRepresentationKHR',
 -- 'Vulkan.Extensions.VK_KHR_pipeline_executable_properties.PipelineExecutableStatisticValueKHR',
--- 'Vulkan.Core10.Pipeline.PipelineInputAssemblyStateCreateInfo',
--- 'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo',
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineInputAssemblyStateCreateInfo',
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineMultisampleStateCreateInfo',
 -- 'Vulkan.Extensions.VK_EXT_depth_clip_enable.PipelineRasterizationDepthClipStateCreateInfoEXT',
--- 'Vulkan.Extensions.VK_KHR_line_rasterization.PipelineRasterizationLineStateCreateInfoKHR',
--- 'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_line_rasterization.PipelineRasterizationLineStateCreateInfo',
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineRasterizationStateCreateInfo',
 -- 'Vulkan.Extensions.VK_NV_representative_fragment_test.PipelineRepresentativeFragmentTestStateCreateInfoNV',
 -- 'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT',
 -- 'Vulkan.Extensions.VK_EXT_depth_clip_control.PipelineViewportDepthClipControlCreateInfoEXT',
 -- 'Vulkan.Extensions.VK_NV_shading_rate_image.PipelineViewportShadingRateImageStateCreateInfoNV',
 -- 'Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV',
+-- 'Vulkan.Extensions.VK_EXT_present_timing.PresentTimingSurfaceCapabilitiesEXT',
 -- 'Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory.ProtectedSubmitInfo',
+-- 'Vulkan.Extensions.VK_ARM_data_graph_optical_flow.QueueFamilyDataGraphOpticalFlowPropertiesARM',
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFamilyQueryResultStatusPropertiesKHR VkQueueFamilyQueryResultStatusPropertiesKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkRayTracingPipelineClusterAccelerationStructureCreateInfoNV VkRayTracingPipelineClusterAccelerationStructureCreateInfoNV>,
 -- 'Vulkan.Extensions.VK_EXT_subpass_merge_feedback.RenderPassCreationControlEXT',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkRenderPassPerformanceCountersByRegionBeginInfoARM VkRenderPassPerformanceCountersByRegionBeginInfoARM>,
 -- 'Vulkan.Extensions.VK_EXT_border_color_swizzle.SamplerBorderColorComponentMappingCreateInfoEXT',
 -- 'Vulkan.Core10.Sampler.SamplerCreateInfo',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionCreateInfo',
@@ -730,6 +833,8 @@
 -- 'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.SubpassResolvePerformanceQueryEXT',
 -- 'Vulkan.Extensions.VK_EXT_full_screen_exclusive.SurfaceCapabilitiesFullScreenExclusiveEXT',
 -- 'Vulkan.Extensions.VK_NV_present_barrier.SurfaceCapabilitiesPresentBarrierNV',
+-- 'Vulkan.Extensions.VK_KHR_present_id2.SurfaceCapabilitiesPresentId2KHR',
+-- 'Vulkan.Extensions.VK_KHR_present_wait2.SurfaceCapabilitiesPresentWait2KHR',
 -- 'Vulkan.Extensions.VK_KHR_surface_protected_capabilities.SurfaceProtectedCapabilitiesKHR',
 -- 'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR',
 -- 'Vulkan.Extensions.VK_AMD_display_native_hdr.SwapchainDisplayNativeHdrCreateInfoAMD',
@@ -756,6 +861,8 @@
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH265SessionCreateInfoKHR VkVideoEncodeH265SessionCreateInfoKHR>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH265SessionParametersFeedbackInfoKHR VkVideoEncodeH265SessionParametersFeedbackInfoKHR>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH265SessionParametersGetInfoKHR VkVideoEncodeH265SessionParametersGetInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeIntraRefreshCapabilitiesKHR VkVideoEncodeIntraRefreshCapabilitiesKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeProfileRgbConversionInfoVALVE VkVideoEncodeProfileRgbConversionInfoVALVE>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeSessionParametersFeedbackInfoKHR VkVideoEncodeSessionParametersFeedbackInfoKHR>,
 -- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdBuildAccelerationStructureNV',
 -- 'Vulkan.Extensions.VK_EXT_device_generated_commands.cmdExecuteGeneratedCommandsEXT',
@@ -767,31 +874,32 @@
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV',
 -- '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_state2.cmdSetDepthBiasEnable',
 -- '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.cmdSetDepthBoundsTestEnable',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClampEnableEXT',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipEnableEXT',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipNegativeOneToOneEXT',
 -- '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.cmdSetDepthTestEnable',
 -- '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_state.cmdSetDepthWriteEnable',
 -- 'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEnableEXT',
 -- 'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorEnableNV',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLogicOpEnableEXT',
 -- '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.cmdSetPrimitiveRestartEnable',
 -- '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_state2.cmdSetRasterizerDiscardEnable',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRepresentativeFragmentTestEnableNV',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetShadingRateImageEnableNV',
 -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilTestEnable',
--- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetStencilTestEnableEXT',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilTestEnable',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportWScalingEnableNV',
 -- 'Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceSupportKHR',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_heap.registerCustomBorderColorEXT',
 -- 'Vulkan.Extensions.VK_AMD_display_native_hdr.setLocalDimmingAMD',
 -- 'Vulkan.Core10.Fence.waitForFences'
 newtype Bool32 = Bool32 Int32
@@ -840,7 +948,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.Core10.Pipeline.PipelineMultisampleStateCreateInfo',
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineMultisampleStateCreateInfo',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
 type SampleMask = Word32
 
@@ -859,7 +967,7 @@
 -- the bitwise OR of valid bit flags.
 --
 -- An individual bit flag is valid for a 'Flags' type if it would be a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#fundamentals-validusage-enums valid enumerant>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#fundamentals-validusage-enums valid enumerant>
 -- when used with the equivalent @Vk*FlagBits@ type, where the bits type is
 -- obtained by taking the flag type and replacing the trailing 'Flags' with
 -- @FlagBits@. For example, a flag value of type
@@ -888,6 +996,8 @@
 -- 'Vulkan.Extensions.VK_NV_ray_tracing_motion_blur.AccelerationStructureMotionInstanceFlagsNV',
 -- 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlags',
 -- 'Vulkan.Extensions.VK_KHR_performance_query.AcquireProfilingLockFlagsKHR',
+-- 'Vulkan.Extensions.VK_KHR_device_address_commands.AddressCommandFlagsKHR',
+-- 'Vulkan.Extensions.VK_KHR_copy_memory_indirect.AddressCopyFlagsKHR',
 -- 'Vulkan.Extensions.VK_KHR_android_surface.AndroidSurfaceCreateFlagsKHR',
 -- 'Vulkan.Core10.Enums.AttachmentDescriptionFlagBits.AttachmentDescriptionFlags',
 -- 'Vulkan.Core10.Enums.BufferCreateFlagBits.BufferCreateFlags',
@@ -895,6 +1005,10 @@
 -- 'Vulkan.Core10.Enums.BufferViewCreateFlags.BufferViewCreateFlags',
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.BuildAccelerationStructureFlagsKHR',
 -- 'Vulkan.Extensions.VK_EXT_opacity_micromap.BuildMicromapFlagsEXT',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkClusterAccelerationStructureAddressResolutionFlagsNV VkClusterAccelerationStructureAddressResolutionFlagsNV>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkClusterAccelerationStructureClusterFlagsNV VkClusterAccelerationStructureClusterFlagsNV>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkClusterAccelerationStructureGeometryFlagsNV VkClusterAccelerationStructureGeometryFlagsNV>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkClusterAccelerationStructureIndexFormatFlagsNV VkClusterAccelerationStructureIndexFormatFlagsNV>,
 -- 'Vulkan.Core10.Enums.ColorComponentFlagBits.ColorComponentFlags',
 -- 'Vulkan.Core10.Enums.CommandBufferResetFlagBits.CommandBufferResetFlags',
 -- 'Vulkan.Core10.Enums.CommandBufferUsageFlagBits.CommandBufferUsageFlags',
@@ -904,6 +1018,11 @@
 -- 'Vulkan.Extensions.VK_KHR_surface.CompositeAlphaFlagsKHR',
 -- 'Vulkan.Extensions.VK_EXT_conditional_rendering.ConditionalRenderingFlagsEXT',
 -- 'Vulkan.Core10.Enums.CullModeFlagBits.CullModeFlags',
+-- 'Vulkan.Extensions.VK_ARM_data_graph_optical_flow.DataGraphOpticalFlowCreateFlagsARM',
+-- 'Vulkan.Extensions.VK_ARM_data_graph_optical_flow.DataGraphOpticalFlowExecuteFlagsARM',
+-- 'Vulkan.Extensions.VK_ARM_data_graph_optical_flow.DataGraphOpticalFlowGridSizeFlagsARM',
+-- 'Vulkan.Extensions.VK_ARM_data_graph_optical_flow.DataGraphOpticalFlowImageUsageFlagsARM',
+-- 'Vulkan.Extensions.VK_ARM_data_graph_instruction_set_tosa.DataGraphTOSAQualityFlagsARM',
 -- 'Vulkan.Extensions.VK_EXT_debug_report.DebugReportFlagsEXT',
 -- 'Vulkan.Extensions.VK_EXT_debug_utils.DebugUtilsMessageSeverityFlagsEXT',
 -- 'Vulkan.Extensions.VK_EXT_debug_utils.DebugUtilsMessageTypeFlagsEXT',
@@ -918,6 +1037,7 @@
 -- 'Vulkan.Extensions.VK_EXT_device_address_binding_report.DeviceAddressBindingFlagsEXT',
 -- 'Vulkan.Core10.Enums.DeviceCreateFlags.DeviceCreateFlags',
 -- 'Vulkan.Extensions.VK_NV_device_diagnostics_config.DeviceDiagnosticsConfigFlagsNV',
+-- 'Vulkan.Extensions.VK_KHR_device_fault.DeviceFaultFlagsKHR',
 -- 'Vulkan.Extensions.VK_KHR_swapchain.DeviceGroupPresentModeFlagsKHR',
 -- 'Vulkan.Extensions.VK_EXT_device_memory_report.DeviceMemoryReportFlagsEXT',
 -- 'Vulkan.Core10.Enums.DeviceQueueCreateFlagBits.DeviceQueueCreateFlags',
@@ -943,9 +1063,11 @@
 -- 'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FramebufferCreateFlags',
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.GeometryFlagsKHR',
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.GeometryInstanceFlagsKHR',
+-- 'Vulkan.Extensions.VK_AMD_gpa_interface.GpaPerfBlockPropertiesFlagsAMD',
+-- 'Vulkan.Extensions.VK_AMD_gpa_interface.GpaSqShaderStageFlagsAMD',
 -- 'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryFlagsEXT',
 -- 'Vulkan.Extensions.VK_EXT_headless_surface.HeadlessSurfaceCreateFlagsEXT',
--- 'Vulkan.Extensions.VK_EXT_host_image_copy.HostImageCopyFlagsEXT',
+-- 'Vulkan.Core14.Enums.HostImageCopyFlagBits.HostImageCopyFlags',
 -- 'Vulkan.Extensions.VK_MVK_ios_surface.IOSSurfaceCreateFlagsMVK',
 -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlags',
 -- 'Vulkan.Extensions.VK_EXT_image_compression_control.ImageCompressionFixedRateFlagsEXT',
@@ -966,15 +1088,19 @@
 -- 'Vulkan.Core10.Enums.MemoryHeapFlagBits.MemoryHeapFlags',
 -- 'Vulkan.Core10.Enums.MemoryMapFlagBits.MemoryMapFlags',
 -- 'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MemoryPropertyFlags',
--- 'Vulkan.Extensions.VK_KHR_map_memory2.MemoryUnmapFlagsKHR',
+-- 'Vulkan.Core14.Enums.MemoryUnmapFlagBits.MemoryUnmapFlags',
 -- 'Vulkan.Extensions.VK_EXT_metal_surface.MetalSurfaceCreateFlagsEXT',
 -- 'Vulkan.Extensions.VK_EXT_opacity_micromap.MicromapCreateFlagsEXT',
 -- 'Vulkan.Extensions.VK_NV_optical_flow.OpticalFlowExecuteFlagsNV',
 -- 'Vulkan.Extensions.VK_NV_optical_flow.OpticalFlowGridSizeFlagsNV',
 -- 'Vulkan.Extensions.VK_NV_optical_flow.OpticalFlowSessionCreateFlagsNV',
 -- 'Vulkan.Extensions.VK_NV_optical_flow.OpticalFlowUsageFlagsNV',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPartitionedAccelerationStructureInstanceFlagsNV VkPartitionedAccelerationStructureInstanceFlagsNV>,
+-- 'Vulkan.Extensions.VK_EXT_present_timing.PastPresentationTimingFlagsEXT',
 -- 'Vulkan.Core11.Enums.PeerMemoryFeatureFlagBits.PeerMemoryFeatureFlags',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPerformanceCounterDescriptionFlagsARM VkPerformanceCounterDescriptionFlagsARM>,
 -- 'Vulkan.Extensions.VK_KHR_performance_query.PerformanceCounterDescriptionFlagsKHR',
+-- 'Vulkan.Extensions.VK_AMD_gpa_interface.PhysicalDeviceGpaPropertiesFlagsAMD',
 -- 'Vulkan.Core10.Enums.PipelineCacheCreateFlagBits.PipelineCacheCreateFlags',
 -- 'Vulkan.Core10.Enums.PipelineColorBlendStateCreateFlagBits.PipelineColorBlendStateCreateFlags',
 -- 'Vulkan.Extensions.VK_AMD_pipeline_compiler_control.PipelineCompilerControlFlagsAMD',
@@ -999,16 +1125,20 @@
 -- 'Vulkan.Core10.Enums.PipelineVertexInputStateCreateFlags.PipelineVertexInputStateCreateFlags',
 -- 'Vulkan.Core10.Enums.PipelineViewportStateCreateFlags.PipelineViewportStateCreateFlags',
 -- 'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateFlagsNV',
--- 'Vulkan.Extensions.VK_EXT_surface_maintenance1.PresentGravityFlagsEXT',
--- 'Vulkan.Extensions.VK_EXT_surface_maintenance1.PresentScalingFlagsEXT',
+-- 'Vulkan.Extensions.VK_KHR_surface_maintenance1.PresentGravityFlagsKHR',
+-- 'Vulkan.Extensions.VK_KHR_surface_maintenance1.PresentScalingFlagsKHR',
+-- 'Vulkan.Extensions.VK_EXT_present_timing.PresentStageFlagsEXT',
+-- 'Vulkan.Extensions.VK_EXT_present_timing.PresentTimingInfoFlagsEXT',
 -- 'Vulkan.Core13.Enums.PrivateDataSlotCreateFlags.PrivateDataSlotCreateFlags',
 -- 'Vulkan.Core10.Enums.QueryControlFlagBits.QueryControlFlags',
 -- 'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QueryPipelineStatisticFlags',
--- 'Vulkan.Core10.Enums.QueryPoolCreateFlags.QueryPoolCreateFlags',
+-- 'Vulkan.Core10.Enums.QueryPoolCreateFlagBits.QueryPoolCreateFlags',
 -- 'Vulkan.Core10.Enums.QueryResultFlagBits.QueryResultFlags',
 -- 'Vulkan.Core10.Enums.QueueFlagBits.QueueFlags',
 -- 'Vulkan.Core10.Enums.RenderPassCreateFlagBits.RenderPassCreateFlags',
+-- 'Vulkan.Extensions.VK_KHR_maintenance10.RenderingAttachmentFlagsKHR',
 -- 'Vulkan.Core13.Enums.RenderingFlagBits.RenderingFlags',
+-- 'Vulkan.Extensions.VK_KHR_maintenance10.ResolveImageFlagsKHR',
 -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.ResolveModeFlags',
 -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlags',
 -- 'Vulkan.Core10.Enums.SamplerCreateFlagBits.SamplerCreateFlags',
@@ -1018,19 +1148,24 @@
 -- 'Vulkan.Core12.Enums.SemaphoreWaitFlagBits.SemaphoreWaitFlags',
 -- 'Vulkan.Extensions.VK_AMD_shader_core_properties2.ShaderCorePropertiesFlagsAMD',
 -- 'Vulkan.Extensions.VK_EXT_shader_object.ShaderCreateFlagsEXT',
+-- 'Vulkan.Extensions.VK_ARM_shader_instrumentation.ShaderInstrumentationValuesFlagsARM',
 -- 'Vulkan.Core10.Enums.ShaderModuleCreateFlags.ShaderModuleCreateFlags',
 -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlags',
 -- 'Vulkan.Core10.Enums.SparseImageFormatFlagBits.SparseImageFormatFlags',
 -- 'Vulkan.Core10.Enums.SparseMemoryBindFlagBits.SparseMemoryBindFlags',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_heap.SpirvResourceTypeFlagsEXT',
 -- 'Vulkan.Core10.Enums.StencilFaceFlagBits.StencilFaceFlags',
 -- 'Vulkan.Extensions.VK_GGP_stream_descriptor_surface.StreamDescriptorSurfaceCreateFlagsGGP',
 -- 'Vulkan.Core11.Enums.SubgroupFeatureFlagBits.SubgroupFeatureFlags',
 -- 'Vulkan.Core13.Enums.SubmitFlagBits.SubmitFlags',
 -- 'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SubpassDescriptionFlags',
 -- 'Vulkan.Extensions.VK_EXT_display_surface_counter.SurfaceCounterFlagsEXT',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkSurfaceCreateFlagsOHOS VkSurfaceCreateFlagsOHOS>,
 -- 'Vulkan.Extensions.VK_KHR_surface.SurfaceTransformFlagsKHR',
 -- 'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateFlagsKHR',
+-- 'Vulkan.Extensions.VK_QCOM_tile_shading.TileShadingRenderPassFlagsQCOM',
 -- 'Vulkan.Core13.Enums.ToolPurposeFlagBits.ToolPurposeFlags',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkUbmSurfaceCreateFlagsSEC VkUbmSurfaceCreateFlagsSEC>,
 -- 'Vulkan.Extensions.VK_EXT_validation_cache.ValidationCacheCreateFlagsEXT',
 -- 'Vulkan.Extensions.VK_NN_vi_surface.ViSurfaceCreateFlagsNN',
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoBeginCodingFlagsKHR VkVideoBeginCodingFlagsKHR>,
@@ -1059,8 +1194,12 @@
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH265RateControlFlagsKHR VkVideoEncodeH265RateControlFlagsKHR>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH265StdFlagsKHR VkVideoEncodeH265StdFlagsKHR>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH265TransformBlockSizeFlagsKHR VkVideoEncodeH265TransformBlockSizeFlagsKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeIntraRefreshModeFlagsKHR VkVideoEncodeIntraRefreshModeFlagsKHR>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeRateControlFlagsKHR VkVideoEncodeRateControlFlagsKHR>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeRateControlModeFlagsKHR VkVideoEncodeRateControlModeFlagsKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeRgbChromaOffsetFlagsVALVE VkVideoEncodeRgbChromaOffsetFlagsVALVE>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeRgbModelConversionFlagsVALVE VkVideoEncodeRgbModelConversionFlagsVALVE>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeRgbRangeCompressionFlagsVALVE VkVideoEncodeRgbRangeCompressionFlagsVALVE>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeUsageFlagsKHR VkVideoEncodeUsageFlagsKHR>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEndCodingFlagsKHR VkVideoEndCodingFlagsKHR>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoSessionCreateFlagsKHR VkVideoSessionCreateFlagsKHR>,
@@ -1087,7 +1226,7 @@
 -- or the bitwise OR of valid bit flags.
 --
 -- An individual bit flag is valid for a @Vk*Flags2@ type if it would be a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#fundamentals-validusage-enums valid enumerant>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#fundamentals-validusage-enums valid enumerant>
 -- when used with the equivalent @Vk*FlagBits2@ type, where the bits type
 -- is obtained by taking the flag type and replacing the trailing @Flags2@
 -- with @FlagBits2@. For example, a flag value of type
@@ -1113,12 +1252,18 @@
 -- <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.Extensions.VK_KHR_maintenance5.BufferUsageFlags2KHR', 'Flags',
--- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FormatFeatureFlags2',
--- 'Vulkan.Extensions.VK_NV_memory_decompression.MemoryDecompressionMethodFlagsNV',
+-- 'Vulkan.Extensions.VK_KHR_maintenance8.AccessFlags3KHR',
+-- 'Vulkan.Core14.Enums.BufferUsageFlags2.BufferUsageFlags2',
+-- 'Vulkan.Extensions.VK_ARM_data_graph.DataGraphPipelineDispatchFlagsARM',
+-- 'Vulkan.Extensions.VK_ARM_data_graph.DataGraphPipelineSessionCreateFlagsARM',
+-- 'Flags', 'Vulkan.Core13.Enums.FormatFeatureFlags2.FormatFeatureFlags2',
+-- 'Vulkan.Extensions.VK_EXT_memory_decompression.MemoryDecompressionMethodFlagsEXT',
 -- 'Vulkan.Extensions.VK_ARM_scheduling_controls.PhysicalDeviceSchedulingControlsFlagsARM',
--- 'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlags2KHR',
--- 'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlags2'
+-- 'Vulkan.Core14.Enums.PipelineCreateFlags2.PipelineCreateFlags2',
+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlags2',
+-- 'Vulkan.Extensions.VK_ARM_tensors.TensorCreateFlagsARM',
+-- 'Vulkan.Extensions.VK_ARM_tensors.TensorUsageFlagsARM',
+-- 'Vulkan.Extensions.VK_ARM_tensors.TensorViewCreateFlagsARM'
 type Flags64 = Word64
 
 
@@ -1130,31 +1275,42 @@
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureBuildSizesInfoKHR',
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureCreateInfoKHR',
 -- 'Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureCreateInfoNV',
+-- 'Vulkan.Extensions.VK_AMDX_dense_geometry_format.AccelerationStructureDenseGeometryFormatTrianglesDataAMDX',
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureGeometryAabbsDataKHR',
+-- 'Vulkan.Extensions.VK_NV_ray_tracing_linear_swept_spheres.AccelerationStructureGeometryLinearSweptSpheresDataNV',
+-- 'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureGeometryMicromapDataKHR',
+-- 'Vulkan.Extensions.VK_NV_ray_tracing_linear_swept_spheres.AccelerationStructureGeometrySpheresDataNV',
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureGeometryTrianglesDataKHR',
 -- 'Vulkan.Extensions.VK_NV_displacement_micromap.AccelerationStructureTrianglesDisplacementMicromapNV',
 -- 'Vulkan.Extensions.VK_EXT_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapEXT',
+-- 'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapKHR',
 -- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.AndroidHardwareBufferPropertiesANDROID',
 -- 'Vulkan.Extensions.VK_NV_ray_tracing.BindAccelerationStructureMemoryInfoNV',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindBufferMemoryInfo',
+-- 'Vulkan.Extensions.VK_ARM_data_graph.BindDataGraphPipelineSessionMemoryInfoARM',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_heap.BindHeapInfoEXT',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindImageMemoryInfo',
+-- 'Vulkan.Extensions.VK_ARM_tensors.BindTensorMemoryInfoARM',
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkBindVideoSessionMemoryInfoKHR VkBindVideoSessionMemoryInfoKHR>,
 -- 'Vulkan.Core10.CommandBufferBuilding.BufferCopy',
 -- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.BufferCopy2',
 -- 'Vulkan.Core10.Buffer.BufferCreateInfo',
 -- 'Vulkan.Core10.CommandBufferBuilding.BufferImageCopy',
 -- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.BufferImageCopy2',
--- 'Vulkan.Core10.OtherTypes.BufferMemoryBarrier',
+-- 'Vulkan.Core10.CommandBufferBuilding.BufferMemoryBarrier',
 -- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.BufferMemoryBarrier2',
 -- 'Vulkan.Core10.BufferView.BufferViewCreateInfo',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkClusterAccelerationStructureMoveObjectsInputNV VkClusterAccelerationStructureMoveObjectsInputNV>,
 -- 'Vulkan.Extensions.VK_NV_device_generated_commands_compute.ComputePipelineIndirectBufferInfoNV',
 -- 'Vulkan.Extensions.VK_EXT_conditional_rendering.ConditionalRenderingBeginInfoEXT',
--- 'Vulkan.Extensions.VK_NV_copy_memory_indirect.CopyMemoryIndirectCommandNV',
+-- 'Vulkan.Extensions.VK_KHR_copy_memory_indirect.CopyMemoryIndirectCommandKHR',
+-- 'Vulkan.Extensions.VK_EXT_memory_decompression.DecompressMemoryRegionEXT',
 -- 'Vulkan.Extensions.VK_NV_memory_decompression.DecompressMemoryRegionNV',
 -- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.DescriptorAddressInfoEXT',
 -- 'Vulkan.Core10.DescriptorSet.DescriptorBufferInfo',
 -- 'Vulkan.Extensions.VK_EXT_device_address_binding_report.DeviceAddressBindingCallbackDataEXT',
--- 'Vulkan.Extensions.VK_EXT_device_fault.DeviceFaultAddressInfoEXT',
+-- 'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR',
+-- 'Vulkan.Extensions.VK_KHR_device_fault.DeviceFaultAddressInfoKHR',
 -- 'Vulkan.Extensions.VK_EXT_device_fault.DeviceFaultCountsEXT',
 -- 'Vulkan.Extensions.VK_EXT_device_memory_report.DeviceMemoryReportCallbackDataEXT',
 -- 'Vulkan.Extensions.VK_AMDX_shader_enqueue.ExecutionGraphPipelineScratchSizeAMDX',
@@ -1162,27 +1318,32 @@
 -- 'Vulkan.Extensions.VK_NV_device_generated_commands.GeneratedCommandsInfoNV',
 -- 'Vulkan.Extensions.VK_NV_ray_tracing.GeometryAABBNV',
 -- 'Vulkan.Extensions.VK_NV_ray_tracing.GeometryTrianglesNV',
+-- 'Vulkan.Extensions.VK_AMD_gpa_interface.GpaSampleBeginInfoAMD',
 -- 'Vulkan.Core10.DeviceInitialization.ImageFormatProperties',
 -- 'Vulkan.Extensions.VK_NVX_image_view_handle.ImageViewAddressPropertiesNVX',
 -- 'Vulkan.Extensions.VK_NV_device_generated_commands.IndirectCommandsStreamNV',
 -- 'Vulkan.Core10.Memory.MappedMemoryRange',
 -- 'Vulkan.Core10.Memory.MemoryAllocateInfo',
 -- 'Vulkan.Core10.DeviceInitialization.MemoryHeap',
--- 'Vulkan.Extensions.VK_KHR_map_memory2.MemoryMapInfoKHR',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_map_memory2.MemoryMapInfo',
 -- 'Vulkan.Core10.MemoryManagement.MemoryRequirements',
 -- 'Vulkan.Extensions.VK_EXT_opacity_micromap.MicromapBuildInfoEXT',
 -- 'Vulkan.Extensions.VK_EXT_opacity_micromap.MicromapBuildSizesInfoEXT',
 -- 'Vulkan.Extensions.VK_EXT_opacity_micromap.MicromapCreateInfoEXT',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkNativeBufferPropertiesOHOS VkNativeBufferPropertiesOHOS>,
 -- 'Vulkan.Extensions.VK_HUAWEI_cluster_culling_shader.PhysicalDeviceClusterCullingShaderPropertiesHUAWEI',
 -- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.PhysicalDeviceDescriptorBufferPropertiesEXT',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_heap.PhysicalDeviceDescriptorHeapPropertiesEXT',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_heap.PhysicalDeviceDescriptorHeapTensorPropertiesARM',
 -- 'Vulkan.Extensions.VK_NV_extended_sparse_address_space.PhysicalDeviceExtendedSparseAddressSpacePropertiesNV',
 -- 'Vulkan.Extensions.VK_EXT_external_memory_host.PhysicalDeviceExternalMemoryHostPropertiesEXT',
+-- 'Vulkan.Extensions.VK_AMD_gpa_interface.PhysicalDeviceGpaPropertiesAMD',
 -- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_maintenance3.PhysicalDeviceMaintenance3Properties',
 -- 'Vulkan.Core13.Promoted_From_VK_KHR_maintenance4.PhysicalDeviceMaintenance4Properties',
 -- 'Vulkan.Extensions.VK_EXT_map_memory_placed.PhysicalDeviceMapMemoryPlacedPropertiesEXT',
 -- 'Vulkan.Extensions.VK_EXT_memory_budget.PhysicalDeviceMemoryBudgetPropertiesEXT',
--- 'Vulkan.Extensions.VK_EXT_robustness2.PhysicalDeviceRobustness2PropertiesEXT',
+-- 'Vulkan.Extensions.VK_KHR_robustness2.PhysicalDeviceRobustness2PropertiesKHR',
 -- 'Vulkan.Core13.Promoted_From_VK_EXT_texel_buffer_alignment.PhysicalDeviceTexelBufferAlignmentProperties',
 -- 'Vulkan.Extensions.VK_EXT_transform_feedback.PhysicalDeviceTransformFeedbackPropertiesEXT',
 -- 'Vulkan.Core12.PhysicalDeviceVulkan11Properties',
@@ -1192,9 +1353,13 @@
 -- 'Vulkan.Core10.SparseResourceMemoryManagement.SparseImageMemoryBind',
 -- 'Vulkan.Core10.SparseResourceMemoryManagement.SparseImageMemoryRequirements',
 -- 'Vulkan.Core10.SparseResourceMemoryManagement.SparseMemoryBind',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkStridedDeviceAddressNV VkStridedDeviceAddressNV>,
+-- 'Vulkan.Extensions.VK_KHR_device_address_commands.StridedDeviceAddressRangeKHR',
 -- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.StridedDeviceAddressRegionKHR',
--- 'Vulkan.Extensions.VK_EXT_host_image_copy.SubresourceHostMemcpySizeEXT',
+-- 'Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy.SubresourceHostMemcpySize',
 -- 'Vulkan.Core10.Image.SubresourceLayout',
+-- 'Vulkan.Extensions.VK_QCOM_tile_memory_heap.TileMemoryRequirementsQCOM',
+-- 'Vulkan.Extensions.VK_QCOM_tile_memory_heap.TileMemorySizeInfoQCOM',
 -- 'Vulkan.Extensions.VK_KHR_ray_tracing_maintenance1.TraceRaysIndirectCommand2KHR',
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoCapabilitiesKHR VkVideoCapabilitiesKHR>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeInfoKHR VkVideoDecodeInfoKHR>,
@@ -1203,11 +1368,12 @@
 -- 'Vulkan.Core10.MemoryManagement.bindImageMemory',
 -- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdBeginTransformFeedbackEXT',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdBindIndexBuffer',
--- 'Vulkan.Extensions.VK_KHR_maintenance5.cmdBindIndexBuffer2KHR',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.cmdBindIndexBuffer2',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.cmdBindIndexBuffer2',
 -- '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.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2',
 -- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdBuildAccelerationStructureNV',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdCopyQueryPoolResults',
 -- 'Vulkan.Extensions.VK_AMDX_shader_enqueue.cmdDispatchGraphAMDX',
@@ -1217,13 +1383,13 @@
 -- 'Vulkan.Extensions.VK_HUAWEI_cluster_culling_shader.cmdDrawClusterIndirectHUAWEI',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdDrawIndexedIndirect',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_draw_indirect_count.cmdDrawIndexedIndirectCount',
--- 'Vulkan.Extensions.VK_AMD_draw_indirect_count.cmdDrawIndexedIndirectCountAMD',
--- 'Vulkan.Extensions.VK_KHR_draw_indirect_count.cmdDrawIndexedIndirectCountKHR',
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_draw_indirect_count.cmdDrawIndexedIndirectCount',
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_draw_indirect_count.cmdDrawIndexedIndirectCount',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdDrawIndirect',
 -- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdDrawIndirectByteCountEXT',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_draw_indirect_count.cmdDrawIndirectCount',
--- 'Vulkan.Extensions.VK_AMD_draw_indirect_count.cmdDrawIndirectCountAMD',
--- 'Vulkan.Extensions.VK_KHR_draw_indirect_count.cmdDrawIndirectCountKHR',
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_draw_indirect_count.cmdDrawIndirectCount',
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_draw_indirect_count.cmdDrawIndirectCount',
 -- 'Vulkan.Extensions.VK_EXT_mesh_shader.cmdDrawMeshTasksIndirectCountEXT',
 -- 'Vulkan.Extensions.VK_NV_mesh_shader.cmdDrawMeshTasksIndirectCountNV',
 -- 'Vulkan.Extensions.VK_EXT_mesh_shader.cmdDrawMeshTasksIndirectEXT',
@@ -1234,6 +1400,7 @@
 -- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
 -- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdTraceRaysNV',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdUpdateBuffer',
+-- 'Vulkan.Extensions.VK_KHR_device_address_commands.cmdUpdateMemoryKHR',
 -- 'Vulkan.Extensions.VK_AMD_buffer_marker.cmdWriteBufferMarker2AMD',
 -- 'Vulkan.Extensions.VK_AMD_buffer_marker.cmdWriteBufferMarkerAMD',
 -- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.getDescriptorSetLayoutBindingOffsetEXT',
@@ -1246,25 +1413,51 @@
 
 -- | VkDeviceAddress - Vulkan device address type
 --
+-- == Valid Usage
+--
+-- -   #VUID-VkDeviceAddress-size-11364# A valid 'DeviceAddress' /must/ be
+--     equal to the sum of an address retrieved from a
+--     'Vulkan.Core10.Handles.Buffer' via
+--     'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.getBufferDeviceAddress',
+--     and any offset in the range [0, @size@), where @size@ is the value
+--     of 'Vulkan.Core10.Buffer.BufferCreateInfo'::@size@ used to create
+--     that 'Vulkan.Core10.Handles.Buffer'
+--
+-- -   #VUID-VkDeviceAddress-None-10894# If a 'DeviceAddress' was retrieved
+--     from a non-sparse buffer, that buffer /must/ be bound completely and
+--     contiguously to a single 'Vulkan.Core10.Handles.DeviceMemory' object
+--
 -- = 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_acceleration_structure.AccelerationStructureCreateInfoKHR',
+-- 'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureGeometryMicromapDataKHR',
+-- 'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapKHR',
 -- 'Vulkan.Extensions.VK_EXT_device_generated_commands.BindIndexBufferIndirectCommandEXT',
 -- 'Vulkan.Extensions.VK_NV_device_generated_commands.BindIndexBufferIndirectCommandNV',
 -- 'Vulkan.Extensions.VK_NV_device_generated_commands_compute.BindPipelineIndirectCommandNV',
 -- 'Vulkan.Extensions.VK_EXT_device_generated_commands.BindVertexBufferIndirectCommandEXT',
 -- 'Vulkan.Extensions.VK_NV_device_generated_commands.BindVertexBufferIndirectCommandNV',
 -- 'Vulkan.Extensions.VK_EXT_buffer_device_address.BufferDeviceAddressCreateInfoEXT',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkBuildPartitionedAccelerationStructureInfoNV VkBuildPartitionedAccelerationStructureInfoNV>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkClusterAccelerationStructureBuildClustersBottomLevelInfoNV VkClusterAccelerationStructureBuildClustersBottomLevelInfoNV>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkClusterAccelerationStructureBuildTriangleClusterInfoNV VkClusterAccelerationStructureBuildTriangleClusterInfoNV>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkClusterAccelerationStructureCommandsInfoNV VkClusterAccelerationStructureCommandsInfoNV>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkClusterAccelerationStructureGetTemplateIndicesInfoNV VkClusterAccelerationStructureGetTemplateIndicesInfoNV>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkClusterAccelerationStructureInstantiateClusterInfoNV VkClusterAccelerationStructureInstantiateClusterInfoNV>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkClusterAccelerationStructureMoveObjectsInfoNV VkClusterAccelerationStructureMoveObjectsInfoNV>,
 -- 'Vulkan.Extensions.VK_NV_device_generated_commands_compute.ComputePipelineIndirectBufferInfoNV',
--- 'Vulkan.Extensions.VK_NV_copy_memory_indirect.CopyMemoryIndirectCommandNV',
--- 'Vulkan.Extensions.VK_NV_copy_memory_indirect.CopyMemoryToImageIndirectCommandNV',
+-- 'Vulkan.Extensions.VK_KHR_copy_memory_indirect.CopyMemoryIndirectCommandKHR',
+-- 'Vulkan.Extensions.VK_KHR_copy_memory_indirect.CopyMemoryToImageIndirectCommandKHR',
+-- 'Vulkan.Extensions.VK_EXT_memory_decompression.DecompressMemoryRegionEXT',
 -- 'Vulkan.Extensions.VK_NV_memory_decompression.DecompressMemoryRegionNV',
 -- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.DescriptorAddressInfoEXT',
 -- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.DescriptorBufferBindingInfoEXT',
 -- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.DescriptorDataEXT',
 -- 'Vulkan.Extensions.VK_EXT_device_address_binding_report.DeviceAddressBindingCallbackDataEXT',
--- 'Vulkan.Extensions.VK_EXT_device_fault.DeviceFaultAddressInfoEXT',
+-- 'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR',
+-- 'Vulkan.Extensions.VK_KHR_device_fault.DeviceFaultAddressInfoKHR',
 -- 'Vulkan.Extensions.VK_AMDX_shader_enqueue.DeviceOrHostAddressConstAMDX',
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.DeviceOrHostAddressConstKHR',
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.DeviceOrHostAddressKHR',
@@ -1272,11 +1465,18 @@
 -- 'Vulkan.Extensions.VK_EXT_device_generated_commands.GeneratedCommandsInfoEXT',
 -- 'Vulkan.Extensions.VK_NVX_image_view_handle.ImageViewAddressPropertiesNVX',
 -- 'Vulkan.Extensions.VK_EXT_opacity_micromap.MicromapCreateInfoEXT',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPartitionedAccelerationStructureUpdateInstanceDataNV VkPartitionedAccelerationStructureUpdateInstanceDataNV>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPartitionedAccelerationStructureWriteInstanceDataNV VkPartitionedAccelerationStructureWriteInstanceDataNV>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkRenderPassPerformanceCountersByRegionBeginInfoARM VkRenderPassPerformanceCountersByRegionBeginInfoARM>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkStridedDeviceAddressNV VkStridedDeviceAddressNV>,
+-- 'Vulkan.Extensions.VK_KHR_device_address_commands.StridedDeviceAddressRangeKHR',
 -- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.StridedDeviceAddressRegionKHR',
 -- 'Vulkan.Extensions.VK_KHR_ray_tracing_maintenance1.TraceRaysIndirectCommand2KHR',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkWriteDescriptorSetPartitionedAccelerationStructureNV VkWriteDescriptorSetPartitionedAccelerationStructureNV>,
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.cmdBuildAccelerationStructuresIndirectKHR',
 -- 'Vulkan.Extensions.VK_NV_copy_memory_indirect.cmdCopyMemoryIndirectNV',
 -- 'Vulkan.Extensions.VK_NV_copy_memory_indirect.cmdCopyMemoryToImageIndirectNV',
+-- 'Vulkan.Extensions.VK_EXT_memory_decompression.cmdDecompressMemoryIndirectCountEXT',
 -- 'Vulkan.Extensions.VK_NV_memory_decompression.cmdDecompressMemoryIndirectCountNV',
 -- 'Vulkan.Extensions.VK_AMDX_shader_enqueue.cmdDispatchGraphAMDX',
 -- 'Vulkan.Extensions.VK_AMDX_shader_enqueue.cmdDispatchGraphIndirectAMDX',
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
@@ -62,25 +62,51 @@
 
 -- | VkDeviceAddress - Vulkan device address type
 --
+-- == Valid Usage
+--
+-- -   #VUID-VkDeviceAddress-size-11364# A valid 'DeviceAddress' /must/ be
+--     equal to the sum of an address retrieved from a
+--     'Vulkan.Core10.Handles.Buffer' via
+--     'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.getBufferDeviceAddress',
+--     and any offset in the range [0, @size@), where @size@ is the value
+--     of 'Vulkan.Core10.Buffer.BufferCreateInfo'::@size@ used to create
+--     that 'Vulkan.Core10.Handles.Buffer'
+--
+-- -   #VUID-VkDeviceAddress-None-10894# If a 'DeviceAddress' was retrieved
+--     from a non-sparse buffer, that buffer /must/ be bound completely and
+--     contiguously to a single 'Vulkan.Core10.Handles.DeviceMemory' object
+--
 -- = 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_acceleration_structure.AccelerationStructureCreateInfoKHR',
+-- 'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureGeometryMicromapDataKHR',
+-- 'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapKHR',
 -- 'Vulkan.Extensions.VK_EXT_device_generated_commands.BindIndexBufferIndirectCommandEXT',
 -- 'Vulkan.Extensions.VK_NV_device_generated_commands.BindIndexBufferIndirectCommandNV',
 -- 'Vulkan.Extensions.VK_NV_device_generated_commands_compute.BindPipelineIndirectCommandNV',
 -- 'Vulkan.Extensions.VK_EXT_device_generated_commands.BindVertexBufferIndirectCommandEXT',
 -- 'Vulkan.Extensions.VK_NV_device_generated_commands.BindVertexBufferIndirectCommandNV',
 -- 'Vulkan.Extensions.VK_EXT_buffer_device_address.BufferDeviceAddressCreateInfoEXT',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkBuildPartitionedAccelerationStructureInfoNV VkBuildPartitionedAccelerationStructureInfoNV>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkClusterAccelerationStructureBuildClustersBottomLevelInfoNV VkClusterAccelerationStructureBuildClustersBottomLevelInfoNV>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkClusterAccelerationStructureBuildTriangleClusterInfoNV VkClusterAccelerationStructureBuildTriangleClusterInfoNV>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkClusterAccelerationStructureCommandsInfoNV VkClusterAccelerationStructureCommandsInfoNV>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkClusterAccelerationStructureGetTemplateIndicesInfoNV VkClusterAccelerationStructureGetTemplateIndicesInfoNV>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkClusterAccelerationStructureInstantiateClusterInfoNV VkClusterAccelerationStructureInstantiateClusterInfoNV>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkClusterAccelerationStructureMoveObjectsInfoNV VkClusterAccelerationStructureMoveObjectsInfoNV>,
 -- 'Vulkan.Extensions.VK_NV_device_generated_commands_compute.ComputePipelineIndirectBufferInfoNV',
--- 'Vulkan.Extensions.VK_NV_copy_memory_indirect.CopyMemoryIndirectCommandNV',
--- 'Vulkan.Extensions.VK_NV_copy_memory_indirect.CopyMemoryToImageIndirectCommandNV',
+-- 'Vulkan.Extensions.VK_KHR_copy_memory_indirect.CopyMemoryIndirectCommandKHR',
+-- 'Vulkan.Extensions.VK_KHR_copy_memory_indirect.CopyMemoryToImageIndirectCommandKHR',
+-- 'Vulkan.Extensions.VK_EXT_memory_decompression.DecompressMemoryRegionEXT',
 -- 'Vulkan.Extensions.VK_NV_memory_decompression.DecompressMemoryRegionNV',
 -- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.DescriptorAddressInfoEXT',
 -- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.DescriptorBufferBindingInfoEXT',
 -- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.DescriptorDataEXT',
 -- 'Vulkan.Extensions.VK_EXT_device_address_binding_report.DeviceAddressBindingCallbackDataEXT',
--- 'Vulkan.Extensions.VK_EXT_device_fault.DeviceFaultAddressInfoEXT',
+-- 'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR',
+-- 'Vulkan.Extensions.VK_KHR_device_fault.DeviceFaultAddressInfoKHR',
 -- 'Vulkan.Extensions.VK_AMDX_shader_enqueue.DeviceOrHostAddressConstAMDX',
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.DeviceOrHostAddressConstKHR',
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.DeviceOrHostAddressKHR',
@@ -88,11 +114,18 @@
 -- 'Vulkan.Extensions.VK_EXT_device_generated_commands.GeneratedCommandsInfoEXT',
 -- 'Vulkan.Extensions.VK_NVX_image_view_handle.ImageViewAddressPropertiesNVX',
 -- 'Vulkan.Extensions.VK_EXT_opacity_micromap.MicromapCreateInfoEXT',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPartitionedAccelerationStructureUpdateInstanceDataNV VkPartitionedAccelerationStructureUpdateInstanceDataNV>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPartitionedAccelerationStructureWriteInstanceDataNV VkPartitionedAccelerationStructureWriteInstanceDataNV>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkRenderPassPerformanceCountersByRegionBeginInfoARM VkRenderPassPerformanceCountersByRegionBeginInfoARM>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkStridedDeviceAddressNV VkStridedDeviceAddressNV>,
+-- 'Vulkan.Extensions.VK_KHR_device_address_commands.StridedDeviceAddressRangeKHR',
 -- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.StridedDeviceAddressRegionKHR',
 -- 'Vulkan.Extensions.VK_KHR_ray_tracing_maintenance1.TraceRaysIndirectCommand2KHR',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkWriteDescriptorSetPartitionedAccelerationStructureNV VkWriteDescriptorSetPartitionedAccelerationStructureNV>,
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.cmdBuildAccelerationStructuresIndirectKHR',
 -- 'Vulkan.Extensions.VK_NV_copy_memory_indirect.cmdCopyMemoryIndirectNV',
 -- 'Vulkan.Extensions.VK_NV_copy_memory_indirect.cmdCopyMemoryToImageIndirectNV',
+-- 'Vulkan.Extensions.VK_EXT_memory_decompression.cmdDecompressMemoryIndirectCountEXT',
 -- 'Vulkan.Extensions.VK_NV_memory_decompression.cmdDecompressMemoryIndirectCountNV',
 -- 'Vulkan.Extensions.VK_AMDX_shader_enqueue.cmdDispatchGraphAMDX',
 -- 'Vulkan.Extensions.VK_AMDX_shader_enqueue.cmdDispatchGraphIndirectAMDX',
@@ -111,31 +144,42 @@
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureBuildSizesInfoKHR',
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureCreateInfoKHR',
 -- 'Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureCreateInfoNV',
+-- 'Vulkan.Extensions.VK_AMDX_dense_geometry_format.AccelerationStructureDenseGeometryFormatTrianglesDataAMDX',
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureGeometryAabbsDataKHR',
+-- 'Vulkan.Extensions.VK_NV_ray_tracing_linear_swept_spheres.AccelerationStructureGeometryLinearSweptSpheresDataNV',
+-- 'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureGeometryMicromapDataKHR',
+-- 'Vulkan.Extensions.VK_NV_ray_tracing_linear_swept_spheres.AccelerationStructureGeometrySpheresDataNV',
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureGeometryTrianglesDataKHR',
 -- 'Vulkan.Extensions.VK_NV_displacement_micromap.AccelerationStructureTrianglesDisplacementMicromapNV',
 -- 'Vulkan.Extensions.VK_EXT_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapEXT',
+-- 'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapKHR',
 -- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.AndroidHardwareBufferPropertiesANDROID',
 -- 'Vulkan.Extensions.VK_NV_ray_tracing.BindAccelerationStructureMemoryInfoNV',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindBufferMemoryInfo',
+-- 'Vulkan.Extensions.VK_ARM_data_graph.BindDataGraphPipelineSessionMemoryInfoARM',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_heap.BindHeapInfoEXT',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindImageMemoryInfo',
+-- 'Vulkan.Extensions.VK_ARM_tensors.BindTensorMemoryInfoARM',
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkBindVideoSessionMemoryInfoKHR VkBindVideoSessionMemoryInfoKHR>,
 -- 'Vulkan.Core10.CommandBufferBuilding.BufferCopy',
 -- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.BufferCopy2',
 -- 'Vulkan.Core10.Buffer.BufferCreateInfo',
 -- 'Vulkan.Core10.CommandBufferBuilding.BufferImageCopy',
 -- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.BufferImageCopy2',
--- 'Vulkan.Core10.OtherTypes.BufferMemoryBarrier',
+-- 'Vulkan.Core10.CommandBufferBuilding.BufferMemoryBarrier',
 -- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.BufferMemoryBarrier2',
 -- 'Vulkan.Core10.BufferView.BufferViewCreateInfo',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkClusterAccelerationStructureMoveObjectsInputNV VkClusterAccelerationStructureMoveObjectsInputNV>,
 -- 'Vulkan.Extensions.VK_NV_device_generated_commands_compute.ComputePipelineIndirectBufferInfoNV',
 -- 'Vulkan.Extensions.VK_EXT_conditional_rendering.ConditionalRenderingBeginInfoEXT',
--- 'Vulkan.Extensions.VK_NV_copy_memory_indirect.CopyMemoryIndirectCommandNV',
+-- 'Vulkan.Extensions.VK_KHR_copy_memory_indirect.CopyMemoryIndirectCommandKHR',
+-- 'Vulkan.Extensions.VK_EXT_memory_decompression.DecompressMemoryRegionEXT',
 -- 'Vulkan.Extensions.VK_NV_memory_decompression.DecompressMemoryRegionNV',
 -- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.DescriptorAddressInfoEXT',
 -- 'Vulkan.Core10.DescriptorSet.DescriptorBufferInfo',
 -- 'Vulkan.Extensions.VK_EXT_device_address_binding_report.DeviceAddressBindingCallbackDataEXT',
--- 'Vulkan.Extensions.VK_EXT_device_fault.DeviceFaultAddressInfoEXT',
+-- 'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR',
+-- 'Vulkan.Extensions.VK_KHR_device_fault.DeviceFaultAddressInfoKHR',
 -- 'Vulkan.Extensions.VK_EXT_device_fault.DeviceFaultCountsEXT',
 -- 'Vulkan.Extensions.VK_EXT_device_memory_report.DeviceMemoryReportCallbackDataEXT',
 -- 'Vulkan.Extensions.VK_AMDX_shader_enqueue.ExecutionGraphPipelineScratchSizeAMDX',
@@ -143,27 +187,32 @@
 -- 'Vulkan.Extensions.VK_NV_device_generated_commands.GeneratedCommandsInfoNV',
 -- 'Vulkan.Extensions.VK_NV_ray_tracing.GeometryAABBNV',
 -- 'Vulkan.Extensions.VK_NV_ray_tracing.GeometryTrianglesNV',
+-- 'Vulkan.Extensions.VK_AMD_gpa_interface.GpaSampleBeginInfoAMD',
 -- 'Vulkan.Core10.DeviceInitialization.ImageFormatProperties',
 -- 'Vulkan.Extensions.VK_NVX_image_view_handle.ImageViewAddressPropertiesNVX',
 -- 'Vulkan.Extensions.VK_NV_device_generated_commands.IndirectCommandsStreamNV',
 -- 'Vulkan.Core10.Memory.MappedMemoryRange',
 -- 'Vulkan.Core10.Memory.MemoryAllocateInfo',
 -- 'Vulkan.Core10.DeviceInitialization.MemoryHeap',
--- 'Vulkan.Extensions.VK_KHR_map_memory2.MemoryMapInfoKHR',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_map_memory2.MemoryMapInfo',
 -- 'Vulkan.Core10.MemoryManagement.MemoryRequirements',
 -- 'Vulkan.Extensions.VK_EXT_opacity_micromap.MicromapBuildInfoEXT',
 -- 'Vulkan.Extensions.VK_EXT_opacity_micromap.MicromapBuildSizesInfoEXT',
 -- 'Vulkan.Extensions.VK_EXT_opacity_micromap.MicromapCreateInfoEXT',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkNativeBufferPropertiesOHOS VkNativeBufferPropertiesOHOS>,
 -- 'Vulkan.Extensions.VK_HUAWEI_cluster_culling_shader.PhysicalDeviceClusterCullingShaderPropertiesHUAWEI',
 -- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.PhysicalDeviceDescriptorBufferPropertiesEXT',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_heap.PhysicalDeviceDescriptorHeapPropertiesEXT',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_heap.PhysicalDeviceDescriptorHeapTensorPropertiesARM',
 -- 'Vulkan.Extensions.VK_NV_extended_sparse_address_space.PhysicalDeviceExtendedSparseAddressSpacePropertiesNV',
 -- 'Vulkan.Extensions.VK_EXT_external_memory_host.PhysicalDeviceExternalMemoryHostPropertiesEXT',
+-- 'Vulkan.Extensions.VK_AMD_gpa_interface.PhysicalDeviceGpaPropertiesAMD',
 -- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_maintenance3.PhysicalDeviceMaintenance3Properties',
 -- 'Vulkan.Core13.Promoted_From_VK_KHR_maintenance4.PhysicalDeviceMaintenance4Properties',
 -- 'Vulkan.Extensions.VK_EXT_map_memory_placed.PhysicalDeviceMapMemoryPlacedPropertiesEXT',
 -- 'Vulkan.Extensions.VK_EXT_memory_budget.PhysicalDeviceMemoryBudgetPropertiesEXT',
--- 'Vulkan.Extensions.VK_EXT_robustness2.PhysicalDeviceRobustness2PropertiesEXT',
+-- 'Vulkan.Extensions.VK_KHR_robustness2.PhysicalDeviceRobustness2PropertiesKHR',
 -- 'Vulkan.Core13.Promoted_From_VK_EXT_texel_buffer_alignment.PhysicalDeviceTexelBufferAlignmentProperties',
 -- 'Vulkan.Extensions.VK_EXT_transform_feedback.PhysicalDeviceTransformFeedbackPropertiesEXT',
 -- 'Vulkan.Core12.PhysicalDeviceVulkan11Properties',
@@ -173,9 +222,13 @@
 -- 'Vulkan.Core10.SparseResourceMemoryManagement.SparseImageMemoryBind',
 -- 'Vulkan.Core10.SparseResourceMemoryManagement.SparseImageMemoryRequirements',
 -- 'Vulkan.Core10.SparseResourceMemoryManagement.SparseMemoryBind',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkStridedDeviceAddressNV VkStridedDeviceAddressNV>,
+-- 'Vulkan.Extensions.VK_KHR_device_address_commands.StridedDeviceAddressRangeKHR',
 -- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.StridedDeviceAddressRegionKHR',
--- 'Vulkan.Extensions.VK_EXT_host_image_copy.SubresourceHostMemcpySizeEXT',
+-- 'Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy.SubresourceHostMemcpySize',
 -- 'Vulkan.Core10.Image.SubresourceLayout',
+-- 'Vulkan.Extensions.VK_QCOM_tile_memory_heap.TileMemoryRequirementsQCOM',
+-- 'Vulkan.Extensions.VK_QCOM_tile_memory_heap.TileMemorySizeInfoQCOM',
 -- 'Vulkan.Extensions.VK_KHR_ray_tracing_maintenance1.TraceRaysIndirectCommand2KHR',
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoCapabilitiesKHR VkVideoCapabilitiesKHR>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeInfoKHR VkVideoDecodeInfoKHR>,
@@ -184,11 +237,12 @@
 -- 'Vulkan.Core10.MemoryManagement.bindImageMemory',
 -- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdBeginTransformFeedbackEXT',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdBindIndexBuffer',
--- 'Vulkan.Extensions.VK_KHR_maintenance5.cmdBindIndexBuffer2KHR',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.cmdBindIndexBuffer2',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.cmdBindIndexBuffer2',
 -- '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.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2',
 -- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdBuildAccelerationStructureNV',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdCopyQueryPoolResults',
 -- 'Vulkan.Extensions.VK_AMDX_shader_enqueue.cmdDispatchGraphAMDX',
@@ -198,13 +252,13 @@
 -- 'Vulkan.Extensions.VK_HUAWEI_cluster_culling_shader.cmdDrawClusterIndirectHUAWEI',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdDrawIndexedIndirect',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_draw_indirect_count.cmdDrawIndexedIndirectCount',
--- 'Vulkan.Extensions.VK_AMD_draw_indirect_count.cmdDrawIndexedIndirectCountAMD',
--- 'Vulkan.Extensions.VK_KHR_draw_indirect_count.cmdDrawIndexedIndirectCountKHR',
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_draw_indirect_count.cmdDrawIndexedIndirectCount',
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_draw_indirect_count.cmdDrawIndexedIndirectCount',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdDrawIndirect',
 -- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdDrawIndirectByteCountEXT',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_draw_indirect_count.cmdDrawIndirectCount',
--- 'Vulkan.Extensions.VK_AMD_draw_indirect_count.cmdDrawIndirectCountAMD',
--- 'Vulkan.Extensions.VK_KHR_draw_indirect_count.cmdDrawIndirectCountKHR',
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_draw_indirect_count.cmdDrawIndirectCount',
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_draw_indirect_count.cmdDrawIndirectCount',
 -- 'Vulkan.Extensions.VK_EXT_mesh_shader.cmdDrawMeshTasksIndirectCountEXT',
 -- 'Vulkan.Extensions.VK_NV_mesh_shader.cmdDrawMeshTasksIndirectCountNV',
 -- 'Vulkan.Extensions.VK_EXT_mesh_shader.cmdDrawMeshTasksIndirectEXT',
@@ -215,6 +269,7 @@
 -- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
 -- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdTraceRaysNV',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdUpdateBuffer',
+-- 'Vulkan.Extensions.VK_KHR_device_address_commands.cmdUpdateMemoryKHR',
 -- 'Vulkan.Extensions.VK_AMD_buffer_marker.cmdWriteBufferMarker2AMD',
 -- 'Vulkan.Extensions.VK_AMD_buffer_marker.cmdWriteBufferMarkerAMD',
 -- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.getDescriptorSetLayoutBindingOffsetEXT',
@@ -230,7 +285,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.Core10.Pipeline.PipelineMultisampleStateCreateInfo',
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineMultisampleStateCreateInfo',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
 type SampleMask = Word32
 
diff --git a/src/Vulkan/Core10/GraphicsPipeline.hs b/src/Vulkan/Core10/GraphicsPipeline.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core10/GraphicsPipeline.hs
@@ -0,0 +1,6845 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "GraphicsPipeline"
+module Vulkan.Core10.GraphicsPipeline  ( createGraphicsPipelines
+                                       , withGraphicsPipelines
+                                       , Viewport(..)
+                                       , VertexInputBindingDescription(..)
+                                       , VertexInputAttributeDescription(..)
+                                       , PipelineVertexInputStateCreateInfo(..)
+                                       , PipelineInputAssemblyStateCreateInfo(..)
+                                       , PipelineTessellationStateCreateInfo(..)
+                                       , PipelineViewportStateCreateInfo(..)
+                                       , PipelineRasterizationStateCreateInfo(..)
+                                       , PipelineMultisampleStateCreateInfo(..)
+                                       , PipelineColorBlendAttachmentState(..)
+                                       , PipelineColorBlendStateCreateInfo(..)
+                                       , PipelineDynamicStateCreateInfo(..)
+                                       , StencilOpState(..)
+                                       , PipelineDepthStencilStateCreateInfo(..)
+                                       , GraphicsPipelineCreateInfo(..)
+                                       , PipelineDynamicStateCreateFlags(..)
+                                       , PipelineMultisampleStateCreateFlags(..)
+                                       , PipelineRasterizationStateCreateFlags(..)
+                                       , PipelineViewportStateCreateFlags(..)
+                                       , PipelineTessellationStateCreateFlags(..)
+                                       , PipelineInputAssemblyStateCreateFlags(..)
+                                       , PipelineVertexInputStateCreateFlags(..)
+                                       , PrimitiveTopology(..)
+                                       , PolygonMode(..)
+                                       , FrontFace(..)
+                                       , BlendFactor(..)
+                                       , BlendOp(..)
+                                       , StencilOp(..)
+                                       , LogicOp(..)
+                                       , VertexInputRate(..)
+                                       , DynamicState(..)
+                                       , CullModeFlagBits(..)
+                                       , CullModeFlags
+                                       , ColorComponentFlagBits(..)
+                                       , ColorComponentFlags
+                                       , PipelineColorBlendStateCreateFlagBits(..)
+                                       , PipelineColorBlendStateCreateFlags
+                                       , PipelineDepthStencilStateCreateFlagBits(..)
+                                       , PipelineDepthStencilStateCreateFlags
+                                       , SampleMask
+                                       ) 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 Data.Foldable (traverse_)
+import Data.Typeable (eqT)
+import Foreign.Marshal.Alloc (allocaBytes)
+import Foreign.Marshal.Alloc (callocBytes)
+import Foreign.Marshal.Alloc (free)
+import Foreign.Marshal.Utils (maybePeek)
+import GHC.Base (when)
+import GHC.IO (throwIO)
+import GHC.Ptr (castPtr)
+import GHC.Ptr (nullFunPtr)
+import Foreign.Ptr (nullPtr)
+import qualified Foreign.Ptr (nullPtr)
+import Foreign.Ptr (plusPtr)
+import Data.Coerce (coerce)
+import Control.Monad.Trans.Class (lift)
+import Control.Monad.Trans.Cont (evalContT)
+import Data.Vector (generateM)
+import qualified Data.Vector (imapM_)
+import qualified Data.Vector (length)
+import 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.Type.Equality ((:~:)(Refl))
+import Data.Typeable (Typeable)
+import Foreign.C.Types (CFloat)
+import Foreign.C.Types (CFloat(..))
+import Foreign.C.Types (CFloat(CFloat))
+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 (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.Core10.ComputePipeline (destroyPipeline)
+import Vulkan.CStruct.Extends (forgetExtensions)
+import Vulkan.CStruct.Utils (lowerArrayPtr)
+import Vulkan.CStruct.Extends (peekSomeCStruct)
+import Vulkan.CStruct.Extends (pokeSomeCStruct)
+import Vulkan.CStruct.Extends (withSomeCStruct)
+import Vulkan.NamedType ((:::))
+import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)
+import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_mixed_attachment_samples (AttachmentSampleCountInfoAMD)
+import Vulkan.Core10.Enums.BlendFactor (BlendFactor)
+import Vulkan.Core10.Enums.BlendOp (BlendOp)
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.CStruct.Extends (Chain)
+import Vulkan.Core10.Enums.ColorComponentFlagBits (ColorComponentFlags)
+import Vulkan.Core10.Enums.CompareOp (CompareOp)
+import Vulkan.Core10.Enums.CullModeFlagBits (CullModeFlags)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_custom_resolve (CustomResolveCreateInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_depth_bias_control (DepthBiasRepresentationInfoEXT)
+import Vulkan.Core10.Handles (Device)
+import Vulkan.Core10.Handles (Device(..))
+import Vulkan.Core10.Handles (Device(Device))
+import Vulkan.Dynamic (DeviceCmds(pVkCreateGraphicsPipelines))
+import Vulkan.Core10.Handles (Device_T)
+import Vulkan.Core10.Enums.DynamicState (DynamicState)
+import Vulkan.CStruct.Extends (Extends)
+import Vulkan.CStruct.Extends (Extendss)
+import Vulkan.CStruct.Extends (Extensible(..))
+import {-# SOURCE #-} Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer (ExternalFormatANDROID)
+import Vulkan.Core10.Enums.Format (Format)
+import Vulkan.Core10.Enums.FrontFace (FrontFace)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_graphics_pipeline_library (GraphicsPipelineLibraryCreateInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_generated_commands (GraphicsPipelineShaderGroupsCreateInfoNV)
+import Vulkan.Core10.Enums.LogicOp (LogicOp)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NVX_multiview_per_view_attributes (MultiviewPerViewAttributesInfoNVX)
+import Vulkan.CStruct.Extends (PeekChain)
+import Vulkan.CStruct.Extends (PeekChain(..))
+import Vulkan.Core10.Handles (Pipeline)
+import Vulkan.Core10.Handles (Pipeline(..))
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_pipeline_binary (PipelineBinaryInfoKHR)
+import Vulkan.Core10.Handles (PipelineCache)
+import Vulkan.Core10.Handles (PipelineCache(..))
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_blend_operation_advanced (PipelineColorBlendAdvancedStateCreateInfoEXT)
+import Vulkan.Core10.Enums.PipelineColorBlendStateCreateFlagBits (PipelineColorBlendStateCreateFlags)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_color_write_enable (PipelineColorWriteCreateInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_pipeline_compiler_control (PipelineCompilerControlCreateInfoAMD)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_framebuffer_mixed_samples (PipelineCoverageModulationStateCreateInfoNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_coverage_reduction_mode (PipelineCoverageReductionStateCreateInfoNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_fragment_coverage_to_color (PipelineCoverageToColorStateCreateInfoNV)
+import Vulkan.Core10.Enums.PipelineCreateFlagBits (PipelineCreateFlags)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_maintenance5 (PipelineCreateFlags2CreateInfo)
+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)
+import {-# SOURCE #-} Vulkan.Extensions.VK_VALVE_fragment_density_map_layered (PipelineFragmentDensityMapLayeredCreateInfoVALVE)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_fragment_shading_rate_enums (PipelineFragmentShadingRateEnumStateCreateInfoNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_fragment_shading_rate (PipelineFragmentShadingRateStateCreateInfoKHR)
+import Vulkan.Core10.Enums.PipelineInputAssemblyStateCreateFlags (PipelineInputAssemblyStateCreateFlags)
+import Vulkan.Core10.Handles (PipelineLayout)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_pipeline_library (PipelineLibraryCreateInfoKHR)
+import Vulkan.Core10.Enums.PipelineMultisampleStateCreateFlags (PipelineMultisampleStateCreateFlags)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_conservative_rasterization (PipelineRasterizationConservativeStateCreateInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_depth_clip_enable (PipelineRasterizationDepthClipStateCreateInfoEXT)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_line_rasterization (PipelineRasterizationLineStateCreateInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_provoking_vertex (PipelineRasterizationProvokingVertexStateCreateInfoEXT)
+import Vulkan.Core10.Enums.PipelineRasterizationStateCreateFlags (PipelineRasterizationStateCreateFlags)
+import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_rasterization_order (PipelineRasterizationStateRasterizationOrderAMD)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_transform_feedback (PipelineRasterizationStateStreamCreateInfoEXT)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering (PipelineRenderingCreateInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_representative_fragment_test (PipelineRepresentativeFragmentTestStateCreateInfoNV)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_EXT_pipeline_robustness (PipelineRobustnessCreateInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_sample_locations (PipelineSampleLocationsStateCreateInfoEXT)
+import Vulkan.Core10.ComputePipeline (PipelineShaderStageCreateInfo)
+import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_maintenance2 (PipelineTessellationDomainOriginStateCreateInfo)
+import Vulkan.Core10.Enums.PipelineTessellationStateCreateFlags (PipelineTessellationStateCreateFlags)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_vertex_attribute_divisor (PipelineVertexInputDivisorStateCreateInfo)
+import Vulkan.Core10.Enums.PipelineVertexInputStateCreateFlags (PipelineVertexInputStateCreateFlags)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_shading_rate_image (PipelineViewportCoarseSampleOrderStateCreateInfoNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_depth_clamp_control (PipelineViewportDepthClampControlCreateInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_depth_clip_control (PipelineViewportDepthClipControlCreateInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_scissor_exclusive (PipelineViewportExclusiveScissorStateCreateInfoNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_shading_rate_image (PipelineViewportShadingRateImageStateCreateInfoNV)
+import Vulkan.Core10.Enums.PipelineViewportStateCreateFlags (PipelineViewportStateCreateFlags)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_viewport_swizzle (PipelineViewportSwizzleStateCreateInfoNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_clip_space_w_scaling (PipelineViewportWScalingStateCreateInfoNV)
+import Vulkan.CStruct.Extends (PokeChain)
+import Vulkan.CStruct.Extends (PokeChain(..))
+import Vulkan.Core10.Enums.PolygonMode (PolygonMode)
+import Vulkan.Core10.Enums.PrimitiveTopology (PrimitiveTopology)
+import Vulkan.Core10.FundamentalTypes (Rect2D)
+import Vulkan.Core10.Handles (RenderPass)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read (RenderingAttachmentLocationInfo)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read (RenderingInputAttachmentIndexInfo)
+import Vulkan.Core10.Enums.Result (Result)
+import Vulkan.Core10.Enums.Result (Result(..))
+import Vulkan.Core10.Enums.SampleCountFlagBits (SampleCountFlagBits)
+import Vulkan.Core10.Enums.SampleCountFlagBits (SampleCountFlagBits(SampleCountFlagBits))
+import Vulkan.Core10.FundamentalTypes (SampleMask)
+import Vulkan.CStruct.Extends (SomeStruct)
+import Vulkan.Core10.Enums.StencilOp (StencilOp)
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Core10.Enums.VertexInputRate (VertexInputRate)
+import Vulkan.Exception (VulkanException(..))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO))
+import Vulkan.Core10.Enums.Result (Result(SUCCESS))
+import Vulkan.Core10.Enums.BlendFactor (BlendFactor(..))
+import Vulkan.Core10.Enums.BlendOp (BlendOp(..))
+import Vulkan.Core10.Enums.ColorComponentFlagBits (ColorComponentFlagBits(..))
+import Vulkan.Core10.Enums.ColorComponentFlagBits (ColorComponentFlags)
+import Vulkan.Core10.Enums.CullModeFlagBits (CullModeFlagBits(..))
+import Vulkan.Core10.Enums.CullModeFlagBits (CullModeFlags)
+import Vulkan.Core10.Enums.DynamicState (DynamicState(..))
+import Vulkan.Core10.Enums.FrontFace (FrontFace(..))
+import Vulkan.Core10.Enums.LogicOp (LogicOp(..))
+import Vulkan.Core10.Enums.PipelineColorBlendStateCreateFlagBits (PipelineColorBlendStateCreateFlagBits(..))
+import Vulkan.Core10.Enums.PipelineColorBlendStateCreateFlagBits (PipelineColorBlendStateCreateFlags)
+import Vulkan.Core10.Enums.PipelineDepthStencilStateCreateFlagBits (PipelineDepthStencilStateCreateFlagBits(..))
+import Vulkan.Core10.Enums.PipelineDepthStencilStateCreateFlagBits (PipelineDepthStencilStateCreateFlags)
+import Vulkan.Core10.Enums.PipelineDynamicStateCreateFlags (PipelineDynamicStateCreateFlags(..))
+import Vulkan.Core10.Enums.PipelineInputAssemblyStateCreateFlags (PipelineInputAssemblyStateCreateFlags(..))
+import Vulkan.Core10.Enums.PipelineMultisampleStateCreateFlags (PipelineMultisampleStateCreateFlags(..))
+import Vulkan.Core10.Enums.PipelineRasterizationStateCreateFlags (PipelineRasterizationStateCreateFlags(..))
+import Vulkan.Core10.Enums.PipelineTessellationStateCreateFlags (PipelineTessellationStateCreateFlags(..))
+import Vulkan.Core10.Enums.PipelineVertexInputStateCreateFlags (PipelineVertexInputStateCreateFlags(..))
+import Vulkan.Core10.Enums.PipelineViewportStateCreateFlags (PipelineViewportStateCreateFlags(..))
+import Vulkan.Core10.Enums.PolygonMode (PolygonMode(..))
+import Vulkan.Core10.Enums.PrimitiveTopology (PrimitiveTopology(..))
+import Vulkan.Core10.FundamentalTypes (SampleMask)
+import Vulkan.Core10.Enums.StencilOp (StencilOp(..))
+import Vulkan.Core10.Enums.VertexInputRate (VertexInputRate(..))
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCreateGraphicsPipelines
+  :: FunPtr (Ptr Device_T -> PipelineCache -> Word32 -> Ptr (SomeStruct GraphicsPipelineCreateInfo) -> Ptr AllocationCallbacks -> Ptr Pipeline -> IO Result) -> Ptr Device_T -> PipelineCache -> Word32 -> Ptr (SomeStruct GraphicsPipelineCreateInfo) -> Ptr AllocationCallbacks -> Ptr Pipeline -> IO Result
+
+-- | vkCreateGraphicsPipelines - Create graphics pipelines
+--
+-- = Description
+--
+-- The 'GraphicsPipelineCreateInfo' structure includes an array of
+-- 'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo' structures
+-- for each of the desired active shader stages, as well as creation
+-- information for all relevant fixed-function stages, and a pipeline
+-- layout.
+--
+-- Pipelines are created and returned as described for
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-multiple Multiple Pipeline Creation>.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCreateGraphicsPipelines-device-09662# @device@ /must/
+--     support at least one queue family with the
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' capability
+--
+-- -   #VUID-vkCreateGraphicsPipelines-flags-00720# If the @flags@ member
+--     of any element of @pCreateInfos@ contains the
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'
+--     flag, and the @basePipelineIndex@ member of that same element is not
+--     @-1@, @basePipelineIndex@ /must/ be less than the index into
+--     @pCreateInfos@ that corresponds to that element
+--
+-- -   #VUID-vkCreateGraphicsPipelines-flags-00721# If the @flags@ member
+--     of any element of @pCreateInfos@ contains the
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'
+--     flag, the base pipeline /must/ have been created with the
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT'
+--     flag set
+--
+-- -   #VUID-vkCreateGraphicsPipelines-pipelineCache-02876# If
+--     @pipelineCache@ was created with
+--     'Vulkan.Core10.Enums.PipelineCacheCreateFlagBits.PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT',
+--     host access to @pipelineCache@ /must/ be
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#fundamentals-threadingbehavior externally synchronized>
+--
+-- -   #VUID-vkCreateGraphicsPipelines-pNext-09616# If
+--     'Vulkan.Extensions.VK_KHR_pipeline_binary.PipelineBinaryInfoKHR'::@binaryCount@
+--     is not @0@ for any element of @pCreateInfos@, @pipelineCache@ /must/
+--     be 'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-vkCreateGraphicsPipelines-pNext-09617# If a
+--     'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlags2CreateInfoKHR'
+--     structure with the
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR'
+--     flag set is included in the @pNext@ chain of any element of
+--     @pCreateInfos@, @pipelineCache@ /must/ be
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-vkCreateGraphicsPipelines-binaryCount-09620# If
+--     'Vulkan.Extensions.VK_KHR_pipeline_binary.PipelineBinaryInfoKHR'::@binaryCount@
+--     is not @0@ for any element of @pCreateInfos@,
+--     'Vulkan.Core13.Enums.PipelineCreationFeedbackFlagBits.PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT'
+--     /must/ not be set in the @flags@ of that element
+--
+-- -   #VUID-vkCreateGraphicsPipelines-binaryCount-09621# If
+--     'Vulkan.Extensions.VK_KHR_pipeline_binary.PipelineBinaryInfoKHR'::@binaryCount@
+--     is not @0@ for any element of @pCreateInfos@,
+--     'Vulkan.Core13.Enums.PipelineCreationFeedbackFlagBits.PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT'
+--     /must/ not be set in the @flags@ of that element
+--
+-- -   #VUID-vkCreateGraphicsPipelines-binaryCount-09622# If
+--     'Vulkan.Extensions.VK_KHR_pipeline_binary.PipelineBinaryInfoKHR'::@binaryCount@
+--     is not @0@ for any element of @pCreateInfos@,
+--     'Vulkan.Extensions.VK_EXT_pipeline_creation_cache_control.PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT'
+--     /must/ not be set in the @flags@ of that element
+--
+-- -   #VUID-vkCreateGraphicsPipelines-pCreateInfos-11414# If any element
+--     of @pCreateInfos@ sets
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT'
+--     and includes embedded sampler mappings, there /must/ be less than
+--     (<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxSamplerAllocationCount maxSamplerAllocationCount>
+--     -
+--     (<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minSamplerHeapReservedRangeWithEmbedded minSamplerHeapReservedRangeWithEmbedded>
+--     \/
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-samplerDescriptorSize samplerDescriptorSize>))
+--     'Vulkan.Core10.Handles.Sampler' objects currently created on the
+--     device
+--
+-- -   #VUID-vkCreateGraphicsPipelines-pCreateInfos-11429# If any element
+--     of @pCreateInfos@ sets
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT'
+--     and includes embedded sampler mappings, this command /must/ not
+--     cause the total number of unique embedded samplers in pipelines and
+--     shaders on this device to exceed
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxDescriptorHeapEmbeddedSamplers maxDescriptorHeapEmbeddedSamplers>
+--
+-- 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'
+-- on @flags@ for any element of @pCreateInfos@ while passing
+-- 'Vulkan.Core10.APIConstants.NULL_HANDLE' for @pipelineCache@.
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCreateGraphicsPipelines-device-parameter# @device@ /must/ be
+--     a valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkCreateGraphicsPipelines-pipelineCache-parameter# If
+--     @pipelineCache@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
+--     @pipelineCache@ /must/ be a valid
+--     'Vulkan.Core10.Handles.PipelineCache' handle
+--
+-- -   #VUID-vkCreateGraphicsPipelines-pCreateInfos-parameter#
+--     @pCreateInfos@ /must/ be a valid pointer to an array of
+--     @createInfoCount@ valid 'GraphicsPipelineCreateInfo' structures
+--
+-- -   #VUID-vkCreateGraphicsPipelines-pAllocator-parameter# If
+--     @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid pointer
+--     to a valid 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'
+--     structure
+--
+-- -   #VUID-vkCreateGraphicsPipelines-pPipelines-parameter# @pPipelines@
+--     /must/ be a valid pointer to an array of @createInfoCount@
+--     'Vulkan.Core10.Handles.Pipeline' handles
+--
+-- -   #VUID-vkCreateGraphicsPipelines-createInfoCount-arraylength#
+--     @createInfoCount@ /must/ be greater than @0@
+--
+-- -   #VUID-vkCreateGraphicsPipelines-pipelineCache-parent# If
+--     @pipelineCache@ is a valid handle, it /must/ have been created,
+--     allocated, or retrieved from @device@
+--
+-- == Return Codes
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
+--
+--     -   'Vulkan.Extensions.VK_EXT_pipeline_creation_cache_control.PIPELINE_COMPILE_REQUIRED_EXT'
+--
+--     -   '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_INVALID_SHADER_NV'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = 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.AllocationCallbacks.AllocationCallbacks',
+-- 'Vulkan.Core10.Handles.Device', 'GraphicsPipelineCreateInfo',
+-- 'Vulkan.Core10.Handles.Pipeline', 'Vulkan.Core10.Handles.PipelineCache'
+createGraphicsPipelines :: forall io
+                         . (MonadIO io)
+                        => -- | @device@ is the logical device that creates the graphics pipelines.
+                           Device
+                        -> -- | @pipelineCache@ is either 'Vulkan.Core10.APIConstants.NULL_HANDLE',
+                           -- indicating that pipeline caching is disabled, or to enable caching, the
+                           -- handle of a valid 'Vulkan.Core10.Handles.PipelineCache' object. The
+                           -- implementation /must/ not access this object outside of the duration of
+                           -- this command.
+                           PipelineCache
+                        -> -- | @pCreateInfos@ is a pointer to an array of 'GraphicsPipelineCreateInfo'
+                           -- structures.
+                           ("createInfos" ::: Vector (SomeStruct GraphicsPipelineCreateInfo))
+                        -> -- | @pAllocator@ controls host memory allocation as described in the
+                           -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
+                           -- chapter.
+                           ("allocator" ::: Maybe AllocationCallbacks)
+                        -> io (Result, ("pipelines" ::: Vector Pipeline))
+createGraphicsPipelines device
+                          pipelineCache
+                          createInfos
+                          allocator = liftIO . evalContT $ do
+  let vkCreateGraphicsPipelinesPtr = pVkCreateGraphicsPipelines (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCreateGraphicsPipelinesPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCreateGraphicsPipelines is null" Nothing Nothing
+  let vkCreateGraphicsPipelines' = mkVkCreateGraphicsPipelines vkCreateGraphicsPipelinesPtr
+  pPCreateInfos <- ContT $ allocaBytes @(GraphicsPipelineCreateInfo _) ((Data.Vector.length (createInfos)) * 144)
+  Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPCreateInfos `plusPtr` (144 * (i)) :: Ptr (GraphicsPipelineCreateInfo _))) (e) . ($ ())) (createInfos)
+  pAllocator <- case (allocator) of
+    Nothing -> pure nullPtr
+    Just j -> ContT $ withCStruct (j)
+  pPPipelines <- ContT $ bracket (callocBytes @Pipeline ((fromIntegral ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32))) * 8)) free
+  r <- lift $ traceAroundEvent "vkCreateGraphicsPipelines" (vkCreateGraphicsPipelines'
+                                                              (deviceHandle (device))
+                                                              (pipelineCache)
+                                                              ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32))
+                                                              (forgetExtensions (pPCreateInfos))
+                                                              pAllocator
+                                                              (pPPipelines))
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+  pPipelines <- lift $ generateM (fromIntegral ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32))) (\i -> peek @Pipeline ((pPPipelines `advancePtrBytes` (8 * (i)) :: Ptr Pipeline)))
+  pure $ (r, pPipelines)
+
+-- | A convenience wrapper to make a compatible pair of calls to
+-- 'createGraphicsPipelines' and 'destroyPipeline'
+--
+-- To ensure that 'destroyPipeline' 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.
+--
+withGraphicsPipelines :: forall io r . MonadIO io => Device -> PipelineCache -> Vector (SomeStruct GraphicsPipelineCreateInfo) -> Maybe AllocationCallbacks -> (io (Result, Vector Pipeline) -> ((Result, Vector Pipeline) -> io ()) -> r) -> r
+withGraphicsPipelines device pipelineCache pCreateInfos pAllocator b =
+  b (createGraphicsPipelines device pipelineCache pCreateInfos pAllocator)
+    (\(_, o1) -> traverse_ (\o1Elem -> destroyPipeline device
+                                                         o1Elem
+                                                         pAllocator) o1)
+
+
+-- | VkViewport - Structure specifying a viewport
+--
+-- = Description
+--
+-- Despite their names, @minDepth@ /can/ be less than, equal to, or greater
+-- than @maxDepth@.
+--
+-- The framebuffer depth coordinate @z@f /may/ be represented using either
+-- a fixed-point or floating-point representation. However, a
+-- floating-point representation /must/ be used if the depth\/stencil
+-- attachment has a floating-point depth component. If an m-bit fixed-point
+-- representation is used, we assume that it represents each value
+-- \(\frac{k}{2^m - 1}\), where k ∈ { 0, 1, …​, 2m-1 }, as k (e.g. 1.0 is
+-- represented in binary as a string of all ones).
+--
+-- The viewport parameters shown in the above equations are found from
+-- these values as
+--
+-- -   ox = @x@ + @width@ \/ 2
+--
+-- -   oy = @y@ + @height@ \/ 2
+--
+-- -   oz = @minDepth@ (or (@maxDepth@ + @minDepth@) \/ 2 if
+--     'Vulkan.Extensions.VK_EXT_depth_clip_control.PipelineViewportDepthClipControlCreateInfoEXT'::@negativeOneToOne@
+--     is 'Vulkan.Core10.FundamentalTypes.TRUE')
+--
+-- -   px = @width@
+--
+-- -   py = @height@
+--
+-- -   pz = @maxDepth@ - @minDepth@ (or (@maxDepth@ - @minDepth@) \/ 2 if
+--     'Vulkan.Extensions.VK_EXT_depth_clip_control.PipelineViewportDepthClipControlCreateInfoEXT'::@negativeOneToOne@
+--     is 'Vulkan.Core10.FundamentalTypes.TRUE')
+--
+-- If a render pass transform is enabled, the values (px,py) and (ox, oy)
+-- defining the viewport are transformed as described in
+-- <https://registry.khronos.org/vulkan/specs/latest/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
+-- the effect of negating the y coordinate in clip space before performing
+-- the transform. When using a negative @height@, the application /should/
+-- also adjust the @y@ value to point to the lower left corner of the
+-- viewport instead of the upper left corner. Using the negative @height@
+-- allows the application to avoid having to negate the y component of the
+-- @Position@ output from the last
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader stage>.
+--
+-- The width and height of the
+-- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-viewportSubPixelBits implementation-dependent precision>.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkViewport-width-01770# @width@ /must/ be greater than @0.0@
+--
+-- -   #VUID-VkViewport-width-01771# @width@ /must/ be less than or equal
+--     to
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxViewportDimensions@[0]
+--
+-- -   #VUID-VkViewport-apiVersion-07917# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance1 VK_KHR_maintenance1>
+--     extension is not enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_negative_viewport_height VK_AMD_negative_viewport_height>
+--     extension is not enabled, and
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceProperties'::@apiVersion@
+--     is less than Vulkan 1.1, @height@ /must/ be greater than @0.0@
+--
+-- -   #VUID-VkViewport-height-01773# The absolute value of @height@ /must/
+--     be less than or equal to
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxViewportDimensions@[1]
+--
+-- -   #VUID-VkViewport-x-01774# @x@ /must/ be greater than or equal to
+--     @viewportBoundsRange@[0]
+--
+-- -   #VUID-VkViewport-x-01232# (@x@ + @width@) /must/ be less than or
+--     equal to @viewportBoundsRange@[1]
+--
+-- -   #VUID-VkViewport-y-01775# @y@ /must/ be greater than or equal to
+--     @viewportBoundsRange@[0]
+--
+-- -   #VUID-VkViewport-y-01776# @y@ /must/ be less than or equal to
+--     @viewportBoundsRange@[1]
+--
+-- -   #VUID-VkViewport-y-01777# (@y@ + @height@) /must/ be greater than or
+--     equal to @viewportBoundsRange@[0]
+--
+-- -   #VUID-VkViewport-y-01233# (@y@ + @height@) /must/ be less than or
+--     equal to @viewportBoundsRange@[1]
+--
+-- -   #VUID-VkViewport-minDepth-01234# If the
+--     @VK_EXT_depth_range_unrestricted@ extension is not enabled,
+--     @minDepth@ /must/ be between @0.0@ and @1.0@, inclusive
+--
+-- -   #VUID-VkViewport-maxDepth-01235# If the
+--     @VK_EXT_depth_range_unrestricted@ extension is not enabled,
+--     @maxDepth@ /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>,
+-- 'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV',
+-- 'PipelineViewportStateCreateInfo',
+-- 'Vulkan.Core10.CommandBufferBuilding.cmdSetViewport',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
+data Viewport = Viewport
+  { -- | @x@ and @y@ are the viewport’s upper left corner (x,y).
+    x :: Float
+  , -- No documentation found for Nested "VkViewport" "y"
+    y :: Float
+  , -- | @width@ and @height@ are the viewport’s width and height, respectively.
+    width :: Float
+  , -- No documentation found for Nested "VkViewport" "height"
+    height :: Float
+  , -- | @minDepth@ and @maxDepth@ are the depth range for the viewport.
+    minDepth :: Float
+  , -- No documentation found for Nested "VkViewport" "maxDepth"
+    maxDepth :: Float
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (Viewport)
+#endif
+deriving instance Show Viewport
+
+instance ToCStruct Viewport where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p Viewport{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr CFloat)) (CFloat (x))
+    poke ((p `plusPtr` 4 :: Ptr CFloat)) (CFloat (y))
+    poke ((p `plusPtr` 8 :: Ptr CFloat)) (CFloat (width))
+    poke ((p `plusPtr` 12 :: Ptr CFloat)) (CFloat (height))
+    poke ((p `plusPtr` 16 :: Ptr CFloat)) (CFloat (minDepth))
+    poke ((p `plusPtr` 20 :: Ptr CFloat)) (CFloat (maxDepth))
+    f
+  cStructSize = 24
+  cStructAlignment = 4
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr CFloat)) (CFloat (zero))
+    poke ((p `plusPtr` 4 :: Ptr CFloat)) (CFloat (zero))
+    poke ((p `plusPtr` 8 :: Ptr CFloat)) (CFloat (zero))
+    poke ((p `plusPtr` 12 :: Ptr CFloat)) (CFloat (zero))
+    poke ((p `plusPtr` 16 :: Ptr CFloat)) (CFloat (zero))
+    poke ((p `plusPtr` 20 :: Ptr CFloat)) (CFloat (zero))
+    f
+
+instance FromCStruct Viewport where
+  peekCStruct p = do
+    x <- peek @CFloat ((p `plusPtr` 0 :: Ptr CFloat))
+    y <- peek @CFloat ((p `plusPtr` 4 :: Ptr CFloat))
+    width <- peek @CFloat ((p `plusPtr` 8 :: Ptr CFloat))
+    height <- peek @CFloat ((p `plusPtr` 12 :: Ptr CFloat))
+    minDepth <- peek @CFloat ((p `plusPtr` 16 :: Ptr CFloat))
+    maxDepth <- peek @CFloat ((p `plusPtr` 20 :: Ptr CFloat))
+    pure $ Viewport
+             (coerce @CFloat @Float x)
+             (coerce @CFloat @Float y)
+             (coerce @CFloat @Float width)
+             (coerce @CFloat @Float height)
+             (coerce @CFloat @Float minDepth)
+             (coerce @CFloat @Float maxDepth)
+
+instance Storable Viewport where
+  sizeOf ~_ = 24
+  alignment ~_ = 4
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero Viewport where
+  zero = Viewport
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkVertexInputBindingDescription - Structure specifying vertex input
+-- binding description
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkVertexInputBindingDescription-binding-00618# @binding@
+--     /must/ be less than
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxVertexInputBindings@
+--
+-- -   #VUID-VkVertexInputBindingDescription-stride-00619# @stride@ /must/
+--     be less than or equal to
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxVertexInputBindingStride@
+--
+-- -   #VUID-VkVertexInputBindingDescription-stride-04456# If the
+--     @VK_KHR_portability_subset@ extension is enabled, @stride@ /must/ be
+--     a multiple of, and at least as large as,
+--     'Vulkan.Extensions.VK_KHR_portability_subset.PhysicalDevicePortabilitySubsetPropertiesKHR'::@minVertexInputBindingStrideAlignment@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkVertexInputBindingDescription-inputRate-parameter#
+--     @inputRate@ /must/ be a valid
+--     'Vulkan.Core10.Enums.VertexInputRate.VertexInputRate' value
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
+-- 'PipelineVertexInputStateCreateInfo',
+-- 'Vulkan.Core10.Enums.VertexInputRate.VertexInputRate'
+data VertexInputBindingDescription = VertexInputBindingDescription
+  { -- | @binding@ is the binding number that this structure describes.
+    binding :: Word32
+  , -- | @stride@ is the byte stride between consecutive elements within the
+    -- buffer.
+    stride :: Word32
+  , -- | @inputRate@ is a 'Vulkan.Core10.Enums.VertexInputRate.VertexInputRate'
+    -- value specifying whether vertex attribute addressing is a function of
+    -- the vertex index or of the instance index.
+    inputRate :: VertexInputRate
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (VertexInputBindingDescription)
+#endif
+deriving instance Show VertexInputBindingDescription
+
+instance ToCStruct VertexInputBindingDescription where
+  withCStruct x f = allocaBytes 12 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p VertexInputBindingDescription{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr Word32)) (binding)
+    poke ((p `plusPtr` 4 :: Ptr Word32)) (stride)
+    poke ((p `plusPtr` 8 :: Ptr VertexInputRate)) (inputRate)
+    f
+  cStructSize = 12
+  cStructAlignment = 4
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 8 :: Ptr VertexInputRate)) (zero)
+    f
+
+instance FromCStruct VertexInputBindingDescription where
+  peekCStruct p = do
+    binding <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))
+    stride <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))
+    inputRate <- peek @VertexInputRate ((p `plusPtr` 8 :: Ptr VertexInputRate))
+    pure $ VertexInputBindingDescription
+             binding stride inputRate
+
+instance Storable VertexInputBindingDescription where
+  sizeOf ~_ = 12
+  alignment ~_ = 4
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero VertexInputBindingDescription where
+  zero = VertexInputBindingDescription
+           zero
+           zero
+           zero
+
+
+-- | VkVertexInputAttributeDescription - Structure specifying vertex input
+-- attribute description
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkVertexInputAttributeDescription-location-00620# @location@
+--     /must/ be less than
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxVertexInputAttributes@
+--
+-- -   #VUID-VkVertexInputAttributeDescription-binding-00621# @binding@
+--     /must/ be less than
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxVertexInputBindings@
+--
+-- -   #VUID-VkVertexInputAttributeDescription-offset-00622# @offset@
+--     /must/ be less than or equal to
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxVertexInputAttributeOffset@
+--
+-- -   #VUID-VkVertexInputAttributeDescription-format-00623# The
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-buffer-view-format-features format features>
+--     of @format@ /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_VERTEX_BUFFER_BIT'
+--
+-- -   #VUID-VkVertexInputAttributeDescription-vertexAttributeAccessBeyondStride-04457#
+--     If the @VK_KHR_portability_subset@ extension is enabled, and
+--     'Vulkan.Extensions.VK_KHR_portability_subset.PhysicalDevicePortabilitySubsetFeaturesKHR'::@vertexAttributeAccessBeyondStride@
+--     is 'Vulkan.Core10.FundamentalTypes.FALSE', the sum of @offset@ plus
+--     the size of the vertex attribute data described by @format@ /must/
+--     not be greater than @stride@ in the 'VertexInputBindingDescription'
+--     referenced in @binding@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkVertexInputAttributeDescription-format-parameter# @format@
+--     /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_VERSION_1_0 VK_VERSION_1_0>,
+-- 'Vulkan.Core10.Enums.Format.Format',
+-- 'PipelineVertexInputStateCreateInfo'
+data VertexInputAttributeDescription = VertexInputAttributeDescription
+  { -- | @location@ is the shader input location number for this attribute.
+    location :: Word32
+  , -- | @binding@ is the binding number which this attribute takes its data
+    -- from.
+    binding :: Word32
+  , -- | @format@ is the size and type of the vertex attribute data.
+    format :: Format
+  , -- | @offset@ is a byte offset of this attribute relative to the start of an
+    -- element in the vertex input binding.
+    offset :: Word32
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (VertexInputAttributeDescription)
+#endif
+deriving instance Show VertexInputAttributeDescription
+
+instance ToCStruct VertexInputAttributeDescription where
+  withCStruct x f = allocaBytes 16 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p VertexInputAttributeDescription{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr Word32)) (location)
+    poke ((p `plusPtr` 4 :: Ptr Word32)) (binding)
+    poke ((p `plusPtr` 8 :: Ptr Format)) (format)
+    poke ((p `plusPtr` 12 :: Ptr Word32)) (offset)
+    f
+  cStructSize = 16
+  cStructAlignment = 4
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 8 :: Ptr Format)) (zero)
+    poke ((p `plusPtr` 12 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct VertexInputAttributeDescription where
+  peekCStruct p = do
+    location <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))
+    binding <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))
+    format <- peek @Format ((p `plusPtr` 8 :: Ptr Format))
+    offset <- peek @Word32 ((p `plusPtr` 12 :: Ptr Word32))
+    pure $ VertexInputAttributeDescription
+             location binding format offset
+
+instance Storable VertexInputAttributeDescription where
+  sizeOf ~_ = 16
+  alignment ~_ = 4
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero VertexInputAttributeDescription where
+  zero = VertexInputAttributeDescription
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkPipelineVertexInputStateCreateInfo - Structure specifying parameters
+-- of a newly created pipeline vertex input state
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkPipelineVertexInputStateCreateInfo-vertexBindingDescriptionCount-00613#
+--     @vertexBindingDescriptionCount@ /must/ be less than or equal to
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxVertexInputBindings@
+--
+-- -   #VUID-VkPipelineVertexInputStateCreateInfo-vertexAttributeDescriptionCount-00614#
+--     @vertexAttributeDescriptionCount@ /must/ be less than or equal to
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxVertexInputAttributes@
+--
+-- -   #VUID-VkPipelineVertexInputStateCreateInfo-binding-00615# For every
+--     @binding@ specified by each element of
+--     @pVertexAttributeDescriptions@, a 'VertexInputBindingDescription'
+--     /must/ exist in @pVertexBindingDescriptions@ with the same value of
+--     @binding@
+--
+-- -   #VUID-VkPipelineVertexInputStateCreateInfo-pVertexBindingDescriptions-00616#
+--     All elements of @pVertexBindingDescriptions@ /must/ describe
+--     distinct binding numbers
+--
+-- -   #VUID-VkPipelineVertexInputStateCreateInfo-pVertexAttributeDescriptions-00617#
+--     All elements of @pVertexAttributeDescriptions@ /must/ describe
+--     distinct attribute locations
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkPipelineVertexInputStateCreateInfo-sType-sType# @sType@
+--     /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO'
+--
+-- -   #VUID-VkPipelineVertexInputStateCreateInfo-pNext-pNext# @pNext@
+--     /must/ be @NULL@ or a pointer to a valid instance of
+--     'Vulkan.Core14.Promoted_From_VK_KHR_vertex_attribute_divisor.PipelineVertexInputDivisorStateCreateInfo'
+--
+-- -   #VUID-VkPipelineVertexInputStateCreateInfo-sType-unique# The @sType@
+--     value of each structure in the @pNext@ chain /must/ be unique
+--
+-- -   #VUID-VkPipelineVertexInputStateCreateInfo-flags-zerobitmask#
+--     @flags@ /must/ be @0@
+--
+-- -   #VUID-VkPipelineVertexInputStateCreateInfo-pVertexBindingDescriptions-parameter#
+--     If @vertexBindingDescriptionCount@ is not @0@,
+--     @pVertexBindingDescriptions@ /must/ be a valid pointer to an array
+--     of @vertexBindingDescriptionCount@ valid
+--     'VertexInputBindingDescription' structures
+--
+-- -   #VUID-VkPipelineVertexInputStateCreateInfo-pVertexAttributeDescriptions-parameter#
+--     If @vertexAttributeDescriptionCount@ is not @0@,
+--     @pVertexAttributeDescriptions@ /must/ be a valid pointer to an array
+--     of @vertexAttributeDescriptionCount@ valid
+--     'VertexInputAttributeDescription' structures
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
+-- 'GraphicsPipelineCreateInfo',
+-- 'Vulkan.Extensions.VK_NV_device_generated_commands.GraphicsShaderGroupCreateInfoNV',
+-- 'Vulkan.Core10.Enums.PipelineVertexInputStateCreateFlags.PipelineVertexInputStateCreateFlags',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'VertexInputAttributeDescription', 'VertexInputBindingDescription'
+data PipelineVertexInputStateCreateInfo (es :: [Type]) = PipelineVertexInputStateCreateInfo
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
+    next :: Chain es
+  , -- | @flags@ is reserved for future use.
+    flags :: PipelineVertexInputStateCreateFlags
+  , -- | @pVertexBindingDescriptions@ is a pointer to an array of
+    -- 'VertexInputBindingDescription' structures.
+    vertexBindingDescriptions :: Vector VertexInputBindingDescription
+  , -- | @pVertexAttributeDescriptions@ is a pointer to an array of
+    -- 'VertexInputAttributeDescription' structures.
+    vertexAttributeDescriptions :: Vector VertexInputAttributeDescription
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PipelineVertexInputStateCreateInfo (es :: [Type]))
+#endif
+deriving instance Show (Chain es) => Show (PipelineVertexInputStateCreateInfo es)
+
+instance Extensible PipelineVertexInputStateCreateInfo where
+  extensibleTypeName = "PipelineVertexInputStateCreateInfo"
+  setNext PipelineVertexInputStateCreateInfo{..} next' = PipelineVertexInputStateCreateInfo{next = next', ..}
+  getNext PipelineVertexInputStateCreateInfo{..} = next
+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends PipelineVertexInputStateCreateInfo e => b) -> Maybe b
+  extends _ f
+    | Just Refl <- eqT @e @PipelineVertexInputDivisorStateCreateInfo = Just f
+    | otherwise = Nothing
+
+instance ( Extendss PipelineVertexInputStateCreateInfo es
+         , PokeChain es ) => ToCStruct (PipelineVertexInputStateCreateInfo es) where
+  withCStruct x f = allocaBytes 48 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PipelineVertexInputStateCreateInfo{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO)
+    pNext'' <- fmap castPtr . ContT $ withChain (next)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
+    lift $ poke ((p `plusPtr` 16 :: Ptr PipelineVertexInputStateCreateFlags)) (flags)
+    lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (vertexBindingDescriptions)) :: Word32))
+    pPVertexBindingDescriptions' <- ContT $ allocaBytes @VertexInputBindingDescription ((Data.Vector.length (vertexBindingDescriptions)) * 12)
+    lift $ Data.Vector.imapM_ (\i e -> poke (pPVertexBindingDescriptions' `plusPtr` (12 * (i)) :: Ptr VertexInputBindingDescription) (e)) (vertexBindingDescriptions)
+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr VertexInputBindingDescription))) (pPVertexBindingDescriptions')
+    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (vertexAttributeDescriptions)) :: Word32))
+    pPVertexAttributeDescriptions' <- ContT $ allocaBytes @VertexInputAttributeDescription ((Data.Vector.length (vertexAttributeDescriptions)) * 16)
+    lift $ Data.Vector.imapM_ (\i e -> poke (pPVertexAttributeDescriptions' `plusPtr` (16 * (i)) :: Ptr VertexInputAttributeDescription) (e)) (vertexAttributeDescriptions)
+    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr VertexInputAttributeDescription))) (pPVertexAttributeDescriptions')
+    lift $ f
+  cStructSize = 48
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO)
+    pNext' <- fmap castPtr . ContT $ withZeroChain @es
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
+    lift $ f
+
+instance ( Extendss PipelineVertexInputStateCreateInfo es
+         , PeekChain es ) => FromCStruct (PipelineVertexInputStateCreateInfo es) where
+  peekCStruct p = do
+    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
+    next <- peekChain (castPtr pNext)
+    flags <- peek @PipelineVertexInputStateCreateFlags ((p `plusPtr` 16 :: Ptr PipelineVertexInputStateCreateFlags))
+    vertexBindingDescriptionCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
+    pVertexBindingDescriptions <- peek @(Ptr VertexInputBindingDescription) ((p `plusPtr` 24 :: Ptr (Ptr VertexInputBindingDescription)))
+    pVertexBindingDescriptions' <- generateM (fromIntegral vertexBindingDescriptionCount) (\i -> peekCStruct @VertexInputBindingDescription ((pVertexBindingDescriptions `advancePtrBytes` (12 * (i)) :: Ptr VertexInputBindingDescription)))
+    vertexAttributeDescriptionCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))
+    pVertexAttributeDescriptions <- peek @(Ptr VertexInputAttributeDescription) ((p `plusPtr` 40 :: Ptr (Ptr VertexInputAttributeDescription)))
+    pVertexAttributeDescriptions' <- generateM (fromIntegral vertexAttributeDescriptionCount) (\i -> peekCStruct @VertexInputAttributeDescription ((pVertexAttributeDescriptions `advancePtrBytes` (16 * (i)) :: Ptr VertexInputAttributeDescription)))
+    pure $ PipelineVertexInputStateCreateInfo
+             next
+             flags
+             pVertexBindingDescriptions'
+             pVertexAttributeDescriptions'
+
+instance es ~ '[] => Zero (PipelineVertexInputStateCreateInfo es) where
+  zero = PipelineVertexInputStateCreateInfo
+           ()
+           zero
+           mempty
+           mempty
+
+
+-- | VkPipelineInputAssemblyStateCreateInfo - Structure specifying parameters
+-- of a newly created pipeline input assembly state
+--
+-- = Description
+--
+-- Restarting the assembly of primitives discards the most recent index
+-- values if those elements formed an incomplete primitive, and restarts
+-- the primitive assembly using the subsequent indices, but only assembling
+-- the immediately following element through the end of the originally
+-- specified elements. The primitive restart index value comparison is
+-- performed before adding the @vertexOffset@ value to the index value.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkPipelineInputAssemblyStateCreateInfo-topology-06252# If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-primitiveTopologyListRestart primitiveTopologyListRestart>
+--     feature is not enabled, and @topology@ is
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_POINT_LIST',
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_LINE_LIST',
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_TRIANGLE_LIST',
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY',
+--     or
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY',
+--     @primitiveRestartEnable@ /must/ be
+--     'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-VkPipelineInputAssemblyStateCreateInfo-topology-06253# If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-primitiveTopologyPatchListRestart primitiveTopologyPatchListRestart>
+--     feature is not enabled, and @topology@ is
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST',
+--     @primitiveRestartEnable@ /must/ be
+--     'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-VkPipelineInputAssemblyStateCreateInfo-topology-00429# If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-geometryShader geometryShader>
+--     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',
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY'
+--     or
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY'
+--
+-- -   #VUID-VkPipelineInputAssemblyStateCreateInfo-topology-00430# If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-tessellationShader tessellationShader>
+--     feature is not enabled, @topology@ /must/ not be
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST'
+--
+-- -   #VUID-VkPipelineInputAssemblyStateCreateInfo-triangleFans-04452# If
+--     the @VK_KHR_portability_subset@ extension is enabled, and
+--     'Vulkan.Extensions.VK_KHR_portability_subset.PhysicalDevicePortabilitySubsetFeaturesKHR'::@triangleFans@
+--     is 'Vulkan.Core10.FundamentalTypes.FALSE', @topology@ /must/ not be
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_TRIANGLE_FAN'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkPipelineInputAssemblyStateCreateInfo-sType-sType# @sType@
+--     /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO'
+--
+-- -   #VUID-VkPipelineInputAssemblyStateCreateInfo-pNext-pNext# @pNext@
+--     /must/ be @NULL@
+--
+-- -   #VUID-VkPipelineInputAssemblyStateCreateInfo-flags-zerobitmask#
+--     @flags@ /must/ be @0@
+--
+-- -   #VUID-VkPipelineInputAssemblyStateCreateInfo-topology-parameter#
+--     @topology@ /must/ be a valid
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PrimitiveTopology' value
+--
+-- = 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.Bool32', 'GraphicsPipelineCreateInfo',
+-- 'Vulkan.Core10.Enums.PipelineInputAssemblyStateCreateFlags.PipelineInputAssemblyStateCreateFlags',
+-- 'Vulkan.Core10.Enums.PrimitiveTopology.PrimitiveTopology',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PipelineInputAssemblyStateCreateInfo = PipelineInputAssemblyStateCreateInfo
+  { -- | @flags@ is reserved for future use.
+    flags :: PipelineInputAssemblyStateCreateFlags
+  , -- | @topology@ is a
+    -- 'Vulkan.Core10.Enums.PrimitiveTopology.PrimitiveTopology' defining the
+    -- primitive topology, as described below.
+    topology :: PrimitiveTopology
+  , -- | @primitiveRestartEnable@ controls whether a special vertex index value
+    -- is treated as restarting the assembly of primitives. This enable only
+    -- applies to indexed draws
+    -- ('Vulkan.Core10.CommandBufferBuilding.cmdDrawIndexed',
+    -- 'Vulkan.Extensions.VK_EXT_multi_draw.cmdDrawMultiIndexedEXT', and
+    -- 'Vulkan.Core10.CommandBufferBuilding.cmdDrawIndexedIndirect'), and the
+    -- special index value is either 0xFFFFFFFF when the @indexType@ parameter
+    -- of Vulkan 1.4 or
+    -- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.cmdBindIndexBuffer2' or
+    -- 'Vulkan.Core10.CommandBufferBuilding.cmdBindIndexBuffer' is equal to
+    -- 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT32'; 0xFF when @indexType@
+    -- is equal to 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT8'; or 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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-primitiveTopologyPatchListRestart primitiveTopologyPatchListRestart>
+    -- (for
+    -- 'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST')
+    -- or
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-primitiveTopologyListRestart primitiveTopologyListRestart>
+    -- (for all other list topologies) is enabled. If the
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-primitiveRestartIndex primitiveRestartIndex>
+    -- feature is enabled,
+    -- 'Vulkan.Extensions.VK_EXT_primitive_restart_index.cmdSetPrimitiveRestartIndexEXT'
+    -- /can/ be used to set a custom index for primitive restart.
+    primitiveRestartEnable :: Bool
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PipelineInputAssemblyStateCreateInfo)
+#endif
+deriving instance Show PipelineInputAssemblyStateCreateInfo
+
+instance ToCStruct PipelineInputAssemblyStateCreateInfo where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PipelineInputAssemblyStateCreateInfo{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr PipelineInputAssemblyStateCreateFlags)) (flags)
+    poke ((p `plusPtr` 20 :: Ptr PrimitiveTopology)) (topology)
+    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (primitiveRestartEnable))
+    f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 20 :: Ptr PrimitiveTopology)) (zero)
+    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PipelineInputAssemblyStateCreateInfo where
+  peekCStruct p = do
+    flags <- peek @PipelineInputAssemblyStateCreateFlags ((p `plusPtr` 16 :: Ptr PipelineInputAssemblyStateCreateFlags))
+    topology <- peek @PrimitiveTopology ((p `plusPtr` 20 :: Ptr PrimitiveTopology))
+    primitiveRestartEnable <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))
+    pure $ PipelineInputAssemblyStateCreateInfo
+             flags topology (bool32ToBool primitiveRestartEnable)
+
+instance Storable PipelineInputAssemblyStateCreateInfo where
+  sizeOf ~_ = 32
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PipelineInputAssemblyStateCreateInfo where
+  zero = PipelineInputAssemblyStateCreateInfo
+           zero
+           zero
+           zero
+
+
+-- | VkPipelineTessellationStateCreateInfo - Structure specifying parameters
+-- of a newly created pipeline tessellation state
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkPipelineTessellationStateCreateInfo-patchControlPoints-01214#
+--     @patchControlPoints@ /must/ be greater than zero and less than or
+--     equal to
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxTessellationPatchSize@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkPipelineTessellationStateCreateInfo-sType-sType# @sType@
+--     /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO'
+--
+-- -   #VUID-VkPipelineTessellationStateCreateInfo-pNext-pNext# @pNext@
+--     /must/ be @NULL@ or a pointer to a valid instance of
+--     'Vulkan.Core11.Promoted_From_VK_KHR_maintenance2.PipelineTessellationDomainOriginStateCreateInfo'
+--
+-- -   #VUID-VkPipelineTessellationStateCreateInfo-sType-unique# The
+--     @sType@ value of each structure in the @pNext@ chain /must/ be
+--     unique
+--
+-- -   #VUID-VkPipelineTessellationStateCreateInfo-flags-zerobitmask#
+--     @flags@ /must/ 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>,
+-- 'GraphicsPipelineCreateInfo',
+-- 'Vulkan.Extensions.VK_NV_device_generated_commands.GraphicsShaderGroupCreateInfoNV',
+-- 'Vulkan.Core10.Enums.PipelineTessellationStateCreateFlags.PipelineTessellationStateCreateFlags',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PipelineTessellationStateCreateInfo (es :: [Type]) = PipelineTessellationStateCreateInfo
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
+    next :: Chain es
+  , -- | @flags@ is reserved for future use.
+    flags :: PipelineTessellationStateCreateFlags
+  , -- | @patchControlPoints@ is the number of control points per patch.
+    patchControlPoints :: Word32
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PipelineTessellationStateCreateInfo (es :: [Type]))
+#endif
+deriving instance Show (Chain es) => Show (PipelineTessellationStateCreateInfo es)
+
+instance Extensible PipelineTessellationStateCreateInfo where
+  extensibleTypeName = "PipelineTessellationStateCreateInfo"
+  setNext PipelineTessellationStateCreateInfo{..} next' = PipelineTessellationStateCreateInfo{next = next', ..}
+  getNext PipelineTessellationStateCreateInfo{..} = next
+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends PipelineTessellationStateCreateInfo e => b) -> Maybe b
+  extends _ f
+    | Just Refl <- eqT @e @PipelineTessellationDomainOriginStateCreateInfo = Just f
+    | otherwise = Nothing
+
+instance ( Extendss PipelineTessellationStateCreateInfo es
+         , PokeChain es ) => ToCStruct (PipelineTessellationStateCreateInfo es) where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PipelineTessellationStateCreateInfo{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO)
+    pNext'' <- fmap castPtr . ContT $ withChain (next)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
+    lift $ poke ((p `plusPtr` 16 :: Ptr PipelineTessellationStateCreateFlags)) (flags)
+    lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) (patchControlPoints)
+    lift $ f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO)
+    pNext' <- fmap castPtr . ContT $ withZeroChain @es
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
+    lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)
+    lift $ f
+
+instance ( Extendss PipelineTessellationStateCreateInfo es
+         , PeekChain es ) => FromCStruct (PipelineTessellationStateCreateInfo es) where
+  peekCStruct p = do
+    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
+    next <- peekChain (castPtr pNext)
+    flags <- peek @PipelineTessellationStateCreateFlags ((p `plusPtr` 16 :: Ptr PipelineTessellationStateCreateFlags))
+    patchControlPoints <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
+    pure $ PipelineTessellationStateCreateInfo
+             next flags patchControlPoints
+
+instance es ~ '[] => Zero (PipelineTessellationStateCreateInfo es) where
+  zero = PipelineTessellationStateCreateInfo
+           ()
+           zero
+           zero
+
+
+-- | VkPipelineViewportStateCreateInfo - Structure specifying parameters of a
+-- newly created pipeline viewport state
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkPipelineViewportStateCreateInfo-viewportCount-01216# If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-multiViewport multiViewport>
+--     feature is not enabled, @viewportCount@ /must/ not be greater than
+--     @1@
+--
+-- -   #VUID-VkPipelineViewportStateCreateInfo-scissorCount-01217# If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-multiViewport multiViewport>
+--     feature is not enabled, @scissorCount@ /must/ not be greater than
+--     @1@
+--
+-- -   #VUID-VkPipelineViewportStateCreateInfo-viewportCount-01218#
+--     @viewportCount@ /must/ be less than or equal to
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxViewports@
+--
+-- -   #VUID-VkPipelineViewportStateCreateInfo-scissorCount-01219#
+--     @scissorCount@ /must/ be less than or equal to
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxViewports@
+--
+-- -   #VUID-VkPipelineViewportStateCreateInfo-x-02821# The @x@ and @y@
+--     members of @offset@ member of any element of @pScissors@ /must/ be
+--     greater than or equal to @0@
+--
+-- -   #VUID-VkPipelineViewportStateCreateInfo-offset-02822# Evaluation of
+--     (@offset.x@ + @extent.width@) /must/ not cause a signed integer
+--     addition overflow for any element of @pScissors@
+--
+-- -   #VUID-VkPipelineViewportStateCreateInfo-offset-02823# Evaluation of
+--     (@offset.y@ + @extent.height@) /must/ not cause a signed integer
+--     addition overflow for any element of @pScissors@
+--
+-- -   #VUID-VkPipelineViewportStateCreateInfo-scissorCount-04134# If
+--     @scissorCount@ and @viewportCount@ are both not dynamic, 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'
+--     set then @viewportCount@ /must/ be @0@, otherwise @viewportCount@
+--     /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'
+--     set then @scissorCount@ /must/ be @0@, otherwise @scissorCount@
+--     /must/ be greater than @0@
+--
+-- -   #VUID-VkPipelineViewportStateCreateInfo-viewportWScalingEnable-01726#
+--     If the @viewportWScalingEnable@ member of a
+--     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV'
+--     structure included in the @pNext@ chain is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', the @viewportCount@ member of
+--     the
+--     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV'
+--     structure /must/ be greater than or equal to
+--     'PipelineViewportStateCreateInfo'::@viewportCount@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkPipelineViewportStateCreateInfo-sType-sType# @sType@ /must/
+--     be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO'
+--
+-- -   #VUID-VkPipelineViewportStateCreateInfo-pNext-pNext# Each @pNext@
+--     member of any structure (including this one) in the @pNext@ chain
+--     /must/ be either @NULL@ or a pointer to a valid instance of
+--     'Vulkan.Extensions.VK_NV_shading_rate_image.PipelineViewportCoarseSampleOrderStateCreateInfoNV',
+--     'Vulkan.Extensions.VK_EXT_depth_clamp_control.PipelineViewportDepthClampControlCreateInfoEXT',
+--     'Vulkan.Extensions.VK_EXT_depth_clip_control.PipelineViewportDepthClipControlCreateInfoEXT',
+--     'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV',
+--     'Vulkan.Extensions.VK_NV_shading_rate_image.PipelineViewportShadingRateImageStateCreateInfoNV',
+--     'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV',
+--     or
+--     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV'
+--
+-- -   #VUID-VkPipelineViewportStateCreateInfo-sType-unique# The @sType@
+--     value of each structure in the @pNext@ chain /must/ be unique
+--
+-- -   #VUID-VkPipelineViewportStateCreateInfo-flags-zerobitmask# @flags@
+--     /must/ 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>,
+-- 'GraphicsPipelineCreateInfo',
+-- 'Vulkan.Core10.Enums.PipelineViewportStateCreateFlags.PipelineViewportStateCreateFlags',
+-- 'Vulkan.Core10.FundamentalTypes.Rect2D',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType', 'Viewport'
+data PipelineViewportStateCreateInfo (es :: [Type]) = PipelineViewportStateCreateInfo
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
+    next :: Chain es
+  , -- | @flags@ is reserved for future use.
+    flags :: PipelineViewportStateCreateFlags
+  , -- | @viewportCount@ is the number of viewports used by the pipeline.
+    viewportCount :: Word32
+  , -- | @pViewports@ is a pointer to an array of 'Viewport' structures, defining
+    -- the viewport transforms. If the viewport state is dynamic, this member
+    -- is ignored.
+    viewports :: Vector Viewport
+  , -- | @scissorCount@ is the number of
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#fragops-scissor scissors>
+    -- and /must/ match the number of viewports.
+    scissorCount :: Word32
+  , -- | @pScissors@ is a pointer to an array of
+    -- 'Vulkan.Core10.FundamentalTypes.Rect2D' structures defining the
+    -- rectangular bounds of the scissor for the corresponding viewport. If the
+    -- scissor state is dynamic, this member is ignored.
+    scissors :: Vector Rect2D
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PipelineViewportStateCreateInfo (es :: [Type]))
+#endif
+deriving instance Show (Chain es) => Show (PipelineViewportStateCreateInfo es)
+
+instance Extensible PipelineViewportStateCreateInfo where
+  extensibleTypeName = "PipelineViewportStateCreateInfo"
+  setNext PipelineViewportStateCreateInfo{..} next' = PipelineViewportStateCreateInfo{next = next', ..}
+  getNext PipelineViewportStateCreateInfo{..} = next
+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends PipelineViewportStateCreateInfo e => b) -> Maybe b
+  extends _ f
+    | Just Refl <- eqT @e @PipelineViewportDepthClampControlCreateInfoEXT = Just f
+    | Just Refl <- eqT @e @PipelineViewportDepthClipControlCreateInfoEXT = Just f
+    | Just Refl <- eqT @e @PipelineViewportCoarseSampleOrderStateCreateInfoNV = Just f
+    | Just Refl <- eqT @e @PipelineViewportShadingRateImageStateCreateInfoNV = Just f
+    | Just Refl <- eqT @e @PipelineViewportExclusiveScissorStateCreateInfoNV = Just f
+    | Just Refl <- eqT @e @PipelineViewportSwizzleStateCreateInfoNV = Just f
+    | Just Refl <- eqT @e @PipelineViewportWScalingStateCreateInfoNV = Just f
+    | otherwise = Nothing
+
+instance ( Extendss PipelineViewportStateCreateInfo es
+         , PokeChain es ) => ToCStruct (PipelineViewportStateCreateInfo es) where
+  withCStruct x f = allocaBytes 48 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PipelineViewportStateCreateInfo{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO)
+    pNext'' <- fmap castPtr . ContT $ withChain (next)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
+    lift $ poke ((p `plusPtr` 16 :: Ptr PipelineViewportStateCreateFlags)) (flags)
+    let pViewportsLength = Data.Vector.length $ (viewports)
+    viewportCount'' <- lift $ if (viewportCount) == 0
+      then pure $ fromIntegral pViewportsLength
+      else do
+        unless (fromIntegral pViewportsLength == (viewportCount) || pViewportsLength == 0) $
+          throwIO $ IOError Nothing InvalidArgument "" "pViewports must be empty or have 'viewportCount' elements" Nothing Nothing
+        pure (viewportCount)
+    lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) (viewportCount'')
+    pViewports'' <- if Data.Vector.null (viewports)
+      then pure nullPtr
+      else do
+        pPViewports <- ContT $ allocaBytes @Viewport (((Data.Vector.length (viewports))) * 24)
+        lift $ Data.Vector.imapM_ (\i e -> poke (pPViewports `plusPtr` (24 * (i)) :: Ptr Viewport) (e)) ((viewports))
+        pure $ pPViewports
+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Viewport))) pViewports''
+    let pScissorsLength = Data.Vector.length $ (scissors)
+    scissorCount'' <- lift $ if (scissorCount) == 0
+      then pure $ fromIntegral pScissorsLength
+      else do
+        unless (fromIntegral pScissorsLength == (scissorCount) || pScissorsLength == 0) $
+          throwIO $ IOError Nothing InvalidArgument "" "pScissors must be empty or have 'scissorCount' elements" Nothing Nothing
+        pure (scissorCount)
+    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) (scissorCount'')
+    pScissors'' <- if Data.Vector.null (scissors)
+      then pure nullPtr
+      else do
+        pPScissors <- ContT $ allocaBytes @Rect2D (((Data.Vector.length (scissors))) * 16)
+        lift $ Data.Vector.imapM_ (\i e -> poke (pPScissors `plusPtr` (16 * (i)) :: Ptr Rect2D) (e)) ((scissors))
+        pure $ pPScissors
+    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr Rect2D))) pScissors''
+    lift $ f
+  cStructSize = 48
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO)
+    pNext' <- fmap castPtr . ContT $ withZeroChain @es
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
+    lift $ f
+
+instance ( Extendss PipelineViewportStateCreateInfo es
+         , PeekChain es ) => FromCStruct (PipelineViewportStateCreateInfo es) where
+  peekCStruct p = do
+    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
+    next <- peekChain (castPtr pNext)
+    flags <- peek @PipelineViewportStateCreateFlags ((p `plusPtr` 16 :: Ptr PipelineViewportStateCreateFlags))
+    viewportCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
+    pViewports <- peek @(Ptr Viewport) ((p `plusPtr` 24 :: Ptr (Ptr Viewport)))
+    let pViewportsLength = if pViewports == nullPtr then 0 else (fromIntegral viewportCount)
+    pViewports' <- generateM pViewportsLength (\i -> peekCStruct @Viewport ((pViewports `advancePtrBytes` (24 * (i)) :: Ptr Viewport)))
+    scissorCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))
+    pScissors <- peek @(Ptr Rect2D) ((p `plusPtr` 40 :: Ptr (Ptr Rect2D)))
+    let pScissorsLength = if pScissors == nullPtr then 0 else (fromIntegral scissorCount)
+    pScissors' <- generateM pScissorsLength (\i -> peekCStruct @Rect2D ((pScissors `advancePtrBytes` (16 * (i)) :: Ptr Rect2D)))
+    pure $ PipelineViewportStateCreateInfo
+             next flags viewportCount pViewports' scissorCount pScissors'
+
+instance es ~ '[] => Zero (PipelineViewportStateCreateInfo es) where
+  zero = PipelineViewportStateCreateInfo
+           ()
+           zero
+           zero
+           mempty
+           zero
+           mempty
+
+
+-- | VkPipelineRasterizationStateCreateInfo - Structure specifying parameters
+-- of a newly created pipeline rasterization state
+--
+-- = Description
+--
+-- The application /can/ also add a
+-- 'Vulkan.Extensions.VK_AMD_rasterization_order.PipelineRasterizationStateRasterizationOrderAMD'
+-- structure to the @pNext@ chain of a
+-- 'PipelineRasterizationStateCreateInfo' structure. This structure enables
+-- selecting the rasterization order to use when rendering with the
+-- corresponding graphics pipeline as described in
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-order Rasterization Order>.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkPipelineRasterizationStateCreateInfo-depthClampEnable-00782#
+--     If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-depthClamp depthClamp>
+--     feature is not enabled, @depthClampEnable@ /must/ be
+--     'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-VkPipelineRasterizationStateCreateInfo-polygonMode-01507# If
+--     the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-fillModeNonSolid fillModeNonSolid>
+--     feature is not enabled, @polygonMode@ /must/ be
+--     'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_FILL' or
+--     'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_FILL_RECTANGLE_NV'
+--
+-- -   #VUID-VkPipelineRasterizationStateCreateInfo-polygonMode-01414# If
+--     the @VK_NV_fill_rectangle@ extension is not enabled, @polygonMode@
+--     /must/ not be
+--     'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_FILL_RECTANGLE_NV'
+--
+-- -   #VUID-VkPipelineRasterizationStateCreateInfo-pointPolygons-04458# If
+--     the @VK_KHR_portability_subset@ extension is enabled, and
+--     'Vulkan.Extensions.VK_KHR_portability_subset.PhysicalDevicePortabilitySubsetFeaturesKHR'::@pointPolygons@
+--     is 'Vulkan.Core10.FundamentalTypes.FALSE', and
+--     @rasterizerDiscardEnable@ is 'Vulkan.Core10.FundamentalTypes.FALSE',
+--     @polygonMode@ /must/ not be
+--     'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_POINT'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkPipelineRasterizationStateCreateInfo-sType-sType# @sType@
+--     /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO'
+--
+-- -   #VUID-VkPipelineRasterizationStateCreateInfo-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_depth_bias_control.DepthBiasRepresentationInfoEXT',
+--     'Vulkan.Extensions.VK_EXT_conservative_rasterization.PipelineRasterizationConservativeStateCreateInfoEXT',
+--     'Vulkan.Extensions.VK_EXT_depth_clip_enable.PipelineRasterizationDepthClipStateCreateInfoEXT',
+--     'Vulkan.Core14.Promoted_From_VK_KHR_line_rasterization.PipelineRasterizationLineStateCreateInfo',
+--     'Vulkan.Extensions.VK_EXT_provoking_vertex.PipelineRasterizationProvokingVertexStateCreateInfoEXT',
+--     'Vulkan.Extensions.VK_AMD_rasterization_order.PipelineRasterizationStateRasterizationOrderAMD',
+--     or
+--     'Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT'
+--
+-- -   #VUID-VkPipelineRasterizationStateCreateInfo-sType-unique# The
+--     @sType@ value of each structure in the @pNext@ chain /must/ be
+--     unique
+--
+-- -   #VUID-VkPipelineRasterizationStateCreateInfo-flags-zerobitmask#
+--     @flags@ /must/ be @0@
+--
+-- -   #VUID-VkPipelineRasterizationStateCreateInfo-polygonMode-parameter#
+--     @polygonMode@ /must/ be a valid
+--     'Vulkan.Core10.Enums.PolygonMode.PolygonMode' value
+--
+-- -   #VUID-VkPipelineRasterizationStateCreateInfo-cullMode-parameter#
+--     @cullMode@ /must/ be a valid combination of
+--     'Vulkan.Core10.Enums.CullModeFlagBits.CullModeFlagBits' values
+--
+-- -   #VUID-VkPipelineRasterizationStateCreateInfo-frontFace-parameter#
+--     @frontFace@ /must/ be a valid
+--     'Vulkan.Core10.Enums.FrontFace.FrontFace' value
+--
+-- = 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.Bool32',
+-- 'Vulkan.Core10.Enums.CullModeFlagBits.CullModeFlags',
+-- 'Vulkan.Core10.Enums.FrontFace.FrontFace', 'GraphicsPipelineCreateInfo',
+-- 'Vulkan.Core10.Enums.PipelineRasterizationStateCreateFlags.PipelineRasterizationStateCreateFlags',
+-- 'Vulkan.Core10.Enums.PolygonMode.PolygonMode',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PipelineRasterizationStateCreateInfo (es :: [Type]) = PipelineRasterizationStateCreateInfo
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
+    next :: Chain es
+  , -- | @flags@ is reserved for future use.
+    flags :: PipelineRasterizationStateCreateFlags
+  , -- | @depthClampEnable@ controls whether to clamp the fragment’s depth values
+    -- as described in
+    -- <https://registry.khronos.org/vulkan/specs/latest/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 frustum as described in
+    -- <https://registry.khronos.org/vulkan/specs/latest/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
+  , -- | @rasterizerDiscardEnable@ controls whether primitives are discarded
+    -- immediately before the rasterization stage.
+    rasterizerDiscardEnable :: Bool
+  , -- | @polygonMode@ is the triangle rendering mode. See
+    -- 'Vulkan.Core10.Enums.PolygonMode.PolygonMode'.
+    polygonMode :: PolygonMode
+  , -- | @cullMode@ is the triangle facing direction used for primitive culling.
+    -- See 'Vulkan.Core10.Enums.CullModeFlagBits.CullModeFlagBits'.
+    cullMode :: CullModeFlags
+  , -- | @frontFace@ is a 'Vulkan.Core10.Enums.FrontFace.FrontFace' value
+    -- specifying the front-facing triangle orientation to be used for culling.
+    frontFace :: FrontFace
+  , -- | @depthBiasEnable@ controls whether to bias fragment depth values.
+    depthBiasEnable :: Bool
+  , -- | @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
+  , -- | @lineWidth@ is the width of rasterized line segments.
+    lineWidth :: Float
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PipelineRasterizationStateCreateInfo (es :: [Type]))
+#endif
+deriving instance Show (Chain es) => Show (PipelineRasterizationStateCreateInfo es)
+
+instance Extensible PipelineRasterizationStateCreateInfo where
+  extensibleTypeName = "PipelineRasterizationStateCreateInfo"
+  setNext PipelineRasterizationStateCreateInfo{..} next' = PipelineRasterizationStateCreateInfo{next = next', ..}
+  getNext PipelineRasterizationStateCreateInfo{..} = next
+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends PipelineRasterizationStateCreateInfo e => b) -> Maybe b
+  extends _ f
+    | Just Refl <- eqT @e @DepthBiasRepresentationInfoEXT = Just f
+    | Just Refl <- eqT @e @PipelineRasterizationProvokingVertexStateCreateInfoEXT = Just f
+    | Just Refl <- eqT @e @PipelineRasterizationLineStateCreateInfo = Just f
+    | Just Refl <- eqT @e @PipelineRasterizationDepthClipStateCreateInfoEXT = Just f
+    | Just Refl <- eqT @e @PipelineRasterizationStateStreamCreateInfoEXT = Just f
+    | Just Refl <- eqT @e @PipelineRasterizationConservativeStateCreateInfoEXT = Just f
+    | Just Refl <- eqT @e @PipelineRasterizationStateRasterizationOrderAMD = Just f
+    | otherwise = Nothing
+
+instance ( Extendss PipelineRasterizationStateCreateInfo es
+         , PokeChain es ) => ToCStruct (PipelineRasterizationStateCreateInfo es) where
+  withCStruct x f = allocaBytes 64 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PipelineRasterizationStateCreateInfo{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO)
+    pNext'' <- fmap castPtr . ContT $ withChain (next)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
+    lift $ poke ((p `plusPtr` 16 :: Ptr PipelineRasterizationStateCreateFlags)) (flags)
+    lift $ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (depthClampEnable))
+    lift $ poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (rasterizerDiscardEnable))
+    lift $ poke ((p `plusPtr` 28 :: Ptr PolygonMode)) (polygonMode)
+    lift $ poke ((p `plusPtr` 32 :: Ptr CullModeFlags)) (cullMode)
+    lift $ poke ((p `plusPtr` 36 :: Ptr FrontFace)) (frontFace)
+    lift $ poke ((p `plusPtr` 40 :: Ptr Bool32)) (boolToBool32 (depthBiasEnable))
+    lift $ poke ((p `plusPtr` 44 :: Ptr CFloat)) (CFloat (depthBiasConstantFactor))
+    lift $ poke ((p `plusPtr` 48 :: Ptr CFloat)) (CFloat (depthBiasClamp))
+    lift $ poke ((p `plusPtr` 52 :: Ptr CFloat)) (CFloat (depthBiasSlopeFactor))
+    lift $ poke ((p `plusPtr` 56 :: Ptr CFloat)) (CFloat (lineWidth))
+    lift $ f
+  cStructSize = 64
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO)
+    pNext' <- fmap castPtr . ContT $ withZeroChain @es
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
+    lift $ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))
+    lift $ poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (zero))
+    lift $ poke ((p `plusPtr` 28 :: Ptr PolygonMode)) (zero)
+    lift $ poke ((p `plusPtr` 36 :: Ptr FrontFace)) (zero)
+    lift $ poke ((p `plusPtr` 40 :: Ptr Bool32)) (boolToBool32 (zero))
+    lift $ poke ((p `plusPtr` 44 :: Ptr CFloat)) (CFloat (zero))
+    lift $ poke ((p `plusPtr` 48 :: Ptr CFloat)) (CFloat (zero))
+    lift $ poke ((p `plusPtr` 52 :: Ptr CFloat)) (CFloat (zero))
+    lift $ poke ((p `plusPtr` 56 :: Ptr CFloat)) (CFloat (zero))
+    lift $ f
+
+instance ( Extendss PipelineRasterizationStateCreateInfo es
+         , PeekChain es ) => FromCStruct (PipelineRasterizationStateCreateInfo es) where
+  peekCStruct p = do
+    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
+    next <- peekChain (castPtr pNext)
+    flags <- peek @PipelineRasterizationStateCreateFlags ((p `plusPtr` 16 :: Ptr PipelineRasterizationStateCreateFlags))
+    depthClampEnable <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
+    rasterizerDiscardEnable <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))
+    polygonMode <- peek @PolygonMode ((p `plusPtr` 28 :: Ptr PolygonMode))
+    cullMode <- peek @CullModeFlags ((p `plusPtr` 32 :: Ptr CullModeFlags))
+    frontFace <- peek @FrontFace ((p `plusPtr` 36 :: Ptr FrontFace))
+    depthBiasEnable <- peek @Bool32 ((p `plusPtr` 40 :: Ptr Bool32))
+    depthBiasConstantFactor <- peek @CFloat ((p `plusPtr` 44 :: Ptr CFloat))
+    depthBiasClamp <- peek @CFloat ((p `plusPtr` 48 :: Ptr CFloat))
+    depthBiasSlopeFactor <- peek @CFloat ((p `plusPtr` 52 :: Ptr CFloat))
+    lineWidth <- peek @CFloat ((p `plusPtr` 56 :: Ptr CFloat))
+    pure $ PipelineRasterizationStateCreateInfo
+             next
+             flags
+             (bool32ToBool depthClampEnable)
+             (bool32ToBool rasterizerDiscardEnable)
+             polygonMode
+             cullMode
+             frontFace
+             (bool32ToBool depthBiasEnable)
+             (coerce @CFloat @Float depthBiasConstantFactor)
+             (coerce @CFloat @Float depthBiasClamp)
+             (coerce @CFloat @Float depthBiasSlopeFactor)
+             (coerce @CFloat @Float lineWidth)
+
+instance es ~ '[] => Zero (PipelineRasterizationStateCreateInfo es) where
+  zero = PipelineRasterizationStateCreateInfo
+           ()
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkPipelineMultisampleStateCreateInfo - Structure specifying parameters
+-- of a newly created pipeline multisample state
+--
+-- = Description
+--
+-- Each bit in the sample mask is associated with a unique
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-multisampling-coverage-mask sample index>
+-- as defined for the
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
+--
+-- If @pSampleMask@ is @NULL@, it is treated as if the mask has all bits
+-- set to @1@.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkPipelineMultisampleStateCreateInfo-sampleShadingEnable-00784#
+--     If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-sampleRateShading sampleRateShading>
+--     feature is not enabled, @sampleShadingEnable@ /must/ be
+--     'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-VkPipelineMultisampleStateCreateInfo-alphaToOneEnable-00785#
+--     If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-alphaToOne alphaToOne>
+--     feature is not enabled, @alphaToOneEnable@ /must/ be
+--     'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-VkPipelineMultisampleStateCreateInfo-minSampleShading-00786#
+--     @minSampleShading@ /must/ be in the range [0,1]
+--
+-- -   #VUID-VkPipelineMultisampleStateCreateInfo-rasterizationSamples-01415#
+--     If the @VK_NV_framebuffer_mixed_samples@ extension is enabled, and
+--     the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-coverageReductionMode coverageReductionMode>
+--     feature is not enabled, or the @pNext@ chain does not contain
+--     'Vulkan.Extensions.VK_NV_coverage_reduction_mode.PipelineCoverageReductionStateCreateInfoNV',
+--     or
+--     'Vulkan.Extensions.VK_NV_coverage_reduction_mode.PipelineCoverageReductionStateCreateInfoNV'::@coverageReductionMode@
+--     is not set to
+--     'Vulkan.Extensions.VK_NV_coverage_reduction_mode.COVERAGE_REDUCTION_MODE_TRUNCATE_NV',
+--     and the subpass has any color attachments, and
+--     @rasterizationSamples@ is greater than the number of color samples,
+--     then
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-sampleshading sample shading>
+--     /must/ not be enabled
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkPipelineMultisampleStateCreateInfo-sType-sType# @sType@
+--     /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO'
+--
+-- -   #VUID-VkPipelineMultisampleStateCreateInfo-pNext-pNext# Each @pNext@
+--     member of any structure (including this one) in the @pNext@ chain
+--     /must/ be either @NULL@ or a pointer to a valid instance of
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.PipelineCoverageModulationStateCreateInfoNV',
+--     'Vulkan.Extensions.VK_NV_coverage_reduction_mode.PipelineCoverageReductionStateCreateInfoNV',
+--     'Vulkan.Extensions.VK_NV_fragment_coverage_to_color.PipelineCoverageToColorStateCreateInfoNV',
+--     or
+--     'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'
+--
+-- -   #VUID-VkPipelineMultisampleStateCreateInfo-sType-unique# The @sType@
+--     value of each structure in the @pNext@ chain /must/ be unique
+--
+-- -   #VUID-VkPipelineMultisampleStateCreateInfo-flags-zerobitmask#
+--     @flags@ /must/ be @0@
+--
+-- -   #VUID-VkPipelineMultisampleStateCreateInfo-rasterizationSamples-parameter#
+--     @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_VERSION_1_0 VK_VERSION_1_0>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32', 'GraphicsPipelineCreateInfo',
+-- 'Vulkan.Core10.Enums.PipelineMultisampleStateCreateFlags.PipelineMultisampleStateCreateFlags',
+-- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits',
+-- 'Vulkan.Core10.FundamentalTypes.SampleMask',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PipelineMultisampleStateCreateInfo (es :: [Type]) = PipelineMultisampleStateCreateInfo
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
+    next :: Chain es
+  , -- | @flags@ is reserved for future use.
+    flags :: PipelineMultisampleStateCreateFlags
+  , -- | @rasterizationSamples@ is a
+    -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' value
+    -- specifying the number of samples used in rasterization. This value is
+    -- ignored for the purposes of setting the number of samples used in
+    -- rasterization if the pipeline is created with the
+    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+    -- dynamic state set, but if
+    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT' dynamic
+    -- state is not set, it is still used to define the size of the
+    -- @pSampleMask@ array as described below.
+    rasterizationSamples :: SampleCountFlagBits
+  , -- | @sampleShadingEnable@ /can/ be used to enable
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-sampleshading Sample Shading>.
+    sampleShadingEnable :: Bool
+  , -- | @minSampleShading@ specifies a minimum fraction of sample shading if
+    -- @sampleShadingEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE'.
+    minSampleShading :: Float
+  , -- | @pSampleMask@ is a pointer to an array of
+    -- 'Vulkan.Core10.FundamentalTypes.SampleMask' values used in the
+    -- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#fragops-covg Multisample Coverage>.
+    alphaToOneEnable :: Bool
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PipelineMultisampleStateCreateInfo (es :: [Type]))
+#endif
+deriving instance Show (Chain es) => Show (PipelineMultisampleStateCreateInfo es)
+
+instance Extensible PipelineMultisampleStateCreateInfo where
+  extensibleTypeName = "PipelineMultisampleStateCreateInfo"
+  setNext PipelineMultisampleStateCreateInfo{..} next' = PipelineMultisampleStateCreateInfo{next = next', ..}
+  getNext PipelineMultisampleStateCreateInfo{..} = next
+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends PipelineMultisampleStateCreateInfo e => b) -> Maybe b
+  extends _ f
+    | Just Refl <- eqT @e @PipelineCoverageReductionStateCreateInfoNV = Just f
+    | Just Refl <- eqT @e @PipelineCoverageModulationStateCreateInfoNV = Just f
+    | Just Refl <- eqT @e @PipelineSampleLocationsStateCreateInfoEXT = Just f
+    | Just Refl <- eqT @e @PipelineCoverageToColorStateCreateInfoNV = Just f
+    | otherwise = Nothing
+
+instance ( Extendss PipelineMultisampleStateCreateInfo es
+         , PokeChain es ) => ToCStruct (PipelineMultisampleStateCreateInfo es) where
+  withCStruct x f = allocaBytes 48 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PipelineMultisampleStateCreateInfo{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO)
+    pNext'' <- fmap castPtr . ContT $ withChain (next)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
+    lift $ poke ((p `plusPtr` 16 :: Ptr PipelineMultisampleStateCreateFlags)) (flags)
+    lift $ poke ((p `plusPtr` 20 :: Ptr SampleCountFlagBits)) (rasterizationSamples)
+    lift $ poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (sampleShadingEnable))
+    lift $ poke ((p `plusPtr` 28 :: Ptr CFloat)) (CFloat (minSampleShading))
+    pSampleMask'' <- case Data.Vector.length (sampleMask) of
+      0      -> pure nullPtr
+      vecLen -> do
+        let requiredLen = case (rasterizationSamples) of
+              SampleCountFlagBits n -> (n + 31) `quot` 32
+        lift $ unless (requiredLen == fromIntegral vecLen) $
+          throwIO $ IOError Nothing InvalidArgument "" "sampleMask must be either empty or contain enough bits to cover all the sample specified by 'rasterizationSamples'" Nothing Nothing
+        do
+          pPSampleMask' <- ContT $ allocaBytes @SampleMask ((Data.Vector.length ((sampleMask))) * 4)
+          lift $ Data.Vector.imapM_ (\i e -> poke (pPSampleMask' `plusPtr` (4 * (i)) :: Ptr SampleMask) (e)) ((sampleMask))
+          pure $ pPSampleMask'
+    lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr SampleMask))) pSampleMask''
+    lift $ poke ((p `plusPtr` 40 :: Ptr Bool32)) (boolToBool32 (alphaToCoverageEnable))
+    lift $ poke ((p `plusPtr` 44 :: Ptr Bool32)) (boolToBool32 (alphaToOneEnable))
+    lift $ f
+  cStructSize = 48
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO)
+    pNext' <- fmap castPtr . ContT $ withZeroChain @es
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
+    lift $ poke ((p `plusPtr` 20 :: Ptr SampleCountFlagBits)) (zero)
+    lift $ poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (zero))
+    lift $ poke ((p `plusPtr` 28 :: Ptr CFloat)) (CFloat (zero))
+    lift $ poke ((p `plusPtr` 40 :: Ptr Bool32)) (boolToBool32 (zero))
+    lift $ poke ((p `plusPtr` 44 :: Ptr Bool32)) (boolToBool32 (zero))
+    lift $ f
+
+instance ( Extendss PipelineMultisampleStateCreateInfo es
+         , PeekChain es ) => FromCStruct (PipelineMultisampleStateCreateInfo es) where
+  peekCStruct p = do
+    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
+    next <- peekChain (castPtr pNext)
+    flags <- peek @PipelineMultisampleStateCreateFlags ((p `plusPtr` 16 :: Ptr PipelineMultisampleStateCreateFlags))
+    rasterizationSamples <- peek @SampleCountFlagBits ((p `plusPtr` 20 :: Ptr SampleCountFlagBits))
+    sampleShadingEnable <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))
+    minSampleShading <- peek @CFloat ((p `plusPtr` 28 :: Ptr CFloat))
+    pSampleMask <- peek @(Ptr SampleMask) ((p `plusPtr` 32 :: Ptr (Ptr SampleMask)))
+    pSampleMask' <- if pSampleMask == nullPtr
+      then pure mempty
+      else generateM (case rasterizationSamples of
+        SampleCountFlagBits n -> (fromIntegral n + 31) `quot` 32) (\i -> peek @SampleMask (((pSampleMask) `advancePtrBytes` (4 * (i)) :: Ptr SampleMask)))
+    alphaToCoverageEnable <- peek @Bool32 ((p `plusPtr` 40 :: Ptr Bool32))
+    alphaToOneEnable <- peek @Bool32 ((p `plusPtr` 44 :: Ptr Bool32))
+    pure $ PipelineMultisampleStateCreateInfo
+             next
+             flags
+             rasterizationSamples
+             (bool32ToBool sampleShadingEnable)
+             (coerce @CFloat @Float minSampleShading)
+             pSampleMask'
+             (bool32ToBool alphaToCoverageEnable)
+             (bool32ToBool alphaToOneEnable)
+
+instance es ~ '[] => Zero (PipelineMultisampleStateCreateInfo es) where
+  zero = PipelineMultisampleStateCreateInfo
+           ()
+           zero
+           zero
+           zero
+           zero
+           mempty
+           zero
+           zero
+
+
+-- | VkPipelineColorBlendAttachmentState - Structure specifying a pipeline
+-- color blend attachment state
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkPipelineColorBlendAttachmentState-srcColorBlendFactor-00608#
+--     If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-dualSrcBlend dualSrcBlend>
+--     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',
+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_SRC1_ALPHA', or
+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA'
+--
+-- -   #VUID-VkPipelineColorBlendAttachmentState-dstColorBlendFactor-00609#
+--     If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-dualSrcBlend dualSrcBlend>
+--     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',
+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_SRC1_ALPHA', or
+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA'
+--
+-- -   #VUID-VkPipelineColorBlendAttachmentState-srcAlphaBlendFactor-00610#
+--     If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-dualSrcBlend dualSrcBlend>
+--     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',
+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_SRC1_ALPHA', or
+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA'
+--
+-- -   #VUID-VkPipelineColorBlendAttachmentState-dstAlphaBlendFactor-00611#
+--     If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-dualSrcBlend dualSrcBlend>
+--     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',
+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_SRC1_ALPHA', or
+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA'
+--
+-- -   #VUID-VkPipelineColorBlendAttachmentState-colorBlendOp-01406# If
+--     either of @colorBlendOp@ or @alphaBlendOp@ is an
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#framebuffer-blend-advanced advanced blend operation>,
+--     then @alphaBlendOp@ /must/ be the same for all attachments
+--
+-- -   #VUID-VkPipelineColorBlendAttachmentState-advancedBlendAllOperations-01409#
+--     If
+--     'Vulkan.Extensions.VK_EXT_blend_operation_advanced.PhysicalDeviceBlendOperationAdvancedPropertiesEXT'::@advancedBlendAllOperations@
+--     is 'Vulkan.Core10.FundamentalTypes.FALSE', then @colorBlendOp@
+--     /must/ not be 'Vulkan.Core10.Enums.BlendOp.BLEND_OP_ZERO_EXT',
+--     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_SRC_EXT',
+--     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_DST_EXT',
+--     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_SRC_OVER_EXT',
+--     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_DST_OVER_EXT',
+--     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_SRC_IN_EXT',
+--     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_DST_IN_EXT',
+--     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_SRC_OUT_EXT',
+--     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_DST_OUT_EXT',
+--     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_SRC_ATOP_EXT',
+--     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_DST_ATOP_EXT',
+--     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_XOR_EXT',
+--     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_INVERT_EXT',
+--     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_INVERT_RGB_EXT',
+--     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_LINEARDODGE_EXT',
+--     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_LINEARBURN_EXT',
+--     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_VIVIDLIGHT_EXT',
+--     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_LINEARLIGHT_EXT',
+--     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_PINLIGHT_EXT',
+--     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_HARDMIX_EXT',
+--     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_PLUS_EXT',
+--     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_PLUS_CLAMPED_EXT',
+--     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_PLUS_CLAMPED_ALPHA_EXT',
+--     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_PLUS_DARKER_EXT',
+--     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_MINUS_EXT',
+--     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_MINUS_CLAMPED_EXT',
+--     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_CONTRAST_EXT',
+--     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_INVERT_OVG_EXT',
+--     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_RED_EXT',
+--     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_GREEN_EXT', or
+--     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_BLUE_EXT'
+--
+-- -   #VUID-VkPipelineColorBlendAttachmentState-colorBlendOp-01410# If
+--     @colorBlendOp@ or @alphaBlendOp@ is an
+--     <https://registry.khronos.org/vulkan/specs/latest/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@
+--
+-- -   #VUID-VkPipelineColorBlendAttachmentState-constantAlphaColorBlendFactors-04454#
+--     If the @VK_KHR_portability_subset@ extension is enabled, and
+--     'Vulkan.Extensions.VK_KHR_portability_subset.PhysicalDevicePortabilitySubsetFeaturesKHR'::@constantAlphaColorBlendFactors@
+--     is 'Vulkan.Core10.FundamentalTypes.FALSE', @srcColorBlendFactor@
+--     /must/ not be
+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_ALPHA' or
+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA'
+--
+-- -   #VUID-VkPipelineColorBlendAttachmentState-constantAlphaColorBlendFactors-04455#
+--     If the @VK_KHR_portability_subset@ extension is enabled, and
+--     'Vulkan.Extensions.VK_KHR_portability_subset.PhysicalDevicePortabilitySubsetFeaturesKHR'::@constantAlphaColorBlendFactors@
+--     is 'Vulkan.Core10.FundamentalTypes.FALSE', @dstColorBlendFactor@
+--     /must/ not be
+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_ALPHA' or
+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkPipelineColorBlendAttachmentState-srcColorBlendFactor-parameter#
+--     @srcColorBlendFactor@ /must/ be a valid
+--     'Vulkan.Core10.Enums.BlendFactor.BlendFactor' value
+--
+-- -   #VUID-VkPipelineColorBlendAttachmentState-dstColorBlendFactor-parameter#
+--     @dstColorBlendFactor@ /must/ be a valid
+--     'Vulkan.Core10.Enums.BlendFactor.BlendFactor' value
+--
+-- -   #VUID-VkPipelineColorBlendAttachmentState-colorBlendOp-parameter#
+--     @colorBlendOp@ /must/ be a valid
+--     'Vulkan.Core10.Enums.BlendOp.BlendOp' value
+--
+-- -   #VUID-VkPipelineColorBlendAttachmentState-srcAlphaBlendFactor-parameter#
+--     @srcAlphaBlendFactor@ /must/ be a valid
+--     'Vulkan.Core10.Enums.BlendFactor.BlendFactor' value
+--
+-- -   #VUID-VkPipelineColorBlendAttachmentState-dstAlphaBlendFactor-parameter#
+--     @dstAlphaBlendFactor@ /must/ be a valid
+--     'Vulkan.Core10.Enums.BlendFactor.BlendFactor' value
+--
+-- -   #VUID-VkPipelineColorBlendAttachmentState-alphaBlendOp-parameter#
+--     @alphaBlendOp@ /must/ be a valid
+--     'Vulkan.Core10.Enums.BlendOp.BlendOp' value
+--
+-- -   #VUID-VkPipelineColorBlendAttachmentState-colorWriteMask-parameter#
+--     @colorWriteMask@ /must/ be a valid combination of
+--     'Vulkan.Core10.Enums.ColorComponentFlagBits.ColorComponentFlagBits'
+--     values
+--
+-- = 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.Enums.BlendFactor.BlendFactor',
+-- 'Vulkan.Core10.Enums.BlendOp.BlendOp',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.ColorComponentFlagBits.ColorComponentFlags',
+-- 'PipelineColorBlendStateCreateInfo'
+data PipelineColorBlendAttachmentState = PipelineColorBlendAttachmentState
+  { -- | @blendEnable@ controls whether blending is enabled for the corresponding
+    -- color attachment. If blending is not enabled, the source fragment’s
+    -- color for that attachment is passed through unmodified.
+    blendEnable :: Bool
+  , -- | @srcColorBlendFactor@ selects which blend factor is used to determine
+    -- the source factors (Sr,Sg,Sb).
+    srcColorBlendFactor :: BlendFactor
+  , -- | @dstColorBlendFactor@ selects which blend factor is used to determine
+    -- the destination factors (Dr,Dg,Db).
+    dstColorBlendFactor :: BlendFactor
+  , -- | @colorBlendOp@ selects which blend operation is used to calculate the
+    -- RGB values to write to the color attachment.
+    colorBlendOp :: BlendOp
+  , -- | @srcAlphaBlendFactor@ selects which blend factor is used to determine
+    -- the source factor Sa.
+    srcAlphaBlendFactor :: BlendFactor
+  , -- | @dstAlphaBlendFactor@ selects which blend factor is used to determine
+    -- the destination factor Da.
+    dstAlphaBlendFactor :: BlendFactor
+  , -- | @alphaBlendOp@ selects which blend operation is used to calculate the
+    -- alpha values to write to the color attachment.
+    alphaBlendOp :: BlendOp
+  , -- | @colorWriteMask@ is a bitmask of
+    -- '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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#framebuffer-color-write-mask Color Write Mask>.
+    colorWriteMask :: ColorComponentFlags
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PipelineColorBlendAttachmentState)
+#endif
+deriving instance Show PipelineColorBlendAttachmentState
+
+instance ToCStruct PipelineColorBlendAttachmentState where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PipelineColorBlendAttachmentState{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr Bool32)) (boolToBool32 (blendEnable))
+    poke ((p `plusPtr` 4 :: Ptr BlendFactor)) (srcColorBlendFactor)
+    poke ((p `plusPtr` 8 :: Ptr BlendFactor)) (dstColorBlendFactor)
+    poke ((p `plusPtr` 12 :: Ptr BlendOp)) (colorBlendOp)
+    poke ((p `plusPtr` 16 :: Ptr BlendFactor)) (srcAlphaBlendFactor)
+    poke ((p `plusPtr` 20 :: Ptr BlendFactor)) (dstAlphaBlendFactor)
+    poke ((p `plusPtr` 24 :: Ptr BlendOp)) (alphaBlendOp)
+    poke ((p `plusPtr` 28 :: Ptr ColorComponentFlags)) (colorWriteMask)
+    f
+  cStructSize = 32
+  cStructAlignment = 4
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 4 :: Ptr BlendFactor)) (zero)
+    poke ((p `plusPtr` 8 :: Ptr BlendFactor)) (zero)
+    poke ((p `plusPtr` 12 :: Ptr BlendOp)) (zero)
+    poke ((p `plusPtr` 16 :: Ptr BlendFactor)) (zero)
+    poke ((p `plusPtr` 20 :: Ptr BlendFactor)) (zero)
+    poke ((p `plusPtr` 24 :: Ptr BlendOp)) (zero)
+    f
+
+instance FromCStruct PipelineColorBlendAttachmentState where
+  peekCStruct p = do
+    blendEnable <- peek @Bool32 ((p `plusPtr` 0 :: Ptr Bool32))
+    srcColorBlendFactor <- peek @BlendFactor ((p `plusPtr` 4 :: Ptr BlendFactor))
+    dstColorBlendFactor <- peek @BlendFactor ((p `plusPtr` 8 :: Ptr BlendFactor))
+    colorBlendOp <- peek @BlendOp ((p `plusPtr` 12 :: Ptr BlendOp))
+    srcAlphaBlendFactor <- peek @BlendFactor ((p `plusPtr` 16 :: Ptr BlendFactor))
+    dstAlphaBlendFactor <- peek @BlendFactor ((p `plusPtr` 20 :: Ptr BlendFactor))
+    alphaBlendOp <- peek @BlendOp ((p `plusPtr` 24 :: Ptr BlendOp))
+    colorWriteMask <- peek @ColorComponentFlags ((p `plusPtr` 28 :: Ptr ColorComponentFlags))
+    pure $ PipelineColorBlendAttachmentState
+             (bool32ToBool blendEnable)
+             srcColorBlendFactor
+             dstColorBlendFactor
+             colorBlendOp
+             srcAlphaBlendFactor
+             dstAlphaBlendFactor
+             alphaBlendOp
+             colorWriteMask
+
+instance Storable PipelineColorBlendAttachmentState where
+  sizeOf ~_ = 32
+  alignment ~_ = 4
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PipelineColorBlendAttachmentState where
+  zero = PipelineColorBlendAttachmentState
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkPipelineColorBlendStateCreateInfo - Structure specifying parameters of
+-- a newly created pipeline color blend state
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkPipelineColorBlendStateCreateInfo-pAttachments-00605# If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-independentBlend independentBlend>
+--     feature is not enabled, all elements of @pAttachments@ /must/ be
+--     identical
+--
+-- -   #VUID-VkPipelineColorBlendStateCreateInfo-logicOpEnable-00606# If
+--     the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-logicOp logicOp>
+--     feature is not enabled, @logicOpEnable@ /must/ be
+--     'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-VkPipelineColorBlendStateCreateInfo-logicOpEnable-00607# If
+--     @logicOpEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', @logicOp@
+--     /must/ be a valid 'Vulkan.Core10.Enums.LogicOp.LogicOp' value
+--
+-- -   #VUID-VkPipelineColorBlendStateCreateInfo-rasterizationOrderColorAttachmentAccess-06465#
+--     If the
+--     <https://registry.khronos.org/vulkan/specs/latest/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_EXT'
+--
+-- -   #VUID-VkPipelineColorBlendStateCreateInfo-pAttachments-07353# If
+--     @attachmentCount@ is not @0@ , and any of
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT',
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT',
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT',
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT'
+--     are not set, @pAttachments@ /must/ be a valid pointer to an array of
+--     @attachmentCount@ valid 'PipelineColorBlendAttachmentState'
+--     structures
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkPipelineColorBlendStateCreateInfo-sType-sType# @sType@
+--     /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO'
+--
+-- -   #VUID-VkPipelineColorBlendStateCreateInfo-pNext-pNext# Each @pNext@
+--     member of any structure (including this one) in the @pNext@ chain
+--     /must/ be either @NULL@ or a pointer to a valid instance of
+--     'Vulkan.Extensions.VK_EXT_blend_operation_advanced.PipelineColorBlendAdvancedStateCreateInfoEXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_color_write_enable.PipelineColorWriteCreateInfoEXT'
+--
+-- -   #VUID-VkPipelineColorBlendStateCreateInfo-sType-unique# The @sType@
+--     value of each structure in the @pNext@ chain /must/ be unique
+--
+-- -   #VUID-VkPipelineColorBlendStateCreateInfo-flags-parameter# @flags@
+--     /must/ be a valid combination of
+--     'Vulkan.Core10.Enums.PipelineColorBlendStateCreateFlagBits.PipelineColorBlendStateCreateFlagBits'
+--     values
+--
+-- -   #VUID-VkPipelineColorBlendStateCreateInfo-pAttachments-parameter# If
+--     @attachmentCount@ is not @0@, and @pAttachments@ is not @NULL@,
+--     @pAttachments@ /must/ be a valid pointer to an array of
+--     @attachmentCount@ valid 'PipelineColorBlendAttachmentState'
+--     structures
+--
+-- = 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.Bool32', 'GraphicsPipelineCreateInfo',
+-- 'Vulkan.Core10.Enums.LogicOp.LogicOp',
+-- 'PipelineColorBlendAttachmentState',
+-- 'Vulkan.Core10.Enums.PipelineColorBlendStateCreateFlagBits.PipelineColorBlendStateCreateFlags',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PipelineColorBlendStateCreateInfo (es :: [Type]) = PipelineColorBlendStateCreateInfo
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
+    next :: Chain es
+  , -- | @flags@ is a bitmask of
+    -- 'Vulkan.Core10.Enums.PipelineColorBlendStateCreateFlagBits.PipelineColorBlendStateCreateFlagBits'
+    -- specifying additional color blending information.
+    flags :: PipelineColorBlendStateCreateFlags
+  , -- | @logicOpEnable@ controls whether to apply
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#framebuffer-logicop Logical Operations>.
+    logicOpEnable :: Bool
+  , -- | @logicOp@ selects which logical operation to apply.
+    logicOp :: LogicOp
+  , -- | @attachmentCount@ is the number of 'PipelineColorBlendAttachmentState'
+    -- elements in @pAttachments@. It is ignored if the pipeline is created
+    -- with
+    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT',
+    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT',
+    -- and
+    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT'
+    -- dynamic states set, and either
+    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
+    -- set or the
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-advancedBlendCoherentOperations advancedBlendCoherentOperations>
+    -- feature is not enabled.
+    attachmentCount :: Word32
+  , -- | @pAttachments@ is a pointer to an array of
+    -- 'PipelineColorBlendAttachmentState' structures defining blend state for
+    -- each color attachment. It is ignored if the pipeline is created with
+    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT',
+    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT',
+    -- and
+    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT'
+    -- dynamic states set, and either
+    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
+    -- set or the
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-advancedBlendCoherentOperations advancedBlendCoherentOperations>
+    -- feature is not enabled.
+    attachments :: Vector PipelineColorBlendAttachmentState
+  , -- | @blendConstants@ is a pointer to an array of four values used as the R,
+    -- G, B, and A components of the blend constant that are used in blending,
+    -- depending on the
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#framebuffer-blendfactors blend factor>.
+    blendConstants :: (Float, Float, Float, Float)
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PipelineColorBlendStateCreateInfo (es :: [Type]))
+#endif
+deriving instance Show (Chain es) => Show (PipelineColorBlendStateCreateInfo es)
+
+instance Extensible PipelineColorBlendStateCreateInfo where
+  extensibleTypeName = "PipelineColorBlendStateCreateInfo"
+  setNext PipelineColorBlendStateCreateInfo{..} next' = PipelineColorBlendStateCreateInfo{next = next', ..}
+  getNext PipelineColorBlendStateCreateInfo{..} = next
+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends PipelineColorBlendStateCreateInfo e => b) -> Maybe b
+  extends _ f
+    | Just Refl <- eqT @e @PipelineColorWriteCreateInfoEXT = Just f
+    | Just Refl <- eqT @e @PipelineColorBlendAdvancedStateCreateInfoEXT = Just f
+    | otherwise = Nothing
+
+instance ( Extendss PipelineColorBlendStateCreateInfo es
+         , PokeChain es ) => ToCStruct (PipelineColorBlendStateCreateInfo es) where
+  withCStruct x f = allocaBytes 56 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PipelineColorBlendStateCreateInfo{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO)
+    pNext'' <- fmap castPtr . ContT $ withChain (next)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
+    lift $ poke ((p `plusPtr` 16 :: Ptr PipelineColorBlendStateCreateFlags)) (flags)
+    lift $ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (logicOpEnable))
+    lift $ poke ((p `plusPtr` 24 :: Ptr LogicOp)) (logicOp)
+    let pAttachmentsLength = Data.Vector.length $ (attachments)
+    attachmentCount'' <- lift $ if (attachmentCount) == 0
+      then pure $ fromIntegral pAttachmentsLength
+      else do
+        unless (fromIntegral pAttachmentsLength == (attachmentCount) || pAttachmentsLength == 0) $
+          throwIO $ IOError Nothing InvalidArgument "" "pAttachments must be empty or have 'attachmentCount' elements" Nothing Nothing
+        pure (attachmentCount)
+    lift $ poke ((p `plusPtr` 28 :: Ptr Word32)) (attachmentCount'')
+    pAttachments'' <- if Data.Vector.null (attachments)
+      then pure nullPtr
+      else do
+        pPAttachments <- ContT $ allocaBytes @PipelineColorBlendAttachmentState (((Data.Vector.length (attachments))) * 32)
+        lift $ Data.Vector.imapM_ (\i e -> poke (pPAttachments `plusPtr` (32 * (i)) :: Ptr PipelineColorBlendAttachmentState) (e)) ((attachments))
+        pure $ pPAttachments
+    lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr PipelineColorBlendAttachmentState))) pAttachments''
+    let pBlendConstants' = lowerArrayPtr ((p `plusPtr` 40 :: Ptr (FixedArray 4 CFloat)))
+    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 $ f
+  cStructSize = 56
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO)
+    pNext' <- fmap castPtr . ContT $ withZeroChain @es
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
+    lift $ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))
+    lift $ poke ((p `plusPtr` 24 :: Ptr LogicOp)) (zero)
+    let pBlendConstants' = lowerArrayPtr ((p `plusPtr` 40 :: Ptr (FixedArray 4 CFloat)))
+    lift $ case ((zero, zero, zero, zero)) 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 $ f
+
+instance ( Extendss PipelineColorBlendStateCreateInfo es
+         , PeekChain es ) => FromCStruct (PipelineColorBlendStateCreateInfo es) where
+  peekCStruct p = do
+    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
+    next <- peekChain (castPtr pNext)
+    flags <- peek @PipelineColorBlendStateCreateFlags ((p `plusPtr` 16 :: Ptr PipelineColorBlendStateCreateFlags))
+    logicOpEnable <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
+    logicOp <- peek @LogicOp ((p `plusPtr` 24 :: Ptr LogicOp))
+    attachmentCount <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))
+    pAttachments <- peek @(Ptr PipelineColorBlendAttachmentState) ((p `plusPtr` 32 :: Ptr (Ptr PipelineColorBlendAttachmentState)))
+    let pAttachmentsLength = if pAttachments == nullPtr then 0 else (fromIntegral attachmentCount)
+    pAttachments' <- generateM pAttachmentsLength (\i -> peekCStruct @PipelineColorBlendAttachmentState ((pAttachments `advancePtrBytes` (32 * (i)) :: Ptr PipelineColorBlendAttachmentState)))
+    let pblendConstants = lowerArrayPtr @CFloat ((p `plusPtr` 40 :: Ptr (FixedArray 4 CFloat)))
+    blendConstants0 <- peek @CFloat ((pblendConstants `advancePtrBytes` 0 :: Ptr CFloat))
+    blendConstants1 <- peek @CFloat ((pblendConstants `advancePtrBytes` 4 :: Ptr CFloat))
+    blendConstants2 <- peek @CFloat ((pblendConstants `advancePtrBytes` 8 :: Ptr CFloat))
+    blendConstants3 <- peek @CFloat ((pblendConstants `advancePtrBytes` 12 :: Ptr CFloat))
+    pure $ PipelineColorBlendStateCreateInfo
+             next
+             flags
+             (bool32ToBool logicOpEnable)
+             logicOp
+             attachmentCount
+             pAttachments'
+             (( (coerce @CFloat @Float blendConstants0)
+              , (coerce @CFloat @Float blendConstants1)
+              , (coerce @CFloat @Float blendConstants2)
+              , (coerce @CFloat @Float blendConstants3) ))
+
+instance es ~ '[] => Zero (PipelineColorBlendStateCreateInfo es) where
+  zero = PipelineColorBlendStateCreateInfo
+           ()
+           zero
+           zero
+           zero
+           zero
+           mempty
+           (zero, zero, zero, zero)
+
+
+-- | VkPipelineDynamicStateCreateInfo - Structure specifying parameters of a
+-- newly created pipeline dynamic state
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkPipelineDynamicStateCreateInfo-pDynamicStates-01442# Each
+--     element of @pDynamicStates@ /must/ be unique
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkPipelineDynamicStateCreateInfo-sType-sType# @sType@ /must/
+--     be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO'
+--
+-- -   #VUID-VkPipelineDynamicStateCreateInfo-pNext-pNext# @pNext@ /must/
+--     be @NULL@
+--
+-- -   #VUID-VkPipelineDynamicStateCreateInfo-flags-zerobitmask# @flags@
+--     /must/ be @0@
+--
+-- -   #VUID-VkPipelineDynamicStateCreateInfo-pDynamicStates-parameter# If
+--     @dynamicStateCount@ is not @0@, @pDynamicStates@ /must/ be a valid
+--     pointer to an array of @dynamicStateCount@ valid
+--     'Vulkan.Core10.Enums.DynamicState.DynamicState' values
+--
+-- = 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.Enums.DynamicState.DynamicState',
+-- 'GraphicsPipelineCreateInfo',
+-- 'Vulkan.Core10.Enums.PipelineDynamicStateCreateFlags.PipelineDynamicStateCreateFlags',
+-- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingPipelineCreateInfoKHR',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PipelineDynamicStateCreateInfo = PipelineDynamicStateCreateInfo
+  { -- | @flags@ is reserved for future use.
+    flags :: PipelineDynamicStateCreateFlags
+  , -- | @pDynamicStates@ is a pointer to an array of
+    -- 'Vulkan.Core10.Enums.DynamicState.DynamicState' values specifying which
+    -- pieces of pipeline state will use the values from dynamic state commands
+    -- rather than from pipeline state creation information.
+    dynamicStates :: Vector DynamicState
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PipelineDynamicStateCreateInfo)
+#endif
+deriving instance Show PipelineDynamicStateCreateInfo
+
+instance ToCStruct PipelineDynamicStateCreateInfo where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PipelineDynamicStateCreateInfo{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr PipelineDynamicStateCreateFlags)) (flags)
+    lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (dynamicStates)) :: Word32))
+    pPDynamicStates' <- ContT $ allocaBytes @DynamicState ((Data.Vector.length (dynamicStates)) * 4)
+    lift $ Data.Vector.imapM_ (\i e -> poke (pPDynamicStates' `plusPtr` (4 * (i)) :: Ptr DynamicState) (e)) (dynamicStates)
+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr DynamicState))) (pPDynamicStates')
+    lift $ f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    f
+
+instance FromCStruct PipelineDynamicStateCreateInfo where
+  peekCStruct p = do
+    flags <- peek @PipelineDynamicStateCreateFlags ((p `plusPtr` 16 :: Ptr PipelineDynamicStateCreateFlags))
+    dynamicStateCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
+    pDynamicStates <- peek @(Ptr DynamicState) ((p `plusPtr` 24 :: Ptr (Ptr DynamicState)))
+    pDynamicStates' <- generateM (fromIntegral dynamicStateCount) (\i -> peek @DynamicState ((pDynamicStates `advancePtrBytes` (4 * (i)) :: Ptr DynamicState)))
+    pure $ PipelineDynamicStateCreateInfo
+             flags pDynamicStates'
+
+instance Zero PipelineDynamicStateCreateInfo where
+  zero = PipelineDynamicStateCreateInfo
+           zero
+           mempty
+
+
+-- | VkStencilOpState - Structure specifying stencil operation state
+--
+-- == Valid Usage (Implicit)
+--
+-- = 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.Enums.CompareOp.CompareOp',
+-- 'PipelineDepthStencilStateCreateInfo',
+-- 'Vulkan.Core10.Enums.StencilOp.StencilOp'
+data StencilOpState = StencilOpState
+  { -- | @failOp@ is a 'Vulkan.Core10.Enums.StencilOp.StencilOp' value specifying
+    -- the action performed on samples that fail the stencil test.
+    --
+    -- #VUID-VkStencilOpState-failOp-parameter# @failOp@ /must/ be a valid
+    -- 'Vulkan.Core10.Enums.StencilOp.StencilOp' value
+    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.
+    --
+    -- #VUID-VkStencilOpState-passOp-parameter# @passOp@ /must/ be a valid
+    -- 'Vulkan.Core10.Enums.StencilOp.StencilOp' value
+    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.
+    --
+    -- #VUID-VkStencilOpState-depthFailOp-parameter# @depthFailOp@ /must/ be a
+    -- valid 'Vulkan.Core10.Enums.StencilOp.StencilOp' value
+    depthFailOp :: StencilOp
+  , -- | @compareOp@ is a 'Vulkan.Core10.Enums.CompareOp.CompareOp' value
+    -- specifying the comparison operator used in the stencil test.
+    --
+    -- #VUID-VkStencilOpState-compareOp-parameter# @compareOp@ /must/ be a
+    -- valid 'Vulkan.Core10.Enums.CompareOp.CompareOp' value
+    compareOp :: CompareOp
+  , -- | @compareMask@ selects the bits of the unsigned integer stencil values
+    -- participating in the stencil test.
+    compareMask :: Word32
+  , -- | @writeMask@ selects the bits of the unsigned integer stencil values
+    -- updated by the stencil test in the stencil framebuffer attachment.
+    writeMask :: Word32
+  , -- | @reference@ is an integer stencil reference value that is used in the
+    -- unsigned stencil comparison.
+    reference :: Word32
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (StencilOpState)
+#endif
+deriving instance Show StencilOpState
+
+instance ToCStruct StencilOpState where
+  withCStruct x f = allocaBytes 28 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p StencilOpState{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StencilOp)) (failOp)
+    poke ((p `plusPtr` 4 :: Ptr StencilOp)) (passOp)
+    poke ((p `plusPtr` 8 :: Ptr StencilOp)) (depthFailOp)
+    poke ((p `plusPtr` 12 :: Ptr CompareOp)) (compareOp)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (compareMask)
+    poke ((p `plusPtr` 20 :: Ptr Word32)) (writeMask)
+    poke ((p `plusPtr` 24 :: Ptr Word32)) (reference)
+    f
+  cStructSize = 28
+  cStructAlignment = 4
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StencilOp)) (zero)
+    poke ((p `plusPtr` 4 :: Ptr StencilOp)) (zero)
+    poke ((p `plusPtr` 8 :: Ptr StencilOp)) (zero)
+    poke ((p `plusPtr` 12 :: Ptr CompareOp)) (zero)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct StencilOpState where
+  peekCStruct p = do
+    failOp <- peek @StencilOp ((p `plusPtr` 0 :: Ptr StencilOp))
+    passOp <- peek @StencilOp ((p `plusPtr` 4 :: Ptr StencilOp))
+    depthFailOp <- peek @StencilOp ((p `plusPtr` 8 :: Ptr StencilOp))
+    compareOp <- peek @CompareOp ((p `plusPtr` 12 :: Ptr CompareOp))
+    compareMask <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    writeMask <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
+    reference <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))
+    pure $ StencilOpState
+             failOp passOp depthFailOp compareOp compareMask writeMask reference
+
+instance Storable StencilOpState where
+  sizeOf ~_ = 28
+  alignment ~_ = 4
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero StencilOpState where
+  zero = StencilOpState
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkPipelineDepthStencilStateCreateInfo - Structure specifying parameters
+-- of a newly created pipeline depth stencil state
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkPipelineDepthStencilStateCreateInfo-depthBoundsTestEnable-00598#
+--     If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-depthBounds depthBounds>
+--     feature is not enabled, @depthBoundsTestEnable@ /must/ be
+--     'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-VkPipelineDepthStencilStateCreateInfo-separateStencilMaskRef-04453#
+--     If the @VK_KHR_portability_subset@ extension is enabled, and
+--     'Vulkan.Extensions.VK_KHR_portability_subset.PhysicalDevicePortabilitySubsetFeaturesKHR'::@separateStencilMaskRef@
+--     is 'Vulkan.Core10.FundamentalTypes.FALSE', and the value of
+--     'PipelineDepthStencilStateCreateInfo'::@stencilTestEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', and the value of
+--     'PipelineRasterizationStateCreateInfo'::@cullMode@ is
+--     'Vulkan.Core10.Enums.CullModeFlagBits.CULL_MODE_NONE', the value of
+--     @reference@ in each of the 'StencilOpState' structs in @front@ and
+--     @back@ /must/ be the same
+--
+-- -   #VUID-VkPipelineDepthStencilStateCreateInfo-rasterizationOrderDepthAttachmentAccess-06463#
+--     If the
+--     <https://registry.khronos.org/vulkan/specs/latest/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_EXT'
+--
+-- -   #VUID-VkPipelineDepthStencilStateCreateInfo-rasterizationOrderStencilAttachmentAccess-06464#
+--     If the
+--     <https://registry.khronos.org/vulkan/specs/latest/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_EXT'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkPipelineDepthStencilStateCreateInfo-sType-sType# @sType@
+--     /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO'
+--
+-- -   #VUID-VkPipelineDepthStencilStateCreateInfo-pNext-pNext# @pNext@
+--     /must/ be @NULL@
+--
+-- -   #VUID-VkPipelineDepthStencilStateCreateInfo-flags-parameter# @flags@
+--     /must/ be a valid combination of
+--     'Vulkan.Core10.Enums.PipelineDepthStencilStateCreateFlagBits.PipelineDepthStencilStateCreateFlagBits'
+--     values
+--
+-- -   #VUID-VkPipelineDepthStencilStateCreateInfo-depthCompareOp-parameter#
+--     @depthCompareOp@ /must/ be a valid
+--     'Vulkan.Core10.Enums.CompareOp.CompareOp' value
+--
+-- -   #VUID-VkPipelineDepthStencilStateCreateInfo-front-parameter# @front@
+--     /must/ be a valid 'StencilOpState' structure
+--
+-- -   #VUID-VkPipelineDepthStencilStateCreateInfo-back-parameter# @back@
+--     /must/ be a valid 'StencilOpState' 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.Bool32',
+-- 'Vulkan.Core10.Enums.CompareOp.CompareOp', 'GraphicsPipelineCreateInfo',
+-- 'Vulkan.Core10.Enums.PipelineDepthStencilStateCreateFlagBits.PipelineDepthStencilStateCreateFlags',
+-- 'StencilOpState', 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PipelineDepthStencilStateCreateInfo = PipelineDepthStencilStateCreateInfo
+  { -- | @flags@ is a bitmask of
+    -- 'Vulkan.Core10.Enums.PipelineDepthStencilStateCreateFlagBits.PipelineDepthStencilStateCreateFlagBits'
+    -- specifying additional depth\/stencil state information.
+    flags :: PipelineDepthStencilStateCreateFlags
+  , -- | @depthTestEnable@ controls whether
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#fragops-depth depth testing>
+    -- is enabled.
+    depthTestEnable :: Bool
+  , -- | @depthWriteEnable@ controls whether
+    -- <https://registry.khronos.org/vulkan/specs/latest/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 a 'Vulkan.Core10.Enums.CompareOp.CompareOp' value
+    -- specifying the comparison operator to use in the
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#fragops-depth-comparison Depth Comparison>
+    -- step of the
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#fragops-depth depth test>.
+    depthCompareOp :: CompareOp
+  , -- | @depthBoundsTestEnable@ controls whether
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#fragops-dbt depth bounds testing>
+    -- is enabled.
+    depthBoundsTestEnable :: Bool
+  , -- | @stencilTestEnable@ controls whether
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#fragops-stencil stencil testing>
+    -- is enabled.
+    stencilTestEnable :: Bool
+  , -- | @front@ and @back@ are 'StencilOpState' values controlling the
+    -- corresponding parameters of the
+    -- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#fragops-dbt depth bounds test>.
+    minDepthBounds :: Float
+  , -- | @maxDepthBounds@ is the maximum depth bound used in the
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#fragops-dbt depth bounds test>.
+    maxDepthBounds :: Float
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PipelineDepthStencilStateCreateInfo)
+#endif
+deriving instance Show PipelineDepthStencilStateCreateInfo
+
+instance ToCStruct PipelineDepthStencilStateCreateInfo where
+  withCStruct x f = allocaBytes 104 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PipelineDepthStencilStateCreateInfo{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr PipelineDepthStencilStateCreateFlags)) (flags)
+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (depthTestEnable))
+    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (depthWriteEnable))
+    poke ((p `plusPtr` 28 :: Ptr CompareOp)) (depthCompareOp)
+    poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (depthBoundsTestEnable))
+    poke ((p `plusPtr` 36 :: Ptr Bool32)) (boolToBool32 (stencilTestEnable))
+    poke ((p `plusPtr` 40 :: Ptr StencilOpState)) (front)
+    poke ((p `plusPtr` 68 :: Ptr StencilOpState)) (back)
+    poke ((p `plusPtr` 96 :: Ptr CFloat)) (CFloat (minDepthBounds))
+    poke ((p `plusPtr` 100 :: Ptr CFloat)) (CFloat (maxDepthBounds))
+    f
+  cStructSize = 104
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 28 :: Ptr CompareOp)) (zero)
+    poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 36 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 40 :: Ptr StencilOpState)) (zero)
+    poke ((p `plusPtr` 68 :: Ptr StencilOpState)) (zero)
+    poke ((p `plusPtr` 96 :: Ptr CFloat)) (CFloat (zero))
+    poke ((p `plusPtr` 100 :: Ptr CFloat)) (CFloat (zero))
+    f
+
+instance FromCStruct PipelineDepthStencilStateCreateInfo where
+  peekCStruct p = do
+    flags <- peek @PipelineDepthStencilStateCreateFlags ((p `plusPtr` 16 :: Ptr PipelineDepthStencilStateCreateFlags))
+    depthTestEnable <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
+    depthWriteEnable <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))
+    depthCompareOp <- peek @CompareOp ((p `plusPtr` 28 :: Ptr CompareOp))
+    depthBoundsTestEnable <- peek @Bool32 ((p `plusPtr` 32 :: Ptr Bool32))
+    stencilTestEnable <- peek @Bool32 ((p `plusPtr` 36 :: Ptr Bool32))
+    front <- peekCStruct @StencilOpState ((p `plusPtr` 40 :: Ptr StencilOpState))
+    back <- peekCStruct @StencilOpState ((p `plusPtr` 68 :: Ptr StencilOpState))
+    minDepthBounds <- peek @CFloat ((p `plusPtr` 96 :: Ptr CFloat))
+    maxDepthBounds <- peek @CFloat ((p `plusPtr` 100 :: Ptr CFloat))
+    pure $ PipelineDepthStencilStateCreateInfo
+             flags
+             (bool32ToBool depthTestEnable)
+             (bool32ToBool depthWriteEnable)
+             depthCompareOp
+             (bool32ToBool depthBoundsTestEnable)
+             (bool32ToBool stencilTestEnable)
+             front
+             back
+             (coerce @CFloat @Float minDepthBounds)
+             (coerce @CFloat @Float maxDepthBounds)
+
+instance Storable PipelineDepthStencilStateCreateInfo where
+  sizeOf ~_ = 104
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PipelineDepthStencilStateCreateInfo where
+  zero = PipelineDepthStencilStateCreateInfo
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkGraphicsPipelineCreateInfo - Structure specifying parameters of a
+-- newly created graphics pipeline
+--
+-- = Description
+--
+-- The parameters @basePipelineHandle@ and @basePipelineIndex@ are
+-- described in more detail in
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
+--
+-- With @VK_EXT_extended_dynamic_state3@, it is possible that many of the
+-- 'GraphicsPipelineCreateInfo' members above /can/ be @NULL@ because all
+-- their state is dynamic and therefore ignored. This is optional so the
+-- application /can/ still use a valid pointer if it needs to set the
+-- @pNext@ or @flags@ fields to specify state for other extensions.
+--
+-- The state required for a graphics pipeline is divided into
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-vertex-input vertex input state>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>,
+-- and
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output state>.
+--
+-- __Vertex Input State__
+--
+-- Vertex input state is defined by:
+--
+-- -   'PipelineVertexInputStateCreateInfo'
+--
+-- -   'PipelineInputAssemblyStateCreateInfo'
+--
+-- If this pipeline specifies
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization state>
+-- either directly or by including it as a pipeline library and its
+-- @pStages@ includes a vertex shader, this state /must/ be specified to
+-- create a
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-complete complete graphics pipeline>.
+--
+-- If a pipeline includes
+-- 'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_VERTEX_INPUT_INTERFACE_BIT_EXT'
+-- in
+-- 'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
+-- either explicitly or as a default, and either the conditions requiring
+-- this state for a
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-complete complete graphics pipeline>
+-- are met or this pipeline does not specify
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization state>
+-- in any way, that pipeline /must/ specify this state directly.
+--
+-- __Pre-Rasterization Shader State__
+--
+-- Pre-rasterization shader state is defined by:
+--
+-- -   'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo'
+--     entries for:
+--
+--     -   Vertex shaders
+--
+--     -   Tessellation control shaders
+--
+--     -   Tessellation evaluation shaders
+--
+--     -   Geometry shaders
+--
+--     -   Task shaders
+--
+--     -   Mesh shaders
+--
+-- -   Within the 'Vulkan.Core10.Handles.PipelineLayout', all descriptor
+--     sets with pre-rasterization shader bindings if
+--     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT'
+--     was specified.
+--
+--     -   If
+--         'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT'
+--         was not specified, the full pipeline layout /must/ be specified.
+--
+-- -   'PipelineViewportStateCreateInfo'
+--
+-- -   'PipelineRasterizationStateCreateInfo'
+--
+-- -   'PipelineTessellationStateCreateInfo'
+--
+-- -   'Vulkan.Core10.Handles.RenderPass' and @subpass@ parameter
+--
+-- -   The @viewMask@ parameter of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'
+--     (formats are ignored)
+--
+-- -   'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'
+--
+-- -   'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'
+--
+-- -   Inclusion\/omission of the
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE'
+--     flag
+--
+-- This state /must/ be specified to create a
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-complete complete graphics pipeline>.
+--
+-- If either the @pNext@ chain includes a
+-- 'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'
+-- structure with
+-- 'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'
+-- included in @flags@, or it is not specified and would default to include
+-- that value, this state /must/ be specified in the pipeline.
+--
+-- __Fragment Shader State__
+--
+-- Fragment shader state is defined by:
+--
+-- -   A 'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo'
+--     entry for the fragment shader
+--
+-- -   Within the 'Vulkan.Core10.Handles.PipelineLayout', all descriptor
+--     sets with fragment shader bindings if
+--     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT'
+--     was specified.
+--
+--     -   If
+--         'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT'
+--         was not specified, the full pipeline layout /must/ be specified.
+--
+-- -   'PipelineMultisampleStateCreateInfo' if
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-sampleshading sample shading>
+--     is enabled or @renderpass@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   'PipelineDepthStencilStateCreateInfo'
+--
+-- -   'Vulkan.Core10.Handles.RenderPass' and @subpass@ parameter
+--
+-- -   The @viewMask@ parameter of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'
+--     (formats are ignored)
+--
+-- -   'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'
+--
+-- -   'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PipelineFragmentShadingRateEnumStateCreateInfoNV'
+--
+-- -   'Vulkan.Extensions.VK_NV_representative_fragment_test.PipelineRepresentativeFragmentTestStateCreateInfoNV'
+--
+-- -   Inclusion\/omission of the
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
+--     flag
+--
+-- -   Inclusion\/omission of the
+--     'Vulkan.Extensions.VK_EXT_fragment_density_map.PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT'
+--     flag
+--
+-- -   'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'
+--
+-- -   Inclusion\/omission of the
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE'
+--     flag
+--
+-- -   The @customResolve@ parameter of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'.
+--     Formats are ignored, and not including the structure behaves
+--     identically to setting @customResolve@ to
+--     'Vulkan.Core10.FundamentalTypes.FALSE', unlike in
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>.
+--
+-- If a pipeline specifies
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization state>
+-- either directly or by including it as a pipeline library and
+-- @rasterizerDiscardEnable@ is 'Vulkan.Core10.FundamentalTypes.FALSE' or
+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE'
+-- is used, this state /must/ be specified to create a
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-complete complete graphics pipeline>.
+--
+-- If a pipeline includes
+-- 'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT'
+-- in
+-- 'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
+-- either explicitly or as a default, and either the conditions requiring
+-- this state for a
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-complete complete graphics pipeline>
+-- are met or this pipeline does not specify
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization state>
+-- in any way, that pipeline /must/ specify this state directly.
+--
+-- __Fragment Output State__
+--
+-- Fragment output state is defined by:
+--
+-- -   'PipelineColorBlendStateCreateInfo'
+--
+-- -   'Vulkan.Core10.Handles.RenderPass' and @subpass@ parameter
+--
+-- -   'PipelineMultisampleStateCreateInfo'
+--
+-- -   The format parameters of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'
+--     (@viewMask@ is ignored)
+--
+-- -   'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--
+-- -   'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--
+-- -   'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'
+--
+-- -   'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'
+--
+-- -   Inclusion\/omission of the
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT'
+--     and
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT'
+--     flags
+--
+-- -   Inclusion\/omission of the
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT'
+--     flag
+--
+-- -   'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingAttachmentLocationInfo'
+--
+-- If a pipeline specifies
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization state>
+-- either directly or by including it as a pipeline library and
+-- @rasterizerDiscardEnable@ is 'Vulkan.Core10.FundamentalTypes.FALSE' or
+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE'
+-- is used, this state /must/ be specified to create a
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-complete complete graphics pipeline>.
+--
+-- If a pipeline includes
+-- 'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT'
+-- in
+-- 'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
+-- either explicitly or as a default, and either the conditions requiring
+-- this state for a
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-complete complete graphics pipeline>
+-- are met or this pipeline does not specify
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization state>
+-- in any way, that pipeline /must/ specify this state directly.
+--
+-- __Dynamic State__
+--
+-- Dynamic state values set via @pDynamicState@ /must/ be ignored if the
+-- state they correspond to is not otherwise statically set by one of the
+-- state subsets used to create the pipeline. Additionally, setting dynamic
+-- state values /must/ not modify whether state in a linked library is
+-- static or dynamic; this is set and unchangeable when the library is
+-- created. For example, if a pipeline only included
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+-- then any dynamic state value corresponding to depth or stencil testing
+-- has no effect. Any linked library that has dynamic state enabled that
+-- same dynamic state /must/ also be enabled in all the other linked
+-- libraries to which that dynamic state applies.
+--
+-- __Complete Graphics Pipelines__
+--
+-- A complete graphics pipeline always includes
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+-- with other subsets included depending on that state as specified in the
+-- above sections.
+--
+-- __Graphics Pipeline Library Layouts__
+--
+-- If different subsets are linked together with pipeline layouts created
+-- with
+-- 'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT',
+-- the final effective pipeline layout is effectively the union of the
+-- linked pipeline layouts. When binding descriptor sets for this pipeline,
+-- the pipeline layout used /must/ be compatible with this union. This
+-- pipeline layout /can/ be overridden when linking with
+-- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT'
+-- by providing a 'Vulkan.Core10.Handles.PipelineLayout' that is
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-compatibility compatible>
+-- with this union other than
+-- 'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT',
+-- or when linking without
+-- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT'
+-- by providing a 'Vulkan.Core10.Handles.PipelineLayout' that is fully
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-compatibility compatible>
+-- with this union.
+--
+-- If the @pNext@ chain includes a
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.PipelineCreateFlags2CreateInfo'
+-- structure,
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.PipelineCreateFlags2CreateInfo'::@flags@
+-- from that structure is used instead of @flags@ from this structure.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-None-09497# If the @pNext@ chain
+--     does not include a
+--     'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.PipelineCreateFlags2CreateInfo'
+--     structure, @flags@ /must/ be a valid combination of
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits'
+--     values
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-07984# If @flags@ contains
+--     the
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'
+--     flag, and @basePipelineIndex@ is -1, @basePipelineHandle@ /must/ be
+--     a valid graphics 'Vulkan.Core10.Handles.Pipeline' handle
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-07985# If @flags@ contains
+--     the
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'
+--     flag, and @basePipelineHandle@ is
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', @basePipelineIndex@ /must/
+--     be a valid index into the calling command’s @pCreateInfos@ parameter
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-07986# If @flags@ contains
+--     the
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'
+--     flag, @basePipelineIndex@ /must/ be -1 or @basePipelineHandle@
+--     /must/ be 'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-layout-07987# If a push constant
+--     block is declared in a shader and @layout@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', a push constant range in
+--     @layout@ /must/ match the shader stage
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-layout-10069# If a push constant
+--     block is declared in a shader and @layout@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', the block must be
+--     contained inside the push constant range in @layout@ that matches
+--     the stage
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-layout-07988# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-resources resource variable>
+--     is declared in a shader and @layout@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', the corresponding
+--     descriptor set in @layout@ /must/ match the shader stage
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-layout-07990# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-resources resource variable>
+--     is declared in a shader, @layout@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the descriptor type is
+--     not
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_MUTABLE_EXT',
+--     the corresponding descriptor set in @layout@ /must/ match the
+--     descriptor type
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-layout-07991# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-resources resource variable>
+--     is declared in a shader as an array and @layout@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', the corresponding
+--     descriptor binding used to create @layout@ /must/ have a
+--     @descriptorCount@ that is greater than or equal to the length of the
+--     array
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-None-10391# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-resources resource variables>
+--     is declared in a shader as an array of descriptors, then the
+--     descriptor type of that variable /must/ not be
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-11798# If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shader64BitIndexing shader64BitIndexing>
+--     feature is not enabled, @flags@ /must/ not contain
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_64_BIT_INDEXING_BIT_EXT'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pipelineCreationCacheControl-02878#
+--     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'
+--     nor
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pipelineProtectedAccess-07368# If
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineProtectedAccess pipelineProtectedAccess>
+--     feature is not enabled, @flags@ /must/ not include
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT'
+--     nor
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-07369# @flags@ /must/ not
+--     include both
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT'
+--     and
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-11311# If
+--     'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlags2CreateInfoKHR'::@flags@
+--     includes
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT',
+--     @layout@ /must/ be 'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-11312# If
+--     'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlags2CreateInfoKHR'::@flags@
+--     includes
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT',
+--     all shader variables in the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-resources shader resource interface>
+--     with a 'Vulkan.Core10.Handles.DescriptorSet' and @Binding@
+--     decoration /must/ have a mapping declared in
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.ShaderDescriptorSetAndBindingMappingInfoEXT'::@pMappings@
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-stage-02096# If the pipeline
+--     requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     the @stage@ member of one element of @pStages@ /must/ be
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-02095# If the pipeline
+--     requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-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_EXT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT')
+--     or from the primitive shading pipeline (@stage@ is
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT',
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT')
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-09631# If the pipeline
+--     requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     and @pStages@ contains both
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--     and
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT',
+--     then the mesh shader’s entry point /must/ not declare a variable
+--     with a @DrawIndex@ @BuiltIn@ decoration
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-TaskNV-07063# The shader stages
+--     for
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--     /must/ use either the @TaskNV@ and @MeshNV@ @Execution@ @Model@ or
+--     the @TaskEXT@ and @MeshEXT@ @Execution@ @Model@, but /must/ not use
+--     both
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-00729# If the pipeline
+--     requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-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
+--     requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-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-09022# If the pipeline
+--     requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     and @pStages@ includes a tessellation control shader stage, and the
+--     @VK_EXT_extended_dynamic_state3@ extension is not enabled or the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT'
+--     dynamic state is not set, @pTessellationState@ /must/ be a valid
+--     pointer to a valid 'PipelineTessellationStateCreateInfo' structure
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pTessellationState-09023# If
+--     @pTessellationState@ is not @NULL@ it /must/ be a pointer to a valid
+--     'PipelineTessellationStateCreateInfo' structure
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-00732# If the pipeline
+--     requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-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
+--     requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-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
+--     specify the same subdivision mode
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-00734# If the pipeline
+--     requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-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
+--     requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-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
+--     patch size
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-08888# If the pipeline is
+--     being created with
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     and
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-vertex-input vertex input state>
+--     and @pStages@ includes tessellation shader stages, and either
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY'
+--     dynamic state is not enabled or
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-dynamicPrimitiveTopologyUnrestricted dynamicPrimitiveTopologyUnrestricted>
+--     is 'Vulkan.Core10.FundamentalTypes.FALSE', the @topology@ member of
+--     @pInputAssembly@ /must/ be
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-topology-08889# If the pipeline
+--     is being created with
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     and
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-vertex-input vertex input state>
+--     and the @topology@ member of @pInputAssembly@ is
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST',
+--     and either
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY'
+--     dynamic state is not enabled or
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-dynamicPrimitiveTopologyUnrestricted dynamicPrimitiveTopologyUnrestricted>
+--     is 'Vulkan.Core10.FundamentalTypes.FALSE', then @pStages@ /must/
+--     include tessellation shader stages
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-TessellationEvaluation-07723# If
+--     the pipeline is being created with a @TessellationEvaluation@
+--     @Execution@ @Model@, no @Geometry@ @Execution@ @Model@, uses the
+--     @PointMode@ @Execution@ @Mode@, and the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-shaderTessellationAndGeometryPointSize shaderTessellationAndGeometryPointSize>
+--     feature is enabled, a @PointSize@ decorated variable /must/ be
+--     written to if the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance5 maintenance5>
+--     feature is not enabled
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-topology-08773# If the pipeline
+--     is being created with a @Vertex@ @Execution@ @Model@ and no
+--     @TessellationEvaluation@ or @Geometry@ @Execution@ @Model@, and the
+--     @topology@ member of @pInputAssembly@ is
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_POINT_LIST',
+--     and either
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY'
+--     dynamic state is not enabled or
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-dynamicPrimitiveTopologyUnrestricted dynamicPrimitiveTopologyUnrestricted>
+--     is 'Vulkan.Core10.FundamentalTypes.FALSE', a @PointSize@ decorated
+--     variable /must/ be written to if the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance5 maintenance5>
+--     feature is not enabled
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-TessellationEvaluation-07724# If
+--     the pipeline is being created with a @TessellationEvaluation@
+--     @Execution@ @Model@, no @Geometry@ @Execution@ @Model@, uses the
+--     @PointMode@ @Execution@ @Mode@, and the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-shaderTessellationAndGeometryPointSize shaderTessellationAndGeometryPointSize>
+--     feature is not enabled, a @PointSize@ decorated variable /must/ not
+--     be written to
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-shaderTessellationAndGeometryPointSize-08776#
+--     If the pipeline is being created with a @Geometry@ @Execution@
+--     @Model@, uses the @OutputPoints@ @Execution@ @Mode@, and the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-shaderTessellationAndGeometryPointSize shaderTessellationAndGeometryPointSize>
+--     feature is enabled, a @PointSize@ decorated variable /must/ be
+--     written to for every vertex emitted if the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance5 maintenance5>
+--     feature is not enabled
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-Geometry-07726# If the pipeline
+--     is being created with a @Geometry@ @Execution@ @Model@, uses the
+--     @OutputPoints@ @Execution@ @Mode@, and the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-shaderTessellationAndGeometryPointSize shaderTessellationAndGeometryPointSize>
+--     feature is not enabled, a @PointSize@ decorated variable /must/ not
+--     be written to
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-00738# If the pipeline
+--     requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-geometry-execution compatible>
+--     with the primitive topology specified in @pInputAssembly@
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-00739# If the pipeline
+--     requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-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://registry.khronos.org/vulkan/specs/latest/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
+--     requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     and
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>,
+--     it includes both a fragment shader and a geometry shader, and the
+--     fragment shader code reads from an input variable that is decorated
+--     with @PrimitiveId@, then the geometry shader code /must/ write to a
+--     matching output variable, decorated with @PrimitiveId@, in all
+--     execution paths
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-PrimitiveId-06264# If the
+--     pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-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
+--     with @PrimitiveId@, in all execution paths
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06038# If @renderPass@
+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and the pipeline is
+--     being created with
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-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
+--     requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces Shader Interfaces>
+--     chapter
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-None-04889# If the pipeline
+--     requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     and
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>,
+--     the fragment shader and last
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader stage>
+--     and any relevant state /must/ adhere to the pipeline linking rules
+--     described in the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces Shader Interfaces>
+--     chapter
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06041# If @renderPass@
+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the pipeline is
+--     being created with
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
+--     then for each color attachment in the subpass, if the
+--     <https://registry.khronos.org/vulkan/specs/latest/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',
+--     then the @blendEnable@ member of the corresponding element of the
+--     @pAttachments@ member of @pColorBlendState@ /must/ be
+--     'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-07609# If @renderPass@
+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the pipeline is
+--     being created with
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
+--     the @pColorBlendState@ pointer is not @NULL@, the @attachmentCount@
+--     member of @pColorBlendState@ is not ignored, 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 requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     and @pViewportState->pViewports@ is not dynamic, then
+--     @pViewportState->pViewports@ /must/ be a valid pointer to an array
+--     of @pViewportState->viewportCount@ valid 'Viewport' structures
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04131# If the
+--     pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     and @pViewportState->pScissors@ is not dynamic, then
+--     @pViewportState->pScissors@ /must/ be a valid pointer to an array of
+--     @pViewportState->scissorCount@
+--     'Vulkan.Core10.FundamentalTypes.Rect2D' structures
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00749# If the
+--     pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     and the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-wideLines wideLines>
+--     feature is not enabled, and no element of the @pDynamicStates@
+--     member of @pDynamicState@ is
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_WIDTH', the
+--     @lineWidth@ member of @pRasterizationState@ /must/ be @1.0@
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-rasterizerDiscardEnable-09024# If
+--     the pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE'
+--     dynamic state is enabled or the @rasterizerDiscardEnable@ member of
+--     @pRasterizationState@ is 'Vulkan.Core10.FundamentalTypes.FALSE', and
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-pViewportState-null related dynamic state is not set>,
+--     @pViewportState@ /must/ be a valid pointer to a valid
+--     'PipelineViewportStateCreateInfo' structure
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pViewportState-09025# If
+--     @pViewportState@ is not @NULL@ it /must/ be a valid pointer to a
+--     valid 'PipelineViewportStateCreateInfo' structure
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pMultisampleState-09026# If the
+--     pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
+--     and the @VK_EXT_extended_dynamic_state3@ extension is not enabled or
+--     any of the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT',
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT', or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT'
+--     dynamic states is not set, or the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-alphaToOne alphaToOne>
+--     feature is enabled and
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT'
+--     is not set, @pMultisampleState@ /must/ be a valid pointer to a valid
+--     'PipelineMultisampleStateCreateInfo' structure
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pMultisampleState-09027# If
+--     @pMultisampleState@ is not @NULL@ it /must/ be a valid pointer to a
+--     valid 'PipelineMultisampleStateCreateInfo' structure
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-alphaToCoverageEnable-08891# If
+--     the pipeline is being created with
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>,
+--     the 'PipelineMultisampleStateCreateInfo'::@alphaToCoverageEnable@ is
+--     not ignored and is 'Vulkan.Core10.FundamentalTypes.TRUE', then the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-fragmentoutput Fragment Output Interface>
+--     /must/ contain a variable for the alpha @Component@ word in
+--     @Location@ 0 at @Index@ 0
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-09028# If @renderPass@
+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the pipeline is
+--     being created with
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>,
+--     and @subpass@ uses a depth\/stencil attachment, and
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-pDepthStencilState-null related dynamic state is not set>,
+--     @pDepthStencilState@ /must/ be a valid pointer to a valid
+--     'PipelineDepthStencilStateCreateInfo' structure
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDepthStencilState-09029# If
+--     @pDepthStencilState@ is not @NULL@ it /must/ be a valid pointer to a
+--     valid 'PipelineDepthStencilStateCreateInfo' structure
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-09030# If @renderPass@
+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the pipeline is
+--     being created with
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
+--     and @subpass@ uses color attachments, and
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-pColorBlendState-null related dynamic state is not set>,
+--     @pColorBlendState@ /must/ be a valid pointer to a valid
+--     'PipelineColorBlendStateCreateInfo' structure
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00754# If the
+--     pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-depthBiasClamp depthBiasClamp>
+--     feature is not enabled, no element of the @pDynamicStates@ member of
+--     @pDynamicState@ is
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS', and the
+--     @depthBiasEnable@ member of @pRasterizationState@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', the @depthBiasClamp@ member
+--     of @pRasterizationState@ /must/ be @0.0@
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-02510# If the
+--     pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>,
+--     the @VK_EXT_depth_range_unrestricted@ extension is not enabled and
+--     no element of the @pDynamicStates@ member of @pDynamicState@ is
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS', and
+--     the @depthBoundsTestEnable@ member of @pDepthStencilState@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', the @minDepthBounds@ and
+--     @maxDepthBounds@ members of @pDepthStencilState@ /must/ be between
+--     @0.0@ and @1.0@, inclusive
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-10913# If the
+--     pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>,
+--     no element of the @pDynamicStates@ member of @pDynamicState@ is
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS', and
+--     @pDynamicStates@ includes
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE'
+--     or the @depthBoundsTestEnable@ member of @pDepthStencilState@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', @minDepthBounds@ /must/ be
+--     less than or equal to @maxDepthBounds@
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-07610# If the
+--     pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>
+--     or
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
+--     and @rasterizationSamples@ and @sampleLocationsInfo@ are not
+--     dynamic, and
+--     'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@
+--     included in the @pNext@ chain of @pMultisampleState@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE',
+--     @sampleLocationsInfo.sampleLocationGridSize.width@ /must/ evenly
+--     divide
+--     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.width@
+--     as returned by
+--     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
+--     with a @samples@ parameter equaling @rasterizationSamples@
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-07611# If the
+--     pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>
+--     or
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
+--     and @rasterizationSamples@ and @sampleLocationsInfo@ are not
+--     dynamic, and
+--     'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@
+--     the included in the @pNext@ chain of @pMultisampleState@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE' or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     is used, @sampleLocationsInfo.sampleLocationGridSize.height@ /must/
+--     evenly divide
+--     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.height@
+--     as returned by
+--     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
+--     with a @samples@ parameter equaling @rasterizationSamples@
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-07612# If the
+--     pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>
+--     or
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
+--     and @rasterizationSamples@ and @sampleLocationsInfo@ are not
+--     dynamic, and
+--     'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@
+--     included in the @pNext@ chain of @pMultisampleState@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE' or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     is used, @sampleLocationsInfo.sampleLocationsPerPixel@ /must/ equal
+--     @rasterizationSamples@
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-sampleLocationsEnable-01524# If
+--     the pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>,
+--     and the @sampleLocationsEnable@ member of a
+--     'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'
+--     structure included in the @pNext@ chain of @pMultisampleState@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', the fragment shader code
+--     /must/ not statically use the extended instruction
+--     @InterpolateAtSample@
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-multisampledRenderToSingleSampled-06853#
+--     If the pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
+--     the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
+--     feature is not enabled, the @VK_AMD_mixed_attachment_samples@
+--     extension is not enabled, the @VK_NV_framebuffer_mixed_samples@
+--     extension is not enabled, @rasterizationSamples@ is not dynamic, and
+--     @subpass@ uses color and\/or depth\/stencil attachments, then the
+--     @rasterizationSamples@ member of @pMultisampleState@ /must/ be the
+--     same as the sample count for those subpass attachments
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-subpass-01505# If the pipeline
+--     requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
+--     and the @VK_AMD_mixed_attachment_samples@ extension is enabled,
+--     @rasterizationSamples@ is not dynamic, and if @subpass@ uses color
+--     and\/or depth\/stencil attachments, then the @rasterizationSamples@
+--     member of @pMultisampleState@ /must/ equal the maximum of the sample
+--     counts of those subpass attachments
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06854# If @renderPass@
+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
+--     feature is not enabled, @rasterizationSamples@ is not dynamic, and
+--     @subpass@ has a
+--     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'
+--     structure included in the
+--     'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.SubpassDescription2'::@pNext@
+--     chain with @multisampledRenderToSingleSampledEnable@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then the
+--     @rasterizationSamples@ member of @pMultisampleState@ /must/ be equal
+--     to
+--     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'::@rasterizationSamples@
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-subpass-01411# If the pipeline
+--     requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
+--     the @VK_NV_framebuffer_mixed_samples@ extension is enabled,
+--     @rasterizationSamples@ is not dynamic, and if @subpass@ has a
+--     depth\/stencil attachment and depth test, stencil test, or depth
+--     bounds test are enabled, then the @rasterizationSamples@ member of
+--     @pMultisampleState@ /must/ be the same as the sample count of the
+--     depth\/stencil attachment
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-subpass-01412# If the pipeline
+--     requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
+--     the @VK_NV_framebuffer_mixed_samples@ extension is enabled,
+--     @rasterizationSamples@ is not dynamic, and if @subpass@ has any
+--     color attachments, then the @rasterizationSamples@ member of
+--     @pMultisampleState@ /must/ be greater than or equal to the sample
+--     count for those subpass attachments
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-coverageReductionMode-02722# If
+--     the pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
+--     the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-coverageReductionMode coverageReductionMode>
+--     feature is enabled, and @rasterizationSamples@ is not dynamic, the
+--     coverage reduction mode specified by
+--     'Vulkan.Extensions.VK_NV_coverage_reduction_mode.PipelineCoverageReductionStateCreateInfoNV'::@coverageReductionMode@,
+--     the @rasterizationSamples@ member of @pMultisampleState@ and the
+--     sample counts for the color and depth\/stencil attachments (if the
+--     subpass has them) /must/ be a valid combination returned by
+--     'Vulkan.Extensions.VK_NV_coverage_reduction_mode.getPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-subpass-00758# If the pipeline
+--     requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
+--     @rasterizationSamples@ is not dynamic, 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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-noattachments zero-attachment subpass>
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06046# If @renderPass@
+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @subpass@ /must/ be
+--     a valid subpass within @renderPass@
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06047# If @renderPass@
+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the pipeline is
+--     being created with
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     @subpass@ viewMask is not @0@, and @multiviewTessellationShader@ is
+--     not enabled, then @pStages@ /must/ not include tessellation shaders
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06048# If @renderPass@
+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the pipeline is
+--     being created with
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     @subpass@ viewMask is not @0@, and @multiviewGeometryShader@ is not
+--     enabled, then @pStages@ /must/ not include a geometry shader
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06050# If @renderPass@
+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and the pipeline is
+--     being created with
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     and @subpass@ viewMask is not @0@, then all of the shaders in the
+--     pipeline /must/ not include variables decorated with the @Layer@
+--     built-in decoration in their interfaces
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-07064# If @renderPass@
+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the pipeline is
+--     being created with
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     @subpass@ viewMask is not @0@, and @multiviewMeshShader@ is not
+--     enabled, then @pStages@ /must/ not include a mesh shader
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-12325# If @renderPass@
+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the pipeline is
+--     being created with
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     @pStages@ include a mesh shader, and @subpass@ viewMask is not @0@,
+--     then the index of the most significant bit in @viewMask@ /must/ be
+--     less than
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxMeshMultiviewViewCount maxMeshMultiviewViewCount>
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-00764# @flags@ /must/ not
+--     contain the
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DISPATCH_BASE_BIT'
+--     flag
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-01565# If the pipeline
+--     requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>
+--     and an input attachment was referenced by an @aspectMask@ at
+--     @renderPass@ creation time, the fragment shader /must/ only read
+--     from the aspects that were specified for that input attachment
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-layout-01688# The number of
+--     resources in @layout@ accessible to each shader stage that is used
+--     by the pipeline /must/ be less than or equal to
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxPerStageResources@
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-01715# If the
+--     pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     and no element of the @pDynamicStates@ member of @pDynamicState@ is
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_NV',
+--     and the @viewportWScalingEnable@ member of a
+--     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV'
+--     structure, included in the @pNext@ chain of @pViewportState@, is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', the @pViewportWScalings@
+--     member of the
+--     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV'
+--     /must/ be a pointer to an array of
+--     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV'::@viewportCount@
+--     valid
+--     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.ViewportWScalingNV'
+--     structures
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04056# If the
+--     pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     and no element of the @pDynamicStates@ member of @pDynamicState@ is
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV',
+--     and if @pViewportState->pNext@ chain includes a
+--     'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'
+--     structure, and if its @exclusiveScissorCount@ member is not @0@,
+--     then its @pExclusiveScissors@ member /must/ be a valid pointer to an
+--     array of @exclusiveScissorCount@
+--     'Vulkan.Core10.FundamentalTypes.Rect2D' structures
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-07854# If
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV'
+--     is included in the @pDynamicStates@ array then the implementation
+--     /must/ support at least @specVersion@ @2@ of the
+--     @VK_NV_scissor_exclusive@ extension
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04057# If the
+--     pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     and no element of the @pDynamicStates@ member of @pDynamicState@ is
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV',
+--     and if @pViewportState->pNext@ chain includes a
+--     'Vulkan.Extensions.VK_NV_shading_rate_image.PipelineViewportShadingRateImageStateCreateInfoNV'
+--     structure, then its @pShadingRatePalettes@ member /must/ be a valid
+--     pointer to an array of @viewportCount@ valid
+--     'Vulkan.Extensions.VK_NV_shading_rate_image.ShadingRatePaletteNV'
+--     structures
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04058# If the
+--     pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     and no element of the @pDynamicStates@ member of @pDynamicState@ is
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_EXT',
+--     and if @pNext@ chain includes a
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'
+--     structure, and if its @discardRectangleCount@ member is not @0@,
+--     then its @pDiscardRectangles@ member /must/ be a valid pointer to an
+--     array of @discardRectangleCount@
+--     'Vulkan.Core10.FundamentalTypes.Rect2D' structures
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-07855# If
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT'
+--     is included in the @pDynamicStates@ array then the implementation
+--     /must/ support at least @specVersion@ @2@ of the
+--     @VK_EXT_discard_rectangles@ extension
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-07856# If
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT'
+--     is included in the @pDynamicStates@ array then the implementation
+--     /must/ support at least @specVersion@ @2@ of the
+--     @VK_EXT_discard_rectangles@ extension
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-02097# If the pipeline
+--     requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-vertex-input vertex input state>,
+--     and @pVertexInputState@ is not dynamic, then @pVertexInputState@
+--     /must/ be a valid pointer to a valid
+--     'PipelineVertexInputStateCreateInfo' structure
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-Input-07904# If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-vertexAttributeRobustness vertexAttributeRobustness>
+--     feature is not enabled, and the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance9 maintenance9>
+--     feature is not enabled, and the pipeline is being created with
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-vertex-input vertex input state>
+--     and @pVertexInputState@ is not dynamic, then all variables with the
+--     @Input@ storage class decorated with @Location@ in the @Vertex@
+--     @Execution@ @Model@ @OpEntryPoint@ /must/ contain a location in
+--     'VertexInputAttributeDescription'::@location@
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-Input-08733# If the pipeline
+--     requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-vertex-input vertex input state>
+--     and @pVertexInputState@ is not dynamic, then the numeric type
+--     associated with all @Input@ variables of the corresponding
+--     @Location@ in the @Vertex@ @Execution@ @Model@ @OpEntryPoint@ /must/
+--     be the same as 'VertexInputAttributeDescription'::@format@
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pVertexInputState-08929# If the
+--     pipeline is being created with
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-vertex-input vertex input state>
+--     and @pVertexInputState@ is not dynamic, and
+--     'VertexInputAttributeDescription'::@format@ has a 64-bit component,
+--     then the scalar width associated with all @Input@ variables of the
+--     corresponding @Location@ in the @Vertex@ @Execution@ @Model@
+--     @OpEntryPoint@ /must/ be 64-bit
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pVertexInputState-08930# If the
+--     pipeline is being created with
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-vertex-input vertex input state>
+--     and @pVertexInputState@ is not dynamic, and the scalar width
+--     associated with a @Location@ decorated @Input@ variable in the
+--     @Vertex@ @Execution@ @Model@ @OpEntryPoint@ is 64-bit, then the
+--     corresponding 'VertexInputAttributeDescription'::@format@ /must/
+--     have a 64-bit component
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pVertexInputState-09198# If the
+--     pipeline is being created with
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-vertex-input vertex input state>
+--     and @pVertexInputState@ is not dynamic, and
+--     'VertexInputAttributeDescription'::@format@ has a 64-bit component,
+--     then all @Input@ variables at the corresponding @Location@ in the
+--     @Vertex@ @Execution@ @Model@ @OpEntryPoint@ /must/ not use
+--     components that are not present in the format
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-dynamicPrimitiveTopologyUnrestricted-09031#
+--     If the pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-vertex-input vertex input state>,
+--     and
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-pInputAssemblyState-null related dynamic state is not set>,
+--     @pInputAssemblyState@ /must/ be a valid pointer to a valid
+--     'PipelineInputAssemblyStateCreateInfo' structure
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pInputAssemblyState-09032# If
+--     @pInputAssemblyState@ is not @NULL@ it /must/ be a valid pointer to
+--     a valid 'PipelineInputAssemblyStateCreateInfo' structure
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-02317# If the pipeline
+--     requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-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
+--     requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     and any shader stage in @pStages@ specifies @Xfb@ execution mode it
+--     /must/ be the last
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader stage>
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-rasterizationStream-02319# If the
+--     pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     and a
+--     'Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT'::@rasterizationStream@
+--     value other than zero is specified, all variables in the output
+--     interface of the entry point being compiled decorated with
+--     @Position@, @PointSize@, @ClipDistance@, or @CullDistance@ /must/ be
+--     decorated with identical @Stream@ values that match the
+--     @rasterizationStream@
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-rasterizationStream-02320# If the
+--     pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     and
+--     'Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT'::@rasterizationStream@
+--     is zero, or not specified, all variables in the output interface of
+--     the entry point being compiled decorated with @Position@,
+--     @PointSize@, @ClipDistance@, or @CullDistance@ /must/ be decorated
+--     with a @Stream@ value of zero, or /must/ not specify the @Stream@
+--     decoration
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-geometryStreams-02321# If the
+--     pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     and the last
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader stage>
+--     is a geometry shader, and that geometry shader uses the
+--     @GeometryStreams@ capability, then
+--     'Vulkan.Extensions.VK_EXT_transform_feedback.PhysicalDeviceTransformFeedbackFeaturesEXT'::@geometryStreams@
+--     feature /must/ be enabled
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-None-02322# If the pipeline
+--     requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-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 requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     and at least one of
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>
+--     or
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>,
+--     and @pMultisampleState@ is not @NULL@, the @lineRasterizationMode@
+--     member of a
+--     'Vulkan.Core14.Promoted_From_VK_KHR_line_rasterization.PipelineRasterizationLineStateCreateInfo'
+--     structure included in the @pNext@ chain of @pRasterizationState@ is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_BRESENHAM'
+--     or
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH',
+--     then the @alphaToCoverageEnable@, @alphaToOneEnable@, and
+--     @sampleShadingEnable@ members of @pMultisampleState@ /must/ all be
+--     'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-stippledLineEnable-02767# If the
+--     pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     the @stippledLineEnable@ member of
+--     'Vulkan.Core14.Promoted_From_VK_KHR_line_rasterization.PipelineRasterizationLineStateCreateInfo'
+--     is 'Vulkan.Core10.FundamentalTypes.TRUE', and no element of the
+--     @pDynamicStates@ member of @pDynamicState@ is
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE', then
+--     the @lineStippleFactor@ member of
+--     'Vulkan.Core14.Promoted_From_VK_KHR_line_rasterization.PipelineRasterizationLineStateCreateInfo'
+--     /must/ be in the range [1,256]
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-shaderMeshEnqueue-10187# If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-shaderMeshEnqueue shaderMeshEnqueue>
+--     feature is not enabled, shaders specified by @pStages@ /must/ not
+--     declare the @ShaderEnqueueAMDX@ capability
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-10188# If @flags@ does not
+--     include
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR',
+--     shaders specified by @pStages@ /must/ not declare the
+--     @ShaderEnqueueAMDX@ capability
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-10189# If any shader
+--     stages in @pStages@ declare the @ShaderEnqueueAMDX@ capability,
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_EXECUTION_GRAPH_BIT_AMDX'
+--     and
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_LIBRARY_BIT_KHR'
+--     /must/ be included in @flags@
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-10190# If
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_EXECUTION_GRAPH_BIT_AMDX'
+--     is included in @flags@, and the pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     there /must/ not be a task or vertex shader specified in @pStages@
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-10191# If
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_EXECUTION_GRAPH_BIT_AMDX'
+--     is included in @flags@, all elements of
+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
+--     /must/ have been created with
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_EXECUTION_GRAPH_BIT_AMDX'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-03372# @flags@ /must/ not
+--     include
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-03373# @flags@ /must/ not
+--     include
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-03374# @flags@ /must/ not
+--     include
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-03375# @flags@ /must/ not
+--     include
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-03376# @flags@ /must/ not
+--     include
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-03377# @flags@ /must/ not
+--     include
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-03577# @flags@ /must/ not
+--     include
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-04947# @flags@ /must/ not
+--     include
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-03378# If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-extendedDynamicState extendedDynamicState>
+--     feature is not enabled, and the minimum value of
+--     'Vulkan.Core10.DeviceInitialization.ApplicationInfo'::@apiVersion@
+--     used to create the 'Vulkan.Core10.Handles.Instance' and @apiVersion@
+--     supported by the physical device is less than Version 1.3 there
+--     /must/ be no element of the @pDynamicStates@ member of
+--     @pDynamicState@ set to
+--     '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 requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     and
+--     '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 requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     and
+--     '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 requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     and
+--     '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 requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     and
+--     '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-07065# If the
+--     pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     and includes a mesh shader, there /must/ be no element of the
+--     @pDynamicStates@ member of @pDynamicState@ set to
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY',
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04868# If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-extendedDynamicState2 extendedDynamicState2>
+--     feature is not enabled, and the minimum value of
+--     'Vulkan.Core10.DeviceInitialization.ApplicationInfo'::@apiVersion@
+--     used to create the 'Vulkan.Core10.Handles.Instance' and @apiVersion@
+--     supported by the physical device is less than Version 1.3 there
+--     /must/ be no element of the @pDynamicStates@ member of
+--     @pDynamicState@ set to
+--     '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'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04869# If the
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-extendedDynamicState2PatchControlPoints extendedDynamicState2PatchControlPoints>
+--     feature is not enabled, there /must/ be no element of the
+--     @pDynamicStates@ member of @pDynamicState@ set to
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-07066# If the
+--     pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     and includes a mesh shader, there /must/ be no element of the
+--     @pDynamicStates@ member of @pDynamicState@ set to
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE',
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-02877# If @flags@ includes
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV',
+--     then the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-deviceGeneratedCommandsNV ::deviceGeneratedCommands>
+--     feature /must/ be enabled
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-02966# If the pipeline
+--     requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-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-libraryCount-06648# If the
+--     pipeline is not created with a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-complete complete set of state>,
+--     or
+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@libraryCount@
+--     is not @0@,
+--     'Vulkan.Extensions.VK_NV_device_generated_commands.GraphicsPipelineShaderGroupsCreateInfoNV'::@groupCount@
+--     and
+--     'Vulkan.Extensions.VK_NV_device_generated_commands.GraphicsPipelineShaderGroupsCreateInfoNV'::@pipelineCount@
+--     /must/ be @0@
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-libraryCount-06649# If the
+--     pipeline is created with a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-complete complete set of state>,
+--     and
+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@libraryCount@
+--     is @0@, and the @pNext@ chain includes an instance of
+--     'Vulkan.Extensions.VK_NV_device_generated_commands.GraphicsPipelineShaderGroupsCreateInfoNV',
+--     'Vulkan.Extensions.VK_NV_device_generated_commands.GraphicsPipelineShaderGroupsCreateInfoNV'::@groupCount@
+--     /must/ be greater than @0@
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-11000# If @flags@ includes
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXT',
+--     then the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-deviceGeneratedCommands ::deviceGeneratedCommands>
+--     feature /must/ be enabled
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-11001# If the pipeline
+--     requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     and @flags@ includes
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXT',
+--     then all stages /must/ not specify @Xfb@ execution mode
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04494# If the
+--     pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     or
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>
+--     and
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
+--     is not included in @pDynamicState->pDynamicStates@,
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::@fragmentSize.width@
+--     /must/ be greater than or equal to @1@
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04495# If the
+--     pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     or
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>
+--     and
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
+--     is not included in @pDynamicState->pDynamicStates@,
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::@fragmentSize.height@
+--     /must/ be greater than or equal to @1@
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04496# If the
+--     pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     or
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>
+--     and
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
+--     is not included in @pDynamicState->pDynamicStates@,
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::@fragmentSize.width@
+--     /must/ be a power-of-two value
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04497# If the
+--     pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     or
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>
+--     and
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
+--     is not included in @pDynamicState->pDynamicStates@,
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::@fragmentSize.height@
+--     /must/ be a power-of-two value
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04498# If the
+--     pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     or
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>
+--     and
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
+--     is not included in @pDynamicState->pDynamicStates@,
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::@fragmentSize.width@
+--     /must/ be less than or equal to @4@
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04499# If the
+--     pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     or
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>
+--     and
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
+--     is not included in @pDynamicState->pDynamicStates@,
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::@fragmentSize.height@
+--     /must/ be less than or equal to @4@
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04500# If the
+--     pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     or
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate>
+--     feature is not enabled,
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::@fragmentSize.width@
+--     and
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::@fragmentSize.height@
+--     /must/ both be equal to @1@
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-06567# If the
+--     pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     or
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>
+--     and
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
+--     is not included in @pDynamicState->pDynamicStates@,
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::@combinerOps@[0]
+--     /must/ be a valid
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FragmentShadingRateCombinerOpKHR'
+--     value
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-06568# If the
+--     pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     or
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>
+--     and
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
+--     is not included in @pDynamicState->pDynamicStates@,
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::@combinerOps@[1]
+--     /must/ be a valid
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FragmentShadingRateCombinerOpKHR'
+--     value
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04501# If the
+--     pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     or
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-primitiveFragmentShadingRate primitiveFragmentShadingRate>
+--     feature is not enabled,
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::@combinerOps@[0]
+--     /must/ be
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04502# If the
+--     pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     or
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate>
+--     feature is not enabled,
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::@combinerOps@[1]
+--     /must/ be
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-primitiveFragmentShadingRateWithMultipleViewports-04503#
+--     If the pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     and the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
+--     limit is not supported,
+--     '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
+--     @PrimitiveShadingRateKHR@ built-in
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-primitiveFragmentShadingRateWithMultipleViewports-04504#
+--     If the pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     and the
+--     <https://registry.khronos.org/vulkan/specs/latest/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 requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     and the
+--     <https://registry.khronos.org/vulkan/specs/latest/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 requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     or
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>,
+--     the
+--     <https://registry.khronos.org/vulkan/specs/latest/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
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::@combinerOps@
+--     /must/ be
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR'
+--     or
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-None-06569# If the pipeline
+--     requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>
+--     and
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
+--     is not included in @pDynamicState->pDynamicStates@,
+--     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PipelineFragmentShadingRateEnumStateCreateInfoNV'::@shadingRateType@
+--     /must/ be a valid
+--     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.FragmentShadingRateTypeNV'
+--     value
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-06570# If the
+--     pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>
+--     and
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
+--     is not included in @pDynamicState->pDynamicStates@,
+--     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PipelineFragmentShadingRateEnumStateCreateInfoNV'::@shadingRate@
+--     /must/ be a valid
+--     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.FragmentShadingRateNV'
+--     value
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-06571# If the
+--     pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>
+--     and
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
+--     is not included in @pDynamicState->pDynamicStates@,
+--     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PipelineFragmentShadingRateEnumStateCreateInfoNV'::@combinerOps@[0]
+--     /must/ be a valid
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FragmentShadingRateCombinerOpKHR'
+--     value
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-06572# If the
+--     pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>
+--     and
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
+--     is not included in @pDynamicState->pDynamicStates@,
+--     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PipelineFragmentShadingRateEnumStateCreateInfoNV'::@combinerOps@[1]
+--     /must/ be a valid
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FragmentShadingRateCombinerOpKHR'
+--     value
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04569# If the
+--     pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-fragmentShadingRateEnums fragmentShadingRateEnums>
+--     feature is not enabled,
+--     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PipelineFragmentShadingRateEnumStateCreateInfoNV'::@shadingRateType@
+--     /must/ be equal to
+--     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.FRAGMENT_SHADING_RATE_TYPE_FRAGMENT_SIZE_NV'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04570# If the
+--     pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate>
+--     feature is not enabled,
+--     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PipelineFragmentShadingRateEnumStateCreateInfoNV'::@shadingRate@
+--     /must/ be equal to
+--     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.FRAGMENT_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04571# If the
+--     pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-primitiveFragmentShadingRate primitiveFragmentShadingRate>
+--     feature is not enabled,
+--     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PipelineFragmentShadingRateEnumStateCreateInfoNV'::@combinerOps@[0]
+--     /must/ be
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04572# If the
+--     pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate>
+--     feature is not enabled,
+--     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PipelineFragmentShadingRateEnumStateCreateInfoNV'::@combinerOps@[1]
+--     /must/ be
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-fragmentShadingRateNonTrivialCombinerOps-04573#
+--     If the pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>,
+--     and the
+--     <https://registry.khronos.org/vulkan/specs/latest/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
+--     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PipelineFragmentShadingRateEnumStateCreateInfoNV'::@combinerOps@
+--     /must/ be
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR'
+--     or
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-None-04574# If the pipeline
+--     requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>,
+--     and the
+--     <https://registry.khronos.org/vulkan/specs/latest/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
+--     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.FRAGMENT_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV',
+--     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.FRAGMENT_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV',
+--     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.FRAGMENT_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV',
+--     or
+--     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.FRAGMENT_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-None-04575# If the pipeline
+--     requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>,
+--     and the
+--     <https://registry.khronos.org/vulkan/specs/latest/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
+--     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.FRAGMENT_SHADING_RATE_NO_INVOCATIONS_NV'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-03578# All
+--     elements of the @pDynamicStates@ member of @pDynamicState@ /must/
+--     not be
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04807# If the
+--     pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     and the
+--     <https://registry.khronos.org/vulkan/specs/latest/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-pDynamicStates-07067# If the
+--     pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     and includes a mesh shader, there /must/ be no element of the
+--     @pDynamicStates@ member of @pDynamicState@ set to
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04800# If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
+--     feature is not enabled, there /must/ be no element of the
+--     @pDynamicStates@ member of @pDynamicState@ set to
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-rasterizationSamples-04899# If
+--     the pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>,
+--     and the @VK_QCOM_render_pass_shader_resolve@ extension or the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-customResolve customResolve>
+--     feature is enabled, @rasterizationSamples@ is not dynamic, and if
+--     subpass has any input attachments, and if the subpass description
+--     contains
+--     'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_EXT',
+--     then the sample count of the input attachments /must/ equal
+--     @rasterizationSamples@
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-sampleShadingEnable-04900# If the
+--     pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>,
+--     and the @VK_QCOM_render_pass_shader_resolve@ extension or the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-customResolve customResolve>
+--     feature is enabled, and if the subpass description contains
+--     'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_EXT',
+--     then @sampleShadingEnable@ /must/ be false
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-dynamicRendering-06576# If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-dynamicRendering dynamicRendering>
+--     feature is not enabled and the pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>,
+--     or
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
+--     @renderPass@ /must/ not be 'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-multiview-06577# If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-multiview multiview>
+--     feature is not enabled, the pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     or
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>,
+--     and @renderPass@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@viewMask@
+--     /must/ be @0@
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06578# If the pipeline
+--     requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     or
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>,
+--     and @renderPass@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', the
+--     index of the most significant bit in
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@viewMask@
+--     /must/ be less than
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxMultiviewViewCount maxMultiviewViewCount>
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06579# If the pipeline
+--     requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
+--     and @renderPass@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@colorAttachmentCount@
+--     is not 0,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
+--     /must/ be a valid pointer to an array of @colorAttachmentCount@
+--     valid 'Vulkan.Core10.Enums.Format.Format' values
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06580# If the pipeline
+--     requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
+--     and @renderPass@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', each
+--     element of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
+--     /must/ be a valid 'Vulkan.Core10.Enums.Format.Format' value
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06582# If the pipeline
+--     requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
+--     @renderPass@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', and any
+--     element of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
+--     is not 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', that format
+--     /must/ be a format with
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#potential-format-features potential format features>
+--     that include
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BIT'
+--     or
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06583# If the pipeline
+--     requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
+--     and @renderPass@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
+--     /must/ be a valid 'Vulkan.Core10.Enums.Format.Format' value
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06584# If the pipeline
+--     requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
+--     and @renderPass@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
+--     /must/ be a valid 'Vulkan.Core10.Enums.Format.Format' value
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06585# If the pipeline
+--     requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
+--     @renderPass@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
+--     is not 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', it /must/ be a
+--     format with
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#potential-format-features potential format features>
+--     that include
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06586# If the pipeline
+--     requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
+--     @renderPass@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
+--     is not 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', it /must/ be a
+--     format with
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#potential-format-features potential format features>
+--     that include
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06587# If the pipeline
+--     requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
+--     @renderPass@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
+--     is not 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', it /must/ be a
+--     format that includes a depth component
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06588# If the pipeline
+--     requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
+--     @renderPass@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
+--     is not 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', it /must/ be a
+--     format that includes a stencil component
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06589# If the pipeline
+--     requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
+--     @renderPass@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
+--     is not 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
+--     is not 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED',
+--     @depthAttachmentFormat@ /must/ equal @stencilAttachmentFormat@
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-09033# If @renderPass@
+--     is 'Vulkan.Core10.APIConstants.NULL_HANDLE', the pipeline is being
+--     created with
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>
+--     and
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
+--     and either of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
+--     or
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
+--     are not 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', and the
+--     @VK_EXT_extended_dynamic_state3@ extension is not enabled or any of
+--     the
+--     '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', or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS'
+--     dynamic states are not set, @pDepthStencilState@ /must/ be a valid
+--     pointer to a valid 'PipelineDepthStencilStateCreateInfo' structure
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDepthStencilState-09034# If
+--     @pDepthStencilState@ is not @NULL@ it /must/ be a valid pointer to a
+--     valid 'PipelineDepthStencilStateCreateInfo' structure
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-09035# If @renderPass@
+--     is 'Vulkan.Core10.APIConstants.NULL_HANDLE' and the pipeline is
+--     being created with
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>
+--     but not
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
+--     and the @VK_EXT_extended_dynamic_state3@ extension is not enabled,
+--     or any of the
+--     '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', or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS'
+--     dynamic states are not set, @pDepthStencilState@ /must/ be a valid
+--     pointer to a valid 'PipelineDepthStencilStateCreateInfo' structure
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDepthStencilState-09036# If
+--     @pDepthStencilState@ is not @NULL@ it /must/ be a valid pointer to a
+--     valid 'PipelineDepthStencilStateCreateInfo' structure
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-09037# If @renderPass@
+--     is 'Vulkan.Core10.APIConstants.NULL_HANDLE', the pipeline is being
+--     created with
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
+--     and any element of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
+--     is not 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', and the
+--     @VK_EXT_extended_dynamic_state3@ extension is not enabled, or any of
+--     the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT',
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_EXT',
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT',
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT',
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT',
+--     or 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_BLEND_CONSTANTS'
+--     dynamic states are not set, @pColorBlendState@ /must/ be a valid
+--     pointer to a valid 'PipelineColorBlendStateCreateInfo' structure
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pColorBlendState-09038# If
+--     @pColorBlendState@ is not @NULL@ it /must/ be a valid pointer to a
+--     valid 'PipelineColorBlendStateCreateInfo' structure
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06055# If @renderPass@
+--     is 'Vulkan.Core10.APIConstants.NULL_HANDLE', @pColorBlendState@ is
+--     not dynamic, and the pipeline is being created with
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
+--     @pColorBlendState->attachmentCount@ /must/ be equal to
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@colorAttachmentCount@
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-11504# If @renderPass@
+--     is 'Vulkan.Core10.APIConstants.NULL_HANDLE', a
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'
+--     is in the pNext chain, and the pipeline is being created with
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@colorAttachmentCount@
+--     /must/ be equal to
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@colorAttachmentCount@
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06057# If @renderPass@
+--     is 'Vulkan.Core10.APIConstants.NULL_HANDLE', the pipeline is being
+--     created with
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@viewMask@
+--     is not @0@, and the
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@viewMask@
+--     is not @0@, and the
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@viewMask@
+--     is not @0@, all of the shaders in the pipeline /must/ not include
+--     variables decorated with the @Layer@ built-in decoration in their
+--     interfaces
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-07720# If @renderPass@
+--     is 'Vulkan.Core10.APIConstants.NULL_HANDLE', the pipeline is being
+--     created with
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@viewMask@
+--     is not @0@, and @multiviewMeshShader@ is not enabled, then @pStages@
+--     /must/ not include a mesh shader
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-12326# If @renderPass@
+--     is 'Vulkan.Core10.APIConstants.NULL_HANDLE', the pipeline is being
+--     created with
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     @pStages@ include a mesh shader, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@viewMask@
+--     is not @0@, then the index of the most significant bit in @viewMask@
+--     /must/ be less than
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxMeshMultiviewViewCount maxMeshMultiviewViewCount>
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06061# If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-dynamicRenderingLocalRead dynamicRenderingLocalRead>
+--     feature is not enabled, the pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-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-08710# If the pipeline
+--     requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>
+--     and @renderPass@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
+--     fragment shaders in @pStages@ /must/ not include any of the
+--     @TileImageColorReadAccessEXT@, @TileImageDepthReadAccessEXT@, or
+--     @TileImageStencilReadAccessEXT@ capabilities
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06062# If the pipeline
+--     requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-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.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo',
+--     if its
+--     <https://registry.khronos.org/vulkan/specs/latest/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
+--     @pAttachments@ member of @pColorBlendState@ /must/ be
+--     'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06063# If the pipeline
+--     requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>
+--     and @renderPass@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', if the
+--     @pNext@ chain includes
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV',
+--     the @colorAttachmentCount@ member of that structure /must/ be equal
+--     to the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@colorAttachmentCount@
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06591# If @pStages@
+--     includes a fragment shader stage, and the fragment shader declares
+--     the @EarlyFragmentTests@ execution mode, the @flags@ member of
+--     'PipelineDepthStencilStateCreateInfo' /must/ not include
+--     'Vulkan.Core10.Enums.PipelineDepthStencilStateCreateFlagBits.PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT'
+--     or
+--     'Vulkan.Core10.Enums.PipelineDepthStencilStateCreateFlagBits.PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06482# If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-dynamicRenderingLocalRead dynamicRenderingLocalRead>
+--     feature is not enabled, the pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-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_EXT',
+--     @renderPass@ /must/ not be 'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-None-09526# If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-dynamicRenderingLocalRead dynamicRenderingLocalRead>
+--     feature is not enabled, the pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-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_EXT'
+--     or
+--     'Vulkan.Core10.Enums.PipelineDepthStencilStateCreateFlagBits.PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT',
+--     @renderPass@ /must/ not be 'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pColorAttachmentSamples-06592# If
+--     the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
+--     elements of the @pColorAttachmentSamples@ member of
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     /must/ be valid
+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' values
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-depthStencilAttachmentSamples-06593#
+--     If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>
+--     and the @depthStencilAttachmentSamples@ member of
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     is not 0, it /must/ be a valid
+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' value
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-09527# If the pipeline
+--     requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
+--     @renderPass@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and
+--     the @flags@ member of 'PipelineColorBlendStateCreateInfo' includes
+--     'Vulkan.Core10.Enums.PipelineColorBlendStateCreateFlagBits.PIPELINE_COLOR_BLEND_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_BIT_EXT'
+--     @subpass@ /must/ have been created with
+--     'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS_BIT_EXT'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-09528# If the pipeline
+--     requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>,
+--     @renderPass@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and
+--     the @flags@ member of 'PipelineDepthStencilStateCreateInfo' includes
+--     'Vulkan.Core10.Enums.PipelineDepthStencilStateCreateFlagBits.PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT',
+--     @subpass@ /must/ have been created with
+--     'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-09529# If the pipeline
+--     requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>,
+--     @renderPass@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and
+--     the @flags@ member of 'PipelineDepthStencilStateCreateInfo' includes
+--     'Vulkan.Core10.Enums.PipelineDepthStencilStateCreateFlagBits.PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT',
+--     @subpass@ /must/ have been created with
+--     'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pipelineStageCreationFeedbackCount-06594#
+--     If
+--     'Vulkan.Core13.Promoted_From_VK_EXT_pipeline_creation_feedback.PipelineCreationFeedbackCreateInfo'::@pipelineStageCreationFeedbackCount@
+--     is not @0@, it /must/ be equal to @stageCount@
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06595# If @renderPass@
+--     is 'Vulkan.Core10.APIConstants.NULL_HANDLE', the pipeline is being
+--     created with
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     or
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>,
+--     and
+--     'Vulkan.Extensions.VK_NVX_multiview_per_view_attributes.MultiviewPerViewAttributesInfoNVX'::@perViewAttributesPositionXOnly@
+--     is 'Vulkan.Core10.FundamentalTypes.TRUE' then
+--     'Vulkan.Extensions.VK_NVX_multiview_per_view_attributes.MultiviewPerViewAttributesInfoNVX'::@perViewAttributes@
+--     /must/ also be 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06596# If
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
+--     includes only one of
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
+--     and an element of
+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
+--     includes the other flag, the value of
+--     'Vulkan.Extensions.VK_NVX_multiview_per_view_attributes.MultiviewPerViewAttributesInfoNVX'::@perViewAttributes@
+--     specified in both this pipeline and the library /must/ be equal
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pLibraries-06597# If one element
+--     of
+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
+--     includes
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'
+--     and another element includes
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
+--     the value of
+--     'Vulkan.Extensions.VK_NVX_multiview_per_view_attributes.MultiviewPerViewAttributesInfoNVX'::@perViewAttributes@
+--     specified in both libraries /must/ be equal
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06598# If
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
+--     includes only one of
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
+--     and an element of
+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
+--     includes the other flag, the value of
+--     'Vulkan.Extensions.VK_NVX_multiview_per_view_attributes.MultiviewPerViewAttributesInfoNVX'::@perViewAttributesPositionXOnly@
+--     specified in both this pipeline and the library /must/ be equal
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pLibraries-06599# If one element
+--     of
+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
+--     includes
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'
+--     and another element includes
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
+--     the value of
+--     'Vulkan.Extensions.VK_NVX_multiview_per_view_attributes.MultiviewPerViewAttributesInfoNVX'::@perViewAttributesPositionXOnly@
+--     specified in both libraries /must/ be equal
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-06600# If the pipeline
+--     requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     or
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>,
+--     @pStages@ /must/ be a valid pointer to an array of @stageCount@
+--     valid 'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo'
+--     structures
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-stageCount-09587# If the pipeline
+--     does not require
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     or
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>,
+--     @stageCount@ /must/ be zero
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pRasterizationState-06601# If the
+--     pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     and
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-pRasterizationState-null related dynamic state is not set>,
+--     @pRasterizationState@ /must/ be a valid pointer to a valid
+--     'PipelineRasterizationStateCreateInfo' structure
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pRasterizationState-09039# If
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
+--     includes
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT',
+--     and
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-pMultisampleState-null related dynamic state is not set>,
+--     then @pMultisampleState@ /must/ be a valid pointer to a valid
+--     'PipelineMultisampleStateCreateInfo' structure
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pRasterizationState-09040# If
+--     @pRasterizationState@ is not @NULL@ it /must/ be a valid pointer to
+--     a valid 'PipelineRasterizationStateCreateInfo' structure
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-layout-06602# If the pipeline
+--     requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>
+--     or
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     and
+--     'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlags2CreateInfoKHR'::@flags@
+--     does not include
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT',
+--     @layout@ /must/ be a valid 'Vulkan.Core10.Handles.PipelineLayout'
+--     handle
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06603# If the pipeline
+--     requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>,
+--     or
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output state>,
+--     and @renderPass@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
+--     @renderPass@ /must/ be a valid 'Vulkan.Core10.Handles.RenderPass'
+--     handle
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-stageCount-09530# If the pipeline
+--     requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     @stageCount@ /must/ be greater than @0@
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-graphicsPipelineLibrary-06606# If
+--     the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-graphicsPipelineLibrary graphicsPipelineLibrary>
+--     feature is not enabled, and if the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-shaderMeshEnqueue shaderMeshEnqueue>
+--     feature is not enabled, @flags@ /must/ not include
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06608# If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-shaderMeshEnqueue shaderMeshEnqueue>
+--     feature is not enabled, and the pipeline is being created with
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-complete all possible state subsets>,
+--     @flags@ /must/ not include
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06609# If @flags@ includes
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT',
+--     pipeline libraries included via
+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'
+--     /must/ have been created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-09245# If @flags@ includes
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT',
+--     @flags@ /must/ also include
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06610# If @flags@ includes
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT',
+--     pipeline libraries included via
+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'
+--     /must/ have been created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pLibraries-06611# Any pipeline
+--     libraries included via
+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
+--     /must/ not include any
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets state subset>
+--     already defined by this structure or defined by any other pipeline
+--     library in
+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06612# If
+--     'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlags2CreateInfoKHR'::@flags@
+--     does not include
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT',
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
+--     includes only one of
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
+--     and an element of
+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
+--     includes the other flag, and @layout@ was not created with
+--     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT',
+--     then the @layout@ used by this pipeline and the library /must/ be
+--     /identically defined/
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pLibraries-06613# If
+--     'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlags2CreateInfoKHR'::@flags@
+--     does not include
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT',
+--     one element of
+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
+--     includes
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'
+--     and another element includes
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
+--     and the @layout@ specified by either library was not created with
+--     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT',
+--     then the @layout@ used by each library /must/ be
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#glossary-identically-defined identically defined>
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06614# If
+--     'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlags2CreateInfoKHR'::@flags@
+--     does not include
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT',
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
+--     includes only one of
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
+--     an element of
+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
+--     includes the other subset, and @layout@ was created with
+--     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT',
+--     then the @layout@ used by the library /must/ also have been created
+--     with
+--     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pLibraries-06615# If
+--     'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlags2CreateInfoKHR'::@flags@
+--     does not include
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT',
+--     one element of
+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
+--     includes
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'
+--     and another element includes
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
+--     and the @layout@ specified by either library was created with
+--     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT',
+--     then the @layout@ used by both libraries /must/ have been created
+--     with
+--     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06616# If
+--     'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlags2CreateInfoKHR'::@flags@
+--     does not include
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT',
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
+--     includes only one of
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
+--     an element of
+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
+--     includes the other subset, and @layout@ was created with
+--     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT',
+--     elements of the @pSetLayouts@ array which @layout@ was created with
+--     that are not 'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ be
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#glossary-identically-defined identically defined>
+--     to the element at the same index of @pSetLayouts@ used to create the
+--     library’s @layout@
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pLibraries-06617# If
+--     'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlags2CreateInfoKHR'::@flags@
+--     does not include
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT',
+--     one element of
+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
+--     includes
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'
+--     and another element includes
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
+--     and the @layout@ specified by either library was created with
+--     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT',
+--     elements of the @pSetLayouts@ array which either @layout@ was
+--     created with that are not 'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--     /must/ be
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#glossary-identically-defined identically defined>
+--     to the element at the same index of @pSetLayouts@ used to create the
+--     other library’s @layout@
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06618# If
+--     'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlags2CreateInfoKHR'::@flags@
+--     does not include
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT',
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
+--     includes only one of
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
+--     and an element of
+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
+--     includes the other flag, any descriptor set layout /N/ specified by
+--     @layout@ in both this pipeline and the library which include
+--     bindings accessed by shader stages in each /must/ be /identically
+--     defined/
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pLibraries-06619# If
+--     'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlags2CreateInfoKHR'::@flags@
+--     does not include
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT',
+--     one element of
+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
+--     includes
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'
+--     and another element includes
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
+--     any descriptor set layout /N/ specified by @layout@ in both
+--     libraries which include bindings accessed by shader stages in each
+--     /must/ be
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#glossary-identically-defined identically defined>
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06620# If
+--     'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlags2CreateInfoKHR'::@flags@
+--     does not include
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT',
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
+--     includes only one of
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
+--     and an element of
+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
+--     includes the other flag, push constants specified in @layout@ in
+--     both this pipeline and the library which are available to shader
+--     stages in each /must/ be
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#glossary-identically-defined identically defined>
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pLibraries-06621# If
+--     'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlags2CreateInfoKHR'::@flags@
+--     does not include
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT',
+--     and one element of
+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
+--     includes
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'
+--     and another element includes
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
+--     push constants specified in @layout@ in both this pipeline and the
+--     library which are available to shader stages in each /must/ be
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#glossary-identically-defined identically defined>
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06679# If
+--     'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlags2CreateInfoKHR'::@flags@
+--     does not include
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT',
+--     and
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
+--     includes only one of
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
+--     an element of
+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
+--     includes the other subset,
+--     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT'
+--     was not used, and any element of the @pSetLayouts@ array when
+--     @layout@ was created and the corresponding element of the
+--     @pSetLayouts@ array used to create the library’s @layout@ /must/ not
+--     both be 'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pLibraries-06681# If
+--     'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlags2CreateInfoKHR'::@flags@
+--     does not include
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT',
+--     one element of
+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
+--     includes
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'
+--     and another element includes
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
+--     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT'
+--     was not used, and any element of the @pSetLayouts@ array used to
+--     create each library’s @layout@ was
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', then the corresponding
+--     element of the @pSetLayouts@ array used to create the other
+--     library’s @layout@ /must/ not be
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06756# If
+--     'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlags2CreateInfoKHR'::@flags@
+--     does not include
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT',
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
+--     includes only one of
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
+--     an element of
+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
+--     includes the other subset, and any element of the @pSetLayouts@
+--     array which @layout@ was created with was
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', then the corresponding
+--     element of the @pSetLayouts@ array used to create the library’s
+--     @layout@ /must/ not have shader bindings for shaders in the other
+--     subset
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06757# If
+--     'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlags2CreateInfoKHR'::@flags@
+--     does not include
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT',
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
+--     includes only one of
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
+--     an element of
+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
+--     includes the other subset, and any element of the @pSetLayouts@
+--     array used to create the library’s @layout@ was
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', then the corresponding
+--     element of the @pSetLayouts@ array used to create this pipeline’s
+--     @layout@ /must/ not have shader bindings for shaders in the other
+--     subset
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pLibraries-06758# If
+--     'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlags2CreateInfoKHR'::@flags@
+--     does not include
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT',
+--     one element of
+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
+--     includes
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'
+--     and another element includes
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
+--     and any element of the @pSetLayouts@ array used to create each
+--     library’s @layout@ was 'Vulkan.Core10.APIConstants.NULL_HANDLE',
+--     then the corresponding element of the @pSetLayouts@ array used to
+--     create the other library’s @layout@ /must/ not have shader bindings
+--     for shaders in the other subset
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06682# If
+--     'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlags2CreateInfoKHR'::@flags@
+--     does not include
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT',
+--     and
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
+--     includes both
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'
+--     and
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
+--     @layout@ /must/ have been created with no elements of the
+--     @pSetLayouts@ array set to 'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06683# If
+--     'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlags2CreateInfoKHR'::@flags@
+--     does not include
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT',
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
+--     includes
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT',
+--     and @pRasterizationState->rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', @layout@ /must/ have been
+--     created with no elements of the @pSetLayouts@ array set to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06684# If
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
+--     includes at least one of and no more than two of
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT',
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT',
+--     and an element of
+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
+--     includes one of the other flags, the value of @subpass@ /must/ be
+--     equal to that used to create the library
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pLibraries-06623# If one element
+--     of
+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
+--     includes at least one of and no more than two of
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT',
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT',
+--     and another element of
+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
+--     includes one of the other flags, the value of @subpass@ used to
+--     create each library /must/ be identical
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderpass-06624# If @renderpass@
+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
+--     includes at least one of and no more than two of
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT',
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT',
+--     and an element of
+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
+--     includes one of the other flags, @renderPass@ /must/ be compatible
+--     with that used to create the library
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderpass-06625# If @renderpass@
+--     is 'Vulkan.Core10.APIConstants.NULL_HANDLE',
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
+--     includes at least one of and no more than two of
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT',
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT',
+--     and an element of
+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
+--     includes one of the other flags, the value of @renderPass@ used to
+--     create that library /must/ also be
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06626# If
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
+--     includes either
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
+--     and the other element is included in
+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@,
+--     and @renderPass@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', the
+--     value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@viewMask@
+--     used by this pipeline and that specified by the library /must/ be
+--     identical
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pLibraries-06627# If
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'
+--     and
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT'
+--     are included in two elements of
+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@,
+--     and @renderPass@ was 'Vulkan.Core10.APIConstants.NULL_HANDLE' for
+--     both libraries, the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@viewMask@
+--     set by each library /must/ be identical
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pLibraries-06628# If one element
+--     of
+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
+--     includes at least one of and no more than two of
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT',
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT',
+--     and another element of
+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
+--     includes one of the other flags, the @renderPass@ objects used to
+--     create each library /must/ be compatible or all equal to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderpass-06631# If @renderPass@
+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the pipeline
+--     requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>,
+--     and the @VK_EXT_extended_dynamic_state3@ extension is not enabled or
+--     any of the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT',
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT', or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT'
+--     dynamic states is not set, or the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-alphaToOne alphaToOne>
+--     feature is enabled and
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT'
+--     is not set, then @pMultisampleState@ /must/ be a valid pointer to a
+--     valid 'PipelineMultisampleStateCreateInfo' structure
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-Input-06632# If the pipeline
+--     requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>
+--     with a fragment shader that either enables
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-sampleshading sample shading>
+--     or decorates any variable in the @Input@ storage class with
+--     @Sample@, and the @VK_EXT_extended_dynamic_state3@ extension is not
+--     enabled or any of the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT',
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT', or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT'
+--     dynamic states is not set, or the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-alphaToOne alphaToOne>
+--     feature is enabled and
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT'
+--     is not set, then @pMultisampleState@ /must/ be a valid pointer to a
+--     valid 'PipelineMultisampleStateCreateInfo' structure
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-11856# If
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
+--     includes either
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'
+--     is included and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@
+--     is 'Vulkan.Core10.FundamentalTypes.TRUE', and an element of
+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
+--     also includes either
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
+--     the library /must/ also include
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'
+--     and the
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@
+--     specified by the library /must/ be
+--     'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-11857# If
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
+--     includes either
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'
+--     is not included or
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@
+--     is 'Vulkan.Core10.FundamentalTypes.FALSE', and an element of
+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
+--     also includes either
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
+--     either the library /must/ not include
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'
+--     or the
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@
+--     specified by the library /must/ be
+--     'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-customResolve-11858# If one
+--     element of
+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'
+--     includes either
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'
+--     is included and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@
+--     is 'Vulkan.Core10.FundamentalTypes.TRUE', and another element of
+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
+--     also includes either
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
+--     the other library /must/ also include
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'
+--     and the
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@
+--     specified by the library /must/ be
+--     'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-customResolve-11859# If one
+--     element of
+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'
+--     includes either
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'
+--     is not included or
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@
+--     is 'Vulkan.Core10.FundamentalTypes.FALSE', and another element of
+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
+--     also includes either
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
+--     either the other library /must/ not include
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'
+--     or the
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@
+--     specified by the library /must/ be
+--     'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06633# If
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
+--     includes
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT'
+--     with a @pMultisampleState@ that was not @NULL@, and an element of
+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
+--     was created with
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT',
+--     @pMultisampleState@ /must/ be
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#glossary-identically-defined identically defined>
+--     to that used to create the library
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pLibraries-06634# If an element
+--     of
+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
+--     was created with
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT'
+--     with a @pMultisampleState@ that was not @NULL@, and if
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
+--     includes
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT',
+--     @pMultisampleState@ /must/ be
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#glossary-identically-defined identically defined>
+--     to that used to create the library
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pLibraries-06635# If one element
+--     of
+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
+--     was created with
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT'
+--     with a @pMultisampleState@ that was not @NULL@, and if a different
+--     element of
+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
+--     was created with
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT',
+--     the @pMultisampleState@ used to create each library /must/ be
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#glossary-identically-defined identically defined>
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pLibraries-06636# If one element
+--     of
+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
+--     was created with
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT'
+--     and a value of @pMultisampleState->sampleShadingEnable@ equal
+--     'Vulkan.Core10.FundamentalTypes.TRUE', and if a different element of
+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
+--     was created with
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
+--     the @pMultisampleState@ used to create each library /must/ be
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#glossary-identically-defined identically defined>
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06637# If
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
+--     includes
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT',
+--     @pMultisampleState->sampleShadingEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', and an element of
+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
+--     was created with
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
+--     @pMultisampleState@ /must/ be
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#glossary-identically-defined identically defined>
+--     to that used to create the library
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pLibraries-09567# If one element
+--     of
+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
+--     was created with
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT'
+--     and a value of @pMultisampleState->sampleShadingEnable@ equal
+--     'Vulkan.Core10.FundamentalTypes.TRUE', and if
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
+--     includes
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
+--     @pMultisampleState@ /must/ be
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#glossary-identically-defined identically defined>
+--     to that used to create the library
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06638# If
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
+--     includes only one of
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
+--     and an element of
+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
+--     includes the other flag, values specified in
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'
+--     for both this pipeline and that library /must/ be identical
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pLibraries-06639# If one element
+--     of
+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
+--     includes
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'
+--     and another element includes
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
+--     values specified in
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'
+--     for both this pipeline and that library /must/ be identical
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06640# If
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
+--     includes
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
+--     @pStages@ /must/ be a valid pointer to an array of @stageCount@
+--     valid 'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo'
+--     structures
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06642# If
+--     'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlags2CreateInfoKHR'::@flags@
+--     does not include
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT',
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
+--     includes
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
+--     @layout@ /must/ be a valid 'Vulkan.Core10.Handles.PipelineLayout'
+--     handle
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06643# If
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
+--     includes
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT',
+--     and @renderPass@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
+--     @renderPass@ /must/ be a valid 'Vulkan.Core10.Handles.RenderPass'
+--     handle
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06644# If
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
+--     includes
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
+--     @stageCount@ /must/ be greater than @0@
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06645# If
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
+--     is non-zero, if @flags@ includes
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR',
+--     any libraries /must/ have also been created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pLibraries-06646# If
+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
+--     includes more than one library, and any library was created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR',
+--     all libraries /must/ have also been created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pLibraries-06647# If
+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
+--     includes at least one library,
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
+--     is non-zero, and any library was created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR',
+--     @flags@ /must/ include
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-None-07826# If
+--     'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlags2CreateInfoKHR'::@flags@
+--     does not include
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT',
+--     the pipeline includes a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-complete complete set of state>,
+--     and there are no libraries included in
+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@,
+--     then 'Vulkan.Core10.Handles.PipelineLayout' /must/ be a valid
+--     pipeline layout
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-layout-07827# If
+--     'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlags2CreateInfoKHR'::@flags@
+--     does not include
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT',
+--     the pipeline includes a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-complete complete set of state>
+--     specified entirely by libraries, and each library was created with a
+--     'Vulkan.Core10.Handles.PipelineLayout' created without
+--     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT',
+--     then @layout@ /must/ be
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-compatibility compatible>
+--     with the layouts in those libraries
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06729# If
+--     'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlags2CreateInfoKHR'::@flags@
+--     does not include
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT',
+--     @flags@ includes
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT',
+--     the pipeline includes a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-complete complete set of state>
+--     specified entirely by libraries, and each library was created with a
+--     'Vulkan.Core10.Handles.PipelineLayout' created with
+--     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT',
+--     then @layout@ /must/ be
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-compatibility compatible>
+--     with the union of the libraries\' pipeline layouts other than the
+--     inclusion\/exclusion of
+--     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06730# If
+--     'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlags2CreateInfoKHR'::@flags@
+--     does not include
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT',
+--     @flags@ does not include
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT',
+--     the pipeline includes a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-complete complete set of state>
+--     specified entirely by libraries, and each library was created with a
+--     'Vulkan.Core10.Handles.PipelineLayout' created with
+--     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT',
+--     then @layout@ /must/ be
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-compatibility compatible>
+--     with the union of the libraries\' pipeline layouts
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-conservativePointAndLineRasterization-08892#
+--     If
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-conservativePointAndLineRasterization conservativePointAndLineRasterization>
+--     is not supported and the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line or point topology class, then
+--     'Vulkan.Extensions.VK_EXT_conservative_rasterization.PipelineRasterizationConservativeStateCreateInfoEXT'::@conservativeRasterizationMode@
+--     /must/ be
+--     'Vulkan.Extensions.VK_EXT_conservative_rasterization.CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-06894# If the pipeline
+--     requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     but not
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>,
+--     elements of @pStages@ /must/ not have @stage@ set to
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-06895# If the pipeline
+--     requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>
+--     but not
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     elements of @pStages@ /must/ not have @stage@ set to a shader stage
+--     which participates in pre-rasterization
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-06896# If the pipeline
+--     requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     all elements of @pStages@ /must/ have a @stage@ set to a shader
+--     stage which participates in
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>
+--     or
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-stage-06897# If the pipeline
+--     requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>
+--     and\/or
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     any value of @stage@ /must/ not be set in more than one element of
+--     @pStages@
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3TessellationDomainOrigin-07370#
+--     If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-extendedDynamicState3TessellationDomainOrigin extendedDynamicState3TessellationDomainOrigin>
+--     feature is not enabled, there /must/ be no element of the
+--     @pDynamicStates@ member of @pDynamicState@ set to
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3DepthClampEnable-07371#
+--     If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-extendedDynamicState3DepthClampEnable extendedDynamicState3DepthClampEnable>
+--     feature is not enabled, there /must/ be no element of the
+--     @pDynamicStates@ member of @pDynamicState@ set to
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3PolygonMode-07372#
+--     If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-extendedDynamicState3PolygonMode extendedDynamicState3PolygonMode>
+--     feature is not enabled, there /must/ be no element of the
+--     @pDynamicStates@ member of @pDynamicState@ set to
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_POLYGON_MODE_EXT'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3RasterizationSamples-07373#
+--     If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-extendedDynamicState3RasterizationSamples extendedDynamicState3RasterizationSamples>
+--     feature is not enabled, there /must/ be no element of the
+--     @pDynamicStates@ member of @pDynamicState@ set to
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3SampleMask-07374#
+--     If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-extendedDynamicState3SampleMask extendedDynamicState3SampleMask>
+--     feature is not enabled, there /must/ be no element of the
+--     @pDynamicStates@ member of @pDynamicState@ set to
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3AlphaToCoverageEnable-07375#
+--     If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-extendedDynamicState3AlphaToCoverageEnable extendedDynamicState3AlphaToCoverageEnable>
+--     feature is not enabled, there /must/ be no element of the
+--     @pDynamicStates@ member of @pDynamicState@ set to
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3AlphaToOneEnable-07376#
+--     If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-extendedDynamicState3AlphaToOneEnable extendedDynamicState3AlphaToOneEnable>
+--     feature is not enabled, there /must/ be no element of the
+--     @pDynamicStates@ member of @pDynamicState@ set to
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3LogicOpEnable-07377#
+--     If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-extendedDynamicState3LogicOpEnable extendedDynamicState3LogicOpEnable>
+--     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_ENABLE_EXT'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3ColorBlendEnable-07378#
+--     If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-extendedDynamicState3ColorBlendEnable extendedDynamicState3ColorBlendEnable>
+--     feature is not enabled, there /must/ be no element of the
+--     @pDynamicStates@ member of @pDynamicState@ set to
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3ColorBlendEquation-07379#
+--     If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-extendedDynamicState3ColorBlendEquation extendedDynamicState3ColorBlendEquation>
+--     feature is not enabled, there /must/ be no element of the
+--     @pDynamicStates@ member of @pDynamicState@ set to
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3ColorWriteMask-07380#
+--     If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-extendedDynamicState3ColorWriteMask extendedDynamicState3ColorWriteMask>
+--     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_MASK_EXT'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3RasterizationStream-07381#
+--     If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-extendedDynamicState3RasterizationStream extendedDynamicState3RasterizationStream>
+--     feature is not enabled, there /must/ be no element of the
+--     @pDynamicStates@ member of @pDynamicState@ set to
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_STREAM_EXT'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3ConservativeRasterizationMode-07382#
+--     If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-extendedDynamicState3ConservativeRasterizationMode extendedDynamicState3ConservativeRasterizationMode>
+--     feature is not enabled, there /must/ be no element of the
+--     @pDynamicStates@ member of @pDynamicState@ set to
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3ExtraPrimitiveOverestimationSize-07383#
+--     If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-extendedDynamicState3ExtraPrimitiveOverestimationSize extendedDynamicState3ExtraPrimitiveOverestimationSize>
+--     feature is not enabled, there /must/ be no element of the
+--     @pDynamicStates@ member of @pDynamicState@ set to
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-09639# If the
+--     pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     @pDynamicState@ includes
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT',
+--     and @pDynamicState@ does not include
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT',
+--     @pRasterizationState@ /must/ include a
+--     'Vulkan.Extensions.VK_EXT_conservative_rasterization.PipelineRasterizationConservativeStateCreateInfoEXT'
+--     in its @pNext@ chain
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3DepthClipEnable-07384#
+--     If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-extendedDynamicState3DepthClipEnable extendedDynamicState3DepthClipEnable>
+--     feature is not enabled, there /must/ be no element of the
+--     @pDynamicStates@ member of @pDynamicState@ set to
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3SampleLocationsEnable-07385#
+--     If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-extendedDynamicState3SampleLocationsEnable extendedDynamicState3SampleLocationsEnable>
+--     feature is not enabled, there /must/ be no element of the
+--     @pDynamicStates@ member of @pDynamicState@ set to
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3ColorBlendAdvanced-07386#
+--     If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-extendedDynamicState3ColorBlendAdvanced extendedDynamicState3ColorBlendAdvanced>
+--     feature is not enabled, there /must/ be no element of the
+--     @pDynamicStates@ member of @pDynamicState@ set to
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3ProvokingVertexMode-07387#
+--     If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-extendedDynamicState3ProvokingVertexMode extendedDynamicState3ProvokingVertexMode>
+--     feature is not enabled, there /must/ be no element of the
+--     @pDynamicStates@ member of @pDynamicState@ set to
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3LineRasterizationMode-07388#
+--     If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-extendedDynamicState3LineRasterizationMode extendedDynamicState3LineRasterizationMode>
+--     feature is not enabled, there /must/ be no element of the
+--     @pDynamicStates@ member of @pDynamicState@ set to
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3LineStippleEnable-07389#
+--     If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-extendedDynamicState3LineStippleEnable extendedDynamicState3LineStippleEnable>
+--     feature is not enabled, there /must/ be no element of the
+--     @pDynamicStates@ member of @pDynamicState@ set to
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3DepthClipNegativeOneToOne-07390#
+--     If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-extendedDynamicState3DepthClipNegativeOneToOne extendedDynamicState3DepthClipNegativeOneToOne>
+--     feature is not enabled, there /must/ be no element of the
+--     @pDynamicStates@ member of @pDynamicState@ set to
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3ViewportWScalingEnable-07391#
+--     If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-extendedDynamicState3ViewportWScalingEnable extendedDynamicState3ViewportWScalingEnable>
+--     feature is not enabled, there /must/ be no element of the
+--     @pDynamicStates@ member of @pDynamicState@ set to
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3ViewportSwizzle-07392#
+--     If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-extendedDynamicState3ViewportSwizzle extendedDynamicState3ViewportSwizzle>
+--     feature is not enabled, there /must/ be no element of the
+--     @pDynamicStates@ member of @pDynamicState@ set to
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3CoverageToColorEnable-07393#
+--     If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-extendedDynamicState3CoverageToColorEnable extendedDynamicState3CoverageToColorEnable>
+--     feature is not enabled, there /must/ be no element of the
+--     @pDynamicStates@ member of @pDynamicState@ set to
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3CoverageToColorLocation-07394#
+--     If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-extendedDynamicState3CoverageToColorLocation extendedDynamicState3CoverageToColorLocation>
+--     feature is not enabled, there /must/ be no element of the
+--     @pDynamicStates@ member of @pDynamicState@ set to
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3CoverageModulationMode-07395#
+--     If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-extendedDynamicState3CoverageModulationMode extendedDynamicState3CoverageModulationMode>
+--     feature is not enabled, there /must/ be no element of the
+--     @pDynamicStates@ member of @pDynamicState@ set to
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3CoverageModulationTableEnable-07396#
+--     If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-extendedDynamicState3CoverageModulationTableEnable extendedDynamicState3CoverageModulationTableEnable>
+--     feature is not enabled, there /must/ be no element of the
+--     @pDynamicStates@ member of @pDynamicState@ set to
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3CoverageModulationTable-07397#
+--     If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-extendedDynamicState3CoverageModulationTable extendedDynamicState3CoverageModulationTable>
+--     feature is not enabled, there /must/ be no element of the
+--     @pDynamicStates@ member of @pDynamicState@ set to
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3CoverageReductionMode-07398#
+--     If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-extendedDynamicState3CoverageReductionMode extendedDynamicState3CoverageReductionMode>
+--     feature is not enabled, there /must/ be no element of the
+--     @pDynamicStates@ member of @pDynamicState@ set to
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3RepresentativeFragmentTestEnable-07399#
+--     If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-extendedDynamicState3RepresentativeFragmentTestEnable extendedDynamicState3RepresentativeFragmentTestEnable>
+--     feature is not enabled, there /must/ be no element of the
+--     @pDynamicStates@ member of @pDynamicState@ set to
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3ShadingRateImageEnable-07400#
+--     If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-extendedDynamicState3ShadingRateImageEnable extendedDynamicState3ShadingRateImageEnable>
+--     feature is not enabled, there /must/ be no element of the
+--     @pDynamicStates@ member of @pDynamicState@ set to
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-07401# @flags@ /must/ not
+--     include
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_KHR'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pLibraries-11594# If @flags@
+--     includes
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_KHR',
+--     each element of
+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
+--     /must/ have been created with the
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_KHR'
+--     bit set
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-11595# If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-micromap ::micromap>
+--     feature is not enabled, @flags@ /must/ not include
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_KHR'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-07997# @flags@ /must/ not
+--     include
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-07730# If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-multiviewPerViewViewports multiviewPerViewViewports>
+--     feature is enabled, @renderpass@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', the pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-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_WITH_COUNT',
+--     then the index of the most significant bit in each element of
+--     'Vulkan.Core11.Promoted_From_VK_KHR_multiview.RenderPassMultiviewCreateInfo'::@pViewMasks@
+--     /must/ be less than @pViewportState->viewportCount@
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-07731# If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-multiviewPerViewViewports multiviewPerViewViewports>
+--     feature is enabled, @renderpass@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', the pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-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_WITH_COUNT',
+--     then the index of the most significant bit in each element of
+--     'Vulkan.Core11.Promoted_From_VK_KHR_multiview.RenderPassMultiviewCreateInfo'::@pViewMasks@
+--     /must/ be less than @pViewportState->scissorCount@
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-multiviewPerViewViewports-12249#
+--     If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-multiviewPerViewViewports multiviewPerViewViewports>
+--     feature is enabled, @renderpass@ is
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', the pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-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_WITH_COUNT',
+--     then the index of the most significant bit in
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@viewMask@
+--     /must/ be less than @pViewportState->viewportCount@
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-multiviewPerViewViewports-12250#
+--     If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-multiviewPerViewViewports multiviewPerViewViewports>
+--     feature is enabled, @renderpass@ is
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', the pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-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_WITH_COUNT',
+--     then the index of the most significant bit in
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@viewMask@
+--     /must/ be less than @pViewportState->scissorCount@
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-08711# If @pStages@
+--     includes a fragment shader stage,
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE'
+--     is not set in 'PipelineDynamicStateCreateInfo'::@pDynamicStates@,
+--     and the fragment shader declares the @EarlyFragmentTests@ execution
+--     mode and uses @OpDepthAttachmentReadEXT@, the @depthWriteEnable@
+--     member of 'PipelineDepthStencilStateCreateInfo' /must/ be
+--     'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-08712# If @pStages@
+--     includes a fragment shader stage,
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_WRITE_MASK'
+--     is not set in 'PipelineDynamicStateCreateInfo'::@pDynamicStates@,
+--     and the fragment shader declares the @EarlyFragmentTests@ execution
+--     mode and uses @OpStencilAttachmentReadEXT@, the value of
+--     'StencilOpState'::@writeMask@ for both @front@ and @back@ in
+--     'PipelineDepthStencilStateCreateInfo' /must/ be @0@
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-08744# If @renderPass@
+--     is 'Vulkan.Core10.APIConstants.NULL_HANDLE', the pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output state>
+--     or
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>,
+--     the pipeline enables
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-sampleshading sample shading>,
+--     @rasterizationSamples@ is not dynamic, and the @pNext@ chain
+--     includes a
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'
+--     structure, @rasterizationSamples@ /must/ be a valid
+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' value
+--     that is set in @imageCreateSampleCounts@ (as defined in
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-image-creation-limits Image Creation Limits>)
+--     for every element of @depthAttachmentFormat@,
+--     @stencilAttachmentFormat@ and the @pColorAttachmentFormats@ array
+--     which is not 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-08897# If
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
+--     includes
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_VERTEX_INPUT_INTERFACE_BIT_EXT',
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     is specified either in a library or by the inclusion of
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT',
+--     and that state includes a vertex shader stage in @pStages@, the
+--     pipeline /must/ define
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-vertex-input vertex input state>
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-08898# If
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
+--     includes
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_VERTEX_INPUT_INTERFACE_BIT_EXT',
+--     and
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     is not specified, the pipeline /must/ define
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-vertex-input vertex input state>
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-08899# If @flags@ does not
+--     include
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR',
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     is specified either in a library or by the inclusion of
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT',
+--     and that state includes a vertex shader stage in @pStages@, the
+--     pipeline /must/ either define
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-vertex-input vertex input state>
+--     or include that state in a linked pipeline library
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-08900# If
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
+--     includes
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'
+--     the pipeline /must/ define
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-08901# If @flags@ does not
+--     include
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR',
+--     the pipeline /must/ either define
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     or include that state in a linked pipeline library
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-08903# If
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
+--     includes
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     is specified either in a library or by the inclusion of
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT',
+--     and that state either includes
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE'
+--     or has @pRasterizationState->rasterizerDiscardEnable@ set to
+--     'Vulkan.Core10.FundamentalTypes.FALSE', the pipeline /must/ define
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-08904# If
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
+--     includes
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
+--     and
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     is not specified, the pipeline /must/ define
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-08906# If
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
+--     includes
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     is specified either in a library or by the inclusion of
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT',
+--     and that state either includes
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE'
+--     or has @pRasterizationState->rasterizerDiscardEnable@ set to
+--     'Vulkan.Core10.FundamentalTypes.FALSE', the pipeline /must/ define
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-08907# If
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
+--     includes
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
+--     and
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     is not specified, the pipeline /must/ define
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-08909# If @flags@ does not
+--     include
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR',
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     is specified either in a library or by the inclusion of
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT',
+--     and that state either includes
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE'
+--     or has @pRasterizationState->rasterizerDiscardEnable@ set to
+--     'Vulkan.Core10.FundamentalTypes.FALSE', the pipeline /must/ define
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>
+--     and
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>
+--     or include those states in linked pipeline libraries
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-None-09043# If
+--     @pDynamicState->pDynamicStates@ does not include
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT',
+--     and the format of any color attachment is
+--     'Vulkan.Core10.Enums.Format.FORMAT_E5B9G9R9_UFLOAT_PACK32', the
+--     @colorWriteMask@ member of the corresponding element of
+--     @pColorBlendState->pAttachments@ /must/ either include all of
+--     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_R_BIT',
+--     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_G_BIT',
+--     and
+--     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_B_BIT',
+--     or none of them
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09301# If
+--     the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-externalFormatResolve externalFormatResolve>
+--     feature is enabled, the pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
+--     @renderPass@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', and
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     is not @0@,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@viewMask@
+--     /must/ be @0@
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09304# If
+--     the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-externalFormatResolve externalFormatResolve>
+--     feature is enabled, the pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
+--     @renderPass@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE',
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     is not @0@, and @rasterizationSamples@ is not dynamic,
+--     'PipelineMultisampleStateCreateInfo'::@rasterizationSamples@ /must/
+--     be @1@
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09305# If
+--     the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-externalFormatResolve externalFormatResolve>
+--     feature is enabled, the pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
+--     @renderPass@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', and
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     is not @0@, and @blendEnable@ is not dynamic, the @blendEnable@
+--     member of each element of @pColorBlendState->pAttachments@ /must/ be
+--     'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09306# If
+--     the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-externalFormatResolve externalFormatResolve>
+--     feature is enabled, the pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
+--     @renderPass@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', and
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     is not @0@, and @pDynamicState->pDynamicStates@ does not include
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR',
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::@fragmentSize.width@
+--     /must/ be @1@
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09307# If
+--     the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-externalFormatResolve externalFormatResolve>
+--     feature is enabled, the pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
+--     @renderPass@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', and
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     is not @0@, and @pDynamicState->pDynamicStates@ does not include
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR',
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::@fragmentSize.height@
+--     /must/ be @1@
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09308# If
+--     the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-externalFormatResolve externalFormatResolve>
+--     feature is enabled, the pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-output pre-rasterization shader state>
+--     and
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
+--     @renderPass@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', and
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     is not @0@, the last
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader stage>
+--     /must/ not statically use a variable with the
+--     @PrimitiveShadingRateKHR@ built-in
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09309# If
+--     the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-externalFormatResolve externalFormatResolve>
+--     feature is enabled, the pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
+--     @renderPass@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', and
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     is not @0@,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@colorAttachmentCount@
+--     /must/ be @1@
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09310# If
+--     the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-externalFormatResolve externalFormatResolve>
+--     feature is enabled, the pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>
+--     and
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
+--     @renderPass@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', and
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     is not @0@, the fragment shader /must/ not declare the
+--     @DepthReplacing@ or @StencilRefReplacingEXT@ execution modes
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09313# If
+--     the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-externalFormatResolve externalFormatResolve>
+--     feature is enabled, the pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
+--     @renderPass@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
+--     @subpass@ includes an external format resolve attachment, and
+--     @rasterizationSamples@ is not dynamic,
+--     'PipelineMultisampleStateCreateInfo'::@rasterizationSamples@ /must/
+--     be 'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09314# If
+--     the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-externalFormatResolve externalFormatResolve>
+--     feature is enabled, the pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
+--     @renderPass@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
+--     @subpass@ includes an external format resolve attachment, and
+--     @blendEnable@ is not dynamic, the @blendEnable@ member of each
+--     element of @pColorBlendState->pAttachments@ /must/ be
+--     'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09315# If
+--     the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-externalFormatResolve externalFormatResolve>
+--     feature is enabled, the pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
+--     @renderPass@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
+--     @subpass@ includes an external format resolve attachment, and
+--     @pDynamicState->pDynamicStates@ does not include
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR',
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::@fragmentSize.width@
+--     /must/ be @1@
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09316# If
+--     the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-externalFormatResolve externalFormatResolve>
+--     feature is enabled, the pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
+--     @renderPass@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
+--     @subpass@ includes an external format resolve attachment, and
+--     @pDynamicState->pDynamicStates@ does not include
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR',
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::@fragmentSize.height@
+--     /must/ be @1@
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09317# If
+--     the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-externalFormatResolve externalFormatResolve>
+--     feature is enabled, the pipeline requires
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-output pre-rasterization shader state>
+--     and
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
+--     @renderPass@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and
+--     @subpass@ includes an external format resolve attachment, the last
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader stage>
+--     /must/ not statically use a variable with the
+--     @PrimitiveShadingRateKHR@ built-in
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-09531# If the pipeline
+--     is being created with
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>
+--     and
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output state>,
+--     the value of @renderPass@ is
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', and
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'
+--     is included,
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@colorAttachmentCount@
+--     /must/ be equal to
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@colorAttachmentCount@
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-09652# If the pipeline
+--     is being created with
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>
+--     and
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output state>,
+--     the value of @renderPass@ is
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', and
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'
+--     is not included, the fragment shader /must/ not contain any input
+--     attachments with a @InputAttachmentIndex@ greater than or equal to
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@colorAttachmentCount@
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-09532# If the pipeline
+--     is being created with
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output state>,
+--     and the value of @renderPass@ is
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE',
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingAttachmentLocationInfo'::@colorAttachmentCount@
+--     /must/ be equal to
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@colorAttachmentCount@
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-11273# If
+--     'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlags2CreateInfoKHR'::@flags@
+--     includes
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT',
+--     all libraries linked to this pipeline /must/ also have that flag set
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-11274# If
+--     'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlags2CreateInfoKHR'::@flags@
+--     does not include
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT',
+--     all libraries linked to this pipeline /must/ also not have that flag
+--     set
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-12355# If @flags@ includes
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     all libraries linked to this pipeline /must/ also have that flag set
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-12356# If @flags@ does not
+--     include
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     all libraries linked to this pipeline /must/ also not have that flag
+--     set
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-12357# If @flags@ includes
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT',
+--     all libraries linked to this pipeline /must/ also have that flag set
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-12358# If @flags@ does not
+--     include
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT',
+--     all libraries linked to this pipeline /must/ also not have that flag
+--     set
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-12359# If @flags@ includes
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT',
+--     all libraries linked to this pipeline /must/ also have that flag set
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-12360# If @flags@ does not
+--     include
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT',
+--     all libraries linked to this pipeline /must/ also not have that flag
+--     set
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-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_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT',
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID',
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkExternalFormatOHOS VkExternalFormatOHOS>,
+--     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT',
+--     'Vulkan.Extensions.VK_NV_device_generated_commands.GraphicsPipelineShaderGroupsCreateInfoNV',
+--     'Vulkan.Extensions.VK_NVX_multiview_per_view_attributes.MultiviewPerViewAttributesInfoNVX',
+--     'Vulkan.Extensions.VK_KHR_pipeline_binary.PipelineBinaryInfoKHR',
+--     'Vulkan.Extensions.VK_AMD_pipeline_compiler_control.PipelineCompilerControlCreateInfoAMD',
+--     'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.PipelineCreateFlags2CreateInfo',
+--     'Vulkan.Core13.Promoted_From_VK_EXT_pipeline_creation_feedback.PipelineCreationFeedbackCreateInfo',
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT',
+--     'Vulkan.Extensions.VK_VALVE_fragment_density_map_layered.PipelineFragmentDensityMapLayeredCreateInfoVALVE',
+--     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PipelineFragmentShadingRateEnumStateCreateInfoNV',
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR',
+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo',
+--     'Vulkan.Extensions.VK_NV_representative_fragment_test.PipelineRepresentativeFragmentTestStateCreateInfoNV',
+--     'Vulkan.Core14.Promoted_From_VK_EXT_pipeline_robustness.PipelineRobustnessCreateInfo',
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingAttachmentLocationInfo',
+--     or
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-sType-unique# The @sType@ value
+--     of each structure in the @pNext@ chain /must/ be unique
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-parameter# If
+--     @pDynamicState@ is not @NULL@, @pDynamicState@ /must/ be a valid
+--     pointer to a valid 'PipelineDynamicStateCreateInfo' structure
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-commonparent# Each of
+--     @basePipelineHandle@, @layout@, and @renderPass@ 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_VERSION_1_0 VK_VERSION_1_0>,
+-- 'Vulkan.Core10.Handles.Pipeline', 'PipelineColorBlendStateCreateInfo',
+-- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlags',
+-- 'PipelineDepthStencilStateCreateInfo', 'PipelineDynamicStateCreateInfo',
+-- 'PipelineInputAssemblyStateCreateInfo',
+-- 'Vulkan.Core10.Handles.PipelineLayout',
+-- 'PipelineMultisampleStateCreateInfo',
+-- 'PipelineRasterizationStateCreateInfo',
+-- 'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo',
+-- 'PipelineTessellationStateCreateInfo',
+-- 'PipelineVertexInputStateCreateInfo', 'PipelineViewportStateCreateInfo',
+-- 'Vulkan.Core10.Handles.RenderPass',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'createGraphicsPipelines'
+data GraphicsPipelineCreateInfo (es :: [Type]) = GraphicsPipelineCreateInfo
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
+    next :: Chain es
+  , -- | @flags@ is a bitmask of
+    -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits'
+    -- specifying how the pipeline will be generated.
+    flags :: PipelineCreateFlags
+  , -- | @stageCount@ is the number of entries in the @pStages@ array.
+    stageCount :: Word32
+  , -- | @pStages@ is a pointer to an array of @stageCount@
+    -- 'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo' structures
+    -- describing the set of the shader stages to be included in the graphics
+    -- pipeline.
+    stages :: Vector (SomeStruct PipelineShaderStageCreateInfo)
+  , -- | @pVertexInputState@ is a pointer to a
+    -- 'PipelineVertexInputStateCreateInfo' structure. It is ignored if the
+    -- pipeline includes a mesh shader stage. It /can/ be @NULL@ if the
+    -- pipeline is created with the
+    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
+    -- dynamic state set.
+    vertexInputState :: Maybe (SomeStruct PipelineVertexInputStateCreateInfo)
+  , -- | @pInputAssemblyState@ is a pointer to a
+    -- 'PipelineInputAssemblyStateCreateInfo' structure which determines input
+    -- assembly behavior for vertex shading, as described in
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#drawing Drawing Commands>.
+    -- #pipelines-pInputAssemblyState-null# If the
+    -- @VK_EXT_extended_dynamic_state3@ extension is enabled, it /can/ be
+    -- @NULL@ if the pipeline is created with both
+    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE',
+    -- and 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY'
+    -- dynamic states set and
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-dynamicPrimitiveTopologyUnrestricted dynamicPrimitiveTopologyUnrestricted>
+    -- is 'Vulkan.Core10.FundamentalTypes.TRUE'. It is ignored if the pipeline
+    -- includes a mesh shader stage.
+    inputAssemblyState :: Maybe PipelineInputAssemblyStateCreateInfo
+  , -- | @pTessellationState@ is a pointer to a
+    -- 'PipelineTessellationStateCreateInfo' structure defining tessellation
+    -- state used by tessellation shaders. It /can/ be @NULL@ if the pipeline
+    -- is created with the
+    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT'
+    -- dynamic state set.
+    tessellationState :: Maybe (SomeStruct PipelineTessellationStateCreateInfo)
+  , -- | @pViewportState@ is a pointer to a 'PipelineViewportStateCreateInfo'
+    -- structure defining viewport state used when rasterization is enabled.
+    -- #pipelines-pViewportState-null# If the @VK_EXT_extended_dynamic_state3@
+    -- extension is enabled, it /can/ be @NULL@ if the pipeline is created with
+    -- both
+    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT',
+    -- and 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
+    -- dynamic states set.
+    viewportState :: Maybe (SomeStruct PipelineViewportStateCreateInfo)
+  , -- | @pRasterizationState@ is a pointer to a
+    -- 'PipelineRasterizationStateCreateInfo' structure defining rasterization
+    -- state. #pipelines-pRasterizationState-null# If the
+    -- @VK_EXT_extended_dynamic_state3@ extension is enabled, it /can/ be
+    -- @NULL@ if the pipeline is created with all of
+    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT',
+    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE',
+    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_POLYGON_MODE_EXT',
+    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CULL_MODE',
+    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRONT_FACE',
+    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE',
+    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS', and
+    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_WIDTH' dynamic
+    -- states set.
+    rasterizationState :: Maybe (SomeStruct PipelineRasterizationStateCreateInfo)
+  , -- | @pMultisampleState@ is a pointer to a
+    -- 'PipelineMultisampleStateCreateInfo' structure defining multisample
+    -- state used when rasterization is enabled.
+    -- #pipelines-pMultisampleState-null# If the
+    -- @VK_EXT_extended_dynamic_state3@ extension is enabled, it /can/ be
+    -- @NULL@ if the pipeline is created with all of
+    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT',
+    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT', and
+    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT'
+    -- dynamic states set, and either the
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-alphaToOne alphaToOne>
+    -- feature is not enabled or
+    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT'
+    -- is set, in which case
+    -- 'PipelineMultisampleStateCreateInfo'::@sampleShadingEnable@ is assumed
+    -- to be 'Vulkan.Core10.FundamentalTypes.FALSE'.
+    multisampleState :: Maybe (SomeStruct PipelineMultisampleStateCreateInfo)
+  , -- | @pDepthStencilState@ is a pointer to a
+    -- 'PipelineDepthStencilStateCreateInfo' structure defining depth\/stencil
+    -- state used when rasterization is enabled for depth or stencil
+    -- attachments accessed during rendering.
+    -- #pipelines-pDepthStencilState-null# If the
+    -- @VK_EXT_extended_dynamic_state3@ extension is enabled, it /can/ be
+    -- @NULL@ if the pipeline is created with all of
+    -- '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', and
+    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS' dynamic
+    -- states set.
+    depthStencilState :: Maybe PipelineDepthStencilStateCreateInfo
+  , -- | @pColorBlendState@ is a pointer to a 'PipelineColorBlendStateCreateInfo'
+    -- structure defining color blend state used when rasterization is enabled
+    -- for any color attachments accessed during rendering.
+    -- #pipelines-pColorBlendState-null# If the
+    -- @VK_EXT_extended_dynamic_state3@ extension is enabled, it /can/ be
+    -- @NULL@ if the pipeline is created with all of
+    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT',
+    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_EXT',
+    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT',
+    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT',
+    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT',
+    -- and 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_BLEND_CONSTANTS'
+    -- dynamic states set.
+    colorBlendState :: Maybe (SomeStruct PipelineColorBlendStateCreateInfo)
+  , -- | @pDynamicState@ is a pointer to a 'PipelineDynamicStateCreateInfo'
+    -- structure defining which properties of the pipeline state object are
+    -- dynamic and /can/ be changed independently of the pipeline state. This
+    -- /can/ be @NULL@, which means no state in the pipeline is considered
+    -- dynamic.
+    dynamicState :: Maybe PipelineDynamicStateCreateInfo
+  , -- | @layout@ is the description of binding locations used by both the
+    -- pipeline and descriptor sets used with the pipeline. If
+    -- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceProperties'::@apiVersion@
+    -- is greater than or equal to Vulkan 1.3 or
+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance4 VK_KHR_maintenance4>
+    -- is enabled @layout@ /must/ not be accessed by the implementation outside
+    -- of the duration of the command this structure is passed to.
+    layout :: PipelineLayout
+  , -- | @renderPass@ is a handle to a render pass object describing the
+    -- 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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-compatibility Render Pass Compatibility>
+    -- for more information. The implementation /must/ not access this object
+    -- outside of the duration of the command this structure is passed to.
+    renderPass :: RenderPass
+  , -- | @subpass@ is the index of the subpass in the render pass where this
+    -- pipeline will be used.
+    subpass :: Word32
+  , -- | @basePipelineHandle@ is a pipeline to derive from.
+    basePipelineHandle :: Pipeline
+  , -- | @basePipelineIndex@ is an index into the @pCreateInfos@ parameter to use
+    -- as a pipeline to derive from.
+    basePipelineIndex :: Int32
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (GraphicsPipelineCreateInfo (es :: [Type]))
+#endif
+deriving instance Show (Chain es) => Show (GraphicsPipelineCreateInfo es)
+
+instance Extensible GraphicsPipelineCreateInfo where
+  extensibleTypeName = "GraphicsPipelineCreateInfo"
+  setNext GraphicsPipelineCreateInfo{..} next' = GraphicsPipelineCreateInfo{next = next', ..}
+  getNext GraphicsPipelineCreateInfo{..} = next
+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends GraphicsPipelineCreateInfo e => b) -> Maybe b
+  extends _ f
+    | Just Refl <- eqT @e @PipelineFragmentDensityMapLayeredCreateInfoVALVE = Just f
+    | Just Refl <- eqT @e @RenderingInputAttachmentIndexInfo = Just f
+    | Just Refl <- eqT @e @RenderingAttachmentLocationInfo = Just f
+    | Just Refl <- eqT @e @PipelineRobustnessCreateInfo = Just f
+    | Just Refl <- eqT @e @GraphicsPipelineLibraryCreateInfoEXT = Just f
+    | Just Refl <- eqT @e @MultiviewPerViewAttributesInfoNVX = Just f
+    | Just Refl <- eqT @e @AttachmentSampleCountInfoAMD = Just f
+    | Just Refl <- eqT @e @PipelineRenderingCreateInfo = Just f
+    | Just Refl <- eqT @e @CustomResolveCreateInfoEXT = Just f
+    | Just Refl <- eqT @e @PipelineFragmentShadingRateEnumStateCreateInfoNV = Just f
+    | Just Refl <- eqT @e @PipelineFragmentShadingRateStateCreateInfoKHR = Just f
+    | Just Refl <- eqT @e @PipelineLibraryCreateInfoKHR = Just f
+    | Just Refl <- eqT @e @PipelineCompilerControlCreateInfoAMD = Just f
+    | Just Refl <- eqT @e @PipelineCreationFeedbackCreateInfo = Just f
+    | Just Refl <- eqT @e @PipelineRepresentativeFragmentTestStateCreateInfoNV = Just f
+    | Just Refl <- eqT @e @ExternalFormatANDROID = Just f
+    | Just Refl <- eqT @e @PipelineDiscardRectangleStateCreateInfoEXT = Just f
+    | Just Refl <- eqT @e @GraphicsPipelineShaderGroupsCreateInfoNV = Just f
+    | Just Refl <- eqT @e @PipelineBinaryInfoKHR = Just f
+    | Just Refl <- eqT @e @PipelineCreateFlags2CreateInfo = Just f
+    | otherwise = Nothing
+
+instance ( Extendss GraphicsPipelineCreateInfo es
+         , PokeChain es ) => ToCStruct (GraphicsPipelineCreateInfo es) where
+  withCStruct x f = allocaBytes 144 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p GraphicsPipelineCreateInfo{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO)
+    pNext'' <- fmap castPtr . ContT $ withChain (next)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
+    lift $ poke ((p `plusPtr` 16 :: Ptr PipelineCreateFlags)) (flags)
+    let pStagesLength = Data.Vector.length $ (stages)
+    stageCount'' <- lift $ if (stageCount) == 0
+      then pure $ fromIntegral pStagesLength
+      else do
+        unless (fromIntegral pStagesLength == (stageCount) || pStagesLength == 0) $
+          throwIO $ IOError Nothing InvalidArgument "" "pStages must be empty or have 'stageCount' elements" Nothing Nothing
+        pure (stageCount)
+    lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) (stageCount'')
+    pStages'' <- if Data.Vector.null (stages)
+      then pure nullPtr
+      else do
+        pPStages <- ContT $ allocaBytes @(PipelineShaderStageCreateInfo _) (((Data.Vector.length (stages))) * 48)
+        Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPStages `plusPtr` (48 * (i)) :: Ptr (PipelineShaderStageCreateInfo _))) (e) . ($ ())) ((stages))
+        pure $ pPStages
+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr (PipelineShaderStageCreateInfo _)))) pStages''
+    pVertexInputState'' <- case (vertexInputState) of
+      Nothing -> pure nullPtr
+      Just j -> ContT @_ @_ @(Ptr (PipelineVertexInputStateCreateInfo '[])) $ \cont -> withSomeCStruct @PipelineVertexInputStateCreateInfo (j) (cont . castPtr)
+    lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr (PipelineVertexInputStateCreateInfo _)))) pVertexInputState''
+    pInputAssemblyState'' <- case (inputAssemblyState) of
+      Nothing -> pure nullPtr
+      Just j -> ContT $ withCStruct (j)
+    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr PipelineInputAssemblyStateCreateInfo))) pInputAssemblyState''
+    pTessellationState'' <- case (tessellationState) of
+      Nothing -> pure nullPtr
+      Just j -> ContT @_ @_ @(Ptr (PipelineTessellationStateCreateInfo '[])) $ \cont -> withSomeCStruct @PipelineTessellationStateCreateInfo (j) (cont . castPtr)
+    lift $ poke ((p `plusPtr` 48 :: Ptr (Ptr (PipelineTessellationStateCreateInfo _)))) pTessellationState''
+    pViewportState'' <- case (viewportState) of
+      Nothing -> pure nullPtr
+      Just j -> ContT @_ @_ @(Ptr (PipelineViewportStateCreateInfo '[])) $ \cont -> withSomeCStruct @PipelineViewportStateCreateInfo (j) (cont . castPtr)
+    lift $ poke ((p `plusPtr` 56 :: Ptr (Ptr (PipelineViewportStateCreateInfo _)))) pViewportState''
+    pRasterizationState'' <- case (rasterizationState) of
+      Nothing -> pure nullPtr
+      Just j -> ContT @_ @_ @(Ptr (PipelineRasterizationStateCreateInfo '[])) $ \cont -> withSomeCStruct @PipelineRasterizationStateCreateInfo (j) (cont . castPtr)
+    lift $ poke ((p `plusPtr` 64 :: Ptr (Ptr (PipelineRasterizationStateCreateInfo _)))) pRasterizationState''
+    pMultisampleState'' <- case (multisampleState) of
+      Nothing -> pure nullPtr
+      Just j -> ContT @_ @_ @(Ptr (PipelineMultisampleStateCreateInfo '[])) $ \cont -> withSomeCStruct @PipelineMultisampleStateCreateInfo (j) (cont . castPtr)
+    lift $ poke ((p `plusPtr` 72 :: Ptr (Ptr (PipelineMultisampleStateCreateInfo _)))) pMultisampleState''
+    pDepthStencilState'' <- case (depthStencilState) of
+      Nothing -> pure nullPtr
+      Just j -> ContT $ withCStruct (j)
+    lift $ poke ((p `plusPtr` 80 :: Ptr (Ptr PipelineDepthStencilStateCreateInfo))) pDepthStencilState''
+    pColorBlendState'' <- case (colorBlendState) of
+      Nothing -> pure nullPtr
+      Just j -> ContT @_ @_ @(Ptr (PipelineColorBlendStateCreateInfo '[])) $ \cont -> withSomeCStruct @PipelineColorBlendStateCreateInfo (j) (cont . castPtr)
+    lift $ poke ((p `plusPtr` 88 :: Ptr (Ptr (PipelineColorBlendStateCreateInfo _)))) pColorBlendState''
+    pDynamicState'' <- case (dynamicState) of
+      Nothing -> pure nullPtr
+      Just j -> ContT $ withCStruct (j)
+    lift $ poke ((p `plusPtr` 96 :: Ptr (Ptr PipelineDynamicStateCreateInfo))) pDynamicState''
+    lift $ poke ((p `plusPtr` 104 :: Ptr PipelineLayout)) (layout)
+    lift $ poke ((p `plusPtr` 112 :: Ptr RenderPass)) (renderPass)
+    lift $ poke ((p `plusPtr` 120 :: Ptr Word32)) (subpass)
+    lift $ poke ((p `plusPtr` 128 :: Ptr Pipeline)) (basePipelineHandle)
+    lift $ poke ((p `plusPtr` 136 :: Ptr Int32)) (basePipelineIndex)
+    lift $ f
+  cStructSize = 144
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO)
+    pNext' <- fmap castPtr . ContT $ withZeroChain @es
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
+    lift $ poke ((p `plusPtr` 120 :: Ptr Word32)) (zero)
+    lift $ poke ((p `plusPtr` 136 :: Ptr Int32)) (zero)
+    lift $ f
+
+instance ( Extendss GraphicsPipelineCreateInfo es
+         , PeekChain es ) => FromCStruct (GraphicsPipelineCreateInfo es) where
+  peekCStruct p = do
+    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
+    next <- peekChain (castPtr pNext)
+    flags <- peek @PipelineCreateFlags ((p `plusPtr` 16 :: Ptr PipelineCreateFlags))
+    stageCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
+    pStages <- peek @(Ptr (PipelineShaderStageCreateInfo _)) ((p `plusPtr` 24 :: Ptr (Ptr (PipelineShaderStageCreateInfo _))))
+    let pStagesLength = if pStages == nullPtr then 0 else (fromIntegral stageCount)
+    pStages' <- generateM pStagesLength (\i -> peekSomeCStruct (forgetExtensions ((pStages `advancePtrBytes` (48 * (i)) :: Ptr (PipelineShaderStageCreateInfo _)))))
+    pVertexInputState <- peek @(Ptr (PipelineVertexInputStateCreateInfo _)) ((p `plusPtr` 32 :: Ptr (Ptr (PipelineVertexInputStateCreateInfo _))))
+    pVertexInputState' <- maybePeek (\j -> peekSomeCStruct (forgetExtensions (j))) pVertexInputState
+    pInputAssemblyState <- peek @(Ptr PipelineInputAssemblyStateCreateInfo) ((p `plusPtr` 40 :: Ptr (Ptr PipelineInputAssemblyStateCreateInfo)))
+    pInputAssemblyState' <- maybePeek (\j -> peekCStruct @PipelineInputAssemblyStateCreateInfo (j)) pInputAssemblyState
+    pTessellationState <- peek @(Ptr (PipelineTessellationStateCreateInfo _)) ((p `plusPtr` 48 :: Ptr (Ptr (PipelineTessellationStateCreateInfo _))))
+    pTessellationState' <- maybePeek (\j -> peekSomeCStruct (forgetExtensions (j))) pTessellationState
+    pViewportState <- peek @(Ptr (PipelineViewportStateCreateInfo _)) ((p `plusPtr` 56 :: Ptr (Ptr (PipelineViewportStateCreateInfo _))))
+    pViewportState' <- maybePeek (\j -> peekSomeCStruct (forgetExtensions (j))) pViewportState
+    pRasterizationState <- peek @(Ptr (PipelineRasterizationStateCreateInfo _)) ((p `plusPtr` 64 :: Ptr (Ptr (PipelineRasterizationStateCreateInfo _))))
+    pRasterizationState' <- maybePeek (\j -> peekSomeCStruct (forgetExtensions (j))) pRasterizationState
+    pMultisampleState <- peek @(Ptr (PipelineMultisampleStateCreateInfo _)) ((p `plusPtr` 72 :: Ptr (Ptr (PipelineMultisampleStateCreateInfo _))))
+    pMultisampleState' <- maybePeek (\j -> peekSomeCStruct (forgetExtensions (j))) pMultisampleState
+    pDepthStencilState <- peek @(Ptr PipelineDepthStencilStateCreateInfo) ((p `plusPtr` 80 :: Ptr (Ptr PipelineDepthStencilStateCreateInfo)))
+    pDepthStencilState' <- maybePeek (\j -> peekCStruct @PipelineDepthStencilStateCreateInfo (j)) pDepthStencilState
+    pColorBlendState <- peek @(Ptr (PipelineColorBlendStateCreateInfo _)) ((p `plusPtr` 88 :: Ptr (Ptr (PipelineColorBlendStateCreateInfo _))))
+    pColorBlendState' <- maybePeek (\j -> peekSomeCStruct (forgetExtensions (j))) pColorBlendState
+    pDynamicState <- peek @(Ptr PipelineDynamicStateCreateInfo) ((p `plusPtr` 96 :: Ptr (Ptr PipelineDynamicStateCreateInfo)))
+    pDynamicState' <- maybePeek (\j -> peekCStruct @PipelineDynamicStateCreateInfo (j)) pDynamicState
+    layout <- peek @PipelineLayout ((p `plusPtr` 104 :: Ptr PipelineLayout))
+    renderPass <- peek @RenderPass ((p `plusPtr` 112 :: Ptr RenderPass))
+    subpass <- peek @Word32 ((p `plusPtr` 120 :: Ptr Word32))
+    basePipelineHandle <- peek @Pipeline ((p `plusPtr` 128 :: Ptr Pipeline))
+    basePipelineIndex <- peek @Int32 ((p `plusPtr` 136 :: Ptr Int32))
+    pure $ GraphicsPipelineCreateInfo
+             next
+             flags
+             stageCount
+             pStages'
+             pVertexInputState'
+             pInputAssemblyState'
+             pTessellationState'
+             pViewportState'
+             pRasterizationState'
+             pMultisampleState'
+             pDepthStencilState'
+             pColorBlendState'
+             pDynamicState'
+             layout
+             renderPass
+             subpass
+             basePipelineHandle
+             basePipelineIndex
+
+instance es ~ '[] => Zero (GraphicsPipelineCreateInfo es) where
+  zero = GraphicsPipelineCreateInfo
+           ()
+           zero
+           zero
+           mempty
+           Nothing
+           Nothing
+           Nothing
+           Nothing
+           Nothing
+           Nothing
+           Nothing
+           Nothing
+           Nothing
+           zero
+           zero
+           zero
+           zero
+           zero
+
diff --git a/src/Vulkan/Core10/GraphicsPipeline.hs-boot b/src/Vulkan/Core10/GraphicsPipeline.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core10/GraphicsPipeline.hs-boot
@@ -0,0 +1,166 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "GraphicsPipeline"
+module Vulkan.Core10.GraphicsPipeline  ( GraphicsPipelineCreateInfo
+                                       , PipelineColorBlendAttachmentState
+                                       , PipelineColorBlendStateCreateInfo
+                                       , PipelineDepthStencilStateCreateInfo
+                                       , PipelineDynamicStateCreateInfo
+                                       , PipelineInputAssemblyStateCreateInfo
+                                       , PipelineMultisampleStateCreateInfo
+                                       , PipelineRasterizationStateCreateInfo
+                                       , PipelineTessellationStateCreateInfo
+                                       , PipelineVertexInputStateCreateInfo
+                                       , PipelineViewportStateCreateInfo
+                                       , StencilOpState
+                                       , VertexInputAttributeDescription
+                                       , VertexInputBindingDescription
+                                       , Viewport
+                                       ) 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)
+type role GraphicsPipelineCreateInfo nominal
+data GraphicsPipelineCreateInfo (es :: [Type])
+
+instance ( Extendss GraphicsPipelineCreateInfo es
+         , PokeChain es ) => ToCStruct (GraphicsPipelineCreateInfo es)
+instance Show (Chain es) => Show (GraphicsPipelineCreateInfo es)
+
+instance ( Extendss GraphicsPipelineCreateInfo es
+         , PeekChain es ) => FromCStruct (GraphicsPipelineCreateInfo es)
+
+
+data PipelineColorBlendAttachmentState
+
+instance ToCStruct PipelineColorBlendAttachmentState
+instance Show PipelineColorBlendAttachmentState
+
+instance FromCStruct PipelineColorBlendAttachmentState
+
+
+type role PipelineColorBlendStateCreateInfo nominal
+data PipelineColorBlendStateCreateInfo (es :: [Type])
+
+instance ( Extendss PipelineColorBlendStateCreateInfo es
+         , PokeChain es ) => ToCStruct (PipelineColorBlendStateCreateInfo es)
+instance Show (Chain es) => Show (PipelineColorBlendStateCreateInfo es)
+
+instance ( Extendss PipelineColorBlendStateCreateInfo es
+         , PeekChain es ) => FromCStruct (PipelineColorBlendStateCreateInfo es)
+
+
+data PipelineDepthStencilStateCreateInfo
+
+instance ToCStruct PipelineDepthStencilStateCreateInfo
+instance Show PipelineDepthStencilStateCreateInfo
+
+instance FromCStruct PipelineDepthStencilStateCreateInfo
+
+
+data PipelineDynamicStateCreateInfo
+
+instance ToCStruct PipelineDynamicStateCreateInfo
+instance Show PipelineDynamicStateCreateInfo
+
+instance FromCStruct PipelineDynamicStateCreateInfo
+
+
+data PipelineInputAssemblyStateCreateInfo
+
+instance ToCStruct PipelineInputAssemblyStateCreateInfo
+instance Show PipelineInputAssemblyStateCreateInfo
+
+instance FromCStruct PipelineInputAssemblyStateCreateInfo
+
+
+type role PipelineMultisampleStateCreateInfo nominal
+data PipelineMultisampleStateCreateInfo (es :: [Type])
+
+instance ( Extendss PipelineMultisampleStateCreateInfo es
+         , PokeChain es ) => ToCStruct (PipelineMultisampleStateCreateInfo es)
+instance Show (Chain es) => Show (PipelineMultisampleStateCreateInfo es)
+
+instance ( Extendss PipelineMultisampleStateCreateInfo es
+         , PeekChain es ) => FromCStruct (PipelineMultisampleStateCreateInfo es)
+
+
+type role PipelineRasterizationStateCreateInfo nominal
+data PipelineRasterizationStateCreateInfo (es :: [Type])
+
+instance ( Extendss PipelineRasterizationStateCreateInfo es
+         , PokeChain es ) => ToCStruct (PipelineRasterizationStateCreateInfo es)
+instance Show (Chain es) => Show (PipelineRasterizationStateCreateInfo es)
+
+instance ( Extendss PipelineRasterizationStateCreateInfo es
+         , PeekChain es ) => FromCStruct (PipelineRasterizationStateCreateInfo es)
+
+
+type role PipelineTessellationStateCreateInfo nominal
+data PipelineTessellationStateCreateInfo (es :: [Type])
+
+instance ( Extendss PipelineTessellationStateCreateInfo es
+         , PokeChain es ) => ToCStruct (PipelineTessellationStateCreateInfo es)
+instance Show (Chain es) => Show (PipelineTessellationStateCreateInfo es)
+
+instance ( Extendss PipelineTessellationStateCreateInfo es
+         , PeekChain es ) => FromCStruct (PipelineTessellationStateCreateInfo es)
+
+
+type role PipelineVertexInputStateCreateInfo nominal
+data PipelineVertexInputStateCreateInfo (es :: [Type])
+
+instance ( Extendss PipelineVertexInputStateCreateInfo es
+         , PokeChain es ) => ToCStruct (PipelineVertexInputStateCreateInfo es)
+instance Show (Chain es) => Show (PipelineVertexInputStateCreateInfo es)
+
+instance ( Extendss PipelineVertexInputStateCreateInfo es
+         , PeekChain es ) => FromCStruct (PipelineVertexInputStateCreateInfo es)
+
+
+type role PipelineViewportStateCreateInfo nominal
+data PipelineViewportStateCreateInfo (es :: [Type])
+
+instance ( Extendss PipelineViewportStateCreateInfo es
+         , PokeChain es ) => ToCStruct (PipelineViewportStateCreateInfo es)
+instance Show (Chain es) => Show (PipelineViewportStateCreateInfo es)
+
+instance ( Extendss PipelineViewportStateCreateInfo es
+         , PeekChain es ) => FromCStruct (PipelineViewportStateCreateInfo es)
+
+
+data StencilOpState
+
+instance ToCStruct StencilOpState
+instance Show StencilOpState
+
+instance FromCStruct StencilOpState
+
+
+data VertexInputAttributeDescription
+
+instance ToCStruct VertexInputAttributeDescription
+instance Show VertexInputAttributeDescription
+
+instance FromCStruct VertexInputAttributeDescription
+
+
+data VertexInputBindingDescription
+
+instance ToCStruct VertexInputBindingDescription
+instance Show VertexInputBindingDescription
+
+instance FromCStruct VertexInputBindingDescription
+
+
+data Viewport
+
+instance ToCStruct Viewport
+instance Show Viewport
+
+instance FromCStruct Viewport
+
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
@@ -92,6 +92,8 @@
 -- 'Vulkan.Extensions.VK_EXT_metal_surface.createMetalSurfaceEXT',
 -- 'Vulkan.Extensions.VK_QNX_screen_surface.createScreenSurfaceQNX',
 -- 'Vulkan.Extensions.VK_GGP_stream_descriptor_surface.createStreamDescriptorSurfaceGGP',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCreateSurfaceOHOS vkCreateSurfaceOHOS>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCreateUbmSurfaceSEC vkCreateUbmSurfaceSEC>,
 -- 'Vulkan.Extensions.VK_NN_vi_surface.createViSurfaceNN',
 -- 'Vulkan.Extensions.VK_KHR_wayland_surface.createWaylandSurfaceKHR',
 -- 'Vulkan.Extensions.VK_KHR_win32_surface.createWin32SurfaceKHR',
@@ -103,7 +105,7 @@
 -- 'Vulkan.Core10.DeviceInitialization.destroyInstance',
 -- 'Vulkan.Extensions.VK_KHR_surface.destroySurfaceKHR',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group_creation.enumeratePhysicalDeviceGroups',
--- 'Vulkan.Extensions.VK_KHR_device_group_creation.enumeratePhysicalDeviceGroupsKHR',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group_creation.enumeratePhysicalDeviceGroups',
 -- 'Vulkan.Core10.DeviceInitialization.enumeratePhysicalDevices',
 -- 'Vulkan.Core10.DeviceInitialization.getInstanceProcAddr',
 -- 'Vulkan.Extensions.VK_EXT_debug_utils.submitDebugUtilsMessageEXT'
@@ -137,7 +139,9 @@
 -- 'Vulkan.Extensions.VK_KHR_display.createDisplayModeKHR',
 -- 'Vulkan.Core10.ExtensionDiscovery.enumerateDeviceExtensionProperties',
 -- 'Vulkan.Core10.LayerDiscovery.enumerateDeviceLayerProperties',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM>,
 -- 'Vulkan.Extensions.VK_KHR_performance_query.enumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR',
+-- 'Vulkan.Extensions.VK_ARM_shader_instrumentation.enumeratePhysicalDeviceShaderInstrumentationMetricsARM',
 -- 'Vulkan.Core10.DeviceInitialization.enumeratePhysicalDevices',
 -- 'Vulkan.Extensions.VK_KHR_get_display_properties2.getDisplayModeProperties2KHR',
 -- 'Vulkan.Extensions.VK_KHR_display.getDisplayModePropertiesKHR',
@@ -145,50 +149,57 @@
 -- 'Vulkan.Extensions.VK_KHR_display.getDisplayPlaneCapabilitiesKHR',
 -- 'Vulkan.Extensions.VK_KHR_display.getDisplayPlaneSupportedDisplaysKHR',
 -- 'Vulkan.Extensions.VK_EXT_acquire_drm_display.getDrmDisplayEXT',
--- 'Vulkan.Extensions.VK_EXT_calibrated_timestamps.getPhysicalDeviceCalibrateableTimeDomainsEXT',
 -- 'Vulkan.Extensions.VK_KHR_calibrated_timestamps.getPhysicalDeviceCalibrateableTimeDomainsKHR',
+-- 'Vulkan.Extensions.VK_KHR_calibrated_timestamps.getPhysicalDeviceCalibrateableTimeDomainsKHR',
 -- 'Vulkan.Extensions.VK_NV_cooperative_matrix2.getPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV',
 -- 'Vulkan.Extensions.VK_KHR_cooperative_matrix.getPhysicalDeviceCooperativeMatrixPropertiesKHR',
 -- 'Vulkan.Extensions.VK_NV_cooperative_matrix.getPhysicalDeviceCooperativeMatrixPropertiesNV',
+-- 'Vulkan.Extensions.VK_NV_cooperative_vector.getPhysicalDeviceCooperativeVectorPropertiesNV',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_heap.getPhysicalDeviceDescriptorSizeEXT',
 -- 'Vulkan.Extensions.VK_EXT_directfb_surface.getPhysicalDeviceDirectFBPresentationSupportEXT',
 -- 'Vulkan.Extensions.VK_KHR_get_display_properties2.getPhysicalDeviceDisplayPlaneProperties2KHR',
 -- 'Vulkan.Extensions.VK_KHR_display.getPhysicalDeviceDisplayPlanePropertiesKHR',
 -- 'Vulkan.Extensions.VK_KHR_get_display_properties2.getPhysicalDeviceDisplayProperties2KHR',
 -- 'Vulkan.Extensions.VK_KHR_display.getPhysicalDeviceDisplayPropertiesKHR',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.getPhysicalDeviceExternalBufferProperties',
--- 'Vulkan.Extensions.VK_KHR_external_memory_capabilities.getPhysicalDeviceExternalBufferPropertiesKHR',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.getPhysicalDeviceExternalBufferProperties',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_external_fence_capabilities.getPhysicalDeviceExternalFenceProperties',
--- 'Vulkan.Extensions.VK_KHR_external_fence_capabilities.getPhysicalDeviceExternalFencePropertiesKHR',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_external_fence_capabilities.getPhysicalDeviceExternalFenceProperties',
 -- 'Vulkan.Extensions.VK_NV_external_memory_capabilities.getPhysicalDeviceExternalImageFormatPropertiesNV',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore_capabilities.getPhysicalDeviceExternalSemaphoreProperties',
--- 'Vulkan.Extensions.VK_KHR_external_semaphore_capabilities.getPhysicalDeviceExternalSemaphorePropertiesKHR',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore_capabilities.getPhysicalDeviceExternalSemaphoreProperties',
+-- 'Vulkan.Extensions.VK_ARM_tensors.getPhysicalDeviceExternalTensorPropertiesARM',
 -- 'Vulkan.Core10.DeviceInitialization.getPhysicalDeviceFeatures',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
--- 'Vulkan.Extensions.VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2KHR',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
 -- 'Vulkan.Core10.DeviceInitialization.getPhysicalDeviceFormatProperties',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFormatProperties2',
--- 'Vulkan.Extensions.VK_KHR_get_physical_device_properties2.getPhysicalDeviceFormatProperties2KHR',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFormatProperties2',
 -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.getPhysicalDeviceFragmentShadingRatesKHR',
 -- 'Vulkan.Core10.DeviceInitialization.getPhysicalDeviceImageFormatProperties',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2',
--- 'Vulkan.Extensions.VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2KHR',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2',
 -- 'Vulkan.Core10.DeviceInitialization.getPhysicalDeviceMemoryProperties',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceMemoryProperties2',
--- 'Vulkan.Extensions.VK_KHR_get_physical_device_properties2.getPhysicalDeviceMemoryProperties2KHR',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceMemoryProperties2',
 -- 'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT',
 -- 'Vulkan.Extensions.VK_NV_optical_flow.getPhysicalDeviceOpticalFlowImageFormatsNV',
 -- 'Vulkan.Extensions.VK_KHR_swapchain.getPhysicalDevicePresentRectanglesKHR',
 -- 'Vulkan.Core10.DeviceInitialization.getPhysicalDeviceProperties',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceProperties2',
--- 'Vulkan.Extensions.VK_KHR_get_physical_device_properties2.getPhysicalDeviceProperties2KHR',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceProperties2',
+-- 'Vulkan.Extensions.VK_ARM_data_graph_instruction_set_tosa.getPhysicalDeviceQueueFamilyDataGraphEngineOperationPropertiesARM',
+-- 'Vulkan.Extensions.VK_ARM_data_graph_optical_flow.getPhysicalDeviceQueueFamilyDataGraphOpticalFlowImageFormatsARM',
+-- 'Vulkan.Extensions.VK_ARM_data_graph.getPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM',
+-- 'Vulkan.Extensions.VK_ARM_data_graph.getPhysicalDeviceQueueFamilyDataGraphPropertiesARM',
 -- 'Vulkan.Extensions.VK_KHR_performance_query.getPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR',
 -- 'Vulkan.Core10.DeviceInitialization.getPhysicalDeviceQueueFamilyProperties',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceQueueFamilyProperties2',
--- 'Vulkan.Extensions.VK_KHR_get_physical_device_properties2.getPhysicalDeviceQueueFamilyProperties2KHR',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceQueueFamilyProperties2',
 -- 'Vulkan.Extensions.VK_QNX_screen_surface.getPhysicalDeviceScreenPresentationSupportQNX',
 -- 'Vulkan.Core10.SparseResourceMemoryManagement.getPhysicalDeviceSparseImageFormatProperties',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceSparseImageFormatProperties2',
--- 'Vulkan.Extensions.VK_KHR_get_physical_device_properties2.getPhysicalDeviceSparseImageFormatProperties2KHR',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceSparseImageFormatProperties2',
 -- 'Vulkan.Extensions.VK_NV_coverage_reduction_mode.getPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV',
 -- 'Vulkan.Extensions.VK_EXT_display_surface_counter.getPhysicalDeviceSurfaceCapabilities2EXT',
 -- 'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.getPhysicalDeviceSurfaceCapabilities2KHR',
@@ -199,7 +210,8 @@
 -- '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',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_tooling_info.getPhysicalDeviceToolProperties',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkGetPhysicalDeviceUbmPresentationSupportSEC vkGetPhysicalDeviceUbmPresentationSupportSEC>,
 -- <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#vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkGetPhysicalDeviceVideoFormatPropertiesKHR vkGetPhysicalDeviceVideoFormatPropertiesKHR>,
@@ -243,45 +255,57 @@
 -- 'Vulkan.Extensions.VK_NV_ray_tracing.bindAccelerationStructureMemoryNV',
 -- 'Vulkan.Core10.MemoryManagement.bindBufferMemory',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.bindBufferMemory2',
--- 'Vulkan.Extensions.VK_KHR_bind_memory2.bindBufferMemory2KHR',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.bindBufferMemory2',
+-- 'Vulkan.Extensions.VK_ARM_data_graph.bindDataGraphPipelineSessionMemoryARM',
 -- 'Vulkan.Core10.MemoryManagement.bindImageMemory',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.bindImageMemory2',
--- 'Vulkan.Extensions.VK_KHR_bind_memory2.bindImageMemory2KHR',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.bindImageMemory2',
 -- 'Vulkan.Extensions.VK_NV_optical_flow.bindOpticalFlowSessionImageNV',
+-- 'Vulkan.Extensions.VK_ARM_tensors.bindTensorMemoryARM',
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkBindVideoSessionMemoryKHR vkBindVideoSessionMemoryKHR>,
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.buildAccelerationStructuresKHR',
 -- 'Vulkan.Extensions.VK_EXT_opacity_micromap.buildMicromapsEXT',
+-- 'Vulkan.Extensions.VK_ARM_shader_instrumentation.clearShaderInstrumentationMetricsARM',
 -- 'Vulkan.Extensions.VK_NV_ray_tracing.compileDeferredNV',
+-- 'Vulkan.Extensions.VK_NV_cooperative_vector.convertCooperativeVectorMatrixNV',
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.copyAccelerationStructureKHR',
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.copyAccelerationStructureToMemoryKHR',
--- 'Vulkan.Extensions.VK_EXT_host_image_copy.copyImageToImageEXT',
--- 'Vulkan.Extensions.VK_EXT_host_image_copy.copyImageToMemoryEXT',
+-- 'Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy.copyImageToImage',
+-- 'Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy.copyImageToImage',
+-- 'Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy.copyImageToMemory',
+-- 'Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy.copyImageToMemory',
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.copyMemoryToAccelerationStructureKHR',
--- 'Vulkan.Extensions.VK_EXT_host_image_copy.copyMemoryToImageEXT',
+-- 'Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy.copyMemoryToImage',
+-- 'Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy.copyMemoryToImage',
 -- 'Vulkan.Extensions.VK_EXT_opacity_micromap.copyMemoryToMicromapEXT',
 -- 'Vulkan.Extensions.VK_EXT_opacity_micromap.copyMicromapEXT',
 -- 'Vulkan.Extensions.VK_EXT_opacity_micromap.copyMicromapToMemoryEXT',
+-- 'Vulkan.Extensions.VK_KHR_device_address_commands.createAccelerationStructure2KHR',
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.createAccelerationStructureKHR',
 -- 'Vulkan.Extensions.VK_NV_ray_tracing.createAccelerationStructureNV',
 -- 'Vulkan.Core10.Buffer.createBuffer',
 -- 'Vulkan.Extensions.VK_FUCHSIA_buffer_collection.createBufferCollectionFUCHSIA',
 -- 'Vulkan.Core10.BufferView.createBufferView',
 -- 'Vulkan.Core10.CommandPool.createCommandPool',
--- 'Vulkan.Core10.Pipeline.createComputePipelines',
+-- 'Vulkan.Core10.ComputePipeline.createComputePipelines',
 -- 'Vulkan.Extensions.VK_NVX_binary_import.createCuFunctionNVX',
 -- 'Vulkan.Extensions.VK_NVX_binary_import.createCuModuleNVX',
 -- 'Vulkan.Extensions.VK_NV_cuda_kernel_launch.createCudaFunctionNV',
 -- 'Vulkan.Extensions.VK_NV_cuda_kernel_launch.createCudaModuleNV',
+-- 'Vulkan.Extensions.VK_ARM_data_graph.createDataGraphPipelineSessionARM',
+-- 'Vulkan.Extensions.VK_ARM_data_graph.createDataGraphPipelinesARM',
 -- 'Vulkan.Extensions.VK_KHR_deferred_host_operations.createDeferredOperationKHR',
 -- 'Vulkan.Core10.DescriptorSet.createDescriptorPool',
 -- 'Vulkan.Core10.DescriptorSet.createDescriptorSetLayout',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template.createDescriptorUpdateTemplate',
--- 'Vulkan.Extensions.VK_KHR_descriptor_update_template.createDescriptorUpdateTemplateKHR',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template.createDescriptorUpdateTemplate',
 -- 'Vulkan.Core10.Device.createDevice', 'Vulkan.Core10.Event.createEvent',
 -- 'Vulkan.Extensions.VK_AMDX_shader_enqueue.createExecutionGraphPipelinesAMDX',
+-- 'Vulkan.Extensions.VK_NV_external_compute_queue.createExternalComputeQueueNV',
 -- 'Vulkan.Core10.Fence.createFence',
 -- 'Vulkan.Core10.Pass.createFramebuffer',
--- 'Vulkan.Core10.Pipeline.createGraphicsPipelines',
+-- 'Vulkan.Extensions.VK_AMD_gpa_interface.createGpaSessionAMD',
+-- 'Vulkan.Core10.GraphicsPipeline.createGraphicsPipelines',
 -- 'Vulkan.Core10.Image.createImage',
 -- 'Vulkan.Core10.ImageView.createImageView',
 -- 'Vulkan.Extensions.VK_EXT_device_generated_commands.createIndirectCommandsLayoutEXT',
@@ -293,21 +317,24 @@
 -- '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.Core13.Promoted_From_VK_EXT_private_data.createPrivateDataSlot',
 -- 'Vulkan.Core10.Query.createQueryPool',
 -- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.createRayTracingPipelinesKHR',
 -- 'Vulkan.Extensions.VK_NV_ray_tracing.createRayTracingPipelinesNV',
 -- 'Vulkan.Core10.Pass.createRenderPass',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.createRenderPass2',
--- 'Vulkan.Extensions.VK_KHR_create_renderpass2.createRenderPass2KHR',
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.createRenderPass2',
 -- 'Vulkan.Core10.Sampler.createSampler',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.createSamplerYcbcrConversion',
--- 'Vulkan.Extensions.VK_KHR_sampler_ycbcr_conversion.createSamplerYcbcrConversionKHR',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.createSamplerYcbcrConversion',
 -- 'Vulkan.Core10.QueueSemaphore.createSemaphore',
+-- 'Vulkan.Extensions.VK_ARM_shader_instrumentation.createShaderInstrumentationARM',
 -- 'Vulkan.Core10.Shader.createShaderModule',
 -- 'Vulkan.Extensions.VK_EXT_shader_object.createShadersEXT',
 -- 'Vulkan.Extensions.VK_KHR_display_swapchain.createSharedSwapchainsKHR',
 -- 'Vulkan.Extensions.VK_KHR_swapchain.createSwapchainKHR',
+-- 'Vulkan.Extensions.VK_ARM_tensors.createTensorARM',
+-- 'Vulkan.Extensions.VK_ARM_tensors.createTensorViewARM',
 -- 'Vulkan.Extensions.VK_EXT_validation_cache.createValidationCacheEXT',
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCreateVideoSessionKHR vkCreateVideoSessionKHR>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCreateVideoSessionParametersKHR vkCreateVideoSessionParametersKHR>,
@@ -324,14 +351,18 @@
 -- 'Vulkan.Extensions.VK_NVX_binary_import.destroyCuModuleNVX',
 -- 'Vulkan.Extensions.VK_NV_cuda_kernel_launch.destroyCudaFunctionNV',
 -- 'Vulkan.Extensions.VK_NV_cuda_kernel_launch.destroyCudaModuleNV',
+-- 'Vulkan.Extensions.VK_ARM_data_graph.destroyDataGraphPipelineSessionARM',
 -- 'Vulkan.Extensions.VK_KHR_deferred_host_operations.destroyDeferredOperationKHR',
 -- 'Vulkan.Core10.DescriptorSet.destroyDescriptorPool',
 -- 'Vulkan.Core10.DescriptorSet.destroyDescriptorSetLayout',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template.destroyDescriptorUpdateTemplate',
--- 'Vulkan.Extensions.VK_KHR_descriptor_update_template.destroyDescriptorUpdateTemplateKHR',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template.destroyDescriptorUpdateTemplate',
 -- 'Vulkan.Core10.Device.destroyDevice',
--- 'Vulkan.Core10.Event.destroyEvent', 'Vulkan.Core10.Fence.destroyFence',
+-- 'Vulkan.Core10.Event.destroyEvent',
+-- 'Vulkan.Extensions.VK_NV_external_compute_queue.destroyExternalComputeQueueNV',
+-- 'Vulkan.Core10.Fence.destroyFence',
 -- 'Vulkan.Core10.Pass.destroyFramebuffer',
+-- 'Vulkan.Extensions.VK_AMD_gpa_interface.destroyGpaSessionAMD',
 -- 'Vulkan.Core10.Image.destroyImage',
 -- 'Vulkan.Core10.ImageView.destroyImageView',
 -- 'Vulkan.Extensions.VK_EXT_device_generated_commands.destroyIndirectCommandsLayoutEXT',
@@ -339,21 +370,24 @@
 -- 'Vulkan.Extensions.VK_EXT_device_generated_commands.destroyIndirectExecutionSetEXT',
 -- 'Vulkan.Extensions.VK_EXT_opacity_micromap.destroyMicromapEXT',
 -- 'Vulkan.Extensions.VK_NV_optical_flow.destroyOpticalFlowSessionNV',
--- 'Vulkan.Core10.Pipeline.destroyPipeline',
+-- 'Vulkan.Core10.ComputePipeline.destroyPipeline',
 -- 'Vulkan.Extensions.VK_KHR_pipeline_binary.destroyPipelineBinaryKHR',
 -- '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.Core13.Promoted_From_VK_EXT_private_data.destroyPrivateDataSlot',
 -- 'Vulkan.Core10.Query.destroyQueryPool',
 -- 'Vulkan.Core10.Pass.destroyRenderPass',
 -- 'Vulkan.Core10.Sampler.destroySampler',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.destroySamplerYcbcrConversion',
--- 'Vulkan.Extensions.VK_KHR_sampler_ycbcr_conversion.destroySamplerYcbcrConversionKHR',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.destroySamplerYcbcrConversion',
 -- 'Vulkan.Core10.QueueSemaphore.destroySemaphore',
 -- 'Vulkan.Extensions.VK_EXT_shader_object.destroyShaderEXT',
+-- 'Vulkan.Extensions.VK_ARM_shader_instrumentation.destroyShaderInstrumentationARM',
 -- 'Vulkan.Core10.Shader.destroyShaderModule',
 -- 'Vulkan.Extensions.VK_KHR_swapchain.destroySwapchainKHR',
+-- 'Vulkan.Extensions.VK_ARM_tensors.destroyTensorARM',
+-- 'Vulkan.Extensions.VK_ARM_tensors.destroyTensorViewARM',
 -- 'Vulkan.Extensions.VK_EXT_validation_cache.destroyValidationCacheEXT',
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkDestroyVideoSessionKHR vkDestroyVideoSessionKHR>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkDestroyVideoSessionParametersKHR vkDestroyVideoSessionParametersKHR>,
@@ -372,17 +406,22 @@
 -- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.getAndroidHardwareBufferPropertiesANDROID',
 -- 'Vulkan.Extensions.VK_FUCHSIA_buffer_collection.getBufferCollectionPropertiesFUCHSIA',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.getBufferDeviceAddress',
--- 'Vulkan.Extensions.VK_EXT_buffer_device_address.getBufferDeviceAddressEXT',
--- 'Vulkan.Extensions.VK_KHR_buffer_device_address.getBufferDeviceAddressKHR',
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.getBufferDeviceAddress',
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.getBufferDeviceAddress',
 -- 'Vulkan.Core10.MemoryManagement.getBufferMemoryRequirements',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.getBufferMemoryRequirements2',
--- 'Vulkan.Extensions.VK_KHR_get_memory_requirements2.getBufferMemoryRequirements2KHR',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.getBufferMemoryRequirements2',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.getBufferOpaqueCaptureAddress',
--- 'Vulkan.Extensions.VK_KHR_buffer_device_address.getBufferOpaqueCaptureAddressKHR',
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.getBufferOpaqueCaptureAddress',
 -- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.getBufferOpaqueCaptureDescriptorDataEXT',
--- 'Vulkan.Extensions.VK_EXT_calibrated_timestamps.getCalibratedTimestampsEXT',
 -- 'Vulkan.Extensions.VK_KHR_calibrated_timestamps.getCalibratedTimestampsKHR',
+-- 'Vulkan.Extensions.VK_KHR_calibrated_timestamps.getCalibratedTimestampsKHR',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkGetClusterAccelerationStructureBuildSizesNV vkGetClusterAccelerationStructureBuildSizesNV>,
 -- 'Vulkan.Extensions.VK_NV_cuda_kernel_launch.getCudaModuleCacheNV',
+-- 'Vulkan.Extensions.VK_ARM_data_graph.getDataGraphPipelineAvailablePropertiesARM',
+-- 'Vulkan.Extensions.VK_ARM_data_graph.getDataGraphPipelinePropertiesARM',
+-- 'Vulkan.Extensions.VK_ARM_data_graph.getDataGraphPipelineSessionBindPointRequirementsARM',
+-- 'Vulkan.Extensions.VK_ARM_data_graph.getDataGraphPipelineSessionMemoryRequirementsARM',
 -- 'Vulkan.Extensions.VK_KHR_deferred_host_operations.getDeferredOperationMaxConcurrencyKHR',
 -- 'Vulkan.Extensions.VK_KHR_deferred_host_operations.getDeferredOperationResultKHR',
 -- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.getDescriptorEXT',
@@ -391,29 +430,34 @@
 -- 'Vulkan.Extensions.VK_VALVE_descriptor_set_host_mapping.getDescriptorSetLayoutHostMappingInfoVALVE',
 -- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.getDescriptorSetLayoutSizeEXT',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_maintenance3.getDescriptorSetLayoutSupport',
--- 'Vulkan.Extensions.VK_KHR_maintenance3.getDescriptorSetLayoutSupportKHR',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_maintenance3.getDescriptorSetLayoutSupport',
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.getDeviceAccelerationStructureCompatibilityKHR',
 -- 'Vulkan.Core13.Promoted_From_VK_KHR_maintenance4.getDeviceBufferMemoryRequirements',
--- 'Vulkan.Extensions.VK_KHR_maintenance4.getDeviceBufferMemoryRequirementsKHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_maintenance4.getDeviceBufferMemoryRequirements',
+-- 'Vulkan.Extensions.VK_NVX_image_view_handle.getDeviceCombinedImageSamplerIndexNVX',
+-- 'Vulkan.Extensions.VK_KHR_device_fault.getDeviceFaultDebugInfoKHR',
 -- 'Vulkan.Extensions.VK_EXT_device_fault.getDeviceFaultInfoEXT',
+-- 'Vulkan.Extensions.VK_KHR_device_fault.getDeviceFaultReportsKHR',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group.getDeviceGroupPeerMemoryFeatures',
--- 'Vulkan.Extensions.VK_KHR_device_group.getDeviceGroupPeerMemoryFeaturesKHR',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group.getDeviceGroupPeerMemoryFeatures',
 -- '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.getDeviceImageMemoryRequirements',
 -- 'Vulkan.Core13.Promoted_From_VK_KHR_maintenance4.getDeviceImageSparseMemoryRequirements',
--- 'Vulkan.Extensions.VK_KHR_maintenance4.getDeviceImageSparseMemoryRequirementsKHR',
--- 'Vulkan.Extensions.VK_KHR_maintenance5.getDeviceImageSubresourceLayoutKHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_maintenance4.getDeviceImageSparseMemoryRequirements',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.getDeviceImageSubresourceLayout',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.getDeviceImageSubresourceLayout',
 -- 'Vulkan.Core10.Memory.getDeviceMemoryCommitment',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.getDeviceMemoryOpaqueCaptureAddress',
--- 'Vulkan.Extensions.VK_KHR_buffer_device_address.getDeviceMemoryOpaqueCaptureAddressKHR',
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.getDeviceMemoryOpaqueCaptureAddress',
 -- 'Vulkan.Extensions.VK_EXT_opacity_micromap.getDeviceMicromapCompatibilityEXT',
 -- 'Vulkan.Core10.DeviceInitialization.getDeviceProcAddr',
 -- 'Vulkan.Core10.Queue.getDeviceQueue',
 -- 'Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory.getDeviceQueue2',
 -- 'Vulkan.Extensions.VK_HUAWEI_subpass_shading.getDeviceSubpassShadingMaxWorkgroupSizeHUAWEI',
+-- 'Vulkan.Extensions.VK_ARM_tensors.getDeviceTensorMemoryRequirementsARM',
 -- 'Vulkan.Extensions.VK_QCOM_tile_properties.getDynamicRenderingTilePropertiesQCOM',
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkGetEncodedVideoSessionParametersKHR vkGetEncodedVideoSessionParametersKHR>,
 -- 'Vulkan.Core10.Event.getEventStatus',
@@ -425,17 +469,22 @@
 -- 'Vulkan.Extensions.VK_QCOM_tile_properties.getFramebufferTilePropertiesQCOM',
 -- 'Vulkan.Extensions.VK_EXT_device_generated_commands.getGeneratedCommandsMemoryRequirementsEXT',
 -- 'Vulkan.Extensions.VK_NV_device_generated_commands.getGeneratedCommandsMemoryRequirementsNV',
+-- 'Vulkan.Extensions.VK_AMD_gpa_interface.getGpaDeviceClockInfoAMD',
+-- 'Vulkan.Extensions.VK_AMD_gpa_interface.getGpaSessionResultsAMD',
+-- 'Vulkan.Extensions.VK_AMD_gpa_interface.getGpaSessionStatusAMD',
 -- 'Vulkan.Extensions.VK_EXT_image_drm_format_modifier.getImageDrmFormatModifierPropertiesEXT',
 -- 'Vulkan.Core10.MemoryManagement.getImageMemoryRequirements',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.getImageMemoryRequirements2',
--- 'Vulkan.Extensions.VK_KHR_get_memory_requirements2.getImageMemoryRequirements2KHR',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.getImageMemoryRequirements2',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_heap.getImageOpaqueCaptureDataEXT',
 -- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.getImageOpaqueCaptureDescriptorDataEXT',
 -- 'Vulkan.Core10.SparseResourceMemoryManagement.getImageSparseMemoryRequirements',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.getImageSparseMemoryRequirements2',
--- 'Vulkan.Extensions.VK_KHR_get_memory_requirements2.getImageSparseMemoryRequirements2KHR',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.getImageSparseMemoryRequirements2',
 -- 'Vulkan.Core10.Image.getImageSubresourceLayout',
--- 'Vulkan.Extensions.VK_EXT_host_image_copy.getImageSubresourceLayout2EXT',
--- 'Vulkan.Extensions.VK_KHR_maintenance5.getImageSubresourceLayout2KHR',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.getImageSubresourceLayout2',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.getImageSubresourceLayout2',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.getImageSubresourceLayout2',
 -- 'Vulkan.Extensions.VK_NVX_image_view_handle.getImageViewAddressNVX',
 -- 'Vulkan.Extensions.VK_NVX_image_view_handle.getImageViewHandle64NVX',
 -- 'Vulkan.Extensions.VK_NVX_image_view_handle.getImageViewHandleNVX',
@@ -445,6 +494,9 @@
 -- 'Vulkan.Extensions.VK_KHR_external_memory_fd.getMemoryFdKHR',
 -- 'Vulkan.Extensions.VK_KHR_external_memory_fd.getMemoryFdPropertiesKHR',
 -- 'Vulkan.Extensions.VK_EXT_external_memory_host.getMemoryHostPointerPropertiesEXT',
+-- 'Vulkan.Extensions.VK_EXT_external_memory_metal.getMemoryMetalHandleEXT',
+-- 'Vulkan.Extensions.VK_EXT_external_memory_metal.getMemoryMetalHandlePropertiesEXT',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkGetMemoryNativeBufferOHOS vkGetMemoryNativeBufferOHOS>,
 -- 'Vulkan.Extensions.VK_NV_external_memory_rdma.getMemoryRemoteAddressNV',
 -- 'Vulkan.Extensions.VK_KHR_external_memory_win32.getMemoryWin32HandleKHR',
 -- 'Vulkan.Extensions.VK_NV_external_memory_win32.getMemoryWin32HandleNV',
@@ -452,6 +504,9 @@
 -- 'Vulkan.Extensions.VK_FUCHSIA_external_memory.getMemoryZirconHandleFUCHSIA',
 -- 'Vulkan.Extensions.VK_FUCHSIA_external_memory.getMemoryZirconHandlePropertiesFUCHSIA',
 -- 'Vulkan.Extensions.VK_EXT_opacity_micromap.getMicromapBuildSizesEXT',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkGetNativeBufferPropertiesOHOS vkGetNativeBufferPropertiesOHOS>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkGetPartitionedAccelerationStructuresBuildSizesNV vkGetPartitionedAccelerationStructuresBuildSizesNV>,
+-- 'Vulkan.Extensions.VK_EXT_present_timing.getPastPresentationTimingEXT',
 -- 'Vulkan.Extensions.VK_GOOGLE_display_timing.getPastPresentationTimingGOOGLE',
 -- 'Vulkan.Extensions.VK_INTEL_performance_query.getPerformanceParameterINTEL',
 -- 'Vulkan.Extensions.VK_KHR_pipeline_binary.getPipelineBinaryDataKHR',
@@ -464,29 +519,37 @@
 -- 'Vulkan.Extensions.VK_KHR_pipeline_binary.getPipelineKeyKHR',
 -- 'Vulkan.Extensions.VK_EXT_pipeline_properties.getPipelinePropertiesEXT',
 -- 'Vulkan.Core13.Promoted_From_VK_EXT_private_data.getPrivateData',
--- 'Vulkan.Extensions.VK_EXT_private_data.getPrivateDataEXT',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_private_data.getPrivateData',
 -- 'Vulkan.Core10.Query.getQueryPoolResults',
 -- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.getRayTracingCaptureReplayShaderGroupHandlesKHR',
 -- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.getRayTracingShaderGroupHandlesKHR',
--- 'Vulkan.Extensions.VK_NV_ray_tracing.getRayTracingShaderGroupHandlesNV',
+-- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.getRayTracingShaderGroupHandlesKHR',
 -- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.getRayTracingShaderGroupStackSizeKHR',
 -- 'Vulkan.Extensions.VK_GOOGLE_display_timing.getRefreshCycleDurationGOOGLE',
 -- 'Vulkan.Core10.Pass.getRenderAreaGranularity',
--- 'Vulkan.Extensions.VK_KHR_maintenance5.getRenderingAreaGranularityKHR',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.getRenderingAreaGranularity',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.getRenderingAreaGranularity',
 -- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.getSamplerOpaqueCaptureDescriptorDataEXT',
 -- 'Vulkan.Extensions.VK_QNX_external_memory_screen_buffer.getScreenBufferPropertiesQNX',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.getSemaphoreCounterValue',
--- 'Vulkan.Extensions.VK_KHR_timeline_semaphore.getSemaphoreCounterValueKHR',
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.getSemaphoreCounterValue',
 -- 'Vulkan.Extensions.VK_KHR_external_semaphore_fd.getSemaphoreFdKHR',
 -- 'Vulkan.Extensions.VK_KHR_external_semaphore_win32.getSemaphoreWin32HandleKHR',
 -- 'Vulkan.Extensions.VK_FUCHSIA_external_semaphore.getSemaphoreZirconHandleFUCHSIA',
 -- 'Vulkan.Extensions.VK_EXT_shader_object.getShaderBinaryDataEXT',
 -- 'Vulkan.Extensions.VK_AMD_shader_info.getShaderInfoAMD',
+-- 'Vulkan.Extensions.VK_ARM_shader_instrumentation.getShaderInstrumentationValuesARM',
 -- 'Vulkan.Extensions.VK_EXT_shader_module_identifier.getShaderModuleCreateInfoIdentifierEXT',
 -- 'Vulkan.Extensions.VK_EXT_shader_module_identifier.getShaderModuleIdentifierEXT',
 -- 'Vulkan.Extensions.VK_EXT_display_control.getSwapchainCounterEXT',
 -- 'Vulkan.Extensions.VK_KHR_swapchain.getSwapchainImagesKHR',
 -- 'Vulkan.Extensions.VK_KHR_shared_presentable_image.getSwapchainStatusKHR',
+-- 'Vulkan.Extensions.VK_EXT_present_timing.getSwapchainTimeDomainPropertiesEXT',
+-- 'Vulkan.Extensions.VK_EXT_present_timing.getSwapchainTimingPropertiesEXT',
+-- 'Vulkan.Extensions.VK_ARM_tensors.getTensorMemoryRequirementsARM',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_heap.getTensorOpaqueCaptureDataARM',
+-- 'Vulkan.Extensions.VK_ARM_tensors.getTensorOpaqueCaptureDescriptorDataARM',
+-- 'Vulkan.Extensions.VK_ARM_tensors.getTensorViewOpaqueCaptureDescriptorDataARM',
 -- 'Vulkan.Extensions.VK_EXT_validation_cache.getValidationCacheDataEXT',
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkGetVideoSessionMemoryRequirementsKHR vkGetVideoSessionMemoryRequirementsKHR>,
 -- 'Vulkan.Extensions.VK_KHR_external_fence_fd.importFenceFdKHR',
@@ -498,53 +561,65 @@
 -- 'Vulkan.Core10.Memory.invalidateMappedMemoryRanges',
 -- 'Vulkan.Extensions.VK_NV_low_latency2.latencySleepNV',
 -- 'Vulkan.Core10.Memory.mapMemory',
--- 'Vulkan.Extensions.VK_KHR_map_memory2.mapMemory2KHR',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_map_memory2.mapMemory2',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_map_memory2.mapMemory2',
 -- 'Vulkan.Core10.PipelineCache.mergePipelineCaches',
 -- 'Vulkan.Extensions.VK_EXT_validation_cache.mergeValidationCachesEXT',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_heap.registerCustomBorderColorEXT',
 -- 'Vulkan.Extensions.VK_EXT_display_control.registerDeviceEventEXT',
 -- 'Vulkan.Extensions.VK_EXT_display_control.registerDisplayEventEXT',
 -- 'Vulkan.Extensions.VK_KHR_pipeline_binary.releaseCapturedPipelineDataKHR',
 -- 'Vulkan.Extensions.VK_EXT_full_screen_exclusive.releaseFullScreenExclusiveModeEXT',
 -- 'Vulkan.Extensions.VK_INTEL_performance_query.releasePerformanceConfigurationINTEL',
 -- 'Vulkan.Extensions.VK_KHR_performance_query.releaseProfilingLockKHR',
--- 'Vulkan.Extensions.VK_EXT_swapchain_maintenance1.releaseSwapchainImagesEXT',
+-- 'Vulkan.Extensions.VK_KHR_swapchain_maintenance1.releaseSwapchainImagesKHR',
+-- 'Vulkan.Extensions.VK_KHR_swapchain_maintenance1.releaseSwapchainImagesKHR',
 -- 'Vulkan.Core10.CommandPool.resetCommandPool',
 -- 'Vulkan.Core10.DescriptorSet.resetDescriptorPool',
 -- 'Vulkan.Core10.Event.resetEvent', 'Vulkan.Core10.Fence.resetFences',
+-- 'Vulkan.Extensions.VK_AMD_gpa_interface.resetGpaSessionAMD',
 -- 'Vulkan.Core12.Promoted_From_VK_EXT_host_query_reset.resetQueryPool',
--- 'Vulkan.Extensions.VK_EXT_host_query_reset.resetQueryPoolEXT',
+-- 'Vulkan.Core12.Promoted_From_VK_EXT_host_query_reset.resetQueryPool',
 -- 'Vulkan.Extensions.VK_FUCHSIA_buffer_collection.setBufferCollectionBufferConstraintsFUCHSIA',
 -- 'Vulkan.Extensions.VK_FUCHSIA_buffer_collection.setBufferCollectionImageConstraintsFUCHSIA',
 -- 'Vulkan.Extensions.VK_EXT_debug_utils.setDebugUtilsObjectNameEXT',
 -- 'Vulkan.Extensions.VK_EXT_debug_utils.setDebugUtilsObjectTagEXT',
 -- 'Vulkan.Extensions.VK_EXT_pageable_device_local_memory.setDeviceMemoryPriorityEXT',
 -- 'Vulkan.Core10.Event.setEvent',
+-- 'Vulkan.Extensions.VK_AMD_gpa_interface.setGpaDeviceClockModeAMD',
 -- 'Vulkan.Extensions.VK_EXT_hdr_metadata.setHdrMetadataEXT',
 -- 'Vulkan.Extensions.VK_NV_low_latency2.setLatencyMarkerNV',
 -- 'Vulkan.Extensions.VK_NV_low_latency2.setLatencySleepModeNV',
 -- '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.Core13.Promoted_From_VK_EXT_private_data.setPrivateData',
+-- 'Vulkan.Extensions.VK_EXT_present_timing.setSwapchainPresentTimingQueueSizeEXT',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.signalSemaphore',
--- 'Vulkan.Extensions.VK_KHR_timeline_semaphore.signalSemaphoreKHR',
--- 'Vulkan.Extensions.VK_EXT_host_image_copy.transitionImageLayoutEXT',
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.signalSemaphore',
+-- 'Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy.transitionImageLayout',
+-- 'Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy.transitionImageLayout',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_maintenance1.trimCommandPool',
--- 'Vulkan.Extensions.VK_KHR_maintenance1.trimCommandPoolKHR',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_maintenance1.trimCommandPool',
 -- 'Vulkan.Extensions.VK_INTEL_performance_query.uninitializePerformanceApiINTEL',
 -- 'Vulkan.Core10.Memory.unmapMemory',
--- 'Vulkan.Extensions.VK_KHR_map_memory2.unmapMemory2KHR',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_map_memory2.unmapMemory2',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_map_memory2.unmapMemory2',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_heap.unregisterCustomBorderColorEXT',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template.updateDescriptorSetWithTemplate',
--- 'Vulkan.Extensions.VK_KHR_descriptor_update_template.updateDescriptorSetWithTemplateKHR',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template.updateDescriptorSetWithTemplate',
 -- 'Vulkan.Core10.DescriptorSet.updateDescriptorSets',
 -- 'Vulkan.Extensions.VK_EXT_device_generated_commands.updateIndirectExecutionSetPipelineEXT',
 -- 'Vulkan.Extensions.VK_EXT_device_generated_commands.updateIndirectExecutionSetShaderEXT',
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkUpdateVideoSessionParametersKHR vkUpdateVideoSessionParametersKHR>,
 -- 'Vulkan.Core10.Fence.waitForFences',
+-- 'Vulkan.Extensions.VK_KHR_present_wait2.waitForPresent2KHR',
 -- 'Vulkan.Extensions.VK_KHR_present_wait.waitForPresentKHR',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.waitSemaphores',
--- 'Vulkan.Extensions.VK_KHR_timeline_semaphore.waitSemaphoresKHR',
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.waitSemaphores',
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.writeAccelerationStructuresPropertiesKHR',
--- 'Vulkan.Extensions.VK_EXT_opacity_micromap.writeMicromapsPropertiesEXT'
+-- 'Vulkan.Extensions.VK_EXT_opacity_micromap.writeMicromapsPropertiesEXT',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_heap.writeResourceDescriptorsEXT',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_heap.writeSamplerDescriptorsEXT'
 data Device = Device
   { deviceHandle :: Ptr Device_T
   , deviceCmds :: DeviceCmds
@@ -567,6 +642,7 @@
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_DEFINE_HANDLE VK_DEFINE_HANDLE>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
 -- 'Vulkan.Extensions.VK_EXT_metal_objects.ExportMetalCommandQueueInfoEXT',
+-- 'Vulkan.Extensions.VK_NV_external_compute_queue.ExternalComputeQueueCreateInfoNV',
 -- 'Vulkan.Core10.Queue.getDeviceQueue',
 -- 'Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory.getDeviceQueue2',
 -- 'Vulkan.Extensions.VK_NV_device_diagnostic_checkpoints.getQueueCheckpointData2NV',
@@ -577,10 +653,11 @@
 -- 'Vulkan.Extensions.VK_EXT_debug_utils.queueInsertDebugUtilsLabelEXT',
 -- 'Vulkan.Extensions.VK_NV_low_latency2.queueNotifyOutOfBandNV',
 -- 'Vulkan.Extensions.VK_KHR_swapchain.queuePresentKHR',
+-- 'Vulkan.Extensions.VK_QCOM_queue_perf_hint.queueSetPerfHintQCOM',
 -- '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.Core13.Promoted_From_VK_KHR_synchronization2.queueSubmit2',
 -- 'Vulkan.Core10.Queue.queueWaitIdle'
 data Queue = Queue
   { queueHandle :: Ptr Queue_T
@@ -607,95 +684,133 @@
 -- 'Vulkan.Core10.Queue.SubmitInfo',
 -- 'Vulkan.Core10.CommandBuffer.allocateCommandBuffers',
 -- 'Vulkan.Core10.CommandBuffer.beginCommandBuffer',
+-- 'Vulkan.Extensions.VK_KHR_device_address_commands.cmdBeginConditionalRendering2EXT',
 -- 'Vulkan.Extensions.VK_EXT_conditional_rendering.cmdBeginConditionalRenderingEXT',
+-- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT',
 -- 'Vulkan.Extensions.VK_EXT_debug_utils.cmdBeginDebugUtilsLabelEXT',
+-- 'Vulkan.Extensions.VK_AMD_gpa_interface.cmdBeginGpaSampleAMD',
+-- 'Vulkan.Extensions.VK_AMD_gpa_interface.cmdBeginGpaSessionAMD',
+-- 'Vulkan.Extensions.VK_QCOM_tile_shading.cmdBeginPerTileExecutionQCOM',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdBeginQuery',
 -- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdBeginQueryIndexedEXT',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdBeginRenderPass',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.cmdBeginRenderPass2',
--- 'Vulkan.Extensions.VK_KHR_create_renderpass2.cmdBeginRenderPass2KHR',
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.cmdBeginRenderPass2',
 -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
--- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+-- 'Vulkan.Extensions.VK_ARM_shader_instrumentation.cmdBeginShaderInstrumentationARM',
+-- 'Vulkan.Extensions.VK_KHR_device_address_commands.cmdBeginTransformFeedback2EXT',
 -- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdBeginTransformFeedbackEXT',
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR vkCmdBeginVideoCodingKHR>,
 -- 'Vulkan.Extensions.VK_KHR_maintenance6.cmdBindDescriptorBufferEmbeddedSamplers2EXT',
 -- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdBindDescriptorBufferEmbeddedSamplersEXT',
 -- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdBindDescriptorBuffersEXT',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets',
--- 'Vulkan.Extensions.VK_KHR_maintenance6.cmdBindDescriptorSets2KHR',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance6.cmdBindDescriptorSets2',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance6.cmdBindDescriptorSets2',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdBindIndexBuffer',
--- 'Vulkan.Extensions.VK_KHR_maintenance5.cmdBindIndexBuffer2KHR',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.cmdBindIndexBuffer2',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.cmdBindIndexBuffer2',
+-- 'Vulkan.Extensions.VK_KHR_device_address_commands.cmdBindIndexBuffer3KHR',
 -- 'Vulkan.Extensions.VK_HUAWEI_invocation_mask.cmdBindInvocationMaskHUAWEI',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdBindPipeline',
 -- 'Vulkan.Extensions.VK_NV_device_generated_commands.cmdBindPipelineShaderGroupNV',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_heap.cmdBindResourceHeapEXT',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_heap.cmdBindSamplerHeapEXT',
 -- 'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT',
 -- 'Vulkan.Extensions.VK_NV_shading_rate_image.cmdBindShadingRateImageNV',
+-- 'Vulkan.Extensions.VK_QCOM_tile_memory_heap.cmdBindTileMemoryQCOM',
+-- 'Vulkan.Extensions.VK_KHR_device_address_commands.cmdBindTransformFeedbackBuffers2EXT',
 -- '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.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2',
+-- 'Vulkan.Extensions.VK_KHR_device_address_commands.cmdBindVertexBuffers3KHR',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdBlitImage',
 -- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.cmdBlitImage2',
--- 'Vulkan.Extensions.VK_KHR_copy_commands2.cmdBlitImage2KHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.cmdBlitImage2',
 -- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdBuildAccelerationStructureNV',
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.cmdBuildAccelerationStructuresIndirectKHR',
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.cmdBuildAccelerationStructuresKHR',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBuildClusterAccelerationStructureIndirectNV vkCmdBuildClusterAccelerationStructureIndirectNV>,
 -- 'Vulkan.Extensions.VK_EXT_opacity_micromap.cmdBuildMicromapsEXT',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBuildPartitionedAccelerationStructuresNV vkCmdBuildPartitionedAccelerationStructuresNV>,
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdClearAttachments',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdClearColorImage',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdClearDepthStencilImage',
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdControlVideoCodingKHR vkCmdControlVideoCodingKHR>,
+-- 'Vulkan.Extensions.VK_NV_cooperative_vector.cmdConvertCooperativeVectorMatrixNV',
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.cmdCopyAccelerationStructureKHR',
 -- '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.Core13.Promoted_From_VK_KHR_copy_commands2.cmdCopyBuffer2',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdCopyBufferToImage',
 -- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.cmdCopyBufferToImage2',
--- 'Vulkan.Extensions.VK_KHR_copy_commands2.cmdCopyBufferToImage2KHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.cmdCopyBufferToImage2',
+-- 'Vulkan.Extensions.VK_AMD_gpa_interface.cmdCopyGpaSessionResultsAMD',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdCopyImage',
 -- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.cmdCopyImage2',
--- 'Vulkan.Extensions.VK_KHR_copy_commands2.cmdCopyImage2KHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.cmdCopyImage2',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdCopyImageToBuffer',
 -- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.cmdCopyImageToBuffer2',
--- 'Vulkan.Extensions.VK_KHR_copy_commands2.cmdCopyImageToBuffer2KHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.cmdCopyImageToBuffer2',
+-- 'Vulkan.Extensions.VK_KHR_device_address_commands.cmdCopyImageToMemoryKHR',
+-- 'Vulkan.Extensions.VK_KHR_copy_memory_indirect.cmdCopyMemoryIndirectKHR',
 -- 'Vulkan.Extensions.VK_NV_copy_memory_indirect.cmdCopyMemoryIndirectNV',
+-- 'Vulkan.Extensions.VK_KHR_device_address_commands.cmdCopyMemoryKHR',
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.cmdCopyMemoryToAccelerationStructureKHR',
+-- 'Vulkan.Extensions.VK_KHR_copy_memory_indirect.cmdCopyMemoryToImageIndirectKHR',
 -- 'Vulkan.Extensions.VK_NV_copy_memory_indirect.cmdCopyMemoryToImageIndirectNV',
+-- 'Vulkan.Extensions.VK_KHR_device_address_commands.cmdCopyMemoryToImageKHR',
 -- 'Vulkan.Extensions.VK_EXT_opacity_micromap.cmdCopyMemoryToMicromapEXT',
 -- 'Vulkan.Extensions.VK_EXT_opacity_micromap.cmdCopyMicromapEXT',
 -- 'Vulkan.Extensions.VK_EXT_opacity_micromap.cmdCopyMicromapToMemoryEXT',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdCopyQueryPoolResults',
+-- 'Vulkan.Extensions.VK_KHR_device_address_commands.cmdCopyQueryPoolResultsToMemoryKHR',
+-- 'Vulkan.Extensions.VK_ARM_tensors.cmdCopyTensorARM',
 -- 'Vulkan.Extensions.VK_NVX_binary_import.cmdCuLaunchKernelNVX',
 -- 'Vulkan.Extensions.VK_NV_cuda_kernel_launch.cmdCudaLaunchKernelNV',
 -- 'Vulkan.Extensions.VK_EXT_debug_marker.cmdDebugMarkerBeginEXT',
 -- 'Vulkan.Extensions.VK_EXT_debug_marker.cmdDebugMarkerEndEXT',
 -- 'Vulkan.Extensions.VK_EXT_debug_marker.cmdDebugMarkerInsertEXT',
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdDecodeVideoKHR vkCmdDecodeVideoKHR>,
+-- 'Vulkan.Extensions.VK_EXT_memory_decompression.cmdDecompressMemoryEXT',
+-- 'Vulkan.Extensions.VK_EXT_memory_decompression.cmdDecompressMemoryIndirectCountEXT',
 -- 'Vulkan.Extensions.VK_NV_memory_decompression.cmdDecompressMemoryIndirectCountNV',
 -- 'Vulkan.Extensions.VK_NV_memory_decompression.cmdDecompressMemoryNV',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdDispatch',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group.cmdDispatchBase',
--- 'Vulkan.Extensions.VK_KHR_device_group.cmdDispatchBaseKHR',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group.cmdDispatchBase',
+-- 'Vulkan.Extensions.VK_ARM_data_graph.cmdDispatchDataGraphARM',
 -- 'Vulkan.Extensions.VK_AMDX_shader_enqueue.cmdDispatchGraphAMDX',
 -- 'Vulkan.Extensions.VK_AMDX_shader_enqueue.cmdDispatchGraphIndirectAMDX',
 -- 'Vulkan.Extensions.VK_AMDX_shader_enqueue.cmdDispatchGraphIndirectCountAMDX',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdDispatchIndirect',
+-- 'Vulkan.Extensions.VK_KHR_device_address_commands.cmdDispatchIndirect2KHR',
+-- 'Vulkan.Extensions.VK_QCOM_tile_shading.cmdDispatchTileQCOM',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdDraw',
 -- 'Vulkan.Extensions.VK_HUAWEI_cluster_culling_shader.cmdDrawClusterHUAWEI',
 -- 'Vulkan.Extensions.VK_HUAWEI_cluster_culling_shader.cmdDrawClusterIndirectHUAWEI',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdDrawIndexed',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdDrawIndexedIndirect',
+-- 'Vulkan.Extensions.VK_KHR_device_address_commands.cmdDrawIndexedIndirect2KHR',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_draw_indirect_count.cmdDrawIndexedIndirectCount',
--- 'Vulkan.Extensions.VK_AMD_draw_indirect_count.cmdDrawIndexedIndirectCountAMD',
--- 'Vulkan.Extensions.VK_KHR_draw_indirect_count.cmdDrawIndexedIndirectCountKHR',
+-- 'Vulkan.Extensions.VK_KHR_device_address_commands.cmdDrawIndexedIndirectCount2KHR',
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_draw_indirect_count.cmdDrawIndexedIndirectCount',
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_draw_indirect_count.cmdDrawIndexedIndirectCount',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdDrawIndirect',
+-- 'Vulkan.Extensions.VK_KHR_device_address_commands.cmdDrawIndirect2KHR',
+-- 'Vulkan.Extensions.VK_KHR_device_address_commands.cmdDrawIndirectByteCount2EXT',
 -- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdDrawIndirectByteCountEXT',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_draw_indirect_count.cmdDrawIndirectCount',
--- 'Vulkan.Extensions.VK_AMD_draw_indirect_count.cmdDrawIndirectCountAMD',
--- 'Vulkan.Extensions.VK_KHR_draw_indirect_count.cmdDrawIndirectCountKHR',
+-- 'Vulkan.Extensions.VK_KHR_device_address_commands.cmdDrawIndirectCount2KHR',
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_draw_indirect_count.cmdDrawIndirectCount',
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_draw_indirect_count.cmdDrawIndirectCount',
 -- 'Vulkan.Extensions.VK_EXT_mesh_shader.cmdDrawMeshTasksEXT',
+-- 'Vulkan.Extensions.VK_KHR_device_address_commands.cmdDrawMeshTasksIndirect2EXT',
+-- 'Vulkan.Extensions.VK_KHR_device_address_commands.cmdDrawMeshTasksIndirectCount2EXT',
 -- 'Vulkan.Extensions.VK_EXT_mesh_shader.cmdDrawMeshTasksIndirectCountEXT',
 -- 'Vulkan.Extensions.VK_NV_mesh_shader.cmdDrawMeshTasksIndirectCountNV',
 -- 'Vulkan.Extensions.VK_EXT_mesh_shader.cmdDrawMeshTasksIndirectEXT',
@@ -706,43 +821,57 @@
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdEncodeVideoKHR vkCmdEncodeVideoKHR>,
 -- 'Vulkan.Extensions.VK_EXT_conditional_rendering.cmdEndConditionalRenderingEXT',
 -- 'Vulkan.Extensions.VK_EXT_debug_utils.cmdEndDebugUtilsLabelEXT',
+-- 'Vulkan.Extensions.VK_AMD_gpa_interface.cmdEndGpaSampleAMD',
+-- 'Vulkan.Extensions.VK_AMD_gpa_interface.cmdEndGpaSessionAMD',
+-- 'Vulkan.Extensions.VK_QCOM_tile_shading.cmdEndPerTileExecutionQCOM',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdEndQuery',
 -- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdEndQueryIndexedEXT',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdEndRenderPass',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.cmdEndRenderPass2',
--- 'Vulkan.Extensions.VK_KHR_create_renderpass2.cmdEndRenderPass2KHR',
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.cmdEndRenderPass2',
 -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdEndRendering',
--- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdEndRenderingKHR',
+-- 'Vulkan.Extensions.VK_KHR_maintenance10.cmdEndRendering2KHR',
+-- 'Vulkan.Extensions.VK_KHR_maintenance10.cmdEndRendering2KHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdEndRendering',
+-- 'Vulkan.Extensions.VK_ARM_shader_instrumentation.cmdEndShaderInstrumentationARM',
+-- 'Vulkan.Extensions.VK_KHR_device_address_commands.cmdEndTransformFeedback2EXT',
 -- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdEndTransformFeedbackEXT',
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdEndVideoCodingKHR vkCmdEndVideoCodingKHR>,
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdExecuteCommands',
 -- 'Vulkan.Extensions.VK_EXT_device_generated_commands.cmdExecuteGeneratedCommandsEXT',
 -- 'Vulkan.Extensions.VK_NV_device_generated_commands.cmdExecuteGeneratedCommandsNV',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdFillBuffer',
+-- 'Vulkan.Extensions.VK_KHR_device_address_commands.cmdFillMemoryKHR',
 -- 'Vulkan.Extensions.VK_AMDX_shader_enqueue.cmdInitializeGraphScratchMemoryAMDX',
 -- 'Vulkan.Extensions.VK_EXT_debug_utils.cmdInsertDebugUtilsLabelEXT',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdNextSubpass',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.cmdNextSubpass2',
--- 'Vulkan.Extensions.VK_KHR_create_renderpass2.cmdNextSubpass2KHR',
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.cmdNextSubpass2',
 -- 'Vulkan.Extensions.VK_NV_optical_flow.cmdOpticalFlowExecuteNV',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdPipelineBarrier',
 -- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.cmdPipelineBarrier2',
--- 'Vulkan.Extensions.VK_KHR_synchronization2.cmdPipelineBarrier2KHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.cmdPipelineBarrier2',
 -- 'Vulkan.Extensions.VK_EXT_device_generated_commands.cmdPreprocessGeneratedCommandsEXT',
 -- 'Vulkan.Extensions.VK_NV_device_generated_commands.cmdPreprocessGeneratedCommandsNV',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdPushConstants',
--- 'Vulkan.Extensions.VK_KHR_maintenance6.cmdPushConstants2KHR',
--- 'Vulkan.Extensions.VK_KHR_maintenance6.cmdPushDescriptorSet2KHR',
--- 'Vulkan.Extensions.VK_KHR_push_descriptor.cmdPushDescriptorSetKHR',
--- 'Vulkan.Extensions.VK_KHR_maintenance6.cmdPushDescriptorSetWithTemplate2KHR',
--- 'Vulkan.Extensions.VK_KHR_descriptor_update_template.cmdPushDescriptorSetWithTemplateKHR',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance6.cmdPushConstants2',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance6.cmdPushConstants2',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_heap.cmdPushDataEXT',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_push_descriptor.cmdPushDescriptorSet',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance6.cmdPushDescriptorSet2',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance6.cmdPushDescriptorSet2',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_push_descriptor.cmdPushDescriptorSet',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_push_descriptor.cmdPushDescriptorSetWithTemplate',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance6.cmdPushDescriptorSetWithTemplate2',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance6.cmdPushDescriptorSetWithTemplate2',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_push_descriptor.cmdPushDescriptorSetWithTemplate',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdResetEvent',
 -- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.cmdResetEvent2',
--- 'Vulkan.Extensions.VK_KHR_synchronization2.cmdResetEvent2KHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.cmdResetEvent2',
 -- '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.Core13.Promoted_From_VK_KHR_copy_commands2.cmdResolveImage2',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToOneEnableEXT',
 -- 'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT',
@@ -754,6 +883,7 @@
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT',
 -- 'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT',
+-- 'Vulkan.Extensions.VK_NV_compute_occupancy_priority.cmdSetComputeOccupancyPriorityNV',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetConservativeRasterizationModeEXT',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationModeNV',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV',
@@ -762,45 +892,47 @@
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV',
 -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetCullMode',
--- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetCullModeEXT',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetCullMode',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBias',
 -- 'Vulkan.Extensions.VK_EXT_depth_bias_control.cmdSetDepthBias2EXT',
 -- '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_state2.cmdSetDepthBiasEnable',
 -- '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.cmdSetDepthBoundsTestEnable',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClampEnableEXT',
 -- 'Vulkan.Extensions.VK_EXT_depth_clamp_control.cmdSetDepthClampRangeEXT',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipEnableEXT',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipNegativeOneToOneEXT',
 -- '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.cmdSetDepthCompareOp',
 -- '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.cmdSetDepthTestEnable',
 -- '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_state.cmdSetDepthWriteEnable',
 -- 'Vulkan.Extensions.VK_KHR_maintenance6.cmdSetDescriptorBufferOffsets2EXT',
 -- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group.cmdSetDeviceMask',
--- 'Vulkan.Extensions.VK_KHR_device_group.cmdSetDeviceMaskKHR',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group.cmdSetDeviceMask',
 -- 'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT',
 -- 'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEnableEXT',
 -- 'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleModeEXT',
+-- 'Vulkan.Extensions.VK_ARM_scheduling_controls.cmdSetDispatchParametersARM',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdSetEvent',
 -- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.cmdSetEvent2',
--- 'Vulkan.Extensions.VK_KHR_synchronization2.cmdSetEvent2KHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.cmdSetEvent2',
 -- 'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorEnableNV',
 -- 'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorNV',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetExtraPrimitiveOverestimationSizeEXT',
 -- '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.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetFrontFace',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT',
--- 'Vulkan.Extensions.VK_EXT_line_rasterization.cmdSetLineStippleEXT',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_line_rasterization.cmdSetLineStipple',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_line_rasterization.cmdSetLineStipple',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT',
--- 'Vulkan.Extensions.VK_KHR_line_rasterization.cmdSetLineStippleKHR',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_line_rasterization.cmdSetLineStipple',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetLogicOpEXT',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLogicOpEnableEXT',
@@ -810,31 +942,34 @@
 -- 'Vulkan.Extensions.VK_INTEL_performance_query.cmdSetPerformanceStreamMarkerINTEL',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT',
 -- '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.cmdSetPrimitiveRestartEnable',
+-- 'Vulkan.Extensions.VK_EXT_primitive_restart_index.cmdSetPrimitiveRestartIndexEXT',
 -- '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_state.cmdSetPrimitiveTopology',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetProvokingVertexModeEXT',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationStreamEXT',
 -- '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_state2.cmdSetRasterizerDiscardEnable',
 -- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.cmdSetRayTracingPipelineStackSizeKHR',
--- 'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.cmdSetRenderingAttachmentLocationsKHR',
--- 'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.cmdSetRenderingInputAttachmentIndicesKHR',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.cmdSetRenderingAttachmentLocations',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.cmdSetRenderingAttachmentLocations',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.cmdSetRenderingInputAttachmentIndices',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.cmdSetRenderingInputAttachmentIndices',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRepresentativeFragmentTestEnableNV',
 -- 'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdSetScissor',
 -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount',
--- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetShadingRateImageEnableNV',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilCompareMask',
 -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilOp',
--- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetStencilOpEXT',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilOp',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilReference',
 -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilTestEnable',
--- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetStencilTestEnableEXT',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilTestEnable',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilWriteMask',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetTessellationDomainOriginEXT',
 -- 'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.cmdSetVertexInputEXT',
@@ -844,25 +979,27 @@
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportWScalingEnableNV',
 -- '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.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount',
 -- 'Vulkan.Extensions.VK_HUAWEI_subpass_shading.cmdSubpassShadingHUAWEI',
 -- 'Vulkan.Extensions.VK_KHR_ray_tracing_maintenance1.cmdTraceRaysIndirect2KHR',
 -- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.cmdTraceRaysIndirectKHR',
 -- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.cmdTraceRaysKHR',
 -- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdTraceRaysNV',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdUpdateBuffer',
+-- 'Vulkan.Extensions.VK_KHR_device_address_commands.cmdUpdateMemoryKHR',
 -- 'Vulkan.Extensions.VK_NV_device_generated_commands_compute.cmdUpdatePipelineIndirectBufferNV',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdWaitEvents',
 -- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.cmdWaitEvents2',
--- 'Vulkan.Extensions.VK_KHR_synchronization2.cmdWaitEvents2KHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.cmdWaitEvents2',
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.cmdWriteAccelerationStructuresPropertiesKHR',
 -- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdWriteAccelerationStructuresPropertiesNV',
 -- 'Vulkan.Extensions.VK_AMD_buffer_marker.cmdWriteBufferMarker2AMD',
 -- 'Vulkan.Extensions.VK_AMD_buffer_marker.cmdWriteBufferMarkerAMD',
+-- 'Vulkan.Extensions.VK_KHR_device_address_commands.cmdWriteMarkerToMemoryAMD',
 -- 'Vulkan.Extensions.VK_EXT_opacity_micromap.cmdWriteMicromapsPropertiesEXT',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdWriteTimestamp',
 -- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.cmdWriteTimestamp2',
--- 'Vulkan.Extensions.VK_KHR_synchronization2.cmdWriteTimestamp2KHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.cmdWriteTimestamp2',
 -- 'Vulkan.Core10.CommandBuffer.endCommandBuffer',
 -- 'Vulkan.Core10.CommandBuffer.freeCommandBuffers',
 -- 'Vulkan.Core10.CommandBuffer.resetCommandBuffer'
@@ -887,20 +1024,25 @@
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
 -- 'Vulkan.Extensions.VK_NV_ray_tracing.BindAccelerationStructureMemoryInfoNV',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindBufferMemoryInfo',
+-- 'Vulkan.Extensions.VK_ARM_data_graph.BindDataGraphPipelineSessionMemoryInfoARM',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindImageMemoryInfo',
+-- 'Vulkan.Extensions.VK_ARM_tensors.BindTensorMemoryInfoARM',
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkBindVideoSessionMemoryInfoKHR VkBindVideoSessionMemoryInfoKHR>,
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.DeviceMemoryOpaqueCaptureAddressInfo',
 -- 'Vulkan.Extensions.VK_EXT_metal_objects.ExportMetalBufferInfoEXT',
 -- 'Vulkan.Core10.Memory.MappedMemoryRange',
 -- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.MemoryGetAndroidHardwareBufferInfoANDROID',
 -- 'Vulkan.Extensions.VK_KHR_external_memory_fd.MemoryGetFdInfoKHR',
+-- 'Vulkan.Extensions.VK_EXT_external_memory_metal.MemoryGetMetalHandleInfoEXT',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkMemoryGetNativeBufferInfoOHOS VkMemoryGetNativeBufferInfoOHOS>,
 -- 'Vulkan.Extensions.VK_NV_external_memory_rdma.MemoryGetRemoteAddressInfoNV',
 -- 'Vulkan.Extensions.VK_KHR_external_memory_win32.MemoryGetWin32HandleInfoKHR',
 -- 'Vulkan.Extensions.VK_FUCHSIA_external_memory.MemoryGetZirconHandleInfoFUCHSIA',
--- 'Vulkan.Extensions.VK_KHR_map_memory2.MemoryMapInfoKHR',
--- 'Vulkan.Extensions.VK_KHR_map_memory2.MemoryUnmapInfoKHR',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_map_memory2.MemoryMapInfo',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_map_memory2.MemoryUnmapInfo',
 -- 'Vulkan.Core10.SparseResourceMemoryManagement.SparseImageMemoryBind',
 -- 'Vulkan.Core10.SparseResourceMemoryManagement.SparseMemoryBind',
+-- 'Vulkan.Extensions.VK_QCOM_tile_memory_heap.TileMemoryBindInfoQCOM',
 -- 'Vulkan.Extensions.VK_KHR_win32_keyed_mutex.Win32KeyedMutexAcquireReleaseInfoKHR',
 -- 'Vulkan.Extensions.VK_NV_win32_keyed_mutex.Win32KeyedMutexAcquireReleaseInfoNV',
 -- 'Vulkan.Core10.Memory.allocateMemory',
@@ -933,7 +1075,7 @@
 -- 'Vulkan.Core10.CommandBuffer.freeCommandBuffers',
 -- 'Vulkan.Core10.CommandPool.resetCommandPool',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_maintenance1.trimCommandPool',
--- 'Vulkan.Extensions.VK_KHR_maintenance1.trimCommandPoolKHR'
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_maintenance1.trimCommandPool'
 newtype CommandPool = CommandPool Word64
   deriving newtype (Eq, Ord, Storable, Zero)
   deriving anyclass (IsHandle)
@@ -953,7 +1095,7 @@
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindBufferMemoryInfo',
 -- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.BufferCaptureDescriptorDataInfoEXT',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.BufferDeviceAddressInfo',
--- 'Vulkan.Core10.OtherTypes.BufferMemoryBarrier',
+-- 'Vulkan.Core10.CommandBufferBuilding.BufferMemoryBarrier',
 -- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.BufferMemoryBarrier2',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.BufferMemoryRequirementsInfo2',
 -- 'Vulkan.Core10.BufferView.BufferViewCreateInfo',
@@ -977,11 +1119,12 @@
 -- 'Vulkan.Core10.MemoryManagement.bindBufferMemory',
 -- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdBeginTransformFeedbackEXT',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdBindIndexBuffer',
--- 'Vulkan.Extensions.VK_KHR_maintenance5.cmdBindIndexBuffer2KHR',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.cmdBindIndexBuffer2',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.cmdBindIndexBuffer2',
 -- '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.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2',
 -- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdBuildAccelerationStructureNV',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdCopyBuffer',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdCopyBufferToImage',
@@ -991,13 +1134,13 @@
 -- 'Vulkan.Extensions.VK_HUAWEI_cluster_culling_shader.cmdDrawClusterIndirectHUAWEI',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdDrawIndexedIndirect',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_draw_indirect_count.cmdDrawIndexedIndirectCount',
--- 'Vulkan.Extensions.VK_AMD_draw_indirect_count.cmdDrawIndexedIndirectCountAMD',
--- 'Vulkan.Extensions.VK_KHR_draw_indirect_count.cmdDrawIndexedIndirectCountKHR',
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_draw_indirect_count.cmdDrawIndexedIndirectCount',
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_draw_indirect_count.cmdDrawIndexedIndirectCount',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdDrawIndirect',
 -- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdDrawIndirectByteCountEXT',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_draw_indirect_count.cmdDrawIndirectCount',
--- 'Vulkan.Extensions.VK_AMD_draw_indirect_count.cmdDrawIndirectCountAMD',
--- 'Vulkan.Extensions.VK_KHR_draw_indirect_count.cmdDrawIndirectCountKHR',
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_draw_indirect_count.cmdDrawIndirectCount',
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_draw_indirect_count.cmdDrawIndirectCount',
 -- 'Vulkan.Extensions.VK_EXT_mesh_shader.cmdDrawMeshTasksIndirectCountEXT',
 -- 'Vulkan.Extensions.VK_NV_mesh_shader.cmdDrawMeshTasksIndirectCountNV',
 -- 'Vulkan.Extensions.VK_EXT_mesh_shader.cmdDrawMeshTasksIndirectEXT',
@@ -1048,18 +1191,20 @@
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindImageMemoryInfo',
 -- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.BlitImageInfo2',
 -- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.CopyBufferToImageInfo2',
+-- 'Vulkan.Extensions.VK_KHR_device_address_commands.CopyDeviceMemoryImageInfoKHR',
 -- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.CopyImageInfo2',
 -- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.CopyImageToBufferInfo2',
--- 'Vulkan.Extensions.VK_EXT_host_image_copy.CopyImageToImageInfoEXT',
--- 'Vulkan.Extensions.VK_EXT_host_image_copy.CopyImageToMemoryInfoEXT',
--- 'Vulkan.Extensions.VK_EXT_host_image_copy.CopyMemoryToImageInfoEXT',
+-- 'Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy.CopyImageToImageInfo',
+-- 'Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy.CopyImageToMemoryInfo',
+-- 'Vulkan.Extensions.VK_KHR_copy_memory_indirect.CopyMemoryToImageIndirectInfoKHR',
+-- 'Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy.CopyMemoryToImageInfo',
 -- 'Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationMemoryAllocateInfoNV',
 -- 'Vulkan.Extensions.VK_EXT_metal_objects.ExportMetalIOSurfaceInfoEXT',
 -- 'Vulkan.Extensions.VK_EXT_metal_objects.ExportMetalTextureInfoEXT',
 -- 'Vulkan.Extensions.VK_EXT_frame_boundary.FrameBoundaryEXT',
--- 'Vulkan.Extensions.VK_EXT_host_image_copy.HostImageLayoutTransitionInfoEXT',
+-- 'Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy.HostImageLayoutTransitionInfo',
 -- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.ImageCaptureDescriptorDataInfoEXT',
--- 'Vulkan.Core10.OtherTypes.ImageMemoryBarrier',
+-- 'Vulkan.Core10.CommandBufferBuilding.ImageMemoryBarrier',
 -- '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',
@@ -1080,10 +1225,12 @@
 -- 'Vulkan.Core10.Image.createImage', 'Vulkan.Core10.Image.destroyImage',
 -- 'Vulkan.Extensions.VK_EXT_image_drm_format_modifier.getImageDrmFormatModifierPropertiesEXT',
 -- 'Vulkan.Core10.MemoryManagement.getImageMemoryRequirements',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_heap.getImageOpaqueCaptureDataEXT',
 -- 'Vulkan.Core10.SparseResourceMemoryManagement.getImageSparseMemoryRequirements',
 -- 'Vulkan.Core10.Image.getImageSubresourceLayout',
--- 'Vulkan.Extensions.VK_EXT_host_image_copy.getImageSubresourceLayout2EXT',
--- 'Vulkan.Extensions.VK_KHR_maintenance5.getImageSubresourceLayout2KHR',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.getImageSubresourceLayout2',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.getImageSubresourceLayout2',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.getImageSubresourceLayout2',
 -- 'Vulkan.Extensions.VK_KHR_swapchain.getSwapchainImagesKHR'
 newtype Image = Image Word64
   deriving newtype (Eq, Ord, Storable, Zero)
@@ -1132,7 +1279,8 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_DEFINE_NON_DISPATCHABLE_HANDLE VK_DEFINE_NON_DISPATCHABLE_HANDLE>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
--- 'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo',
+-- 'Vulkan.Extensions.VK_ARM_data_graph.DataGraphPipelineShaderModuleCreateInfoARM',
+-- 'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo',
 -- 'Vulkan.Core10.Shader.createShaderModule',
 -- 'Vulkan.Core10.Shader.destroyShaderModule',
 -- 'Vulkan.Extensions.VK_EXT_shader_module_identifier.getShaderModuleIdentifierEXT'
@@ -1151,12 +1299,14 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_DEFINE_NON_DISPATCHABLE_HANDLE VK_DEFINE_NON_DISPATCHABLE_HANDLE>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
--- 'Vulkan.Core10.Pipeline.ComputePipelineCreateInfo',
+-- 'Vulkan.Core10.ComputePipeline.ComputePipelineCreateInfo',
+-- 'Vulkan.Extensions.VK_ARM_data_graph.DataGraphPipelineInfoARM',
+-- 'Vulkan.Extensions.VK_ARM_data_graph.DataGraphPipelineSessionCreateInfoARM',
 -- 'Vulkan.Extensions.VK_AMDX_shader_enqueue.ExecutionGraphPipelineCreateInfoAMDX',
 -- 'Vulkan.Extensions.VK_NV_device_generated_commands.GeneratedCommandsInfoNV',
 -- 'Vulkan.Extensions.VK_NV_device_generated_commands.GeneratedCommandsMemoryRequirementsInfoNV',
 -- 'Vulkan.Extensions.VK_EXT_device_generated_commands.GeneratedCommandsPipelineInfoEXT',
--- 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo',
+-- 'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo',
 -- 'Vulkan.Extensions.VK_NV_device_generated_commands.GraphicsPipelineShaderGroupsCreateInfoNV',
 -- 'Vulkan.Extensions.VK_EXT_device_generated_commands.IndirectExecutionSetPipelineInfoEXT',
 -- 'Vulkan.Extensions.VK_KHR_pipeline_binary.PipelineBinaryCreateInfoKHR',
@@ -1173,17 +1323,18 @@
 -- 'Vulkan.Extensions.VK_AMDX_shader_enqueue.cmdInitializeGraphScratchMemoryAMDX',
 -- 'Vulkan.Extensions.VK_NV_device_generated_commands_compute.cmdUpdatePipelineIndirectBufferNV',
 -- 'Vulkan.Extensions.VK_NV_ray_tracing.compileDeferredNV',
--- 'Vulkan.Core10.Pipeline.createComputePipelines',
+-- 'Vulkan.Core10.ComputePipeline.createComputePipelines',
+-- 'Vulkan.Extensions.VK_ARM_data_graph.createDataGraphPipelinesARM',
 -- 'Vulkan.Extensions.VK_AMDX_shader_enqueue.createExecutionGraphPipelinesAMDX',
--- 'Vulkan.Core10.Pipeline.createGraphicsPipelines',
+-- 'Vulkan.Core10.GraphicsPipeline.createGraphicsPipelines',
 -- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.createRayTracingPipelinesKHR',
 -- 'Vulkan.Extensions.VK_NV_ray_tracing.createRayTracingPipelinesNV',
--- 'Vulkan.Core10.Pipeline.destroyPipeline',
+-- 'Vulkan.Core10.ComputePipeline.destroyPipeline',
 -- 'Vulkan.Extensions.VK_AMDX_shader_enqueue.getExecutionGraphPipelineNodeIndexAMDX',
 -- 'Vulkan.Extensions.VK_AMDX_shader_enqueue.getExecutionGraphPipelineScratchSizeAMDX',
 -- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.getRayTracingCaptureReplayShaderGroupHandlesKHR',
 -- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.getRayTracingShaderGroupHandlesKHR',
--- 'Vulkan.Extensions.VK_NV_ray_tracing.getRayTracingShaderGroupHandlesNV',
+-- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.getRayTracingShaderGroupHandlesKHR',
 -- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.getRayTracingShaderGroupStackSizeKHR',
 -- 'Vulkan.Extensions.VK_AMD_shader_info.getShaderInfoAMD'
 newtype Pipeline = Pipeline Word64
@@ -1202,24 +1353,27 @@
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_DEFINE_NON_DISPATCHABLE_HANDLE VK_DEFINE_NON_DISPATCHABLE_HANDLE>,
 -- <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_maintenance6.BindDescriptorBufferEmbeddedSamplersInfoEXT',
--- 'Vulkan.Extensions.VK_KHR_maintenance6.BindDescriptorSetsInfoKHR',
--- 'Vulkan.Core10.Pipeline.ComputePipelineCreateInfo',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance6.BindDescriptorSetsInfo',
+-- 'Vulkan.Core10.ComputePipeline.ComputePipelineCreateInfo',
+-- 'Vulkan.Extensions.VK_ARM_data_graph.DataGraphPipelineCreateInfoARM',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template.DescriptorUpdateTemplateCreateInfo',
 -- 'Vulkan.Extensions.VK_AMDX_shader_enqueue.ExecutionGraphPipelineCreateInfoAMDX',
--- 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo',
+-- 'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo',
 -- 'Vulkan.Extensions.VK_EXT_device_generated_commands.IndirectCommandsLayoutCreateInfoEXT',
 -- 'Vulkan.Extensions.VK_NV_device_generated_commands.IndirectCommandsLayoutTokenNV',
--- 'Vulkan.Extensions.VK_KHR_maintenance6.PushConstantsInfoKHR',
--- 'Vulkan.Extensions.VK_KHR_maintenance6.PushDescriptorSetInfoKHR',
--- 'Vulkan.Extensions.VK_KHR_maintenance6.PushDescriptorSetWithTemplateInfoKHR',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance6.PushConstantsInfo',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance6.PushDescriptorSetInfo',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance6.PushDescriptorSetWithTemplateInfo',
 -- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingPipelineCreateInfoKHR',
 -- 'Vulkan.Extensions.VK_NV_ray_tracing.RayTracingPipelineCreateInfoNV',
 -- 'Vulkan.Extensions.VK_KHR_maintenance6.SetDescriptorBufferOffsetsInfoEXT',
 -- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdBindDescriptorBufferEmbeddedSamplersEXT',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdPushConstants',
--- 'Vulkan.Extensions.VK_KHR_push_descriptor.cmdPushDescriptorSetKHR',
--- 'Vulkan.Extensions.VK_KHR_descriptor_update_template.cmdPushDescriptorSetWithTemplateKHR',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_push_descriptor.cmdPushDescriptorSet',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_push_descriptor.cmdPushDescriptorSet',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_push_descriptor.cmdPushDescriptorSetWithTemplate',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_push_descriptor.cmdPushDescriptorSetWithTemplate',
 -- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
 -- 'Vulkan.Core10.PipelineLayout.createPipelineLayout',
 -- 'Vulkan.Core10.PipelineLayout.destroyPipelineLayout'
@@ -1260,7 +1414,7 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_DEFINE_NON_DISPATCHABLE_HANDLE VK_DEFINE_NON_DISPATCHABLE_HANDLE>,
 -- <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_maintenance6.BindDescriptorSetsInfoKHR',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance6.BindDescriptorSetsInfo',
 -- 'Vulkan.Core10.DescriptorSet.CopyDescriptorSet',
 -- 'Vulkan.Core10.DescriptorSet.WriteDescriptorSet',
 -- 'Vulkan.Core10.DescriptorSet.allocateDescriptorSets',
@@ -1268,7 +1422,7 @@
 -- 'Vulkan.Core10.DescriptorSet.freeDescriptorSets',
 -- 'Vulkan.Extensions.VK_VALVE_descriptor_set_host_mapping.getDescriptorSetHostMappingVALVE',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template.updateDescriptorSetWithTemplate',
--- 'Vulkan.Extensions.VK_KHR_descriptor_update_template.updateDescriptorSetWithTemplateKHR'
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template.updateDescriptorSetWithTemplate'
 newtype DescriptorSet = DescriptorSet Word64
   deriving newtype (Eq, Ord, Storable, Zero)
   deriving anyclass (IsHandle)
@@ -1335,14 +1489,14 @@
 -- 'Vulkan.Extensions.VK_KHR_external_fence_win32.FenceGetWin32HandleInfoKHR',
 -- 'Vulkan.Extensions.VK_KHR_external_fence_fd.ImportFenceFdInfoKHR',
 -- 'Vulkan.Extensions.VK_KHR_external_fence_win32.ImportFenceWin32HandleInfoKHR',
--- 'Vulkan.Extensions.VK_EXT_swapchain_maintenance1.SwapchainPresentFenceInfoEXT',
+-- 'Vulkan.Extensions.VK_KHR_swapchain_maintenance1.SwapchainPresentFenceInfoKHR',
 -- 'Vulkan.Extensions.VK_KHR_swapchain.acquireNextImageKHR',
 -- 'Vulkan.Core10.Fence.createFence', 'Vulkan.Core10.Fence.destroyFence',
 -- '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.Core13.Promoted_From_VK_KHR_synchronization2.queueSubmit2',
 -- 'Vulkan.Extensions.VK_EXT_display_control.registerDeviceEventEXT',
 -- 'Vulkan.Extensions.VK_EXT_display_control.registerDisplayEventEXT',
 -- 'Vulkan.Core10.Fence.resetFences', 'Vulkan.Core10.Fence.waitForFences'
@@ -1380,7 +1534,7 @@
 -- 'Vulkan.Core10.QueueSemaphore.createSemaphore',
 -- 'Vulkan.Core10.QueueSemaphore.destroySemaphore',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.getSemaphoreCounterValue',
--- 'Vulkan.Extensions.VK_KHR_timeline_semaphore.getSemaphoreCounterValueKHR'
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.getSemaphoreCounterValue'
 newtype Semaphore = Semaphore Word64
   deriving newtype (Eq, Ord, Storable, Zero)
   deriving anyclass (IsHandle)
@@ -1399,13 +1553,13 @@
 -- 'Vulkan.Extensions.VK_EXT_metal_objects.ExportMetalSharedEventInfoEXT',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdResetEvent',
 -- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.cmdResetEvent2',
--- 'Vulkan.Extensions.VK_KHR_synchronization2.cmdResetEvent2KHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.cmdResetEvent2',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdSetEvent',
 -- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.cmdSetEvent2',
--- 'Vulkan.Extensions.VK_KHR_synchronization2.cmdSetEvent2KHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.cmdSetEvent2',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdWaitEvents',
 -- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.cmdWaitEvents2',
--- 'Vulkan.Extensions.VK_KHR_synchronization2.cmdWaitEvents2KHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.cmdWaitEvents2',
 -- 'Vulkan.Core10.Event.createEvent', 'Vulkan.Core10.Event.destroyEvent',
 -- 'Vulkan.Core10.Event.getEventStatus', 'Vulkan.Core10.Event.resetEvent',
 -- 'Vulkan.Core10.Event.setEvent'
@@ -1428,6 +1582,7 @@
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdBeginQuery',
 -- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdBeginQueryIndexedEXT',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdCopyQueryPoolResults',
+-- 'Vulkan.Extensions.VK_KHR_device_address_commands.cmdCopyQueryPoolResultsToMemoryKHR',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdEndQuery',
 -- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdEndQueryIndexedEXT',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdResetQueryPool',
@@ -1436,12 +1591,12 @@
 -- 'Vulkan.Extensions.VK_EXT_opacity_micromap.cmdWriteMicromapsPropertiesEXT',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdWriteTimestamp',
 -- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.cmdWriteTimestamp2',
--- 'Vulkan.Extensions.VK_KHR_synchronization2.cmdWriteTimestamp2KHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.cmdWriteTimestamp2',
 -- 'Vulkan.Core10.Query.createQueryPool',
 -- 'Vulkan.Core10.Query.destroyQueryPool',
 -- 'Vulkan.Core10.Query.getQueryPoolResults',
 -- 'Vulkan.Core12.Promoted_From_VK_EXT_host_query_reset.resetQueryPool',
--- 'Vulkan.Extensions.VK_EXT_host_query_reset.resetQueryPoolEXT'
+-- 'Vulkan.Core12.Promoted_From_VK_EXT_host_query_reset.resetQueryPool'
 newtype QueryPool = QueryPool Word64
   deriving newtype (Eq, Ord, Storable, Zero)
   deriving anyclass (IsHandle)
@@ -1479,12 +1634,12 @@
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
 -- 'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo',
 -- 'Vulkan.Core10.Pass.FramebufferCreateInfo',
--- 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo',
+-- 'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo',
 -- 'Vulkan.Core10.CommandBufferBuilding.RenderPassBeginInfo',
 -- 'Vulkan.Extensions.VK_HUAWEI_subpass_shading.SubpassShadingPipelineCreateInfoHUAWEI',
 -- 'Vulkan.Core10.Pass.createRenderPass',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.createRenderPass2',
--- 'Vulkan.Extensions.VK_KHR_create_renderpass2.createRenderPass2KHR',
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.createRenderPass2',
 -- 'Vulkan.Core10.Pass.destroyRenderPass',
 -- 'Vulkan.Extensions.VK_HUAWEI_subpass_shading.getDeviceSubpassShadingMaxWorkgroupSizeHUAWEI',
 -- 'Vulkan.Core10.Pass.getRenderAreaGranularity'
@@ -1503,9 +1658,10 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_DEFINE_NON_DISPATCHABLE_HANDLE VK_DEFINE_NON_DISPATCHABLE_HANDLE>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
--- 'Vulkan.Core10.Pipeline.createComputePipelines',
+-- 'Vulkan.Core10.ComputePipeline.createComputePipelines',
+-- 'Vulkan.Extensions.VK_ARM_data_graph.createDataGraphPipelinesARM',
 -- 'Vulkan.Extensions.VK_AMDX_shader_enqueue.createExecutionGraphPipelinesAMDX',
--- 'Vulkan.Core10.Pipeline.createGraphicsPipelines',
+-- 'Vulkan.Core10.GraphicsPipeline.createGraphicsPipelines',
 -- 'Vulkan.Core10.PipelineCache.createPipelineCache',
 -- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.createRayTracingPipelinesKHR',
 -- 'Vulkan.Extensions.VK_NV_ray_tracing.createRayTracingPipelinesNV',
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
@@ -56,6 +56,7 @@
 import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)
 import {-# SOURCE #-} Vulkan.Extensions.VK_FUCHSIA_buffer_collection (BufferCollectionImageCreateInfoFUCHSIA)
 import Vulkan.CStruct.Extends (Chain)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_data_graph_optical_flow (DataGraphOpticalFlowImageFormatInfoARM)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_dedicated_allocation (DedicatedAllocationImageCreateInfoNV)
 import Vulkan.Core10.Handles (Device)
 import Vulkan.Core10.Handles (Device(..))
@@ -92,6 +93,7 @@
 import Vulkan.Core10.Enums.ImageUsageFlagBits (ImageUsageFlags)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_metal_objects (ImportMetalIOSurfaceInfoEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_metal_objects (ImportMetalTextureInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_heap (OpaqueCaptureDataCreateInfoEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_buffer (OpaqueCaptureDescriptorDataCreateInfoEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_optical_flow (OpticalFlowImageFormatInfoNV)
 import Vulkan.CStruct.Extends (PeekChain)
@@ -121,8 +123,9 @@
 -- == Valid Usage
 --
 -- -   #VUID-vkCreateImage-device-09666# @device@ /must/ support at least
---     one queue family with one of the @VK_QUEUE_VIDEO_ENCODE_BIT_KHR@,
---     @VK_QUEUE_VIDEO_DECODE_BIT_KHR@,
+--     one queue family with one of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits VK_QUEUE_VIDEO_ENCODE_BIT_KHR>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits VK_QUEUE_VIDEO_DECODE_BIT_KHR>,
 --     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_OPTICAL_FLOW_BIT_NV',
 --     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_SPARSE_BINDING_BIT',
 --     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_TRANSFER_BIT',
@@ -133,7 +136,7 @@
 --     @pCreateInfo@ includes
 --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_BINDING_BIT',
 --     and the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedSparseAddressSpace extendedSparseAddressSpace>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-extendedSparseAddressSpace extendedSparseAddressSpace>
 --     feature is not enabled, creating this 'Vulkan.Core10.Handles.Image'
 --     /must/ not cause the total required sparse memory for all currently
 --     valid sparse resources on the device to exceed
@@ -143,7 +146,7 @@
 --     @pCreateInfo@ includes
 --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_BINDING_BIT',
 --     the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedSparseAddressSpace extendedSparseAddressSpace>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-extendedSparseAddressSpace extendedSparseAddressSpace>
 --     feature is enabled, and the @usage@ member of @pCreateInfo@ contains
 --     bits not in
 --     'Vulkan.Extensions.VK_NV_extended_sparse_address_space.PhysicalDeviceExtendedSparseAddressSpacePropertiesNV'::@extendedSparseImageUsageFlags@,
@@ -162,7 +165,7 @@
 --     @pCreateInfo@ includes
 --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_BINDING_BIT'
 --     and the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedSparseAddressSpace extendedSparseAddressSpace>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-extendedSparseAddressSpace extendedSparseAddressSpace>
 --     feature is enabled, creating this 'Vulkan.Core10.Handles.Image'
 --     /must/ not cause the total required sparse memory for all currently
 --     valid sparse resources on the device to exceed
@@ -171,7 +174,7 @@
 -- -   #VUID-vkCreateImage-pNext-06389# If a
 --     'Vulkan.Extensions.VK_FUCHSIA_buffer_collection.BufferCollectionImageCreateInfoFUCHSIA'
 --     has been chained to @pNext@, @pCreateInfo@ /must/ match the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#sysmem-chosen-create-infos Sysmem chosen >
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#sysmem-chosen-create-infos Sysmem chosen >
 --     excepting members 'ImageCreateInfo'::@extent@ and
 --     'ImageCreateInfo'::@usage@ in the match criteria
 --
@@ -190,6 +193,9 @@
 -- -   #VUID-vkCreateImage-pImage-parameter# @pImage@ /must/ be a valid
 --     pointer to a 'Vulkan.Core10.Handles.Image' handle
 --
+-- -   #VUID-vkCreateImage-device-queuecount# The device /must/ have been
+--     created with at least @1@ queue
+--
 -- == Return Codes
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
@@ -198,14 +204,18 @@
 --
 -- [<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_COMPRESSION_EXHAUSTED_EXT'
 --
+--     -   'Vulkan.Extensions.VK_KHR_buffer_device_address.ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_COMPRESSION_EXHAUSTED_EXT'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Extensions.VK_KHR_buffer_device_address.ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -220,7 +230,7 @@
                -- parameters to be used to create the image.
                (ImageCreateInfo a)
             -> -- | @pAllocator@ controls host memory allocation as described in the
-               -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+               -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
                -- chapter.
                ("allocator" ::: Maybe AllocationCallbacks)
             -> io (Image)
@@ -317,7 +327,7 @@
              -> -- | @image@ is the image to destroy.
                 Image
              -> -- | @pAllocator@ controls host memory allocation as described in the
-                -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
                 -- chapter.
                 ("allocator" ::: Maybe AllocationCallbacks)
              -> io ()
@@ -349,14 +359,14 @@
 -- = Description
 --
 -- If the image is
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#glossary-linear-resource linear>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#glossary-linear-resource linear>,
 -- then the returned layout is valid for
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-device-hostaccess host access>.
+-- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-multiplanar 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',
@@ -364,10 +374,10 @@
 -- image. If the image’s tiling is
 -- 'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT'
 -- and the image is
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#glossary-linear-resource non-linear>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#glossary-linear-resource non-linear>,
 -- then the returned layout has an implementation-dependent meaning; the
 -- vendor of the image’s
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#glossary-drm-format-modifier DRM format modifier>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#glossary-drm-format-modifier DRM format modifier>
 -- /may/ provide documentation that explains how to interpret the returned
 -- layout.
 --
@@ -397,7 +407,7 @@
 --
 -- -   #VUID-vkGetImageSubresourceLayout-format-08886# If @format@ of the
 --     @image@ is a color format that is not a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar image format>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-multiplanar multi-planar format>,
 --     and @tiling@ of the @image@ is
 --     'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR' or
 --     'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL', the
@@ -423,10 +433,10 @@
 -- -   #VUID-vkGetImageSubresourceLayout-tiling-08717# If the @tiling@ of
 --     the @image@ is 'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR'
 --     and has a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar image format>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-multiplanar multi-planar format>,
 --     then the @aspectMask@ member of @pSubresource@ /must/ be a single
 --     valid
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-planes-image-aspect multi-planar aspect mask>
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-multiplanar-image-aspect multi-planar aspect mask>
 --     bit
 --
 -- -   #VUID-vkGetImageSubresourceLayout-image-09432# If @image@ was
@@ -527,11 +537,11 @@
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'
 --
 -- Images created with one of the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion formats that require a sampler Y′CBCR conversion>,
+-- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion Y′CBCR conversion>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion Y′CBCR conversion>
 -- /may/ not be supported unless other parameters meet all of the
 -- constraints:
 --
@@ -540,7 +550,7 @@
 -- -   @mipLevels@ is 1
 --
 -- -   @arrayLayers@ is 1, unless the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-ycbcrImageArrays ycbcrImageArrays>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-ycbcrImageArrays ycbcrImageArrays>
 --     feature is enabled, or otherwise indicated by
 --     'Vulkan.Core10.DeviceInitialization.ImageFormatProperties'::@maxArrayLayers@,
 --     as returned by
@@ -549,6 +559,37 @@
 -- -   @samples@ is
 --     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'
 --
+-- Images created with the
+-- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TILE_MEMORY_BIT_QCOM'
+-- usage flag set have further restrictions on their limits and
+-- capabilities compared to images created without this flag. Creation of
+-- images with usage including
+-- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TILE_MEMORY_BIT_QCOM'
+-- /may/ not be supported unless parameters meet all of the constraints:
+--
+-- -   @flags@ is 0 or only includes
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_ALIAS_BIT'
+--
+-- -   @imageType@ is 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D'
+--
+-- -   @mipLevels@ is 1
+--
+-- -   @arrayLayers@ is 1
+--
+-- -   @samples@ is
+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'
+--
+-- -   @tiling@ is 'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL'
+--
+-- -   @usage@ includes
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TILE_MEMORY_BIT_QCOM'
+--     and any valid combination of the following
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT',
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_STORAGE_BIT',
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT',
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT',
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT'
+--
 -- Implementations /may/ support additional limits and capabilities beyond
 -- those listed above.
 --
@@ -562,26 +603,26 @@
 -- usage requirements.
 --
 -- If the implementation reports 'Vulkan.Core10.FundamentalTypes.TRUE' in
--- 'Vulkan.Extensions.VK_EXT_host_image_copy.PhysicalDeviceHostImageCopyPropertiesEXT'::@identicalMemoryTypeRequirements@,
+-- 'Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy.PhysicalDeviceHostImageCopyProperties'::@identicalMemoryTypeRequirements@,
 -- usage of
--- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_HOST_TRANSFER_BIT_EXT'
+-- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_HOST_TRANSFER_BIT'
 -- /must/ not affect the memory type requirements of the image as described
 -- in
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#sparsememory-memory-requirements Sparse Resource Memory Requirements>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#sparsememory-memory-requirements Sparse Resource Memory Requirements>
 -- and
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-association Resource Memory Association>.
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-association Resource Memory Association>.
 --
--- For images created without
+-- For images created without the
 -- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_EXTENDED_USAGE_BIT'
--- a @usage@ bit is valid if it is supported for the format the image is
--- created with.
+-- flag set, a @usage@ bit is valid if it is supported for the format the
+-- image is created with.
 --
 -- For images created with
 -- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_EXTENDED_USAGE_BIT'
 -- 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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-views Image Views>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-image-views Image Views>
 -- for more detail).
 --
 -- == Image Creation Limits
@@ -598,7 +639,7 @@
 -- referenced by the relevant valid usage statements of 'ImageCreateInfo'.
 --
 -- -   Let @uint64_t imageCreateDrmFormatModifiers[]@ be the set of
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#glossary-drm-format-modifier Linux DRM format modifiers>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#glossary-drm-format-modifier Linux DRM format modifiers>
 --     that the resultant image /may/ have.
 --
 --     -   If @tiling@ is not
@@ -618,7 +659,7 @@
 --
 -- -   Let @VkBool32 imageCreateMaybeLinear@ indicate if the resultant
 --     image may be
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#glossary-linear-resource linear>.
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#glossary-linear-resource linear>.
 --
 --     -   If @tiling@ is
 --         'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR', then
@@ -887,8 +928,8 @@
 --             <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoFormatPropertiesKHR VkVideoFormatPropertiesKHR>::@format@.
 --
 --         -   'ImageCreateInfo'::@flags@ only contains
---             @VK_IMAGE_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR@ and\/or
---             bits also set in
+--             <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageCreateFlagBits VK_IMAGE_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR>
+--             and\/or bits also set in
 --             <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoFormatPropertiesKHR VkVideoFormatPropertiesKHR>::@imageCreateFlags@.
 --
 --         -   'ImageCreateInfo'::@imageType@ equals
@@ -909,7 +950,7 @@
 --
 -- -   #VUID-VkImageCreateInfo-imageCreateMaxMipLevels-02251# Each of the
 --     following values (as described in
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-creation-limits Image Creation Limits>)
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-image-creation-limits Image Creation Limits>)
 --     /must/ not be undefined : @imageCreateMaxMipLevels@,
 --     @imageCreateMaxArrayLayers@, @imageCreateMaxExtent@, and
 --     @imageCreateSampleCounts@
@@ -919,8 +960,16 @@
 --     @pQueueFamilyIndices@ /must/ be a valid pointer to an array of
 --     @queueFamilyIndexCount@ @uint32_t@ values
 --
--- -   #VUID-VkImageCreateInfo-sharingMode-00942# If @sharingMode@ is
---     'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_CONCURRENT',
+-- -   #VUID-VkImageCreateInfo-maintenance11-13354# If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance11 maintenance11>
+--     feature is enabled and @sharingMode@ is
+--     'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_CONCURRENT', then
+--     @queueFamilyIndexCount@ /must/ be greater than @0@
+--
+-- -   #VUID-VkImageCreateInfo-sharingMode-00942# If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance11 maintenance11>
+--     feature is not enabled and @sharingMode@ is
+--     'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_CONCURRENT', then
 --     @queueFamilyIndexCount@ /must/ be greater than @1@
 --
 -- -   #VUID-VkImageCreateInfo-sharingMode-01420# If @sharingMode@ is
@@ -970,6 +1019,11 @@
 --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_CUBE_COMPATIBLE_BIT',
 --     @arrayLayers@ /must/ be greater than or equal to 6
 --
+-- -   #VUID-VkImageCreateInfo-initialLayout-10765# If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-zeroInitializeDeviceMemory zeroInitializeDeviceMemory>
+--     feature is not enabled, @initialLayout@ /must/ not be
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ZERO_INITIALIZED_EXT'
+--
 -- -   #VUID-VkImageCreateInfo-flags-02557# If @flags@ contains
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT',
 --     @imageType@ /must/ be 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D'
@@ -991,8 +1045,13 @@
 --     @imageType@ /must/ be 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D'
 --
 -- -   #VUID-VkImageCreateInfo-imageType-10197# If @flags@ contains
---     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT',
---     @flags@ /must/ not include
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT'
+--     and either the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance9 maintenance9>
+--     feature is not enabled on the device or
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-image2DViewOf3DSparse image2DViewOf3DSparse>
+--     is 'Vulkan.Core10.FundamentalTypes.FALSE' , @flags@ /must/ not
+--     include
 --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_ALIASED_BIT',
 --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_BINDING_BIT',
 --     or
@@ -1000,15 +1059,15 @@
 --
 -- -   #VUID-VkImageCreateInfo-extent-02252# @extent.width@ /must/ be less
 --     than or equal to @imageCreateMaxExtent.width@ (as defined in
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-creation-limits Image Creation Limits>)
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-creation-limits Image Creation Limits>)
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-creation-limits Image Creation Limits>)
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-image-creation-limits Image Creation Limits>)
 --
 -- -   #VUID-VkImageCreateInfo-imageType-00956# If @imageType@ is
 --     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', both @extent.height@
@@ -1024,11 +1083,11 @@
 --
 -- -   #VUID-VkImageCreateInfo-mipLevels-02255# @mipLevels@ /must/ be less
 --     than or equal to @imageCreateMaxMipLevels@ (as defined in
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-creation-limits Image Creation Limits>)
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-creation-limits Image Creation Limits>)
+--     <https://registry.khronos.org/vulkan/specs/latest/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/
@@ -1041,7 +1100,7 @@
 --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_CUBE_COMPATIBLE_BIT',
 --     @mipLevels@ /must/ be equal to @1@, and @imageCreateMaybeLinear@ (as
 --     defined in
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-creation-limits Image Creation Limits>)
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-image-creation-limits Image Creation Limits>)
 --     /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE',
 --
 -- -   #VUID-VkImageCreateInfo-samples-02558# If @samples@ is not
@@ -1077,14 +1136,14 @@
 --     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxFramebufferHeight@
 --
 -- -   #VUID-VkImageCreateInfo-fragmentDensityMapOffset-06514# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-fragmentDensityMapOffset fragmentDensityMapOffset>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-fragmentDensityMapOffset fragmentDensityMapOffset>
 --     feature 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 the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-fragmentDensityMapOffset fragmentDensityMapOffset>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-fragmentDensityMapOffset fragmentDensityMapOffset>
 --     feature 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
@@ -1101,22 +1160,22 @@
 -- -   #VUID-VkImageCreateInfo-samples-02258# @samples@ /must/ be a valid
 --     'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' value
 --     that is set in @imageCreateSampleCounts@ (as defined in
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-creation-limits Image Creation Limits>)
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-image-creation-limits Image Creation Limits>)
 --
 -- -   #VUID-VkImageCreateInfo-usage-00968# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-shaderStorageImageMultisample shaderStorageImageMultisample>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-shaderStorageImageMultisample shaderStorageImageMultisample>
 --     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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-sparseBinding sparseBinding>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-sparseBinding sparseBinding>
 --     feature is not enabled, @flags@ /must/ not contain
 --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_BINDING_BIT'
 --
 -- -   #VUID-VkImageCreateInfo-flags-01924# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-sparseResidencyAliased sparseResidencyAliased>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-sparseResidencyAliased sparseResidencyAliased>
 --     feature is not enabled, @flags@ /must/ not contain
 --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_ALIASED_BIT'
 --
@@ -1131,21 +1190,21 @@
 --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_RESIDENCY_BIT'
 --
 -- -   #VUID-VkImageCreateInfo-imageType-00971# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-sparseResidencyImage2D sparseResidencyImage2D>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-sparseResidencyImage2D sparseResidencyImage2D>
 --     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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-sparseResidencyImage3D sparseResidencyImage3D>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-sparseResidencyImage3D sparseResidencyImage3D>
 --     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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-sparseResidency2Samples sparseResidency2Samples>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-sparseResidency2Samples sparseResidency2Samples>
 --     feature is not enabled, @imageType@ is
 --     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', and @samples@ is
 --     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_2_BIT',
@@ -1153,7 +1212,7 @@
 --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_RESIDENCY_BIT'
 --
 -- -   #VUID-VkImageCreateInfo-imageType-00974# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-sparseResidency4Samples sparseResidency4Samples>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-sparseResidency4Samples sparseResidency4Samples>
 --     feature is not enabled, @imageType@ is
 --     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', and @samples@ is
 --     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_4_BIT',
@@ -1161,7 +1220,7 @@
 --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_RESIDENCY_BIT'
 --
 -- -   #VUID-VkImageCreateInfo-imageType-00975# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-sparseResidency8Samples sparseResidency8Samples>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-sparseResidency8Samples sparseResidency8Samples>
 --     feature is not enabled, @imageType@ is
 --     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', and @samples@ is
 --     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_8_BIT',
@@ -1169,7 +1228,7 @@
 --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_RESIDENCY_BIT'
 --
 -- -   #VUID-VkImageCreateInfo-imageType-00976# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-sparseResidency16Samples sparseResidency16Samples>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-sparseResidency16Samples sparseResidency16Samples>
 --     feature is not enabled, @imageType@ is
 --     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', and @samples@ is
 --     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_16_BIT',
@@ -1193,7 +1252,7 @@
 --     /must/ not also be set
 --
 -- -   #VUID-VkImageCreateInfo-flags-01890# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-protectedMemory protectedMemory>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-protectedMemory protectedMemory>
 --     feature is not enabled, @flags@ /must/ not contain
 --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_PROTECTED_BIT'
 --
@@ -1230,7 +1289,7 @@
 --     'Vulkan.Extensions.VK_NV_external_memory.ExternalMemoryImageCreateInfoNV'
 --     structure, its @handleTypes@ member /must/ only contain bits that
 --     are also in
---     'Vulkan.Extensions.VK_NV_external_memory_capabilities.ExternalImageFormatPropertiesNV'::@externalMemoryProperties.compatibleHandleTypes@,
+--     'Vulkan.Extensions.VK_NV_external_memory_capabilities.ExternalImageFormatPropertiesNV'::@externalMemoryFeatures.compatibleHandleTypes@,
 --     as returned by
 --     'Vulkan.Extensions.VK_NV_external_memory_capabilities.getPhysicalDeviceExternalImageFormatPropertiesNV'
 --     with @format@, @imageType@, @tiling@, @usage@, and @flags@ equal to
@@ -1247,15 +1306,15 @@
 -- -   #VUID-VkImageCreateInfo-flags-02259# If @flags@ contains
 --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT',
 --     then @mipLevels@ /must/ be one, @arrayLayers@ /must/ be one,
---     @imageType@ /must/ be 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D'.
+--     @imageType@ /must/ be 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D',
 --     and @imageCreateMaybeLinear@ (as defined in
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-creation-limits Image Creation Limits>)
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#compressed_image_formats compressed image format>
+--     <https://registry.khronos.org/vulkan/specs/latest/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',
@@ -1264,7 +1323,8 @@
 --
 -- -   #VUID-VkImageCreateInfo-initialLayout-00993# @initialLayout@ /must/
 --     be 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_UNDEFINED' or
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_PREINITIALIZED'
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ZERO_INITIALIZED_EXT'
+--     or 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_PREINITIALIZED'
 --
 -- -   #VUID-VkImageCreateInfo-pNext-01443# If the @pNext@ chain includes a
 --     'Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryImageCreateInfo'
@@ -1275,24 +1335,24 @@
 --
 -- -   #VUID-VkImageCreateInfo-format-06410# If the image @format@ is one
 --     of the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion formats that require a sampler Y′CBCR conversion>,
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion formats that require a sampler Y′CBCR conversion>,
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion formats that require a sampler Y′CBCR conversion>,
+--     <https://registry.khronos.org/vulkan/specs/latest/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-imageCreateFormatFeatures-02260# If @format@
 --     is a /multi-planar/ format, and if @imageCreateFormatFeatures@ (as
 --     defined in
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-creation-limits Image Creation Limits>)
+--     <https://registry.khronos.org/vulkan/specs/latest/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
@@ -1311,11 +1371,11 @@
 --     suffix, @extent.height@ /must/ be a multiple of 2
 --
 -- -   #VUID-VkImageCreateInfo-format-09583# If @format@ is one of the
---     @VK_FORMAT_PVTRC1_*_IMG@ formats, @extent.width@ /must/ be a power
+--     @VK_FORMAT_PVRTC1_*_IMG@ formats, @extent.width@ /must/ be a power
 --     of 2
 --
 -- -   #VUID-VkImageCreateInfo-format-09584# If @format@ is one of the
---     @VK_FORMAT_PVTRC1_*_IMG@ formats, @extent.height@ /must/ be a power
+--     @VK_FORMAT_PVRTC1_*_IMG@ formats, @extent.height@ /must/ be a power
 --     of 2
 --
 -- -   #VUID-VkImageCreateInfo-tiling-02261# If @tiling@ is
@@ -1376,7 +1436,7 @@
 -- -   #VUID-VkImageCreateInfo-pNext-09457# If the @pNext@ chain includes a
 --     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'
 --     structure whose @externalFormat@ member is not @0@, and
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-externalFormatResolve externalFormatResolve>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-externalFormatResolve externalFormatResolve>
 --     feature is not enabled, @usage@ /must/ not include
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT'
 --     or
@@ -1476,7 +1536,7 @@
 --     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxFramebufferHeight@
 --
 -- -   #VUID-VkImageCreateInfo-format-02538# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-shaderStorageImageMultisample shaderStorageImageMultisample>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-shaderStorageImageMultisample shaderStorageImageMultisample>
 --     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'
@@ -1517,7 +1577,7 @@
 --     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'
 --
 -- -   #VUID-VkImageCreateInfo-shadingRateImage-07727# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-shadingRateImage shadingRateImage>
 --     feature is enabled and @usage@ includes
 --     'Vulkan.Extensions.VK_NV_shading_rate_image.IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV',
 --     @tiling@ /must/ be
@@ -1563,22 +1623,24 @@
 -- -   #VUID-VkImageCreateInfo-pNext-06722# If a
 --     'Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo'
 --     structure was included in the @pNext@ chain and @format@ is not a
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar>
---     format and
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-multiplanar multi-planar format>
+--     and
 --     'Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo'::@viewFormatCount@
 --     is not zero, then each format in
 --     'Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo'::@pViewFormats@
 --     /must/ either be compatible with the @format@ as described in the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#formats-compatibility compatibility table>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-compatibility compatibility table>
 --     or, if @flags@ contains
 --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT',
---     be an uncompressed format that is size-compatible with @format@
+--     be an uncompressed format that is
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-size-compatibility size-compatible>
+--     with @format@
 --
 -- -   #VUID-VkImageCreateInfo-pNext-10062# If a
 --     'Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo'
 --     structure was included in the @pNext@ chain and @format@ is a
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar>
---     format and @flags@ contains
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-multiplanar multi-planar format>
+--     and @flags@ contains
 --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_MUTABLE_FORMAT_BIT'
 --     and
 --     'Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo'::@viewFormatCount@
@@ -1596,11 +1658,13 @@
 --     /must/ be @0@ or @1@
 --
 -- -   #VUID-VkImageCreateInfo-usage-04815# If @usage@ includes
---     @VK_IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR@,
---     @VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR@, or
---     @VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR@, and @flags@ does not
---     include @VK_IMAGE_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR@, then
---     the @pNext@ chain /must/ include a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR>,
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR>,
+--     and @flags@ does not include
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageCreateFlagBits VK_IMAGE_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR>,
+--     then the @pNext@ chain /must/ include a
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoProfileListInfoKHR VkVideoProfileListInfoKHR>
 --     structure with @profileCount@ greater than @0@ and @pProfiles@
 --     including at least one
@@ -1609,11 +1673,13 @@
 --     operation
 --
 -- -   #VUID-VkImageCreateInfo-usage-04816# If @usage@ includes
---     @VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR@,
---     @VK_IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR@, or
---     @VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR@, and @flags@ does not
---     include @VK_IMAGE_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR@, then
---     the @pNext@ chain /must/ include a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR>,
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR>,
+--     and @flags@ does not include
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageCreateFlagBits VK_IMAGE_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR>,
+--     then the @pNext@ chain /must/ include a
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoProfileListInfoKHR VkVideoProfileListInfoKHR>
 --     structure with @profileCount@ greater than @0@ and @pProfiles@
 --     including at least one
@@ -1622,21 +1688,25 @@
 --     operation
 --
 -- -   #VUID-VkImageCreateInfo-flags-08328# If @flags@ includes
---     @VK_IMAGE_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR@, then
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-videoMaintenance1 videoMaintenance1>
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageCreateFlagBits VK_IMAGE_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR>,
+--     then
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-videoMaintenance1 videoMaintenance1>
 --     /must/ be enabled
 --
 -- -   #VUID-VkImageCreateInfo-flags-08329# If @flags@ includes
---     @VK_IMAGE_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR@ and @usage@ does
---     not include @VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR@, then @usage@
---     /must/ not include @VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR@
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageCreateFlagBits VK_IMAGE_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR>
+--     and @usage@ does not include
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR>,
+--     then @usage@ /must/ not include
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR>
 --
 -- -   #VUID-VkImageCreateInfo-flags-08331# If @flags@ includes
---     @VK_IMAGE_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR@, then @usage@
---     /must/ not include
---     @VK_IMAGE_USAGE_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR@,
---     @VK_IMAGE_USAGE_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR@, or
---     @VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR@
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageCreateFlagBits VK_IMAGE_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR>,
+--     then @usage@ /must/ not include
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR>,
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR>
 --
 -- -   #VUID-VkImageCreateInfo-pNext-06811# If the @pNext@ chain includes a
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoProfileListInfoKHR VkVideoProfileListInfoKHR>
@@ -1644,34 +1714,56 @@
 --     @supportedVideoFormat@ /must/ be
 --     'Vulkan.Core10.FundamentalTypes.TRUE'
 --
+-- -   #VUID-VkImageCreateInfo-pNext-10784# If the @pNext@ chain includes a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoProfileListInfoKHR VkVideoProfileListInfoKHR>
+--     structure and for any element of its @pProfiles@ member
+--     @videoCodecOperation@ is
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoCodecOperationFlagBitsKHR VK_VIDEO_CODEC_OPERATION_DECODE_VP9_BIT_KHR>,
+--     then the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-videoDecodeVP9 videoDecodeVP9>
+--     feature /must/ be enabled
+--
 -- -   #VUID-VkImageCreateInfo-pNext-10250# If the @pNext@ chain includes a
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoProfileListInfoKHR VkVideoProfileListInfoKHR>
 --     structure and for any element of its @pProfiles@ member
 --     @videoCodecOperation@ is
---     @VK_VIDEO_CODEC_OPERATION_ENCODE_AV1_BIT_KHR@, then the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-videoEncodeAV1 videoEncodeAV1>
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoCodecOperationFlagBitsKHR VK_VIDEO_CODEC_OPERATION_ENCODE_AV1_BIT_KHR>,
+--     then the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-videoEncodeAV1 videoEncodeAV1>
 --     feature /must/ be enabled
 --
+-- -   #VUID-VkImageCreateInfo-pNext-10920# If the @pNext@ chain includes a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeProfileRgbConversionInfoVALVE VkVideoEncodeProfileRgbConversionInfoVALVE>
+--     structure, then the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-videoEncodeRgbConversion videoEncodeRgbConversion>
+--     feature /must/ be enabled
+--
 -- -   #VUID-VkImageCreateInfo-usage-10251# If @usage@ includes
---     @VK_IMAGE_USAGE_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR@ or
---     @VK_IMAGE_USAGE_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR@, then the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-videoEncodeQuantizationMap videoEncodeQuantizationMap>
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR>,
+--     then the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-videoEncodeQuantizationMap videoEncodeQuantizationMap>
 --     feature /must/ be enabled
 --
 -- -   #VUID-VkImageCreateInfo-usage-10252# If @usage@ includes
---     @VK_IMAGE_USAGE_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR@ or
---     @VK_IMAGE_USAGE_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR@, @imageType@
---     /must/ be 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D'
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR>,
+--     @imageType@ /must/ be 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D'
 --
 -- -   #VUID-VkImageCreateInfo-usage-10253# If @usage@ includes
---     @VK_IMAGE_USAGE_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR@ or
---     @VK_IMAGE_USAGE_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR@, @samples@ /must/
---     be 'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR>,
+--     @samples@ /must/ be
+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'
 --
 -- -   #VUID-VkImageCreateInfo-usage-10254# If @usage@ includes
---     @VK_IMAGE_USAGE_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR@ or
---     @VK_IMAGE_USAGE_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR@, then the @pNext@
---     chain /must/ include a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR>,
+--     then the @pNext@ chain /must/ include a
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoProfileListInfoKHR VkVideoProfileListInfoKHR>
 --     structure with @profileCount@ equal to @1@ and @pProfiles@ pointing
 --     to a
@@ -1680,30 +1772,34 @@
 --     operation
 --
 -- -   #VUID-VkImageCreateInfo-usage-10255# If @usage@ includes
---     @VK_IMAGE_USAGE_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR@, then
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR>,
+--     then
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeCapabilitiesKHR VkVideoEncodeCapabilitiesKHR>::@flags@
 --     /must/ include
---     @VK_VIDEO_ENCODE_CAPABILITY_QUANTIZATION_DELTA_MAP_BIT_KHR@, as
---     returned by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeCapabilityFlagBitsKHR VK_VIDEO_ENCODE_CAPABILITY_QUANTIZATION_DELTA_MAP_BIT_KHR>,
+--     as returned by
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkGetPhysicalDeviceVideoCapabilitiesKHR vkGetPhysicalDeviceVideoCapabilitiesKHR>
 --     for the video profile specified in the @pProfiles@ member of the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoProfileListInfoKHR VkVideoProfileListInfoKHR>
 --     structure included in the @pNext@ chain
 --
 -- -   #VUID-VkImageCreateInfo-usage-10256# If @usage@ includes
---     @VK_IMAGE_USAGE_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR@, then
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR>,
+--     then
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeCapabilitiesKHR VkVideoEncodeCapabilitiesKHR>::@flags@
---     /must/ include @VK_VIDEO_ENCODE_CAPABILITY_EMPHASIS_MAP_BIT_KHR@, as
---     returned by
+--     /must/ include
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeCapabilityFlagBitsKHR VK_VIDEO_ENCODE_CAPABILITY_EMPHASIS_MAP_BIT_KHR>,
+--     as returned by
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkGetPhysicalDeviceVideoCapabilitiesKHR vkGetPhysicalDeviceVideoCapabilitiesKHR>
 --     for the video profile specified in the @pProfiles@ member of the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoProfileListInfoKHR VkVideoProfileListInfoKHR>
 --     structure included in the @pNext@ chain
 --
 -- -   #VUID-VkImageCreateInfo-usage-10257# If @usage@ includes
---     @VK_IMAGE_USAGE_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR@ or
---     @VK_IMAGE_USAGE_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR@, @extent.width@
---     /must/ be less than or equal to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR>,
+--     @extent.width@ /must/ be less than or equal to
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeQuantizationMapCapabilitiesKHR VkVideoEncodeQuantizationMapCapabilitiesKHR>::@maxQuantizationMapExtent.width@,
 --     as returned by
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkGetPhysicalDeviceVideoCapabilitiesKHR vkGetPhysicalDeviceVideoCapabilitiesKHR>
@@ -1712,9 +1808,10 @@
 --     structure included in the @pNext@ chain
 --
 -- -   #VUID-VkImageCreateInfo-usage-10258# If @usage@ includes
---     @VK_IMAGE_USAGE_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR@ or
---     @VK_IMAGE_USAGE_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR@, @extent.height@
---     /must/ be less than or equal to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR>,
+--     @extent.height@ /must/ be less than or equal to
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeQuantizationMapCapabilitiesKHR VkVideoEncodeQuantizationMapCapabilitiesKHR>::@maxQuantizationMapExtent.height@,
 --     as returned by
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkGetPhysicalDeviceVideoCapabilitiesKHR vkGetPhysicalDeviceVideoCapabilitiesKHR>
@@ -1730,7 +1827,7 @@
 --
 -- -   #VUID-VkImageCreateInfo-multisampledRenderToSingleSampled-06882# If
 --     the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
 --     feature is not enabled, @flags@ /must/ not contain
 --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_BIT_EXT'
 --
@@ -1742,8 +1839,8 @@
 -- -   #VUID-VkImageCreateInfo-pNext-06743# If the @pNext@ chain includes a
 --     'Vulkan.Extensions.VK_EXT_image_compression_control.ImageCompressionControlEXT'
 --     structure, @format@ is a
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar>
---     format, and
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-multiplanar multi-planar format>,
+--     and
 --     'Vulkan.Extensions.VK_EXT_image_compression_control.ImageCompressionControlEXT'::@flags@
 --     includes
 --     'Vulkan.Extensions.VK_EXT_image_compression_control.IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT',
@@ -1754,8 +1851,8 @@
 -- -   #VUID-VkImageCreateInfo-pNext-06744# If the @pNext@ chain includes a
 --     'Vulkan.Extensions.VK_EXT_image_compression_control.ImageCompressionControlEXT'
 --     structure, @format@ is not a
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar>
---     format, and
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-multiplanar multi-planar format>,
+--     and
 --     'Vulkan.Extensions.VK_EXT_image_compression_control.ImageCompressionControlEXT'::@flags@
 --     includes
 --     'Vulkan.Extensions.VK_EXT_image_compression_control.IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT',
@@ -1770,15 +1867,17 @@
 --     structure
 --
 -- -   #VUID-VkImageCreateInfo-flags-08104# If @flags@ includes
---     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT',
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_DESCRIPTOR_HEAP_CAPTURE_REPLAY_BIT_EXT',
 --     the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-descriptorBufferCaptureReplay descriptorBufferCaptureReplay>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-descriptorBufferCaptureReplay descriptorBufferCaptureReplay>
+--     or
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-descriptorHeapCaptureReplay descriptorHeapCaptureReplay>
 --     feature /must/ be enabled
 --
 -- -   #VUID-VkImageCreateInfo-pNext-08105# If the @pNext@ chain includes a
 --     'Vulkan.Extensions.VK_EXT_descriptor_buffer.OpaqueCaptureDescriptorDataCreateInfoEXT'
 --     structure, @flags@ /must/ contain
---     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT'
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT'
 --
 -- -   #VUID-VkImageCreateInfo-pNext-06783# If the @pNext@ chain includes a
 --     'Vulkan.Extensions.VK_EXT_metal_objects.ExportMetalObjectCreateInfoEXT'
@@ -1797,33 +1896,41 @@
 --
 -- -   #VUID-VkImageCreateInfo-pNext-06785# If the @pNext@ chain includes a
 --     'Vulkan.Extensions.VK_EXT_metal_objects.ImportMetalTextureInfoEXT'
---     structure and the image does not have a multi-planar format, then
+--     structure and the image does not have a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-multiplanar multi-planar format>,
+--     then
 --     'Vulkan.Extensions.VK_EXT_metal_objects.ImportMetalTextureInfoEXT'::@plane@
 --     /must/ be
 --     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'
 --
 -- -   #VUID-VkImageCreateInfo-pNext-06786# If the @pNext@ chain includes a
 --     'Vulkan.Extensions.VK_EXT_metal_objects.ImportMetalTextureInfoEXT'
---     structure and the image has a multi-planar format with only two
---     planes, then
+--     structure and the image has a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-multiplanar multi-planar format>
+--     with only two planes, then
 --     'Vulkan.Extensions.VK_EXT_metal_objects.ImportMetalTextureInfoEXT'::@plane@
 --     /must/ not be
 --     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'
 --
 -- -   #VUID-VkImageCreateInfo-imageCreateFormatFeatures-09048# If
 --     @imageCreateFormatFeatures@ (as defined in
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-creation-limits Image Creation Limits>)
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-image-creation-limits Image Creation Limits>)
 --     does not contain
---     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_HOST_IMAGE_TRANSFER_BIT_EXT',
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_HOST_IMAGE_TRANSFER_BIT',
 --     then @usage@ /must/ not contain
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_HOST_TRANSFER_BIT_EXT'
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_HOST_TRANSFER_BIT'
 --
 -- -   #VUID-VkImageCreateInfo-usage-10245# If @usage@ includes
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_HOST_TRANSFER_BIT_EXT',
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_HOST_TRANSFER_BIT',
 --     then the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-hostImageCopy hostImageCopy>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-hostImageCopy hostImageCopy>
 --     feature /must/ be enabled
 --
+-- -   #VUID-VkImageCreateInfo-tileMemoryHeap-10766# If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-tileMemoryHeap tileMemoryHeap>
+--     feature is not enabled, @usage@ /must/ not include
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TILE_MEMORY_BIT_QCOM'
+--
 -- -   #VUID-VkImageCreateInfo-pNext-09653# If the @pNext@ chain contains a
 --     'Vulkan.Extensions.VK_MESA_image_alignment_control.ImageAlignmentControlCreateInfoMESA'
 --     structure, @tiling@ /must/ be
@@ -1835,6 +1942,45 @@
 --     'Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryImageCreateInfo'
 --     structure
 --
+-- -   #VUID-VkImageCreateInfo-tiling-09711# If @tiling@ is
+--     VK_IMAGE_TILING_LINEAR then
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TENSOR_ALIASING_BIT_ARM'
+--     /must/ not be set in @usage@
+--
+-- -   #VUID-VkImageCreateInfo-flags-13355# If @flags@ contains
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_ALIAS_SINGLE_LAYER_DESCRIPTOR_BIT_KHR',
+--     the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance11 maintenance11>
+--     feature /must/ be enabled
+--
+-- -   #VUID-VkImageCreateInfo-flags-13356# If @flags@ contains
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_ALIAS_SINGLE_LAYER_DESCRIPTOR_BIT_KHR',
+--     @imageType@ /must/ be 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D'
+--     or 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D'
+--
+-- -   #VUID-VkImageCreateInfo-None-12279# If Vulkan 1.3 is not supported
+--     and the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-ycbcr2plane444Formats ycbcr2plane444Formats>
+--     feature is not enabled, @format@ /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_G8_B8R8_2PLANE_444_UNORM',
+--     'Vulkan.Core10.Enums.Format.FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16',
+--     'Vulkan.Core10.Enums.Format.FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16',
+--     or 'Vulkan.Core10.Enums.Format.FORMAT_G16_B16R16_2PLANE_444_UNORM'
+--
+-- -   #VUID-VkImageCreateInfo-flags-11281# If
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.OpaqueCaptureDataCreateInfoEXT'::@pData@
+--     is not @NULL@, @flags@ /must/ contain
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_DESCRIPTOR_HEAP_CAPTURE_REPLAY_BIT_EXT'
+--
+-- -   #VUID-VkImageCreateInfo-pData-11286# If @flags@ contains
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_DESCRIPTOR_HEAP_CAPTURE_REPLAY_BIT_EXT',
+--     and
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.OpaqueCaptureDataCreateInfoEXT'::@pData@
+--     is not @NULL@,
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.OpaqueCaptureDataCreateInfoEXT'::@pData->size@
+--     /must/ be equal to
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-imageCaptureReplayOpaqueDataSize imageCaptureReplayOpaqueDataSize>
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-VkImageCreateInfo-sType-sType# @sType@ /must/ be
@@ -1844,9 +1990,11 @@
 --     structure (including this one) in the @pNext@ chain /must/ be either
 --     @NULL@ or a pointer to a valid instance of
 --     'Vulkan.Extensions.VK_FUCHSIA_buffer_collection.BufferCollectionImageCreateInfoFUCHSIA',
+--     'Vulkan.Extensions.VK_ARM_data_graph_optical_flow.DataGraphOpticalFlowImageFormatInfoARM',
 --     'Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationImageCreateInfoNV',
 --     'Vulkan.Extensions.VK_EXT_metal_objects.ExportMetalObjectCreateInfoEXT',
 --     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID',
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkExternalFormatOHOS VkExternalFormatOHOS>,
 --     'Vulkan.Extensions.VK_QNX_external_memory_screen_buffer.ExternalFormatQNX',
 --     'Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryImageCreateInfo',
 --     'Vulkan.Extensions.VK_NV_external_memory.ExternalMemoryImageCreateInfoNV',
@@ -1859,14 +2007,15 @@
 --     'Vulkan.Extensions.VK_KHR_swapchain.ImageSwapchainCreateInfoKHR',
 --     'Vulkan.Extensions.VK_EXT_metal_objects.ImportMetalIOSurfaceInfoEXT',
 --     'Vulkan.Extensions.VK_EXT_metal_objects.ImportMetalTextureInfoEXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.OpaqueCaptureDataCreateInfoEXT',
 --     'Vulkan.Extensions.VK_EXT_descriptor_buffer.OpaqueCaptureDescriptorDataCreateInfoEXT',
 --     'Vulkan.Extensions.VK_NV_optical_flow.OpticalFlowImageFormatInfoNV',
 --     or
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoProfileListInfoKHR VkVideoProfileListInfoKHR>
 --
 -- -   #VUID-VkImageCreateInfo-sType-unique# The @sType@ value of each
---     struct in the @pNext@ chain /must/ be unique, with the exception of
---     structures of type
+--     structure in the @pNext@ chain /must/ be unique, with the exception
+--     of structures of type
 --     'Vulkan.Extensions.VK_EXT_metal_objects.ExportMetalObjectCreateInfoEXT'
 --     or
 --     'Vulkan.Extensions.VK_EXT_metal_objects.ImportMetalTextureInfoEXT'
@@ -1906,7 +2055,7 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
 -- 'Vulkan.Core13.Promoted_From_VK_KHR_maintenance4.DeviceImageMemoryRequirements',
--- 'Vulkan.Extensions.VK_KHR_maintenance5.DeviceImageSubresourceInfoKHR',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.DeviceImageSubresourceInfo',
 -- 'Vulkan.Core10.FundamentalTypes.Extent3D',
 -- 'Vulkan.Core10.Enums.Format.Format',
 -- 'Vulkan.Core10.Enums.ImageCreateFlagBits.ImageCreateFlags',
@@ -1933,7 +2082,7 @@
     -- and type of the texel blocks that will be contained in the image.
     format :: Format
   , -- | @extent@ is a 'Vulkan.Core10.FundamentalTypes.Extent3D' describing the
-    -- number of data elements in each dimension of the base level.
+    -- number of texels\/pixels in each dimension of the base level.
     extent :: Extent3D
   , -- | @mipLevels@ describes the number of levels of detail available for
     -- minified sampling of the image.
@@ -1943,7 +2092,7 @@
   , -- | @samples@ is a
     -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' value
     -- specifying the number of
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-multisampling samples per texel>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -1963,7 +2112,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-layouts Image Layouts>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-image-layouts Image Layouts>.
     initialLayout :: ImageLayout
   }
   deriving (Typeable)
@@ -1978,6 +2127,8 @@
   getNext ImageCreateInfo{..} = next
   extends :: forall e b proxy. Typeable e => proxy e -> (Extends ImageCreateInfo e => b) -> Maybe b
   extends _ f
+    | Just Refl <- eqT @e @DataGraphOpticalFlowImageFormatInfoARM = Just f
+    | Just Refl <- eqT @e @OpaqueCaptureDataCreateInfoEXT = Just f
     | Just Refl <- eqT @e @ImageAlignmentControlCreateInfoMESA = Just f
     | Just Refl <- eqT @e @ExternalFormatQNX = Just f
     | Just Refl <- eqT @e @OpticalFlowImageFormatInfoNV = Just f
@@ -2095,7 +2246,7 @@
 -- = Description
 --
 -- If the image is
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#glossary-linear-resource linear>,
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -2141,7 +2292,7 @@
 -- interleaved memory allocation.
 --
 -- If the image has a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-multiplanar multi-planar format>
 -- and its tiling is 'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR'
 -- , then the @aspectMask@ member of
 -- 'Vulkan.Core10.SparseResourceMemoryManagement.ImageSubresource' /must/
@@ -2163,13 +2314,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#glossary-drm-format-modifier modifier>.
+-- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#glossary-linear-resource non-linear>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#glossary-linear-resource non-linear>,
 -- then @rowPitch@, @arrayPitch@, and @depthPitch@ have an
 -- implementation-dependent meaning.
 --
@@ -2178,7 +2329,7 @@
 -- <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.Extensions.VK_EXT_image_drm_format_modifier.ImageDrmFormatModifierExplicitCreateInfoEXT',
--- 'Vulkan.Extensions.VK_KHR_maintenance5.SubresourceLayout2KHR',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.SubresourceLayout2',
 -- 'getImageSubresourceLayout'
 data SubresourceLayout = SubresourceLayout
   { -- | @offset@ is the byte offset from the start of the image or the plane
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
@@ -107,7 +107,8 @@
 --
 -- -   #VUID-vkCreateImageView-device-09667# @device@ /must/ support at
 --     least one queue family with one of the
---     @VK_QUEUE_VIDEO_ENCODE_BIT_KHR@, @VK_QUEUE_VIDEO_DECODE_BIT_KHR@,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits VK_QUEUE_VIDEO_ENCODE_BIT_KHR>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits VK_QUEUE_VIDEO_DECODE_BIT_KHR>,
 --     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', or
 --     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' capabilities
 --
@@ -129,6 +130,9 @@
 -- -   #VUID-vkCreateImageView-pView-parameter# @pView@ /must/ be a valid
 --     pointer to a 'Vulkan.Core10.Handles.ImageView' handle
 --
+-- -   #VUID-vkCreateImageView-device-queuecount# The device /must/ have
+--     been created with at least @1@ queue
+--
 -- == Return Codes
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
@@ -137,12 +141,16 @@
 --
 -- [<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.Extensions.VK_KHR_buffer_device_address.ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR'
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
 --
---     -   'Vulkan.Extensions.VK_KHR_buffer_device_address.ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -157,7 +165,7 @@
                    -- containing parameters to be used to create the image view.
                    (ImageViewCreateInfo a)
                 -> -- | @pAllocator@ controls host memory allocation as described in the
-                   -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                   -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
                    -- chapter.
                    ("allocator" ::: Maybe AllocationCallbacks)
                 -> io (ImageView)
@@ -250,7 +258,7 @@
                  -> -- | @imageView@ is the image view to destroy.
                     ImageView
                  -> -- | @pAllocator@ controls host memory allocation as described in the
-                    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
                     -- chapter.
                     ("allocator" ::: Maybe AllocationCallbacks)
                  -> io ()
@@ -281,6 +289,7 @@
 -- 'Vulkan.Extensions.VK_FUCHSIA_buffer_collection.BufferCollectionPropertiesFUCHSIA',
 -- 'Vulkan.Core10.Enums.ComponentSwizzle.ComponentSwizzle',
 -- 'ImageViewCreateInfo',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkNativeBufferFormatPropertiesOHOS VkNativeBufferFormatPropertiesOHOS>,
 -- 'Vulkan.Extensions.VK_EXT_border_color_swizzle.SamplerBorderColorComponentMappingCreateInfoEXT',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionCreateInfo',
 -- 'Vulkan.Extensions.VK_QNX_external_memory_screen_buffer.ScreenBufferFormatPropertiesQNX',
@@ -390,7 +399,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>.
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-multiplanar 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
@@ -404,10 +413,12 @@
 -- @baseArrayLayer@ and @layerCount@ specify the first slice index and the
 -- number of slices to include in the created image view. Such an image
 -- view /can/ be used as a framebuffer attachment that refers only to the
--- specified range of slices of the selected mip level. However, any layout
--- transitions performed on such an attachment view during a render pass
--- instance still apply to the entire subresource referenced which includes
--- all the slices of the selected mip level.
+-- specified range of slices of the selected mip level. If the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance9 maintenance9>
+-- feature is not enabled, any layout transitions performed on such an
+-- attachment view during a render pass instance still apply to the entire
+-- subresource referenced which includes all the slices of the selected mip
+-- level.
 --
 -- When using an image view of a depth\/stencil image to populate a
 -- descriptor set (e.g. for sampling in the shader, or for use as an input
@@ -420,14 +431,14 @@
 -- both depth and stencil image subresources are used.
 --
 -- When creating a 'Vulkan.Core10.Handles.ImageView', if
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
+-- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-multiplanar multi-planar format>,
 -- 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
@@ -471,9 +482,9 @@
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
--- 'Vulkan.Extensions.VK_EXT_host_image_copy.HostImageLayoutTransitionInfoEXT',
+-- 'Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy.HostImageLayoutTransitionInfo',
 -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlags',
--- 'Vulkan.Core10.OtherTypes.ImageMemoryBarrier',
+-- 'Vulkan.Core10.CommandBufferBuilding.ImageMemoryBarrier',
 -- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.ImageMemoryBarrier2',
 -- 'ImageViewCreateInfo',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdClearColorImage',
@@ -584,23 +595,38 @@
 -- 'Vulkan.Extensions.VK_EXT_image_sliced_view_of_3d.ImageViewSlicedCreateInfoEXT'
 -- to the @pNext@ chain.
 --
+-- If @image@’s format is
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-multiplanar multi-planar>
+-- and @aspectMask@ is one of
+-- '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', the
+-- /view format/ is the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-compatible-planes compatible format for the plane>.
+-- Otherwise the /view format/ is the @format@ used to create @image@.
+--
 -- 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://registry.khronos.org/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://registry.khronos.org/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.
+-- flag, @format@ /can/ be set to a
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-compatibility-classes format that is compatible>
+-- with the /view format/. If the image was not created with
+-- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_MUTABLE_FORMAT_BIT',
+-- @format@ /must/ equal the /view format/.
 --
+-- When creating a single-plane view of a
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-multiplanar multi-planar image>,
+-- @width@ and @height@ /must/ be derived from the multi-planar image’s
+-- dimensions in the manner listed for
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-compatible-planes plane compatibility>
+-- for the plane.
+--
+-- 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.
+--
 -- If @image@ was created with a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar>
--- format, and the image view’s @aspectMask@ is one of
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-multiplanar multi-planar format>,
+-- and the image view’s @aspectMask@ is one of
 -- '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', the
@@ -615,14 +641,14 @@
 -- written or 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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#fundamentals-fixedfpconv Conversion from Normalized Fixed-Point to Floating-Point>.
+-- <https://registry.khronos.org/vulkan/specs/latest/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
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#formats-size-compatibility size-compatible>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-size-compatibility size-compatible>
 -- with the image’s format. 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.
@@ -630,71 +656,29 @@
 -- The 'ComponentMapping' @components@ member describes a remapping from
 -- components of the image to components of the vector returned by shader
 -- image instructions. This remapping /must/ be the identity swizzle for
--- storage image descriptors, input attachment descriptors, framebuffer
--- attachments, and any 'Vulkan.Core10.Handles.ImageView' used with a
--- combined image sampler that enables
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>.
+-- any 'Vulkan.Core10.Handles.ImageView' used with a combined image sampler
+-- that enables
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,
+-- input attachment descriptors, framebuffer attachments, and storage image
+-- descriptors.
 --
--- If the image view is to be used with a sampler which supports
--- <https://registry.khronos.org/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
+-- Image views with
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion formats that require YCBCR conversion>
+-- or
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-external-android-hardware-buffer-external-formats external formats>
+-- /must/ be created with a
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionInfo'
--- included in the @pNext@ chain of 'ImageViewCreateInfo'. Conversely, if a
--- 'Vulkan.Core11.Handles.SamplerYcbcrConversion' object is passed to
--- 'createImageView', an identically defined
--- 'Vulkan.Core11.Handles.SamplerYcbcrConversion' object /must/ be used
--- when sampling the image.
---
--- If the image has a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar>
--- @format@, @subresourceRange.aspectMask@ is
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT', and
--- @usage@ includes
--- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT', then
--- the @format@ /must/ be identical to the image @format@ and the sampler
--- to be used with the image view /must/ enable
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>.
---
--- When such an image is used in a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#video-coding video coding>
--- operation, the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
+-- structure in the @pNext@ chain to be used with sampling. Any image view
+-- created with a
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionInfo'
+-- structure in the @pNext@ chain /must/ only be sampled using a sampler
+-- with an identically defined
+-- 'Vulkan.Core11.Handles.SamplerYcbcrConversion'. When used in a
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#video-coding video coding>
+-- operation, the specified
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
 -- has no effect.
 --
--- If @image@ was created with the
--- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_MUTABLE_FORMAT_BIT'
--- and the image has a
--- <https://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/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
--- plane, and these coordinates access the same memory locations as the
--- (/ucolor/, /vcolor/) unnormalized coordinates of the color aspect for
--- which chroma reconstruction operations operate on the same (/uplane/,
--- /vplane/) or (/iplane/, /jplane/) coordinates.
---
 -- +----------------------------------------------------------------+-----------------------------------------------+
 -- | Image View Type                                                | Compatible Image Types                        |
 -- +================================================================+===============================================+
@@ -729,7 +713,7 @@
 --     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY'
 --
 -- -   #VUID-VkImageViewCreateInfo-viewType-01004# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-imageCubeArray imageCubeArray>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-imageCubeArray imageCubeArray>
 --     feature is not enabled, @viewType@ /must/ not be
 --     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY'
 --
@@ -761,33 +745,63 @@
 --     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D_ARRAY'
 --
 -- -   #VUID-VkImageViewCreateInfo-image-04441# @image@ /must/ have been
---     created with a @usage@ value containing at least one of the usages
---     defined in the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#valid-imageview-imageusage valid image usage>
---     list for image views
+--     created with a @usage@ value containing at least one of the
+--     following:
 --
+--     -   'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT'
+--
+--     -   'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_STORAGE_BIT'
+--
+--     -   'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT'
+--
+--     -   'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'
+--
+--     -   'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT'
+--
+--     -   'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT'
+--
+--     -   'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
+--
+--     -   'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT'
+--
+--     -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR>
+--
+--     -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR>
+--
+--     -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR>
+--
+--     -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR>
+--
+--     -   'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLE_WEIGHT_BIT_QCOM'
+--
+--     -   'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLE_BLOCK_MATCH_BIT_QCOM'
+--
+--     -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR>
+--
+--     -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR>
+--
 -- -   #VUID-VkImageViewCreateInfo-None-02273# The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-view-format-features format features>
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-view-format-features format features>
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-view-format-features format features>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-image-view-format-features format features>
 --     /must/ contain
 --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_IMAGE_BIT'
 --
 -- -   #VUID-VkImageViewCreateInfo-usage-08931# If @usage@ contains
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT',
 --     then the image view’s
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-view-format-features format features>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-image-view-format-features format features>
 --     /must/ contain
 --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BIT'
 --     or
@@ -796,84 +810,82 @@
 -- -   #VUID-VkImageViewCreateInfo-usage-02277# If @usage@ contains
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT',
 --     then the image view’s
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-view-format-features format features>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-image-view-format-features format features>
 --     /must/ contain
 --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT'
 --
--- -   #VUID-VkImageViewCreateInfo-image-08333# If @image@ was created with
---     @VK_IMAGE_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR@ and @usage@
---     contains @VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR@, then the image
---     view’s
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-view-format-features format features>
---     /must/ contain @VK_FORMAT_FEATURE_VIDEO_DECODE_OUTPUT_BIT_KHR@
+-- -   #VUID-VkImageViewCreateInfo-image-08333# If @usage@ contains
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR>,
+--     then the image view’s
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-image-view-format-features format features>
+--     /must/ contain
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatFeatureFlagBits VK_FORMAT_FEATURE_VIDEO_DECODE_OUTPUT_BIT_KHR>
 --
--- -   #VUID-VkImageViewCreateInfo-image-08334# If @image@ was created with
---     @VK_IMAGE_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR@ and @usage@
---     contains @VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR@, then the image
---     view’s
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-view-format-features format features>
---     /must/ contain @VK_FORMAT_FEATURE_VIDEO_DECODE_DPB_BIT_KHR@
+-- -   #VUID-VkImageViewCreateInfo-image-08334# If @usage@ contains
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR>,
+--     then the image view’s
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-image-view-format-features format features>
+--     /must/ contain
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatFeatureFlagBits VK_FORMAT_FEATURE_VIDEO_DECODE_DPB_BIT_KHR>
 --
--- -   #VUID-VkImageViewCreateInfo-image-08335# If @image@ was created with
---     @VK_IMAGE_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR@, then @usage@
---     /must/ not include @VK_IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR@
+-- -   #VUID-VkImageViewCreateInfo-image-08335# @usage@ /must/ not include
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR>
 --
--- -   #VUID-VkImageViewCreateInfo-image-08336# If @image@ was created with
---     @VK_IMAGE_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR@ and @usage@
---     contains @VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR@, then the image
---     view’s
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-view-format-features format features>
---     /must/ contain @VK_FORMAT_FEATURE_VIDEO_ENCODE_INPUT_BIT_KHR@
+-- -   #VUID-VkImageViewCreateInfo-image-08336# If @usage@ contains
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR>,
+--     then the image view’s
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-image-view-format-features format features>
+--     /must/ contain
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatFeatureFlagBits VK_FORMAT_FEATURE_VIDEO_ENCODE_INPUT_BIT_KHR>
 --
--- -   #VUID-VkImageViewCreateInfo-image-08337# If @image@ was created with
---     @VK_IMAGE_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR@ and @usage@
---     contains @VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR@, then the image
---     view’s
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-view-format-features format features>
---     /must/ contain @VK_FORMAT_FEATURE_VIDEO_ENCODE_DPB_BIT_KHR@
+-- -   #VUID-VkImageViewCreateInfo-image-08337# If @usage@ contains
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR>,
+--     then the image view’s
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-image-view-format-features format features>
+--     /must/ contain
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatFeatureFlagBits VK_FORMAT_FEATURE_VIDEO_ENCODE_DPB_BIT_KHR>
 --
--- -   #VUID-VkImageViewCreateInfo-image-08338# If @image@ was created with
---     @VK_IMAGE_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR@, then @usage@
---     /must/ not include @VK_IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR@
+-- -   #VUID-VkImageViewCreateInfo-image-08338# @usage@ /must/ not include
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR>
 --
 -- -   #VUID-VkImageViewCreateInfo-usage-10259# If @usage@ contains
---     @VK_IMAGE_USAGE_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR@, then
---     the image view’s
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-view-format-features format features>
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR>,
+--     then the image view’s
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-image-view-format-features format features>
 --     /must/ contain
---     @VK_FORMAT_FEATURE_2_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR@
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatFeatureFlagBits2KHR VK_FORMAT_FEATURE_2_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR>
 --
 -- -   #VUID-VkImageViewCreateInfo-usage-10260# If @usage@ contains
---     @VK_IMAGE_USAGE_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR@, then the image
---     view’s
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-view-format-features format features>
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR>,
+--     then the image view’s
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-image-view-format-features format features>
 --     /must/ contain
---     @VK_FORMAT_FEATURE_2_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR@
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatFeatureFlagBits2KHR VK_FORMAT_FEATURE_2_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR>
 --
 -- -   #VUID-VkImageViewCreateInfo-usage-08932# If @usage@ contains
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT',
 --     and any of the following is true:
 --
 --     -   the
---         <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-externalFormatResolve externalFormatResolve>
+--         <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-externalFormatResolve externalFormatResolve>
 --         feature is not enabled
 --
 --     -   the
---         <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-nullColorAttachmentWithExternalFormatResolve nullColorAttachmentWithExternalFormatResolve>
+--         <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-nullColorAttachmentWithExternalFormatResolve nullColorAttachmentWithExternalFormatResolve>
 --         property is 'Vulkan.Core10.FundamentalTypes.FALSE'
 --
 --     -   @image@ was created with an
 --         'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
 --         value of 0
 --
---     then the image view’s
---     <https://registry.khronos.org/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
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT'
---     or
---     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV'
+--         then the image view’s
+--         <https://registry.khronos.org/vulkan/specs/latest/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
+--         'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT'
+--         or
+--         'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV'
 --
 -- -   #VUID-VkImageViewCreateInfo-subresourceRange-01478#
 --     @subresourceRange.baseMipLevel@ /must/ be less than the @mipLevels@
@@ -888,9 +900,9 @@
 --     'Vulkan.Core10.Image.ImageCreateInfo' when @image@ was created
 --
 -- -   #VUID-VkImageViewCreateInfo-image-02571# If @image@ was created with
---     @usage@ containing
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT',
---     @subresourceRange.levelCount@ /must/ be @1@
+--     the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT'
+--     usage flag set, @subresourceRange.levelCount@ /must/ be @1@
 --
 -- -   #VUID-VkImageViewCreateInfo-image-06724# If @image@ is not a 3D
 --     image created with
@@ -929,7 +941,7 @@
 --     computed from @baseMipLevel@ and @extent.depth@ specified in
 --     'Vulkan.Core10.Image.ImageCreateInfo' when @image@ was created,
 --     according to the formula defined in
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-mip-level-sizing Image Mip Level Sizing>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-image-mip-level-sizing Image Mip Level Sizing>
 --
 -- -   #VUID-VkImageViewCreateInfo-subresourceRange-02725# If
 --     @subresourceRange.layerCount@ is not
@@ -945,7 +957,7 @@
 --     @baseMipLevel@ and @extent.depth@ specified in
 --     'Vulkan.Core10.Image.ImageCreateInfo' when @image@ was created,
 --     according to the formula defined in
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-mip-level-sizing Image Mip Level Sizing>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-image-mip-level-sizing Image Mip Level Sizing>
 --
 -- -   #VUID-VkImageViewCreateInfo-image-01761# If @image@ was created with
 --     the
@@ -953,17 +965,18 @@
 --     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://registry.khronos.org/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#formats-compatibility-classes Format Compatibility Classes>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-multiplanar multi-planar format>,
+--     @format@ /must/ be compatible with the @format@ used to create
+--     @image@, as defined in
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-compatibility-classes Format Compatibility Classes>
 --
 -- -   #VUID-VkImageViewCreateInfo-image-01583# If @image@ was created with
 --     the
 --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT'
 --     flag, @format@ /must/ be compatible with, or /must/ be an
---     uncompressed format that is size-compatible with, the @format@ used
---     to create @image@
+--     uncompressed format that is
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-size-compatibility size-compatible>
+--     with, the @format@ used to create @image@
 --
 -- -   #VUID-VkImageViewCreateInfo-image-07072# If @image@ was created with
 --     the
@@ -975,7 +988,7 @@
 --     the
 --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT'
 --     flag, the
---     'Vulkan.Extensions.VK_KHR_maintenance6.PhysicalDeviceMaintenance6PropertiesKHR'::@blockTexelViewCompatibleMultipleLayers@
+--     'Vulkan.Core14.Promoted_From_VK_KHR_maintenance6.PhysicalDeviceMaintenance6Properties'::@blockTexelViewCompatibleMultipleLayers@
 --     property is not 'Vulkan.Core10.FundamentalTypes.TRUE', and @format@
 --     is a non-compressed format, then the @layerCount@ member of
 --     @subresourceRange@ /must/ be @1@
@@ -993,30 +1006,34 @@
 --     the
 --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_MUTABLE_FORMAT_BIT'
 --     flag, if the @format@ of the @image@ is a
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar>
---     format, and if @subresourceRange.aspectMask@ is one of the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#formats-planes-image-aspect multi-planar aspect mask>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-multiplanar multi-planar format>,
+--     and if @subresourceRange.aspectMask@ is one of the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-multiplanar-image-aspect multi-planar aspect mask>
 --     bits, 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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#formats-compatible-planes>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-compatible-planes>
 --
 -- -   #VUID-VkImageViewCreateInfo-subresourceRange-07818#
 --     @subresourceRange.aspectMask@ /must/ only have at most 1 valid
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#formats-planes-image-aspect multi-planar aspect mask>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-multiplanar-image-aspect multi-planar aspect mask>
 --     bit
 --
--- -   #VUID-VkImageViewCreateInfo-image-01762# If @image@ was not created
+-- -   #VUID-VkImageViewCreateInfo-image-12397# 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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar>
---     format and if @subresourceRange.aspectMask@ is
+--     flag @format@ /must/ be identical to the @format@ used to create
+--     @image@
+--
+-- -   #VUID-VkImageViewCreateInfo-format-12398# If the @format@ of the
+--     @image@ is a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-multiplanar multi-planar format>
+--     and @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 view
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#image-views-requiring-sampler-ycbcr-conversion requires a sampler Y′CBCR conversion>
+-- -   #VUID-VkImageViewCreateInfo-format-06415# If the image view’s format
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion requires a sampler Y′CBCR conversion>
 --     and @usage@ contains
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT',
 --     then the @pNext@ chain /must/ include a
@@ -1038,7 +1055,7 @@
 --     structure with a @conversion@ value other than
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE', all members of
 --     @components@ /must/ have the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-views-identity-mappings identity swizzle>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-image-views-identity-mappings identity swizzle>
 --
 -- -   #VUID-VkImageViewCreateInfo-pNext-06658# If the @pNext@ chain
 --     includes a
@@ -1049,84 +1066,90 @@
 --     'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionCreateInfo'::@format@
 --
 -- -   #VUID-VkImageViewCreateInfo-image-01020# If @image@ is non-sparse
---     then it /must/ be bound completely and contiguously to a single
+--     then the image or each specified /disjoint/ plane /must/ be bound
+--     completely and contiguously to a single
 --     'Vulkan.Core10.Handles.DeviceMemory' object
 --
 -- -   #VUID-VkImageViewCreateInfo-subResourceRange-01021# @viewType@
 --     /must/ be compatible with the type of @image@ as shown in the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-views-compatibility view type compatibility table>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-image-views-compatibility view type compatibility table>
 --
 -- -   #VUID-VkImageViewCreateInfo-image-02399# If @image@ has an
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-external-android-hardware-buffer-external-formats Android external format>,
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-external-android-hardware-buffer-external-formats Android external format>,
 --     @format@ /must/ be 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
 --
 -- -   #VUID-VkImageViewCreateInfo-image-02400# If @image@ has an
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-external-android-hardware-buffer-external-formats Android external format>,
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-external-android-hardware-buffer-external-formats Android 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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-external-android-hardware-buffer-external-formats Android external format>,
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-external-android-hardware-buffer-external-formats Android external format>,
 --     all members of @components@ /must/ be the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-views-identity-mappings identity swizzle>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-image-views-identity-mappings identity swizzle>
 --
 -- -   #VUID-VkImageViewCreateInfo-image-08957# If @image@ has an
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-external-screen-buffer-external-formats QNX Screen external format>,
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-external-screen-buffer-external-formats QNX Screen external format>,
 --     @format@ /must/ be 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
 --
 -- -   #VUID-VkImageViewCreateInfo-image-08958# If @image@ has an
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-external-screen-buffer-external-formats QNX Screen external format>,
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-external-screen-buffer-external-formats QNX Screen 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-08959# If @image@ has an
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-external-screen-buffer-external-formats QNX Screen external format>,
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-external-screen-buffer-external-formats QNX Screen external format>,
 --     all members of @components@ /must/ be the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-views-identity-mappings identity swizzle>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-image-views-identity-mappings identity swizzle>
 --
 -- -   #VUID-VkImageViewCreateInfo-image-02086# If @image@ was created with
---     @usage@ containing
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR',
---     @viewType@ /must/ be
+--     the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
+--     usage flag set, @viewType@ /must/ be
 --     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D' or
 --     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D_ARRAY'
 --
 -- -   #VUID-VkImageViewCreateInfo-image-02087# If the
---     <https://registry.khronos.org/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'
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     feature is enabled, and @image@ was created with the
+--     'Vulkan.Extensions.VK_NV_shading_rate_image.IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV'
+--     usage flag set, @format@ /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT'
 --
--- -   #VUID-VkImageViewCreateInfo-usage-04550# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate>
---     feature is enabled, and the @usage@ for the image view includes
+-- -   #VUID-VkImageViewCreateInfo-attachmentFragmentShadingRate-12386# If
+--     the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate>
+--     feature is not enabled, the @usage@ for the image view /must/ not
+--     contain
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
+--
+-- -   #VUID-VkImageViewCreateInfo-usage-04550# If 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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-view-format-features format features>
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate>
---     feature is enabled, the @usage@ for the image view includes
+-- -   #VUID-VkImageViewCreateInfo-usage-04551# If the @usage@ for the
+--     image view includes
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR',
 --     and
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-layeredShadingRateAttachments layeredShadingRateAttachments>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-layeredShadingRateAttachments layeredShadingRateAttachments>
 --     is 'Vulkan.Core10.FundamentalTypes.FALSE',
 --     @subresourceRange.layerCount@ /must/ be @1@
 --
 -- -   #VUID-VkImageViewCreateInfo-flags-02572# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-fragmentDensityMapDynamic fragmentDensityMapDynamic>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-fragmentDensityMapDynamic fragmentDensityMapDynamic>
 --     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 the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-fragmentDensityMapDeferred fragmentDensityMapDeferred>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-fragmentDensityMapDeferred fragmentDensityMapDeferred>
 --     feature is not enabled, @flags@ /must/ not contain
 --     'Vulkan.Core10.Enums.ImageViewCreateFlagBits.IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT'
 --
@@ -1138,23 +1161,24 @@
 -- -   #VUID-VkImageViewCreateInfo-image-03569# If @image@ was created with
 --     @flags@ containing
 --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT'
---     and @usage@ containing
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT',
---     @subresourceRange.layerCount@ /must/ be less than or equal to
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxSubsampledArrayLayers ::maxSubsampledArrayLayers>
+--     and the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT'
+--     usage flag set, @subresourceRange.layerCount@ /must/ be less than or
+--     equal to
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxSubsampledArrayLayers ::maxSubsampledArrayLayers>
 --
 -- -   #VUID-VkImageViewCreateInfo-invocationMask-04993# If the
---     <https://registry.khronos.org/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'
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-invocationMask invocationMask>
+--     feature is enabled, and @image@ was created with the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INVOCATION_MASK_BIT_HUAWEI'
+--     usage flag set, @format@ /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT'
 --
 -- -   #VUID-VkImageViewCreateInfo-flags-04116# If @flags@ does not contain
---     'Vulkan.Core10.Enums.ImageViewCreateFlagBits.IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT'
---     and @image@ was created with @usage@ containing
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT',
---     its @flags@ /must/ not contain any of
+--     'Vulkan.Core10.Enums.ImageViewCreateFlagBits.IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT',
+--     and @image@ was created with the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT'
+--     usage flag set, its @flags@ /must/ not contain any of
 --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_PROTECTED_BIT',
 --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_BINDING_BIT',
 --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_RESIDENCY_BIT',
@@ -1248,7 +1272,7 @@
 --     'Vulkan.Extensions.VK_KHR_portability_subset.PhysicalDevicePortabilitySubsetFeaturesKHR'::@imageViewFormatSwizzle@
 --     is 'Vulkan.Core10.FundamentalTypes.FALSE', all elements of
 --     @components@ /must/ have the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-views-identity-mappings identity swizzle>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-image-views-identity-mappings identity swizzle>
 --
 -- -   #VUID-VkImageViewCreateInfo-imageViewFormatReinterpretation-04466#
 --     If the @VK_KHR_portability_subset@ extension is enabled, and
@@ -1260,30 +1284,40 @@
 --     in @image@
 --
 -- -   #VUID-VkImageViewCreateInfo-image-04817# If @image@ was created with
---     @usage@ containing @VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR@,
---     @VK_IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR@, or
---     @VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR@, then the @viewType@
---     /must/ be 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D' or
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR>
+--     usage flag set,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR>,
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR>,
+--     then the @viewType@ /must/ be
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D' or
 --     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D_ARRAY'
 --
 -- -   #VUID-VkImageViewCreateInfo-image-04818# If @image@ was created with
---     @usage@ containing @VK_IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR@,
---     @VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR@, or
---     @VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR@, then the @viewType@
---     /must/ be 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D' or
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR>
+--     usage flag set,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR>,
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR>,
+--     then the @viewType@ /must/ be
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D' or
 --     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D_ARRAY'
 --
 -- -   #VUID-VkImageViewCreateInfo-image-10261# If @image@ was created with
---     @usage@ containing
---     @VK_IMAGE_USAGE_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR@ or
---     @VK_IMAGE_USAGE_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR@, then @viewType@
---     /must/ be 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D' or
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR>
+--     usage flags set, then @viewType@ /must/ be
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D' or
 --     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D_ARRAY'
 --
 -- -   #VUID-VkImageViewCreateInfo-flags-08106# If @flags@ includes
 --     'Vulkan.Core10.Enums.ImageViewCreateFlagBits.IMAGE_VIEW_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT',
 --     the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-descriptorBufferCaptureReplay descriptorBufferCaptureReplay>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-descriptorBufferCaptureReplay descriptorBufferCaptureReplay>
 --     feature /must/ be enabled
 --
 -- -   #VUID-VkImageViewCreateInfo-pNext-08107# If the @pNext@ chain
@@ -1302,15 +1336,15 @@
 --     includes
 --     'Vulkan.Extensions.VK_QCOM_image_processing.ImageViewSampleWeightCreateInfoQCOM'
 --     structure, then
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-textureSampleWeighted textureSampleWeighted>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-textureSampleWeighted textureSampleWeighted>
 --     feature /must/ be enabled
 --
 -- -   #VUID-VkImageViewCreateInfo-pNext-06945# If the @pNext@ chain
 --     includes
 --     'Vulkan.Extensions.VK_QCOM_image_processing.ImageViewSampleWeightCreateInfoQCOM'
---     structure, then @image@ /must/ have been created with @usage@
---     containing
+--     structure, then @image@ /must/ have been created with the
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLE_WEIGHT_BIT_QCOM'
+--     usage flag set
 --
 -- -   #VUID-VkImageViewCreateInfo-pNext-06946# If the @pNext@ chain
 --     includes
@@ -1401,12 +1435,26 @@
 --     structure then
 --     'Vulkan.Extensions.VK_QCOM_image_processing.ImageViewSampleWeightCreateInfoQCOM'::@filterSize.height@
 --     /must/ be less than or equal to
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-weightfilter-maxdimension ::maxWeightFilterDimension.height>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-weightfilter-maxdimension ::maxWeightFilterDimension.height>
 --
 -- -   #VUID-VkImageViewCreateInfo-subresourceRange-09594#
 --     @subresourceRange.aspectMask@ /must/ be valid for the @format@ the
 --     @image@ was created with
 --
+-- -   #VUID-VkImageViewCreateInfo-image-13357# If @image@ was created with
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_ALIAS_SINGLE_LAYER_DESCRIPTOR_BIT_KHR',
+--     @format@ /must/ not be a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-multiplanar multi-planar format>
+--
+-- -   #VUID-VkImageViewCreateInfo-None-12280# If Vulkan 1.3 is not
+--     supported and the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-ycbcr2plane444Formats ycbcr2plane444Formats>
+--     feature is not enabled, @format@ /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_G8_B8R8_2PLANE_444_UNORM',
+--     'Vulkan.Core10.Enums.Format.FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16',
+--     'Vulkan.Core10.Enums.Format.FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16',
+--     or 'Vulkan.Core10.Enums.Format.FORMAT_G16_B16R16_2PLANE_444_UNORM'
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-VkImageViewCreateInfo-sType-sType# @sType@ /must/ be
@@ -1426,8 +1474,8 @@
 --     'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionInfo'
 --
 -- -   #VUID-VkImageViewCreateInfo-sType-unique# The @sType@ value of each
---     struct in the @pNext@ chain /must/ be unique, with the exception of
---     structures of type
+--     structure in the @pNext@ chain /must/ be unique, with the exception
+--     of structures of type
 --     'Vulkan.Extensions.VK_EXT_metal_objects.ExportMetalObjectCreateInfoEXT'
 --
 -- -   #VUID-VkImageViewCreateInfo-flags-parameter# @flags@ /must/ be a
@@ -1455,7 +1503,9 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
 -- 'ComponentMapping', 'Vulkan.Core10.Enums.Format.Format',
--- 'Vulkan.Core10.Handles.Image', 'ImageSubresourceRange',
+-- 'Vulkan.Core10.Handles.Image',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_heap.ImageDescriptorInfoEXT',
+-- 'ImageSubresourceRange',
 -- 'Vulkan.Core10.Enums.ImageViewCreateFlagBits.ImageViewCreateFlags',
 -- 'Vulkan.Core10.Enums.ImageViewType.ImageViewType',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType', 'createImageView'
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
@@ -108,16 +108,20 @@
 --
 -- [<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'
 --
+--     -   '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_DEVICE_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -199,16 +203,20 @@
 --
 -- [<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'
 --
+--     -   '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_DEVICE_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -259,7 +267,7 @@
     layerName :: ByteString
   , -- | @specVersion@ is the Vulkan version the layer was written to, encoded as
     -- described in
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#extendingvulkan-coreversions-versionnumbers>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -85,6 +85,7 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_FUCHSIA_buffer_collection (ImportMemoryBufferCollectionFUCHSIA)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_external_memory_fd (ImportMemoryFdInfoKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_external_memory_host (ImportMemoryHostPointerInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_external_memory_metal (ImportMemoryMetalHandleInfoEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_external_memory_win32 (ImportMemoryWin32HandleInfoKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_external_memory_win32 (ImportMemoryWin32HandleInfoNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_FUCHSIA_external_memory (ImportMemoryZirconHandleInfoFUCHSIA)
@@ -92,6 +93,7 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_QNX_external_memory_screen_buffer (ImportScreenBufferInfoQNX)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_device_group (MemoryAllocateFlagsInfo)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation (MemoryDedicatedAllocateInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_tensors (MemoryDedicatedAllocateInfoTensorARM)
 import Vulkan.Core10.Enums.MemoryMapFlagBits (MemoryMapFlagBits(..))
 import Vulkan.Core10.Enums.MemoryMapFlagBits (MemoryMapFlags)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address (MemoryOpaqueCaptureAddressAllocateInfo)
@@ -143,7 +145,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxMemoryAllocationCount maxMemoryAllocationCount>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxMemoryAllocationCount maxMemoryAllocationCount>
 -- feature describes the number of allocations that /can/ exist
 -- simultaneously before encountering these internal limits.
 --
@@ -183,6 +185,16 @@
 -- into other heaps. The overallocation behavior /can/ be specified through
 -- the @VK_AMD_memory_overallocation_behavior@ extension.
 --
+-- If the @memoryTypeIndex@ belongs to a heap with the
+-- 'Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_TILE_MEMORY_BIT_QCOM'
+-- bit included in its properties, this allocation is backed by tile
+-- memory, which is an on device cache. Unlike other heaps, allocations out
+-- of the tile memory will always have a starting address at the start of
+-- the heap and its contents are aliased with all other
+-- 'Vulkan.Core10.Handles.DeviceMemory' objects bound to the same range
+-- while executing within the same
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-tile-heaps tile memory scope>.
+--
 -- If the
 -- 'Vulkan.Extensions.VK_EXT_pageable_device_local_memory.PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT'::@pageableDeviceLocalMemory@
 -- feature is enabled, memory allocations made from a heap that includes
@@ -227,7 +239,7 @@
 --     created from
 --
 -- -   #VUID-vkAllocateMemory-deviceCoherentMemory-02790# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-deviceCoherentMemory deviceCoherentMemory>
+--     <https://registry.khronos.org/vulkan/specs/latest/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'
@@ -237,6 +249,14 @@
 --     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxMemoryAllocationCount@
 --     device memory allocations currently allocated on the device
 --
+-- -   #VUID-vkAllocateMemory-tileMemoryHeap-10976# If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-tileMemoryHeap tileMemoryHeap>
+--     feature is not enabled, @pAllocateInfo->memoryTypeIndex@ /must/ not
+--     identify a memory type that corresponds to a
+--     'Vulkan.Core10.DeviceInitialization.MemoryHeap' with the
+--     'Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_TILE_MEMORY_BIT_QCOM'
+--     property
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-vkAllocateMemory-device-parameter# @device@ /must/ be a valid
@@ -252,6 +272,9 @@
 -- -   #VUID-vkAllocateMemory-pMemory-parameter# @pMemory@ /must/ be a
 --     valid pointer to a 'Vulkan.Core10.Handles.DeviceMemory' handle
 --
+-- -   #VUID-vkAllocateMemory-device-queuecount# The device /must/ have
+--     been created with at least @1@ queue
+--
 -- == Return Codes
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
@@ -260,14 +283,18 @@
 --
 -- [<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_INVALID_EXTERNAL_HANDLE'
 --
+--     -   'Vulkan.Extensions.VK_KHR_buffer_device_address.ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_INVALID_EXTERNAL_HANDLE'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Extensions.VK_KHR_buffer_device_address.ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -284,7 +311,7 @@
                   -- permitted by the implementation.
                   (MemoryAllocateInfo a)
                -> -- | @pAllocator@ controls host memory allocation as described in the
-                  -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                  -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
                   -- chapter.
                   ("allocator" ::: Maybe AllocationCallbacks)
                -> io (DeviceMemory)
@@ -345,14 +372,14 @@
 --
 -- How memory objects are bound to Images and Buffers is described in
 -- detail in the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-association Resource Memory Association>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-association Resource Memory Association>
 -- section.
 --
 -- If a memory object is mapped at the time it is freed, it is implicitly
 -- unmapped.
 --
 -- As described
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-device-unmap-does-not-flush below>,
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -394,7 +421,7 @@
            -> -- | @memory@ is the 'Vulkan.Core10.Handles.DeviceMemory' object to be freed.
               DeviceMemory
            -> -- | @pAllocator@ controls host memory allocation as described in the
-              -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+              -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
               -- chapter.
               ("allocator" ::: Maybe AllocationCallbacks)
            -> io ()
@@ -444,7 +471,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-submission-host-writes here>
+-- <https://registry.khronos.org/vulkan/specs/latest/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'
@@ -461,12 +488,12 @@
 --
 -- It is important for the application developer to become meticulously
 -- familiar with all of the mechanisms described in the chapter on
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization Synchronization and Cache Control>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization Synchronization and Cache Control>
 -- as they are crucial to maintaining memory access ordering.
 --
 -- Calling 'mapMemory' is equivalent to calling
--- 'Vulkan.Extensions.VK_KHR_map_memory2.mapMemory2KHR' with an empty
--- @pNext@ chain.
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_map_memory2.mapMemory2' with an
+-- empty @pNext@ chain.
 --
 -- == Valid Usage
 --
@@ -525,12 +552,16 @@
 --
 -- [<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_MEMORY_MAP_FAILED'
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_MEMORY_MAP_FAILED'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -599,8 +630,8 @@
 -- = Description
 --
 -- Calling 'unmapMemory' is equivalent to calling
--- 'Vulkan.Extensions.VK_KHR_map_memory2.unmapMemory2KHR' with an empty
--- @pNext@ chain and @flags@ set to zero.
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_map_memory2.unmapMemory2' with an
+-- empty @pNext@ chain and @flags@ set to zero.
 --
 -- == Valid Usage
 --
@@ -659,35 +690,31 @@
 -- 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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-available-and-visible memory domain operations>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-available-and-visible memory domain operations>
 -- using the 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_HOST_WRITE_BIT'
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-access-types access type>.
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-access-types access type>.
 --
 -- The first
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
 -- includes all host operations that happened-before it, as defined by the
 -- host memory model.
 --
--- Note
---
 -- Some systems allow writes that do not directly integrate with the host
 -- memory model; these have to be synchronized by the application manually.
 -- One example of this is non-temporal store instructions on x86; to ensure
 -- these happen-before submission, applications should call @_mm_sfence()@.
 --
 -- The second
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
 -- is empty.
 --
 -- The first
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
 -- includes host writes to the specified memory ranges.
 --
--- Note
---
 -- When a host write to a memory location is made available in this way,
 -- each whole aligned set of
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-nonCoherentAtomSize nonCoherentAtomSize>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-nonCoherentAtomSize nonCoherentAtomSize>
 -- bytes that the memory location exists in will also be made available as
 -- if they were written by the host. For example, with a
 -- @nonCoherentAtomSize@ of 128, if an application writes to the first byte
@@ -698,7 +725,7 @@
 -- races.
 --
 -- The second
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
 -- is empty.
 --
 -- Unmapping non-coherent memory does not implicitly flush the host mapped
@@ -720,10 +747,14 @@
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -774,21 +805,19 @@
 -- 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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-access-types access types>,
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
 --
 -- The first
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
 -- includes all host operations that happened-before it, as defined by the
 -- host memory model.
 --
--- Note
---
 -- This function does not synchronize with device operations directly -
 -- other host
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization synchronization operations>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization synchronization operations>
 -- that depend on device operations such as
 -- 'Vulkan.Core10.Fence.waitForFences' must be executed beforehand. So for
 -- any non-coherent device write to be made visible to the host, there has
@@ -799,30 +828,28 @@
 -- 2.  Device memory barrier including host reads in its second scope
 --
 -- 3.  Signal on the device (e.g. a
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-fences-signaling fence signal operation>)
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-fences-signaling fence signal operation>)
 --
 -- 4.  Wait on the host (e.g. 'Vulkan.Core10.Fence.waitForFences')
 --
 -- 5.  'invalidateMappedMemoryRanges'
 --
 -- The second
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
 -- includes all host operations that happen-after it, as defined by the
 -- host memory model.
 --
 -- The first
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
 -- is empty.
 --
 -- The second
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
 -- includes host reads to the specified memory ranges.
 --
--- Note
---
 -- When a device write to a memory location is made visible to the host in
 -- this way, each whole aligned set of
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-nonCoherentAtomSize nonCoherentAtomSize>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-nonCoherentAtomSize nonCoherentAtomSize>
 -- bytes that the memory location exists in will also be made visible as if
 -- they were written by the device. For example, with a
 -- @nonCoherentAtomSize@ of 128, if an application writes to the first byte
@@ -842,10 +869,14 @@
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -972,6 +1003,9 @@
 -- -   'Vulkan.Extensions.VK_QNX_external_memory_screen_buffer.ImportScreenBufferInfoQNX'
 --     with a non-@NULL@ @buffer@ value
 --
+-- -   'Vulkan.Extensions.VK_EXT_external_memory_metal.ImportMemoryMetalHandleInfoEXT'
+--     with a non-zero @handleType@ value
+--
 -- If the parameters define an import operation and the external handle
 -- type is
 -- 'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT',
@@ -981,6 +1015,12 @@
 -- @allocationSize@ is ignored. The implementation /must/ query the size of
 -- these allocations from the OS.
 --
+-- If the parameters define an import operation and the external handle
+-- type is
+-- 'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_MTLTEXTURE_BIT_EXT',
+-- @allocationSize@ is ignored. The implementation /must/ query the size of
+-- these allocations from the OS.
+--
 -- Whether device memory objects constructed via a memory import operation
 -- hold a reference to their payload depends on the properties of the
 -- handle type used to perform the import, as defined below for each valid
@@ -1030,12 +1070,12 @@
 --
 -- -   #VUID-VkMemoryAllocateInfo-allocationSize-07897# If the parameters
 --     do not define an
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-import-operation import or export operation>,
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-import-operation import or export operation>,
 --     @allocationSize@ /must/ be greater than @0@
 --
 -- -   #VUID-VkMemoryAllocateInfo-None-06657# The parameters /must/ not
 --     define more than one
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-import-operation import operation>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-import-operation import operation>
 --
 -- -   #VUID-VkMemoryAllocateInfo-allocationSize-07899# If the parameters
 --     define an export operation and the handle type is not
@@ -1142,6 +1182,20 @@
 --     structure with either its @image@ or @buffer@ member set to a value
 --     other than 'Vulkan.Core10.APIConstants.NULL_HANDLE'
 --
+-- -   #VUID-VkMemoryAllocateInfo-pNext-09858# If the @pNext@ chain
+--     includes a
+--     'Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExportMemoryAllocateInfo'
+--     structure, and any of the handle types specified in
+--     'Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExportMemoryAllocateInfo'::@handleTypes@
+--     require a dedicated allocation, as reported by
+--     'Vulkan.Extensions.VK_ARM_tensors.getPhysicalDeviceExternalTensorPropertiesARM'
+--     in
+--     'Vulkan.Extensions.VK_ARM_tensors.ExternalTensorPropertiesARM'::@externalMemoryProperties.externalMemoryFeatures@,
+--     the @pNext@ chain /must/ include a
+--     'Vulkan.Extensions.VK_ARM_tensors.MemoryDedicatedAllocateInfoTensorARM'
+--     structure with its @tensor@ member set to a value other than
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
 -- -   #VUID-VkMemoryAllocateInfo-pNext-00640# If the @pNext@ chain
 --     includes a
 --     'Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExportMemoryAllocateInfo'
@@ -1207,7 +1261,7 @@
 --     'Vulkan.Extensions.VK_KHR_external_memory_fd.getMemoryFdPropertiesKHR'
 --
 -- -   #VUID-VkMemoryAllocateInfo-memoryTypeIndex-01872# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-protectedMemory protectedMemory>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-protectedMemory protectedMemory>
 --     feature is not enabled, the 'MemoryAllocateInfo'::@memoryTypeIndex@
 --     /must/ not indicate a memory type that reports
 --     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_PROTECTED_BIT'
@@ -1354,7 +1408,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-external-android-hardware-buffer-usage AHardwareBuffer Usage Equivalence>,
+--     <https://registry.khronos.org/vulkan/specs/latest/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@
@@ -1386,7 +1440,7 @@
 --     'Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo'
 --     with @image@ that is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
 --     the QNX Screen’s buffer /must/ be a
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-external-screen-buffer-validity valid QNX Screen buffer>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-external-screen-buffer-validity valid QNX Screen buffer>
 --
 -- -   #VUID-VkMemoryAllocateInfo-pNext-08945# If the parameters define an
 --     import operation, the external handle is an QNX Screen buffer, and
@@ -1411,6 +1465,30 @@
 --     'Vulkan.Extensions.VK_QNX_external_memory_screen_buffer.Screen_buffer'
 --     /must/ be identical
 --
+-- -   #VUID-VkMemoryAllocateInfo-pNext-10395# If the parameters define an
+--     import operation and the external handle is a
+--     'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_MTLTEXTURE_BIT_EXT',
+--     then @pNext@ /must/ include a
+--     'Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo'
+--     with @image@ that is not 'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-VkMemoryAllocateInfo-pNext-10396# If the parameters define an
+--     import operation, the external handle is a Metal MTLTexture, and the
+--     @pNext@ chain includes a
+--     'Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo'
+--     structure with @image@ that is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', the width, height, array
+--     layer dimensions, and mipmap levels of @image@ and the Metal
+--     MTLTexture’s /must/ be identical
+--
+-- -   #VUID-VkMemoryAllocateInfo-pNext-10397# If the parameters define an
+--     import operation, the external handle is a Metal MTLTexture, and the
+--     @pNext@ chain includes a
+--     'Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo'
+--     structure with @image@ that is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', @allocationSize@ /must/ be
+--     @0@
+--
 -- -   #VUID-VkMemoryAllocateInfo-opaqueCaptureAddress-03329# If
 --     'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.MemoryOpaqueCaptureAddressAllocateInfo'::@opaqueCaptureAddress@
 --     is not zero,
@@ -1423,7 +1501,7 @@
 --     includes
 --     'Vulkan.Core11.Enums.MemoryAllocateFlagBits.MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT',
 --     the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-bufferDeviceAddressCaptureReplay bufferDeviceAddressCaptureReplay>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-bufferDeviceAddressCaptureReplay bufferDeviceAddressCaptureReplay>
 --     feature /must/ be enabled
 --
 -- -   #VUID-VkMemoryAllocateInfo-flags-03331# If
@@ -1431,7 +1509,7 @@
 --     includes
 --     'Vulkan.Core11.Enums.MemoryAllocateFlagBits.MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT',
 --     the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-bufferDeviceAddress bufferDeviceAddress>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-bufferDeviceAddress bufferDeviceAddress>
 --     feature /must/ be enabled
 --
 -- -   #VUID-VkMemoryAllocateInfo-pNext-03332# If the @pNext@ chain
@@ -1491,20 +1569,23 @@
 --     'Vulkan.Extensions.VK_FUCHSIA_buffer_collection.ImportMemoryBufferCollectionFUCHSIA',
 --     'Vulkan.Extensions.VK_KHR_external_memory_fd.ImportMemoryFdInfoKHR',
 --     'Vulkan.Extensions.VK_EXT_external_memory_host.ImportMemoryHostPointerInfoEXT',
+--     'Vulkan.Extensions.VK_EXT_external_memory_metal.ImportMemoryMetalHandleInfoEXT',
 --     'Vulkan.Extensions.VK_KHR_external_memory_win32.ImportMemoryWin32HandleInfoKHR',
 --     'Vulkan.Extensions.VK_NV_external_memory_win32.ImportMemoryWin32HandleInfoNV',
 --     'Vulkan.Extensions.VK_FUCHSIA_external_memory.ImportMemoryZirconHandleInfoFUCHSIA',
 --     'Vulkan.Extensions.VK_EXT_metal_objects.ImportMetalBufferInfoEXT',
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImportNativeBufferInfoOHOS VkImportNativeBufferInfoOHOS>,
 --     'Vulkan.Extensions.VK_QNX_external_memory_screen_buffer.ImportScreenBufferInfoQNX',
 --     'Vulkan.Core11.Promoted_From_VK_KHR_device_group.MemoryAllocateFlagsInfo',
 --     'Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo',
+--     'Vulkan.Extensions.VK_ARM_tensors.MemoryDedicatedAllocateInfoTensorARM',
 --     'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.MemoryOpaqueCaptureAddressAllocateInfo',
 --     or
 --     'Vulkan.Extensions.VK_EXT_memory_priority.MemoryPriorityAllocateInfoEXT'
 --
 -- -   #VUID-VkMemoryAllocateInfo-sType-unique# The @sType@ value of each
---     struct in the @pNext@ chain /must/ be unique, with the exception of
---     structures of type
+--     structure in the @pNext@ chain /must/ be unique, with the exception
+--     of structures of type
 --     'Vulkan.Extensions.VK_EXT_metal_objects.ExportMetalObjectCreateInfoEXT'
 --
 -- = See Also
@@ -1535,6 +1616,7 @@
   getNext MemoryAllocateInfo{..} = next
   extends :: forall e b proxy. Typeable e => proxy e -> (Extends MemoryAllocateInfo e => b) -> Maybe b
   extends _ f
+    | Just Refl <- eqT @e @MemoryDedicatedAllocateInfoTensorARM = Just f
     | Just Refl <- eqT @e @ImportScreenBufferInfoQNX = Just f
     | Just Refl <- eqT @e @ImportMetalBufferInfoEXT = Just f
     | Just Refl <- eqT @e @ExportMetalObjectCreateInfoEXT = Just f
@@ -1545,6 +1627,7 @@
     | Just Refl <- eqT @e @ImportMemoryHostPointerInfoEXT = Just f
     | Just Refl <- eqT @e @MemoryDedicatedAllocateInfo = Just f
     | Just Refl <- eqT @e @MemoryAllocateFlagsInfo = Just f
+    | Just Refl <- eqT @e @ImportMemoryMetalHandleInfoEXT = Just f
     | Just Refl <- eqT @e @ImportMemoryFdInfoKHR = Just f
     | Just Refl <- eqT @e @ImportMemoryZirconHandleInfoFUCHSIA = Just f
     | Just Refl <- eqT @e @ExportMemoryWin32HandleInfoKHR = Just f
diff --git a/src/Vulkan/Core10/MemoryManagement.hs b/src/Vulkan/Core10/MemoryManagement.hs
--- a/src/Vulkan/Core10/MemoryManagement.hs
+++ b/src/Vulkan/Core10/MemoryManagement.hs
@@ -136,16 +136,39 @@
 --     @memoryTypeBits@ member of the 'MemoryRequirements' structure
 --     returned from a call to 'getBufferMemoryRequirements' with @buffer@
 --
--- -   #VUID-vkBindBufferMemory-memoryOffset-01036# @memoryOffset@ /must/
---     be an integer multiple of the @alignment@ member of the
---     'MemoryRequirements' structure returned from a call to
---     'getBufferMemoryRequirements' with @buffer@
+-- -   #VUID-vkBindBufferMemory-None-10739# If @memory@ was not allocated
+--     from a memory heap with the
+--     'Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_TILE_MEMORY_BIT_QCOM'
+--     property set, @memoryOffset@ /must/ be an integer multiple of the
+--     @alignment@ member of the 'MemoryRequirements' structure returned
+--     from a call to 'getBufferMemoryRequirements' with @buffer@
 --
--- -   #VUID-vkBindBufferMemory-size-01037# The @size@ member of the
---     'MemoryRequirements' structure returned from a call to
---     'getBufferMemoryRequirements' with @buffer@ /must/ be less than or
---     equal to the size of @memory@ minus @memoryOffset@
+-- -   #VUID-vkBindBufferMemory-memory-10740# If @memory@ was allocated
+--     from a memory heap with the
+--     'Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_TILE_MEMORY_BIT_QCOM'
+--     property set, @memoryOffset@ /must/ be an integer multiple of the
+--     @alignment@ member of the
+--     'Vulkan.Extensions.VK_QCOM_tile_memory_heap.TileMemoryRequirementsQCOM'
+--     structure returned from a call to 'getBufferMemoryRequirements' with
+--     @buffer@
 --
+-- -   #VUID-vkBindBufferMemory-None-10741# If @memory@ was not allocated
+--     from a memory heap with the
+--     'Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_TILE_MEMORY_BIT_QCOM'
+--     property set, @size@ member of the 'MemoryRequirements' structure
+--     returned from a call to 'getBufferMemoryRequirements' with @buffer@
+--     /must/ be less than or equal to the size of @memory@ minus
+--     @memoryOffset@
+--
+-- -   #VUID-vkBindBufferMemory-memory-10742# If @memory@ was allocated
+--     from a memory heap with the
+--     'Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_TILE_MEMORY_BIT_QCOM'
+--     property set, @size@ member of the
+--     'Vulkan.Extensions.VK_QCOM_tile_memory_heap.TileMemoryRequirementsQCOM'
+--     structure returned from a call to 'getBufferMemoryRequirements' with
+--     @buffer@ /must/ be less than or equal to the size of @memory@ minus
+--     @memoryOffset@
+--
 -- -   #VUID-vkBindBufferMemory-buffer-01444# If @buffer@ requires a
 --     dedicated allocation (as reported by
 --     'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.getBufferMemoryRequirements2'
@@ -166,6 +189,14 @@
 --     'Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo'::@buffer@,
 --     and @memoryOffset@ /must/ be zero
 --
+-- -   #VUID-vkBindBufferMemory-memory-10925# If the
+--     'Vulkan.Core10.Memory.MemoryAllocateInfo' provided when @memory@ was
+--     allocated included a
+--     'Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo'
+--     structure in its @pNext@ chain,
+--     'Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo'::@image@
+--     /must/ have been 'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
 -- -   #VUID-vkBindBufferMemory-None-01898# If @buffer@ was created with
 --     the
 --     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT'
@@ -225,7 +256,7 @@
 --     'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.PhysicalDeviceBufferDeviceAddressFeatures'::@bufferDeviceAddress@
 --     feature is enabled and @buffer@ was created with the
 --     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT'
---     bit set, @memory@ /must/ have been allocated with the
+--     usage flag set, @memory@ /must/ have been allocated with the
 --     'Vulkan.Core11.Enums.MemoryAllocateFlagBits.MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT'
 --     bit set
 --
@@ -259,6 +290,15 @@
 --     'Vulkan.Core11.Enums.MemoryAllocateFlagBits.MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT'
 --     bit set
 --
+-- -   #VUID-vkBindBufferMemory-buffer-11408# If the @buffer@ was created
+--     with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_DESCRIPTOR_HEAP_BIT_EXT'
+--     or
+--     'Vulkan.Core14.Enums.BufferUsageFlags2.BUFFER_USAGE_2_DESCRIPTOR_HEAP_BIT_EXT'
+--     bit set, @memory@ /must/ have been allocated with the
+--     'Vulkan.Core11.Enums.MemoryAllocateFlagBits.MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT'
+--     bit set
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-vkBindBufferMemory-device-parameter# @device@ /must/ be a
@@ -288,12 +328,16 @@
 --
 -- [<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.Extensions.VK_KHR_buffer_device_address.ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR'
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
 --
---     -   'Vulkan.Extensions.VK_KHR_buffer_device_address.ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -464,6 +508,14 @@
 --     parameter of the image being bound /must/ be equal to or smaller
 --     than the original image for which the allocation was created
 --
+-- -   #VUID-vkBindImageMemory-memory-10926# If the
+--     'Vulkan.Core10.Memory.MemoryAllocateInfo' provided when @memory@ was
+--     allocated included a
+--     'Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo'
+--     structure in its @pNext@ chain,
+--     'Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo'::@buffer@
+--     /must/ have been 'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
 -- -   #VUID-vkBindImageMemory-None-01901# If image was created with the
 --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_PROTECTED_BIT'
 --     bit set, the image /must/ be bound to a memory object allocated with
@@ -517,16 +569,16 @@
 --     'Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryImageCreateInfo'::@handleTypes@
 --     when @image@ was created
 --
--- -   #VUID-vkBindImageMemory-descriptorBufferCaptureReplay-08113# If the
---     @image@ was created with the
---     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT'
+-- -   #VUID-vkBindImageMemory-image-08113# If the @image@ was created with
+--     the
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_DESCRIPTOR_HEAP_CAPTURE_REPLAY_BIT_EXT'
 --     bit set, @memory@ /must/ have been allocated with the
 --     'Vulkan.Core11.Enums.MemoryAllocateFlagBits.MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT'
 --     bit set
 --
 -- -   #VUID-vkBindImageMemory-image-09202# If the @image@ was created with
 --     the
---     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT'
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_DESCRIPTOR_HEAP_CAPTURE_REPLAY_BIT_EXT'
 --     bit set, @memory@ /must/ have been allocated with the
 --     'Vulkan.Core11.Enums.MemoryAllocateFlagBits.MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT'
 --     bit set
@@ -541,16 +593,41 @@
 --     @memoryTypeBits@ member of the 'MemoryRequirements' structure
 --     returned from a call to 'getImageMemoryRequirements' with @image@
 --
--- -   #VUID-vkBindImageMemory-memoryOffset-01048# @memoryOffset@ /must/ be
---     an integer multiple of the @alignment@ member of the
---     'MemoryRequirements' structure returned from a call to
---     'getImageMemoryRequirements' with @image@
+-- -   #VUID-vkBindImageMemory-None-10735# If @memory@ was not allocated
+--     from a memory heap with the
+--     'Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_TILE_MEMORY_BIT_QCOM'
+--     property set, @memoryOffset@ /must/ be an integer multiple of the
+--     @alignment@ member of the 'MemoryRequirements' structure returned
+--     from a call to 'getImageMemoryRequirements' with @image@
 --
--- -   #VUID-vkBindImageMemory-size-01049# The difference of the size of
---     @memory@ and @memoryOffset@ /must/ be greater than or equal to the
---     @size@ member of the 'MemoryRequirements' structure returned from a
---     call to 'getImageMemoryRequirements' with the same @image@
+-- -   #VUID-vkBindImageMemory-memory-10736# If @memory@ was allocated from
+--     a memory heap with the
+--     'Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_TILE_MEMORY_BIT_QCOM'
+--     property set, @memoryOffset@ /must/ be an integer multiple of the
+--     @alignment@ member of the
+--     'Vulkan.Extensions.VK_QCOM_tile_memory_heap.TileMemoryRequirementsQCOM'
+--     structure returned from a call to
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.getImageMemoryRequirements2'
+--     with @image@
 --
+-- -   #VUID-vkBindImageMemory-None-10737# If @memory@ was not allocated
+--     from a memory heap with the
+--     'Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_TILE_MEMORY_BIT_QCOM'
+--     property set, @size@ member of the 'MemoryRequirements' structure
+--     returned from a call to 'getImageMemoryRequirements' with @image@
+--     /must/ be less than or equal to the size of @memory@ minus
+--     @memoryOffset@
+--
+-- -   #VUID-vkBindImageMemory-memory-10738# If @memory@ was allocated from
+--     a memory heap with the
+--     'Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_TILE_MEMORY_BIT_QCOM'
+--     property set, @size@ member of the
+--     'Vulkan.Extensions.VK_QCOM_tile_memory_heap.TileMemoryRequirementsQCOM'
+--     structure returned from a call to
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.getImageMemoryRequirements2'
+--     with @image@ /must/ be less than or equal to the size of @memory@
+--     minus @memoryOffset@
+--
 -- -   #VUID-vkBindImageMemory-image-06392# If @image@ was created with
 --     'Vulkan.Extensions.VK_FUCHSIA_buffer_collection.BufferCollectionImageCreateInfoFUCHSIA'
 --     chained to 'Vulkan.Core10.Image.ImageCreateInfo'::@pNext@, @memory@
@@ -587,9 +664,13 @@
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
 --
 -- = See Also
 --
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
@@ -1,1368 +1,301 @@
 {-# language CPP #-}
 -- No documentation found for Chapter "OtherTypes"
-module Vulkan.Core10.OtherTypes  ( MemoryBarrier(..)
-                                 , BufferMemoryBarrier(..)
-                                 , ImageMemoryBarrier(..)
-                                 , PipelineCacheHeaderVersionOne(..)
-                                 , DrawIndirectCommand(..)
-                                 , DrawIndexedIndirectCommand(..)
-                                 , DispatchIndirectCommand(..)
-                                 , BaseOutStructure(..)
-                                 , BaseInStructure(..)
-                                 , ObjectType(..)
-                                 , VendorId(..)
-                                 ) where
-
-import Vulkan.CStruct.Utils (FixedArray)
-import Data.Typeable (eqT)
-import Foreign.Marshal.Alloc (allocaBytes)
-import GHC.Ptr (castPtr)
-import Foreign.Ptr (nullPtr)
-import Foreign.Ptr (plusPtr)
-import Control.Monad.Trans.Class (lift)
-import Control.Monad.Trans.Cont (evalContT)
-import Vulkan.CStruct (FromCStruct)
-import Vulkan.CStruct (FromCStruct(..))
-import Vulkan.CStruct (ToCStruct)
-import Vulkan.CStruct (ToCStruct(..))
-import Vulkan.Zero (Zero(..))
-import Data.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 Data.Int (Int32)
-import Foreign.Ptr (Ptr)
-import Data.Word (Word32)
-import Data.Word (Word8)
-import Data.ByteString (ByteString)
-import Data.Kind (Type)
-import Control.Monad.Trans.Cont (ContT(..))
-import Vulkan.CStruct.Utils (peekByteStringFromSizedVectorPtr)
-import Vulkan.CStruct.Utils (pokeFixedLengthByteString)
-import Vulkan.Core10.Enums.AccessFlagBits (AccessFlags)
-import Vulkan.Core10.Handles (Buffer)
-import Vulkan.CStruct.Extends (Chain)
-import Vulkan.Core10.FundamentalTypes (DeviceSize)
-import Vulkan.CStruct.Extends (Extends)
-import Vulkan.CStruct.Extends (Extendss)
-import Vulkan.CStruct.Extends (Extensible(..))
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_external_memory_acquire_unmodified (ExternalMemoryAcquireUnmodifiedEXT)
-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 Vulkan.Core10.Enums.PipelineCacheHeaderVersion (PipelineCacheHeaderVersion)
-import Vulkan.CStruct.Extends (PokeChain)
-import Vulkan.CStruct.Extends (PokeChain(..))
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_sample_locations (SampleLocationsInfoEXT)
-import Vulkan.Core10.Enums.StructureType (StructureType)
-import Vulkan.Core10.APIConstants (UUID_SIZE)
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_MEMORY_BARRIER))
-import Vulkan.CStruct.Extends (BaseInStructure(..))
-import Vulkan.CStruct.Extends (BaseOutStructure(..))
-import Vulkan.Core10.Enums.ObjectType (ObjectType(..))
-import Vulkan.Core10.Enums.VendorId (VendorId(..))
--- | VkMemoryBarrier - Structure specifying a global memory barrier
---
--- = Description
---
--- The first
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
--- is limited to access types in the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-access-masks source access mask>
--- specified by @srcAccessMask@.
---
--- The second
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
--- is limited to access types in the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-access-masks destination access mask>
--- specified by @dstAccessMask@.
---
--- == Valid Usage (Implicit)
---
--- = 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.Enums.AccessFlagBits.AccessFlags',
--- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'Vulkan.Core10.CommandBufferBuilding.cmdPipelineBarrier',
--- 'Vulkan.Core10.CommandBufferBuilding.cmdWaitEvents'
-data MemoryBarrier = MemoryBarrier
-  { -- | @srcAccessMask@ is a bitmask of
-    -- 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits' specifying a
-    -- <https://registry.khronos.org/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
-    -- 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits' values
-    srcAccessMask :: AccessFlags
-  , -- | @dstAccessMask@ is a bitmask of
-    -- 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits' specifying a
-    -- <https://registry.khronos.org/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
-    -- 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits' values
-    dstAccessMask :: AccessFlags
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (MemoryBarrier)
-#endif
-deriving instance Show MemoryBarrier
-
-instance ToCStruct MemoryBarrier where
-  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p MemoryBarrier{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MEMORY_BARRIER)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr AccessFlags)) (srcAccessMask)
-    poke ((p `plusPtr` 20 :: Ptr AccessFlags)) (dstAccessMask)
-    f
-  cStructSize = 24
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MEMORY_BARRIER)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    f
-
-instance FromCStruct MemoryBarrier where
-  peekCStruct p = do
-    srcAccessMask <- peek @AccessFlags ((p `plusPtr` 16 :: Ptr AccessFlags))
-    dstAccessMask <- peek @AccessFlags ((p `plusPtr` 20 :: Ptr AccessFlags))
-    pure $ MemoryBarrier
-             srcAccessMask dstAccessMask
-
-instance Storable MemoryBarrier where
-  sizeOf ~_ = 24
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero MemoryBarrier where
-  zero = MemoryBarrier
-           zero
-           zero
-
-
--- | VkBufferMemoryBarrier - Structure specifying a buffer memory barrier
---
--- = Description
---
--- The first
--- <https://registry.khronos.org/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://registry.khronos.org/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', a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-available-and-visible memory domain operation>
--- is performed where available memory in the host domain is also made
--- available to the device domain.
---
--- The second
--- <https://registry.khronos.org/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://registry.khronos.org/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', a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-available-and-visible memory domain operation>
--- is performed where available memory in the device domain is also made
--- available to the host domain.
---
--- When
--- 'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_COHERENT_BIT'
--- is used, available memory in host domain is automatically made visible
--- to host domain, and any host write is automatically made available to
--- host domain.
---
--- If @srcQueueFamilyIndex@ is not equal to @dstQueueFamilyIndex@, and
--- @srcQueueFamilyIndex@ is equal to the current queue family, then the
--- memory barrier defines a
--- <https://registry.khronos.org/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 scope of
--- the calling command does not apply to this operation.
---
--- If @dstQueueFamilyIndex@ is not equal to @srcQueueFamilyIndex@, and
--- @dstQueueFamilyIndex@ is equal to the current queue family, then the
--- memory barrier defines a
--- <https://registry.khronos.org/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 scope of
--- the calling command does not apply to this operation.
---
--- == Valid Usage
---
--- -   #VUID-VkBufferMemoryBarrier-offset-01187# @offset@ /must/ be less
---     than the size of @buffer@
---
--- -   #VUID-VkBufferMemoryBarrier-size-01188# If @size@ is not equal to
---     'Vulkan.Core10.APIConstants.WHOLE_SIZE', @size@ /must/ be greater
---     than @0@
---
--- -   #VUID-VkBufferMemoryBarrier-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-VkBufferMemoryBarrier-buffer-01931# If @buffer@ is non-sparse
---     then it /must/ be bound completely and contiguously to a single
---     'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-VkBufferMemoryBarrier-buffer-09095# If @buffer@ was created
---     with a sharing mode of
---     'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_EXCLUSIVE', and
---     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ are not equal,
---     @srcQueueFamilyIndex@ /must/ be
---     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_EXTERNAL',
---     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_FOREIGN_EXT', or a valid
---     queue family
---
--- -   #VUID-VkBufferMemoryBarrier-buffer-09096# If @buffer@ was created
---     with a sharing mode of
---     'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_EXCLUSIVE', and
---     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ are not equal,
---     @dstQueueFamilyIndex@ /must/ be
---     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_EXTERNAL',
---     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_FOREIGN_EXT', or a valid
---     queue family
---
--- -   #VUID-VkBufferMemoryBarrier-srcQueueFamilyIndex-04087# If
---     @srcQueueFamilyIndex@ is not equal to @dstQueueFamilyIndex@, at
---     least one of @srcQueueFamilyIndex@ or @dstQueueFamilyIndex@ /must/
---     not be 'Vulkan.Core10.APIConstants.QUEUE_FAMILY_EXTERNAL' or
---     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_FOREIGN_EXT'
---
--- -   #VUID-VkBufferMemoryBarrier-None-09097# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_memory VK_KHR_external_memory>
---     extension is not enabled, and the value of
---     'Vulkan.Core10.DeviceInitialization.ApplicationInfo'::@apiVersion@
---     used to create the 'Vulkan.Core10.Handles.Instance' is not greater
---     than or equal to Version 1.1, @srcQueueFamilyIndex@ /must/ not be
---     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_EXTERNAL'
---
--- -   #VUID-VkBufferMemoryBarrier-None-09098# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_memory VK_KHR_external_memory>
---     extension is not enabled, and the value of
---     'Vulkan.Core10.DeviceInitialization.ApplicationInfo'::@apiVersion@
---     used to create the 'Vulkan.Core10.Handles.Instance' is not greater
---     than or equal to Version 1.1, @dstQueueFamilyIndex@ /must/ not be
---     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_EXTERNAL'
---
--- -   #VUID-VkBufferMemoryBarrier-srcQueueFamilyIndex-09099# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_queue_family_foreign VK_EXT_queue_family_foreign>
---     extension is not enabled @srcQueueFamilyIndex@ /must/ not be
---     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_FOREIGN_EXT'
---
--- -   #VUID-VkBufferMemoryBarrier-dstQueueFamilyIndex-09100# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_queue_family_foreign VK_EXT_queue_family_foreign>
---     extension is not enabled @dstQueueFamilyIndex@ /must/ not be
---     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_FOREIGN_EXT'
---
--- -   #VUID-VkBufferMemoryBarrier-None-09049# If the
---     <https://registry.khronos.org/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 'Vulkan.Core10.APIConstants.QUEUE_FAMILY_IGNORED'
---
--- -   #VUID-VkBufferMemoryBarrier-None-09050# If the
---     <https://registry.khronos.org/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',
---     @srcQueueFamilyIndex@ /must/ be
---     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_IGNORED' or
---     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_EXTERNAL'
---
--- -   #VUID-VkBufferMemoryBarrier-None-09051# If the
---     <https://registry.khronos.org/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',
---     @dstQueueFamilyIndex@ /must/ be
---     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_IGNORED' or
---     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_EXTERNAL'
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkBufferMemoryBarrier-sType-sType# @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER'
---
--- -   #VUID-VkBufferMemoryBarrier-pNext-pNext# @pNext@ /must/ be @NULL@ or
---     a pointer to a valid instance of
---     'Vulkan.Extensions.VK_EXT_external_memory_acquire_unmodified.ExternalMemoryAcquireUnmodifiedEXT'
---
--- -   #VUID-VkBufferMemoryBarrier-sType-unique# The @sType@ value of each
---     struct in the @pNext@ chain /must/ be unique
---
--- -   #VUID-VkBufferMemoryBarrier-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_VERSION_1_0 VK_VERSION_1_0>,
--- 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlags',
--- 'Vulkan.Core10.Handles.Buffer',
--- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
--- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'Vulkan.Core10.CommandBufferBuilding.cmdPipelineBarrier',
--- 'Vulkan.Core10.CommandBufferBuilding.cmdWaitEvents'
-data BufferMemoryBarrier (es :: [Type]) = BufferMemoryBarrier
-  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
-    next :: Chain es
-  , -- | @srcAccessMask@ is a bitmask of
-    -- 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits' specifying a
-    -- <https://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/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)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (BufferMemoryBarrier (es :: [Type]))
-#endif
-deriving instance Show (Chain es) => Show (BufferMemoryBarrier es)
-
-instance Extensible BufferMemoryBarrier where
-  extensibleTypeName = "BufferMemoryBarrier"
-  setNext BufferMemoryBarrier{..} next' = BufferMemoryBarrier{next = next', ..}
-  getNext BufferMemoryBarrier{..} = next
-  extends :: forall e b proxy. Typeable e => proxy e -> (Extends BufferMemoryBarrier e => b) -> Maybe b
-  extends _ f
-    | Just Refl <- eqT @e @ExternalMemoryAcquireUnmodifiedEXT = Just f
-    | otherwise = Nothing
-
-instance ( Extendss BufferMemoryBarrier es
-         , PokeChain es ) => ToCStruct (BufferMemoryBarrier es) where
-  withCStruct x f = allocaBytes 56 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p BufferMemoryBarrier{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER)
-    pNext'' <- fmap castPtr . ContT $ withChain (next)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
-    lift $ poke ((p `plusPtr` 16 :: Ptr AccessFlags)) (srcAccessMask)
-    lift $ poke ((p `plusPtr` 20 :: Ptr AccessFlags)) (dstAccessMask)
-    lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) (srcQueueFamilyIndex)
-    lift $ poke ((p `plusPtr` 28 :: Ptr Word32)) (dstQueueFamilyIndex)
-    lift $ poke ((p `plusPtr` 32 :: Ptr Buffer)) (buffer)
-    lift $ poke ((p `plusPtr` 40 :: Ptr DeviceSize)) (offset)
-    lift $ poke ((p `plusPtr` 48 :: Ptr DeviceSize)) (size)
-    lift $ f
-  cStructSize = 56
-  cStructAlignment = 8
-  pokeZeroCStruct p f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER)
-    pNext' <- fmap castPtr . ContT $ withZeroChain @es
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
-    lift $ poke ((p `plusPtr` 16 :: Ptr AccessFlags)) (zero)
-    lift $ poke ((p `plusPtr` 20 :: Ptr AccessFlags)) (zero)
-    lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)
-    lift $ poke ((p `plusPtr` 28 :: Ptr Word32)) (zero)
-    lift $ poke ((p `plusPtr` 32 :: Ptr Buffer)) (zero)
-    lift $ poke ((p `plusPtr` 40 :: Ptr DeviceSize)) (zero)
-    lift $ poke ((p `plusPtr` 48 :: Ptr DeviceSize)) (zero)
-    lift $ f
-
-instance ( Extendss BufferMemoryBarrier es
-         , PeekChain es ) => FromCStruct (BufferMemoryBarrier es) where
-  peekCStruct p = do
-    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
-    next <- peekChain (castPtr pNext)
-    srcAccessMask <- peek @AccessFlags ((p `plusPtr` 16 :: Ptr AccessFlags))
-    dstAccessMask <- peek @AccessFlags ((p `plusPtr` 20 :: Ptr AccessFlags))
-    srcQueueFamilyIndex <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))
-    dstQueueFamilyIndex <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))
-    buffer <- peek @Buffer ((p `plusPtr` 32 :: Ptr Buffer))
-    offset <- peek @DeviceSize ((p `plusPtr` 40 :: Ptr DeviceSize))
-    size <- peek @DeviceSize ((p `plusPtr` 48 :: Ptr DeviceSize))
-    pure $ BufferMemoryBarrier
-             next
-             srcAccessMask
-             dstAccessMask
-             srcQueueFamilyIndex
-             dstQueueFamilyIndex
-             buffer
-             offset
-             size
-
-instance es ~ '[] => Zero (BufferMemoryBarrier es) where
-  zero = BufferMemoryBarrier
-           ()
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-
-
--- | VkImageMemoryBarrier - Structure specifying the parameters of an image
--- memory barrier
---
--- = Description
---
--- The first
--- <https://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/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
--- memory writes are also made visible to accesses of those types, as those
--- access types are not performed through a resource.
---
--- If @srcQueueFamilyIndex@ is not equal to @dstQueueFamilyIndex@, and
--- @srcQueueFamilyIndex@ is equal to the current queue family, then the
--- memory barrier defines a
--- <https://registry.khronos.org/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 scope of the calling command does not apply to this
--- operation.
---
--- If @dstQueueFamilyIndex@ is not equal to @srcQueueFamilyIndex@, and
--- @dstQueueFamilyIndex@ is equal to the current queue family, then the
--- memory barrier defines a
--- <https://registry.khronos.org/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
--- scope of the calling command does not apply to this operation.
---
--- If the
--- <https://registry.khronos.org/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>
--- for the specified image subresource range.
---
--- If the
--- <https://registry.khronos.org/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.
---
--- 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-VkImageMemoryBarrier-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-VkImageMemoryBarrier-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-VkImageMemoryBarrier-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-VkImageMemoryBarrier-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-VkImageMemoryBarrier-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-VkImageMemoryBarrier-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-VkImageMemoryBarrier-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-VkImageMemoryBarrier-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-VkImageMemoryBarrier-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-VkImageMemoryBarrier-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-VkImageMemoryBarrier-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-VkImageMemoryBarrier-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-VkImageMemoryBarrier-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-VkImageMemoryBarrier-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-VkImageMemoryBarrier-synchronization2-07793# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2 synchronization2>
---     feature is not enabled, @oldLayout@ /must/ not be
---     'Vulkan.Extensions.VK_KHR_synchronization2.IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR'
---     or
---     'Vulkan.Extensions.VK_KHR_synchronization2.IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR'
---
--- -   #VUID-VkImageMemoryBarrier-synchronization2-07794# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2 synchronization2>
---     feature is not enabled, @newLayout@ /must/ not be
---     'Vulkan.Extensions.VK_KHR_synchronization2.IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR'
---     or
---     'Vulkan.Extensions.VK_KHR_synchronization2.IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR'
---
--- -   #VUID-VkImageMemoryBarrier-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-VkImageMemoryBarrier-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-VkImageMemoryBarrier-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-VkImageMemoryBarrier-image-09117# If @image@ was created with
---     a sharing mode of
---     'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_EXCLUSIVE', and
---     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ are not equal,
---     @srcQueueFamilyIndex@ /must/ be
---     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_EXTERNAL',
---     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_FOREIGN_EXT', or a valid
---     queue family
---
--- -   #VUID-VkImageMemoryBarrier-image-09118# If @image@ was created with
---     a sharing mode of
---     'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_EXCLUSIVE', and
---     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ are not equal,
---     @dstQueueFamilyIndex@ /must/ be
---     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_EXTERNAL',
---     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_FOREIGN_EXT', or a valid
---     queue family
---
--- -   #VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-04070# If
---     @srcQueueFamilyIndex@ is not equal to @dstQueueFamilyIndex@, at
---     least one of @srcQueueFamilyIndex@ or @dstQueueFamilyIndex@ /must/
---     not be 'Vulkan.Core10.APIConstants.QUEUE_FAMILY_EXTERNAL' or
---     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_FOREIGN_EXT'
---
--- -   #VUID-VkImageMemoryBarrier-None-09119# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_memory VK_KHR_external_memory>
---     extension is not enabled, and the value of
---     'Vulkan.Core10.DeviceInitialization.ApplicationInfo'::@apiVersion@
---     used to create the 'Vulkan.Core10.Handles.Instance' is not greater
---     than or equal to Version 1.1, @srcQueueFamilyIndex@ /must/ not be
---     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_EXTERNAL'
---
--- -   #VUID-VkImageMemoryBarrier-None-09120# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_memory VK_KHR_external_memory>
---     extension is not enabled, and the value of
---     'Vulkan.Core10.DeviceInitialization.ApplicationInfo'::@apiVersion@
---     used to create the 'Vulkan.Core10.Handles.Instance' is not greater
---     than or equal to Version 1.1, @dstQueueFamilyIndex@ /must/ not be
---     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_EXTERNAL'
---
--- -   #VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-09121# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_queue_family_foreign VK_EXT_queue_family_foreign>
---     extension is not enabled @srcQueueFamilyIndex@ /must/ not be
---     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_FOREIGN_EXT'
---
--- -   #VUID-VkImageMemoryBarrier-dstQueueFamilyIndex-09122# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_queue_family_foreign VK_EXT_queue_family_foreign>
---     extension is not enabled @dstQueueFamilyIndex@ /must/ not be
---     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_FOREIGN_EXT'
---
--- -   #VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-07120# 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
---     @VK_IMAGE_LAYOUT_VIDEO_DECODE_SRC_KHR@ then @image@ /must/ have been
---     created with @VK_IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR@
---
--- -   #VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-07121# 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
---     @VK_IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR@ then @image@ /must/ have been
---     created with @VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR@
---
--- -   #VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-07122# 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
---     @VK_IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR@ then @image@ /must/ have been
---     created with @VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR@
---
--- -   #VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-07123# 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
---     @VK_IMAGE_LAYOUT_VIDEO_ENCODE_SRC_KHR@ then @image@ /must/ have been
---     created with @VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR@
---
--- -   #VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-07124# 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
---     @VK_IMAGE_LAYOUT_VIDEO_ENCODE_DST_KHR@ then @image@ /must/ have been
---     created with @VK_IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR@
---
--- -   #VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-07125# 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
---     @VK_IMAGE_LAYOUT_VIDEO_ENCODE_DPB_KHR@ then @image@ /must/ have been
---     created with @VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR@
---
--- -   #VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-10287# 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
---     @VK_IMAGE_LAYOUT_VIDEO_ENCODE_QUANTIZATION_MAP_KHR@ then @image@
---     /must/ have been created with
---     @VK_IMAGE_USAGE_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR@ or
---     @VK_IMAGE_USAGE_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR@
---
--- -   #VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-07006# 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_FEEDBACK_LOOP_OPTIMAL_EXT'
---     then @image@ /must/ have been created with either the
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT'
---     or
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'
---     usage bits, and the
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT'
---     or 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT'
---     usage bits, and the
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT'
---     usage bit
---
--- -   #VUID-VkImageMemoryBarrier-attachmentFeedbackLoopLayout-07313# If
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-attachmentFeedbackLoopLayout attachmentFeedbackLoopLayout>
---     feature is not enabled, @newLayout@ /must/ not be
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
---
--- -   #VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-09550# 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_RENDERING_LOCAL_READ_KHR'
---     then @image@ /must/ have been created with either
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_STORAGE_BIT', or
---     with both
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT'
---     and either of
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT'
---     or
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'
---
--- -   #VUID-VkImageMemoryBarrier-dynamicRenderingLocalRead-09551# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingLocalRead dynamicRenderingLocalRead>
---     feature is not enabled, @oldLayout@ /must/ not be
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_RENDERING_LOCAL_READ_KHR'
---
--- -   #VUID-VkImageMemoryBarrier-dynamicRenderingLocalRead-09552# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingLocalRead dynamicRenderingLocalRead>
---     feature is not enabled, @newLayout@ /must/ not be
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_RENDERING_LOCAL_READ_KHR'
---
--- -   #VUID-VkImageMemoryBarrier-subresourceRange-01486#
---     @subresourceRange.baseMipLevel@ /must/ be less than the @mipLevels@
---     specified in 'Vulkan.Core10.Image.ImageCreateInfo' when @image@ was
---     created
---
--- -   #VUID-VkImageMemoryBarrier-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-VkImageMemoryBarrier-subresourceRange-01488#
---     @subresourceRange.baseArrayLayer@ /must/ be less than the
---     @arrayLayers@ specified in 'Vulkan.Core10.Image.ImageCreateInfo'
---     when @image@ was created
---
--- -   #VUID-VkImageMemoryBarrier-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-VkImageMemoryBarrier-image-01932# If @image@ is non-sparse
---     then it /must/ be bound completely and contiguously to a single
---     'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-VkImageMemoryBarrier-image-09241# If @image@ has a color
---     format that is single-plane, then the @aspectMask@ member of
---     @subresourceRange@ /must/ be
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'
---
--- -   #VUID-VkImageMemoryBarrier-image-09242# If @image@ has a color
---     format and is not /disjoint/, then the @aspectMask@ member of
---     @subresourceRange@ /must/ be
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'
---
--- -   #VUID-VkImageMemoryBarrier-image-01672# If @image@ has a
---     multi-planar format and the image is /disjoint/, then the
---     @aspectMask@ member of @subresourceRange@ /must/ include at least
---     one
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-planes-image-aspect multi-planar aspect mask>
---     bit or
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'
---
--- -   #VUID-VkImageMemoryBarrier-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-VkImageMemoryBarrier-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-VkImageMemoryBarrier-aspectMask-08702# If the @aspectMask@
---     member of @subresourceRange@ includes
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT',
---     @oldLayout@ and @newLayout@ /must/ not be one of
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL'
---     or
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL'
---
--- -   #VUID-VkImageMemoryBarrier-aspectMask-08703# If the @aspectMask@
---     member of @subresourceRange@ includes
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT',
---     @oldLayout@ and @newLayout@ /must/ not be one of
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL'
---     or
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL'
---
--- -   #VUID-VkImageMemoryBarrier-subresourceRange-09601#
---     @subresourceRange.aspectMask@ /must/ be valid for the @format@ the
---     @image@ was created with
---
--- -   #VUID-VkImageMemoryBarrier-None-09052# If the
---     <https://registry.khronos.org/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 'Vulkan.Core10.APIConstants.QUEUE_FAMILY_IGNORED'
---
--- -   #VUID-VkImageMemoryBarrier-None-09053# If the
---     <https://registry.khronos.org/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',
---     @srcQueueFamilyIndex@ /must/ be
---     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_IGNORED' or
---     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_EXTERNAL'
---
--- -   #VUID-VkImageMemoryBarrier-None-09054# If the
---     <https://registry.khronos.org/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',
---     @dstQueueFamilyIndex@ /must/ be
---     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_IGNORED' or
---     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_EXTERNAL'
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkImageMemoryBarrier-sType-sType# @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER'
---
--- -   #VUID-VkImageMemoryBarrier-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_external_memory_acquire_unmodified.ExternalMemoryAcquireUnmodifiedEXT'
---     or
---     'Vulkan.Extensions.VK_EXT_sample_locations.SampleLocationsInfoEXT'
---
--- -   #VUID-VkImageMemoryBarrier-sType-unique# The @sType@ value of each
---     struct in the @pNext@ chain /must/ be unique
---
--- -   #VUID-VkImageMemoryBarrier-oldLayout-parameter# @oldLayout@ /must/
---     be a valid 'Vulkan.Core10.Enums.ImageLayout.ImageLayout' value
---
--- -   #VUID-VkImageMemoryBarrier-newLayout-parameter# @newLayout@ /must/
---     be a valid 'Vulkan.Core10.Enums.ImageLayout.ImageLayout' value
---
--- -   #VUID-VkImageMemoryBarrier-image-parameter# @image@ /must/ be a
---     valid 'Vulkan.Core10.Handles.Image' handle
---
--- -   #VUID-VkImageMemoryBarrier-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_VERSION_1_0 VK_VERSION_1_0>,
--- 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlags',
--- 'Vulkan.Core10.Handles.Image',
--- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout',
--- 'Vulkan.Core10.ImageView.ImageSubresourceRange',
--- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'Vulkan.Core10.CommandBufferBuilding.cmdPipelineBarrier',
--- 'Vulkan.Core10.CommandBufferBuilding.cmdWaitEvents'
-data ImageMemoryBarrier (es :: [Type]) = ImageMemoryBarrier
-  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
-    next :: Chain es
-  , -- | @srcAccessMask@ is a bitmask of
-    -- 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits' specifying a
-    -- <https://registry.khronos.org/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-access-masks destination access mask>.
-    dstAccessMask :: AccessFlags
-  , -- | @oldLayout@ is the old layout in an
-    -- <https://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/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 (ImageMemoryBarrier (es :: [Type]))
-#endif
-deriving instance Show (Chain es) => Show (ImageMemoryBarrier es)
-
-instance Extensible ImageMemoryBarrier where
-  extensibleTypeName = "ImageMemoryBarrier"
-  setNext ImageMemoryBarrier{..} next' = ImageMemoryBarrier{next = next', ..}
-  getNext ImageMemoryBarrier{..} = next
-  extends :: forall e b proxy. Typeable e => proxy e -> (Extends ImageMemoryBarrier e => b) -> Maybe b
-  extends _ f
-    | Just Refl <- eqT @e @ExternalMemoryAcquireUnmodifiedEXT = Just f
-    | Just Refl <- eqT @e @SampleLocationsInfoEXT = Just f
-    | otherwise = Nothing
-
-instance ( Extendss ImageMemoryBarrier es
-         , PokeChain es ) => ToCStruct (ImageMemoryBarrier es) where
-  withCStruct x f = allocaBytes 72 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p ImageMemoryBarrier{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER)
-    pNext'' <- fmap castPtr . ContT $ withChain (next)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
-    lift $ poke ((p `plusPtr` 16 :: Ptr AccessFlags)) (srcAccessMask)
-    lift $ poke ((p `plusPtr` 20 :: Ptr AccessFlags)) (dstAccessMask)
-    lift $ poke ((p `plusPtr` 24 :: Ptr ImageLayout)) (oldLayout)
-    lift $ poke ((p `plusPtr` 28 :: Ptr ImageLayout)) (newLayout)
-    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) (srcQueueFamilyIndex)
-    lift $ poke ((p `plusPtr` 36 :: Ptr Word32)) (dstQueueFamilyIndex)
-    lift $ poke ((p `plusPtr` 40 :: Ptr Image)) (image)
-    lift $ poke ((p `plusPtr` 48 :: Ptr ImageSubresourceRange)) (subresourceRange)
-    lift $ f
-  cStructSize = 72
-  cStructAlignment = 8
-  pokeZeroCStruct p f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER)
-    pNext' <- fmap castPtr . ContT $ withZeroChain @es
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
-    lift $ poke ((p `plusPtr` 16 :: Ptr AccessFlags)) (zero)
-    lift $ poke ((p `plusPtr` 20 :: Ptr AccessFlags)) (zero)
-    lift $ poke ((p `plusPtr` 24 :: Ptr ImageLayout)) (zero)
-    lift $ poke ((p `plusPtr` 28 :: Ptr ImageLayout)) (zero)
-    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) (zero)
-    lift $ poke ((p `plusPtr` 36 :: Ptr Word32)) (zero)
-    lift $ poke ((p `plusPtr` 40 :: Ptr Image)) (zero)
-    lift $ poke ((p `plusPtr` 48 :: Ptr ImageSubresourceRange)) (zero)
-    lift $ f
-
-instance ( Extendss ImageMemoryBarrier es
-         , PeekChain es ) => FromCStruct (ImageMemoryBarrier es) where
-  peekCStruct p = do
-    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
-    next <- peekChain (castPtr pNext)
-    srcAccessMask <- peek @AccessFlags ((p `plusPtr` 16 :: Ptr AccessFlags))
-    dstAccessMask <- peek @AccessFlags ((p `plusPtr` 20 :: Ptr AccessFlags))
-    oldLayout <- peek @ImageLayout ((p `plusPtr` 24 :: Ptr ImageLayout))
-    newLayout <- peek @ImageLayout ((p `plusPtr` 28 :: Ptr ImageLayout))
-    srcQueueFamilyIndex <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))
-    dstQueueFamilyIndex <- peek @Word32 ((p `plusPtr` 36 :: Ptr Word32))
-    image <- peek @Image ((p `plusPtr` 40 :: Ptr Image))
-    subresourceRange <- peekCStruct @ImageSubresourceRange ((p `plusPtr` 48 :: Ptr ImageSubresourceRange))
-    pure $ ImageMemoryBarrier
-             next
-             srcAccessMask
-             dstAccessMask
-             oldLayout
-             newLayout
-             srcQueueFamilyIndex
-             dstQueueFamilyIndex
-             image
-             subresourceRange
-
-instance es ~ '[] => Zero (ImageMemoryBarrier es) where
-  zero = ImageMemoryBarrier
-           ()
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-
-
--- | VkPipelineCacheHeaderVersionOne - Structure describing the layout of the
--- pipeline cache header
---
--- = Description
---
--- Unlike most structures declared by the Vulkan API, all fields of this
--- structure are written with the least significant byte first, regardless
--- of host byte-order.
---
--- The C language specification does not define the packing of structure
--- members. This layout assumes tight structure member packing, with
--- members laid out in the order listed in the structure, and the intended
--- size of the structure is 32 bytes. If a compiler produces code that
--- diverges from that pattern, applications /must/ employ another method to
--- set values at the correct offsets.
---
--- == Valid Usage (Implicit)
---
--- = 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.Enums.PipelineCacheHeaderVersion.PipelineCacheHeaderVersion'
-data PipelineCacheHeaderVersionOne = PipelineCacheHeaderVersionOne
-  { -- | @headerSize@ is the length in bytes of the pipeline cache header.
-    --
-    -- #VUID-VkPipelineCacheHeaderVersionOne-headerSize-04967# @headerSize@
-    -- /must/ be 32
-    --
-    -- #VUID-VkPipelineCacheHeaderVersionOne-headerSize-08990# @headerSize@
-    -- /must/ not exceed the size of the pipeline cache
-    headerSize :: Word32
-  , -- | @headerVersion@ is a
-    -- 'Vulkan.Core10.Enums.PipelineCacheHeaderVersion.PipelineCacheHeaderVersion'
-    -- value specifying the version of the header. A consumer of the pipeline
-    -- cache /should/ use the cache version to interpret the remainder of the
-    -- cache header.
-    --
-    -- #VUID-VkPipelineCacheHeaderVersionOne-headerVersion-04968#
-    -- @headerVersion@ /must/ be
-    -- 'Vulkan.Core10.Enums.PipelineCacheHeaderVersion.PIPELINE_CACHE_HEADER_VERSION_ONE'
-    --
-    -- #VUID-VkPipelineCacheHeaderVersionOne-headerVersion-parameter#
-    -- @headerVersion@ /must/ be a valid
-    -- 'Vulkan.Core10.Enums.PipelineCacheHeaderVersion.PipelineCacheHeaderVersion'
-    -- value
-    headerVersion :: PipelineCacheHeaderVersion
-  , -- | @vendorID@ is the
-    -- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceProperties'::@vendorID@
-    -- of the implementation.
-    vendorID :: Word32
-  , -- | @deviceID@ is the
-    -- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceProperties'::@deviceID@
-    -- of the implementation.
-    deviceID :: Word32
-  , -- | @pipelineCacheUUID@ is the
-    -- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceProperties'::@pipelineCacheUUID@
-    -- of the implementation.
-    pipelineCacheUUID :: ByteString
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PipelineCacheHeaderVersionOne)
-#endif
-deriving instance Show PipelineCacheHeaderVersionOne
-
-instance ToCStruct PipelineCacheHeaderVersionOne where
-  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PipelineCacheHeaderVersionOne{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr Word32)) (headerSize)
-    poke ((p `plusPtr` 4 :: Ptr PipelineCacheHeaderVersion)) (headerVersion)
-    poke ((p `plusPtr` 8 :: Ptr Word32)) (vendorID)
-    poke ((p `plusPtr` 12 :: Ptr Word32)) (deviceID)
-    pokeFixedLengthByteString ((p `plusPtr` 16 :: Ptr (FixedArray UUID_SIZE Word8))) (pipelineCacheUUID)
-    f
-  cStructSize = 32
-  cStructAlignment = 4
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 4 :: Ptr PipelineCacheHeaderVersion)) (zero)
-    poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 12 :: Ptr Word32)) (zero)
-    pokeFixedLengthByteString ((p `plusPtr` 16 :: Ptr (FixedArray UUID_SIZE Word8))) (mempty)
-    f
-
-instance FromCStruct PipelineCacheHeaderVersionOne where
-  peekCStruct p = do
-    headerSize <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))
-    headerVersion <- peek @PipelineCacheHeaderVersion ((p `plusPtr` 4 :: Ptr PipelineCacheHeaderVersion))
-    vendorID <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))
-    deviceID <- peek @Word32 ((p `plusPtr` 12 :: Ptr Word32))
-    pipelineCacheUUID <- peekByteStringFromSizedVectorPtr ((p `plusPtr` 16 :: Ptr (FixedArray UUID_SIZE Word8)))
-    pure $ PipelineCacheHeaderVersionOne
-             headerSize headerVersion vendorID deviceID pipelineCacheUUID
-
-instance Storable PipelineCacheHeaderVersionOne where
-  sizeOf ~_ = 32
-  alignment ~_ = 4
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero PipelineCacheHeaderVersionOne where
-  zero = PipelineCacheHeaderVersionOne
-           zero
-           zero
-           zero
-           zero
-           mempty
-
-
--- | VkDrawIndirectCommand - Structure specifying an indirect drawing command
---
--- = Description
---
--- The members of 'DrawIndirectCommand' have the same meaning as the
--- similarly named parameters of
--- 'Vulkan.Core10.CommandBufferBuilding.cmdDraw'.
---
--- == Valid Usage
---
--- -   #VUID-VkDrawIndirectCommand-pNext-09461# If the bound graphics
---     pipeline state was created with
---     'Vulkan.Extensions.VK_KHR_vertex_attribute_divisor.PipelineVertexInputDivisorStateCreateInfoKHR'
---     in the @pNext@ chain of
---     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@pVertexInputState@,
---     any member of
---     'Vulkan.Extensions.VK_KHR_vertex_attribute_divisor.PipelineVertexInputDivisorStateCreateInfoKHR'::@pVertexBindingDivisors@
---     has a value other than @1@ in @divisor@, and
---     'Vulkan.Extensions.VK_KHR_vertex_attribute_divisor.PhysicalDeviceVertexAttributeDivisorPropertiesKHR'::@supportsNonZeroFirstInstance@
---     is 'Vulkan.Core10.FundamentalTypes.FALSE', then @firstInstance@
---     /must/ be @0@
---
--- -   #VUID-VkDrawIndirectCommand-None-09462# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-objects shader objects>
---     are used for drawing or the bound graphics pipeline state was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
---     dynamic state enabled, any member of the
---     @pVertexBindingDescriptions@ parameter to the
---     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.cmdSetVertexInputEXT'
---     call that sets this dynamic state has a value other than @1@ in
---     @divisor@, and
---     'Vulkan.Extensions.VK_KHR_vertex_attribute_divisor.PhysicalDeviceVertexAttributeDivisorPropertiesKHR'::@supportsNonZeroFirstInstance@
---     is 'Vulkan.Core10.FundamentalTypes.FALSE', then @firstInstance@
---     /must/ be @0@
---
--- -   #VUID-VkDrawIndirectCommand-firstInstance-00501# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-drawIndirectFirstInstance drawIndirectFirstInstance>
---     feature is not enabled, @firstInstance@ /must/ 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>,
--- 'Vulkan.Core10.CommandBufferBuilding.cmdDrawIndirect'
-data DrawIndirectCommand = DrawIndirectCommand
-  { -- | @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
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (DrawIndirectCommand)
-#endif
-deriving instance Show DrawIndirectCommand
-
-instance ToCStruct DrawIndirectCommand where
-  withCStruct x f = allocaBytes 16 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p DrawIndirectCommand{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr Word32)) (vertexCount)
-    poke ((p `plusPtr` 4 :: Ptr Word32)) (instanceCount)
-    poke ((p `plusPtr` 8 :: Ptr Word32)) (firstVertex)
-    poke ((p `plusPtr` 12 :: Ptr Word32)) (firstInstance)
-    f
-  cStructSize = 16
-  cStructAlignment = 4
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr Word32)) (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 DrawIndirectCommand where
-  peekCStruct p = do
-    vertexCount <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))
-    instanceCount <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))
-    firstVertex <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))
-    firstInstance <- peek @Word32 ((p `plusPtr` 12 :: Ptr Word32))
-    pure $ DrawIndirectCommand
-             vertexCount instanceCount firstVertex firstInstance
-
-instance Storable DrawIndirectCommand where
-  sizeOf ~_ = 16
-  alignment ~_ = 4
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero DrawIndirectCommand where
-  zero = DrawIndirectCommand
-           zero
-           zero
-           zero
-           zero
-
-
--- | VkDrawIndexedIndirectCommand - Structure specifying an indexed indirect
--- drawing command
---
--- = Description
---
--- The members of 'DrawIndexedIndirectCommand' have the same meaning as the
--- similarly named parameters of
--- 'Vulkan.Core10.CommandBufferBuilding.cmdDrawIndexed'.
---
--- == Valid Usage
---
--- -   #VUID-VkDrawIndexedIndirectCommand-pNext-09461# If the bound
---     graphics pipeline state was created with
---     'Vulkan.Extensions.VK_KHR_vertex_attribute_divisor.PipelineVertexInputDivisorStateCreateInfoKHR'
---     in the @pNext@ chain of
---     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@pVertexInputState@,
---     any member of
---     'Vulkan.Extensions.VK_KHR_vertex_attribute_divisor.PipelineVertexInputDivisorStateCreateInfoKHR'::@pVertexBindingDivisors@
---     has a value other than @1@ in @divisor@, and
---     'Vulkan.Extensions.VK_KHR_vertex_attribute_divisor.PhysicalDeviceVertexAttributeDivisorPropertiesKHR'::@supportsNonZeroFirstInstance@
---     is 'Vulkan.Core10.FundamentalTypes.FALSE', then @firstInstance@
---     /must/ be @0@
---
--- -   #VUID-VkDrawIndexedIndirectCommand-None-09462# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-objects shader objects>
---     are used for drawing or the bound graphics pipeline state was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
---     dynamic state enabled, any member of the
---     @pVertexBindingDescriptions@ parameter to the
---     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.cmdSetVertexInputEXT'
---     call that sets this dynamic state has a value other than @1@ in
---     @divisor@, and
---     'Vulkan.Extensions.VK_KHR_vertex_attribute_divisor.PhysicalDeviceVertexAttributeDivisorPropertiesKHR'::@supportsNonZeroFirstInstance@
---     is 'Vulkan.Core10.FundamentalTypes.FALSE', then @firstInstance@
---     /must/ be @0@
---
--- -   #VUID-VkDrawIndexedIndirectCommand-robustBufferAccess2-08798# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
---     feature is not enabled, (@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
---     'Vulkan.Core10.CommandBufferBuilding.cmdBindIndexBuffer' or
---     'Vulkan.Extensions.VK_KHR_maintenance5.cmdBindIndexBuffer2KHR'. If
---     'Vulkan.Extensions.VK_KHR_maintenance5.cmdBindIndexBuffer2KHR' is
---     used to bind the index buffer, the size of the bound index buffer is
---     'Vulkan.Extensions.VK_KHR_maintenance5.cmdBindIndexBuffer2KHR'::@size@
---
--- -   #VUID-VkDrawIndexedIndirectCommand-firstInstance-00554# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-drawIndirectFirstInstance drawIndirectFirstInstance>
+module Vulkan.Core10.OtherTypes  ( PipelineCacheHeaderVersionOne(..)
+                                 , DrawIndirectCommand(..)
+                                 , DrawIndexedIndirectCommand(..)
+                                 , DispatchIndirectCommand(..)
+                                 , BaseOutStructure(..)
+                                 , BaseInStructure(..)
+                                 , PipelineCacheHeaderVersion(..)
+                                 , ObjectType(..)
+                                 , VendorId(..)
+                                 ) where
+
+import Vulkan.CStruct.Utils (FixedArray)
+import Foreign.Marshal.Alloc (allocaBytes)
+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 Data.Int (Int32)
+import Foreign.Ptr (Ptr)
+import Data.Word (Word32)
+import Data.Word (Word8)
+import Data.ByteString (ByteString)
+import Data.Kind (Type)
+import Vulkan.CStruct.Utils (peekByteStringFromSizedVectorPtr)
+import Vulkan.CStruct.Utils (pokeFixedLengthByteString)
+import Vulkan.Core10.Enums.PipelineCacheHeaderVersion (PipelineCacheHeaderVersion)
+import Vulkan.Core10.APIConstants (UUID_SIZE)
+import Vulkan.CStruct.Extends (BaseInStructure(..))
+import Vulkan.CStruct.Extends (BaseOutStructure(..))
+import Vulkan.Core10.Enums.ObjectType (ObjectType(..))
+import Vulkan.Core10.Enums.PipelineCacheHeaderVersion (PipelineCacheHeaderVersion(..))
+import Vulkan.Core10.Enums.VendorId (VendorId(..))
+-- | VkPipelineCacheHeaderVersionOne - Structure describing the layout of the
+-- pipeline cache header
+--
+-- = Description
+--
+-- Unlike most structures declared by the Vulkan API, all fields of this
+-- structure are written with the least significant byte first, regardless
+-- of host byte-order.
+--
+-- The C language specification does not define the packing of structure
+-- members. This layout assumes tight structure member packing, with
+-- members laid out in the order listed in the structure, and the intended
+-- size of the structure is 32 bytes. If a compiler produces code that
+-- diverges from that pattern, applications /must/ employ another method to
+-- set values at the correct offsets.
+--
+-- == Valid Usage (Implicit)
+--
+-- = 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.Enums.PipelineCacheHeaderVersion.PipelineCacheHeaderVersion'
+data PipelineCacheHeaderVersionOne = PipelineCacheHeaderVersionOne
+  { -- | @headerSize@ is the length in bytes of the pipeline cache header.
+    --
+    -- #VUID-VkPipelineCacheHeaderVersionOne-headerSize-04967# @headerSize@
+    -- /must/ be 32
+    --
+    -- #VUID-VkPipelineCacheHeaderVersionOne-headerSize-08990# @headerSize@
+    -- /must/ not exceed the size of the pipeline cache
+    headerSize :: Word32
+  , -- | @headerVersion@ is a
+    -- 'Vulkan.Core10.Enums.PipelineCacheHeaderVersion.PipelineCacheHeaderVersion'
+    -- value specifying the version of the header. A consumer of the pipeline
+    -- cache /should/ use the cache version to interpret the remainder of the
+    -- cache header. @headerVersion@ /must/ be written as exactly 4 bytes.
+    --
+    -- #VUID-VkPipelineCacheHeaderVersionOne-headerVersion-04968#
+    -- @headerVersion@ /must/ be
+    -- 'Vulkan.Core10.Enums.PipelineCacheHeaderVersion.PIPELINE_CACHE_HEADER_VERSION_ONE'
+    --
+    -- #VUID-VkPipelineCacheHeaderVersionOne-headerVersion-parameter#
+    -- @headerVersion@ /must/ be a valid
+    -- 'Vulkan.Core10.Enums.PipelineCacheHeaderVersion.PipelineCacheHeaderVersion'
+    -- value
+    headerVersion :: PipelineCacheHeaderVersion
+  , -- | @vendorID@ is the
+    -- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceProperties'::@vendorID@
+    -- of the implementation.
+    vendorID :: Word32
+  , -- | @deviceID@ is the
+    -- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceProperties'::@deviceID@
+    -- of the implementation.
+    deviceID :: Word32
+  , -- | @pipelineCacheUUID@ is the
+    -- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceProperties'::@pipelineCacheUUID@
+    -- of the implementation.
+    pipelineCacheUUID :: ByteString
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PipelineCacheHeaderVersionOne)
+#endif
+deriving instance Show PipelineCacheHeaderVersionOne
+
+instance ToCStruct PipelineCacheHeaderVersionOne where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PipelineCacheHeaderVersionOne{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr Word32)) (headerSize)
+    poke ((p `plusPtr` 4 :: Ptr PipelineCacheHeaderVersion)) (headerVersion)
+    poke ((p `plusPtr` 8 :: Ptr Word32)) (vendorID)
+    poke ((p `plusPtr` 12 :: Ptr Word32)) (deviceID)
+    pokeFixedLengthByteString ((p `plusPtr` 16 :: Ptr (FixedArray UUID_SIZE Word8))) (pipelineCacheUUID)
+    f
+  cStructSize = 32
+  cStructAlignment = 4
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 4 :: Ptr PipelineCacheHeaderVersion)) (zero)
+    poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 12 :: Ptr Word32)) (zero)
+    pokeFixedLengthByteString ((p `plusPtr` 16 :: Ptr (FixedArray UUID_SIZE Word8))) (mempty)
+    f
+
+instance FromCStruct PipelineCacheHeaderVersionOne where
+  peekCStruct p = do
+    headerSize <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))
+    headerVersion <- peek @PipelineCacheHeaderVersion ((p `plusPtr` 4 :: Ptr PipelineCacheHeaderVersion))
+    vendorID <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))
+    deviceID <- peek @Word32 ((p `plusPtr` 12 :: Ptr Word32))
+    pipelineCacheUUID <- peekByteStringFromSizedVectorPtr ((p `plusPtr` 16 :: Ptr (FixedArray UUID_SIZE Word8)))
+    pure $ PipelineCacheHeaderVersionOne
+             headerSize headerVersion vendorID deviceID pipelineCacheUUID
+
+instance Storable PipelineCacheHeaderVersionOne where
+  sizeOf ~_ = 32
+  alignment ~_ = 4
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PipelineCacheHeaderVersionOne where
+  zero = PipelineCacheHeaderVersionOne
+           zero
+           zero
+           zero
+           zero
+           mempty
+
+
+-- | VkDrawIndirectCommand - Structure specifying an indirect drawing command
+--
+-- = Description
+--
+-- The members of 'DrawIndirectCommand' have the same meaning as the
+-- similarly named parameters of
+-- 'Vulkan.Core10.CommandBufferBuilding.cmdDraw'.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkDrawIndirectCommand-pNext-09461# If the bound graphics
+--     pipeline state was created with
+--     'Vulkan.Core14.Promoted_From_VK_KHR_vertex_attribute_divisor.PipelineVertexInputDivisorStateCreateInfo'
+--     in the @pNext@ chain of
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'::@pVertexInputState@,
+--     any member of
+--     'Vulkan.Core14.Promoted_From_VK_KHR_vertex_attribute_divisor.PipelineVertexInputDivisorStateCreateInfo'::@pVertexBindingDivisors@
+--     has a value other than @1@ in @divisor@, and
+--     'Vulkan.Core14.Promoted_From_VK_KHR_vertex_attribute_divisor.PhysicalDeviceVertexAttributeDivisorProperties'::@supportsNonZeroFirstInstance@
+--     is 'Vulkan.Core10.FundamentalTypes.FALSE', then @firstInstance@
+--     /must/ be @0@
+--
+-- -   #VUID-VkDrawIndirectCommand-None-09462# If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-objects shader objects>
+--     are used for drawing or the bound graphics pipeline state was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
+--     dynamic state enabled, any member of the
+--     @pVertexBindingDescriptions@ parameter to the
+--     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.cmdSetVertexInputEXT'
+--     call that sets this dynamic state has a value other than @1@ in
+--     @divisor@, and
+--     'Vulkan.Core14.Promoted_From_VK_KHR_vertex_attribute_divisor.PhysicalDeviceVertexAttributeDivisorProperties'::@supportsNonZeroFirstInstance@
+--     is 'Vulkan.Core10.FundamentalTypes.FALSE', then @firstInstance@
+--     /must/ be @0@
+--
+-- -   #VUID-VkDrawIndirectCommand-firstInstance-00501# If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-drawIndirectFirstInstance drawIndirectFirstInstance>
+--     feature is not enabled, @firstInstance@ /must/ 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>,
+-- 'Vulkan.Core10.CommandBufferBuilding.cmdDrawIndirect'
+data DrawIndirectCommand = DrawIndirectCommand
+  { -- | @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
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (DrawIndirectCommand)
+#endif
+deriving instance Show DrawIndirectCommand
+
+instance ToCStruct DrawIndirectCommand where
+  withCStruct x f = allocaBytes 16 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p DrawIndirectCommand{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr Word32)) (vertexCount)
+    poke ((p `plusPtr` 4 :: Ptr Word32)) (instanceCount)
+    poke ((p `plusPtr` 8 :: Ptr Word32)) (firstVertex)
+    poke ((p `plusPtr` 12 :: Ptr Word32)) (firstInstance)
+    f
+  cStructSize = 16
+  cStructAlignment = 4
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr Word32)) (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 DrawIndirectCommand where
+  peekCStruct p = do
+    vertexCount <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))
+    instanceCount <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))
+    firstVertex <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))
+    firstInstance <- peek @Word32 ((p `plusPtr` 12 :: Ptr Word32))
+    pure $ DrawIndirectCommand
+             vertexCount instanceCount firstVertex firstInstance
+
+instance Storable DrawIndirectCommand where
+  sizeOf ~_ = 16
+  alignment ~_ = 4
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero DrawIndirectCommand where
+  zero = DrawIndirectCommand
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkDrawIndexedIndirectCommand - Structure specifying an indexed indirect
+-- drawing command
+--
+-- = Description
+--
+-- The members of 'DrawIndexedIndirectCommand' have the same meaning as the
+-- similarly named parameters of
+-- 'Vulkan.Core10.CommandBufferBuilding.cmdDrawIndexed'.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkDrawIndexedIndirectCommand-pNext-09461# If the bound
+--     graphics pipeline state was created with
+--     'Vulkan.Core14.Promoted_From_VK_KHR_vertex_attribute_divisor.PipelineVertexInputDivisorStateCreateInfo'
+--     in the @pNext@ chain of
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'::@pVertexInputState@,
+--     any member of
+--     'Vulkan.Core14.Promoted_From_VK_KHR_vertex_attribute_divisor.PipelineVertexInputDivisorStateCreateInfo'::@pVertexBindingDivisors@
+--     has a value other than @1@ in @divisor@, and
+--     'Vulkan.Core14.Promoted_From_VK_KHR_vertex_attribute_divisor.PhysicalDeviceVertexAttributeDivisorProperties'::@supportsNonZeroFirstInstance@
+--     is 'Vulkan.Core10.FundamentalTypes.FALSE', then @firstInstance@
+--     /must/ be @0@
+--
+-- -   #VUID-VkDrawIndexedIndirectCommand-None-09462# If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-objects shader objects>
+--     are used for drawing or the bound graphics pipeline state was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
+--     dynamic state enabled, any member of the
+--     @pVertexBindingDescriptions@ parameter to the
+--     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.cmdSetVertexInputEXT'
+--     call that sets this dynamic state has a value other than @1@ in
+--     @divisor@, and
+--     'Vulkan.Core14.Promoted_From_VK_KHR_vertex_attribute_divisor.PhysicalDeviceVertexAttributeDivisorProperties'::@supportsNonZeroFirstInstance@
+--     is 'Vulkan.Core10.FundamentalTypes.FALSE', then @firstInstance@
+--     /must/ be @0@
+--
+-- -   #VUID-VkDrawIndexedIndirectCommand-robustBufferAccess2-08798# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, (@indexSize@ × (@firstIndex@ +
+--     @indexCount@)) /must/ be less than or equal to the size of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#index-buffer-range bound index buffer range>,
+--     with @indexSize@ being based on the type specified by @indexType@,
+--     and the other parameters sourced from this command
+--
+-- -   #VUID-VkDrawIndexedIndirectCommand-firstInstance-00554# If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-drawIndirectFirstInstance drawIndirectFirstInstance>
 --     feature is not enabled, @firstInstance@ /must/ be @0@
 --
 -- = See Also
diff --git a/src/Vulkan/Core10/OtherTypes.hs-boot b/src/Vulkan/Core10/OtherTypes.hs-boot
--- a/src/Vulkan/Core10/OtherTypes.hs-boot
+++ b/src/Vulkan/Core10/OtherTypes.hs-boot
@@ -1,32 +1,15 @@
 {-# language CPP #-}
 -- No documentation found for Chapter "OtherTypes"
-module Vulkan.Core10.OtherTypes  ( BufferMemoryBarrier
-                                 , DispatchIndirectCommand
+module Vulkan.Core10.OtherTypes  ( DispatchIndirectCommand
                                  , DrawIndexedIndirectCommand
                                  , DrawIndirectCommand
-                                 , ImageMemoryBarrier
-                                 , MemoryBarrier
                                  , PipelineCacheHeaderVersionOne
                                  ) 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)
-type role BufferMemoryBarrier nominal
-data BufferMemoryBarrier (es :: [Type])
 
-instance ( Extendss BufferMemoryBarrier es
-         , PokeChain es ) => ToCStruct (BufferMemoryBarrier es)
-instance Show (Chain es) => Show (BufferMemoryBarrier es)
-
-instance ( Extendss BufferMemoryBarrier es
-         , PeekChain es ) => FromCStruct (BufferMemoryBarrier es)
-
-
 data DispatchIndirectCommand
 
 instance ToCStruct DispatchIndirectCommand
@@ -49,25 +32,6 @@
 instance Show DrawIndirectCommand
 
 instance FromCStruct DrawIndirectCommand
-
-
-type role ImageMemoryBarrier nominal
-data ImageMemoryBarrier (es :: [Type])
-
-instance ( Extendss ImageMemoryBarrier es
-         , PokeChain es ) => ToCStruct (ImageMemoryBarrier es)
-instance Show (Chain es) => Show (ImageMemoryBarrier es)
-
-instance ( Extendss ImageMemoryBarrier es
-         , PeekChain es ) => FromCStruct (ImageMemoryBarrier es)
-
-
-data MemoryBarrier
-
-instance ToCStruct MemoryBarrier
-instance Show MemoryBarrier
-
-instance FromCStruct MemoryBarrier
 
 
 data PipelineCacheHeaderVersionOne
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
@@ -116,12 +116,14 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_fragment_density_map (RenderPassFragmentDensityMapCreateInfoEXT)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_maintenance2 (RenderPassInputAttachmentAspectCreateInfo)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_multiview (RenderPassMultiviewCreateInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_tile_shading (RenderPassTileShadingCreateInfoQCOM)
 import Vulkan.Core10.Enums.Result (Result)
 import Vulkan.Core10.Enums.Result (Result(..))
 import Vulkan.Core10.Enums.SampleCountFlagBits (SampleCountFlagBits)
 import Vulkan.CStruct.Extends (SomeStruct)
 import Vulkan.Core10.Enums.StructureType (StructureType)
 import Vulkan.Core10.Enums.SubpassDescriptionFlagBits (SubpassDescriptionFlags)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_tile_memory_heap (TileMemorySizeInfoQCOM)
 import Vulkan.Exception (VulkanException(..))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO))
@@ -181,6 +183,9 @@
 --     /must/ be a valid pointer to a 'Vulkan.Core10.Handles.Framebuffer'
 --     handle
 --
+-- -   #VUID-vkCreateFramebuffer-device-queuecount# The device /must/ have
+--     been created with at least @1@ queue
+--
 -- == Return Codes
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
@@ -189,10 +194,14 @@
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -207,7 +216,7 @@
                      -- describing additional information about framebuffer creation.
                      (FramebufferCreateInfo a)
                   -> -- | @pAllocator@ controls host memory allocation as described in the
-                     -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                     -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
                      -- chapter.
                      ("allocator" ::: Maybe AllocationCallbacks)
                   -> io (Framebuffer)
@@ -301,7 +310,7 @@
                    -> -- | @framebuffer@ is the handle of the framebuffer to destroy.
                       Framebuffer
                    -> -- | @pAllocator@ controls host memory allocation as described in the
-                      -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                      -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
                       -- chapter.
                       ("allocator" ::: Maybe AllocationCallbacks)
                    -> io ()
@@ -335,6 +344,11 @@
 --     least one queue family with the
 --     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' capability
 --
+-- -   #VUID-vkCreateRenderPass-flags-10646#
+--     'Vulkan.Extensions.VK_QCOM_tile_shading.RenderPassTileShadingCreateInfoQCOM'::@flags@
+--     /must/ not include
+--     'Vulkan.Extensions.VK_QCOM_tile_shading.TILE_SHADING_RENDER_PASS_PER_TILE_EXECUTION_BIT_QCOM'
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-vkCreateRenderPass-device-parameter# @device@ /must/ be a
@@ -358,10 +372,14 @@
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -376,7 +394,7 @@
                     -- describing the parameters of the render pass.
                     (RenderPassCreateInfo a)
                  -> -- | @pAllocator@ controls host memory allocation as described in the
-                    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
                     -- chapter.
                     ("allocator" ::: Maybe AllocationCallbacks)
                  -> io (RenderPass)
@@ -470,7 +488,7 @@
                   -> -- | @renderPass@ is the handle of the render pass to destroy.
                      RenderPass
                   -> -- | @pAllocator@ controls host memory allocation as described in the
-                     -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                     -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
                      -- chapter.
                      ("allocator" ::: Maybe AllocationCallbacks)
                   -> io ()
@@ -524,7 +542,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-layout-transitions automatic layout transitions>.
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-layout-transitions automatic layout transitions>.
 -- Similarly, pipeline barriers are valid even if their effect extends
 -- outside the render area.
 --
@@ -580,9 +598,9 @@
 -- apply only to the depth data, while @stencilLoadOp@ and @stencilStoreOp@
 -- define how the stencil data is handled. @loadOp@ and @stencilLoadOp@
 -- define the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-load-operations load operations>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-load-operations load operations>
 -- for the attachment. @storeOp@ and @stencilStoreOp@ define the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-store-operations store operations>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-store-operations store operations>
 -- for the attachment. If an attachment is not used by any subpass,
 -- @loadOp@, @storeOp@, @stencilStoreOp@, and @stencilLoadOp@ will be
 -- ignored for that attachment, and no load or store ops will be performed.
@@ -661,7 +679,8 @@
 -- -   #VUID-VkAttachmentDescription-finalLayout-00843# @finalLayout@
 --     /must/ not be
 --     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_UNDEFINED' or
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_PREINITIALIZED'
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ZERO_INITIALIZED_EXT'
+--     or 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_PREINITIALIZED'
 --
 -- -   #VUID-VkAttachmentDescription-format-03280# If @format@ is a color
 --     format, @initialLayout@ /must/ not be
@@ -795,14 +814,46 @@
 --     the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingLocalRead dynamicRenderingLocalRead>
 --     feature is not enabled, @initialLayout@ /must/ not be
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_RENDERING_LOCAL_READ_KHR'
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_RENDERING_LOCAL_READ'
 --
 -- -   #VUID-VkAttachmentDescription-dynamicRenderingLocalRead-09545# If
 --     the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingLocalRead dynamicRenderingLocalRead>
 --     feature is not enabled, @finalLayout@ /must/ not be
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_RENDERING_LOCAL_READ_KHR'
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_RENDERING_LOCAL_READ'
 --
+-- -   #VUID-VkAttachmentDescription-flags-11773# If @flags@ includes
+--     'Vulkan.Core10.Enums.AttachmentDescriptionFlagBits.ATTACHMENT_DESCRIPTION_RESOLVE_SKIP_TRANSFER_FUNCTION_BIT_KHR',
+--     @flags@ /must/ not include
+--     'Vulkan.Core10.Enums.AttachmentDescriptionFlagBits.ATTACHMENT_DESCRIPTION_RESOLVE_ENABLE_TRANSFER_FUNCTION_BIT_KHR'
+--
+-- -   #VUID-VkAttachmentDescription-flags-11774# If @flags@ includes
+--     'Vulkan.Core10.Enums.AttachmentDescriptionFlagBits.ATTACHMENT_DESCRIPTION_RESOLVE_SKIP_TRANSFER_FUNCTION_BIT_KHR'
+--     or
+--     'Vulkan.Core10.Enums.AttachmentDescriptionFlagBits.ATTACHMENT_DESCRIPTION_RESOLVE_ENABLE_TRANSFER_FUNCTION_BIT_KHR',
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-resolveSrgbFormatSupportsTransferFunctionControl resolveSrgbFormatSupportsTransferFunctionControl>
+--     /must/ be 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-VkAttachmentDescription-flags-11775# If @flags@ includes
+--     'Vulkan.Core10.Enums.AttachmentDescriptionFlagBits.ATTACHMENT_DESCRIPTION_RESOLVE_SKIP_TRANSFER_FUNCTION_BIT_KHR'
+--     or
+--     'Vulkan.Core10.Enums.AttachmentDescriptionFlagBits.ATTACHMENT_DESCRIPTION_RESOLVE_ENABLE_TRANSFER_FUNCTION_BIT_KHR',
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance10 maintenance10>
+--     /must/ be enabled
+--
+-- -   #VUID-VkAttachmentDescription-flags-11776# If @flags@ includes
+--     'Vulkan.Core10.Enums.AttachmentDescriptionFlagBits.ATTACHMENT_DESCRIPTION_RESOLVE_SKIP_TRANSFER_FUNCTION_BIT_KHR'
+--     or
+--     'Vulkan.Core10.Enums.AttachmentDescriptionFlagBits.ATTACHMENT_DESCRIPTION_RESOLVE_ENABLE_TRANSFER_FUNCTION_BIT_KHR',
+--     @format@ /must/ use sRGB encoding
+--
+-- -   #VUID-VkAttachmentDescription-flags-11777# If @flags@ includes
+--     'Vulkan.Core10.Enums.AttachmentDescriptionFlagBits.ATTACHMENT_DESCRIPTION_RESOLVE_SKIP_TRANSFER_FUNCTION_BIT_KHR'
+--     or
+--     'Vulkan.Core10.Enums.AttachmentDescriptionFlagBits.ATTACHMENT_DESCRIPTION_RESOLVE_ENABLE_TRANSFER_FUNCTION_BIT_KHR',
+--     @samples@ /must/ be
+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'
+--
 -- -   #VUID-VkAttachmentDescription-format-06698# @format@ /must/ not be
 --     VK_FORMAT_UNDEFINED
 --
@@ -1004,6 +1055,7 @@
 -- -   #VUID-VkAttachmentReference-layout-03077# If @attachment@ is not
 --     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED', @layout@ /must/ not
 --     be 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_UNDEFINED',
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ZERO_INITIALIZED_EXT',
 --     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_PREINITIALIZED', or
 --     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_PRESENT_SRC_KHR'
 --
@@ -1035,7 +1087,7 @@
 -- -   #VUID-VkAttachmentReference-dynamicRenderingLocalRead-09546# If the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingLocalRead dynamicRenderingLocalRead>
 --     feature is not enabled, @layout@ /must/ not be
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_RENDERING_LOCAL_READ_KHR'
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_RENDERING_LOCAL_READ'
 --
 -- == Valid Usage (Implicit)
 --
@@ -1112,7 +1164,7 @@
 -- attachment at the fragment’s (xf,yf) framebuffer coordinates and layer.
 -- Input attachments /must/ not be used by any subpasses within a render
 -- pass that enables
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#vertexpostproc-renderpass-transform render pass transform>.
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -1120,27 +1172,27 @@
 -- provided in @pColorAttachments@[__X__]. If the @attachment@ member of
 -- any element of @pColorAttachments@ is
 -- 'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED', or if
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#framebuffer-color-write-enable Color Write Enable>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#framebuffer-color-write-enable Color Write Enable>
 -- has been disabled for the corresponding attachment index, then writes to
 -- the corresponding location by a fragment shader are discarded.
 --
 -- If @flags@ does not include
--- 'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM',
+-- 'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_CUSTOM_RESOLVE_BIT_EXT',
 -- and if @pResolveAttachments@ is not @NULL@, each of its elements
 -- corresponds to a color attachment (the element in @pColorAttachments@ at
 -- the same index), and a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-resolve-operations multisample resolve operation>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-resolve-operations multisample resolve operation>
 -- is defined for each attachment unless the resolve attachment index is
 -- 'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED'.
 --
 -- Similarly, if @flags@ does not include
--- 'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM',
+-- 'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_CUSTOM_RESOLVE_BIT_EXT',
 -- and
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve.SubpassDescriptionDepthStencilResolve'::@pDepthStencilResolveAttachment@
 -- is not @NULL@ and does not have the value
 -- 'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED', it corresponds to the
 -- depth\/stencil attachment in @pDepthStencilAttachment@, and
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-resolve-operations multisample resolve operation>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-resolve-operations multisample resolve operation>
 -- for depth and stencil are defined by
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve.SubpassDescriptionDepthStencilResolve'::@depthResolveMode@
 -- and
@@ -1159,7 +1211,7 @@
 -- attachment is created with
 -- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT',
 -- then the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-resolve-operations multisample resolve operation>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-resolve-operations multisample resolve operation>
 -- uses the sample locations state specified in the @sampleLocationsInfo@
 -- member of the element of the
 -- 'Vulkan.Extensions.VK_EXT_sample_locations.RenderPassSampleLocationsBeginInfoEXT'::@pPostSubpassSampleLocations@
@@ -1169,6 +1221,14 @@
 -- 'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED', it indicates that no
 -- depth\/stencil attachment will be used in the subpass.
 --
+-- Following this call, if the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-customResolve customResolve>
+-- feature is enabled the fragment area /may/ be reduced to (1,1) if a
+-- fragment density map is attached to the render pass. If this occurs,
+-- reads of input attachments /may/ return the value for the original
+-- larger fragment containing the smaller fragment or use the new fragment
+-- area.
+--
 -- The contents of an attachment within the render area become undefined at
 -- the start of a subpass __S__ if all of the following conditions are
 -- true:
@@ -1185,17 +1245,40 @@
 -- undefined at the start of a subpass __S__ if all of the following
 -- conditions are true:
 --
--- -   'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM'
+-- -   'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_CUSTOM_RESOLVE_BIT_EXT'
 --     is set.
 --
 -- -   The attachment is used as a color or depth\/stencil in the subpass.
 --
+-- For color attachments, this operation will be performed in the
+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT'
+-- pipeline stage, with any image accesses performed via
+-- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_INPUT_ATTACHMENT_READ_BIT',
+-- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_COLOR_ATTACHMENT_READ_BIT',
+-- and
+-- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_COLOR_ATTACHMENT_WRITE_BIT'.
+-- For depth\/stencil attachments, this operation /may/ be performed in
+-- either the
+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT'
+-- or
+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT'
+-- pipeline stage, with any image accesses performed via
+-- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_INPUT_ATTACHMENT_READ_BIT',
+-- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT',
+-- and
+-- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT'.
+--
 -- Once the contents of an attachment become undefined in subpass __S__,
 -- they remain undefined for subpasses in subpass dependency chains
 -- starting with subpass __S__ until they are written again. However, they
 -- remain valid for subpasses in other subpass dependency chains starting
--- with subpass __S1__ if those subpasses use or preserve the attachment.
+-- with subpass __S1__ if all subpasses in each chain use or preserve the
+-- attachment.
 --
+-- If a subpass has multiple dependency chains where some of the chains
+-- preserve the attachment, and others do not, the contents of the
+-- attachment are undefined for that subpass.
+--
 -- == Valid Usage
 --
 -- -   #VUID-VkSubpassDescription-attachment-06912# If the @attachment@
@@ -1224,7 +1307,7 @@
 --
 -- -   #VUID-VkSubpassDescription-attachment-06915# If the @attachment@
 --     member of @pDepthStencilAttachment@ is not
---     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED', ts @layout@ member
+--     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED', its @layout@ member
 --     /must/ not be
 --     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL'
 --     or
@@ -1292,15 +1375,19 @@
 --     /must/ not be
 --     'Vulkan.Extensions.VK_KHR_synchronization2.IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR'
 --
--- -   #VUID-VkSubpassDescription-pipelineBindPoint-04952#
---     @pipelineBindPoint@ /must/ be
---     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
---     or
---     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI'
+-- -   #VUID-VkSubpassDescription-flags-10683# If @flags@ includes
+--     'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_TILE_SHADING_APRON_BIT_QCOM',
+--     the render pass /must/ have been created with a
+--     'Vulkan.Extensions.VK_QCOM_tile_shading.RenderPassTileShadingCreateInfoQCOM'::@tileApronSize@
+--     greater than @(0,0)@
 --
+-- -   #VUID-VkSubpassDescription-inputAttachmentCount-12293#
+--     @inputAttachmentCount@ /must/ be less than or equal to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxPerStageDescriptorInputAttachments maxPerStageDescriptorInputAttachments>
+--
 -- -   #VUID-VkSubpassDescription-colorAttachmentCount-00845#
 --     @colorAttachmentCount@ /must/ be less than or equal to
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxColorAttachments@
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxColorAttachments maxColorAttachments>
 --
 -- -   #VUID-VkSubpassDescription-loadOp-00846# If the first use of an
 --     attachment in this render pass is as an input attachment, and the
@@ -1308,6 +1395,12 @@
 --     in the same subpass, then @loadOp@ /must/ not be
 --     'Vulkan.Core10.Enums.AttachmentLoadOp.ATTACHMENT_LOAD_OP_CLEAR'
 --
+-- -   #VUID-VkSubpassDescription-pipelineBindPoint-04952#
+--     @pipelineBindPoint@ /must/ be
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
+--     or
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI'
+--
 -- -   #VUID-VkSubpassDescription-pResolveAttachments-00847# If
 --     @pResolveAttachments@ is not @NULL@, for each resolve attachment
 --     that is not 'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED', the
@@ -1341,7 +1434,7 @@
 --     in @pInputAttachments@ that are not
 --     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' /must/ have image
 --     formats whose
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#potential-format-features potential format features>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#potential-format-features potential format features>
 --     contain at least
 --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BIT'
 --     or
@@ -1351,7 +1444,7 @@
 --     in @pColorAttachments@ that are not
 --     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' /must/ have image
 --     formats whose
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#potential-format-features potential format features>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#potential-format-features potential format features>
 --     contain
 --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BIT'
 --
@@ -1359,7 +1452,7 @@
 --     attachments in @pResolveAttachments@ that are not
 --     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' /must/ have image
 --     formats whose
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#potential-format-features potential format features>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#potential-format-features potential format features>
 --     contain
 --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BIT'
 --
@@ -1367,40 +1460,40 @@
 --     @pDepthStencilAttachment@ is not @NULL@ and the attachment is not
 --     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' then it /must/ have
 --     an image format whose
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#potential-format-features potential format features>
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-linearColorAttachment linearColorAttachment>
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#potential-format-features potential format features>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#potential-format-features potential format features>
 --     /must/ contain
 --     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV'
 --
 -- -   #VUID-VkSubpassDescription-linearColorAttachment-06497# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-linearColorAttachment linearColorAttachment>
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#potential-format-features potential format features>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#potential-format-features potential format features>
 --     /must/ contain
 --     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV'
 --
 -- -   #VUID-VkSubpassDescription-linearColorAttachment-06498# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-linearColorAttachment linearColorAttachment>
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#potential-format-features potential format features>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#potential-format-features potential format features>
 --     /must/ contain
 --     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV'
 --
@@ -1417,17 +1510,17 @@
 --     @pDepthStencilAttachment@ if it is not
 --     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED'
 --
--- -   #VUID-VkSubpassDescription-pDepthStencilAttachment-01418# If
---     @pDepthStencilAttachment@ is not
---     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' and any attachments
---     in @pColorAttachments@ are not
---     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED', they /must/ have the
---     same sample count , if none of the following are enabled:
+-- -   #VUID-VkSubpassDescription-pDepthStencilAttachment-01418# If none of
+--     the following are enabled:
 --
 --     -   The @VK_AMD_mixed_attachment_samples@ extension
 --
 --     -   The @VK_NV_framebuffer_mixed_samples@ extension
 --
+--     all attachments in @pDepthStencilAttachment@ and @pColorAttachments@
+--     that are not 'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' /must/
+--     have the same sample count
+--
 -- -   #VUID-VkSubpassDescription-attachment-00853# Each element of
 --     @pPreserveAttachments@ /must/ not be
 --     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED'
@@ -1446,12 +1539,12 @@
 --     'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX'
 --
 -- -   #VUID-VkSubpassDescription-flags-03341# If @flags@ includes
---     'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM',
+--     'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_CUSTOM_RESOLVE_BIT_EXT',
 --     and if @pResolveAttachments@ is not @NULL@, then each resolve
 --     attachment /must/ be 'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED'
 --
 -- -   #VUID-VkSubpassDescription-flags-03343# If @flags@ includes
---     'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM',
+--     'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_CUSTOM_RESOLVE_BIT_EXT',
 --     then the subpass /must/ be the last subpass in a subpass dependency
 --     chain
 --
@@ -1627,14 +1720,14 @@
 --
 -- If @srcSubpass@ is equal to @dstSubpass@ then the 'SubpassDependency'
 -- does not directly define a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies dependency>.
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies dependency>.
 -- Instead, it enables pipeline barriers to be used in a render pass
 -- instance within the identified subpass, where the scopes of one pipeline
 -- barrier /must/ be a subset of those described by one subpass dependency.
 -- Subpass dependencies specified in this way that include
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-framebuffer-regions framebuffer-space stages>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-framebuffer-regions framebuffer-space stages>
 -- in the @srcStageMask@ /must/ only include
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-framebuffer-regions framebuffer-space stages>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-framebuffer-regions framebuffer-space stages>
 -- in @dstStageMask@, and /must/ include
 -- 'Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_BY_REGION_BIT'. When
 -- a subpass dependency is specified in this way for a subpass that has
@@ -1645,82 +1738,83 @@
 -- If @srcSubpass@ and @dstSubpass@ are not equal, when a render pass
 -- instance which includes a subpass dependency is submitted to a queue, it
 -- defines a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies dependency>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies dependency>
 -- between the subpasses identified by @srcSubpass@ and @dstSubpass@.
 --
 -- If @srcSubpass@ is equal to
 -- 'Vulkan.Core10.APIConstants.SUBPASS_EXTERNAL', the first
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
 -- includes commands that occur earlier in
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-submission-order submission order>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
 -- identified by @srcSubpass@ and any
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-load-operations load>,
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-store-operations store>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-load-operations load>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-store-operations store>,
 -- or
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-resolve-operations multisample resolve>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-resolve-operations multisample resolve>
 -- 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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages-masks source stage mask>
+-- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
 -- includes commands that occur later in
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-submission-order submission order>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
 -- identified by @dstSubpass@ and any
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-load-operations load>,
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-store-operations store>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-load-operations load>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-store-operations store>,
 -- and
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-resolve-operations multisample resolve>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-resolve-operations multisample resolve>
 -- 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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages-masks destination stage mask>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-pipeline-stages-masks destination stage mask>
 -- specified by @dstStageMask@.
 --
 -- The first
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
 -- is limited to accesses in the pipeline stages determined by the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages-masks source stage mask>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-pipeline-stages-masks source stage mask>
 -- specified by @srcStageMask@. It is also limited to access types in the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-access-masks source access mask>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-access-masks source access mask>
 -- specified by @srcAccessMask@.
 --
 -- The second
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
 -- is limited to accesses in the pipeline stages determined by the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages-masks destination stage mask>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-pipeline-stages-masks destination stage mask>
 -- specified by @dstStageMask@. It is also limited to access types in the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-access-masks destination access mask>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-access-masks destination access mask>
 -- specified by @dstAccessMask@.
 --
 -- The
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-available-and-visible availability and visibility operations>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-available-and-visible availability and visibility operations>
 -- defined by a subpass dependency affect the execution of
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-layout-transitions image layout transitions>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-layout-transitions image layout transitions>
 -- within the render pass.
 --
 -- For non-attachment resources, the memory dependency expressed by subpass
 -- dependency is nearly identical to that of a
--- 'Vulkan.Core10.OtherTypes.MemoryBarrier' (with matching @srcAccessMask@
--- and @dstAccessMask@ parameters) submitted as a part of a
+-- 'Vulkan.Core10.CommandBufferBuilding.MemoryBarrier' (with matching
+-- @srcAccessMask@ and @dstAccessMask@ parameters) submitted as a part of a
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdPipelineBarrier' (with matching
 -- @srcStageMask@ and @dstStageMask@ parameters). The only difference being
 -- that its scopes are limited to the identified subpasses rather than
 -- potentially affecting everything before and after.
 --
 -- For attachments however, subpass dependencies work more like a
--- 'Vulkan.Core10.OtherTypes.ImageMemoryBarrier' defined similarly to the
--- 'Vulkan.Core10.OtherTypes.MemoryBarrier' above, the queue family indices
--- set to 'Vulkan.Core10.APIConstants.QUEUE_FAMILY_IGNORED', and layouts as
+-- 'Vulkan.Core10.CommandBufferBuilding.ImageMemoryBarrier' defined
+-- similarly to the 'Vulkan.Core10.CommandBufferBuilding.MemoryBarrier'
+-- above, the queue family indices set to
+-- 'Vulkan.Core10.APIConstants.QUEUE_FAMILY_IGNORED', and layouts as
 -- follows:
 --
 -- -   The equivalent to @oldLayout@ is the attachment’s layout according
@@ -1786,6 +1880,11 @@
 --     feature are enabled, @srcStageMask@ /must/ not contain
 --     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR'
 --
+-- -   #VUID-VkSubpassDependency-srcStageMask-10754# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-accelerationStructure accelerationStructure>
+--     feature is not enabled, @srcStageMask@ /must/ not contain
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
+--
 -- -   #VUID-VkSubpassDependency-dstStageMask-04090# If the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometryShader>
 --     feature is not enabled, @dstStageMask@ /must/ not contain
@@ -1841,6 +1940,11 @@
 --     feature are enabled, @dstStageMask@ /must/ not contain
 --     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR'
 --
+-- -   #VUID-VkSubpassDependency-dstStageMask-10754# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-accelerationStructure accelerationStructure>
+--     feature is not enabled, @dstStageMask@ /must/ not contain
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
+--
 -- -   #VUID-VkSubpassDependency-srcSubpass-00864# @srcSubpass@ /must/ be
 --     less than or equal to @dstSubpass@, unless one of them is
 --     'Vulkan.Core10.APIConstants.SUBPASS_EXTERNAL', to avoid cyclic
@@ -1852,23 +1956,23 @@
 --
 -- -   #VUID-VkSubpassDependency-srcSubpass-06809# If @srcSubpass@ is equal
 --     to @dstSubpass@ and @srcStageMask@ includes a
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-framebuffer-regions framebuffer-space stage>,
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-framebuffer-regions framebuffer-space stage>,
 --     @dstStageMask@ /must/ only contain
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-framebuffer-regions framebuffer-space stages>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-framebuffer-regions framebuffer-space stages>
 --
 -- -   #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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-framebuffer-regions framebuffer-space stage>,
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-framebuffer-regions framebuffer-space stage>,
 --     then @dependencyFlags@ /must/ include
 --     'Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_BY_REGION_BIT'
 --
@@ -1889,6 +1993,10 @@
 --     mask, then @dependencyFlags@ /must/ include
 --     'Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_VIEW_LOCAL_BIT'
 --
+-- -   #VUID-VkSubpassDependency-dependencyFlags-10203# @dependencyFlags@
+--     /must/ not include
+--     'Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_QUEUE_FAMILY_OWNERSHIP_TRANSFER_USE_ALL_STAGES_BIT_KHR'
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-VkSubpassDependency-srcStageMask-parameter# @srcStageMask@
@@ -1930,20 +2038,28 @@
   , -- | @srcStageMask@ is a bitmask of
     -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'
     -- specifying the
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages-masks source stage mask>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-pipeline-stages-masks source stage mask>.
+    -- If set to
+    -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ALL_COMMANDS_BIT',
+    -- it is equivalent to setting it to
+    -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ALL_GRAPHICS_BIT'.
     srcStageMask :: PipelineStageFlags
   , -- | @dstStageMask@ is a bitmask of
     -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'
     -- specifying the
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages-masks destination stage mask>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-pipeline-stages-masks destination stage mask>
+    -- If set to
+    -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ALL_COMMANDS_BIT',
+    -- it is equivalent to setting it to
+    -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ALL_GRAPHICS_BIT'.
     dstStageMask :: PipelineStageFlags
   , -- | @srcAccessMask@ is a bitmask of
     -- 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits' specifying a
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-access-masks source access mask>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-access-masks source access mask>.
     srcAccessMask :: AccessFlags
   , -- | @dstAccessMask@ is a bitmask of
     -- 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits' specifying a
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-access-masks destination access mask>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-access-masks destination access mask>.
     dstAccessMask :: AccessFlags
   , -- | @dependencyFlags@ is a bitmask of
     -- 'Vulkan.Core10.Enums.DependencyFlagBits.DependencyFlagBits'.
@@ -2033,6 +2149,11 @@
 --     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED', then @attachment@
 --     /must/ be less than @attachmentCount@
 --
+-- -   #VUID-VkRenderPassCreateInfo-fragmentDensityMapLayered-10828# If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-fragmentDensityMapLayered fragmentDensityMapLayered>
+--     feature is not enabled, @flags@ /must/ not contain
+--     'Vulkan.Core10.Enums.RenderPassCreateFlagBits.RENDER_PASS_CREATE_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE'
+--
 -- -   #VUID-VkRenderPassCreateInfo-pAttachments-00836# For any member of
 --     @pAttachments@ with a @loadOp@ equal to
 --     'Vulkan.Core10.Enums.AttachmentLoadOp.ATTACHMENT_LOAD_OP_CLEAR', the
@@ -2108,7 +2229,7 @@
 -- -   #VUID-VkRenderPassCreateInfo-pNext-02512# If the @pNext@ chain
 --     includes a
 --     'Vulkan.Core11.Promoted_From_VK_KHR_multiview.RenderPassMultiviewCreateInfo'
---     structure, for any element of @pDependencies@ with a
+--     structure, for each element of @pDependencies@ with a
 --     @dependencyFlags@ member that does not include
 --     'Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_VIEW_LOCAL_BIT',
 --     the corresponding element of the @pViewOffsets@ member of that
@@ -2135,33 +2256,54 @@
 --     structure, and each element of its @pViewMasks@ member is @0@, its
 --     @correlationMaskCount@ member /must/ be @0@
 --
--- -   #VUID-VkRenderPassCreateInfo-pDependencies-00837# For any element of
---     @pDependencies@, if the @srcSubpass@ is not
+-- -   #VUID-VkRenderPassCreateInfo-pDependencies-00837# For each element
+--     of @pDependencies@, if the @srcSubpass@ is not
 --     '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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages-types pipeline>
+--     included in the @srcStageMask@ member of that dependency /must/ be
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ALL_COMMANDS_BIT'
+--     or a pipeline stage supported by the
+--     <https://registry.khronos.org/vulkan/specs/latest/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
---     @pDependencies@, if the @dstSubpass@ is not
+-- -   #VUID-VkRenderPassCreateInfo-pDependencies-00838# For each element
+--     of @pDependencies@, if the @dstSubpass@ is not
 --     '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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages-types pipeline>
+--     included in the @dstStageMask@ member of that dependency /must/ be
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ALL_COMMANDS_BIT'
+--     or a pipeline stage supported by the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-pipeline-stages-types pipeline>
 --     identified by the @pipelineBindPoint@ member of the destination
 --     subpass
 --
--- -   #VUID-VkRenderPassCreateInfo-pDependencies-06866# For any element of
---     @pDependencies@, if its @srcSubpass@ is not
+-- -   #VUID-VkRenderPassCreateInfo-pDependencies-06866# For each element
+--     of @pDependencies@, if its @srcSubpass@ is not
 --     'Vulkan.Core10.APIConstants.SUBPASS_EXTERNAL', it /must/ be less
 --     than @subpassCount@
 --
--- -   #VUID-VkRenderPassCreateInfo-pDependencies-06867# For any element of
---     @pDependencies@, if its @dstSubpass@ is not
+-- -   #VUID-VkRenderPassCreateInfo-pDependencies-06867# For each element
+--     of @pDependencies@, if its @dstSubpass@ is not
 --     'Vulkan.Core10.APIConstants.SUBPASS_EXTERNAL', it /must/ be less
 --     than @subpassCount@
 --
+-- -   #VUID-VkRenderPassCreateInfo-pResolveAttachments-10647# If any
+--     element of @pResolveAttachments@ of any element of @pSubpasses@
+--     references an attachment description with a format of
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED',
+--     'Vulkan.Extensions.VK_QCOM_tile_shading.TILE_SHADING_RENDER_PASS_ENABLE_BIT_QCOM'
+--     /must/ not be included in
+--     'Vulkan.Extensions.VK_QCOM_tile_shading.RenderPassTileShadingCreateInfoQCOM'::@flags@
+--
+-- -   #VUID-VkRenderPassCreateInfo-fragmentDensityMapAttachment-10648# If
+--     'Vulkan.Extensions.VK_EXT_fragment_density_map.RenderPassFragmentDensityMapCreateInfoEXT'::@fragmentDensityMapAttachment@
+--     is not 'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED',
+--     'Vulkan.Extensions.VK_QCOM_tile_shading.TILE_SHADING_RENDER_PASS_ENABLE_BIT_QCOM'
+--     /must/ not be included in
+--     'Vulkan.Extensions.VK_QCOM_tile_shading.RenderPassTileShadingCreateInfoQCOM'::@flags@
+--
+-- -   #VUID-VkRenderPassCreateInfo-None-10915# If any subpass preserves an
+--     attachment, there /must/ be a subpass dependency from a prior
+--     subpass which uses or preserves that attachment
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-VkRenderPassCreateInfo-sType-sType# @sType@ /must/ be
@@ -2172,11 +2314,13 @@
 --     @NULL@ or a pointer to a valid instance of
 --     'Vulkan.Extensions.VK_EXT_fragment_density_map.RenderPassFragmentDensityMapCreateInfoEXT',
 --     'Vulkan.Core11.Promoted_From_VK_KHR_maintenance2.RenderPassInputAttachmentAspectCreateInfo',
+--     'Vulkan.Core11.Promoted_From_VK_KHR_multiview.RenderPassMultiviewCreateInfo',
+--     'Vulkan.Extensions.VK_QCOM_tile_shading.RenderPassTileShadingCreateInfoQCOM',
 --     or
---     'Vulkan.Core11.Promoted_From_VK_KHR_multiview.RenderPassMultiviewCreateInfo'
+--     'Vulkan.Extensions.VK_QCOM_tile_memory_heap.TileMemorySizeInfoQCOM'
 --
 -- -   #VUID-VkRenderPassCreateInfo-sType-unique# The @sType@ value of each
---     struct in the @pNext@ chain /must/ be unique
+--     structure in the @pNext@ chain /must/ be unique
 --
 -- -   #VUID-VkRenderPassCreateInfo-flags-parameter# @flags@ /must/ be a
 --     valid combination of
@@ -2237,6 +2381,8 @@
   getNext RenderPassCreateInfo{..} = next
   extends :: forall e b proxy. Typeable e => proxy e -> (Extends RenderPassCreateInfo e => b) -> Maybe b
   extends _ f
+    | Just Refl <- eqT @e @RenderPassTileShadingCreateInfoQCOM = Just f
+    | Just Refl <- eqT @e @TileMemorySizeInfoQCOM = Just f
     | Just Refl <- eqT @e @RenderPassFragmentDensityMapCreateInfoEXT = Just f
     | Just Refl <- eqT @e @RenderPassInputAttachmentAspectCreateInfo = Just f
     | Just Refl <- eqT @e @RenderPassMultiviewCreateInfo = Just f
@@ -2303,6 +2449,11 @@
 --
 -- = Description
 --
+-- For any depth\/stencil attachments used by this framebuffer in
+-- @pAttachments@, or set later through
+-- 'Vulkan.Extensions.VK_KHR_imageless_framebuffer.RenderPassAttachmentBeginInfoKHR'::@pAttachments@,
+-- the @aspectMask@ is ignored.
+--
 -- It is legal for a subpass to use no color or depth\/stencil attachments,
 -- either because it has no attachment references or because all of them
 -- are 'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED'. This kind of subpass
@@ -2311,12 +2462,12 @@
 -- @width@, @height@, and @layers@ of the framebuffer to define the
 -- dimensions of the rendering area, and the @rasterizationSamples@ from
 -- each pipeline’s
--- 'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo' to define
--- the number of samples used in rasterization; however, if
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineMultisampleStateCreateInfo' to
+-- define the number of samples used in rasterization; however, if
 -- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceFeatures'::@variableMultisampleRate@
 -- is 'Vulkan.Core10.FundamentalTypes.FALSE', then all pipelines to be
 -- bound with the subpass /must/ have the same value for
--- 'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@.
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@.
 -- In all such cases, @rasterizationSamples@ /must/ be a valid
 -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' value that
 -- is set in
@@ -2339,34 +2490,34 @@
 --     not include
 --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',
 --     each element of @pAttachments@ that is used as a color attachment or
---     resolve attachment by @renderPass@ /must/ have been created with a
---     @usage@ value including
+--     resolve attachment by @renderPass@ /must/ have been created with the
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT'
+--     usage flag set
 --
 -- -   #VUID-VkFramebufferCreateInfo-pAttachments-02633# If @flags@ does
 --     not include
 --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',
 --     each element of @pAttachments@ that is used as a depth\/stencil
---     attachment by @renderPass@ /must/ have been created with a @usage@
---     value including
+--     attachment by @renderPass@ /must/ have been created with the
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'
+--     usage flag set
 --
 -- -   #VUID-VkFramebufferCreateInfo-pAttachments-02634# If @flags@ does
 --     not include
 --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',
 --     each element of @pAttachments@ that is used as a depth\/stencil
---     resolve attachment by @renderPass@ /must/ have been created with a
---     @usage@ value including
+--     resolve attachment by @renderPass@ /must/ have been created with the
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'
+--     usage flag set
 --
 -- -   #VUID-VkFramebufferCreateInfo-pAttachments-00879# If @renderpass@ is
 --     not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @flags@ does not
 --     include
 --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',
 --     each element of @pAttachments@ that is used as an input attachment
---     by @renderPass@ /must/ have been created with a @usage@ value
---     including
+--     by @renderPass@ /must/ have been created with the
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT'
+--     usage flag set
 --
 -- -   #VUID-VkFramebufferCreateInfo-pAttachments-02552# Each element of
 --     @pAttachments@ that is used as a fragment density map attachment by
@@ -2376,19 +2527,27 @@
 --
 -- -   #VUID-VkFramebufferCreateInfo-renderPass-02553# If @renderPass@ has
 --     a fragment density map attachment and the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-fragmentDensityMapNonSubsampledImages fragmentDensityMapNonSubsampledImages>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-fragmentDensityMapNonSubsampledImages fragmentDensityMapNonSubsampledImages>
 --     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'
 --     unless that element is the fragment density map attachment
 --
--- -   #VUID-VkFramebufferCreateInfo-renderPass-06502# If @renderPass@ was
+-- -   #VUID-VkFramebufferCreateInfo-renderPass-10830# If @renderPass@ was
 --     created with
---     <https://registry.khronos.org/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'
+--     'Vulkan.Core10.Enums.RenderPassCreateFlagBits.RENDER_PASS_CREATE_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE',
+--     then @layers@ /must/ be less than or equal to
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxFragmentDensityMapLayers maxFragmentDensityMapLayers>
 --
+-- -   #VUID-VkFramebufferCreateInfo-pAttachments-12327# If flags does not
+--     include VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT, then each element of
+--     @pAttachments@ that is used as a resolve attachment by @renderPass@
+--     /must/ not be bound to a 'Vulkan.Core10.Handles.DeviceMemory' object
+--     allocated from a 'Vulkan.Core10.DeviceInitialization.MemoryHeap'
+--     with the
+--     'Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_TILE_MEMORY_BIT_QCOM'
+--     property
+--
 -- -   #VUID-VkFramebufferCreateInfo-pAttachments-00880# If @flags@ does
 --     not include
 --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',
@@ -2464,7 +2623,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment>
+--     <https://registry.khronos.org/vulkan/specs/latest/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
@@ -2474,14 +2633,14 @@
 --     '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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment>
+--     <https://registry.khronos.org/vulkan/specs/latest/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@
 --
 -- -   #VUID-VkFramebufferCreateInfo-flags-04539# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-maintenance7 maintenance7>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance7 maintenance7>
 --     feature is not enabled or the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-robustFragmentShadingRateAttachmentAccess robustFragmentShadingRateAttachmentAccess>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-robustFragmentShadingRateAttachmentAccess robustFragmentShadingRateAttachmentAccess>
 --     limit is 'Vulkan.Core10.FundamentalTypes.FALSE' or the @imageView@
 --     member of a
 --     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.RenderingFragmentShadingRateAttachmentInfoKHR'
@@ -2490,7 +2649,7 @@
 --     greater than 0, @flags@ does not include
 --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',
 --     an element of @pAttachments@ that is used as a
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment>
+--     <https://registry.khronos.org/vulkan/specs/latest/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
@@ -2498,9 +2657,9 @@
 --     which references that attachment
 --
 -- -   #VUID-VkFramebufferCreateInfo-flags-04540# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-maintenance7 maintenance7>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance7 maintenance7>
 --     feature is not enabled or the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-robustFragmentShadingRateAttachmentAccess robustFragmentShadingRateAttachmentAccess>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-robustFragmentShadingRateAttachmentAccess robustFragmentShadingRateAttachmentAccess>
 --     limit is 'Vulkan.Core10.FundamentalTypes.FALSE' or the @imageView@
 --     member of a
 --     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.RenderingFragmentShadingRateAttachmentInfoKHR'
@@ -2509,7 +2668,7 @@
 --     greater than 0, @flags@ does not include
 --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',
 --     an element of @pAttachments@ that is used as a
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment>
+--     <https://registry.khronos.org/vulkan/specs/latest/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
@@ -2533,21 +2692,21 @@
 --
 -- -   #VUID-VkFramebufferCreateInfo-width-00886# @width@ /must/ be less
 --     than or equal to
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxFramebufferWidth maxFramebufferWidth>
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxFramebufferHeight maxFramebufferHeight>
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxFramebufferLayers maxFramebufferLayers>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxFramebufferLayers maxFramebufferLayers>
 --
 -- -   #VUID-VkFramebufferCreateInfo-renderPass-02531# If @renderPass@ was
 --     specified with non-zero view masks, @layers@ /must/ be @1@
@@ -2559,7 +2718,7 @@
 --     taken from a 3D image /must/ not be a depth\/stencil format
 --
 -- -   #VUID-VkFramebufferCreateInfo-flags-03189# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-imagelessFramebuffer imagelessFramebuffer>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-imagelessFramebuffer imagelessFramebuffer>
 --     feature is not enabled, @flags@ /must/ not include
 --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT'
 --
@@ -2582,7 +2741,7 @@
 --     member of a
 --     'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfo'
 --     structure in the @pNext@ chain that is used as an input, color,
---     resolve or depth\/stencil attachment in @renderPass@ /must/ be
+--     resolve, or depth\/stencil attachment in @renderPass@ /must/ be
 --     greater than or equal to @width@
 --
 -- -   #VUID-VkFramebufferCreateInfo-flags-04542# If @flags@ includes
@@ -2591,7 +2750,7 @@
 --     member of a
 --     'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfo'
 --     structure in the @pNext@ chain that is used as an input, color,
---     resolve or depth\/stencil attachment in @renderPass@ /must/ be
+--     resolve, or depth\/stencil attachment in @renderPass@ /must/ be
 --     greater than or equal to @height@
 --
 -- -   #VUID-VkFramebufferCreateInfo-flags-03196# If @flags@ includes
@@ -2615,9 +2774,9 @@
 --     \(\left\lceil{\frac{height}{maxFragmentDensityTexelSize_{height}}}\right\rceil\)
 --
 -- -   #VUID-VkFramebufferCreateInfo-flags-04543# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-maintenance7 maintenance7>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance7 maintenance7>
 --     feature is not enabled or the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-robustFragmentShadingRateAttachmentAccess robustFragmentShadingRateAttachmentAccess>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-robustFragmentShadingRateAttachmentAccess robustFragmentShadingRateAttachmentAccess>
 --     limit is 'Vulkan.Core10.FundamentalTypes.FALSE' or the @imageView@
 --     member of a
 --     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.RenderingFragmentShadingRateAttachmentInfoKHR'
@@ -2629,7 +2788,7 @@
 --     member of a
 --     'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfo'
 --     structure in the @pNext@ chain that is used as a
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment>
+--     <https://registry.khronos.org/vulkan/specs/latest/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
@@ -2637,9 +2796,9 @@
 --     which references that attachment
 --
 -- -   #VUID-VkFramebufferCreateInfo-flags-04544# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-maintenance7 maintenance7>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance7 maintenance7>
 --     feature is not enabled or the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-robustFragmentShadingRateAttachmentAccess robustFragmentShadingRateAttachmentAccess>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-robustFragmentShadingRateAttachmentAccess robustFragmentShadingRateAttachmentAccess>
 --     limit is 'Vulkan.Core10.FundamentalTypes.FALSE' or the @imageView@
 --     member of a
 --     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.RenderingFragmentShadingRateAttachmentInfoKHR'
@@ -2651,7 +2810,7 @@
 --     member of a
 --     'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfo'
 --     structure in the @pNext@ chain that is used as a
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment>
+--     <https://registry.khronos.org/vulkan/specs/latest/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
@@ -2664,7 +2823,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment>
+--     <https://registry.khronos.org/vulkan/specs/latest/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 @flags@ includes
@@ -2674,7 +2833,7 @@
 --     member of a
 --     'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfo'
 --     structure in the @pNext@ chain that is used as a
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment>
 --     /must/ be either @1@, or greater than the index of the most
 --     significant bit set in any of those view masks
 --
@@ -2757,9 +2916,9 @@
 --     include
 --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',
 --     each element of @pAttachments@ that is used as a fragment shading
---     rate attachment by @renderPass@ /must/ have been created with a
---     @usage@ value including
+--     rate attachment by @renderPass@ /must/ have been created with the
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
+--     usage flag set
 --
 -- -   #VUID-VkFramebufferCreateInfo-flags-04549# If @flags@ includes
 --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',
@@ -2772,8 +2931,8 @@
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
 --
 -- -   #VUID-VkFramebufferCreateInfo-samples-06881# If
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#subpass-multisampledrendertosinglesampled multisampled-render-to-single-sampled>
---     is enabled for any subpass, all color, depth\/stencil and input
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#subpass-multisampledrendertosinglesampled multisampled-render-to-single-sampled>
+--     is enabled for any subpass, all color, depth\/stencil, and input
 --     attachments used in that subpass which have
 --     'AttachmentDescription'::@samples@ or
 --     'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.AttachmentDescription2'::@samples@
@@ -2784,8 +2943,8 @@
 --     in their 'Vulkan.Core10.Image.ImageCreateInfo'::@flags@
 --
 -- -   #VUID-VkFramebufferCreateInfo-samples-07009# If
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#subpass-multisampledrendertosinglesampled multisampled-render-to-single-sampled>
---     is enabled for any subpass, all color, depth\/stencil and input
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#subpass-multisampledrendertosinglesampled multisampled-render-to-single-sampled>
+--     is enabled for any subpass, all color, depth\/stencil, and input
 --     attachments used in that subpass which have
 --     'AttachmentDescription'::@samples@ or
 --     'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.AttachmentDescription2'::@samples@
@@ -2796,7 +2955,7 @@
 --
 -- -   #VUID-VkFramebufferCreateInfo-nullColorAttachmentWithExternalFormatResolve-09349#
 --     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-nullColorAttachmentWithExternalFormatResolve nullColorAttachmentWithExternalFormatResolve>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-nullColorAttachmentWithExternalFormatResolve nullColorAttachmentWithExternalFormatResolve>
 --     is 'Vulkan.Core10.FundamentalTypes.FALSE', and @flags@ does not
 --     include
 --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',
@@ -2832,7 +2991,7 @@
 --     'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfo'
 --
 -- -   #VUID-VkFramebufferCreateInfo-sType-unique# The @sType@ value of
---     each struct in the @pNext@ chain /must/ be unique
+--     each structure in the @pNext@ chain /must/ be unique
 --
 -- -   #VUID-VkFramebufferCreateInfo-flags-parameter# @flags@ /must/ be a
 --     valid combination of
@@ -2861,8 +3020,9 @@
     flags :: FramebufferCreateFlags
   , -- | @renderPass@ is a render pass defining what render passes the
     -- framebuffer will be compatible with. See
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-compatibility Render Pass Compatibility>
-    -- for details.
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-compatibility Render Pass Compatibility>
+    -- for details. The implementation /must/ not access this object outside of
+    -- the duration of the command this structure is passed to.
     renderPass :: RenderPass
   , -- | @pAttachments@ is a pointer to an array of
     -- 'Vulkan.Core10.Handles.ImageView' handles, each of which will be used as
diff --git a/src/Vulkan/Core10/Pipeline.hs b/src/Vulkan/Core10/Pipeline.hs
deleted file mode 100644
--- a/src/Vulkan/Core10/Pipeline.hs
+++ /dev/null
@@ -1,7692 +0,0 @@
-{-# language CPP #-}
--- No documentation found for Chapter "Pipeline"
-module Vulkan.Core10.Pipeline  ( createGraphicsPipelines
-                               , withGraphicsPipelines
-                               , createComputePipelines
-                               , withComputePipelines
-                               , destroyPipeline
-                               , Viewport(..)
-                               , SpecializationMapEntry(..)
-                               , SpecializationInfo(..)
-                               , PipelineShaderStageCreateInfo(..)
-                               , ComputePipelineCreateInfo(..)
-                               , VertexInputBindingDescription(..)
-                               , VertexInputAttributeDescription(..)
-                               , PipelineVertexInputStateCreateInfo(..)
-                               , PipelineInputAssemblyStateCreateInfo(..)
-                               , PipelineTessellationStateCreateInfo(..)
-                               , PipelineViewportStateCreateInfo(..)
-                               , PipelineRasterizationStateCreateInfo(..)
-                               , PipelineMultisampleStateCreateInfo(..)
-                               , PipelineColorBlendAttachmentState(..)
-                               , PipelineColorBlendStateCreateInfo(..)
-                               , PipelineDynamicStateCreateInfo(..)
-                               , StencilOpState(..)
-                               , PipelineDepthStencilStateCreateInfo(..)
-                               , GraphicsPipelineCreateInfo(..)
-                               , Pipeline(..)
-                               , PipelineDynamicStateCreateFlags(..)
-                               , PipelineMultisampleStateCreateFlags(..)
-                               , PipelineRasterizationStateCreateFlags(..)
-                               , PipelineViewportStateCreateFlags(..)
-                               , PipelineTessellationStateCreateFlags(..)
-                               , PipelineInputAssemblyStateCreateFlags(..)
-                               , PipelineVertexInputStateCreateFlags(..)
-                               , PrimitiveTopology(..)
-                               , CompareOp(..)
-                               , PolygonMode(..)
-                               , FrontFace(..)
-                               , BlendFactor(..)
-                               , BlendOp(..)
-                               , StencilOp(..)
-                               , LogicOp(..)
-                               , VertexInputRate(..)
-                               , DynamicState(..)
-                               , CullModeFlagBits(..)
-                               , CullModeFlags
-                               , ShaderStageFlagBits(..)
-                               , ShaderStageFlags
-                               , PipelineCreateFlagBits(..)
-                               , PipelineCreateFlags
-                               , PipelineShaderStageCreateFlagBits(..)
-                               , PipelineShaderStageCreateFlags
-                               , ColorComponentFlagBits(..)
-                               , ColorComponentFlags
-                               , PipelineLayoutCreateFlagBits(..)
-                               , PipelineLayoutCreateFlags
-                               , PipelineColorBlendStateCreateFlagBits(..)
-                               , PipelineColorBlendStateCreateFlags
-                               , PipelineDepthStencilStateCreateFlagBits(..)
-                               , PipelineDepthStencilStateCreateFlags
-                               , SampleMask
-                               ) 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 Data.Foldable (traverse_)
-import Data.Typeable (eqT)
-import Foreign.Marshal.Alloc (allocaBytes)
-import Foreign.Marshal.Alloc (callocBytes)
-import Foreign.Marshal.Alloc (free)
-import Foreign.Marshal.Utils (maybePeek)
-import GHC.Base (when)
-import GHC.IO (throwIO)
-import GHC.Ptr (castPtr)
-import GHC.Ptr (nullFunPtr)
-import Foreign.Ptr (nullPtr)
-import qualified Foreign.Ptr (nullPtr)
-import Foreign.Ptr (plusPtr)
-import Data.ByteString (packCString)
-import Data.ByteString (useAsCString)
-import Data.Coerce (coerce)
-import Control.Monad.Trans.Class (lift)
-import Control.Monad.Trans.Cont (evalContT)
-import Data.Vector (generateM)
-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.Type.Equality ((:~:)(Refl))
-import Data.Typeable (Typeable)
-import Foreign.C.Types (CChar)
-import Foreign.C.Types (CFloat)
-import Foreign.C.Types (CFloat(..))
-import Foreign.C.Types (CFloat(CFloat))
-import Foreign.C.Types (CSize)
-import Foreign.C.Types (CSize(..))
-import Foreign.C.Types (CSize(CSize))
-import Foreign.Storable (Storable)
-import Foreign.Storable (Storable(peek))
-import Foreign.Storable (Storable(poke))
-import qualified Foreign.Storable (Storable(..))
-import GHC.Generics (Generic)
-import GHC.IO.Exception (IOErrorType(..))
-import GHC.IO.Exception (IOException(..))
-import Data.Int (Int32)
-import Foreign.Ptr (FunPtr)
-import Foreign.Ptr (Ptr)
-import Data.Word (Word32)
-import Data.Word (Word64)
-import Data.ByteString (ByteString)
-import Data.Kind (Type)
-import Control.Monad.Trans.Cont (ContT(..))
-import 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.Utils (lowerArrayPtr)
-import Vulkan.CStruct.Extends (peekSomeCStruct)
-import Vulkan.CStruct.Extends (pokeSomeCStruct)
-import Vulkan.CStruct.Extends (withSomeCStruct)
-import Vulkan.NamedType ((:::))
-import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)
-import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_mixed_attachment_samples (AttachmentSampleCountInfoAMD)
-import Vulkan.Core10.Enums.BlendFactor (BlendFactor)
-import Vulkan.Core10.Enums.BlendOp (BlendOp)
-import Vulkan.Core10.FundamentalTypes (Bool32)
-import Vulkan.CStruct.Extends (Chain)
-import Vulkan.Core10.Enums.ColorComponentFlagBits (ColorComponentFlags)
-import Vulkan.Core10.Enums.CompareOp (CompareOp)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_generated_commands_compute (ComputePipelineIndirectBufferInfoNV)
-import Vulkan.Core10.Enums.CullModeFlagBits (CullModeFlags)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_debug_utils (DebugUtilsObjectNameInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_depth_bias_control (DepthBiasRepresentationInfoEXT)
-import Vulkan.Core10.Handles (Device)
-import Vulkan.Core10.Handles (Device(..))
-import Vulkan.Core10.Handles (Device(Device))
-import Vulkan.Dynamic (DeviceCmds(pVkCreateComputePipelines))
-import Vulkan.Dynamic (DeviceCmds(pVkCreateGraphicsPipelines))
-import Vulkan.Dynamic (DeviceCmds(pVkDestroyPipeline))
-import Vulkan.Core10.Handles (Device_T)
-import Vulkan.Core10.Enums.DynamicState (DynamicState)
-import Vulkan.CStruct.Extends (Extends)
-import Vulkan.CStruct.Extends (Extendss)
-import Vulkan.CStruct.Extends (Extensible(..))
-import {-# SOURCE #-} Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer (ExternalFormatANDROID)
-import Vulkan.Core10.Enums.Format (Format)
-import Vulkan.Core10.Enums.FrontFace (FrontFace)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_graphics_pipeline_library (GraphicsPipelineLibraryCreateInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_generated_commands (GraphicsPipelineShaderGroupsCreateInfoNV)
-import Vulkan.Core10.Enums.LogicOp (LogicOp)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NVX_multiview_per_view_attributes (MultiviewPerViewAttributesInfoNVX)
-import Vulkan.CStruct.Extends (PeekChain)
-import Vulkan.CStruct.Extends (PeekChain(..))
-import Vulkan.Core10.Handles (Pipeline)
-import Vulkan.Core10.Handles (Pipeline(..))
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_pipeline_binary (PipelineBinaryInfoKHR)
-import Vulkan.Core10.Handles (PipelineCache)
-import Vulkan.Core10.Handles (PipelineCache(..))
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_blend_operation_advanced (PipelineColorBlendAdvancedStateCreateInfoEXT)
-import Vulkan.Core10.Enums.PipelineColorBlendStateCreateFlagBits (PipelineColorBlendStateCreateFlags)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_color_write_enable (PipelineColorWriteCreateInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_pipeline_compiler_control (PipelineCompilerControlCreateInfoAMD)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_framebuffer_mixed_samples (PipelineCoverageModulationStateCreateInfoNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_coverage_reduction_mode (PipelineCoverageReductionStateCreateInfoNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_fragment_coverage_to_color (PipelineCoverageToColorStateCreateInfoNV)
-import Vulkan.Core10.Enums.PipelineCreateFlagBits (PipelineCreateFlags)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance5 (PipelineCreateFlags2CreateInfoKHR)
-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)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_fragment_shading_rate_enums (PipelineFragmentShadingRateEnumStateCreateInfoNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_fragment_shading_rate (PipelineFragmentShadingRateStateCreateInfoKHR)
-import Vulkan.Core10.Enums.PipelineInputAssemblyStateCreateFlags (PipelineInputAssemblyStateCreateFlags)
-import Vulkan.Core10.Handles (PipelineLayout)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_pipeline_library (PipelineLibraryCreateInfoKHR)
-import Vulkan.Core10.Enums.PipelineMultisampleStateCreateFlags (PipelineMultisampleStateCreateFlags)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_conservative_rasterization (PipelineRasterizationConservativeStateCreateInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_depth_clip_enable (PipelineRasterizationDepthClipStateCreateInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_line_rasterization (PipelineRasterizationLineStateCreateInfoKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_provoking_vertex (PipelineRasterizationProvokingVertexStateCreateInfoEXT)
-import Vulkan.Core10.Enums.PipelineRasterizationStateCreateFlags (PipelineRasterizationStateCreateFlags)
-import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_rasterization_order (PipelineRasterizationStateRasterizationOrderAMD)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_transform_feedback (PipelineRasterizationStateStreamCreateInfoEXT)
-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_pipeline_robustness (PipelineRobustnessCreateInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_sample_locations (PipelineSampleLocationsStateCreateInfoEXT)
-import Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits (PipelineShaderStageCreateFlags)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_shader_module_identifier (PipelineShaderStageModuleIdentifierCreateInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_AMDX_shader_enqueue (PipelineShaderStageNodeCreateInfoAMDX)
-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_KHR_vertex_attribute_divisor (PipelineVertexInputDivisorStateCreateInfoKHR)
-import Vulkan.Core10.Enums.PipelineVertexInputStateCreateFlags (PipelineVertexInputStateCreateFlags)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_shading_rate_image (PipelineViewportCoarseSampleOrderStateCreateInfoNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_depth_clamp_control (PipelineViewportDepthClampControlCreateInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_depth_clip_control (PipelineViewportDepthClipControlCreateInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_scissor_exclusive (PipelineViewportExclusiveScissorStateCreateInfoNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_shading_rate_image (PipelineViewportShadingRateImageStateCreateInfoNV)
-import Vulkan.Core10.Enums.PipelineViewportStateCreateFlags (PipelineViewportStateCreateFlags)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_viewport_swizzle (PipelineViewportSwizzleStateCreateInfoNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_clip_space_w_scaling (PipelineViewportWScalingStateCreateInfoNV)
-import Vulkan.CStruct.Extends (PokeChain)
-import Vulkan.CStruct.Extends (PokeChain(..))
-import Vulkan.Core10.Enums.PolygonMode (PolygonMode)
-import Vulkan.Core10.Enums.PrimitiveTopology (PrimitiveTopology)
-import Vulkan.Core10.FundamentalTypes (Rect2D)
-import Vulkan.Core10.Handles (RenderPass)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read (RenderingAttachmentLocationInfoKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read (RenderingInputAttachmentIndexInfoKHR)
-import Vulkan.Core10.Enums.Result (Result)
-import Vulkan.Core10.Enums.Result (Result(..))
-import Vulkan.Core10.Enums.SampleCountFlagBits (SampleCountFlagBits)
-import Vulkan.Core10.Enums.SampleCountFlagBits (SampleCountFlagBits(SampleCountFlagBits))
-import Vulkan.Core10.FundamentalTypes (SampleMask)
-import Vulkan.Core10.Handles (ShaderModule)
-import {-# SOURCE #-} Vulkan.Core10.Shader (ShaderModuleCreateInfo)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_validation_cache (ShaderModuleValidationCacheCreateInfoEXT)
-import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlagBits)
-import Vulkan.CStruct.Extends (SomeStruct)
-import Vulkan.CStruct.Extends (SomeStruct(..))
-import Vulkan.Core10.Enums.StencilOp (StencilOp)
-import Vulkan.Core10.Enums.StructureType (StructureType)
-import {-# SOURCE #-} Vulkan.Extensions.VK_HUAWEI_subpass_shading (SubpassShadingPipelineCreateInfoHUAWEI)
-import Vulkan.Core10.Enums.VertexInputRate (VertexInputRate)
-import Vulkan.Exception (VulkanException(..))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO))
-import Vulkan.Core10.Enums.Result (Result(SUCCESS))
-import Vulkan.Core10.Enums.BlendFactor (BlendFactor(..))
-import Vulkan.Core10.Enums.BlendOp (BlendOp(..))
-import Vulkan.Core10.Enums.ColorComponentFlagBits (ColorComponentFlagBits(..))
-import Vulkan.Core10.Enums.ColorComponentFlagBits (ColorComponentFlags)
-import Vulkan.Core10.Enums.CompareOp (CompareOp(..))
-import Vulkan.Core10.Enums.CullModeFlagBits (CullModeFlagBits(..))
-import Vulkan.Core10.Enums.CullModeFlagBits (CullModeFlags)
-import Vulkan.Core10.Enums.DynamicState (DynamicState(..))
-import Vulkan.Core10.Enums.FrontFace (FrontFace(..))
-import Vulkan.Core10.Enums.LogicOp (LogicOp(..))
-import Vulkan.Core10.Handles (Pipeline(..))
-import Vulkan.Core10.Enums.PipelineColorBlendStateCreateFlagBits (PipelineColorBlendStateCreateFlagBits(..))
-import Vulkan.Core10.Enums.PipelineColorBlendStateCreateFlagBits (PipelineColorBlendStateCreateFlags)
-import Vulkan.Core10.Enums.PipelineCreateFlagBits (PipelineCreateFlagBits(..))
-import Vulkan.Core10.Enums.PipelineCreateFlagBits (PipelineCreateFlags)
-import Vulkan.Core10.Enums.PipelineDepthStencilStateCreateFlagBits (PipelineDepthStencilStateCreateFlagBits(..))
-import Vulkan.Core10.Enums.PipelineDepthStencilStateCreateFlagBits (PipelineDepthStencilStateCreateFlags)
-import Vulkan.Core10.Enums.PipelineDynamicStateCreateFlags (PipelineDynamicStateCreateFlags(..))
-import Vulkan.Core10.Enums.PipelineInputAssemblyStateCreateFlags (PipelineInputAssemblyStateCreateFlags(..))
-import Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits (PipelineLayoutCreateFlagBits(..))
-import Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits (PipelineLayoutCreateFlags)
-import Vulkan.Core10.Enums.PipelineMultisampleStateCreateFlags (PipelineMultisampleStateCreateFlags(..))
-import Vulkan.Core10.Enums.PipelineRasterizationStateCreateFlags (PipelineRasterizationStateCreateFlags(..))
-import Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits (PipelineShaderStageCreateFlagBits(..))
-import Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits (PipelineShaderStageCreateFlags)
-import Vulkan.Core10.Enums.PipelineTessellationStateCreateFlags (PipelineTessellationStateCreateFlags(..))
-import Vulkan.Core10.Enums.PipelineVertexInputStateCreateFlags (PipelineVertexInputStateCreateFlags(..))
-import Vulkan.Core10.Enums.PipelineViewportStateCreateFlags (PipelineViewportStateCreateFlags(..))
-import Vulkan.Core10.Enums.PolygonMode (PolygonMode(..))
-import Vulkan.Core10.Enums.PrimitiveTopology (PrimitiveTopology(..))
-import Vulkan.Core10.FundamentalTypes (SampleMask)
-import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlagBits(..))
-import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)
-import Vulkan.Core10.Enums.StencilOp (StencilOp(..))
-import Vulkan.Core10.Enums.VertexInputRate (VertexInputRate(..))
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCreateGraphicsPipelines
-  :: FunPtr (Ptr Device_T -> PipelineCache -> Word32 -> Ptr (SomeStruct GraphicsPipelineCreateInfo) -> Ptr AllocationCallbacks -> Ptr Pipeline -> IO Result) -> Ptr Device_T -> PipelineCache -> Word32 -> Ptr (SomeStruct GraphicsPipelineCreateInfo) -> Ptr AllocationCallbacks -> Ptr Pipeline -> IO Result
-
--- | vkCreateGraphicsPipelines - Create graphics pipelines
---
--- = Description
---
--- The 'GraphicsPipelineCreateInfo' structure includes an array of
--- 'PipelineShaderStageCreateInfo' structures for each of the desired
--- active shader stages, as well as creation information for all relevant
--- fixed-function stages, and a pipeline layout.
---
--- Pipelines are created and returned as described for
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-multiple Multiple Pipeline Creation>.
---
--- == Valid Usage
---
--- -   #VUID-vkCreateGraphicsPipelines-device-09662# @device@ /must/
---     support at least one queue family with the
---     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' capability
---
--- -   #VUID-vkCreateGraphicsPipelines-flags-00720# If the @flags@ member
---     of any element of @pCreateInfos@ contains the
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'
---     flag, and the @basePipelineIndex@ member of that same element is not
---     @-1@, @basePipelineIndex@ /must/ be less than the index into
---     @pCreateInfos@ that corresponds to that element
---
--- -   #VUID-vkCreateGraphicsPipelines-flags-00721# If the @flags@ member
---     of any element of @pCreateInfos@ contains the
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'
---     flag, the base pipeline /must/ have been created with the
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT'
---     flag set
---
--- -   #VUID-vkCreateGraphicsPipelines-pipelineCache-02876# If
---     @pipelineCache@ was created with
---     'Vulkan.Core10.Enums.PipelineCacheCreateFlagBits.PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT',
---     host access to @pipelineCache@ /must/ be
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#fundamentals-threadingbehavior externally synchronized>
---
--- -   #VUID-vkCreateGraphicsPipelines-pNext-09616# If
---     'Vulkan.Extensions.VK_KHR_pipeline_binary.PipelineBinaryInfoKHR'::@binaryCount@
---     is not @0@ for any element of @pCreateInfos@, @pipelineCache@ /must/
---     be 'Vulkan.Core10.APIConstants.NULL_HANDLE'
---
--- -   #VUID-vkCreateGraphicsPipelines-pNext-09617# If a
---     'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlags2CreateInfoKHR'
---     structure with the
---     'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR'
---     flag set is included in the @pNext@ chain of any element of
---     @pCreateInfos@, @pipelineCache@ /must/ be
---     'Vulkan.Core10.APIConstants.NULL_HANDLE'
---
--- -   #VUID-vkCreateGraphicsPipelines-binaryCount-09620# If
---     'Vulkan.Extensions.VK_KHR_pipeline_binary.PipelineBinaryInfoKHR'::@binaryCount@
---     is not @0@ for any element of @pCreateInfos@,
---     'Vulkan.Core13.Enums.PipelineCreationFeedbackFlagBits.PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT'
---     /must/ not be set in the @flags@ of that element
---
--- -   #VUID-vkCreateGraphicsPipelines-binaryCount-09621# If
---     'Vulkan.Extensions.VK_KHR_pipeline_binary.PipelineBinaryInfoKHR'::@binaryCount@
---     is not @0@ for any element of @pCreateInfos@,
---     'Vulkan.Core13.Enums.PipelineCreationFeedbackFlagBits.PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT'
---     /must/ not be set in the @flags@ of that element
---
--- -   #VUID-vkCreateGraphicsPipelines-binaryCount-09622# If
---     'Vulkan.Extensions.VK_KHR_pipeline_binary.PipelineBinaryInfoKHR'::@binaryCount@
---     is not @0@ for any element of @pCreateInfos@,
---     'Vulkan.Extensions.VK_EXT_pipeline_creation_cache_control.PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT'
---     /must/ not be set in the @flags@ of that element
---
--- 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'
--- on @flags@ for any element of @pCreateInfos@ while passing
--- 'Vulkan.Core10.APIConstants.NULL_HANDLE' for @pipelineCache@.
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCreateGraphicsPipelines-device-parameter# @device@ /must/ be
---     a valid 'Vulkan.Core10.Handles.Device' handle
---
--- -   #VUID-vkCreateGraphicsPipelines-pipelineCache-parameter# If
---     @pipelineCache@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
---     @pipelineCache@ /must/ be a valid
---     'Vulkan.Core10.Handles.PipelineCache' handle
---
--- -   #VUID-vkCreateGraphicsPipelines-pCreateInfos-parameter#
---     @pCreateInfos@ /must/ be a valid pointer to an array of
---     @createInfoCount@ valid 'GraphicsPipelineCreateInfo' structures
---
--- -   #VUID-vkCreateGraphicsPipelines-pAllocator-parameter# If
---     @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid pointer
---     to a valid 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'
---     structure
---
--- -   #VUID-vkCreateGraphicsPipelines-pPipelines-parameter# @pPipelines@
---     /must/ be a valid pointer to an array of @createInfoCount@
---     'Vulkan.Core10.Handles.Pipeline' handles
---
--- -   #VUID-vkCreateGraphicsPipelines-createInfoCount-arraylength#
---     @createInfoCount@ /must/ be greater than @0@
---
--- -   #VUID-vkCreateGraphicsPipelines-pipelineCache-parent# If
---     @pipelineCache@ is a valid handle, it /must/ have been created,
---     allocated, or retrieved from @device@
---
--- == Return Codes
---
--- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
---
---     -   'Vulkan.Core10.Enums.Result.SUCCESS'
---
---     -   '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>]
---
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
---
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
---
---     -   'Vulkan.Core10.Enums.Result.ERROR_INVALID_SHADER_NV'
---
--- = 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.AllocationCallbacks.AllocationCallbacks',
--- 'Vulkan.Core10.Handles.Device', 'GraphicsPipelineCreateInfo',
--- 'Vulkan.Core10.Handles.Pipeline', 'Vulkan.Core10.Handles.PipelineCache'
-createGraphicsPipelines :: forall io
-                         . (MonadIO io)
-                        => -- | @device@ is the logical device that creates the graphics pipelines.
-                           Device
-                        -> -- | @pipelineCache@ is either 'Vulkan.Core10.APIConstants.NULL_HANDLE',
-                           -- indicating that pipeline caching is disabled; or the handle of a valid
-                           -- <https://registry.khronos.org/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
-                        -> -- | @pCreateInfos@ is a pointer to an array of 'GraphicsPipelineCreateInfo'
-                           -- structures.
-                           ("createInfos" ::: Vector (SomeStruct GraphicsPipelineCreateInfo))
-                        -> -- | @pAllocator@ controls host memory allocation as described in the
-                           -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
-                           -- chapter.
-                           ("allocator" ::: Maybe AllocationCallbacks)
-                        -> io (Result, ("pipelines" ::: Vector Pipeline))
-createGraphicsPipelines device
-                          pipelineCache
-                          createInfos
-                          allocator = liftIO . evalContT $ do
-  let vkCreateGraphicsPipelinesPtr = pVkCreateGraphicsPipelines (case device of Device{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCreateGraphicsPipelinesPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCreateGraphicsPipelines is null" Nothing Nothing
-  let vkCreateGraphicsPipelines' = mkVkCreateGraphicsPipelines vkCreateGraphicsPipelinesPtr
-  pPCreateInfos <- ContT $ allocaBytes @(GraphicsPipelineCreateInfo _) ((Data.Vector.length (createInfos)) * 144)
-  Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPCreateInfos `plusPtr` (144 * (i)) :: Ptr (GraphicsPipelineCreateInfo _))) (e) . ($ ())) (createInfos)
-  pAllocator <- case (allocator) of
-    Nothing -> pure nullPtr
-    Just j -> ContT $ withCStruct (j)
-  pPPipelines <- ContT $ bracket (callocBytes @Pipeline ((fromIntegral ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32))) * 8)) free
-  r <- lift $ traceAroundEvent "vkCreateGraphicsPipelines" (vkCreateGraphicsPipelines'
-                                                              (deviceHandle (device))
-                                                              (pipelineCache)
-                                                              ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32))
-                                                              (forgetExtensions (pPCreateInfos))
-                                                              pAllocator
-                                                              (pPPipelines))
-  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
-  pPipelines <- lift $ generateM (fromIntegral ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32))) (\i -> peek @Pipeline ((pPPipelines `advancePtrBytes` (8 * (i)) :: Ptr Pipeline)))
-  pure $ (r, pPipelines)
-
--- | A convenience wrapper to make a compatible pair of calls to
--- 'createGraphicsPipelines' and 'destroyPipeline'
---
--- To ensure that 'destroyPipeline' 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.
---
-withGraphicsPipelines :: forall io r . MonadIO io => Device -> PipelineCache -> Vector (SomeStruct GraphicsPipelineCreateInfo) -> Maybe AllocationCallbacks -> (io (Result, Vector Pipeline) -> ((Result, Vector Pipeline) -> io ()) -> r) -> r
-withGraphicsPipelines device pipelineCache pCreateInfos pAllocator b =
-  b (createGraphicsPipelines device pipelineCache pCreateInfos pAllocator)
-    (\(_, o1) -> traverse_ (\o1Elem -> destroyPipeline device
-                                                         o1Elem
-                                                         pAllocator) o1)
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCreateComputePipelines
-  :: FunPtr (Ptr Device_T -> PipelineCache -> Word32 -> Ptr (SomeStruct ComputePipelineCreateInfo) -> Ptr AllocationCallbacks -> Ptr Pipeline -> IO Result) -> Ptr Device_T -> PipelineCache -> Word32 -> Ptr (SomeStruct ComputePipelineCreateInfo) -> Ptr AllocationCallbacks -> Ptr Pipeline -> IO Result
-
--- | vkCreateComputePipelines - Creates a new compute pipeline object
---
--- = Description
---
--- Pipelines are created and returned as described for
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-multiple Multiple Pipeline Creation>.
---
--- == Valid Usage
---
--- -   #VUID-vkCreateComputePipelines-device-09661# @device@ /must/ support
---     at least one queue family with the
---     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT' capability
---
--- -   #VUID-vkCreateComputePipelines-flags-00695# If the @flags@ member of
---     any element of @pCreateInfos@ contains the
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'
---     flag, and the @basePipelineIndex@ member of that same element is not
---     @-1@, @basePipelineIndex@ /must/ be less than the index into
---     @pCreateInfos@ that corresponds to that element
---
--- -   #VUID-vkCreateComputePipelines-flags-00696# If the @flags@ member of
---     any element of @pCreateInfos@ contains the
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'
---     flag, the base pipeline /must/ have been created with the
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT'
---     flag set
---
--- -   #VUID-vkCreateComputePipelines-pipelineCache-02873# If
---     @pipelineCache@ was created with
---     'Vulkan.Core10.Enums.PipelineCacheCreateFlagBits.PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT',
---     host access to @pipelineCache@ /must/ be
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#fundamentals-threadingbehavior externally synchronized>
---
--- -   #VUID-vkCreateComputePipelines-pNext-09616# If
---     'Vulkan.Extensions.VK_KHR_pipeline_binary.PipelineBinaryInfoKHR'::@binaryCount@
---     is not @0@ for any element of @pCreateInfos@, @pipelineCache@ /must/
---     be 'Vulkan.Core10.APIConstants.NULL_HANDLE'
---
--- -   #VUID-vkCreateComputePipelines-pNext-09617# If a
---     'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlags2CreateInfoKHR'
---     structure with the
---     'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR'
---     flag set is included in the @pNext@ chain of any element of
---     @pCreateInfos@, @pipelineCache@ /must/ be
---     'Vulkan.Core10.APIConstants.NULL_HANDLE'
---
--- -   #VUID-vkCreateComputePipelines-binaryCount-09620# If
---     'Vulkan.Extensions.VK_KHR_pipeline_binary.PipelineBinaryInfoKHR'::@binaryCount@
---     is not @0@ for any element of @pCreateInfos@,
---     'Vulkan.Core13.Enums.PipelineCreationFeedbackFlagBits.PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT'
---     /must/ not be set in the @flags@ of that element
---
--- -   #VUID-vkCreateComputePipelines-binaryCount-09621# If
---     'Vulkan.Extensions.VK_KHR_pipeline_binary.PipelineBinaryInfoKHR'::@binaryCount@
---     is not @0@ for any element of @pCreateInfos@,
---     'Vulkan.Core13.Enums.PipelineCreationFeedbackFlagBits.PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT'
---     /must/ not be set in the @flags@ of that element
---
--- -   #VUID-vkCreateComputePipelines-binaryCount-09622# If
---     'Vulkan.Extensions.VK_KHR_pipeline_binary.PipelineBinaryInfoKHR'::@binaryCount@
---     is not @0@ for any element of @pCreateInfos@,
---     'Vulkan.Extensions.VK_EXT_pipeline_creation_cache_control.PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT'
---     /must/ not be set in the @flags@ of that element
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCreateComputePipelines-device-parameter# @device@ /must/ be
---     a valid 'Vulkan.Core10.Handles.Device' handle
---
--- -   #VUID-vkCreateComputePipelines-pipelineCache-parameter# If
---     @pipelineCache@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
---     @pipelineCache@ /must/ be a valid
---     'Vulkan.Core10.Handles.PipelineCache' handle
---
--- -   #VUID-vkCreateComputePipelines-pCreateInfos-parameter#
---     @pCreateInfos@ /must/ be a valid pointer to an array of
---     @createInfoCount@ valid 'ComputePipelineCreateInfo' structures
---
--- -   #VUID-vkCreateComputePipelines-pAllocator-parameter# If @pAllocator@
---     is not @NULL@, @pAllocator@ /must/ be a valid pointer to a valid
---     'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' structure
---
--- -   #VUID-vkCreateComputePipelines-pPipelines-parameter# @pPipelines@
---     /must/ be a valid pointer to an array of @createInfoCount@
---     'Vulkan.Core10.Handles.Pipeline' handles
---
--- -   #VUID-vkCreateComputePipelines-createInfoCount-arraylength#
---     @createInfoCount@ /must/ be greater than @0@
---
--- -   #VUID-vkCreateComputePipelines-pipelineCache-parent# If
---     @pipelineCache@ is a valid handle, it /must/ have been created,
---     allocated, or retrieved from @device@
---
--- == Return Codes
---
--- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
---
---     -   'Vulkan.Core10.Enums.Result.SUCCESS'
---
---     -   '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>]
---
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
---
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
---
---     -   'Vulkan.Core10.Enums.Result.ERROR_INVALID_SHADER_NV'
---
--- = 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.AllocationCallbacks.AllocationCallbacks',
--- 'ComputePipelineCreateInfo', 'Vulkan.Core10.Handles.Device',
--- 'Vulkan.Core10.Handles.Pipeline', 'Vulkan.Core10.Handles.PipelineCache'
-createComputePipelines :: forall io
-                        . (MonadIO io)
-                       => -- | @device@ is the logical device that creates the compute pipelines.
-                          Device
-                       -> -- | @pipelineCache@ is either 'Vulkan.Core10.APIConstants.NULL_HANDLE',
-                          -- indicating that pipeline caching is disabled; or the handle of a valid
-                          -- <https://registry.khronos.org/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
-                       -> -- | @pCreateInfos@ is a pointer to an array of 'ComputePipelineCreateInfo'
-                          -- structures.
-                          ("createInfos" ::: Vector (SomeStruct ComputePipelineCreateInfo))
-                       -> -- | @pAllocator@ controls host memory allocation as described in the
-                          -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
-                          -- chapter.
-                          ("allocator" ::: Maybe AllocationCallbacks)
-                       -> io (Result, ("pipelines" ::: Vector Pipeline))
-createComputePipelines device
-                         pipelineCache
-                         createInfos
-                         allocator = liftIO . evalContT $ do
-  let vkCreateComputePipelinesPtr = pVkCreateComputePipelines (case device of Device{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCreateComputePipelinesPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCreateComputePipelines is null" Nothing Nothing
-  let vkCreateComputePipelines' = mkVkCreateComputePipelines vkCreateComputePipelinesPtr
-  pPCreateInfos <- ContT $ allocaBytes @(ComputePipelineCreateInfo _) ((Data.Vector.length (createInfos)) * 96)
-  Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPCreateInfos `plusPtr` (96 * (i)) :: Ptr (ComputePipelineCreateInfo _))) (e) . ($ ())) (createInfos)
-  pAllocator <- case (allocator) of
-    Nothing -> pure nullPtr
-    Just j -> ContT $ withCStruct (j)
-  pPPipelines <- ContT $ bracket (callocBytes @Pipeline ((fromIntegral ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32))) * 8)) free
-  r <- lift $ traceAroundEvent "vkCreateComputePipelines" (vkCreateComputePipelines'
-                                                             (deviceHandle (device))
-                                                             (pipelineCache)
-                                                             ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32))
-                                                             (forgetExtensions (pPCreateInfos))
-                                                             pAllocator
-                                                             (pPPipelines))
-  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
-  pPipelines <- lift $ generateM (fromIntegral ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32))) (\i -> peek @Pipeline ((pPPipelines `advancePtrBytes` (8 * (i)) :: Ptr Pipeline)))
-  pure $ (r, pPipelines)
-
--- | A convenience wrapper to make a compatible pair of calls to
--- 'createComputePipelines' and 'destroyPipeline'
---
--- To ensure that 'destroyPipeline' 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.
---
-withComputePipelines :: forall io r . MonadIO io => Device -> PipelineCache -> Vector (SomeStruct ComputePipelineCreateInfo) -> Maybe AllocationCallbacks -> (io (Result, Vector Pipeline) -> ((Result, Vector Pipeline) -> io ()) -> r) -> r
-withComputePipelines device pipelineCache pCreateInfos pAllocator b =
-  b (createComputePipelines device pipelineCache pCreateInfos pAllocator)
-    (\(_, o1) -> traverse_ (\o1Elem -> destroyPipeline device
-                                                         o1Elem
-                                                         pAllocator) o1)
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkDestroyPipeline
-  :: FunPtr (Ptr Device_T -> Pipeline -> Ptr AllocationCallbacks -> IO ()) -> Ptr Device_T -> Pipeline -> Ptr AllocationCallbacks -> IO ()
-
--- | vkDestroyPipeline - Destroy a pipeline object
---
--- == Valid Usage
---
--- -   #VUID-vkDestroyPipeline-pipeline-00765# All submitted commands that
---     refer to @pipeline@ /must/ have completed execution
---
--- -   #VUID-vkDestroyPipeline-pipeline-00766# If
---     'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' were
---     provided when @pipeline@ was created, a compatible set of callbacks
---     /must/ be provided here
---
--- -   #VUID-vkDestroyPipeline-pipeline-00767# If no
---     'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' were
---     provided when @pipeline@ was created, @pAllocator@ /must/ be @NULL@
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkDestroyPipeline-device-parameter# @device@ /must/ be a valid
---     'Vulkan.Core10.Handles.Device' handle
---
--- -   #VUID-vkDestroyPipeline-pipeline-parameter# If @pipeline@ is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', @pipeline@ /must/ be a
---     valid 'Vulkan.Core10.Handles.Pipeline' handle
---
--- -   #VUID-vkDestroyPipeline-pAllocator-parameter# If @pAllocator@ is not
---     @NULL@, @pAllocator@ /must/ be a valid pointer to a valid
---     'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' structure
---
--- -   #VUID-vkDestroyPipeline-pipeline-parent# If @pipeline@ is a valid
---     handle, it /must/ have been created, allocated, or retrieved from
---     @device@
---
--- == Host Synchronization
---
--- -   Host access to @pipeline@ /must/ be externally synchronized
---
--- = 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.AllocationCallbacks.AllocationCallbacks',
--- 'Vulkan.Core10.Handles.Device', 'Vulkan.Core10.Handles.Pipeline'
-destroyPipeline :: forall io
-                 . (MonadIO io)
-                => -- | @device@ is the logical device that destroys the pipeline.
-                   Device
-                -> -- | @pipeline@ is the handle of the pipeline to destroy.
-                   Pipeline
-                -> -- | @pAllocator@ controls host memory allocation as described in the
-                   -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
-                   -- chapter.
-                   ("allocator" ::: Maybe AllocationCallbacks)
-                -> io ()
-destroyPipeline device pipeline allocator = liftIO . evalContT $ do
-  let vkDestroyPipelinePtr = pVkDestroyPipeline (case device of Device{deviceCmds} -> deviceCmds)
-  lift $ unless (vkDestroyPipelinePtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkDestroyPipeline is null" Nothing Nothing
-  let vkDestroyPipeline' = mkVkDestroyPipeline vkDestroyPipelinePtr
-  pAllocator <- case (allocator) of
-    Nothing -> pure nullPtr
-    Just j -> ContT $ withCStruct (j)
-  lift $ traceAroundEvent "vkDestroyPipeline" (vkDestroyPipeline'
-                                                 (deviceHandle (device))
-                                                 (pipeline)
-                                                 pAllocator)
-  pure $ ()
-
-
--- | VkViewport - Structure specifying a viewport
---
--- = Description
---
--- Despite their names, @minDepth@ /can/ be less than, equal to, or greater
--- than @maxDepth@.
---
--- The framebuffer depth coordinate @z@f /may/ be represented using either
--- a fixed-point or floating-point representation. However, a
--- floating-point representation /must/ be used if the depth\/stencil
--- attachment has a floating-point depth component. If an m-bit fixed-point
--- representation is used, we assume that it represents each value
--- \(\frac{k}{2^m - 1}\), where k ∈ { 0, 1, …​, 2m-1 }, as k (e.g. 1.0 is
--- represented in binary as a string of all ones).
---
--- The viewport parameters shown in the above equations are found from
--- these values as
---
--- -   ox = @x@ + @width@ \/ 2
---
--- -   oy = @y@ + @height@ \/ 2
---
--- -   oz = @minDepth@ (or (@maxDepth@ + @minDepth@) \/ 2 if
---     'Vulkan.Extensions.VK_EXT_depth_clip_control.PipelineViewportDepthClipControlCreateInfoEXT'::@negativeOneToOne@
---     is 'Vulkan.Core10.FundamentalTypes.TRUE')
---
--- -   px = @width@
---
--- -   py = @height@
---
--- -   pz = @maxDepth@ - @minDepth@ (or (@maxDepth@ - @minDepth@) \/ 2 if
---     'Vulkan.Extensions.VK_EXT_depth_clip_control.PipelineViewportDepthClipControlCreateInfoEXT'::@negativeOneToOne@
---     is 'Vulkan.Core10.FundamentalTypes.TRUE')
---
--- If a render pass transform is enabled, the values (px,py) and (ox, oy)
--- defining the viewport are transformed as described in
--- <https://registry.khronos.org/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
--- the effect of negating the y coordinate in clip space before performing
--- the transform. When using a negative @height@, the application /should/
--- also adjust the @y@ value to point to the lower left corner of the
--- viewport instead of the upper left corner. Using the negative @height@
--- allows the application to avoid having to negate the y component of the
--- @Position@ output from the last
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader stage>.
---
--- The width and height of the
--- <https://registry.khronos.org/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-viewportSubPixelBits implementation-dependent precision>.
---
--- == Valid Usage
---
--- -   #VUID-VkViewport-width-01770# @width@ /must/ be greater than @0.0@
---
--- -   #VUID-VkViewport-width-01771# @width@ /must/ be less than or equal
---     to
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxViewportDimensions@[0]
---
--- -   #VUID-VkViewport-apiVersion-07917# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance1 VK_KHR_maintenance1>
---     extension is not enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_negative_viewport_height VK_AMD_negative_viewport_height>
---     extension is not enabled, and
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceProperties'::@apiVersion@
---     is less than Vulkan 1.1, @height@ /must/ be greater than @0.0@
---
--- -   #VUID-VkViewport-height-01773# The absolute value of @height@ /must/
---     be less than or equal to
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxViewportDimensions@[1]
---
--- -   #VUID-VkViewport-x-01774# @x@ /must/ be greater than or equal to
---     @viewportBoundsRange@[0]
---
--- -   #VUID-VkViewport-x-01232# (@x@ + @width@) /must/ be less than or
---     equal to @viewportBoundsRange@[1]
---
--- -   #VUID-VkViewport-y-01775# @y@ /must/ be greater than or equal to
---     @viewportBoundsRange@[0]
---
--- -   #VUID-VkViewport-y-01776# @y@ /must/ be less than or equal to
---     @viewportBoundsRange@[1]
---
--- -   #VUID-VkViewport-y-01777# (@y@ + @height@) /must/ be greater than or
---     equal to @viewportBoundsRange@[0]
---
--- -   #VUID-VkViewport-y-01233# (@y@ + @height@) /must/ be less than or
---     equal to @viewportBoundsRange@[1]
---
--- -   #VUID-VkViewport-minDepth-01234# If the
---     @VK_EXT_depth_range_unrestricted@ extension is not enabled,
---     @minDepth@ /must/ be between @0.0@ and @1.0@, inclusive
---
--- -   #VUID-VkViewport-maxDepth-01235# If the
---     @VK_EXT_depth_range_unrestricted@ extension is not enabled,
---     @maxDepth@ /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>,
--- '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).
-    x :: Float
-  , -- No documentation found for Nested "VkViewport" "y"
-    y :: Float
-  , -- | @width@ and @height@ are the viewport’s width and height, respectively.
-    width :: Float
-  , -- No documentation found for Nested "VkViewport" "height"
-    height :: Float
-  , -- | @minDepth@ and @maxDepth@ are the depth range for the viewport.
-    minDepth :: Float
-  , -- No documentation found for Nested "VkViewport" "maxDepth"
-    maxDepth :: Float
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (Viewport)
-#endif
-deriving instance Show Viewport
-
-instance ToCStruct Viewport where
-  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p Viewport{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr CFloat)) (CFloat (x))
-    poke ((p `plusPtr` 4 :: Ptr CFloat)) (CFloat (y))
-    poke ((p `plusPtr` 8 :: Ptr CFloat)) (CFloat (width))
-    poke ((p `plusPtr` 12 :: Ptr CFloat)) (CFloat (height))
-    poke ((p `plusPtr` 16 :: Ptr CFloat)) (CFloat (minDepth))
-    poke ((p `plusPtr` 20 :: Ptr CFloat)) (CFloat (maxDepth))
-    f
-  cStructSize = 24
-  cStructAlignment = 4
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr CFloat)) (CFloat (zero))
-    poke ((p `plusPtr` 4 :: Ptr CFloat)) (CFloat (zero))
-    poke ((p `plusPtr` 8 :: Ptr CFloat)) (CFloat (zero))
-    poke ((p `plusPtr` 12 :: Ptr CFloat)) (CFloat (zero))
-    poke ((p `plusPtr` 16 :: Ptr CFloat)) (CFloat (zero))
-    poke ((p `plusPtr` 20 :: Ptr CFloat)) (CFloat (zero))
-    f
-
-instance FromCStruct Viewport where
-  peekCStruct p = do
-    x <- peek @CFloat ((p `plusPtr` 0 :: Ptr CFloat))
-    y <- peek @CFloat ((p `plusPtr` 4 :: Ptr CFloat))
-    width <- peek @CFloat ((p `plusPtr` 8 :: Ptr CFloat))
-    height <- peek @CFloat ((p `plusPtr` 12 :: Ptr CFloat))
-    minDepth <- peek @CFloat ((p `plusPtr` 16 :: Ptr CFloat))
-    maxDepth <- peek @CFloat ((p `plusPtr` 20 :: Ptr CFloat))
-    pure $ Viewport
-             (coerce @CFloat @Float x)
-             (coerce @CFloat @Float y)
-             (coerce @CFloat @Float width)
-             (coerce @CFloat @Float height)
-             (coerce @CFloat @Float minDepth)
-             (coerce @CFloat @Float maxDepth)
-
-instance Storable Viewport where
-  sizeOf ~_ = 24
-  alignment ~_ = 4
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero Viewport where
-  zero = Viewport
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-
-
--- | VkSpecializationMapEntry - Structure specifying a specialization map
--- entry
---
--- = Description
---
--- If a @constantID@ value is not a specialization constant ID used in the
--- shader, that map entry does not affect the behavior of the pipeline.
---
--- == Valid Usage
---
--- -   #VUID-VkSpecializationMapEntry-constantID-00776# For a @constantID@
---     specialization constant declared in a shader, @size@ /must/ match
---     the byte size of the @constantID@. If the specialization constant is
---     of type @boolean@, @size@ /must/ be the byte size of
---     'Vulkan.Core10.FundamentalTypes.Bool32'
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
--- 'SpecializationInfo'
-data SpecializationMapEntry = SpecializationMapEntry
-  { -- | @constantID@ is the ID of the specialization constant in SPIR-V.
-    constantID :: Word32
-  , -- | @offset@ is the byte offset of the specialization constant value within
-    -- the supplied data buffer.
-    offset :: Word32
-  , -- | @size@ is the byte size of the specialization constant value within the
-    -- supplied data buffer.
-    size :: Word64
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (SpecializationMapEntry)
-#endif
-deriving instance Show SpecializationMapEntry
-
-instance ToCStruct SpecializationMapEntry where
-  withCStruct x f = allocaBytes 16 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p SpecializationMapEntry{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr Word32)) (constantID)
-    poke ((p `plusPtr` 4 :: Ptr Word32)) (offset)
-    poke ((p `plusPtr` 8 :: Ptr CSize)) (CSize (size))
-    f
-  cStructSize = 16
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 8 :: Ptr CSize)) (CSize (zero))
-    f
-
-instance FromCStruct SpecializationMapEntry where
-  peekCStruct p = do
-    constantID <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))
-    offset <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))
-    size <- peek @CSize ((p `plusPtr` 8 :: Ptr CSize))
-    pure $ SpecializationMapEntry
-             constantID offset (coerce @CSize @Word64 size)
-
-instance Storable SpecializationMapEntry where
-  sizeOf ~_ = 16
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero SpecializationMapEntry where
-  zero = SpecializationMapEntry
-           zero
-           zero
-           zero
-
-
--- | VkSpecializationInfo - Structure specifying specialization information
---
--- == Valid Usage
---
--- -   #VUID-VkSpecializationInfo-offset-00773# The @offset@ member of each
---     element of @pMapEntries@ /must/ be less than @dataSize@
---
--- -   #VUID-VkSpecializationInfo-pMapEntries-00774# The @size@ member of
---     each element of @pMapEntries@ /must/ be less than or equal to
---     @dataSize@ minus @offset@
---
--- -   #VUID-VkSpecializationInfo-constantID-04911# The @constantID@ value
---     of each element of @pMapEntries@ /must/ be unique within
---     @pMapEntries@
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkSpecializationInfo-pMapEntries-parameter# If @mapEntryCount@
---     is not @0@, @pMapEntries@ /must/ be a valid pointer to an array of
---     @mapEntryCount@ valid 'SpecializationMapEntry' structures
---
--- -   #VUID-VkSpecializationInfo-pData-parameter# If @dataSize@ is not
---     @0@, @pData@ /must/ be a valid pointer to an array of @dataSize@
---     bytes
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
--- 'PipelineShaderStageCreateInfo',
--- 'Vulkan.Extensions.VK_EXT_shader_object.ShaderCreateInfoEXT',
--- 'SpecializationMapEntry'
-data SpecializationInfo = SpecializationInfo
-  { -- | @pMapEntries@ is a pointer to an array of 'SpecializationMapEntry'
-    -- structures, which map constant IDs to offsets in @pData@.
-    mapEntries :: Vector SpecializationMapEntry
-  , -- | @dataSize@ is the byte size of the @pData@ buffer.
-    dataSize :: Word64
-  , -- | @pData@ contains the actual constant values to specialize with.
-    data' :: Ptr ()
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (SpecializationInfo)
-#endif
-deriving instance Show SpecializationInfo
-
-instance ToCStruct SpecializationInfo where
-  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p SpecializationInfo{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (mapEntries)) :: Word32))
-    pPMapEntries' <- ContT $ allocaBytes @SpecializationMapEntry ((Data.Vector.length (mapEntries)) * 16)
-    lift $ Data.Vector.imapM_ (\i e -> poke (pPMapEntries' `plusPtr` (16 * (i)) :: Ptr SpecializationMapEntry) (e)) (mapEntries)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr SpecializationMapEntry))) (pPMapEntries')
-    lift $ poke ((p `plusPtr` 16 :: Ptr CSize)) (CSize (dataSize))
-    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr ()))) (data')
-    lift $ f
-  cStructSize = 32
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 24 :: Ptr (Ptr ()))) (zero)
-    f
-
-instance FromCStruct SpecializationInfo where
-  peekCStruct p = do
-    mapEntryCount <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))
-    pMapEntries <- peek @(Ptr SpecializationMapEntry) ((p `plusPtr` 8 :: Ptr (Ptr SpecializationMapEntry)))
-    pMapEntries' <- generateM (fromIntegral mapEntryCount) (\i -> peekCStruct @SpecializationMapEntry ((pMapEntries `advancePtrBytes` (16 * (i)) :: Ptr SpecializationMapEntry)))
-    dataSize <- peek @CSize ((p `plusPtr` 16 :: Ptr CSize))
-    pData <- peek @(Ptr ()) ((p `plusPtr` 24 :: Ptr (Ptr ())))
-    pure $ SpecializationInfo
-             pMapEntries' (coerce @CSize @Word64 dataSize) pData
-
-instance Zero SpecializationInfo where
-  zero = SpecializationInfo
-           mempty
-           zero
-           zero
-
-
--- | VkPipelineShaderStageCreateInfo - Structure specifying parameters of a
--- newly created pipeline shader stage
---
--- = Description
---
--- If @module@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the shader
--- code used by the pipeline is defined by @module@. If @module@ is
--- 'Vulkan.Core10.APIConstants.NULL_HANDLE', the shader code is defined by
--- the chained 'Vulkan.Core10.Shader.ShaderModuleCreateInfo' if present.
---
--- If the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-shaderModuleIdentifier shaderModuleIdentifier>
--- feature is enabled, applications /can/ omit shader code for @stage@ and
--- instead provide a module identifier. This is done by including a
--- 'Vulkan.Extensions.VK_EXT_shader_module_identifier.PipelineShaderStageModuleIdentifierCreateInfoEXT'
--- struct with @identifierSize@ not equal to 0 in the @pNext@ chain. A
--- shader stage created in this way is equivalent to one created using a
--- shader module with the same identifier. The identifier allows an
--- implementation to look up a pipeline without consuming a valid SPIR-V
--- module. If a pipeline is not found, pipeline compilation is not possible
--- and the implementation /must/ fail as specified by
--- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT'.
---
--- When an identifier is used in lieu of a shader module, implementations
--- /may/ fail pipeline compilation with
--- 'Vulkan.Core10.Enums.Result.PIPELINE_COMPILE_REQUIRED' for any reason.
---
--- The rationale for the relaxed requirement on implementations to return a
--- pipeline with
--- 'Vulkan.Extensions.VK_EXT_shader_module_identifier.PipelineShaderStageModuleIdentifierCreateInfoEXT'
--- is that layers or tools may intercept pipeline creation calls and
--- require the full SPIR-V context to operate correctly. ICDs are not
--- expected to fail pipeline compilation if the pipeline exists in a cache
--- somewhere.
---
--- Applications /can/ use identifiers when creating pipelines with
--- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR'.
--- When creating such pipelines, 'Vulkan.Core10.Enums.Result.SUCCESS' /may/
--- be returned, but subsequently fail when referencing the pipeline in a
--- 'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'
--- struct. Applications /must/ allow pipeline compilation to fail during
--- link steps with
--- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT'
--- as it /may/ not be possible to determine if a pipeline /can/ be created
--- from identifiers until the link step.
---
--- == Valid Usage
---
--- -   #VUID-VkPipelineShaderStageCreateInfo-stage-00704# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-geometryShader geometryShader>
---     feature is not enabled, @stage@ /must/ not be
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---
--- -   #VUID-VkPipelineShaderStageCreateInfo-stage-00705# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-tessellationShader tessellationShader>
---     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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-meshShader meshShaders>
---     feature is not enabled, @stage@ /must/ not be
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---
--- -   #VUID-VkPipelineShaderStageCreateInfo-stage-02092# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-taskShader taskShaders>
---     feature is not enabled, @stage@ /must/ not be
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---
--- -   #VUID-VkPipelineShaderStageCreateInfo-clustercullingShader-07813# If
---     the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-clustercullingShader clustercullingShader>
---     feature is not enabled, @stage@ /must/ not be
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_CLUSTER_CULLING_BIT_HUAWEI'
---
--- -   #VUID-VkPipelineShaderStageCreateInfo-stage-00706# @stage@ /must/
---     not be
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_ALL_GRAPHICS',
---     or 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_ALL'
---
--- -   #VUID-VkPipelineShaderStageCreateInfo-pName-00707# @pName@ /must/ be
---     the name of an @OpEntryPoint@ in @module@ with an execution model
---     that matches @stage@
---
--- -   #VUID-VkPipelineShaderStageCreateInfo-maxClipDistances-00708# If the
---     identified entry point includes any variable in its interface that
---     is declared with the @ClipDistance@ @BuiltIn@ decoration, that
---     variable /must/ not have an array size greater than
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxClipDistances@
---
--- -   #VUID-VkPipelineShaderStageCreateInfo-maxCullDistances-00709# If the
---     identified entry point includes any variable in its interface that
---     is declared with the @CullDistance@ @BuiltIn@ decoration, that
---     variable /must/ not have an array size greater than
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxCullDistances@
---
--- -   #VUID-VkPipelineShaderStageCreateInfo-maxCombinedClipAndCullDistances-00710#
---     If the identified entry point includes variables in its interface
---     that are declared with the @ClipDistance@ @BuiltIn@ decoration and
---     variables in its interface that are declared with the @CullDistance@
---     @BuiltIn@ decoration, those variables /must/ not have array sizes
---     which sum to more than
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxCombinedClipAndCullDistances@
---
--- -   #VUID-VkPipelineShaderStageCreateInfo-maxSampleMaskWords-00711# If
---     the identified entry point includes any variable in its interface
---     that is declared with the
---     'Vulkan.Core10.FundamentalTypes.SampleMask' @BuiltIn@ decoration,
---     that variable /must/ not have an array size greater than
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxSampleMaskWords@
---
--- -   #VUID-VkPipelineShaderStageCreateInfo-stage-00713# If @stage@ is
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT',
---     and the identified entry point has an @OpExecutionMode@ instruction
---     specifying a patch size with @OutputVertices@, the patch size /must/
---     be greater than @0@ and less than or equal to
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxTessellationPatchSize@
---
--- -   #VUID-VkPipelineShaderStageCreateInfo-stage-00714# If @stage@ is
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT',
---     the identified entry point /must/ have an @OpExecutionMode@
---     instruction specifying a maximum output vertex count that is greater
---     than @0@ and less than or equal to
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxGeometryOutputVertices@
---
--- -   #VUID-VkPipelineShaderStageCreateInfo-stage-00715# If @stage@ is
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT',
---     the identified entry point /must/ have an @OpExecutionMode@
---     instruction specifying an invocation count that is greater than @0@
---     and less than or equal to
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxGeometryShaderInvocations@
---
--- -   #VUID-VkPipelineShaderStageCreateInfo-stage-02596# If @stage@ is
---     either
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT',
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT',
---     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
---     either
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT',
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT',
---     and the identified entry point writes to @ViewportIndex@ for any
---     primitive, it /must/ write the same value to @ViewportIndex@ for all
---     vertices of a given primitive
---
--- -   #VUID-VkPipelineShaderStageCreateInfo-stage-06685# If @stage@ is
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT',
---     and the identified entry point writes to @FragDepth@ in any
---     execution path, all execution paths that are not exclusive to helper
---     invocations /must/ either discard the fragment, or write or
---     initialize the value of @FragDepth@
---
--- -   #VUID-VkPipelineShaderStageCreateInfo-stage-06686# If @stage@ is
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT',
---     and the identified entry point writes to @FragStencilRefEXT@ in any
---     execution path, all execution paths that are not exclusive to helper
---     invocations /must/ either discard the fragment, or write or
---     initialize the value of @FragStencilRefEXT@
---
--- -   #VUID-VkPipelineShaderStageCreateInfo-flags-02784# If @flags@ has
---     the
---     'Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT'
---     flag set, the
---     <https://registry.khronos.org/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'
---     flag set, the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-computeFullSubgroups computeFullSubgroups>
---     feature /must/ be enabled
---
--- -   #VUID-VkPipelineShaderStageCreateInfo-flags-08988# If @flags@
---     includes
---     'Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT',
---     @stage@ /must/ be one of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT',
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT',
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT'
---
--- -   #VUID-VkPipelineShaderStageCreateInfo-pNext-02754# If a
---     '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'
---     flag set
---
--- -   #VUID-VkPipelineShaderStageCreateInfo-pNext-02755# If a
---     'Vulkan.Core13.Promoted_From_VK_EXT_subgroup_size_control.PipelineShaderStageRequiredSubgroupSizeCreateInfo'
---     structure is included in the @pNext@ chain, the
---     <https://registry.khronos.org/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-requiredSubgroupSizeStages requiredSubgroupSizeStages>
---
--- -   #VUID-VkPipelineShaderStageCreateInfo-pNext-02756# If a
---     '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',
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT',
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT',
---     the local workgroup size of the shader /must/ be less than or equal
---     to the product of
---     'Vulkan.Core13.Promoted_From_VK_EXT_subgroup_size_control.PipelineShaderStageRequiredSubgroupSizeCreateInfo'::@requiredSubgroupSize@
---     and
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxComputeWorkgroupSubgroups maxComputeWorkgroupSubgroups>
---
--- -   #VUID-VkPipelineShaderStageCreateInfo-pNext-02757# If a
---     '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'
---     flag set, the local workgroup size in the X dimension of the
---     pipeline /must/ be a multiple of
---     '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'
---     and
---     '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://registry.khronos.org/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'
---     flag set and @flags@ does not have the
---     'Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT'
---     flag set and no
---     '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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-subgroupSize subgroupSize>
---
--- -   #VUID-VkPipelineShaderStageCreateInfo-module-08987# If @module@ uses
---     the @OpTypeCooperativeMatrixKHR@ instruction with a @Scope@ equal to
---     @Subgroup@, then the local workgroup size in the X dimension of the
---     pipeline /must/ be a multiple of
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-subgroupSize subgroupSize>
---
--- -   #VUID-VkPipelineShaderStageCreateInfo-module-10169# If @module@ uses
---     the @OpTypeCooperativeMatrixKHR@ instruction with a @Scope@ equal to
---     @Workgroup@, then the local workgroup size in the X dimension of the
---     pipeline /must/ be a multiple of
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-subgroupSize subgroupSize>
---     and the total local workgroup size /must/ be a power of two multiple
---     of
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-subgroupSize subgroupSize>
---     and /must/ be less than or equal to
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-cooperativeMatrixWorkgroupScopeMaxWorkgroupSize cooperativeMatrixWorkgroupScopeMaxWorkgroupSize>
---
--- -   #VUID-VkPipelineShaderStageCreateInfo-stage-08771# If a shader
---     module identifier is not specified for this @stage@, @module@ /must/
---     be a valid 'Vulkan.Core10.Handles.ShaderModule' , or the @pNext@
---     chain of the parent @Vk*CreateInfo@ structure /must/ set
---     'Vulkan.Extensions.VK_KHR_pipeline_binary.PipelineBinaryInfoKHR'::@binaryCount@
---     to a value greater than @0@, if none of the following features are
---     enabled:
---
---     -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-graphicsPipelineLibrary graphicsPipelineLibrary>
---
---     -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-maintenance5 maintenance5>
---
--- -   #VUID-VkPipelineShaderStageCreateInfo-stage-06845# If a shader
---     module identifier is not specified for this @stage@, @module@ /must/
---     be a valid 'Vulkan.Core10.Handles.ShaderModule', or there /must/ be
---     a valid 'Vulkan.Core10.Shader.ShaderModuleCreateInfo' structure in
---     the @pNext@ chain , or the @pNext@ chain of the parent
---     @Vk*CreateInfo@ structure /must/ set
---     'Vulkan.Extensions.VK_KHR_pipeline_binary.PipelineBinaryInfoKHR'::@binaryCount@
---     to a value greater than @0@,
---
--- -   #VUID-VkPipelineShaderStageCreateInfo-stage-06844# If a shader
---     module identifier is specified for this @stage@, the @pNext@ chain
---     /must/ not include a 'Vulkan.Core10.Shader.ShaderModuleCreateInfo'
---     structure
---
--- -   #VUID-VkPipelineShaderStageCreateInfo-stage-06848# If a shader
---     module identifier is specified for this @stage@, @module@ /must/ be
---     'Vulkan.Core10.APIConstants.NULL_HANDLE'
---
--- -   #VUID-VkPipelineShaderStageCreateInfo-pSpecializationInfo-06849# If
---     a shader module identifier is not specified, the shader code used by
---     the pipeline /must/ be valid as described by the
---     <https://registry.khronos.org/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
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkPipelineShaderStageCreateInfo-sType-sType# @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO'
---
--- -   #VUID-VkPipelineShaderStageCreateInfo-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_debug_utils.DebugUtilsObjectNameInfoEXT',
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PipelineRobustnessCreateInfoEXT',
---     'Vulkan.Extensions.VK_EXT_shader_module_identifier.PipelineShaderStageModuleIdentifierCreateInfoEXT',
---     'Vulkan.Extensions.VK_AMDX_shader_enqueue.PipelineShaderStageNodeCreateInfoAMDX',
---     'Vulkan.Core13.Promoted_From_VK_EXT_subgroup_size_control.PipelineShaderStageRequiredSubgroupSizeCreateInfo',
---     'Vulkan.Core10.Shader.ShaderModuleCreateInfo', or
---     'Vulkan.Extensions.VK_EXT_validation_cache.ShaderModuleValidationCacheCreateInfoEXT'
---
--- -   #VUID-VkPipelineShaderStageCreateInfo-sType-unique# The @sType@
---     value of each struct in the @pNext@ chain /must/ be unique
---
--- -   #VUID-VkPipelineShaderStageCreateInfo-flags-parameter# @flags@
---     /must/ be a valid combination of
---     'Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PipelineShaderStageCreateFlagBits'
---     values
---
--- -   #VUID-VkPipelineShaderStageCreateInfo-stage-parameter# @stage@
---     /must/ be a valid
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits' value
---
--- -   #VUID-VkPipelineShaderStageCreateInfo-module-parameter# If @module@
---     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @module@ /must/ be
---     a valid 'Vulkan.Core10.Handles.ShaderModule' handle
---
--- -   #VUID-VkPipelineShaderStageCreateInfo-pName-parameter# @pName@
---     /must/ be a null-terminated UTF-8 string
---
--- -   #VUID-VkPipelineShaderStageCreateInfo-pSpecializationInfo-parameter#
---     If @pSpecializationInfo@ is not @NULL@, @pSpecializationInfo@ /must/
---     be a valid pointer to a valid 'SpecializationInfo' structure
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
--- 'ComputePipelineCreateInfo',
--- 'Vulkan.Extensions.VK_AMDX_shader_enqueue.ExecutionGraphPipelineCreateInfoAMDX',
--- 'GraphicsPipelineCreateInfo',
--- 'Vulkan.Extensions.VK_NV_device_generated_commands.GraphicsShaderGroupCreateInfoNV',
--- 'Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PipelineShaderStageCreateFlags',
--- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingPipelineCreateInfoKHR',
--- 'Vulkan.Extensions.VK_NV_ray_tracing.RayTracingPipelineCreateInfoNV',
--- 'Vulkan.Core10.Handles.ShaderModule',
--- 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits',
--- 'SpecializationInfo', 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PipelineShaderStageCreateInfo (es :: [Type]) = PipelineShaderStageCreateInfo
-  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
-    next :: Chain es
-  , -- | @flags@ is a bitmask of
-    -- 'Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PipelineShaderStageCreateFlagBits'
-    -- specifying how the pipeline shader stage will be generated.
-    flags :: PipelineShaderStageCreateFlags
-  , -- | @stage@ is a
-    -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits' value
-    -- specifying a single pipeline stage.
-    stage :: ShaderStageFlagBits
-  , -- | @module@ is optionally a 'Vulkan.Core10.Handles.ShaderModule' object
-    -- containing the shader code for this stage.
-    module' :: ShaderModule
-  , -- | @pName@ is a pointer to a null-terminated UTF-8 string specifying the
-    -- entry point name of the shader for this stage.
-    name :: ByteString
-  , -- | @pSpecializationInfo@ is a pointer to a 'SpecializationInfo' structure,
-    -- as described in
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-specialization-constants Specialization Constants>,
-    -- or @NULL@.
-    specializationInfo :: Maybe SpecializationInfo
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PipelineShaderStageCreateInfo (es :: [Type]))
-#endif
-deriving instance Show (Chain es) => Show (PipelineShaderStageCreateInfo es)
-
-instance Extensible PipelineShaderStageCreateInfo where
-  extensibleTypeName = "PipelineShaderStageCreateInfo"
-  setNext PipelineShaderStageCreateInfo{..} next' = PipelineShaderStageCreateInfo{next = next', ..}
-  getNext PipelineShaderStageCreateInfo{..} = next
-  extends :: forall e b proxy. Typeable e => proxy e -> (Extends PipelineShaderStageCreateInfo e => b) -> Maybe b
-  extends _ f
-    | Just Refl <- eqT @e @PipelineShaderStageNodeCreateInfoAMDX = Just f
-    | Just Refl <- eqT @e @PipelineRobustnessCreateInfoEXT = Just f
-    | Just Refl <- eqT @e @PipelineShaderStageModuleIdentifierCreateInfoEXT = Just f
-    | Just Refl <- eqT @e @PipelineShaderStageRequiredSubgroupSizeCreateInfo = Just f
-    | Just Refl <- eqT @e @DebugUtilsObjectNameInfoEXT = Just f
-    | Just Refl <- eqT @e @ShaderModuleValidationCacheCreateInfoEXT = Just f
-    | Just Refl <- eqT @e @(ShaderModuleCreateInfo '[]) = Just f
-    | otherwise = Nothing
-
-instance ( Extendss PipelineShaderStageCreateInfo es
-         , PokeChain es ) => ToCStruct (PipelineShaderStageCreateInfo es) where
-  withCStruct x f = allocaBytes 48 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PipelineShaderStageCreateInfo{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO)
-    pNext'' <- fmap castPtr . ContT $ withChain (next)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
-    lift $ poke ((p `plusPtr` 16 :: Ptr PipelineShaderStageCreateFlags)) (flags)
-    lift $ poke ((p `plusPtr` 20 :: Ptr ShaderStageFlagBits)) (stage)
-    lift $ poke ((p `plusPtr` 24 :: Ptr ShaderModule)) (module')
-    pName'' <- ContT $ useAsCString (name)
-    lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr CChar))) pName''
-    pSpecializationInfo'' <- case (specializationInfo) of
-      Nothing -> pure nullPtr
-      Just j -> ContT $ withCStruct (j)
-    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr SpecializationInfo))) pSpecializationInfo''
-    lift $ f
-  cStructSize = 48
-  cStructAlignment = 8
-  pokeZeroCStruct p f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO)
-    pNext' <- fmap castPtr . ContT $ withZeroChain @es
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
-    lift $ poke ((p `plusPtr` 20 :: Ptr ShaderStageFlagBits)) (zero)
-    pName'' <- ContT $ useAsCString (mempty)
-    lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr CChar))) pName''
-    lift $ f
-
-instance ( Extendss PipelineShaderStageCreateInfo es
-         , PeekChain es ) => FromCStruct (PipelineShaderStageCreateInfo es) where
-  peekCStruct p = do
-    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
-    next <- peekChain (castPtr pNext)
-    flags <- peek @PipelineShaderStageCreateFlags ((p `plusPtr` 16 :: Ptr PipelineShaderStageCreateFlags))
-    stage <- peek @ShaderStageFlagBits ((p `plusPtr` 20 :: Ptr ShaderStageFlagBits))
-    module' <- peek @ShaderModule ((p `plusPtr` 24 :: Ptr ShaderModule))
-    pName <- packCString =<< peek ((p `plusPtr` 32 :: Ptr (Ptr CChar)))
-    pSpecializationInfo <- peek @(Ptr SpecializationInfo) ((p `plusPtr` 40 :: Ptr (Ptr SpecializationInfo)))
-    pSpecializationInfo' <- maybePeek (\j -> peekCStruct @SpecializationInfo (j)) pSpecializationInfo
-    pure $ PipelineShaderStageCreateInfo
-             next flags stage module' pName pSpecializationInfo'
-
-instance es ~ '[] => Zero (PipelineShaderStageCreateInfo es) where
-  zero = PipelineShaderStageCreateInfo
-           ()
-           zero
-           zero
-           zero
-           mempty
-           Nothing
-
-
--- | VkComputePipelineCreateInfo - Structure specifying parameters of a newly
--- created compute pipeline
---
--- = Description
---
--- The parameters @basePipelineHandle@ and @basePipelineIndex@ are
--- described in more detail in
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-pipeline-derivatives Pipeline Derivatives>.
---
--- If the @pNext@ chain includes a
--- 'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlags2CreateInfoKHR'
--- structure,
--- 'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlags2CreateInfoKHR'::@flags@
--- from that structure is used instead of @flags@ from this structure.
---
--- == Valid Usage
---
--- -   #VUID-VkComputePipelineCreateInfo-None-09497# If the @pNext@ chain
---     does not include a
---     'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlags2CreateInfoKHR'
---     structure, @flags@ /must/ be a valid combination of
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits'
---     values
---
--- -   #VUID-VkComputePipelineCreateInfo-flags-07984# If @flags@ contains
---     the
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'
---     flag, and @basePipelineIndex@ is -1, @basePipelineHandle@ /must/ be
---     a valid compute 'Vulkan.Core10.Handles.Pipeline' handle
---
--- -   #VUID-VkComputePipelineCreateInfo-flags-07985# If @flags@ contains
---     the
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'
---     flag, and @basePipelineHandle@ is
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', @basePipelineIndex@ /must/
---     be a valid index into the calling command’s @pCreateInfos@ parameter
---
--- -   #VUID-VkComputePipelineCreateInfo-flags-07986# If @flags@ contains
---     the
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'
---     flag, @basePipelineIndex@ /must/ be -1 or @basePipelineHandle@
---     /must/ be 'Vulkan.Core10.APIConstants.NULL_HANDLE'
---
--- -   #VUID-VkComputePipelineCreateInfo-layout-07987# If a push constant
---     block is declared in a shader, a push constant range in @layout@
---     /must/ match the shader stage
---
--- -   #VUID-VkComputePipelineCreateInfo-layout-10069# If a push constant
---     block is declared in a shader, the block must be contained inside
---     the push constant range in @layout@ that matches the stage
---
--- -   #VUID-VkComputePipelineCreateInfo-layout-07988# If a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-resources resource variables>
---     is declared in a shader, a descriptor slot in @layout@ /must/ match
---     the shader stage
---
--- -   #VUID-VkComputePipelineCreateInfo-layout-07990# If a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-resources resource variables>
---     is declared in a shader, and the descriptor type is not
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_MUTABLE_EXT', a
---     descriptor slot in @layout@ /must/ match the descriptor type
---
--- -   #VUID-VkComputePipelineCreateInfo-layout-07991# If a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-resources resource variables>
---     is declared in a shader as an array, a descriptor slot in @layout@
---     /must/ match the descriptor count
---
--- -   #VUID-VkComputePipelineCreateInfo-flags-03365# @flags@ /must/ not
---     include
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR'
---
--- -   #VUID-VkComputePipelineCreateInfo-flags-03366# @flags@ /must/ not
---     include
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR'
---
--- -   #VUID-VkComputePipelineCreateInfo-flags-03367# @flags@ /must/ not
---     include
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR'
---
--- -   #VUID-VkComputePipelineCreateInfo-flags-03368# @flags@ /must/ not
---     include
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR'
---
--- -   #VUID-VkComputePipelineCreateInfo-flags-03369# @flags@ /must/ not
---     include
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR'
---
--- -   #VUID-VkComputePipelineCreateInfo-flags-03370# @flags@ /must/ not
---     include
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR'
---
--- -   #VUID-VkComputePipelineCreateInfo-flags-03576# @flags@ /must/ not
---     include
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR'
---
--- -   #VUID-VkComputePipelineCreateInfo-flags-04945# @flags@ /must/ not
---     include
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV'
---
--- -   #VUID-VkComputePipelineCreateInfo-flags-09007# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-deviceGeneratedComputePipelines ::deviceGeneratedComputePipelines>
---     feature is not enabled, @flags@ /must/ not include
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV'
---
--- -   #VUID-VkComputePipelineCreateInfo-flags-09008# If @flags@ includes
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV',
---     then the @pNext@ chain /must/ include a pointer to a valid instance
---     of
---     'Vulkan.Extensions.VK_NV_device_generated_commands_compute.ComputePipelineIndirectBufferInfoNV'
---     specifying the address where the pipeline’s metadata will be saved
---
--- -   #VUID-VkComputePipelineCreateInfo-flags-11007# If @flags@ includes
---     'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXT',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-deviceGeneratedCommands ::deviceGeneratedCommands>
---     feature /must/ be enabled
---
--- -   #VUID-VkComputePipelineCreateInfo-pipelineCreationCacheControl-02875#
---     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'
---     or
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT'
---
--- -   #VUID-VkComputePipelineCreateInfo-stage-00701# The @stage@ member of
---     @stage@ /must/ be
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT'
---
--- -   #VUID-VkComputePipelineCreateInfo-stage-00702# The shader code for
---     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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces Shader Interfaces>
---     chapter
---
--- -   #VUID-VkComputePipelineCreateInfo-layout-01687# The number of
---     resources in @layout@ accessible to the compute shader stage /must/
---     be less than or equal to
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxPerStageResources@
---
--- -   #VUID-VkComputePipelineCreateInfo-shaderEnqueue-09177# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-shaderEnqueue shaderEnqueue>
---     feature is not enabled, @flags@ /must/ not include
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR'
---
--- -   #VUID-VkComputePipelineCreateInfo-flags-09178# If @flags@ does not
---     include
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR',
---     the shader specified by @stage@ /must/ not declare the
---     @ShaderEnqueueAMDX@ capability
---
--- -   #VUID-VkComputePipelineCreateInfo-pipelineStageCreationFeedbackCount-06566#
---     If
---     'Vulkan.Core13.Promoted_From_VK_EXT_pipeline_creation_feedback.PipelineCreationFeedbackCreateInfo'::@pipelineStageCreationFeedbackCount@
---     is not @0@, it /must/ be @1@
---
--- -   #VUID-VkComputePipelineCreateInfo-flags-07367# @flags@ /must/ not
---     include
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT'
---
--- -   #VUID-VkComputePipelineCreateInfo-flags-07996# @flags@ /must/ not
---     include
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV'
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkComputePipelineCreateInfo-sType-sType# @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO'
---
--- -   #VUID-VkComputePipelineCreateInfo-pNext-pNext# Each @pNext@ member
---     of any structure (including this one) in the @pNext@ chain /must/ be
---     either @NULL@ or a pointer to a valid instance of
---     'Vulkan.Extensions.VK_NV_device_generated_commands_compute.ComputePipelineIndirectBufferInfoNV',
---     'Vulkan.Extensions.VK_KHR_pipeline_binary.PipelineBinaryInfoKHR',
---     'Vulkan.Extensions.VK_AMD_pipeline_compiler_control.PipelineCompilerControlCreateInfoAMD',
---     'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlags2CreateInfoKHR',
---     'Vulkan.Core13.Promoted_From_VK_EXT_pipeline_creation_feedback.PipelineCreationFeedbackCreateInfo',
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PipelineRobustnessCreateInfoEXT',
---     or
---     'Vulkan.Extensions.VK_HUAWEI_subpass_shading.SubpassShadingPipelineCreateInfoHUAWEI'
---
--- -   #VUID-VkComputePipelineCreateInfo-sType-unique# The @sType@ value of
---     each struct in the @pNext@ chain /must/ be unique
---
--- -   #VUID-VkComputePipelineCreateInfo-stage-parameter# @stage@ /must/ be
---     a valid 'PipelineShaderStageCreateInfo' structure
---
--- -   #VUID-VkComputePipelineCreateInfo-layout-parameter# @layout@ /must/
---     be a valid 'Vulkan.Core10.Handles.PipelineLayout' handle
---
--- -   #VUID-VkComputePipelineCreateInfo-commonparent# Both of
---     @basePipelineHandle@, and @layout@ 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_VERSION_1_0 VK_VERSION_1_0>,
--- 'Vulkan.Core10.Handles.Pipeline',
--- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlags',
--- 'Vulkan.Core10.Handles.PipelineLayout', 'PipelineShaderStageCreateInfo',
--- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'createComputePipelines',
--- 'Vulkan.Extensions.VK_NV_device_generated_commands_compute.getPipelineIndirectMemoryRequirementsNV'
-data ComputePipelineCreateInfo (es :: [Type]) = ComputePipelineCreateInfo
-  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
-    next :: Chain es
-  , -- | @flags@ is a bitmask of
-    -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits'
-    -- specifying how the pipeline will be generated.
-    flags :: PipelineCreateFlags
-  , -- | @stage@ is a 'PipelineShaderStageCreateInfo' structure describing the
-    -- compute shader.
-    stage :: SomeStruct PipelineShaderStageCreateInfo
-  , -- | @layout@ is the description of binding locations used by both the
-    -- pipeline and descriptor sets used with the pipeline.
-    layout :: PipelineLayout
-  , -- | @basePipelineHandle@ is a pipeline to derive from.
-    basePipelineHandle :: Pipeline
-  , -- | @basePipelineIndex@ is an index into the @pCreateInfos@ parameter to use
-    -- as a pipeline to derive from.
-    basePipelineIndex :: Int32
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (ComputePipelineCreateInfo (es :: [Type]))
-#endif
-deriving instance Show (Chain es) => Show (ComputePipelineCreateInfo es)
-
-instance Extensible ComputePipelineCreateInfo where
-  extensibleTypeName = "ComputePipelineCreateInfo"
-  setNext ComputePipelineCreateInfo{..} next' = ComputePipelineCreateInfo{next = next', ..}
-  getNext ComputePipelineCreateInfo{..} = next
-  extends :: forall e b proxy. Typeable e => proxy e -> (Extends ComputePipelineCreateInfo e => b) -> Maybe b
-  extends _ f
-    | Just Refl <- eqT @e @PipelineRobustnessCreateInfoEXT = Just f
-    | Just Refl <- eqT @e @PipelineCompilerControlCreateInfoAMD = Just f
-    | Just Refl <- eqT @e @SubpassShadingPipelineCreateInfoHUAWEI = Just f
-    | Just Refl <- eqT @e @PipelineCreationFeedbackCreateInfo = Just f
-    | Just Refl <- eqT @e @PipelineBinaryInfoKHR = Just f
-    | Just Refl <- eqT @e @PipelineCreateFlags2CreateInfoKHR = Just f
-    | Just Refl <- eqT @e @ComputePipelineIndirectBufferInfoNV = Just f
-    | otherwise = Nothing
-
-instance ( Extendss ComputePipelineCreateInfo es
-         , PokeChain es ) => ToCStruct (ComputePipelineCreateInfo es) where
-  withCStruct x f = allocaBytes 96 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p ComputePipelineCreateInfo{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO)
-    pNext'' <- fmap castPtr . ContT $ withChain (next)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
-    lift $ poke ((p `plusPtr` 16 :: Ptr PipelineCreateFlags)) (flags)
-    ContT $ pokeSomeCStruct (forgetExtensions ((p `plusPtr` 24 :: Ptr (PipelineShaderStageCreateInfo _)))) (stage) . ($ ())
-    lift $ poke ((p `plusPtr` 72 :: Ptr PipelineLayout)) (layout)
-    lift $ poke ((p `plusPtr` 80 :: Ptr Pipeline)) (basePipelineHandle)
-    lift $ poke ((p `plusPtr` 88 :: Ptr Int32)) (basePipelineIndex)
-    lift $ f
-  cStructSize = 96
-  cStructAlignment = 8
-  pokeZeroCStruct p f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO)
-    pNext' <- fmap castPtr . ContT $ withZeroChain @es
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
-    ContT $ pokeSomeCStruct (forgetExtensions ((p `plusPtr` 24 :: Ptr (PipelineShaderStageCreateInfo _)))) ((SomeStruct zero)) . ($ ())
-    lift $ poke ((p `plusPtr` 72 :: Ptr PipelineLayout)) (zero)
-    lift $ poke ((p `plusPtr` 88 :: Ptr Int32)) (zero)
-    lift $ f
-
-instance ( Extendss ComputePipelineCreateInfo es
-         , PeekChain es ) => FromCStruct (ComputePipelineCreateInfo es) where
-  peekCStruct p = do
-    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
-    next <- peekChain (castPtr pNext)
-    flags <- peek @PipelineCreateFlags ((p `plusPtr` 16 :: Ptr PipelineCreateFlags))
-    stage <- peekSomeCStruct (forgetExtensions ((p `plusPtr` 24 :: Ptr (PipelineShaderStageCreateInfo _))))
-    layout <- peek @PipelineLayout ((p `plusPtr` 72 :: Ptr PipelineLayout))
-    basePipelineHandle <- peek @Pipeline ((p `plusPtr` 80 :: Ptr Pipeline))
-    basePipelineIndex <- peek @Int32 ((p `plusPtr` 88 :: Ptr Int32))
-    pure $ ComputePipelineCreateInfo
-             next flags stage layout basePipelineHandle basePipelineIndex
-
-instance es ~ '[] => Zero (ComputePipelineCreateInfo es) where
-  zero = ComputePipelineCreateInfo
-           ()
-           zero
-           (SomeStruct zero)
-           zero
-           zero
-           zero
-
-
--- | VkVertexInputBindingDescription - Structure specifying vertex input
--- binding description
---
--- == Valid Usage
---
--- -   #VUID-VkVertexInputBindingDescription-binding-00618# @binding@
---     /must/ be less than
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxVertexInputBindings@
---
--- -   #VUID-VkVertexInputBindingDescription-stride-00619# @stride@ /must/
---     be less than or equal to
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxVertexInputBindingStride@
---
--- -   #VUID-VkVertexInputBindingDescription-stride-04456# If the
---     @VK_KHR_portability_subset@ extension is enabled, @stride@ /must/ be
---     a multiple of, and at least as large as,
---     'Vulkan.Extensions.VK_KHR_portability_subset.PhysicalDevicePortabilitySubsetPropertiesKHR'::@minVertexInputBindingStrideAlignment@
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkVertexInputBindingDescription-inputRate-parameter#
---     @inputRate@ /must/ be a valid
---     'Vulkan.Core10.Enums.VertexInputRate.VertexInputRate' value
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
--- 'PipelineVertexInputStateCreateInfo',
--- 'Vulkan.Core10.Enums.VertexInputRate.VertexInputRate'
-data VertexInputBindingDescription = VertexInputBindingDescription
-  { -- | @binding@ is the binding number that this structure describes.
-    binding :: Word32
-  , -- | @stride@ is the byte stride between consecutive elements within the
-    -- buffer.
-    stride :: Word32
-  , -- | @inputRate@ is a 'Vulkan.Core10.Enums.VertexInputRate.VertexInputRate'
-    -- value specifying whether vertex attribute addressing is a function of
-    -- the vertex index or of the instance index.
-    inputRate :: VertexInputRate
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (VertexInputBindingDescription)
-#endif
-deriving instance Show VertexInputBindingDescription
-
-instance ToCStruct VertexInputBindingDescription where
-  withCStruct x f = allocaBytes 12 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p VertexInputBindingDescription{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr Word32)) (binding)
-    poke ((p `plusPtr` 4 :: Ptr Word32)) (stride)
-    poke ((p `plusPtr` 8 :: Ptr VertexInputRate)) (inputRate)
-    f
-  cStructSize = 12
-  cStructAlignment = 4
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 8 :: Ptr VertexInputRate)) (zero)
-    f
-
-instance FromCStruct VertexInputBindingDescription where
-  peekCStruct p = do
-    binding <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))
-    stride <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))
-    inputRate <- peek @VertexInputRate ((p `plusPtr` 8 :: Ptr VertexInputRate))
-    pure $ VertexInputBindingDescription
-             binding stride inputRate
-
-instance Storable VertexInputBindingDescription where
-  sizeOf ~_ = 12
-  alignment ~_ = 4
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero VertexInputBindingDescription where
-  zero = VertexInputBindingDescription
-           zero
-           zero
-           zero
-
-
--- | VkVertexInputAttributeDescription - Structure specifying vertex input
--- attribute description
---
--- == Valid Usage
---
--- -   #VUID-VkVertexInputAttributeDescription-location-00620# @location@
---     /must/ be less than
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxVertexInputAttributes@
---
--- -   #VUID-VkVertexInputAttributeDescription-binding-00621# @binding@
---     /must/ be less than
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxVertexInputBindings@
---
--- -   #VUID-VkVertexInputAttributeDescription-offset-00622# @offset@
---     /must/ be less than or equal to
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxVertexInputAttributeOffset@
---
--- -   #VUID-VkVertexInputAttributeDescription-format-00623# The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-buffer-view-format-features format features>
---     of @format@ /must/ contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_VERTEX_BUFFER_BIT'
---
--- -   #VUID-VkVertexInputAttributeDescription-vertexAttributeAccessBeyondStride-04457#
---     If the @VK_KHR_portability_subset@ extension is enabled, and
---     'Vulkan.Extensions.VK_KHR_portability_subset.PhysicalDevicePortabilitySubsetFeaturesKHR'::@vertexAttributeAccessBeyondStride@
---     is 'Vulkan.Core10.FundamentalTypes.FALSE', the sum of @offset@ plus
---     the size of the vertex attribute data described by @format@ /must/
---     not be greater than @stride@ in the 'VertexInputBindingDescription'
---     referenced in @binding@
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkVertexInputAttributeDescription-format-parameter# @format@
---     /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_VERSION_1_0 VK_VERSION_1_0>,
--- 'Vulkan.Core10.Enums.Format.Format',
--- 'PipelineVertexInputStateCreateInfo'
-data VertexInputAttributeDescription = VertexInputAttributeDescription
-  { -- | @location@ is the shader input location number for this attribute.
-    location :: Word32
-  , -- | @binding@ is the binding number which this attribute takes its data
-    -- from.
-    binding :: Word32
-  , -- | @format@ is the size and type of the vertex attribute data.
-    format :: Format
-  , -- | @offset@ is a byte offset of this attribute relative to the start of an
-    -- element in the vertex input binding.
-    offset :: Word32
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (VertexInputAttributeDescription)
-#endif
-deriving instance Show VertexInputAttributeDescription
-
-instance ToCStruct VertexInputAttributeDescription where
-  withCStruct x f = allocaBytes 16 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p VertexInputAttributeDescription{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr Word32)) (location)
-    poke ((p `plusPtr` 4 :: Ptr Word32)) (binding)
-    poke ((p `plusPtr` 8 :: Ptr Format)) (format)
-    poke ((p `plusPtr` 12 :: Ptr Word32)) (offset)
-    f
-  cStructSize = 16
-  cStructAlignment = 4
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 8 :: Ptr Format)) (zero)
-    poke ((p `plusPtr` 12 :: Ptr Word32)) (zero)
-    f
-
-instance FromCStruct VertexInputAttributeDescription where
-  peekCStruct p = do
-    location <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))
-    binding <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))
-    format <- peek @Format ((p `plusPtr` 8 :: Ptr Format))
-    offset <- peek @Word32 ((p `plusPtr` 12 :: Ptr Word32))
-    pure $ VertexInputAttributeDescription
-             location binding format offset
-
-instance Storable VertexInputAttributeDescription where
-  sizeOf ~_ = 16
-  alignment ~_ = 4
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero VertexInputAttributeDescription where
-  zero = VertexInputAttributeDescription
-           zero
-           zero
-           zero
-           zero
-
-
--- | VkPipelineVertexInputStateCreateInfo - Structure specifying parameters
--- of a newly created pipeline vertex input state
---
--- == Valid Usage
---
--- -   #VUID-VkPipelineVertexInputStateCreateInfo-vertexBindingDescriptionCount-00613#
---     @vertexBindingDescriptionCount@ /must/ be less than or equal to
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxVertexInputBindings@
---
--- -   #VUID-VkPipelineVertexInputStateCreateInfo-vertexAttributeDescriptionCount-00614#
---     @vertexAttributeDescriptionCount@ /must/ be less than or equal to
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxVertexInputAttributes@
---
--- -   #VUID-VkPipelineVertexInputStateCreateInfo-binding-00615# For every
---     @binding@ specified by each element of
---     @pVertexAttributeDescriptions@, a 'VertexInputBindingDescription'
---     /must/ exist in @pVertexBindingDescriptions@ with the same value of
---     @binding@
---
--- -   #VUID-VkPipelineVertexInputStateCreateInfo-pVertexBindingDescriptions-00616#
---     All elements of @pVertexBindingDescriptions@ /must/ describe
---     distinct binding numbers
---
--- -   #VUID-VkPipelineVertexInputStateCreateInfo-pVertexAttributeDescriptions-00617#
---     All elements of @pVertexAttributeDescriptions@ /must/ describe
---     distinct attribute locations
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkPipelineVertexInputStateCreateInfo-sType-sType# @sType@
---     /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO'
---
--- -   #VUID-VkPipelineVertexInputStateCreateInfo-pNext-pNext# @pNext@
---     /must/ be @NULL@ or a pointer to a valid instance of
---     'Vulkan.Extensions.VK_KHR_vertex_attribute_divisor.PipelineVertexInputDivisorStateCreateInfoKHR'
---
--- -   #VUID-VkPipelineVertexInputStateCreateInfo-sType-unique# The @sType@
---     value of each struct in the @pNext@ chain /must/ be unique
---
--- -   #VUID-VkPipelineVertexInputStateCreateInfo-flags-zerobitmask#
---     @flags@ /must/ be @0@
---
--- -   #VUID-VkPipelineVertexInputStateCreateInfo-pVertexBindingDescriptions-parameter#
---     If @vertexBindingDescriptionCount@ is not @0@,
---     @pVertexBindingDescriptions@ /must/ be a valid pointer to an array
---     of @vertexBindingDescriptionCount@ valid
---     'VertexInputBindingDescription' structures
---
--- -   #VUID-VkPipelineVertexInputStateCreateInfo-pVertexAttributeDescriptions-parameter#
---     If @vertexAttributeDescriptionCount@ is not @0@,
---     @pVertexAttributeDescriptions@ /must/ be a valid pointer to an array
---     of @vertexAttributeDescriptionCount@ valid
---     'VertexInputAttributeDescription' structures
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
--- 'GraphicsPipelineCreateInfo',
--- 'Vulkan.Extensions.VK_NV_device_generated_commands.GraphicsShaderGroupCreateInfoNV',
--- 'Vulkan.Core10.Enums.PipelineVertexInputStateCreateFlags.PipelineVertexInputStateCreateFlags',
--- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'VertexInputAttributeDescription', 'VertexInputBindingDescription'
-data PipelineVertexInputStateCreateInfo (es :: [Type]) = PipelineVertexInputStateCreateInfo
-  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
-    next :: Chain es
-  , -- | @flags@ is reserved for future use.
-    flags :: PipelineVertexInputStateCreateFlags
-  , -- | @pVertexBindingDescriptions@ is a pointer to an array of
-    -- 'VertexInputBindingDescription' structures.
-    vertexBindingDescriptions :: Vector VertexInputBindingDescription
-  , -- | @pVertexAttributeDescriptions@ is a pointer to an array of
-    -- 'VertexInputAttributeDescription' structures.
-    vertexAttributeDescriptions :: Vector VertexInputAttributeDescription
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PipelineVertexInputStateCreateInfo (es :: [Type]))
-#endif
-deriving instance Show (Chain es) => Show (PipelineVertexInputStateCreateInfo es)
-
-instance Extensible PipelineVertexInputStateCreateInfo where
-  extensibleTypeName = "PipelineVertexInputStateCreateInfo"
-  setNext PipelineVertexInputStateCreateInfo{..} next' = PipelineVertexInputStateCreateInfo{next = next', ..}
-  getNext PipelineVertexInputStateCreateInfo{..} = next
-  extends :: forall e b proxy. Typeable e => proxy e -> (Extends PipelineVertexInputStateCreateInfo e => b) -> Maybe b
-  extends _ f
-    | Just Refl <- eqT @e @PipelineVertexInputDivisorStateCreateInfoKHR = Just f
-    | otherwise = Nothing
-
-instance ( Extendss PipelineVertexInputStateCreateInfo es
-         , PokeChain es ) => ToCStruct (PipelineVertexInputStateCreateInfo es) where
-  withCStruct x f = allocaBytes 48 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PipelineVertexInputStateCreateInfo{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO)
-    pNext'' <- fmap castPtr . ContT $ withChain (next)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
-    lift $ poke ((p `plusPtr` 16 :: Ptr PipelineVertexInputStateCreateFlags)) (flags)
-    lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (vertexBindingDescriptions)) :: Word32))
-    pPVertexBindingDescriptions' <- ContT $ allocaBytes @VertexInputBindingDescription ((Data.Vector.length (vertexBindingDescriptions)) * 12)
-    lift $ Data.Vector.imapM_ (\i e -> poke (pPVertexBindingDescriptions' `plusPtr` (12 * (i)) :: Ptr VertexInputBindingDescription) (e)) (vertexBindingDescriptions)
-    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr VertexInputBindingDescription))) (pPVertexBindingDescriptions')
-    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (vertexAttributeDescriptions)) :: Word32))
-    pPVertexAttributeDescriptions' <- ContT $ allocaBytes @VertexInputAttributeDescription ((Data.Vector.length (vertexAttributeDescriptions)) * 16)
-    lift $ Data.Vector.imapM_ (\i e -> poke (pPVertexAttributeDescriptions' `plusPtr` (16 * (i)) :: Ptr VertexInputAttributeDescription) (e)) (vertexAttributeDescriptions)
-    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr VertexInputAttributeDescription))) (pPVertexAttributeDescriptions')
-    lift $ f
-  cStructSize = 48
-  cStructAlignment = 8
-  pokeZeroCStruct p f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO)
-    pNext' <- fmap castPtr . ContT $ withZeroChain @es
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
-    lift $ f
-
-instance ( Extendss PipelineVertexInputStateCreateInfo es
-         , PeekChain es ) => FromCStruct (PipelineVertexInputStateCreateInfo es) where
-  peekCStruct p = do
-    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
-    next <- peekChain (castPtr pNext)
-    flags <- peek @PipelineVertexInputStateCreateFlags ((p `plusPtr` 16 :: Ptr PipelineVertexInputStateCreateFlags))
-    vertexBindingDescriptionCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
-    pVertexBindingDescriptions <- peek @(Ptr VertexInputBindingDescription) ((p `plusPtr` 24 :: Ptr (Ptr VertexInputBindingDescription)))
-    pVertexBindingDescriptions' <- generateM (fromIntegral vertexBindingDescriptionCount) (\i -> peekCStruct @VertexInputBindingDescription ((pVertexBindingDescriptions `advancePtrBytes` (12 * (i)) :: Ptr VertexInputBindingDescription)))
-    vertexAttributeDescriptionCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))
-    pVertexAttributeDescriptions <- peek @(Ptr VertexInputAttributeDescription) ((p `plusPtr` 40 :: Ptr (Ptr VertexInputAttributeDescription)))
-    pVertexAttributeDescriptions' <- generateM (fromIntegral vertexAttributeDescriptionCount) (\i -> peekCStruct @VertexInputAttributeDescription ((pVertexAttributeDescriptions `advancePtrBytes` (16 * (i)) :: Ptr VertexInputAttributeDescription)))
-    pure $ PipelineVertexInputStateCreateInfo
-             next
-             flags
-             pVertexBindingDescriptions'
-             pVertexAttributeDescriptions'
-
-instance es ~ '[] => Zero (PipelineVertexInputStateCreateInfo es) where
-  zero = PipelineVertexInputStateCreateInfo
-           ()
-           zero
-           mempty
-           mempty
-
-
--- | VkPipelineInputAssemblyStateCreateInfo - Structure specifying parameters
--- of a newly created pipeline input assembly state
---
--- = Description
---
--- Restarting the assembly of primitives discards the most recent index
--- values if those elements formed an incomplete primitive, and restarts
--- the primitive assembly using the subsequent indices, but only assembling
--- the immediately following element through the end of the originally
--- specified elements. The primitive restart index value comparison is
--- performed before adding the @vertexOffset@ value to the index value.
---
--- == Valid Usage
---
--- -   #VUID-VkPipelineInputAssemblyStateCreateInfo-topology-06252# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-primitiveTopologyListRestart primitiveTopologyListRestart>
---     feature is not enabled, and @topology@ is
---     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_POINT_LIST',
---     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_LINE_LIST',
---     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_TRIANGLE_LIST',
---     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY',
---     or
---     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY',
---     @primitiveRestartEnable@ /must/ be
---     'Vulkan.Core10.FundamentalTypes.FALSE'
---
--- -   #VUID-VkPipelineInputAssemblyStateCreateInfo-topology-06253# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-primitiveTopologyPatchListRestart primitiveTopologyPatchListRestart>
---     feature is not enabled, and @topology@ is
---     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST',
---     @primitiveRestartEnable@ /must/ be
---     'Vulkan.Core10.FundamentalTypes.FALSE'
---
--- -   #VUID-VkPipelineInputAssemblyStateCreateInfo-topology-00429# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-geometryShader geometryShader>
---     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',
---     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY'
---     or
---     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY'
---
--- -   #VUID-VkPipelineInputAssemblyStateCreateInfo-topology-00430# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-tessellationShader tessellationShader>
---     feature is not enabled, @topology@ /must/ not be
---     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST'
---
--- -   #VUID-VkPipelineInputAssemblyStateCreateInfo-triangleFans-04452# If
---     the @VK_KHR_portability_subset@ extension is enabled, and
---     'Vulkan.Extensions.VK_KHR_portability_subset.PhysicalDevicePortabilitySubsetFeaturesKHR'::@triangleFans@
---     is 'Vulkan.Core10.FundamentalTypes.FALSE', @topology@ /must/ not be
---     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_TRIANGLE_FAN'
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkPipelineInputAssemblyStateCreateInfo-sType-sType# @sType@
---     /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO'
---
--- -   #VUID-VkPipelineInputAssemblyStateCreateInfo-pNext-pNext# @pNext@
---     /must/ be @NULL@
---
--- -   #VUID-VkPipelineInputAssemblyStateCreateInfo-flags-zerobitmask#
---     @flags@ /must/ be @0@
---
--- -   #VUID-VkPipelineInputAssemblyStateCreateInfo-topology-parameter#
---     @topology@ /must/ be a valid
---     'Vulkan.Core10.Enums.PrimitiveTopology.PrimitiveTopology' value
---
--- = 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.Bool32', 'GraphicsPipelineCreateInfo',
--- 'Vulkan.Core10.Enums.PipelineInputAssemblyStateCreateFlags.PipelineInputAssemblyStateCreateFlags',
--- 'Vulkan.Core10.Enums.PrimitiveTopology.PrimitiveTopology',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PipelineInputAssemblyStateCreateInfo = PipelineInputAssemblyStateCreateInfo
-  { -- | @flags@ is reserved for future use.
-    flags :: PipelineInputAssemblyStateCreateFlags
-  , -- | @topology@ is a
-    -- 'Vulkan.Core10.Enums.PrimitiveTopology.PrimitiveTopology' defining the
-    -- primitive topology, as described below.
-    topology :: PrimitiveTopology
-  , -- | @primitiveRestartEnable@ controls whether a special vertex index value
-    -- is treated as restarting the assembly of primitives. This enable only
-    -- applies to indexed draws
-    -- ('Vulkan.Core10.CommandBufferBuilding.cmdDrawIndexed',
-    -- 'Vulkan.Extensions.VK_EXT_multi_draw.cmdDrawMultiIndexedEXT', and
-    -- 'Vulkan.Core10.CommandBufferBuilding.cmdDrawIndexedIndirect'), and the
-    -- special index value is either 0xFFFFFFFF when the @indexType@ parameter
-    -- of 'Vulkan.Extensions.VK_KHR_maintenance5.cmdBindIndexBuffer2KHR' or
-    -- 'Vulkan.Core10.CommandBufferBuilding.cmdBindIndexBuffer' is equal to
-    -- 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT32', 0xFF when @indexType@
-    -- is equal to 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT8_KHR', or
-    -- 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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-primitiveTopologyPatchListRestart primitiveTopologyPatchListRestart>
-    -- (for
-    -- 'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST')
-    -- or
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-primitiveTopologyListRestart primitiveTopologyListRestart>
-    -- (for all other list topologies) is enabled.
-    primitiveRestartEnable :: Bool
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PipelineInputAssemblyStateCreateInfo)
-#endif
-deriving instance Show PipelineInputAssemblyStateCreateInfo
-
-instance ToCStruct PipelineInputAssemblyStateCreateInfo where
-  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PipelineInputAssemblyStateCreateInfo{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr PipelineInputAssemblyStateCreateFlags)) (flags)
-    poke ((p `plusPtr` 20 :: Ptr PrimitiveTopology)) (topology)
-    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (primitiveRestartEnable))
-    f
-  cStructSize = 32
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 20 :: Ptr PrimitiveTopology)) (zero)
-    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (zero))
-    f
-
-instance FromCStruct PipelineInputAssemblyStateCreateInfo where
-  peekCStruct p = do
-    flags <- peek @PipelineInputAssemblyStateCreateFlags ((p `plusPtr` 16 :: Ptr PipelineInputAssemblyStateCreateFlags))
-    topology <- peek @PrimitiveTopology ((p `plusPtr` 20 :: Ptr PrimitiveTopology))
-    primitiveRestartEnable <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))
-    pure $ PipelineInputAssemblyStateCreateInfo
-             flags topology (bool32ToBool primitiveRestartEnable)
-
-instance Storable PipelineInputAssemblyStateCreateInfo where
-  sizeOf ~_ = 32
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero PipelineInputAssemblyStateCreateInfo where
-  zero = PipelineInputAssemblyStateCreateInfo
-           zero
-           zero
-           zero
-
-
--- | VkPipelineTessellationStateCreateInfo - Structure specifying parameters
--- of a newly created pipeline tessellation state
---
--- == Valid Usage
---
--- -   #VUID-VkPipelineTessellationStateCreateInfo-patchControlPoints-01214#
---     @patchControlPoints@ /must/ be greater than zero and less than or
---     equal to
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxTessellationPatchSize@
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkPipelineTessellationStateCreateInfo-sType-sType# @sType@
---     /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO'
---
--- -   #VUID-VkPipelineTessellationStateCreateInfo-pNext-pNext# @pNext@
---     /must/ be @NULL@ or a pointer to a valid instance of
---     'Vulkan.Core11.Promoted_From_VK_KHR_maintenance2.PipelineTessellationDomainOriginStateCreateInfo'
---
--- -   #VUID-VkPipelineTessellationStateCreateInfo-sType-unique# The
---     @sType@ value of each struct in the @pNext@ chain /must/ be unique
---
--- -   #VUID-VkPipelineTessellationStateCreateInfo-flags-zerobitmask#
---     @flags@ /must/ 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>,
--- 'GraphicsPipelineCreateInfo',
--- 'Vulkan.Extensions.VK_NV_device_generated_commands.GraphicsShaderGroupCreateInfoNV',
--- 'Vulkan.Core10.Enums.PipelineTessellationStateCreateFlags.PipelineTessellationStateCreateFlags',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PipelineTessellationStateCreateInfo (es :: [Type]) = PipelineTessellationStateCreateInfo
-  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
-    next :: Chain es
-  , -- | @flags@ is reserved for future use.
-    flags :: PipelineTessellationStateCreateFlags
-  , -- | @patchControlPoints@ is the number of control points per patch.
-    patchControlPoints :: Word32
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PipelineTessellationStateCreateInfo (es :: [Type]))
-#endif
-deriving instance Show (Chain es) => Show (PipelineTessellationStateCreateInfo es)
-
-instance Extensible PipelineTessellationStateCreateInfo where
-  extensibleTypeName = "PipelineTessellationStateCreateInfo"
-  setNext PipelineTessellationStateCreateInfo{..} next' = PipelineTessellationStateCreateInfo{next = next', ..}
-  getNext PipelineTessellationStateCreateInfo{..} = next
-  extends :: forall e b proxy. Typeable e => proxy e -> (Extends PipelineTessellationStateCreateInfo e => b) -> Maybe b
-  extends _ f
-    | Just Refl <- eqT @e @PipelineTessellationDomainOriginStateCreateInfo = Just f
-    | otherwise = Nothing
-
-instance ( Extendss PipelineTessellationStateCreateInfo es
-         , PokeChain es ) => ToCStruct (PipelineTessellationStateCreateInfo es) where
-  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PipelineTessellationStateCreateInfo{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO)
-    pNext'' <- fmap castPtr . ContT $ withChain (next)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
-    lift $ poke ((p `plusPtr` 16 :: Ptr PipelineTessellationStateCreateFlags)) (flags)
-    lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) (patchControlPoints)
-    lift $ f
-  cStructSize = 24
-  cStructAlignment = 8
-  pokeZeroCStruct p f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO)
-    pNext' <- fmap castPtr . ContT $ withZeroChain @es
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
-    lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)
-    lift $ f
-
-instance ( Extendss PipelineTessellationStateCreateInfo es
-         , PeekChain es ) => FromCStruct (PipelineTessellationStateCreateInfo es) where
-  peekCStruct p = do
-    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
-    next <- peekChain (castPtr pNext)
-    flags <- peek @PipelineTessellationStateCreateFlags ((p `plusPtr` 16 :: Ptr PipelineTessellationStateCreateFlags))
-    patchControlPoints <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
-    pure $ PipelineTessellationStateCreateInfo
-             next flags patchControlPoints
-
-instance es ~ '[] => Zero (PipelineTessellationStateCreateInfo es) where
-  zero = PipelineTessellationStateCreateInfo
-           ()
-           zero
-           zero
-
-
--- | VkPipelineViewportStateCreateInfo - Structure specifying parameters of a
--- newly created pipeline viewport state
---
--- == Valid Usage
---
--- -   #VUID-VkPipelineViewportStateCreateInfo-viewportCount-01216# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-multiViewport multiViewport>
---     feature is not enabled, @viewportCount@ /must/ not be greater than
---     @1@
---
--- -   #VUID-VkPipelineViewportStateCreateInfo-scissorCount-01217# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-multiViewport multiViewport>
---     feature is not enabled, @scissorCount@ /must/ not be greater than
---     @1@
---
--- -   #VUID-VkPipelineViewportStateCreateInfo-viewportCount-01218#
---     @viewportCount@ /must/ be less than or equal to
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxViewports@
---
--- -   #VUID-VkPipelineViewportStateCreateInfo-scissorCount-01219#
---     @scissorCount@ /must/ be less than or equal to
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxViewports@
---
--- -   #VUID-VkPipelineViewportStateCreateInfo-x-02821# The @x@ and @y@
---     members of @offset@ member of any element of @pScissors@ /must/ be
---     greater than or equal to @0@
---
--- -   #VUID-VkPipelineViewportStateCreateInfo-offset-02822# Evaluation of
---     (@offset.x@ + @extent.width@) /must/ not cause a signed integer
---     addition overflow for any element of @pScissors@
---
--- -   #VUID-VkPipelineViewportStateCreateInfo-offset-02823# Evaluation of
---     (@offset.y@ + @extent.height@) /must/ not cause a signed integer
---     addition overflow for any element of @pScissors@
---
--- -   #VUID-VkPipelineViewportStateCreateInfo-scissorCount-04134# If
---     @scissorCount@ and @viewportCount@ are both not dynamic, 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'
---     set then @viewportCount@ /must/ be @0@, otherwise @viewportCount@
---     /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'
---     set then @scissorCount@ /must/ be @0@, otherwise @scissorCount@
---     /must/ be greater than @0@
---
--- -   #VUID-VkPipelineViewportStateCreateInfo-viewportWScalingEnable-01726#
---     If the @viewportWScalingEnable@ member of a
---     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV'
---     structure included in the @pNext@ chain is
---     'Vulkan.Core10.FundamentalTypes.TRUE', the @viewportCount@ member of
---     the
---     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV'
---     structure /must/ be greater than or equal to
---     'PipelineViewportStateCreateInfo'::@viewportCount@
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkPipelineViewportStateCreateInfo-sType-sType# @sType@ /must/
---     be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO'
---
--- -   #VUID-VkPipelineViewportStateCreateInfo-pNext-pNext# Each @pNext@
---     member of any structure (including this one) in the @pNext@ chain
---     /must/ be either @NULL@ or a pointer to a valid instance of
---     'Vulkan.Extensions.VK_NV_shading_rate_image.PipelineViewportCoarseSampleOrderStateCreateInfoNV',
---     'Vulkan.Extensions.VK_EXT_depth_clamp_control.PipelineViewportDepthClampControlCreateInfoEXT',
---     'Vulkan.Extensions.VK_EXT_depth_clip_control.PipelineViewportDepthClipControlCreateInfoEXT',
---     'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV',
---     'Vulkan.Extensions.VK_NV_shading_rate_image.PipelineViewportShadingRateImageStateCreateInfoNV',
---     'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV',
---     or
---     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV'
---
--- -   #VUID-VkPipelineViewportStateCreateInfo-sType-unique# The @sType@
---     value of each struct in the @pNext@ chain /must/ be unique
---
--- -   #VUID-VkPipelineViewportStateCreateInfo-flags-zerobitmask# @flags@
---     /must/ 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>,
--- 'GraphicsPipelineCreateInfo',
--- 'Vulkan.Core10.Enums.PipelineViewportStateCreateFlags.PipelineViewportStateCreateFlags',
--- 'Vulkan.Core10.FundamentalTypes.Rect2D',
--- 'Vulkan.Core10.Enums.StructureType.StructureType', 'Viewport'
-data PipelineViewportStateCreateInfo (es :: [Type]) = PipelineViewportStateCreateInfo
-  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
-    next :: Chain es
-  , -- | @flags@ is reserved for future use.
-    flags :: PipelineViewportStateCreateFlags
-  , -- | @viewportCount@ is the number of viewports used by the pipeline.
-    viewportCount :: Word32
-  , -- | @pViewports@ is a pointer to an array of 'Viewport' structures, defining
-    -- the viewport transforms. If the viewport state is dynamic, this member
-    -- is ignored.
-    viewports :: Vector Viewport
-  , -- | @scissorCount@ is the number of
-    -- <https://registry.khronos.org/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
-    -- 'Vulkan.Core10.FundamentalTypes.Rect2D' structures defining the
-    -- rectangular bounds of the scissor for the corresponding viewport. If the
-    -- scissor state is dynamic, this member is ignored.
-    scissors :: Vector Rect2D
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PipelineViewportStateCreateInfo (es :: [Type]))
-#endif
-deriving instance Show (Chain es) => Show (PipelineViewportStateCreateInfo es)
-
-instance Extensible PipelineViewportStateCreateInfo where
-  extensibleTypeName = "PipelineViewportStateCreateInfo"
-  setNext PipelineViewportStateCreateInfo{..} next' = PipelineViewportStateCreateInfo{next = next', ..}
-  getNext PipelineViewportStateCreateInfo{..} = next
-  extends :: forall e b proxy. Typeable e => proxy e -> (Extends PipelineViewportStateCreateInfo e => b) -> Maybe b
-  extends _ f
-    | Just Refl <- eqT @e @PipelineViewportDepthClampControlCreateInfoEXT = Just f
-    | Just Refl <- eqT @e @PipelineViewportDepthClipControlCreateInfoEXT = Just f
-    | Just Refl <- eqT @e @PipelineViewportCoarseSampleOrderStateCreateInfoNV = Just f
-    | Just Refl <- eqT @e @PipelineViewportShadingRateImageStateCreateInfoNV = Just f
-    | Just Refl <- eqT @e @PipelineViewportExclusiveScissorStateCreateInfoNV = Just f
-    | Just Refl <- eqT @e @PipelineViewportSwizzleStateCreateInfoNV = Just f
-    | Just Refl <- eqT @e @PipelineViewportWScalingStateCreateInfoNV = Just f
-    | otherwise = Nothing
-
-instance ( Extendss PipelineViewportStateCreateInfo es
-         , PokeChain es ) => ToCStruct (PipelineViewportStateCreateInfo es) where
-  withCStruct x f = allocaBytes 48 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PipelineViewportStateCreateInfo{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO)
-    pNext'' <- fmap castPtr . ContT $ withChain (next)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
-    lift $ poke ((p `plusPtr` 16 :: Ptr PipelineViewportStateCreateFlags)) (flags)
-    let pViewportsLength = Data.Vector.length $ (viewports)
-    viewportCount'' <- lift $ if (viewportCount) == 0
-      then pure $ fromIntegral pViewportsLength
-      else do
-        unless (fromIntegral pViewportsLength == (viewportCount) || pViewportsLength == 0) $
-          throwIO $ IOError Nothing InvalidArgument "" "pViewports must be empty or have 'viewportCount' elements" Nothing Nothing
-        pure (viewportCount)
-    lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) (viewportCount'')
-    pViewports'' <- if Data.Vector.null (viewports)
-      then pure nullPtr
-      else do
-        pPViewports <- ContT $ allocaBytes @Viewport (((Data.Vector.length (viewports))) * 24)
-        lift $ Data.Vector.imapM_ (\i e -> poke (pPViewports `plusPtr` (24 * (i)) :: Ptr Viewport) (e)) ((viewports))
-        pure $ pPViewports
-    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Viewport))) pViewports''
-    let pScissorsLength = Data.Vector.length $ (scissors)
-    scissorCount'' <- lift $ if (scissorCount) == 0
-      then pure $ fromIntegral pScissorsLength
-      else do
-        unless (fromIntegral pScissorsLength == (scissorCount) || pScissorsLength == 0) $
-          throwIO $ IOError Nothing InvalidArgument "" "pScissors must be empty or have 'scissorCount' elements" Nothing Nothing
-        pure (scissorCount)
-    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) (scissorCount'')
-    pScissors'' <- if Data.Vector.null (scissors)
-      then pure nullPtr
-      else do
-        pPScissors <- ContT $ allocaBytes @Rect2D (((Data.Vector.length (scissors))) * 16)
-        lift $ Data.Vector.imapM_ (\i e -> poke (pPScissors `plusPtr` (16 * (i)) :: Ptr Rect2D) (e)) ((scissors))
-        pure $ pPScissors
-    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr Rect2D))) pScissors''
-    lift $ f
-  cStructSize = 48
-  cStructAlignment = 8
-  pokeZeroCStruct p f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO)
-    pNext' <- fmap castPtr . ContT $ withZeroChain @es
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
-    lift $ f
-
-instance ( Extendss PipelineViewportStateCreateInfo es
-         , PeekChain es ) => FromCStruct (PipelineViewportStateCreateInfo es) where
-  peekCStruct p = do
-    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
-    next <- peekChain (castPtr pNext)
-    flags <- peek @PipelineViewportStateCreateFlags ((p `plusPtr` 16 :: Ptr PipelineViewportStateCreateFlags))
-    viewportCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
-    pViewports <- peek @(Ptr Viewport) ((p `plusPtr` 24 :: Ptr (Ptr Viewport)))
-    let pViewportsLength = if pViewports == nullPtr then 0 else (fromIntegral viewportCount)
-    pViewports' <- generateM pViewportsLength (\i -> peekCStruct @Viewport ((pViewports `advancePtrBytes` (24 * (i)) :: Ptr Viewport)))
-    scissorCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))
-    pScissors <- peek @(Ptr Rect2D) ((p `plusPtr` 40 :: Ptr (Ptr Rect2D)))
-    let pScissorsLength = if pScissors == nullPtr then 0 else (fromIntegral scissorCount)
-    pScissors' <- generateM pScissorsLength (\i -> peekCStruct @Rect2D ((pScissors `advancePtrBytes` (16 * (i)) :: Ptr Rect2D)))
-    pure $ PipelineViewportStateCreateInfo
-             next flags viewportCount pViewports' scissorCount pScissors'
-
-instance es ~ '[] => Zero (PipelineViewportStateCreateInfo es) where
-  zero = PipelineViewportStateCreateInfo
-           ()
-           zero
-           zero
-           mempty
-           zero
-           mempty
-
-
--- | VkPipelineRasterizationStateCreateInfo - Structure specifying parameters
--- of a newly created pipeline rasterization state
---
--- = Description
---
--- The application /can/ also add a
--- 'Vulkan.Extensions.VK_AMD_rasterization_order.PipelineRasterizationStateRasterizationOrderAMD'
--- structure to the @pNext@ chain of a
--- 'PipelineRasterizationStateCreateInfo' structure. This structure enables
--- selecting the rasterization order to use when rendering with the
--- corresponding graphics pipeline as described in
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-order Rasterization Order>.
---
--- == Valid Usage
---
--- -   #VUID-VkPipelineRasterizationStateCreateInfo-depthClampEnable-00782#
---     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-depthClamp depthClamp>
---     feature is not enabled, @depthClampEnable@ /must/ be
---     'Vulkan.Core10.FundamentalTypes.FALSE'
---
--- -   #VUID-VkPipelineRasterizationStateCreateInfo-polygonMode-01507# If
---     the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-fillModeNonSolid fillModeNonSolid>
---     feature is not enabled, @polygonMode@ /must/ be
---     'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_FILL' or
---     'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_FILL_RECTANGLE_NV'
---
--- -   #VUID-VkPipelineRasterizationStateCreateInfo-polygonMode-01414# If
---     the @VK_NV_fill_rectangle@ extension is not enabled, @polygonMode@
---     /must/ not be
---     'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_FILL_RECTANGLE_NV'
---
--- -   #VUID-VkPipelineRasterizationStateCreateInfo-pointPolygons-04458# If
---     the @VK_KHR_portability_subset@ extension is enabled, and
---     'Vulkan.Extensions.VK_KHR_portability_subset.PhysicalDevicePortabilitySubsetFeaturesKHR'::@pointPolygons@
---     is 'Vulkan.Core10.FundamentalTypes.FALSE', and
---     @rasterizerDiscardEnable@ is 'Vulkan.Core10.FundamentalTypes.FALSE',
---     @polygonMode@ /must/ not be
---     'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_POINT'
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkPipelineRasterizationStateCreateInfo-sType-sType# @sType@
---     /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO'
---
--- -   #VUID-VkPipelineRasterizationStateCreateInfo-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_depth_bias_control.DepthBiasRepresentationInfoEXT',
---     'Vulkan.Extensions.VK_EXT_conservative_rasterization.PipelineRasterizationConservativeStateCreateInfoEXT',
---     'Vulkan.Extensions.VK_EXT_depth_clip_enable.PipelineRasterizationDepthClipStateCreateInfoEXT',
---     'Vulkan.Extensions.VK_KHR_line_rasterization.PipelineRasterizationLineStateCreateInfoKHR',
---     'Vulkan.Extensions.VK_EXT_provoking_vertex.PipelineRasterizationProvokingVertexStateCreateInfoEXT',
---     'Vulkan.Extensions.VK_AMD_rasterization_order.PipelineRasterizationStateRasterizationOrderAMD',
---     or
---     'Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT'
---
--- -   #VUID-VkPipelineRasterizationStateCreateInfo-sType-unique# The
---     @sType@ value of each struct in the @pNext@ chain /must/ be unique
---
--- -   #VUID-VkPipelineRasterizationStateCreateInfo-flags-zerobitmask#
---     @flags@ /must/ be @0@
---
--- -   #VUID-VkPipelineRasterizationStateCreateInfo-polygonMode-parameter#
---     @polygonMode@ /must/ be a valid
---     'Vulkan.Core10.Enums.PolygonMode.PolygonMode' value
---
--- -   #VUID-VkPipelineRasterizationStateCreateInfo-cullMode-parameter#
---     @cullMode@ /must/ be a valid combination of
---     'Vulkan.Core10.Enums.CullModeFlagBits.CullModeFlagBits' values
---
--- -   #VUID-VkPipelineRasterizationStateCreateInfo-frontFace-parameter#
---     @frontFace@ /must/ be a valid
---     'Vulkan.Core10.Enums.FrontFace.FrontFace' value
---
--- = 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.Bool32',
--- 'Vulkan.Core10.Enums.CullModeFlagBits.CullModeFlags',
--- 'Vulkan.Core10.Enums.FrontFace.FrontFace', 'GraphicsPipelineCreateInfo',
--- 'Vulkan.Core10.Enums.PipelineRasterizationStateCreateFlags.PipelineRasterizationStateCreateFlags',
--- 'Vulkan.Core10.Enums.PolygonMode.PolygonMode',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PipelineRasterizationStateCreateInfo (es :: [Type]) = PipelineRasterizationStateCreateInfo
-  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
-    next :: Chain es
-  , -- | @flags@ is reserved for future use.
-    flags :: PipelineRasterizationStateCreateFlags
-  , -- | @depthClampEnable@ controls whether to clamp the fragment’s depth values
-    -- as described in
-    -- <https://registry.khronos.org/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 frustum as described in
-    -- <https://registry.khronos.org/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
-  , -- | @rasterizerDiscardEnable@ controls whether primitives are discarded
-    -- immediately before the rasterization stage.
-    rasterizerDiscardEnable :: Bool
-  , -- | @polygonMode@ is the triangle rendering mode. See
-    -- 'Vulkan.Core10.Enums.PolygonMode.PolygonMode'.
-    polygonMode :: PolygonMode
-  , -- | @cullMode@ is the triangle facing direction used for primitive culling.
-    -- See 'Vulkan.Core10.Enums.CullModeFlagBits.CullModeFlagBits'.
-    cullMode :: CullModeFlags
-  , -- | @frontFace@ is a 'Vulkan.Core10.Enums.FrontFace.FrontFace' value
-    -- specifying the front-facing triangle orientation to be used for culling.
-    frontFace :: FrontFace
-  , -- | @depthBiasEnable@ controls whether to bias fragment depth values.
-    depthBiasEnable :: Bool
-  , -- | @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
-  , -- | @lineWidth@ is the width of rasterized line segments.
-    lineWidth :: Float
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PipelineRasterizationStateCreateInfo (es :: [Type]))
-#endif
-deriving instance Show (Chain es) => Show (PipelineRasterizationStateCreateInfo es)
-
-instance Extensible PipelineRasterizationStateCreateInfo where
-  extensibleTypeName = "PipelineRasterizationStateCreateInfo"
-  setNext PipelineRasterizationStateCreateInfo{..} next' = PipelineRasterizationStateCreateInfo{next = next', ..}
-  getNext PipelineRasterizationStateCreateInfo{..} = next
-  extends :: forall e b proxy. Typeable e => proxy e -> (Extends PipelineRasterizationStateCreateInfo e => b) -> Maybe b
-  extends _ f
-    | Just Refl <- eqT @e @DepthBiasRepresentationInfoEXT = Just f
-    | Just Refl <- eqT @e @PipelineRasterizationProvokingVertexStateCreateInfoEXT = Just f
-    | Just Refl <- eqT @e @PipelineRasterizationLineStateCreateInfoKHR = Just f
-    | Just Refl <- eqT @e @PipelineRasterizationDepthClipStateCreateInfoEXT = Just f
-    | Just Refl <- eqT @e @PipelineRasterizationStateStreamCreateInfoEXT = Just f
-    | Just Refl <- eqT @e @PipelineRasterizationConservativeStateCreateInfoEXT = Just f
-    | Just Refl <- eqT @e @PipelineRasterizationStateRasterizationOrderAMD = Just f
-    | otherwise = Nothing
-
-instance ( Extendss PipelineRasterizationStateCreateInfo es
-         , PokeChain es ) => ToCStruct (PipelineRasterizationStateCreateInfo es) where
-  withCStruct x f = allocaBytes 64 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PipelineRasterizationStateCreateInfo{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO)
-    pNext'' <- fmap castPtr . ContT $ withChain (next)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
-    lift $ poke ((p `plusPtr` 16 :: Ptr PipelineRasterizationStateCreateFlags)) (flags)
-    lift $ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (depthClampEnable))
-    lift $ poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (rasterizerDiscardEnable))
-    lift $ poke ((p `plusPtr` 28 :: Ptr PolygonMode)) (polygonMode)
-    lift $ poke ((p `plusPtr` 32 :: Ptr CullModeFlags)) (cullMode)
-    lift $ poke ((p `plusPtr` 36 :: Ptr FrontFace)) (frontFace)
-    lift $ poke ((p `plusPtr` 40 :: Ptr Bool32)) (boolToBool32 (depthBiasEnable))
-    lift $ poke ((p `plusPtr` 44 :: Ptr CFloat)) (CFloat (depthBiasConstantFactor))
-    lift $ poke ((p `plusPtr` 48 :: Ptr CFloat)) (CFloat (depthBiasClamp))
-    lift $ poke ((p `plusPtr` 52 :: Ptr CFloat)) (CFloat (depthBiasSlopeFactor))
-    lift $ poke ((p `plusPtr` 56 :: Ptr CFloat)) (CFloat (lineWidth))
-    lift $ f
-  cStructSize = 64
-  cStructAlignment = 8
-  pokeZeroCStruct p f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO)
-    pNext' <- fmap castPtr . ContT $ withZeroChain @es
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
-    lift $ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))
-    lift $ poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (zero))
-    lift $ poke ((p `plusPtr` 28 :: Ptr PolygonMode)) (zero)
-    lift $ poke ((p `plusPtr` 36 :: Ptr FrontFace)) (zero)
-    lift $ poke ((p `plusPtr` 40 :: Ptr Bool32)) (boolToBool32 (zero))
-    lift $ poke ((p `plusPtr` 44 :: Ptr CFloat)) (CFloat (zero))
-    lift $ poke ((p `plusPtr` 48 :: Ptr CFloat)) (CFloat (zero))
-    lift $ poke ((p `plusPtr` 52 :: Ptr CFloat)) (CFloat (zero))
-    lift $ poke ((p `plusPtr` 56 :: Ptr CFloat)) (CFloat (zero))
-    lift $ f
-
-instance ( Extendss PipelineRasterizationStateCreateInfo es
-         , PeekChain es ) => FromCStruct (PipelineRasterizationStateCreateInfo es) where
-  peekCStruct p = do
-    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
-    next <- peekChain (castPtr pNext)
-    flags <- peek @PipelineRasterizationStateCreateFlags ((p `plusPtr` 16 :: Ptr PipelineRasterizationStateCreateFlags))
-    depthClampEnable <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
-    rasterizerDiscardEnable <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))
-    polygonMode <- peek @PolygonMode ((p `plusPtr` 28 :: Ptr PolygonMode))
-    cullMode <- peek @CullModeFlags ((p `plusPtr` 32 :: Ptr CullModeFlags))
-    frontFace <- peek @FrontFace ((p `plusPtr` 36 :: Ptr FrontFace))
-    depthBiasEnable <- peek @Bool32 ((p `plusPtr` 40 :: Ptr Bool32))
-    depthBiasConstantFactor <- peek @CFloat ((p `plusPtr` 44 :: Ptr CFloat))
-    depthBiasClamp <- peek @CFloat ((p `plusPtr` 48 :: Ptr CFloat))
-    depthBiasSlopeFactor <- peek @CFloat ((p `plusPtr` 52 :: Ptr CFloat))
-    lineWidth <- peek @CFloat ((p `plusPtr` 56 :: Ptr CFloat))
-    pure $ PipelineRasterizationStateCreateInfo
-             next
-             flags
-             (bool32ToBool depthClampEnable)
-             (bool32ToBool rasterizerDiscardEnable)
-             polygonMode
-             cullMode
-             frontFace
-             (bool32ToBool depthBiasEnable)
-             (coerce @CFloat @Float depthBiasConstantFactor)
-             (coerce @CFloat @Float depthBiasClamp)
-             (coerce @CFloat @Float depthBiasSlopeFactor)
-             (coerce @CFloat @Float lineWidth)
-
-instance es ~ '[] => Zero (PipelineRasterizationStateCreateInfo es) where
-  zero = PipelineRasterizationStateCreateInfo
-           ()
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-
-
--- | VkPipelineMultisampleStateCreateInfo - Structure specifying parameters
--- of a newly created pipeline multisample state
---
--- = Description
---
--- Each bit in the sample mask is associated with a unique
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-multisampling-coverage-mask sample index>
--- as defined for the
--- <https://registry.khronos.org/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.
---
--- If @pSampleMask@ is @NULL@, it is treated as if the mask has all bits
--- set to @1@.
---
--- == Valid Usage
---
--- -   #VUID-VkPipelineMultisampleStateCreateInfo-sampleShadingEnable-00784#
---     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-sampleRateShading sampleRateShading>
---     feature is not enabled, @sampleShadingEnable@ /must/ be
---     'Vulkan.Core10.FundamentalTypes.FALSE'
---
--- -   #VUID-VkPipelineMultisampleStateCreateInfo-alphaToOneEnable-00785#
---     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-alphaToOne alphaToOne>
---     feature is not enabled, @alphaToOneEnable@ /must/ be
---     'Vulkan.Core10.FundamentalTypes.FALSE'
---
--- -   #VUID-VkPipelineMultisampleStateCreateInfo-minSampleShading-00786#
---     @minSampleShading@ /must/ be in the range [0,1]
---
--- -   #VUID-VkPipelineMultisampleStateCreateInfo-rasterizationSamples-01415#
---     If the @VK_NV_framebuffer_mixed_samples@ extension is enabled, and
---     if the subpass has any color attachments and @rasterizationSamples@
---     is greater than the number of color samples, then
---     @sampleShadingEnable@ /must/ be
---     'Vulkan.Core10.FundamentalTypes.FALSE'
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkPipelineMultisampleStateCreateInfo-sType-sType# @sType@
---     /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO'
---
--- -   #VUID-VkPipelineMultisampleStateCreateInfo-pNext-pNext# Each @pNext@
---     member of any structure (including this one) in the @pNext@ chain
---     /must/ be either @NULL@ or a pointer to a valid instance of
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.PipelineCoverageModulationStateCreateInfoNV',
---     'Vulkan.Extensions.VK_NV_coverage_reduction_mode.PipelineCoverageReductionStateCreateInfoNV',
---     'Vulkan.Extensions.VK_NV_fragment_coverage_to_color.PipelineCoverageToColorStateCreateInfoNV',
---     or
---     'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'
---
--- -   #VUID-VkPipelineMultisampleStateCreateInfo-sType-unique# The @sType@
---     value of each struct in the @pNext@ chain /must/ be unique
---
--- -   #VUID-VkPipelineMultisampleStateCreateInfo-flags-zerobitmask#
---     @flags@ /must/ be @0@
---
--- -   #VUID-VkPipelineMultisampleStateCreateInfo-rasterizationSamples-parameter#
---     @rasterizationSamples@ /must/ be a valid
---     'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' value
---
--- -   #VUID-VkPipelineMultisampleStateCreateInfo-pSampleMask-parameter# If
---     @pSampleMask@ is not @NULL@, @pSampleMask@ /must/ be a valid pointer
---     to an array of
---     \(\lceil{\mathit{rasterizationSamples} \over 32}\rceil\)
---     'Vulkan.Core10.FundamentalTypes.SampleMask' values
---
--- = 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.Bool32', 'GraphicsPipelineCreateInfo',
--- 'Vulkan.Core10.Enums.PipelineMultisampleStateCreateFlags.PipelineMultisampleStateCreateFlags',
--- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits',
--- 'Vulkan.Core10.FundamentalTypes.SampleMask',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PipelineMultisampleStateCreateInfo (es :: [Type]) = PipelineMultisampleStateCreateInfo
-  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
-    next :: Chain es
-  , -- | @flags@ is reserved for future use.
-    flags :: PipelineMultisampleStateCreateFlags
-  , -- | @rasterizationSamples@ is a
-    -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' value
-    -- specifying the number of samples used in rasterization. This value is
-    -- ignored for the purposes of setting the number of samples used in
-    -- rasterization if the pipeline is created with the
-    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
-    -- dynamic state set, but if
-    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT' dynamic
-    -- state is not set, it is still used to define the size of the
-    -- @pSampleMask@ array as described below.
-    rasterizationSamples :: SampleCountFlagBits
-  , -- | @sampleShadingEnable@ /can/ be used to enable
-    -- <https://registry.khronos.org/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 'Vulkan.Core10.FundamentalTypes.TRUE'.
-    minSampleShading :: Float
-  , -- | @pSampleMask@ is a pointer to an array of
-    -- 'Vulkan.Core10.FundamentalTypes.SampleMask' values used in the
-    -- <https://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-covg Multisample Coverage>.
-    alphaToOneEnable :: Bool
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PipelineMultisampleStateCreateInfo (es :: [Type]))
-#endif
-deriving instance Show (Chain es) => Show (PipelineMultisampleStateCreateInfo es)
-
-instance Extensible PipelineMultisampleStateCreateInfo where
-  extensibleTypeName = "PipelineMultisampleStateCreateInfo"
-  setNext PipelineMultisampleStateCreateInfo{..} next' = PipelineMultisampleStateCreateInfo{next = next', ..}
-  getNext PipelineMultisampleStateCreateInfo{..} = next
-  extends :: forall e b proxy. Typeable e => proxy e -> (Extends PipelineMultisampleStateCreateInfo e => b) -> Maybe b
-  extends _ f
-    | Just Refl <- eqT @e @PipelineCoverageReductionStateCreateInfoNV = Just f
-    | Just Refl <- eqT @e @PipelineCoverageModulationStateCreateInfoNV = Just f
-    | Just Refl <- eqT @e @PipelineSampleLocationsStateCreateInfoEXT = Just f
-    | Just Refl <- eqT @e @PipelineCoverageToColorStateCreateInfoNV = Just f
-    | otherwise = Nothing
-
-instance ( Extendss PipelineMultisampleStateCreateInfo es
-         , PokeChain es ) => ToCStruct (PipelineMultisampleStateCreateInfo es) where
-  withCStruct x f = allocaBytes 48 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PipelineMultisampleStateCreateInfo{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO)
-    pNext'' <- fmap castPtr . ContT $ withChain (next)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
-    lift $ poke ((p `plusPtr` 16 :: Ptr PipelineMultisampleStateCreateFlags)) (flags)
-    lift $ poke ((p `plusPtr` 20 :: Ptr SampleCountFlagBits)) (rasterizationSamples)
-    lift $ poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (sampleShadingEnable))
-    lift $ poke ((p `plusPtr` 28 :: Ptr CFloat)) (CFloat (minSampleShading))
-    pSampleMask'' <- case Data.Vector.length (sampleMask) of
-      0      -> pure nullPtr
-      vecLen -> do
-        let requiredLen = case (rasterizationSamples) of
-              SampleCountFlagBits n -> (n + 31) `quot` 32
-        lift $ unless (requiredLen == fromIntegral vecLen) $
-          throwIO $ IOError Nothing InvalidArgument "" "sampleMask must be either empty or contain enough bits to cover all the sample specified by 'rasterizationSamples'" Nothing Nothing
-        do
-          pPSampleMask' <- ContT $ allocaBytes @SampleMask ((Data.Vector.length ((sampleMask))) * 4)
-          lift $ Data.Vector.imapM_ (\i e -> poke (pPSampleMask' `plusPtr` (4 * (i)) :: Ptr SampleMask) (e)) ((sampleMask))
-          pure $ pPSampleMask'
-    lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr SampleMask))) pSampleMask''
-    lift $ poke ((p `plusPtr` 40 :: Ptr Bool32)) (boolToBool32 (alphaToCoverageEnable))
-    lift $ poke ((p `plusPtr` 44 :: Ptr Bool32)) (boolToBool32 (alphaToOneEnable))
-    lift $ f
-  cStructSize = 48
-  cStructAlignment = 8
-  pokeZeroCStruct p f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO)
-    pNext' <- fmap castPtr . ContT $ withZeroChain @es
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
-    lift $ poke ((p `plusPtr` 20 :: Ptr SampleCountFlagBits)) (zero)
-    lift $ poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (zero))
-    lift $ poke ((p `plusPtr` 28 :: Ptr CFloat)) (CFloat (zero))
-    lift $ poke ((p `plusPtr` 40 :: Ptr Bool32)) (boolToBool32 (zero))
-    lift $ poke ((p `plusPtr` 44 :: Ptr Bool32)) (boolToBool32 (zero))
-    lift $ f
-
-instance ( Extendss PipelineMultisampleStateCreateInfo es
-         , PeekChain es ) => FromCStruct (PipelineMultisampleStateCreateInfo es) where
-  peekCStruct p = do
-    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
-    next <- peekChain (castPtr pNext)
-    flags <- peek @PipelineMultisampleStateCreateFlags ((p `plusPtr` 16 :: Ptr PipelineMultisampleStateCreateFlags))
-    rasterizationSamples <- peek @SampleCountFlagBits ((p `plusPtr` 20 :: Ptr SampleCountFlagBits))
-    sampleShadingEnable <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))
-    minSampleShading <- peek @CFloat ((p `plusPtr` 28 :: Ptr CFloat))
-    pSampleMask <- peek @(Ptr SampleMask) ((p `plusPtr` 32 :: Ptr (Ptr SampleMask)))
-    pSampleMask' <- if pSampleMask == nullPtr
-      then pure mempty
-      else generateM (case rasterizationSamples of
-        SampleCountFlagBits n -> (fromIntegral n + 31) `quot` 32) (\i -> peek @SampleMask (((pSampleMask) `advancePtrBytes` (4 * (i)) :: Ptr SampleMask)))
-    alphaToCoverageEnable <- peek @Bool32 ((p `plusPtr` 40 :: Ptr Bool32))
-    alphaToOneEnable <- peek @Bool32 ((p `plusPtr` 44 :: Ptr Bool32))
-    pure $ PipelineMultisampleStateCreateInfo
-             next
-             flags
-             rasterizationSamples
-             (bool32ToBool sampleShadingEnable)
-             (coerce @CFloat @Float minSampleShading)
-             pSampleMask'
-             (bool32ToBool alphaToCoverageEnable)
-             (bool32ToBool alphaToOneEnable)
-
-instance es ~ '[] => Zero (PipelineMultisampleStateCreateInfo es) where
-  zero = PipelineMultisampleStateCreateInfo
-           ()
-           zero
-           zero
-           zero
-           zero
-           mempty
-           zero
-           zero
-
-
--- | VkPipelineColorBlendAttachmentState - Structure specifying a pipeline
--- color blend attachment state
---
--- == Valid Usage
---
--- -   #VUID-VkPipelineColorBlendAttachmentState-srcColorBlendFactor-00608#
---     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-dualSrcBlend dualSrcBlend>
---     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',
---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_SRC1_ALPHA', or
---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA'
---
--- -   #VUID-VkPipelineColorBlendAttachmentState-dstColorBlendFactor-00609#
---     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-dualSrcBlend dualSrcBlend>
---     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',
---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_SRC1_ALPHA', or
---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA'
---
--- -   #VUID-VkPipelineColorBlendAttachmentState-srcAlphaBlendFactor-00610#
---     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-dualSrcBlend dualSrcBlend>
---     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',
---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_SRC1_ALPHA', or
---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA'
---
--- -   #VUID-VkPipelineColorBlendAttachmentState-dstAlphaBlendFactor-00611#
---     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-dualSrcBlend dualSrcBlend>
---     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',
---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_SRC1_ALPHA', or
---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA'
---
--- -   #VUID-VkPipelineColorBlendAttachmentState-colorBlendOp-01406# If
---     either of @colorBlendOp@ or @alphaBlendOp@ is an
---     <https://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/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#
---     If
---     'Vulkan.Extensions.VK_EXT_blend_operation_advanced.PhysicalDeviceBlendOperationAdvancedPropertiesEXT'::@advancedBlendAllOperations@
---     is 'Vulkan.Core10.FundamentalTypes.FALSE', then @colorBlendOp@
---     /must/ not be 'Vulkan.Core10.Enums.BlendOp.BLEND_OP_ZERO_EXT',
---     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_SRC_EXT',
---     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_DST_EXT',
---     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_SRC_OVER_EXT',
---     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_DST_OVER_EXT',
---     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_SRC_IN_EXT',
---     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_DST_IN_EXT',
---     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_SRC_OUT_EXT',
---     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_DST_OUT_EXT',
---     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_SRC_ATOP_EXT',
---     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_DST_ATOP_EXT',
---     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_XOR_EXT',
---     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_INVERT_EXT',
---     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_INVERT_RGB_EXT',
---     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_LINEARDODGE_EXT',
---     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_LINEARBURN_EXT',
---     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_VIVIDLIGHT_EXT',
---     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_LINEARLIGHT_EXT',
---     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_PINLIGHT_EXT',
---     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_HARDMIX_EXT',
---     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_PLUS_EXT',
---     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_PLUS_CLAMPED_EXT',
---     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_PLUS_CLAMPED_ALPHA_EXT',
---     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_PLUS_DARKER_EXT',
---     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_MINUS_EXT',
---     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_MINUS_CLAMPED_EXT',
---     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_CONTRAST_EXT',
---     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_INVERT_OVG_EXT',
---     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_RED_EXT',
---     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_GREEN_EXT', or
---     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_BLUE_EXT'
---
--- -   #VUID-VkPipelineColorBlendAttachmentState-colorBlendOp-01410# If
---     @colorBlendOp@ or @alphaBlendOp@ is an
---     <https://registry.khronos.org/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@
---
--- -   #VUID-VkPipelineColorBlendAttachmentState-constantAlphaColorBlendFactors-04454#
---     If the @VK_KHR_portability_subset@ extension is enabled, and
---     'Vulkan.Extensions.VK_KHR_portability_subset.PhysicalDevicePortabilitySubsetFeaturesKHR'::@constantAlphaColorBlendFactors@
---     is 'Vulkan.Core10.FundamentalTypes.FALSE', @srcColorBlendFactor@
---     /must/ not be
---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_ALPHA' or
---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA'
---
--- -   #VUID-VkPipelineColorBlendAttachmentState-constantAlphaColorBlendFactors-04455#
---     If the @VK_KHR_portability_subset@ extension is enabled, and
---     'Vulkan.Extensions.VK_KHR_portability_subset.PhysicalDevicePortabilitySubsetFeaturesKHR'::@constantAlphaColorBlendFactors@
---     is 'Vulkan.Core10.FundamentalTypes.FALSE', @dstColorBlendFactor@
---     /must/ not be
---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_ALPHA' or
---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA'
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkPipelineColorBlendAttachmentState-srcColorBlendFactor-parameter#
---     @srcColorBlendFactor@ /must/ be a valid
---     'Vulkan.Core10.Enums.BlendFactor.BlendFactor' value
---
--- -   #VUID-VkPipelineColorBlendAttachmentState-dstColorBlendFactor-parameter#
---     @dstColorBlendFactor@ /must/ be a valid
---     'Vulkan.Core10.Enums.BlendFactor.BlendFactor' value
---
--- -   #VUID-VkPipelineColorBlendAttachmentState-colorBlendOp-parameter#
---     @colorBlendOp@ /must/ be a valid
---     'Vulkan.Core10.Enums.BlendOp.BlendOp' value
---
--- -   #VUID-VkPipelineColorBlendAttachmentState-srcAlphaBlendFactor-parameter#
---     @srcAlphaBlendFactor@ /must/ be a valid
---     'Vulkan.Core10.Enums.BlendFactor.BlendFactor' value
---
--- -   #VUID-VkPipelineColorBlendAttachmentState-dstAlphaBlendFactor-parameter#
---     @dstAlphaBlendFactor@ /must/ be a valid
---     'Vulkan.Core10.Enums.BlendFactor.BlendFactor' value
---
--- -   #VUID-VkPipelineColorBlendAttachmentState-alphaBlendOp-parameter#
---     @alphaBlendOp@ /must/ be a valid
---     'Vulkan.Core10.Enums.BlendOp.BlendOp' value
---
--- -   #VUID-VkPipelineColorBlendAttachmentState-colorWriteMask-parameter#
---     @colorWriteMask@ /must/ be a valid combination of
---     'Vulkan.Core10.Enums.ColorComponentFlagBits.ColorComponentFlagBits'
---     values
---
--- = 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.Enums.BlendFactor.BlendFactor',
--- 'Vulkan.Core10.Enums.BlendOp.BlendOp',
--- 'Vulkan.Core10.FundamentalTypes.Bool32',
--- 'Vulkan.Core10.Enums.ColorComponentFlagBits.ColorComponentFlags',
--- 'PipelineColorBlendStateCreateInfo'
-data PipelineColorBlendAttachmentState = PipelineColorBlendAttachmentState
-  { -- | @blendEnable@ controls whether blending is enabled for the corresponding
-    -- color attachment. If blending is not enabled, the source fragment’s
-    -- color for that attachment is passed through unmodified.
-    blendEnable :: Bool
-  , -- | @srcColorBlendFactor@ selects which blend factor is used to determine
-    -- the source factors (Sr,Sg,Sb).
-    srcColorBlendFactor :: BlendFactor
-  , -- | @dstColorBlendFactor@ selects which blend factor is used to determine
-    -- the destination factors (Dr,Dg,Db).
-    dstColorBlendFactor :: BlendFactor
-  , -- | @colorBlendOp@ selects which blend operation is used to calculate the
-    -- RGB values to write to the color attachment.
-    colorBlendOp :: BlendOp
-  , -- | @srcAlphaBlendFactor@ selects which blend factor is used to determine
-    -- the source factor Sa.
-    srcAlphaBlendFactor :: BlendFactor
-  , -- | @dstAlphaBlendFactor@ selects which blend factor is used to determine
-    -- the destination factor Da.
-    dstAlphaBlendFactor :: BlendFactor
-  , -- | @alphaBlendOp@ selects which blend operation is used to calculate the
-    -- alpha values to write to the color attachment.
-    alphaBlendOp :: BlendOp
-  , -- | @colorWriteMask@ is a bitmask of
-    -- '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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#framebuffer-color-write-mask Color Write Mask>.
-    colorWriteMask :: ColorComponentFlags
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PipelineColorBlendAttachmentState)
-#endif
-deriving instance Show PipelineColorBlendAttachmentState
-
-instance ToCStruct PipelineColorBlendAttachmentState where
-  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PipelineColorBlendAttachmentState{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr Bool32)) (boolToBool32 (blendEnable))
-    poke ((p `plusPtr` 4 :: Ptr BlendFactor)) (srcColorBlendFactor)
-    poke ((p `plusPtr` 8 :: Ptr BlendFactor)) (dstColorBlendFactor)
-    poke ((p `plusPtr` 12 :: Ptr BlendOp)) (colorBlendOp)
-    poke ((p `plusPtr` 16 :: Ptr BlendFactor)) (srcAlphaBlendFactor)
-    poke ((p `plusPtr` 20 :: Ptr BlendFactor)) (dstAlphaBlendFactor)
-    poke ((p `plusPtr` 24 :: Ptr BlendOp)) (alphaBlendOp)
-    poke ((p `plusPtr` 28 :: Ptr ColorComponentFlags)) (colorWriteMask)
-    f
-  cStructSize = 32
-  cStructAlignment = 4
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr Bool32)) (boolToBool32 (zero))
-    poke ((p `plusPtr` 4 :: Ptr BlendFactor)) (zero)
-    poke ((p `plusPtr` 8 :: Ptr BlendFactor)) (zero)
-    poke ((p `plusPtr` 12 :: Ptr BlendOp)) (zero)
-    poke ((p `plusPtr` 16 :: Ptr BlendFactor)) (zero)
-    poke ((p `plusPtr` 20 :: Ptr BlendFactor)) (zero)
-    poke ((p `plusPtr` 24 :: Ptr BlendOp)) (zero)
-    f
-
-instance FromCStruct PipelineColorBlendAttachmentState where
-  peekCStruct p = do
-    blendEnable <- peek @Bool32 ((p `plusPtr` 0 :: Ptr Bool32))
-    srcColorBlendFactor <- peek @BlendFactor ((p `plusPtr` 4 :: Ptr BlendFactor))
-    dstColorBlendFactor <- peek @BlendFactor ((p `plusPtr` 8 :: Ptr BlendFactor))
-    colorBlendOp <- peek @BlendOp ((p `plusPtr` 12 :: Ptr BlendOp))
-    srcAlphaBlendFactor <- peek @BlendFactor ((p `plusPtr` 16 :: Ptr BlendFactor))
-    dstAlphaBlendFactor <- peek @BlendFactor ((p `plusPtr` 20 :: Ptr BlendFactor))
-    alphaBlendOp <- peek @BlendOp ((p `plusPtr` 24 :: Ptr BlendOp))
-    colorWriteMask <- peek @ColorComponentFlags ((p `plusPtr` 28 :: Ptr ColorComponentFlags))
-    pure $ PipelineColorBlendAttachmentState
-             (bool32ToBool blendEnable)
-             srcColorBlendFactor
-             dstColorBlendFactor
-             colorBlendOp
-             srcAlphaBlendFactor
-             dstAlphaBlendFactor
-             alphaBlendOp
-             colorWriteMask
-
-instance Storable PipelineColorBlendAttachmentState where
-  sizeOf ~_ = 32
-  alignment ~_ = 4
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero PipelineColorBlendAttachmentState where
-  zero = PipelineColorBlendAttachmentState
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-
-
--- | VkPipelineColorBlendStateCreateInfo - Structure specifying parameters of
--- a newly created pipeline color blend state
---
--- == Valid Usage
---
--- -   #VUID-VkPipelineColorBlendStateCreateInfo-pAttachments-00605# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-independentBlend independentBlend>
---     feature is not enabled, all elements of @pAttachments@ /must/ be
---     identical
---
--- -   #VUID-VkPipelineColorBlendStateCreateInfo-logicOpEnable-00606# If
---     the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-logicOp logicOp>
---     feature is not enabled, @logicOpEnable@ /must/ be
---     'Vulkan.Core10.FundamentalTypes.FALSE'
---
--- -   #VUID-VkPipelineColorBlendStateCreateInfo-logicOpEnable-00607# If
---     @logicOpEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', @logicOp@
---     /must/ be a valid 'Vulkan.Core10.Enums.LogicOp.LogicOp' value
---
--- -   #VUID-VkPipelineColorBlendStateCreateInfo-rasterizationOrderColorAttachmentAccess-06465#
---     If the
---     <https://registry.khronos.org/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_EXT'
---
--- -   #VUID-VkPipelineColorBlendStateCreateInfo-pAttachments-07353# If
---     @attachmentCount@ is not @0@ , and any of
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT',
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT',
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT',
---     or
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT'
---     are not set, @pAttachments@ /must/ be a valid pointer to an array of
---     @attachmentCount@ valid 'PipelineColorBlendAttachmentState'
---     structures
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkPipelineColorBlendStateCreateInfo-sType-sType# @sType@
---     /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO'
---
--- -   #VUID-VkPipelineColorBlendStateCreateInfo-pNext-pNext# Each @pNext@
---     member of any structure (including this one) in the @pNext@ chain
---     /must/ be either @NULL@ or a pointer to a valid instance of
---     'Vulkan.Extensions.VK_EXT_blend_operation_advanced.PipelineColorBlendAdvancedStateCreateInfoEXT'
---     or
---     'Vulkan.Extensions.VK_EXT_color_write_enable.PipelineColorWriteCreateInfoEXT'
---
--- -   #VUID-VkPipelineColorBlendStateCreateInfo-sType-unique# The @sType@
---     value of each struct in the @pNext@ chain /must/ be unique
---
--- -   #VUID-VkPipelineColorBlendStateCreateInfo-flags-parameter# @flags@
---     /must/ be a valid combination of
---     'Vulkan.Core10.Enums.PipelineColorBlendStateCreateFlagBits.PipelineColorBlendStateCreateFlagBits'
---     values
---
--- -   #VUID-VkPipelineColorBlendStateCreateInfo-pAttachments-parameter# If
---     @attachmentCount@ is not @0@, and @pAttachments@ is not @NULL@,
---     @pAttachments@ /must/ be a valid pointer to an array of
---     @attachmentCount@ valid 'PipelineColorBlendAttachmentState'
---     structures
---
--- = 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.Bool32', 'GraphicsPipelineCreateInfo',
--- 'Vulkan.Core10.Enums.LogicOp.LogicOp',
--- 'PipelineColorBlendAttachmentState',
--- 'Vulkan.Core10.Enums.PipelineColorBlendStateCreateFlagBits.PipelineColorBlendStateCreateFlags',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PipelineColorBlendStateCreateInfo (es :: [Type]) = PipelineColorBlendStateCreateInfo
-  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
-    next :: Chain es
-  , -- | @flags@ is a bitmask of
-    -- 'Vulkan.Core10.Enums.PipelineColorBlendStateCreateFlagBits.PipelineColorBlendStateCreateFlagBits'
-    -- specifying additional color blending information.
-    flags :: PipelineColorBlendStateCreateFlags
-  , -- | @logicOpEnable@ controls whether to apply
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#framebuffer-logicop Logical Operations>.
-    logicOpEnable :: Bool
-  , -- | @logicOp@ selects which logical operation to apply.
-    logicOp :: LogicOp
-  , -- | @attachmentCount@ is the number of 'PipelineColorBlendAttachmentState'
-    -- elements in @pAttachments@. It is ignored if the pipeline is created
-    -- with
-    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT',
-    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT',
-    -- and
-    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT'
-    -- dynamic states set, and either
-    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
-    -- set or the
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-advancedBlendCoherentOperations advancedBlendCoherentOperations>
-    -- feature is not enabled.
-    attachmentCount :: Word32
-  , -- | @pAttachments@ is a pointer to an array of
-    -- 'PipelineColorBlendAttachmentState' structures defining blend state for
-    -- each color attachment. It is ignored if the pipeline is created with
-    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT',
-    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT',
-    -- and
-    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT'
-    -- dynamic states set, and either
-    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
-    -- set or the
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-advancedBlendCoherentOperations advancedBlendCoherentOperations>
-    -- feature is not enabled.
-    attachments :: Vector PipelineColorBlendAttachmentState
-  , -- | @blendConstants@ is a pointer to an array of four values used as the R,
-    -- G, B, and A components of the blend constant that are used in blending,
-    -- depending on the
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#framebuffer-blendfactors blend factor>.
-    blendConstants :: (Float, Float, Float, Float)
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PipelineColorBlendStateCreateInfo (es :: [Type]))
-#endif
-deriving instance Show (Chain es) => Show (PipelineColorBlendStateCreateInfo es)
-
-instance Extensible PipelineColorBlendStateCreateInfo where
-  extensibleTypeName = "PipelineColorBlendStateCreateInfo"
-  setNext PipelineColorBlendStateCreateInfo{..} next' = PipelineColorBlendStateCreateInfo{next = next', ..}
-  getNext PipelineColorBlendStateCreateInfo{..} = next
-  extends :: forall e b proxy. Typeable e => proxy e -> (Extends PipelineColorBlendStateCreateInfo e => b) -> Maybe b
-  extends _ f
-    | Just Refl <- eqT @e @PipelineColorWriteCreateInfoEXT = Just f
-    | Just Refl <- eqT @e @PipelineColorBlendAdvancedStateCreateInfoEXT = Just f
-    | otherwise = Nothing
-
-instance ( Extendss PipelineColorBlendStateCreateInfo es
-         , PokeChain es ) => ToCStruct (PipelineColorBlendStateCreateInfo es) where
-  withCStruct x f = allocaBytes 56 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PipelineColorBlendStateCreateInfo{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO)
-    pNext'' <- fmap castPtr . ContT $ withChain (next)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
-    lift $ poke ((p `plusPtr` 16 :: Ptr PipelineColorBlendStateCreateFlags)) (flags)
-    lift $ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (logicOpEnable))
-    lift $ poke ((p `plusPtr` 24 :: Ptr LogicOp)) (logicOp)
-    let pAttachmentsLength = Data.Vector.length $ (attachments)
-    attachmentCount'' <- lift $ if (attachmentCount) == 0
-      then pure $ fromIntegral pAttachmentsLength
-      else do
-        unless (fromIntegral pAttachmentsLength == (attachmentCount) || pAttachmentsLength == 0) $
-          throwIO $ IOError Nothing InvalidArgument "" "pAttachments must be empty or have 'attachmentCount' elements" Nothing Nothing
-        pure (attachmentCount)
-    lift $ poke ((p `plusPtr` 28 :: Ptr Word32)) (attachmentCount'')
-    pAttachments'' <- if Data.Vector.null (attachments)
-      then pure nullPtr
-      else do
-        pPAttachments <- ContT $ allocaBytes @PipelineColorBlendAttachmentState (((Data.Vector.length (attachments))) * 32)
-        lift $ Data.Vector.imapM_ (\i e -> poke (pPAttachments `plusPtr` (32 * (i)) :: Ptr PipelineColorBlendAttachmentState) (e)) ((attachments))
-        pure $ pPAttachments
-    lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr PipelineColorBlendAttachmentState))) pAttachments''
-    let pBlendConstants' = lowerArrayPtr ((p `plusPtr` 40 :: Ptr (FixedArray 4 CFloat)))
-    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 $ f
-  cStructSize = 56
-  cStructAlignment = 8
-  pokeZeroCStruct p f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO)
-    pNext' <- fmap castPtr . ContT $ withZeroChain @es
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
-    lift $ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))
-    lift $ poke ((p `plusPtr` 24 :: Ptr LogicOp)) (zero)
-    let pBlendConstants' = lowerArrayPtr ((p `plusPtr` 40 :: Ptr (FixedArray 4 CFloat)))
-    lift $ case ((zero, zero, zero, zero)) 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 $ f
-
-instance ( Extendss PipelineColorBlendStateCreateInfo es
-         , PeekChain es ) => FromCStruct (PipelineColorBlendStateCreateInfo es) where
-  peekCStruct p = do
-    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
-    next <- peekChain (castPtr pNext)
-    flags <- peek @PipelineColorBlendStateCreateFlags ((p `plusPtr` 16 :: Ptr PipelineColorBlendStateCreateFlags))
-    logicOpEnable <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
-    logicOp <- peek @LogicOp ((p `plusPtr` 24 :: Ptr LogicOp))
-    attachmentCount <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))
-    pAttachments <- peek @(Ptr PipelineColorBlendAttachmentState) ((p `plusPtr` 32 :: Ptr (Ptr PipelineColorBlendAttachmentState)))
-    let pAttachmentsLength = if pAttachments == nullPtr then 0 else (fromIntegral attachmentCount)
-    pAttachments' <- generateM pAttachmentsLength (\i -> peekCStruct @PipelineColorBlendAttachmentState ((pAttachments `advancePtrBytes` (32 * (i)) :: Ptr PipelineColorBlendAttachmentState)))
-    let pblendConstants = lowerArrayPtr @CFloat ((p `plusPtr` 40 :: Ptr (FixedArray 4 CFloat)))
-    blendConstants0 <- peek @CFloat ((pblendConstants `advancePtrBytes` 0 :: Ptr CFloat))
-    blendConstants1 <- peek @CFloat ((pblendConstants `advancePtrBytes` 4 :: Ptr CFloat))
-    blendConstants2 <- peek @CFloat ((pblendConstants `advancePtrBytes` 8 :: Ptr CFloat))
-    blendConstants3 <- peek @CFloat ((pblendConstants `advancePtrBytes` 12 :: Ptr CFloat))
-    pure $ PipelineColorBlendStateCreateInfo
-             next
-             flags
-             (bool32ToBool logicOpEnable)
-             logicOp
-             attachmentCount
-             pAttachments'
-             (( (coerce @CFloat @Float blendConstants0)
-              , (coerce @CFloat @Float blendConstants1)
-              , (coerce @CFloat @Float blendConstants2)
-              , (coerce @CFloat @Float blendConstants3) ))
-
-instance es ~ '[] => Zero (PipelineColorBlendStateCreateInfo es) where
-  zero = PipelineColorBlendStateCreateInfo
-           ()
-           zero
-           zero
-           zero
-           zero
-           mempty
-           (zero, zero, zero, zero)
-
-
--- | VkPipelineDynamicStateCreateInfo - Structure specifying parameters of a
--- newly created pipeline dynamic state
---
--- == Valid Usage
---
--- -   #VUID-VkPipelineDynamicStateCreateInfo-pDynamicStates-01442# Each
---     element of @pDynamicStates@ /must/ be unique
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkPipelineDynamicStateCreateInfo-sType-sType# @sType@ /must/
---     be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO'
---
--- -   #VUID-VkPipelineDynamicStateCreateInfo-pNext-pNext# @pNext@ /must/
---     be @NULL@
---
--- -   #VUID-VkPipelineDynamicStateCreateInfo-flags-zerobitmask# @flags@
---     /must/ be @0@
---
--- -   #VUID-VkPipelineDynamicStateCreateInfo-pDynamicStates-parameter# If
---     @dynamicStateCount@ is not @0@, @pDynamicStates@ /must/ be a valid
---     pointer to an array of @dynamicStateCount@ valid
---     'Vulkan.Core10.Enums.DynamicState.DynamicState' values
---
--- = 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.Enums.DynamicState.DynamicState',
--- 'GraphicsPipelineCreateInfo',
--- 'Vulkan.Core10.Enums.PipelineDynamicStateCreateFlags.PipelineDynamicStateCreateFlags',
--- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingPipelineCreateInfoKHR',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PipelineDynamicStateCreateInfo = PipelineDynamicStateCreateInfo
-  { -- | @flags@ is reserved for future use.
-    flags :: PipelineDynamicStateCreateFlags
-  , -- | @pDynamicStates@ is a pointer to an array of
-    -- 'Vulkan.Core10.Enums.DynamicState.DynamicState' values specifying which
-    -- pieces of pipeline state will use the values from dynamic state commands
-    -- rather than from pipeline state creation information.
-    dynamicStates :: Vector DynamicState
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PipelineDynamicStateCreateInfo)
-#endif
-deriving instance Show PipelineDynamicStateCreateInfo
-
-instance ToCStruct PipelineDynamicStateCreateInfo where
-  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PipelineDynamicStateCreateInfo{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    lift $ poke ((p `plusPtr` 16 :: Ptr PipelineDynamicStateCreateFlags)) (flags)
-    lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (dynamicStates)) :: Word32))
-    pPDynamicStates' <- ContT $ allocaBytes @DynamicState ((Data.Vector.length (dynamicStates)) * 4)
-    lift $ Data.Vector.imapM_ (\i e -> poke (pPDynamicStates' `plusPtr` (4 * (i)) :: Ptr DynamicState) (e)) (dynamicStates)
-    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr DynamicState))) (pPDynamicStates')
-    lift $ f
-  cStructSize = 32
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    f
-
-instance FromCStruct PipelineDynamicStateCreateInfo where
-  peekCStruct p = do
-    flags <- peek @PipelineDynamicStateCreateFlags ((p `plusPtr` 16 :: Ptr PipelineDynamicStateCreateFlags))
-    dynamicStateCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
-    pDynamicStates <- peek @(Ptr DynamicState) ((p `plusPtr` 24 :: Ptr (Ptr DynamicState)))
-    pDynamicStates' <- generateM (fromIntegral dynamicStateCount) (\i -> peek @DynamicState ((pDynamicStates `advancePtrBytes` (4 * (i)) :: Ptr DynamicState)))
-    pure $ PipelineDynamicStateCreateInfo
-             flags pDynamicStates'
-
-instance Zero PipelineDynamicStateCreateInfo where
-  zero = PipelineDynamicStateCreateInfo
-           zero
-           mempty
-
-
--- | VkStencilOpState - Structure specifying stencil operation state
---
--- == Valid Usage (Implicit)
---
--- = 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.Enums.CompareOp.CompareOp',
--- 'PipelineDepthStencilStateCreateInfo',
--- 'Vulkan.Core10.Enums.StencilOp.StencilOp'
-data StencilOpState = StencilOpState
-  { -- | @failOp@ is a 'Vulkan.Core10.Enums.StencilOp.StencilOp' value specifying
-    -- the action performed on samples that fail the stencil test.
-    --
-    -- #VUID-VkStencilOpState-failOp-parameter# @failOp@ /must/ be a valid
-    -- 'Vulkan.Core10.Enums.StencilOp.StencilOp' value
-    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.
-    --
-    -- #VUID-VkStencilOpState-passOp-parameter# @passOp@ /must/ be a valid
-    -- 'Vulkan.Core10.Enums.StencilOp.StencilOp' value
-    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.
-    --
-    -- #VUID-VkStencilOpState-depthFailOp-parameter# @depthFailOp@ /must/ be a
-    -- valid 'Vulkan.Core10.Enums.StencilOp.StencilOp' value
-    depthFailOp :: StencilOp
-  , -- | @compareOp@ is a 'Vulkan.Core10.Enums.CompareOp.CompareOp' value
-    -- specifying the comparison operator used in the stencil test.
-    --
-    -- #VUID-VkStencilOpState-compareOp-parameter# @compareOp@ /must/ be a
-    -- valid 'Vulkan.Core10.Enums.CompareOp.CompareOp' value
-    compareOp :: CompareOp
-  , -- | @compareMask@ selects the bits of the unsigned integer stencil values
-    -- participating in the stencil test.
-    compareMask :: Word32
-  , -- | @writeMask@ selects the bits of the unsigned integer stencil values
-    -- updated by the stencil test in the stencil framebuffer attachment.
-    writeMask :: Word32
-  , -- | @reference@ is an integer stencil reference value that is used in the
-    -- unsigned stencil comparison.
-    reference :: Word32
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (StencilOpState)
-#endif
-deriving instance Show StencilOpState
-
-instance ToCStruct StencilOpState where
-  withCStruct x f = allocaBytes 28 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p StencilOpState{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StencilOp)) (failOp)
-    poke ((p `plusPtr` 4 :: Ptr StencilOp)) (passOp)
-    poke ((p `plusPtr` 8 :: Ptr StencilOp)) (depthFailOp)
-    poke ((p `plusPtr` 12 :: Ptr CompareOp)) (compareOp)
-    poke ((p `plusPtr` 16 :: Ptr Word32)) (compareMask)
-    poke ((p `plusPtr` 20 :: Ptr Word32)) (writeMask)
-    poke ((p `plusPtr` 24 :: Ptr Word32)) (reference)
-    f
-  cStructSize = 28
-  cStructAlignment = 4
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StencilOp)) (zero)
-    poke ((p `plusPtr` 4 :: Ptr StencilOp)) (zero)
-    poke ((p `plusPtr` 8 :: Ptr StencilOp)) (zero)
-    poke ((p `plusPtr` 12 :: Ptr CompareOp)) (zero)
-    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)
-    f
-
-instance FromCStruct StencilOpState where
-  peekCStruct p = do
-    failOp <- peek @StencilOp ((p `plusPtr` 0 :: Ptr StencilOp))
-    passOp <- peek @StencilOp ((p `plusPtr` 4 :: Ptr StencilOp))
-    depthFailOp <- peek @StencilOp ((p `plusPtr` 8 :: Ptr StencilOp))
-    compareOp <- peek @CompareOp ((p `plusPtr` 12 :: Ptr CompareOp))
-    compareMask <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
-    writeMask <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
-    reference <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))
-    pure $ StencilOpState
-             failOp passOp depthFailOp compareOp compareMask writeMask reference
-
-instance Storable StencilOpState where
-  sizeOf ~_ = 28
-  alignment ~_ = 4
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero StencilOpState where
-  zero = StencilOpState
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-
-
--- | VkPipelineDepthStencilStateCreateInfo - Structure specifying parameters
--- of a newly created pipeline depth stencil state
---
--- == Valid Usage
---
--- -   #VUID-VkPipelineDepthStencilStateCreateInfo-depthBoundsTestEnable-00598#
---     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-depthBounds depthBounds>
---     feature is not enabled, @depthBoundsTestEnable@ /must/ be
---     'Vulkan.Core10.FundamentalTypes.FALSE'
---
--- -   #VUID-VkPipelineDepthStencilStateCreateInfo-separateStencilMaskRef-04453#
---     If the @VK_KHR_portability_subset@ extension is enabled, and
---     'Vulkan.Extensions.VK_KHR_portability_subset.PhysicalDevicePortabilitySubsetFeaturesKHR'::@separateStencilMaskRef@
---     is 'Vulkan.Core10.FundamentalTypes.FALSE', and the value of
---     'PipelineDepthStencilStateCreateInfo'::@stencilTestEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', and the value of
---     'PipelineRasterizationStateCreateInfo'::@cullMode@ is
---     'Vulkan.Core10.Enums.CullModeFlagBits.CULL_MODE_NONE', the value of
---     @reference@ in each of the 'StencilOpState' structs in @front@ and
---     @back@ /must/ be the same
---
--- -   #VUID-VkPipelineDepthStencilStateCreateInfo-rasterizationOrderDepthAttachmentAccess-06463#
---     If the
---     <https://registry.khronos.org/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_EXT'
---
--- -   #VUID-VkPipelineDepthStencilStateCreateInfo-rasterizationOrderStencilAttachmentAccess-06464#
---     If the
---     <https://registry.khronos.org/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_EXT'
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkPipelineDepthStencilStateCreateInfo-sType-sType# @sType@
---     /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO'
---
--- -   #VUID-VkPipelineDepthStencilStateCreateInfo-pNext-pNext# @pNext@
---     /must/ be @NULL@
---
--- -   #VUID-VkPipelineDepthStencilStateCreateInfo-flags-parameter# @flags@
---     /must/ be a valid combination of
---     'Vulkan.Core10.Enums.PipelineDepthStencilStateCreateFlagBits.PipelineDepthStencilStateCreateFlagBits'
---     values
---
--- -   #VUID-VkPipelineDepthStencilStateCreateInfo-depthCompareOp-parameter#
---     @depthCompareOp@ /must/ be a valid
---     'Vulkan.Core10.Enums.CompareOp.CompareOp' value
---
--- -   #VUID-VkPipelineDepthStencilStateCreateInfo-front-parameter# @front@
---     /must/ be a valid 'StencilOpState' structure
---
--- -   #VUID-VkPipelineDepthStencilStateCreateInfo-back-parameter# @back@
---     /must/ be a valid 'StencilOpState' 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.Bool32',
--- 'Vulkan.Core10.Enums.CompareOp.CompareOp', 'GraphicsPipelineCreateInfo',
--- 'Vulkan.Core10.Enums.PipelineDepthStencilStateCreateFlagBits.PipelineDepthStencilStateCreateFlags',
--- 'StencilOpState', 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PipelineDepthStencilStateCreateInfo = PipelineDepthStencilStateCreateInfo
-  { -- | @flags@ is a bitmask of
-    -- 'Vulkan.Core10.Enums.PipelineDepthStencilStateCreateFlagBits.PipelineDepthStencilStateCreateFlagBits'
-    -- specifying additional depth\/stencil state information.
-    flags :: PipelineDepthStencilStateCreateFlags
-  , -- | @depthTestEnable@ controls whether
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-depth depth testing>
-    -- is enabled.
-    depthTestEnable :: Bool
-  , -- | @depthWriteEnable@ controls whether
-    -- <https://registry.khronos.org/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 a 'Vulkan.Core10.Enums.CompareOp.CompareOp' value
-    -- specifying the comparison operator to use in the
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-depth-comparison Depth Comparison>
-    -- step of the
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-depth depth test>.
-    depthCompareOp :: CompareOp
-  , -- | @depthBoundsTestEnable@ controls whether
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-dbt depth bounds testing>
-    -- is enabled.
-    depthBoundsTestEnable :: Bool
-  , -- | @stencilTestEnable@ controls whether
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-stencil stencil testing>
-    -- is enabled.
-    stencilTestEnable :: Bool
-  , -- | @front@ and @back@ are 'StencilOpState' values controlling the
-    -- corresponding parameters of the
-    -- <https://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-dbt depth bounds test>.
-    maxDepthBounds :: Float
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PipelineDepthStencilStateCreateInfo)
-#endif
-deriving instance Show PipelineDepthStencilStateCreateInfo
-
-instance ToCStruct PipelineDepthStencilStateCreateInfo where
-  withCStruct x f = allocaBytes 104 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PipelineDepthStencilStateCreateInfo{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr PipelineDepthStencilStateCreateFlags)) (flags)
-    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (depthTestEnable))
-    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (depthWriteEnable))
-    poke ((p `plusPtr` 28 :: Ptr CompareOp)) (depthCompareOp)
-    poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (depthBoundsTestEnable))
-    poke ((p `plusPtr` 36 :: Ptr Bool32)) (boolToBool32 (stencilTestEnable))
-    poke ((p `plusPtr` 40 :: Ptr StencilOpState)) (front)
-    poke ((p `plusPtr` 68 :: Ptr StencilOpState)) (back)
-    poke ((p `plusPtr` 96 :: Ptr CFloat)) (CFloat (minDepthBounds))
-    poke ((p `plusPtr` 100 :: Ptr CFloat)) (CFloat (maxDepthBounds))
-    f
-  cStructSize = 104
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))
-    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (zero))
-    poke ((p `plusPtr` 28 :: Ptr CompareOp)) (zero)
-    poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (zero))
-    poke ((p `plusPtr` 36 :: Ptr Bool32)) (boolToBool32 (zero))
-    poke ((p `plusPtr` 40 :: Ptr StencilOpState)) (zero)
-    poke ((p `plusPtr` 68 :: Ptr StencilOpState)) (zero)
-    poke ((p `plusPtr` 96 :: Ptr CFloat)) (CFloat (zero))
-    poke ((p `plusPtr` 100 :: Ptr CFloat)) (CFloat (zero))
-    f
-
-instance FromCStruct PipelineDepthStencilStateCreateInfo where
-  peekCStruct p = do
-    flags <- peek @PipelineDepthStencilStateCreateFlags ((p `plusPtr` 16 :: Ptr PipelineDepthStencilStateCreateFlags))
-    depthTestEnable <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
-    depthWriteEnable <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))
-    depthCompareOp <- peek @CompareOp ((p `plusPtr` 28 :: Ptr CompareOp))
-    depthBoundsTestEnable <- peek @Bool32 ((p `plusPtr` 32 :: Ptr Bool32))
-    stencilTestEnable <- peek @Bool32 ((p `plusPtr` 36 :: Ptr Bool32))
-    front <- peekCStruct @StencilOpState ((p `plusPtr` 40 :: Ptr StencilOpState))
-    back <- peekCStruct @StencilOpState ((p `plusPtr` 68 :: Ptr StencilOpState))
-    minDepthBounds <- peek @CFloat ((p `plusPtr` 96 :: Ptr CFloat))
-    maxDepthBounds <- peek @CFloat ((p `plusPtr` 100 :: Ptr CFloat))
-    pure $ PipelineDepthStencilStateCreateInfo
-             flags
-             (bool32ToBool depthTestEnable)
-             (bool32ToBool depthWriteEnable)
-             depthCompareOp
-             (bool32ToBool depthBoundsTestEnable)
-             (bool32ToBool stencilTestEnable)
-             front
-             back
-             (coerce @CFloat @Float minDepthBounds)
-             (coerce @CFloat @Float maxDepthBounds)
-
-instance Storable PipelineDepthStencilStateCreateInfo where
-  sizeOf ~_ = 104
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero PipelineDepthStencilStateCreateInfo where
-  zero = PipelineDepthStencilStateCreateInfo
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-
-
--- | VkGraphicsPipelineCreateInfo - Structure specifying parameters of a
--- newly created graphics pipeline
---
--- = Description
---
--- The parameters @basePipelineHandle@ and @basePipelineIndex@ are
--- described in more detail in
--- <https://registry.khronos.org/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.
---
--- With @VK_EXT_extended_dynamic_state3@, it is possible that many of the
--- 'GraphicsPipelineCreateInfo' members above /can/ be @NULL@ because all
--- their state is dynamic and therefore ignored. This is optional so the
--- application /can/ still use a valid pointer if it needs to set the
--- @pNext@ or @flags@ fields to specify state for other extensions.
---
--- The state required for a graphics pipeline is divided into
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-vertex-input vertex input state>,
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>,
--- and
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output state>.
---
--- __Vertex Input State__
---
--- Vertex input state is defined by:
---
--- -   'PipelineVertexInputStateCreateInfo'
---
--- -   'PipelineInputAssemblyStateCreateInfo'
---
--- If this pipeline specifies
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization state>
--- either directly or by including it as a pipeline library and its
--- @pStages@ includes a vertex shader, this state /must/ be specified to
--- create a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-complete complete graphics pipeline>.
---
--- If a pipeline includes
--- 'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_VERTEX_INPUT_INTERFACE_BIT_EXT'
--- in
--- 'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
--- either explicitly or as a default, and either the conditions requiring
--- this state for a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-complete complete graphics pipeline>
--- are met or this pipeline does not specify
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization state>
--- in any way, that pipeline /must/ specify this state directly.
---
--- __Pre-Rasterization Shader State__
---
--- Pre-rasterization shader state is defined by:
---
--- -   'PipelineShaderStageCreateInfo' entries for:
---
---     -   Vertex shaders
---
---     -   Tessellation control shaders
---
---     -   Tessellation evaluation shaders
---
---     -   Geometry shaders
---
---     -   Task shaders
---
---     -   Mesh shaders
---
--- -   Within the 'Vulkan.Core10.Handles.PipelineLayout', all descriptor
---     sets with pre-rasterization shader bindings if
---     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT'
---     was specified.
---
---     -   If
---         'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT'
---         was not specified, the full pipeline layout /must/ be specified.
---
--- -   'PipelineViewportStateCreateInfo'
---
--- -   'PipelineRasterizationStateCreateInfo'
---
--- -   'PipelineTessellationStateCreateInfo'
---
--- -   'Vulkan.Core10.Handles.RenderPass' and @subpass@ parameter
---
--- -   The @viewMask@ parameter of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'
---     (formats are ignored)
---
--- -   'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'
---
--- -   'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'
---
--- This state /must/ be specified to create a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-complete complete graphics pipeline>.
---
--- If either the @pNext@ chain includes a
--- 'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'
--- structure with
--- 'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'
--- included in @flags@, or it is not specified and would default to include
--- that value, this state /must/ be specified in the pipeline.
---
--- __Fragment Shader State__
---
--- Fragment shader state is defined by:
---
--- -   A 'PipelineShaderStageCreateInfo' entry for the fragment shader
---
--- -   Within the 'Vulkan.Core10.Handles.PipelineLayout', all descriptor
---     sets with fragment shader bindings if
---     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT'
---     was specified.
---
---     -   If
---         'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT'
---         was not specified, the full pipeline layout /must/ be specified.
---
--- -   'PipelineMultisampleStateCreateInfo' if
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-sampleshading sample shading>
---     is enabled or @renderpass@ is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE'
---
--- -   'PipelineDepthStencilStateCreateInfo'
---
--- -   'Vulkan.Core10.Handles.RenderPass' and @subpass@ parameter
---
--- -   The @viewMask@ parameter of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'
---     (formats are ignored)
---
--- -   'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'
---
--- -   'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PipelineFragmentShadingRateEnumStateCreateInfoNV'
---
--- -   'Vulkan.Extensions.VK_NV_representative_fragment_test.PipelineRepresentativeFragmentTestStateCreateInfoNV'
---
--- -   Inclusion\/omission of the
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
---     flag
---
--- -   Inclusion\/omission of the
---     'Vulkan.Extensions.VK_EXT_fragment_density_map.PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT'
---     flag
---
--- -   'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR'
---
--- If a pipeline specifies
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization state>
--- either directly or by including it as a pipeline library and
--- @rasterizerDiscardEnable@ is 'Vulkan.Core10.FundamentalTypes.FALSE' or
--- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE'
--- is used, this state /must/ be specified to create a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-complete complete graphics pipeline>.
---
--- If a pipeline includes
--- 'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT'
--- in
--- 'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
--- either explicitly or as a default, and either the conditions requiring
--- this state for a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-complete complete graphics pipeline>
--- are met or this pipeline does not specify
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization state>
--- in any way, that pipeline /must/ specify this state directly.
---
--- __Fragment Output State__
---
--- Fragment output state is defined by:
---
--- -   'PipelineColorBlendStateCreateInfo'
---
--- -   'Vulkan.Core10.Handles.RenderPass' and @subpass@ parameter
---
--- -   'PipelineMultisampleStateCreateInfo'
---
--- -   'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'
---
--- -   'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---
--- -   'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---
--- -   'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'
---
--- -   Inclusion\/omission of the
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT'
---     and
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT'
---     flags
---
--- -   Inclusion\/omission of the
---     'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT'
---     flag
---
--- -   'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingAttachmentLocationInfoKHR'
---
--- If a pipeline specifies
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization state>
--- either directly or by including it as a pipeline library and
--- @rasterizerDiscardEnable@ is 'Vulkan.Core10.FundamentalTypes.FALSE' or
--- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE'
--- is used, this state /must/ be specified to create a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-complete complete graphics pipeline>.
---
--- If a pipeline includes
--- 'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT'
--- in
--- 'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
--- either explicitly or as a default, and either the conditions requiring
--- this state for a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-complete complete graphics pipeline>
--- are met or this pipeline does not specify
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization state>
--- in any way, that pipeline /must/ specify this state directly.
---
--- __Dynamic State__
---
--- Dynamic state values set via @pDynamicState@ /must/ be ignored if the
--- state they correspond to is not otherwise statically set by one of the
--- state subsets used to create the pipeline. Additionally, setting dynamic
--- state values /must/ not modify whether state in a linked library is
--- static or dynamic; this is set and unchangeable when the library is
--- created. For example, if a pipeline only included
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
--- then any dynamic state value corresponding to depth or stencil testing
--- has no effect. Any linked library that has dynamic state enabled that
--- same dynamic state /must/ also be enabled in all the other linked
--- libraries to which that dynamic state applies.
---
--- __Complete Graphics Pipelines__
---
--- A complete graphics pipeline always includes
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
--- with other subsets included depending on that state as specified in the
--- above sections.
---
--- __Graphics Pipeline Library Layouts__
---
--- If different subsets are linked together with pipeline layouts created
--- with
--- 'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT',
--- the final effective pipeline layout is effectively the union of the
--- linked pipeline layouts. When binding descriptor sets for this pipeline,
--- the pipeline layout used /must/ be compatible with this union. This
--- pipeline layout /can/ be overridden when linking with
--- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT'
--- by providing a 'Vulkan.Core10.Handles.PipelineLayout' that is
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-compatibility compatible>
--- with this union other than
--- 'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT',
--- or when linking without
--- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT'
--- by providing a 'Vulkan.Core10.Handles.PipelineLayout' that is fully
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-compatibility compatible>
--- with this union.
---
--- If the @pNext@ chain includes a
--- 'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlags2CreateInfoKHR'
--- structure,
--- 'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlags2CreateInfoKHR'::@flags@
--- from that structure is used instead of @flags@ from this structure.
---
--- == Valid Usage
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-None-09497# If the @pNext@ chain
---     does not include a
---     'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlags2CreateInfoKHR'
---     structure, @flags@ /must/ be a valid combination of
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits'
---     values
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-flags-07984# If @flags@ contains
---     the
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'
---     flag, and @basePipelineIndex@ is -1, @basePipelineHandle@ /must/ be
---     a valid graphics 'Vulkan.Core10.Handles.Pipeline' handle
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-flags-07985# If @flags@ contains
---     the
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'
---     flag, and @basePipelineHandle@ is
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', @basePipelineIndex@ /must/
---     be a valid index into the calling command’s @pCreateInfos@ parameter
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-flags-07986# If @flags@ contains
---     the
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'
---     flag, @basePipelineIndex@ /must/ be -1 or @basePipelineHandle@
---     /must/ be 'Vulkan.Core10.APIConstants.NULL_HANDLE'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-layout-07987# If a push constant
---     block is declared in a shader, a push constant range in @layout@
---     /must/ match the shader stage
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-layout-10069# If a push constant
---     block is declared in a shader, the block must be contained inside
---     the push constant range in @layout@ that matches the stage
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-layout-07988# If a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-resources resource variables>
---     is declared in a shader, a descriptor slot in @layout@ /must/ match
---     the shader stage
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-layout-07990# If a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-resources resource variables>
---     is declared in a shader, and the descriptor type is not
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_MUTABLE_EXT', a
---     descriptor slot in @layout@ /must/ match the descriptor type
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-layout-07991# If a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-resources resource variables>
---     is declared in a shader as an array, a descriptor slot in @layout@
---     /must/ match the descriptor count
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-stage-02096# If the pipeline
---     requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
---     the @stage@ member of one element of @pStages@ /must/ be
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-02095# If the pipeline
---     requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-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_EXT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT')
---     or from the primitive shading pipeline (@stage@ is
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT',
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT')
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-09631# If the pipeline
---     requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
---     and @pStages@ contains both
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---     and
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT',
---     then the mesh shader’s entry point /must/ not declare a variable
---     with a @DrawIndex@ @BuiltIn@ decoration
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-TaskNV-07063# The shader stages
---     for
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---     /must/ use either the @TaskNV@ and @MeshNV@ @Execution@ @Model@ or
---     the @TaskEXT@ and @MeshEXT@ @Execution@ @Model@, but /must/ not use
---     both
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-00729# If the pipeline
---     requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-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
---     requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-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-09022# If the pipeline
---     requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
---     and @pStages@ includes a tessellation control shader stage, and the
---     @VK_EXT_extended_dynamic_state3@ extension is not enabled or the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT'
---     dynamic state is not set, @pTessellationState@ /must/ be a valid
---     pointer to a valid 'PipelineTessellationStateCreateInfo' structure
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pTessellationState-09023# If
---     @pTessellationState@ is not @NULL@ it /must/ be a pointer to a valid
---     'PipelineTessellationStateCreateInfo' structure
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-00732# If the pipeline
---     requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-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
---     requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-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
---     specify the same subdivision mode
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-00734# If the pipeline
---     requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-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
---     requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-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
---     patch size
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-08888# If the pipeline is
---     being created with
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
---     and
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-vertex-input vertex input state>
---     and @pStages@ includes tessellation shader stages, and either
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY'
---     dynamic state is not enabled or
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-dynamicPrimitiveTopologyUnrestricted dynamicPrimitiveTopologyUnrestricted>
---     is 'Vulkan.Core10.FundamentalTypes.FALSE', the @topology@ member of
---     @pInputAssembly@ /must/ be
---     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-topology-08889# If the pipeline
---     is being created with
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
---     and
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-vertex-input vertex input state>
---     and the @topology@ member of @pInputAssembly@ is
---     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST',
---     and either
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY'
---     dynamic state is not enabled or
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-dynamicPrimitiveTopologyUnrestricted dynamicPrimitiveTopologyUnrestricted>
---     is 'Vulkan.Core10.FundamentalTypes.FALSE', then @pStages@ /must/
---     include tessellation shader stages
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-TessellationEvaluation-07723# If
---     the pipeline is being created with a @TessellationEvaluation@
---     @Execution@ @Model@, no @Geometry@ @Execution@ @Model@, uses the
---     @PointMode@ @Execution@ @Mode@, and the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-shaderTessellationAndGeometryPointSize shaderTessellationAndGeometryPointSize>
---     feature is enabled, a @PointSize@ decorated variable /must/ be
---     written to if the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-maintenance5 maintenance5>
---     feature is not enabled
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-topology-08773# If the pipeline
---     is being created with a @Vertex@ @Execution@ @Model@ and no
---     @TessellationEvaluation@ or @Geometry@ @Execution@ @Model@, and the
---     @topology@ member of @pInputAssembly@ is
---     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_POINT_LIST',
---     and either
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY'
---     dynamic state is not enabled or
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-dynamicPrimitiveTopologyUnrestricted dynamicPrimitiveTopologyUnrestricted>
---     is 'Vulkan.Core10.FundamentalTypes.FALSE', a @PointSize@ decorated
---     variable /must/ be written to if the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-maintenance5 maintenance5>
---     feature is not enabled
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-maintenance5-08775# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-maintenance5 maintenance5>
---     feature is enabled and a @PointSize@ decorated variable is written
---     to, all execution paths /must/ write to a @PointSize@ decorated
---     variable
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-TessellationEvaluation-07724# If
---     the pipeline is being created with a @TessellationEvaluation@
---     @Execution@ @Model@, no @Geometry@ @Execution@ @Model@, uses the
---     @PointMode@ @Execution@ @Mode@, and the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-shaderTessellationAndGeometryPointSize shaderTessellationAndGeometryPointSize>
---     feature is not enabled, a @PointSize@ decorated variable /must/ not
---     be written to
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-shaderTessellationAndGeometryPointSize-08776#
---     If the pipeline is being created with a @Geometry@ @Execution@
---     @Model@, uses the @OutputPoints@ @Execution@ @Mode@, and the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-shaderTessellationAndGeometryPointSize shaderTessellationAndGeometryPointSize>
---     feature is enabled, a @PointSize@ decorated variable /must/ be
---     written to for every vertex emitted if the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-maintenance5 maintenance5>
---     feature is not enabled
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-Geometry-07726# If the pipeline
---     is being created with a @Geometry@ @Execution@ @Model@, uses the
---     @OutputPoints@ @Execution@ @Mode@, and the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-shaderTessellationAndGeometryPointSize shaderTessellationAndGeometryPointSize>
---     feature is not enabled, a @PointSize@ decorated variable /must/ not
---     be written to
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-00738# If the pipeline
---     requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-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://registry.khronos.org/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
---     requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-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://registry.khronos.org/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
---     requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
---     and
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>,
---     it includes both a fragment shader and a geometry shader, and the
---     fragment shader code reads from an input variable that is decorated
---     with @PrimitiveId@, then the geometry shader code /must/ write to a
---     matching output variable, decorated with @PrimitiveId@, in all
---     execution paths
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-PrimitiveId-06264# If the
---     pipeline requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-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
---     with @PrimitiveId@, in all execution paths
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06038# If @renderPass@
---     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and the pipeline is
---     being created with
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-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
---     requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces Shader Interfaces>
---     chapter
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-None-04889# If the pipeline
---     requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
---     and
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>,
---     the fragment shader and last
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader stage>
---     and any relevant state /must/ adhere to the pipeline linking rules
---     described in the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces Shader Interfaces>
---     chapter
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06041# If @renderPass@
---     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the pipeline is
---     being created with
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
---     then for each color attachment in the subpass, if the
---     <https://registry.khronos.org/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',
---     then the @blendEnable@ member of the corresponding element of the
---     @pAttachments@ member of @pColorBlendState@ /must/ be
---     'Vulkan.Core10.FundamentalTypes.FALSE'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-07609# If @renderPass@
---     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the pipeline is
---     being created with
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
---     the @pColorBlendState@ pointer is not @NULL@, the @attachmentCount@
---     member of @pColorBlendState@ is not ignored, 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 requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
---     and @pViewportState->pViewports@ is not dynamic, then
---     @pViewportState->pViewports@ /must/ be a valid pointer to an array
---     of @pViewportState->viewportCount@ valid 'Viewport' structures
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04131# If the
---     pipeline requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
---     and @pViewportState->pScissors@ is not dynamic, then
---     @pViewportState->pScissors@ /must/ be a valid pointer to an array of
---     @pViewportState->scissorCount@
---     'Vulkan.Core10.FundamentalTypes.Rect2D' structures
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00749# If the
---     pipeline requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
---     and the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-wideLines wideLines>
---     feature is not enabled, and no element of the @pDynamicStates@
---     member of @pDynamicState@ is
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_WIDTH', the
---     @lineWidth@ member of @pRasterizationState@ /must/ be @1.0@
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-rasterizerDiscardEnable-09024# If
---     the pipeline requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
---     and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE'
---     dynamic state is enabled or the @rasterizerDiscardEnable@ member of
---     @pRasterizationState@ is 'Vulkan.Core10.FundamentalTypes.FALSE', and
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-pViewportState-null related dynamic state is not set>,
---     @pViewportState@ /must/ be a valid pointer to a valid
---     'PipelineViewportStateCreateInfo' structure
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pViewportState-09025# If
---     @pViewportState@ is not @NULL@ it /must/ be a valid pointer to a
---     valid 'PipelineViewportStateCreateInfo' structure
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pMultisampleState-09026# If the
---     pipeline requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
---     and the @VK_EXT_extended_dynamic_state3@ extension is not enabled or
---     any of the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT',
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT', or
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT'
---     dynamic states is not set, or the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-alphaToOne alphaToOne>
---     feature is enabled and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT'
---     is not set, @pMultisampleState@ /must/ be a valid pointer to a valid
---     'PipelineMultisampleStateCreateInfo' structure
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pMultisampleState-09027# If
---     @pMultisampleState@ is not @NULL@ it /must/ be a valid pointer to a
---     valid 'PipelineMultisampleStateCreateInfo' structure
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-alphaToCoverageEnable-08891# If
---     the pipeline is being created with
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>,
---     the 'PipelineMultisampleStateCreateInfo'::@alphaToCoverageEnable@ is
---     not ignored and is 'Vulkan.Core10.FundamentalTypes.TRUE', then the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-fragmentoutput Fragment Output Interface>
---     /must/ contain a variable for the alpha @Component@ word in
---     @Location@ 0 at @Index@ 0
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-09028# If @renderPass@
---     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the pipeline is
---     being created with
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>,
---     and @subpass@ uses a depth\/stencil attachment, and
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-pDepthStencilState-null related dynamic state is not set>,
---     @pDepthStencilState@ /must/ be a valid pointer to a valid
---     'PipelineDepthStencilStateCreateInfo' structure
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pDepthStencilState-09029# If
---     @pDepthStencilState@ is not @NULL@ it /must/ be a valid pointer to a
---     valid 'PipelineDepthStencilStateCreateInfo' structure
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-09030# If @renderPass@
---     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the pipeline is
---     being created with
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
---     and @subpass@ uses color attachments, and
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-pColorBlendState-null related dynamic state is not set>,
---     @pColorBlendState@ /must/ be a valid pointer to a valid
---     'PipelineColorBlendStateCreateInfo' structure
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00754# If the
---     pipeline requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
---     the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-depthBiasClamp depthBiasClamp>
---     feature is not enabled, no element of the @pDynamicStates@ member of
---     @pDynamicState@ is
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS', and the
---     @depthBiasEnable@ member of @pRasterizationState@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', the @depthBiasClamp@ member
---     of @pRasterizationState@ /must/ be @0.0@
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-02510# If the
---     pipeline requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>,
---     the @VK_EXT_depth_range_unrestricted@ extension is not enabled and
---     no element of the @pDynamicStates@ member of @pDynamicState@ is
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS', and
---     the @depthBoundsTestEnable@ member of @pDepthStencilState@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', the @minDepthBounds@ and
---     @maxDepthBounds@ members of @pDepthStencilState@ /must/ be between
---     @0.0@ and @1.0@, inclusive
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-07610# If the
---     pipeline requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>
---     or
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
---     and @rasterizationSamples@ and @sampleLocationsInfo@ are not
---     dynamic, and
---     'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@
---     included in the @pNext@ chain of @pMultisampleState@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE',
---     @sampleLocationsInfo.sampleLocationGridSize.width@ /must/ evenly
---     divide
---     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@sampleLocationGridSize.width@
---     as returned by
---     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
---     with a @samples@ parameter equaling @rasterizationSamples@
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-07611# If the
---     pipeline requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>
---     or
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
---     and @rasterizationSamples@ and @sampleLocationsInfo@ are not
---     dynamic, and
---     'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@
---     the included in the @pNext@ chain of @pMultisampleState@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE' or
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     is used, @sampleLocationsInfo.sampleLocationGridSize.height@ /must/
---     evenly divide
---     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@sampleLocationGridSize.height@
---     as returned by
---     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
---     with a @samples@ parameter equaling @rasterizationSamples@
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-07612# If the
---     pipeline requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>
---     or
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
---     and @rasterizationSamples@ and @sampleLocationsInfo@ are not
---     dynamic, and
---     'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@
---     included in the @pNext@ chain of @pMultisampleState@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE' or
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     is used, @sampleLocationsInfo.sampleLocationsPerPixel@ /must/ equal
---     @rasterizationSamples@
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-sampleLocationsEnable-01524# If
---     the pipeline requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>,
---     and the @sampleLocationsEnable@ member of a
---     'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'
---     structure included in the @pNext@ chain of @pMultisampleState@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', the fragment shader code
---     /must/ not statically use the extended instruction
---     @InterpolateAtSample@
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-multisampledRenderToSingleSampled-06853#
---     If the pipeline requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
---     and none of the @VK_AMD_mixed_attachment_samples@ extension, the
---     @VK_NV_framebuffer_mixed_samples@ extension, or the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---     feature are enabled, @rasterizationSamples@ is not dynamic, and if
---     @subpass@ uses color and\/or depth\/stencil attachments, then the
---     @rasterizationSamples@ member of @pMultisampleState@ /must/ be the
---     same as the sample count for those subpass attachments
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-subpass-01505# If the pipeline
---     requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
---     and the @VK_AMD_mixed_attachment_samples@ extension is enabled,
---     @rasterizationSamples@ is not dynamic, and if @subpass@ uses color
---     and\/or depth\/stencil attachments, then the @rasterizationSamples@
---     member of @pMultisampleState@ /must/ equal the maximum of the sample
---     counts of those subpass attachments
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06854# If @renderPass@
---     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the
---     @VK_EXT_multisampled_render_to_single_sampled@ extension is enabled,
---     @rasterizationSamples@ is not dynamic, and @subpass@ has a
---     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'
---     structure included in the
---     'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.SubpassDescription2'::@pNext@
---     chain with @multisampledRenderToSingleSampledEnable@ equal to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the
---     @rasterizationSamples@ member of @pMultisampleState@ /must/ be equal
---     to
---     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'::@rasterizationSamples@
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-subpass-01411# If the pipeline
---     requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
---     the @VK_NV_framebuffer_mixed_samples@ extension is enabled,
---     @rasterizationSamples@ is not dynamic, and if @subpass@ has a
---     depth\/stencil attachment and depth test, stencil test, or depth
---     bounds test are enabled, then the @rasterizationSamples@ member of
---     @pMultisampleState@ /must/ be the same as the sample count of the
---     depth\/stencil attachment
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-subpass-01412# If the pipeline
---     requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
---     the @VK_NV_framebuffer_mixed_samples@ extension is enabled,
---     @rasterizationSamples@ is not dynamic, and if @subpass@ has any
---     color attachments, then the @rasterizationSamples@ member of
---     @pMultisampleState@ /must/ be greater than or equal to the sample
---     count for those subpass attachments
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-coverageReductionMode-02722# If
---     the pipeline requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
---     the @VK_NV_coverage_reduction_mode@ extension is enabled, and
---     @rasterizationSamples@ is not dynamic, the coverage reduction mode
---     specified by
---     'Vulkan.Extensions.VK_NV_coverage_reduction_mode.PipelineCoverageReductionStateCreateInfoNV'::@coverageReductionMode@,
---     the @rasterizationSamples@ member of @pMultisampleState@ and the
---     sample counts for the color and depth\/stencil attachments (if the
---     subpass has them) /must/ be a valid combination returned by
---     'Vulkan.Extensions.VK_NV_coverage_reduction_mode.getPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-subpass-00758# If the pipeline
---     requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
---     @rasterizationSamples@ is not dynamic, 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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-noattachments zero-attachment subpass>
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06046# If @renderPass@
---     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @subpass@ /must/ be
---     a valid subpass within @renderPass@
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06047# If @renderPass@
---     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the pipeline is
---     being created with
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
---     @subpass@ viewMask is not @0@, and @multiviewTessellationShader@ is
---     not enabled, then @pStages@ /must/ not include tessellation shaders
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06048# If @renderPass@
---     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the pipeline is
---     being created with
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
---     @subpass@ viewMask is not @0@, and @multiviewGeometryShader@ is not
---     enabled, then @pStages@ /must/ not include a geometry shader
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06050# If @renderPass@
---     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and the pipeline is
---     being created with
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
---     and @subpass@ viewMask is not @0@, then all of the shaders in the
---     pipeline /must/ not include variables decorated with the @Layer@
---     built-in decoration in their interfaces
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-07064# If @renderPass@
---     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the pipeline is
---     being created with
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
---     @subpass@ viewMask is not @0@, and @multiviewMeshShader@ is not
---     enabled, then @pStages@ /must/ not include a mesh shader
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-flags-00764# @flags@ /must/ not
---     contain the
---     'Vulkan.Core11.Promoted_From_VK_KHR_device_group.PIPELINE_CREATE_DISPATCH_BASE'
---     flag
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-01565# If the pipeline
---     requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>
---     and an input attachment was referenced by an @aspectMask@ at
---     @renderPass@ creation time, the fragment shader /must/ only read
---     from the aspects that were specified for that input attachment
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-layout-01688# The number of
---     resources in @layout@ accessible to each shader stage that is used
---     by the pipeline /must/ be less than or equal to
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxPerStageResources@
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-01715# If the
---     pipeline requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
---     and no element of the @pDynamicStates@ member of @pDynamicState@ is
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_NV',
---     and the @viewportWScalingEnable@ member of a
---     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV'
---     structure, included in the @pNext@ chain of @pViewportState@, is
---     'Vulkan.Core10.FundamentalTypes.TRUE', the @pViewportWScalings@
---     member of the
---     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV'
---     /must/ be a pointer to an array of
---     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV'::@viewportCount@
---     valid
---     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.ViewportWScalingNV'
---     structures
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04056# If the
---     pipeline requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
---     and no element of the @pDynamicStates@ member of @pDynamicState@ is
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV',
---     and if @pViewportState->pNext@ chain includes a
---     'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'
---     structure, and if its @exclusiveScissorCount@ member is not @0@,
---     then its @pExclusiveScissors@ member /must/ be a valid pointer to an
---     array of @exclusiveScissorCount@
---     'Vulkan.Core10.FundamentalTypes.Rect2D' structures
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-07854# If
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV'
---     is included in the @pDynamicStates@ array then the implementation
---     /must/ support at least @specVersion@ @2@ of the
---     @VK_NV_scissor_exclusive@ extension
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04057# If the
---     pipeline requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
---     and no element of the @pDynamicStates@ member of @pDynamicState@ is
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV',
---     and if @pViewportState->pNext@ chain includes a
---     'Vulkan.Extensions.VK_NV_shading_rate_image.PipelineViewportShadingRateImageStateCreateInfoNV'
---     structure, then its @pShadingRatePalettes@ member /must/ be a valid
---     pointer to an array of @viewportCount@ valid
---     'Vulkan.Extensions.VK_NV_shading_rate_image.ShadingRatePaletteNV'
---     structures
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04058# If the
---     pipeline requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
---     and no element of the @pDynamicStates@ member of @pDynamicState@ is
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_EXT',
---     and if @pNext@ chain includes a
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'
---     structure, and if its @discardRectangleCount@ member is not @0@,
---     then its @pDiscardRectangles@ member /must/ be a valid pointer to an
---     array of @discardRectangleCount@
---     'Vulkan.Core10.FundamentalTypes.Rect2D' structures
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-07855# If
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT'
---     is included in the @pDynamicStates@ array then the implementation
---     /must/ support at least @specVersion@ @2@ of the
---     @VK_EXT_discard_rectangles@ extension
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-07856# If
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT'
---     is included in the @pDynamicStates@ array then the implementation
---     /must/ support at least @specVersion@ @2@ of the
---     @VK_EXT_discard_rectangles@ extension
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-02097# If the pipeline
---     requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-vertex-input vertex input state>,
---     and @pVertexInputState@ is not dynamic, then @pVertexInputState@
---     /must/ be a valid pointer to a valid
---     'PipelineVertexInputStateCreateInfo' structure
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-Input-07904# If
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-vertexAttributeRobustness vertexAttributeRobustness>
---     is not enabled and the pipeline is being created with
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-vertex-input vertex input state>
---     and @pVertexInputState@ is not dynamic, then all variables with the
---     @Input@ storage class decorated with @Location@ in the @Vertex@
---     @Execution@ @Model@ @OpEntryPoint@ /must/ contain a location in
---     'VertexInputAttributeDescription'::@location@
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-Input-08733# If the pipeline
---     requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-vertex-input vertex input state>
---     and @pVertexInputState@ is not dynamic, then the numeric type
---     associated with all @Input@ variables of the corresponding
---     @Location@ in the @Vertex@ @Execution@ @Model@ @OpEntryPoint@ /must/
---     be the same as 'VertexInputAttributeDescription'::@format@
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pVertexInputState-08929# If the
---     pipeline is being created with
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-vertex-input vertex input state>
---     and @pVertexInputState@ is not dynamic, and
---     'VertexInputAttributeDescription'::@format@ has a 64-bit component,
---     then the scalar width associated with all @Input@ variables of the
---     corresponding @Location@ in the @Vertex@ @Execution@ @Model@
---     @OpEntryPoint@ /must/ be 64-bit
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pVertexInputState-08930# If the
---     pipeline is being created with
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-vertex-input vertex input state>
---     and @pVertexInputState@ is not dynamic, and the scalar width
---     associated with a @Location@ decorated @Input@ variable in the
---     @Vertex@ @Execution@ @Model@ @OpEntryPoint@ is 64-bit, then the
---     corresponding 'VertexInputAttributeDescription'::@format@ /must/
---     have a 64-bit component
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pVertexInputState-09198# If the
---     pipeline is being created with
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-vertex-input vertex input state>
---     and @pVertexInputState@ is not dynamic, and
---     'VertexInputAttributeDescription'::@format@ has a 64-bit component,
---     then all @Input@ variables at the corresponding @Location@ in the
---     @Vertex@ @Execution@ @Model@ @OpEntryPoint@ /must/ not use
---     components that are not present in the format
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-dynamicPrimitiveTopologyUnrestricted-09031#
---     If the pipeline requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-vertex-input vertex input state>,
---     and
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-pInputAssemblyState-null related dynamic state is not set>,
---     @pInputAssemblyState@ /must/ be a valid pointer to a valid
---     'PipelineInputAssemblyStateCreateInfo' structure
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pInputAssemblyState-09032# If
---     @pInputAssemblyState@ is not @NULL@ it /must/ be a valid pointer to
---     a valid 'PipelineInputAssemblyStateCreateInfo' structure
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-02317# If the pipeline
---     requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-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
---     requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
---     and any shader stage in @pStages@ specifies @Xfb@ execution mode it
---     /must/ be the last
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader stage>
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-rasterizationStream-02319# If the
---     pipeline requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
---     and a
---     'Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT'::@rasterizationStream@
---     value other than zero is specified, all variables in the output
---     interface of the entry point being compiled decorated with
---     @Position@, @PointSize@, @ClipDistance@, or @CullDistance@ /must/ be
---     decorated with identical @Stream@ values that match the
---     @rasterizationStream@
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-rasterizationStream-02320# If the
---     pipeline requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
---     and
---     'Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT'::@rasterizationStream@
---     is zero, or not specified, all variables in the output interface of
---     the entry point being compiled decorated with @Position@,
---     @PointSize@, @ClipDistance@, or @CullDistance@ /must/ be decorated
---     with a @Stream@ value of zero, or /must/ not specify the @Stream@
---     decoration
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-geometryStreams-02321# If the
---     pipeline requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
---     and the last
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader stage>
---     is a geometry shader, and that geometry shader uses the
---     @GeometryStreams@ capability, then
---     'Vulkan.Extensions.VK_EXT_transform_feedback.PhysicalDeviceTransformFeedbackFeaturesEXT'::@geometryStreams@
---     feature /must/ be enabled
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-None-02322# If the pipeline
---     requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-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 requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
---     and at least one of
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>
---     or
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>,
---     and @pMultisampleState@ is not @NULL@, the @lineRasterizationMode@
---     member of a
---     'Vulkan.Extensions.VK_KHR_line_rasterization.PipelineRasterizationLineStateCreateInfoKHR'
---     structure included in the @pNext@ chain of @pRasterizationState@ is
---     'Vulkan.Extensions.VK_KHR_line_rasterization.LINE_RASTERIZATION_MODE_BRESENHAM_KHR'
---     or
---     'Vulkan.Extensions.VK_KHR_line_rasterization.LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR',
---     then the @alphaToCoverageEnable@, @alphaToOneEnable@, and
---     @sampleShadingEnable@ members of @pMultisampleState@ /must/ all be
---     'Vulkan.Core10.FundamentalTypes.FALSE'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-stippledLineEnable-02767# If the
---     pipeline requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
---     the @stippledLineEnable@ member of
---     'Vulkan.Extensions.VK_KHR_line_rasterization.PipelineRasterizationLineStateCreateInfoKHR'
---     is 'Vulkan.Core10.FundamentalTypes.TRUE', and no element of the
---     @pDynamicStates@ member of @pDynamicState@ is
---     'Vulkan.Extensions.VK_EXT_line_rasterization.DYNAMIC_STATE_LINE_STIPPLE_EXT',
---     then the @lineStippleFactor@ member of
---     'Vulkan.Extensions.VK_KHR_line_rasterization.PipelineRasterizationLineStateCreateInfoKHR'
---     /must/ be in the range [1,256]
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-shaderMeshEnqueue-10187# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-shaderMeshEnqueue shaderMeshEnqueue>
---     feature is not enabled, shaders specified by @pStages@ /must/ not
---     declare the @ShaderEnqueueAMDX@ capability
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-flags-10188# If @flags@ does not
---     include
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR',
---     shaders specified by @pStages@ /must/ not declare the
---     @ShaderEnqueueAMDX@ capability
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-10189# If any shader
---     stages in @pStages@ declare the @ShaderEnqueueAMDX@ capability,
---     'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_EXECUTION_GRAPH_BIT_AMDX'
---     and
---     'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_LIBRARY_BIT_KHR'
---     /must/ be included in @flags@
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-flags-10190# If
---     'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_EXECUTION_GRAPH_BIT_AMDX'
---     is included in @flags@, and the pipeline requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
---     there /must/ not be a task or vertex shader specified in @pStages@
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-flags-10191# If
---     'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_EXECUTION_GRAPH_BIT_AMDX'
---     is included in @flags@, all elements of
---     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
---     /must/ have been created with
---     'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_EXECUTION_GRAPH_BIT_AMDX'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-flags-03372# @flags@ /must/ not
---     include
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-flags-03373# @flags@ /must/ not
---     include
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-flags-03374# @flags@ /must/ not
---     include
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-flags-03375# @flags@ /must/ not
---     include
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-flags-03376# @flags@ /must/ not
---     include
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-flags-03377# @flags@ /must/ not
---     include
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-flags-03577# @flags@ /must/ not
---     include
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-flags-04947# @flags@ /must/ not
---     include
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-03378# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedDynamicState extendedDynamicState>
---     feature is not enabled, and the value of
---     'Vulkan.Core10.DeviceInitialization.ApplicationInfo'::@apiVersion@
---     used to create the 'Vulkan.Core10.Handles.Instance' is less than
---     Version 1.3 there /must/ be no element of the @pDynamicStates@
---     member of @pDynamicState@ set to
---     '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 requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
---     and
---     '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 requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
---     and
---     '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 requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
---     and
---     '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 requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
---     and
---     '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-07065# If the
---     pipeline requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
---     and includes a mesh shader, there /must/ be no element of the
---     @pDynamicStates@ member of @pDynamicState@ set to
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY',
---     or
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04868# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedDynamicState2 extendedDynamicState2>
---     feature is not enabled, and the value of
---     'Vulkan.Core10.DeviceInitialization.ApplicationInfo'::@apiVersion@
---     used to create the 'Vulkan.Core10.Handles.Instance' is less than
---     Version 1.3 there /must/ be no element of the @pDynamicStates@
---     member of @pDynamicState@ set to
---     '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'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04869# If the
---     <https://registry.khronos.org/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://registry.khronos.org/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'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-07066# If the
---     pipeline requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
---     and includes a mesh shader, there /must/ be no element of the
---     @pDynamicStates@ member of @pDynamicState@ set to
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE',
---     or
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-flags-02877# If @flags@ includes
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV',
---     then the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-deviceGeneratedCommandsNV ::deviceGeneratedCommands>
---     feature /must/ be enabled
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-flags-02966# If the pipeline
---     requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-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-libraryCount-06648# If the
---     pipeline is not created with a
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-complete complete set of state>,
---     or
---     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@libraryCount@
---     is not @0@,
---     'Vulkan.Extensions.VK_NV_device_generated_commands.GraphicsPipelineShaderGroupsCreateInfoNV'::@groupCount@
---     and
---     'Vulkan.Extensions.VK_NV_device_generated_commands.GraphicsPipelineShaderGroupsCreateInfoNV'::@pipelineCount@
---     /must/ be @0@
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-libraryCount-06649# If the
---     pipeline is created with a
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-complete complete set of state>,
---     and
---     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@libraryCount@
---     is @0@, and the @pNext@ chain includes an instance of
---     'Vulkan.Extensions.VK_NV_device_generated_commands.GraphicsPipelineShaderGroupsCreateInfoNV',
---     'Vulkan.Extensions.VK_NV_device_generated_commands.GraphicsPipelineShaderGroupsCreateInfoNV'::@groupCount@
---     /must/ be greater than @0@
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-flags-11000# If @flags@ includes
---     'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXT',
---     then the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-deviceGeneratedCommands ::deviceGeneratedCommands>
---     feature /must/ be enabled
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-flags-11001# If the pipeline
---     requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
---     and @flags@ includes
---     'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXT',
---     then all stages /must/ not specify @Xfb@ execution mode
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pipelineCreationCacheControl-02878#
---     If the
---     <https://registry.khronos.org/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'
---     or
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pipelineProtectedAccess-07368# If
---     the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-pipelineProtectedAccess pipelineProtectedAccess>
---     feature is not enabled, @flags@ /must/ not include
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT'
---     or
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-flags-07369# @flags@ /must/ not
---     include both
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT'
---     and
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04494# If the
---     pipeline requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
---     or
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>
---     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
---     is not included in @pDynamicState->pDynamicStates@,
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::@fragmentSize.width@
---     /must/ be greater than or equal to @1@
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04495# If the
---     pipeline requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
---     or
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>
---     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
---     is not included in @pDynamicState->pDynamicStates@,
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::@fragmentSize.height@
---     /must/ be greater than or equal to @1@
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04496# If the
---     pipeline requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
---     or
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>
---     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
---     is not included in @pDynamicState->pDynamicStates@,
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::@fragmentSize.width@
---     /must/ be a power-of-two value
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04497# If the
---     pipeline requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
---     or
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>
---     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
---     is not included in @pDynamicState->pDynamicStates@,
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::@fragmentSize.height@
---     /must/ be a power-of-two value
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04498# If the
---     pipeline requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
---     or
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>
---     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
---     is not included in @pDynamicState->pDynamicStates@,
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::@fragmentSize.width@
---     /must/ be less than or equal to @4@
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04499# If the
---     pipeline requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
---     or
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>
---     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
---     is not included in @pDynamicState->pDynamicStates@,
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::@fragmentSize.height@
---     /must/ be less than or equal to @4@
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04500# If the
---     pipeline requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
---     or
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-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://registry.khronos.org/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
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::@fragmentSize.height@
---     /must/ both be equal to @1@
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-06567# If the
---     pipeline requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
---     or
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>
---     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
---     is not included in @pDynamicState->pDynamicStates@,
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::@combinerOps@[0]
---     /must/ be a valid
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FragmentShadingRateCombinerOpKHR'
---     value
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-06568# If the
---     pipeline requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
---     or
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>
---     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
---     is not included in @pDynamicState->pDynamicStates@,
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::@combinerOps@[1]
---     /must/ be a valid
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FragmentShadingRateCombinerOpKHR'
---     value
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04501# If the
---     pipeline requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
---     or
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-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://registry.khronos.org/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
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04502# If the
---     pipeline requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
---     or
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-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://registry.khronos.org/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
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-primitiveFragmentShadingRateWithMultipleViewports-04503#
---     If the pipeline requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
---     and the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
---     limit is not supported,
---     '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
---     @PrimitiveShadingRateKHR@ built-in
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-primitiveFragmentShadingRateWithMultipleViewports-04504#
---     If the pipeline requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
---     and the
---     <https://registry.khronos.org/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 requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
---     and the
---     <https://registry.khronos.org/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 requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
---     or
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>,
---     the
---     <https://registry.khronos.org/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
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::@combinerOps@
---     /must/ be
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR'
---     or
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-None-06569# If the pipeline
---     requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>
---     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
---     is not included in @pDynamicState->pDynamicStates@,
---     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PipelineFragmentShadingRateEnumStateCreateInfoNV'::@shadingRateType@
---     /must/ be a valid
---     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.FragmentShadingRateTypeNV'
---     value
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-06570# If the
---     pipeline requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>
---     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
---     is not included in @pDynamicState->pDynamicStates@,
---     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PipelineFragmentShadingRateEnumStateCreateInfoNV'::@shadingRate@
---     /must/ be a valid
---     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.FragmentShadingRateNV'
---     value
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-06571# If the
---     pipeline requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>
---     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
---     is not included in @pDynamicState->pDynamicStates@,
---     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PipelineFragmentShadingRateEnumStateCreateInfoNV'::@combinerOps@[0]
---     /must/ be a valid
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FragmentShadingRateCombinerOpKHR'
---     value
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-06572# If the
---     pipeline requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>
---     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
---     is not included in @pDynamicState->pDynamicStates@,
---     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PipelineFragmentShadingRateEnumStateCreateInfoNV'::@combinerOps@[1]
---     /must/ be a valid
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FragmentShadingRateCombinerOpKHR'
---     value
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04569# If the
---     pipeline requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-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://registry.khronos.org/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
---     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.FRAGMENT_SHADING_RATE_TYPE_FRAGMENT_SIZE_NV'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04570# If the
---     pipeline requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-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://registry.khronos.org/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
---     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.FRAGMENT_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04571# If the
---     pipeline requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-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://registry.khronos.org/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
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04572# If the
---     pipeline requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-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://registry.khronos.org/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
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-fragmentShadingRateNonTrivialCombinerOps-04573#
---     If the pipeline requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>,
---     and the
---     <https://registry.khronos.org/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
---     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PipelineFragmentShadingRateEnumStateCreateInfoNV'::@combinerOps@
---     /must/ be
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR'
---     or
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-None-04574# If the pipeline
---     requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>,
---     and the
---     <https://registry.khronos.org/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
---     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.FRAGMENT_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV',
---     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.FRAGMENT_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV',
---     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.FRAGMENT_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV',
---     or
---     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.FRAGMENT_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-None-04575# If the pipeline
---     requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>,
---     and the
---     <https://registry.khronos.org/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
---     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.FRAGMENT_SHADING_RATE_NO_INVOCATIONS_NV'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-03578# All
---     elements of the @pDynamicStates@ member of @pDynamicState@ /must/
---     not be
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04807# If the
---     pipeline requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
---     and the
---     <https://registry.khronos.org/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-pDynamicStates-07067# If the
---     pipeline requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
---     and includes a mesh shader, there /must/ be no element of the
---     @pDynamicStates@ member of @pDynamicState@ set to
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04800# If the
---     <https://registry.khronos.org/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'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-rasterizationSamples-04899# If
---     the pipeline requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>,
---     and the @VK_QCOM_render_pass_shader_resolve@ extension is enabled,
---     @rasterizationSamples@ is not dynamic, and if subpass has any input
---     attachments, and if the subpass description contains
---     'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM',
---     then the sample count of the input attachments /must/ equal
---     @rasterizationSamples@
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-sampleShadingEnable-04900# If the
---     pipeline requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>,
---     and the @VK_QCOM_render_pass_shader_resolve@ extension is enabled,
---     and if the subpass description contains
---     'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM',
---     then @sampleShadingEnable@ /must/ be false
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-flags-04901# If @flags@ includes
---     'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM',
---     then the subpass /must/ be the last subpass in a subpass dependency
---     chain
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-flags-04902# If @flags@ includes
---     'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM',
---     and if @pResolveAttachments@ is not @NULL@, then each resolve
---     attachment /must/ be 'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-dynamicRendering-06576# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-dynamicRendering dynamicRendering>
---     feature is not enabled and the pipeline requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>,
---     or
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
---     @renderPass@ /must/ not be 'Vulkan.Core10.APIConstants.NULL_HANDLE'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-multiview-06577# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-multiview multiview>
---     feature is not enabled, the pipeline requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>,
---     or
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
---     and @renderPass@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE',
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@viewMask@
---     /must/ be @0@
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06578# If the pipeline
---     requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>,
---     or
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
---     and @renderPass@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', the
---     index of the most significant bit in
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@viewMask@
---     /must/ be less than
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxMultiviewViewCount maxMultiviewViewCount>
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06579# If the pipeline
---     requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
---     and @renderPass@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@colorAttachmentCount@
---     is not 0,
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
---     /must/ be a valid pointer to an array of @colorAttachmentCount@
---     valid 'Vulkan.Core10.Enums.Format.Format' values
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06580# If the pipeline
---     requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
---     and @renderPass@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', each
---     element of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
---     /must/ be a valid 'Vulkan.Core10.Enums.Format.Format' value
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06582# If the pipeline
---     requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
---     @renderPass@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', and any
---     element of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
---     is not 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', that format
---     /must/ be a format with
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#potential-format-features potential format features>
---     that include
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BIT'
---     or
---     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06583# If the pipeline
---     requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
---     and @renderPass@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE',
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
---     /must/ be a valid 'Vulkan.Core10.Enums.Format.Format' value
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06584# If the pipeline
---     requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
---     and @renderPass@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE',
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
---     /must/ be a valid 'Vulkan.Core10.Enums.Format.Format' value
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06585# If the pipeline
---     requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
---     @renderPass@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
---     is not 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', it /must/ be a
---     format with
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#potential-format-features potential format features>
---     that include
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06586# If the pipeline
---     requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
---     @renderPass@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
---     is not 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', it /must/ be a
---     format with
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#potential-format-features potential format features>
---     that include
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06587# If the pipeline
---     requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
---     @renderPass@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
---     is not 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', it /must/ be a
---     format that includes a depth component
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06588# If the pipeline
---     requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
---     @renderPass@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
---     is not 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', it /must/ be a
---     format that includes a stencil component
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06589# If the pipeline
---     requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
---     @renderPass@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE',
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
---     is not 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
---     is not 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED',
---     @depthAttachmentFormat@ /must/ equal @stencilAttachmentFormat@
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-09033# If @renderPass@
---     is 'Vulkan.Core10.APIConstants.NULL_HANDLE', the pipeline is being
---     created with
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>
---     and
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
---     and either of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
---     or
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
---     are not 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', and the
---     @VK_EXT_extended_dynamic_state3@ extension is not enabled or any of
---     the
---     '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', or
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS'
---     dynamic states are not set, @pDepthStencilState@ /must/ be a valid
---     pointer to a valid 'PipelineDepthStencilStateCreateInfo' structure
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pDepthStencilState-09034# If
---     @pDepthStencilState@ is not @NULL@ it /must/ be a valid pointer to a
---     valid 'PipelineDepthStencilStateCreateInfo' structure
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-09035# If @renderPass@
---     is 'Vulkan.Core10.APIConstants.NULL_HANDLE' and the pipeline is
---     being created with
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>
---     but not
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
---     and the @VK_EXT_extended_dynamic_state3@ extension is not enabled,
---     or any of the
---     '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', or
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS'
---     dynamic states are not set, @pDepthStencilState@ /must/ be a valid
---     pointer to a valid 'PipelineDepthStencilStateCreateInfo' structure
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pDepthStencilState-09036# If
---     @pDepthStencilState@ is not @NULL@ it /must/ be a valid pointer to a
---     valid 'PipelineDepthStencilStateCreateInfo' structure
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-09037# If @renderPass@
---     is 'Vulkan.Core10.APIConstants.NULL_HANDLE', the pipeline is being
---     created with
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
---     and any element of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
---     is not 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', and the
---     @VK_EXT_extended_dynamic_state3@ extension is not enabled, or any of
---     the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT',
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_EXT',
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT',
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT',
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT',
---     or 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_BLEND_CONSTANTS'
---     dynamic states are not set, @pColorBlendState@ /must/ be a valid
---     pointer to a valid 'PipelineColorBlendStateCreateInfo' structure
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pColorBlendState-09038# If
---     @pColorBlendState@ is not @NULL@ it /must/ be a valid pointer to a
---     valid 'PipelineColorBlendStateCreateInfo' structure
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06055# If @renderPass@
---     is 'Vulkan.Core10.APIConstants.NULL_HANDLE', @pColorBlendState@ is
---     not dynamic, and the pipeline is being created with
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
---     @pColorBlendState->attachmentCount@ /must/ be equal to
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@colorAttachmentCount@
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06057# If @renderPass@
---     is 'Vulkan.Core10.APIConstants.NULL_HANDLE', the pipeline is being
---     created with
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@viewMask@
---     is not @0@, and the
---     <https://registry.khronos.org/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@viewMask@
---     is not @0@, and the
---     <https://registry.khronos.org/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
---     and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@viewMask@
---     is not @0@, all of the shaders in the pipeline /must/ not include
---     variables decorated with the @Layer@ built-in decoration in their
---     interfaces
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-07720# If @renderPass@
---     is 'Vulkan.Core10.APIConstants.NULL_HANDLE', the pipeline is being
---     created with
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
---     and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@viewMask@
---     is not @0@, and @multiviewMeshShader@ is not enabled, then @pStages@
---     /must/ not include a mesh shader
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06061# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-dynamicRenderingLocalRead dynamicRenderingLocalRead>
---     feature is not enabled, the pipeline requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-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-08710# If the pipeline
---     requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>
---     and @renderPass@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
---     fragment shaders in @pStages@ /must/ not include any of the
---     @TileImageColorReadAccessEXT@, @TileImageDepthReadAccessEXT@, or
---     @TileImageStencilReadAccessEXT@ capabilities
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06062# If the pipeline
---     requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-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.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo',
---     if its
---     <https://registry.khronos.org/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
---     @pAttachments@ member of @pColorBlendState@ /must/ be
---     'Vulkan.Core10.FundamentalTypes.FALSE'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06063# If the pipeline
---     requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>
---     and @renderPass@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', if the
---     @pNext@ chain includes
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV',
---     the @colorAttachmentCount@ member of that structure /must/ be equal
---     to the value of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@colorAttachmentCount@
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06591# If @pStages@
---     includes a fragment shader stage, and the fragment shader declares
---     the @EarlyFragmentTests@ execution mode, the @flags@ member of
---     'PipelineDepthStencilStateCreateInfo' /must/ not include
---     'Vulkan.Core10.Enums.PipelineDepthStencilStateCreateFlagBits.PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT'
---     or
---     'Vulkan.Core10.Enums.PipelineDepthStencilStateCreateFlagBits.PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06482# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-dynamicRenderingLocalRead dynamicRenderingLocalRead>
---     feature is not enabled, the pipeline requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-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_EXT',
---     @renderPass@ /must/ not be 'Vulkan.Core10.APIConstants.NULL_HANDLE'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-None-09526# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-dynamicRenderingLocalRead dynamicRenderingLocalRead>
---     feature is not enabled, the pipeline requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-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_EXT'
---     or
---     'Vulkan.Core10.Enums.PipelineDepthStencilStateCreateFlagBits.PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT',
---     @renderPass@ /must/ not be 'Vulkan.Core10.APIConstants.NULL_HANDLE'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pColorAttachmentSamples-06592# If
---     the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
---     elements of the @pColorAttachmentSamples@ member of
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     /must/ be valid
---     'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' values
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-depthStencilAttachmentSamples-06593#
---     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>
---     and the @depthStencilAttachmentSamples@ member of
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     is not 0, it /must/ be a valid
---     'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' value
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-09527# If the pipeline
---     requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
---     @renderPass@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and
---     the @flags@ member of 'PipelineColorBlendStateCreateInfo' includes
---     'Vulkan.Core10.Enums.PipelineColorBlendStateCreateFlagBits.PIPELINE_COLOR_BLEND_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_BIT_EXT'
---     @subpass@ /must/ have been created with
---     'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS_BIT_EXT'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-09528# If the pipeline
---     requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>,
---     @renderPass@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and
---     the @flags@ member of 'PipelineDepthStencilStateCreateInfo' includes
---     'Vulkan.Core10.Enums.PipelineDepthStencilStateCreateFlagBits.PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT',
---     @subpass@ /must/ have been created with
---     'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-09529# If the pipeline
---     requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>,
---     @renderPass@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and
---     the @flags@ member of 'PipelineDepthStencilStateCreateInfo' includes
---     'Vulkan.Core10.Enums.PipelineDepthStencilStateCreateFlagBits.PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT',
---     @subpass@ /must/ have been created with
---     'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pipelineStageCreationFeedbackCount-06594#
---     If
---     'Vulkan.Core13.Promoted_From_VK_EXT_pipeline_creation_feedback.PipelineCreationFeedbackCreateInfo'::@pipelineStageCreationFeedbackCount@
---     is not @0@, it /must/ be equal to @stageCount@
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06595# If @renderPass@
---     is 'Vulkan.Core10.APIConstants.NULL_HANDLE', the pipeline is being
---     created with
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
---     or
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>,
---     and
---     'Vulkan.Extensions.VK_NVX_multiview_per_view_attributes.MultiviewPerViewAttributesInfoNVX'::@perViewAttributesPositionXOnly@
---     is 'Vulkan.Core10.FundamentalTypes.TRUE' then
---     'Vulkan.Extensions.VK_NVX_multiview_per_view_attributes.MultiviewPerViewAttributesInfoNVX'::@perViewAttributes@
---     /must/ also be 'Vulkan.Core10.FundamentalTypes.TRUE'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06596# If
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
---     includes only one of
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'
---     or
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
---     and an element of
---     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
---     includes the other flag, the value of
---     'Vulkan.Extensions.VK_NVX_multiview_per_view_attributes.MultiviewPerViewAttributesInfoNVX'::@perViewAttributes@
---     specified in both this pipeline and the library /must/ be equal
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pLibraries-06597# If one element
---     of
---     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
---     includes
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'
---     and another element includes
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
---     the value of
---     'Vulkan.Extensions.VK_NVX_multiview_per_view_attributes.MultiviewPerViewAttributesInfoNVX'::@perViewAttributes@
---     specified in both libraries /must/ be equal
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06598# If
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
---     includes only one of
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'
---     or
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
---     and an element of
---     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
---     includes the other flag, the value of
---     'Vulkan.Extensions.VK_NVX_multiview_per_view_attributes.MultiviewPerViewAttributesInfoNVX'::@perViewAttributesPositionXOnly@
---     specified in both this pipeline and the library /must/ be equal
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pLibraries-06599# If one element
---     of
---     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
---     includes
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'
---     and another element includes
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
---     the value of
---     'Vulkan.Extensions.VK_NVX_multiview_per_view_attributes.MultiviewPerViewAttributesInfoNVX'::@perViewAttributesPositionXOnly@
---     specified in both libraries /must/ be equal
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-06600# If the pipeline
---     requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
---     or
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>,
---     @pStages@ /must/ be a valid pointer to an array of @stageCount@
---     valid 'PipelineShaderStageCreateInfo' structures
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-stageCount-09587# If the pipeline
---     does not require
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
---     or
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>,
---     @stageCount@ /must/ be zero
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pRasterizationState-06601# If the
---     pipeline requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
---     and
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-pRasterizationState-null related dynamic state is not set>,
---     @pRasterizationState@ /must/ be a valid pointer to a valid
---     'PipelineRasterizationStateCreateInfo' structure
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pRasterizationState-09039# If
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
---     includes
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT',
---     and
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-pMultisampleState-null related dynamic state is not set>,
---     then @pMultisampleState@ /must/ be a valid pointer to a valid
---     'PipelineMultisampleStateCreateInfo' structure
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pRasterizationState-09040# If
---     @pRasterizationState@ is not @NULL@ it /must/ be a valid pointer to
---     a valid 'PipelineRasterizationStateCreateInfo' structure
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-layout-06602# If the pipeline
---     requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>
---     or
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
---     @layout@ /must/ be a valid 'Vulkan.Core10.Handles.PipelineLayout'
---     handle
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06603# If the pipeline
---     requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>,
---     or
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output state>,
---     and @renderPass@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
---     @renderPass@ /must/ be a valid 'Vulkan.Core10.Handles.RenderPass'
---     handle
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-stageCount-09530# If the pipeline
---     requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
---     @stageCount@ /must/ be greater than @0@
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-graphicsPipelineLibrary-06606# If
---     the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-graphicsPipelineLibrary graphicsPipelineLibrary>
---     feature is not enabled, and if the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-shaderMeshEnqueue shaderMeshEnqueue>
---     feature is not enabled, @flags@ /must/ not include
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06608# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-shaderMeshEnqueue shaderMeshEnqueue>
---     feature is not enabled, and the pipeline is being created with
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-complete all possible state subsets>,
---     @flags@ /must/ not include
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06609# If @flags@ includes
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT',
---     pipeline libraries included via
---     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'
---     /must/ have been created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-flags-09245# If @flags@ includes
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT',
---     @flags@ /must/ also include
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06610# If @flags@ includes
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT',
---     pipeline libraries included via
---     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'
---     /must/ have been created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pLibraries-06611# Any pipeline
---     libraries included via
---     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
---     /must/ not include any
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets state subset>
---     already defined by this structure or defined by any other pipeline
---     library in
---     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06612# If
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
---     includes only one of
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'
---     or
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
---     and an element of
---     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
---     includes the other flag, and @layout@ was not created with
---     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT',
---     then the @layout@ used by this pipeline and the library /must/ be
---     /identically defined/
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pLibraries-06613# If one element
---     of
---     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
---     includes
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'
---     and another element includes
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
---     and the @layout@ specified by either library was not created with
---     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT',
---     then the @layout@ used by each library /must/ be /identically
---     defined/
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06614# If
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
---     includes only one of
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'
---     or
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
---     an element of
---     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
---     includes the other subset, and @layout@ was created with
---     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT',
---     then the @layout@ used by the library /must/ also have been created
---     with
---     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pLibraries-06615# If one element
---     of
---     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
---     includes
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'
---     and another element includes
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
---     and the @layout@ specified by either library was created with
---     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT',
---     then the @layout@ used by both libraries /must/ have been created
---     with
---     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06616# If
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
---     includes only one of
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'
---     or
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
---     an element of
---     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
---     includes the other subset, and @layout@ was created with
---     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT',
---     elements of the @pSetLayouts@ array which @layout@ was created with
---     that are not 'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ be
---     /identically defined/ to the element at the same index of
---     @pSetLayouts@ used to create the library’s @layout@
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pLibraries-06617# If one element
---     of
---     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
---     includes
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'
---     and another element includes
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
---     and the @layout@ specified by either library was created with
---     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT',
---     elements of the @pSetLayouts@ array which either @layout@ was
---     created with that are not 'Vulkan.Core10.APIConstants.NULL_HANDLE'
---     /must/ be /identically defined/ to the element at the same index of
---     @pSetLayouts@ used to create the other library’s @layout@
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06618# If
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
---     includes only one of
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'
---     or
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
---     and an element of
---     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
---     includes the other flag, any descriptor set layout /N/ specified by
---     @layout@ in both this pipeline and the library which include
---     bindings accessed by shader stages in each /must/ be /identically
---     defined/
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pLibraries-06619# If one element
---     of
---     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
---     includes
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'
---     and another element includes
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
---     any descriptor set layout /N/ specified by @layout@ in both
---     libraries which include bindings accessed by shader stages in each
---     /must/ be /identically defined/
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06620# If
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
---     includes only one of
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'
---     or
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
---     and an element of
---     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
---     includes the other flag, push constants specified in @layout@ in
---     both this pipeline and the library which are available to shader
---     stages in each /must/ be /identically defined/
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pLibraries-06621# If one element
---     of
---     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
---     includes
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'
---     and another element includes
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
---     push constants specified in @layout@ in both this pipeline and the
---     library which are available to shader stages in each /must/ be
---     /identically defined/
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06679# If
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
---     includes only one of
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'
---     or
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
---     an element of
---     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
---     includes the other subset, any element of the @pSetLayouts@ array
---     when @layout@ was created and the corresponding element of the
---     @pSetLayouts@ array used to create the library’s @layout@ /must/ not
---     both be 'Vulkan.Core10.APIConstants.NULL_HANDLE'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pLibraries-06681# If one element
---     of
---     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
---     includes
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'
---     and another element includes
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
---     and any element of the @pSetLayouts@ array used to create each
---     library’s @layout@ was 'Vulkan.Core10.APIConstants.NULL_HANDLE',
---     then the corresponding element of the @pSetLayouts@ array used to
---     create the other library’s @layout@ /must/ not be
---     'Vulkan.Core10.APIConstants.NULL_HANDLE'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06756# If
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
---     includes only one of
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'
---     or
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
---     an element of
---     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
---     includes the other subset, and any element of the @pSetLayouts@
---     array which @layout@ was created with was
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', then the corresponding
---     element of the @pSetLayouts@ array used to create the library’s
---     @layout@ /must/ not have shader bindings for shaders in the other
---     subset
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06757# If
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
---     includes only one of
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'
---     or
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
---     an element of
---     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
---     includes the other subset, and any element of the @pSetLayouts@
---     array used to create the library’s @layout@ was
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', then the corresponding
---     element of the @pSetLayouts@ array used to create this pipeline’s
---     @layout@ /must/ not have shader bindings for shaders in the other
---     subset
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pLibraries-06758# If one element
---     of
---     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
---     includes
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'
---     and another element includes
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
---     and any element of the @pSetLayouts@ array used to create each
---     library’s @layout@ was 'Vulkan.Core10.APIConstants.NULL_HANDLE',
---     then the corresponding element of the @pSetLayouts@ array used to
---     create the other library’s @layout@ /must/ not have shader bindings
---     for shaders in the other subset
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06682# If
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
---     includes both
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'
---     and
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
---     @layout@ /must/ have been created with no elements of the
---     @pSetLayouts@ array set to 'Vulkan.Core10.APIConstants.NULL_HANDLE'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06683# If
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
---     includes
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'
---     and @pRasterizationState->rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', @layout@ /must/ have been
---     created with no elements of the @pSetLayouts@ array set to
---     'Vulkan.Core10.APIConstants.NULL_HANDLE'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06684# If
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
---     includes at least one of and no more than two of
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT',
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
---     or
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT',
---     and an element of
---     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
---     includes one of the other flags, the value of @subpass@ /must/ be
---     equal to that used to create the library
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pLibraries-06623# If one element
---     of
---     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
---     includes at least one of and no more than two of
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT',
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
---     or
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT',
---     and another element of
---     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
---     includes one of the other flags, the value of @subpass@ used to
---     create each library /must/ be identical
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-renderpass-06624# If @renderpass@
---     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
---     includes at least one of and no more than two of
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT',
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
---     or
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT',
---     and an element of
---     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
---     includes one of the other flags, @renderPass@ /must/ be compatible
---     with that used to create the library
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-renderpass-06625# If @renderpass@
---     is 'Vulkan.Core10.APIConstants.NULL_HANDLE',
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
---     includes at least one of and no more than two of
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT',
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
---     or
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT',
---     and an element of
---     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
---     includes one of the other flags, the value of @renderPass@ used to
---     create that library /must/ also be
---     'Vulkan.Core10.APIConstants.NULL_HANDLE'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06626# If
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
---     includes at least one of and no more than two of
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT',
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
---     or
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT',
---     an element of
---     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
---     includes one of the other flags, and @renderPass@ is
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@viewMask@
---     used by this pipeline and that specified by the library /must/ be
---     identical
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pLibraries-06627# If one element
---     of
---     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
---     includes at least one of and no more than two of
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT',
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
---     or
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT',
---     another element of
---     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
---     includes one of the other flags, and @renderPass@ was
---     'Vulkan.Core10.APIConstants.NULL_HANDLE' for both libraries, the
---     value of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@viewMask@
---     set by each library /must/ be identical
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pLibraries-06628# If one element
---     of
---     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
---     includes at least one of and no more than two of
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT',
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
---     or
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT',
---     and another element of
---     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
---     includes one of the other flags, the @renderPass@ objects used to
---     create each library /must/ be compatible or all equal to
---     'Vulkan.Core10.APIConstants.NULL_HANDLE'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-renderpass-06631# If @renderPass@
---     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the pipeline
---     requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>,
---     and the @VK_EXT_extended_dynamic_state3@ extension is not enabled or
---     any of the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT',
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT', or
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT'
---     dynamic states is not set, or the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-alphaToOne alphaToOne>
---     feature is enabled and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT'
---     is not set, then @pMultisampleState@ /must/ be a valid pointer to a
---     valid 'PipelineMultisampleStateCreateInfo' structure
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-Input-06632# If the pipeline
---     requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>
---     with a fragment shader that either enables
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-sampleshading sample shading>
---     or decorates any variable in the @Input@ storage class with
---     @Sample@, and the @VK_EXT_extended_dynamic_state3@ extension is not
---     enabled or any of the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT',
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT', or
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT'
---     dynamic states is not set, or the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-alphaToOne alphaToOne>
---     feature is enabled and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT'
---     is not set, then @pMultisampleState@ /must/ be a valid pointer to a
---     valid 'PipelineMultisampleStateCreateInfo' structure
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06633# If
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
---     includes
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT'
---     with a @pMultisampleState@ that was not @NULL@, and an element of
---     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
---     was created with
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT',
---     @pMultisampleState@ /must/ be /identically defined/ to that used to
---     create the library
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pLibraries-06634# If an element
---     of
---     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
---     was created with
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT'
---     with a @pMultisampleState@ that was not @NULL@, and if
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
---     includes
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT',
---     @pMultisampleState@ /must/ be /identically defined/ to that used to
---     create the library
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pLibraries-06635# If one element
---     of
---     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
---     was created with
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT'
---     with a @pMultisampleState@ that was not @NULL@, and if a different
---     element of
---     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
---     was created with
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT',
---     the @pMultisampleState@ used to create each library /must/ be
---     /identically defined/
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pLibraries-06636# If one element
---     of
---     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
---     was created with
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT'
---     and a value of @pMultisampleState->sampleShadingEnable@ equal
---     'Vulkan.Core10.FundamentalTypes.TRUE', and if a different element of
---     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
---     was created with
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
---     the @pMultisampleState@ used to create each library /must/ be
---     /identically defined/
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06637# If
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
---     includes
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT',
---     @pMultisampleState->sampleShadingEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', and an element of
---     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
---     was created with
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
---     @pMultisampleState@ /must/ be /identically defined/ to that used to
---     create the library
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pLibraries-09567# If one element
---     of
---     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
---     was created with
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT'
---     and a value of @pMultisampleState->sampleShadingEnable@ equal
---     'Vulkan.Core10.FundamentalTypes.TRUE', and if
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
---     includes
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
---     @pMultisampleState@ /must/ be /identically defined/ to that used to
---     create the library
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06638# If
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
---     includes only one of
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'
---     or
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
---     and an element of
---     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
---     includes the other flag, values specified in
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'
---     for both this pipeline and that library /must/ be identical
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pLibraries-06639# If one element
---     of
---     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
---     includes
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'
---     and another element includes
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
---     values specified in
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'
---     for both this pipeline and that library /must/ be identical
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06640# If
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
---     includes
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'
---     or
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
---     @pStages@ /must/ be a valid pointer to an array of @stageCount@
---     valid 'PipelineShaderStageCreateInfo' structures
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06642# If
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
---     includes
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'
---     or
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
---     @layout@ /must/ be a valid 'Vulkan.Core10.Handles.PipelineLayout'
---     handle
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06643# If
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
---     includes
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT',
---     or
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT',
---     and @renderPass@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
---     @renderPass@ /must/ be a valid 'Vulkan.Core10.Handles.RenderPass'
---     handle
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06644# If
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
---     includes
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'
---     or
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
---     @stageCount@ /must/ be greater than @0@
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06645# If
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
---     is non-zero, if @flags@ includes
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR',
---     any libraries /must/ have also been created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pLibraries-06646# If
---     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
---     includes more than one library, and any library was created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR',
---     all libraries /must/ have also been created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pLibraries-06647# If
---     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@
---     includes at least one library,
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
---     is non-zero, and any library was created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR',
---     @flags@ /must/ include
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-None-07826# If the pipeline
---     includes a
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-complete complete set of state>,
---     and there are no libraries included in
---     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'::@pLibraries@,
---     then 'Vulkan.Core10.Handles.PipelineLayout' /must/ be a valid
---     pipeline layout
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-layout-07827# If the pipeline
---     includes a
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-complete complete set of state>
---     specified entirely by libraries, and each library was created with a
---     'Vulkan.Core10.Handles.PipelineLayout' created without
---     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT',
---     then @layout@ /must/ be
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-compatibility compatible>
---     with the layouts in those libraries
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06729# If @flags@ includes
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT',
---     the pipeline includes a
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-complete complete set of state>
---     specified entirely by libraries, and each library was created with a
---     'Vulkan.Core10.Handles.PipelineLayout' created with
---     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT',
---     then @layout@ /must/ be
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-compatibility compatible>
---     with the union of the libraries\' pipeline layouts other than the
---     inclusion\/exclusion of
---     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06730# If @flags@ does not
---     include
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT',
---     the pipeline includes a
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-complete complete set of state>
---     specified entirely by libraries, and each library was created with a
---     'Vulkan.Core10.Handles.PipelineLayout' created with
---     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT',
---     then @layout@ /must/ be
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-compatibility compatible>
---     with the union of the libraries\' pipeline layouts
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-conservativePointAndLineRasterization-08892#
---     If
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-conservativePointAndLineRasterization conservativePointAndLineRasterization>
---     is not supported; the pipeline is being created with
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-vertex-input vertex input state>
---     and
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>;
---     the pipeline does not include a geometry shader; and the value of
---     'PipelineInputAssemblyStateCreateInfo'::@topology@ is
---     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_POINT_LIST',
---     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_LINE_LIST',
---     or
---     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_LINE_STRIP',
---     and either
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY'
---     dynamic state is not enabled or
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-dynamicPrimitiveTopologyUnrestricted dynamicPrimitiveTopologyUnrestricted>
---     is 'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_conservative_rasterization.PipelineRasterizationConservativeStateCreateInfoEXT'::@conservativeRasterizationMode@
---     /must/ be
---     'Vulkan.Extensions.VK_EXT_conservative_rasterization.CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-conservativePointAndLineRasterization-06760#
---     If
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-conservativePointAndLineRasterization conservativePointAndLineRasterization>
---     is not supported, the pipeline requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
---     and the pipeline includes a geometry shader with either the
---     @OutputPoints@ or @OutputLineStrip@ execution modes,
---     'Vulkan.Extensions.VK_EXT_conservative_rasterization.PipelineRasterizationConservativeStateCreateInfoEXT'::@conservativeRasterizationMode@
---     /must/ be
---     'Vulkan.Extensions.VK_EXT_conservative_rasterization.CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-conservativePointAndLineRasterization-06761#
---     If
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-conservativePointAndLineRasterization conservativePointAndLineRasterization>
---     is not supported, the pipeline requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
---     and the pipeline includes a mesh shader with either the
---     @OutputPoints@ or @OutputLinesNV@ execution modes,
---     'Vulkan.Extensions.VK_EXT_conservative_rasterization.PipelineRasterizationConservativeStateCreateInfoEXT'::@conservativeRasterizationMode@
---     /must/ be
---     'Vulkan.Extensions.VK_EXT_conservative_rasterization.CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-06894# If the pipeline
---     requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
---     but not
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>,
---     elements of @pStages@ /must/ not have @stage@ set to
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-06895# If the pipeline
---     requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>
---     but not
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
---     elements of @pStages@ /must/ not have @stage@ set to a shader stage
---     which participates in pre-rasterization
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-06896# If the pipeline
---     requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
---     all elements of @pStages@ /must/ have a @stage@ set to a shader
---     stage which participates in
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>
---     or
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-stage-06897# If the pipeline
---     requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>
---     and\/or
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
---     any value of @stage@ /must/ not be set in more than one element of
---     @pStages@
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3TessellationDomainOrigin-07370#
---     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedDynamicState3TessellationDomainOrigin extendedDynamicState3TessellationDomainOrigin>
---     feature is not enabled, there /must/ be no element of the
---     @pDynamicStates@ member of @pDynamicState@ set to
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3DepthClampEnable-07371#
---     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedDynamicState3DepthClampEnable extendedDynamicState3DepthClampEnable>
---     feature is not enabled, there /must/ be no element of the
---     @pDynamicStates@ member of @pDynamicState@ set to
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3PolygonMode-07372#
---     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedDynamicState3PolygonMode extendedDynamicState3PolygonMode>
---     feature is not enabled, there /must/ be no element of the
---     @pDynamicStates@ member of @pDynamicState@ set to
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_POLYGON_MODE_EXT'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3RasterizationSamples-07373#
---     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedDynamicState3RasterizationSamples extendedDynamicState3RasterizationSamples>
---     feature is not enabled, there /must/ be no element of the
---     @pDynamicStates@ member of @pDynamicState@ set to
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3SampleMask-07374#
---     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedDynamicState3SampleMask extendedDynamicState3SampleMask>
---     feature is not enabled, there /must/ be no element of the
---     @pDynamicStates@ member of @pDynamicState@ set to
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3AlphaToCoverageEnable-07375#
---     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedDynamicState3AlphaToCoverageEnable extendedDynamicState3AlphaToCoverageEnable>
---     feature is not enabled, there /must/ be no element of the
---     @pDynamicStates@ member of @pDynamicState@ set to
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3AlphaToOneEnable-07376#
---     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedDynamicState3AlphaToOneEnable extendedDynamicState3AlphaToOneEnable>
---     feature is not enabled, there /must/ be no element of the
---     @pDynamicStates@ member of @pDynamicState@ set to
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3LogicOpEnable-07377#
---     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedDynamicState3LogicOpEnable extendedDynamicState3LogicOpEnable>
---     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_ENABLE_EXT'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3ColorBlendEnable-07378#
---     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedDynamicState3ColorBlendEnable extendedDynamicState3ColorBlendEnable>
---     feature is not enabled, there /must/ be no element of the
---     @pDynamicStates@ member of @pDynamicState@ set to
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3ColorBlendEquation-07379#
---     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedDynamicState3ColorBlendEquation extendedDynamicState3ColorBlendEquation>
---     feature is not enabled, there /must/ be no element of the
---     @pDynamicStates@ member of @pDynamicState@ set to
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3ColorWriteMask-07380#
---     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedDynamicState3ColorWriteMask extendedDynamicState3ColorWriteMask>
---     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_MASK_EXT'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3RasterizationStream-07381#
---     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedDynamicState3RasterizationStream extendedDynamicState3RasterizationStream>
---     feature is not enabled, there /must/ be no element of the
---     @pDynamicStates@ member of @pDynamicState@ set to
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_STREAM_EXT'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3ConservativeRasterizationMode-07382#
---     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedDynamicState3ConservativeRasterizationMode extendedDynamicState3ConservativeRasterizationMode>
---     feature is not enabled, there /must/ be no element of the
---     @pDynamicStates@ member of @pDynamicState@ set to
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3ExtraPrimitiveOverestimationSize-07383#
---     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedDynamicState3ExtraPrimitiveOverestimationSize extendedDynamicState3ExtraPrimitiveOverestimationSize>
---     feature is not enabled, there /must/ be no element of the
---     @pDynamicStates@ member of @pDynamicState@ set to
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-09639# If the
---     pipeline requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>,
---     @pDynamicState@ includes
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT',
---     and @pDynamicState@ does not include
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT',
---     @pRasterizationState@ /must/ include a
---     'Vulkan.Extensions.VK_EXT_conservative_rasterization.PipelineRasterizationConservativeStateCreateInfoEXT'
---     in its @pNext@ chain
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3DepthClipEnable-07384#
---     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedDynamicState3DepthClipEnable extendedDynamicState3DepthClipEnable>
---     feature is not enabled, there /must/ be no element of the
---     @pDynamicStates@ member of @pDynamicState@ set to
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3SampleLocationsEnable-07385#
---     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedDynamicState3SampleLocationsEnable extendedDynamicState3SampleLocationsEnable>
---     feature is not enabled, there /must/ be no element of the
---     @pDynamicStates@ member of @pDynamicState@ set to
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3ColorBlendAdvanced-07386#
---     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedDynamicState3ColorBlendAdvanced extendedDynamicState3ColorBlendAdvanced>
---     feature is not enabled, there /must/ be no element of the
---     @pDynamicStates@ member of @pDynamicState@ set to
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3ProvokingVertexMode-07387#
---     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedDynamicState3ProvokingVertexMode extendedDynamicState3ProvokingVertexMode>
---     feature is not enabled, there /must/ be no element of the
---     @pDynamicStates@ member of @pDynamicState@ set to
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3LineRasterizationMode-07388#
---     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedDynamicState3LineRasterizationMode extendedDynamicState3LineRasterizationMode>
---     feature is not enabled, there /must/ be no element of the
---     @pDynamicStates@ member of @pDynamicState@ set to
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3LineStippleEnable-07389#
---     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedDynamicState3LineStippleEnable extendedDynamicState3LineStippleEnable>
---     feature is not enabled, there /must/ be no element of the
---     @pDynamicStates@ member of @pDynamicState@ set to
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3DepthClipNegativeOneToOne-07390#
---     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedDynamicState3DepthClipNegativeOneToOne extendedDynamicState3DepthClipNegativeOneToOne>
---     feature is not enabled, there /must/ be no element of the
---     @pDynamicStates@ member of @pDynamicState@ set to
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3ViewportWScalingEnable-07391#
---     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedDynamicState3ViewportWScalingEnable extendedDynamicState3ViewportWScalingEnable>
---     feature is not enabled, there /must/ be no element of the
---     @pDynamicStates@ member of @pDynamicState@ set to
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3ViewportSwizzle-07392#
---     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedDynamicState3ViewportSwizzle extendedDynamicState3ViewportSwizzle>
---     feature is not enabled, there /must/ be no element of the
---     @pDynamicStates@ member of @pDynamicState@ set to
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3CoverageToColorEnable-07393#
---     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedDynamicState3CoverageToColorEnable extendedDynamicState3CoverageToColorEnable>
---     feature is not enabled, there /must/ be no element of the
---     @pDynamicStates@ member of @pDynamicState@ set to
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3CoverageToColorLocation-07394#
---     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedDynamicState3CoverageToColorLocation extendedDynamicState3CoverageToColorLocation>
---     feature is not enabled, there /must/ be no element of the
---     @pDynamicStates@ member of @pDynamicState@ set to
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3CoverageModulationMode-07395#
---     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedDynamicState3CoverageModulationMode extendedDynamicState3CoverageModulationMode>
---     feature is not enabled, there /must/ be no element of the
---     @pDynamicStates@ member of @pDynamicState@ set to
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3CoverageModulationTableEnable-07396#
---     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedDynamicState3CoverageModulationTableEnable extendedDynamicState3CoverageModulationTableEnable>
---     feature is not enabled, there /must/ be no element of the
---     @pDynamicStates@ member of @pDynamicState@ set to
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3CoverageModulationTable-07397#
---     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedDynamicState3CoverageModulationTable extendedDynamicState3CoverageModulationTable>
---     feature is not enabled, there /must/ be no element of the
---     @pDynamicStates@ member of @pDynamicState@ set to
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3CoverageReductionMode-07398#
---     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedDynamicState3CoverageReductionMode extendedDynamicState3CoverageReductionMode>
---     feature is not enabled, there /must/ be no element of the
---     @pDynamicStates@ member of @pDynamicState@ set to
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3RepresentativeFragmentTestEnable-07399#
---     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedDynamicState3RepresentativeFragmentTestEnable extendedDynamicState3RepresentativeFragmentTestEnable>
---     feature is not enabled, there /must/ be no element of the
---     @pDynamicStates@ member of @pDynamicState@ set to
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3ShadingRateImageEnable-07400#
---     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedDynamicState3ShadingRateImageEnable extendedDynamicState3ShadingRateImageEnable>
---     feature is not enabled, there /must/ be no element of the
---     @pDynamicStates@ member of @pDynamicState@ set to
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-flags-07401# @flags@ /must/ not
---     include
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-flags-07997# @flags@ /must/ not
---     include
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-07730# If the
---     pipeline requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-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',
---     and if the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-multiviewPerViewViewports multiviewPerViewViewports>
---     feature is enabled, then the index of the most significant bit in
---     each element of
---     'Vulkan.Core11.Promoted_From_VK_KHR_multiview.RenderPassMultiviewCreateInfo'::@pViewMasks@
---     /must/ be less than @pViewportState->viewportCount@
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-07731# If the
---     pipeline requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-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',
---     and if the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-multiviewPerViewViewports multiviewPerViewViewports>
---     feature is enabled, then the index of the most significant bit in
---     each element of
---     'Vulkan.Core11.Promoted_From_VK_KHR_multiview.RenderPassMultiviewCreateInfo'::@pViewMasks@
---     /must/ be less than @pViewportState->scissorCount@
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-08711# If @pStages@
---     includes a fragment shader stage,
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE'
---     is not set in 'PipelineDynamicStateCreateInfo'::@pDynamicStates@,
---     and the fragment shader declares the @EarlyFragmentTests@ execution
---     mode and uses @OpDepthAttachmentReadEXT@, the @depthWriteEnable@
---     member of 'PipelineDepthStencilStateCreateInfo' /must/ be
---     'Vulkan.Core10.FundamentalTypes.FALSE'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-08712# If @pStages@
---     includes a fragment shader stage,
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_WRITE_MASK'
---     is not set in 'PipelineDynamicStateCreateInfo'::@pDynamicStates@,
---     and the fragment shader declares the @EarlyFragmentTests@ execution
---     mode and uses @OpStencilAttachmentReadEXT@, the value of
---     'StencilOpState'::@writeMask@ for both @front@ and @back@ in
---     'PipelineDepthStencilStateCreateInfo' /must/ be @0@
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-08744# If @renderPass@
---     is 'Vulkan.Core10.APIConstants.NULL_HANDLE', the pipeline requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output state>
---     or
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>,
---     the pipeline enables
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-sampleshading sample shading>,
---     @rasterizationSamples@ is not dynamic, and the @pNext@ chain
---     includes a
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'
---     structure, @rasterizationSamples@ /must/ be a valid
---     'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' value
---     that is set in @imageCreateSampleCounts@ (as defined in
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-creation-limits Image Creation Limits>)
---     for every element of @depthAttachmentFormat@,
---     @stencilAttachmentFormat@ and the @pColorAttachmentFormats@ array
---     which is not 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-flags-08897# If
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
---     includes
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_VERTEX_INPUT_INTERFACE_BIT_EXT',
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
---     is specified either in a library or by the inclusion of
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT',
---     and that state includes a vertex shader stage in @pStages@, the
---     pipeline /must/ define
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-vertex-input vertex input state>
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-flags-08898# If
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
---     includes
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_VERTEX_INPUT_INTERFACE_BIT_EXT',
---     and
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
---     is not specified, the pipeline /must/ define
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-vertex-input vertex input state>
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-flags-08899# If @flags@ does not
---     include
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR',
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
---     is specified either in a library or by the inclusion of
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT',
---     and that state includes a vertex shader stage in @pStages@, the
---     pipeline /must/ either define
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-vertex-input vertex input state>
---     or include that state in a linked pipeline library
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-flags-08900# If
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
---     includes
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'
---     the pipeline /must/ define
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-flags-08901# If @flags@ does not
---     include
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR',
---     the pipeline /must/ either define
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
---     or include that state in a linked pipeline library
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-flags-08903# If
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
---     includes
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
---     is specified either in a library or by the inclusion of
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT',
---     and that state either includes
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE'
---     or has @pRasterizationState->rasterizerDiscardEnable@ set to
---     'Vulkan.Core10.FundamentalTypes.FALSE', the pipeline /must/ define
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-flags-08904# If
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
---     includes
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
---     and
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
---     is not specified, the pipeline /must/ define
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-flags-08906# If
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
---     includes
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
---     is specified either in a library or by the inclusion of
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT',
---     and that state either includes
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE'
---     or has @pRasterizationState->rasterizerDiscardEnable@ set to
---     'Vulkan.Core10.FundamentalTypes.FALSE', the pipeline /must/ define
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-flags-08907# If
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@
---     includes
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT',
---     and
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
---     is not specified, the pipeline /must/ define
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-flags-08909# If @flags@ does not
---     include
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR',
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
---     is specified either in a library or by the inclusion of
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT',
---     and that state either includes
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE'
---     or has @pRasterizationState->rasterizerDiscardEnable@ set to
---     'Vulkan.Core10.FundamentalTypes.FALSE', the pipeline /must/ define
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>
---     and
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>
---     or include those states in linked pipeline libraries
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-None-09043# If
---     @pDynamicState->pDynamicStates@ does not include
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT',
---     and the format of any color attachment is
---     'Vulkan.Core10.Enums.Format.FORMAT_E5B9G9R9_UFLOAT_PACK32', the
---     @colorWriteMask@ member of the corresponding element of
---     @pColorBlendState->pAttachments@ /must/ either include all of
---     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_R_BIT',
---     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_G_BIT',
---     and
---     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_B_BIT',
---     or none of them
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09301# If
---     the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-externalFormatResolve externalFormatResolve>
---     feature is enabled, the pipeline requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
---     @renderPass@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', and
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     is not @0@,
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@viewMask@
---     /must/ be @0@
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09304# If
---     the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-externalFormatResolve externalFormatResolve>
---     feature is enabled, the pipeline requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
---     @renderPass@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE',
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     is not @0@, and @rasterizationSamples@ is not dynamic,
---     'PipelineMultisampleStateCreateInfo'::@rasterizationSamples@ /must/
---     be @1@
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09305# If
---     the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-externalFormatResolve externalFormatResolve>
---     feature is enabled, the pipeline requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
---     @renderPass@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', and
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     is not @0@, and @blendEnable@ is not dynamic, the @blendEnable@
---     member of each element of @pColorBlendState->pAttachments@ /must/ be
---     'Vulkan.Core10.FundamentalTypes.FALSE'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09306# If
---     the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-externalFormatResolve externalFormatResolve>
---     feature is enabled, the pipeline requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
---     @renderPass@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', and
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     is not @0@, and @pDynamicState->pDynamicStates@ does not include
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR',
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::@width@
---     /must/ be @1@
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09307# If
---     the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-externalFormatResolve externalFormatResolve>
---     feature is enabled, the pipeline requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
---     @renderPass@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', and
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     is not @0@, and @pDynamicState->pDynamicStates@ does not include
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR',
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::@height@
---     /must/ be @1@
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09308# If
---     the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-externalFormatResolve externalFormatResolve>
---     feature is enabled, the pipeline requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-output pre-rasterization shader state>
---     and
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
---     @renderPass@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', and
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     is not @0@, the last
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader stage>
---     /must/ not statically use a variable with the
---     @PrimitiveShadingRateKHR@ built-in
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09309# If
---     the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-externalFormatResolve externalFormatResolve>
---     feature is enabled, the pipeline requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
---     @renderPass@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', and
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     is not @0@,
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@colorAttachmentCount@
---     /must/ be @1@
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09310# If
---     the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-externalFormatResolve externalFormatResolve>
---     feature is enabled, the pipeline requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>
---     and
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
---     @renderPass@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', and
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     is not @0@, the fragment shader /must/ not declare the
---     @DepthReplacing@ or @StencilRefReplacingEXT@ execution modes
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09313# If
---     the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-externalFormatResolve externalFormatResolve>
---     feature is enabled, the pipeline requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
---     @renderPass@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
---     @subpass@ includes an external format resolve attachment, and
---     @rasterizationSamples@ is not dynamic,
---     'PipelineMultisampleStateCreateInfo'::@rasterizationSamples@ /must/
---     be 'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09314# If
---     the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-externalFormatResolve externalFormatResolve>
---     feature is enabled, the pipeline requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
---     @renderPass@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
---     @subpass@ includes an external format resolve attachment, and
---     @blendEnable@ is not dynamic, the @blendEnable@ member of each
---     element of @pColorBlendState->pAttachments@ /must/ be
---     'Vulkan.Core10.FundamentalTypes.FALSE'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09315# If
---     the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-externalFormatResolve externalFormatResolve>
---     feature is enabled, the pipeline requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
---     @renderPass@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
---     @subpass@ includes an external format resolve attachment, and
---     @pDynamicState->pDynamicStates@ does not include
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR',
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::@width@
---     /must/ be @1@
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09316# If
---     the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-externalFormatResolve externalFormatResolve>
---     feature is enabled, the pipeline requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
---     @renderPass@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
---     @subpass@ includes an external format resolve attachment, and
---     @pDynamicState->pDynamicStates@ does not include
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR',
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::@height@
---     /must/ be @1@
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09317# If
---     the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-externalFormatResolve externalFormatResolve>
---     feature is enabled, the pipeline requires
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-output pre-rasterization shader state>
---     and
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>,
---     @renderPass@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and
---     @subpass@ includes an external format resolve attachment, the last
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader stage>
---     /must/ not statically use a variable with the
---     @PrimitiveShadingRateKHR@ built-in
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-09531# If the pipeline
---     is being created with
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>
---     and
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output state>,
---     the value of @renderPass@ is
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR'
---     is included,
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR'::@colorAttachmentCount@
---     /must/ be equal to
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@colorAttachmentCount@
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-09652# If the pipeline
---     is being created with
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>
---     and
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output state>,
---     the value of @renderPass@ is
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR'
---     is not included, the fragment shader /must/ not contain any input
---     attachments with a @InputAttachmentIndex@ greater than or equal to
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@colorAttachmentCount@
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-09532# If the pipeline
---     is being created with
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output state>,
---     and the value of @renderPass@ is
---     'Vulkan.Core10.APIConstants.NULL_HANDLE',
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingAttachmentLocationInfoKHR'::@colorAttachmentCount@
---     /must/ be equal to
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@colorAttachmentCount@
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-sType-sType# @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-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_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD',
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID',
---     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT',
---     'Vulkan.Extensions.VK_NV_device_generated_commands.GraphicsPipelineShaderGroupsCreateInfoNV',
---     'Vulkan.Extensions.VK_NVX_multiview_per_view_attributes.MultiviewPerViewAttributesInfoNVX',
---     'Vulkan.Extensions.VK_KHR_pipeline_binary.PipelineBinaryInfoKHR',
---     'Vulkan.Extensions.VK_AMD_pipeline_compiler_control.PipelineCompilerControlCreateInfoAMD',
---     'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlags2CreateInfoKHR',
---     '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_pipeline_library.PipelineLibraryCreateInfoKHR',
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo',
---     'Vulkan.Extensions.VK_NV_representative_fragment_test.PipelineRepresentativeFragmentTestStateCreateInfoNV',
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PipelineRobustnessCreateInfoEXT',
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingAttachmentLocationInfoKHR',
---     or
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR'
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-sType-unique# The @sType@ value
---     of each struct in the @pNext@ chain /must/ be unique
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-parameter# If
---     @pDynamicState@ is not @NULL@, @pDynamicState@ /must/ be a valid
---     pointer to a valid 'PipelineDynamicStateCreateInfo' structure
---
--- -   #VUID-VkGraphicsPipelineCreateInfo-commonparent# Each of
---     @basePipelineHandle@, @layout@, and @renderPass@ 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_VERSION_1_0 VK_VERSION_1_0>,
--- 'Vulkan.Core10.Handles.Pipeline', 'PipelineColorBlendStateCreateInfo',
--- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlags',
--- 'PipelineDepthStencilStateCreateInfo', 'PipelineDynamicStateCreateInfo',
--- 'PipelineInputAssemblyStateCreateInfo',
--- 'Vulkan.Core10.Handles.PipelineLayout',
--- 'PipelineMultisampleStateCreateInfo',
--- 'PipelineRasterizationStateCreateInfo', 'PipelineShaderStageCreateInfo',
--- 'PipelineTessellationStateCreateInfo',
--- 'PipelineVertexInputStateCreateInfo', 'PipelineViewportStateCreateInfo',
--- 'Vulkan.Core10.Handles.RenderPass',
--- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'createGraphicsPipelines'
-data GraphicsPipelineCreateInfo (es :: [Type]) = GraphicsPipelineCreateInfo
-  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
-    next :: Chain es
-  , -- | @flags@ is a bitmask of
-    -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits'
-    -- specifying how the pipeline will be generated.
-    flags :: PipelineCreateFlags
-  , -- | @stageCount@ is the number of entries in the @pStages@ array.
-    stageCount :: Word32
-  , -- | @pStages@ is a pointer to an array of @stageCount@
-    -- 'PipelineShaderStageCreateInfo' structures describing the set of the
-    -- shader stages to be included in the graphics pipeline.
-    stages :: Vector (SomeStruct PipelineShaderStageCreateInfo)
-  , -- | @pVertexInputState@ is a pointer to a
-    -- 'PipelineVertexInputStateCreateInfo' structure. It is ignored if the
-    -- pipeline includes a mesh shader stage. It /can/ be @NULL@ if the
-    -- pipeline is created with the
-    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
-    -- dynamic state set.
-    vertexInputState :: Maybe (SomeStruct PipelineVertexInputStateCreateInfo)
-  , -- | @pInputAssemblyState@ is a pointer to a
-    -- 'PipelineInputAssemblyStateCreateInfo' structure which determines input
-    -- assembly behavior for vertex shading, as described in
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#drawing Drawing Commands>.
-    -- #pipelines-pInputAssemblyState-null# If the
-    -- @VK_EXT_extended_dynamic_state3@ extension is enabled, it /can/ be
-    -- @NULL@ if the pipeline is created with both
-    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE',
-    -- and 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY'
-    -- dynamic states set and
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-dynamicPrimitiveTopologyUnrestricted dynamicPrimitiveTopologyUnrestricted>
-    -- is 'Vulkan.Core10.FundamentalTypes.TRUE'. It is ignored if the pipeline
-    -- includes a mesh shader stage.
-    inputAssemblyState :: Maybe PipelineInputAssemblyStateCreateInfo
-  , -- | @pTessellationState@ is a pointer to a
-    -- 'PipelineTessellationStateCreateInfo' structure defining tessellation
-    -- state used by tessellation shaders. It /can/ be @NULL@ if the pipeline
-    -- is created with the
-    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT'
-    -- dynamic state set.
-    tessellationState :: Maybe (SomeStruct PipelineTessellationStateCreateInfo)
-  , -- | @pViewportState@ is a pointer to a 'PipelineViewportStateCreateInfo'
-    -- structure defining viewport state used when rasterization is enabled.
-    -- #pipelines-pViewportState-null# If the @VK_EXT_extended_dynamic_state3@
-    -- extension is enabled, it /can/ be @NULL@ if the pipeline is created with
-    -- both
-    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT',
-    -- and 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
-    -- dynamic states set.
-    viewportState :: Maybe (SomeStruct PipelineViewportStateCreateInfo)
-  , -- | @pRasterizationState@ is a pointer to a
-    -- 'PipelineRasterizationStateCreateInfo' structure defining rasterization
-    -- state. #pipelines-pRasterizationState-null# If the
-    -- @VK_EXT_extended_dynamic_state3@ extension is enabled, it /can/ be
-    -- @NULL@ if the pipeline is created with all of
-    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT',
-    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE',
-    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_POLYGON_MODE_EXT',
-    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CULL_MODE',
-    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRONT_FACE',
-    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE',
-    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS', and
-    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_WIDTH' dynamic
-    -- states set.
-    rasterizationState :: Maybe (SomeStruct PipelineRasterizationStateCreateInfo)
-  , -- | @pMultisampleState@ is a pointer to a
-    -- 'PipelineMultisampleStateCreateInfo' structure defining multisample
-    -- state used when rasterization is enabled.
-    -- #pipelines-pMultisampleState-null# If the
-    -- @VK_EXT_extended_dynamic_state3@ extension is enabled, it /can/ be
-    -- @NULL@ if the pipeline is created with all of
-    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT',
-    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT', and
-    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT'
-    -- dynamic states set, and either the
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-alphaToOne alphaToOne>
-    -- feature is not enabled or
-    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT'
-    -- is set, in which case
-    -- 'PipelineMultisampleStateCreateInfo'::@sampleShadingEnable@ is assumed
-    -- to be 'Vulkan.Core10.FundamentalTypes.FALSE'.
-    multisampleState :: Maybe (SomeStruct PipelineMultisampleStateCreateInfo)
-  , -- | @pDepthStencilState@ is a pointer to a
-    -- 'PipelineDepthStencilStateCreateInfo' structure defining depth\/stencil
-    -- state used when rasterization is enabled for depth or stencil
-    -- attachments accessed during rendering.
-    -- #pipelines-pDepthStencilState-null# If the
-    -- @VK_EXT_extended_dynamic_state3@ extension is enabled, it /can/ be
-    -- @NULL@ if the pipeline is created with all of
-    -- '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', and
-    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS' dynamic
-    -- states set.
-    depthStencilState :: Maybe PipelineDepthStencilStateCreateInfo
-  , -- | @pColorBlendState@ is a pointer to a 'PipelineColorBlendStateCreateInfo'
-    -- structure defining color blend state used when rasterization is enabled
-    -- for any color attachments accessed during rendering.
-    -- #pipelines-pColorBlendState-null# If the
-    -- @VK_EXT_extended_dynamic_state3@ extension is enabled, it /can/ be
-    -- @NULL@ if the pipeline is created with all of
-    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT',
-    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_EXT',
-    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT',
-    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT',
-    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT',
-    -- and 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_BLEND_CONSTANTS'
-    -- dynamic states set.
-    colorBlendState :: Maybe (SomeStruct PipelineColorBlendStateCreateInfo)
-  , -- | @pDynamicState@ is a pointer to a 'PipelineDynamicStateCreateInfo'
-    -- structure defining which properties of the pipeline state object are
-    -- dynamic and /can/ be changed independently of the pipeline state. This
-    -- /can/ be @NULL@, which means no state in the pipeline is considered
-    -- dynamic.
-    dynamicState :: Maybe PipelineDynamicStateCreateInfo
-  , -- | @layout@ is the description of binding locations used by both the
-    -- pipeline and descriptor sets used with the pipeline.
-    layout :: PipelineLayout
-  , -- | @renderPass@ is a handle to a render pass object describing the
-    -- 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://registry.khronos.org/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
-    -- pipeline will be used.
-    subpass :: Word32
-  , -- | @basePipelineHandle@ is a pipeline to derive from.
-    basePipelineHandle :: Pipeline
-  , -- | @basePipelineIndex@ is an index into the @pCreateInfos@ parameter to use
-    -- as a pipeline to derive from.
-    basePipelineIndex :: Int32
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (GraphicsPipelineCreateInfo (es :: [Type]))
-#endif
-deriving instance Show (Chain es) => Show (GraphicsPipelineCreateInfo es)
-
-instance Extensible GraphicsPipelineCreateInfo where
-  extensibleTypeName = "GraphicsPipelineCreateInfo"
-  setNext GraphicsPipelineCreateInfo{..} next' = GraphicsPipelineCreateInfo{next = next', ..}
-  getNext GraphicsPipelineCreateInfo{..} = next
-  extends :: forall e b proxy. Typeable e => proxy e -> (Extends GraphicsPipelineCreateInfo e => b) -> Maybe b
-  extends _ f
-    | Just Refl <- eqT @e @RenderingInputAttachmentIndexInfoKHR = Just f
-    | Just Refl <- eqT @e @RenderingAttachmentLocationInfoKHR = Just f
-    | Just Refl <- eqT @e @PipelineRobustnessCreateInfoEXT = Just f
-    | Just Refl <- eqT @e @GraphicsPipelineLibraryCreateInfoEXT = Just f
-    | Just Refl <- eqT @e @MultiviewPerViewAttributesInfoNVX = Just f
-    | Just Refl <- eqT @e @AttachmentSampleCountInfoAMD = 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 @PipelineLibraryCreateInfoKHR = Just f
-    | Just Refl <- eqT @e @PipelineCompilerControlCreateInfoAMD = Just f
-    | Just Refl <- eqT @e @PipelineCreationFeedbackCreateInfo = Just f
-    | Just Refl <- eqT @e @PipelineRepresentativeFragmentTestStateCreateInfoNV = Just f
-    | Just Refl <- eqT @e @ExternalFormatANDROID = Just f
-    | Just Refl <- eqT @e @PipelineDiscardRectangleStateCreateInfoEXT = Just f
-    | Just Refl <- eqT @e @GraphicsPipelineShaderGroupsCreateInfoNV = Just f
-    | Just Refl <- eqT @e @PipelineBinaryInfoKHR = Just f
-    | Just Refl <- eqT @e @PipelineCreateFlags2CreateInfoKHR = Just f
-    | otherwise = Nothing
-
-instance ( Extendss GraphicsPipelineCreateInfo es
-         , PokeChain es ) => ToCStruct (GraphicsPipelineCreateInfo es) where
-  withCStruct x f = allocaBytes 144 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p GraphicsPipelineCreateInfo{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO)
-    pNext'' <- fmap castPtr . ContT $ withChain (next)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
-    lift $ poke ((p `plusPtr` 16 :: Ptr PipelineCreateFlags)) (flags)
-    let pStagesLength = Data.Vector.length $ (stages)
-    stageCount'' <- lift $ if (stageCount) == 0
-      then pure $ fromIntegral pStagesLength
-      else do
-        unless (fromIntegral pStagesLength == (stageCount) || pStagesLength == 0) $
-          throwIO $ IOError Nothing InvalidArgument "" "pStages must be empty or have 'stageCount' elements" Nothing Nothing
-        pure (stageCount)
-    lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) (stageCount'')
-    pStages'' <- if Data.Vector.null (stages)
-      then pure nullPtr
-      else do
-        pPStages <- ContT $ allocaBytes @(PipelineShaderStageCreateInfo _) (((Data.Vector.length (stages))) * 48)
-        Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPStages `plusPtr` (48 * (i)) :: Ptr (PipelineShaderStageCreateInfo _))) (e) . ($ ())) ((stages))
-        pure $ pPStages
-    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr (PipelineShaderStageCreateInfo _)))) pStages''
-    pVertexInputState'' <- case (vertexInputState) of
-      Nothing -> pure nullPtr
-      Just j -> ContT @_ @_ @(Ptr (PipelineVertexInputStateCreateInfo '[])) $ \cont -> withSomeCStruct @PipelineVertexInputStateCreateInfo (j) (cont . castPtr)
-    lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr (PipelineVertexInputStateCreateInfo _)))) pVertexInputState''
-    pInputAssemblyState'' <- case (inputAssemblyState) of
-      Nothing -> pure nullPtr
-      Just j -> ContT $ withCStruct (j)
-    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr PipelineInputAssemblyStateCreateInfo))) pInputAssemblyState''
-    pTessellationState'' <- case (tessellationState) of
-      Nothing -> pure nullPtr
-      Just j -> ContT @_ @_ @(Ptr (PipelineTessellationStateCreateInfo '[])) $ \cont -> withSomeCStruct @PipelineTessellationStateCreateInfo (j) (cont . castPtr)
-    lift $ poke ((p `plusPtr` 48 :: Ptr (Ptr (PipelineTessellationStateCreateInfo _)))) pTessellationState''
-    pViewportState'' <- case (viewportState) of
-      Nothing -> pure nullPtr
-      Just j -> ContT @_ @_ @(Ptr (PipelineViewportStateCreateInfo '[])) $ \cont -> withSomeCStruct @PipelineViewportStateCreateInfo (j) (cont . castPtr)
-    lift $ poke ((p `plusPtr` 56 :: Ptr (Ptr (PipelineViewportStateCreateInfo _)))) pViewportState''
-    pRasterizationState'' <- case (rasterizationState) of
-      Nothing -> pure nullPtr
-      Just j -> ContT @_ @_ @(Ptr (PipelineRasterizationStateCreateInfo '[])) $ \cont -> withSomeCStruct @PipelineRasterizationStateCreateInfo (j) (cont . castPtr)
-    lift $ poke ((p `plusPtr` 64 :: Ptr (Ptr (PipelineRasterizationStateCreateInfo _)))) pRasterizationState''
-    pMultisampleState'' <- case (multisampleState) of
-      Nothing -> pure nullPtr
-      Just j -> ContT @_ @_ @(Ptr (PipelineMultisampleStateCreateInfo '[])) $ \cont -> withSomeCStruct @PipelineMultisampleStateCreateInfo (j) (cont . castPtr)
-    lift $ poke ((p `plusPtr` 72 :: Ptr (Ptr (PipelineMultisampleStateCreateInfo _)))) pMultisampleState''
-    pDepthStencilState'' <- case (depthStencilState) of
-      Nothing -> pure nullPtr
-      Just j -> ContT $ withCStruct (j)
-    lift $ poke ((p `plusPtr` 80 :: Ptr (Ptr PipelineDepthStencilStateCreateInfo))) pDepthStencilState''
-    pColorBlendState'' <- case (colorBlendState) of
-      Nothing -> pure nullPtr
-      Just j -> ContT @_ @_ @(Ptr (PipelineColorBlendStateCreateInfo '[])) $ \cont -> withSomeCStruct @PipelineColorBlendStateCreateInfo (j) (cont . castPtr)
-    lift $ poke ((p `plusPtr` 88 :: Ptr (Ptr (PipelineColorBlendStateCreateInfo _)))) pColorBlendState''
-    pDynamicState'' <- case (dynamicState) of
-      Nothing -> pure nullPtr
-      Just j -> ContT $ withCStruct (j)
-    lift $ poke ((p `plusPtr` 96 :: Ptr (Ptr PipelineDynamicStateCreateInfo))) pDynamicState''
-    lift $ poke ((p `plusPtr` 104 :: Ptr PipelineLayout)) (layout)
-    lift $ poke ((p `plusPtr` 112 :: Ptr RenderPass)) (renderPass)
-    lift $ poke ((p `plusPtr` 120 :: Ptr Word32)) (subpass)
-    lift $ poke ((p `plusPtr` 128 :: Ptr Pipeline)) (basePipelineHandle)
-    lift $ poke ((p `plusPtr` 136 :: Ptr Int32)) (basePipelineIndex)
-    lift $ f
-  cStructSize = 144
-  cStructAlignment = 8
-  pokeZeroCStruct p f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO)
-    pNext' <- fmap castPtr . ContT $ withZeroChain @es
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
-    lift $ poke ((p `plusPtr` 120 :: Ptr Word32)) (zero)
-    lift $ poke ((p `plusPtr` 136 :: Ptr Int32)) (zero)
-    lift $ f
-
-instance ( Extendss GraphicsPipelineCreateInfo es
-         , PeekChain es ) => FromCStruct (GraphicsPipelineCreateInfo es) where
-  peekCStruct p = do
-    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
-    next <- peekChain (castPtr pNext)
-    flags <- peek @PipelineCreateFlags ((p `plusPtr` 16 :: Ptr PipelineCreateFlags))
-    stageCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
-    pStages <- peek @(Ptr (PipelineShaderStageCreateInfo _)) ((p `plusPtr` 24 :: Ptr (Ptr (PipelineShaderStageCreateInfo _))))
-    let pStagesLength = if pStages == nullPtr then 0 else (fromIntegral stageCount)
-    pStages' <- generateM pStagesLength (\i -> peekSomeCStruct (forgetExtensions ((pStages `advancePtrBytes` (48 * (i)) :: Ptr (PipelineShaderStageCreateInfo _)))))
-    pVertexInputState <- peek @(Ptr (PipelineVertexInputStateCreateInfo _)) ((p `plusPtr` 32 :: Ptr (Ptr (PipelineVertexInputStateCreateInfo _))))
-    pVertexInputState' <- maybePeek (\j -> peekSomeCStruct (forgetExtensions (j))) pVertexInputState
-    pInputAssemblyState <- peek @(Ptr PipelineInputAssemblyStateCreateInfo) ((p `plusPtr` 40 :: Ptr (Ptr PipelineInputAssemblyStateCreateInfo)))
-    pInputAssemblyState' <- maybePeek (\j -> peekCStruct @PipelineInputAssemblyStateCreateInfo (j)) pInputAssemblyState
-    pTessellationState <- peek @(Ptr (PipelineTessellationStateCreateInfo _)) ((p `plusPtr` 48 :: Ptr (Ptr (PipelineTessellationStateCreateInfo _))))
-    pTessellationState' <- maybePeek (\j -> peekSomeCStruct (forgetExtensions (j))) pTessellationState
-    pViewportState <- peek @(Ptr (PipelineViewportStateCreateInfo _)) ((p `plusPtr` 56 :: Ptr (Ptr (PipelineViewportStateCreateInfo _))))
-    pViewportState' <- maybePeek (\j -> peekSomeCStruct (forgetExtensions (j))) pViewportState
-    pRasterizationState <- peek @(Ptr (PipelineRasterizationStateCreateInfo _)) ((p `plusPtr` 64 :: Ptr (Ptr (PipelineRasterizationStateCreateInfo _))))
-    pRasterizationState' <- maybePeek (\j -> peekSomeCStruct (forgetExtensions (j))) pRasterizationState
-    pMultisampleState <- peek @(Ptr (PipelineMultisampleStateCreateInfo _)) ((p `plusPtr` 72 :: Ptr (Ptr (PipelineMultisampleStateCreateInfo _))))
-    pMultisampleState' <- maybePeek (\j -> peekSomeCStruct (forgetExtensions (j))) pMultisampleState
-    pDepthStencilState <- peek @(Ptr PipelineDepthStencilStateCreateInfo) ((p `plusPtr` 80 :: Ptr (Ptr PipelineDepthStencilStateCreateInfo)))
-    pDepthStencilState' <- maybePeek (\j -> peekCStruct @PipelineDepthStencilStateCreateInfo (j)) pDepthStencilState
-    pColorBlendState <- peek @(Ptr (PipelineColorBlendStateCreateInfo _)) ((p `plusPtr` 88 :: Ptr (Ptr (PipelineColorBlendStateCreateInfo _))))
-    pColorBlendState' <- maybePeek (\j -> peekSomeCStruct (forgetExtensions (j))) pColorBlendState
-    pDynamicState <- peek @(Ptr PipelineDynamicStateCreateInfo) ((p `plusPtr` 96 :: Ptr (Ptr PipelineDynamicStateCreateInfo)))
-    pDynamicState' <- maybePeek (\j -> peekCStruct @PipelineDynamicStateCreateInfo (j)) pDynamicState
-    layout <- peek @PipelineLayout ((p `plusPtr` 104 :: Ptr PipelineLayout))
-    renderPass <- peek @RenderPass ((p `plusPtr` 112 :: Ptr RenderPass))
-    subpass <- peek @Word32 ((p `plusPtr` 120 :: Ptr Word32))
-    basePipelineHandle <- peek @Pipeline ((p `plusPtr` 128 :: Ptr Pipeline))
-    basePipelineIndex <- peek @Int32 ((p `plusPtr` 136 :: Ptr Int32))
-    pure $ GraphicsPipelineCreateInfo
-             next
-             flags
-             stageCount
-             pStages'
-             pVertexInputState'
-             pInputAssemblyState'
-             pTessellationState'
-             pViewportState'
-             pRasterizationState'
-             pMultisampleState'
-             pDepthStencilState'
-             pColorBlendState'
-             pDynamicState'
-             layout
-             renderPass
-             subpass
-             basePipelineHandle
-             basePipelineIndex
-
-instance es ~ '[] => Zero (GraphicsPipelineCreateInfo es) where
-  zero = GraphicsPipelineCreateInfo
-           ()
-           zero
-           zero
-           mempty
-           Nothing
-           Nothing
-           Nothing
-           Nothing
-           Nothing
-           Nothing
-           Nothing
-           Nothing
-           Nothing
-           zero
-           zero
-           zero
-           zero
-           zero
-
diff --git a/src/Vulkan/Core10/Pipeline.hs-boot b/src/Vulkan/Core10/Pipeline.hs-boot
deleted file mode 100644
--- a/src/Vulkan/Core10/Pipeline.hs-boot
+++ /dev/null
@@ -1,208 +0,0 @@
-{-# language CPP #-}
--- No documentation found for Chapter "Pipeline"
-module Vulkan.Core10.Pipeline  ( ComputePipelineCreateInfo
-                               , GraphicsPipelineCreateInfo
-                               , PipelineColorBlendAttachmentState
-                               , PipelineColorBlendStateCreateInfo
-                               , PipelineDepthStencilStateCreateInfo
-                               , PipelineDynamicStateCreateInfo
-                               , PipelineInputAssemblyStateCreateInfo
-                               , PipelineMultisampleStateCreateInfo
-                               , PipelineRasterizationStateCreateInfo
-                               , PipelineShaderStageCreateInfo
-                               , PipelineTessellationStateCreateInfo
-                               , PipelineVertexInputStateCreateInfo
-                               , PipelineViewportStateCreateInfo
-                               , SpecializationInfo
-                               , SpecializationMapEntry
-                               , StencilOpState
-                               , VertexInputAttributeDescription
-                               , VertexInputBindingDescription
-                               , Viewport
-                               ) 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)
-type role ComputePipelineCreateInfo nominal
-data ComputePipelineCreateInfo (es :: [Type])
-
-instance ( Extendss ComputePipelineCreateInfo es
-         , PokeChain es ) => ToCStruct (ComputePipelineCreateInfo es)
-instance Show (Chain es) => Show (ComputePipelineCreateInfo es)
-
-instance ( Extendss ComputePipelineCreateInfo es
-         , PeekChain es ) => FromCStruct (ComputePipelineCreateInfo es)
-
-
-type role GraphicsPipelineCreateInfo nominal
-data GraphicsPipelineCreateInfo (es :: [Type])
-
-instance ( Extendss GraphicsPipelineCreateInfo es
-         , PokeChain es ) => ToCStruct (GraphicsPipelineCreateInfo es)
-instance Show (Chain es) => Show (GraphicsPipelineCreateInfo es)
-
-instance ( Extendss GraphicsPipelineCreateInfo es
-         , PeekChain es ) => FromCStruct (GraphicsPipelineCreateInfo es)
-
-
-data PipelineColorBlendAttachmentState
-
-instance ToCStruct PipelineColorBlendAttachmentState
-instance Show PipelineColorBlendAttachmentState
-
-instance FromCStruct PipelineColorBlendAttachmentState
-
-
-type role PipelineColorBlendStateCreateInfo nominal
-data PipelineColorBlendStateCreateInfo (es :: [Type])
-
-instance ( Extendss PipelineColorBlendStateCreateInfo es
-         , PokeChain es ) => ToCStruct (PipelineColorBlendStateCreateInfo es)
-instance Show (Chain es) => Show (PipelineColorBlendStateCreateInfo es)
-
-instance ( Extendss PipelineColorBlendStateCreateInfo es
-         , PeekChain es ) => FromCStruct (PipelineColorBlendStateCreateInfo es)
-
-
-data PipelineDepthStencilStateCreateInfo
-
-instance ToCStruct PipelineDepthStencilStateCreateInfo
-instance Show PipelineDepthStencilStateCreateInfo
-
-instance FromCStruct PipelineDepthStencilStateCreateInfo
-
-
-data PipelineDynamicStateCreateInfo
-
-instance ToCStruct PipelineDynamicStateCreateInfo
-instance Show PipelineDynamicStateCreateInfo
-
-instance FromCStruct PipelineDynamicStateCreateInfo
-
-
-data PipelineInputAssemblyStateCreateInfo
-
-instance ToCStruct PipelineInputAssemblyStateCreateInfo
-instance Show PipelineInputAssemblyStateCreateInfo
-
-instance FromCStruct PipelineInputAssemblyStateCreateInfo
-
-
-type role PipelineMultisampleStateCreateInfo nominal
-data PipelineMultisampleStateCreateInfo (es :: [Type])
-
-instance ( Extendss PipelineMultisampleStateCreateInfo es
-         , PokeChain es ) => ToCStruct (PipelineMultisampleStateCreateInfo es)
-instance Show (Chain es) => Show (PipelineMultisampleStateCreateInfo es)
-
-instance ( Extendss PipelineMultisampleStateCreateInfo es
-         , PeekChain es ) => FromCStruct (PipelineMultisampleStateCreateInfo es)
-
-
-type role PipelineRasterizationStateCreateInfo nominal
-data PipelineRasterizationStateCreateInfo (es :: [Type])
-
-instance ( Extendss PipelineRasterizationStateCreateInfo es
-         , PokeChain es ) => ToCStruct (PipelineRasterizationStateCreateInfo es)
-instance Show (Chain es) => Show (PipelineRasterizationStateCreateInfo es)
-
-instance ( Extendss PipelineRasterizationStateCreateInfo es
-         , PeekChain es ) => FromCStruct (PipelineRasterizationStateCreateInfo es)
-
-
-type role PipelineShaderStageCreateInfo nominal
-data PipelineShaderStageCreateInfo (es :: [Type])
-
-instance ( Extendss PipelineShaderStageCreateInfo es
-         , PokeChain es ) => ToCStruct (PipelineShaderStageCreateInfo es)
-instance Show (Chain es) => Show (PipelineShaderStageCreateInfo es)
-
-instance ( Extendss PipelineShaderStageCreateInfo es
-         , PeekChain es ) => FromCStruct (PipelineShaderStageCreateInfo es)
-
-
-type role PipelineTessellationStateCreateInfo nominal
-data PipelineTessellationStateCreateInfo (es :: [Type])
-
-instance ( Extendss PipelineTessellationStateCreateInfo es
-         , PokeChain es ) => ToCStruct (PipelineTessellationStateCreateInfo es)
-instance Show (Chain es) => Show (PipelineTessellationStateCreateInfo es)
-
-instance ( Extendss PipelineTessellationStateCreateInfo es
-         , PeekChain es ) => FromCStruct (PipelineTessellationStateCreateInfo es)
-
-
-type role PipelineVertexInputStateCreateInfo nominal
-data PipelineVertexInputStateCreateInfo (es :: [Type])
-
-instance ( Extendss PipelineVertexInputStateCreateInfo es
-         , PokeChain es ) => ToCStruct (PipelineVertexInputStateCreateInfo es)
-instance Show (Chain es) => Show (PipelineVertexInputStateCreateInfo es)
-
-instance ( Extendss PipelineVertexInputStateCreateInfo es
-         , PeekChain es ) => FromCStruct (PipelineVertexInputStateCreateInfo es)
-
-
-type role PipelineViewportStateCreateInfo nominal
-data PipelineViewportStateCreateInfo (es :: [Type])
-
-instance ( Extendss PipelineViewportStateCreateInfo es
-         , PokeChain es ) => ToCStruct (PipelineViewportStateCreateInfo es)
-instance Show (Chain es) => Show (PipelineViewportStateCreateInfo es)
-
-instance ( Extendss PipelineViewportStateCreateInfo es
-         , PeekChain es ) => FromCStruct (PipelineViewportStateCreateInfo es)
-
-
-data SpecializationInfo
-
-instance ToCStruct SpecializationInfo
-instance Show SpecializationInfo
-
-instance FromCStruct SpecializationInfo
-
-
-data SpecializationMapEntry
-
-instance ToCStruct SpecializationMapEntry
-instance Show SpecializationMapEntry
-
-instance FromCStruct SpecializationMapEntry
-
-
-data StencilOpState
-
-instance ToCStruct StencilOpState
-instance Show StencilOpState
-
-instance FromCStruct StencilOpState
-
-
-data VertexInputAttributeDescription
-
-instance ToCStruct VertexInputAttributeDescription
-instance Show VertexInputAttributeDescription
-
-instance FromCStruct VertexInputAttributeDescription
-
-
-data VertexInputBindingDescription
-
-instance ToCStruct VertexInputBindingDescription
-instance Show VertexInputBindingDescription
-
-instance FromCStruct VertexInputBindingDescription
-
-
-data Viewport
-
-instance ToCStruct Viewport
-instance Show Viewport
-
-instance FromCStruct Viewport
-
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
@@ -98,10 +98,11 @@
 -- total host memory consumed.
 --
 -- Once created, a pipeline cache /can/ be passed to the
--- 'Vulkan.Core10.Pipeline.createGraphicsPipelines'
+-- 'Vulkan.Core10.GraphicsPipeline.createGraphicsPipelines'
 -- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.createRayTracingPipelinesKHR',
--- 'Vulkan.Extensions.VK_NV_ray_tracing.createRayTracingPipelinesNV', and
--- 'Vulkan.Core10.Pipeline.createComputePipelines' commands. If the
+-- 'Vulkan.Extensions.VK_NV_ray_tracing.createRayTracingPipelinesNV',
+-- 'Vulkan.Extensions.VK_ARM_data_graph.createDataGraphPipelinesARM', and
+-- 'Vulkan.Core10.ComputePipeline.createComputePipelines' commands. If the
 -- pipeline cache passed into these commands is not
 -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', the implementation will query
 -- it for possible reuse opportunities and update it with new content. The
@@ -112,7 +113,7 @@
 -- If @flags@ of @pCreateInfo@ includes
 -- 'Vulkan.Core10.Enums.PipelineCacheCreateFlagBits.PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT',
 -- all commands that modify the returned pipeline cache object /must/ be
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#fundamentals-threadingbehavior externally synchronized>.
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#fundamentals-threadingbehavior externally synchronized>.
 --
 -- Implementations /should/ make every effort to limit any critical
 -- sections to the actual accesses to the cache, which is expected to be
@@ -144,10 +145,14 @@
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -162,7 +167,7 @@
                        -- containing initial parameters for the pipeline cache object.
                        PipelineCacheCreateInfo
                     -> -- | @pAllocator@ controls host memory allocation as described in the
-                       -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                       -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
                        -- chapter.
                        ("allocator" ::: Maybe AllocationCallbacks)
                     -> io (PipelineCache)
@@ -254,7 +259,7 @@
                      -> -- | @pipelineCache@ is the handle of the pipeline cache to destroy.
                         PipelineCache
                      -> -- | @pAllocator@ controls host memory allocation as described in the
-                        -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                        -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
                         -- chapter.
                         ("allocator" ::: Maybe AllocationCallbacks)
                      -> io ()
@@ -305,13 +310,30 @@
 --
 -- The initial bytes written to @pData@ /must/ be a header as described in
 -- the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-cache-header Pipeline Cache Header>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-cache-header Pipeline Cache Header>
 -- section.
 --
 -- If @pDataSize@ is less than what is necessary to store this header,
 -- nothing will be written to @pData@ and zero will be written to
 -- @pDataSize@.
 --
+-- This query does not behave consistently with the behavior described in
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#fundamentals-binaryresults Opaque Binary Data Results>,
+-- for historical reasons.
+--
+-- If the amount of data available is larger than the passed @pDataSize@,
+-- the query returns up to the size of the passed buffer, and signals
+-- overflow with a 'Vulkan.Core10.Enums.Result.INCOMPLETE' success status
+-- instead of returning a
+-- 'Vulkan.Core10.Enums.Result.ERROR_NOT_ENOUGH_SPACE_KHR' error status.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkGetPipelineCacheData-pipelineCache-11834# @pipelineCache@
+--     /must/ not have been created with the @headerVersion@ member of
+--     'PipelineCacheCreateInfo'::@pInitialData@ equal to
+--     'Vulkan.Core10.Enums.PipelineCacheHeaderVersion.PIPELINE_CACHE_HEADER_VERSION_DATA_GRAPH_QCOM'
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-vkGetPipelineCacheData-device-parameter# @device@ /must/ be a
@@ -335,16 +357,20 @@
 --
 -- [<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'
 --
+--     -   '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_DEVICE_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -403,6 +429,21 @@
 -- -   #VUID-vkMergePipelineCaches-dstCache-00770# @dstCache@ /must/ not
 --     appear in the list of source caches
 --
+-- -   #VUID-vkMergePipelineCaches-dstCache-10202# Host access to
+--     @dstCache@ /must/ be externally synchronized if it was not created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCacheCreateFlagBits.PIPELINE_CACHE_CREATE_INTERNALLY_SYNCHRONIZED_MERGE_BIT_KHR'
+--
+-- -   #VUID-vkMergePipelineCaches-dstCache-11832# @dstCache@ /must/ not
+--     have been created with the @headerVersion@ member of
+--     'PipelineCacheCreateInfo'::@pInitialData@ equal to
+--     'Vulkan.Core10.Enums.PipelineCacheHeaderVersion.PIPELINE_CACHE_HEADER_VERSION_DATA_GRAPH_QCOM'
+--
+-- -   #VUID-vkMergePipelineCaches-headerVersion-11833# Each member of
+--     pSrcCaches /must/ not have been created with the @headerVersion@
+--     member of 'PipelineCacheCreateInfo'::@pInitialData@ equal to
+--     'Vulkan.Core10.Enums.PipelineCacheHeaderVersion.PIPELINE_CACHE_HEADER_VERSION_DATA_GRAPH_QCOM'
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-vkMergePipelineCaches-device-parameter# @device@ /must/ be a
@@ -425,10 +466,6 @@
 --     @pSrcCaches@ /must/ have been created, allocated, or retrieved from
 --     @device@
 --
--- == Host Synchronization
---
--- -   Host access to @dstCache@ /must/ be externally synchronized
---
 -- == Return Codes
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
@@ -437,10 +474,14 @@
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -474,6 +515,27 @@
 -- | VkPipelineCacheCreateInfo - Structure specifying parameters of a newly
 -- created pipeline cache
 --
+-- = Members
+--
+-- -   @sType@ is a 'Vulkan.Core10.Enums.StructureType.StructureType' value
+--     identifying this structure.
+--
+-- -   @pNext@ is @NULL@ or a pointer to a structure extending this
+--     structure.
+--
+-- -   @flags@ is a bitmask of
+--     'Vulkan.Core10.Enums.PipelineCacheCreateFlagBits.PipelineCacheCreateFlagBits'
+--     specifying the behavior of the pipeline cache.
+--
+-- -   @initialDataSize@ is the number of bytes in @pInitialData@. If
+--     @initialDataSize@ is zero, the pipeline cache will initially be
+--     empty.
+--
+-- -   @pInitialData@ is a pointer to previously retrieved pipeline cache
+--     data. If the pipeline cache data is incompatible (as defined below)
+--     with the device, the pipeline cache will be initially empty. If
+--     @initialDataSize@ is zero, @pInitialData@ is ignored.
+--
 -- == Valid Usage
 --
 -- -   #VUID-VkPipelineCacheCreateInfo-initialDataSize-00768# If
@@ -487,10 +549,20 @@
 --
 -- -   #VUID-VkPipelineCacheCreateInfo-pipelineCreationCacheControl-02892#
 --     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-pipelineCreationCacheControl pipelineCreationCacheControl>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-pipelineCreationCacheControl pipelineCreationCacheControl>
 --     feature is not enabled, @flags@ /must/ not include
 --     'Vulkan.Core10.Enums.PipelineCacheCreateFlagBits.PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT'
 --
+-- -   #VUID-VkPipelineCacheCreateInfo-maintenance8-10200# If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance8 maintenance8>
+--     feature is not enabled, @flags@ /must/ not include
+--     'Vulkan.Core10.Enums.PipelineCacheCreateFlagBits.PIPELINE_CACHE_CREATE_INTERNALLY_SYNCHRONIZED_MERGE_BIT_KHR'
+--
+-- -   #VUID-VkPipelineCacheCreateInfo-flags-10201# If @flags@ includes
+--     'Vulkan.Core10.Enums.PipelineCacheCreateFlagBits.PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT',
+--     it /must/ not include
+--     'Vulkan.Core10.Enums.PipelineCacheCreateFlagBits.PIPELINE_CACHE_CREATE_INTERNALLY_SYNCHRONIZED_MERGE_BIT_KHR'
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-VkPipelineCacheCreateInfo-sType-sType# @sType@ /must/ be
@@ -514,17 +586,11 @@
 -- 'Vulkan.Core10.Enums.PipelineCacheCreateFlagBits.PipelineCacheCreateFlags',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType', 'createPipelineCache'
 data PipelineCacheCreateInfo = PipelineCacheCreateInfo
-  { -- | @flags@ is a bitmask of
-    -- 'Vulkan.Core10.Enums.PipelineCacheCreateFlagBits.PipelineCacheCreateFlagBits'
-    -- specifying the behavior of the pipeline cache.
+  { -- No documentation found for Nested "VkPipelineCacheCreateInfo" "flags"
     flags :: PipelineCacheCreateFlags
-  , -- | @initialDataSize@ is the number of bytes in @pInitialData@. If
-    -- @initialDataSize@ is zero, the pipeline cache will initially be empty.
+  , -- No documentation found for Nested "VkPipelineCacheCreateInfo" "initialDataSize"
     initialDataSize :: Word64
-  , -- | @pInitialData@ is a pointer to previously retrieved pipeline cache data.
-    -- If the pipeline cache data is incompatible (as defined below) with the
-    -- device, the pipeline cache will be initially empty. If @initialDataSize@
-    -- is zero, @pInitialData@ is ignored.
+  , -- No documentation found for Nested "VkPipelineCacheCreateInfo" "pInitialData"
     initialData :: Ptr ()
   }
   deriving (Typeable)
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
@@ -100,10 +100,14 @@
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -118,7 +122,7 @@
                         -- specifying the state of the pipeline layout object.
                         PipelineLayoutCreateInfo
                      -> -- | @pAllocator@ controls host memory allocation as described in the
-                        -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                        -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
                         -- chapter.
                         ("allocator" ::: Maybe AllocationCallbacks)
                      -> io (PipelineLayout)
@@ -176,12 +180,6 @@
 --     provided when @pipelineLayout@ was created, @pAllocator@ /must/ be
 --     @NULL@
 --
--- -   #VUID-vkDestroyPipelineLayout-pipelineLayout-02004# @pipelineLayout@
---     /must/ not have been passed to any @vkCmd*@ command for any command
---     buffers that are still in the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>
---     when 'destroyPipelineLayout' is called
---
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-vkDestroyPipelineLayout-device-parameter# @device@ /must/ be a
@@ -216,7 +214,7 @@
                       -> -- | @pipelineLayout@ is the pipeline layout to destroy.
                          PipelineLayout
                       -> -- | @pAllocator@ controls host memory allocation as described in the
-                         -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                         -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
                          -- chapter.
                          ("allocator" ::: Maybe AllocationCallbacks)
                       -> io ()
@@ -408,16 +406,20 @@
 --     @pSetLayouts@, /must/ be less than or equal to
 --     'Vulkan.Core13.Promoted_From_VK_EXT_inline_uniform_block.PhysicalDeviceInlineUniformBlockProperties'::@maxPerStageDescriptorInlineUniformBlocks@
 --
--- -   #VUID-VkPipelineLayoutCreateInfo-descriptorType-03022# The total
---     number of descriptors with a @descriptorType@ of
+-- -   #VUID-VkPipelineLayoutCreateInfo-descriptorType-03022# If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-descriptorBindingSampledImageUpdateAfterBind descriptorBindingSampledImageUpdateAfterBind>
+--     feature is supported on the device, the total number of descriptors
+--     with a @descriptorType@ of
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLER' and
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER'
 --     accessible to any given shader stage across all elements of
 --     @pSetLayouts@ /must/ be less than or equal to
 --     'Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.PhysicalDeviceDescriptorIndexingProperties'::@maxPerStageDescriptorUpdateAfterBindSamplers@
 --
--- -   #VUID-VkPipelineLayoutCreateInfo-descriptorType-03023# The total
---     number of descriptors with a @descriptorType@ of
+-- -   #VUID-VkPipelineLayoutCreateInfo-descriptorType-03023# If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-descriptorBindingUniformBufferUpdateAfterBind descriptorBindingUniformBufferUpdateAfterBind>
+--     feature is supported on the device, the total number of descriptors
+--     with a @descriptorType@ of
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER'
 --     and
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC'
@@ -425,8 +427,10 @@
 --     @pSetLayouts@ /must/ be less than or equal to
 --     'Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.PhysicalDeviceDescriptorIndexingProperties'::@maxPerStageDescriptorUpdateAfterBindUniformBuffers@
 --
--- -   #VUID-VkPipelineLayoutCreateInfo-descriptorType-03024# The total
---     number of descriptors with a @descriptorType@ of
+-- -   #VUID-VkPipelineLayoutCreateInfo-descriptorType-03024# If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-descriptorBindingStorageBufferUpdateAfterBind descriptorBindingStorageBufferUpdateAfterBind>
+--     feature is supported on the device, the total number of descriptors
+--     with a @descriptorType@ of
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER'
 --     and
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC'
@@ -434,8 +438,10 @@
 --     @pSetLayouts@ /must/ be less than or equal to
 --     'Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.PhysicalDeviceDescriptorIndexingProperties'::@maxPerStageDescriptorUpdateAfterBindStorageBuffers@
 --
--- -   #VUID-VkPipelineLayoutCreateInfo-descriptorType-03025# The total
---     number of descriptors with a @descriptorType@ of
+-- -   #VUID-VkPipelineLayoutCreateInfo-descriptorType-03025# If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-descriptorBindingSampledImageUpdateAfterBind descriptorBindingSampledImageUpdateAfterBind>
+--     feature is supported on the device, the total number of descriptors
+--     with a @descriptorType@ of
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER',
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',
 --     and
@@ -444,8 +450,10 @@
 --     @pSetLayouts@ /must/ be less than or equal to
 --     'Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.PhysicalDeviceDescriptorIndexingProperties'::@maxPerStageDescriptorUpdateAfterBindSampledImages@
 --
--- -   #VUID-VkPipelineLayoutCreateInfo-descriptorType-03026# The total
---     number of descriptors with a @descriptorType@ of
+-- -   #VUID-VkPipelineLayoutCreateInfo-descriptorType-03026# If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-descriptorBindingStorageImageUpdateAfterBind descriptorBindingStorageImageUpdateAfterBind>
+--     feature is supported on the device, the total number of descriptors
+--     with a @descriptorType@ of
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',
 --     and
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'
@@ -453,15 +461,19 @@
 --     @pSetLayouts@ /must/ be less than or equal to
 --     'Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.PhysicalDeviceDescriptorIndexingProperties'::@maxPerStageDescriptorUpdateAfterBindStorageImages@
 --
--- -   #VUID-VkPipelineLayoutCreateInfo-descriptorType-03027# The total
---     number of descriptors with a @descriptorType@ of
+-- -   #VUID-VkPipelineLayoutCreateInfo-descriptorType-03027# If any
+--     element of @pSetLayouts@ is created with the
+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'
+--     bit set, the total number of descriptors with a @descriptorType@ of
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'
 --     accessible to any given shader stage across all elements of
 --     @pSetLayouts@ /must/ be less than or equal to
 --     'Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.PhysicalDeviceDescriptorIndexingProperties'::@maxPerStageDescriptorUpdateAfterBindInputAttachments@
 --
--- -   #VUID-VkPipelineLayoutCreateInfo-descriptorType-02215# The total
---     number of bindings with a @descriptorType@ of
+-- -   #VUID-VkPipelineLayoutCreateInfo-descriptorType-02215# If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-descriptorBindingInlineUniformBlockUpdateAfterBind descriptorBindingInlineUniformBlockUpdateAfterBind>
+--     feature is supported on the device, the total number of bindings
+--     with a @descriptorType@ of
 --     '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
@@ -487,7 +499,7 @@
 --     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxDescriptorSetUniformBuffers@
 --
 -- -   #VUID-VkPipelineLayoutCreateInfo-descriptorType-03030# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-maintenance7 maintenance7>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance7 maintenance7>
 --     feature is not enabled, the total number of descriptors in
 --     descriptor set layouts created without the
 --     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'
@@ -498,7 +510,7 @@
 --     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxDescriptorSetUniformBuffersDynamic@
 --
 -- -   #VUID-VkPipelineLayoutCreateInfo-maintenance7-10003# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-maintenance7 maintenance7>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance7 maintenance7>
 --     feature is enabled, the total number of descriptors in descriptor
 --     set layouts created without the
 --     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'
@@ -506,7 +518,7 @@
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC'
 --     accessible across all shader stages and across all elements of
 --     @pSetLayouts@ /must/ be less than or equal to
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxDescriptorSetTotalUniformBuffersDynamic ::maxDescriptorSetTotalUniformBuffersDynamic>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxDescriptorSetTotalUniformBuffersDynamic ::maxDescriptorSetTotalUniformBuffersDynamic>
 --
 -- -   #VUID-VkPipelineLayoutCreateInfo-descriptorType-03031# The total
 --     number of descriptors in descriptor set layouts created without the
@@ -518,7 +530,7 @@
 --     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxDescriptorSetStorageBuffers@
 --
 -- -   #VUID-VkPipelineLayoutCreateInfo-descriptorType-03032# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-maintenance7 maintenance7>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance7 maintenance7>
 --     feature is not enabled, the total number of descriptors in
 --     descriptor set layouts created without the
 --     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'
@@ -529,7 +541,7 @@
 --     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxDescriptorSetStorageBuffersDynamic@
 --
 -- -   #VUID-VkPipelineLayoutCreateInfo-maintenance7-10004# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-maintenance7 maintenance7>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance7 maintenance7>
 --     feature is enabled, the total number of descriptors in descriptor
 --     set layouts created without the
 --     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'
@@ -537,7 +549,7 @@
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC'
 --     accessible across all shader stages and across all elements of
 --     @pSetLayouts@ /must/ be less than or equal to
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxDescriptorSetTotalStorageBuffersDynamic ::maxDescriptorSetTotalStorageBuffersDynamic>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxDescriptorSetTotalStorageBuffersDynamic ::maxDescriptorSetTotalStorageBuffersDynamic>
 --
 -- -   #VUID-VkPipelineLayoutCreateInfo-None-10005# The total number of
 --     descriptors in descriptor set layouts created without the
@@ -548,16 +560,20 @@
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC'
 --     accessible across all shader stages and across all elements of
 --     @pSetLayouts@ /must/ be less than or equal to
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxDescriptorSetTotalBuffersDynamic ::maxDescriptorSetTotalBuffersDynamic>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxDescriptorSetTotalBuffersDynamic ::maxDescriptorSetTotalBuffersDynamic>
 --
--- -   #VUID-VkPipelineLayoutCreateInfo-pSetLayouts-10006# The total number
---     of descriptors of the type
+-- -   #VUID-VkPipelineLayoutCreateInfo-pSetLayouts-10006# If either the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-descriptorBindingStorageBufferUpdateAfterBind descriptorBindingStorageBufferUpdateAfterBind>
+--     or
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-descriptorBindingUniformBufferUpdateAfterBind descriptorBindingUniformBufferUpdateAfterBind>
+--     feature is supported on the device, the total number of descriptors
+--     of the type
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC'
 --     or
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC'
 --     accessible across all shader stages and across all elements of
 --     @pSetLayouts@ /must/ be less than or equal to
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxDescriptorSetUpdateAfterBindTotalBuffersDynamic ::maxDescriptorSetUpdateAfterBindTotalBuffersDynamic>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxDescriptorSetUpdateAfterBindTotalBuffersDynamic ::maxDescriptorSetUpdateAfterBindTotalBuffersDynamic>
 --
 -- -   #VUID-VkPipelineLayoutCreateInfo-descriptorType-03033# The total
 --     number of descriptors in descriptor set layouts created without the
@@ -600,23 +616,29 @@
 --     @pSetLayouts@ /must/ be less than or equal to
 --     'Vulkan.Core13.Promoted_From_VK_EXT_inline_uniform_block.PhysicalDeviceInlineUniformBlockProperties'::@maxDescriptorSetInlineUniformBlocks@
 --
--- -   #VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03036# The total number
---     of descriptors of the type
+-- -   #VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03036# If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-descriptorBindingSampledImageUpdateAfterBind descriptorBindingSampledImageUpdateAfterBind>
+--     feature is supported on the device, the total number of descriptors
+--     of the type
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLER' and
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER'
 --     accessible across all shader stages and across all elements of
 --     @pSetLayouts@ /must/ be less than or equal to
 --     'Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.PhysicalDeviceDescriptorIndexingProperties'::@maxDescriptorSetUpdateAfterBindSamplers@
 --
--- -   #VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03037# The total number
---     of descriptors of the type
+-- -   #VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03037# If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-descriptorBindingUniformBufferUpdateAfterBind descriptorBindingUniformBufferUpdateAfterBind>
+--     feature is supported on the device, the total number of descriptors
+--     of the type
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER'
 --     accessible across all shader stages and across all elements of
 --     @pSetLayouts@ /must/ be less than or equal to
 --     'Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.PhysicalDeviceDescriptorIndexingProperties'::@maxDescriptorSetUpdateAfterBindUniformBuffers@
 --
 -- -   #VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03038# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-maintenance7 maintenance7>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-descriptorBindingUniformBufferUpdateAfterBind descriptorBindingUniformBufferUpdateAfterBind>
+--     feature is supported on the device, and if the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance7 maintenance7>
 --     feature is not enabled, the total number of descriptors of the type
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC'
 --     accessible across all shader stages and across all elements of
@@ -624,22 +646,28 @@
 --     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxDescriptorSetUpdateAfterBindUniformBuffersDynamic@
 --
 -- -   #VUID-VkPipelineLayoutCreateInfo-maintenance7-10007# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-maintenance7 maintenance7>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-descriptorBindingUniformBufferUpdateAfterBind descriptorBindingUniformBufferUpdateAfterBind>
+--     feature is supported on the device, and the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance7 maintenance7>
 --     feature is enabled, the total number of descriptors of the type
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC'
 --     accessible across all shader stages and across all elements of
 --     @pSetLayouts@ /must/ be less than or equal to
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxDescriptorSetUpdateAfterBindTotalUniformBuffersDynamic ::maxDescriptorSetUpdateAfterBindTotalUniformBuffersDynamic>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxDescriptorSetUpdateAfterBindTotalUniformBuffersDynamic ::maxDescriptorSetUpdateAfterBindTotalUniformBuffersDynamic>
 --
--- -   #VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03039# The total number
---     of descriptors of the type
+-- -   #VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03039# If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-descriptorBindingStorageBufferUpdateAfterBind descriptorBindingStorageBufferUpdateAfterBind>
+--     feature is supported on the device, the total number of descriptors
+--     of the type
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER'
 --     accessible across all shader stages and across all elements of
 --     @pSetLayouts@ /must/ be less than or equal to
 --     'Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.PhysicalDeviceDescriptorIndexingProperties'::@maxDescriptorSetUpdateAfterBindStorageBuffers@
 --
 -- -   #VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03040# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-maintenance7 maintenance7>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-descriptorBindingStorageBufferUpdateAfterBind descriptorBindingStorageBufferUpdateAfterBind>
+--     feature is supported on the device, and if the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance7 maintenance7>
 --     feature is not enabled, the total number of descriptors of the type
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC'
 --     accessible across all shader stages and across all elements of
@@ -647,15 +675,19 @@
 --     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxDescriptorSetUpdateAfterBindStorageBuffersDynamic@
 --
 -- -   #VUID-VkPipelineLayoutCreateInfo-maintenance7-10008# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-maintenance7 maintenance7>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-descriptorBindingStorageBufferUpdateAfterBind descriptorBindingStorageBufferUpdateAfterBind>
+--     feature is supported on the device, and if the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance7 maintenance7>
 --     feature is enabled, the total number of descriptors of the type
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC'
 --     accessible across all shader stages and across all elements of
 --     @pSetLayouts@ /must/ be less than or equal to
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxDescriptorSetUpdateAfterBindTotalStorageBuffersDynamic ::maxDescriptorSetUpdateAfterBindTotalStorageBuffersDynamic>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxDescriptorSetUpdateAfterBindTotalStorageBuffersDynamic ::maxDescriptorSetUpdateAfterBindTotalStorageBuffersDynamic>
 --
--- -   #VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03041# The total number
---     of descriptors of the type
+-- -   #VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03041# If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-descriptorBindingSampledImageUpdateAfterBind descriptorBindingSampledImageUpdateAfterBind>
+--     feature is supported on the device, the total number of descriptors
+--     of the type
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER',
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',
 --     and
@@ -664,8 +696,10 @@
 --     @pSetLayouts@ /must/ be less than or equal to
 --     'Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.PhysicalDeviceDescriptorIndexingProperties'::@maxDescriptorSetUpdateAfterBindSampledImages@
 --
--- -   #VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03042# The total number
---     of descriptors of the type
+-- -   #VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03042# If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-descriptorBindingStorageImageUpdateAfterBind descriptorBindingStorageImageUpdateAfterBind>
+--     feature is supported on the device, the total number of descriptors
+--     of the type
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',
 --     and
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'
@@ -673,15 +707,19 @@
 --     @pSetLayouts@ /must/ be less than or equal to
 --     'Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.PhysicalDeviceDescriptorIndexingProperties'::@maxDescriptorSetUpdateAfterBindStorageImages@
 --
--- -   #VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03043# The total number
---     of descriptors of the type
+-- -   #VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03043# If any element
+--     of @pSetLayouts@ is created with the
+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'
+--     bit set, the total number of descriptors of the type
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'
 --     accessible across all shader stages and across all elements of
 --     @pSetLayouts@ /must/ be less than or equal to
 --     'Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.PhysicalDeviceDescriptorIndexingProperties'::@maxDescriptorSetUpdateAfterBindInputAttachments@
 --
--- -   #VUID-VkPipelineLayoutCreateInfo-descriptorType-02217# The total
---     number of bindings with a @descriptorType@ of
+-- -   #VUID-VkPipelineLayoutCreateInfo-descriptorType-02217# If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-descriptorBindingInlineUniformBlockUpdateAfterBind descriptorBindingInlineUniformBlockUpdateAfterBind>
+--     feature is supported on the device, the total number of bindings
+--     with a @descriptorType@ of
 --     '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
@@ -701,7 +739,7 @@
 -- -   #VUID-VkPipelineLayoutCreateInfo-pSetLayouts-00293# @pSetLayouts@
 --     /must/ not contain more than one descriptor set layout that was
 --     created with
---     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR'
+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT'
 --     set
 --
 -- -   #VUID-VkPipelineLayoutCreateInfo-descriptorType-03571# The total
@@ -750,7 +788,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxDescriptorSetSubsampledSamplers ::maxDescriptorSetSubsampledSamplers>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxDescriptorSetSubsampledSamplers ::maxDescriptorSetSubsampledSamplers>
 --
 -- -   #VUID-VkPipelineLayoutCreateInfo-pSetLayouts-04606# Any element of
 --     @pSetLayouts@ /must/ not have been created with the
@@ -759,7 +797,7 @@
 --
 -- -   #VUID-VkPipelineLayoutCreateInfo-graphicsPipelineLibrary-06753# If
 --     the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-graphicsPipelineLibrary graphicsPipelineLibrary>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-graphicsPipelineLibrary graphicsPipelineLibrary>
 --     feature is not enabled, elements of @pSetLayouts@ /must/ be valid
 --     'Vulkan.Core10.Handles.DescriptorSetLayout' objects
 --
@@ -771,6 +809,44 @@
 --     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
 --     bit set
 --
+-- -   #VUID-VkPipelineLayoutCreateInfo-pSetLayouts-09698# The total number
+--     of descriptors 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_TENSOR_ARM'
+--     accessible to any given shader stage across all elements of
+--     @pSetLayouts@ /must/ be less than or equal to
+--     'Vulkan.Extensions.VK_ARM_tensors.PhysicalDeviceTensorPropertiesARM'::@maxPerStageDescriptorSetStorageTensors@
+--
+-- -   #VUID-VkPipelineLayoutCreateInfo-pSetLayouts-09699# The total number
+--     of descriptors 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_TENSOR_ARM'
+--     accessible across all shader stages and across all elements of
+--     @pSetLayouts@ /must/ be less than or equal to
+--     'Vulkan.Extensions.VK_ARM_tensors.PhysicalDeviceTensorPropertiesARM'::@maxDescriptorSetStorageTensors@
+--
+-- -   #VUID-VkPipelineLayoutCreateInfo-pSetLayouts-09878# The total number
+--     of descriptors of the type
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     accessible across all shader stages and across all elements of
+--     @pSetLayouts@ /must/ be less than or equal to
+--     'Vulkan.Extensions.VK_ARM_tensors.PhysicalDeviceTensorPropertiesARM'::@maxDescriptorSetUpdateAfterBindStorageTensors@
+--
+-- -   #VUID-VkPipelineLayoutCreateInfo-descriptorType-09879# The total
+--     number of descriptors with a @descriptorType@ of
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     accessible to any given shader stage across all elements of
+--     @pSetLayouts@ /must/ be less than or equal to
+--     'Vulkan.Extensions.VK_ARM_tensors.PhysicalDeviceTensorPropertiesARM'::@maxPerStageDescriptorUpdateAfterBindStorageTensors@
+--
+-- -   #VUID-VkPipelineLayoutCreateInfo-flags-13352# If @flags@ has
+--     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_NO_TASK_SHADER_BIT_KHR'
+--     set, then
+--     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT'
+--     /must/ also be set
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-VkPipelineLayoutCreateInfo-sType-sType# @sType@ /must/ be
@@ -792,6 +868,24 @@
 --     a valid pointer to an array of @pushConstantRangeCount@ valid
 --     'PushConstantRange' structures
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Extensions.VK_KHR_maintenance6.BindDescriptorBufferEmbeddedSamplersInfoEXT'
+--
+--     -   'Vulkan.Core14.Promoted_From_VK_KHR_maintenance6.BindDescriptorSetsInfo'
+--
+--     -   'Vulkan.Extensions.VK_EXT_device_generated_commands.IndirectCommandsLayoutCreateInfoEXT'
+--
+--     -   'Vulkan.Core14.Promoted_From_VK_KHR_maintenance6.PushConstantsInfo'
+--
+--     -   'Vulkan.Core14.Promoted_From_VK_KHR_maintenance6.PushDescriptorSetInfo'
+--
+--     -   'Vulkan.Core14.Promoted_From_VK_KHR_maintenance6.PushDescriptorSetWithTemplateInfo'
+--
+--     -   'Vulkan.Extensions.VK_KHR_maintenance6.SetDescriptorBufferOffsetsInfoEXT'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -805,7 +899,9 @@
     -- specifying options for pipeline layout creation.
     flags :: PipelineLayoutCreateFlags
   , -- | @pSetLayouts@ is a pointer to an array of
-    -- 'Vulkan.Core10.Handles.DescriptorSetLayout' objects.
+    -- 'Vulkan.Core10.Handles.DescriptorSetLayout' objects. The implementation
+    -- /must/ not access these objects outside of the duration of the command
+    -- this structure is passed to.
     setLayouts :: Vector DescriptorSetLayout
   , -- | @pPushConstantRanges@ is a pointer to an array of 'PushConstantRange'
     -- structures defining a set of push constant ranges for use in a single
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
@@ -6,12 +6,13 @@
                             , getQueryPoolResults
                             , QueryPoolCreateInfo(..)
                             , QueryPool(..)
-                            , QueryPoolCreateFlags(..)
                             , QueryType(..)
                             , QueryResultFlagBits(..)
                             , QueryResultFlags
                             , QueryPipelineStatisticFlagBits(..)
                             , QueryPipelineStatisticFlags
+                            , QueryPoolCreateFlagBits(..)
+                            , QueryPoolCreateFlags
                             ) where
 
 import Vulkan.Internal.Utils (traceAroundEvent)
@@ -74,7 +75,7 @@
 import Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits (QueryPipelineStatisticFlags)
 import Vulkan.Core10.Handles (QueryPool)
 import Vulkan.Core10.Handles (QueryPool(..))
-import Vulkan.Core10.Enums.QueryPoolCreateFlags (QueryPoolCreateFlags)
+import Vulkan.Core10.Enums.QueryPoolCreateFlagBits (QueryPoolCreateFlags)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_performance_query (QueryPoolPerformanceCreateInfoKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_INTEL_performance_query (QueryPoolPerformanceQueryCreateInfoINTEL)
 import Vulkan.Core10.Enums.QueryResultFlagBits (QueryResultFlagBits(..))
@@ -90,7 +91,8 @@
 import Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits (QueryPipelineStatisticFlagBits(..))
 import Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits (QueryPipelineStatisticFlags)
 import Vulkan.Core10.Handles (QueryPool(..))
-import Vulkan.Core10.Enums.QueryPoolCreateFlags (QueryPoolCreateFlags(..))
+import Vulkan.Core10.Enums.QueryPoolCreateFlagBits (QueryPoolCreateFlagBits(..))
+import Vulkan.Core10.Enums.QueryPoolCreateFlagBits (QueryPoolCreateFlags)
 import Vulkan.Core10.Enums.QueryResultFlagBits (QueryResultFlagBits(..))
 import Vulkan.Core10.Enums.QueryResultFlagBits (QueryResultFlags)
 import Vulkan.Core10.Enums.QueryType (QueryType(..))
@@ -107,7 +109,8 @@
 --
 -- -   #VUID-vkCreateQueryPool-device-09663# @device@ /must/ support at
 --     least one queue family with one of the
---     @VK_QUEUE_VIDEO_ENCODE_BIT_KHR@, @VK_QUEUE_VIDEO_DECODE_BIT_KHR@,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits VK_QUEUE_VIDEO_ENCODE_BIT_KHR>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits VK_QUEUE_VIDEO_DECODE_BIT_KHR>,
 --     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', or
 --     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' capabilities
 --
@@ -126,6 +129,9 @@
 -- -   #VUID-vkCreateQueryPool-pQueryPool-parameter# @pQueryPool@ /must/ be
 --     a valid pointer to a 'Vulkan.Core10.Handles.QueryPool' handle
 --
+-- -   #VUID-vkCreateQueryPool-device-queuecount# The device /must/ have
+--     been created with at least @1@ queue
+--
 -- == Return Codes
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
@@ -134,10 +140,14 @@
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -152,7 +162,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                   -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
                    -- chapter.
                    ("allocator" ::: Maybe AllocationCallbacks)
                 -> io (QueryPool)
@@ -251,7 +261,7 @@
                  -> -- | @queryPool@ is the query pool to destroy.
                     QueryPool
                  -> -- | @pAllocator@ controls host memory allocation as described in the
-                    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
                     -- chapter.
                     ("allocator" ::: Maybe AllocationCallbacks)
                  -> io ()
@@ -283,12 +293,12 @@
 -- = Description
 --
 -- Any results written for a query are written according to
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#queries-operation-memorylayout a layout dependent on the query type>.
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#queries-operation-memorylayout a layout dependent on the query type>.
 --
 -- If no bits are set in @flags@, and all requested queries are in the
 -- available state, results are written as an array of 32-bit unsigned
 -- integer values. Behavior when not all queries are available is described
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#queries-wait-bit-not-set below>.
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#queries-wait-bit-not-set below>.
 --
 -- If
 -- 'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_WITH_AVAILABILITY_BIT'
@@ -302,14 +312,16 @@
 -- 'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_64_BIT' is set in
 -- @flags@. Otherwise, it is 32 bits.
 --
--- If @VK_QUERY_RESULT_WITH_STATUS_BIT_KHR@ is set, results for all queries
--- in @queryPool@ identified by @firstQuery@ and @queryCount@ are copied to
--- @pData@, along with an extra status value written directly after the
--- results of each query and interpreted as a signed integer. A value of
--- zero indicates that the results are not yet available. Positive values
--- indicate that the operations within the query completed successfully,
--- and the query results are valid. Negative values indicate that the
--- operations within the query completed unsuccessfully.
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueryResultFlagBits VK_QUERY_RESULT_WITH_STATUS_BIT_KHR>
+-- is set, results for all queries in @queryPool@ identified by
+-- @firstQuery@ and @queryCount@ are copied to @pData@, along with an extra
+-- status value written directly after the results of each query and
+-- interpreted as a signed integer. A value of zero indicates that the
+-- results are not yet available. Positive values indicate that the
+-- operations within the query completed successfully, and the query
+-- results are valid. Negative values indicate that the operations within
+-- the query completed unsuccessfully.
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueryResultStatusKHR VkQueryResultStatusKHR>
 -- defines specific meaning for values returned here, though
@@ -322,9 +334,11 @@
 --
 -- If
 -- 'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_WITH_AVAILABILITY_BIT'
--- or @VK_QUERY_RESULT_WITH_STATUS_BIT_KHR@ is set, the layout of data in
--- the buffer is a /(result,availability)/ or /(result,status)/ pair for
--- each query returned, and @stride@ is the stride between each pair.
+-- or
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueryResultFlagBits VK_QUERY_RESULT_WITH_STATUS_BIT_KHR>
+-- is set, the layout of data in the buffer is a /(result,availability)/ or
+-- /(result,status)/ pair for each query returned, and @stride@ is the
+-- stride between each pair.
 --
 -- Results for any available query written by this command are final and
 -- represent the final result of the query. If
@@ -343,7 +357,7 @@
 -- status values are written as an array of 32-bit values. If an unsigned
 -- integer query’s value overflows the result type, the value /may/ either
 -- wrap or saturate. If the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-maintenance7 maintenance7>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance7 maintenance7>
 -- feature is enabled, for an unsigned integer query, the 32-bit result
 -- value /must/ be equal to the 32 least significant bits of the equivalent
 -- 64-bit result value. If a signed integer query’s value overflows the
@@ -353,15 +367,18 @@
 -- If 'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_WAIT_BIT' is
 -- set, this command defines an execution dependency with any earlier
 -- commands that writes one of the identified queries. The first
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
 -- includes all instances of
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdEndQuery',
 -- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdEndQueryIndexedEXT',
+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.cmdWriteAccelerationStructuresPropertiesKHR',
+-- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdWriteAccelerationStructuresPropertiesNV',
+-- 'Vulkan.Extensions.VK_EXT_opacity_micromap.cmdWriteMicromapsPropertiesEXT',
 -- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.cmdWriteTimestamp2',
 -- and 'Vulkan.Core10.CommandBufferBuilding.cmdWriteTimestamp' that
 -- reference any query in @queryPool@ indicated by @firstQuery@ and
 -- @queryCount@. The second
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
 -- includes the host operations of this command.
 --
 -- If 'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_WAIT_BIT' is
@@ -397,7 +414,8 @@
 -- command has been executed since the last use of the query.
 --
 -- A similar situation can arise with the
--- @VK_QUERY_RESULT_WITH_STATUS_BIT_KHR@ flag.
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueryResultFlagBits VK_QUERY_RESULT_WITH_STATUS_BIT_KHR>
+-- flag.
 --
 -- Applications /can/ double-buffer query pool usage, with a pool per
 -- frame, and reset queries at the end of the frame in which they are read.
@@ -420,12 +438,20 @@
 --     not contain
 --     'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_PARTIAL_BIT'
 --
+-- -   #VUID-vkGetQueryPoolResults-queryType-12424# If the @queryType@ used
+--     to create @queryPool@ was
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TIME_ELAPSED_QCOM',
+--     @flags@ /must/ not contain
+--     'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_PARTIAL_BIT'
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueryResultFlagBits VK_QUERY_RESULT_WITH_STATUS_BIT_KHR>
+--
 -- -   #VUID-vkGetQueryPoolResults-queryType-09440# 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',
---     @VK_QUERY_RESULT_WITH_STATUS_BIT_KHR@,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueryResultFlagBits VK_QUERY_RESULT_WITH_STATUS_BIT_KHR>,
 --     'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_PARTIAL_BIT',
 --     or 'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_64_BIT'
 --
@@ -436,12 +462,23 @@
 --     retrieved via a call to
 --     'Vulkan.Extensions.VK_KHR_performance_query.getPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR'
 --
+-- -   #VUID-vkGetQueryPoolResults-queryType-11874# If the @queryType@ used
+--     to create @queryPool@ was not
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueryType VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueryType VK_QUERY_TYPE_VIDEO_ENCODE_FEEDBACK_KHR>,
+--     then @flags@ /must/ not include
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueryResultFlagBits VK_QUERY_RESULT_WITH_STATUS_BIT_KHR>
+--
 -- -   #VUID-vkGetQueryPoolResults-queryType-09442# If the @queryType@ used
---     to create @queryPool@ was @VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR@,
---     then @flags@ /must/ include @VK_QUERY_RESULT_WITH_STATUS_BIT_KHR@
+--     to create @queryPool@ was
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueryType VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR>,
+--     then @flags@ /must/ include
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueryResultFlagBits VK_QUERY_RESULT_WITH_STATUS_BIT_KHR>
 --
 -- -   #VUID-vkGetQueryPoolResults-flags-09443# If @flags@ includes
---     @VK_QUERY_RESULT_WITH_STATUS_BIT_KHR@, then it /must/ not include
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueryResultFlagBits VK_QUERY_RESULT_WITH_STATUS_BIT_KHR>,
+--     then it /must/ not include
 --     'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_WITH_AVAILABILITY_BIT'
 --
 -- -   #VUID-vkGetQueryPoolResults-None-09401# All queries used by the
@@ -452,13 +489,27 @@
 --     set in @flags@ and the @queryType@ used to create @queryPool@ was
 --     not
 --     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR',
---     then @pData@ and @stride@ /must/ be multiples of @4@
+--     then @pData@ /must/ be aligned to a multiple of @4@
 --
+-- -   #VUID-vkGetQueryPoolResults-queryCount-12251# If @queryCount@ is
+--     greater than 1,
+--     'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_64_BIT' is not
+--     set in @flags@ and the @queryType@ used to create @queryPool@ was
+--     not
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR',
+--     then @stride@ /must/ be a multiple of @4@
+--
 -- -   #VUID-vkGetQueryPoolResults-flags-00815# If
 --     'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_64_BIT' is set
---     in @flags@ then @pData@ and @stride@ /must/ be multiples of @8@
+--     in @flags@ then @pData@ /must/ be aligned to a multiple of @8@
 --
--- -   #VUID-vkGetQueryPoolResults-stride-08993# If
+-- -   #VUID-vkGetQueryPoolResults-queryCount-12252# If @queryCount@ is
+--     greater than 1 and
+--     'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_64_BIT' is set
+--     in @flags@, then @stride@ /must/ be a multiple of @8@
+--
+-- -   #VUID-vkGetQueryPoolResults-stride-08993# If @queryCount@ is greater
+--     than 1 and
 --     'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_WITH_AVAILABILITY_BIT'
 --     is set, @stride@ /must/ be large enough to contain the unsigned
 --     integer representing availability or status in addition to the query
@@ -467,12 +518,18 @@
 -- -   #VUID-vkGetQueryPoolResults-queryType-03229# If the @queryType@ used
 --     to create @queryPool@ was
 --     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR',
---     then @pData@ and @stride@ /must/ be multiples of the size of
+--     then @pData@ /must/ be aligned to a multiple of the size of
 --     'Vulkan.Extensions.VK_KHR_performance_query.PerformanceCounterResultKHR'
 --
--- -   #VUID-vkGetQueryPoolResults-queryType-04519# If the @queryType@ used
---     to create @queryPool@ was
+-- -   #VUID-vkGetQueryPoolResults-queryCount-12253# If @queryCount@ is
+--     greater than 1 and the @queryType@ used to create @queryPool@ was
 --     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR',
+--     then @stride@ /must/ be a multiple of the size of
+--     'Vulkan.Extensions.VK_KHR_performance_query.PerformanceCounterResultKHR'
+--
+-- -   #VUID-vkGetQueryPoolResults-queryType-04519# If @queryCount@ is
+--     greater than 1 and the @queryType@ used to create @queryPool@ was
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR',
 --     then @stride@ /must/ be large enough to contain the
 --     'Vulkan.Extensions.VK_KHR_performance_query.QueryPoolPerformanceCreateInfoKHR'::@counterIndexCount@
 --     used to create @queryPool@ times the size of
@@ -480,7 +537,7 @@
 --
 -- -   #VUID-vkGetQueryPoolResults-dataSize-00817# @dataSize@ /must/ be
 --     large enough to contain the result of each query, as described
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#queries-operation-memorylayout here>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#queries-operation-memorylayout here>
 --
 -- == Valid Usage (Implicit)
 --
@@ -507,18 +564,22 @@
 --
 -- [<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.NOT_READY'
 --
+--     -   '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_DEVICE_LOST'
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -578,25 +639,25 @@
 -- | VkQueryPoolCreateInfo - Structure specifying parameters of a newly
 -- created query pool
 --
--- = Description
---
--- @pipelineStatistics@ is ignored if @queryType@ is not
--- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PIPELINE_STATISTICS'.
---
 -- == Valid Usage
 --
 -- -   #VUID-VkQueryPoolCreateInfo-queryType-00791# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-pipelineStatisticsQuery pipelineStatisticsQuery>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-pipelineStatisticsQuery pipelineStatisticsQuery>
 --     feature is not enabled, @queryType@ /must/ not be
 --     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PIPELINE_STATISTICS'
 --
+-- -   #VUID-VkQueryPoolCreateInfo-queryType-12416# If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-elapsedTimerQuery elapsedTimerQuery>
+--     feature is not enabled, @queryType@ /must/ not be
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TIME_ELAPSED_QCOM'
+--
 -- -   #VUID-VkQueryPoolCreateInfo-meshShaderQueries-07068# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-meshShaderQueries meshShaderQueries>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-meshShaderQueries meshShaderQueries>
 --     feature is not enabled, @queryType@ /must/ not be
 --     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_MESH_PRIMITIVES_GENERATED_EXT'
 --
 -- -   #VUID-VkQueryPoolCreateInfo-meshShaderQueries-07069# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-meshShaderQueries meshShaderQueries>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-meshShaderQueries meshShaderQueries>
 --     feature is not enabled, and @queryType@ is
 --     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PIPELINE_STATISTICS',
 --     @pipelineStatistics@ /must/ not contain
@@ -623,21 +684,37 @@
 -- -   #VUID-VkQueryPoolCreateInfo-queryCount-02763# @queryCount@ /must/ be
 --     greater than 0
 --
+-- -   #VUID-VkQueryPoolCreateInfo-queryType-11839# If @queryType@ is
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueryType VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR>,
+--     then at least one of the queue families of the device /must/ support
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#queries-result-status-only result status queries>,
+--     as indicated by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFamilyQueryResultStatusPropertiesKHR VkQueueFamilyQueryResultStatusPropertiesKHR>::@queryResultStatusSupport@
+--
+-- -   #VUID-VkQueryPoolCreateInfo-pNext-10779# If the @pNext@ chain
+--     includes a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoProfileInfoKHR VkVideoProfileInfoKHR>
+--     structure and its @videoCodecOperation@ member is
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoCodecOperationFlagBitsKHR VK_VIDEO_CODEC_OPERATION_DECODE_VP9_BIT_KHR>,
+--     then the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-videoDecodeVP9 videoDecodeVP9>
+--     feature /must/ be enabled
+--
 -- -   #VUID-VkQueryPoolCreateInfo-queryType-07133# If @queryType@ is
---     @VK_QUERY_TYPE_VIDEO_ENCODE_FEEDBACK_KHR@, then the @pNext@ chain
---     /must/ include a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueryType VK_QUERY_TYPE_VIDEO_ENCODE_FEEDBACK_KHR>,
+--     then the @pNext@ chain /must/ include a
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoProfileInfoKHR VkVideoProfileInfoKHR>
 --     structure with @videoCodecOperation@ specifying an encode operation
 --
 -- -   #VUID-VkQueryPoolCreateInfo-queryType-07906# If @queryType@ is
---     @VK_QUERY_TYPE_VIDEO_ENCODE_FEEDBACK_KHR@, then the @pNext@ chain
---     /must/ include a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueryType VK_QUERY_TYPE_VIDEO_ENCODE_FEEDBACK_KHR>,
+--     then the @pNext@ chain /must/ include a
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueryPoolVideoEncodeFeedbackCreateInfoKHR VkQueryPoolVideoEncodeFeedbackCreateInfoKHR>
 --     structure
 --
 -- -   #VUID-VkQueryPoolCreateInfo-queryType-07907# If @queryType@ is
---     @VK_QUERY_TYPE_VIDEO_ENCODE_FEEDBACK_KHR@, and the @pNext@ chain
---     includes a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueryType VK_QUERY_TYPE_VIDEO_ENCODE_FEEDBACK_KHR>,
+--     and the @pNext@ chain includes a
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoProfileInfoKHR VkVideoProfileInfoKHR>
 --     structure and a
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueryPoolVideoEncodeFeedbackCreateInfoKHR VkQueryPoolVideoEncodeFeedbackCreateInfoKHR>
@@ -648,7 +725,7 @@
 --     as returned by
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkGetPhysicalDeviceVideoCapabilitiesKHR vkGetPhysicalDeviceVideoCapabilitiesKHR>
 --     for the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#video-profiles video profile>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#video-profiles video profile>
 --     described by
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoProfileInfoKHR VkVideoProfileInfoKHR>
 --     and its @pNext@ chain
@@ -657,10 +734,18 @@
 --     includes a
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoProfileInfoKHR VkVideoProfileInfoKHR>
 --     structure and its @videoCodecOperation@ member is
---     @VK_VIDEO_CODEC_OPERATION_ENCODE_AV1_BIT_KHR@, then the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-videoEncodeAV1 videoEncodeAV1>
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoCodecOperationFlagBitsKHR VK_VIDEO_CODEC_OPERATION_ENCODE_AV1_BIT_KHR>,
+--     then the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-videoEncodeAV1 videoEncodeAV1>
 --     feature /must/ be enabled
 --
+-- -   #VUID-VkQueryPoolCreateInfo-pNext-10918# If the @pNext@ chain
+--     includes a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeProfileRgbConversionInfoVALVE VkVideoEncodeProfileRgbConversionInfoVALVE>
+--     structure, then the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-videoEncodeRgbConversion videoEncodeRgbConversion>
+--     feature /must/ be enabled
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-VkQueryPoolCreateInfo-sType-sType# @sType@ /must/ be
@@ -676,6 +761,7 @@
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH264ProfileInfoKHR VkVideoDecodeH264ProfileInfoKHR>,
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH265ProfileInfoKHR VkVideoDecodeH265ProfileInfoKHR>,
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeUsageInfoKHR VkVideoDecodeUsageInfoKHR>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeVP9ProfileInfoKHR VkVideoDecodeVP9ProfileInfoKHR>,
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeAV1ProfileInfoKHR VkVideoEncodeAV1ProfileInfoKHR>,
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264ProfileInfoKHR VkVideoEncodeH264ProfileInfoKHR>,
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH265ProfileInfoKHR VkVideoEncodeH265ProfileInfoKHR>,
@@ -684,9 +770,12 @@
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoProfileInfoKHR VkVideoProfileInfoKHR>
 --
 -- -   #VUID-VkQueryPoolCreateInfo-sType-unique# The @sType@ value of each
---     struct in the @pNext@ chain /must/ be unique
+--     structure in the @pNext@ chain /must/ be unique
 --
--- -   #VUID-VkQueryPoolCreateInfo-flags-zerobitmask# @flags@ /must/ be @0@
+-- -   #VUID-VkQueryPoolCreateInfo-flags-parameter# @flags@ /must/ be a
+--     valid combination of
+--     'Vulkan.Core10.Enums.QueryPoolCreateFlagBits.QueryPoolCreateFlagBits'
+--     values
 --
 -- -   #VUID-VkQueryPoolCreateInfo-queryType-parameter# @queryType@ /must/
 --     be a valid 'Vulkan.Core10.Enums.QueryType.QueryType' value
@@ -695,13 +784,14 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
 -- 'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QueryPipelineStatisticFlags',
--- 'Vulkan.Core10.Enums.QueryPoolCreateFlags.QueryPoolCreateFlags',
+-- 'Vulkan.Core10.Enums.QueryPoolCreateFlagBits.QueryPoolCreateFlags',
 -- 'Vulkan.Core10.Enums.QueryType.QueryType',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType', 'createQueryPool'
 data QueryPoolCreateInfo (es :: [Type]) = QueryPoolCreateInfo
   { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
-  , -- | @flags@ is reserved for future use.
+  , -- | @flags@ is a bitmask of
+    -- 'Vulkan.Core10.Enums.QueryPoolCreateFlagBits.QueryPoolCreateFlagBits'
     flags :: QueryPoolCreateFlags
   , -- | @queryType@ is a 'Vulkan.Core10.Enums.QueryType.QueryType' value
     -- specifying the type of queries managed by the pool.
@@ -712,7 +802,9 @@
     -- 'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QueryPipelineStatisticFlagBits'
     -- specifying which counters will be returned in queries on the new pool,
     -- as described below in
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#queries-pipestats>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#queries-pipestats>.
+    -- @pipelineStatistics@ is ignored if @queryType@ is not
+    -- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PIPELINE_STATISTICS'.
     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
@@ -72,6 +72,7 @@
 import Vulkan.Core10.Handles (Fence)
 import Vulkan.Core10.Handles (Fence(..))
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_frame_boundary (FrameBoundaryEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_tensors (FrameBoundaryTensorsARM)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_low_latency2 (LatencySubmissionPresentIdNV)
 import Vulkan.CStruct.Extends (PeekChain)
 import Vulkan.CStruct.Extends (PeekChain(..))
@@ -89,6 +90,7 @@
 import Vulkan.Core10.Handles (Semaphore)
 import Vulkan.CStruct.Extends (SomeStruct)
 import Vulkan.Core10.Enums.StructureType (StructureType)
+import {-# SOURCE #-} Vulkan.Extensions.VK_SEC_throttle_hint (ThrottleHintSubmitInfoSEC)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore (TimelineSemaphoreSubmitInfo)
 import Vulkan.Exception (VulkanException(..))
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_win32_keyed_mutex (Win32KeyedMutexAcquireReleaseInfoKHR)
@@ -184,48 +186,59 @@
 -- = Description
 --
 -- 'queueSubmit' is a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-submission queue submission command>,
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
 --
--- Fence and semaphore operations submitted with 'queueSubmit' 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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-semaphores semaphore>
--- and
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-fences fence>
--- sections of
--- <https://registry.khronos.org/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-semaphores-waiting semaphore wait operation>
--- section of
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization the synchronization chapter>.
---
 -- The order that batches appear in @pSubmits@ is used to determine
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-submission-order submission order>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-submission-order submission order>,
 -- and thus all the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-implicit implicit ordering guarantees>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-implicit implicit ordering guarantees>
 -- that respect it. Other than these implicit ordering guarantees and any
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization explicit synchronization primitives>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization explicit synchronization primitives>,
 -- these batches /may/ overlap or otherwise execute out of order.
 --
+-- Fence operations submitted with 'queueSubmit' 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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-fences fence>
+-- sections of
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization the synchronization chapter>.
+--
+-- The first
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+-- of each
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operation>
+-- defined by this command includes every command in the same batch that
+-- the signal operation is defined in, and all commands that occur earlier
+-- in
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-submission-order submission order>.
+--
+-- The second
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+-- of each
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-semaphores-waiting semaphore wait operation>
+-- defined by this command includes every command in the same batch that
+-- the wait operation is defined in, and all commands that occur later in
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-submission-order submission order>.
+-- The scope is limited by the @pWaitDstStageMask@ for each batch, as
+-- described in 'SubmitInfo'.
+--
 -- If any command buffer submitted to this queue is in the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle executable state>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#commandbuffers-lifecycle executable state>,
 -- it is moved to the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle pending state>.
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#commandbuffers-lifecycle pending state>.
 -- Once execution of all submissions of a command buffer complete, it moves
 -- from the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle pending state>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#commandbuffers-lifecycle pending state>,
 -- back to the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle executable state>.
+-- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle invalid state>.
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#commandbuffers-lifecycle invalid state>.
 --
 -- If 'queueSubmit' fails, it /may/ return
 -- 'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY' or
@@ -237,7 +250,7 @@
 -- way that the implementation is unable to make that guarantee, the
 -- implementation /must/ return
 -- 'Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST'. See
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-lost-device Lost Device>.
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#devsandqueues-lost-device Lost Device>.
 --
 -- == Valid Usage
 --
@@ -264,7 +277,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages-supported table of supported pipeline stages>
+--     <https://registry.khronos.org/vulkan/specs/latest/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
@@ -283,34 +296,34 @@
 --     'Vulkan.Core12.Enums.SemaphoreType.SEMAPHORE_TYPE_BINARY' /must/
 --     reference a semaphore signal operation that has been submitted for
 --     execution and any
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operations>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operations>
 --     on which it depends /must/ have also been submitted for execution
 --
 -- -   #VUID-vkQueueSubmit-pCommandBuffers-00070# Each element of the
 --     @pCommandBuffers@ member of each element of @pSubmits@ /must/ be in
 --     the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle pending or executable state>
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle pending state>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#commandbuffers-lifecycle pending state>
 --
 -- -   #VUID-vkQueueSubmit-pCommandBuffers-00072# Any
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-secondary secondary command buffers recorded>
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle pending or executable state>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#commandbuffers-lifecycle pending or executable state>
 --
 -- -   #VUID-vkQueueSubmit-pCommandBuffers-00073# If any
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-secondary secondary command buffers recorded>
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle pending state>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#commandbuffers-lifecycle pending state>
 --
 -- -   #VUID-vkQueueSubmit-pCommandBuffers-00074# Each element of the
 --     @pCommandBuffers@ member of each element of @pSubmits@ /must/ have
@@ -319,22 +332,28 @@
 --
 -- -   #VUID-vkQueueSubmit-pSubmits-02207# If any element of
 --     @pSubmits->pCommandBuffers@ includes a
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-queue-transfers-acquire Queue Family Ownership Transfer Acquire Operation>,
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-queue-transfers-acquire Queue Family Ownership Transfer Acquire Operation>,
 --     there /must/ exist a previously submitted
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-queue-transfers-release Queue Family Ownership Transfer Release Operation>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-queue-transfers-release Queue Family Ownership 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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-queue-transfers-acquire acquire operations>,
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-queue-transfers-acquire acquire operations>,
 --     and which happens-before the acquire operation
 --
+-- -   #VUID-vkQueueSubmit-pSubmits-10911# If any element of
+--     @pSubmits->pCommandBuffers@ includes a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-queue-transfers-acquire Queue Family Ownership Transfer Acquire Operation>,
+--     the affected resource /must/ not be modified in any way between the
+--     last matching release operation and the acquire operation
+--
 -- -   #VUID-vkQueueSubmit-pCommandBuffers-03220# If a command recorded
 --     into any element of @pCommandBuffers@ 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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#profiling-lock profiling lock>
+--     <https://registry.khronos.org/vulkan/specs/latest/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
@@ -377,7 +396,9 @@
 --
 -- == Host Synchronization
 --
--- -   Host access to @queue@ /must/ be externally synchronized
+-- -   Host access to @queue@ /must/ be externally synchronized if it was
+--     not created with
+--     'Vulkan.Core10.Enums.DeviceQueueCreateFlagBits.DEVICE_QUEUE_CREATE_INTERNALLY_SYNCHRONIZED_BIT_KHR'
 --
 -- -   Host access to @fence@ /must/ be externally synchronized
 --
@@ -399,12 +420,16 @@
 --
 -- [<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_DEVICE_LOST'
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -415,12 +440,18 @@
             => -- | @queue@ is the queue that the command buffers will be submitted to.
                Queue
             -> -- | @pSubmits@ is a pointer to an array of 'SubmitInfo' structures, each
-               -- specifying a command buffer submission batch.
+               -- specifying a command buffer submission batch. Command buffers and
+               -- semaphores specified in this array /may/ be accessed at any point until
+               -- the
+               -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#devsandqueues-submission queue operations>
+               -- they define complete execution on the device.
                ("submits" ::: Vector (SomeStruct SubmitInfo))
             -> -- | @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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-fences-signaling fence signal operation>.
+               -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-fences-signaling fence signal operation>.
+               -- If it is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @fence@ /may/ be
+               -- accessed at any point until this command completes on the device.
                Fence
             -> io ()
 queueSubmit queue submits fence = liftIO . evalContT $ do
@@ -471,11 +502,15 @@
 --
 -- 'queueWaitIdle' is equivalent to having submitted a valid fence to every
 -- previously executed
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-submission queue submission command>
+-- <https://registry.khronos.org/vulkan/specs/latest/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'.
 --
+-- Even though 'Vulkan.Extensions.VK_KHR_swapchain.queuePresentKHR' does
+-- not have a fence parameter, it does accept a fence through
+-- 'Vulkan.Extensions.VK_EXT_swapchain_maintenance1.SwapchainPresentFenceInfoEXT'.
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-vkQueueWaitIdle-queue-parameter# @queue@ /must/ be a valid
@@ -483,7 +518,9 @@
 --
 -- == Host Synchronization
 --
--- -   Host access to @queue@ /must/ be externally synchronized
+-- -   Host access to @queue@ /must/ be externally synchronized if it was
+--     not created with
+--     'Vulkan.Core10.Enums.DeviceQueueCreateFlagBits.DEVICE_QUEUE_CREATE_INTERNALLY_SYNCHRONIZED_BIT_KHR'
 --
 -- == Command Properties
 --
@@ -503,12 +540,16 @@
 --
 -- [<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_DEVICE_LOST'
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -571,7 +612,9 @@
 -- == Host Synchronization
 --
 -- -   Host access to all 'Vulkan.Core10.Handles.Queue' objects created
---     from @device@ /must/ be externally synchronized
+--     from @device@ that are not created with
+--     'Vulkan.Core10.Enums.DeviceQueueCreateFlagBits.DEVICE_QUEUE_CREATE_INTERNALLY_SYNCHRONIZED_BIT_KHR'
+--     /must/ be externally synchronized
 --
 -- == Return Codes
 --
@@ -581,12 +624,16 @@
 --
 -- [<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_DEVICE_LOST'
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -613,13 +660,74 @@
 --
 -- The order that command buffers appear in @pCommandBuffers@ is used to
 -- determine
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-submission-order submission order>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-submission-order submission order>,
 -- and thus all the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-implicit implicit ordering guarantees>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-implicit implicit ordering guarantees>
 -- that respect it. Other than these implicit ordering guarantees and any
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization explicit synchronization primitives>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization explicit synchronization primitives>,
 -- these command buffers /may/ overlap or otherwise execute out of order.
 --
+-- The second
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+-- of each
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-semaphores-waiting semaphore wait operation>
+-- defined by this structure is limited to operations in stages indicated
+-- by the corresponding element of @pWaitDstStageMask@.
+--
+-- A common scenario for using @pWaitDstStageMask@ with values other than
+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ALL_COMMANDS_BIT'
+-- is when synchronizing a window system presentation operation against
+-- subsequent command buffers which render the next frame. In this case, a
+-- presentation image /must/ not be overwritten until the presentation
+-- operation completes, but other pipeline stages /can/ execute without
+-- waiting. A mask of
+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT'
+-- prevents subsequent color attachment writes from executing until the
+-- semaphore signals. Some implementations /may/ be able to execute
+-- transfer operations and\/or pre-rasterization work before the semaphore
+-- is signaled.
+--
+-- If an image layout transition needs to be performed on a presentable
+-- image before it is used in a framebuffer, that /can/ be performed as the
+-- first operation submitted to the queue after acquiring the image, and
+-- /should/ not prevent other work from overlapping with the presentation
+-- operation. For example, a
+-- 'Vulkan.Core10.CommandBufferBuilding.ImageMemoryBarrier' could use:
+--
+-- -   @srcStageMask@ =
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT'
+--
+-- -   @srcAccessMask@ = 0
+--
+-- -   @dstStageMask@ =
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT'
+--
+-- -   @dstAccessMask@ =
+--     'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_COLOR_ATTACHMENT_READ_BIT'
+--     |
+--     'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_COLOR_ATTACHMENT_WRITE_BIT'.
+--
+-- -   @oldLayout@ =
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_PRESENT_SRC_KHR'
+--
+-- -   @newLayout@ =
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL'
+--
+-- Alternatively, @oldLayout@ /can/ be
+-- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_UNDEFINED', if the image’s
+-- contents need not be preserved.
+--
+-- This barrier accomplishes a dependency chain between previous
+-- presentation operations and subsequent color attachment output
+-- operations, with the layout transition performed in between, and does
+-- not introduce a dependency between previous work and any
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader stage>s.
+-- More precisely, the semaphore signals after the presentation operation
+-- completes, the semaphore wait stalls the
+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT'
+-- stage, and there is a dependency from that same stage to itself with the
+-- layout transition performed in between.
+--
 -- == Valid Usage
 --
 -- -   #VUID-VkSubmitInfo-pWaitDstStageMask-04090# If the
@@ -677,6 +785,11 @@
 --     feature are enabled, @pWaitDstStageMask@ /must/ not contain
 --     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR'
 --
+-- -   #VUID-VkSubmitInfo-pWaitDstStageMask-10754# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-accelerationStructure accelerationStructure>
+--     feature is not enabled, @pWaitDstStageMask@ /must/ not contain
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
+--
 -- -   #VUID-VkSubmitInfo-pCommandBuffers-00075# Each element of
 --     @pCommandBuffers@ /must/ not have been allocated with
 --     'Vulkan.Core10.Enums.CommandBufferLevel.COMMAND_BUFFER_LEVEL_SECONDARY'
@@ -719,7 +832,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operation>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operation>
 --     is executed
 --
 -- -   #VUID-VkSubmitInfo-pWaitSemaphores-03243# For each element of
@@ -731,7 +844,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxTimelineSemaphoreValueDifference maxTimelineSemaphoreValueDifference>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxTimelineSemaphoreValueDifference maxTimelineSemaphoreValueDifference>
 --
 -- -   #VUID-VkSubmitInfo-pSignalSemaphores-03244# For each element of
 --     @pSignalSemaphores@ created with a
@@ -742,7 +855,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxTimelineSemaphoreValueDifference maxTimelineSemaphoreValueDifference>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxTimelineSemaphoreValueDifference maxTimelineSemaphoreValueDifference>
 --
 -- -   #VUID-VkSubmitInfo-pNext-04120# If the @pNext@ chain of this
 --     structure does not include a
@@ -760,41 +873,67 @@
 --
 -- -   #VUID-VkSubmitInfo-pCommandBuffers-06193# If @pCommandBuffers@
 --     contains any
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-suspension resumed render pass instances>,
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-suspension suspended render pass instances>,
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-suspension suspended render pass instances>,
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-suspension suspended render pass instances>,
 --     there /must/ be no action or synchronization commands executed in a
 --     primary or
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-secondary secondary>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#commandbuffers-secondary secondary>
 --     command buffer between that render pass instance and the render pass
 --     instance that resumes it
 --
 -- -   #VUID-VkSubmitInfo-pCommandBuffers-06016# If @pCommandBuffers@
 --     contains any
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-suspension suspended render pass instances>,
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-variableSampleLocations variableSampleLocations>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-variableSampleLocations variableSampleLocations>
 --     limit is not supported, and any element of @pCommandBuffers@
 --     contains any
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-suspension suspended render pass instances>,
+--     <https://registry.khronos.org/vulkan/specs/latest/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-VkSubmitInfo-pNext-09683# If the @pNext@ chain of this
+--     structure includes a
+--     'Vulkan.Extensions.VK_ARM_tensors.FrameBoundaryTensorsARM' structure
+--     then it /must/ also include a
+--     'Vulkan.Extensions.VK_EXT_frame_boundary.FrameBoundaryEXT' structure
+--
+-- -   #VUID-VkSubmitInfo-pCommandBufferInfos-09942# If at least one
+--     'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.CommandBufferSubmitInfo'
+--     structure in @pCommandBufferInfos@ references a @commandBuffer@
+--     allocated from a pool that was created with a
+--     'Vulkan.Extensions.VK_ARM_data_graph.DataGraphProcessingEngineCreateInfoARM'
+--     structure in the @pNext@ chain of
+--     'Vulkan.Core10.CommandPool.CommandPoolCreateInfo' that included a
+--     foreign data graph processing engine in its @pProcessingEngines@
+--     member, then @pWaitSemaphoreInfos@ and @pSignalSemaphoreInfos@
+--     /must/ only reference @semaphore@ objects that were created from
+--     external handle types reported as supported in a
+--     'Vulkan.Extensions.VK_ARM_data_graph.QueueFamilyDataGraphProcessingEnginePropertiesARM'::@foreignSemaphoreHandleTypes@
+--     structure via
+--     'Vulkan.Extensions.VK_ARM_data_graph.getPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM'
+--     with a @queueFamilyIndex@ matching the one the command pool was
+--     created for, for all the foreign data graph processing engines that
+--     were part of the
+--     'Vulkan.Extensions.VK_ARM_data_graph.DataGraphProcessingEngineCreateInfoARM'
+--     used to create the command pool
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-VkSubmitInfo-sType-sType# @sType@ /must/ be
@@ -807,16 +946,18 @@
 --     'Vulkan.Extensions.VK_KHR_external_semaphore_win32.D3D12FenceSubmitInfoKHR',
 --     'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupSubmitInfo',
 --     'Vulkan.Extensions.VK_EXT_frame_boundary.FrameBoundaryEXT',
+--     'Vulkan.Extensions.VK_ARM_tensors.FrameBoundaryTensorsARM',
 --     'Vulkan.Extensions.VK_NV_low_latency2.LatencySubmissionPresentIdNV',
 --     'Vulkan.Extensions.VK_KHR_performance_query.PerformanceQuerySubmitInfoKHR',
 --     'Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory.ProtectedSubmitInfo',
+--     'Vulkan.Extensions.VK_SEC_throttle_hint.ThrottleHintSubmitInfoSEC',
 --     'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.TimelineSemaphoreSubmitInfo',
 --     'Vulkan.Extensions.VK_KHR_win32_keyed_mutex.Win32KeyedMutexAcquireReleaseInfoKHR',
 --     or
 --     'Vulkan.Extensions.VK_NV_win32_keyed_mutex.Win32KeyedMutexAcquireReleaseInfoNV'
 --
--- -   #VUID-VkSubmitInfo-sType-unique# The @sType@ value of each struct in
---     the @pNext@ chain /must/ be unique
+-- -   #VUID-VkSubmitInfo-sType-unique# The @sType@ value of each structure
+--     in the @pNext@ chain /must/ be unique
 --
 -- -   #VUID-VkSubmitInfo-pWaitSemaphores-parameter# If
 --     @waitSemaphoreCount@ is not @0@, @pWaitSemaphores@ /must/ be a valid
@@ -859,7 +1000,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-semaphores-waiting semaphore wait operation>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -871,7 +1012,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operation>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operation>.
     signalSemaphores :: Vector Semaphore
   }
   deriving (Typeable)
@@ -886,6 +1027,8 @@
   getNext SubmitInfo{..} = next
   extends :: forall e b proxy. Typeable e => proxy e -> (Extends SubmitInfo e => b) -> Maybe b
   extends _ f
+    | Just Refl <- eqT @e @FrameBoundaryTensorsARM = Just f
+    | Just Refl <- eqT @e @ThrottleHintSubmitInfoSEC = Just f
     | Just Refl <- eqT @e @LatencySubmissionPresentIdNV = Just f
     | Just Refl <- eqT @e @FrameBoundaryEXT = Just f
     | Just Refl <- eqT @e @AmigoProfilingSubmitInfoSEC = Just f
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
@@ -100,6 +100,9 @@
 -- -   #VUID-vkCreateSemaphore-pSemaphore-parameter# @pSemaphore@ /must/ be
 --     a valid pointer to a 'Vulkan.Core10.Handles.Semaphore' handle
 --
+-- -   #VUID-vkCreateSemaphore-device-queuecount# The device /must/ have
+--     been created with at least @1@ queue
+--
 -- == Return Codes
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
@@ -108,10 +111,14 @@
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -126,7 +133,7 @@
                    -- containing information about how the semaphore is to be created.
                    (SemaphoreCreateInfo a)
                 -> -- | @pAllocator@ controls host memory allocation as described in the
-                   -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                   -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
                    -- chapter.
                    ("allocator" ::: Maybe AllocationCallbacks)
                 -> io (Semaphore)
@@ -219,7 +226,7 @@
                  -> -- | @semaphore@ is the handle of the semaphore to destroy.
                     Semaphore
                  -> -- | @pAllocator@ controls host memory allocation as described in the
-                    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
                     -- chapter.
                     ("allocator" ::: Maybe AllocationCallbacks)
                  -> io ()
@@ -265,8 +272,8 @@
 --     'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.SemaphoreTypeCreateInfo'
 --
 -- -   #VUID-VkSemaphoreCreateInfo-sType-unique# The @sType@ value of each
---     struct in the @pNext@ chain /must/ be unique, with the exception of
---     structures of type
+--     structure in the @pNext@ chain /must/ be unique, with the exception
+--     of structures of type
 --     'Vulkan.Extensions.VK_EXT_metal_objects.ExportMetalObjectCreateInfoEXT'
 --
 -- -   #VUID-VkSemaphoreCreateInfo-flags-zerobitmask# @flags@ /must/ be @0@
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
@@ -9,6 +9,7 @@
                               , Filter(..)
                               , SamplerMipmapMode(..)
                               , SamplerAddressMode(..)
+                              , CompareOp(..)
                               , SamplerCreateFlagBits(..)
                               , SamplerCreateFlags
                               ) where
@@ -59,6 +60,7 @@
 import Vulkan.Core10.Enums.BorderColor (BorderColor)
 import Vulkan.CStruct.Extends (Chain)
 import Vulkan.Core10.Enums.CompareOp (CompareOp)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_debug_utils (DebugUtilsObjectNameInfoEXT)
 import Vulkan.Core10.Handles (Device)
 import Vulkan.Core10.Handles (Device(..))
 import Vulkan.Core10.Handles (Device(Device))
@@ -84,6 +86,7 @@
 import Vulkan.Core10.Enums.SamplerCreateFlagBits (SamplerCreateFlags)
 import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_filter_cubic_weights (SamplerCubicWeightsCreateInfoQCOM)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_custom_border_color (SamplerCustomBorderColorCreateInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_heap (SamplerCustomBorderColorIndexCreateInfoEXT)
 import Vulkan.Core10.Enums.SamplerMipmapMode (SamplerMipmapMode)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax (SamplerReductionModeCreateInfo)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion (SamplerYcbcrConversionInfo)
@@ -93,6 +96,7 @@
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SAMPLER_CREATE_INFO))
 import Vulkan.Core10.Enums.Result (Result(SUCCESS))
 import Vulkan.Core10.Enums.BorderColor (BorderColor(..))
+import Vulkan.Core10.Enums.CompareOp (CompareOp(..))
 import Vulkan.Core10.Enums.Filter (Filter(..))
 import Vulkan.Core10.Handles (Sampler(..))
 import Vulkan.Core10.Enums.SamplerAddressMode (SamplerAddressMode(..))
@@ -121,6 +125,17 @@
 --     'Vulkan.Core10.Handles.Sampler' objects currently created on the
 --     device
 --
+-- -   #VUID-vkCreateSampler-maxSamplerAllocationCount-11412# If there are
+--     any pipelines or shaders with embedded samplers currently created on
+--     the device, there /must/ be less than
+--     (<https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxSamplerAllocationCount maxSamplerAllocationCount>
+--     -
+--     (<https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-minSamplerHeapReservedRangeWithEmbedded minSamplerHeapReservedRangeWithEmbedded>
+--     \/
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-samplerDescriptorSize samplerDescriptorSize>))
+--     'Vulkan.Core10.Handles.Sampler' objects currently created on the
+--     device
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-vkCreateSampler-device-parameter# @device@ /must/ be a valid
@@ -144,12 +159,16 @@
 --
 -- [<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.Extensions.VK_KHR_buffer_device_address.ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR'
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
 --
---     -   'Vulkan.Extensions.VK_KHR_buffer_device_address.ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -164,7 +183,7 @@
                  -- the state of the sampler object.
                  (SamplerCreateInfo a)
               -> -- | @pAllocator@ controls host memory allocation as described in the
-                 -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                 -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
                  -- chapter.
                  ("allocator" ::: Maybe AllocationCallbacks)
               -> io (Sampler)
@@ -257,7 +276,7 @@
                -> -- | @sampler@ is the sampler to destroy.
                   Sampler
                -> -- | @pAllocator@ controls host memory allocation as described in the
-                  -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                  -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
                   -- chapter.
                   ("allocator" ::: Maybe AllocationCallbacks)
                -> io ()
@@ -302,7 +321,7 @@
 -- 'Vulkan.Core10.Enums.Filter.FILTER_NEAREST', respectively.
 --
 -- Note that using a @maxLod@ of zero would cause
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#textures-texel-filtering magnification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -312,7 +331,7 @@
 --
 -- The maximum number of sampler objects which /can/ be simultaneously
 -- created on a device is implementation-dependent and specified by the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxSamplerAllocationCount maxSamplerAllocationCount>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxSamplerAllocationCount maxSamplerAllocationCount>
 -- member of the 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'
 -- structure.
 --
@@ -328,6 +347,30 @@
 -- that are identical. In such cases, all such objects would only count
 -- once against the @maxSamplerAllocationCount@ limit.
 --
+-- When this structure is used to write a descriptor via
+-- 'Vulkan.Extensions.VK_EXT_descriptor_heap.writeSamplerDescriptorsEXT',
+-- applications /can/ give the descriptor a debug name in a similar way to
+-- naming an object, via the
+-- 'Vulkan.Extensions.VK_EXT_debug_utils.DebugUtilsObjectNameInfoEXT'
+-- structure. However, as there is no actual object,
+-- 'Vulkan.Extensions.VK_EXT_debug_utils.DebugUtilsObjectNameInfoEXT'
+-- /must/ be passed via the @pNext@ chain of this structure, with a
+-- @objectType@ of 'Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_UNKNOWN' and
+-- a @objectHandle@ of 'Vulkan.Core10.APIConstants.NULL_HANDLE'. The name
+-- is attached to the unique set of descriptor bits written by the
+-- implementation, and writing the same bits again with new debug info
+-- /may/ rename the original descriptor.
+--
+-- Implementations are not prevented from returning the same bits for
+-- different descriptors. This can result in multiple different samplers
+-- mapping to the same name.
+--
+-- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DescriptorSetAndBindingMappingEXT'
+-- /can/ also be chained in the same way when defining an embedded sampler
+-- via
+-- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DescriptorSetAndBindingMappingEXT',
+-- naming the embedded sampler.
+--
 -- == Valid Usage
 --
 -- -   #VUID-VkSamplerCreateInfo-mipLodBias-01069# The absolute value of
@@ -344,7 +387,7 @@
 --     than or equal to @minLod@
 --
 -- -   #VUID-VkSamplerCreateInfo-anisotropyEnable-01070# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-samplerAnisotropy samplerAnisotropy>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-samplerAnisotropy samplerAnisotropy>
 --     feature is not enabled, @anisotropyEnable@ /must/ be
 --     'Vulkan.Core10.FundamentalTypes.FALSE'
 --
@@ -355,9 +398,9 @@
 --     inclusive
 --
 -- -   #VUID-VkSamplerCreateInfo-minFilter-01645# If
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
 --     is enabled and the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#potential-format-features potential format features>
+--     <https://registry.khronos.org/vulkan/specs/latest/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
@@ -398,7 +441,7 @@
 --     'Vulkan.Core10.Enums.BorderColor.BorderColor' value
 --
 -- -   #VUID-VkSamplerCreateInfo-addressModeU-01646# If
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
+--     <https://registry.khronos.org/vulkan/specs/latest/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',
@@ -407,21 +450,21 @@
 --     'Vulkan.Core10.FundamentalTypes.FALSE'
 --
 -- -   #VUID-VkSamplerCreateInfo-None-01647# If
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
 --     is enabled and the @pNext@ chain includes a
 --     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'
 --     structure, then the sampler reduction mode /must/ be
 --     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE'
 --
 -- -   #VUID-VkSamplerCreateInfo-pNext-06726# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-samplerFilterMinmax samplerFilterMinmax>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-samplerFilterMinmax samplerFilterMinmax>
 --     feature is not enabled and the @pNext@ chain includes a
 --     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'
 --     structure, then the sampler reduction mode /must/ be
 --     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE'
 --
 -- -   #VUID-VkSamplerCreateInfo-addressModeU-01079# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-samplerMirrorClampToEdge samplerMirrorClampToEdge>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-samplerMirrorClampToEdge samplerMirrorClampToEdge>
 --     feature is not enabled, and if the
 --     @VK_KHR_sampler_mirror_clamp_to_edge@ extension is not enabled,
 --     @addressModeU@, @addressModeV@ and @addressModeW@ /must/ not be
@@ -486,7 +529,7 @@
 --     'Vulkan.Core10.FundamentalTypes.FALSE'
 --
 -- -   #VUID-VkSamplerCreateInfo-nonSeamlessCubeMap-06788# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-nonSeamlessCubeMap nonSeamlessCubeMap>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-nonSeamlessCubeMap nonSeamlessCubeMap>
 --     feature is not enabled, @flags@ /must/ not include
 --     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_NON_SEAMLESS_CUBE_MAP_BIT_EXT'
 --
@@ -498,7 +541,7 @@
 --     /must/ be included in the @pNext@ chain
 --
 -- -   #VUID-VkSamplerCreateInfo-customBorderColors-04085# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-customBorderColors customBorderColors>
+--     <https://registry.khronos.org/vulkan/specs/latest/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'
@@ -515,7 +558,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxCustomBorderColorSamplers maxCustomBorderColorSamplers>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxCustomBorderColorSamplers maxCustomBorderColorSamplers>
 --     member of the
 --     'Vulkan.Extensions.VK_EXT_custom_border_color.PhysicalDeviceCustomBorderColorPropertiesEXT'
 --     structure
@@ -523,7 +566,7 @@
 -- -   #VUID-VkSamplerCreateInfo-flags-08110# If @flags@ includes
 --     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT',
 --     the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-descriptorBufferCaptureReplay descriptorBufferCaptureReplay>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-descriptorBufferCaptureReplay descriptorBufferCaptureReplay>
 --     feature /must/ be enabled
 --
 -- -   #VUID-VkSamplerCreateInfo-pNext-08111# If the @pNext@ chain includes
@@ -578,17 +621,19 @@
 -- -   #VUID-VkSamplerCreateInfo-pNext-pNext# Each @pNext@ member of any
 --     structure (including this one) in the @pNext@ chain /must/ be either
 --     @NULL@ or a pointer to a valid instance of
+--     'Vulkan.Extensions.VK_EXT_debug_utils.DebugUtilsObjectNameInfoEXT',
 --     'Vulkan.Extensions.VK_EXT_descriptor_buffer.OpaqueCaptureDescriptorDataCreateInfoEXT',
 --     'Vulkan.Extensions.VK_QCOM_image_processing2.SamplerBlockMatchWindowCreateInfoQCOM',
 --     'Vulkan.Extensions.VK_EXT_border_color_swizzle.SamplerBorderColorComponentMappingCreateInfoEXT',
 --     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.SamplerCubicWeightsCreateInfoQCOM',
 --     'Vulkan.Extensions.VK_EXT_custom_border_color.SamplerCustomBorderColorCreateInfoEXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.SamplerCustomBorderColorIndexCreateInfoEXT',
 --     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo',
 --     or
 --     'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionInfo'
 --
 -- -   #VUID-VkSamplerCreateInfo-sType-unique# The @sType@ value of each
---     struct in the @pNext@ chain /must/ be unique
+--     structure in the @pNext@ chain /must/ be unique
 --
 -- -   #VUID-VkSamplerCreateInfo-flags-parameter# @flags@ /must/ be a valid
 --     combination of
@@ -623,11 +668,17 @@
 -- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.BorderColor.BorderColor',
 -- 'Vulkan.Core10.Enums.CompareOp.CompareOp',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DescriptorMappingSourceConstantOffsetEXT',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DescriptorMappingSourceIndirectIndexArrayEXT',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DescriptorMappingSourceIndirectIndexEXT',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DescriptorMappingSourcePushIndexEXT',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DescriptorMappingSourceShaderRecordIndexEXT',
 -- 'Vulkan.Core10.Enums.Filter.Filter',
 -- 'Vulkan.Core10.Enums.SamplerAddressMode.SamplerAddressMode',
 -- 'Vulkan.Core10.Enums.SamplerCreateFlagBits.SamplerCreateFlags',
 -- 'Vulkan.Core10.Enums.SamplerMipmapMode.SamplerMipmapMode',
--- 'Vulkan.Core10.Enums.StructureType.StructureType', 'createSampler'
+-- 'Vulkan.Core10.Enums.StructureType.StructureType', 'createSampler',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_heap.writeSamplerDescriptorsEXT'
 data SamplerCreateInfo (es :: [Type]) = SamplerCreateInfo
   { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
@@ -647,26 +698,36 @@
     mipmapMode :: SamplerMipmapMode
   , -- | @addressModeU@ is a
     -- 'Vulkan.Core10.Enums.SamplerAddressMode.SamplerAddressMode' value
-    -- specifying the addressing mode for U coordinates outside [0,1).
+    -- specifying the
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#textures-wrapping-operation wrapping operation>
+    -- used when the i coordinate used to sample the image would be out of
+    -- bounds.
     addressModeU :: SamplerAddressMode
   , -- | @addressModeV@ is a
     -- 'Vulkan.Core10.Enums.SamplerAddressMode.SamplerAddressMode' value
-    -- specifying the addressing mode for V coordinates outside [0,1).
+    -- specifying the
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#textures-wrapping-operation wrapping operation>
+    -- used when the j coordinate used to sample the image would be out of
+    -- bounds.
     addressModeV :: SamplerAddressMode
   , -- | @addressModeW@ is a
     -- 'Vulkan.Core10.Enums.SamplerAddressMode.SamplerAddressMode' value
-    -- specifying the addressing mode for W coordinates outside [0,1).
+    -- specifying the
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#textures-wrapping-operation wrapping operation>
+    -- used when the k coordinate used to sample the image would be out of
+    -- bounds. If @unnormalizedCoordinates@ is
+    -- 'Vulkan.Core10.FundamentalTypes.TRUE', @addressModeW@ is ignored.
     addressModeW :: SamplerAddressMode
   , -- | #samplers-mipLodBias# @mipLodBias@ is the bias to be added to mipmap LOD
     -- calculation and bias provided by image sampling functions in SPIR-V, as
     -- described in the
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#textures-level-of-detail-operation LOD Operation>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#textures-level-of-detail-operation LOD Operation>
     -- section.
     mipLodBias :: Float
   , -- | #samplers-maxAnisotropy# @anisotropyEnable@ is
     -- 'Vulkan.Core10.FundamentalTypes.TRUE' to enable anisotropic filtering,
     -- as described in the
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#textures-texel-anisotropic-filtering Texel Anisotropic Filtering>
+    -- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -684,14 +745,14 @@
   , -- | @compareOp@ is a 'Vulkan.Core10.Enums.CompareOp.CompareOp' value
     -- specifying the comparison operator to apply to fetched data before
     -- filtering as described in the
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#textures-depth-compare-operation Depth Compare Operation>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#textures-depth-compare-operation Depth Compare Operation>
     -- section.
     compareOp :: CompareOp
   , -- | @minLod@ is used to clamp the
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#textures-level-of-detail-operation minimum of the computed LOD value>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#textures-level-of-detail-operation minimum of the computed LOD value>.
     minLod :: Float
   , -- | @maxLod@ is used to clamp the
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#textures-level-of-detail-operation maximum of the computed LOD value>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -738,11 +799,13 @@
   getNext SamplerCreateInfo{..} = next
   extends :: forall e b proxy. Typeable e => proxy e -> (Extends SamplerCreateInfo e => b) -> Maybe b
   extends _ f
+    | Just Refl <- eqT @e @SamplerCustomBorderColorIndexCreateInfoEXT = Just f
     | Just Refl <- eqT @e @SamplerBlockMatchWindowCreateInfoQCOM = Just f
     | Just Refl <- eqT @e @SamplerCubicWeightsCreateInfoQCOM = Just f
     | Just Refl <- eqT @e @OpaqueCaptureDescriptorDataCreateInfoEXT = Just f
     | Just Refl <- eqT @e @SamplerBorderColorComponentMappingCreateInfoEXT = Just f
     | Just Refl <- eqT @e @SamplerCustomBorderColorCreateInfoEXT = Just f
+    | Just Refl <- eqT @e @DebugUtilsObjectNameInfoEXT = Just f
     | Just Refl <- eqT @e @SamplerReductionModeCreateInfo = Just f
     | Just Refl <- eqT @e @SamplerYcbcrConversionInfo = Just f
     | otherwise = Nothing
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
@@ -98,17 +98,18 @@
 --
 -- Once a shader module has been created, any entry points it contains
 -- /can/ be used in pipeline shader stages as described in
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-compute Compute Pipelines>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-compute Compute Pipelines>
 -- and
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics Graphics Pipelines>.
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics Graphics Pipelines>
+-- .
 --
 -- If the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-maintenance5 maintenance5>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance5 maintenance5>
 -- feature is enabled, shader module creation can be omitted entirely.
 -- Instead, applications should provide the 'ShaderModuleCreateInfo'
 -- structure directly in to pipeline creation by chaining it to
--- 'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo'. This avoids the
--- overhead of creating and managing an additional object.
+-- 'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo'. This
+-- avoids the overhead of creating and managing an additional object.
 --
 -- == Valid Usage
 --
@@ -145,12 +146,16 @@
 --
 -- [<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_INVALID_SHADER_NV'
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_INVALID_SHADER_NV'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -166,7 +171,7 @@
                    -> -- | @pCreateInfo@ is a pointer to a 'ShaderModuleCreateInfo' structure.
                       (ShaderModuleCreateInfo a)
                    -> -- | @pAllocator@ controls host memory allocation as described in the
-                      -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                      -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
                       -- chapter.
                       ("allocator" ::: Maybe AllocationCallbacks)
                    -> io (ShaderModule)
@@ -263,7 +268,7 @@
                     -> -- | @shaderModule@ is the handle of the shader module to destroy.
                        ShaderModule
                     -> -- | @pAllocator@ controls host memory allocation as described in the
-                       -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                       -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
                        -- chapter.
                        ("allocator" ::: Maybe AllocationCallbacks)
                     -> io ()
@@ -357,6 +362,14 @@
 -- -   #VUID-VkShaderModuleCreateInfo-pCode-parameter# @pCode@ /must/ be a
 --     valid pointer to an array of \(\textrm{codeSize} \over 4\)
 --     @uint32_t@ values
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Extensions.VK_ARM_data_graph.DataGraphPipelineCreateInfoARM'
+--
+--     -   'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo'
 --
 -- = See Also
 --
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
@@ -84,6 +84,7 @@
 import Vulkan.Core10.Enums.Format (Format)
 import Vulkan.Core10.Enums.Format (Format(..))
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_frame_boundary (FrameBoundaryEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_tensors (FrameBoundaryTensorsARM)
 import Vulkan.Core10.Handles (Image)
 import Vulkan.Core10.Handles (Image(..))
 import Vulkan.Core10.Enums.ImageAspectFlagBits (ImageAspectFlags)
@@ -385,7 +386,7 @@
 -- = Description
 --
 -- 'queueBindSparse' is a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-submission queue submission command>,
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -403,7 +404,7 @@
 --
 -- Additional information about fence and semaphore operation is described
 -- in
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization the synchronization chapter>.
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization the synchronization chapter>.
 --
 -- == Valid Usage
 --
@@ -434,7 +435,7 @@
 --     'Vulkan.Core12.Enums.SemaphoreType.SEMAPHORE_TYPE_BINARY' /must/
 --     reference a semaphore signal operation that has been submitted for
 --     execution and any
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operations>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operations>
 --     on which it depends /must/ have also been submitted for execution
 --
 -- == Valid Usage (Implicit)
@@ -450,8 +451,9 @@
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE', @fence@ /must/ be a valid
 --     'Vulkan.Core10.Handles.Fence' handle
 --
--- -   #VUID-vkQueueBindSparse-queuetype# The @queue@ /must/ support sparse
---     binding operations
+-- -   #VUID-vkQueueBindSparse-queuetype# The @queue@ /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_SPARSE_BINDING_BIT'
+--     operations
 --
 -- -   #VUID-vkQueueBindSparse-commonparent# Both of @fence@, and @queue@
 --     that are valid handles of non-ignored parameters /must/ have been
@@ -460,7 +462,9 @@
 --
 -- == Host Synchronization
 --
--- -   Host access to @queue@ /must/ be externally synchronized
+-- -   Host access to @queue@ /must/ be externally synchronized if it was
+--     not created with
+--     'Vulkan.Core10.Enums.DeviceQueueCreateFlagBits.DEVICE_QUEUE_CREATE_INTERNALLY_SYNCHRONIZED_BIT_KHR'
 --
 -- -   Host access to @fence@ /must/ be externally synchronized
 --
@@ -471,7 +475,7 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | -                                                                                                                          | -                                                                                                                      | -                                                                                                                           | SPARSE_BINDING                                                                                                        | -                                                                                                                                      |
+-- | -                                                                                                                          | -                                                                                                                      | -                                                                                                                           | VK_QUEUE_SPARSE_BINDING_BIT                                                                                           | -                                                                                                                                      |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
 -- == Return Codes
@@ -482,12 +486,16 @@
 --
 -- [<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_DEVICE_LOST'
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -503,7 +511,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-fences-signaling fence signal operation>.
+                   -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-fences-signaling fence signal operation>.
                    Fence
                 -> io ()
 queueBindSparse queue bindInfo fence = liftIO . evalContT $ do
@@ -539,7 +547,7 @@
     -- which aspects of the image the properties apply to.
     aspectMask :: ImageAspectFlags
   , -- | @imageGranularity@ is the width, height, and depth of the sparse image
-    -- block in texels or compressed texel blocks.
+    -- block in texels.
     imageGranularity :: Extent3D
   , -- | @flags@ is a bitmask of
     -- 'Vulkan.Core10.Enums.SparseImageFormatFlagBits.SparseImageFormatFlagBits'
@@ -681,7 +689,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.Extensions.VK_KHR_maintenance5.ImageSubresource2KHR',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.ImageSubresource2',
 -- 'SparseImageMemoryBind', 'Vulkan.Core10.Image.getImageSubresourceLayout'
 data ImageSubresource = ImageSubresource
   { -- | @aspectMask@ is a
@@ -776,7 +784,7 @@
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE', @memory@ and
 --     @memoryOffset@ /must/ match the memory requirements of the resource,
 --     as described in section
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-association>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-association>
 --
 -- -   #VUID-VkSparseMemoryBind-resourceOffset-09491# If the resource being
 --     bound is a 'Vulkan.Core10.Handles.Buffer', @resourceOffset@,
@@ -923,7 +931,7 @@
 -- == Valid Usage
 --
 -- -   #VUID-VkSparseImageMemoryBind-memory-01104# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-sparseResidencyAliased sparseResidencyAliased>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-sparseResidencyAliased sparseResidencyAliased>
 --     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
@@ -931,7 +939,7 @@
 -- -   #VUID-VkSparseImageMemoryBind-memory-01105# @memory@ and
 --     @memoryOffset@ /must/ match the memory requirements of the calling
 --     command’s @image@, as described in section
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-association>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-association>
 --
 -- -   #VUID-VkSparseImageMemoryBind-offset-01107# @offset.x@ /must/ be a
 --     multiple of the sparse image block width
@@ -1325,6 +1333,22 @@
 
 -- | VkBindSparseInfo - Structure specifying a sparse binding operation
 --
+-- = Description
+--
+-- The first
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+-- of each
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operation>
+-- defined by this structure includes all sparse binding operations defined
+-- by this structure.
+--
+-- The second
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+-- of each
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-semaphores-waiting semaphore wait operation>
+-- defined by this structure includes all sparse binding operations defined
+-- by this structure.
+--
 -- == Valid Usage
 --
 -- -   #VUID-VkBindSparseInfo-pWaitSemaphores-03246# If any element of
@@ -1360,7 +1384,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operation>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operation>
 --     is executed
 --
 -- -   #VUID-VkBindSparseInfo-pWaitSemaphores-03250# For each element of
@@ -1372,7 +1396,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxTimelineSemaphoreValueDifference maxTimelineSemaphoreValueDifference>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxTimelineSemaphoreValueDifference maxTimelineSemaphoreValueDifference>
 --
 -- -   #VUID-VkBindSparseInfo-pSignalSemaphores-03251# For each element of
 --     @pSignalSemaphores@ created with a
@@ -1383,8 +1407,14 @@
 --     /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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxTimelineSemaphoreValueDifference maxTimelineSemaphoreValueDifference>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxTimelineSemaphoreValueDifference maxTimelineSemaphoreValueDifference>
 --
+-- -   #VUID-VkBindSparseInfo-pNext-09753# If the @pNext@ chain of this
+--     structure includes a
+--     'Vulkan.Extensions.VK_ARM_tensors.FrameBoundaryTensorsARM' structure
+--     then it /must/ also include a
+--     'Vulkan.Extensions.VK_EXT_frame_boundary.FrameBoundaryEXT' structure
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-VkBindSparseInfo-sType-sType# @sType@ /must/ be
@@ -1394,11 +1424,12 @@
 --     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.DeviceGroupBindSparseInfo',
---     'Vulkan.Extensions.VK_EXT_frame_boundary.FrameBoundaryEXT', or
+--     'Vulkan.Extensions.VK_EXT_frame_boundary.FrameBoundaryEXT',
+--     'Vulkan.Extensions.VK_ARM_tensors.FrameBoundaryTensorsARM', or
 --     'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.TimelineSemaphoreSubmitInfo'
 --
 -- -   #VUID-VkBindSparseInfo-sType-unique# The @sType@ value of each
---     struct in the @pNext@ chain /must/ be unique
+--     structure in the @pNext@ chain /must/ be unique
 --
 -- -   #VUID-VkBindSparseInfo-pWaitSemaphores-parameter# If
 --     @waitSemaphoreCount@ is not @0@, @pWaitSemaphores@ /must/ be a valid
@@ -1440,7 +1471,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-semaphores-waiting semaphore wait operation>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-semaphores-waiting semaphore wait operation>.
     waitSemaphores :: Vector Semaphore
   , -- | @pBufferBinds@ is a pointer to an array of 'SparseBufferMemoryBindInfo'
     -- structures.
@@ -1456,7 +1487,7 @@
     -- signaled when the sparse binding operations for this batch have
     -- completed execution. If semaphores to be signaled are provided, they
     -- define a
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operation>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operation>.
     signalSemaphores :: Vector Semaphore
   }
   deriving (Typeable)
@@ -1471,6 +1502,7 @@
   getNext BindSparseInfo{..} = next
   extends :: forall e b proxy. Typeable e => proxy e -> (Extends BindSparseInfo e => b) -> Maybe b
   extends _ f
+    | Just Refl <- eqT @e @FrameBoundaryTensorsARM = Just f
     | Just Refl <- eqT @e @FrameBoundaryEXT = Just f
     | Just Refl <- eqT @e @TimelineSemaphoreSubmitInfo = Just f
     | Just Refl <- eqT @e @DeviceGroupBindSparseInfo = Just f
diff --git a/src/Vulkan/Core11/DeviceInitialization.hs b/src/Vulkan/Core11/DeviceInitialization.hs
--- a/src/Vulkan/Core11/DeviceInitialization.hs
+++ b/src/Vulkan/Core11/DeviceInitialization.hs
@@ -1,6 +1,10 @@
 {-# language CPP #-}
 -- No documentation found for Chapter "DeviceInitialization"
-module Vulkan.Core11.DeviceInitialization  (enumerateInstanceVersion) where
+module Vulkan.Core11.DeviceInitialization  ( enumerateInstanceVersion
+                                           , SubgroupFeatureFlagBits(..)
+                                           , SubgroupFeatureFlags
+                                           , PointClippingBehavior(..)
+                                           ) where
 
 import Vulkan.Internal.Utils (traceAroundEvent)
 import Control.Exception.Base (bracket)
@@ -30,6 +34,9 @@
 import Vulkan.Core10.Enums.Result (Result(..))
 import Vulkan.Exception (VulkanException(..))
 import Vulkan.Core10.Enums.Result (Result(SUCCESS))
+import Vulkan.Core11.Enums.PointClippingBehavior (PointClippingBehavior(..))
+import Vulkan.Core11.Enums.SubgroupFeatureFlagBits (SubgroupFeatureFlagBits(..))
+import Vulkan.Core11.Enums.SubgroupFeatureFlagBits (SubgroupFeatureFlags)
 foreign import ccall
 #if !defined(SAFE_FOREIGN_CALLS)
   unsafe
@@ -58,6 +65,10 @@
 -- [<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_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Core11/Enums/ChromaLocation.hs b/src/Vulkan/Core11/Enums/ChromaLocation.hs
--- a/src/Vulkan/Core11/Enums/ChromaLocation.hs
+++ b/src/Vulkan/Core11/Enums/ChromaLocation.hs
@@ -16,25 +16,33 @@
 
 -- | VkChromaLocation - Position of downsampled chroma samples
 --
+-- = Description
+--
+-- -   'CHROMA_LOCATION_COSITED_EVEN' specifies that downsampled chroma
+--     samples are aligned with luma samples with even coordinates.
+--
+-- -   'CHROMA_LOCATION_MIDPOINT' specifies that downsampled chroma samples
+--     are located half way between each even luma sample and the nearest
+--     higher odd luma sample.
+--
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_sampler_ycbcr_conversion VK_KHR_sampler_ycbcr_conversion>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.AndroidHardwareBufferFormatProperties2ANDROID',
 -- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.AndroidHardwareBufferFormatPropertiesANDROID',
 -- 'Vulkan.Extensions.VK_FUCHSIA_buffer_collection.BufferCollectionPropertiesFUCHSIA',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkNativeBufferFormatPropertiesOHOS VkNativeBufferFormatPropertiesOHOS>,
 -- 'Vulkan.Extensions.VK_ANDROID_external_format_resolve.PhysicalDeviceExternalFormatResolvePropertiesANDROID',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionCreateInfo',
 -- 'Vulkan.Extensions.VK_QNX_external_memory_screen_buffer.ScreenBufferFormatPropertiesQNX'
 newtype ChromaLocation = ChromaLocation Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'CHROMA_LOCATION_COSITED_EVEN' specifies that downsampled chroma samples
--- are aligned with luma samples with even coordinates.
+-- No documentation found for Nested "VkChromaLocation" "VK_CHROMA_LOCATION_COSITED_EVEN"
 pattern CHROMA_LOCATION_COSITED_EVEN = ChromaLocation 0
 
--- | 'CHROMA_LOCATION_MIDPOINT' specifies that downsampled chroma samples are
--- located half way between each even luma sample and the nearest higher
--- odd luma sample.
+-- No documentation found for Nested "VkChromaLocation" "VK_CHROMA_LOCATION_MIDPOINT"
 pattern CHROMA_LOCATION_MIDPOINT = ChromaLocation 1
 
 {-# COMPLETE
diff --git a/src/Vulkan/Core11/Enums/CommandPoolTrimFlags.hs b/src/Vulkan/Core11/Enums/CommandPoolTrimFlags.hs
--- a/src/Vulkan/Core11/Enums/CommandPoolTrimFlags.hs
+++ b/src/Vulkan/Core11/Enums/CommandPoolTrimFlags.hs
@@ -22,10 +22,11 @@
 --
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance1 VK_KHR_maintenance1>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core10.FundamentalTypes.Flags',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_maintenance1.trimCommandPool',
--- 'Vulkan.Extensions.VK_KHR_maintenance1.trimCommandPoolKHR'
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_maintenance1.trimCommandPool'
 newtype CommandPoolTrimFlags = CommandPoolTrimFlags Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
diff --git a/src/Vulkan/Core11/Enums/DescriptorUpdateTemplateCreateFlags.hs b/src/Vulkan/Core11/Enums/DescriptorUpdateTemplateCreateFlags.hs
--- a/src/Vulkan/Core11/Enums/DescriptorUpdateTemplateCreateFlags.hs
+++ b/src/Vulkan/Core11/Enums/DescriptorUpdateTemplateCreateFlags.hs
@@ -22,6 +22,7 @@
 --
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_descriptor_update_template VK_KHR_descriptor_update_template>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template.DescriptorUpdateTemplateCreateInfo',
 -- 'Vulkan.Core10.FundamentalTypes.Flags'
diff --git a/src/Vulkan/Core11/Enums/DescriptorUpdateTemplateType.hs b/src/Vulkan/Core11/Enums/DescriptorUpdateTemplateType.hs
--- a/src/Vulkan/Core11/Enums/DescriptorUpdateTemplateType.hs
+++ b/src/Vulkan/Core11/Enums/DescriptorUpdateTemplateType.hs
@@ -1,7 +1,7 @@
 {-# language CPP #-}
 -- No documentation found for Chapter "DescriptorUpdateTemplateType"
 module Vulkan.Core11.Enums.DescriptorUpdateTemplateType  (DescriptorUpdateTemplateType( DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET
-                                                                                      , DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR
+                                                                                      , DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS
                                                                                       , ..
                                                                                       )) where
 
@@ -17,25 +17,33 @@
 -- | VkDescriptorUpdateTemplateType - Indicates the valid usage of the
 -- descriptor update template
 --
+-- = Description
+--
+-- -   'DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET' specifies that the
+--     descriptor update template will be used for descriptor set updates
+--     only.
+--
+-- -   'DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS' specifies that
+--     the descriptor update template will be used for push descriptor
+--     updates only.
+--
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_descriptor_update_template VK_KHR_descriptor_update_template>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template.DescriptorUpdateTemplateCreateInfo'
 newtype DescriptorUpdateTemplateType = DescriptorUpdateTemplateType Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET' specifies that the
--- descriptor update template will be used for descriptor set updates only.
+-- No documentation found for Nested "VkDescriptorUpdateTemplateType" "VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET"
 pattern DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET = DescriptorUpdateTemplateType 0
 
--- | 'DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR' specifies that
--- the descriptor update template will be used for push descriptor updates
--- only.
-pattern DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR = DescriptorUpdateTemplateType 1
+-- No documentation found for Nested "VkDescriptorUpdateTemplateType" "VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS"
+pattern DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS = DescriptorUpdateTemplateType 1
 
 {-# COMPLETE
   DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET
-  , DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR ::
+  , DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS ::
     DescriptorUpdateTemplateType
   #-}
 
@@ -52,8 +60,8 @@
     , "DESCRIPTOR_SET"
     )
   ,
-    ( DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR
-    , "PUSH_DESCRIPTORS_KHR"
+    ( DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS
+    , "PUSH_DESCRIPTORS"
     )
   ]
 
diff --git a/src/Vulkan/Core11/Enums/ExternalFenceFeatureFlagBits.hs b/src/Vulkan/Core11/Enums/ExternalFenceFeatureFlagBits.hs
--- a/src/Vulkan/Core11/Enums/ExternalFenceFeatureFlagBits.hs
+++ b/src/Vulkan/Core11/Enums/ExternalFenceFeatureFlagBits.hs
@@ -23,19 +23,26 @@
 -- | VkExternalFenceFeatureFlagBits - Bitfield describing features of an
 -- external fence handle type
 --
+-- = Description
+--
+-- -   'EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT' specifies handles of this
+--     type /can/ be exported from Vulkan fence objects.
+--
+-- -   'EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT' specifies handles of this
+--     type /can/ be imported to Vulkan fence objects.
+--
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_fence_capabilities VK_KHR_external_fence_capabilities>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'ExternalFenceFeatureFlags'
 newtype ExternalFenceFeatureFlagBits = ExternalFenceFeatureFlagBits Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT' specifies handles of this type
--- /can/ be exported from Vulkan fence objects.
+-- No documentation found for Nested "VkExternalFenceFeatureFlagBits" "VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT"
 pattern EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT = ExternalFenceFeatureFlagBits 0x00000001
 
--- | 'EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT' specifies handles of this type
--- /can/ be imported to Vulkan fence objects.
+-- No documentation found for Nested "VkExternalFenceFeatureFlagBits" "VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT"
 pattern EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT = ExternalFenceFeatureFlagBits 0x00000002
 
 conNameExternalFenceFeatureFlagBits :: String
diff --git a/src/Vulkan/Core11/Enums/ExternalFenceHandleTypeFlagBits.hs b/src/Vulkan/Core11/Enums/ExternalFenceHandleTypeFlagBits.hs
--- a/src/Vulkan/Core11/Enums/ExternalFenceHandleTypeFlagBits.hs
+++ b/src/Vulkan/Core11/Enums/ExternalFenceHandleTypeFlagBits.hs
@@ -27,6 +27,39 @@
 --
 -- = Description
 --
+-- -   'EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT' specifies a POSIX file
+--     descriptor handle that has only limited valid usage outside of
+--     Vulkan and other compatible APIs. It /must/ be compatible with the
+--     POSIX system calls @dup@, @dup2@, @close@, and the non-standard
+--     system call @dup3@. Additionally, it /must/ be transportable over a
+--     socket using an @SCM_RIGHTS@ control message. It owns a reference to
+--     the underlying synchronization primitive represented by its Vulkan
+--     fence object.
+--
+-- -   'EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT' specifies an NT handle
+--     that has only limited valid usage outside of Vulkan and other
+--     compatible APIs. It /must/ be compatible with the functions
+--     @DuplicateHandle@, @CloseHandle@, @CompareObjectHandles@,
+--     @GetHandleInformation@, and @SetHandleInformation@. It owns a
+--     reference to the underlying synchronization primitive represented by
+--     its Vulkan fence object.
+--
+-- -   'EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT' specifies a global
+--     share handle that has only limited valid usage outside of Vulkan and
+--     other compatible APIs. It is not compatible with any native APIs. It
+--     does not own a reference to the underlying synchronization primitive
+--     represented by its Vulkan fence object, and will therefore become
+--     invalid when all Vulkan fence objects associated with it are
+--     destroyed.
+--
+-- -   'EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT' specifies a POSIX file
+--     descriptor handle to a Linux Sync File or Android Fence. It can be
+--     used with any native API accepting a valid sync file or fence as
+--     input. It owns a reference to the underlying synchronization
+--     primitive associated with the file descriptor. Implementations which
+--     support importing this handle type /must/ accept any type of sync or
+--     fence FD supported by the native system they are running on.
+--
 -- Some external fence handle types can only be shared within the same
 -- underlying physical device and\/or the same driver version, as defined
 -- in the following table:
@@ -47,6 +80,7 @@
 --
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_fence_capabilities VK_KHR_external_fence_capabilities>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'ExternalFenceHandleTypeFlags',
 -- 'Vulkan.Extensions.VK_KHR_external_fence_fd.FenceGetFdInfoKHR',
@@ -57,38 +91,16 @@
 newtype ExternalFenceHandleTypeFlagBits = ExternalFenceHandleTypeFlagBits Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT' specifies a POSIX file
--- descriptor handle that has only limited valid usage outside of Vulkan
--- and other compatible APIs. It /must/ be compatible with the POSIX system
--- calls @dup@, @dup2@, @close@, and the non-standard system call @dup3@.
--- Additionally, it /must/ be transportable over a socket using an
--- @SCM_RIGHTS@ control message. It owns a reference to the underlying
--- synchronization primitive represented by its Vulkan fence object.
+-- No documentation found for Nested "VkExternalFenceHandleTypeFlagBits" "VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT"
 pattern EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT = ExternalFenceHandleTypeFlagBits 0x00000001
 
--- | 'EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT' specifies an NT handle
--- that has only limited valid usage outside of Vulkan and other compatible
--- APIs. It /must/ be compatible with the functions @DuplicateHandle@,
--- @CloseHandle@, @CompareObjectHandles@, @GetHandleInformation@, and
--- @SetHandleInformation@. It owns a reference to the underlying
--- synchronization primitive represented by its Vulkan fence object.
+-- No documentation found for Nested "VkExternalFenceHandleTypeFlagBits" "VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT"
 pattern EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT = ExternalFenceHandleTypeFlagBits 0x00000002
 
--- | 'EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT' specifies a global
--- share handle that has only limited valid usage outside of Vulkan and
--- other compatible APIs. It is not compatible with any native APIs. It
--- does not own a reference to the underlying synchronization primitive
--- represented by its Vulkan fence object, and will therefore become
--- invalid when all Vulkan fence objects associated with it are destroyed.
+-- No documentation found for Nested "VkExternalFenceHandleTypeFlagBits" "VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT"
 pattern EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = ExternalFenceHandleTypeFlagBits 0x00000004
 
--- | 'EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT' specifies a POSIX file
--- descriptor handle to a Linux Sync File or Android Fence. It can be used
--- with any native API accepting a valid sync file or fence as input. It
--- owns a reference to the underlying synchronization primitive associated
--- with the file descriptor. Implementations which support importing this
--- handle type /must/ accept any type of sync or fence FD supported by the
--- native system they are running on.
+-- No documentation found for Nested "VkExternalFenceHandleTypeFlagBits" "VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT"
 pattern EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT = ExternalFenceHandleTypeFlagBits 0x00000008
 
 conNameExternalFenceHandleTypeFlagBits :: String
diff --git a/src/Vulkan/Core11/Enums/ExternalMemoryFeatureFlagBits.hs b/src/Vulkan/Core11/Enums/ExternalMemoryFeatureFlagBits.hs
--- a/src/Vulkan/Core11/Enums/ExternalMemoryFeatureFlagBits.hs
+++ b/src/Vulkan/Core11/Enums/ExternalMemoryFeatureFlagBits.hs
@@ -26,11 +26,42 @@
 --
 -- = Description
 --
+-- -   'EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT' specifies that tensors,
+--     images or buffers created with the specified parameters and handle
+--     type /must/ use the mechanisms defined by
+--     'Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedRequirements'
+--     and
+--     'Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo'
+--     or
+--     'Vulkan.Extensions.VK_ARM_tensors.MemoryDedicatedAllocateInfoTensorARM'
+--     to create (or import) a dedicated allocation for the tensor, image
+--     or buffer.
+--
+-- -   'EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT' specifies that handles of
+--     this type /can/ be exported from Vulkan memory objects.
+--
+-- -   'EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT' specifies that handles of
+--     this type /can/ be imported as Vulkan memory objects.
+--
 -- Because their semantics in external APIs roughly align with that of an
 -- image or buffer with a dedicated allocation in Vulkan, implementations
 -- are /required/ to report 'EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT'
 -- for the following external handle types:
 --
+-- -   'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT'
+--
+-- -   'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT'
+--
+-- -   'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT'
+--
+-- -   'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID'
+--     for images only
+--
+-- -   'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_SCREEN_BUFFER_BIT_QNX'
+--     for images only
+--
+-- -   'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_MTLTEXTURE_BIT_EXT'
+--
 -- Implementations /must/ not report
 -- 'EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT' for buffers with external
 -- handle type
@@ -40,34 +71,27 @@
 -- handle type
 -- 'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_SCREEN_BUFFER_BIT_QNX'.
 -- Implementations /must/ not report
--- 'EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT' for images or buffers with
--- external handle type
+-- 'EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT' for tensors, images or
+-- buffers with external handle type
 -- 'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT',
 -- or
 -- 'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT'.
 --
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_memory_capabilities VK_KHR_external_memory_capabilities>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'ExternalMemoryFeatureFlags'
 newtype ExternalMemoryFeatureFlagBits = ExternalMemoryFeatureFlagBits Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT' specifies that images or
--- buffers created with the specified parameters and handle type /must/ use
--- the mechanisms defined by
--- 'Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedRequirements'
--- and
--- 'Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo'
--- to create (or import) a dedicated allocation for the image or buffer.
+-- No documentation found for Nested "VkExternalMemoryFeatureFlagBits" "VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT"
 pattern EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT = ExternalMemoryFeatureFlagBits 0x00000001
 
--- | 'EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT' specifies that handles of this
--- type /can/ be exported from Vulkan memory objects.
+-- No documentation found for Nested "VkExternalMemoryFeatureFlagBits" "VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT"
 pattern EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT = ExternalMemoryFeatureFlagBits 0x00000002
 
--- | 'EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT' specifies that handles of this
--- type /can/ be imported as Vulkan memory objects.
+-- No documentation found for Nested "VkExternalMemoryFeatureFlagBits" "VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT"
 pattern EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT = ExternalMemoryFeatureFlagBits 0x00000004
 
 conNameExternalMemoryFeatureFlagBits :: String
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
@@ -8,6 +8,9 @@
                                                                                                , EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT
                                                                                                , EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT
                                                                                                , EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT
+                                                                                               , EXTERNAL_MEMORY_HANDLE_TYPE_MTLHEAP_BIT_EXT
+                                                                                               , EXTERNAL_MEMORY_HANDLE_TYPE_MTLTEXTURE_BIT_EXT
+                                                                                               , EXTERNAL_MEMORY_HANDLE_TYPE_MTLBUFFER_BIT_EXT
                                                                                                , EXTERNAL_MEMORY_HANDLE_TYPE_SCREEN_BUFFER_BIT_QNX
                                                                                                , EXTERNAL_MEMORY_HANDLE_TYPE_RDMA_ADDRESS_BIT_NV
                                                                                                , EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA
@@ -37,6 +40,97 @@
 --
 -- = Description
 --
+-- -   'EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT' specifies a POSIX file
+--     descriptor handle that has only limited valid usage outside of
+--     Vulkan and other compatible APIs. It /must/ be compatible with the
+--     POSIX system calls @dup@, @dup2@, @close@, and the non-standard
+--     system call @dup3@. Additionally, it /must/ be transportable over a
+--     socket using an @SCM_RIGHTS@ control message. It owns a reference to
+--     the underlying memory resource represented by its Vulkan memory
+--     object.
+--
+-- -   'EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT' specifies an NT
+--     handle that has only limited valid usage outside of Vulkan and other
+--     compatible APIs. It /must/ be compatible with the functions
+--     @DuplicateHandle@, @CloseHandle@, @CompareObjectHandles@,
+--     @GetHandleInformation@, and @SetHandleInformation@. It owns a
+--     reference to the underlying memory resource represented by its
+--     Vulkan memory object.
+--
+-- -   'EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT' specifies a
+--     global share handle that has only limited valid usage outside of
+--     Vulkan and other compatible APIs. It is not compatible with any
+--     native APIs. It does not own a reference to the underlying memory
+--     resource represented by its Vulkan memory object, and will therefore
+--     become invalid when all Vulkan memory objects associated with it are
+--     destroyed.
+--
+-- -   'EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT' specifies an NT
+--     handle returned by @IDXGIResource1@::@CreateSharedHandle@ referring
+--     to a Direct3D 10 or 11 texture resource. It owns a reference to the
+--     memory used by the Direct3D resource.
+--
+-- -   'EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT' specifies a
+--     global share handle returned by @IDXGIResource@::@GetSharedHandle@
+--     referring to a Direct3D 10 or 11 texture resource. It does not own a
+--     reference to the underlying Direct3D resource, and will therefore
+--     become invalid when all Vulkan memory objects and Direct3D resources
+--     associated with it are destroyed.
+--
+-- -   'EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT' specifies an NT handle
+--     returned by @ID3D12Device@::@CreateSharedHandle@ referring to a
+--     Direct3D 12 heap resource. It owns a reference to the resources used
+--     by the Direct3D heap.
+--
+-- -   'EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT' specifies an NT
+--     handle returned by @ID3D12Device@::@CreateSharedHandle@ referring to
+--     a Direct3D 12 committed resource. It owns a reference to the memory
+--     used by the Direct3D resource.
+--
+-- -   'EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT' specifies a
+--     host pointer returned by a host memory allocation command. It does
+--     not own a reference to the underlying memory resource, and will
+--     therefore become invalid if the host memory is freed.
+--
+-- -   'EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT'
+--     specifies a host pointer to /host mapped foreign memory/. It does
+--     not own a reference to the underlying memory resource, and will
+--     therefore become invalid if the foreign memory is unmapped or
+--     otherwise becomes no longer available.
+--
+-- -   'EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT' is a file descriptor
+--     for a Linux dma_buf. It owns a reference to the underlying memory
+--     resource represented by its Vulkan memory object.
+--
+-- -   'EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID'
+--     specifies an
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.AHardwareBuffer'
+--     object defined by the Android NDK. See
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-external-android-hardware-buffer Android Hardware Buffers>
+--     for more details of this handle type.
+--
+-- -   'EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA' is a Zircon
+--     handle to a virtual memory object.
+--
+-- -   'EXTERNAL_MEMORY_HANDLE_TYPE_RDMA_ADDRESS_BIT_NV' is a handle to an
+--     allocation accessible by remote devices. It owns a reference to the
+--     underlying memory resource represented by its Vulkan memory object.
+--
+-- -   'EXTERNAL_MEMORY_HANDLE_TYPE_SCREEN_BUFFER_BIT_QNX' specifies a
+--     'Vulkan.Extensions.VK_QNX_external_memory_screen_buffer.Screen_buffer'
+--     object defined by the QNX SDP. See
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-external-qnx-screen-buffer QNX Screen Buffer>
+--     for more details of this handle type.
+--
+-- -   'EXTERNAL_MEMORY_HANDLE_TYPE_MTLBUFFER_BIT_EXT' is a handle to a
+--     @MTLResource@ holding a @MTLBuffer@.
+--
+-- -   'EXTERNAL_MEMORY_HANDLE_TYPE_MTLTEXTURE_BIT_EXT' is a handle to a
+--     @MTLResource@ holding a @MTLTexture@.
+--
+-- -   'EXTERNAL_MEMORY_HANDLE_TYPE_MTLHEAP_BIT_EXT' is a handle to a
+--     @MTLResource@ holding a @MTLHeap@.
+--
 -- Some external memory handle types can only be shared within the same
 -- underlying physical device and\/or the same driver version, as defined
 -- in the following table:
@@ -72,6 +166,12 @@
 -- +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+
 -- | 'EXTERNAL_MEMORY_HANDLE_TYPE_SCREEN_BUFFER_BIT_QNX'               | No restriction                                                                                             | No restriction                                                                                             |
 -- +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+
+-- | 'EXTERNAL_MEMORY_HANDLE_TYPE_MTLBUFFER_BIT_EXT'                   | No restriction                                                                                             | Must match                                                                                                 |
+-- +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+
+-- | 'EXTERNAL_MEMORY_HANDLE_TYPE_MTLTEXTURE_BIT_EXT'                  | No restriction                                                                                             | Must match                                                                                                 |
+-- +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+
+-- | 'EXTERNAL_MEMORY_HANDLE_TYPE_MTLHEAP_BIT_EXT'                     | No restriction                                                                                             | Must match                                                                                                 |
+-- +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+
 --
 -- External Memory Handle Types Compatibility
 --
@@ -94,116 +194,79 @@
 --
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_memory_capabilities VK_KHR_external_memory_capabilities>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'ExternalMemoryHandleTypeFlags',
 -- 'Vulkan.Extensions.VK_KHR_external_memory_fd.ImportMemoryFdInfoKHR',
 -- 'Vulkan.Extensions.VK_EXT_external_memory_host.ImportMemoryHostPointerInfoEXT',
+-- 'Vulkan.Extensions.VK_EXT_external_memory_metal.ImportMemoryMetalHandleInfoEXT',
 -- 'Vulkan.Extensions.VK_KHR_external_memory_win32.ImportMemoryWin32HandleInfoKHR',
 -- 'Vulkan.Extensions.VK_FUCHSIA_external_memory.ImportMemoryZirconHandleInfoFUCHSIA',
 -- 'Vulkan.Extensions.VK_KHR_external_memory_fd.MemoryGetFdInfoKHR',
+-- 'Vulkan.Extensions.VK_EXT_external_memory_metal.MemoryGetMetalHandleInfoEXT',
 -- 'Vulkan.Extensions.VK_NV_external_memory_rdma.MemoryGetRemoteAddressInfoNV',
 -- 'Vulkan.Extensions.VK_KHR_external_memory_win32.MemoryGetWin32HandleInfoKHR',
 -- 'Vulkan.Extensions.VK_FUCHSIA_external_memory.MemoryGetZirconHandleInfoFUCHSIA',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceExternalBufferInfo',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceExternalImageFormatInfo',
+-- 'Vulkan.Extensions.VK_ARM_tensors.PhysicalDeviceExternalTensorInfoARM',
 -- 'Vulkan.Extensions.VK_KHR_external_memory_fd.getMemoryFdPropertiesKHR',
 -- 'Vulkan.Extensions.VK_EXT_external_memory_host.getMemoryHostPointerPropertiesEXT',
+-- 'Vulkan.Extensions.VK_EXT_external_memory_metal.getMemoryMetalHandlePropertiesEXT',
 -- 'Vulkan.Extensions.VK_KHR_external_memory_win32.getMemoryWin32HandlePropertiesKHR',
 -- 'Vulkan.Extensions.VK_FUCHSIA_external_memory.getMemoryZirconHandlePropertiesFUCHSIA'
 newtype ExternalMemoryHandleTypeFlagBits = ExternalMemoryHandleTypeFlagBits Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT' specifies a POSIX file
--- descriptor handle that has only limited valid usage outside of Vulkan
--- and other compatible APIs. It /must/ be compatible with the POSIX system
--- calls @dup@, @dup2@, @close@, and the non-standard system call @dup3@.
--- Additionally, it /must/ be transportable over a socket using an
--- @SCM_RIGHTS@ control message. It owns a reference to the underlying
--- memory resource represented by its Vulkan memory object.
+-- No documentation found for Nested "VkExternalMemoryHandleTypeFlagBits" "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT"
 pattern EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT = ExternalMemoryHandleTypeFlagBits 0x00000001
 
--- | 'EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT' specifies an NT handle
--- that has only limited valid usage outside of Vulkan and other compatible
--- APIs. It /must/ be compatible with the functions @DuplicateHandle@,
--- @CloseHandle@, @CompareObjectHandles@, @GetHandleInformation@, and
--- @SetHandleInformation@. It owns a reference to the underlying memory
--- resource represented by its Vulkan memory object.
+-- No documentation found for Nested "VkExternalMemoryHandleTypeFlagBits" "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT"
 pattern EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT = ExternalMemoryHandleTypeFlagBits 0x00000002
 
--- | 'EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT' specifies a global
--- share handle that has only limited valid usage outside of Vulkan and
--- other compatible APIs. It is not compatible with any native APIs. It
--- does not own a reference to the underlying memory resource represented
--- by its Vulkan memory object, and will therefore become invalid when all
--- Vulkan memory objects associated with it are destroyed.
+-- No documentation found for Nested "VkExternalMemoryHandleTypeFlagBits" "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT"
 pattern EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = ExternalMemoryHandleTypeFlagBits 0x00000004
 
--- | 'EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT' specifies an NT handle
--- returned by @IDXGIResource1@::@CreateSharedHandle@ referring to a
--- Direct3D 10 or 11 texture resource. It owns a reference to the memory
--- used by the Direct3D resource.
+-- No documentation found for Nested "VkExternalMemoryHandleTypeFlagBits" "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT"
 pattern EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT = ExternalMemoryHandleTypeFlagBits 0x00000008
 
--- | 'EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT' specifies a global
--- share handle returned by @IDXGIResource@::@GetSharedHandle@ referring to
--- a Direct3D 10 or 11 texture resource. It does not own a reference to the
--- underlying Direct3D resource, and will therefore become invalid when all
--- Vulkan memory objects and Direct3D resources associated with it are
--- destroyed.
+-- No documentation found for Nested "VkExternalMemoryHandleTypeFlagBits" "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT"
 pattern EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT = ExternalMemoryHandleTypeFlagBits 0x00000010
 
--- | 'EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT' specifies an NT handle
--- returned by @ID3D12Device@::@CreateSharedHandle@ referring to a Direct3D
--- 12 heap resource. It owns a reference to the resources used by the
--- Direct3D heap.
+-- No documentation found for Nested "VkExternalMemoryHandleTypeFlagBits" "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT"
 pattern EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT = ExternalMemoryHandleTypeFlagBits 0x00000020
 
--- | 'EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT' specifies an NT handle
--- returned by @ID3D12Device@::@CreateSharedHandle@ referring to a Direct3D
--- 12 committed resource. It owns a reference to the memory used by the
--- Direct3D resource.
+-- No documentation found for Nested "VkExternalMemoryHandleTypeFlagBits" "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT"
 pattern EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT = ExternalMemoryHandleTypeFlagBits 0x00000040
 
--- | 'EXTERNAL_MEMORY_HANDLE_TYPE_SCREEN_BUFFER_BIT_QNX' specifies a
--- 'Vulkan.Extensions.VK_QNX_external_memory_screen_buffer.Screen_buffer'
--- object defined by the QNX SDP. See
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-external-qnx-screen-buffer QNX Screen Buffer>
--- for more details of this handle type.
+-- No documentation found for Nested "VkExternalMemoryHandleTypeFlagBits" "VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLHEAP_BIT_EXT"
+pattern EXTERNAL_MEMORY_HANDLE_TYPE_MTLHEAP_BIT_EXT = ExternalMemoryHandleTypeFlagBits 0x00040000
+
+-- No documentation found for Nested "VkExternalMemoryHandleTypeFlagBits" "VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLTEXTURE_BIT_EXT"
+pattern EXTERNAL_MEMORY_HANDLE_TYPE_MTLTEXTURE_BIT_EXT = ExternalMemoryHandleTypeFlagBits 0x00020000
+
+-- No documentation found for Nested "VkExternalMemoryHandleTypeFlagBits" "VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLBUFFER_BIT_EXT"
+pattern EXTERNAL_MEMORY_HANDLE_TYPE_MTLBUFFER_BIT_EXT = ExternalMemoryHandleTypeFlagBits 0x00010000
+
+-- No documentation found for Nested "VkExternalMemoryHandleTypeFlagBits" "VK_EXTERNAL_MEMORY_HANDLE_TYPE_SCREEN_BUFFER_BIT_QNX"
 pattern EXTERNAL_MEMORY_HANDLE_TYPE_SCREEN_BUFFER_BIT_QNX = ExternalMemoryHandleTypeFlagBits 0x00004000
 
--- | 'EXTERNAL_MEMORY_HANDLE_TYPE_RDMA_ADDRESS_BIT_NV' is a handle to an
--- allocation accessible by remote devices. It owns a reference to the
--- underlying memory resource represented by its Vulkan memory object.
+-- No documentation found for Nested "VkExternalMemoryHandleTypeFlagBits" "VK_EXTERNAL_MEMORY_HANDLE_TYPE_RDMA_ADDRESS_BIT_NV"
 pattern EXTERNAL_MEMORY_HANDLE_TYPE_RDMA_ADDRESS_BIT_NV = ExternalMemoryHandleTypeFlagBits 0x00001000
 
--- | 'EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA' is a Zircon handle
--- to a virtual memory object.
+-- No documentation found for Nested "VkExternalMemoryHandleTypeFlagBits" "VK_EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA"
 pattern EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA = ExternalMemoryHandleTypeFlagBits 0x00000800
 
--- | 'EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT'
--- specifies a host pointer to /host mapped foreign memory/. It does not
--- own a reference to the underlying memory resource, and will therefore
--- become invalid if the foreign memory is unmapped or otherwise becomes no
--- longer available.
+-- No documentation found for Nested "VkExternalMemoryHandleTypeFlagBits" "VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT"
 pattern EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT = ExternalMemoryHandleTypeFlagBits 0x00000100
 
--- | 'EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT' specifies a host
--- pointer returned by a host memory allocation command. It does not own a
--- reference to the underlying memory resource, and will therefore become
--- invalid if the host memory is freed.
+-- No documentation found for Nested "VkExternalMemoryHandleTypeFlagBits" "VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT"
 pattern EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT = ExternalMemoryHandleTypeFlagBits 0x00000080
 
--- | 'EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID'
--- specifies an
--- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.AHardwareBuffer'
--- object defined by the Android NDK. See
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-external-android-hardware-buffer Android Hardware Buffers>
--- for more details of this handle type.
+-- No documentation found for Nested "VkExternalMemoryHandleTypeFlagBits" "VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID"
 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
--- Linux dma_buf. It owns a reference to the underlying memory resource
--- represented by its Vulkan memory object.
+-- No documentation found for Nested "VkExternalMemoryHandleTypeFlagBits" "VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT"
 pattern EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT = ExternalMemoryHandleTypeFlagBits 0x00000200
 
 conNameExternalMemoryHandleTypeFlagBits :: String
@@ -241,6 +304,18 @@
   ,
     ( EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT
     , "D3D12_RESOURCE_BIT"
+    )
+  ,
+    ( EXTERNAL_MEMORY_HANDLE_TYPE_MTLHEAP_BIT_EXT
+    , "MTLHEAP_BIT_EXT"
+    )
+  ,
+    ( EXTERNAL_MEMORY_HANDLE_TYPE_MTLTEXTURE_BIT_EXT
+    , "MTLTEXTURE_BIT_EXT"
+    )
+  ,
+    ( EXTERNAL_MEMORY_HANDLE_TYPE_MTLBUFFER_BIT_EXT
+    , "MTLBUFFER_BIT_EXT"
     )
   ,
     ( EXTERNAL_MEMORY_HANDLE_TYPE_SCREEN_BUFFER_BIT_QNX
diff --git a/src/Vulkan/Core11/Enums/ExternalSemaphoreFeatureFlagBits.hs b/src/Vulkan/Core11/Enums/ExternalSemaphoreFeatureFlagBits.hs
--- a/src/Vulkan/Core11/Enums/ExternalSemaphoreFeatureFlagBits.hs
+++ b/src/Vulkan/Core11/Enums/ExternalSemaphoreFeatureFlagBits.hs
@@ -23,19 +23,26 @@
 -- | VkExternalSemaphoreFeatureFlagBits - Bitfield describing features of an
 -- external semaphore handle type
 --
+-- = Description
+--
+-- -   'EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT' specifies that handles
+--     of this type /can/ be exported from Vulkan semaphore objects.
+--
+-- -   'EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT' specifies that handles
+--     of this type /can/ be imported as Vulkan semaphore objects.
+--
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_semaphore_capabilities VK_KHR_external_semaphore_capabilities>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'ExternalSemaphoreFeatureFlags'
 newtype ExternalSemaphoreFeatureFlagBits = ExternalSemaphoreFeatureFlagBits Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT' specifies that handles of
--- this type /can/ be exported from Vulkan semaphore objects.
+-- No documentation found for Nested "VkExternalSemaphoreFeatureFlagBits" "VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT"
 pattern EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT = ExternalSemaphoreFeatureFlagBits 0x00000001
 
--- | 'EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT' specifies that handles of
--- this type /can/ be imported as Vulkan semaphore objects.
+-- No documentation found for Nested "VkExternalSemaphoreFeatureFlagBits" "VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT"
 pattern EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT = ExternalSemaphoreFeatureFlagBits 0x00000002
 
 conNameExternalSemaphoreFeatureFlagBits :: String
diff --git a/src/Vulkan/Core11/Enums/ExternalSemaphoreHandleTypeFlagBits.hs b/src/Vulkan/Core11/Enums/ExternalSemaphoreHandleTypeFlagBits.hs
--- a/src/Vulkan/Core11/Enums/ExternalSemaphoreHandleTypeFlagBits.hs
+++ b/src/Vulkan/Core11/Enums/ExternalSemaphoreHandleTypeFlagBits.hs
@@ -34,6 +34,58 @@
 --
 -- = Description
 --
+-- -   'EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT' specifies a POSIX
+--     file descriptor handle that has only limited valid usage outside of
+--     Vulkan and other compatible APIs. It /must/ be compatible with the
+--     POSIX system calls @dup@, @dup2@, @close@, and the non-standard
+--     system call @dup3@. Additionally, it /must/ be transportable over a
+--     socket using an @SCM_RIGHTS@ control message. It owns a reference to
+--     the underlying synchronization primitive represented by its Vulkan
+--     semaphore object.
+--
+-- -   'EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT' specifies an NT
+--     handle that has only limited valid usage outside of Vulkan and other
+--     compatible APIs. It /must/ be compatible with the functions
+--     @DuplicateHandle@, @CloseHandle@, @CompareObjectHandles@,
+--     @GetHandleInformation@, and @SetHandleInformation@. It owns a
+--     reference to the underlying synchronization primitive represented by
+--     its Vulkan semaphore object.
+--
+-- -   'EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT' specifies a
+--     global share handle that has only limited valid usage outside of
+--     Vulkan and other compatible APIs. It is not compatible with any
+--     native APIs. It does not own a reference to the underlying
+--     synchronization primitive represented by its Vulkan semaphore
+--     object, and will therefore become invalid when all Vulkan semaphore
+--     objects associated with it are destroyed.
+--
+-- -   'EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT' specifies an NT
+--     handle returned by @ID3D12Device@::@CreateSharedHandle@ referring to
+--     a Direct3D 12 fence, or
+--     @ID3D11Device5@::'Vulkan.Core10.Fence.createFence' referring to a
+--     Direct3D 11 fence. It owns a reference to the underlying
+--     synchronization primitive associated with the Direct3D fence.
+--
+-- -   'EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D11_FENCE_BIT' is an alias of
+--     'EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT' with the same
+--     meaning. It is provided for convenience and code clarity when
+--     interacting with D3D11 fences.
+--
+-- -   'EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT' specifies a POSIX file
+--     descriptor handle to a Linux Sync File or Android Fence object. It
+--     can be used with any native API accepting a valid sync file or fence
+--     as input. It owns a reference to the underlying synchronization
+--     primitive associated with the file descriptor. Implementations which
+--     support importing this handle type /must/ accept any type of sync or
+--     fence FD supported by the native system they are running on.
+--
+-- -   'EXTERNAL_SEMAPHORE_HANDLE_TYPE_ZIRCON_EVENT_BIT_FUCHSIA' specifies
+--     a handle to a Zircon event object. It can be used with any native
+--     API that accepts a Zircon event handle. Zircon event handles are
+--     created with @ZX_RIGHTS_BASIC@ and @ZX_RIGHTS_SIGNAL@ rights. Vulkan
+--     on Fuchsia uses only the ZX_EVENT_SIGNALED bit when signaling or
+--     waiting.
+--
 -- Handles of type 'EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT' generated
 -- by the implementation may represent either Linux Sync Files or Android
 -- Fences at the implementation’s discretion. Applications /should/ only
@@ -66,6 +118,7 @@
 --
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_semaphore_capabilities VK_KHR_external_semaphore_capabilities>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'ExternalSemaphoreHandleTypeFlags',
 -- 'Vulkan.Extensions.VK_KHR_external_semaphore_fd.ImportSemaphoreFdInfoKHR',
@@ -78,53 +131,22 @@
 newtype ExternalSemaphoreHandleTypeFlagBits = ExternalSemaphoreHandleTypeFlagBits Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT' specifies a POSIX file
--- descriptor handle that has only limited valid usage outside of Vulkan
--- and other compatible APIs. It /must/ be compatible with the POSIX system
--- calls @dup@, @dup2@, @close@, and the non-standard system call @dup3@.
--- Additionally, it /must/ be transportable over a socket using an
--- @SCM_RIGHTS@ control message. It owns a reference to the underlying
--- synchronization primitive represented by its Vulkan semaphore object.
+-- No documentation found for Nested "VkExternalSemaphoreHandleTypeFlagBits" "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT"
 pattern EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT = ExternalSemaphoreHandleTypeFlagBits 0x00000001
 
--- | 'EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT' specifies an NT handle
--- that has only limited valid usage outside of Vulkan and other compatible
--- APIs. It /must/ be compatible with the functions @DuplicateHandle@,
--- @CloseHandle@, @CompareObjectHandles@, @GetHandleInformation@, and
--- @SetHandleInformation@. It owns a reference to the underlying
--- synchronization primitive represented by its Vulkan semaphore object.
+-- No documentation found for Nested "VkExternalSemaphoreHandleTypeFlagBits" "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT"
 pattern EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT = ExternalSemaphoreHandleTypeFlagBits 0x00000002
 
--- | 'EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT' specifies a global
--- share handle that has only limited valid usage outside of Vulkan and
--- other compatible APIs. It is not compatible with any native APIs. It
--- does not own a reference to the underlying synchronization primitive
--- represented by its Vulkan semaphore object, and will therefore become
--- invalid when all Vulkan semaphore objects associated with it are
--- destroyed.
+-- No documentation found for Nested "VkExternalSemaphoreHandleTypeFlagBits" "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT"
 pattern EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = ExternalSemaphoreHandleTypeFlagBits 0x00000004
 
--- | 'EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT' specifies an NT handle
--- returned by @ID3D12Device@::@CreateSharedHandle@ referring to a Direct3D
--- 12 fence, or @ID3D11Device5@::'Vulkan.Core10.Fence.createFence'
--- referring to a Direct3D 11 fence. It owns a reference to the underlying
--- synchronization primitive associated with the Direct3D fence.
+-- No documentation found for Nested "VkExternalSemaphoreHandleTypeFlagBits" "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT"
 pattern EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT = ExternalSemaphoreHandleTypeFlagBits 0x00000008
 
--- | 'EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT' specifies a POSIX file
--- descriptor handle to a Linux Sync File or Android Fence object. It can
--- be used with any native API accepting a valid sync file or fence as
--- input. It owns a reference to the underlying synchronization primitive
--- associated with the file descriptor. Implementations which support
--- importing this handle type /must/ accept any type of sync or fence FD
--- supported by the native system they are running on.
+-- No documentation found for Nested "VkExternalSemaphoreHandleTypeFlagBits" "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT"
 pattern EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT = ExternalSemaphoreHandleTypeFlagBits 0x00000010
 
--- | 'EXTERNAL_SEMAPHORE_HANDLE_TYPE_ZIRCON_EVENT_BIT_FUCHSIA' specifies a
--- handle to a Zircon event object. It can be used with any native API that
--- accepts a Zircon event handle. Zircon event handles are created with
--- @ZX_RIGHTS_BASIC@ and @ZX_RIGHTS_SIGNAL@ rights. Vulkan on Fuchsia uses
--- only the ZX_EVENT_SIGNALED bit when signaling or waiting.
+-- No documentation found for Nested "VkExternalSemaphoreHandleTypeFlagBits" "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_ZIRCON_EVENT_BIT_FUCHSIA"
 pattern EXTERNAL_SEMAPHORE_HANDLE_TYPE_ZIRCON_EVENT_BIT_FUCHSIA = ExternalSemaphoreHandleTypeFlagBits 0x00000080
 
 conNameExternalSemaphoreHandleTypeFlagBits :: String
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
@@ -22,17 +22,22 @@
 -- | VkFenceImportFlagBits - Bitmask specifying additional parameters of
 -- fence payload import
 --
+-- = Description
+--
+-- -   'FENCE_IMPORT_TEMPORARY_BIT' specifies that the fence payload will
+--     be imported only temporarily, as described in
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-fences-importing Importing Fence Payloads>,
+--     regardless of the permanence of @handleType@.
+--
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_fence VK_KHR_external_fence>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'FenceImportFlags'
 newtype FenceImportFlagBits = FenceImportFlagBits Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'FENCE_IMPORT_TEMPORARY_BIT' specifies that the fence payload will be
--- imported only temporarily, as described in
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-fences-importing Importing Fence Payloads>,
--- regardless of the permanence of @handleType@.
+-- No documentation found for Nested "VkFenceImportFlagBits" "VK_FENCE_IMPORT_TEMPORARY_BIT"
 pattern FENCE_IMPORT_TEMPORARY_BIT = FenceImportFlagBits 0x00000001
 
 conNameFenceImportFlagBits :: String
diff --git a/src/Vulkan/Core11/Enums/MemoryAllocateFlagBits.hs b/src/Vulkan/Core11/Enums/MemoryAllocateFlagBits.hs
--- a/src/Vulkan/Core11/Enums/MemoryAllocateFlagBits.hs
+++ b/src/Vulkan/Core11/Enums/MemoryAllocateFlagBits.hs
@@ -2,6 +2,7 @@
 -- No documentation found for Chapter "MemoryAllocateFlagBits"
 module Vulkan.Core11.Enums.MemoryAllocateFlagBits  ( MemoryAllocateFlags
                                                    , MemoryAllocateFlagBits( MEMORY_ALLOCATE_DEVICE_MASK_BIT
+                                                                           , MEMORY_ALLOCATE_ZERO_INITIALIZE_BIT_EXT
                                                                            , MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT
                                                                            , MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT
                                                                            , ..
@@ -24,52 +25,71 @@
 -- | VkMemoryAllocateFlagBits - Bitmask specifying flags for a device memory
 -- allocation
 --
+-- = Description
+--
+-- -   'MEMORY_ALLOCATE_DEVICE_MASK_BIT' specifies that memory will be
+--     allocated for the devices in
+--     'Vulkan.Core11.Promoted_From_VK_KHR_device_group.MemoryAllocateFlagsInfo'::@deviceMask@.
+--
+-- -   'MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT' specifies that the memory /can/
+--     be attached to a buffer object created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT'
+--     usage flag set.
+--
+-- -   'MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT' specifies that
+--     the memory’s address /can/ be saved and reused on a subsequent run
+--     (e.g. for trace capture and replay), see
+--     'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.BufferOpaqueCaptureAddressCreateInfo'
+--     for more detail. If this bit is set,
+--     'MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT' /must/ also be set.
+--
+-- -   'MEMORY_ALLOCATE_ZERO_INITIALIZE_BIT_EXT' specifies that the memory
+--     will be zeroed automatically by the implementation before
+--     application is able to access it.
+--
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_device_group VK_KHR_device_group>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'MemoryAllocateFlags'
 newtype MemoryAllocateFlagBits = MemoryAllocateFlagBits Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'MEMORY_ALLOCATE_DEVICE_MASK_BIT' specifies that memory will be
--- allocated for the devices in
--- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group.MemoryAllocateFlagsInfo'::@deviceMask@.
+-- No documentation found for Nested "VkMemoryAllocateFlagBits" "VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT"
 pattern MEMORY_ALLOCATE_DEVICE_MASK_BIT = MemoryAllocateFlagBits 0x00000001
 
--- | 'MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT' specifies that the
--- memory’s address /can/ be saved and reused on a subsequent run (e.g. for
--- trace capture and replay), see
--- 'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.BufferOpaqueCaptureAddressCreateInfo'
--- for more detail.
+-- No documentation found for Nested "VkMemoryAllocateFlagBits" "VK_MEMORY_ALLOCATE_ZERO_INITIALIZE_BIT_EXT"
+pattern MEMORY_ALLOCATE_ZERO_INITIALIZE_BIT_EXT = MemoryAllocateFlagBits 0x00000008
+
+-- No documentation found for Nested "VkMemoryAllocateFlagBits" "VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT"
 pattern MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = MemoryAllocateFlagBits 0x00000004
 
--- | 'MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT' specifies that the memory /can/ be
--- attached to a buffer object created with the
--- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT'
--- bit set in @usage@, and that the memory handle /can/ be used to retrieve
--- an opaque address via
--- 'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.getDeviceMemoryOpaqueCaptureAddress'.
+-- No documentation found for Nested "VkMemoryAllocateFlagBits" "VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT"
 pattern MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT = MemoryAllocateFlagBits 0x00000002
 
 conNameMemoryAllocateFlagBits :: String
 conNameMemoryAllocateFlagBits = "MemoryAllocateFlagBits"
 
 enumPrefixMemoryAllocateFlagBits :: String
-enumPrefixMemoryAllocateFlagBits = "MEMORY_ALLOCATE_DEVICE_"
+enumPrefixMemoryAllocateFlagBits = "MEMORY_ALLOCATE_"
 
 showTableMemoryAllocateFlagBits :: [(MemoryAllocateFlagBits, String)]
 showTableMemoryAllocateFlagBits =
   [
     ( MEMORY_ALLOCATE_DEVICE_MASK_BIT
-    , "MASK_BIT"
+    , "DEVICE_MASK_BIT"
     )
   ,
+    ( MEMORY_ALLOCATE_ZERO_INITIALIZE_BIT_EXT
+    , "ZERO_INITIALIZE_BIT_EXT"
+    )
+  ,
     ( MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT
-    , "ADDRESS_CAPTURE_REPLAY_BIT"
+    , "DEVICE_ADDRESS_CAPTURE_REPLAY_BIT"
     )
   ,
     ( MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT
-    , "ADDRESS_BIT"
+    , "DEVICE_ADDRESS_BIT"
     )
   ]
 
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
@@ -27,9 +27,22 @@
 --
 -- = Description
 --
+-- -   'PEER_MEMORY_FEATURE_COPY_SRC_BIT' specifies that the memory /can/
+--     be accessed as the source of any @vkCmdCopy*@ command.
+--
+-- -   'PEER_MEMORY_FEATURE_COPY_DST_BIT' specifies that the memory /can/
+--     be accessed as the destination of any @vkCmdCopy*@ command.
+--
+-- -   'PEER_MEMORY_FEATURE_GENERIC_SRC_BIT' specifies that the memory
+--     /can/ be read as any memory access type.
+--
+-- -   'PEER_MEMORY_FEATURE_GENERIC_DST_BIT' specifies that the memory
+--     /can/ be written as any memory access type. Shader atomics are
+--     considered to be writes.
+--
 -- The peer memory features of a memory heap also apply to any accesses
 -- that /may/ be performed during
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transitions>.
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -44,26 +57,22 @@
 --
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_device_group VK_KHR_device_group>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'PeerMemoryFeatureFlags'
 newtype PeerMemoryFeatureFlagBits = PeerMemoryFeatureFlagBits Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'PEER_MEMORY_FEATURE_COPY_SRC_BIT' specifies that the memory /can/ be
--- accessed as the source of any @vkCmdCopy*@ command.
+-- No documentation found for Nested "VkPeerMemoryFeatureFlagBits" "VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT"
 pattern PEER_MEMORY_FEATURE_COPY_SRC_BIT = PeerMemoryFeatureFlagBits 0x00000001
 
--- | 'PEER_MEMORY_FEATURE_COPY_DST_BIT' specifies that the memory /can/ be
--- accessed as the destination of any @vkCmdCopy*@ command.
+-- No documentation found for Nested "VkPeerMemoryFeatureFlagBits" "VK_PEER_MEMORY_FEATURE_COPY_DST_BIT"
 pattern PEER_MEMORY_FEATURE_COPY_DST_BIT = PeerMemoryFeatureFlagBits 0x00000002
 
--- | 'PEER_MEMORY_FEATURE_GENERIC_SRC_BIT' specifies that the memory /can/ be
--- read as any memory access type.
+-- No documentation found for Nested "VkPeerMemoryFeatureFlagBits" "VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT"
 pattern PEER_MEMORY_FEATURE_GENERIC_SRC_BIT = PeerMemoryFeatureFlagBits 0x00000004
 
--- | 'PEER_MEMORY_FEATURE_GENERIC_DST_BIT' specifies that the memory /can/ be
--- written as any memory access type. Shader atomics are considered to be
--- writes.
+-- No documentation found for Nested "VkPeerMemoryFeatureFlagBits" "VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT"
 pattern PEER_MEMORY_FEATURE_GENERIC_DST_BIT = PeerMemoryFeatureFlagBits 0x00000008
 
 conNamePeerMemoryFeatureFlagBits :: String
diff --git a/src/Vulkan/Core11/Enums/PointClippingBehavior.hs b/src/Vulkan/Core11/Enums/PointClippingBehavior.hs
--- a/src/Vulkan/Core11/Enums/PointClippingBehavior.hs
+++ b/src/Vulkan/Core11/Enums/PointClippingBehavior.hs
@@ -16,22 +16,29 @@
 
 -- | VkPointClippingBehavior - Enum specifying the point clipping behavior
 --
+-- = Description
+--
+-- -   'POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES' specifies that the
+--     primitive is discarded if the vertex lies outside any clip plane,
+--     including the planes bounding the view volume.
+--
+-- -   'POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY' specifies that the
+--     primitive is discarded only if the vertex lies outside any user clip
+--     plane.
+--
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance2 VK_KHR_maintenance2>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_maintenance2.PhysicalDevicePointClippingProperties',
 -- 'Vulkan.Core12.PhysicalDeviceVulkan11Properties'
 newtype PointClippingBehavior = PointClippingBehavior Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES' specifies that the primitive
--- is discarded if the vertex lies outside any clip plane, including the
--- planes bounding the view volume.
+-- No documentation found for Nested "VkPointClippingBehavior" "VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES"
 pattern POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES = PointClippingBehavior 0
 
--- | 'POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY' specifies that the
--- primitive is discarded only if the vertex lies outside any user clip
--- plane.
+-- No documentation found for Nested "VkPointClippingBehavior" "VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY"
 pattern POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY = PointClippingBehavior 1
 
 {-# COMPLETE
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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#data-format Khronos Data Format Specification>.
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#data-format Khronos Data Format Specification>.
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#data-format Khronos Data Format Specification>.
+--     <https://registry.khronos.org/vulkan/specs/latest/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:
@@ -79,10 +79,12 @@
 --
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_sampler_ycbcr_conversion VK_KHR_sampler_ycbcr_conversion>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.AndroidHardwareBufferFormatProperties2ANDROID',
 -- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.AndroidHardwareBufferFormatPropertiesANDROID',
 -- 'Vulkan.Extensions.VK_FUCHSIA_buffer_collection.BufferCollectionPropertiesFUCHSIA',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkNativeBufferFormatPropertiesOHOS VkNativeBufferFormatPropertiesOHOS>,
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionCreateInfo',
 -- 'Vulkan.Extensions.VK_QNX_external_memory_screen_buffer.ScreenBufferFormatPropertiesQNX'
 newtype SamplerYcbcrModelConversion = SamplerYcbcrModelConversion Int32
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
@@ -18,10 +18,19 @@
 --
 -- = Description
 --
+-- -   'SAMPLER_YCBCR_RANGE_ITU_FULL' specifies that the full range of the
+--     encoded values are valid and interpreted according to the ITU “full
+--     range” quantization rules.
+--
+-- -   'SAMPLER_YCBCR_RANGE_ITU_NARROW' specifies that headroom and foot
+--     room are reserved in the numerical range of encoded values, and the
+--     remaining values are expanded according to the ITU “narrow range”
+--     quantization rules.
+--
 -- The formulae for these conversions is described in the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#textures-sampler-YCbCr-conversion-rangeexpand Sampler Y′CBCR Range Expansion>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#textures-sampler-YCbCr-conversion-rangeexpand Sampler Y′CBCR Range Expansion>
 -- section of the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#textures Image Operations>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#textures Image Operations>
 -- chapter.
 --
 -- No range modification takes place if @ycbcrModel@ is
@@ -32,24 +41,21 @@
 --
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_sampler_ycbcr_conversion VK_KHR_sampler_ycbcr_conversion>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.AndroidHardwareBufferFormatProperties2ANDROID',
 -- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.AndroidHardwareBufferFormatPropertiesANDROID',
 -- 'Vulkan.Extensions.VK_FUCHSIA_buffer_collection.BufferCollectionPropertiesFUCHSIA',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkNativeBufferFormatPropertiesOHOS VkNativeBufferFormatPropertiesOHOS>,
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionCreateInfo',
 -- 'Vulkan.Extensions.VK_QNX_external_memory_screen_buffer.ScreenBufferFormatPropertiesQNX'
 newtype SamplerYcbcrRange = SamplerYcbcrRange Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'SAMPLER_YCBCR_RANGE_ITU_FULL' specifies that the full range of the
--- encoded values are valid and interpreted according to the ITU “full
--- range” quantization rules.
+-- No documentation found for Nested "VkSamplerYcbcrRange" "VK_SAMPLER_YCBCR_RANGE_ITU_FULL"
 pattern SAMPLER_YCBCR_RANGE_ITU_FULL = SamplerYcbcrRange 0
 
--- | 'SAMPLER_YCBCR_RANGE_ITU_NARROW' specifies that headroom and foot room
--- are reserved in the numerical range of encoded values, and the remaining
--- values are expanded according to the ITU “narrow range” quantization
--- rules.
+-- No documentation found for Nested "VkSamplerYcbcrRange" "VK_SAMPLER_YCBCR_RANGE_ITU_NARROW"
 pattern SAMPLER_YCBCR_RANGE_ITU_NARROW = SamplerYcbcrRange 1
 
 {-# COMPLETE
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
@@ -26,17 +26,20 @@
 --
 -- These bits have the following meanings:
 --
+-- -   'SEMAPHORE_IMPORT_TEMPORARY_BIT' specifies that the semaphore
+--     payload will be imported only temporarily, as described in
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-semaphores-importing Importing Semaphore Payloads>,
+--     regardless of the permanence of @handleType@.
+--
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_semaphore VK_KHR_external_semaphore>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'SemaphoreImportFlags'
 newtype SemaphoreImportFlagBits = SemaphoreImportFlagBits Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'SEMAPHORE_IMPORT_TEMPORARY_BIT' specifies that the semaphore payload
--- will be imported only temporarily, as described in
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-semaphores-importing Importing Semaphore Payloads>,
--- regardless of the permanence of @handleType@.
+-- No documentation found for Nested "VkSemaphoreImportFlagBits" "VK_SEMAPHORE_IMPORT_TEMPORARY_BIT"
 pattern SEMAPHORE_IMPORT_TEMPORARY_BIT = SemaphoreImportFlagBits 0x00000001
 
 conNameSemaphoreImportFlagBits :: String
diff --git a/src/Vulkan/Core11/Enums/SubgroupFeatureFlagBits.hs b/src/Vulkan/Core11/Enums/SubgroupFeatureFlagBits.hs
--- a/src/Vulkan/Core11/Enums/SubgroupFeatureFlagBits.hs
+++ b/src/Vulkan/Core11/Enums/SubgroupFeatureFlagBits.hs
@@ -9,9 +9,9 @@
                                                                              , SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT
                                                                              , SUBGROUP_FEATURE_CLUSTERED_BIT
                                                                              , SUBGROUP_FEATURE_QUAD_BIT
-                                                                             , SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT_KHR
-                                                                             , SUBGROUP_FEATURE_ROTATE_BIT_KHR
-                                                                             , SUBGROUP_FEATURE_PARTITIONED_BIT_NV
+                                                                             , SUBGROUP_FEATURE_PARTITIONED_BIT_EXT
+                                                                             , SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT
+                                                                             , SUBGROUP_FEATURE_ROTATE_BIT
                                                                              , ..
                                                                              )
                                                     ) where
@@ -32,6 +32,55 @@
 -- | VkSubgroupFeatureFlagBits - Bitmask describing what group operations are
 -- supported with subgroup scope
 --
+-- = Description
+--
+-- -   #features-subgroup-basic# 'SUBGROUP_FEATURE_BASIC_BIT' specifies the
+--     device will accept SPIR-V shader modules containing the
+--     @GroupNonUniform@ capability.
+--
+-- -   #features-subgroup-vote# 'SUBGROUP_FEATURE_VOTE_BIT' specifies the
+--     device will accept SPIR-V shader modules containing the
+--     @GroupNonUniformVote@ capability.
+--
+-- -   #features-subgroup-arithmetic# 'SUBGROUP_FEATURE_ARITHMETIC_BIT'
+--     specifies the device will accept SPIR-V shader modules containing
+--     the @GroupNonUniformArithmetic@ capability.
+--
+-- -   #features-subgroup-ballot# 'SUBGROUP_FEATURE_BALLOT_BIT' specifies
+--     the device will accept SPIR-V shader modules containing the
+--     @GroupNonUniformBallot@ capability.
+--
+-- -   #features-subgroup-shuffle# 'SUBGROUP_FEATURE_SHUFFLE_BIT' specifies
+--     the device will accept SPIR-V shader modules containing the
+--     @GroupNonUniformShuffle@ capability.
+--
+-- -   #features-subgroup-shuffle-relative#
+--     'SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT' specifies the device will
+--     accept SPIR-V shader modules containing the
+--     @GroupNonUniformShuffleRelative@ capability.
+--
+-- -   #features-subgroup-clustered# 'SUBGROUP_FEATURE_CLUSTERED_BIT'
+--     specifies the device will accept SPIR-V shader modules containing
+--     the @GroupNonUniformClustered@ capability.
+--
+-- -   #features-subgroup-quad# 'SUBGROUP_FEATURE_QUAD_BIT' specifies the
+--     device will accept SPIR-V shader modules containing the
+--     @GroupNonUniformQuad@ capability.
+--
+-- -   #features-subgroup-partitioned#
+--     'SUBGROUP_FEATURE_PARTITIONED_BIT_EXT' specifies the device will
+--     accept SPIR-V shader modules containing the
+--     @GroupNonUniformPartitionedEXT@ capability.
+--
+-- -   #features-subgroup-rotate# 'SUBGROUP_FEATURE_ROTATE_BIT' specifies
+--     the device will accept SPIR-V shader modules containing the
+--     @GroupNonUniformRotateKHR@ capability.
+--
+-- -   #features-subgroup-rotate-clustered#
+--     'SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT' specifies the device will
+--     accept SPIR-V shader modules that use the @ClusterSize@ operand to
+--     @OpGroupNonUniformRotateKHR@.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
@@ -39,62 +88,38 @@
 newtype SubgroupFeatureFlagBits = SubgroupFeatureFlagBits Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | #features-subgroup-basic# 'SUBGROUP_FEATURE_BASIC_BIT' specifies the
--- device will accept SPIR-V shader modules containing the
--- @GroupNonUniform@ capability.
+-- No documentation found for Nested "VkSubgroupFeatureFlagBits" "VK_SUBGROUP_FEATURE_BASIC_BIT"
 pattern SUBGROUP_FEATURE_BASIC_BIT = SubgroupFeatureFlagBits 0x00000001
 
--- | #features-subgroup-vote# 'SUBGROUP_FEATURE_VOTE_BIT' specifies the
--- device will accept SPIR-V shader modules containing the
--- @GroupNonUniformVote@ capability.
+-- No documentation found for Nested "VkSubgroupFeatureFlagBits" "VK_SUBGROUP_FEATURE_VOTE_BIT"
 pattern SUBGROUP_FEATURE_VOTE_BIT = SubgroupFeatureFlagBits 0x00000002
 
--- | #features-subgroup-arithmetic# 'SUBGROUP_FEATURE_ARITHMETIC_BIT'
--- specifies the device will accept SPIR-V shader modules containing the
--- @GroupNonUniformArithmetic@ capability.
+-- No documentation found for Nested "VkSubgroupFeatureFlagBits" "VK_SUBGROUP_FEATURE_ARITHMETIC_BIT"
 pattern SUBGROUP_FEATURE_ARITHMETIC_BIT = SubgroupFeatureFlagBits 0x00000004
 
--- | #features-subgroup-ballot# 'SUBGROUP_FEATURE_BALLOT_BIT' specifies the
--- device will accept SPIR-V shader modules containing the
--- @GroupNonUniformBallot@ capability.
+-- No documentation found for Nested "VkSubgroupFeatureFlagBits" "VK_SUBGROUP_FEATURE_BALLOT_BIT"
 pattern SUBGROUP_FEATURE_BALLOT_BIT = SubgroupFeatureFlagBits 0x00000008
 
--- | #features-subgroup-shuffle# 'SUBGROUP_FEATURE_SHUFFLE_BIT' specifies the
--- device will accept SPIR-V shader modules containing the
--- @GroupNonUniformShuffle@ capability.
+-- No documentation found for Nested "VkSubgroupFeatureFlagBits" "VK_SUBGROUP_FEATURE_SHUFFLE_BIT"
 pattern SUBGROUP_FEATURE_SHUFFLE_BIT = SubgroupFeatureFlagBits 0x00000010
 
--- | #features-subgroup-shuffle-relative#
--- 'SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT' specifies the device will accept
--- SPIR-V shader modules containing the @GroupNonUniformShuffleRelative@
--- capability.
+-- No documentation found for Nested "VkSubgroupFeatureFlagBits" "VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT"
 pattern SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT = SubgroupFeatureFlagBits 0x00000020
 
--- | #features-subgroup-clustered# 'SUBGROUP_FEATURE_CLUSTERED_BIT' specifies
--- the device will accept SPIR-V shader modules containing the
--- @GroupNonUniformClustered@ capability.
+-- No documentation found for Nested "VkSubgroupFeatureFlagBits" "VK_SUBGROUP_FEATURE_CLUSTERED_BIT"
 pattern SUBGROUP_FEATURE_CLUSTERED_BIT = SubgroupFeatureFlagBits 0x00000040
 
--- | #features-subgroup-quad# 'SUBGROUP_FEATURE_QUAD_BIT' specifies the
--- device will accept SPIR-V shader modules containing the
--- @GroupNonUniformQuad@ capability.
+-- No documentation found for Nested "VkSubgroupFeatureFlagBits" "VK_SUBGROUP_FEATURE_QUAD_BIT"
 pattern SUBGROUP_FEATURE_QUAD_BIT = SubgroupFeatureFlagBits 0x00000080
 
--- | #features-subgroup-rotate-clustered#
--- 'SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT_KHR' specifies the device will
--- accept SPIR-V shader modules that use the @ClusterSize@ operand to
--- @OpGroupNonUniformRotateKHR@.
-pattern SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT_KHR = SubgroupFeatureFlagBits 0x00000400
+-- No documentation found for Nested "VkSubgroupFeatureFlagBits" "VK_SUBGROUP_FEATURE_PARTITIONED_BIT_EXT"
+pattern SUBGROUP_FEATURE_PARTITIONED_BIT_EXT = SubgroupFeatureFlagBits 0x00000100
 
--- | #features-subgroup-rotate# 'SUBGROUP_FEATURE_ROTATE_BIT_KHR' specifies
--- the device will accept SPIR-V shader modules containing the
--- @GroupNonUniformRotateKHR@ capability.
-pattern SUBGROUP_FEATURE_ROTATE_BIT_KHR = SubgroupFeatureFlagBits 0x00000200
+-- No documentation found for Nested "VkSubgroupFeatureFlagBits" "VK_SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT"
+pattern SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT = SubgroupFeatureFlagBits 0x00000400
 
--- | #features-subgroup-partitioned# 'SUBGROUP_FEATURE_PARTITIONED_BIT_NV'
--- specifies the device will accept SPIR-V shader modules containing the
--- @GroupNonUniformPartitionedNV@ capability.
-pattern SUBGROUP_FEATURE_PARTITIONED_BIT_NV = SubgroupFeatureFlagBits 0x00000100
+-- No documentation found for Nested "VkSubgroupFeatureFlagBits" "VK_SUBGROUP_FEATURE_ROTATE_BIT"
+pattern SUBGROUP_FEATURE_ROTATE_BIT = SubgroupFeatureFlagBits 0x00000200
 
 conNameSubgroupFeatureFlagBits :: String
 conNameSubgroupFeatureFlagBits = "SubgroupFeatureFlagBits"
@@ -125,16 +150,16 @@
     )
   , (SUBGROUP_FEATURE_QUAD_BIT, "QUAD_BIT")
   ,
-    ( SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT_KHR
-    , "ROTATE_CLUSTERED_BIT_KHR"
+    ( SUBGROUP_FEATURE_PARTITIONED_BIT_EXT
+    , "PARTITIONED_BIT_EXT"
     )
   ,
-    ( SUBGROUP_FEATURE_ROTATE_BIT_KHR
-    , "ROTATE_BIT_KHR"
+    ( SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT
+    , "ROTATE_CLUSTERED_BIT"
     )
   ,
-    ( SUBGROUP_FEATURE_PARTITIONED_BIT_NV
-    , "PARTITIONED_BIT_NV"
+    ( SUBGROUP_FEATURE_ROTATE_BIT
+    , "ROTATE_BIT"
     )
   ]
 
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
@@ -18,26 +18,31 @@
 --
 -- = Description
 --
+-- -   'TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT' specifies that the origin of
+--     the domain space is in the upper left corner, as shown in figure
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#img-tessellation-topology-ul>.
+--
+-- -   'TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT' specifies that the origin of
+--     the domain space is in the lower left corner, as shown in figure
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#img-tessellation-topology-ll>.
+--
 -- This enum affects how the @VertexOrderCw@ and @VertexOrderCcw@
 -- tessellation execution modes are interpreted, since the winding is
 -- defined relative to the orientation of the domain.
 --
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance2 VK_KHR_maintenance2>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_maintenance2.PipelineTessellationDomainOriginStateCreateInfo',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetTessellationDomainOriginEXT'
 newtype TessellationDomainOrigin = TessellationDomainOrigin Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT' specifies that the origin of the
--- domain space is in the upper left corner, as shown in figure
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#img-tessellation-topology-ul>.
+-- No documentation found for Nested "VkTessellationDomainOrigin" "VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT"
 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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#img-tessellation-topology-ll>.
+-- No documentation found for Nested "VkTessellationDomainOrigin" "VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT"
 pattern TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT = TessellationDomainOrigin 1
 
 {-# COMPLETE
diff --git a/src/Vulkan/Core11/Handles.hs b/src/Vulkan/Core11/Handles.hs
--- a/src/Vulkan/Core11/Handles.hs
+++ b/src/Vulkan/Core11/Handles.hs
@@ -45,15 +45,17 @@
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_DEFINE_NON_DISPATCHABLE_HANDLE VK_DEFINE_NON_DISPATCHABLE_HANDLE>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_descriptor_update_template VK_KHR_descriptor_update_template>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
--- 'Vulkan.Extensions.VK_KHR_maintenance6.PushDescriptorSetWithTemplateInfoKHR',
--- 'Vulkan.Extensions.VK_KHR_descriptor_update_template.cmdPushDescriptorSetWithTemplateKHR',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance6.PushDescriptorSetWithTemplateInfo',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_push_descriptor.cmdPushDescriptorSetWithTemplate',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_push_descriptor.cmdPushDescriptorSetWithTemplate',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template.createDescriptorUpdateTemplate',
--- 'Vulkan.Extensions.VK_KHR_descriptor_update_template.createDescriptorUpdateTemplateKHR',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template.createDescriptorUpdateTemplate',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template.destroyDescriptorUpdateTemplate',
--- 'Vulkan.Extensions.VK_KHR_descriptor_update_template.destroyDescriptorUpdateTemplateKHR',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template.destroyDescriptorUpdateTemplate',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template.updateDescriptorSetWithTemplate',
--- 'Vulkan.Extensions.VK_KHR_descriptor_update_template.updateDescriptorSetWithTemplateKHR'
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template.updateDescriptorSetWithTemplate'
 newtype DescriptorUpdateTemplate = DescriptorUpdateTemplate Word64
   deriving newtype (Eq, Ord, Storable, Zero)
   deriving anyclass (IsHandle)
@@ -70,12 +72,13 @@
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_DEFINE_NON_DISPATCHABLE_HANDLE VK_DEFINE_NON_DISPATCHABLE_HANDLE>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_sampler_ycbcr_conversion VK_KHR_sampler_ycbcr_conversion>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionInfo',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.createSamplerYcbcrConversion',
--- 'Vulkan.Extensions.VK_KHR_sampler_ycbcr_conversion.createSamplerYcbcrConversionKHR',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.createSamplerYcbcrConversion',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.destroySamplerYcbcrConversion',
--- 'Vulkan.Extensions.VK_KHR_sampler_ycbcr_conversion.destroySamplerYcbcrConversionKHR'
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.destroySamplerYcbcrConversion'
 newtype SamplerYcbcrConversion = SamplerYcbcrConversion Word64
   deriving newtype (Eq, Ord, Storable, Zero)
   deriving anyclass (IsHandle)
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
@@ -131,8 +131,12 @@
 -- | VkProtectedSubmitInfo - Structure indicating whether the submission is
 -- protected
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.Queue.SubmitInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
@@ -199,12 +203,22 @@
 -- structure passed to
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
 -- it is filled in to indicate whether each corresponding feature is
--- supported. 'PhysicalDeviceProtectedMemoryFeatures' /can/ also be used in
--- the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceProtectedMemoryFeatures', it /must/ add an instance of
+-- the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
@@ -212,7 +226,7 @@
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceProtectedMemoryFeatures = PhysicalDeviceProtectedMemoryFeatures
   { -- | #extension-features-protectedMemory# @protectedMemory@ specifies whether
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-protected-memory protected memory>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-protected-memory protected memory>
     -- is supported.
     protectedMemory :: Bool }
   deriving (Typeable, Eq)
@@ -266,8 +280,12 @@
 -- it is filled in with each corresponding implementation-dependent
 -- property.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
@@ -280,10 +298,10 @@
     -- memory in an unprotected queue operation, or perform a query in a
     -- protected queue operation. If this limit is
     -- 'Vulkan.Core10.FundamentalTypes.TRUE', such writes will be discarded or
-    -- 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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-protected-access-rules>
+    -- have undefined values written; reads and queries will return poison. If
+    -- this limit is 'Vulkan.Core10.FundamentalTypes.FALSE', applications
+    -- /must/ not perform these operations. See
+    -- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -2,8 +2,6 @@
 -- No documentation found for Chapter "Originally_Based_On_VK_KHR_subgroup"
 module Vulkan.Core11.Originally_Based_On_VK_KHR_subgroup  ( PhysicalDeviceSubgroupProperties(..)
                                                           , StructureType(..)
-                                                          , SubgroupFeatureFlagBits(..)
-                                                          , SubgroupFeatureFlags
                                                           ) where
 
 import Foreign.Marshal.Alloc (allocaBytes)
@@ -31,8 +29,6 @@
 import Vulkan.Core11.Enums.SubgroupFeatureFlagBits (SubgroupFeatureFlags)
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES))
 import Vulkan.Core10.Enums.StructureType (StructureType(..))
-import Vulkan.Core11.Enums.SubgroupFeatureFlagBits (SubgroupFeatureFlagBits(..))
-import Vulkan.Core11.Enums.SubgroupFeatureFlagBits (SubgroupFeatureFlags)
 -- | VkPhysicalDeviceSubgroupProperties - Structure describing subgroup
 -- support for an implementation
 --
@@ -47,49 +43,70 @@
 -- property.
 --
 -- If @supportedOperations@ includes
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-subgroup-quad >,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-subgroup-quad >,
 -- or the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-shaderSubgroupUniformControlFlow shaderSubgroupUniformControlFlow>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-shaderSubgroupUniformControlFlow shaderSubgroupUniformControlFlow>
 -- feature is enabled, @subgroupSize@ /must/ be greater than or equal to 4.
 --
 -- If the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-shaderQuadControl shaderQuadControl>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-shaderQuadControl shaderQuadControl>
 -- feature is supported, @supportedOperations@ /must/ include
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-subgroup-quad >.
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-subgroup-quad >.
 --
 -- If
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_shader_subgroup_rotate VK_KHR_shader_subgroup_rotate>
 -- is supported, and the implementation advertises support with a
 -- 'Vulkan.Core10.ExtensionDiscovery.ExtensionProperties'::@specVersion@
 -- greater than or equal to 2, and the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-shaderSubgroupRotate shaderSubgroupRotate>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-shaderSubgroupRotate shaderSubgroupRotate>
 -- feature is supported,
--- 'Vulkan.Core11.Enums.SubgroupFeatureFlagBits.SUBGROUP_FEATURE_ROTATE_BIT_KHR'
--- /must/ be returned in @supportedOperations@. If
+-- 'Vulkan.Core11.Enums.SubgroupFeatureFlagBits.SUBGROUP_FEATURE_ROTATE_BIT'
+-- /must/ be returned in
+-- 'Vulkan.Core12.PhysicalDeviceVulkan11Properties'::@subgroupSupportedOperations@
+-- and 'PhysicalDeviceSubgroupProperties'::@supportedOperations@. If
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_shader_subgroup_rotate VK_KHR_shader_subgroup_rotate>
 -- is supported, and the implementation advertises support with a
 -- 'Vulkan.Core10.ExtensionDiscovery.ExtensionProperties'::@specVersion@
 -- greater than or equal to 2, and the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-shaderSubgroupRotateClustered shaderSubgroupRotateClustered>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-shaderSubgroupRotateClustered shaderSubgroupRotateClustered>
 -- feature is supported,
--- 'Vulkan.Core11.Enums.SubgroupFeatureFlagBits.SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT_KHR'
--- /must/ be returned in @supportedOperations@.
+-- 'Vulkan.Core11.Enums.SubgroupFeatureFlagBits.SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT'
+-- /must/ be returned in
+-- 'Vulkan.Core12.PhysicalDeviceVulkan11Properties'::@subgroupSupportedOperations@
+-- and 'PhysicalDeviceSubgroupProperties'::@supportedOperations@.
 --
--- 'Vulkan.Core11.Enums.SubgroupFeatureFlagBits.SUBGROUP_FEATURE_ROTATE_BIT_KHR'
+-- If Vulkan 1.4 is supported,
+-- 'Vulkan.Core11.Enums.SubgroupFeatureFlagBits.SUBGROUP_FEATURE_ROTATE_BIT'
 -- and
--- 'Vulkan.Core11.Enums.SubgroupFeatureFlagBits.SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT_KHR'
+-- 'Vulkan.Core11.Enums.SubgroupFeatureFlagBits.SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT'
+-- /must/ be returned in
+-- 'PhysicalDeviceSubgroupProperties'::@supportedOperations@ and
+-- 'Vulkan.Core12.PhysicalDeviceVulkan11Properties'::@subgroupSupportedOperations@
+--
+-- 'Vulkan.Core11.Enums.SubgroupFeatureFlagBits.SUBGROUP_FEATURE_ROTATE_BIT'
+-- and
+-- 'Vulkan.Core11.Enums.SubgroupFeatureFlagBits.SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT'
 -- were added in version 2 of the
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_shader_subgroup_rotate VK_KHR_shader_subgroup_rotate>
 -- extension, after the initial release, so there are implementations that
 -- do not advertise these bits. Applications should use the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-shaderSubgroupRotate shaderSubgroupRotate>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-shaderSubgroupRotate shaderSubgroupRotate>
 -- and
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-shaderSubgroupRotateClustered shaderSubgroupRotateClustered>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-shaderSubgroupRotateClustered shaderSubgroupRotateClustered>
 -- features to determine and enable support. These bits are advertised here
 -- for consistency and for future dependencies.
 --
--- == Valid Usage (Implicit)
+-- If the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-shaderSubgroupPartitioned shaderSubgroupPartitioned>
+-- feature is supported, @supportedOperations@ /must/ include
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-subgroup-partitioned >.
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
@@ -109,9 +126,9 @@
     -- bitfield of
     -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits' describing
     -- the shader stages that
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-group-operations group operations>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-group-operations group operations>
     -- with
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-scope-subgroup subgroup scope>
+    -- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -121,9 +138,9 @@
     -- a bitmask of
     -- 'Vulkan.Core11.Enums.SubgroupFeatureFlagBits.SubgroupFeatureFlagBits'
     -- specifying the sets of
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-group-operations group operations>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-group-operations group operations>
     -- with
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-scope-subgroup subgroup scope>
+    -- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -132,7 +149,7 @@
     supportedOperations :: SubgroupFeatureFlags
   , -- | #extension-limits-subgroupQuadOperationsInAllStages#
     -- @quadOperationsInAllStages@ is a boolean specifying whether
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-quad-operations quad group operations>
+    -- <https://registry.khronos.org/vulkan/specs/latest/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_16bit_storage.hs b/src/Vulkan/Core11/Promoted_From_VK_KHR_16bit_storage.hs
--- a/src/Vulkan/Core11/Promoted_From_VK_KHR_16bit_storage.hs
+++ b/src/Vulkan/Core11/Promoted_From_VK_KHR_16bit_storage.hs
@@ -41,14 +41,25 @@
 -- structure passed to
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
 -- it is filled in to indicate whether each corresponding feature is
--- supported. 'PhysicalDevice16BitStorageFeatures' /can/ also be used in
--- the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDevice16BitStorageFeatures', it /must/ add an instance of the
+-- structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_16bit_storage VK_KHR_16bit_storage>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
@@ -58,8 +69,14 @@
     -- @ShaderRecordBufferKHR@, or @PhysicalStorageBuffer@ storage class with
     -- the @Block@ decoration /can/ have 16-bit integer and 16-bit
     -- floating-point members. If this feature is not enabled, 16-bit integer
-    -- or 16-bit floating-point members /must/ not be used in such objects.
-    -- This also specifies whether shader modules /can/ declare the
+    -- or 16-bit floating-point members /must/ not be used in such objects
+    -- unless
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#extension-features-storageBuffer8BitAccess storageBuffer8BitAccess>
+    -- or
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#extension-features-uniformAndStorageBuffer8BitAccess uniformAndStorageBuffer8BitAccess>
+    -- are enabled or they are accessed in 32-bit multiples if
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-shaderUntypedPointers shaderUntypedPointers>
+    -- is enabled. This also specifies whether shader modules /can/ declare the
     -- @StorageBuffer16BitAccess@ capability.
     storageBuffer16BitAccess :: Bool
   , -- | #extension-features-uniformAndStorageBuffer16BitAccess#
@@ -67,15 +84,23 @@
     -- @Uniform@ storage class with the @Block@ decoration /can/ have 16-bit
     -- integer and 16-bit floating-point members. If this feature is not
     -- enabled, 16-bit integer or 16-bit floating-point members /must/ not be
-    -- used in such objects. This also specifies whether shader modules /can/
-    -- declare the @UniformAndStorageBuffer16BitAccess@ capability.
+    -- used in such objects unless
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#extension-features-uniformAndStorageBuffer8BitAccess uniformAndStorageBuffer8BitAccess>
+    -- are enabled or they are accessed in 32-bit multiples if
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-shaderUntypedPointers shaderUntypedPointers>
+    -- is enabled. This also specifies whether shader modules /can/ declare the
+    -- @UniformAndStorageBuffer16BitAccess@ capability.
     uniformAndStorageBuffer16BitAccess :: Bool
   , -- | #extension-features-storagePushConstant16# @storagePushConstant16@
     -- specifies whether objects in the @PushConstant@ storage class /can/ have
     -- 16-bit integer and 16-bit floating-point members. If this feature is not
     -- enabled, 16-bit integer or floating-point members /must/ not be used in
-    -- such objects. This also specifies whether shader modules /can/ declare
-    -- the @StoragePushConstant16@ capability.
+    -- such objects unless
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#extension-features-storagePushConstant8 storagePushConstant8>
+    -- are enabled or they are accessed in 32-bit multiples if
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-shaderUntypedPointers shaderUntypedPointers>
+    -- is enabled. This also specifies whether shader modules /can/ declare the
+    -- @StoragePushConstant16@ capability.
     storagePushConstant16 :: Bool
   , -- | #extension-features-storageInputOutput16# @storageInputOutput16@
     -- specifies whether objects in the @Input@ and @Output@ storage classes
diff --git a/src/Vulkan/Core11/Promoted_From_VK_KHR_bind_memory2.hs b/src/Vulkan/Core11/Promoted_From_VK_KHR_bind_memory2.hs
--- a/src/Vulkan/Core11/Promoted_From_VK_KHR_bind_memory2.hs
+++ b/src/Vulkan/Core11/Promoted_From_VK_KHR_bind_memory2.hs
@@ -49,7 +49,7 @@
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2 (BindImageMemoryDeviceGroupInfo)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_swapchain (BindImageMemorySwapchainInfoKHR)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion (BindImagePlaneMemoryInfo)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance6 (BindMemoryStatusKHR)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_maintenance6 (BindMemoryStatus)
 import Vulkan.Core10.Handles (Buffer)
 import Vulkan.CStruct.Extends (Chain)
 import Vulkan.Core10.Handles (Device)
@@ -94,7 +94,7 @@
 -- bindings into a single command.
 --
 -- If the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-maintenance6 maintenance6>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance6 maintenance6>
 -- feature is enabled, this command /must/ attempt to perform all of the
 -- memory binding operations described by @pBindInfos@, and /must/ not
 -- early exit on the first failure.
@@ -105,10 +105,11 @@
 -- did not return 'Vulkan.Core10.Enums.Result.SUCCESS'.
 --
 -- If the 'bindBufferMemory2' command failed,
--- 'Vulkan.Extensions.VK_KHR_maintenance6.BindMemoryStatusKHR' structures
--- were not included in the @pNext@ chains of each element of @pBindInfos@,
--- and @bindInfoCount@ was greater than one, then the buffers referenced by
--- @pBindInfos@ will be in an indeterminate state, and must not be used.
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance6.BindMemoryStatus'
+-- structures were not included in the @pNext@ chains of each element of
+-- @pBindInfos@, and @bindInfoCount@ was greater than one, then the buffers
+-- referenced by @pBindInfos@ will be in an indeterminate state, and must
+-- not be used.
 --
 -- Applications should destroy these buffers.
 --
@@ -120,14 +121,19 @@
 --
 -- [<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.Extensions.VK_KHR_buffer_device_address.ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR'
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
 --
---     -   'Vulkan.Extensions.VK_KHR_buffer_device_address.ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_bind_memory2 VK_KHR_bind_memory2>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'BindBufferMemoryInfo', 'Vulkan.Core10.Handles.Device'
 bindBufferMemory2 :: forall io
@@ -174,7 +180,7 @@
 -- bindings into a single command.
 --
 -- If the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-maintenance6 maintenance6>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance6 maintenance6>
 -- feature is enabled, this command /must/ attempt to perform all of the
 -- memory binding operations described by @pBindInfos@, and /must/ not
 -- early exit on the first failure.
@@ -185,10 +191,11 @@
 -- did not return 'Vulkan.Core10.Enums.Result.SUCCESS'.
 --
 -- If the 'bindImageMemory2' command failed,
--- 'Vulkan.Extensions.VK_KHR_maintenance6.BindMemoryStatusKHR' structures
--- were not included in the @pNext@ chains of each element of @pBindInfos@,
--- and @bindInfoCount@ was greater than one, then the images referenced by
--- @pBindInfos@ will be in an indeterminate state, and must not be used.
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance6.BindMemoryStatus'
+-- structures were not included in the @pNext@ chains of each element of
+-- @pBindInfos@, and @bindInfoCount@ was greater than one, then the images
+-- referenced by @pBindInfos@ will be in an indeterminate state, and must
+-- not be used.
 --
 -- Applications should destroy these images.
 --
@@ -223,12 +230,17 @@
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_bind_memory2 VK_KHR_bind_memory2>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'BindImageMemoryInfo', 'Vulkan.Core10.Handles.Device'
 bindImageMemory2 :: forall io
@@ -275,20 +287,46 @@
 --     'Vulkan.Core10.MemoryManagement.getBufferMemoryRequirements' with
 --     @buffer@
 --
--- -   #VUID-VkBindBufferMemoryInfo-memoryOffset-01036# @memoryOffset@
---     /must/ be an integer multiple of the @alignment@ member of the
+-- -   #VUID-VkBindBufferMemoryInfo-None-10739# If @memory@ was not
+--     allocated from a memory heap with the
+--     'Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_TILE_MEMORY_BIT_QCOM'
+--     property set, @memoryOffset@ /must/ be an integer multiple of the
+--     @alignment@ member of the
 --     'Vulkan.Core10.MemoryManagement.MemoryRequirements' structure
 --     returned from a call to
 --     'Vulkan.Core10.MemoryManagement.getBufferMemoryRequirements' with
 --     @buffer@
 --
--- -   #VUID-VkBindBufferMemoryInfo-size-01037# The @size@ member of the
+-- -   #VUID-VkBindBufferMemoryInfo-memory-10740# If @memory@ was allocated
+--     from a memory heap with the
+--     'Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_TILE_MEMORY_BIT_QCOM'
+--     property set, @memoryOffset@ /must/ be an integer multiple of the
+--     @alignment@ member of the
+--     'Vulkan.Extensions.VK_QCOM_tile_memory_heap.TileMemoryRequirementsQCOM'
+--     structure returned from a call to
+--     'Vulkan.Core10.MemoryManagement.getBufferMemoryRequirements' with
+--     @buffer@
+--
+-- -   #VUID-VkBindBufferMemoryInfo-None-10741# If @memory@ was not
+--     allocated from a memory heap with the
+--     'Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_TILE_MEMORY_BIT_QCOM'
+--     property set, @size@ member of the
 --     'Vulkan.Core10.MemoryManagement.MemoryRequirements' structure
 --     returned from a call to
 --     'Vulkan.Core10.MemoryManagement.getBufferMemoryRequirements' with
 --     @buffer@ /must/ be less than or equal to the size of @memory@ minus
 --     @memoryOffset@
 --
+-- -   #VUID-VkBindBufferMemoryInfo-memory-10742# If @memory@ was allocated
+--     from a memory heap with the
+--     'Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_TILE_MEMORY_BIT_QCOM'
+--     property set, @size@ member of the
+--     'Vulkan.Extensions.VK_QCOM_tile_memory_heap.TileMemoryRequirementsQCOM'
+--     structure returned from a call to
+--     'Vulkan.Core10.MemoryManagement.getBufferMemoryRequirements' with
+--     @buffer@ /must/ be less than or equal to the size of @memory@ minus
+--     @memoryOffset@
+--
 -- -   #VUID-VkBindBufferMemoryInfo-buffer-01444# If @buffer@ requires a
 --     dedicated allocation (as reported by
 --     'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.getBufferMemoryRequirements2'
@@ -309,6 +347,14 @@
 --     'Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo'::@buffer@,
 --     and @memoryOffset@ /must/ be zero
 --
+-- -   #VUID-VkBindBufferMemoryInfo-memory-10925# If the
+--     'Vulkan.Core10.Memory.MemoryAllocateInfo' provided when @memory@ was
+--     allocated included a
+--     'Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo'
+--     structure in its @pNext@ chain,
+--     'Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo'::@image@
+--     /must/ have been 'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
 -- -   #VUID-VkBindBufferMemoryInfo-None-01898# If @buffer@ was created
 --     with the
 --     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT'
@@ -369,7 +415,7 @@
 --     'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.PhysicalDeviceBufferDeviceAddressFeatures'::@bufferDeviceAddress@
 --     feature is enabled and @buffer@ was created with the
 --     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT'
---     bit set, @memory@ /must/ have been allocated with the
+--     usage flag set, @memory@ /must/ have been allocated with the
 --     'Vulkan.Core11.Enums.MemoryAllocateFlagBits.MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT'
 --     bit set
 --
@@ -404,6 +450,15 @@
 --     'Vulkan.Core11.Enums.MemoryAllocateFlagBits.MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT'
 --     bit set
 --
+-- -   #VUID-VkBindBufferMemoryInfo-buffer-11408# If the @buffer@ was
+--     created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_DESCRIPTOR_HEAP_BIT_EXT'
+--     or
+--     'Vulkan.Core14.Enums.BufferUsageFlags2.BUFFER_USAGE_2_DESCRIPTOR_HEAP_BIT_EXT'
+--     bit set, @memory@ /must/ have been allocated with the
+--     'Vulkan.Core11.Enums.MemoryAllocateFlagBits.MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT'
+--     bit set
+--
 -- -   #VUID-VkBindBufferMemoryInfo-pNext-01605# If the @pNext@ chain
 --     includes a
 --     'Vulkan.Core11.Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2.BindBufferMemoryDeviceGroupInfo'
@@ -420,10 +475,11 @@
 --     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_groupAndVK_KHR_bind_memory2.BindBufferMemoryDeviceGroupInfo'
---     or 'Vulkan.Extensions.VK_KHR_maintenance6.BindMemoryStatusKHR'
+--     or
+--     'Vulkan.Core14.Promoted_From_VK_KHR_maintenance6.BindMemoryStatus'
 --
 -- -   #VUID-VkBindBufferMemoryInfo-sType-unique# The @sType@ value of each
---     struct in the @pNext@ chain /must/ be unique
+--     structure in the @pNext@ chain /must/ be unique
 --
 -- -   #VUID-VkBindBufferMemoryInfo-buffer-parameter# @buffer@ /must/ be a
 --     valid 'Vulkan.Core10.Handles.Buffer' handle
@@ -435,13 +491,18 @@
 --     @memory@ /must/ have been created, allocated, or retrieved from the
 --     same 'Vulkan.Core10.Handles.Device'
 --
+-- == Host Synchronization
+--
+-- -   Host access to @buffer@ /must/ be externally synchronized
+--
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_bind_memory2 VK_KHR_bind_memory2>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.DeviceMemory',
 -- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType', 'bindBufferMemory2',
--- 'Vulkan.Extensions.VK_KHR_bind_memory2.bindBufferMemory2KHR'
+-- 'bindBufferMemory2'
 data BindBufferMemoryInfo (es :: [Type]) = BindBufferMemoryInfo
   { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
@@ -469,7 +530,7 @@
   getNext BindBufferMemoryInfo{..} = next
   extends :: forall e b proxy. Typeable e => proxy e -> (Extends BindBufferMemoryInfo e => b) -> Maybe b
   extends _ f
-    | Just Refl <- eqT @e @BindMemoryStatusKHR = Just f
+    | Just Refl <- eqT @e @BindMemoryStatus = Just f
     | Just Refl <- eqT @e @BindBufferMemoryDeviceGroupInfo = Just f
     | otherwise = Nothing
 
@@ -570,6 +631,14 @@
 --     parameter of the image being bound /must/ be equal to or smaller
 --     than the original image for which the allocation was created
 --
+-- -   #VUID-VkBindImageMemoryInfo-memory-10926# If the
+--     'Vulkan.Core10.Memory.MemoryAllocateInfo' provided when @memory@ was
+--     allocated included a
+--     'Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo'
+--     structure in its @pNext@ chain,
+--     'Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo'::@buffer@
+--     /must/ have been 'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
 -- -   #VUID-VkBindImageMemoryInfo-None-01901# If image was created with
 --     the
 --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_PROTECTED_BIT'
@@ -625,16 +694,16 @@
 --     'Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryImageCreateInfo'::@handleTypes@
 --     when @image@ was created
 --
--- -   #VUID-VkBindImageMemoryInfo-descriptorBufferCaptureReplay-08113# If
---     the @image@ was created with the
---     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT'
+-- -   #VUID-VkBindImageMemoryInfo-image-08113# If the @image@ was created
+--     with the
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_DESCRIPTOR_HEAP_CAPTURE_REPLAY_BIT_EXT'
 --     bit set, @memory@ /must/ have been allocated with the
 --     'Vulkan.Core11.Enums.MemoryAllocateFlagBits.MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT'
 --     bit set
 --
 -- -   #VUID-VkBindImageMemoryInfo-image-09202# If the @image@ was created
 --     with the
---     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT'
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_DESCRIPTOR_HEAP_CAPTURE_REPLAY_BIT_EXT'
 --     bit set, @memory@ /must/ have been allocated with the
 --     'Vulkan.Core11.Enums.MemoryAllocateFlagBits.MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT'
 --     bit set
@@ -642,8 +711,11 @@
 -- -   #VUID-VkBindImageMemoryInfo-pNext-01615# If the @pNext@ chain does
 --     not include a
 --     'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.BindImagePlaneMemoryInfo'
---     structure, @memory@ /must/ have been allocated using one of the
---     memory types allowed in the @memoryTypeBits@ member of the
+--     structure, and @memory@ was not allocated from a memory heap with
+--     the
+--     'Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_TILE_MEMORY_BIT_QCOM'
+--     property set, then @memory@ /must/ have been allocated using one of
+--     the memory types allowed in the @memoryTypeBits@ member of the
 --     'Vulkan.Core10.MemoryManagement.MemoryRequirements' structure
 --     returned from a call to
 --     'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.getImageMemoryRequirements2'
@@ -652,8 +724,11 @@
 -- -   #VUID-VkBindImageMemoryInfo-pNext-01616# If the @pNext@ chain does
 --     not include a
 --     'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.BindImagePlaneMemoryInfo'
---     structure, @memoryOffset@ /must/ be an integer multiple of the
---     @alignment@ member of the
+--     structure, and @memory@ was not allocated from a memory heap with
+--     the
+--     'Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_TILE_MEMORY_BIT_QCOM'
+--     property set, then @memoryOffset@ /must/ be an integer multiple of
+--     the @alignment@ member of the
 --     'Vulkan.Core10.MemoryManagement.MemoryRequirements' structure
 --     returned from a call to
 --     'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.getImageMemoryRequirements2'
@@ -662,13 +737,40 @@
 -- -   #VUID-VkBindImageMemoryInfo-pNext-01617# If the @pNext@ chain does
 --     not include a
 --     'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.BindImagePlaneMemoryInfo'
---     structure, the difference of the size of @memory@ and @memoryOffset@
---     /must/ be greater than or equal to the @size@ member of the
---     'Vulkan.Core10.MemoryManagement.MemoryRequirements' structure
+--     structure, and @memory@ was not allocated from a memory heap with
+--     the
+--     'Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_TILE_MEMORY_BIT_QCOM'
+--     property set, then the difference of the size of @memory@ and
+--     @memoryOffset@ /must/ be greater than or equal to the @size@ member
+--     of the 'Vulkan.Core10.MemoryManagement.MemoryRequirements' structure
 --     returned from a call to
 --     'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.getImageMemoryRequirements2'
 --     with the same @image@
 --
+-- -   #VUID-VkBindImageMemoryInfo-pNext-12329# If the @pNext@ chain does
+--     not include a
+--     'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.BindImagePlaneMemoryInfo'
+--     structure, and @memory@ was allocated from a memory heap with the
+--     'Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_TILE_MEMORY_BIT_QCOM'
+--     property set, then @memoryOffset@ /must/ be an integer multiple of
+--     the @alignment@ member of the
+--     'Vulkan.Extensions.VK_QCOM_tile_memory_heap.TileMemoryRequirementsQCOM'
+--     structure returned from a call to
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.getImageMemoryRequirements2'
+--     with @image@
+--
+-- -   #VUID-VkBindImageMemoryInfo-pNext-12330# If the @pNext@ chain does
+--     not include a
+--     'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.BindImagePlaneMemoryInfo'
+--     structure, and @memory@ was allocated from a memory heap with the
+--     'Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_TILE_MEMORY_BIT_QCOM'
+--     property set, then @size@ member of the
+--     'Vulkan.Extensions.VK_QCOM_tile_memory_heap.TileMemoryRequirementsQCOM'
+--     structure returned from a call to
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.getImageMemoryRequirements2'
+--     with @image@ /must/ be less than or equal to the size of @memory@
+--     minus @memoryOffset@
+--
 -- -   #VUID-VkBindImageMemoryInfo-pNext-01618# If the @pNext@ chain
 --     includes a
 --     'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.BindImagePlaneMemoryInfo'
@@ -793,10 +895,11 @@
 --     'Vulkan.Core11.Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2.BindImageMemoryDeviceGroupInfo',
 --     'Vulkan.Extensions.VK_KHR_swapchain.BindImageMemorySwapchainInfoKHR',
 --     'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.BindImagePlaneMemoryInfo',
---     or 'Vulkan.Extensions.VK_KHR_maintenance6.BindMemoryStatusKHR'
+--     or
+--     'Vulkan.Core14.Promoted_From_VK_KHR_maintenance6.BindMemoryStatus'
 --
 -- -   #VUID-VkBindImageMemoryInfo-sType-unique# The @sType@ value of each
---     struct in the @pNext@ chain /must/ be unique
+--     structure in the @pNext@ chain /must/ be unique
 --
 -- -   #VUID-VkBindImageMemoryInfo-image-parameter# @image@ /must/ be a
 --     valid 'Vulkan.Core10.Handles.Image' handle
@@ -806,14 +909,19 @@
 --     have been created, allocated, or retrieved from the same
 --     'Vulkan.Core10.Handles.Device'
 --
+-- == Host Synchronization
+--
+-- -   Host access to @image@ /must/ be externally synchronized
+--
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_bind_memory2 VK_KHR_bind_memory2>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core10.Handles.DeviceMemory',
 -- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
 -- 'Vulkan.Core10.Handles.Image',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType', 'bindImageMemory2',
--- 'Vulkan.Extensions.VK_KHR_bind_memory2.bindImageMemory2KHR'
+-- 'bindImageMemory2'
 data BindImageMemoryInfo (es :: [Type]) = BindImageMemoryInfo
   { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
@@ -841,7 +949,7 @@
   getNext BindImageMemoryInfo{..} = next
   extends :: forall e b proxy. Typeable e => proxy e -> (Extends BindImageMemoryInfo e => b) -> Maybe b
   extends _ f
-    | Just Refl <- eqT @e @BindMemoryStatusKHR = Just f
+    | Just Refl <- eqT @e @BindMemoryStatus = Just f
     | Just Refl <- eqT @e @BindImagePlaneMemoryInfo = Just f
     | Just Refl <- eqT @e @BindImageMemorySwapchainInfoKHR = Just f
     | Just Refl <- eqT @e @BindImageMemoryDeviceGroupInfo = Just f
diff --git a/src/Vulkan/Core11/Promoted_From_VK_KHR_dedicated_allocation.hs b/src/Vulkan/Core11/Promoted_From_VK_KHR_dedicated_allocation.hs
--- a/src/Vulkan/Core11/Promoted_From_VK_KHR_dedicated_allocation.hs
+++ b/src/Vulkan/Core11/Promoted_From_VK_KHR_dedicated_allocation.hs
@@ -36,13 +36,16 @@
 -- = Description
 --
 -- To determine the dedicated allocation requirements of a buffer or image
--- resource, add a 'MemoryDedicatedRequirements' structure to the @pNext@
--- chain of the
+-- or tensor resource, add a 'MemoryDedicatedRequirements' structure to the
+-- @pNext@ chain of the
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.MemoryRequirements2'
 -- structure passed as the @pMemoryRequirements@ parameter of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.getBufferMemoryRequirements2'
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.getBufferMemoryRequirements2',
+-- 'Vulkan.Extensions.VK_ARM_tensors.getTensorMemoryRequirementsARM',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_maintenance4.getDeviceBufferMemoryRequirements',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_maintenance4.getDeviceImageMemoryRequirements',
 -- or
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.getImageMemoryRequirements2',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.getImageMemoryRequirements2'
 -- respectively.
 --
 -- Constraints on the values returned for buffer resources are:
@@ -103,13 +106,43 @@
 --     @requiresDedicatedAllocation@ will be
 --     'Vulkan.Core10.FundamentalTypes.FALSE'.
 --
+-- Constraints on the values returned for tensor resources are:
+--
+-- -   @requiresDedicatedAllocation@ /may/ be
+--     'Vulkan.Core10.FundamentalTypes.TRUE' if the @pNext@ chain of
+--     'Vulkan.Extensions.VK_ARM_tensors.TensorCreateInfoARM' for the call
+--     to 'Vulkan.Extensions.VK_ARM_tensors.createTensorARM' used to create
+--     the tensor being queried included a
+--     'Vulkan.Extensions.VK_ARM_tensors.ExternalMemoryTensorCreateInfoARM'
+--     structure, and any of the handle types specified in
+--     'Vulkan.Extensions.VK_ARM_tensors.ExternalMemoryTensorCreateInfoARM'::@handleTypes@
+--     requires dedicated allocation, as reported by
+--     'Vulkan.Extensions.VK_ARM_tensors.getPhysicalDeviceExternalTensorPropertiesARM'
+--     in
+--     'Vulkan.Extensions.VK_ARM_tensors.ExternalTensorPropertiesARM'::@externalMemoryProperties.externalMemoryFeatures@.
+--
+-- -   @requiresDedicatedAllocation@ will otherwise be
+--     'Vulkan.Core10.FundamentalTypes.FALSE'.
+--
+-- -   When the implementation sets @requiresDedicatedAllocation@ to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', it /must/ also set
+--     @prefersDedicatedAllocation@ to
+--     'Vulkan.Core10.FundamentalTypes.TRUE'.
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-VkMemoryDedicatedRequirements-sType-sType# @sType@ /must/ be
 --     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS'
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.MemoryRequirements2'
+--
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dedicated_allocation VK_KHR_dedicated_allocation>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
@@ -179,7 +212,7 @@
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE' and the memory is not an
 --     imported Android Hardware Buffer or an imported QNX Screen buffer ,
 --     'Vulkan.Core10.Memory.MemoryAllocateInfo'::@allocationSize@ /must/
---     equal the
+--     be greater than or equal to the
 --     'Vulkan.Core10.MemoryManagement.MemoryRequirements'::@size@ of the
 --     image
 --
@@ -193,7 +226,7 @@
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE' and the memory is not an
 --     imported Android Hardware Buffer or an imported QNX Screen buffer ,
 --     'Vulkan.Core10.Memory.MemoryAllocateInfo'::@allocationSize@ /must/
---     equal the
+--     be greater than or equal to the
 --     'Vulkan.Core10.MemoryManagement.MemoryRequirements'::@size@ of the
 --     buffer
 --
@@ -295,8 +328,15 @@
 --     have been created, allocated, or retrieved from the same
 --     'Vulkan.Core10.Handles.Device'
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.Memory.MemoryAllocateInfo'
+--
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dedicated_allocation VK_KHR_dedicated_allocation>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.Image',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
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
@@ -114,6 +114,9 @@
 --     @pDescriptorUpdateTemplate@ /must/ be a valid pointer to a
 --     'Vulkan.Core11.Handles.DescriptorUpdateTemplate' handle
 --
+-- -   #VUID-vkCreateDescriptorUpdateTemplate-device-queuecount# The device
+--     /must/ have been created with at least @1@ queue
+--
 -- == Return Codes
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
@@ -122,12 +125,17 @@
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_descriptor_update_template VK_KHR_descriptor_update_template>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',
 -- 'Vulkan.Core11.Handles.DescriptorUpdateTemplate',
@@ -140,11 +148,11 @@
                                -> -- | @pCreateInfo@ is a pointer to a 'DescriptorUpdateTemplateCreateInfo'
                                   -- structure specifying the set of descriptors to update with a single call
                                   -- to
-                                  -- 'Vulkan.Extensions.VK_KHR_descriptor_update_template.cmdPushDescriptorSetWithTemplateKHR'
+                                  -- 'Vulkan.Core14.Promoted_From_VK_KHR_push_descriptor.cmdPushDescriptorSetWithTemplate'
                                   -- or 'updateDescriptorSetWithTemplate'.
                                   DescriptorUpdateTemplateCreateInfo
                                -> -- | @pAllocator@ controls host memory allocation as described in the
-                                  -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                                  -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
                                   -- chapter.
                                   ("allocator" ::: Maybe AllocationCallbacks)
                                -> io (DescriptorUpdateTemplate)
@@ -232,6 +240,7 @@
 --
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_descriptor_update_template VK_KHR_descriptor_update_template>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',
 -- 'Vulkan.Core11.Handles.DescriptorUpdateTemplate',
@@ -244,7 +253,7 @@
                                 -> -- | @descriptorUpdateTemplate@ is the descriptor update template to destroy.
                                    DescriptorUpdateTemplate
                                 -> -- | @pAllocator@ controls host memory allocation as described in the
-                                   -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                                   -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
                                    -- chapter.
                                    ("allocator" ::: Maybe AllocationCallbacks)
                                 -> io ()
@@ -279,7 +288,9 @@
 --
 -- -   #VUID-vkUpdateDescriptorSetWithTemplate-pData-01685# @pData@ /must/
 --     be a valid pointer to a memory containing one or more valid
---     instances of 'Vulkan.Core10.DescriptorSet.DescriptorImageInfo',
+--     instances of 'Vulkan.Extensions.Handles.AccelerationStructureKHR'
+--     handles, 'Vulkan.Extensions.Handles.AccelerationStructureNV'
+--     handles, 'Vulkan.Core10.DescriptorSet.DescriptorImageInfo',
 --     'Vulkan.Core10.DescriptorSet.DescriptorBufferInfo', or
 --     'Vulkan.Core10.Handles.BufferView' in a layout defined by
 --     @descriptorUpdateTemplate@ when it was created with
@@ -287,7 +298,7 @@
 --
 -- -   #VUID-vkUpdateDescriptorSetWithTemplate-descriptorSet-06995# Host
 --     access to @descriptorSet@ /must/ be
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#fundamentals-threadingbehavior externally synchronized>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#fundamentals-threadingbehavior externally synchronized>
 --     unless explicitly denoted otherwise for specific flags
 --
 -- == Valid Usage (Implicit)
@@ -389,6 +400,7 @@
 --
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_descriptor_update_template VK_KHR_descriptor_update_template>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core10.Handles.DescriptorSet',
 -- 'Vulkan.Core11.Handles.DescriptorUpdateTemplate',
@@ -443,7 +455,7 @@
 --     to the number of array elements in the descriptor set binding
 --     implicitly specified when using a descriptor update template to
 --     update descriptors, and all applicable
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-updates-consecutive consecutive bindings>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-sets-updates-consecutive consecutive bindings>
 --
 -- -   #VUID-VkDescriptorUpdateTemplateEntry-descriptor-02226# If
 --     @descriptor@ type is
@@ -463,6 +475,7 @@
 --
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_descriptor_update_template VK_KHR_descriptor_update_template>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core10.Enums.DescriptorType.DescriptorType',
 -- 'DescriptorUpdateTemplateCreateInfo'
@@ -579,24 +592,33 @@
 --     @descriptorSetLayout@ /must/ be a valid
 --     'Vulkan.Core10.Handles.DescriptorSetLayout' handle
 --
+-- -   #VUID-VkDescriptorUpdateTemplateCreateInfo-templateType-10355# If
+--     @templateType@ is
+--     'Vulkan.Core11.Enums.DescriptorUpdateTemplateType.DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS',
+--     and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_push_descriptor VK_KHR_push_descriptor>
+--     extension is not enabled,
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-pushDescriptor pushDescriptor>
+--     /must/ be enabled
+--
 -- -   #VUID-VkDescriptorUpdateTemplateCreateInfo-templateType-00351# If
 --     @templateType@ is
---     'Vulkan.Core11.Enums.DescriptorUpdateTemplateType.DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR',
+--     'Vulkan.Core11.Enums.DescriptorUpdateTemplateType.DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS',
 --     @pipelineBindPoint@ /must/ be a valid
 --     'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint' value
 --
 -- -   #VUID-VkDescriptorUpdateTemplateCreateInfo-templateType-00352# If
 --     @templateType@ is
---     'Vulkan.Core11.Enums.DescriptorUpdateTemplateType.DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR',
+--     'Vulkan.Core11.Enums.DescriptorUpdateTemplateType.DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS',
 --     @pipelineLayout@ /must/ be a valid
 --     'Vulkan.Core10.Handles.PipelineLayout' handle
 --
 -- -   #VUID-VkDescriptorUpdateTemplateCreateInfo-templateType-00353# If
 --     @templateType@ is
---     'Vulkan.Core11.Enums.DescriptorUpdateTemplateType.DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR',
+--     'Vulkan.Core11.Enums.DescriptorUpdateTemplateType.DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS',
 --     @set@ /must/ be the unique set number in the pipeline layout that
 --     uses a descriptor set layout that was created with
---     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR'
+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT'
 --
 -- -   #VUID-VkDescriptorUpdateTemplateCreateInfo-templateType-04615# If
 --     @templateType@ is
@@ -636,6 +658,7 @@
 --
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_descriptor_update_template VK_KHR_descriptor_update_template>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core10.Handles.DescriptorSetLayout',
 -- 'Vulkan.Core11.Enums.DescriptorUpdateTemplateCreateFlags.DescriptorUpdateTemplateCreateFlags',
@@ -644,8 +667,7 @@
 -- 'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint',
 -- 'Vulkan.Core10.Handles.PipelineLayout',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'createDescriptorUpdateTemplate',
--- 'Vulkan.Extensions.VK_KHR_descriptor_update_template.createDescriptorUpdateTemplateKHR'
+-- 'createDescriptorUpdateTemplate', 'createDescriptorUpdateTemplate'
 data DescriptorUpdateTemplateCreateInfo = DescriptorUpdateTemplateCreateInfo
   { -- | @flags@ is reserved for future use.
     flags :: DescriptorUpdateTemplateCreateFlags
@@ -658,7 +680,7 @@
     -- 'Vulkan.Core11.Enums.DescriptorUpdateTemplateType.DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET'
     -- it /can/ only be used to update descriptor sets with a fixed
     -- @descriptorSetLayout@. If set to
-    -- 'Vulkan.Core11.Enums.DescriptorUpdateTemplateType.DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR'
+    -- 'Vulkan.Core11.Enums.DescriptorUpdateTemplateType.DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS'
     -- it /can/ only be used to push descriptor sets using the provided
     -- @pipelineBindPoint@, @pipelineLayout@, and @set@ number.
     templateType :: DescriptorUpdateTemplateType
@@ -669,21 +691,23 @@
     -- identically to) this layout. This parameter is ignored if @templateType@
     -- is not
     -- 'Vulkan.Core11.Enums.DescriptorUpdateTemplateType.DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET'.
+    -- The implementation /must/ not access this object outside of the duration
+    -- of the command this structure is passed to.
     descriptorSetLayout :: DescriptorSetLayout
   , -- | @pipelineBindPoint@ is a
     -- 'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint' indicating the
     -- type of the pipeline that will use the descriptors. This parameter is
     -- ignored if @templateType@ is not
-    -- 'Vulkan.Core11.Enums.DescriptorUpdateTemplateType.DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR'
+    -- 'Vulkan.Core11.Enums.DescriptorUpdateTemplateType.DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS'
     pipelineBindPoint :: PipelineBindPoint
   , -- | @pipelineLayout@ is a 'Vulkan.Core10.Handles.PipelineLayout' object used
     -- to program the bindings. This parameter is ignored if @templateType@ is
     -- not
-    -- 'Vulkan.Core11.Enums.DescriptorUpdateTemplateType.DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR'
+    -- 'Vulkan.Core11.Enums.DescriptorUpdateTemplateType.DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS'
     pipelineLayout :: PipelineLayout
   , -- | @set@ is the set number of the descriptor set in the pipeline layout
     -- that will be updated. This parameter is ignored if @templateType@ is not
-    -- 'Vulkan.Core11.Enums.DescriptorUpdateTemplateType.DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR'
+    -- 'Vulkan.Core11.Enums.DescriptorUpdateTemplateType.DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS'
     set :: Word32
   }
   deriving (Typeable)
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
@@ -104,6 +104,7 @@
 --
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_device_group VK_KHR_device_group>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core10.Handles.Device',
 -- 'Vulkan.Core11.Enums.PeerMemoryFeatureFlagBits.PeerMemoryFeatureFlags'
@@ -205,8 +206,10 @@
 --
 -- -   #VUID-vkCmdSetDeviceMask-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics, compute, or transfer
---     operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT',
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT', or
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_TRANSFER_BIT' operations
 --
 -- == Host Synchronization
 --
@@ -222,13 +225,19 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Both                                                                                                                        | Graphics                                                                                                              | State                                                                                                                                  |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | Compute                                                                                                               |                                                                                                                                        |
--- |                                                                                                                            |                                                                                                                        |                                                                                                                             | Transfer                                                                                                              |                                                                                                                                        |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Both                                                                                                                        | VK_QUEUE_COMPUTE_BIT                                                                                                  | State                                                                                                                                  |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | VK_QUEUE_GRAPHICS_BIT                                                                                                 |                                                                                                                                        |
+-- |                                                                                                                            |                                                                                                                        |                                                                                                                             | VK_QUEUE_TRANSFER_BIT                                                                                                 |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdSetDeviceMask is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_device_group VK_KHR_device_group>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core10.Handles.CommandBuffer'
 cmdSetDeviceMask :: forall io
@@ -327,7 +336,7 @@
 --     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
 --     the image view’s @levelCount@ and @layerCount@ /must/ be 1
 --
--- -   #VUID-vkCmdDispatchBase-unnormalizedCoordinates-09636# If a
+-- -   #VUID-vkCmdDispatchBase-None-08609# If a
 --     'Vulkan.Core10.Handles.Sampler' created with
 --     @unnormalizedCoordinates@ equal to
 --     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
@@ -336,6 +345,24 @@
 --     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D' or
 --     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D'
 --
+-- -   #VUID-vkCmdDispatchBase-None-08610# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the sampler /must/ not be used with any of the SPIR-V
+--     @OpImageSample*@ or @OpImageSparseSample*@ instructions with
+--     @ImplicitLod@, @Dref@ or @Proj@ in their name
+--
+-- -   #VUID-vkCmdDispatchBase-None-08611# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the sampler /must/ not be used with any of the SPIR-V
+--     @OpImageSample*@ or @OpImageSparseSample*@ instructions that
+--     includes a LOD bias or any offset values
+--
 -- -   #VUID-vkCmdDispatchBase-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>,
@@ -468,29 +495,22 @@
 --     /must/ contain
 --     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT'
 --
--- -   #VUID-vkCmdDispatchBase-None-08600# For each set /n/ that is
---     statically used by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     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' or the
---     'Vulkan.Core10.Handles.DescriptorSetLayout' array used to create the
---     current 'Vulkan.Extensions.Handles.ShaderEXT' , as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
+-- -   #VUID-vkCmdDispatchBase-None-08600# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
+--     was created with a pipeline layout and statically uses a set /n/, a
+--     descriptor set /must/ have been bound to /n/ at the same pipeline
+--     bind point, with layouts compatible for set /n/ with the layout(s)
+--     used to create the shader, as described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptors-compatibility ???>
 --
--- -   #VUID-vkCmdDispatchBase-None-08601# For each push constant that is
---     statically used by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     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' or the
---     'Vulkan.Core10.Handles.DescriptorSetLayout' array used to create the
---     current 'Vulkan.Extensions.Handles.ShaderEXT' , as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
+-- -   #VUID-vkCmdDispatchBase-None-08601# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
+--     was created with a pipeline layout or specified push constant ranges
+--     and statically uses a push constant value, that value /must/ have
+--     been set for the same pipeline bind point, with push constant ranges
+--     that are
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptors-compatibility compatible>
+--     with the push constant range used to create the shader
 --
 -- -   #VUID-vkCmdDispatchBase-None-10068# For each array of resources that
 --     is used by
@@ -499,32 +519,23 @@
 --     the descriptor count for the identified binding in the descriptor
 --     sets used by this command
 --
--- -   #VUID-vkCmdDispatchBase-maintenance4-08602# 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
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     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' or the
---     'Vulkan.Core10.Handles.DescriptorSetLayout' and
---     'Vulkan.Core10.PipelineLayout.PushConstantRange' arrays used to
---     create the current 'Vulkan.Extensions.Handles.ShaderEXT' , as
---     described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
---
 -- -   #VUID-vkCmdDispatchBase-None-08114# Descriptors in each bound
 --     descriptor set, specified via
 --     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
---     be valid as described by
+--     be valid if they are accessed as described by
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
---     if they are statically used by the 'Vulkan.Core10.Handles.Pipeline'
---     bound to the pipeline bind point used by this command and the bound
+--     by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
+--     point used by this command and the bound
 --     'Vulkan.Core10.Handles.Pipeline' was not created with
 --     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
 --
+-- -   #VUID-vkCmdDispatchBase-imageLayout-00344# If an image descriptor is
+--     accessed by a shader, the
+--     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' /must/ match the
+--     subresource accessible from the 'Vulkan.Core10.Handles.ImageView' 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>
+--
 -- -   #VUID-vkCmdDispatchBase-None-08115# If the descriptors used by the
 --     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
 --     were specified via
@@ -580,57 +591,13 @@
 --     the pipeline bind point used by this command, since that pipeline
 --     was bound
 --
--- -   #VUID-vkCmdDispatchBase-None-08609# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command or any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDispatchBase-None-08610# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command or any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDispatchBase-None-08611# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command or any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDispatchBase-None-08607# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject>
---     feature is enabled, either a valid pipeline /must/ be bound to the
---     pipeline bind point used by this command, or a valid combination of
---     valid and 'Vulkan.Core10.APIConstants.NULL_HANDLE' shader objects
---     /must/ be bound to every supported shader stage corresponding to the
---     pipeline bind point used by this command
---
 -- -   #VUID-vkCmdDispatchBase-uniformBuffers-06935# If any stage of the
 --     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
 --     point used by this command accesses a uniform buffer, and that stage
 --     was created without enabling either
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT'
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
 --     or
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT'
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
 --     for @uniformBuffers@, and the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
 --     feature is not enabled, that stage /must/ not access values outside
@@ -650,9 +617,9 @@
 --     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
 --     point used by this command accesses a storage buffer, and that stage
 --     was created without enabling either
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT'
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
 --     or
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT'
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
 --     for @storageBuffers@, and the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
 --     feature is not enabled, that stage /must/ not access values outside
@@ -675,21 +642,6 @@
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shaders>
 --     /must/ not be a protected resource
 --
--- -   #VUID-vkCmdDispatchBase-None-06550# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
---     accesses a 'Vulkan.Core10.Handles.Sampler' or
---     'Vulkan.Core10.Handles.ImageView' object that enables
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,
---     that object /must/ only be used with @OpImageSample*@ or
---     @OpImageSparseSample*@ instructions
---
--- -   #VUID-vkCmdDispatchBase-ConstOffset-06551# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
---     accesses a 'Vulkan.Core10.Handles.Sampler' or
---     'Vulkan.Core10.Handles.ImageView' object that enables
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,
---     that object /must/ not use the @ConstOffset@ and @Offset@ operands
---
 -- -   #VUID-vkCmdDispatchBase-viewType-07752# If a
 --     'Vulkan.Core10.Handles.ImageView' is accessed as a result of this
 --     command, then the image view’s @viewType@ /must/ match the @Dim@
@@ -697,22 +649,23 @@
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-image-dimensions ???>
 --
 -- -   #VUID-vkCmdDispatchBase-format-07753# If a
---     'Vulkan.Core10.Handles.ImageView' is accessed as a result of this
+--     'Vulkan.Core10.Handles.ImageView' or
+--     'Vulkan.Core10.Handles.BufferView' is accessed as a result of this
 --     command, then the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-numericformat numeric type>
---     of the image view’s @format@ and the @Sampled@ @Type@ operand of the
+--     of the view’s @format@ and the @Sampled@ @Type@ operand of the
 --     @OpTypeImage@ /must/ match
 --
 -- -   #VUID-vkCmdDispatchBase-OpImageWrite-08795# If a
 --     'Vulkan.Core10.Handles.ImageView' created with a format other than
---     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM_KHR' is accessed using
+--     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM' 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-vkCmdDispatchBase-OpImageWrite-08796# If a
 --     'Vulkan.Core10.Handles.ImageView' created with the format
---     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM_KHR' is accessed using
+--     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM' is accessed using
 --     @OpImageWrite@ as a result of this command, then the @Type@ of the
 --     @Texel@ operand of that instruction /must/ have four components
 --
@@ -768,16 +721,16 @@
 --     @OpTypeImage@ with a @SampledType@ with a @Width@ of 64 by this
 --     command
 --
--- -   #VUID-vkCmdDispatchBase-OpImageWeightedSampleQCOM-06971# If
---     @OpImageWeightedSampleQCOM@ is used to sample a
+-- -   #VUID-vkCmdDispatchBase-OpImageSampleWeightedQCOM-06971# If
+--     @OpImageSampleWeightedQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM'
 --
--- -   #VUID-vkCmdDispatchBase-OpImageWeightedSampleQCOM-06972# If
---     @OpImageWeightedSampleQCOM@ uses a 'Vulkan.Core10.Handles.ImageView'
+-- -   #VUID-vkCmdDispatchBase-OpImageSampleWeightedQCOM-06972# If
+--     @OpImageSampleWeightedQCOM@ uses a 'Vulkan.Core10.Handles.ImageView'
 --     as a sample weight image 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>
@@ -799,23 +752,31 @@
 --     <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_BLOCK_MATCHING_BIT_QCOM'
+--     or
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_SXD_BIT_QCOM'
 --
--- -   #VUID-vkCmdDispatchBase-OpImageBlockMatchSADQCOM-06975# If
+-- -   #VUID-vkCmdDispatchBase-OpImageBlockMatchSADQCOM-12420# If
 --     @OpImageBlockMatchSADQCOM@ is used to read from an
 --     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
+--     or
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_SXD_BIT_QCOM'
 --
 -- -   #VUID-vkCmdDispatchBase-OpImageBlockMatchSADQCOM-06976# If
 --     @OpImageBlockMatchSADQCOM@ or OpImageBlockMatchSSDQCOM is used to
---     read from a reference image as result of this command, then the
---     specified reference coordinates /must/ not fail
+--     read from a reference image as result of this command, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-blockMatchExtendedClampToEdge blockMatchExtendedClampToEdge>
+--     feature is not enabled or the /input/ sampler was not created with
+--     both @addressModeU@ and @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--     then the specified reference coordinates /must/ not fail
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
 --
--- -   #VUID-vkCmdDispatchBase-OpImageWeightedSampleQCOM-06977# If
---     @OpImageWeightedSampleQCOM@, @OpImageBoxFilterQCOM@,
+-- -   #VUID-vkCmdDispatchBase-OpImageSampleWeightedQCOM-06977# If
+--     @OpImageSampleWeightedQCOM@, @OpImageBoxFilterQCOM@,
 --     @OpImageBlockMatchWindowSSDQCOM@, @OpImageBlockMatchWindowSADQCOM@,
 --     @OpImageBlockMatchGatherSSDQCOM@, @OpImageBlockMatchGatherSADQCOM@,
 --     @OpImageBlockMatchSSDQCOM@, or @OpImageBlockMatchSADQCOM@ uses a
@@ -823,8 +784,8 @@
 --     the sampler /must/ have been created with
 --     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
 --
--- -   #VUID-vkCmdDispatchBase-OpImageWeightedSampleQCOM-06978# If any
---     command other than @OpImageWeightedSampleQCOM@,
+-- -   #VUID-vkCmdDispatchBase-OpImageSampleWeightedQCOM-06978# If any
+--     command other than @OpImageSampleWeightedQCOM@,
 --     @OpImageBoxFilterQCOM@, @OpImageBlockMatchWindowSSDQCOM@,
 --     @OpImageBlockMatchWindowSADQCOM@, @OpImageBlockMatchGatherSSDQCOM@,
 --     @OpImageBlockMatchGatherSADQCOM@, @OpImageBlockMatchSSDQCOM@, or
@@ -850,10 +811,33 @@
 --
 -- -   #VUID-vkCmdDispatchBase-OpImageBlockMatchWindow-09217# If a
 --     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
---     read from a reference image as result of this command, then the
---     specified reference coordinates /must/ not fail
+--     read from a reference image as result of this command, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-blockMatchExtendedClampToEdge blockMatchExtendedClampToEdge>
+--     feature is not enabled or the /input/ sampler was not created with
+--     both @addressModeU@ and @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--     then the specified reference coordinates /must/ not fail
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
 --
+-- -   #VUID-vkCmdDispatchBase-OpImageBlockMatchWindow-12421# If a
+--     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     instruction uses a 'Vulkan.Core10.Handles.Sampler' as a result of
+--     this command, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-blockMatchExtendedClampToEdge blockMatchExtendedClampToEdge>
+--     is not enabled, the /input/ sampler /must/ not have been created
+--     with either @addressModeU@ or @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--
+-- -   #VUID-vkCmdDispatchBase-addressModeU-12422# If a
+--     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     instruction uses a 'Vulkan.Core10.Handles.Sampler' as a result of
+--     this command, and the /input/ sampler was created with either
+--     @addressModeU@ or @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE',
+--     then the sampler /must/ have been created with both @addressModeU@
+--     and @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--
 -- -   #VUID-vkCmdDispatchBase-None-07288# Any shader invocation executed
 --     by this command /must/
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-termination terminate>
@@ -866,10 +850,504 @@
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',
 --     or
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'
---     is accessed as a result of this command, the image subresource
+--     is accessed as a result of this command, all image subresources
 --     identified by that descriptor /must/ be in the image layout
 --     identified when the descriptor was written
 --
+-- -   #VUID-vkCmdDispatchBase-micromap-11636# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command through an
+--     @OpRayQueryProceedKHR@ operation , the @VK_EXT_opacity_micromap@
+--     extension is not enabled, and the acceleration structure is built
+--     using geometry with a
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapKHR'
+--     structure included in its @pNext@ chain, the shader /must/ have
+--     specified a @OpacityMicromapIdKHR@ execution mode with its
+--     specialization constant operand equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDispatchBase-micromap-11637# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command and the
+--     acceleration structure was constructed through deserialization, all
+--     micromap arrays referenced by the acceleration structure that were
+--     not replaced by an acceleration structure update command /must/ have
+--     been deserialized using the serialized data of the corresponding
+--     micromaps used to originally build the acceleration structure prior
+--     to the execution of this command on the device
+--
+-- -   #VUID-vkCmdDispatchBase-micromap-11638# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command and the
+--     acceleration structure is built using geometry with an @indexBuffer@
+--     containing both
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.OpacityMicromapSpecialIndexKHR'
+--     values and indices into an associated micromap array, any
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command /must/ not have been created with @flags@ that
+--     includes
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_KHR'
+--
+-- -   #VUID-vkCmdDispatchBase-micromap-11639# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command and the
+--     acceleration structure is built using geometry with an @indexBuffer@
+--     containing both
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.OpacityMicromapSpecialIndexKHR'
+--     values and indices into an associated micromap array, any
+--     'Vulkan.Extensions.Handles.ShaderEXT' that accessed the descriptor
+--     /must/ not have been created with @flags@ that includes
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_EXT'
+--
+-- -   #VUID-vkCmdDispatchBase-commandBuffer-10746# The
+--     'Vulkan.Core10.Handles.DeviceMemory' object allocated from a
+--     'Vulkan.Core10.DeviceInitialization.MemoryHeap' with the
+--     'Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_TILE_MEMORY_BIT_QCOM'
+--     property that is bound to a resource accessed as a result of this
+--     command /must/ be the active
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-bind-tile-memory bound tile memory object>
+--     in @commandBuffer@
+--
+-- -   #VUID-vkCmdDispatchBase-None-10678# If this command is recorded
+--     inside a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-tile-shading tile shading render pass>
+--     instance, the stages corresponding to the pipeline bind point used
+--     by this command /must/ only include
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT',
+--     and\/or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT'
+--
+-- -   #VUID-vkCmdDispatchBase-None-10679# If this command is recorded
+--     where
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model>
+--     is enabled, there /must/ be no access to any image while the image
+--     was be transitioned to the
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
+--     layout
+--
+-- -   #VUID-vkCmdDispatchBase-pDescription-09900# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the
+--     underlying 'Vulkan.Extensions.Handles.TensorARM' object /must/ have
+--     been created with the
+--     'Vulkan.Extensions.VK_ARM_tensors.TENSOR_USAGE_SHADER_BIT_ARM' usage
+--     flag set
+--
+-- -   #VUID-vkCmdDispatchBase-dimensionCount-09905# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the @Rank@
+--     of the @OpTypeTensorARM@ of the tensor resource variable /must/ be
+--     equal to the @dimensionCount@ provided via
+--     'Vulkan.Extensions.VK_ARM_tensors.TensorCreateInfoARM'::@pDescription@
+--     when creating the underlying 'Vulkan.Extensions.Handles.TensorARM'
+--     object
+--
+-- -   #VUID-vkCmdDispatchBase-OpTypeTensorARM-09906# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the element
+--     type of the @OpTypeTensorARM@ of the tensor resource variable /must/
+--     be
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-tensor-formats compatible>
+--     with the 'Vulkan.Core10.Enums.Format.Format' of the
+--     'Vulkan.Extensions.Handles.TensorViewARM' used for the access
+--
+-- -   #VUID-vkCmdDispatchBase-None-11297# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses a @OpTypeStruct@ decorated with @Block@ or
+--     @BufferBlock@ using that mapping, the calculated offset for the
+--     resource heap /must/ be a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-bufferDescriptorAlignment bufferDescriptorAlignment>
+--
+-- -   #VUID-vkCmdDispatchBase-None-11298# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses an @OpTypeImage@ or @OpTypeSampledImage@ using
+--     that mapping, the calculated offset for the resource heap /must/ be
+--     a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-imageDescriptorAlignment imageDescriptorAlignment>
+--
+-- -   #VUID-vkCmdDispatchBase-None-11299# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses an @OpTypeSampler@ or @OpTypeSampledImage@
+--     using that mapping, the calculated offset for the sampler heap
+--     /must/ be a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-samplerDescriptorAlignment samplerDescriptorAlignment>
+--
+-- -   #VUID-vkCmdDispatchBase-None-11397# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses an @OpTypeTensorARM@ using that mapping, the
+--     calculated offset for the resource heap /must/ be a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-tensorDescriptorAlignment tensorDescriptorAlignment>
+--
+-- -   #VUID-vkCmdDispatchBase-None-11300# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a
+--     multiple of 4
+--
+-- -   #VUID-vkCmdDispatchBase-None-11301# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' backed by physical
+--     memory at every offset specified by each mapping
+--
+-- -   #VUID-vkCmdDispatchBase-None-11302# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdDispatchBase-None-11304# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a
+--     multiple of 8
+--
+-- -   #VUID-vkCmdDispatchBase-None-11305# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' backed by physical
+--     memory at every offset specified by each mapping
+--
+-- -   #VUID-vkCmdDispatchBase-None-11306# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address pointed to by the address in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdDispatchBase-None-11308# For each
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps descriptor heap>
+--     that is statically used by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
+--     either directly or via a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>,
+--     a valid descriptor heap /must/ be bound
+--
+-- -   #VUID-vkCmdDispatchBase-None-11309# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     was created as a 'Vulkan.Extensions.Handles.ShaderEXT' with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag or as part of a pipeline with the
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag, execution of this command /must/ not result in any descriptor
+--     read accessing data outside of the user range of the respective heap
+--     bound by @vkCmdBind*HeapEXT@ commands
+--
+-- -   #VUID-vkCmdDispatchBase-None-11372# If any stage of the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command accesses a uniform buffer or uniform
+--     texel buffer through a descriptor in the bound resource heap, that
+--     stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @uniformBuffers@, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /must/ not access values outside
+--     of the range of the descriptor specified via
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+--     when the descriptor was written
+--
+-- -   #VUID-vkCmdDispatchBase-None-11373# If any stage of the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command accesses a storage buffer or storage
+--     texel buffer through a descriptor in the bound resource heap, that
+--     stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @storageBuffers@, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /must/ not access values outside
+--     of the range of the descriptor specified by
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+--     when the descriptor was written
+--
+-- -   #VUID-vkCmdDispatchBase-None-11374# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, and any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     to the pipeline bind point used by this command accesses a uniform
+--     buffer, uniform texel buffer, storage buffer, or storage texel
+--     buffer, that shader /must/ not access values outside of the range of
+--     the buffer as specified by
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+--     when the descriptor was written
+--
+-- -   #VUID-vkCmdDispatchBase-pBindInfo-11375# If any
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     uses an embedded sampler via a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>,
+--     the value of @pBindInfo->reservedRangeSize@ set for
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.cmdBindSamplerHeapEXT'
+--     /must/ be greater than or equal to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minSamplerHeapReservedRangeWithEmbedded minSamplerHeapReservedRangeWithEmbedded>
+--
+-- -   #VUID-vkCmdDispatchBase-None-11376# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     was created as a 'Vulkan.Extensions.Handles.ShaderEXT' with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag or as part of a pipeline with the
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag, and that shader statically uses a push constant value, that
+--     value /must/ have been set by
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.cmdPushDataEXT'
+--
+-- -   #VUID-vkCmdDispatchBase-None-11398# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_DATA_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_DATA_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_RESOURCE_HEAP_DATA_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the access
+--     /must/ not be
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-execution-memory-access-bounds out of bounds>
+--
+-- -   #VUID-vkCmdDispatchBase-None-11437# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the buffer from
+--     which the address in push data was queried /must/ have been created
+--     with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdDispatchBase-None-11438# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a uniform buffer using that mapping, the
+--     address that the uniform buffer is mapped to /must/ have been
+--     queried from a buffer created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdDispatchBase-None-11441# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a uniform buffer using that mapping, the
+--     address that the uniform buffer is mapped to /must/ be aligned to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minUniformBufferOffsetAlignment minUniformBufferOffsetAlignment>
+--
+-- -   #VUID-vkCmdDispatchBase-None-11439# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a storage buffer using that mapping, the
+--     address that the storage buffer is mapped to /must/ have been
+--     queried from a buffer created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_STORAGE_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdDispatchBase-None-11442# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a storage buffer using that mapping, the
+--     address that the storage buffer is mapped to /must/ be aligned to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minStorageBufferOffsetAlignment minStorageBufferOffsetAlignment>
+--
+-- -   #VUID-vkCmdDispatchBase-None-11485# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses an acceleration structure using that mapping,
+--     the address that the acceleration structure is mapped to /must/ be
+--     an acceleration structure address retrieved from a
+--     'Vulkan.Extensions.Handles.AccelerationStructureKHR' object via
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.getAccelerationStructureDeviceAddressKHR'
+--     or handle retrieved from a
+--     'Vulkan.Extensions.Handles.AccelerationStructureNV' object via
+--     'Vulkan.Extensions.VK_NV_ray_tracing.getAccelerationStructureHandleNV'
+--
+-- -   #VUID-vkCmdDispatchBase-index-11450# If a shader uses a sampler
+--     descriptor to sample an image as a result of this command, and that
+--     sampler descriptor uses a custom border color with an index defined
+--     by
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.SamplerCustomBorderColorIndexCreateInfoEXT',
+--     the value of
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.SamplerCustomBorderColorIndexCreateInfoEXT'::@index@
+--     /must/ have been registered before this command was recorded, and
+--     still be registered during the sampling operation, with an
+--     identically defined color
+--
+-- -   #VUID-vkCmdDispatchBase-protectedNoFault-11455# If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, a pipeline is bound to the pipeline bind point
+--     used by this command, or a shader is bound to a shader stage used by
+--     this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     the address that the resource is mapped to /must/ have been queried
+--     from a buffer created without the
+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT'
+--     create flag set
+--
+-- -   #VUID-vkCmdDispatchBase-protectedNoFault-11456# If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, a pipeline is bound to the pipeline bind point
+--     used by this command, or a shader is bound to a shader stage used by
+--     this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     the address of the indirect memory /must/ have been queried from a
+--     buffer created without the
+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT'
+--     create flag set
+--
+-- -   #VUID-vkCmdDispatchBase-None-10672# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model>
+--     is not enabled, this command /must/ be called outside of a render
+--     pass instance
+--
+-- -   #VUID-vkCmdDispatchBase-aspectMask-10673# If this command is
+--     recorded where
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model>
+--     is enabled, and if the 'Vulkan.Core10.Handles.Pipeline' object bound
+--     to the pipeline bind point used by this command writes to a variable
+--     of storage class @Storage@ @Class@ @TileAttachmentQCOM@, the
+--     corresponding 'Vulkan.Core10.Handles.ImageView' using /must/ not
+--     have been created with an @aspectMask@ that contains
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' or
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
+--
+-- -   #VUID-vkCmdDispatchBase-None-10674# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model>
+--     is enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tileShadingPerTileDispatch tileShadingPerTileDispatch>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdDispatchBase-None-10675# Memory backing image
+--     subresources used as
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-tile-shading-attachment-access tile attachments>
+--     in the current render pass /must/ not be written in any way other
+--     than as a tile attachment by this command
+--
+-- -   #VUID-vkCmdDispatchBase-None-10676# If any recorded command in the
+--     current subpass will write to an image subresource as a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-tile-shading-attachment-access tile attachment>,
+--     this command /must/ not read from the memory backing that image
+--     subresource in any other way than as a tile attachment
+--
+-- -   #VUID-vkCmdDispatchBase-None-10743# If there is no bound compute
+--     pipeline, a valid 'Vulkan.Extensions.Handles.ShaderEXT' /must/ be
+--     bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT'
+--     stage
+--
 -- -   #VUID-vkCmdDispatchBase-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>
@@ -922,8 +1400,9 @@
 -- -   #VUID-vkCmdDispatchBase-baseGroupX-00427# If any of @baseGroupX@,
 --     @baseGroupY@, or @baseGroupZ@ are not zero, then the bound compute
 --     pipeline /must/ have been created with the
---     'PIPELINE_CREATE_DISPATCH_BASE' flag or the bound compute shader
---     object /must/ have been created with the
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DISPATCH_BASE_BIT'
+--     flag or the bound compute shader object /must/ have been created
+--     with the
 --     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DISPATCH_BASE_BIT_EXT'
 --     flag
 --
@@ -938,10 +1417,11 @@
 --
 -- -   #VUID-vkCmdDispatchBase-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support compute operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT' operations
 --
--- -   #VUID-vkCmdDispatchBase-renderpass# This command /must/ only be
---     called outside of a render pass instance
+-- -   #VUID-vkCmdDispatchBase-suspended# This command /must/ not be called
+--     between suspended render pass instances
 --
 -- -   #VUID-vkCmdDispatchBase-videocoding# This command /must/ only be
 --     called outside of a video coding scope
@@ -960,12 +1440,18 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | Compute                                                                                                               | Action                                                                                                                                 |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | Action                                                                                                                                 |
 -- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdDispatchBase is affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_device_group VK_KHR_device_group>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core10.Handles.CommandBuffer'
 cmdDispatchBase :: forall io
@@ -1054,6 +1540,15 @@
 --     'Vulkan.Core11.Enums.MemoryAllocateFlagBits.MEMORY_ALLOCATE_DEVICE_MASK_BIT'
 --     is set, @deviceMask@ /must/ not be zero
 --
+-- -   #VUID-VkMemoryAllocateFlagsInfo-flags-10760# If the allocation is
+--     performing a memory import operation, then @flags@ /must/ not
+--     contain
+--     'Vulkan.Core11.Enums.MemoryAllocateFlagBits.MEMORY_ALLOCATE_ZERO_INITIALIZE_BIT_EXT'
+--
+-- -   #VUID-VkMemoryAllocateFlagsInfo-flags-10761# If the allocation uses
+--     protected memory, then @flags@ /must/ not contain
+--     'Vulkan.Core11.Enums.MemoryAllocateFlagBits.MEMORY_ALLOCATE_ZERO_INITIALIZE_BIT_EXT'
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-VkMemoryAllocateFlagsInfo-sType-sType# @sType@ /must/ be
@@ -1064,8 +1559,15 @@
 --     'Vulkan.Core11.Enums.MemoryAllocateFlagBits.MemoryAllocateFlagBits'
 --     values
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.Memory.MemoryAllocateInfo'
+--
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_device_group VK_KHR_device_group>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core11.Enums.MemoryAllocateFlagBits.MemoryAllocateFlags',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
@@ -1133,10 +1635,10 @@
 -- begins. In addition, commands transitioning to the next subpass in a
 -- render pass instance and commands ending the render pass instance, and,
 -- accordingly render pass
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-load-operations load>,
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-store-operations store>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-load-operations load>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-store-operations store>,
 -- and
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-resolve-operations multisample resolve>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-resolve-operations multisample resolve>
 -- operations and subpass dependencies corresponding to the render pass
 -- instance, are executed on the physical devices included in the device
 -- mask provided here.
@@ -1184,12 +1686,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxFramebufferWidth maxFramebufferWidth>
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxFramebufferHeight maxFramebufferHeight>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxFramebufferHeight maxFramebufferHeight>
 --
 -- -   #VUID-VkDeviceGroupRenderPassBeginInfo-extent-08998# The
 --     @extent.width@ member of any element of @pDeviceRenderAreas@ /must/
@@ -1210,8 +1712,17 @@
 --     be a valid pointer to an array of @deviceRenderAreaCount@
 --     'Vulkan.Core10.FundamentalTypes.Rect2D' structures
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.CommandBufferBuilding.RenderPassBeginInfo'
+--
+--     -   'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'
+--
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_device_group VK_KHR_device_group>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core10.FundamentalTypes.Rect2D',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
@@ -1275,10 +1786,15 @@
 -- buffer’s device mask includes all physical devices in the logical device
 -- when the command buffer begins recording.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.CommandBuffer.CommandBufferBeginInfo'
+--
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_device_group VK_KHR_device_group>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data DeviceGroupCommandBufferBeginInfo = DeviceGroupCommandBufferBeginInfo
@@ -1377,8 +1893,15 @@
 --     @pSignalSemaphoreDeviceIndices@ /must/ be a valid pointer to an
 --     array of @signalSemaphoreCount@ @uint32_t@ values
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.Queue.SubmitInfo'
+--
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_device_group VK_KHR_device_group>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data DeviceGroupSubmitInfo = DeviceGroupSubmitInfo
@@ -1481,8 +2004,15 @@
 -- -   #VUID-VkDeviceGroupBindSparseInfo-sType-sType# @sType@ /must/ be
 --     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO'
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.SparseResourceMemoryManagement.BindSparseInfo'
+--
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_device_group VK_KHR_device_group>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data DeviceGroupBindSparseInfo = DeviceGroupBindSparseInfo
diff --git a/src/Vulkan/Core11/Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2.hs b/src/Vulkan/Core11/Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2.hs
--- a/src/Vulkan/Core11/Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2.hs
+++ b/src/Vulkan/Core11/Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2.hs
@@ -88,8 +88,16 @@
 --     @deviceIndexCount@ is not @0@, @pDeviceIndices@ /must/ be a valid
 --     pointer to an array of @deviceIndexCount@ @uint32_t@ values
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindBufferMemoryInfo'
+--
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_bind_memory2 VK_KHR_bind_memory2>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_device_group VK_KHR_device_group>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data BindBufferMemoryDeviceGroupInfo = BindBufferMemoryDeviceGroupInfo
@@ -235,8 +243,16 @@
 --     @splitInstanceBindRegionCount@
 --     'Vulkan.Core10.FundamentalTypes.Rect2D' structures
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindImageMemoryInfo'
+--
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_bind_memory2 VK_KHR_bind_memory2>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_device_group VK_KHR_device_group>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core10.FundamentalTypes.Rect2D',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
diff --git a/src/Vulkan/Core11/Promoted_From_VK_KHR_device_group_creation.hs b/src/Vulkan/Core11/Promoted_From_VK_KHR_device_group_creation.hs
--- a/src/Vulkan/Core11/Promoted_From_VK_KHR_device_group_creation.hs
+++ b/src/Vulkan/Core11/Promoted_From_VK_KHR_device_group_creation.hs
@@ -121,20 +121,25 @@
 --
 -- [<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'
 --
+--     -   '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_INITIALIZATION_FAILED'
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_INITIALIZATION_FAILED'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_device_group_creation VK_KHR_device_group_creation>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core10.Handles.Instance', 'PhysicalDeviceGroupProperties'
 enumeratePhysicalDeviceGroups :: forall io
@@ -175,12 +180,12 @@
 --
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_device_group_creation VK_KHR_device_group_creation>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Handles.PhysicalDevice',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'enumeratePhysicalDeviceGroups',
--- 'Vulkan.Extensions.VK_KHR_device_group_creation.enumeratePhysicalDeviceGroupsKHR'
+-- 'enumeratePhysicalDeviceGroups', 'enumeratePhysicalDeviceGroups'
 data PhysicalDeviceGroupProperties = PhysicalDeviceGroupProperties
   { -- | @physicalDeviceCount@ is the number of physical devices in the group.
     physicalDeviceCount :: Word32
@@ -291,8 +296,15 @@
 --     valid pointer to an array of @physicalDeviceCount@ valid
 --     'Vulkan.Core10.Handles.PhysicalDevice' handles
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_device_group_creation VK_KHR_device_group_creation>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core10.Handles.PhysicalDevice',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
diff --git a/src/Vulkan/Core11/Promoted_From_VK_KHR_external_fence.hs b/src/Vulkan/Core11/Promoted_From_VK_KHR_external_fence.hs
--- a/src/Vulkan/Core11/Promoted_From_VK_KHR_external_fence.hs
+++ b/src/Vulkan/Core11/Promoted_From_VK_KHR_external_fence.hs
@@ -47,8 +47,15 @@
 --     'Vulkan.Core11.Enums.ExternalFenceHandleTypeFlagBits.ExternalFenceHandleTypeFlagBits'
 --     values
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.Fence.FenceCreateInfo'
+--
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_fence VK_KHR_external_fence>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core11.Enums.ExternalFenceHandleTypeFlagBits.ExternalFenceHandleTypeFlags',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
diff --git a/src/Vulkan/Core11/Promoted_From_VK_KHR_external_fence_capabilities.hs b/src/Vulkan/Core11/Promoted_From_VK_KHR_external_fence_capabilities.hs
--- a/src/Vulkan/Core11/Promoted_From_VK_KHR_external_fence_capabilities.hs
+++ b/src/Vulkan/Core11/Promoted_From_VK_KHR_external_fence_capabilities.hs
@@ -68,6 +68,7 @@
 --
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_fence_capabilities VK_KHR_external_fence_capabilities>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'ExternalFenceProperties', 'Vulkan.Core10.Handles.PhysicalDevice',
 -- 'PhysicalDeviceExternalFenceInfo'
@@ -123,11 +124,12 @@
 --
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_fence_capabilities VK_KHR_external_fence_capabilities>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core11.Enums.ExternalFenceHandleTypeFlagBits.ExternalFenceHandleTypeFlagBits',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType',
 -- 'getPhysicalDeviceExternalFenceProperties',
--- 'Vulkan.Extensions.VK_KHR_external_fence_capabilities.getPhysicalDeviceExternalFencePropertiesKHR'
+-- 'getPhysicalDeviceExternalFenceProperties'
 data PhysicalDeviceExternalFenceInfo = PhysicalDeviceExternalFenceInfo
   { -- | @handleType@ is a
     -- 'Vulkan.Core11.Enums.ExternalFenceHandleTypeFlagBits.ExternalFenceHandleTypeFlagBits'
@@ -189,12 +191,13 @@
 --
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_fence_capabilities VK_KHR_external_fence_capabilities>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core11.Enums.ExternalFenceFeatureFlagBits.ExternalFenceFeatureFlags',
 -- 'Vulkan.Core11.Enums.ExternalFenceHandleTypeFlagBits.ExternalFenceHandleTypeFlags',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType',
 -- 'getPhysicalDeviceExternalFenceProperties',
--- 'Vulkan.Extensions.VK_KHR_external_fence_capabilities.getPhysicalDeviceExternalFencePropertiesKHR'
+-- 'getPhysicalDeviceExternalFenceProperties'
 data ExternalFenceProperties = ExternalFenceProperties
   { -- | @exportFromImportedHandleTypes@ is a bitmask of
     -- 'Vulkan.Core11.Enums.ExternalFenceHandleTypeFlagBits.ExternalFenceHandleTypeFlagBits'
diff --git a/src/Vulkan/Core11/Promoted_From_VK_KHR_external_memory.hs b/src/Vulkan/Core11/Promoted_From_VK_KHR_external_memory.hs
--- a/src/Vulkan/Core11/Promoted_From_VK_KHR_external_memory.hs
+++ b/src/Vulkan/Core11/Promoted_From_VK_KHR_external_memory.hs
@@ -43,10 +43,15 @@
 -- @handleTypes@ field must be included in the creation parameters for an
 -- image that will be bound to memory that is either exported or imported.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.Image.ImageCreateInfo'
+--
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_memory VK_KHR_external_memory>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlags',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
@@ -106,10 +111,15 @@
 -- @handleTypes@ field must be included in the creation parameters for a
 -- buffer that will be bound to memory that is either exported or imported.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.Buffer.BufferCreateInfo'
+--
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_memory VK_KHR_external_memory>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlags',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
@@ -165,9 +175,10 @@
 --
 -- == Valid Usage
 --
--- -   #VUID-VkExportMemoryAllocateInfo-handleTypes-00656# The bits in
+-- -   #VUID-VkExportMemoryAllocateInfo-handleTypes-09860# The bits in
 --     @handleTypes@ /must/ be supported and compatible, as reported by
---     'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.ExternalImageFormatProperties'
+--     'Vulkan.Extensions.VK_ARM_tensors.ExternalTensorPropertiesARM',
+--     'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.ExternalImageFormatProperties',
 --     or
 --     'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.ExternalBufferProperties'
 --
@@ -181,8 +192,15 @@
 --     'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits'
 --     values
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.Memory.MemoryAllocateInfo'
+--
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_memory VK_KHR_external_memory>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlags',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
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
@@ -59,7 +59,7 @@
 import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.Core10.Enums.BufferCreateFlagBits (BufferCreateFlags)
 import Vulkan.Core10.Enums.BufferUsageFlagBits (BufferUsageFlags)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance5 (BufferUsageFlags2CreateInfoKHR)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_maintenance5 (BufferUsageFlags2CreateInfo)
 import Vulkan.CStruct.Extends (Chain)
 import Vulkan.CStruct.Extends (Extends)
 import Vulkan.CStruct.Extends (Extendss)
@@ -106,6 +106,7 @@
 --
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_memory_capabilities VK_KHR_external_memory_capabilities>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'ExternalBufferProperties', 'Vulkan.Core10.Handles.PhysicalDevice',
 -- 'PhysicalDeviceExternalBufferInfo'
@@ -162,10 +163,12 @@
 --
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_memory_capabilities VK_KHR_external_memory_capabilities>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'ExternalBufferProperties', 'ExternalImageFormatProperties',
 -- 'Vulkan.Core11.Enums.ExternalMemoryFeatureFlagBits.ExternalMemoryFeatureFlags',
--- 'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlags'
+-- 'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlags',
+-- 'Vulkan.Extensions.VK_ARM_tensors.ExternalTensorPropertiesARM'
 data ExternalMemoryProperties = ExternalMemoryProperties
   { -- | @externalMemoryFeatures@ is a bitmask of
     -- 'Vulkan.Core11.Enums.ExternalMemoryFeatureFlagBits.ExternalMemoryFeatureFlagBits'
@@ -253,8 +256,15 @@
 --     'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits'
 --     value
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceImageFormatInfo2'
+--
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_memory_capabilities VK_KHR_external_memory_capabilities>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
@@ -304,10 +314,15 @@
 -- | VkExternalImageFormatProperties - Structure specifying supported
 -- external handle properties
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.ImageFormatProperties2'
+--
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_memory_capabilities VK_KHR_external_memory_capabilities>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'ExternalMemoryProperties',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
@@ -362,21 +377,21 @@
 -- Only usage flags representable in
 -- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BufferUsageFlagBits' are
 -- returned in this structure’s @usage@. If the @pNext@ chain includes a
--- 'Vulkan.Extensions.VK_KHR_maintenance5.BufferUsageFlags2CreateInfoKHR'
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.BufferUsageFlags2CreateInfo'
 -- structure, all usage flags of the buffer are returned in
--- 'Vulkan.Extensions.VK_KHR_maintenance5.BufferUsageFlags2CreateInfoKHR'::@usage@.
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.BufferUsageFlags2CreateInfo'::@usage@.
 --
 -- == Valid Usage
 --
 -- -   #VUID-VkPhysicalDeviceExternalBufferInfo-None-09499# If the @pNext@
 --     chain does not include a
---     'Vulkan.Extensions.VK_KHR_maintenance5.BufferUsageFlags2CreateInfoKHR'
+--     'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.BufferUsageFlags2CreateInfo'
 --     structure, @usage@ /must/ be a valid combination of
 --     'Vulkan.Core10.Enums.BufferUsageFlagBits.BufferUsageFlagBits' values
 --
 -- -   #VUID-VkPhysicalDeviceExternalBufferInfo-None-09500# If the @pNext@
 --     chain does not include a
---     'Vulkan.Extensions.VK_KHR_maintenance5.BufferUsageFlags2CreateInfoKHR'
+--     'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.BufferUsageFlags2CreateInfo'
 --     structure, @usage@ /must/ not be 0
 --
 -- == Valid Usage (Implicit)
@@ -387,10 +402,10 @@
 --
 -- -   #VUID-VkPhysicalDeviceExternalBufferInfo-pNext-pNext# @pNext@ /must/
 --     be @NULL@ or a pointer to a valid instance of
---     'Vulkan.Extensions.VK_KHR_maintenance5.BufferUsageFlags2CreateInfoKHR'
+--     'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.BufferUsageFlags2CreateInfo'
 --
 -- -   #VUID-VkPhysicalDeviceExternalBufferInfo-sType-unique# The @sType@
---     value of each struct in the @pNext@ chain /must/ be unique
+--     value of each structure in the @pNext@ chain /must/ be unique
 --
 -- -   #VUID-VkPhysicalDeviceExternalBufferInfo-flags-parameter# @flags@
 --     /must/ be a valid combination of
@@ -404,13 +419,14 @@
 --
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_memory_capabilities VK_KHR_external_memory_capabilities>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core10.Enums.BufferCreateFlagBits.BufferCreateFlags',
 -- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BufferUsageFlags',
 -- 'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType',
 -- 'getPhysicalDeviceExternalBufferProperties',
--- 'Vulkan.Extensions.VK_KHR_external_memory_capabilities.getPhysicalDeviceExternalBufferPropertiesKHR'
+-- 'getPhysicalDeviceExternalBufferProperties'
 data PhysicalDeviceExternalBufferInfo (es :: [Type]) = PhysicalDeviceExternalBufferInfo
   { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
@@ -442,7 +458,7 @@
   getNext PhysicalDeviceExternalBufferInfo{..} = next
   extends :: forall e b proxy. Typeable e => proxy e -> (Extends PhysicalDeviceExternalBufferInfo e => b) -> Maybe b
   extends _ f
-    | Just Refl <- eqT @e @BufferUsageFlags2CreateInfoKHR = Just f
+    | Just Refl <- eqT @e @BufferUsageFlags2CreateInfo = Just f
     | otherwise = Nothing
 
 instance ( Extendss PhysicalDeviceExternalBufferInfo es
@@ -491,11 +507,12 @@
 --
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_memory_capabilities VK_KHR_external_memory_capabilities>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'ExternalMemoryProperties',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType',
 -- 'getPhysicalDeviceExternalBufferProperties',
--- 'Vulkan.Extensions.VK_KHR_external_memory_capabilities.getPhysicalDeviceExternalBufferPropertiesKHR'
+-- 'getPhysicalDeviceExternalBufferProperties'
 data ExternalBufferProperties = ExternalBufferProperties
   { -- | @externalMemoryProperties@ is a 'ExternalMemoryProperties' structure
     -- specifying various capabilities of the external handle type when used
@@ -585,11 +602,11 @@
 -- where such a restriction exists as defined in the compatibility table
 -- for the particular object type:
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#external-memory-handle-types-compatibility External memory handle types compatibility>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#external-memory-handle-types-compatibility External memory handle types compatibility>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#external-semaphore-handle-types-compatibility External semaphore handle types compatibility>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#external-semaphore-handle-types-compatibility External semaphore handle types compatibility>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#external-fence-handle-types-compatibility External fence handle types compatibility>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/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
@@ -607,7 +624,7 @@
 --
 -- Although they have identical descriptions,
 -- 'PhysicalDeviceIDProperties'::@deviceUUID@ may differ from
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'::@pipelineCacheUUID@.
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'::@properties.pipelineCacheUUID@.
 -- The former is intended to identify and correlate devices across API and
 -- driver boundaries, while the latter is used to identify a compatible
 -- device and driver combination to use when serializing and de-serializing
@@ -655,8 +672,17 @@
 -- -   #VUID-VkPhysicalDeviceIDProperties-sType-sType# @sType@ /must/ be
 --     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES'
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_fence_capabilities VK_KHR_external_fence_capabilities>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_memory_capabilities VK_KHR_external_memory_capabilities>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_semaphore_capabilities VK_KHR_external_semaphore_capabilities>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
diff --git a/src/Vulkan/Core11/Promoted_From_VK_KHR_external_semaphore.hs b/src/Vulkan/Core11/Promoted_From_VK_KHR_external_semaphore.hs
--- a/src/Vulkan/Core11/Promoted_From_VK_KHR_external_semaphore.hs
+++ b/src/Vulkan/Core11/Promoted_From_VK_KHR_external_semaphore.hs
@@ -47,8 +47,15 @@
 --     'Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits.ExternalSemaphoreHandleTypeFlagBits'
 --     values
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.QueueSemaphore.SemaphoreCreateInfo'
+--
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_semaphore VK_KHR_external_semaphore>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits.ExternalSemaphoreHandleTypeFlags',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
diff --git a/src/Vulkan/Core11/Promoted_From_VK_KHR_external_semaphore_capabilities.hs b/src/Vulkan/Core11/Promoted_From_VK_KHR_external_semaphore_capabilities.hs
--- a/src/Vulkan/Core11/Promoted_From_VK_KHR_external_semaphore_capabilities.hs
+++ b/src/Vulkan/Core11/Promoted_From_VK_KHR_external_semaphore_capabilities.hs
@@ -82,6 +82,7 @@
 --
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_semaphore_capabilities VK_KHR_external_semaphore_capabilities>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'ExternalSemaphoreProperties', 'Vulkan.Core10.Handles.PhysicalDevice',
 -- 'PhysicalDeviceExternalSemaphoreInfo'
@@ -136,7 +137,8 @@
 --     'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.SemaphoreTypeCreateInfo'
 --
 -- -   #VUID-VkPhysicalDeviceExternalSemaphoreInfo-sType-unique# The
---     @sType@ value of each struct in the @pNext@ chain /must/ be unique
+--     @sType@ value of each structure in the @pNext@ chain /must/ be
+--     unique
 --
 -- -   #VUID-VkPhysicalDeviceExternalSemaphoreInfo-handleType-parameter#
 --     @handleType@ /must/ be a valid
@@ -145,11 +147,12 @@
 --
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_semaphore_capabilities VK_KHR_external_semaphore_capabilities>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits.ExternalSemaphoreHandleTypeFlagBits',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType',
 -- 'getPhysicalDeviceExternalSemaphoreProperties',
--- 'Vulkan.Extensions.VK_KHR_external_semaphore_capabilities.getPhysicalDeviceExternalSemaphorePropertiesKHR'
+-- 'getPhysicalDeviceExternalSemaphoreProperties'
 data PhysicalDeviceExternalSemaphoreInfo (es :: [Type]) = PhysicalDeviceExternalSemaphoreInfo
   { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
@@ -219,12 +222,13 @@
 --
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_semaphore_capabilities VK_KHR_external_semaphore_capabilities>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core11.Enums.ExternalSemaphoreFeatureFlagBits.ExternalSemaphoreFeatureFlags',
 -- 'Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits.ExternalSemaphoreHandleTypeFlags',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType',
 -- 'getPhysicalDeviceExternalSemaphoreProperties',
--- 'Vulkan.Extensions.VK_KHR_external_semaphore_capabilities.getPhysicalDeviceExternalSemaphorePropertiesKHR'
+-- 'getPhysicalDeviceExternalSemaphoreProperties'
 data ExternalSemaphoreProperties = ExternalSemaphoreProperties
   { -- | @exportFromImportedHandleTypes@ is a bitmask of
     -- 'Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits.ExternalSemaphoreHandleTypeFlagBits'
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
@@ -74,6 +74,7 @@
 import Vulkan.CStruct.Extends (SomeStruct)
 import Vulkan.Core10.SparseResourceMemoryManagement (SparseImageMemoryRequirements)
 import Vulkan.Core10.Enums.StructureType (StructureType)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_tile_memory_heap (TileMemoryRequirementsQCOM)
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2))
@@ -94,6 +95,7 @@
 --
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_memory_requirements2 VK_KHR_get_memory_requirements2>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'BufferMemoryRequirementsInfo2', 'Vulkan.Core10.Handles.Device',
 -- 'MemoryRequirements2'
@@ -143,6 +145,7 @@
 --
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_memory_requirements2 VK_KHR_get_memory_requirements2>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core10.Handles.Device', 'ImageMemoryRequirementsInfo2',
 -- 'MemoryRequirements2'
@@ -212,6 +215,7 @@
 --
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_memory_requirements2 VK_KHR_get_memory_requirements2>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core10.Handles.Device', 'ImageSparseMemoryRequirementsInfo2',
 -- 'SparseImageMemoryRequirements2'
@@ -255,11 +259,11 @@
 --
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_memory_requirements2 VK_KHR_get_memory_requirements2>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core10.Handles.Buffer',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'getBufferMemoryRequirements2',
--- 'Vulkan.Extensions.VK_KHR_get_memory_requirements2.getBufferMemoryRequirements2KHR'
+-- 'getBufferMemoryRequirements2', 'getBufferMemoryRequirements2'
 data BufferMemoryRequirementsInfo2 = BufferMemoryRequirementsInfo2
   { -- | @buffer@ is the buffer to query.
     --
@@ -362,18 +366,18 @@
 --     'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.ImagePlaneMemoryRequirementsInfo'
 --
 -- -   #VUID-VkImageMemoryRequirementsInfo2-sType-unique# The @sType@ value
---     of each struct in the @pNext@ chain /must/ be unique
+--     of each structure in the @pNext@ chain /must/ be unique
 --
 -- -   #VUID-VkImageMemoryRequirementsInfo2-image-parameter# @image@ /must/
 --     be a valid 'Vulkan.Core10.Handles.Image' handle
 --
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_memory_requirements2 VK_KHR_get_memory_requirements2>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core10.Handles.Image',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'getImageMemoryRequirements2',
--- 'Vulkan.Extensions.VK_KHR_get_memory_requirements2.getImageMemoryRequirements2KHR'
+-- 'getImageMemoryRequirements2', 'getImageMemoryRequirements2'
 data ImageMemoryRequirementsInfo2 (es :: [Type]) = ImageMemoryRequirementsInfo2
   { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
@@ -434,11 +438,11 @@
 --
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_memory_requirements2 VK_KHR_get_memory_requirements2>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core10.Handles.Image',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'getImageSparseMemoryRequirements2',
--- 'Vulkan.Extensions.VK_KHR_get_memory_requirements2.getImageSparseMemoryRequirements2KHR'
+-- 'getImageSparseMemoryRequirements2', 'getImageSparseMemoryRequirements2'
 data ImageSparseMemoryRequirementsInfo2 = ImageSparseMemoryRequirementsInfo2
   { -- | @image@ is the image to query.
     --
@@ -490,29 +494,36 @@
 -- -   #VUID-VkMemoryRequirements2-sType-sType# @sType@ /must/ be
 --     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2'
 --
--- -   #VUID-VkMemoryRequirements2-pNext-pNext# @pNext@ /must/ be @NULL@ or
---     a pointer to a valid instance of
+-- -   #VUID-VkMemoryRequirements2-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_dedicated_allocation.MemoryDedicatedRequirements'
+--     or
+--     'Vulkan.Extensions.VK_QCOM_tile_memory_heap.TileMemoryRequirementsQCOM'
 --
 -- -   #VUID-VkMemoryRequirements2-sType-unique# The @sType@ value of each
---     struct in the @pNext@ chain /must/ be unique
+--     structure in the @pNext@ chain /must/ be unique
 --
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_memory_requirements2 VK_KHR_get_memory_requirements2>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core10.MemoryManagement.MemoryRequirements',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'getBufferMemoryRequirements2',
--- 'Vulkan.Extensions.VK_KHR_get_memory_requirements2.getBufferMemoryRequirements2KHR',
+-- 'Vulkan.Extensions.VK_NV_ray_tracing.getAccelerationStructureMemoryRequirementsNV',
+-- 'getBufferMemoryRequirements2', 'getBufferMemoryRequirements2',
+-- 'Vulkan.Extensions.VK_ARM_data_graph.getDataGraphPipelineSessionMemoryRequirementsARM',
 -- 'Vulkan.Core13.Promoted_From_VK_KHR_maintenance4.getDeviceBufferMemoryRequirements',
--- 'Vulkan.Extensions.VK_KHR_maintenance4.getDeviceBufferMemoryRequirementsKHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_maintenance4.getDeviceBufferMemoryRequirements',
 -- 'Vulkan.Core13.Promoted_From_VK_KHR_maintenance4.getDeviceImageMemoryRequirements',
--- 'Vulkan.Extensions.VK_KHR_maintenance4.getDeviceImageMemoryRequirementsKHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_maintenance4.getDeviceImageMemoryRequirements',
+-- 'Vulkan.Extensions.VK_ARM_tensors.getDeviceTensorMemoryRequirementsARM',
 -- 'Vulkan.Extensions.VK_EXT_device_generated_commands.getGeneratedCommandsMemoryRequirementsEXT',
 -- 'Vulkan.Extensions.VK_NV_device_generated_commands.getGeneratedCommandsMemoryRequirementsNV',
--- 'getImageMemoryRequirements2',
--- 'Vulkan.Extensions.VK_KHR_get_memory_requirements2.getImageMemoryRequirements2KHR',
--- 'Vulkan.Extensions.VK_NV_device_generated_commands_compute.getPipelineIndirectMemoryRequirementsNV'
+-- 'getImageMemoryRequirements2', 'getImageMemoryRequirements2',
+-- 'Vulkan.Extensions.VK_NV_device_generated_commands_compute.getPipelineIndirectMemoryRequirementsNV',
+-- 'Vulkan.Extensions.VK_ARM_tensors.getTensorMemoryRequirementsARM'
 data MemoryRequirements2 (es :: [Type]) = MemoryRequirements2
   { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
@@ -533,6 +544,7 @@
   getNext MemoryRequirements2{..} = next
   extends :: forall e b proxy. Typeable e => proxy e -> (Extends MemoryRequirements2 e => b) -> Maybe b
   extends _ f
+    | Just Refl <- eqT @e @TileMemoryRequirementsQCOM = Just f
     | Just Refl <- eqT @e @MemoryDedicatedRequirements = Just f
     | otherwise = Nothing
 
@@ -575,13 +587,13 @@
 --
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_memory_requirements2 VK_KHR_get_memory_requirements2>,
 -- <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'
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_maintenance4.getDeviceImageSparseMemoryRequirements',
+-- 'getImageSparseMemoryRequirements2', 'getImageSparseMemoryRequirements2'
 data SparseImageMemoryRequirements2 = SparseImageMemoryRequirements2
   { -- | @memoryRequirements@ is a
     -- 'Vulkan.Core10.SparseResourceMemoryManagement.SparseImageMemoryRequirements'
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
@@ -62,6 +62,7 @@
 import Vulkan.NamedType ((:::))
 import {-# SOURCE #-} Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer (AndroidHardwareBufferUsageANDROID)
 import Vulkan.CStruct.Extends (Chain)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_data_graph_optical_flow (DataGraphOpticalFlowImageFormatInfoARM)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_image_drm_format_modifier (DrmFormatModifierPropertiesList2EXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_image_drm_format_modifier (DrmFormatModifierPropertiesListEXT)
 import Vulkan.CStruct.Extends (Extends)
@@ -73,7 +74,7 @@
 import Vulkan.Core10.Enums.Format (Format(..))
 import Vulkan.Core10.DeviceInitialization (FormatProperties)
 import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_format_feature_flags2 (FormatProperties3)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_host_image_copy (HostImageCopyDevicePerformanceQueryEXT)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy (HostImageCopyDevicePerformanceQuery)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_image_compression_control (ImageCompressionControlEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_image_compression_control (ImageCompressionPropertiesEXT)
 import Vulkan.Core10.Enums.ImageCreateFlagBits (ImageCreateFlags)
@@ -117,18 +118,23 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_device_coherent_memory (PhysicalDeviceCoherentMemoryFeaturesAMD)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_color_write_enable (PhysicalDeviceColorWriteEnableFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_command_buffer_inheritance (PhysicalDeviceCommandBufferInheritanceFeaturesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_compute_occupancy_priority (PhysicalDeviceComputeOccupancyPriorityFeaturesNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_compute_shader_derivatives (PhysicalDeviceComputeShaderDerivativesFeaturesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_compute_shader_derivatives (PhysicalDeviceComputeShaderDerivativesPropertiesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_conditional_rendering (PhysicalDeviceConditionalRenderingFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_conservative_rasterization (PhysicalDeviceConservativeRasterizationPropertiesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_cooperative_matrix2 (PhysicalDeviceCooperativeMatrix2FeaturesNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_cooperative_matrix2 (PhysicalDeviceCooperativeMatrix2PropertiesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_cooperative_matrix_conversion (PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_cooperative_matrix (PhysicalDeviceCooperativeMatrixFeaturesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_cooperative_matrix (PhysicalDeviceCooperativeMatrixFeaturesNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_cooperative_matrix (PhysicalDeviceCooperativeMatrixPropertiesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_cooperative_matrix (PhysicalDeviceCooperativeMatrixPropertiesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_cooperative_vector (PhysicalDeviceCooperativeVectorFeaturesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_cooperative_vector (PhysicalDeviceCooperativeVectorPropertiesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_copy_memory_indirect (PhysicalDeviceCopyMemoryIndirectFeaturesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_copy_memory_indirect (PhysicalDeviceCopyMemoryIndirectFeaturesNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_copy_memory_indirect (PhysicalDeviceCopyMemoryIndirectPropertiesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_copy_memory_indirect (PhysicalDeviceCopyMemoryIndirectPropertiesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_corner_sampled_image (PhysicalDeviceCornerSampledImageFeaturesNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_coverage_reduction_mode (PhysicalDeviceCoverageReductionModeFeaturesNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_filter_cubic_clamp (PhysicalDeviceCubicClampFeaturesQCOM)
@@ -137,20 +143,32 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_cuda_kernel_launch (PhysicalDeviceCudaKernelLaunchPropertiesNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_custom_border_color (PhysicalDeviceCustomBorderColorFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_custom_border_color (PhysicalDeviceCustomBorderColorPropertiesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_custom_resolve (PhysicalDeviceCustomResolveFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_data_graph (PhysicalDeviceDataGraphFeaturesARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_data_graph_model (PhysicalDeviceDataGraphModelFeaturesQCOM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_data_graph_neural_accelerator_statistics (PhysicalDeviceDataGraphNeuralAcceleratorStatisticsFeaturesARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_data_graph_optical_flow (PhysicalDeviceDataGraphOpticalFlowFeaturesARM)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_dedicated_allocation_image_aliasing (PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_AMDX_dense_geometry_format (PhysicalDeviceDenseGeometryFormatFeaturesAMDX)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_depth_bias_control (PhysicalDeviceDepthBiasControlFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_depth_clamp_control (PhysicalDeviceDepthClampControlFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_depth_clamp_zero_one (PhysicalDeviceDepthClampZeroOneFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_depth_clamp_zero_one (PhysicalDeviceDepthClampZeroOneFeaturesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_depth_clip_control (PhysicalDeviceDepthClipControlFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_depth_clip_enable (PhysicalDeviceDepthClipEnableFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve (PhysicalDeviceDepthStencilResolveProperties)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_buffer (PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_buffer (PhysicalDeviceDescriptorBufferFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_buffer (PhysicalDeviceDescriptorBufferPropertiesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_tensors (PhysicalDeviceDescriptorBufferTensorFeaturesARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_tensors (PhysicalDeviceDescriptorBufferTensorPropertiesARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_heap (PhysicalDeviceDescriptorHeapFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_heap (PhysicalDeviceDescriptorHeapPropertiesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_heap (PhysicalDeviceDescriptorHeapTensorPropertiesARM)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing (PhysicalDeviceDescriptorIndexingFeatures)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing (PhysicalDeviceDescriptorIndexingProperties)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_descriptor_pool_overallocation (PhysicalDeviceDescriptorPoolOverallocationFeaturesNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_VALVE_descriptor_set_host_mapping (PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_device_address_commands (PhysicalDeviceDeviceAddressCommandsFeaturesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_generated_commands_compute (PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_device_generated_commands (PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_generated_commands (PhysicalDeviceDeviceGeneratedCommandsFeaturesNV)
@@ -164,8 +182,9 @@
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_driver_properties (PhysicalDeviceDriverProperties)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_physical_device_drm (PhysicalDeviceDrmPropertiesEXT)
 import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering (PhysicalDeviceDynamicRenderingFeatures)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read (PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read (PhysicalDeviceDynamicRenderingLocalReadFeatures)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_dynamic_rendering_unused_attachments (PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_elapsed_timer_query (PhysicalDeviceElapsedTimerQueryFeaturesQCOM)
 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_state3 (PhysicalDeviceExtendedDynamicState3FeaturesEXT)
@@ -173,6 +192,7 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_extended_dynamic_state (PhysicalDeviceExtendedDynamicStateFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_extended_sparse_address_space (PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_extended_sparse_address_space (PhysicalDeviceExtendedSparseAddressSpacePropertiesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_external_compute_queue (PhysicalDeviceExternalComputeQueuePropertiesNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_ANDROID_external_format_resolve (PhysicalDeviceExternalFormatResolveFeaturesANDROID)
 import {-# SOURCE #-} Vulkan.Extensions.VK_ANDROID_external_format_resolve (PhysicalDeviceExternalFormatResolvePropertiesANDROID)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities (PhysicalDeviceExternalImageFormatInfo)
@@ -180,13 +200,18 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_external_memory_rdma (PhysicalDeviceExternalMemoryRDMAFeaturesNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_QNX_external_memory_screen_buffer (PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_device_fault (PhysicalDeviceFaultFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_device_fault (PhysicalDeviceFaultFeaturesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_device_fault (PhysicalDeviceFaultPropertiesKHR)
 import Vulkan.Core10.DeviceInitialization (PhysicalDeviceFeatures)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_shader_float_controls (PhysicalDeviceFloatControlsProperties)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_format_pack (PhysicalDeviceFormatPackFeaturesARM)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_fragment_density_map2 (PhysicalDeviceFragmentDensityMap2FeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_fragment_density_map2 (PhysicalDeviceFragmentDensityMap2PropertiesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_fragment_density_map (PhysicalDeviceFragmentDensityMapFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_fragment_density_map_offset (PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM)
-import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_fragment_density_map_offset (PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_VALVE_fragment_density_map_layered (PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE)
+import {-# SOURCE #-} Vulkan.Extensions.VK_VALVE_fragment_density_map_layered (PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_fragment_density_map_offset (PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_fragment_density_map_offset (PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_fragment_density_map (PhysicalDeviceFragmentDensityMapPropertiesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_fragment_shader_barycentric (PhysicalDeviceFragmentShaderBarycentricFeaturesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_fragment_shader_barycentric (PhysicalDeviceFragmentShaderBarycentricPropertiesKHR)
@@ -196,12 +221,15 @@
 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_frame_boundary (PhysicalDeviceFrameBoundaryFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_global_priority (PhysicalDeviceGlobalPriorityQueryFeaturesKHR)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_global_priority (PhysicalDeviceGlobalPriorityQueryFeatures)
+import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_gpa_interface (PhysicalDeviceGpaFeaturesAMD)
+import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_gpa_interface (PhysicalDeviceGpaProperties2AMD)
+import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_gpa_interface (PhysicalDeviceGpaPropertiesAMD)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_graphics_pipeline_library (PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_graphics_pipeline_library (PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_HUAWEI_hdr_vivid (PhysicalDeviceHdrVividFeaturesHUAWEI)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_host_image_copy (PhysicalDeviceHostImageCopyFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_host_image_copy (PhysicalDeviceHostImageCopyPropertiesEXT)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy (PhysicalDeviceHostImageCopyFeatures)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy (PhysicalDeviceHostImageCopyProperties)
 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_2d_view_of_3d (PhysicalDeviceImage2DViewOf3DFeaturesEXT)
@@ -212,6 +240,7 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_image_drm_format_modifier (PhysicalDeviceImageDrmFormatModifierInfoEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_image_processing2 (PhysicalDeviceImageProcessing2FeaturesQCOM)
 import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_image_processing2 (PhysicalDeviceImageProcessing2PropertiesQCOM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_image_processing3 (PhysicalDeviceImageProcessing3FeaturesQCOM)
 import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_image_processing (PhysicalDeviceImageProcessingFeaturesQCOM)
 import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_image_processing (PhysicalDeviceImageProcessingPropertiesQCOM)
 import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_image_robustness (PhysicalDeviceImageRobustnessFeatures)
@@ -219,33 +248,40 @@
 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_KHR_index_type_uint8 (PhysicalDeviceIndexTypeUint8FeaturesKHR)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_index_type_uint8 (PhysicalDeviceIndexTypeUint8Features)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_inherited_viewport_scissor (PhysicalDeviceInheritedViewportScissorFeaturesNV)
 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_KHR_internally_synchronized_queues (PhysicalDeviceInternallySynchronizedQueuesFeaturesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_HUAWEI_invocation_mask (PhysicalDeviceInvocationMaskFeaturesHUAWEI)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance7 (PhysicalDeviceLayeredApiPropertiesListKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_MSFT_layered_driver (PhysicalDeviceLayeredDriverPropertiesMSFT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_legacy_dithering (PhysicalDeviceLegacyDitheringFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_legacy_vertex_attributes (PhysicalDeviceLegacyVertexAttributesFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_legacy_vertex_attributes (PhysicalDeviceLegacyVertexAttributesPropertiesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_line_rasterization (PhysicalDeviceLineRasterizationFeaturesKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_line_rasterization (PhysicalDeviceLineRasterizationPropertiesKHR)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_line_rasterization (PhysicalDeviceLineRasterizationFeatures)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_line_rasterization (PhysicalDeviceLineRasterizationProperties)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_linear_color_attachment (PhysicalDeviceLinearColorAttachmentFeaturesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance10 (PhysicalDeviceMaintenance10FeaturesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance10 (PhysicalDeviceMaintenance10PropertiesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance11 (PhysicalDeviceMaintenance11FeaturesKHR)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_maintenance3 (PhysicalDeviceMaintenance3Properties)
 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_KHR_maintenance5 (PhysicalDeviceMaintenance5FeaturesKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance5 (PhysicalDeviceMaintenance5PropertiesKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance6 (PhysicalDeviceMaintenance6FeaturesKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance6 (PhysicalDeviceMaintenance6PropertiesKHR)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_maintenance5 (PhysicalDeviceMaintenance5Features)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_maintenance5 (PhysicalDeviceMaintenance5Properties)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_maintenance6 (PhysicalDeviceMaintenance6Features)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_maintenance6 (PhysicalDeviceMaintenance6Properties)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance7 (PhysicalDeviceMaintenance7FeaturesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance7 (PhysicalDeviceMaintenance7PropertiesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance8 (PhysicalDeviceMaintenance8FeaturesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance9 (PhysicalDeviceMaintenance9FeaturesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance9 (PhysicalDeviceMaintenance9PropertiesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_map_memory_placed (PhysicalDeviceMapMemoryPlacedFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_map_memory_placed (PhysicalDeviceMapMemoryPlacedPropertiesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_memory_budget (PhysicalDeviceMemoryBudgetPropertiesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_memory_decompression (PhysicalDeviceMemoryDecompressionFeaturesNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_memory_decompression (PhysicalDeviceMemoryDecompressionPropertiesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_memory_decompression (PhysicalDeviceMemoryDecompressionFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_memory_decompression (PhysicalDeviceMemoryDecompressionPropertiesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_memory_priority (PhysicalDeviceMemoryPriorityFeaturesEXT)
 import Vulkan.Core10.DeviceInitialization (PhysicalDeviceMemoryProperties)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_mesh_shader (PhysicalDeviceMeshShaderFeaturesEXT)
@@ -265,7 +301,9 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_nested_command_buffer (PhysicalDeviceNestedCommandBufferPropertiesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_non_seamless_cube_map (PhysicalDeviceNonSeamlessCubeMapFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_opacity_micromap (PhysicalDeviceOpacityMicromapFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_opacity_micromap (PhysicalDeviceOpacityMicromapFeaturesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_opacity_micromap (PhysicalDeviceOpacityMicromapPropertiesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_opacity_micromap (PhysicalDeviceOpacityMicromapPropertiesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_optical_flow (PhysicalDeviceOpticalFlowFeaturesNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_optical_flow (PhysicalDeviceOpticalFlowPropertiesNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_pci_bus_info (PhysicalDevicePCIBusInfoPropertiesEXT)
@@ -275,20 +313,27 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_performance_query (PhysicalDevicePerformanceQueryPropertiesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_pipeline_binary (PhysicalDevicePipelineBinaryFeaturesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_pipeline_binary (PhysicalDevicePipelineBinaryPropertiesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_SEC_pipeline_cache_incremental_mode (PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC)
 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_EXT_pipeline_library_group_handles (PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_pipeline_opacity_micromap (PhysicalDevicePipelineOpacityMicromapFeaturesARM)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_pipeline_properties (PhysicalDevicePipelinePropertiesFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_pipeline_protected_access (PhysicalDevicePipelineProtectedAccessFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_pipeline_robustness (PhysicalDevicePipelineRobustnessFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_pipeline_robustness (PhysicalDevicePipelineRobustnessPropertiesEXT)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_EXT_pipeline_protected_access (PhysicalDevicePipelineProtectedAccessFeatures)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_EXT_pipeline_robustness (PhysicalDevicePipelineRobustnessFeatures)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_EXT_pipeline_robustness (PhysicalDevicePipelineRobustnessProperties)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_maintenance2 (PhysicalDevicePointClippingProperties)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_portability_subset (PhysicalDevicePortabilitySubsetFeaturesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_portability_subset (PhysicalDevicePortabilitySubsetPropertiesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_present_barrier (PhysicalDevicePresentBarrierFeaturesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_present_id2 (PhysicalDevicePresentId2FeaturesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_present_id (PhysicalDevicePresentIdFeaturesKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_present_mode_fifo_latest_ready (PhysicalDevicePresentModeFifoLatestReadyFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_present_metering (PhysicalDevicePresentMeteringFeaturesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_present_mode_fifo_latest_ready (PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_present_timing (PhysicalDevicePresentTimingFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_present_wait2 (PhysicalDevicePresentWait2FeaturesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_present_wait (PhysicalDevicePresentWaitFeaturesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_primitive_restart_index (PhysicalDevicePrimitiveRestartIndexFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_primitive_topology_list_restart (PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_primitives_generated_query (PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_private_data (PhysicalDevicePrivateDataFeatures)
@@ -297,13 +342,20 @@
 import {-# SOURCE #-} Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory (PhysicalDeviceProtectedMemoryProperties)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_provoking_vertex (PhysicalDeviceProvokingVertexFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_provoking_vertex (PhysicalDeviceProvokingVertexPropertiesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_push_descriptor (PhysicalDevicePushDescriptorPropertiesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_push_constant_bank (PhysicalDevicePushConstantBankFeaturesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_push_constant_bank (PhysicalDevicePushConstantBankPropertiesNV)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_push_descriptor (PhysicalDevicePushDescriptorProperties)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_queue_perf_hint (PhysicalDeviceQueuePerfHintFeaturesQCOM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_queue_perf_hint (PhysicalDeviceQueuePerfHintPropertiesQCOM)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_rgba10x6_formats (PhysicalDeviceRGBA10X6FormatsFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_rasterization_order_attachment_access (PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_raw_access_chains (PhysicalDeviceRawAccessChainsFeaturesNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_query (PhysicalDeviceRayQueryFeaturesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_ray_tracing_invocation_reorder (PhysicalDeviceRayTracingInvocationReorderFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing_invocation_reorder (PhysicalDeviceRayTracingInvocationReorderFeaturesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_ray_tracing_invocation_reorder (PhysicalDeviceRayTracingInvocationReorderPropertiesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing_invocation_reorder (PhysicalDeviceRayTracingInvocationReorderPropertiesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing_linear_swept_spheres (PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing_maintenance1 (PhysicalDeviceRayTracingMaintenance1FeaturesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing_motion_blur (PhysicalDeviceRayTracingMotionBlurFeaturesNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing_pipeline (PhysicalDeviceRayTracingPipelineFeaturesKHR)
@@ -315,20 +367,26 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_render_pass_striped (PhysicalDeviceRenderPassStripedFeaturesARM)
 import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_render_pass_striped (PhysicalDeviceRenderPassStripedPropertiesARM)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_representative_fragment_test (PhysicalDeviceRepresentativeFragmentTestFeaturesNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_robustness2 (PhysicalDeviceRobustness2FeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_robustness2 (PhysicalDeviceRobustness2PropertiesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_robustness2 (PhysicalDeviceRobustness2FeaturesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_robustness2 (PhysicalDeviceRobustness2PropertiesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_sample_locations (PhysicalDeviceSampleLocationsPropertiesEXT)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax (PhysicalDeviceSamplerFilterMinmaxProperties)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion (PhysicalDeviceSamplerYcbcrConversionFeatures)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_EXT_scalar_block_layout (PhysicalDeviceScalarBlockLayoutFeatures)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_scheduling_controls (PhysicalDeviceSchedulingControlsDispatchParametersPropertiesARM)
 import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_scheduling_controls (PhysicalDeviceSchedulingControlsFeaturesARM)
 import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_scheduling_controls (PhysicalDeviceSchedulingControlsPropertiesARM)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts (PhysicalDeviceSeparateDepthStencilLayoutsFeatures)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_shader_64bit_indexing (PhysicalDeviceShader64BitIndexingFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_shader_abort (PhysicalDeviceShaderAbortFeaturesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_shader_abort (PhysicalDeviceShaderAbortPropertiesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_shader_atomic_float16_vector (PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_shader_atomic_float2 (PhysicalDeviceShaderAtomicFloat2FeaturesEXT)
 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_bfloat16 (PhysicalDeviceShaderBfloat16FeaturesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_shader_clock (PhysicalDeviceShaderClockFeaturesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_shader_constant_data (PhysicalDeviceShaderConstantDataFeaturesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_shader_core_builtins (PhysicalDeviceShaderCoreBuiltinsFeaturesARM)
 import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_shader_core_builtins (PhysicalDeviceShaderCoreBuiltinsPropertiesARM)
 import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_shader_core_properties2 (PhysicalDeviceShaderCoreProperties2AMD)
@@ -339,17 +397,26 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_shader_early_and_late_fragment_tests (PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD)
 import {-# SOURCE #-} Vulkan.Extensions.VK_AMDX_shader_enqueue (PhysicalDeviceShaderEnqueueFeaturesAMDX)
 import {-# SOURCE #-} Vulkan.Extensions.VK_AMDX_shader_enqueue (PhysicalDeviceShaderEnqueuePropertiesAMDX)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_shader_expect_assume (PhysicalDeviceShaderExpectAssumeFeaturesKHR)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_shader_expect_assume (PhysicalDeviceShaderExpectAssumeFeatures)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_shader_float16_int8 (PhysicalDeviceShaderFloat16Int8Features)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_shader_float_controls2 (PhysicalDeviceShaderFloatControls2FeaturesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_shader_float8 (PhysicalDeviceShaderFloat8FeaturesEXT)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_shader_float_controls2 (PhysicalDeviceShaderFloatControls2Features)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_shader_fma (PhysicalDeviceShaderFmaFeaturesKHR)
 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_ARM_shader_instrumentation (PhysicalDeviceShaderInstrumentationFeaturesARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_shader_instrumentation (PhysicalDeviceShaderInstrumentationPropertiesARM)
 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_EXT_shader_long_vector (PhysicalDeviceShaderLongVectorFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_shader_long_vector (PhysicalDeviceShaderLongVectorPropertiesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_shader_maximal_reconvergence (PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_VALVE_shader_mixed_float_dot_product (PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_shader_module_identifier (PhysicalDeviceShaderModuleIdentifierFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_shader_module_identifier (PhysicalDeviceShaderModuleIdentifierPropertiesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_shader_multiple_wait_queues (PhysicalDeviceShaderMultipleWaitQueuesFeaturesQCOM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_shader_multiple_wait_queues (PhysicalDeviceShaderMultipleWaitQueuesPropertiesQCOM)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_shader_object (PhysicalDeviceShaderObjectFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_shader_object (PhysicalDeviceShaderObjectPropertiesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_shader_quad_control (PhysicalDeviceShaderQuadControlFeaturesKHR)
@@ -357,12 +424,17 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_shader_replicated_composites (PhysicalDeviceShaderReplicatedCompositesFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_shader_sm_builtins (PhysicalDeviceShaderSMBuiltinsFeaturesNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_shader_sm_builtins (PhysicalDeviceShaderSMBuiltinsPropertiesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_shader_split_barrier (PhysicalDeviceShaderSplitBarrierFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_shader_split_barrier (PhysicalDeviceShaderSplitBarrierPropertiesEXT)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_shader_subgroup_extended_types (PhysicalDeviceShaderSubgroupExtendedTypesFeatures)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_shader_subgroup_rotate (PhysicalDeviceShaderSubgroupRotateFeaturesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_shader_subgroup_partitioned (PhysicalDeviceShaderSubgroupPartitionedFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_shader_subgroup_rotate (PhysicalDeviceShaderSubgroupRotateFeatures)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_shader_subgroup_uniform_control_flow (PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR)
 import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_shader_terminate_invocation (PhysicalDeviceShaderTerminateInvocationFeatures)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_shader_tile_image (PhysicalDeviceShaderTileImageFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_shader_tile_image (PhysicalDeviceShaderTileImagePropertiesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_shader_uniform_buffer_unsized_array (PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_shader_untyped_pointers (PhysicalDeviceShaderUntypedPointersFeaturesKHR)
 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)
@@ -371,21 +443,30 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_subpass_merge_feedback (PhysicalDeviceSubpassMergeFeedbackFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_HUAWEI_subpass_shading (PhysicalDeviceSubpassShadingFeaturesHUAWEI)
 import {-# SOURCE #-} Vulkan.Extensions.VK_HUAWEI_subpass_shading (PhysicalDeviceSubpassShadingPropertiesHUAWEI)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_swapchain_maintenance1 (PhysicalDeviceSwapchainMaintenance1FeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_swapchain_maintenance1 (PhysicalDeviceSwapchainMaintenance1FeaturesKHR)
 import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_synchronization2 (PhysicalDeviceSynchronization2Features)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_tensors (PhysicalDeviceTensorFeaturesARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_tensors (PhysicalDeviceTensorPropertiesARM)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_texel_buffer_alignment (PhysicalDeviceTexelBufferAlignmentFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_texel_buffer_alignment (PhysicalDeviceTexelBufferAlignmentProperties)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_texture_compression_astc_3d (PhysicalDeviceTextureCompressionASTC3DFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_texture_compression_astc_hdr (PhysicalDeviceTextureCompressionASTCHDRFeatures)
+import {-# SOURCE #-} Vulkan.Extensions.VK_SEC_throttle_hint (PhysicalDeviceThrottleHintFeaturesSEC)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_tile_memory_heap (PhysicalDeviceTileMemoryHeapFeaturesQCOM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_tile_memory_heap (PhysicalDeviceTileMemoryHeapPropertiesQCOM)
 import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_tile_properties (PhysicalDeviceTilePropertiesFeaturesQCOM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_tile_shading (PhysicalDeviceTileShadingFeaturesQCOM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_tile_shading (PhysicalDeviceTileShadingPropertiesQCOM)
 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)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_transform_feedback (PhysicalDeviceTransformFeedbackPropertiesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_unified_image_layouts (PhysicalDeviceUnifiedImageLayoutsFeaturesKHR)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_uniform_buffer_standard_layout (PhysicalDeviceUniformBufferStandardLayoutFeatures)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_variable_pointers (PhysicalDeviceVariablePointersFeatures)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_vertex_attribute_divisor (PhysicalDeviceVertexAttributeDivisorFeaturesKHR)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_vertex_attribute_divisor (PhysicalDeviceVertexAttributeDivisorFeatures)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_vertex_attribute_divisor (PhysicalDeviceVertexAttributeDivisorProperties)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_vertex_attribute_divisor (PhysicalDeviceVertexAttributeDivisorPropertiesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_vertex_attribute_divisor (PhysicalDeviceVertexAttributeDivisorPropertiesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_vertex_attribute_robustness (PhysicalDeviceVertexAttributeRobustnessFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state (PhysicalDeviceVertexInputDynamicStateFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Core12 (PhysicalDeviceVulkan11Features)
@@ -394,18 +475,23 @@
 import {-# SOURCE #-} Vulkan.Core12 (PhysicalDeviceVulkan12Properties)
 import {-# SOURCE #-} Vulkan.Core13 (PhysicalDeviceVulkan13Features)
 import {-# SOURCE #-} Vulkan.Core13 (PhysicalDeviceVulkan13Properties)
+import {-# SOURCE #-} Vulkan.Core14 (PhysicalDeviceVulkan14Features)
+import {-# SOURCE #-} Vulkan.Core14 (PhysicalDeviceVulkan14Properties)
 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_QCOM_ycbcr_degamma (PhysicalDeviceYcbcrDegammaFeaturesQCOM)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_ycbcr_image_arrays (PhysicalDeviceYcbcrImageArraysFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_zero_initialize_device_memory (PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT)
 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_NV_device_diagnostic_checkpoints (QueueFamilyCheckpointProperties2NV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_diagnostic_checkpoints (QueueFamilyCheckpointPropertiesNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_global_priority (QueueFamilyGlobalPriorityPropertiesKHR)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_global_priority (QueueFamilyGlobalPriorityProperties)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance11 (QueueFamilyOptimalImageTransferGranularityPropertiesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance9 (QueueFamilyOwnershipTransferPropertiesKHR)
 import Vulkan.Core10.DeviceInitialization (QueueFamilyProperties)
 import Vulkan.Core10.Enums.Result (Result)
 import Vulkan.Core10.Enums.Result (Result(..))
@@ -415,6 +501,8 @@
 import Vulkan.Core10.SparseResourceMemoryManagement (SparseImageFormatProperties)
 import Vulkan.Core10.Enums.StructureType (StructureType)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled (SubpassResolvePerformanceQueryEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_heap (SubsampledImageFormatPropertiesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_tensors (TensorFormatPropertiesARM)
 import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_texture_gather_bias_lod (TextureLODGatherFormatPropertiesAMD)
 import Vulkan.Exception (VulkanException(..))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_FORMAT_PROPERTIES_2))
@@ -452,6 +540,7 @@
 --
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core10.Handles.PhysicalDevice', 'PhysicalDeviceFeatures2'
 getPhysicalDeviceFeatures2 :: forall a io
@@ -500,6 +589,7 @@
 --
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core10.Handles.PhysicalDevice', 'PhysicalDeviceProperties2'
 getPhysicalDeviceProperties2 :: forall a io
@@ -545,10 +635,35 @@
 -- with the ability to return extended information in a @pNext@ chain of
 -- output structures.
 --
+-- == Valid Usage
+--
+-- -   #VUID-vkGetPhysicalDeviceFormatProperties2-None-12273# If Vulkan 1.3
+--     is not supported, the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance5 maintenance5>
+--     feature is not supported, and the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-ycbcr2plane444Formats ycbcr2plane444Formats>
+--     feature is not supported, @format@ /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_G8_B8R8_2PLANE_444_UNORM',
+--     'Vulkan.Core10.Enums.Format.FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16',
+--     'Vulkan.Core10.Enums.Format.FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16',
+--     or 'Vulkan.Core10.Enums.Format.FORMAT_G16_B16R16_2PLANE_444_UNORM'
+--
 -- == Valid Usage (Implicit)
 --
+-- -   #VUID-vkGetPhysicalDeviceFormatProperties2-physicalDevice-parameter#
+--     @physicalDevice@ /must/ be a valid
+--     'Vulkan.Core10.Handles.PhysicalDevice' handle
+--
+-- -   #VUID-vkGetPhysicalDeviceFormatProperties2-format-parameter#
+--     @format@ /must/ be a valid 'Vulkan.Core10.Enums.Format.Format' value
+--
+-- -   #VUID-vkGetPhysicalDeviceFormatProperties2-pFormatProperties-parameter#
+--     @pFormatProperties@ /must/ be a valid pointer to a
+--     'FormatProperties2' structure
+--
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core10.Enums.Format.Format', 'FormatProperties2',
 -- 'Vulkan.Core10.Handles.PhysicalDevice'
@@ -559,15 +674,8 @@
                                       , MonadIO io )
                                    => -- | @physicalDevice@ is the physical device from which to query the format
                                       -- properties.
-                                      --
-                                      -- #VUID-vkGetPhysicalDeviceFormatProperties2-physicalDevice-parameter#
-                                      -- @physicalDevice@ /must/ be a valid
-                                      -- 'Vulkan.Core10.Handles.PhysicalDevice' handle
                                       PhysicalDevice
                                    -> -- | @format@ is the format whose properties are queried.
-                                      --
-                                      -- #VUID-vkGetPhysicalDeviceFormatProperties2-format-parameter# @format@
-                                      -- /must/ be a valid 'Vulkan.Core10.Enums.Format.Format' value
                                       Format
                                    -> io (FormatProperties2 a)
 getPhysicalDeviceFormatProperties2 physicalDevice
@@ -607,16 +715,41 @@
 -- structure with a @profileCount@ member greater than @0@, then this
 -- command returns format capabilities specific to image types used in
 -- conjunction with the specified
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#video-profiles video profiles>.
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#video-profiles video profiles>.
 -- In this case, this command will return one of the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#video-profile-error-codes video-profile-specific error codes>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#video-profile-error-codes video-profile-specific error codes>
 -- if any of the profiles specified via
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoProfileListInfoKHR VkVideoProfileListInfoKHR>::@pProfiles@
 -- are not supported. Furthermore, if
 -- 'PhysicalDeviceImageFormatInfo2'::@usage@ includes any image usage flag
 -- not supported by the specified video profiles, then this command returns
--- @VK_ERROR_IMAGE_USAGE_NOT_SUPPORTED_KHR@.
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkResult VK_ERROR_IMAGE_USAGE_NOT_SUPPORTED_KHR>.
 --
+-- If the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-hostImageCopy hostImageCopy>
+-- feature is supported, and:
+--
+-- -   @pImageFormatInfo->usage@ includes
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT'
+--
+-- -   @pImageFormatInfo->flags@ does not include either of
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_BINDING_BIT',
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_RESIDENCY_BIT',
+--     or
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_ALIASED_BIT'
+--
+-- -   The @pNext@ chain of @pImageFormatInfo@ does not include a
+--     'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceExternalImageFormatInfo'
+--     structure with non-zero @handleType@
+--
+-- -   @pImageFormatInfo->tiling@ is not
+--     'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT'
+--
+-- Then the result of calls to 'getPhysicalDeviceImageFormatProperties2'
+-- with identical parameters except for the inclusion of
+-- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_HOST_TRANSFER_BIT'
+-- in @pImageFormatInfo->usage@ /must/ be identical.
+--
 -- == Valid Usage
 --
 -- -   #VUID-vkGetPhysicalDeviceImageFormatProperties2-pNext-01868# If the
@@ -629,9 +762,9 @@
 --
 -- -   #VUID-vkGetPhysicalDeviceImageFormatProperties2-pNext-09004# If the
 --     @pNext@ chain of @pImageFormatProperties@ includes a
---     'Vulkan.Extensions.VK_EXT_host_image_copy.HostImageCopyDevicePerformanceQueryEXT'
+--     'Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy.HostImageCopyDevicePerformanceQuery'
 --     structure, @pImageFormatInfo->usage@ /must/ contain
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_HOST_TRANSFER_BIT_EXT'
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_HOST_TRANSFER_BIT'
 --
 -- == Valid Usage (Implicit)
 --
@@ -655,24 +788,29 @@
 --
 -- [<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_FORMAT_NOT_SUPPORTED'
 --
+--     -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkResult VK_ERROR_IMAGE_USAGE_NOT_SUPPORTED_KHR>
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_FORMAT_NOT_SUPPORTED'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   @VK_ERROR_IMAGE_USAGE_NOT_SUPPORTED_KHR@
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
---     -   @VK_ERROR_VIDEO_PROFILE_OPERATION_NOT_SUPPORTED_KHR@
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
 --
---     -   @VK_ERROR_VIDEO_PROFILE_FORMAT_NOT_SUPPORTED_KHR@
+--     -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkResult VK_ERROR_VIDEO_PICTURE_LAYOUT_NOT_SUPPORTED_KHR>
 --
---     -   @VK_ERROR_VIDEO_PICTURE_LAYOUT_NOT_SUPPORTED_KHR@
+--     -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkResult VK_ERROR_VIDEO_PROFILE_CODEC_NOT_SUPPORTED_KHR>
 --
---     -   @VK_ERROR_VIDEO_PROFILE_CODEC_NOT_SUPPORTED_KHR@
+--     -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkResult VK_ERROR_VIDEO_PROFILE_FORMAT_NOT_SUPPORTED_KHR>
 --
+--     -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkResult VK_ERROR_VIDEO_PROFILE_OPERATION_NOT_SUPPORTED_KHR>
+--
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'ImageFormatProperties2', 'Vulkan.Core10.Handles.PhysicalDevice',
 -- 'PhysicalDeviceImageFormatInfo2'
@@ -743,6 +881,7 @@
 --
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core10.Handles.PhysicalDevice', 'QueueFamilyProperties2'
 getPhysicalDeviceQueueFamilyProperties2 :: forall a io
@@ -798,6 +937,7 @@
 --
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core10.Handles.PhysicalDevice',
 -- 'PhysicalDeviceMemoryProperties2'
@@ -864,6 +1004,7 @@
 --
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core10.Handles.PhysicalDevice',
 -- 'PhysicalDeviceSparseImageFormatInfo2', 'SparseImageFormatProperties2'
@@ -914,15 +1055,19 @@
 -- of a 'Vulkan.Core10.Device.DeviceCreateInfo' structure, in which case it
 -- controls which features are enabled in lieu of @pEnabledFeatures@.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceFeatures',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'getPhysicalDeviceFeatures2',
--- 'Vulkan.Extensions.VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2KHR'
+-- 'getPhysicalDeviceFeatures2', 'getPhysicalDeviceFeatures2'
 data PhysicalDeviceFeatures2 (es :: [Type]) = PhysicalDeviceFeatures2
   { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
@@ -943,22 +1088,55 @@
   getNext PhysicalDeviceFeatures2{..} = next
   extends :: forall e b proxy. Typeable e => proxy e -> (Extends PhysicalDeviceFeatures2 e => b) -> Maybe b
   extends _ f
+    | Just Refl <- eqT @e @PhysicalDeviceDataGraphOpticalFlowFeaturesARM = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceShaderAbortFeaturesKHR = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceShaderConstantDataFeaturesKHR = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceDeviceAddressCommandsFeaturesKHR = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceShaderInstrumentationFeaturesARM = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceDescriptorHeapFeaturesEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceShaderSplitBarrierFeaturesEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceShaderSubgroupPartitionedFeaturesEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceTextureCompressionASTC3DFeaturesEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceShaderLongVectorFeaturesEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceComputeOccupancyPriorityFeaturesNV = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceQueuePerfHintFeaturesQCOM = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceShader64BitIndexingFeaturesEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceShaderUntypedPointersFeaturesKHR = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceDataGraphModelFeaturesQCOM = Just f
+    | Just Refl <- eqT @e @PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceDataGraphFeaturesARM = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceShaderFloat8FeaturesEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceDescriptorBufferTensorFeaturesARM = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceTensorFeaturesARM = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceThrottleHintFeaturesSEC = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceFormatPackFeaturesARM = Just f
+    | Just Refl <- eqT @e @PhysicalDevicePrimitiveRestartIndexFeaturesEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDevicePresentMeteringFeaturesNV = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceTileShadingFeaturesQCOM = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceCooperativeVectorFeaturesNV = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceDepthClampZeroOneFeaturesKHR = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceDenseGeometryFormatFeaturesAMDX = Just f
     | Just Refl <- eqT @e @PhysicalDeviceVertexAttributeRobustnessFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceHdrVividFeaturesHUAWEI = Just f
     | Just Refl <- eqT @e @PhysicalDeviceCooperativeMatrix2FeaturesNV = Just f
-    | Just Refl <- eqT @e @PhysicalDevicePresentModeFifoLatestReadyFeaturesEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR = Just f
     | Just Refl <- eqT @e @PhysicalDeviceShaderReplicatedCompositesFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceImageAlignmentControlFeaturesMESA = Just f
     | Just Refl <- eqT @e @PhysicalDeviceCommandBufferInheritanceFeaturesNV = Just f
     | Just Refl <- eqT @e @PhysicalDeviceRawAccessChainsFeaturesNV = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceShaderBfloat16FeaturesKHR = Just f
     | Just Refl <- eqT @e @PhysicalDeviceMapMemoryPlacedFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV = Just f
     | Just Refl <- eqT @e @PhysicalDeviceShaderQuadControlFeaturesKHR = Just f
-    | Just Refl <- eqT @e @PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR = Just f
-    | Just Refl <- eqT @e @PhysicalDeviceShaderFloatControls2FeaturesKHR = Just f
-    | Just Refl <- eqT @e @PhysicalDeviceShaderExpectAssumeFeaturesKHR = Just f
-    | Just Refl <- eqT @e @PhysicalDeviceShaderSubgroupRotateFeaturesKHR = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceDynamicRenderingLocalReadFeatures = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceShaderFloatControls2Features = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceShaderExpectAssumeFeatures = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceShaderSubgroupRotateFeatures = Just f
     | Just Refl <- eqT @e @PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR = Just f
+    | Just Refl <- eqT @e @PhysicalDevicePipelineOpacityMicromapFeaturesARM = Just f
     | Just Refl <- eqT @e @PhysicalDeviceRenderPassStripedFeaturesARM = Just f
     | Just Refl <- eqT @e @PhysicalDeviceRelaxedLineRasterizationFeaturesIMG = Just f
     | Just Refl <- eqT @e @PhysicalDeviceSchedulingControlsFeaturesARM = Just f
@@ -966,12 +1144,15 @@
     | Just Refl <- eqT @e @PhysicalDeviceExternalFormatResolveFeaturesANDROID = Just f
     | Just Refl <- eqT @e @PhysicalDevicePerStageDescriptorSetFeaturesNV = Just f
     | Just Refl <- eqT @e @PhysicalDeviceDescriptorPoolOverallocationFeaturesNV = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceImageProcessing3FeaturesQCOM = Just f
     | Just Refl <- eqT @e @PhysicalDeviceImageProcessing2FeaturesQCOM = Just f
     | Just Refl <- eqT @e @PhysicalDeviceCubicWeightsFeaturesQCOM = Just f
     | Just Refl <- eqT @e @PhysicalDeviceYcbcrDegammaFeaturesQCOM = Just f
     | Just Refl <- eqT @e @PhysicalDeviceCubicClampFeaturesQCOM = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceTileMemoryHeapFeaturesQCOM = Just f
     | Just Refl <- eqT @e @PhysicalDeviceAntiLagFeaturesAMD = Just f
     | Just Refl <- eqT @e @PhysicalDeviceShaderEnqueueFeaturesAMDX = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM = Just f
     | Just Refl <- eqT @e @PhysicalDeviceCooperativeMatrixFeaturesKHR = Just f
     | Just Refl <- eqT @e @PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX = Just f
     | Just Refl <- eqT @e @PhysicalDeviceShaderTileImageFeaturesEXT = Just f
@@ -981,32 +1162,37 @@
     | Just Refl <- eqT @e @PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM = Just f
     | Just Refl <- eqT @e @PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV = Just f
     | Just Refl <- eqT @e @PhysicalDeviceRayTracingInvocationReorderFeaturesNV = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceRayTracingInvocationReorderFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceDepthBiasControlFeaturesEXT = Just f
-    | Just Refl <- eqT @e @PhysicalDeviceSwapchainMaintenance1FeaturesEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceSwapchainMaintenance1FeaturesKHR = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceInternallySynchronizedQueuesFeaturesKHR = Just f
     | Just Refl <- eqT @e @PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceFrameBoundaryFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceShaderCoreBuiltinsFeaturesARM = Just f
     | Just Refl <- eqT @e @PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceFaultFeaturesKHR = Just f
     | Just Refl <- eqT @e @PhysicalDeviceFaultFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceOpticalFlowFeaturesNV = Just f
     | Just Refl <- eqT @e @PhysicalDeviceAddressBindingReportFeaturesEXT = Just f
-    | Just Refl <- eqT @e @PhysicalDeviceDepthClampZeroOneFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceAmigoProfilingFeaturesSEC = Just f
     | Just Refl <- eqT @e @PhysicalDeviceTilePropertiesFeaturesQCOM = Just f
     | Just Refl <- eqT @e @PhysicalDeviceImageProcessingFeaturesQCOM = Just f
-    | Just Refl <- eqT @e @PhysicalDevicePipelineRobustnessFeaturesEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceShaderMultipleWaitQueuesFeaturesQCOM = Just f
+    | Just Refl <- eqT @e @PhysicalDevicePipelineRobustnessFeatures = Just f
     | Just Refl <- eqT @e @PhysicalDeviceNonSeamlessCubeMapFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD = Just f
     | Just Refl <- eqT @e @PhysicalDevicePipelinePropertiesFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceDisplacementMicromapFeaturesNV = Just f
     | Just Refl <- eqT @e @PhysicalDeviceOpacityMicromapFeaturesEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceOpacityMicromapFeaturesKHR = Just f
     | Just Refl <- eqT @e @PhysicalDeviceSubpassMergeFeedbackFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceImageCompressionControlFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceShaderModuleIdentifierFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceNestedCommandBufferFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceDataGraphNeuralAcceleratorStatisticsFeaturesARM = Just f
     | Just Refl <- eqT @e @PhysicalDevicePipelineBinaryFeaturesKHR = Just f
     | Just Refl <- eqT @e @PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceLinearColorAttachmentFeaturesNV = Just f
@@ -1014,19 +1200,22 @@
     | Just Refl <- eqT @e @PhysicalDeviceImageViewMinLodFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceDynamicRenderingFeatures = Just f
     | Just Refl <- eqT @e @PhysicalDeviceRGBA10X6FormatsFeaturesEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV = Just f
     | Just Refl <- eqT @e @PhysicalDeviceRayTracingValidationFeaturesNV = Just f
     | Just Refl <- eqT @e @PhysicalDeviceRayTracingMotionBlurFeaturesNV = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceShaderFmaFeaturesKHR = Just f
     | Just Refl <- eqT @e @PhysicalDeviceFragmentShaderBarycentricFeaturesKHR = Just f
     | Just Refl <- eqT @e @PhysicalDeviceShaderIntegerDotProductFeatures = Just f
     | Just Refl <- eqT @e @PhysicalDeviceDescriptorBufferFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceProvokingVertexFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceInheritedViewportScissorFeaturesNV = Just f
-    | Just Refl <- eqT @e @PhysicalDevicePipelineProtectedAccessFeaturesEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDevicePipelineProtectedAccessFeatures = Just f
     | Just Refl <- eqT @e @PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceLegacyDitheringFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT = Just f
-    | Just Refl <- eqT @e @PhysicalDeviceHostImageCopyFeaturesEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceHostImageCopyFeatures = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceUnifiedImageLayoutsFeaturesKHR = Just f
     | Just Refl <- eqT @e @PhysicalDeviceSynchronization2Features = Just f
     | Just Refl <- eqT @e @PhysicalDeviceColorWriteEnableFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR = Just f
@@ -1034,6 +1223,8 @@
     | Just Refl <- eqT @e @PhysicalDeviceVertexInputDynamicStateFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceDepthClampControlFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceCustomResolveFeaturesEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceDepthClipControlFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceMutableDescriptorTypeFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceLegacyVertexAttributesFeaturesEXT = Just f
@@ -1050,7 +1241,7 @@
     | Just Refl <- eqT @e @PhysicalDevicePortabilitySubsetFeaturesKHR = Just f
     | Just Refl <- eqT @e @PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR = Just f
     | Just Refl <- eqT @e @PhysicalDeviceImageRobustnessFeatures = Just f
-    | Just Refl <- eqT @e @PhysicalDeviceRobustness2FeaturesEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceRobustness2FeaturesKHR = Just f
     | Just Refl <- eqT @e @PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR = Just f
     | Just Refl <- eqT @e @PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures = Just f
     | Just Refl <- eqT @e @PhysicalDeviceDiagnosticsConfigFeaturesNV = Just f
@@ -1059,12 +1250,14 @@
     | 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 @PhysicalDeviceGpaFeaturesAMD = Just f
     | Just Refl <- eqT @e @PhysicalDeviceCoherentMemoryFeaturesAMD = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceVulkan14Features = 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 @PhysicalDevicePipelineCreationCacheControlFeatures = Just f
-    | Just Refl <- eqT @e @PhysicalDeviceLineRasterizationFeaturesKHR = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceLineRasterizationFeatures = Just f
     | Just Refl <- eqT @e @PhysicalDeviceSubgroupSizeControlFeatures = Just f
     | Just Refl <- eqT @e @PhysicalDeviceTexelBufferAlignmentFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceShaderDemoteToHelperInvocationFeatures = Just f
@@ -1073,7 +1266,7 @@
     | Just Refl <- eqT @e @PhysicalDeviceSeparateDepthStencilLayoutsFeatures = Just f
     | Just Refl <- eqT @e @PhysicalDeviceFragmentShaderInterlockFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceShaderSMBuiltinsFeaturesNV = Just f
-    | Just Refl <- eqT @e @PhysicalDeviceIndexTypeUint8FeaturesKHR = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceIndexTypeUint8Features = Just f
     | Just Refl <- eqT @e @PhysicalDeviceShaderClockFeaturesKHR = Just f
     | Just Refl <- eqT @e @PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL = Just f
     | Just Refl <- eqT @e @PhysicalDeviceCoverageReductionModeFeaturesNV = Just f
@@ -1090,7 +1283,7 @@
     | Just Refl <- eqT @e @PhysicalDeviceDepthClipEnableFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceUniformBufferStandardLayoutFeatures = Just f
     | Just Refl <- eqT @e @PhysicalDeviceScalarBlockLayoutFeatures = Just f
-    | Just Refl <- eqT @e @PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceFragmentDensityMap2FeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceFragmentDensityMapFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceRayTracingMaintenance1FeaturesKHR = Just f
@@ -1101,8 +1294,9 @@
     | Just Refl <- eqT @e @PhysicalDeviceMeshShaderFeaturesNV = Just f
     | Just Refl <- eqT @e @PhysicalDeviceInvocationMaskFeaturesHUAWEI = Just f
     | Just Refl <- eqT @e @PhysicalDeviceShadingRateImageFeaturesNV = Just f
-    | Just Refl <- eqT @e @PhysicalDeviceMemoryDecompressionFeaturesNV = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceMemoryDecompressionFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceCopyMemoryIndirectFeaturesNV = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceCopyMemoryIndirectFeaturesKHR = Just f
     | Just Refl <- eqT @e @PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV = Just f
     | Just Refl <- eqT @e @PhysicalDeviceShaderImageFootprintFeaturesNV = Just f
     | Just Refl <- eqT @e @PhysicalDeviceComputeShaderDerivativesFeaturesKHR = Just f
@@ -1111,7 +1305,7 @@
     | Just Refl <- eqT @e @PhysicalDeviceRepresentativeFragmentTestFeaturesNV = Just f
     | Just Refl <- eqT @e @PhysicalDeviceTransformFeedbackFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceASTCDecodeFeaturesEXT = Just f
-    | Just Refl <- eqT @e @PhysicalDeviceVertexAttributeDivisorFeaturesKHR = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceVertexAttributeDivisorFeatures = Just f
     | Just Refl <- eqT @e @PhysicalDeviceShaderAtomicFloat2FeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceShaderAtomicFloatFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceShaderAtomicInt64Features = Just f
@@ -1121,13 +1315,18 @@
     | 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 @PhysicalDeviceGlobalPriorityQueryFeaturesKHR = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceGlobalPriorityQueryFeatures = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceElapsedTimerQueryFeaturesQCOM = 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 @PhysicalDeviceMaintenance10FeaturesKHR = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceMaintenance11FeaturesKHR = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceMaintenance9FeaturesKHR = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceMaintenance8FeaturesKHR = Just f
     | Just Refl <- eqT @e @PhysicalDeviceMaintenance7FeaturesKHR = Just f
-    | Just Refl <- eqT @e @PhysicalDeviceMaintenance6FeaturesKHR = Just f
-    | Just Refl <- eqT @e @PhysicalDeviceMaintenance5FeaturesKHR = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceMaintenance6Features = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceMaintenance5Features = Just f
     | Just Refl <- eqT @e @PhysicalDeviceMaintenance4Features = Just f
     | Just Refl <- eqT @e @PhysicalDeviceInlineUniformBlockFeatures = Just f
     | Just Refl <- eqT @e @PhysicalDeviceMultiDrawFeaturesEXT = Just f
@@ -1136,12 +1335,16 @@
     | Just Refl <- eqT @e @PhysicalDeviceSamplerYcbcrConversionFeatures = Just f
     | Just Refl <- eqT @e @PhysicalDeviceShaderSubgroupExtendedTypesFeatures = Just f
     | Just Refl <- eqT @e @PhysicalDevice16BitStorageFeatures = Just f
+    | Just Refl <- eqT @e @PhysicalDevicePresentTimingFeaturesEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDevicePresentWait2FeaturesKHR = Just f
     | Just Refl <- eqT @e @PhysicalDevicePresentWaitFeaturesKHR = Just f
+    | Just Refl <- eqT @e @PhysicalDevicePresentId2FeaturesKHR = Just f
     | 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 @PhysicalDevicePrivateDataFeatures = Just f
     | Just Refl <- eqT @e @PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV = Just f
+    | Just Refl <- eqT @e @PhysicalDevicePushConstantBankFeaturesNV = Just f
     | Just Refl <- eqT @e @PhysicalDeviceDeviceGeneratedCommandsFeaturesNV = Just f
     | otherwise = Nothing
 
@@ -1196,18 +1399,23 @@
 --     either @NULL@ or a pointer to a valid instance of
 --     'Vulkan.Extensions.VK_KHR_acceleration_structure.PhysicalDeviceAccelerationStructurePropertiesKHR',
 --     'Vulkan.Extensions.VK_EXT_blend_operation_advanced.PhysicalDeviceBlendOperationAdvancedPropertiesEXT',
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPhysicalDeviceClusterAccelerationStructurePropertiesNV VkPhysicalDeviceClusterAccelerationStructurePropertiesNV>,
 --     'Vulkan.Extensions.VK_HUAWEI_cluster_culling_shader.PhysicalDeviceClusterCullingShaderPropertiesHUAWEI',
 --     'Vulkan.Extensions.VK_KHR_compute_shader_derivatives.PhysicalDeviceComputeShaderDerivativesPropertiesKHR',
 --     'Vulkan.Extensions.VK_EXT_conservative_rasterization.PhysicalDeviceConservativeRasterizationPropertiesEXT',
 --     'Vulkan.Extensions.VK_NV_cooperative_matrix2.PhysicalDeviceCooperativeMatrix2PropertiesNV',
 --     'Vulkan.Extensions.VK_KHR_cooperative_matrix.PhysicalDeviceCooperativeMatrixPropertiesKHR',
 --     'Vulkan.Extensions.VK_NV_cooperative_matrix.PhysicalDeviceCooperativeMatrixPropertiesNV',
---     'Vulkan.Extensions.VK_NV_copy_memory_indirect.PhysicalDeviceCopyMemoryIndirectPropertiesNV',
+--     'Vulkan.Extensions.VK_NV_cooperative_vector.PhysicalDeviceCooperativeVectorPropertiesNV',
+--     'Vulkan.Extensions.VK_KHR_copy_memory_indirect.PhysicalDeviceCopyMemoryIndirectPropertiesKHR',
 --     'Vulkan.Extensions.VK_NV_cuda_kernel_launch.PhysicalDeviceCudaKernelLaunchPropertiesNV',
 --     'Vulkan.Extensions.VK_EXT_custom_border_color.PhysicalDeviceCustomBorderColorPropertiesEXT',
 --     'Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve.PhysicalDeviceDepthStencilResolveProperties',
 --     'Vulkan.Extensions.VK_EXT_descriptor_buffer.PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT',
 --     'Vulkan.Extensions.VK_EXT_descriptor_buffer.PhysicalDeviceDescriptorBufferPropertiesEXT',
+--     'Vulkan.Extensions.VK_ARM_tensors.PhysicalDeviceDescriptorBufferTensorPropertiesARM',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.PhysicalDeviceDescriptorHeapPropertiesEXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.PhysicalDeviceDescriptorHeapTensorPropertiesARM',
 --     'Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.PhysicalDeviceDescriptorIndexingProperties',
 --     'Vulkan.Extensions.VK_EXT_device_generated_commands.PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT',
 --     'Vulkan.Extensions.VK_NV_device_generated_commands.PhysicalDeviceDeviceGeneratedCommandsPropertiesNV',
@@ -1217,17 +1425,22 @@
 --     'Vulkan.Extensions.VK_EXT_physical_device_drm.PhysicalDeviceDrmPropertiesEXT',
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.PhysicalDeviceExtendedDynamicState3PropertiesEXT',
 --     'Vulkan.Extensions.VK_NV_extended_sparse_address_space.PhysicalDeviceExtendedSparseAddressSpacePropertiesNV',
+--     'Vulkan.Extensions.VK_NV_external_compute_queue.PhysicalDeviceExternalComputeQueuePropertiesNV',
 --     'Vulkan.Extensions.VK_ANDROID_external_format_resolve.PhysicalDeviceExternalFormatResolvePropertiesANDROID',
 --     'Vulkan.Extensions.VK_EXT_external_memory_host.PhysicalDeviceExternalMemoryHostPropertiesEXT',
+--     'Vulkan.Extensions.VK_KHR_device_fault.PhysicalDeviceFaultPropertiesKHR',
 --     'Vulkan.Core12.Promoted_From_VK_KHR_shader_float_controls.PhysicalDeviceFloatControlsProperties',
 --     'Vulkan.Extensions.VK_EXT_fragment_density_map2.PhysicalDeviceFragmentDensityMap2PropertiesEXT',
---     'Vulkan.Extensions.VK_QCOM_fragment_density_map_offset.PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM',
+--     'Vulkan.Extensions.VK_VALVE_fragment_density_map_layered.PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE',
+--     'Vulkan.Extensions.VK_EXT_fragment_density_map_offset.PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT',
 --     'Vulkan.Extensions.VK_EXT_fragment_density_map.PhysicalDeviceFragmentDensityMapPropertiesEXT',
 --     'Vulkan.Extensions.VK_KHR_fragment_shader_barycentric.PhysicalDeviceFragmentShaderBarycentricPropertiesKHR',
 --     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PhysicalDeviceFragmentShadingRateEnumsPropertiesNV',
 --     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PhysicalDeviceFragmentShadingRatePropertiesKHR',
+--     'Vulkan.Extensions.VK_AMD_gpa_interface.PhysicalDeviceGpaProperties2AMD',
+--     'Vulkan.Extensions.VK_AMD_gpa_interface.PhysicalDeviceGpaPropertiesAMD',
 --     'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT',
---     'Vulkan.Extensions.VK_EXT_host_image_copy.PhysicalDeviceHostImageCopyPropertiesEXT',
+--     'Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy.PhysicalDeviceHostImageCopyProperties',
 --     'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceIDProperties',
 --     'Vulkan.Extensions.VK_MESA_image_alignment_control.PhysicalDeviceImageAlignmentControlPropertiesMESA',
 --     'Vulkan.Extensions.VK_QCOM_image_processing2.PhysicalDeviceImageProcessing2PropertiesQCOM',
@@ -1236,14 +1449,16 @@
 --     'Vulkan.Extensions.VK_KHR_maintenance7.PhysicalDeviceLayeredApiPropertiesListKHR',
 --     'Vulkan.Extensions.VK_MSFT_layered_driver.PhysicalDeviceLayeredDriverPropertiesMSFT',
 --     'Vulkan.Extensions.VK_EXT_legacy_vertex_attributes.PhysicalDeviceLegacyVertexAttributesPropertiesEXT',
---     'Vulkan.Extensions.VK_KHR_line_rasterization.PhysicalDeviceLineRasterizationPropertiesKHR',
+--     'Vulkan.Core14.Promoted_From_VK_KHR_line_rasterization.PhysicalDeviceLineRasterizationProperties',
+--     'Vulkan.Extensions.VK_KHR_maintenance10.PhysicalDeviceMaintenance10PropertiesKHR',
 --     'Vulkan.Core11.Promoted_From_VK_KHR_maintenance3.PhysicalDeviceMaintenance3Properties',
 --     'Vulkan.Core13.Promoted_From_VK_KHR_maintenance4.PhysicalDeviceMaintenance4Properties',
---     'Vulkan.Extensions.VK_KHR_maintenance5.PhysicalDeviceMaintenance5PropertiesKHR',
---     'Vulkan.Extensions.VK_KHR_maintenance6.PhysicalDeviceMaintenance6PropertiesKHR',
+--     'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.PhysicalDeviceMaintenance5Properties',
+--     'Vulkan.Core14.Promoted_From_VK_KHR_maintenance6.PhysicalDeviceMaintenance6Properties',
 --     'Vulkan.Extensions.VK_KHR_maintenance7.PhysicalDeviceMaintenance7PropertiesKHR',
+--     'Vulkan.Extensions.VK_KHR_maintenance9.PhysicalDeviceMaintenance9PropertiesKHR',
 --     'Vulkan.Extensions.VK_EXT_map_memory_placed.PhysicalDeviceMapMemoryPlacedPropertiesEXT',
---     'Vulkan.Extensions.VK_NV_memory_decompression.PhysicalDeviceMemoryDecompressionPropertiesNV',
+--     'Vulkan.Extensions.VK_EXT_memory_decompression.PhysicalDeviceMemoryDecompressionPropertiesEXT',
 --     'Vulkan.Extensions.VK_EXT_mesh_shader.PhysicalDeviceMeshShaderPropertiesEXT',
 --     'Vulkan.Extensions.VK_NV_mesh_shader.PhysicalDeviceMeshShaderPropertiesNV',
 --     'Vulkan.Extensions.VK_EXT_multi_draw.PhysicalDeviceMultiDrawPropertiesEXT',
@@ -1251,58 +1466,74 @@
 --     'Vulkan.Core11.Promoted_From_VK_KHR_multiview.PhysicalDeviceMultiviewProperties',
 --     'Vulkan.Extensions.VK_EXT_nested_command_buffer.PhysicalDeviceNestedCommandBufferPropertiesEXT',
 --     'Vulkan.Extensions.VK_EXT_opacity_micromap.PhysicalDeviceOpacityMicromapPropertiesEXT',
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.PhysicalDeviceOpacityMicromapPropertiesKHR',
 --     'Vulkan.Extensions.VK_NV_optical_flow.PhysicalDeviceOpticalFlowPropertiesNV',
 --     'Vulkan.Extensions.VK_EXT_pci_bus_info.PhysicalDevicePCIBusInfoPropertiesEXT',
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPhysicalDevicePartitionedAccelerationStructurePropertiesNV VkPhysicalDevicePartitionedAccelerationStructurePropertiesNV>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPhysicalDevicePerformanceCountersByRegionPropertiesARM VkPhysicalDevicePerformanceCountersByRegionPropertiesARM>,
 --     'Vulkan.Extensions.VK_KHR_performance_query.PhysicalDevicePerformanceQueryPropertiesKHR',
 --     'Vulkan.Extensions.VK_KHR_pipeline_binary.PhysicalDevicePipelineBinaryPropertiesKHR',
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PhysicalDevicePipelineRobustnessPropertiesEXT',
+--     'Vulkan.Core14.Promoted_From_VK_EXT_pipeline_robustness.PhysicalDevicePipelineRobustnessProperties',
 --     'Vulkan.Core11.Promoted_From_VK_KHR_maintenance2.PhysicalDevicePointClippingProperties',
 --     'Vulkan.Extensions.VK_KHR_portability_subset.PhysicalDevicePortabilitySubsetPropertiesKHR',
 --     'Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory.PhysicalDeviceProtectedMemoryProperties',
 --     'Vulkan.Extensions.VK_EXT_provoking_vertex.PhysicalDeviceProvokingVertexPropertiesEXT',
---     'Vulkan.Extensions.VK_KHR_push_descriptor.PhysicalDevicePushDescriptorPropertiesKHR',
+--     'Vulkan.Extensions.VK_NV_push_constant_bank.PhysicalDevicePushConstantBankPropertiesNV',
+--     'Vulkan.Core14.Promoted_From_VK_KHR_push_descriptor.PhysicalDevicePushDescriptorProperties',
+--     'Vulkan.Extensions.VK_QCOM_queue_perf_hint.PhysicalDeviceQueuePerfHintPropertiesQCOM',
+--     'Vulkan.Extensions.VK_EXT_ray_tracing_invocation_reorder.PhysicalDeviceRayTracingInvocationReorderPropertiesEXT',
 --     'Vulkan.Extensions.VK_NV_ray_tracing_invocation_reorder.PhysicalDeviceRayTracingInvocationReorderPropertiesNV',
 --     'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.PhysicalDeviceRayTracingPipelinePropertiesKHR',
 --     'Vulkan.Extensions.VK_NV_ray_tracing.PhysicalDeviceRayTracingPropertiesNV',
 --     'Vulkan.Extensions.VK_ARM_render_pass_striped.PhysicalDeviceRenderPassStripedPropertiesARM',
---     'Vulkan.Extensions.VK_EXT_robustness2.PhysicalDeviceRobustness2PropertiesEXT',
+--     'Vulkan.Extensions.VK_KHR_robustness2.PhysicalDeviceRobustness2PropertiesKHR',
 --     'Vulkan.Extensions.VK_EXT_sample_locations.PhysicalDeviceSampleLocationsPropertiesEXT',
 --     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.PhysicalDeviceSamplerFilterMinmaxProperties',
+--     'Vulkan.Extensions.VK_ARM_scheduling_controls.PhysicalDeviceSchedulingControlsDispatchParametersPropertiesARM',
 --     'Vulkan.Extensions.VK_ARM_scheduling_controls.PhysicalDeviceSchedulingControlsPropertiesARM',
+--     'Vulkan.Extensions.VK_KHR_shader_abort.PhysicalDeviceShaderAbortPropertiesKHR',
 --     'Vulkan.Extensions.VK_ARM_shader_core_builtins.PhysicalDeviceShaderCoreBuiltinsPropertiesARM',
 --     'Vulkan.Extensions.VK_AMD_shader_core_properties2.PhysicalDeviceShaderCoreProperties2AMD',
 --     'Vulkan.Extensions.VK_AMD_shader_core_properties.PhysicalDeviceShaderCorePropertiesAMD',
 --     'Vulkan.Extensions.VK_ARM_shader_core_properties.PhysicalDeviceShaderCorePropertiesARM',
 --     'Vulkan.Extensions.VK_AMDX_shader_enqueue.PhysicalDeviceShaderEnqueuePropertiesAMDX',
+--     'Vulkan.Extensions.VK_ARM_shader_instrumentation.PhysicalDeviceShaderInstrumentationPropertiesARM',
 --     'Vulkan.Core13.Promoted_From_VK_KHR_shader_integer_dot_product.PhysicalDeviceShaderIntegerDotProductProperties',
+--     'Vulkan.Extensions.VK_EXT_shader_long_vector.PhysicalDeviceShaderLongVectorPropertiesEXT',
 --     'Vulkan.Extensions.VK_EXT_shader_module_identifier.PhysicalDeviceShaderModuleIdentifierPropertiesEXT',
+--     'Vulkan.Extensions.VK_QCOM_shader_multiple_wait_queues.PhysicalDeviceShaderMultipleWaitQueuesPropertiesQCOM',
 --     'Vulkan.Extensions.VK_EXT_shader_object.PhysicalDeviceShaderObjectPropertiesEXT',
 --     'Vulkan.Extensions.VK_NV_shader_sm_builtins.PhysicalDeviceShaderSMBuiltinsPropertiesNV',
+--     'Vulkan.Extensions.VK_EXT_shader_split_barrier.PhysicalDeviceShaderSplitBarrierPropertiesEXT',
 --     'Vulkan.Extensions.VK_EXT_shader_tile_image.PhysicalDeviceShaderTileImagePropertiesEXT',
 --     'Vulkan.Extensions.VK_NV_shading_rate_image.PhysicalDeviceShadingRateImagePropertiesNV',
 --     'Vulkan.Core11.Originally_Based_On_VK_KHR_subgroup.PhysicalDeviceSubgroupProperties',
 --     'Vulkan.Core13.Promoted_From_VK_EXT_subgroup_size_control.PhysicalDeviceSubgroupSizeControlProperties',
 --     'Vulkan.Extensions.VK_HUAWEI_subpass_shading.PhysicalDeviceSubpassShadingPropertiesHUAWEI',
+--     'Vulkan.Extensions.VK_ARM_tensors.PhysicalDeviceTensorPropertiesARM',
 --     'Vulkan.Core13.Promoted_From_VK_EXT_texel_buffer_alignment.PhysicalDeviceTexelBufferAlignmentProperties',
+--     'Vulkan.Extensions.VK_QCOM_tile_memory_heap.PhysicalDeviceTileMemoryHeapPropertiesQCOM',
+--     'Vulkan.Extensions.VK_QCOM_tile_shading.PhysicalDeviceTileShadingPropertiesQCOM',
 --     'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.PhysicalDeviceTimelineSemaphoreProperties',
 --     'Vulkan.Extensions.VK_EXT_transform_feedback.PhysicalDeviceTransformFeedbackPropertiesEXT',
+--     'Vulkan.Core14.Promoted_From_VK_KHR_vertex_attribute_divisor.PhysicalDeviceVertexAttributeDivisorProperties',
 --     'Vulkan.Extensions.VK_EXT_vertex_attribute_divisor.PhysicalDeviceVertexAttributeDivisorPropertiesEXT',
---     'Vulkan.Extensions.VK_KHR_vertex_attribute_divisor.PhysicalDeviceVertexAttributeDivisorPropertiesKHR',
 --     'Vulkan.Core12.PhysicalDeviceVulkan11Properties',
---     'Vulkan.Core12.PhysicalDeviceVulkan12Properties', or
---     'Vulkan.Core13.PhysicalDeviceVulkan13Properties'
+--     'Vulkan.Core12.PhysicalDeviceVulkan12Properties',
+--     'Vulkan.Core13.PhysicalDeviceVulkan13Properties', or
+--     'Vulkan.Core14.PhysicalDeviceVulkan14Properties'
 --
 -- -   #VUID-VkPhysicalDeviceProperties2-sType-unique# The @sType@ value of
---     each struct in the @pNext@ chain /must/ be unique
+--     each structure in the @pNext@ chain /must/ be unique
 --
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Extensions.VK_KHR_maintenance7.PhysicalDeviceLayeredApiVulkanPropertiesKHR',
 -- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceProperties',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'getPhysicalDeviceProperties2',
--- 'Vulkan.Extensions.VK_KHR_get_physical_device_properties2.getPhysicalDeviceProperties2KHR'
+-- 'getPhysicalDeviceProperties2', 'getPhysicalDeviceProperties2'
 data PhysicalDeviceProperties2 (es :: [Type]) = PhysicalDeviceProperties2
   { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
@@ -1325,15 +1556,30 @@
   getNext PhysicalDeviceProperties2{..} = next
   extends :: forall e b proxy. Typeable e => proxy e -> (Extends PhysicalDeviceProperties2 e => b) -> Maybe b
   extends _ f
+    | Just Refl <- eqT @e @PhysicalDeviceShaderAbortPropertiesKHR = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceShaderInstrumentationPropertiesARM = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceDescriptorHeapTensorPropertiesARM = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceDescriptorHeapPropertiesEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceShaderSplitBarrierPropertiesEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceShaderLongVectorPropertiesEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceQueuePerfHintPropertiesQCOM = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceDescriptorBufferTensorPropertiesARM = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceTensorPropertiesARM = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceExternalComputeQueuePropertiesNV = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceTileShadingPropertiesQCOM = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceCooperativeVectorPropertiesNV = Just f
     | Just Refl <- eqT @e @PhysicalDeviceCooperativeMatrix2PropertiesNV = Just f
     | Just Refl <- eqT @e @PhysicalDeviceImageAlignmentControlPropertiesMESA = Just f
     | Just Refl <- eqT @e @PhysicalDeviceMapMemoryPlacedPropertiesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceRenderPassStripedPropertiesARM = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceSchedulingControlsDispatchParametersPropertiesARM = Just f
     | Just Refl <- eqT @e @PhysicalDeviceSchedulingControlsPropertiesARM = Just f
     | Just Refl <- eqT @e @PhysicalDeviceCudaKernelLaunchPropertiesNV = Just f
     | Just Refl <- eqT @e @PhysicalDeviceExternalFormatResolvePropertiesANDROID = Just f
     | Just Refl <- eqT @e @PhysicalDeviceLayeredDriverPropertiesMSFT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceImageProcessing2PropertiesQCOM = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceTileMemoryHeapPropertiesQCOM = Just f
     | Just Refl <- eqT @e @PhysicalDeviceShaderEnqueuePropertiesAMDX = Just f
     | Just Refl <- eqT @e @PhysicalDeviceCooperativeMatrixPropertiesKHR = Just f
     | Just Refl <- eqT @e @PhysicalDeviceShaderTileImagePropertiesEXT = Just f
@@ -1341,12 +1587,16 @@
     | Just Refl <- eqT @e @PhysicalDeviceShaderCorePropertiesARM = Just f
     | Just Refl <- eqT @e @PhysicalDeviceExtendedSparseAddressSpacePropertiesNV = Just f
     | Just Refl <- eqT @e @PhysicalDeviceRayTracingInvocationReorderPropertiesNV = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceRayTracingInvocationReorderPropertiesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceShaderCoreBuiltinsPropertiesARM = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceFaultPropertiesKHR = Just f
     | Just Refl <- eqT @e @PhysicalDeviceOpticalFlowPropertiesNV = Just f
     | Just Refl <- eqT @e @PhysicalDeviceImageProcessingPropertiesQCOM = Just f
-    | Just Refl <- eqT @e @PhysicalDevicePipelineRobustnessPropertiesEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceShaderMultipleWaitQueuesPropertiesQCOM = Just f
+    | Just Refl <- eqT @e @PhysicalDevicePipelineRobustnessProperties = Just f
     | Just Refl <- eqT @e @PhysicalDeviceDisplacementMicromapPropertiesNV = Just f
     | Just Refl <- eqT @e @PhysicalDeviceOpacityMicromapPropertiesEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceOpacityMicromapPropertiesKHR = Just f
     | Just Refl <- eqT @e @PhysicalDeviceShaderModuleIdentifierPropertiesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceNestedCommandBufferPropertiesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT = Just f
@@ -1357,19 +1607,22 @@
     | Just Refl <- eqT @e @PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceDescriptorBufferPropertiesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceProvokingVertexPropertiesEXT = Just f
-    | Just Refl <- eqT @e @PhysicalDeviceHostImageCopyPropertiesEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceHostImageCopyProperties = Just f
     | Just Refl <- eqT @e @PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceLegacyVertexAttributesPropertiesEXT = 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 @PhysicalDeviceRobustness2PropertiesKHR = Just f
     | Just Refl <- eqT @e @PhysicalDeviceExtendedDynamicState3PropertiesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceCustomBorderColorPropertiesEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceGpaProperties2AMD = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceGpaPropertiesAMD = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceVulkan14Properties = 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 @PhysicalDeviceLineRasterizationPropertiesKHR = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceLineRasterizationProperties = Just f
     | Just Refl <- eqT @e @PhysicalDeviceClusterCullingShaderPropertiesHUAWEI = Just f
     | Just Refl <- eqT @e @PhysicalDeviceSubpassShadingPropertiesHUAWEI = Just f
     | Just Refl <- eqT @e @PhysicalDeviceSubgroupSizeControlProperties = Just f
@@ -1377,7 +1630,7 @@
     | Just Refl <- eqT @e @PhysicalDeviceShaderSMBuiltinsPropertiesNV = Just f
     | Just Refl <- eqT @e @PhysicalDevicePerformanceQueryPropertiesKHR = Just f
     | Just Refl <- eqT @e @PhysicalDeviceCooperativeMatrixPropertiesNV = Just f
-    | Just Refl <- eqT @e @PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceFragmentDensityMap2PropertiesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceFragmentDensityMapPropertiesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceRayTracingPropertiesNV = Just f
@@ -1386,13 +1639,13 @@
     | Just Refl <- eqT @e @PhysicalDeviceMeshShaderPropertiesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceMeshShaderPropertiesNV = Just f
     | Just Refl <- eqT @e @PhysicalDeviceShadingRateImagePropertiesNV = Just f
-    | Just Refl <- eqT @e @PhysicalDeviceMemoryDecompressionPropertiesNV = Just f
-    | Just Refl <- eqT @e @PhysicalDeviceCopyMemoryIndirectPropertiesNV = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceMemoryDecompressionPropertiesEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceCopyMemoryIndirectPropertiesKHR = Just f
     | Just Refl <- eqT @e @PhysicalDeviceComputeShaderDerivativesPropertiesKHR = Just f
     | Just Refl <- eqT @e @PhysicalDeviceTransformFeedbackPropertiesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceDepthStencilResolveProperties = Just f
     | Just Refl <- eqT @e @PhysicalDevicePCIBusInfoPropertiesEXT = Just f
-    | Just Refl <- eqT @e @PhysicalDeviceVertexAttributeDivisorPropertiesKHR = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceVertexAttributeDivisorProperties = Just f
     | Just Refl <- eqT @e @PhysicalDeviceVertexAttributeDivisorPropertiesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceTimelineSemaphoreProperties = Just f
     | Just Refl <- eqT @e @PhysicalDeviceDescriptorIndexingProperties = Just f
@@ -1401,10 +1654,12 @@
     | 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 @PhysicalDeviceMaintenance10PropertiesKHR = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceMaintenance9PropertiesKHR = Just f
     | Just Refl <- eqT @e @PhysicalDeviceLayeredApiPropertiesListKHR = Just f
     | Just Refl <- eqT @e @PhysicalDeviceMaintenance7PropertiesKHR = Just f
-    | Just Refl <- eqT @e @PhysicalDeviceMaintenance6PropertiesKHR = Just f
-    | Just Refl <- eqT @e @PhysicalDeviceMaintenance5PropertiesKHR = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceMaintenance6Properties = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceMaintenance5Properties = Just f
     | Just Refl <- eqT @e @PhysicalDeviceMaintenance4Properties = Just f
     | Just Refl <- eqT @e @PhysicalDeviceMaintenance3Properties = Just f
     | Just Refl <- eqT @e @PhysicalDeviceInlineUniformBlockProperties = Just f
@@ -1419,9 +1674,10 @@
     | Just Refl <- eqT @e @PhysicalDeviceMultiviewProperties = Just f
     | Just Refl <- eqT @e @PhysicalDeviceIDProperties = Just f
     | Just Refl <- eqT @e @PhysicalDeviceDriverProperties = Just f
-    | Just Refl <- eqT @e @PhysicalDevicePushDescriptorPropertiesKHR = Just f
+    | Just Refl <- eqT @e @PhysicalDevicePushDescriptorProperties = Just f
     | Just Refl <- eqT @e @PhysicalDeviceMultiDrawPropertiesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceDeviceGeneratedCommandsPropertiesNV = Just f
+    | Just Refl <- eqT @e @PhysicalDevicePushConstantBankPropertiesNV = Just f
     | otherwise = Nothing
 
 instance ( Extendss PhysicalDeviceProperties2 es
@@ -1470,19 +1726,20 @@
 --     'Vulkan.Extensions.VK_EXT_image_drm_format_modifier.DrmFormatModifierPropertiesList2EXT',
 --     'Vulkan.Extensions.VK_EXT_image_drm_format_modifier.DrmFormatModifierPropertiesListEXT',
 --     'Vulkan.Core13.Promoted_From_VK_KHR_format_feature_flags2.FormatProperties3',
---     or
---     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.SubpassResolvePerformanceQueryEXT'
+--     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.SubpassResolvePerformanceQueryEXT',
+--     or 'Vulkan.Extensions.VK_ARM_tensors.TensorFormatPropertiesARM'
 --
 -- -   #VUID-VkFormatProperties2-sType-unique# The @sType@ value of each
---     struct in the @pNext@ chain /must/ be unique
+--     structure in the @pNext@ chain /must/ be unique
 --
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core10.DeviceInitialization.FormatProperties',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType',
 -- 'getPhysicalDeviceFormatProperties2',
--- 'Vulkan.Extensions.VK_KHR_get_physical_device_properties2.getPhysicalDeviceFormatProperties2KHR'
+-- 'getPhysicalDeviceFormatProperties2'
 data FormatProperties2 (es :: [Type]) = FormatProperties2
   { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
@@ -1503,6 +1760,7 @@
   getNext FormatProperties2{..} = next
   extends :: forall e b proxy. Typeable e => proxy e -> (Extends FormatProperties2 e => b) -> Maybe b
   extends _ f
+    | Just Refl <- eqT @e @TensorFormatPropertiesARM = Just f
     | Just Refl <- eqT @e @DrmFormatModifierPropertiesList2EXT = Just f
     | Just Refl <- eqT @e @FormatProperties3 = Just f
     | Just Refl <- eqT @e @SubpassResolvePerformanceQueryEXT = Just f
@@ -1570,22 +1828,25 @@
 --     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.AndroidHardwareBufferUsageANDROID',
 --     'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.ExternalImageFormatProperties',
 --     'Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT',
---     'Vulkan.Extensions.VK_EXT_host_image_copy.HostImageCopyDevicePerformanceQueryEXT',
+--     'Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy.HostImageCopyDevicePerformanceQuery',
 --     'Vulkan.Extensions.VK_EXT_image_compression_control.ImageCompressionPropertiesEXT',
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkNativeBufferUsageOHOS VkNativeBufferUsageOHOS>,
 --     'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionImageFormatProperties',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.SubsampledImageFormatPropertiesEXT',
 --     or
 --     'Vulkan.Extensions.VK_AMD_texture_gather_bias_lod.TextureLODGatherFormatPropertiesAMD'
 --
 -- -   #VUID-VkImageFormatProperties2-sType-unique# The @sType@ value of
---     each struct in the @pNext@ chain /must/ be unique
+--     each structure in the @pNext@ chain /must/ be unique
 --
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core10.DeviceInitialization.ImageFormatProperties',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType',
 -- 'getPhysicalDeviceImageFormatProperties2',
--- 'Vulkan.Extensions.VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2KHR'
+-- 'getPhysicalDeviceImageFormatProperties2'
 data ImageFormatProperties2 (es :: [Type]) = ImageFormatProperties2
   { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     -- The @pNext@ chain of 'ImageFormatProperties2' is used to allow the
@@ -1609,8 +1870,9 @@
   getNext ImageFormatProperties2{..} = next
   extends :: forall e b proxy. Typeable e => proxy e -> (Extends ImageFormatProperties2 e => b) -> Maybe b
   extends _ f
+    | Just Refl <- eqT @e @SubsampledImageFormatPropertiesEXT = Just f
     | Just Refl <- eqT @e @ImageCompressionPropertiesEXT = Just f
-    | Just Refl <- eqT @e @HostImageCopyDevicePerformanceQueryEXT = Just f
+    | Just Refl <- eqT @e @HostImageCopyDevicePerformanceQuery = Just f
     | Just Refl <- eqT @e @FilterCubicImageViewImageFormatPropertiesEXT = Just f
     | Just Refl <- eqT @e @AndroidHardwareBufferUsageANDROID = Just f
     | Just Refl <- eqT @e @TextureLODGatherFormatPropertiesAMD = Just f
@@ -1686,6 +1948,7 @@
 -- -   #VUID-VkPhysicalDeviceImageFormatInfo2-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_ARM_data_graph_optical_flow.DataGraphOpticalFlowImageFormatInfoARM',
 --     'Vulkan.Extensions.VK_EXT_image_compression_control.ImageCompressionControlEXT',
 --     'Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo',
 --     'Vulkan.Core12.Promoted_From_VK_EXT_separate_stencil_usage.ImageStencilUsageCreateInfo',
@@ -1697,7 +1960,7 @@
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoProfileListInfoKHR VkVideoProfileListInfoKHR>
 --
 -- -   #VUID-VkPhysicalDeviceImageFormatInfo2-sType-unique# The @sType@
---     value of each struct in the @pNext@ chain /must/ be unique
+--     value of each structure in the @pNext@ chain /must/ be unique
 --
 -- -   #VUID-VkPhysicalDeviceImageFormatInfo2-format-parameter# @format@
 --     /must/ be a valid 'Vulkan.Core10.Enums.Format.Format' value
@@ -1722,6 +1985,7 @@
 --
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core10.Enums.Format.Format',
 -- 'Vulkan.Core10.Enums.ImageCreateFlagBits.ImageCreateFlags',
@@ -1730,7 +1994,7 @@
 -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlags',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType',
 -- 'getPhysicalDeviceImageFormatProperties2',
--- 'Vulkan.Extensions.VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2KHR'
+-- 'getPhysicalDeviceImageFormatProperties2'
 data PhysicalDeviceImageFormatInfo2 (es :: [Type]) = PhysicalDeviceImageFormatInfo2
   { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     -- The @pNext@ chain of 'PhysicalDeviceImageFormatInfo2' is used to provide
@@ -1772,6 +2036,7 @@
   getNext PhysicalDeviceImageFormatInfo2{..} = next
   extends :: forall e b proxy. Typeable e => proxy e -> (Extends PhysicalDeviceImageFormatInfo2 e => b) -> Maybe b
   extends _ f
+    | Just Refl <- eqT @e @DataGraphOpticalFlowImageFormatInfoARM = Just f
     | Just Refl <- eqT @e @OpticalFlowImageFormatInfoNV = Just f
     | Just Refl <- eqT @e @ImageCompressionControlEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceImageViewImageFormatInfoEXT = Just f
@@ -1842,21 +2107,24 @@
 --     either @NULL@ or a pointer to a valid instance of
 --     'Vulkan.Extensions.VK_NV_device_diagnostic_checkpoints.QueueFamilyCheckpointProperties2NV',
 --     'Vulkan.Extensions.VK_NV_device_diagnostic_checkpoints.QueueFamilyCheckpointPropertiesNV',
---     'Vulkan.Extensions.VK_KHR_global_priority.QueueFamilyGlobalPriorityPropertiesKHR',
+--     'Vulkan.Core14.Promoted_From_VK_KHR_global_priority.QueueFamilyGlobalPriorityProperties',
+--     'Vulkan.Extensions.VK_KHR_maintenance11.QueueFamilyOptimalImageTransferGranularityPropertiesKHR',
+--     'Vulkan.Extensions.VK_KHR_maintenance9.QueueFamilyOwnershipTransferPropertiesKHR',
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFamilyQueryResultStatusPropertiesKHR VkQueueFamilyQueryResultStatusPropertiesKHR>,
 --     or
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFamilyVideoPropertiesKHR VkQueueFamilyVideoPropertiesKHR>
 --
 -- -   #VUID-VkQueueFamilyProperties2-sType-unique# The @sType@ value of
---     each struct in the @pNext@ chain /must/ be unique
+--     each structure in the @pNext@ chain /must/ be unique
 --
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core10.DeviceInitialization.QueueFamilyProperties',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType',
 -- 'getPhysicalDeviceQueueFamilyProperties2',
--- 'Vulkan.Extensions.VK_KHR_get_physical_device_properties2.getPhysicalDeviceQueueFamilyProperties2KHR'
+-- 'getPhysicalDeviceQueueFamilyProperties2'
 data QueueFamilyProperties2 (es :: [Type]) = QueueFamilyProperties2
   { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
@@ -1880,7 +2148,9 @@
   extends _ f
     | Just Refl <- eqT @e @QueueFamilyCheckpointProperties2NV = Just f
     | Just Refl <- eqT @e @QueueFamilyCheckpointPropertiesNV = Just f
-    | Just Refl <- eqT @e @QueueFamilyGlobalPriorityPropertiesKHR = Just f
+    | Just Refl <- eqT @e @QueueFamilyGlobalPriorityProperties = Just f
+    | Just Refl <- eqT @e @QueueFamilyOptimalImageTransferGranularityPropertiesKHR = Just f
+    | Just Refl <- eqT @e @QueueFamilyOwnershipTransferPropertiesKHR = Just f
     | otherwise = Nothing
 
 instance ( Extendss QueueFamilyProperties2 es
@@ -1930,15 +2200,16 @@
 --     'Vulkan.Extensions.VK_EXT_memory_budget.PhysicalDeviceMemoryBudgetPropertiesEXT'
 --
 -- -   #VUID-VkPhysicalDeviceMemoryProperties2-sType-unique# The @sType@
---     value of each struct in the @pNext@ chain /must/ be unique
+--     value of each structure in the @pNext@ chain /must/ be unique
 --
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceMemoryProperties',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType',
 -- 'getPhysicalDeviceMemoryProperties2',
--- 'Vulkan.Extensions.VK_KHR_get_physical_device_properties2.getPhysicalDeviceMemoryProperties2KHR'
+-- 'getPhysicalDeviceMemoryProperties2'
 data PhysicalDeviceMemoryProperties2 (es :: [Type]) = PhysicalDeviceMemoryProperties2
   { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
@@ -2003,11 +2274,12 @@
 --
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core10.SparseResourceMemoryManagement.SparseImageFormatProperties',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType',
 -- 'getPhysicalDeviceSparseImageFormatProperties2',
--- 'Vulkan.Extensions.VK_KHR_get_physical_device_properties2.getPhysicalDeviceSparseImageFormatProperties2KHR'
+-- 'getPhysicalDeviceSparseImageFormatProperties2'
 data SparseImageFormatProperties2 = SparseImageFormatProperties2
   { -- | @properties@ is a
     -- 'Vulkan.Core10.SparseResourceMemoryManagement.SparseImageFormatProperties'
@@ -2059,6 +2331,7 @@
 --
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core10.Enums.Format.Format',
 -- 'Vulkan.Core10.Enums.ImageTiling.ImageTiling',
@@ -2067,7 +2340,7 @@
 -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType',
 -- 'getPhysicalDeviceSparseImageFormatProperties2',
--- 'Vulkan.Extensions.VK_KHR_get_physical_device_properties2.getPhysicalDeviceSparseImageFormatProperties2KHR'
+-- 'getPhysicalDeviceSparseImageFormatProperties2'
 data PhysicalDeviceSparseImageFormatInfo2 = PhysicalDeviceSparseImageFormatInfo2
   { -- | @format@ is the image format.
     --
diff --git a/src/Vulkan/Core11/Promoted_From_VK_KHR_maintenance1.hs b/src/Vulkan/Core11/Promoted_From_VK_KHR_maintenance1.hs
--- a/src/Vulkan/Core11/Promoted_From_VK_KHR_maintenance1.hs
+++ b/src/Vulkan/Core11/Promoted_From_VK_KHR_maintenance1.hs
@@ -101,6 +101,7 @@
 --
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance1 VK_KHR_maintenance1>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core10.Handles.CommandPool',
 -- 'Vulkan.Core11.Enums.CommandPoolTrimFlags.CommandPoolTrimFlags',
diff --git a/src/Vulkan/Core11/Promoted_From_VK_KHR_maintenance2.hs b/src/Vulkan/Core11/Promoted_From_VK_KHR_maintenance2.hs
--- a/src/Vulkan/Core11/Promoted_From_VK_KHR_maintenance2.hs
+++ b/src/Vulkan/Core11/Promoted_From_VK_KHR_maintenance2.hs
@@ -9,7 +9,6 @@
                                                         , StructureType(..)
                                                         , ImageCreateFlagBits(..)
                                                         , ImageCreateFlags
-                                                        , PointClippingBehavior(..)
                                                         , TessellationDomainOrigin(..)
                                                         ) where
 
@@ -50,7 +49,6 @@
 import Vulkan.Core10.Enums.ImageCreateFlagBits (ImageCreateFlagBits(..))
 import Vulkan.Core10.Enums.ImageCreateFlagBits (ImageCreateFlags)
 import Vulkan.Core10.Enums.ImageLayout (ImageLayout(..))
-import Vulkan.Core11.Enums.PointClippingBehavior (PointClippingBehavior(..))
 import Vulkan.Core10.Enums.StructureType (StructureType(..))
 import Vulkan.Core11.Enums.TessellationDomainOrigin (TessellationDomainOrigin(..))
 -- | VkInputAttachmentAspectReference - Structure specifying a subpass\/input
@@ -69,6 +67,7 @@
 --
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance2 VK_KHR_maintenance2>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlags',
 -- 'RenderPassInputAttachmentAspectCreateInfo'
@@ -154,10 +153,15 @@
 -- Otherwise, an application /must/ not access aspect(s) of an input
 -- attachment other than those in its specified aspect mask.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.Pass.RenderPassCreateInfo'
+--
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance2 VK_KHR_maintenance2>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'InputAttachmentAspectReference',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
@@ -220,10 +224,15 @@
 -- it is filled in with each corresponding implementation-dependent
 -- property.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance2 VK_KHR_maintenance2>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core11.Enums.PointClippingBehavior.PointClippingBehavior',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
@@ -280,10 +289,15 @@
 -- time and its value is used instead for the purposes of determining the
 -- valid usage conditions of 'Vulkan.Core10.ImageView.ImageViewCreateInfo'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.ImageView.ImageViewCreateInfo'
+--
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance2 VK_KHR_maintenance2>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlags',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
@@ -344,15 +358,20 @@
 --
 -- If the 'PipelineTessellationDomainOriginStateCreateInfo' structure is
 -- included in the @pNext@ chain of
--- 'Vulkan.Core10.Pipeline.PipelineTessellationStateCreateInfo', it
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineTessellationStateCreateInfo', it
 -- controls the origin of the tessellation domain. If this structure is not
 -- present, it is as if @domainOrigin@ was
 -- 'Vulkan.Core11.Enums.TessellationDomainOrigin.TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.GraphicsPipeline.PipelineTessellationStateCreateInfo'
+--
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance2 VK_KHR_maintenance2>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core10.Enums.StructureType.StructureType',
 -- 'Vulkan.Core11.Enums.TessellationDomainOrigin.TessellationDomainOrigin'
diff --git a/src/Vulkan/Core11/Promoted_From_VK_KHR_maintenance3.hs b/src/Vulkan/Core11/Promoted_From_VK_KHR_maintenance3.hs
--- a/src/Vulkan/Core11/Promoted_From_VK_KHR_maintenance3.hs
+++ b/src/Vulkan/Core11/Promoted_From_VK_KHR_maintenance3.hs
@@ -105,6 +105,7 @@
 --
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance3 VK_KHR_maintenance3>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutCreateInfo',
 -- 'DescriptorSetLayoutSupport', 'Vulkan.Core10.Handles.Device'
@@ -158,10 +159,15 @@
 -- it is filled in with each corresponding implementation-dependent
 -- property.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance3 VK_KHR_maintenance3>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
@@ -175,7 +181,10 @@
     maxPerSetDescriptors :: Word32
   , -- | #extension-limits-maxMemoryAllocationSize# @maxMemoryAllocationSize@ is
     -- the maximum size of a memory allocation that /can/ be created, even if
-    -- there is more space available in the heap.
+    -- there is more space available in the heap. If
+    -- 'Vulkan.Core10.Memory.MemoryAllocateInfo'::@allocationSize@ is larger
+    -- the error 'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY' /may/
+    -- be returned.
     maxMemoryAllocationSize :: DeviceSize
   }
   deriving (Typeable, Eq)
@@ -239,15 +248,15 @@
 --     'Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.DescriptorSetVariableDescriptorCountLayoutSupport'
 --
 -- -   #VUID-VkDescriptorSetLayoutSupport-sType-unique# The @sType@ value
---     of each struct in the @pNext@ chain /must/ be unique
+--     of each structure in the @pNext@ chain /must/ be unique
 --
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance3 VK_KHR_maintenance3>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'getDescriptorSetLayoutSupport',
--- 'Vulkan.Extensions.VK_KHR_maintenance3.getDescriptorSetLayoutSupportKHR'
+-- 'getDescriptorSetLayoutSupport', 'getDescriptorSetLayoutSupport'
 data DescriptorSetLayoutSupport (es :: [Type]) = DescriptorSetLayoutSupport
   { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
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
@@ -61,7 +61,7 @@
 -- -   #extension-features-multiview-gs# @multiviewGeometryShader@
 --     specifies whether the implementation supports multiview rendering
 --     within a render pass, with
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#geometry geometry shaders>.
+--     <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -69,7 +69,7 @@
 -- -   #extension-features-multiview-tess# @multiviewTessellationShader@
 --     specifies whether the implementation supports multiview rendering
 --     within a render pass, with
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#tessellation tessellation shaders>.
+--     <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -80,9 +80,13 @@
 -- structure passed to
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
 -- it is filled in to indicate whether each corresponding feature is
--- supported. 'PhysicalDeviceMultiviewFeatures' /can/ also be used in the
--- @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to selectively
--- enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceMultiviewFeatures', it /must/ add an instance of the
+-- structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
 -- == Valid Usage
 --
@@ -100,8 +104,17 @@
 --     be
 --     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES'
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_multiview VK_KHR_multiview>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
@@ -174,10 +187,15 @@
 -- it is filled in with each corresponding implementation-dependent
 -- property.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_multiview VK_KHR_multiview>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceMultiviewProperties = PhysicalDeviceMultiviewProperties
@@ -254,10 +272,10 @@
 -- additional broadcasting.
 --
 -- Some implementations /may/ not support multiview in conjunction with
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-multiviewMeshShader mesh shaders>,
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-multiview-gs geometry shaders>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-multiviewMeshShader mesh shaders>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-multiview-gs geometry shaders>
 -- or
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-multiview-tess tessellation shaders>.
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-multiview-tess tessellation shaders>.
 --
 -- When multiview is enabled, the
 -- 'Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_VIEW_LOCAL_BIT' bit
@@ -329,13 +347,13 @@
 --     @pCorrelationMasks@
 --
 -- -   #VUID-VkRenderPassMultiviewCreateInfo-multiview-06555# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-multiview multiview>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-multiview multiview>
 --     feature is not enabled, each element of @pViewMasks@ /must/ be @0@
 --
 -- -   #VUID-VkRenderPassMultiviewCreateInfo-pViewMasks-06697# The index of
 --     the most significant bit in each element of @pViewMasks@ /must/ be
 --     less than
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxMultiviewViewCount maxMultiviewViewCount>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxMultiviewViewCount maxMultiviewViewCount>
 --
 -- == Valid Usage (Implicit)
 --
@@ -355,8 +373,15 @@
 --     a valid pointer to an array of @correlationMaskCount@ @uint32_t@
 --     values
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.Pass.RenderPassCreateInfo'
+--
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_multiview VK_KHR_multiview>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data RenderPassMultiviewCreateInfo = RenderPassMultiviewCreateInfo
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
@@ -130,15 +130,15 @@
 --
 -- The interpretation of the configured sampler Y′CBCR conversion is
 -- described in more detail in
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#textures-sampler-YCbCr-conversion the description of sampler Y′CBCR conversion>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#textures-sampler-YCbCr-conversion the description of sampler Y′CBCR conversion>
 -- in the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#textures Image Operations>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#textures Image Operations>
 -- chapter.
 --
 -- == Valid Usage
 --
 -- -   #VUID-vkCreateSamplerYcbcrConversion-None-01648# The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-samplerYcbcrConversion samplerYcbcrConversion>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-samplerYcbcrConversion samplerYcbcrConversion>
 --     feature /must/ be enabled
 --
 -- == Valid Usage (Implicit)
@@ -167,12 +167,17 @@
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_sampler_ycbcr_conversion VK_KHR_sampler_ycbcr_conversion>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',
 -- 'Vulkan.Core10.Handles.Device',
@@ -189,7 +194,7 @@
                                 -- structure specifying the requested sampler Y′CBCR conversion.
                                 (SamplerYcbcrConversionCreateInfo a)
                              -> -- | @pAllocator@ controls host memory allocation as described in the
-                                -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                                -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
                                 -- chapter.
                                 ("allocator" ::: Maybe AllocationCallbacks)
                              -> io (SamplerYcbcrConversion)
@@ -262,6 +267,7 @@
 --
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_sampler_ycbcr_conversion VK_KHR_sampler_ycbcr_conversion>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',
 -- 'Vulkan.Core10.Handles.Device',
@@ -273,7 +279,7 @@
                               -> -- | @ycbcrConversion@ is the conversion to destroy.
                                  SamplerYcbcrConversion
                               -> -- | @pAllocator@ controls host memory allocation as described in the
-                                 -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                                 -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
                                  -- chapter.
                                  ("allocator" ::: Maybe AllocationCallbacks)
                               -> io ()
@@ -297,10 +303,17 @@
 -- | VkSamplerYcbcrConversionInfo - Structure specifying Y′CBCR conversion to
 -- a sampler or image view
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.ImageView.ImageViewCreateInfo'
+--
+--     -   'Vulkan.Core10.Sampler.SamplerCreateInfo'
+--
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_sampler_ycbcr_conversion VK_KHR_sampler_ycbcr_conversion>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core11.Handles.SamplerYcbcrConversion',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
@@ -370,7 +383,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-external-android-hardware-buffer-external-formats external format>.
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-external-android-hardware-buffer-external-formats external format>.
 -- When creating an external format conversion, the value of @components@
 -- is ignored.
 --
@@ -386,58 +399,58 @@
 --     @UNORM@ format)
 --
 -- -   #VUID-VkSamplerYcbcrConversionCreateInfo-format-01650# The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#potential-format-features potential format features>
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#potential-format-features potential format features>
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#textures-chroma-reconstruction downsampled>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#textures-chroma-reconstruction downsampled>
 --
 -- -   #VUID-VkSamplerYcbcrConversionCreateInfo-xChromaOffset-01652# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#potential-format-features potential format features>
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#textures-chroma-reconstruction downsampled>
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-views-identity-mappings identity swizzle>
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-views-identity-mappings identity swizzle>,
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-views-identity-mappings identity swizzle>
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-views-identity-mappings identity swizzle>
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-views-identity-mappings identity swizzle>,
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-image-views-identity-mappings identity swizzle>,
 --     both values /must/ be the identity swizzle
 --
 -- -   #VUID-VkSamplerYcbcrConversionCreateInfo-ycbcrModel-01655# If
@@ -450,25 +463,25 @@
 --     'Vulkan.Core10.Enums.ComponentSwizzle.COMPONENT_SWIZZLE_ONE', and
 --     /must/ not correspond to a component containing zero or one as a
 --     consequence of
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#textures-conversion-to-rgba conversion to RGBA>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#images-component-substitution component substitution>
 --
 -- -   #VUID-VkSamplerYcbcrConversionCreateInfo-ycbcrRange-02748# If
 --     @ycbcrRange@ is
---     'Vulkan.Core11.Enums.SamplerYcbcrRange.SAMPLER_YCBCR_RANGE_ITU_NARROW'
---     then the R, G and B components obtained by applying the @component@
+--     'Vulkan.Core11.Enums.SamplerYcbcrRange.SAMPLER_YCBCR_RANGE_ITU_NARROW',
+--     then the R, G, and B components obtained by applying the @component@
 --     swizzle to @format@ /must/ each have a bit-depth greater than or
 --     equal to 8
 --
 -- -   #VUID-VkSamplerYcbcrConversionCreateInfo-forceExplicitReconstruction-01656#
 --     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#potential-format-features potential format features>
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#potential-format-features potential format features>
+--     <https://registry.khronos.org/vulkan/specs/latest/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
@@ -478,7 +491,7 @@
 --     chain includes a
 --     'Vulkan.Extensions.VK_QCOM_ycbcr_degamma.SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM'
 --     structure, and if the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-ycbcrDegamma ycbcrDegamma>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-ycbcrDegamma ycbcrDegamma>
 --     feature is not enabled, then
 --     'Vulkan.Extensions.VK_QCOM_ycbcr_degamma.SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM'::@enableYDegamma@
 --     /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
@@ -487,7 +500,7 @@
 --     chain includes a
 --     'Vulkan.Extensions.VK_QCOM_ycbcr_degamma.SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM'
 --     structure, and if the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-ycbcrDegamma ycbcrDegamma>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-ycbcrDegamma ycbcrDegamma>
 --     feature is not enabled, then
 --     'Vulkan.Extensions.VK_QCOM_ycbcr_degamma.SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM'::@enableCbCrDegamma@
 --     /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
@@ -508,12 +521,13 @@
 --     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_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID',
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkExternalFormatOHOS VkExternalFormatOHOS>,
 --     'Vulkan.Extensions.VK_QNX_external_memory_screen_buffer.ExternalFormatQNX',
 --     or
 --     'Vulkan.Extensions.VK_QCOM_ycbcr_degamma.SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM'
 --
 -- -   #VUID-VkSamplerYcbcrConversionCreateInfo-sType-unique# The @sType@
---     value of each struct in the @pNext@ chain /must/ be unique
+--     value of each structure in the @pNext@ chain /must/ be unique
 --
 -- -   #VUID-VkSamplerYcbcrConversionCreateInfo-format-parameter# @format@
 --     /must/ be a valid 'Vulkan.Core10.Enums.Format.Format' value
@@ -547,13 +561,14 @@
 -- 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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#textures-sampler-YCbCr-conversion the description of sampler Y′CBCR conversion>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#textures-sampler-YCbCr-conversion the description of sampler Y′CBCR conversion>
 -- in the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#textures Image Operations>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#textures Image Operations>
 -- chapter.
 --
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_sampler_ycbcr_conversion VK_KHR_sampler_ycbcr_conversion>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core11.Enums.ChromaLocation.ChromaLocation',
@@ -563,8 +578,7 @@
 -- 'Vulkan.Core11.Enums.SamplerYcbcrModelConversion.SamplerYcbcrModelConversion',
 -- 'Vulkan.Core11.Enums.SamplerYcbcrRange.SamplerYcbcrRange',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'createSamplerYcbcrConversion',
--- 'Vulkan.Extensions.VK_KHR_sampler_ycbcr_conversion.createSamplerYcbcrConversionKHR'
+-- 'createSamplerYcbcrConversion', 'createSamplerYcbcrConversion'
 data SamplerYcbcrConversionCreateInfo (es :: [Type]) = SamplerYcbcrConversionCreateInfo
   { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
@@ -582,13 +596,13 @@
     -- range expansion and color model conversion.
     components :: ComponentMapping
   , -- | @xChromaOffset@ describes the
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#textures-chroma-reconstruction sample location>
+    -- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#textures-chroma-reconstruction sample location>
+    -- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -694,7 +708,7 @@
 --     @tiling@ is 'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR' or
 --     'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL', then
 --     @planeAspect@ /must/ be a single valid
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#formats-planes-image-aspect multi-planar aspect mask>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-multiplanar-image-aspect multi-planar aspect mask>
 --     bit
 --
 -- -   #VUID-VkBindImagePlaneMemoryInfo-planeAspect-02284# If the image’s
@@ -716,8 +730,15 @@
 --     @planeAspect@ /must/ be a valid
 --     'Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlagBits' value
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindImageMemoryInfo'
+--
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_sampler_ycbcr_conversion VK_KHR_sampler_ycbcr_conversion>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlagBits',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
@@ -774,7 +795,7 @@
 --     'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR' or
 --     'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL', then
 --     @planeAspect@ /must/ be a single valid
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#formats-planes-image-aspect multi-planar aspect mask>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-multiplanar-image-aspect multi-planar aspect mask>
 --     bit
 --
 -- -   #VUID-VkImagePlaneMemoryRequirementsInfo-planeAspect-02282# If the
@@ -797,8 +818,15 @@
 --     @planeAspect@ /must/ be a valid
 --     'Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlagBits' value
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.ImageMemoryRequirementsInfo2'
+--
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_sampler_ycbcr_conversion VK_KHR_sampler_ycbcr_conversion>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlagBits',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
@@ -860,12 +888,22 @@
 -- structure passed to
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
 -- it is filled in to indicate whether each corresponding feature is
--- supported. 'PhysicalDeviceSamplerYcbcrConversionFeatures' /can/ also be
--- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceSamplerYcbcrConversionFeatures', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_sampler_ycbcr_conversion VK_KHR_sampler_ycbcr_conversion>,
@@ -875,7 +913,7 @@
 data PhysicalDeviceSamplerYcbcrConversionFeatures = PhysicalDeviceSamplerYcbcrConversionFeatures
   { -- | #extension-features-samplerYcbcrConversion# @samplerYcbcrConversion@
     -- specifies whether the implementation supports
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -921,10 +959,15 @@
 -- | VkSamplerYcbcrConversionImageFormatProperties - Structure specifying
 -- combined image sampler descriptor count for multi-planar images
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.ImageFormatProperties2'
+--
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_sampler_ycbcr_conversion VK_KHR_sampler_ycbcr_conversion>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data SamplerYcbcrConversionImageFormatProperties = SamplerYcbcrConversionImageFormatProperties
diff --git a/src/Vulkan/Core11/Promoted_From_VK_KHR_shader_draw_parameters.hs b/src/Vulkan/Core11/Promoted_From_VK_KHR_shader_draw_parameters.hs
--- a/src/Vulkan/Core11/Promoted_From_VK_KHR_shader_draw_parameters.hs
+++ b/src/Vulkan/Core11/Promoted_From_VK_KHR_shader_draw_parameters.hs
@@ -48,11 +48,21 @@
 -- structure passed to
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
 -- it is filled in to indicate whether each corresponding feature is
--- supported. 'PhysicalDeviceShaderDrawParametersFeatures' /can/ also be
--- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceShaderDrawParametersFeatures', it /must/ add an instance
+-- of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Core11/Promoted_From_VK_KHR_variable_pointers.hs b/src/Vulkan/Core11/Promoted_From_VK_KHR_variable_pointers.hs
--- a/src/Vulkan/Core11/Promoted_From_VK_KHR_variable_pointers.hs
+++ b/src/Vulkan/Core11/Promoted_From_VK_KHR_variable_pointers.hs
@@ -59,9 +59,13 @@
 -- structure passed to
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
 -- it is filled in to indicate whether each corresponding feature is
--- supported. 'PhysicalDeviceVariablePointersFeatures' /can/ also be used
--- in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceVariablePointersFeatures', it /must/ add an instance of
+-- the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
 -- == Valid Usage
 --
@@ -74,6 +78,14 @@
 -- -   #VUID-VkPhysicalDeviceVariablePointersFeatures-sType-sType# @sType@
 --     /must/ be
 --     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES'
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Core12.hs b/src/Vulkan/Core12.hs
--- a/src/Vulkan/Core12.hs
+++ b/src/Vulkan/Core12.hs
@@ -120,12 +120,22 @@
 -- structure passed to
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
 -- it is filled in to indicate whether each corresponding feature is
--- supported. 'PhysicalDeviceVulkan11Features' /can/ also be used in the
--- @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to selectively
--- enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceVulkan11Features', it /must/ add an instance of the
+-- structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_2 VK_VERSION_1_2>,
@@ -137,23 +147,37 @@
     -- @PhysicalStorageBuffer@ storage class with the @Block@ decoration /can/
     -- have 16-bit integer and 16-bit floating-point members. If this feature
     -- is not enabled, 16-bit integer or 16-bit floating-point members /must/
-    -- not be used in such objects. This also specifies whether shader modules
-    -- /can/ declare the @StorageBuffer16BitAccess@ capability.
+    -- not be used in such objects unless
+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-storageBuffer8BitAccess storageBuffer8BitAccess>
+    -- or
+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-uniformAndStorageBuffer8BitAccess uniformAndStorageBuffer8BitAccess>
+    -- are enabled or they are accessed in 32-bit multiples if
+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderUntypedPointers shaderUntypedPointers>
+    -- is enabled. This also specifies whether shader modules /can/ declare the
+    -- @StorageBuffer16BitAccess@ capability.
     storageBuffer16BitAccess :: Bool
   , -- | #features-uniformAndStorageBuffer16BitAccess#
     -- @uniformAndStorageBuffer16BitAccess@ specifies whether objects in the
     -- @Uniform@ storage class with the @Block@ decoration /can/ have 16-bit
     -- integer and 16-bit floating-point members. If this feature is not
     -- enabled, 16-bit integer or 16-bit floating-point members /must/ not be
-    -- used in such objects. This also specifies whether shader modules /can/
-    -- declare the @UniformAndStorageBuffer16BitAccess@ capability.
+    -- used in such objects unless
+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-uniformAndStorageBuffer8BitAccess uniformAndStorageBuffer8BitAccess>
+    -- are enabled or they are accessed in 32-bit multiples if
+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderUntypedPointers shaderUntypedPointers>
+    -- is enabled. This also specifies whether shader modules /can/ declare the
+    -- @UniformAndStorageBuffer16BitAccess@ capability.
     uniformAndStorageBuffer16BitAccess :: Bool
   , -- | #features-storagePushConstant16# @storagePushConstant16@ specifies
     -- whether objects in the @PushConstant@ storage class /can/ have 16-bit
     -- integer and 16-bit floating-point members. If this feature is not
     -- enabled, 16-bit integer or floating-point members /must/ not be used in
-    -- such objects. This also specifies whether shader modules /can/ declare
-    -- the @StoragePushConstant16@ capability.
+    -- such objects unless
+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-storagePushConstant8 storagePushConstant8>
+    -- are enabled or they are accessed in 32-bit multiples if
+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderUntypedPointers shaderUntypedPointers>
+    -- is enabled. This also specifies whether shader modules /can/ declare the
+    -- @StoragePushConstant16@ capability.
     storagePushConstant16 :: Bool
   , -- | #features-storageInputOutput16# @storageInputOutput16@ specifies whether
     -- objects in the @Input@ and @Output@ storage classes /can/ have 16-bit
@@ -337,8 +361,12 @@
 -- 'Vulkan.Core11.Originally_Based_On_VK_KHR_subgroup.PhysicalDeviceSubgroupProperties'::@quadOperationsInAllStages@
 -- members, but add the @subgroup@ prefix to the member name.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_2 VK_VERSION_1_2>,
@@ -424,9 +452,9 @@
     -- memory in an unprotected queue operation, or perform a query in a
     -- protected queue operation. If this limit is
     -- 'Vulkan.Core10.FundamentalTypes.TRUE', such writes will be discarded or
-    -- 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
+    -- have undefined values written; reads and queries will return poison. 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 ???>
     -- for more information.
     protectedNoFault :: Bool
@@ -440,7 +468,10 @@
     maxPerSetDescriptors :: Word32
   , -- | #limits-maxMemoryAllocationSize# @maxMemoryAllocationSize@ is the
     -- maximum size of a memory allocation that /can/ be created, even if there
-    -- is more space available in the heap.
+    -- is more space available in the heap. If
+    -- 'Vulkan.Core10.Memory.MemoryAllocateInfo'::@allocationSize@ is larger
+    -- the error 'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY' /may/
+    -- be returned.
     maxMemoryAllocationSize :: DeviceSize
   }
   deriving (Typeable)
@@ -580,23 +611,36 @@
 --     @ShaderRecordBufferKHR@, or @PhysicalStorageBuffer@ storage class
 --     with the @Block@ decoration /can/ have 8-bit integer members. If
 --     this feature is not enabled, 8-bit integer members /must/ not be
---     used in such objects. This also indicates whether shader modules
---     /can/ declare the @StorageBuffer8BitAccess@ capability.
+--     used in such objects unless
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderUntypedPointers shaderUntypedPointer>
+--     is enabled and they are accessed in 32-bit multiples or 16-bit
+--     multiples if
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-storageBuffer16BitAccess storageBuffer16BitAccess>
+--     is enabled. This also indicates whether shader modules /can/ declare
+--     the @StorageBuffer8BitAccess@ capability.
 --
 -- -   #features-uniformAndStorageBuffer8BitAccess#
 --     @uniformAndStorageBuffer8BitAccess@ indicates whether objects in the
 --     @Uniform@ storage class with the @Block@ decoration /can/ have 8-bit
 --     integer members. If this feature is not enabled, 8-bit integer
---     members /must/ not be used in such objects. This also indicates
---     whether shader modules /can/ declare the
---     @UniformAndStorageBuffer8BitAccess@ capability.
+--     members /must/ not be used in such objects unless
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderUntypedPointers shaderUntypedPointers>
+--     is enabled and they are accessed in 32-bit multiples or 16-bit
+--     multiples if
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-uniformAndStorageBuffer16BitAccess uniformAndStorageBuffer16BitAccess>
+--     is enabled. This also indicates whether shader modules /can/ declare
+--     the @UniformAndStorageBuffer8BitAccess@ capability.
 --
 -- -   #features-storagePushConstant8# @storagePushConstant8@ indicates
 --     whether objects in the @PushConstant@ storage class /can/ have 8-bit
 --     integer members. If this feature is not enabled, 8-bit integer
---     members /must/ not be used in such objects. This also indicates
---     whether shader modules /can/ declare the @StoragePushConstant8@
---     capability.
+--     members /must/ not be used in such objects unless
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderUntypedPointers shaderUntypedPointers>
+--     is enabled and they are accessed in 32-bit multiples or 16-bit
+--     multiples if
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-storagePushConstant16 storagePushConstant16>
+--     is enabled. This also indicates whether shader modules /can/ declare
+--     the @StoragePushConstant8@ capability.
 --
 -- -   #features-shaderBufferInt64Atomics# @shaderBufferInt64Atomics@
 --     indicates whether shaders /can/ perform 64-bit unsigned and signed
@@ -631,7 +675,7 @@
 -- -   #features-descriptorIndexing# @descriptorIndexing@ indicates whether
 --     the implementation supports the minimum set of descriptor indexing
 --     features as described in the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-requirements Feature Requirements>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-requirements Feature Requirements>
 --     section. Enabling this feature when
 --     'Vulkan.Core10.Device.createDevice' is called does not imply the
 --     other minimum descriptor indexing features are also enabled. Those
@@ -839,7 +883,7 @@
 -- -   #features-samplerFilterMinmax# @samplerFilterMinmax@ indicates
 --     whether the implementation supports a minimum set of required
 --     formats supporting min\/max filtering as defined by the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-filterMinmaxSingleComponentFormats-minimum-requirements filterMinmaxSingleComponentFormats>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-filterMinmaxSingleComponentFormats-minimum-requirements filterMinmaxSingleComponentFormats>
 --     property minimum requirements. If this feature is not enabled, then
 --     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'
 --     /must/ only use
@@ -871,8 +915,8 @@
 --
 -- -   #features-separateDepthStencilLayouts# @separateDepthStencilLayouts@
 --     indicates whether the implementation supports a
---     'Vulkan.Core10.OtherTypes.ImageMemoryBarrier' for a depth\/stencil
---     image with only one of
+--     'Vulkan.Core10.CommandBufferBuilding.ImageMemoryBarrier' for a
+--     depth\/stencil image with only one of
 --     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' or
 --     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
 --     set, and whether
@@ -958,9 +1002,13 @@
 -- structure passed to
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
 -- it is filled in to indicate whether each corresponding feature is
--- supported. 'PhysicalDeviceVulkan12Features' /can/ also be used in the
--- @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to selectively
--- enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceVulkan12Features', it /must/ add an instance of the
+-- structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
 -- == Valid Usage (Implicit)
 --
@@ -968,6 +1016,14 @@
 --     be
 --     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES'
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_2 VK_VERSION_1_2>,
@@ -1362,8 +1418,12 @@
 -- and
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.PhysicalDeviceTimelineSemaphoreProperties'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_2 VK_VERSION_1_2>,
@@ -1560,7 +1620,11 @@
     -- @descriptorBindingStorageTexelBufferUpdateAfterBind@. If this is
     -- 'Vulkan.Core10.FundamentalTypes.FALSE', then either @robustBufferAccess@
     -- /must/ be disabled or all of these update-after-bind features /must/ be
-    -- disabled.
+    -- disabled. Similarly, if this property is
+    -- 'Vulkan.Core10.FundamentalTypes.FALSE', robustness /must/ not be enabled
+    -- through the
+    -- 'Vulkan.Core14.Promoted_From_VK_EXT_pipeline_robustness.PipelineRobustnessCreateInfo'
+    -- mechanism.
     robustBufferAccessUpdateAfterBind :: Bool
   , -- | #limits-quadDivergentImplicitLod# @quadDivergentImplicitLod@ is a
     -- boolean value indicating whether implicit LOD calculations for image
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
@@ -27,6 +27,71 @@
 --
 -- = Description
 --
+-- -   'DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT' specifies that if
+--     descriptors in this binding are updated between when the descriptor
+--     set is bound in a command buffer and when that command buffer is
+--     submitted to a queue, then the submission will use the most recently
+--     set descriptors for this binding and the updates do not invalidate
+--     the command buffer. Descriptor bindings created with this flag are
+--     also partially exempt from the external synchronization requirement
+--     in
+--     'Vulkan.Extensions.VK_KHR_descriptor_update_template.updateDescriptorSetWithTemplateKHR'
+--     and 'Vulkan.Core10.DescriptorSet.updateDescriptorSets'. Multiple
+--     descriptors with this flag set /can/ be updated concurrently in
+--     different threads, though the same descriptor /must/ not be updated
+--     concurrently by two threads. Descriptors with this flag set /can/ be
+--     updated concurrently with the set being bound to a command buffer in
+--     another thread, but not concurrently with the set being reset or
+--     freed.
+--
+-- -   'DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT' specifies that descriptors
+--     in this binding that are not /dynamically used/ need not contain
+--     valid descriptors at the time the descriptors are consumed. A
+--     descriptor is dynamically used if any shader invocation executes an
+--     instruction that performs any memory access using the descriptor. If
+--     a descriptor is not dynamically used, any resource referenced by the
+--     descriptor is not considered to be referenced during command
+--     execution.
+--
+-- -   'DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT' specifies that
+--     descriptors in this binding /can/ be updated after a command buffer
+--     has bound this descriptor set, or while a command buffer that uses
+--     this descriptor set is pending execution, as long as the descriptors
+--     that are updated are not used by those command buffers. Descriptor
+--     bindings created with this flag are also partially exempt from the
+--     external synchronization requirement in
+--     'Vulkan.Extensions.VK_KHR_descriptor_update_template.updateDescriptorSetWithTemplateKHR'
+--     and 'Vulkan.Core10.DescriptorSet.updateDescriptorSets' in the same
+--     way as for 'DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT'. If
+--     'DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT' is also set, then
+--     descriptors /can/ be updated as long as they are not dynamically
+--     used by any shader invocations. If
+--     'DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT' is not set, then
+--     descriptors /can/ be updated as long as they are not statically used
+--     by any shader invocations.
+--
+-- -   'DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT' specifies that
+--     this is a /variable-sized descriptor binding/ whose size will be
+--     specified when a descriptor set is allocated using this layout. The
+--     value of @descriptorCount@ is treated as an upper bound on the size
+--     of the binding. This /must/ only be used for the last binding in the
+--     descriptor set layout (i.e. the binding with the largest value of
+--     @binding@). For the purposes of counting against limits such as
+--     @maxDescriptorSet@* and @maxPerStageDescriptor@*, the full value of
+--     @descriptorCount@ is counted, except for descriptor bindings with a
+--     descriptor type of
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK',
+--     when
+--     'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutCreateInfo'::@flags@
+--     does not contain
+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'.
+--     In this case, @descriptorCount@ specifies the upper bound on the
+--     byte size of the binding; thus it counts against the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxInlineUniformBlockSize maxInlineUniformBlockSize>
+--     and
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxInlineUniformTotalSize maxInlineUniformTotalSize>
+--     limits instead.
+--
 -- Note that while 'DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT' and
 -- 'DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT' both involve
 -- updates to descriptor sets after they are bound,
@@ -43,68 +108,16 @@
 newtype DescriptorBindingFlagBits = DescriptorBindingFlagBits Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT' specifies that if descriptors
--- in this binding are updated between when the descriptor set is bound in
--- a command buffer and when that command buffer is submitted to a queue,
--- then the submission will use the most recently set descriptors for this
--- binding and the updates do not invalidate the command buffer. Descriptor
--- bindings created with this flag are also partially exempt from the
--- external synchronization requirement in
--- 'Vulkan.Extensions.VK_KHR_descriptor_update_template.updateDescriptorSetWithTemplateKHR'
--- and 'Vulkan.Core10.DescriptorSet.updateDescriptorSets'. Multiple
--- descriptors with this flag set /can/ be updated concurrently in
--- different threads, though the same descriptor /must/ not be updated
--- concurrently by two threads. Descriptors with this flag set /can/ be
--- updated concurrently with the set being bound to a command buffer in
--- another thread, but not concurrently with the set being reset or freed.
+-- No documentation found for Nested "VkDescriptorBindingFlagBits" "VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT"
 pattern DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT = DescriptorBindingFlagBits 0x00000001
 
--- | 'DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT' specifies that
--- descriptors in this binding /can/ be updated after a command buffer has
--- bound this descriptor set, or while a command buffer that uses this
--- descriptor set is pending execution, as long as the descriptors that are
--- updated are not used by those command buffers. Descriptor bindings
--- created with this flag are also partially exempt from the external
--- synchronization requirement in
--- 'Vulkan.Extensions.VK_KHR_descriptor_update_template.updateDescriptorSetWithTemplateKHR'
--- and 'Vulkan.Core10.DescriptorSet.updateDescriptorSets' in the same way
--- as for 'DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT'. If
--- 'DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT' is also set, then descriptors
--- /can/ be updated as long as they are not dynamically used by any shader
--- invocations. If 'DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT' is not set,
--- then descriptors /can/ be updated as long as they are not statically
--- used by any shader invocations.
+-- No documentation found for Nested "VkDescriptorBindingFlagBits" "VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT"
 pattern DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT = DescriptorBindingFlagBits 0x00000002
 
--- | 'DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT' specifies that descriptors in
--- this binding that are not /dynamically used/ need not contain valid
--- descriptors at the time the descriptors are consumed. A descriptor is
--- dynamically used if any shader invocation executes an instruction that
--- performs any memory access using the descriptor. If a descriptor is not
--- dynamically used, any resource referenced by the descriptor is not
--- considered to be referenced during command execution.
+-- No documentation found for Nested "VkDescriptorBindingFlagBits" "VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT"
 pattern DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT = DescriptorBindingFlagBits 0x00000004
 
--- | 'DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT' specifies that this
--- is a /variable-sized descriptor binding/ whose size will be specified
--- when a descriptor set is allocated using this layout. The value of
--- @descriptorCount@ is treated as an upper bound on the size of the
--- binding. This /must/ only be used for the last binding in the descriptor
--- set layout (i.e. the binding with the largest value of @binding@). For
--- the purposes of counting against limits such as @maxDescriptorSet@* and
--- @maxPerStageDescriptor@*, the full value of @descriptorCount@ is
--- counted, except for descriptor bindings with a descriptor type of
--- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK',
--- when
--- 'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutCreateInfo'::@flags@
--- does not contain
--- 'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'.
--- In this case, @descriptorCount@ specifies the upper bound on the byte
--- size of the binding; thus it counts against the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxInlineUniformBlockSize maxInlineUniformBlockSize>
--- and
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxInlineUniformTotalSize maxInlineUniformTotalSize>
--- limits instead.
+-- No documentation found for Nested "VkDescriptorBindingFlagBits" "VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT"
 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
@@ -26,7 +26,8 @@
                                               , DRIVER_ID_MESA_NVK
                                               , DRIVER_ID_IMAGINATION_OPEN_SOURCE_MESA
                                               , DRIVER_ID_MESA_HONEYKRISP
-                                              , DRIVER_ID_RESERVED_27
+                                              , DRIVER_ID_VULKAN_SC_EMULATION_ON_VULKAN
+                                              , DRIVER_ID_MESA_KOSMICKRISP
                                               , ..
                                               )) where
 
@@ -143,9 +144,12 @@
 -- No documentation found for Nested "VkDriverId" "VK_DRIVER_ID_MESA_HONEYKRISP"
 pattern DRIVER_ID_MESA_HONEYKRISP = DriverId 26
 
--- No documentation found for Nested "VkDriverId" "VK_DRIVER_ID_RESERVED_27"
-pattern DRIVER_ID_RESERVED_27 = DriverId 27
+-- No documentation found for Nested "VkDriverId" "VK_DRIVER_ID_VULKAN_SC_EMULATION_ON_VULKAN"
+pattern DRIVER_ID_VULKAN_SC_EMULATION_ON_VULKAN = DriverId 27
 
+-- No documentation found for Nested "VkDriverId" "VK_DRIVER_ID_MESA_KOSMICKRISP"
+pattern DRIVER_ID_MESA_KOSMICKRISP = DriverId 28
+
 {-# COMPLETE
   DRIVER_ID_AMD_PROPRIETARY
   , DRIVER_ID_AMD_OPEN_SOURCE
@@ -173,7 +177,8 @@
   , DRIVER_ID_MESA_NVK
   , DRIVER_ID_IMAGINATION_OPEN_SOURCE_MESA
   , DRIVER_ID_MESA_HONEYKRISP
-  , DRIVER_ID_RESERVED_27 ::
+  , DRIVER_ID_VULKAN_SC_EMULATION_ON_VULKAN
+  , DRIVER_ID_MESA_KOSMICKRISP ::
     DriverId
   #-}
 
@@ -226,7 +231,11 @@
     , "IMAGINATION_OPEN_SOURCE_MESA"
     )
   , (DRIVER_ID_MESA_HONEYKRISP, "MESA_HONEYKRISP")
-  , (DRIVER_ID_RESERVED_27, "RESERVED_27")
+  ,
+    ( DRIVER_ID_VULKAN_SC_EMULATION_ON_VULKAN
+    , "VULKAN_SC_EMULATION_ON_VULKAN"
+    )
+  , (DRIVER_ID_MESA_KOSMICKRISP, "MESA_KOSMICKRISP")
   ]
 
 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
@@ -6,7 +6,8 @@
                                                                      , RESOLVE_MODE_AVERAGE_BIT
                                                                      , RESOLVE_MODE_MIN_BIT
                                                                      , RESOLVE_MODE_MAX_BIT
-                                                                     , RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID
+                                                                     , RESOLVE_MODE_CUSTOM_BIT_EXT
+                                                                     , RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID
                                                                      , ..
                                                                      )
                                                 ) where
@@ -29,14 +30,68 @@
 --
 -- = Description
 --
+-- -   'RESOLVE_MODE_NONE' specifies that no resolve operation is done.
+--
+-- -   'RESOLVE_MODE_SAMPLE_ZERO_BIT' specifies that result of the resolve
+--     operation is equal to the value of sample 0.
+--
+-- -   'RESOLVE_MODE_AVERAGE_BIT' specifies that result of the resolve
+--     operation is the average of the sample values.
+--
+-- -   'RESOLVE_MODE_MIN_BIT' specifies that result of the resolve
+--     operation is the minimum of the sample values.
+--
+-- -   'RESOLVE_MODE_MAX_BIT' specifies that result of the resolve
+--     operation is the maximum of the sample values.
+--
+-- -   'RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID' specifies that
+--     rather than a multisample resolve, a single sampled color attachment
+--     will be downsampled into a Y′CBCR format image specified by an
+--     external Android format. Unlike other resolve modes, implementations
+--     can resolve multiple times during rendering, or even bypass writing
+--     to the color attachment altogether, as long as the final value is
+--     resolved to the resolve attachment. Values in the G, B, and R
+--     channels of the color attachment will be written to the Y, CB, and
+--     CR channels of the external format image, respectively. Chroma
+--     values are calculated as if sampling with a linear filter from the
+--     color attachment at full rate, at the location the chroma values sit
+--     according to
+--     'Vulkan.Extensions.VK_ANDROID_external_format_resolve.PhysicalDeviceExternalFormatResolvePropertiesANDROID'::@externalFormatResolveChromaOffsetX@,
+--     'Vulkan.Extensions.VK_ANDROID_external_format_resolve.PhysicalDeviceExternalFormatResolvePropertiesANDROID'::@externalFormatResolveChromaOffsetY@,
+--     and the chroma sample rate of the resolved image.
+--
+-- -   'RESOLVE_MODE_CUSTOM_BIT_EXT' specifies that the attachment will be
+--     resolved by shaders in the render pass instead of fixed-function
+--     operations.
+--
 -- If no resolve mode is otherwise specified, 'RESOLVE_MODE_AVERAGE_BIT' is
 -- used.
 --
+-- If 'RESOLVE_MODE_AVERAGE_BIT' is used, and the source format is a
+-- floating-point or normalized type, the sample values for each pixel are
+-- resolved with implementation-defined numerical precision.
+--
+-- If the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-numericformat numeric format>
+-- of the resolve attachment uses sRGB encoding, the implementation
+-- /should/ convert samples from nonlinear to linear before averaging
+-- samples as described in the “sRGB EOTF” section of the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#data-format Khronos Data Format Specification>.
+-- In this case, the implementation /must/ convert the linear averaged
+-- value to nonlinear before writing the resolved result to resolve
+-- attachment. If the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance10 maintenance10>
+-- feature is enabled, whether a nonlinear to linear conversion happens for
+-- sRGB resolve is defined by
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-resolveSrgbFormatAppliesTransferFunction resolveSrgbFormatAppliesTransferFunction>.
+-- This behavior /can/ be overridden with appropriate
+-- @VK_*@/RESOLVE/{SKIP,ENABLE}_TRANSFER_FUNCTION_BIT_KHR flag usage.
+--
 -- No range compression or Y′CBCR model conversion is performed by
--- 'RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID'; applications have to
--- do these conversions themselves. Value outputs are expected to match
+-- 'RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID'; applications have
+-- to do these conversions themselves. Value outputs are expected to match
 -- those that would be read through a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#textures-sampler-YCbCr-conversion-modelconversion Y′CBCR sampler using >.
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#textures-sampler-YCbCr-conversion-modelconversion Y′CBCR sampler using >.
 -- The color space that the values should be in is defined by the platform
 -- and is not exposed via Vulkan.
 --
@@ -45,46 +100,33 @@
 -- <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.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingAttachmentInfo',
+-- 'Vulkan.Extensions.VK_KHR_maintenance10.ResolveImageModeInfoKHR',
 -- 'ResolveModeFlags',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve.SubpassDescriptionDepthStencilResolve'
 newtype ResolveModeFlagBits = ResolveModeFlagBits Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'RESOLVE_MODE_NONE' specifies that no resolve operation is done.
+-- No documentation found for Nested "VkResolveModeFlagBits" "VK_RESOLVE_MODE_NONE"
 pattern RESOLVE_MODE_NONE = ResolveModeFlagBits 0x00000000
 
--- | 'RESOLVE_MODE_SAMPLE_ZERO_BIT' specifies that result of the resolve
--- operation is equal to the value of sample 0.
+-- No documentation found for Nested "VkResolveModeFlagBits" "VK_RESOLVE_MODE_SAMPLE_ZERO_BIT"
 pattern RESOLVE_MODE_SAMPLE_ZERO_BIT = ResolveModeFlagBits 0x00000001
 
--- | 'RESOLVE_MODE_AVERAGE_BIT' specifies that result of the resolve
--- operation is the average of the sample values.
+-- No documentation found for Nested "VkResolveModeFlagBits" "VK_RESOLVE_MODE_AVERAGE_BIT"
 pattern RESOLVE_MODE_AVERAGE_BIT = ResolveModeFlagBits 0x00000002
 
--- | 'RESOLVE_MODE_MIN_BIT' specifies that result of the resolve operation is
--- the minimum of the sample values.
+-- No documentation found for Nested "VkResolveModeFlagBits" "VK_RESOLVE_MODE_MIN_BIT"
 pattern RESOLVE_MODE_MIN_BIT = ResolveModeFlagBits 0x00000004
 
--- | 'RESOLVE_MODE_MAX_BIT' specifies that result of the resolve operation is
--- the maximum of the sample values.
+-- No documentation found for Nested "VkResolveModeFlagBits" "VK_RESOLVE_MODE_MAX_BIT"
 pattern RESOLVE_MODE_MAX_BIT = ResolveModeFlagBits 0x00000008
 
--- | 'RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID' specifies that rather
--- than a multisample resolve, a single sampled color attachment will be
--- downsampled into a Y′CBCR format image specified by an external Android
--- format. Unlike other resolve modes, implementations can resolve multiple
--- times during rendering, or even bypass writing to the color attachment
--- altogether, as long as the final value is resolved to the resolve
--- attachment. Values in the G, B, and R channels of the color attachment
--- will be written to the Y, CB, and CR channels of the external format
--- image, respectively. Chroma values are calculated as if sampling with a
--- linear filter from the color attachment at full rate, at the location
--- the chroma values sit according to
--- 'Vulkan.Extensions.VK_ANDROID_external_format_resolve.PhysicalDeviceExternalFormatResolvePropertiesANDROID'::@chromaOffsetX@,
--- 'Vulkan.Extensions.VK_ANDROID_external_format_resolve.PhysicalDeviceExternalFormatResolvePropertiesANDROID'::@chromaOffsetY@,
--- and the chroma sample rate of the resolved image.
-pattern RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID = ResolveModeFlagBits 0x00000010
+-- No documentation found for Nested "VkResolveModeFlagBits" "VK_RESOLVE_MODE_CUSTOM_BIT_EXT"
+pattern RESOLVE_MODE_CUSTOM_BIT_EXT = ResolveModeFlagBits 0x00000020
 
+-- No documentation found for Nested "VkResolveModeFlagBits" "VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID"
+pattern RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID = ResolveModeFlagBits 0x00000010
+
 conNameResolveModeFlagBits :: String
 conNameResolveModeFlagBits = "ResolveModeFlagBits"
 
@@ -101,9 +143,10 @@
   , (RESOLVE_MODE_AVERAGE_BIT, "AVERAGE_BIT")
   , (RESOLVE_MODE_MIN_BIT, "MIN_BIT")
   , (RESOLVE_MODE_MAX_BIT, "MAX_BIT")
+  , (RESOLVE_MODE_CUSTOM_BIT_EXT, "CUSTOM_BIT_EXT")
   ,
-    ( RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID
-    , "EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID"
+    ( RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID
+    , "EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID"
     )
   ]
 
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
@@ -18,6 +18,26 @@
 
 -- | VkSamplerReductionMode - Specify reduction mode for texture filtering
 --
+-- = Description
+--
+-- -   '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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#textures-unnormalized-to-integer the image operations chapter>.
+--
+-- -   'SAMPLER_REDUCTION_MODE_MIN' specifies that texel values are
+--     combined by taking the component-wise minimum of values in the
+--     footprint with non-zero weights.
+--
+-- -   'SAMPLER_REDUCTION_MODE_MAX' specifies that texel values are
+--     combined by taking the component-wise maximum of values in the
+--     footprint with non-zero weights.
+--
+-- -   'SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM' specifies
+--     values are combined as described by
+--     'SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE', followed by a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#textures-texel-range-clamp texel range clamp>.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_sampler_filter_minmax VK_EXT_sampler_filter_minmax>,
@@ -26,26 +46,16 @@
 newtype SamplerReductionMode = SamplerReductionMode Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | '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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#textures-unnormalized-to-integer the image operations chapter>.
+-- No documentation found for Nested "VkSamplerReductionMode" "VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE"
 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
--- non-zero weights.
+-- No documentation found for Nested "VkSamplerReductionMode" "VK_SAMPLER_REDUCTION_MODE_MIN"
 pattern SAMPLER_REDUCTION_MODE_MIN = SamplerReductionMode 1
 
--- | 'SAMPLER_REDUCTION_MODE_MAX' specifies that texel values are combined by
--- taking the component-wise maximum of values in the footprint with
--- non-zero weights.
+-- No documentation found for Nested "VkSamplerReductionMode" "VK_SAMPLER_REDUCTION_MODE_MAX"
 pattern SAMPLER_REDUCTION_MODE_MAX = SamplerReductionMode 2
 
--- | 'SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM' specifies
--- values are combined as described by
--- 'SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE', followed by a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#textures-texel-range-clamp texel range clamp>.
+-- No documentation found for Nested "VkSamplerReductionMode" "VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM"
 pattern SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM = SamplerReductionMode 1000521000
 
 {-# COMPLETE
diff --git a/src/Vulkan/Core12/Enums/SemaphoreType.hs b/src/Vulkan/Core12/Enums/SemaphoreType.hs
--- a/src/Vulkan/Core12/Enums/SemaphoreType.hs
+++ b/src/Vulkan/Core12/Enums/SemaphoreType.hs
@@ -16,6 +16,20 @@
 
 -- | VkSemaphoreType - Specifies the type of a semaphore object
 --
+-- = Description
+--
+-- -   'SEMAPHORE_TYPE_BINARY' specifies a /binary semaphore/ type that has
+--     a boolean payload indicating whether the semaphore is currently
+--     signaled or unsignaled. When created, the semaphore is in the
+--     unsignaled state.
+--
+-- -   'SEMAPHORE_TYPE_TIMELINE' specifies a /timeline semaphore/ type that
+--     has a strictly increasing 64-bit unsigned integer payload indicating
+--     whether the semaphore is signaled with respect to a particular
+--     reference value. When created, the semaphore payload has the value
+--     given by the @initialValue@ field of
+--     'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.SemaphoreTypeCreateInfo'.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_timeline_semaphore VK_KHR_timeline_semaphore>,
@@ -24,17 +38,10 @@
 newtype SemaphoreType = SemaphoreType Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'SEMAPHORE_TYPE_BINARY' specifies a /binary semaphore/ type that has a
--- boolean payload indicating whether the semaphore is currently signaled
--- or unsignaled. When created, the semaphore is in the unsignaled state.
+-- No documentation found for Nested "VkSemaphoreType" "VK_SEMAPHORE_TYPE_BINARY"
 pattern SEMAPHORE_TYPE_BINARY = SemaphoreType 0
 
--- | 'SEMAPHORE_TYPE_TIMELINE' specifies a /timeline semaphore/ type that has
--- a strictly increasing 64-bit unsigned integer payload indicating whether
--- the semaphore is signaled with respect to a particular reference value.
--- When created, the semaphore payload has the value given by the
--- @initialValue@ field of
--- 'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.SemaphoreTypeCreateInfo'.
+-- No documentation found for Nested "VkSemaphoreType" "VK_SEMAPHORE_TYPE_TIMELINE"
 pattern SEMAPHORE_TYPE_TIMELINE = SemaphoreType 1
 
 {-# COMPLETE
diff --git a/src/Vulkan/Core12/Enums/SemaphoreWaitFlagBits.hs b/src/Vulkan/Core12/Enums/SemaphoreWaitFlagBits.hs
--- a/src/Vulkan/Core12/Enums/SemaphoreWaitFlagBits.hs
+++ b/src/Vulkan/Core12/Enums/SemaphoreWaitFlagBits.hs
@@ -22,6 +22,19 @@
 -- | VkSemaphoreWaitFlagBits - Bitmask specifying additional parameters of a
 -- semaphore wait operation
 --
+-- = Description
+--
+-- -   'SEMAPHORE_WAIT_ANY_BIT' specifies that the semaphore wait condition
+--     is that at least one of the semaphores in
+--     'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.SemaphoreWaitInfo'::@pSemaphores@
+--     has reached the value specified by the corresponding element of
+--     'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.SemaphoreWaitInfo'::@pValues@.
+--     If 'SEMAPHORE_WAIT_ANY_BIT' is not set, the semaphore wait condition
+--     is that all of the semaphores in
+--     'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.SemaphoreWaitInfo'::@pSemaphores@
+--     have reached the value specified by the corresponding element of
+--     'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.SemaphoreWaitInfo'::@pValues@.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_timeline_semaphore VK_KHR_timeline_semaphore>,
@@ -30,16 +43,7 @@
 newtype SemaphoreWaitFlagBits = SemaphoreWaitFlagBits Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'SEMAPHORE_WAIT_ANY_BIT' specifies that the semaphore wait condition is
--- that at least one of the semaphores in
--- 'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.SemaphoreWaitInfo'::@pSemaphores@
--- has reached the value specified by the corresponding element of
--- 'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.SemaphoreWaitInfo'::@pValues@.
--- If 'SEMAPHORE_WAIT_ANY_BIT' is not set, the semaphore wait condition is
--- that all of the semaphores in
--- 'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.SemaphoreWaitInfo'::@pSemaphores@
--- have reached the value specified by the corresponding element of
--- 'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.SemaphoreWaitInfo'::@pValues@.
+-- No documentation found for Nested "VkSemaphoreWaitFlagBits" "VK_SEMAPHORE_WAIT_ANY_BIT"
 pattern SEMAPHORE_WAIT_ANY_BIT = SemaphoreWaitFlagBits 0x00000001
 
 conNameSemaphoreWaitFlagBits :: String
diff --git a/src/Vulkan/Core12/Enums/ShaderFloatControlsIndependence.hs b/src/Vulkan/Core12/Enums/ShaderFloatControlsIndependence.hs
--- a/src/Vulkan/Core12/Enums/ShaderFloatControlsIndependence.hs
+++ b/src/Vulkan/Core12/Enums/ShaderFloatControlsIndependence.hs
@@ -18,6 +18,19 @@
 -- | VkShaderFloatControlsIndependence - Bitmask specifying whether, and how,
 -- shader float controls can be set separately
 --
+-- = Description
+--
+-- -   'SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY' specifies that
+--     shader float controls for 32-bit floating-point /can/ be set
+--     independently; other bit widths /must/ be set identically to each
+--     other.
+--
+-- -   'SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL' specifies that shader float
+--     controls for all bit widths /can/ be set independently.
+--
+-- -   'SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE' specifies that shader
+--     float controls for all bit widths /must/ be set identically.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_shader_float_controls VK_KHR_shader_float_controls>,
@@ -27,17 +40,13 @@
 newtype ShaderFloatControlsIndependence = ShaderFloatControlsIndependence Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY' specifies that shader
--- float controls for 32-bit floating-point /can/ be set independently;
--- other bit widths /must/ be set identically to each other.
+-- No documentation found for Nested "VkShaderFloatControlsIndependence" "VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY"
 pattern SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY = ShaderFloatControlsIndependence 0
 
--- | 'SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL' specifies that shader float
--- controls for all bit widths /can/ be set independently.
+-- No documentation found for Nested "VkShaderFloatControlsIndependence" "VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL"
 pattern SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL = ShaderFloatControlsIndependence 1
 
--- | 'SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE' specifies that shader float
--- controls for all bit widths /must/ be set identically.
+-- No documentation found for Nested "VkShaderFloatControlsIndependence" "VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE"
 pattern SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE = ShaderFloatControlsIndependence 2
 
 {-# COMPLETE
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
@@ -73,12 +73,22 @@
 -- structure passed to
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
 -- it is filled in to indicate whether each corresponding feature is
--- supported. 'PhysicalDeviceDescriptorIndexingFeatures' /can/ also be used
--- in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceDescriptorIndexingFeatures', it /must/ add an instance of
+-- the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_indexing VK_EXT_descriptor_indexing>,
@@ -419,8 +429,12 @@
 -- it is filled in with each corresponding implementation-dependent
 -- property.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_indexing VK_EXT_descriptor_indexing>,
@@ -480,7 +494,7 @@
   , -- | #extension-limits-robustBufferAccessUpdateAfterBind#
     -- @robustBufferAccessUpdateAfterBind@ is a boolean value indicating
     -- whether
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
     -- /can/ be enabled on a device simultaneously with
     -- @descriptorBindingUniformBufferUpdateAfterBind@,
     -- @descriptorBindingStorageBufferUpdateAfterBind@,
@@ -488,14 +502,18 @@
     -- @descriptorBindingStorageTexelBufferUpdateAfterBind@. If this is
     -- 'Vulkan.Core10.FundamentalTypes.FALSE', then either @robustBufferAccess@
     -- /must/ be disabled or all of these update-after-bind features /must/ be
-    -- disabled.
+    -- disabled. Similarly, if this property is
+    -- 'Vulkan.Core10.FundamentalTypes.FALSE', robustness /must/ not be enabled
+    -- through the
+    -- 'Vulkan.Core14.Promoted_From_VK_EXT_pipeline_robustness.PipelineRobustnessCreateInfo'
+    -- mechanism.
     robustBufferAccessUpdateAfterBind :: Bool
   , -- | #extension-limits-quadDivergentImplicitLod# @quadDivergentImplicitLod@
     -- is a boolean value indicating whether implicit LOD 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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#textures-derivative-image-operations Derivative Image Operations>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#textures-derivative-image-operations Derivative Image Operations>.
     quadDivergentImplicitLod :: Bool
   , -- | #extension-limits-maxPerStageDescriptorUpdateAfterBindSamplers#
     -- @maxPerStageDescriptorUpdateAfterBindSamplers@ is similar to
@@ -783,7 +801,7 @@
 -- -   #VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-flags-03003# If
 --     'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutCreateInfo'::@flags@
 --     includes
---     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR',
+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT',
 --     then all elements of @pBindingFlags@ /must/ not include
 --     'Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT',
 --     'Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT',
@@ -899,6 +917,14 @@
 --     or
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC'
 --
+-- -   #VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingStorageTensorUpdateAfterBind-09697#
+--     If
+--     'Vulkan.Extensions.VK_ARM_tensors.PhysicalDeviceTensorFeaturesARM'::@descriptorBindingStorageTensorUpdateAfterBind@
+--     is not enabled, all bindings with descriptor type
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     /must/ not use
+--     'Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT'
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-sType-sType#
@@ -911,6 +937,12 @@
 --     'Vulkan.Core12.Enums.DescriptorBindingFlagBits.DescriptorBindingFlagBits'
 --     values
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutCreateInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_indexing VK_EXT_descriptor_indexing>,
@@ -993,6 +1025,12 @@
 --     If @descriptorSetCount@ is not @0@, @pDescriptorCounts@ /must/ be a
 --     valid pointer to an array of @descriptorSetCount@ @uint32_t@ values
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.DescriptorSet.DescriptorSetAllocateInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_indexing VK_EXT_descriptor_indexing>,
@@ -1065,7 +1103,11 @@
 -- descriptor count will be returned. If the layout is not supported, then
 -- the value written to @maxVariableDescriptorCount@ is undefined.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_maintenance3.DescriptorSetLayoutSupport'
 --
 -- = See Also
 --
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
@@ -74,7 +74,7 @@
 --     in @queryPool@
 --
 -- -   #VUID-vkResetQueryPool-None-02665# The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-hostQueryReset hostQueryReset>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-hostQueryReset hostQueryReset>
 --     feature /must/ be enabled
 --
 -- -   #VUID-vkResetQueryPool-firstQuery-02741# Submitted commands that
@@ -142,11 +142,21 @@
 -- structure passed to
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
 -- it is filled in to indicate whether each corresponding feature is
--- supported. 'PhysicalDeviceHostQueryResetFeatures' /can/ also be used in
--- the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceHostQueryResetFeatures', it /must/ add an instance of the
+-- structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
 --
 -- = See Also
 --
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
@@ -40,6 +40,16 @@
 --
 -- = Description
 --
+-- -   #extension-limits-filterMinmaxSingleComponentFormats#
+--     @filterMinmaxSingleComponentFormats@ is a boolean value indicating
+--     whether a minimum set of required formats support min\/max
+--     filtering.
+--
+-- -   #extension-limits-filterMinmaxImageComponentMapping#
+--     @filterMinmaxImageComponentMapping@ is a boolean value indicating
+--     whether the implementation supports non-identity component mapping
+--     of the image when doing min\/max filtering.
+--
 -- If the 'PhysicalDeviceSamplerFilterMinmaxProperties' structure is
 -- included in the @pNext@ chain of the
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
@@ -56,6 +66,30 @@
 -- they support
 -- 'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_BIT':
 --
+-- -   'Vulkan.Core10.Enums.Format.FORMAT_R8_UNORM'
+--
+-- -   'Vulkan.Core10.Enums.Format.FORMAT_R8_SNORM'
+--
+-- -   'Vulkan.Core10.Enums.Format.FORMAT_R16_UNORM'
+--
+-- -   'Vulkan.Core10.Enums.Format.FORMAT_R16_SNORM'
+--
+-- -   'Vulkan.Core10.Enums.Format.FORMAT_R16_SFLOAT'
+--
+-- -   'Vulkan.Core10.Enums.Format.FORMAT_R32_SFLOAT'
+--
+-- -   'Vulkan.Core10.Enums.Format.FORMAT_D16_UNORM'
+--
+-- -   'Vulkan.Core10.Enums.Format.FORMAT_X8_D24_UNORM_PACK32'
+--
+-- -   'Vulkan.Core10.Enums.Format.FORMAT_D32_SFLOAT'
+--
+-- -   'Vulkan.Core10.Enums.Format.FORMAT_D16_UNORM_S8_UINT'
+--
+-- -   'Vulkan.Core10.Enums.Format.FORMAT_D24_UNORM_S8_UINT'
+--
+-- -   'Vulkan.Core10.Enums.Format.FORMAT_D32_SFLOAT_S8_UINT'
+--
 -- If the format is a depth\/stencil format, this bit only specifies that
 -- the depth aspect (not the stencil aspect) of an image of this format
 -- supports min\/max filtering, and that min\/max filtering of the depth
@@ -65,15 +99,25 @@
 -- '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://registry.khronos.org/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
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-image-views-identity-mappings identity swizzle>.
+-- Only the @r@ component of the sampled image value is defined; reading
+-- other component values results in poison. If
 -- @filterMinmaxImageComponentMapping@ is
 -- 'Vulkan.Core10.FundamentalTypes.TRUE' this restriction does not apply
 -- and image component mapping works as normal.
 --
 -- == Valid Usage (Implicit)
 --
+-- -   #VUID-VkPhysicalDeviceSamplerFilterMinmaxProperties-sType-sType#
+--     @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES'
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_sampler_filter_minmax VK_EXT_sampler_filter_minmax>,
@@ -81,14 +125,9 @@
 -- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceSamplerFilterMinmaxProperties = PhysicalDeviceSamplerFilterMinmaxProperties
-  { -- | #extension-limits-filterMinmaxSingleComponentFormats#
-    -- @filterMinmaxSingleComponentFormats@ is a boolean value indicating
-    -- whether a minimum set of required formats support min\/max filtering.
+  { -- No documentation found for Nested "VkPhysicalDeviceSamplerFilterMinmaxProperties" "filterMinmaxSingleComponentFormats"
     filterMinmaxSingleComponentFormats :: Bool
-  , -- | #extension-limits-filterMinmaxImageComponentMapping#
-    -- @filterMinmaxImageComponentMapping@ is a boolean value indicating
-    -- whether the implementation supports non-identity component mapping of
-    -- the image when doing min\/max filtering.
+  , -- No documentation found for Nested "VkPhysicalDeviceSamplerFilterMinmaxProperties" "filterMinmaxImageComponentMapping"
     filterMinmaxImageComponentMapping :: Bool
   }
   deriving (Typeable, Eq)
@@ -147,7 +186,11 @@
 -- If this structure is not present, @reductionMode@ is considered to be
 -- 'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.Sampler.SamplerCreateInfo'
 --
 -- = See Also
 --
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
@@ -41,12 +41,22 @@
 -- structure passed to
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
 -- it is filled in to indicate whether each corresponding feature is
--- supported. 'PhysicalDeviceScalarBlockLayoutFeatures' /can/ also be used
--- in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceScalarBlockLayoutFeatures', it /must/ add an instance of
+-- the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_scalar_block_layout VK_EXT_scalar_block_layout>,
@@ -57,7 +67,7 @@
   { -- | #extension-features-scalarBlockLayout# @scalarBlockLayout@ indicates
     -- that the implementation supports the layout of resource blocks in
     -- shaders using
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-alignment-requirements scalar alignment>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/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_EXT_separate_stencil_usage.hs b/src/Vulkan/Core12/Promoted_From_VK_EXT_separate_stencil_usage.hs
--- a/src/Vulkan/Core12/Promoted_From_VK_EXT_separate_stencil_usage.hs
+++ b/src/Vulkan/Core12/Promoted_From_VK_EXT_separate_stencil_usage.hs
@@ -77,6 +77,14 @@
 -- -   #VUID-VkImageStencilUsageCreateInfo-stencilUsage-requiredbitmask#
 --     @stencilUsage@ /must/ not be @0@
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Image.ImageCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceImageFormatInfo2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_separate_stencil_usage VK_EXT_separate_stencil_usage>,
diff --git a/src/Vulkan/Core12/Promoted_From_VK_KHR_8bit_storage.hs b/src/Vulkan/Core12/Promoted_From_VK_KHR_8bit_storage.hs
--- a/src/Vulkan/Core12/Promoted_From_VK_KHR_8bit_storage.hs
+++ b/src/Vulkan/Core12/Promoted_From_VK_KHR_8bit_storage.hs
@@ -41,12 +41,22 @@
 -- structure passed to
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
 -- it is filled in to indicate whether each corresponding feature is
--- supported. 'PhysicalDevice8BitStorageFeatures' /can/ also be used in the
--- @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to selectively
--- enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDevice8BitStorageFeatures', it /must/ add an instance of the
+-- structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_8bit_storage VK_KHR_8bit_storage>,
@@ -58,23 +68,37 @@
     -- indicates whether objects in the @StorageBuffer@,
     -- @ShaderRecordBufferKHR@, or @PhysicalStorageBuffer@ storage class with
     -- the @Block@ decoration /can/ have 8-bit integer members. If this feature
-    -- is not enabled, 8-bit integer members /must/ not be used in such
-    -- objects. This also indicates whether shader modules /can/ declare the
+    -- is not enabled, 8-bit integer members /must/ not be used in such objects
+    -- unless
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-shaderUntypedPointers shaderUntypedPointer>
+    -- is enabled and they are accessed in 32-bit multiples or 16-bit multiples
+    -- if
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#extension-features-storageBuffer16BitAccess storageBuffer16BitAccess>
+    -- is enabled. This also indicates whether shader modules /can/ declare the
     -- @StorageBuffer8BitAccess@ capability.
     storageBuffer8BitAccess :: Bool
   , -- | #extension-features-uniformAndStorageBuffer8BitAccess#
     -- @uniformAndStorageBuffer8BitAccess@ indicates whether objects in the
     -- @Uniform@ storage class with the @Block@ decoration /can/ have 8-bit
     -- integer members. If this feature is not enabled, 8-bit integer members
-    -- /must/ not be used in such objects. This also indicates whether shader
-    -- modules /can/ declare the @UniformAndStorageBuffer8BitAccess@
-    -- capability.
+    -- /must/ not be used in such objects unless
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-shaderUntypedPointers shaderUntypedPointers>
+    -- is enabled and they are accessed in 32-bit multiples or 16-bit multiples
+    -- if
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#extension-features-uniformAndStorageBuffer16BitAccess uniformAndStorageBuffer16BitAccess>
+    -- is enabled. This also indicates whether shader modules /can/ declare the
+    -- @UniformAndStorageBuffer8BitAccess@ capability.
     uniformAndStorageBuffer8BitAccess :: Bool
   , -- | #extension-features-storagePushConstant8# @storagePushConstant8@
     -- indicates whether objects in the @PushConstant@ storage class /can/ have
     -- 8-bit integer members. If this feature is not enabled, 8-bit integer
-    -- members /must/ not be used in such objects. This also indicates whether
-    -- shader modules /can/ declare the @StoragePushConstant8@ capability.
+    -- members /must/ not be used in such objects unless
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-shaderUntypedPointers shaderUntypedPointers>
+    -- is enabled and they are accessed in 32-bit multiples or 16-bit multiples
+    -- if
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#extension-features-storagePushConstant16 storagePushConstant16>
+    -- is enabled. This also indicates whether shader modules /can/ declare the
+    -- @StoragePushConstant8@ capability.
     storagePushConstant8 :: Bool
   }
   deriving (Typeable, Eq)
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,19 @@
 -- == Valid Usage
 --
 -- -   #VUID-vkGetBufferOpaqueCaptureAddress-None-03326# The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-bufferDeviceAddress bufferDeviceAddress>
---     feature /must/ be enabled
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-bufferDeviceAddress bufferDeviceAddress>
+--     and
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-bufferDeviceAddressCaptureReplay bufferDeviceAddressCaptureReplay>
+--     features /must/ be enabled
 --
+-- -   #VUID-vkGetBufferOpaqueCaptureAddress-pInfo-10725# @pInfo->buffer@
+--     /must/ have been created with the
+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT'
+--     flag
+--
 -- -   #VUID-vkGetBufferOpaqueCaptureAddress-device-03327# If @device@ was
 --     created with multiple physical devices, then the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-bufferDeviceAddressMultiDevice bufferDeviceAddressMultiDevice>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-bufferDeviceAddressMultiDevice bufferDeviceAddressMultiDevice>
 --     feature /must/ be enabled
 --
 -- == Valid Usage (Implicit)
@@ -149,18 +156,13 @@
 --
 -- = Description
 --
--- The 64-bit return value is an address of the start of @pInfo->buffer@.
--- The address range starting at this value and whose size is the size of
--- the buffer /can/ be used in a shader to access the memory bound to that
--- buffer, using the @SPV_KHR_physical_storage_buffer@ extension or the
--- equivalent @SPV_EXT_physical_storage_buffer@ extension and the
--- @PhysicalStorageBuffer@ storage class. For example, this value /can/ be
--- stored in a uniform buffer, and the shader /can/ read the value from the
--- uniform buffer and use it to do a dependent read\/write to this buffer.
+-- The 64-bit return value, @bufferBaseAddress@, is an address of the start
+-- of @pInfo->buffer@. Addresses in the range [@bufferBaseAddress@,
+-- @bufferBaseAddress@ + 'Vulkan.Core10.Buffer.BufferCreateInfo'::@size@)
+-- /can/ be used to access the memory bound to this buffer on the device.
+--
 -- A value of zero is reserved as a “null” pointer and /must/ not be
--- returned as a valid buffer device address. All loads, stores, and
--- atomics in a shader through @PhysicalStorageBuffer@ pointers /must/
--- access addresses in the address range of some buffer.
+-- returned as a valid buffer device address.
 --
 -- If the buffer was created with a non-zero value of
 -- 'BufferOpaqueCaptureAddressCreateInfo'::@opaqueCaptureAddress@ or
@@ -184,16 +186,28 @@
 -- == Valid Usage
 --
 -- -   #VUID-vkGetBufferDeviceAddress-bufferDeviceAddress-03324# The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-bufferDeviceAddress bufferDeviceAddress>
---     or
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-bufferDeviceAddressEXT ::bufferDeviceAddress>
---     feature /must/ be enabled
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-bufferDeviceAddress bufferDeviceAddress>
+--     feature or the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-bufferDeviceAddressEXT ::bufferDeviceAddress>
+--     feature /must/ be enabled, and at least one of the following
+--     conditions /must/ be met
 --
+--     -   @buffer@ is sparse
+--
+--     -   @buffer@ is bound completely and contiguously to a single
+--         'Vulkan.Core10.Handles.DeviceMemory' object
+--
+--     -   @buffer@ was created with the
+--         'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT'
+--         flag and the
+--         <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-bufferDeviceAddressEXT ::bufferDeviceAddress>
+--         feature is enabled on the device
+--
 -- -   #VUID-vkGetBufferDeviceAddress-device-03325# If @device@ was created
 --     with multiple physical devices, then the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-bufferDeviceAddressMultiDevice bufferDeviceAddressMultiDevice>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-bufferDeviceAddressMultiDevice bufferDeviceAddressMultiDevice>
 --     or
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-bufferDeviceAddressMultiDeviceEXT ::bufferDeviceAddressMultiDevice>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-bufferDeviceAddressMultiDeviceEXT ::bufferDeviceAddressMultiDevice>
 --     feature /must/ be enabled
 --
 -- == Valid Usage (Implicit)
@@ -206,6 +220,7 @@
 --
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_buffer_device_address VK_EXT_buffer_device_address>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_buffer_device_address VK_KHR_buffer_device_address>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_2 VK_VERSION_1_2>,
 -- 'BufferDeviceAddressInfo', 'Vulkan.Core10.Handles.Device'
@@ -255,12 +270,19 @@
 -- == Valid Usage
 --
 -- -   #VUID-vkGetDeviceMemoryOpaqueCaptureAddress-None-03334# The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-bufferDeviceAddress bufferDeviceAddress>
---     feature /must/ be enabled
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-bufferDeviceAddress bufferDeviceAddress>
+--     and
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-bufferDeviceAddressCaptureReplay bufferDeviceAddressCaptureReplay>
+--     features /must/ be enabled
 --
+-- -   #VUID-vkGetDeviceMemoryOpaqueCaptureAddress-pInfo-10727#
+--     @pInfo->memory@ /must/ have been allocated using the
+--     'Vulkan.Core11.Enums.MemoryAllocateFlagBits.MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT'
+--     flag
+--
 -- -   #VUID-vkGetDeviceMemoryOpaqueCaptureAddress-device-03335# If
 --     @device@ was created with multiple physical devices, then the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-bufferDeviceAddressMultiDevice bufferDeviceAddressMultiDevice>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-bufferDeviceAddressMultiDevice bufferDeviceAddressMultiDevice>
 --     feature /must/ be enabled
 --
 -- == Valid Usage (Implicit)
@@ -318,12 +340,22 @@
 -- structure passed to
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
 -- it is filled in to indicate whether each corresponding feature is
--- supported. 'PhysicalDeviceBufferDeviceAddressFeatures' /can/ also be
--- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceBufferDeviceAddressFeatures', it /must/ add an instance
+-- of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_buffer_device_address VK_KHR_buffer_device_address>,
@@ -400,41 +432,28 @@
 -- | VkBufferDeviceAddressInfo - Structure specifying the buffer to query an
 -- address for
 --
--- == Valid Usage
---
--- -   #VUID-VkBufferDeviceAddressInfo-buffer-02600# If @buffer@ is
---     non-sparse and was not created with the
---     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT'
---     flag, then it /must/ be bound completely and contiguously to a
---     single 'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-VkBufferDeviceAddressInfo-buffer-02601# @buffer@ /must/ have
---     been created with
---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT'
---
 -- == Valid Usage (Implicit)
 --
--- -   #VUID-VkBufferDeviceAddressInfo-sType-sType# @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO'
---
--- -   #VUID-VkBufferDeviceAddressInfo-pNext-pNext# @pNext@ /must/ be
---     @NULL@
---
--- -   #VUID-VkBufferDeviceAddressInfo-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_EXT_buffer_device_address VK_EXT_buffer_device_address>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_buffer_device_address VK_KHR_buffer_device_address>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_2 VK_VERSION_1_2>,
 -- 'Vulkan.Core10.Handles.Buffer',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'getBufferDeviceAddress',
--- 'Vulkan.Extensions.VK_EXT_buffer_device_address.getBufferDeviceAddressEXT',
--- 'Vulkan.Extensions.VK_KHR_buffer_device_address.getBufferDeviceAddressKHR',
--- 'getBufferOpaqueCaptureAddress',
--- 'Vulkan.Extensions.VK_KHR_buffer_device_address.getBufferOpaqueCaptureAddressKHR'
+-- 'getBufferDeviceAddress', 'getBufferDeviceAddress',
+-- 'getBufferDeviceAddress', 'getBufferOpaqueCaptureAddress',
+-- 'getBufferOpaqueCaptureAddress'
 data BufferDeviceAddressInfo = BufferDeviceAddressInfo
   { -- | @buffer@ specifies the buffer whose address is being queried.
+    --
+    -- #VUID-VkBufferDeviceAddressInfo-buffer-02601# @buffer@ /must/ have been
+    -- created with the
+    -- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT'
+    -- usage flag set
+    --
+    -- #VUID-VkBufferDeviceAddressInfo-buffer-parameter# @buffer@ /must/ be a
+    -- valid 'Vulkan.Core10.Handles.Buffer' handle
     buffer :: Buffer }
   deriving (Typeable, Eq)
 #if defined(GENERIC_INSTANCES)
@@ -488,9 +507,9 @@
 -- If this structure is not present, it is as if @opaqueCaptureAddress@ is
 -- zero.
 --
--- Apps /should/ avoid creating buffers with app-provided addresses and
--- implementation-provided addresses in the same process, to reduce the
--- likelihood of
+-- Applications /should/ avoid creating buffers with application-provided
+-- addresses and implementation-provided addresses in the same process, to
+-- reduce the likelihood of
 -- 'Vulkan.Core10.Enums.Result.ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS'
 -- errors.
 --
@@ -506,13 +525,17 @@
 --
 -- Implementations are expected to separate such buffers in the GPU address
 -- space so normal allocations will avoid using these addresses.
--- Apps\/tools should avoid mixing app-provided and implementation-provided
--- addresses for buffers created with
+-- Applications and tools should avoid mixing application-provided and
+-- implementation-provided addresses for buffers created with
 -- 'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT',
 -- to avoid address space allocation conflicts.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.Buffer.BufferCreateInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_buffer_device_address VK_KHR_buffer_device_address>,
@@ -585,8 +608,12 @@
 -- If this structure is not present, it is as if @opaqueCaptureAddress@ is
 -- zero.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.Memory.MemoryAllocateInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_buffer_device_address VK_KHR_buffer_device_address>,
@@ -646,7 +673,7 @@
 -- 'Vulkan.Core10.Handles.DeviceMemory',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType',
 -- 'getDeviceMemoryOpaqueCaptureAddress',
--- 'Vulkan.Extensions.VK_KHR_buffer_device_address.getDeviceMemoryOpaqueCaptureAddressKHR'
+-- 'getDeviceMemoryOpaqueCaptureAddress'
 data DeviceMemoryOpaqueCaptureAddressInfo = DeviceMemoryOpaqueCaptureAddressInfo
   { -- | @memory@ specifies the memory whose address is being queried.
     --
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
@@ -94,6 +94,7 @@
 import Vulkan.Core10.Enums.ImageAspectFlagBits (ImageAspectFlags)
 import Vulkan.Core10.Enums.ImageLayout (ImageLayout)
 import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_synchronization2 (MemoryBarrier2)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance8 (MemoryBarrierAccessFlags3KHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled (MultisampledRenderToSingleSampledInfoEXT)
 import Vulkan.CStruct.Extends (PeekChain)
 import Vulkan.CStruct.Extends (PeekChain(..))
@@ -108,7 +109,9 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_subpass_merge_feedback (RenderPassCreationControlEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_subpass_merge_feedback (RenderPassCreationFeedbackCreateInfoEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_fragment_density_map (RenderPassFragmentDensityMapCreateInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_fragment_density_map_offset (RenderPassFragmentDensityMapOffsetEndInfoEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_subpass_merge_feedback (RenderPassSubpassFeedbackCreateInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_tile_shading (RenderPassTileShadingCreateInfoQCOM)
 import Vulkan.Core10.Enums.Result (Result)
 import Vulkan.Core10.Enums.Result (Result(..))
 import Vulkan.Core10.Enums.SampleCountFlagBits (SampleCountFlagBits)
@@ -117,7 +120,7 @@
 import Vulkan.Core10.Enums.SubpassContents (SubpassContents)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve (SubpassDescriptionDepthStencilResolve)
 import Vulkan.Core10.Enums.SubpassDescriptionFlagBits (SubpassDescriptionFlags)
-import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_fragment_density_map_offset (SubpassFragmentDensityMapOffsetEndInfoQCOM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_tile_memory_heap (TileMemorySizeInfoQCOM)
 import Vulkan.Exception (VulkanException(..))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2))
@@ -150,6 +153,11 @@
 --     least one queue family with the
 --     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' capability
 --
+-- -   #VUID-vkCreateRenderPass2-flags-10649#
+--     'Vulkan.Extensions.VK_QCOM_tile_shading.RenderPassTileShadingCreateInfoQCOM'::@flags@
+--     /must/ not include
+--     'Vulkan.Extensions.VK_QCOM_tile_shading.TILE_SHADING_RENDER_PASS_PER_TILE_EXECUTION_BIT_QCOM'
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-vkCreateRenderPass2-device-parameter# @device@ /must/ be a
@@ -175,10 +183,14 @@
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_create_renderpass2 VK_KHR_create_renderpass2>,
@@ -194,7 +206,7 @@
                      -- describing the parameters of the render pass.
                      (RenderPassCreateInfo2 a)
                   -> -- | @pAllocator@ controls host memory allocation as described in the
-                     -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                     -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
                      -- chapter.
                      ("allocator" ::: Maybe AllocationCallbacks)
                   -> io (RenderPass)
@@ -248,8 +260,9 @@
 --     '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
+--     have been created with the
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT'
+--     usage flag set
 --
 -- -   #VUID-vkCmdBeginRenderPass2-initialLayout-03096# If any of the
 --     @initialLayout@ or @finalLayout@ member of the
@@ -264,8 +277,9 @@
 --     '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
+--     have been created with the
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'
+--     usage flag set
 --
 -- -   #VUID-vkCmdBeginRenderPass2-initialLayout-02844# If any of the
 --     @initialLayout@ or @finalLayout@ member of the
@@ -281,8 +295,9 @@
 --     '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
+--     have been created with the
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'
+--     usage flag set
 --
 -- -   #VUID-vkCmdBeginRenderPass2-stencilInitialLayout-02845# If any of
 --     the @stencilInitialLayout@ or @stencilFinalLayout@ member of the
@@ -296,8 +311,9 @@
 --     '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
+--     have been created with the
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'
+--     usage flag set
 --
 -- -   #VUID-vkCmdBeginRenderPass2-initialLayout-03097# If any of the
 --     @initialLayout@ or @finalLayout@ member of the
@@ -308,9 +324,10 @@
 --     '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
+--     have been created with the
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT' or
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT'
+--     usage flags set
 --
 -- -   #VUID-vkCmdBeginRenderPass2-initialLayout-03098# If any of the
 --     @initialLayout@ or @finalLayout@ member of the
@@ -321,8 +338,9 @@
 --     '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
+--     have been created with the
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_SRC_BIT'
+--     usage flag set
 --
 -- -   #VUID-vkCmdBeginRenderPass2-initialLayout-03099# If any of the
 --     @initialLayout@ or @finalLayout@ member of the
@@ -333,8 +351,9 @@
 --     '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
+--     have been created with the
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'
+--     usage flag set
 --
 -- -   #VUID-vkCmdBeginRenderPass2-initialLayout-03100# If the
 --     @initialLayout@ member of any of the
@@ -385,14 +404,14 @@
 --     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
 --     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 either the
+--     have been created with either the
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT'
 --     or
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'
---     and either the
+--     usage flags set, and either the
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT'
 --     or 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT'
---     usage bits
+--     usage flags set
 --
 -- -   #VUID-vkCmdBeginRenderPass2-initialLayout-07003# If any of the
 --     @initialLayout@ or @finalLayout@ member of the
@@ -403,9 +422,9 @@
 --     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
 --     then the corresponding attachment image view of the framebuffer
 --     specified in the @framebuffer@ member of @pRenderPassBegin@ /must/
---     have been created with a @usage@ value the
+--     have been created with the
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT'
---     usage bit
+--     usage flag set
 --
 -- -   #VUID-vkCmdBeginRenderPass2-initialLayout-09538# If any of the
 --     @initialLayout@ or @finalLayout@ member of the
@@ -413,18 +432,27 @@
 --     @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_RENDERING_LOCAL_READ_KHR'
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_RENDERING_LOCAL_READ'
 --     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 either
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_STORAGE_BIT', or
---     both
+--     have been created with either the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_STORAGE_BIT'
+--     usage flag set, or both the
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT'
---     and either of
+--     and either of the
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT'
 --     or
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'
+--     usage flags set
 --
+-- -   #VUID-vkCmdBeginRenderPass2-flags-10652# If
+--     'Vulkan.Extensions.VK_QCOM_tile_shading.TILE_SHADING_RENDER_PASS_ENABLE_BIT_QCOM'
+--     was included in the
+--     'Vulkan.Extensions.VK_QCOM_tile_shading.RenderPassTileShadingCreateInfoQCOM'::@flags@
+--     used to create the @renderPass@, @commandBuffer@ /must/ not have
+--     been recorded with
+--     'Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT'
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-vkCmdBeginRenderPass2-commandBuffer-parameter# @commandBuffer@
@@ -444,11 +472,15 @@
 --
 -- -   #VUID-vkCmdBeginRenderPass2-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdBeginRenderPass2-renderpass# This command /must/ only be
 --     called outside of a render pass instance
 --
+-- -   #VUID-vkCmdBeginRenderPass2-suspended# This command /must/ not be
+--     called between suspended render pass instances
+--
 -- -   #VUID-vkCmdBeginRenderPass2-videocoding# This command /must/ only be
 --     called outside of a video coding scope
 --
@@ -469,11 +501,16 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | Graphics                                                                                                              | Action                                                                                                                                 |
+-- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | Action                                                                                                                                 |
 -- |                                                                                                                            |                                                                                                                        |                                                                                                                             |                                                                                                                       | State                                                                                                                                  |
 -- |                                                                                                                            |                                                                                                                        |                                                                                                                             |                                                                                                                       | Synchronization                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdBeginRenderPass2 is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_create_renderpass2 VK_KHR_create_renderpass2>,
@@ -488,7 +525,9 @@
                     -> -- | @pRenderPassBegin@ is a pointer to a
                        -- 'Vulkan.Core10.CommandBufferBuilding.RenderPassBeginInfo' structure
                        -- specifying the render pass to begin an instance of, and the framebuffer
-                       -- the instance uses.
+                       -- the instance uses. After recording this command, the render pass and
+                       -- framebuffer /may/ be accessed at any point that @commandBuffer@ is in
+                       -- the recording or pending state until it is reset.
                        (RenderPassBeginInfo a)
                     -> -- | @pSubpassBeginInfo@ is a pointer to a 'SubpassBeginInfo' structure
                        -- containing information about the subpass which is about to begin
@@ -569,11 +608,15 @@
 --
 -- -   #VUID-vkCmdNextSubpass2-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdNextSubpass2-renderpass# This command /must/ only be
 --     called inside of a render pass instance
 --
+-- -   #VUID-vkCmdNextSubpass2-suspended# This command /must/ not be called
+--     between suspended render pass instances
+--
 -- -   #VUID-vkCmdNextSubpass2-videocoding# This command /must/ only be
 --     called outside of a video coding scope
 --
@@ -594,11 +637,16 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Inside                                                                                                                 | Outside                                                                                                                     | Graphics                                                                                                              | Action                                                                                                                                 |
+-- | Primary                                                                                                                    | Inside                                                                                                                 | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | Action                                                                                                                                 |
 -- |                                                                                                                            |                                                                                                                        |                                                                                                                             |                                                                                                                       | State                                                                                                                                  |
 -- |                                                                                                                            |                                                                                                                        |                                                                                                                             |                                                                                                                       | Synchronization                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdNextSubpass2 is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_create_renderpass2 VK_KHR_create_renderpass2>,
@@ -648,6 +696,29 @@
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdEndRenderPass', except that it
 -- is extensible.
 --
+-- There is no implicit ordering between separate render passes, even in
+-- the same command buffer, and even when the attachments match. Some
+-- applications rely on the continuation of
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-order rasterization order>
+-- between multiple render passes with attachments defined in the same way,
+-- in order to perform non-rendering operations (such as copies or compute
+-- operations) between draw calls, but this has never been required by the
+-- specification. There is also no explicit barrier currently in the API
+-- that provides the guarantee that applications rely on without additional
+-- performance penalties.
+--
+-- New applications should avoid relying on this ordering until an
+-- appropriate barrier is added to the API.
+--
+-- Implementations where applications are performing this splitting are
+-- encouraged to continue supporting this guarantee until a suitable
+-- barrier is added to the API.
+--
+-- Existing applications relying on this ordering should expect that it
+-- will continue working on platforms where it currently does. Once a new
+-- extension adds support for a new barrier, developers are encouraged to
+-- adapt their applications to use this when available.
+--
 -- == Valid Usage
 --
 -- -   #VUID-vkCmdEndRenderPass2-None-03103# The current subpass index
@@ -682,11 +753,15 @@
 --
 -- -   #VUID-vkCmdEndRenderPass2-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdEndRenderPass2-renderpass# This command /must/ only be
 --     called inside of a render pass instance
 --
+-- -   #VUID-vkCmdEndRenderPass2-suspended# This command /must/ not be
+--     called between suspended render pass instances
+--
 -- -   #VUID-vkCmdEndRenderPass2-videocoding# This command /must/ only be
 --     called outside of a video coding scope
 --
@@ -707,11 +782,16 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Inside                                                                                                                 | Outside                                                                                                                     | Graphics                                                                                                              | Action                                                                                                                                 |
+-- | Primary                                                                                                                    | Inside                                                                                                                 | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | Action                                                                                                                                 |
 -- |                                                                                                                            |                                                                                                                        |                                                                                                                             |                                                                                                                       | State                                                                                                                                  |
 -- |                                                                                                                            |                                                                                                                        |                                                                                                                             |                                                                                                                       | Synchronization                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdEndRenderPass2 is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_create_renderpass2 VK_KHR_create_renderpass2>,
@@ -748,7 +828,7 @@
 -- those parameters.
 --
 -- If the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-separateDepthStencilLayouts separateDepthStencilLayouts>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -790,7 +870,8 @@
 -- -   #VUID-VkAttachmentDescription2-finalLayout-00843# @finalLayout@
 --     /must/ not be
 --     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_UNDEFINED' or
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_PREINITIALIZED'
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ZERO_INITIALIZED_EXT'
+--     or 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_PREINITIALIZED'
 --
 -- -   #VUID-VkAttachmentDescription2-format-03280# If @format@ is a color
 --     format, @initialLayout@ /must/ not be
@@ -924,14 +1005,46 @@
 --     the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingLocalRead dynamicRenderingLocalRead>
 --     feature is not enabled, @initialLayout@ /must/ not be
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_RENDERING_LOCAL_READ_KHR'
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_RENDERING_LOCAL_READ'
 --
 -- -   #VUID-VkAttachmentDescription2-dynamicRenderingLocalRead-09545# If
 --     the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingLocalRead dynamicRenderingLocalRead>
 --     feature is not enabled, @finalLayout@ /must/ not be
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_RENDERING_LOCAL_READ_KHR'
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_RENDERING_LOCAL_READ'
 --
+-- -   #VUID-VkAttachmentDescription2-flags-11773# If @flags@ includes
+--     'Vulkan.Core10.Enums.AttachmentDescriptionFlagBits.ATTACHMENT_DESCRIPTION_RESOLVE_SKIP_TRANSFER_FUNCTION_BIT_KHR',
+--     @flags@ /must/ not include
+--     'Vulkan.Core10.Enums.AttachmentDescriptionFlagBits.ATTACHMENT_DESCRIPTION_RESOLVE_ENABLE_TRANSFER_FUNCTION_BIT_KHR'
+--
+-- -   #VUID-VkAttachmentDescription2-flags-11774# If @flags@ includes
+--     'Vulkan.Core10.Enums.AttachmentDescriptionFlagBits.ATTACHMENT_DESCRIPTION_RESOLVE_SKIP_TRANSFER_FUNCTION_BIT_KHR'
+--     or
+--     'Vulkan.Core10.Enums.AttachmentDescriptionFlagBits.ATTACHMENT_DESCRIPTION_RESOLVE_ENABLE_TRANSFER_FUNCTION_BIT_KHR',
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-resolveSrgbFormatSupportsTransferFunctionControl resolveSrgbFormatSupportsTransferFunctionControl>
+--     /must/ be 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-VkAttachmentDescription2-flags-11775# If @flags@ includes
+--     'Vulkan.Core10.Enums.AttachmentDescriptionFlagBits.ATTACHMENT_DESCRIPTION_RESOLVE_SKIP_TRANSFER_FUNCTION_BIT_KHR'
+--     or
+--     'Vulkan.Core10.Enums.AttachmentDescriptionFlagBits.ATTACHMENT_DESCRIPTION_RESOLVE_ENABLE_TRANSFER_FUNCTION_BIT_KHR',
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance10 maintenance10>
+--     /must/ be enabled
+--
+-- -   #VUID-VkAttachmentDescription2-flags-11776# If @flags@ includes
+--     'Vulkan.Core10.Enums.AttachmentDescriptionFlagBits.ATTACHMENT_DESCRIPTION_RESOLVE_SKIP_TRANSFER_FUNCTION_BIT_KHR'
+--     or
+--     'Vulkan.Core10.Enums.AttachmentDescriptionFlagBits.ATTACHMENT_DESCRIPTION_RESOLVE_ENABLE_TRANSFER_FUNCTION_BIT_KHR',
+--     @format@ /must/ use sRGB encoding
+--
+-- -   #VUID-VkAttachmentDescription2-flags-11777# If @flags@ includes
+--     'Vulkan.Core10.Enums.AttachmentDescriptionFlagBits.ATTACHMENT_DESCRIPTION_RESOLVE_SKIP_TRANSFER_FUNCTION_BIT_KHR'
+--     or
+--     'Vulkan.Core10.Enums.AttachmentDescriptionFlagBits.ATTACHMENT_DESCRIPTION_RESOLVE_ENABLE_TRANSFER_FUNCTION_BIT_KHR',
+--     @samples@ /must/ be
+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'
+--
 -- -   #VUID-VkAttachmentDescription2-pNext-06704# If the @pNext@ chain
 --     does not include a
 --     'Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts.AttachmentDescriptionStencilLayout'
@@ -990,7 +1103,7 @@
 --     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL'
 --
 -- -   #VUID-VkAttachmentDescription2-format-09332# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-externalFormatResolve externalFormatResolve>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-externalFormatResolve externalFormatResolve>
 --     feature is not enabled, @format@ /must/ not be
 --     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
 --
@@ -1008,12 +1121,13 @@
 -- -   #VUID-VkAttachmentDescription2-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.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts.AttachmentDescriptionStencilLayout'
+--     'Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts.AttachmentDescriptionStencilLayout',
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID',
 --     or
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkExternalFormatOHOS VkExternalFormatOHOS>
 --
 -- -   #VUID-VkAttachmentDescription2-sType-unique# The @sType@ value of
---     each struct in the @pNext@ chain /must/ be unique
+--     each structure in the @pNext@ chain /must/ be unique
 --
 -- -   #VUID-VkAttachmentDescription2-flags-parameter# @flags@ /must/ be a
 --     valid combination of
@@ -1203,7 +1317,7 @@
 -- other than an input attachment reference.
 --
 -- If the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-separateDepthStencilLayouts separateDepthStencilLayouts>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -1220,6 +1334,7 @@
 -- -   #VUID-VkAttachmentReference2-layout-03077# If @attachment@ is not
 --     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED', @layout@ /must/ not
 --     be 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_UNDEFINED',
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ZERO_INITIALIZED_EXT',
 --     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_PREINITIALIZED', or
 --     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_PRESENT_SRC_KHR'
 --
@@ -1251,7 +1366,7 @@
 -- -   #VUID-VkAttachmentReference2-dynamicRenderingLocalRead-09546# If the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingLocalRead dynamicRenderingLocalRead>
 --     feature is not enabled, @layout@ /must/ not be
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_RENDERING_LOCAL_READ_KHR'
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_RENDERING_LOCAL_READ'
 --
 -- == Valid Usage (Implicit)
 --
@@ -1263,7 +1378,7 @@
 --     'Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts.AttachmentReferenceStencilLayout'
 --
 -- -   #VUID-VkAttachmentReference2-sType-unique# The @sType@ value of each
---     struct in the @pNext@ chain /must/ be unique
+--     structure in the @pNext@ chain /must/ be unique
 --
 -- -   #VUID-VkAttachmentReference2-layout-parameter# @layout@ /must/ be a
 --     valid 'Vulkan.Core10.Enums.ImageLayout.ImageLayout' value
@@ -1376,7 +1491,7 @@
 -- <VkResolveModeFlagBits.html >.
 --
 -- If the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-nullColorAttachmentWithExternalFormatResolve nullColorAttachmentWithExternalFormatResolve>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-nullColorAttachmentWithExternalFormatResolve nullColorAttachmentWithExternalFormatResolve>
 -- limit is 'Vulkan.Core10.FundamentalTypes.TRUE', values in the color
 -- attachment will be loaded from the resolve attachment at the start of
 -- rendering, and /may/ also be reloaded any time after a resolve occurs or
@@ -1390,12 +1505,12 @@
 -- Setting the color attachment to
 -- 'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' when an external resolve
 -- attachment is used and the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-nullColorAttachmentWithExternalFormatResolve nullColorAttachmentWithExternalFormatResolve>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-nullColorAttachmentWithExternalFormatResolve nullColorAttachmentWithExternalFormatResolve>
 -- limit is 'Vulkan.Core10.FundamentalTypes.TRUE' will not result in color
 -- attachment writes to be discarded for that attachment.
 --
 -- When
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-nullColorAttachmentWithExternalFormatResolve nullColorAttachmentWithExternalFormatResolve>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-nullColorAttachmentWithExternalFormatResolve nullColorAttachmentWithExternalFormatResolve>
 -- is 'Vulkan.Core10.FundamentalTypes.TRUE', the color output from the
 -- subpass can still be read via an input attachment; but the application
 -- cannot bind an image view for the color attachment as there is no such
@@ -1464,7 +1579,7 @@
 --
 -- -   #VUID-VkSubpassDescription2-attachment-06915# If the @attachment@
 --     member of @pDepthStencilAttachment@ is not
---     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED', ts @layout@ member
+--     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED', its @layout@ member
 --     /must/ not be
 --     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL'
 --     or
@@ -1532,6 +1647,26 @@
 --     /must/ not be
 --     'Vulkan.Extensions.VK_KHR_synchronization2.IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR'
 --
+-- -   #VUID-VkSubpassDescription2-flags-10683# If @flags@ includes
+--     'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_TILE_SHADING_APRON_BIT_QCOM',
+--     the render pass /must/ have been created with a
+--     'Vulkan.Extensions.VK_QCOM_tile_shading.RenderPassTileShadingCreateInfoQCOM'::@tileApronSize@
+--     greater than @(0,0)@
+--
+-- -   #VUID-VkSubpassDescription2-inputAttachmentCount-12293#
+--     @inputAttachmentCount@ /must/ be less than or equal to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxPerStageDescriptorInputAttachments maxPerStageDescriptorInputAttachments>
+--
+-- -   #VUID-VkSubpassDescription2-colorAttachmentCount-00845#
+--     @colorAttachmentCount@ /must/ be less than or equal to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxColorAttachments maxColorAttachments>
+--
+-- -   #VUID-VkSubpassDescription2-loadOp-00846# If the first use of an
+--     attachment in this render pass is as an input attachment, and the
+--     attachment is not also used as a color or depth\/stencil attachment
+--     in the same subpass, then @loadOp@ /must/ not be
+--     'Vulkan.Core10.Enums.AttachmentLoadOp.ATTACHMENT_LOAD_OP_CLEAR'
+--
 -- -   #VUID-VkSubpassDescription2-attachment-06251# If the @attachment@
 --     member of @pDepthStencilAttachment@ is not
 --     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' and its @pNext@ chain
@@ -1549,16 +1684,6 @@
 --     or
 --     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI'
 --
--- -   #VUID-VkSubpassDescription2-colorAttachmentCount-03063#
---     @colorAttachmentCount@ /must/ be less than or equal to
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxColorAttachments@
---
--- -   #VUID-VkSubpassDescription2-loadOp-03064# If the first use of an
---     attachment in this render pass is as an input attachment, and the
---     attachment is not also used as a color or depth\/stencil attachment
---     in the same subpass, then @loadOp@ /must/ not be
---     'Vulkan.Core10.Enums.AttachmentLoadOp.ATTACHMENT_LOAD_OP_CLEAR'
---
 -- -   #VUID-VkSubpassDescription2-pResolveAttachments-03067# If
 --     @pResolveAttachments@ is not @NULL@, each resolve attachment that is
 --     not 'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' /must/ have a
@@ -1566,7 +1691,7 @@
 --     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'
 --
 -- -   #VUID-VkSubpassDescription2-externalFormatResolve-09335# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-externalFormatResolve externalFormatResolve>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-externalFormatResolve externalFormatResolve>
 --     feature is not enabled and @pResolveAttachments@ is not @NULL@, for
 --     each resolve attachment that does not have the value
 --     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED', the corresponding
@@ -1575,7 +1700,7 @@
 --
 -- -   #VUID-VkSubpassDescription2-nullColorAttachmentWithExternalFormatResolve-09336#
 --     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-nullColorAttachmentWithExternalFormatResolve nullColorAttachmentWithExternalFormatResolve>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-nullColorAttachmentWithExternalFormatResolve nullColorAttachmentWithExternalFormatResolve>
 --     property is 'Vulkan.Core10.FundamentalTypes.FALSE' and
 --     @pResolveAttachments@ is not @NULL@, for each resolve attachment
 --     that has a format of 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED',
@@ -1584,7 +1709,7 @@
 --
 -- -   #VUID-VkSubpassDescription2-nullColorAttachmentWithExternalFormatResolve-09337#
 --     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-nullColorAttachmentWithExternalFormatResolve nullColorAttachmentWithExternalFormatResolve>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-nullColorAttachmentWithExternalFormatResolve nullColorAttachmentWithExternalFormatResolve>
 --     property is 'Vulkan.Core10.FundamentalTypes.TRUE' and
 --     @pResolveAttachments@ is not @NULL@, for each resolve attachment
 --     that has a format of 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED',
@@ -1592,7 +1717,7 @@
 --     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED'
 --
 -- -   #VUID-VkSubpassDescription2-externalFormatResolve-09338# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-externalFormatResolve externalFormatResolve>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-externalFormatResolve externalFormatResolve>
 --     feature is not enabled and @pResolveAttachments@ is not @NULL@, for
 --     each resolve attachment that is not
 --     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED', the corresponding
@@ -1600,14 +1725,14 @@
 --     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'
 --
 -- -   #VUID-VkSubpassDescription2-externalFormatResolve-09339# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-externalFormatResolve externalFormatResolve>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-externalFormatResolve externalFormatResolve>
 --     feature is not enabled, each element of @pResolveAttachments@ /must/
 --     have the same 'Vulkan.Core10.Enums.Format.Format' as its
 --     corresponding color attachment
 --
 -- -   #VUID-VkSubpassDescription2-multisampledRenderToSingleSampled-06869#
 --     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
 --     feature is not enabled, all attachments in @pColorAttachments@ that
 --     are not 'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' /must/ have
 --     the same sample count
@@ -1618,18 +1743,18 @@
 --     following is true:
 --
 --     -   the
---         <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-externalFormatResolve externalFormatResolve>
+--         <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-externalFormatResolve externalFormatResolve>
 --         feature is not enabled
 --
 --     -   the
---         <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-nullColorAttachmentWithExternalFormatResolve nullColorAttachmentWithExternalFormatResolve>
+--         <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-nullColorAttachmentWithExternalFormatResolve nullColorAttachmentWithExternalFormatResolve>
 --         property is 'Vulkan.Core10.FundamentalTypes.FALSE'
 --
 --     -   does not have a non-zero value of
 --         'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
 --
 --     /must/ have image formats whose
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#potential-format-features potential format features>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#potential-format-features potential format features>
 --     contain at least
 --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BIT'
 --     or
@@ -1639,7 +1764,7 @@
 --     in @pColorAttachments@ that are not
 --     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' /must/ have image
 --     formats whose
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#potential-format-features potential format features>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#potential-format-features potential format features>
 --     contain
 --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BIT'
 --
@@ -1648,7 +1773,7 @@
 --     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' and do not have an
 --     image format of 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' /must/
 --     have image formats whose
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#potential-format-features potential format features>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#potential-format-features potential format features>
 --     contain
 --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BIT'
 --
@@ -1656,40 +1781,40 @@
 --     @pDepthStencilAttachment@ is not @NULL@ and the attachment is not
 --     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' then it /must/ have
 --     an image format whose
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#potential-format-features potential format features>
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-linearColorAttachment linearColorAttachment>
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#potential-format-features potential format features>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#potential-format-features potential format features>
 --     /must/ contain
 --     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV'
 --
 -- -   #VUID-VkSubpassDescription2-linearColorAttachment-06500# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-linearColorAttachment linearColorAttachment>
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#potential-format-features potential format features>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#potential-format-features potential format features>
 --     /must/ contain
 --     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV'
 --
 -- -   #VUID-VkSubpassDescription2-linearColorAttachment-06501# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-linearColorAttachment linearColorAttachment>
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#potential-format-features potential format features>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#potential-format-features potential format features>
 --     /must/ contain
 --     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV'
 --
@@ -1734,18 +1859,20 @@
 --     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED'
 --
 -- -   #VUID-VkSubpassDescription2-multisampledRenderToSingleSampled-06872#
---     All attachments in @pDepthStencilAttachment@ or @pColorAttachments@
---     that are not 'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' /must/
---     have the same sample count , if none of the following are enabled:
+--     If none of the following are enabled:
 --
 --     -   The @VK_AMD_mixed_attachment_samples@ extension
 --
 --     -   The @VK_NV_framebuffer_mixed_samples@ extension
 --
 --     -   The
---         <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---         feature,
+--         <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
+--         feature
 --
+--     all attachments in @pDepthStencilAttachment@ and @pColorAttachments@
+--     that are not 'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' /must/
+--     have the same sample count
+--
 -- -   #VUID-VkSubpassDescription2-attachment-03073# Each element of
 --     @pPreserveAttachments@ /must/ not be
 --     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED'
@@ -1791,15 +1918,15 @@
 --     @pColorAttachments@
 --
 -- -   #VUID-VkSubpassDescription2-multiview-06558# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-multiview multiview>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-multiview multiview>
 --     feature is not enabled, @viewMask@ /must/ be @0@
 --
 -- -   #VUID-VkSubpassDescription2-viewMask-06706# The index of the most
 --     significant bit in @viewMask@ /must/ be less than
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxMultiviewViewCount maxMultiviewViewCount>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxMultiviewViewCount maxMultiviewViewCount>
 --
 -- -   #VUID-VkSubpassDescription2-externalFormatResolve-09344# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-externalFormatResolve externalFormatResolve>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-externalFormatResolve externalFormatResolve>
 --     feature is enabled, @pResolveAttachments@ is not @NULL@, and
 --     @colorAttachmentCount@ is not @1@, any element of
 --     @pResolveAttachments@ that is not
@@ -1807,7 +1934,7 @@
 --     format of 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
 --
 -- -   #VUID-VkSubpassDescription2-externalFormatResolve-09345# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-externalFormatResolve externalFormatResolve>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-externalFormatResolve externalFormatResolve>
 --     feature is enabled, @pResolveAttachments@ is not @NULL@, any element
 --     of @pResolveAttachments@ is not
 --     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' and has a format of
@@ -1817,7 +1944,7 @@
 --     /must/ have a @samples@ value of @1@
 --
 -- -   #VUID-VkSubpassDescription2-externalFormatResolve-09346# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-externalFormatResolve externalFormatResolve>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-externalFormatResolve externalFormatResolve>
 --     feature is enabled, @pResolveAttachments@ is not @NULL@, and any
 --     element of @pResolveAttachments@ is not
 --     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' and has a format of
@@ -1825,7 +1952,7 @@
 --     @0@
 --
 -- -   #VUID-VkSubpassDescription2-externalFormatResolve-09347# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-externalFormatResolve externalFormatResolve>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-externalFormatResolve externalFormatResolve>
 --     feature is enabled, @pResolveAttachments@ is not @NULL@, and any
 --     element of @pResolveAttachments@ is not
 --     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' and has a format of
@@ -1836,7 +1963,7 @@
 --     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED'
 --
 -- -   #VUID-VkSubpassDescription2-externalFormatResolve-09348# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-externalFormatResolve externalFormatResolve>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-externalFormatResolve externalFormatResolve>
 --     feature is enabled, @pResolveAttachments@ is not @NULL@, and any
 --     element of @pResolveAttachments@ is not
 --     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' and has a format of
@@ -1845,6 +1972,22 @@
 --     attachment used in this subpass /must/ not include
 --     @VK_IMAGE_ASPECT_PLANE_i_BIT@ for any index /i/ in its @aspectMask@
 --
+-- -   #VUID-VkSubpassDescription2-flags-04907# If @flags@ includes
+--     'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_CUSTOM_RESOLVE_BIT_EXT',
+--     and if @pResolveAttachments@ is not @NULL@, then each resolve
+--     attachment /must/ be 'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED'
+--
+-- -   #VUID-VkSubpassDescription2-flags-04908# If @flags@ includes
+--     'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_CUSTOM_RESOLVE_BIT_EXT',
+--     and if @pDepthStencilResolveAttachment@ is not @NULL@, then the
+--     depth\/stencil resolve attachment /must/ be
+--     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED'
+--
+-- -   #VUID-VkSubpassDescription2-flags-04909# If @flags@ includes
+--     'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_CUSTOM_RESOLVE_BIT_EXT',
+--     then the subpass /must/ be the last subpass in a subpass dependency
+--     chain
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-VkSubpassDescription2-sType-sType# @sType@ /must/ be
@@ -1861,7 +2004,7 @@
 --     'Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve.SubpassDescriptionDepthStencilResolve'
 --
 -- -   #VUID-VkSubpassDescription2-sType-unique# The @sType@ value of each
---     struct in the @pNext@ chain /must/ be unique
+--     structure in the @pNext@ chain /must/ be unique
 --
 -- -   #VUID-VkSubpassDescription2-flags-parameter# @flags@ /must/ be a
 --     valid combination of
@@ -2073,6 +2216,10 @@
 -- @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'.
+-- If either @srcStageMask@ or @dstStageMask@ are set to
+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ALL_COMMANDS_BIT',
+-- it is equivalent to setting
+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ALL_GRAPHICS_BIT'.
 --
 -- == Valid Usage
 --
@@ -2131,6 +2278,11 @@
 --     feature are enabled, @srcStageMask@ /must/ not contain
 --     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR'
 --
+-- -   #VUID-VkSubpassDependency2-srcStageMask-10754# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-accelerationStructure accelerationStructure>
+--     feature is not enabled, @srcStageMask@ /must/ not contain
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
+--
 -- -   #VUID-VkSubpassDependency2-dstStageMask-04090# If the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometryShader>
 --     feature is not enabled, @dstStageMask@ /must/ not contain
@@ -2186,6 +2338,11 @@
 --     feature are enabled, @dstStageMask@ /must/ not contain
 --     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR'
 --
+-- -   #VUID-VkSubpassDependency2-dstStageMask-10754# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-accelerationStructure accelerationStructure>
+--     feature is not enabled, @dstStageMask@ /must/ not contain
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
+--
 -- -   #VUID-VkSubpassDependency2-srcSubpass-03084# @srcSubpass@ /must/ be
 --     less than or equal to @dstSubpass@, unless one of them is
 --     'Vulkan.Core10.APIConstants.SUBPASS_EXTERNAL', to avoid cyclic
@@ -2197,19 +2354,19 @@
 --
 -- -   #VUID-VkSubpassDependency2-srcSubpass-06810# If @srcSubpass@ is
 --     equal to @dstSubpass@ and @srcStageMask@ includes a
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-framebuffer-regions framebuffer-space stage>,
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-framebuffer-regions framebuffer-space stage>,
 --     @dstStageMask@ /must/ only contain
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-framebuffer-regions framebuffer-space stages>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-framebuffer-regions framebuffer-space stages>
 --
 -- -   #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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-access-types-supported table of supported access types>
 --
 -- -   #VUID-VkSubpassDependency2-dependencyFlags-03090# If
 --     @dependencyFlags@ includes
@@ -2225,7 +2382,7 @@
 --
 -- -   #VUID-VkSubpassDependency2-srcSubpass-02245# If @srcSubpass@ equals
 --     @dstSubpass@, and @srcStageMask@ and @dstStageMask@ both include a
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-framebuffer-regions framebuffer-space stage>,
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-framebuffer-regions framebuffer-space stage>,
 --     then @dependencyFlags@ /must/ include
 --     'Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_BY_REGION_BIT'
 --
@@ -2237,17 +2394,24 @@
 --     'Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_VIEW_LOCAL_BIT',
 --     @viewOffset@ /must/ be @0@
 --
+-- -   #VUID-VkSubpassDependency2-dependencyFlags-10204# @dependencyFlags@
+--     /must/ not include
+--     'Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_QUEUE_FAMILY_OWNERSHIP_TRANSFER_USE_ALL_STAGES_BIT_KHR'
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-VkSubpassDependency2-sType-sType# @sType@ /must/ be
 --     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2'
 --
--- -   #VUID-VkSubpassDependency2-pNext-pNext# @pNext@ /must/ be @NULL@ or
---     a pointer to a valid instance of
+-- -   #VUID-VkSubpassDependency2-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.Core13.Promoted_From_VK_KHR_synchronization2.MemoryBarrier2'
+--     or
+--     'Vulkan.Extensions.VK_KHR_maintenance8.MemoryBarrierAccessFlags3KHR'
 --
 -- -   #VUID-VkSubpassDependency2-sType-unique# The @sType@ value of each
---     struct in the @pNext@ chain /must/ be unique
+--     structure in the @pNext@ chain /must/ be unique
 --
 -- -   #VUID-VkSubpassDependency2-srcStageMask-parameter# @srcStageMask@
 --     /must/ be a valid combination of
@@ -2292,20 +2456,28 @@
   , -- | @srcStageMask@ is a bitmask of
     -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'
     -- specifying the
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages-masks source stage mask>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-pipeline-stages-masks source stage mask>.
+    -- If set to
+    -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ALL_COMMANDS_BIT',
+    -- it is equivalent to setting it to
+    -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ALL_GRAPHICS_BIT'.
     srcStageMask :: PipelineStageFlags
   , -- | @dstStageMask@ is a bitmask of
     -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'
     -- specifying the
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages-masks destination stage mask>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-pipeline-stages-masks destination stage mask>
+    -- If set to
+    -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ALL_COMMANDS_BIT',
+    -- it is equivalent to setting it to
+    -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ALL_GRAPHICS_BIT'.
     dstStageMask :: PipelineStageFlags
   , -- | @srcAccessMask@ is a bitmask of
     -- 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits' specifying a
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-access-masks source access mask>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-access-masks source access mask>.
     srcAccessMask :: AccessFlags
   , -- | @dstAccessMask@ is a bitmask of
     -- 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits' specifying a
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-access-masks destination access mask>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-access-masks destination access mask>.
     dstAccessMask :: AccessFlags
   , -- | @dependencyFlags@ is a bitmask of
     -- 'Vulkan.Core10.Enums.DependencyFlagBits.DependencyFlagBits'.
@@ -2326,6 +2498,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 @MemoryBarrierAccessFlags3KHR = Just f
     | Just Refl <- eqT @e @MemoryBarrier2 = Just f
     | otherwise = Nothing
 
@@ -2449,6 +2622,12 @@
 --     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED', then @attachment@
 --     /must/ be less than @attachmentCount@
 --
+-- -   #VUID-VkRenderPassCreateInfo2-fragmentDensityMapLayered-10829# If
+--     the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-fragmentDensityMapLayered fragmentDensityMapLayered>
+--     feature is not enabled, @flags@ /must/ not contain
+--     'Vulkan.Core10.Enums.RenderPassCreateFlagBits.RENDER_PASS_CREATE_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE'
+--
 -- -   #VUID-VkRenderPassCreateInfo2-pSubpasses-06473# If the @pSubpasses@
 --     pNext chain includes a
 --     'Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve.SubpassDescriptionDepthStencilResolve'
@@ -2475,20 +2654,22 @@
 --     or
 --     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL'
 --
--- -   #VUID-VkRenderPassCreateInfo2-pDependencies-03054# For any element
+-- -   #VUID-VkRenderPassCreateInfo2-pDependencies-03054# For each element
 --     of @pDependencies@, if the @srcSubpass@ is not
 --     '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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages-types pipeline>
+--     included in the @srcStageMask@ member of that dependency /must/ be
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ALL_COMMANDS_BIT'
+--     or a pipeline stage supported by the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-pipeline-stages-types pipeline>
 --     identified by the @pipelineBindPoint@ member of the source subpass
 --
--- -   #VUID-VkRenderPassCreateInfo2-pDependencies-03055# For any element
+-- -   #VUID-VkRenderPassCreateInfo2-pDependencies-03055# For each element
 --     of @pDependencies@, if the @dstSubpass@ is not
 --     '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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages-types pipeline>
+--     included in the @dstStageMask@ member of that dependency /must/ be
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ALL_COMMANDS_BIT'
+--     or a pipeline stage supported by the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-pipeline-stages-types pipeline>
 --     identified by the @pipelineBindPoint@ member of the destination
 --     subpass
 --
@@ -2511,7 +2692,7 @@
 --     @pDependencies@ /must/ not include
 --     'Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_VIEW_LOCAL_BIT'
 --
--- -   #VUID-VkRenderPassCreateInfo2-pDependencies-03060# For any element
+-- -   #VUID-VkRenderPassCreateInfo2-pDependencies-03060# For each element
 --     of @pDependencies@ where its @srcSubpass@ member equals its
 --     @dstSubpass@ member, if the @viewMask@ member of the corresponding
 --     element of @pSubpasses@ includes more than one bit, its
@@ -2556,42 +2737,10 @@
 -- -   #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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#potential-format-features potential format features>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#potential-format-features potential format features>
 --     contain
 --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
 --
--- -   #VUID-VkRenderPassCreateInfo2-rasterizationSamples-04905# If the
---     pipeline is being created with fragment shader state, and the
---     @VK_QCOM_render_pass_shader_resolve extension@ is enabled, and if
---     subpass has any input attachments, and if the subpass description
---     contains
---     'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM',
---     then the sample count of the input attachments /must/ equal
---     @rasterizationSamples@
---
--- -   #VUID-VkRenderPassCreateInfo2-sampleShadingEnable-04906# If the
---     pipeline is being created with fragment shader state, and the
---     @VK_QCOM_render_pass_shader_resolve@ extension is enabled, and if
---     the subpass description contains
---     'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM',
---     then @sampleShadingEnable@ /must/ be false
---
--- -   #VUID-VkRenderPassCreateInfo2-flags-04907# If @flags@ includes
---     'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM',
---     and if @pResolveAttachments@ is not @NULL@, then each resolve
---     attachment /must/ be 'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED'
---
--- -   #VUID-VkRenderPassCreateInfo2-flags-04908# If @flags@ includes
---     'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM',
---     and if @pDepthStencilResolveAttachment@ is not @NULL@, then the
---     depth\/stencil resolve attachment /must/ be
---     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED'
---
--- -   #VUID-VkRenderPassCreateInfo2-flags-04909# If @flags@ includes
---     'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM',
---     then the subpass /must/ be the last subpass in a subpass dependency
---     chain
---
 -- -   #VUID-VkRenderPassCreateInfo2-attachment-06244# If the @attachment@
 --     member of the @pDepthStencilAttachment@ member of an element of
 --     @pSubpasses@ is not 'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED',
@@ -2634,6 +2783,25 @@
 --     'Vulkan.Extensions.VK_EXT_fragment_density_map.RenderPassFragmentDensityMapCreateInfoEXT'::@fragmentDensityMapAttachment->attachment@
 --     /must/ be 'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED'
 --
+-- -   #VUID-VkRenderPassCreateInfo2-pResolveAttachments-10650# If any
+--     element of @pResolveAttachments@ of any element of @pSubpasses@
+--     references an attachment description with a format of
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED',
+--     'Vulkan.Extensions.VK_QCOM_tile_shading.TILE_SHADING_RENDER_PASS_ENABLE_BIT_QCOM'
+--     /must/ not be included in
+--     'Vulkan.Extensions.VK_QCOM_tile_shading.RenderPassTileShadingCreateInfoQCOM'::@flags@
+--
+-- -   #VUID-VkRenderPassCreateInfo2-fragmentDensityMapAttachment-10651# If
+--     'Vulkan.Extensions.VK_EXT_fragment_density_map.RenderPassFragmentDensityMapCreateInfoEXT'::@fragmentDensityMapAttachment@
+--     is not 'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED',
+--     'Vulkan.Extensions.VK_QCOM_tile_shading.TILE_SHADING_RENDER_PASS_ENABLE_BIT_QCOM'
+--     /must/ not be included in
+--     'Vulkan.Extensions.VK_QCOM_tile_shading.RenderPassTileShadingCreateInfoQCOM'::@flags@
+--
+-- -   #VUID-VkRenderPassCreateInfo2-None-10916# If any subpass preserves
+--     an attachment, there /must/ be a subpass dependency from a prior
+--     subpass which uses or preserves that attachment
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-VkRenderPassCreateInfo2-sType-sType# @sType@ /must/ be
@@ -2644,11 +2812,13 @@
 --     either @NULL@ or a pointer to a valid instance of
 --     'Vulkan.Extensions.VK_EXT_subpass_merge_feedback.RenderPassCreationControlEXT',
 --     'Vulkan.Extensions.VK_EXT_subpass_merge_feedback.RenderPassCreationFeedbackCreateInfoEXT',
+--     'Vulkan.Extensions.VK_EXT_fragment_density_map.RenderPassFragmentDensityMapCreateInfoEXT',
+--     'Vulkan.Extensions.VK_QCOM_tile_shading.RenderPassTileShadingCreateInfoQCOM',
 --     or
---     'Vulkan.Extensions.VK_EXT_fragment_density_map.RenderPassFragmentDensityMapCreateInfoEXT'
+--     'Vulkan.Extensions.VK_QCOM_tile_memory_heap.TileMemorySizeInfoQCOM'
 --
 -- -   #VUID-VkRenderPassCreateInfo2-sType-unique# The @sType@ value of
---     each struct in the @pNext@ chain /must/ be unique
+--     each structure in the @pNext@ chain /must/ be unique
 --
 -- -   #VUID-VkRenderPassCreateInfo2-flags-parameter# @flags@ /must/ be a
 --     valid combination of
@@ -2684,12 +2854,12 @@
 -- 'AttachmentDescription2',
 -- 'Vulkan.Core10.Enums.RenderPassCreateFlagBits.RenderPassCreateFlags',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType', 'SubpassDependency2',
--- 'SubpassDescription2', 'createRenderPass2',
--- 'Vulkan.Extensions.VK_KHR_create_renderpass2.createRenderPass2KHR'
+-- 'SubpassDescription2', 'createRenderPass2', 'createRenderPass2'
 data RenderPassCreateInfo2 (es :: [Type]) = RenderPassCreateInfo2
   { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
-  , -- | @flags@ is reserved for future use.
+  , -- | @flags@ is a bitmask of
+    -- 'Vulkan.Core10.Enums.RenderPassCreateFlagBits.RenderPassCreateFlagBits'
     flags :: RenderPassCreateFlags
   , -- | @pAttachments@ is a pointer to an array of @attachmentCount@
     -- 'AttachmentDescription2' structures describing the attachments used by
@@ -2718,6 +2888,8 @@
   getNext RenderPassCreateInfo2{..} = next
   extends :: forall e b proxy. Typeable e => proxy e -> (Extends RenderPassCreateInfo2 e => b) -> Maybe b
   extends _ f
+    | Just Refl <- eqT @e @RenderPassTileShadingCreateInfoQCOM = Just f
+    | Just Refl <- eqT @e @TileMemorySizeInfoQCOM = Just f
     | Just Refl <- eqT @e @RenderPassCreationFeedbackCreateInfoEXT = Just f
     | Just Refl <- eqT @e @RenderPassCreationControlEXT = Just f
     | Just Refl <- eqT @e @RenderPassFragmentDensityMapCreateInfoEXT = Just f
@@ -2800,9 +2972,9 @@
 --     'Vulkan.Core10.Enums.SubpassContents.SUBPASS_CONTENTS_INLINE_AND_SECONDARY_COMMAND_BUFFERS_KHR',
 --     then at least one of the following features /must/ be enabled:
 --
---     -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-maintenance7 maintenance7>
+--     -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance7 maintenance7>
 --
---     -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-nestedCommandBuffer nestedCommandBuffer>
+--     -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-nestedCommandBuffer nestedCommandBuffer>
 --
 -- == Valid Usage (Implicit)
 --
@@ -2820,10 +2992,8 @@
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_2 VK_VERSION_1_2>,
 -- 'Vulkan.Core10.Enums.StructureType.StructureType',
 -- 'Vulkan.Core10.Enums.SubpassContents.SubpassContents',
--- 'cmdBeginRenderPass2',
--- 'Vulkan.Extensions.VK_KHR_create_renderpass2.cmdBeginRenderPass2KHR',
--- 'cmdNextSubpass2',
--- 'Vulkan.Extensions.VK_KHR_create_renderpass2.cmdNextSubpass2KHR'
+-- 'cmdBeginRenderPass2', 'cmdBeginRenderPass2', 'cmdNextSubpass2',
+-- 'cmdNextSubpass2'
 data SubpassBeginInfo = SubpassBeginInfo
   { -- | @contents@ is a 'Vulkan.Core10.Enums.SubpassContents.SubpassContents'
     -- value specifying how the commands in the next subpass will be provided.
@@ -2875,19 +3045,17 @@
 --
 -- -   #VUID-VkSubpassEndInfo-pNext-pNext# @pNext@ /must/ be @NULL@ or a
 --     pointer to a valid instance of
---     'Vulkan.Extensions.VK_QCOM_fragment_density_map_offset.SubpassFragmentDensityMapOffsetEndInfoQCOM'
+--     'Vulkan.Extensions.VK_EXT_fragment_density_map_offset.RenderPassFragmentDensityMapOffsetEndInfoEXT'
 --
 -- -   #VUID-VkSubpassEndInfo-sType-unique# The @sType@ value of each
---     struct in the @pNext@ chain /must/ be unique
+--     structure in the @pNext@ chain /must/ be unique
 --
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_create_renderpass2 VK_KHR_create_renderpass2>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_2 VK_VERSION_1_2>,
 -- 'Vulkan.Core10.Enums.StructureType.StructureType', 'cmdEndRenderPass2',
--- 'Vulkan.Extensions.VK_KHR_create_renderpass2.cmdEndRenderPass2KHR',
--- 'cmdNextSubpass2',
--- 'Vulkan.Extensions.VK_KHR_create_renderpass2.cmdNextSubpass2KHR'
+-- 'cmdEndRenderPass2', 'cmdNextSubpass2', 'cmdNextSubpass2'
 data SubpassEndInfo (es :: [Type]) = SubpassEndInfo
   { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es }
@@ -2903,7 +3071,7 @@
   getNext SubpassEndInfo{..} = next
   extends :: forall e b proxy. Typeable e => proxy e -> (Extends SubpassEndInfo e => b) -> Maybe b
   extends _ f
-    | Just Refl <- eqT @e @SubpassFragmentDensityMapOffsetEndInfoQCOM = Just f
+    | Just Refl <- eqT @e @RenderPassFragmentDensityMapOffsetEndInfoEXT = Just f
     | otherwise = Nothing
 
 instance ( Extendss SubpassEndInfo es
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
@@ -3,8 +3,6 @@
 module Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve  ( PhysicalDeviceDepthStencilResolveProperties(..)
                                                                  , SubpassDescriptionDepthStencilResolve(..)
                                                                  , StructureType(..)
-                                                                 , ResolveModeFlagBits(..)
-                                                                 , ResolveModeFlags
                                                                  ) where
 
 import Foreign.Marshal.Alloc (allocaBytes)
@@ -41,8 +39,6 @@
 import Vulkan.Core10.Enums.StructureType (StructureType)
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE))
-import Vulkan.Core12.Enums.ResolveModeFlagBits (ResolveModeFlagBits(..))
-import Vulkan.Core12.Enums.ResolveModeFlagBits (ResolveModeFlags)
 import Vulkan.Core10.Enums.StructureType (StructureType(..))
 -- | VkPhysicalDeviceDepthStencilResolveProperties - Structure describing
 -- depth\/stencil resolve properties that can be supported by an
@@ -58,8 +54,12 @@
 -- it is filled in with each corresponding implementation-dependent
 -- property.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_depth_stencil_resolve VK_KHR_depth_stencil_resolve>,
@@ -163,7 +163,7 @@
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.SubpassDescription2'
 -- includes a 'SubpassDescriptionDepthStencilResolve' structure, then that
 -- structure describes
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-resolve-operations multisample resolve operations>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-resolve-operations multisample resolve operations>
 -- for the depth\/stencil attachment in a subpass. If this structure is not
 -- included in the @pNext@ chain of
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.SubpassDescription2',
@@ -196,7 +196,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#potential-format-features potential format features>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#potential-format-features potential format features>
 --     contain
 --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT'
 --
@@ -207,7 +207,7 @@
 --     @pDepthStencilResolveAttachment@ has a depth component, then the
 --     'Vulkan.Core10.Enums.Format.Format' of @pDepthStencilAttachment@
 --     /must/ have a depth component with the same number of bits and
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#formats-numericformat numeric format>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-numericformat numeric format>
 --
 -- -   #VUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-03182#
 --     If @pDepthStencilResolveAttachment@ is not @NULL@ and does not have
@@ -216,7 +216,7 @@
 --     @pDepthStencilResolveAttachment@ has a stencil component, then the
 --     'Vulkan.Core10.Enums.Format.Format' of @pDepthStencilAttachment@
 --     /must/ have a stencil component with the same number of bits and
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#formats-numericformat numeric format>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-numericformat numeric format>
 --
 -- -   #VUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-03178#
 --     If @pDepthStencilResolveAttachment@ is not @NULL@ and does not have
@@ -356,6 +356,12 @@
 --     valid
 --     'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.AttachmentReference2'
 --     structure
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.SubpassDescription2'
 --
 -- = See Also
 --
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
@@ -102,7541 +102,8989 @@
 --     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
 --     the image view’s @levelCount@ and @layerCount@ /must/ be 1
 --
--- -   #VUID-vkCmdDrawIndirectCount-unnormalizedCoordinates-09636# If a
---     'Vulkan.Core10.Handles.Sampler' created with
---     @unnormalizedCoordinates@ equal to
---     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
---     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
---     the image view’s @viewType@ /must/ be
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D' or
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D'
---
--- -   #VUID-vkCmdDrawIndirectCount-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-vkCmdDrawIndirectCount-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-vkCmdDrawIndirectCount-None-07888# If a
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'
---     descriptor is accessed using atomic operations as a result of this
---     command, then the storage texel buffer’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-buffer-view-format-features format features>
---     /must/ contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT'
---
--- -   #VUID-vkCmdDrawIndirectCount-None-02692# If a
---     'Vulkan.Core10.Handles.ImageView' is sampled with
---     'Vulkan.Core10.Enums.Filter.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.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'
---
--- -   #VUID-vkCmdDrawIndirectCount-None-02693# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_filter_cubic VK_EXT_filter_cubic>
---     extension is not enabled and any 'Vulkan.Core10.Handles.ImageView'
---     is sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as a
---     result of this command, it /must/ not have a
---     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' of
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE', or
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY'
---
--- -   #VUID-vkCmdDrawIndirectCount-filterCubic-02694# Any
---     'Vulkan.Core10.Handles.ImageView' being sampled with
---     'Vulkan.Core10.Enums.Filter.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-vkCmdDrawIndirectCount-filterCubicMinmax-02695# Any
---     'Vulkan.Core10.Handles.ImageView' being sampled with
---     'Vulkan.Core10.Enums.Filter.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-vkCmdDrawIndirectCount-cubicRangeClamp-09212# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-cubicRangeClamp cubicRangeClamp>
---     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
---     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
---     a result of this command /must/ not have a
---     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
---     equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
---
--- -   #VUID-vkCmdDrawIndirectCount-reductionMode-09213# Any
---     'Vulkan.Core10.Handles.ImageView' being sampled with a
---     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
---     equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
---     as a result of this command /must/ sample with
---     'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT'
---
--- -   #VUID-vkCmdDrawIndirectCount-selectableCubicWeights-09214# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-selectableCubicWeights selectableCubicWeights>
---     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
---     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
---     a result of this command /must/ have
---     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.SamplerCubicWeightsCreateInfoQCOM'::@cubicWeights@
---     equal to
---     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM'
---
--- -   #VUID-vkCmdDrawIndirectCount-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-vkCmdDrawIndirectCount-OpTypeImage-07027# For any
---     'Vulkan.Core10.Handles.ImageView' being written as a storage image
---     where the image format field of the @OpTypeImage@ is @Unknown@, the
---     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_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdDrawIndirectCount-OpTypeImage-07028# For any
---     'Vulkan.Core10.Handles.ImageView' being read as a storage image
---     where the image format field of the @OpTypeImage@ is @Unknown@, the
---     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_STORAGE_READ_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdDrawIndirectCount-OpTypeImage-07029# For any
---     'Vulkan.Core10.Handles.BufferView' being written as a storage texel
---     buffer where the image format field of the @OpTypeImage@ is
---     @Unknown@, the view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
---     /must/ contain
---     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdDrawIndirectCount-OpTypeImage-07030# Any
---     'Vulkan.Core10.Handles.BufferView' being read as a storage texel
---     buffer where the image format field of the @OpTypeImage@ is
---     @Unknown@ then the view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
---     /must/ contain
---     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdDrawIndirectCount-None-08600# For each set /n/ that is
---     statically used by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     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' or the
---     'Vulkan.Core10.Handles.DescriptorSetLayout' array used to create the
---     current 'Vulkan.Extensions.Handles.ShaderEXT' , as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
---
--- -   #VUID-vkCmdDrawIndirectCount-None-08601# For each push constant that
---     is statically used by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     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' or the
---     'Vulkan.Core10.Handles.DescriptorSetLayout' array used to create the
---     current 'Vulkan.Extensions.Handles.ShaderEXT' , as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
---
--- -   #VUID-vkCmdDrawIndirectCount-None-10068# For each array of resources
---     that is used by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     the indices used to access members of the array /must/ be less than
---     the descriptor count for the identified binding in the descriptor
---     sets used by this command
---
--- -   #VUID-vkCmdDrawIndirectCount-maintenance4-08602# 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
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     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' or the
---     'Vulkan.Core10.Handles.DescriptorSetLayout' and
---     'Vulkan.Core10.PipelineLayout.PushConstantRange' arrays used to
---     create the current 'Vulkan.Extensions.Handles.ShaderEXT' , as
---     described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
---
--- -   #VUID-vkCmdDrawIndirectCount-None-08114# Descriptors in each bound
---     descriptor set, specified via
---     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
---     be valid as described by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
---     if they are statically used by the 'Vulkan.Core10.Handles.Pipeline'
---     bound to the pipeline bind point used by this command and the bound
---     'Vulkan.Core10.Handles.Pipeline' was not created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdDrawIndirectCount-None-08115# If the descriptors used by
---     the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
---     point were specified via
---     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', the
---     bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
---     without
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdDrawIndirectCount-None-08116# Descriptors in bound
---     descriptor buffers, specified via
---     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
---     /must/ be valid if they are dynamically used by the
---     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
---     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
---     was created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdDrawIndirectCount-None-08604# Descriptors in bound
---     descriptor buffers, specified via
---     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
---     /must/ be valid if they are dynamically used by any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     to the pipeline bind point used by this command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-08117# If the descriptors used by
---     the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
---     point were specified via
---     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
---     the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
---     with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdDrawIndirectCount-None-08119# If a descriptor is
---     dynamically used with a 'Vulkan.Core10.Handles.Pipeline' created
---     with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
---     the descriptor memory /must/ be resident
---
--- -   #VUID-vkCmdDrawIndirectCount-None-08605# If a descriptor is
---     dynamically used with a 'Vulkan.Extensions.Handles.ShaderEXT'
---     created with a 'Vulkan.Core10.Handles.DescriptorSetLayout' that was
---     created with
---     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
---     the descriptor memory /must/ be resident
---
--- -   #VUID-vkCmdDrawIndirectCount-None-08606# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject>
---     feature is not enabled, a valid pipeline /must/ be bound to the
---     pipeline bind point used by this command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-08608# If a pipeline is bound to
---     the pipeline bind point used by this command, there /must/ not have
---     been any calls to dynamic state setting commands for any state
---     specified statically in the 'Vulkan.Core10.Handles.Pipeline' object
---     bound to the pipeline bind point used by this command, since that
---     pipeline was bound
---
--- -   #VUID-vkCmdDrawIndirectCount-None-08609# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command or any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDrawIndirectCount-None-08610# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command or any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDrawIndirectCount-None-08611# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command or any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDrawIndirectCount-None-08607# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject>
---     feature is enabled, either a valid pipeline /must/ be bound to the
---     pipeline bind point used by this command, or a valid combination of
---     valid and 'Vulkan.Core10.APIConstants.NULL_HANDLE' shader objects
---     /must/ be bound to every supported shader stage corresponding to the
---     pipeline bind point used by this command
---
--- -   #VUID-vkCmdDrawIndirectCount-uniformBuffers-06935# If any stage of
---     the 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline
---     bind point used by this command accesses a uniform buffer, and that
---     stage was created without enabling either
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT'
---     or
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT'
---     for @uniformBuffers@, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, that stage /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-vkCmdDrawIndirectCount-None-08612# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, and any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDrawIndirectCount-storageBuffers-06936# If any stage of
---     the 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline
---     bind point used by this command accesses a storage buffer, and that
---     stage was created without enabling either
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT'
---     or
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT'
---     for @storageBuffers@, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, that stage /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-vkCmdDrawIndirectCount-None-08613# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, and any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDrawIndirectCount-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
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shaders>
---     /must/ not be a protected resource
---
--- -   #VUID-vkCmdDrawIndirectCount-None-06550# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
---     accesses a 'Vulkan.Core10.Handles.Sampler' or
---     'Vulkan.Core10.Handles.ImageView' object that enables
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,
---     that object /must/ only be used with @OpImageSample*@ or
---     @OpImageSparseSample*@ instructions
---
--- -   #VUID-vkCmdDrawIndirectCount-ConstOffset-06551# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
---     accesses a 'Vulkan.Core10.Handles.Sampler' or
---     'Vulkan.Core10.Handles.ImageView' object that enables
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,
---     that object /must/ not use the @ConstOffset@ and @Offset@ operands
---
--- -   #VUID-vkCmdDrawIndirectCount-viewType-07752# If a
---     'Vulkan.Core10.Handles.ImageView' is accessed as a result of this
---     command, then the image view’s @viewType@ /must/ match the @Dim@
---     operand of the @OpTypeImage@ as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-image-dimensions ???>
---
--- -   #VUID-vkCmdDrawIndirectCount-format-07753# If a
---     'Vulkan.Core10.Handles.ImageView' is accessed as a result of this
---     command, then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-numericformat numeric type>
---     of the image view’s @format@ and the @Sampled@ @Type@ operand of the
---     @OpTypeImage@ /must/ match
---
--- -   #VUID-vkCmdDrawIndirectCount-OpImageWrite-08795# If a
---     'Vulkan.Core10.Handles.ImageView' created with a format other than
---     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM_KHR' 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-vkCmdDrawIndirectCount-OpImageWrite-08796# If a
---     'Vulkan.Core10.Handles.ImageView' created with the format
---     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM_KHR' is accessed using
---     @OpImageWrite@ as a result of this command, then the @Type@ of the
---     @Texel@ operand of that instruction /must/ have four components
---
--- -   #VUID-vkCmdDrawIndirectCount-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-vkCmdDrawIndirectCount-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-vkCmdDrawIndirectCount-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-vkCmdDrawIndirectCount-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-vkCmdDrawIndirectCount-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-vkCmdDrawIndirectCount-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-vkCmdDrawIndirectCount-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-vkCmdDrawIndirectCount-OpImageWeightedSampleQCOM-06971# If
---     @OpImageWeightedSampleQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawIndirectCount-OpImageWeightedSampleQCOM-06972# If
---     @OpImageWeightedSampleQCOM@ uses a 'Vulkan.Core10.Handles.ImageView'
---     as a sample weight image 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawIndirectCount-OpImageBoxFilterQCOM-06973# If
---     @OpImageBoxFilterQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawIndirectCount-OpImageBlockMatchSSDQCOM-06974# If
---     @OpImageBlockMatchSSDQCOM@ is used to read from an
---     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawIndirectCount-OpImageBlockMatchSADQCOM-06975# If
---     @OpImageBlockMatchSADQCOM@ is used to read from an
---     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawIndirectCount-OpImageBlockMatchSADQCOM-06976# If
---     @OpImageBlockMatchSADQCOM@ or OpImageBlockMatchSSDQCOM is used to
---     read from a reference image as result of this command, then the
---     specified reference coordinates /must/ not fail
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
---
--- -   #VUID-vkCmdDrawIndirectCount-OpImageWeightedSampleQCOM-06977# If
---     @OpImageWeightedSampleQCOM@, @OpImageBoxFilterQCOM@,
---     @OpImageBlockMatchWindowSSDQCOM@, @OpImageBlockMatchWindowSADQCOM@,
---     @OpImageBlockMatchGatherSSDQCOM@, @OpImageBlockMatchGatherSADQCOM@,
---     @OpImageBlockMatchSSDQCOM@, or @OpImageBlockMatchSADQCOM@ uses a
---     'Vulkan.Core10.Handles.Sampler' as a result of this command, then
---     the sampler /must/ have been created with
---     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawIndirectCount-OpImageWeightedSampleQCOM-06978# If any
---     command other than @OpImageWeightedSampleQCOM@,
---     @OpImageBoxFilterQCOM@, @OpImageBlockMatchWindowSSDQCOM@,
---     @OpImageBlockMatchWindowSADQCOM@, @OpImageBlockMatchGatherSSDQCOM@,
---     @OpImageBlockMatchGatherSADQCOM@, @OpImageBlockMatchSSDQCOM@, or
---     @OpImageBlockMatchSADQCOM@ uses a 'Vulkan.Core10.Handles.Sampler' as
---     a result of this command, then the sampler /must/ not have been
---     created with
---     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawIndirectCount-OpImageBlockMatchWindow-09215# If a
---     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
---     instruction is used to read from an
---     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawIndirectCount-OpImageBlockMatchWindow-09216# If a
---     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
---     instruction is used to read from an
---     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
---     the image view’s format /must/ be a single-component format
---
--- -   #VUID-vkCmdDrawIndirectCount-OpImageBlockMatchWindow-09217# If a
---     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
---     read from a reference image as result of this command, then the
---     specified reference coordinates /must/ not fail
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
---
--- -   #VUID-vkCmdDrawIndirectCount-None-07288# Any shader invocation
---     executed by this command /must/
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-termination terminate>
---
--- -   #VUID-vkCmdDrawIndirectCount-None-09600# If a descriptor with type
---     equal to any of
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM',
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM',
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',
---     or
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'
---     is accessed as a result of this command, the image subresource
---     identified by that descriptor /must/ be in the image layout
---     identified when the descriptor was written
---
--- -   #VUID-vkCmdDrawIndirectCount-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-vkCmdDrawIndirectCount-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-vkCmdDrawIndirectCount-None-07748# If any shader statically
---     accesses an input attachment, a valid descriptor /must/ be bound to
---     the pipeline via a descriptor set
---
--- -   #VUID-vkCmdDrawIndirectCount-OpTypeImage-07468# If any shader
---     executed by this pipeline accesses an @OpTypeImage@ variable with a
---     @Dim@ operand of @SubpassData@, it /must/ be decorated with an
---     @InputAttachmentIndex@ that corresponds to a valid input attachment
---     in the current subpass
---
--- -   #VUID-vkCmdDrawIndirectCount-None-07469# Input attachment views
---     accessed in a subpass /must/ be created with the same
---     'Vulkan.Core10.Enums.Format.Format' as the corresponding subpass
---     definition, and be created with a 'Vulkan.Core10.Handles.ImageView'
---     that is compatible with the attachment referenced by the subpass\'
---     @pInputAttachments@[@InputAttachmentIndex@] in the bound
---     'Vulkan.Core10.Handles.Framebuffer' as specified by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#compatibility-inputattachment Fragment Input Attachment Compatibility>
---
--- -   #VUID-vkCmdDrawIndirectCount-pDepthInputAttachmentIndex-09595# Input
---     attachment views accessed in a dynamic render pass with a
---     @InputAttachmentIndex@ referenced by
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR',
---     or no @InputAttachmentIndex@ if
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR':@pDepthInputAttachmentIndex@
---     or
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR':@pStencilInputAttachmentIndex@
---     are @NULL@, /must/ be created with a
---     'Vulkan.Core10.Handles.ImageView' that is compatible with the
---     corresponding color, depth, or stencil attachment in
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'
---
--- -   #VUID-vkCmdDrawIndirectCount-pDepthInputAttachmentIndex-09596# Input
---     attachment views accessed in a dynamic render pass via a shader
---     object /must/ have an @InputAttachmentIndex@ if both
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR':@pDepthInputAttachmentIndex@
---     and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR':@pStencilInputAttachmentIndex@
---     are non-@NULL@
---
--- -   #VUID-vkCmdDrawIndirectCount-InputAttachmentIndex-09597# If an input
---     attachment view accessed in a dynamic render pass via a shader
---     object has an @InputAttachmentIndex@, the @InputAttachmentIndex@
---     /must/ match an index in
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR'
---
--- -   #VUID-vkCmdDrawIndirectCount-None-06537# Memory backing image
---     subresources used as attachments in the current render pass /must/
---     not be written in any way other than as an attachment by this
---     command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-09000# If a color attachment is
---     written by any prior command in this subpass or by the load, store,
---     or resolve operations for this subpass, it is not in the
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
---     image layout, and either:
---
---     -   the
---         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT'
---         is set on the bound pipeline or
---
---     -   the last call to
---         'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
---         included
---         'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'
---         and
---
---         -   there is no bound graphics pipeline or
---
---         -   the bound graphics pipeline was created with
---             'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
---
---     it /must/ not be accessed in any way other than as an attachment by
---     this command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-09001# If a depth attachment is
---     written by any prior command in this subpass or by the load, store,
---     or resolve operations for this subpass, it is not in the
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
---     image layout, and either:
---
---     -   the
---         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT'
---         is set on the bound pipeline or
---
---     -   the last call to
---         'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
---         included
---         'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT'
---         and
---
---         -   there is no bound graphics pipeline or
---
---         -   the bound graphics pipeline was created with
---             'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
---
---     it /must/ not be accessed in any way other than as an attachment by
---     this command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-09002# If a stencil attachment is
---     written by any prior command in this subpass or by the load, store,
---     or resolve operations for this subpass, it is not in the
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
---     image layout, and either:
---
---     -   the
---         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT'
---         is set on the bound pipeline or
---
---     -   the last call to
---         'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
---         included
---         'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
---         and
---
---         -   there is no bound graphics pipeline or
---
---         -   the bound graphics pipeline was created with
---             'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
---
---     it /must/ not be accessed in any way other than as an attachment by
---     this command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-09003# If an attachment is written
---     by any prior command in this subpass or by the load, store, or
---     resolve operations for this subpass, it /must/ not be accessed in
---     any way other than as an attachment, storage image, or sampled image
---     by this command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-06539# If any previously recorded
---     command in the current subpass accessed an image subresource used as
---     an attachment in this subpass in any way other than as an
---     attachment, this command /must/ not write to that image subresource
---     as an attachment
---
--- -   #VUID-vkCmdDrawIndirectCount-None-06886# If the current render pass
---     instance uses a depth\/stencil attachment with a read-only layout
---     for the depth aspect,
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-depth-write depth writes>
---     /must/ be disabled
---
--- -   #VUID-vkCmdDrawIndirectCount-None-06887# If the current render pass
---     instance uses a depth\/stencil attachment with a read-only layout
---     for the stencil aspect, both front and back @writeMask@ are not
---     zero, and stencil test is enabled,
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-stencil all stencil ops>
---     /must/ be 'Vulkan.Core10.Enums.StencilOp.STENCIL_OP_KEEP'
---
--- -   #VUID-vkCmdDrawIndirectCount-None-07831# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT' dynamic
---     state enabled then
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetViewport' /must/ have
---     been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-07832# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR' dynamic
---     state enabled then
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetScissor' /must/ have been
---     called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-07833# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_WIDTH' dynamic
---     state enabled then
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth' /must/ have
---     been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-08617# If a shader object is bound
---     to any graphics stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
---     in the current command buffer set @polygonMode@ to
---     'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_LINE',
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth' /must/ have
---     been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-08618# If a shader object is bound
---     to any graphics stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
---     in the current command buffer set @primitiveTopology@ to any line
---     topology, 'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-08619# If a shader object that
---     outputs line primitives is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE',
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth' /must/ have
---     been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-07834# If a shader object is bound
---     to any graphics stage or a graphics pipeline is bound which was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS' dynamic
---     state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @depthBiasEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBounds' or
---     'Vulkan.Extensions.VK_EXT_depth_bias_control.cmdSetDepthBias2EXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-07835# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_BLEND_CONSTANTS'
---     dynamic state enabled then
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetBlendConstants' /must/
---     have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-08621# If a shader object is bound
---     to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     in the current command buffer set any element of
---     @pColorBlendEnables@ to 'Vulkan.Core10.FundamentalTypes.TRUE', and
---     the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     in the current command buffer set the same element of
---     @pColorBlendEquations@ to a
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.ColorBlendEquationEXT'
---     structure with any 'Vulkan.Core10.Enums.BlendFactor.BlendFactor'
---     member with a value of
---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_COLOR',
---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR',
---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_ALPHA', or
---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA',
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetBlendConstants' /must/
---     have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-07836# If a shader object is bound
---     to any graphics stage or a graphics pipeline is bound which was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @depthBoundsTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBounds' /must/
---     have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-07837# If a shader object is bound
---     to any graphics stage or a graphics pipeline is bound which was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_COMPARE_MASK'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilCompareMask'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-07838# If a shader object is bound
---     to any graphics stage or a graphics pipeline is bound which was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_WRITE_MASK'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilWriteMask'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-07839# If a shader object is bound
---     to any graphics stage or a graphics pipeline is bound which was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_REFERENCE'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of and @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilReference'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-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-vkCmdDrawIndirectCount-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-vkCmdDrawIndirectCount-None-07634# If the
---     @VK_EXT_sample_locations@ extension is enabled, a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-06666# If the
---     @VK_EXT_sample_locations@ extension is enabled, a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then
---     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-07840# If a shader object is bound
---     to any graphics stage or a graphics pipeline is bound which was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CULL_MODE' dynamic
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetCullMode'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-07841# If a shader object is bound
---     to any graphics stage or a graphics pipeline is bound which was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRONT_FACE' dynamic
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetFrontFace'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-07843# If a shader object is bound
---     to any graphics stage or a graphics pipeline is bound which was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_TEST_ENABLE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE',
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthTestEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-07844# If a shader object is bound
---     to any graphics stage or a graphics pipeline is bound which was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthWriteEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-07845# If a shader object is bound
---     to any graphics stage or a graphics pipeline is bound which was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_COMPARE_OP'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @depthTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthCompareOp'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-07846# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthBounds depthBounds>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthBoundsTestEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-07847# If a shader object is bound
---     to any graphics stage or a graphics pipeline is bound which was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_TEST_ENABLE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilTestEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-07848# If a shader object is bound
---     to any graphics stage or a graphics pipeline is bound which was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_OP' dynamic
---     state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilOp'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-viewportCount-03417# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
---     dynamic state enabled, and the state is not inherited, then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-scissorCount-03418# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
---     dynamic state enabled, and the state is not inherited, then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing
---
--- -   #VUID-vkCmdDrawIndirectCount-viewportCount-03419# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     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, and the state is not inherited, then 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-vkCmdDrawIndirectCount-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-vkCmdDrawIndirectCount-viewportCount-04138# If the
---     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which 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 state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @viewportWScalingEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.cmdSetViewportWScalingNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-08636# If the
---     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which 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 state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @viewportWScalingEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', 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-vkCmdDrawIndirectCount-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-vkCmdDrawIndirectCount-shadingRateImage-09233# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV'
---     and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetCoarseSampleOrderNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-shadingRateImage-09234# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which 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 state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @shadingRateImageEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetViewportShadingRatePaletteNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-08637# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which 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 state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @shadingRateImageEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', 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-vkCmdDrawIndirectCount-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
---     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo', 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-vkCmdDrawIndirectCount-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
---     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo', 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-vkCmdDrawIndirectCount-None-07878# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-exclusiveScissor exclusiveScissor>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-07879# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-exclusiveScissor exclusiveScissor>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV'
---     dynamic state enabled, and the most recent call to
---     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorEnableNV'
---     in the current command buffer set any element of
---     @pExclusiveScissorEnables@ to 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then
---     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-04876# If a shader object is bound
---     to any graphics stage or a graphics pipeline is bound which 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 and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-04877# If a shader object is bound
---     to any graphics stage or a graphics pipeline is bound which was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-logicOp-04878# If a shader object is
---     bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_EXT'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @logicOpEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetLogicOpEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-primitiveFragmentShadingRateWithMultipleViewports-04552#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
---     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-vkCmdDrawIndirectCount-primitiveFragmentShadingRateWithMultipleViewports-08642#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
---     limit is not supported, and any shader object bound to a graphics
---     stage writes 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-vkCmdDrawIndirectCount-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-vkCmdDrawIndirectCount-None-08643# If a shader object is bound
---     to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then for each color
---     attachment in the render pass, 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 corresponding member of @pColorBlendEnables@ in the most
---     recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     in the current command buffer that affected that attachment index
---     /must/ have been 'Vulkan.Core10.FundamentalTypes.FALSE'
---
--- -   #VUID-vkCmdDrawIndirectCount-multisampledRenderToSingleSampled-07284#
---     If rasterization is not disabled in the bound graphics pipeline, and
---     none of the following is enabled:
---
---     -   the @VK_AMD_mixed_attachment_samples@ extension
---
---     -   the @VK_NV_framebuffer_mixed_samples@ extension
---
---     -   the
---         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---         feature
---
---     then @rasterizationSamples@ for the bound graphics pipeline /must/
---     be the same as the current subpass color and\/or depth\/stencil
---     attachments
---
--- -   #VUID-vkCmdDrawIndirectCount-None-08644# If a shader object is bound
---     to any graphics stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and none of the following is
---     enabled:
---
---     -   the @VK_AMD_mixed_attachment_samples@ extension
---
---     -   the @VK_NV_framebuffer_mixed_samples@ extension
---
---     -   the
---         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---         feature
---
---     then the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     in the current command buffer /must/ have set @rasterizationSamples@
---     to be the same as the number of samples for the current render pass
---     color and\/or depth\/stencil attachments
---
--- -   #VUID-vkCmdDrawIndirectCount-None-08876# If a shader object is bound
---     to any graphics stage, the current render pass instance /must/ have
---     been begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---
--- -   #VUID-vkCmdDrawIndirectCount-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-vkCmdDrawIndirectCount-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-vkCmdDrawIndirectCount-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-vkCmdDrawIndirectCount-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-vkCmdDrawIndirectCount-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-vkCmdDrawIndirectCount-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-vkCmdDrawIndirectCount-viewMask-06178# If the current render
---     pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the 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-vkCmdDrawIndirectCount-colorAttachmentCount-06179# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled and the current render pass instance was
---     begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the 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-vkCmdDrawIndirectCount-dynamicRenderingUnusedAttachments-08910#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and 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 an @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 bound graphics pipeline
---
--- -   #VUID-vkCmdDrawIndirectCount-dynamicRenderingUnusedAttachments-08912#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and 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 an @imageView@ equal to
---     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have the
---     corresponding element of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
---     used to create the bound pipeline equal to
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawIndirectCount-dynamicRenderingUnusedAttachments-08911#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is enabled, and 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 an @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 bound graphics pipeline, or the corresponding
---     element of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@,
---     if it exists, /must/ be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawIndirectCount-colorAttachmentCount-09362# If 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@
---     equal to @1@, there is no shader object bound to any graphics stage,
---     and a color attachment with a resolve mode of
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID',
---     each element of the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
---     array with a @resolveImageView@ not equal to
---     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
---     with an image created with a
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value equal to the
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value used to create the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawIndirectCount-None-09363# If there is no shader
---     object bound to any graphics stage, the current render pass instance
---     was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     and a
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
---     equal to @1@, and a color attachment with a resolve mode of
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID',
---     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 an image created with a
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value equal to the
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value used to create the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawIndirectCount-None-09364# If the current render pass
---     instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is no shader object bound to any graphics stage, and the bound
---     graphics pipeline was created with a non-zero
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value and with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have set the blend enable to
---     'Vulkan.Core10.FundamentalTypes.FALSE' prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-09365# If the current render pass
---     instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is no shader object bound to any graphics stage, and the bound
---     graphics pipeline was created with a non-zero
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value and with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ have set @rasterizationSamples@ to
---     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' prior
---     to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-09366# If there is a shader object
---     bound to any graphics stage, and the current render pass includes a
---     color attachment that uses the
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID'
---     resolve mode, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have set blend enable to
---     'Vulkan.Core10.FundamentalTypes.FALSE' prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-rasterizationSamples-09367# If there is
---     a shader object bound to any graphics stage, and the current render
---     pass includes a color attachment that uses the
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID'
---     resolve mode, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ have set @rasterizationSamples@ to
---     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' prior
---     to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-09368# If the current render pass
---     instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is no shader object bound to any graphics stage, and the bound
---     graphics pipeline was created with a non-zero
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value and with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
---     /must/ have set @pFragmentSize->width@ to @1@ prior to this drawing
---     command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-09369# If the current render pass
---     instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is no shader object bound to any graphics stage, and the bound
---     graphics pipeline was created with a non-zero
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value and with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
---     /must/ have set @pFragmentSize->height@ to @1@ prior to this drawing
---     command
---
--- -   #VUID-vkCmdDrawIndirectCount-pFragmentSize-09370# If there is a
---     shader object bound to any graphics stage, and the current render
---     pass includes a color attachment that uses the
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID'
---     resolve mode, then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
---     /must/ have set @pFragmentSize->width@ to @1@ prior to this drawing
---     command
---
--- -   #VUID-vkCmdDrawIndirectCount-pFragmentSize-09371# If there is a
---     shader object bound to any graphics stage, and the current render
---     pass includes a color attachment that uses the
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID'
---     resolve mode, then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
---     /must/ have set @pFragmentSize->height@ to @1@ prior to this drawing
---     command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-07749# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-08646# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
---     feature is enabled, and a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-attachmentCount-07750# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'
---     dynamic state enabled then the @attachmentCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
---     /must/ be greater than or equal to the
---     'Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo'::@attachmentCount@
---     of the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawIndirectCount-None-08647# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
---     feature is enabled, and a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then the @attachmentCount@
---     parameter of most recent call to
---     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
---     in the current command buffer /must/ be greater than or equal to the
---     number of color attachments in the current render pass instance
---
--- -   #VUID-vkCmdDrawIndirectCount-None-07751# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command for each
---     discard rectangle in
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'::@discardRectangleCount@
---
--- -   #VUID-vkCmdDrawIndirectCount-None-07880# If the
---     @VK_EXT_discard_rectangles@ extension is enabled, a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-07881# If the
---     @VK_EXT_discard_rectangles@ extension is enabled, a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @discardRectangleEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-rasterizerDiscardEnable-09236# If the
---     @VK_EXT_discard_rectangles@ extension is enabled, and a shader
---     object is bound to any graphics stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEnableEXT'
---     in the current command buffer set @discardRectangleEnable@ to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-dynamicRenderingUnusedAttachments-08913#
---     If the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
---     used to create the bound graphics pipeline /must/ be equal to
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawIndirectCount-dynamicRenderingUnusedAttachments-08914#
---     If current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->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 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->imageView@
---
--- -   #VUID-vkCmdDrawIndirectCount-dynamicRenderingUnusedAttachments-08915#
---     If the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is enabled,
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
---     used to create the bound graphics pipeline was not equal to the
---     'Vulkan.Core10.Enums.Format.Format' used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@,
---     the value of the format /must/ be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawIndirectCount-dynamicRenderingUnusedAttachments-08916#
---     If the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
---     used to create the bound graphics pipeline /must/ be equal to
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawIndirectCount-dynamicRenderingUnusedAttachments-08917#
---     If current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->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 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->imageView@
---
--- -   #VUID-vkCmdDrawIndirectCount-dynamicRenderingUnusedAttachments-08918#
---     If the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is enabled,
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
---     used to create the bound graphics pipeline was not equal to the
---     'Vulkan.Core10.Enums.Format.Format' used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@,
---     the value of the format /must/ be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawIndirectCount-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_fragment_shading_rate.RenderingFragmentShadingRateAttachmentInfoKHR'::@imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the bound graphics
---     pipeline /must/ have been created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
---
--- -   #VUID-vkCmdDrawIndirectCount-imageView-06184# If the current render
---     pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     and
---     'Vulkan.Extensions.VK_EXT_fragment_density_map.RenderingFragmentDensityMapAttachmentInfoEXT'::@imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the bound graphics
---     pipeline /must/ have been created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT'
---
--- -   #VUID-vkCmdDrawIndirectCount-colorAttachmentCount-06185# If the
---     bound pipeline was created with a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.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_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     used to create the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawIndirectCount-pDepthAttachment-06186# If the current
---     render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the bound pipeline was created with a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     structure, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
---     @depthStencilAttachmentSamples@ member of
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     used to create the bound graphics pipeline /must/ be equal to the
---     sample count used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---
--- -   #VUID-vkCmdDrawIndirectCount-pStencilAttachment-06187# If the
---     current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the bound pipeline was created with a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     structure, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
---     @depthStencilAttachmentSamples@ member of
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     used to create the bound graphics pipeline /must/ be equal to the
---     sample count used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---
--- -   #VUID-vkCmdDrawIndirectCount-multisampledRenderToSingleSampled-07285#
---     If the bound pipeline was created without a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     structure, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---     feature is not enabled, 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 @rasterizationSamples@ for
---     the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawIndirectCount-multisampledRenderToSingleSampled-07286#
---     If the bound pipeline was created without a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     structure, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     @rasterizationSamples@ for the bound graphics pipeline /must/ be
---     equal to the sample count used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---
--- -   #VUID-vkCmdDrawIndirectCount-multisampledRenderToSingleSampled-07287#
---     If the bound pipeline was created without a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     structure, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     @rasterizationSamples@ for the bound graphics pipeline /must/ be
---     equal to the sample count used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---
--- -   #VUID-vkCmdDrawIndirectCount-pNext-07935# If this command has been
---     called inside a render pass instance started with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     and the @pNext@ chain of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'
---     includes a
---     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'
---     structure with @multisampledRenderToSingleSampledEnable@ equal to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the value of
---     @rasterizationSamples@ for the bound graphics pipeline /must/ be
---     equal to
---     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'::@rasterizationSamples@
---
--- -   #VUID-vkCmdDrawIndirectCount-renderPass-06198# If the current render
---     pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the bound pipeline /must/ have been created with a
---     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@renderPass@
---     equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE'
---
--- -   #VUID-vkCmdDrawIndirectCount-pColorAttachments-08963# If the current
---     render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is a graphics pipeline bound with a fragment shader that
---     statically writes to a color attachment, the color write mask is not
---     zero, color writes are enabled, and the corresponding element of the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
---     corresponding element of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
---     used to create the pipeline /must/ not be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawIndirectCount-pDepthAttachment-08964# If the current
---     render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is a graphics pipeline bound, depth test is enabled, depth
---     write is enabled, and the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
---     used to create the pipeline /must/ not be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawIndirectCount-pStencilAttachment-08965# If the
---     current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is a graphics pipeline bound, stencil test is enabled and the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
---     used to create the pipeline /must/ not be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawIndirectCount-primitivesGeneratedQueryWithRasterizerDiscard-06708#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithRasterizerDiscard primitivesGeneratedQueryWithRasterizerDiscard>
---     feature is not enabled and the
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
---     query is active,
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-discard rasterization discard>
---     /must/ not be enabled
---
--- -   #VUID-vkCmdDrawIndirectCount-primitivesGeneratedQueryWithNonZeroStreams-06709#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>
---     feature is not enabled and the
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
---     query is active, the bound graphics pipeline /must/ not have been
---     created with a non-zero value in
---     'Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT'::@rasterizationStream@
---
--- -   #VUID-vkCmdDrawIndirectCount-None-07619# If a shader object is bound
---     to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetTessellationDomainOriginEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-07620# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClamp depthClamp>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClampEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-07621# If a shader object is bound
---     to any graphics stage or a graphics pipeline is bound which was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_POLYGON_MODE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-07622# If a shader object is bound
---     to any graphics stage or a graphics pipeline is bound which was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-07623# If a shader object is bound
---     to any graphics stage or a graphics pipeline is bound which was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-alphaToCoverageEnable-08919# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT'
---     dynamic state enabled, and @alphaToCoverageEnable@ was
---     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-fragmentoutput Fragment Output Interface>
---     /must/ contain a variable for the alpha @Component@ word in
---     @Location@ 0 at @Index@ 0
---
--- -   #VUID-vkCmdDrawIndirectCount-alphaToCoverageEnable-08920# If a
---     shader object is bound to any graphics stage, and the most recent
---     call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT'
---     in the current command buffer set @alphaToCoverageEnable@ to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-fragmentoutput Fragment Output Interface>
---     /must/ contain a variable for the alpha @Component@ word in
---     @Location@ 0 at @Index@ 0
---
--- -   #VUID-vkCmdDrawIndirectCount-None-07624# If a shader object is bound
---     to any graphics stage or a graphics pipeline is bound which was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-07625# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-alphaToOne alphaToOne>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToOneEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-07626# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-logicOp logicOp>
---     feature is enabled, a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLogicOpEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-07627# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-08657# If a shader object is bound
---     to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and both the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE' and there are color
---     attachments bound, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-07628# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-08658# If a shader object is bound
---     to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     for any attachment set that attachment’s value in
---     @pColorBlendEnables@ to 'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-07629# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-08659# If a shader object is bound
---     to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and both the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE' and there are color
---     attachments bound, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-07630# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryStreams geometryStreams>
---     feature is enabled, and a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_STREAM_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationStreamEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-07631# If the
---     @VK_EXT_conservative_rasterization@ extension is enabled, a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetConservativeRasterizationModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-07632# If the
---     @VK_EXT_conservative_rasterization@ extension is enabled, a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @conservativeRasterizationMode@ is
---     'Vulkan.Extensions.VK_EXT_conservative_rasterization.CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT',
---     then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetExtraPrimitiveOverestimationSizeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-07633# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClipEnable depthClipEnable>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT'
---     dynamic state, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-07635# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-rasterizerDiscardEnable-09416# If the
---     @VK_EXT_blend_operation_advanced@ extension is enabled, and a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then at least one of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     and
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-07636# If the
---     @VK_EXT_provoking_vertex@ extension is enabled, a shader object is
---     bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetProvokingVertexModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-07637# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-08666# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object is bound to any graphics
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
---     in the current command buffer set @polygonMode@ to
---     'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_LINE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-08667# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
---     in the current command buffer set @primitiveTopology@ to any line
---     topology, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-08668# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object that outputs line
---     primitives is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-07638# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-08669# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object is bound to any graphics
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
---     in the current command buffer set @polygonMode@ to
---     'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_LINE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-08670# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
---     in the current command buffer set @primitiveTopology@ to any line
---     topology, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-08671# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object that outputs line
---     primitives is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-07849# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled and a shader object is bound to any graphics
---     stage, or a bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_KHR'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @stippledLineEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then
---     'Vulkan.Extensions.VK_KHR_line_rasterization.cmdSetLineStippleKHR'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-07639# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClipControl depthClipControl>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipNegativeOneToOneEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-09650# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClampControl depthClampControl>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @depthClampEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_depth_clamp_control.cmdSetDepthClampRangeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-07640# If the
---     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportWScalingEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-07641# If the
---     @VK_NV_viewport_swizzle@ extension is enabled, and a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-07642# If the
---     @VK_NV_fragment_coverage_to_color@ extension is enabled, a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-07643# If the
---     @VK_NV_fragment_coverage_to_color@ extension is enabled, a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @coverageToColorEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-07644# If the
---     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationModeNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-07645# If the
---     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @coverageModulationMode@ is any value other than
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.COVERAGE_MODULATION_MODE_NONE_NV',
---     then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-07646# If the
---     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @coverageModulationTableEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-07647# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetShadingRateImageEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-pipelineFragmentShadingRate-09238# If
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate>
---     feature is enabled, a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-07648# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-representativeFragmentTest representativeFragmentTest>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRepresentativeFragmentTestEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-07649# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-coverageReductionMode coverageReductionMode>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageReductionModeNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-pColorBlendEnables-07470# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---     state enabled and the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     set @pColorBlendEnables@ for any attachment to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then for those attachments in
---     the subpass 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>
---     /must/ contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT'
---
--- -   #VUID-vkCmdDrawIndirectCount-rasterizationSamples-07471# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the current subpass does not use any color
---     and\/or depth\/stencil attachments, then the @rasterizationSamples@
---     in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ follow the rules for a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-noattachments zero-attachment subpass>
---
--- -   #VUID-vkCmdDrawIndirectCount-samples-07472# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
---     state enabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state disabled, then the @samples@ parameter in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
---     /must/ be greater or equal to the
---     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
---     parameter used to create the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawIndirectCount-samples-07473# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
---     state and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     states enabled, then the @samples@ parameter in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
---     /must/ be greater or equal to the @rasterizationSamples@ parameter
---     in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---
--- -   #VUID-vkCmdDrawIndirectCount-rasterizationSamples-07474# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---     feature is not enabled, and neither the
---     @VK_AMD_mixed_attachment_samples@ nor the
---     @VK_NV_framebuffer_mixed_samples@ extensions are enabled, then the
---     @rasterizationSamples@ in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ be the same as the current subpass color and\/or
---     depth\/stencil attachments
---
--- -   #VUID-vkCmdDrawIndirectCount-None-09211# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, or a shader object is bound to any graphics stage,
---     and the current render pass instance includes a
---     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'
---     structure with @multisampledRenderToSingleSampledEnable@ equal to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the
---     @rasterizationSamples@ in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ be the same as the @rasterizationSamples@ member of that
---     structure
---
--- -   #VUID-vkCmdDrawIndirectCount-firstAttachment-07476# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     calls /must/ specify an enable for all active color attachments in
---     the current subpass
---
--- -   #VUID-vkCmdDrawIndirectCount-rasterizerDiscardEnable-09417# If a
---     shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     calls /must/ specify an enable for all active color attachments in
---     the current subpass
---
--- -   #VUID-vkCmdDrawIndirectCount-firstAttachment-07477# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     calls /must/ specify the blend equations for all active color
---     attachments in the current subpass where blending is enabled
---
--- -   #VUID-vkCmdDrawIndirectCount-rasterizerDiscardEnable-09418# If a
---     shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and both the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE' and there are color
---     attachments bound, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     calls /must/ specify the blend equations for all active color
---     attachments in the current subpass where blending is enabled
---
--- -   #VUID-vkCmdDrawIndirectCount-firstAttachment-07478# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     calls /must/ specify the color write mask for all active color
---     attachments in the current subpass
---
--- -   #VUID-vkCmdDrawIndirectCount-rasterizerDiscardEnable-09419# If a
---     shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     calls /must/ specify the color write mask for all active color
---     attachments in the current subpass
---
--- -   #VUID-vkCmdDrawIndirectCount-firstAttachment-07479# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
---     calls /must/ specify the advanced blend equations for all active
---     color attachments in the current subpass where blending is enabled
---
--- -   #VUID-vkCmdDrawIndirectCount-advancedBlendMaxColorAttachments-07480#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
---     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---     dynamic states enabled and the last calls to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     and
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
---     have enabled advanced blending, then the number of active color
---     attachments in the current subpass /must/ not exceed
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-advancedBlendMaxColorAttachments advancedBlendMaxColorAttachments>
---
--- -   #VUID-vkCmdDrawIndirectCount-primitivesGeneratedQueryWithNonZeroStreams-07481#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>
---     feature is not enabled and the
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
---     query is active, and the bound graphics pipeline was created with
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_STREAM_EXT'
---     state enabled, the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationStreamEXT'
---     /must/ have set the @rasterizationStream@ to zero
---
--- -   #VUID-vkCmdDrawIndirectCount-sampleLocationsPerPixel-07482# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state enabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state disabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then the @sampleLocationsPerPixel@ member of @pSampleLocationsInfo@
---     in the last call to
---     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
---     /must/ equal the @rasterizationSamples@ member of the
---     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'
---     structure the bound graphics pipeline has been created with
---
--- -   #VUID-vkCmdDrawIndirectCount-sampleLocationsPerPixel-07483# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state enabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then the @sampleLocationsPerPixel@ member of @pSampleLocationsInfo@
---     in the last call to
---     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
---     /must/ equal the @rasterizationSamples@ parameter of the last call
---     to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---
--- -   #VUID-vkCmdDrawIndirectCount-sampleLocationsEnable-07484# If a
---     shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, or the bound graphics pipeline was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     state enabled, and @sampleLocationsEnable@ was
---     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
---     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-vkCmdDrawIndirectCount-sampleLocationsEnable-07485# If a
---     shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state enabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     state enabled, and if @sampleLocationsEnable@ was
---     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
---     then the @sampleLocationsInfo.sampleLocationGridSize.width@ in the
---     last call to
---     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
---     /must/ evenly divide
---     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@sampleLocationGridSize.width@
---     as returned by
---     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
---     with a @samples@ parameter equaling @rasterizationSamples@
---
--- -   #VUID-vkCmdDrawIndirectCount-sampleLocationsEnable-07486# If a
---     shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state enabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     state enabled, and if @sampleLocationsEnable@ was
---     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
---     then the @sampleLocationsInfo.sampleLocationGridSize.height@ in the
---     last call to
---     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
---     /must/ evenly divide
---     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@sampleLocationGridSize.height@
---     as returned by
---     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
---     with a @samples@ parameter equaling @rasterizationSamples@
---
--- -   #VUID-vkCmdDrawIndirectCount-sampleLocationsEnable-07487# If a
---     shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     state enabled, and if @sampleLocationsEnable@ was
---     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
---     the fragment shader code /must/ not statically use the extended
---     instruction @InterpolateAtSample@
---
--- -   #VUID-vkCmdDrawIndirectCount-sampleLocationsEnable-07936# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state disabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then @sampleLocationsInfo.sampleLocationGridSize.width@ /must/
---     evenly divide
---     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@sampleLocationGridSize.width@
---     as returned by
---     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
---     with a @samples@ parameter equaling the value of
---     @rasterizationSamples@ in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---
--- -   #VUID-vkCmdDrawIndirectCount-sampleLocationsEnable-07937# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state disabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then @sampleLocationsInfo.sampleLocationGridSize.height@ /must/
---     evenly divide
---     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@sampleLocationGridSize.height@
---     as returned by
---     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
---     with a @samples@ parameter equaling the value of
---     @rasterizationSamples@ in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---
--- -   #VUID-vkCmdDrawIndirectCount-sampleLocationsEnable-07938# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state disabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then @sampleLocationsInfo.sampleLocationsPerPixel@ /must/ equal
---     @rasterizationSamples@ in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---
--- -   #VUID-vkCmdDrawIndirectCount-coverageModulationTableEnable-07488# If
---     a shader object is bound to any graphics stage or the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV'
---     state enabled, and the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV'
---     set @coverageModulationTableEnable@ to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the
---     @coverageModulationTableCount@ parameter in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableNV'
---     /must/ equal the current @rasterizationSamples@ divided by the
---     number of color samples in the current subpass
---
--- -   #VUID-vkCmdDrawIndirectCount-rasterizationSamples-07489# If the
---     @VK_NV_framebuffer_mixed_samples@ extension is enabled, and if
---     current subpass has a depth\/stencil attachment and depth test,
---     stencil test, or depth bounds test are enabled in the bound
---     pipeline, then the current @rasterizationSamples@ /must/ be the same
---     as the sample count of the depth\/stencil attachment
---
--- -   #VUID-vkCmdDrawIndirectCount-coverageToColorEnable-07490# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
---     state enabled and the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
---     set the @coverageToColorEnable@ to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the current subpass
---     /must/ have a color attachment at the location selected by the last
---     call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
---     @coverageToColorLocation@, with a
---     'Vulkan.Core10.Enums.Format.Format' of
---     'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R8_SINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R16_UINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R16_SINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R32_UINT', or
---     'Vulkan.Core10.Enums.Format.FORMAT_R32_SINT'
---
--- -   #VUID-vkCmdDrawIndirectCount-rasterizerDiscardEnable-09420# If the
---     @VK_NV_fragment_coverage_to_color@ extension is enabled, and a
---     shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
---     set the @coverageToColorEnable@ to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the current subpass
---     /must/ have a color attachment at the location selected by the last
---     call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
---     @coverageToColorLocation@, with a
---     'Vulkan.Core10.Enums.Format.Format' of
---     'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R8_SINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R16_UINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R16_SINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R32_UINT', or
---     'Vulkan.Core10.Enums.Format.FORMAT_R32_SINT'
---
--- -   #VUID-vkCmdDrawIndirectCount-coverageReductionMode-07491# If this
---     @VK_NV_coverage_reduction_mode@ extension is enabled, the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
---     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     states enabled, the current coverage reduction mode
---     @coverageReductionMode@, then the current @rasterizationSamples@,
---     and the sample counts for the color and depth\/stencil attachments
---     (if the subpass has them) /must/ be a valid combination returned by
---     'Vulkan.Extensions.VK_NV_coverage_reduction_mode.getPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV'
---
--- -   #VUID-vkCmdDrawIndirectCount-viewportCount-07492# 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_SWIZZLE_NV'
---     dynamic state enabled, 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-vkCmdDrawIndirectCount-viewportCount-07493# 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_SWIZZLE_NV'
---     dynamic states enabled then the @viewportCount@ parameter in the
---     last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
---     /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-vkCmdDrawIndirectCount-viewportCount-09421# If the
---     @VK_NV_viewport_swizzle@ extension is enabled, and a shader object
---     is bound to any graphics stage, then the @viewportCount@ parameter
---     in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
---     /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-vkCmdDrawIndirectCount-rasterizationSamples-07494# If the
---     @VK_NV_framebuffer_mixed_samples@ extension is enabled, and if the
---     current subpass has any color attachments and @rasterizationSamples@
---     of the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     is greater than the number of color samples, then the pipeline
---     @sampleShadingEnable@ /must/ be
---     'Vulkan.Core10.FundamentalTypes.FALSE'
---
--- -   #VUID-vkCmdDrawIndirectCount-stippledLineEnable-07495# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---     or
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---     dynamic states enabled, and if the current @stippledLineEnable@
---     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
---     @lineRasterizationMode@ state is
---     'Vulkan.Extensions.VK_KHR_line_rasterization.LINE_RASTERIZATION_MODE_RECTANGULAR_KHR',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>
---     feature /must/ be enabled
---
--- -   #VUID-vkCmdDrawIndirectCount-stippledLineEnable-07496# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---     or
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---     dynamic states enabled, and if the current @stippledLineEnable@
---     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
---     @lineRasterizationMode@ state is
---     'Vulkan.Extensions.VK_KHR_line_rasterization.LINE_RASTERIZATION_MODE_BRESENHAM_KHR',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     feature /must/ be enabled
---
--- -   #VUID-vkCmdDrawIndirectCount-stippledLineEnable-07497# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---     or
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---     dynamic states enabled, and if the current @stippledLineEnable@
---     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
---     @lineRasterizationMode@ state is
---     'Vulkan.Extensions.VK_KHR_line_rasterization.LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     feature /must/ be enabled
---
--- -   #VUID-vkCmdDrawIndirectCount-stippledLineEnable-07498# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---     or
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---     dynamic states enabled, and if the current @stippledLineEnable@
---     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
---     @lineRasterizationMode@ state is
---     'Vulkan.Extensions.VK_KHR_line_rasterization.LINE_RASTERIZATION_MODE_DEFAULT_KHR',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>
---     feature /must/ be enabled and
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@strictLines@
---     /must/ be 'Vulkan.Core10.FundamentalTypes.TRUE'
---
--- -   #VUID-vkCmdDrawIndirectCount-conservativePointAndLineRasterization-07499#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT'
---     dynamic state enabled,
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-conservativePointAndLineRasterization conservativePointAndLineRasterization>
---     is not supported, and the effective primitive topology output by the
---     last pre-rasterization shader stage is a line or point, then the
---     @conservativeRasterizationMode@ set by the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetConservativeRasterizationModeEXT'
---     /must/ be
---     'Vulkan.Extensions.VK_EXT_conservative_rasterization.CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT'
---
--- -   #VUID-vkCmdDrawIndirectCount-stage-07073# If the bound pipeline was
---     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_VERTEX_BIT',
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT',
---     then
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-mesh-shader Mesh Shader Queries>
---     /must/ not be active
---
--- -   #VUID-vkCmdDrawIndirectCount-None-08877# If a shader object is bound
---     to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-07850# If dynamic state was
---     inherited from
---     'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV',
---     it /must/ be set in the current command buffer prior to this drawing
---     command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-08684# If there is no bound
---     graphics pipeline,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---
--- -   #VUID-vkCmdDrawIndirectCount-None-08685# If there is no bound
---     graphics pipeline, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellationShader>
---     feature is enabled,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
---
--- -   #VUID-vkCmdDrawIndirectCount-None-08686# If there is no bound
---     graphics pipeline, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellationShader>
---     feature is enabled,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---
--- -   #VUID-vkCmdDrawIndirectCount-None-08687# If there is no bound
---     graphics pipeline, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometryShader>
---     feature is enabled,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---
--- -   #VUID-vkCmdDrawIndirectCount-None-08688# If there is no bound
---     graphics pipeline,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---
--- -   #VUID-vkCmdDrawIndirectCount-None-08689# If there is no bound
---     graphics pipeline, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
---     feature is enabled,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---
--- -   #VUID-vkCmdDrawIndirectCount-None-08690# If there is no bound
---     graphics pipeline, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
---     feature is enabled,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---
--- -   #VUID-vkCmdDrawIndirectCount-None-08693# If there is no bound
---     graphics pipeline, and at least one of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
---     and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
---     features is enabled, one of the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---     stages /must/ have a valid 'Vulkan.Extensions.Handles.ShaderEXT'
---     bound, and the other /must/ have no
---     'Vulkan.Extensions.Handles.ShaderEXT' bound
---
--- -   #VUID-vkCmdDrawIndirectCount-None-08694# If there is no bound
---     graphics pipeline, and both the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
---     and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
---     features are enabled, and a valid
---     'Vulkan.Extensions.Handles.ShaderEXT' is bound the to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---     stage, and that 'Vulkan.Extensions.Handles.ShaderEXT' was created
---     without the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
---     flag, a valid 'Vulkan.Extensions.Handles.ShaderEXT' /must/ be bound
---     to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---     stage
---
--- -   #VUID-vkCmdDrawIndirectCount-None-08695# If there is no bound
---     graphics pipeline, and both the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
---     and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
---     features are enabled, and a valid
---     'Vulkan.Extensions.Handles.ShaderEXT' is bound the to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---     stage, and that 'Vulkan.Extensions.Handles.ShaderEXT' was created
---     with the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
---     flag, there /must/ be no 'Vulkan.Extensions.Handles.ShaderEXT' bound
---     to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---     stage
---
--- -   #VUID-vkCmdDrawIndirectCount-None-08696# If there is no bound
---     graphics pipeline, and a valid 'Vulkan.Extensions.Handles.ShaderEXT'
---     is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage, there /must/ be no 'Vulkan.Extensions.Handles.ShaderEXT'
---     bound to either the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---     stage or the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---     stage
---
--- -   #VUID-vkCmdDrawIndirectCount-None-08698# If any graphics shader is
---     bound which was created with the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
---     flag, then all shaders created with the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
---     flag in the same
---     'Vulkan.Extensions.VK_EXT_shader_object.createShadersEXT' call
---     /must/ also be bound
---
--- -   #VUID-vkCmdDrawIndirectCount-None-08699# If any graphics shader is
---     bound which was created with the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
---     flag, any stages in between stages whose shaders which did not
---     create a shader with the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
---     flag as part of the same
---     'Vulkan.Extensions.VK_EXT_shader_object.createShadersEXT' call
---     /must/ not have any 'Vulkan.Extensions.Handles.ShaderEXT' bound
---
--- -   #VUID-vkCmdDrawIndirectCount-None-08878# All bound graphics shader
---     objects /must/ have been created with identical or identically
---     defined push constant ranges
---
--- -   #VUID-vkCmdDrawIndirectCount-None-08879# All bound graphics shader
---     objects /must/ have been created with identical or identically
---     defined arrays of descriptor set layouts
---
--- -   #VUID-vkCmdDrawIndirectCount-colorAttachmentCount-09372# If the
---     current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     and a
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
---     equal to @1@, a color attachment with a resolve mode of
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID',
---     and a fragment shader is bound, it /must/ not declare the
---     @DepthReplacing@ or @StencilRefReplacingEXT@ execution modes
---
--- -   #VUID-vkCmdDrawIndirectCount-pDynamicStates-08715# If the bound
---     graphics pipeline state includes a fragment shader stage, was
---     created with
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE'
---     set in
---     'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@,
---     and the fragment shader declares the @EarlyFragmentTests@ execution
---     mode and uses @OpDepthAttachmentReadEXT@, the @depthWriteEnable@
---     parameter in the last call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthWriteEnable'
---     /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
---
--- -   #VUID-vkCmdDrawIndirectCount-pDynamicStates-08716# If the bound
---     graphics pipeline state includes a fragment shader stage, was
---     created with
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_WRITE_MASK'
---     set in
---     'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@,
---     and the fragment shader declares the @EarlyFragmentTests@ execution
---     mode and uses @OpStencilAttachmentReadEXT@, the @writeMask@
---     parameter in the last call to
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilWriteMask' /must/
---     be @0@
---
--- -   #VUID-vkCmdDrawIndirectCount-None-09116# If a shader object is bound
---     to any graphics stage or the bound graphics pipeline was created
---     with
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT',
---     and the format of any color attachment is
---     'Vulkan.Core10.Enums.Format.FORMAT_E5B9G9R9_UFLOAT_PACK32', the
---     corresponding element of the @pColorWriteMasks@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     /must/ either include all of
---     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_R_BIT',
---     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_G_BIT',
---     and
---     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_B_BIT',
---     or none of them
---
--- -   #VUID-vkCmdDrawIndirectCount-maxFragmentDualSrcAttachments-09239# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blending blending>
---     is enabled for any attachment where either the source or destination
---     blend factors for that attachment
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-dsb use the secondary color input>,
---     the maximum value of @Location@ for any output attachment
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-staticuse statically used>
---     in the @Fragment@ @Execution@ @Model@ executed by this command
---     /must/ be less than
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFragmentDualSrcAttachments maxFragmentDualSrcAttachments>
---
--- -   #VUID-vkCmdDrawIndirectCount-None-09548# If the current render pass
---     was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     and there is no shader object bound to any graphics stage, the value
---     of each element of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingAttachmentLocationInfoKHR'::@pColorAttachmentLocations@
---     set by
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.cmdSetRenderingAttachmentLocationsKHR'
---     /must/ match the value set for the corresponding element in the
---     bound pipeline
---
--- -   #VUID-vkCmdDrawIndirectCount-None-09549# If the current render pass
---     was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     and there is no shader object bound to any graphics stage, input
---     attachment index mappings in the bound pipeline /must/ match those
---     set for the current render pass instance via
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR'
---
--- -   #VUID-vkCmdDrawIndirectCount-None-09642# If the current render pass
---     was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     with the
---     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT'
---     flag, the bound graphics pipeline /must/ have been created with
---     'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT'
---
--- -   #VUID-vkCmdDrawIndirectCount-None-09643# If the bound graphics
---     pipeline was created with
---     'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT',
---     the current render pass /must/ have begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     with the
---     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT'
---     flag
---
--- -   #VUID-vkCmdDrawIndirectCount-None-04007# All vertex input bindings
---     accessed via vertex input variables declared in the vertex shader
---     entry point’s interface /must/ have either valid or
---     'Vulkan.Core10.APIConstants.NULL_HANDLE' buffers bound
---
--- -   #VUID-vkCmdDrawIndirectCount-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-vkCmdDrawIndirectCount-None-02721# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, and that pipeline was created without
---     enabling
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT'
---     for @vertexInputs@, then 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-vkCmdDrawIndirectCount-None-07842# If there is a shader object
---     bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY'
---     dynamic state enabled then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-dynamicPrimitiveTopologyUnrestricted-07500#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY'
---     dynamic state enabled and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-dynamicPrimitiveTopologyUnrestricted dynamicPrimitiveTopologyUnrestricted>
---     is 'Vulkan.Core10.FundamentalTypes.FALSE', then the
---     @primitiveTopology@ parameter of
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
---     /must/ be of the same
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-class topology class>
---     as the pipeline
---     'Vulkan.Core10.Pipeline.PipelineInputAssemblyStateCreateInfo'::@topology@
---     state
---
--- -   #VUID-vkCmdDrawIndirectCount-primitiveTopology-10286# If there is a
---     shader object bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
---     stage, then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
---     /must/ have set @primitiveTopology@ to
---     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST'
---     prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-pStrides-04913# If the bound graphics
---     pipeline was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE'
---     dynamic state enabled, but without the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
---     dynamic state enabled, then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this draw command, and the
---     @pStrides@ parameter of
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2'
---     /must/ not be @NULL@
---
--- -   #VUID-vkCmdDrawIndirectCount-None-04914# If there is a shader object
---     bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage or 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 and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this draw command
---
--- -   #VUID-vkCmdDrawIndirectCount-Input-07939# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-vertexAttributeRobustness vertexAttributeRobustness>
---     is not enabled and there is a shader object bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
---     dynamic state enabled then all variables with the @Input@ storage
---     class decorated with @Location@ in the @Vertex@ @Execution@ @Model@
---     @OpEntryPoint@ /must/ contain a location in
---     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@location@
---
--- -   #VUID-vkCmdDrawIndirectCount-Input-08734# If there is a shader
---     object bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
---     dynamic state enabled and either the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-legacyVertexAttributes legacyVertexAttributes>
---     feature is not enabled or the SPIR-V Type associated with a given
---     @Input@ variable of the corresponding @Location@ in the @Vertex@
---     @Execution@ @Model@ @OpEntryPoint@ is 64-bit, then the numeric type
---     associated with all @Input@ variables of the corresponding
---     @Location@ in the @Vertex@ @Execution@ @Model@ @OpEntryPoint@ /must/
---     be the same as
---     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@
---
--- -   #VUID-vkCmdDrawIndirectCount-format-08936# If there is a shader
---     object bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
---     dynamic state enabled and
---     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@
---     has a 64-bit component, then the scalar width associated with all
---     @Input@ variables of the corresponding @Location@ in the @Vertex@
---     @Execution@ @Model@ @OpEntryPoint@ /must/ be 64-bit
---
--- -   #VUID-vkCmdDrawIndirectCount-format-08937# If there is a shader
---     object bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
---     dynamic state enabled and the scalar width associated with a
---     @Location@ decorated @Input@ variable in the @Vertex@ @Execution@
---     @Model@ @OpEntryPoint@ is 64-bit, then the corresponding
---     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@
---     /must/ have a 64-bit component
---
--- -   #VUID-vkCmdDrawIndirectCount-None-09203# If there is a shader object
---     bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
---     dynamic state enabled and
---     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@
---     has a 64-bit component, then all @Input@ variables at the
---     corresponding @Location@ in the @Vertex@ @Execution@ @Model@
---     @OpEntryPoint@ /must/ not use components that are not present in the
---     format
---
--- -   #VUID-vkCmdDrawIndirectCount-None-04875# If there is a shader object
---     bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
---     stage or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @primitiveTopology@ is
---     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST',
---     then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPatchControlPointsEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-04879# If there is a shader object
---     bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE'
---     dynamic state enabled then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectCount-None-09637# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitiveTopologyListRestart primitiveTopologyListRestart>
---     feature is not enabled, the topology is
---     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_POINT_LIST',
---     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_LINE_LIST',
---     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_TRIANGLE_LIST',
---     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY',
---     or
---     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY',
---     there is a shader object bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE'
---     dynamic state enabled then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnable'
---     /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
---
--- -   #VUID-vkCmdDrawIndirectCount-stage-06481# The bound graphics
---     pipeline /must/ not have been created with the
---     'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo'::@stage@
---     member of any element of
---     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@pStages@ set
---     to
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---
--- -   #VUID-vkCmdDrawIndirectCount-None-08885# There /must/ be no shader
---     object bound to either of the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---     stages
---
--- -   #VUID-vkCmdDrawIndirectCount-buffer-02708# If @buffer@ is non-sparse
---     then it /must/ be bound completely and contiguously to a single
---     'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-vkCmdDrawIndirectCount-buffer-02709# @buffer@ /must/ have been
---     created with the
---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'
---     bit set
---
--- -   #VUID-vkCmdDrawIndirectCount-offset-02710# @offset@ /must/ be a
---     multiple of @4@
---
--- -   #VUID-vkCmdDrawIndirectCount-commandBuffer-02711# @commandBuffer@
---     /must/ not be a protected command buffer
---
--- -   #VUID-vkCmdDrawIndirectCount-countBuffer-02714# If @countBuffer@ is
---     non-sparse then it /must/ be bound completely and contiguously to a
---     single 'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-vkCmdDrawIndirectCount-countBuffer-02715# @countBuffer@ /must/
---     have been created with the
---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'
---     bit set
---
--- -   #VUID-vkCmdDrawIndirectCount-countBufferOffset-02716#
---     @countBufferOffset@ /must/ be a multiple of @4@
---
--- -   #VUID-vkCmdDrawIndirectCount-countBuffer-02717# The count stored in
---     @countBuffer@ /must/ be less than or equal to
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxDrawIndirectCount@
---
--- -   #VUID-vkCmdDrawIndirectCount-countBufferOffset-04129#
---     (@countBufferOffset@ + @sizeof@(uint32_t)) /must/ be less than or
---     equal to the size of @countBuffer@
---
--- -   #VUID-vkCmdDrawIndirectCount-None-04445# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-drawIndirectCount drawIndirectCount>
---     feature is not enabled this function /must/ not be used
---
--- -   #VUID-vkCmdDrawIndirectCount-stride-03110# @stride@ /must/ be a
---     multiple of @4@ and /must/ be greater than or equal to
---     sizeof('Vulkan.Core10.OtherTypes.DrawIndirectCommand')
---
--- -   #VUID-vkCmdDrawIndirectCount-maxDrawCount-03111# If @maxDrawCount@
---     is greater than or equal to @1@, (@stride@ × (@maxDrawCount@ - 1) +
---     @offset@ + sizeof('Vulkan.Core10.OtherTypes.DrawIndirectCommand'))
---     /must/ be less than or equal to the size of @buffer@
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdDrawIndirectCount-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdDrawIndirectCount-buffer-parameter# @buffer@ /must/ be a
---     valid 'Vulkan.Core10.Handles.Buffer' handle
---
--- -   #VUID-vkCmdDrawIndirectCount-countBuffer-parameter# @countBuffer@
---     /must/ be a valid 'Vulkan.Core10.Handles.Buffer' handle
---
--- -   #VUID-vkCmdDrawIndirectCount-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-vkCmdDrawIndirectCount-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
---
--- -   #VUID-vkCmdDrawIndirectCount-renderpass# This command /must/ only be
---     called inside of a render pass instance
---
--- -   #VUID-vkCmdDrawIndirectCount-videocoding# This command /must/ only
---     be called outside of a video coding scope
---
--- -   #VUID-vkCmdDrawIndirectCount-commonparent# Each of @buffer@,
---     @commandBuffer@, and @countBuffer@ /must/ have been created,
---     allocated, or retrieved from the same 'Vulkan.Core10.Handles.Device'
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
--- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Inside                                                                                                                 | Outside                                                                                                                     | Graphics                                                                                                              | Action                                                                                                                                 |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_draw_indirect_count VK_AMD_draw_indirect_count>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_draw_indirect_count VK_KHR_draw_indirect_count>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_2 VK_VERSION_1_2>,
--- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.FundamentalTypes.DeviceSize'
-cmdDrawIndirectCount :: 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)
-                     -> -- | @countBuffer@ is the buffer containing the draw count.
-                        ("countBuffer" ::: Buffer)
-                     -> -- | @countBufferOffset@ is the byte offset into @countBuffer@ where the draw
-                        -- count begins.
-                        ("countBufferOffset" ::: DeviceSize)
-                     -> -- | @maxDrawCount@ specifies the maximum number of draws that will be
-                        -- executed. The actual number of executed draw calls is the minimum of the
-                        -- count specified in @countBuffer@ and @maxDrawCount@.
-                        ("maxDrawCount" ::: Word32)
-                     -> -- | @stride@ is the byte stride between successive sets of draw parameters.
-                        ("stride" ::: Word32)
-                     -> io ()
-cmdDrawIndirectCount commandBuffer
-                       buffer
-                       offset
-                       countBuffer
-                       countBufferOffset
-                       maxDrawCount
-                       stride = liftIO $ do
-  let vkCmdDrawIndirectCountPtr = pVkCmdDrawIndirectCount (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  unless (vkCmdDrawIndirectCountPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdDrawIndirectCount is null" Nothing Nothing
-  let vkCmdDrawIndirectCount' = mkVkCmdDrawIndirectCount vkCmdDrawIndirectCountPtr
-  traceAroundEvent "vkCmdDrawIndirectCount" (vkCmdDrawIndirectCount'
-                                               (commandBufferHandle (commandBuffer))
-                                               (buffer)
-                                               (offset)
-                                               (countBuffer)
-                                               (countBufferOffset)
-                                               (maxDrawCount)
-                                               (stride))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdDrawIndexedIndirectCount
-  :: FunPtr (Ptr CommandBuffer_T -> Buffer -> DeviceSize -> Buffer -> DeviceSize -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> DeviceSize -> Buffer -> DeviceSize -> Word32 -> Word32 -> IO ()
-
--- | vkCmdDrawIndexedIndirectCount - Draw parameters with indirect
--- parameters, indexed vertices, and draw count
---
--- = Description
---
--- 'cmdDrawIndexedIndirectCount' behaves similarly to
--- 'Vulkan.Core10.CommandBufferBuilding.cmdDrawIndexedIndirect' except that
--- the draw count is read by the device from a buffer during execution. The
--- command will read an unsigned 32-bit integer from @countBuffer@ located
--- at @countBufferOffset@ and use this as the draw count.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-magFilter-04553# If a
---     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
---     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR',
---     @reductionMode@ equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
---     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-vkCmdDrawIndexedIndirectCount-magFilter-09598# If a
---     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
---     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR' and
---     @reductionMode@ equal to either
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
---     or
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
---     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_MINMAX_BIT'
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-mipmapMode-04770# If a
---     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
---     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR',
---     @reductionMode@ equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
---     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-vkCmdDrawIndexedIndirectCount-mipmapMode-09599# If a
---     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
---     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'
---     and @reductionMode@ equal to either
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
---     or
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
---     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_MINMAX_BIT'
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-unnormalizedCoordinates-09635#
---     If a 'Vulkan.Core10.Handles.Sampler' created with
---     @unnormalizedCoordinates@ equal to
---     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
---     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
---     the image view’s @levelCount@ and @layerCount@ /must/ be 1
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-unnormalizedCoordinates-09636#
---     If a 'Vulkan.Core10.Handles.Sampler' created with
---     @unnormalizedCoordinates@ equal to
---     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
---     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
---     the image view’s @viewType@ /must/ be
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D' or
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D'
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-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-vkCmdDrawIndexedIndirectCount-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-vkCmdDrawIndexedIndirectCount-None-07888# If a
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'
---     descriptor is accessed using atomic operations as a result of this
---     command, then the storage texel buffer’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-buffer-view-format-features format features>
---     /must/ contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT'
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-02692# If a
---     'Vulkan.Core10.Handles.ImageView' is sampled with
---     'Vulkan.Core10.Enums.Filter.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.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-02693# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_filter_cubic VK_EXT_filter_cubic>
---     extension is not enabled and any 'Vulkan.Core10.Handles.ImageView'
---     is sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as a
---     result of this command, it /must/ not have a
---     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' of
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE', or
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY'
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-filterCubic-02694# Any
---     'Vulkan.Core10.Handles.ImageView' being sampled with
---     'Vulkan.Core10.Enums.Filter.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-vkCmdDrawIndexedIndirectCount-filterCubicMinmax-02695# Any
---     'Vulkan.Core10.Handles.ImageView' being sampled with
---     'Vulkan.Core10.Enums.Filter.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-vkCmdDrawIndexedIndirectCount-cubicRangeClamp-09212# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-cubicRangeClamp cubicRangeClamp>
---     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
---     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
---     a result of this command /must/ not have a
---     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
---     equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-reductionMode-09213# Any
---     'Vulkan.Core10.Handles.ImageView' being sampled with a
---     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
---     equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
---     as a result of this command /must/ sample with
---     'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT'
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-selectableCubicWeights-09214# If
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-selectableCubicWeights selectableCubicWeights>
---     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
---     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
---     a result of this command /must/ have
---     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.SamplerCubicWeightsCreateInfoQCOM'::@cubicWeights@
---     equal to
---     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM'
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-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-vkCmdDrawIndexedIndirectCount-OpTypeImage-07027# For any
---     'Vulkan.Core10.Handles.ImageView' being written as a storage image
---     where the image format field of the @OpTypeImage@ is @Unknown@, the
---     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_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-OpTypeImage-07028# For any
---     'Vulkan.Core10.Handles.ImageView' being read as a storage image
---     where the image format field of the @OpTypeImage@ is @Unknown@, the
---     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_STORAGE_READ_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-OpTypeImage-07029# For any
---     'Vulkan.Core10.Handles.BufferView' being written as a storage texel
---     buffer where the image format field of the @OpTypeImage@ is
---     @Unknown@, the view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
---     /must/ contain
---     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-OpTypeImage-07030# Any
---     'Vulkan.Core10.Handles.BufferView' being read as a storage texel
---     buffer where the image format field of the @OpTypeImage@ is
---     @Unknown@ then the view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
---     /must/ contain
---     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08600# For each set /n/
---     that is statically used by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     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' or the
---     'Vulkan.Core10.Handles.DescriptorSetLayout' array used to create the
---     current 'Vulkan.Extensions.Handles.ShaderEXT' , as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08601# For each push
---     constant that is statically used by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     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' or the
---     'Vulkan.Core10.Handles.DescriptorSetLayout' array used to create the
---     current 'Vulkan.Extensions.Handles.ShaderEXT' , as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-10068# For each array of
---     resources that is used by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     the indices used to access members of the array /must/ be less than
---     the descriptor count for the identified binding in the descriptor
---     sets used by this command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-maintenance4-08602# 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
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     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' or the
---     'Vulkan.Core10.Handles.DescriptorSetLayout' and
---     'Vulkan.Core10.PipelineLayout.PushConstantRange' arrays used to
---     create the current 'Vulkan.Extensions.Handles.ShaderEXT' , as
---     described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08114# Descriptors in each
---     bound descriptor set, specified via
---     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
---     be valid as described by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
---     if they are statically used by the 'Vulkan.Core10.Handles.Pipeline'
---     bound to the pipeline bind point used by this command and the bound
---     'Vulkan.Core10.Handles.Pipeline' was not created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08115# If the descriptors
---     used by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline
---     bind point were specified via
---     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', the
---     bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
---     without
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08116# Descriptors in bound
---     descriptor buffers, specified via
---     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
---     /must/ be valid if they are dynamically used by the
---     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
---     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
---     was created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08604# Descriptors in bound
---     descriptor buffers, specified via
---     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
---     /must/ be valid if they are dynamically used by any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     to the pipeline bind point used by this command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08117# If the descriptors
---     used by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline
---     bind point were specified via
---     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
---     the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
---     with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08119# If a descriptor is
---     dynamically used with a 'Vulkan.Core10.Handles.Pipeline' created
---     with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
---     the descriptor memory /must/ be resident
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08605# If a descriptor is
---     dynamically used with a 'Vulkan.Extensions.Handles.ShaderEXT'
---     created with a 'Vulkan.Core10.Handles.DescriptorSetLayout' that was
---     created with
---     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
---     the descriptor memory /must/ be resident
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08606# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject>
---     feature is not enabled, a valid pipeline /must/ be bound to the
---     pipeline bind point used by this command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08608# If a pipeline is
---     bound to the pipeline bind point used by this command, there /must/
---     not have been any calls to dynamic state setting commands for any
---     state specified statically in the 'Vulkan.Core10.Handles.Pipeline'
---     object bound to the pipeline bind point used by this command, since
---     that pipeline was bound
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08609# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command or any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDrawIndexedIndirectCount-None-08610# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command or any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDrawIndexedIndirectCount-None-08611# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command or any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDrawIndexedIndirectCount-None-08607# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject>
---     feature is enabled, either a valid pipeline /must/ be bound to the
---     pipeline bind point used by this command, or a valid combination of
---     valid and 'Vulkan.Core10.APIConstants.NULL_HANDLE' shader objects
---     /must/ be bound to every supported shader stage corresponding to the
---     pipeline bind point used by this command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-uniformBuffers-06935# If any
---     stage of the 'Vulkan.Core10.Handles.Pipeline' object bound to the
---     pipeline bind point used by this command accesses a uniform buffer,
---     and that stage was created without enabling either
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT'
---     or
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT'
---     for @uniformBuffers@, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, that stage /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-vkCmdDrawIndexedIndirectCount-None-08612# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, and any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDrawIndexedIndirectCount-storageBuffers-06936# If any
---     stage of the 'Vulkan.Core10.Handles.Pipeline' object bound to the
---     pipeline bind point used by this command accesses a storage buffer,
---     and that stage was created without enabling either
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT'
---     or
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT'
---     for @storageBuffers@, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, that stage /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-vkCmdDrawIndexedIndirectCount-None-08613# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, and any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDrawIndexedIndirectCount-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
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shaders>
---     /must/ not be a protected resource
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-06550# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
---     accesses a 'Vulkan.Core10.Handles.Sampler' or
---     'Vulkan.Core10.Handles.ImageView' object that enables
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,
---     that object /must/ only be used with @OpImageSample*@ or
---     @OpImageSparseSample*@ instructions
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-ConstOffset-06551# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
---     accesses a 'Vulkan.Core10.Handles.Sampler' or
---     'Vulkan.Core10.Handles.ImageView' object that enables
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,
---     that object /must/ not use the @ConstOffset@ and @Offset@ operands
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-viewType-07752# If a
---     'Vulkan.Core10.Handles.ImageView' is accessed as a result of this
---     command, then the image view’s @viewType@ /must/ match the @Dim@
---     operand of the @OpTypeImage@ as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-image-dimensions ???>
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-format-07753# If a
---     'Vulkan.Core10.Handles.ImageView' is accessed as a result of this
---     command, then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-numericformat numeric type>
---     of the image view’s @format@ and the @Sampled@ @Type@ operand of the
---     @OpTypeImage@ /must/ match
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-OpImageWrite-08795# If a
---     'Vulkan.Core10.Handles.ImageView' created with a format other than
---     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM_KHR' 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-vkCmdDrawIndexedIndirectCount-OpImageWrite-08796# If a
---     'Vulkan.Core10.Handles.ImageView' created with the format
---     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM_KHR' is accessed using
---     @OpImageWrite@ as a result of this command, then the @Type@ of the
---     @Texel@ operand of that instruction /must/ have four components
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-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-vkCmdDrawIndexedIndirectCount-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-vkCmdDrawIndexedIndirectCount-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-vkCmdDrawIndexedIndirectCount-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-vkCmdDrawIndexedIndirectCount-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-vkCmdDrawIndexedIndirectCount-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-vkCmdDrawIndexedIndirectCount-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-vkCmdDrawIndexedIndirectCount-OpImageWeightedSampleQCOM-06971#
---     If @OpImageWeightedSampleQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-OpImageWeightedSampleQCOM-06972#
---     If @OpImageWeightedSampleQCOM@ uses a
---     'Vulkan.Core10.Handles.ImageView' as a sample weight image 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-OpImageBoxFilterQCOM-06973# If
---     @OpImageBoxFilterQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-OpImageBlockMatchSSDQCOM-06974#
---     If @OpImageBlockMatchSSDQCOM@ is used to read from an
---     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-OpImageBlockMatchSADQCOM-06975#
---     If @OpImageBlockMatchSADQCOM@ is used to read from an
---     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-OpImageBlockMatchSADQCOM-06976#
---     If @OpImageBlockMatchSADQCOM@ or OpImageBlockMatchSSDQCOM is used to
---     read from a reference image as result of this command, then the
---     specified reference coordinates /must/ not fail
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-OpImageWeightedSampleQCOM-06977#
---     If @OpImageWeightedSampleQCOM@, @OpImageBoxFilterQCOM@,
---     @OpImageBlockMatchWindowSSDQCOM@, @OpImageBlockMatchWindowSADQCOM@,
---     @OpImageBlockMatchGatherSSDQCOM@, @OpImageBlockMatchGatherSADQCOM@,
---     @OpImageBlockMatchSSDQCOM@, or @OpImageBlockMatchSADQCOM@ uses a
---     'Vulkan.Core10.Handles.Sampler' as a result of this command, then
---     the sampler /must/ have been created with
---     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-OpImageWeightedSampleQCOM-06978#
---     If any command other than @OpImageWeightedSampleQCOM@,
---     @OpImageBoxFilterQCOM@, @OpImageBlockMatchWindowSSDQCOM@,
---     @OpImageBlockMatchWindowSADQCOM@, @OpImageBlockMatchGatherSSDQCOM@,
---     @OpImageBlockMatchGatherSADQCOM@, @OpImageBlockMatchSSDQCOM@, or
---     @OpImageBlockMatchSADQCOM@ uses a 'Vulkan.Core10.Handles.Sampler' as
---     a result of this command, then the sampler /must/ not have been
---     created with
---     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-OpImageBlockMatchWindow-09215#
---     If a @OpImageBlockMatchWindow*QCOM@ or
---     @OpImageBlockMatchGather*QCOM@ instruction is used to read from an
---     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-OpImageBlockMatchWindow-09216#
---     If a @OpImageBlockMatchWindow*QCOM@ or
---     @OpImageBlockMatchGather*QCOM@ instruction is used to read from an
---     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
---     the image view’s format /must/ be a single-component format
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-OpImageBlockMatchWindow-09217#
---     If a @OpImageBlockMatchWindow*QCOM@ or
---     @OpImageBlockMatchGather*QCOM@ read from a reference image as result
---     of this command, then the specified reference coordinates /must/ not
---     fail
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07288# Any shader
---     invocation executed by this command /must/
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-termination terminate>
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-09600# If a descriptor with
---     type equal to any of
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM',
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM',
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',
---     or
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'
---     is accessed as a result of this command, the image subresource
---     identified by that descriptor /must/ be in the image layout
---     identified when the descriptor was written
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-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-vkCmdDrawIndexedIndirectCount-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-vkCmdDrawIndexedIndirectCount-None-07748# If any shader
---     statically accesses an input attachment, a valid descriptor /must/
---     be bound to the pipeline via a descriptor set
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-OpTypeImage-07468# If any shader
---     executed by this pipeline accesses an @OpTypeImage@ variable with a
---     @Dim@ operand of @SubpassData@, it /must/ be decorated with an
---     @InputAttachmentIndex@ that corresponds to a valid input attachment
---     in the current subpass
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07469# Input attachment
---     views accessed in a subpass /must/ be created with the same
---     'Vulkan.Core10.Enums.Format.Format' as the corresponding subpass
---     definition, and be created with a 'Vulkan.Core10.Handles.ImageView'
---     that is compatible with the attachment referenced by the subpass\'
---     @pInputAttachments@[@InputAttachmentIndex@] in the bound
---     'Vulkan.Core10.Handles.Framebuffer' as specified by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#compatibility-inputattachment Fragment Input Attachment Compatibility>
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-pDepthInputAttachmentIndex-09595#
---     Input attachment views accessed in a dynamic render pass with a
---     @InputAttachmentIndex@ referenced by
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR',
---     or no @InputAttachmentIndex@ if
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR':@pDepthInputAttachmentIndex@
---     or
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR':@pStencilInputAttachmentIndex@
---     are @NULL@, /must/ be created with a
---     'Vulkan.Core10.Handles.ImageView' that is compatible with the
---     corresponding color, depth, or stencil attachment in
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-pDepthInputAttachmentIndex-09596#
---     Input attachment views accessed in a dynamic render pass via a
---     shader object /must/ have an @InputAttachmentIndex@ if both
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR':@pDepthInputAttachmentIndex@
---     and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR':@pStencilInputAttachmentIndex@
---     are non-@NULL@
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-InputAttachmentIndex-09597# If
---     an input attachment view accessed in a dynamic render pass via a
---     shader object has an @InputAttachmentIndex@, the
---     @InputAttachmentIndex@ /must/ match an index in
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR'
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-06537# Memory backing image
---     subresources used as attachments in the current render pass /must/
---     not be written in any way other than as an attachment by this
---     command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-09000# If a color
---     attachment is written by any prior command in this subpass or by the
---     load, store, or resolve operations for this subpass, it is not in
---     the
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
---     image layout, and either:
---
---     -   the
---         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT'
---         is set on the bound pipeline or
---
---     -   the last call to
---         'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
---         included
---         'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'
---         and
---
---         -   there is no bound graphics pipeline or
---
---         -   the bound graphics pipeline was created with
---             'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
---
---     it /must/ not be accessed in any way other than as an attachment by
---     this command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-09001# If a depth
---     attachment is written by any prior command in this subpass or by the
---     load, store, or resolve operations for this subpass, it is not in
---     the
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
---     image layout, and either:
---
---     -   the
---         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT'
---         is set on the bound pipeline or
---
---     -   the last call to
---         'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
---         included
---         'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT'
---         and
---
---         -   there is no bound graphics pipeline or
---
---         -   the bound graphics pipeline was created with
---             'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
---
---     it /must/ not be accessed in any way other than as an attachment by
---     this command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-09002# If a stencil
---     attachment is written by any prior command in this subpass or by the
---     load, store, or resolve operations for this subpass, it is not in
---     the
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
---     image layout, and either:
---
---     -   the
---         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT'
---         is set on the bound pipeline or
---
---     -   the last call to
---         'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
---         included
---         'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
---         and
---
---         -   there is no bound graphics pipeline or
---
---         -   the bound graphics pipeline was created with
---             'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
---
---     it /must/ not be accessed in any way other than as an attachment by
---     this command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-09003# If an attachment is
---     written by any prior command in this subpass or by the load, store,
---     or resolve operations for this subpass, it /must/ not be accessed in
---     any way other than as an attachment, storage image, or sampled image
---     by this command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-06539# If any previously
---     recorded command in the current subpass accessed an image
---     subresource used as an attachment in this subpass in any way other
---     than as an attachment, this command /must/ not write to that image
---     subresource as an attachment
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-06886# If the current
---     render pass instance uses a depth\/stencil attachment with a
---     read-only layout for the depth aspect,
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-depth-write depth writes>
---     /must/ be disabled
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-06887# If the current
---     render pass instance uses a depth\/stencil attachment with a
---     read-only layout for the stencil aspect, both front and back
---     @writeMask@ are not zero, and stencil test is enabled,
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-stencil all stencil ops>
---     /must/ be 'Vulkan.Core10.Enums.StencilOp.STENCIL_OP_KEEP'
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07831# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT' dynamic
---     state enabled then
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetViewport' /must/ have
---     been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07832# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR' dynamic
---     state enabled then
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetScissor' /must/ have been
---     called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07833# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_WIDTH' dynamic
---     state enabled then
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth' /must/ have
---     been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08617# If a shader object
---     is bound to any graphics stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
---     in the current command buffer set @polygonMode@ to
---     'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_LINE',
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth' /must/ have
---     been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08618# If a shader object
---     is bound to any graphics stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
---     in the current command buffer set @primitiveTopology@ to any line
---     topology, 'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08619# If a shader object
---     that outputs line primitives is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE',
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth' /must/ have
---     been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07834# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS' dynamic
---     state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @depthBiasEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBounds' or
---     'Vulkan.Extensions.VK_EXT_depth_bias_control.cmdSetDepthBias2EXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07835# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_BLEND_CONSTANTS'
---     dynamic state enabled then
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetBlendConstants' /must/
---     have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08621# If a shader object
---     is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     in the current command buffer set any element of
---     @pColorBlendEnables@ to 'Vulkan.Core10.FundamentalTypes.TRUE', and
---     the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     in the current command buffer set the same element of
---     @pColorBlendEquations@ to a
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.ColorBlendEquationEXT'
---     structure with any 'Vulkan.Core10.Enums.BlendFactor.BlendFactor'
---     member with a value of
---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_COLOR',
---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR',
---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_ALPHA', or
---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA',
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetBlendConstants' /must/
---     have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07836# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @depthBoundsTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBounds' /must/
---     have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07837# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_COMPARE_MASK'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilCompareMask'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07838# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_WRITE_MASK'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilWriteMask'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07839# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_REFERENCE'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of and @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilReference'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-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-vkCmdDrawIndexedIndirectCount-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-vkCmdDrawIndexedIndirectCount-None-07634# If the
---     @VK_EXT_sample_locations@ extension is enabled, a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-06666# If the
---     @VK_EXT_sample_locations@ extension is enabled, a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then
---     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07840# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CULL_MODE' dynamic
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetCullMode'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07841# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRONT_FACE' dynamic
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetFrontFace'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07843# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_TEST_ENABLE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE',
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthTestEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07844# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthWriteEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07845# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_COMPARE_OP'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @depthTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthCompareOp'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07846# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthBounds depthBounds>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthBoundsTestEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07847# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_TEST_ENABLE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilTestEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07848# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_OP' dynamic
---     state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilOp'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-viewportCount-03417# If a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
---     dynamic state enabled, and the state is not inherited, then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-scissorCount-03418# If a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
---     dynamic state enabled, and the state is not inherited, then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-viewportCount-03419# If a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which 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, and the state is not inherited, then 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-vkCmdDrawIndexedIndirectCount-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-vkCmdDrawIndexedIndirectCount-viewportCount-04138# If the
---     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which 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 state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @viewportWScalingEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.cmdSetViewportWScalingNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08636# If the
---     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which 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 state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @viewportWScalingEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', 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-vkCmdDrawIndexedIndirectCount-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-vkCmdDrawIndexedIndirectCount-shadingRateImage-09233# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV'
---     and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetCoarseSampleOrderNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-shadingRateImage-09234# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which 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 state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @shadingRateImageEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetViewportShadingRatePaletteNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08637# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which 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 state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @shadingRateImageEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', 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-vkCmdDrawIndexedIndirectCount-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
---     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo', 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-vkCmdDrawIndexedIndirectCount-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
---     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo', 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-vkCmdDrawIndexedIndirectCount-None-07878# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-exclusiveScissor exclusiveScissor>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07879# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-exclusiveScissor exclusiveScissor>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV'
---     dynamic state enabled, and the most recent call to
---     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorEnableNV'
---     in the current command buffer set any element of
---     @pExclusiveScissorEnables@ to 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then
---     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-04876# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     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 and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-04877# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-logicOp-04878# If a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_EXT'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @logicOpEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetLogicOpEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-primitiveFragmentShadingRateWithMultipleViewports-04552#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
---     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-vkCmdDrawIndexedIndirectCount-primitiveFragmentShadingRateWithMultipleViewports-08642#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
---     limit is not supported, and any shader object bound to a graphics
---     stage writes 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-vkCmdDrawIndexedIndirectCount-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-vkCmdDrawIndexedIndirectCount-None-08643# If a shader object
---     is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then for each color
---     attachment in the render pass, 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 corresponding member of @pColorBlendEnables@ in the most
---     recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     in the current command buffer that affected that attachment index
---     /must/ have been 'Vulkan.Core10.FundamentalTypes.FALSE'
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-multisampledRenderToSingleSampled-07284#
---     If rasterization is not disabled in the bound graphics pipeline, and
---     none of the following is enabled:
---
---     -   the @VK_AMD_mixed_attachment_samples@ extension
---
---     -   the @VK_NV_framebuffer_mixed_samples@ extension
---
---     -   the
---         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---         feature
---
---     then @rasterizationSamples@ for the bound graphics pipeline /must/
---     be the same as the current subpass color and\/or depth\/stencil
---     attachments
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08644# If a shader object
---     is bound to any graphics stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and none of the following is
---     enabled:
---
---     -   the @VK_AMD_mixed_attachment_samples@ extension
---
---     -   the @VK_NV_framebuffer_mixed_samples@ extension
---
---     -   the
---         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---         feature
---
---     then the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     in the current command buffer /must/ have set @rasterizationSamples@
---     to be the same as the number of samples for the current render pass
---     color and\/or depth\/stencil attachments
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08876# If a shader object
---     is bound to any graphics stage, the current render pass instance
---     /must/ have been begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-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-vkCmdDrawIndexedIndirectCount-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-vkCmdDrawIndexedIndirectCount-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-vkCmdDrawIndexedIndirectCount-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-vkCmdDrawIndexedIndirectCount-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-vkCmdDrawIndexedIndirectCount-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-vkCmdDrawIndexedIndirectCount-viewMask-06178# If the current
---     render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the 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-vkCmdDrawIndexedIndirectCount-colorAttachmentCount-06179# If
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled and the current render pass instance was
---     begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the 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-vkCmdDrawIndexedIndirectCount-dynamicRenderingUnusedAttachments-08910#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and 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 an @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 bound graphics pipeline
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-dynamicRenderingUnusedAttachments-08912#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and 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 an @imageView@ equal to
---     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have the
---     corresponding element of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
---     used to create the bound pipeline equal to
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-dynamicRenderingUnusedAttachments-08911#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is enabled, and 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 an @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 bound graphics pipeline, or the corresponding
---     element of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@,
---     if it exists, /must/ be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-colorAttachmentCount-09362# If
---     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@
---     equal to @1@, there is no shader object bound to any graphics stage,
---     and a color attachment with a resolve mode of
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID',
---     each element of the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
---     array with a @resolveImageView@ not equal to
---     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
---     with an image created with a
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value equal to the
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value used to create the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-09363# If there is no
---     shader object bound to any graphics stage, the current render pass
---     instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     and a
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
---     equal to @1@, and a color attachment with a resolve mode of
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID',
---     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 an image created with a
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value equal to the
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value used to create the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-09364# If the current
---     render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is no shader object bound to any graphics stage, and the bound
---     graphics pipeline was created with a non-zero
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value and with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have set the blend enable to
---     'Vulkan.Core10.FundamentalTypes.FALSE' prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-09365# If the current
---     render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is no shader object bound to any graphics stage, and the bound
---     graphics pipeline was created with a non-zero
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value and with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ have set @rasterizationSamples@ to
---     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' prior
---     to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-09366# If there is a shader
---     object bound to any graphics stage, and the current render pass
---     includes a color attachment that uses the
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID'
---     resolve mode, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have set blend enable to
---     'Vulkan.Core10.FundamentalTypes.FALSE' prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-rasterizationSamples-09367# If
---     there is a shader object bound to any graphics stage, and the
---     current render pass includes a color attachment that uses the
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID'
---     resolve mode, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ have set @rasterizationSamples@ to
---     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' prior
---     to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-09368# If the current
---     render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is no shader object bound to any graphics stage, and the bound
---     graphics pipeline was created with a non-zero
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value and with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
---     /must/ have set @pFragmentSize->width@ to @1@ prior to this drawing
---     command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-09369# If the current
---     render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is no shader object bound to any graphics stage, and the bound
---     graphics pipeline was created with a non-zero
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value and with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
---     /must/ have set @pFragmentSize->height@ to @1@ prior to this drawing
---     command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-pFragmentSize-09370# If there is
---     a shader object bound to any graphics stage, and the current render
---     pass includes a color attachment that uses the
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID'
---     resolve mode, then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
---     /must/ have set @pFragmentSize->width@ to @1@ prior to this drawing
---     command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-pFragmentSize-09371# If there is
---     a shader object bound to any graphics stage, and the current render
---     pass includes a color attachment that uses the
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID'
---     resolve mode, then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
---     /must/ have set @pFragmentSize->height@ to @1@ prior to this drawing
---     command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07749# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08646# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
---     feature is enabled, and a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-attachmentCount-07750# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'
---     dynamic state enabled then the @attachmentCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
---     /must/ be greater than or equal to the
---     'Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo'::@attachmentCount@
---     of the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08647# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
---     feature is enabled, and a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then the @attachmentCount@
---     parameter of most recent call to
---     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
---     in the current command buffer /must/ be greater than or equal to the
---     number of color attachments in the current render pass instance
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07751# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command for each
---     discard rectangle in
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'::@discardRectangleCount@
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07880# If the
---     @VK_EXT_discard_rectangles@ extension is enabled, a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07881# If the
---     @VK_EXT_discard_rectangles@ extension is enabled, a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @discardRectangleEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-rasterizerDiscardEnable-09236#
---     If the @VK_EXT_discard_rectangles@ extension is enabled, and a
---     shader object is bound to any graphics stage, and the most recent
---     call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEnableEXT'
---     in the current command buffer set @discardRectangleEnable@ to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-dynamicRenderingUnusedAttachments-08913#
---     If the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
---     used to create the bound graphics pipeline /must/ be equal to
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-dynamicRenderingUnusedAttachments-08914#
---     If current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->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 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->imageView@
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-dynamicRenderingUnusedAttachments-08915#
---     If the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is enabled,
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
---     used to create the bound graphics pipeline was not equal to the
---     'Vulkan.Core10.Enums.Format.Format' used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@,
---     the value of the format /must/ be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-dynamicRenderingUnusedAttachments-08916#
---     If the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
---     used to create the bound graphics pipeline /must/ be equal to
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-dynamicRenderingUnusedAttachments-08917#
---     If current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->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 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->imageView@
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-dynamicRenderingUnusedAttachments-08918#
---     If the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is enabled,
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
---     used to create the bound graphics pipeline was not equal to the
---     'Vulkan.Core10.Enums.Format.Format' used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@,
---     the value of the format /must/ be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-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_fragment_shading_rate.RenderingFragmentShadingRateAttachmentInfoKHR'::@imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the bound graphics
---     pipeline /must/ have been created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-imageView-06184# If the current
---     render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     and
---     'Vulkan.Extensions.VK_EXT_fragment_density_map.RenderingFragmentDensityMapAttachmentInfoEXT'::@imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the bound graphics
---     pipeline /must/ have been created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT'
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-colorAttachmentCount-06185# If
---     the bound pipeline was created with a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.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_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     used to create the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-pDepthAttachment-06186# If the
---     current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the bound pipeline was created with a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     structure, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
---     @depthStencilAttachmentSamples@ member of
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     used to create the bound graphics pipeline /must/ be equal to the
---     sample count used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-pStencilAttachment-06187# If the
---     current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the bound pipeline was created with a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     structure, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
---     @depthStencilAttachmentSamples@ member of
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     used to create the bound graphics pipeline /must/ be equal to the
---     sample count used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-multisampledRenderToSingleSampled-07285#
---     If the bound pipeline was created without a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     structure, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---     feature is not enabled, 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 @rasterizationSamples@ for
---     the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-multisampledRenderToSingleSampled-07286#
---     If the bound pipeline was created without a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     structure, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     @rasterizationSamples@ for the bound graphics pipeline /must/ be
---     equal to the sample count used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-multisampledRenderToSingleSampled-07287#
---     If the bound pipeline was created without a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     structure, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     @rasterizationSamples@ for the bound graphics pipeline /must/ be
---     equal to the sample count used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-pNext-07935# If this command has
---     been called inside a render pass instance started with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     and the @pNext@ chain of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'
---     includes a
---     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'
---     structure with @multisampledRenderToSingleSampledEnable@ equal to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the value of
---     @rasterizationSamples@ for the bound graphics pipeline /must/ be
---     equal to
---     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'::@rasterizationSamples@
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-renderPass-06198# If the current
---     render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the bound pipeline /must/ have been created with a
---     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@renderPass@
---     equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE'
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-pColorAttachments-08963# If the
---     current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is a graphics pipeline bound with a fragment shader that
---     statically writes to a color attachment, the color write mask is not
---     zero, color writes are enabled, and the corresponding element of the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
---     corresponding element of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
---     used to create the pipeline /must/ not be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-pDepthAttachment-08964# If the
---     current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is a graphics pipeline bound, depth test is enabled, depth
---     write is enabled, and the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
---     used to create the pipeline /must/ not be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-pStencilAttachment-08965# If the
---     current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is a graphics pipeline bound, stencil test is enabled and the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
---     used to create the pipeline /must/ not be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-primitivesGeneratedQueryWithRasterizerDiscard-06708#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithRasterizerDiscard primitivesGeneratedQueryWithRasterizerDiscard>
---     feature is not enabled and the
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
---     query is active,
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-discard rasterization discard>
---     /must/ not be enabled
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-primitivesGeneratedQueryWithNonZeroStreams-06709#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>
---     feature is not enabled and the
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
---     query is active, the bound graphics pipeline /must/ not have been
---     created with a non-zero value in
---     'Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT'::@rasterizationStream@
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07619# If a shader object
---     is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetTessellationDomainOriginEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07620# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClamp depthClamp>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClampEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07621# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_POLYGON_MODE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07622# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07623# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-alphaToCoverageEnable-08919# If
---     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT'
---     dynamic state enabled, and @alphaToCoverageEnable@ was
---     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-fragmentoutput Fragment Output Interface>
---     /must/ contain a variable for the alpha @Component@ word in
---     @Location@ 0 at @Index@ 0
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-alphaToCoverageEnable-08920# If
---     a shader object is bound to any graphics stage, and the most recent
---     call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT'
---     in the current command buffer set @alphaToCoverageEnable@ to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-fragmentoutput Fragment Output Interface>
---     /must/ contain a variable for the alpha @Component@ word in
---     @Location@ 0 at @Index@ 0
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07624# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07625# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-alphaToOne alphaToOne>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToOneEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07626# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-logicOp logicOp>
---     feature is enabled, a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLogicOpEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07627# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08657# If a shader object
---     is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and both the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE' and there are color
---     attachments bound, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07628# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08658# If a shader object
---     is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     for any attachment set that attachment’s value in
---     @pColorBlendEnables@ to 'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07629# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08659# If a shader object
---     is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and both the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE' and there are color
---     attachments bound, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07630# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryStreams geometryStreams>
---     feature is enabled, and a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_STREAM_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationStreamEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07631# If the
---     @VK_EXT_conservative_rasterization@ extension is enabled, a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetConservativeRasterizationModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07632# If the
---     @VK_EXT_conservative_rasterization@ extension is enabled, a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @conservativeRasterizationMode@ is
---     'Vulkan.Extensions.VK_EXT_conservative_rasterization.CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT',
---     then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetExtraPrimitiveOverestimationSizeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07633# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClipEnable depthClipEnable>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT'
---     dynamic state, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07635# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-rasterizerDiscardEnable-09416#
---     If the @VK_EXT_blend_operation_advanced@ extension is enabled, and a
---     shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then at least one of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     and
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07636# If the
---     @VK_EXT_provoking_vertex@ extension is enabled, a shader object is
---     bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetProvokingVertexModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07637# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08666# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object is bound to any graphics
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
---     in the current command buffer set @polygonMode@ to
---     'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_LINE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08667# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
---     in the current command buffer set @primitiveTopology@ to any line
---     topology, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08668# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object that outputs line
---     primitives is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07638# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08669# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object is bound to any graphics
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
---     in the current command buffer set @polygonMode@ to
---     'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_LINE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08670# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
---     in the current command buffer set @primitiveTopology@ to any line
---     topology, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08671# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object that outputs line
---     primitives is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07849# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled and a shader object is bound to any graphics
---     stage, or a bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_KHR'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @stippledLineEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then
---     'Vulkan.Extensions.VK_KHR_line_rasterization.cmdSetLineStippleKHR'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07639# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClipControl depthClipControl>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipNegativeOneToOneEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-09650# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClampControl depthClampControl>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @depthClampEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_depth_clamp_control.cmdSetDepthClampRangeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07640# If the
---     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportWScalingEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07641# If the
---     @VK_NV_viewport_swizzle@ extension is enabled, and a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07642# If the
---     @VK_NV_fragment_coverage_to_color@ extension is enabled, a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07643# If the
---     @VK_NV_fragment_coverage_to_color@ extension is enabled, a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @coverageToColorEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07644# If the
---     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationModeNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07645# If the
---     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @coverageModulationMode@ is any value other than
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.COVERAGE_MODULATION_MODE_NONE_NV',
---     then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07646# If the
---     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @coverageModulationTableEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07647# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetShadingRateImageEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-pipelineFragmentShadingRate-09238#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate>
---     feature is enabled, a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07648# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-representativeFragmentTest representativeFragmentTest>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRepresentativeFragmentTestEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07649# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-coverageReductionMode coverageReductionMode>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageReductionModeNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-pColorBlendEnables-07470# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---     state enabled and the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     set @pColorBlendEnables@ for any attachment to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then for those attachments in
---     the subpass 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>
---     /must/ contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT'
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-rasterizationSamples-07471# If
---     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the current subpass does not use any color
---     and\/or depth\/stencil attachments, then the @rasterizationSamples@
---     in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ follow the rules for a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-noattachments zero-attachment subpass>
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-samples-07472# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
---     state enabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state disabled, then the @samples@ parameter in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
---     /must/ be greater or equal to the
---     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
---     parameter used to create the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-samples-07473# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
---     state and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     states enabled, then the @samples@ parameter in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
---     /must/ be greater or equal to the @rasterizationSamples@ parameter
---     in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-rasterizationSamples-07474# If
---     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---     feature is not enabled, and neither the
---     @VK_AMD_mixed_attachment_samples@ nor the
---     @VK_NV_framebuffer_mixed_samples@ extensions are enabled, then the
---     @rasterizationSamples@ in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ be the same as the current subpass color and\/or
---     depth\/stencil attachments
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-09211# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, or a shader object is bound to any graphics stage,
---     and the current render pass instance includes a
---     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'
---     structure with @multisampledRenderToSingleSampledEnable@ equal to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the
---     @rasterizationSamples@ in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ be the same as the @rasterizationSamples@ member of that
---     structure
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-firstAttachment-07476# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     calls /must/ specify an enable for all active color attachments in
---     the current subpass
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-rasterizerDiscardEnable-09417#
---     If a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     calls /must/ specify an enable for all active color attachments in
---     the current subpass
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-firstAttachment-07477# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     calls /must/ specify the blend equations for all active color
---     attachments in the current subpass where blending is enabled
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-rasterizerDiscardEnable-09418#
---     If a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and both the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE' and there are color
---     attachments bound, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     calls /must/ specify the blend equations for all active color
---     attachments in the current subpass where blending is enabled
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-firstAttachment-07478# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     calls /must/ specify the color write mask for all active color
---     attachments in the current subpass
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-rasterizerDiscardEnable-09419#
---     If a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     calls /must/ specify the color write mask for all active color
---     attachments in the current subpass
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-firstAttachment-07479# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
---     calls /must/ specify the advanced blend equations for all active
---     color attachments in the current subpass where blending is enabled
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-advancedBlendMaxColorAttachments-07480#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
---     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---     dynamic states enabled and the last calls to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     and
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
---     have enabled advanced blending, then the number of active color
---     attachments in the current subpass /must/ not exceed
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-advancedBlendMaxColorAttachments advancedBlendMaxColorAttachments>
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-primitivesGeneratedQueryWithNonZeroStreams-07481#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>
---     feature is not enabled and the
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
---     query is active, and the bound graphics pipeline was created with
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_STREAM_EXT'
---     state enabled, the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationStreamEXT'
---     /must/ have set the @rasterizationStream@ to zero
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-sampleLocationsPerPixel-07482#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state enabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state disabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then the @sampleLocationsPerPixel@ member of @pSampleLocationsInfo@
---     in the last call to
---     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
---     /must/ equal the @rasterizationSamples@ member of the
---     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'
---     structure the bound graphics pipeline has been created with
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-sampleLocationsPerPixel-07483#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state enabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then the @sampleLocationsPerPixel@ member of @pSampleLocationsInfo@
---     in the last call to
---     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
---     /must/ equal the @rasterizationSamples@ parameter of the last call
---     to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-sampleLocationsEnable-07484# If
---     a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, or the bound graphics pipeline was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     state enabled, and @sampleLocationsEnable@ was
---     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
---     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-vkCmdDrawIndexedIndirectCount-sampleLocationsEnable-07485# If
---     a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state enabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     state enabled, and if @sampleLocationsEnable@ was
---     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
---     then the @sampleLocationsInfo.sampleLocationGridSize.width@ in the
---     last call to
---     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
---     /must/ evenly divide
---     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@sampleLocationGridSize.width@
---     as returned by
---     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
---     with a @samples@ parameter equaling @rasterizationSamples@
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-sampleLocationsEnable-07486# If
---     a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state enabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     state enabled, and if @sampleLocationsEnable@ was
---     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
---     then the @sampleLocationsInfo.sampleLocationGridSize.height@ in the
---     last call to
---     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
---     /must/ evenly divide
---     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@sampleLocationGridSize.height@
---     as returned by
---     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
---     with a @samples@ parameter equaling @rasterizationSamples@
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-sampleLocationsEnable-07487# If
---     a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     state enabled, and if @sampleLocationsEnable@ was
---     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
---     the fragment shader code /must/ not statically use the extended
---     instruction @InterpolateAtSample@
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-sampleLocationsEnable-07936# If
---     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state disabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then @sampleLocationsInfo.sampleLocationGridSize.width@ /must/
---     evenly divide
---     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@sampleLocationGridSize.width@
---     as returned by
---     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
---     with a @samples@ parameter equaling the value of
---     @rasterizationSamples@ in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-sampleLocationsEnable-07937# If
---     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state disabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then @sampleLocationsInfo.sampleLocationGridSize.height@ /must/
---     evenly divide
---     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@sampleLocationGridSize.height@
---     as returned by
---     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
---     with a @samples@ parameter equaling the value of
---     @rasterizationSamples@ in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-sampleLocationsEnable-07938# If
---     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state disabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then @sampleLocationsInfo.sampleLocationsPerPixel@ /must/ equal
---     @rasterizationSamples@ in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-coverageModulationTableEnable-07488#
---     If a shader object is bound to any graphics stage or the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV'
---     state enabled, and the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV'
---     set @coverageModulationTableEnable@ to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the
---     @coverageModulationTableCount@ parameter in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableNV'
---     /must/ equal the current @rasterizationSamples@ divided by the
---     number of color samples in the current subpass
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-rasterizationSamples-07489# If
---     the @VK_NV_framebuffer_mixed_samples@ extension is enabled, and if
---     current subpass has a depth\/stencil attachment and depth test,
---     stencil test, or depth bounds test are enabled in the bound
---     pipeline, then the current @rasterizationSamples@ /must/ be the same
---     as the sample count of the depth\/stencil attachment
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-coverageToColorEnable-07490# If
---     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
---     state enabled and the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
---     set the @coverageToColorEnable@ to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the current subpass
---     /must/ have a color attachment at the location selected by the last
---     call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
---     @coverageToColorLocation@, with a
---     'Vulkan.Core10.Enums.Format.Format' of
---     'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R8_SINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R16_UINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R16_SINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R32_UINT', or
---     'Vulkan.Core10.Enums.Format.FORMAT_R32_SINT'
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-rasterizerDiscardEnable-09420#
---     If the @VK_NV_fragment_coverage_to_color@ extension is enabled, and
---     a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
---     set the @coverageToColorEnable@ to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the current subpass
---     /must/ have a color attachment at the location selected by the last
---     call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
---     @coverageToColorLocation@, with a
---     'Vulkan.Core10.Enums.Format.Format' of
---     'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R8_SINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R16_UINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R16_SINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R32_UINT', or
---     'Vulkan.Core10.Enums.Format.FORMAT_R32_SINT'
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-coverageReductionMode-07491# If
---     this @VK_NV_coverage_reduction_mode@ extension is enabled, the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
---     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     states enabled, the current coverage reduction mode
---     @coverageReductionMode@, then the current @rasterizationSamples@,
---     and the sample counts for the color and depth\/stencil attachments
---     (if the subpass has them) /must/ be a valid combination returned by
---     'Vulkan.Extensions.VK_NV_coverage_reduction_mode.getPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV'
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-viewportCount-07492# 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_SWIZZLE_NV'
---     dynamic state enabled, 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-vkCmdDrawIndexedIndirectCount-viewportCount-07493# 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_SWIZZLE_NV'
---     dynamic states enabled then the @viewportCount@ parameter in the
---     last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
---     /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-vkCmdDrawIndexedIndirectCount-viewportCount-09421# If the
---     @VK_NV_viewport_swizzle@ extension is enabled, and a shader object
---     is bound to any graphics stage, then the @viewportCount@ parameter
---     in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
---     /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-vkCmdDrawIndexedIndirectCount-rasterizationSamples-07494# If
---     the @VK_NV_framebuffer_mixed_samples@ extension is enabled, and if
---     the current subpass has any color attachments and
---     @rasterizationSamples@ of the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     is greater than the number of color samples, then the pipeline
---     @sampleShadingEnable@ /must/ be
---     'Vulkan.Core10.FundamentalTypes.FALSE'
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-stippledLineEnable-07495# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---     or
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---     dynamic states enabled, and if the current @stippledLineEnable@
---     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
---     @lineRasterizationMode@ state is
---     'Vulkan.Extensions.VK_KHR_line_rasterization.LINE_RASTERIZATION_MODE_RECTANGULAR_KHR',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>
---     feature /must/ be enabled
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-stippledLineEnable-07496# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---     or
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---     dynamic states enabled, and if the current @stippledLineEnable@
---     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
---     @lineRasterizationMode@ state is
---     'Vulkan.Extensions.VK_KHR_line_rasterization.LINE_RASTERIZATION_MODE_BRESENHAM_KHR',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     feature /must/ be enabled
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-stippledLineEnable-07497# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---     or
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---     dynamic states enabled, and if the current @stippledLineEnable@
---     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
---     @lineRasterizationMode@ state is
---     'Vulkan.Extensions.VK_KHR_line_rasterization.LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     feature /must/ be enabled
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-stippledLineEnable-07498# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---     or
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---     dynamic states enabled, and if the current @stippledLineEnable@
---     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
---     @lineRasterizationMode@ state is
---     'Vulkan.Extensions.VK_KHR_line_rasterization.LINE_RASTERIZATION_MODE_DEFAULT_KHR',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>
---     feature /must/ be enabled and
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@strictLines@
---     /must/ be 'Vulkan.Core10.FundamentalTypes.TRUE'
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-conservativePointAndLineRasterization-07499#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT'
---     dynamic state enabled,
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-conservativePointAndLineRasterization conservativePointAndLineRasterization>
---     is not supported, and the effective primitive topology output by the
---     last pre-rasterization shader stage is a line or point, then the
---     @conservativeRasterizationMode@ set by the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetConservativeRasterizationModeEXT'
---     /must/ be
---     'Vulkan.Extensions.VK_EXT_conservative_rasterization.CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT'
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-stage-07073# If the bound
---     pipeline was 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_VERTEX_BIT',
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT',
---     then
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-mesh-shader Mesh Shader Queries>
---     /must/ not be active
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08877# If a shader object
---     is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07850# If dynamic state was
---     inherited from
---     'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV',
---     it /must/ be set in the current command buffer prior to this drawing
---     command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08684# If there is no bound
---     graphics pipeline,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08685# If there is no bound
---     graphics pipeline, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellationShader>
---     feature is enabled,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08686# If there is no bound
---     graphics pipeline, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellationShader>
---     feature is enabled,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08687# If there is no bound
---     graphics pipeline, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometryShader>
---     feature is enabled,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08688# If there is no bound
---     graphics pipeline,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08689# If there is no bound
---     graphics pipeline, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
---     feature is enabled,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08690# If there is no bound
---     graphics pipeline, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
---     feature is enabled,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08693# If there is no bound
---     graphics pipeline, and at least one of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
---     and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
---     features is enabled, one of the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---     stages /must/ have a valid 'Vulkan.Extensions.Handles.ShaderEXT'
---     bound, and the other /must/ have no
---     'Vulkan.Extensions.Handles.ShaderEXT' bound
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08694# If there is no bound
---     graphics pipeline, and both the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
---     and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
---     features are enabled, and a valid
---     'Vulkan.Extensions.Handles.ShaderEXT' is bound the to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---     stage, and that 'Vulkan.Extensions.Handles.ShaderEXT' was created
---     without the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
---     flag, a valid 'Vulkan.Extensions.Handles.ShaderEXT' /must/ be bound
---     to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---     stage
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08695# If there is no bound
---     graphics pipeline, and both the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
---     and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
---     features are enabled, and a valid
---     'Vulkan.Extensions.Handles.ShaderEXT' is bound the to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---     stage, and that 'Vulkan.Extensions.Handles.ShaderEXT' was created
---     with the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
---     flag, there /must/ be no 'Vulkan.Extensions.Handles.ShaderEXT' bound
---     to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---     stage
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08696# If there is no bound
---     graphics pipeline, and a valid 'Vulkan.Extensions.Handles.ShaderEXT'
---     is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage, there /must/ be no 'Vulkan.Extensions.Handles.ShaderEXT'
---     bound to either the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---     stage or the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---     stage
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08698# If any graphics
---     shader is bound which was created with the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
---     flag, then all shaders created with the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
---     flag in the same
---     'Vulkan.Extensions.VK_EXT_shader_object.createShadersEXT' call
---     /must/ also be bound
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08699# If any graphics
---     shader is bound which was created with the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
---     flag, any stages in between stages whose shaders which did not
---     create a shader with the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
---     flag as part of the same
---     'Vulkan.Extensions.VK_EXT_shader_object.createShadersEXT' call
---     /must/ not have any 'Vulkan.Extensions.Handles.ShaderEXT' bound
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08878# All bound graphics
---     shader objects /must/ have been created with identical or
---     identically defined push constant ranges
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08879# All bound graphics
---     shader objects /must/ have been created with identical or
---     identically defined arrays of descriptor set layouts
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-colorAttachmentCount-09372# If
---     the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     and a
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
---     equal to @1@, a color attachment with a resolve mode of
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID',
---     and a fragment shader is bound, it /must/ not declare the
---     @DepthReplacing@ or @StencilRefReplacingEXT@ execution modes
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-pDynamicStates-08715# If the
---     bound graphics pipeline state includes a fragment shader stage, was
---     created with
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE'
---     set in
---     'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@,
---     and the fragment shader declares the @EarlyFragmentTests@ execution
---     mode and uses @OpDepthAttachmentReadEXT@, the @depthWriteEnable@
---     parameter in the last call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthWriteEnable'
---     /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-pDynamicStates-08716# If the
---     bound graphics pipeline state includes a fragment shader stage, was
---     created with
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_WRITE_MASK'
---     set in
---     'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@,
---     and the fragment shader declares the @EarlyFragmentTests@ execution
---     mode and uses @OpStencilAttachmentReadEXT@, the @writeMask@
---     parameter in the last call to
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilWriteMask' /must/
---     be @0@
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-09116# If a shader object
---     is bound to any graphics stage or the bound graphics pipeline was
---     created with
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT',
---     and the format of any color attachment is
---     'Vulkan.Core10.Enums.Format.FORMAT_E5B9G9R9_UFLOAT_PACK32', the
---     corresponding element of the @pColorWriteMasks@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     /must/ either include all of
---     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_R_BIT',
---     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_G_BIT',
---     and
---     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_B_BIT',
---     or none of them
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-maxFragmentDualSrcAttachments-09239#
---     If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blending blending>
---     is enabled for any attachment where either the source or destination
---     blend factors for that attachment
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-dsb use the secondary color input>,
---     the maximum value of @Location@ for any output attachment
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-staticuse statically used>
---     in the @Fragment@ @Execution@ @Model@ executed by this command
---     /must/ be less than
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFragmentDualSrcAttachments maxFragmentDualSrcAttachments>
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-09548# If the current
---     render pass was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     and there is no shader object bound to any graphics stage, the value
---     of each element of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingAttachmentLocationInfoKHR'::@pColorAttachmentLocations@
---     set by
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.cmdSetRenderingAttachmentLocationsKHR'
---     /must/ match the value set for the corresponding element in the
---     bound pipeline
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-09549# If the current
---     render pass was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     and there is no shader object bound to any graphics stage, input
---     attachment index mappings in the bound pipeline /must/ match those
---     set for the current render pass instance via
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR'
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-09642# If the current
---     render pass was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     with the
---     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT'
---     flag, the bound graphics pipeline /must/ have been created with
---     'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT'
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-09643# If the bound
---     graphics pipeline was created with
---     'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT',
---     the current render pass /must/ have begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     with the
---     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT'
---     flag
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-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-vkCmdDrawIndexedIndirectCount-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-vkCmdDrawIndexedIndirectCount-None-02721# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, and that pipeline was created without
---     enabling
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT'
---     for @vertexInputs@, then 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-vkCmdDrawIndexedIndirectCount-None-07842# If there is a shader
---     object bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY'
---     dynamic state enabled then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-dynamicPrimitiveTopologyUnrestricted-07500#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY'
---     dynamic state enabled and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-dynamicPrimitiveTopologyUnrestricted dynamicPrimitiveTopologyUnrestricted>
---     is 'Vulkan.Core10.FundamentalTypes.FALSE', then the
---     @primitiveTopology@ parameter of
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
---     /must/ be of the same
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-class topology class>
---     as the pipeline
---     'Vulkan.Core10.Pipeline.PipelineInputAssemblyStateCreateInfo'::@topology@
---     state
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-primitiveTopology-10286# If
---     there is a shader object bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
---     stage, then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
---     /must/ have set @primitiveTopology@ to
---     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST'
---     prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-pStrides-04913# If the bound
---     graphics pipeline was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE'
---     dynamic state enabled, but without the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
---     dynamic state enabled, then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this draw command, and the
---     @pStrides@ parameter of
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2'
---     /must/ not be @NULL@
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-04914# If there is a shader
---     object bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage or 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 and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this draw command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-Input-07939# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-vertexAttributeRobustness vertexAttributeRobustness>
---     is not enabled and there is a shader object bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
---     dynamic state enabled then all variables with the @Input@ storage
---     class decorated with @Location@ in the @Vertex@ @Execution@ @Model@
---     @OpEntryPoint@ /must/ contain a location in
---     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@location@
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-Input-08734# If there is a
---     shader object bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
---     dynamic state enabled and either the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-legacyVertexAttributes legacyVertexAttributes>
---     feature is not enabled or the SPIR-V Type associated with a given
---     @Input@ variable of the corresponding @Location@ in the @Vertex@
---     @Execution@ @Model@ @OpEntryPoint@ is 64-bit, then the numeric type
---     associated with all @Input@ variables of the corresponding
---     @Location@ in the @Vertex@ @Execution@ @Model@ @OpEntryPoint@ /must/
---     be the same as
---     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-format-08936# If there is a
---     shader object bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
---     dynamic state enabled and
---     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@
---     has a 64-bit component, then the scalar width associated with all
---     @Input@ variables of the corresponding @Location@ in the @Vertex@
---     @Execution@ @Model@ @OpEntryPoint@ /must/ be 64-bit
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-format-08937# If there is a
---     shader object bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
---     dynamic state enabled and the scalar width associated with a
---     @Location@ decorated @Input@ variable in the @Vertex@ @Execution@
---     @Model@ @OpEntryPoint@ is 64-bit, then the corresponding
---     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@
---     /must/ have a 64-bit component
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-09203# If there is a shader
---     object bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
---     dynamic state enabled and
---     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@
---     has a 64-bit component, then all @Input@ variables at the
---     corresponding @Location@ in the @Vertex@ @Execution@ @Model@
---     @OpEntryPoint@ /must/ not use components that are not present in the
---     format
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-04875# If there is a shader
---     object bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
---     stage or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @primitiveTopology@ is
---     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST',
---     then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPatchControlPointsEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-04879# If there is a shader
---     object bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE'
---     dynamic state enabled then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-09637# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitiveTopologyListRestart primitiveTopologyListRestart>
---     feature is not enabled, the topology is
---     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_POINT_LIST',
---     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_LINE_LIST',
---     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_TRIANGLE_LIST',
---     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY',
---     or
---     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY',
---     there is a shader object bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE'
---     dynamic state enabled then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnable'
---     /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-stage-06481# The bound graphics
---     pipeline /must/ not have been created with the
---     'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo'::@stage@
---     member of any element of
---     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@pStages@ set
---     to
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08885# There /must/ be no
---     shader object bound to either of the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---     stages
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-buffer-02708# If @buffer@ is
---     non-sparse then it /must/ be bound completely and contiguously to a
---     single 'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-buffer-02709# @buffer@ /must/
---     have been created with the
---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'
---     bit set
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-offset-02710# @offset@ /must/ be
---     a multiple of @4@
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-commandBuffer-02711#
---     @commandBuffer@ /must/ not be a protected command buffer
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-countBuffer-02714# If
---     @countBuffer@ is non-sparse then it /must/ be bound completely and
---     contiguously to a single 'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-countBuffer-02715# @countBuffer@
---     /must/ have been created with the
---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'
---     bit set
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-countBufferOffset-02716#
---     @countBufferOffset@ /must/ be a multiple of @4@
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-countBuffer-02717# The count
---     stored in @countBuffer@ /must/ be less than or equal to
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxDrawIndirectCount@
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-countBufferOffset-04129#
---     (@countBufferOffset@ + @sizeof@(uint32_t)) /must/ be less than or
---     equal to the size of @countBuffer@
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-04445# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-drawIndirectCount drawIndirectCount>
---     feature is not enabled this function /must/ not be used
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07312# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance6 maintenance6>
---     feature is not enabled, a valid index buffer /must/ be bound
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-stride-03142# @stride@ /must/ be
---     a multiple of @4@ and /must/ be greater than or equal to
---     sizeof('Vulkan.Core10.OtherTypes.DrawIndexedIndirectCommand')
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-maxDrawCount-03143# If
---     @maxDrawCount@ is greater than or equal to @1@, (@stride@ ×
---     (@maxDrawCount@ - 1) + @offset@ +
---     sizeof('Vulkan.Core10.OtherTypes.DrawIndexedIndirectCommand'))
---     /must/ be less than or equal to the size of @buffer@
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-buffer-parameter# @buffer@
---     /must/ be a valid 'Vulkan.Core10.Handles.Buffer' handle
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-countBuffer-parameter#
---     @countBuffer@ /must/ be a valid 'Vulkan.Core10.Handles.Buffer'
---     handle
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-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-vkCmdDrawIndexedIndirectCount-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-renderpass# This command /must/
---     only be called inside of a render pass instance
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-videocoding# This command /must/
---     only be called outside of a video coding scope
---
--- -   #VUID-vkCmdDrawIndexedIndirectCount-commonparent# Each of @buffer@,
---     @commandBuffer@, and @countBuffer@ /must/ have been created,
---     allocated, or retrieved from the same 'Vulkan.Core10.Handles.Device'
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
--- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Inside                                                                                                                 | Outside                                                                                                                     | Graphics                                                                                                              | Action                                                                                                                                 |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- -   #VUID-vkCmdDrawIndirectCount-None-08609# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the image view’s @viewType@ /must/ be
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D' or
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-08610# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the sampler /must/ not be used with any of the SPIR-V
+--     @OpImageSample*@ or @OpImageSparseSample*@ instructions with
+--     @ImplicitLod@, @Dref@ or @Proj@ in their name
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-08611# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the sampler /must/ not be used with any of the SPIR-V
+--     @OpImageSample*@ or @OpImageSparseSample*@ instructions that
+--     includes a LOD bias or any offset values
+--
+-- -   #VUID-vkCmdDrawIndirectCount-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-vkCmdDrawIndirectCount-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-vkCmdDrawIndirectCount-None-07888# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'
+--     descriptor is accessed using atomic operations as a result of this
+--     command, then the storage texel buffer’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-buffer-view-format-features format features>
+--     /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-02692# If a
+--     'Vulkan.Core10.Handles.ImageView' is sampled with
+--     'Vulkan.Core10.Enums.Filter.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.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-02693# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_filter_cubic VK_EXT_filter_cubic>
+--     extension is not enabled and any 'Vulkan.Core10.Handles.ImageView'
+--     is sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as a
+--     result of this command, it /must/ not have a
+--     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' of
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE', or
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-filterCubic-02694# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with
+--     'Vulkan.Core10.Enums.Filter.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-vkCmdDrawIndirectCount-filterCubicMinmax-02695# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with
+--     'Vulkan.Core10.Enums.Filter.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-vkCmdDrawIndirectCount-cubicRangeClamp-09212# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-cubicRangeClamp cubicRangeClamp>
+--     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
+--     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
+--     a result of this command /must/ not have a
+--     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
+--     equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-reductionMode-09213# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with a
+--     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
+--     equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
+--     as a result of this command /must/ sample with
+--     'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-selectableCubicWeights-09214# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-selectableCubicWeights selectableCubicWeights>
+--     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
+--     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
+--     a result of this command /must/ have
+--     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.SamplerCubicWeightsCreateInfoQCOM'::@cubicWeights@
+--     equal to
+--     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-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-vkCmdDrawIndirectCount-OpTypeImage-07027# For any
+--     'Vulkan.Core10.Handles.ImageView' being written as a storage image
+--     where the image format field of the @OpTypeImage@ is @Unknown@, the
+--     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_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-OpTypeImage-07028# For any
+--     'Vulkan.Core10.Handles.ImageView' being read as a storage image
+--     where the image format field of the @OpTypeImage@ is @Unknown@, the
+--     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_STORAGE_READ_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-OpTypeImage-07029# For any
+--     'Vulkan.Core10.Handles.BufferView' being written as a storage texel
+--     buffer where the image format field of the @OpTypeImage@ is
+--     @Unknown@, the view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
+--     /must/ contain
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-OpTypeImage-07030# Any
+--     'Vulkan.Core10.Handles.BufferView' being read as a storage texel
+--     buffer where the image format field of the @OpTypeImage@ is
+--     @Unknown@ then the view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
+--     /must/ contain
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-08600# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
+--     was created with a pipeline layout and statically uses a set /n/, a
+--     descriptor set /must/ have been bound to /n/ at the same pipeline
+--     bind point, with layouts compatible for set /n/ with the layout(s)
+--     used to create the shader, as described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptors-compatibility ???>
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-08601# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
+--     was created with a pipeline layout or specified push constant ranges
+--     and statically uses a push constant value, that value /must/ have
+--     been set for the same pipeline bind point, with push constant ranges
+--     that are
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptors-compatibility compatible>
+--     with the push constant range used to create the shader
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-10068# For each array of resources
+--     that is used by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
+--     the indices used to access members of the array /must/ be less than
+--     the descriptor count for the identified binding in the descriptor
+--     sets used by this command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-08114# Descriptors in each bound
+--     descriptor set, specified via
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
+--     be valid if they are accessed as described by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
+--     by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
+--     point used by this command and the bound
+--     'Vulkan.Core10.Handles.Pipeline' was not created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-imageLayout-00344# If an image
+--     descriptor is accessed by a shader, the
+--     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' /must/ match the
+--     subresource accessible from the 'Vulkan.Core10.Handles.ImageView' 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>
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-08115# If the descriptors used by
+--     the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
+--     point were specified via
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', the
+--     bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     without
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-08116# Descriptors in bound
+--     descriptor buffers, specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     /must/ be valid if they are dynamically used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
+--     was created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-08604# Descriptors in bound
+--     descriptor buffers, specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     /must/ be valid if they are dynamically used by any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     to the pipeline bind point used by this command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-08117# If the descriptors used by
+--     the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
+--     point were specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-08119# If a descriptor is
+--     dynamically used with a 'Vulkan.Core10.Handles.Pipeline' created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     the descriptor memory /must/ be resident
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-08605# If a descriptor is
+--     dynamically used with a 'Vulkan.Extensions.Handles.ShaderEXT'
+--     created with a 'Vulkan.Core10.Handles.DescriptorSetLayout' that was
+--     created with
+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     the descriptor memory /must/ be resident
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-08606# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject>
+--     feature is not enabled, a valid pipeline /must/ be bound to the
+--     pipeline bind point used by this command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-08608# If a pipeline is bound to
+--     the pipeline bind point used by this command, there /must/ not have
+--     been any calls to dynamic state setting commands for any state
+--     specified statically in the 'Vulkan.Core10.Handles.Pipeline' object
+--     bound to the pipeline bind point used by this command, since that
+--     pipeline was bound
+--
+-- -   #VUID-vkCmdDrawIndirectCount-uniformBuffers-06935# If any stage of
+--     the 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline
+--     bind point used by this command accesses a uniform buffer, and that
+--     stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @uniformBuffers@, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /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-vkCmdDrawIndirectCount-None-08612# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, and any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     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-vkCmdDrawIndirectCount-storageBuffers-06936# If any stage of
+--     the 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline
+--     bind point used by this command accesses a storage buffer, and that
+--     stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @storageBuffers@, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /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-vkCmdDrawIndirectCount-None-08613# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, and any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     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-vkCmdDrawIndirectCount-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
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shaders>
+--     /must/ not be a protected resource
+--
+-- -   #VUID-vkCmdDrawIndirectCount-viewType-07752# If a
+--     'Vulkan.Core10.Handles.ImageView' is accessed as a result of this
+--     command, then the image view’s @viewType@ /must/ match the @Dim@
+--     operand of the @OpTypeImage@ as described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-image-dimensions ???>
+--
+-- -   #VUID-vkCmdDrawIndirectCount-format-07753# If a
+--     'Vulkan.Core10.Handles.ImageView' or
+--     'Vulkan.Core10.Handles.BufferView' is accessed as a result of this
+--     command, then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-numericformat numeric type>
+--     of the view’s @format@ and the @Sampled@ @Type@ operand of the
+--     @OpTypeImage@ /must/ match
+--
+-- -   #VUID-vkCmdDrawIndirectCount-OpImageWrite-08795# If a
+--     'Vulkan.Core10.Handles.ImageView' created with a format other than
+--     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM' 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-vkCmdDrawIndirectCount-OpImageWrite-08796# If a
+--     'Vulkan.Core10.Handles.ImageView' created with the format
+--     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM' is accessed using
+--     @OpImageWrite@ as a result of this command, then the @Type@ of the
+--     @Texel@ operand of that instruction /must/ have four components
+--
+-- -   #VUID-vkCmdDrawIndirectCount-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-vkCmdDrawIndirectCount-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-vkCmdDrawIndirectCount-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-vkCmdDrawIndirectCount-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-vkCmdDrawIndirectCount-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-vkCmdDrawIndirectCount-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-vkCmdDrawIndirectCount-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-vkCmdDrawIndirectCount-OpImageSampleWeightedQCOM-06971# If
+--     @OpImageSampleWeightedQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-OpImageSampleWeightedQCOM-06972# If
+--     @OpImageSampleWeightedQCOM@ uses a 'Vulkan.Core10.Handles.ImageView'
+--     as a sample weight image 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-OpImageBoxFilterQCOM-06973# If
+--     @OpImageBoxFilterQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-OpImageBlockMatchSSDQCOM-06974# If
+--     @OpImageBlockMatchSSDQCOM@ is used to read from an
+--     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
+--     or
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_SXD_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-OpImageBlockMatchSADQCOM-12420# If
+--     @OpImageBlockMatchSADQCOM@ is used to read from an
+--     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
+--     or
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_SXD_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-OpImageBlockMatchSADQCOM-06976# If
+--     @OpImageBlockMatchSADQCOM@ or OpImageBlockMatchSSDQCOM is used to
+--     read from a reference image as result of this command, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-blockMatchExtendedClampToEdge blockMatchExtendedClampToEdge>
+--     feature is not enabled or the /input/ sampler was not created with
+--     both @addressModeU@ and @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--     then the specified reference coordinates /must/ not fail
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
+--
+-- -   #VUID-vkCmdDrawIndirectCount-OpImageSampleWeightedQCOM-06977# If
+--     @OpImageSampleWeightedQCOM@, @OpImageBoxFilterQCOM@,
+--     @OpImageBlockMatchWindowSSDQCOM@, @OpImageBlockMatchWindowSADQCOM@,
+--     @OpImageBlockMatchGatherSSDQCOM@, @OpImageBlockMatchGatherSADQCOM@,
+--     @OpImageBlockMatchSSDQCOM@, or @OpImageBlockMatchSADQCOM@ uses a
+--     'Vulkan.Core10.Handles.Sampler' as a result of this command, then
+--     the sampler /must/ have been created with
+--     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-OpImageSampleWeightedQCOM-06978# If any
+--     command other than @OpImageSampleWeightedQCOM@,
+--     @OpImageBoxFilterQCOM@, @OpImageBlockMatchWindowSSDQCOM@,
+--     @OpImageBlockMatchWindowSADQCOM@, @OpImageBlockMatchGatherSSDQCOM@,
+--     @OpImageBlockMatchGatherSADQCOM@, @OpImageBlockMatchSSDQCOM@, or
+--     @OpImageBlockMatchSADQCOM@ uses a 'Vulkan.Core10.Handles.Sampler' as
+--     a result of this command, then the sampler /must/ not have been
+--     created with
+--     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-OpImageBlockMatchWindow-09215# If a
+--     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     instruction is used to read from an
+--     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-OpImageBlockMatchWindow-09216# If a
+--     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     instruction is used to read from an
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the image view’s format /must/ be a single-component format
+--
+-- -   #VUID-vkCmdDrawIndirectCount-OpImageBlockMatchWindow-09217# If a
+--     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     read from a reference image as result of this command, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-blockMatchExtendedClampToEdge blockMatchExtendedClampToEdge>
+--     feature is not enabled or the /input/ sampler was not created with
+--     both @addressModeU@ and @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--     then the specified reference coordinates /must/ not fail
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
+--
+-- -   #VUID-vkCmdDrawIndirectCount-OpImageBlockMatchWindow-12421# If a
+--     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     instruction uses a 'Vulkan.Core10.Handles.Sampler' as a result of
+--     this command, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-blockMatchExtendedClampToEdge blockMatchExtendedClampToEdge>
+--     is not enabled, the /input/ sampler /must/ not have been created
+--     with either @addressModeU@ or @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-addressModeU-12422# If a
+--     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     instruction uses a 'Vulkan.Core10.Handles.Sampler' as a result of
+--     this command, and the /input/ sampler was created with either
+--     @addressModeU@ or @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE',
+--     then the sampler /must/ have been created with both @addressModeU@
+--     and @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-07288# Any shader invocation
+--     executed by this command /must/
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-termination terminate>
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-09600# If a descriptor with type
+--     equal to any of
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',
+--     or
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'
+--     is accessed as a result of this command, all image subresources
+--     identified by that descriptor /must/ be in the image layout
+--     identified when the descriptor was written
+--
+-- -   #VUID-vkCmdDrawIndirectCount-micromap-11636# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command through an
+--     @OpRayQueryProceedKHR@ operation , the @VK_EXT_opacity_micromap@
+--     extension is not enabled, and the acceleration structure is built
+--     using geometry with a
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapKHR'
+--     structure included in its @pNext@ chain, the shader /must/ have
+--     specified a @OpacityMicromapIdKHR@ execution mode with its
+--     specialization constant operand equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-micromap-11637# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command and the
+--     acceleration structure was constructed through deserialization, all
+--     micromap arrays referenced by the acceleration structure that were
+--     not replaced by an acceleration structure update command /must/ have
+--     been deserialized using the serialized data of the corresponding
+--     micromaps used to originally build the acceleration structure prior
+--     to the execution of this command on the device
+--
+-- -   #VUID-vkCmdDrawIndirectCount-micromap-11638# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command and the
+--     acceleration structure is built using geometry with an @indexBuffer@
+--     containing both
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.OpacityMicromapSpecialIndexKHR'
+--     values and indices into an associated micromap array, any
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command /must/ not have been created with @flags@ that
+--     includes
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_KHR'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-micromap-11639# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command and the
+--     acceleration structure is built using geometry with an @indexBuffer@
+--     containing both
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.OpacityMicromapSpecialIndexKHR'
+--     values and indices into an associated micromap array, any
+--     'Vulkan.Extensions.Handles.ShaderEXT' that accessed the descriptor
+--     /must/ not have been created with @flags@ that includes
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-commandBuffer-10746# The
+--     'Vulkan.Core10.Handles.DeviceMemory' object allocated from a
+--     'Vulkan.Core10.DeviceInitialization.MemoryHeap' with the
+--     'Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_TILE_MEMORY_BIT_QCOM'
+--     property that is bound to a resource accessed as a result of this
+--     command /must/ be the active
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-bind-tile-memory bound tile memory object>
+--     in @commandBuffer@
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-10678# If this command is recorded
+--     inside a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-tile-shading tile shading render pass>
+--     instance, the stages corresponding to the pipeline bind point used
+--     by this command /must/ only include
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT',
+--     and\/or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-10679# If this command is recorded
+--     where
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model>
+--     is enabled, there /must/ be no access to any image while the image
+--     was be transitioned to the
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
+--     layout
+--
+-- -   #VUID-vkCmdDrawIndirectCount-pDescription-09900# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the
+--     underlying 'Vulkan.Extensions.Handles.TensorARM' object /must/ have
+--     been created with the
+--     'Vulkan.Extensions.VK_ARM_tensors.TENSOR_USAGE_SHADER_BIT_ARM' usage
+--     flag set
+--
+-- -   #VUID-vkCmdDrawIndirectCount-dimensionCount-09905# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the @Rank@
+--     of the @OpTypeTensorARM@ of the tensor resource variable /must/ be
+--     equal to the @dimensionCount@ provided via
+--     'Vulkan.Extensions.VK_ARM_tensors.TensorCreateInfoARM'::@pDescription@
+--     when creating the underlying 'Vulkan.Extensions.Handles.TensorARM'
+--     object
+--
+-- -   #VUID-vkCmdDrawIndirectCount-OpTypeTensorARM-09906# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the element
+--     type of the @OpTypeTensorARM@ of the tensor resource variable /must/
+--     be
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-tensor-formats compatible>
+--     with the 'Vulkan.Core10.Enums.Format.Format' of the
+--     'Vulkan.Extensions.Handles.TensorViewARM' used for the access
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-11297# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses a @OpTypeStruct@ decorated with @Block@ or
+--     @BufferBlock@ using that mapping, the calculated offset for the
+--     resource heap /must/ be a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-bufferDescriptorAlignment bufferDescriptorAlignment>
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-11298# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses an @OpTypeImage@ or @OpTypeSampledImage@ using
+--     that mapping, the calculated offset for the resource heap /must/ be
+--     a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-imageDescriptorAlignment imageDescriptorAlignment>
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-11299# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses an @OpTypeSampler@ or @OpTypeSampledImage@
+--     using that mapping, the calculated offset for the sampler heap
+--     /must/ be a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-samplerDescriptorAlignment samplerDescriptorAlignment>
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-11397# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses an @OpTypeTensorARM@ using that mapping, the
+--     calculated offset for the resource heap /must/ be a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-tensorDescriptorAlignment tensorDescriptorAlignment>
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-11300# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a
+--     multiple of 4
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-11301# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' backed by physical
+--     memory at every offset specified by each mapping
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-11302# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-11304# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a
+--     multiple of 8
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-11305# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' backed by physical
+--     memory at every offset specified by each mapping
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-11306# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address pointed to by the address in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-11308# For each
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps descriptor heap>
+--     that is statically used by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
+--     either directly or via a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>,
+--     a valid descriptor heap /must/ be bound
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-11309# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     was created as a 'Vulkan.Extensions.Handles.ShaderEXT' with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag or as part of a pipeline with the
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag, execution of this command /must/ not result in any descriptor
+--     read accessing data outside of the user range of the respective heap
+--     bound by @vkCmdBind*HeapEXT@ commands
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-11372# If any stage of the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command accesses a uniform buffer or uniform
+--     texel buffer through a descriptor in the bound resource heap, that
+--     stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @uniformBuffers@, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /must/ not access values outside
+--     of the range of the descriptor specified via
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+--     when the descriptor was written
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-11373# If any stage of the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command accesses a storage buffer or storage
+--     texel buffer through a descriptor in the bound resource heap, that
+--     stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @storageBuffers@, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /must/ not access values outside
+--     of the range of the descriptor specified by
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+--     when the descriptor was written
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-11374# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, and any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     to the pipeline bind point used by this command accesses a uniform
+--     buffer, uniform texel buffer, storage buffer, or storage texel
+--     buffer, that shader /must/ not access values outside of the range of
+--     the buffer as specified by
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+--     when the descriptor was written
+--
+-- -   #VUID-vkCmdDrawIndirectCount-pBindInfo-11375# If any
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     uses an embedded sampler via a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>,
+--     the value of @pBindInfo->reservedRangeSize@ set for
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.cmdBindSamplerHeapEXT'
+--     /must/ be greater than or equal to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minSamplerHeapReservedRangeWithEmbedded minSamplerHeapReservedRangeWithEmbedded>
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-11376# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     was created as a 'Vulkan.Extensions.Handles.ShaderEXT' with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag or as part of a pipeline with the
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag, and that shader statically uses a push constant value, that
+--     value /must/ have been set by
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.cmdPushDataEXT'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-11398# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_DATA_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_DATA_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_RESOURCE_HEAP_DATA_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the access
+--     /must/ not be
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-execution-memory-access-bounds out of bounds>
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-11437# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the buffer from
+--     which the address in push data was queried /must/ have been created
+--     with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-11438# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a uniform buffer using that mapping, the
+--     address that the uniform buffer is mapped to /must/ have been
+--     queried from a buffer created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-11441# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a uniform buffer using that mapping, the
+--     address that the uniform buffer is mapped to /must/ be aligned to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minUniformBufferOffsetAlignment minUniformBufferOffsetAlignment>
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-11439# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a storage buffer using that mapping, the
+--     address that the storage buffer is mapped to /must/ have been
+--     queried from a buffer created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_STORAGE_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-11442# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a storage buffer using that mapping, the
+--     address that the storage buffer is mapped to /must/ be aligned to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minStorageBufferOffsetAlignment minStorageBufferOffsetAlignment>
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-11485# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses an acceleration structure using that mapping,
+--     the address that the acceleration structure is mapped to /must/ be
+--     an acceleration structure address retrieved from a
+--     'Vulkan.Extensions.Handles.AccelerationStructureKHR' object via
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.getAccelerationStructureDeviceAddressKHR'
+--     or handle retrieved from a
+--     'Vulkan.Extensions.Handles.AccelerationStructureNV' object via
+--     'Vulkan.Extensions.VK_NV_ray_tracing.getAccelerationStructureHandleNV'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-index-11450# If a shader uses a sampler
+--     descriptor to sample an image as a result of this command, and that
+--     sampler descriptor uses a custom border color with an index defined
+--     by
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.SamplerCustomBorderColorIndexCreateInfoEXT',
+--     the value of
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.SamplerCustomBorderColorIndexCreateInfoEXT'::@index@
+--     /must/ have been registered before this command was recorded, and
+--     still be registered during the sampling operation, with an
+--     identically defined color
+--
+-- -   #VUID-vkCmdDrawIndirectCount-protectedNoFault-11455# If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, a pipeline is bound to the pipeline bind point
+--     used by this command, or a shader is bound to a shader stage used by
+--     this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     the address that the resource is mapped to /must/ have been queried
+--     from a buffer created without the
+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT'
+--     create flag set
+--
+-- -   #VUID-vkCmdDrawIndirectCount-protectedNoFault-11456# If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, a pipeline is bound to the pipeline bind point
+--     used by this command, or a shader is bound to a shader stage used by
+--     this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     the address of the indirect memory /must/ have been queried from a
+--     buffer created without the
+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT'
+--     create flag set
+--
+-- -   #VUID-vkCmdDrawIndirectCount-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.GraphicsPipeline.GraphicsPipelineCreateInfo'
+--     structure specified when creating the
+--     'Vulkan.Core10.Handles.Pipeline' bound to
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-subpass-02685# The subpass index of the
+--     current render pass /must/ be equal to the @subpass@ member of the
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'
+--     structure specified when creating the
+--     'Vulkan.Core10.Handles.Pipeline' bound to
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-OpTypeImage-07468# If any shader
+--     executed by this pipeline accesses an @OpTypeImage@ variable with a
+--     @Dim@ operand of @SubpassData@, it /must/ be decorated with an
+--     @InputAttachmentIndex@ that corresponds to a valid input attachment
+--     in the current subpass
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-07469# Input attachment views
+--     accessed in a subpass /must/ be created with the same
+--     'Vulkan.Core10.Enums.Format.Format' as the corresponding subpass
+--     definition, and be created with a 'Vulkan.Core10.Handles.ImageView'
+--     that is compatible with the attachment referenced by the subpass\'
+--     @pInputAttachments@[@InputAttachmentIndex@] in the bound
+--     'Vulkan.Core10.Handles.Framebuffer' as specified by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#compatibility-inputattachment Fragment Input Attachment Compatibility>
+--
+-- -   #VUID-vkCmdDrawIndirectCount-pDepthInputAttachmentIndex-09595# Input
+--     attachment views accessed in a dynamic render pass with a
+--     @InputAttachmentIndex@ referenced by
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo',
+--     or no @InputAttachmentIndex@ if
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pDepthInputAttachmentIndex@
+--     or
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pStencilInputAttachmentIndex@
+--     are @NULL@, /must/ be created with a
+--     'Vulkan.Core10.Handles.ImageView' that is compatible with the
+--     corresponding color, depth, or stencil attachment in
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-pDepthInputAttachmentIndex-09596# Input
+--     attachment views accessed in a dynamic render pass via a shader
+--     object /must/ have an @InputAttachmentIndex@ if both
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pDepthInputAttachmentIndex@
+--     and
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pStencilInputAttachmentIndex@
+--     are non-@NULL@
+--
+-- -   #VUID-vkCmdDrawIndirectCount-InputAttachmentIndex-09597# If an input
+--     attachment view accessed in a dynamic render pass via a shader
+--     object has an @InputAttachmentIndex@, the @InputAttachmentIndex@
+--     /must/ match an index in
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-06537# Memory backing image
+--     subresources used as attachments in the current render pass /must/
+--     not be written in any way other than as an attachment by this
+--     command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-10795# If a color attachment is
+--     written by any prior command in this subpass or by the load, store,
+--     or resolve operations for this subpass, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT' on
+--     that attachment, it /must/ not be accessed in any way other than as
+--     an attachment by this command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-10796# If a depth attachment is
+--     written by any prior command in this subpass or by the load, store,
+--     or resolve operations for this subpass, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' on
+--     that attachment, it /must/ not be accessed in any way other than as
+--     an attachment by this command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-10797# If a stencil attachment is
+--     written by any prior command in this subpass or by the load, store,
+--     or resolve operations for this subpass, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
+--     on that attachment, it /must/ not be accessed in any way other than
+--     as an attachment by this command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-12338# If a color attachment is
+--     read in this command in any way other than as an attachment, or has
+--     been read by any prior command in this subpass as a non-attachment,
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT' on
+--     that attachment, the color attachment /must/ not be written to by
+--     this command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-12339# If a depth attachment is
+--     read in this command in any way other than as an attachment, or has
+--     been read by any prior command in this subpass as a non-attachment,
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' on
+--     that attachment, the depth attachment /must/ not be written to by
+--     this command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-12340# If a stencil attachment is
+--     read in this command in any way other than as an attachment, or has
+--     been read by any prior command in this subpass as a non-attachment,
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
+--     on that attachment, the stencil attachment /must/ not be written to
+--     by this command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-09003# If an attachment is written
+--     by any prior command in this subpass or by the load, store, or
+--     resolve operations for this subpass, it /must/ not be accessed in
+--     any way other than as an attachment, storage image, or sampled image
+--     by this command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-06886# If the current render pass
+--     instance uses a depth\/stencil attachment with a read-only layout
+--     for the depth aspect,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-depth-write depth writes>
+--     /must/ be disabled
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-06887# If the current render pass
+--     instance uses a depth\/stencil attachment with a read-only layout
+--     for the stencil aspect, both front and back @writeMask@ are not
+--     zero, and stencil test is enabled,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-stencil all stencil ops>
+--     /must/ be 'Vulkan.Core10.Enums.StencilOp.STENCIL_OP_KEEP'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-07831# If the bound graphics
+--     pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT' dynamic
+--     state enabled then
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetViewport' /must/ have
+--     been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-07832# If the bound graphics
+--     pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR' dynamic
+--     state enabled then
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetScissor' /must/ have been
+--     called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-08617# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_WIDTH' dynamic
+--     state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line topology class, then
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth' /must/ have
+--     been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-07834# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS' dynamic
+--     state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @depthBiasEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBias' or
+--     'Vulkan.Extensions.VK_EXT_depth_bias_control.cmdSetDepthBias2EXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-07835# If a shader object is bound
+--     to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_BLEND_CONSTANTS'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and an active color
+--     attachment
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @blendEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE' with a
+--     blend equations where any
+--     'Vulkan.Core10.Enums.BlendFactor.BlendFactor' member is
+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_COLOR',
+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR',
+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_ALPHA', or
+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA',
+--     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetBlendConstants'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-07836# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @depthBoundsTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBounds' /must/
+--     have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-07837# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_COMPARE_MASK'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilCompareMask'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-07838# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_WRITE_MASK'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilWriteMask'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-07839# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_REFERENCE'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of and @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilReference'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-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-vkCmdDrawIndirectCount-sampleLocationsEnable-02689# If the
+--     bound graphics pipeline was created with
+--     'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@
+--     set to 'Vulkan.Core10.FundamentalTypes.TRUE', then the active depth
+--     attachment /must/ have been created with the
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'
+--     bit set
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-07634# If the
+--     @VK_EXT_sample_locations@ extension is enabled, a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-06666# If the
+--     @VK_EXT_sample_locations@ extension is enabled, a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-07840# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CULL_MODE' dynamic
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetCullMode'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-07841# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRONT_FACE' dynamic
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetFrontFace'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-07843# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_TEST_ENABLE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE',
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthTestEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-07844# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @depthTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthWriteEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-07845# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_COMPARE_OP'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @depthTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthCompareOp'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-07846# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthBounds depthBounds>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthBoundsTestEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-07847# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_TEST_ENABLE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilTestEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-07848# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_OP' dynamic
+--     state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilOp'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-viewportCount-03417# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
+--     dynamic state enabled, and the state is not inherited, then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-scissorCount-03418# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
+--     dynamic state enabled, and the state is not inherited, then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing
+--
+-- -   #VUID-vkCmdDrawIndirectCount-viewportCount-03419# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     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, and the state is not inherited, then 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-vkCmdDrawIndirectCount-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-vkCmdDrawIndirectCount-viewportCount-04138# If the
+--     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which 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 state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @viewportWScalingEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.cmdSetViewportWScalingNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-08636# If the
+--     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which 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 state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @viewportWScalingEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', 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-vkCmdDrawIndirectCount-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-vkCmdDrawIndirectCount-shadingRateImage-09233# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV'
+--     and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetCoarseSampleOrderNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-shadingRateImage-09234# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which 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 state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @shadingRateImageEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetViewportShadingRatePaletteNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-08637# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which 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 state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @shadingRateImageEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', 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-vkCmdDrawIndirectCount-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
+--     'Vulkan.Core10.GraphicsPipeline.PipelineViewportStateCreateInfo',
+--     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-vkCmdDrawIndirectCount-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
+--     'Vulkan.Core10.GraphicsPipeline.PipelineViewportStateCreateInfo',
+--     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-vkCmdDrawIndirectCount-None-07878# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-exclusiveScissor exclusiveScissor>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-07879# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-exclusiveScissor exclusiveScissor>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV'
+--     dynamic state enabled, and the most recent call to
+--     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorEnableNV'
+--     in the current command buffer set any element of
+--     @pExclusiveScissorEnables@ to 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then
+--     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-04876# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which 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 and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-04877# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-logicOp-04878# If a shader object is
+--     bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @logicOpEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetLogicOpEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-primitiveFragmentShadingRateWithMultipleViewports-04552#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
+--     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-vkCmdDrawIndirectCount-primitiveFragmentShadingRateWithMultipleViewports-08642#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
+--     limit is not supported, and any shader object bound to a graphics
+--     stage writes 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-vkCmdDrawIndirectCount-blendEnable-04727# If a shader object
+--     is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then for each color
+--     attachment, 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 corresponding
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @blendEnable@ /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-08644# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and none of the following is
+--     enabled:
+--
+--     -   the @VK_AMD_mixed_attachment_samples@ extension
+--
+--     -   the @VK_NV_framebuffer_mixed_samples@ extension
+--
+--     -   the
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
+--         feature
+--
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizationSamples@ /must/ be the same as the current color
+--     and\/or depth\/stencil attachments
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-08876# If a shader object is bound
+--     to any graphics stage, the current render pass instance /must/ have
+--     been begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-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-vkCmdDrawIndirectCount-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-vkCmdDrawIndirectCount-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-vkCmdDrawIndirectCount-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-vkCmdDrawIndirectCount-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-vkCmdDrawIndirectCount-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-vkCmdDrawIndirectCount-viewMask-06178# If the current render
+--     pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the 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-vkCmdDrawIndirectCount-colorAttachmentCount-06179# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled and the current render pass instance was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the 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-vkCmdDrawIndirectCount-dynamicRenderingUnusedAttachments-08910#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and 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 an @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 bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawIndirectCount-dynamicRenderingUnusedAttachments-08912#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and 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 an @imageView@ equal to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have the
+--     corresponding element of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
+--     used to create the bound pipeline equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-dynamicRenderingUnusedAttachments-08911#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled, and 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 an @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 bound graphics pipeline, or the corresponding
+--     element of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@,
+--     if it exists, /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-colorAttachmentCount-09362# If 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@
+--     equal to @1@, there is no shader object bound to any graphics stage,
+--     and a color attachment with a resolve mode of
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID',
+--     each element of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
+--     array with a @resolveImageView@ not equal to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
+--     with an image created with a
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value equal to the
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value used to create the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-09363# If there is no shader
+--     object bound to any graphics stage, the current render pass instance
+--     was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and a
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
+--     equal to @1@, and a color attachment with a resolve mode of
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID',
+--     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 an image created with a
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value equal to the
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value used to create the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-09364# If the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there is no shader object bound to any graphics stage, and the bound
+--     graphics pipeline was created with a non-zero
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value and with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
+--     /must/ have set the blend enable to
+--     'Vulkan.Core10.FundamentalTypes.FALSE' prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-09365# If the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there is no shader object bound to any graphics stage, and the bound
+--     graphics pipeline was created with a non-zero
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value and with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     /must/ have set @rasterizationSamples@ to
+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' prior
+--     to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-09366# If there is a shader object
+--     bound to any graphics stage, and the current render pass includes a
+--     color attachment that uses the
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID'
+--     resolve mode, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
+--     /must/ have set blend enable to
+--     'Vulkan.Core10.FundamentalTypes.FALSE' prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-rasterizationSamples-09367# If there is
+--     a shader object bound to any graphics stage, and the current render
+--     pass includes a color attachment that uses the
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID'
+--     resolve mode, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     /must/ have set @rasterizationSamples@ to
+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' prior
+--     to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-09368# If the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there is no shader object bound to any graphics stage, and the bound
+--     graphics pipeline was created with a non-zero
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value and with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     /must/ have set @pFragmentSize->width@ to @1@ prior to this drawing
+--     command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-09369# If the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there is no shader object bound to any graphics stage, and the bound
+--     graphics pipeline was created with a non-zero
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value and with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     /must/ have set @pFragmentSize->height@ to @1@ prior to this drawing
+--     command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-pFragmentSize-09370# If there is a
+--     shader object bound to any graphics stage, and the current render
+--     pass includes a color attachment that uses the
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID'
+--     resolve mode, then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     /must/ have set @pFragmentSize->width@ to @1@ prior to this drawing
+--     command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-pFragmentSize-09371# If there is a
+--     shader object bound to any graphics stage, and the current render
+--     pass includes a color attachment that uses the
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID'
+--     resolve mode, then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     /must/ have set @pFragmentSize->height@ to @1@ prior to this drawing
+--     command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-07749# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
+--     feature is enabled, a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-attachmentCount-07750# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
+--     feature is enabled, a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then the @attachmentCount@
+--     parameter of most recent call to
+--     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
+--     in the current command buffer /must/ be greater than or equal to the
+--     number of active color attachments
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-07751# If the
+--     @VK_EXT_discard_rectangles@ extension is enabled, a graphics
+--     pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_EXT'
+--     dynamic state enabled and the @pNext@ chain of
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo' included
+--     a
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'
+--     structure, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @discardRectangleEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command for each
+--     discard rectangle in
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'::@discardRectangleCount@
+--
+-- -   #VUID-vkCmdDrawIndirectCount-rasterizerDiscardEnable-09236# If the
+--     @VK_EXT_discard_rectangles@ extension is enabled, a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_EXT'
+--     dynamic state enabled and the @pNext@ chain of
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo' did not
+--     include a
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'
+--     structure, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @discardRectangleEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command for each
+--     discard rectangle in
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.PhysicalDeviceDiscardRectanglePropertiesEXT'::@maxDiscardRectangles@
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-07880# If the
+--     @VK_EXT_discard_rectangles@ extension is enabled, a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-07881# If the
+--     @VK_EXT_discard_rectangles@ extension is enabled, a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @discardRectangleEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleModeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-dynamicRenderingUnusedAttachments-08913#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
+--     used to create the bound graphics pipeline /must/ be equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-dynamicRenderingUnusedAttachments-08914#
+--     If current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->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 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->imageView@
+--
+-- -   #VUID-vkCmdDrawIndirectCount-dynamicRenderingUnusedAttachments-08915#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
+--     used to create the bound graphics pipeline was not equal to the
+--     'Vulkan.Core10.Enums.Format.Format' used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@,
+--     the value of the format /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-dynamicRenderingUnusedAttachments-08916#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
+--     used to create the bound graphics pipeline /must/ be equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-dynamicRenderingUnusedAttachments-08917#
+--     If current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->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 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->imageView@
+--
+-- -   #VUID-vkCmdDrawIndirectCount-dynamicRenderingUnusedAttachments-08918#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
+--     used to create the bound graphics pipeline was not equal to the
+--     'Vulkan.Core10.Enums.Format.Format' used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@,
+--     the value of the format /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-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_fragment_shading_rate.RenderingFragmentShadingRateAttachmentInfoKHR'::@imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the bound graphics
+--     pipeline /must/ have been created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-dynamicRenderingLocalRead-11797# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingLocalRead dynamicRenderingLocalRead>
+--     feature is enabled, the
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_LOCAL_READ_CONCURRENT_ACCESS_CONTROL_BIT_KHR'
+--     flag is specified, and an attachment is being used as a feedback
+--     loop as specified by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#rendering-attachment-input-attachment-feedback >,
+--     'Vulkan.Extensions.VK_KHR_maintenance10.RenderingAttachmentFlagsInfoKHR'::@flags@
+--     for that attachment /must/ include
+--     'Vulkan.Extensions.VK_KHR_maintenance10.RENDERING_ATTACHMENT_INPUT_ATTACHMENT_FEEDBACK_BIT_KHR'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-imageView-06184# If the current render
+--     pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and
+--     'Vulkan.Extensions.VK_EXT_fragment_density_map.RenderingFragmentDensityMapAttachmentInfoEXT'::@imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the bound graphics
+--     pipeline /must/ have been created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-layers-10831# If the current render
+--     pass instance was created with
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE'
+--     or
+--     'Vulkan.Core10.Enums.RenderPassCreateFlagBits.RENDER_PASS_CREATE_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE',
+--     and the bound graphics pipeline was created with
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE',
+--     then the current render pass instance /must/ have a @layers@ value
+--     less than or equal to
+--     'Vulkan.Extensions.VK_VALVE_fragment_density_map_layered.PipelineFragmentDensityMapLayeredCreateInfoVALVE'::@maxFragmentDensityMapLayers@
+--
+-- -   #VUID-vkCmdDrawIndirectCount-colorAttachmentCount-06185# If the
+--     bound pipeline was created with a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.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_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     used to create the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawIndirectCount-pDepthAttachment-06186# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the bound pipeline was created with a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     structure, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
+--     @depthStencilAttachmentSamples@ member of
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     used to create the bound graphics pipeline /must/ be equal to the
+--     sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--
+-- -   #VUID-vkCmdDrawIndirectCount-pStencilAttachment-06187# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the bound pipeline was created with a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     structure, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
+--     @depthStencilAttachmentSamples@ member of
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     used to create the bound graphics pipeline /must/ be equal to the
+--     sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--
+-- -   #VUID-vkCmdDrawIndirectCount-multisampledRenderToSingleSampled-07285#
+--     If the bound pipeline was created without a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     structure, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
+--     feature is not enabled, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, 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 @rasterizationSamples@ for
+--     the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawIndirectCount-multisampledRenderToSingleSampled-07286#
+--     If the bound pipeline was created without a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     structure, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
+--     feature is not enabled, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     @rasterizationSamples@ for the bound graphics pipeline /must/ be
+--     equal to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--
+-- -   #VUID-vkCmdDrawIndirectCount-multisampledRenderToSingleSampled-07287#
+--     If the bound pipeline was created without a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     structure, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
+--     feature is not enabled, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     @rasterizationSamples@ for the bound graphics pipeline /must/ be
+--     equal to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--
+-- -   #VUID-vkCmdDrawIndirectCount-pNext-07935# If this command is called
+--     inside a render pass instance started with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     and the @pNext@ chain of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'
+--     includes a
+--     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'
+--     structure with @multisampledRenderToSingleSampledEnable@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then the value of
+--     @rasterizationSamples@ for the bound graphics pipeline /must/ be
+--     equal to
+--     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'::@rasterizationSamples@
+--
+-- -   #VUID-vkCmdDrawIndirectCount-renderPass-06198# If the current render
+--     pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the bound pipeline /must/ have been created with a
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'::@renderPass@
+--     equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-pColorAttachments-08963# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, there is a
+--     graphics pipeline bound with a fragment shader that statically
+--     writes to a color attachment, the color write mask is not zero,
+--     color writes are enabled, and the corresponding element of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     corresponding element of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-pColorAttachments-11539# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, there is a graphics
+--     pipeline bound with a fragment shader that statically writes to a
+--     color attachment, the color write mask is not zero, color writes are
+--     enabled, and the corresponding element of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     corresponding element of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-pDepthAttachment-08964# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, there is a
+--     graphics pipeline bound, depth test is enabled, and the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-pDepthAttachment-11540# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, there is a graphics
+--     pipeline bound, depth test is enabled, and the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-pStencilAttachment-08965# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, there is a
+--     graphics pipeline bound, stencil test is enabled and the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-pStencilAttachment-11860# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, there is a graphics
+--     pipeline bound, stencil test is enabled and the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-flags-10582# If the current render pass
+--     instance was begun with a
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     call in @commandBuffer@, its
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@flags@
+--     parameter /must/ not have
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT'
+--     set unless
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_CONTENTS_INLINE_BIT_KHR'
+--     is also set
+--
+-- -   #VUID-vkCmdDrawIndirectCount-primitivesGeneratedQueryWithRasterizerDiscard-06708#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithRasterizerDiscard primitivesGeneratedQueryWithRasterizerDiscard>
+--     feature is not enabled and the
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
+--     query is active,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-discard rasterization discard>
+--     /must/ not be enabled
+--
+-- -   #VUID-vkCmdDrawIndirectCount-primitivesGeneratedQueryWithNonZeroStreams-06709#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>
+--     feature is not enabled and the
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
+--     query is active, the bound graphics pipeline /must/ not have been
+--     created with a non-zero value in
+--     'Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT'::@rasterizationStream@
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-07620# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClamp depthClamp>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClampEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-07621# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_POLYGON_MODE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-07622# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-07623# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-alphaToCoverageEnable-08919# If the
+--     bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT'
+--     dynamic state enabled, and @alphaToCoverageEnable@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-fragmentoutput Fragment Output Interface>
+--     /must/ contain a variable for the alpha @Component@ word in
+--     @Location@ 0 at @Index@ 0
+--
+-- -   #VUID-vkCmdDrawIndirectCount-alphaToCoverageEnable-08920# If a
+--     shader object is bound to any graphics stage, and the most recent
+--     call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT'
+--     in the current command buffer set @alphaToCoverageEnable@ to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-fragmentoutput Fragment Output Interface>
+--     /must/ contain a variable for the alpha @Component@ word in
+--     @Location@ 0 at @Index@ 0
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-07624# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-07625# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-alphaToOne alphaToOne>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToOneEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-07626# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-logicOp logicOp>
+--     feature is enabled, a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLogicOpEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-07627# If a shader object is bound
+--     to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and there are color
+--     attachments bound, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-07629# If a shader object is bound
+--     to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and there are color
+--     attachments bound, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-07630# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryStreams geometryStreams>
+--     feature is enabled, and a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
+--     stage or a graphics pipeline is bound which was created with both a
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
+--     stage and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_STREAM_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationStreamEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-07631# If the
+--     @VK_EXT_conservative_rasterization@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetConservativeRasterizationModeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-07632# If the
+--     @VK_EXT_conservative_rasterization@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @conservativeRasterizationMode@ is
+--     'Vulkan.Extensions.VK_EXT_conservative_rasterization.CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT',
+--     then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetExtraPrimitiveOverestimationSizeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-conservativePointAndLineRasterization-07499#
+--     If the @VK_EXT_conservative_rasterization@ extension is enabled,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-conservativePointAndLineRasterization conservativePointAndLineRasterization>
+--     is not supported, a shader object is bound to any graphics stage or
+--     a graphics pipeline is bound, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line or point topology class, then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @conservativeRasterizationMode@ /must/ be
+--     'Vulkan.Extensions.VK_EXT_conservative_rasterization.CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-07633# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClipEnable depthClipEnable>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT'
+--     dynamic state, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-07636# If the
+--     @VK_EXT_provoking_vertex@ extension is enabled, a shader object is
+--     bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetProvokingVertexModeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-08666# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
+--     features are enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line topology class, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-08669# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
+--     features are enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line topology class, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-07849# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
+--     features are enabled and a shader object is bound to any graphics
+--     stage, or a bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @stippledLineEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then
+--     'Vulkan.Core14.Promoted_From_VK_KHR_line_rasterization.cmdSetLineStipple'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-10608# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line topology class, and the current @lineRasterizationMode@
+--     is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_BRESENHAM'
+--     or
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH',
+--     then the current @alphaToCoverageEnable@, @alphaToOneEnable@ and
+--     @sampleShadingEnable@ states /must/ all be
+--     'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-07639# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClipControl depthClipControl>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipNegativeOneToOneEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-09650# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClampControl depthClampControl>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @depthClampEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_depth_clamp_control.cmdSetDepthClampRangeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-07640# If the
+--     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportWScalingEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-07641# If the
+--     @VK_NV_viewport_swizzle@ extension is enabled, and a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-07642# If the
+--     @VK_NV_fragment_coverage_to_color@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-07643# If the
+--     @VK_NV_fragment_coverage_to_color@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @coverageToColorEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-07644# If the
+--     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationModeNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-07645# If the
+--     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @coverageModulationMode@ is any value other than
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.COVERAGE_MODULATION_MODE_NONE_NV',
+--     then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-07646# If the
+--     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @coverageModulationTableEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-07647# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetShadingRateImageEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-pipelineFragmentShadingRate-09238# If
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-07648# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-representativeFragmentTest representativeFragmentTest>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRepresentativeFragmentTestEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-07649# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-coverageReductionMode coverageReductionMode>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageReductionModeNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-rasterizationSamples-07471# If the
+--     bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, and the current subpass does not use any color
+--     and\/or depth\/stencil attachments, then the @rasterizationSamples@
+--     in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     /must/ follow the rules for a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-noattachments zero-attachment subpass>
+--
+-- -   #VUID-vkCmdDrawIndirectCount-samples-07472# If the bound graphics
+--     pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
+--     state enabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state disabled, then the @samples@ parameter in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
+--     /must/ be greater or equal to the
+--     'Vulkan.Core10.GraphicsPipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
+--     parameter used to create the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawIndirectCount-samples-07473# If the bound graphics
+--     pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
+--     state and
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     states enabled, then the @samples@ parameter in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
+--     /must/ be greater or equal to the @rasterizationSamples@ parameter
+--     in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-09211# If the bound graphics
+--     pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, or a shader object is bound to any graphics stage,
+--     and the current render pass instance includes a
+--     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'
+--     structure with @multisampledRenderToSingleSampledEnable@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then the
+--     @rasterizationSamples@ in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     /must/ be the same as the @rasterizationSamples@ member of that
+--     structure
+--
+-- -   #VUID-vkCmdDrawIndirectCount-firstAttachment-07476# If a shader
+--     object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--     dynamic states enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
+--     in the current command buffer prior to this drawing command /must/
+--     have set a value for all active color attachments
+--
+-- -   #VUID-vkCmdDrawIndirectCount-firstAttachment-07478# If a shader
+--     object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT'
+--     dynamic states enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
+--     in the current command buffer prior to this drawing command /must/
+--     have set a value for all active color attachments
+--
+-- -   #VUID-vkCmdDrawIndirectCount-advancedBlendMaxColorAttachments-07480#
+--     If a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
+--     and
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--     dynamic states enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and an active color
+--     attachment
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @blendEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then the
+--     number of active color attachments /must/ not exceed
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-advancedBlendMaxColorAttachments advancedBlendMaxColorAttachments>
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-10862# If a graphics pipeline is
+--     bound was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
+--     , but not the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command for all
+--     active color attachments with the @blendEnable@
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-rasterizerDiscardEnable-10863# If a
+--     graphics pipeline is bound was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT',
+--     but not the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command for all
+--     active color attachments with the @blendEnable@
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-10864# If a shader object is bound
+--     to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
+--     and
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then either
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command for all
+--     active color attachments with the @blendEnable@
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-primitivesGeneratedQueryWithNonZeroStreams-07481#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>
+--     feature is not enabled and the
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
+--     query is active, and the bound graphics pipeline was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_STREAM_EXT'
+--     state enabled, the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationStreamEXT'
+--     /must/ have set the @rasterizationStream@ to zero
+--
+-- -   #VUID-vkCmdDrawIndirectCount-sampleLocationsPerPixel-07482# If the
+--     bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state enabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state disabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then the @sampleLocationsPerPixel@ member of @pSampleLocationsInfo@
+--     in the last call to
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     /must/ equal the @rasterizationSamples@ member of the
+--     'Vulkan.Core10.GraphicsPipeline.PipelineMultisampleStateCreateInfo'
+--     structure the bound graphics pipeline has been created with
+--
+-- -   #VUID-vkCmdDrawIndirectCount-sampleLocationsPerPixel-07483# If the
+--     bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state enabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then the @sampleLocationsPerPixel@ member of @pSampleLocationsInfo@
+--     in the last call to
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     /must/ equal the @rasterizationSamples@ parameter of the last call
+--     to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-sampleLocationsEnable-07484# If a
+--     shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage, or the bound graphics pipeline was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     state enabled, and @sampleLocationsEnable@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT'
+--     then the current active depth attachment /must/ have been created
+--     with the
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'
+--     bit set
+--
+-- -   #VUID-vkCmdDrawIndirectCount-sampleLocationsEnable-07485# If a
+--     shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage, or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state enabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     state enabled, and if @sampleLocationsEnable@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
+--     then the @sampleLocationsInfo.maxSampleLocationGridSize.width@ in
+--     the last call to
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     /must/ evenly divide
+--     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.width@
+--     as returned by
+--     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
+--     with a @samples@ parameter equaling @rasterizationSamples@
+--
+-- -   #VUID-vkCmdDrawIndirectCount-sampleLocationsEnable-07486# If a
+--     shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage, or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state enabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     state enabled, and if @sampleLocationsEnable@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
+--     then the @sampleLocationsInfo.maxSampleLocationGridSize.height@ in
+--     the last call to
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     /must/ evenly divide
+--     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.height@
+--     as returned by
+--     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
+--     with a @samples@ parameter equaling @rasterizationSamples@
+--
+-- -   #VUID-vkCmdDrawIndirectCount-sampleLocationsEnable-07487# If a
+--     shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage, or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     state enabled, and if @sampleLocationsEnable@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
+--     the fragment shader code /must/ not statically use the extended
+--     instruction @InterpolateAtSample@
+--
+-- -   #VUID-vkCmdDrawIndirectCount-sampleLocationsEnable-07936# If the
+--     bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state disabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then @sampleLocationsInfo.sampleLocationGridSize.width@ /must/
+--     evenly divide
+--     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.width@
+--     as returned by
+--     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
+--     with a @samples@ parameter equaling the value of
+--     @rasterizationSamples@ in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-sampleLocationsEnable-07937# If the
+--     bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state disabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then @sampleLocationsInfo.sampleLocationGridSize.height@ /must/
+--     evenly divide
+--     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.height@
+--     as returned by
+--     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
+--     with a @samples@ parameter equaling the value of
+--     @rasterizationSamples@ in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-sampleLocationsEnable-07938# If the
+--     bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state disabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then @sampleLocationsInfo.sampleLocationsPerPixel@ /must/ equal
+--     @rasterizationSamples@ in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-coverageModulationTableEnable-07488# If
+--     a shader object is bound to any graphics stage or the bound graphics
+--     pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV'
+--     state enabled, and the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV'
+--     set @coverageModulationTableEnable@ to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then the
+--     @coverageModulationTableCount@ parameter in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableNV'
+--     /must/ equal the current @rasterizationSamples@ divided by the
+--     number of color samples in the current active color attachment
+--
+-- -   #VUID-vkCmdDrawIndirectCount-rasterizationSamples-07489# If the
+--     @VK_NV_framebuffer_mixed_samples@ extension is enabled, and if
+--     current subpass has a depth\/stencil attachment and depth test,
+--     stencil test, or depth bounds test are enabled in the bound
+--     pipeline, then the current @rasterizationSamples@ /must/ be the same
+--     as the sample count of the depth\/stencil attachment
+--
+-- -   #VUID-vkCmdDrawIndirectCount-coverageToColorEnable-07490# If the
+--     bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
+--     state enabled and the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
+--     set the @coverageToColorEnable@ to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then there /must/ be an
+--     active color attachment at the location selected by the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
+--     @coverageToColorLocation@, with a
+--     'Vulkan.Core10.Enums.Format.Format' of
+--     'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R8_SINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R16_UINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R16_SINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R32_UINT', or
+--     'Vulkan.Core10.Enums.Format.FORMAT_R32_SINT'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-rasterizerDiscardEnable-09420# If the
+--     @VK_NV_fragment_coverage_to_color@ extension is enabled, and a
+--     shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage, and the most recent call to
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
+--     in the current command buffer set @rasterizerDiscardEnable@ to
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
+--     set the @coverageToColorEnable@ to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then there /must/ be an
+--     active color attachment at the location selected by the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
+--     @coverageToColorLocation@, with a
+--     'Vulkan.Core10.Enums.Format.Format' of
+--     'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R8_SINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R16_UINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R16_SINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R32_UINT', or
+--     'Vulkan.Core10.Enums.Format.FORMAT_R32_SINT'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-coverageReductionMode-07491# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-coverageReductionMode coverageReductionMode>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV'
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     dynamic states enabled, then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current values>
+--     of @coverageReductionMode@, @rasterizationSamples@, the sample
+--     counts for the color and depth\/stencil attachments (if the subpass
+--     has them) /must/ be a valid combination returned by
+--     'Vulkan.Extensions.VK_NV_coverage_reduction_mode.getPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-viewportCount-07492# 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_SWIZZLE_NV'
+--     dynamic state enabled, 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-vkCmdDrawIndirectCount-viewportCount-07493# 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_SWIZZLE_NV'
+--     dynamic states enabled then the @viewportCount@ parameter in the
+--     last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
+--     /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-vkCmdDrawIndirectCount-viewportCount-09421# If the
+--     @VK_NV_viewport_swizzle@ extension is enabled, and a shader object
+--     is bound to any graphics stage, then the @viewportCount@ parameter
+--     in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
+--     /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-vkCmdDrawIndirectCount-rasterizationSamples-07494# If the
+--     @VK_NV_framebuffer_mixed_samples@ extension is enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-coverageReductionMode coverageReductionMode>
+--     feature is not enabled, or the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @coverageReductionMode@ is not
+--     'Vulkan.Extensions.VK_NV_coverage_reduction_mode.COVERAGE_REDUCTION_MODE_TRUNCATE_NV',
+--     and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizationSamples@ is greater than sample count of the color
+--     attachment, then
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-sampleshading sample shading>
+--     /must/ be disabled
+--
+-- -   #VUID-vkCmdDrawIndirectCount-stippledLineEnable-07495# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic states enabled, and if the current @stippledLineEnable@
+--     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
+--     @lineRasterizationMode@ state is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_RECTANGULAR',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdDrawIndirectCount-stippledLineEnable-07496# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic states enabled, and if the current @stippledLineEnable@
+--     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
+--     @lineRasterizationMode@ state is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_BRESENHAM',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdDrawIndirectCount-stippledLineEnable-07497# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic states enabled, and if the current @stippledLineEnable@
+--     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
+--     @lineRasterizationMode@ state is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdDrawIndirectCount-stippledLineEnable-07498# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic states enabled, and if the current @stippledLineEnable@
+--     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
+--     @lineRasterizationMode@ state is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_DEFAULT',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>
+--     feature /must/ be enabled and
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@strictLines@
+--     /must/ be 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-stage-07073# If the bound pipeline was
+--     created with the
+--     'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo'::@stage@
+--     member of an element of
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'::@pStages@
+--     set to
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT',
+--     then
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-mesh-shader Mesh Shader Queries>
+--     /must/ not be active
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-08877# If a shader object is bound
+--     to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-07850# If dynamic state was
+--     inherited from
+--     'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV',
+--     it /must/ be set in the current command buffer prior to this drawing
+--     command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-nextStage-10745# For each shader object
+--     bound to a graphics stage, except for shader object bound to the
+--     last graphics stage in the logical pipeline, it /must/ have been
+--     created with a @nextStage@ including the corresponding bit to the
+--     shader object bound to the following graphics stage in the logical
+--     pipeline
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-08684# If there is no bound
+--     graphics pipeline,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-08685# If there is no bound
+--     graphics pipeline, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellationShader>
+--     feature is enabled,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-08686# If there is no bound
+--     graphics pipeline, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellationShader>
+--     feature is enabled,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-08687# If there is no bound
+--     graphics pipeline, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometryShader>
+--     feature is enabled,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-08688# If there is no bound
+--     graphics pipeline,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-08689# If there is no bound
+--     graphics pipeline, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
+--     feature is enabled,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-08690# If there is no bound
+--     graphics pipeline, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
+--     feature is enabled,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-08693# If there is no bound
+--     graphics pipeline, and at least one of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
+--     features is enabled, one of the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--     stages /must/ have a valid 'Vulkan.Extensions.Handles.ShaderEXT'
+--     bound, and the other /must/ have no
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-08696# If there is no bound
+--     graphics pipeline, and a valid 'Vulkan.Extensions.Handles.ShaderEXT'
+--     is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage, there /must/ be no 'Vulkan.Extensions.Handles.ShaderEXT'
+--     bound to either the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--     stage or the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--     stage
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-08698# If any graphics shader is
+--     bound which was created with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
+--     flag, then all shaders created with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
+--     flag in the same
+--     'Vulkan.Extensions.VK_EXT_shader_object.createShadersEXT' call
+--     /must/ also be bound
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-08699# If any graphics shader is
+--     bound which was created with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
+--     flag, any stages in between stages whose shaders which did not
+--     create a shader with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
+--     flag as part of the same
+--     'Vulkan.Extensions.VK_EXT_shader_object.createShadersEXT' call
+--     /must/ not have any 'Vulkan.Extensions.Handles.ShaderEXT' bound
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-08878# All bound graphics shader
+--     objects /must/ have been created with identical or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-identically-defined identically defined>
+--     push constant ranges
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-08879# All bound graphics shader
+--     objects /must/ have either been created with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag set, or with identical or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-identically-defined identically defined>
+--     arrays of descriptor set layouts
+--
+-- -   #VUID-vkCmdDrawIndirectCount-colorAttachmentCount-09372# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and a
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
+--     equal to @1@, a color attachment with a resolve mode of
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID',
+--     and a fragment shader is bound, it /must/ not declare the
+--     @DepthReplacing@ or @StencilRefReplacingEXT@ execution modes
+--
+-- -   #VUID-vkCmdDrawIndirectCount-pDynamicStates-08715# If the bound
+--     graphics pipeline state includes a fragment shader stage, was
+--     created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE'
+--     set in
+--     'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@,
+--     and the fragment shader declares the @EarlyFragmentTests@ execution
+--     mode and uses @OpDepthAttachmentReadEXT@, the @depthWriteEnable@
+--     parameter in the last call to
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthWriteEnable'
+--     /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-pDynamicStates-08716# If the bound
+--     graphics pipeline state includes a fragment shader stage, was
+--     created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_WRITE_MASK'
+--     set in
+--     'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@,
+--     and the fragment shader declares the @EarlyFragmentTests@ execution
+--     mode and uses @OpStencilAttachmentReadEXT@, the @writeMask@
+--     parameter in the last call to
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilWriteMask' /must/
+--     be @0@
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-09116# If a shader object is bound
+--     to any graphics stage or the bound graphics pipeline was created
+--     with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT',
+--     and the format of any color attachment is
+--     'Vulkan.Core10.Enums.Format.FORMAT_E5B9G9R9_UFLOAT_PACK32', the
+--     corresponding element of the @pColorWriteMasks@ parameter of
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
+--     /must/ either include all of
+--     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_R_BIT',
+--     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_G_BIT',
+--     and
+--     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_B_BIT',
+--     or none of them
+--
+-- -   #VUID-vkCmdDrawIndirectCount-maxFragmentDualSrcAttachments-09239# If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blending blending>
+--     is enabled for any attachment where either the source or destination
+--     blend factors for that attachment
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-dsb use the secondary color input>,
+--     the maximum value of @Location@ for any output attachment
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-staticuse statically used>
+--     in the @Fragment@ @Execution@ @Model@ executed by this command
+--     /must/ be less than
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFragmentDualSrcAttachments maxFragmentDualSrcAttachments>
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-09548# If the current render pass
+--     was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there is no shader object bound to any graphics stage, the value of
+--     each element of
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingAttachmentLocationInfo'::@pColorAttachmentLocations@
+--     in the bound pipeline /must/ match the value for the corresponding
+--     locations set currently in the current render pass instance
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-09549# If the current render pass
+--     was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     and there is no shader object bound to any graphics stage, the value
+--     of each element of
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pColorAttachmentInputIndices@
+--     in the bound pipeline /must/ match the value for the corresponding
+--     index set currently in the current render pass instance
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-10927# If the current render pass
+--     was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     and there is no shader object bound to any graphics stage, the value
+--     of
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pDepthInputAttachmentIndex@
+--     in the bound pipeline /must/ match the value set currently in the
+--     current render pass instance
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-10928# If the current render pass
+--     was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     and there is no shader object bound to any graphics stage, the value
+--     of
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pStencilInputAttachmentIndex@
+--     in the bound pipeline /must/ match the value set currently in the
+--     current render pass instance
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-09642# If the current render pass
+--     was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     with the
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT'
+--     flag, the bound graphics pipeline /must/ have been created with
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-09643# If the bound graphics
+--     pipeline was created with
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT',
+--     the current render pass /must/ have begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     with the
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT'
+--     flag
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-10677# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model>
+--     is enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tileShadingPerTileDraw tileShadingPerTileDraw>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-10772# If a shader object is bound
+--     to any graphics stage, /multiview/ functionality /must/ not be
+--     enabled in the current render pass
+--
+-- -   #VUID-vkCmdDrawIndirectCount-multiviewPerViewViewports-12262# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiviewPerViewViewports multiviewPerViewViewports>
+--     feature is enabled, then the index of the most significant bit in
+--     current render pass instance @viewMask@ /must/ be less than the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @viewportCount@
+--
+-- -   #VUID-vkCmdDrawIndirectCount-multiviewPerViewViewports-12263# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiviewPerViewViewports multiviewPerViewViewports>
+--     feature is enabled, then the index of the most significant bit in
+--     current render pass instance @viewMask@ /must/ be less than the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @scissorCount@
+--
+-- -   #VUID-vkCmdDrawIndirectCount-flags-11521# If current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@flags@
+--     which includes
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_FRAGMENT_REGION_BIT_EXT',
+--     and if
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-sampleshading sample shading>
+--     is enabled (explicitly or implicitly), then the minimum fraction for
+--     sample shading /must/ equal 0.0
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-11522# If the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and contains a custom resolve, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, the graphics pipeline bound /must/ have been
+--     created with a
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-11523# If the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and does not contain a custom resolve, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, the graphics pipeline bound /must/ not have
+--     been created with a
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-customResolve-11524# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, the graphics pipeline
+--     bound /must/ have been created with
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@
+--     as 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-customResolve-11525# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and contains a custom resolve, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not been recorded in the render pass instance, the graphics
+--     pipeline bound /must/ have been created with
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@
+--     as 'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-11861# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled and the current render pass instance was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and contains a custom resolve, the bound graphics pipeline /must/
+--     have been created with a
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@colorAttachmentCount@
+--     equal to
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-11862# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and the current render pass instance was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, 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 an @resolveImageView@ 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_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@
+--     used to create the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-11863# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and the current render pass instance was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, 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 an @resolveImageView@ equal to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have the
+--     corresponding element of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@
+--     used to create the bound pipeline equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-dynamicRenderingUnusedAttachments-11864#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled, the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, 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 an @resolveImageView@ 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_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@
+--     used to create the bound graphics pipeline, or the corresponding
+--     element of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@,
+--     if it exists, /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-11865# If the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@
+--     used to create the bound graphics pipeline /must/ be equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-11866# If current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@
+--     used to create the 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->resolveImageView@
+--
+-- -   #VUID-vkCmdDrawIndirectCount-dynamicRenderingUnusedAttachments-11867#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@
+--     used to create the bound graphics pipeline was not equal to the
+--     'Vulkan.Core10.Enums.Format.Format' used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@,
+--     the value of the format /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-11868# If the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@
+--     used to create the bound graphics pipeline /must/ be equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-11869# If current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@
+--     used to create the 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->resolveImageView@
+--
+-- -   #VUID-vkCmdDrawIndirectCount-dynamicRenderingUnusedAttachments-11870#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@
+--     used to create the bound graphics pipeline was not equal to the
+--     'Vulkan.Core10.Enums.Format.Format' used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@,
+--     the value of the format /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-colorAttachmentCount-11871# If 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@ and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, then for each element
+--     of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
+--     array with a @resolveImageView@ not equal to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', the @resolveImageView@
+--     /must/ have been created with a sample count equal to the value of
+--     @rasterizationSamples@ for the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawIndirectCount-pDepthAttachment-11872# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     @rasterizationSamples@ for the bound graphics pipeline /must/ be
+--     equal to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--
+-- -   #VUID-vkCmdDrawIndirectCount-pStencilAttachment-11873# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     @rasterizationSamples@ for the bound graphics pipeline /must/ be
+--     equal to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--
+-- -   #VUID-vkCmdDrawIndirectCount-customResolve-11529# If a shader object
+--     is bound to the fragment stage, the current render pass instance was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     a fragment density map attachment is active, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been called, then the fragment shader object bound /must/ have
+--     been created with
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@
+--     as 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-customResolve-11530# If a shader object
+--     is bound to the fragment stage, the current render pass instance was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and contains a custom resolve, a fragment density map attachment is
+--     active, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been called, then the fragment shader object bound
+--     /must/ have been created with
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@
+--     as 'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-flags-13361# If there are any shader
+--     objects bound that were created with @flags@ that includes the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     bit, then all bound shader objects /must/ have been created with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     bit
+--
+-- -   #VUID-vkCmdDrawIndirectCount-flags-13362# If there are any shader
+--     objects bound that were created with @flags@ that includes the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     bit, then the pipeline layout of the bound descriptor sets /must/
+--     have been created with
+--     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT'
+--     set
+--
+-- -   #VUID-vkCmdDrawIndirectCount-flags-13363# If there are any shader
+--     objects bound that were created with @flags@ that includes the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     bit, and any of the descriptor set layouts used to create the
+--     pipeline layout of the bound descriptor sets were created with any
+--     binding’s
+--     'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutBinding'::@stageFlags@
+--     set with
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT',
+--     then there /must/ be no binding with
+--     'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutBinding'::@stageFlags@
+--     set with
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-flags-13364# If there are any shader
+--     objects bound that were created with @flags@ that includes both the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     and
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
+--     bits, the pipeline layout of the bound descriptor sets /must/ have
+--     been created with
+--     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_NO_TASK_SHADER_BIT_KHR'
+--     set
+--
+-- -   #VUID-vkCmdDrawIndirectCount-flags-13365# If there are any shader
+--     objects bound that were created with @flags@ that includes both the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     and
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
+--     bits, there /must/ be no shader object bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--     stage
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-04007# All vertex input bindings
+--     accessed via vertex input variables declared in the vertex shader
+--     entry point’s interface /must/ have either valid or
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' buffers bound
+--
+-- -   #VUID-vkCmdDrawIndirectCount-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-vkCmdDrawIndirectCount-None-02721# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, and that pipeline was created without
+--     enabling
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     for @vertexInputs@, then 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-vkCmdDrawIndirectCount-format-10389# For each vertex attribute
+--     accessed by this command, if its
+--     'Vulkan.Core10.GraphicsPipeline.VertexInputAttributeDescription'::@format@
+--     or
+--     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@
+--     is a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-packed packed format>,
+--     and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-legacyVertexAttributes legacyVertexAttributes>
+--     feature is not enabled, the value of @attribAddress@, calculated as
+--     described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input-address-calculation Vertex Input Calculation>,
+--     /must/ be a multiple of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats size of the format>
+--
+-- -   #VUID-vkCmdDrawIndirectCount-format-10390# For each vertex attribute
+--     accessed by this command, if its
+--     'Vulkan.Core10.GraphicsPipeline.VertexInputAttributeDescription'::@format@
+--     or
+--     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@
+--     is not a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-packed packed format>,
+--     and either the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-legacyVertexAttributes legacyVertexAttributes>
+--     feature is not enabled or @format@ has 64-bit components, the value
+--     of @attribAddress@, calculated as described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input-address-calculation Vertex Input Calculation>,
+--     /must/ be a multiple of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats component size of the format>
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-07842# If there is a shader object
+--     bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY'
+--     dynamic state enabled then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-dynamicPrimitiveTopologyUnrestricted-07500#
+--     If the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY'
+--     dynamic state enabled and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-dynamicPrimitiveTopologyUnrestricted dynamicPrimitiveTopologyUnrestricted>
+--     is 'Vulkan.Core10.FundamentalTypes.FALSE', then the
+--     @primitiveTopology@ parameter of
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
+--     /must/ be of the same
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-class topology class>
+--     as the pipeline
+--     'Vulkan.Core10.GraphicsPipeline.PipelineInputAssemblyStateCreateInfo'::@topology@
+--     state
+--
+-- -   #VUID-vkCmdDrawIndirectCount-primitiveTopology-10286# If a
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
+--     stage is bound, then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @primitiveTopology@ /must/ be
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST'
+--     prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-primitiveTopology-10747# If
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
+--     set @primitiveTopology@ to
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST'
+--     prior to this drawing command, then a
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
+--     stage /must/ be bound
+--
+-- -   #VUID-vkCmdDrawIndirectCount-primitiveTopology-10748# If
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
+--     set @primitiveTopology@ to
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_POINT_LIST'
+--     prior to this drawing command, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance5 maintenance5>
+--     feature is not enabled, both a
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     and
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
+--     stage are not bound, then the @Vertex@ @Execution@ @Model@ /must/
+--     have a @PointSize@ decorated variable that is statically written to
+--
+-- -   #VUID-vkCmdDrawIndirectCount-pStrides-04913# If the bound graphics
+--     pipeline was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE'
+--     dynamic state enabled, but without the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2'
+--     with a non-@NULL@ @pStrides@ parameter or
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.cmdBindVertexBuffers3KHR'
+--     with @setStride@ set to 'Vulkan.Core10.FundamentalTypes.TRUE' /must/
+--     have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this draw command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-13118# If the bound graphics
+--     pipeline was created without the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE'
+--     dynamic state enabled, without the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
+--     dynamic state enabled, and
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.cmdBindVertexBuffers3KHR'
+--     was called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this draw command, the value
+--     of @setStride@ in each of its @pBindInfos@ elements must have been
+--     'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-04914# If there is a shader object
+--     bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage or 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 and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this draw command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-Input-07939# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-vertexAttributeRobustness vertexAttributeRobustness>
+--     feature is not enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance9 maintenance9>
+--     feature is not enabled, and there is a shader object bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
+--     dynamic state enabled then all variables with the @Input@ storage
+--     class decorated with @Location@ in the @Vertex@ @Execution@ @Model@
+--     @OpEntryPoint@ /must/ contain a location in
+--     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@location@
+--
+-- -   #VUID-vkCmdDrawIndirectCount-Input-08734# If there is a shader
+--     object bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
+--     dynamic state enabled and either the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-legacyVertexAttributes legacyVertexAttributes>
+--     feature is not enabled or the SPIR-V Type associated with a given
+--     @Input@ variable of the corresponding @Location@ in the @Vertex@
+--     @Execution@ @Model@ @OpEntryPoint@ is 64-bit, then the numeric type
+--     associated with all @Input@ variables of the corresponding
+--     @Location@ in the @Vertex@ @Execution@ @Model@ @OpEntryPoint@ /must/
+--     be the same as
+--     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@
+--
+-- -   #VUID-vkCmdDrawIndirectCount-format-08936# If there is a shader
+--     object bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
+--     dynamic state enabled and
+--     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@
+--     has a 64-bit component, then the scalar width associated with all
+--     @Input@ variables of the corresponding @Location@ in the @Vertex@
+--     @Execution@ @Model@ @OpEntryPoint@ /must/ be 64-bit
+--
+-- -   #VUID-vkCmdDrawIndirectCount-format-08937# If there is a shader
+--     object bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
+--     dynamic state enabled and the scalar width associated with a
+--     @Location@ decorated @Input@ variable in the @Vertex@ @Execution@
+--     @Model@ @OpEntryPoint@ is 64-bit, then the corresponding
+--     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@
+--     /must/ have a 64-bit component
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-09203# If there is a shader object
+--     bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
+--     dynamic state enabled and
+--     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@
+--     has a 64-bit component, then all @Input@ variables at the
+--     corresponding @Location@ in the @Vertex@ @Execution@ @Model@
+--     @OpEntryPoint@ /must/ not use components that are not present in the
+--     format
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-04875# If there is a shader object
+--     bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
+--     stage or the bound graphics pipeline state was created with both a
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
+--     stage and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @primitiveTopology@ is
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST',
+--     then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPatchControlPointsEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-04879# If there is a shader object
+--     bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE'
+--     dynamic state enabled then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-09637# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitiveTopologyListRestart primitiveTopologyListRestart>
+--     feature is not enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-vertex-input-assembler-topology input assembly>
+--     is
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_POINT_LIST',
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_LINE_LIST',
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_TRIANGLE_LIST',
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY',
+--     or
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY',
+--     there is a shader object bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE'
+--     dynamic state enabled, then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnable'
+--     /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-10909# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitiveTopologyPatchListRestart primitiveTopologyPatchListRestart>
+--     feature is not enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-vertex-input-assembler-topology input assembly>
+--     is
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST',
+--     there is a shader object bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
+--     stage or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE'
+--     dynamic state enabled then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnable'
+--     /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-stage-06481# The bound graphics
+--     pipeline /must/ not have been created with the
+--     'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo'::@stage@
+--     member of any element of
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'::@pStages@
+--     set to
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-08885# There /must/ be no shader
+--     object bound to either of the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--     stages
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-07619# If a shader object is bound
+--     to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     stage or a graphics pipeline is bound which was created with both a
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     stage and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetTessellationDomainOriginEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-OpExecutionMode-12239# If a shader is
+--     bound to both the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
+--     and
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     stages, and if both stages contain an @OpExecutionMode@ instruction
+--     specifying the type of subdivision, they /must/ be the same
+--
+-- -   #VUID-vkCmdDrawIndirectCount-OpExecutionMode-12240# If a shader is
+--     bound to both the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
+--     and
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     stages, and if both stages contain an @OpExecutionMode@ instruction
+--     specifying the orientation of triangles, they /must/ be the same
+--
+-- -   #VUID-vkCmdDrawIndirectCount-OpExecutionMode-12241# If a shader is
+--     bound to both the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
+--     and
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     stages, and if both stages contain an @OpExecutionMode@ instruction
+--     specifying the segment spacing, they /must/ be the same
+--
+-- -   #VUID-vkCmdDrawIndirectCount-OpExecutionMode-12242# If a shader is
+--     bound to both the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
+--     and
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     stages, and if both stages contain an @OpExecutionMode@ instruction
+--     specifying the output patch size, they /must/ be the same
+--
+-- -   #VUID-vkCmdDrawIndirectCount-buffer-02708# If @buffer@ is non-sparse
+--     then it /must/ be bound completely and contiguously to a single
+--     'Vulkan.Core10.Handles.DeviceMemory' object
+--
+-- -   #VUID-vkCmdDrawIndirectCount-buffer-02709# @buffer@ /must/ have been
+--     created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdDrawIndirectCount-offset-02710# @offset@ /must/ be a
+--     multiple of @4@
+--
+-- -   #VUID-vkCmdDrawIndirectCount-commandBuffer-02711# @commandBuffer@
+--     /must/ not be a protected command buffer
+--
+-- -   #VUID-vkCmdDrawIndirectCount-countBuffer-02714# If @countBuffer@ is
+--     non-sparse then it /must/ be bound completely and contiguously to a
+--     single 'Vulkan.Core10.Handles.DeviceMemory' object
+--
+-- -   #VUID-vkCmdDrawIndirectCount-countBuffer-02715# @countBuffer@ /must/
+--     have been created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdDrawIndirectCount-countBufferOffset-02716#
+--     @countBufferOffset@ /must/ be a multiple of @4@
+--
+-- -   #VUID-vkCmdDrawIndirectCount-countBuffer-02717# The count stored in
+--     @countBuffer@ /must/ be less than or equal to
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxDrawIndirectCount@
+--
+-- -   #VUID-vkCmdDrawIndirectCount-countBufferOffset-04129#
+--     (@countBufferOffset@ + @sizeof@(uint32_t)) /must/ be less than or
+--     equal to the size of @countBuffer@
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-04445# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-drawIndirectCount drawIndirectCount>
+--     feature is not enabled this function /must/ not be used
+--
+-- -   #VUID-vkCmdDrawIndirectCount-stride-03110# @stride@ /must/ be a
+--     multiple of @4@ and /must/ be greater than or equal to
+--     sizeof('Vulkan.Core10.OtherTypes.DrawIndirectCommand')
+--
+-- -   #VUID-vkCmdDrawIndirectCount-maxDrawCount-03111# If @maxDrawCount@
+--     is greater than or equal to @1@, (@stride@ × (@maxDrawCount@ - 1) +
+--     @offset@ + sizeof('Vulkan.Core10.OtherTypes.DrawIndirectCommand'))
+--     /must/ be less than or equal to the size of @buffer@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdDrawIndirectCount-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdDrawIndirectCount-buffer-parameter# @buffer@ /must/ be a
+--     valid 'Vulkan.Core10.Handles.Buffer' handle
+--
+-- -   #VUID-vkCmdDrawIndirectCount-countBuffer-parameter# @countBuffer@
+--     /must/ be a valid 'Vulkan.Core10.Handles.Buffer' handle
+--
+-- -   #VUID-vkCmdDrawIndirectCount-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-vkCmdDrawIndirectCount-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
+--
+-- -   #VUID-vkCmdDrawIndirectCount-renderpass# This command /must/ only be
+--     called inside of a render pass instance
+--
+-- -   #VUID-vkCmdDrawIndirectCount-suspended# This command /must/ not be
+--     called between suspended render pass instances
+--
+-- -   #VUID-vkCmdDrawIndirectCount-videocoding# This command /must/ only
+--     be called outside of a video coding scope
+--
+-- -   #VUID-vkCmdDrawIndirectCount-commonparent# Each of @buffer@,
+--     @commandBuffer@, and @countBuffer@ /must/ have been created,
+--     allocated, or retrieved from the same 'Vulkan.Core10.Handles.Device'
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Inside                                                                                                                 | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdDrawIndirectCount is affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_draw_indirect_count VK_AMD_draw_indirect_count>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_draw_indirect_count VK_KHR_draw_indirect_count>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_2 VK_VERSION_1_2>,
+-- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize'
+cmdDrawIndirectCount :: 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)
+                     -> -- | @countBuffer@ is the buffer containing the draw count.
+                        ("countBuffer" ::: Buffer)
+                     -> -- | @countBufferOffset@ is the byte offset into @countBuffer@ where the draw
+                        -- count begins.
+                        ("countBufferOffset" ::: DeviceSize)
+                     -> -- | @maxDrawCount@ specifies the maximum number of draws that will be
+                        -- executed. The actual number of executed draw calls is the minimum of the
+                        -- count specified in @countBuffer@ and @maxDrawCount@.
+                        ("maxDrawCount" ::: Word32)
+                     -> -- | @stride@ is the byte stride between successive sets of draw parameters.
+                        ("stride" ::: Word32)
+                     -> io ()
+cmdDrawIndirectCount commandBuffer
+                       buffer
+                       offset
+                       countBuffer
+                       countBufferOffset
+                       maxDrawCount
+                       stride = liftIO $ do
+  let vkCmdDrawIndirectCountPtr = pVkCmdDrawIndirectCount (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  unless (vkCmdDrawIndirectCountPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdDrawIndirectCount is null" Nothing Nothing
+  let vkCmdDrawIndirectCount' = mkVkCmdDrawIndirectCount vkCmdDrawIndirectCountPtr
+  traceAroundEvent "vkCmdDrawIndirectCount" (vkCmdDrawIndirectCount'
+                                               (commandBufferHandle (commandBuffer))
+                                               (buffer)
+                                               (offset)
+                                               (countBuffer)
+                                               (countBufferOffset)
+                                               (maxDrawCount)
+                                               (stride))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdDrawIndexedIndirectCount
+  :: FunPtr (Ptr CommandBuffer_T -> Buffer -> DeviceSize -> Buffer -> DeviceSize -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> DeviceSize -> Buffer -> DeviceSize -> Word32 -> Word32 -> IO ()
+
+-- | vkCmdDrawIndexedIndirectCount - Draw parameters with indirect
+-- parameters, indexed vertices, and draw count
+--
+-- = Description
+--
+-- 'cmdDrawIndexedIndirectCount' behaves similarly to
+-- 'Vulkan.Core10.CommandBufferBuilding.cmdDrawIndexedIndirect' except that
+-- the draw count is read by the device from a buffer during execution. The
+-- command will read an unsigned 32-bit integer from @countBuffer@ located
+-- at @countBufferOffset@ and use this as the draw count.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-magFilter-04553# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
+--     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR',
+--     @reductionMode@ equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
+--     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-vkCmdDrawIndexedIndirectCount-magFilter-09598# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
+--     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR' and
+--     @reductionMode@ equal to either
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
+--     or
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
+--     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_MINMAX_BIT'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-mipmapMode-04770# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
+--     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR',
+--     @reductionMode@ equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
+--     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-vkCmdDrawIndexedIndirectCount-mipmapMode-09599# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
+--     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'
+--     and @reductionMode@ equal to either
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
+--     or
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
+--     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_MINMAX_BIT'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-unnormalizedCoordinates-09635#
+--     If a 'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the image view’s @levelCount@ and @layerCount@ /must/ be 1
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08609# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the image view’s @viewType@ /must/ be
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D' or
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08610# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the sampler /must/ not be used with any of the SPIR-V
+--     @OpImageSample*@ or @OpImageSparseSample*@ instructions with
+--     @ImplicitLod@, @Dref@ or @Proj@ in their name
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08611# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the sampler /must/ not be used with any of the SPIR-V
+--     @OpImageSample*@ or @OpImageSparseSample*@ instructions that
+--     includes a LOD bias or any offset values
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-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-vkCmdDrawIndexedIndirectCount-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-vkCmdDrawIndexedIndirectCount-None-07888# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'
+--     descriptor is accessed using atomic operations as a result of this
+--     command, then the storage texel buffer’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-buffer-view-format-features format features>
+--     /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-02692# If a
+--     'Vulkan.Core10.Handles.ImageView' is sampled with
+--     'Vulkan.Core10.Enums.Filter.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.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-02693# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_filter_cubic VK_EXT_filter_cubic>
+--     extension is not enabled and any 'Vulkan.Core10.Handles.ImageView'
+--     is sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as a
+--     result of this command, it /must/ not have a
+--     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' of
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE', or
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-filterCubic-02694# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with
+--     'Vulkan.Core10.Enums.Filter.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-vkCmdDrawIndexedIndirectCount-filterCubicMinmax-02695# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with
+--     'Vulkan.Core10.Enums.Filter.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-vkCmdDrawIndexedIndirectCount-cubicRangeClamp-09212# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-cubicRangeClamp cubicRangeClamp>
+--     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
+--     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
+--     a result of this command /must/ not have a
+--     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
+--     equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-reductionMode-09213# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with a
+--     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
+--     equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
+--     as a result of this command /must/ sample with
+--     'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-selectableCubicWeights-09214# If
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-selectableCubicWeights selectableCubicWeights>
+--     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
+--     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
+--     a result of this command /must/ have
+--     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.SamplerCubicWeightsCreateInfoQCOM'::@cubicWeights@
+--     equal to
+--     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-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-vkCmdDrawIndexedIndirectCount-OpTypeImage-07027# For any
+--     'Vulkan.Core10.Handles.ImageView' being written as a storage image
+--     where the image format field of the @OpTypeImage@ is @Unknown@, the
+--     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_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-OpTypeImage-07028# For any
+--     'Vulkan.Core10.Handles.ImageView' being read as a storage image
+--     where the image format field of the @OpTypeImage@ is @Unknown@, the
+--     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_STORAGE_READ_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-OpTypeImage-07029# For any
+--     'Vulkan.Core10.Handles.BufferView' being written as a storage texel
+--     buffer where the image format field of the @OpTypeImage@ is
+--     @Unknown@, the view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
+--     /must/ contain
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-OpTypeImage-07030# Any
+--     'Vulkan.Core10.Handles.BufferView' being read as a storage texel
+--     buffer where the image format field of the @OpTypeImage@ is
+--     @Unknown@ then the view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
+--     /must/ contain
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08600# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
+--     was created with a pipeline layout and statically uses a set /n/, a
+--     descriptor set /must/ have been bound to /n/ at the same pipeline
+--     bind point, with layouts compatible for set /n/ with the layout(s)
+--     used to create the shader, as described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptors-compatibility ???>
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08601# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
+--     was created with a pipeline layout or specified push constant ranges
+--     and statically uses a push constant value, that value /must/ have
+--     been set for the same pipeline bind point, with push constant ranges
+--     that are
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptors-compatibility compatible>
+--     with the push constant range used to create the shader
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-10068# For each array of
+--     resources that is used by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
+--     the indices used to access members of the array /must/ be less than
+--     the descriptor count for the identified binding in the descriptor
+--     sets used by this command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08114# Descriptors in each
+--     bound descriptor set, specified via
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
+--     be valid if they are accessed as described by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
+--     by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
+--     point used by this command and the bound
+--     'Vulkan.Core10.Handles.Pipeline' was not created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-imageLayout-00344# If an image
+--     descriptor is accessed by a shader, the
+--     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' /must/ match the
+--     subresource accessible from the 'Vulkan.Core10.Handles.ImageView' 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>
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08115# If the descriptors
+--     used by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline
+--     bind point were specified via
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', the
+--     bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     without
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08116# Descriptors in bound
+--     descriptor buffers, specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     /must/ be valid if they are dynamically used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
+--     was created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08604# Descriptors in bound
+--     descriptor buffers, specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     /must/ be valid if they are dynamically used by any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     to the pipeline bind point used by this command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08117# If the descriptors
+--     used by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline
+--     bind point were specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08119# If a descriptor is
+--     dynamically used with a 'Vulkan.Core10.Handles.Pipeline' created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     the descriptor memory /must/ be resident
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08605# If a descriptor is
+--     dynamically used with a 'Vulkan.Extensions.Handles.ShaderEXT'
+--     created with a 'Vulkan.Core10.Handles.DescriptorSetLayout' that was
+--     created with
+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     the descriptor memory /must/ be resident
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08606# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject>
+--     feature is not enabled, a valid pipeline /must/ be bound to the
+--     pipeline bind point used by this command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08608# If a pipeline is
+--     bound to the pipeline bind point used by this command, there /must/
+--     not have been any calls to dynamic state setting commands for any
+--     state specified statically in the 'Vulkan.Core10.Handles.Pipeline'
+--     object bound to the pipeline bind point used by this command, since
+--     that pipeline was bound
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-uniformBuffers-06935# If any
+--     stage of the 'Vulkan.Core10.Handles.Pipeline' object bound to the
+--     pipeline bind point used by this command accesses a uniform buffer,
+--     and that stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @uniformBuffers@, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /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-vkCmdDrawIndexedIndirectCount-None-08612# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, and any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     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-vkCmdDrawIndexedIndirectCount-storageBuffers-06936# If any
+--     stage of the 'Vulkan.Core10.Handles.Pipeline' object bound to the
+--     pipeline bind point used by this command accesses a storage buffer,
+--     and that stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @storageBuffers@, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /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-vkCmdDrawIndexedIndirectCount-None-08613# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, and any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     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-vkCmdDrawIndexedIndirectCount-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
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shaders>
+--     /must/ not be a protected resource
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-viewType-07752# If a
+--     'Vulkan.Core10.Handles.ImageView' is accessed as a result of this
+--     command, then the image view’s @viewType@ /must/ match the @Dim@
+--     operand of the @OpTypeImage@ as described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-image-dimensions ???>
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-format-07753# If a
+--     'Vulkan.Core10.Handles.ImageView' or
+--     'Vulkan.Core10.Handles.BufferView' is accessed as a result of this
+--     command, then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-numericformat numeric type>
+--     of the view’s @format@ and the @Sampled@ @Type@ operand of the
+--     @OpTypeImage@ /must/ match
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-OpImageWrite-08795# If a
+--     'Vulkan.Core10.Handles.ImageView' created with a format other than
+--     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM' 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-vkCmdDrawIndexedIndirectCount-OpImageWrite-08796# If a
+--     'Vulkan.Core10.Handles.ImageView' created with the format
+--     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM' is accessed using
+--     @OpImageWrite@ as a result of this command, then the @Type@ of the
+--     @Texel@ operand of that instruction /must/ have four components
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-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-vkCmdDrawIndexedIndirectCount-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-vkCmdDrawIndexedIndirectCount-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-vkCmdDrawIndexedIndirectCount-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-vkCmdDrawIndexedIndirectCount-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-vkCmdDrawIndexedIndirectCount-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-vkCmdDrawIndexedIndirectCount-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-vkCmdDrawIndexedIndirectCount-OpImageSampleWeightedQCOM-06971#
+--     If @OpImageSampleWeightedQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-OpImageSampleWeightedQCOM-06972#
+--     If @OpImageSampleWeightedQCOM@ uses a
+--     'Vulkan.Core10.Handles.ImageView' as a sample weight image 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-OpImageBoxFilterQCOM-06973# If
+--     @OpImageBoxFilterQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-OpImageBlockMatchSSDQCOM-06974#
+--     If @OpImageBlockMatchSSDQCOM@ is used to read from an
+--     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
+--     or
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_SXD_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-OpImageBlockMatchSADQCOM-12420#
+--     If @OpImageBlockMatchSADQCOM@ is used to read from an
+--     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
+--     or
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_SXD_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-OpImageBlockMatchSADQCOM-06976#
+--     If @OpImageBlockMatchSADQCOM@ or OpImageBlockMatchSSDQCOM is used to
+--     read from a reference image as result of this command, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-blockMatchExtendedClampToEdge blockMatchExtendedClampToEdge>
+--     feature is not enabled or the /input/ sampler was not created with
+--     both @addressModeU@ and @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--     then the specified reference coordinates /must/ not fail
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-OpImageSampleWeightedQCOM-06977#
+--     If @OpImageSampleWeightedQCOM@, @OpImageBoxFilterQCOM@,
+--     @OpImageBlockMatchWindowSSDQCOM@, @OpImageBlockMatchWindowSADQCOM@,
+--     @OpImageBlockMatchGatherSSDQCOM@, @OpImageBlockMatchGatherSADQCOM@,
+--     @OpImageBlockMatchSSDQCOM@, or @OpImageBlockMatchSADQCOM@ uses a
+--     'Vulkan.Core10.Handles.Sampler' as a result of this command, then
+--     the sampler /must/ have been created with
+--     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-OpImageSampleWeightedQCOM-06978#
+--     If any command other than @OpImageSampleWeightedQCOM@,
+--     @OpImageBoxFilterQCOM@, @OpImageBlockMatchWindowSSDQCOM@,
+--     @OpImageBlockMatchWindowSADQCOM@, @OpImageBlockMatchGatherSSDQCOM@,
+--     @OpImageBlockMatchGatherSADQCOM@, @OpImageBlockMatchSSDQCOM@, or
+--     @OpImageBlockMatchSADQCOM@ uses a 'Vulkan.Core10.Handles.Sampler' as
+--     a result of this command, then the sampler /must/ not have been
+--     created with
+--     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-OpImageBlockMatchWindow-09215#
+--     If a @OpImageBlockMatchWindow*QCOM@ or
+--     @OpImageBlockMatchGather*QCOM@ instruction is used to read from an
+--     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-OpImageBlockMatchWindow-09216#
+--     If a @OpImageBlockMatchWindow*QCOM@ or
+--     @OpImageBlockMatchGather*QCOM@ instruction is used to read from an
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the image view’s format /must/ be a single-component format
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-OpImageBlockMatchWindow-09217#
+--     If a @OpImageBlockMatchWindow*QCOM@ or
+--     @OpImageBlockMatchGather*QCOM@ read from a reference image as result
+--     of this command, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-blockMatchExtendedClampToEdge blockMatchExtendedClampToEdge>
+--     feature is not enabled or the /input/ sampler was not created with
+--     both @addressModeU@ and @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--     then the specified reference coordinates /must/ not fail
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-OpImageBlockMatchWindow-12421#
+--     If a @OpImageBlockMatchWindow*QCOM@ or
+--     @OpImageBlockMatchGather*QCOM@ instruction uses a
+--     'Vulkan.Core10.Handles.Sampler' as a result of this command, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-blockMatchExtendedClampToEdge blockMatchExtendedClampToEdge>
+--     is not enabled, the /input/ sampler /must/ not have been created
+--     with either @addressModeU@ or @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-addressModeU-12422# If a
+--     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     instruction uses a 'Vulkan.Core10.Handles.Sampler' as a result of
+--     this command, and the /input/ sampler was created with either
+--     @addressModeU@ or @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE',
+--     then the sampler /must/ have been created with both @addressModeU@
+--     and @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07288# Any shader
+--     invocation executed by this command /must/
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-termination terminate>
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-09600# If a descriptor with
+--     type equal to any of
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',
+--     or
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'
+--     is accessed as a result of this command, all image subresources
+--     identified by that descriptor /must/ be in the image layout
+--     identified when the descriptor was written
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-micromap-11636# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command through an
+--     @OpRayQueryProceedKHR@ operation , the @VK_EXT_opacity_micromap@
+--     extension is not enabled, and the acceleration structure is built
+--     using geometry with a
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapKHR'
+--     structure included in its @pNext@ chain, the shader /must/ have
+--     specified a @OpacityMicromapIdKHR@ execution mode with its
+--     specialization constant operand equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-micromap-11637# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command and the
+--     acceleration structure was constructed through deserialization, all
+--     micromap arrays referenced by the acceleration structure that were
+--     not replaced by an acceleration structure update command /must/ have
+--     been deserialized using the serialized data of the corresponding
+--     micromaps used to originally build the acceleration structure prior
+--     to the execution of this command on the device
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-micromap-11638# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command and the
+--     acceleration structure is built using geometry with an @indexBuffer@
+--     containing both
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.OpacityMicromapSpecialIndexKHR'
+--     values and indices into an associated micromap array, any
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command /must/ not have been created with @flags@ that
+--     includes
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_KHR'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-micromap-11639# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command and the
+--     acceleration structure is built using geometry with an @indexBuffer@
+--     containing both
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.OpacityMicromapSpecialIndexKHR'
+--     values and indices into an associated micromap array, any
+--     'Vulkan.Extensions.Handles.ShaderEXT' that accessed the descriptor
+--     /must/ not have been created with @flags@ that includes
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-commandBuffer-10746# The
+--     'Vulkan.Core10.Handles.DeviceMemory' object allocated from a
+--     'Vulkan.Core10.DeviceInitialization.MemoryHeap' with the
+--     'Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_TILE_MEMORY_BIT_QCOM'
+--     property that is bound to a resource accessed as a result of this
+--     command /must/ be the active
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-bind-tile-memory bound tile memory object>
+--     in @commandBuffer@
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-10678# If this command is
+--     recorded inside a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-tile-shading tile shading render pass>
+--     instance, the stages corresponding to the pipeline bind point used
+--     by this command /must/ only include
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT',
+--     and\/or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-10679# If this command is
+--     recorded where
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model>
+--     is enabled, there /must/ be no access to any image while the image
+--     was be transitioned to the
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
+--     layout
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-pDescription-09900# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the
+--     underlying 'Vulkan.Extensions.Handles.TensorARM' object /must/ have
+--     been created with the
+--     'Vulkan.Extensions.VK_ARM_tensors.TENSOR_USAGE_SHADER_BIT_ARM' usage
+--     flag set
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-dimensionCount-09905# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the @Rank@
+--     of the @OpTypeTensorARM@ of the tensor resource variable /must/ be
+--     equal to the @dimensionCount@ provided via
+--     'Vulkan.Extensions.VK_ARM_tensors.TensorCreateInfoARM'::@pDescription@
+--     when creating the underlying 'Vulkan.Extensions.Handles.TensorARM'
+--     object
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-OpTypeTensorARM-09906# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the element
+--     type of the @OpTypeTensorARM@ of the tensor resource variable /must/
+--     be
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-tensor-formats compatible>
+--     with the 'Vulkan.Core10.Enums.Format.Format' of the
+--     'Vulkan.Extensions.Handles.TensorViewARM' used for the access
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-11297# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses a @OpTypeStruct@ decorated with @Block@ or
+--     @BufferBlock@ using that mapping, the calculated offset for the
+--     resource heap /must/ be a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-bufferDescriptorAlignment bufferDescriptorAlignment>
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-11298# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses an @OpTypeImage@ or @OpTypeSampledImage@ using
+--     that mapping, the calculated offset for the resource heap /must/ be
+--     a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-imageDescriptorAlignment imageDescriptorAlignment>
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-11299# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses an @OpTypeSampler@ or @OpTypeSampledImage@
+--     using that mapping, the calculated offset for the sampler heap
+--     /must/ be a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-samplerDescriptorAlignment samplerDescriptorAlignment>
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-11397# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses an @OpTypeTensorARM@ using that mapping, the
+--     calculated offset for the resource heap /must/ be a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-tensorDescriptorAlignment tensorDescriptorAlignment>
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-11300# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a
+--     multiple of 4
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-11301# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' backed by physical
+--     memory at every offset specified by each mapping
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-11302# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-11304# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a
+--     multiple of 8
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-11305# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' backed by physical
+--     memory at every offset specified by each mapping
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-11306# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address pointed to by the address in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-11308# For each
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps descriptor heap>
+--     that is statically used by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
+--     either directly or via a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>,
+--     a valid descriptor heap /must/ be bound
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-11309# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     was created as a 'Vulkan.Extensions.Handles.ShaderEXT' with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag or as part of a pipeline with the
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag, execution of this command /must/ not result in any descriptor
+--     read accessing data outside of the user range of the respective heap
+--     bound by @vkCmdBind*HeapEXT@ commands
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-11372# If any stage of the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command accesses a uniform buffer or uniform
+--     texel buffer through a descriptor in the bound resource heap, that
+--     stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @uniformBuffers@, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /must/ not access values outside
+--     of the range of the descriptor specified via
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+--     when the descriptor was written
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-11373# If any stage of the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command accesses a storage buffer or storage
+--     texel buffer through a descriptor in the bound resource heap, that
+--     stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @storageBuffers@, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /must/ not access values outside
+--     of the range of the descriptor specified by
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+--     when the descriptor was written
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-11374# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, and any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     to the pipeline bind point used by this command accesses a uniform
+--     buffer, uniform texel buffer, storage buffer, or storage texel
+--     buffer, that shader /must/ not access values outside of the range of
+--     the buffer as specified by
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+--     when the descriptor was written
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-pBindInfo-11375# If any
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     uses an embedded sampler via a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>,
+--     the value of @pBindInfo->reservedRangeSize@ set for
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.cmdBindSamplerHeapEXT'
+--     /must/ be greater than or equal to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minSamplerHeapReservedRangeWithEmbedded minSamplerHeapReservedRangeWithEmbedded>
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-11376# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     was created as a 'Vulkan.Extensions.Handles.ShaderEXT' with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag or as part of a pipeline with the
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag, and that shader statically uses a push constant value, that
+--     value /must/ have been set by
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.cmdPushDataEXT'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-11398# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_DATA_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_DATA_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_RESOURCE_HEAP_DATA_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the access
+--     /must/ not be
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-execution-memory-access-bounds out of bounds>
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-11437# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the buffer from
+--     which the address in push data was queried /must/ have been created
+--     with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-11438# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a uniform buffer using that mapping, the
+--     address that the uniform buffer is mapped to /must/ have been
+--     queried from a buffer created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-11441# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a uniform buffer using that mapping, the
+--     address that the uniform buffer is mapped to /must/ be aligned to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minUniformBufferOffsetAlignment minUniformBufferOffsetAlignment>
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-11439# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a storage buffer using that mapping, the
+--     address that the storage buffer is mapped to /must/ have been
+--     queried from a buffer created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_STORAGE_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-11442# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a storage buffer using that mapping, the
+--     address that the storage buffer is mapped to /must/ be aligned to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minStorageBufferOffsetAlignment minStorageBufferOffsetAlignment>
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-11485# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses an acceleration structure using that mapping,
+--     the address that the acceleration structure is mapped to /must/ be
+--     an acceleration structure address retrieved from a
+--     'Vulkan.Extensions.Handles.AccelerationStructureKHR' object via
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.getAccelerationStructureDeviceAddressKHR'
+--     or handle retrieved from a
+--     'Vulkan.Extensions.Handles.AccelerationStructureNV' object via
+--     'Vulkan.Extensions.VK_NV_ray_tracing.getAccelerationStructureHandleNV'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-index-11450# If a shader uses a
+--     sampler descriptor to sample an image as a result of this command,
+--     and that sampler descriptor uses a custom border color with an index
+--     defined by
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.SamplerCustomBorderColorIndexCreateInfoEXT',
+--     the value of
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.SamplerCustomBorderColorIndexCreateInfoEXT'::@index@
+--     /must/ have been registered before this command was recorded, and
+--     still be registered during the sampling operation, with an
+--     identically defined color
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-protectedNoFault-11455# If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, a pipeline is bound to the pipeline bind point
+--     used by this command, or a shader is bound to a shader stage used by
+--     this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     the address that the resource is mapped to /must/ have been queried
+--     from a buffer created without the
+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT'
+--     create flag set
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-protectedNoFault-11456# If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, a pipeline is bound to the pipeline bind point
+--     used by this command, or a shader is bound to a shader stage used by
+--     this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     the address of the indirect memory /must/ have been queried from a
+--     buffer created without the
+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT'
+--     create flag set
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-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.GraphicsPipeline.GraphicsPipelineCreateInfo'
+--     structure specified when creating the
+--     'Vulkan.Core10.Handles.Pipeline' bound to
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-subpass-02685# The subpass index
+--     of the current render pass /must/ be equal to the @subpass@ member
+--     of the 'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'
+--     structure specified when creating the
+--     'Vulkan.Core10.Handles.Pipeline' bound to
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-OpTypeImage-07468# If any shader
+--     executed by this pipeline accesses an @OpTypeImage@ variable with a
+--     @Dim@ operand of @SubpassData@, it /must/ be decorated with an
+--     @InputAttachmentIndex@ that corresponds to a valid input attachment
+--     in the current subpass
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07469# Input attachment
+--     views accessed in a subpass /must/ be created with the same
+--     'Vulkan.Core10.Enums.Format.Format' as the corresponding subpass
+--     definition, and be created with a 'Vulkan.Core10.Handles.ImageView'
+--     that is compatible with the attachment referenced by the subpass\'
+--     @pInputAttachments@[@InputAttachmentIndex@] in the bound
+--     'Vulkan.Core10.Handles.Framebuffer' as specified by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#compatibility-inputattachment Fragment Input Attachment Compatibility>
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-pDepthInputAttachmentIndex-09595#
+--     Input attachment views accessed in a dynamic render pass with a
+--     @InputAttachmentIndex@ referenced by
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo',
+--     or no @InputAttachmentIndex@ if
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pDepthInputAttachmentIndex@
+--     or
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pStencilInputAttachmentIndex@
+--     are @NULL@, /must/ be created with a
+--     'Vulkan.Core10.Handles.ImageView' that is compatible with the
+--     corresponding color, depth, or stencil attachment in
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-pDepthInputAttachmentIndex-09596#
+--     Input attachment views accessed in a dynamic render pass via a
+--     shader object /must/ have an @InputAttachmentIndex@ if both
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pDepthInputAttachmentIndex@
+--     and
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pStencilInputAttachmentIndex@
+--     are non-@NULL@
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-InputAttachmentIndex-09597# If
+--     an input attachment view accessed in a dynamic render pass via a
+--     shader object has an @InputAttachmentIndex@, the
+--     @InputAttachmentIndex@ /must/ match an index in
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-06537# Memory backing image
+--     subresources used as attachments in the current render pass /must/
+--     not be written in any way other than as an attachment by this
+--     command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-10795# If a color
+--     attachment is written by any prior command in this subpass or by the
+--     load, store, or resolve operations for this subpass, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT' on
+--     that attachment, it /must/ not be accessed in any way other than as
+--     an attachment by this command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-10796# If a depth
+--     attachment is written by any prior command in this subpass or by the
+--     load, store, or resolve operations for this subpass, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' on
+--     that attachment, it /must/ not be accessed in any way other than as
+--     an attachment by this command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-10797# If a stencil
+--     attachment is written by any prior command in this subpass or by the
+--     load, store, or resolve operations for this subpass, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
+--     on that attachment, it /must/ not be accessed in any way other than
+--     as an attachment by this command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-12338# If a color
+--     attachment is read in this command in any way other than as an
+--     attachment, or has been read by any prior command in this subpass as
+--     a non-attachment, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT' on
+--     that attachment, the color attachment /must/ not be written to by
+--     this command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-12339# If a depth
+--     attachment is read in this command in any way other than as an
+--     attachment, or has been read by any prior command in this subpass as
+--     a non-attachment, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' on
+--     that attachment, the depth attachment /must/ not be written to by
+--     this command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-12340# If a stencil
+--     attachment is read in this command in any way other than as an
+--     attachment, or has been read by any prior command in this subpass as
+--     a non-attachment, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
+--     on that attachment, the stencil attachment /must/ not be written to
+--     by this command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-09003# If an attachment is
+--     written by any prior command in this subpass or by the load, store,
+--     or resolve operations for this subpass, it /must/ not be accessed in
+--     any way other than as an attachment, storage image, or sampled image
+--     by this command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-06886# If the current
+--     render pass instance uses a depth\/stencil attachment with a
+--     read-only layout for the depth aspect,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-depth-write depth writes>
+--     /must/ be disabled
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-06887# If the current
+--     render pass instance uses a depth\/stencil attachment with a
+--     read-only layout for the stencil aspect, both front and back
+--     @writeMask@ are not zero, and stencil test is enabled,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-stencil all stencil ops>
+--     /must/ be 'Vulkan.Core10.Enums.StencilOp.STENCIL_OP_KEEP'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07831# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT' dynamic
+--     state enabled then
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetViewport' /must/ have
+--     been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07832# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR' dynamic
+--     state enabled then
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetScissor' /must/ have been
+--     called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08617# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_WIDTH' dynamic
+--     state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line topology class, then
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth' /must/ have
+--     been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07834# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS' dynamic
+--     state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @depthBiasEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBias' or
+--     'Vulkan.Extensions.VK_EXT_depth_bias_control.cmdSetDepthBias2EXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07835# If a shader object
+--     is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_BLEND_CONSTANTS'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and an active color
+--     attachment
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @blendEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE' with a
+--     blend equations where any
+--     'Vulkan.Core10.Enums.BlendFactor.BlendFactor' member is
+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_COLOR',
+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR',
+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_ALPHA', or
+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA',
+--     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetBlendConstants'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07836# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @depthBoundsTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBounds' /must/
+--     have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07837# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_COMPARE_MASK'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilCompareMask'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07838# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_WRITE_MASK'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilWriteMask'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07839# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_REFERENCE'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of and @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilReference'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-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-vkCmdDrawIndexedIndirectCount-sampleLocationsEnable-02689# If
+--     the bound graphics pipeline was created with
+--     'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@
+--     set to 'Vulkan.Core10.FundamentalTypes.TRUE', then the active depth
+--     attachment /must/ have been created with the
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'
+--     bit set
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07634# If the
+--     @VK_EXT_sample_locations@ extension is enabled, a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-06666# If the
+--     @VK_EXT_sample_locations@ extension is enabled, a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07840# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CULL_MODE' dynamic
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetCullMode'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07841# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRONT_FACE' dynamic
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetFrontFace'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07843# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_TEST_ENABLE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE',
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthTestEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07844# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @depthTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthWriteEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07845# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_COMPARE_OP'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @depthTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthCompareOp'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07846# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthBounds depthBounds>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthBoundsTestEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07847# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_TEST_ENABLE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilTestEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07848# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_OP' dynamic
+--     state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilOp'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-viewportCount-03417# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
+--     dynamic state enabled, and the state is not inherited, then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-scissorCount-03418# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
+--     dynamic state enabled, and the state is not inherited, then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-viewportCount-03419# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which 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, and the state is not inherited, then 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-vkCmdDrawIndexedIndirectCount-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-vkCmdDrawIndexedIndirectCount-viewportCount-04138# If the
+--     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which 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 state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @viewportWScalingEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.cmdSetViewportWScalingNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08636# If the
+--     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which 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 state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @viewportWScalingEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', 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-vkCmdDrawIndexedIndirectCount-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-vkCmdDrawIndexedIndirectCount-shadingRateImage-09233# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV'
+--     and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetCoarseSampleOrderNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-shadingRateImage-09234# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which 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 state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @shadingRateImageEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetViewportShadingRatePaletteNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08637# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which 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 state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @shadingRateImageEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', 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-vkCmdDrawIndexedIndirectCount-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
+--     'Vulkan.Core10.GraphicsPipeline.PipelineViewportStateCreateInfo',
+--     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-vkCmdDrawIndexedIndirectCount-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
+--     'Vulkan.Core10.GraphicsPipeline.PipelineViewportStateCreateInfo',
+--     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-vkCmdDrawIndexedIndirectCount-None-07878# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-exclusiveScissor exclusiveScissor>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07879# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-exclusiveScissor exclusiveScissor>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV'
+--     dynamic state enabled, and the most recent call to
+--     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorEnableNV'
+--     in the current command buffer set any element of
+--     @pExclusiveScissorEnables@ to 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then
+--     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-04876# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     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 and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-04877# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-logicOp-04878# If a shader
+--     object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @logicOpEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetLogicOpEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-primitiveFragmentShadingRateWithMultipleViewports-04552#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
+--     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-vkCmdDrawIndexedIndirectCount-primitiveFragmentShadingRateWithMultipleViewports-08642#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
+--     limit is not supported, and any shader object bound to a graphics
+--     stage writes 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-vkCmdDrawIndexedIndirectCount-blendEnable-04727# If a shader
+--     object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then for each color
+--     attachment, 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 corresponding
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @blendEnable@ /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08644# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and none of the following is
+--     enabled:
+--
+--     -   the @VK_AMD_mixed_attachment_samples@ extension
+--
+--     -   the @VK_NV_framebuffer_mixed_samples@ extension
+--
+--     -   the
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
+--         feature
+--
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizationSamples@ /must/ be the same as the current color
+--     and\/or depth\/stencil attachments
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08876# If a shader object
+--     is bound to any graphics stage, the current render pass instance
+--     /must/ have been begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-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-vkCmdDrawIndexedIndirectCount-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-vkCmdDrawIndexedIndirectCount-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-vkCmdDrawIndexedIndirectCount-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-vkCmdDrawIndexedIndirectCount-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-vkCmdDrawIndexedIndirectCount-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-vkCmdDrawIndexedIndirectCount-viewMask-06178# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the 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-vkCmdDrawIndexedIndirectCount-colorAttachmentCount-06179# If
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled and the current render pass instance was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the 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-vkCmdDrawIndexedIndirectCount-dynamicRenderingUnusedAttachments-08910#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and 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 an @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 bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-dynamicRenderingUnusedAttachments-08912#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and 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 an @imageView@ equal to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have the
+--     corresponding element of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
+--     used to create the bound pipeline equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-dynamicRenderingUnusedAttachments-08911#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled, and 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 an @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 bound graphics pipeline, or the corresponding
+--     element of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@,
+--     if it exists, /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-colorAttachmentCount-09362# If
+--     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@
+--     equal to @1@, there is no shader object bound to any graphics stage,
+--     and a color attachment with a resolve mode of
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID',
+--     each element of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
+--     array with a @resolveImageView@ not equal to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
+--     with an image created with a
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value equal to the
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value used to create the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-09363# If there is no
+--     shader object bound to any graphics stage, the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and a
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
+--     equal to @1@, and a color attachment with a resolve mode of
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID',
+--     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 an image created with a
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value equal to the
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value used to create the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-09364# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there is no shader object bound to any graphics stage, and the bound
+--     graphics pipeline was created with a non-zero
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value and with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
+--     /must/ have set the blend enable to
+--     'Vulkan.Core10.FundamentalTypes.FALSE' prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-09365# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there is no shader object bound to any graphics stage, and the bound
+--     graphics pipeline was created with a non-zero
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value and with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     /must/ have set @rasterizationSamples@ to
+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' prior
+--     to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-09366# If there is a shader
+--     object bound to any graphics stage, and the current render pass
+--     includes a color attachment that uses the
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID'
+--     resolve mode, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
+--     /must/ have set blend enable to
+--     'Vulkan.Core10.FundamentalTypes.FALSE' prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-rasterizationSamples-09367# If
+--     there is a shader object bound to any graphics stage, and the
+--     current render pass includes a color attachment that uses the
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID'
+--     resolve mode, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     /must/ have set @rasterizationSamples@ to
+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' prior
+--     to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-09368# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there is no shader object bound to any graphics stage, and the bound
+--     graphics pipeline was created with a non-zero
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value and with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     /must/ have set @pFragmentSize->width@ to @1@ prior to this drawing
+--     command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-09369# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there is no shader object bound to any graphics stage, and the bound
+--     graphics pipeline was created with a non-zero
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value and with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     /must/ have set @pFragmentSize->height@ to @1@ prior to this drawing
+--     command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-pFragmentSize-09370# If there is
+--     a shader object bound to any graphics stage, and the current render
+--     pass includes a color attachment that uses the
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID'
+--     resolve mode, then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     /must/ have set @pFragmentSize->width@ to @1@ prior to this drawing
+--     command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-pFragmentSize-09371# If there is
+--     a shader object bound to any graphics stage, and the current render
+--     pass includes a color attachment that uses the
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID'
+--     resolve mode, then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     /must/ have set @pFragmentSize->height@ to @1@ prior to this drawing
+--     command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07749# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
+--     feature is enabled, a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-attachmentCount-07750# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
+--     feature is enabled, a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then the @attachmentCount@
+--     parameter of most recent call to
+--     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
+--     in the current command buffer /must/ be greater than or equal to the
+--     number of active color attachments
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07751# If the
+--     @VK_EXT_discard_rectangles@ extension is enabled, a graphics
+--     pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_EXT'
+--     dynamic state enabled and the @pNext@ chain of
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo' included
+--     a
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'
+--     structure, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @discardRectangleEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command for each
+--     discard rectangle in
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'::@discardRectangleCount@
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-rasterizerDiscardEnable-09236#
+--     If the @VK_EXT_discard_rectangles@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_EXT'
+--     dynamic state enabled and the @pNext@ chain of
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo' did not
+--     include a
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'
+--     structure, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @discardRectangleEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command for each
+--     discard rectangle in
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.PhysicalDeviceDiscardRectanglePropertiesEXT'::@maxDiscardRectangles@
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07880# If the
+--     @VK_EXT_discard_rectangles@ extension is enabled, a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07881# If the
+--     @VK_EXT_discard_rectangles@ extension is enabled, a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @discardRectangleEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleModeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-dynamicRenderingUnusedAttachments-08913#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
+--     used to create the bound graphics pipeline /must/ be equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-dynamicRenderingUnusedAttachments-08914#
+--     If current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->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 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->imageView@
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-dynamicRenderingUnusedAttachments-08915#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
+--     used to create the bound graphics pipeline was not equal to the
+--     'Vulkan.Core10.Enums.Format.Format' used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@,
+--     the value of the format /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-dynamicRenderingUnusedAttachments-08916#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
+--     used to create the bound graphics pipeline /must/ be equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-dynamicRenderingUnusedAttachments-08917#
+--     If current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->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 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->imageView@
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-dynamicRenderingUnusedAttachments-08918#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
+--     used to create the bound graphics pipeline was not equal to the
+--     'Vulkan.Core10.Enums.Format.Format' used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@,
+--     the value of the format /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-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_fragment_shading_rate.RenderingFragmentShadingRateAttachmentInfoKHR'::@imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the bound graphics
+--     pipeline /must/ have been created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-dynamicRenderingLocalRead-11797#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingLocalRead dynamicRenderingLocalRead>
+--     feature is enabled, the
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_LOCAL_READ_CONCURRENT_ACCESS_CONTROL_BIT_KHR'
+--     flag is specified, and an attachment is being used as a feedback
+--     loop as specified by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#rendering-attachment-input-attachment-feedback >,
+--     'Vulkan.Extensions.VK_KHR_maintenance10.RenderingAttachmentFlagsInfoKHR'::@flags@
+--     for that attachment /must/ include
+--     'Vulkan.Extensions.VK_KHR_maintenance10.RENDERING_ATTACHMENT_INPUT_ATTACHMENT_FEEDBACK_BIT_KHR'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-imageView-06184# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and
+--     'Vulkan.Extensions.VK_EXT_fragment_density_map.RenderingFragmentDensityMapAttachmentInfoEXT'::@imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the bound graphics
+--     pipeline /must/ have been created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-layers-10831# If the current
+--     render pass instance was created with
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE'
+--     or
+--     'Vulkan.Core10.Enums.RenderPassCreateFlagBits.RENDER_PASS_CREATE_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE',
+--     and the bound graphics pipeline was created with
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE',
+--     then the current render pass instance /must/ have a @layers@ value
+--     less than or equal to
+--     'Vulkan.Extensions.VK_VALVE_fragment_density_map_layered.PipelineFragmentDensityMapLayeredCreateInfoVALVE'::@maxFragmentDensityMapLayers@
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-colorAttachmentCount-06185# If
+--     the bound pipeline was created with a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.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_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     used to create the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-pDepthAttachment-06186# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the bound pipeline was created with a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     structure, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
+--     @depthStencilAttachmentSamples@ member of
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     used to create the bound graphics pipeline /must/ be equal to the
+--     sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-pStencilAttachment-06187# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the bound pipeline was created with a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     structure, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
+--     @depthStencilAttachmentSamples@ member of
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     used to create the bound graphics pipeline /must/ be equal to the
+--     sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-multisampledRenderToSingleSampled-07285#
+--     If the bound pipeline was created without a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     structure, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
+--     feature is not enabled, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, 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 @rasterizationSamples@ for
+--     the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-multisampledRenderToSingleSampled-07286#
+--     If the bound pipeline was created without a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     structure, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
+--     feature is not enabled, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     @rasterizationSamples@ for the bound graphics pipeline /must/ be
+--     equal to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-multisampledRenderToSingleSampled-07287#
+--     If the bound pipeline was created without a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     structure, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
+--     feature is not enabled, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     @rasterizationSamples@ for the bound graphics pipeline /must/ be
+--     equal to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-pNext-07935# If this command is
+--     called inside a render pass instance started with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     and the @pNext@ chain of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'
+--     includes a
+--     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'
+--     structure with @multisampledRenderToSingleSampledEnable@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then the value of
+--     @rasterizationSamples@ for the bound graphics pipeline /must/ be
+--     equal to
+--     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'::@rasterizationSamples@
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-renderPass-06198# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the bound pipeline /must/ have been created with a
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'::@renderPass@
+--     equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-pColorAttachments-08963# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, there is a
+--     graphics pipeline bound with a fragment shader that statically
+--     writes to a color attachment, the color write mask is not zero,
+--     color writes are enabled, and the corresponding element of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     corresponding element of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-pColorAttachments-11539# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, there is a graphics
+--     pipeline bound with a fragment shader that statically writes to a
+--     color attachment, the color write mask is not zero, color writes are
+--     enabled, and the corresponding element of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     corresponding element of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-pDepthAttachment-08964# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, there is a
+--     graphics pipeline bound, depth test is enabled, and the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-pDepthAttachment-11540# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, there is a graphics
+--     pipeline bound, depth test is enabled, and the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-pStencilAttachment-08965# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, there is a
+--     graphics pipeline bound, stencil test is enabled and the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-pStencilAttachment-11860# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, there is a graphics
+--     pipeline bound, stencil test is enabled and the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-flags-10582# If the current
+--     render pass instance was begun with a
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     call in @commandBuffer@, its
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@flags@
+--     parameter /must/ not have
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT'
+--     set unless
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_CONTENTS_INLINE_BIT_KHR'
+--     is also set
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-primitivesGeneratedQueryWithRasterizerDiscard-06708#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithRasterizerDiscard primitivesGeneratedQueryWithRasterizerDiscard>
+--     feature is not enabled and the
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
+--     query is active,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-discard rasterization discard>
+--     /must/ not be enabled
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-primitivesGeneratedQueryWithNonZeroStreams-06709#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>
+--     feature is not enabled and the
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
+--     query is active, the bound graphics pipeline /must/ not have been
+--     created with a non-zero value in
+--     'Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT'::@rasterizationStream@
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07620# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClamp depthClamp>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClampEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07621# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_POLYGON_MODE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07622# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07623# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-alphaToCoverageEnable-08919# If
+--     the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT'
+--     dynamic state enabled, and @alphaToCoverageEnable@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-fragmentoutput Fragment Output Interface>
+--     /must/ contain a variable for the alpha @Component@ word in
+--     @Location@ 0 at @Index@ 0
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-alphaToCoverageEnable-08920# If
+--     a shader object is bound to any graphics stage, and the most recent
+--     call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT'
+--     in the current command buffer set @alphaToCoverageEnable@ to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-fragmentoutput Fragment Output Interface>
+--     /must/ contain a variable for the alpha @Component@ word in
+--     @Location@ 0 at @Index@ 0
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07624# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07625# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-alphaToOne alphaToOne>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToOneEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07626# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-logicOp logicOp>
+--     feature is enabled, a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLogicOpEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07627# If a shader object
+--     is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and there are color
+--     attachments bound, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07629# If a shader object
+--     is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and there are color
+--     attachments bound, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07630# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryStreams geometryStreams>
+--     feature is enabled, and a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
+--     stage or a graphics pipeline is bound which was created with both a
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
+--     stage and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_STREAM_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationStreamEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07631# If the
+--     @VK_EXT_conservative_rasterization@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetConservativeRasterizationModeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07632# If the
+--     @VK_EXT_conservative_rasterization@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @conservativeRasterizationMode@ is
+--     'Vulkan.Extensions.VK_EXT_conservative_rasterization.CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT',
+--     then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetExtraPrimitiveOverestimationSizeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-conservativePointAndLineRasterization-07499#
+--     If the @VK_EXT_conservative_rasterization@ extension is enabled,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-conservativePointAndLineRasterization conservativePointAndLineRasterization>
+--     is not supported, a shader object is bound to any graphics stage or
+--     a graphics pipeline is bound, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line or point topology class, then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @conservativeRasterizationMode@ /must/ be
+--     'Vulkan.Extensions.VK_EXT_conservative_rasterization.CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07633# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClipEnable depthClipEnable>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT'
+--     dynamic state, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07636# If the
+--     @VK_EXT_provoking_vertex@ extension is enabled, a shader object is
+--     bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetProvokingVertexModeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08666# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
+--     features are enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line topology class, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08669# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
+--     features are enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line topology class, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07849# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
+--     features are enabled and a shader object is bound to any graphics
+--     stage, or a bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @stippledLineEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then
+--     'Vulkan.Core14.Promoted_From_VK_KHR_line_rasterization.cmdSetLineStipple'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-10608# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line topology class, and the current @lineRasterizationMode@
+--     is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_BRESENHAM'
+--     or
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH',
+--     then the current @alphaToCoverageEnable@, @alphaToOneEnable@ and
+--     @sampleShadingEnable@ states /must/ all be
+--     'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07639# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClipControl depthClipControl>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipNegativeOneToOneEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-09650# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClampControl depthClampControl>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @depthClampEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_depth_clamp_control.cmdSetDepthClampRangeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07640# If the
+--     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportWScalingEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07641# If the
+--     @VK_NV_viewport_swizzle@ extension is enabled, and a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07642# If the
+--     @VK_NV_fragment_coverage_to_color@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07643# If the
+--     @VK_NV_fragment_coverage_to_color@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @coverageToColorEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07644# If the
+--     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationModeNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07645# If the
+--     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @coverageModulationMode@ is any value other than
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.COVERAGE_MODULATION_MODE_NONE_NV',
+--     then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07646# If the
+--     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @coverageModulationTableEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07647# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetShadingRateImageEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-pipelineFragmentShadingRate-09238#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07648# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-representativeFragmentTest representativeFragmentTest>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRepresentativeFragmentTestEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07649# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-coverageReductionMode coverageReductionMode>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageReductionModeNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-rasterizationSamples-07471# If
+--     the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, and the current subpass does not use any color
+--     and\/or depth\/stencil attachments, then the @rasterizationSamples@
+--     in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     /must/ follow the rules for a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-noattachments zero-attachment subpass>
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-samples-07472# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
+--     state enabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state disabled, then the @samples@ parameter in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
+--     /must/ be greater or equal to the
+--     'Vulkan.Core10.GraphicsPipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
+--     parameter used to create the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-samples-07473# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
+--     state and
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     states enabled, then the @samples@ parameter in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
+--     /must/ be greater or equal to the @rasterizationSamples@ parameter
+--     in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-09211# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, or a shader object is bound to any graphics stage,
+--     and the current render pass instance includes a
+--     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'
+--     structure with @multisampledRenderToSingleSampledEnable@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then the
+--     @rasterizationSamples@ in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     /must/ be the same as the @rasterizationSamples@ member of that
+--     structure
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-firstAttachment-07476# If a
+--     shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--     dynamic states enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
+--     in the current command buffer prior to this drawing command /must/
+--     have set a value for all active color attachments
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-firstAttachment-07478# If a
+--     shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT'
+--     dynamic states enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
+--     in the current command buffer prior to this drawing command /must/
+--     have set a value for all active color attachments
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-advancedBlendMaxColorAttachments-07480#
+--     If a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
+--     and
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--     dynamic states enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and an active color
+--     attachment
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @blendEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then the
+--     number of active color attachments /must/ not exceed
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-advancedBlendMaxColorAttachments advancedBlendMaxColorAttachments>
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-10862# If a graphics
+--     pipeline is bound was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
+--     , but not the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command for all
+--     active color attachments with the @blendEnable@
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-rasterizerDiscardEnable-10863#
+--     If a graphics pipeline is bound was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT',
+--     but not the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command for all
+--     active color attachments with the @blendEnable@
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-10864# If a shader object
+--     is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
+--     and
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then either
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command for all
+--     active color attachments with the @blendEnable@
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-primitivesGeneratedQueryWithNonZeroStreams-07481#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>
+--     feature is not enabled and the
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
+--     query is active, and the bound graphics pipeline was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_STREAM_EXT'
+--     state enabled, the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationStreamEXT'
+--     /must/ have set the @rasterizationStream@ to zero
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-sampleLocationsPerPixel-07482#
+--     If the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state enabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state disabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then the @sampleLocationsPerPixel@ member of @pSampleLocationsInfo@
+--     in the last call to
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     /must/ equal the @rasterizationSamples@ member of the
+--     'Vulkan.Core10.GraphicsPipeline.PipelineMultisampleStateCreateInfo'
+--     structure the bound graphics pipeline has been created with
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-sampleLocationsPerPixel-07483#
+--     If the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state enabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then the @sampleLocationsPerPixel@ member of @pSampleLocationsInfo@
+--     in the last call to
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     /must/ equal the @rasterizationSamples@ parameter of the last call
+--     to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-sampleLocationsEnable-07484# If
+--     a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage, or the bound graphics pipeline was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     state enabled, and @sampleLocationsEnable@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT'
+--     then the current active depth attachment /must/ have been created
+--     with the
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'
+--     bit set
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-sampleLocationsEnable-07485# If
+--     a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage, or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state enabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     state enabled, and if @sampleLocationsEnable@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
+--     then the @sampleLocationsInfo.maxSampleLocationGridSize.width@ in
+--     the last call to
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     /must/ evenly divide
+--     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.width@
+--     as returned by
+--     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
+--     with a @samples@ parameter equaling @rasterizationSamples@
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-sampleLocationsEnable-07486# If
+--     a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage, or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state enabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     state enabled, and if @sampleLocationsEnable@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
+--     then the @sampleLocationsInfo.maxSampleLocationGridSize.height@ in
+--     the last call to
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     /must/ evenly divide
+--     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.height@
+--     as returned by
+--     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
+--     with a @samples@ parameter equaling @rasterizationSamples@
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-sampleLocationsEnable-07487# If
+--     a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage, or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     state enabled, and if @sampleLocationsEnable@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
+--     the fragment shader code /must/ not statically use the extended
+--     instruction @InterpolateAtSample@
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-sampleLocationsEnable-07936# If
+--     the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state disabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then @sampleLocationsInfo.sampleLocationGridSize.width@ /must/
+--     evenly divide
+--     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.width@
+--     as returned by
+--     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
+--     with a @samples@ parameter equaling the value of
+--     @rasterizationSamples@ in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-sampleLocationsEnable-07937# If
+--     the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state disabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then @sampleLocationsInfo.sampleLocationGridSize.height@ /must/
+--     evenly divide
+--     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.height@
+--     as returned by
+--     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
+--     with a @samples@ parameter equaling the value of
+--     @rasterizationSamples@ in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-sampleLocationsEnable-07938# If
+--     the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state disabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then @sampleLocationsInfo.sampleLocationsPerPixel@ /must/ equal
+--     @rasterizationSamples@ in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-coverageModulationTableEnable-07488#
+--     If a shader object is bound to any graphics stage or the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV'
+--     state enabled, and the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV'
+--     set @coverageModulationTableEnable@ to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then the
+--     @coverageModulationTableCount@ parameter in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableNV'
+--     /must/ equal the current @rasterizationSamples@ divided by the
+--     number of color samples in the current active color attachment
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-rasterizationSamples-07489# If
+--     the @VK_NV_framebuffer_mixed_samples@ extension is enabled, and if
+--     current subpass has a depth\/stencil attachment and depth test,
+--     stencil test, or depth bounds test are enabled in the bound
+--     pipeline, then the current @rasterizationSamples@ /must/ be the same
+--     as the sample count of the depth\/stencil attachment
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-coverageToColorEnable-07490# If
+--     the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
+--     state enabled and the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
+--     set the @coverageToColorEnable@ to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then there /must/ be an
+--     active color attachment at the location selected by the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
+--     @coverageToColorLocation@, with a
+--     'Vulkan.Core10.Enums.Format.Format' of
+--     'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R8_SINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R16_UINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R16_SINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R32_UINT', or
+--     'Vulkan.Core10.Enums.Format.FORMAT_R32_SINT'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-rasterizerDiscardEnable-09420#
+--     If the @VK_NV_fragment_coverage_to_color@ extension is enabled, and
+--     a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage, and the most recent call to
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
+--     in the current command buffer set @rasterizerDiscardEnable@ to
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
+--     set the @coverageToColorEnable@ to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then there /must/ be an
+--     active color attachment at the location selected by the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
+--     @coverageToColorLocation@, with a
+--     'Vulkan.Core10.Enums.Format.Format' of
+--     'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R8_SINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R16_UINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R16_SINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R32_UINT', or
+--     'Vulkan.Core10.Enums.Format.FORMAT_R32_SINT'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-coverageReductionMode-07491# If
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-coverageReductionMode coverageReductionMode>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV'
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     dynamic states enabled, then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current values>
+--     of @coverageReductionMode@, @rasterizationSamples@, the sample
+--     counts for the color and depth\/stencil attachments (if the subpass
+--     has them) /must/ be a valid combination returned by
+--     'Vulkan.Extensions.VK_NV_coverage_reduction_mode.getPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-viewportCount-07492# 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_SWIZZLE_NV'
+--     dynamic state enabled, 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-vkCmdDrawIndexedIndirectCount-viewportCount-07493# 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_SWIZZLE_NV'
+--     dynamic states enabled then the @viewportCount@ parameter in the
+--     last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
+--     /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-vkCmdDrawIndexedIndirectCount-viewportCount-09421# If the
+--     @VK_NV_viewport_swizzle@ extension is enabled, and a shader object
+--     is bound to any graphics stage, then the @viewportCount@ parameter
+--     in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
+--     /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-vkCmdDrawIndexedIndirectCount-rasterizationSamples-07494# If
+--     the @VK_NV_framebuffer_mixed_samples@ extension is enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-coverageReductionMode coverageReductionMode>
+--     feature is not enabled, or the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @coverageReductionMode@ is not
+--     'Vulkan.Extensions.VK_NV_coverage_reduction_mode.COVERAGE_REDUCTION_MODE_TRUNCATE_NV',
+--     and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizationSamples@ is greater than sample count of the color
+--     attachment, then
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-sampleshading sample shading>
+--     /must/ be disabled
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-stippledLineEnable-07495# If the
+--     bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic states enabled, and if the current @stippledLineEnable@
+--     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
+--     @lineRasterizationMode@ state is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_RECTANGULAR',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-stippledLineEnable-07496# If the
+--     bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic states enabled, and if the current @stippledLineEnable@
+--     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
+--     @lineRasterizationMode@ state is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_BRESENHAM',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-stippledLineEnable-07497# If the
+--     bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic states enabled, and if the current @stippledLineEnable@
+--     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
+--     @lineRasterizationMode@ state is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-stippledLineEnable-07498# If the
+--     bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic states enabled, and if the current @stippledLineEnable@
+--     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
+--     @lineRasterizationMode@ state is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_DEFAULT',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>
+--     feature /must/ be enabled and
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@strictLines@
+--     /must/ be 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-stage-07073# If the bound
+--     pipeline was created with the
+--     'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo'::@stage@
+--     member of an element of
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'::@pStages@
+--     set to
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT',
+--     then
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-mesh-shader Mesh Shader Queries>
+--     /must/ not be active
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08877# If a shader object
+--     is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07850# If dynamic state was
+--     inherited from
+--     'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV',
+--     it /must/ be set in the current command buffer prior to this drawing
+--     command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-nextStage-10745# For each shader
+--     object bound to a graphics stage, except for shader object bound to
+--     the last graphics stage in the logical pipeline, it /must/ have been
+--     created with a @nextStage@ including the corresponding bit to the
+--     shader object bound to the following graphics stage in the logical
+--     pipeline
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08684# If there is no bound
+--     graphics pipeline,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08685# If there is no bound
+--     graphics pipeline, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellationShader>
+--     feature is enabled,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08686# If there is no bound
+--     graphics pipeline, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellationShader>
+--     feature is enabled,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08687# If there is no bound
+--     graphics pipeline, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometryShader>
+--     feature is enabled,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08688# If there is no bound
+--     graphics pipeline,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08689# If there is no bound
+--     graphics pipeline, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
+--     feature is enabled,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08690# If there is no bound
+--     graphics pipeline, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
+--     feature is enabled,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08693# If there is no bound
+--     graphics pipeline, and at least one of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
+--     features is enabled, one of the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--     stages /must/ have a valid 'Vulkan.Extensions.Handles.ShaderEXT'
+--     bound, and the other /must/ have no
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08696# If there is no bound
+--     graphics pipeline, and a valid 'Vulkan.Extensions.Handles.ShaderEXT'
+--     is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage, there /must/ be no 'Vulkan.Extensions.Handles.ShaderEXT'
+--     bound to either the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--     stage or the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--     stage
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08698# If any graphics
+--     shader is bound which was created with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
+--     flag, then all shaders created with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
+--     flag in the same
+--     'Vulkan.Extensions.VK_EXT_shader_object.createShadersEXT' call
+--     /must/ also be bound
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08699# If any graphics
+--     shader is bound which was created with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
+--     flag, any stages in between stages whose shaders which did not
+--     create a shader with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
+--     flag as part of the same
+--     'Vulkan.Extensions.VK_EXT_shader_object.createShadersEXT' call
+--     /must/ not have any 'Vulkan.Extensions.Handles.ShaderEXT' bound
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08878# All bound graphics
+--     shader objects /must/ have been created with identical or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-identically-defined identically defined>
+--     push constant ranges
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08879# All bound graphics
+--     shader objects /must/ have either been created with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag set, or with identical or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-identically-defined identically defined>
+--     arrays of descriptor set layouts
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-colorAttachmentCount-09372# If
+--     the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and a
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
+--     equal to @1@, a color attachment with a resolve mode of
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID',
+--     and a fragment shader is bound, it /must/ not declare the
+--     @DepthReplacing@ or @StencilRefReplacingEXT@ execution modes
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-pDynamicStates-08715# If the
+--     bound graphics pipeline state includes a fragment shader stage, was
+--     created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE'
+--     set in
+--     'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@,
+--     and the fragment shader declares the @EarlyFragmentTests@ execution
+--     mode and uses @OpDepthAttachmentReadEXT@, the @depthWriteEnable@
+--     parameter in the last call to
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthWriteEnable'
+--     /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-pDynamicStates-08716# If the
+--     bound graphics pipeline state includes a fragment shader stage, was
+--     created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_WRITE_MASK'
+--     set in
+--     'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@,
+--     and the fragment shader declares the @EarlyFragmentTests@ execution
+--     mode and uses @OpStencilAttachmentReadEXT@, the @writeMask@
+--     parameter in the last call to
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilWriteMask' /must/
+--     be @0@
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-09116# If a shader object
+--     is bound to any graphics stage or the bound graphics pipeline was
+--     created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT',
+--     and the format of any color attachment is
+--     'Vulkan.Core10.Enums.Format.FORMAT_E5B9G9R9_UFLOAT_PACK32', the
+--     corresponding element of the @pColorWriteMasks@ parameter of
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
+--     /must/ either include all of
+--     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_R_BIT',
+--     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_G_BIT',
+--     and
+--     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_B_BIT',
+--     or none of them
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-maxFragmentDualSrcAttachments-09239#
+--     If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blending blending>
+--     is enabled for any attachment where either the source or destination
+--     blend factors for that attachment
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-dsb use the secondary color input>,
+--     the maximum value of @Location@ for any output attachment
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-staticuse statically used>
+--     in the @Fragment@ @Execution@ @Model@ executed by this command
+--     /must/ be less than
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFragmentDualSrcAttachments maxFragmentDualSrcAttachments>
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-09548# If the current
+--     render pass was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there is no shader object bound to any graphics stage, the value of
+--     each element of
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingAttachmentLocationInfo'::@pColorAttachmentLocations@
+--     in the bound pipeline /must/ match the value for the corresponding
+--     locations set currently in the current render pass instance
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-09549# If the current
+--     render pass was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     and there is no shader object bound to any graphics stage, the value
+--     of each element of
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pColorAttachmentInputIndices@
+--     in the bound pipeline /must/ match the value for the corresponding
+--     index set currently in the current render pass instance
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-10927# If the current
+--     render pass was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     and there is no shader object bound to any graphics stage, the value
+--     of
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pDepthInputAttachmentIndex@
+--     in the bound pipeline /must/ match the value set currently in the
+--     current render pass instance
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-10928# If the current
+--     render pass was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     and there is no shader object bound to any graphics stage, the value
+--     of
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pStencilInputAttachmentIndex@
+--     in the bound pipeline /must/ match the value set currently in the
+--     current render pass instance
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-09642# If the current
+--     render pass was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     with the
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT'
+--     flag, the bound graphics pipeline /must/ have been created with
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-09643# If the bound
+--     graphics pipeline was created with
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT',
+--     the current render pass /must/ have begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     with the
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT'
+--     flag
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-10677# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model>
+--     is enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tileShadingPerTileDraw tileShadingPerTileDraw>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-10772# If a shader object
+--     is bound to any graphics stage, /multiview/ functionality /must/ not
+--     be enabled in the current render pass
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-multiviewPerViewViewports-12262#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiviewPerViewViewports multiviewPerViewViewports>
+--     feature is enabled, then the index of the most significant bit in
+--     current render pass instance @viewMask@ /must/ be less than the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @viewportCount@
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-multiviewPerViewViewports-12263#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiviewPerViewViewports multiviewPerViewViewports>
+--     feature is enabled, then the index of the most significant bit in
+--     current render pass instance @viewMask@ /must/ be less than the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @scissorCount@
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-flags-11521# If current render
+--     pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@flags@
+--     which includes
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_FRAGMENT_REGION_BIT_EXT',
+--     and if
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-sampleshading sample shading>
+--     is enabled (explicitly or implicitly), then the minimum fraction for
+--     sample shading /must/ equal 0.0
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-11522# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and contains a custom resolve, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, the graphics pipeline bound /must/ have been
+--     created with a
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-11523# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and does not contain a custom resolve, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, the graphics pipeline bound /must/ not have
+--     been created with a
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-customResolve-11524# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, the graphics pipeline
+--     bound /must/ have been created with
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@
+--     as 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-customResolve-11525# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and contains a custom resolve, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not been recorded in the render pass instance, the graphics
+--     pipeline bound /must/ have been created with
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@
+--     as 'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-11861# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled and the current render pass instance was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and contains a custom resolve, the bound graphics pipeline /must/
+--     have been created with a
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@colorAttachmentCount@
+--     equal to
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-11862# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and the current render pass instance was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, 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 an @resolveImageView@ 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_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@
+--     used to create the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-11863# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and the current render pass instance was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, 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 an @resolveImageView@ equal to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have the
+--     corresponding element of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@
+--     used to create the bound pipeline equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-dynamicRenderingUnusedAttachments-11864#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled, the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, 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 an @resolveImageView@ 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_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@
+--     used to create the bound graphics pipeline, or the corresponding
+--     element of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@,
+--     if it exists, /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-11865# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@
+--     used to create the bound graphics pipeline /must/ be equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-11866# If current render
+--     pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@
+--     used to create the 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->resolveImageView@
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-dynamicRenderingUnusedAttachments-11867#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@
+--     used to create the bound graphics pipeline was not equal to the
+--     'Vulkan.Core10.Enums.Format.Format' used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@,
+--     the value of the format /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-11868# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@
+--     used to create the bound graphics pipeline /must/ be equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-11869# If current render
+--     pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@
+--     used to create the 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->resolveImageView@
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-dynamicRenderingUnusedAttachments-11870#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@
+--     used to create the bound graphics pipeline was not equal to the
+--     'Vulkan.Core10.Enums.Format.Format' used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@,
+--     the value of the format /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-colorAttachmentCount-11871# If
+--     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@ and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, then for each element
+--     of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
+--     array with a @resolveImageView@ not equal to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', the @resolveImageView@
+--     /must/ have been created with a sample count equal to the value of
+--     @rasterizationSamples@ for the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-pDepthAttachment-11872# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     @rasterizationSamples@ for the bound graphics pipeline /must/ be
+--     equal to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-pStencilAttachment-11873# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     @rasterizationSamples@ for the bound graphics pipeline /must/ be
+--     equal to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-customResolve-11529# If a shader
+--     object is bound to the fragment stage, the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     a fragment density map attachment is active, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been called, then the fragment shader object bound /must/ have
+--     been created with
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@
+--     as 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-customResolve-11530# If a shader
+--     object is bound to the fragment stage, the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and contains a custom resolve, a fragment density map attachment is
+--     active, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been called, then the fragment shader object bound
+--     /must/ have been created with
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@
+--     as 'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-flags-13361# If there are any
+--     shader objects bound that were created with @flags@ that includes
+--     the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     bit, then all bound shader objects /must/ have been created with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     bit
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-flags-13362# If there are any
+--     shader objects bound that were created with @flags@ that includes
+--     the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     bit, then the pipeline layout of the bound descriptor sets /must/
+--     have been created with
+--     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT'
+--     set
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-flags-13363# If there are any
+--     shader objects bound that were created with @flags@ that includes
+--     the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     bit, and any of the descriptor set layouts used to create the
+--     pipeline layout of the bound descriptor sets were created with any
+--     binding’s
+--     'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutBinding'::@stageFlags@
+--     set with
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT',
+--     then there /must/ be no binding with
+--     'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutBinding'::@stageFlags@
+--     set with
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-flags-13364# If there are any
+--     shader objects bound that were created with @flags@ that includes
+--     both the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     and
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
+--     bits, the pipeline layout of the bound descriptor sets /must/ have
+--     been created with
+--     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_NO_TASK_SHADER_BIT_KHR'
+--     set
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-flags-13365# If there are any
+--     shader objects bound that were created with @flags@ that includes
+--     both the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     and
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
+--     bits, there /must/ be no shader object bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--     stage
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-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-vkCmdDrawIndexedIndirectCount-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-vkCmdDrawIndexedIndirectCount-None-02721# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, and that pipeline was created without
+--     enabling
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     for @vertexInputs@, then 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-vkCmdDrawIndexedIndirectCount-format-10389# For each vertex
+--     attribute accessed by this command, if its
+--     'Vulkan.Core10.GraphicsPipeline.VertexInputAttributeDescription'::@format@
+--     or
+--     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@
+--     is a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-packed packed format>,
+--     and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-legacyVertexAttributes legacyVertexAttributes>
+--     feature is not enabled, the value of @attribAddress@, calculated as
+--     described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input-address-calculation Vertex Input Calculation>,
+--     /must/ be a multiple of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats size of the format>
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-format-10390# For each vertex
+--     attribute accessed by this command, if its
+--     'Vulkan.Core10.GraphicsPipeline.VertexInputAttributeDescription'::@format@
+--     or
+--     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@
+--     is not a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-packed packed format>,
+--     and either the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-legacyVertexAttributes legacyVertexAttributes>
+--     feature is not enabled or @format@ has 64-bit components, the value
+--     of @attribAddress@, calculated as described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input-address-calculation Vertex Input Calculation>,
+--     /must/ be a multiple of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats component size of the format>
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07842# If there is a shader
+--     object bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY'
+--     dynamic state enabled then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-dynamicPrimitiveTopologyUnrestricted-07500#
+--     If the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY'
+--     dynamic state enabled and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-dynamicPrimitiveTopologyUnrestricted dynamicPrimitiveTopologyUnrestricted>
+--     is 'Vulkan.Core10.FundamentalTypes.FALSE', then the
+--     @primitiveTopology@ parameter of
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
+--     /must/ be of the same
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-class topology class>
+--     as the pipeline
+--     'Vulkan.Core10.GraphicsPipeline.PipelineInputAssemblyStateCreateInfo'::@topology@
+--     state
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-primitiveTopology-10286# If a
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
+--     stage is bound, then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @primitiveTopology@ /must/ be
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST'
+--     prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-primitiveTopology-10747# If
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
+--     set @primitiveTopology@ to
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST'
+--     prior to this drawing command, then a
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
+--     stage /must/ be bound
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-primitiveTopology-10748# If
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
+--     set @primitiveTopology@ to
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_POINT_LIST'
+--     prior to this drawing command, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance5 maintenance5>
+--     feature is not enabled, both a
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     and
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
+--     stage are not bound, then the @Vertex@ @Execution@ @Model@ /must/
+--     have a @PointSize@ decorated variable that is statically written to
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-pStrides-04913# If the bound
+--     graphics pipeline was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE'
+--     dynamic state enabled, but without the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2'
+--     with a non-@NULL@ @pStrides@ parameter or
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.cmdBindVertexBuffers3KHR'
+--     with @setStride@ set to 'Vulkan.Core10.FundamentalTypes.TRUE' /must/
+--     have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this draw command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-13118# If the bound
+--     graphics pipeline was created without the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE'
+--     dynamic state enabled, without the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
+--     dynamic state enabled, and
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.cmdBindVertexBuffers3KHR'
+--     was called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this draw command, the value
+--     of @setStride@ in each of its @pBindInfos@ elements must have been
+--     'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-04914# If there is a shader
+--     object bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage or 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 and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this draw command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-Input-07939# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-vertexAttributeRobustness vertexAttributeRobustness>
+--     feature is not enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance9 maintenance9>
+--     feature is not enabled, and there is a shader object bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
+--     dynamic state enabled then all variables with the @Input@ storage
+--     class decorated with @Location@ in the @Vertex@ @Execution@ @Model@
+--     @OpEntryPoint@ /must/ contain a location in
+--     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@location@
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-Input-08734# If there is a
+--     shader object bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
+--     dynamic state enabled and either the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-legacyVertexAttributes legacyVertexAttributes>
+--     feature is not enabled or the SPIR-V Type associated with a given
+--     @Input@ variable of the corresponding @Location@ in the @Vertex@
+--     @Execution@ @Model@ @OpEntryPoint@ is 64-bit, then the numeric type
+--     associated with all @Input@ variables of the corresponding
+--     @Location@ in the @Vertex@ @Execution@ @Model@ @OpEntryPoint@ /must/
+--     be the same as
+--     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-format-08936# If there is a
+--     shader object bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
+--     dynamic state enabled and
+--     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@
+--     has a 64-bit component, then the scalar width associated with all
+--     @Input@ variables of the corresponding @Location@ in the @Vertex@
+--     @Execution@ @Model@ @OpEntryPoint@ /must/ be 64-bit
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-format-08937# If there is a
+--     shader object bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
+--     dynamic state enabled and the scalar width associated with a
+--     @Location@ decorated @Input@ variable in the @Vertex@ @Execution@
+--     @Model@ @OpEntryPoint@ is 64-bit, then the corresponding
+--     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@
+--     /must/ have a 64-bit component
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-09203# If there is a shader
+--     object bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
+--     dynamic state enabled and
+--     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@
+--     has a 64-bit component, then all @Input@ variables at the
+--     corresponding @Location@ in the @Vertex@ @Execution@ @Model@
+--     @OpEntryPoint@ /must/ not use components that are not present in the
+--     format
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-04875# If there is a shader
+--     object bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
+--     stage or the bound graphics pipeline state was created with both a
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
+--     stage and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @primitiveTopology@ is
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST',
+--     then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPatchControlPointsEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-04879# If there is a shader
+--     object bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE'
+--     dynamic state enabled then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-09637# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitiveTopologyListRestart primitiveTopologyListRestart>
+--     feature is not enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-vertex-input-assembler-topology input assembly>
+--     is
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_POINT_LIST',
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_LINE_LIST',
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_TRIANGLE_LIST',
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY',
+--     or
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY',
+--     there is a shader object bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE'
+--     dynamic state enabled, then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnable'
+--     /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-10909# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitiveTopologyPatchListRestart primitiveTopologyPatchListRestart>
+--     feature is not enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-vertex-input-assembler-topology input assembly>
+--     is
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST',
+--     there is a shader object bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
+--     stage or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE'
+--     dynamic state enabled then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnable'
+--     /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-stage-06481# The bound graphics
+--     pipeline /must/ not have been created with the
+--     'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo'::@stage@
+--     member of any element of
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'::@pStages@
+--     set to
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08885# There /must/ be no
+--     shader object bound to either of the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--     stages
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07619# If a shader object
+--     is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     stage or a graphics pipeline is bound which was created with both a
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     stage and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetTessellationDomainOriginEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-OpExecutionMode-12239# If a
+--     shader is bound to both the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
+--     and
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     stages, and if both stages contain an @OpExecutionMode@ instruction
+--     specifying the type of subdivision, they /must/ be the same
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-OpExecutionMode-12240# If a
+--     shader is bound to both the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
+--     and
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     stages, and if both stages contain an @OpExecutionMode@ instruction
+--     specifying the orientation of triangles, they /must/ be the same
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-OpExecutionMode-12241# If a
+--     shader is bound to both the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
+--     and
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     stages, and if both stages contain an @OpExecutionMode@ instruction
+--     specifying the segment spacing, they /must/ be the same
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-OpExecutionMode-12242# If a
+--     shader is bound to both the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
+--     and
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     stages, and if both stages contain an @OpExecutionMode@ instruction
+--     specifying the output patch size, they /must/ be the same
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-buffer-02708# If @buffer@ is
+--     non-sparse then it /must/ be bound completely and contiguously to a
+--     single 'Vulkan.Core10.Handles.DeviceMemory' object
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-buffer-02709# @buffer@ /must/
+--     have been created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-offset-02710# @offset@ /must/ be
+--     a multiple of @4@
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-commandBuffer-02711#
+--     @commandBuffer@ /must/ not be a protected command buffer
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-countBuffer-02714# If
+--     @countBuffer@ is non-sparse then it /must/ be bound completely and
+--     contiguously to a single 'Vulkan.Core10.Handles.DeviceMemory' object
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-countBuffer-02715# @countBuffer@
+--     /must/ have been created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-countBufferOffset-02716#
+--     @countBufferOffset@ /must/ be a multiple of @4@
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-countBuffer-02717# The count
+--     stored in @countBuffer@ /must/ be less than or equal to
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxDrawIndirectCount@
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-countBufferOffset-04129#
+--     (@countBufferOffset@ + @sizeof@(uint32_t)) /must/ be less than or
+--     equal to the size of @countBuffer@
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-04445# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-drawIndirectCount drawIndirectCount>
+--     feature is not enabled this function /must/ not be used
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-07312# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance6 maintenance6>
+--     feature is not enabled, a valid index buffer /must/ be bound
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-primitiveRestartIndex-12401# If
+--     the primitive restart index for this draw operation was set with
+--     'Vulkan.Extensions.VK_EXT_primitive_restart_index.cmdSetPrimitiveRestartIndexEXT',
+--     then @primitiveRestartIndex@ /must/ not be greater than the maximum
+--     representable value for the bound
+--     'Vulkan.Core10.Enums.IndexType.IndexType'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-stride-03142# @stride@ /must/ be
+--     a multiple of @4@ and /must/ be greater than or equal to
+--     sizeof('Vulkan.Core10.OtherTypes.DrawIndexedIndirectCommand')
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-maxDrawCount-03143# If
+--     @maxDrawCount@ is greater than or equal to @1@, (@stride@ ×
+--     (@maxDrawCount@ - 1) + @offset@ +
+--     sizeof('Vulkan.Core10.OtherTypes.DrawIndexedIndirectCommand'))
+--     /must/ be less than or equal to the size of @buffer@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-buffer-parameter# @buffer@
+--     /must/ be a valid 'Vulkan.Core10.Handles.Buffer' handle
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-countBuffer-parameter#
+--     @countBuffer@ /must/ be a valid 'Vulkan.Core10.Handles.Buffer'
+--     handle
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-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-vkCmdDrawIndexedIndirectCount-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-renderpass# This command /must/
+--     only be called inside of a render pass instance
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-suspended# This command /must/
+--     not be called between suspended render pass instances
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-videocoding# This command /must/
+--     only be called outside of a video coding scope
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-commonparent# Each of @buffer@,
+--     @commandBuffer@, and @countBuffer@ /must/ have been created,
+--     allocated, or retrieved from the same 'Vulkan.Core10.Handles.Device'
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Inside                                                                                                                 | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdDrawIndexedIndirectCount is affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Core12/Promoted_From_VK_KHR_driver_properties.hs b/src/Vulkan/Core12/Promoted_From_VK_KHR_driver_properties.hs
--- a/src/Vulkan/Core12/Promoted_From_VK_KHR_driver_properties.hs
+++ b/src/Vulkan/Core12/Promoted_From_VK_KHR_driver_properties.hs
@@ -127,7 +127,11 @@
 -- @driverID@ /must/ be immutable for a given driver across instances,
 -- processes, driver versions, and system reboots.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Core12/Promoted_From_VK_KHR_image_format_list.hs b/src/Vulkan/Core12/Promoted_From_VK_KHR_image_format_list.hs
--- a/src/Vulkan/Core12/Promoted_From_VK_KHR_image_format_list.hs
+++ b/src/Vulkan/Core12/Promoted_From_VK_KHR_image_format_list.hs
@@ -56,6 +56,16 @@
 --     pointer to an array of @viewFormatCount@ valid
 --     'Vulkan.Core10.Enums.Format.Format' values
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Image.ImageCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceImageFormatInfo2'
+--
+--     -   'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_image_format_list VK_KHR_image_format_list>,
diff --git a/src/Vulkan/Core12/Promoted_From_VK_KHR_imageless_framebuffer.hs b/src/Vulkan/Core12/Promoted_From_VK_KHR_imageless_framebuffer.hs
--- a/src/Vulkan/Core12/Promoted_From_VK_KHR_imageless_framebuffer.hs
+++ b/src/Vulkan/Core12/Promoted_From_VK_KHR_imageless_framebuffer.hs
@@ -64,12 +64,22 @@
 -- structure passed to
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
 -- it is filled in to indicate whether each corresponding feature is
--- supported. 'PhysicalDeviceImagelessFramebufferFeatures' /can/ also be
--- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceImagelessFramebufferFeatures', it /must/ add an instance
+-- of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_imageless_framebuffer VK_KHR_imageless_framebuffer>,
@@ -134,8 +144,15 @@
 --     /must/ be a valid pointer to an array of @attachmentImageInfoCount@
 --     valid 'FramebufferAttachmentImageInfo' structures
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.Pass.FramebufferCreateInfo'
+--
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_imageless_framebuffer VK_KHR_imageless_framebuffer>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_2 VK_VERSION_1_2>,
 -- 'FramebufferAttachmentImageInfo',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
@@ -322,7 +339,7 @@
 --
 -- -   #VUID-VkRenderPassAttachmentBeginInfo-pAttachments-03219# Each
 --     element of @pAttachments@ /must/ have been created with the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-views-identity-mappings identity swizzle>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-image-views-identity-mappings identity swizzle>
 --
 -- -   #VUID-VkRenderPassAttachmentBeginInfo-pAttachments-04114# Each
 --     element of @pAttachments@ /must/ have been created with
@@ -330,7 +347,7 @@
 --     to 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D'
 --
 -- -   #VUID-VkRenderPassAttachmentBeginInfo-pAttachments-07010# If
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#subpass-multisampledrendertosinglesampled multisampled-render-to-single-sampled>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#subpass-multisampledrendertosinglesampled multisampled-render-to-single-sampled>
 --     is enabled for any subpass, all element of @pAttachments@ which have
 --     a sample count equal to
 --     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' /must/
@@ -346,6 +363,12 @@
 --     @attachmentCount@ is not @0@, @pAttachments@ /must/ be a valid
 --     pointer to an array of @attachmentCount@ valid
 --     'Vulkan.Core10.Handles.ImageView' handles
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.CommandBufferBuilding.RenderPassBeginInfo'
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Core12/Promoted_From_VK_KHR_separate_depth_stencil_layouts.hs b/src/Vulkan/Core12/Promoted_From_VK_KHR_separate_depth_stencil_layouts.hs
--- a/src/Vulkan/Core12/Promoted_From_VK_KHR_separate_depth_stencil_layouts.hs
+++ b/src/Vulkan/Core12/Promoted_From_VK_KHR_separate_depth_stencil_layouts.hs
@@ -49,13 +49,22 @@
 -- structure passed to
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
 -- it is filled in to indicate whether each corresponding feature is
--- supported. 'PhysicalDeviceSeparateDepthStencilLayoutsFeatures' /can/
--- also be used in the @pNext@ chain of
--- 'Vulkan.Core10.Device.DeviceCreateInfo' to selectively enable these
--- features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceSeparateDepthStencilLayoutsFeatures', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_separate_depth_stencil_layouts VK_KHR_separate_depth_stencil_layouts>,
@@ -65,8 +74,8 @@
 data PhysicalDeviceSeparateDepthStencilLayoutsFeatures = PhysicalDeviceSeparateDepthStencilLayoutsFeatures
   { -- | #extension-features-separateDepthStencilLayouts#
     -- @separateDepthStencilLayouts@ indicates whether the implementation
-    -- supports a 'Vulkan.Core10.OtherTypes.ImageMemoryBarrier' for a
-    -- depth\/stencil image with only one of
+    -- supports a 'Vulkan.Core10.CommandBufferBuilding.ImageMemoryBarrier' for
+    -- a depth\/stencil image with only one of
     -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' or
     -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT' set,
     -- and whether
@@ -118,8 +127,12 @@
 -- | VkAttachmentReferenceStencilLayout - Structure specifying an attachment
 -- description
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.AttachmentReference2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_separate_depth_stencil_layouts VK_KHR_separate_depth_stencil_layouts>,
@@ -189,8 +202,12 @@
 -- | VkAttachmentDescriptionStencilLayout - Structure specifying an
 -- attachment description
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.AttachmentDescription2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_separate_depth_stencil_layouts VK_KHR_separate_depth_stencil_layouts>,
@@ -235,6 +252,7 @@
     -- #VUID-VkAttachmentDescriptionStencilLayout-stencilFinalLayout-03310#
     -- @stencilFinalLayout@ /must/ not be
     -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_UNDEFINED' or
+    -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ZERO_INITIALIZED_EXT' or
     -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_PREINITIALIZED'
     --
     -- #VUID-VkAttachmentDescriptionStencilLayout-stencilFinalLayout-parameter#
diff --git a/src/Vulkan/Core12/Promoted_From_VK_KHR_shader_atomic_int64.hs b/src/Vulkan/Core12/Promoted_From_VK_KHR_shader_atomic_int64.hs
--- a/src/Vulkan/Core12/Promoted_From_VK_KHR_shader_atomic_int64.hs
+++ b/src/Vulkan/Core12/Promoted_From_VK_KHR_shader_atomic_int64.hs
@@ -41,11 +41,21 @@
 -- structure passed to
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
 -- it is filled in to indicate whether each corresponding feature is
--- supported. 'PhysicalDeviceShaderAtomicInt64Features' /can/ also be used
--- in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceShaderAtomicInt64Features', it /must/ add an instance of
+-- the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Core12/Promoted_From_VK_KHR_shader_float16_int8.hs b/src/Vulkan/Core12/Promoted_From_VK_KHR_shader_float16_int8.hs
--- a/src/Vulkan/Core12/Promoted_From_VK_KHR_shader_float16_int8.hs
+++ b/src/Vulkan/Core12/Promoted_From_VK_KHR_shader_float16_int8.hs
@@ -41,11 +41,21 @@
 -- structure passed to
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
 -- it is filled in to indicate whether each corresponding feature is
--- supported. 'PhysicalDeviceShaderFloat16Int8Features' /can/ also be used
--- in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceShaderFloat16Int8Features', it /must/ add an instance of
+-- the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Core12/Promoted_From_VK_KHR_shader_float_controls.hs b/src/Vulkan/Core12/Promoted_From_VK_KHR_shader_float_controls.hs
--- a/src/Vulkan/Core12/Promoted_From_VK_KHR_shader_float_controls.hs
+++ b/src/Vulkan/Core12/Promoted_From_VK_KHR_shader_float_controls.hs
@@ -2,7 +2,6 @@
 -- No documentation found for Chapter "Promoted_From_VK_KHR_shader_float_controls"
 module Vulkan.Core12.Promoted_From_VK_KHR_shader_float_controls  ( PhysicalDeviceFloatControlsProperties(..)
                                                                  , StructureType(..)
-                                                                 , ShaderFloatControlsIndependence(..)
                                                                  ) where
 
 import Foreign.Marshal.Alloc (allocaBytes)
@@ -27,7 +26,6 @@
 import Vulkan.Core12.Enums.ShaderFloatControlsIndependence (ShaderFloatControlsIndependence)
 import Vulkan.Core10.Enums.StructureType (StructureType)
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES))
-import Vulkan.Core12.Enums.ShaderFloatControlsIndependence (ShaderFloatControlsIndependence(..))
 import Vulkan.Core10.Enums.StructureType (StructureType(..))
 -- | VkPhysicalDeviceFloatControlsProperties - Structure describing
 -- properties supported by VK_KHR_shader_float_controls
@@ -42,7 +40,11 @@
 -- it is filled in with each corresponding implementation-dependent
 -- property.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
 --
 -- = See Also
 --
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
@@ -42,13 +42,22 @@
 -- structure passed to
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
 -- it is filled in to indicate whether each corresponding feature is
--- supported. 'PhysicalDeviceShaderSubgroupExtendedTypesFeatures' /can/
--- also be used in the @pNext@ chain of
--- 'Vulkan.Core10.Device.DeviceCreateInfo' to selectively enable these
--- features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceShaderSubgroupExtendedTypesFeatures', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_shader_subgroup_extended_types VK_KHR_shader_subgroup_extended_types>,
@@ -60,9 +69,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-group-operations group operations>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-group-operations group operations>
     -- with
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-scope-subgroup subgroup scope>,
+    -- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -99,7 +99,7 @@
 -- = Description
 --
 -- If a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-submission queue submission>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#devsandqueues-submission queue submission>
 -- command is pending execution, then the value returned by this command
 -- /may/ immediately be out of date.
 --
@@ -111,12 +111,16 @@
 --
 -- [<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_DEVICE_LOST'
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_timeline_semaphore VK_KHR_timeline_semaphore>,
@@ -227,7 +231,7 @@
 -- after the @timeout@ has expired.
 --
 -- If device loss occurs (see
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-lost-device Lost Device>)
+-- <https://registry.khronos.org/vulkan/specs/latest/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'.
@@ -242,12 +246,16 @@
 --
 -- [<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_DEVICE_LOST'
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_timeline_semaphore VK_KHR_timeline_semaphore>,
@@ -310,7 +318,7 @@
 --
 -- When 'signalSemaphore' is executed on the host, it defines and
 -- immediately executes a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operation>
+-- <https://registry.khronos.org/vulkan/specs/latest/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,
@@ -327,10 +335,14 @@
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_timeline_semaphore VK_KHR_timeline_semaphore>,
@@ -377,12 +389,22 @@
 -- structure passed to
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
 -- it is filled in to indicate whether each corresponding feature is
--- supported. 'PhysicalDeviceTimelineSemaphoreFeatures' /can/ also be used
--- in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceTimelineSemaphoreFeatures', it /must/ add an instance of
+-- the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_timeline_semaphore VK_KHR_timeline_semaphore>,
@@ -447,8 +469,12 @@
 -- it is filled in with each corresponding implementation-dependent
 -- property.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_timeline_semaphore VK_KHR_timeline_semaphore>,
@@ -516,7 +542,7 @@
 -- == Valid Usage
 --
 -- -   #VUID-VkSemaphoreTypeCreateInfo-timelineSemaphore-03252# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-timelineSemaphore timelineSemaphore>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-timelineSemaphore timelineSemaphore>
 --     feature is not enabled, @semaphoreType@ /must/ not equal
 --     'Vulkan.Core12.Enums.SemaphoreType.SEMAPHORE_TYPE_TIMELINE'
 --
@@ -534,6 +560,14 @@
 --     @semaphoreType@ /must/ be a valid
 --     'Vulkan.Core12.Enums.SemaphoreType.SemaphoreType' value
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore_capabilities.PhysicalDeviceExternalSemaphoreInfo'
+--
+--     -   'Vulkan.Core10.QueueSemaphore.SemaphoreCreateInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_timeline_semaphore VK_KHR_timeline_semaphore>,
@@ -620,6 +654,14 @@
 --     /must/ be a valid pointer to an array of @signalSemaphoreValueCount@
 --     @uint64_t@ values
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.SparseResourceMemoryManagement.BindSparseInfo'
+--
+--     -   'Vulkan.Core10.Queue.SubmitInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_timeline_semaphore VK_KHR_timeline_semaphore>,
@@ -754,7 +796,7 @@
 -- 'Vulkan.Core10.Handles.Semaphore',
 -- 'Vulkan.Core12.Enums.SemaphoreWaitFlagBits.SemaphoreWaitFlags',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType', 'waitSemaphores',
--- 'Vulkan.Extensions.VK_KHR_timeline_semaphore.waitSemaphoresKHR'
+-- 'waitSemaphores'
 data SemaphoreWaitInfo = SemaphoreWaitInfo
   { -- | @flags@ is a bitmask of
     -- 'Vulkan.Core12.Enums.SemaphoreWaitFlagBits.SemaphoreWaitFlagBits'
@@ -826,7 +868,7 @@
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_2 VK_VERSION_1_2>,
 -- 'Vulkan.Core10.Handles.Semaphore',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType', 'signalSemaphore',
--- 'Vulkan.Extensions.VK_KHR_timeline_semaphore.signalSemaphoreKHR'
+-- 'signalSemaphore'
 data SemaphoreSignalInfo = SemaphoreSignalInfo
   { -- | @semaphore@ is the handle of the semaphore to signal.
     --
@@ -849,7 +891,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxTimelineSemaphoreValueDifference maxTimelineSemaphoreValueDifference>
+    -- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -41,13 +41,22 @@
 -- structure passed to
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
 -- it is filled in to indicate whether each corresponding feature is
--- supported. 'PhysicalDeviceUniformBufferStandardLayoutFeatures' /can/
--- also be used in the @pNext@ chain of
--- 'Vulkan.Core10.Device.DeviceCreateInfo' to selectively enable these
--- features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceUniformBufferStandardLayoutFeatures', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_uniform_buffer_standard_layout VK_KHR_uniform_buffer_standard_layout>,
@@ -59,7 +68,7 @@
     -- @uniformBufferStandardLayout@ indicates that the implementation supports
     -- the same layouts for uniform buffers as for storage and other kinds of
     -- buffers. See
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-resources-standard-layout Standard Buffer Layout>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -42,16 +42,25 @@
 -- structure passed to
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
 -- it is filled in to indicate whether each corresponding feature is
--- supported.
--- 'Vulkan.Extensions.VK_KHR_vulkan_memory_model.PhysicalDeviceVulkanMemoryModelFeaturesKHR'
--- /can/ also be used in the @pNext@ chain of
--- 'Vulkan.Core10.Device.DeviceCreateInfo' to selectively enable these
--- features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'Vulkan.Extensions.VK_KHR_vulkan_memory_model.PhysicalDeviceVulkanMemoryModelFeaturesKHR',
+-- it /must/ add an instance of the structure, with the desired feature
+-- members set to 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@
+-- chain of 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_vulkan_memory_model VK_KHR_vulkan_memory_model>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_2 VK_VERSION_1_2>,
 -- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
@@ -68,7 +77,7 @@
   , -- | #extension-features-vulkanMemoryModelAvailabilityVisibilityChains#
     -- @vulkanMemoryModelAvailabilityVisibilityChains@ indicates whether the
     -- Vulkan Memory Model can use
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-model-availability-visibility availability and visibility chains>
+    -- <https://registry.khronos.org/vulkan/specs/latest/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
--- a/src/Vulkan/Core13.hs
+++ b/src/Vulkan/Core13.hs
@@ -97,27 +97,31 @@
 -- 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.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceVulkan13Features', it /must/ add an instance of the
+-- structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = 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.
+  { -- | #features-robustImageAccess# @robustImageAccess@ enables
+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-robust-image-access ???>
+    -- guarantees for shader image accesses.
     robustImageAccess :: Bool
   , -- | #features-inlineUniformBlock# @inlineUniformBlock@ indicates whether the
     -- implementation supports inline uniform block descriptors. If this
@@ -390,8 +394,12 @@
 -- and
 -- 'Vulkan.Core13.Promoted_From_VK_EXT_subgroup_size_control.PhysicalDeviceSubgroupSizeControlProperties'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
@@ -428,7 +436,7 @@
     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>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptors-inlineuniformblock inline uniform block>
     -- binding.
     maxInlineUniformBlockSize :: Word32
   , -- | #limits-maxPerStageDescriptorInlineUniformBlocks#
diff --git a/src/Vulkan/Core13/Enums/AccessFlags2.hs b/src/Vulkan/Core13/Enums/AccessFlags2.hs
--- a/src/Vulkan/Core13/Enums/AccessFlags2.hs
+++ b/src/Vulkan/Core13/Enums/AccessFlags2.hs
@@ -1,29 +1,6 @@
 {-# language CPP #-}
 -- No documentation found for Chapter "AccessFlags2"
-module Vulkan.Core13.Enums.AccessFlags2  ( pattern ACCESS_2_COMMAND_PREPROCESS_READ_BIT_EXT
-                                         , pattern ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_EXT
-                                         , 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
+module Vulkan.Core13.Enums.AccessFlags2  ( AccessFlags2
                                          , AccessFlagBits2( ACCESS_2_NONE
                                                           , ACCESS_2_INDIRECT_COMMAND_READ_BIT
                                                           , ACCESS_2_INDEX_READ_BIT
@@ -45,6 +22,10 @@
                                                           , ACCESS_2_SHADER_SAMPLED_READ_BIT
                                                           , ACCESS_2_SHADER_STORAGE_READ_BIT
                                                           , ACCESS_2_SHADER_STORAGE_WRITE_BIT
+                                                          , ACCESS_2_MEMORY_DECOMPRESSION_WRITE_BIT_EXT
+                                                          , ACCESS_2_MEMORY_DECOMPRESSION_READ_BIT_EXT
+                                                          , ACCESS_2_DATA_GRAPH_WRITE_BIT_ARM
+                                                          , ACCESS_2_DATA_GRAPH_READ_BIT_ARM
                                                           , ACCESS_2_OPTICAL_FLOW_WRITE_BIT_NV
                                                           , ACCESS_2_OPTICAL_FLOW_READ_BIT_NV
                                                           , ACCESS_2_MICROMAP_WRITE_BIT_EXT
@@ -57,12 +38,16 @@
                                                           , 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_COMMAND_PREPROCESS_WRITE_BIT_EXT
+                                                          , ACCESS_2_COMMAND_PREPROCESS_READ_BIT_EXT
                                                           , 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
+                                                          , ACCESS_2_SHADER_TILE_ATTACHMENT_WRITE_BIT_QCOM
+                                                          , ACCESS_2_SHADER_TILE_ATTACHMENT_READ_BIT_QCOM
+                                                          , ACCESS_2_RESOURCE_HEAP_READ_BIT_EXT
+                                                          , ACCESS_2_SAMPLER_HEAP_READ_BIT_EXT
                                                           , ..
                                                           )
                                          ) where
@@ -78,104 +63,421 @@
 import GHC.Read (Read(readPrec))
 import GHC.Show (Show(showsPrec))
 import Vulkan.Core10.FundamentalTypes (Flags64)
--- No documentation found for TopLevel "VK_ACCESS_2_COMMAND_PREPROCESS_READ_BIT_EXT"
-pattern ACCESS_2_COMMAND_PREPROCESS_READ_BIT_EXT = ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV
-
-
--- No documentation found for TopLevel "VK_ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_EXT"
-pattern ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_EXT = ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV
-
-
--- 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
 --
+-- -   'ACCESS_2_NONE' specifies no accesses.
+--
+-- -   '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.
+--
+-- -   '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.
+--
+-- -   '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. It also specifies read access to command data read
+--     from indirect buffers as part of a copy command with access
+--     occurring in the
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COPY_INDIRECT_BIT_KHR'
+--     pipeline stage.
+--
+-- -   'ACCESS_2_INDEX_READ_BIT' specifies read access to an index buffer
+--     as part of an indexed drawing command, bound by
+--     'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.cmdBindIndexBuffer2'
+--     and 'Vulkan.Core10.CommandBufferBuilding.cmdBindIndexBuffer'. Such
+--     access occurs in the
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_INDEX_INPUT_BIT'
+--     pipeline stage.
+--
+-- -   '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.
+--
+-- -   'ACCESS_2_UNIFORM_READ_BIT' specifies read access to a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-uniformbuffer uniform buffer>
+--     in any shader pipeline stage.
+--
+-- -   'ACCESS_2_INPUT_ATTACHMENT_READ_BIT' specifies read access to an
+--     <https://registry.khronos.org/vulkan/specs/latest/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_SHADER_BIT_HUAWEI'
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT'
+--     pipeline stage.
+--
+-- -   'ACCESS_2_SHADER_SAMPLED_READ_BIT' specifies read access to a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-uniformtexelbuffer uniform texel buffer>
+--     or
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-sampledimage sampled image>
+--     in any shader pipeline stage.
+--
+-- -   'ACCESS_2_SHADER_STORAGE_READ_BIT' specifies read access to a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-storagebuffer storage buffer>,
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-physical-storage-buffer physical storage buffer>,
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-storagetexelbuffer storage texel buffer>,
+--     or
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-storageimage storage image>
+--     in any shader pipeline stage.
+--
+-- -   'ACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHR' specifies read access
+--     to a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shader-binding-table shader binding table>
+--     in any shader pipeline stage.
+--
+-- -   'ACCESS_2_SHADER_READ_BIT' is equivalent to the logical OR of:
+--
+--     -   'ACCESS_2_SHADER_SAMPLED_READ_BIT'
+--
+--     -   'ACCESS_2_SHADER_STORAGE_READ_BIT'
+--
+--     -   'ACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHR'
+--
+--     -   'ACCESS_2_SHADER_TILE_ATTACHMENT_READ_BIT_QCOM'
+--
+-- -   'ACCESS_2_SHADER_STORAGE_WRITE_BIT' specifies write access to a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-storagebuffer storage buffer>,
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-physical-storage-buffer physical storage buffer>,
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-storagetexelbuffer storage texel buffer>,
+--     or
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-storageimage storage image>
+--     in any shader pipeline stage.
+--
+-- -   'ACCESS_2_SHADER_WRITE_BIT' is equivalent to
+--     'ACCESS_2_SHADER_STORAGE_WRITE_BIT'.
+--
+-- -   'ACCESS_2_COLOR_ATTACHMENT_READ_BIT' specifies read access to a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass color attachment>,
+--     such as via
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#framebuffer-blending blending>
+--     (other than
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#framebuffer-blend-advanced advanced blend operations>),
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#framebuffer-logicop logic operations>
+--     or certain
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-load-operations render pass load operations>
+--     in the
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT'
+--     pipeline stage or via
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#fragops-shader-tileimage-reads fragment shader tile image reads>
+--     in the
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT'
+--     pipeline stage.
+--
+-- -   'ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT' specifies write access to a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass color attachment>
+--     during a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass render pass>
+--     or via certain render pass
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-load-operations load>,
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-store-operations store>,
+--     and
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-resolve-operations multisample resolve>
+--     operations. This includes
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-resolve-operations multisample resolve>
+--     operations for depth\/stencil resolve attachments. Such access
+--     occurs in the
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT'
+--     pipeline stage.
+--
+-- -   'ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT' specifies read access
+--     to a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass depth\/stencil attachment>,
+--     via
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#fragops-ds-state depth or stencil operations>
+--     or certain
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-load-operations render pass load operations>
+--     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 or via
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#fragops-shader-tileimage-reads fragment shader tile image reads>
+--     in the
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT'
+--     pipeline stage.
+--
+-- -   'ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT' specifies write access
+--     to a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass depth\/stencil attachment>,
+--     via
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#fragops-ds-state depth or stencil operations>
+--     or certain render pass
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-load-operations load>
+--     and
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-store-operations 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.
+--
+-- -   'ACCESS_2_TRANSFER_READ_BIT' specifies read access to an image or
+--     buffer in a
+--     <https://registry.khronos.org/vulkan/specs/latest/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.
+--
+-- -   'ACCESS_2_TRANSFER_WRITE_BIT' specifies write access to an image or
+--     buffer in a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#clears clear>
+--     or
+--     <https://registry.khronos.org/vulkan/specs/latest/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.
+--
+-- -   '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.
+--
+-- -   '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.
+--
+-- -   '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.
+--
+-- -   '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.
+--
+-- -   '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.
+--
+-- -   '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.
+--
+-- -   'Vulkan.Extensions.VK_KHR_synchronization2.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.Extensions.VK_KHR_synchronization2.PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV'
+--     pipeline stage.
+--
+-- -   'Vulkan.Extensions.VK_KHR_synchronization2.ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV'
+--     specifies writes to the target command buffer preprocess outputs.
+--     Such access occurs in the
+--     'Vulkan.Extensions.VK_KHR_synchronization2.PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV'
+--     pipeline stage.
+--
+-- -   'ACCESS_2_COMMAND_PREPROCESS_READ_BIT_EXT' specifies reads from
+--     buffer inputs to
+--     'Vulkan.Extensions.VK_EXT_device_generated_commands.cmdPreprocessGeneratedCommandsEXT'.
+--     Such access occurs in the
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_EXT'
+--     pipeline stage.
+--
+-- -   'ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_EXT' specifies writes to the
+--     target command buffer preprocess outputs. Such access occurs in the
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_EXT'
+--     pipeline stage.
+--
+-- -   'ACCESS_2_MEMORY_DECOMPRESSION_READ_BIT_EXT' specifies read access
+--     to memory in decompression commands
+--     'Vulkan.Extensions.VK_EXT_memory_decompression.cmdDecompressMemoryEXT'
+--     and
+--     'Vulkan.Extensions.VK_EXT_memory_decompression.cmdDecompressMemoryIndirectCountEXT'.
+--     Such access occurs in
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MEMORY_DECOMPRESSION_BIT_EXT'
+--     pipeline stage.
+--
+-- -   'ACCESS_2_MEMORY_DECOMPRESSION_WRITE_BIT_EXT' specifies write access
+--     to memory in decompression commands
+--     'Vulkan.Extensions.VK_EXT_memory_decompression.cmdDecompressMemoryEXT'
+--     and
+--     'Vulkan.Extensions.VK_EXT_memory_decompression.cmdDecompressMemoryIndirectCountEXT'.
+--     Such access occurs in
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MEMORY_DECOMPRESSION_BIT_EXT'
+--     pipeline stage.
+--
+-- -   'ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT' specifies read
+--     access to
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass color attachments>,
+--     including
+--     <https://registry.khronos.org/vulkan/specs/latest/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.
+--
+-- -   'ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI' specifies read access to
+--     an invocation mask image in the
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI'
+--     pipeline stage.
+--
+-- -   '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://registry.khronos.org/vulkan/specs/latest/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.
+--
+-- -   'ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR' specifies write
+--     access to an acceleration structure or
+--     <https://registry.khronos.org/vulkan/specs/latest/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.
+--
+-- -   'ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT' specifies read access
+--     to a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-fragmentdensitymapattachment fragment density map attachment>
+--     during dynamic
+--     <https://registry.khronos.org/vulkan/specs/latest/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.
+--
+-- -   '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.
+--
+-- -   'Vulkan.Extensions.VK_KHR_synchronization2.ACCESS_2_SHADING_RATE_IMAGE_READ_BIT_NV'
+--     specifies read access to a shading rate image during rasterization.
+--     Such access occurs in the
+--     'Vulkan.Extensions.VK_KHR_synchronization2.PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV'
+--     pipeline stage. It is equivalent to
+--     'ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR'.
+--
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkAccessFlagBits2KHR VK_ACCESS_2_VIDEO_DECODE_READ_BIT_KHR>
+--     specifies read access to an image or buffer resource in a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#video-decode-operations video decode operation>.
+--     Such access occurs in the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR>
+--     pipeline stage.
+--
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkAccessFlagBits2KHR VK_ACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR>
+--     specifies write access to an image or buffer resource in a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#video-decode-operations video decode operation>.
+--     Such access occurs in the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR>
+--     pipeline stage.
+--
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkAccessFlagBits2KHR VK_ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR>
+--     specifies read access to an image or buffer resource in a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#video-encode-operations video encode operation>.
+--     Such access occurs in the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR>
+--     pipeline stage.
+--
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkAccessFlagBits2KHR VK_ACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR>
+--     specifies write access to an image or buffer resource in a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#video-encode-operations video encode operation>.
+--     Such access occurs in the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR>
+--     pipeline stage.
+--
+-- -   'ACCESS_2_DESCRIPTOR_BUFFER_READ_BIT_EXT' specifies read access to a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptorbuffers descriptor buffer>
+--     in any shader pipeline stage.
+--
+-- -   'ACCESS_2_OPTICAL_FLOW_READ_BIT_NV' specifies read access to an
+--     image or buffer resource as part of a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#opticalflow-operations optical flow operation>.
+--     Such access occurs in the
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV'
+--     pipeline stage.
+--
+-- -   'ACCESS_2_OPTICAL_FLOW_WRITE_BIT_NV' specifies write access to an
+--     image or buffer resource as part of a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#opticalflow-operations optical flow operation>.
+--     Such access occurs in the
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV'
+--     pipeline stage.
+--
+-- -   'ACCESS_2_MICROMAP_WRITE_BIT_EXT' specifies write access to a
+--     micromap object. Such access occurs in the
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT'
+--     pipeline stage.
+--
+-- -   'ACCESS_2_MICROMAP_READ_BIT_EXT' specifies read access to a micromap
+--     object. Such access occurs in the
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT'
+--     and
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
+--     pipeline stages.
+--
+-- -   'ACCESS_2_SHADER_TILE_ATTACHMENT_READ_BIT_QCOM' specifies read
+--     access to a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-tile-shading-attachment-access tile attachment>.
+--     Such access occurs in the
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT'
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COMPUTE_SHADER_BIT'
+--     pipeline stages.
+--
+-- -   'ACCESS_2_SHADER_TILE_ATTACHMENT_WRITE_BIT_QCOM' specifies write
+--     access to a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-tile-shading-attachment-access tile attachment>.
+--     Such access occurs in the
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT'
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COMPUTE_SHADER_BIT'
+--     pipeline stages.
+--
+-- -   'ACCESS_2_DATA_GRAPH_READ_BIT_ARM' specifies read access to
+--     resources in the
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_DATA_GRAPH_BIT_ARM'
+--     pipeline stage.
+--
+-- -   'ACCESS_2_DATA_GRAPH_WRITE_BIT_ARM' specifies write access to
+--     resources in the
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_DATA_GRAPH_BIT_ARM'
+--     pipeline stage.
+--
+-- -   'ACCESS_2_SAMPLER_HEAP_READ_BIT_EXT' specifies read access to a
+--     sampler heap in any shader pipeline stage.
+--
+-- -   'ACCESS_2_RESOURCE_HEAP_READ_BIT_EXT' specifies read access to a
+--     resource heap in any shader pipeline stage.
+--
+-- Certain access types are only performed by a subset of pipeline stages,
+-- as described in more detail for
+-- 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits'. The
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-access-types-supported Supported Access Types>
+-- table lists, for each access flag, which pipeline stages /can/ perform
+-- that type of access.
+--
 -- 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
@@ -194,330 +496,147 @@
 newtype AccessFlagBits2 = AccessFlagBits2 Flags64
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'ACCESS_2_NONE' specifies no accesses.
+-- No documentation found for Nested "VkAccessFlagBits2" "VK_ACCESS_2_NONE"
 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.
+-- No documentation found for Nested "VkAccessFlagBits2" "VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT"
 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.Extensions.VK_KHR_maintenance5.cmdBindIndexBuffer2KHR' and
--- 'Vulkan.Core10.CommandBufferBuilding.cmdBindIndexBuffer'. Such access
--- occurs in the
--- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_INDEX_INPUT_BIT'
--- pipeline stage.
+-- No documentation found for Nested "VkAccessFlagBits2" "VK_ACCESS_2_INDEX_READ_BIT"
 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.
+-- No documentation found for Nested "VkAccessFlagBits2" "VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT"
 pattern ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT = AccessFlagBits2 0x0000000000000004
 
--- | 'ACCESS_2_UNIFORM_READ_BIT' specifies read access to a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-uniformbuffer uniform buffer>
--- in any shader pipeline stage.
+-- No documentation found for Nested "VkAccessFlagBits2" "VK_ACCESS_2_UNIFORM_READ_BIT"
 pattern ACCESS_2_UNIFORM_READ_BIT = AccessFlagBits2 0x0000000000000008
 
--- | 'ACCESS_2_INPUT_ATTACHMENT_READ_BIT' specifies read access to an
--- <https://registry.khronos.org/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_SHADER_BIT_HUAWEI'
--- or
--- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT'
--- pipeline stage.
+-- No documentation found for Nested "VkAccessFlagBits2" "VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT"
 pattern ACCESS_2_INPUT_ATTACHMENT_READ_BIT = AccessFlagBits2 0x0000000000000010
 
--- | 'ACCESS_2_SHADER_READ_BIT' is equivalent to the logical OR of:
---
--- -   'ACCESS_2_SHADER_SAMPLED_READ_BIT'
---
--- -   'ACCESS_2_SHADER_STORAGE_READ_BIT'
+-- No documentation found for Nested "VkAccessFlagBits2" "VK_ACCESS_2_SHADER_READ_BIT"
 pattern ACCESS_2_SHADER_READ_BIT = AccessFlagBits2 0x0000000000000020
 
--- | 'ACCESS_2_SHADER_WRITE_BIT' is equivalent to
--- 'ACCESS_2_SHADER_STORAGE_WRITE_BIT'.
+-- No documentation found for Nested "VkAccessFlagBits2" "VK_ACCESS_2_SHADER_WRITE_BIT"
 pattern ACCESS_2_SHADER_WRITE_BIT = AccessFlagBits2 0x0000000000000040
 
--- | 'ACCESS_2_COLOR_ATTACHMENT_READ_BIT' specifies read access to a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass color attachment>,
--- such as via
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#framebuffer-blending blending>
--- (other than
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#framebuffer-blend-advanced advanced blend operations>),
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#framebuffer-logicop logic operations>
--- or certain
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-load-operations render pass load operations>
--- in the
--- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT'
--- pipeline stage or via
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-shader-tileimage-reads fragment shader tile image reads>
--- in the
--- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT'
--- pipeline stage.
+-- No documentation found for Nested "VkAccessFlagBits2" "VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT"
 pattern ACCESS_2_COLOR_ATTACHMENT_READ_BIT = AccessFlagBits2 0x0000000000000080
 
--- | 'ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT' specifies write access to a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass color attachment>
--- during a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass render pass>
--- or via certain render pass
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-load-operations load>,
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-store-operations store>,
--- and
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-resolve-operations multisample resolve>
--- operations. Such access occurs in the
--- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT'
--- pipeline stage.
+-- No documentation found for Nested "VkAccessFlagBits2" "VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT"
 pattern ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT = AccessFlagBits2 0x0000000000000100
 
--- | 'ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT' specifies read access to a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass depth\/stencil attachment>,
--- via
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-ds-state depth or stencil operations>
--- or certain
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-load-operations render pass load operations>
--- 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 or via
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-shader-tileimage-reads fragment shader tile image reads>
--- in the
--- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT'
--- pipeline stage.
+-- No documentation found for Nested "VkAccessFlagBits2" "VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT"
 pattern ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT = AccessFlagBits2 0x0000000000000200
 
--- | 'ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT' specifies write access to
--- a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass depth\/stencil attachment>,
--- via
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-ds-state depth or stencil operations>
--- or certain render pass
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-load-operations load>
--- and
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-store-operations 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.
+-- No documentation found for Nested "VkAccessFlagBits2" "VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT"
 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://registry.khronos.org/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.
+-- No documentation found for Nested "VkAccessFlagBits2" "VK_ACCESS_2_TRANSFER_READ_BIT"
 pattern ACCESS_2_TRANSFER_READ_BIT = AccessFlagBits2 0x0000000000000800
 
--- | 'ACCESS_2_TRANSFER_WRITE_BIT' specifies write access to an image or
--- buffer in a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#clears clear>
--- or
--- <https://registry.khronos.org/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.
+-- No documentation found for Nested "VkAccessFlagBits2" "VK_ACCESS_2_TRANSFER_WRITE_BIT"
 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.
+-- No documentation found for Nested "VkAccessFlagBits2" "VK_ACCESS_2_HOST_READ_BIT"
 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.
+-- No documentation found for Nested "VkAccessFlagBits2" "VK_ACCESS_2_HOST_WRITE_BIT"
 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.
+-- No documentation found for Nested "VkAccessFlagBits2" "VK_ACCESS_2_MEMORY_READ_BIT"
 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.
+-- No documentation found for Nested "VkAccessFlagBits2" "VK_ACCESS_2_MEMORY_WRITE_BIT"
 pattern ACCESS_2_MEMORY_WRITE_BIT = AccessFlagBits2 0x0000000000010000
 
--- | 'ACCESS_2_SHADER_SAMPLED_READ_BIT' specifies read access to a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-uniformtexelbuffer uniform texel buffer>
--- or
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-sampledimage sampled image>
--- in any shader pipeline stage.
+-- No documentation found for Nested "VkAccessFlagBits2" "VK_ACCESS_2_SHADER_SAMPLED_READ_BIT"
 pattern ACCESS_2_SHADER_SAMPLED_READ_BIT = AccessFlagBits2 0x0000000100000000
 
--- | 'ACCESS_2_SHADER_STORAGE_READ_BIT' specifies read access to a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storagebuffer storage buffer>,
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-physical-storage-buffer physical storage buffer>,
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storagetexelbuffer storage texel buffer>,
--- or
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storageimage storage image>
--- in any shader pipeline stage.
+-- No documentation found for Nested "VkAccessFlagBits2" "VK_ACCESS_2_SHADER_STORAGE_READ_BIT"
 pattern ACCESS_2_SHADER_STORAGE_READ_BIT = AccessFlagBits2 0x0000000200000000
 
--- | 'ACCESS_2_SHADER_STORAGE_WRITE_BIT' specifies write access to a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storagebuffer storage buffer>,
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-physical-storage-buffer physical storage buffer>,
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storagetexelbuffer storage texel buffer>,
--- or
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storageimage storage image>
--- in any shader pipeline stage.
+-- No documentation found for Nested "VkAccessFlagBits2" "VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT"
 pattern ACCESS_2_SHADER_STORAGE_WRITE_BIT = AccessFlagBits2 0x0000000400000000
 
--- | 'ACCESS_2_OPTICAL_FLOW_WRITE_BIT_NV' specifies write access to an image
--- or buffer resource as part of a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#opticalflow-operations optical flow operation>.
--- Such access occurs in the
--- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV'
--- pipeline stage.
+-- No documentation found for Nested "VkAccessFlagBits2" "VK_ACCESS_2_MEMORY_DECOMPRESSION_WRITE_BIT_EXT"
+pattern ACCESS_2_MEMORY_DECOMPRESSION_WRITE_BIT_EXT = AccessFlagBits2 0x0100000000000000
+
+-- No documentation found for Nested "VkAccessFlagBits2" "VK_ACCESS_2_MEMORY_DECOMPRESSION_READ_BIT_EXT"
+pattern ACCESS_2_MEMORY_DECOMPRESSION_READ_BIT_EXT = AccessFlagBits2 0x0080000000000000
+
+-- No documentation found for Nested "VkAccessFlagBits2" "VK_ACCESS_2_DATA_GRAPH_WRITE_BIT_ARM"
+pattern ACCESS_2_DATA_GRAPH_WRITE_BIT_ARM = AccessFlagBits2 0x0001000000000000
+
+-- No documentation found for Nested "VkAccessFlagBits2" "VK_ACCESS_2_DATA_GRAPH_READ_BIT_ARM"
+pattern ACCESS_2_DATA_GRAPH_READ_BIT_ARM = AccessFlagBits2 0x0000800000000000
+
+-- No documentation found for Nested "VkAccessFlagBits2" "VK_ACCESS_2_OPTICAL_FLOW_WRITE_BIT_NV"
 pattern ACCESS_2_OPTICAL_FLOW_WRITE_BIT_NV = AccessFlagBits2 0x0000080000000000
 
--- | 'ACCESS_2_OPTICAL_FLOW_READ_BIT_NV' specifies read access to an image or
--- buffer resource as part of a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#opticalflow-operations optical flow operation>.
--- Such access occurs in the
--- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV'
--- pipeline stage.
+-- No documentation found for Nested "VkAccessFlagBits2" "VK_ACCESS_2_OPTICAL_FLOW_READ_BIT_NV"
 pattern ACCESS_2_OPTICAL_FLOW_READ_BIT_NV = AccessFlagBits2 0x0000040000000000
 
--- | 'ACCESS_2_MICROMAP_WRITE_BIT_EXT' specifies write access to a micromap
--- object. Such access occurs in the
--- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT'
--- pipeline stage.
+-- No documentation found for Nested "VkAccessFlagBits2" "VK_ACCESS_2_MICROMAP_WRITE_BIT_EXT"
 pattern ACCESS_2_MICROMAP_WRITE_BIT_EXT = AccessFlagBits2 0x0000200000000000
 
--- | 'ACCESS_2_MICROMAP_READ_BIT_EXT' specifies read access to a micromap
--- object. Such access occurs in the
--- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT'
--- and
--- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
--- pipeline stages.
+-- No documentation found for Nested "VkAccessFlagBits2" "VK_ACCESS_2_MICROMAP_READ_BIT_EXT"
 pattern ACCESS_2_MICROMAP_READ_BIT_EXT = AccessFlagBits2 0x0000100000000000
 
--- | 'ACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHR' specifies read access to a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shader-binding-table shader binding table>
--- in any shader pipeline stage.
+-- No documentation found for Nested "VkAccessFlagBits2" "VK_ACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHR"
 pattern ACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHR = AccessFlagBits2 0x0000010000000000
 
--- | 'ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI' specifies read access to an
--- invocation mask image in the
--- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI'
--- pipeline stage.
+-- No documentation found for Nested "VkAccessFlagBits2" "VK_ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI"
 pattern ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI = AccessFlagBits2 0x0000008000000000
 
--- | 'ACCESS_2_DESCRIPTOR_BUFFER_READ_BIT_EXT' specifies read access to a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorbuffers descriptor buffer>
--- in any shader pipeline stage.
+-- No documentation found for Nested "VkAccessFlagBits2" "VK_ACCESS_2_DESCRIPTOR_BUFFER_READ_BIT_EXT"
 pattern ACCESS_2_DESCRIPTOR_BUFFER_READ_BIT_EXT = AccessFlagBits2 0x0000020000000000
 
--- | 'ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT' specifies read
--- access to
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass color attachments>,
--- including
--- <https://registry.khronos.org/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.
+-- No documentation found for Nested "VkAccessFlagBits2" "VK_ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT"
 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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-fragmentdensitymapattachment fragment density map attachment>
--- during dynamic
--- <https://registry.khronos.org/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.
+-- No documentation found for Nested "VkAccessFlagBits2" "VK_ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT"
 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://registry.khronos.org/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.
+-- No documentation found for Nested "VkAccessFlagBits2" "VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR"
 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://registry.khronos.org/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.
+-- No documentation found for Nested "VkAccessFlagBits2" "VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR"
 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.
+-- No documentation found for Nested "VkAccessFlagBits2" "VK_ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR"
 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
+-- No documentation found for Nested "VkAccessFlagBits2" "VK_ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_EXT"
+pattern ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_EXT = 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
+-- No documentation found for Nested "VkAccessFlagBits2" "VK_ACCESS_2_COMMAND_PREPROCESS_READ_BIT_EXT"
+pattern ACCESS_2_COMMAND_PREPROCESS_READ_BIT_EXT = 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.
+-- No documentation found for Nested "VkAccessFlagBits2" "VK_ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT"
 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.
+-- No documentation found for Nested "VkAccessFlagBits2" "VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT"
 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.
+-- No documentation found for Nested "VkAccessFlagBits2" "VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT"
 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.
+-- No documentation found for Nested "VkAccessFlagBits2" "VK_ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT"
 pattern ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT = AccessFlagBits2 0x0000000002000000
 
+-- No documentation found for Nested "VkAccessFlagBits2" "VK_ACCESS_2_SHADER_TILE_ATTACHMENT_WRITE_BIT_QCOM"
+pattern ACCESS_2_SHADER_TILE_ATTACHMENT_WRITE_BIT_QCOM = AccessFlagBits2 0x0010000000000000
+
+-- No documentation found for Nested "VkAccessFlagBits2" "VK_ACCESS_2_SHADER_TILE_ATTACHMENT_READ_BIT_QCOM"
+pattern ACCESS_2_SHADER_TILE_ATTACHMENT_READ_BIT_QCOM = AccessFlagBits2 0x0008000000000000
+
+-- No documentation found for Nested "VkAccessFlagBits2" "VK_ACCESS_2_RESOURCE_HEAP_READ_BIT_EXT"
+pattern ACCESS_2_RESOURCE_HEAP_READ_BIT_EXT = AccessFlagBits2 0x0400000000000000
+
+-- No documentation found for Nested "VkAccessFlagBits2" "VK_ACCESS_2_SAMPLER_HEAP_READ_BIT_EXT"
+pattern ACCESS_2_SAMPLER_HEAP_READ_BIT_EXT = AccessFlagBits2 0x0200000000000000
+
 conNameAccessFlagBits2 :: String
 conNameAccessFlagBits2 = "AccessFlagBits2"
 
@@ -578,6 +697,22 @@
     , "SHADER_STORAGE_WRITE_BIT"
     )
   ,
+    ( ACCESS_2_MEMORY_DECOMPRESSION_WRITE_BIT_EXT
+    , "MEMORY_DECOMPRESSION_WRITE_BIT_EXT"
+    )
+  ,
+    ( ACCESS_2_MEMORY_DECOMPRESSION_READ_BIT_EXT
+    , "MEMORY_DECOMPRESSION_READ_BIT_EXT"
+    )
+  ,
+    ( ACCESS_2_DATA_GRAPH_WRITE_BIT_ARM
+    , "DATA_GRAPH_WRITE_BIT_ARM"
+    )
+  ,
+    ( ACCESS_2_DATA_GRAPH_READ_BIT_ARM
+    , "DATA_GRAPH_READ_BIT_ARM"
+    )
+  ,
     ( ACCESS_2_OPTICAL_FLOW_WRITE_BIT_NV
     , "OPTICAL_FLOW_WRITE_BIT_NV"
     )
@@ -626,12 +761,12 @@
     , "FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR"
     )
   ,
-    ( ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV
-    , "COMMAND_PREPROCESS_WRITE_BIT_NV"
+    ( ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_EXT
+    , "COMMAND_PREPROCESS_WRITE_BIT_EXT"
     )
   ,
-    ( ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV
-    , "COMMAND_PREPROCESS_READ_BIT_NV"
+    ( ACCESS_2_COMMAND_PREPROCESS_READ_BIT_EXT
+    , "COMMAND_PREPROCESS_READ_BIT_EXT"
     )
   ,
     ( ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT
@@ -648,6 +783,22 @@
   ,
     ( ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT
     , "TRANSFORM_FEEDBACK_WRITE_BIT_EXT"
+    )
+  ,
+    ( ACCESS_2_SHADER_TILE_ATTACHMENT_WRITE_BIT_QCOM
+    , "SHADER_TILE_ATTACHMENT_WRITE_BIT_QCOM"
+    )
+  ,
+    ( ACCESS_2_SHADER_TILE_ATTACHMENT_READ_BIT_QCOM
+    , "SHADER_TILE_ATTACHMENT_READ_BIT_QCOM"
+    )
+  ,
+    ( ACCESS_2_RESOURCE_HEAP_READ_BIT_EXT
+    , "RESOURCE_HEAP_READ_BIT_EXT"
+    )
+  ,
+    ( ACCESS_2_SAMPLER_HEAP_READ_BIT_EXT
+    , "SAMPLER_HEAP_READ_BIT_EXT"
     )
   ]
 
diff --git a/src/Vulkan/Core13/Enums/FormatFeatureFlags2.hs b/src/Vulkan/Core13/Enums/FormatFeatureFlags2.hs
--- a/src/Vulkan/Core13/Enums/FormatFeatureFlags2.hs
+++ b/src/Vulkan/Core13/Enums/FormatFeatureFlags2.hs
@@ -1,33 +1,6 @@
 {-# 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
+module Vulkan.Core13.Enums.FormatFeatureFlags2  ( FormatFeatureFlags2
                                                 , FormatFeatureFlagBits2( FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT
                                                                         , FORMAT_FEATURE_2_STORAGE_IMAGE_BIT
                                                                         , FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT
@@ -41,7 +14,6 @@
                                                                         , 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
@@ -55,18 +27,32 @@
                                                                         , 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_DATA_GRAPH_OPTICAL_FLOW_COST_BIT_ARM
+                                                                        , FORMAT_FEATURE_2_DATA_GRAPH_OPTICAL_FLOW_VECTOR_BIT_ARM
+                                                                        , FORMAT_FEATURE_2_DATA_GRAPH_OPTICAL_FLOW_IMAGE_BIT_ARM
+                                                                        , FORMAT_FEATURE_2_STENCIL_COPY_ON_TRANSFER_QUEUE_BIT_KHR
+                                                                        , FORMAT_FEATURE_2_STENCIL_COPY_ON_COMPUTE_QUEUE_BIT_KHR
+                                                                        , FORMAT_FEATURE_2_DEPTH_COPY_ON_TRANSFER_QUEUE_BIT_KHR
+                                                                        , FORMAT_FEATURE_2_DEPTH_COPY_ON_COMPUTE_QUEUE_BIT_KHR
+                                                                        , FORMAT_FEATURE_2_COPY_IMAGE_INDIRECT_DST_BIT_KHR
+                                                                        , FORMAT_FEATURE_2_TENSOR_DATA_GRAPH_BIT_ARM
                                                                         , FORMAT_FEATURE_2_OPTICAL_FLOW_COST_BIT_NV
                                                                         , FORMAT_FEATURE_2_OPTICAL_FLOW_VECTOR_BIT_NV
                                                                         , FORMAT_FEATURE_2_OPTICAL_FLOW_IMAGE_BIT_NV
+                                                                        , FORMAT_FEATURE_2_TENSOR_IMAGE_ALIASING_BIT_ARM
+                                                                        , FORMAT_FEATURE_2_TENSOR_SHADER_BIT_ARM
                                                                         , FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM
                                                                         , FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
                                                                         , FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM
                                                                         , FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM
                                                                         , FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV
-                                                                        , FORMAT_FEATURE_2_HOST_IMAGE_TRANSFER_BIT_EXT
+                                                                        , FORMAT_FEATURE_2_ACCELERATION_STRUCTURE_RADIUS_BUFFER_BIT_NV
+                                                                        , FORMAT_FEATURE_2_BLOCK_MATCHING_SXD_BIT_QCOM
                                                                         , 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
+                                                                        , FORMAT_FEATURE_2_HOST_IMAGE_TRANSFER_BIT
+                                                                        , FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_CUBIC_BIT
                                                                         , ..
                                                                         )
                                                 ) where
@@ -82,114 +68,6 @@
 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
@@ -206,11 +84,11 @@
 --
 -- -   'FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT' specifies that an image view
 --     /can/ be
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-sampledimage sampled from>.
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-sampledimage sampled from>.
 --
 -- -   'FORMAT_FEATURE_2_STORAGE_IMAGE_BIT' specifies that an image view
 --     /can/ be used as a
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storageimage storage image>.
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-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.
@@ -265,13 +143,13 @@
 --
 -- -   'FORMAT_FEATURE_2_TRANSFER_SRC_BIT' specifies that an image /can/ be
 --     used as a source image for
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#copies copy commands>.
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#copies copy commands>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#copies copy commands>
 --     and
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#clears clear commands>.
+--     <https://registry.khronos.org/vulkan/specs/latest/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
@@ -293,7 +171,7 @@
 --
 -- -   'FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT' specifies that an
 --     application /can/ define a
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
+--     <https://registry.khronos.org/vulkan/specs/latest/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'
@@ -308,7 +186,7 @@
 --
 -- -   'FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT' specifies that an
 --     application /can/ define a
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
+--     <https://registry.khronos.org/vulkan/specs/latest/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'
@@ -319,12 +197,12 @@
 --     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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
+--     <https://registry.khronos.org/vulkan/specs/latest/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'.
 --
@@ -334,7 +212,7 @@
 --
 -- -   'FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT'
 --     specifies that reconstruction is explicit, as described in
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#textures-chroma-reconstruction>.
+--     <https://registry.khronos.org/vulkan/specs/latest/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'
@@ -355,45 +233,73 @@
 --
 -- -   'FORMAT_FEATURE_2_FRAGMENT_DENSITY_MAP_BIT_EXT' specifies that an
 --     image view /can/ be used as a
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-fragmentdensitymapattachment fragment density map attachment>.
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment>.
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment>.
 --     An implementation /must/ not set this feature for formats with a
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#formats-numericformat numeric format>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-numericformat numeric format>
 --     other than @UINT@, or set it as a buffer feature.
 --
--- -   @VK_FORMAT_FEATURE_2_VIDEO_DECODE_OUTPUT_BIT_KHR@ specifies that an
---     image view with this format /can/ be used as a
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#decode-output-picture decode output picture>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatFeatureFlagBits2KHR VK_FORMAT_FEATURE_2_VIDEO_DECODE_OUTPUT_BIT_KHR>
+--     specifies that an image view with this format /can/ be used as a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#decode-output-picture decode output picture>
 --     in
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#video-decode-operations video decode operations>.
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#video-decode-operations video decode operations>.
 --
--- -   @VK_FORMAT_FEATURE_2_VIDEO_DECODE_DPB_BIT_KHR@ specifies that an
---     image view with this format /can/ be used as an output
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#reconstructed-picture reconstructed picture>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatFeatureFlagBits2KHR VK_FORMAT_FEATURE_2_VIDEO_DECODE_DPB_BIT_KHR>
+--     specifies that an image view with this format /can/ be used as an
+--     output
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#reconstructed-picture reconstructed picture>
 --     or an input
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#reference-picture reference picture>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#reference-picture reference picture>
 --     in
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#video-decode-operations video decode operations>.
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#video-decode-operations video decode operations>.
 --
--- -   @VK_FORMAT_FEATURE_2_VIDEO_ENCODE_INPUT_BIT_KHR@ specifies that an
---     image view with this format /can/ be used as an
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#encode-input-picture encode input picture>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatFeatureFlagBits2KHR VK_FORMAT_FEATURE_2_VIDEO_ENCODE_INPUT_BIT_KHR>
+--     specifies that an image view with this format /can/ be used as an
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#encode-input-picture encode input picture>
 --     in
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#video-encode-operations video encode operations>.
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#video-encode-operations video encode operations>.
 --
--- -   @VK_FORMAT_FEATURE_2_VIDEO_ENCODE_DPB_BIT_KHR@ specifies that an
---     image view with this format /can/ be used as an output
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#reconstructed-picture reconstructed picture>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatFeatureFlagBits2KHR VK_FORMAT_FEATURE_2_VIDEO_ENCODE_DPB_BIT_KHR>
+--     specifies that an image view with this format /can/ be used as an
+--     output
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#reconstructed-picture reconstructed picture>
 --     or an input
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#reference-picture reference picture>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#reference-picture reference picture>
 --     in
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#video-encode-operations video encode operations>.
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#video-encode-operations video encode operations>.
 --
+-- -   'FORMAT_FEATURE_2_DEPTH_COPY_ON_COMPUTE_QUEUE_BIT_KHR' specifies
+--     that the depth aspect of this format can be copied using a queue
+--     family that supports
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT' but does not
+--     support 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT'.
+--
+-- -   'FORMAT_FEATURE_2_DEPTH_COPY_ON_TRANSFER_QUEUE_BIT_KHR' specifies
+--     that the depth aspect of this format can be copied using a queue
+--     family that supports
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_TRANSFER_BIT' but does not
+--     support 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' or
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT'.
+--
+-- -   'FORMAT_FEATURE_2_STENCIL_COPY_ON_COMPUTE_QUEUE_BIT_KHR' specifies
+--     that the stencil aspect of this format can be copied using a queue
+--     family that supports
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT' but does not
+--     support 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT'.
+--
+-- -   'FORMAT_FEATURE_2_STENCIL_COPY_ON_TRANSFER_QUEUE_BIT_KHR' specifies
+--     that the stencil aspect of this format can be copied using a queue
+--     family that supports
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_TRANSFER_BIT' but does not
+--     support 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' or
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT'.
+--
 --     Specific
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#video-profiles video profiles>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#video-profiles video profiles>
 --     /may/ have additional restrictions on the format and other image
 --     creation parameters corresponding to image views used by video
 --     coding operations that /can/ be enumerated using the
@@ -403,17 +309,17 @@
 -- -   'FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT' specifies that
 --     image views or buffer views created with this format /can/ be used
 --     as
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storageimage storage images>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-storageimage storage images>
 --     or
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storagetexelbuffer storage texel buffers>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-storagetexelbuffer storage texel buffers>
 --     respectively for read operations without specifying a format.
 --
 -- -   'FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT' specifies that
 --     image views or buffer views created with this format /can/ be used
 --     as
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storageimage storage images>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-storageimage storage images>
 --     or
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storagetexelbuffer storage texel buffers>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-storagetexelbuffer storage texel buffers>
 --     respectively for write operations without specifying a format.
 --
 -- -   'FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT' specifies that
@@ -422,52 +328,57 @@
 --
 -- -   'FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV' specifies that the
 --     format is supported as a renderable
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#glossary-linear-color-attachment Linear Color Attachment>.
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#glossary-linear-color-attachment Linear Color Attachment>.
 --     This bit will be set for renderable color formats in the
 --     @linearTilingFeatures@. This /must/ not be set in the
 --     @optimalTilingFeatures@ or @bufferFeatures@ members.
 --
 -- -   'FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM' specifies that image views
 --     created with this format /can/ be used as the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-weightimage weight image>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-weightimage weight image>
 --     input to
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#textures-weightimage weight image sampling>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#textures-weightimage weight image sampling>
 --     operations.
 --
 -- -   'FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM' specifies that
 --     image views created with this format /can/ be sampled in
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#textures-weightimage weight image sampling>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#textures-weightimage weight image sampling>
 --     operations.
 --
 -- -   'FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM' specifies that image
 --     views created with this format /can/ be used in
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#textures-blockmatch block matching>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#textures-blockmatch block matching>
 --     operations.
 --
 -- -   'FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM' specifies that image
 --     views created with this format /can/ be sampled in
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#textures-boxfilter box filter sampling>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#textures-boxfilter box filter sampling>
 --     operations.
 --
--- -   'FORMAT_FEATURE_2_HOST_IMAGE_TRANSFER_BIT_EXT' specifies that an
---     image /can/ be created with
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_HOST_TRANSFER_BIT_EXT'.
+-- -   'FORMAT_FEATURE_2_HOST_IMAGE_TRANSFER_BIT' specifies that an image
+--     /can/ be created with the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_HOST_TRANSFER_BIT'
+--     usage flag set.
 --
--- -   @VK_FORMAT_FEATURE_2_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR@
+-- -   'FORMAT_FEATURE_2_COPY_IMAGE_INDIRECT_DST_BIT_KHR' specifies that a
+--     'Vulkan.Core10.Handles.Image' /can/ be used as destination for
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#indirect-copies indirect copies>.
+--
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatFeatureFlagBits2KHR VK_FORMAT_FEATURE_2_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR>
 --     specifies that an image view with this format /can/ be used as a
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#encode-quantization-delta-map quantization delta map>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#encode-quantization-delta-map quantization delta map>
 --     in
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#video-encode-operations video encode operations>.
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#video-encode-operations video encode operations>.
 --
--- -   @VK_FORMAT_FEATURE_2_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR@ specifies
---     that an image view with this format /can/ be used as an
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#encode-emphasis-map emphasis map>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatFeatureFlagBits2KHR VK_FORMAT_FEATURE_2_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR>
+--     specifies that an image view with this format /can/ be used as an
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#encode-emphasis-map emphasis map>
 --     in
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#video-encode-operations video encode operations>.
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#video-encode-operations video encode operations>.
 --
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#encode-quantization-map Video encode quantization maps>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#encode-quantization-map Video encode quantization maps>
 --     have additional restrictions specific to the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#video-profiles video profile>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#video-profiles video profile>
 --     they are used with that /can/ be enumerated using the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkGetPhysicalDeviceVideoFormatPropertiesKHR vkGetPhysicalDeviceVideoFormatPropertiesKHR>
 --     command.
@@ -496,41 +407,75 @@
 --
 -- -   'FORMAT_FEATURE_2_VERTEX_BUFFER_BIT' specifies that the format /can/
 --     be used as a vertex attribute format
---     ('Vulkan.Core10.Pipeline.VertexInputAttributeDescription'::@format@).
+--     ('Vulkan.Core10.GraphicsPipeline.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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#acceleration-structure acceleration structure>
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#host-acceleration-structure host acceleration structure>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#host-acceleration-structure host acceleration structure>
 --     builds.
 --
+-- -   'FORMAT_FEATURE_2_ACCELERATION_STRUCTURE_RADIUS_BUFFER_BIT_NV'
+--     specifies that the format /can/ be used as the radius format when
+--     creating an
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#acceleration-structure acceleration structure>
+--     ('Vulkan.Extensions.VK_NV_ray_tracing_linear_swept_spheres.AccelerationStructureGeometryLinearSweptSpheresDataNV'::@radiusFormat@
+--     or
+--     'Vulkan.Extensions.VK_NV_ray_tracing_linear_swept_spheres.AccelerationStructureGeometrySpheresDataNV'::@radiusFormat@).
+--     This format /can/ also be used as the radius format in host memory
+--     when doing
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#host-acceleration-structure host acceleration structure>
+--     builds.
+--
 -- -   'FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT' specifies that
 --     buffer views created with this format /can/ be used as
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storagetexelbuffer storage texel buffers>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-storagetexelbuffer storage texel buffers>
 --     for read operations without specifying a format.
 --
 -- -   'FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT' specifies that
 --     buffer views created with this format /can/ be used as
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storagetexelbuffer storage texel buffers>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-storagetexelbuffer storage texel buffers>
 --     for write operations without specifying a format.
 --
 -- -   'FORMAT_FEATURE_2_OPTICAL_FLOW_IMAGE_BIT_NV' specifies that an image
 --     view with this format /can/ be used as an input or reference to
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#opticalflow-operations optical flow operations>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#opticalflow-operations optical flow operations>
 --
 -- -   'FORMAT_FEATURE_2_OPTICAL_FLOW_VECTOR_BIT_NV' specifies that an
 --     image view with this format /can/ be used as a flow vector map
 --     (either as hint, output or global flow) for
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#opticalflow-operations optical flow operations>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#opticalflow-operations optical flow operations>
 --
 -- -   'FORMAT_FEATURE_2_OPTICAL_FLOW_COST_BIT_NV' specifies that an image
 --     view with this format /can/ be used as an output cost map for
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#opticalflow-operations optical flow operations>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#opticalflow-operations optical flow operations>
 --
+-- -   'FORMAT_FEATURE_2_BLOCK_MATCHING_SXD_BIT_QCOM' specifies that image
+--     views created with this format /can/ be used in
+--     @OpImageBlockMatchSSDQCOM@ and @OpImageBlockMatchSADQCOM@
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#textures-blockmatch block matching>
+--     operations. Implementations /must/ set this flag for all formats
+--     which it sets the 'FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM' flag.
+--
+-- -   'FORMAT_FEATURE_2_DATA_GRAPH_OPTICAL_FLOW_IMAGE_BIT_ARM' specifies
+--     that an image view with this format /can/ be used as an input or
+--     reference to
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#graphs-operations-opticalflow optical flow operations>
+--
+-- -   'FORMAT_FEATURE_2_DATA_GRAPH_OPTICAL_FLOW_VECTOR_BIT_ARM' specifies
+--     that an image view with this format /can/ be used as a flow vector
+--     map (either as hint, output or global flow) for
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#graphs-operations-opticalflow optical flow operations>
+--
+-- -   'FORMAT_FEATURE_2_DATA_GRAPH_OPTICAL_FLOW_COST_BIT_ARM' specifies
+--     that an image view with this format /can/ be used as an output cost
+--     map for
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#graphs-operations-opticalflow optical flow operations>
+--
 -- = 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>,
@@ -539,304 +484,162 @@
 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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-sampledimage sampled from>.
+-- No documentation found for Nested "VkFormatFeatureFlagBits2" "VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT"
 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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storageimage storage image>.
+-- No documentation found for Nested "VkFormatFeatureFlagBits2" "VK_FORMAT_FEATURE_2_STORAGE_IMAGE_BIT"
 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.
+-- No documentation found for Nested "VkFormatFeatureFlagBits2" "VK_FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT"
 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.
+-- No documentation found for Nested "VkFormatFeatureFlagBits2" "VK_FORMAT_FEATURE_2_UNIFORM_TEXEL_BUFFER_BIT"
 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.
+-- No documentation found for Nested "VkFormatFeatureFlagBits2" "VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_BIT"
 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.
+-- No documentation found for Nested "VkFormatFeatureFlagBits2" "VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_ATOMIC_BIT"
 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@).
+-- No documentation found for Nested "VkFormatFeatureFlagBits2" "VK_FORMAT_FEATURE_2_VERTEX_BUFFER_BIT"
 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.
+-- No documentation found for Nested "VkFormatFeatureFlagBits2" "VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT"
 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.
+-- No documentation found for Nested "VkFormatFeatureFlagBits2" "VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BLEND_BIT"
 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.
+-- No documentation found for Nested "VkFormatFeatureFlagBits2" "VK_FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT_BIT"
 pattern FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT_BIT = FormatFeatureFlagBits2 0x0000000000000200
 
--- | 'FORMAT_FEATURE_2_BLIT_SRC_BIT' specifies that an image /can/ be used as
--- the @srcImage@ for
--- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.cmdBlitImage2' and
--- 'Vulkan.Core10.CommandBufferBuilding.cmdBlitImage'.
+-- No documentation found for Nested "VkFormatFeatureFlagBits2" "VK_FORMAT_FEATURE_2_BLIT_SRC_BIT"
 pattern FORMAT_FEATURE_2_BLIT_SRC_BIT = FormatFeatureFlagBits2 0x0000000000000400
 
--- | 'FORMAT_FEATURE_2_BLIT_DST_BIT' specifies that an image /can/ be used as
--- the @dstImage@ for
--- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.cmdBlitImage2' and
--- 'Vulkan.Core10.CommandBufferBuilding.cmdBlitImage'.
+-- No documentation found for Nested "VkFormatFeatureFlagBits2" "VK_FORMAT_FEATURE_2_BLIT_DST_BIT"
 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@ for
--- '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_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.
+-- No documentation found for Nested "VkFormatFeatureFlagBits2" "VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR_BIT"
 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.Core10.Enums.Filter.FILTER_CUBIC_EXT', or be the source image
--- for a blit with @filter@ set to
--- 'Vulkan.Core10.Enums.Filter.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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#copies copy commands>.
+-- No documentation found for Nested "VkFormatFeatureFlagBits2" "VK_FORMAT_FEATURE_2_TRANSFER_SRC_BIT"
 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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#copies copy commands>
--- and
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#clears clear commands>.
+-- No documentation found for Nested "VkFormatFeatureFlagBits2" "VK_FORMAT_FEATURE_2_TRANSFER_DST_BIT"
 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'.
+-- No documentation found for Nested "VkFormatFeatureFlagBits2" "VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_MINMAX_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://registry.khronos.org/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'.
+-- No documentation found for Nested "VkFormatFeatureFlagBits2" "VK_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://registry.khronos.org/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'.
+-- No documentation found for Nested "VkFormatFeatureFlagBits2" "VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT"
 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.
+-- No documentation found for Nested "VkFormatFeatureFlagBits2" "VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT"
 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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#textures-chroma-reconstruction>.
--- If this bit is not present, reconstruction is implicit by default.
+-- No documentation found for Nested "VkFormatFeatureFlagBits2" "VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT"
 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'.
+-- No documentation found for Nested "VkFormatFeatureFlagBits2" "VK_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/.
+-- No documentation found for Nested "VkFormatFeatureFlagBits2" "VK_FORMAT_FEATURE_2_DISJOINT_BIT"
 pattern FORMAT_FEATURE_2_DISJOINT_BIT = FormatFeatureFlagBits2 0x0000000000400000
 
--- | 'FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT' specifies that an
--- application /can/ define a
--- <https://registry.khronos.org/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
--- using this format as a source.
+-- No documentation found for Nested "VkFormatFeatureFlagBits2" "VK_FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT"
 pattern FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT = FormatFeatureFlagBits2 0x0000000000800000
 
--- | 'FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT' specifies that image
--- views or buffer views created with this format /can/ be used as
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storageimage storage images>
--- or
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storagetexelbuffer storage texel buffers>
--- respectively for read operations without specifying a format.
---
--- 'FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT' specifies that buffer
--- views created with this format /can/ be used as
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storagetexelbuffer storage texel buffers>
--- for read operations without specifying a format.
+-- No documentation found for Nested "VkFormatFeatureFlagBits2" "VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT"
 pattern FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT = FormatFeatureFlagBits2 0x0000000080000000
 
--- | 'FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT' specifies that image
--- views or buffer views created with this format /can/ be used as
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storageimage storage images>
--- or
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storagetexelbuffer storage texel buffers>
--- respectively for write operations without specifying a format.
---
--- 'FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT' specifies that
--- buffer views created with this format /can/ be used as
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storagetexelbuffer storage texel buffers>
--- for write operations without specifying a format.
+-- No documentation found for Nested "VkFormatFeatureFlagBits2" "VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT"
 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.
+-- No documentation found for Nested "VkFormatFeatureFlagBits2" "VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT"
 pattern FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT = FormatFeatureFlagBits2 0x0000000200000000
 
--- | 'FORMAT_FEATURE_2_OPTICAL_FLOW_COST_BIT_NV' specifies that an image view
--- with this format /can/ be used as an output cost map for
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#opticalflow-operations optical flow operations>
+-- No documentation found for Nested "VkFormatFeatureFlagBits2" "VK_FORMAT_FEATURE_2_DATA_GRAPH_OPTICAL_FLOW_COST_BIT_ARM"
+pattern FORMAT_FEATURE_2_DATA_GRAPH_OPTICAL_FLOW_COST_BIT_ARM = FormatFeatureFlagBits2 0x0400000000000000
+
+-- No documentation found for Nested "VkFormatFeatureFlagBits2" "VK_FORMAT_FEATURE_2_DATA_GRAPH_OPTICAL_FLOW_VECTOR_BIT_ARM"
+pattern FORMAT_FEATURE_2_DATA_GRAPH_OPTICAL_FLOW_VECTOR_BIT_ARM = FormatFeatureFlagBits2 0x0200000000000000
+
+-- No documentation found for Nested "VkFormatFeatureFlagBits2" "VK_FORMAT_FEATURE_2_DATA_GRAPH_OPTICAL_FLOW_IMAGE_BIT_ARM"
+pattern FORMAT_FEATURE_2_DATA_GRAPH_OPTICAL_FLOW_IMAGE_BIT_ARM = FormatFeatureFlagBits2 0x0100000000000000
+
+-- No documentation found for Nested "VkFormatFeatureFlagBits2" "VK_FORMAT_FEATURE_2_STENCIL_COPY_ON_TRANSFER_QUEUE_BIT_KHR"
+pattern FORMAT_FEATURE_2_STENCIL_COPY_ON_TRANSFER_QUEUE_BIT_KHR = FormatFeatureFlagBits2 0x0080000000000000
+
+-- No documentation found for Nested "VkFormatFeatureFlagBits2" "VK_FORMAT_FEATURE_2_STENCIL_COPY_ON_COMPUTE_QUEUE_BIT_KHR"
+pattern FORMAT_FEATURE_2_STENCIL_COPY_ON_COMPUTE_QUEUE_BIT_KHR = FormatFeatureFlagBits2 0x0040000000000000
+
+-- No documentation found for Nested "VkFormatFeatureFlagBits2" "VK_FORMAT_FEATURE_2_DEPTH_COPY_ON_TRANSFER_QUEUE_BIT_KHR"
+pattern FORMAT_FEATURE_2_DEPTH_COPY_ON_TRANSFER_QUEUE_BIT_KHR = FormatFeatureFlagBits2 0x0020000000000000
+
+-- No documentation found for Nested "VkFormatFeatureFlagBits2" "VK_FORMAT_FEATURE_2_DEPTH_COPY_ON_COMPUTE_QUEUE_BIT_KHR"
+pattern FORMAT_FEATURE_2_DEPTH_COPY_ON_COMPUTE_QUEUE_BIT_KHR = FormatFeatureFlagBits2 0x0010000000000000
+
+-- No documentation found for Nested "VkFormatFeatureFlagBits2" "VK_FORMAT_FEATURE_2_COPY_IMAGE_INDIRECT_DST_BIT_KHR"
+pattern FORMAT_FEATURE_2_COPY_IMAGE_INDIRECT_DST_BIT_KHR = FormatFeatureFlagBits2 0x0800000000000000
+
+-- No documentation found for Nested "VkFormatFeatureFlagBits2" "VK_FORMAT_FEATURE_2_TENSOR_DATA_GRAPH_BIT_ARM"
+pattern FORMAT_FEATURE_2_TENSOR_DATA_GRAPH_BIT_ARM = FormatFeatureFlagBits2 0x0001000000000000
+
+-- No documentation found for Nested "VkFormatFeatureFlagBits2" "VK_FORMAT_FEATURE_2_OPTICAL_FLOW_COST_BIT_NV"
 pattern FORMAT_FEATURE_2_OPTICAL_FLOW_COST_BIT_NV = FormatFeatureFlagBits2 0x0000040000000000
 
--- | 'FORMAT_FEATURE_2_OPTICAL_FLOW_VECTOR_BIT_NV' specifies that an image
--- view with this format /can/ be used as a flow vector map (either as
--- hint, output or global flow) for
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#opticalflow-operations optical flow operations>
+-- No documentation found for Nested "VkFormatFeatureFlagBits2" "VK_FORMAT_FEATURE_2_OPTICAL_FLOW_VECTOR_BIT_NV"
 pattern FORMAT_FEATURE_2_OPTICAL_FLOW_VECTOR_BIT_NV = FormatFeatureFlagBits2 0x0000020000000000
 
--- | 'FORMAT_FEATURE_2_OPTICAL_FLOW_IMAGE_BIT_NV' specifies that an image
--- view with this format /can/ be used as an input or reference to
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#opticalflow-operations optical flow operations>
+-- No documentation found for Nested "VkFormatFeatureFlagBits2" "VK_FORMAT_FEATURE_2_OPTICAL_FLOW_IMAGE_BIT_NV"
 pattern FORMAT_FEATURE_2_OPTICAL_FLOW_IMAGE_BIT_NV = FormatFeatureFlagBits2 0x0000010000000000
 
--- | 'FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM' specifies that image
--- views created with this format /can/ be sampled in
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#textures-boxfilter box filter sampling>
--- operations.
+-- No documentation found for Nested "VkFormatFeatureFlagBits2" "VK_FORMAT_FEATURE_2_TENSOR_IMAGE_ALIASING_BIT_ARM"
+pattern FORMAT_FEATURE_2_TENSOR_IMAGE_ALIASING_BIT_ARM = FormatFeatureFlagBits2 0x0000080000000000
+
+-- No documentation found for Nested "VkFormatFeatureFlagBits2" "VK_FORMAT_FEATURE_2_TENSOR_SHADER_BIT_ARM"
+pattern FORMAT_FEATURE_2_TENSOR_SHADER_BIT_ARM = FormatFeatureFlagBits2 0x0000008000000000
+
+-- No documentation found for Nested "VkFormatFeatureFlagBits2" "VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM"
 pattern FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM = FormatFeatureFlagBits2 0x0000002000000000
 
--- | 'FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM' specifies that image views
--- created with this format /can/ be used in
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#textures-blockmatch block matching>
--- operations.
+-- No documentation found for Nested "VkFormatFeatureFlagBits2" "VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM"
 pattern FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM = FormatFeatureFlagBits2 0x0000001000000000
 
--- | 'FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM' specifies that image
--- views created with this format /can/ be sampled in
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#textures-weightimage weight image sampling>
--- operations.
+-- No documentation found for Nested "VkFormatFeatureFlagBits2" "VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM"
 pattern FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM = FormatFeatureFlagBits2 0x0000000800000000
 
--- | 'FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM' specifies that image views
--- created with this format /can/ be used as the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-weightimage weight image>
--- input to
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#textures-weightimage weight image sampling>
--- operations.
+-- No documentation found for Nested "VkFormatFeatureFlagBits2" "VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM"
 pattern FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM = FormatFeatureFlagBits2 0x0000000400000000
 
--- | 'FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV' specifies that the
--- format is supported as a renderable
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#glossary-linear-color-attachment 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.
+-- No documentation found for Nested "VkFormatFeatureFlagBits2" "VK_FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV"
 pattern FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV = FormatFeatureFlagBits2 0x0000004000000000
 
--- | 'FORMAT_FEATURE_2_HOST_IMAGE_TRANSFER_BIT_EXT' specifies that an image
--- /can/ be created with
--- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_HOST_TRANSFER_BIT_EXT'.
-pattern FORMAT_FEATURE_2_HOST_IMAGE_TRANSFER_BIT_EXT = FormatFeatureFlagBits2 0x0000400000000000
+-- No documentation found for Nested "VkFormatFeatureFlagBits2" "VK_FORMAT_FEATURE_2_ACCELERATION_STRUCTURE_RADIUS_BUFFER_BIT_NV"
+pattern FORMAT_FEATURE_2_ACCELERATION_STRUCTURE_RADIUS_BUFFER_BIT_NV = FormatFeatureFlagBits2 0x0008000000000000
 
--- | 'FORMAT_FEATURE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR' specifies
--- that an image view /can/ be used as a
--- <https://registry.khronos.org/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 a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#formats-numericformat numeric format>
--- other than @UINT@, or set it as a buffer feature.
+-- No documentation found for Nested "VkFormatFeatureFlagBits2" "VK_FORMAT_FEATURE_2_BLOCK_MATCHING_SXD_BIT_QCOM"
+pattern FORMAT_FEATURE_2_BLOCK_MATCHING_SXD_BIT_QCOM = FormatFeatureFlagBits2 0x0000100000000000
+
+-- No documentation found for Nested "VkFormatFeatureFlagBits2" "VK_FORMAT_FEATURE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"
 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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-fragmentdensitymapattachment fragment density map attachment>.
+-- No documentation found for Nested "VkFormatFeatureFlagBits2" "VK_FORMAT_FEATURE_2_FRAGMENT_DENSITY_MAP_BIT_EXT"
 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://registry.khronos.org/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#host-acceleration-structure host acceleration structure>
--- builds.
+-- No documentation found for Nested "VkFormatFeatureFlagBits2" "VK_FORMAT_FEATURE_2_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR"
 pattern FORMAT_FEATURE_2_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR = FormatFeatureFlagBits2 0x0000000020000000
 
+-- No documentation found for Nested "VkFormatFeatureFlagBits2" "VK_FORMAT_FEATURE_2_HOST_IMAGE_TRANSFER_BIT"
+pattern FORMAT_FEATURE_2_HOST_IMAGE_TRANSFER_BIT = FormatFeatureFlagBits2 0x0000400000000000
+
+-- No documentation found for Nested "VkFormatFeatureFlagBits2" "VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_CUBIC_BIT"
+pattern FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_CUBIC_BIT = FormatFeatureFlagBits2 0x0000000000002000
+
 conNameFormatFeatureFlagBits2 :: String
 conNameFormatFeatureFlagBits2 = "FormatFeatureFlagBits2"
 
@@ -898,10 +701,6 @@
     , "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"
     )
@@ -954,6 +753,42 @@
     , "SAMPLED_IMAGE_DEPTH_COMPARISON_BIT"
     )
   ,
+    ( FORMAT_FEATURE_2_DATA_GRAPH_OPTICAL_FLOW_COST_BIT_ARM
+    , "DATA_GRAPH_OPTICAL_FLOW_COST_BIT_ARM"
+    )
+  ,
+    ( FORMAT_FEATURE_2_DATA_GRAPH_OPTICAL_FLOW_VECTOR_BIT_ARM
+    , "DATA_GRAPH_OPTICAL_FLOW_VECTOR_BIT_ARM"
+    )
+  ,
+    ( FORMAT_FEATURE_2_DATA_GRAPH_OPTICAL_FLOW_IMAGE_BIT_ARM
+    , "DATA_GRAPH_OPTICAL_FLOW_IMAGE_BIT_ARM"
+    )
+  ,
+    ( FORMAT_FEATURE_2_STENCIL_COPY_ON_TRANSFER_QUEUE_BIT_KHR
+    , "STENCIL_COPY_ON_TRANSFER_QUEUE_BIT_KHR"
+    )
+  ,
+    ( FORMAT_FEATURE_2_STENCIL_COPY_ON_COMPUTE_QUEUE_BIT_KHR
+    , "STENCIL_COPY_ON_COMPUTE_QUEUE_BIT_KHR"
+    )
+  ,
+    ( FORMAT_FEATURE_2_DEPTH_COPY_ON_TRANSFER_QUEUE_BIT_KHR
+    , "DEPTH_COPY_ON_TRANSFER_QUEUE_BIT_KHR"
+    )
+  ,
+    ( FORMAT_FEATURE_2_DEPTH_COPY_ON_COMPUTE_QUEUE_BIT_KHR
+    , "DEPTH_COPY_ON_COMPUTE_QUEUE_BIT_KHR"
+    )
+  ,
+    ( FORMAT_FEATURE_2_COPY_IMAGE_INDIRECT_DST_BIT_KHR
+    , "COPY_IMAGE_INDIRECT_DST_BIT_KHR"
+    )
+  ,
+    ( FORMAT_FEATURE_2_TENSOR_DATA_GRAPH_BIT_ARM
+    , "TENSOR_DATA_GRAPH_BIT_ARM"
+    )
+  ,
     ( FORMAT_FEATURE_2_OPTICAL_FLOW_COST_BIT_NV
     , "OPTICAL_FLOW_COST_BIT_NV"
     )
@@ -966,6 +801,14 @@
     , "OPTICAL_FLOW_IMAGE_BIT_NV"
     )
   ,
+    ( FORMAT_FEATURE_2_TENSOR_IMAGE_ALIASING_BIT_ARM
+    , "TENSOR_IMAGE_ALIASING_BIT_ARM"
+    )
+  ,
+    ( FORMAT_FEATURE_2_TENSOR_SHADER_BIT_ARM
+    , "TENSOR_SHADER_BIT_ARM"
+    )
+  ,
     ( FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM
     , "BOX_FILTER_SAMPLED_BIT_QCOM"
     )
@@ -986,10 +829,14 @@
     , "LINEAR_COLOR_ATTACHMENT_BIT_NV"
     )
   ,
-    ( FORMAT_FEATURE_2_HOST_IMAGE_TRANSFER_BIT_EXT
-    , "HOST_IMAGE_TRANSFER_BIT_EXT"
+    ( FORMAT_FEATURE_2_ACCELERATION_STRUCTURE_RADIUS_BUFFER_BIT_NV
+    , "ACCELERATION_STRUCTURE_RADIUS_BUFFER_BIT_NV"
     )
   ,
+    ( FORMAT_FEATURE_2_BLOCK_MATCHING_SXD_BIT_QCOM
+    , "BLOCK_MATCHING_SXD_BIT_QCOM"
+    )
+  ,
     ( FORMAT_FEATURE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
     , "FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"
     )
@@ -1000,6 +847,14 @@
   ,
     ( FORMAT_FEATURE_2_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR
     , "ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR"
+    )
+  ,
+    ( FORMAT_FEATURE_2_HOST_IMAGE_TRANSFER_BIT
+    , "HOST_IMAGE_TRANSFER_BIT"
+    )
+  ,
+    ( FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_CUBIC_BIT
+    , "SAMPLED_IMAGE_FILTER_CUBIC_BIT"
     )
   ]
 
diff --git a/src/Vulkan/Core13/Enums/PipelineCreationFeedbackFlagBits.hs b/src/Vulkan/Core13/Enums/PipelineCreationFeedbackFlagBits.hs
--- a/src/Vulkan/Core13/Enums/PipelineCreationFeedbackFlagBits.hs
+++ b/src/Vulkan/Core13/Enums/PipelineCreationFeedbackFlagBits.hs
@@ -1,9 +1,6 @@
 {-# 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
+module Vulkan.Core13.Enums.PipelineCreationFeedbackFlagBits  ( PipelineCreationFeedbackFlags
                                                              , PipelineCreationFeedbackFlagBits( PIPELINE_CREATION_FEEDBACK_VALID_BIT
                                                                                                , PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT
                                                                                                , PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT
@@ -22,23 +19,56 @@
 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
 --
+-- = Description
+--
+-- -   'PIPELINE_CREATION_FEEDBACK_VALID_BIT' specifies that the feedback
+--     information is valid.
+--
+-- -   'PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT'
+--     specifies 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.GraphicsPipeline.createGraphicsPipelines',
+--     'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.createRayTracingPipelinesKHR',
+--     'Vulkan.Extensions.VK_NV_ray_tracing.createRayTracingPipelinesNV',
+--     'Vulkan.Extensions.VK_ARM_data_graph.createDataGraphPipelinesARM',
+--     or 'Vulkan.Core10.ComputePipeline.createComputePipelines'. When an
+--     implementation sets this bit for the entire pipeline, it /may/ leave
+--     it unset for any stage.
+--
+--     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.
+--
+-- -   'PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT'
+--     specifies 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.
+--
+--     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.
+--
 -- = 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>,
@@ -49,48 +79,13 @@
 newtype PipelineCreationFeedbackFlagBits = PipelineCreationFeedbackFlagBits Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'PIPELINE_CREATION_FEEDBACK_VALID_BIT' specifies that the feedback
--- information is valid.
+-- No documentation found for Nested "VkPipelineCreationFeedbackFlagBits" "VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT"
 pattern PIPELINE_CREATION_FEEDBACK_VALID_BIT = PipelineCreationFeedbackFlagBits 0x00000001
 
--- | 'PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT'
--- specifies 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.
---
--- 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.
+-- No documentation found for Nested "VkPipelineCreationFeedbackFlagBits" "VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT"
 pattern PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT = PipelineCreationFeedbackFlagBits 0x00000002
 
--- | 'PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT' specifies
--- 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.
---
--- 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.
+-- No documentation found for Nested "VkPipelineCreationFeedbackFlagBits" "VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT"
 pattern PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT = PipelineCreationFeedbackFlagBits 0x00000004
 
 conNamePipelineCreationFeedbackFlagBits :: String
diff --git a/src/Vulkan/Core13/Enums/PipelineStageFlags2.hs b/src/Vulkan/Core13/Enums/PipelineStageFlags2.hs
--- a/src/Vulkan/Core13/Enums/PipelineStageFlags2.hs
+++ b/src/Vulkan/Core13/Enums/PipelineStageFlags2.hs
@@ -1,33 +1,6 @@
 {-# language CPP #-}
 -- No documentation found for Chapter "PipelineStageFlags2"
-module Vulkan.Core13.Enums.PipelineStageFlags2  ( pattern PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_EXT
-                                                , 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
+module Vulkan.Core13.Enums.PipelineStageFlags2  ( pattern PIPELINE_STAGE_2_TRANSFER_BIT
                                                 , PipelineStageFlags2
                                                 , PipelineStageFlagBits2( PIPELINE_STAGE_2_NONE
                                                                         , PIPELINE_STAGE_2_TOP_OF_PIPE_BIT
@@ -54,6 +27,10 @@
                                                                         , PIPELINE_STAGE_2_INDEX_INPUT_BIT
                                                                         , PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT
                                                                         , PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT
+                                                                        , PIPELINE_STAGE_2_MEMORY_DECOMPRESSION_BIT_EXT
+                                                                        , PIPELINE_STAGE_2_COPY_INDIRECT_BIT_KHR
+                                                                        , PIPELINE_STAGE_2_DATA_GRAPH_BIT_ARM
+                                                                        , PIPELINE_STAGE_2_CONVERT_COOPERATIVE_VECTOR_MATRIX_BIT_NV
                                                                         , PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV
                                                                         , PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI
                                                                         , PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT
@@ -66,7 +43,7 @@
                                                                         , 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_COMMAND_PREPROCESS_BIT_EXT
                                                                         , PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT
                                                                         , PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT
                                                                         , ..
@@ -84,116 +61,8 @@
 import GHC.Read (Read(readPrec))
 import GHC.Show (Show(showsPrec))
 import Vulkan.Core10.FundamentalTypes (Flags64)
--- No documentation found for TopLevel "VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_EXT"
-pattern PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_EXT = PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV
-
-
--- 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_ALL_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
+pattern PIPELINE_STAGE_2_TRANSFER_BIT = PIPELINE_STAGE_2_ALL_TRANSFER_BIT
 
 
 type PipelineStageFlags2 = PipelineStageFlagBits2
@@ -203,7 +72,266 @@
 --
 -- = Description
 --
--- The @TOP@ and @BOTTOM@ pipeline stages are deprecated, and applications
+-- -   'PIPELINE_STAGE_2_NONE' specifies no stages of execution.
+--
+-- -   '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'.
+--     This stage also includes reading commands written by
+--     'Vulkan.Extensions.VK_EXT_device_generated_commands.cmdPreprocessGeneratedCommandsEXT'.
+--
+-- -   'PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT' specifies the task shader
+--     stage.
+--
+-- -   'PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT' specifies the mesh shader
+--     stage.
+--
+-- -   'PIPELINE_STAGE_2_INDEX_INPUT_BIT' specifies the stage of the
+--     pipeline where index buffers are consumed.
+--
+-- -   'PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT' specifies the stage of
+--     the pipeline where vertex buffers are consumed.
+--
+-- -   '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'
+--
+-- -   'PIPELINE_STAGE_2_VERTEX_SHADER_BIT' specifies the vertex shader
+--     stage.
+--
+-- -   'PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT' specifies the
+--     tessellation control shader stage.
+--
+-- -   'PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT' specifies the
+--     tessellation evaluation shader stage.
+--
+-- -   'PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT' specifies the geometry shader
+--     stage.
+--
+-- -   'PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT' is equivalent to
+--     specifying all supported
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-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_EXT'
+--
+--     -   'PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT'
+--
+--     -   'PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI'
+--
+-- -   'PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT' specifies the fragment shader
+--     stage.
+--
+-- -   '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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-load-operations render pass load operations>
+--     for framebuffer attachments with a depth\/stencil format.
+--
+-- -   '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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-store-operations render pass store operations>
+--     for framebuffer attachments with a depth\/stencil format.
+--
+-- -   'PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT' specifies the stage
+--     of the pipeline where final color values are output from the
+--     pipeline. This stage includes
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#framebuffer-blending blending>,
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#framebuffer-logicop logic operations>,
+--     render pass
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-load-operations load>
+--     and
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-store-operations store>
+--     operations for color attachments,
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-resolve-operations render pass multisample resolve operations>,
+--     and 'Vulkan.Core10.CommandBufferBuilding.cmdClearAttachments'.
+--
+-- -   'PIPELINE_STAGE_2_COMPUTE_SHADER_BIT' specifies the compute shader
+--     stage.
+--
+-- -   '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.
+--
+-- -   'PIPELINE_STAGE_2_COPY_BIT' specifies the execution of all
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#copies copy commands>,
+--     including
+--     'Vulkan.Core10.CommandBufferBuilding.cmdCopyQueryPoolResults'.
+--
+-- -   'PIPELINE_STAGE_2_BLIT_BIT' specifies the execution of
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBlitImage'.
+--
+-- -   'PIPELINE_STAGE_2_RESOLVE_BIT' specifies the execution of
+--     'Vulkan.Core10.CommandBufferBuilding.cmdResolveImage'.
+--
+-- -   'PIPELINE_STAGE_2_CLEAR_BIT' specifies the execution of
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#clears clear commands>,
+--     with the exception of
+--     'Vulkan.Core10.CommandBufferBuilding.cmdClearAttachments'.
+--
+-- -   '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'
+--
+--     -   'PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR'
+--
+-- -   'PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR' specifies the
+--     execution of the ray tracing shader stages.
+--
+-- -   'PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR' specifies
+--     the execution of
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#acceleration-structure acceleration structure commands>
+--     or
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#acceleration-structure-copying acceleration structure copy commands>.
+--
+-- -   'PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR' specifies the
+--     execution of
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#acceleration-structure-copying acceleration structure copy commands>.
+--
+-- -   '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_COPY_INDIRECT_BIT_KHR'
+--
+--     -   'PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT'
+--
+--     -   'PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT'
+--
+--     -   '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'
+--
+--     -   'PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
+--
+--     -   'PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT'
+--
+--     -   'PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI'
+--
+--     -   'PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI'
+--
+--     -   'PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI'
+--
+-- -   'PIPELINE_STAGE_2_ALL_COMMANDS_BIT' specifies all operations
+--     performed by all commands supported on the queue it is used with.
+--
+-- -   'PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT' specifies the stage
+--     of the pipeline where the predicate of conditional rendering is
+--     consumed.
+--
+-- -   '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.
+--
+-- -   'Vulkan.Extensions.VK_KHR_synchronization2.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.
+--
+-- -   'PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_EXT' specifies the stage of
+--     the pipeline where device-side generation of commands via
+--     'Vulkan.Extensions.VK_EXT_device_generated_commands.cmdPreprocessGeneratedCommandsEXT'
+--     is handled.
+--
+-- -   'PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
+--     specifies the stage of the pipeline where the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment>
+--     or
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-shading-rate-image shading rate image>
+--     is read to determine the fragment shading rate for portions of a
+--     rasterized primitive.
+--
+-- -   'PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT' specifies the
+--     stage of the pipeline where the fragment density map is read to
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#fragmentdensitymapops generate the fragment areas>.
+--
+-- -   '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.
+--
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR>
+--     specifies the execution of
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#video-decode-operations video decode operations>.
+--
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR>
+--     specifies the execution of
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#video-encode-operations video encode operations>.
+--
+-- -   'PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV' specifies the stage of the
+--     pipeline where
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#opticalflow-operations optical flow operation>
+--     are performed.
+--
+-- -   'PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI' specifies the subpass
+--     shading shader stage.
+--
+-- -   'PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT' specifies the execution of
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#micromap micromap commands>
+--     for 'Vulkan.Extensions.Handles.MicromapEXT' objects.
+--
+-- -   'PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI' specifies the
+--     cluster culling shader stage.
+--
+-- -   'PIPELINE_STAGE_2_CONVERT_COOPERATIVE_VECTOR_MATRIX_BIT_NV'
+--     specifies the execution of
+--     'Vulkan.Extensions.VK_NV_cooperative_vector.cmdConvertCooperativeVectorMatrixNV'.
+--
+-- -   'PIPELINE_STAGE_2_COPY_INDIRECT_BIT_KHR' specifies the stage of the
+--     pipeline where indirect copy commands (vkCmdCopyMemoryIndirect* and
+--     vkCmdCopyMemoryToImageIndirect*) parameters are consumed.
+--
+-- -   '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.
+--
+-- -   '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.
+--
+-- The @TOP@ and @BOTTOM@ pipeline stages are legacy, and applications
 -- should prefer 'PIPELINE_STAGE_2_ALL_COMMANDS_BIT' and
 -- 'PIPELINE_STAGE_2_NONE'.
 --
@@ -221,271 +349,136 @@
 newtype PipelineStageFlagBits2 = PipelineStageFlagBits2 Flags64
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'PIPELINE_STAGE_2_NONE' specifies no stages of execution.
+-- No documentation found for Nested "VkPipelineStageFlagBits2" "VK_PIPELINE_STAGE_2_NONE"
 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.
+-- No documentation found for Nested "VkPipelineStageFlagBits2" "VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT"
 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'.
--- This stage also includes reading commands written by
--- 'Vulkan.Extensions.VK_EXT_device_generated_commands.cmdPreprocessGeneratedCommandsEXT'.
+-- No documentation found for Nested "VkPipelineStageFlagBits2" "VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT"
 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'
+-- No documentation found for Nested "VkPipelineStageFlagBits2" "VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT"
 pattern PIPELINE_STAGE_2_VERTEX_INPUT_BIT = PipelineStageFlagBits2 0x0000000000000004
 
--- | 'PIPELINE_STAGE_2_VERTEX_SHADER_BIT' specifies the vertex shader stage.
+-- No documentation found for Nested "VkPipelineStageFlagBits2" "VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT"
 pattern PIPELINE_STAGE_2_VERTEX_SHADER_BIT = PipelineStageFlagBits2 0x0000000000000008
 
--- | 'PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT' specifies the
--- tessellation control shader stage.
+-- No documentation found for Nested "VkPipelineStageFlagBits2" "VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT"
 pattern PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT = PipelineStageFlagBits2 0x0000000000000010
 
--- | 'PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT' specifies the
--- tessellation evaluation shader stage.
+-- No documentation found for Nested "VkPipelineStageFlagBits2" "VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT"
 pattern PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT = PipelineStageFlagBits2 0x0000000000000020
 
--- | 'PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT' specifies the geometry shader
--- stage.
+-- No documentation found for Nested "VkPipelineStageFlagBits2" "VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT"
 pattern PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT = PipelineStageFlagBits2 0x0000000000000040
 
--- | 'PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT' specifies the fragment shader
--- stage.
+-- No documentation found for Nested "VkPipelineStageFlagBits2" "VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT"
 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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-load-operations render pass load operations>
--- for framebuffer attachments with a depth\/stencil format.
+-- No documentation found for Nested "VkPipelineStageFlagBits2" "VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT"
 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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-store-operations render pass store operations>
--- for framebuffer attachments with a depth\/stencil format.
+-- No documentation found for Nested "VkPipelineStageFlagBits2" "VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT"
 pattern PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT = PipelineStageFlagBits2 0x0000000000000200
 
--- | 'PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT' specifies the stage of
--- the pipeline where final color values are output from the pipeline. This
--- stage includes
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#framebuffer-blending blending>,
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#framebuffer-logicop logic operations>,
--- render pass
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-load-operations load>
--- and
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-store-operations store>
--- operations for color attachments,
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-resolve-operations render pass multisample resolve operations>,
--- and 'Vulkan.Core10.CommandBufferBuilding.cmdClearAttachments'.
+-- No documentation found for Nested "VkPipelineStageFlagBits2" "VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT"
 pattern PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT = PipelineStageFlagBits2 0x0000000000000400
 
--- | 'PIPELINE_STAGE_2_COMPUTE_SHADER_BIT' specifies the compute shader
--- stage.
+-- No documentation found for Nested "VkPipelineStageFlagBits2" "VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT"
 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'
---
--- -   'PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR'
+-- No documentation found for Nested "VkPipelineStageFlagBits2" "VK_PIPELINE_STAGE_2_ALL_TRANSFER_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.
+-- No documentation found for Nested "VkPipelineStageFlagBits2" "VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT"
 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.
+-- No documentation found for Nested "VkPipelineStageFlagBits2" "VK_PIPELINE_STAGE_2_HOST_BIT"
 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_EXT'
---
--- -   'PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT'
---
--- -   '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'
---
--- -   'PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
---
--- -   'PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT'
---
--- -   'PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI'
---
--- -   'PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI'
---
--- -   'PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI'
+-- No documentation found for Nested "VkPipelineStageFlagBits2" "VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT"
 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.
+-- No documentation found for Nested "VkPipelineStageFlagBits2" "VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT"
 pattern PIPELINE_STAGE_2_ALL_COMMANDS_BIT = PipelineStageFlagBits2 0x0000000000010000
 
--- | 'PIPELINE_STAGE_2_COPY_BIT' specifies the execution of all
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#copies copy commands>,
--- including 'Vulkan.Core10.CommandBufferBuilding.cmdCopyQueryPoolResults'.
+-- No documentation found for Nested "VkPipelineStageFlagBits2" "VK_PIPELINE_STAGE_2_COPY_BIT"
 pattern PIPELINE_STAGE_2_COPY_BIT = PipelineStageFlagBits2 0x0000000100000000
 
--- | 'PIPELINE_STAGE_2_RESOLVE_BIT' specifies the execution of
--- 'Vulkan.Core10.CommandBufferBuilding.cmdResolveImage'.
+-- No documentation found for Nested "VkPipelineStageFlagBits2" "VK_PIPELINE_STAGE_2_RESOLVE_BIT"
 pattern PIPELINE_STAGE_2_RESOLVE_BIT = PipelineStageFlagBits2 0x0000000200000000
 
--- | 'PIPELINE_STAGE_2_BLIT_BIT' specifies the execution of
--- 'Vulkan.Core10.CommandBufferBuilding.cmdBlitImage'.
+-- No documentation found for Nested "VkPipelineStageFlagBits2" "VK_PIPELINE_STAGE_2_BLIT_BIT"
 pattern PIPELINE_STAGE_2_BLIT_BIT = PipelineStageFlagBits2 0x0000000400000000
 
--- | 'PIPELINE_STAGE_2_CLEAR_BIT' specifies the execution of
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#clears clear commands>,
--- with the exception of
--- 'Vulkan.Core10.CommandBufferBuilding.cmdClearAttachments'.
+-- No documentation found for Nested "VkPipelineStageFlagBits2" "VK_PIPELINE_STAGE_2_CLEAR_BIT"
 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.
+-- No documentation found for Nested "VkPipelineStageFlagBits2" "VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT"
 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.
+-- No documentation found for Nested "VkPipelineStageFlagBits2" "VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT"
 pattern PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT = PipelineStageFlagBits2 0x0000002000000000
 
--- | 'PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT' is equivalent to
--- specifying all supported
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-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_EXT'
---
--- -   'PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT'
---
--- -   'PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI'
+-- No documentation found for Nested "VkPipelineStageFlagBits2" "VK_PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT"
 pattern PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT = PipelineStageFlagBits2 0x0000004000000000
 
--- | 'PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV' specifies the stage of the
--- pipeline where
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#opticalflow-operations optical flow operation>
--- are performed.
+-- No documentation found for Nested "VkPipelineStageFlagBits2" "VK_PIPELINE_STAGE_2_MEMORY_DECOMPRESSION_BIT_EXT"
+pattern PIPELINE_STAGE_2_MEMORY_DECOMPRESSION_BIT_EXT = PipelineStageFlagBits2 0x0000200000000000
+
+-- No documentation found for Nested "VkPipelineStageFlagBits2" "VK_PIPELINE_STAGE_2_COPY_INDIRECT_BIT_KHR"
+pattern PIPELINE_STAGE_2_COPY_INDIRECT_BIT_KHR = PipelineStageFlagBits2 0x0000400000000000
+
+-- No documentation found for Nested "VkPipelineStageFlagBits2" "VK_PIPELINE_STAGE_2_DATA_GRAPH_BIT_ARM"
+pattern PIPELINE_STAGE_2_DATA_GRAPH_BIT_ARM = PipelineStageFlagBits2 0x0000040000000000
+
+-- No documentation found for Nested "VkPipelineStageFlagBits2" "VK_PIPELINE_STAGE_2_CONVERT_COOPERATIVE_VECTOR_MATRIX_BIT_NV"
+pattern PIPELINE_STAGE_2_CONVERT_COOPERATIVE_VECTOR_MATRIX_BIT_NV = PipelineStageFlagBits2 0x0000100000000000
+
+-- No documentation found for Nested "VkPipelineStageFlagBits2" "VK_PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV"
 pattern PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV = PipelineStageFlagBits2 0x0000000020000000
 
--- | 'PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI' specifies the
--- cluster culling shader stage.
+-- No documentation found for Nested "VkPipelineStageFlagBits2" "VK_PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI"
 pattern PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI = PipelineStageFlagBits2 0x0000020000000000
 
--- | 'PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT' specifies the execution of
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#micromap micromap commands>.
+-- No documentation found for Nested "VkPipelineStageFlagBits2" "VK_PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT"
 pattern PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT = PipelineStageFlagBits2 0x0000000040000000
 
--- | 'PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR' specifies the
--- execution of
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#acceleration-structure-copying acceleration structure copy commands>.
+-- No documentation found for Nested "VkPipelineStageFlagBits2" "VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR"
 pattern PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR = PipelineStageFlagBits2 0x0000000010000000
 
--- | '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.
+-- No documentation found for Nested "VkPipelineStageFlagBits2" "VK_PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI"
 pattern PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI = PipelineStageFlagBits2 0x0000010000000000
 
--- | 'PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI' specifies the subpass
--- shading shader stage.
+-- No documentation found for Nested "VkPipelineStageFlagBits2" "VK_PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI"
 pattern PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI = PipelineStageFlagBits2 0x0000008000000000
 
--- | 'PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT' specifies the mesh shader stage.
+-- No documentation found for Nested "VkPipelineStageFlagBits2" "VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT"
 pattern PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT = PipelineStageFlagBits2 0x0000000000100000
 
--- | 'PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT' specifies the task shader stage.
+-- No documentation found for Nested "VkPipelineStageFlagBits2" "VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT"
 pattern PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT = 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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#fragmentdensitymapops generate the fragment areas>.
+-- No documentation found for Nested "VkPipelineStageFlagBits2" "VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT"
 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.
+-- No documentation found for Nested "VkPipelineStageFlagBits2" "VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR"
 pattern PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR = PipelineStageFlagBits2 0x0000000000200000
 
--- | 'PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR' specifies the
--- execution of
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#acceleration-structure acceleration structure commands>
--- or
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#acceleration-structure-copying acceleration structure copy commands>.
+-- No documentation found for Nested "VkPipelineStageFlagBits2" "VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR"
 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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment>
--- or
--- <https://registry.khronos.org/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.
+-- No documentation found for Nested "VkPipelineStageFlagBits2" "VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"
 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
+-- No documentation found for Nested "VkPipelineStageFlagBits2" "VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_EXT"
+pattern PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_EXT = PipelineStageFlagBits2 0x0000000000020000
 
--- | 'PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT' specifies the stage of
--- the pipeline where the predicate of conditional rendering is consumed.
+-- No documentation found for Nested "VkPipelineStageFlagBits2" "VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT"
 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.
+-- No documentation found for Nested "VkPipelineStageFlagBits2" "VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT"
 pattern PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT = PipelineStageFlagBits2 0x0000000001000000
 
 conNamePipelineStageFlagBits2 :: String
@@ -582,6 +575,22 @@
     , "PRE_RASTERIZATION_SHADERS_BIT"
     )
   ,
+    ( PIPELINE_STAGE_2_MEMORY_DECOMPRESSION_BIT_EXT
+    , "MEMORY_DECOMPRESSION_BIT_EXT"
+    )
+  ,
+    ( PIPELINE_STAGE_2_COPY_INDIRECT_BIT_KHR
+    , "COPY_INDIRECT_BIT_KHR"
+    )
+  ,
+    ( PIPELINE_STAGE_2_DATA_GRAPH_BIT_ARM
+    , "DATA_GRAPH_BIT_ARM"
+    )
+  ,
+    ( PIPELINE_STAGE_2_CONVERT_COOPERATIVE_VECTOR_MATRIX_BIT_NV
+    , "CONVERT_COOPERATIVE_VECTOR_MATRIX_BIT_NV"
+    )
+  ,
     ( PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV
     , "OPTICAL_FLOW_BIT_NV"
     )
@@ -630,8 +639,8 @@
     , "FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"
     )
   ,
-    ( PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV
-    , "COMMAND_PREPROCESS_BIT_NV"
+    ( PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_EXT
+    , "COMMAND_PREPROCESS_BIT_EXT"
     )
   ,
     ( PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT
diff --git a/src/Vulkan/Core13/Enums/RenderingFlagBits.hs b/src/Vulkan/Core13/Enums/RenderingFlagBits.hs
--- a/src/Vulkan/Core13/Enums/RenderingFlagBits.hs
+++ b/src/Vulkan/Core13/Enums/RenderingFlagBits.hs
@@ -1,12 +1,13 @@
 {-# 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
+module Vulkan.Core13.Enums.RenderingFlagBits  ( RenderingFlags
                                               , RenderingFlagBits( RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT
                                                                  , RENDERING_SUSPENDING_BIT
                                                                  , RENDERING_RESUMING_BIT
+                                                                 , RENDERING_LOCAL_READ_CONCURRENT_ACCESS_CONTROL_BIT_KHR
+                                                                 , RENDERING_CUSTOM_RESOLVE_BIT_EXT
+                                                                 , RENDERING_FRAGMENT_REGION_BIT_EXT
+                                                                 , RENDERING_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE
                                                                  , RENDERING_CONTENTS_INLINE_BIT_KHR
                                                                  , RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT
                                                                  , ..
@@ -24,18 +25,6 @@
 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
@@ -43,6 +32,54 @@
 --
 -- = Description
 --
+-- -   'RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT' specifies that
+--     contents for the render pass instance will be recorded in secondary
+--     command buffers, and
+--     'Vulkan.Core10.CommandBufferBuilding.cmdExecuteCommands' is the only
+--     valid command in the command buffer until
+--     'Vulkan.Extensions.VK_KHR_maintenance10.cmdEndRendering2KHR' or
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdEndRendering'.
+--     If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-nestedCommandBuffer nestedCommandBuffer>
+--     feature is enabled, the contents /can/ come from both inline and
+--     'Vulkan.Core10.CommandBufferBuilding.cmdExecuteCommands'.
+--
+-- -   'RENDERING_RESUMING_BIT' specifies that the render pass instance is
+--     resuming an earlier suspended render pass instance.
+--
+-- -   'RENDERING_SUSPENDING_BIT' specifies that the render pass instance
+--     will be suspended.
+--
+-- -   'RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT' specifies that
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-legacy-dithering Legacy Dithering>
+--     is enabled for the render pass instance.
+--
+-- -   'RENDERING_CONTENTS_INLINE_BIT_KHR' specifies that contents for the
+--     render pass instance /can/ be recorded inline within the current
+--     command buffer. This /can/ be combined with the
+--     'RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT' bit to allow
+--     contents to be recorded both inline and in secondary command
+--     buffers.
+--
+-- -   'RENDERING_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE' specifies that the
+--     render pass /can/ be used with layered fragment density maps.
+--
+-- -   'RENDERING_LOCAL_READ_CONCURRENT_ACCESS_CONTROL_BIT_KHR' specifies
+--     that
+--     'Vulkan.Extensions.VK_KHR_maintenance10.RENDERING_ATTACHMENT_INPUT_ATTACHMENT_FEEDBACK_BIT_KHR'
+--     will always be specified for any attachment which invokes the
+--     behavior described by
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#rendering-attachment-input-attachment-feedback that flag>.
+--
+-- -   'RENDERING_FRAGMENT_REGION_BIT_EXT' specifies that the render pass
+--     /can/ access samples which are not covered in its
+--     'Vulkan.Core10.FundamentalTypes.SampleMask'.
+--
+-- -   'RENDERING_CUSTOM_RESOLVE_BIT_EXT' specifies that the render pass
+--     contains a custom resolve. When this bit is set,
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     /can/ be called.
+--
 -- 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',
@@ -59,32 +96,31 @@
 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. If the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-nestedCommandBuffer nestedCommandBuffer>
--- feature is enabled, the draw calls /can/ come from both inline and
--- 'Vulkan.Core10.CommandBufferBuilding.cmdExecuteCommands'.
+-- No documentation found for Nested "VkRenderingFlagBits" "VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT"
 pattern RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT = RenderingFlagBits 0x00000001
 
--- | 'RENDERING_SUSPENDING_BIT' specifies that the render pass instance will
--- be suspended.
+-- No documentation found for Nested "VkRenderingFlagBits" "VK_RENDERING_SUSPENDING_BIT"
 pattern RENDERING_SUSPENDING_BIT = RenderingFlagBits 0x00000002
 
--- | 'RENDERING_RESUMING_BIT' specifies that the render pass instance is
--- resuming an earlier suspended render pass instance.
+-- No documentation found for Nested "VkRenderingFlagBits" "VK_RENDERING_RESUMING_BIT"
 pattern RENDERING_RESUMING_BIT = RenderingFlagBits 0x00000004
 
--- | 'RENDERING_CONTENTS_INLINE_BIT_KHR' specifies that draw calls for the
--- render pass instance /can/ be recorded inline within the current command
--- buffer. This /can/ be combined with the
--- 'RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT' bit to allow draw
--- calls to be recorded both inline and in secondary command buffers.
+-- No documentation found for Nested "VkRenderingFlagBits" "VK_RENDERING_LOCAL_READ_CONCURRENT_ACCESS_CONTROL_BIT_KHR"
+pattern RENDERING_LOCAL_READ_CONCURRENT_ACCESS_CONTROL_BIT_KHR = RenderingFlagBits 0x00000100
+
+-- No documentation found for Nested "VkRenderingFlagBits" "VK_RENDERING_CUSTOM_RESOLVE_BIT_EXT"
+pattern RENDERING_CUSTOM_RESOLVE_BIT_EXT = RenderingFlagBits 0x00000080
+
+-- No documentation found for Nested "VkRenderingFlagBits" "VK_RENDERING_FRAGMENT_REGION_BIT_EXT"
+pattern RENDERING_FRAGMENT_REGION_BIT_EXT = RenderingFlagBits 0x00000040
+
+-- No documentation found for Nested "VkRenderingFlagBits" "VK_RENDERING_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE"
+pattern RENDERING_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE = RenderingFlagBits 0x00000020
+
+-- No documentation found for Nested "VkRenderingFlagBits" "VK_RENDERING_CONTENTS_INLINE_BIT_KHR"
 pattern RENDERING_CONTENTS_INLINE_BIT_KHR = RenderingFlagBits 0x00000010
 
--- | 'RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT' specifies that
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-legacy-dithering Legacy Dithering>
--- is enabled for the render pass instance.
+-- No documentation found for Nested "VkRenderingFlagBits" "VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT"
 pattern RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT = RenderingFlagBits 0x00000008
 
 conNameRenderingFlagBits :: String
@@ -101,6 +137,22 @@
     )
   , (RENDERING_SUSPENDING_BIT, "SUSPENDING_BIT")
   , (RENDERING_RESUMING_BIT, "RESUMING_BIT")
+  ,
+    ( RENDERING_LOCAL_READ_CONCURRENT_ACCESS_CONTROL_BIT_KHR
+    , "LOCAL_READ_CONCURRENT_ACCESS_CONTROL_BIT_KHR"
+    )
+  ,
+    ( RENDERING_CUSTOM_RESOLVE_BIT_EXT
+    , "CUSTOM_RESOLVE_BIT_EXT"
+    )
+  ,
+    ( RENDERING_FRAGMENT_REGION_BIT_EXT
+    , "FRAGMENT_REGION_BIT_EXT"
+    )
+  ,
+    ( RENDERING_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE
+    , "PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE"
+    )
   ,
     ( RENDERING_CONTENTS_INLINE_BIT_KHR
     , "CONTENTS_INLINE_BIT_KHR"
diff --git a/src/Vulkan/Core13/Enums/SubmitFlagBits.hs b/src/Vulkan/Core13/Enums/SubmitFlagBits.hs
--- a/src/Vulkan/Core13/Enums/SubmitFlagBits.hs
+++ b/src/Vulkan/Core13/Enums/SubmitFlagBits.hs
@@ -1,7 +1,6 @@
 {-# language CPP #-}
 -- No documentation found for Chapter "SubmitFlagBits"
-module Vulkan.Core13.Enums.SubmitFlagBits  ( pattern SUBMIT_PROTECTED_BIT_KHR
-                                           , SubmitFlags
+module Vulkan.Core13.Enums.SubmitFlagBits  ( SubmitFlags
                                            , SubmitFlagBits( SUBMIT_PROTECTED_BIT
                                                            , ..
                                                            )
@@ -18,14 +17,15 @@
 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
 --
+-- = Description
+--
+-- -   'SUBMIT_PROTECTED_BIT' specifies that this batch is a protected
+--     submission.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_synchronization2 VK_KHR_synchronization2>,
@@ -34,8 +34,7 @@
 newtype SubmitFlagBits = SubmitFlagBits Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'SUBMIT_PROTECTED_BIT' specifies that this batch is a protected
--- submission.
+-- No documentation found for Nested "VkSubmitFlagBits" "VK_SUBMIT_PROTECTED_BIT"
 pattern SUBMIT_PROTECTED_BIT = SubmitFlagBits 0x00000001
 
 conNameSubmitFlagBits :: String
diff --git a/src/Vulkan/Core13/Enums/ToolPurposeFlagBits.hs b/src/Vulkan/Core13/Enums/ToolPurposeFlagBits.hs
--- a/src/Vulkan/Core13/Enums/ToolPurposeFlagBits.hs
+++ b/src/Vulkan/Core13/Enums/ToolPurposeFlagBits.hs
@@ -1,11 +1,6 @@
 {-# 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
+module Vulkan.Core13.Enums.ToolPurposeFlagBits  ( ToolPurposeFlags
                                                 , ToolPurposeFlagBits( TOOL_PURPOSE_VALIDATION_BIT
                                                                      , TOOL_PURPOSE_PROFILING_BIT
                                                                      , TOOL_PURPOSE_TRACING_BIT
@@ -28,31 +23,47 @@
 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
 --
+-- = Description
+--
+-- -   'TOOL_PURPOSE_VALIDATION_BIT' specifies that the tool provides
+--     validation of API usage.
+--
+-- -   'TOOL_PURPOSE_PROFILING_BIT' specifies that the tool provides
+--     profiling of API usage.
+--
+-- -   '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.
+--
+-- -   'TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT' specifies that the tool
+--     provides additional API features\/extensions on top of the
+--     underlying implementation.
+--
+-- -   'TOOL_PURPOSE_MODIFYING_FEATURES_BIT' specifies that the tool
+--     modifies the API features\/limits\/extensions presented to the
+--     application.
+--
+-- -   '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'
+--
+-- -   'TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT' specifies that the tool
+--     consumes
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#debugging-debug-markers debug markers>
+--     or
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#debugging-object-debug-annotation object debug annotation>,
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#debugging-queue-labels queue labels>,
+--     or
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#debugging-command-buffer-labels command buffer labels>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_tooling_info VK_EXT_tooling_info>,
@@ -61,41 +72,25 @@
 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.
+-- No documentation found for Nested "VkToolPurposeFlagBits" "VK_TOOL_PURPOSE_VALIDATION_BIT"
 pattern TOOL_PURPOSE_VALIDATION_BIT = ToolPurposeFlagBits 0x00000001
 
--- | 'TOOL_PURPOSE_PROFILING_BIT' specifies that the tool provides profiling
--- of API usage.
+-- No documentation found for Nested "VkToolPurposeFlagBits" "VK_TOOL_PURPOSE_PROFILING_BIT"
 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.
+-- No documentation found for Nested "VkToolPurposeFlagBits" "VK_TOOL_PURPOSE_TRACING_BIT"
 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.
+-- No documentation found for Nested "VkToolPurposeFlagBits" "VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT"
 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.
+-- No documentation found for Nested "VkToolPurposeFlagBits" "VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT"
 pattern TOOL_PURPOSE_MODIFYING_FEATURES_BIT = ToolPurposeFlagBits 0x00000010
 
--- | 'TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT' specifies that the tool consumes
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#debugging-debug-markers debug markers>
--- or
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#debugging-object-debug-annotation object debug annotation>,
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#debugging-queue-labels queue labels>,
--- or
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#debugging-command-buffer-labels command buffer labels>
+-- No documentation found for Nested "VkToolPurposeFlagBits" "VK_TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT"
 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'
+-- No documentation found for Nested "VkToolPurposeFlagBits" "VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT"
 pattern TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT = ToolPurposeFlagBits 0x00000020
 
 conNameToolPurposeFlagBits :: String
diff --git a/src/Vulkan/Core13/Handles.hs b/src/Vulkan/Core13/Handles.hs
--- a/src/Vulkan/Core13/Handles.hs
+++ b/src/Vulkan/Core13/Handles.hs
@@ -41,13 +41,13 @@
 -- <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.createPrivateDataSlot',
 -- 'Vulkan.Core13.Promoted_From_VK_EXT_private_data.destroyPrivateDataSlot',
--- 'Vulkan.Extensions.VK_EXT_private_data.destroyPrivateDataSlotEXT',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_private_data.destroyPrivateDataSlot',
 -- 'Vulkan.Core13.Promoted_From_VK_EXT_private_data.getPrivateData',
--- 'Vulkan.Extensions.VK_EXT_private_data.getPrivateDataEXT',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_private_data.getPrivateData',
 -- 'Vulkan.Core13.Promoted_From_VK_EXT_private_data.setPrivateData',
--- 'Vulkan.Extensions.VK_EXT_private_data.setPrivateDataEXT'
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_private_data.setPrivateData'
 newtype PrivateDataSlot = PrivateDataSlot Word64
   deriving newtype (Eq, Ord, Storable, Zero)
   deriving anyclass (IsHandle)
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
--- a/src/Vulkan/Core13/Promoted_From_VK_EXT_extended_dynamic_state.hs
+++ b/src/Vulkan/Core13/Promoted_From_VK_EXT_extended_dynamic_state.hs
@@ -73,7 +73,7 @@
 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.GraphicsPipeline (Viewport)
 import Vulkan.Core10.Enums.DynamicState (DynamicState(..))
 foreign import ccall
 #if !defined(SAFE_FOREIGN_CALLS)
@@ -88,12 +88,12 @@
 --
 -- This command sets the cull mode for subsequent drawing commands when
 -- drawing using
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-objects shader objects>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader objects>,
 -- or when the graphics pipeline is created with
 -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CULL_MODE' set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
 -- Otherwise, this state is specified by the
--- 'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo'::@cullMode@
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineRasterizationStateCreateInfo'::@cullMode@
 -- value used to create the currently active pipeline.
 --
 -- == Valid Usage
@@ -129,7 +129,8 @@
 --
 -- -   #VUID-vkCmdSetCullMode-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdSetCullMode-videocoding# This command /must/ only be
 --     called outside of a video coding scope
@@ -148,10 +149,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
 -- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdSetCullMode is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = 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>,
@@ -192,12 +198,12 @@
 --
 -- This command sets the front face orientation for subsequent drawing
 -- commands when drawing using
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-objects shader objects>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader objects>,
 -- or when the graphics pipeline is created with
 -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRONT_FACE' set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
 -- Otherwise, this state is specified by the
--- 'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo'::@frontFace@
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineRasterizationStateCreateInfo'::@frontFace@
 -- value used to create the currently active pipeline.
 --
 -- == Valid Usage
@@ -232,7 +238,8 @@
 --
 -- -   #VUID-vkCmdSetFrontFace-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdSetFrontFace-videocoding# This command /must/ only be
 --     called outside of a video coding scope
@@ -251,10 +258,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
 -- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdSetFrontFace is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = 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>,
@@ -296,13 +308,13 @@
 --
 -- This command sets the primitive topology for subsequent drawing commands
 -- when drawing using
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-objects shader objects>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader objects>,
 -- or when the graphics pipeline is created with
 -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY' set
 -- in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
 -- Otherwise, this state is specified by the
--- 'Vulkan.Core10.Pipeline.PipelineInputAssemblyStateCreateInfo'::@topology@
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineInputAssemblyStateCreateInfo'::@topology@
 -- value used to create the currently active pipeline.
 --
 -- == Valid Usage
@@ -339,7 +351,8 @@
 --
 -- -   #VUID-vkCmdSetPrimitiveTopology-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdSetPrimitiveTopology-videocoding# This command /must/
 --     only be called outside of a video coding scope
@@ -358,10 +371,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
 -- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdSetPrimitiveTopology is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = 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>,
@@ -402,13 +420,13 @@
 --
 -- This command sets the viewport count and viewports state for subsequent
 -- drawing commands when drawing using
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-objects shader objects>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader objects>,
 -- or when the graphics pipeline is created with
 -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT' set
 -- in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
 -- Otherwise, this state is specified by the corresponding
--- 'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@viewportCount@
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineViewportStateCreateInfo'::@viewportCount@
 -- and @pViewports@ values used to create the currently active pipeline.
 --
 -- == Valid Usage
@@ -435,7 +453,7 @@
 --     inclusive
 --
 -- -   #VUID-vkCmdSetViewportWithCount-viewportCount-03395# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-multiViewport multiViewport>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-multiViewport multiViewport>
 --     feature is not enabled, @viewportCount@ /must/ be @1@
 --
 -- -   #VUID-vkCmdSetViewportWithCount-commandBuffer-04819# @commandBuffer@
@@ -451,7 +469,7 @@
 --
 -- -   #VUID-vkCmdSetViewportWithCount-pViewports-parameter# @pViewports@
 --     /must/ be a valid pointer to an array of @viewportCount@ valid
---     'Vulkan.Core10.Pipeline.Viewport' structures
+--     'Vulkan.Core10.GraphicsPipeline.Viewport' structures
 --
 -- -   #VUID-vkCmdSetViewportWithCount-commandBuffer-recording#
 --     @commandBuffer@ /must/ be in the
@@ -459,7 +477,8 @@
 --
 -- -   #VUID-vkCmdSetViewportWithCount-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdSetViewportWithCount-videocoding# This command /must/
 --     only be called outside of a video coding scope
@@ -481,16 +500,22 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
 -- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdSetViewportWithCount is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = 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_EXT_shader_object VK_EXT_shader_object>,
 -- <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'
+-- 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'Vulkan.Core10.GraphicsPipeline.Viewport'
 cmdSetViewportWithCount :: forall io
                          . (MonadIO io)
                         => -- | @commandBuffer@ is the command buffer into which the command will be
@@ -527,13 +552,13 @@
 --
 -- This command sets the scissor count and scissor rectangular bounds state
 -- for subsequent drawing commands when drawing using
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-objects shader objects>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader objects>,
 -- or when the graphics pipeline is created with
 -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT' set
 -- in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
 -- Otherwise, this state is specified by the corresponding
--- 'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@scissorCount@
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineViewportStateCreateInfo'::@scissorCount@
 -- and @pScissors@ values used to create the currently active pipeline.
 --
 -- == Valid Usage
@@ -560,7 +585,7 @@
 --     inclusive
 --
 -- -   #VUID-vkCmdSetScissorWithCount-scissorCount-03398# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-multiViewport multiViewport>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-multiViewport multiViewport>
 --     feature is not enabled, @scissorCount@ /must/ be @1@
 --
 -- -   #VUID-vkCmdSetScissorWithCount-x-03399# The @x@ and @y@ members of
@@ -596,7 +621,8 @@
 --
 -- -   #VUID-vkCmdSetScissorWithCount-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdSetScissorWithCount-videocoding# This command /must/ only
 --     be called outside of a video coding scope
@@ -618,10 +644,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
 -- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdSetScissorWithCount is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = 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>,
@@ -675,7 +706,7 @@
 -- 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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -685,21 +716,21 @@
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input-extraction filled with (0,0,1)>.
 --
 -- This command also
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-dynamic-state dynamically sets>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-dynamic-state dynamically sets>
 -- the byte strides between consecutive elements within buffer
 -- @pBuffers@[i] to the corresponding @pStrides@[i] value when drawing
 -- using
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-objects shader objects>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader objects>,
 -- or when the graphics pipeline is created with
 -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE'
 -- set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
 -- Otherwise, strides are specified by the
--- 'Vulkan.Core10.Pipeline.VertexInputBindingDescription'::@stride@ values
--- used to create the currently active pipeline.
+-- 'Vulkan.Core10.GraphicsPipeline.VertexInputBindingDescription'::@stride@
+-- values used to create the currently active pipeline.
 --
 -- If drawing using
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-objects shader objects>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader objects>
 -- or if the bound pipeline state object was also created with the
 -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
 -- dynamic state enabled then
@@ -714,6 +745,22 @@
 --
 -- == Valid Usage
 --
+-- -   #VUID-vkCmdBindVertexBuffers2-None-08971# At least one of the
+--     following /must/ be true:
+--
+--     -   the
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extendedDynamicState extendedDynamicState>
+--         feature is enabled
+--
+--     -   the
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject>
+--         feature is enabled
+--
+--     -   the value of
+--         'Vulkan.Core10.DeviceInitialization.ApplicationInfo'::@apiVersion@
+--         used to create the 'Vulkan.Core10.Handles.Instance' parent of
+--         @commandBuffer@ is greater than or equal to Version 1.3
+--
 -- -   #VUID-vkCmdBindVertexBuffers2-firstBinding-03355# @firstBinding@
 --     /must/ be less than
 --     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxVertexInputBindings@
@@ -734,14 +781,14 @@
 -- -   #VUID-vkCmdBindVertexBuffers2-pBuffers-03359# All elements of
 --     @pBuffers@ /must/ have been created with the
 --     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_VERTEX_BUFFER_BIT'
---     flag
+--     usage flag set
 --
 -- -   #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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-nullDescriptor nullDescriptor>
 --     feature is not enabled, all elements of @pBuffers@ /must/ not be
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE'
 --
@@ -758,9 +805,9 @@
 --     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@
+--     'Vulkan.Core10.GraphicsPipeline.VertexInputAttributeDescription'::@offset@
 --     plus
---     'Vulkan.Core10.Pipeline.VertexInputAttributeDescription'::@format@
+--     'Vulkan.Core10.GraphicsPipeline.VertexInputAttributeDescription'::@format@
 --     size
 --
 -- == Valid Usage (Implicit)
@@ -792,7 +839,8 @@
 --
 -- -   #VUID-vkCmdBindVertexBuffers2-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdBindVertexBuffers2-videocoding# This command /must/ only
 --     be called outside of a video coding scope
@@ -820,10 +868,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
 -- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdBindVertexBuffers2 is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = 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>,
@@ -909,13 +962,13 @@
 --
 -- This command sets the depth test enable for subsequent drawing commands
 -- when drawing using
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-objects shader objects>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader objects>,
 -- or when the graphics pipeline is created with
 -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_TEST_ENABLE' set
 -- in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
 -- Otherwise, this state is specified by the
--- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo'::@depthTestEnable@
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDepthStencilStateCreateInfo'::@depthTestEnable@
 -- value used to create the currently active pipeline.
 --
 -- == Valid Usage
@@ -948,7 +1001,8 @@
 --
 -- -   #VUID-vkCmdSetDepthTestEnable-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdSetDepthTestEnable-videocoding# This command /must/ only
 --     be called outside of a video coding scope
@@ -967,10 +1021,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
 -- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdSetDepthTestEnable is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = 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>,
@@ -1011,13 +1070,13 @@
 --
 -- This command sets the depth write enable for subsequent drawing commands
 -- when drawing using
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-objects shader objects>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader objects>,
 -- or when the graphics pipeline is created with
 -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE' set
 -- in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
 -- Otherwise, this state is specified by the
--- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo'::@depthWriteEnable@
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDepthStencilStateCreateInfo'::@depthWriteEnable@
 -- value used to create the currently active pipeline.
 --
 -- == Valid Usage
@@ -1050,7 +1109,8 @@
 --
 -- -   #VUID-vkCmdSetDepthWriteEnable-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdSetDepthWriteEnable-videocoding# This command /must/ only
 --     be called outside of a video coding scope
@@ -1069,10 +1129,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
 -- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdSetDepthWriteEnable is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = 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>,
@@ -1113,12 +1178,12 @@
 --
 -- This command sets the depth comparison operator for subsequent drawing
 -- commands when drawing using
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-objects shader objects>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader objects>,
 -- or when the graphics pipeline is created with
 -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_COMPARE_OP' set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
 -- Otherwise, this state is specified by the
--- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo'::@depthCompareOp@
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDepthStencilStateCreateInfo'::@depthCompareOp@
 -- value used to create the currently active pipeline.
 --
 -- == Valid Usage
@@ -1155,7 +1220,8 @@
 --
 -- -   #VUID-vkCmdSetDepthCompareOp-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdSetDepthCompareOp-videocoding# This command /must/ only
 --     be called outside of a video coding scope
@@ -1174,10 +1240,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
 -- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdSetDepthCompareOp is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = 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>,
@@ -1192,9 +1263,9 @@
                         CommandBuffer
                      -> -- | @depthCompareOp@ is a 'Vulkan.Core10.Enums.CompareOp.CompareOp' value
                         -- specifying the comparison operator used for the
-                        -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-depth-comparison Depth Comparison>
+                        -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#fragops-depth-comparison Depth Comparison>
                         -- step of the
-                        -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-depth depth test>.
+                        -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#fragops-depth depth test>.
                         ("depthCompareOp" ::: CompareOp)
                      -> io ()
 cmdSetDepthCompareOp commandBuffer depthCompareOp = liftIO $ do
@@ -1222,13 +1293,13 @@
 --
 -- This command sets the depth bounds enable for subsequent drawing
 -- commands when drawing using
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-objects shader objects>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader objects>,
 -- or when the graphics pipeline is created with
 -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE'
 -- set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
 -- Otherwise, this state is specified by the
--- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo'::@depthBoundsTestEnable@
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDepthStencilStateCreateInfo'::@depthBoundsTestEnable@
 -- value used to create the currently active pipeline.
 --
 -- == Valid Usage
@@ -1250,7 +1321,7 @@
 --         @commandBuffer@ is greater than or equal to Version 1.3
 --
 -- -   #VUID-vkCmdSetDepthBoundsTestEnable-depthBounds-10010# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-depthBounds depthBounds>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-depthBounds depthBounds>
 --     feature is not enabled, @depthBoundsTestEnable@ /must/ be
 --     'Vulkan.Core10.FundamentalTypes.FALSE'
 --
@@ -1266,7 +1337,8 @@
 --
 -- -   #VUID-vkCmdSetDepthBoundsTestEnable-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdSetDepthBoundsTestEnable-videocoding# This command /must/
 --     only be called outside of a video coding scope
@@ -1285,10 +1357,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
 -- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdSetDepthBoundsTestEnable is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = 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>,
@@ -1329,13 +1406,13 @@
 --
 -- This command sets the stencil test enable for subsequent drawing
 -- commands when drawing using
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-objects shader objects>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader objects>,
 -- or when the graphics pipeline is created with
 -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_TEST_ENABLE' set
 -- in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
 -- Otherwise, this state is specified by the
--- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo'::@stencilTestEnable@
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDepthStencilStateCreateInfo'::@stencilTestEnable@
 -- value used to create the currently active pipeline.
 --
 -- == Valid Usage
@@ -1368,7 +1445,8 @@
 --
 -- -   #VUID-vkCmdSetStencilTestEnable-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdSetStencilTestEnable-videocoding# This command /must/
 --     only be called outside of a video coding scope
@@ -1387,10 +1465,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
 -- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdSetStencilTestEnable is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = 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>,
@@ -1431,12 +1514,12 @@
 --
 -- This command sets the stencil operation for subsequent drawing commands
 -- when when drawing using
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-objects shader objects>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader objects>,
 -- or when the graphics pipeline is created with
 -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_OP' set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
 -- Otherwise, this state is specified by the corresponding
--- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo'::@failOp@,
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDepthStencilStateCreateInfo'::@failOp@,
 -- @passOp@, @depthFailOp@, and @compareOp@ values used to create the
 -- currently active pipeline, for both front and back faces.
 --
@@ -1488,7 +1571,8 @@
 --
 -- -   #VUID-vkCmdSetStencilOp-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdSetStencilOp-videocoding# This command /must/ only be
 --     called outside of a video coding scope
@@ -1507,9 +1591,14 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
 -- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdSetStencilOp is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
 --
 -- = See Also
 --
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
--- a/src/Vulkan/Core13/Promoted_From_VK_EXT_extended_dynamic_state2.hs
+++ b/src/Vulkan/Core13/Promoted_From_VK_EXT_extended_dynamic_state2.hs
@@ -43,13 +43,13 @@
 --
 -- This command sets the discard enable for subsequent drawing commands
 -- when drawing using
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-objects shader objects>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader objects>,
 -- or when the graphics pipeline is created with
 -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE'
 -- set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
 -- Otherwise, this state is specified by the
--- 'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo'::@rasterizerDiscardEnable@
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineRasterizationStateCreateInfo'::@rasterizerDiscardEnable@
 -- value used to create the currently active pipeline.
 --
 -- == Valid Usage
@@ -82,7 +82,8 @@
 --
 -- -   #VUID-vkCmdSetRasterizerDiscardEnable-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdSetRasterizerDiscardEnable-videocoding# This command
 --     /must/ only be called outside of a video coding scope
@@ -101,10 +102,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
 -- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdSetRasterizerDiscardEnable is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = 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>,
@@ -147,13 +153,13 @@
 --
 -- This command sets the depth bias enable for subsequent drawing commands
 -- when drawing using
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-objects shader objects>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader objects>,
 -- or when the graphics pipeline is created with
 -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE' set
 -- in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
 -- Otherwise, this state is specified by the
--- 'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo'::@depthBiasEnable@
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineRasterizationStateCreateInfo'::@depthBiasEnable@
 -- value used to create the currently active pipeline.
 --
 -- == Valid Usage
@@ -186,7 +192,8 @@
 --
 -- -   #VUID-vkCmdSetDepthBiasEnable-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdSetDepthBiasEnable-videocoding# This command /must/ only
 --     be called outside of a video coding scope
@@ -205,10 +212,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
 -- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdSetDepthBiasEnable is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = 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>,
@@ -249,13 +261,13 @@
 --
 -- This command sets the primitive restart enable for subsequent drawing
 -- commands when drawing using
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-objects shader objects>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader objects>,
 -- or when the graphics pipeline is created with
 -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE'
 -- set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
 -- Otherwise, this state is specified by the
--- 'Vulkan.Core10.Pipeline.PipelineInputAssemblyStateCreateInfo'::@primitiveRestartEnable@
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineInputAssemblyStateCreateInfo'::@primitiveRestartEnable@
 -- value used to create the currently active pipeline.
 --
 -- == Valid Usage
@@ -288,7 +300,8 @@
 --
 -- -   #VUID-vkCmdSetPrimitiveRestartEnable-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdSetPrimitiveRestartEnable-videocoding# This command
 --     /must/ only be called outside of a video coding scope
@@ -307,10 +320,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
 -- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdSetPrimitiveRestartEnable is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = 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>,
@@ -326,7 +344,7 @@
                              -> -- | @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@
+                                -- 'Vulkan.Core10.GraphicsPipeline.PipelineInputAssemblyStateCreateInfo'::@primitiveRestartEnable@
                                 ("primitiveRestartEnable" ::: Bool)
                              -> io ()
 cmdSetPrimitiveRestartEnable commandBuffer primitiveRestartEnable = liftIO $ do
diff --git a/src/Vulkan/Core13/Promoted_From_VK_EXT_image_robustness.hs b/src/Vulkan/Core13/Promoted_From_VK_EXT_image_robustness.hs
--- a/src/Vulkan/Core13/Promoted_From_VK_EXT_image_robustness.hs
+++ b/src/Vulkan/Core13/Promoted_From_VK_EXT_image_robustness.hs
@@ -41,12 +41,22 @@
 -- 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.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceImageRobustnessFeatures', it /must/ add an instance of
+-- the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_image_robustness VK_EXT_image_robustness>,
@@ -54,15 +64,9 @@
 -- '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://registry.khronos.org/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://registry.khronos.org/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.
+  { -- | #extension-features-robustImageAccess# @robustImageAccess@ enables
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-robust-image-access>
+    -- guarantees for shader image accesses.
     robustImageAccess :: Bool }
   deriving (Typeable, Eq)
 #if defined(GENERIC_INSTANCES)
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
--- a/src/Vulkan/Core13/Promoted_From_VK_EXT_inline_uniform_block.hs
+++ b/src/Vulkan/Core13/Promoted_From_VK_EXT_inline_uniform_block.hs
@@ -50,12 +50,22 @@
 -- 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.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceInlineUniformBlockFeatures', it /must/ add an instance of
+-- the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = 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>,
@@ -135,8 +145,12 @@
 -- it is filled in with each corresponding implementation-dependent
 -- property.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
 -- = 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>,
@@ -145,7 +159,7 @@
 data PhysicalDeviceInlineUniformBlockProperties = PhysicalDeviceInlineUniformBlockProperties
   { -- | #extension-limits-maxInlineUniformBlockSize# @maxInlineUniformBlockSize@
     -- is the maximum size in bytes of an
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-inlineuniformblock inline uniform block>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-inlineuniformblock inline uniform block>
     -- binding.
     maxInlineUniformBlockSize :: Word32
   , -- | #extension-limits-maxPerStageDescriptorInlineUniformBlocks#
@@ -246,8 +260,12 @@
 -- | VkWriteDescriptorSetInlineUniformBlock - Structure specifying inline
 -- uniform block data
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.DescriptorSet.WriteDescriptorSet'
+--
 -- = 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>,
@@ -316,7 +334,11 @@
 -- maximum number of inline uniform block bindings of a newly created
 -- descriptor pool
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.DescriptorSet.DescriptorPoolCreateInfo'
 --
 -- = See Also
 --
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
--- 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
@@ -52,12 +52,21 @@
 -- 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.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDevicePipelineCreationCacheControlFeatures', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
 --
 -- = See Also
 --
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
--- a/src/Vulkan/Core13/Promoted_From_VK_EXT_pipeline_creation_feedback.hs
+++ b/src/Vulkan/Core13/Promoted_From_VK_EXT_pipeline_creation_feedback.hs
@@ -118,14 +118,17 @@
 -- 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.Core10.GraphicsPipeline.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
+-- or
+-- 'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'::@pStages@.
+-- When chained to
+-- 'Vulkan.Core10.ComputePipeline.ComputePipelineCreateInfo', the first
 -- element of @pPipelineStageCreationFeedbacks@ corresponds to
--- 'Vulkan.Core10.Pipeline.ComputePipelineCreateInfo'::@stage@.
+-- 'Vulkan.Core10.ComputePipeline.ComputePipelineCreateInfo'::@stage@.
 --
 -- == Valid Usage (Implicit)
 --
@@ -143,12 +146,28 @@
 --     array of @pipelineStageCreationFeedbackCount@
 --     'PipelineCreationFeedback' structures
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.ComputePipeline.ComputePipelineCreateInfo'
+--
+--     -   'Vulkan.Extensions.VK_ARM_data_graph.DataGraphPipelineCreateInfoARM'
+--
+--     -   'Vulkan.Extensions.VK_AMDX_shader_enqueue.ExecutionGraphPipelineCreateInfoAMDX'
+--
+--     -   'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'
+--
+--     -   'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingPipelineCreateInfoKHR'
+--
+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.RayTracingPipelineCreateInfoNV'
+--
 -- = 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',
+-- 'Vulkan.Core10.ComputePipeline.ComputePipelineCreateInfo',
+-- 'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo',
 -- 'PipelineCreationFeedback',
 -- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingPipelineCreateInfoKHR',
 -- 'Vulkan.Extensions.VK_NV_ray_tracing.RayTracingPipelineCreateInfoNV',
diff --git a/src/Vulkan/Core13/Promoted_From_VK_EXT_private_data.hs b/src/Vulkan/Core13/Promoted_From_VK_EXT_private_data.hs
--- a/src/Vulkan/Core13/Promoted_From_VK_EXT_private_data.hs
+++ b/src/Vulkan/Core13/Promoted_From_VK_EXT_private_data.hs
@@ -90,7 +90,7 @@
 -- == Valid Usage
 --
 -- -   #VUID-vkCreatePrivateDataSlot-privateData-04564# The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-privateData privateData>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-privateData privateData>
 --     feature /must/ be enabled
 --
 -- == Valid Usage (Implicit)
@@ -110,6 +110,9 @@
 --     @pPrivateDataSlot@ /must/ be a valid pointer to a
 --     'Vulkan.Core13.Handles.PrivateDataSlot' handle
 --
+-- -   #VUID-vkCreatePrivateDataSlot-device-queuecount# The device /must/
+--     have been created with at least @1@ queue
+--
 -- == Return Codes
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
@@ -120,6 +123,10 @@
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_private_data VK_EXT_private_data>,
@@ -135,7 +142,7 @@
                       -> -- | @pCreateInfo@ is a pointer to a 'PrivateDataSlotCreateInfo'
                          PrivateDataSlotCreateInfo
                       -> -- | @pAllocator@ controls host memory allocation as described in the
-                         -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                         -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
                          -- chapter.
                          ("allocator" ::: Maybe AllocationCallbacks)
                       -> io (PrivateDataSlot)
@@ -229,7 +236,7 @@
                        -> -- | @privateDataSlot@ is the private data slot to destroy.
                           PrivateDataSlot
                        -> -- | @pAllocator@ controls host memory allocation as described in the
-                          -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                          -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
                           -- chapter.
                           ("allocator" ::: Maybe AllocationCallbacks)
                        -> io ()
@@ -269,6 +276,10 @@
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_private_data VK_EXT_private_data>,
@@ -409,8 +420,12 @@
 
 -- | VkDevicePrivateDataCreateInfo - Reserve private data slots
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_private_data VK_EXT_private_data>,
@@ -468,8 +483,7 @@
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
 -- 'Vulkan.Core13.Enums.PrivateDataSlotCreateFlags.PrivateDataSlotCreateFlags',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'createPrivateDataSlot',
--- 'Vulkan.Extensions.VK_EXT_private_data.createPrivateDataSlotEXT'
+-- 'createPrivateDataSlot', 'createPrivateDataSlot'
 data PrivateDataSlotCreateInfo = PrivateDataSlotCreateInfo
   { -- | @flags@ is reserved for future use.
     --
@@ -529,12 +543,22 @@
 -- 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.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDevicePrivateDataFeatures', it /must/ add an instance of the
+-- structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_private_data VK_EXT_private_data>,
@@ -544,7 +568,7 @@
 data PhysicalDevicePrivateDataFeatures = PhysicalDevicePrivateDataFeatures
   { -- | #extension-features-privateData# @privateData@ indicates whether the
     -- implementation supports private data. See
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#private-data Private Data>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#private-data Private Data>.
     privateData :: Bool }
   deriving (Typeable, Eq)
 #if defined(GENERIC_INSTANCES)
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
--- 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
@@ -42,12 +42,21 @@
 -- 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.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceShaderDemoteToHelperInvocationFeatures', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
 --
 -- = See Also
 --
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
--- a/src/Vulkan/Core13/Promoted_From_VK_EXT_subgroup_size_control.hs
+++ b/src/Vulkan/Core13/Promoted_From_VK_EXT_subgroup_size_control.hs
@@ -52,9 +52,13 @@
 -- 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.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceSubgroupSizeControlFeatures', it /must/ add an instance
+-- of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
 -- The
 -- 'Vulkan.Extensions.VK_EXT_subgroup_size_control.PhysicalDeviceSubgroupSizeControlFeaturesEXT'
@@ -63,7 +67,7 @@
 -- the features structure but applications may assume that both
 -- @subgroupSizeControl@ and @computeFullSubgroups@ are supported if the
 -- extension is supported. (See also the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-requirements Feature Requirements>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -76,8 +80,14 @@
 --
 -- Vulkan 1.3 implementations always support the features structure.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = 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>,
@@ -158,11 +168,15 @@
 -- If
 -- 'Vulkan.Core11.Originally_Based_On_VK_KHR_subgroup.PhysicalDeviceSubgroupProperties'::@supportedOperations@
 -- includes
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-subgroup-quad >,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-subgroup-quad >,
 -- @minSubgroupSize@ /must/ be greater than or equal to 4.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
 -- = 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>,
@@ -177,7 +191,7 @@
     -- '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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-subgroupSize subgroupSize>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-subgroupSize subgroupSize>.
     minSubgroupSize :: Word32
   , -- | #extension-limits-maxSubgroupSize# @maxSubgroupSize@ is the maximum
     -- subgroup size supported by this device. @maxSubgroupSize@ is at least
@@ -186,7 +200,7 @@
     -- '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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-subgroupSize subgroupSize>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-subgroupSize subgroupSize>.
     maxSubgroupSize :: Word32
   , -- | #extension-limits-maxComputeWorkgroupSubgroups#
     -- @maxComputeWorkgroupSubgroups@ is the maximum number of subgroups
@@ -258,9 +272,9 @@
 --
 -- 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.
+-- 'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo', it
+-- specifies that the pipeline shader stage being compiled has a required
+-- subgroup size.
 --
 -- If a
 -- 'Vulkan.Extensions.VK_EXT_shader_object.ShaderRequiredSubgroupSizeCreateInfoEXT'
@@ -268,10 +282,17 @@
 -- 'Vulkan.Extensions.VK_EXT_shader_object.ShaderCreateInfoEXT', it
 -- specifies that the shader being compiled has a required subgroup size.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo'
+--
+--     -   'Vulkan.Extensions.VK_EXT_shader_object.ShaderCreateInfoEXT'
+--
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_shader_object VK_EXT_shader_object>,
 -- <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'
@@ -285,11 +306,11 @@
     --
     -- #VUID-VkPipelineShaderStageRequiredSubgroupSizeCreateInfo-requiredSubgroupSize-02761#
     -- @requiredSubgroupSize@ /must/ be greater or equal to
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-minSubgroupSize minSubgroupSize>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-minSubgroupSize minSubgroupSize>
     --
     -- #VUID-VkPipelineShaderStageRequiredSubgroupSizeCreateInfo-requiredSubgroupSize-02762#
     -- @requiredSubgroupSize@ /must/ be less than or equal to
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxSubgroupSize maxSubgroupSize>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxSubgroupSize maxSubgroupSize>
     requiredSubgroupSize :: Word32 }
   deriving (Typeable, Eq)
 #if defined(GENERIC_INSTANCES)
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
--- a/src/Vulkan/Core13/Promoted_From_VK_EXT_texel_buffer_alignment.hs
+++ b/src/Vulkan/Core13/Promoted_From_VK_EXT_texel_buffer_alignment.hs
@@ -52,12 +52,16 @@
 -- single component of the format is used instead.
 --
 -- These limits /must/ not advertise a larger alignment than the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-required required>
+-- <https://registry.khronos.org/vulkan/specs/latest/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)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
 --
 -- = See Also
 --
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
--- 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
@@ -43,11 +43,21 @@
 -- 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.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceTextureCompressionASTCHDRFeatures', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Core13/Promoted_From_VK_EXT_tooling_info.hs b/src/Vulkan/Core13/Promoted_From_VK_EXT_tooling_info.hs
--- a/src/Vulkan/Core13/Promoted_From_VK_EXT_tooling_info.hs
+++ b/src/Vulkan/Core13/Promoted_From_VK_EXT_tooling_info.hs
@@ -110,14 +110,18 @@
 --
 -- [<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'
 --
+--     -   '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_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_tooling_info VK_EXT_tooling_info>,
@@ -165,8 +169,7 @@
 -- <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'
+-- 'getPhysicalDeviceToolProperties', 'getPhysicalDeviceToolProperties'
 data PhysicalDeviceToolProperties = PhysicalDeviceToolProperties
   { -- | @name@ is a null-terminated UTF-8 string containing the name of the
     -- tool.
diff --git a/src/Vulkan/Core13/Promoted_From_VK_KHR_copy_commands2.hs b/src/Vulkan/Core13/Promoted_From_VK_KHR_copy_commands2.hs
--- a/src/Vulkan/Core13/Promoted_From_VK_KHR_copy_commands2.hs
+++ b/src/Vulkan/Core13/Promoted_From_VK_KHR_copy_commands2.hs
@@ -90,6 +90,7 @@
 import Vulkan.CStruct.Extends (PeekChain(..))
 import Vulkan.CStruct.Extends (PokeChain)
 import Vulkan.CStruct.Extends (PokeChain(..))
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance10 (ResolveImageModeInfoKHR)
 import Vulkan.CStruct.Extends (SomeStruct)
 import Vulkan.Core10.Enums.StructureType (StructureType)
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_BLIT_IMAGE_INFO_2))
@@ -153,12 +154,17 @@
 --
 -- -   #VUID-vkCmdCopyBuffer2-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support transfer, graphics, or compute
---     operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT',
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT', or
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_TRANSFER_BIT' operations
 --
 -- -   #VUID-vkCmdCopyBuffer2-renderpass# This command /must/ only be
 --     called outside of a render pass instance
 --
+-- -   #VUID-vkCmdCopyBuffer2-suspended# This command /must/ not be called
+--     between suspended render pass instances
+--
 -- -   #VUID-vkCmdCopyBuffer2-videocoding# This command /must/ only be
 --     called outside of a video coding scope
 --
@@ -176,11 +182,16 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | Transfer                                                                                                              | Action                                                                                                                                 |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | Graphics                                                                                                              |                                                                                                                                        |
--- |                                                                                                                            |                                                                                                                        |                                                                                                                             | Compute                                                                                                               |                                                                                                                                        |
+-- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | VK_QUEUE_GRAPHICS_BIT                                                                                                 |                                                                                                                                        |
+-- |                                                                                                                            |                                                                                                                        |                                                                                                                             | VK_QUEUE_TRANSFER_BIT                                                                                                 |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdCopyBuffer2 is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_copy_commands2 VK_KHR_copy_commands2>,
@@ -240,6 +251,156 @@
 --     <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-vkCmdCopyImage2-commandBuffer-10217# 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', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance10 maintenance10>
+--     feature is not enabled, for each element of
+--     @pCopyImageInfo->pRegions@, where the @aspectMask@ member of
+--     @srcSubresource@ is
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT',
+--     the @aspectMask@ of @dstSubresource@ /must/ not be
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' or
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
+--
+-- -   #VUID-vkCmdCopyImage2-commandBuffer-11782# 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' but does
+--     support 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', and
+--     in any element of @pCopyImageInfo->pRegions@ the @aspectMask@ member
+--     of @srcSubresource@ is
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT' and
+--     the @aspectMask@ of @dstSubresource@ is
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT',
+--     then 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_DEPTH_COPY_ON_COMPUTE_QUEUE_BIT_KHR'
+--
+-- -   #VUID-vkCmdCopyImage2-commandBuffer-11783# 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' and
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', but does
+--     support 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_TRANSFER_BIT', and
+--     in any element of @pCopyImageInfo->pRegions@ the @aspectMask@ member
+--     of @srcSubresource@ is
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT' and
+--     the @aspectMask@ of @dstSubresource@ is
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT',
+--     then 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_DEPTH_COPY_ON_TRANSFER_QUEUE_BIT_KHR'
+--
+-- -   #VUID-vkCmdCopyImage2-commandBuffer-11784# 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' but does
+--     support 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', and
+--     in any element of @pCopyImageInfo->pRegions@ the @aspectMask@ member
+--     of @srcSubresource@ is
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT' and
+--     the @aspectMask@ of @dstSubresource@ is
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT',
+--     then 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_STENCIL_COPY_ON_COMPUTE_QUEUE_BIT_KHR'
+--
+-- -   #VUID-vkCmdCopyImage2-commandBuffer-11785# 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' and
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', but does
+--     support 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_TRANSFER_BIT', and
+--     in any element of @pCopyImageInfo->pRegions@ the @aspectMask@ member
+--     of @srcSubresource@ is
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT' and
+--     the @aspectMask@ of @dstSubresource@ is
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT',
+--     then 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_STENCIL_COPY_ON_TRANSFER_QUEUE_BIT_KHR'
+--
+-- -   #VUID-vkCmdCopyImage2-commandBuffer-10218# 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', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance10 maintenance10>
+--     feature is not enabled, for each element of
+--     @pCopyImageInfo->pRegions@, where the @aspectMask@ member of
+--     @dstSubresource@ is
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'
+--     then the @aspectMask@ of @srcSubresource@ /must/ not be
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' or
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
+--
+-- -   #VUID-vkCmdCopyImage2-commandBuffer-11786# 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' but does
+--     support 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', and
+--     in any element of @pCopyImageInfo->pRegions@ the @aspectMask@ member
+--     of @dstSubresource@ is
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT' and
+--     the @aspectMask@ of @srcSubresource@ is
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT',
+--     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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_DEPTH_COPY_ON_COMPUTE_QUEUE_BIT_KHR'
+--
+-- -   #VUID-vkCmdCopyImage2-commandBuffer-11787# 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' and
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', but does
+--     support 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_TRANSFER_BIT', and
+--     in any element of @pCopyImageInfo->pRegions@ the @aspectMask@ member
+--     of @dstSubresource@ is
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT' and
+--     the @aspectMask@ of @srcSubresource@ is
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT',
+--     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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_DEPTH_COPY_ON_TRANSFER_QUEUE_BIT_KHR'
+--
+-- -   #VUID-vkCmdCopyImage2-commandBuffer-11788# 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' but does
+--     support 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', and
+--     in any element of @pCopyImageInfo->pRegions@ the @aspectMask@ member
+--     of @dstSubresource@ is
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT' and
+--     the @aspectMask@ of @srcSubresource@ is
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT',
+--     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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STENCIL_COPY_ON_COMPUTE_QUEUE_BIT_KHR'
+--
+-- -   #VUID-vkCmdCopyImage2-commandBuffer-11789# 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' and
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', but does
+--     support 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_TRANSFER_BIT', and
+--     in any element of @pCopyImageInfo->pRegions@ the @aspectMask@ member
+--     of @dstSubresource@ is
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT' and
+--     the @aspectMask@ of @srcSubresource@ is
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT',
+--     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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STENCIL_COPY_ON_TRANSFER_QUEUE_BIT_KHR'
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-vkCmdCopyImage2-commandBuffer-parameter# @commandBuffer@
@@ -254,12 +415,17 @@
 --
 -- -   #VUID-vkCmdCopyImage2-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support transfer, graphics, or compute
---     operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT',
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT', or
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_TRANSFER_BIT' operations
 --
 -- -   #VUID-vkCmdCopyImage2-renderpass# This command /must/ only be called
 --     outside of a render pass instance
 --
+-- -   #VUID-vkCmdCopyImage2-suspended# This command /must/ not be called
+--     between suspended render pass instances
+--
 -- -   #VUID-vkCmdCopyImage2-videocoding# This command /must/ only be
 --     called outside of a video coding scope
 --
@@ -277,11 +443,16 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | Transfer                                                                                                              | Action                                                                                                                                 |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | Graphics                                                                                                              |                                                                                                                                        |
--- |                                                                                                                            |                                                                                                                        |                                                                                                                             | Compute                                                                                                               |                                                                                                                                        |
+-- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | VK_QUEUE_GRAPHICS_BIT                                                                                                 |                                                                                                                                        |
+-- |                                                                                                                            |                                                                                                                        |                                                                                                                             | VK_QUEUE_TRANSFER_BIT                                                                                                 |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdCopyImage2 is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_copy_commands2 VK_KHR_copy_commands2>,
@@ -356,11 +527,15 @@
 --
 -- -   #VUID-vkCmdBlitImage2-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdBlitImage2-renderpass# This command /must/ only be called
 --     outside of a render pass instance
 --
+-- -   #VUID-vkCmdBlitImage2-suspended# This command /must/ not be called
+--     between suspended render pass instances
+--
 -- -   #VUID-vkCmdBlitImage2-videocoding# This command /must/ only be
 --     called outside of a video coding scope
 --
@@ -378,10 +553,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | Graphics                                                                                                              | Action                                                                                                                                 |
+-- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | Action                                                                                                                                 |
 -- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdBlitImage2 is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_copy_commands2 VK_KHR_copy_commands2>,
@@ -441,9 +621,11 @@
 --     <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-vkCmdCopyBufferToImage2-commandBuffer-07737# If the queue
---     family used to create the 'Vulkan.Core10.Handles.CommandPool' which
---     @commandBuffer@ was allocated from does not support
+-- -   #VUID-vkCmdCopyBufferToImage2-commandBuffer-07737# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance11 maintenance11>
+--     feature is not enabled, and 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
@@ -459,12 +641,68 @@
 -- -   #VUID-vkCmdCopyBufferToImage2-commandBuffer-07739# 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 @pCopyBufferToImageInfo->pRegions@, the @aspectMask@
---     member of @imageSubresource@ /must/ not be
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance10 maintenance10>
+--     feature is not enabled, for each element of
+--     @pCopyBufferToImageInfo->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-vkCmdCopyBufferToImage2-commandBuffer-11778# 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' but does
+--     support 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', and
+--     in any element of @pCopyBufferToImageInfo->pRegions@ the
+--     @aspectMask@ member of @imageSubresource@ is
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT',
+--     then 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_DEPTH_COPY_ON_COMPUTE_QUEUE_BIT_KHR'
+--
+-- -   #VUID-vkCmdCopyBufferToImage2-commandBuffer-11779# 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' and
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', but does
+--     support 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_TRANSFER_BIT', and
+--     in any element of @pCopyBufferToImageInfo->pRegions@ the
+--     @aspectMask@ member of @imageSubresource@ is
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT',
+--     then 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_DEPTH_COPY_ON_TRANSFER_QUEUE_BIT_KHR'
+--
+-- -   #VUID-vkCmdCopyBufferToImage2-commandBuffer-11780# 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' but does
+--     support 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', and
+--     in any element of @pCopyBufferToImageInfo->pRegions@ the
+--     @aspectMask@ member of @imageSubresource@ is
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT',
+--     then 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_STENCIL_COPY_ON_COMPUTE_QUEUE_BIT_KHR'
+--
+-- -   #VUID-vkCmdCopyBufferToImage2-commandBuffer-11781# 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' and
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', but does
+--     support 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_TRANSFER_BIT', and
+--     in any element of @pCopyBufferToImageInfo->pRegions@ the
+--     @aspectMask@ member of @imageSubresource@ is
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT',
+--     then 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_STENCIL_COPY_ON_TRANSFER_QUEUE_BIT_KHR'
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-vkCmdCopyBufferToImage2-commandBuffer-parameter#
@@ -481,12 +719,17 @@
 --
 -- -   #VUID-vkCmdCopyBufferToImage2-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support transfer, graphics, or compute
---     operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT',
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT', or
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_TRANSFER_BIT' operations
 --
 -- -   #VUID-vkCmdCopyBufferToImage2-renderpass# This command /must/ only
 --     be called outside of a render pass instance
 --
+-- -   #VUID-vkCmdCopyBufferToImage2-suspended# This command /must/ not be
+--     called between suspended render pass instances
+--
 -- -   #VUID-vkCmdCopyBufferToImage2-videocoding# This command /must/ only
 --     be called outside of a video coding scope
 --
@@ -504,11 +747,16 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | Transfer                                                                                                              | Action                                                                                                                                 |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | Graphics                                                                                                              |                                                                                                                                        |
--- |                                                                                                                            |                                                                                                                        |                                                                                                                             | Compute                                                                                                               |                                                                                                                                        |
+-- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | VK_QUEUE_GRAPHICS_BIT                                                                                                 |                                                                                                                                        |
+-- |                                                                                                                            |                                                                                                                        |                                                                                                                             | VK_QUEUE_TRANSFER_BIT                                                                                                 |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdCopyBufferToImage2 is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_copy_commands2 VK_KHR_copy_commands2>,
@@ -569,9 +817,11 @@
 --     <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-vkCmdCopyImageToBuffer2-commandBuffer-07746# If the queue
---     family used to create the 'Vulkan.Core10.Handles.CommandPool' which
---     @commandBuffer@ was allocated from does not support
+-- -   #VUID-vkCmdCopyImageToBuffer2-commandBuffer-07746# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance11 maintenance11>
+--     feature is not enabled, and 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
@@ -584,6 +834,71 @@
 --     family, as described in
 --     'Vulkan.Core10.DeviceInitialization.QueueFamilyProperties'
 --
+-- -   #VUID-vkCmdCopyImageToBuffer2-commandBuffer-10216# 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', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance10 maintenance10>
+--     feature is not enabled, for each element of
+--     @pCopyImageToBufferInfo->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-vkCmdCopyImageToBuffer2-commandBuffer-11790# 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' but does
+--     support 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', and
+--     in any element of @pCopyImageToBufferInfo->pRegions@ the
+--     @aspectMask@ member of @imageSubresource@ is
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT',
+--     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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_DEPTH_COPY_ON_COMPUTE_QUEUE_BIT_KHR'
+--
+-- -   #VUID-vkCmdCopyImageToBuffer2-commandBuffer-11791# 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' and
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', but does
+--     support 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_TRANSFER_BIT', and
+--     in any element of @pCopyImageToBufferInfo->pRegions@ the
+--     @aspectMask@ member of @imageSubresource@ is
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT',
+--     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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_DEPTH_COPY_ON_TRANSFER_QUEUE_BIT_KHR'
+--
+-- -   #VUID-vkCmdCopyImageToBuffer2-commandBuffer-11792# 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' but does
+--     support 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', and
+--     in any element of @pCopyImageToBufferInfo->pRegions@ the
+--     @aspectMask@ member of @imageSubresource@ is
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT',
+--     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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STENCIL_COPY_ON_COMPUTE_QUEUE_BIT_KHR'
+--
+-- -   #VUID-vkCmdCopyImageToBuffer2-commandBuffer-11793# 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' and
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', but does
+--     support 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_TRANSFER_BIT', and
+--     in any element of @pCopyImageToBufferInfo->pRegions@ the
+--     @aspectMask@ member of @imageSubresource@ is
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT',
+--     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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STENCIL_COPY_ON_TRANSFER_QUEUE_BIT_KHR'
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-vkCmdCopyImageToBuffer2-commandBuffer-parameter#
@@ -600,12 +915,17 @@
 --
 -- -   #VUID-vkCmdCopyImageToBuffer2-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support transfer, graphics, or compute
---     operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT',
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT', or
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_TRANSFER_BIT' operations
 --
 -- -   #VUID-vkCmdCopyImageToBuffer2-renderpass# This command /must/ only
 --     be called outside of a render pass instance
 --
+-- -   #VUID-vkCmdCopyImageToBuffer2-suspended# This command /must/ not be
+--     called between suspended render pass instances
+--
 -- -   #VUID-vkCmdCopyImageToBuffer2-videocoding# This command /must/ only
 --     be called outside of a video coding scope
 --
@@ -623,11 +943,16 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | Transfer                                                                                                              | Action                                                                                                                                 |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | Graphics                                                                                                              |                                                                                                                                        |
--- |                                                                                                                            |                                                                                                                        |                                                                                                                             | Compute                                                                                                               |                                                                                                                                        |
+-- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | VK_QUEUE_GRAPHICS_BIT                                                                                                 |                                                                                                                                        |
+-- |                                                                                                                            |                                                                                                                        |                                                                                                                             | VK_QUEUE_TRANSFER_BIT                                                                                                 |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdCopyImageToBuffer2 is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_copy_commands2 VK_KHR_copy_commands2>,
@@ -660,7 +985,7 @@
   unsafe
 #endif
   "dynamic" mkVkCmdResolveImage2
-  :: FunPtr (Ptr CommandBuffer_T -> Ptr ResolveImageInfo2 -> IO ()) -> Ptr CommandBuffer_T -> Ptr ResolveImageInfo2 -> IO ()
+  :: FunPtr (Ptr CommandBuffer_T -> Ptr (SomeStruct ResolveImageInfo2) -> IO ()) -> Ptr CommandBuffer_T -> Ptr (SomeStruct ResolveImageInfo2) -> IO ()
 
 -- | vkCmdResolveImage2 - Resolve regions of an image
 --
@@ -703,11 +1028,15 @@
 --
 -- -   #VUID-vkCmdResolveImage2-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdResolveImage2-renderpass# This command /must/ only be
 --     called outside of a render pass instance
 --
+-- -   #VUID-vkCmdResolveImage2-suspended# This command /must/ not be
+--     called between suspended render pass instances
+--
 -- -   #VUID-vkCmdResolveImage2-videocoding# This command /must/ only be
 --     called outside of a video coding scope
 --
@@ -725,23 +1054,28 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | Graphics                                                                                                              | Action                                                                                                                                 |
+-- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | Action                                                                                                                                 |
 -- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdResolveImage2 is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = 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)
+cmdResolveImage2 :: forall a io
+                  . (Extendss ResolveImageInfo2 a, PokeChain a, 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
+                    (ResolveImageInfo2 a)
                  -> io ()
 cmdResolveImage2 commandBuffer resolveImageInfo = liftIO . evalContT $ do
   let vkCmdResolveImage2Ptr = pVkCmdResolveImage2 (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
@@ -751,7 +1085,7 @@
   pResolveImageInfo <- ContT $ withCStruct (resolveImageInfo)
   lift $ traceAroundEvent "vkCmdResolveImage2" (vkCmdResolveImage2'
                                                   (commandBufferHandle (commandBuffer))
-                                                  pResolveImageInfo)
+                                                  (forgetExtensions pResolveImageInfo))
   pure $ ()
 
 
@@ -877,7 +1211,7 @@
 -- <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.Extensions.VK_EXT_host_image_copy.CopyImageToImageInfoEXT',
+-- 'Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy.CopyImageToImageInfo',
 -- 'Vulkan.Core10.FundamentalTypes.Extent3D',
 -- 'Vulkan.Core10.CommandBufferBuilding.ImageSubresourceLayers',
 -- 'Vulkan.Core10.FundamentalTypes.Offset3D',
@@ -988,8 +1322,8 @@
 --     pointer to a valid instance of
 --     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'
 --
--- -   #VUID-VkImageBlit2-sType-unique# The @sType@ value of each struct in
---     the @pNext@ chain /must/ be unique
+-- -   #VUID-VkImageBlit2-sType-unique# The @sType@ value of each structure
+--     in the @pNext@ chain /must/ be unique
 --
 -- -   #VUID-VkImageBlit2-srcSubresource-parameter# @srcSubresource@ /must/
 --     be a valid
@@ -1149,7 +1483,7 @@
 --     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'
 --
 -- -   #VUID-VkBufferImageCopy2-sType-unique# The @sType@ value of each
---     struct in the @pNext@ chain /must/ be unique
+--     structure in the @pNext@ chain /must/ be unique
 --
 -- -   #VUID-VkBufferImageCopy2-imageSubresource-parameter#
 --     @imageSubresource@ /must/ be a valid
@@ -1270,10 +1604,19 @@
 --
 -- == Valid Usage
 --
--- -   #VUID-VkImageResolve2-aspectMask-00266# The @aspectMask@ member of
+-- -   #VUID-VkImageResolve2-aspectMask-10993# The @aspectMask@ member of
 --     @srcSubresource@ and @dstSubresource@ /must/ only contain
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT',
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT',
+--     or 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'
 --
+-- -   #VUID-VkImageResolve2-maintenance10-10994# If
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance10 maintenance10>
+--     feature is not enabled, @srcSubresource@ and @dstSubresource@ /must/
+--     not contain
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' or
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
+--
 -- -   #VUID-VkImageResolve2-layerCount-08803# If neither of the
 --     @layerCount@ members of @srcSubresource@ or @dstSubresource@ are
 --     'Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS', the
@@ -1317,8 +1660,7 @@
   { -- | @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.
+    -- 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.
@@ -1411,18 +1753,18 @@
 --     elements of @pRegions@, /must/ not overlap in memory
 --
 -- -   #VUID-VkCopyBufferInfo2-srcBuffer-00118# @srcBuffer@ /must/ have
---     been created with
+--     been created with the
 --     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_SRC_BIT'
---     usage flag
+--     usage flag set
 --
 -- -   #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
+--     been created with the
 --     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_DST_BIT'
---     usage flag
+--     usage flag set
 --
 -- -   #VUID-VkCopyBufferInfo2-dstBuffer-00121# If @dstBuffer@ is
 --     non-sparse then it /must/ be bound completely and contiguously to a
@@ -1458,7 +1800,7 @@
 -- <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'
+-- 'cmdCopyBuffer2'
 data CopyBufferInfo2 = CopyBufferInfo2
   { -- | @srcBuffer@ is the source buffer.
     srcBuffer :: Buffer
@@ -1564,13 +1906,13 @@
 -- -   #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>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-multiplanar multi-planar format>,
 --     the 'Vulkan.Core10.Enums.Format.Format' of each of @srcImage@ and
 --     @dstImage@ /must/ be
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-size-compatibility size-compatible>
 --
 -- -   #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>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-multiplanar 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>
@@ -1599,36 +1941,81 @@
 --
 -- -   #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
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-multiplanar multi-planar format>
+--     and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance8 maintenance8>
+--     feature is not enabled then for each element of @pRegions@,
+--     @srcSubresource.aspectMask@ and @dstSubresource.aspectMask@ /must/
+--     match
 --
+-- -   #VUID-VkCopyImageInfo2-pRegions-12201# For each element of
+--     @pRegions@ where @srcSubresource.aspectMask@ and
+--     @dstSubresource.aspectMask@ each contain at least one of
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' or
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT',
+--     @srcSubresource.aspectMask@ and @dstSubresource.aspectMask@ /must/
+--     match
+--
+-- -   #VUID-VkCopyImageInfo2-srcSubresource-10214# If
+--     @srcSubresource.aspectMask@ is
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT',
+--     then @dstSubresource.aspectMask@ /must/ not contain both
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' and
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
+--
+-- -   #VUID-VkCopyImageInfo2-dstSubresource-10215# If
+--     @dstSubresource.aspectMask@ is
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT',
+--     then @srcSubresource.aspectMask@ /must/ not contain both
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' and
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
+--
 -- -   #VUID-VkCopyImageInfo2-srcImage-08713# 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>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-multiplanar multi-planar format>,
 --     then for each element of @pRegions@, @srcSubresource.aspectMask@
 --     /must/ be a single valid
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-planes-image-aspect multi-planar aspect mask>
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-multiplanar-image-aspect multi-planar aspect mask>
 --     bit
 --
 -- -   #VUID-VkCopyImageInfo2-dstImage-08714# 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>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-multiplanar multi-planar format>,
 --     then for each element of @pRegions@, @dstSubresource.aspectMask@
 --     /must/ be a single valid
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-planes-image-aspect multi-planar aspect mask>
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-multiplanar-image-aspect multi-planar aspect mask>
 --     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>
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-multiplanar multi-planar 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>
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-multiplanar multi-planar 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-srcSubresource-10211# If
+--     @srcSubresource.aspectMask@ is
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT' and
+--     @dstSubresource.aspectMask@ is
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' or
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT',
+--     then the 'Vulkan.Core10.Enums.Format.Format' values of @srcImage@
+--     and @dstImage@ /must/ be compatible according to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-zs-color the list of compatible depth-stencil and color formats>
+--
+-- -   #VUID-VkCopyImageInfo2-srcSubresource-10212# If
+--     @srcSubresource.aspectMask@ is
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' or
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
+--     and @dstSubresource.aspectMask@ is
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT',
+--     then the 'Vulkan.Core10.Enums.Format.Format' values of @srcImage@
+--     and @dstImage@ /must/ be compatible according to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-zs-color the list of compatible depth-stencil and color formats>
+--
 -- -   #VUID-VkCopyImageInfo2-apiVersion-07932# If the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance1 VK_KHR_maintenance1>
 --     extension is not enabled, or
@@ -1686,9 +2073,16 @@
 --
 -- -   #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@
+--     of @pRegions@, @dstOffset.z@ /must/ be @0@
 --
+-- -   #VUID-VkCopyImageInfo2-srcImage-10907# If either 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#compressed_image_formats compressed image format>,
+--     and @dstImage@ is of type
+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then for each element
+--     of @pRegions@, @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@
@@ -1753,23 +2147,37 @@
 --     @dstSubresource.layerCount@
 --
 -- -   #VUID-VkCopyImageInfo2-dstOffset-00150# For each element of
---     @pRegions@, @dstOffset.x@ and (@extent.width@ + @dstOffset.x@)
+--     @pRegions@, @dstOffset.x@ and (@extent.width@ + @dstOffset.x@),
+--     where @extent@ is
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-size-compatibility adjusted for size-compatibility>,
 --     /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@)
+--     @pRegions@, @dstOffset.y@ and (@extent.height@ + @dstOffset.y@),
+--     where @extent@ is
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-size-compatibility adjusted for size-compatibility>,
 --     /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@
+--     of @pRegions@, @dstOffset.y@ /must/ be @0@
 --
+-- -   #VUID-VkCopyImageInfo2-srcImage-10908# If either 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#compressed_image_formats compressed image format>,
+--     and @dstImage@ is of type
+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then for each element
+--     of @pRegions@, @extent.height@ /must/ be @1@, where @extent@ is
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-size-compatibility adjusted for size-compatibility>
+--
 -- -   #VUID-VkCopyImageInfo2-dstOffset-00153# If @dstImage@ is of type
 --     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', then for each element
---     of @pRegions@, @dstOffset.z@ and (@extent.depth@ + @dstOffset.z@)
+--     of @pRegions@, @dstOffset.z@ and (@extent.depth@ + @dstOffset.z@),
+--     where @extent@ is
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-size-compatibility adjusted for size-compatibility>,
 --     /must/ both be greater than or equal to @0@ and less than or equal
 --     to the depth of the specified @dstSubresource@ of @dstImage@
 --
@@ -1824,69 +2232,44 @@
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent depth>
 --     of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@
 --
--- -   #VUID-VkCopyImageInfo2-dstImage-01732# For each element of
---     @pRegions@, if the sum of @dstOffset.x@ and @extent.width@ does not
---     equal the width of the subresource specified by @dstSubresource@,
---     @extent.width@ /must/ be a multiple of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width>
---     of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@
---
--- -   #VUID-VkCopyImageInfo2-dstImage-01733# For each element of
---     @pRegions@, if the sum of @dstOffset.y@ and @extent.height@ does not
---     equal the height of the subresource specified by @dstSubresource@,
---     @extent.height@ /must/ be a multiple of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent height>
---     of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@
---
--- -   #VUID-VkCopyImageInfo2-dstImage-01734# For each element of
---     @pRegions@, if the sum of @dstOffset.z@ and @extent.depth@ does not
---     equal the depth of the subresource specified by @dstSubresource@,
---     @extent.depth@ /must/ be a multiple of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent depth>
---     of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@
---
 -- -   #VUID-VkCopyImageInfo2-aspect-06662# If the @aspect@ member of any
 --     element of @pRegions@ includes any flag other than
 --     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
 --     or @srcImage@ was not created with
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageStencilUsageCreateInfo separate stencil usage>,
+--     @srcImage@ /must/ have been created with the
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_SRC_BIT'
---     /must/ have been included in the
---     'Vulkan.Core10.Image.ImageCreateInfo'::@usage@ used to create
---     @srcImage@
+--     usage flag set
 --
 -- -   #VUID-VkCopyImageInfo2-aspect-06663# If the @aspect@ member of any
 --     element of @pRegions@ includes any flag other than
 --     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
 --     or @dstImage@ was not created with
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageStencilUsageCreateInfo separate stencil usage>,
+--     @dstImage@ /must/ have been created with the
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'
---     /must/ have been included in the
---     'Vulkan.Core10.Image.ImageCreateInfo'::@usage@ used to create
---     @dstImage@
+--     usage flag set
 --
 -- -   #VUID-VkCopyImageInfo2-aspect-06664# If the @aspect@ member of any
 --     element of @pRegions@ includes
 --     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT',
 --     and @srcImage@ was created with
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageStencilUsageCreateInfo separate stencil usage>,
+--     @srcImage@ /must/ have been created with the
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_SRC_BIT'
---     /must/ have been included in the
---     'Vulkan.Core12.Promoted_From_VK_EXT_separate_stencil_usage.ImageStencilUsageCreateInfo'::@stencilUsage@
---     used to create @srcImage@
+--     usage flag set
 --
 -- -   #VUID-VkCopyImageInfo2-aspect-06665# If the @aspect@ member of any
 --     element of @pRegions@ includes
 --     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT',
 --     and @dstImage@ was created with
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageStencilUsageCreateInfo separate stencil usage>,
+--     @srcImage@ /must/ have been created with the
 --     '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 @dstImage@
+--     usage flag set
 --
 -- -   #VUID-VkCopyImageInfo2-srcImage-07966# If @srcImage@ is non-sparse
---     then the image or the specified /disjoint/ plane /must/ be bound
+--     then the image or each specified /disjoint/ plane /must/ be bound
 --     completely and contiguously to a single
 --     'Vulkan.Core10.Handles.DeviceMemory' object
 --
@@ -1908,7 +2291,7 @@
 --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT'
 --
 -- -   #VUID-VkCopyImageInfo2-dstImage-07966# If @dstImage@ is non-sparse
---     then the image or the specified /disjoint/ plane /must/ be bound
+--     then the image or each specified /disjoint/ plane /must/ be bound
 --     completely and contiguously to a single
 --     'Vulkan.Core10.Handles.DeviceMemory' object
 --
@@ -1968,7 +2351,7 @@
 -- 'Vulkan.Core10.Handles.Image', 'ImageCopy2',
 -- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType', 'cmdCopyImage2',
--- 'Vulkan.Extensions.VK_KHR_copy_commands2.cmdCopyImage2KHR'
+-- 'cmdCopyImage2'
 data CopyImageInfo2 = CopyImageInfo2
   { -- | @srcImage@ is the source image.
     srcImage :: Image
@@ -2039,14 +2422,6 @@
 --
 -- == 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
@@ -2061,9 +2436,9 @@
 --     <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
+--     created with the
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_SRC_BIT'
---     usage flag
+--     usage flag set
 --
 -- -   #VUID-VkBlitImageInfo2-srcImage-00220# If @srcImage@ is non-sparse
 --     then it /must/ be bound completely and contiguously to a single
@@ -2081,7 +2456,7 @@
 --     or 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL'
 --
 -- -   #VUID-VkBlitImageInfo2-srcImage-09459# If @srcImage@ and @dstImage@
---     are the same, and an elements of @pRegions@ contains the
+--     are the same, and an element of @pRegions@ contains the
 --     @srcSubresource@ and @dstSubresource@ with matching @mipLevel@ and
 --     overlapping array layers, then the @srcImageLayout@ and
 --     @dstImageLayout@ /must/ be
@@ -2097,9 +2472,9 @@
 --     <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
+--     created with the
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'
---     usage flag
+--     usage flag set
 --
 -- -   #VUID-VkBlitImageInfo2-dstImage-00225# If @dstImage@ is non-sparse
 --     then it /must/ be bound completely and contiguously to a single
@@ -2177,7 +2552,7 @@
 --     when @srcImage@ was created
 --
 -- -   #VUID-VkBlitImageInfo2-dstSubresource-01708# If
---     @srcSubresource.layerCount@ is not
+--     @dstSubresource.layerCount@ is not
 --     'Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS',
 --     @dstSubresource.baseArrayLayer@ + @dstSubresource.layerCount@ of
 --     each element of @pRegions@ /must/ be less than or equal to the
@@ -2188,13 +2563,47 @@
 --     /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
+-- -   #VUID-VkBlitImageInfo2-maintenance8-10207# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance8 maintenance8>
+--     feature is enabled and @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@ and @dstSubresource.layerCount@ /must/
 --     each be @1@
 --
+-- -   #VUID-VkBlitImageInfo2-maintenance8-10208# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance8 maintenance8>
+--     feature is enabled and @dstImage@ is of type
+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', then for each element
+--     of @pRegions@, @dstSubresource.baseArrayLayer@ /must/ be @0@, and
+--     @srcSubresource.layerCount@ and @dstSubresource.layerCount@ /must/
+--     each be @1@
+--
+-- -   #VUID-VkBlitImageInfo2-maintenance8-10579# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance8 maintenance8>
+--     feature is enabled, @dstImage@ is
+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', and @srcImage@ is not
+--     of type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', then for each
+--     element of @pRegions@, the absolute difference of the @z@ member of
+--     each member of @dstOffsets@ /must/ equal @srcSubresource.layerCount@
+--
+-- -   #VUID-VkBlitImageInfo2-maintenance8-10580# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance8 maintenance8>
+--     feature is enabled, @srcImage@ is
+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', and @dstImage@ is not
+--     of type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', then for each
+--     element of @pRegions@, the absolute difference of the @z@ member of
+--     each member of @srcOffsets@ /must/ equal @dstSubresource.layerCount@
+--
+-- -   #VUID-VkBlitImageInfo2-srcImage-00240# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance8 maintenance8>
+--     feature is not enabled and 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@
@@ -2271,11 +2680,11 @@
 --     @pRegions@ contains
 --     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'
 --     in its @pNext@ chain, then @srcImage@ /must/ not have a
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-multiplanar multi-planar format>
 --
 -- -   #VUID-VkBlitImageInfo2-filter-09204# If @filter@ is
 --     'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' and if the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-selectableCubicWeights selectableCubicWeights>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-selectableCubicWeights selectableCubicWeights>
 --     feature is not enabled then the cubic weights /must/ be
 --     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM'
 --
@@ -2289,7 +2698,7 @@
 --     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.BlitImageCubicWeightsInfoQCOM'
 --
 -- -   #VUID-VkBlitImageInfo2-sType-unique# The @sType@ value of each
---     struct in the @pNext@ chain /must/ be unique
+--     structure in the @pNext@ chain /must/ be unique
 --
 -- -   #VUID-VkBlitImageInfo2-srcImage-parameter# @srcImage@ /must/ be a
 --     valid 'Vulkan.Core10.Handles.Image' handle
@@ -2326,7 +2735,7 @@
 -- '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'
+-- 'cmdBlitImage2'
 data BlitImageInfo2 (es :: [Type]) = BlitImageInfo2
   { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
@@ -2440,14 +2849,14 @@
 --     region specified by each element of @pRegions@ contains
 --     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'
 --     in its @pNext@ chain, the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#copies-buffers-images-rotation-addressing rotated destination region>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#copies-buffers-images-rotation-addressing rotated destination region>
 --     /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/ have a 1x1x1
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#formats-compatibility-classes texel block extent>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-compatibility-classes texel block extent>
 --
 -- -   #VUID-VkCopyBufferToImageInfo2KHR-pRegions-06203# If any element of
 --     @pRegions@ contains
@@ -2459,7 +2868,7 @@
 --     @pRegions@ contains
 --     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'
 --     in its @pNext@ chain, then @dstImage@ /must/ not have a
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-multiplanar multi-planar format>
 --
 -- -   #VUID-VkCopyBufferToImageInfo2-pRegions-00171# @srcBuffer@ /must/ be
 --     large enough to contain all buffer locations that are accessed
@@ -2472,9 +2881,9 @@
 --     by the elements of @pRegions@, /must/ not overlap in memory
 --
 -- -   #VUID-VkCopyBufferToImageInfo2-srcBuffer-00174# @srcBuffer@ /must/
---     have been created with
+--     have been created with the
 --     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_SRC_BIT'
---     usage flag
+--     usage flag set
 --
 -- -   #VUID-VkCopyBufferToImageInfo2-dstImage-01997# The
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>
@@ -2486,9 +2895,9 @@
 --     single 'Vulkan.Core10.Handles.DeviceMemory' object
 --
 -- -   #VUID-VkCopyBufferToImageInfo2-dstImage-00177# @dstImage@ /must/
---     have been created with
+--     have been created with the
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'
---     usage flag
+--     usage flag set
 --
 -- -   #VUID-VkCopyBufferToImageInfo2-dstImageLayout-00180#
 --     @dstImageLayout@ /must/ specify the layout of the image subresources
@@ -2508,7 +2917,7 @@
 --     /must/ be in the range [0,1]
 --
 -- -   #VUID-VkCopyBufferToImageInfo2-dstImage-07966# If @dstImage@ is
---     non-sparse then the image or the specified /disjoint/ plane /must/
+--     non-sparse then the image or each specified /disjoint/ plane /must/
 --     be bound completely and contiguously to a single
 --     'Vulkan.Core10.Handles.DeviceMemory' object
 --
@@ -2699,10 +3108,10 @@
 --     aspects present in @dstImage@
 --
 -- -   #VUID-VkCopyBufferToImageInfo2-dstImage-07981# 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>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-multiplanar multi-planar format>,
 --     then for each element of @pRegions@, @imageSubresource.aspectMask@
 --     /must/ be a single valid
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-planes-image-aspect multi-planar aspect mask>
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-multiplanar-image-aspect multi-planar aspect mask>
 --     bit
 --
 -- -   #VUID-VkCopyBufferToImageInfo2-dstImage-07983# If @dstImage@ is of
@@ -2729,13 +3138,13 @@
 --
 -- -   #VUID-VkCopyBufferToImageInfo2-dstImage-07975# If @dstImage@ does
 --     not have either a depth\/stencil format or 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.2-extensions/html/vkspec.html#formats-multiplanar multi-planar format>,
 --     then for each element of @pRegions@, @bufferOffset@ /must/ be a
 --     multiple of the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block size>
 --
 -- -   #VUID-VkCopyBufferToImageInfo2-dstImage-07976# 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>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-multiplanar 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
@@ -2797,8 +3206,7 @@
 -- 'Vulkan.Core10.Handles.Image',
 -- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'cmdCopyBufferToImage2',
--- 'Vulkan.Extensions.VK_KHR_copy_commands2.cmdCopyBufferToImage2KHR'
+-- 'cmdCopyBufferToImage2', 'cmdCopyBufferToImage2'
 data CopyBufferToImageInfo2 = CopyBufferToImageInfo2
   { -- | @srcBuffer@ is the source buffer.
     srcBuffer :: Buffer
@@ -2874,14 +3282,14 @@
 --     region specified by each element of @pRegions@ contains
 --     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'
 --     in its @pNext@ chain, the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#copies-buffers-images-rotation-addressing rotated source region>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#copies-buffers-images-rotation-addressing rotated source region>
 --     /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/ have a 1x1x1
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#formats-compatibility-classes texel block extent>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-compatibility-classes texel block extent>
 --
 -- -   #VUID-VkCopyImageToBufferInfo2KHR-pRegions-06205# If any element of
 --     @pRegions@ contains
@@ -2893,7 +3301,7 @@
 --     @pRegions@ contains
 --     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'
 --     in its @pNext@ chain, then @srcImage@ /must/ not have a
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-multiplanar multi-planar format>
 --
 -- -   #VUID-VkCopyImageToBufferInfo2-pRegions-00183# @dstBuffer@ /must/ be
 --     large enough to contain all buffer locations that are accessed
@@ -2906,9 +3314,9 @@
 --     by the elements of @pRegions@, /must/ not overlap in memory
 --
 -- -   #VUID-VkCopyImageToBufferInfo2-srcImage-00186# @srcImage@ /must/
---     have been created with
+--     have been created with the
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_SRC_BIT'
---     usage flag
+--     usage flag set
 --
 -- -   #VUID-VkCopyImageToBufferInfo2-srcImage-01998# The
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>
@@ -2916,9 +3324,9 @@
 --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_TRANSFER_SRC_BIT'
 --
 -- -   #VUID-VkCopyImageToBufferInfo2-dstBuffer-00191# @dstBuffer@ /must/
---     have been created with
+--     have been created with the
 --     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_DST_BIT'
---     usage flag
+--     usage flag set
 --
 -- -   #VUID-VkCopyImageToBufferInfo2-dstBuffer-00192# If @dstBuffer@ is
 --     non-sparse then it /must/ be bound completely and contiguously to a
@@ -2936,7 +3344,7 @@
 --     or 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL'
 --
 -- -   #VUID-VkCopyImageToBufferInfo2-srcImage-07966# If @srcImage@ is
---     non-sparse then the image or the specified /disjoint/ plane /must/
+--     non-sparse then the image or each specified /disjoint/ plane /must/
 --     be bound completely and contiguously to a single
 --     'Vulkan.Core10.Handles.DeviceMemory' object
 --
@@ -3127,10 +3535,10 @@
 --     aspects present in @srcImage@
 --
 -- -   #VUID-VkCopyImageToBufferInfo2-srcImage-07981# 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>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-multiplanar multi-planar format>,
 --     then for each element of @pRegions@, @imageSubresource.aspectMask@
 --     /must/ be a single valid
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-planes-image-aspect multi-planar aspect mask>
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-multiplanar-image-aspect multi-planar aspect mask>
 --     bit
 --
 -- -   #VUID-VkCopyImageToBufferInfo2-srcImage-07983# If @srcImage@ is of
@@ -3157,13 +3565,13 @@
 --
 -- -   #VUID-VkCopyImageToBufferInfo2-srcImage-07975# If @srcImage@ does
 --     not have either a depth\/stencil format or 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.2-extensions/html/vkspec.html#formats-multiplanar multi-planar format>,
 --     then for each element of @pRegions@, @bufferOffset@ /must/ be a
 --     multiple of the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block size>
 --
 -- -   #VUID-VkCopyImageToBufferInfo2-srcImage-07976# 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>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-multiplanar 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
@@ -3225,8 +3633,7 @@
 -- 'Vulkan.Core10.Handles.Image',
 -- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'cmdCopyImageToBuffer2',
--- 'Vulkan.Extensions.VK_KHR_copy_commands2.cmdCopyImageToBuffer2KHR'
+-- 'cmdCopyImageToBuffer2', 'cmdCopyImageToBuffer2'
 data CopyImageToBufferInfo2 = CopyImageToBufferInfo2
   { -- | @srcImage@ is the source image.
     srcImage :: Image
@@ -3290,6 +3697,50 @@
 -- | VkResolveImageInfo2 - Structure specifying parameters of resolve image
 -- command
 --
+-- = Description
+--
+-- If the source format is a floating-point or normalized type, the resolve
+-- mode is chosen as implementation-dependent behavior, unless
+-- 'Vulkan.Extensions.VK_KHR_maintenance10.ResolveImageModeInfoKHR' is
+-- included in the @pNext@ chain, in which case it is defined by
+-- 'Vulkan.Extensions.VK_KHR_maintenance10.ResolveImageModeInfoKHR'::@resolveMode@.
+-- If the resolve mode requires to calculate the result from multiple
+-- samples, such as by computing an average or weighted average of the
+-- samples, the values for each pixel are resolved with
+-- implementation-defined numerical precision.
+--
+-- If the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-numericformat numeric format>
+-- of @srcImage@ uses sRGB encoding and the resolve mode requires the
+-- implementation to convert the samples to floating-point to perform the
+-- calculations, the implementation /should/ convert samples from nonlinear
+-- to linear before resolving the samples as described in the “sRGB EOTF”
+-- section of the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#data-format Khronos Data Format Specification>.
+-- In this case, the implementation /must/ convert the linear averaged
+-- value to nonlinear before writing the resolved result to @dstImage@. If
+-- the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance10 maintenance10>
+-- feature is enabled, whether a nonlinear to linear conversion happens for
+-- sRGB encoded resolve is controlled by
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-resolveSrgbFormatAppliesTransferFunction resolveSrgbFormatAppliesTransferFunction>.
+-- If 'Vulkan.Extensions.VK_KHR_maintenance10.ResolveImageModeInfoKHR' is
+-- included in the @pNext@ chain, this default behavior /can/ be overridden
+-- with
+-- 'Vulkan.Extensions.VK_KHR_maintenance10.RESOLVE_IMAGE_SKIP_TRANSFER_FUNCTION_BIT_KHR'
+-- or
+-- 'Vulkan.Extensions.VK_KHR_maintenance10.RESOLVE_IMAGE_ENABLE_TRANSFER_FUNCTION_BIT_KHR'
+-- flags.
+--
+-- If the source format is an integer type, a single sample’s value is
+-- selected for each pixel, unless
+-- 'Vulkan.Extensions.VK_KHR_maintenance10.ResolveImageModeInfoKHR' is
+-- included in the @pNext@ chain, in which case it is defined by
+-- 'Vulkan.Extensions.VK_KHR_maintenance10.ResolveImageModeInfoKHR'::@resolveMode@
+-- or
+-- 'Vulkan.Extensions.VK_KHR_maintenance10.ResolveImageModeInfoKHR'::@stencilResolveMode@
+-- depending on which aspect is being resolved.
+--
 -- == Valid Usage
 --
 -- -   #VUID-VkResolveImageInfo2-pRegions-00255# The union of all source
@@ -3334,10 +3785,22 @@
 --     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL'
 --     or 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL'
 --
+-- -   #VUID-VkResolveImageInfo2-maintenance10-11799# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance10 maintenance10>
+--     feature is enabled, 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'
+--     or
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT'
+--
 -- -   #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'
+--     if the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance10 maintenance10>
+--     feature is not enabled
 --
 -- -   #VUID-VkResolveImageInfo2-linearColorAttachment-06519# If the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-linearColorAttachment linearColorAttachment>
@@ -3442,9 +3905,9 @@
 --     be @1@
 --
 -- -   #VUID-VkResolveImageInfo2-srcImage-06762# @srcImage@ /must/ have
---     been created with
+--     been created with the
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_SRC_BIT'
---     usage flag
+--     usage flag set
 --
 -- -   #VUID-VkResolveImageInfo2-srcImage-06763# The
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>
@@ -3452,22 +3915,117 @@
 --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_TRANSFER_SRC_BIT'
 --
 -- -   #VUID-VkResolveImageInfo2-dstImage-06764# @dstImage@ /must/ have
---     been created with
+--     been created with the
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'
---     usage flag
+--     usage flag set
 --
 -- -   #VUID-VkResolveImageInfo2-dstImage-06765# 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-VkResolveImageInfo2-srcSubresource-11800#
+--     @srcSubresource.aspectMask@ for each element in @pRegions@ /must/
+--     not specify an aspect which is not part of the image format of
+--     @srcImage@
+--
+-- -   #VUID-VkResolveImageInfo2-dstSubresource-11801#
+--     @dstSubresource.aspectMask@ for each element in @pRegions@ /must/
+--     not specify an aspect which is not part of the image format of
+--     @dstImage@
+--
+-- -   #VUID-VkResolveImageInfo2-srcSubresource-11802#
+--     @srcSubresource.aspectMask@ /must/ equal @dstSubresource.aspectMask@
+--     for each element in @pRegions@
+--
+-- -   #VUID-VkResolveImageInfo2-pNext-10982# If
+--     'Vulkan.Extensions.VK_KHR_maintenance10.ResolveImageModeInfoKHR' is
+--     included in the @pNext@ chain, @flags@ includes
+--     'Vulkan.Extensions.VK_KHR_maintenance10.RESOLVE_IMAGE_SKIP_TRANSFER_FUNCTION_BIT_KHR'
+--     or
+--     'Vulkan.Extensions.VK_KHR_maintenance10.RESOLVE_IMAGE_ENABLE_TRANSFER_FUNCTION_BIT_KHR',
+--     then the format of @srcImage@ and @dstImage@ /must/ use sRGB
+--     encoding
+--
+-- -   #VUID-VkResolveImageInfo2-srcImage-10983# If @srcImage@ has a color
+--     format and
+--     'Vulkan.Extensions.VK_KHR_maintenance10.ResolveImageModeInfoKHR' is
+--     included in the @pNext@ chain, its @resolveMode@ /must/ not be
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE'
+--
+-- -   #VUID-VkResolveImageInfo2-srcImage-10984# If @srcImage@ has a
+--     non-integer color format, and
+--     'Vulkan.Extensions.VK_KHR_maintenance10.ResolveImageModeInfoKHR' is
+--     included in the @pNext@ chain, its @resolveMode@ /must/ be
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_AVERAGE_BIT'
+--
+-- -   #VUID-VkResolveImageInfo2-srcImage-10985# If @srcImage@ has an
+--     integer color format, and
+--     'Vulkan.Extensions.VK_KHR_maintenance10.ResolveImageModeInfoKHR' is
+--     included in the @pNext@ chain, its @resolveMode@ /must/ be
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_SAMPLE_ZERO_BIT'
+--
+-- -   #VUID-VkResolveImageInfo2-srcImage-10986# If @srcImage@ has a
+--     depth-stencil format,
+--     'Vulkan.Extensions.VK_KHR_maintenance10.ResolveImageModeInfoKHR'
+--     /must/ be included in the @pNext@ chain
+--
+-- -   #VUID-VkResolveImageInfo2-srcImage-10987# If @srcImage@ has a
+--     depth-stencil format, and a depth aspect is referenced by
+--     @pRegions@,
+--     'Vulkan.Extensions.VK_KHR_maintenance10.ResolveImageModeInfoKHR'::@resolveMode@
+--     /must/ not be
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE'
+--
+-- -   #VUID-VkResolveImageInfo2-srcImage-10988# If @srcImage@ has a
+--     depth-stencil format, and a stencil aspect is referenced by
+--     @pRegions@,
+--     'Vulkan.Extensions.VK_KHR_maintenance10.ResolveImageModeInfoKHR'::@stencilResolveMode@
+--     /must/ not be
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE'
+--
+-- -   #VUID-VkResolveImageInfo2-srcImage-10989# If @srcImage@ has a
+--     depth-stencil format, and a depth aspect is referenced by
+--     @pRegions@,
+--     'Vulkan.Extensions.VK_KHR_maintenance10.ResolveImageModeInfoKHR'::@resolveMode@
+--     /must/ be one of the bits set in
+--     'Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve.PhysicalDeviceDepthStencilResolveProperties'::@supportedDepthResolveModes@
+--
+-- -   #VUID-VkResolveImageInfo2-srcImage-10990# If @srcImage@ has a
+--     depth-stencil format, and a stencil aspect is referenced by
+--     @pRegions@,
+--     'Vulkan.Extensions.VK_KHR_maintenance10.ResolveImageModeInfoKHR'::@stencilResolveMode@
+--     /must/ be one of the bits set in
+--     'Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve.PhysicalDeviceDepthStencilResolveProperties'::@supportedStencilResolveModes@
+--
+-- -   #VUID-VkResolveImageInfo2-srcImage-10991# If @srcImage@ has a
+--     depth-stencil format, and both a depth aspect and stencil aspect is
+--     referenced by @pRegions@, and
+--     'Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve.PhysicalDeviceDepthStencilResolveProperties'::@indepdendentResolve@
+--     is 'Vulkan.Core10.FundamentalTypes.FALSE',
+--     'Vulkan.Extensions.VK_KHR_maintenance10.ResolveImageModeInfoKHR'::@resolveMode@
+--     /must/ be equal to
+--     'Vulkan.Extensions.VK_KHR_maintenance10.ResolveImageModeInfoKHR'::@stencilResolveMode@
+--
+-- -   #VUID-VkResolveImageInfo2-srcImage-10992# If @srcImage@ has a
+--     depth-stencil format containing both a depth aspect and stencil
+--     aspect, and
+--     'Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve.PhysicalDeviceDepthStencilResolveProperties'::@indepdendentResolveNone@
+--     is 'Vulkan.Core10.FundamentalTypes.FALSE', every element of
+--     @pRegions@ /must/ contain both depth and stencil aspects
+--
 -- == 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-pNext-pNext# @pNext@ /must/ be @NULL@ or a
+--     pointer to a valid instance of
+--     'Vulkan.Extensions.VK_KHR_maintenance10.ResolveImageModeInfoKHR'
 --
+-- -   #VUID-VkResolveImageInfo2-sType-unique# The @sType@ value of each
+--     structure in the @pNext@ chain /must/ be unique
+--
 -- -   #VUID-VkResolveImageInfo2-srcImage-parameter# @srcImage@ /must/ be a
 --     valid 'Vulkan.Core10.Handles.Image' handle
 --
@@ -3500,9 +4058,11 @@
 -- '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.
+-- 'cmdResolveImage2'
+data ResolveImageInfo2 (es :: [Type]) = ResolveImageInfo2
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
+    next :: Chain es
+  , -- | @srcImage@ is the source image.
     srcImage :: Image
   , -- | @srcImageLayout@ is the layout of the source image subresources for the
     -- resolve.
@@ -3518,15 +4078,26 @@
   }
   deriving (Typeable)
 #if defined(GENERIC_INSTANCES)
-deriving instance Generic (ResolveImageInfo2)
+deriving instance Generic (ResolveImageInfo2 (es :: [Type]))
 #endif
-deriving instance Show ResolveImageInfo2
+deriving instance Show (Chain es) => Show (ResolveImageInfo2 es)
 
-instance ToCStruct ResolveImageInfo2 where
+instance Extensible ResolveImageInfo2 where
+  extensibleTypeName = "ResolveImageInfo2"
+  setNext ResolveImageInfo2{..} next' = ResolveImageInfo2{next = next', ..}
+  getNext ResolveImageInfo2{..} = next
+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends ResolveImageInfo2 e => b) -> Maybe b
+  extends _ f
+    | Just Refl <- eqT @e @ResolveImageModeInfoKHR = Just f
+    | otherwise = Nothing
+
+instance ( Extendss ResolveImageInfo2 es
+         , PokeChain es ) => ToCStruct (ResolveImageInfo2 es) 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)
+    pNext'' <- fmap castPtr . ContT $ withChain (next)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
     lift $ poke ((p `plusPtr` 16 :: Ptr Image)) (srcImage)
     lift $ poke ((p `plusPtr` 24 :: Ptr ImageLayout)) (srcImageLayout)
     lift $ poke ((p `plusPtr` 32 :: Ptr Image)) (dstImage)
@@ -3538,17 +4109,21 @@
     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
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2)
+    pNext' <- fmap castPtr . ContT $ withZeroChain @es
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
+    lift $ poke ((p `plusPtr` 16 :: Ptr Image)) (zero)
+    lift $ poke ((p `plusPtr` 24 :: Ptr ImageLayout)) (zero)
+    lift $ poke ((p `plusPtr` 32 :: Ptr Image)) (zero)
+    lift $ poke ((p `plusPtr` 40 :: Ptr ImageLayout)) (zero)
+    lift $ f
 
-instance FromCStruct ResolveImageInfo2 where
+instance ( Extendss ResolveImageInfo2 es
+         , PeekChain es ) => FromCStruct (ResolveImageInfo2 es) where
   peekCStruct p = do
+    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
+    next <- peekChain (castPtr pNext)
     srcImage <- peek @Image ((p `plusPtr` 16 :: Ptr Image))
     srcImageLayout <- peek @ImageLayout ((p `plusPtr` 24 :: Ptr ImageLayout))
     dstImage <- peek @Image ((p `plusPtr` 32 :: Ptr Image))
@@ -3557,10 +4132,11 @@
     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'
+             next srcImage srcImageLayout dstImage dstImageLayout pRegions'
 
-instance Zero ResolveImageInfo2 where
+instance es ~ '[] => Zero (ResolveImageInfo2 es) where
   zero = ResolveImageInfo2
+           ()
            zero
            zero
            zero
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
--- a/src/Vulkan/Core13/Promoted_From_VK_KHR_copy_commands2.hs-boot
+++ b/src/Vulkan/Core13/Promoted_From_VK_KHR_copy_commands2.hs-boot
@@ -107,10 +107,13 @@
 instance FromCStruct ImageResolve2
 
 
-data ResolveImageInfo2
+type role ResolveImageInfo2 nominal
+data ResolveImageInfo2 (es :: [Type])
 
-instance ToCStruct ResolveImageInfo2
-instance Show ResolveImageInfo2
+instance ( Extendss ResolveImageInfo2 es
+         , PokeChain es ) => ToCStruct (ResolveImageInfo2 es)
+instance Show (Chain es) => Show (ResolveImageInfo2 es)
 
-instance FromCStruct ResolveImageInfo2
+instance ( Extendss ResolveImageInfo2 es
+         , PeekChain es ) => FromCStruct (ResolveImageInfo2 es)
 
diff --git a/src/Vulkan/Core13/Promoted_From_VK_KHR_dynamic_rendering.hs b/src/Vulkan/Core13/Promoted_From_VK_KHR_dynamic_rendering.hs
--- a/src/Vulkan/Core13/Promoted_From_VK_KHR_dynamic_rendering.hs
+++ b/src/Vulkan/Core13/Promoted_From_VK_KHR_dynamic_rendering.hs
@@ -54,6 +54,9 @@
 import Vulkan.Core10.FundamentalTypes (bool32ToBool)
 import Vulkan.Core10.FundamentalTypes (boolToBool32)
 import Vulkan.CStruct.Extends (forgetExtensions)
+import Vulkan.CStruct.Extends (pokeSomeCStruct)
+import Vulkan.CStruct.Extends (withSomeCStruct)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_unified_image_layouts (AttachmentFeedbackLoopInfoEXT)
 import Vulkan.Core10.Enums.AttachmentLoadOp (AttachmentLoadOp)
 import Vulkan.Core10.Enums.AttachmentStoreOp (AttachmentStoreOp)
 import Vulkan.Core10.FundamentalTypes (Bool32)
@@ -79,6 +82,8 @@
 import Vulkan.CStruct.Extends (PokeChain(..))
 import Vulkan.Core10.FundamentalTypes (Rect2D)
 import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_render_pass_striped (RenderPassStripeBeginInfoARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_tile_shading (RenderPassTileShadingCreateInfoQCOM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance10 (RenderingAttachmentFlagsInfoKHR)
 import Vulkan.Core13.Enums.RenderingFlagBits (RenderingFlags)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_fragment_density_map (RenderingFragmentDensityMapAttachmentInfoEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_fragment_shading_rate (RenderingFragmentShadingRateAttachmentInfoKHR)
@@ -86,6 +91,7 @@
 import Vulkan.Core10.Enums.SampleCountFlagBits (SampleCountFlagBits)
 import Vulkan.CStruct.Extends (SomeStruct)
 import Vulkan.Core10.Enums.StructureType (StructureType)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_tile_memory_heap (TileMemorySizeInfoQCOM)
 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))
@@ -108,38 +114,51 @@
 --
 -- After beginning a render pass instance, the command buffer is ready to
 -- record
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#drawing draw commands>.
+-- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-submission-order submission order>.
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-submission-order submission order>.
 --
+-- If there is an instance of
+-- 'Vulkan.Extensions.VK_QCOM_tile_memory_heap.TileMemorySizeInfoQCOM'
+-- included in the @pNext@ chain of 'RenderingInfo', the structure is
+-- ignored.
+--
 -- == Valid Usage
 --
 -- -   #VUID-vkCmdBeginRendering-dynamicRendering-06446# The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-dynamicRendering dynamicRendering>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-dynamicRendering dynamicRendering>
 --     feature /must/ be enabled
 --
 -- -   #VUID-vkCmdBeginRendering-commandBuffer-06068# If @commandBuffer@ is
 --     a secondary command buffer, and the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-nestedCommandBuffer nestedCommandBuffer>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-nestedCommandBuffer nestedCommandBuffer>
 --     feature is not enabled, @pRenderingInfo->flags@ /must/ not include
 --     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT'
 --
+-- -   #VUID-vkCmdBeginRendering-commandBuffer-10914# If @commandBuffer@ is
+--     a secondary command buffer,
+--     'Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT'
+--     /must/ not have been set in
+--     'Vulkan.Core10.CommandBuffer.CommandBufferBeginInfo'::@flags@ when
+--     @commandBuffer@ began
+--
 -- -   #VUID-vkCmdBeginRendering-pRenderingInfo-09588# If
 --     @pRenderingInfo->pDepthAttachment@ is not @NULL@ and
 --     @pRenderingInfo->pDepthAttachment->imageView@ is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE',
---     @pRenderingInfo->pDepthAttachment->imageView@ /must/ be in the
---     layout specified by @pRenderingInfo->pDepthAttachment->imageLayout@
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', when
+--     @pRenderingInfo->pDepthAttachment->imageView@ is accessed it /must/
+--     be in the layout specified by
+--     @pRenderingInfo->pDepthAttachment->imageLayout@
 --
 -- -   #VUID-vkCmdBeginRendering-pRenderingInfo-09589# If
 --     @pRenderingInfo->pDepthAttachment@ is not @NULL@,
 --     @pRenderingInfo->pDepthAttachment->imageView@ is not
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE',
---     @pRenderingInfo->pDepthAttachment->imageResolveMode@ is not
+--     @pRenderingInfo->pDepthAttachment->resolveMode@ is not
 --     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE', and
 --     @pRenderingInfo->pDepthAttachment->resolveImageView@ is not
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE',
@@ -150,16 +169,16 @@
 -- -   #VUID-vkCmdBeginRendering-pRenderingInfo-09590# If
 --     @pRenderingInfo->pStencilAttachment@ is not @NULL@ and
 --     @pRenderingInfo->pStencilAttachment->imageView@ is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE',
---     @pRenderingInfo->pStencilAttachment->imageView@ /must/ be in the
---     layout specified by
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', when
+--     @pRenderingInfo->pStencilAttachment->imageView@ is accessed it
+--     /must/ be in the layout specified by
 --     @pRenderingInfo->pStencilAttachment->imageLayout@
 --
 -- -   #VUID-vkCmdBeginRendering-pRenderingInfo-09591# If
 --     @pRenderingInfo->pStencilAttachment@ is not @NULL@,
 --     @pRenderingInfo->pStencilAttachment->imageView@ is not
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE',
---     @pRenderingInfo->pStencilAttachment->imageResolveMode@ is not
+--     @pRenderingInfo->pStencilAttachment->resolveMode@ is not
 --     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE', and
 --     @pRenderingInfo->pStencilAttachment->resolveImageView@ is not
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE',
@@ -167,14 +186,15 @@
 --     the layout specified by
 --     @pRenderingInfo->pStencilAttachment->resolveImageLayout@
 --
--- -   #VUID-vkCmdBeginRendering-pRenderingInfo-09592# For any element of
+-- -   #VUID-vkCmdBeginRendering-pRenderingInfo-09592# For each element of
 --     @pRenderingInfo->pColorAttachments@, if @imageView@ is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', that image view /must/ be
---     in the layout specified by @imageLayout@
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', when that image view is
+--     accessed it /must/ be in the layout specified by the @imageLayout@
+--     member of that same element of @pRenderingInfo->pColorAttachments@
 --
--- -   #VUID-vkCmdBeginRendering-pRenderingInfo-09593# For any element of
---     @pRenderingInfo->pColorAttachments@, if either @imageResolveMode@ is
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID',
+-- -   #VUID-vkCmdBeginRendering-pRenderingInfo-09593# For each element of
+--     @pRenderingInfo->pColorAttachments@, if either @resolveMode@ is
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID',
 --     or @imageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and
 --     @resolveMode@ is not
 --     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE', and
@@ -182,6 +202,42 @@
 --     @resolveImageView@ /must/ be in the layout specified by
 --     @resolveImageLayout@
 --
+-- -   #VUID-vkCmdBeginRendering-flags-10641# If
+--     'Vulkan.Extensions.VK_QCOM_tile_shading.TILE_SHADING_RENDER_PASS_ENABLE_BIT_QCOM'
+--     is included in
+--     'Vulkan.Extensions.VK_QCOM_tile_shading.RenderPassTileShadingCreateInfoQCOM'::@flags@,
+--     @commandBuffer@ /must/ not have been recorded with
+--     'Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT'
+--
+-- -   #VUID-vkCmdBeginRendering-flags-10642#
+--     'Vulkan.Extensions.VK_QCOM_tile_shading.RenderPassTileShadingCreateInfoQCOM'::@flags@
+--     /must/ not include
+--     'Vulkan.Extensions.VK_QCOM_tile_shading.TILE_SHADING_RENDER_PASS_PER_TILE_EXECUTION_BIT_QCOM'
+--
+-- -   #VUID-vkCmdBeginRendering-pRenderingInfo-11750# If
+--     @pRenderingInfo->flags@ contains
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_LOCAL_READ_CONCURRENT_ACCESS_CONTROL_BIT_KHR',
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance10 maintenance10>
+--     /must/ be enabled
+--
+-- -   #VUID-vkCmdBeginRendering-pRenderingInfo-11751# If
+--     @pRenderingInfo->flags@ does not contain
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_LOCAL_READ_CONCURRENT_ACCESS_CONTROL_BIT_KHR',
+--     attachments /must/ not specify
+--     'Vulkan.Extensions.VK_KHR_maintenance10.RENDERING_ATTACHMENT_INPUT_ATTACHMENT_FEEDBACK_BIT_KHR'
+--
+-- -   #VUID-vkCmdBeginRendering-imageView-12276# If
+--     'Vulkan.Extensions.VK_EXT_fragment_density_map.RenderingFragmentDensityMapAttachmentInfoEXT'::@imageView@
+--     is not equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE', when
+--     @imageView@ is accessed it /must/ be in the layout specified by
+--     'Vulkan.Extensions.VK_EXT_fragment_density_map.RenderingFragmentDensityMapAttachmentInfoEXT'::@imageLayout@
+--
+-- -   #VUID-vkCmdBeginRendering-imageView-12277# If
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.RenderingFragmentShadingRateAttachmentInfoKHR'::@imageView@
+--     is not equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE', when
+--     @imageView@ is accessed it /must/ be in the layout specified by
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.RenderingFragmentShadingRateAttachmentInfoKHR'::@imageLayout@
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-vkCmdBeginRendering-commandBuffer-parameter# @commandBuffer@
@@ -196,11 +252,15 @@
 --
 -- -   #VUID-vkCmdBeginRendering-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdBeginRendering-renderpass# This command /must/ only be
 --     called outside of a render pass instance
 --
+-- -   #VUID-vkCmdBeginRendering-suspended# This command /must/ not be
+--     called between suspended render pass instances
+--
 -- -   #VUID-vkCmdBeginRendering-videocoding# This command /must/ only be
 --     called outside of a video coding scope
 --
@@ -218,10 +278,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | Graphics                                                                                                              | Action                                                                                                                                 |
+-- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | Action                                                                                                                                 |
 -- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       | State                                                                                                                                  |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdBeginRendering is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering VK_KHR_dynamic_rendering>,
@@ -272,8 +337,31 @@
 -- instance included
 -- 'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_SUSPENDING_BIT', then
 -- this render pass is suspended and will be resumed later in
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-submission-order submission order>.
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-submission-order submission order>.
 --
+-- There is no implicit ordering between separate render passes, even in
+-- the same command buffer, and even when the attachments match. Some
+-- applications rely on the continuation of
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-order rasterization order>
+-- between multiple render passes with attachments defined in the same way,
+-- in order to perform non-rendering operations (such as copies or compute
+-- operations) between draw calls, but this has never been required by the
+-- specification. There is also no explicit barrier currently in the API
+-- that provides the guarantee that applications rely on without additional
+-- performance penalties.
+--
+-- New applications should avoid relying on this ordering until an
+-- appropriate barrier is added to the API.
+--
+-- Implementations where applications are performing this splitting are
+-- encouraged to continue supporting this guarantee until a suitable
+-- barrier is added to the API.
+--
+-- Existing applications relying on this ordering should expect that it
+-- will continue working on platforms where it currently does. Once a new
+-- extension adds support for a new barrier, developers are encouraged to
+-- adapt their applications to use this when available.
+--
 -- == Valid Usage
 --
 -- -   #VUID-vkCmdEndRendering-None-06161# The current render pass instance
@@ -291,6 +379,11 @@
 --     'Vulkan.Core10.CommandBufferBuilding.cmdEndQuery'* /must/ have been
 --     called subsequently within the same subpass
 --
+-- -   #VUID-vkCmdEndRendering-None-10645# This command /must/ not be
+--     recorded when
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model>
+--     is enabled
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-vkCmdEndRendering-commandBuffer-parameter# @commandBuffer@
@@ -302,11 +395,15 @@
 --
 -- -   #VUID-vkCmdEndRendering-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdEndRendering-renderpass# This command /must/ only be
 --     called inside of a render pass instance
 --
+-- -   #VUID-vkCmdEndRendering-suspended# This command /must/ not be called
+--     between suspended render pass instances
+--
 -- -   #VUID-vkCmdEndRendering-videocoding# This command /must/ only be
 --     called outside of a video coding scope
 --
@@ -324,10 +421,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Inside                                                                                                                 | Outside                                                                                                                     | Graphics                                                                                                              | Action                                                                                                                                 |
+-- | Primary                                                                                                                    | Inside                                                                                                                 | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | Action                                                                                                                                 |
 -- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       | State                                                                                                                                  |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdEndRendering is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering VK_KHR_dynamic_rendering>,
@@ -354,10 +456,10 @@
 --
 -- When a pipeline is created without a 'Vulkan.Core10.Handles.RenderPass',
 -- if the @pNext@ chain of
--- 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo' includes this
--- structure, 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
+-- 'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo' includes
+-- this structure, 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
@@ -375,11 +477,15 @@
 -- attachment, a
 -- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'
 -- structure /must/ also be included in the @pNext@ chain of
--- 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo', defining the
--- external format of the resolve attachment that will be used.
+-- 'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo', defining
+-- the external format of the resolve attachment that will be used.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering VK_KHR_dynamic_rendering>,
@@ -387,7 +493,9 @@
 -- 'Vulkan.Core10.Enums.Format.Format',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PipelineRenderingCreateInfo = PipelineRenderingCreateInfo
-  { -- | @viewMask@ is the viewMask used for rendering.
+  { -- | @viewMask@ is a bitfield of view indices describing which views are
+    -- active during rendering. It /must/ match 'RenderingInfo'::@viewMask@
+    -- when rendering.
     viewMask :: Word32
   , -- | @pColorAttachmentFormats@ is a pointer to an array of
     -- 'Vulkan.Core10.Enums.Format.Format' values defining the format of color
@@ -464,7 +572,7 @@
 -- per-device by that structure.
 --
 -- If multiview is enabled, and the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-multiviewPerViewRenderAreas multiviewPerViewRenderAreas>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-multiviewPerViewRenderAreas multiviewPerViewRenderAreas>
 -- feature is enabled, and there is an instance of
 -- 'Vulkan.Extensions.VK_QCOM_multiview_per_view_render_areas.MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM'
 -- included in the @pNext@ chain with @perViewRenderAreaCount@ not equal to
@@ -480,33 +588,44 @@
 -- provided in @pColorAttachments@[__X__]. If the @imageView@ member of any
 -- element of @pColorAttachments@ is
 -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', and @resolveMode@ is not
--- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID',
+-- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID',
 -- writes to the corresponding location by a fragment are discarded.
 --
+-- The @aspectMask@ of any image view specified for @pDepthAttachment@ or
+-- @pStencilAttachment@ is ignored. Instead, depth attachments are
+-- automatically treated as if
+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' was
+-- specified for their aspect masks, and stencil attachments are
+-- automatically treated as if
+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT' was
+-- specified for their aspect masks.
+--
 -- == Valid Usage
 --
 -- -   #VUID-VkRenderingInfo-viewMask-06069# If @viewMask@ is @0@,
 --     @layerCount@ /must/ not be @0@
 --
--- -   #VUID-VkRenderingInfo-multisampledRenderToSingleSampled-06857#
---     @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@ , if none of the following are enabled:
+-- -   #VUID-VkRenderingInfo-multisampledRenderToSingleSampled-06857# If
+--     none of the following are enabled:
 --
 --     -   The @VK_AMD_mixed_attachment_samples@ extension
 --
 --     -   The @VK_NV_framebuffer_mixed_samples@ extension
 --
 --     -   The
---         <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---         feature,
+--         <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
+--         feature
 --
+--     @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-imageView-09429# @imageView@ members of
 --     elements of @pColorAttachments@ that are not
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
 --     with the same @sampleCount@ , if the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
 --     feature is not enabled
 --
 -- -   #VUID-VkRenderingInfo-None-08994# If
@@ -518,7 +637,7 @@
 --     is 0, @renderArea.extent.height@ /must/ be greater than 0
 --
 -- -   #VUID-VkRenderingInfo-imageView-06858# If
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#subpass-multisampledrendertosinglesampled multisampled-render-to-single-sampled>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#subpass-multisampledrendertosinglesampled multisampled-render-to-single-sampled>
 --     is enabled, then all attachments referenced by @imageView@ members
 --     of @pDepthAttachment@, @pStencilAttachment@, and elements of
 --     @pColorAttachments@ that are not
@@ -529,7 +648,7 @@
 --     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'::@rasterizationSamples@
 --
 -- -   #VUID-VkRenderingInfo-imageView-06859# If
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#subpass-multisampledrendertosinglesampled multisampled-render-to-single-sampled>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#subpass-multisampledrendertosinglesampled multisampled-render-to-single-sampled>
 --     is enabled, then all attachments referenced by @imageView@ members
 --     of @pDepthAttachment@, @pStencilAttachment@, and elements of
 --     @pColorAttachments@ that are not
@@ -557,7 +676,7 @@
 --     or its @deviceRenderAreaCount@ member is equal to 0, the sum of
 --     @renderArea.extent.width@ and @renderArea.offset.x@ /must/ be less
 --     than or equal to
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxFramebufferWidth maxFramebufferWidth>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxFramebufferWidth maxFramebufferWidth>
 --
 -- -   #VUID-VkRenderingInfo-pNext-07816# If the @pNext@ chain does not
 --     contain
@@ -565,13 +684,13 @@
 --     or its @deviceRenderAreaCount@ member is equal to 0, the sum of
 --     @renderArea.extent.height@ and @renderArea.offset.y@ /must/ be less
 --     than or equal to
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxFramebufferWidth maxFramebufferHeight>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxFramebufferWidth maxFramebufferHeight>
 --
 -- -   #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@,
+--     the @imageView@ member of each 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@
@@ -580,7 +699,7 @@
 --     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@,
+--     the @imageView@ member of each 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@
@@ -617,20 +736,22 @@
 --     @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
+--     have been created with the
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT'
+--     usage flag set
 --
 -- -   #VUID-VkRenderingInfo-colorAttachmentCount-09476# If
 --     @colorAttachmentCount@ is not @0@ and there is an element of
 --     @pColorAttachments@ with either its @resolveMode@ member set to
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID',
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID',
 --     or its @imageView@ member not
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE', and its @resolveMode@
 --     member not set to
 --     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE', the
 --     @resolveImageView@ member of that element of @pColorAttachments@
---     /must/ have been created with
+--     /must/ have been created with the
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT'
+--     usage flag set
 --
 -- -   #VUID-VkRenderingInfo-pDepthAttachment-06547# If @pDepthAttachment@
 --     is not @NULL@ and @pDepthAttachment->imageView@ is not
@@ -641,14 +762,17 @@
 -- -   #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
+--     @pDepthAttachment->imageView@ /must/ have been created with the
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'
+--     usage flag set
 --
 -- -   #VUID-VkRenderingInfo-pDepthAttachment-09477# If @pDepthAttachment@
 --     is not @NULL@ and @pDepthAttachment->resolveMode@ is not
 --     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE',
 --     @pDepthAttachment->resolveImageView@ /must/ have been created with
+--     the
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'
+--     usage flag set
 --
 -- -   #VUID-VkRenderingInfo-pStencilAttachment-06548# If
 --     @pStencilAttachment@ is not @NULL@ and
@@ -661,16 +785,18 @@
 --     @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
+--     @pStencilAttachment->imageView@ /must/ have been created with the
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'
+--     usage flag set
 --
 -- -   #VUID-VkRenderingInfo-pStencilAttachment-09478# If
 --     @pStencilAttachment@ is not @NULL@ and
 --     @pStencilAttachment->resolveMode@ is not
 --     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE',
 --     @pStencilAttachment->resolveImageView@ /must/ have been created with
+--     the
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'
+--     usage flag set
 --
 -- -   #VUID-VkRenderingInfo-colorAttachmentCount-06090# If
 --     @colorAttachmentCount@ is not @0@ and the @imageView@ member of an
@@ -713,6 +839,28 @@
 --     @pStencilAttachment->layout@ /must/ not be
 --     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL'
 --
+-- -   #VUID-VkRenderingInfo-flags-11514# If @flags@ contains
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_CUSTOM_RESOLVE_BIT_EXT'
+--     or
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_FRAGMENT_REGION_BIT_EXT',
+--     then the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-customResolve customResolve>
+--     feature /must/ enabled
+--
+-- -   #VUID-VkRenderingInfo-pColorAttachments-11515# For any element of
+--     @pColorAttachments@, @pDepthAttachment@, or @pStencilAttachment@, if
+--     @resolveMode@ contains
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_CUSTOM_BIT_EXT',
+--     then @flags@ /must/ contain
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_CUSTOM_RESOLVE_BIT_EXT'
+--
+-- -   #VUID-VkRenderingInfo-flags-11516# If @flags@ contains
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_CUSTOM_RESOLVE_BIT_EXT',
+--     then for any element of @pColorAttachments@, @pDepthAttachment@, or
+--     @pStencilAttachment@, @resolveMode@ /must/ be
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_CUSTOM_BIT_EXT'
+--     or 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE'
+--
 -- -   #VUID-VkRenderingInfo-pStencilAttachment-06095# If
 --     @pStencilAttachment@ is not @NULL@, @pStencilAttachment->imageView@
 --     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and
@@ -721,6 +869,49 @@
 --     @pStencilAttachment->resolveImageLayout@ /must/ not be
 --     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL'
 --
+-- -   #VUID-VkRenderingInfo-layerCount-07817# @layerCount@ /must/ be less
+--     than or equal to
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxFramebufferLayers maxFramebufferLayers>
+--
+-- -   #VUID-VkRenderingInfo-viewMask-10859# If @viewMask@ is @0@, each
+--     @pColorAttachment->imageView@ and
+--     @pColorAttachment->resolveImageView@ that is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have a @layerCount@
+--     that is greater than or equal to 'RenderingInfo'::@layerCount@
+--
+-- -   #VUID-VkRenderingInfo-viewMask-10860# If @viewMask@ is @0@, each
+--     @pDepthAttachment->imageView@ and
+--     @pDepthAttachment->resolveImageView@ that is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have a @layerCount@
+--     that is greater than or equal to 'RenderingInfo'::@layerCount@
+--
+-- -   #VUID-VkRenderingInfo-viewMask-10861# If @viewMask@ is @0@, each
+--     @pStencilAttachment->imageView@ and
+--     @pStencilAttachment->resolveImageView@ that is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have a @layerCount@
+--     that is greater than or equal to 'RenderingInfo'::@layerCount@
+--
+-- -   #VUID-VkRenderingInfo-viewMask-12403# If @viewMask@ is not @0@, each
+--     @pColorAttachment->imageView@ and
+--     @pColorAttachment->resolveImageView@ that is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have a @layerCount@
+--     that is greater than the index of the most significant bit in
+--     @viewMask@
+--
+-- -   #VUID-VkRenderingInfo-viewMask-12404# If @viewMask@ is not @0@, each
+--     @pDepthAttachment->imageView@ and
+--     @pDepthAttachment->resolveImageView@ that is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have a @layerCount@
+--     that is greater than the index of the most significant bit in
+--     @viewMask@
+--
+-- -   #VUID-VkRenderingInfo-viewMask-12405# If @viewMask@ is not @0@, each
+--     @pStencilAttachment->imageView@ and
+--     @pStencilAttachment->resolveImageView@ that is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have a @layerCount@
+--     that is greater than the index of the most significant bit in
+--     @viewMask@
+--
 -- -   #VUID-VkRenderingInfo-colorAttachmentCount-06096# If
 --     @colorAttachmentCount@ is not @0@ and the @imageView@ member of an
 --     element of @pColorAttachments@ is not
@@ -858,7 +1049,7 @@
 --     'Vulkan.Extensions.VK_EXT_fragment_density_map.RenderingFragmentDensityMapAttachmentInfoEXT'
 --     structure included in the @pNext@ chain is not
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-fragmentDensityMapNonSubsampledImages fragmentDensityMapNonSubsampledImages>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-fragmentDensityMapNonSubsampledImages fragmentDensityMapNonSubsampledImages>
 --     feature is not enabled, valid @imageView@ and @resolveImageView@
 --     members of @pDepthAttachment@, @pStencilAttachment@, and each
 --     element of @pColorAttachments@ /must/ be a
@@ -870,8 +1061,8 @@
 --     'Vulkan.Extensions.VK_EXT_fragment_density_map.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@
+--     @imageView@ /must/ have a @layerCount@ greater than the index of the
+--     most significant bit in @viewMask@
 --
 -- -   #VUID-VkRenderingInfo-imageView-06109# If the @imageView@ member of
 --     a
@@ -932,10 +1123,20 @@
 --     the @imageView@ or @resolveImageView@ member of @pDepthAttachment@,
 --     @pStencilAttachment@, or any element of @pColorAttachments@
 --
+-- -   #VUID-VkRenderingInfo-flags-10826# If @flags@ contains
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE',
+--     then @layerCount@ /must/ be less than or equal to
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxFragmentDensityMapLayers maxFragmentDensityMapLayers>
+--
+-- -   #VUID-VkRenderingInfo-fragmentDensityMapLayered-10827# If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-fragmentDensityMapLayered fragmentDensityMapLayered>
+--     feature is not enabled, @flags@ /must/ not contain
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE'
+--
 -- -   #VUID-VkRenderingInfo-pNext-06119# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-maintenance7 maintenance7>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance7 maintenance7>
 --     feature is not enabled or the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-robustFragmentShadingRateAttachmentAccess robustFragmentShadingRateAttachmentAccess>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-robustFragmentShadingRateAttachmentAccess robustFragmentShadingRateAttachmentAccess>
 --     limit is 'Vulkan.Core10.FundamentalTypes.FALSE' or the @imageView@
 --     member of a
 --     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.RenderingFragmentShadingRateAttachmentInfoKHR'
@@ -952,9 +1153,9 @@
 --     \(\left\lceil{\frac{renderArea_{x}+renderArea_{width}}{shadingRateAttachmentTexelSize_{width}}}\right\rceil\)
 --
 -- -   #VUID-VkRenderingInfo-pNext-06121# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-maintenance7 maintenance7>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance7 maintenance7>
 --     feature is not enabled or the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-robustFragmentShadingRateAttachmentAccess robustFragmentShadingRateAttachmentAccess>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-robustFragmentShadingRateAttachmentAccess robustFragmentShadingRateAttachmentAccess>
 --     limit is 'Vulkan.Core10.FundamentalTypes.FALSE' or the @imageView@
 --     member of a
 --     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.RenderingFragmentShadingRateAttachmentInfoKHR'
@@ -971,9 +1172,9 @@
 --     \(\left\lceil{\frac{renderArea_{y}+renderArea_{height}}{shadingRateAttachmentTexelSize_{height}}}\right\rceil\)
 --
 -- -   #VUID-VkRenderingInfo-pNext-06120# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-maintenance7 maintenance7>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance7 maintenance7>
 --     feature is not enabled or the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-robustFragmentShadingRateAttachmentAccess robustFragmentShadingRateAttachmentAccess>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-robustFragmentShadingRateAttachmentAccess robustFragmentShadingRateAttachmentAccess>
 --     limit is 'Vulkan.Core10.FundamentalTypes.FALSE' or the @imageView@
 --     member of a
 --     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.RenderingFragmentShadingRateAttachmentInfoKHR'
@@ -991,9 +1192,9 @@
 --     for each element of @pDeviceRenderAreas@
 --
 -- -   #VUID-VkRenderingInfo-pNext-06122# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-maintenance7 maintenance7>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance7 maintenance7>
 --     feature is not enabled or the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-robustFragmentShadingRateAttachmentAccess robustFragmentShadingRateAttachmentAccess>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-robustFragmentShadingRateAttachmentAccess robustFragmentShadingRateAttachmentAccess>
 --     limit is 'Vulkan.Core10.FundamentalTypes.FALSE' or the @imageView@
 --     member of a
 --     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.RenderingFragmentShadingRateAttachmentInfoKHR'
@@ -1010,26 +1211,21 @@
 --     \(\left\lceil{\frac{pDeviceRenderAreas_{y}+pDeviceRenderAreas_{height}}{shadingRateAttachmentTexelSize_{height}}}\right\rceil\)
 --     for each element of @pDeviceRenderAreas@
 --
--- -   #VUID-VkRenderingInfo-layerCount-07817# @layerCount@ /must/ be less
---     than or equal to
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxFramebufferLayers maxFramebufferLayers>
---
 -- -   #VUID-VkRenderingInfo-imageView-06123# If the @imageView@ member of
 --     a
 --     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.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@
+--     or greater than or equal to 'RenderingInfo'::@layerCount@
 --
 -- -   #VUID-VkRenderingInfo-imageView-06124# If the @imageView@ member of
 --     a
 --     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.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@
+--     @imageView@ /must/ have a @layerCount@ that is either equal to @1@
+--     or greater than the index of the most significant bit in @viewMask@
 --
 -- -   #VUID-VkRenderingInfo-imageView-06125# If the @imageView@ member of
 --     a
@@ -1049,18 +1245,18 @@
 --     structure included in the @pNext@ chain
 --
 -- -   #VUID-VkRenderingInfo-multiview-06127# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-multiview multiview>
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxMultiviewViewCount maxMultiviewViewCount>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxMultiviewViewCount maxMultiviewViewCount>
 --
 -- -   #VUID-VkRenderingInfo-perViewRenderAreaCount-07857# If the
 --     @perViewRenderAreaCount@ member of a
 --     'Vulkan.Extensions.VK_QCOM_multiview_per_view_render_areas.MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM'
 --     structure included in the @pNext@ chain is not @0@, then the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-multiviewPerViewRenderAreas multiviewPerViewRenderAreas>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-multiviewPerViewRenderAreas multiviewPerViewRenderAreas>
 --     feature /must/ be enabled
 --
 -- -   #VUID-VkRenderingInfo-perViewRenderAreaCount-07858# If the
@@ -1078,39 +1274,39 @@
 --     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_CONTENTS_INLINE_BIT_KHR'
 --     then at least one of the following features /must/ be enabled
 --
---     -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-maintenance7 maintenance7>
+--     -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance7 maintenance7>
 --
---     -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-nestedCommandBuffer nestedCommandBuffer>
+--     -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-nestedCommandBuffer nestedCommandBuffer>
 --
 -- -   #VUID-VkRenderingInfo-pDepthAttachment-09318#
 --     @pDepthAttachment->resolveMode@ /must/ not be
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID'
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID'
 --
 -- -   #VUID-VkRenderingInfo-pStencilAttachment-09319#
 --     @pStencilAttachment->resolveMode@ /must/ not be
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID'
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID'
 --
 -- -   #VUID-VkRenderingInfo-colorAttachmentCount-09320# If
 --     @colorAttachmentCount@ is not @1@, the @resolveMode@ member of any
 --     element of @pColorAttachments@ /must/ not be
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID'
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID'
 --
 -- -   #VUID-VkRenderingInfo-resolveMode-09321# If the @resolveMode@ of any
 --     element of @pColorAttachments@ is
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID',
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID',
 --     'Vulkan.Extensions.VK_EXT_fragment_density_map.RenderingFragmentDensityMapAttachmentInfoEXT'::@imageView@
 --     /must/ be 'Vulkan.Core10.APIConstants.NULL_HANDLE'
 --
 -- -   #VUID-VkRenderingInfo-resolveMode-09322# If the @resolveMode@ of any
 --     element of @pColorAttachments@ is
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID',
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID',
 --     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.RenderingFragmentShadingRateAttachmentInfoKHR'::@imageView@
 --     /must/ be 'Vulkan.Core10.APIConstants.NULL_HANDLE'
 --
 -- -   #VUID-VkRenderingInfo-pNext-09535# If the @pNext@ chain contains a
 --     'Vulkan.Extensions.VK_ARM_render_pass_striped.RenderPassStripeBeginInfoARM'
 --     structure, the union of stripe areas defined by the elements of
---     'Vulkan.Extensions.VK_ARM_render_pass_striped.RenderPassStripeInfoARM'::@pStripeInfos@
+--     'Vulkan.Extensions.VK_ARM_render_pass_striped.RenderPassStripeBeginInfoARM'::@pStripeInfos@
 --     /must/ cover the @renderArea@
 --
 -- -   #VUID-VkRenderingInfo-colorAttachmentCount-09479# If
@@ -1118,25 +1314,25 @@
 --     element of @pColorAttachments@ is not
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE', that @imageView@ /must/
 --     have been created with the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-views-identity-mappings identity swizzle>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-image-views-identity-mappings identity swizzle>
 --
 -- -   #VUID-VkRenderingInfo-colorAttachmentCount-09480# If
 --     @colorAttachmentCount@ is not @0@, and there is an element of
 --     @pColorAttachments@ with either its @resolveMode@ member set to
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID',
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID',
 --     or its @imageView@ member not set to
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE' and its @resolveMode@
 --     member not set to
 --     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE', the
 --     @resolveImageView@ member of that element of @pColorAttachments@
 --     /must/ have been created with the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-views-identity-mappings identity swizzle>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-image-views-identity-mappings identity swizzle>
 --
 -- -   #VUID-VkRenderingInfo-pDepthAttachment-09481# If @pDepthAttachment@
 --     is not @NULL@ and @pDepthAttachment->imageView@ is not
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE',
 --     @pDepthAttachment->imageView@ /must/ have been created with the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-views-identity-mappings identity swizzle>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-image-views-identity-mappings identity swizzle>
 --
 -- -   #VUID-VkRenderingInfo-pDepthAttachment-09482# If @pDepthAttachment@
 --     is not @NULL@, @pDepthAttachment->imageView@ is not
@@ -1145,14 +1341,14 @@
 --     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE',
 --     @pDepthAttachment->resolveImageView@ /must/ have been created with
 --     the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-views-identity-mappings identity swizzle>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-image-views-identity-mappings identity swizzle>
 --
 -- -   #VUID-VkRenderingInfo-pStencilAttachment-09483# If
 --     @pStencilAttachment@ is not @NULL@ and
 --     @pStencilAttachment->imageView@ is not
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE',
 --     @pStencilAttachment->imageView@ /must/ have been created with the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-views-identity-mappings identity swizzle>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-image-views-identity-mappings identity swizzle>
 --
 -- -   #VUID-VkRenderingInfo-pStencilAttachment-09484# If
 --     @pStencilAttachment@ is not @NULL@, @pStencilAttachment->imageView@
@@ -1161,7 +1357,7 @@
 --     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE',
 --     @pStencilAttachment->resolveImageView@ /must/ have been created with
 --     the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-views-identity-mappings identity swizzle>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-image-views-identity-mappings identity swizzle>
 --
 -- -   #VUID-VkRenderingInfo-imageView-09485# If the @imageView@ member of
 --     a
@@ -1169,7 +1365,7 @@
 --     structure included in the @pNext@ chain is not
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE', it /must/ have been
 --     created with the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-views-identity-mappings identity swizzle>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-image-views-identity-mappings identity swizzle>
 --
 -- -   #VUID-VkRenderingInfo-imageView-09486# If the @imageView@ member of
 --     a
@@ -1177,8 +1373,24 @@
 --     structure included in the @pNext@ chain is not
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE', it /must/ have been
 --     created with the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-views-identity-mappings identity swizzle>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-image-views-identity-mappings identity swizzle>
 --
+-- -   #VUID-VkRenderingInfo-imageView-10643# If the @imageView@ member of
+--     a
+--     'Vulkan.Extensions.VK_EXT_fragment_density_map.RenderingFragmentDensityMapAttachmentInfoEXT'
+--     structure included in the @pNext@ chain is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE',
+--     'Vulkan.Extensions.VK_QCOM_tile_shading.TILE_SHADING_RENDER_PASS_ENABLE_BIT_QCOM'
+--     /must/ not be included in
+--     'Vulkan.Extensions.VK_QCOM_tile_shading.RenderPassTileShadingCreateInfoQCOM'::@flags@
+--
+-- -   #VUID-VkRenderingInfo-resolveMode-10644# If the @resolveMode@ of any
+--     element of @pColorAttachments@ is
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID',
+--     'Vulkan.Extensions.VK_QCOM_tile_shading.TILE_SHADING_RENDER_PASS_ENABLE_BIT_QCOM'
+--     /must/ not be included in
+--     'Vulkan.Extensions.VK_QCOM_tile_shading.RenderPassTileShadingCreateInfoQCOM'::@flags@
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-VkRenderingInfo-sType-sType# @sType@ /must/ be
@@ -1191,13 +1403,16 @@
 --     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT',
 --     'Vulkan.Extensions.VK_NVX_multiview_per_view_attributes.MultiviewPerViewAttributesInfoNVX',
 --     'Vulkan.Extensions.VK_QCOM_multiview_per_view_render_areas.MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM',
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkRenderPassPerformanceCountersByRegionBeginInfoARM VkRenderPassPerformanceCountersByRegionBeginInfoARM>,
 --     'Vulkan.Extensions.VK_ARM_render_pass_striped.RenderPassStripeBeginInfoARM',
+--     'Vulkan.Extensions.VK_QCOM_tile_shading.RenderPassTileShadingCreateInfoQCOM',
 --     'Vulkan.Extensions.VK_EXT_fragment_density_map.RenderingFragmentDensityMapAttachmentInfoEXT',
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.RenderingFragmentShadingRateAttachmentInfoKHR',
 --     or
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.RenderingFragmentShadingRateAttachmentInfoKHR'
+--     'Vulkan.Extensions.VK_QCOM_tile_memory_heap.TileMemorySizeInfoQCOM'
 --
--- -   #VUID-VkRenderingInfo-sType-unique# The @sType@ value of each struct
---     in the @pNext@ chain /must/ be unique
+-- -   #VUID-VkRenderingInfo-sType-unique# The @sType@ value of each
+--     structure in the @pNext@ chain /must/ be unique
 --
 -- -   #VUID-VkRenderingInfo-flags-parameter# @flags@ /must/ be a valid
 --     combination of
@@ -1224,7 +1439,7 @@
 -- 'Vulkan.Core10.FundamentalTypes.Rect2D', 'RenderingAttachmentInfo',
 -- 'Vulkan.Core13.Enums.RenderingFlagBits.RenderingFlags',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType', 'cmdBeginRendering',
--- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+-- 'cmdBeginRendering',
 -- 'Vulkan.Extensions.VK_QCOM_tile_properties.getDynamicRenderingTilePropertiesQCOM'
 data RenderingInfo (es :: [Type]) = RenderingInfo
   { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
@@ -1238,19 +1453,19 @@
   , -- | @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@ is a bitfield of view indices describing which views are
+    -- active during rendering, 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
+    colorAttachments :: Vector (SomeStruct RenderingAttachmentInfo)
   , -- | @pDepthAttachment@ is a pointer to a 'RenderingAttachmentInfo' structure
     -- describing a depth attachment.
-    depthAttachment :: Maybe RenderingAttachmentInfo
+    depthAttachment :: Maybe (SomeStruct RenderingAttachmentInfo)
   , -- | @pStencilAttachment@ is a pointer to a 'RenderingAttachmentInfo'
     -- structure describing a stencil attachment.
-    stencilAttachment :: Maybe RenderingAttachmentInfo
+    stencilAttachment :: Maybe (SomeStruct RenderingAttachmentInfo)
   }
   deriving (Typeable)
 #if defined(GENERIC_INSTANCES)
@@ -1264,7 +1479,9 @@
   getNext RenderingInfo{..} = next
   extends :: forall e b proxy. Typeable e => proxy e -> (Extends RenderingInfo e => b) -> Maybe b
   extends _ f
+    | Just Refl <- eqT @e @RenderPassTileShadingCreateInfoQCOM = Just f
     | Just Refl <- eqT @e @RenderPassStripeBeginInfoARM = Just f
+    | Just Refl <- eqT @e @TileMemorySizeInfoQCOM = Just f
     | Just Refl <- eqT @e @MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM = Just f
     | Just Refl <- eqT @e @MultiviewPerViewAttributesInfoNVX = Just f
     | Just Refl <- eqT @e @RenderingFragmentDensityMapAttachmentInfoEXT = Just f
@@ -1285,17 +1502,17 @@
     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')
+    pPColorAttachments' <- ContT $ allocaBytes @(RenderingAttachmentInfo _) ((Data.Vector.length (colorAttachments)) * 72)
+    Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (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''
+      Just j -> ContT @_ @_ @(Ptr (RenderingAttachmentInfo '[])) $ \cont -> withSomeCStruct @RenderingAttachmentInfo (j) (cont . castPtr)
+    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''
+      Just j -> ContT @_ @_ @(Ptr (RenderingAttachmentInfo '[])) $ \cont -> withSomeCStruct @RenderingAttachmentInfo (j) (cont . castPtr)
+    lift $ poke ((p `plusPtr` 64 :: Ptr (Ptr (RenderingAttachmentInfo _)))) pStencilAttachment''
     lift $ f
   cStructSize = 72
   cStructAlignment = 8
@@ -1328,13 +1545,13 @@
 -- @loadOp@ and @storeOp@, within the render area for each device specified
 -- in 'RenderingInfo'. If @imageView@ is
 -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', and @resolveMode@ is not
--- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID',
+-- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID',
 -- other members of this structure are ignored; writes to this attachment
 -- will be discarded, and no
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-load-operations load>,
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-store-operations store>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-load-operations load>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-store-operations store>,
 -- or
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-resolve-operations multisample resolve>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-resolve-operations multisample resolve>
 -- operations will be performed.
 --
 -- If @resolveMode@ is
@@ -1342,36 +1559,60 @@
 -- @resolveImageView@ is ignored. If @resolveMode@ is not
 -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE', and
 -- @resolveImageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-resolve-operations render pass multisample resolve operation>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-resolve-operations render pass multisample resolve operation>
 -- is defined for the attachment subresource. If @resolveMode@ is
--- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID',
+-- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID',
 -- and the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-nullColorAttachmentWithExternalFormatResolve nullColorAttachmentWithExternalFormatResolve>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-nullColorAttachmentWithExternalFormatResolve nullColorAttachmentWithExternalFormatResolve>
 -- limit is 'Vulkan.Core10.FundamentalTypes.TRUE', values are only
 -- undefined once
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-load-operations load operations>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-load-operations load operations>
 -- have completed.
 --
+-- The contents of a resolve attachment within the render area become
+-- undefined at the time
+-- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT' is
+-- called if all of the following conditions are true:
+--
+-- -   'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_CUSTOM_RESOLVE_BIT_EXT'
+--     is set.
+--
+-- -   The attachment sets @resolveMode@ to
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_CUSTOM_BIT_EXT'.
+--
+-- This affects color, depth, and stencil attachments. In addition, there
+-- is an implicit
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-store-operations store operation>
+-- of 'Vulkan.Core10.Enums.AttachmentStoreOp.ATTACHMENT_STORE_OP_STORE' for
+-- these attachments.
+--
 -- 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.
+-- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.RENDERING_SUSPENDING_BIT_KHR'
+-- flag. If the
+-- 'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_CUSTOM_RESOLVE_BIT_EXT'
+-- is specified and an attachment uses the
+-- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_CUSTOM_BIT_EXT'
+-- resolve mode, the resolve attachment will only be written by draws
+-- recorded following a call to
+-- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'.
 --
 -- 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.
+-- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.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.
 --
 -- If the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-nullColorAttachmentWithExternalFormatResolve nullColorAttachmentWithExternalFormatResolve>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-nullColorAttachmentWithExternalFormatResolve nullColorAttachmentWithExternalFormatResolve>
 -- limit is 'Vulkan.Core10.FundamentalTypes.TRUE', and @resolveMode@ is
--- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID',
+-- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID',
 -- values in the color attachment will be loaded from the resolve
 -- attachment at the start of rendering, and /may/ also be reloaded any
 -- time after a resolve occurs or the resolve attachment is written to; if
@@ -1386,18 +1627,20 @@
 --     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_CUSTOM_BIT_EXT'
+--     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_CUSTOM_BIT_EXT'
+--     or
 --     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_SAMPLE_ZERO_BIT'
 --
--- -   #VUID-VkRenderingAttachmentInfo-imageView-06861# @imageView@ /must/
---     not have a sample count of
---     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' if all
---     of the following hold:
+-- -   #VUID-VkRenderingAttachmentInfo-imageView-06861# If all of the
+--     following are true:
 --
 --     -   @imageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE'
 --
@@ -1409,10 +1652,12 @@
 --         structure with the @multisampledRenderToSingleSampledEnable@
 --         field equal to 'Vulkan.Core10.FundamentalTypes.TRUE'
 --
--- -   #VUID-VkRenderingAttachmentInfo-imageView-06862# @resolveImageView@
---     /must/ not be 'Vulkan.Core10.APIConstants.NULL_HANDLE' if all of the
---     following hold:
+--     @imageView@ /must/ not have a sample count of
+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'
 --
+-- -   #VUID-VkRenderingAttachmentInfo-imageView-06862# If all of the
+--     following are true:
+--
 --     -   @imageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE'
 --
 --     -   @resolveMode@ is not
@@ -1423,6 +1668,9 @@
 --         structure with the @multisampledRenderToSingleSampledEnable@
 --         field equal to 'Vulkan.Core10.FundamentalTypes.TRUE'
 --
+--     @resolveImageView@ /must/ not be
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
 -- -   #VUID-VkRenderingAttachmentInfo-imageView-06863# If @imageView@ is
 --     not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @resolveMode@ is not
 --     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE', the
@@ -1435,6 +1683,22 @@
 --     @resolveImageView@ /must/ be
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE'
 --
+-- -   #VUID-VkRenderingAttachmentInfo-None-12256# If all of the following
+--     are true:
+--
+--     -   @imageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+--     -   @imageView@ has a sample count of
+--         'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'
+--
+--     -   the @pNext@ chain of 'RenderingInfo' includes a
+--         'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'
+--         structure with the @multisampledRenderToSingleSampledEnable@
+--         field equal to 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+--     then @resolveMode@ /must/ not be
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE'
+--
 -- -   #VUID-VkRenderingAttachmentInfo-imageView-06864# If @imageView@ is
 --     not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @resolveImageView@ is
 --     not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and @resolveMode@ is
@@ -1445,7 +1709,9 @@
 -- -   #VUID-VkRenderingAttachmentInfo-imageView-06865# If @imageView@ is
 --     not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @resolveImageView@ is
 --     not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and @resolveMode@ is
---     not 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE',
+--     neither
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_CUSTOM_BIT_EXT'
+--     nor 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE',
 --     @imageView@ and @resolveImageView@ /must/ have the same
 --     'Vulkan.Core10.Enums.Format.Format'
 --
@@ -1454,6 +1720,7 @@
 --     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_ZERO_INITIALIZED_EXT',
 --     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL',
 --     or 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_PREINITIALIZED'
 --
@@ -1465,6 +1732,7 @@
 --     '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_ZERO_INITIALIZED_EXT',
 --     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL',
 --     or 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_PREINITIALIZED'
 --
@@ -1515,6 +1783,19 @@
 --     @resolveImageLayout@ /must/ not be
 --     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR'
 --
+-- -   #VUID-VkRenderingAttachmentInfo-imageView-10780# If
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-feedbackloop feedback loop is enabled>
+--     for the attachment identified by @imageView@, then @imageView@
+--     /must/ have been created with a @usage@ value including
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT',
+--     either
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT'
+--     or
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT',
+--     and either
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT'
+--     or 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT'
+--
 -- -   #VUID-VkRenderingAttachmentInfo-imageView-06145# If @imageView@ is
 --     not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @imageLayout@ /must/
 --     not be
@@ -1527,59 +1808,59 @@
 --     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_PRESENT_SRC_KHR'
 --
 -- -   #VUID-VkRenderingAttachmentInfo-externalFormatResolve-09323# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-externalFormatResolve externalFormatResolve>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-externalFormatResolve externalFormatResolve>
 --     feature is not enabled, @resolveMode@ /must/ not be
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID'
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID'
 --
 -- -   #VUID-VkRenderingAttachmentInfo-resolveMode-09324# If @resolveMode@
 --     is
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID',
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID',
 --     @resolveImageView@ /must/ be a valid image view
 --
 -- -   #VUID-VkRenderingAttachmentInfo-nullColorAttachmentWithExternalFormatResolve-09325#
 --     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-nullColorAttachmentWithExternalFormatResolve nullColorAttachmentWithExternalFormatResolve>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-nullColorAttachmentWithExternalFormatResolve nullColorAttachmentWithExternalFormatResolve>
 --     property is 'Vulkan.Core10.FundamentalTypes.TRUE' and @resolveMode@
 --     is
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID',
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID',
 --     @resolveImageView@ /must/ have been created with an image with a
 --     @samples@ value of
 --     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'
 --
 -- -   #VUID-VkRenderingAttachmentInfo-resolveMode-09326# If @resolveMode@
 --     is
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID',
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID',
 --     @resolveImageView@ /must/ have been created with an external format
 --     specified by
 --     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'
 --
 -- -   #VUID-VkRenderingAttachmentInfo-resolveMode-09327# If @resolveMode@
 --     is
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID',
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID',
 --     @resolveImageView@ /must/ have been created with a
 --     @subresourceRange.layerCount@ of @1@
 --
 -- -   #VUID-VkRenderingAttachmentInfo-resolveMode-09328# If @resolveMode@
 --     is
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID'
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID'
 --     and
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-nullColorAttachmentWithExternalFormatResolve nullColorAttachmentWithExternalFormatResolve>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-nullColorAttachmentWithExternalFormatResolve nullColorAttachmentWithExternalFormatResolve>
 --     is 'Vulkan.Core10.FundamentalTypes.TRUE', @imageView@ /must/ be
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE'
 --
 -- -   #VUID-VkRenderingAttachmentInfo-resolveMode-09329# If @resolveMode@
 --     is
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID'
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID'
 --     and
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-nullColorAttachmentWithExternalFormatResolve nullColorAttachmentWithExternalFormatResolve>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-nullColorAttachmentWithExternalFormatResolve nullColorAttachmentWithExternalFormatResolve>
 --     is 'Vulkan.Core10.FundamentalTypes.FALSE', @imageView@ /must/ be a
 --     valid 'Vulkan.Core10.Handles.ImageView'
 --
 -- -   #VUID-VkRenderingAttachmentInfo-resolveMode-09330# If @resolveMode@
 --     is
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID'
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID'
 --     and
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-nullColorAttachmentWithExternalFormatResolve nullColorAttachmentWithExternalFormatResolve>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-nullColorAttachmentWithExternalFormatResolve nullColorAttachmentWithExternalFormatResolve>
 --     is 'Vulkan.Core10.FundamentalTypes.FALSE', @imageView@ /must/ have a
 --     format equal to the value of
 --     'Vulkan.Extensions.VK_ANDROID_external_format_resolve.AndroidHardwareBufferFormatResolvePropertiesANDROID'::@colorAttachmentFormat@
@@ -1588,14 +1869,57 @@
 --     for the Android hardware buffer that was used to create
 --     @resolveImageView@
 --
+-- -   #VUID-VkRenderingAttachmentInfo-resolveImageView-10728# If
+--     @resolveImageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
+--     the underlying resource must not be bound to a
+--     'Vulkan.Core10.Handles.DeviceMemory' object allocated from a
+--     'Vulkan.Core10.DeviceInitialization.MemoryHeap' with the
+--     'Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_TILE_MEMORY_BIT_QCOM'
+--     property
+--
+-- -   #VUID-VkRenderingAttachmentInfo-pNext-11752# If the @pNext@ chain
+--     includes a
+--     'Vulkan.Extensions.VK_KHR_maintenance10.RenderingAttachmentFlagsInfoKHR'
+--     structure, and @flags@ includes
+--     'Vulkan.Extensions.VK_KHR_maintenance10.RENDERING_ATTACHMENT_RESOLVE_SKIP_TRANSFER_FUNCTION_BIT_KHR'
+--     or
+--     'Vulkan.Extensions.VK_KHR_maintenance10.RENDERING_ATTACHMENT_RESOLVE_ENABLE_TRANSFER_FUNCTION_BIT_KHR',
+--     @imageView@ /must/ have a format using sRGB encoding
+--
+-- -   #VUID-VkRenderingAttachmentInfo-pNext-11753# If the @pNext@ chain
+--     includes a
+--     'Vulkan.Extensions.VK_KHR_maintenance10.RenderingAttachmentFlagsInfoKHR'
+--     structure, and @flags@ includes
+--     'Vulkan.Extensions.VK_KHR_maintenance10.RENDERING_ATTACHMENT_RESOLVE_SKIP_TRANSFER_FUNCTION_BIT_KHR'
+--     or
+--     'Vulkan.Extensions.VK_KHR_maintenance10.RENDERING_ATTACHMENT_RESOLVE_ENABLE_TRANSFER_FUNCTION_BIT_KHR',
+--     @resolveMode@ /must/ be equal to
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_AVERAGE_BIT'
+--
+-- -   #VUID-VkRenderingAttachmentInfo-pNext-11754# If the @pNext@ chain
+--     includes a
+--     'Vulkan.Extensions.VK_KHR_maintenance10.RenderingAttachmentFlagsInfoKHR'
+--     structure, and @flags@ includes
+--     'Vulkan.Extensions.VK_KHR_maintenance10.RENDERING_ATTACHMENT_INPUT_ATTACHMENT_FEEDBACK_BIT_KHR',
+--     @imageView@ /must/ have an image that was created with the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT'
+--     usage flag set
+--
 -- == 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-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_unified_image_layouts.AttachmentFeedbackLoopInfoEXT'
+--     or
+--     'Vulkan.Extensions.VK_KHR_maintenance10.RenderingAttachmentFlagsInfoKHR'
 --
+-- -   #VUID-VkRenderingAttachmentInfo-sType-unique# The @sType@ value of
+--     each structure in the @pNext@ chain /must/ be unique
+--
 -- -   #VUID-VkRenderingAttachmentInfo-imageView-parameter# If @imageView@
 --     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @imageView@ /must/
 --     be a valid 'Vulkan.Core10.Handles.ImageView' handle
@@ -1645,8 +1969,10 @@
 -- '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.
+data RenderingAttachmentInfo (es :: [Type]) = RenderingAttachmentInfo
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
+    next :: Chain es
+  , -- | @imageView@ is the image view that will be used for rendering.
     imageView :: ImageView
   , -- | @imageLayout@ is the layout that @imageView@ will be in during
     -- rendering.
@@ -1664,12 +1990,12 @@
     resolveImageLayout :: ImageLayout
   , -- | @loadOp@ is a 'Vulkan.Core10.Enums.AttachmentLoadOp.AttachmentLoadOp'
     -- value defining the
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-load-operations load operation>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-load-operations load operation>
     -- for the attachment.
     loadOp :: AttachmentLoadOp
   , -- | @storeOp@ is a 'Vulkan.Core10.Enums.AttachmentStoreOp.AttachmentStoreOp'
     -- value defining the
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-store-operations store operation>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-store-operations store operation>
     -- for the attachment.
     storeOp :: AttachmentStoreOp
   , -- | @clearValue@ is a 'Vulkan.Core10.CommandBufferBuilding.ClearValue'
@@ -1679,15 +2005,27 @@
   }
   deriving (Typeable)
 #if defined(GENERIC_INSTANCES)
-deriving instance Generic (RenderingAttachmentInfo)
+deriving instance Generic (RenderingAttachmentInfo (es :: [Type]))
 #endif
-deriving instance Show RenderingAttachmentInfo
+deriving instance Show (Chain es) => Show (RenderingAttachmentInfo es)
 
-instance ToCStruct RenderingAttachmentInfo where
+instance Extensible RenderingAttachmentInfo where
+  extensibleTypeName = "RenderingAttachmentInfo"
+  setNext RenderingAttachmentInfo{..} next' = RenderingAttachmentInfo{next = next', ..}
+  getNext RenderingAttachmentInfo{..} = next
+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends RenderingAttachmentInfo e => b) -> Maybe b
+  extends _ f
+    | Just Refl <- eqT @e @RenderingAttachmentFlagsInfoKHR = Just f
+    | Just Refl <- eqT @e @AttachmentFeedbackLoopInfoEXT = Just f
+    | otherwise = Nothing
+
+instance ( Extendss RenderingAttachmentInfo es
+         , PokeChain es ) => ToCStruct (RenderingAttachmentInfo es) 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)
+    pNext'' <- fmap castPtr . ContT $ withChain (next)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
     lift $ poke ((p `plusPtr` 16 :: Ptr ImageView)) (imageView)
     lift $ poke ((p `plusPtr` 24 :: Ptr ImageLayout)) (imageLayout)
     lift $ poke ((p `plusPtr` 28 :: Ptr ResolveModeFlagBits)) (resolveMode)
@@ -1701,7 +2039,8 @@
   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)
+    pNext' <- fmap castPtr . ContT $ withZeroChain @es
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
     lift $ poke ((p `plusPtr` 24 :: Ptr ImageLayout)) (zero)
     lift $ poke ((p `plusPtr` 40 :: Ptr ImageLayout)) (zero)
     lift $ poke ((p `plusPtr` 44 :: Ptr AttachmentLoadOp)) (zero)
@@ -1709,8 +2048,9 @@
     ContT $ pokeCStruct ((p `plusPtr` 52 :: Ptr ClearValue)) (zero) . ($ ())
     lift $ f
 
-instance Zero RenderingAttachmentInfo where
+instance es ~ '[] => Zero (RenderingAttachmentInfo es) where
   zero = RenderingAttachmentInfo
+           ()
            zero
            zero
            zero
@@ -1736,12 +2076,22 @@
 -- 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.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceDynamicRenderingFeatures', it /must/ add an instance of
+-- the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering VK_KHR_dynamic_rendering>,
@@ -1809,7 +2159,7 @@
 -- parameters of this structure are ignored.
 --
 -- If @colorAttachmentCount@ is @0@ and the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-variableMultisampleRate variableMultisampleRate>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-variableMultisampleRate variableMultisampleRate>
 -- feature is enabled, @rasterizationSamples@ is ignored.
 --
 -- If @depthAttachmentFormat@, @stencilAttachmentFormat@, or any element of
@@ -1827,7 +2177,7 @@
 --
 -- -   #VUID-VkCommandBufferInheritanceRenderingInfo-variableMultisampleRate-06005#
 --     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-variableMultisampleRate variableMultisampleRate>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-variableMultisampleRate variableMultisampleRate>
 --     feature is not enabled, @rasterizationSamples@ /must/ be a valid
 --     'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' value
 --
@@ -1840,7 +2190,7 @@
 --     If @depthAttachmentFormat@ is not
 --     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', it /must/ be a format
 --     with
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#potential-format-features potential format features>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#potential-format-features potential format features>
 --     that include
 --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT'
 --
@@ -1848,13 +2198,13 @@
 --     If any element of @pColorAttachmentFormats@ is not
 --     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', it /must/ be a format
 --     with
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#potential-format-features potential format features>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#potential-format-features potential format features>
 --     that include
 --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BIT'
 --     , or
 --     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV'
 --     if the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-linearColorAttachment linearColorAttachment>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-linearColorAttachment linearColorAttachment>
 --     feature is enabled
 --
 -- -   #VUID-VkCommandBufferInheritanceRenderingInfo-stencilAttachmentFormat-06541#
@@ -1866,7 +2216,7 @@
 --     If @stencilAttachmentFormat@ is not
 --     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', it /must/ be a format
 --     with
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#potential-format-features potential format features>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#potential-format-features potential format features>
 --     that include
 --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT'
 --
@@ -1879,12 +2229,12 @@
 --
 -- -   #VUID-VkCommandBufferInheritanceRenderingInfo-multiview-06008# If
 --     the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-multiview multiview>
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxMultiviewViewCount maxMultiviewViewCount>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxMultiviewViewCount maxMultiviewViewCount>
 --
 -- == Valid Usage (Implicit)
 --
@@ -1913,6 +2263,12 @@
 --     If @rasterizationSamples@ is not @0@, @rasterizationSamples@ /must/
 --     be a valid
 --     'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' value
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo'
 --
 -- = See Also
 --
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
--- a/src/Vulkan/Core13/Promoted_From_VK_KHR_dynamic_rendering.hs-boot
+++ b/src/Vulkan/Core13/Promoted_From_VK_KHR_dynamic_rendering.hs-boot
@@ -37,10 +37,12 @@
 instance FromCStruct PipelineRenderingCreateInfo
 
 
-data RenderingAttachmentInfo
+type role RenderingAttachmentInfo nominal
+data RenderingAttachmentInfo (es :: [Type])
 
-instance ToCStruct RenderingAttachmentInfo
-instance Show RenderingAttachmentInfo
+instance ( Extendss RenderingAttachmentInfo es
+         , PokeChain es ) => ToCStruct (RenderingAttachmentInfo es)
+instance Show (Chain es) => Show (RenderingAttachmentInfo es)
 
 
 type role RenderingInfo nominal
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
--- a/src/Vulkan/Core13/Promoted_From_VK_KHR_format_feature_flags2.hs
+++ b/src/Vulkan/Core13/Promoted_From_VK_KHR_format_feature_flags2.hs
@@ -37,7 +37,11 @@
 -- fields of
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.FormatProperties2'::@formatProperties@.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.FormatProperties2'
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Core13/Promoted_From_VK_KHR_maintenance4.hs b/src/Vulkan/Core13/Promoted_From_VK_KHR_maintenance4.hs
--- a/src/Vulkan/Core13/Promoted_From_VK_KHR_maintenance4.hs
+++ b/src/Vulkan/Core13/Promoted_From_VK_KHR_maintenance4.hs
@@ -263,8 +263,7 @@
 -- <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'
+-- 'getDeviceBufferMemoryRequirements', 'getDeviceBufferMemoryRequirements'
 data DeviceBufferMemoryRequirements = DeviceBufferMemoryRequirements
   { -- | @pCreateInfo@ is a pointer to a 'Vulkan.Core10.Buffer.BufferCreateInfo'
     -- structure containing parameters affecting creation of the buffer to
@@ -348,7 +347,7 @@
 --     'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR' or
 --     'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL', then
 --     @planeAspect@ /must/ be a single valid
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#formats-planes-image-aspect multi-planar aspect mask>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-multiplanar-image-aspect multi-planar aspect mask>
 --     bit
 --
 -- -   #VUID-VkDeviceImageMemoryRequirements-pCreateInfo-06420# If
@@ -361,6 +360,14 @@
 --     associated with the image’s @format@ and
 --     'Vulkan.Extensions.VK_EXT_image_drm_format_modifier.ImageDrmFormatModifierPropertiesEXT'::@drmFormatModifier@)
 --
+-- -   #VUID-VkDeviceImageMemoryRequirements-planeAspect-12399# If
+--     @planeAspect@ is not 0, @pCreateInfo->tiling@ is not
+--     'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT',
+--     and @pCreateInfo->flags@ does not have
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_DISJOINT_BIT'
+--     set, @planeAspect@ must be a valid
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlagBits' value
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-VkDeviceImageMemoryRequirements-sType-sType# @sType@ /must/ be
@@ -373,10 +380,6 @@
 --     @pCreateInfo@ /must/ be a valid pointer to a valid
 --     'Vulkan.Core10.Image.ImageCreateInfo' structure
 --
--- -   #VUID-VkDeviceImageMemoryRequirements-planeAspect-parameter# If
---     @planeAspect@ is not @0@, @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>,
@@ -384,10 +387,9 @@
 -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlagBits',
 -- 'Vulkan.Core10.Image.ImageCreateInfo',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'getDeviceImageMemoryRequirements',
--- 'Vulkan.Extensions.VK_KHR_maintenance4.getDeviceImageMemoryRequirementsKHR',
+-- 'getDeviceImageMemoryRequirements', 'getDeviceImageMemoryRequirements',
 -- 'getDeviceImageSparseMemoryRequirements',
--- 'Vulkan.Extensions.VK_KHR_maintenance4.getDeviceImageSparseMemoryRequirementsKHR'
+-- 'getDeviceImageSparseMemoryRequirements'
 data DeviceImageMemoryRequirements = DeviceImageMemoryRequirements
   { -- | @pCreateInfo@ is a pointer to a 'Vulkan.Core10.Image.ImageCreateInfo'
     -- structure containing parameters affecting creation of the image to
@@ -454,12 +456,22 @@
 -- 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.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceMaintenance4Features', it /must/ add an instance of the
+-- structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance4 VK_KHR_maintenance4>,
@@ -541,7 +553,11 @@
 -- it is filled in with each corresponding implementation-dependent
 -- property.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
 --
 -- = See Also
 --
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
--- 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
@@ -43,12 +43,22 @@
 -- 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.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceShaderIntegerDotProductFeatures', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = 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>,
@@ -123,8 +133,12 @@
 -- because it uses hardware features that cannot otherwise be targeted from
 -- application-provided code.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
 -- = 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>,
@@ -136,188 +150,188 @@
     -- 'Vulkan.Core10.FundamentalTypes.TRUE' if the support for 8-bit unsigned
     -- dot product operations using the @OpUDotKHR@ SPIR-V instruction is
     -- accelerated
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
     integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated :: Bool
   }
   deriving (Typeable, Eq)
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
--- a/src/Vulkan/Core13/Promoted_From_VK_KHR_shader_terminate_invocation.hs
+++ b/src/Vulkan/Core13/Promoted_From_VK_KHR_shader_terminate_invocation.hs
@@ -41,11 +41,21 @@
 -- 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.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceShaderTerminateInvocationFeatures', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Core13/Promoted_From_VK_KHR_synchronization2.hs b/src/Vulkan/Core13/Promoted_From_VK_KHR_synchronization2.hs
--- a/src/Vulkan/Core13/Promoted_From_VK_KHR_synchronization2.hs
+++ b/src/Vulkan/Core13/Promoted_From_VK_KHR_synchronization2.hs
@@ -101,5607 +101,6429 @@
 import Vulkan.Core10.Handles (Fence)
 import Vulkan.Core10.Handles (Fence(..))
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_frame_boundary (FrameBoundaryEXT)
-import Vulkan.Core10.Handles (Image)
-import Vulkan.Core10.Enums.ImageLayout (ImageLayout)
-import Vulkan.Core10.ImageView (ImageSubresourceRange)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_low_latency2 (LatencySubmissionPresentIdNV)
-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 {-# SOURCE #-} Vulkan.Extensions.VK_ARM_render_pass_striped (RenderPassStripeSubmitInfoARM)
-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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
--- and
--- <https://registry.khronos.org/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-submission-order submission order>.
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-queue-transfers Queue family ownership transfers>
--- and
--- <https://registry.khronos.org/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
--- includes only the event signal operation, and any
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfers>
--- and
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transitions>
--- defined by @pDependencyInfo@.
---
--- The second
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
--- includes only
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfers>
--- and
--- <https://registry.khronos.org/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'.
---
--- 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://registry.khronos.org/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-srcStageMask-09391# The @srcStageMask@ member
---     of any element of the @pMemoryBarriers@, @pBufferMemoryBarriers@, or
---     @pImageMemoryBarriers@ members of @pDependencyInfo@ /must/ not
---     include
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_HOST_BIT'
---
--- -   #VUID-vkCmdSetEvent2-dstStageMask-09392# The @dstStageMask@ member
---     of any element of the @pMemoryBarriers@, @pBufferMemoryBarriers@, or
---     @pImageMemoryBarriers@ members of @pDependencyInfo@ /must/ not
---     include
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_HOST_BIT'
---
--- -   #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, compute, decode, or encode
---     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#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
--- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Outside                                                                                                                | Both                                                                                                                        | Graphics                                                                                                              | Synchronization                                                                                                                        |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | 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', '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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
--- includes all commands that occur earlier in
--- <https://registry.khronos.org/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages-order logically earlier>
--- than @stageMask@.
---
--- The second
--- <https://registry.khronos.org/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 geometryShader>
---     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 tessellationShader>
---     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 conditionalRendering>
---     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 fragmentDensityMap>
---     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 transformFeedback>
---     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 meshShader>
---     feature is not enabled, @stageMask@ /must/ not contain
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT'
---
--- -   #VUID-vkCmdResetEvent2-stageMask-03935# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
---     feature is not enabled, @stageMask@ /must/ not contain
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT'
---
--- -   #VUID-vkCmdResetEvent2-stageMask-07316# If neither of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
---     or the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate>
---     features are enabled, @stageMask@ /must/ not contain
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
---
--- -   #VUID-vkCmdResetEvent2-stageMask-04957# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-subpassShading subpassShading>
---     feature is not enabled, @stageMask@ /must/ not contain
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI'
---
--- -   #VUID-vkCmdResetEvent2-stageMask-04995# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-invocationMask invocationMask>
---     feature is not enabled, @stageMask@ /must/ not contain
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI'
---
--- -   #VUID-vkCmdResetEvent2-stageMask-07946# If neither the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>
---     extension or the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayTracingPipeline rayTracingPipeline>
---     feature are enabled, @stageMask@ /must/ not contain
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR'
---
--- -   #VUID-vkCmdResetEvent2-synchronization2-03829# The
---     <https://registry.khronos.org/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, compute, decode, or encode
---     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#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
--- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Outside                                                                                                                | Both                                                                                                                        | Graphics                                                                                                              | Synchronization                                                                                                                        |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | 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.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://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
--- and
--- <https://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
--- and
--- <https://registry.khronos.org/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-submission-order submission order>
--- than 'cmdWaitEvents2'.
---
--- '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.
---
--- 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://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/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/ only
---     include pipeline stages valid for the queue family that was used to
---     create the command pool that @commandBuffer@ was allocated from
---
--- -   #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# If 'cmdWaitEvents2' is
---     being called inside a render pass instance, the @srcStageMask@
---     member of any element of the @pMemoryBarriers@,
---     @pBufferMemoryBarriers@, or @pImageMemoryBarriers@ members of
---     @pDependencyInfos@ /must/ not include
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_HOST_BIT'
---
--- -   #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, compute, decode, or encode
---     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#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
--- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Both                                                                                                                        | Graphics                                                                                                              | Synchronization                                                                                                                        |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | 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', '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://registry.khronos.org/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://registry.khronos.org/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 to the same queue
--- before it, and those submitted to the same queue after it.
---
--- The first
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
--- and
--- <https://registry.khronos.org/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-submission-order submission order>.
---
--- The second
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
--- and
--- <https://registry.khronos.org/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://registry.khronos.org/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 limited to a subset of operations within the
--- same subpass or render pass instance.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdPipelineBarrier2-None-07889# If 'cmdPipelineBarrier2' is
---     called within a render pass instance using a
---     'Vulkan.Core10.Handles.RenderPass' object, the render pass /must/
---     have been created with at least one subpass dependency that
---     expresses a dependency from the current subpass to itself, does not
---     include
---     'Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_BY_REGION_BIT' if
---     this command does not, does not include
---     'Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_VIEW_LOCAL_BIT'
---     if this command does not, and has
---     <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 using
---     a 'Vulkan.Core10.Handles.RenderPass' object, it /must/ not include
---     any buffer memory barriers
---
--- -   #VUID-vkCmdPipelineBarrier2-image-04073# If 'cmdPipelineBarrier2' is
---     called within a render pass instance using a
---     'Vulkan.Core10.Handles.RenderPass' object, 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, color resolve, or depth\/stencil attachment
---
--- -   #VUID-vkCmdPipelineBarrier2-image-09373# If 'cmdPipelineBarrier2' is
---     called within a render pass instance using a
---     'Vulkan.Core10.Handles.RenderPass' object, and the @image@ member of
---     any image memory barrier is a color resolve attachment, the
---     corresponding color attachment /must/ be
---     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED'
---
--- -   #VUID-vkCmdPipelineBarrier2-image-09374# If 'cmdPipelineBarrier2' is
---     called within a render pass instance using a
---     'Vulkan.Core10.Handles.RenderPass' object, and the @image@ member of
---     any image memory barrier is a color resolve attachment, it /must/
---     have been created with a non-zero
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value
---
--- -   #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
---     memory barrier included in this command /must/ be equal
---
--- -   #VUID-vkCmdPipelineBarrier2-None-07890# If 'cmdPipelineBarrier2' is
---     called within a render pass instance, and the source stage masks of
---     any memory barriers include
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-framebuffer-regions framebuffer-space stages>,
---     destination stage masks of all memory barriers /must/ only include
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-framebuffer-regions framebuffer-space stages>
---
--- -   #VUID-vkCmdPipelineBarrier2-dependencyFlags-07891# If
---     'cmdPipelineBarrier2' is called within a render pass instance, and
---     the source stage masks of any memory barriers include
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-framebuffer-regions framebuffer-space stages>,
---     then @dependencyFlags@ /must/ include
---     'Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_BY_REGION_BIT'
---
--- -   #VUID-vkCmdPipelineBarrier2-None-07892# If 'cmdPipelineBarrier2' is
---     called within a render pass instance, the source and destination
---     stage masks of any memory barriers /must/ only include graphics
---     pipeline stages
---
--- -   #VUID-vkCmdPipelineBarrier2-dependencyFlags-01186# If
---     'cmdPipelineBarrier2' is called outside of a render pass instance,
---     the dependency flags /must/ not include
---     'Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_VIEW_LOCAL_BIT'
---
--- -   #VUID-vkCmdPipelineBarrier2-None-07893# If 'cmdPipelineBarrier2' is
---     called inside a render pass instance, and there is more than one
---     view in the current subpass, dependency flags /must/ include
---     'Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_VIEW_LOCAL_BIT'
---
--- -   #VUID-vkCmdPipelineBarrier2-None-09553# If none of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderTileImageColorReadAccess shaderTileImageColorReadAccess>,
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderTileImageStencilReadAccess shaderTileImageStencilReadAccess>,
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderTileImageDepthReadAccess shaderTileImageDepthReadAccess>
---     features are enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingLocalRead dynamicRenderingLocalRead>
---     feature is not enabled, 'cmdPipelineBarrier2' /must/ not be called
---     within a render pass instance started with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---
--- -   #VUID-vkCmdPipelineBarrier2-None-09554# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingLocalRead dynamicRenderingLocalRead>
---     feature is not enabled, and 'cmdPipelineBarrier2' is called within a
---     render pass instance started with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there /must/ be no buffer or image memory barriers specified by this
---     command
---
--- -   #VUID-vkCmdPipelineBarrier2-None-09586# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingLocalRead dynamicRenderingLocalRead>
---     feature is not enabled, and 'cmdPipelineBarrier2' is called within a
---     render pass instance started with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     memory barriers specified by this command /must/ only include
---     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_COLOR_ATTACHMENT_READ_BIT',
---     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT',
---     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT',
---     or
---     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT'
---     in their access masks
---
--- -   #VUID-vkCmdPipelineBarrier2-image-09555# If 'cmdPipelineBarrier2' is
---     called within a render pass instance started with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     and the @image@ member of any image memory barrier is used as an
---     attachment in the current render pass instance, it /must/ be in the
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_RENDERING_LOCAL_READ_KHR'
---     or 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL' layout
---
--- -   #VUID-vkCmdPipelineBarrier2-srcStageMask-09556# If
---     'cmdPipelineBarrier2' is called within a render pass instance
---     started with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     this command /must/ only specify
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-framebuffer-regions framebuffer-space stages>
---     in @srcStageMask@ and @dstStageMask@
---
--- -   #VUID-vkCmdPipelineBarrier2-synchronization2-03848# The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-synchronization2 synchronization2>
---     feature /must/ be enabled
---
--- -   #VUID-vkCmdPipelineBarrier2-srcStageMask-09673# The @srcStageMask@
---     member of any element of the @pMemoryBarriers@ member 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-09674# The @dstStageMask@
---     member of any element of the @pMemoryBarriers@ member 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-srcStageMask-09675# If a buffer or image
---     memory barrier does not specify an
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-queue-transfers-acquire acquire operation>,
---     the respective @srcStageMask@ member of the element of the
---     @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-09676# If a buffer or image
---     memory barrier does not specify an
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-queue-transfers-release release operation>,
---     the respective @dstStageMask@ member of the element of the
---     @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, compute, decode,
---     or encode 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#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
--- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Both                                                                                                                        | Transfer                                                                                                              | Synchronization                                                                                                                        |
--- | 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', '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://registry.khronos.org/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-semaphores semaphore>
--- section of
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization the synchronization chapter>.
---
--- If any command buffer submitted to this queue is in the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle executable state>,
--- it is moved to the
--- <https://registry.khronos.org/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle pending state>,
--- back to the
--- <https://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/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
---     a '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-03873# The @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
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operations>
---     on which it depends /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://registry.khronos.org/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle pending state>
---
--- -   #VUID-vkQueueSubmit2-commandBuffer-03876# Any
---     <https://registry.khronos.org/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle pending or executable state>
---
--- -   #VUID-vkQueueSubmit2-commandBuffer-03877# If any
---     <https://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-queue-transfers-acquire Queue Family Ownership Transfer Acquire Operation>,
---     there /must/ exist a previously submitted
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-queue-transfers-release Queue Family Ownership 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://registry.khronos.org/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://registry.khronos.org/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#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
--- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | -                                                                                                                          | -                                                                                                                      | -                                                                                                                           | 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://registry.khronos.org/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
--- includes all commands that occur earlier in
--- <https://registry.khronos.org/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
--- includes only the timestamp write operation.
---
--- Implementations may write the timestamp at any stage that is
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages-order logically later>
--- than @stage@.
---
--- Any timestamp write that
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-execution happens-after>
--- another timestamp write in the same submission /must/ not have a lower
--- value unless its value overflows the maximum supported integer bit width
--- of the query. If @VK_KHR_calibrated_timestamps@ or
--- @VK_EXT_calibrated_timestamps@ is enabled, this extends to timestamp
--- writes across all submissions on the same logical device: any timestamp
--- write that
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-execution happens-after>
--- another /must/ not have a lower value unless its value overflows the
--- maximum supported integer bit width of the query. Timestamps written by
--- this command /must/ be in the
--- 'Vulkan.Extensions.VK_KHR_calibrated_timestamps.TIME_DOMAIN_DEVICE_KHR'
--- <VkTimeDomainKHR.html time domain>. If an overflow occurs, the timestamp
--- value /must/ wrap back to zero.
---
--- Comparisons between timestamps should be done between timestamps where
--- they are guaranteed to not decrease. For example, subtracting an older
--- timestamp from a newer one to determine the execution time of a sequence
--- of commands is only a reliable measurement if the two timestamp writes
--- were performed in the same submission, or if the writes were performed
--- on the same logical device and @VK_KHR_calibrated_timestamps@ or
--- @VK_EXT_calibrated_timestamps@ is enabled.
---
--- 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 geometryShader>
---     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 tessellationShader>
---     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 conditionalRendering>
---     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 fragmentDensityMap>
---     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 transformFeedback>
---     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 meshShader>
---     feature is not enabled, @stage@ /must/ not contain
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT'
---
--- -   #VUID-vkCmdWriteTimestamp2-stage-03935# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
---     feature is not enabled, @stage@ /must/ not contain
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT'
---
--- -   #VUID-vkCmdWriteTimestamp2-stage-07316# If neither of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
---     or the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate>
---     features are enabled, @stage@ /must/ not contain
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
---
--- -   #VUID-vkCmdWriteTimestamp2-stage-04957# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-subpassShading subpassShading>
---     feature is not enabled, @stage@ /must/ not contain
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI'
---
--- -   #VUID-vkCmdWriteTimestamp2-stage-04995# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-invocationMask invocationMask>
---     feature is not enabled, @stage@ /must/ not contain
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI'
---
--- -   #VUID-vkCmdWriteTimestamp2-stage-07946# If neither the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>
---     extension or the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayTracingPipeline rayTracingPipeline>
---     feature are enabled, @stage@ /must/ not contain
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR'
---
--- -   #VUID-vkCmdWriteTimestamp2-synchronization2-03858# The
---     <https://registry.khronos.org/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-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#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
--- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Both                                                                                                                        | Transfer                                                                                                              | Action                                                                                                                                 |
--- | 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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-memory memory dependency>
--- affecting all device memory.
---
--- The first
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
--- and
--- <https://registry.khronos.org/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
--- and
--- <https://registry.khronos.org/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 geometryShader>
---     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 tessellationShader>
---     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 conditionalRendering>
---     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 fragmentDensityMap>
---     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 transformFeedback>
---     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 meshShader>
---     feature is not enabled, @srcStageMask@ /must/ not contain
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT'
---
--- -   #VUID-VkMemoryBarrier2-srcStageMask-03935# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
---     feature is not enabled, @srcStageMask@ /must/ not contain
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT'
---
--- -   #VUID-VkMemoryBarrier2-srcStageMask-07316# If neither of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
---     or the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate>
---     features are enabled, @srcStageMask@ /must/ not contain
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
---
--- -   #VUID-VkMemoryBarrier2-srcStageMask-04957# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-subpassShading subpassShading>
---     feature is not enabled, @srcStageMask@ /must/ not contain
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI'
---
--- -   #VUID-VkMemoryBarrier2-srcStageMask-04995# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-invocationMask invocationMask>
---     feature is not enabled, @srcStageMask@ /must/ not contain
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI'
---
--- -   #VUID-VkMemoryBarrier2-srcStageMask-07946# If neither the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>
---     extension or the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayTracingPipeline rayTracingPipeline>
---     feature are enabled, @srcStageMask@ /must/ not contain
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR'
---
--- -   #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_SHADER_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-07454# 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',
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT',
---     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',
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_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_ACCELERATION_STRUCTURE_COPY_BIT_KHR',
---     '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_ACCELERATION_STRUCTURE_COPY_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_COPY_BIT_KHR',
---     '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 the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayQuery rayQuery>
---     feature 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-srcAccessMask-07272# If @srcAccessMask@
---     includes
---     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHR',
---     @srcStageMask@ /must/ include
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
---     or
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR'
---
--- -   #VUID-VkMemoryBarrier2-srcAccessMask-04858# If @srcAccessMask@
---     includes @VK_ACCESS_2_VIDEO_DECODE_READ_BIT_KHR@, @srcStageMask@
---     /must/ include @VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR@
---
--- -   #VUID-VkMemoryBarrier2-srcAccessMask-04859# If @srcAccessMask@
---     includes @VK_ACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR@, @srcStageMask@
---     /must/ include @VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR@
---
--- -   #VUID-VkMemoryBarrier2-srcAccessMask-04860# If @srcAccessMask@
---     includes @VK_ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR@, @srcStageMask@
---     /must/ include @VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR@
---
--- -   #VUID-VkMemoryBarrier2-srcAccessMask-04861# If @srcAccessMask@
---     includes @VK_ACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR@, @srcStageMask@
---     /must/ include @VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR@
---
--- -   #VUID-VkMemoryBarrier2-srcAccessMask-07455# If @srcAccessMask@
---     includes
---     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_OPTICAL_FLOW_READ_BIT_NV',
---     @srcStageMask@ /must/ include
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV'
---
--- -   #VUID-VkMemoryBarrier2-srcAccessMask-07456# If @srcAccessMask@
---     includes
---     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_OPTICAL_FLOW_WRITE_BIT_NV',
---     @srcStageMask@ /must/ include
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV'
---
--- -   #VUID-VkMemoryBarrier2-srcAccessMask-07457# If @srcAccessMask@
---     includes
---     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_MICROMAP_WRITE_BIT_EXT',
---     @srcStageMask@ /must/ include
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT'
---
--- -   #VUID-VkMemoryBarrier2-srcAccessMask-07458# If @srcAccessMask@
---     includes
---     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_MICROMAP_READ_BIT_EXT',
---     @srcStageMask@ /must/ include
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT'
---     or
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
---
--- -   #VUID-VkMemoryBarrier2-srcAccessMask-08118# If @srcAccessMask@
---     includes
---     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_DESCRIPTOR_BUFFER_READ_BIT_EXT',
---     @srcStageMask@ /must/ include
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT',
---     or one of @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
---
--- -   #VUID-VkMemoryBarrier2-dstStageMask-03929# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometryShader>
---     feature is not enabled, @dstStageMask@ /must/ not contain
---     '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 tessellationShader>
---     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 conditionalRendering>
---     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 fragmentDensityMap>
---     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 transformFeedback>
---     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 meshShader>
---     feature is not enabled, @dstStageMask@ /must/ not contain
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT'
---
--- -   #VUID-VkMemoryBarrier2-dstStageMask-03935# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
---     feature is not enabled, @dstStageMask@ /must/ not contain
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT'
---
--- -   #VUID-VkMemoryBarrier2-dstStageMask-07316# If neither of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
---     or the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate>
---     features are enabled, @dstStageMask@ /must/ not contain
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
---
--- -   #VUID-VkMemoryBarrier2-dstStageMask-04957# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-subpassShading subpassShading>
---     feature is not enabled, @dstStageMask@ /must/ not contain
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI'
---
--- -   #VUID-VkMemoryBarrier2-dstStageMask-04995# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-invocationMask invocationMask>
---     feature is not enabled, @dstStageMask@ /must/ not contain
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI'
---
--- -   #VUID-VkMemoryBarrier2-dstStageMask-07946# If neither the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>
---     extension or the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayTracingPipeline rayTracingPipeline>
---     feature are enabled, @dstStageMask@ /must/ not contain
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR'
---
--- -   #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_SHADER_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-07454# 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',
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT',
---     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',
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_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_ACCELERATION_STRUCTURE_COPY_BIT_KHR',
---     '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_ACCELERATION_STRUCTURE_COPY_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_COPY_BIT_KHR',
---     '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 the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayQuery rayQuery>
---     feature 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-VkMemoryBarrier2-dstAccessMask-07272# If @dstAccessMask@
---     includes
---     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHR',
---     @dstStageMask@ /must/ include
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
---     or
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR'
---
--- -   #VUID-VkMemoryBarrier2-dstAccessMask-04858# If @dstAccessMask@
---     includes @VK_ACCESS_2_VIDEO_DECODE_READ_BIT_KHR@, @dstStageMask@
---     /must/ include @VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR@
---
--- -   #VUID-VkMemoryBarrier2-dstAccessMask-04859# If @dstAccessMask@
---     includes @VK_ACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR@, @dstStageMask@
---     /must/ include @VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR@
---
--- -   #VUID-VkMemoryBarrier2-dstAccessMask-04860# If @dstAccessMask@
---     includes @VK_ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR@, @dstStageMask@
---     /must/ include @VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR@
---
--- -   #VUID-VkMemoryBarrier2-dstAccessMask-04861# If @dstAccessMask@
---     includes @VK_ACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR@, @dstStageMask@
---     /must/ include @VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR@
---
--- -   #VUID-VkMemoryBarrier2-dstAccessMask-07455# If @dstAccessMask@
---     includes
---     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_OPTICAL_FLOW_READ_BIT_NV',
---     @dstStageMask@ /must/ include
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV'
---
--- -   #VUID-VkMemoryBarrier2-dstAccessMask-07456# If @dstAccessMask@
---     includes
---     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_OPTICAL_FLOW_WRITE_BIT_NV',
---     @dstStageMask@ /must/ include
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV'
---
--- -   #VUID-VkMemoryBarrier2-dstAccessMask-07457# If @dstAccessMask@
---     includes
---     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_MICROMAP_WRITE_BIT_EXT',
---     @dstStageMask@ /must/ include
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT'
---
--- -   #VUID-VkMemoryBarrier2-dstAccessMask-07458# If @dstAccessMask@
---     includes
---     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_MICROMAP_READ_BIT_EXT',
---     @dstStageMask@ /must/ include
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT'
---     or
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
---
--- -   #VUID-VkMemoryBarrier2-dstAccessMask-08118# If @dstAccessMask@
---     includes
---     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_DESCRIPTOR_BUFFER_READ_BIT_EXT',
---     @dstStageMask@ /must/ include
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT',
---     or one of @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkMemoryBarrier2-sType-sType# @sType@ /must/ be
---     '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://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-memory memory dependency>
--- limited to an image subresource range, and /can/ define a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer operation>
--- and
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>
--- for that subresource range.
---
--- The first
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
--- and
--- <https://registry.khronos.org/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
--- and
--- <https://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer operation>.
--- When executed on a queue in the family identified by
--- @srcQueueFamilyIndex@, this barrier defines a
--- <https://registry.khronos.org/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 scope does not apply to this operation. When executed on
--- a queue in the family identified by @dstQueueFamilyIndex@, this barrier
--- defines a
--- <https://registry.khronos.org/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, the first synchronization scope does not apply to this
--- operation.
---
--- A
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership 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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-queue-transfers>.
--- A
--- <https://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer operation>,
--- the layout transition is only executed once between the queues.
---
--- 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 geometryShader>
---     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 tessellationShader>
---     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 conditionalRendering>
---     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 fragmentDensityMap>
---     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 transformFeedback>
---     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 meshShader>
---     feature is not enabled, @srcStageMask@ /must/ not contain
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT'
---
--- -   #VUID-VkImageMemoryBarrier2-srcStageMask-03935# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
---     feature is not enabled, @srcStageMask@ /must/ not contain
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT'
---
--- -   #VUID-VkImageMemoryBarrier2-srcStageMask-07316# If neither of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
---     or the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate>
---     features are enabled, @srcStageMask@ /must/ not contain
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
---
--- -   #VUID-VkImageMemoryBarrier2-srcStageMask-04957# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-subpassShading subpassShading>
---     feature is not enabled, @srcStageMask@ /must/ not contain
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI'
---
--- -   #VUID-VkImageMemoryBarrier2-srcStageMask-04995# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-invocationMask invocationMask>
---     feature is not enabled, @srcStageMask@ /must/ not contain
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI'
---
--- -   #VUID-VkImageMemoryBarrier2-srcStageMask-07946# If neither the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>
---     extension or the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayTracingPipeline rayTracingPipeline>
---     feature are enabled, @srcStageMask@ /must/ not contain
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR'
---
--- -   #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_SHADER_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-07454# 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',
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT',
---     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',
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_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_ACCELERATION_STRUCTURE_COPY_BIT_KHR',
---     '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_ACCELERATION_STRUCTURE_COPY_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_COPY_BIT_KHR',
---     '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 the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayQuery rayQuery>
---     feature 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-srcAccessMask-07272# If @srcAccessMask@
---     includes
---     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHR',
---     @srcStageMask@ /must/ include
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
---     or
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR'
---
--- -   #VUID-VkImageMemoryBarrier2-srcAccessMask-04858# If @srcAccessMask@
---     includes @VK_ACCESS_2_VIDEO_DECODE_READ_BIT_KHR@, @srcStageMask@
---     /must/ include @VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR@
---
--- -   #VUID-VkImageMemoryBarrier2-srcAccessMask-04859# If @srcAccessMask@
---     includes @VK_ACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR@, @srcStageMask@
---     /must/ include @VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR@
---
--- -   #VUID-VkImageMemoryBarrier2-srcAccessMask-04860# If @srcAccessMask@
---     includes @VK_ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR@, @srcStageMask@
---     /must/ include @VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR@
---
--- -   #VUID-VkImageMemoryBarrier2-srcAccessMask-04861# If @srcAccessMask@
---     includes @VK_ACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR@, @srcStageMask@
---     /must/ include @VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR@
---
--- -   #VUID-VkImageMemoryBarrier2-srcAccessMask-07455# If @srcAccessMask@
---     includes
---     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_OPTICAL_FLOW_READ_BIT_NV',
---     @srcStageMask@ /must/ include
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV'
---
--- -   #VUID-VkImageMemoryBarrier2-srcAccessMask-07456# If @srcAccessMask@
---     includes
---     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_OPTICAL_FLOW_WRITE_BIT_NV',
---     @srcStageMask@ /must/ include
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV'
---
--- -   #VUID-VkImageMemoryBarrier2-srcAccessMask-07457# If @srcAccessMask@
---     includes
---     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_MICROMAP_WRITE_BIT_EXT',
---     @srcStageMask@ /must/ include
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT'
---
--- -   #VUID-VkImageMemoryBarrier2-srcAccessMask-07458# If @srcAccessMask@
---     includes
---     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_MICROMAP_READ_BIT_EXT',
---     @srcStageMask@ /must/ include
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT'
---     or
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
---
--- -   #VUID-VkImageMemoryBarrier2-srcAccessMask-08118# If @srcAccessMask@
---     includes
---     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_DESCRIPTOR_BUFFER_READ_BIT_EXT',
---     @srcStageMask@ /must/ include
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT',
---     or one of @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
---
--- -   #VUID-VkImageMemoryBarrier2-dstStageMask-03929# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometryShader>
---     feature is not enabled, @dstStageMask@ /must/ not contain
---     '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 tessellationShader>
---     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 conditionalRendering>
---     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 fragmentDensityMap>
---     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 transformFeedback>
---     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 meshShader>
---     feature is not enabled, @dstStageMask@ /must/ not contain
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT'
---
--- -   #VUID-VkImageMemoryBarrier2-dstStageMask-03935# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
---     feature is not enabled, @dstStageMask@ /must/ not contain
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT'
---
--- -   #VUID-VkImageMemoryBarrier2-dstStageMask-07316# If neither of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
---     or the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate>
---     features are enabled, @dstStageMask@ /must/ not contain
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
---
--- -   #VUID-VkImageMemoryBarrier2-dstStageMask-04957# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-subpassShading subpassShading>
---     feature is not enabled, @dstStageMask@ /must/ not contain
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI'
---
--- -   #VUID-VkImageMemoryBarrier2-dstStageMask-04995# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-invocationMask invocationMask>
---     feature is not enabled, @dstStageMask@ /must/ not contain
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI'
---
--- -   #VUID-VkImageMemoryBarrier2-dstStageMask-07946# If neither the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>
---     extension or the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayTracingPipeline rayTracingPipeline>
---     feature are enabled, @dstStageMask@ /must/ not contain
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR'
---
--- -   #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_SHADER_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-07454# 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',
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT',
---     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',
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_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_ACCELERATION_STRUCTURE_COPY_BIT_KHR',
---     '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_ACCELERATION_STRUCTURE_COPY_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_COPY_BIT_KHR',
---     '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 the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayQuery rayQuery>
---     feature 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-dstAccessMask-07272# If @dstAccessMask@
---     includes
---     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHR',
---     @dstStageMask@ /must/ include
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
---     or
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR'
---
--- -   #VUID-VkImageMemoryBarrier2-dstAccessMask-04858# If @dstAccessMask@
---     includes @VK_ACCESS_2_VIDEO_DECODE_READ_BIT_KHR@, @dstStageMask@
---     /must/ include @VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR@
---
--- -   #VUID-VkImageMemoryBarrier2-dstAccessMask-04859# If @dstAccessMask@
---     includes @VK_ACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR@, @dstStageMask@
---     /must/ include @VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR@
---
--- -   #VUID-VkImageMemoryBarrier2-dstAccessMask-04860# If @dstAccessMask@
---     includes @VK_ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR@, @dstStageMask@
---     /must/ include @VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR@
---
--- -   #VUID-VkImageMemoryBarrier2-dstAccessMask-04861# If @dstAccessMask@
---     includes @VK_ACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR@, @dstStageMask@
---     /must/ include @VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR@
---
--- -   #VUID-VkImageMemoryBarrier2-dstAccessMask-07455# If @dstAccessMask@
---     includes
---     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_OPTICAL_FLOW_READ_BIT_NV',
---     @dstStageMask@ /must/ include
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV'
---
--- -   #VUID-VkImageMemoryBarrier2-dstAccessMask-07456# If @dstAccessMask@
---     includes
---     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_OPTICAL_FLOW_WRITE_BIT_NV',
---     @dstStageMask@ /must/ include
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV'
---
--- -   #VUID-VkImageMemoryBarrier2-dstAccessMask-07457# If @dstAccessMask@
---     includes
---     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_MICROMAP_WRITE_BIT_EXT',
---     @dstStageMask@ /must/ include
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT'
---
--- -   #VUID-VkImageMemoryBarrier2-dstAccessMask-07458# If @dstAccessMask@
---     includes
---     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_MICROMAP_READ_BIT_EXT',
---     @dstStageMask@ /must/ include
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT'
---     or
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
---
--- -   #VUID-VkImageMemoryBarrier2-dstAccessMask-08118# If @dstAccessMask@
---     includes
---     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_DESCRIPTOR_BUFFER_READ_BIT_EXT',
---     @dstStageMask@ /must/ include
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT',
---     or one of @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
---
--- -   #VUID-VkImageMemoryBarrier2-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-synchronization2-07793# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2 synchronization2>
---     feature is not enabled, @oldLayout@ /must/ not be
---     'Vulkan.Extensions.VK_KHR_synchronization2.IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR'
---     or
---     'Vulkan.Extensions.VK_KHR_synchronization2.IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR'
---
--- -   #VUID-VkImageMemoryBarrier2-synchronization2-07794# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2 synchronization2>
---     feature is not enabled, @newLayout@ /must/ not be
---     'Vulkan.Extensions.VK_KHR_synchronization2.IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR'
---     or
---     'Vulkan.Extensions.VK_KHR_synchronization2.IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR'
---
--- -   #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-09117# If @image@ was created with
---     a sharing mode of
---     'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_EXCLUSIVE', and
---     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ are not equal,
---     @srcQueueFamilyIndex@ /must/ be
---     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_EXTERNAL',
---     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_FOREIGN_EXT', or a valid
---     queue family
---
--- -   #VUID-VkImageMemoryBarrier2-image-09118# If @image@ was created with
---     a sharing mode of
---     'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_EXCLUSIVE', and
---     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ are not equal,
---     @dstQueueFamilyIndex@ /must/ be
---     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_EXTERNAL',
---     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_FOREIGN_EXT', or a valid
---     queue family
---
--- -   #VUID-VkImageMemoryBarrier2-srcQueueFamilyIndex-04070# If
---     @srcQueueFamilyIndex@ is not equal to @dstQueueFamilyIndex@, at
---     least one of @srcQueueFamilyIndex@ or @dstQueueFamilyIndex@ /must/
---     not be 'Vulkan.Core10.APIConstants.QUEUE_FAMILY_EXTERNAL' or
---     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_FOREIGN_EXT'
---
--- -   #VUID-VkImageMemoryBarrier2-None-09119# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_memory VK_KHR_external_memory>
---     extension is not enabled, and the value of
---     'Vulkan.Core10.DeviceInitialization.ApplicationInfo'::@apiVersion@
---     used to create the 'Vulkan.Core10.Handles.Instance' is not greater
---     than or equal to Version 1.1, @srcQueueFamilyIndex@ /must/ not be
---     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_EXTERNAL'
---
--- -   #VUID-VkImageMemoryBarrier2-None-09120# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_memory VK_KHR_external_memory>
---     extension is not enabled, and the value of
---     'Vulkan.Core10.DeviceInitialization.ApplicationInfo'::@apiVersion@
---     used to create the 'Vulkan.Core10.Handles.Instance' is not greater
---     than or equal to Version 1.1, @dstQueueFamilyIndex@ /must/ not be
---     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_EXTERNAL'
---
--- -   #VUID-VkImageMemoryBarrier2-srcQueueFamilyIndex-09121# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_queue_family_foreign VK_EXT_queue_family_foreign>
---     extension is not enabled @srcQueueFamilyIndex@ /must/ not be
---     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_FOREIGN_EXT'
---
--- -   #VUID-VkImageMemoryBarrier2-dstQueueFamilyIndex-09122# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_queue_family_foreign VK_EXT_queue_family_foreign>
---     extension is not enabled @dstQueueFamilyIndex@ /must/ not be
---     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_FOREIGN_EXT'
---
--- -   #VUID-VkImageMemoryBarrier2-srcQueueFamilyIndex-07120# 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
---     @VK_IMAGE_LAYOUT_VIDEO_DECODE_SRC_KHR@ then @image@ /must/ have been
---     created with @VK_IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR@
---
--- -   #VUID-VkImageMemoryBarrier2-srcQueueFamilyIndex-07121# 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
---     @VK_IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR@ then @image@ /must/ have been
---     created with @VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR@
---
--- -   #VUID-VkImageMemoryBarrier2-srcQueueFamilyIndex-07122# 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
---     @VK_IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR@ then @image@ /must/ have been
---     created with @VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR@
---
--- -   #VUID-VkImageMemoryBarrier2-srcQueueFamilyIndex-07123# 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
---     @VK_IMAGE_LAYOUT_VIDEO_ENCODE_SRC_KHR@ then @image@ /must/ have been
---     created with @VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR@
---
--- -   #VUID-VkImageMemoryBarrier2-srcQueueFamilyIndex-07124# 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
---     @VK_IMAGE_LAYOUT_VIDEO_ENCODE_DST_KHR@ then @image@ /must/ have been
---     created with @VK_IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR@
---
--- -   #VUID-VkImageMemoryBarrier2-srcQueueFamilyIndex-07125# 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
---     @VK_IMAGE_LAYOUT_VIDEO_ENCODE_DPB_KHR@ then @image@ /must/ have been
---     created with @VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR@
---
--- -   #VUID-VkImageMemoryBarrier2-srcQueueFamilyIndex-10287# 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
---     @VK_IMAGE_LAYOUT_VIDEO_ENCODE_QUANTIZATION_MAP_KHR@ then @image@
---     /must/ have been created with
---     @VK_IMAGE_USAGE_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR@ or
---     @VK_IMAGE_USAGE_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR@
---
--- -   #VUID-VkImageMemoryBarrier2-srcQueueFamilyIndex-07006# 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_FEEDBACK_LOOP_OPTIMAL_EXT'
---     then @image@ /must/ have been created with either the
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT'
---     or
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'
---     usage bits, and the
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT'
---     or 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT'
---     usage bits, and the
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT'
---     usage bit
---
--- -   #VUID-VkImageMemoryBarrier2-attachmentFeedbackLoopLayout-07313# If
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-attachmentFeedbackLoopLayout attachmentFeedbackLoopLayout>
---     feature is not enabled, @newLayout@ /must/ not be
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
---
--- -   #VUID-VkImageMemoryBarrier2-srcQueueFamilyIndex-09550# 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_RENDERING_LOCAL_READ_KHR'
---     then @image@ /must/ have been created with either
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_STORAGE_BIT', or
---     with both
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT'
---     and either of
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT'
---     or
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'
---
--- -   #VUID-VkImageMemoryBarrier2-dynamicRenderingLocalRead-09551# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingLocalRead dynamicRenderingLocalRead>
---     feature is not enabled, @oldLayout@ /must/ not be
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_RENDERING_LOCAL_READ_KHR'
---
--- -   #VUID-VkImageMemoryBarrier2-dynamicRenderingLocalRead-09552# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingLocalRead dynamicRenderingLocalRead>
---     feature is not enabled, @newLayout@ /must/ not be
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_RENDERING_LOCAL_READ_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-image-09241# If @image@ has a color
---     format that is single-plane, then the @aspectMask@ member of
---     @subresourceRange@ /must/ be
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'
---
--- -   #VUID-VkImageMemoryBarrier2-image-09242# If @image@ has a color
---     format and 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 at least
---     one
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-planes-image-aspect multi-planar aspect mask>
---     bit or
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_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-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-aspectMask-08702# If the @aspectMask@
---     member of @subresourceRange@ includes
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT',
---     @oldLayout@ and @newLayout@ /must/ not be one of
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL'
---     or
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL'
---
--- -   #VUID-VkImageMemoryBarrier2-aspectMask-08703# If the @aspectMask@
---     member of @subresourceRange@ includes
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT',
---     @oldLayout@ and @newLayout@ /must/ not be one of
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL'
---     or
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL'
---
--- -   #VUID-VkImageMemoryBarrier2-subresourceRange-09601#
---     @subresourceRange.aspectMask@ /must/ be valid for the @format@ the
---     @image@ was created with
---
--- -   #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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>
---     or @oldLayout@ and @newLayout@ define an
---     <https://registry.khronos.org/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# 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_external_memory_acquire_unmodified.ExternalMemoryAcquireUnmodifiedEXT'
---     or
---     'Vulkan.Extensions.VK_EXT_sample_locations.SampleLocationsInfoEXT'
---
--- -   #VUID-VkImageMemoryBarrier2-sType-unique# The @sType@ value of each
---     struct in the @pNext@ chain /must/ be unique
---
--- -   #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://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/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 @ExternalMemoryAcquireUnmodifiedEXT = Just 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://registry.khronos.org/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer operation>
--- for that range.
---
--- The first
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
--- and
--- <https://registry.khronos.org/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
--- and
--- <https://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer operation>.
--- When executed on a queue in the family identified by
--- @srcQueueFamilyIndex@, this barrier defines a
--- <https://registry.khronos.org/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 scope
--- does not apply to this operation. When executed on a queue in the family
--- identified by @dstQueueFamilyIndex@, this barrier defines a
--- <https://registry.khronos.org/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 scope does
--- not apply to this operation.
---
--- A
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership 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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-queue-transfers>.
--- A
--- <https://registry.khronos.org/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://registry.khronos.org/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 geometryShader>
---     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 tessellationShader>
---     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 conditionalRendering>
---     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 fragmentDensityMap>
---     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 transformFeedback>
---     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 meshShader>
---     feature is not enabled, @srcStageMask@ /must/ not contain
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT'
---
--- -   #VUID-VkBufferMemoryBarrier2-srcStageMask-03935# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
---     feature is not enabled, @srcStageMask@ /must/ not contain
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT'
---
--- -   #VUID-VkBufferMemoryBarrier2-srcStageMask-07316# If neither of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
---     or the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate>
---     features are enabled, @srcStageMask@ /must/ not contain
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
---
--- -   #VUID-VkBufferMemoryBarrier2-srcStageMask-04957# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-subpassShading subpassShading>
---     feature is not enabled, @srcStageMask@ /must/ not contain
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI'
---
--- -   #VUID-VkBufferMemoryBarrier2-srcStageMask-04995# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-invocationMask invocationMask>
---     feature is not enabled, @srcStageMask@ /must/ not contain
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI'
---
--- -   #VUID-VkBufferMemoryBarrier2-srcStageMask-07946# If neither the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>
---     extension or the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayTracingPipeline rayTracingPipeline>
---     feature are enabled, @srcStageMask@ /must/ not contain
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR'
---
--- -   #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_SHADER_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-07454# 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',
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT',
---     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',
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_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_ACCELERATION_STRUCTURE_COPY_BIT_KHR',
---     '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_ACCELERATION_STRUCTURE_COPY_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_COPY_BIT_KHR',
---     '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 the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayQuery rayQuery>
---     feature 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-srcAccessMask-07272# If @srcAccessMask@
---     includes
---     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHR',
---     @srcStageMask@ /must/ include
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
---     or
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR'
---
--- -   #VUID-VkBufferMemoryBarrier2-srcAccessMask-04858# If @srcAccessMask@
---     includes @VK_ACCESS_2_VIDEO_DECODE_READ_BIT_KHR@, @srcStageMask@
---     /must/ include @VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR@
---
--- -   #VUID-VkBufferMemoryBarrier2-srcAccessMask-04859# If @srcAccessMask@
---     includes @VK_ACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR@, @srcStageMask@
---     /must/ include @VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR@
---
--- -   #VUID-VkBufferMemoryBarrier2-srcAccessMask-04860# If @srcAccessMask@
---     includes @VK_ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR@, @srcStageMask@
---     /must/ include @VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR@
---
--- -   #VUID-VkBufferMemoryBarrier2-srcAccessMask-04861# If @srcAccessMask@
---     includes @VK_ACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR@, @srcStageMask@
---     /must/ include @VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR@
---
--- -   #VUID-VkBufferMemoryBarrier2-srcAccessMask-07455# If @srcAccessMask@
---     includes
---     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_OPTICAL_FLOW_READ_BIT_NV',
---     @srcStageMask@ /must/ include
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV'
---
--- -   #VUID-VkBufferMemoryBarrier2-srcAccessMask-07456# If @srcAccessMask@
---     includes
---     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_OPTICAL_FLOW_WRITE_BIT_NV',
---     @srcStageMask@ /must/ include
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV'
---
--- -   #VUID-VkBufferMemoryBarrier2-srcAccessMask-07457# If @srcAccessMask@
---     includes
---     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_MICROMAP_WRITE_BIT_EXT',
---     @srcStageMask@ /must/ include
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT'
---
--- -   #VUID-VkBufferMemoryBarrier2-srcAccessMask-07458# If @srcAccessMask@
---     includes
---     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_MICROMAP_READ_BIT_EXT',
---     @srcStageMask@ /must/ include
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT'
---     or
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
---
--- -   #VUID-VkBufferMemoryBarrier2-srcAccessMask-08118# If @srcAccessMask@
---     includes
---     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_DESCRIPTOR_BUFFER_READ_BIT_EXT',
---     @srcStageMask@ /must/ include
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT',
---     or one of @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
---
--- -   #VUID-VkBufferMemoryBarrier2-dstStageMask-03929# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometryShader>
---     feature is not enabled, @dstStageMask@ /must/ not contain
---     '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 tessellationShader>
---     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 conditionalRendering>
---     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 fragmentDensityMap>
---     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 transformFeedback>
---     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 meshShader>
---     feature is not enabled, @dstStageMask@ /must/ not contain
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT'
---
--- -   #VUID-VkBufferMemoryBarrier2-dstStageMask-03935# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
---     feature is not enabled, @dstStageMask@ /must/ not contain
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT'
---
--- -   #VUID-VkBufferMemoryBarrier2-dstStageMask-07316# If neither of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
---     or the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate>
---     features are enabled, @dstStageMask@ /must/ not contain
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
---
--- -   #VUID-VkBufferMemoryBarrier2-dstStageMask-04957# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-subpassShading subpassShading>
---     feature is not enabled, @dstStageMask@ /must/ not contain
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI'
---
--- -   #VUID-VkBufferMemoryBarrier2-dstStageMask-04995# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-invocationMask invocationMask>
---     feature is not enabled, @dstStageMask@ /must/ not contain
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI'
---
--- -   #VUID-VkBufferMemoryBarrier2-dstStageMask-07946# If neither the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>
---     extension or the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayTracingPipeline rayTracingPipeline>
---     feature are enabled, @dstStageMask@ /must/ not contain
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR'
---
--- -   #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_SHADER_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-07454# 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',
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT',
---     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',
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_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_ACCELERATION_STRUCTURE_COPY_BIT_KHR',
---     '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_ACCELERATION_STRUCTURE_COPY_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_COPY_BIT_KHR',
---     '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 the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayQuery rayQuery>
---     feature 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-dstAccessMask-07272# If @dstAccessMask@
---     includes
---     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHR',
---     @dstStageMask@ /must/ include
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
---     or
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR'
---
--- -   #VUID-VkBufferMemoryBarrier2-dstAccessMask-04858# If @dstAccessMask@
---     includes @VK_ACCESS_2_VIDEO_DECODE_READ_BIT_KHR@, @dstStageMask@
---     /must/ include @VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR@
---
--- -   #VUID-VkBufferMemoryBarrier2-dstAccessMask-04859# If @dstAccessMask@
---     includes @VK_ACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR@, @dstStageMask@
---     /must/ include @VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR@
---
--- -   #VUID-VkBufferMemoryBarrier2-dstAccessMask-04860# If @dstAccessMask@
---     includes @VK_ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR@, @dstStageMask@
---     /must/ include @VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR@
---
--- -   #VUID-VkBufferMemoryBarrier2-dstAccessMask-04861# If @dstAccessMask@
---     includes @VK_ACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR@, @dstStageMask@
---     /must/ include @VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR@
---
--- -   #VUID-VkBufferMemoryBarrier2-dstAccessMask-07455# If @dstAccessMask@
---     includes
---     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_OPTICAL_FLOW_READ_BIT_NV',
---     @dstStageMask@ /must/ include
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV'
---
--- -   #VUID-VkBufferMemoryBarrier2-dstAccessMask-07456# If @dstAccessMask@
---     includes
---     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_OPTICAL_FLOW_WRITE_BIT_NV',
---     @dstStageMask@ /must/ include
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV'
---
--- -   #VUID-VkBufferMemoryBarrier2-dstAccessMask-07457# If @dstAccessMask@
---     includes
---     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_MICROMAP_WRITE_BIT_EXT',
---     @dstStageMask@ /must/ include
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT'
---
--- -   #VUID-VkBufferMemoryBarrier2-dstAccessMask-07458# If @dstAccessMask@
---     includes
---     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_MICROMAP_READ_BIT_EXT',
---     @dstStageMask@ /must/ include
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT'
---     or
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
---
--- -   #VUID-VkBufferMemoryBarrier2-dstAccessMask-08118# If @dstAccessMask@
---     includes
---     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_DESCRIPTOR_BUFFER_READ_BIT_EXT',
---     @dstStageMask@ /must/ include
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT',
---     or one of @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
---
--- -   #VUID-VkBufferMemoryBarrier2-offset-01187# @offset@ /must/ be less
---     than the size of @buffer@
---
--- -   #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-buffer-09095# If @buffer@ was created
---     with a sharing mode of
---     'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_EXCLUSIVE', and
---     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ are not equal,
---     @srcQueueFamilyIndex@ /must/ be
---     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_EXTERNAL',
---     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_FOREIGN_EXT', or a valid
---     queue family
---
--- -   #VUID-VkBufferMemoryBarrier2-buffer-09096# If @buffer@ was created
---     with a sharing mode of
---     'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_EXCLUSIVE', and
---     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ are not equal,
---     @dstQueueFamilyIndex@ /must/ be
---     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_EXTERNAL',
---     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_FOREIGN_EXT', or a valid
---     queue family
---
--- -   #VUID-VkBufferMemoryBarrier2-srcQueueFamilyIndex-04087# If
---     @srcQueueFamilyIndex@ is not equal to @dstQueueFamilyIndex@, at
---     least one of @srcQueueFamilyIndex@ or @dstQueueFamilyIndex@ /must/
---     not be 'Vulkan.Core10.APIConstants.QUEUE_FAMILY_EXTERNAL' or
---     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_FOREIGN_EXT'
---
--- -   #VUID-VkBufferMemoryBarrier2-None-09097# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_memory VK_KHR_external_memory>
---     extension is not enabled, and the value of
---     'Vulkan.Core10.DeviceInitialization.ApplicationInfo'::@apiVersion@
---     used to create the 'Vulkan.Core10.Handles.Instance' is not greater
---     than or equal to Version 1.1, @srcQueueFamilyIndex@ /must/ not be
---     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_EXTERNAL'
---
--- -   #VUID-VkBufferMemoryBarrier2-None-09098# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_memory VK_KHR_external_memory>
---     extension is not enabled, and the value of
---     'Vulkan.Core10.DeviceInitialization.ApplicationInfo'::@apiVersion@
---     used to create the 'Vulkan.Core10.Handles.Instance' is not greater
---     than or equal to Version 1.1, @dstQueueFamilyIndex@ /must/ not be
---     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_EXTERNAL'
---
--- -   #VUID-VkBufferMemoryBarrier2-srcQueueFamilyIndex-09099# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_queue_family_foreign VK_EXT_queue_family_foreign>
---     extension is not enabled @srcQueueFamilyIndex@ /must/ not be
---     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_FOREIGN_EXT'
---
--- -   #VUID-VkBufferMemoryBarrier2-dstQueueFamilyIndex-09100# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_queue_family_foreign VK_EXT_queue_family_foreign>
---     extension is not enabled @dstQueueFamilyIndex@ /must/ not be
---     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_FOREIGN_EXT'
---
--- -   #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@
---     or a pointer to a valid instance of
---     'Vulkan.Extensions.VK_EXT_external_memory_acquire_unmodified.ExternalMemoryAcquireUnmodifiedEXT'
---
--- -   #VUID-VkBufferMemoryBarrier2-sType-unique# The @sType@ value of each
---     struct in the @pNext@ chain /must/ be unique
---
--- -   #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 (es :: [Type]) = BufferMemoryBarrier2
-  { -- | @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://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/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)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (BufferMemoryBarrier2 (es :: [Type]))
-#endif
-deriving instance Show (Chain es) => Show (BufferMemoryBarrier2 es)
-
-instance Extensible BufferMemoryBarrier2 where
-  extensibleTypeName = "BufferMemoryBarrier2"
-  setNext BufferMemoryBarrier2{..} next' = BufferMemoryBarrier2{next = next', ..}
-  getNext BufferMemoryBarrier2{..} = next
-  extends :: forall e b proxy. Typeable e => proxy e -> (Extends BufferMemoryBarrier2 e => b) -> Maybe b
-  extends _ f
-    | Just Refl <- eqT @e @ExternalMemoryAcquireUnmodifiedEXT = Just f
-    | otherwise = Nothing
-
-instance ( Extendss BufferMemoryBarrier2 es
-         , PokeChain es ) => ToCStruct (BufferMemoryBarrier2 es) where
-  withCStruct x f = allocaBytes 80 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p BufferMemoryBarrier2{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BUFFER_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 Word32)) (srcQueueFamilyIndex)
-    lift $ poke ((p `plusPtr` 52 :: Ptr Word32)) (dstQueueFamilyIndex)
-    lift $ poke ((p `plusPtr` 56 :: Ptr Buffer)) (buffer)
-    lift $ poke ((p `plusPtr` 64 :: Ptr DeviceSize)) (offset)
-    lift $ poke ((p `plusPtr` 72 :: Ptr DeviceSize)) (size)
-    lift $ f
-  cStructSize = 80
-  cStructAlignment = 8
-  pokeZeroCStruct p f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2)
-    pNext' <- fmap castPtr . ContT $ withZeroChain @es
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
-    lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) (zero)
-    lift $ poke ((p `plusPtr` 52 :: Ptr Word32)) (zero)
-    lift $ poke ((p `plusPtr` 56 :: Ptr Buffer)) (zero)
-    lift $ poke ((p `plusPtr` 64 :: Ptr DeviceSize)) (zero)
-    lift $ poke ((p `plusPtr` 72 :: Ptr DeviceSize)) (zero)
-    lift $ f
-
-instance ( Extendss BufferMemoryBarrier2 es
-         , PeekChain es ) => FromCStruct (BufferMemoryBarrier2 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))
-    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
-             next
-             srcStageMask
-             srcAccessMask
-             dstStageMask
-             dstAccessMask
-             srcQueueFamilyIndex
-             dstQueueFamilyIndex
-             buffer
-             offset
-             size
-
-instance es ~ '[] => Zero (BufferMemoryBarrier2 es) 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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-memory memory dependencies>,
--- as well as
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer operations>
--- and
--- <https://registry.khronos.org/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://registry.khronos.org/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 (SomeStruct 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)
-    Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (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 -> peekSomeCStruct (forgetExtensions ((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 geometryShader>
---     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 tessellationShader>
---     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 conditionalRendering>
---     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 fragmentDensityMap>
---     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 transformFeedback>
---     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 meshShader>
---     feature is not enabled, @stageMask@ /must/ not contain
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT'
---
--- -   #VUID-VkSemaphoreSubmitInfo-stageMask-03935# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
---     feature is not enabled, @stageMask@ /must/ not contain
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT'
---
--- -   #VUID-VkSemaphoreSubmitInfo-stageMask-07316# If neither of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
---     or the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate>
---     features are enabled, @stageMask@ /must/ not contain
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
---
--- -   #VUID-VkSemaphoreSubmitInfo-stageMask-04957# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-subpassShading subpassShading>
---     feature is not enabled, @stageMask@ /must/ not contain
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI'
---
--- -   #VUID-VkSemaphoreSubmitInfo-stageMask-04995# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-invocationMask invocationMask>
---     feature is not enabled, @stageMask@ /must/ not contain
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI'
---
--- -   #VUID-VkSemaphoreSubmitInfo-stageMask-07946# If neither the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>
---     extension or the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayTracingPipeline rayTracingPipeline>
---     feature are enabled, @stageMask@ /must/ not contain
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR'
---
--- -   #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.Extensions.VK_ARM_render_pass_striped.RenderPassStripeSubmitInfoARM',
--- '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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-semaphores-waiting semaphore wait operation>
-    -- and
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operation>
-    -- sections of
-    -- <https://registry.khronos.org/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
---
--- -   #VUID-VkCommandBufferSubmitInfo-commandBuffer-09445# If any render
---     pass instance in @commandBuffer@ was recorded with a
---     'Vulkan.Extensions.VK_ARM_render_pass_striped.RenderPassStripeBeginInfoARM'
---     structure in its pNext chain and did not specify the
---     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_RESUMING_BIT' flag,
---     a
---     'Vulkan.Extensions.VK_ARM_render_pass_striped.RenderPassStripeSubmitInfoARM'
---     /must/ be included in the @pNext@ chain
---
--- -   #VUID-VkCommandBufferSubmitInfo-pNext-09446# If a
---     'Vulkan.Extensions.VK_ARM_render_pass_striped.RenderPassStripeSubmitInfoARM'
---     is included in the @pNext@ chain, the value of
---     'Vulkan.Extensions.VK_ARM_render_pass_striped.RenderPassStripeSubmitInfoARM'::@stripeSemaphoreInfoCount@
---     /must/ be equal to the sum of the
---     'Vulkan.Extensions.VK_ARM_render_pass_striped.RenderPassStripeBeginInfoARM'::@stripeInfoCount@
---     parameters provided to render pass instances recorded in
---     @commandBuffer@ that did not specify the
---     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_RESUMING_BIT' flag
---
--- == 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@ or a pointer to a valid instance of
---     'Vulkan.Extensions.VK_ARM_render_pass_striped.RenderPassStripeSubmitInfoARM'
---
--- -   #VUID-VkCommandBufferSubmitInfo-sType-unique# The @sType@ value of
---     each struct in the @pNext@ chain /must/ be unique
---
--- -   #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 (es :: [Type]) = CommandBufferSubmitInfo
-  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
-    next :: Chain es
-  , -- | @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)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (CommandBufferSubmitInfo (es :: [Type]))
-#endif
-deriving instance Show (Chain es) => Show (CommandBufferSubmitInfo es)
-
-instance Extensible CommandBufferSubmitInfo where
-  extensibleTypeName = "CommandBufferSubmitInfo"
-  setNext CommandBufferSubmitInfo{..} next' = CommandBufferSubmitInfo{next = next', ..}
-  getNext CommandBufferSubmitInfo{..} = next
-  extends :: forall e b proxy. Typeable e => proxy e -> (Extends CommandBufferSubmitInfo e => b) -> Maybe b
-  extends _ f
-    | Just Refl <- eqT @e @RenderPassStripeSubmitInfoARM = Just f
-    | otherwise = Nothing
-
-instance ( Extendss CommandBufferSubmitInfo es
-         , PokeChain es ) => ToCStruct (CommandBufferSubmitInfo es) where
-  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p CommandBufferSubmitInfo{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO)
-    pNext'' <- fmap castPtr . ContT $ withChain (next)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
-    lift $ poke ((p `plusPtr` 16 :: Ptr (Ptr CommandBuffer_T))) (commandBuffer)
-    lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) (deviceMask)
-    lift $ f
-  cStructSize = 32
-  cStructAlignment = 8
-  pokeZeroCStruct p f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO)
-    pNext' <- fmap castPtr . ContT $ withZeroChain @es
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
-    lift $ poke ((p `plusPtr` 16 :: Ptr (Ptr CommandBuffer_T))) (zero)
-    lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)
-    lift $ f
-
-instance ( Extendss CommandBufferSubmitInfo es
-         , PeekChain es ) => FromCStruct (CommandBufferSubmitInfo es) where
-  peekCStruct p = do
-    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
-    next <- peekChain (castPtr pNext)
-    commandBuffer <- peek @(Ptr CommandBuffer_T) ((p `plusPtr` 16 :: Ptr (Ptr CommandBuffer_T)))
-    deviceMask <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))
-    pure $ CommandBufferSubmitInfo
-             next commandBuffer deviceMask
-
-instance es ~ '[] => Zero (CommandBufferSubmitInfo es) 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://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/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_EXT_frame_boundary.FrameBoundaryEXT',
---     'Vulkan.Extensions.VK_NV_low_latency2.LatencySubmissionPresentIdNV',
---     '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://registry.khronos.org/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 (SomeStruct CommandBufferSubmitInfo)
-  , -- | @pSignalSemaphoreInfos@ is a pointer to an array of
-    -- 'SemaphoreSubmitInfo' describing
-    -- <https://registry.khronos.org/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 @LatencySubmissionPresentIdNV = Just f
-    | Just Refl <- eqT @e @FrameBoundaryEXT = Just 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)
-    Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (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 -> peekSomeCStruct (forgetExtensions ((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)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_tensors (FrameBoundaryTensorsARM)
+import Vulkan.Core10.Handles (Image)
+import Vulkan.Core10.Enums.ImageLayout (ImageLayout)
+import Vulkan.Core10.ImageView (ImageSubresourceRange)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_low_latency2 (LatencySubmissionPresentIdNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance8 (MemoryBarrierAccessFlags3KHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_device_address_commands (MemoryRangeBarriersInfoKHR)
+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 {-# SOURCE #-} Vulkan.Extensions.VK_ARM_render_pass_striped (RenderPassStripeSubmitInfoARM)
+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 {-# SOURCE #-} Vulkan.Extensions.VK_ARM_tensors (TensorDependencyInfoARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_tensors (TensorMemoryBarrierARM)
+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 (SomeStruct DependencyInfo) -> IO ()) -> Ptr CommandBuffer_T -> Event -> Ptr (SomeStruct 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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+-- and
+-- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-submission-order submission order>.
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-queue-transfers Queue family ownership transfers>
+-- and
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-image-layout-transitions image layout transitions>
+-- defined by @pDependencyInfo@ are also included in the first scopes.
+--
+-- The second
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+-- includes only the event signal operation, and any
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-queue-transfers queue family ownership transfers>
+-- and
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-image-layout-transitions image layout transitions>
+-- defined by @pDependencyInfo@.
+--
+-- The second
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
+-- includes only
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-queue-transfers queue family ownership transfers>
+-- and
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-image-layout-transitions image layout transitions>.
+--
+-- If
+-- 'Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_ASYMMETRIC_EVENT_BIT_KHR'
+-- is not set in @pDependencyInfo->dependencyFlags@, future
+-- 'cmdWaitEvents2' commands rely on all values of each element in
+-- @pDependencyInfo@ matching exactly with those used to signal the
+-- corresponding event. If
+-- 'Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_ASYMMETRIC_EVENT_BIT_KHR'
+-- is set, 'cmdSetEvent2' /must/ only include the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-pipeline-stages-masks source stage mask>
+-- of the first synchronization scope in
+-- @pDependencyInfo->pMemoryBarriers@[0].@srcStageMask@.
+-- 'Vulkan.Core10.CommandBufferBuilding.cmdWaitEvents' /must/ not be used
+-- to wait on the result of a signal operation defined by 'cmdSetEvent2'.
+--
+-- 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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-synchronization2 synchronization2>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdSetEvent2-dependencyFlags-03825# The @dependencyFlags@
+--     member of @pDependencyInfo@ /must/ be @0@ or
+--     'Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_ASYMMETRIC_EVENT_BIT_KHR'
+--
+-- -   #VUID-vkCmdSetEvent2-srcStageMask-09391# The @srcStageMask@ member
+--     of any element of the @pMemoryBarriers@, @pBufferMemoryBarriers@, or
+--     @pImageMemoryBarriers@ members of @pDependencyInfo@ /must/ not
+--     include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_HOST_BIT'
+--
+-- -   #VUID-vkCmdSetEvent2-dstStageMask-09392# The @dstStageMask@ member
+--     of any element of the @pMemoryBarriers@, @pBufferMemoryBarriers@, or
+--     @pImageMemoryBarriers@ members of @pDependencyInfo@ /must/ not
+--     include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_HOST_BIT'
+--
+-- -   #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
+--
+-- -   #VUID-vkCmdSetEvent2-dependencyFlags-10785# If the @dependencyFlags@
+--     member of @pDependencyInfo@ includes
+--     'Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_ASYMMETRIC_EVENT_BIT_KHR',
+--     the @bufferMemoryBarrierCount@ and @imageMemoryBarrierCount@ members
+--     of @pDependencyInfo@ /must/ be @0@
+--
+-- -   #VUID-vkCmdSetEvent2-dependencyFlags-10786# If the @dependencyFlags@
+--     member of @pDependencyInfo@ includes
+--     'Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_ASYMMETRIC_EVENT_BIT_KHR',
+--     the @memoryBarrierCount@ member of @pDependencyInfo@ /must/ be @1@
+--
+-- -   #VUID-vkCmdSetEvent2-dependencyFlags-10787# If the @dependencyFlags@
+--     member of @pDependencyInfo@ includes
+--     'Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_ASYMMETRIC_EVENT_BIT_KHR',
+--     the @srcAccessMask@, @dstStageMask@, and @dstAccessMask@ members of
+--     @pDependencyInfo->pMemoryBarriers@[0] /must/ be @0@
+--
+-- == 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
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT',
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT',
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits VK_QUEUE_VIDEO_DECODE_BIT_KHR>,
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits VK_QUEUE_VIDEO_ENCODE_BIT_KHR>
+--     operations
+--
+-- -   #VUID-vkCmdSetEvent2-renderpass# This command /must/ only be called
+--     outside of a render pass instance
+--
+-- -   #VUID-vkCmdSetEvent2-suspended# This command /must/ not be called
+--     between suspended render pass instances
+--
+-- -   #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#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Outside                                                                                                                | Both                                                                                                                        | VK_QUEUE_COMPUTE_BIT                                                                                                  | Synchronization                                                                                                                        |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | VK_QUEUE_GRAPHICS_BIT                                                                                                 |                                                                                                                                        |
+-- |                                                                                                                            |                                                                                                                        |                                                                                                                             | VK_QUEUE_VIDEO_DECODE_BIT_KHR                                                                                         |                                                                                                                                        |
+-- |                                                                                                                            |                                                                                                                        |                                                                                                                             | VK_QUEUE_VIDEO_ENCODE_BIT_KHR                                                                                         |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdSetEvent2 is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = 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 a io
+              . (Extendss DependencyInfo a, PokeChain a, 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 a)
+             -> 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)
+                                              (forgetExtensions 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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+-- includes all commands that occur earlier in
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-submission-order submission order>.
+-- The synchronization scope is limited to operations by @stageMask@ or
+-- stages that are
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-pipeline-stages-order logically earlier>
+-- than @stageMask@.
+--
+-- The second
+-- <https://registry.khronos.org/vulkan/specs/latest/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 geometryShader>
+--     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 tessellationShader>
+--     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 conditionalRendering>
+--     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 fragmentDensityMap>
+--     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 transformFeedback>
+--     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 meshShader>
+--     feature is not enabled, @stageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT'
+--
+-- -   #VUID-vkCmdResetEvent2-stageMask-03935# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
+--     feature is not enabled, @stageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT'
+--
+-- -   #VUID-vkCmdResetEvent2-stageMask-07316# If neither of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     or the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate>
+--     features are enabled, @stageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
+--
+-- -   #VUID-vkCmdResetEvent2-stageMask-04957# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-subpassShading subpassShading>
+--     feature is not enabled, @stageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI'
+--
+-- -   #VUID-vkCmdResetEvent2-stageMask-04995# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-invocationMask invocationMask>
+--     feature is not enabled, @stageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI'
+--
+-- -   #VUID-vkCmdResetEvent2-stageMask-07946# If neither the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>
+--     extension or the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayTracingPipeline rayTracingPipeline>
+--     feature are enabled, @stageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR'
+--
+-- -   #VUID-vkCmdResetEvent2-stageMask-10751# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-accelerationStructure accelerationStructure>
+--     feature is not enabled, @stageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
+--
+-- -   #VUID-vkCmdResetEvent2-stageMask-10752# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayTracingMaintenance1 rayTracingMaintenance1>
+--     feature is not enabled, @stageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR'
+--
+-- -   #VUID-vkCmdResetEvent2-stageMask-11541# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-micromapEXT ::micromap>
+--     feature is not enabled, @stageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT'
+--
+-- -   #VUID-vkCmdResetEvent2-synchronization2-03829# The
+--     <https://registry.khronos.org/vulkan/specs/latest/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
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT',
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT',
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits VK_QUEUE_VIDEO_DECODE_BIT_KHR>,
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits VK_QUEUE_VIDEO_ENCODE_BIT_KHR>
+--     operations
+--
+-- -   #VUID-vkCmdResetEvent2-renderpass# This command /must/ only be
+--     called outside of a render pass instance
+--
+-- -   #VUID-vkCmdResetEvent2-suspended# This command /must/ not be called
+--     between suspended render pass instances
+--
+-- -   #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#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Outside                                                                                                                | Both                                                                                                                        | VK_QUEUE_COMPUTE_BIT                                                                                                  | Synchronization                                                                                                                        |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | VK_QUEUE_GRAPHICS_BIT                                                                                                 |                                                                                                                                        |
+-- |                                                                                                                            |                                                                                                                        |                                                                                                                             | VK_QUEUE_VIDEO_DECODE_BIT_KHR                                                                                         |                                                                                                                                        |
+-- |                                                                                                                            |                                                                                                                        |                                                                                                                             | VK_QUEUE_VIDEO_ENCODE_BIT_KHR                                                                                         |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdResetEvent2 is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = 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://registry.khronos.org/vulkan/specs/latest/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 (SomeStruct DependencyInfo) -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Ptr Event -> Ptr (SomeStruct DependencyInfo) -> IO ()
+
+foreign import ccall
+  "dynamic" mkVkCmdWaitEvents2Safe
+  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Ptr Event -> Ptr (SomeStruct DependencyInfo) -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Ptr Event -> Ptr (SomeStruct DependencyInfo) -> IO ()
+
+-- | cmdWaitEvents2 with selectable safeness
+cmdWaitEvents2SafeOrUnsafe :: forall io
+                            . (MonadIO io)
+                           => (FunPtr (Ptr CommandBuffer_T -> Word32 -> Ptr Event -> Ptr (SomeStruct DependencyInfo) -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Ptr Event -> Ptr (SomeStruct 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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>.
+                              ("dependencyInfos" ::: Vector (SomeStruct 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 $ pokeSomeCStruct (forgetExtensions (pPDependencyInfos `plusPtr` (64 * (i)) :: Ptr (DependencyInfo _))) (e) . ($ ())) (dependencyInfos)
+  lift $ traceAroundEvent "vkCmdWaitEvents2" (vkCmdWaitEvents2'
+                                                (commandBufferHandle (commandBuffer))
+                                                ((fromIntegral pEventsLength :: Word32))
+                                                (pPEvents)
+                                                (forgetExtensions (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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+-- and
+-- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+-- and
+-- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-submission-order submission order>
+-- than 'cmdWaitEvents2'.
+--
+-- '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.
+--
+-- 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-image-09373# If 'cmdWaitEvents2' is called
+--     within a render pass instance using a
+--     'Vulkan.Core10.Handles.RenderPass' object, and the @image@ member of
+--     any image memory barrier is a color resolve attachment, the
+--     corresponding color attachment /must/ be
+--     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED'
+--
+-- -   #VUID-vkCmdWaitEvents2-image-09374# If 'cmdWaitEvents2' is called
+--     within a render pass instance using a
+--     'Vulkan.Core10.Handles.RenderPass' object, and the @image@ member of
+--     any image memory barrier is a color resolve attachment, it /must/
+--     have been created with a non-zero
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value
+--
+-- -   #VUID-vkCmdWaitEvents2-oldLayout-01181# If 'cmdWaitEvents2' 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-vkCmdWaitEvents2-srcQueueFamilyIndex-01182# If
+--     'cmdWaitEvents2' is called within a render pass instance, the
+--     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ members of any
+--     memory barrier included in this command /must/ be equal
+--
+-- -   #VUID-vkCmdWaitEvents2-synchronization2-03836# The
+--     <https://registry.khronos.org/vulkan/specs/latest/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-10788# For each element i of
+--     @pEvents@, if the @dependencyFlags@ member of the ith element of
+--     @pDependencyInfos@ does not include
+--     'Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_ASYMMETRIC_EVENT_BIT_KHR',
+--     and 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-10789# For each element i of
+--     @pEvents@, if the @dependencyFlags@ member of the ith element of
+--     @pDependencyInfos@ includes
+--     'Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_ASYMMETRIC_EVENT_BIT_KHR',
+--     that event /must/ be signaled by 'cmdSetEvent2' with
+--     'Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_ASYMMETRIC_EVENT_BIT_KHR'
+--
+-- -   #VUID-vkCmdWaitEvents2-pEvents-10790# For each element i of
+--     @pEvents@, if the @dependencyFlags@ member of the ith element of
+--     @pDependencyInfos@ includes
+--     'Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_ASYMMETRIC_EVENT_BIT_KHR',
+--     the union of @srcStageMask@ members of all elements of
+--     @pMemoryBarriers@, @pBufferMemoryBarriers@, and
+--     @pImageMemoryBarriers@ of the ith element of @pDependencyInfos@
+--     /must/ equal @pDependencyInfos->pMemoryBarriers@[0].@srcStageMask@
+--     in the 'cmdSetEvent2' command
+--
+-- -   #VUID-vkCmdWaitEvents2-pEvents-03839# For each 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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+--
+-- -   #VUID-vkCmdWaitEvents2-pEvents-03840# For each 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 each 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://registry.khronos.org/vulkan/specs/latest/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/ only
+--     include pipeline stages valid for the queue family that was used to
+--     create the command pool that @commandBuffer@ was allocated from
+--
+-- -   #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-10394# The @dependencyFlags@
+--     member of any element of @pDependencyInfo@ /must/ not include any of
+--     the following bits:
+--
+--     -   'Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_BY_REGION_BIT'
+--
+--     -   'Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_DEVICE_GROUP_BIT'
+--
+--     -   'Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_VIEW_LOCAL_BIT'
+--
+--     -   'Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_FEEDBACK_LOOP_BIT_EXT'
+--
+-- -   #VUID-vkCmdWaitEvents2-maintenance8-10205# If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance8 maintenance8>
+--     feature is not enabled, the @dependencyFlags@ members of any element
+--     of @pDependencyInfos@ /must/ not include
+--     'Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_QUEUE_FAMILY_OWNERSHIP_TRANSFER_USE_ALL_STAGES_BIT_KHR'
+--
+-- -   #VUID-vkCmdWaitEvents2-dependencyFlags-03844# If this command is
+--     called inside a render pass instance, the @srcStageMask@ member of
+--     any element of the @pMemoryBarriers@, @pBufferMemoryBarriers@, or
+--     @pImageMemoryBarriers@ members of @pDependencyInfos@ /must/ not
+--     include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_HOST_BIT'
+--
+-- -   #VUID-vkCmdWaitEvents2-commandBuffer-03846# @commandBuffer@’s
+--     current device mask /must/ include exactly one physical device
+--
+-- -   #VUID-vkCmdWaitEvents2-None-10654# This command /must/ not be
+--     recorded when
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model>
+--     is enabled
+--
+-- == 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
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT',
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT',
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits VK_QUEUE_VIDEO_DECODE_BIT_KHR>,
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits VK_QUEUE_VIDEO_ENCODE_BIT_KHR>
+--     operations
+--
+-- -   #VUID-vkCmdWaitEvents2-suspended# This command /must/ not be called
+--     between suspended render pass instances
+--
+-- -   #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#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Both                                                                                                                        | VK_QUEUE_COMPUTE_BIT                                                                                                  | Synchronization                                                                                                                        |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | VK_QUEUE_GRAPHICS_BIT                                                                                                 |                                                                                                                                        |
+-- |                                                                                                                            |                                                                                                                        |                                                                                                                             | VK_QUEUE_VIDEO_DECODE_BIT_KHR                                                                                         |                                                                                                                                        |
+-- |                                                                                                                            |                                                                                                                        |                                                                                                                             | VK_QUEUE_VIDEO_ENCODE_BIT_KHR                                                                                         |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdWaitEvents2 is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = 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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>.
+                  ("dependencyInfos" ::: Vector (SomeStruct 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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>.
+                      ("dependencyInfos" ::: Vector (SomeStruct DependencyInfo))
+                   -> io ()
+cmdWaitEvents2Safe = cmdWaitEvents2SafeOrUnsafe mkVkCmdWaitEvents2Safe
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdPipelineBarrier2
+  :: FunPtr (Ptr CommandBuffer_T -> Ptr (SomeStruct DependencyInfo) -> IO ()) -> Ptr CommandBuffer_T -> Ptr (SomeStruct DependencyInfo) -> IO ()
+
+-- | vkCmdPipelineBarrier2 - Insert a memory dependency
+--
+-- = Description
+--
+-- When 'cmdPipelineBarrier2' is submitted to a queue, it defines memory
+-- dependencies between commands that were submitted to the same queue
+-- before it, and those submitted to the same queue after it.
+--
+-- The first
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+-- and
+-- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-submission-order submission order>.
+--
+-- The second
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+-- and
+-- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-submission-order submission order>.
+--
+-- If 'cmdPipelineBarrier2' is recorded within a render pass instance, the
+-- synchronization scopes are limited to a subset of operations within the
+-- same subpass or render pass instance.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdPipelineBarrier2-None-07889# If 'cmdPipelineBarrier2' is
+--     called within a render pass instance using a
+--     'Vulkan.Core10.Handles.RenderPass' object, the render pass /must/
+--     have been created with at least one subpass dependency that
+--     expresses a dependency from the current subpass to itself, does not
+--     include
+--     'Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_BY_REGION_BIT' if
+--     this command does not, does not include
+--     'Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_VIEW_LOCAL_BIT'
+--     if this command does not, and has
+--     <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 using
+--     a 'Vulkan.Core10.Handles.RenderPass' object, it /must/ not include
+--     any buffer memory barriers
+--
+-- -   #VUID-vkCmdPipelineBarrier2-image-04073# If 'cmdPipelineBarrier2' is
+--     called within a render pass instance using a
+--     'Vulkan.Core10.Handles.RenderPass' object, 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, color resolve, or depth\/stencil attachment
+--
+-- -   #VUID-vkCmdPipelineBarrier2-None-07890# If 'cmdPipelineBarrier2' is
+--     called within a render pass instance, and the source stage masks of
+--     any memory barriers include
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-framebuffer-regions framebuffer-space stages>,
+--     destination stage masks of all memory barriers /must/ only include
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-framebuffer-regions framebuffer-space stages>
+--
+-- -   #VUID-vkCmdPipelineBarrier2-dependencyFlags-07891# If
+--     'cmdPipelineBarrier2' is called within a render pass instance, and
+--     the source stage masks of any memory barriers include
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-framebuffer-regions framebuffer-space stages>,
+--     then @dependencyFlags@ /must/ include
+--     'Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_BY_REGION_BIT'
+--
+-- -   #VUID-vkCmdPipelineBarrier2-None-07892# If 'cmdPipelineBarrier2' is
+--     called within a render pass instance, the source and destination
+--     stage masks of any memory barriers /must/ only include graphics
+--     pipeline stages
+--
+-- -   #VUID-vkCmdPipelineBarrier2-dependencyFlags-01186# If
+--     'cmdPipelineBarrier2' is called outside of a render pass instance,
+--     the dependency flags /must/ not include
+--     'Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_VIEW_LOCAL_BIT'
+--
+-- -   #VUID-vkCmdPipelineBarrier2-None-07893# If 'cmdPipelineBarrier2' is
+--     called inside a render pass instance, and there is more than one
+--     view in the current subpass, dependency flags /must/ include
+--     'Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_VIEW_LOCAL_BIT'
+--
+-- -   #VUID-vkCmdPipelineBarrier2-None-09553# If none of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderTileImageColorReadAccess shaderTileImageColorReadAccess>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderTileImageStencilReadAccess shaderTileImageStencilReadAccess>,
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderTileImageDepthReadAccess shaderTileImageDepthReadAccess>
+--     features are enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingLocalRead dynamicRenderingLocalRead>
+--     feature is not enabled, 'cmdPipelineBarrier2' /must/ not be called
+--     within a render pass instance started with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--
+-- -   #VUID-vkCmdPipelineBarrier2-None-09554# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingLocalRead dynamicRenderingLocalRead>
+--     feature is not enabled, and 'cmdPipelineBarrier2' is called within a
+--     render pass instance started with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there /must/ be no buffer or image memory barriers specified by this
+--     command
+--
+-- -   #VUID-vkCmdPipelineBarrier2-None-09586# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingLocalRead dynamicRenderingLocalRead>
+--     feature is not enabled, and 'cmdPipelineBarrier2' is called within a
+--     render pass instance started with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     memory barriers specified by this command /must/ only include
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_COLOR_ATTACHMENT_READ_BIT',
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT',
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT',
+--     or
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT'
+--     in their access masks
+--
+-- -   #VUID-vkCmdPipelineBarrier2-image-09555# If 'cmdPipelineBarrier2' is
+--     called within a render pass instance started with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     and the @image@ member of any image memory barrier is used as an
+--     attachment in the current render pass instance, it /must/ be in the
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_RENDERING_LOCAL_READ'
+--     or 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL' layout
+--
+-- -   #VUID-vkCmdPipelineBarrier2-srcStageMask-09556# If
+--     'cmdPipelineBarrier2' is called within a render pass instance
+--     started with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     this command /must/ only specify
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-framebuffer-regions framebuffer-space stages>
+--     in @srcStageMask@ and @dstStageMask@
+--
+-- -   #VUID-vkCmdPipelineBarrier2-image-09373# If 'cmdPipelineBarrier2' is
+--     called within a render pass instance using a
+--     'Vulkan.Core10.Handles.RenderPass' object, and the @image@ member of
+--     any image memory barrier is a color resolve attachment, the
+--     corresponding color attachment /must/ be
+--     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED'
+--
+-- -   #VUID-vkCmdPipelineBarrier2-image-09374# If 'cmdPipelineBarrier2' is
+--     called within a render pass instance using a
+--     'Vulkan.Core10.Handles.RenderPass' object, and the @image@ member of
+--     any image memory barrier is a color resolve attachment, it /must/
+--     have been created with a non-zero
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value
+--
+-- -   #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
+--     memory barrier included in this command /must/ be equal
+--
+-- -   #VUID-vkCmdPipelineBarrier2-synchronization2-03848# The
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-synchronization2 synchronization2>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdPipelineBarrier2-srcStageMask-09673# The @srcStageMask@
+--     member of any element of the @pMemoryBarriers@ member 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-09674# The @dstStageMask@
+--     member of any element of the @pMemoryBarriers@ member 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-srcStageMask-09675# If a buffer or image
+--     memory barrier does not specify an
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-queue-transfers-acquire acquire operation>,
+--     or if it does but @pDependencyInfo->dependencyFlags@ includes
+--     'Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_QUEUE_FAMILY_OWNERSHIP_TRANSFER_USE_ALL_STAGES_BIT_KHR',
+--     the respective @srcStageMask@ member of the element of the
+--     @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-09676# If a buffer or image
+--     memory barrier does not specify an
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-queue-transfers-release release operation>,
+--     or if it does but @pDependencyInfo->dependencyFlags@ includes
+--     'Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_QUEUE_FAMILY_OWNERSHIP_TRANSFER_USE_ALL_STAGES_BIT_KHR',
+--     the respective @dstStageMask@ member of the element of the
+--     @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-srcQueueFamilyIndex-10387# If a buffer
+--     or image memory barrier specifies a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer operation>,
+--     either the @srcQueueFamilyIndex@ or @dstQueueFamilyIndex@ member of
+--     the element of the @pBufferMemoryBarriers@ or @pImageMemoryBarriers@
+--     members of @pDependencyInfo@ and the queue family index that was
+--     used to create the command pool that @commandBuffer@ was allocated
+--     from /must/ be equal
+--
+-- == 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
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT',
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT',
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_TRANSFER_BIT',
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits VK_QUEUE_VIDEO_DECODE_BIT_KHR>,
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits VK_QUEUE_VIDEO_ENCODE_BIT_KHR>
+--     operations
+--
+-- -   #VUID-vkCmdPipelineBarrier2-suspended# This command /must/ not be
+--     called between suspended render pass instances
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Both                                                                                                                        | VK_QUEUE_COMPUTE_BIT                                                                                                  | Synchronization                                                                                                                        |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | VK_QUEUE_GRAPHICS_BIT                                                                                                 |                                                                                                                                        |
+-- |                                                                                                                            |                                                                                                                        |                                                                                                                             | VK_QUEUE_TRANSFER_BIT                                                                                                 |                                                                                                                                        |
+-- |                                                                                                                            |                                                                                                                        |                                                                                                                             | VK_QUEUE_VIDEO_DECODE_BIT_KHR                                                                                         |                                                                                                                                        |
+-- |                                                                                                                            |                                                                                                                        |                                                                                                                             | VK_QUEUE_VIDEO_ENCODE_BIT_KHR                                                                                         |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdPipelineBarrier2 is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = 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 a io
+                     . (Extendss DependencyInfo a, PokeChain a, 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 a)
+                    -> 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))
+                                                     (forgetExtensions 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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#devsandqueues-submission queue submission command>,
+-- with each batch defined by an element of @pSubmits@.
+--
+-- The first
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+-- of each
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operation>
+-- defined by this command includes every command in the same batch that
+-- the signal operation is defined in, and all commands that occur earlier
+-- in
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-submission-order submission order>.
+-- The scope is limited by the @stageMask@ member of the
+-- 'SemaphoreSubmitInfo' used to define each such operation.
+--
+-- The second
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+-- of each
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-semaphores-waiting semaphore wait operation>
+-- defined by this command includes every command in the same batch that
+-- the wait operation is defined in, and all commands that occur later in
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-submission-order submission order>.
+-- The scope is limited by the @stageMask@ member of the
+-- 'SemaphoreSubmitInfo' used to define each such operation.
+--
+-- If any command buffer submitted to this queue is in the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#commandbuffers-lifecycle executable state>,
+-- it is moved to the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#commandbuffers-lifecycle pending state>.
+-- Once execution of all submissions of a command buffer complete, it moves
+-- from the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#commandbuffers-lifecycle pending state>,
+-- back to the
+-- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/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
+--     a '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-03873# The @semaphore@ member of any
+--     element of the @pWaitSemaphoreInfos@ member of any element of
+--     @pSubmits@ that was created with a
+--     'Vulkan.Core12.Enums.SemaphoreType.SemaphoreType' of
+--     'Vulkan.Core12.Enums.SemaphoreType.SEMAPHORE_TYPE_BINARY' /must/
+--     reference a semaphore signal operation that has been submitted for
+--     execution and any
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operations>
+--     on which it depends /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://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#commandbuffers-lifecycle pending state>
+--
+-- -   #VUID-vkQueueSubmit2-commandBuffer-03876# Any
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#commandbuffers-lifecycle pending or executable state>
+--
+-- -   #VUID-vkQueueSubmit2-commandBuffer-03877# If any
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-queue-transfers-acquire Queue Family Ownership Transfer Acquire Operation>,
+--     there /must/ exist a previously submitted
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-queue-transfers-release Queue Family Ownership 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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-queue-transfers-acquire acquire operations>,
+--     and which happens before the acquire operation
+--
+-- -   #VUID-vkQueueSubmit2-commandBuffer-10910# If a command recorded into
+--     the @commandBuffer@ member of any element of the
+--     @pCommandBufferInfos@ member of any element of @pSubmits@ includes a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-queue-transfers-acquire Queue Family Ownership Transfer Acquire Operation>,
+--     the affected resource /must/ not be modified in any way between the
+--     last matching release operation and 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://registry.khronos.org/vulkan/specs/latest/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.Extensions.VK_KHR_synchronization2.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 if it was
+--     not created with
+--     'Vulkan.Core10.Enums.DeviceQueueCreateFlagBits.DEVICE_QUEUE_CREATE_INTERNALLY_SYNCHRONIZED_BIT_KHR'
+--
+-- -   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#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | -                                                                                                                          | -                                                                                                                      | -                                                                                                                           | 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_DEVICE_LOST'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = 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. Command buffers and
+                -- semaphores specified in this array /may/ be accessed at any point until
+                -- the
+                -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#devsandqueues-submission queue operations>
+                -- they define complete execution on the device.
+                ("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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-fences-signaling fence signal operation>.
+                -- If it is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @fence@ /may/ be
+                -- accessed at any point until this command completes on the device.
+                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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+-- includes all commands that occur earlier in
+-- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+-- includes only the timestamp write operation.
+--
+-- Implementations may write the timestamp at any stage that is
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-pipeline-stages-order logically later>
+-- than @stage@.
+--
+-- Any timestamp write that
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-execution happens-after>
+-- another timestamp write in the same submission /must/ not have a lower
+-- value unless its value overflows the maximum supported integer bit width
+-- of the query. If @VK_KHR_calibrated_timestamps@ or
+-- @VK_EXT_calibrated_timestamps@ is enabled, this extends to timestamp
+-- writes across all submissions on the same logical device: any timestamp
+-- write that
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-execution happens-after>
+-- another /must/ not have a lower value unless its value overflows the
+-- maximum supported integer bit width of the query. Timestamps written by
+-- this command /must/ be in the
+-- 'Vulkan.Extensions.VK_EXT_present_timing.TIME_DOMAIN_DEVICE_KHR'
+-- <VkTimeDomainKHR.html time domain>. If an overflow occurs, the timestamp
+-- value /must/ wrap back to zero.
+--
+-- 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 or dynamic render pass 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.
+--
+-- -   All N queries are timestamp values.
+--
+-- Either way, if two timestamps are written in the same subpass or dynamic
+-- render pass with multiview enabled, each of the N consecutive queries
+-- written for a timestamp /must/ not have a lower value than the queries
+-- with corresponding indices written by the timestamp that happens-before
+-- unless the value overflows the maximum supported integer bit width of
+-- the query.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdWriteTimestamp2-stage-03929# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometryShader>
+--     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 tessellationShader>
+--     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 conditionalRendering>
+--     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 fragmentDensityMap>
+--     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 transformFeedback>
+--     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 meshShader>
+--     feature is not enabled, @stage@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT'
+--
+-- -   #VUID-vkCmdWriteTimestamp2-stage-03935# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
+--     feature is not enabled, @stage@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT'
+--
+-- -   #VUID-vkCmdWriteTimestamp2-stage-07316# If neither of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     or the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate>
+--     features are enabled, @stage@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
+--
+-- -   #VUID-vkCmdWriteTimestamp2-stage-04957# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-subpassShading subpassShading>
+--     feature is not enabled, @stage@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI'
+--
+-- -   #VUID-vkCmdWriteTimestamp2-stage-04995# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-invocationMask invocationMask>
+--     feature is not enabled, @stage@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI'
+--
+-- -   #VUID-vkCmdWriteTimestamp2-stage-07946# If neither the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>
+--     extension or the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayTracingPipeline rayTracingPipeline>
+--     feature are enabled, @stage@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR'
+--
+-- -   #VUID-vkCmdWriteTimestamp2-stage-10751# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-accelerationStructure accelerationStructure>
+--     feature is not enabled, @stage@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
+--
+-- -   #VUID-vkCmdWriteTimestamp2-stage-10752# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayTracingMaintenance1 rayTracingMaintenance1>
+--     feature is not enabled, @stage@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR'
+--
+-- -   #VUID-vkCmdWriteTimestamp2-stage-11541# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-micromapEXT ::micromap>
+--     feature is not enabled, @stage@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT'
+--
+-- -   #VUID-vkCmdWriteTimestamp2-synchronization2-03858# The
+--     <https://registry.khronos.org/vulkan/specs/latest/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-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@
+--
+-- -   #VUID-vkCmdWriteTimestamp2-None-10639# This command /must/ not be
+--     recorded when
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model>
+--     is enabled
+--
+-- == 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
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT',
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT',
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_TRANSFER_BIT',
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits VK_QUEUE_VIDEO_DECODE_BIT_KHR>,
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits VK_QUEUE_VIDEO_ENCODE_BIT_KHR>
+--     operations
+--
+-- -   #VUID-vkCmdWriteTimestamp2-suspended# This command /must/ not be
+--     called between suspended render pass instances
+--
+-- -   #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#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Both                                                                                                                        | VK_QUEUE_COMPUTE_BIT                                                                                                  | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | VK_QUEUE_GRAPHICS_BIT                                                                                                 |                                                                                                                                        |
+-- |                                                                                                                            |                                                                                                                        |                                                                                                                             | VK_QUEUE_TRANSFER_BIT                                                                                                 |                                                                                                                                        |
+-- |                                                                                                                            |                                                                                                                        |                                                                                                                             | VK_QUEUE_VIDEO_DECODE_BIT_KHR                                                                                         |                                                                                                                                        |
+-- |                                                                                                                            |                                                                                                                        |                                                                                                                             | VK_QUEUE_VIDEO_ENCODE_BIT_KHR                                                                                         |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdWriteTimestamp2 is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = 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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-memory memory dependency>
+-- affecting all device memory.
+--
+-- The first
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+-- and
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
+-- described by this structure include only operations and memory accesses
+-- specified by the source stage mask and source access mask.
+--
+-- The second
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+-- and
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
+-- described by this structure include only operations and memory accesses
+-- specified by destination stage mask and destination access mask.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkMemoryBarrier2-srcStageMask-03929# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometryShader>
+--     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 tessellationShader>
+--     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 conditionalRendering>
+--     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 fragmentDensityMap>
+--     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 transformFeedback>
+--     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 meshShader>
+--     feature is not enabled, @srcStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT'
+--
+-- -   #VUID-VkMemoryBarrier2-srcStageMask-03935# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
+--     feature is not enabled, @srcStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT'
+--
+-- -   #VUID-VkMemoryBarrier2-srcStageMask-07316# If neither of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     or the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate>
+--     features are enabled, @srcStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
+--
+-- -   #VUID-VkMemoryBarrier2-srcStageMask-04957# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-subpassShading subpassShading>
+--     feature is not enabled, @srcStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI'
+--
+-- -   #VUID-VkMemoryBarrier2-srcStageMask-04995# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-invocationMask invocationMask>
+--     feature is not enabled, @srcStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI'
+--
+-- -   #VUID-VkMemoryBarrier2-srcStageMask-07946# If neither the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>
+--     extension or the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayTracingPipeline rayTracingPipeline>
+--     feature are enabled, @srcStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR'
+--
+-- -   #VUID-VkMemoryBarrier2-srcStageMask-10751# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-accelerationStructure accelerationStructure>
+--     feature is not enabled, @srcStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
+--
+-- -   #VUID-VkMemoryBarrier2-srcStageMask-10752# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayTracingMaintenance1 rayTracingMaintenance1>
+--     feature is not enabled, @srcStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR'
+--
+-- -   #VUID-VkMemoryBarrier2-srcStageMask-11541# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-micromapEXT ::micromap>
+--     feature is not enabled, @srcStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT'
+--
+-- -   #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_COPY_INDIRECT_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_SHADER_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-07454# 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',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT',
+--     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',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CONVERT_COOPERATIVE_VECTOR_MATRIX_BIT_NV',
+--     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',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CONVERT_COOPERATIVE_VECTOR_MATRIX_BIT_NV',
+--     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.Extensions.VK_KHR_synchronization2.ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Extensions.VK_KHR_synchronization2.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.Extensions.VK_KHR_synchronization2.ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Extensions.VK_KHR_synchronization2.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',
+--     and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayQuery rayQuery>
+--     feature is enabled, @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR',
+--     one of the @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages,
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #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_COPY_BIT_KHR',
+--     '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 @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR',
+--     and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayQuery rayQuery>
+--     feature is not enabled, @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkMemoryBarrier2-srcAccessMask-07272# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHR',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR'
+--
+-- -   #VUID-VkMemoryBarrier2-srcAccessMask-04858# If @srcAccessMask@
+--     includes
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkAccessFlagBits2KHR VK_ACCESS_2_VIDEO_DECODE_READ_BIT_KHR>,
+--     @srcStageMask@ /must/ include
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR>
+--
+-- -   #VUID-VkMemoryBarrier2-srcAccessMask-04859# If @srcAccessMask@
+--     includes
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkAccessFlagBits2KHR VK_ACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR>,
+--     @srcStageMask@ /must/ include
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR>
+--
+-- -   #VUID-VkMemoryBarrier2-srcAccessMask-04860# If @srcAccessMask@
+--     includes
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkAccessFlagBits2KHR VK_ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR>,
+--     @srcStageMask@ /must/ include
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR>
+--
+-- -   #VUID-VkMemoryBarrier2-srcAccessMask-04861# If @srcAccessMask@
+--     includes
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkAccessFlagBits2KHR VK_ACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR>,
+--     @srcStageMask@ /must/ include
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR>
+--
+-- -   #VUID-VkMemoryBarrier2-srcAccessMask-07455# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_OPTICAL_FLOW_READ_BIT_NV',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV'
+--
+-- -   #VUID-VkMemoryBarrier2-srcAccessMask-07456# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_OPTICAL_FLOW_WRITE_BIT_NV',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV'
+--
+-- -   #VUID-VkMemoryBarrier2-srcAccessMask-07457# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_MICROMAP_WRITE_BIT_EXT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT'
+--
+-- -   #VUID-VkMemoryBarrier2-srcAccessMask-07458# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_MICROMAP_READ_BIT_EXT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT'
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
+--
+-- -   #VUID-VkMemoryBarrier2-srcAccessMask-08118# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_DESCRIPTOR_BUFFER_READ_BIT_EXT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT',
+--     or one of @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
+--
+-- -   #VUID-VkMemoryBarrier2-srcAccessMask-10670# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_TILE_ATTACHMENT_READ_BIT_QCOM',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT'
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COMPUTE_SHADER_BIT'
+--
+-- -   #VUID-VkMemoryBarrier2-srcAccessMask-10671# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_TILE_ATTACHMENT_WRITE_BIT_QCOM',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT'
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COMPUTE_SHADER_BIT'
+--
+-- -   #VUID-VkMemoryBarrier2-srcAccessMask-11771# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_MEMORY_DECOMPRESSION_READ_BIT_EXT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MEMORY_DECOMPRESSION_BIT_EXT'
+--
+-- -   #VUID-VkMemoryBarrier2-srcAccessMask-11772# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_MEMORY_DECOMPRESSION_WRITE_BIT_EXT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MEMORY_DECOMPRESSION_BIT_EXT'
+--
+-- -   #VUID-VkMemoryBarrier2-srcAccessMask-11294# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SAMPLER_HEAP_READ_BIT_EXT'
+--     or
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_RESOURCE_HEAP_READ_BIT_EXT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT',
+--     or one of @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
+--
+-- -   #VUID-VkMemoryBarrier2-dstStageMask-03929# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometryShader>
+--     feature is not enabled, @dstStageMask@ /must/ not contain
+--     '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 tessellationShader>
+--     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 conditionalRendering>
+--     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 fragmentDensityMap>
+--     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 transformFeedback>
+--     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 meshShader>
+--     feature is not enabled, @dstStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT'
+--
+-- -   #VUID-VkMemoryBarrier2-dstStageMask-03935# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
+--     feature is not enabled, @dstStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT'
+--
+-- -   #VUID-VkMemoryBarrier2-dstStageMask-07316# If neither of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     or the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate>
+--     features are enabled, @dstStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
+--
+-- -   #VUID-VkMemoryBarrier2-dstStageMask-04957# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-subpassShading subpassShading>
+--     feature is not enabled, @dstStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI'
+--
+-- -   #VUID-VkMemoryBarrier2-dstStageMask-04995# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-invocationMask invocationMask>
+--     feature is not enabled, @dstStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI'
+--
+-- -   #VUID-VkMemoryBarrier2-dstStageMask-07946# If neither the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>
+--     extension or the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayTracingPipeline rayTracingPipeline>
+--     feature are enabled, @dstStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR'
+--
+-- -   #VUID-VkMemoryBarrier2-dstStageMask-10751# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-accelerationStructure accelerationStructure>
+--     feature is not enabled, @dstStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
+--
+-- -   #VUID-VkMemoryBarrier2-dstStageMask-10752# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayTracingMaintenance1 rayTracingMaintenance1>
+--     feature is not enabled, @dstStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR'
+--
+-- -   #VUID-VkMemoryBarrier2-dstStageMask-11541# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-micromapEXT ::micromap>
+--     feature is not enabled, @dstStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT'
+--
+-- -   #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_COPY_INDIRECT_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_SHADER_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-07454# 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',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT',
+--     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',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CONVERT_COOPERATIVE_VECTOR_MATRIX_BIT_NV',
+--     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',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CONVERT_COOPERATIVE_VECTOR_MATRIX_BIT_NV',
+--     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.Extensions.VK_KHR_synchronization2.ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Extensions.VK_KHR_synchronization2.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.Extensions.VK_KHR_synchronization2.ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Extensions.VK_KHR_synchronization2.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',
+--     and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayQuery rayQuery>
+--     feature is enabled, @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR',
+--     one of the @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages,
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #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_COPY_BIT_KHR',
+--     '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 @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR',
+--     and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayQuery rayQuery>
+--     feature is not enabled, @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkMemoryBarrier2-dstAccessMask-07272# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHR',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR'
+--
+-- -   #VUID-VkMemoryBarrier2-dstAccessMask-04858# If @dstAccessMask@
+--     includes
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkAccessFlagBits2KHR VK_ACCESS_2_VIDEO_DECODE_READ_BIT_KHR>,
+--     @dstStageMask@ /must/ include
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR>
+--
+-- -   #VUID-VkMemoryBarrier2-dstAccessMask-04859# If @dstAccessMask@
+--     includes
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkAccessFlagBits2KHR VK_ACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR>,
+--     @dstStageMask@ /must/ include
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR>
+--
+-- -   #VUID-VkMemoryBarrier2-dstAccessMask-04860# If @dstAccessMask@
+--     includes
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkAccessFlagBits2KHR VK_ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR>,
+--     @dstStageMask@ /must/ include
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR>
+--
+-- -   #VUID-VkMemoryBarrier2-dstAccessMask-04861# If @dstAccessMask@
+--     includes
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkAccessFlagBits2KHR VK_ACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR>,
+--     @dstStageMask@ /must/ include
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR>
+--
+-- -   #VUID-VkMemoryBarrier2-dstAccessMask-07455# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_OPTICAL_FLOW_READ_BIT_NV',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV'
+--
+-- -   #VUID-VkMemoryBarrier2-dstAccessMask-07456# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_OPTICAL_FLOW_WRITE_BIT_NV',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV'
+--
+-- -   #VUID-VkMemoryBarrier2-dstAccessMask-07457# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_MICROMAP_WRITE_BIT_EXT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT'
+--
+-- -   #VUID-VkMemoryBarrier2-dstAccessMask-07458# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_MICROMAP_READ_BIT_EXT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT'
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
+--
+-- -   #VUID-VkMemoryBarrier2-dstAccessMask-08118# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_DESCRIPTOR_BUFFER_READ_BIT_EXT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT',
+--     or one of @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
+--
+-- -   #VUID-VkMemoryBarrier2-dstAccessMask-10670# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_TILE_ATTACHMENT_READ_BIT_QCOM',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT'
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COMPUTE_SHADER_BIT'
+--
+-- -   #VUID-VkMemoryBarrier2-dstAccessMask-10671# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_TILE_ATTACHMENT_WRITE_BIT_QCOM',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT'
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COMPUTE_SHADER_BIT'
+--
+-- -   #VUID-VkMemoryBarrier2-dstAccessMask-11771# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_MEMORY_DECOMPRESSION_READ_BIT_EXT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MEMORY_DECOMPRESSION_BIT_EXT'
+--
+-- -   #VUID-VkMemoryBarrier2-dstAccessMask-11772# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_MEMORY_DECOMPRESSION_WRITE_BIT_EXT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MEMORY_DECOMPRESSION_BIT_EXT'
+--
+-- -   #VUID-VkMemoryBarrier2-dstAccessMask-11294# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SAMPLER_HEAP_READ_BIT_EXT'
+--     or
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_RESOURCE_HEAP_READ_BIT_EXT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT',
+--     or one of @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkMemoryBarrier2-sType-sType# @sType@ /must/ be
+--     '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
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.SubpassDependency2'
+--
+-- = 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://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-memory memory dependency>
+-- limited to an image subresource range, and /can/ define a
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer operation>
+-- and
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-image-layout-transitions image layout transition>
+-- for that subresource range.
+--
+-- The first
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+-- and
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
+-- described by this structure include only operations and memory accesses
+-- specified by the source stage mask and the source access mask.
+--
+-- The second
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+-- and
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
+-- described by this structure include only operations and memory accesses
+-- specified by the destination stage mask and the destination access mask.
+--
+-- Both
+-- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer operation>.
+-- When executed on a queue in the family identified by
+-- @srcQueueFamilyIndex@, this barrier defines a
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-queue-transfers-release queue family release operation>
+-- for the specified image subresource range, and if
+-- 'Vulkan.Extensions.VK_KHR_synchronization2.DependencyInfoKHR'::@dependencyFlags@
+-- did not include
+-- 'Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_QUEUE_FAMILY_OWNERSHIP_TRANSFER_USE_ALL_STAGES_BIT_KHR',
+-- the second synchronization scope does not apply to this operation. When
+-- executed on a queue in the family identified by @dstQueueFamilyIndex@,
+-- this barrier defines a
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-queue-transfers-acquire queue family acquire operation>
+-- for the specified image subresource range, and if
+-- 'Vulkan.Extensions.VK_KHR_synchronization2.DependencyInfoKHR'::@dependencyFlags@
+-- did not include
+-- 'Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_QUEUE_FAMILY_OWNERSHIP_TRANSFER_USE_ALL_STAGES_BIT_KHR',
+-- the first synchronization scope does not apply to this operation.
+--
+-- A
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-queue-transfers queue family ownership 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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-queue-transfers>.
+-- A
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-queue-transfers-release queue family release operation>
+-- is defined when @dstQueueFamilyIndex@ is one of those values, and a
+-- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-image-layout-transitions image layout transition>
+-- for the specified image subresource range. If this memory barrier
+-- defines a
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer operation>,
+-- the layout transition is only executed once between the queues.
+--
+-- If @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ are equal and
+-- @oldLayout@ and @newLayout@ are also equal, the layout values are
+-- ignored and the image contents are preserved regardless of the values of
+-- @oldLayout@, @newLayout@, and the current layout of the image.
+--
+-- If @image@ is a 3D image created with
+-- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT'
+-- and the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance9 maintenance9>
+-- feature is enabled, the @baseArrayLayer@ and @layerCount@ members of
+-- @subresourceRange@ specify the subset of slices of the 3D image affected
+-- by the memory barrier, including the layout transition. Any slices of a
+-- 3D image not included in @subresourceRange@ are not affected by the
+-- memory barrier and remain in their existing layout.
+--
+-- Enabling the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance9 maintenance9>
+-- feature modifies the behavior of image barriers targeting 3D images
+-- created with
+-- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT'.
+-- Previously, a @layerCount@ equal to 1 would cover the entire 3D image,
+-- but this has a different meaning when the @maintenance9@ feature is
+-- enabled. Linking this behavioral change solely to the @maintenance9@
+-- feature caused an unintended break in forward-compatibility. Validation
+-- layers are expected to flag a warning for the scenario where the
+-- @maintenance9@ feature is not enabled, and the application uses
+-- @layerCount@ equal to 1 on this kind of 3D image. @layerCount@ can be
+-- set to 'Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS' instead,
+-- which has the same semantics with or without the extension. This
+-- validation check should make it feasible for software to avoid any
+-- breaking changes should the @maintenance9@ feature be enabled in the
+-- future, either explicitly by application or by a layer outside the
+-- control of the application.
+--
+-- If @image@ has a
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-multiplanar 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 geometryShader>
+--     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 tessellationShader>
+--     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 conditionalRendering>
+--     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 fragmentDensityMap>
+--     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 transformFeedback>
+--     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 meshShader>
+--     feature is not enabled, @srcStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcStageMask-03935# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
+--     feature is not enabled, @srcStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcStageMask-07316# If neither of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     or the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate>
+--     features are enabled, @srcStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcStageMask-04957# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-subpassShading subpassShading>
+--     feature is not enabled, @srcStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI'
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcStageMask-04995# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-invocationMask invocationMask>
+--     feature is not enabled, @srcStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI'
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcStageMask-07946# If neither the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>
+--     extension or the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayTracingPipeline rayTracingPipeline>
+--     feature are enabled, @srcStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR'
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcStageMask-10751# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-accelerationStructure accelerationStructure>
+--     feature is not enabled, @srcStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcStageMask-10752# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayTracingMaintenance1 rayTracingMaintenance1>
+--     feature is not enabled, @srcStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR'
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcStageMask-11541# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-micromapEXT ::micromap>
+--     feature is not enabled, @srcStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT'
+--
+-- -   #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_COPY_INDIRECT_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_SHADER_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-07454# 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',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT',
+--     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',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CONVERT_COOPERATIVE_VECTOR_MATRIX_BIT_NV',
+--     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',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CONVERT_COOPERATIVE_VECTOR_MATRIX_BIT_NV',
+--     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.Extensions.VK_KHR_synchronization2.ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Extensions.VK_KHR_synchronization2.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.Extensions.VK_KHR_synchronization2.ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Extensions.VK_KHR_synchronization2.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',
+--     and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayQuery rayQuery>
+--     feature is enabled, @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR',
+--     one of the @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages,
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #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_COPY_BIT_KHR',
+--     '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 @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR',
+--     and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayQuery rayQuery>
+--     feature is not enabled, @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcAccessMask-07272# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHR',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR'
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcAccessMask-04858# If @srcAccessMask@
+--     includes
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkAccessFlagBits2KHR VK_ACCESS_2_VIDEO_DECODE_READ_BIT_KHR>,
+--     @srcStageMask@ /must/ include
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR>
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcAccessMask-04859# If @srcAccessMask@
+--     includes
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkAccessFlagBits2KHR VK_ACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR>,
+--     @srcStageMask@ /must/ include
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR>
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcAccessMask-04860# If @srcAccessMask@
+--     includes
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkAccessFlagBits2KHR VK_ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR>,
+--     @srcStageMask@ /must/ include
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR>
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcAccessMask-04861# If @srcAccessMask@
+--     includes
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkAccessFlagBits2KHR VK_ACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR>,
+--     @srcStageMask@ /must/ include
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR>
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcAccessMask-07455# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_OPTICAL_FLOW_READ_BIT_NV',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV'
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcAccessMask-07456# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_OPTICAL_FLOW_WRITE_BIT_NV',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV'
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcAccessMask-07457# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_MICROMAP_WRITE_BIT_EXT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcAccessMask-07458# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_MICROMAP_READ_BIT_EXT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT'
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcAccessMask-08118# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_DESCRIPTOR_BUFFER_READ_BIT_EXT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT',
+--     or one of @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcAccessMask-10670# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_TILE_ATTACHMENT_READ_BIT_QCOM',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT'
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COMPUTE_SHADER_BIT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcAccessMask-10671# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_TILE_ATTACHMENT_WRITE_BIT_QCOM',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT'
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COMPUTE_SHADER_BIT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcAccessMask-11771# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_MEMORY_DECOMPRESSION_READ_BIT_EXT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MEMORY_DECOMPRESSION_BIT_EXT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcAccessMask-11772# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_MEMORY_DECOMPRESSION_WRITE_BIT_EXT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MEMORY_DECOMPRESSION_BIT_EXT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcAccessMask-11294# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SAMPLER_HEAP_READ_BIT_EXT'
+--     or
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_RESOURCE_HEAP_READ_BIT_EXT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT',
+--     or one of @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
+--
+-- -   #VUID-VkImageMemoryBarrier2-dstStageMask-03929# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometryShader>
+--     feature is not enabled, @dstStageMask@ /must/ not contain
+--     '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 tessellationShader>
+--     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 conditionalRendering>
+--     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 fragmentDensityMap>
+--     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 transformFeedback>
+--     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 meshShader>
+--     feature is not enabled, @dstStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-dstStageMask-03935# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
+--     feature is not enabled, @dstStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-dstStageMask-07316# If neither of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     or the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate>
+--     features are enabled, @dstStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
+--
+-- -   #VUID-VkImageMemoryBarrier2-dstStageMask-04957# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-subpassShading subpassShading>
+--     feature is not enabled, @dstStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI'
+--
+-- -   #VUID-VkImageMemoryBarrier2-dstStageMask-04995# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-invocationMask invocationMask>
+--     feature is not enabled, @dstStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI'
+--
+-- -   #VUID-VkImageMemoryBarrier2-dstStageMask-07946# If neither the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>
+--     extension or the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayTracingPipeline rayTracingPipeline>
+--     feature are enabled, @dstStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR'
+--
+-- -   #VUID-VkImageMemoryBarrier2-dstStageMask-10751# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-accelerationStructure accelerationStructure>
+--     feature is not enabled, @dstStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
+--
+-- -   #VUID-VkImageMemoryBarrier2-dstStageMask-10752# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayTracingMaintenance1 rayTracingMaintenance1>
+--     feature is not enabled, @dstStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR'
+--
+-- -   #VUID-VkImageMemoryBarrier2-dstStageMask-11541# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-micromapEXT ::micromap>
+--     feature is not enabled, @dstStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT'
+--
+-- -   #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_COPY_INDIRECT_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_SHADER_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-07454# 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',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT',
+--     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',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CONVERT_COOPERATIVE_VECTOR_MATRIX_BIT_NV',
+--     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',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CONVERT_COOPERATIVE_VECTOR_MATRIX_BIT_NV',
+--     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.Extensions.VK_KHR_synchronization2.ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Extensions.VK_KHR_synchronization2.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.Extensions.VK_KHR_synchronization2.ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Extensions.VK_KHR_synchronization2.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',
+--     and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayQuery rayQuery>
+--     feature is enabled, @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR',
+--     one of the @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages,
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #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_COPY_BIT_KHR',
+--     '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 @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR',
+--     and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayQuery rayQuery>
+--     feature is not enabled, @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-dstAccessMask-07272# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHR',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR'
+--
+-- -   #VUID-VkImageMemoryBarrier2-dstAccessMask-04858# If @dstAccessMask@
+--     includes
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkAccessFlagBits2KHR VK_ACCESS_2_VIDEO_DECODE_READ_BIT_KHR>,
+--     @dstStageMask@ /must/ include
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR>
+--
+-- -   #VUID-VkImageMemoryBarrier2-dstAccessMask-04859# If @dstAccessMask@
+--     includes
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkAccessFlagBits2KHR VK_ACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR>,
+--     @dstStageMask@ /must/ include
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR>
+--
+-- -   #VUID-VkImageMemoryBarrier2-dstAccessMask-04860# If @dstAccessMask@
+--     includes
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkAccessFlagBits2KHR VK_ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR>,
+--     @dstStageMask@ /must/ include
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR>
+--
+-- -   #VUID-VkImageMemoryBarrier2-dstAccessMask-04861# If @dstAccessMask@
+--     includes
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkAccessFlagBits2KHR VK_ACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR>,
+--     @dstStageMask@ /must/ include
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR>
+--
+-- -   #VUID-VkImageMemoryBarrier2-dstAccessMask-07455# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_OPTICAL_FLOW_READ_BIT_NV',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV'
+--
+-- -   #VUID-VkImageMemoryBarrier2-dstAccessMask-07456# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_OPTICAL_FLOW_WRITE_BIT_NV',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV'
+--
+-- -   #VUID-VkImageMemoryBarrier2-dstAccessMask-07457# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_MICROMAP_WRITE_BIT_EXT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-dstAccessMask-07458# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_MICROMAP_READ_BIT_EXT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT'
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
+--
+-- -   #VUID-VkImageMemoryBarrier2-dstAccessMask-08118# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_DESCRIPTOR_BUFFER_READ_BIT_EXT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT',
+--     or one of @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
+--
+-- -   #VUID-VkImageMemoryBarrier2-dstAccessMask-10670# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_TILE_ATTACHMENT_READ_BIT_QCOM',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT'
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COMPUTE_SHADER_BIT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-dstAccessMask-10671# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_TILE_ATTACHMENT_WRITE_BIT_QCOM',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT'
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COMPUTE_SHADER_BIT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-dstAccessMask-11771# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_MEMORY_DECOMPRESSION_READ_BIT_EXT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MEMORY_DECOMPRESSION_BIT_EXT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-dstAccessMask-11772# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_MEMORY_DECOMPRESSION_WRITE_BIT_EXT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MEMORY_DECOMPRESSION_BIT_EXT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-dstAccessMask-11294# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SAMPLER_HEAP_READ_BIT_EXT'
+--     or
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_RESOURCE_HEAP_READ_BIT_EXT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT',
+--     or one of @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
+--
+-- -   #VUID-VkImageMemoryBarrier2-oldLayout-01197# If
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-image-barrier2-ignored-layout layouts are not ignored>,
+--     @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
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-image-barrier2-ignored-layout layouts are not ignored>,
+--     @newLayout@ /must/ not be
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_UNDEFINED' or
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ZERO_INITIALIZED_EXT'
+--     or 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_PREINITIALIZED'
+--
+-- -   #VUID-VkImageMemoryBarrier2-image-09117# If @image@ was created with
+--     a sharing mode of
+--     'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_EXCLUSIVE', and
+--     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ are not equal,
+--     @srcQueueFamilyIndex@ /must/ be
+--     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_EXTERNAL',
+--     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_FOREIGN_EXT', or a valid
+--     queue family
+--
+-- -   #VUID-VkImageMemoryBarrier2-image-09118# If @image@ was created with
+--     a sharing mode of
+--     'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_EXCLUSIVE', and
+--     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ are not equal,
+--     @dstQueueFamilyIndex@ /must/ be
+--     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_EXTERNAL',
+--     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_FOREIGN_EXT', or a valid
+--     queue family
+--
+-- -   #VUID-VkImageMemoryBarrier2-None-09097# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_memory VK_KHR_external_memory>
+--     extension is not enabled, and the value of
+--     'Vulkan.Core10.DeviceInitialization.ApplicationInfo'::@apiVersion@
+--     used to create the 'Vulkan.Core10.Handles.Instance' is not greater
+--     than or equal to Version 1.1, @srcQueueFamilyIndex@ /must/ not be
+--     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_EXTERNAL'
+--
+-- -   #VUID-VkImageMemoryBarrier2-None-09098# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_memory VK_KHR_external_memory>
+--     extension is not enabled, and the value of
+--     'Vulkan.Core10.DeviceInitialization.ApplicationInfo'::@apiVersion@
+--     used to create the 'Vulkan.Core10.Handles.Instance' is not greater
+--     than or equal to Version 1.1, @dstQueueFamilyIndex@ /must/ not be
+--     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_EXTERNAL'
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcQueueFamilyIndex-09099# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_queue_family_foreign VK_EXT_queue_family_foreign>
+--     extension is not enabled @srcQueueFamilyIndex@ /must/ not be
+--     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_FOREIGN_EXT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-dstQueueFamilyIndex-09100# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_queue_family_foreign VK_EXT_queue_family_foreign>
+--     extension is not enabled @dstQueueFamilyIndex@ /must/ not be
+--     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_FOREIGN_EXT'
+--
+-- -   #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# If @image@ is
+--     not a 3D image or was created without
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT'
+--     set, or the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance9 maintenance9>
+--     feature is not enabled, @subresourceRange.baseArrayLayer@ /must/ be
+--     less than the @arrayLayers@ specified in
+--     'Vulkan.Core10.Image.ImageCreateInfo' when @image@ was created
+--
+-- -   #VUID-VkImageMemoryBarrier2-maintenance9-10798# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance9 maintenance9>
+--     feature is enabled and @image@ is a 3D image created with
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT'
+--     set, @subresourceRange.baseArrayLayer@ /must/ be less than the depth
+--     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-mip-level-sizing Image Mip Level Sizing>
+--
+-- -   #VUID-VkImageMemoryBarrier2-maintenance9-10799# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance9 maintenance9>
+--     feature is enabled and @image@ is a 3D image created with
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT'
+--     set and either @subresourceRange.baseArrayLayer@ is not equal to 0
+--     or @subresourceRange.layerCount@ is not equal to
+--     'Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS',
+--     @subresourceRange.levelCount@ /must/ be 1
+--
+-- -   #VUID-VkImageMemoryBarrier2-subresourceRange-01725# If @image@ is
+--     not a 3D image or was created without
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT'
+--     set, or the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance9 maintenance9>
+--     feature is not enabled, and @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-maintenance9-10800# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance9 maintenance9>
+--     feature is enabled, @subresourceRange.layerCount@ is not
+--     'Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS', and @image@ is
+--     a 3D image created with
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT'
+--     set, @subresourceRange.baseArrayLayer@ +
+--     @subresourceRange.layerCount@ /must/ be less than or equal to the
+--     depth 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-mip-level-sizing Image Mip Level Sizing>
+--
+-- -   #VUID-VkImageMemoryBarrier2-image-01932# If @image@ is non-sparse
+--     then the image or each specified /disjoint/ plane /must/ be bound
+--     completely and contiguously to a single
+--     'Vulkan.Core10.Handles.DeviceMemory' object
+--
+-- -   #VUID-VkImageMemoryBarrier2-image-09241# If @image@ has a color
+--     format that is single-plane, then the @aspectMask@ member of
+--     @subresourceRange@ /must/ be
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-image-09242# If @image@ has a color
+--     format and 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
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-multiplanar multi-planar format>
+--     and the image is /disjoint/, then the @aspectMask@ member of
+--     @subresourceRange@ /must/ include at least one
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-multiplanar-image-aspect multi-planar aspect mask>
+--     bit or
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_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-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-10749# If @image@ has a depth-only
+--     format then the @aspectMask@ member of @subresourceRange@ /must/ be
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-image-10750# If @image@ has a
+--     stencil-only format then the @aspectMask@ member of
+--     @subresourceRange@ /must/ be
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-aspectMask-08702# If the @aspectMask@
+--     member of @subresourceRange@ includes
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT',
+--     @oldLayout@ and @newLayout@ /must/ not be one of
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL'
+--     or
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL'
+--
+-- -   #VUID-VkImageMemoryBarrier2-aspectMask-08703# If the @aspectMask@
+--     member of @subresourceRange@ includes
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT',
+--     @oldLayout@ and @newLayout@ /must/ not be one of
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL'
+--     or
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL'
+--
+-- -   #VUID-VkImageMemoryBarrier2-subresourceRange-09601#
+--     @subresourceRange.aspectMask@ /must/ be valid for the @format@ the
+--     @image@ was created with
+--
+-- -   #VUID-VkImageMemoryBarrier2-oldLayout-01208# If
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-image-barrier2-ignored-layout layouts are not ignored>,
+--     @oldLayout@ or @newLayout@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL'
+--     then @image@ /must/ have been created with the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT'
+--     usage flag set
+--
+-- -   #VUID-VkImageMemoryBarrier2-oldLayout-01209# If
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-image-barrier2-ignored-layout layouts are not ignored>,
+--     @oldLayout@ or @newLayout@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL'
+--     then @image@ /must/ have been created with the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'
+--     usage flag set
+--
+-- -   #VUID-VkImageMemoryBarrier2-oldLayout-01210# If
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-image-barrier2-ignored-layout layouts are not ignored>,
+--     @oldLayout@ or @newLayout@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL'
+--     then @image@ /must/ have been created with the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'
+--     usage flag set
+--
+-- -   #VUID-VkImageMemoryBarrier2-oldLayout-01211# If
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-image-barrier2-ignored-layout layouts are not ignored>,
+--     @oldLayout@ or @newLayout@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL'
+--     then @image@ /must/ have been created with the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT' or
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT'
+--     usage flag set
+--
+-- -   #VUID-VkImageMemoryBarrier2-oldLayout-01212# If
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-image-barrier2-ignored-layout layouts are not ignored>,
+--     @oldLayout@ or @newLayout@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL'
+--     then @image@ /must/ have been created with the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_SRC_BIT'
+--     usage flag set
+--
+-- -   #VUID-VkImageMemoryBarrier2-oldLayout-01213# If
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-image-barrier2-ignored-layout layouts are not ignored>,
+--     @oldLayout@ or @newLayout@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL'
+--     then @image@ /must/ have been created with the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'
+--     usage flag set
+--
+-- -   #VUID-VkImageMemoryBarrier2-oldLayout-10767# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-zeroInitializeDeviceMemory zeroInitializeDeviceMemory>
+--     feature is not enabled, @oldLayout@ /must/ not be
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ZERO_INITIALIZED_EXT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-oldLayout-10768# If @oldLayout@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ZERO_INITIALIZED_EXT',
+--     then all subresources /must/ be included in the barrier
+--
+-- -   #VUID-VkImageMemoryBarrier2-oldLayout-01658# If
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-image-barrier2-ignored-layout layouts are not ignored>,
+--     @oldLayout@ or @newLayout@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL'
+--     then @image@ /must/ have been created with the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'
+--     usage flag set
+--
+-- -   #VUID-VkImageMemoryBarrier2-oldLayout-01659# If
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-image-barrier2-ignored-layout layouts are not ignored>,
+--     @oldLayout@ or @newLayout@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL'
+--     then @image@ /must/ have been created with the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'
+--     usage flag set
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcQueueFamilyIndex-04065# If
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-image-barrier2-ignored-layout layouts are not ignored>,
+--     @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 the
+--     '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'
+--     usage flags set
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcQueueFamilyIndex-04066# If
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-image-barrier2-ignored-layout layouts are not ignored>,
+--     @oldLayout@ or @newLayout@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL'
+--     then @image@ /must/ have been created with the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'
+--     usage flag set
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcQueueFamilyIndex-04067# If
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-image-barrier2-ignored-layout layouts are not ignored>,
+--     @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 the
+--     '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'
+--     usage flags set
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcQueueFamilyIndex-04068# If
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-image-barrier2-ignored-layout layouts are not ignored>,
+--     @oldLayout@ or @newLayout@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL'
+--     then @image@ /must/ have been created with the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'
+--     usage flag set
+--
+-- -   #VUID-VkImageMemoryBarrier2-synchronization2-07793# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2 synchronization2>
+--     feature is not enabled, @oldLayout@ /must/ not be
+--     'Vulkan.Extensions.VK_KHR_synchronization2.IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR'
+--     or
+--     'Vulkan.Extensions.VK_KHR_synchronization2.IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR'
+--
+-- -   #VUID-VkImageMemoryBarrier2-synchronization2-07794# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2 synchronization2>
+--     feature is not enabled, @newLayout@ /must/ not be
+--     'Vulkan.Extensions.VK_KHR_synchronization2.IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR'
+--     or
+--     'Vulkan.Extensions.VK_KHR_synchronization2.IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR'
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcQueueFamilyIndex-03938# If
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-image-barrier2-ignored-layout layouts are not ignored>,
+--     @oldLayout@ or @newLayout@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_OPTIMAL',
+--     @image@ /must/ have been created with the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT'
+--     or
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'
+--     usage flag set
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcQueueFamilyIndex-03939# If
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-image-barrier2-ignored-layout layouts are not ignored>,
+--     @oldLayout@ or @newLayout@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_READ_ONLY_OPTIMAL',
+--     @image@ /must/ have been created with at least one of the
+--     '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'
+--     usage flags set
+--
+-- -   #VUID-VkImageMemoryBarrier2-oldLayout-02088# If
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-image-barrier2-ignored-layout layouts are not ignored>,
+--     @oldLayout@ or @newLayout@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR'
+--     then @image@ /must/ have been created with the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
+--     usage flag set
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcQueueFamilyIndex-07120# If
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-image-barrier2-ignored-layout layouts are not ignored>,
+--     @oldLayout@ or @newLayout@ is
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageLayout VK_IMAGE_LAYOUT_VIDEO_DECODE_SRC_KHR>
+--     then @image@ /must/ have been created with the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR>
+--     usage flag set
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcQueueFamilyIndex-07121# If
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-image-barrier2-ignored-layout layouts are not ignored>,
+--     @oldLayout@ or @newLayout@ is
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageLayout VK_IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR>
+--     then @image@ /must/ have been created with the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR>
+--     usage flag set
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcQueueFamilyIndex-07122# If
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-image-barrier2-ignored-layout layouts are not ignored>,
+--     @oldLayout@ or @newLayout@ is
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageLayout VK_IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR>
+--     then @image@ /must/ have been created with the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR>
+--     usage flag set
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcQueueFamilyIndex-07123# If
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-image-barrier2-ignored-layout layouts are not ignored>,
+--     @oldLayout@ or @newLayout@ is
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageLayout VK_IMAGE_LAYOUT_VIDEO_ENCODE_SRC_KHR>
+--     then @image@ /must/ have been created with the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR>
+--     usage flag set
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcQueueFamilyIndex-07124# If
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-image-barrier2-ignored-layout layouts are not ignored>,
+--     @oldLayout@ or @newLayout@ is
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageLayout VK_IMAGE_LAYOUT_VIDEO_ENCODE_DST_KHR>
+--     then @image@ /must/ have been created with the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR>
+--     usage flag set
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcQueueFamilyIndex-07125# If
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-image-barrier2-ignored-layout layouts are not ignored>,
+--     @oldLayout@ or @newLayout@ is
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageLayout VK_IMAGE_LAYOUT_VIDEO_ENCODE_DPB_KHR>
+--     then @image@ /must/ have been created with the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR>
+--     usage flag set
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcQueueFamilyIndex-10287# If
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-image-barrier2-ignored-layout layouts are not ignored>,
+--     @oldLayout@ or @newLayout@ is
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageLayout VK_IMAGE_LAYOUT_VIDEO_ENCODE_QUANTIZATION_MAP_KHR>
+--     then @image@ /must/ have been created with the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR>
+--     usage flags set
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcQueueFamilyIndex-07006# If
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-image-barrier2-ignored-layout layouts are not ignored>,
+--     @oldLayout@ or @newLayout@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
+--     then @image@ /must/ have been created with either the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT'
+--     or
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'
+--     usage flags set, and the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT'
+--     or 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT'
+--     usage flags set, and the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT'
+--     usage flag set
+--
+-- -   #VUID-VkImageMemoryBarrier2-attachmentFeedbackLoopLayout-07313# If
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-attachmentFeedbackLoopLayout attachmentFeedbackLoopLayout>
+--     feature is not enabled, @newLayout@ /must/ not be
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcQueueFamilyIndex-09550# If
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-image-barrier2-ignored-layout layouts are not ignored>,
+--     @oldLayout@ or @newLayout@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_RENDERING_LOCAL_READ'
+--     then @image@ /must/ have been created with either the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_STORAGE_BIT'
+--     usage flag set, or with both the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT'
+--     usage flag and either of the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT'
+--     or
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'
+--     usage flags set
+--
+-- -   #VUID-VkImageMemoryBarrier2-dynamicRenderingLocalRead-09551# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingLocalRead dynamicRenderingLocalRead>
+--     feature is not enabled, @oldLayout@ /must/ not be
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_RENDERING_LOCAL_READ'
+--
+-- -   #VUID-VkImageMemoryBarrier2-dynamicRenderingLocalRead-09552# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingLocalRead dynamicRenderingLocalRead>
+--     feature is not enabled, @newLayout@ /must/ not be
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_RENDERING_LOCAL_READ'
+--
+-- -   #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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>
+--     or @oldLayout@ and @newLayout@ define an
+--     <https://registry.khronos.org/vulkan/specs/latest/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_ZERO_INITIALIZED_EXT',
+--     '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# 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_external_memory_acquire_unmodified.ExternalMemoryAcquireUnmodifiedEXT',
+--     'Vulkan.Extensions.VK_KHR_maintenance8.MemoryBarrierAccessFlags3KHR',
+--     or
+--     'Vulkan.Extensions.VK_EXT_sample_locations.SampleLocationsInfoEXT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-sType-unique# The @sType@ value of each
+--     structure in the @pNext@ chain /must/ be unique
+--
+-- -   #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://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-access-scopes second access scope>.
+    dstAccessMask :: AccessFlags2
+  , -- | @oldLayout@ is the old layout in an
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-image-layout-transitions image layout transition>.
+    oldLayout :: ImageLayout
+  , -- | @newLayout@ is the new layout in an
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-image-layout-transitions image layout transition>.
+    newLayout :: ImageLayout
+  , -- | @srcQueueFamilyIndex@ is the source queue family for a
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>.
+    srcQueueFamilyIndex :: Word32
+  , -- | @dstQueueFamilyIndex@ is the destination queue family for a
+    -- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/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 @ExternalMemoryAcquireUnmodifiedEXT = Just f
+    | Just Refl <- eqT @e @MemoryBarrierAccessFlags3KHR = Just 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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-memory memory dependency>
+-- limited to a range of a buffer, and /can/ define a
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer operation>
+-- for that range.
+--
+-- The first
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+-- and
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
+-- described by this structure include only operations and memory accesses
+-- specified by the source stage mask and the source access mask.
+--
+-- The second
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+-- and
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
+-- described by this structure include only operations and memory accesses
+-- specified by the destination stage mask and the destination access mask.
+--
+-- Both
+-- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer operation>.
+-- When executed on a queue in the family identified by
+-- @srcQueueFamilyIndex@, this barrier defines a
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-queue-transfers-release queue family release operation>
+-- for the specified buffer range, and if
+-- 'Vulkan.Extensions.VK_KHR_synchronization2.DependencyInfoKHR'::@dependencyFlags@
+-- did not include
+-- 'Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_QUEUE_FAMILY_OWNERSHIP_TRANSFER_USE_ALL_STAGES_BIT_KHR',
+-- the second synchronization scope does not apply to this operation. When
+-- executed on a queue in the family identified by @dstQueueFamilyIndex@,
+-- this barrier defines a
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-queue-transfers-acquire queue family acquire operation>
+-- for the specified buffer range, and if
+-- 'Vulkan.Extensions.VK_KHR_synchronization2.DependencyInfoKHR'::@dependencyFlags@
+-- did not include
+-- 'Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_QUEUE_FAMILY_OWNERSHIP_TRANSFER_USE_ALL_STAGES_BIT_KHR',
+-- the first synchronization scope does not apply to this operation.
+--
+-- A
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-queue-transfers queue family ownership 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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-queue-transfers>.
+-- A
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-queue-transfers-release queue family release operation>
+-- is defined when @dstQueueFamilyIndex@ is one of those values, and a
+-- <https://registry.khronos.org/vulkan/specs/latest/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 geometryShader>
+--     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 tessellationShader>
+--     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 conditionalRendering>
+--     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 fragmentDensityMap>
+--     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 transformFeedback>
+--     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 meshShader>
+--     feature is not enabled, @srcStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-srcStageMask-03935# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
+--     feature is not enabled, @srcStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-srcStageMask-07316# If neither of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     or the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate>
+--     features are enabled, @srcStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-srcStageMask-04957# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-subpassShading subpassShading>
+--     feature is not enabled, @srcStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-srcStageMask-04995# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-invocationMask invocationMask>
+--     feature is not enabled, @srcStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-srcStageMask-07946# If neither the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>
+--     extension or the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayTracingPipeline rayTracingPipeline>
+--     feature are enabled, @srcStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-srcStageMask-10751# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-accelerationStructure accelerationStructure>
+--     feature is not enabled, @srcStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-srcStageMask-10752# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayTracingMaintenance1 rayTracingMaintenance1>
+--     feature is not enabled, @srcStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-srcStageMask-11541# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-micromapEXT ::micromap>
+--     feature is not enabled, @srcStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT'
+--
+-- -   #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_COPY_INDIRECT_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_SHADER_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-07454# 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',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT',
+--     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',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CONVERT_COOPERATIVE_VECTOR_MATRIX_BIT_NV',
+--     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',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CONVERT_COOPERATIVE_VECTOR_MATRIX_BIT_NV',
+--     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.Extensions.VK_KHR_synchronization2.ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Extensions.VK_KHR_synchronization2.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.Extensions.VK_KHR_synchronization2.ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Extensions.VK_KHR_synchronization2.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',
+--     and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayQuery rayQuery>
+--     feature is enabled, @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR',
+--     one of the @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages,
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #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_COPY_BIT_KHR',
+--     '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 @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR',
+--     and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayQuery rayQuery>
+--     feature is not enabled, @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-srcAccessMask-07272# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHR',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-srcAccessMask-04858# If @srcAccessMask@
+--     includes
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkAccessFlagBits2KHR VK_ACCESS_2_VIDEO_DECODE_READ_BIT_KHR>,
+--     @srcStageMask@ /must/ include
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR>
+--
+-- -   #VUID-VkBufferMemoryBarrier2-srcAccessMask-04859# If @srcAccessMask@
+--     includes
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkAccessFlagBits2KHR VK_ACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR>,
+--     @srcStageMask@ /must/ include
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR>
+--
+-- -   #VUID-VkBufferMemoryBarrier2-srcAccessMask-04860# If @srcAccessMask@
+--     includes
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkAccessFlagBits2KHR VK_ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR>,
+--     @srcStageMask@ /must/ include
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR>
+--
+-- -   #VUID-VkBufferMemoryBarrier2-srcAccessMask-04861# If @srcAccessMask@
+--     includes
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkAccessFlagBits2KHR VK_ACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR>,
+--     @srcStageMask@ /must/ include
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR>
+--
+-- -   #VUID-VkBufferMemoryBarrier2-srcAccessMask-07455# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_OPTICAL_FLOW_READ_BIT_NV',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-srcAccessMask-07456# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_OPTICAL_FLOW_WRITE_BIT_NV',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-srcAccessMask-07457# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_MICROMAP_WRITE_BIT_EXT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-srcAccessMask-07458# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_MICROMAP_READ_BIT_EXT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT'
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-srcAccessMask-08118# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_DESCRIPTOR_BUFFER_READ_BIT_EXT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT',
+--     or one of @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
+--
+-- -   #VUID-VkBufferMemoryBarrier2-srcAccessMask-10670# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_TILE_ATTACHMENT_READ_BIT_QCOM',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT'
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COMPUTE_SHADER_BIT'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-srcAccessMask-10671# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_TILE_ATTACHMENT_WRITE_BIT_QCOM',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT'
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COMPUTE_SHADER_BIT'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-srcAccessMask-11771# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_MEMORY_DECOMPRESSION_READ_BIT_EXT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MEMORY_DECOMPRESSION_BIT_EXT'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-srcAccessMask-11772# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_MEMORY_DECOMPRESSION_WRITE_BIT_EXT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MEMORY_DECOMPRESSION_BIT_EXT'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-srcAccessMask-11294# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SAMPLER_HEAP_READ_BIT_EXT'
+--     or
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_RESOURCE_HEAP_READ_BIT_EXT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT',
+--     or one of @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
+--
+-- -   #VUID-VkBufferMemoryBarrier2-dstStageMask-03929# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometryShader>
+--     feature is not enabled, @dstStageMask@ /must/ not contain
+--     '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 tessellationShader>
+--     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 conditionalRendering>
+--     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 fragmentDensityMap>
+--     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 transformFeedback>
+--     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 meshShader>
+--     feature is not enabled, @dstStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-dstStageMask-03935# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
+--     feature is not enabled, @dstStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-dstStageMask-07316# If neither of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     or the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate>
+--     features are enabled, @dstStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-dstStageMask-04957# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-subpassShading subpassShading>
+--     feature is not enabled, @dstStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-dstStageMask-04995# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-invocationMask invocationMask>
+--     feature is not enabled, @dstStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-dstStageMask-07946# If neither the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>
+--     extension or the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayTracingPipeline rayTracingPipeline>
+--     feature are enabled, @dstStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-dstStageMask-10751# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-accelerationStructure accelerationStructure>
+--     feature is not enabled, @dstStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-dstStageMask-10752# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayTracingMaintenance1 rayTracingMaintenance1>
+--     feature is not enabled, @dstStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-dstStageMask-11541# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-micromapEXT ::micromap>
+--     feature is not enabled, @dstStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT'
+--
+-- -   #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_COPY_INDIRECT_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_SHADER_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-07454# 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',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT',
+--     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',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CONVERT_COOPERATIVE_VECTOR_MATRIX_BIT_NV',
+--     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',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CONVERT_COOPERATIVE_VECTOR_MATRIX_BIT_NV',
+--     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.Extensions.VK_KHR_synchronization2.ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Extensions.VK_KHR_synchronization2.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.Extensions.VK_KHR_synchronization2.ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Extensions.VK_KHR_synchronization2.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',
+--     and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayQuery rayQuery>
+--     feature is enabled, @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR',
+--     one of the @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages,
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #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_COPY_BIT_KHR',
+--     '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 @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR',
+--     and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayQuery rayQuery>
+--     feature is not enabled, @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-dstAccessMask-07272# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHR',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-dstAccessMask-04858# If @dstAccessMask@
+--     includes
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkAccessFlagBits2KHR VK_ACCESS_2_VIDEO_DECODE_READ_BIT_KHR>,
+--     @dstStageMask@ /must/ include
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR>
+--
+-- -   #VUID-VkBufferMemoryBarrier2-dstAccessMask-04859# If @dstAccessMask@
+--     includes
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkAccessFlagBits2KHR VK_ACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR>,
+--     @dstStageMask@ /must/ include
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR>
+--
+-- -   #VUID-VkBufferMemoryBarrier2-dstAccessMask-04860# If @dstAccessMask@
+--     includes
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkAccessFlagBits2KHR VK_ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR>,
+--     @dstStageMask@ /must/ include
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR>
+--
+-- -   #VUID-VkBufferMemoryBarrier2-dstAccessMask-04861# If @dstAccessMask@
+--     includes
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkAccessFlagBits2KHR VK_ACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR>,
+--     @dstStageMask@ /must/ include
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR>
+--
+-- -   #VUID-VkBufferMemoryBarrier2-dstAccessMask-07455# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_OPTICAL_FLOW_READ_BIT_NV',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-dstAccessMask-07456# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_OPTICAL_FLOW_WRITE_BIT_NV',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-dstAccessMask-07457# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_MICROMAP_WRITE_BIT_EXT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-dstAccessMask-07458# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_MICROMAP_READ_BIT_EXT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT'
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-dstAccessMask-08118# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_DESCRIPTOR_BUFFER_READ_BIT_EXT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT',
+--     or one of @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
+--
+-- -   #VUID-VkBufferMemoryBarrier2-dstAccessMask-10670# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_TILE_ATTACHMENT_READ_BIT_QCOM',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT'
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COMPUTE_SHADER_BIT'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-dstAccessMask-10671# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_TILE_ATTACHMENT_WRITE_BIT_QCOM',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT'
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COMPUTE_SHADER_BIT'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-dstAccessMask-11771# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_MEMORY_DECOMPRESSION_READ_BIT_EXT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MEMORY_DECOMPRESSION_BIT_EXT'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-dstAccessMask-11772# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_MEMORY_DECOMPRESSION_WRITE_BIT_EXT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MEMORY_DECOMPRESSION_BIT_EXT'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-dstAccessMask-11294# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SAMPLER_HEAP_READ_BIT_EXT'
+--     or
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_RESOURCE_HEAP_READ_BIT_EXT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT',
+--     or one of @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
+--
+-- -   #VUID-VkBufferMemoryBarrier2-offset-01187# @offset@ /must/ be less
+--     than the size of @buffer@
+--
+-- -   #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-buffer-09095# If @buffer@ was created
+--     with a sharing mode of
+--     'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_EXCLUSIVE', and
+--     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ are not equal,
+--     @srcQueueFamilyIndex@ /must/ be
+--     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_EXTERNAL',
+--     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_FOREIGN_EXT', or a valid
+--     queue family
+--
+-- -   #VUID-VkBufferMemoryBarrier2-buffer-09096# If @buffer@ was created
+--     with a sharing mode of
+--     'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_EXCLUSIVE', and
+--     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ are not equal,
+--     @dstQueueFamilyIndex@ /must/ be
+--     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_EXTERNAL',
+--     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_FOREIGN_EXT', or a valid
+--     queue family
+--
+-- -   #VUID-VkBufferMemoryBarrier2-None-09097# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_memory VK_KHR_external_memory>
+--     extension is not enabled, and the value of
+--     'Vulkan.Core10.DeviceInitialization.ApplicationInfo'::@apiVersion@
+--     used to create the 'Vulkan.Core10.Handles.Instance' is not greater
+--     than or equal to Version 1.1, @srcQueueFamilyIndex@ /must/ not be
+--     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_EXTERNAL'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-None-09098# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_memory VK_KHR_external_memory>
+--     extension is not enabled, and the value of
+--     'Vulkan.Core10.DeviceInitialization.ApplicationInfo'::@apiVersion@
+--     used to create the 'Vulkan.Core10.Handles.Instance' is not greater
+--     than or equal to Version 1.1, @dstQueueFamilyIndex@ /must/ not be
+--     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_EXTERNAL'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-srcQueueFamilyIndex-09099# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_queue_family_foreign VK_EXT_queue_family_foreign>
+--     extension is not enabled @srcQueueFamilyIndex@ /must/ not be
+--     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_FOREIGN_EXT'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-dstQueueFamilyIndex-09100# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_queue_family_foreign VK_EXT_queue_family_foreign>
+--     extension is not enabled @dstQueueFamilyIndex@ /must/ not be
+--     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_FOREIGN_EXT'
+--
+-- -   #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# 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_external_memory_acquire_unmodified.ExternalMemoryAcquireUnmodifiedEXT'
+--     or
+--     'Vulkan.Extensions.VK_KHR_maintenance8.MemoryBarrierAccessFlags3KHR'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-sType-unique# The @sType@ value of each
+--     structure in the @pNext@ chain /must/ be unique
+--
+-- -   #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 (es :: [Type]) = BufferMemoryBarrier2
+  { -- | @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://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-access-scopes second access scope>.
+    dstAccessMask :: AccessFlags2
+  , -- | @srcQueueFamilyIndex@ is the source queue family for a
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>.
+    srcQueueFamilyIndex :: Word32
+  , -- | @dstQueueFamilyIndex@ is the destination queue family for a
+    -- <https://registry.khronos.org/vulkan/specs/latest/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)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (BufferMemoryBarrier2 (es :: [Type]))
+#endif
+deriving instance Show (Chain es) => Show (BufferMemoryBarrier2 es)
+
+instance Extensible BufferMemoryBarrier2 where
+  extensibleTypeName = "BufferMemoryBarrier2"
+  setNext BufferMemoryBarrier2{..} next' = BufferMemoryBarrier2{next = next', ..}
+  getNext BufferMemoryBarrier2{..} = next
+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends BufferMemoryBarrier2 e => b) -> Maybe b
+  extends _ f
+    | Just Refl <- eqT @e @ExternalMemoryAcquireUnmodifiedEXT = Just f
+    | Just Refl <- eqT @e @MemoryBarrierAccessFlags3KHR = Just f
+    | otherwise = Nothing
+
+instance ( Extendss BufferMemoryBarrier2 es
+         , PokeChain es ) => ToCStruct (BufferMemoryBarrier2 es) where
+  withCStruct x f = allocaBytes 80 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p BufferMemoryBarrier2{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BUFFER_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 Word32)) (srcQueueFamilyIndex)
+    lift $ poke ((p `plusPtr` 52 :: Ptr Word32)) (dstQueueFamilyIndex)
+    lift $ poke ((p `plusPtr` 56 :: Ptr Buffer)) (buffer)
+    lift $ poke ((p `plusPtr` 64 :: Ptr DeviceSize)) (offset)
+    lift $ poke ((p `plusPtr` 72 :: Ptr DeviceSize)) (size)
+    lift $ f
+  cStructSize = 80
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2)
+    pNext' <- fmap castPtr . ContT $ withZeroChain @es
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
+    lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) (zero)
+    lift $ poke ((p `plusPtr` 52 :: Ptr Word32)) (zero)
+    lift $ poke ((p `plusPtr` 56 :: Ptr Buffer)) (zero)
+    lift $ poke ((p `plusPtr` 64 :: Ptr DeviceSize)) (zero)
+    lift $ poke ((p `plusPtr` 72 :: Ptr DeviceSize)) (zero)
+    lift $ f
+
+instance ( Extendss BufferMemoryBarrier2 es
+         , PeekChain es ) => FromCStruct (BufferMemoryBarrier2 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))
+    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
+             next
+             srcStageMask
+             srcAccessMask
+             dstStageMask
+             dstAccessMask
+             srcQueueFamilyIndex
+             dstQueueFamilyIndex
+             buffer
+             offset
+             size
+
+instance es ~ '[] => Zero (BufferMemoryBarrier2 es) 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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-memory memory dependencies>,
+-- as well as
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer operations>
+-- and
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-image-layout-transitions image layout transitions>.
+--
+-- Each member of @pMemoryBarriers@, @pBufferMemoryBarriers@, and
+-- @pImageMemoryBarriers@ defines a separate
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-memory memory dependency>.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkDependencyInfo-pMemoryBarriers-10605# For each element of
+--     @pMemoryBarriers@, the @sType@ value of each structure in the
+--     @pNext@ chain /must/ be unique
+--
+-- -   #VUID-VkDependencyInfo-pMemoryBarriers-10606# For each element of
+--     @pMemoryBarriers@, @pNext@ /must/ be either @NULL@ or a pointer to a
+--     valid instance of
+--     'Vulkan.Extensions.VK_KHR_maintenance8.MemoryBarrierAccessFlags3KHR'
+--
+-- -   #VUID-VkDependencyInfo-pNext-09754# If a
+--     'Vulkan.Extensions.VK_ARM_tensors.TensorDependencyInfoARM' structure
+--     is included in the @pNext@ chain, a
+--     'Vulkan.Extensions.VK_ARM_tensors.TensorMemoryBarrierARM' structure
+--     /must/ not be included in the @pNext@ chain
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkDependencyInfo-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEPENDENCY_INFO'
+--
+-- -   #VUID-VkDependencyInfo-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_device_address_commands.MemoryRangeBarriersInfoKHR',
+--     'Vulkan.Extensions.VK_ARM_tensors.TensorDependencyInfoARM', or
+--     'Vulkan.Extensions.VK_ARM_tensors.TensorMemoryBarrierARM'
+--
+-- -   #VUID-VkDependencyInfo-sType-unique# The @sType@ value of each
+--     structure in the @pNext@ chain /must/ be unique
+--
+-- -   #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', 'cmdPipelineBarrier2', 'cmdSetEvent2',
+-- 'cmdSetEvent2', 'cmdWaitEvents2', 'cmdWaitEvents2'
+data DependencyInfo (es :: [Type]) = DependencyInfo
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
+    next :: Chain es
+  , -- | @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 (SomeStruct 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 (es :: [Type]))
+#endif
+deriving instance Show (Chain es) => Show (DependencyInfo es)
+
+instance Extensible DependencyInfo where
+  extensibleTypeName = "DependencyInfo"
+  setNext DependencyInfo{..} next' = DependencyInfo{next = next', ..}
+  getNext DependencyInfo{..} = next
+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends DependencyInfo e => b) -> Maybe b
+  extends _ f
+    | Just Refl <- eqT @e @(MemoryRangeBarriersInfoKHR '[]) = Just f
+    | Just Refl <- eqT @e @TensorDependencyInfoARM = Just f
+    | Just Refl <- eqT @e @TensorMemoryBarrierARM = Just f
+    | otherwise = Nothing
+
+instance ( Extendss DependencyInfo es
+         , PokeChain es ) => ToCStruct (DependencyInfo es) 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)
+    pNext'' <- fmap castPtr . ContT $ withChain (next)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
+    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)
+    Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (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 = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEPENDENCY_INFO)
+    pNext' <- fmap castPtr . ContT $ withZeroChain @es
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
+    lift $ f
+
+instance ( Extendss DependencyInfo es
+         , PeekChain es ) => FromCStruct (DependencyInfo es) where
+  peekCStruct p = do
+    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
+    next <- peekChain (castPtr pNext)
+    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 -> peekSomeCStruct (forgetExtensions ((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
+             next
+             dependencyFlags
+             pMemoryBarriers'
+             pBufferMemoryBarriers'
+             pImageMemoryBarriers'
+
+instance es ~ '[] => Zero (DependencyInfo es) 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. The first
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+-- of a
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operation>
+-- or the second synchronization scope of a
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-semaphores-waiting semaphore wait operation>
+-- defined by this structure are limited to operations in stages indicated
+-- by @stageMask@.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkSemaphoreSubmitInfo-stageMask-03929# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometryShader>
+--     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 tessellationShader>
+--     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 conditionalRendering>
+--     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 fragmentDensityMap>
+--     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 transformFeedback>
+--     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 meshShader>
+--     feature is not enabled, @stageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT'
+--
+-- -   #VUID-VkSemaphoreSubmitInfo-stageMask-03935# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
+--     feature is not enabled, @stageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT'
+--
+-- -   #VUID-VkSemaphoreSubmitInfo-stageMask-07316# If neither of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     or the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate>
+--     features are enabled, @stageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
+--
+-- -   #VUID-VkSemaphoreSubmitInfo-stageMask-04957# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-subpassShading subpassShading>
+--     feature is not enabled, @stageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI'
+--
+-- -   #VUID-VkSemaphoreSubmitInfo-stageMask-04995# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-invocationMask invocationMask>
+--     feature is not enabled, @stageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI'
+--
+-- -   #VUID-VkSemaphoreSubmitInfo-stageMask-07946# If neither the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>
+--     extension or the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayTracingPipeline rayTracingPipeline>
+--     feature are enabled, @stageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR'
+--
+-- -   #VUID-VkSemaphoreSubmitInfo-stageMask-10751# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-accelerationStructure accelerationStructure>
+--     feature is not enabled, @stageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
+--
+-- -   #VUID-VkSemaphoreSubmitInfo-stageMask-10752# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayTracingMaintenance1 rayTracingMaintenance1>
+--     feature is not enabled, @stageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR'
+--
+-- -   #VUID-VkSemaphoreSubmitInfo-stageMask-11541# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-micromapEXT ::micromap>
+--     feature is not enabled, @stageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT'
+--
+-- -   #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.Extensions.VK_ARM_render_pass_striped.RenderPassStripeSubmitInfoARM',
+-- '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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-semaphores-waiting semaphore wait operation>
+    -- and
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operation>
+    -- sections of
+    -- <https://registry.khronos.org/vulkan/specs/latest/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
+--
+-- -   #VUID-VkCommandBufferSubmitInfo-commandBuffer-09445# If any render
+--     pass instance in @commandBuffer@ was recorded with a
+--     'Vulkan.Extensions.VK_ARM_render_pass_striped.RenderPassStripeBeginInfoARM'
+--     structure in its pNext chain and did not specify the
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_RESUMING_BIT' flag,
+--     a
+--     'Vulkan.Extensions.VK_ARM_render_pass_striped.RenderPassStripeSubmitInfoARM'
+--     /must/ be included in the @pNext@ chain
+--
+-- -   #VUID-VkCommandBufferSubmitInfo-pNext-09446# If a
+--     'Vulkan.Extensions.VK_ARM_render_pass_striped.RenderPassStripeSubmitInfoARM'
+--     is included in the @pNext@ chain, the value of
+--     'Vulkan.Extensions.VK_ARM_render_pass_striped.RenderPassStripeSubmitInfoARM'::@stripeSemaphoreInfoCount@
+--     /must/ be equal to the sum of the
+--     'Vulkan.Extensions.VK_ARM_render_pass_striped.RenderPassStripeBeginInfoARM'::@stripeInfoCount@
+--     parameters provided to render pass instances recorded in
+--     @commandBuffer@ that did not specify the
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_RESUMING_BIT' flag
+--
+-- == 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@ or a pointer to a valid instance of
+--     'Vulkan.Extensions.VK_ARM_render_pass_striped.RenderPassStripeSubmitInfoARM'
+--
+-- -   #VUID-VkCommandBufferSubmitInfo-sType-unique# The @sType@ value of
+--     each structure in the @pNext@ chain /must/ be unique
+--
+-- -   #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 (es :: [Type]) = CommandBufferSubmitInfo
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
+    next :: Chain es
+  , -- | @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)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (CommandBufferSubmitInfo (es :: [Type]))
+#endif
+deriving instance Show (Chain es) => Show (CommandBufferSubmitInfo es)
+
+instance Extensible CommandBufferSubmitInfo where
+  extensibleTypeName = "CommandBufferSubmitInfo"
+  setNext CommandBufferSubmitInfo{..} next' = CommandBufferSubmitInfo{next = next', ..}
+  getNext CommandBufferSubmitInfo{..} = next
+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends CommandBufferSubmitInfo e => b) -> Maybe b
+  extends _ f
+    | Just Refl <- eqT @e @RenderPassStripeSubmitInfoARM = Just f
+    | otherwise = Nothing
+
+instance ( Extendss CommandBufferSubmitInfo es
+         , PokeChain es ) => ToCStruct (CommandBufferSubmitInfo es) where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p CommandBufferSubmitInfo{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO)
+    pNext'' <- fmap castPtr . ContT $ withChain (next)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
+    lift $ poke ((p `plusPtr` 16 :: Ptr (Ptr CommandBuffer_T))) (commandBuffer)
+    lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) (deviceMask)
+    lift $ f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO)
+    pNext' <- fmap castPtr . ContT $ withZeroChain @es
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
+    lift $ poke ((p `plusPtr` 16 :: Ptr (Ptr CommandBuffer_T))) (zero)
+    lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)
+    lift $ f
+
+instance ( Extendss CommandBufferSubmitInfo es
+         , PeekChain es ) => FromCStruct (CommandBufferSubmitInfo es) where
+  peekCStruct p = do
+    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
+    next <- peekChain (castPtr pNext)
+    commandBuffer <- peek @(Ptr CommandBuffer_T) ((p `plusPtr` 16 :: Ptr (Ptr CommandBuffer_T)))
+    deviceMask <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))
+    pure $ CommandBufferSubmitInfo
+             next commandBuffer deviceMask
+
+instance es ~ '[] => Zero (CommandBufferSubmitInfo es) 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://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/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-VkSubmitInfo2-commandBuffer-06192# If any @commandBuffer@
+--     member of an element of @pCommandBufferInfos@ contains any
+--     <https://registry.khronos.org/vulkan/specs/latest/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-VkSubmitInfo2-commandBuffer-06010# If any @commandBuffer@
+--     member of an element of @pCommandBufferInfos@ contains any
+--     <https://registry.khronos.org/vulkan/specs/latest/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-VkSubmitInfo2-commandBuffer-06011# If any @commandBuffer@
+--     member of an element of @pCommandBufferInfos@ contains any
+--     <https://registry.khronos.org/vulkan/specs/latest/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-VkSubmitInfo2-commandBuffer-06012# If any @commandBuffer@
+--     member of an element of @pCommandBufferInfos@ contains any
+--     <https://registry.khronos.org/vulkan/specs/latest/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-VkSubmitInfo2-variableSampleLocations-06013# If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-variableSampleLocations variableSampleLocations>
+--     limit is not supported, and any @commandBuffer@ member of an element
+--     of @pCommandBufferInfos@ contains any
+--     <https://registry.khronos.org/vulkan/specs/latest/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-VkSubmitInfo2-pNext-09682# If the @pNext@ chain of this
+--     structure includes a
+--     'Vulkan.Extensions.VK_ARM_tensors.FrameBoundaryTensorsARM' structure
+--     then it /must/ also include a
+--     'Vulkan.Extensions.VK_EXT_frame_boundary.FrameBoundaryEXT' structure
+--
+-- -   #VUID-VkSubmitInfo2-pCommandBufferInfos-09933# If at least one
+--     'CommandBufferSubmitInfo' structure in @pCommandBufferInfos@
+--     references a @commandBuffer@ allocated from a pool that was created
+--     with a
+--     'Vulkan.Extensions.VK_ARM_data_graph.DataGraphProcessingEngineCreateInfoARM'
+--     structure in the @pNext@ chain of
+--     'Vulkan.Core10.CommandPool.CommandPoolCreateInfo' that included a
+--     foreign data graph processing engine in its @pProcessingEngines@
+--     member, then @pWaitSemaphoreInfos@ and @pSignalSemaphoreInfos@
+--     /must/ only reference @semaphore@ objects that were created from
+--     external handle types reported as supported in a
+--     'Vulkan.Extensions.VK_ARM_data_graph.QueueFamilyDataGraphProcessingEnginePropertiesARM'::@foreignSemaphoreHandleTypes@
+--     structure via
+--     'Vulkan.Extensions.VK_ARM_data_graph.getPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM'
+--     with a @queueFamilyIndex@ matching the one the command pool was
+--     created for, for all the foreign data graph processing engines that
+--     were part of the
+--     'Vulkan.Extensions.VK_ARM_data_graph.DataGraphProcessingEngineCreateInfoARM'
+--     used to create the command pool
+--
+-- == 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_EXT_frame_boundary.FrameBoundaryEXT',
+--     'Vulkan.Extensions.VK_ARM_tensors.FrameBoundaryTensorsARM',
+--     'Vulkan.Extensions.VK_NV_low_latency2.LatencySubmissionPresentIdNV',
+--     '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
+--     structure 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',
+-- 'queueSubmit2'
+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://registry.khronos.org/vulkan/specs/latest/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 (SomeStruct CommandBufferSubmitInfo)
+  , -- | @pSignalSemaphoreInfos@ is a pointer to an array of
+    -- 'SemaphoreSubmitInfo' describing
+    -- <https://registry.khronos.org/vulkan/specs/latest/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 @FrameBoundaryTensorsARM = Just f
+    | Just Refl <- eqT @e @LatencySubmissionPresentIdNV = Just f
+    | Just Refl <- eqT @e @FrameBoundaryEXT = Just 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)
+    Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (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 -> peekSomeCStruct (forgetExtensions ((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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceSynchronization2Features', it /must/ add an instance of
+-- the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Core13/Promoted_From_VK_KHR_synchronization2.hs-boot b/src/Vulkan/Core13/Promoted_From_VK_KHR_synchronization2.hs-boot
--- a/src/Vulkan/Core13/Promoted_From_VK_KHR_synchronization2.hs-boot
+++ b/src/Vulkan/Core13/Promoted_From_VK_KHR_synchronization2.hs-boot
@@ -39,12 +39,15 @@
          , PeekChain es ) => FromCStruct (CommandBufferSubmitInfo es)
 
 
-data DependencyInfo
+type role DependencyInfo nominal
+data DependencyInfo (es :: [Type])
 
-instance ToCStruct DependencyInfo
-instance Show DependencyInfo
+instance ( Extendss DependencyInfo es
+         , PokeChain es ) => ToCStruct (DependencyInfo es)
+instance Show (Chain es) => Show (DependencyInfo es)
 
-instance FromCStruct DependencyInfo
+instance ( Extendss DependencyInfo es
+         , PeekChain es ) => FromCStruct (DependencyInfo es)
 
 
 type role ImageMemoryBarrier2 nominal
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
--- 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
@@ -42,12 +42,21 @@
 -- 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.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Core14.hs b/src/Vulkan/Core14.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core14.hs
@@ -0,0 +1,762 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Core14"
+module Vulkan.Core14  ( pattern API_VERSION_1_4
+                      , PhysicalDeviceVulkan14Features(..)
+                      , PhysicalDeviceVulkan14Properties(..)
+                      , StructureType(..)
+                      , module Vulkan.Core14.Enums
+                      , module Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy
+                      , module Vulkan.Core14.Promoted_From_VK_EXT_pipeline_protected_access
+                      , module Vulkan.Core14.Promoted_From_VK_EXT_pipeline_robustness
+                      , module Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read
+                      , module Vulkan.Core14.Promoted_From_VK_KHR_global_priority
+                      , module Vulkan.Core14.Promoted_From_VK_KHR_index_type_uint8
+                      , module Vulkan.Core14.Promoted_From_VK_KHR_line_rasterization
+                      , module Vulkan.Core14.Promoted_From_VK_KHR_maintenance5
+                      , module Vulkan.Core14.Promoted_From_VK_KHR_maintenance6
+                      , module Vulkan.Core14.Promoted_From_VK_KHR_map_memory2
+                      , module Vulkan.Core14.Promoted_From_VK_KHR_push_descriptor
+                      , module Vulkan.Core14.Promoted_From_VK_KHR_shader_expect_assume
+                      , module Vulkan.Core14.Promoted_From_VK_KHR_shader_float_controls2
+                      , module Vulkan.Core14.Promoted_From_VK_KHR_shader_subgroup_rotate
+                      , module Vulkan.Core14.Promoted_From_VK_KHR_vertex_attribute_divisor
+                      ) where
+import Vulkan.Core14.Enums
+import Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy
+import Vulkan.Core14.Promoted_From_VK_EXT_pipeline_protected_access
+import Vulkan.Core14.Promoted_From_VK_EXT_pipeline_robustness
+import Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read
+import Vulkan.Core14.Promoted_From_VK_KHR_global_priority
+import Vulkan.Core14.Promoted_From_VK_KHR_index_type_uint8
+import Vulkan.Core14.Promoted_From_VK_KHR_line_rasterization
+import Vulkan.Core14.Promoted_From_VK_KHR_maintenance5
+import Vulkan.Core14.Promoted_From_VK_KHR_maintenance6
+import Vulkan.Core14.Promoted_From_VK_KHR_map_memory2
+import Vulkan.Core14.Promoted_From_VK_KHR_push_descriptor
+import Vulkan.Core14.Promoted_From_VK_KHR_shader_expect_assume
+import Vulkan.Core14.Promoted_From_VK_KHR_shader_float_controls2
+import Vulkan.Core14.Promoted_From_VK_KHR_shader_subgroup_rotate
+import Vulkan.Core14.Promoted_From_VK_KHR_vertex_attribute_divisor
+import Vulkan.CStruct.Utils (FixedArray)
+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 (Word8)
+import Data.ByteString (ByteString)
+import Data.Kind (Type)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.CStruct.Utils (peekByteStringFromSizedVectorPtr)
+import Vulkan.CStruct.Utils (pokeFixedLengthByteString)
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.Core10.Enums.ImageLayout (ImageLayout)
+import Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior (PipelineRobustnessBufferBehavior)
+import Vulkan.Core14.Enums.PipelineRobustnessImageBehavior (PipelineRobustnessImageBehavior)
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Core10.APIConstants (UUID_SIZE)
+import Vulkan.Version (pattern MAKE_API_VERSION)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_FEATURES))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_PROPERTIES))
+import Vulkan.Core10.Enums.StructureType (StructureType(..))
+pattern API_VERSION_1_4 :: Word32
+pattern API_VERSION_1_4 = MAKE_API_VERSION 1 4 0
+
+
+-- | VkPhysicalDeviceVulkan14Features - Structure describing the Vulkan 1.4
+-- features that can be supported by an implementation
+--
+-- = Members
+--
+-- This structure describes the following features:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceVulkan14Features' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceVulkan14Features', it /must/ add an instance of the
+-- structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceVulkan14Features = PhysicalDeviceVulkan14Features
+  { -- | #features-globalPriorityQuery# @globalPriorityQuery@ indicates whether
+    -- the implementation supports the ability to query global queue
+    -- priorities.
+    globalPriorityQuery :: Bool
+  , -- | #features-shaderSubgroupRotate# @shaderSubgroupRotate@ specifies whether
+    -- shader modules /can/ declare the @GroupNonUniformRotateKHR@ capability.
+    shaderSubgroupRotate :: Bool
+  , -- | #features-shaderSubgroupRotateClustered# @shaderSubgroupRotateClustered@
+    -- specifies whether shader modules /can/ use the @ClusterSize@ operand to
+    -- @OpGroupNonUniformRotateKHR@.
+    shaderSubgroupRotateClustered :: Bool
+  , -- | #features-shaderFloatControls2# @shaderFloatControls2@ specifies whether
+    -- shader modules /can/ declare the @FloatControls2@ capability.
+    shaderFloatControls2 :: Bool
+  , -- | #features-shaderExpectAssume# @shaderExpectAssume@ specifies whether
+    -- shader modules /can/ declare the @ExpectAssumeKHR@ capability.
+    shaderExpectAssume :: Bool
+  , -- | #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>.
+    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>.
+    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>.
+    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>
+    -- with
+    -- 'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_RECTANGULAR'
+    -- lines.
+    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>
+    -- with
+    -- 'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_BRESENHAM'
+    -- 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>
+    -- with
+    -- 'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH'
+    -- lines.
+    stippledSmoothLines :: Bool
+  , -- | #features-vertexAttributeInstanceRateDivisor#
+    -- @vertexAttributeInstanceRateDivisor@ specifies whether vertex attribute
+    -- fetching may be repeated in the case of instanced rendering.
+    vertexAttributeInstanceRateDivisor :: Bool
+  , -- | #features-vertexAttributeInstanceRateZeroDivisor#
+    -- @vertexAttributeInstanceRateZeroDivisor@ specifies whether a zero value
+    -- for
+    -- 'Vulkan.Extensions.VK_EXT_vertex_attribute_divisor.VertexInputBindingDivisorDescriptionEXT'::@divisor@
+    -- is supported.
+    vertexAttributeInstanceRateZeroDivisor :: Bool
+  , -- | #features-indexTypeUint8# @indexTypeUint8@ indicates that
+    -- 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT8' can be used with
+    -- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.cmdBindIndexBuffer2'
+    -- and 'Vulkan.Core10.CommandBufferBuilding.cmdBindIndexBuffer'.
+    indexTypeUint8 :: Bool
+  , -- | #features-dynamicRenderingLocalRead# @dynamicRenderingLocalRead@
+    -- specifies that the implementation supports local reads inside dynamic
+    -- render pass instances using the
+    -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+    -- command.
+    dynamicRenderingLocalRead :: Bool
+  , -- | #features-maintenance5# @maintenance5@ indicates that the implementation
+    -- supports the following:
+    --
+    -- -   The ability to expose support for the optional format
+    --     'Vulkan.Core10.Enums.Format.FORMAT_A1B5G5R5_UNORM_PACK16'.
+    --
+    -- -   The ability to expose support for the optional format
+    --     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM'.
+    --
+    -- -   A property to indicate that multisample coverage operations are
+    --     performed after sample counting in EarlyFragmentTests mode.
+    --
+    -- -   Creating a 'Vulkan.Core10.Handles.BufferView' with a subset of the
+    --     associated 'Vulkan.Core10.Handles.Buffer' usage using
+    --     'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.BufferUsageFlags2CreateInfo'.
+    --
+    -- -   A new function
+    --     'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.cmdBindIndexBuffer2',
+    --     allowing a range of memory to be bound as an index buffer.
+    --
+    -- -   'Vulkan.Core10.DeviceInitialization.getDeviceProcAddr' will return
+    --     @NULL@ for function pointers of core functions for versions higher
+    --     than the version requested by the application.
+    --
+    -- -   'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2'
+    --     supports using 'Vulkan.Core10.APIConstants.WHOLE_SIZE' in the
+    --     @pSizes@ parameter.
+    --
+    -- -   If @PointSize@ is not written, a default value of @1.0@ is used for
+    --     the size of points.
+    --
+    -- -   'Vulkan.Core10.Shader.ShaderModuleCreateInfo' /can/ be added as a
+    --     chained structure to pipeline creation via
+    --     'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo',
+    --     rather than having to create a shader module.
+    --
+    -- -   A function
+    --     'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.getRenderingAreaGranularity'
+    --     to query the optimal render area for a dynamic rendering instance.
+    --
+    -- -   A property to indicate that depth\/stencil texturing operations with
+    --     'Vulkan.Core10.Enums.ComponentSwizzle.COMPONENT_SWIZZLE_ONE' have
+    --     defined behavior.
+    --
+    -- -   'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.getDeviceImageSubresourceLayout'
+    --     allows an application to perform a
+    --     'Vulkan.Core10.Image.getImageSubresourceLayout' query without having
+    --     to create an image.
+    --
+    -- -   'Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS' as the
+    --     @layerCount@ member of
+    --     'Vulkan.Core10.CommandBufferBuilding.ImageSubresourceLayers'.
+    --
+    -- -   A property to indicate whether @PointSize@ controls the final
+    --     rasterization of polygons if
+    --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-polygonmode polygon mode>
+    --     is 'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_POINT'.
+    --
+    -- -   Two properties to indicate the non-strict line rasterization
+    --     algorithm used.
+    --
+    -- -   Two new flags words
+    --     'Vulkan.Core14.Enums.PipelineCreateFlags2.PipelineCreateFlagBits2'
+    --     and 'Vulkan.Core14.Enums.BufferUsageFlags2.BufferUsageFlagBits2'.
+    --
+    -- -   Physical-device-level functions /can/ now be called with any value
+    --     in the valid range for a type beyond the defined enumerants, such
+    --     that applications can avoid checking individual features,
+    --     extensions, or versions before querying supported properties of a
+    --     particular enumerant.
+    --
+    -- -   Copies between images of any type are allowed, with 1D images
+    --     treated as 2D images with a height of @1@.
+    maintenance5 :: Bool
+  , -- | #features-maintenance6# @maintenance6@ indicates that the implementation
+    -- supports the following:
+    --
+    -- -   'Vulkan.Core10.APIConstants.NULL_HANDLE' /can/ be used when binding
+    --     an index buffer
+    --
+    -- -   'Vulkan.Core14.Promoted_From_VK_KHR_maintenance6.BindMemoryStatus'
+    --     /can/ be included in the @pNext@ chain of the
+    --     'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindBufferMemoryInfo'
+    --     and
+    --     'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindImageMemoryInfo'
+    --     structures, enabling applications to retrieve
+    --     'Vulkan.Core10.Enums.Result.Result' values for individual memory
+    --     binding operations.
+    --
+    -- -   'Vulkan.Core14.Promoted_From_VK_KHR_maintenance6.PhysicalDeviceMaintenance6Properties'::@blockTexelViewCompatibleMultipleLayers@
+    --     property to indicate that the implementation supports creating image
+    --     views with
+    --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT'
+    --     where the @layerCount@ member of @subresourceRange@ is greater than
+    --     @1@.
+    --
+    -- -   'Vulkan.Core14.Promoted_From_VK_KHR_maintenance6.PhysicalDeviceMaintenance6Properties'::@maxCombinedImageSamplerDescriptorCount@
+    --     property which indicates the maximum descriptor size required for
+    --     any
+    --     <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>
+    --     supported by the implementation.
+    --
+    -- -   A
+    --     'Vulkan.Core14.Promoted_From_VK_KHR_maintenance6.PhysicalDeviceMaintenance6Properties'::@fragmentShadingRateClampCombinerInputs@
+    --     property which indicates whether the implementation clamps the
+    --     inputs to fragment shading rate combiner operations.
+    maintenance6 :: Bool
+  , -- | #features-pipelineProtectedAccess# @pipelineProtectedAccess@ indicates
+    -- whether the implementation supports specifying protected access on
+    -- individual pipelines.
+    pipelineProtectedAccess :: Bool
+  , -- | #features-pipelineRobustness# @pipelineRobustness@ indicates that
+    -- robustness /can/ be requested on a per-pipeline-stage granularity.
+    pipelineRobustness :: Bool
+  , -- | #features-hostImageCopy# @hostImageCopy@ indicates that the
+    -- implementation supports copying from host memory to images using the
+    -- 'Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy.copyMemoryToImage'
+    -- command, copying from images to host memory using the
+    -- 'Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy.copyImageToMemory'
+    -- command, and copying between images using the
+    -- 'Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy.copyImageToImage'
+    -- command.
+    hostImageCopy :: Bool
+  , -- | #features-pushDescriptor# @pushDescriptor@ indicates that the
+    -- implementation supports push descriptors.
+    pushDescriptor :: Bool
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceVulkan14Features)
+#endif
+deriving instance Show PhysicalDeviceVulkan14Features
+
+instance ToCStruct PhysicalDeviceVulkan14Features where
+  withCStruct x f = allocaBytes 104 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceVulkan14Features{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_FEATURES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (globalPriorityQuery))
+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (shaderSubgroupRotate))
+    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (shaderSubgroupRotateClustered))
+    poke ((p `plusPtr` 28 :: Ptr Bool32)) (boolToBool32 (shaderFloatControls2))
+    poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (shaderExpectAssume))
+    poke ((p `plusPtr` 36 :: Ptr Bool32)) (boolToBool32 (rectangularLines))
+    poke ((p `plusPtr` 40 :: Ptr Bool32)) (boolToBool32 (bresenhamLines))
+    poke ((p `plusPtr` 44 :: Ptr Bool32)) (boolToBool32 (smoothLines))
+    poke ((p `plusPtr` 48 :: Ptr Bool32)) (boolToBool32 (stippledRectangularLines))
+    poke ((p `plusPtr` 52 :: Ptr Bool32)) (boolToBool32 (stippledBresenhamLines))
+    poke ((p `plusPtr` 56 :: Ptr Bool32)) (boolToBool32 (stippledSmoothLines))
+    poke ((p `plusPtr` 60 :: Ptr Bool32)) (boolToBool32 (vertexAttributeInstanceRateDivisor))
+    poke ((p `plusPtr` 64 :: Ptr Bool32)) (boolToBool32 (vertexAttributeInstanceRateZeroDivisor))
+    poke ((p `plusPtr` 68 :: Ptr Bool32)) (boolToBool32 (indexTypeUint8))
+    poke ((p `plusPtr` 72 :: Ptr Bool32)) (boolToBool32 (dynamicRenderingLocalRead))
+    poke ((p `plusPtr` 76 :: Ptr Bool32)) (boolToBool32 (maintenance5))
+    poke ((p `plusPtr` 80 :: Ptr Bool32)) (boolToBool32 (maintenance6))
+    poke ((p `plusPtr` 84 :: Ptr Bool32)) (boolToBool32 (pipelineProtectedAccess))
+    poke ((p `plusPtr` 88 :: Ptr Bool32)) (boolToBool32 (pipelineRobustness))
+    poke ((p `plusPtr` 92 :: Ptr Bool32)) (boolToBool32 (hostImageCopy))
+    poke ((p `plusPtr` 96 :: Ptr Bool32)) (boolToBool32 (pushDescriptor))
+    f
+  cStructSize = 104
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_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))
+    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))
+    f
+
+instance FromCStruct PhysicalDeviceVulkan14Features where
+  peekCStruct p = do
+    globalPriorityQuery <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    shaderSubgroupRotate <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
+    shaderSubgroupRotateClustered <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))
+    shaderFloatControls2 <- peek @Bool32 ((p `plusPtr` 28 :: Ptr Bool32))
+    shaderExpectAssume <- peek @Bool32 ((p `plusPtr` 32 :: Ptr Bool32))
+    rectangularLines <- peek @Bool32 ((p `plusPtr` 36 :: Ptr Bool32))
+    bresenhamLines <- peek @Bool32 ((p `plusPtr` 40 :: Ptr Bool32))
+    smoothLines <- peek @Bool32 ((p `plusPtr` 44 :: Ptr Bool32))
+    stippledRectangularLines <- peek @Bool32 ((p `plusPtr` 48 :: Ptr Bool32))
+    stippledBresenhamLines <- peek @Bool32 ((p `plusPtr` 52 :: Ptr Bool32))
+    stippledSmoothLines <- peek @Bool32 ((p `plusPtr` 56 :: Ptr Bool32))
+    vertexAttributeInstanceRateDivisor <- peek @Bool32 ((p `plusPtr` 60 :: Ptr Bool32))
+    vertexAttributeInstanceRateZeroDivisor <- peek @Bool32 ((p `plusPtr` 64 :: Ptr Bool32))
+    indexTypeUint8 <- peek @Bool32 ((p `plusPtr` 68 :: Ptr Bool32))
+    dynamicRenderingLocalRead <- peek @Bool32 ((p `plusPtr` 72 :: Ptr Bool32))
+    maintenance5 <- peek @Bool32 ((p `plusPtr` 76 :: Ptr Bool32))
+    maintenance6 <- peek @Bool32 ((p `plusPtr` 80 :: Ptr Bool32))
+    pipelineProtectedAccess <- peek @Bool32 ((p `plusPtr` 84 :: Ptr Bool32))
+    pipelineRobustness <- peek @Bool32 ((p `plusPtr` 88 :: Ptr Bool32))
+    hostImageCopy <- peek @Bool32 ((p `plusPtr` 92 :: Ptr Bool32))
+    pushDescriptor <- peek @Bool32 ((p `plusPtr` 96 :: Ptr Bool32))
+    pure $ PhysicalDeviceVulkan14Features
+             (bool32ToBool globalPriorityQuery)
+             (bool32ToBool shaderSubgroupRotate)
+             (bool32ToBool shaderSubgroupRotateClustered)
+             (bool32ToBool shaderFloatControls2)
+             (bool32ToBool shaderExpectAssume)
+             (bool32ToBool rectangularLines)
+             (bool32ToBool bresenhamLines)
+             (bool32ToBool smoothLines)
+             (bool32ToBool stippledRectangularLines)
+             (bool32ToBool stippledBresenhamLines)
+             (bool32ToBool stippledSmoothLines)
+             (bool32ToBool vertexAttributeInstanceRateDivisor)
+             (bool32ToBool vertexAttributeInstanceRateZeroDivisor)
+             (bool32ToBool indexTypeUint8)
+             (bool32ToBool dynamicRenderingLocalRead)
+             (bool32ToBool maintenance5)
+             (bool32ToBool maintenance6)
+             (bool32ToBool pipelineProtectedAccess)
+             (bool32ToBool pipelineRobustness)
+             (bool32ToBool hostImageCopy)
+             (bool32ToBool pushDescriptor)
+
+instance Storable PhysicalDeviceVulkan14Features where
+  sizeOf ~_ = 104
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceVulkan14Features where
+  zero = PhysicalDeviceVulkan14Features
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkPhysicalDeviceVulkan14Properties - Structure specifying physical
+-- device properties for functionality promoted to Vulkan 1.4
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceVulkan14Properties' 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.4 functionality.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout',
+-- 'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PipelineRobustnessBufferBehavior',
+-- 'Vulkan.Core14.Enums.PipelineRobustnessImageBehavior.PipelineRobustnessImageBehavior',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceVulkan14Properties = PhysicalDeviceVulkan14Properties
+  { -- | #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>.
+    lineSubPixelPrecisionBits :: Word32
+  , -- | #limits-maxVertexAttribDivisor# @maxVertexAttribDivisor@ is the maximum
+    -- value of the number of instances that will repeat the value of vertex
+    -- attribute data when instanced rendering is enabled.
+    maxVertexAttribDivisor :: Word32
+  , -- | #limits-supportsNonZeroFirstInstance# @supportsNonZeroFirstInstance@
+    -- specifies whether a non-zero value for the @firstInstance@ parameter of
+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing drawing commands>
+    -- is supported when
+    -- 'Vulkan.Core14.Promoted_From_VK_KHR_vertex_attribute_divisor.VertexInputBindingDivisorDescription'::@divisor@
+    -- is not @1@.
+    supportsNonZeroFirstInstance :: Bool
+  , -- | #limits-maxPushDescriptors# @maxPushDescriptors@ is the maximum number
+    -- of descriptors that /can/ be used in a descriptor set layout created
+    -- with
+    -- 'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT'
+    -- set.
+    maxPushDescriptors :: Word32
+  , -- | #limits-dynamicRenderingLocalReadDepthStencilAttachments#
+    -- @dynamicRenderingLocalReadDepthStencilAttachments@ is
+    -- 'Vulkan.Core10.FundamentalTypes.TRUE' if the implementation supports
+    -- local reads of depth\/stencil attachments,
+    -- 'Vulkan.Core10.FundamentalTypes.FALSE' otherwise.
+    dynamicRenderingLocalReadDepthStencilAttachments :: Bool
+  , -- | #limits-dynamicRenderingLocalReadMultisampledAttachments#
+    -- @dynamicRenderingLocalReadMultisampledAttachments@ is
+    -- 'Vulkan.Core10.FundamentalTypes.TRUE' if the implementation supports
+    -- local reads of multisampled attachments,
+    -- 'Vulkan.Core10.FundamentalTypes.FALSE' otherwise.
+    dynamicRenderingLocalReadMultisampledAttachments :: Bool
+  , -- | @earlyFragmentMultisampleCoverageAfterSampleCounting@ is a boolean value
+    -- indicating whether the
+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-shader fragment shading>
+    -- and
+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-covg multisample coverage>
+    -- operations are performed after
+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-samplecount sample counting>
+    -- for
+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-shader fragment shaders>
+    -- with @EarlyFragmentTests@ execution mode.
+    earlyFragmentMultisampleCoverageAfterSampleCounting :: Bool
+  , -- | @earlyFragmentSampleMaskTestBeforeSampleCounting@ is a boolean value
+    -- indicating whether the
+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-samplemask sample mask test>
+    -- operation is performed before
+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-samplecount sample counting>
+    -- for
+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-shader fragment shaders>
+    -- using the @EarlyFragmentTests@ execution mode.
+    earlyFragmentSampleMaskTestBeforeSampleCounting :: Bool
+  , -- | @depthStencilSwizzleOneSupport@ is a boolean indicating that
+    -- depth\/stencil texturing operations with
+    -- 'Vulkan.Core10.Enums.ComponentSwizzle.COMPONENT_SWIZZLE_ONE' have
+    -- defined behavior.
+    depthStencilSwizzleOneSupport :: Bool
+  , -- | @polygonModePointSize@ is a boolean value indicating whether the point
+    -- size of the final rasterization of polygons with
+    -- 'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_POINT' is controlled by
+    -- @PointSize@.
+    polygonModePointSize :: Bool
+  , -- | @nonStrictSinglePixelWideLinesUseParallelogram@ is a boolean value
+    -- indicating whether non-strict lines with a width of 1.0 are rasterized
+    -- as parallelograms or using Bresenham’s algorithm.
+    nonStrictSinglePixelWideLinesUseParallelogram :: Bool
+  , -- | @nonStrictWideLinesUseParallelogram@ is a boolean value indicating
+    -- whether non-strict lines with a width greater than 1.0 are rasterized as
+    -- parallelograms or using Bresenham’s algorithm.
+    nonStrictWideLinesUseParallelogram :: Bool
+  , -- | @blockTexelViewCompatibleMultipleLayers@ is a boolean value indicating
+    -- that an implementation supports creating image views with
+    -- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT'
+    -- where the @layerCount@ member of @subresourceRange@ is greater than @1@.
+    blockTexelViewCompatibleMultipleLayers :: Bool
+  , -- | @maxCombinedImageSamplerDescriptorCount@ is the maximum number of
+    -- combined image sampler descriptors that the implementation uses to
+    -- access 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>
+    -- supported by the implementation.
+    maxCombinedImageSamplerDescriptorCount :: Word32
+  , -- | @fragmentShadingRateClampCombinerInputs@ is a boolean value indicating
+    -- that an implementation clamps the inputs to
+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-combining combiner operations>.
+    fragmentShadingRateClampCombinerInputs :: Bool
+  , -- | @defaultRobustnessStorageBuffers@ describes the behavior of out of
+    -- bounds accesses made to storage buffers when no robustness features are
+    -- enabled
+    defaultRobustnessStorageBuffers :: PipelineRobustnessBufferBehavior
+  , -- | @defaultRobustnessUniformBuffers@ describes the behavior of out of
+    -- bounds accesses made to uniform buffers when no robustness features are
+    -- enabled
+    defaultRobustnessUniformBuffers :: PipelineRobustnessBufferBehavior
+  , -- | @defaultRobustnessVertexInputs@ describes the behavior of out of bounds
+    -- accesses made to vertex input attributes when no robustness features are
+    -- enabled
+    defaultRobustnessVertexInputs :: PipelineRobustnessBufferBehavior
+  , -- | @defaultRobustnessImages@ describes the behavior of out of bounds
+    -- accesses made to images when no robustness features are enabled
+    defaultRobustnessImages :: PipelineRobustnessImageBehavior
+  , -- | @copySrcLayoutCount@ is an integer related to the number of image
+    -- layouts for host copies from images available or queried, as described
+    -- below.
+    copySrcLayoutCount :: Word32
+  , -- | @pCopySrcLayouts@ is a pointer to an array of
+    -- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout' in which supported image
+    -- layouts for use with host copy operations from images are returned.
+    copySrcLayouts :: Ptr ImageLayout
+  , -- | @copyDstLayoutCount@ is an integer related to the number of image
+    -- layouts for host copies to images available or queried, as described
+    -- below.
+    copyDstLayoutCount :: Word32
+  , -- | @pCopyDstLayouts@ is a pointer to an array of
+    -- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout' in which supported image
+    -- layouts for use with host copy operations to images are returned.
+    copyDstLayouts :: Ptr ImageLayout
+  , -- | @optimalTilingLayoutUUID@ is an array of
+    -- 'Vulkan.Core10.APIConstants.UUID_SIZE' @uint8_t@ values representing a
+    -- universally unique identifier for the implementation’s swizzling layout
+    -- of images created with
+    -- 'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL'.
+    optimalTilingLayoutUUID :: ByteString
+  , -- | @identicalMemoryTypeRequirements@ indicates that specifying the
+    -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_HOST_TRANSFER_BIT'
+    -- flag in 'Vulkan.Core10.Image.ImageCreateInfo'::@usage@ does not affect
+    -- the memory type requirements of the image.
+    identicalMemoryTypeRequirements :: Bool
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceVulkan14Properties)
+#endif
+deriving instance Show PhysicalDeviceVulkan14Properties
+
+instance ToCStruct PhysicalDeviceVulkan14Properties where
+  withCStruct x f = allocaBytes 144 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceVulkan14Properties{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_PROPERTIES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (lineSubPixelPrecisionBits)
+    poke ((p `plusPtr` 20 :: Ptr Word32)) (maxVertexAttribDivisor)
+    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (supportsNonZeroFirstInstance))
+    poke ((p `plusPtr` 28 :: Ptr Word32)) (maxPushDescriptors)
+    poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (dynamicRenderingLocalReadDepthStencilAttachments))
+    poke ((p `plusPtr` 36 :: Ptr Bool32)) (boolToBool32 (dynamicRenderingLocalReadMultisampledAttachments))
+    poke ((p `plusPtr` 40 :: Ptr Bool32)) (boolToBool32 (earlyFragmentMultisampleCoverageAfterSampleCounting))
+    poke ((p `plusPtr` 44 :: Ptr Bool32)) (boolToBool32 (earlyFragmentSampleMaskTestBeforeSampleCounting))
+    poke ((p `plusPtr` 48 :: Ptr Bool32)) (boolToBool32 (depthStencilSwizzleOneSupport))
+    poke ((p `plusPtr` 52 :: Ptr Bool32)) (boolToBool32 (polygonModePointSize))
+    poke ((p `plusPtr` 56 :: Ptr Bool32)) (boolToBool32 (nonStrictSinglePixelWideLinesUseParallelogram))
+    poke ((p `plusPtr` 60 :: Ptr Bool32)) (boolToBool32 (nonStrictWideLinesUseParallelogram))
+    poke ((p `plusPtr` 64 :: Ptr Bool32)) (boolToBool32 (blockTexelViewCompatibleMultipleLayers))
+    poke ((p `plusPtr` 68 :: Ptr Word32)) (maxCombinedImageSamplerDescriptorCount)
+    poke ((p `plusPtr` 72 :: Ptr Bool32)) (boolToBool32 (fragmentShadingRateClampCombinerInputs))
+    poke ((p `plusPtr` 76 :: Ptr PipelineRobustnessBufferBehavior)) (defaultRobustnessStorageBuffers)
+    poke ((p `plusPtr` 80 :: Ptr PipelineRobustnessBufferBehavior)) (defaultRobustnessUniformBuffers)
+    poke ((p `plusPtr` 84 :: Ptr PipelineRobustnessBufferBehavior)) (defaultRobustnessVertexInputs)
+    poke ((p `plusPtr` 88 :: Ptr PipelineRobustnessImageBehavior)) (defaultRobustnessImages)
+    poke ((p `plusPtr` 92 :: Ptr Word32)) (copySrcLayoutCount)
+    poke ((p `plusPtr` 96 :: Ptr (Ptr ImageLayout))) (copySrcLayouts)
+    poke ((p `plusPtr` 104 :: Ptr Word32)) (copyDstLayoutCount)
+    poke ((p `plusPtr` 112 :: Ptr (Ptr ImageLayout))) (copyDstLayouts)
+    pokeFixedLengthByteString ((p `plusPtr` 120 :: Ptr (FixedArray UUID_SIZE Word8))) (optimalTilingLayoutUUID)
+    poke ((p `plusPtr` 136 :: Ptr Bool32)) (boolToBool32 (identicalMemoryTypeRequirements))
+    f
+  cStructSize = 144
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_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 Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 28 :: Ptr Word32)) (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 Word32)) (zero)
+    poke ((p `plusPtr` 72 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 76 :: Ptr PipelineRobustnessBufferBehavior)) (zero)
+    poke ((p `plusPtr` 80 :: Ptr PipelineRobustnessBufferBehavior)) (zero)
+    poke ((p `plusPtr` 84 :: Ptr PipelineRobustnessBufferBehavior)) (zero)
+    poke ((p `plusPtr` 88 :: Ptr PipelineRobustnessImageBehavior)) (zero)
+    poke ((p `plusPtr` 136 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceVulkan14Properties where
+  peekCStruct p = do
+    lineSubPixelPrecisionBits <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    maxVertexAttribDivisor <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
+    supportsNonZeroFirstInstance <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))
+    maxPushDescriptors <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))
+    dynamicRenderingLocalReadDepthStencilAttachments <- peek @Bool32 ((p `plusPtr` 32 :: Ptr Bool32))
+    dynamicRenderingLocalReadMultisampledAttachments <- peek @Bool32 ((p `plusPtr` 36 :: Ptr Bool32))
+    earlyFragmentMultisampleCoverageAfterSampleCounting <- peek @Bool32 ((p `plusPtr` 40 :: Ptr Bool32))
+    earlyFragmentSampleMaskTestBeforeSampleCounting <- peek @Bool32 ((p `plusPtr` 44 :: Ptr Bool32))
+    depthStencilSwizzleOneSupport <- peek @Bool32 ((p `plusPtr` 48 :: Ptr Bool32))
+    polygonModePointSize <- peek @Bool32 ((p `plusPtr` 52 :: Ptr Bool32))
+    nonStrictSinglePixelWideLinesUseParallelogram <- peek @Bool32 ((p `plusPtr` 56 :: Ptr Bool32))
+    nonStrictWideLinesUseParallelogram <- peek @Bool32 ((p `plusPtr` 60 :: Ptr Bool32))
+    blockTexelViewCompatibleMultipleLayers <- peek @Bool32 ((p `plusPtr` 64 :: Ptr Bool32))
+    maxCombinedImageSamplerDescriptorCount <- peek @Word32 ((p `plusPtr` 68 :: Ptr Word32))
+    fragmentShadingRateClampCombinerInputs <- peek @Bool32 ((p `plusPtr` 72 :: Ptr Bool32))
+    defaultRobustnessStorageBuffers <- peek @PipelineRobustnessBufferBehavior ((p `plusPtr` 76 :: Ptr PipelineRobustnessBufferBehavior))
+    defaultRobustnessUniformBuffers <- peek @PipelineRobustnessBufferBehavior ((p `plusPtr` 80 :: Ptr PipelineRobustnessBufferBehavior))
+    defaultRobustnessVertexInputs <- peek @PipelineRobustnessBufferBehavior ((p `plusPtr` 84 :: Ptr PipelineRobustnessBufferBehavior))
+    defaultRobustnessImages <- peek @PipelineRobustnessImageBehavior ((p `plusPtr` 88 :: Ptr PipelineRobustnessImageBehavior))
+    copySrcLayoutCount <- peek @Word32 ((p `plusPtr` 92 :: Ptr Word32))
+    pCopySrcLayouts <- peek @(Ptr ImageLayout) ((p `plusPtr` 96 :: Ptr (Ptr ImageLayout)))
+    copyDstLayoutCount <- peek @Word32 ((p `plusPtr` 104 :: Ptr Word32))
+    pCopyDstLayouts <- peek @(Ptr ImageLayout) ((p `plusPtr` 112 :: Ptr (Ptr ImageLayout)))
+    optimalTilingLayoutUUID <- peekByteStringFromSizedVectorPtr ((p `plusPtr` 120 :: Ptr (FixedArray UUID_SIZE Word8)))
+    identicalMemoryTypeRequirements <- peek @Bool32 ((p `plusPtr` 136 :: Ptr Bool32))
+    pure $ PhysicalDeviceVulkan14Properties
+             lineSubPixelPrecisionBits
+             maxVertexAttribDivisor
+             (bool32ToBool supportsNonZeroFirstInstance)
+             maxPushDescriptors
+             (bool32ToBool dynamicRenderingLocalReadDepthStencilAttachments)
+             (bool32ToBool dynamicRenderingLocalReadMultisampledAttachments)
+             (bool32ToBool earlyFragmentMultisampleCoverageAfterSampleCounting)
+             (bool32ToBool earlyFragmentSampleMaskTestBeforeSampleCounting)
+             (bool32ToBool depthStencilSwizzleOneSupport)
+             (bool32ToBool polygonModePointSize)
+             (bool32ToBool nonStrictSinglePixelWideLinesUseParallelogram)
+             (bool32ToBool nonStrictWideLinesUseParallelogram)
+             (bool32ToBool blockTexelViewCompatibleMultipleLayers)
+             maxCombinedImageSamplerDescriptorCount
+             (bool32ToBool fragmentShadingRateClampCombinerInputs)
+             defaultRobustnessStorageBuffers
+             defaultRobustnessUniformBuffers
+             defaultRobustnessVertexInputs
+             defaultRobustnessImages
+             copySrcLayoutCount
+             pCopySrcLayouts
+             copyDstLayoutCount
+             pCopyDstLayouts
+             optimalTilingLayoutUUID
+             (bool32ToBool identicalMemoryTypeRequirements)
+
+instance Storable PhysicalDeviceVulkan14Properties where
+  sizeOf ~_ = 144
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceVulkan14Properties where
+  zero = PhysicalDeviceVulkan14Properties
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           mempty
+           zero
+
diff --git a/src/Vulkan/Core14.hs-boot b/src/Vulkan/Core14.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core14.hs-boot
@@ -0,0 +1,25 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Core14"
+module Vulkan.Core14  ( PhysicalDeviceVulkan14Features
+                      , PhysicalDeviceVulkan14Properties
+                      ) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data PhysicalDeviceVulkan14Features
+
+instance ToCStruct PhysicalDeviceVulkan14Features
+instance Show PhysicalDeviceVulkan14Features
+
+instance FromCStruct PhysicalDeviceVulkan14Features
+
+
+data PhysicalDeviceVulkan14Properties
+
+instance ToCStruct PhysicalDeviceVulkan14Properties
+instance Show PhysicalDeviceVulkan14Properties
+
+instance FromCStruct PhysicalDeviceVulkan14Properties
+
diff --git a/src/Vulkan/Core14/Enums.hs b/src/Vulkan/Core14/Enums.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core14/Enums.hs
@@ -0,0 +1,20 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Enums"
+module Vulkan.Core14.Enums  ( module Vulkan.Core14.Enums.BufferUsageFlags2
+                            , module Vulkan.Core14.Enums.HostImageCopyFlagBits
+                            , module Vulkan.Core14.Enums.LineRasterizationMode
+                            , module Vulkan.Core14.Enums.MemoryUnmapFlagBits
+                            , module Vulkan.Core14.Enums.PipelineCreateFlags2
+                            , module Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior
+                            , module Vulkan.Core14.Enums.PipelineRobustnessImageBehavior
+                            , module Vulkan.Core14.Enums.QueueGlobalPriority
+                            ) where
+import Vulkan.Core14.Enums.BufferUsageFlags2
+import Vulkan.Core14.Enums.HostImageCopyFlagBits
+import Vulkan.Core14.Enums.LineRasterizationMode
+import Vulkan.Core14.Enums.MemoryUnmapFlagBits
+import Vulkan.Core14.Enums.PipelineCreateFlags2
+import Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior
+import Vulkan.Core14.Enums.PipelineRobustnessImageBehavior
+import Vulkan.Core14.Enums.QueueGlobalPriority
+
diff --git a/src/Vulkan/Core14/Enums/BufferUsageFlags2.hs b/src/Vulkan/Core14/Enums/BufferUsageFlags2.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core14/Enums/BufferUsageFlags2.hs
@@ -0,0 +1,489 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "BufferUsageFlags2"
+module Vulkan.Core14.Enums.BufferUsageFlags2  ( BufferUsageFlags2
+                                              , BufferUsageFlagBits2( BUFFER_USAGE_2_TRANSFER_SRC_BIT
+                                                                    , BUFFER_USAGE_2_TRANSFER_DST_BIT
+                                                                    , BUFFER_USAGE_2_UNIFORM_TEXEL_BUFFER_BIT
+                                                                    , BUFFER_USAGE_2_STORAGE_TEXEL_BUFFER_BIT
+                                                                    , BUFFER_USAGE_2_UNIFORM_BUFFER_BIT
+                                                                    , BUFFER_USAGE_2_STORAGE_BUFFER_BIT
+                                                                    , BUFFER_USAGE_2_INDEX_BUFFER_BIT
+                                                                    , BUFFER_USAGE_2_VERTEX_BUFFER_BIT
+                                                                    , BUFFER_USAGE_2_INDIRECT_BUFFER_BIT
+                                                                    , BUFFER_USAGE_2_PREPROCESS_BUFFER_BIT_EXT
+                                                                    , BUFFER_USAGE_2_MEMORY_DECOMPRESSION_BIT_EXT
+                                                                    , BUFFER_USAGE_2_TILE_MEMORY_BIT_QCOM
+                                                                    , BUFFER_USAGE_2_DATA_GRAPH_FOREIGN_DESCRIPTOR_BIT_ARM
+                                                                    , BUFFER_USAGE_2_COMPRESSED_DATA_DGF1_BIT_AMDX
+                                                                    , BUFFER_USAGE_2_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT
+                                                                    , BUFFER_USAGE_2_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT
+                                                                    , BUFFER_USAGE_2_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT
+                                                                    , BUFFER_USAGE_2_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR
+                                                                    , BUFFER_USAGE_2_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR
+                                                                    , BUFFER_USAGE_2_VIDEO_ENCODE_SRC_BIT_KHR
+                                                                    , BUFFER_USAGE_2_VIDEO_ENCODE_DST_BIT_KHR
+                                                                    , BUFFER_USAGE_2_VIDEO_DECODE_DST_BIT_KHR
+                                                                    , BUFFER_USAGE_2_VIDEO_DECODE_SRC_BIT_KHR
+                                                                    , BUFFER_USAGE_2_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT
+                                                                    , BUFFER_USAGE_2_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT
+                                                                    , BUFFER_USAGE_2_SHADER_BINDING_TABLE_BIT_KHR
+                                                                    , BUFFER_USAGE_2_CONDITIONAL_RENDERING_BIT_EXT
+                                                                    , BUFFER_USAGE_2_MICROMAP_STORAGE_BIT_EXT
+                                                                    , BUFFER_USAGE_2_MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXT
+                                                                    , BUFFER_USAGE_2_DESCRIPTOR_HEAP_BIT_EXT
+                                                                    , BUFFER_USAGE_2_EXECUTION_GRAPH_SCRATCH_BIT_AMDX
+                                                                    , BUFFER_USAGE_2_SHADER_DEVICE_ADDRESS_BIT
+                                                                    , ..
+                                                                    )
+                                              ) where
+
+import Data.Bits (Bits)
+import Data.Bits (FiniteBits)
+import Vulkan.Internal.Utils (enumReadPrec)
+import Vulkan.Internal.Utils (enumShowsPrec)
+import GHC.Show (showString)
+import Numeric (showHex)
+import Vulkan.Zero (Zero)
+import Foreign.Storable (Storable)
+import GHC.Read (Read(readPrec))
+import GHC.Show (Show(showsPrec))
+import Vulkan.Core10.FundamentalTypes (Flags64)
+type BufferUsageFlags2 = BufferUsageFlagBits2
+
+-- | VkBufferUsageFlagBits2 - Bitmask controlling how a pipeline is created
+--
+-- = Description
+--
+-- -   'BUFFER_USAGE_2_TRANSFER_SRC_BIT' specifies that the buffer /can/ be
+--     used as the source of a /transfer command/ (see the definition of
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-pipeline-stages-transfer >).
+--
+-- -   'BUFFER_USAGE_2_TRANSFER_DST_BIT' specifies that the buffer /can/ be
+--     used as the destination of a transfer command.
+--
+-- -   'BUFFER_USAGE_2_UNIFORM_TEXEL_BUFFER_BIT' specifies that the buffer
+--     /can/ be used to create a 'Vulkan.Core10.Handles.BufferView'
+--     suitable for occupying a 'Vulkan.Core10.Handles.DescriptorSet' slot
+--     of type
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER'.
+--
+-- -   'BUFFER_USAGE_2_STORAGE_TEXEL_BUFFER_BIT' specifies that the buffer
+--     /can/ be used to create a 'Vulkan.Core10.Handles.BufferView'
+--     suitable for occupying a 'Vulkan.Core10.Handles.DescriptorSet' slot
+--     of type
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'.
+--
+-- -   'BUFFER_USAGE_2_UNIFORM_BUFFER_BIT' specifies that the buffer /can/
+--     be used in a 'Vulkan.Core10.DescriptorSet.DescriptorBufferInfo'
+--     suitable for occupying a 'Vulkan.Core10.Handles.DescriptorSet' slot
+--     either of type
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER'
+--     or
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC'.
+--
+-- -   'BUFFER_USAGE_2_STORAGE_BUFFER_BIT' specifies that the buffer /can/
+--     be used in a 'Vulkan.Core10.DescriptorSet.DescriptorBufferInfo'
+--     suitable for occupying a 'Vulkan.Core10.Handles.DescriptorSet' slot
+--     either of type
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER'
+--     or
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC'.
+--
+-- -   'BUFFER_USAGE_2_INDEX_BUFFER_BIT' specifies that the buffer is
+--     suitable for passing as the @buffer@ parameter to
+--     'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.cmdBindIndexBuffer2'
+--     and 'Vulkan.Core10.CommandBufferBuilding.cmdBindIndexBuffer'.
+--
+-- -   'BUFFER_USAGE_2_VERTEX_BUFFER_BIT' specifies that the buffer is
+--     suitable for passing as an element of the @pBuffers@ array to
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBindVertexBuffers'.
+--
+-- -   'BUFFER_USAGE_2_INDIRECT_BUFFER_BIT' specifies that the buffer is
+--     suitable for passing as the @buffer@ parameter to
+--     'Vulkan.Core10.CommandBufferBuilding.cmdDrawIndirect',
+--     'Vulkan.Core10.CommandBufferBuilding.cmdDrawIndexedIndirect',
+--     'Vulkan.Extensions.VK_NV_mesh_shader.cmdDrawMeshTasksIndirectNV',
+--     'Vulkan.Extensions.VK_NV_mesh_shader.cmdDrawMeshTasksIndirectCountNV',
+--     'Vulkan.Extensions.VK_EXT_mesh_shader.cmdDrawMeshTasksIndirectEXT',
+--     'Vulkan.Extensions.VK_EXT_mesh_shader.cmdDrawMeshTasksIndirectCountEXT',
+--     'Vulkan.Extensions.VK_HUAWEI_cluster_culling_shader.cmdDrawClusterIndirectHUAWEI',
+--     or 'Vulkan.Core10.CommandBufferBuilding.cmdDispatchIndirect'. It is
+--     also suitable for passing as the @buffer@ member of
+--     'Vulkan.Extensions.VK_NV_device_generated_commands.IndirectCommandsStreamNV',
+--     or @sequencesCountBuffer@ or @sequencesIndexBuffer@ or
+--     @preprocessedBuffer@ member of
+--     'Vulkan.Extensions.VK_NV_device_generated_commands.GeneratedCommandsInfoNV'.
+--     It is also suitable for passing as the underlying buffer of either
+--     the @preprocessAddress@ or @sequenceCountAddress@ members of
+--     'Vulkan.Extensions.VK_EXT_device_generated_commands.GeneratedCommandsInfoEXT'.
+--
+-- -   'BUFFER_USAGE_2_CONDITIONAL_RENDERING_BIT_EXT' specifies that the
+--     buffer is suitable for passing as the @buffer@ parameter to
+--     'Vulkan.Extensions.VK_EXT_conditional_rendering.cmdBeginConditionalRenderingEXT'.
+--
+-- -   'BUFFER_USAGE_2_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT' specifies that
+--     the buffer is suitable for using for binding as a transform feedback
+--     buffer with
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.cmdBindTransformFeedbackBuffers2EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_transform_feedback.cmdBindTransformFeedbackBuffersEXT'.
+--
+-- -   'BUFFER_USAGE_2_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT' specifies
+--     that the buffer is suitable for using as a counter buffer with
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.cmdBeginTransformFeedback2EXT',
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.cmdEndTransformFeedback2EXT',
+--     'Vulkan.Extensions.VK_EXT_transform_feedback.cmdBeginTransformFeedbackEXT',
+--     and
+--     'Vulkan.Extensions.VK_EXT_transform_feedback.cmdEndTransformFeedbackEXT'.
+--
+-- -   'BUFFER_USAGE_2_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT' specifies that
+--     the buffer is suitable to contain sampler and combined image sampler
+--     descriptors when bound as a descriptor buffer. Buffers containing
+--     combined image sampler descriptors /must/ also specify
+--     'BUFFER_USAGE_2_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT'.
+--
+-- -   'BUFFER_USAGE_2_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT' specifies that
+--     the buffer is suitable to contain resource descriptors when bound as
+--     a descriptor buffer.
+--
+-- -   'BUFFER_USAGE_2_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT'
+--     specifies that the buffer, when bound, /can/ be used by the
+--     implementation to support push descriptors when using descriptor
+--     buffers.
+--
+-- -   'BUFFER_USAGE_2_TILE_MEMORY_BIT_QCOM' specifies that the buffer
+--     /can/ be bound to 'Vulkan.Core10.Handles.DeviceMemory' allocated
+--     from a 'Vulkan.Core10.DeviceInitialization.MemoryHeap' with the
+--     'Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_TILE_MEMORY_BIT_QCOM'
+--     property.
+--
+-- -   'Vulkan.Extensions.VK_KHR_maintenance5.BUFFER_USAGE_2_RAY_TRACING_BIT_NV'
+--     specifies that the buffer is suitable for use in
+--     'Vulkan.Extensions.VK_NV_ray_tracing.cmdTraceRaysNV'.
+--
+-- -   'BUFFER_USAGE_2_SHADER_BINDING_TABLE_BIT_KHR' specifies that the
+--     buffer is suitable for use as a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shader-binding-table Shader Binding Table>.
+--
+-- -   'BUFFER_USAGE_2_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR'
+--     specifies that the buffer is suitable for use as a read-only input
+--     to an
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#acceleration-structure-building acceleration structure build>.
+--
+-- -   'BUFFER_USAGE_2_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR' specifies
+--     that the buffer is suitable for storage space for a
+--     'Vulkan.Extensions.Handles.AccelerationStructureKHR'.
+--
+-- -   'BUFFER_USAGE_2_SHADER_DEVICE_ADDRESS_BIT' specifies that the buffer
+--     /can/ be used to retrieve a buffer device address via
+--     'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.getBufferDeviceAddress'
+--     and use that address to access the buffer’s memory from a shader.
+--
+-- -   'BUFFER_USAGE_2_VIDEO_DECODE_SRC_BIT_KHR' specifies that the buffer
+--     /can/ be used as the source video bitstream buffer in a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#video-decode-operations video decode operation>.
+--
+-- -   'BUFFER_USAGE_2_VIDEO_DECODE_DST_BIT_KHR' is reserved for future
+--     use.
+--
+-- -   'BUFFER_USAGE_2_VIDEO_ENCODE_DST_BIT_KHR' specifies that the buffer
+--     /can/ be used as the destination video bitstream buffer in a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#video-encode-operations video encode operation>.
+--
+-- -   'BUFFER_USAGE_2_VIDEO_ENCODE_SRC_BIT_KHR' is reserved for future
+--     use.
+--
+-- -   'BUFFER_USAGE_2_EXECUTION_GRAPH_SCRATCH_BIT_AMDX' specifies that the
+--     buffer /can/ be used for as scratch memory for
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#executiongraphs execution graph dispatch>.
+--
+-- -   'BUFFER_USAGE_2_PREPROCESS_BUFFER_BIT_EXT' specifies that the buffer
+--     /can/ be used as a preprocess buffer for
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#device-generated-commands Device-Generated Commands>.
+--
+-- -   'BUFFER_USAGE_2_MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXT' specifies
+--     that the buffer /can/ be used as a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#micromap-building read-only  build input>,
+--     which includes the @data@ and @triangleArray@ parameters
+--
+-- -   'BUFFER_USAGE_2_MICROMAP_STORAGE_BIT_EXT' specifies that the buffer
+--     /can/ be used to
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-micromaps create  objects>.
+--
+-- -   'BUFFER_USAGE_2_COMPRESSED_DATA_DGF1_BIT_AMDX' specifies that the
+--     buffer is suitable as storage space for
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#dense-geometry-format Dense Geometry Format>
+--     data.
+--
+-- -   'BUFFER_USAGE_2_DATA_GRAPH_FOREIGN_DESCRIPTOR_BIT_ARM' specifies
+--     that the buffer is suitable to contain resource descriptors when
+--     bound as a descriptor buffer in command buffers allocated from a
+--     command pool that /can/ target foreign
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#graphs-processing-engines data graph processing engines>.
+--
+-- -   'BUFFER_USAGE_2_MEMORY_DECOMPRESSION_BIT_EXT' specifies that the
+--     buffer /can/ be used as a destination buffer in
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-decompression memory decompression>.
+--
+-- -   'BUFFER_USAGE_2_DESCRIPTOR_HEAP_BIT_EXT' specifies that the buffer
+--     /can/ be used as a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptorheaps descriptor heap>.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance5 VK_KHR_maintenance5>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'BufferUsageFlags2'
+newtype BufferUsageFlagBits2 = BufferUsageFlagBits2 Flags64
+  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
+
+-- No documentation found for Nested "VkBufferUsageFlagBits2" "VK_BUFFER_USAGE_2_TRANSFER_SRC_BIT"
+pattern BUFFER_USAGE_2_TRANSFER_SRC_BIT = BufferUsageFlagBits2 0x0000000000000001
+
+-- No documentation found for Nested "VkBufferUsageFlagBits2" "VK_BUFFER_USAGE_2_TRANSFER_DST_BIT"
+pattern BUFFER_USAGE_2_TRANSFER_DST_BIT = BufferUsageFlagBits2 0x0000000000000002
+
+-- No documentation found for Nested "VkBufferUsageFlagBits2" "VK_BUFFER_USAGE_2_UNIFORM_TEXEL_BUFFER_BIT"
+pattern BUFFER_USAGE_2_UNIFORM_TEXEL_BUFFER_BIT = BufferUsageFlagBits2 0x0000000000000004
+
+-- No documentation found for Nested "VkBufferUsageFlagBits2" "VK_BUFFER_USAGE_2_STORAGE_TEXEL_BUFFER_BIT"
+pattern BUFFER_USAGE_2_STORAGE_TEXEL_BUFFER_BIT = BufferUsageFlagBits2 0x0000000000000008
+
+-- No documentation found for Nested "VkBufferUsageFlagBits2" "VK_BUFFER_USAGE_2_UNIFORM_BUFFER_BIT"
+pattern BUFFER_USAGE_2_UNIFORM_BUFFER_BIT = BufferUsageFlagBits2 0x0000000000000010
+
+-- No documentation found for Nested "VkBufferUsageFlagBits2" "VK_BUFFER_USAGE_2_STORAGE_BUFFER_BIT"
+pattern BUFFER_USAGE_2_STORAGE_BUFFER_BIT = BufferUsageFlagBits2 0x0000000000000020
+
+-- No documentation found for Nested "VkBufferUsageFlagBits2" "VK_BUFFER_USAGE_2_INDEX_BUFFER_BIT"
+pattern BUFFER_USAGE_2_INDEX_BUFFER_BIT = BufferUsageFlagBits2 0x0000000000000040
+
+-- No documentation found for Nested "VkBufferUsageFlagBits2" "VK_BUFFER_USAGE_2_VERTEX_BUFFER_BIT"
+pattern BUFFER_USAGE_2_VERTEX_BUFFER_BIT = BufferUsageFlagBits2 0x0000000000000080
+
+-- No documentation found for Nested "VkBufferUsageFlagBits2" "VK_BUFFER_USAGE_2_INDIRECT_BUFFER_BIT"
+pattern BUFFER_USAGE_2_INDIRECT_BUFFER_BIT = BufferUsageFlagBits2 0x0000000000000100
+
+-- No documentation found for Nested "VkBufferUsageFlagBits2" "VK_BUFFER_USAGE_2_PREPROCESS_BUFFER_BIT_EXT"
+pattern BUFFER_USAGE_2_PREPROCESS_BUFFER_BIT_EXT = BufferUsageFlagBits2 0x0000000080000000
+
+-- No documentation found for Nested "VkBufferUsageFlagBits2" "VK_BUFFER_USAGE_2_MEMORY_DECOMPRESSION_BIT_EXT"
+pattern BUFFER_USAGE_2_MEMORY_DECOMPRESSION_BIT_EXT = BufferUsageFlagBits2 0x0000000100000000
+
+-- No documentation found for Nested "VkBufferUsageFlagBits2" "VK_BUFFER_USAGE_2_TILE_MEMORY_BIT_QCOM"
+pattern BUFFER_USAGE_2_TILE_MEMORY_BIT_QCOM = BufferUsageFlagBits2 0x0000000008000000
+
+-- No documentation found for Nested "VkBufferUsageFlagBits2" "VK_BUFFER_USAGE_2_DATA_GRAPH_FOREIGN_DESCRIPTOR_BIT_ARM"
+pattern BUFFER_USAGE_2_DATA_GRAPH_FOREIGN_DESCRIPTOR_BIT_ARM = BufferUsageFlagBits2 0x0000000020000000
+
+-- No documentation found for Nested "VkBufferUsageFlagBits2" "VK_BUFFER_USAGE_2_COMPRESSED_DATA_DGF1_BIT_AMDX"
+pattern BUFFER_USAGE_2_COMPRESSED_DATA_DGF1_BIT_AMDX = BufferUsageFlagBits2 0x0000000200000000
+
+-- No documentation found for Nested "VkBufferUsageFlagBits2" "VK_BUFFER_USAGE_2_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT"
+pattern BUFFER_USAGE_2_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT = BufferUsageFlagBits2 0x0000000004000000
+
+-- No documentation found for Nested "VkBufferUsageFlagBits2" "VK_BUFFER_USAGE_2_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT"
+pattern BUFFER_USAGE_2_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT = BufferUsageFlagBits2 0x0000000000400000
+
+-- No documentation found for Nested "VkBufferUsageFlagBits2" "VK_BUFFER_USAGE_2_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT"
+pattern BUFFER_USAGE_2_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT = BufferUsageFlagBits2 0x0000000000200000
+
+-- No documentation found for Nested "VkBufferUsageFlagBits2" "VK_BUFFER_USAGE_2_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR"
+pattern BUFFER_USAGE_2_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR = BufferUsageFlagBits2 0x0000000000100000
+
+-- No documentation found for Nested "VkBufferUsageFlagBits2" "VK_BUFFER_USAGE_2_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR"
+pattern BUFFER_USAGE_2_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR = BufferUsageFlagBits2 0x0000000000080000
+
+-- No documentation found for Nested "VkBufferUsageFlagBits2" "VK_BUFFER_USAGE_2_VIDEO_ENCODE_SRC_BIT_KHR"
+pattern BUFFER_USAGE_2_VIDEO_ENCODE_SRC_BIT_KHR = BufferUsageFlagBits2 0x0000000000010000
+
+-- No documentation found for Nested "VkBufferUsageFlagBits2" "VK_BUFFER_USAGE_2_VIDEO_ENCODE_DST_BIT_KHR"
+pattern BUFFER_USAGE_2_VIDEO_ENCODE_DST_BIT_KHR = BufferUsageFlagBits2 0x0000000000008000
+
+-- No documentation found for Nested "VkBufferUsageFlagBits2" "VK_BUFFER_USAGE_2_VIDEO_DECODE_DST_BIT_KHR"
+pattern BUFFER_USAGE_2_VIDEO_DECODE_DST_BIT_KHR = BufferUsageFlagBits2 0x0000000000004000
+
+-- No documentation found for Nested "VkBufferUsageFlagBits2" "VK_BUFFER_USAGE_2_VIDEO_DECODE_SRC_BIT_KHR"
+pattern BUFFER_USAGE_2_VIDEO_DECODE_SRC_BIT_KHR = BufferUsageFlagBits2 0x0000000000002000
+
+-- No documentation found for Nested "VkBufferUsageFlagBits2" "VK_BUFFER_USAGE_2_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT"
+pattern BUFFER_USAGE_2_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT = BufferUsageFlagBits2 0x0000000000001000
+
+-- No documentation found for Nested "VkBufferUsageFlagBits2" "VK_BUFFER_USAGE_2_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT"
+pattern BUFFER_USAGE_2_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT = BufferUsageFlagBits2 0x0000000000000800
+
+-- No documentation found for Nested "VkBufferUsageFlagBits2" "VK_BUFFER_USAGE_2_SHADER_BINDING_TABLE_BIT_KHR"
+pattern BUFFER_USAGE_2_SHADER_BINDING_TABLE_BIT_KHR = BufferUsageFlagBits2 0x0000000000000400
+
+-- No documentation found for Nested "VkBufferUsageFlagBits2" "VK_BUFFER_USAGE_2_CONDITIONAL_RENDERING_BIT_EXT"
+pattern BUFFER_USAGE_2_CONDITIONAL_RENDERING_BIT_EXT = BufferUsageFlagBits2 0x0000000000000200
+
+-- No documentation found for Nested "VkBufferUsageFlagBits2" "VK_BUFFER_USAGE_2_MICROMAP_STORAGE_BIT_EXT"
+pattern BUFFER_USAGE_2_MICROMAP_STORAGE_BIT_EXT = BufferUsageFlagBits2 0x0000000001000000
+
+-- No documentation found for Nested "VkBufferUsageFlagBits2" "VK_BUFFER_USAGE_2_MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXT"
+pattern BUFFER_USAGE_2_MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXT = BufferUsageFlagBits2 0x0000000000800000
+
+-- No documentation found for Nested "VkBufferUsageFlagBits2" "VK_BUFFER_USAGE_2_DESCRIPTOR_HEAP_BIT_EXT"
+pattern BUFFER_USAGE_2_DESCRIPTOR_HEAP_BIT_EXT = BufferUsageFlagBits2 0x0000000010000000
+
+-- No documentation found for Nested "VkBufferUsageFlagBits2" "VK_BUFFER_USAGE_2_EXECUTION_GRAPH_SCRATCH_BIT_AMDX"
+pattern BUFFER_USAGE_2_EXECUTION_GRAPH_SCRATCH_BIT_AMDX = BufferUsageFlagBits2 0x0000000002000000
+
+-- No documentation found for Nested "VkBufferUsageFlagBits2" "VK_BUFFER_USAGE_2_SHADER_DEVICE_ADDRESS_BIT"
+pattern BUFFER_USAGE_2_SHADER_DEVICE_ADDRESS_BIT = BufferUsageFlagBits2 0x0000000000020000
+
+conNameBufferUsageFlagBits2 :: String
+conNameBufferUsageFlagBits2 = "BufferUsageFlagBits2"
+
+enumPrefixBufferUsageFlagBits2 :: String
+enumPrefixBufferUsageFlagBits2 = "BUFFER_USAGE_2_"
+
+showTableBufferUsageFlagBits2 :: [(BufferUsageFlagBits2, String)]
+showTableBufferUsageFlagBits2 =
+  [
+    ( BUFFER_USAGE_2_TRANSFER_SRC_BIT
+    , "TRANSFER_SRC_BIT"
+    )
+  ,
+    ( BUFFER_USAGE_2_TRANSFER_DST_BIT
+    , "TRANSFER_DST_BIT"
+    )
+  ,
+    ( BUFFER_USAGE_2_UNIFORM_TEXEL_BUFFER_BIT
+    , "UNIFORM_TEXEL_BUFFER_BIT"
+    )
+  ,
+    ( BUFFER_USAGE_2_STORAGE_TEXEL_BUFFER_BIT
+    , "STORAGE_TEXEL_BUFFER_BIT"
+    )
+  ,
+    ( BUFFER_USAGE_2_UNIFORM_BUFFER_BIT
+    , "UNIFORM_BUFFER_BIT"
+    )
+  ,
+    ( BUFFER_USAGE_2_STORAGE_BUFFER_BIT
+    , "STORAGE_BUFFER_BIT"
+    )
+  ,
+    ( BUFFER_USAGE_2_INDEX_BUFFER_BIT
+    , "INDEX_BUFFER_BIT"
+    )
+  ,
+    ( BUFFER_USAGE_2_VERTEX_BUFFER_BIT
+    , "VERTEX_BUFFER_BIT"
+    )
+  ,
+    ( BUFFER_USAGE_2_INDIRECT_BUFFER_BIT
+    , "INDIRECT_BUFFER_BIT"
+    )
+  ,
+    ( BUFFER_USAGE_2_PREPROCESS_BUFFER_BIT_EXT
+    , "PREPROCESS_BUFFER_BIT_EXT"
+    )
+  ,
+    ( BUFFER_USAGE_2_MEMORY_DECOMPRESSION_BIT_EXT
+    , "MEMORY_DECOMPRESSION_BIT_EXT"
+    )
+  ,
+    ( BUFFER_USAGE_2_TILE_MEMORY_BIT_QCOM
+    , "TILE_MEMORY_BIT_QCOM"
+    )
+  ,
+    ( BUFFER_USAGE_2_DATA_GRAPH_FOREIGN_DESCRIPTOR_BIT_ARM
+    , "DATA_GRAPH_FOREIGN_DESCRIPTOR_BIT_ARM"
+    )
+  ,
+    ( BUFFER_USAGE_2_COMPRESSED_DATA_DGF1_BIT_AMDX
+    , "COMPRESSED_DATA_DGF1_BIT_AMDX"
+    )
+  ,
+    ( BUFFER_USAGE_2_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT
+    , "PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT"
+    )
+  ,
+    ( BUFFER_USAGE_2_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT
+    , "RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT"
+    )
+  ,
+    ( BUFFER_USAGE_2_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT
+    , "SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT"
+    )
+  ,
+    ( BUFFER_USAGE_2_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR
+    , "ACCELERATION_STRUCTURE_STORAGE_BIT_KHR"
+    )
+  ,
+    ( BUFFER_USAGE_2_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR
+    , "ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR"
+    )
+  ,
+    ( BUFFER_USAGE_2_VIDEO_ENCODE_SRC_BIT_KHR
+    , "VIDEO_ENCODE_SRC_BIT_KHR"
+    )
+  ,
+    ( BUFFER_USAGE_2_VIDEO_ENCODE_DST_BIT_KHR
+    , "VIDEO_ENCODE_DST_BIT_KHR"
+    )
+  ,
+    ( BUFFER_USAGE_2_VIDEO_DECODE_DST_BIT_KHR
+    , "VIDEO_DECODE_DST_BIT_KHR"
+    )
+  ,
+    ( BUFFER_USAGE_2_VIDEO_DECODE_SRC_BIT_KHR
+    , "VIDEO_DECODE_SRC_BIT_KHR"
+    )
+  ,
+    ( BUFFER_USAGE_2_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT
+    , "TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT"
+    )
+  ,
+    ( BUFFER_USAGE_2_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT
+    , "TRANSFORM_FEEDBACK_BUFFER_BIT_EXT"
+    )
+  ,
+    ( BUFFER_USAGE_2_SHADER_BINDING_TABLE_BIT_KHR
+    , "SHADER_BINDING_TABLE_BIT_KHR"
+    )
+  ,
+    ( BUFFER_USAGE_2_CONDITIONAL_RENDERING_BIT_EXT
+    , "CONDITIONAL_RENDERING_BIT_EXT"
+    )
+  ,
+    ( BUFFER_USAGE_2_MICROMAP_STORAGE_BIT_EXT
+    , "MICROMAP_STORAGE_BIT_EXT"
+    )
+  ,
+    ( BUFFER_USAGE_2_MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXT
+    , "MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXT"
+    )
+  ,
+    ( BUFFER_USAGE_2_DESCRIPTOR_HEAP_BIT_EXT
+    , "DESCRIPTOR_HEAP_BIT_EXT"
+    )
+  ,
+    ( BUFFER_USAGE_2_EXECUTION_GRAPH_SCRATCH_BIT_AMDX
+    , "EXECUTION_GRAPH_SCRATCH_BIT_AMDX"
+    )
+  ,
+    ( BUFFER_USAGE_2_SHADER_DEVICE_ADDRESS_BIT
+    , "SHADER_DEVICE_ADDRESS_BIT"
+    )
+  ]
+
+instance Show BufferUsageFlagBits2 where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixBufferUsageFlagBits2
+      showTableBufferUsageFlagBits2
+      conNameBufferUsageFlagBits2
+      (\(BufferUsageFlagBits2 x) -> x)
+      (\x -> showString "0x" . showHex x)
+
+instance Read BufferUsageFlagBits2 where
+  readPrec =
+    enumReadPrec
+      enumPrefixBufferUsageFlagBits2
+      showTableBufferUsageFlagBits2
+      conNameBufferUsageFlagBits2
+      BufferUsageFlagBits2
diff --git a/src/Vulkan/Core14/Enums/BufferUsageFlags2.hs-boot b/src/Vulkan/Core14/Enums/BufferUsageFlags2.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core14/Enums/BufferUsageFlags2.hs-boot
@@ -0,0 +1,12 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "BufferUsageFlags2"
+module Vulkan.Core14.Enums.BufferUsageFlags2  ( BufferUsageFlags2
+                                              , BufferUsageFlagBits2
+                                              ) where
+
+
+
+type BufferUsageFlags2 = BufferUsageFlagBits2
+
+data BufferUsageFlagBits2
+
diff --git a/src/Vulkan/Core14/Enums/HostImageCopyFlagBits.hs b/src/Vulkan/Core14/Enums/HostImageCopyFlagBits.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core14/Enums/HostImageCopyFlagBits.hs
@@ -0,0 +1,76 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "HostImageCopyFlagBits"
+module Vulkan.Core14.Enums.HostImageCopyFlagBits  ( pattern HOST_IMAGE_COPY_MEMCPY
+                                                  , HostImageCopyFlags
+                                                  , HostImageCopyFlagBits( HOST_IMAGE_COPY_MEMCPY_BIT
+                                                                         , ..
+                                                                         )
+                                                  ) where
+
+import Data.Bits (Bits)
+import Data.Bits (FiniteBits)
+import Vulkan.Internal.Utils (enumReadPrec)
+import Vulkan.Internal.Utils (enumShowsPrec)
+import GHC.Show (showString)
+import Numeric (showHex)
+import Vulkan.Zero (Zero)
+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_HOST_IMAGE_COPY_MEMCPY"
+pattern HOST_IMAGE_COPY_MEMCPY = HOST_IMAGE_COPY_MEMCPY_BIT
+
+
+type HostImageCopyFlags = HostImageCopyFlagBits
+
+-- | VkHostImageCopyFlagBits - Bitmask specifying additional copy parameters
+--
+-- = Description
+--
+-- -   'HOST_IMAGE_COPY_MEMCPY_BIT' specifies that no memory layout
+--     swizzling is to be applied during data copy. For copies between
+--     memory and images, this flag indicates that image data in host
+--     memory is swizzled in exactly the same way as the image data on the
+--     device. Using this flag indicates that the implementations /may/ use
+--     a simple memory copy to transfer the data between the host memory
+--     and the device memory. The format of the swizzled data in host
+--     memory is platform dependent and is not defined in this
+--     specification.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_host_image_copy VK_EXT_host_image_copy>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'HostImageCopyFlags'
+newtype HostImageCopyFlagBits = HostImageCopyFlagBits Flags
+  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
+
+-- No documentation found for Nested "VkHostImageCopyFlagBits" "VK_HOST_IMAGE_COPY_MEMCPY_BIT"
+pattern HOST_IMAGE_COPY_MEMCPY_BIT = HostImageCopyFlagBits 0x00000001
+
+conNameHostImageCopyFlagBits :: String
+conNameHostImageCopyFlagBits = "HostImageCopyFlagBits"
+
+enumPrefixHostImageCopyFlagBits :: String
+enumPrefixHostImageCopyFlagBits = "HOST_IMAGE_COPY_MEMCPY_BIT"
+
+showTableHostImageCopyFlagBits :: [(HostImageCopyFlagBits, String)]
+showTableHostImageCopyFlagBits = [(HOST_IMAGE_COPY_MEMCPY_BIT, "")]
+
+instance Show HostImageCopyFlagBits where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixHostImageCopyFlagBits
+      showTableHostImageCopyFlagBits
+      conNameHostImageCopyFlagBits
+      (\(HostImageCopyFlagBits x) -> x)
+      (\x -> showString "0x" . showHex x)
+
+instance Read HostImageCopyFlagBits where
+  readPrec =
+    enumReadPrec
+      enumPrefixHostImageCopyFlagBits
+      showTableHostImageCopyFlagBits
+      conNameHostImageCopyFlagBits
+      HostImageCopyFlagBits
diff --git a/src/Vulkan/Core14/Enums/HostImageCopyFlagBits.hs-boot b/src/Vulkan/Core14/Enums/HostImageCopyFlagBits.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core14/Enums/HostImageCopyFlagBits.hs-boot
@@ -0,0 +1,12 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "HostImageCopyFlagBits"
+module Vulkan.Core14.Enums.HostImageCopyFlagBits  ( HostImageCopyFlags
+                                                  , HostImageCopyFlagBits
+                                                  ) where
+
+
+
+type HostImageCopyFlags = HostImageCopyFlagBits
+
+data HostImageCopyFlagBits
+
diff --git a/src/Vulkan/Core14/Enums/LineRasterizationMode.hs b/src/Vulkan/Core14/Enums/LineRasterizationMode.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core14/Enums/LineRasterizationMode.hs
@@ -0,0 +1,112 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "LineRasterizationMode"
+module Vulkan.Core14.Enums.LineRasterizationMode  (LineRasterizationMode( LINE_RASTERIZATION_MODE_DEFAULT
+                                                                        , LINE_RASTERIZATION_MODE_RECTANGULAR
+                                                                        , LINE_RASTERIZATION_MODE_BRESENHAM
+                                                                        , LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH
+                                                                        , ..
+                                                                        )) where
+
+import Vulkan.Internal.Utils (enumReadPrec)
+import Vulkan.Internal.Utils (enumShowsPrec)
+import GHC.Show (showsPrec)
+import Vulkan.Zero (Zero)
+import Foreign.Storable (Storable)
+import Data.Int (Int32)
+import GHC.Read (Read(readPrec))
+import GHC.Show (Show(showsPrec))
+
+-- | VkLineRasterizationMode - Line rasterization modes
+--
+-- = Description
+--
+-- -   'LINE_RASTERIZATION_MODE_DEFAULT' is equivalent to
+--     'LINE_RASTERIZATION_MODE_RECTANGULAR' if
+--     '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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-lines-basic Basic Line Segment Rasterization>.
+--
+-- -   'LINE_RASTERIZATION_MODE_RECTANGULAR' specifies lines drawn as if
+--     they were rectangles extruded from the line
+--
+-- -   'LINE_RASTERIZATION_MODE_BRESENHAM' specifies lines drawn by
+--     determining which pixel diamonds the line intersects and exits, as
+--     defined in
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-lines-bresenham Bresenham Line Segment Rasterization>.
+--
+-- -   'LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH' specifies lines drawn
+--     if they were rectangles extruded from the line, with alpha falloff,
+--     as defined in
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-lines-smooth Smooth Lines>.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_line_rasterization VK_EXT_line_rasterization>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_line_rasterization VK_KHR_line_rasterization>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_line_rasterization.PipelineRasterizationLineStateCreateInfo',
+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
+newtype LineRasterizationMode = LineRasterizationMode Int32
+  deriving newtype (Eq, Ord, Storable, Zero)
+
+-- No documentation found for Nested "VkLineRasterizationMode" "VK_LINE_RASTERIZATION_MODE_DEFAULT"
+pattern LINE_RASTERIZATION_MODE_DEFAULT = LineRasterizationMode 0
+
+-- No documentation found for Nested "VkLineRasterizationMode" "VK_LINE_RASTERIZATION_MODE_RECTANGULAR"
+pattern LINE_RASTERIZATION_MODE_RECTANGULAR = LineRasterizationMode 1
+
+-- No documentation found for Nested "VkLineRasterizationMode" "VK_LINE_RASTERIZATION_MODE_BRESENHAM"
+pattern LINE_RASTERIZATION_MODE_BRESENHAM = LineRasterizationMode 2
+
+-- No documentation found for Nested "VkLineRasterizationMode" "VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH"
+pattern LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH = LineRasterizationMode 3
+
+{-# COMPLETE
+  LINE_RASTERIZATION_MODE_DEFAULT
+  , LINE_RASTERIZATION_MODE_RECTANGULAR
+  , LINE_RASTERIZATION_MODE_BRESENHAM
+  , LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH ::
+    LineRasterizationMode
+  #-}
+
+conNameLineRasterizationMode :: String
+conNameLineRasterizationMode = "LineRasterizationMode"
+
+enumPrefixLineRasterizationMode :: String
+enumPrefixLineRasterizationMode = "LINE_RASTERIZATION_MODE_"
+
+showTableLineRasterizationMode :: [(LineRasterizationMode, String)]
+showTableLineRasterizationMode =
+  [ (LINE_RASTERIZATION_MODE_DEFAULT, "DEFAULT")
+  ,
+    ( LINE_RASTERIZATION_MODE_RECTANGULAR
+    , "RECTANGULAR"
+    )
+  ,
+    ( LINE_RASTERIZATION_MODE_BRESENHAM
+    , "BRESENHAM"
+    )
+  ,
+    ( LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH
+    , "RECTANGULAR_SMOOTH"
+    )
+  ]
+
+instance Show LineRasterizationMode where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixLineRasterizationMode
+      showTableLineRasterizationMode
+      conNameLineRasterizationMode
+      (\(LineRasterizationMode x) -> x)
+      (showsPrec 11)
+
+instance Read LineRasterizationMode where
+  readPrec =
+    enumReadPrec
+      enumPrefixLineRasterizationMode
+      showTableLineRasterizationMode
+      conNameLineRasterizationMode
+      LineRasterizationMode
diff --git a/src/Vulkan/Core14/Enums/LineRasterizationMode.hs-boot b/src/Vulkan/Core14/Enums/LineRasterizationMode.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core14/Enums/LineRasterizationMode.hs-boot
@@ -0,0 +1,8 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "LineRasterizationMode"
+module Vulkan.Core14.Enums.LineRasterizationMode  (LineRasterizationMode) where
+
+
+
+data LineRasterizationMode
+
diff --git a/src/Vulkan/Core14/Enums/MemoryUnmapFlagBits.hs b/src/Vulkan/Core14/Enums/MemoryUnmapFlagBits.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core14/Enums/MemoryUnmapFlagBits.hs
@@ -0,0 +1,79 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "MemoryUnmapFlagBits"
+module Vulkan.Core14.Enums.MemoryUnmapFlagBits  ( MemoryUnmapFlags
+                                                , MemoryUnmapFlagBits( MEMORY_UNMAP_RESERVE_BIT_EXT
+                                                                     , ..
+                                                                     )
+                                                ) where
+
+import Data.Bits (Bits)
+import Data.Bits (FiniteBits)
+import Vulkan.Internal.Utils (enumReadPrec)
+import Vulkan.Internal.Utils (enumShowsPrec)
+import GHC.Show (showString)
+import Numeric (showHex)
+import Vulkan.Zero (Zero)
+import Foreign.Storable (Storable)
+import GHC.Read (Read(readPrec))
+import GHC.Show (Show(showsPrec))
+import Vulkan.Core10.FundamentalTypes (Flags)
+type MemoryUnmapFlags = MemoryUnmapFlagBits
+
+-- | VkMemoryUnmapFlagBits - Bitmask specifying additional parameters of a
+-- memory unmap
+--
+-- = Description
+--
+-- -   'MEMORY_UNMAP_RESERVE_BIT_EXT' requests that virtual address range
+--     currently occupied by the memory map remain reserved after the
+--     'Vulkan.Core14.Promoted_From_VK_KHR_map_memory2.unmapMemory2' call
+--     completes. Future system memory map operations or calls to
+--     'Vulkan.Core10.Memory.mapMemory' or
+--     'Vulkan.Core14.Promoted_From_VK_KHR_map_memory2.mapMemory2' will not
+--     return addresses in that range unless the range has since been
+--     unreserved by the client or the mapping is explicitly placed in that
+--     range by calling
+--     'Vulkan.Core14.Promoted_From_VK_KHR_map_memory2.mapMemory2' with
+--     'Vulkan.Core10.Enums.MemoryMapFlagBits.MEMORY_MAP_PLACED_BIT_EXT',
+--     or doing the system memory map equivalent. When
+--     'MEMORY_UNMAP_RESERVE_BIT_EXT' is set, the memory unmap operation
+--     /may/ fail, in which case the memory object will remain host mapped
+--     and 'Vulkan.Core14.Promoted_From_VK_KHR_map_memory2.unmapMemory2'
+--     will return 'Vulkan.Core10.Enums.Result.ERROR_MEMORY_MAP_FAILED'.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_map_memory2 VK_KHR_map_memory2>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'MemoryUnmapFlags'
+newtype MemoryUnmapFlagBits = MemoryUnmapFlagBits Flags
+  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
+
+-- No documentation found for Nested "VkMemoryUnmapFlagBits" "VK_MEMORY_UNMAP_RESERVE_BIT_EXT"
+pattern MEMORY_UNMAP_RESERVE_BIT_EXT = MemoryUnmapFlagBits 0x00000001
+
+conNameMemoryUnmapFlagBits :: String
+conNameMemoryUnmapFlagBits = "MemoryUnmapFlagBits"
+
+enumPrefixMemoryUnmapFlagBits :: String
+enumPrefixMemoryUnmapFlagBits = "MEMORY_UNMAP_RESERVE_BIT_EXT"
+
+showTableMemoryUnmapFlagBits :: [(MemoryUnmapFlagBits, String)]
+showTableMemoryUnmapFlagBits = [(MEMORY_UNMAP_RESERVE_BIT_EXT, "")]
+
+instance Show MemoryUnmapFlagBits where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixMemoryUnmapFlagBits
+      showTableMemoryUnmapFlagBits
+      conNameMemoryUnmapFlagBits
+      (\(MemoryUnmapFlagBits x) -> x)
+      (\x -> showString "0x" . showHex x)
+
+instance Read MemoryUnmapFlagBits where
+  readPrec =
+    enumReadPrec
+      enumPrefixMemoryUnmapFlagBits
+      showTableMemoryUnmapFlagBits
+      conNameMemoryUnmapFlagBits
+      MemoryUnmapFlagBits
diff --git a/src/Vulkan/Core14/Enums/MemoryUnmapFlagBits.hs-boot b/src/Vulkan/Core14/Enums/MemoryUnmapFlagBits.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core14/Enums/MemoryUnmapFlagBits.hs-boot
@@ -0,0 +1,12 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "MemoryUnmapFlagBits"
+module Vulkan.Core14.Enums.MemoryUnmapFlagBits  ( MemoryUnmapFlags
+                                                , MemoryUnmapFlagBits
+                                                ) where
+
+
+
+type MemoryUnmapFlags = MemoryUnmapFlagBits
+
+data MemoryUnmapFlagBits
+
diff --git a/src/Vulkan/Core14/Enums/PipelineCreateFlags2.hs b/src/Vulkan/Core14/Enums/PipelineCreateFlags2.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core14/Enums/PipelineCreateFlags2.hs
@@ -0,0 +1,651 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "PipelineCreateFlags2"
+module Vulkan.Core14.Enums.PipelineCreateFlags2  ( pattern PIPELINE_CREATE_2_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT
+                                                 , PipelineCreateFlags2
+                                                 , PipelineCreateFlagBits2( PIPELINE_CREATE_2_DISABLE_OPTIMIZATION_BIT
+                                                                          , PIPELINE_CREATE_2_ALLOW_DERIVATIVES_BIT
+                                                                          , PIPELINE_CREATE_2_DERIVATIVE_BIT
+                                                                          , PIPELINE_CREATE_2_VIEW_INDEX_FROM_DEVICE_INDEX_BIT
+                                                                          , PIPELINE_CREATE_2_DISPATCH_BASE_BIT
+                                                                          , PIPELINE_CREATE_2_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT
+                                                                          , PIPELINE_CREATE_2_EARLY_RETURN_ON_FAILURE_BIT
+                                                                          , PIPELINE_CREATE_2_NO_PROTECTED_ACCESS_BIT
+                                                                          , PIPELINE_CREATE_2_PROTECTED_ACCESS_ONLY_BIT
+                                                                          , PIPELINE_CREATE_2_64_BIT_INDEXING_BIT_EXT
+                                                                          , PIPELINE_CREATE_2_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_KHR
+                                                                          , PIPELINE_CREATE_2_RAY_TRACING_OPACITY_MICROMAP_BIT_KHR
+                                                                          , PIPELINE_CREATE_2_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE
+                                                                          , PIPELINE_CREATE_2_INSTRUMENT_SHADERS_BIT_ARM
+                                                                          , PIPELINE_CREATE_2_DISALLOW_OPACITY_MICROMAP_BIT_ARM
+                                                                          , PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXT
+                                                                          , PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR
+                                                                          , PIPELINE_CREATE_2_DESCRIPTOR_BUFFER_BIT_EXT
+                                                                          , PIPELINE_CREATE_2_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV
+                                                                          , PIPELINE_CREATE_2_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT
+                                                                          , PIPELINE_CREATE_2_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT
+                                                                          , PIPELINE_CREATE_2_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT
+                                                                          , PIPELINE_CREATE_2_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
+                                                                          , PIPELINE_CREATE_2_RAY_TRACING_ALLOW_MOTION_BIT_NV
+                                                                          , PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_NV
+                                                                          , PIPELINE_CREATE_2_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR
+                                                                          , PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR
+                                                                          , PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR
+                                                                          , PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR
+                                                                          , PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR
+                                                                          , PIPELINE_CREATE_2_RAY_TRACING_SKIP_AABBS_BIT_KHR
+                                                                          , PIPELINE_CREATE_2_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR
+                                                                          , PIPELINE_CREATE_2_LIBRARY_BIT_KHR
+                                                                          , PIPELINE_CREATE_2_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT
+                                                                          , PIPELINE_CREATE_2_LINK_TIME_OPTIMIZATION_BIT_EXT
+                                                                          , PIPELINE_CREATE_2_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR
+                                                                          , PIPELINE_CREATE_2_CAPTURE_STATISTICS_BIT_KHR
+                                                                          , PIPELINE_CREATE_2_DEFER_COMPILE_BIT_NV
+                                                                          , PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT
+                                                                          , PIPELINE_CREATE_2_RAY_TRACING_ALLOW_SPHERES_AND_LINEAR_SWEPT_SPHERES_BIT_NV
+                                                                          , PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT
+                                                                          , PIPELINE_CREATE_2_EXECUTION_GRAPH_BIT_AMDX
+                                                                          , ..
+                                                                          )
+                                                 ) where
+
+import Data.Bits (Bits)
+import Data.Bits (FiniteBits)
+import Vulkan.Internal.Utils (enumReadPrec)
+import Vulkan.Internal.Utils (enumShowsPrec)
+import GHC.Show (showString)
+import Numeric (showHex)
+import Vulkan.Zero (Zero)
+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_CREATE_2_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT"
+pattern PIPELINE_CREATE_2_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT = PIPELINE_CREATE_2_RAY_TRACING_OPACITY_MICROMAP_BIT_KHR
+
+
+type PipelineCreateFlags2 = PipelineCreateFlagBits2
+
+-- | VkPipelineCreateFlagBits2 - Bitmask controlling how a pipeline is
+-- created
+--
+-- = Description
+--
+-- -   'PIPELINE_CREATE_2_DISABLE_OPTIMIZATION_BIT' specifies that the
+--     created pipeline will not be optimized. Using this flag /may/ reduce
+--     the time taken to create the pipeline.
+--
+-- -   'PIPELINE_CREATE_2_ALLOW_DERIVATIVES_BIT' specifies that the
+--     pipeline to be created is allowed to be the parent of a pipeline
+--     that will be created in a subsequent pipeline creation call.
+--
+-- -   'PIPELINE_CREATE_2_DERIVATIVE_BIT' specifies that the pipeline to be
+--     created will be a child of a previously created parent pipeline.
+--
+-- -   'PIPELINE_CREATE_2_VIEW_INDEX_FROM_DEVICE_INDEX_BIT' specifies that
+--     any shader input variables decorated as @ViewIndex@ will be assigned
+--     values as if they were decorated as @DeviceIndex@.
+--
+-- -   'PIPELINE_CREATE_2_DISPATCH_BASE_BIT' specifies that a compute
+--     pipeline /can/ be used with
+--     'Vulkan.Core11.Promoted_From_VK_KHR_device_group.cmdDispatchBase'
+--     with a non-zero base workgroup.
+--
+-- -   'PIPELINE_CREATE_2_DEFER_COMPILE_BIT_NV' specifies that a pipeline
+--     is created with all shaders in the deferred state. Before using the
+--     pipeline the application /must/ call
+--     'Vulkan.Extensions.VK_NV_ray_tracing.compileDeferredNV' exactly once
+--     on each shader in the pipeline before using the pipeline.
+--
+-- -   'PIPELINE_CREATE_2_CAPTURE_STATISTICS_BIT_KHR' specifies that the
+--     shader compiler should capture statistics for the pipeline
+--     executables produced by the compile process which /can/ later be
+--     retrieved by calling
+--     'Vulkan.Extensions.VK_KHR_pipeline_executable_properties.getPipelineExecutableStatisticsKHR'.
+--     Enabling this flag /must/ not affect the final compiled pipeline but
+--     /may/ disable pipeline caching or otherwise affect pipeline creation
+--     time.
+--
+-- -   'PIPELINE_CREATE_2_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR'
+--     specifies that the shader compiler should capture the internal
+--     representations of pipeline executables produced by the compile
+--     process which /can/ later be retrieved by calling
+--     'Vulkan.Extensions.VK_KHR_pipeline_executable_properties.getPipelineExecutableInternalRepresentationsKHR'.
+--     Enabling this flag /must/ not affect the final compiled pipeline but
+--     /may/ disable pipeline caching or otherwise affect pipeline creation
+--     time. When capturing IR from pipelines created with pipeline
+--     libraries, there is no guarantee that IR from libraries /can/ be
+--     retrieved from the linked pipeline. Applications /should/ retrieve
+--     IR from each library, and any linked pipelines, separately.
+--
+-- -   'PIPELINE_CREATE_2_LIBRARY_BIT_KHR' specifies that the pipeline
+--     /cannot/ be used directly, and instead defines a /pipeline library/
+--     that /can/ be combined with other pipelines using the
+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'
+--     structure. This is available in ray tracing and graphics pipelines.
+--
+-- -   'PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR'
+--     specifies that an any-hit shader will always be present when an
+--     any-hit shader would be executed. A NULL any-hit shader is an
+--     any-hit shader which is effectively
+--     'Vulkan.Core10.APIConstants.SHADER_UNUSED_KHR', such as from a
+--     shader group consisting entirely of zeros.
+--
+-- -   'PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR'
+--     specifies that a closest hit shader will always be present when a
+--     closest hit shader would be executed. A NULL closest hit shader is a
+--     closest hit shader which is effectively
+--     'Vulkan.Core10.APIConstants.SHADER_UNUSED_KHR', such as from a
+--     shader group consisting entirely of zeros.
+--
+-- -   'PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR'
+--     specifies that a miss shader will always be present when a miss
+--     shader would be executed. A NULL miss shader is a miss shader which
+--     is effectively 'Vulkan.Core10.APIConstants.SHADER_UNUSED_KHR', such
+--     as from a shader group consisting entirely of zeros.
+--
+-- -   'PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR'
+--     specifies that an intersection shader will always be present when an
+--     intersection shader would be executed. A NULL intersection shader is
+--     an intersection shader which is effectively
+--     'Vulkan.Core10.APIConstants.SHADER_UNUSED_KHR', such as from a
+--     shader group consisting entirely of zeros.
+--
+-- -   'PIPELINE_CREATE_2_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR' specifies
+--     that all built-in primitives including triangles, spheres, and LSS
+--     primitives will be skipped during traversal using
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#glossary-pipeline-trace-ray pipeline trace ray>
+--     instructions.
+--
+-- -   'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.PIPELINE_CREATE_2_RAY_TRACING_SKIP_BUILT_IN_PRIMITIVES_BIT_KHR'
+--     is an alias for
+--     'PIPELINE_CREATE_2_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR'.
+--
+-- -   'PIPELINE_CREATE_2_RAY_TRACING_SKIP_AABBS_BIT_KHR' specifies that
+--     AABB primitives will be skipped during traversal using
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#glossary-pipeline-trace-ray pipeline trace ray>
+--     instructions.
+--
+-- -   'PIPELINE_CREATE_2_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR'
+--     specifies that the shader group handles /can/ be saved and reused on
+--     a subsequent run (e.g. for trace capture and replay).
+--
+-- -   'PIPELINE_CREATE_2_RAY_TRACING_ALLOW_SPHERES_AND_LINEAR_SWEPT_SPHERES_BIT_NV'
+--     specifies that the pipeline is allowed to use spheres or linear
+--     swept spheres as a geometry type in the acceleration structures.
+--     Using this flag /may/ affect performance.
+--
+-- -   'PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_NV' specifies that the
+--     pipeline can be used in combination with
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#device-generated-commands>.
+--
+-- -   'PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXT' specifies that the
+--     pipeline /can/ be used in a
+--     'Vulkan.Extensions.Handles.IndirectExecutionSetEXT'.
+--
+-- -   'PIPELINE_CREATE_2_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
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE'.
+--
+-- -   When creating multiple pipelines,
+--     'PIPELINE_CREATE_2_EARLY_RETURN_ON_FAILURE_BIT' specifies that
+--     control will be returned to the application if any individual
+--     pipeline returns a result which is not
+--     'Vulkan.Core10.Enums.Result.SUCCESS' rather than continuing to
+--     create additional pipelines.
+--
+-- -   'PIPELINE_CREATE_2_RAY_TRACING_ALLOW_MOTION_BIT_NV' specifies that
+--     the pipeline is allowed to use @OpTraceRayMotionNV@.
+--
+-- -   'PIPELINE_CREATE_2_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
+--     specifies that the pipeline will be used with a fragment shading
+--     rate attachment.
+--
+-- -   'PIPELINE_CREATE_2_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT'
+--     specifies that the pipeline will be used with a fragment density map
+--     attachment.
+--
+-- -   'PIPELINE_CREATE_2_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE' specifies
+--     that the pipeline /can/ be used with layered fragment density maps.
+--
+-- -   'PIPELINE_CREATE_2_LINK_TIME_OPTIMIZATION_BIT_EXT' specifies that
+--     pipeline libraries being linked into this library /should/ have link
+--     time optimizations applied. If this bit is omitted, implementations
+--     /should/ instead perform linking as rapidly as possible.
+--
+-- -   'PIPELINE_CREATE_2_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT'
+--     specifies that pipeline libraries should retain any information
+--     necessary to later perform an optimal link with
+--     'PIPELINE_CREATE_2_LINK_TIME_OPTIMIZATION_BIT_EXT'.
+--
+-- -   'PIPELINE_CREATE_2_DESCRIPTOR_BUFFER_BIT_EXT' specifies that a
+--     pipeline will be used with
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptorbuffers descriptor buffers>,
+--     rather than
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors descriptor sets>.
+--
+-- -   'PIPELINE_CREATE_2_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT' specifies
+--     that the pipeline /may/ be used with an attachment
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     including color attachments.
+--
+-- -   'PIPELINE_CREATE_2_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT'
+--     specifies that the pipeline /may/ be used with an attachment
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     including depth-stencil attachments.
+--
+-- -   'PIPELINE_CREATE_2_RAY_TRACING_OPACITY_MICROMAP_BIT_KHR' specifies
+--     that the ray tracing pipeline /can/ be used with acceleration
+--     structures which reference an opacity micromap array. This flag has
+--     no effect on using opacity micromaps with ray queries.
+--
+-- -   'PIPELINE_CREATE_2_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV'
+--     specifies that the ray tracing pipeline /can/ be used with
+--     acceleration structures which reference a displacement micromap
+--     array.
+--
+-- -   'PIPELINE_CREATE_2_NO_PROTECTED_ACCESS_BIT' specifies that the
+--     pipeline /must/ not be bound to a protected command buffer.
+--
+-- -   'PIPELINE_CREATE_2_PROTECTED_ACCESS_ONLY_BIT' specifies that the
+--     pipeline /must/ not be bound to an unprotected command buffer.
+--
+-- -   'PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR' specifies that
+--     'Vulkan.Extensions.Handles.PipelineBinaryKHR' objects /can/ be
+--     created from the pipeline. If
+--     'PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR' is used, implementations
+--     /should/ not store pipeline data to an internal cache, if such a
+--     cache exists as stated by
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-pipelineBinaryInternalCache pipelineBinaryInternalCache>.
+--     If
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-pipelineBinaryPrefersInternalCache pipelineBinaryPrefersInternalCache>
+--     is 'Vulkan.Core10.FundamentalTypes.TRUE', applications /should/ not
+--     use 'PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR'.
+--
+-- -   'PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT' specifies that
+--     the pipeline will be used in a render pass that is begun with
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT'.
+--
+-- -   'PIPELINE_CREATE_2_EXECUTION_GRAPH_BIT_AMDX' specifies that the
+--     pipeline will be used in an
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#executiongraphs execution graph>
+--
+-- -   'PIPELINE_CREATE_2_DISALLOW_OPACITY_MICROMAP_BIT_ARM' specifies that
+--     the pipeline /must/ not be used with acceleration structures which
+--     reference an opacity micromap.
+--
+-- -   'PIPELINE_CREATE_2_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_KHR'
+--     specifies that the pipeline /cannot/ be used with acceleration
+--     structures which are built with geometry that have an index buffer
+--     including both special indices and indices pointing to an associated
+--     micromap array. Geometry which has an index buffer using only
+--     special indices without an associated micromap array /can/ be used
+--     with this flag.
+--
+-- -   'PIPELINE_CREATE_2_64_BIT_INDEXING_BIT_EXT' specifies that the
+--     pipeline enables
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-64bindexing 64-bit indexing>.
+--
+-- -   'PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT' specifies that the
+--     pipeline will use descriptor heap mappings instead of descriptor set
+--     layouts.
+--
+-- -   'PIPELINE_CREATE_2_INSTRUMENT_SHADERS_BIT_ARM' specifies that the
+--     shaders in the pipeline will be instrumented.
+--
+-- It is valid to set both 'PIPELINE_CREATE_2_ALLOW_DERIVATIVES_BIT' and
+-- 'PIPELINE_CREATE_2_DERIVATIVE_BIT'. This allows a pipeline to be both a
+-- parent and possibly a child in a pipeline hierarchy. See
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-pipeline-derivatives Pipeline Derivatives>
+-- for more information.
+--
+-- When an implementation is looking up a pipeline in a
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-cache pipeline cache>,
+-- if that pipeline is being created using linked libraries,
+-- implementations /should/ always return an equivalent pipeline created
+-- with 'PIPELINE_CREATE_2_LINK_TIME_OPTIMIZATION_BIT_EXT' if available,
+-- whether or not that bit was specified.
+--
+-- Using 'PIPELINE_CREATE_2_LINK_TIME_OPTIMIZATION_BIT_EXT' (or not) when
+-- linking pipeline libraries is intended as a performance tradeoff between
+-- host and device. If the bit is omitted, linking should be faster and
+-- produce a pipeline more rapidly, but performance of the pipeline on the
+-- target device may be reduced. If the bit is included, linking may be
+-- slower but should produce a pipeline with device performance comparable
+-- to a monolithically created pipeline. Using both options can allow
+-- latency-sensitive applications to generate a suboptimal but usable
+-- pipeline quickly, and then perform an optimal link in the background,
+-- substituting the result for the suboptimally linked pipeline as soon as
+-- it is available.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance5 VK_KHR_maintenance5>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'PipelineCreateFlags2'
+newtype PipelineCreateFlagBits2 = PipelineCreateFlagBits2 Flags64
+  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
+
+-- No documentation found for Nested "VkPipelineCreateFlagBits2" "VK_PIPELINE_CREATE_2_DISABLE_OPTIMIZATION_BIT"
+pattern PIPELINE_CREATE_2_DISABLE_OPTIMIZATION_BIT = PipelineCreateFlagBits2 0x0000000000000001
+
+-- No documentation found for Nested "VkPipelineCreateFlagBits2" "VK_PIPELINE_CREATE_2_ALLOW_DERIVATIVES_BIT"
+pattern PIPELINE_CREATE_2_ALLOW_DERIVATIVES_BIT = PipelineCreateFlagBits2 0x0000000000000002
+
+-- No documentation found for Nested "VkPipelineCreateFlagBits2" "VK_PIPELINE_CREATE_2_DERIVATIVE_BIT"
+pattern PIPELINE_CREATE_2_DERIVATIVE_BIT = PipelineCreateFlagBits2 0x0000000000000004
+
+-- No documentation found for Nested "VkPipelineCreateFlagBits2" "VK_PIPELINE_CREATE_2_VIEW_INDEX_FROM_DEVICE_INDEX_BIT"
+pattern PIPELINE_CREATE_2_VIEW_INDEX_FROM_DEVICE_INDEX_BIT = PipelineCreateFlagBits2 0x0000000000000008
+
+-- No documentation found for Nested "VkPipelineCreateFlagBits2" "VK_PIPELINE_CREATE_2_DISPATCH_BASE_BIT"
+pattern PIPELINE_CREATE_2_DISPATCH_BASE_BIT = PipelineCreateFlagBits2 0x0000000000000010
+
+-- No documentation found for Nested "VkPipelineCreateFlagBits2" "VK_PIPELINE_CREATE_2_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT"
+pattern PIPELINE_CREATE_2_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT = PipelineCreateFlagBits2 0x0000000000000100
+
+-- No documentation found for Nested "VkPipelineCreateFlagBits2" "VK_PIPELINE_CREATE_2_EARLY_RETURN_ON_FAILURE_BIT"
+pattern PIPELINE_CREATE_2_EARLY_RETURN_ON_FAILURE_BIT = PipelineCreateFlagBits2 0x0000000000000200
+
+-- No documentation found for Nested "VkPipelineCreateFlagBits2" "VK_PIPELINE_CREATE_2_NO_PROTECTED_ACCESS_BIT"
+pattern PIPELINE_CREATE_2_NO_PROTECTED_ACCESS_BIT = PipelineCreateFlagBits2 0x0000000008000000
+
+-- No documentation found for Nested "VkPipelineCreateFlagBits2" "VK_PIPELINE_CREATE_2_PROTECTED_ACCESS_ONLY_BIT"
+pattern PIPELINE_CREATE_2_PROTECTED_ACCESS_ONLY_BIT = PipelineCreateFlagBits2 0x0000000040000000
+
+-- No documentation found for Nested "VkPipelineCreateFlagBits2" "VK_PIPELINE_CREATE_2_64_BIT_INDEXING_BIT_EXT"
+pattern PIPELINE_CREATE_2_64_BIT_INDEXING_BIT_EXT = PipelineCreateFlagBits2 0x0000080000000000
+
+-- No documentation found for Nested "VkPipelineCreateFlagBits2" "VK_PIPELINE_CREATE_2_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_KHR"
+pattern PIPELINE_CREATE_2_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_KHR = PipelineCreateFlagBits2 0x0000020000000000
+
+-- No documentation found for Nested "VkPipelineCreateFlagBits2" "VK_PIPELINE_CREATE_2_RAY_TRACING_OPACITY_MICROMAP_BIT_KHR"
+pattern PIPELINE_CREATE_2_RAY_TRACING_OPACITY_MICROMAP_BIT_KHR = PipelineCreateFlagBits2 0x0000000001000000
+
+-- No documentation found for Nested "VkPipelineCreateFlagBits2" "VK_PIPELINE_CREATE_2_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE"
+pattern PIPELINE_CREATE_2_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE = PipelineCreateFlagBits2 0x0000010000000000
+
+-- No documentation found for Nested "VkPipelineCreateFlagBits2" "VK_PIPELINE_CREATE_2_INSTRUMENT_SHADERS_BIT_ARM"
+pattern PIPELINE_CREATE_2_INSTRUMENT_SHADERS_BIT_ARM = PipelineCreateFlagBits2 0x0000008000000000
+
+-- No documentation found for Nested "VkPipelineCreateFlagBits2" "VK_PIPELINE_CREATE_2_DISALLOW_OPACITY_MICROMAP_BIT_ARM"
+pattern PIPELINE_CREATE_2_DISALLOW_OPACITY_MICROMAP_BIT_ARM = PipelineCreateFlagBits2 0x0000002000000000
+
+-- No documentation found for Nested "VkPipelineCreateFlagBits2" "VK_PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXT"
+pattern PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXT = PipelineCreateFlagBits2 0x0000004000000000
+
+-- No documentation found for Nested "VkPipelineCreateFlagBits2" "VK_PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR"
+pattern PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR = PipelineCreateFlagBits2 0x0000000080000000
+
+-- No documentation found for Nested "VkPipelineCreateFlagBits2" "VK_PIPELINE_CREATE_2_DESCRIPTOR_BUFFER_BIT_EXT"
+pattern PIPELINE_CREATE_2_DESCRIPTOR_BUFFER_BIT_EXT = PipelineCreateFlagBits2 0x0000000020000000
+
+-- No documentation found for Nested "VkPipelineCreateFlagBits2" "VK_PIPELINE_CREATE_2_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV"
+pattern PIPELINE_CREATE_2_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV = PipelineCreateFlagBits2 0x0000000010000000
+
+-- No documentation found for Nested "VkPipelineCreateFlagBits2" "VK_PIPELINE_CREATE_2_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT"
+pattern PIPELINE_CREATE_2_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = PipelineCreateFlagBits2 0x0000000004000000
+
+-- No documentation found for Nested "VkPipelineCreateFlagBits2" "VK_PIPELINE_CREATE_2_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT"
+pattern PIPELINE_CREATE_2_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = PipelineCreateFlagBits2 0x0000000002000000
+
+-- No documentation found for Nested "VkPipelineCreateFlagBits2" "VK_PIPELINE_CREATE_2_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT"
+pattern PIPELINE_CREATE_2_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = PipelineCreateFlagBits2 0x0000000000400000
+
+-- No documentation found for Nested "VkPipelineCreateFlagBits2" "VK_PIPELINE_CREATE_2_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"
+pattern PIPELINE_CREATE_2_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = PipelineCreateFlagBits2 0x0000000000200000
+
+-- No documentation found for Nested "VkPipelineCreateFlagBits2" "VK_PIPELINE_CREATE_2_RAY_TRACING_ALLOW_MOTION_BIT_NV"
+pattern PIPELINE_CREATE_2_RAY_TRACING_ALLOW_MOTION_BIT_NV = PipelineCreateFlagBits2 0x0000000000100000
+
+-- No documentation found for Nested "VkPipelineCreateFlagBits2" "VK_PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_NV"
+pattern PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_NV = PipelineCreateFlagBits2 0x0000000000040000
+
+-- No documentation found for Nested "VkPipelineCreateFlagBits2" "VK_PIPELINE_CREATE_2_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR"
+pattern PIPELINE_CREATE_2_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR = PipelineCreateFlagBits2 0x0000000000080000
+
+-- No documentation found for Nested "VkPipelineCreateFlagBits2" "VK_PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR"
+pattern PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR = PipelineCreateFlagBits2 0x0000000000020000
+
+-- No documentation found for Nested "VkPipelineCreateFlagBits2" "VK_PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR"
+pattern PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR = PipelineCreateFlagBits2 0x0000000000010000
+
+-- No documentation found for Nested "VkPipelineCreateFlagBits2" "VK_PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR"
+pattern PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR = PipelineCreateFlagBits2 0x0000000000008000
+
+-- No documentation found for Nested "VkPipelineCreateFlagBits2" "VK_PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR"
+pattern PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR = PipelineCreateFlagBits2 0x0000000000004000
+
+-- No documentation found for Nested "VkPipelineCreateFlagBits2" "VK_PIPELINE_CREATE_2_RAY_TRACING_SKIP_AABBS_BIT_KHR"
+pattern PIPELINE_CREATE_2_RAY_TRACING_SKIP_AABBS_BIT_KHR = PipelineCreateFlagBits2 0x0000000000002000
+
+-- No documentation found for Nested "VkPipelineCreateFlagBits2" "VK_PIPELINE_CREATE_2_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR"
+pattern PIPELINE_CREATE_2_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR = PipelineCreateFlagBits2 0x0000000000001000
+
+-- No documentation found for Nested "VkPipelineCreateFlagBits2" "VK_PIPELINE_CREATE_2_LIBRARY_BIT_KHR"
+pattern PIPELINE_CREATE_2_LIBRARY_BIT_KHR = PipelineCreateFlagBits2 0x0000000000000800
+
+-- No documentation found for Nested "VkPipelineCreateFlagBits2" "VK_PIPELINE_CREATE_2_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT"
+pattern PIPELINE_CREATE_2_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT = PipelineCreateFlagBits2 0x0000000000800000
+
+-- No documentation found for Nested "VkPipelineCreateFlagBits2" "VK_PIPELINE_CREATE_2_LINK_TIME_OPTIMIZATION_BIT_EXT"
+pattern PIPELINE_CREATE_2_LINK_TIME_OPTIMIZATION_BIT_EXT = PipelineCreateFlagBits2 0x0000000000000400
+
+-- No documentation found for Nested "VkPipelineCreateFlagBits2" "VK_PIPELINE_CREATE_2_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR"
+pattern PIPELINE_CREATE_2_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR = PipelineCreateFlagBits2 0x0000000000000080
+
+-- No documentation found for Nested "VkPipelineCreateFlagBits2" "VK_PIPELINE_CREATE_2_CAPTURE_STATISTICS_BIT_KHR"
+pattern PIPELINE_CREATE_2_CAPTURE_STATISTICS_BIT_KHR = PipelineCreateFlagBits2 0x0000000000000040
+
+-- No documentation found for Nested "VkPipelineCreateFlagBits2" "VK_PIPELINE_CREATE_2_DEFER_COMPILE_BIT_NV"
+pattern PIPELINE_CREATE_2_DEFER_COMPILE_BIT_NV = PipelineCreateFlagBits2 0x0000000000000020
+
+-- No documentation found for Nested "VkPipelineCreateFlagBits2" "VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT"
+pattern PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT = PipelineCreateFlagBits2 0x0000000400000000
+
+-- No documentation found for Nested "VkPipelineCreateFlagBits2" "VK_PIPELINE_CREATE_2_RAY_TRACING_ALLOW_SPHERES_AND_LINEAR_SWEPT_SPHERES_BIT_NV"
+pattern PIPELINE_CREATE_2_RAY_TRACING_ALLOW_SPHERES_AND_LINEAR_SWEPT_SPHERES_BIT_NV = PipelineCreateFlagBits2 0x0000000200000000
+
+-- No documentation found for Nested "VkPipelineCreateFlagBits2" "VK_PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT"
+pattern PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT = PipelineCreateFlagBits2 0x0000001000000000
+
+-- No documentation found for Nested "VkPipelineCreateFlagBits2" "VK_PIPELINE_CREATE_2_EXECUTION_GRAPH_BIT_AMDX"
+pattern PIPELINE_CREATE_2_EXECUTION_GRAPH_BIT_AMDX = PipelineCreateFlagBits2 0x0000000100000000
+
+conNamePipelineCreateFlagBits2 :: String
+conNamePipelineCreateFlagBits2 = "PipelineCreateFlagBits2"
+
+enumPrefixPipelineCreateFlagBits2 :: String
+enumPrefixPipelineCreateFlagBits2 = "PIPELINE_CREATE_2_"
+
+showTablePipelineCreateFlagBits2 :: [(PipelineCreateFlagBits2, String)]
+showTablePipelineCreateFlagBits2 =
+  [
+    ( PIPELINE_CREATE_2_DISABLE_OPTIMIZATION_BIT
+    , "DISABLE_OPTIMIZATION_BIT"
+    )
+  ,
+    ( PIPELINE_CREATE_2_ALLOW_DERIVATIVES_BIT
+    , "ALLOW_DERIVATIVES_BIT"
+    )
+  ,
+    ( PIPELINE_CREATE_2_DERIVATIVE_BIT
+    , "DERIVATIVE_BIT"
+    )
+  ,
+    ( PIPELINE_CREATE_2_VIEW_INDEX_FROM_DEVICE_INDEX_BIT
+    , "VIEW_INDEX_FROM_DEVICE_INDEX_BIT"
+    )
+  ,
+    ( PIPELINE_CREATE_2_DISPATCH_BASE_BIT
+    , "DISPATCH_BASE_BIT"
+    )
+  ,
+    ( PIPELINE_CREATE_2_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT
+    , "FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT"
+    )
+  ,
+    ( PIPELINE_CREATE_2_EARLY_RETURN_ON_FAILURE_BIT
+    , "EARLY_RETURN_ON_FAILURE_BIT"
+    )
+  ,
+    ( PIPELINE_CREATE_2_NO_PROTECTED_ACCESS_BIT
+    , "NO_PROTECTED_ACCESS_BIT"
+    )
+  ,
+    ( PIPELINE_CREATE_2_PROTECTED_ACCESS_ONLY_BIT
+    , "PROTECTED_ACCESS_ONLY_BIT"
+    )
+  ,
+    ( PIPELINE_CREATE_2_64_BIT_INDEXING_BIT_EXT
+    , "64_BIT_INDEXING_BIT_EXT"
+    )
+  ,
+    ( PIPELINE_CREATE_2_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_KHR
+    , "OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_KHR"
+    )
+  ,
+    ( PIPELINE_CREATE_2_RAY_TRACING_OPACITY_MICROMAP_BIT_KHR
+    , "RAY_TRACING_OPACITY_MICROMAP_BIT_KHR"
+    )
+  ,
+    ( PIPELINE_CREATE_2_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE
+    , "PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE"
+    )
+  ,
+    ( PIPELINE_CREATE_2_INSTRUMENT_SHADERS_BIT_ARM
+    , "INSTRUMENT_SHADERS_BIT_ARM"
+    )
+  ,
+    ( PIPELINE_CREATE_2_DISALLOW_OPACITY_MICROMAP_BIT_ARM
+    , "DISALLOW_OPACITY_MICROMAP_BIT_ARM"
+    )
+  ,
+    ( PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXT
+    , "INDIRECT_BINDABLE_BIT_EXT"
+    )
+  ,
+    ( PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR
+    , "CAPTURE_DATA_BIT_KHR"
+    )
+  ,
+    ( PIPELINE_CREATE_2_DESCRIPTOR_BUFFER_BIT_EXT
+    , "DESCRIPTOR_BUFFER_BIT_EXT"
+    )
+  ,
+    ( PIPELINE_CREATE_2_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV
+    , "RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV"
+    )
+  ,
+    ( PIPELINE_CREATE_2_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT
+    , "DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT"
+    )
+  ,
+    ( PIPELINE_CREATE_2_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT
+    , "COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT"
+    )
+  ,
+    ( PIPELINE_CREATE_2_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT
+    , "RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT"
+    )
+  ,
+    ( PIPELINE_CREATE_2_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
+    , "RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"
+    )
+  ,
+    ( PIPELINE_CREATE_2_RAY_TRACING_ALLOW_MOTION_BIT_NV
+    , "RAY_TRACING_ALLOW_MOTION_BIT_NV"
+    )
+  ,
+    ( PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_NV
+    , "INDIRECT_BINDABLE_BIT_NV"
+    )
+  ,
+    ( PIPELINE_CREATE_2_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR
+    , "RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR"
+    )
+  ,
+    ( PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR
+    , "RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR"
+    )
+  ,
+    ( PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR
+    , "RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR"
+    )
+  ,
+    ( PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR
+    , "RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR"
+    )
+  ,
+    ( PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR
+    , "RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR"
+    )
+  ,
+    ( PIPELINE_CREATE_2_RAY_TRACING_SKIP_AABBS_BIT_KHR
+    , "RAY_TRACING_SKIP_AABBS_BIT_KHR"
+    )
+  ,
+    ( PIPELINE_CREATE_2_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR
+    , "RAY_TRACING_SKIP_TRIANGLES_BIT_KHR"
+    )
+  ,
+    ( PIPELINE_CREATE_2_LIBRARY_BIT_KHR
+    , "LIBRARY_BIT_KHR"
+    )
+  ,
+    ( PIPELINE_CREATE_2_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT
+    , "RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT"
+    )
+  ,
+    ( PIPELINE_CREATE_2_LINK_TIME_OPTIMIZATION_BIT_EXT
+    , "LINK_TIME_OPTIMIZATION_BIT_EXT"
+    )
+  ,
+    ( PIPELINE_CREATE_2_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR
+    , "CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR"
+    )
+  ,
+    ( PIPELINE_CREATE_2_CAPTURE_STATISTICS_BIT_KHR
+    , "CAPTURE_STATISTICS_BIT_KHR"
+    )
+  ,
+    ( PIPELINE_CREATE_2_DEFER_COMPILE_BIT_NV
+    , "DEFER_COMPILE_BIT_NV"
+    )
+  ,
+    ( PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT
+    , "ENABLE_LEGACY_DITHERING_BIT_EXT"
+    )
+  ,
+    ( PIPELINE_CREATE_2_RAY_TRACING_ALLOW_SPHERES_AND_LINEAR_SWEPT_SPHERES_BIT_NV
+    , "RAY_TRACING_ALLOW_SPHERES_AND_LINEAR_SWEPT_SPHERES_BIT_NV"
+    )
+  ,
+    ( PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT
+    , "DESCRIPTOR_HEAP_BIT_EXT"
+    )
+  ,
+    ( PIPELINE_CREATE_2_EXECUTION_GRAPH_BIT_AMDX
+    , "EXECUTION_GRAPH_BIT_AMDX"
+    )
+  ]
+
+instance Show PipelineCreateFlagBits2 where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixPipelineCreateFlagBits2
+      showTablePipelineCreateFlagBits2
+      conNamePipelineCreateFlagBits2
+      (\(PipelineCreateFlagBits2 x) -> x)
+      (\x -> showString "0x" . showHex x)
+
+instance Read PipelineCreateFlagBits2 where
+  readPrec =
+    enumReadPrec
+      enumPrefixPipelineCreateFlagBits2
+      showTablePipelineCreateFlagBits2
+      conNamePipelineCreateFlagBits2
+      PipelineCreateFlagBits2
diff --git a/src/Vulkan/Core14/Enums/PipelineCreateFlags2.hs-boot b/src/Vulkan/Core14/Enums/PipelineCreateFlags2.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core14/Enums/PipelineCreateFlags2.hs-boot
@@ -0,0 +1,12 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "PipelineCreateFlags2"
+module Vulkan.Core14.Enums.PipelineCreateFlags2  ( PipelineCreateFlags2
+                                                 , PipelineCreateFlagBits2
+                                                 ) where
+
+
+
+type PipelineCreateFlags2 = PipelineCreateFlagBits2
+
+data PipelineCreateFlagBits2
+
diff --git a/src/Vulkan/Core14/Enums/PipelineRobustnessBufferBehavior.hs b/src/Vulkan/Core14/Enums/PipelineRobustnessBufferBehavior.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core14/Enums/PipelineRobustnessBufferBehavior.hs
@@ -0,0 +1,114 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "PipelineRobustnessBufferBehavior"
+module Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior  (PipelineRobustnessBufferBehavior( PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT
+                                                                                              , PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED
+                                                                                              , PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS
+                                                                                              , PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2
+                                                                                              , ..
+                                                                                              )) where
+
+import Vulkan.Internal.Utils (enumReadPrec)
+import Vulkan.Internal.Utils (enumShowsPrec)
+import GHC.Show (showsPrec)
+import Vulkan.Zero (Zero)
+import Foreign.Storable (Storable)
+import Data.Int (Int32)
+import GHC.Read (Read(readPrec))
+import GHC.Show (Show(showsPrec))
+
+-- | VkPipelineRobustnessBufferBehavior - Enum controlling the robustness of
+-- buffer accesses in a pipeline stage
+--
+-- = Description
+--
+-- -   'PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT' specifies that
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-execution-memory-access-bounds out of bounds>
+--     buffer accesses follow the behavior of robust buffer access features
+--     enabled for the device.
+--
+-- -   'PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED' specifies that buffer
+--     accesses /must/ not be
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-execution-memory-access-bounds out of bounds>.
+--
+-- -   'PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS' specifies
+--     that buffer accesses conform to
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-robust-buffer-access>
+--     guarantees.
+--
+-- -   'PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     specifies that buffer accesses conform to
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-robust-buffer-access2>
+--     guarantees.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_pipeline_robustness VK_EXT_pipeline_robustness>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'Vulkan.Core14.Promoted_From_VK_EXT_pipeline_robustness.PhysicalDevicePipelineRobustnessProperties',
+-- 'Vulkan.Core14.PhysicalDeviceVulkan14Properties',
+-- 'Vulkan.Core14.Promoted_From_VK_EXT_pipeline_robustness.PipelineRobustnessCreateInfo'
+newtype PipelineRobustnessBufferBehavior = PipelineRobustnessBufferBehavior Int32
+  deriving newtype (Eq, Ord, Storable, Zero)
+
+-- No documentation found for Nested "VkPipelineRobustnessBufferBehavior" "VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT"
+pattern PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT = PipelineRobustnessBufferBehavior 0
+
+-- No documentation found for Nested "VkPipelineRobustnessBufferBehavior" "VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED"
+pattern PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED = PipelineRobustnessBufferBehavior 1
+
+-- No documentation found for Nested "VkPipelineRobustnessBufferBehavior" "VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS"
+pattern PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS = PipelineRobustnessBufferBehavior 2
+
+-- No documentation found for Nested "VkPipelineRobustnessBufferBehavior" "VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2"
+pattern PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2 = PipelineRobustnessBufferBehavior 3
+
+{-# COMPLETE
+  PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT
+  , PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED
+  , PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS
+  , PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2 ::
+    PipelineRobustnessBufferBehavior
+  #-}
+
+conNamePipelineRobustnessBufferBehavior :: String
+conNamePipelineRobustnessBufferBehavior = "PipelineRobustnessBufferBehavior"
+
+enumPrefixPipelineRobustnessBufferBehavior :: String
+enumPrefixPipelineRobustnessBufferBehavior = "PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_"
+
+showTablePipelineRobustnessBufferBehavior :: [(PipelineRobustnessBufferBehavior, String)]
+showTablePipelineRobustnessBufferBehavior =
+  [
+    ( PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT
+    , "DEVICE_DEFAULT"
+    )
+  ,
+    ( PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED
+    , "DISABLED"
+    )
+  ,
+    ( PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS
+    , "ROBUST_BUFFER_ACCESS"
+    )
+  ,
+    ( PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2
+    , "ROBUST_BUFFER_ACCESS_2"
+    )
+  ]
+
+instance Show PipelineRobustnessBufferBehavior where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixPipelineRobustnessBufferBehavior
+      showTablePipelineRobustnessBufferBehavior
+      conNamePipelineRobustnessBufferBehavior
+      (\(PipelineRobustnessBufferBehavior x) -> x)
+      (showsPrec 11)
+
+instance Read PipelineRobustnessBufferBehavior where
+  readPrec =
+    enumReadPrec
+      enumPrefixPipelineRobustnessBufferBehavior
+      showTablePipelineRobustnessBufferBehavior
+      conNamePipelineRobustnessBufferBehavior
+      PipelineRobustnessBufferBehavior
diff --git a/src/Vulkan/Core14/Enums/PipelineRobustnessBufferBehavior.hs-boot b/src/Vulkan/Core14/Enums/PipelineRobustnessBufferBehavior.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core14/Enums/PipelineRobustnessBufferBehavior.hs-boot
@@ -0,0 +1,8 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "PipelineRobustnessBufferBehavior"
+module Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior  (PipelineRobustnessBufferBehavior) where
+
+
+
+data PipelineRobustnessBufferBehavior
+
diff --git a/src/Vulkan/Core14/Enums/PipelineRobustnessImageBehavior.hs b/src/Vulkan/Core14/Enums/PipelineRobustnessImageBehavior.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core14/Enums/PipelineRobustnessImageBehavior.hs
@@ -0,0 +1,114 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "PipelineRobustnessImageBehavior"
+module Vulkan.Core14.Enums.PipelineRobustnessImageBehavior  (PipelineRobustnessImageBehavior( PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT
+                                                                                            , PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED
+                                                                                            , PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS
+                                                                                            , PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2
+                                                                                            , ..
+                                                                                            )) where
+
+import Vulkan.Internal.Utils (enumReadPrec)
+import Vulkan.Internal.Utils (enumShowsPrec)
+import GHC.Show (showsPrec)
+import Vulkan.Zero (Zero)
+import Foreign.Storable (Storable)
+import Data.Int (Int32)
+import GHC.Read (Read(readPrec))
+import GHC.Show (Show(showsPrec))
+
+-- | VkPipelineRobustnessImageBehavior - Enum controlling the robustness of
+-- image accesses in a pipeline stage
+--
+-- = Description
+--
+-- -   'PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT' specifies that
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-execution-memory-access-bounds out of bounds>
+--     image accesses follow the behavior of robust image access features
+--     enabled for the device.
+--
+-- -   'PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED' specifies that image
+--     accesses /must/ not be
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-execution-memory-access-bounds out of bounds>.
+--
+-- -   'PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS' specifies
+--     that image accesses conform to
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-robust-image-access>
+--     guarantees.
+--
+-- -   'PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2' specifies
+--     that image accesses conform to
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-robust-image-access2>
+--     guarantees.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_pipeline_robustness VK_EXT_pipeline_robustness>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'Vulkan.Core14.Promoted_From_VK_EXT_pipeline_robustness.PhysicalDevicePipelineRobustnessProperties',
+-- 'Vulkan.Core14.PhysicalDeviceVulkan14Properties',
+-- 'Vulkan.Core14.Promoted_From_VK_EXT_pipeline_robustness.PipelineRobustnessCreateInfo'
+newtype PipelineRobustnessImageBehavior = PipelineRobustnessImageBehavior Int32
+  deriving newtype (Eq, Ord, Storable, Zero)
+
+-- No documentation found for Nested "VkPipelineRobustnessImageBehavior" "VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT"
+pattern PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT = PipelineRobustnessImageBehavior 0
+
+-- No documentation found for Nested "VkPipelineRobustnessImageBehavior" "VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED"
+pattern PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED = PipelineRobustnessImageBehavior 1
+
+-- No documentation found for Nested "VkPipelineRobustnessImageBehavior" "VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS"
+pattern PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS = PipelineRobustnessImageBehavior 2
+
+-- No documentation found for Nested "VkPipelineRobustnessImageBehavior" "VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2"
+pattern PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2 = PipelineRobustnessImageBehavior 3
+
+{-# COMPLETE
+  PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT
+  , PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED
+  , PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS
+  , PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2 ::
+    PipelineRobustnessImageBehavior
+  #-}
+
+conNamePipelineRobustnessImageBehavior :: String
+conNamePipelineRobustnessImageBehavior = "PipelineRobustnessImageBehavior"
+
+enumPrefixPipelineRobustnessImageBehavior :: String
+enumPrefixPipelineRobustnessImageBehavior = "PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_"
+
+showTablePipelineRobustnessImageBehavior :: [(PipelineRobustnessImageBehavior, String)]
+showTablePipelineRobustnessImageBehavior =
+  [
+    ( PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT
+    , "DEVICE_DEFAULT"
+    )
+  ,
+    ( PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED
+    , "DISABLED"
+    )
+  ,
+    ( PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS
+    , "ROBUST_IMAGE_ACCESS"
+    )
+  ,
+    ( PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2
+    , "ROBUST_IMAGE_ACCESS_2"
+    )
+  ]
+
+instance Show PipelineRobustnessImageBehavior where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixPipelineRobustnessImageBehavior
+      showTablePipelineRobustnessImageBehavior
+      conNamePipelineRobustnessImageBehavior
+      (\(PipelineRobustnessImageBehavior x) -> x)
+      (showsPrec 11)
+
+instance Read PipelineRobustnessImageBehavior where
+  readPrec =
+    enumReadPrec
+      enumPrefixPipelineRobustnessImageBehavior
+      showTablePipelineRobustnessImageBehavior
+      conNamePipelineRobustnessImageBehavior
+      PipelineRobustnessImageBehavior
diff --git a/src/Vulkan/Core14/Enums/PipelineRobustnessImageBehavior.hs-boot b/src/Vulkan/Core14/Enums/PipelineRobustnessImageBehavior.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core14/Enums/PipelineRobustnessImageBehavior.hs-boot
@@ -0,0 +1,8 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "PipelineRobustnessImageBehavior"
+module Vulkan.Core14.Enums.PipelineRobustnessImageBehavior  (PipelineRobustnessImageBehavior) where
+
+
+
+data PipelineRobustnessImageBehavior
+
diff --git a/src/Vulkan/Core14/Enums/QueueGlobalPriority.hs b/src/Vulkan/Core14/Enums/QueueGlobalPriority.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core14/Enums/QueueGlobalPriority.hs
@@ -0,0 +1,97 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "QueueGlobalPriority"
+module Vulkan.Core14.Enums.QueueGlobalPriority  (QueueGlobalPriority( QUEUE_GLOBAL_PRIORITY_LOW
+                                                                    , QUEUE_GLOBAL_PRIORITY_MEDIUM
+                                                                    , QUEUE_GLOBAL_PRIORITY_HIGH
+                                                                    , QUEUE_GLOBAL_PRIORITY_REALTIME
+                                                                    , ..
+                                                                    )) where
+
+import Vulkan.Internal.Utils (enumReadPrec)
+import Vulkan.Internal.Utils (enumShowsPrec)
+import GHC.Show (showsPrec)
+import Vulkan.Zero (Zero)
+import Foreign.Storable (Storable)
+import Data.Int (Int32)
+import GHC.Read (Read(readPrec))
+import GHC.Show (Show(showsPrec))
+
+-- | VkQueueGlobalPriority - 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.
+--
+-- -   'QUEUE_GLOBAL_PRIORITY_LOW' is below the system default. Useful for
+--     non-interactive tasks.
+--
+-- -   'QUEUE_GLOBAL_PRIORITY_MEDIUM' is the system default priority.
+--
+-- -   'QUEUE_GLOBAL_PRIORITY_HIGH' is above the system default.
+--
+-- -   'QUEUE_GLOBAL_PRIORITY_REALTIME' is the highest priority. Useful for
+--     critical tasks.
+--
+-- = 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>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_global_priority.DeviceQueueGlobalPriorityCreateInfo',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_global_priority.QueueFamilyGlobalPriorityProperties'
+newtype QueueGlobalPriority = QueueGlobalPriority 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
+
+-- No documentation found for Nested "VkQueueGlobalPriority" "VK_QUEUE_GLOBAL_PRIORITY_LOW"
+pattern QUEUE_GLOBAL_PRIORITY_LOW = QueueGlobalPriority 128
+
+-- No documentation found for Nested "VkQueueGlobalPriority" "VK_QUEUE_GLOBAL_PRIORITY_MEDIUM"
+pattern QUEUE_GLOBAL_PRIORITY_MEDIUM = QueueGlobalPriority 256
+
+-- No documentation found for Nested "VkQueueGlobalPriority" "VK_QUEUE_GLOBAL_PRIORITY_HIGH"
+pattern QUEUE_GLOBAL_PRIORITY_HIGH = QueueGlobalPriority 512
+
+-- No documentation found for Nested "VkQueueGlobalPriority" "VK_QUEUE_GLOBAL_PRIORITY_REALTIME"
+pattern QUEUE_GLOBAL_PRIORITY_REALTIME = QueueGlobalPriority 1024
+
+{-# COMPLETE
+  QUEUE_GLOBAL_PRIORITY_LOW
+  , QUEUE_GLOBAL_PRIORITY_MEDIUM
+  , QUEUE_GLOBAL_PRIORITY_HIGH
+  , QUEUE_GLOBAL_PRIORITY_REALTIME ::
+    QueueGlobalPriority
+  #-}
+
+conNameQueueGlobalPriority :: String
+conNameQueueGlobalPriority = "QueueGlobalPriority"
+
+enumPrefixQueueGlobalPriority :: String
+enumPrefixQueueGlobalPriority = "QUEUE_GLOBAL_PRIORITY_"
+
+showTableQueueGlobalPriority :: [(QueueGlobalPriority, String)]
+showTableQueueGlobalPriority =
+  [ (QUEUE_GLOBAL_PRIORITY_LOW, "LOW")
+  , (QUEUE_GLOBAL_PRIORITY_MEDIUM, "MEDIUM")
+  , (QUEUE_GLOBAL_PRIORITY_HIGH, "HIGH")
+  , (QUEUE_GLOBAL_PRIORITY_REALTIME, "REALTIME")
+  ]
+
+instance Show QueueGlobalPriority where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixQueueGlobalPriority
+      showTableQueueGlobalPriority
+      conNameQueueGlobalPriority
+      (\(QueueGlobalPriority x) -> x)
+      (showsPrec 11)
+
+instance Read QueueGlobalPriority where
+  readPrec =
+    enumReadPrec
+      enumPrefixQueueGlobalPriority
+      showTableQueueGlobalPriority
+      conNameQueueGlobalPriority
+      QueueGlobalPriority
diff --git a/src/Vulkan/Core14/Enums/QueueGlobalPriority.hs-boot b/src/Vulkan/Core14/Enums/QueueGlobalPriority.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core14/Enums/QueueGlobalPriority.hs-boot
@@ -0,0 +1,8 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "QueueGlobalPriority"
+module Vulkan.Core14.Enums.QueueGlobalPriority  (QueueGlobalPriority) where
+
+
+
+data QueueGlobalPriority
+
diff --git a/src/Vulkan/Core14/Promoted_From_VK_EXT_host_image_copy.hs b/src/Vulkan/Core14/Promoted_From_VK_EXT_host_image_copy.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core14/Promoted_From_VK_EXT_host_image_copy.hs
@@ -0,0 +1,3122 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Promoted_From_VK_EXT_host_image_copy"
+module Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy  ( copyMemoryToImage
+                                                           , copyImageToMemory
+                                                           , copyImageToImage
+                                                           , transitionImageLayout
+                                                           , PhysicalDeviceHostImageCopyFeatures(..)
+                                                           , PhysicalDeviceHostImageCopyProperties(..)
+                                                           , MemoryToImageCopy(..)
+                                                           , ImageToMemoryCopy(..)
+                                                           , CopyMemoryToImageInfo(..)
+                                                           , CopyImageToMemoryInfo(..)
+                                                           , CopyImageToImageInfo(..)
+                                                           , HostImageLayoutTransitionInfo(..)
+                                                           , SubresourceHostMemcpySize(..)
+                                                           , HostImageCopyDevicePerformanceQuery(..)
+                                                           , StructureType(..)
+                                                           , ImageUsageFlagBits(..)
+                                                           , ImageUsageFlags
+                                                           , HostImageCopyFlagBits(..)
+                                                           , HostImageCopyFlags
+                                                           , FormatFeatureFlagBits2(..)
+                                                           , FormatFeatureFlags2
+                                                           ) where
+
+import Vulkan.CStruct.Utils (FixedArray)
+import Vulkan.Internal.Utils (traceAroundEvent)
+import Control.Monad (unless)
+import Control.Monad.IO.Class (liftIO)
+import Foreign.Marshal.Alloc (allocaBytes)
+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 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.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 (Word8)
+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.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.CStruct.Utils (peekByteStringFromSizedVectorPtr)
+import Vulkan.CStruct.Utils (pokeFixedLengthByteString)
+import Vulkan.NamedType ((:::))
+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(pVkCopyImageToImage))
+import Vulkan.Dynamic (DeviceCmds(pVkCopyImageToMemory))
+import Vulkan.Dynamic (DeviceCmds(pVkCopyMemoryToImage))
+import Vulkan.Dynamic (DeviceCmds(pVkTransitionImageLayout))
+import Vulkan.Core10.FundamentalTypes (DeviceSize)
+import Vulkan.Core10.Handles (Device_T)
+import Vulkan.Core10.FundamentalTypes (Extent3D)
+import Vulkan.Core14.Enums.HostImageCopyFlagBits (HostImageCopyFlags)
+import Vulkan.Core10.Handles (Image)
+import Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2 (ImageCopy2)
+import Vulkan.Core10.Enums.ImageLayout (ImageLayout)
+import Vulkan.Core10.CommandBufferBuilding (ImageSubresourceLayers)
+import Vulkan.Core10.ImageView (ImageSubresourceRange)
+import Vulkan.Core10.FundamentalTypes (Offset3D)
+import Vulkan.Core10.Enums.Result (Result)
+import Vulkan.Core10.Enums.Result (Result(..))
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Core10.APIConstants (UUID_SIZE)
+import Vulkan.Exception (VulkanException(..))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE))
+import Vulkan.Core10.Enums.Result (Result(SUCCESS))
+import Vulkan.Core13.Enums.FormatFeatureFlags2 (FormatFeatureFlagBits2(..))
+import Vulkan.Core13.Enums.FormatFeatureFlags2 (FormatFeatureFlags2)
+import Vulkan.Core14.Enums.HostImageCopyFlagBits (HostImageCopyFlagBits(..))
+import Vulkan.Core14.Enums.HostImageCopyFlagBits (HostImageCopyFlags)
+import Vulkan.Core10.Enums.ImageUsageFlagBits (ImageUsageFlagBits(..))
+import Vulkan.Core10.Enums.ImageUsageFlagBits (ImageUsageFlags)
+import Vulkan.Core10.Enums.StructureType (StructureType(..))
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCopyMemoryToImage
+  :: FunPtr (Ptr Device_T -> Ptr CopyMemoryToImageInfo -> IO Result) -> Ptr Device_T -> Ptr CopyMemoryToImageInfo -> IO Result
+
+-- | vkCopyMemoryToImage - Copy data from host memory into an image
+--
+-- = Description
+--
+-- This command is functionally similar to
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.cmdCopyBufferToImage2',
+-- except it is executed on the host and reads from host memory instead of
+-- a buffer. The memory of @pCopyMemoryToImageInfo->dstImage@ is accessed
+-- by the host as if
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-coherent coherent>.
+--
+-- Because queue submissions
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-submission-host-writes automatically make host memory visible to the device>,
+-- there would not be a need for a memory barrier before using the results
+-- of this copy operation on the device.
+--
+-- == 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_INITIALIZATION_FAILED'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_MEMORY_MAP_FAILED'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_host_image_copy VK_EXT_host_image_copy>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'CopyMemoryToImageInfo', 'Vulkan.Core10.Handles.Device'
+copyMemoryToImage :: forall io
+                   . (MonadIO io)
+                  => -- | @device@ is the device which owns @pCopyMemoryToImageInfo->dstImage@.
+                     --
+                     -- #VUID-vkCopyMemoryToImage-device-parameter# @device@ /must/ be a valid
+                     -- 'Vulkan.Core10.Handles.Device' handle
+                     Device
+                  -> -- | @pCopyMemoryToImageInfo@ is a pointer to a 'CopyMemoryToImageInfo'
+                     -- structure describing the copy parameters.
+                     --
+                     -- #VUID-vkCopyMemoryToImage-pCopyMemoryToImageInfo-parameter#
+                     -- @pCopyMemoryToImageInfo@ /must/ be a valid pointer to a valid
+                     -- 'CopyMemoryToImageInfo' structure
+                     CopyMemoryToImageInfo
+                  -> io ()
+copyMemoryToImage device copyMemoryToImageInfo = liftIO . evalContT $ do
+  let vkCopyMemoryToImagePtr = pVkCopyMemoryToImage (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCopyMemoryToImagePtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCopyMemoryToImage is null" Nothing Nothing
+  let vkCopyMemoryToImage' = mkVkCopyMemoryToImage vkCopyMemoryToImagePtr
+  pCopyMemoryToImageInfo <- ContT $ withCStruct (copyMemoryToImageInfo)
+  r <- lift $ traceAroundEvent "vkCopyMemoryToImage" (vkCopyMemoryToImage'
+                                                        (deviceHandle (device))
+                                                        pCopyMemoryToImageInfo)
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCopyImageToMemory
+  :: FunPtr (Ptr Device_T -> Ptr CopyImageToMemoryInfo -> IO Result) -> Ptr Device_T -> Ptr CopyImageToMemoryInfo -> IO Result
+
+-- | vkCopyImageToMemory - Copy image data into host memory
+--
+-- = Description
+--
+-- This command is functionally similar to
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.cmdCopyImageToBuffer2',
+-- except it is executed on the host and writes to host memory instead of a
+-- buffer. The memory of @pCopyImageToMemoryInfo->srcImage@ is accessed by
+-- the host as if
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-coherent coherent>.
+--
+-- If the device has written to the image memory, it is not automatically
+-- made available to the host. Before this copy command can be called, a
+-- memory barrier for this image /must/ have been issued on the device with
+-- the second
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+-- including
+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_HOST_BIT' and
+-- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_HOST_READ_BIT'.
+--
+-- == 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_INITIALIZATION_FAILED'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_MEMORY_MAP_FAILED'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_host_image_copy VK_EXT_host_image_copy>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'CopyImageToMemoryInfo', 'Vulkan.Core10.Handles.Device'
+copyImageToMemory :: forall io
+                   . (MonadIO io)
+                  => -- | @device@ is the device which owns @pCopyImageToMemoryInfo->srcImage@.
+                     --
+                     -- #VUID-vkCopyImageToMemory-device-parameter# @device@ /must/ be a valid
+                     -- 'Vulkan.Core10.Handles.Device' handle
+                     Device
+                  -> -- | @pCopyImageToMemoryInfo@ is a pointer to a 'CopyImageToMemoryInfo'
+                     -- structure describing the copy parameters.
+                     --
+                     -- #VUID-vkCopyImageToMemory-pCopyImageToMemoryInfo-parameter#
+                     -- @pCopyImageToMemoryInfo@ /must/ be a valid pointer to a valid
+                     -- 'CopyImageToMemoryInfo' structure
+                     CopyImageToMemoryInfo
+                  -> io ()
+copyImageToMemory device copyImageToMemoryInfo = liftIO . evalContT $ do
+  let vkCopyImageToMemoryPtr = pVkCopyImageToMemory (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCopyImageToMemoryPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCopyImageToMemory is null" Nothing Nothing
+  let vkCopyImageToMemory' = mkVkCopyImageToMemory vkCopyImageToMemoryPtr
+  pCopyImageToMemoryInfo <- ContT $ withCStruct (copyImageToMemoryInfo)
+  r <- lift $ traceAroundEvent "vkCopyImageToMemory" (vkCopyImageToMemory'
+                                                        (deviceHandle (device))
+                                                        pCopyImageToMemoryInfo)
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCopyImageToImage
+  :: FunPtr (Ptr Device_T -> Ptr CopyImageToImageInfo -> IO Result) -> Ptr Device_T -> Ptr CopyImageToImageInfo -> IO Result
+
+-- | vkCopyImageToImage - Copy image data using the host
+--
+-- = Description
+--
+-- This command is functionally similar to
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.cmdCopyImage2',
+-- except it is executed on the host. The memory of
+-- @pCopyImageToImageInfo->srcImage@ and @pCopyImageToImageInfo->dstImage@
+-- is accessed by the host as if
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-coherent coherent>.
+--
+-- If the device has written to the memory of
+-- @pCopyImageToImageInfo->srcImage@, it is not automatically made
+-- available to the host. Before this copy command can be called, a memory
+-- barrier for this image /must/ have been issued on the device with the
+-- second
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+-- including
+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_HOST_BIT' and
+-- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_HOST_READ_BIT'.
+--
+-- Because queue submissions
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-submission-host-writes automatically make host memory visible to the device>,
+-- there would not be a need for a memory barrier before using the results
+-- of this copy operation in @pCopyMemoryToImageInfo->dstImage@ on the
+-- device.
+--
+-- == 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_INITIALIZATION_FAILED'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_MEMORY_MAP_FAILED'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_host_image_copy VK_EXT_host_image_copy>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'CopyImageToImageInfo', 'Vulkan.Core10.Handles.Device'
+copyImageToImage :: forall io
+                  . (MonadIO io)
+                 => -- | @device@ is the device which owns @pCopyImageToImageInfo->srcImage@ and
+                    -- @pCopyImageToImageInfo->dstImage@.
+                    --
+                    -- #VUID-vkCopyImageToImage-device-parameter# @device@ /must/ be a valid
+                    -- 'Vulkan.Core10.Handles.Device' handle
+                    Device
+                 -> -- | @pCopyImageToImageInfo@ is a pointer to a 'CopyImageToImageInfo'
+                    -- structure describing the copy parameters.
+                    --
+                    -- #VUID-vkCopyImageToImage-pCopyImageToImageInfo-parameter#
+                    -- @pCopyImageToImageInfo@ /must/ be a valid pointer to a valid
+                    -- 'CopyImageToImageInfo' structure
+                    CopyImageToImageInfo
+                 -> io ()
+copyImageToImage device copyImageToImageInfo = liftIO . evalContT $ do
+  let vkCopyImageToImagePtr = pVkCopyImageToImage (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCopyImageToImagePtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCopyImageToImage is null" Nothing Nothing
+  let vkCopyImageToImage' = mkVkCopyImageToImage vkCopyImageToImagePtr
+  pCopyImageToImageInfo <- ContT $ withCStruct (copyImageToImageInfo)
+  r <- lift $ traceAroundEvent "vkCopyImageToImage" (vkCopyImageToImage'
+                                                       (deviceHandle (device))
+                                                       pCopyImageToImageInfo)
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkTransitionImageLayout
+  :: FunPtr (Ptr Device_T -> Word32 -> Ptr HostImageLayoutTransitionInfo -> IO Result) -> Ptr Device_T -> Word32 -> Ptr HostImageLayoutTransitionInfo -> IO Result
+
+-- | vkTransitionImageLayout - Perform an image layout transition on the host
+--
+-- == 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_INITIALIZATION_FAILED'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_MEMORY_MAP_FAILED'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_host_image_copy VK_EXT_host_image_copy>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'Vulkan.Core10.Handles.Device', 'HostImageLayoutTransitionInfo'
+transitionImageLayout :: forall io
+                       . (MonadIO io)
+                      => -- | @device@ is the device which owns @pTransitions@[i].@image@.
+                         --
+                         -- #VUID-vkTransitionImageLayout-device-parameter# @device@ /must/ be a
+                         -- valid 'Vulkan.Core10.Handles.Device' handle
+                         Device
+                      -> -- | @pTransitions@ is a pointer to an array of
+                         -- 'HostImageLayoutTransitionInfo' structures specifying the image and
+                         -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-image-views subresource ranges>
+                         -- within them to transition.
+                         --
+                         -- #VUID-vkTransitionImageLayout-pTransitions-parameter# @pTransitions@
+                         -- /must/ be a valid pointer to an array of @transitionCount@ valid
+                         -- 'HostImageLayoutTransitionInfo' structures
+                         ("transitions" ::: Vector HostImageLayoutTransitionInfo)
+                      -> io ()
+transitionImageLayout device transitions = liftIO . evalContT $ do
+  let vkTransitionImageLayoutPtr = pVkTransitionImageLayout (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkTransitionImageLayoutPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkTransitionImageLayout is null" Nothing Nothing
+  let vkTransitionImageLayout' = mkVkTransitionImageLayout vkTransitionImageLayoutPtr
+  pPTransitions <- ContT $ allocaBytes @HostImageLayoutTransitionInfo ((Data.Vector.length (transitions)) * 56)
+  lift $ Data.Vector.imapM_ (\i e -> poke (pPTransitions `plusPtr` (56 * (i)) :: Ptr HostImageLayoutTransitionInfo) (e)) (transitions)
+  r <- lift $ traceAroundEvent "vkTransitionImageLayout" (vkTransitionImageLayout'
+                                                            (deviceHandle (device))
+                                                            ((fromIntegral (Data.Vector.length $ (transitions)) :: Word32))
+                                                            (pPTransitions))
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+
+
+-- | VkPhysicalDeviceHostImageCopyFeatures - Structure indicating support for
+-- copies to or from images from host memory
+--
+-- = Members
+--
+-- This structure describes the following feature:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceHostImageCopyFeatures' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceHostImageCopyFeatures', it /must/ add an instance of the
+-- structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_host_image_copy VK_EXT_host_image_copy>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceHostImageCopyFeatures = PhysicalDeviceHostImageCopyFeatures
+  { -- | #extension-features-hostImageCopy# @hostImageCopy@ indicates that the
+    -- implementation supports copying from host memory to images using the
+    -- 'copyMemoryToImage' command, copying from images to host memory using
+    -- the 'copyImageToMemory' command, and copying between images using the
+    -- 'copyImageToImage' command.
+    hostImageCopy :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceHostImageCopyFeatures)
+#endif
+deriving instance Show PhysicalDeviceHostImageCopyFeatures
+
+instance ToCStruct PhysicalDeviceHostImageCopyFeatures where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceHostImageCopyFeatures{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (hostImageCopy))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceHostImageCopyFeatures where
+  peekCStruct p = do
+    hostImageCopy <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDeviceHostImageCopyFeatures
+             (bool32ToBool hostImageCopy)
+
+instance Storable PhysicalDeviceHostImageCopyFeatures where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceHostImageCopyFeatures where
+  zero = PhysicalDeviceHostImageCopyFeatures
+           zero
+
+
+-- | VkPhysicalDeviceHostImageCopyProperties - Structure enumerating image
+-- layouts supported by an implementation for host memory copies
+--
+-- = Description
+--
+-- -   @copySrcLayoutCount@ is an integer related to the number of image
+--     layouts for host copies from images available or queried, as
+--     described below.
+--
+-- -   @pCopySrcLayouts@ is a pointer to an array of
+--     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' in which supported
+--     image layouts for use with host copy operations from images are
+--     returned.
+--
+-- -   @copyDstLayoutCount@ is an integer related to the number of image
+--     layouts for host copies to images available or queried, as described
+--     below.
+--
+-- -   @pCopyDstLayouts@ is a pointer to an array of
+--     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' in which supported
+--     image layouts for use with host copy operations to images are
+--     returned.
+--
+-- -   @optimalTilingLayoutUUID@ is an array of
+--     'Vulkan.Core10.APIConstants.UUID_SIZE' @uint8_t@ values representing
+--     a universally unique identifier for the implementation’s swizzling
+--     layout of images created with
+--     'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL'.
+--
+-- -   @identicalMemoryTypeRequirements@ indicates that specifying the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_HOST_TRANSFER_BIT'
+--     flag in 'Vulkan.Core10.Image.ImageCreateInfo'::@usage@ does not
+--     affect the memory type requirements of the image.
+--
+-- If the 'PhysicalDeviceHostImageCopyProperties' 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 @pCopyDstLayouts@ is @NULL@, then the number of image layouts that
+-- are supported in 'CopyMemoryToImageInfo'::@dstImageLayout@ and
+-- 'CopyImageToImageInfo'::@dstImageLayout@ is returned in
+-- @copyDstLayoutCount@. Otherwise, @copyDstLayoutCount@ /must/ be set by
+-- the application to the number of elements in the @pCopyDstLayouts@
+-- array, and on return is overwritten with the number of values actually
+-- written to @pCopyDstLayouts@. If the value of @copyDstLayoutCount@ is
+-- less than the number of image layouts that are supported, at most
+-- @copyDstLayoutCount@ values will be written to @pCopyDstLayouts@. The
+-- implementation /must/ include the
+-- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL' image layout in
+-- @pCopyDstLayouts@. If the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-unifiedImageLayouts unifiedImageLayouts>
+-- feature is supported, the implementation /must/ include all the image
+-- layouts that are interchangeable with
+-- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL' in
+-- @pCopyDstLayouts@.
+--
+-- If @pCopySrcLayouts@ is @NULL@, then the number of image layouts that
+-- are supported in 'CopyImageToMemoryInfo'::@srcImageLayout@ and
+-- 'CopyImageToImageInfo'::@srcImageLayout@ is returned in
+-- @copySrcLayoutCount@. Otherwise, @copySrcLayoutCount@ /must/ be set by
+-- the application to the number of elements in the @pCopySrcLayouts@
+-- array, and on return is overwritten with the number of values actually
+-- written to @pCopySrcLayouts@. If the value of @copySrcLayoutCount@ is
+-- less than the number of image layouts that are supported, at most
+-- @copySrcLayoutCount@ values will be written to @pCopySrcLayouts@. The
+-- implementation /must/ include the
+-- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL' image layout in
+-- @pCopySrcLayouts@. If the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-unifiedImageLayouts unifiedImageLayouts>
+-- feature is supported, the implementation /must/ include all the image
+-- layouts that are interchangeable with
+-- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL' in
+-- @pCopySrcLayouts@.
+--
+-- The @optimalTilingLayoutUUID@ value can be used to ensure compatible
+-- data layouts when using the
+-- 'Vulkan.Core14.Enums.HostImageCopyFlagBits.HOST_IMAGE_COPY_MEMCPY_BIT'
+-- flag in 'copyMemoryToImage' and 'copyImageToMemory'.
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkPhysicalDeviceHostImageCopyProperties-sType-sType# @sType@
+--     /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES'
+--
+-- -   #VUID-VkPhysicalDeviceHostImageCopyProperties-pCopySrcLayouts-parameter#
+--     If @copySrcLayoutCount@ is not @0@, and @pCopySrcLayouts@ is not
+--     @NULL@, @pCopySrcLayouts@ /must/ be a valid pointer to an array of
+--     @copySrcLayoutCount@ 'Vulkan.Core10.Enums.ImageLayout.ImageLayout'
+--     values
+--
+-- -   #VUID-VkPhysicalDeviceHostImageCopyProperties-pCopyDstLayouts-parameter#
+--     If @copyDstLayoutCount@ is not @0@, and @pCopyDstLayouts@ is not
+--     @NULL@, @pCopyDstLayouts@ /must/ be a valid pointer to an array of
+--     @copyDstLayoutCount@ 'Vulkan.Core10.Enums.ImageLayout.ImageLayout'
+--     values
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_host_image_copy VK_EXT_host_image_copy>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceHostImageCopyProperties = PhysicalDeviceHostImageCopyProperties
+  { -- No documentation found for Nested "VkPhysicalDeviceHostImageCopyProperties" "copySrcLayoutCount"
+    copySrcLayoutCount :: Word32
+  , -- No documentation found for Nested "VkPhysicalDeviceHostImageCopyProperties" "pCopySrcLayouts"
+    copySrcLayouts :: Ptr ImageLayout
+  , -- No documentation found for Nested "VkPhysicalDeviceHostImageCopyProperties" "copyDstLayoutCount"
+    copyDstLayoutCount :: Word32
+  , -- No documentation found for Nested "VkPhysicalDeviceHostImageCopyProperties" "pCopyDstLayouts"
+    copyDstLayouts :: Ptr ImageLayout
+  , -- No documentation found for Nested "VkPhysicalDeviceHostImageCopyProperties" "optimalTilingLayoutUUID"
+    optimalTilingLayoutUUID :: ByteString
+  , -- No documentation found for Nested "VkPhysicalDeviceHostImageCopyProperties" "identicalMemoryTypeRequirements"
+    identicalMemoryTypeRequirements :: Bool
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceHostImageCopyProperties)
+#endif
+deriving instance Show PhysicalDeviceHostImageCopyProperties
+
+instance ToCStruct PhysicalDeviceHostImageCopyProperties where
+  withCStruct x f = allocaBytes 72 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceHostImageCopyProperties{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (copySrcLayoutCount)
+    poke ((p `plusPtr` 24 :: Ptr (Ptr ImageLayout))) (copySrcLayouts)
+    poke ((p `plusPtr` 32 :: Ptr Word32)) (copyDstLayoutCount)
+    poke ((p `plusPtr` 40 :: Ptr (Ptr ImageLayout))) (copyDstLayouts)
+    pokeFixedLengthByteString ((p `plusPtr` 48 :: Ptr (FixedArray UUID_SIZE Word8))) (optimalTilingLayoutUUID)
+    poke ((p `plusPtr` 64 :: Ptr Bool32)) (boolToBool32 (identicalMemoryTypeRequirements))
+    f
+  cStructSize = 72
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 64 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceHostImageCopyProperties where
+  peekCStruct p = do
+    copySrcLayoutCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    pCopySrcLayouts <- peek @(Ptr ImageLayout) ((p `plusPtr` 24 :: Ptr (Ptr ImageLayout)))
+    copyDstLayoutCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))
+    pCopyDstLayouts <- peek @(Ptr ImageLayout) ((p `plusPtr` 40 :: Ptr (Ptr ImageLayout)))
+    optimalTilingLayoutUUID <- peekByteStringFromSizedVectorPtr ((p `plusPtr` 48 :: Ptr (FixedArray UUID_SIZE Word8)))
+    identicalMemoryTypeRequirements <- peek @Bool32 ((p `plusPtr` 64 :: Ptr Bool32))
+    pure $ PhysicalDeviceHostImageCopyProperties
+             copySrcLayoutCount
+             pCopySrcLayouts
+             copyDstLayoutCount
+             pCopyDstLayouts
+             optimalTilingLayoutUUID
+             (bool32ToBool identicalMemoryTypeRequirements)
+
+instance Storable PhysicalDeviceHostImageCopyProperties where
+  sizeOf ~_ = 72
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceHostImageCopyProperties where
+  zero = PhysicalDeviceHostImageCopyProperties
+           zero
+           zero
+           zero
+           zero
+           mempty
+           zero
+
+
+-- | VkMemoryToImageCopy - Structure specifying a host memory to image copy
+-- operation
+--
+-- = Description
+--
+-- This structure is functionally similar to
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.BufferImageCopy2',
+-- except it defines host memory as the source of copy instead of a buffer.
+-- In particular, the same data packing rules and restrictions as that
+-- structure apply here as well.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkMemoryToImageCopy-pHostPointer-09061# @pHostPointer@ /must/
+--     point to memory that is large enough to contain all memory locations
+--     that are accessed according to
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#copies-buffers-images-addressing Buffer and Image Addressing>,
+--     for each element of @pRegions@
+--
+-- -   #VUID-VkMemoryToImageCopy-pRegions-09062# 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-VkMemoryToImageCopy-memoryRowLength-09101# @memoryRowLength@
+--     /must/ be @0@, or greater than or equal to the @width@ member of
+--     @imageExtent@
+--
+-- -   #VUID-VkMemoryToImageCopy-memoryImageHeight-09102#
+--     @memoryImageHeight@ /must/ be @0@, or greater than or equal to the
+--     @height@ member of @imageExtent@
+--
+-- -   #VUID-VkMemoryToImageCopy-aspectMask-09103# The @aspectMask@ member
+--     of @imageSubresource@ /must/ only have a single bit set
+--
+-- -   #VUID-VkMemoryToImageCopy-imageExtent-06659# @imageExtent.width@
+--     /must/ not be 0
+--
+-- -   #VUID-VkMemoryToImageCopy-imageExtent-06660# @imageExtent.height@
+--     /must/ not be 0
+--
+-- -   #VUID-VkMemoryToImageCopy-imageExtent-06661# @imageExtent.depth@
+--     /must/ not be 0
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkMemoryToImageCopy-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY'
+--
+-- -   #VUID-VkMemoryToImageCopy-pNext-pNext# @pNext@ /must/ be @NULL@
+--
+-- -   #VUID-VkMemoryToImageCopy-pHostPointer-parameter# @pHostPointer@
+--     /must/ be a pointer value
+--
+-- -   #VUID-VkMemoryToImageCopy-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_EXT_host_image_copy VK_EXT_host_image_copy>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'CopyMemoryToImageInfo', 'Vulkan.Core10.FundamentalTypes.Extent3D',
+-- 'Vulkan.Core10.CommandBufferBuilding.ImageSubresourceLayers',
+-- 'Vulkan.Core10.FundamentalTypes.Offset3D',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data MemoryToImageCopy = MemoryToImageCopy
+  { -- | @pHostPointer@ is the host memory address which is the source of the
+    -- copy.
+    hostPointer :: Ptr ()
+  , -- | @memoryRowLength@ and @memoryImageHeight@ specify in texels a subregion
+    -- of a larger two- or three-dimensional image in host memory, and control
+    -- the addressing calculations. If either of these values is zero, that
+    -- aspect of the host memory is considered to be tightly packed according
+    -- to the @imageExtent@.
+    memoryRowLength :: Word32
+  , -- No documentation found for Nested "VkMemoryToImageCopy" "memoryImageHeight"
+    memoryImageHeight :: 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 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 (MemoryToImageCopy)
+#endif
+deriving instance Show MemoryToImageCopy
+
+instance ToCStruct MemoryToImageCopy where
+  withCStruct x f = allocaBytes 72 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p MemoryToImageCopy{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr (Ptr ()))) (hostPointer)
+    poke ((p `plusPtr` 24 :: Ptr Word32)) (memoryRowLength)
+    poke ((p `plusPtr` 28 :: Ptr Word32)) (memoryImageHeight)
+    poke ((p `plusPtr` 32 :: Ptr ImageSubresourceLayers)) (imageSubresource)
+    poke ((p `plusPtr` 48 :: Ptr Offset3D)) (imageOffset)
+    poke ((p `plusPtr` 60 :: Ptr Extent3D)) (imageExtent)
+    f
+  cStructSize = 72
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr (Ptr ()))) (zero)
+    poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 28 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 32 :: Ptr ImageSubresourceLayers)) (zero)
+    poke ((p `plusPtr` 48 :: Ptr Offset3D)) (zero)
+    poke ((p `plusPtr` 60 :: Ptr Extent3D)) (zero)
+    f
+
+instance FromCStruct MemoryToImageCopy where
+  peekCStruct p = do
+    pHostPointer <- peek @(Ptr ()) ((p `plusPtr` 16 :: Ptr (Ptr ())))
+    memoryRowLength <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))
+    memoryImageHeight <- 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 $ MemoryToImageCopy
+             pHostPointer
+             memoryRowLength
+             memoryImageHeight
+             imageSubresource
+             imageOffset
+             imageExtent
+
+instance Storable MemoryToImageCopy where
+  sizeOf ~_ = 72
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero MemoryToImageCopy where
+  zero = MemoryToImageCopy
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkImageToMemoryCopy - Structure specifying an image to host memory copy
+-- operation
+--
+-- = Description
+--
+-- This structure is functionally similar to
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.BufferImageCopy2',
+-- except it defines host memory as the target of copy instead of a buffer.
+-- In particular, the same data packing rules and restrictions as that
+-- structure apply here as well.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkImageToMemoryCopy-pHostPointer-09066# @pHostPointer@ /must/
+--     point to memory that is large enough to contain all memory locations
+--     that are accessed according to
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#copies-buffers-images-addressing Buffer and Image Addressing>,
+--     for each element of @pRegions@
+--
+-- -   #VUID-VkImageToMemoryCopy-pRegions-09067# 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-VkImageToMemoryCopy-memoryRowLength-09101# @memoryRowLength@
+--     /must/ be @0@, or greater than or equal to the @width@ member of
+--     @imageExtent@
+--
+-- -   #VUID-VkImageToMemoryCopy-memoryImageHeight-09102#
+--     @memoryImageHeight@ /must/ be @0@, or greater than or equal to the
+--     @height@ member of @imageExtent@
+--
+-- -   #VUID-VkImageToMemoryCopy-aspectMask-09103# The @aspectMask@ member
+--     of @imageSubresource@ /must/ only have a single bit set
+--
+-- -   #VUID-VkImageToMemoryCopy-imageExtent-06659# @imageExtent.width@
+--     /must/ not be 0
+--
+-- -   #VUID-VkImageToMemoryCopy-imageExtent-06660# @imageExtent.height@
+--     /must/ not be 0
+--
+-- -   #VUID-VkImageToMemoryCopy-imageExtent-06661# @imageExtent.depth@
+--     /must/ not be 0
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkImageToMemoryCopy-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY'
+--
+-- -   #VUID-VkImageToMemoryCopy-pNext-pNext# @pNext@ /must/ be @NULL@
+--
+-- -   #VUID-VkImageToMemoryCopy-pHostPointer-parameter# @pHostPointer@
+--     /must/ be a pointer value
+--
+-- -   #VUID-VkImageToMemoryCopy-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_EXT_host_image_copy VK_EXT_host_image_copy>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'CopyImageToMemoryInfo', 'Vulkan.Core10.FundamentalTypes.Extent3D',
+-- 'Vulkan.Core10.CommandBufferBuilding.ImageSubresourceLayers',
+-- 'Vulkan.Core10.FundamentalTypes.Offset3D',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data ImageToMemoryCopy = ImageToMemoryCopy
+  { -- | @pHostPointer@ is the host memory address which is the destination of
+    -- the copy.
+    hostPointer :: Ptr ()
+  , -- | @memoryRowLength@ and @memoryImageHeight@ specify in texels a subregion
+    -- of a larger two- or three-dimensional image in host memory, and control
+    -- the addressing calculations. If either of these values is zero, that
+    -- aspect of the host memory is considered to be tightly packed according
+    -- to the @imageExtent@.
+    memoryRowLength :: Word32
+  , -- No documentation found for Nested "VkImageToMemoryCopy" "memoryImageHeight"
+    memoryImageHeight :: 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 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 (ImageToMemoryCopy)
+#endif
+deriving instance Show ImageToMemoryCopy
+
+instance ToCStruct ImageToMemoryCopy where
+  withCStruct x f = allocaBytes 72 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p ImageToMemoryCopy{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr (Ptr ()))) (hostPointer)
+    poke ((p `plusPtr` 24 :: Ptr Word32)) (memoryRowLength)
+    poke ((p `plusPtr` 28 :: Ptr Word32)) (memoryImageHeight)
+    poke ((p `plusPtr` 32 :: Ptr ImageSubresourceLayers)) (imageSubresource)
+    poke ((p `plusPtr` 48 :: Ptr Offset3D)) (imageOffset)
+    poke ((p `plusPtr` 60 :: Ptr Extent3D)) (imageExtent)
+    f
+  cStructSize = 72
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr (Ptr ()))) (zero)
+    poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 28 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 32 :: Ptr ImageSubresourceLayers)) (zero)
+    poke ((p `plusPtr` 48 :: Ptr Offset3D)) (zero)
+    poke ((p `plusPtr` 60 :: Ptr Extent3D)) (zero)
+    f
+
+instance FromCStruct ImageToMemoryCopy where
+  peekCStruct p = do
+    pHostPointer <- peek @(Ptr ()) ((p `plusPtr` 16 :: Ptr (Ptr ())))
+    memoryRowLength <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))
+    memoryImageHeight <- 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 $ ImageToMemoryCopy
+             pHostPointer
+             memoryRowLength
+             memoryImageHeight
+             imageSubresource
+             imageOffset
+             imageExtent
+
+instance Storable ImageToMemoryCopy where
+  sizeOf ~_ = 72
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero ImageToMemoryCopy where
+  zero = ImageToMemoryCopy
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkCopyMemoryToImageInfo - Structure specifying parameters of host memory
+-- to image copy command
+--
+-- = Description
+--
+-- 'copyMemoryToImage' does not check whether the device memory associated
+-- with @dstImage@ is currently in use before performing the copy. The
+-- application /must/ guarantee that any previously submitted command that
+-- reads from or writes to the copy regions has completed before the host
+-- performs the copy.
+--
+-- Copy regions for the image /must/ be aligned to a multiple of the texel
+-- block extent in each dimension, except at the edges of the image, where
+-- region extents /must/ match the edge of the image.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkCopyMemoryToImageInfo-dstImage-09109# If @dstImage@ is
+--     sparse then all memory ranges accessed by the copy command /must/ be
+--     bound as described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#sparsememory-resource-binding Binding Resource Memory>
+--
+-- -   #VUID-VkCopyMemoryToImageInfo-dstImage-09111# If the stencil aspect
+--     of @dstImage@ is accessed, and @dstImage@ was not created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageStencilUsageCreateInfo separate stencil usage>,
+--     @dstImage@ /must/ have been created with the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_HOST_TRANSFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-VkCopyMemoryToImageInfo-dstImage-09112# If the stencil aspect
+--     of @dstImage@ is accessed, and @dstImage@ was created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageStencilUsageCreateInfo separate stencil usage>,
+--     @dstImage@ /must/ have been created with the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_HOST_TRANSFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-VkCopyMemoryToImageInfo-dstImage-09113# If non-stencil aspects
+--     of @dstImage@ are accessed, @dstImage@ /must/ have been created with
+--     the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_HOST_TRANSFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-VkCopyMemoryToImageInfo-imageOffset-09114# If @flags@ contains
+--     'Vulkan.Core14.Enums.HostImageCopyFlagBits.HOST_IMAGE_COPY_MEMCPY_BIT',
+--     the @x@, @y@, and @z@ members of the @imageOffset@ member of each
+--     element of @pRegions@ /must/ be @0@
+--
+-- -   #VUID-VkCopyMemoryToImageInfo-dstImage-09115# If @flags@ contains
+--     'Vulkan.Core14.Enums.HostImageCopyFlagBits.HOST_IMAGE_COPY_MEMCPY_BIT',
+--     the @imageExtent@ member of each element of @pRegions@ /must/ equal
+--     the extents of @dstImage@ identified by @imageSubresource@
+--
+-- -   #VUID-VkCopyMemoryToImageInfo-dstImage-07966# If @dstImage@ is
+--     non-sparse then the image or each specified /disjoint/ plane /must/
+--     be bound completely and contiguously to a single
+--     'Vulkan.Core10.Handles.DeviceMemory' object
+--
+-- -   #VUID-VkCopyMemoryToImageInfo-imageSubresource-07967# 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-VkCopyMemoryToImageInfo-imageSubresource-07968# If
+--     @imageSubresource.layerCount@ is not
+--     'Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS',
+--     @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-VkCopyMemoryToImageInfo-dstImage-07969# @dstImage@ /must/ not
+--     have been created with @flags@ containing
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT'
+--
+-- -   #VUID-VkCopyMemoryToImageInfo-imageSubresource-07971# 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-VkCopyMemoryToImageInfo-imageSubresource-07972# 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-VkCopyMemoryToImageInfo-dstImage-07973# @dstImage@ /must/ have
+--     a sample count equal to
+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'
+--
+-- -   #VUID-VkCopyMemoryToImageInfo-dstImage-07979# 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-VkCopyMemoryToImageInfo-imageOffset-09104# 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-VkCopyMemoryToImageInfo-dstImage-07980# 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-VkCopyMemoryToImageInfo-dstImage-07274# For each element of
+--     @pRegions@, if
+--     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
+--     is equal to
+--     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_IDENTITY_BIT_KHR'
+--     or
+--     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_270_BIT_KHR',
+--     @imageOffset.x@ /must/ be a multiple of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width>
+--     of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@
+--
+-- -   #VUID-VkCopyMemoryToImageInfo-imageOffset-10051# For each element of
+--     @pRegions@, if
+--     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
+--     is equal to
+--     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_180_BIT_KHR'
+--     or
+--     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_90_BIT_KHR',
+--     and @imageOffset.x@ does not equal the width of the subresource
+--     specified by @imageSubresource@, @imageOffset.x@ /must/ be a
+--     multiple of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width>
+--     of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@
+--
+-- -   #VUID-VkCopyMemoryToImageInfo-dstImage-07275# For each element of
+--     @pRegions@, if
+--     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
+--     is equal to
+--     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_IDENTITY_BIT_KHR'
+--     or
+--     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_90_BIT_KHR',
+--     @imageOffset.y@ /must/ be a multiple of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent height>
+--     of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@
+--
+-- -   #VUID-VkCopyMemoryToImageInfo-imageOffset-10052# For each element of
+--     @pRegions@, if
+--     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
+--     is equal to
+--     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_270_BIT_KHR'
+--     or
+--     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_180_BIT_KHR',
+--     and @imageOffset.y@ does not equal the height of the subresource
+--     specified by @imageSubresource@, @imageOffset.y@ /must/ be a
+--     multiple of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent height>
+--     of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@
+--
+-- -   #VUID-VkCopyMemoryToImageInfo-dstImage-07276# For each element of
+--     @pRegions@, @imageOffset.z@ /must/ be a multiple of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent depth>
+--     of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@
+--
+-- -   #VUID-VkCopyMemoryToImageInfo-dstImage-00207# For each element of
+--     @pRegions@, if
+--     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
+--     is equal to
+--     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_IDENTITY_BIT_KHR',
+--     the sum of @imageOffset.x@ and @extent.width@ does not equal the
+--     width of the subresource specified by @imageSubresource@,
+--     @extent.width@ /must/ be a multiple of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width>
+--     of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@
+--
+-- -   #VUID-VkCopyMemoryToImageInfo-imageOffset-10053# For each element of
+--     @pRegions@, if
+--     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
+--     is equal to
+--     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_90_BIT_KHR',
+--     the difference of @imageOffset.x@ and @extent.height@ /must/ be a
+--     multiple of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width>
+--     of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@
+--
+-- -   #VUID-VkCopyMemoryToImageInfo-imageOffset-10054# For each element of
+--     @pRegions@, if
+--     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
+--     is equal to
+--     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_180_BIT_KHR',
+--     the difference of @imageOffset.x@ and @extent.width@ /must/ be a
+--     multiple of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width>
+--     of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@
+--
+-- -   #VUID-VkCopyMemoryToImageInfo-imageOffset-10055# For each element of
+--     @pRegions@, if
+--     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
+--     is equal to
+--     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_270_BIT_KHR',
+--     the sum of @imageOffset.x@ and @extent.height@ does not equal the
+--     width of the subresource specified by @imageSubresource@,
+--     @extent.height@ /must/ be a multiple of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width>
+--     of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@
+--
+-- -   #VUID-VkCopyMemoryToImageInfo-dstImage-00208# For each element of
+--     @pRegions@, if
+--     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
+--     is equal to
+--     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_IDENTITY_BIT_KHR',
+--     and the sum of @imageOffset.y@ and @extent.height@ does not equal
+--     the height of the subresource specified by @imageSubresource@,
+--     @extent.height@ /must/ be a multiple of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent height>
+--     of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@
+--
+-- -   #VUID-VkCopyMemoryToImageInfo-imageOffset-10056# For each element of
+--     @pRegions@, if
+--     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
+--     is equal to
+--     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_90_BIT_KHR',
+--     the sum of @imageOffset.y@ and @extent.width@ does not equal the
+--     height of the subresource specified by @imageSubresource@,
+--     @extent.width@ /must/ be a multiple of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent height>
+--     of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@
+--
+-- -   #VUID-VkCopyMemoryToImageInfo-imageOffset-10057# For each element of
+--     @pRegions@, if
+--     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
+--     is equal to
+--     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_180_BIT_KHR',
+--     the difference of @imageOffset.y@ and @extent.height@ /must/ be a
+--     multiple of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent height>
+--     of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@
+--
+-- -   #VUID-VkCopyMemoryToImageInfo-imageOffset-10058# For each element of
+--     @pRegions@, if
+--     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
+--     is equal to
+--     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_270_BIT_KHR',
+--     the difference of @imageOffset.y@ and @extent.width@ /must/ be a
+--     multiple of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent height>
+--     of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@
+--
+-- -   #VUID-VkCopyMemoryToImageInfo-dstImage-00209# For each element of
+--     @pRegions@, if the sum of @imageOffset.z@ and @extent.depth@ does
+--     not equal the depth of the subresource specified by
+--     @srcSubresource@, @extent.depth@ /must/ be a multiple of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent depth>
+--     of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@
+--
+-- -   #VUID-VkCopyMemoryToImageInfo-imageSubresource-09105# For each
+--     element of @pRegions@, @imageSubresource.aspectMask@ /must/ specify
+--     aspects present in @dstImage@
+--
+-- -   #VUID-VkCopyMemoryToImageInfo-dstImage-07981# If @dstImage@ has a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-multiplanar multi-planar format>,
+--     then for each element of @pRegions@, @imageSubresource.aspectMask@
+--     /must/ be a single valid
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-multiplanar-image-aspect multi-planar aspect mask>
+--     bit
+--
+-- -   #VUID-VkCopyMemoryToImageInfo-dstImage-07983# 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-VkCopyMemoryToImageInfo-memoryRowLength-09106# For each
+--     element of @pRegions@, @memoryRowLength@ /must/ be a multiple of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width>
+--     of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@
+--
+-- -   #VUID-VkCopyMemoryToImageInfo-memoryImageHeight-09107# For each
+--     element of @pRegions@, @memoryImageHeight@ /must/ be a multiple of
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent height>
+--     of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@
+--
+-- -   #VUID-VkCopyMemoryToImageInfo-memoryRowLength-09108# For each
+--     element of @pRegions@, @memoryRowLength@ divided by the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width>
+--     and then multiplied by the texel block size of @dstImage@ /must/ be
+--     less than or equal to 231-1
+--
+-- -   #VUID-VkCopyMemoryToImageInfo-dstImageLayout-09059# @dstImageLayout@
+--     /must/ specify the current layout of the image subresources of
+--     @dstImage@ specified in @pRegions@
+--
+-- -   #VUID-VkCopyMemoryToImageInfo-dstImageLayout-09060# @dstImageLayout@
+--     /must/ be one of the image layouts returned in
+--     'PhysicalDeviceHostImageCopyProperties'::@pCopyDstLayouts@
+--
+-- -   #VUID-VkCopyMemoryToImageInfo-flags-09393# If @flags@ includes
+--     'Vulkan.Core14.Enums.HostImageCopyFlagBits.HOST_IMAGE_COPY_MEMCPY_BIT',
+--     for each region in @pRegions@, @memoryRowLength@ and
+--     @memoryImageHeight@ /must/ both be 0
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkCopyMemoryToImageInfo-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO'
+--
+-- -   #VUID-VkCopyMemoryToImageInfo-pNext-pNext# @pNext@ /must/ be @NULL@
+--
+-- -   #VUID-VkCopyMemoryToImageInfo-flags-parameter# @flags@ /must/ be a
+--     valid combination of
+--     'Vulkan.Core14.Enums.HostImageCopyFlagBits.HostImageCopyFlagBits'
+--     values
+--
+-- -   #VUID-VkCopyMemoryToImageInfo-dstImage-parameter# @dstImage@ /must/
+--     be a valid 'Vulkan.Core10.Handles.Image' handle
+--
+-- -   #VUID-VkCopyMemoryToImageInfo-dstImageLayout-parameter#
+--     @dstImageLayout@ /must/ be a valid
+--     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' value
+--
+-- -   #VUID-VkCopyMemoryToImageInfo-pRegions-parameter# @pRegions@ /must/
+--     be a valid pointer to an array of @regionCount@ valid
+--     'MemoryToImageCopy' structures
+--
+-- -   #VUID-VkCopyMemoryToImageInfo-regionCount-arraylength# @regionCount@
+--     /must/ be greater than @0@
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_host_image_copy VK_EXT_host_image_copy>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'Vulkan.Core14.Enums.HostImageCopyFlagBits.HostImageCopyFlags',
+-- 'Vulkan.Core10.Handles.Image',
+-- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout', 'MemoryToImageCopy',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType', 'copyMemoryToImage',
+-- 'copyMemoryToImage'
+data CopyMemoryToImageInfo = CopyMemoryToImageInfo
+  { -- | @flags@ is a bitmask of
+    -- 'Vulkan.Core14.Enums.HostImageCopyFlagBits.HostImageCopyFlagBits' values
+    -- describing additional copy parameters.
+    flags :: HostImageCopyFlags
+  , -- | @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 'MemoryToImageCopy' structures
+    -- specifying the regions to copy.
+    regions :: Vector MemoryToImageCopy
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (CopyMemoryToImageInfo)
+#endif
+deriving instance Show CopyMemoryToImageInfo
+
+instance ToCStruct CopyMemoryToImageInfo where
+  withCStruct x f = allocaBytes 48 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p CopyMemoryToImageInfo{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr HostImageCopyFlags)) (flags)
+    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 @MemoryToImageCopy ((Data.Vector.length (regions)) * 72)
+    lift $ Data.Vector.imapM_ (\i e -> poke (pPRegions' `plusPtr` (72 * (i)) :: Ptr MemoryToImageCopy) (e)) (regions)
+    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr MemoryToImageCopy))) (pPRegions')
+    lift $ f
+  cStructSize = 48
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 24 :: Ptr Image)) (zero)
+    poke ((p `plusPtr` 32 :: Ptr ImageLayout)) (zero)
+    f
+
+instance FromCStruct CopyMemoryToImageInfo where
+  peekCStruct p = do
+    flags <- peek @HostImageCopyFlags ((p `plusPtr` 16 :: Ptr HostImageCopyFlags))
+    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 MemoryToImageCopy) ((p `plusPtr` 40 :: Ptr (Ptr MemoryToImageCopy)))
+    pRegions' <- generateM (fromIntegral regionCount) (\i -> peekCStruct @MemoryToImageCopy ((pRegions `advancePtrBytes` (72 * (i)) :: Ptr MemoryToImageCopy)))
+    pure $ CopyMemoryToImageInfo
+             flags dstImage dstImageLayout pRegions'
+
+instance Zero CopyMemoryToImageInfo where
+  zero = CopyMemoryToImageInfo
+           zero
+           zero
+           zero
+           mempty
+
+
+-- | VkCopyImageToMemoryInfo - Structure specifying parameters of an image to
+-- host memory copy command
+--
+-- = Description
+--
+-- 'copyImageToMemory' does not check whether the device memory associated
+-- with @srcImage@ is currently in use before performing the copy. The
+-- application /must/ guarantee that any previously submitted command that
+-- writes to the copy regions has completed before the host performs the
+-- copy.
+--
+-- Copy regions for the image /must/ be aligned to a multiple of the texel
+-- block extent in each dimension, except at the edges of the image, where
+-- region extents /must/ match the edge of the image.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkCopyImageToMemoryInfo-srcImage-09109# If @srcImage@ is
+--     sparse then all memory ranges accessed by the copy command /must/ be
+--     bound as described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#sparsememory-resource-binding Binding Resource Memory>
+--
+-- -   #VUID-VkCopyImageToMemoryInfo-srcImage-09111# If the stencil aspect
+--     of @srcImage@ is accessed, and @srcImage@ was not created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageStencilUsageCreateInfo separate stencil usage>,
+--     @srcImage@ /must/ have been created with the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_HOST_TRANSFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-VkCopyImageToMemoryInfo-srcImage-09112# If the stencil aspect
+--     of @srcImage@ is accessed, and @srcImage@ was created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageStencilUsageCreateInfo separate stencil usage>,
+--     @srcImage@ /must/ have been created with the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_HOST_TRANSFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-VkCopyImageToMemoryInfo-srcImage-09113# If non-stencil aspects
+--     of @srcImage@ are accessed, @srcImage@ /must/ have been created with
+--     the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_HOST_TRANSFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-VkCopyImageToMemoryInfo-imageOffset-09114# If @flags@ contains
+--     'Vulkan.Core14.Enums.HostImageCopyFlagBits.HOST_IMAGE_COPY_MEMCPY_BIT',
+--     the @x@, @y@, and @z@ members of the @imageOffset@ member of each
+--     element of @pRegions@ /must/ be @0@
+--
+-- -   #VUID-VkCopyImageToMemoryInfo-srcImage-09115# If @flags@ contains
+--     'Vulkan.Core14.Enums.HostImageCopyFlagBits.HOST_IMAGE_COPY_MEMCPY_BIT',
+--     the @imageExtent@ member of each element of @pRegions@ /must/ equal
+--     the extents of @srcImage@ identified by @imageSubresource@
+--
+-- -   #VUID-VkCopyImageToMemoryInfo-srcImage-07966# If @srcImage@ is
+--     non-sparse then the image or each specified /disjoint/ plane /must/
+--     be bound completely and contiguously to a single
+--     'Vulkan.Core10.Handles.DeviceMemory' object
+--
+-- -   #VUID-VkCopyImageToMemoryInfo-imageSubresource-07967# 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-VkCopyImageToMemoryInfo-imageSubresource-07968# If
+--     @imageSubresource.layerCount@ is not
+--     'Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS',
+--     @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-VkCopyImageToMemoryInfo-srcImage-07969# @srcImage@ /must/ not
+--     have been created with @flags@ containing
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT'
+--
+-- -   #VUID-VkCopyImageToMemoryInfo-imageSubresource-07971# 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-VkCopyImageToMemoryInfo-imageSubresource-07972# 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-VkCopyImageToMemoryInfo-srcImage-07973# @srcImage@ /must/ have
+--     a sample count equal to
+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'
+--
+-- -   #VUID-VkCopyImageToMemoryInfo-srcImage-07979# 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-VkCopyImageToMemoryInfo-imageOffset-09104# 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-VkCopyImageToMemoryInfo-srcImage-07980# 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-VkCopyImageToMemoryInfo-srcImage-07274# For each element of
+--     @pRegions@, if
+--     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
+--     is equal to
+--     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_IDENTITY_BIT_KHR'
+--     or
+--     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_270_BIT_KHR',
+--     @imageOffset.x@ /must/ be a multiple of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width>
+--     of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@
+--
+-- -   #VUID-VkCopyImageToMemoryInfo-imageOffset-10051# For each element of
+--     @pRegions@, if
+--     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
+--     is equal to
+--     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_180_BIT_KHR'
+--     or
+--     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_90_BIT_KHR',
+--     and @imageOffset.x@ does not equal the width of the subresource
+--     specified by @imageSubresource@, @imageOffset.x@ /must/ be a
+--     multiple of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width>
+--     of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@
+--
+-- -   #VUID-VkCopyImageToMemoryInfo-srcImage-07275# For each element of
+--     @pRegions@, if
+--     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
+--     is equal to
+--     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_IDENTITY_BIT_KHR'
+--     or
+--     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_90_BIT_KHR',
+--     @imageOffset.y@ /must/ be a multiple of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent height>
+--     of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@
+--
+-- -   #VUID-VkCopyImageToMemoryInfo-imageOffset-10052# For each element of
+--     @pRegions@, if
+--     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
+--     is equal to
+--     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_270_BIT_KHR'
+--     or
+--     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_180_BIT_KHR',
+--     and @imageOffset.y@ does not equal the height of the subresource
+--     specified by @imageSubresource@, @imageOffset.y@ /must/ be a
+--     multiple of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent height>
+--     of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@
+--
+-- -   #VUID-VkCopyImageToMemoryInfo-srcImage-07276# For each element of
+--     @pRegions@, @imageOffset.z@ /must/ be a multiple of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent depth>
+--     of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@
+--
+-- -   #VUID-VkCopyImageToMemoryInfo-srcImage-00207# For each element of
+--     @pRegions@, if
+--     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
+--     is equal to
+--     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_IDENTITY_BIT_KHR',
+--     the sum of @imageOffset.x@ and @extent.width@ does not equal the
+--     width of the subresource specified by @imageSubresource@,
+--     @extent.width@ /must/ be a multiple of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width>
+--     of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@
+--
+-- -   #VUID-VkCopyImageToMemoryInfo-imageOffset-10053# For each element of
+--     @pRegions@, if
+--     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
+--     is equal to
+--     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_90_BIT_KHR',
+--     the difference of @imageOffset.x@ and @extent.height@ /must/ be a
+--     multiple of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width>
+--     of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@
+--
+-- -   #VUID-VkCopyImageToMemoryInfo-imageOffset-10054# For each element of
+--     @pRegions@, if
+--     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
+--     is equal to
+--     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_180_BIT_KHR',
+--     the difference of @imageOffset.x@ and @extent.width@ /must/ be a
+--     multiple of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width>
+--     of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@
+--
+-- -   #VUID-VkCopyImageToMemoryInfo-imageOffset-10055# For each element of
+--     @pRegions@, if
+--     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
+--     is equal to
+--     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_270_BIT_KHR',
+--     the sum of @imageOffset.x@ and @extent.height@ does not equal the
+--     width of the subresource specified by @imageSubresource@,
+--     @extent.height@ /must/ be a multiple of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width>
+--     of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@
+--
+-- -   #VUID-VkCopyImageToMemoryInfo-srcImage-00208# For each element of
+--     @pRegions@, if
+--     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
+--     is equal to
+--     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_IDENTITY_BIT_KHR',
+--     and the sum of @imageOffset.y@ and @extent.height@ does not equal
+--     the height of the subresource specified by @imageSubresource@,
+--     @extent.height@ /must/ be a multiple of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent height>
+--     of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@
+--
+-- -   #VUID-VkCopyImageToMemoryInfo-imageOffset-10056# For each element of
+--     @pRegions@, if
+--     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
+--     is equal to
+--     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_90_BIT_KHR',
+--     the sum of @imageOffset.y@ and @extent.width@ does not equal the
+--     height of the subresource specified by @imageSubresource@,
+--     @extent.width@ /must/ be a multiple of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent height>
+--     of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@
+--
+-- -   #VUID-VkCopyImageToMemoryInfo-imageOffset-10057# For each element of
+--     @pRegions@, if
+--     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
+--     is equal to
+--     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_180_BIT_KHR',
+--     the difference of @imageOffset.y@ and @extent.height@ /must/ be a
+--     multiple of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent height>
+--     of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@
+--
+-- -   #VUID-VkCopyImageToMemoryInfo-imageOffset-10058# For each element of
+--     @pRegions@, if
+--     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
+--     is equal to
+--     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_270_BIT_KHR',
+--     the difference of @imageOffset.y@ and @extent.width@ /must/ be a
+--     multiple of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent height>
+--     of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@
+--
+-- -   #VUID-VkCopyImageToMemoryInfo-srcImage-00209# For each element of
+--     @pRegions@, if the sum of @imageOffset.z@ and @extent.depth@ does
+--     not equal the depth of the subresource specified by
+--     @srcSubresource@, @extent.depth@ /must/ be a multiple of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent depth>
+--     of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@
+--
+-- -   #VUID-VkCopyImageToMemoryInfo-imageSubresource-09105# For each
+--     element of @pRegions@, @imageSubresource.aspectMask@ /must/ specify
+--     aspects present in @srcImage@
+--
+-- -   #VUID-VkCopyImageToMemoryInfo-srcImage-07981# If @srcImage@ has a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-multiplanar multi-planar format>,
+--     then for each element of @pRegions@, @imageSubresource.aspectMask@
+--     /must/ be a single valid
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-multiplanar-image-aspect multi-planar aspect mask>
+--     bit
+--
+-- -   #VUID-VkCopyImageToMemoryInfo-srcImage-07983# 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-VkCopyImageToMemoryInfo-memoryRowLength-09106# For each
+--     element of @pRegions@, @memoryRowLength@ /must/ be a multiple of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width>
+--     of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@
+--
+-- -   #VUID-VkCopyImageToMemoryInfo-memoryImageHeight-09107# For each
+--     element of @pRegions@, @memoryImageHeight@ /must/ be a multiple of
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent height>
+--     of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@
+--
+-- -   #VUID-VkCopyImageToMemoryInfo-memoryRowLength-09108# For each
+--     element of @pRegions@, @memoryRowLength@ divided by the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width>
+--     and then multiplied by the texel block size of @srcImage@ /must/ be
+--     less than or equal to 231-1
+--
+-- -   #VUID-VkCopyImageToMemoryInfo-srcImageLayout-09064# @srcImageLayout@
+--     /must/ specify the current layout of the image subresources of
+--     @srcImage@ specified in @pRegions@
+--
+-- -   #VUID-VkCopyImageToMemoryInfo-srcImageLayout-09065# @srcImageLayout@
+--     /must/ be one of the image layouts returned in
+--     'PhysicalDeviceHostImageCopyProperties'::@pCopySrcLayouts@
+--
+-- -   #VUID-VkCopyImageToMemoryInfo-flags-09394# If @flags@ includes
+--     'Vulkan.Core14.Enums.HostImageCopyFlagBits.HOST_IMAGE_COPY_MEMCPY_BIT',
+--     for each region in @pRegions@, @memoryRowLength@ and
+--     @memoryImageHeight@ /must/ both be 0
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkCopyImageToMemoryInfo-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO'
+--
+-- -   #VUID-VkCopyImageToMemoryInfo-pNext-pNext# @pNext@ /must/ be @NULL@
+--
+-- -   #VUID-VkCopyImageToMemoryInfo-flags-parameter# @flags@ /must/ be a
+--     valid combination of
+--     'Vulkan.Core14.Enums.HostImageCopyFlagBits.HostImageCopyFlagBits'
+--     values
+--
+-- -   #VUID-VkCopyImageToMemoryInfo-srcImage-parameter# @srcImage@ /must/
+--     be a valid 'Vulkan.Core10.Handles.Image' handle
+--
+-- -   #VUID-VkCopyImageToMemoryInfo-srcImageLayout-parameter#
+--     @srcImageLayout@ /must/ be a valid
+--     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' value
+--
+-- -   #VUID-VkCopyImageToMemoryInfo-pRegions-parameter# @pRegions@ /must/
+--     be a valid pointer to an array of @regionCount@ valid
+--     'ImageToMemoryCopy' structures
+--
+-- -   #VUID-VkCopyImageToMemoryInfo-regionCount-arraylength# @regionCount@
+--     /must/ be greater than @0@
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_host_image_copy VK_EXT_host_image_copy>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'Vulkan.Core14.Enums.HostImageCopyFlagBits.HostImageCopyFlags',
+-- 'Vulkan.Core10.Handles.Image',
+-- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout', 'ImageToMemoryCopy',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType', 'copyImageToMemory',
+-- 'copyImageToMemory'
+data CopyImageToMemoryInfo = CopyImageToMemoryInfo
+  { -- | @flags@ is a bitmask of
+    -- 'Vulkan.Core14.Enums.HostImageCopyFlagBits.HostImageCopyFlagBits' values
+    -- describing additional copy parameters.
+    flags :: HostImageCopyFlags
+  , -- | @srcImage@ is the source image.
+    srcImage :: Image
+  , -- | @srcImageLayout@ is the layout of the source image subresources for the
+    -- copy.
+    srcImageLayout :: ImageLayout
+  , -- | @pRegions@ is a pointer to an array of 'ImageToMemoryCopy' structures
+    -- specifying the regions to copy.
+    regions :: Vector ImageToMemoryCopy
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (CopyImageToMemoryInfo)
+#endif
+deriving instance Show CopyImageToMemoryInfo
+
+instance ToCStruct CopyImageToMemoryInfo where
+  withCStruct x f = allocaBytes 48 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p CopyImageToMemoryInfo{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr HostImageCopyFlags)) (flags)
+    lift $ poke ((p `plusPtr` 24 :: Ptr Image)) (srcImage)
+    lift $ poke ((p `plusPtr` 32 :: Ptr ImageLayout)) (srcImageLayout)
+    lift $ poke ((p `plusPtr` 36 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (regions)) :: Word32))
+    pPRegions' <- ContT $ allocaBytes @ImageToMemoryCopy ((Data.Vector.length (regions)) * 72)
+    lift $ Data.Vector.imapM_ (\i e -> poke (pPRegions' `plusPtr` (72 * (i)) :: Ptr ImageToMemoryCopy) (e)) (regions)
+    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr ImageToMemoryCopy))) (pPRegions')
+    lift $ f
+  cStructSize = 48
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 24 :: Ptr Image)) (zero)
+    poke ((p `plusPtr` 32 :: Ptr ImageLayout)) (zero)
+    f
+
+instance FromCStruct CopyImageToMemoryInfo where
+  peekCStruct p = do
+    flags <- peek @HostImageCopyFlags ((p `plusPtr` 16 :: Ptr HostImageCopyFlags))
+    srcImage <- peek @Image ((p `plusPtr` 24 :: Ptr Image))
+    srcImageLayout <- peek @ImageLayout ((p `plusPtr` 32 :: Ptr ImageLayout))
+    regionCount <- peek @Word32 ((p `plusPtr` 36 :: Ptr Word32))
+    pRegions <- peek @(Ptr ImageToMemoryCopy) ((p `plusPtr` 40 :: Ptr (Ptr ImageToMemoryCopy)))
+    pRegions' <- generateM (fromIntegral regionCount) (\i -> peekCStruct @ImageToMemoryCopy ((pRegions `advancePtrBytes` (72 * (i)) :: Ptr ImageToMemoryCopy)))
+    pure $ CopyImageToMemoryInfo
+             flags srcImage srcImageLayout pRegions'
+
+instance Zero CopyImageToMemoryInfo where
+  zero = CopyImageToMemoryInfo
+           zero
+           zero
+           zero
+           mempty
+
+
+-- | VkCopyImageToImageInfo - Structure specifying parameters of an image to
+-- image host copy command
+--
+-- = Description
+--
+-- 'copyImageToImage' does not check whether the device memory associated
+-- with @srcImage@ or @dstImage@ is currently in use before performing the
+-- copy. The application /must/ guarantee that any previously submitted
+-- command that writes to the copy regions has completed before the host
+-- performs the copy.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkCopyImageToImageInfo-srcImage-09069# @srcImage@ and
+--     @dstImage@ /must/ have been created with identical image creation
+--     parameters
+--
+-- -   #VUID-VkCopyImageToImageInfo-srcImage-09109# If @srcImage@ is sparse
+--     then all memory ranges accessed by the copy command /must/ be bound
+--     as described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#sparsememory-resource-binding Binding Resource Memory>
+--
+-- -   #VUID-VkCopyImageToImageInfo-srcImage-09111# If the stencil aspect
+--     of @srcImage@ is accessed, and @srcImage@ was not created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageStencilUsageCreateInfo separate stencil usage>,
+--     @srcImage@ /must/ have been created with the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_HOST_TRANSFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-VkCopyImageToImageInfo-srcImage-09112# If the stencil aspect
+--     of @srcImage@ is accessed, and @srcImage@ was created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageStencilUsageCreateInfo separate stencil usage>,
+--     @srcImage@ /must/ have been created with the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_HOST_TRANSFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-VkCopyImageToImageInfo-srcImage-09113# If non-stencil aspects
+--     of @srcImage@ are accessed, @srcImage@ /must/ have been created with
+--     the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_HOST_TRANSFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-VkCopyImageToImageInfo-srcOffset-09114# If @flags@ contains
+--     'Vulkan.Core14.Enums.HostImageCopyFlagBits.HOST_IMAGE_COPY_MEMCPY_BIT',
+--     the @x@, @y@, and @z@ members of the @srcOffset@ member of each
+--     element of @pRegions@ /must/ be @0@
+--
+-- -   #VUID-VkCopyImageToImageInfo-srcImage-09115# If @flags@ contains
+--     'Vulkan.Core14.Enums.HostImageCopyFlagBits.HOST_IMAGE_COPY_MEMCPY_BIT',
+--     the @extent@ member of each element of @pRegions@ /must/ equal the
+--     extents of @srcImage@ identified by @srcSubresource@
+--
+-- -   #VUID-VkCopyImageToImageInfo-srcImage-07966# If @srcImage@ is
+--     non-sparse then the image or each specified /disjoint/ plane /must/
+--     be bound completely and contiguously to a single
+--     'Vulkan.Core10.Handles.DeviceMemory' object
+--
+-- -   #VUID-VkCopyImageToImageInfo-srcSubresource-07967# 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-VkCopyImageToImageInfo-srcSubresource-07968# If
+--     @srcSubresource.layerCount@ is not
+--     'Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS',
+--     @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-VkCopyImageToImageInfo-srcImage-07969# @srcImage@ /must/ not
+--     have been created with @flags@ containing
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT'
+--
+-- -   #VUID-VkCopyImageToImageInfo-srcSubresource-07971# 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-VkCopyImageToImageInfo-srcSubresource-07972# 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-VkCopyImageToImageInfo-srcImage-07979# 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-VkCopyImageToImageInfo-srcOffset-09104# 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-VkCopyImageToImageInfo-srcImage-07980# 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-VkCopyImageToImageInfo-srcImage-07274# For each element of
+--     @pRegions@, if
+--     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
+--     is equal to
+--     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_IDENTITY_BIT_KHR'
+--     or
+--     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_270_BIT_KHR',
+--     @srcOffset.x@ /must/ be a multiple of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width>
+--     of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@
+--
+-- -   #VUID-VkCopyImageToImageInfo-srcOffset-10051# For each element of
+--     @pRegions@, if
+--     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
+--     is equal to
+--     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_180_BIT_KHR'
+--     or
+--     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_90_BIT_KHR',
+--     and @srcOffset.x@ does not equal the width of the subresource
+--     specified by @srcSubresource@, @srcOffset.x@ /must/ be a multiple of
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width>
+--     of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@
+--
+-- -   #VUID-VkCopyImageToImageInfo-srcImage-07275# For each element of
+--     @pRegions@, if
+--     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
+--     is equal to
+--     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_IDENTITY_BIT_KHR'
+--     or
+--     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_90_BIT_KHR',
+--     @srcOffset.y@ /must/ be a multiple of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent height>
+--     of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@
+--
+-- -   #VUID-VkCopyImageToImageInfo-srcOffset-10052# For each element of
+--     @pRegions@, if
+--     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
+--     is equal to
+--     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_270_BIT_KHR'
+--     or
+--     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_180_BIT_KHR',
+--     and @srcOffset.y@ does not equal the height of the subresource
+--     specified by @srcSubresource@, @srcOffset.y@ /must/ be a multiple of
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent height>
+--     of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@
+--
+-- -   #VUID-VkCopyImageToImageInfo-srcImage-07276# For each element of
+--     @pRegions@, @srcOffset.z@ /must/ be a multiple of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent depth>
+--     of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@
+--
+-- -   #VUID-VkCopyImageToImageInfo-srcImage-00207# For each element of
+--     @pRegions@, if
+--     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
+--     is equal to
+--     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_IDENTITY_BIT_KHR',
+--     the sum of @srcOffset.x@ and @extent.width@ does not equal the width
+--     of the subresource specified by @srcSubresource@, @extent.width@
+--     /must/ be a multiple of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width>
+--     of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@
+--
+-- -   #VUID-VkCopyImageToImageInfo-srcOffset-10053# For each element of
+--     @pRegions@, if
+--     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
+--     is equal to
+--     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_90_BIT_KHR',
+--     the difference of @srcOffset.x@ and @extent.height@ /must/ be a
+--     multiple of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width>
+--     of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@
+--
+-- -   #VUID-VkCopyImageToImageInfo-srcOffset-10054# For each element of
+--     @pRegions@, if
+--     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
+--     is equal to
+--     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_180_BIT_KHR',
+--     the difference of @srcOffset.x@ and @extent.width@ /must/ be a
+--     multiple of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width>
+--     of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@
+--
+-- -   #VUID-VkCopyImageToImageInfo-srcOffset-10055# For each element of
+--     @pRegions@, if
+--     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
+--     is equal to
+--     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_270_BIT_KHR',
+--     the sum of @srcOffset.x@ and @extent.height@ does not equal the
+--     width of the subresource specified by @srcSubresource@,
+--     @extent.height@ /must/ be a multiple of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width>
+--     of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@
+--
+-- -   #VUID-VkCopyImageToImageInfo-srcImage-00208# For each element of
+--     @pRegions@, if
+--     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
+--     is equal to
+--     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_IDENTITY_BIT_KHR',
+--     and the sum of @srcOffset.y@ and @extent.height@ does not equal the
+--     height of the subresource specified by @srcSubresource@,
+--     @extent.height@ /must/ be a multiple of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent height>
+--     of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@
+--
+-- -   #VUID-VkCopyImageToImageInfo-srcOffset-10056# For each element of
+--     @pRegions@, if
+--     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
+--     is equal to
+--     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_90_BIT_KHR',
+--     the sum of @srcOffset.y@ and @extent.width@ does not equal the
+--     height of the subresource specified by @srcSubresource@,
+--     @extent.width@ /must/ be a multiple of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent height>
+--     of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@
+--
+-- -   #VUID-VkCopyImageToImageInfo-srcOffset-10057# For each element of
+--     @pRegions@, if
+--     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
+--     is equal to
+--     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_180_BIT_KHR',
+--     the difference of @srcOffset.y@ and @extent.height@ /must/ be a
+--     multiple of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent height>
+--     of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@
+--
+-- -   #VUID-VkCopyImageToImageInfo-srcOffset-10058# For each element of
+--     @pRegions@, if
+--     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
+--     is equal to
+--     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_270_BIT_KHR',
+--     the difference of @srcOffset.y@ and @extent.width@ /must/ be a
+--     multiple of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent height>
+--     of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@
+--
+-- -   #VUID-VkCopyImageToImageInfo-srcImage-00209# For each element of
+--     @pRegions@, if the sum of @srcOffset.z@ and @extent.depth@ does not
+--     equal the depth of the subresource specified by @srcSubresource@,
+--     @extent.depth@ /must/ be a multiple of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent depth>
+--     of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@
+--
+-- -   #VUID-VkCopyImageToImageInfo-srcSubresource-09105# For each element
+--     of @pRegions@, @srcSubresource.aspectMask@ /must/ specify aspects
+--     present in @srcImage@
+--
+-- -   #VUID-VkCopyImageToImageInfo-srcImage-07981# If @srcImage@ has a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-multiplanar multi-planar format>,
+--     then for each element of @pRegions@, @srcSubresource.aspectMask@
+--     /must/ be a single valid
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-multiplanar-image-aspect multi-planar aspect mask>
+--     bit
+--
+-- -   #VUID-VkCopyImageToImageInfo-srcImage-07983# If @srcImage@ is of
+--     type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', for each element
+--     of @pRegions@, @srcSubresource.baseArrayLayer@ /must/ be @0@ and
+--     @srcSubresource.layerCount@ /must/ be @1@
+--
+-- -   #VUID-VkCopyImageToImageInfo-dstImage-09109# If @dstImage@ is sparse
+--     then all memory ranges accessed by the copy command /must/ be bound
+--     as described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#sparsememory-resource-binding Binding Resource Memory>
+--
+-- -   #VUID-VkCopyImageToImageInfo-dstImage-09111# If the stencil aspect
+--     of @dstImage@ is accessed, and @dstImage@ was not created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageStencilUsageCreateInfo separate stencil usage>,
+--     @dstImage@ /must/ have been created with the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_HOST_TRANSFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-VkCopyImageToImageInfo-dstImage-09112# If the stencil aspect
+--     of @dstImage@ is accessed, and @dstImage@ was created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageStencilUsageCreateInfo separate stencil usage>,
+--     @dstImage@ /must/ have been created with the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_HOST_TRANSFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-VkCopyImageToImageInfo-dstImage-09113# If non-stencil aspects
+--     of @dstImage@ are accessed, @dstImage@ /must/ have been created with
+--     the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_HOST_TRANSFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-VkCopyImageToImageInfo-dstOffset-09114# If @flags@ contains
+--     'Vulkan.Core14.Enums.HostImageCopyFlagBits.HOST_IMAGE_COPY_MEMCPY_BIT',
+--     the @x@, @y@, and @z@ members of the @dstOffset@ member of each
+--     element of @pRegions@ /must/ be @0@
+--
+-- -   #VUID-VkCopyImageToImageInfo-dstImage-09115# If @flags@ contains
+--     'Vulkan.Core14.Enums.HostImageCopyFlagBits.HOST_IMAGE_COPY_MEMCPY_BIT',
+--     the @extent@ member of each element of @pRegions@ /must/ equal the
+--     extents of @dstImage@ identified by @dstSubresource@
+--
+-- -   #VUID-VkCopyImageToImageInfo-dstImage-07966# If @dstImage@ is
+--     non-sparse then the image or each specified /disjoint/ plane /must/
+--     be bound completely and contiguously to a single
+--     'Vulkan.Core10.Handles.DeviceMemory' object
+--
+-- -   #VUID-VkCopyImageToImageInfo-dstSubresource-07967# 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-VkCopyImageToImageInfo-dstSubresource-07968# If
+--     @dstSubresource.layerCount@ is not
+--     'Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS',
+--     @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-VkCopyImageToImageInfo-dstImage-07969# @dstImage@ /must/ not
+--     have been created with @flags@ containing
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT'
+--
+-- -   #VUID-VkCopyImageToImageInfo-dstSubresource-07971# 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-VkCopyImageToImageInfo-dstSubresource-07972# 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-VkCopyImageToImageInfo-dstImage-07979# 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-VkCopyImageToImageInfo-dstOffset-09104# 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-VkCopyImageToImageInfo-dstImage-07980# 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@
+--
+-- -   #VUID-VkCopyImageToImageInfo-dstImage-07274# For each element of
+--     @pRegions@, if
+--     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
+--     is equal to
+--     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_IDENTITY_BIT_KHR'
+--     or
+--     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_270_BIT_KHR',
+--     @dstOffset.x@ /must/ be a multiple of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width>
+--     of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@
+--
+-- -   #VUID-VkCopyImageToImageInfo-dstOffset-10051# For each element of
+--     @pRegions@, if
+--     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
+--     is equal to
+--     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_180_BIT_KHR'
+--     or
+--     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_90_BIT_KHR',
+--     and @dstOffset.x@ does not equal the width of the subresource
+--     specified by @dstSubresource@, @dstOffset.x@ /must/ be a multiple of
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width>
+--     of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@
+--
+-- -   #VUID-VkCopyImageToImageInfo-dstImage-07275# For each element of
+--     @pRegions@, if
+--     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
+--     is equal to
+--     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_IDENTITY_BIT_KHR'
+--     or
+--     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_90_BIT_KHR',
+--     @dstOffset.y@ /must/ be a multiple of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent height>
+--     of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@
+--
+-- -   #VUID-VkCopyImageToImageInfo-dstOffset-10052# For each element of
+--     @pRegions@, if
+--     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
+--     is equal to
+--     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_270_BIT_KHR'
+--     or
+--     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_180_BIT_KHR',
+--     and @dstOffset.y@ does not equal the height of the subresource
+--     specified by @dstSubresource@, @dstOffset.y@ /must/ be a multiple of
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent height>
+--     of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@
+--
+-- -   #VUID-VkCopyImageToImageInfo-dstImage-07276# For each element of
+--     @pRegions@, @dstOffset.z@ /must/ be a multiple of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent depth>
+--     of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@
+--
+-- -   #VUID-VkCopyImageToImageInfo-dstImage-00207# For each element of
+--     @pRegions@, if
+--     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
+--     is equal to
+--     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_IDENTITY_BIT_KHR',
+--     the sum of @dstOffset.x@ and @extent.width@ does not equal the width
+--     of the subresource specified by @dstSubresource@, @extent.width@
+--     /must/ be a multiple of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width>
+--     of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@
+--
+-- -   #VUID-VkCopyImageToImageInfo-dstOffset-10053# For each element of
+--     @pRegions@, if
+--     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
+--     is equal to
+--     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_90_BIT_KHR',
+--     the difference of @dstOffset.x@ and @extent.height@ /must/ be a
+--     multiple of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width>
+--     of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@
+--
+-- -   #VUID-VkCopyImageToImageInfo-dstOffset-10054# For each element of
+--     @pRegions@, if
+--     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
+--     is equal to
+--     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_180_BIT_KHR',
+--     the difference of @dstOffset.x@ and @extent.width@ /must/ be a
+--     multiple of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width>
+--     of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@
+--
+-- -   #VUID-VkCopyImageToImageInfo-dstOffset-10055# For each element of
+--     @pRegions@, if
+--     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
+--     is equal to
+--     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_270_BIT_KHR',
+--     the sum of @dstOffset.x@ and @extent.height@ does not equal the
+--     width of the subresource specified by @dstSubresource@,
+--     @extent.height@ /must/ be a multiple of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width>
+--     of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@
+--
+-- -   #VUID-VkCopyImageToImageInfo-dstImage-00208# For each element of
+--     @pRegions@, if
+--     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
+--     is equal to
+--     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_IDENTITY_BIT_KHR',
+--     and the sum of @dstOffset.y@ and @extent.height@ does not equal the
+--     height of the subresource specified by @dstSubresource@,
+--     @extent.height@ /must/ be a multiple of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent height>
+--     of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@
+--
+-- -   #VUID-VkCopyImageToImageInfo-dstOffset-10056# For each element of
+--     @pRegions@, if
+--     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
+--     is equal to
+--     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_90_BIT_KHR',
+--     the sum of @dstOffset.y@ and @extent.width@ does not equal the
+--     height of the subresource specified by @dstSubresource@,
+--     @extent.width@ /must/ be a multiple of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent height>
+--     of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@
+--
+-- -   #VUID-VkCopyImageToImageInfo-dstOffset-10057# For each element of
+--     @pRegions@, if
+--     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
+--     is equal to
+--     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_180_BIT_KHR',
+--     the difference of @dstOffset.y@ and @extent.height@ /must/ be a
+--     multiple of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent height>
+--     of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@
+--
+-- -   #VUID-VkCopyImageToImageInfo-dstOffset-10058# For each element of
+--     @pRegions@, if
+--     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
+--     is equal to
+--     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_270_BIT_KHR',
+--     the difference of @dstOffset.y@ and @extent.width@ /must/ be a
+--     multiple of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent height>
+--     of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@
+--
+-- -   #VUID-VkCopyImageToImageInfo-dstImage-00209# For each element of
+--     @pRegions@, if the sum of @dstOffset.z@ and @extent.depth@ does not
+--     equal the depth of the subresource specified by @srcSubresource@,
+--     @extent.depth@ /must/ be a multiple of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent depth>
+--     of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@
+--
+-- -   #VUID-VkCopyImageToImageInfo-dstSubresource-09105# For each element
+--     of @pRegions@, @dstSubresource.aspectMask@ /must/ specify aspects
+--     present in @dstImage@
+--
+-- -   #VUID-VkCopyImageToImageInfo-dstImage-07981# If @dstImage@ has a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-multiplanar multi-planar format>,
+--     then for each element of @pRegions@, @dstSubresource.aspectMask@
+--     /must/ be a single valid
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-multiplanar-image-aspect multi-planar aspect mask>
+--     bit
+--
+-- -   #VUID-VkCopyImageToImageInfo-dstImage-07983# If @dstImage@ is of
+--     type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', for each element
+--     of @pRegions@, @dstSubresource.baseArrayLayer@ /must/ be @0@ and
+--     @dstSubresource.layerCount@ /must/ be @1@
+--
+-- -   #VUID-VkCopyImageToImageInfo-srcImageLayout-09070# @srcImageLayout@
+--     /must/ specify the current layout of the image subresources of
+--     @srcImage@ specified in @pRegions@
+--
+-- -   #VUID-VkCopyImageToImageInfo-dstImageLayout-09071# @dstImageLayout@
+--     /must/ specify the current layout of the image subresources of
+--     @dstImage@ specified in @pRegions@
+--
+-- -   #VUID-VkCopyImageToImageInfo-srcImageLayout-09072# @srcImageLayout@
+--     /must/ be one of the image layouts returned in
+--     'PhysicalDeviceHostImageCopyProperties'::@pCopySrcLayouts@
+--
+-- -   #VUID-VkCopyImageToImageInfo-dstImageLayout-09073# @dstImageLayout@
+--     /must/ be one of the image layouts returned in
+--     'PhysicalDeviceHostImageCopyProperties'::@pCopyDstLayouts@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkCopyImageToImageInfo-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO'
+--
+-- -   #VUID-VkCopyImageToImageInfo-pNext-pNext# @pNext@ /must/ be @NULL@
+--
+-- -   #VUID-VkCopyImageToImageInfo-flags-parameter# @flags@ /must/ be a
+--     valid combination of
+--     'Vulkan.Core14.Enums.HostImageCopyFlagBits.HostImageCopyFlagBits'
+--     values
+--
+-- -   #VUID-VkCopyImageToImageInfo-srcImage-parameter# @srcImage@ /must/
+--     be a valid 'Vulkan.Core10.Handles.Image' handle
+--
+-- -   #VUID-VkCopyImageToImageInfo-srcImageLayout-parameter#
+--     @srcImageLayout@ /must/ be a valid
+--     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' value
+--
+-- -   #VUID-VkCopyImageToImageInfo-dstImage-parameter# @dstImage@ /must/
+--     be a valid 'Vulkan.Core10.Handles.Image' handle
+--
+-- -   #VUID-VkCopyImageToImageInfo-dstImageLayout-parameter#
+--     @dstImageLayout@ /must/ be a valid
+--     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' value
+--
+-- -   #VUID-VkCopyImageToImageInfo-pRegions-parameter# @pRegions@ /must/
+--     be a valid pointer to an array of @regionCount@ valid
+--     'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.ImageCopy2'
+--     structures
+--
+-- -   #VUID-VkCopyImageToImageInfo-regionCount-arraylength# @regionCount@
+--     /must/ be greater than @0@
+--
+-- -   #VUID-VkCopyImageToImageInfo-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_EXT_host_image_copy VK_EXT_host_image_copy>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'Vulkan.Core14.Enums.HostImageCopyFlagBits.HostImageCopyFlags',
+-- 'Vulkan.Core10.Handles.Image',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.ImageCopy2',
+-- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType', 'copyImageToImage',
+-- 'copyImageToImage'
+data CopyImageToImageInfo = CopyImageToImageInfo
+  { -- | @flags@ is a bitmask of
+    -- 'Vulkan.Core14.Enums.HostImageCopyFlagBits.HostImageCopyFlagBits' values
+    -- describing additional copy parameters.
+    flags :: HostImageCopyFlags
+  , -- | @srcImage@ is the source image.
+    srcImage :: Image
+  , -- | @srcImageLayout@ is the layout of the source image subresources for the
+    -- copy.
+    srcImageLayout :: ImageLayout
+  , -- | @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
+    -- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.ImageCopy2'
+    -- structures specifying the regions to copy.
+    regions :: Vector ImageCopy2
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (CopyImageToImageInfo)
+#endif
+deriving instance Show CopyImageToImageInfo
+
+instance ToCStruct CopyImageToImageInfo where
+  withCStruct x f = allocaBytes 64 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p CopyImageToImageInfo{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr HostImageCopyFlags)) (flags)
+    lift $ poke ((p `plusPtr` 24 :: Ptr Image)) (srcImage)
+    lift $ poke ((p `plusPtr` 32 :: Ptr ImageLayout)) (srcImageLayout)
+    lift $ poke ((p `plusPtr` 40 :: Ptr Image)) (dstImage)
+    lift $ poke ((p `plusPtr` 48 :: Ptr ImageLayout)) (dstImageLayout)
+    lift $ poke ((p `plusPtr` 52 :: 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` 56 :: Ptr (Ptr ImageCopy2))) (pPRegions')
+    lift $ f
+  cStructSize = 64
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 24 :: Ptr Image)) (zero)
+    poke ((p `plusPtr` 32 :: Ptr ImageLayout)) (zero)
+    poke ((p `plusPtr` 40 :: Ptr Image)) (zero)
+    poke ((p `plusPtr` 48 :: Ptr ImageLayout)) (zero)
+    f
+
+instance FromCStruct CopyImageToImageInfo where
+  peekCStruct p = do
+    flags <- peek @HostImageCopyFlags ((p `plusPtr` 16 :: Ptr HostImageCopyFlags))
+    srcImage <- peek @Image ((p `plusPtr` 24 :: Ptr Image))
+    srcImageLayout <- peek @ImageLayout ((p `plusPtr` 32 :: Ptr ImageLayout))
+    dstImage <- peek @Image ((p `plusPtr` 40 :: Ptr Image))
+    dstImageLayout <- peek @ImageLayout ((p `plusPtr` 48 :: Ptr ImageLayout))
+    regionCount <- peek @Word32 ((p `plusPtr` 52 :: Ptr Word32))
+    pRegions <- peek @(Ptr ImageCopy2) ((p `plusPtr` 56 :: Ptr (Ptr ImageCopy2)))
+    pRegions' <- generateM (fromIntegral regionCount) (\i -> peekCStruct @ImageCopy2 ((pRegions `advancePtrBytes` (88 * (i)) :: Ptr ImageCopy2)))
+    pure $ CopyImageToImageInfo
+             flags srcImage srcImageLayout dstImage dstImageLayout pRegions'
+
+instance Zero CopyImageToImageInfo where
+  zero = CopyImageToImageInfo
+           zero
+           zero
+           zero
+           zero
+           zero
+           mempty
+
+
+-- | VkHostImageLayoutTransitionInfo - Structure specifying the parameters of
+-- a host-side image layout transition
+--
+-- = Description
+--
+-- 'transitionImageLayout' does not check whether the device memory
+-- associated with an image is currently in use before performing the
+-- layout transition. The application /must/ guarantee that any previously
+-- submitted command that reads from or writes to this subresource has
+-- completed before the host performs the layout transition. The memory of
+-- @image@ is accessed by the host as if
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-coherent coherent>.
+--
+-- If @image@ is a 3D image created with
+-- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT'
+-- and the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance9 maintenance9>
+-- feature is enabled, the @baseArrayLayer@ and @layerCount@ members of
+-- @subresourceRange@ specify the subset of slices of the 3D image affected
+-- by the memory barrier, including the layout transition. Any slices of a
+-- 3D image not included in @subresourceRange@ are not affected by the
+-- memory barrier and remain in their existing layout.
+--
+-- Image layout transitions performed on the host do not require queue
+-- family ownership transfers as the physical layout of the image will not
+-- vary between queue families for the layouts supported by this function.
+--
+-- If the device has written to the image memory, it is not automatically
+-- made available to the host. Before this command can be called, a memory
+-- barrier for this image /must/ have been issued on the device with the
+-- second
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+-- including
+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_HOST_BIT' and
+-- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_HOST_READ_BIT'.
+--
+-- Because queue submissions
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-submission-host-writes automatically make host memory visible to the device>,
+-- there would not be a need for a memory barrier before using the results
+-- of this layout transition on the device.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkHostImageLayoutTransitionInfo-image-09055# @image@ /must/
+--     have been created with the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_HOST_TRANSFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-VkHostImageLayoutTransitionInfo-subresourceRange-01486#
+--     @subresourceRange.baseMipLevel@ /must/ be less than the @mipLevels@
+--     specified in 'Vulkan.Core10.Image.ImageCreateInfo' when @image@ was
+--     created
+--
+-- -   #VUID-VkHostImageLayoutTransitionInfo-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-VkHostImageLayoutTransitionInfo-subresourceRange-01488# If
+--     @image@ is not a 3D image or was created without
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT'
+--     set, or the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance9 maintenance9>
+--     feature is not enabled, @subresourceRange.baseArrayLayer@ /must/ be
+--     less than the @arrayLayers@ specified in
+--     'Vulkan.Core10.Image.ImageCreateInfo' when @image@ was created
+--
+-- -   #VUID-VkHostImageLayoutTransitionInfo-maintenance9-10798# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance9 maintenance9>
+--     feature is enabled and @image@ is a 3D image created with
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT'
+--     set, @subresourceRange.baseArrayLayer@ /must/ be less than the depth
+--     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-mip-level-sizing Image Mip Level Sizing>
+--
+-- -   #VUID-VkHostImageLayoutTransitionInfo-maintenance9-10799# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance9 maintenance9>
+--     feature is enabled and @image@ is a 3D image created with
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT'
+--     set and either @subresourceRange.baseArrayLayer@ is not equal to 0
+--     or @subresourceRange.layerCount@ is not equal to
+--     'Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS',
+--     @subresourceRange.levelCount@ /must/ be 1
+--
+-- -   #VUID-VkHostImageLayoutTransitionInfo-subresourceRange-01725# If
+--     @image@ is not a 3D image or was created without
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT'
+--     set, or the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance9 maintenance9>
+--     feature is not enabled, and @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-VkHostImageLayoutTransitionInfo-maintenance9-10800# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance9 maintenance9>
+--     feature is enabled, @subresourceRange.layerCount@ is not
+--     'Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS', and @image@ is
+--     a 3D image created with
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT'
+--     set, @subresourceRange.baseArrayLayer@ +
+--     @subresourceRange.layerCount@ /must/ be less than or equal to the
+--     depth 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-mip-level-sizing Image Mip Level Sizing>
+--
+-- -   #VUID-VkHostImageLayoutTransitionInfo-image-01932# If @image@ is
+--     non-sparse then the image or each specified /disjoint/ plane /must/
+--     be bound completely and contiguously to a single
+--     'Vulkan.Core10.Handles.DeviceMemory' object
+--
+-- -   #VUID-VkHostImageLayoutTransitionInfo-image-09241# If @image@ has a
+--     color format that is single-plane, then the @aspectMask@ member of
+--     @subresourceRange@ /must/ be
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'
+--
+-- -   #VUID-VkHostImageLayoutTransitionInfo-image-09242# If @image@ has a
+--     color format and is not /disjoint/, then the @aspectMask@ member of
+--     @subresourceRange@ /must/ be
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'
+--
+-- -   #VUID-VkHostImageLayoutTransitionInfo-image-01672# If @image@ has a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-multiplanar multi-planar format>
+--     and the image is /disjoint/, then the @aspectMask@ member of
+--     @subresourceRange@ /must/ include at least one
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-multiplanar-image-aspect multi-planar aspect mask>
+--     bit or
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'
+--
+-- -   #VUID-VkHostImageLayoutTransitionInfo-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-VkHostImageLayoutTransitionInfo-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-VkHostImageLayoutTransitionInfo-image-10749# If @image@ has a
+--     depth-only format then the @aspectMask@ member of @subresourceRange@
+--     /must/ be
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT'
+--
+-- -   #VUID-VkHostImageLayoutTransitionInfo-image-10750# If @image@ has a
+--     stencil-only format then the @aspectMask@ member of
+--     @subresourceRange@ /must/ be
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
+--
+-- -   #VUID-VkHostImageLayoutTransitionInfo-aspectMask-08702# If the
+--     @aspectMask@ member of @subresourceRange@ includes
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT',
+--     @oldLayout@ and @newLayout@ /must/ not be one of
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL'
+--     or
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL'
+--
+-- -   #VUID-VkHostImageLayoutTransitionInfo-aspectMask-08703# If the
+--     @aspectMask@ member of @subresourceRange@ includes
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT',
+--     @oldLayout@ and @newLayout@ /must/ not be one of
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL'
+--     or
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL'
+--
+-- -   #VUID-VkHostImageLayoutTransitionInfo-subresourceRange-09601#
+--     @subresourceRange.aspectMask@ /must/ be valid for the @format@ the
+--     @image@ was created with
+--
+-- -   #VUID-VkHostImageLayoutTransitionInfo-oldLayout-01208# If
+--     @oldLayout@ or @newLayout@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL'
+--     then @image@ /must/ have been created with the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT'
+--     usage flag set
+--
+-- -   #VUID-VkHostImageLayoutTransitionInfo-oldLayout-01209# If
+--     @oldLayout@ or @newLayout@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL'
+--     then @image@ /must/ have been created with the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'
+--     usage flag set
+--
+-- -   #VUID-VkHostImageLayoutTransitionInfo-oldLayout-01210# If
+--     @oldLayout@ or @newLayout@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL'
+--     then @image@ /must/ have been created with the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'
+--     usage flag set
+--
+-- -   #VUID-VkHostImageLayoutTransitionInfo-oldLayout-01211# If
+--     @oldLayout@ or @newLayout@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL'
+--     then @image@ /must/ have been created with the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT' or
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT'
+--     usage flag set
+--
+-- -   #VUID-VkHostImageLayoutTransitionInfo-oldLayout-01212# If
+--     @oldLayout@ or @newLayout@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL'
+--     then @image@ /must/ have been created with the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_SRC_BIT'
+--     usage flag set
+--
+-- -   #VUID-VkHostImageLayoutTransitionInfo-oldLayout-01213# If
+--     @oldLayout@ or @newLayout@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL'
+--     then @image@ /must/ have been created with the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'
+--     usage flag set
+--
+-- -   #VUID-VkHostImageLayoutTransitionInfo-oldLayout-10767# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-zeroInitializeDeviceMemory zeroInitializeDeviceMemory>
+--     feature is not enabled, @oldLayout@ /must/ not be
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ZERO_INITIALIZED_EXT'
+--
+-- -   #VUID-VkHostImageLayoutTransitionInfo-oldLayout-10768# If
+--     @oldLayout@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ZERO_INITIALIZED_EXT',
+--     then all subresources /must/ be included in the barrier
+--
+-- -   #VUID-VkHostImageLayoutTransitionInfo-oldLayout-01658# If
+--     @oldLayout@ or @newLayout@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL'
+--     then @image@ /must/ have been created with the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'
+--     usage flag set
+--
+-- -   #VUID-VkHostImageLayoutTransitionInfo-oldLayout-01659# If
+--     @oldLayout@ or @newLayout@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL'
+--     then @image@ /must/ have been created with the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'
+--     usage flag set
+--
+-- -   #VUID-VkHostImageLayoutTransitionInfo-srcQueueFamilyIndex-04065# If
+--     @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 the
+--     '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'
+--     usage flags set
+--
+-- -   #VUID-VkHostImageLayoutTransitionInfo-srcQueueFamilyIndex-04066# If
+--     @oldLayout@ or @newLayout@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL'
+--     then @image@ /must/ have been created with the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'
+--     usage flag set
+--
+-- -   #VUID-VkHostImageLayoutTransitionInfo-srcQueueFamilyIndex-04067# If
+--     @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 the
+--     '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'
+--     usage flags set
+--
+-- -   #VUID-VkHostImageLayoutTransitionInfo-srcQueueFamilyIndex-04068# If
+--     @oldLayout@ or @newLayout@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL'
+--     then @image@ /must/ have been created with the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'
+--     usage flag set
+--
+-- -   #VUID-VkHostImageLayoutTransitionInfo-synchronization2-07793# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2 synchronization2>
+--     feature is not enabled, @oldLayout@ /must/ not be
+--     'Vulkan.Extensions.VK_KHR_synchronization2.IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR'
+--     or
+--     'Vulkan.Extensions.VK_KHR_synchronization2.IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR'
+--
+-- -   #VUID-VkHostImageLayoutTransitionInfo-synchronization2-07794# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2 synchronization2>
+--     feature is not enabled, @newLayout@ /must/ not be
+--     'Vulkan.Extensions.VK_KHR_synchronization2.IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR'
+--     or
+--     'Vulkan.Extensions.VK_KHR_synchronization2.IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR'
+--
+-- -   #VUID-VkHostImageLayoutTransitionInfo-srcQueueFamilyIndex-03938# If
+--     @oldLayout@ or @newLayout@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_OPTIMAL',
+--     @image@ /must/ have been created with the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT'
+--     or
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'
+--     usage flag set
+--
+-- -   #VUID-VkHostImageLayoutTransitionInfo-srcQueueFamilyIndex-03939# If
+--     @oldLayout@ or @newLayout@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_READ_ONLY_OPTIMAL',
+--     @image@ /must/ have been created with at least one of the
+--     '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'
+--     usage flags set
+--
+-- -   #VUID-VkHostImageLayoutTransitionInfo-oldLayout-02088# If
+--     @oldLayout@ or @newLayout@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR'
+--     then @image@ /must/ have been created with the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
+--     usage flag set
+--
+-- -   #VUID-VkHostImageLayoutTransitionInfo-srcQueueFamilyIndex-07120# If
+--     @oldLayout@ or @newLayout@ is
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageLayout VK_IMAGE_LAYOUT_VIDEO_DECODE_SRC_KHR>
+--     then @image@ /must/ have been created with the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR>
+--     usage flag set
+--
+-- -   #VUID-VkHostImageLayoutTransitionInfo-srcQueueFamilyIndex-07121# If
+--     @oldLayout@ or @newLayout@ is
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageLayout VK_IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR>
+--     then @image@ /must/ have been created with the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR>
+--     usage flag set
+--
+-- -   #VUID-VkHostImageLayoutTransitionInfo-srcQueueFamilyIndex-07122# If
+--     @oldLayout@ or @newLayout@ is
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageLayout VK_IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR>
+--     then @image@ /must/ have been created with the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR>
+--     usage flag set
+--
+-- -   #VUID-VkHostImageLayoutTransitionInfo-srcQueueFamilyIndex-07123# If
+--     @oldLayout@ or @newLayout@ is
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageLayout VK_IMAGE_LAYOUT_VIDEO_ENCODE_SRC_KHR>
+--     then @image@ /must/ have been created with the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR>
+--     usage flag set
+--
+-- -   #VUID-VkHostImageLayoutTransitionInfo-srcQueueFamilyIndex-07124# If
+--     @oldLayout@ or @newLayout@ is
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageLayout VK_IMAGE_LAYOUT_VIDEO_ENCODE_DST_KHR>
+--     then @image@ /must/ have been created with the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR>
+--     usage flag set
+--
+-- -   #VUID-VkHostImageLayoutTransitionInfo-srcQueueFamilyIndex-07125# If
+--     @oldLayout@ or @newLayout@ is
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageLayout VK_IMAGE_LAYOUT_VIDEO_ENCODE_DPB_KHR>
+--     then @image@ /must/ have been created with the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR>
+--     usage flag set
+--
+-- -   #VUID-VkHostImageLayoutTransitionInfo-srcQueueFamilyIndex-10287# If
+--     @oldLayout@ or @newLayout@ is
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageLayout VK_IMAGE_LAYOUT_VIDEO_ENCODE_QUANTIZATION_MAP_KHR>
+--     then @image@ /must/ have been created with the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR>
+--     usage flags set
+--
+-- -   #VUID-VkHostImageLayoutTransitionInfo-srcQueueFamilyIndex-07006# If
+--     @oldLayout@ or @newLayout@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
+--     then @image@ /must/ have been created with either the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT'
+--     or
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'
+--     usage flags set, and the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT'
+--     or 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT'
+--     usage flags set, and the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT'
+--     usage flag set
+--
+-- -   #VUID-VkHostImageLayoutTransitionInfo-attachmentFeedbackLoopLayout-07313#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-attachmentFeedbackLoopLayout attachmentFeedbackLoopLayout>
+--     feature is not enabled, @newLayout@ /must/ not be
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
+--
+-- -   #VUID-VkHostImageLayoutTransitionInfo-srcQueueFamilyIndex-09550# If
+--     @oldLayout@ or @newLayout@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_RENDERING_LOCAL_READ'
+--     then @image@ /must/ have been created with either the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_STORAGE_BIT'
+--     usage flag set, or with both the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT'
+--     usage flag and either of the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT'
+--     or
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'
+--     usage flags set
+--
+-- -   #VUID-VkHostImageLayoutTransitionInfo-dynamicRenderingLocalRead-09551#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingLocalRead dynamicRenderingLocalRead>
+--     feature is not enabled, @oldLayout@ /must/ not be
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_RENDERING_LOCAL_READ'
+--
+-- -   #VUID-VkHostImageLayoutTransitionInfo-dynamicRenderingLocalRead-09552#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingLocalRead dynamicRenderingLocalRead>
+--     feature is not enabled, @newLayout@ /must/ not be
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_RENDERING_LOCAL_READ'
+--
+-- -   #VUID-VkHostImageLayoutTransitionInfo-oldLayout-09229# @oldLayout@
+--     /must/ be either
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_UNDEFINED' or the
+--     current layout of the image subresources as specified in
+--     @subresourceRange@
+--
+-- -   #VUID-VkHostImageLayoutTransitionInfo-oldLayout-09230# If
+--     @oldLayout@ is not
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_UNDEFINED',
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ZERO_INITIALIZED_EXT',
+--     or 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_PREINITIALIZED', it
+--     /must/ be one of the layouts in
+--     'PhysicalDeviceHostImageCopyProperties'::@pCopySrcLayouts@
+--
+-- -   #VUID-VkHostImageLayoutTransitionInfo-newLayout-09057# @newLayout@
+--     /must/ be one of the layouts in
+--     'PhysicalDeviceHostImageCopyProperties'::@pCopyDstLayouts@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkHostImageLayoutTransitionInfo-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO'
+--
+-- -   #VUID-VkHostImageLayoutTransitionInfo-pNext-pNext# @pNext@ /must/ be
+--     @NULL@
+--
+-- -   #VUID-VkHostImageLayoutTransitionInfo-image-parameter# @image@
+--     /must/ be a valid 'Vulkan.Core10.Handles.Image' handle
+--
+-- -   #VUID-VkHostImageLayoutTransitionInfo-oldLayout-parameter#
+--     @oldLayout@ /must/ be a valid
+--     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' value
+--
+-- -   #VUID-VkHostImageLayoutTransitionInfo-newLayout-parameter#
+--     @newLayout@ /must/ be a valid
+--     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' value
+--
+-- -   #VUID-VkHostImageLayoutTransitionInfo-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_EXT_host_image_copy VK_EXT_host_image_copy>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'Vulkan.Core10.Handles.Image',
+-- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout',
+-- 'Vulkan.Core10.ImageView.ImageSubresourceRange',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'transitionImageLayout', 'transitionImageLayout'
+data HostImageLayoutTransitionInfo = HostImageLayoutTransitionInfo
+  { -- | @image@ is a handle to the image affected by this layout transition.
+    image :: Image
+  , -- | @oldLayout@ is the old layout in an
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-image-layout-transitions image layout transition>.
+    oldLayout :: ImageLayout
+  , -- | @newLayout@ is the new layout in an
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-image-layout-transitions image layout transition>.
+    newLayout :: ImageLayout
+  , -- | @subresourceRange@ describes the
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-image-views image subresource range>
+    -- within @image@ that is affected by this layout transition.
+    subresourceRange :: ImageSubresourceRange
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (HostImageLayoutTransitionInfo)
+#endif
+deriving instance Show HostImageLayoutTransitionInfo
+
+instance ToCStruct HostImageLayoutTransitionInfo where
+  withCStruct x f = allocaBytes 56 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p HostImageLayoutTransitionInfo{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Image)) (image)
+    poke ((p `plusPtr` 24 :: Ptr ImageLayout)) (oldLayout)
+    poke ((p `plusPtr` 28 :: Ptr ImageLayout)) (newLayout)
+    poke ((p `plusPtr` 32 :: Ptr ImageSubresourceRange)) (subresourceRange)
+    f
+  cStructSize = 56
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Image)) (zero)
+    poke ((p `plusPtr` 24 :: Ptr ImageLayout)) (zero)
+    poke ((p `plusPtr` 28 :: Ptr ImageLayout)) (zero)
+    poke ((p `plusPtr` 32 :: Ptr ImageSubresourceRange)) (zero)
+    f
+
+instance FromCStruct HostImageLayoutTransitionInfo where
+  peekCStruct p = do
+    image <- peek @Image ((p `plusPtr` 16 :: Ptr Image))
+    oldLayout <- peek @ImageLayout ((p `plusPtr` 24 :: Ptr ImageLayout))
+    newLayout <- peek @ImageLayout ((p `plusPtr` 28 :: Ptr ImageLayout))
+    subresourceRange <- peekCStruct @ImageSubresourceRange ((p `plusPtr` 32 :: Ptr ImageSubresourceRange))
+    pure $ HostImageLayoutTransitionInfo
+             image oldLayout newLayout subresourceRange
+
+instance Storable HostImageLayoutTransitionInfo where
+  sizeOf ~_ = 56
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero HostImageLayoutTransitionInfo where
+  zero = HostImageLayoutTransitionInfo
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkSubresourceHostMemcpySize - Memory size needed to copy to or from an
+-- image on the host with VK_HOST_IMAGE_COPY_MEMCPY_BIT
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.SubresourceLayout2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_host_image_copy VK_EXT_host_image_copy>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data SubresourceHostMemcpySize = SubresourceHostMemcpySize
+  { -- | @size@ is the size in bytes of the image subresource.
+    size :: DeviceSize }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (SubresourceHostMemcpySize)
+#endif
+deriving instance Show SubresourceHostMemcpySize
+
+instance ToCStruct SubresourceHostMemcpySize where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p SubresourceHostMemcpySize{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (size)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (zero)
+    f
+
+instance FromCStruct SubresourceHostMemcpySize where
+  peekCStruct p = do
+    size <- peek @DeviceSize ((p `plusPtr` 16 :: Ptr DeviceSize))
+    pure $ SubresourceHostMemcpySize
+             size
+
+instance Storable SubresourceHostMemcpySize where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero SubresourceHostMemcpySize where
+  zero = SubresourceHostMemcpySize
+           zero
+
+
+-- | VkHostImageCopyDevicePerformanceQuery - Struct containing information
+-- about optimality of device access
+--
+-- = Description
+--
+-- The implementation /may/ return 'Vulkan.Core10.FundamentalTypes.FALSE'
+-- in @optimalDeviceAccess@ if @identicalMemoryLayout@ is
+-- 'Vulkan.Core10.FundamentalTypes.FALSE'. If @identicalMemoryLayout@ is
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', @optimalDeviceAccess@ /must/ be
+-- 'Vulkan.Core10.FundamentalTypes.TRUE'.
+--
+-- The implementation /may/ return 'Vulkan.Core10.FundamentalTypes.TRUE' in
+-- @optimalDeviceAccess@ while @identicalMemoryLayout@ is
+-- 'Vulkan.Core10.FundamentalTypes.FALSE'. In this situation, any device
+-- performance impact /should/ not be measurable.
+--
+-- If
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceImageFormatInfo2'::@format@
+-- is a block-compressed format and
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'
+-- returns 'Vulkan.Core10.Enums.Result.SUCCESS', the implementation /must/
+-- return 'Vulkan.Core10.FundamentalTypes.TRUE' in @optimalDeviceAccess@.
+--
+-- Applications can make use of @optimalDeviceAccess@ to determine their
+-- resource copying strategy. If a resource is expected to be accessed more
+-- on device than on the host, and the implementation considers the
+-- resource sub-optimally accessed, it is likely better to use device
+-- copies instead.
+--
+-- Layout not being identical yet still considered optimal for device
+-- access could happen if the implementation has different memory layout
+-- patterns, some of which are easier to access on the host.
+--
+-- The most practical reason for @optimalDeviceAccess@ to be
+-- 'Vulkan.Core10.FundamentalTypes.FALSE' is that host image access may
+-- disable framebuffer compression where it would otherwise have been
+-- enabled. This represents far more efficient host image access since no
+-- compression algorithm is required to read or write to the image, but it
+-- would impact device access performance. Some implementations may only
+-- set @optimalDeviceAccess@ to 'Vulkan.Core10.FundamentalTypes.FALSE' if
+-- certain conditions are met, such as specific image usage flags or
+-- creation flags.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.ImageFormatProperties2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_host_image_copy VK_EXT_host_image_copy>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data HostImageCopyDevicePerformanceQuery = HostImageCopyDevicePerformanceQuery
+  { -- | @optimalDeviceAccess@ returns 'Vulkan.Core10.FundamentalTypes.TRUE' if
+    -- use of host image copy has no adverse effect on device access
+    -- performance, compared to an image that is created with exact same
+    -- creation parameters, and bound to the same
+    -- 'Vulkan.Core10.Handles.DeviceMemory', except that the
+    -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_HOST_TRANSFER_BIT'
+    -- usage flag is replaced with
+    -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_SRC_BIT'
+    -- and
+    -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'.
+    optimalDeviceAccess :: Bool
+  , -- | @identicalMemoryLayout@ returns 'Vulkan.Core10.FundamentalTypes.TRUE' if
+    -- use of host image copy has no impact on memory layout compared to an
+    -- image that is created with exact same creation parameters, and bound to
+    -- the same 'Vulkan.Core10.Handles.DeviceMemory', except that the
+    -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_HOST_TRANSFER_BIT'
+    -- usage flag is replaced with
+    -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_SRC_BIT'
+    -- and
+    -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'.
+    identicalMemoryLayout :: Bool
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (HostImageCopyDevicePerformanceQuery)
+#endif
+deriving instance Show HostImageCopyDevicePerformanceQuery
+
+instance ToCStruct HostImageCopyDevicePerformanceQuery where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p HostImageCopyDevicePerformanceQuery{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (optimalDeviceAccess))
+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (identicalMemoryLayout))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY)
+    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 HostImageCopyDevicePerformanceQuery where
+  peekCStruct p = do
+    optimalDeviceAccess <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    identicalMemoryLayout <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
+    pure $ HostImageCopyDevicePerformanceQuery
+             (bool32ToBool optimalDeviceAccess)
+             (bool32ToBool identicalMemoryLayout)
+
+instance Storable HostImageCopyDevicePerformanceQuery where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero HostImageCopyDevicePerformanceQuery where
+  zero = HostImageCopyDevicePerformanceQuery
+           zero
+           zero
+
diff --git a/src/Vulkan/Core14/Promoted_From_VK_EXT_host_image_copy.hs-boot b/src/Vulkan/Core14/Promoted_From_VK_EXT_host_image_copy.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core14/Promoted_From_VK_EXT_host_image_copy.hs-boot
@@ -0,0 +1,97 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Promoted_From_VK_EXT_host_image_copy"
+module Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy  ( CopyImageToImageInfo
+                                                           , CopyImageToMemoryInfo
+                                                           , CopyMemoryToImageInfo
+                                                           , HostImageCopyDevicePerformanceQuery
+                                                           , HostImageLayoutTransitionInfo
+                                                           , ImageToMemoryCopy
+                                                           , MemoryToImageCopy
+                                                           , PhysicalDeviceHostImageCopyFeatures
+                                                           , PhysicalDeviceHostImageCopyProperties
+                                                           , SubresourceHostMemcpySize
+                                                           ) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data CopyImageToImageInfo
+
+instance ToCStruct CopyImageToImageInfo
+instance Show CopyImageToImageInfo
+
+instance FromCStruct CopyImageToImageInfo
+
+
+data CopyImageToMemoryInfo
+
+instance ToCStruct CopyImageToMemoryInfo
+instance Show CopyImageToMemoryInfo
+
+instance FromCStruct CopyImageToMemoryInfo
+
+
+data CopyMemoryToImageInfo
+
+instance ToCStruct CopyMemoryToImageInfo
+instance Show CopyMemoryToImageInfo
+
+instance FromCStruct CopyMemoryToImageInfo
+
+
+data HostImageCopyDevicePerformanceQuery
+
+instance ToCStruct HostImageCopyDevicePerformanceQuery
+instance Show HostImageCopyDevicePerformanceQuery
+
+instance FromCStruct HostImageCopyDevicePerformanceQuery
+
+
+data HostImageLayoutTransitionInfo
+
+instance ToCStruct HostImageLayoutTransitionInfo
+instance Show HostImageLayoutTransitionInfo
+
+instance FromCStruct HostImageLayoutTransitionInfo
+
+
+data ImageToMemoryCopy
+
+instance ToCStruct ImageToMemoryCopy
+instance Show ImageToMemoryCopy
+
+instance FromCStruct ImageToMemoryCopy
+
+
+data MemoryToImageCopy
+
+instance ToCStruct MemoryToImageCopy
+instance Show MemoryToImageCopy
+
+instance FromCStruct MemoryToImageCopy
+
+
+data PhysicalDeviceHostImageCopyFeatures
+
+instance ToCStruct PhysicalDeviceHostImageCopyFeatures
+instance Show PhysicalDeviceHostImageCopyFeatures
+
+instance FromCStruct PhysicalDeviceHostImageCopyFeatures
+
+
+data PhysicalDeviceHostImageCopyProperties
+
+instance ToCStruct PhysicalDeviceHostImageCopyProperties
+instance Show PhysicalDeviceHostImageCopyProperties
+
+instance FromCStruct PhysicalDeviceHostImageCopyProperties
+
+
+data SubresourceHostMemcpySize
+
+instance ToCStruct SubresourceHostMemcpySize
+instance Show SubresourceHostMemcpySize
+
+instance FromCStruct SubresourceHostMemcpySize
+
diff --git a/src/Vulkan/Core14/Promoted_From_VK_EXT_pipeline_protected_access.hs b/src/Vulkan/Core14/Promoted_From_VK_EXT_pipeline_protected_access.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core14/Promoted_From_VK_EXT_pipeline_protected_access.hs
@@ -0,0 +1,111 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Promoted_From_VK_EXT_pipeline_protected_access"
+module Vulkan.Core14.Promoted_From_VK_EXT_pipeline_protected_access  ( PhysicalDevicePipelineProtectedAccessFeatures(..)
+                                                                     , StructureType(..)
+                                                                     , 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_PROTECTED_ACCESS_FEATURES))
+import Vulkan.Core10.Enums.PipelineCreateFlagBits (PipelineCreateFlagBits(..))
+import Vulkan.Core10.Enums.PipelineCreateFlagBits (PipelineCreateFlags)
+import Vulkan.Core10.Enums.StructureType (StructureType(..))
+-- | VkPhysicalDevicePipelineProtectedAccessFeatures - Structure describing
+-- support for specifying protected access on individual pipelines
+--
+-- = Members
+--
+-- This structure describes the following feature:
+--
+-- = Description
+--
+-- If the 'PhysicalDevicePipelineProtectedAccessFeatures' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDevicePipelineProtectedAccessFeatures', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_pipeline_protected_access VK_EXT_pipeline_protected_access>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDevicePipelineProtectedAccessFeatures = PhysicalDevicePipelineProtectedAccessFeatures
+  { -- | #extension-features-pipelineProtectedAccess# @pipelineProtectedAccess@
+    -- indicates whether the implementation supports specifying protected
+    -- access on individual pipelines.
+    pipelineProtectedAccess :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDevicePipelineProtectedAccessFeatures)
+#endif
+deriving instance Show PhysicalDevicePipelineProtectedAccessFeatures
+
+instance ToCStruct PhysicalDevicePipelineProtectedAccessFeatures where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDevicePipelineProtectedAccessFeatures{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (pipelineProtectedAccess))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDevicePipelineProtectedAccessFeatures where
+  peekCStruct p = do
+    pipelineProtectedAccess <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDevicePipelineProtectedAccessFeatures
+             (bool32ToBool pipelineProtectedAccess)
+
+instance Storable PhysicalDevicePipelineProtectedAccessFeatures where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDevicePipelineProtectedAccessFeatures where
+  zero = PhysicalDevicePipelineProtectedAccessFeatures
+           zero
+
diff --git a/src/Vulkan/Core14/Promoted_From_VK_EXT_pipeline_protected_access.hs-boot b/src/Vulkan/Core14/Promoted_From_VK_EXT_pipeline_protected_access.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core14/Promoted_From_VK_EXT_pipeline_protected_access.hs-boot
@@ -0,0 +1,15 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Promoted_From_VK_EXT_pipeline_protected_access"
+module Vulkan.Core14.Promoted_From_VK_EXT_pipeline_protected_access  (PhysicalDevicePipelineProtectedAccessFeatures) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data PhysicalDevicePipelineProtectedAccessFeatures
+
+instance ToCStruct PhysicalDevicePipelineProtectedAccessFeatures
+instance Show PhysicalDevicePipelineProtectedAccessFeatures
+
+instance FromCStruct PhysicalDevicePipelineProtectedAccessFeatures
+
diff --git a/src/Vulkan/Core14/Promoted_From_VK_EXT_pipeline_robustness.hs b/src/Vulkan/Core14/Promoted_From_VK_EXT_pipeline_robustness.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core14/Promoted_From_VK_EXT_pipeline_robustness.hs
@@ -0,0 +1,485 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Promoted_From_VK_EXT_pipeline_robustness"
+module Vulkan.Core14.Promoted_From_VK_EXT_pipeline_robustness  ( PhysicalDevicePipelineRobustnessFeatures(..)
+                                                               , PipelineRobustnessCreateInfo(..)
+                                                               , PhysicalDevicePipelineRobustnessProperties(..)
+                                                               , 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.Core14.Enums.PipelineRobustnessBufferBehavior (PipelineRobustnessBufferBehavior)
+import Vulkan.Core14.Enums.PipelineRobustnessImageBehavior (PipelineRobustnessImageBehavior)
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO))
+import Vulkan.Core10.Enums.StructureType (StructureType(..))
+-- | VkPhysicalDevicePipelineRobustnessFeatures - Structure describing
+-- whether an implementation supports robustness requests on a per-pipeline
+-- stage granularity
+--
+-- = Members
+--
+-- This structure describes the following feature:
+--
+-- = Description
+--
+-- Enabling the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-pipelineRobustness pipelineRobustness>
+-- feature may, on some platforms, incur a minor performance cost when the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+-- feature is not enabled, even for pipelines which do not make use of any
+-- robustness features. If robustness is not needed, the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-pipelineRobustness pipelineRobustness>
+-- feature should not be enabled by an application.
+--
+-- If the 'PhysicalDevicePipelineRobustnessFeatures' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDevicePipelineRobustnessFeatures', it /must/ add an instance of
+-- the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_pipeline_robustness VK_EXT_pipeline_robustness>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDevicePipelineRobustnessFeatures = PhysicalDevicePipelineRobustnessFeatures
+  { -- | #extension-features-pipelineRobustness# @pipelineRobustness@ indicates
+    -- that robustness /can/ be requested on a per-pipeline-stage granularity.
+    pipelineRobustness :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDevicePipelineRobustnessFeatures)
+#endif
+deriving instance Show PhysicalDevicePipelineRobustnessFeatures
+
+instance ToCStruct PhysicalDevicePipelineRobustnessFeatures where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDevicePipelineRobustnessFeatures{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (pipelineRobustness))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDevicePipelineRobustnessFeatures where
+  peekCStruct p = do
+    pipelineRobustness <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDevicePipelineRobustnessFeatures
+             (bool32ToBool pipelineRobustness)
+
+instance Storable PhysicalDevicePipelineRobustnessFeatures where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDevicePipelineRobustnessFeatures where
+  zero = PhysicalDevicePipelineRobustnessFeatures
+           zero
+
+
+-- | VkPipelineRobustnessCreateInfo - Structure controlling the robustness of
+-- a newly created pipeline shader stage
+--
+-- = Description
+--
+-- Resources bound as
+-- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_MUTABLE_EXT' will
+-- have the robustness behavior that covers its active descriptor type.
+--
+-- The scope of the effect of 'PipelineRobustnessCreateInfo' depends on
+-- which structure’s @pNext@ chain it is included in.
+--
+-- -   'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo',
+--     'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingPipelineCreateInfoKHR',
+--     'Vulkan.Core10.ComputePipeline.ComputePipelineCreateInfo':
+--     The robustness behavior described by 'PipelineRobustnessCreateInfo'
+--     applies to all accesses through this pipeline
+--
+-- -   'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo':
+--     The robustness behavior described by 'PipelineRobustnessCreateInfo'
+--     applies to all accesses emanating from the shader code of this
+--     shader stage
+--
+-- If 'PipelineRobustnessCreateInfo' is specified for both a pipeline and a
+-- pipeline stage, the 'PipelineRobustnessCreateInfo' specified for the
+-- pipeline stage will take precedence.
+--
+-- When 'PipelineRobustnessCreateInfo' is specified for a pipeline, it only
+-- affects the subset of the pipeline that is specified by the create info,
+-- as opposed to subsets linked from pipeline libraries. For
+-- 'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo', that subset
+-- is specified by
+-- 'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@.
+-- For
+-- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingPipelineCreateInfoKHR',
+-- that subset is specified by the specific stages in
+-- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingPipelineCreateInfoKHR'::@pStages@.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkPipelineRobustnessCreateInfo-pipelineRobustness-06926# If
+--     the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-pipelineRobustness pipelineRobustness>
+--     feature is not enabled, @storageBuffers@ /must/ be
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT'
+--
+-- -   #VUID-VkPipelineRobustnessCreateInfo-pipelineRobustness-06927# If
+--     the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-pipelineRobustness pipelineRobustness>
+--     feature is not enabled, @uniformBuffers@ /must/ be
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT'
+--
+-- -   #VUID-VkPipelineRobustnessCreateInfo-pipelineRobustness-06928# If
+--     the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-pipelineRobustness pipelineRobustness>
+--     feature is not enabled, @vertexInputs@ /must/ be
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT'
+--
+-- -   #VUID-VkPipelineRobustnessCreateInfo-pipelineRobustness-06929# If
+--     the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-pipelineRobustness pipelineRobustness>
+--     feature is not enabled, @images@ /must/ be
+--     'Vulkan.Core14.Enums.PipelineRobustnessImageBehavior.PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT'
+--
+-- -   #VUID-VkPipelineRobustnessCreateInfo-robustImageAccess-06930# If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-robustImageAccess robustImageAccess>
+--     feature is not supported, @images@ /must/ not be
+--     'Vulkan.Core14.Enums.PipelineRobustnessImageBehavior.PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS'
+--
+-- -   #VUID-VkPipelineRobustnessCreateInfo-robustBufferAccess2-06931# If
+--     the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not supported, @storageBuffers@ /must/ not be
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--
+-- -   #VUID-VkPipelineRobustnessCreateInfo-robustBufferAccess2-06932# If
+--     the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not supported, @uniformBuffers@ /must/ not be
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--
+-- -   #VUID-VkPipelineRobustnessCreateInfo-robustBufferAccess2-06933# If
+--     the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not supported, @vertexInputs@ /must/ not be
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--
+-- -   #VUID-VkPipelineRobustnessCreateInfo-robustImageAccess2-06934# If
+--     the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-robustImageAccess2 robustImageAccess2>
+--     feature is not supported, @images@ /must/ not be
+--     'Vulkan.Core14.Enums.PipelineRobustnessImageBehavior.PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2'
+--
+-- -   #VUID-VkPipelineRobustnessCreateInfo-storageBuffers-10636# If
+--     @storageBuffers@ is
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2',
+--     and either the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-descriptorBindingStorageBufferUpdateAfterBind descriptorBindingStorageBufferUpdateAfterBind>
+--     feature or the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-descriptorBindingStorageTexelBufferUpdateAfterBind descriptorBindingStorageTexelBufferUpdateAfterBind>
+--     feature is enabled on the device,
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-robustBufferAccessUpdateAfterBind robustBufferAccessUpdateAfterBind>
+--     /must/ be 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-VkPipelineRobustnessCreateInfo-uniformBuffers-10637# If
+--     @uniformBuffers@ is
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2',
+--     and either the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-descriptorBindingInlineUniformBlockUpdateAfterBind descriptorBindingInlineUniformBlockUpdateAfterBind>
+--     feature, the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-descriptorBindingUniformBufferUpdateAfterBind descriptorBindingUniformBufferUpdateAfterBind>
+--     feature, or the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-descriptorBindingUniformTexelBufferUpdateAfterBind descriptorBindingUniformTexelBufferUpdateAfterBind>
+--     feature is enabled on the device,
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-robustBufferAccessUpdateAfterBind robustBufferAccessUpdateAfterBind>
+--     /must/ be 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-VkPipelineRobustnessCreateInfo-images-10638# If @images@ is
+--     'Vulkan.Core14.Enums.PipelineRobustnessImageBehavior.PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessImageBehavior.PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2',
+--     and either the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-descriptorBindingStorageImageUpdateAfterBind descriptorBindingStorageImageUpdateAfterBind>
+--     feature or the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-descriptorBindingSampledImageUpdateAfterBind descriptorBindingSampledImageUpdateAfterBind>
+--     feature is enabled on the device,
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-robustBufferAccessUpdateAfterBind robustBufferAccessUpdateAfterBind>
+--     /must/ be 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkPipelineRobustnessCreateInfo-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO'
+--
+-- -   #VUID-VkPipelineRobustnessCreateInfo-storageBuffers-parameter#
+--     @storageBuffers@ /must/ be a valid
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PipelineRobustnessBufferBehavior'
+--     value
+--
+-- -   #VUID-VkPipelineRobustnessCreateInfo-uniformBuffers-parameter#
+--     @uniformBuffers@ /must/ be a valid
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PipelineRobustnessBufferBehavior'
+--     value
+--
+-- -   #VUID-VkPipelineRobustnessCreateInfo-vertexInputs-parameter#
+--     @vertexInputs@ /must/ be a valid
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PipelineRobustnessBufferBehavior'
+--     value
+--
+-- -   #VUID-VkPipelineRobustnessCreateInfo-images-parameter# @images@
+--     /must/ be a valid
+--     'Vulkan.Core14.Enums.PipelineRobustnessImageBehavior.PipelineRobustnessImageBehavior'
+--     value
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.ComputePipeline.ComputePipelineCreateInfo'
+--
+--     -   'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'
+--
+--     -   'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo'
+--
+--     -   'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingPipelineCreateInfoKHR'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_pipeline_robustness VK_EXT_pipeline_robustness>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PipelineRobustnessBufferBehavior',
+-- 'Vulkan.Core14.Enums.PipelineRobustnessImageBehavior.PipelineRobustnessImageBehavior',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PipelineRobustnessCreateInfo = PipelineRobustnessCreateInfo
+  { -- | @storageBuffers@ sets the behavior of out of bounds accesses made to
+    -- resources bound as:
+    --
+    -- -   'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER'
+    --
+    -- -   'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'
+    --
+    -- -   'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC'
+    storageBuffers :: PipelineRobustnessBufferBehavior
+  , -- | @uniformBuffers@ describes the behavior of out of bounds accesses made
+    -- to resources bound as:
+    --
+    -- -   'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER'
+    --
+    -- -   'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER'
+    --
+    -- -   'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC'
+    --
+    -- -   'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK'
+    uniformBuffers :: PipelineRobustnessBufferBehavior
+  , -- | @vertexInputs@ describes the behavior of out of bounds accesses made to
+    -- vertex input attributes
+    vertexInputs :: PipelineRobustnessBufferBehavior
+  , -- | @images@ describes the behavior of out of bounds accesses made to
+    -- resources bound as:
+    --
+    -- -   'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE'
+    --
+    -- -   'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE'
+    images :: PipelineRobustnessImageBehavior
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PipelineRobustnessCreateInfo)
+#endif
+deriving instance Show PipelineRobustnessCreateInfo
+
+instance ToCStruct PipelineRobustnessCreateInfo where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PipelineRobustnessCreateInfo{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr PipelineRobustnessBufferBehavior)) (storageBuffers)
+    poke ((p `plusPtr` 20 :: Ptr PipelineRobustnessBufferBehavior)) (uniformBuffers)
+    poke ((p `plusPtr` 24 :: Ptr PipelineRobustnessBufferBehavior)) (vertexInputs)
+    poke ((p `plusPtr` 28 :: Ptr PipelineRobustnessImageBehavior)) (images)
+    f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr PipelineRobustnessBufferBehavior)) (zero)
+    poke ((p `plusPtr` 20 :: Ptr PipelineRobustnessBufferBehavior)) (zero)
+    poke ((p `plusPtr` 24 :: Ptr PipelineRobustnessBufferBehavior)) (zero)
+    poke ((p `plusPtr` 28 :: Ptr PipelineRobustnessImageBehavior)) (zero)
+    f
+
+instance FromCStruct PipelineRobustnessCreateInfo where
+  peekCStruct p = do
+    storageBuffers <- peek @PipelineRobustnessBufferBehavior ((p `plusPtr` 16 :: Ptr PipelineRobustnessBufferBehavior))
+    uniformBuffers <- peek @PipelineRobustnessBufferBehavior ((p `plusPtr` 20 :: Ptr PipelineRobustnessBufferBehavior))
+    vertexInputs <- peek @PipelineRobustnessBufferBehavior ((p `plusPtr` 24 :: Ptr PipelineRobustnessBufferBehavior))
+    images <- peek @PipelineRobustnessImageBehavior ((p `plusPtr` 28 :: Ptr PipelineRobustnessImageBehavior))
+    pure $ PipelineRobustnessCreateInfo
+             storageBuffers uniformBuffers vertexInputs images
+
+instance Storable PipelineRobustnessCreateInfo where
+  sizeOf ~_ = 32
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PipelineRobustnessCreateInfo where
+  zero = PipelineRobustnessCreateInfo
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkPhysicalDevicePipelineRobustnessProperties - Structure describing the
+-- default robustness behavior of a physical device
+--
+-- = Description
+--
+-- Some implementations of Vulkan may be able to guarantee that certain
+-- types of accesses are always performed with robustness even when the
+-- Vulkan API’s robustness features are not explicitly enabled.
+--
+-- Even when an implementation reports that accesses to a given resource
+-- type are robust by default, it remains invalid to make an out of bounds
+-- access without requesting the appropriate robustness feature.
+--
+-- If the 'PhysicalDevicePipelineRobustnessProperties' 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.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_pipeline_robustness VK_EXT_pipeline_robustness>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PipelineRobustnessBufferBehavior',
+-- 'Vulkan.Core14.Enums.PipelineRobustnessImageBehavior.PipelineRobustnessImageBehavior',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDevicePipelineRobustnessProperties = PhysicalDevicePipelineRobustnessProperties
+  { -- | @defaultRobustnessStorageBuffers@ describes the behavior of out of
+    -- bounds accesses made to storage buffers when no robustness features are
+    -- enabled
+    defaultRobustnessStorageBuffers :: PipelineRobustnessBufferBehavior
+  , -- | @defaultRobustnessUniformBuffers@ describes the behavior of out of
+    -- bounds accesses made to uniform buffers when no robustness features are
+    -- enabled
+    defaultRobustnessUniformBuffers :: PipelineRobustnessBufferBehavior
+  , -- | @defaultRobustnessVertexInputs@ describes the behavior of out of bounds
+    -- accesses made to vertex input attributes when no robustness features are
+    -- enabled
+    defaultRobustnessVertexInputs :: PipelineRobustnessBufferBehavior
+  , -- | @defaultRobustnessImages@ describes the behavior of out of bounds
+    -- accesses made to images when no robustness features are enabled
+    defaultRobustnessImages :: PipelineRobustnessImageBehavior
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDevicePipelineRobustnessProperties)
+#endif
+deriving instance Show PhysicalDevicePipelineRobustnessProperties
+
+instance ToCStruct PhysicalDevicePipelineRobustnessProperties where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDevicePipelineRobustnessProperties{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr PipelineRobustnessBufferBehavior)) (defaultRobustnessStorageBuffers)
+    poke ((p `plusPtr` 20 :: Ptr PipelineRobustnessBufferBehavior)) (defaultRobustnessUniformBuffers)
+    poke ((p `plusPtr` 24 :: Ptr PipelineRobustnessBufferBehavior)) (defaultRobustnessVertexInputs)
+    poke ((p `plusPtr` 28 :: Ptr PipelineRobustnessImageBehavior)) (defaultRobustnessImages)
+    f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr PipelineRobustnessBufferBehavior)) (zero)
+    poke ((p `plusPtr` 20 :: Ptr PipelineRobustnessBufferBehavior)) (zero)
+    poke ((p `plusPtr` 24 :: Ptr PipelineRobustnessBufferBehavior)) (zero)
+    poke ((p `plusPtr` 28 :: Ptr PipelineRobustnessImageBehavior)) (zero)
+    f
+
+instance FromCStruct PhysicalDevicePipelineRobustnessProperties where
+  peekCStruct p = do
+    defaultRobustnessStorageBuffers <- peek @PipelineRobustnessBufferBehavior ((p `plusPtr` 16 :: Ptr PipelineRobustnessBufferBehavior))
+    defaultRobustnessUniformBuffers <- peek @PipelineRobustnessBufferBehavior ((p `plusPtr` 20 :: Ptr PipelineRobustnessBufferBehavior))
+    defaultRobustnessVertexInputs <- peek @PipelineRobustnessBufferBehavior ((p `plusPtr` 24 :: Ptr PipelineRobustnessBufferBehavior))
+    defaultRobustnessImages <- peek @PipelineRobustnessImageBehavior ((p `plusPtr` 28 :: Ptr PipelineRobustnessImageBehavior))
+    pure $ PhysicalDevicePipelineRobustnessProperties
+             defaultRobustnessStorageBuffers
+             defaultRobustnessUniformBuffers
+             defaultRobustnessVertexInputs
+             defaultRobustnessImages
+
+instance Storable PhysicalDevicePipelineRobustnessProperties where
+  sizeOf ~_ = 32
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDevicePipelineRobustnessProperties where
+  zero = PhysicalDevicePipelineRobustnessProperties
+           zero
+           zero
+           zero
+           zero
+
diff --git a/src/Vulkan/Core14/Promoted_From_VK_EXT_pipeline_robustness.hs-boot b/src/Vulkan/Core14/Promoted_From_VK_EXT_pipeline_robustness.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core14/Promoted_From_VK_EXT_pipeline_robustness.hs-boot
@@ -0,0 +1,34 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Promoted_From_VK_EXT_pipeline_robustness"
+module Vulkan.Core14.Promoted_From_VK_EXT_pipeline_robustness  ( PhysicalDevicePipelineRobustnessFeatures
+                                                               , PhysicalDevicePipelineRobustnessProperties
+                                                               , PipelineRobustnessCreateInfo
+                                                               ) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data PhysicalDevicePipelineRobustnessFeatures
+
+instance ToCStruct PhysicalDevicePipelineRobustnessFeatures
+instance Show PhysicalDevicePipelineRobustnessFeatures
+
+instance FromCStruct PhysicalDevicePipelineRobustnessFeatures
+
+
+data PhysicalDevicePipelineRobustnessProperties
+
+instance ToCStruct PhysicalDevicePipelineRobustnessProperties
+instance Show PhysicalDevicePipelineRobustnessProperties
+
+instance FromCStruct PhysicalDevicePipelineRobustnessProperties
+
+
+data PipelineRobustnessCreateInfo
+
+instance ToCStruct PipelineRobustnessCreateInfo
+instance Show PipelineRobustnessCreateInfo
+
+instance FromCStruct PipelineRobustnessCreateInfo
+
diff --git a/src/Vulkan/Core14/Promoted_From_VK_KHR_dynamic_rendering_local_read.hs b/src/Vulkan/Core14/Promoted_From_VK_KHR_dynamic_rendering_local_read.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core14/Promoted_From_VK_KHR_dynamic_rendering_local_read.hs
@@ -0,0 +1,745 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Promoted_From_VK_KHR_dynamic_rendering_local_read"
+module Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read  ( cmdSetRenderingAttachmentLocations
+                                                                        , cmdSetRenderingInputAttachmentIndices
+                                                                        , PhysicalDeviceDynamicRenderingLocalReadFeatures(..)
+                                                                        , RenderingAttachmentLocationInfo(..)
+                                                                        , RenderingInputAttachmentIndexInfo(..)
+                                                                        , ImageLayout(..)
+                                                                        , StructureType(..)
+                                                                        ) where
+
+import Vulkan.Internal.Utils (traceAroundEvent)
+import Control.Monad (unless)
+import Control.Monad.IO.Class (liftIO)
+import Foreign.Marshal.Alloc (allocaBytes)
+import Foreign.Marshal.Utils (maybePeek)
+import Foreign.Marshal.Utils (with)
+import GHC.IO (throwIO)
+import GHC.Ptr (nullFunPtr)
+import Foreign.Ptr (nullPtr)
+import Foreign.Ptr (plusPtr)
+import Control.Monad.Trans.Class (lift)
+import Control.Monad.Trans.Cont (evalContT)
+import Data.Vector (generateM)
+import qualified Data.Vector (imapM_)
+import qualified Data.Vector (length)
+import 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.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.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(pVkCmdSetRenderingAttachmentLocations))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdSetRenderingInputAttachmentIndices))
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RENDERING_ATTACHMENT_LOCATION_INFO))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RENDERING_INPUT_ATTACHMENT_INDEX_INFO))
+import Vulkan.Core10.Enums.ImageLayout (ImageLayout(..))
+import Vulkan.Core10.Enums.StructureType (StructureType(..))
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdSetRenderingAttachmentLocations
+  :: FunPtr (Ptr CommandBuffer_T -> Ptr RenderingAttachmentLocationInfo -> IO ()) -> Ptr CommandBuffer_T -> Ptr RenderingAttachmentLocationInfo -> IO ()
+
+-- | vkCmdSetRenderingAttachmentLocations - Set color attachment location
+-- mappings for a command buffer
+--
+-- = Description
+--
+-- This command sets the attachment location mappings for subsequent
+-- drawing commands, and /must/ match the mappings provided to the bound
+-- pipeline, if one is bound, which /can/ be set by chaining
+-- 'RenderingAttachmentLocationInfo' to
+-- 'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'.
+--
+-- Until this command is called, mappings in the command buffer state are
+-- treated as each color attachment specified in
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+-- having a location equal to its index in
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@.
+-- This state is reset whenever
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+-- is called.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdSetRenderingAttachmentLocations-dynamicRenderingLocalRead-09509#
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-dynamicRenderingLocalRead dynamicRenderingLocalRead>
+--     /must/ be enabled
+--
+-- -   #VUID-vkCmdSetRenderingAttachmentLocations-pLocationInfo-09510#
+--     @pLocationInfo->colorAttachmentCount@ /must/ be equal to the value
+--     of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
+--     used to begin the current render pass instance
+--
+-- -   #VUID-vkCmdSetRenderingAttachmentLocations-commandBuffer-09511# The
+--     current render pass instance /must/ have been started or resumed by
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     in this @commandBuffer@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdSetRenderingAttachmentLocations-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdSetRenderingAttachmentLocations-pLocationInfo-parameter#
+--     @pLocationInfo@ /must/ be a valid pointer to a valid
+--     'RenderingAttachmentLocationInfo' structure
+--
+-- -   #VUID-vkCmdSetRenderingAttachmentLocations-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-vkCmdSetRenderingAttachmentLocations-commandBuffer-cmdpool#
+--     The 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
+--
+-- -   #VUID-vkCmdSetRenderingAttachmentLocations-renderpass# This command
+--     /must/ only be called inside of a render pass instance
+--
+-- -   #VUID-vkCmdSetRenderingAttachmentLocations-videocoding# This command
+--     /must/ only be called outside of a video coding scope
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Inside                                                                                                                 | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdSetRenderingAttachmentLocations is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering_local_read VK_KHR_dynamic_rendering_local_read>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'Vulkan.Core10.Handles.CommandBuffer', 'RenderingAttachmentLocationInfo'
+cmdSetRenderingAttachmentLocations :: forall io
+                                    . (MonadIO io)
+                                   => -- | @commandBuffer@ is the command buffer into which the command will be
+                                      -- recorded.
+                                      CommandBuffer
+                                   -> -- | @pLocationInfo@ is a 'RenderingAttachmentLocationInfo' structure
+                                      -- indicating the new mappings.
+                                      RenderingAttachmentLocationInfo
+                                   -> io ()
+cmdSetRenderingAttachmentLocations commandBuffer
+                                     locationInfo = liftIO . evalContT $ do
+  let vkCmdSetRenderingAttachmentLocationsPtr = pVkCmdSetRenderingAttachmentLocations (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdSetRenderingAttachmentLocationsPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetRenderingAttachmentLocations is null" Nothing Nothing
+  let vkCmdSetRenderingAttachmentLocations' = mkVkCmdSetRenderingAttachmentLocations vkCmdSetRenderingAttachmentLocationsPtr
+  pLocationInfo <- ContT $ withCStruct (locationInfo)
+  lift $ traceAroundEvent "vkCmdSetRenderingAttachmentLocations" (vkCmdSetRenderingAttachmentLocations'
+                                                                    (commandBufferHandle (commandBuffer))
+                                                                    pLocationInfo)
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdSetRenderingInputAttachmentIndices
+  :: FunPtr (Ptr CommandBuffer_T -> Ptr RenderingInputAttachmentIndexInfo -> IO ()) -> Ptr CommandBuffer_T -> Ptr RenderingInputAttachmentIndexInfo -> IO ()
+
+-- | vkCmdSetRenderingInputAttachmentIndices - Set input attachment index
+-- mappings for a command buffer
+--
+-- = Description
+--
+-- This command sets the input attachment index mappings for subsequent
+-- drawing commands, and /must/ match the mappings provided to the bound
+-- pipeline, if one is bound, which /can/ be set by chaining
+-- 'RenderingInputAttachmentIndexInfo' to
+-- 'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'.
+--
+-- Until this command is called, mappings in the command buffer state are
+-- treated as each color attachment specified in
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+-- mapping to subpass inputs with a @InputAttachmentIndex@ equal to its
+-- index in
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@,
+-- and depth\/stencil attachments mapping to input attachments without
+-- these decorations. This state is reset whenever
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+-- is called.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdSetRenderingInputAttachmentIndices-dynamicRenderingLocalRead-09516#
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-dynamicRenderingLocalRead dynamicRenderingLocalRead>
+--     /must/ be enabled
+--
+-- -   #VUID-vkCmdSetRenderingInputAttachmentIndices-pInputAttachmentIndexInfo-09517#
+--     @pInputAttachmentIndexInfo->colorAttachmentCount@ /must/ be equal to
+--     the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
+--     used to begin the current render pass instance
+--
+-- -   #VUID-vkCmdSetRenderingInputAttachmentIndices-commandBuffer-09518#
+--     The current render pass instance /must/ have been started or resumed
+--     by
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     in this @commandBuffer@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdSetRenderingInputAttachmentIndices-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdSetRenderingInputAttachmentIndices-pInputAttachmentIndexInfo-parameter#
+--     @pInputAttachmentIndexInfo@ /must/ be a valid pointer to a valid
+--     'RenderingInputAttachmentIndexInfo' structure
+--
+-- -   #VUID-vkCmdSetRenderingInputAttachmentIndices-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-vkCmdSetRenderingInputAttachmentIndices-commandBuffer-cmdpool#
+--     The 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
+--
+-- -   #VUID-vkCmdSetRenderingInputAttachmentIndices-renderpass# This
+--     command /must/ only be called inside of a render pass instance
+--
+-- -   #VUID-vkCmdSetRenderingInputAttachmentIndices-videocoding# This
+--     command /must/ only be called outside of a video coding scope
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Inside                                                                                                                 | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdSetRenderingInputAttachmentIndices is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering_local_read VK_KHR_dynamic_rendering_local_read>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'RenderingInputAttachmentIndexInfo'
+cmdSetRenderingInputAttachmentIndices :: forall io
+                                       . (MonadIO io)
+                                      => -- | @commandBuffer@ is the command buffer into which the command will be
+                                         -- recorded.
+                                         CommandBuffer
+                                      -> -- | @pInputAttachmentIndexInfo@ is a 'RenderingInputAttachmentIndexInfo'
+                                         -- structure indicating the new mappings.
+                                         RenderingInputAttachmentIndexInfo
+                                      -> io ()
+cmdSetRenderingInputAttachmentIndices commandBuffer
+                                        inputAttachmentIndexInfo = liftIO . evalContT $ do
+  let vkCmdSetRenderingInputAttachmentIndicesPtr = pVkCmdSetRenderingInputAttachmentIndices (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdSetRenderingInputAttachmentIndicesPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetRenderingInputAttachmentIndices is null" Nothing Nothing
+  let vkCmdSetRenderingInputAttachmentIndices' = mkVkCmdSetRenderingInputAttachmentIndices vkCmdSetRenderingInputAttachmentIndicesPtr
+  pInputAttachmentIndexInfo <- ContT $ withCStruct (inputAttachmentIndexInfo)
+  lift $ traceAroundEvent "vkCmdSetRenderingInputAttachmentIndices" (vkCmdSetRenderingInputAttachmentIndices'
+                                                                       (commandBufferHandle (commandBuffer))
+                                                                       pInputAttachmentIndexInfo)
+  pure $ ()
+
+
+-- | VkPhysicalDeviceDynamicRenderingLocalReadFeatures - Structure indicating
+-- support for local reads in dynamic render pass instances
+--
+-- = Members
+--
+-- This structure describes the following feature:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceDynamicRenderingLocalReadFeatures' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceDynamicRenderingLocalReadFeatures', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering_local_read VK_KHR_dynamic_rendering_local_read>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceDynamicRenderingLocalReadFeatures = PhysicalDeviceDynamicRenderingLocalReadFeatures
+  { -- | #extension-features-dynamicRenderingLocalRead#
+    -- @dynamicRenderingLocalRead@ specifies that the implementation supports
+    -- local reads inside dynamic render pass instances using the
+    -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+    -- command.
+    dynamicRenderingLocalRead :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceDynamicRenderingLocalReadFeatures)
+#endif
+deriving instance Show PhysicalDeviceDynamicRenderingLocalReadFeatures
+
+instance ToCStruct PhysicalDeviceDynamicRenderingLocalReadFeatures where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceDynamicRenderingLocalReadFeatures{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (dynamicRenderingLocalRead))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceDynamicRenderingLocalReadFeatures where
+  peekCStruct p = do
+    dynamicRenderingLocalRead <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDeviceDynamicRenderingLocalReadFeatures
+             (bool32ToBool dynamicRenderingLocalRead)
+
+instance Storable PhysicalDeviceDynamicRenderingLocalReadFeatures where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceDynamicRenderingLocalReadFeatures where
+  zero = PhysicalDeviceDynamicRenderingLocalReadFeatures
+           zero
+
+
+-- | VkRenderingAttachmentLocationInfo - Structure specifying attachment
+-- locations
+--
+-- = Description
+--
+-- This structure allows applications to remap the locations of color
+-- attachments to different fragment shader output locations.
+--
+-- Each element of @pColorAttachmentLocations@ set to
+-- 'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' will be inaccessible to
+-- this pipeline as a color attachment; no location will map to it. Each
+-- element of @pColorAttachmentLocations@ set to any other value will map
+-- the specified location value to the color attachment specified in the
+-- render pass at the corresponding index in the
+-- @pColorAttachmentLocations@ array. Any writes to a fragment output
+-- location that is not mapped to an attachment /must/ be discarded.
+--
+-- If @pColorAttachmentLocations@ is @NULL@, it is equivalent to setting
+-- each element to its index within the array.
+--
+-- This structure /can/ be included in the @pNext@ chain of a
+-- 'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo' structure to
+-- set this state for a pipeline. If this structure is not included in the
+-- @pNext@ chain of
+-- 'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo', it is
+-- equivalent to specifying this structure with the following properties:
+--
+-- -   @colorAttachmentCount@ set to
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@colorAttachmentCount@.
+--
+-- -   @pColorAttachmentLocations@ set to @NULL@.
+--
+-- This structure /can/ be included in the @pNext@ chain of a
+-- 'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo' structure to
+-- specify inherited state from the primary command buffer. 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@, members
+-- of this structure are ignored. If this structure is not included in the
+-- @pNext@ chain of
+-- 'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo', it is
+-- equivalent to specifying this structure with the following properties:
+--
+-- -   @colorAttachmentCount@ set to
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.CommandBufferInheritanceRenderingInfo'::@colorAttachmentCount@.
+--
+-- -   @pColorAttachmentLocations@ set to @NULL@.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkRenderingAttachmentLocationInfo-dynamicRenderingLocalRead-09512#
+--     If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-dynamicRenderingLocalRead dynamicRenderingLocalRead>
+--     feature is not enabled, and @pColorAttachmentLocations@ is not
+--     @NULL@, each element /must/ be the value of its index within the
+--     array
+--
+-- -   #VUID-VkRenderingAttachmentLocationInfo-pColorAttachmentLocations-09513#
+--     Elements of @pColorAttachmentLocations@ that are not
+--     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' /must/ each be unique
+--
+-- -   #VUID-VkRenderingAttachmentLocationInfo-colorAttachmentCount-09514#
+--     @colorAttachmentCount@ /must/ be less than or equal to
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxColorAttachments maxColorAttachments>
+--
+-- -   #VUID-VkRenderingAttachmentLocationInfo-pColorAttachmentLocations-09515#
+--     Each element of @pColorAttachmentLocations@ /must/ be less than
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxColorAttachments maxColorAttachments>
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkRenderingAttachmentLocationInfo-sType-sType# @sType@ /must/
+--     be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDERING_ATTACHMENT_LOCATION_INFO'
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo'
+--
+--     -   'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering_local_read VK_KHR_dynamic_rendering_local_read>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'cmdSetRenderingAttachmentLocations',
+-- 'cmdSetRenderingAttachmentLocations'
+data RenderingAttachmentLocationInfo = RenderingAttachmentLocationInfo
+  { -- | @pColorAttachmentLocations@ is a pointer to an array of
+    -- @colorAttachmentCount@ @uint32_t@ values defining remapped locations for
+    -- color attachments.
+    colorAttachmentLocations :: Vector Word32 }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (RenderingAttachmentLocationInfo)
+#endif
+deriving instance Show RenderingAttachmentLocationInfo
+
+instance ToCStruct RenderingAttachmentLocationInfo where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p RenderingAttachmentLocationInfo{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RENDERING_ATTACHMENT_LOCATION_INFO)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (colorAttachmentLocations)) :: Word32))
+    pPColorAttachmentLocations' <- ContT $ allocaBytes @Word32 ((Data.Vector.length (colorAttachmentLocations)) * 4)
+    lift $ Data.Vector.imapM_ (\i e -> poke (pPColorAttachmentLocations' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (colorAttachmentLocations)
+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Word32))) (pPColorAttachmentLocations')
+    lift $ f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RENDERING_ATTACHMENT_LOCATION_INFO)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    f
+
+instance FromCStruct RenderingAttachmentLocationInfo where
+  peekCStruct p = do
+    colorAttachmentCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    pColorAttachmentLocations <- peek @(Ptr Word32) ((p `plusPtr` 24 :: Ptr (Ptr Word32)))
+    pColorAttachmentLocations' <- generateM (fromIntegral colorAttachmentCount) (\i -> peek @Word32 ((pColorAttachmentLocations `advancePtrBytes` (4 * (i)) :: Ptr Word32)))
+    pure $ RenderingAttachmentLocationInfo
+             pColorAttachmentLocations'
+
+instance Zero RenderingAttachmentLocationInfo where
+  zero = RenderingAttachmentLocationInfo
+           mempty
+
+
+-- | VkRenderingInputAttachmentIndexInfo - Structure specifying input
+-- attachment indices
+--
+-- = Description
+--
+-- This structure allows applications to remap attachments to different
+-- input attachment indices.
+--
+-- Each element of @pColorAttachmentInputIndices@ set to a value of
+-- 'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' indicates that the
+-- corresponding attachment will not be used as an input attachment in this
+-- pipeline. Any other value in each of those elements will map the
+-- corresponding attachment to a @InputAttachmentIndex@ value defined in
+-- shader code.
+--
+-- If @pColorAttachmentInputIndices@ is @NULL@, it is equivalent to setting
+-- each element to its index within the array.
+--
+-- If @pDepthInputAttachmentIndex@ or @pStencilInputAttachmentIndex@ are
+-- set to @NULL@, they map to input attachments without a
+-- @InputAttachmentIndex@ decoration. If they point to a value of
+-- 'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED', it indicates that the
+-- corresponding attachment will not be used as an input attachment in this
+-- pipeline. If they point to any other value it maps the corresponding
+-- attachment to a @InputAttachmentIndex@ value defined in shader code.
+--
+-- This structure /can/ be included in the @pNext@ chain of a
+-- 'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo' structure to
+-- set this state for a pipeline. If this structure is not included in the
+-- @pNext@ chain of
+-- 'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo', it is
+-- equivalent to specifying this structure with the following properties:
+--
+-- -   @colorAttachmentCount@ set to
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@colorAttachmentCount@.
+--
+-- -   @pColorAttachmentInputIndices@ set to @NULL@.
+--
+-- -   @pDepthInputAttachmentIndex@ set to @NULL@.
+--
+-- -   @pStencilInputAttachmentIndex@ set to @NULL@.
+--
+-- This structure /can/ be included in the @pNext@ chain of a
+-- 'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo' structure to
+-- specify inherited state from the primary command buffer. If this
+-- structure is not included in the @pNext@ chain of
+-- 'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo', it is
+-- equivalent to specifying this structure with the following properties:
+--
+-- -   @colorAttachmentCount@ set to
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.CommandBufferInheritanceRenderingInfo'::@colorAttachmentCount@.
+--
+-- -   @pColorAttachmentInputIndices@ set to @NULL@.
+--
+-- -   @pDepthInputAttachmentIndex@ set to @NULL@.
+--
+-- -   @pStencilInputAttachmentIndex@ set to @NULL@.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkRenderingInputAttachmentIndexInfo-dynamicRenderingLocalRead-09519#
+--     If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-dynamicRenderingLocalRead dynamicRenderingLocalRead>
+--     feature is not enabled, and @pColorAttachmentInputIndices@ is not
+--     @NULL@, each element /must/ be
+--     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED'
+--
+-- -   #VUID-VkRenderingInputAttachmentIndexInfo-dynamicRenderingLocalRead-09520#
+--     If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-dynamicRenderingLocalRead dynamicRenderingLocalRead>
+--     feature is not enabled, @pDepthInputAttachmentIndex@ /must/ be a
+--     valid pointer to a value of
+--     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED'
+--
+-- -   #VUID-VkRenderingInputAttachmentIndexInfo-dynamicRenderingLocalRead-09521#
+--     If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-dynamicRenderingLocalRead dynamicRenderingLocalRead>
+--     feature is not enabled, @pStencilInputAttachmentIndex@ /must/ be a
+--     valid pointer to a value of
+--     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED'
+--
+-- -   #VUID-VkRenderingInputAttachmentIndexInfo-pColorAttachmentInputIndices-09522#
+--     Elements of @pColorAttachmentInputIndices@ that are not
+--     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' /must/ each be unique
+--
+-- -   #VUID-VkRenderingInputAttachmentIndexInfo-pColorAttachmentInputIndices-09523#
+--     Elements of @pColorAttachmentInputIndices@ that are not
+--     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' /must/ not take the
+--     same value as the content of @pDepthInputAttachmentIndex@
+--
+-- -   #VUID-VkRenderingInputAttachmentIndexInfo-pColorAttachmentInputIndices-09524#
+--     Elements of @pColorAttachmentInputIndices@ that are not
+--     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' /must/ not take the
+--     same value as the content of @pStencilInputAttachmentIndex@
+--
+-- -   #VUID-VkRenderingInputAttachmentIndexInfo-colorAttachmentCount-09525#
+--     @colorAttachmentCount@ /must/ be less than or equal to
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxColorAttachments maxColorAttachments>
+--
+-- -   #VUID-VkRenderingInputAttachmentIndexInfo-pDepthInputAttachmentIndex-12274#
+--     Elements of @pDepthInputAttachmentIndex@,
+--     @pStencilInputAttachmentIndex@, and @pColorAttachmentInputIndices@
+--     that are not 'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' /must/
+--     be less than
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxPerStageDescriptorInputAttachments maxPerStageDescriptorInputAttachments>
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkRenderingInputAttachmentIndexInfo-sType-sType# @sType@
+--     /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDERING_INPUT_ATTACHMENT_INDEX_INFO'
+--
+-- -   #VUID-VkRenderingInputAttachmentIndexInfo-pColorAttachmentInputIndices-parameter#
+--     If @colorAttachmentCount@ is not @0@, and
+--     @pColorAttachmentInputIndices@ is not @NULL@,
+--     @pColorAttachmentInputIndices@ /must/ be a valid pointer to an array
+--     of @colorAttachmentCount@ @uint32_t@ values
+--
+-- -   #VUID-VkRenderingInputAttachmentIndexInfo-pDepthInputAttachmentIndex-parameter#
+--     If @pDepthInputAttachmentIndex@ is not @NULL@,
+--     @pDepthInputAttachmentIndex@ /must/ be a valid pointer to a valid
+--     @uint32_t@ value
+--
+-- -   #VUID-VkRenderingInputAttachmentIndexInfo-pStencilInputAttachmentIndex-parameter#
+--     If @pStencilInputAttachmentIndex@ is not @NULL@,
+--     @pStencilInputAttachmentIndex@ /must/ be a valid pointer to a valid
+--     @uint32_t@ value
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo'
+--
+--     -   'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering_local_read VK_KHR_dynamic_rendering_local_read>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'cmdSetRenderingInputAttachmentIndices',
+-- 'cmdSetRenderingInputAttachmentIndices'
+data RenderingInputAttachmentIndexInfo = RenderingInputAttachmentIndexInfo
+  { -- | @colorAttachmentCount@ is the number of elements in
+    -- @pColorAttachmentInputIndices@.
+    colorAttachmentCount :: Word32
+  , -- | @pColorAttachmentInputIndices@ is a pointer to an array of
+    -- @colorAttachmentCount@ @uint32_t@ values defining indices for color
+    -- attachments to be used as input attachments.
+    colorAttachmentInputIndices :: Vector Word32
+  , -- | @pDepthInputAttachmentIndex@ is either @NULL@, or a pointer to a
+    -- @uint32_t@ value defining the index for the depth attachment to be used
+    -- as an input attachment.
+    depthInputAttachmentIndex :: Maybe Word32
+  , -- | @pStencilInputAttachmentIndex@ is either @NULL@, or a pointer to a
+    -- @uint32_t@ value defining the index for the stencil attachment to be
+    -- used as an input attachment.
+    stencilInputAttachmentIndex :: Maybe Word32
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (RenderingInputAttachmentIndexInfo)
+#endif
+deriving instance Show RenderingInputAttachmentIndexInfo
+
+instance ToCStruct RenderingInputAttachmentIndexInfo where
+  withCStruct x f = allocaBytes 48 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p RenderingInputAttachmentIndexInfo{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RENDERING_INPUT_ATTACHMENT_INDEX_INFO)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    let pColorAttachmentInputIndicesLength = Data.Vector.length $ (colorAttachmentInputIndices)
+    colorAttachmentCount'' <- lift $ if (colorAttachmentCount) == 0
+      then pure $ fromIntegral pColorAttachmentInputIndicesLength
+      else do
+        unless (fromIntegral pColorAttachmentInputIndicesLength == (colorAttachmentCount) || pColorAttachmentInputIndicesLength == 0) $
+          throwIO $ IOError Nothing InvalidArgument "" "pColorAttachmentInputIndices must be empty or have 'colorAttachmentCount' elements" Nothing Nothing
+        pure (colorAttachmentCount)
+    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) (colorAttachmentCount'')
+    pColorAttachmentInputIndices'' <- if Data.Vector.null (colorAttachmentInputIndices)
+      then pure nullPtr
+      else do
+        pPColorAttachmentInputIndices <- ContT $ allocaBytes @Word32 (((Data.Vector.length (colorAttachmentInputIndices))) * 4)
+        lift $ Data.Vector.imapM_ (\i e -> poke (pPColorAttachmentInputIndices `plusPtr` (4 * (i)) :: Ptr Word32) (e)) ((colorAttachmentInputIndices))
+        pure $ pPColorAttachmentInputIndices
+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Word32))) pColorAttachmentInputIndices''
+    pDepthInputAttachmentIndex'' <- case (depthInputAttachmentIndex) of
+      Nothing -> pure nullPtr
+      Just j -> ContT $ with (j)
+    lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr Word32))) pDepthInputAttachmentIndex''
+    pStencilInputAttachmentIndex'' <- case (stencilInputAttachmentIndex) of
+      Nothing -> pure nullPtr
+      Just j -> ContT $ with (j)
+    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr Word32))) pStencilInputAttachmentIndex''
+    lift $ f
+  cStructSize = 48
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RENDERING_INPUT_ATTACHMENT_INDEX_INFO)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    f
+
+instance FromCStruct RenderingInputAttachmentIndexInfo where
+  peekCStruct p = do
+    colorAttachmentCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    pColorAttachmentInputIndices <- peek @(Ptr Word32) ((p `plusPtr` 24 :: Ptr (Ptr Word32)))
+    let pColorAttachmentInputIndicesLength = if pColorAttachmentInputIndices == nullPtr then 0 else (fromIntegral colorAttachmentCount)
+    pColorAttachmentInputIndices' <- generateM pColorAttachmentInputIndicesLength (\i -> peek @Word32 ((pColorAttachmentInputIndices `advancePtrBytes` (4 * (i)) :: Ptr Word32)))
+    pDepthInputAttachmentIndex <- peek @(Ptr Word32) ((p `plusPtr` 32 :: Ptr (Ptr Word32)))
+    pDepthInputAttachmentIndex' <- maybePeek (\j -> peek @Word32 (j)) pDepthInputAttachmentIndex
+    pStencilInputAttachmentIndex <- peek @(Ptr Word32) ((p `plusPtr` 40 :: Ptr (Ptr Word32)))
+    pStencilInputAttachmentIndex' <- maybePeek (\j -> peek @Word32 (j)) pStencilInputAttachmentIndex
+    pure $ RenderingInputAttachmentIndexInfo
+             colorAttachmentCount
+             pColorAttachmentInputIndices'
+             pDepthInputAttachmentIndex'
+             pStencilInputAttachmentIndex'
+
+instance Zero RenderingInputAttachmentIndexInfo where
+  zero = RenderingInputAttachmentIndexInfo
+           zero
+           mempty
+           Nothing
+           Nothing
+
diff --git a/src/Vulkan/Core14/Promoted_From_VK_KHR_dynamic_rendering_local_read.hs-boot b/src/Vulkan/Core14/Promoted_From_VK_KHR_dynamic_rendering_local_read.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core14/Promoted_From_VK_KHR_dynamic_rendering_local_read.hs-boot
@@ -0,0 +1,34 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Promoted_From_VK_KHR_dynamic_rendering_local_read"
+module Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read  ( PhysicalDeviceDynamicRenderingLocalReadFeatures
+                                                                        , RenderingAttachmentLocationInfo
+                                                                        , RenderingInputAttachmentIndexInfo
+                                                                        ) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data PhysicalDeviceDynamicRenderingLocalReadFeatures
+
+instance ToCStruct PhysicalDeviceDynamicRenderingLocalReadFeatures
+instance Show PhysicalDeviceDynamicRenderingLocalReadFeatures
+
+instance FromCStruct PhysicalDeviceDynamicRenderingLocalReadFeatures
+
+
+data RenderingAttachmentLocationInfo
+
+instance ToCStruct RenderingAttachmentLocationInfo
+instance Show RenderingAttachmentLocationInfo
+
+instance FromCStruct RenderingAttachmentLocationInfo
+
+
+data RenderingInputAttachmentIndexInfo
+
+instance ToCStruct RenderingInputAttachmentIndexInfo
+instance Show RenderingInputAttachmentIndexInfo
+
+instance FromCStruct RenderingInputAttachmentIndexInfo
+
diff --git a/src/Vulkan/Core14/Promoted_From_VK_KHR_global_priority.hs b/src/Vulkan/Core14/Promoted_From_VK_KHR_global_priority.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core14/Promoted_From_VK_KHR_global_priority.hs
@@ -0,0 +1,297 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Promoted_From_VK_KHR_global_priority"
+module Vulkan.Core14.Promoted_From_VK_KHR_global_priority  ( DeviceQueueGlobalPriorityCreateInfo(..)
+                                                           , PhysicalDeviceGlobalPriorityQueryFeatures(..)
+                                                           , QueueFamilyGlobalPriorityProperties(..)
+                                                           , StructureType(..)
+                                                           , Result(..)
+                                                           , QueueGlobalPriority(..)
+                                                           , MAX_GLOBAL_PRIORITY_SIZE
+                                                           , pattern MAX_GLOBAL_PRIORITY_SIZE
+                                                           ) 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.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)
+import Vulkan.Core14.Enums.QueueGlobalPriority (QueueGlobalPriority)
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Core10.APIConstants (pattern MAX_GLOBAL_PRIORITY_SIZE)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES))
+import Vulkan.Core10.APIConstants (MAX_GLOBAL_PRIORITY_SIZE)
+import Vulkan.Core14.Enums.QueueGlobalPriority (QueueGlobalPriority(..))
+import Vulkan.Core10.Enums.Result (Result(..))
+import Vulkan.Core10.Enums.StructureType (StructureType(..))
+import Vulkan.Core10.APIConstants (pattern MAX_GLOBAL_PRIORITY_SIZE)
+-- | VkDeviceQueueGlobalPriorityCreateInfo - Specify a system wide priority
+--
+-- = Description
+--
+-- Queues created without specifying 'DeviceQueueGlobalPriorityCreateInfo'
+-- will default to
+-- 'Vulkan.Core14.Enums.QueueGlobalPriority.QUEUE_GLOBAL_PRIORITY_MEDIUM'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.Device.DeviceQueueCreateInfo'
+--
+-- = 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>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'Vulkan.Core14.Enums.QueueGlobalPriority.QueueGlobalPriority',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data DeviceQueueGlobalPriorityCreateInfo = DeviceQueueGlobalPriorityCreateInfo
+  { -- | @globalPriority@ is the system-wide priority associated to these queues
+    -- as specified by
+    -- 'Vulkan.Core14.Enums.QueueGlobalPriority.QueueGlobalPriority'
+    --
+    -- #VUID-VkDeviceQueueGlobalPriorityCreateInfo-globalPriority-parameter#
+    -- @globalPriority@ /must/ be a valid
+    -- 'Vulkan.Core14.Enums.QueueGlobalPriority.QueueGlobalPriority' value
+    globalPriority :: QueueGlobalPriority }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (DeviceQueueGlobalPriorityCreateInfo)
+#endif
+deriving instance Show DeviceQueueGlobalPriorityCreateInfo
+
+instance ToCStruct DeviceQueueGlobalPriorityCreateInfo where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p DeviceQueueGlobalPriorityCreateInfo{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr QueueGlobalPriority)) (globalPriority)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr QueueGlobalPriority)) (zero)
+    f
+
+instance FromCStruct DeviceQueueGlobalPriorityCreateInfo where
+  peekCStruct p = do
+    globalPriority <- peek @QueueGlobalPriority ((p `plusPtr` 16 :: Ptr QueueGlobalPriority))
+    pure $ DeviceQueueGlobalPriorityCreateInfo
+             globalPriority
+
+instance Storable DeviceQueueGlobalPriorityCreateInfo where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero DeviceQueueGlobalPriorityCreateInfo where
+  zero = DeviceQueueGlobalPriorityCreateInfo
+           zero
+
+
+-- | VkPhysicalDeviceGlobalPriorityQueryFeatures - Structure describing
+-- whether global priority query can be supported by an implementation
+--
+-- = Members
+--
+-- This structure describes the following feature:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceGlobalPriorityQueryFeatures' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceGlobalPriorityQueryFeatures', it /must/ add an instance
+-- of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = 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>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_global_priority VK_KHR_global_priority>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceGlobalPriorityQueryFeatures = PhysicalDeviceGlobalPriorityQueryFeatures
+  { -- | #extension-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 (PhysicalDeviceGlobalPriorityQueryFeatures)
+#endif
+deriving instance Show PhysicalDeviceGlobalPriorityQueryFeatures
+
+instance ToCStruct PhysicalDeviceGlobalPriorityQueryFeatures where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceGlobalPriorityQueryFeatures{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES)
+    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)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceGlobalPriorityQueryFeatures where
+  peekCStruct p = do
+    globalPriorityQuery <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDeviceGlobalPriorityQueryFeatures
+             (bool32ToBool globalPriorityQuery)
+
+instance Storable PhysicalDeviceGlobalPriorityQueryFeatures where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceGlobalPriorityQueryFeatures where
+  zero = PhysicalDeviceGlobalPriorityQueryFeatures
+           zero
+
+
+-- | VkQueueFamilyGlobalPriorityProperties - Return structure for queue
+-- family global priority information query
+--
+-- = Description
+--
+-- If the 'QueueFamilyGlobalPriorityProperties' structure is included in
+-- the @pNext@ chain of the
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.QueueFamilyProperties2'
+-- structure passed to
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceQueueFamilyProperties2',
+-- it is filled in with the list of supported global queue priorities for
+-- the indicated family.
+--
+-- The valid elements of @priorities@ /must/ not contain any duplicate
+-- values.
+--
+-- The valid elements of @priorities@ /must/ be a continuous sequence of
+-- 'Vulkan.Core14.Enums.QueueGlobalPriority.QueueGlobalPriority' enums in
+-- ascending order.
+--
+-- For example, returning @priorityCount@ as 3 with supported @priorities@
+-- as 'Vulkan.Core14.Enums.QueueGlobalPriority.QUEUE_GLOBAL_PRIORITY_LOW',
+-- 'Vulkan.Core14.Enums.QueueGlobalPriority.QUEUE_GLOBAL_PRIORITY_MEDIUM'
+-- and
+-- 'Vulkan.Core14.Enums.QueueGlobalPriority.QUEUE_GLOBAL_PRIORITY_REALTIME'
+-- is not allowed.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.QueueFamilyProperties2'
+--
+-- = 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>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_global_priority VK_KHR_global_priority>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'Vulkan.Core14.Enums.QueueGlobalPriority.QueueGlobalPriority',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data QueueFamilyGlobalPriorityProperties = QueueFamilyGlobalPriorityProperties
+  { -- | @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'
+    -- 'Vulkan.Core14.Enums.QueueGlobalPriority.QueueGlobalPriority' enums
+    -- representing all supported global queue priorities in this queue family.
+    -- The first @priorityCount@ elements of the array will be valid.
+    priorities :: Vector QueueGlobalPriority
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (QueueFamilyGlobalPriorityProperties)
+#endif
+deriving instance Show QueueFamilyGlobalPriorityProperties
+
+instance ToCStruct QueueFamilyGlobalPriorityProperties where
+  withCStruct x f = allocaBytes 88 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p QueueFamilyGlobalPriorityProperties{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (priorityCount)
+    unless ((Data.Vector.length $ (priorities)) <= MAX_GLOBAL_PRIORITY_SIZE) $
+      throwIO $ IOError Nothing InvalidArgument "" "priorities is too long, a maximum of MAX_GLOBAL_PRIORITY_SIZE elements are allowed" Nothing Nothing
+    Data.Vector.imapM_ (\i e -> poke ((lowerArrayPtr ((p `plusPtr` 20 :: Ptr (FixedArray MAX_GLOBAL_PRIORITY_SIZE QueueGlobalPriority)))) `plusPtr` (4 * (i)) :: Ptr QueueGlobalPriority) (e)) (priorities)
+    f
+  cStructSize = 88
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct QueueFamilyGlobalPriorityProperties where
+  peekCStruct p = do
+    priorityCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    priorities <- generateM (MAX_GLOBAL_PRIORITY_SIZE) (\i -> peek @QueueGlobalPriority (((lowerArrayPtr @QueueGlobalPriority ((p `plusPtr` 20 :: Ptr (FixedArray MAX_GLOBAL_PRIORITY_SIZE QueueGlobalPriority)))) `advancePtrBytes` (4 * (i)) :: Ptr QueueGlobalPriority)))
+    pure $ QueueFamilyGlobalPriorityProperties
+             priorityCount priorities
+
+instance Storable QueueFamilyGlobalPriorityProperties where
+  sizeOf ~_ = 88
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero QueueFamilyGlobalPriorityProperties where
+  zero = QueueFamilyGlobalPriorityProperties
+           zero
+           mempty
+
diff --git a/src/Vulkan/Core14/Promoted_From_VK_KHR_global_priority.hs-boot b/src/Vulkan/Core14/Promoted_From_VK_KHR_global_priority.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core14/Promoted_From_VK_KHR_global_priority.hs-boot
@@ -0,0 +1,34 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Promoted_From_VK_KHR_global_priority"
+module Vulkan.Core14.Promoted_From_VK_KHR_global_priority  ( DeviceQueueGlobalPriorityCreateInfo
+                                                           , PhysicalDeviceGlobalPriorityQueryFeatures
+                                                           , QueueFamilyGlobalPriorityProperties
+                                                           ) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data DeviceQueueGlobalPriorityCreateInfo
+
+instance ToCStruct DeviceQueueGlobalPriorityCreateInfo
+instance Show DeviceQueueGlobalPriorityCreateInfo
+
+instance FromCStruct DeviceQueueGlobalPriorityCreateInfo
+
+
+data PhysicalDeviceGlobalPriorityQueryFeatures
+
+instance ToCStruct PhysicalDeviceGlobalPriorityQueryFeatures
+instance Show PhysicalDeviceGlobalPriorityQueryFeatures
+
+instance FromCStruct PhysicalDeviceGlobalPriorityQueryFeatures
+
+
+data QueueFamilyGlobalPriorityProperties
+
+instance ToCStruct QueueFamilyGlobalPriorityProperties
+instance Show QueueFamilyGlobalPriorityProperties
+
+instance FromCStruct QueueFamilyGlobalPriorityProperties
+
diff --git a/src/Vulkan/Core14/Promoted_From_VK_KHR_index_type_uint8.hs b/src/Vulkan/Core14/Promoted_From_VK_KHR_index_type_uint8.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core14/Promoted_From_VK_KHR_index_type_uint8.hs
@@ -0,0 +1,111 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Promoted_From_VK_KHR_index_type_uint8"
+module Vulkan.Core14.Promoted_From_VK_KHR_index_type_uint8  ( PhysicalDeviceIndexTypeUint8Features(..)
+                                                            , IndexType(..)
+                                                            , 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_INDEX_TYPE_UINT8_FEATURES))
+import Vulkan.Core10.Enums.IndexType (IndexType(..))
+import Vulkan.Core10.Enums.StructureType (StructureType(..))
+-- | VkPhysicalDeviceIndexTypeUint8Features - Structure describing whether
+-- uint8 index type can be used
+--
+-- = Members
+--
+-- This structure describes the following feature:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceIndexTypeUint8Features' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceIndexTypeUint8Features', it /must/ add an instance of the
+-- structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_index_type_uint8 VK_EXT_index_type_uint8>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_index_type_uint8 VK_KHR_index_type_uint8>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceIndexTypeUint8Features = PhysicalDeviceIndexTypeUint8Features
+  { -- | #extension-features-indexTypeUint8# @indexTypeUint8@ indicates that
+    -- 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT8' can be used with
+    -- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.cmdBindIndexBuffer2'
+    -- and 'Vulkan.Core10.CommandBufferBuilding.cmdBindIndexBuffer'.
+    indexTypeUint8 :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceIndexTypeUint8Features)
+#endif
+deriving instance Show PhysicalDeviceIndexTypeUint8Features
+
+instance ToCStruct PhysicalDeviceIndexTypeUint8Features where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceIndexTypeUint8Features{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (indexTypeUint8))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceIndexTypeUint8Features where
+  peekCStruct p = do
+    indexTypeUint8 <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDeviceIndexTypeUint8Features
+             (bool32ToBool indexTypeUint8)
+
+instance Storable PhysicalDeviceIndexTypeUint8Features where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceIndexTypeUint8Features where
+  zero = PhysicalDeviceIndexTypeUint8Features
+           zero
+
diff --git a/src/Vulkan/Core14/Promoted_From_VK_KHR_index_type_uint8.hs-boot b/src/Vulkan/Core14/Promoted_From_VK_KHR_index_type_uint8.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core14/Promoted_From_VK_KHR_index_type_uint8.hs-boot
@@ -0,0 +1,15 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Promoted_From_VK_KHR_index_type_uint8"
+module Vulkan.Core14.Promoted_From_VK_KHR_index_type_uint8  (PhysicalDeviceIndexTypeUint8Features) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data PhysicalDeviceIndexTypeUint8Features
+
+instance ToCStruct PhysicalDeviceIndexTypeUint8Features
+instance Show PhysicalDeviceIndexTypeUint8Features
+
+instance FromCStruct PhysicalDeviceIndexTypeUint8Features
+
diff --git a/src/Vulkan/Core14/Promoted_From_VK_KHR_line_rasterization.hs b/src/Vulkan/Core14/Promoted_From_VK_KHR_line_rasterization.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core14/Promoted_From_VK_KHR_line_rasterization.hs
@@ -0,0 +1,516 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Promoted_From_VK_KHR_line_rasterization"
+module Vulkan.Core14.Promoted_From_VK_KHR_line_rasterization  ( cmdSetLineStipple
+                                                              , PhysicalDeviceLineRasterizationFeatures(..)
+                                                              , PhysicalDeviceLineRasterizationProperties(..)
+                                                              , PipelineRasterizationLineStateCreateInfo(..)
+                                                              , StructureType(..)
+                                                              , DynamicState(..)
+                                                              , LineRasterizationMode(..)
+                                                              ) 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 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 (Word16)
+import Data.Word (Word32)
+import Data.Kind (Type)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.NamedType ((:::))
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.Core10.Handles (CommandBuffer)
+import Vulkan.Core10.Handles (CommandBuffer(..))
+import Vulkan.Core10.Handles (CommandBuffer(CommandBuffer))
+import Vulkan.Core10.Handles (CommandBuffer_T)
+import Vulkan.Dynamic (DeviceCmds(pVkCmdSetLineStipple))
+import Vulkan.Core14.Enums.LineRasterizationMode (LineRasterizationMode)
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO))
+import Vulkan.Core10.Enums.DynamicState (DynamicState(..))
+import Vulkan.Core14.Enums.LineRasterizationMode (LineRasterizationMode(..))
+import Vulkan.Core10.Enums.StructureType (StructureType(..))
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdSetLineStipple
+  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Word16 -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Word16 -> IO ()
+
+-- | vkCmdSetLineStipple - Set line stipple dynamically for a command buffer
+--
+-- = Description
+--
+-- This command sets the line stipple state for subsequent drawing commands
+-- when drawing using
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader objects>,
+-- or when the graphics pipeline is created with
+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE' set in
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- Otherwise, this state is specified by the
+-- 'PipelineRasterizationLineStateCreateInfo'::@lineStippleFactor@ and
+-- 'PipelineRasterizationLineStateCreateInfo'::@lineStipplePattern@ values
+-- used to create the currently active pipeline.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdSetLineStipple-lineStippleFactor-02776#
+--     @lineStippleFactor@ /must/ be in the range [1,256]
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdSetLineStipple-commandBuffer-parameter# @commandBuffer@
+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdSetLineStipple-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-vkCmdSetLineStipple-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
+--
+-- -   #VUID-vkCmdSetLineStipple-videocoding# This command /must/ only be
+--     called outside of a video coding scope
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdSetLineStipple is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_line_rasterization VK_EXT_line_rasterization>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_line_rasterization VK_KHR_line_rasterization>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'Vulkan.Core10.Handles.CommandBuffer'
+cmdSetLineStipple :: forall io
+                   . (MonadIO io)
+                  => -- | @commandBuffer@ is the command buffer into which the command will be
+                     -- recorded.
+                     CommandBuffer
+                  -> -- | @lineStippleFactor@ is the repeat factor used in stippled line
+                     -- rasterization.
+                     ("lineStippleFactor" ::: Word32)
+                  -> -- | @lineStipplePattern@ is the bit pattern used in stippled line
+                     -- rasterization.
+                     ("lineStipplePattern" ::: Word16)
+                  -> io ()
+cmdSetLineStipple commandBuffer
+                    lineStippleFactor
+                    lineStipplePattern = liftIO $ do
+  let vkCmdSetLineStipplePtr = pVkCmdSetLineStipple (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  unless (vkCmdSetLineStipplePtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetLineStipple is null" Nothing Nothing
+  let vkCmdSetLineStipple' = mkVkCmdSetLineStipple vkCmdSetLineStipplePtr
+  traceAroundEvent "vkCmdSetLineStipple" (vkCmdSetLineStipple'
+                                            (commandBufferHandle (commandBuffer))
+                                            (lineStippleFactor)
+                                            (lineStipplePattern))
+  pure $ ()
+
+
+-- | VkPhysicalDeviceLineRasterizationFeatures - Structure describing the
+-- line rasterization features that can be supported by an implementation
+--
+-- = Members
+--
+-- This structure describes the following features:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceLineRasterizationFeatures' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceLineRasterizationFeatures', it /must/ add an instance of
+-- the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_line_rasterization VK_EXT_line_rasterization>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_line_rasterization VK_KHR_line_rasterization>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceLineRasterizationFeatures = PhysicalDeviceLineRasterizationFeatures
+  { -- | #extension-features-rectangularLines# @rectangularLines@ indicates
+    -- whether the implementation supports
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-lines rectangular line rasterization>.
+    rectangularLines :: Bool
+  , -- | #extension-features-bresenhamLines# @bresenhamLines@ indicates whether
+    -- the implementation supports
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-lines-bresenham Bresenham-style line rasterization>.
+    bresenhamLines :: Bool
+  , -- | #extension-features-smoothLines# @smoothLines@ indicates whether the
+    -- implementation supports
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-lines-smooth smooth line rasterization>.
+    smoothLines :: Bool
+  , -- | #extension-features-stippledRectangularLines# @stippledRectangularLines@
+    -- indicates whether the implementation supports
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-lines-stipple stippled line rasterization>
+    -- with
+    -- 'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_RECTANGULAR'
+    -- lines.
+    stippledRectangularLines :: Bool
+  , -- | #extension-features-stippledBresenhamLines# @stippledBresenhamLines@
+    -- indicates whether the implementation supports
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-lines-stipple stippled line rasterization>
+    -- with
+    -- 'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_BRESENHAM'
+    -- lines.
+    stippledBresenhamLines :: Bool
+  , -- | #extension-features-stippledSmoothLines# @stippledSmoothLines@ indicates
+    -- whether the implementation supports
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-lines-stipple stippled line rasterization>
+    -- with
+    -- 'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH'
+    -- lines.
+    stippledSmoothLines :: Bool
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceLineRasterizationFeatures)
+#endif
+deriving instance Show PhysicalDeviceLineRasterizationFeatures
+
+instance ToCStruct PhysicalDeviceLineRasterizationFeatures where
+  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceLineRasterizationFeatures{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (rectangularLines))
+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (bresenhamLines))
+    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (smoothLines))
+    poke ((p `plusPtr` 28 :: Ptr Bool32)) (boolToBool32 (stippledRectangularLines))
+    poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (stippledBresenhamLines))
+    poke ((p `plusPtr` 36 :: Ptr Bool32)) (boolToBool32 (stippledSmoothLines))
+    f
+  cStructSize = 40
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_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))
+    f
+
+instance FromCStruct PhysicalDeviceLineRasterizationFeatures where
+  peekCStruct p = do
+    rectangularLines <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    bresenhamLines <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
+    smoothLines <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))
+    stippledRectangularLines <- peek @Bool32 ((p `plusPtr` 28 :: Ptr Bool32))
+    stippledBresenhamLines <- peek @Bool32 ((p `plusPtr` 32 :: Ptr Bool32))
+    stippledSmoothLines <- peek @Bool32 ((p `plusPtr` 36 :: Ptr Bool32))
+    pure $ PhysicalDeviceLineRasterizationFeatures
+             (bool32ToBool rectangularLines)
+             (bool32ToBool bresenhamLines)
+             (bool32ToBool smoothLines)
+             (bool32ToBool stippledRectangularLines)
+             (bool32ToBool stippledBresenhamLines)
+             (bool32ToBool stippledSmoothLines)
+
+instance Storable PhysicalDeviceLineRasterizationFeatures where
+  sizeOf ~_ = 40
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceLineRasterizationFeatures where
+  zero = PhysicalDeviceLineRasterizationFeatures
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkPhysicalDeviceLineRasterizationProperties - Structure describing line
+-- rasterization properties supported by an implementation
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceLineRasterizationProperties' 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.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_line_rasterization VK_EXT_line_rasterization>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_line_rasterization VK_KHR_line_rasterization>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceLineRasterizationProperties = PhysicalDeviceLineRasterizationProperties
+  { -- | #extension-limits-lineSubPixelPrecisionBits# @lineSubPixelPrecisionBits@
+    -- is the number of bits of subpixel precision in framebuffer coordinates
+    -- xf and yf when rasterizing
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-lines line segments>.
+    lineSubPixelPrecisionBits :: Word32 }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceLineRasterizationProperties)
+#endif
+deriving instance Show PhysicalDeviceLineRasterizationProperties
+
+instance ToCStruct PhysicalDeviceLineRasterizationProperties where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceLineRasterizationProperties{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (lineSubPixelPrecisionBits)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct PhysicalDeviceLineRasterizationProperties where
+  peekCStruct p = do
+    lineSubPixelPrecisionBits <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    pure $ PhysicalDeviceLineRasterizationProperties
+             lineSubPixelPrecisionBits
+
+instance Storable PhysicalDeviceLineRasterizationProperties where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceLineRasterizationProperties where
+  zero = PhysicalDeviceLineRasterizationProperties
+           zero
+
+
+-- | VkPipelineRasterizationLineStateCreateInfo - Structure specifying
+-- parameters of a newly created pipeline line rasterization state
+--
+-- = Description
+--
+-- If @stippledLineEnable@ is 'Vulkan.Core10.FundamentalTypes.FALSE', the
+-- values of @lineStippleFactor@ and @lineStipplePattern@ are ignored.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkPipelineRasterizationLineStateCreateInfo-lineRasterizationMode-02768#
+--     If @lineRasterizationMode@ is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_RECTANGULAR',
+--     then the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-rectangularLines rectangularLines>
+--     feature /must/ be enabled
+--
+-- -   #VUID-VkPipelineRasterizationLineStateCreateInfo-lineRasterizationMode-02769#
+--     If @lineRasterizationMode@ is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_BRESENHAM',
+--     then the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-bresenhamLines bresenhamLines>
+--     feature /must/ be enabled
+--
+-- -   #VUID-VkPipelineRasterizationLineStateCreateInfo-lineRasterizationMode-02770#
+--     If @lineRasterizationMode@ is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH',
+--     then the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-smoothLines smoothLines>
+--     feature /must/ be enabled
+--
+-- -   #VUID-VkPipelineRasterizationLineStateCreateInfo-stippledLineEnable-02771#
+--     If @stippledLineEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE' and
+--     @lineRasterizationMode@ is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_RECTANGULAR',
+--     then the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>
+--     feature /must/ be enabled
+--
+-- -   #VUID-VkPipelineRasterizationLineStateCreateInfo-stippledLineEnable-02772#
+--     If @stippledLineEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE' and
+--     @lineRasterizationMode@ is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_BRESENHAM',
+--     then the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
+--     feature /must/ be enabled
+--
+-- -   #VUID-VkPipelineRasterizationLineStateCreateInfo-stippledLineEnable-02773#
+--     If @stippledLineEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE' and
+--     @lineRasterizationMode@ is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH',
+--     then the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
+--     feature /must/ be enabled
+--
+-- -   #VUID-VkPipelineRasterizationLineStateCreateInfo-stippledLineEnable-02774#
+--     If @stippledLineEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE' and
+--     @lineRasterizationMode@ is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_DEFAULT',
+--     then the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>
+--     feature /must/ be enabled and
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@strictLines@
+--     /must/ be 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkPipelineRasterizationLineStateCreateInfo-sType-sType#
+--     @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO'
+--
+-- -   #VUID-VkPipelineRasterizationLineStateCreateInfo-lineRasterizationMode-parameter#
+--     @lineRasterizationMode@ /must/ be a valid
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LineRasterizationMode'
+--     value
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.GraphicsPipeline.PipelineRasterizationStateCreateInfo'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_line_rasterization VK_EXT_line_rasterization>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_line_rasterization VK_KHR_line_rasterization>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core14.Enums.LineRasterizationMode.LineRasterizationMode',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PipelineRasterizationLineStateCreateInfo = PipelineRasterizationLineStateCreateInfo
+  { -- | @lineRasterizationMode@ is a
+    -- 'Vulkan.Core14.Enums.LineRasterizationMode.LineRasterizationMode' value
+    -- selecting the style of line rasterization.
+    lineRasterizationMode :: LineRasterizationMode
+  , -- | @stippledLineEnable@ enables
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-lines-stipple stippled line rasterization>.
+    stippledLineEnable :: Bool
+  , -- | @lineStippleFactor@ is the repeat factor used in stippled line
+    -- rasterization.
+    lineStippleFactor :: Word32
+  , -- | @lineStipplePattern@ is the bit pattern used in stippled line
+    -- rasterization.
+    lineStipplePattern :: Word16
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PipelineRasterizationLineStateCreateInfo)
+#endif
+deriving instance Show PipelineRasterizationLineStateCreateInfo
+
+instance ToCStruct PipelineRasterizationLineStateCreateInfo where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PipelineRasterizationLineStateCreateInfo{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr LineRasterizationMode)) (lineRasterizationMode)
+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (stippledLineEnable))
+    poke ((p `plusPtr` 24 :: Ptr Word32)) (lineStippleFactor)
+    poke ((p `plusPtr` 28 :: Ptr Word16)) (lineStipplePattern)
+    f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr LineRasterizationMode)) (zero)
+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 28 :: Ptr Word16)) (zero)
+    f
+
+instance FromCStruct PipelineRasterizationLineStateCreateInfo where
+  peekCStruct p = do
+    lineRasterizationMode <- peek @LineRasterizationMode ((p `plusPtr` 16 :: Ptr LineRasterizationMode))
+    stippledLineEnable <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
+    lineStippleFactor <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))
+    lineStipplePattern <- peek @Word16 ((p `plusPtr` 28 :: Ptr Word16))
+    pure $ PipelineRasterizationLineStateCreateInfo
+             lineRasterizationMode
+             (bool32ToBool stippledLineEnable)
+             lineStippleFactor
+             lineStipplePattern
+
+instance Storable PipelineRasterizationLineStateCreateInfo where
+  sizeOf ~_ = 32
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PipelineRasterizationLineStateCreateInfo where
+  zero = PipelineRasterizationLineStateCreateInfo
+           zero
+           zero
+           zero
+           zero
+
diff --git a/src/Vulkan/Core14/Promoted_From_VK_KHR_line_rasterization.hs-boot b/src/Vulkan/Core14/Promoted_From_VK_KHR_line_rasterization.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core14/Promoted_From_VK_KHR_line_rasterization.hs-boot
@@ -0,0 +1,34 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Promoted_From_VK_KHR_line_rasterization"
+module Vulkan.Core14.Promoted_From_VK_KHR_line_rasterization  ( PhysicalDeviceLineRasterizationFeatures
+                                                              , PhysicalDeviceLineRasterizationProperties
+                                                              , PipelineRasterizationLineStateCreateInfo
+                                                              ) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data PhysicalDeviceLineRasterizationFeatures
+
+instance ToCStruct PhysicalDeviceLineRasterizationFeatures
+instance Show PhysicalDeviceLineRasterizationFeatures
+
+instance FromCStruct PhysicalDeviceLineRasterizationFeatures
+
+
+data PhysicalDeviceLineRasterizationProperties
+
+instance ToCStruct PhysicalDeviceLineRasterizationProperties
+instance Show PhysicalDeviceLineRasterizationProperties
+
+instance FromCStruct PhysicalDeviceLineRasterizationProperties
+
+
+data PipelineRasterizationLineStateCreateInfo
+
+instance ToCStruct PipelineRasterizationLineStateCreateInfo
+instance Show PipelineRasterizationLineStateCreateInfo
+
+instance FromCStruct PipelineRasterizationLineStateCreateInfo
+
diff --git a/src/Vulkan/Core14/Promoted_From_VK_KHR_maintenance5.hs b/src/Vulkan/Core14/Promoted_From_VK_KHR_maintenance5.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core14/Promoted_From_VK_KHR_maintenance5.hs
@@ -0,0 +1,1330 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Promoted_From_VK_KHR_maintenance5"
+module Vulkan.Core14.Promoted_From_VK_KHR_maintenance5  ( getRenderingAreaGranularity
+                                                        , cmdBindIndexBuffer2
+                                                        , getImageSubresourceLayout2
+                                                        , getDeviceImageSubresourceLayout
+                                                        , BufferUsageFlags2CreateInfo(..)
+                                                        , PipelineCreateFlags2CreateInfo(..)
+                                                        , PhysicalDeviceMaintenance5Features(..)
+                                                        , PhysicalDeviceMaintenance5Properties(..)
+                                                        , RenderingAreaInfo(..)
+                                                        , ImageSubresource2(..)
+                                                        , SubresourceLayout2(..)
+                                                        , DeviceImageSubresourceInfo(..)
+                                                        , Format(..)
+                                                        , StructureType(..)
+                                                        , BufferUsageFlagBits2(..)
+                                                        , BufferUsageFlags2
+                                                        , PipelineCreateFlagBits2(..)
+                                                        , PipelineCreateFlags2
+                                                        ) 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.CStruct.Extends (peekSomeCStruct)
+import Vulkan.CStruct.Extends (withSomeCStruct)
+import Vulkan.NamedType ((:::))
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.Core10.Handles (Buffer)
+import Vulkan.Core10.Handles (Buffer(..))
+import Vulkan.Core14.Enums.BufferUsageFlags2 (BufferUsageFlags2)
+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.Handles (Device)
+import Vulkan.Core10.Handles (Device(..))
+import Vulkan.Core10.Handles (Device(Device))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdBindIndexBuffer2))
+import Vulkan.Dynamic (DeviceCmds(pVkGetDeviceImageSubresourceLayout))
+import Vulkan.Dynamic (DeviceCmds(pVkGetImageSubresourceLayout2))
+import Vulkan.Dynamic (DeviceCmds(pVkGetRenderingAreaGranularity))
+import Vulkan.Core10.FundamentalTypes (DeviceSize)
+import Vulkan.Core10.Handles (Device_T)
+import Vulkan.CStruct.Extends (Extends)
+import Vulkan.CStruct.Extends (Extendss)
+import Vulkan.CStruct.Extends (Extensible(..))
+import Vulkan.Core10.FundamentalTypes (Extent2D)
+import Vulkan.Core10.Enums.Format (Format)
+import Vulkan.Core10.Handles (Image)
+import Vulkan.Core10.Handles (Image(..))
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_image_compression_control (ImageCompressionPropertiesEXT)
+import Vulkan.Core10.Image (ImageCreateInfo)
+import Vulkan.Core10.SparseResourceMemoryManagement (ImageSubresource)
+import Vulkan.Core10.Enums.IndexType (IndexType)
+import Vulkan.Core10.Enums.IndexType (IndexType(..))
+import Vulkan.CStruct.Extends (PeekChain)
+import Vulkan.CStruct.Extends (PeekChain(..))
+import Vulkan.Core14.Enums.PipelineCreateFlags2 (PipelineCreateFlags2)
+import Vulkan.CStruct.Extends (PokeChain)
+import Vulkan.CStruct.Extends (PokeChain(..))
+import Vulkan.CStruct.Extends (SomeStruct)
+import Vulkan.CStruct.Extends (SomeStruct(..))
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy (SubresourceHostMemcpySize)
+import Vulkan.Core10.Image (SubresourceLayout)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RENDERING_AREA_INFO))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2))
+import Vulkan.Core14.Enums.BufferUsageFlags2 (BufferUsageFlagBits2(..))
+import Vulkan.Core14.Enums.BufferUsageFlags2 (BufferUsageFlags2)
+import Vulkan.Core10.Enums.Format (Format(..))
+import Vulkan.Core14.Enums.PipelineCreateFlags2 (PipelineCreateFlagBits2(..))
+import Vulkan.Core14.Enums.PipelineCreateFlags2 (PipelineCreateFlags2)
+import Vulkan.Core10.Enums.StructureType (StructureType(..))
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetRenderingAreaGranularity
+  :: FunPtr (Ptr Device_T -> Ptr RenderingAreaInfo -> Ptr Extent2D -> IO ()) -> Ptr Device_T -> Ptr RenderingAreaInfo -> Ptr Extent2D -> IO ()
+
+-- | vkGetRenderingAreaGranularity - Returns the granularity for dynamic
+-- rendering optimal render area
+--
+-- = Description
+--
+-- The conditions leading to an optimal @renderArea@ are:
+--
+-- -   the @offset.x@ member in @renderArea@ is a multiple of the @width@
+--     member of the returned 'Vulkan.Core10.FundamentalTypes.Extent2D'
+--     (the horizontal granularity).
+--
+-- -   the @offset.y@ member in @renderArea@ is a multiple of the @height@
+--     member of the returned 'Vulkan.Core10.FundamentalTypes.Extent2D'
+--     (the vertical granularity).
+--
+-- -   either the @extent.width@ member in @renderArea@ is a multiple of
+--     the horizontal granularity or @offset.x@+@extent.width@ is equal to
+--     the @width@ of each attachment used in the render pass instance.
+--
+-- -   either the @extent.height@ member in @renderArea@ is a multiple of
+--     the vertical granularity or @offset.y@+@extent.height@ is equal to
+--     the @height@ of each attachment used in the render pass instance.
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkGetRenderingAreaGranularity-device-parameter# @device@
+--     /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkGetRenderingAreaGranularity-pRenderingAreaInfo-parameter#
+--     @pRenderingAreaInfo@ /must/ be a valid pointer to a valid
+--     'RenderingAreaInfo' structure
+--
+-- -   #VUID-vkGetRenderingAreaGranularity-pGranularity-parameter#
+--     @pGranularity@ /must/ be a valid pointer to a
+--     'Vulkan.Core10.FundamentalTypes.Extent2D' structure
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance5 VK_KHR_maintenance5>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'Vulkan.Core10.Handles.Device',
+-- 'Vulkan.Core10.FundamentalTypes.Extent2D', 'RenderingAreaInfo'
+getRenderingAreaGranularity :: forall io
+                             . (MonadIO io)
+                            => -- | @device@ is the logical device that owns the render pass instance.
+                               Device
+                            -> -- | @pRenderingAreaInfo@ is a pointer to a 'RenderingAreaInfo' structure
+                               -- specifying details of the render pass instance to query the render area
+                               -- granularity for.
+                               RenderingAreaInfo
+                            -> io (("granularity" ::: Extent2D))
+getRenderingAreaGranularity device renderingAreaInfo = liftIO . evalContT $ do
+  let vkGetRenderingAreaGranularityPtr = pVkGetRenderingAreaGranularity (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkGetRenderingAreaGranularityPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetRenderingAreaGranularity is null" Nothing Nothing
+  let vkGetRenderingAreaGranularity' = mkVkGetRenderingAreaGranularity vkGetRenderingAreaGranularityPtr
+  pRenderingAreaInfo <- ContT $ withCStruct (renderingAreaInfo)
+  pPGranularity <- ContT (withZeroCStruct @Extent2D)
+  lift $ traceAroundEvent "vkGetRenderingAreaGranularity" (vkGetRenderingAreaGranularity'
+                                                             (deviceHandle (device))
+                                                             pRenderingAreaInfo
+                                                             (pPGranularity))
+  pGranularity <- lift $ peekCStruct @Extent2D pPGranularity
+  pure $ (pGranularity)
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdBindIndexBuffer2
+  :: FunPtr (Ptr CommandBuffer_T -> Buffer -> DeviceSize -> DeviceSize -> IndexType -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> DeviceSize -> DeviceSize -> IndexType -> IO ()
+
+-- | vkCmdBindIndexBuffer2 - Bind an index buffer to a command buffer
+--
+-- = Description
+--
+-- @buffer@, @offset@, and @size@ specify the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#index-buffer-range bound index buffer range>,
+-- with a range of memory bound from [@base@ + @offset@, @base@ + @offset@
+-- + @size@), where @base@ is the start of @buffer@. If @size@ is
+-- 'Vulkan.Core10.APIConstants.WHOLE_SIZE' then the range is from @offset@
+-- to the end of the @buffer@.
+--
+-- If the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance6 maintenance6>
+-- feature is enabled, @buffer@ /can/ be
+-- 'Vulkan.Core10.APIConstants.NULL_HANDLE'. If @buffer@ is
+-- 'Vulkan.Core10.APIConstants.NULL_HANDLE' and the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-nullDescriptor nullDescriptor>
+-- feature is enabled, every index fetched results in a value of zero.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdBindIndexBuffer2-offset-08782# @offset@ /must/ be less
+--     than the size of @buffer@
+--
+-- -   #VUID-vkCmdBindIndexBuffer2-offset-08783# The sum of @offset@ and
+--     the base address of the range of
+--     'Vulkan.Core10.Handles.DeviceMemory' object that is backing
+--     @buffer@, /must/ be a multiple of the size of the type indicated by
+--     @indexType@
+--
+-- -   #VUID-vkCmdBindIndexBuffer2-buffer-08784# @buffer@ /must/ have been
+--     created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDEX_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdBindIndexBuffer2-buffer-08785# If @buffer@ is non-sparse
+--     then it /must/ be bound completely and contiguously to a single
+--     'Vulkan.Core10.Handles.DeviceMemory' object
+--
+-- -   #VUID-vkCmdBindIndexBuffer2-indexType-08786# @indexType@ /must/ not
+--     be 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR'
+--
+-- -   #VUID-vkCmdBindIndexBuffer2-indexType-08787# If @indexType@ is
+--     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT8', the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-indexTypeUint8 indexTypeUint8>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdBindIndexBuffer2-None-09493# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance6 maintenance6>
+--     feature is not enabled, @buffer@ /must/ not be
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-vkCmdBindIndexBuffer2-buffer-09494# If @buffer@ is
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', offset /must/ be zero
+--
+-- -   #VUID-vkCmdBindIndexBuffer2-size-08767# If @size@ is not
+--     'Vulkan.Core10.APIConstants.WHOLE_SIZE', @size@ /must/ be a multiple
+--     of the size of the type indicated by @indexType@
+--
+-- -   #VUID-vkCmdBindIndexBuffer2-size-08768# If @size@ is not
+--     'Vulkan.Core10.APIConstants.WHOLE_SIZE', the sum of @offset@ and
+--     @size@ /must/ be less than or equal to the size of @buffer@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdBindIndexBuffer2-commandBuffer-parameter# @commandBuffer@
+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdBindIndexBuffer2-buffer-parameter# If @buffer@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', @buffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.Buffer' handle
+--
+-- -   #VUID-vkCmdBindIndexBuffer2-indexType-parameter# @indexType@ /must/
+--     be a valid 'Vulkan.Core10.Enums.IndexType.IndexType' value
+--
+-- -   #VUID-vkCmdBindIndexBuffer2-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-vkCmdBindIndexBuffer2-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
+--
+-- -   #VUID-vkCmdBindIndexBuffer2-videocoding# This command /must/ only be
+--     called outside of a video coding scope
+--
+-- -   #VUID-vkCmdBindIndexBuffer2-commonparent# Both of @buffer@, and
+--     @commandBuffer@ 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#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdBindIndexBuffer2 is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance5 VK_KHR_maintenance5>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
+-- 'Vulkan.Core10.Enums.IndexType.IndexType'
+cmdBindIndexBuffer2 :: 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)
+                    -> -- | @size@ is the size in bytes of index data bound from @buffer@.
+                       DeviceSize
+                    -> -- | @indexType@ is a 'Vulkan.Core10.Enums.IndexType.IndexType' value
+                       -- specifying the size of the indices.
+                       IndexType
+                    -> io ()
+cmdBindIndexBuffer2 commandBuffer buffer offset size indexType = liftIO $ do
+  let vkCmdBindIndexBuffer2Ptr = pVkCmdBindIndexBuffer2 (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  unless (vkCmdBindIndexBuffer2Ptr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdBindIndexBuffer2 is null" Nothing Nothing
+  let vkCmdBindIndexBuffer2' = mkVkCmdBindIndexBuffer2 vkCmdBindIndexBuffer2Ptr
+  traceAroundEvent "vkCmdBindIndexBuffer2" (vkCmdBindIndexBuffer2'
+                                              (commandBufferHandle (commandBuffer))
+                                              (buffer)
+                                              (offset)
+                                              (size)
+                                              (indexType))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetImageSubresourceLayout2
+  :: FunPtr (Ptr Device_T -> Image -> Ptr ImageSubresource2 -> Ptr (SomeStruct SubresourceLayout2) -> IO ()) -> Ptr Device_T -> Image -> Ptr ImageSubresource2 -> Ptr (SomeStruct SubresourceLayout2) -> IO ()
+
+-- | vkGetImageSubresourceLayout2 - Retrieve information about an image
+-- subresource
+--
+-- = Description
+--
+-- 'getImageSubresourceLayout2' behaves similarly to
+-- 'Vulkan.Core10.Image.getImageSubresourceLayout', with the ability to
+-- specify extended inputs via chained input structures, and to return
+-- extended information via chained output structures.
+--
+-- It is legal to call 'getImageSubresourceLayout2' with an @image@ created
+-- with @tiling@ equal to
+-- 'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL', but the members
+-- of 'SubresourceLayout2'::@subresourceLayout@ will have undefined values
+-- in this case.
+--
+-- Structures chained from 'ImageSubresource2'::@pNext@ will also be
+-- updated when @tiling@ is equal to
+-- 'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL'.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkGetImageSubresourceLayout2-aspectMask-00997# The
+--     @aspectMask@ member of @pSubresource@ /must/ only have a single bit
+--     set
+--
+-- -   #VUID-vkGetImageSubresourceLayout2-mipLevel-01716# The @mipLevel@
+--     member of @pSubresource@ /must/ be less than the @mipLevels@
+--     specified in @image@
+--
+-- -   #VUID-vkGetImageSubresourceLayout2-arrayLayer-01717# The
+--     @arrayLayer@ member of @pSubresource@ /must/ be less than the
+--     @arrayLayers@ specified in @image@
+--
+-- -   #VUID-vkGetImageSubresourceLayout2-format-08886# If @format@ of the
+--     @image@ is a color format that is not a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-multiplanar multi-planar format>,
+--     and @tiling@ of the @image@ is
+--     'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR' or
+--     'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL', the
+--     @aspectMask@ member of @pSubresource@ /must/ be
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'
+--
+-- -   #VUID-vkGetImageSubresourceLayout2-format-04462# If @format@ of the
+--     @image@ has a depth component, the @aspectMask@ member of
+--     @pSubresource@ /must/ contain
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT'
+--
+-- -   #VUID-vkGetImageSubresourceLayout2-format-04463# If @format@ of the
+--     @image@ has a stencil component, the @aspectMask@ member of
+--     @pSubresource@ /must/ contain
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
+--
+-- -   #VUID-vkGetImageSubresourceLayout2-format-04464# If @format@ of the
+--     @image@ does not contain a stencil or depth component, the
+--     @aspectMask@ member of @pSubresource@ /must/ not contain
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' or
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
+--
+-- -   #VUID-vkGetImageSubresourceLayout2-tiling-08717# If the @tiling@ of
+--     the @image@ is 'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR'
+--     and has a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-multiplanar multi-planar format>,
+--     then the @aspectMask@ member of @pSubresource@ /must/ be a single
+--     valid
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-multiplanar-image-aspect multi-planar aspect mask>
+--     bit
+--
+-- -   #VUID-vkGetImageSubresourceLayout2-image-09434# If @image@ was
+--     created with the
+--     'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID'
+--     external memory handle type, then @image@ /must/ be bound to memory
+--
+-- -   #VUID-vkGetImageSubresourceLayout2-tiling-09435# If the @tiling@ of
+--     the @image@ is
+--     'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT',
+--     then the @aspectMask@ member of @pSubresource@ /must/ be
+--     @VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT@ and the index /i/ /must/ be
+--     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-vkGetImageSubresourceLayout2-device-parameter# @device@ /must/
+--     be a valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkGetImageSubresourceLayout2-image-parameter# @image@ /must/
+--     be a valid 'Vulkan.Core10.Handles.Image' handle
+--
+-- -   #VUID-vkGetImageSubresourceLayout2-pSubresource-parameter#
+--     @pSubresource@ /must/ be a valid pointer to a valid
+--     'ImageSubresource2' structure
+--
+-- -   #VUID-vkGetImageSubresourceLayout2-pLayout-parameter# @pLayout@
+--     /must/ be a valid pointer to a 'SubresourceLayout2' structure
+--
+-- -   #VUID-vkGetImageSubresourceLayout2-image-parent# @image@ /must/ have
+--     been created, allocated, or retrieved from @device@
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_host_image_copy VK_EXT_host_image_copy>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_image_compression_control VK_EXT_image_compression_control>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance5 VK_KHR_maintenance5>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'Vulkan.Core10.Handles.Device', 'Vulkan.Core10.Handles.Image',
+-- 'ImageSubresource2', 'SubresourceLayout2'
+getImageSubresourceLayout2 :: forall a io
+                            . ( Extendss SubresourceLayout2 a
+                              , PokeChain a
+                              , PeekChain a
+                              , MonadIO io )
+                           => -- | @device@ is the logical device that owns the image.
+                              Device
+                           -> -- | @image@ is the image whose layout is being queried.
+                              Image
+                           -> -- | @pSubresource@ is a pointer to a 'ImageSubresource2' structure selecting
+                              -- a specific image for the image subresource.
+                              ImageSubresource2
+                           -> io (SubresourceLayout2 a)
+getImageSubresourceLayout2 device image subresource = liftIO . evalContT $ do
+  let vkGetImageSubresourceLayout2Ptr = pVkGetImageSubresourceLayout2 (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkGetImageSubresourceLayout2Ptr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetImageSubresourceLayout2 is null" Nothing Nothing
+  let vkGetImageSubresourceLayout2' = mkVkGetImageSubresourceLayout2 vkGetImageSubresourceLayout2Ptr
+  pSubresource <- ContT $ withCStruct (subresource)
+  pPLayout <- ContT (withZeroCStruct @(SubresourceLayout2 _))
+  lift $ traceAroundEvent "vkGetImageSubresourceLayout2" (vkGetImageSubresourceLayout2'
+                                                            (deviceHandle (device))
+                                                            (image)
+                                                            pSubresource
+                                                            (forgetExtensions (pPLayout)))
+  pLayout <- lift $ peekCStruct @(SubresourceLayout2 _) pPLayout
+  pure $ (pLayout)
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetDeviceImageSubresourceLayout
+  :: FunPtr (Ptr Device_T -> Ptr DeviceImageSubresourceInfo -> Ptr (SomeStruct SubresourceLayout2) -> IO ()) -> Ptr Device_T -> Ptr DeviceImageSubresourceInfo -> Ptr (SomeStruct SubresourceLayout2) -> IO ()
+
+-- | vkGetDeviceImageSubresourceLayout - Retrieve information about an image
+-- subresource without an image object
+--
+-- = Description
+--
+-- 'getDeviceImageSubresourceLayout' behaves similarly to
+-- 'getImageSubresourceLayout2', but uses a
+-- 'Vulkan.Core10.Image.ImageCreateInfo' structure to specify the image
+-- rather than a 'Vulkan.Core10.Handles.Image' object.
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance5 VK_KHR_maintenance5>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'Vulkan.Core10.Handles.Device', 'DeviceImageSubresourceInfo',
+-- 'SubresourceLayout2'
+getDeviceImageSubresourceLayout :: forall a io
+                                 . ( Extendss SubresourceLayout2 a
+                                   , PokeChain a
+                                   , PeekChain a
+                                   , MonadIO io )
+                                => -- | @device@ is the logical device that owns the image.
+                                   --
+                                   -- #VUID-vkGetDeviceImageSubresourceLayout-device-parameter# @device@
+                                   -- /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+                                   Device
+                                -> -- | @pInfo@ is a pointer to a 'DeviceImageSubresourceInfo' structure
+                                   -- containing parameters required for the subresource layout query.
+                                   --
+                                   -- #VUID-vkGetDeviceImageSubresourceLayout-pInfo-parameter# @pInfo@ /must/
+                                   -- be a valid pointer to a valid 'DeviceImageSubresourceInfo' structure
+                                   DeviceImageSubresourceInfo
+                                -> io (SubresourceLayout2 a)
+getDeviceImageSubresourceLayout device info = liftIO . evalContT $ do
+  let vkGetDeviceImageSubresourceLayoutPtr = pVkGetDeviceImageSubresourceLayout (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkGetDeviceImageSubresourceLayoutPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetDeviceImageSubresourceLayout is null" Nothing Nothing
+  let vkGetDeviceImageSubresourceLayout' = mkVkGetDeviceImageSubresourceLayout vkGetDeviceImageSubresourceLayoutPtr
+  pInfo <- ContT $ withCStruct (info)
+  pPLayout <- ContT (withZeroCStruct @(SubresourceLayout2 _))
+  lift $ traceAroundEvent "vkGetDeviceImageSubresourceLayout" (vkGetDeviceImageSubresourceLayout'
+                                                                 (deviceHandle (device))
+                                                                 pInfo
+                                                                 (forgetExtensions (pPLayout)))
+  pLayout <- lift $ peekCStruct @(SubresourceLayout2 _) pPLayout
+  pure $ (pLayout)
+
+
+-- | VkBufferUsageFlags2CreateInfo - Extended buffer usage flags
+--
+-- = Description
+--
+-- If this structure is included in the @pNext@ chain of a buffer creation
+-- structure, @usage@ is used instead of the corresponding @usage@ value
+-- passed in that creation structure, allowing additional usage flags to be
+-- specified. If this structure is included in the @pNext@ chain of a
+-- buffer query structure, the usage flags of the buffer are returned in
+-- @usage@ of this structure, and the usage flags representable in @usage@
+-- of the buffer query structure are also returned in that field.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Buffer.BufferCreateInfo'
+--
+--     -   'Vulkan.Core10.BufferView.BufferViewCreateInfo'
+--
+--     -   'Vulkan.Extensions.VK_EXT_descriptor_buffer.DescriptorBufferBindingInfoEXT'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceExternalBufferInfo'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance5 VK_KHR_maintenance5>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'Vulkan.Core14.Enums.BufferUsageFlags2.BufferUsageFlags2',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data BufferUsageFlags2CreateInfo = BufferUsageFlags2CreateInfo
+  { -- | @usage@ is a bitmask of
+    -- 'Vulkan.Core14.Enums.BufferUsageFlags2.BufferUsageFlagBits2' specifying
+    -- allowed usages of the buffer.
+    --
+    -- #VUID-VkBufferUsageFlags2CreateInfo-usage-parameter# @usage@ /must/ be a
+    -- valid combination of
+    -- 'Vulkan.Core14.Enums.BufferUsageFlags2.BufferUsageFlagBits2' values
+    --
+    -- #VUID-VkBufferUsageFlags2CreateInfo-usage-requiredbitmask# @usage@
+    -- /must/ not be @0@
+    usage :: BufferUsageFlags2 }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (BufferUsageFlags2CreateInfo)
+#endif
+deriving instance Show BufferUsageFlags2CreateInfo
+
+instance ToCStruct BufferUsageFlags2CreateInfo where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p BufferUsageFlags2CreateInfo{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr BufferUsageFlags2)) (usage)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr BufferUsageFlags2)) (zero)
+    f
+
+instance FromCStruct BufferUsageFlags2CreateInfo where
+  peekCStruct p = do
+    usage <- peek @BufferUsageFlags2 ((p `plusPtr` 16 :: Ptr BufferUsageFlags2))
+    pure $ BufferUsageFlags2CreateInfo
+             usage
+
+instance Storable BufferUsageFlags2CreateInfo where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero BufferUsageFlags2CreateInfo where
+  zero = BufferUsageFlags2CreateInfo
+           zero
+
+
+-- | VkPipelineCreateFlags2CreateInfo - Extended pipeline create flags
+--
+-- = Description
+--
+-- If this structure is included in the @pNext@ chain of a pipeline
+-- creation structure, @flags@ is used instead of the corresponding @flags@
+-- value passed in that creation structure, allowing additional creation
+-- flags to be specified.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.ComputePipeline.ComputePipelineCreateInfo'
+--
+--     -   'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'
+--
+--     -   'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingPipelineCreateInfoKHR'
+--
+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.RayTracingPipelineCreateInfoNV'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance5 VK_KHR_maintenance5>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'Vulkan.Core14.Enums.PipelineCreateFlags2.PipelineCreateFlags2',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PipelineCreateFlags2CreateInfo = PipelineCreateFlags2CreateInfo
+  { -- | @flags@ is a bitmask of
+    -- 'Vulkan.Core14.Enums.PipelineCreateFlags2.PipelineCreateFlagBits2'
+    -- specifying how a pipeline will be generated.
+    --
+    -- #VUID-VkPipelineCreateFlags2CreateInfo-flags-parameter# @flags@ /must/
+    -- be a valid combination of
+    -- 'Vulkan.Core14.Enums.PipelineCreateFlags2.PipelineCreateFlagBits2'
+    -- values
+    flags :: PipelineCreateFlags2 }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PipelineCreateFlags2CreateInfo)
+#endif
+deriving instance Show PipelineCreateFlags2CreateInfo
+
+instance ToCStruct PipelineCreateFlags2CreateInfo where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PipelineCreateFlags2CreateInfo{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr PipelineCreateFlags2)) (flags)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    f
+
+instance FromCStruct PipelineCreateFlags2CreateInfo where
+  peekCStruct p = do
+    flags <- peek @PipelineCreateFlags2 ((p `plusPtr` 16 :: Ptr PipelineCreateFlags2))
+    pure $ PipelineCreateFlags2CreateInfo
+             flags
+
+instance Storable PipelineCreateFlags2CreateInfo where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PipelineCreateFlags2CreateInfo where
+  zero = PipelineCreateFlags2CreateInfo
+           zero
+
+
+-- | VkPhysicalDeviceMaintenance5Features - Structure describing whether the
+-- implementation supports maintenance5 functionality
+--
+-- = Members
+--
+-- This structure describes the following feature:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceMaintenance5Features' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceMaintenance5Features', it /must/ add an instance of the
+-- structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance5 VK_KHR_maintenance5>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceMaintenance5Features = PhysicalDeviceMaintenance5Features
+  { -- | #extension-features-maintenance5# @maintenance5@ indicates that the
+    -- implementation supports the following:
+    --
+    -- -   The ability to expose support for the optional format
+    --     'Vulkan.Core10.Enums.Format.FORMAT_A1B5G5R5_UNORM_PACK16'.
+    --
+    -- -   The ability to expose support for the optional format
+    --     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM'.
+    --
+    -- -   A property to indicate that multisample coverage operations are
+    --     performed after sample counting in EarlyFragmentTests mode.
+    --
+    -- -   Creating a 'Vulkan.Core10.Handles.BufferView' with a subset of the
+    --     associated 'Vulkan.Core10.Handles.Buffer' usage using
+    --     'BufferUsageFlags2CreateInfo'.
+    --
+    -- -   A new function 'cmdBindIndexBuffer2', allowing a range of memory to
+    --     be bound as an index buffer.
+    --
+    -- -   'Vulkan.Core10.DeviceInitialization.getDeviceProcAddr' will return
+    --     @NULL@ for function pointers of core functions for versions higher
+    --     than the version requested by the application.
+    --
+    -- -   'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2'
+    --     supports using 'Vulkan.Core10.APIConstants.WHOLE_SIZE' in the
+    --     @pSizes@ parameter.
+    --
+    -- -   If @PointSize@ is not written, a default value of @1.0@ is used for
+    --     the size of points.
+    --
+    -- -   'Vulkan.Core10.Shader.ShaderModuleCreateInfo' /can/ be added as a
+    --     chained structure to pipeline creation via
+    --     'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo',
+    --     rather than having to create a shader module.
+    --
+    -- -   A function 'getRenderingAreaGranularity' to query the optimal render
+    --     area for a dynamic rendering instance.
+    --
+    -- -   A property to indicate that depth\/stencil texturing operations with
+    --     'Vulkan.Core10.Enums.ComponentSwizzle.COMPONENT_SWIZZLE_ONE' have
+    --     defined behavior.
+    --
+    -- -   'getDeviceImageSubresourceLayout' allows an application to perform a
+    --     'Vulkan.Core10.Image.getImageSubresourceLayout' query without having
+    --     to create an image.
+    --
+    -- -   'Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS' as the
+    --     @layerCount@ member of
+    --     'Vulkan.Core10.CommandBufferBuilding.ImageSubresourceLayers'.
+    --
+    -- -   A property to indicate whether @PointSize@ controls the final
+    --     rasterization of polygons if
+    --     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-polygonmode polygon mode>
+    --     is 'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_POINT'.
+    --
+    -- -   Two properties to indicate the non-strict line rasterization
+    --     algorithm used.
+    --
+    -- -   Two new flags words
+    --     'Vulkan.Core14.Enums.PipelineCreateFlags2.PipelineCreateFlagBits2'
+    --     and 'Vulkan.Core14.Enums.BufferUsageFlags2.BufferUsageFlagBits2'.
+    --
+    -- -   Physical-device-level functions /can/ now be called with any value
+    --     in the valid range for a type beyond the defined enumerants, such
+    --     that applications can avoid checking individual features,
+    --     extensions, or versions before querying supported properties of a
+    --     particular enumerant.
+    --
+    -- -   Copies between images of any type are allowed, with 1D images
+    --     treated as 2D images with a height of @1@.
+    maintenance5 :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceMaintenance5Features)
+#endif
+deriving instance Show PhysicalDeviceMaintenance5Features
+
+instance ToCStruct PhysicalDeviceMaintenance5Features where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceMaintenance5Features{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (maintenance5))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceMaintenance5Features where
+  peekCStruct p = do
+    maintenance5 <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDeviceMaintenance5Features
+             (bool32ToBool maintenance5)
+
+instance Storable PhysicalDeviceMaintenance5Features where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceMaintenance5Features where
+  zero = PhysicalDeviceMaintenance5Features
+           zero
+
+
+-- | VkPhysicalDeviceMaintenance5Properties - Structure describing various
+-- implementation-defined properties introduced with VK_KHR_maintenance5
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceMaintenance5Properties' 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.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance5 VK_KHR_maintenance5>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceMaintenance5Properties = PhysicalDeviceMaintenance5Properties
+  { -- | @earlyFragmentMultisampleCoverageAfterSampleCounting@ is a boolean value
+    -- indicating whether the
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#fragops-shader fragment shading>
+    -- and
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#fragops-covg multisample coverage>
+    -- operations are performed after
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#fragops-samplecount sample counting>
+    -- for
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#fragops-shader fragment shaders>
+    -- with @EarlyFragmentTests@ execution mode.
+    earlyFragmentMultisampleCoverageAfterSampleCounting :: Bool
+  , -- | @earlyFragmentSampleMaskTestBeforeSampleCounting@ is a boolean value
+    -- indicating whether the
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#fragops-samplemask sample mask test>
+    -- operation is performed before
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#fragops-samplecount sample counting>
+    -- for
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#fragops-shader fragment shaders>
+    -- using the @EarlyFragmentTests@ execution mode.
+    earlyFragmentSampleMaskTestBeforeSampleCounting :: Bool
+  , -- | @depthStencilSwizzleOneSupport@ is a boolean indicating that
+    -- depth\/stencil texturing operations with
+    -- 'Vulkan.Core10.Enums.ComponentSwizzle.COMPONENT_SWIZZLE_ONE' have
+    -- defined behavior.
+    depthStencilSwizzleOneSupport :: Bool
+  , -- | @polygonModePointSize@ is a boolean value indicating whether the point
+    -- size of the final rasterization of polygons with
+    -- 'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_POINT' is controlled by
+    -- @PointSize@.
+    polygonModePointSize :: Bool
+  , -- | @nonStrictSinglePixelWideLinesUseParallelogram@ is a boolean value
+    -- indicating whether non-strict lines with a width of 1.0 are rasterized
+    -- as parallelograms or using Bresenham’s algorithm.
+    nonStrictSinglePixelWideLinesUseParallelogram :: Bool
+  , -- | @nonStrictWideLinesUseParallelogram@ is a boolean value indicating
+    -- whether non-strict lines with a width greater than 1.0 are rasterized as
+    -- parallelograms or using Bresenham’s algorithm.
+    nonStrictWideLinesUseParallelogram :: Bool
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceMaintenance5Properties)
+#endif
+deriving instance Show PhysicalDeviceMaintenance5Properties
+
+instance ToCStruct PhysicalDeviceMaintenance5Properties where
+  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceMaintenance5Properties{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (earlyFragmentMultisampleCoverageAfterSampleCounting))
+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (earlyFragmentSampleMaskTestBeforeSampleCounting))
+    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (depthStencilSwizzleOneSupport))
+    poke ((p `plusPtr` 28 :: Ptr Bool32)) (boolToBool32 (polygonModePointSize))
+    poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (nonStrictSinglePixelWideLinesUseParallelogram))
+    poke ((p `plusPtr` 36 :: Ptr Bool32)) (boolToBool32 (nonStrictWideLinesUseParallelogram))
+    f
+  cStructSize = 40
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_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))
+    f
+
+instance FromCStruct PhysicalDeviceMaintenance5Properties where
+  peekCStruct p = do
+    earlyFragmentMultisampleCoverageAfterSampleCounting <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    earlyFragmentSampleMaskTestBeforeSampleCounting <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
+    depthStencilSwizzleOneSupport <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))
+    polygonModePointSize <- peek @Bool32 ((p `plusPtr` 28 :: Ptr Bool32))
+    nonStrictSinglePixelWideLinesUseParallelogram <- peek @Bool32 ((p `plusPtr` 32 :: Ptr Bool32))
+    nonStrictWideLinesUseParallelogram <- peek @Bool32 ((p `plusPtr` 36 :: Ptr Bool32))
+    pure $ PhysicalDeviceMaintenance5Properties
+             (bool32ToBool earlyFragmentMultisampleCoverageAfterSampleCounting)
+             (bool32ToBool earlyFragmentSampleMaskTestBeforeSampleCounting)
+             (bool32ToBool depthStencilSwizzleOneSupport)
+             (bool32ToBool polygonModePointSize)
+             (bool32ToBool nonStrictSinglePixelWideLinesUseParallelogram)
+             (bool32ToBool nonStrictWideLinesUseParallelogram)
+
+instance Storable PhysicalDeviceMaintenance5Properties where
+  sizeOf ~_ = 40
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceMaintenance5Properties where
+  zero = PhysicalDeviceMaintenance5Properties
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkRenderingAreaInfo - Structure describing rendering area granularity
+-- query info
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance5 VK_KHR_maintenance5>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'Vulkan.Core10.Enums.Format.Format',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'getRenderingAreaGranularity', 'getRenderingAreaGranularity'
+data RenderingAreaInfo = RenderingAreaInfo
+  { -- | @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 the render pass instance.
+    colorAttachmentFormats :: Vector Format
+  , -- | @depthAttachmentFormat@ is a 'Vulkan.Core10.Enums.Format.Format' value
+    -- defining the format of the depth attachment used in the render pass
+    -- instance.
+    depthAttachmentFormat :: Format
+  , -- | @stencilAttachmentFormat@ is a 'Vulkan.Core10.Enums.Format.Format' value
+    -- defining the format of the stencil attachment used in the render pass
+    -- instance.
+    stencilAttachmentFormat :: Format
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (RenderingAreaInfo)
+#endif
+deriving instance Show RenderingAreaInfo
+
+instance ToCStruct RenderingAreaInfo where
+  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p RenderingAreaInfo{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RENDERING_AREA_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_RENDERING_AREA_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 RenderingAreaInfo 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 $ RenderingAreaInfo
+             viewMask
+             pColorAttachmentFormats'
+             depthAttachmentFormat
+             stencilAttachmentFormat
+
+instance Zero RenderingAreaInfo where
+  zero = RenderingAreaInfo
+           zero
+           mempty
+           zero
+           zero
+
+
+-- | VkImageSubresource2 - Structure specifying an image subresource
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_host_image_copy VK_EXT_host_image_copy>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_image_compression_control VK_EXT_image_compression_control>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance5 VK_KHR_maintenance5>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'DeviceImageSubresourceInfo',
+-- 'Vulkan.Core10.SparseResourceMemoryManagement.ImageSubresource',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'getImageSubresourceLayout2', 'getImageSubresourceLayout2',
+-- 'getImageSubresourceLayout2'
+data ImageSubresource2 = ImageSubresource2
+  { -- | @imageSubresource@ is a
+    -- 'Vulkan.Core10.SparseResourceMemoryManagement.ImageSubresource'
+    -- structure.
+    --
+    -- #VUID-VkImageSubresource2-imageSubresource-parameter# @imageSubresource@
+    -- /must/ be a valid
+    -- 'Vulkan.Core10.SparseResourceMemoryManagement.ImageSubresource'
+    -- structure
+    imageSubresource :: ImageSubresource }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (ImageSubresource2)
+#endif
+deriving instance Show ImageSubresource2
+
+instance ToCStruct ImageSubresource2 where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p ImageSubresource2{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr ImageSubresource)) (imageSubresource)
+    f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr ImageSubresource)) (zero)
+    f
+
+instance FromCStruct ImageSubresource2 where
+  peekCStruct p = do
+    imageSubresource <- peekCStruct @ImageSubresource ((p `plusPtr` 16 :: Ptr ImageSubresource))
+    pure $ ImageSubresource2
+             imageSubresource
+
+instance Storable ImageSubresource2 where
+  sizeOf ~_ = 32
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero ImageSubresource2 where
+  zero = ImageSubresource2
+           zero
+
+
+-- | VkSubresourceLayout2 - Structure specifying subresource layout
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkSubresourceLayout2-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2'
+--
+-- -   #VUID-VkSubresourceLayout2-pNext-pNext# Each @pNext@ member of any
+--     structure (including this one) in the @pNext@ chain /must/ be either
+--     @NULL@ or a pointer to a valid instance of
+--     'Vulkan.Extensions.VK_EXT_image_compression_control.ImageCompressionPropertiesEXT'
+--     or
+--     'Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy.SubresourceHostMemcpySize'
+--
+-- -   #VUID-VkSubresourceLayout2-sType-unique# The @sType@ value of each
+--     structure in the @pNext@ chain /must/ be unique
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_host_image_copy VK_EXT_host_image_copy>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_image_compression_control VK_EXT_image_compression_control>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance5 VK_KHR_maintenance5>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'Vulkan.Core10.Image.SubresourceLayout',
+-- 'getDeviceImageSubresourceLayout', 'getDeviceImageSubresourceLayout',
+-- 'getImageSubresourceLayout2', 'getImageSubresourceLayout2',
+-- 'getImageSubresourceLayout2'
+data SubresourceLayout2 (es :: [Type]) = SubresourceLayout2
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
+    next :: Chain es
+  , -- | @subresourceLayout@ is a 'Vulkan.Core10.Image.SubresourceLayout'
+    -- structure.
+    subresourceLayout :: SubresourceLayout
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (SubresourceLayout2 (es :: [Type]))
+#endif
+deriving instance Show (Chain es) => Show (SubresourceLayout2 es)
+
+instance Extensible SubresourceLayout2 where
+  extensibleTypeName = "SubresourceLayout2"
+  setNext SubresourceLayout2{..} next' = SubresourceLayout2{next = next', ..}
+  getNext SubresourceLayout2{..} = next
+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends SubresourceLayout2 e => b) -> Maybe b
+  extends _ f
+    | Just Refl <- eqT @e @ImageCompressionPropertiesEXT = Just f
+    | Just Refl <- eqT @e @SubresourceHostMemcpySize = Just f
+    | otherwise = Nothing
+
+instance ( Extendss SubresourceLayout2 es
+         , PokeChain es ) => ToCStruct (SubresourceLayout2 es) where
+  withCStruct x f = allocaBytes 56 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p SubresourceLayout2{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2)
+    pNext'' <- fmap castPtr . ContT $ withChain (next)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
+    lift $ poke ((p `plusPtr` 16 :: Ptr SubresourceLayout)) (subresourceLayout)
+    lift $ f
+  cStructSize = 56
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2)
+    pNext' <- fmap castPtr . ContT $ withZeroChain @es
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
+    lift $ poke ((p `plusPtr` 16 :: Ptr SubresourceLayout)) (zero)
+    lift $ f
+
+instance ( Extendss SubresourceLayout2 es
+         , PeekChain es ) => FromCStruct (SubresourceLayout2 es) where
+  peekCStruct p = do
+    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
+    next <- peekChain (castPtr pNext)
+    subresourceLayout <- peekCStruct @SubresourceLayout ((p `plusPtr` 16 :: Ptr SubresourceLayout))
+    pure $ SubresourceLayout2
+             next subresourceLayout
+
+instance es ~ '[] => Zero (SubresourceLayout2 es) where
+  zero = SubresourceLayout2
+           ()
+           zero
+
+
+-- | VkDeviceImageSubresourceInfo - Image creation information for querying
+-- subresource layout
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkDeviceImageSubresourceInfo-aspectMask-00997# The
+--     @aspectMask@ member of @pSubresource@ /must/ only have a single bit
+--     set
+--
+-- -   #VUID-VkDeviceImageSubresourceInfo-mipLevel-01716# The @mipLevel@
+--     member of @pSubresource@ /must/ be less than the @mipLevels@
+--     specified in @pCreateInfo@
+--
+-- -   #VUID-VkDeviceImageSubresourceInfo-arrayLayer-01717# The
+--     @arrayLayer@ member of @pSubresource@ /must/ be less than the
+--     @arrayLayers@ specified in @pCreateInfo@
+--
+-- -   #VUID-VkDeviceImageSubresourceInfo-format-08886# If @format@ of the
+--     @image@ is a color format that is not a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-multiplanar multi-planar format>,
+--     and @tiling@ of the @pCreateInfo@ is
+--     'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR' or
+--     'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL', the
+--     @aspectMask@ member of @pSubresource@ /must/ be
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'
+--
+-- -   #VUID-VkDeviceImageSubresourceInfo-format-04462# If @format@ of the
+--     @pCreateInfo@ has a depth component, the @aspectMask@ member of
+--     @pSubresource@ /must/ contain
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT'
+--
+-- -   #VUID-VkDeviceImageSubresourceInfo-format-04463# If @format@ of the
+--     @pCreateInfo@ has a stencil component, the @aspectMask@ member of
+--     @pSubresource@ /must/ contain
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
+--
+-- -   #VUID-VkDeviceImageSubresourceInfo-format-04464# If @format@ of the
+--     @pCreateInfo@ does not contain a stencil or depth component, the
+--     @aspectMask@ member of @pSubresource@ /must/ not contain
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' or
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
+--
+-- -   #VUID-VkDeviceImageSubresourceInfo-tiling-08717# If the @tiling@ of
+--     the @pCreateInfo@ is
+--     'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR' and has a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-multiplanar multi-planar format>,
+--     then the @aspectMask@ member of @pSubresource@ /must/ be a single
+--     valid
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-multiplanar-image-aspect multi-planar aspect mask>
+--     bit
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkDeviceImageSubresourceInfo-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO'
+--
+-- -   #VUID-VkDeviceImageSubresourceInfo-pNext-pNext# @pNext@ /must/ be
+--     @NULL@
+--
+-- -   #VUID-VkDeviceImageSubresourceInfo-pCreateInfo-parameter#
+--     @pCreateInfo@ /must/ be a valid pointer to a valid
+--     'Vulkan.Core10.Image.ImageCreateInfo' structure
+--
+-- -   #VUID-VkDeviceImageSubresourceInfo-pSubresource-parameter#
+--     @pSubresource@ /must/ be a valid pointer to a valid
+--     'ImageSubresource2' structure
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance5 VK_KHR_maintenance5>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'Vulkan.Core10.Image.ImageCreateInfo', 'ImageSubresource2',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'getDeviceImageSubresourceLayout', 'getDeviceImageSubresourceLayout'
+data DeviceImageSubresourceInfo = DeviceImageSubresourceInfo
+  { -- | @pCreateInfo@ is a pointer to a 'Vulkan.Core10.Image.ImageCreateInfo'
+    -- structure containing parameters affecting creation of the image to
+    -- query.
+    createInfo :: SomeStruct ImageCreateInfo
+  , -- | @pSubresource@ is a pointer to a 'ImageSubresource2' structure selecting
+    -- a specific image subresource for the query.
+    subresource :: ImageSubresource2
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (DeviceImageSubresourceInfo)
+#endif
+deriving instance Show DeviceImageSubresourceInfo
+
+instance ToCStruct DeviceImageSubresourceInfo where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p DeviceImageSubresourceInfo{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO)
+    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''
+    pSubresource'' <- ContT $ withCStruct (subresource)
+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr ImageSubresource2))) pSubresource''
+    lift $ f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO)
+    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''
+    pSubresource'' <- ContT $ withCStruct (zero)
+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr ImageSubresource2))) pSubresource''
+    lift $ f
+
+instance FromCStruct DeviceImageSubresourceInfo where
+  peekCStruct p = do
+    pCreateInfo <- peekSomeCStruct . forgetExtensions =<< peek ((p `plusPtr` 16 :: Ptr (Ptr (ImageCreateInfo _))))
+    pSubresource <- peekCStruct @ImageSubresource2 =<< peek ((p `plusPtr` 24 :: Ptr (Ptr ImageSubresource2)))
+    pure $ DeviceImageSubresourceInfo
+             pCreateInfo pSubresource
+
+instance Zero DeviceImageSubresourceInfo where
+  zero = DeviceImageSubresourceInfo
+           (SomeStruct zero)
+           zero
+
diff --git a/src/Vulkan/Core14/Promoted_From_VK_KHR_maintenance5.hs-boot b/src/Vulkan/Core14/Promoted_From_VK_KHR_maintenance5.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core14/Promoted_From_VK_KHR_maintenance5.hs-boot
@@ -0,0 +1,85 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Promoted_From_VK_KHR_maintenance5"
+module Vulkan.Core14.Promoted_From_VK_KHR_maintenance5  ( BufferUsageFlags2CreateInfo
+                                                        , DeviceImageSubresourceInfo
+                                                        , ImageSubresource2
+                                                        , PhysicalDeviceMaintenance5Features
+                                                        , PhysicalDeviceMaintenance5Properties
+                                                        , PipelineCreateFlags2CreateInfo
+                                                        , RenderingAreaInfo
+                                                        , SubresourceLayout2
+                                                        ) 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 BufferUsageFlags2CreateInfo
+
+instance ToCStruct BufferUsageFlags2CreateInfo
+instance Show BufferUsageFlags2CreateInfo
+
+instance FromCStruct BufferUsageFlags2CreateInfo
+
+
+data DeviceImageSubresourceInfo
+
+instance ToCStruct DeviceImageSubresourceInfo
+instance Show DeviceImageSubresourceInfo
+
+instance FromCStruct DeviceImageSubresourceInfo
+
+
+data ImageSubresource2
+
+instance ToCStruct ImageSubresource2
+instance Show ImageSubresource2
+
+instance FromCStruct ImageSubresource2
+
+
+data PhysicalDeviceMaintenance5Features
+
+instance ToCStruct PhysicalDeviceMaintenance5Features
+instance Show PhysicalDeviceMaintenance5Features
+
+instance FromCStruct PhysicalDeviceMaintenance5Features
+
+
+data PhysicalDeviceMaintenance5Properties
+
+instance ToCStruct PhysicalDeviceMaintenance5Properties
+instance Show PhysicalDeviceMaintenance5Properties
+
+instance FromCStruct PhysicalDeviceMaintenance5Properties
+
+
+data PipelineCreateFlags2CreateInfo
+
+instance ToCStruct PipelineCreateFlags2CreateInfo
+instance Show PipelineCreateFlags2CreateInfo
+
+instance FromCStruct PipelineCreateFlags2CreateInfo
+
+
+data RenderingAreaInfo
+
+instance ToCStruct RenderingAreaInfo
+instance Show RenderingAreaInfo
+
+instance FromCStruct RenderingAreaInfo
+
+
+type role SubresourceLayout2 nominal
+data SubresourceLayout2 (es :: [Type])
+
+instance ( Extendss SubresourceLayout2 es
+         , PokeChain es ) => ToCStruct (SubresourceLayout2 es)
+instance Show (Chain es) => Show (SubresourceLayout2 es)
+
+instance ( Extendss SubresourceLayout2 es
+         , PeekChain es ) => FromCStruct (SubresourceLayout2 es)
+
diff --git a/src/Vulkan/Core14/Promoted_From_VK_KHR_maintenance6.hs b/src/Vulkan/Core14/Promoted_From_VK_KHR_maintenance6.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core14/Promoted_From_VK_KHR_maintenance6.hs
@@ -0,0 +1,1584 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Promoted_From_VK_KHR_maintenance6"
+module Vulkan.Core14.Promoted_From_VK_KHR_maintenance6  ( cmdBindDescriptorSets2
+                                                        , cmdPushConstants2
+                                                        , cmdPushDescriptorSet2
+                                                        , cmdPushDescriptorSetWithTemplate2
+                                                        , PhysicalDeviceMaintenance6Features(..)
+                                                        , PhysicalDeviceMaintenance6Properties(..)
+                                                        , BindMemoryStatus(..)
+                                                        , BindDescriptorSetsInfo(..)
+                                                        , PushConstantsInfo(..)
+                                                        , PushDescriptorSetInfo(..)
+                                                        , PushDescriptorSetWithTemplateInfo(..)
+                                                        , StructureType(..)
+                                                        ) 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 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.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.CStruct.Extends (peekSomeCStruct)
+import Vulkan.CStruct.Extends (pokeSomeCStruct)
+import Vulkan.Core10.FundamentalTypes (Bool32)
+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.Handles (DescriptorSet)
+import Vulkan.Core11.Handles (DescriptorUpdateTemplate)
+import Vulkan.Dynamic (DeviceCmds(pVkCmdBindDescriptorSets2))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdPushConstants2))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdPushDescriptorSet2))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdPushDescriptorSetWithTemplate2))
+import Vulkan.CStruct.Extends (Extends)
+import Vulkan.CStruct.Extends (Extendss)
+import Vulkan.CStruct.Extends (Extensible(..))
+import Vulkan.CStruct.Extends (PeekChain)
+import Vulkan.CStruct.Extends (PeekChain(..))
+import Vulkan.Core10.Handles (PipelineLayout)
+import {-# SOURCE #-} Vulkan.Core10.PipelineLayout (PipelineLayoutCreateInfo)
+import Vulkan.CStruct.Extends (PokeChain)
+import Vulkan.CStruct.Extends (PokeChain(..))
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_push_constant_bank (PushConstantBankInfoNV)
+import Vulkan.Core10.Enums.Result (Result)
+import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)
+import Vulkan.CStruct.Extends (SomeStruct)
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Core10.DescriptorSet (WriteDescriptorSet)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_BIND_DESCRIPTOR_SETS_INFO))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_BIND_MEMORY_STATUS))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PUSH_CONSTANTS_INFO))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_INFO))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO))
+import Vulkan.Core10.Enums.StructureType (StructureType(..))
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdBindDescriptorSets2
+  :: FunPtr (Ptr CommandBuffer_T -> Ptr (SomeStruct BindDescriptorSetsInfo) -> IO ()) -> Ptr CommandBuffer_T -> Ptr (SomeStruct BindDescriptorSetsInfo) -> IO ()
+
+-- | vkCmdBindDescriptorSets2 - Binds descriptor sets to a command buffer
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdBindDescriptorSets2-commandBuffer-11295# If
+--     @commandBuffer@ is a secondary command buffer, it /must/ have begun
+--     with
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.CommandBufferInheritanceDescriptorHeapInfoEXT'::@pSamplerHeapBindInfo@
+--     equal to @NULL@
+--
+-- -   #VUID-vkCmdBindDescriptorSets2-commandBuffer-11296# If
+--     @commandBuffer@ is a secondary command buffer, it /must/ have begun
+--     with
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.CommandBufferInheritanceDescriptorHeapInfoEXT'::@pResourceHeapBindInfo@
+--     equal to @NULL@
+--
+-- -   #VUID-vkCmdBindDescriptorSets2-pBindDescriptorSetsInfo-09467# Each
+--     bit in @pBindDescriptorSetsInfo->stageFlags@ /must/ be a stage
+--     supported by the @commandBuffer@’s parent
+--     'Vulkan.Core10.Handles.CommandPool'’s queue family
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdBindDescriptorSets2-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdBindDescriptorSets2-pBindDescriptorSetsInfo-parameter#
+--     @pBindDescriptorSetsInfo@ /must/ be a valid pointer to a valid
+--     'BindDescriptorSetsInfo' structure
+--
+-- -   #VUID-vkCmdBindDescriptorSets2-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-vkCmdBindDescriptorSets2-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', or
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
+--
+-- -   #VUID-vkCmdBindDescriptorSets2-videocoding# This command /must/ only
+--     be called outside of a video coding scope
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | State                                                                                                                                  |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | VK_QUEUE_GRAPHICS_BIT                                                                                                 |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdBindDescriptorSets2 is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance6 VK_KHR_maintenance6>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'BindDescriptorSetsInfo', 'Vulkan.Core10.Handles.CommandBuffer'
+cmdBindDescriptorSets2 :: forall a io
+                        . ( Extendss BindDescriptorSetsInfo a
+                          , PokeChain a
+                          , MonadIO io )
+                       => -- | @commandBuffer@ is the command buffer that the descriptor sets will be
+                          -- bound to.
+                          CommandBuffer
+                       -> -- | @pBindDescriptorSetsInfo@ is a pointer to a 'BindDescriptorSetsInfo'
+                          -- structure.
+                          (BindDescriptorSetsInfo a)
+                       -> io ()
+cmdBindDescriptorSets2 commandBuffer
+                         bindDescriptorSetsInfo = liftIO . evalContT $ do
+  let vkCmdBindDescriptorSets2Ptr = pVkCmdBindDescriptorSets2 (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdBindDescriptorSets2Ptr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdBindDescriptorSets2 is null" Nothing Nothing
+  let vkCmdBindDescriptorSets2' = mkVkCmdBindDescriptorSets2 vkCmdBindDescriptorSets2Ptr
+  pBindDescriptorSetsInfo <- ContT $ withCStruct (bindDescriptorSetsInfo)
+  lift $ traceAroundEvent "vkCmdBindDescriptorSets2" (vkCmdBindDescriptorSets2'
+                                                        (commandBufferHandle (commandBuffer))
+                                                        (forgetExtensions pBindDescriptorSetsInfo))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdPushConstants2
+  :: FunPtr (Ptr CommandBuffer_T -> Ptr (SomeStruct PushConstantsInfo) -> IO ()) -> Ptr CommandBuffer_T -> Ptr (SomeStruct PushConstantsInfo) -> IO ()
+
+-- | vkCmdPushConstants2 - Update the values of push constants
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdPushConstants2-commandBuffer-11295# If @commandBuffer@ is
+--     a secondary command buffer, it /must/ have begun with
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.CommandBufferInheritanceDescriptorHeapInfoEXT'::@pSamplerHeapBindInfo@
+--     equal to @NULL@
+--
+-- -   #VUID-vkCmdPushConstants2-commandBuffer-11296# If @commandBuffer@ is
+--     a secondary command buffer, it /must/ have begun with
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.CommandBufferInheritanceDescriptorHeapInfoEXT'::@pResourceHeapBindInfo@
+--     equal to @NULL@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdPushConstants2-commandBuffer-parameter# @commandBuffer@
+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdPushConstants2-pPushConstantsInfo-parameter#
+--     @pPushConstantsInfo@ /must/ be a valid pointer to a valid
+--     'PushConstantsInfo' structure
+--
+-- -   #VUID-vkCmdPushConstants2-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-vkCmdPushConstants2-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', or
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
+--
+-- -   #VUID-vkCmdPushConstants2-videocoding# This command /must/ only be
+--     called outside of a video coding scope
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | State                                                                                                                                  |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | VK_QUEUE_GRAPHICS_BIT                                                                                                 |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdPushConstants2 is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance6 VK_KHR_maintenance6>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'Vulkan.Core10.Handles.CommandBuffer', 'PushConstantsInfo'
+cmdPushConstants2 :: forall a io
+                   . (Extendss PushConstantsInfo a, PokeChain a, MonadIO io)
+                  => -- | @commandBuffer@ is the command buffer in which the push constant update
+                     -- will be recorded.
+                     CommandBuffer
+                  -> -- | @pPushConstantsInfo@ is a pointer to a 'PushConstantsInfo' structure.
+                     (PushConstantsInfo a)
+                  -> io ()
+cmdPushConstants2 commandBuffer pushConstantsInfo = liftIO . evalContT $ do
+  let vkCmdPushConstants2Ptr = pVkCmdPushConstants2 (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdPushConstants2Ptr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdPushConstants2 is null" Nothing Nothing
+  let vkCmdPushConstants2' = mkVkCmdPushConstants2 vkCmdPushConstants2Ptr
+  pPushConstantsInfo <- ContT $ withCStruct (pushConstantsInfo)
+  lift $ traceAroundEvent "vkCmdPushConstants2" (vkCmdPushConstants2'
+                                                   (commandBufferHandle (commandBuffer))
+                                                   (forgetExtensions pPushConstantsInfo))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdPushDescriptorSet2
+  :: FunPtr (Ptr CommandBuffer_T -> Ptr (SomeStruct PushDescriptorSetInfo) -> IO ()) -> Ptr CommandBuffer_T -> Ptr (SomeStruct PushDescriptorSetInfo) -> IO ()
+
+-- | vkCmdPushDescriptorSet2 - Pushes descriptor updates into a command
+-- buffer
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdPushDescriptorSet2-commandBuffer-11295# If
+--     @commandBuffer@ is a secondary command buffer, it /must/ have begun
+--     with
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.CommandBufferInheritanceDescriptorHeapInfoEXT'::@pSamplerHeapBindInfo@
+--     equal to @NULL@
+--
+-- -   #VUID-vkCmdPushDescriptorSet2-commandBuffer-11296# If
+--     @commandBuffer@ is a secondary command buffer, it /must/ have begun
+--     with
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.CommandBufferInheritanceDescriptorHeapInfoEXT'::@pResourceHeapBindInfo@
+--     equal to @NULL@
+--
+-- -   #VUID-vkCmdPushDescriptorSet2-pPushDescriptorSetInfo-09468# Each bit
+--     in @pPushDescriptorSetInfo->stageFlags@ /must/ be a stage supported
+--     by the @commandBuffer@’s parent
+--     'Vulkan.Core10.Handles.CommandPool'’s queue family
+--
+-- -   #VUID-vkCmdPushDescriptorSet2-None-10357# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_push_descriptor VK_KHR_push_descriptor>
+--     extension is not enabled,
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-pushDescriptor pushDescriptor>
+--     /must/ be enabled
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdPushDescriptorSet2-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdPushDescriptorSet2-pPushDescriptorSetInfo-parameter#
+--     @pPushDescriptorSetInfo@ /must/ be a valid pointer to a valid
+--     'PushDescriptorSetInfo' structure
+--
+-- -   #VUID-vkCmdPushDescriptorSet2-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-vkCmdPushDescriptorSet2-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', or
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
+--
+-- -   #VUID-vkCmdPushDescriptorSet2-videocoding# This command /must/ only
+--     be called outside of a video coding scope
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | State                                                                                                                                  |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | VK_QUEUE_GRAPHICS_BIT                                                                                                 |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdPushDescriptorSet2 is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance6 VK_KHR_maintenance6>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_push_descriptor VK_KHR_push_descriptor>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'Vulkan.Core10.Handles.CommandBuffer', 'PushDescriptorSetInfo'
+cmdPushDescriptorSet2 :: forall a io
+                       . ( Extendss PushDescriptorSetInfo a
+                         , PokeChain a
+                         , MonadIO io )
+                      => -- | @commandBuffer@ is the command buffer that the descriptors will be
+                         -- recorded in.
+                         CommandBuffer
+                      -> -- | @pPushDescriptorSetInfo@ is a pointer to a 'PushDescriptorSetInfo'
+                         -- structure.
+                         (PushDescriptorSetInfo a)
+                      -> io ()
+cmdPushDescriptorSet2 commandBuffer
+                        pushDescriptorSetInfo = liftIO . evalContT $ do
+  let vkCmdPushDescriptorSet2Ptr = pVkCmdPushDescriptorSet2 (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdPushDescriptorSet2Ptr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdPushDescriptorSet2 is null" Nothing Nothing
+  let vkCmdPushDescriptorSet2' = mkVkCmdPushDescriptorSet2 vkCmdPushDescriptorSet2Ptr
+  pPushDescriptorSetInfo <- ContT $ withCStruct (pushDescriptorSetInfo)
+  lift $ traceAroundEvent "vkCmdPushDescriptorSet2" (vkCmdPushDescriptorSet2'
+                                                       (commandBufferHandle (commandBuffer))
+                                                       (forgetExtensions pPushDescriptorSetInfo))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdPushDescriptorSetWithTemplate2
+  :: FunPtr (Ptr CommandBuffer_T -> Ptr (SomeStruct PushDescriptorSetWithTemplateInfo) -> IO ()) -> Ptr CommandBuffer_T -> Ptr (SomeStruct PushDescriptorSetWithTemplateInfo) -> IO ()
+
+-- | vkCmdPushDescriptorSetWithTemplate2 - Pushes descriptor updates into a
+-- command buffer using a descriptor update template
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdPushDescriptorSetWithTemplate2-commandBuffer-11295# If
+--     @commandBuffer@ is a secondary command buffer, it /must/ have begun
+--     with
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.CommandBufferInheritanceDescriptorHeapInfoEXT'::@pSamplerHeapBindInfo@
+--     equal to @NULL@
+--
+-- -   #VUID-vkCmdPushDescriptorSetWithTemplate2-commandBuffer-11296# If
+--     @commandBuffer@ is a secondary command buffer, it /must/ have begun
+--     with
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.CommandBufferInheritanceDescriptorHeapInfoEXT'::@pResourceHeapBindInfo@
+--     equal to @NULL@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdPushDescriptorSetWithTemplate2-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdPushDescriptorSetWithTemplate2-pPushDescriptorSetWithTemplateInfo-parameter#
+--     @pPushDescriptorSetWithTemplateInfo@ /must/ be a valid pointer to a
+--     valid 'PushDescriptorSetWithTemplateInfo' structure
+--
+-- -   #VUID-vkCmdPushDescriptorSetWithTemplate2-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-vkCmdPushDescriptorSetWithTemplate2-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', or
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
+--
+-- -   #VUID-vkCmdPushDescriptorSetWithTemplate2-videocoding# This command
+--     /must/ only be called outside of a video coding scope
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | State                                                                                                                                  |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | VK_QUEUE_GRAPHICS_BIT                                                                                                 |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdPushDescriptorSetWithTemplate2 is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance6 VK_KHR_maintenance6>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_push_descriptor VK_KHR_push_descriptor>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'PushDescriptorSetWithTemplateInfo'
+cmdPushDescriptorSetWithTemplate2 :: forall a io
+                                   . ( Extendss PushDescriptorSetWithTemplateInfo a
+                                     , PokeChain a
+                                     , MonadIO io )
+                                  => -- | @commandBuffer@ is the command buffer that the descriptors will be
+                                     -- recorded in.
+                                     CommandBuffer
+                                  -> -- | @pPushDescriptorSetWithTemplateInfo@ is a pointer to a
+                                     -- 'PushDescriptorSetWithTemplateInfo' structure.
+                                     (PushDescriptorSetWithTemplateInfo a)
+                                  -> io ()
+cmdPushDescriptorSetWithTemplate2 commandBuffer
+                                    pushDescriptorSetWithTemplateInfo = liftIO . evalContT $ do
+  let vkCmdPushDescriptorSetWithTemplate2Ptr = pVkCmdPushDescriptorSetWithTemplate2 (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdPushDescriptorSetWithTemplate2Ptr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdPushDescriptorSetWithTemplate2 is null" Nothing Nothing
+  let vkCmdPushDescriptorSetWithTemplate2' = mkVkCmdPushDescriptorSetWithTemplate2 vkCmdPushDescriptorSetWithTemplate2Ptr
+  pPushDescriptorSetWithTemplateInfo <- ContT $ withCStruct (pushDescriptorSetWithTemplateInfo)
+  lift $ traceAroundEvent "vkCmdPushDescriptorSetWithTemplate2" (vkCmdPushDescriptorSetWithTemplate2'
+                                                                   (commandBufferHandle (commandBuffer))
+                                                                   (forgetExtensions pPushDescriptorSetWithTemplateInfo))
+  pure $ ()
+
+
+-- | VkPhysicalDeviceMaintenance6Features - Structure describing whether the
+-- implementation supports maintenance6 functionality
+--
+-- = Members
+--
+-- This structure describes the following feature:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceMaintenance6Features' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceMaintenance6Features', it /must/ add an instance of the
+-- structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance6 VK_KHR_maintenance6>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceMaintenance6Features = PhysicalDeviceMaintenance6Features
+  { -- | #extension-features-maintenance6# @maintenance6@ indicates that the
+    -- implementation supports the following:
+    --
+    -- -   'Vulkan.Core10.APIConstants.NULL_HANDLE' /can/ be used when binding
+    --     an index buffer
+    --
+    -- -   'BindMemoryStatus' /can/ be included in the @pNext@ chain of the
+    --     'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindBufferMemoryInfo'
+    --     and
+    --     'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindImageMemoryInfo'
+    --     structures, enabling applications to retrieve
+    --     'Vulkan.Core10.Enums.Result.Result' values for individual memory
+    --     binding operations.
+    --
+    -- -   'PhysicalDeviceMaintenance6Properties'::@blockTexelViewCompatibleMultipleLayers@
+    --     property to indicate that the implementation supports creating image
+    --     views with
+    --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT'
+    --     where the @layerCount@ member of @subresourceRange@ is greater than
+    --     @1@.
+    --
+    -- -   'PhysicalDeviceMaintenance6Properties'::@maxCombinedImageSamplerDescriptorCount@
+    --     property which indicates the maximum descriptor size required for
+    --     any
+    --     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion format that requires a sampler Y′CBCR conversion>
+    --     supported by the implementation.
+    --
+    -- -   A
+    --     'PhysicalDeviceMaintenance6Properties'::@fragmentShadingRateClampCombinerInputs@
+    --     property which indicates whether the implementation clamps the
+    --     inputs to fragment shading rate combiner operations.
+    maintenance6 :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceMaintenance6Features)
+#endif
+deriving instance Show PhysicalDeviceMaintenance6Features
+
+instance ToCStruct PhysicalDeviceMaintenance6Features where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceMaintenance6Features{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (maintenance6))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceMaintenance6Features where
+  peekCStruct p = do
+    maintenance6 <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDeviceMaintenance6Features
+             (bool32ToBool maintenance6)
+
+instance Storable PhysicalDeviceMaintenance6Features where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceMaintenance6Features where
+  zero = PhysicalDeviceMaintenance6Features
+           zero
+
+
+-- | VkPhysicalDeviceMaintenance6Properties - Structure describing various
+-- implementation-defined properties introduced with VK_KHR_maintenance6
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceMaintenance6Properties' 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.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance6 VK_KHR_maintenance6>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceMaintenance6Properties = PhysicalDeviceMaintenance6Properties
+  { -- | @blockTexelViewCompatibleMultipleLayers@ is a boolean value indicating
+    -- that an implementation supports creating image views with
+    -- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT'
+    -- where the @layerCount@ member of @subresourceRange@ is greater than @1@.
+    blockTexelViewCompatibleMultipleLayers :: Bool
+  , -- | @maxCombinedImageSamplerDescriptorCount@ is the maximum number of
+    -- combined image sampler descriptors that the implementation uses to
+    -- access any of the
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion formats that require a sampler Y′CBCR conversion>
+    -- supported by the implementation.
+    maxCombinedImageSamplerDescriptorCount :: Word32
+  , -- | @fragmentShadingRateClampCombinerInputs@ is a boolean value indicating
+    -- that an implementation clamps the inputs to
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-fragment-shading-rate-combining combiner operations>.
+    fragmentShadingRateClampCombinerInputs :: Bool
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceMaintenance6Properties)
+#endif
+deriving instance Show PhysicalDeviceMaintenance6Properties
+
+instance ToCStruct PhysicalDeviceMaintenance6Properties where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceMaintenance6Properties{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (blockTexelViewCompatibleMultipleLayers))
+    poke ((p `plusPtr` 20 :: Ptr Word32)) (maxCombinedImageSamplerDescriptorCount)
+    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (fragmentShadingRateClampCombinerInputs))
+    f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceMaintenance6Properties where
+  peekCStruct p = do
+    blockTexelViewCompatibleMultipleLayers <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    maxCombinedImageSamplerDescriptorCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
+    fragmentShadingRateClampCombinerInputs <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))
+    pure $ PhysicalDeviceMaintenance6Properties
+             (bool32ToBool blockTexelViewCompatibleMultipleLayers)
+             maxCombinedImageSamplerDescriptorCount
+             (bool32ToBool fragmentShadingRateClampCombinerInputs)
+
+instance Storable PhysicalDeviceMaintenance6Properties where
+  sizeOf ~_ = 32
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceMaintenance6Properties where
+  zero = PhysicalDeviceMaintenance6Properties
+           zero
+           zero
+           zero
+
+
+-- | VkBindMemoryStatus - Structure specifying where to return memory binding
+-- status
+--
+-- = Description
+--
+-- If the @pNext@ chain of
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindBufferMemoryInfo'
+-- or 'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindImageMemoryInfo'
+-- includes a 'BindMemoryStatus' structure, then the
+-- 'BindMemoryStatus'::@pResult@ will be populated with a value describing
+-- the result of the corresponding memory binding operation.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindBufferMemoryInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindImageMemoryInfo'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance6 VK_KHR_maintenance6>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'Vulkan.Core10.Enums.Result.Result',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data BindMemoryStatus = BindMemoryStatus
+  { -- | @pResult@ is a pointer to a 'Vulkan.Core10.Enums.Result.Result' value.
+    --
+    -- #VUID-VkBindMemoryStatus-pResult-parameter# @pResult@ /must/ be a valid
+    -- pointer to a 'Vulkan.Core10.Enums.Result.Result' value
+    result :: Ptr Result }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (BindMemoryStatus)
+#endif
+deriving instance Show BindMemoryStatus
+
+instance ToCStruct BindMemoryStatus where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p BindMemoryStatus{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BIND_MEMORY_STATUS)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr (Ptr Result))) (result)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BIND_MEMORY_STATUS)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr (Ptr Result))) (zero)
+    f
+
+instance FromCStruct BindMemoryStatus where
+  peekCStruct p = do
+    pResult <- peek @(Ptr Result) ((p `plusPtr` 16 :: Ptr (Ptr Result)))
+    pure $ BindMemoryStatus
+             pResult
+
+instance Storable BindMemoryStatus where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero BindMemoryStatus where
+  zero = BindMemoryStatus
+           zero
+
+
+-- | VkBindDescriptorSetsInfo - Structure specifying a descriptor set binding
+-- operation
+--
+-- = Description
+--
+-- If @stageFlags@ specifies a subset of all stages corresponding to one or
+-- more pipeline bind points, the binding operation still affects all
+-- stages corresponding to the given pipeline bind point(s) as if the
+-- equivalent original version of this command had been called with the
+-- same parameters. For example, specifying a @stageFlags@ value of
+-- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' |
+-- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' |
+-- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT' is
+-- equivalent to calling the original version of this command once with
+-- 'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS' and
+-- once with
+-- 'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_COMPUTE'.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkBindDescriptorSetsInfo-pDescriptorSets-00358# Each element
+--     of @pDescriptorSets@ that is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' /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-VkBindDescriptorSetsInfo-dynamicOffsetCount-00359#
+--     @dynamicOffsetCount@ /must/ be equal to the total number of dynamic
+--     descriptors in @pDescriptorSets@
+--
+-- -   #VUID-VkBindDescriptorSetsInfo-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-VkBindDescriptorSetsInfo-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-VkBindDescriptorSetsInfo-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-VkBindDescriptorSetsInfo-pDescriptorSets-01979# For each
+--     dynamic uniform or storage buffer binding in @pDescriptorSets@, the
+--     sum of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-effective-offset effective offset>
+--     and the range of the binding /must/ be less than or equal to the
+--     size of the buffer
+--
+-- -   #VUID-VkBindDescriptorSetsInfo-pDescriptorSets-06715# For each
+--     dynamic uniform or storage buffer binding in @pDescriptorSets@, if
+--     the range was set with 'Vulkan.Core10.APIConstants.WHOLE_SIZE' then
+--     @pDynamicOffsets@ which corresponds to the descriptor binding /must/
+--     be 0
+--
+-- -   #VUID-VkBindDescriptorSetsInfo-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_EXT'
+--     flag set
+--
+-- -   #VUID-VkBindDescriptorSetsInfo-pDescriptorSets-06563# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-graphicsPipelineLibrary graphicsPipelineLibrary>
+--     feature is not enabled, each element of @pDescriptorSets@ /must/ be
+--     a valid 'Vulkan.Core10.Handles.DescriptorSet'
+--
+-- -   #VUID-VkBindDescriptorSetsInfo-pDescriptorSets-08010# Each element
+--     of @pDescriptorSets@ /must/ have been allocated with a
+--     'Vulkan.Core10.Handles.DescriptorSetLayout' which was not created
+--     with
+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-VkBindDescriptorSetsInfo-pDescriptorSets-09914# If any element
+--     of @pDescriptorSets@ was allocated from a descriptor pool created
+--     with a 'Vulkan.Core10.DescriptorSet.DescriptorPoolCreateInfo'
+--     structure that had a
+--     'Vulkan.Extensions.VK_ARM_data_graph.DataGraphProcessingEngineCreateInfoARM'
+--     structure specifying foreign data processing engines in its @pNext@
+--     chain, then the command pool from which @commandBuffer@ was
+--     allocated /must/ have been created with a
+--     'Vulkan.Core10.CommandPool.CommandPoolCreateInfo' structure that had
+--     a
+--     'Vulkan.Extensions.VK_ARM_data_graph.DataGraphProcessingEngineCreateInfoARM'
+--     structure in its @pNext@ chain specifying a superset of all the
+--     foreign data processing engines specified when creating the
+--     descriptor pools from which the elements of @pDescriptorSets@ were
+--     allocated
+--
+-- -   #VUID-VkBindDescriptorSetsInfo-pDescriptorSets-09915# If none of the
+--     elements of @pDescriptorSets@ were allocated from a descriptor pool
+--     created with a
+--     'Vulkan.Core10.DescriptorSet.DescriptorPoolCreateInfo' structure
+--     that had a
+--     'Vulkan.Extensions.VK_ARM_data_graph.DataGraphProcessingEngineCreateInfoARM'
+--     structure specifying foreign data processing engines in its @pNext@
+--     chain, then the command pool from which @commandBuffer@ was
+--     allocated /must/ not have been created with a
+--     'Vulkan.Core10.CommandPool.CommandPoolCreateInfo' structure that had
+--     a
+--     'Vulkan.Extensions.VK_ARM_data_graph.DataGraphProcessingEngineCreateInfoARM'
+--     structure in its @pNext@ chain
+--
+-- -   #VUID-VkBindDescriptorSetsInfo-None-09495# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicPipelineLayout dynamicPipelineLayout>
+--     feature is not enabled, @layout@ /must/ be a valid
+--     'Vulkan.Core10.Handles.PipelineLayout' handle
+--
+-- -   #VUID-VkBindDescriptorSetsInfo-layout-09496# If @layout@ is
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', the @pNext@ chain /must/
+--     include a valid
+--     'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo' structure
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkBindDescriptorSetsInfo-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BIND_DESCRIPTOR_SETS_INFO'
+--
+-- -   #VUID-VkBindDescriptorSetsInfo-pNext-pNext# @pNext@ /must/ be @NULL@
+--     or a pointer to a valid instance of
+--     'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo'
+--
+-- -   #VUID-VkBindDescriptorSetsInfo-sType-unique# The @sType@ value of
+--     each structure in the @pNext@ chain /must/ be unique
+--
+-- -   #VUID-VkBindDescriptorSetsInfo-stageFlags-parameter# @stageFlags@
+--     /must/ be a valid combination of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits' values
+--
+-- -   #VUID-VkBindDescriptorSetsInfo-stageFlags-requiredbitmask#
+--     @stageFlags@ /must/ not be @0@
+--
+-- -   #VUID-VkBindDescriptorSetsInfo-layout-parameter# If @layout@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', @layout@ /must/ be a valid
+--     'Vulkan.Core10.Handles.PipelineLayout' handle
+--
+-- -   #VUID-VkBindDescriptorSetsInfo-pDescriptorSets-parameter#
+--     @pDescriptorSets@ /must/ be a valid pointer to an array of
+--     @descriptorSetCount@ valid 'Vulkan.Core10.Handles.DescriptorSet'
+--     handles
+--
+-- -   #VUID-VkBindDescriptorSetsInfo-pDynamicOffsets-parameter# If
+--     @dynamicOffsetCount@ is not @0@, and @pDynamicOffsets@ is not
+--     @NULL@, @pDynamicOffsets@ /must/ be a valid pointer to an array of
+--     @dynamicOffsetCount@ or 'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--     @uint32_t@ values
+--
+-- -   #VUID-VkBindDescriptorSetsInfo-descriptorSetCount-arraylength#
+--     @descriptorSetCount@ /must/ be greater than @0@
+--
+-- -   #VUID-VkBindDescriptorSetsInfo-commonparent# Both of @layout@, and
+--     the elements of @pDescriptorSets@ 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_maintenance6 VK_KHR_maintenance6>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'Vulkan.Core10.Handles.DescriptorSet',
+-- 'Vulkan.Core10.Handles.PipelineLayout',
+-- 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlags',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'cmdBindDescriptorSets2', 'cmdBindDescriptorSets2'
+data BindDescriptorSetsInfo (es :: [Type]) = BindDescriptorSetsInfo
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
+    next :: Chain es
+  , -- | @stageFlags@ is a bitmask of
+    -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits' specifying
+    -- the shader stages the descriptor sets will be bound to.
+    stageFlags :: ShaderStageFlags
+  , -- | @layout@ is a 'Vulkan.Core10.Handles.PipelineLayout' object used to
+    -- program the bindings. If the
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-dynamicPipelineLayout dynamicPipelineLayout>
+    -- feature is enabled, @layout@ /can/ be
+    -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' and the layout /must/ be
+    -- specified by chaining the
+    -- 'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo' structure off
+    -- the @pNext@
+    layout :: 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
+  , -- | @dynamicOffsetCount@ is the number of dynamic offsets in the
+    -- @pDynamicOffsets@ array.
+    dynamicOffsetCount :: Word32
+  , -- | @pDynamicOffsets@ is a pointer to an array of @uint32_t@ values
+    -- specifying dynamic offsets.
+    dynamicOffsets :: Vector Word32
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (BindDescriptorSetsInfo (es :: [Type]))
+#endif
+deriving instance Show (Chain es) => Show (BindDescriptorSetsInfo es)
+
+instance Extensible BindDescriptorSetsInfo where
+  extensibleTypeName = "BindDescriptorSetsInfo"
+  setNext BindDescriptorSetsInfo{..} next' = BindDescriptorSetsInfo{next = next', ..}
+  getNext BindDescriptorSetsInfo{..} = next
+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends BindDescriptorSetsInfo e => b) -> Maybe b
+  extends _ f
+    | Just Refl <- eqT @e @PipelineLayoutCreateInfo = Just f
+    | otherwise = Nothing
+
+instance ( Extendss BindDescriptorSetsInfo es
+         , PokeChain es ) => ToCStruct (BindDescriptorSetsInfo es) where
+  withCStruct x f = allocaBytes 64 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p BindDescriptorSetsInfo{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BIND_DESCRIPTOR_SETS_INFO)
+    pNext'' <- fmap castPtr . ContT $ withChain (next)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
+    lift $ poke ((p `plusPtr` 16 :: Ptr ShaderStageFlags)) (stageFlags)
+    lift $ poke ((p `plusPtr` 24 :: Ptr PipelineLayout)) (layout)
+    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) (firstSet)
+    lift $ poke ((p `plusPtr` 36 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (descriptorSets)) :: Word32))
+    pPDescriptorSets' <- ContT $ allocaBytes @DescriptorSet ((Data.Vector.length (descriptorSets)) * 8)
+    lift $ Data.Vector.imapM_ (\i e -> poke (pPDescriptorSets' `plusPtr` (8 * (i)) :: Ptr DescriptorSet) (e)) (descriptorSets)
+    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr DescriptorSet))) (pPDescriptorSets')
+    let pDynamicOffsetsLength = Data.Vector.length $ (dynamicOffsets)
+    dynamicOffsetCount'' <- lift $ if (dynamicOffsetCount) == 0
+      then pure $ fromIntegral pDynamicOffsetsLength
+      else do
+        unless (fromIntegral pDynamicOffsetsLength == (dynamicOffsetCount) || pDynamicOffsetsLength == 0) $
+          throwIO $ IOError Nothing InvalidArgument "" "pDynamicOffsets must be empty or have 'dynamicOffsetCount' elements" Nothing Nothing
+        pure (dynamicOffsetCount)
+    lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) (dynamicOffsetCount'')
+    pDynamicOffsets'' <- if Data.Vector.null (dynamicOffsets)
+      then pure nullPtr
+      else do
+        pPDynamicOffsets <- ContT $ allocaBytes @Word32 (((Data.Vector.length (dynamicOffsets))) * 4)
+        lift $ Data.Vector.imapM_ (\i e -> poke (pPDynamicOffsets `plusPtr` (4 * (i)) :: Ptr Word32) (e)) ((dynamicOffsets))
+        pure $ pPDynamicOffsets
+    lift $ poke ((p `plusPtr` 56 :: Ptr (Ptr Word32))) pDynamicOffsets''
+    lift $ f
+  cStructSize = 64
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BIND_DESCRIPTOR_SETS_INFO)
+    pNext' <- fmap castPtr . ContT $ withZeroChain @es
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
+    lift $ poke ((p `plusPtr` 16 :: Ptr ShaderStageFlags)) (zero)
+    lift $ f
+
+instance ( Extendss BindDescriptorSetsInfo es
+         , PeekChain es ) => FromCStruct (BindDescriptorSetsInfo es) where
+  peekCStruct p = do
+    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
+    next <- peekChain (castPtr pNext)
+    stageFlags <- peek @ShaderStageFlags ((p `plusPtr` 16 :: Ptr ShaderStageFlags))
+    layout <- peek @PipelineLayout ((p `plusPtr` 24 :: Ptr PipelineLayout))
+    firstSet <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))
+    descriptorSetCount <- peek @Word32 ((p `plusPtr` 36 :: Ptr Word32))
+    pDescriptorSets <- peek @(Ptr DescriptorSet) ((p `plusPtr` 40 :: Ptr (Ptr DescriptorSet)))
+    pDescriptorSets' <- generateM (fromIntegral descriptorSetCount) (\i -> peek @DescriptorSet ((pDescriptorSets `advancePtrBytes` (8 * (i)) :: Ptr DescriptorSet)))
+    dynamicOffsetCount <- peek @Word32 ((p `plusPtr` 48 :: Ptr Word32))
+    pDynamicOffsets <- peek @(Ptr Word32) ((p `plusPtr` 56 :: Ptr (Ptr Word32)))
+    let pDynamicOffsetsLength = if pDynamicOffsets == nullPtr then 0 else (fromIntegral dynamicOffsetCount)
+    pDynamicOffsets' <- generateM pDynamicOffsetsLength (\i -> peek @Word32 ((pDynamicOffsets `advancePtrBytes` (4 * (i)) :: Ptr Word32)))
+    pure $ BindDescriptorSetsInfo
+             next
+             stageFlags
+             layout
+             firstSet
+             pDescriptorSets'
+             dynamicOffsetCount
+             pDynamicOffsets'
+
+instance es ~ '[] => Zero (BindDescriptorSetsInfo es) where
+  zero = BindDescriptorSetsInfo
+           ()
+           zero
+           zero
+           zero
+           mempty
+           zero
+           mempty
+
+
+-- | VkPushConstantsInfo - Structure specifying a push constant update
+-- operation
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkPushConstantsInfo-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-VkPushConstantsInfo-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-VkPushConstantsInfo-offset-00368# @offset@ /must/ be a
+--     multiple of @4@
+--
+-- -   #VUID-VkPushConstantsInfo-size-00369# @size@ /must/ be a multiple of
+--     @4@
+--
+-- -   #VUID-VkPushConstantsInfo-offset-00370# @offset@ /must/ be less than
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxPushConstantsSize@
+--
+-- -   #VUID-VkPushConstantsInfo-size-00371# @size@ /must/ be less than or
+--     equal to
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxPushConstantsSize@
+--     minus @offset@
+--
+-- -   #VUID-VkPushConstantsInfo-None-09495# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicPipelineLayout dynamicPipelineLayout>
+--     feature is not enabled, @layout@ /must/ be a valid
+--     'Vulkan.Core10.Handles.PipelineLayout' handle
+--
+-- -   #VUID-VkPushConstantsInfo-layout-09496# If @layout@ is
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', the @pNext@ chain /must/
+--     include a valid
+--     'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo' structure
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkPushConstantsInfo-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PUSH_CONSTANTS_INFO'
+--
+-- -   #VUID-VkPushConstantsInfo-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.Core10.PipelineLayout.PipelineLayoutCreateInfo' or
+--     'Vulkan.Extensions.VK_NV_push_constant_bank.PushConstantBankInfoNV'
+--
+-- -   #VUID-VkPushConstantsInfo-sType-unique# The @sType@ value of each
+--     structure in the @pNext@ chain /must/ be unique
+--
+-- -   #VUID-VkPushConstantsInfo-layout-parameter# If @layout@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', @layout@ /must/ be a valid
+--     'Vulkan.Core10.Handles.PipelineLayout' handle
+--
+-- -   #VUID-VkPushConstantsInfo-stageFlags-parameter# @stageFlags@ /must/
+--     be a valid combination of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits' values
+--
+-- -   #VUID-VkPushConstantsInfo-stageFlags-requiredbitmask# @stageFlags@
+--     /must/ not be @0@
+--
+-- -   #VUID-VkPushConstantsInfo-pValues-parameter# @pValues@ /must/ be a
+--     valid pointer to an array of @size@ bytes
+--
+-- -   #VUID-VkPushConstantsInfo-size-arraylength# @size@ /must/ be greater
+--     than @0@
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance6 VK_KHR_maintenance6>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'Vulkan.Core10.Handles.PipelineLayout',
+-- 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlags',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType', 'cmdPushConstants2',
+-- 'cmdPushConstants2'
+data PushConstantsInfo (es :: [Type]) = PushConstantsInfo
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
+    next :: Chain es
+  , -- | @layout@ is the pipeline layout used to program the push constant
+    -- updates. If the
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-dynamicPipelineLayout dynamicPipelineLayout>
+    -- feature is enabled, @layout@ /can/ be
+    -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' and the layout /must/ be
+    -- specified by chaining
+    -- 'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo' structure off
+    -- the @pNext@
+    layout :: 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.
+    stageFlags :: 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 ()
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PushConstantsInfo (es :: [Type]))
+#endif
+deriving instance Show (Chain es) => Show (PushConstantsInfo es)
+
+instance Extensible PushConstantsInfo where
+  extensibleTypeName = "PushConstantsInfo"
+  setNext PushConstantsInfo{..} next' = PushConstantsInfo{next = next', ..}
+  getNext PushConstantsInfo{..} = next
+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends PushConstantsInfo e => b) -> Maybe b
+  extends _ f
+    | Just Refl <- eqT @e @PushConstantBankInfoNV = Just f
+    | Just Refl <- eqT @e @PipelineLayoutCreateInfo = Just f
+    | otherwise = Nothing
+
+instance ( Extendss PushConstantsInfo es
+         , PokeChain es ) => ToCStruct (PushConstantsInfo es) where
+  withCStruct x f = allocaBytes 48 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PushConstantsInfo{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PUSH_CONSTANTS_INFO)
+    pNext'' <- fmap castPtr . ContT $ withChain (next)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
+    lift $ poke ((p `plusPtr` 16 :: Ptr PipelineLayout)) (layout)
+    lift $ poke ((p `plusPtr` 24 :: Ptr ShaderStageFlags)) (stageFlags)
+    lift $ poke ((p `plusPtr` 28 :: Ptr Word32)) (offset)
+    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) (size)
+    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr ()))) (values)
+    lift $ f
+  cStructSize = 48
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PUSH_CONSTANTS_INFO)
+    pNext' <- fmap castPtr . ContT $ withZeroChain @es
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
+    lift $ poke ((p `plusPtr` 24 :: Ptr ShaderStageFlags)) (zero)
+    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) (zero)
+    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr ()))) (zero)
+    lift $ f
+
+instance ( Extendss PushConstantsInfo es
+         , PeekChain es ) => FromCStruct (PushConstantsInfo es) where
+  peekCStruct p = do
+    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
+    next <- peekChain (castPtr pNext)
+    layout <- peek @PipelineLayout ((p `plusPtr` 16 :: Ptr PipelineLayout))
+    stageFlags <- peek @ShaderStageFlags ((p `plusPtr` 24 :: Ptr ShaderStageFlags))
+    offset <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))
+    size <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))
+    pValues <- peek @(Ptr ()) ((p `plusPtr` 40 :: Ptr (Ptr ())))
+    pure $ PushConstantsInfo
+             next layout stageFlags offset size pValues
+
+instance es ~ '[] => Zero (PushConstantsInfo es) where
+  zero = PushConstantsInfo
+           ()
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkPushDescriptorSetInfo - Structure specifying a descriptor set push
+-- operation
+--
+-- = Description
+--
+-- If @stageFlags@ specifies a subset of all stages corresponding to one or
+-- more pipeline bind points, the binding operation still affects all
+-- stages corresponding to the given pipeline bind point(s) as if the
+-- equivalent original version of this command had been called with the
+-- same parameters. For example, specifying a @stageFlags@ value of
+-- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' |
+-- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' |
+-- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT' is
+-- equivalent to calling the original version of this command once with
+-- 'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS' and
+-- once with
+-- 'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_COMPUTE'.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkPushDescriptorSetInfo-set-00364# @set@ /must/ be less than
+--     'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo'::@setLayoutCount@
+--     provided when @layout@ was created
+--
+-- -   #VUID-VkPushDescriptorSetInfo-set-00365# @set@ /must/ be the unique
+--     set number in the pipeline layout that uses a descriptor set layout
+--     that was created with
+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT'
+--
+-- -   #VUID-VkPushDescriptorSetInfo-pDescriptorWrites-06494# For each
+--     element i where @pDescriptorWrites@[i].@descriptorType@ is
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLER',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',
+--     or
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT',
+--     @pDescriptorWrites@[i].@pImageInfo@ /must/ be a valid pointer to an
+--     array of @pDescriptorWrites@[i].@descriptorCount@ valid
+--     'Vulkan.Core10.DescriptorSet.DescriptorImageInfo' structures
+--
+-- -   #VUID-VkPushDescriptorSetInfo-None-09495# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicPipelineLayout dynamicPipelineLayout>
+--     feature is not enabled, @layout@ /must/ be a valid
+--     'Vulkan.Core10.Handles.PipelineLayout' handle
+--
+-- -   #VUID-VkPushDescriptorSetInfo-layout-09496# If @layout@ is
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', the @pNext@ chain /must/
+--     include a valid
+--     'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo' structure
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkPushDescriptorSetInfo-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_INFO'
+--
+-- -   #VUID-VkPushDescriptorSetInfo-pNext-pNext# @pNext@ /must/ be @NULL@
+--     or a pointer to a valid instance of
+--     'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo'
+--
+-- -   #VUID-VkPushDescriptorSetInfo-sType-unique# The @sType@ value of
+--     each structure in the @pNext@ chain /must/ be unique
+--
+-- -   #VUID-VkPushDescriptorSetInfo-stageFlags-parameter# @stageFlags@
+--     /must/ be a valid combination of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits' values
+--
+-- -   #VUID-VkPushDescriptorSetInfo-stageFlags-requiredbitmask#
+--     @stageFlags@ /must/ not be @0@
+--
+-- -   #VUID-VkPushDescriptorSetInfo-layout-parameter# If @layout@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', @layout@ /must/ be a valid
+--     'Vulkan.Core10.Handles.PipelineLayout' handle
+--
+-- -   #VUID-VkPushDescriptorSetInfo-pDescriptorWrites-parameter#
+--     @pDescriptorWrites@ /must/ be a valid pointer to an array of
+--     @descriptorWriteCount@ valid
+--     'Vulkan.Core10.DescriptorSet.WriteDescriptorSet' structures
+--
+-- -   #VUID-VkPushDescriptorSetInfo-descriptorWriteCount-arraylength#
+--     @descriptorWriteCount@ /must/ be greater than @0@
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance6 VK_KHR_maintenance6>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_push_descriptor VK_KHR_push_descriptor>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'Vulkan.Core10.Handles.PipelineLayout',
+-- 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlags',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'Vulkan.Core10.DescriptorSet.WriteDescriptorSet',
+-- 'cmdPushDescriptorSet2', 'cmdPushDescriptorSet2'
+data PushDescriptorSetInfo (es :: [Type]) = PushDescriptorSetInfo
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
+    next :: Chain es
+  , -- | @stageFlags@ is a bitmask of
+    -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits' specifying
+    -- the shader stages that will use the descriptors.
+    stageFlags :: ShaderStageFlags
+  , -- | @layout@ is a 'Vulkan.Core10.Handles.PipelineLayout' object used to
+    -- program the bindings. If the
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-dynamicPipelineLayout dynamicPipelineLayout>
+    -- feature is enabled, @layout@ /can/ be
+    -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' and the layout /must/ be
+    -- specified by chaining
+    -- 'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo' structure off
+    -- the @pNext@
+    layout :: PipelineLayout
+  , -- | @set@ is the set number of the descriptor set in the pipeline layout
+    -- that will be updated.
+    set :: Word32
+  , -- | @pDescriptorWrites@ is a pointer to an array of
+    -- 'Vulkan.Core10.DescriptorSet.WriteDescriptorSet' structures describing
+    -- the descriptors to be updated.
+    descriptorWrites :: Vector (SomeStruct WriteDescriptorSet)
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PushDescriptorSetInfo (es :: [Type]))
+#endif
+deriving instance Show (Chain es) => Show (PushDescriptorSetInfo es)
+
+instance Extensible PushDescriptorSetInfo where
+  extensibleTypeName = "PushDescriptorSetInfo"
+  setNext PushDescriptorSetInfo{..} next' = PushDescriptorSetInfo{next = next', ..}
+  getNext PushDescriptorSetInfo{..} = next
+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends PushDescriptorSetInfo e => b) -> Maybe b
+  extends _ f
+    | Just Refl <- eqT @e @PipelineLayoutCreateInfo = Just f
+    | otherwise = Nothing
+
+instance ( Extendss PushDescriptorSetInfo es
+         , PokeChain es ) => ToCStruct (PushDescriptorSetInfo es) where
+  withCStruct x f = allocaBytes 48 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PushDescriptorSetInfo{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_INFO)
+    pNext'' <- fmap castPtr . ContT $ withChain (next)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
+    lift $ poke ((p `plusPtr` 16 :: Ptr ShaderStageFlags)) (stageFlags)
+    lift $ poke ((p `plusPtr` 24 :: Ptr PipelineLayout)) (layout)
+    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) (set)
+    lift $ poke ((p `plusPtr` 36 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (descriptorWrites)) :: Word32))
+    pPDescriptorWrites' <- ContT $ allocaBytes @(WriteDescriptorSet _) ((Data.Vector.length (descriptorWrites)) * 64)
+    Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPDescriptorWrites' `plusPtr` (64 * (i)) :: Ptr (WriteDescriptorSet _))) (e) . ($ ())) (descriptorWrites)
+    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr (WriteDescriptorSet _)))) (pPDescriptorWrites')
+    lift $ f
+  cStructSize = 48
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_INFO)
+    pNext' <- fmap castPtr . ContT $ withZeroChain @es
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
+    lift $ poke ((p `plusPtr` 16 :: Ptr ShaderStageFlags)) (zero)
+    lift $ f
+
+instance ( Extendss PushDescriptorSetInfo es
+         , PeekChain es ) => FromCStruct (PushDescriptorSetInfo es) where
+  peekCStruct p = do
+    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
+    next <- peekChain (castPtr pNext)
+    stageFlags <- peek @ShaderStageFlags ((p `plusPtr` 16 :: Ptr ShaderStageFlags))
+    layout <- peek @PipelineLayout ((p `plusPtr` 24 :: Ptr PipelineLayout))
+    set <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))
+    descriptorWriteCount <- peek @Word32 ((p `plusPtr` 36 :: Ptr Word32))
+    pDescriptorWrites <- peek @(Ptr (WriteDescriptorSet _)) ((p `plusPtr` 40 :: Ptr (Ptr (WriteDescriptorSet _))))
+    pDescriptorWrites' <- generateM (fromIntegral descriptorWriteCount) (\i -> peekSomeCStruct (forgetExtensions ((pDescriptorWrites `advancePtrBytes` (64 * (i)) :: Ptr (WriteDescriptorSet _)))))
+    pure $ PushDescriptorSetInfo
+             next stageFlags layout set pDescriptorWrites'
+
+instance es ~ '[] => Zero (PushDescriptorSetInfo es) where
+  zero = PushDescriptorSetInfo
+           ()
+           zero
+           zero
+           zero
+           mempty
+
+
+-- | VkPushDescriptorSetWithTemplateInfo - Structure specifying a descriptor
+-- set push operation using a descriptor update template
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkPushDescriptorSetWithTemplateInfo-commandBuffer-00366# The
+--     @pipelineBindPoint@ specified during the creation of the descriptor
+--     update template /must/ be supported by the @commandBuffer@’s parent
+--     'Vulkan.Core10.Handles.CommandPool'’s queue family
+--
+-- -   #VUID-VkPushDescriptorSetWithTemplateInfo-pData-01686# @pData@
+--     /must/ be a valid pointer to a memory containing one or more valid
+--     instances of 'Vulkan.Core10.DescriptorSet.DescriptorImageInfo',
+--     'Vulkan.Core10.DescriptorSet.DescriptorBufferInfo', or
+--     'Vulkan.Core10.Handles.BufferView' in a layout defined by
+--     @descriptorUpdateTemplate@ when it was created with
+--     'Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template.createDescriptorUpdateTemplate'
+--
+-- -   #VUID-VkPushDescriptorSetWithTemplateInfo-layout-07993# @layout@
+--     /must/ be compatible with the layout used to create
+--     @descriptorUpdateTemplate@
+--
+-- -   #VUID-VkPushDescriptorSetWithTemplateInfo-descriptorUpdateTemplate-07994#
+--     @descriptorUpdateTemplate@ /must/ have been created with a
+--     @templateType@ of
+--     'Vulkan.Core11.Enums.DescriptorUpdateTemplateType.DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS'
+--
+-- -   #VUID-VkPushDescriptorSetWithTemplateInfo-set-07995# @set@ /must/ be
+--     the same value used to create @descriptorUpdateTemplate@
+--
+-- -   #VUID-VkPushDescriptorSetWithTemplateInfo-set-07304# @set@ /must/ be
+--     less than
+--     'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo'::@setLayoutCount@
+--     provided when @layout@ was created
+--
+-- -   #VUID-VkPushDescriptorSetWithTemplateInfo-set-11854# @set@ /must/
+--     reference a valid 'Vulkan.Core10.Handles.DescriptorSetLayout' handle
+--     in @layout@
+--
+-- -   #VUID-VkPushDescriptorSetWithTemplateInfo-set-07305# @set@ /must/ be
+--     the unique set number in the pipeline layout that uses a descriptor
+--     set layout that was created with
+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT'
+--
+-- -   #VUID-VkPushDescriptorSetWithTemplateInfo-None-09495# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicPipelineLayout dynamicPipelineLayout>
+--     feature is not enabled, @layout@ /must/ be a valid
+--     'Vulkan.Core10.Handles.PipelineLayout' handle
+--
+-- -   #VUID-VkPushDescriptorSetWithTemplateInfo-layout-09496# If @layout@
+--     is 'Vulkan.Core10.APIConstants.NULL_HANDLE', the @pNext@ chain
+--     /must/ include a valid
+--     'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo' structure
+--
+-- -   #VUID-VkPushDescriptorSetWithTemplateInfo-None-10359# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_push_descriptor VK_KHR_push_descriptor>
+--     extension is not enabled,
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-pushDescriptor pushDescriptor>
+--     /must/ be enabled
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkPushDescriptorSetWithTemplateInfo-sType-sType# @sType@
+--     /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO'
+--
+-- -   #VUID-VkPushDescriptorSetWithTemplateInfo-pNext-pNext# @pNext@
+--     /must/ be @NULL@ or a pointer to a valid instance of
+--     'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo'
+--
+-- -   #VUID-VkPushDescriptorSetWithTemplateInfo-sType-unique# The @sType@
+--     value of each structure in the @pNext@ chain /must/ be unique
+--
+-- -   #VUID-VkPushDescriptorSetWithTemplateInfo-descriptorUpdateTemplate-parameter#
+--     @descriptorUpdateTemplate@ /must/ be a valid
+--     'Vulkan.Core11.Handles.DescriptorUpdateTemplate' handle
+--
+-- -   #VUID-VkPushDescriptorSetWithTemplateInfo-layout-parameter# If
+--     @layout@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @layout@
+--     /must/ be a valid 'Vulkan.Core10.Handles.PipelineLayout' handle
+--
+-- -   #VUID-VkPushDescriptorSetWithTemplateInfo-pData-parameter# @pData@
+--     /must/ be a pointer value
+--
+-- -   #VUID-VkPushDescriptorSetWithTemplateInfo-commonparent# Both of
+--     @descriptorUpdateTemplate@, and @layout@ 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_maintenance6 VK_KHR_maintenance6>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_push_descriptor VK_KHR_push_descriptor>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'Vulkan.Core11.Handles.DescriptorUpdateTemplate',
+-- 'Vulkan.Core10.Handles.PipelineLayout',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'cmdPushDescriptorSetWithTemplate2', 'cmdPushDescriptorSetWithTemplate2'
+data PushDescriptorSetWithTemplateInfo (es :: [Type]) = PushDescriptorSetWithTemplateInfo
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
+    next :: Chain es
+  , -- | @descriptorUpdateTemplate@ is a descriptor update template defining how
+    -- to interpret the descriptor information in @pData@.
+    descriptorUpdateTemplate :: DescriptorUpdateTemplate
+  , -- | @layout@ is a 'Vulkan.Core10.Handles.PipelineLayout' object used to
+    -- program the bindings. It /must/ be compatible with the layout used to
+    -- create the @descriptorUpdateTemplate@ handle. If the
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-dynamicPipelineLayout dynamicPipelineLayout>
+    -- feature is enabled, @layout@ /can/ be
+    -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' and the layout /must/ be
+    -- specified by chaining
+    -- 'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo' structure off
+    -- the @pNext@
+    layout :: PipelineLayout
+  , -- | @set@ is the set number of the descriptor set in the pipeline layout
+    -- that will be updated. This /must/ be the same number used to create the
+    -- @descriptorUpdateTemplate@ handle.
+    set :: Word32
+  , -- | @pData@ is a pointer to memory containing descriptors for the templated
+    -- update.
+    data' :: Ptr ()
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PushDescriptorSetWithTemplateInfo (es :: [Type]))
+#endif
+deriving instance Show (Chain es) => Show (PushDescriptorSetWithTemplateInfo es)
+
+instance Extensible PushDescriptorSetWithTemplateInfo where
+  extensibleTypeName = "PushDescriptorSetWithTemplateInfo"
+  setNext PushDescriptorSetWithTemplateInfo{..} next' = PushDescriptorSetWithTemplateInfo{next = next', ..}
+  getNext PushDescriptorSetWithTemplateInfo{..} = next
+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends PushDescriptorSetWithTemplateInfo e => b) -> Maybe b
+  extends _ f
+    | Just Refl <- eqT @e @PipelineLayoutCreateInfo = Just f
+    | otherwise = Nothing
+
+instance ( Extendss PushDescriptorSetWithTemplateInfo es
+         , PokeChain es ) => ToCStruct (PushDescriptorSetWithTemplateInfo es) where
+  withCStruct x f = allocaBytes 48 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PushDescriptorSetWithTemplateInfo{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO)
+    pNext'' <- fmap castPtr . ContT $ withChain (next)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
+    lift $ poke ((p `plusPtr` 16 :: Ptr DescriptorUpdateTemplate)) (descriptorUpdateTemplate)
+    lift $ poke ((p `plusPtr` 24 :: Ptr PipelineLayout)) (layout)
+    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) (set)
+    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr ()))) (data')
+    lift $ f
+  cStructSize = 48
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO)
+    pNext' <- fmap castPtr . ContT $ withZeroChain @es
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
+    lift $ poke ((p `plusPtr` 16 :: Ptr DescriptorUpdateTemplate)) (zero)
+    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr ()))) (zero)
+    lift $ f
+
+instance ( Extendss PushDescriptorSetWithTemplateInfo es
+         , PeekChain es ) => FromCStruct (PushDescriptorSetWithTemplateInfo es) where
+  peekCStruct p = do
+    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
+    next <- peekChain (castPtr pNext)
+    descriptorUpdateTemplate <- peek @DescriptorUpdateTemplate ((p `plusPtr` 16 :: Ptr DescriptorUpdateTemplate))
+    layout <- peek @PipelineLayout ((p `plusPtr` 24 :: Ptr PipelineLayout))
+    set <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))
+    pData <- peek @(Ptr ()) ((p `plusPtr` 40 :: Ptr (Ptr ())))
+    pure $ PushDescriptorSetWithTemplateInfo
+             next descriptorUpdateTemplate layout set pData
+
+instance es ~ '[] => Zero (PushDescriptorSetWithTemplateInfo es) where
+  zero = PushDescriptorSetWithTemplateInfo
+           ()
+           zero
+           zero
+           zero
+           zero
+
diff --git a/src/Vulkan/Core14/Promoted_From_VK_KHR_maintenance6.hs-boot b/src/Vulkan/Core14/Promoted_From_VK_KHR_maintenance6.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core14/Promoted_From_VK_KHR_maintenance6.hs-boot
@@ -0,0 +1,85 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Promoted_From_VK_KHR_maintenance6"
+module Vulkan.Core14.Promoted_From_VK_KHR_maintenance6  ( BindDescriptorSetsInfo
+                                                        , BindMemoryStatus
+                                                        , PhysicalDeviceMaintenance6Features
+                                                        , PhysicalDeviceMaintenance6Properties
+                                                        , PushConstantsInfo
+                                                        , PushDescriptorSetInfo
+                                                        , PushDescriptorSetWithTemplateInfo
+                                                        ) 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)
+type role BindDescriptorSetsInfo nominal
+data BindDescriptorSetsInfo (es :: [Type])
+
+instance ( Extendss BindDescriptorSetsInfo es
+         , PokeChain es ) => ToCStruct (BindDescriptorSetsInfo es)
+instance Show (Chain es) => Show (BindDescriptorSetsInfo es)
+
+instance ( Extendss BindDescriptorSetsInfo es
+         , PeekChain es ) => FromCStruct (BindDescriptorSetsInfo es)
+
+
+data BindMemoryStatus
+
+instance ToCStruct BindMemoryStatus
+instance Show BindMemoryStatus
+
+instance FromCStruct BindMemoryStatus
+
+
+data PhysicalDeviceMaintenance6Features
+
+instance ToCStruct PhysicalDeviceMaintenance6Features
+instance Show PhysicalDeviceMaintenance6Features
+
+instance FromCStruct PhysicalDeviceMaintenance6Features
+
+
+data PhysicalDeviceMaintenance6Properties
+
+instance ToCStruct PhysicalDeviceMaintenance6Properties
+instance Show PhysicalDeviceMaintenance6Properties
+
+instance FromCStruct PhysicalDeviceMaintenance6Properties
+
+
+type role PushConstantsInfo nominal
+data PushConstantsInfo (es :: [Type])
+
+instance ( Extendss PushConstantsInfo es
+         , PokeChain es ) => ToCStruct (PushConstantsInfo es)
+instance Show (Chain es) => Show (PushConstantsInfo es)
+
+instance ( Extendss PushConstantsInfo es
+         , PeekChain es ) => FromCStruct (PushConstantsInfo es)
+
+
+type role PushDescriptorSetInfo nominal
+data PushDescriptorSetInfo (es :: [Type])
+
+instance ( Extendss PushDescriptorSetInfo es
+         , PokeChain es ) => ToCStruct (PushDescriptorSetInfo es)
+instance Show (Chain es) => Show (PushDescriptorSetInfo es)
+
+instance ( Extendss PushDescriptorSetInfo es
+         , PeekChain es ) => FromCStruct (PushDescriptorSetInfo es)
+
+
+type role PushDescriptorSetWithTemplateInfo nominal
+data PushDescriptorSetWithTemplateInfo (es :: [Type])
+
+instance ( Extendss PushDescriptorSetWithTemplateInfo es
+         , PokeChain es ) => ToCStruct (PushDescriptorSetWithTemplateInfo es)
+instance Show (Chain es) => Show (PushDescriptorSetWithTemplateInfo es)
+
+instance ( Extendss PushDescriptorSetWithTemplateInfo es
+         , PeekChain es ) => FromCStruct (PushDescriptorSetWithTemplateInfo es)
+
diff --git a/src/Vulkan/Core14/Promoted_From_VK_KHR_map_memory2.hs b/src/Vulkan/Core14/Promoted_From_VK_KHR_map_memory2.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core14/Promoted_From_VK_KHR_map_memory2.hs
@@ -0,0 +1,497 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Promoted_From_VK_KHR_map_memory2"
+module Vulkan.Core14.Promoted_From_VK_KHR_map_memory2  ( mapMemory2
+                                                       , unmapMemory2
+                                                       , MemoryMapInfo(..)
+                                                       , MemoryUnmapInfo(..)
+                                                       , StructureType(..)
+                                                       , MemoryUnmapFlagBits(..)
+                                                       , MemoryUnmapFlags
+                                                       ) where
+
+import Vulkan.Internal.Utils (traceAroundEvent)
+import Control.Exception.Base (bracket)
+import Control.Monad (unless)
+import Control.Monad.IO.Class (liftIO)
+import Data.Typeable (eqT)
+import Foreign.Marshal.Alloc (allocaBytes)
+import Foreign.Marshal.Alloc (callocBytes)
+import Foreign.Marshal.Alloc (free)
+import 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 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.Kind (Type)
+import Control.Monad.Trans.Cont (ContT(..))
+import Vulkan.CStruct.Extends (forgetExtensions)
+import Vulkan.NamedType ((:::))
+import Vulkan.CStruct.Extends (Chain)
+import Vulkan.Core10.Handles (Device)
+import Vulkan.Core10.Handles (Device(..))
+import Vulkan.Core10.Handles (Device(Device))
+import Vulkan.Dynamic (DeviceCmds(pVkMapMemory2))
+import Vulkan.Dynamic (DeviceCmds(pVkUnmapMemory2))
+import Vulkan.Core10.Handles (DeviceMemory)
+import Vulkan.Core10.FundamentalTypes (DeviceSize)
+import Vulkan.Core10.Handles (Device_T)
+import Vulkan.CStruct.Extends (Extends)
+import Vulkan.CStruct.Extends (Extendss)
+import Vulkan.CStruct.Extends (Extensible(..))
+import Vulkan.Core10.Enums.MemoryMapFlagBits (MemoryMapFlags)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_map_memory_placed (MemoryMapPlacedInfoEXT)
+import Vulkan.Core14.Enums.MemoryUnmapFlagBits (MemoryUnmapFlags)
+import Vulkan.CStruct.Extends (PeekChain)
+import Vulkan.CStruct.Extends (PeekChain(..))
+import Vulkan.CStruct.Extends (PokeChain)
+import Vulkan.CStruct.Extends (PokeChain(..))
+import Vulkan.Core10.Enums.Result (Result)
+import Vulkan.Core10.Enums.Result (Result(..))
+import Vulkan.CStruct.Extends (SomeStruct)
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Exception (VulkanException(..))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_MEMORY_MAP_INFO))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_MEMORY_UNMAP_INFO))
+import Vulkan.Core10.Enums.Result (Result(SUCCESS))
+import Vulkan.Core14.Enums.MemoryUnmapFlagBits (MemoryUnmapFlagBits(..))
+import Vulkan.Core14.Enums.MemoryUnmapFlagBits (MemoryUnmapFlags)
+import Vulkan.Core10.Enums.StructureType (StructureType(..))
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkMapMemory2
+  :: FunPtr (Ptr Device_T -> Ptr (SomeStruct MemoryMapInfo) -> Ptr (Ptr ()) -> IO Result) -> Ptr Device_T -> Ptr (SomeStruct MemoryMapInfo) -> Ptr (Ptr ()) -> IO Result
+
+-- | vkMapMemory2 - Map a memory object into application address space
+--
+-- = Description
+--
+-- This function behaves identically to 'Vulkan.Core10.Memory.mapMemory'
+-- except that it gets its parameters via an extensible structure pointer
+-- rather than directly as function arguments.
+--
+-- == 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_MEMORY_MAP_FAILED'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_map_memory2 VK_KHR_map_memory2>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'Vulkan.Core10.Handles.Device', 'MemoryMapInfo'
+mapMemory2 :: forall a io
+            . (Extendss MemoryMapInfo a, PokeChain a, MonadIO io)
+           => -- | @device@ is the logical device that owns the memory.
+              --
+              -- #VUID-vkMapMemory2-device-parameter# @device@ /must/ be a valid
+              -- 'Vulkan.Core10.Handles.Device' handle
+              Device
+           -> -- | @pMemoryMapInfo@ is a pointer to a 'MemoryMapInfo' structure describing
+              -- parameters of the map.
+              --
+              -- #VUID-vkMapMemory2-pMemoryMapInfo-parameter# @pMemoryMapInfo@ /must/ be
+              -- a valid pointer to a valid 'MemoryMapInfo' structure
+              (MemoryMapInfo a)
+           -> io (("data" ::: Ptr ()))
+mapMemory2 device memoryMapInfo = liftIO . evalContT $ do
+  let vkMapMemory2Ptr = pVkMapMemory2 (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkMapMemory2Ptr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkMapMemory2 is null" Nothing Nothing
+  let vkMapMemory2' = mkVkMapMemory2 vkMapMemory2Ptr
+  pMemoryMapInfo <- ContT $ withCStruct (memoryMapInfo)
+  pPpData <- ContT $ bracket (callocBytes @(Ptr ()) 8) free
+  r <- lift $ traceAroundEvent "vkMapMemory2" (vkMapMemory2'
+                                                 (deviceHandle (device))
+                                                 (forgetExtensions pMemoryMapInfo)
+                                                 (pPpData))
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+  ppData <- lift $ peek @(Ptr ()) pPpData
+  pure $ (ppData)
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkUnmapMemory2
+  :: FunPtr (Ptr Device_T -> Ptr MemoryUnmapInfo -> IO Result) -> Ptr Device_T -> Ptr MemoryUnmapInfo -> IO Result
+
+-- | vkUnmapMemory2 - Unmap a previously mapped memory object
+--
+-- = Description
+--
+-- This function behaves identically to 'Vulkan.Core10.Memory.unmapMemory'
+-- except that it gets its parameters via an extensible structure pointer
+-- rather than directly as function arguments.
+--
+-- == 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_MEMORY_MAP_FAILED'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_map_memory2 VK_KHR_map_memory2>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'Vulkan.Core10.Handles.Device', 'MemoryUnmapInfo'
+unmapMemory2 :: forall io
+              . (MonadIO io)
+             => -- | @device@ is the logical device that owns the memory.
+                --
+                -- #VUID-vkUnmapMemory2-device-parameter# @device@ /must/ be a valid
+                -- 'Vulkan.Core10.Handles.Device' handle
+                Device
+             -> -- | @pMemoryUnmapInfo@ is a pointer to a 'MemoryUnmapInfo' structure
+                -- describing parameters of the unmap.
+                --
+                -- #VUID-vkUnmapMemory2-pMemoryUnmapInfo-parameter# @pMemoryUnmapInfo@
+                -- /must/ be a valid pointer to a valid 'MemoryUnmapInfo' structure
+                MemoryUnmapInfo
+             -> io ()
+unmapMemory2 device memoryUnmapInfo = liftIO . evalContT $ do
+  let vkUnmapMemory2Ptr = pVkUnmapMemory2 (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkUnmapMemory2Ptr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkUnmapMemory2 is null" Nothing Nothing
+  let vkUnmapMemory2' = mkVkUnmapMemory2 vkUnmapMemory2Ptr
+  pMemoryUnmapInfo <- ContT $ withCStruct (memoryUnmapInfo)
+  r <- lift $ traceAroundEvent "vkUnmapMemory2" (vkUnmapMemory2'
+                                                   (deviceHandle (device))
+                                                   pMemoryUnmapInfo)
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+
+
+-- | VkMemoryMapInfo - Structure containing parameters of a memory map
+-- operation
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkMemoryMapInfo-memory-07958# @memory@ /must/ not be currently
+--     host mapped
+--
+-- -   #VUID-VkMemoryMapInfo-offset-07959# @offset@ /must/ be less than the
+--     size of @memory@
+--
+-- -   #VUID-VkMemoryMapInfo-size-07960# If @size@ is not equal to
+--     'Vulkan.Core10.APIConstants.WHOLE_SIZE', @size@ /must/ be greater
+--     than @0@
+--
+-- -   #VUID-VkMemoryMapInfo-size-07961# If @size@ is not equal to
+--     'Vulkan.Core10.APIConstants.WHOLE_SIZE', @size@ /must/ be less than
+--     or equal to the size of the @memory@ minus @offset@
+--
+-- -   #VUID-VkMemoryMapInfo-memory-07962# @memory@ /must/ have been
+--     created with a memory type that reports
+--     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_VISIBLE_BIT'
+--
+-- -   #VUID-VkMemoryMapInfo-memory-07963# @memory@ /must/ not have been
+--     allocated with multiple instances
+--
+-- -   #VUID-VkMemoryMapInfo-flags-09569# If
+--     'Vulkan.Core10.Enums.MemoryMapFlagBits.MEMORY_MAP_PLACED_BIT_EXT' is
+--     set in @flags@, the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-memoryMapPlaced memoryMapPlaced>
+--     feature /must/ be enabled
+--
+-- -   #VUID-VkMemoryMapInfo-flags-09570# If
+--     'Vulkan.Core10.Enums.MemoryMapFlagBits.MEMORY_MAP_PLACED_BIT_EXT' is
+--     set in @flags@, the @pNext@ chain /must/ include a
+--     'Vulkan.Extensions.VK_EXT_map_memory_placed.MemoryMapPlacedInfoEXT'
+--     structure and
+--     'Vulkan.Extensions.VK_EXT_map_memory_placed.MemoryMapPlacedInfoEXT'::@pPlacedAddress@
+--     /must/ not be @NULL@
+--
+-- -   #VUID-VkMemoryMapInfo-flags-09571# If
+--     'Vulkan.Core10.Enums.MemoryMapFlagBits.MEMORY_MAP_PLACED_BIT_EXT' is
+--     set in @flags@ and the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-memoryMapRangePlaced memoryMapRangePlaced>
+--     feature is not enabled, @offset@ /must/ be zero
+--
+-- -   #VUID-VkMemoryMapInfo-flags-09572# If
+--     'Vulkan.Core10.Enums.MemoryMapFlagBits.MEMORY_MAP_PLACED_BIT_EXT' is
+--     set in @flags@ and the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-memoryMapRangePlaced memoryMapRangePlaced>
+--     feature is not enabled, @size@ /must/ be
+--     'Vulkan.Core10.APIConstants.WHOLE_SIZE' or
+--     'Vulkan.Core10.Memory.MemoryAllocateInfo'::@allocationSize@
+--
+-- -   #VUID-VkMemoryMapInfo-flags-09573# If
+--     'Vulkan.Core10.Enums.MemoryMapFlagBits.MEMORY_MAP_PLACED_BIT_EXT' is
+--     set in @flags@ and the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-memoryMapRangePlaced memoryMapRangePlaced>
+--     feature is enabled, @offset@ /must/ be aligned to an integer
+--     multiple of
+--     'Vulkan.Extensions.VK_EXT_map_memory_placed.PhysicalDeviceMapMemoryPlacedPropertiesEXT'::@minPlacedMemoryMapAlignment@
+--
+-- -   #VUID-VkMemoryMapInfo-flags-09574# If
+--     'Vulkan.Core10.Enums.MemoryMapFlagBits.MEMORY_MAP_PLACED_BIT_EXT' is
+--     set in @flags@ and @size@ is not
+--     'Vulkan.Core10.APIConstants.WHOLE_SIZE', @size@ /must/ be aligned to
+--     an integer multiple of
+--     'Vulkan.Extensions.VK_EXT_map_memory_placed.PhysicalDeviceMapMemoryPlacedPropertiesEXT'::@minPlacedMemoryMapAlignment@
+--
+-- -   #VUID-VkMemoryMapInfo-flags-09651# If
+--     'Vulkan.Core10.Enums.MemoryMapFlagBits.MEMORY_MAP_PLACED_BIT_EXT' is
+--     set in @flags@ and @size@ is
+--     'Vulkan.Core10.APIConstants.WHOLE_SIZE',
+--     'Vulkan.Core10.Memory.MemoryAllocateInfo'::@allocationSize@ /must/
+--     be aligned to an integer multiple of
+--     'Vulkan.Extensions.VK_EXT_map_memory_placed.PhysicalDeviceMapMemoryPlacedPropertiesEXT'::@minPlacedMemoryMapAlignment@
+--
+-- -   #VUID-VkMemoryMapInfo-flags-09575# If
+--     'Vulkan.Core10.Enums.MemoryMapFlagBits.MEMORY_MAP_PLACED_BIT_EXT' is
+--     set in @flags@, the memory object /must/ not have been imported from
+--     a handle type of
+--     'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT'
+--     or
+--     'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkMemoryMapInfo-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MEMORY_MAP_INFO'
+--
+-- -   #VUID-VkMemoryMapInfo-pNext-pNext# @pNext@ /must/ be @NULL@ or a
+--     pointer to a valid instance of
+--     'Vulkan.Extensions.VK_EXT_map_memory_placed.MemoryMapPlacedInfoEXT'
+--
+-- -   #VUID-VkMemoryMapInfo-sType-unique# The @sType@ value of each
+--     structure in the @pNext@ chain /must/ be unique
+--
+-- -   #VUID-VkMemoryMapInfo-flags-parameter# @flags@ /must/ be a valid
+--     combination of
+--     'Vulkan.Core10.Enums.MemoryMapFlagBits.MemoryMapFlagBits' values
+--
+-- -   #VUID-VkMemoryMapInfo-memory-parameter# @memory@ /must/ be a valid
+--     'Vulkan.Core10.Handles.DeviceMemory' handle
+--
+-- == Host Synchronization
+--
+-- -   Host access to @memory@ /must/ be externally synchronized
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_map_memory2 VK_KHR_map_memory2>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'Vulkan.Core10.Handles.DeviceMemory',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
+-- 'Vulkan.Core10.Enums.MemoryMapFlagBits.MemoryMapFlags',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType', 'mapMemory2',
+-- 'mapMemory2'
+data MemoryMapInfo (es :: [Type]) = MemoryMapInfo
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
+    next :: Chain es
+  , -- | @flags@ is a bitmask of
+    -- 'Vulkan.Core10.Enums.MemoryMapFlagBits.MemoryMapFlagBits' specifying
+    -- additional parameters of the memory map operation.
+    flags :: MemoryMapFlags
+  , -- | @memory@ is the 'Vulkan.Core10.Handles.DeviceMemory' object to be
+    -- mapped.
+    memory :: DeviceMemory
+  , -- | @offset@ is a zero-based byte offset from the beginning of the memory
+    -- object.
+    offset :: DeviceSize
+  , -- | @size@ is the size of the memory range to map, or
+    -- 'Vulkan.Core10.APIConstants.WHOLE_SIZE' to map from @offset@ to the end
+    -- of the allocation.
+    size :: DeviceSize
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (MemoryMapInfo (es :: [Type]))
+#endif
+deriving instance Show (Chain es) => Show (MemoryMapInfo es)
+
+instance Extensible MemoryMapInfo where
+  extensibleTypeName = "MemoryMapInfo"
+  setNext MemoryMapInfo{..} next' = MemoryMapInfo{next = next', ..}
+  getNext MemoryMapInfo{..} = next
+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends MemoryMapInfo e => b) -> Maybe b
+  extends _ f
+    | Just Refl <- eqT @e @MemoryMapPlacedInfoEXT = Just f
+    | otherwise = Nothing
+
+instance ( Extendss MemoryMapInfo es
+         , PokeChain es ) => ToCStruct (MemoryMapInfo es) where
+  withCStruct x f = allocaBytes 48 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p MemoryMapInfo{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MEMORY_MAP_INFO)
+    pNext'' <- fmap castPtr . ContT $ withChain (next)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
+    lift $ poke ((p `plusPtr` 16 :: Ptr MemoryMapFlags)) (flags)
+    lift $ poke ((p `plusPtr` 24 :: Ptr DeviceMemory)) (memory)
+    lift $ poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (offset)
+    lift $ poke ((p `plusPtr` 40 :: Ptr DeviceSize)) (size)
+    lift $ f
+  cStructSize = 48
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MEMORY_MAP_INFO)
+    pNext' <- fmap castPtr . ContT $ withZeroChain @es
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
+    lift $ poke ((p `plusPtr` 24 :: Ptr DeviceMemory)) (zero)
+    lift $ poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (zero)
+    lift $ poke ((p `plusPtr` 40 :: Ptr DeviceSize)) (zero)
+    lift $ f
+
+instance ( Extendss MemoryMapInfo es
+         , PeekChain es ) => FromCStruct (MemoryMapInfo es) where
+  peekCStruct p = do
+    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
+    next <- peekChain (castPtr pNext)
+    flags <- peek @MemoryMapFlags ((p `plusPtr` 16 :: Ptr MemoryMapFlags))
+    memory <- peek @DeviceMemory ((p `plusPtr` 24 :: Ptr DeviceMemory))
+    offset <- peek @DeviceSize ((p `plusPtr` 32 :: Ptr DeviceSize))
+    size <- peek @DeviceSize ((p `plusPtr` 40 :: Ptr DeviceSize))
+    pure $ MemoryMapInfo
+             next flags memory offset size
+
+instance es ~ '[] => Zero (MemoryMapInfo es) where
+  zero = MemoryMapInfo
+           ()
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkMemoryUnmapInfo - Structure containing parameters of a memory unmap
+-- operation
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkMemoryUnmapInfo-memory-07964# @memory@ /must/ be currently
+--     host mapped
+--
+-- -   #VUID-VkMemoryUnmapInfo-flags-09579# If
+--     'Vulkan.Core14.Enums.MemoryUnmapFlagBits.MEMORY_UNMAP_RESERVE_BIT_EXT'
+--     is set in @flags@, the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-memoryUnmapReserve memoryUnmapReserve>
+--     /must/ be enabled
+--
+-- -   #VUID-VkMemoryUnmapInfo-flags-09580# If
+--     'Vulkan.Core14.Enums.MemoryUnmapFlagBits.MEMORY_UNMAP_RESERVE_BIT_EXT'
+--     is set in @flags@, the memory object /must/ not have been imported
+--     from a handle type of
+--     'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT'
+--     or
+--     'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkMemoryUnmapInfo-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MEMORY_UNMAP_INFO'
+--
+-- -   #VUID-VkMemoryUnmapInfo-pNext-pNext# @pNext@ /must/ be @NULL@
+--
+-- -   #VUID-VkMemoryUnmapInfo-flags-parameter# @flags@ /must/ be a valid
+--     combination of
+--     'Vulkan.Core14.Enums.MemoryUnmapFlagBits.MemoryUnmapFlagBits' values
+--
+-- -   #VUID-VkMemoryUnmapInfo-memory-parameter# @memory@ /must/ be a valid
+--     'Vulkan.Core10.Handles.DeviceMemory' handle
+--
+-- == Host Synchronization
+--
+-- -   Host access to @memory@ /must/ be externally synchronized
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_map_memory2 VK_KHR_map_memory2>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'Vulkan.Core10.Handles.DeviceMemory',
+-- 'Vulkan.Core14.Enums.MemoryUnmapFlagBits.MemoryUnmapFlags',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType', 'unmapMemory2',
+-- 'unmapMemory2'
+data MemoryUnmapInfo = MemoryUnmapInfo
+  { -- | @flags@ is a bitmask of
+    -- 'Vulkan.Core14.Enums.MemoryUnmapFlagBits.MemoryUnmapFlagBits' specifying
+    -- additional parameters of the memory map operation.
+    flags :: MemoryUnmapFlags
+  , -- | @memory@ is the 'Vulkan.Core10.Handles.DeviceMemory' object to be
+    -- unmapped.
+    memory :: DeviceMemory
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (MemoryUnmapInfo)
+#endif
+deriving instance Show MemoryUnmapInfo
+
+instance ToCStruct MemoryUnmapInfo where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p MemoryUnmapInfo{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MEMORY_UNMAP_INFO)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr MemoryUnmapFlags)) (flags)
+    poke ((p `plusPtr` 24 :: Ptr DeviceMemory)) (memory)
+    f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MEMORY_UNMAP_INFO)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 24 :: Ptr DeviceMemory)) (zero)
+    f
+
+instance FromCStruct MemoryUnmapInfo where
+  peekCStruct p = do
+    flags <- peek @MemoryUnmapFlags ((p `plusPtr` 16 :: Ptr MemoryUnmapFlags))
+    memory <- peek @DeviceMemory ((p `plusPtr` 24 :: Ptr DeviceMemory))
+    pure $ MemoryUnmapInfo
+             flags memory
+
+instance Storable MemoryUnmapInfo where
+  sizeOf ~_ = 32
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero MemoryUnmapInfo where
+  zero = MemoryUnmapInfo
+           zero
+           zero
+
diff --git a/src/Vulkan/Core14/Promoted_From_VK_KHR_map_memory2.hs-boot b/src/Vulkan/Core14/Promoted_From_VK_KHR_map_memory2.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core14/Promoted_From_VK_KHR_map_memory2.hs-boot
@@ -0,0 +1,31 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Promoted_From_VK_KHR_map_memory2"
+module Vulkan.Core14.Promoted_From_VK_KHR_map_memory2  ( MemoryMapInfo
+                                                       , MemoryUnmapInfo
+                                                       ) 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)
+type role MemoryMapInfo nominal
+data MemoryMapInfo (es :: [Type])
+
+instance ( Extendss MemoryMapInfo es
+         , PokeChain es ) => ToCStruct (MemoryMapInfo es)
+instance Show (Chain es) => Show (MemoryMapInfo es)
+
+instance ( Extendss MemoryMapInfo es
+         , PeekChain es ) => FromCStruct (MemoryMapInfo es)
+
+
+data MemoryUnmapInfo
+
+instance ToCStruct MemoryUnmapInfo
+instance Show MemoryUnmapInfo
+
+instance FromCStruct MemoryUnmapInfo
+
diff --git a/src/Vulkan/Core14/Promoted_From_VK_KHR_push_descriptor.hs b/src/Vulkan/Core14/Promoted_From_VK_KHR_push_descriptor.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core14/Promoted_From_VK_KHR_push_descriptor.hs
@@ -0,0 +1,564 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Promoted_From_VK_KHR_push_descriptor"
+module Vulkan.Core14.Promoted_From_VK_KHR_push_descriptor  ( cmdPushDescriptorSet
+                                                           , cmdPushDescriptorSetWithTemplate
+                                                           , PhysicalDevicePushDescriptorProperties(..)
+                                                           , StructureType(..)
+                                                           , DescriptorUpdateTemplateType(..)
+                                                           , DescriptorSetLayoutCreateFlagBits(..)
+                                                           , DescriptorSetLayoutCreateFlags
+                                                           ) where
+
+import Vulkan.Internal.Utils (traceAroundEvent)
+import Control.Monad (unless)
+import Control.Monad.IO.Class (liftIO)
+import Foreign.Marshal.Alloc (allocaBytes)
+import GHC.IO (throwIO)
+import GHC.Ptr (nullFunPtr)
+import Foreign.Ptr (nullPtr)
+import Foreign.Ptr (plusPtr)
+import Control.Monad.Trans.Class (lift)
+import Control.Monad.Trans.Cont (evalContT)
+import qualified Data.Vector (imapM_)
+import qualified Data.Vector (length)
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (FromCStruct(..))
+import Vulkan.CStruct (ToCStruct)
+import Vulkan.CStruct (ToCStruct(..))
+import Vulkan.Zero (Zero(..))
+import Control.Monad.IO.Class (MonadIO)
+import Data.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.Extends (forgetExtensions)
+import Vulkan.CStruct.Extends (pokeSomeCStruct)
+import Vulkan.NamedType ((:::))
+import Vulkan.Core10.Handles (CommandBuffer)
+import Vulkan.Core10.Handles (CommandBuffer(..))
+import Vulkan.Core10.Handles (CommandBuffer(CommandBuffer))
+import Vulkan.Core10.Handles (CommandBuffer_T)
+import Vulkan.Core11.Handles (DescriptorUpdateTemplate)
+import Vulkan.Core11.Handles (DescriptorUpdateTemplate(..))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdPushDescriptorSet))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdPushDescriptorSetWithTemplate))
+import Vulkan.Core10.Enums.PipelineBindPoint (PipelineBindPoint)
+import Vulkan.Core10.Enums.PipelineBindPoint (PipelineBindPoint(..))
+import Vulkan.Core10.Handles (PipelineLayout)
+import Vulkan.Core10.Handles (PipelineLayout(..))
+import Vulkan.CStruct.Extends (SomeStruct)
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Core10.DescriptorSet (WriteDescriptorSet)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES))
+import Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits (DescriptorSetLayoutCreateFlagBits(..))
+import Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits (DescriptorSetLayoutCreateFlags)
+import Vulkan.Core11.Enums.DescriptorUpdateTemplateType (DescriptorUpdateTemplateType(..))
+import Vulkan.Core10.Enums.StructureType (StructureType(..))
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdPushDescriptorSet
+  :: FunPtr (Ptr CommandBuffer_T -> PipelineBindPoint -> PipelineLayout -> Word32 -> Word32 -> Ptr (SomeStruct WriteDescriptorSet) -> IO ()) -> Ptr CommandBuffer_T -> PipelineBindPoint -> PipelineLayout -> Word32 -> Word32 -> Ptr (SomeStruct WriteDescriptorSet) -> IO ()
+
+-- | vkCmdPushDescriptorSet - Pushes descriptor updates into a command buffer
+--
+-- = Description
+--
+-- /Push descriptors/ are a small bank of descriptors whose storage is
+-- internally managed by the command buffer rather than being written into
+-- a descriptor set and later bound to a command buffer. Push descriptors
+-- allow for incremental updates of descriptors without managing the
+-- lifetime of descriptor sets.
+--
+-- 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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-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://registry.khronos.org/vulkan/specs/latest/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
+-- they are accessed by a pipeline (the immutable samplers are pushed,
+-- rather than the samplers in @pDescriptorWrites@). Push descriptors that
+-- are not statically used /can/ remain undefined.
+--
+-- Push descriptors do not use dynamic offsets. Instead, the corresponding
+-- non-dynamic descriptor types /can/ be used and the @offset@ member of
+-- 'Vulkan.Core10.DescriptorSet.DescriptorBufferInfo' /can/ be changed each
+-- time the descriptor is written.
+--
+-- Each element of @pDescriptorWrites@ is interpreted as in
+-- 'Vulkan.Core10.DescriptorSet.WriteDescriptorSet', except the @dstSet@
+-- member is ignored.
+--
+-- To push an immutable sampler, use a
+-- 'Vulkan.Core10.DescriptorSet.WriteDescriptorSet' with @dstBinding@ and
+-- @dstArrayElement@ selecting the immutable sampler’s binding. If the
+-- descriptor type is
+-- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLER', the
+-- @pImageInfo@ parameter is ignored and the immutable sampler is taken
+-- from the push descriptor set layout in the pipeline layout. If the
+-- descriptor type is
+-- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER',
+-- the @sampler@ member of the @pImageInfo@ parameter is ignored and the
+-- immutable sampler is taken from the push descriptor set layout in the
+-- pipeline layout.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdPushDescriptorSet-commandBuffer-11295# If @commandBuffer@
+--     is a secondary command buffer, it /must/ have begun with
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.CommandBufferInheritanceDescriptorHeapInfoEXT'::@pSamplerHeapBindInfo@
+--     equal to @NULL@
+--
+-- -   #VUID-vkCmdPushDescriptorSet-commandBuffer-11296# If @commandBuffer@
+--     is a secondary command buffer, it /must/ have begun with
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.CommandBufferInheritanceDescriptorHeapInfoEXT'::@pResourceHeapBindInfo@
+--     equal to @NULL@
+--
+-- -   #VUID-vkCmdPushDescriptorSet-set-00364# @set@ /must/ be less than
+--     'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo'::@setLayoutCount@
+--     provided when @layout@ was created
+--
+-- -   #VUID-vkCmdPushDescriptorSet-set-00365# @set@ /must/ be the unique
+--     set number in the pipeline layout that uses a descriptor set layout
+--     that was created with
+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT'
+--
+-- -   #VUID-vkCmdPushDescriptorSet-pDescriptorWrites-06494# For each
+--     element i where @pDescriptorWrites@[i].@descriptorType@ is
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLER',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',
+--     or
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT',
+--     @pDescriptorWrites@[i].@pImageInfo@ /must/ be a valid pointer to an
+--     array of @pDescriptorWrites@[i].@descriptorCount@ valid
+--     'Vulkan.Core10.DescriptorSet.DescriptorImageInfo' structures
+--
+-- -   #VUID-vkCmdPushDescriptorSet-pipelineBindPoint-00363#
+--     @pipelineBindPoint@ /must/ be supported by the @commandBuffer@’s
+--     parent 'Vulkan.Core10.Handles.CommandPool'’s queue family
+--
+-- -   #VUID-vkCmdPushDescriptorSet-None-10356# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_push_descriptor VK_KHR_push_descriptor>
+--     extension is not enabled,
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-pushDescriptor pushDescriptor>
+--     /must/ be enabled
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdPushDescriptorSet-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdPushDescriptorSet-pipelineBindPoint-parameter#
+--     @pipelineBindPoint@ /must/ be a valid
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint' value
+--
+-- -   #VUID-vkCmdPushDescriptorSet-layout-parameter# @layout@ /must/ be a
+--     valid 'Vulkan.Core10.Handles.PipelineLayout' handle
+--
+-- -   #VUID-vkCmdPushDescriptorSet-pDescriptorWrites-parameter#
+--     @pDescriptorWrites@ /must/ be a valid pointer to an array of
+--     @descriptorWriteCount@ valid
+--     'Vulkan.Core10.DescriptorSet.WriteDescriptorSet' structures
+--
+-- -   #VUID-vkCmdPushDescriptorSet-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-vkCmdPushDescriptorSet-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', or
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
+--
+-- -   #VUID-vkCmdPushDescriptorSet-videocoding# This command /must/ only
+--     be called outside of a video coding scope
+--
+-- -   #VUID-vkCmdPushDescriptorSet-descriptorWriteCount-arraylength#
+--     @descriptorWriteCount@ /must/ be greater than @0@
+--
+-- -   #VUID-vkCmdPushDescriptorSet-commonparent# Both of @commandBuffer@,
+--     and @layout@ /must/ have been created, allocated, or retrieved from
+--     the same 'Vulkan.Core10.Handles.Device'
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | State                                                                                                                                  |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | VK_QUEUE_GRAPHICS_BIT                                                                                                 |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdPushDescriptorSet is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_push_descriptor VK_KHR_push_descriptor>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint',
+-- 'Vulkan.Core10.Handles.PipelineLayout',
+-- 'Vulkan.Core10.DescriptorSet.WriteDescriptorSet'
+cmdPushDescriptorSet :: forall io
+                      . (MonadIO io)
+                     => -- | @commandBuffer@ is the command buffer that the descriptors will be
+                        -- recorded in.
+                        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 push descriptor bindings 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
+                     -> -- | @set@ is the set number of the descriptor set in the pipeline layout
+                        -- that will be updated.
+                        ("set" ::: Word32)
+                     -> -- | @pDescriptorWrites@ is a pointer to an array of
+                        -- 'Vulkan.Core10.DescriptorSet.WriteDescriptorSet' structures describing
+                        -- the descriptors to be updated.
+                        ("descriptorWrites" ::: Vector (SomeStruct WriteDescriptorSet))
+                     -> io ()
+cmdPushDescriptorSet commandBuffer
+                       pipelineBindPoint
+                       layout
+                       set
+                       descriptorWrites = liftIO . evalContT $ do
+  let vkCmdPushDescriptorSetPtr = pVkCmdPushDescriptorSet (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdPushDescriptorSetPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdPushDescriptorSet is null" Nothing Nothing
+  let vkCmdPushDescriptorSet' = mkVkCmdPushDescriptorSet vkCmdPushDescriptorSetPtr
+  pPDescriptorWrites <- ContT $ allocaBytes @(WriteDescriptorSet _) ((Data.Vector.length (descriptorWrites)) * 64)
+  Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPDescriptorWrites `plusPtr` (64 * (i)) :: Ptr (WriteDescriptorSet _))) (e) . ($ ())) (descriptorWrites)
+  lift $ traceAroundEvent "vkCmdPushDescriptorSet" (vkCmdPushDescriptorSet'
+                                                      (commandBufferHandle (commandBuffer))
+                                                      (pipelineBindPoint)
+                                                      (layout)
+                                                      (set)
+                                                      ((fromIntegral (Data.Vector.length $ (descriptorWrites)) :: Word32))
+                                                      (forgetExtensions (pPDescriptorWrites)))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdPushDescriptorSetWithTemplate
+  :: FunPtr (Ptr CommandBuffer_T -> DescriptorUpdateTemplate -> PipelineLayout -> Word32 -> Ptr () -> IO ()) -> Ptr CommandBuffer_T -> DescriptorUpdateTemplate -> PipelineLayout -> Word32 -> Ptr () -> IO ()
+
+-- | vkCmdPushDescriptorSetWithTemplate - Pushes descriptor updates into a
+-- command buffer using a descriptor update template
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdPushDescriptorSetWithTemplate-commandBuffer-11295# If
+--     @commandBuffer@ is a secondary command buffer, it /must/ have begun
+--     with
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.CommandBufferInheritanceDescriptorHeapInfoEXT'::@pSamplerHeapBindInfo@
+--     equal to @NULL@
+--
+-- -   #VUID-vkCmdPushDescriptorSetWithTemplate-commandBuffer-11296# If
+--     @commandBuffer@ is a secondary command buffer, it /must/ have begun
+--     with
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.CommandBufferInheritanceDescriptorHeapInfoEXT'::@pResourceHeapBindInfo@
+--     equal to @NULL@
+--
+-- -   #VUID-vkCmdPushDescriptorSetWithTemplate-commandBuffer-00366# The
+--     @pipelineBindPoint@ specified during the creation of the descriptor
+--     update template /must/ be supported by the @commandBuffer@’s parent
+--     'Vulkan.Core10.Handles.CommandPool'’s queue family
+--
+-- -   #VUID-vkCmdPushDescriptorSetWithTemplate-pData-01686# @pData@ /must/
+--     be a valid pointer to a memory containing one or more valid
+--     instances of 'Vulkan.Core10.DescriptorSet.DescriptorImageInfo',
+--     'Vulkan.Core10.DescriptorSet.DescriptorBufferInfo', or
+--     'Vulkan.Core10.Handles.BufferView' in a layout defined by
+--     @descriptorUpdateTemplate@ when it was created with
+--     'Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template.createDescriptorUpdateTemplate'
+--
+-- -   #VUID-vkCmdPushDescriptorSetWithTemplate-layout-07993# @layout@
+--     /must/ be compatible with the layout used to create
+--     @descriptorUpdateTemplate@
+--
+-- -   #VUID-vkCmdPushDescriptorSetWithTemplate-descriptorUpdateTemplate-07994#
+--     @descriptorUpdateTemplate@ /must/ have been created with a
+--     @templateType@ of
+--     'Vulkan.Core11.Enums.DescriptorUpdateTemplateType.DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS'
+--
+-- -   #VUID-vkCmdPushDescriptorSetWithTemplate-set-07995# @set@ /must/ be
+--     the same value used to create @descriptorUpdateTemplate@
+--
+-- -   #VUID-vkCmdPushDescriptorSetWithTemplate-set-07304# @set@ /must/ be
+--     less than
+--     'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo'::@setLayoutCount@
+--     provided when @layout@ was created
+--
+-- -   #VUID-vkCmdPushDescriptorSetWithTemplate-set-11854# @set@ /must/
+--     reference a valid 'Vulkan.Core10.Handles.DescriptorSetLayout' handle
+--     in @layout@
+--
+-- -   #VUID-vkCmdPushDescriptorSetWithTemplate-set-07305# @set@ /must/ be
+--     the unique set number in the pipeline layout that uses a descriptor
+--     set layout that was created with
+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT'
+--
+-- -   #VUID-vkCmdPushDescriptorSetWithTemplate-None-10358# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_push_descriptor VK_KHR_push_descriptor>
+--     extension is not enabled,
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-pushDescriptor pushDescriptor>
+--     /must/ be enabled
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdPushDescriptorSetWithTemplate-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdPushDescriptorSetWithTemplate-descriptorUpdateTemplate-parameter#
+--     @descriptorUpdateTemplate@ /must/ be a valid
+--     'Vulkan.Core11.Handles.DescriptorUpdateTemplate' handle
+--
+-- -   #VUID-vkCmdPushDescriptorSetWithTemplate-layout-parameter# @layout@
+--     /must/ be a valid 'Vulkan.Core10.Handles.PipelineLayout' handle
+--
+-- -   #VUID-vkCmdPushDescriptorSetWithTemplate-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-vkCmdPushDescriptorSetWithTemplate-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', or
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
+--
+-- -   #VUID-vkCmdPushDescriptorSetWithTemplate-videocoding# This command
+--     /must/ only be called outside of a video coding scope
+--
+-- -   #VUID-vkCmdPushDescriptorSetWithTemplate-commonparent# Each of
+--     @commandBuffer@, @descriptorUpdateTemplate@, and @layout@ /must/
+--     have been created, allocated, or retrieved from the same
+--     'Vulkan.Core10.Handles.Device'
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | State                                                                                                                                  |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | VK_QUEUE_GRAPHICS_BIT                                                                                                 |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdPushDescriptorSetWithTemplate is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- __API Example__
+--
+-- > struct AppDataStructure
+-- > {
+-- >     VkDescriptorImageInfo  imageInfo;          // a single image info
+-- >     // ... some more application-related data
+-- > };
+-- >
+-- > const VkDescriptorUpdateTemplateEntry descriptorUpdateTemplateEntries[] =
+-- > {
+-- >     // binding to a single image descriptor
+-- >     {
+-- >         .binding = 0,
+-- >         .dstArrayElement = 0,
+-- >         .descriptorCount = 1,
+-- >         .descriptorType = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,
+-- >         .offset = offsetof(AppDataStructure, imageInfo),
+-- >         .stride = 0     // not required if descriptorCount is 1
+-- >     }
+-- > };
+-- >
+-- > // create a descriptor update template for push descriptor set updates
+-- > const VkDescriptorUpdateTemplateCreateInfo createInfo =
+-- > {
+-- >     .sType = VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO,
+-- >     .pNext = NULL,
+-- >     .flags = 0,
+-- >     .descriptorUpdateEntryCount = 1,
+-- >     .pDescriptorUpdateEntries = descriptorUpdateTemplateEntries,
+-- >     .templateType = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS,
+-- >     .descriptorSetLayout = 0,   // ignored by given templateType
+-- >     .pipelineBindPoint = VK_PIPELINE_BIND_POINT_GRAPHICS,
+-- >     .pipelineLayout = myPipelineLayout,
+-- >     .set = 0,
+-- > };
+-- >
+-- > VkDescriptorUpdateTemplate myDescriptorUpdateTemplate;
+-- > myResult = vkCreateDescriptorUpdateTemplate(
+-- >     myDevice,
+-- >     &createInfo,
+-- >     NULL,
+-- >     &myDescriptorUpdateTemplate);
+-- >
+-- > AppDataStructure appData;
+-- > // fill appData here or cache it in your engine
+-- > vkCmdPushDescriptorSetWithTemplate(myCmdBuffer, myDescriptorUpdateTemplate, myPipelineLayout, 0,&appData);
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_descriptor_update_template VK_KHR_descriptor_update_template>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_push_descriptor VK_KHR_push_descriptor>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'Vulkan.Core11.Handles.DescriptorUpdateTemplate',
+-- 'Vulkan.Core10.Handles.PipelineLayout'
+cmdPushDescriptorSetWithTemplate :: forall io
+                                  . (MonadIO io)
+                                 => -- | @commandBuffer@ is the command buffer that the descriptors will be
+                                    -- recorded in.
+                                    CommandBuffer
+                                 -> -- | @descriptorUpdateTemplate@ is a descriptor update template defining how
+                                    -- to interpret the descriptor information in @pData@.
+                                    DescriptorUpdateTemplate
+                                 -> -- | @layout@ is a 'Vulkan.Core10.Handles.PipelineLayout' object used to
+                                    -- program the bindings. It /must/ be compatible with the layout used to
+                                    -- create the @descriptorUpdateTemplate@ handle.
+                                    PipelineLayout
+                                 -> -- | @set@ is the set number of the descriptor set in the pipeline layout
+                                    -- that will be updated. This /must/ be the same number used to create the
+                                    -- @descriptorUpdateTemplate@ handle.
+                                    ("set" ::: Word32)
+                                 -> -- | @pData@ is a pointer to memory containing descriptors for the templated
+                                    -- update.
+                                    ("data" ::: Ptr ())
+                                 -> io ()
+cmdPushDescriptorSetWithTemplate commandBuffer
+                                   descriptorUpdateTemplate
+                                   layout
+                                   set
+                                   data' = liftIO $ do
+  let vkCmdPushDescriptorSetWithTemplatePtr = pVkCmdPushDescriptorSetWithTemplate (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  unless (vkCmdPushDescriptorSetWithTemplatePtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdPushDescriptorSetWithTemplate is null" Nothing Nothing
+  let vkCmdPushDescriptorSetWithTemplate' = mkVkCmdPushDescriptorSetWithTemplate vkCmdPushDescriptorSetWithTemplatePtr
+  traceAroundEvent "vkCmdPushDescriptorSetWithTemplate" (vkCmdPushDescriptorSetWithTemplate'
+                                                           (commandBufferHandle (commandBuffer))
+                                                           (descriptorUpdateTemplate)
+                                                           (layout)
+                                                           (set)
+                                                           (data'))
+  pure $ ()
+
+
+-- | VkPhysicalDevicePushDescriptorProperties - Structure describing push
+-- descriptor limits that can be supported by an implementation
+--
+-- = Description
+--
+-- If the 'PhysicalDevicePushDescriptorProperties' 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.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_push_descriptor VK_KHR_push_descriptor>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDevicePushDescriptorProperties = PhysicalDevicePushDescriptorProperties
+  { -- | #extension-limits-maxPushDescriptors# @maxPushDescriptors@ is the
+    -- maximum number of descriptors that /can/ be used in a descriptor set
+    -- layout created with
+    -- 'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT'
+    -- set.
+    maxPushDescriptors :: Word32 }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDevicePushDescriptorProperties)
+#endif
+deriving instance Show PhysicalDevicePushDescriptorProperties
+
+instance ToCStruct PhysicalDevicePushDescriptorProperties where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDevicePushDescriptorProperties{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (maxPushDescriptors)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct PhysicalDevicePushDescriptorProperties where
+  peekCStruct p = do
+    maxPushDescriptors <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    pure $ PhysicalDevicePushDescriptorProperties
+             maxPushDescriptors
+
+instance Storable PhysicalDevicePushDescriptorProperties where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDevicePushDescriptorProperties where
+  zero = PhysicalDevicePushDescriptorProperties
+           zero
+
diff --git a/src/Vulkan/Core14/Promoted_From_VK_KHR_push_descriptor.hs-boot b/src/Vulkan/Core14/Promoted_From_VK_KHR_push_descriptor.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core14/Promoted_From_VK_KHR_push_descriptor.hs-boot
@@ -0,0 +1,15 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Promoted_From_VK_KHR_push_descriptor"
+module Vulkan.Core14.Promoted_From_VK_KHR_push_descriptor  (PhysicalDevicePushDescriptorProperties) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data PhysicalDevicePushDescriptorProperties
+
+instance ToCStruct PhysicalDevicePushDescriptorProperties
+instance Show PhysicalDevicePushDescriptorProperties
+
+instance FromCStruct PhysicalDevicePushDescriptorProperties
+
diff --git a/src/Vulkan/Core14/Promoted_From_VK_KHR_shader_expect_assume.hs b/src/Vulkan/Core14/Promoted_From_VK_KHR_shader_expect_assume.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core14/Promoted_From_VK_KHR_shader_expect_assume.hs
@@ -0,0 +1,102 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Promoted_From_VK_KHR_shader_expect_assume"
+module Vulkan.Core14.Promoted_From_VK_KHR_shader_expect_assume  ( PhysicalDeviceShaderExpectAssumeFeatures(..)
+                                                                , 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_EXPECT_ASSUME_FEATURES))
+import Vulkan.Core10.Enums.StructureType (StructureType(..))
+-- | VkPhysicalDeviceShaderExpectAssumeFeatures - Structure describing shader
+-- expect assume features that can be supported by an implementation
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceShaderExpectAssumeFeatures' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceShaderExpectAssumeFeatures', it /must/ add an instance of
+-- the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_shader_expect_assume VK_KHR_shader_expect_assume>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceShaderExpectAssumeFeatures = PhysicalDeviceShaderExpectAssumeFeatures
+  { -- | #extension-features-shaderExpectAssume# @shaderExpectAssume@ specifies
+    -- whether shader modules /can/ declare the @ExpectAssumeKHR@ capability.
+    shaderExpectAssume :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceShaderExpectAssumeFeatures)
+#endif
+deriving instance Show PhysicalDeviceShaderExpectAssumeFeatures
+
+instance ToCStruct PhysicalDeviceShaderExpectAssumeFeatures where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceShaderExpectAssumeFeatures{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (shaderExpectAssume))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceShaderExpectAssumeFeatures where
+  peekCStruct p = do
+    shaderExpectAssume <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDeviceShaderExpectAssumeFeatures
+             (bool32ToBool shaderExpectAssume)
+
+instance Storable PhysicalDeviceShaderExpectAssumeFeatures where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceShaderExpectAssumeFeatures where
+  zero = PhysicalDeviceShaderExpectAssumeFeatures
+           zero
+
diff --git a/src/Vulkan/Core14/Promoted_From_VK_KHR_shader_expect_assume.hs-boot b/src/Vulkan/Core14/Promoted_From_VK_KHR_shader_expect_assume.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core14/Promoted_From_VK_KHR_shader_expect_assume.hs-boot
@@ -0,0 +1,15 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Promoted_From_VK_KHR_shader_expect_assume"
+module Vulkan.Core14.Promoted_From_VK_KHR_shader_expect_assume  (PhysicalDeviceShaderExpectAssumeFeatures) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data PhysicalDeviceShaderExpectAssumeFeatures
+
+instance ToCStruct PhysicalDeviceShaderExpectAssumeFeatures
+instance Show PhysicalDeviceShaderExpectAssumeFeatures
+
+instance FromCStruct PhysicalDeviceShaderExpectAssumeFeatures
+
diff --git a/src/Vulkan/Core14/Promoted_From_VK_KHR_shader_float_controls2.hs b/src/Vulkan/Core14/Promoted_From_VK_KHR_shader_float_controls2.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core14/Promoted_From_VK_KHR_shader_float_controls2.hs
@@ -0,0 +1,108 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Promoted_From_VK_KHR_shader_float_controls2"
+module Vulkan.Core14.Promoted_From_VK_KHR_shader_float_controls2  ( PhysicalDeviceShaderFloatControls2Features(..)
+                                                                  , 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_FLOAT_CONTROLS_2_FEATURES))
+import Vulkan.Core10.Enums.StructureType (StructureType(..))
+-- | VkPhysicalDeviceShaderFloatControls2Features - Structure describing
+-- shader float controls 2 features that can be supported by an
+-- implementation
+--
+-- = Members
+--
+-- This structure describes the following feature:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceShaderFloatControls2Features' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceShaderFloatControls2Features', it /must/ add an instance
+-- of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_shader_float_controls2 VK_KHR_shader_float_controls2>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceShaderFloatControls2Features = PhysicalDeviceShaderFloatControls2Features
+  { -- | #extension-features-shaderFloatControls2# @shaderFloatControls2@
+    -- specifies whether shader modules /can/ declare the @FloatControls2@
+    -- capability.
+    shaderFloatControls2 :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceShaderFloatControls2Features)
+#endif
+deriving instance Show PhysicalDeviceShaderFloatControls2Features
+
+instance ToCStruct PhysicalDeviceShaderFloatControls2Features where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceShaderFloatControls2Features{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (shaderFloatControls2))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceShaderFloatControls2Features where
+  peekCStruct p = do
+    shaderFloatControls2 <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDeviceShaderFloatControls2Features
+             (bool32ToBool shaderFloatControls2)
+
+instance Storable PhysicalDeviceShaderFloatControls2Features where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceShaderFloatControls2Features where
+  zero = PhysicalDeviceShaderFloatControls2Features
+           zero
+
diff --git a/src/Vulkan/Core14/Promoted_From_VK_KHR_shader_float_controls2.hs-boot b/src/Vulkan/Core14/Promoted_From_VK_KHR_shader_float_controls2.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core14/Promoted_From_VK_KHR_shader_float_controls2.hs-boot
@@ -0,0 +1,15 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Promoted_From_VK_KHR_shader_float_controls2"
+module Vulkan.Core14.Promoted_From_VK_KHR_shader_float_controls2  (PhysicalDeviceShaderFloatControls2Features) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data PhysicalDeviceShaderFloatControls2Features
+
+instance ToCStruct PhysicalDeviceShaderFloatControls2Features
+instance Show PhysicalDeviceShaderFloatControls2Features
+
+instance FromCStruct PhysicalDeviceShaderFloatControls2Features
+
diff --git a/src/Vulkan/Core14/Promoted_From_VK_KHR_shader_subgroup_rotate.hs b/src/Vulkan/Core14/Promoted_From_VK_KHR_shader_subgroup_rotate.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core14/Promoted_From_VK_KHR_shader_subgroup_rotate.hs
@@ -0,0 +1,117 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Promoted_From_VK_KHR_shader_subgroup_rotate"
+module Vulkan.Core14.Promoted_From_VK_KHR_shader_subgroup_rotate  ( PhysicalDeviceShaderSubgroupRotateFeatures(..)
+                                                                  , StructureType(..)
+                                                                  , SubgroupFeatureFlagBits(..)
+                                                                  , SubgroupFeatureFlags
+                                                                  ) 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_SUBGROUP_ROTATE_FEATURES))
+import Vulkan.Core10.Enums.StructureType (StructureType(..))
+import Vulkan.Core11.Enums.SubgroupFeatureFlagBits (SubgroupFeatureFlagBits(..))
+import Vulkan.Core11.Enums.SubgroupFeatureFlagBits (SubgroupFeatureFlags)
+-- | VkPhysicalDeviceShaderSubgroupRotateFeatures - Structure describing
+-- whether subgroup rotation is enabled
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceShaderSubgroupRotateFeatures' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceShaderSubgroupRotateFeatures', it /must/ add an instance
+-- of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_shader_subgroup_rotate VK_KHR_shader_subgroup_rotate>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceShaderSubgroupRotateFeatures = PhysicalDeviceShaderSubgroupRotateFeatures
+  { -- | #extension-features-shaderSubgroupRotate# @shaderSubgroupRotate@
+    -- specifies whether shader modules /can/ declare the
+    -- @GroupNonUniformRotateKHR@ capability.
+    shaderSubgroupRotate :: Bool
+  , -- | #extension-features-shaderSubgroupRotateClustered#
+    -- @shaderSubgroupRotateClustered@ specifies whether shader modules /can/
+    -- use the @ClusterSize@ operand to @OpGroupNonUniformRotateKHR@.
+    shaderSubgroupRotateClustered :: Bool
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceShaderSubgroupRotateFeatures)
+#endif
+deriving instance Show PhysicalDeviceShaderSubgroupRotateFeatures
+
+instance ToCStruct PhysicalDeviceShaderSubgroupRotateFeatures where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceShaderSubgroupRotateFeatures{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (shaderSubgroupRotate))
+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (shaderSubgroupRotateClustered))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_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 PhysicalDeviceShaderSubgroupRotateFeatures where
+  peekCStruct p = do
+    shaderSubgroupRotate <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    shaderSubgroupRotateClustered <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
+    pure $ PhysicalDeviceShaderSubgroupRotateFeatures
+             (bool32ToBool shaderSubgroupRotate)
+             (bool32ToBool shaderSubgroupRotateClustered)
+
+instance Storable PhysicalDeviceShaderSubgroupRotateFeatures where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceShaderSubgroupRotateFeatures where
+  zero = PhysicalDeviceShaderSubgroupRotateFeatures
+           zero
+           zero
+
diff --git a/src/Vulkan/Core14/Promoted_From_VK_KHR_shader_subgroup_rotate.hs-boot b/src/Vulkan/Core14/Promoted_From_VK_KHR_shader_subgroup_rotate.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core14/Promoted_From_VK_KHR_shader_subgroup_rotate.hs-boot
@@ -0,0 +1,15 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Promoted_From_VK_KHR_shader_subgroup_rotate"
+module Vulkan.Core14.Promoted_From_VK_KHR_shader_subgroup_rotate  (PhysicalDeviceShaderSubgroupRotateFeatures) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data PhysicalDeviceShaderSubgroupRotateFeatures
+
+instance ToCStruct PhysicalDeviceShaderSubgroupRotateFeatures
+instance Show PhysicalDeviceShaderSubgroupRotateFeatures
+
+instance FromCStruct PhysicalDeviceShaderSubgroupRotateFeatures
+
diff --git a/src/Vulkan/Core14/Promoted_From_VK_KHR_vertex_attribute_divisor.hs b/src/Vulkan/Core14/Promoted_From_VK_KHR_vertex_attribute_divisor.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core14/Promoted_From_VK_KHR_vertex_attribute_divisor.hs
@@ -0,0 +1,372 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Promoted_From_VK_KHR_vertex_attribute_divisor"
+module Vulkan.Core14.Promoted_From_VK_KHR_vertex_attribute_divisor  ( VertexInputBindingDivisorDescription(..)
+                                                                    , PipelineVertexInputDivisorStateCreateInfo(..)
+                                                                    , PhysicalDeviceVertexAttributeDivisorProperties(..)
+                                                                    , PhysicalDeviceVertexAttributeDivisorFeatures(..)
+                                                                    , StructureType(..)
+                                                                    ) 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.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.Core10.FundamentalTypes (Bool32)
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO))
+import Vulkan.Core10.Enums.StructureType (StructureType(..))
+-- | VkVertexInputBindingDivisorDescription - Structure specifying a divisor
+-- used in instanced rendering
+--
+-- = Description
+--
+-- If this structure is not used to define a divisor value for an
+-- attribute, then the divisor has a logical default value of 1.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkVertexInputBindingDivisorDescription-binding-01869#
+--     @binding@ /must/ be less than
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxVertexInputBindings@
+--
+-- -   #VUID-VkVertexInputBindingDivisorDescription-vertexAttributeInstanceRateZeroDivisor-02228#
+--     If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-vertexAttributeInstanceRateZeroDivisor vertexAttributeInstanceRateZeroDivisor>
+--     feature is not enabled, @divisor@ /must/ not be @0@
+--
+-- -   #VUID-VkVertexInputBindingDivisorDescription-vertexAttributeInstanceRateDivisor-02229#
+--     If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-vertexAttributeInstanceRateDivisor vertexAttributeInstanceRateDivisor>
+--     feature is not enabled, @divisor@ /must/ be @1@
+--
+-- -   #VUID-VkVertexInputBindingDivisorDescription-divisor-01870#
+--     @divisor@ /must/ be a value between @0@ and
+--     'PhysicalDeviceVertexAttributeDivisorProperties'::@maxVertexAttribDivisor@,
+--     inclusive
+--
+-- -   #VUID-VkVertexInputBindingDivisorDescription-inputRate-01871#
+--     'Vulkan.Core10.GraphicsPipeline.VertexInputBindingDescription'::@inputRate@
+--     /must/ be of type
+--     'Vulkan.Core10.Enums.VertexInputRate.VERTEX_INPUT_RATE_INSTANCE' for
+--     this @binding@
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_vertex_attribute_divisor VK_EXT_vertex_attribute_divisor>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_vertex_attribute_divisor VK_KHR_vertex_attribute_divisor>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'PipelineVertexInputDivisorStateCreateInfo'
+data VertexInputBindingDivisorDescription = VertexInputBindingDivisorDescription
+  { -- | @binding@ is the binding number for which the divisor is specified.
+    binding :: Word32
+  , -- | @divisor@ is the number of successive instances that will use the same
+    -- value of the vertex attribute when instanced rendering 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
+    -- 'PhysicalDeviceVertexAttributeDivisorProperties'::@maxVertexAttribDivisor@.
+    -- A value of @0@ /can/ be used for the divisor if the
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-vertexAttributeInstanceRateZeroDivisor vertexAttributeInstanceRateZeroDivisor>
+    -- feature is enabled. In this case, the same vertex attribute will be
+    -- applied to all instances.
+    divisor :: Word32
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (VertexInputBindingDivisorDescription)
+#endif
+deriving instance Show VertexInputBindingDivisorDescription
+
+instance ToCStruct VertexInputBindingDivisorDescription where
+  withCStruct x f = allocaBytes 8 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p VertexInputBindingDivisorDescription{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr Word32)) (binding)
+    poke ((p `plusPtr` 4 :: Ptr Word32)) (divisor)
+    f
+  cStructSize = 8
+  cStructAlignment = 4
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct VertexInputBindingDivisorDescription where
+  peekCStruct p = do
+    binding <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))
+    divisor <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))
+    pure $ VertexInputBindingDivisorDescription
+             binding divisor
+
+instance Storable VertexInputBindingDivisorDescription where
+  sizeOf ~_ = 8
+  alignment ~_ = 4
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero VertexInputBindingDivisorDescription where
+  zero = VertexInputBindingDivisorDescription
+           zero
+           zero
+
+
+-- | VkPipelineVertexInputDivisorStateCreateInfo - Structure specifying
+-- vertex attributes assignment during instanced rendering
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.GraphicsPipeline.PipelineVertexInputStateCreateInfo'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_vertex_attribute_divisor VK_EXT_vertex_attribute_divisor>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_vertex_attribute_divisor VK_KHR_vertex_attribute_divisor>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'VertexInputBindingDivisorDescription'
+data PipelineVertexInputDivisorStateCreateInfo = PipelineVertexInputDivisorStateCreateInfo
+  { -- | @pVertexBindingDivisors@ is a pointer to an array of
+    -- 'VertexInputBindingDivisorDescription' structures specifying the divisor
+    -- value for each binding.
+    --
+    -- #VUID-VkPipelineVertexInputDivisorStateCreateInfo-pVertexBindingDivisors-parameter#
+    -- @pVertexBindingDivisors@ /must/ be a valid pointer to an array of
+    -- @vertexBindingDivisorCount@ 'VertexInputBindingDivisorDescription'
+    -- structures
+    vertexBindingDivisors :: Vector VertexInputBindingDivisorDescription }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PipelineVertexInputDivisorStateCreateInfo)
+#endif
+deriving instance Show PipelineVertexInputDivisorStateCreateInfo
+
+instance ToCStruct PipelineVertexInputDivisorStateCreateInfo where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PipelineVertexInputDivisorStateCreateInfo{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (vertexBindingDivisors)) :: Word32))
+    pPVertexBindingDivisors' <- ContT $ allocaBytes @VertexInputBindingDivisorDescription ((Data.Vector.length (vertexBindingDivisors)) * 8)
+    lift $ Data.Vector.imapM_ (\i e -> poke (pPVertexBindingDivisors' `plusPtr` (8 * (i)) :: Ptr VertexInputBindingDivisorDescription) (e)) (vertexBindingDivisors)
+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr VertexInputBindingDivisorDescription))) (pPVertexBindingDivisors')
+    lift $ f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    f
+
+instance FromCStruct PipelineVertexInputDivisorStateCreateInfo where
+  peekCStruct p = do
+    vertexBindingDivisorCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    pVertexBindingDivisors <- peek @(Ptr VertexInputBindingDivisorDescription) ((p `plusPtr` 24 :: Ptr (Ptr VertexInputBindingDivisorDescription)))
+    pVertexBindingDivisors' <- generateM (fromIntegral vertexBindingDivisorCount) (\i -> peekCStruct @VertexInputBindingDivisorDescription ((pVertexBindingDivisors `advancePtrBytes` (8 * (i)) :: Ptr VertexInputBindingDivisorDescription)))
+    pure $ PipelineVertexInputDivisorStateCreateInfo
+             pVertexBindingDivisors'
+
+instance Zero PipelineVertexInputDivisorStateCreateInfo where
+  zero = PipelineVertexInputDivisorStateCreateInfo
+           mempty
+
+
+-- | VkPhysicalDeviceVertexAttributeDivisorProperties - Structure describing
+-- max value of vertex attribute divisor that can be supported by an
+-- implementation
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceVertexAttributeDivisorProperties' 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.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_vertex_attribute_divisor VK_KHR_vertex_attribute_divisor>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceVertexAttributeDivisorProperties = PhysicalDeviceVertexAttributeDivisorProperties
+  { -- | #extension-limits-maxVertexAttribDivisor# @maxVertexAttribDivisor@ is
+    -- the maximum value of the number of instances that will repeat the value
+    -- of vertex attribute data when instanced rendering is enabled.
+    maxVertexAttribDivisor :: Word32
+  , -- | #extension-limits-supportsNonZeroFirstInstance#
+    -- @supportsNonZeroFirstInstance@ specifies whether a non-zero value for
+    -- the @firstInstance@ parameter of
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#drawing drawing commands>
+    -- is supported when 'VertexInputBindingDivisorDescription'::@divisor@ is
+    -- not @1@.
+    supportsNonZeroFirstInstance :: Bool
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceVertexAttributeDivisorProperties)
+#endif
+deriving instance Show PhysicalDeviceVertexAttributeDivisorProperties
+
+instance ToCStruct PhysicalDeviceVertexAttributeDivisorProperties where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceVertexAttributeDivisorProperties{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (maxVertexAttribDivisor)
+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (supportsNonZeroFirstInstance))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceVertexAttributeDivisorProperties where
+  peekCStruct p = do
+    maxVertexAttribDivisor <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    supportsNonZeroFirstInstance <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
+    pure $ PhysicalDeviceVertexAttributeDivisorProperties
+             maxVertexAttribDivisor (bool32ToBool supportsNonZeroFirstInstance)
+
+instance Storable PhysicalDeviceVertexAttributeDivisorProperties where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceVertexAttributeDivisorProperties where
+  zero = PhysicalDeviceVertexAttributeDivisorProperties
+           zero
+           zero
+
+
+-- | VkPhysicalDeviceVertexAttributeDivisorFeatures - Structure describing if
+-- fetching of vertex attribute may be repeated for instanced rendering
+--
+-- = Members
+--
+-- This structure describes the following features:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceVertexAttributeDivisorFeatures' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceVertexAttributeDivisorFeatures', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_vertex_attribute_divisor VK_EXT_vertex_attribute_divisor>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_vertex_attribute_divisor VK_KHR_vertex_attribute_divisor>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceVertexAttributeDivisorFeatures = PhysicalDeviceVertexAttributeDivisorFeatures
+  { -- | #extension-features-vertexAttributeInstanceRateDivisor#
+    -- @vertexAttributeInstanceRateDivisor@ specifies whether vertex attribute
+    -- fetching may be repeated in the case of instanced rendering.
+    vertexAttributeInstanceRateDivisor :: Bool
+  , -- | #extension-features-vertexAttributeInstanceRateZeroDivisor#
+    -- @vertexAttributeInstanceRateZeroDivisor@ specifies whether a zero value
+    -- for
+    -- 'Vulkan.Extensions.VK_EXT_vertex_attribute_divisor.VertexInputBindingDivisorDescriptionEXT'::@divisor@
+    -- is supported.
+    vertexAttributeInstanceRateZeroDivisor :: Bool
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceVertexAttributeDivisorFeatures)
+#endif
+deriving instance Show PhysicalDeviceVertexAttributeDivisorFeatures
+
+instance ToCStruct PhysicalDeviceVertexAttributeDivisorFeatures where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceVertexAttributeDivisorFeatures{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (vertexAttributeInstanceRateDivisor))
+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (vertexAttributeInstanceRateZeroDivisor))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_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 PhysicalDeviceVertexAttributeDivisorFeatures where
+  peekCStruct p = do
+    vertexAttributeInstanceRateDivisor <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    vertexAttributeInstanceRateZeroDivisor <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
+    pure $ PhysicalDeviceVertexAttributeDivisorFeatures
+             (bool32ToBool vertexAttributeInstanceRateDivisor)
+             (bool32ToBool vertexAttributeInstanceRateZeroDivisor)
+
+instance Storable PhysicalDeviceVertexAttributeDivisorFeatures where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceVertexAttributeDivisorFeatures where
+  zero = PhysicalDeviceVertexAttributeDivisorFeatures
+           zero
+           zero
+
diff --git a/src/Vulkan/Core14/Promoted_From_VK_KHR_vertex_attribute_divisor.hs-boot b/src/Vulkan/Core14/Promoted_From_VK_KHR_vertex_attribute_divisor.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core14/Promoted_From_VK_KHR_vertex_attribute_divisor.hs-boot
@@ -0,0 +1,43 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Promoted_From_VK_KHR_vertex_attribute_divisor"
+module Vulkan.Core14.Promoted_From_VK_KHR_vertex_attribute_divisor  ( PhysicalDeviceVertexAttributeDivisorFeatures
+                                                                    , PhysicalDeviceVertexAttributeDivisorProperties
+                                                                    , PipelineVertexInputDivisorStateCreateInfo
+                                                                    , VertexInputBindingDivisorDescription
+                                                                    ) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data PhysicalDeviceVertexAttributeDivisorFeatures
+
+instance ToCStruct PhysicalDeviceVertexAttributeDivisorFeatures
+instance Show PhysicalDeviceVertexAttributeDivisorFeatures
+
+instance FromCStruct PhysicalDeviceVertexAttributeDivisorFeatures
+
+
+data PhysicalDeviceVertexAttributeDivisorProperties
+
+instance ToCStruct PhysicalDeviceVertexAttributeDivisorProperties
+instance Show PhysicalDeviceVertexAttributeDivisorProperties
+
+instance FromCStruct PhysicalDeviceVertexAttributeDivisorProperties
+
+
+data PipelineVertexInputDivisorStateCreateInfo
+
+instance ToCStruct PipelineVertexInputDivisorStateCreateInfo
+instance Show PipelineVertexInputDivisorStateCreateInfo
+
+instance FromCStruct PipelineVertexInputDivisorStateCreateInfo
+
+
+data VertexInputBindingDivisorDescription
+
+instance ToCStruct VertexInputBindingDivisorDescription
+instance Show VertexInputBindingDivisorDescription
+
+instance FromCStruct VertexInputBindingDivisorDescription
+
diff --git a/src/Vulkan/Dynamic.hs b/src/Vulkan/Dynamic.hs
--- a/src/Vulkan/Dynamic.hs
+++ b/src/Vulkan/Dynamic.hs
@@ -32,6 +32,7 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureBuildTypeKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_buffer (AccelerationStructureCaptureDescriptorDataInfoEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureCompatibilityKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_device_address_commands (AccelerationStructureCreateInfo2KHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureCreateInfoKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing (AccelerationStructureCreateInfoNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureDeviceAddressInfoKHR)
@@ -42,17 +43,25 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureVersionInfoKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_swapchain (AcquireNextImageInfoKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_performance_query (AcquireProfilingLockInfoKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_device_address_commands (AddressCommandFlagsKHR)
 import {-# SOURCE #-} Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)
 import {-# SOURCE #-} Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer (AndroidHardwareBufferPropertiesANDROID)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_android_surface (AndroidSurfaceCreateInfoKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_anti_lag (AntiLagDataAMD)
 import {-# SOURCE #-} Vulkan.CStruct.Extends (BaseOutStructure)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_custom_resolve (BeginCustomResolveInfoEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing (BindAccelerationStructureMemoryInfoNV)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2 (BindBufferMemoryInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_data_graph (BindDataGraphPipelineSessionMemoryInfoARM)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance6 (BindDescriptorBufferEmbeddedSamplersInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance6 (BindDescriptorSetsInfoKHR)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_maintenance6 (BindDescriptorSetsInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_heap (BindHeapInfoEXT)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2 (BindImageMemoryInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_device_address_commands (BindIndexBuffer3InfoKHR)
 import {-# SOURCE #-} Vulkan.Core10.SparseResourceMemoryManagement (BindSparseInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_tensors (BindTensorMemoryInfoARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_device_address_commands (BindTransformFeedbackBuffer2InfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_device_address_commands (BindVertexBuffer3InfoKHR)
 import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2 (BlitImageInfo2)
 import {-# SOURCE #-} Vulkan.Core10.FundamentalTypes (Bool32)
 import {-# SOURCE #-} Vulkan.Core10.Handles (Buffer)
@@ -65,7 +74,7 @@
 import {-# SOURCE #-} Vulkan.Core10.Buffer (BufferCreateInfo)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address (BufferDeviceAddressInfo)
 import {-# SOURCE #-} Vulkan.Core10.CommandBufferBuilding (BufferImageCopy)
-import {-# SOURCE #-} Vulkan.Core10.OtherTypes (BufferMemoryBarrier)
+import {-# SOURCE #-} Vulkan.Core10.CommandBufferBuilding (BufferMemoryBarrier)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2 (BufferMemoryRequirementsInfo2)
 import {-# SOURCE #-} Vulkan.Core10.Handles (BufferView)
 import {-# SOURCE #-} Vulkan.Core10.BufferView (BufferViewCreateInfo)
@@ -90,27 +99,36 @@
 import {-# SOURCE #-} Vulkan.Core10.Enums.CommandPoolResetFlagBits (CommandPoolResetFlags)
 import {-# SOURCE #-} Vulkan.Core11.Enums.CommandPoolTrimFlags (CommandPoolTrimFlags)
 import {-# SOURCE #-} Vulkan.Core10.Enums.CompareOp (CompareOp)
-import {-# SOURCE #-} Vulkan.Core10.Pipeline (ComputePipelineCreateInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_compute_occupancy_priority (ComputeOccupancyPriorityParametersNV)
+import {-# SOURCE #-} Vulkan.Core10.ComputePipeline (ComputePipelineCreateInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_device_address_commands (ConditionalRenderingBeginInfo2EXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_conditional_rendering (ConditionalRenderingBeginInfoEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_conservative_rasterization (ConservativeRasterizationModeEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_cooperative_vector (ConvertCooperativeVectorMatrixInfoNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_cooperative_matrix2 (CooperativeMatrixFlexibleDimensionsPropertiesNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_cooperative_matrix (CooperativeMatrixPropertiesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_cooperative_matrix (CooperativeMatrixPropertiesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_cooperative_vector (CooperativeVectorPropertiesNV)
 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.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_device_address_commands (CopyDeviceMemoryImageInfoKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_device_address_commands (CopyDeviceMemoryInfoKHR)
 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_EXT_host_image_copy (CopyImageToImageInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_host_image_copy (CopyImageToMemoryInfoEXT)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy (CopyImageToImageInfo)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy (CopyImageToMemoryInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_copy_memory_indirect (CopyMemoryIndirectInfoKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (CopyMemoryToAccelerationStructureInfoKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_host_image_copy (CopyMemoryToImageInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_copy_memory_indirect (CopyMemoryToImageIndirectInfoKHR)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy (CopyMemoryToImageInfo)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_opacity_micromap (CopyMemoryToMicromapInfoEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_opacity_micromap (CopyMicromapInfoEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_opacity_micromap (CopyMicromapToMemoryInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_tensors (CopyTensorInfoARM)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_framebuffer_mixed_samples (CoverageModulationModeNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_coverage_reduction_mode (CoverageReductionModeNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NVX_binary_import (CuFunctionCreateInfoNVX)
@@ -124,6 +142,18 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_cuda_kernel_launch (CudaModuleCreateInfoNV)
 import {-# SOURCE #-} Vulkan.Extensions.Handles (CudaModuleNV)
 import {-# SOURCE #-} Vulkan.Core10.Enums.CullModeFlagBits (CullModeFlags)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_data_graph_optical_flow (DataGraphOpticalFlowImageFormatInfoARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_data_graph_optical_flow (DataGraphOpticalFlowImageFormatPropertiesARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_data_graph (DataGraphPipelineCreateInfoARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_data_graph (DataGraphPipelineDispatchInfoARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_data_graph (DataGraphPipelineInfoARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_data_graph (DataGraphPipelinePropertyARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_data_graph (DataGraphPipelinePropertyQueryResultARM)
+import {-# SOURCE #-} Vulkan.Extensions.Handles (DataGraphPipelineSessionARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_data_graph (DataGraphPipelineSessionBindPointRequirementARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_data_graph (DataGraphPipelineSessionBindPointRequirementsInfoARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_data_graph (DataGraphPipelineSessionCreateInfoARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_data_graph (DataGraphPipelineSessionMemoryRequirementsInfoARM)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_debug_marker (DebugMarkerMarkerInfoEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_debug_marker (DebugMarkerObjectNameInfoEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_debug_marker (DebugMarkerObjectTagInfoEXT)
@@ -139,6 +169,7 @@
 import {-# SOURCE #-} Vulkan.Extensions.Handles (DebugUtilsMessengerEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_debug_utils (DebugUtilsObjectNameInfoEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_debug_utils (DebugUtilsObjectTagInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_memory_decompression (DecompressMemoryInfoEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_memory_decompression (DecompressMemoryRegionNV)
 import {-# SOURCE #-} Vulkan.Extensions.Handles (DeferredOperationKHR)
 import {-# SOURCE #-} Vulkan.Core10.Enums.DependencyFlagBits (DependencyFlags)
@@ -158,26 +189,34 @@
 import {-# SOURCE #-} Vulkan.Core10.DescriptorSet (DescriptorSetLayoutCreateInfo)
 import {-# SOURCE #-} Vulkan.Extensions.VK_VALVE_descriptor_set_host_mapping (DescriptorSetLayoutHostMappingInfoVALVE)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_maintenance3 (DescriptorSetLayoutSupport)
+import {-# SOURCE #-} Vulkan.Core10.Enums.DescriptorType (DescriptorType)
 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_device_address_commands (DeviceAddressRangeKHR)
 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_EXT_device_fault (DeviceFaultCountsEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_device_fault (DeviceFaultDebugInfoKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_device_fault (DeviceFaultInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_device_fault (DeviceFaultInfoKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_swapchain (DeviceGroupPresentCapabilitiesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_swapchain (DeviceGroupPresentModeFlagsKHR)
 import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_maintenance4 (DeviceImageMemoryRequirements)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance5 (DeviceImageSubresourceInfoKHR)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_maintenance5 (DeviceImageSubresourceInfo)
 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)
 import {-# SOURCE #-} Vulkan.Core10.FundamentalTypes (DeviceSize)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_tensors (DeviceTensorMemoryRequirementsARM)
 import {-# SOURCE #-} Vulkan.Core10.Handles (Device_T)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_directfb_surface (DirectFBSurfaceCreateInfoEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_discard_rectangles (DiscardRectangleModeEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_AMDX_shader_enqueue (DispatchGraphCountInfoAMDX)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_device_address_commands (DispatchIndirect2InfoKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_scheduling_controls (DispatchParametersARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_tile_shading (DispatchTileInfoQCOM)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_xlib_surface (Display)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_display_control (DisplayEventInfoEXT)
 import {-# SOURCE #-} Vulkan.Extensions.Handles (DisplayKHR)
@@ -194,6 +233,8 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_get_display_properties2 (DisplayProperties2KHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_display (DisplayPropertiesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_display (DisplaySurfaceCreateInfoKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_device_address_commands (DrawIndirect2InfoKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_device_address_commands (DrawIndirectCount2InfoKHR)
 import {-# SOURCE #-} Vulkan.Core10.Handles (Event)
 import {-# SOURCE #-} Vulkan.Core10.Event (EventCreateInfo)
 import {-# SOURCE #-} Vulkan.Extensions.VK_AMDX_shader_enqueue (ExecutionGraphPipelineCreateInfoAMDX)
@@ -202,11 +243,15 @@
 import {-# SOURCE #-} Vulkan.Core10.ExtensionDiscovery (ExtensionProperties)
 import {-# SOURCE #-} Vulkan.Core10.FundamentalTypes (Extent2D)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities (ExternalBufferProperties)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_external_compute_queue (ExternalComputeQueueCreateInfoNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_external_compute_queue (ExternalComputeQueueDataParamsNV)
+import {-# SOURCE #-} Vulkan.Extensions.Handles (ExternalComputeQueueNV_T)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_external_fence_capabilities (ExternalFenceProperties)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_external_memory_capabilities (ExternalImageFormatPropertiesNV)
 import {-# SOURCE #-} Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits (ExternalMemoryHandleTypeFlagBits)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_external_memory_capabilities (ExternalMemoryHandleTypeFlagsNV)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore_capabilities (ExternalSemaphoreProperties)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_tensors (ExternalTensorPropertiesARM)
 import {-# SOURCE #-} Vulkan.Core10.Handles (Fence)
 import {-# SOURCE #-} Vulkan.Core10.Fence (FenceCreateInfo)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_external_fence_fd (FenceGetFdInfoKHR)
@@ -226,11 +271,17 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_device_generated_commands (GeneratedCommandsMemoryRequirementsInfoEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_generated_commands (GeneratedCommandsMemoryRequirementsInfoNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_low_latency2 (GetLatencyMarkerInfoNV)
-import {-# SOURCE #-} Vulkan.Core10.Pipeline (GraphicsPipelineCreateInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_gpa_interface (GpaDeviceClockModeInfoAMD)
+import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_gpa_interface (GpaDeviceGetClockInfoAMD)
+import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_gpa_interface (GpaSampleBeginInfoAMD)
+import {-# SOURCE #-} Vulkan.Extensions.Handles (GpaSessionAMD)
+import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_gpa_interface (GpaSessionCreateInfoAMD)
+import {-# SOURCE #-} Vulkan.Core10.GraphicsPipeline (GraphicsPipelineCreateInfo)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_external_memory_win32 (HANDLE)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_hdr_metadata (HdrMetadataEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_headless_surface (HeadlessSurfaceCreateInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_host_image_copy (HostImageLayoutTransitionInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_heap (HostAddressRangeEXT)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy (HostImageLayoutTransitionInfo)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_directfb_surface (IDirectFB)
 import {-# SOURCE #-} Vulkan.Extensions.VK_MVK_ios_surface (IOSSurfaceCreateInfoMVK)
 import {-# SOURCE #-} Vulkan.Core10.Handles (Image)
@@ -245,13 +296,13 @@
 import {-# SOURCE #-} Vulkan.Core10.DeviceInitialization (ImageFormatProperties)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (ImageFormatProperties2)
 import {-# SOURCE #-} Vulkan.Core10.Enums.ImageLayout (ImageLayout)
-import {-# SOURCE #-} Vulkan.Core10.OtherTypes (ImageMemoryBarrier)
+import {-# SOURCE #-} Vulkan.Core10.CommandBufferBuilding (ImageMemoryBarrier)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2 (ImageMemoryRequirementsInfo2)
 import {-# SOURCE #-} Vulkan.Extensions.VK_FUCHSIA_imagepipe_surface (ImagePipeSurfaceCreateInfoFUCHSIA)
 import {-# SOURCE #-} Vulkan.Core10.CommandBufferBuilding (ImageResolve)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2 (ImageSparseMemoryRequirementsInfo2)
 import {-# SOURCE #-} Vulkan.Core10.SparseResourceMemoryManagement (ImageSubresource)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance5 (ImageSubresource2KHR)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_maintenance5 (ImageSubresource2)
 import {-# SOURCE #-} Vulkan.Core10.CommandBufferBuilding (ImageSubresourceLayers)
 import {-# SOURCE #-} Vulkan.Core10.ImageView (ImageSubresourceRange)
 import {-# SOURCE #-} Vulkan.Core10.Enums.ImageTiling (ImageTiling)
@@ -284,20 +335,23 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_MVK_macos_surface (MacOSSurfaceCreateInfoMVK)
 import {-# SOURCE #-} Vulkan.Core10.Memory (MappedMemoryRange)
 import {-# SOURCE #-} Vulkan.Core10.Memory (MemoryAllocateInfo)
-import {-# SOURCE #-} Vulkan.Core10.OtherTypes (MemoryBarrier)
+import {-# SOURCE #-} Vulkan.Core10.CommandBufferBuilding (MemoryBarrier)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_memory_decompression (MemoryDecompressionMethodFlagsEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_external_memory_fd (MemoryFdPropertiesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer (MemoryGetAndroidHardwareBufferInfoANDROID)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_external_memory_fd (MemoryGetFdInfoKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_external_memory_metal (MemoryGetMetalHandleInfoEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_external_memory_rdma (MemoryGetRemoteAddressInfoNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_external_memory_win32 (MemoryGetWin32HandleInfoKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_FUCHSIA_external_memory (MemoryGetZirconHandleInfoFUCHSIA)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_external_memory_host (MemoryHostPointerPropertiesEXT)
 import {-# SOURCE #-} Vulkan.Core10.Enums.MemoryMapFlagBits (MemoryMapFlags)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_map_memory2 (MemoryMapInfoKHR)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_map_memory2 (MemoryMapInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_device_address_commands (MemoryMarkerInfoAMD)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_external_memory_metal (MemoryMetalHandlePropertiesEXT)
 import {-# SOURCE #-} Vulkan.Core10.MemoryManagement (MemoryRequirements)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2 (MemoryRequirements2)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_get_memory_requirements2 (MemoryRequirements2KHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_map_memory2 (MemoryUnmapInfoKHR)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_map_memory2 (MemoryUnmapInfo)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_external_memory_win32 (MemoryWin32HandlePropertiesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_FUCHSIA_external_memory (MemoryZirconHandlePropertiesFUCHSIA)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_metal_surface (MetalSurfaceCreateInfoEXT)
@@ -319,7 +373,12 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_low_latency2 (OutOfBandQueueTypeInfoNV)
 import {-# SOURCE #-} Vulkan.Core10.FuncPointers (PFN_vkVoidFunction)
 import {-# SOURCE #-} Vulkan.Extensions.VK_GOOGLE_display_timing (PastPresentationTimingGOOGLE)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_present_timing (PastPresentationTimingInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_present_timing (PastPresentationTimingPropertiesEXT)
 import {-# SOURCE #-} Vulkan.Core11.Enums.PeerMemoryFeatureFlagBits (PeerMemoryFeatureFlags)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_tile_shading (PerTileBeginInfoQCOM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_tile_shading (PerTileEndInfoQCOM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_queue_perf_hint (PerfHintInfoQCOM)
 import {-# SOURCE #-} Vulkan.Extensions.VK_INTEL_performance_query (PerformanceConfigurationAcquireInfoINTEL)
 import {-# SOURCE #-} Vulkan.Extensions.Handles (PerformanceConfigurationINTEL)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_performance_query (PerformanceCounterDescriptionKHR)
@@ -332,6 +391,7 @@
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities (PhysicalDeviceExternalBufferInfo)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_external_fence_capabilities (PhysicalDeviceExternalFenceInfo)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore_capabilities (PhysicalDeviceExternalSemaphoreInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_tensors (PhysicalDeviceExternalTensorInfoARM)
 import {-# SOURCE #-} Vulkan.Core10.DeviceInitialization (PhysicalDeviceFeatures)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (PhysicalDeviceFeatures2)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_fragment_shading_rate (PhysicalDeviceFragmentShadingRateKHR)
@@ -341,6 +401,7 @@
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (PhysicalDeviceMemoryProperties2)
 import {-# SOURCE #-} Vulkan.Core10.DeviceInitialization (PhysicalDeviceProperties)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (PhysicalDeviceProperties2)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_data_graph (PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM)
 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.Core13.Promoted_From_VK_EXT_tooling_info (PhysicalDeviceToolProperties)
@@ -360,7 +421,6 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_pipeline_executable_properties (PipelineExecutablePropertiesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_pipeline_executable_properties (PipelineExecutableStatisticKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_generated_commands_compute (PipelineIndirectDeviceAddressInfoNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_pipeline_properties (PipelineInfoEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_pipeline_executable_properties (PipelineInfoKHR)
 import {-# SOURCE #-} Vulkan.Core10.Handles (PipelineLayout)
 import {-# SOURCE #-} Vulkan.Core10.PipelineLayout (PipelineLayoutCreateInfo)
@@ -371,19 +431,23 @@
 import {-# SOURCE #-} Vulkan.Core10.Enums.PolygonMode (PolygonMode)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_swapchain (PresentInfoKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_surface (PresentModeKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_present_wait2 (PresentWait2InfoKHR)
 import {-# SOURCE #-} Vulkan.Core10.Enums.PrimitiveTopology (PrimitiveTopology)
 import {-# SOURCE #-} Vulkan.Core13.Handles (PrivateDataSlot)
 import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_private_data (PrivateDataSlotCreateInfo)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_provoking_vertex (ProvokingVertexModeEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance6 (PushConstantsInfoKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance6 (PushDescriptorSetInfoKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance6 (PushDescriptorSetWithTemplateInfoKHR)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_maintenance6 (PushConstantsInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_heap (PushDataInfoEXT)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_maintenance6 (PushDescriptorSetInfo)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_maintenance6 (PushDescriptorSetWithTemplateInfo)
 import {-# SOURCE #-} Vulkan.Core10.Enums.QueryControlFlagBits (QueryControlFlags)
 import {-# SOURCE #-} Vulkan.Core10.Handles (QueryPool)
 import {-# SOURCE #-} Vulkan.Core10.Query (QueryPoolCreateInfo)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_performance_query (QueryPoolPerformanceCreateInfoKHR)
 import {-# SOURCE #-} Vulkan.Core10.Enums.QueryResultFlagBits (QueryResultFlags)
 import {-# SOURCE #-} Vulkan.Core10.Enums.QueryType (QueryType)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_data_graph (QueueFamilyDataGraphProcessingEnginePropertiesARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_data_graph (QueueFamilyDataGraphPropertiesARM)
 import {-# SOURCE #-} Vulkan.Core10.DeviceInitialization (QueueFamilyProperties)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (QueueFamilyProperties2)
 import {-# SOURCE #-} Vulkan.Core10.Handles (Queue_T)
@@ -393,17 +457,19 @@
 import {-# SOURCE #-} Vulkan.Core10.FundamentalTypes (Rect2D)
 import {-# SOURCE #-} Vulkan.Extensions.VK_GOOGLE_display_timing (RefreshCycleDurationGOOGLE)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_pipeline_binary (ReleaseCapturedPipelineDataInfoKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_swapchain_maintenance1 (ReleaseSwapchainImagesInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_swapchain_maintenance1 (ReleaseSwapchainImagesInfoKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_external_memory_rdma (RemoteAddressNV)
 import {-# SOURCE #-} Vulkan.Core10.Handles (RenderPass)
 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_maintenance5 (RenderingAreaInfoKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read (RenderingAttachmentLocationInfoKHR)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_maintenance5 (RenderingAreaInfo)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read (RenderingAttachmentLocationInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance10 (RenderingEndInfoKHR)
 import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering (RenderingInfo)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read (RenderingInputAttachmentIndexInfoKHR)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read (RenderingInputAttachmentIndexInfo)
 import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2 (ResolveImageInfo2)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_heap (ResourceDescriptorInfoEXT)
 import {-# SOURCE #-} Vulkan.Core10.Enums.Result (Result)
 import {-# SOURCE #-} Vulkan.Core10.Enums.SampleCountFlagBits (SampleCountFlagBits)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_sample_locations (SampleLocationsInfoEXT)
@@ -411,6 +477,7 @@
 import {-# SOURCE #-} Vulkan.Core10.Handles (Sampler)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_buffer (SamplerCaptureDescriptorDataInfoEXT)
 import {-# SOURCE #-} Vulkan.Core10.Sampler (SamplerCreateInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_custom_border_color (SamplerCustomBorderColorCreateInfoEXT)
 import {-# SOURCE #-} Vulkan.Core11.Handles (SamplerYcbcrConversion)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion (SamplerYcbcrConversionCreateInfo)
 import {-# SOURCE #-} Vulkan.Extensions.VK_QNX_external_memory_screen_buffer (ScreenBufferPropertiesQNX)
@@ -430,6 +497,10 @@
 import {-# SOURCE #-} Vulkan.Extensions.Handles (ShaderEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing_pipeline (ShaderGroupShaderKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_shader_info (ShaderInfoTypeAMD)
+import {-# SOURCE #-} Vulkan.Extensions.Handles (ShaderInstrumentationARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_shader_instrumentation (ShaderInstrumentationCreateInfoARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_shader_instrumentation (ShaderInstrumentationMetricDescriptionARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_shader_instrumentation (ShaderInstrumentationValuesFlagsARM)
 import {-# SOURCE #-} Vulkan.Core10.Handles (ShaderModule)
 import {-# SOURCE #-} Vulkan.Core10.Shader (ShaderModuleCreateInfo)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_shader_module_identifier (ShaderModuleIdentifierEXT)
@@ -444,6 +515,7 @@
 import {-# SOURCE #-} Vulkan.Core10.Enums.StencilFaceFlagBits (StencilFaceFlags)
 import {-# SOURCE #-} Vulkan.Core10.Enums.StencilOp (StencilOp)
 import {-# SOURCE #-} Vulkan.Extensions.VK_GGP_stream_descriptor_surface (StreamDescriptorSurfaceCreateInfoGGP)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_device_address_commands (StridedDeviceAddressRangeKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing_pipeline (StridedDeviceAddressRegionKHR)
 import {-# SOURCE #-} Vulkan.Core10.Queue (SubmitInfo)
 import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_synchronization2 (SubmitInfo2)
@@ -451,7 +523,7 @@
 import {-# SOURCE #-} Vulkan.Core10.Enums.SubpassContents (SubpassContents)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2 (SubpassEndInfo)
 import {-# SOURCE #-} Vulkan.Core10.Image (SubresourceLayout)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance5 (SubresourceLayout2KHR)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_maintenance5 (SubresourceLayout2)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_display_surface_counter (SurfaceCapabilities2EXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_get_surface_capabilities2 (SurfaceCapabilities2KHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_surface (SurfaceCapabilitiesKHR)
@@ -461,15 +533,25 @@
 import {-# SOURCE #-} Vulkan.Extensions.Handles (SurfaceKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_swapchain (SwapchainCreateInfoKHR)
 import {-# SOURCE #-} Vulkan.Extensions.Handles (SwapchainKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_present_timing (SwapchainTimeDomainPropertiesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_present_timing (SwapchainTimingPropertiesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.Handles (TensorARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_tensors (TensorCaptureDescriptorDataInfoARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_tensors (TensorCreateInfoARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_tensors (TensorMemoryRequirementsInfoARM)
+import {-# SOURCE #-} Vulkan.Extensions.Handles (TensorViewARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_tensors (TensorViewCaptureDescriptorDataInfoARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_tensors (TensorViewCreateInfoARM)
 import {-# SOURCE #-} Vulkan.Core11.Enums.TessellationDomainOrigin (TessellationDomainOrigin)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_tile_memory_heap (TileMemoryBindInfoQCOM)
 import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_tile_properties (TilePropertiesQCOM)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_calibrated_timestamps (TimeDomainKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_present_timing (TimeDomainKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_validation_cache (ValidationCacheCreateInfoEXT)
 import {-# SOURCE #-} Vulkan.Extensions.Handles (ValidationCacheEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state (VertexInputAttributeDescription2EXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state (VertexInputBindingDescription2EXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NN_vi_surface (ViSurfaceCreateInfoNN)
-import {-# SOURCE #-} Vulkan.Core10.Pipeline (Viewport)
+import {-# SOURCE #-} Vulkan.Core10.GraphicsPipeline (Viewport)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_viewport_swizzle (ViewportSwizzleNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_clip_space_w_scaling (ViewportWScalingNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_xlib_surface (VisualID)
@@ -576,6 +658,14 @@
   , pVkGetPhysicalDeviceOpticalFlowImageFormatsNV :: FunPtr (Ptr PhysicalDevice_T -> ("pOpticalFlowImageFormatInfo" ::: Ptr OpticalFlowImageFormatInfoNV) -> ("pFormatCount" ::: Ptr Word32) -> ("pImageFormatProperties" ::: Ptr OpticalFlowImageFormatPropertiesNV) -> IO Result)
   , pVkGetPhysicalDeviceCooperativeMatrixPropertiesKHR :: FunPtr (Ptr PhysicalDevice_T -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr CooperativeMatrixPropertiesKHR) -> IO Result)
   , pVkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV :: FunPtr (Ptr PhysicalDevice_T -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr CooperativeMatrixFlexibleDimensionsPropertiesNV) -> IO Result)
+  , pVkGetPhysicalDeviceCooperativeVectorPropertiesNV :: FunPtr (Ptr PhysicalDevice_T -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr CooperativeVectorPropertiesNV) -> IO Result)
+  , pVkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM :: FunPtr (Ptr PhysicalDevice_T -> ("pDescriptionCount" ::: Ptr Word32) -> ("pDescriptions" ::: Ptr ShaderInstrumentationMetricDescriptionARM) -> IO Result)
+  , pVkGetPhysicalDeviceExternalTensorPropertiesARM :: FunPtr (Ptr PhysicalDevice_T -> ("pExternalTensorInfo" ::: Ptr PhysicalDeviceExternalTensorInfoARM) -> ("pExternalTensorProperties" ::: Ptr ExternalTensorPropertiesARM) -> IO ())
+  , pVkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM :: FunPtr (Ptr PhysicalDevice_T -> ("queueFamilyIndex" ::: Word32) -> ("pQueueFamilyDataGraphPropertyCount" ::: Ptr Word32) -> ("pQueueFamilyDataGraphProperties" ::: Ptr QueueFamilyDataGraphPropertiesARM) -> IO Result)
+  , pVkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM :: FunPtr (Ptr PhysicalDevice_T -> ("pQueueFamilyDataGraphProcessingEngineInfo" ::: Ptr PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM) -> ("pQueueFamilyDataGraphProcessingEngineProperties" ::: Ptr QueueFamilyDataGraphProcessingEnginePropertiesARM) -> IO ())
+  , pVkGetPhysicalDeviceDescriptorSizeEXT :: FunPtr (Ptr PhysicalDevice_T -> DescriptorType -> IO DeviceSize)
+  , pVkGetPhysicalDeviceQueueFamilyDataGraphEngineOperationPropertiesARM :: FunPtr (Ptr PhysicalDevice_T -> ("queueFamilyIndex" ::: Word32) -> ("pQueueFamilyDataGraphProperties" ::: Ptr QueueFamilyDataGraphPropertiesARM) -> ("pProperties" ::: Ptr BaseOutStructure) -> IO Result)
+  , pVkGetPhysicalDeviceQueueFamilyDataGraphOpticalFlowImageFormatsARM :: FunPtr (Ptr PhysicalDevice_T -> ("queueFamilyIndex" ::: Word32) -> ("pQueueFamilyDataGraphProperties" ::: Ptr QueueFamilyDataGraphPropertiesARM) -> ("pOpticalFlowImageFormatInfo" ::: Ptr DataGraphOpticalFlowImageFormatInfoARM) -> ("pFormatCount" ::: Ptr Word32) -> ("pImageFormatProperties" ::: Ptr DataGraphOpticalFlowImageFormatPropertiesARM) -> IO Result)
   }
 
 deriving instance Eq InstanceCmds
@@ -670,6 +760,14 @@
     nullFunPtr
     nullFunPtr
     nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
     nullFunPtr nullFunPtr nullFunPtr
 
 -- | A version of 'getInstanceProcAddr' which can be called
@@ -792,6 +890,14 @@
   vkGetPhysicalDeviceOpticalFlowImageFormatsNV <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceOpticalFlowImageFormatsNV"#)
   vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR"#)
   vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV"#)
+  vkGetPhysicalDeviceCooperativeVectorPropertiesNV <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceCooperativeVectorPropertiesNV"#)
+  vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM <- getInstanceProcAddr' handle (Ptr "vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM"#)
+  vkGetPhysicalDeviceExternalTensorPropertiesARM <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceExternalTensorPropertiesARM"#)
+  vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM"#)
+  vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM"#)
+  vkGetPhysicalDeviceDescriptorSizeEXT <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceDescriptorSizeEXT"#)
+  vkGetPhysicalDeviceQueueFamilyDataGraphEngineOperationPropertiesARM <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceQueueFamilyDataGraphEngineOperationPropertiesARM"#)
+  vkGetPhysicalDeviceQueueFamilyDataGraphOpticalFlowImageFormatsARM <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceQueueFamilyDataGraphOpticalFlowImageFormatsARM"#)
   pure $ InstanceCmds handle
     (castFunPtr @_ @(Ptr Instance_T -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyInstance)
     (castFunPtr @_ @(Ptr Instance_T -> ("pPhysicalDeviceCount" ::: Ptr Word32) -> ("pPhysicalDevices" ::: Ptr (Ptr PhysicalDevice_T)) -> IO Result) vkEnumeratePhysicalDevices)
@@ -883,6 +989,14 @@
     (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pOpticalFlowImageFormatInfo" ::: Ptr OpticalFlowImageFormatInfoNV) -> ("pFormatCount" ::: Ptr Word32) -> ("pImageFormatProperties" ::: Ptr OpticalFlowImageFormatPropertiesNV) -> IO Result) vkGetPhysicalDeviceOpticalFlowImageFormatsNV)
     (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr CooperativeMatrixPropertiesKHR) -> IO Result) vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR)
     (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr CooperativeMatrixFlexibleDimensionsPropertiesNV) -> IO Result) vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV)
+    (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr CooperativeVectorPropertiesNV) -> IO Result) vkGetPhysicalDeviceCooperativeVectorPropertiesNV)
+    (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pDescriptionCount" ::: Ptr Word32) -> ("pDescriptions" ::: Ptr ShaderInstrumentationMetricDescriptionARM) -> IO Result) vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM)
+    (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pExternalTensorInfo" ::: Ptr PhysicalDeviceExternalTensorInfoARM) -> ("pExternalTensorProperties" ::: Ptr ExternalTensorPropertiesARM) -> IO ()) vkGetPhysicalDeviceExternalTensorPropertiesARM)
+    (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("queueFamilyIndex" ::: Word32) -> ("pQueueFamilyDataGraphPropertyCount" ::: Ptr Word32) -> ("pQueueFamilyDataGraphProperties" ::: Ptr QueueFamilyDataGraphPropertiesARM) -> IO Result) vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM)
+    (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pQueueFamilyDataGraphProcessingEngineInfo" ::: Ptr PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM) -> ("pQueueFamilyDataGraphProcessingEngineProperties" ::: Ptr QueueFamilyDataGraphProcessingEnginePropertiesARM) -> IO ()) vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM)
+    (castFunPtr @_ @(Ptr PhysicalDevice_T -> DescriptorType -> IO DeviceSize) vkGetPhysicalDeviceDescriptorSizeEXT)
+    (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("queueFamilyIndex" ::: Word32) -> ("pQueueFamilyDataGraphProperties" ::: Ptr QueueFamilyDataGraphPropertiesARM) -> ("pProperties" ::: Ptr BaseOutStructure) -> IO Result) vkGetPhysicalDeviceQueueFamilyDataGraphEngineOperationPropertiesARM)
+    (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("queueFamilyIndex" ::: Word32) -> ("pQueueFamilyDataGraphProperties" ::: Ptr QueueFamilyDataGraphPropertiesARM) -> ("pOpticalFlowImageFormatInfo" ::: Ptr DataGraphOpticalFlowImageFormatInfoARM) -> ("pFormatCount" ::: Ptr Word32) -> ("pImageFormatProperties" ::: Ptr DataGraphOpticalFlowImageFormatPropertiesARM) -> IO Result) vkGetPhysicalDeviceQueueFamilyDataGraphOpticalFlowImageFormatsARM)
 
 data DeviceCmds = DeviceCmds
   { deviceCmdsHandle :: Ptr Device_T
@@ -962,8 +1076,8 @@
   , pVkCreateRenderPass :: FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr (SomeStruct RenderPassCreateInfo)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pRenderPass" ::: Ptr RenderPass) -> IO Result)
   , pVkDestroyRenderPass :: FunPtr (Ptr Device_T -> RenderPass -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())
   , pVkGetRenderAreaGranularity :: FunPtr (Ptr Device_T -> RenderPass -> ("pGranularity" ::: Ptr Extent2D) -> IO ())
-  , pVkGetRenderingAreaGranularityKHR :: FunPtr (Ptr Device_T -> ("pRenderingAreaInfo" ::: Ptr RenderingAreaInfoKHR) -> ("pGranularity" ::: Ptr Extent2D) -> IO ())
-  , pVkCreateCommandPool :: FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr CommandPoolCreateInfo) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pCommandPool" ::: Ptr CommandPool) -> IO Result)
+  , pVkGetRenderingAreaGranularity :: FunPtr (Ptr Device_T -> ("pRenderingAreaInfo" ::: Ptr RenderingAreaInfo) -> ("pGranularity" ::: Ptr Extent2D) -> IO ())
+  , pVkCreateCommandPool :: FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr (SomeStruct CommandPoolCreateInfo)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pCommandPool" ::: Ptr CommandPool) -> IO Result)
   , pVkDestroyCommandPool :: FunPtr (Ptr Device_T -> CommandPool -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())
   , pVkResetCommandPool :: FunPtr (Ptr Device_T -> CommandPool -> CommandPoolResetFlags -> IO Result)
   , pVkAllocateCommandBuffers :: FunPtr (Ptr Device_T -> ("pAllocateInfo" ::: Ptr CommandBufferAllocateInfo) -> ("pCommandBuffers" ::: Ptr (Ptr CommandBuffer_T)) -> IO Result)
@@ -972,6 +1086,7 @@
   , pVkEndCommandBuffer :: FunPtr (Ptr CommandBuffer_T -> IO Result)
   , pVkResetCommandBuffer :: FunPtr (Ptr CommandBuffer_T -> CommandBufferResetFlags -> IO Result)
   , pVkCmdBindPipeline :: FunPtr (Ptr CommandBuffer_T -> PipelineBindPoint -> Pipeline -> IO ())
+  , pVkCmdSetPrimitiveRestartIndexEXT :: FunPtr (Ptr CommandBuffer_T -> ("primitiveRestartIndex" ::: Word32) -> IO ())
   , pVkCmdSetAttachmentFeedbackLoopEnableEXT :: FunPtr (Ptr CommandBuffer_T -> ("aspectMask" ::: ImageAspectFlags) -> IO ())
   , pVkCmdSetViewport :: FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("viewportCount" ::: Word32) -> ("pViewports" ::: Ptr Viewport) -> IO ())
   , pVkCmdSetScissor :: FunPtr (Ptr CommandBuffer_T -> ("firstScissor" ::: Word32) -> ("scissorCount" ::: Word32) -> ("pScissors" ::: Ptr Rect2D) -> IO ())
@@ -1003,7 +1118,9 @@
   , pVkCmdCopyBufferToImage :: FunPtr (Ptr CommandBuffer_T -> ("srcBuffer" ::: Buffer) -> ("dstImage" ::: Image) -> ("dstImageLayout" ::: ImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr BufferImageCopy) -> IO ())
   , pVkCmdCopyImageToBuffer :: FunPtr (Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("dstBuffer" ::: Buffer) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr BufferImageCopy) -> IO ())
   , pVkCmdCopyMemoryIndirectNV :: FunPtr (Ptr CommandBuffer_T -> ("copyBufferAddress" ::: DeviceAddress) -> ("copyCount" ::: Word32) -> ("stride" ::: Word32) -> IO ())
+  , pVkCmdCopyMemoryIndirectKHR :: FunPtr (Ptr CommandBuffer_T -> ("pCopyMemoryIndirectInfo" ::: Ptr CopyMemoryIndirectInfoKHR) -> IO ())
   , pVkCmdCopyMemoryToImageIndirectNV :: FunPtr (Ptr CommandBuffer_T -> ("copyBufferAddress" ::: DeviceAddress) -> ("copyCount" ::: Word32) -> ("stride" ::: Word32) -> ("dstImage" ::: Image) -> ("dstImageLayout" ::: ImageLayout) -> ("pImageSubresources" ::: Ptr ImageSubresourceLayers) -> IO ())
+  , pVkCmdCopyMemoryToImageIndirectKHR :: FunPtr (Ptr CommandBuffer_T -> ("pCopyMemoryToImageIndirectInfo" ::: Ptr CopyMemoryToImageIndirectInfoKHR) -> IO ())
   , pVkCmdUpdateBuffer :: FunPtr (Ptr CommandBuffer_T -> ("dstBuffer" ::: Buffer) -> ("dstOffset" ::: DeviceSize) -> ("dataSize" ::: DeviceSize) -> ("pData" ::: Ptr ()) -> IO ())
   , pVkCmdFillBuffer :: FunPtr (Ptr CommandBuffer_T -> ("dstBuffer" ::: Buffer) -> ("dstOffset" ::: DeviceSize) -> DeviceSize -> ("data" ::: Word32) -> IO ())
   , pVkCmdClearColorImage :: FunPtr (Ptr CommandBuffer_T -> Image -> ImageLayout -> ("pColor" ::: Ptr ClearColorValue) -> ("rangeCount" ::: Word32) -> ("pRanges" ::: Ptr ImageSubresourceRange) -> IO ())
@@ -1018,6 +1135,7 @@
   , pVkCmdEndQuery :: FunPtr (Ptr CommandBuffer_T -> QueryPool -> ("query" ::: Word32) -> IO ())
   , pVkCmdBeginConditionalRenderingEXT :: FunPtr (Ptr CommandBuffer_T -> ("pConditionalRenderingBegin" ::: Ptr ConditionalRenderingBeginInfoEXT) -> IO ())
   , pVkCmdEndConditionalRenderingEXT :: FunPtr (Ptr CommandBuffer_T -> IO ())
+  , pVkCmdBeginCustomResolveEXT :: FunPtr (Ptr CommandBuffer_T -> ("pBeginCustomResolveInfo" ::: Ptr BeginCustomResolveInfoEXT) -> IO ())
   , pVkCmdResetQueryPool :: FunPtr (Ptr CommandBuffer_T -> QueryPool -> ("firstQuery" ::: Word32) -> ("queryCount" ::: Word32) -> IO ())
   , pVkCmdWriteTimestamp :: FunPtr (Ptr CommandBuffer_T -> PipelineStageFlagBits -> QueryPool -> ("query" ::: Word32) -> IO ())
   , pVkCmdCopyQueryPoolResults :: FunPtr (Ptr CommandBuffer_T -> QueryPool -> ("firstQuery" ::: Word32) -> ("queryCount" ::: Word32) -> ("dstBuffer" ::: Buffer) -> ("dstOffset" ::: DeviceSize) -> ("stride" ::: DeviceSize) -> QueryResultFlags -> IO ())
@@ -1053,7 +1171,7 @@
   , pVkDestroyIndirectExecutionSetEXT :: FunPtr (Ptr Device_T -> IndirectExecutionSetEXT -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())
   , pVkUpdateIndirectExecutionSetPipelineEXT :: FunPtr (Ptr Device_T -> IndirectExecutionSetEXT -> ("executionSetWriteCount" ::: Word32) -> ("pExecutionSetWrites" ::: Ptr WriteIndirectExecutionSetPipelineEXT) -> IO ())
   , pVkUpdateIndirectExecutionSetShaderEXT :: FunPtr (Ptr Device_T -> IndirectExecutionSetEXT -> ("executionSetWriteCount" ::: Word32) -> ("pExecutionSetWrites" ::: Ptr WriteIndirectExecutionSetShaderEXT) -> IO ())
-  , pVkCmdPushDescriptorSetKHR :: FunPtr (Ptr CommandBuffer_T -> PipelineBindPoint -> PipelineLayout -> ("set" ::: Word32) -> ("descriptorWriteCount" ::: Word32) -> ("pDescriptorWrites" ::: Ptr (SomeStruct WriteDescriptorSet)) -> IO ())
+  , pVkCmdPushDescriptorSet :: FunPtr (Ptr CommandBuffer_T -> PipelineBindPoint -> PipelineLayout -> ("set" ::: Word32) -> ("descriptorWriteCount" ::: Word32) -> ("pDescriptorWrites" ::: Ptr (SomeStruct WriteDescriptorSet)) -> IO ())
   , pVkTrimCommandPool :: FunPtr (Ptr Device_T -> CommandPool -> CommandPoolTrimFlags -> IO ())
   , pVkGetMemoryWin32HandleKHR :: FunPtr (Ptr Device_T -> ("pGetWin32HandleInfo" ::: Ptr MemoryGetWin32HandleInfoKHR) -> ("pHandle" ::: Ptr HANDLE) -> IO Result)
   , pVkGetMemoryWin32HandlePropertiesKHR :: FunPtr (Ptr Device_T -> ExternalMemoryHandleTypeFlagBits -> HANDLE -> ("pMemoryWin32HandleProperties" ::: Ptr MemoryWin32HandlePropertiesKHR) -> IO Result)
@@ -1087,7 +1205,7 @@
   , pVkCreateDescriptorUpdateTemplate :: FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr DescriptorUpdateTemplateCreateInfo) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pDescriptorUpdateTemplate" ::: Ptr DescriptorUpdateTemplate) -> IO Result)
   , pVkDestroyDescriptorUpdateTemplate :: FunPtr (Ptr Device_T -> DescriptorUpdateTemplate -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())
   , pVkUpdateDescriptorSetWithTemplate :: FunPtr (Ptr Device_T -> DescriptorSet -> DescriptorUpdateTemplate -> ("pData" ::: Ptr ()) -> IO ())
-  , pVkCmdPushDescriptorSetWithTemplateKHR :: FunPtr (Ptr CommandBuffer_T -> DescriptorUpdateTemplate -> PipelineLayout -> ("set" ::: Word32) -> ("pData" ::: Ptr ()) -> IO ())
+  , pVkCmdPushDescriptorSetWithTemplate :: FunPtr (Ptr CommandBuffer_T -> DescriptorUpdateTemplate -> PipelineLayout -> ("set" ::: Word32) -> ("pData" ::: Ptr ()) -> IO ())
   , pVkSetHdrMetadataEXT :: FunPtr (Ptr Device_T -> ("swapchainCount" ::: Word32) -> ("pSwapchains" ::: Ptr SwapchainKHR) -> ("pMetadata" ::: Ptr (SomeStruct HdrMetadataEXT)) -> IO ())
   , pVkGetSwapchainStatusKHR :: FunPtr (Ptr Device_T -> SwapchainKHR -> IO Result)
   , pVkGetRefreshCycleDurationGOOGLE :: FunPtr (Ptr Device_T -> SwapchainKHR -> ("pDisplayTimingProperties" ::: Ptr RefreshCycleDurationGOOGLE) -> IO Result)
@@ -1113,7 +1231,7 @@
   , pVkGetDescriptorSetLayoutSupport :: FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr (SomeStruct DescriptorSetLayoutCreateInfo)) -> ("pSupport" ::: Ptr (SomeStruct DescriptorSetLayoutSupport)) -> IO ())
   , pVkGetShaderInfoAMD :: FunPtr (Ptr Device_T -> Pipeline -> ShaderStageFlagBits -> ShaderInfoTypeAMD -> ("pInfoSize" ::: Ptr CSize) -> ("pInfo" ::: Ptr ()) -> IO Result)
   , pVkSetLocalDimmingAMD :: FunPtr (Ptr Device_T -> SwapchainKHR -> ("localDimmingEnable" ::: Bool32) -> IO ())
-  , pVkGetCalibratedTimestampsKHR :: FunPtr (Ptr Device_T -> ("timestampCount" ::: Word32) -> ("pTimestampInfos" ::: Ptr CalibratedTimestampInfoKHR) -> ("pTimestamps" ::: Ptr Word64) -> ("pMaxDeviation" ::: Ptr Word64) -> IO Result)
+  , pVkGetCalibratedTimestampsKHR :: FunPtr (Ptr Device_T -> ("timestampCount" ::: Word32) -> ("pTimestampInfos" ::: Ptr (SomeStruct CalibratedTimestampInfoKHR)) -> ("pTimestamps" ::: Ptr Word64) -> ("pMaxDeviation" ::: Ptr Word64) -> IO Result)
   , pVkSetDebugUtilsObjectNameEXT :: FunPtr (Ptr Device_T -> ("pNameInfo" ::: Ptr DebugUtilsObjectNameInfoEXT) -> IO Result)
   , pVkSetDebugUtilsObjectTagEXT :: FunPtr (Ptr Device_T -> ("pTagInfo" ::: Ptr DebugUtilsObjectTagInfoEXT) -> IO Result)
   , pVkQueueBeginDebugUtilsLabelEXT :: FunPtr (Ptr Queue_T -> ("pLabelInfo" ::: Ptr DebugUtilsLabelEXT) -> IO ())
@@ -1159,7 +1277,7 @@
   , pVkCmdBindInvocationMaskHUAWEI :: FunPtr (Ptr CommandBuffer_T -> ImageView -> ImageLayout -> IO ())
   , pVkDestroyAccelerationStructureKHR :: FunPtr (Ptr Device_T -> AccelerationStructureKHR -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())
   , pVkDestroyAccelerationStructureNV :: FunPtr (Ptr Device_T -> AccelerationStructureNV -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())
-  , pVkGetAccelerationStructureMemoryRequirementsNV :: FunPtr (Ptr Device_T -> ("pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoNV) -> ("pMemoryRequirements" ::: Ptr (SomeStruct MemoryRequirements2KHR)) -> IO ())
+  , pVkGetAccelerationStructureMemoryRequirementsNV :: FunPtr (Ptr Device_T -> ("pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoNV) -> ("pMemoryRequirements" ::: Ptr (SomeStruct MemoryRequirements2)) -> IO ())
   , pVkBindAccelerationStructureMemoryNV :: FunPtr (Ptr Device_T -> ("bindInfoCount" ::: Word32) -> ("pBindInfos" ::: Ptr BindAccelerationStructureMemoryInfoNV) -> IO Result)
   , pVkCmdCopyAccelerationStructureNV :: FunPtr (Ptr CommandBuffer_T -> ("dst" ::: AccelerationStructureNV) -> ("src" ::: AccelerationStructureNV) -> CopyAccelerationStructureModeKHR -> IO ())
   , pVkCmdCopyAccelerationStructureKHR :: FunPtr (Ptr CommandBuffer_T -> ("pInfo" ::: Ptr CopyAccelerationStructureInfoKHR) -> IO ())
@@ -1187,6 +1305,7 @@
   , pVkGetImageViewHandleNVX :: FunPtr (Ptr Device_T -> ("pInfo" ::: Ptr ImageViewHandleInfoNVX) -> IO Word32)
   , pVkGetImageViewHandle64NVX :: FunPtr (Ptr Device_T -> ("pInfo" ::: Ptr ImageViewHandleInfoNVX) -> IO Word64)
   , pVkGetImageViewAddressNVX :: FunPtr (Ptr Device_T -> ImageView -> ("pProperties" ::: Ptr ImageViewAddressPropertiesNVX) -> IO Result)
+  , pVkGetDeviceCombinedImageSamplerIndexNVX :: FunPtr (Ptr Device_T -> ("imageViewIndex" ::: Word64) -> ("samplerIndex" ::: Word64) -> IO Word64)
   , pVkGetDeviceGroupSurfacePresentModes2EXT :: FunPtr (Ptr Device_T -> ("pSurfaceInfo" ::: Ptr (SomeStruct PhysicalDeviceSurfaceInfo2KHR)) -> ("pModes" ::: Ptr DeviceGroupPresentModeFlagsKHR) -> IO Result)
   , pVkAcquireFullScreenExclusiveModeEXT :: FunPtr (Ptr Device_T -> SwapchainKHR -> IO Result)
   , pVkReleaseFullScreenExclusiveModeEXT :: FunPtr (Ptr Device_T -> SwapchainKHR -> IO Result)
@@ -1208,7 +1327,7 @@
   , pVkGetPipelineExecutablePropertiesKHR :: FunPtr (Ptr Device_T -> ("pPipelineInfo" ::: Ptr PipelineInfoKHR) -> ("pExecutableCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr PipelineExecutablePropertiesKHR) -> IO Result)
   , pVkGetPipelineExecutableStatisticsKHR :: FunPtr (Ptr Device_T -> ("pExecutableInfo" ::: Ptr PipelineExecutableInfoKHR) -> ("pStatisticCount" ::: Ptr Word32) -> ("pStatistics" ::: Ptr PipelineExecutableStatisticKHR) -> IO Result)
   , pVkGetPipelineExecutableInternalRepresentationsKHR :: FunPtr (Ptr Device_T -> ("pExecutableInfo" ::: Ptr PipelineExecutableInfoKHR) -> ("pInternalRepresentationCount" ::: Ptr Word32) -> ("pInternalRepresentations" ::: Ptr PipelineExecutableInternalRepresentationKHR) -> IO Result)
-  , pVkCmdSetLineStippleKHR :: FunPtr (Ptr CommandBuffer_T -> ("lineStippleFactor" ::: Word32) -> ("lineStipplePattern" ::: Word16) -> IO ())
+  , pVkCmdSetLineStipple :: FunPtr (Ptr CommandBuffer_T -> ("lineStippleFactor" ::: Word32) -> ("lineStipplePattern" ::: Word16) -> IO ())
   , pVkCreateAccelerationStructureKHR :: FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr (SomeStruct AccelerationStructureCreateInfoKHR)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pAccelerationStructure" ::: Ptr AccelerationStructureKHR) -> IO Result)
   , pVkCmdBuildAccelerationStructuresKHR :: FunPtr (Ptr CommandBuffer_T -> ("infoCount" ::: Word32) -> ("pInfos" ::: Ptr AccelerationStructureBuildGeometryInfoKHR) -> ("ppBuildRangeInfos" ::: Ptr (Ptr AccelerationStructureBuildRangeInfoKHR)) -> IO ())
   , pVkCmdBuildAccelerationStructuresIndirectKHR :: FunPtr (Ptr CommandBuffer_T -> ("infoCount" ::: Word32) -> ("pInfos" ::: Ptr AccelerationStructureBuildGeometryInfoKHR) -> ("pIndirectDeviceAddresses" ::: Ptr DeviceAddress) -> ("pIndirectStrides" ::: Ptr Word32) -> ("ppMaxPrimitiveCounts" ::: Ptr (Ptr Word32)) -> IO ())
@@ -1227,7 +1346,7 @@
   , 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 ())
-  , pVkCmdBindIndexBuffer2KHR :: FunPtr (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> DeviceSize -> IndexType -> IO ())
+  , pVkCmdBindIndexBuffer2 :: FunPtr (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> DeviceSize -> IndexType -> 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 ())
@@ -1280,26 +1399,28 @@
   , pVkCmdBlitImage2 :: FunPtr (Ptr CommandBuffer_T -> ("pBlitImageInfo" ::: Ptr (SomeStruct 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 ())
+  , pVkCmdResolveImage2 :: FunPtr (Ptr CommandBuffer_T -> ("pResolveImageInfo" ::: Ptr (SomeStruct 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 ())
-  , pVkCmdSetEvent2 :: FunPtr (Ptr CommandBuffer_T -> Event -> ("pDependencyInfo" ::: Ptr DependencyInfo) -> IO ())
+  , pVkCmdSetEvent2 :: FunPtr (Ptr CommandBuffer_T -> Event -> ("pDependencyInfo" ::: Ptr (SomeStruct 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 ())
+  , pVkCmdWaitEvents2 :: FunPtr (Ptr CommandBuffer_T -> ("eventCount" ::: Word32) -> ("pEvents" ::: Ptr Event) -> ("pDependencyInfos" ::: Ptr (SomeStruct DependencyInfo)) -> IO ())
+  , pVkCmdPipelineBarrier2 :: FunPtr (Ptr CommandBuffer_T -> ("pDependencyInfo" ::: Ptr (SomeStruct 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 ())
-  , pVkCopyMemoryToImageEXT :: FunPtr (Ptr Device_T -> ("pCopyMemoryToImageInfo" ::: Ptr CopyMemoryToImageInfoEXT) -> IO Result)
-  , pVkCopyImageToMemoryEXT :: FunPtr (Ptr Device_T -> ("pCopyImageToMemoryInfo" ::: Ptr CopyImageToMemoryInfoEXT) -> IO Result)
-  , pVkCopyImageToImageEXT :: FunPtr (Ptr Device_T -> ("pCopyImageToImageInfo" ::: Ptr CopyImageToImageInfoEXT) -> IO Result)
-  , pVkTransitionImageLayoutEXT :: FunPtr (Ptr Device_T -> ("transitionCount" ::: Word32) -> ("pTransitions" ::: Ptr HostImageLayoutTransitionInfoEXT) -> IO Result)
+  , pVkCopyMemoryToImage :: FunPtr (Ptr Device_T -> ("pCopyMemoryToImageInfo" ::: Ptr CopyMemoryToImageInfo) -> IO Result)
+  , pVkCopyImageToMemory :: FunPtr (Ptr Device_T -> ("pCopyImageToMemoryInfo" ::: Ptr CopyImageToMemoryInfo) -> IO Result)
+  , pVkCopyImageToImage :: FunPtr (Ptr Device_T -> ("pCopyImageToImageInfo" ::: Ptr CopyImageToImageInfo) -> IO Result)
+  , pVkTransitionImageLayout :: FunPtr (Ptr Device_T -> ("transitionCount" ::: Word32) -> ("pTransitions" ::: Ptr HostImageLayoutTransitionInfo) -> IO Result)
   , pVkCmdDecompressMemoryNV :: FunPtr (Ptr CommandBuffer_T -> ("decompressRegionCount" ::: Word32) -> ("pDecompressMemoryRegions" ::: Ptr DecompressMemoryRegionNV) -> IO ())
   , pVkCmdDecompressMemoryIndirectCountNV :: FunPtr (Ptr CommandBuffer_T -> ("indirectCommandsAddress" ::: DeviceAddress) -> ("indirectCommandsCountAddress" ::: DeviceAddress) -> ("stride" ::: Word32) -> IO ())
+  , pVkCmdDecompressMemoryEXT :: FunPtr (Ptr CommandBuffer_T -> ("pDecompressMemoryInfoEXT" ::: Ptr DecompressMemoryInfoEXT) -> IO ())
+  , pVkCmdDecompressMemoryIndirectCountEXT :: FunPtr (Ptr CommandBuffer_T -> MemoryDecompressionMethodFlagsEXT -> ("indirectCommandsAddress" ::: DeviceAddress) -> ("indirectCommandsCountAddress" ::: DeviceAddress) -> ("maxDecompressionCount" ::: Word32) -> ("stride" ::: Word32) -> IO ())
   , pVkCreateCuModuleNVX :: FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr (SomeStruct CuModuleCreateInfoNVX)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pModule" ::: Ptr CuModuleNVX) -> IO Result)
   , pVkCreateCuFunctionNVX :: FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr CuFunctionCreateInfoNVX) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pFunction" ::: Ptr CuFunctionNVX) -> IO Result)
   , pVkDestroyCuModuleNVX :: FunPtr (Ptr Device_T -> CuModuleNVX -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())
@@ -1307,7 +1428,7 @@
   , pVkCmdCuLaunchKernelNVX :: FunPtr (Ptr CommandBuffer_T -> ("pLaunchInfo" ::: Ptr CuLaunchInfoNVX) -> IO ())
   , pVkGetDescriptorSetLayoutSizeEXT :: FunPtr (Ptr Device_T -> DescriptorSetLayout -> ("pLayoutSizeInBytes" ::: Ptr DeviceSize) -> IO ())
   , pVkGetDescriptorSetLayoutBindingOffsetEXT :: FunPtr (Ptr Device_T -> DescriptorSetLayout -> ("binding" ::: Word32) -> ("pOffset" ::: Ptr DeviceSize) -> IO ())
-  , pVkGetDescriptorEXT :: FunPtr (Ptr Device_T -> ("pDescriptorInfo" ::: Ptr DescriptorGetInfoEXT) -> ("dataSize" ::: CSize) -> ("pDescriptor" ::: Ptr ()) -> IO ())
+  , pVkGetDescriptorEXT :: FunPtr (Ptr Device_T -> ("pDescriptorInfo" ::: Ptr (SomeStruct DescriptorGetInfoEXT)) -> ("dataSize" ::: CSize) -> ("pDescriptor" ::: Ptr ()) -> IO ())
   , pVkCmdBindDescriptorBuffersEXT :: FunPtr (Ptr CommandBuffer_T -> ("bufferCount" ::: Word32) -> ("pBindingInfos" ::: Ptr (SomeStruct DescriptorBufferBindingInfoEXT)) -> IO ())
   , pVkCmdSetDescriptorBufferOffsetsEXT :: FunPtr (Ptr CommandBuffer_T -> PipelineBindPoint -> PipelineLayout -> ("firstSet" ::: Word32) -> ("setCount" ::: Word32) -> ("pBufferIndices" ::: Ptr Word32) -> ("pOffsets" ::: Ptr DeviceSize) -> IO ())
   , pVkCmdBindDescriptorBufferEmbeddedSamplersEXT :: FunPtr (Ptr CommandBuffer_T -> PipelineBindPoint -> PipelineLayout -> ("set" ::: Word32) -> IO ())
@@ -1317,6 +1438,7 @@
   , pVkGetSamplerOpaqueCaptureDescriptorDataEXT :: FunPtr (Ptr Device_T -> ("pInfo" ::: Ptr SamplerCaptureDescriptorDataInfoEXT) -> ("pData" ::: Ptr ()) -> IO Result)
   , pVkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT :: FunPtr (Ptr Device_T -> ("pInfo" ::: Ptr AccelerationStructureCaptureDescriptorDataInfoEXT) -> ("pData" ::: Ptr ()) -> IO Result)
   , pVkSetDeviceMemoryPriorityEXT :: FunPtr (Ptr Device_T -> DeviceMemory -> ("priority" ::: CFloat) -> IO ())
+  , pVkWaitForPresent2KHR :: FunPtr (Ptr Device_T -> SwapchainKHR -> ("pPresentWait2Info" ::: Ptr PresentWait2InfoKHR) -> IO Result)
   , pVkWaitForPresentKHR :: FunPtr (Ptr Device_T -> SwapchainKHR -> ("presentId" ::: Word64) -> ("timeout" ::: Word64) -> IO Result)
   , pVkCreateBufferCollectionFUCHSIA :: FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr BufferCollectionCreateInfoFUCHSIA) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pCollection" ::: Ptr BufferCollectionFUCHSIA) -> IO Result)
   , pVkSetBufferCollectionBufferConstraintsFUCHSIA :: FunPtr (Ptr Device_T -> BufferCollectionFUCHSIA -> ("pBufferConstraintsInfo" ::: Ptr BufferConstraintsInfoFUCHSIA) -> IO Result)
@@ -1331,6 +1453,7 @@
   , pVkCmdCudaLaunchKernelNV :: FunPtr (Ptr CommandBuffer_T -> ("pLaunchInfo" ::: Ptr CudaLaunchInfoNV) -> IO ())
   , pVkCmdBeginRendering :: FunPtr (Ptr CommandBuffer_T -> ("pRenderingInfo" ::: Ptr (SomeStruct RenderingInfo)) -> IO ())
   , pVkCmdEndRendering :: FunPtr (Ptr CommandBuffer_T -> IO ())
+  , pVkCmdEndRendering2KHR :: FunPtr (Ptr CommandBuffer_T -> ("pRenderingEndInfo" ::: Ptr (SomeStruct RenderingEndInfoKHR)) -> IO ())
   , pVkGetDescriptorSetLayoutHostMappingInfoVALVE :: FunPtr (Ptr Device_T -> ("pBindingReference" ::: Ptr DescriptorSetBindingReferenceVALVE) -> ("pHostMapping" ::: Ptr DescriptorSetLayoutHostMappingInfoVALVE) -> IO ())
   , pVkGetDescriptorSetHostMappingVALVE :: FunPtr (Ptr Device_T -> DescriptorSet -> ("ppData" ::: Ptr (Ptr ())) -> IO ())
   , pVkCreateMicromapEXT :: FunPtr (Ptr Device_T -> Ptr MicromapCreateInfoEXT -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pMicromap" ::: Ptr MicromapEXT) -> IO Result)
@@ -1349,9 +1472,10 @@
   , pVkGetMicromapBuildSizesEXT :: FunPtr (Ptr Device_T -> AccelerationStructureBuildTypeKHR -> Ptr MicromapBuildInfoEXT -> ("pSizeInfo" ::: Ptr MicromapBuildSizesInfoEXT) -> IO ())
   , pVkGetShaderModuleIdentifierEXT :: FunPtr (Ptr Device_T -> ShaderModule -> ("pIdentifier" ::: Ptr ShaderModuleIdentifierEXT) -> IO ())
   , pVkGetShaderModuleCreateInfoIdentifierEXT :: FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr (SomeStruct ShaderModuleCreateInfo)) -> ("pIdentifier" ::: Ptr ShaderModuleIdentifierEXT) -> IO ())
-  , pVkGetImageSubresourceLayout2KHR :: FunPtr (Ptr Device_T -> Image -> ("pSubresource" ::: Ptr ImageSubresource2KHR) -> ("pLayout" ::: Ptr (SomeStruct SubresourceLayout2KHR)) -> IO ())
-  , pVkGetPipelinePropertiesEXT :: FunPtr (Ptr Device_T -> ("pPipelineInfo" ::: Ptr PipelineInfoEXT) -> ("pPipelineProperties" ::: Ptr BaseOutStructure) -> IO Result)
+  , pVkGetImageSubresourceLayout2 :: FunPtr (Ptr Device_T -> Image -> ("pSubresource" ::: Ptr ImageSubresource2) -> ("pLayout" ::: Ptr (SomeStruct SubresourceLayout2)) -> IO ())
+  , pVkGetPipelinePropertiesEXT :: FunPtr (Ptr Device_T -> ("pPipelineInfo" ::: Ptr PipelineInfoKHR) -> ("pPipelineProperties" ::: Ptr BaseOutStructure) -> IO Result)
   , pVkExportMetalObjectsEXT :: FunPtr (Ptr Device_T -> ("pMetalObjectsInfo" ::: Ptr (SomeStruct ExportMetalObjectsInfoEXT)) -> IO ())
+  , pVkCmdBindTileMemoryQCOM :: FunPtr (Ptr CommandBuffer_T -> ("pTileMemoryBindInfo" ::: Ptr TileMemoryBindInfoQCOM) -> IO ())
   , pVkGetFramebufferTilePropertiesQCOM :: FunPtr (Ptr Device_T -> Framebuffer -> ("pPropertiesCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr TilePropertiesQCOM) -> IO Result)
   , pVkGetDynamicRenderingTilePropertiesQCOM :: FunPtr (Ptr Device_T -> ("pRenderingInfo" ::: Ptr (SomeStruct RenderingInfo)) -> ("pProperties" ::: Ptr TilePropertiesQCOM) -> IO Result)
   , pVkCreateOpticalFlowSessionNV :: FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr (SomeStruct OpticalFlowSessionCreateInfoNV)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSession" ::: Ptr OpticalFlowSessionNV) -> IO Result)
@@ -1359,15 +1483,21 @@
   , pVkBindOpticalFlowSessionImageNV :: FunPtr (Ptr Device_T -> OpticalFlowSessionNV -> OpticalFlowSessionBindingPointNV -> ImageView -> ImageLayout -> IO Result)
   , pVkCmdOpticalFlowExecuteNV :: FunPtr (Ptr CommandBuffer_T -> OpticalFlowSessionNV -> ("pExecuteInfo" ::: Ptr OpticalFlowExecuteInfoNV) -> IO ())
   , pVkGetDeviceFaultInfoEXT :: FunPtr (Ptr Device_T -> ("pFaultCounts" ::: Ptr DeviceFaultCountsEXT) -> ("pFaultInfo" ::: Ptr DeviceFaultInfoEXT) -> IO Result)
+  , pVkGetDeviceFaultReportsKHR :: FunPtr (Ptr Device_T -> ("timeout" ::: Word64) -> ("pFaultCounts" ::: Ptr Word32) -> ("pFaultInfo" ::: Ptr DeviceFaultInfoKHR) -> IO Result)
+  , pVkGetDeviceFaultDebugInfoKHR :: FunPtr (Ptr Device_T -> ("pDebugInfo" ::: Ptr (SomeStruct DeviceFaultDebugInfoKHR)) -> IO Result)
   , pVkCmdSetDepthBias2EXT :: FunPtr (Ptr CommandBuffer_T -> ("pDepthBiasInfo" ::: Ptr (SomeStruct DepthBiasInfoEXT)) -> IO ())
-  , pVkReleaseSwapchainImagesEXT :: FunPtr (Ptr Device_T -> ("pReleaseInfo" ::: Ptr ReleaseSwapchainImagesInfoEXT) -> IO Result)
-  , pVkGetDeviceImageSubresourceLayoutKHR :: FunPtr (Ptr Device_T -> ("pInfo" ::: Ptr DeviceImageSubresourceInfoKHR) -> ("pLayout" ::: Ptr (SomeStruct SubresourceLayout2KHR)) -> IO ())
-  , pVkMapMemory2KHR :: FunPtr (Ptr Device_T -> ("pMemoryMapInfo" ::: Ptr (SomeStruct MemoryMapInfoKHR)) -> ("ppData" ::: Ptr (Ptr ())) -> IO Result)
-  , pVkUnmapMemory2KHR :: FunPtr (Ptr Device_T -> ("pMemoryUnmapInfo" ::: Ptr MemoryUnmapInfoKHR) -> IO Result)
+  , pVkReleaseSwapchainImagesKHR :: FunPtr (Ptr Device_T -> ("pReleaseInfo" ::: Ptr ReleaseSwapchainImagesInfoKHR) -> IO Result)
+  , pVkGetDeviceImageSubresourceLayout :: FunPtr (Ptr Device_T -> ("pInfo" ::: Ptr DeviceImageSubresourceInfo) -> ("pLayout" ::: Ptr (SomeStruct SubresourceLayout2)) -> IO ())
+  , pVkMapMemory2 :: FunPtr (Ptr Device_T -> ("pMemoryMapInfo" ::: Ptr (SomeStruct MemoryMapInfo)) -> ("ppData" ::: Ptr (Ptr ())) -> IO Result)
+  , pVkUnmapMemory2 :: FunPtr (Ptr Device_T -> ("pMemoryUnmapInfo" ::: Ptr MemoryUnmapInfo) -> IO Result)
   , pVkCreateShadersEXT :: FunPtr (Ptr Device_T -> ("createInfoCount" ::: Word32) -> ("pCreateInfos" ::: Ptr (SomeStruct ShaderCreateInfoEXT)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pShaders" ::: Ptr ShaderEXT) -> IO Result)
   , pVkDestroyShaderEXT :: FunPtr (Ptr Device_T -> ShaderEXT -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())
   , pVkGetShaderBinaryDataEXT :: FunPtr (Ptr Device_T -> ShaderEXT -> ("pDataSize" ::: Ptr CSize) -> ("pData" ::: Ptr ()) -> IO Result)
   , pVkCmdBindShadersEXT :: FunPtr (Ptr CommandBuffer_T -> ("stageCount" ::: Word32) -> ("pStages" ::: Ptr ShaderStageFlagBits) -> ("pShaders" ::: Ptr ShaderEXT) -> IO ())
+  , pVkSetSwapchainPresentTimingQueueSizeEXT :: FunPtr (Ptr Device_T -> SwapchainKHR -> ("size" ::: Word32) -> IO Result)
+  , pVkGetSwapchainTimingPropertiesEXT :: FunPtr (Ptr Device_T -> SwapchainKHR -> ("pSwapchainTimingProperties" ::: Ptr SwapchainTimingPropertiesEXT) -> ("pSwapchainTimingPropertiesCounter" ::: Ptr Word64) -> IO Result)
+  , pVkGetSwapchainTimeDomainPropertiesEXT :: FunPtr (Ptr Device_T -> SwapchainKHR -> ("pSwapchainTimeDomainProperties" ::: Ptr SwapchainTimeDomainPropertiesEXT) -> ("pTimeDomainsCounter" ::: Ptr Word64) -> IO Result)
+  , pVkGetPastPresentationTimingEXT :: FunPtr (Ptr Device_T -> ("pPastPresentationTimingInfo" ::: Ptr PastPresentationTimingInfoEXT) -> ("pPastPresentationTimingProperties" ::: Ptr PastPresentationTimingPropertiesEXT) -> IO Result)
   , pVkGetScreenBufferPropertiesQNX :: FunPtr (Ptr Device_T -> Ptr Screen_buffer -> ("pProperties" ::: Ptr (SomeStruct ScreenBufferPropertiesQNX)) -> IO Result)
   , pVkGetExecutionGraphPipelineScratchSizeAMDX :: FunPtr (Ptr Device_T -> ("executionGraph" ::: Pipeline) -> ("pSizeInfo" ::: Ptr ExecutionGraphPipelineScratchSizeAMDX) -> IO Result)
   , pVkGetExecutionGraphPipelineNodeIndexAMDX :: FunPtr (Ptr Device_T -> ("executionGraph" ::: Pipeline) -> ("pNodeInfo" ::: Ptr PipelineShaderStageNodeCreateInfoAMDX) -> ("pNodeIndex" ::: Ptr Word32) -> IO Result)
@@ -1376,10 +1506,22 @@
   , pVkCmdDispatchGraphAMDX :: FunPtr (Ptr CommandBuffer_T -> ("scratch" ::: DeviceAddress) -> ("scratchSize" ::: DeviceSize) -> ("pCountInfo" ::: Ptr DispatchGraphCountInfoAMDX) -> IO ())
   , pVkCmdDispatchGraphIndirectAMDX :: FunPtr (Ptr CommandBuffer_T -> ("scratch" ::: DeviceAddress) -> ("scratchSize" ::: DeviceSize) -> ("pCountInfo" ::: Ptr DispatchGraphCountInfoAMDX) -> IO ())
   , pVkCmdDispatchGraphIndirectCountAMDX :: FunPtr (Ptr CommandBuffer_T -> ("scratch" ::: DeviceAddress) -> ("scratchSize" ::: DeviceSize) -> ("countInfo" ::: DeviceAddress) -> IO ())
-  , pVkCmdBindDescriptorSets2KHR :: FunPtr (Ptr CommandBuffer_T -> ("pBindDescriptorSetsInfo" ::: Ptr (SomeStruct BindDescriptorSetsInfoKHR)) -> IO ())
-  , pVkCmdPushConstants2KHR :: FunPtr (Ptr CommandBuffer_T -> ("pPushConstantsInfo" ::: Ptr (SomeStruct PushConstantsInfoKHR)) -> IO ())
-  , pVkCmdPushDescriptorSet2KHR :: FunPtr (Ptr CommandBuffer_T -> ("pPushDescriptorSetInfo" ::: Ptr (SomeStruct PushDescriptorSetInfoKHR)) -> IO ())
-  , pVkCmdPushDescriptorSetWithTemplate2KHR :: FunPtr (Ptr CommandBuffer_T -> ("pPushDescriptorSetWithTemplateInfo" ::: Ptr (SomeStruct PushDescriptorSetWithTemplateInfoKHR)) -> IO ())
+  , pVkCreateGpaSessionAMD :: FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr GpaSessionCreateInfoAMD) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pGpaSession" ::: Ptr GpaSessionAMD) -> IO Result)
+  , pVkDestroyGpaSessionAMD :: FunPtr (Ptr Device_T -> GpaSessionAMD -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())
+  , pVkSetGpaDeviceClockModeAMD :: FunPtr (Ptr Device_T -> ("pInfo" ::: Ptr GpaDeviceClockModeInfoAMD) -> IO Result)
+  , pVkGetGpaDeviceClockInfoAMD :: FunPtr (Ptr Device_T -> ("pInfo" ::: Ptr GpaDeviceGetClockInfoAMD) -> IO Result)
+  , pVkCmdBeginGpaSessionAMD :: FunPtr (Ptr CommandBuffer_T -> GpaSessionAMD -> IO Result)
+  , pVkCmdEndGpaSessionAMD :: FunPtr (Ptr CommandBuffer_T -> GpaSessionAMD -> IO Result)
+  , pVkCmdBeginGpaSampleAMD :: FunPtr (Ptr CommandBuffer_T -> GpaSessionAMD -> ("pGpaSampleBeginInfo" ::: Ptr GpaSampleBeginInfoAMD) -> ("pSampleID" ::: Ptr Word32) -> IO Result)
+  , pVkCmdEndGpaSampleAMD :: FunPtr (Ptr CommandBuffer_T -> GpaSessionAMD -> ("sampleID" ::: Word32) -> IO ())
+  , pVkGetGpaSessionStatusAMD :: FunPtr (Ptr Device_T -> GpaSessionAMD -> IO Result)
+  , pVkGetGpaSessionResultsAMD :: FunPtr (Ptr Device_T -> GpaSessionAMD -> ("sampleID" ::: Word32) -> ("pSizeInBytes" ::: Ptr CSize) -> ("pData" ::: Ptr ()) -> IO Result)
+  , pVkResetGpaSessionAMD :: FunPtr (Ptr Device_T -> GpaSessionAMD -> IO Result)
+  , pVkCmdCopyGpaSessionResultsAMD :: FunPtr (Ptr CommandBuffer_T -> GpaSessionAMD -> IO ())
+  , pVkCmdBindDescriptorSets2 :: FunPtr (Ptr CommandBuffer_T -> ("pBindDescriptorSetsInfo" ::: Ptr (SomeStruct BindDescriptorSetsInfo)) -> IO ())
+  , pVkCmdPushConstants2 :: FunPtr (Ptr CommandBuffer_T -> ("pPushConstantsInfo" ::: Ptr (SomeStruct PushConstantsInfo)) -> IO ())
+  , pVkCmdPushDescriptorSet2 :: FunPtr (Ptr CommandBuffer_T -> ("pPushDescriptorSetInfo" ::: Ptr (SomeStruct PushDescriptorSetInfo)) -> IO ())
+  , pVkCmdPushDescriptorSetWithTemplate2 :: FunPtr (Ptr CommandBuffer_T -> ("pPushDescriptorSetWithTemplateInfo" ::: Ptr (SomeStruct PushDescriptorSetWithTemplateInfo)) -> IO ())
   , pVkCmdSetDescriptorBufferOffsets2EXT :: FunPtr (Ptr CommandBuffer_T -> ("pSetDescriptorBufferOffsetsInfo" ::: Ptr (SomeStruct SetDescriptorBufferOffsetsInfoEXT)) -> IO ())
   , pVkCmdBindDescriptorBufferEmbeddedSamplers2EXT :: FunPtr (Ptr CommandBuffer_T -> ("pBindDescriptorBufferEmbeddedSamplersInfo" ::: Ptr (SomeStruct BindDescriptorBufferEmbeddedSamplersInfoEXT)) -> IO ())
   , pVkSetLatencySleepModeNV :: FunPtr (Ptr Device_T -> SwapchainKHR -> ("pSleepModeInfo" ::: Ptr LatencySleepModeInfoNV) -> IO Result)
@@ -1387,9 +1529,78 @@
   , pVkSetLatencyMarkerNV :: FunPtr (Ptr Device_T -> SwapchainKHR -> ("pLatencyMarkerInfo" ::: Ptr SetLatencyMarkerInfoNV) -> IO ())
   , pVkGetLatencyTimingsNV :: FunPtr (Ptr Device_T -> SwapchainKHR -> ("pLatencyMarkerInfo" ::: Ptr GetLatencyMarkerInfoNV) -> IO ())
   , pVkQueueNotifyOutOfBandNV :: FunPtr (Ptr Queue_T -> ("pQueueTypeInfo" ::: Ptr OutOfBandQueueTypeInfoNV) -> IO ())
-  , pVkCmdSetRenderingAttachmentLocationsKHR :: FunPtr (Ptr CommandBuffer_T -> ("pLocationInfo" ::: Ptr RenderingAttachmentLocationInfoKHR) -> IO ())
-  , pVkCmdSetRenderingInputAttachmentIndicesKHR :: FunPtr (Ptr CommandBuffer_T -> ("pInputAttachmentIndexInfo" ::: Ptr RenderingInputAttachmentIndexInfoKHR) -> IO ())
+  , pVkCmdSetRenderingAttachmentLocations :: FunPtr (Ptr CommandBuffer_T -> ("pLocationInfo" ::: Ptr RenderingAttachmentLocationInfo) -> IO ())
+  , pVkCmdSetRenderingInputAttachmentIndices :: FunPtr (Ptr CommandBuffer_T -> ("pInputAttachmentIndexInfo" ::: Ptr RenderingInputAttachmentIndexInfo) -> IO ())
   , pVkCmdSetDepthClampRangeEXT :: FunPtr (Ptr CommandBuffer_T -> DepthClampModeEXT -> ("pDepthClampRange" ::: Ptr DepthClampRangeEXT) -> IO ())
+  , pVkGetMemoryMetalHandleEXT :: FunPtr (Ptr Device_T -> ("pGetMetalHandleInfo" ::: Ptr MemoryGetMetalHandleInfoEXT) -> ("pHandle" ::: Ptr (Ptr ())) -> IO Result)
+  , pVkGetMemoryMetalHandlePropertiesEXT :: FunPtr (Ptr Device_T -> ExternalMemoryHandleTypeFlagBits -> ("pHandle" ::: Ptr ()) -> ("pMemoryMetalHandleProperties" ::: Ptr MemoryMetalHandlePropertiesEXT) -> IO Result)
+  , pVkConvertCooperativeVectorMatrixNV :: FunPtr (Ptr Device_T -> ("pInfo" ::: Ptr ConvertCooperativeVectorMatrixInfoNV) -> IO Result)
+  , pVkCmdConvertCooperativeVectorMatrixNV :: FunPtr (Ptr CommandBuffer_T -> ("infoCount" ::: Word32) -> ("pInfos" ::: Ptr ConvertCooperativeVectorMatrixInfoNV) -> IO ())
+  , pVkCmdDispatchTileQCOM :: FunPtr (Ptr CommandBuffer_T -> ("pDispatchTileInfo" ::: Ptr DispatchTileInfoQCOM) -> IO ())
+  , pVkCmdBeginPerTileExecutionQCOM :: FunPtr (Ptr CommandBuffer_T -> ("pPerTileBeginInfo" ::: Ptr PerTileBeginInfoQCOM) -> IO ())
+  , pVkCmdEndPerTileExecutionQCOM :: FunPtr (Ptr CommandBuffer_T -> ("pPerTileEndInfo" ::: Ptr PerTileEndInfoQCOM) -> IO ())
+  , pVkCreateExternalComputeQueueNV :: FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr ExternalComputeQueueCreateInfoNV) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pExternalQueue" ::: Ptr (Ptr ExternalComputeQueueNV_T)) -> IO Result)
+  , pVkDestroyExternalComputeQueueNV :: FunPtr (Ptr Device_T -> ("externalQueue" ::: Ptr ExternalComputeQueueNV_T) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())
+  , pVkGetExternalComputeQueueDataNV :: FunPtr (("externalQueue" ::: Ptr ExternalComputeQueueNV_T) -> Ptr ExternalComputeQueueDataParamsNV -> ("pData" ::: Ptr ()) -> IO ())
+  , pVkCreateShaderInstrumentationARM :: FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr ShaderInstrumentationCreateInfoARM) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pInstrumentation" ::: Ptr ShaderInstrumentationARM) -> IO Result)
+  , pVkDestroyShaderInstrumentationARM :: FunPtr (Ptr Device_T -> ShaderInstrumentationARM -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())
+  , pVkCmdBeginShaderInstrumentationARM :: FunPtr (Ptr CommandBuffer_T -> ShaderInstrumentationARM -> IO ())
+  , pVkCmdEndShaderInstrumentationARM :: FunPtr (Ptr CommandBuffer_T -> IO ())
+  , pVkGetShaderInstrumentationValuesARM :: FunPtr (Ptr Device_T -> ShaderInstrumentationARM -> ("pMetricBlockCount" ::: Ptr Word32) -> ("pMetricValues" ::: Ptr ()) -> ShaderInstrumentationValuesFlagsARM -> IO Result)
+  , pVkClearShaderInstrumentationMetricsARM :: FunPtr (Ptr Device_T -> ShaderInstrumentationARM -> IO ())
+  , pVkCreateTensorARM :: FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr (SomeStruct TensorCreateInfoARM)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pTensor" ::: Ptr TensorARM) -> IO Result)
+  , pVkDestroyTensorARM :: FunPtr (Ptr Device_T -> TensorARM -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())
+  , pVkCreateTensorViewARM :: FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr (SomeStruct TensorViewCreateInfoARM)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pView" ::: Ptr TensorViewARM) -> IO Result)
+  , pVkDestroyTensorViewARM :: FunPtr (Ptr Device_T -> TensorViewARM -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())
+  , pVkGetTensorMemoryRequirementsARM :: FunPtr (Ptr Device_T -> ("pInfo" ::: Ptr TensorMemoryRequirementsInfoARM) -> ("pMemoryRequirements" ::: Ptr (SomeStruct MemoryRequirements2)) -> IO ())
+  , pVkBindTensorMemoryARM :: FunPtr (Ptr Device_T -> ("bindInfoCount" ::: Word32) -> ("pBindInfos" ::: Ptr BindTensorMemoryInfoARM) -> IO Result)
+  , pVkGetDeviceTensorMemoryRequirementsARM :: FunPtr (Ptr Device_T -> ("pInfo" ::: Ptr DeviceTensorMemoryRequirementsARM) -> ("pMemoryRequirements" ::: Ptr (SomeStruct MemoryRequirements2)) -> IO ())
+  , pVkCmdCopyTensorARM :: FunPtr (Ptr CommandBuffer_T -> ("pCopyTensorInfo" ::: Ptr CopyTensorInfoARM) -> IO ())
+  , pVkGetTensorOpaqueCaptureDescriptorDataARM :: FunPtr (Ptr Device_T -> ("pInfo" ::: Ptr TensorCaptureDescriptorDataInfoARM) -> ("pData" ::: Ptr ()) -> IO Result)
+  , pVkGetTensorViewOpaqueCaptureDescriptorDataARM :: FunPtr (Ptr Device_T -> ("pInfo" ::: Ptr TensorViewCaptureDescriptorDataInfoARM) -> ("pData" ::: Ptr ()) -> IO Result)
+  , pVkCreateDataGraphPipelinesARM :: FunPtr (Ptr Device_T -> DeferredOperationKHR -> PipelineCache -> ("createInfoCount" ::: Word32) -> ("pCreateInfos" ::: Ptr (SomeStruct DataGraphPipelineCreateInfoARM)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pPipelines" ::: Ptr Pipeline) -> IO Result)
+  , pVkCreateDataGraphPipelineSessionARM :: FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr (SomeStruct DataGraphPipelineSessionCreateInfoARM)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSession" ::: Ptr DataGraphPipelineSessionARM) -> IO Result)
+  , pVkGetDataGraphPipelineSessionBindPointRequirementsARM :: FunPtr (Ptr Device_T -> ("pInfo" ::: Ptr DataGraphPipelineSessionBindPointRequirementsInfoARM) -> ("pBindPointRequirementCount" ::: Ptr Word32) -> ("pBindPointRequirements" ::: Ptr DataGraphPipelineSessionBindPointRequirementARM) -> IO Result)
+  , pVkGetDataGraphPipelineSessionMemoryRequirementsARM :: FunPtr (Ptr Device_T -> ("pInfo" ::: Ptr DataGraphPipelineSessionMemoryRequirementsInfoARM) -> ("pMemoryRequirements" ::: Ptr (SomeStruct MemoryRequirements2)) -> IO ())
+  , pVkBindDataGraphPipelineSessionMemoryARM :: FunPtr (Ptr Device_T -> ("bindInfoCount" ::: Word32) -> ("pBindInfos" ::: Ptr BindDataGraphPipelineSessionMemoryInfoARM) -> IO Result)
+  , pVkDestroyDataGraphPipelineSessionARM :: FunPtr (Ptr Device_T -> DataGraphPipelineSessionARM -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())
+  , pVkCmdDispatchDataGraphARM :: FunPtr (Ptr CommandBuffer_T -> DataGraphPipelineSessionARM -> ("pInfo" ::: Ptr (SomeStruct DataGraphPipelineDispatchInfoARM)) -> IO ())
+  , pVkGetDataGraphPipelineAvailablePropertiesARM :: FunPtr (Ptr Device_T -> ("pPipelineInfo" ::: Ptr DataGraphPipelineInfoARM) -> ("pPropertiesCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr DataGraphPipelinePropertyARM) -> IO Result)
+  , pVkGetDataGraphPipelinePropertiesARM :: FunPtr (Ptr Device_T -> ("pPipelineInfo" ::: Ptr DataGraphPipelineInfoARM) -> ("propertiesCount" ::: Word32) -> ("pProperties" ::: Ptr DataGraphPipelinePropertyQueryResultARM) -> IO Result)
+  , pVkQueueSetPerfHintQCOM :: FunPtr (Ptr Queue_T -> ("pPerfHintInfo" ::: Ptr PerfHintInfoQCOM) -> IO Result)
+  , pVkCmdSetComputeOccupancyPriorityNV :: FunPtr (Ptr CommandBuffer_T -> ("pParameters" ::: Ptr ComputeOccupancyPriorityParametersNV) -> IO ())
+  , pVkWriteSamplerDescriptorsEXT :: FunPtr (Ptr Device_T -> ("samplerCount" ::: Word32) -> ("pSamplers" ::: Ptr (SomeStruct SamplerCreateInfo)) -> ("pDescriptors" ::: Ptr HostAddressRangeEXT) -> IO Result)
+  , pVkWriteResourceDescriptorsEXT :: FunPtr (Ptr Device_T -> ("resourceCount" ::: Word32) -> ("pResources" ::: Ptr (SomeStruct ResourceDescriptorInfoEXT)) -> ("pDescriptors" ::: Ptr HostAddressRangeEXT) -> IO Result)
+  , pVkCmdBindSamplerHeapEXT :: FunPtr (Ptr CommandBuffer_T -> ("pBindInfo" ::: Ptr BindHeapInfoEXT) -> IO ())
+  , pVkCmdBindResourceHeapEXT :: FunPtr (Ptr CommandBuffer_T -> ("pBindInfo" ::: Ptr BindHeapInfoEXT) -> IO ())
+  , pVkCmdPushDataEXT :: FunPtr (Ptr CommandBuffer_T -> ("pPushDataInfo" ::: Ptr (SomeStruct PushDataInfoEXT)) -> IO ())
+  , pVkRegisterCustomBorderColorEXT :: FunPtr (Ptr Device_T -> ("pBorderColor" ::: Ptr SamplerCustomBorderColorCreateInfoEXT) -> ("requestIndex" ::: Bool32) -> ("pIndex" ::: Ptr Word32) -> IO Result)
+  , pVkUnregisterCustomBorderColorEXT :: FunPtr (Ptr Device_T -> ("index" ::: Word32) -> IO ())
+  , pVkGetImageOpaqueCaptureDataEXT :: FunPtr (Ptr Device_T -> ("imageCount" ::: Word32) -> ("pImages" ::: Ptr Image) -> ("pDatas" ::: Ptr HostAddressRangeEXT) -> IO Result)
+  , pVkGetTensorOpaqueCaptureDataARM :: FunPtr (Ptr Device_T -> ("tensorCount" ::: Word32) -> ("pTensors" ::: Ptr TensorARM) -> ("pDatas" ::: Ptr HostAddressRangeEXT) -> IO Result)
+  , pVkCmdCopyMemoryKHR :: FunPtr (Ptr CommandBuffer_T -> ("pCopyMemoryInfo" ::: Ptr CopyDeviceMemoryInfoKHR) -> IO ())
+  , pVkCmdCopyMemoryToImageKHR :: FunPtr (Ptr CommandBuffer_T -> ("pCopyMemoryInfo" ::: Ptr CopyDeviceMemoryImageInfoKHR) -> IO ())
+  , pVkCmdCopyImageToMemoryKHR :: FunPtr (Ptr CommandBuffer_T -> ("pCopyMemoryInfo" ::: Ptr CopyDeviceMemoryImageInfoKHR) -> IO ())
+  , pVkCmdUpdateMemoryKHR :: FunPtr (Ptr CommandBuffer_T -> ("pDstRange" ::: Ptr DeviceAddressRangeKHR) -> ("dstFlags" ::: AddressCommandFlagsKHR) -> ("dataSize" ::: DeviceSize) -> ("pData" ::: Ptr ()) -> IO ())
+  , pVkCmdFillMemoryKHR :: FunPtr (Ptr CommandBuffer_T -> ("pDstRange" ::: Ptr DeviceAddressRangeKHR) -> ("dstFlags" ::: AddressCommandFlagsKHR) -> ("data" ::: Word32) -> IO ())
+  , pVkCmdCopyQueryPoolResultsToMemoryKHR :: FunPtr (Ptr CommandBuffer_T -> QueryPool -> ("firstQuery" ::: Word32) -> ("queryCount" ::: Word32) -> ("pDstRange" ::: Ptr StridedDeviceAddressRangeKHR) -> ("dstFlags" ::: AddressCommandFlagsKHR) -> QueryResultFlags -> IO ())
+  , pVkCmdBeginConditionalRendering2EXT :: FunPtr (Ptr CommandBuffer_T -> ("pConditionalRenderingBegin" ::: Ptr ConditionalRenderingBeginInfo2EXT) -> IO ())
+  , pVkCmdBindTransformFeedbackBuffers2EXT :: FunPtr (Ptr CommandBuffer_T -> ("firstBinding" ::: Word32) -> ("bindingCount" ::: Word32) -> ("pBindingInfos" ::: Ptr BindTransformFeedbackBuffer2InfoEXT) -> IO ())
+  , pVkCmdBeginTransformFeedback2EXT :: FunPtr (Ptr CommandBuffer_T -> ("firstCounterRange" ::: Word32) -> ("counterRangeCount" ::: Word32) -> ("pCounterInfos" ::: Ptr BindTransformFeedbackBuffer2InfoEXT) -> IO ())
+  , pVkCmdEndTransformFeedback2EXT :: FunPtr (Ptr CommandBuffer_T -> ("firstCounterRange" ::: Word32) -> ("counterRangeCount" ::: Word32) -> ("pCounterInfos" ::: Ptr BindTransformFeedbackBuffer2InfoEXT) -> IO ())
+  , pVkCmdDrawIndirectByteCount2EXT :: FunPtr (Ptr CommandBuffer_T -> ("instanceCount" ::: Word32) -> ("firstInstance" ::: Word32) -> ("pCounterInfo" ::: Ptr BindTransformFeedbackBuffer2InfoEXT) -> ("counterOffset" ::: Word32) -> ("vertexStride" ::: Word32) -> IO ())
+  , pVkCmdWriteMarkerToMemoryAMD :: FunPtr (Ptr CommandBuffer_T -> ("pInfo" ::: Ptr MemoryMarkerInfoAMD) -> IO ())
+  , pVkCmdBindIndexBuffer3KHR :: FunPtr (Ptr CommandBuffer_T -> ("pInfo" ::: Ptr BindIndexBuffer3InfoKHR) -> IO ())
+  , pVkCmdBindVertexBuffers3KHR :: FunPtr (Ptr CommandBuffer_T -> ("firstBinding" ::: Word32) -> ("bindingCount" ::: Word32) -> ("pBindingInfos" ::: Ptr BindVertexBuffer3InfoKHR) -> IO ())
+  , pVkCmdDrawIndirect2KHR :: FunPtr (Ptr CommandBuffer_T -> ("pInfo" ::: Ptr DrawIndirect2InfoKHR) -> IO ())
+  , pVkCmdDrawIndexedIndirect2KHR :: FunPtr (Ptr CommandBuffer_T -> ("pInfo" ::: Ptr DrawIndirect2InfoKHR) -> IO ())
+  , pVkCmdDrawIndirectCount2KHR :: FunPtr (Ptr CommandBuffer_T -> ("pInfo" ::: Ptr DrawIndirectCount2InfoKHR) -> IO ())
+  , pVkCmdDrawIndexedIndirectCount2KHR :: FunPtr (Ptr CommandBuffer_T -> ("pInfo" ::: Ptr DrawIndirectCount2InfoKHR) -> IO ())
+  , pVkCmdDrawMeshTasksIndirect2EXT :: FunPtr (Ptr CommandBuffer_T -> ("pInfo" ::: Ptr DrawIndirect2InfoKHR) -> IO ())
+  , pVkCmdDrawMeshTasksIndirectCount2EXT :: FunPtr (Ptr CommandBuffer_T -> ("pInfo" ::: Ptr DrawIndirectCount2InfoKHR) -> IO ())
+  , pVkCmdDispatchIndirect2KHR :: FunPtr (Ptr CommandBuffer_T -> ("pInfo" ::: Ptr DispatchIndirect2InfoKHR) -> IO ())
+  , pVkCreateAccelerationStructure2KHR :: FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr (SomeStruct AccelerationStructureCreateInfo2KHR)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pAccelerationStructure" ::: Ptr AccelerationStructureKHR) -> IO Result)
+  , pVkCmdSetDispatchParametersARM :: FunPtr (Ptr CommandBuffer_T -> ("pDispatchParameters" ::: Ptr DispatchParametersARM) -> IO ())
   }
 
 deriving instance Eq DeviceCmds
@@ -1901,6 +2112,102 @@
     nullFunPtr
     nullFunPtr
     nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr
+    nullFunPtr nullFunPtr
 
 foreign import ccall
 #if !defined(SAFE_FOREIGN_CALLS)
@@ -1998,7 +2305,8 @@
   vkCreateRenderPass <- getDeviceProcAddr' handle (Ptr "vkCreateRenderPass"#)
   vkDestroyRenderPass <- getDeviceProcAddr' handle (Ptr "vkDestroyRenderPass"#)
   vkGetRenderAreaGranularity <- getDeviceProcAddr' handle (Ptr "vkGetRenderAreaGranularity"#)
-  vkGetRenderingAreaGranularityKHR <- getDeviceProcAddr' handle (Ptr "vkGetRenderingAreaGranularityKHR"#)
+  vkGetRenderingAreaGranularity <- getFirstDeviceProcAddr [ (Ptr "vkGetRenderingAreaGranularityKHR"#)
+                                                          , (Ptr "vkGetRenderingAreaGranularity"#) ]
   vkCreateCommandPool <- getDeviceProcAddr' handle (Ptr "vkCreateCommandPool"#)
   vkDestroyCommandPool <- getDeviceProcAddr' handle (Ptr "vkDestroyCommandPool"#)
   vkResetCommandPool <- getDeviceProcAddr' handle (Ptr "vkResetCommandPool"#)
@@ -2008,6 +2316,7 @@
   vkEndCommandBuffer <- getDeviceProcAddr' handle (Ptr "vkEndCommandBuffer"#)
   vkResetCommandBuffer <- getDeviceProcAddr' handle (Ptr "vkResetCommandBuffer"#)
   vkCmdBindPipeline <- getDeviceProcAddr' handle (Ptr "vkCmdBindPipeline"#)
+  vkCmdSetPrimitiveRestartIndexEXT <- getDeviceProcAddr' handle (Ptr "vkCmdSetPrimitiveRestartIndexEXT"#)
   vkCmdSetAttachmentFeedbackLoopEnableEXT <- getDeviceProcAddr' handle (Ptr "vkCmdSetAttachmentFeedbackLoopEnableEXT"#)
   vkCmdSetViewport <- getDeviceProcAddr' handle (Ptr "vkCmdSetViewport"#)
   vkCmdSetScissor <- getDeviceProcAddr' handle (Ptr "vkCmdSetScissor"#)
@@ -2039,7 +2348,9 @@
   vkCmdCopyBufferToImage <- getDeviceProcAddr' handle (Ptr "vkCmdCopyBufferToImage"#)
   vkCmdCopyImageToBuffer <- getDeviceProcAddr' handle (Ptr "vkCmdCopyImageToBuffer"#)
   vkCmdCopyMemoryIndirectNV <- getDeviceProcAddr' handle (Ptr "vkCmdCopyMemoryIndirectNV"#)
+  vkCmdCopyMemoryIndirectKHR <- getDeviceProcAddr' handle (Ptr "vkCmdCopyMemoryIndirectKHR"#)
   vkCmdCopyMemoryToImageIndirectNV <- getDeviceProcAddr' handle (Ptr "vkCmdCopyMemoryToImageIndirectNV"#)
+  vkCmdCopyMemoryToImageIndirectKHR <- getDeviceProcAddr' handle (Ptr "vkCmdCopyMemoryToImageIndirectKHR"#)
   vkCmdUpdateBuffer <- getDeviceProcAddr' handle (Ptr "vkCmdUpdateBuffer"#)
   vkCmdFillBuffer <- getDeviceProcAddr' handle (Ptr "vkCmdFillBuffer"#)
   vkCmdClearColorImage <- getDeviceProcAddr' handle (Ptr "vkCmdClearColorImage"#)
@@ -2054,6 +2365,7 @@
   vkCmdEndQuery <- getDeviceProcAddr' handle (Ptr "vkCmdEndQuery"#)
   vkCmdBeginConditionalRenderingEXT <- getDeviceProcAddr' handle (Ptr "vkCmdBeginConditionalRenderingEXT"#)
   vkCmdEndConditionalRenderingEXT <- getDeviceProcAddr' handle (Ptr "vkCmdEndConditionalRenderingEXT"#)
+  vkCmdBeginCustomResolveEXT <- getDeviceProcAddr' handle (Ptr "vkCmdBeginCustomResolveEXT"#)
   vkCmdResetQueryPool <- getDeviceProcAddr' handle (Ptr "vkCmdResetQueryPool"#)
   vkCmdWriteTimestamp <- getDeviceProcAddr' handle (Ptr "vkCmdWriteTimestamp"#)
   vkCmdCopyQueryPoolResults <- getDeviceProcAddr' handle (Ptr "vkCmdCopyQueryPoolResults"#)
@@ -2089,7 +2401,8 @@
   vkDestroyIndirectExecutionSetEXT <- getDeviceProcAddr' handle (Ptr "vkDestroyIndirectExecutionSetEXT"#)
   vkUpdateIndirectExecutionSetPipelineEXT <- getDeviceProcAddr' handle (Ptr "vkUpdateIndirectExecutionSetPipelineEXT"#)
   vkUpdateIndirectExecutionSetShaderEXT <- getDeviceProcAddr' handle (Ptr "vkUpdateIndirectExecutionSetShaderEXT"#)
-  vkCmdPushDescriptorSetKHR <- getDeviceProcAddr' handle (Ptr "vkCmdPushDescriptorSetKHR"#)
+  vkCmdPushDescriptorSet <- getFirstDeviceProcAddr [ (Ptr "vkCmdPushDescriptorSetKHR"#)
+                                                   , (Ptr "vkCmdPushDescriptorSet"#) ]
   vkTrimCommandPool <- getFirstDeviceProcAddr [ (Ptr "vkTrimCommandPoolKHR"#)
                                               , (Ptr "vkTrimCommandPool"#) ]
   vkGetMemoryWin32HandleKHR <- getDeviceProcAddr' handle (Ptr "vkGetMemoryWin32HandleKHR"#)
@@ -2132,7 +2445,8 @@
                                                               , (Ptr "vkDestroyDescriptorUpdateTemplate"#) ]
   vkUpdateDescriptorSetWithTemplate <- getFirstDeviceProcAddr [ (Ptr "vkUpdateDescriptorSetWithTemplateKHR"#)
                                                               , (Ptr "vkUpdateDescriptorSetWithTemplate"#) ]
-  vkCmdPushDescriptorSetWithTemplateKHR <- getDeviceProcAddr' handle (Ptr "vkCmdPushDescriptorSetWithTemplateKHR"#)
+  vkCmdPushDescriptorSetWithTemplate <- getFirstDeviceProcAddr [ (Ptr "vkCmdPushDescriptorSetWithTemplateKHR"#)
+                                                               , (Ptr "vkCmdPushDescriptorSetWithTemplate"#) ]
   vkSetHdrMetadataEXT <- getDeviceProcAddr' handle (Ptr "vkSetHdrMetadataEXT"#)
   vkGetSwapchainStatusKHR <- getDeviceProcAddr' handle (Ptr "vkGetSwapchainStatusKHR"#)
   vkGetRefreshCycleDurationGOOGLE <- getDeviceProcAddr' handle (Ptr "vkGetRefreshCycleDurationGOOGLE"#)
@@ -2254,6 +2568,7 @@
   vkGetImageViewHandleNVX <- getDeviceProcAddr' handle (Ptr "vkGetImageViewHandleNVX"#)
   vkGetImageViewHandle64NVX <- getDeviceProcAddr' handle (Ptr "vkGetImageViewHandle64NVX"#)
   vkGetImageViewAddressNVX <- getDeviceProcAddr' handle (Ptr "vkGetImageViewAddressNVX"#)
+  vkGetDeviceCombinedImageSamplerIndexNVX <- getDeviceProcAddr' handle (Ptr "vkGetDeviceCombinedImageSamplerIndexNVX"#)
   vkGetDeviceGroupSurfacePresentModes2EXT <- getDeviceProcAddr' handle (Ptr "vkGetDeviceGroupSurfacePresentModes2EXT"#)
   vkAcquireFullScreenExclusiveModeEXT <- getDeviceProcAddr' handle (Ptr "vkAcquireFullScreenExclusiveModeEXT"#)
   vkReleaseFullScreenExclusiveModeEXT <- getDeviceProcAddr' handle (Ptr "vkReleaseFullScreenExclusiveModeEXT"#)
@@ -2279,8 +2594,9 @@
   vkGetPipelineExecutablePropertiesKHR <- getDeviceProcAddr' handle (Ptr "vkGetPipelineExecutablePropertiesKHR"#)
   vkGetPipelineExecutableStatisticsKHR <- getDeviceProcAddr' handle (Ptr "vkGetPipelineExecutableStatisticsKHR"#)
   vkGetPipelineExecutableInternalRepresentationsKHR <- getDeviceProcAddr' handle (Ptr "vkGetPipelineExecutableInternalRepresentationsKHR"#)
-  vkCmdSetLineStippleKHR <- getFirstDeviceProcAddr [ (Ptr "vkCmdSetLineStippleEXT"#)
-                                                   , (Ptr "vkCmdSetLineStippleKHR"#) ]
+  vkCmdSetLineStipple <- getFirstDeviceProcAddr [ (Ptr "vkCmdSetLineStippleEXT"#)
+                                                , (Ptr "vkCmdSetLineStippleKHR"#)
+                                                , (Ptr "vkCmdSetLineStipple"#) ]
   vkCreateAccelerationStructureKHR <- getDeviceProcAddr' handle (Ptr "vkCreateAccelerationStructureKHR"#)
   vkCmdBuildAccelerationStructuresKHR <- getDeviceProcAddr' handle (Ptr "vkCmdBuildAccelerationStructuresKHR"#)
   vkCmdBuildAccelerationStructuresIndirectKHR <- getDeviceProcAddr' handle (Ptr "vkCmdBuildAccelerationStructuresIndirectKHR"#)
@@ -2304,7 +2620,8 @@
                                                       , (Ptr "vkCmdSetViewportWithCount"#) ]
   vkCmdSetScissorWithCount <- getFirstDeviceProcAddr [ (Ptr "vkCmdSetScissorWithCountEXT"#)
                                                      , (Ptr "vkCmdSetScissorWithCount"#) ]
-  vkCmdBindIndexBuffer2KHR <- getDeviceProcAddr' handle (Ptr "vkCmdBindIndexBuffer2KHR"#)
+  vkCmdBindIndexBuffer2 <- getFirstDeviceProcAddr [ (Ptr "vkCmdBindIndexBuffer2KHR"#)
+                                                  , (Ptr "vkCmdBindIndexBuffer2"#) ]
   vkCmdBindVertexBuffers2 <- getFirstDeviceProcAddr [ (Ptr "vkCmdBindVertexBuffers2EXT"#)
                                                     , (Ptr "vkCmdBindVertexBuffers2"#) ]
   vkCmdSetDepthTestEnable <- getFirstDeviceProcAddr [ (Ptr "vkCmdSetDepthTestEnableEXT"#)
@@ -2397,12 +2714,18 @@
                                                  , (Ptr "vkCmdWriteTimestamp2"#) ]
   vkCmdWriteBufferMarker2AMD <- getDeviceProcAddr' handle (Ptr "vkCmdWriteBufferMarker2AMD"#)
   vkGetQueueCheckpointData2NV <- getDeviceProcAddr' handle (Ptr "vkGetQueueCheckpointData2NV"#)
-  vkCopyMemoryToImageEXT <- getDeviceProcAddr' handle (Ptr "vkCopyMemoryToImageEXT"#)
-  vkCopyImageToMemoryEXT <- getDeviceProcAddr' handle (Ptr "vkCopyImageToMemoryEXT"#)
-  vkCopyImageToImageEXT <- getDeviceProcAddr' handle (Ptr "vkCopyImageToImageEXT"#)
-  vkTransitionImageLayoutEXT <- getDeviceProcAddr' handle (Ptr "vkTransitionImageLayoutEXT"#)
+  vkCopyMemoryToImage <- getFirstDeviceProcAddr [ (Ptr "vkCopyMemoryToImageEXT"#)
+                                                , (Ptr "vkCopyMemoryToImage"#) ]
+  vkCopyImageToMemory <- getFirstDeviceProcAddr [ (Ptr "vkCopyImageToMemoryEXT"#)
+                                                , (Ptr "vkCopyImageToMemory"#) ]
+  vkCopyImageToImage <- getFirstDeviceProcAddr [ (Ptr "vkCopyImageToImageEXT"#)
+                                               , (Ptr "vkCopyImageToImage"#) ]
+  vkTransitionImageLayout <- getFirstDeviceProcAddr [ (Ptr "vkTransitionImageLayoutEXT"#)
+                                                    , (Ptr "vkTransitionImageLayout"#) ]
   vkCmdDecompressMemoryNV <- getDeviceProcAddr' handle (Ptr "vkCmdDecompressMemoryNV"#)
   vkCmdDecompressMemoryIndirectCountNV <- getDeviceProcAddr' handle (Ptr "vkCmdDecompressMemoryIndirectCountNV"#)
+  vkCmdDecompressMemoryEXT <- getDeviceProcAddr' handle (Ptr "vkCmdDecompressMemoryEXT"#)
+  vkCmdDecompressMemoryIndirectCountEXT <- getDeviceProcAddr' handle (Ptr "vkCmdDecompressMemoryIndirectCountEXT"#)
   vkCreateCuModuleNVX <- getDeviceProcAddr' handle (Ptr "vkCreateCuModuleNVX"#)
   vkCreateCuFunctionNVX <- getDeviceProcAddr' handle (Ptr "vkCreateCuFunctionNVX"#)
   vkDestroyCuModuleNVX <- getDeviceProcAddr' handle (Ptr "vkDestroyCuModuleNVX"#)
@@ -2420,6 +2743,7 @@
   vkGetSamplerOpaqueCaptureDescriptorDataEXT <- getDeviceProcAddr' handle (Ptr "vkGetSamplerOpaqueCaptureDescriptorDataEXT"#)
   vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT <- getDeviceProcAddr' handle (Ptr "vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT"#)
   vkSetDeviceMemoryPriorityEXT <- getDeviceProcAddr' handle (Ptr "vkSetDeviceMemoryPriorityEXT"#)
+  vkWaitForPresent2KHR <- getDeviceProcAddr' handle (Ptr "vkWaitForPresent2KHR"#)
   vkWaitForPresentKHR <- getDeviceProcAddr' handle (Ptr "vkWaitForPresentKHR"#)
   vkCreateBufferCollectionFUCHSIA <- getDeviceProcAddr' handle (Ptr "vkCreateBufferCollectionFUCHSIA"#)
   vkSetBufferCollectionBufferConstraintsFUCHSIA <- getDeviceProcAddr' handle (Ptr "vkSetBufferCollectionBufferConstraintsFUCHSIA"#)
@@ -2436,6 +2760,8 @@
                                                 , (Ptr "vkCmdBeginRendering"#) ]
   vkCmdEndRendering <- getFirstDeviceProcAddr [ (Ptr "vkCmdEndRenderingKHR"#)
                                               , (Ptr "vkCmdEndRendering"#) ]
+  vkCmdEndRendering2KHR <- getFirstDeviceProcAddr [ (Ptr "vkCmdEndRendering2EXT"#)
+                                                  , (Ptr "vkCmdEndRendering2KHR"#) ]
   vkGetDescriptorSetLayoutHostMappingInfoVALVE <- getDeviceProcAddr' handle (Ptr "vkGetDescriptorSetLayoutHostMappingInfoVALVE"#)
   vkGetDescriptorSetHostMappingVALVE <- getDeviceProcAddr' handle (Ptr "vkGetDescriptorSetHostMappingVALVE"#)
   vkCreateMicromapEXT <- getDeviceProcAddr' handle (Ptr "vkCreateMicromapEXT"#)
@@ -2454,10 +2780,12 @@
   vkGetMicromapBuildSizesEXT <- getDeviceProcAddr' handle (Ptr "vkGetMicromapBuildSizesEXT"#)
   vkGetShaderModuleIdentifierEXT <- getDeviceProcAddr' handle (Ptr "vkGetShaderModuleIdentifierEXT"#)
   vkGetShaderModuleCreateInfoIdentifierEXT <- getDeviceProcAddr' handle (Ptr "vkGetShaderModuleCreateInfoIdentifierEXT"#)
-  vkGetImageSubresourceLayout2KHR <- getFirstDeviceProcAddr [ (Ptr "vkGetImageSubresourceLayout2EXT"#)
-                                                            , (Ptr "vkGetImageSubresourceLayout2KHR"#) ]
+  vkGetImageSubresourceLayout2 <- getFirstDeviceProcAddr [ (Ptr "vkGetImageSubresourceLayout2EXT"#)
+                                                         , (Ptr "vkGetImageSubresourceLayout2KHR"#)
+                                                         , (Ptr "vkGetImageSubresourceLayout2"#) ]
   vkGetPipelinePropertiesEXT <- getDeviceProcAddr' handle (Ptr "vkGetPipelinePropertiesEXT"#)
   vkExportMetalObjectsEXT <- getDeviceProcAddr' handle (Ptr "vkExportMetalObjectsEXT"#)
+  vkCmdBindTileMemoryQCOM <- getDeviceProcAddr' handle (Ptr "vkCmdBindTileMemoryQCOM"#)
   vkGetFramebufferTilePropertiesQCOM <- getDeviceProcAddr' handle (Ptr "vkGetFramebufferTilePropertiesQCOM"#)
   vkGetDynamicRenderingTilePropertiesQCOM <- getDeviceProcAddr' handle (Ptr "vkGetDynamicRenderingTilePropertiesQCOM"#)
   vkCreateOpticalFlowSessionNV <- getDeviceProcAddr' handle (Ptr "vkCreateOpticalFlowSessionNV"#)
@@ -2465,15 +2793,25 @@
   vkBindOpticalFlowSessionImageNV <- getDeviceProcAddr' handle (Ptr "vkBindOpticalFlowSessionImageNV"#)
   vkCmdOpticalFlowExecuteNV <- getDeviceProcAddr' handle (Ptr "vkCmdOpticalFlowExecuteNV"#)
   vkGetDeviceFaultInfoEXT <- getDeviceProcAddr' handle (Ptr "vkGetDeviceFaultInfoEXT"#)
+  vkGetDeviceFaultReportsKHR <- getDeviceProcAddr' handle (Ptr "vkGetDeviceFaultReportsKHR"#)
+  vkGetDeviceFaultDebugInfoKHR <- getDeviceProcAddr' handle (Ptr "vkGetDeviceFaultDebugInfoKHR"#)
   vkCmdSetDepthBias2EXT <- getDeviceProcAddr' handle (Ptr "vkCmdSetDepthBias2EXT"#)
-  vkReleaseSwapchainImagesEXT <- getDeviceProcAddr' handle (Ptr "vkReleaseSwapchainImagesEXT"#)
-  vkGetDeviceImageSubresourceLayoutKHR <- getDeviceProcAddr' handle (Ptr "vkGetDeviceImageSubresourceLayoutKHR"#)
-  vkMapMemory2KHR <- getDeviceProcAddr' handle (Ptr "vkMapMemory2KHR"#)
-  vkUnmapMemory2KHR <- getDeviceProcAddr' handle (Ptr "vkUnmapMemory2KHR"#)
+  vkReleaseSwapchainImagesKHR <- getFirstDeviceProcAddr [ (Ptr "vkReleaseSwapchainImagesEXT"#)
+                                                        , (Ptr "vkReleaseSwapchainImagesKHR"#) ]
+  vkGetDeviceImageSubresourceLayout <- getFirstDeviceProcAddr [ (Ptr "vkGetDeviceImageSubresourceLayoutKHR"#)
+                                                              , (Ptr "vkGetDeviceImageSubresourceLayout"#) ]
+  vkMapMemory2 <- getFirstDeviceProcAddr [ (Ptr "vkMapMemory2KHR"#)
+                                         , (Ptr "vkMapMemory2"#) ]
+  vkUnmapMemory2 <- getFirstDeviceProcAddr [ (Ptr "vkUnmapMemory2KHR"#)
+                                           , (Ptr "vkUnmapMemory2"#) ]
   vkCreateShadersEXT <- getDeviceProcAddr' handle (Ptr "vkCreateShadersEXT"#)
   vkDestroyShaderEXT <- getDeviceProcAddr' handle (Ptr "vkDestroyShaderEXT"#)
   vkGetShaderBinaryDataEXT <- getDeviceProcAddr' handle (Ptr "vkGetShaderBinaryDataEXT"#)
   vkCmdBindShadersEXT <- getDeviceProcAddr' handle (Ptr "vkCmdBindShadersEXT"#)
+  vkSetSwapchainPresentTimingQueueSizeEXT <- getDeviceProcAddr' handle (Ptr "vkSetSwapchainPresentTimingQueueSizeEXT"#)
+  vkGetSwapchainTimingPropertiesEXT <- getDeviceProcAddr' handle (Ptr "vkGetSwapchainTimingPropertiesEXT"#)
+  vkGetSwapchainTimeDomainPropertiesEXT <- getDeviceProcAddr' handle (Ptr "vkGetSwapchainTimeDomainPropertiesEXT"#)
+  vkGetPastPresentationTimingEXT <- getDeviceProcAddr' handle (Ptr "vkGetPastPresentationTimingEXT"#)
   vkGetScreenBufferPropertiesQNX <- getDeviceProcAddr' handle (Ptr "vkGetScreenBufferPropertiesQNX"#)
   vkGetExecutionGraphPipelineScratchSizeAMDX <- getDeviceProcAddr' handle (Ptr "vkGetExecutionGraphPipelineScratchSizeAMDX"#)
   vkGetExecutionGraphPipelineNodeIndexAMDX <- getDeviceProcAddr' handle (Ptr "vkGetExecutionGraphPipelineNodeIndexAMDX"#)
@@ -2482,10 +2820,26 @@
   vkCmdDispatchGraphAMDX <- getDeviceProcAddr' handle (Ptr "vkCmdDispatchGraphAMDX"#)
   vkCmdDispatchGraphIndirectAMDX <- getDeviceProcAddr' handle (Ptr "vkCmdDispatchGraphIndirectAMDX"#)
   vkCmdDispatchGraphIndirectCountAMDX <- getDeviceProcAddr' handle (Ptr "vkCmdDispatchGraphIndirectCountAMDX"#)
-  vkCmdBindDescriptorSets2KHR <- getDeviceProcAddr' handle (Ptr "vkCmdBindDescriptorSets2KHR"#)
-  vkCmdPushConstants2KHR <- getDeviceProcAddr' handle (Ptr "vkCmdPushConstants2KHR"#)
-  vkCmdPushDescriptorSet2KHR <- getDeviceProcAddr' handle (Ptr "vkCmdPushDescriptorSet2KHR"#)
-  vkCmdPushDescriptorSetWithTemplate2KHR <- getDeviceProcAddr' handle (Ptr "vkCmdPushDescriptorSetWithTemplate2KHR"#)
+  vkCreateGpaSessionAMD <- getDeviceProcAddr' handle (Ptr "vkCreateGpaSessionAMD"#)
+  vkDestroyGpaSessionAMD <- getDeviceProcAddr' handle (Ptr "vkDestroyGpaSessionAMD"#)
+  vkSetGpaDeviceClockModeAMD <- getDeviceProcAddr' handle (Ptr "vkSetGpaDeviceClockModeAMD"#)
+  vkGetGpaDeviceClockInfoAMD <- getDeviceProcAddr' handle (Ptr "vkGetGpaDeviceClockInfoAMD"#)
+  vkCmdBeginGpaSessionAMD <- getDeviceProcAddr' handle (Ptr "vkCmdBeginGpaSessionAMD"#)
+  vkCmdEndGpaSessionAMD <- getDeviceProcAddr' handle (Ptr "vkCmdEndGpaSessionAMD"#)
+  vkCmdBeginGpaSampleAMD <- getDeviceProcAddr' handle (Ptr "vkCmdBeginGpaSampleAMD"#)
+  vkCmdEndGpaSampleAMD <- getDeviceProcAddr' handle (Ptr "vkCmdEndGpaSampleAMD"#)
+  vkGetGpaSessionStatusAMD <- getDeviceProcAddr' handle (Ptr "vkGetGpaSessionStatusAMD"#)
+  vkGetGpaSessionResultsAMD <- getDeviceProcAddr' handle (Ptr "vkGetGpaSessionResultsAMD"#)
+  vkResetGpaSessionAMD <- getDeviceProcAddr' handle (Ptr "vkResetGpaSessionAMD"#)
+  vkCmdCopyGpaSessionResultsAMD <- getDeviceProcAddr' handle (Ptr "vkCmdCopyGpaSessionResultsAMD"#)
+  vkCmdBindDescriptorSets2 <- getFirstDeviceProcAddr [ (Ptr "vkCmdBindDescriptorSets2KHR"#)
+                                                     , (Ptr "vkCmdBindDescriptorSets2"#) ]
+  vkCmdPushConstants2 <- getFirstDeviceProcAddr [ (Ptr "vkCmdPushConstants2KHR"#)
+                                                , (Ptr "vkCmdPushConstants2"#) ]
+  vkCmdPushDescriptorSet2 <- getFirstDeviceProcAddr [ (Ptr "vkCmdPushDescriptorSet2KHR"#)
+                                                    , (Ptr "vkCmdPushDescriptorSet2"#) ]
+  vkCmdPushDescriptorSetWithTemplate2 <- getFirstDeviceProcAddr [ (Ptr "vkCmdPushDescriptorSetWithTemplate2KHR"#)
+                                                                , (Ptr "vkCmdPushDescriptorSetWithTemplate2"#) ]
   vkCmdSetDescriptorBufferOffsets2EXT <- getDeviceProcAddr' handle (Ptr "vkCmdSetDescriptorBufferOffsets2EXT"#)
   vkCmdBindDescriptorBufferEmbeddedSamplers2EXT <- getDeviceProcAddr' handle (Ptr "vkCmdBindDescriptorBufferEmbeddedSamplers2EXT"#)
   vkSetLatencySleepModeNV <- getDeviceProcAddr' handle (Ptr "vkSetLatencySleepModeNV"#)
@@ -2493,9 +2847,80 @@
   vkSetLatencyMarkerNV <- getDeviceProcAddr' handle (Ptr "vkSetLatencyMarkerNV"#)
   vkGetLatencyTimingsNV <- getDeviceProcAddr' handle (Ptr "vkGetLatencyTimingsNV"#)
   vkQueueNotifyOutOfBandNV <- getDeviceProcAddr' handle (Ptr "vkQueueNotifyOutOfBandNV"#)
-  vkCmdSetRenderingAttachmentLocationsKHR <- getDeviceProcAddr' handle (Ptr "vkCmdSetRenderingAttachmentLocationsKHR"#)
-  vkCmdSetRenderingInputAttachmentIndicesKHR <- getDeviceProcAddr' handle (Ptr "vkCmdSetRenderingInputAttachmentIndicesKHR"#)
+  vkCmdSetRenderingAttachmentLocations <- getFirstDeviceProcAddr [ (Ptr "vkCmdSetRenderingAttachmentLocationsKHR"#)
+                                                                 , (Ptr "vkCmdSetRenderingAttachmentLocations"#) ]
+  vkCmdSetRenderingInputAttachmentIndices <- getFirstDeviceProcAddr [ (Ptr "vkCmdSetRenderingInputAttachmentIndicesKHR"#)
+                                                                    , (Ptr "vkCmdSetRenderingInputAttachmentIndices"#) ]
   vkCmdSetDepthClampRangeEXT <- getDeviceProcAddr' handle (Ptr "vkCmdSetDepthClampRangeEXT"#)
+  vkGetMemoryMetalHandleEXT <- getDeviceProcAddr' handle (Ptr "vkGetMemoryMetalHandleEXT"#)
+  vkGetMemoryMetalHandlePropertiesEXT <- getDeviceProcAddr' handle (Ptr "vkGetMemoryMetalHandlePropertiesEXT"#)
+  vkConvertCooperativeVectorMatrixNV <- getDeviceProcAddr' handle (Ptr "vkConvertCooperativeVectorMatrixNV"#)
+  vkCmdConvertCooperativeVectorMatrixNV <- getDeviceProcAddr' handle (Ptr "vkCmdConvertCooperativeVectorMatrixNV"#)
+  vkCmdDispatchTileQCOM <- getDeviceProcAddr' handle (Ptr "vkCmdDispatchTileQCOM"#)
+  vkCmdBeginPerTileExecutionQCOM <- getDeviceProcAddr' handle (Ptr "vkCmdBeginPerTileExecutionQCOM"#)
+  vkCmdEndPerTileExecutionQCOM <- getDeviceProcAddr' handle (Ptr "vkCmdEndPerTileExecutionQCOM"#)
+  vkCreateExternalComputeQueueNV <- getDeviceProcAddr' handle (Ptr "vkCreateExternalComputeQueueNV"#)
+  vkDestroyExternalComputeQueueNV <- getDeviceProcAddr' handle (Ptr "vkDestroyExternalComputeQueueNV"#)
+  vkGetExternalComputeQueueDataNV <- getDeviceProcAddr' handle (Ptr "vkGetExternalComputeQueueDataNV"#)
+  vkCreateShaderInstrumentationARM <- getDeviceProcAddr' handle (Ptr "vkCreateShaderInstrumentationARM"#)
+  vkDestroyShaderInstrumentationARM <- getDeviceProcAddr' handle (Ptr "vkDestroyShaderInstrumentationARM"#)
+  vkCmdBeginShaderInstrumentationARM <- getDeviceProcAddr' handle (Ptr "vkCmdBeginShaderInstrumentationARM"#)
+  vkCmdEndShaderInstrumentationARM <- getDeviceProcAddr' handle (Ptr "vkCmdEndShaderInstrumentationARM"#)
+  vkGetShaderInstrumentationValuesARM <- getDeviceProcAddr' handle (Ptr "vkGetShaderInstrumentationValuesARM"#)
+  vkClearShaderInstrumentationMetricsARM <- getDeviceProcAddr' handle (Ptr "vkClearShaderInstrumentationMetricsARM"#)
+  vkCreateTensorARM <- getDeviceProcAddr' handle (Ptr "vkCreateTensorARM"#)
+  vkDestroyTensorARM <- getDeviceProcAddr' handle (Ptr "vkDestroyTensorARM"#)
+  vkCreateTensorViewARM <- getDeviceProcAddr' handle (Ptr "vkCreateTensorViewARM"#)
+  vkDestroyTensorViewARM <- getDeviceProcAddr' handle (Ptr "vkDestroyTensorViewARM"#)
+  vkGetTensorMemoryRequirementsARM <- getDeviceProcAddr' handle (Ptr "vkGetTensorMemoryRequirementsARM"#)
+  vkBindTensorMemoryARM <- getDeviceProcAddr' handle (Ptr "vkBindTensorMemoryARM"#)
+  vkGetDeviceTensorMemoryRequirementsARM <- getDeviceProcAddr' handle (Ptr "vkGetDeviceTensorMemoryRequirementsARM"#)
+  vkCmdCopyTensorARM <- getDeviceProcAddr' handle (Ptr "vkCmdCopyTensorARM"#)
+  vkGetTensorOpaqueCaptureDescriptorDataARM <- getDeviceProcAddr' handle (Ptr "vkGetTensorOpaqueCaptureDescriptorDataARM"#)
+  vkGetTensorViewOpaqueCaptureDescriptorDataARM <- getDeviceProcAddr' handle (Ptr "vkGetTensorViewOpaqueCaptureDescriptorDataARM"#)
+  vkCreateDataGraphPipelinesARM <- getDeviceProcAddr' handle (Ptr "vkCreateDataGraphPipelinesARM"#)
+  vkCreateDataGraphPipelineSessionARM <- getDeviceProcAddr' handle (Ptr "vkCreateDataGraphPipelineSessionARM"#)
+  vkGetDataGraphPipelineSessionBindPointRequirementsARM <- getDeviceProcAddr' handle (Ptr "vkGetDataGraphPipelineSessionBindPointRequirementsARM"#)
+  vkGetDataGraphPipelineSessionMemoryRequirementsARM <- getDeviceProcAddr' handle (Ptr "vkGetDataGraphPipelineSessionMemoryRequirementsARM"#)
+  vkBindDataGraphPipelineSessionMemoryARM <- getDeviceProcAddr' handle (Ptr "vkBindDataGraphPipelineSessionMemoryARM"#)
+  vkDestroyDataGraphPipelineSessionARM <- getDeviceProcAddr' handle (Ptr "vkDestroyDataGraphPipelineSessionARM"#)
+  vkCmdDispatchDataGraphARM <- getDeviceProcAddr' handle (Ptr "vkCmdDispatchDataGraphARM"#)
+  vkGetDataGraphPipelineAvailablePropertiesARM <- getDeviceProcAddr' handle (Ptr "vkGetDataGraphPipelineAvailablePropertiesARM"#)
+  vkGetDataGraphPipelinePropertiesARM <- getDeviceProcAddr' handle (Ptr "vkGetDataGraphPipelinePropertiesARM"#)
+  vkQueueSetPerfHintQCOM <- getDeviceProcAddr' handle (Ptr "vkQueueSetPerfHintQCOM"#)
+  vkCmdSetComputeOccupancyPriorityNV <- getDeviceProcAddr' handle (Ptr "vkCmdSetComputeOccupancyPriorityNV"#)
+  vkWriteSamplerDescriptorsEXT <- getDeviceProcAddr' handle (Ptr "vkWriteSamplerDescriptorsEXT"#)
+  vkWriteResourceDescriptorsEXT <- getDeviceProcAddr' handle (Ptr "vkWriteResourceDescriptorsEXT"#)
+  vkCmdBindSamplerHeapEXT <- getDeviceProcAddr' handle (Ptr "vkCmdBindSamplerHeapEXT"#)
+  vkCmdBindResourceHeapEXT <- getDeviceProcAddr' handle (Ptr "vkCmdBindResourceHeapEXT"#)
+  vkCmdPushDataEXT <- getDeviceProcAddr' handle (Ptr "vkCmdPushDataEXT"#)
+  vkRegisterCustomBorderColorEXT <- getDeviceProcAddr' handle (Ptr "vkRegisterCustomBorderColorEXT"#)
+  vkUnregisterCustomBorderColorEXT <- getDeviceProcAddr' handle (Ptr "vkUnregisterCustomBorderColorEXT"#)
+  vkGetImageOpaqueCaptureDataEXT <- getDeviceProcAddr' handle (Ptr "vkGetImageOpaqueCaptureDataEXT"#)
+  vkGetTensorOpaqueCaptureDataARM <- getDeviceProcAddr' handle (Ptr "vkGetTensorOpaqueCaptureDataARM"#)
+  vkCmdCopyMemoryKHR <- getDeviceProcAddr' handle (Ptr "vkCmdCopyMemoryKHR"#)
+  vkCmdCopyMemoryToImageKHR <- getDeviceProcAddr' handle (Ptr "vkCmdCopyMemoryToImageKHR"#)
+  vkCmdCopyImageToMemoryKHR <- getDeviceProcAddr' handle (Ptr "vkCmdCopyImageToMemoryKHR"#)
+  vkCmdUpdateMemoryKHR <- getDeviceProcAddr' handle (Ptr "vkCmdUpdateMemoryKHR"#)
+  vkCmdFillMemoryKHR <- getDeviceProcAddr' handle (Ptr "vkCmdFillMemoryKHR"#)
+  vkCmdCopyQueryPoolResultsToMemoryKHR <- getDeviceProcAddr' handle (Ptr "vkCmdCopyQueryPoolResultsToMemoryKHR"#)
+  vkCmdBeginConditionalRendering2EXT <- getDeviceProcAddr' handle (Ptr "vkCmdBeginConditionalRendering2EXT"#)
+  vkCmdBindTransformFeedbackBuffers2EXT <- getDeviceProcAddr' handle (Ptr "vkCmdBindTransformFeedbackBuffers2EXT"#)
+  vkCmdBeginTransformFeedback2EXT <- getDeviceProcAddr' handle (Ptr "vkCmdBeginTransformFeedback2EXT"#)
+  vkCmdEndTransformFeedback2EXT <- getDeviceProcAddr' handle (Ptr "vkCmdEndTransformFeedback2EXT"#)
+  vkCmdDrawIndirectByteCount2EXT <- getDeviceProcAddr' handle (Ptr "vkCmdDrawIndirectByteCount2EXT"#)
+  vkCmdWriteMarkerToMemoryAMD <- getDeviceProcAddr' handle (Ptr "vkCmdWriteMarkerToMemoryAMD"#)
+  vkCmdBindIndexBuffer3KHR <- getDeviceProcAddr' handle (Ptr "vkCmdBindIndexBuffer3KHR"#)
+  vkCmdBindVertexBuffers3KHR <- getDeviceProcAddr' handle (Ptr "vkCmdBindVertexBuffers3KHR"#)
+  vkCmdDrawIndirect2KHR <- getDeviceProcAddr' handle (Ptr "vkCmdDrawIndirect2KHR"#)
+  vkCmdDrawIndexedIndirect2KHR <- getDeviceProcAddr' handle (Ptr "vkCmdDrawIndexedIndirect2KHR"#)
+  vkCmdDrawIndirectCount2KHR <- getDeviceProcAddr' handle (Ptr "vkCmdDrawIndirectCount2KHR"#)
+  vkCmdDrawIndexedIndirectCount2KHR <- getDeviceProcAddr' handle (Ptr "vkCmdDrawIndexedIndirectCount2KHR"#)
+  vkCmdDrawMeshTasksIndirect2EXT <- getDeviceProcAddr' handle (Ptr "vkCmdDrawMeshTasksIndirect2EXT"#)
+  vkCmdDrawMeshTasksIndirectCount2EXT <- getDeviceProcAddr' handle (Ptr "vkCmdDrawMeshTasksIndirectCount2EXT"#)
+  vkCmdDispatchIndirect2KHR <- getDeviceProcAddr' handle (Ptr "vkCmdDispatchIndirect2KHR"#)
+  vkCreateAccelerationStructure2KHR <- getDeviceProcAddr' handle (Ptr "vkCreateAccelerationStructure2KHR"#)
+  vkCmdSetDispatchParametersARM <- getDeviceProcAddr' handle (Ptr "vkCmdSetDispatchParametersARM"#)
   pure $ DeviceCmds handle
     (castFunPtr @_ @(Ptr Device_T -> ("pName" ::: Ptr CChar) -> IO PFN_vkVoidFunction) vkGetDeviceProcAddr)
     (castFunPtr @_ @(Ptr Device_T -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyDevice)
@@ -2573,8 +2998,8 @@
     (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr (SomeStruct RenderPassCreateInfo)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pRenderPass" ::: Ptr RenderPass) -> IO Result) vkCreateRenderPass)
     (castFunPtr @_ @(Ptr Device_T -> RenderPass -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyRenderPass)
     (castFunPtr @_ @(Ptr Device_T -> RenderPass -> ("pGranularity" ::: Ptr Extent2D) -> IO ()) vkGetRenderAreaGranularity)
-    (castFunPtr @_ @(Ptr Device_T -> ("pRenderingAreaInfo" ::: Ptr RenderingAreaInfoKHR) -> ("pGranularity" ::: Ptr Extent2D) -> IO ()) vkGetRenderingAreaGranularityKHR)
-    (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr CommandPoolCreateInfo) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pCommandPool" ::: Ptr CommandPool) -> IO Result) vkCreateCommandPool)
+    (castFunPtr @_ @(Ptr Device_T -> ("pRenderingAreaInfo" ::: Ptr RenderingAreaInfo) -> ("pGranularity" ::: Ptr Extent2D) -> IO ()) vkGetRenderingAreaGranularity)
+    (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr (SomeStruct CommandPoolCreateInfo)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pCommandPool" ::: Ptr CommandPool) -> IO Result) vkCreateCommandPool)
     (castFunPtr @_ @(Ptr Device_T -> CommandPool -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyCommandPool)
     (castFunPtr @_ @(Ptr Device_T -> CommandPool -> CommandPoolResetFlags -> IO Result) vkResetCommandPool)
     (castFunPtr @_ @(Ptr Device_T -> ("pAllocateInfo" ::: Ptr CommandBufferAllocateInfo) -> ("pCommandBuffers" ::: Ptr (Ptr CommandBuffer_T)) -> IO Result) vkAllocateCommandBuffers)
@@ -2583,6 +3008,7 @@
     (castFunPtr @_ @(Ptr CommandBuffer_T -> IO Result) vkEndCommandBuffer)
     (castFunPtr @_ @(Ptr CommandBuffer_T -> CommandBufferResetFlags -> IO Result) vkResetCommandBuffer)
     (castFunPtr @_ @(Ptr CommandBuffer_T -> PipelineBindPoint -> Pipeline -> IO ()) vkCmdBindPipeline)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("primitiveRestartIndex" ::: Word32) -> IO ()) vkCmdSetPrimitiveRestartIndexEXT)
     (castFunPtr @_ @(Ptr CommandBuffer_T -> ("aspectMask" ::: ImageAspectFlags) -> IO ()) vkCmdSetAttachmentFeedbackLoopEnableEXT)
     (castFunPtr @_ @(Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("viewportCount" ::: Word32) -> ("pViewports" ::: Ptr Viewport) -> IO ()) vkCmdSetViewport)
     (castFunPtr @_ @(Ptr CommandBuffer_T -> ("firstScissor" ::: Word32) -> ("scissorCount" ::: Word32) -> ("pScissors" ::: Ptr Rect2D) -> IO ()) vkCmdSetScissor)
@@ -2614,7 +3040,9 @@
     (castFunPtr @_ @(Ptr CommandBuffer_T -> ("srcBuffer" ::: Buffer) -> ("dstImage" ::: Image) -> ("dstImageLayout" ::: ImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr BufferImageCopy) -> IO ()) vkCmdCopyBufferToImage)
     (castFunPtr @_ @(Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("dstBuffer" ::: Buffer) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr BufferImageCopy) -> IO ()) vkCmdCopyImageToBuffer)
     (castFunPtr @_ @(Ptr CommandBuffer_T -> ("copyBufferAddress" ::: DeviceAddress) -> ("copyCount" ::: Word32) -> ("stride" ::: Word32) -> IO ()) vkCmdCopyMemoryIndirectNV)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pCopyMemoryIndirectInfo" ::: Ptr CopyMemoryIndirectInfoKHR) -> IO ()) vkCmdCopyMemoryIndirectKHR)
     (castFunPtr @_ @(Ptr CommandBuffer_T -> ("copyBufferAddress" ::: DeviceAddress) -> ("copyCount" ::: Word32) -> ("stride" ::: Word32) -> ("dstImage" ::: Image) -> ("dstImageLayout" ::: ImageLayout) -> ("pImageSubresources" ::: Ptr ImageSubresourceLayers) -> IO ()) vkCmdCopyMemoryToImageIndirectNV)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pCopyMemoryToImageIndirectInfo" ::: Ptr CopyMemoryToImageIndirectInfoKHR) -> IO ()) vkCmdCopyMemoryToImageIndirectKHR)
     (castFunPtr @_ @(Ptr CommandBuffer_T -> ("dstBuffer" ::: Buffer) -> ("dstOffset" ::: DeviceSize) -> ("dataSize" ::: DeviceSize) -> ("pData" ::: Ptr ()) -> IO ()) vkCmdUpdateBuffer)
     (castFunPtr @_ @(Ptr CommandBuffer_T -> ("dstBuffer" ::: Buffer) -> ("dstOffset" ::: DeviceSize) -> DeviceSize -> ("data" ::: Word32) -> IO ()) vkCmdFillBuffer)
     (castFunPtr @_ @(Ptr CommandBuffer_T -> Image -> ImageLayout -> ("pColor" ::: Ptr ClearColorValue) -> ("rangeCount" ::: Word32) -> ("pRanges" ::: Ptr ImageSubresourceRange) -> IO ()) vkCmdClearColorImage)
@@ -2629,6 +3057,7 @@
     (castFunPtr @_ @(Ptr CommandBuffer_T -> QueryPool -> ("query" ::: Word32) -> IO ()) vkCmdEndQuery)
     (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pConditionalRenderingBegin" ::: Ptr ConditionalRenderingBeginInfoEXT) -> IO ()) vkCmdBeginConditionalRenderingEXT)
     (castFunPtr @_ @(Ptr CommandBuffer_T -> IO ()) vkCmdEndConditionalRenderingEXT)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pBeginCustomResolveInfo" ::: Ptr BeginCustomResolveInfoEXT) -> IO ()) vkCmdBeginCustomResolveEXT)
     (castFunPtr @_ @(Ptr CommandBuffer_T -> QueryPool -> ("firstQuery" ::: Word32) -> ("queryCount" ::: Word32) -> IO ()) vkCmdResetQueryPool)
     (castFunPtr @_ @(Ptr CommandBuffer_T -> PipelineStageFlagBits -> QueryPool -> ("query" ::: Word32) -> IO ()) vkCmdWriteTimestamp)
     (castFunPtr @_ @(Ptr CommandBuffer_T -> QueryPool -> ("firstQuery" ::: Word32) -> ("queryCount" ::: Word32) -> ("dstBuffer" ::: Buffer) -> ("dstOffset" ::: DeviceSize) -> ("stride" ::: DeviceSize) -> QueryResultFlags -> IO ()) vkCmdCopyQueryPoolResults)
@@ -2664,7 +3093,7 @@
     (castFunPtr @_ @(Ptr Device_T -> IndirectExecutionSetEXT -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyIndirectExecutionSetEXT)
     (castFunPtr @_ @(Ptr Device_T -> IndirectExecutionSetEXT -> ("executionSetWriteCount" ::: Word32) -> ("pExecutionSetWrites" ::: Ptr WriteIndirectExecutionSetPipelineEXT) -> IO ()) vkUpdateIndirectExecutionSetPipelineEXT)
     (castFunPtr @_ @(Ptr Device_T -> IndirectExecutionSetEXT -> ("executionSetWriteCount" ::: Word32) -> ("pExecutionSetWrites" ::: Ptr WriteIndirectExecutionSetShaderEXT) -> IO ()) vkUpdateIndirectExecutionSetShaderEXT)
-    (castFunPtr @_ @(Ptr CommandBuffer_T -> PipelineBindPoint -> PipelineLayout -> ("set" ::: Word32) -> ("descriptorWriteCount" ::: Word32) -> ("pDescriptorWrites" ::: Ptr (SomeStruct WriteDescriptorSet)) -> IO ()) vkCmdPushDescriptorSetKHR)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> PipelineBindPoint -> PipelineLayout -> ("set" ::: Word32) -> ("descriptorWriteCount" ::: Word32) -> ("pDescriptorWrites" ::: Ptr (SomeStruct WriteDescriptorSet)) -> IO ()) vkCmdPushDescriptorSet)
     (castFunPtr @_ @(Ptr Device_T -> CommandPool -> CommandPoolTrimFlags -> IO ()) vkTrimCommandPool)
     (castFunPtr @_ @(Ptr Device_T -> ("pGetWin32HandleInfo" ::: Ptr MemoryGetWin32HandleInfoKHR) -> ("pHandle" ::: Ptr HANDLE) -> IO Result) vkGetMemoryWin32HandleKHR)
     (castFunPtr @_ @(Ptr Device_T -> ExternalMemoryHandleTypeFlagBits -> HANDLE -> ("pMemoryWin32HandleProperties" ::: Ptr MemoryWin32HandlePropertiesKHR) -> IO Result) vkGetMemoryWin32HandlePropertiesKHR)
@@ -2698,7 +3127,7 @@
     (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr DescriptorUpdateTemplateCreateInfo) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pDescriptorUpdateTemplate" ::: Ptr DescriptorUpdateTemplate) -> IO Result) vkCreateDescriptorUpdateTemplate)
     (castFunPtr @_ @(Ptr Device_T -> DescriptorUpdateTemplate -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyDescriptorUpdateTemplate)
     (castFunPtr @_ @(Ptr Device_T -> DescriptorSet -> DescriptorUpdateTemplate -> ("pData" ::: Ptr ()) -> IO ()) vkUpdateDescriptorSetWithTemplate)
-    (castFunPtr @_ @(Ptr CommandBuffer_T -> DescriptorUpdateTemplate -> PipelineLayout -> ("set" ::: Word32) -> ("pData" ::: Ptr ()) -> IO ()) vkCmdPushDescriptorSetWithTemplateKHR)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> DescriptorUpdateTemplate -> PipelineLayout -> ("set" ::: Word32) -> ("pData" ::: Ptr ()) -> IO ()) vkCmdPushDescriptorSetWithTemplate)
     (castFunPtr @_ @(Ptr Device_T -> ("swapchainCount" ::: Word32) -> ("pSwapchains" ::: Ptr SwapchainKHR) -> ("pMetadata" ::: Ptr (SomeStruct HdrMetadataEXT)) -> IO ()) vkSetHdrMetadataEXT)
     (castFunPtr @_ @(Ptr Device_T -> SwapchainKHR -> IO Result) vkGetSwapchainStatusKHR)
     (castFunPtr @_ @(Ptr Device_T -> SwapchainKHR -> ("pDisplayTimingProperties" ::: Ptr RefreshCycleDurationGOOGLE) -> IO Result) vkGetRefreshCycleDurationGOOGLE)
@@ -2724,7 +3153,7 @@
     (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr (SomeStruct DescriptorSetLayoutCreateInfo)) -> ("pSupport" ::: Ptr (SomeStruct DescriptorSetLayoutSupport)) -> IO ()) vkGetDescriptorSetLayoutSupport)
     (castFunPtr @_ @(Ptr Device_T -> Pipeline -> ShaderStageFlagBits -> ShaderInfoTypeAMD -> ("pInfoSize" ::: Ptr CSize) -> ("pInfo" ::: Ptr ()) -> IO Result) vkGetShaderInfoAMD)
     (castFunPtr @_ @(Ptr Device_T -> SwapchainKHR -> ("localDimmingEnable" ::: Bool32) -> IO ()) vkSetLocalDimmingAMD)
-    (castFunPtr @_ @(Ptr Device_T -> ("timestampCount" ::: Word32) -> ("pTimestampInfos" ::: Ptr CalibratedTimestampInfoKHR) -> ("pTimestamps" ::: Ptr Word64) -> ("pMaxDeviation" ::: Ptr Word64) -> IO Result) vkGetCalibratedTimestampsKHR)
+    (castFunPtr @_ @(Ptr Device_T -> ("timestampCount" ::: Word32) -> ("pTimestampInfos" ::: Ptr (SomeStruct CalibratedTimestampInfoKHR)) -> ("pTimestamps" ::: Ptr Word64) -> ("pMaxDeviation" ::: Ptr Word64) -> IO Result) vkGetCalibratedTimestampsKHR)
     (castFunPtr @_ @(Ptr Device_T -> ("pNameInfo" ::: Ptr DebugUtilsObjectNameInfoEXT) -> IO Result) vkSetDebugUtilsObjectNameEXT)
     (castFunPtr @_ @(Ptr Device_T -> ("pTagInfo" ::: Ptr DebugUtilsObjectTagInfoEXT) -> IO Result) vkSetDebugUtilsObjectTagEXT)
     (castFunPtr @_ @(Ptr Queue_T -> ("pLabelInfo" ::: Ptr DebugUtilsLabelEXT) -> IO ()) vkQueueBeginDebugUtilsLabelEXT)
@@ -2770,7 +3199,7 @@
     (castFunPtr @_ @(Ptr CommandBuffer_T -> ImageView -> ImageLayout -> IO ()) vkCmdBindInvocationMaskHUAWEI)
     (castFunPtr @_ @(Ptr Device_T -> AccelerationStructureKHR -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyAccelerationStructureKHR)
     (castFunPtr @_ @(Ptr Device_T -> AccelerationStructureNV -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyAccelerationStructureNV)
-    (castFunPtr @_ @(Ptr Device_T -> ("pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoNV) -> ("pMemoryRequirements" ::: Ptr (SomeStruct MemoryRequirements2KHR)) -> IO ()) vkGetAccelerationStructureMemoryRequirementsNV)
+    (castFunPtr @_ @(Ptr Device_T -> ("pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoNV) -> ("pMemoryRequirements" ::: Ptr (SomeStruct MemoryRequirements2)) -> IO ()) vkGetAccelerationStructureMemoryRequirementsNV)
     (castFunPtr @_ @(Ptr Device_T -> ("bindInfoCount" ::: Word32) -> ("pBindInfos" ::: Ptr BindAccelerationStructureMemoryInfoNV) -> IO Result) vkBindAccelerationStructureMemoryNV)
     (castFunPtr @_ @(Ptr CommandBuffer_T -> ("dst" ::: AccelerationStructureNV) -> ("src" ::: AccelerationStructureNV) -> CopyAccelerationStructureModeKHR -> IO ()) vkCmdCopyAccelerationStructureNV)
     (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pInfo" ::: Ptr CopyAccelerationStructureInfoKHR) -> IO ()) vkCmdCopyAccelerationStructureKHR)
@@ -2798,6 +3227,7 @@
     (castFunPtr @_ @(Ptr Device_T -> ("pInfo" ::: Ptr ImageViewHandleInfoNVX) -> IO Word32) vkGetImageViewHandleNVX)
     (castFunPtr @_ @(Ptr Device_T -> ("pInfo" ::: Ptr ImageViewHandleInfoNVX) -> IO Word64) vkGetImageViewHandle64NVX)
     (castFunPtr @_ @(Ptr Device_T -> ImageView -> ("pProperties" ::: Ptr ImageViewAddressPropertiesNVX) -> IO Result) vkGetImageViewAddressNVX)
+    (castFunPtr @_ @(Ptr Device_T -> ("imageViewIndex" ::: Word64) -> ("samplerIndex" ::: Word64) -> IO Word64) vkGetDeviceCombinedImageSamplerIndexNVX)
     (castFunPtr @_ @(Ptr Device_T -> ("pSurfaceInfo" ::: Ptr (SomeStruct PhysicalDeviceSurfaceInfo2KHR)) -> ("pModes" ::: Ptr DeviceGroupPresentModeFlagsKHR) -> IO Result) vkGetDeviceGroupSurfacePresentModes2EXT)
     (castFunPtr @_ @(Ptr Device_T -> SwapchainKHR -> IO Result) vkAcquireFullScreenExclusiveModeEXT)
     (castFunPtr @_ @(Ptr Device_T -> SwapchainKHR -> IO Result) vkReleaseFullScreenExclusiveModeEXT)
@@ -2819,7 +3249,7 @@
     (castFunPtr @_ @(Ptr Device_T -> ("pPipelineInfo" ::: Ptr PipelineInfoKHR) -> ("pExecutableCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr PipelineExecutablePropertiesKHR) -> IO Result) vkGetPipelineExecutablePropertiesKHR)
     (castFunPtr @_ @(Ptr Device_T -> ("pExecutableInfo" ::: Ptr PipelineExecutableInfoKHR) -> ("pStatisticCount" ::: Ptr Word32) -> ("pStatistics" ::: Ptr PipelineExecutableStatisticKHR) -> IO Result) vkGetPipelineExecutableStatisticsKHR)
     (castFunPtr @_ @(Ptr Device_T -> ("pExecutableInfo" ::: Ptr PipelineExecutableInfoKHR) -> ("pInternalRepresentationCount" ::: Ptr Word32) -> ("pInternalRepresentations" ::: Ptr PipelineExecutableInternalRepresentationKHR) -> IO Result) vkGetPipelineExecutableInternalRepresentationsKHR)
-    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("lineStippleFactor" ::: Word32) -> ("lineStipplePattern" ::: Word16) -> IO ()) vkCmdSetLineStippleKHR)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("lineStippleFactor" ::: Word32) -> ("lineStipplePattern" ::: Word16) -> IO ()) vkCmdSetLineStipple)
     (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr (SomeStruct AccelerationStructureCreateInfoKHR)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pAccelerationStructure" ::: Ptr AccelerationStructureKHR) -> IO Result) vkCreateAccelerationStructureKHR)
     (castFunPtr @_ @(Ptr CommandBuffer_T -> ("infoCount" ::: Word32) -> ("pInfos" ::: Ptr AccelerationStructureBuildGeometryInfoKHR) -> ("ppBuildRangeInfos" ::: Ptr (Ptr AccelerationStructureBuildRangeInfoKHR)) -> IO ()) vkCmdBuildAccelerationStructuresKHR)
     (castFunPtr @_ @(Ptr CommandBuffer_T -> ("infoCount" ::: Word32) -> ("pInfos" ::: Ptr AccelerationStructureBuildGeometryInfoKHR) -> ("pIndirectDeviceAddresses" ::: Ptr DeviceAddress) -> ("pIndirectStrides" ::: Ptr Word32) -> ("ppMaxPrimitiveCounts" ::: Ptr (Ptr Word32)) -> IO ()) vkCmdBuildAccelerationStructuresIndirectKHR)
@@ -2838,7 +3268,7 @@
     (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 -> Buffer -> ("offset" ::: DeviceSize) -> DeviceSize -> IndexType -> IO ()) vkCmdBindIndexBuffer2KHR)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> DeviceSize -> IndexType -> IO ()) vkCmdBindIndexBuffer2)
     (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)
@@ -2891,26 +3321,28 @@
     (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pBlitImageInfo" ::: Ptr (SomeStruct 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 -> ("pResolveImageInfo" ::: Ptr (SomeStruct 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 DependencyInfo) -> IO ()) vkCmdSetEvent2)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> Event -> ("pDependencyInfo" ::: Ptr (SomeStruct 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 CommandBuffer_T -> ("eventCount" ::: Word32) -> ("pEvents" ::: Ptr Event) -> ("pDependencyInfos" ::: Ptr (SomeStruct DependencyInfo)) -> IO ()) vkCmdWaitEvents2)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pDependencyInfo" ::: Ptr (SomeStruct 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 -> ("pCopyMemoryToImageInfo" ::: Ptr CopyMemoryToImageInfoEXT) -> IO Result) vkCopyMemoryToImageEXT)
-    (castFunPtr @_ @(Ptr Device_T -> ("pCopyImageToMemoryInfo" ::: Ptr CopyImageToMemoryInfoEXT) -> IO Result) vkCopyImageToMemoryEXT)
-    (castFunPtr @_ @(Ptr Device_T -> ("pCopyImageToImageInfo" ::: Ptr CopyImageToImageInfoEXT) -> IO Result) vkCopyImageToImageEXT)
-    (castFunPtr @_ @(Ptr Device_T -> ("transitionCount" ::: Word32) -> ("pTransitions" ::: Ptr HostImageLayoutTransitionInfoEXT) -> IO Result) vkTransitionImageLayoutEXT)
+    (castFunPtr @_ @(Ptr Device_T -> ("pCopyMemoryToImageInfo" ::: Ptr CopyMemoryToImageInfo) -> IO Result) vkCopyMemoryToImage)
+    (castFunPtr @_ @(Ptr Device_T -> ("pCopyImageToMemoryInfo" ::: Ptr CopyImageToMemoryInfo) -> IO Result) vkCopyImageToMemory)
+    (castFunPtr @_ @(Ptr Device_T -> ("pCopyImageToImageInfo" ::: Ptr CopyImageToImageInfo) -> IO Result) vkCopyImageToImage)
+    (castFunPtr @_ @(Ptr Device_T -> ("transitionCount" ::: Word32) -> ("pTransitions" ::: Ptr HostImageLayoutTransitionInfo) -> IO Result) vkTransitionImageLayout)
     (castFunPtr @_ @(Ptr CommandBuffer_T -> ("decompressRegionCount" ::: Word32) -> ("pDecompressMemoryRegions" ::: Ptr DecompressMemoryRegionNV) -> IO ()) vkCmdDecompressMemoryNV)
     (castFunPtr @_ @(Ptr CommandBuffer_T -> ("indirectCommandsAddress" ::: DeviceAddress) -> ("indirectCommandsCountAddress" ::: DeviceAddress) -> ("stride" ::: Word32) -> IO ()) vkCmdDecompressMemoryIndirectCountNV)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pDecompressMemoryInfoEXT" ::: Ptr DecompressMemoryInfoEXT) -> IO ()) vkCmdDecompressMemoryEXT)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> MemoryDecompressionMethodFlagsEXT -> ("indirectCommandsAddress" ::: DeviceAddress) -> ("indirectCommandsCountAddress" ::: DeviceAddress) -> ("maxDecompressionCount" ::: Word32) -> ("stride" ::: Word32) -> IO ()) vkCmdDecompressMemoryIndirectCountEXT)
     (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr (SomeStruct CuModuleCreateInfoNVX)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pModule" ::: Ptr CuModuleNVX) -> IO Result) vkCreateCuModuleNVX)
     (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr CuFunctionCreateInfoNVX) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pFunction" ::: Ptr CuFunctionNVX) -> IO Result) vkCreateCuFunctionNVX)
     (castFunPtr @_ @(Ptr Device_T -> CuModuleNVX -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyCuModuleNVX)
@@ -2918,7 +3350,7 @@
     (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pLaunchInfo" ::: Ptr CuLaunchInfoNVX) -> IO ()) vkCmdCuLaunchKernelNVX)
     (castFunPtr @_ @(Ptr Device_T -> DescriptorSetLayout -> ("pLayoutSizeInBytes" ::: Ptr DeviceSize) -> IO ()) vkGetDescriptorSetLayoutSizeEXT)
     (castFunPtr @_ @(Ptr Device_T -> DescriptorSetLayout -> ("binding" ::: Word32) -> ("pOffset" ::: Ptr DeviceSize) -> IO ()) vkGetDescriptorSetLayoutBindingOffsetEXT)
-    (castFunPtr @_ @(Ptr Device_T -> ("pDescriptorInfo" ::: Ptr DescriptorGetInfoEXT) -> ("dataSize" ::: CSize) -> ("pDescriptor" ::: Ptr ()) -> IO ()) vkGetDescriptorEXT)
+    (castFunPtr @_ @(Ptr Device_T -> ("pDescriptorInfo" ::: Ptr (SomeStruct DescriptorGetInfoEXT)) -> ("dataSize" ::: CSize) -> ("pDescriptor" ::: Ptr ()) -> IO ()) vkGetDescriptorEXT)
     (castFunPtr @_ @(Ptr CommandBuffer_T -> ("bufferCount" ::: Word32) -> ("pBindingInfos" ::: Ptr (SomeStruct DescriptorBufferBindingInfoEXT)) -> IO ()) vkCmdBindDescriptorBuffersEXT)
     (castFunPtr @_ @(Ptr CommandBuffer_T -> PipelineBindPoint -> PipelineLayout -> ("firstSet" ::: Word32) -> ("setCount" ::: Word32) -> ("pBufferIndices" ::: Ptr Word32) -> ("pOffsets" ::: Ptr DeviceSize) -> IO ()) vkCmdSetDescriptorBufferOffsetsEXT)
     (castFunPtr @_ @(Ptr CommandBuffer_T -> PipelineBindPoint -> PipelineLayout -> ("set" ::: Word32) -> IO ()) vkCmdBindDescriptorBufferEmbeddedSamplersEXT)
@@ -2928,6 +3360,7 @@
     (castFunPtr @_ @(Ptr Device_T -> ("pInfo" ::: Ptr SamplerCaptureDescriptorDataInfoEXT) -> ("pData" ::: Ptr ()) -> IO Result) vkGetSamplerOpaqueCaptureDescriptorDataEXT)
     (castFunPtr @_ @(Ptr Device_T -> ("pInfo" ::: Ptr AccelerationStructureCaptureDescriptorDataInfoEXT) -> ("pData" ::: Ptr ()) -> IO Result) vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT)
     (castFunPtr @_ @(Ptr Device_T -> DeviceMemory -> ("priority" ::: CFloat) -> IO ()) vkSetDeviceMemoryPriorityEXT)
+    (castFunPtr @_ @(Ptr Device_T -> SwapchainKHR -> ("pPresentWait2Info" ::: Ptr PresentWait2InfoKHR) -> IO Result) vkWaitForPresent2KHR)
     (castFunPtr @_ @(Ptr Device_T -> SwapchainKHR -> ("presentId" ::: Word64) -> ("timeout" ::: Word64) -> IO Result) vkWaitForPresentKHR)
     (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr BufferCollectionCreateInfoFUCHSIA) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pCollection" ::: Ptr BufferCollectionFUCHSIA) -> IO Result) vkCreateBufferCollectionFUCHSIA)
     (castFunPtr @_ @(Ptr Device_T -> BufferCollectionFUCHSIA -> ("pBufferConstraintsInfo" ::: Ptr BufferConstraintsInfoFUCHSIA) -> IO Result) vkSetBufferCollectionBufferConstraintsFUCHSIA)
@@ -2942,6 +3375,7 @@
     (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pLaunchInfo" ::: Ptr CudaLaunchInfoNV) -> IO ()) vkCmdCudaLaunchKernelNV)
     (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pRenderingInfo" ::: Ptr (SomeStruct RenderingInfo)) -> IO ()) vkCmdBeginRendering)
     (castFunPtr @_ @(Ptr CommandBuffer_T -> IO ()) vkCmdEndRendering)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pRenderingEndInfo" ::: Ptr (SomeStruct RenderingEndInfoKHR)) -> IO ()) vkCmdEndRendering2KHR)
     (castFunPtr @_ @(Ptr Device_T -> ("pBindingReference" ::: Ptr DescriptorSetBindingReferenceVALVE) -> ("pHostMapping" ::: Ptr DescriptorSetLayoutHostMappingInfoVALVE) -> IO ()) vkGetDescriptorSetLayoutHostMappingInfoVALVE)
     (castFunPtr @_ @(Ptr Device_T -> DescriptorSet -> ("ppData" ::: Ptr (Ptr ())) -> IO ()) vkGetDescriptorSetHostMappingVALVE)
     (castFunPtr @_ @(Ptr Device_T -> Ptr MicromapCreateInfoEXT -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pMicromap" ::: Ptr MicromapEXT) -> IO Result) vkCreateMicromapEXT)
@@ -2960,9 +3394,10 @@
     (castFunPtr @_ @(Ptr Device_T -> AccelerationStructureBuildTypeKHR -> Ptr MicromapBuildInfoEXT -> ("pSizeInfo" ::: Ptr MicromapBuildSizesInfoEXT) -> IO ()) vkGetMicromapBuildSizesEXT)
     (castFunPtr @_ @(Ptr Device_T -> ShaderModule -> ("pIdentifier" ::: Ptr ShaderModuleIdentifierEXT) -> IO ()) vkGetShaderModuleIdentifierEXT)
     (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr (SomeStruct ShaderModuleCreateInfo)) -> ("pIdentifier" ::: Ptr ShaderModuleIdentifierEXT) -> IO ()) vkGetShaderModuleCreateInfoIdentifierEXT)
-    (castFunPtr @_ @(Ptr Device_T -> Image -> ("pSubresource" ::: Ptr ImageSubresource2KHR) -> ("pLayout" ::: Ptr (SomeStruct SubresourceLayout2KHR)) -> IO ()) vkGetImageSubresourceLayout2KHR)
-    (castFunPtr @_ @(Ptr Device_T -> ("pPipelineInfo" ::: Ptr PipelineInfoEXT) -> ("pPipelineProperties" ::: Ptr BaseOutStructure) -> IO Result) vkGetPipelinePropertiesEXT)
+    (castFunPtr @_ @(Ptr Device_T -> Image -> ("pSubresource" ::: Ptr ImageSubresource2) -> ("pLayout" ::: Ptr (SomeStruct SubresourceLayout2)) -> IO ()) vkGetImageSubresourceLayout2)
+    (castFunPtr @_ @(Ptr Device_T -> ("pPipelineInfo" ::: Ptr PipelineInfoKHR) -> ("pPipelineProperties" ::: Ptr BaseOutStructure) -> IO Result) vkGetPipelinePropertiesEXT)
     (castFunPtr @_ @(Ptr Device_T -> ("pMetalObjectsInfo" ::: Ptr (SomeStruct ExportMetalObjectsInfoEXT)) -> IO ()) vkExportMetalObjectsEXT)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pTileMemoryBindInfo" ::: Ptr TileMemoryBindInfoQCOM) -> IO ()) vkCmdBindTileMemoryQCOM)
     (castFunPtr @_ @(Ptr Device_T -> Framebuffer -> ("pPropertiesCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr TilePropertiesQCOM) -> IO Result) vkGetFramebufferTilePropertiesQCOM)
     (castFunPtr @_ @(Ptr Device_T -> ("pRenderingInfo" ::: Ptr (SomeStruct RenderingInfo)) -> ("pProperties" ::: Ptr TilePropertiesQCOM) -> IO Result) vkGetDynamicRenderingTilePropertiesQCOM)
     (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr (SomeStruct OpticalFlowSessionCreateInfoNV)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSession" ::: Ptr OpticalFlowSessionNV) -> IO Result) vkCreateOpticalFlowSessionNV)
@@ -2970,15 +3405,21 @@
     (castFunPtr @_ @(Ptr Device_T -> OpticalFlowSessionNV -> OpticalFlowSessionBindingPointNV -> ImageView -> ImageLayout -> IO Result) vkBindOpticalFlowSessionImageNV)
     (castFunPtr @_ @(Ptr CommandBuffer_T -> OpticalFlowSessionNV -> ("pExecuteInfo" ::: Ptr OpticalFlowExecuteInfoNV) -> IO ()) vkCmdOpticalFlowExecuteNV)
     (castFunPtr @_ @(Ptr Device_T -> ("pFaultCounts" ::: Ptr DeviceFaultCountsEXT) -> ("pFaultInfo" ::: Ptr DeviceFaultInfoEXT) -> IO Result) vkGetDeviceFaultInfoEXT)
+    (castFunPtr @_ @(Ptr Device_T -> ("timeout" ::: Word64) -> ("pFaultCounts" ::: Ptr Word32) -> ("pFaultInfo" ::: Ptr DeviceFaultInfoKHR) -> IO Result) vkGetDeviceFaultReportsKHR)
+    (castFunPtr @_ @(Ptr Device_T -> ("pDebugInfo" ::: Ptr (SomeStruct DeviceFaultDebugInfoKHR)) -> IO Result) vkGetDeviceFaultDebugInfoKHR)
     (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pDepthBiasInfo" ::: Ptr (SomeStruct DepthBiasInfoEXT)) -> IO ()) vkCmdSetDepthBias2EXT)
-    (castFunPtr @_ @(Ptr Device_T -> ("pReleaseInfo" ::: Ptr ReleaseSwapchainImagesInfoEXT) -> IO Result) vkReleaseSwapchainImagesEXT)
-    (castFunPtr @_ @(Ptr Device_T -> ("pInfo" ::: Ptr DeviceImageSubresourceInfoKHR) -> ("pLayout" ::: Ptr (SomeStruct SubresourceLayout2KHR)) -> IO ()) vkGetDeviceImageSubresourceLayoutKHR)
-    (castFunPtr @_ @(Ptr Device_T -> ("pMemoryMapInfo" ::: Ptr (SomeStruct MemoryMapInfoKHR)) -> ("ppData" ::: Ptr (Ptr ())) -> IO Result) vkMapMemory2KHR)
-    (castFunPtr @_ @(Ptr Device_T -> ("pMemoryUnmapInfo" ::: Ptr MemoryUnmapInfoKHR) -> IO Result) vkUnmapMemory2KHR)
+    (castFunPtr @_ @(Ptr Device_T -> ("pReleaseInfo" ::: Ptr ReleaseSwapchainImagesInfoKHR) -> IO Result) vkReleaseSwapchainImagesKHR)
+    (castFunPtr @_ @(Ptr Device_T -> ("pInfo" ::: Ptr DeviceImageSubresourceInfo) -> ("pLayout" ::: Ptr (SomeStruct SubresourceLayout2)) -> IO ()) vkGetDeviceImageSubresourceLayout)
+    (castFunPtr @_ @(Ptr Device_T -> ("pMemoryMapInfo" ::: Ptr (SomeStruct MemoryMapInfo)) -> ("ppData" ::: Ptr (Ptr ())) -> IO Result) vkMapMemory2)
+    (castFunPtr @_ @(Ptr Device_T -> ("pMemoryUnmapInfo" ::: Ptr MemoryUnmapInfo) -> IO Result) vkUnmapMemory2)
     (castFunPtr @_ @(Ptr Device_T -> ("createInfoCount" ::: Word32) -> ("pCreateInfos" ::: Ptr (SomeStruct ShaderCreateInfoEXT)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pShaders" ::: Ptr ShaderEXT) -> IO Result) vkCreateShadersEXT)
     (castFunPtr @_ @(Ptr Device_T -> ShaderEXT -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyShaderEXT)
     (castFunPtr @_ @(Ptr Device_T -> ShaderEXT -> ("pDataSize" ::: Ptr CSize) -> ("pData" ::: Ptr ()) -> IO Result) vkGetShaderBinaryDataEXT)
     (castFunPtr @_ @(Ptr CommandBuffer_T -> ("stageCount" ::: Word32) -> ("pStages" ::: Ptr ShaderStageFlagBits) -> ("pShaders" ::: Ptr ShaderEXT) -> IO ()) vkCmdBindShadersEXT)
+    (castFunPtr @_ @(Ptr Device_T -> SwapchainKHR -> ("size" ::: Word32) -> IO Result) vkSetSwapchainPresentTimingQueueSizeEXT)
+    (castFunPtr @_ @(Ptr Device_T -> SwapchainKHR -> ("pSwapchainTimingProperties" ::: Ptr SwapchainTimingPropertiesEXT) -> ("pSwapchainTimingPropertiesCounter" ::: Ptr Word64) -> IO Result) vkGetSwapchainTimingPropertiesEXT)
+    (castFunPtr @_ @(Ptr Device_T -> SwapchainKHR -> ("pSwapchainTimeDomainProperties" ::: Ptr SwapchainTimeDomainPropertiesEXT) -> ("pTimeDomainsCounter" ::: Ptr Word64) -> IO Result) vkGetSwapchainTimeDomainPropertiesEXT)
+    (castFunPtr @_ @(Ptr Device_T -> ("pPastPresentationTimingInfo" ::: Ptr PastPresentationTimingInfoEXT) -> ("pPastPresentationTimingProperties" ::: Ptr PastPresentationTimingPropertiesEXT) -> IO Result) vkGetPastPresentationTimingEXT)
     (castFunPtr @_ @(Ptr Device_T -> Ptr Screen_buffer -> ("pProperties" ::: Ptr (SomeStruct ScreenBufferPropertiesQNX)) -> IO Result) vkGetScreenBufferPropertiesQNX)
     (castFunPtr @_ @(Ptr Device_T -> ("executionGraph" ::: Pipeline) -> ("pSizeInfo" ::: Ptr ExecutionGraphPipelineScratchSizeAMDX) -> IO Result) vkGetExecutionGraphPipelineScratchSizeAMDX)
     (castFunPtr @_ @(Ptr Device_T -> ("executionGraph" ::: Pipeline) -> ("pNodeInfo" ::: Ptr PipelineShaderStageNodeCreateInfoAMDX) -> ("pNodeIndex" ::: Ptr Word32) -> IO Result) vkGetExecutionGraphPipelineNodeIndexAMDX)
@@ -2987,10 +3428,22 @@
     (castFunPtr @_ @(Ptr CommandBuffer_T -> ("scratch" ::: DeviceAddress) -> ("scratchSize" ::: DeviceSize) -> ("pCountInfo" ::: Ptr DispatchGraphCountInfoAMDX) -> IO ()) vkCmdDispatchGraphAMDX)
     (castFunPtr @_ @(Ptr CommandBuffer_T -> ("scratch" ::: DeviceAddress) -> ("scratchSize" ::: DeviceSize) -> ("pCountInfo" ::: Ptr DispatchGraphCountInfoAMDX) -> IO ()) vkCmdDispatchGraphIndirectAMDX)
     (castFunPtr @_ @(Ptr CommandBuffer_T -> ("scratch" ::: DeviceAddress) -> ("scratchSize" ::: DeviceSize) -> ("countInfo" ::: DeviceAddress) -> IO ()) vkCmdDispatchGraphIndirectCountAMDX)
-    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pBindDescriptorSetsInfo" ::: Ptr (SomeStruct BindDescriptorSetsInfoKHR)) -> IO ()) vkCmdBindDescriptorSets2KHR)
-    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pPushConstantsInfo" ::: Ptr (SomeStruct PushConstantsInfoKHR)) -> IO ()) vkCmdPushConstants2KHR)
-    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pPushDescriptorSetInfo" ::: Ptr (SomeStruct PushDescriptorSetInfoKHR)) -> IO ()) vkCmdPushDescriptorSet2KHR)
-    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pPushDescriptorSetWithTemplateInfo" ::: Ptr (SomeStruct PushDescriptorSetWithTemplateInfoKHR)) -> IO ()) vkCmdPushDescriptorSetWithTemplate2KHR)
+    (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr GpaSessionCreateInfoAMD) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pGpaSession" ::: Ptr GpaSessionAMD) -> IO Result) vkCreateGpaSessionAMD)
+    (castFunPtr @_ @(Ptr Device_T -> GpaSessionAMD -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyGpaSessionAMD)
+    (castFunPtr @_ @(Ptr Device_T -> ("pInfo" ::: Ptr GpaDeviceClockModeInfoAMD) -> IO Result) vkSetGpaDeviceClockModeAMD)
+    (castFunPtr @_ @(Ptr Device_T -> ("pInfo" ::: Ptr GpaDeviceGetClockInfoAMD) -> IO Result) vkGetGpaDeviceClockInfoAMD)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> GpaSessionAMD -> IO Result) vkCmdBeginGpaSessionAMD)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> GpaSessionAMD -> IO Result) vkCmdEndGpaSessionAMD)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> GpaSessionAMD -> ("pGpaSampleBeginInfo" ::: Ptr GpaSampleBeginInfoAMD) -> ("pSampleID" ::: Ptr Word32) -> IO Result) vkCmdBeginGpaSampleAMD)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> GpaSessionAMD -> ("sampleID" ::: Word32) -> IO ()) vkCmdEndGpaSampleAMD)
+    (castFunPtr @_ @(Ptr Device_T -> GpaSessionAMD -> IO Result) vkGetGpaSessionStatusAMD)
+    (castFunPtr @_ @(Ptr Device_T -> GpaSessionAMD -> ("sampleID" ::: Word32) -> ("pSizeInBytes" ::: Ptr CSize) -> ("pData" ::: Ptr ()) -> IO Result) vkGetGpaSessionResultsAMD)
+    (castFunPtr @_ @(Ptr Device_T -> GpaSessionAMD -> IO Result) vkResetGpaSessionAMD)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> GpaSessionAMD -> IO ()) vkCmdCopyGpaSessionResultsAMD)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pBindDescriptorSetsInfo" ::: Ptr (SomeStruct BindDescriptorSetsInfo)) -> IO ()) vkCmdBindDescriptorSets2)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pPushConstantsInfo" ::: Ptr (SomeStruct PushConstantsInfo)) -> IO ()) vkCmdPushConstants2)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pPushDescriptorSetInfo" ::: Ptr (SomeStruct PushDescriptorSetInfo)) -> IO ()) vkCmdPushDescriptorSet2)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pPushDescriptorSetWithTemplateInfo" ::: Ptr (SomeStruct PushDescriptorSetWithTemplateInfo)) -> IO ()) vkCmdPushDescriptorSetWithTemplate2)
     (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pSetDescriptorBufferOffsetsInfo" ::: Ptr (SomeStruct SetDescriptorBufferOffsetsInfoEXT)) -> IO ()) vkCmdSetDescriptorBufferOffsets2EXT)
     (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pBindDescriptorBufferEmbeddedSamplersInfo" ::: Ptr (SomeStruct BindDescriptorBufferEmbeddedSamplersInfoEXT)) -> IO ()) vkCmdBindDescriptorBufferEmbeddedSamplers2EXT)
     (castFunPtr @_ @(Ptr Device_T -> SwapchainKHR -> ("pSleepModeInfo" ::: Ptr LatencySleepModeInfoNV) -> IO Result) vkSetLatencySleepModeNV)
@@ -2998,7 +3451,76 @@
     (castFunPtr @_ @(Ptr Device_T -> SwapchainKHR -> ("pLatencyMarkerInfo" ::: Ptr SetLatencyMarkerInfoNV) -> IO ()) vkSetLatencyMarkerNV)
     (castFunPtr @_ @(Ptr Device_T -> SwapchainKHR -> ("pLatencyMarkerInfo" ::: Ptr GetLatencyMarkerInfoNV) -> IO ()) vkGetLatencyTimingsNV)
     (castFunPtr @_ @(Ptr Queue_T -> ("pQueueTypeInfo" ::: Ptr OutOfBandQueueTypeInfoNV) -> IO ()) vkQueueNotifyOutOfBandNV)
-    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pLocationInfo" ::: Ptr RenderingAttachmentLocationInfoKHR) -> IO ()) vkCmdSetRenderingAttachmentLocationsKHR)
-    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pInputAttachmentIndexInfo" ::: Ptr RenderingInputAttachmentIndexInfoKHR) -> IO ()) vkCmdSetRenderingInputAttachmentIndicesKHR)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pLocationInfo" ::: Ptr RenderingAttachmentLocationInfo) -> IO ()) vkCmdSetRenderingAttachmentLocations)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pInputAttachmentIndexInfo" ::: Ptr RenderingInputAttachmentIndexInfo) -> IO ()) vkCmdSetRenderingInputAttachmentIndices)
     (castFunPtr @_ @(Ptr CommandBuffer_T -> DepthClampModeEXT -> ("pDepthClampRange" ::: Ptr DepthClampRangeEXT) -> IO ()) vkCmdSetDepthClampRangeEXT)
+    (castFunPtr @_ @(Ptr Device_T -> ("pGetMetalHandleInfo" ::: Ptr MemoryGetMetalHandleInfoEXT) -> ("pHandle" ::: Ptr (Ptr ())) -> IO Result) vkGetMemoryMetalHandleEXT)
+    (castFunPtr @_ @(Ptr Device_T -> ExternalMemoryHandleTypeFlagBits -> ("pHandle" ::: Ptr ()) -> ("pMemoryMetalHandleProperties" ::: Ptr MemoryMetalHandlePropertiesEXT) -> IO Result) vkGetMemoryMetalHandlePropertiesEXT)
+    (castFunPtr @_ @(Ptr Device_T -> ("pInfo" ::: Ptr ConvertCooperativeVectorMatrixInfoNV) -> IO Result) vkConvertCooperativeVectorMatrixNV)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("infoCount" ::: Word32) -> ("pInfos" ::: Ptr ConvertCooperativeVectorMatrixInfoNV) -> IO ()) vkCmdConvertCooperativeVectorMatrixNV)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pDispatchTileInfo" ::: Ptr DispatchTileInfoQCOM) -> IO ()) vkCmdDispatchTileQCOM)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pPerTileBeginInfo" ::: Ptr PerTileBeginInfoQCOM) -> IO ()) vkCmdBeginPerTileExecutionQCOM)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pPerTileEndInfo" ::: Ptr PerTileEndInfoQCOM) -> IO ()) vkCmdEndPerTileExecutionQCOM)
+    (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr ExternalComputeQueueCreateInfoNV) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pExternalQueue" ::: Ptr (Ptr ExternalComputeQueueNV_T)) -> IO Result) vkCreateExternalComputeQueueNV)
+    (castFunPtr @_ @(Ptr Device_T -> ("externalQueue" ::: Ptr ExternalComputeQueueNV_T) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyExternalComputeQueueNV)
+    (castFunPtr @_ @(("externalQueue" ::: Ptr ExternalComputeQueueNV_T) -> Ptr ExternalComputeQueueDataParamsNV -> ("pData" ::: Ptr ()) -> IO ()) vkGetExternalComputeQueueDataNV)
+    (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr ShaderInstrumentationCreateInfoARM) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pInstrumentation" ::: Ptr ShaderInstrumentationARM) -> IO Result) vkCreateShaderInstrumentationARM)
+    (castFunPtr @_ @(Ptr Device_T -> ShaderInstrumentationARM -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyShaderInstrumentationARM)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ShaderInstrumentationARM -> IO ()) vkCmdBeginShaderInstrumentationARM)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> IO ()) vkCmdEndShaderInstrumentationARM)
+    (castFunPtr @_ @(Ptr Device_T -> ShaderInstrumentationARM -> ("pMetricBlockCount" ::: Ptr Word32) -> ("pMetricValues" ::: Ptr ()) -> ShaderInstrumentationValuesFlagsARM -> IO Result) vkGetShaderInstrumentationValuesARM)
+    (castFunPtr @_ @(Ptr Device_T -> ShaderInstrumentationARM -> IO ()) vkClearShaderInstrumentationMetricsARM)
+    (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr (SomeStruct TensorCreateInfoARM)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pTensor" ::: Ptr TensorARM) -> IO Result) vkCreateTensorARM)
+    (castFunPtr @_ @(Ptr Device_T -> TensorARM -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyTensorARM)
+    (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr (SomeStruct TensorViewCreateInfoARM)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pView" ::: Ptr TensorViewARM) -> IO Result) vkCreateTensorViewARM)
+    (castFunPtr @_ @(Ptr Device_T -> TensorViewARM -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyTensorViewARM)
+    (castFunPtr @_ @(Ptr Device_T -> ("pInfo" ::: Ptr TensorMemoryRequirementsInfoARM) -> ("pMemoryRequirements" ::: Ptr (SomeStruct MemoryRequirements2)) -> IO ()) vkGetTensorMemoryRequirementsARM)
+    (castFunPtr @_ @(Ptr Device_T -> ("bindInfoCount" ::: Word32) -> ("pBindInfos" ::: Ptr BindTensorMemoryInfoARM) -> IO Result) vkBindTensorMemoryARM)
+    (castFunPtr @_ @(Ptr Device_T -> ("pInfo" ::: Ptr DeviceTensorMemoryRequirementsARM) -> ("pMemoryRequirements" ::: Ptr (SomeStruct MemoryRequirements2)) -> IO ()) vkGetDeviceTensorMemoryRequirementsARM)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pCopyTensorInfo" ::: Ptr CopyTensorInfoARM) -> IO ()) vkCmdCopyTensorARM)
+    (castFunPtr @_ @(Ptr Device_T -> ("pInfo" ::: Ptr TensorCaptureDescriptorDataInfoARM) -> ("pData" ::: Ptr ()) -> IO Result) vkGetTensorOpaqueCaptureDescriptorDataARM)
+    (castFunPtr @_ @(Ptr Device_T -> ("pInfo" ::: Ptr TensorViewCaptureDescriptorDataInfoARM) -> ("pData" ::: Ptr ()) -> IO Result) vkGetTensorViewOpaqueCaptureDescriptorDataARM)
+    (castFunPtr @_ @(Ptr Device_T -> DeferredOperationKHR -> PipelineCache -> ("createInfoCount" ::: Word32) -> ("pCreateInfos" ::: Ptr (SomeStruct DataGraphPipelineCreateInfoARM)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pPipelines" ::: Ptr Pipeline) -> IO Result) vkCreateDataGraphPipelinesARM)
+    (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr (SomeStruct DataGraphPipelineSessionCreateInfoARM)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSession" ::: Ptr DataGraphPipelineSessionARM) -> IO Result) vkCreateDataGraphPipelineSessionARM)
+    (castFunPtr @_ @(Ptr Device_T -> ("pInfo" ::: Ptr DataGraphPipelineSessionBindPointRequirementsInfoARM) -> ("pBindPointRequirementCount" ::: Ptr Word32) -> ("pBindPointRequirements" ::: Ptr DataGraphPipelineSessionBindPointRequirementARM) -> IO Result) vkGetDataGraphPipelineSessionBindPointRequirementsARM)
+    (castFunPtr @_ @(Ptr Device_T -> ("pInfo" ::: Ptr DataGraphPipelineSessionMemoryRequirementsInfoARM) -> ("pMemoryRequirements" ::: Ptr (SomeStruct MemoryRequirements2)) -> IO ()) vkGetDataGraphPipelineSessionMemoryRequirementsARM)
+    (castFunPtr @_ @(Ptr Device_T -> ("bindInfoCount" ::: Word32) -> ("pBindInfos" ::: Ptr BindDataGraphPipelineSessionMemoryInfoARM) -> IO Result) vkBindDataGraphPipelineSessionMemoryARM)
+    (castFunPtr @_ @(Ptr Device_T -> DataGraphPipelineSessionARM -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyDataGraphPipelineSessionARM)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> DataGraphPipelineSessionARM -> ("pInfo" ::: Ptr (SomeStruct DataGraphPipelineDispatchInfoARM)) -> IO ()) vkCmdDispatchDataGraphARM)
+    (castFunPtr @_ @(Ptr Device_T -> ("pPipelineInfo" ::: Ptr DataGraphPipelineInfoARM) -> ("pPropertiesCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr DataGraphPipelinePropertyARM) -> IO Result) vkGetDataGraphPipelineAvailablePropertiesARM)
+    (castFunPtr @_ @(Ptr Device_T -> ("pPipelineInfo" ::: Ptr DataGraphPipelineInfoARM) -> ("propertiesCount" ::: Word32) -> ("pProperties" ::: Ptr DataGraphPipelinePropertyQueryResultARM) -> IO Result) vkGetDataGraphPipelinePropertiesARM)
+    (castFunPtr @_ @(Ptr Queue_T -> ("pPerfHintInfo" ::: Ptr PerfHintInfoQCOM) -> IO Result) vkQueueSetPerfHintQCOM)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pParameters" ::: Ptr ComputeOccupancyPriorityParametersNV) -> IO ()) vkCmdSetComputeOccupancyPriorityNV)
+    (castFunPtr @_ @(Ptr Device_T -> ("samplerCount" ::: Word32) -> ("pSamplers" ::: Ptr (SomeStruct SamplerCreateInfo)) -> ("pDescriptors" ::: Ptr HostAddressRangeEXT) -> IO Result) vkWriteSamplerDescriptorsEXT)
+    (castFunPtr @_ @(Ptr Device_T -> ("resourceCount" ::: Word32) -> ("pResources" ::: Ptr (SomeStruct ResourceDescriptorInfoEXT)) -> ("pDescriptors" ::: Ptr HostAddressRangeEXT) -> IO Result) vkWriteResourceDescriptorsEXT)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pBindInfo" ::: Ptr BindHeapInfoEXT) -> IO ()) vkCmdBindSamplerHeapEXT)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pBindInfo" ::: Ptr BindHeapInfoEXT) -> IO ()) vkCmdBindResourceHeapEXT)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pPushDataInfo" ::: Ptr (SomeStruct PushDataInfoEXT)) -> IO ()) vkCmdPushDataEXT)
+    (castFunPtr @_ @(Ptr Device_T -> ("pBorderColor" ::: Ptr SamplerCustomBorderColorCreateInfoEXT) -> ("requestIndex" ::: Bool32) -> ("pIndex" ::: Ptr Word32) -> IO Result) vkRegisterCustomBorderColorEXT)
+    (castFunPtr @_ @(Ptr Device_T -> ("index" ::: Word32) -> IO ()) vkUnregisterCustomBorderColorEXT)
+    (castFunPtr @_ @(Ptr Device_T -> ("imageCount" ::: Word32) -> ("pImages" ::: Ptr Image) -> ("pDatas" ::: Ptr HostAddressRangeEXT) -> IO Result) vkGetImageOpaqueCaptureDataEXT)
+    (castFunPtr @_ @(Ptr Device_T -> ("tensorCount" ::: Word32) -> ("pTensors" ::: Ptr TensorARM) -> ("pDatas" ::: Ptr HostAddressRangeEXT) -> IO Result) vkGetTensorOpaqueCaptureDataARM)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pCopyMemoryInfo" ::: Ptr CopyDeviceMemoryInfoKHR) -> IO ()) vkCmdCopyMemoryKHR)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pCopyMemoryInfo" ::: Ptr CopyDeviceMemoryImageInfoKHR) -> IO ()) vkCmdCopyMemoryToImageKHR)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pCopyMemoryInfo" ::: Ptr CopyDeviceMemoryImageInfoKHR) -> IO ()) vkCmdCopyImageToMemoryKHR)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pDstRange" ::: Ptr DeviceAddressRangeKHR) -> ("dstFlags" ::: AddressCommandFlagsKHR) -> ("dataSize" ::: DeviceSize) -> ("pData" ::: Ptr ()) -> IO ()) vkCmdUpdateMemoryKHR)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pDstRange" ::: Ptr DeviceAddressRangeKHR) -> ("dstFlags" ::: AddressCommandFlagsKHR) -> ("data" ::: Word32) -> IO ()) vkCmdFillMemoryKHR)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> QueryPool -> ("firstQuery" ::: Word32) -> ("queryCount" ::: Word32) -> ("pDstRange" ::: Ptr StridedDeviceAddressRangeKHR) -> ("dstFlags" ::: AddressCommandFlagsKHR) -> QueryResultFlags -> IO ()) vkCmdCopyQueryPoolResultsToMemoryKHR)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pConditionalRenderingBegin" ::: Ptr ConditionalRenderingBeginInfo2EXT) -> IO ()) vkCmdBeginConditionalRendering2EXT)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("firstBinding" ::: Word32) -> ("bindingCount" ::: Word32) -> ("pBindingInfos" ::: Ptr BindTransformFeedbackBuffer2InfoEXT) -> IO ()) vkCmdBindTransformFeedbackBuffers2EXT)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("firstCounterRange" ::: Word32) -> ("counterRangeCount" ::: Word32) -> ("pCounterInfos" ::: Ptr BindTransformFeedbackBuffer2InfoEXT) -> IO ()) vkCmdBeginTransformFeedback2EXT)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("firstCounterRange" ::: Word32) -> ("counterRangeCount" ::: Word32) -> ("pCounterInfos" ::: Ptr BindTransformFeedbackBuffer2InfoEXT) -> IO ()) vkCmdEndTransformFeedback2EXT)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("instanceCount" ::: Word32) -> ("firstInstance" ::: Word32) -> ("pCounterInfo" ::: Ptr BindTransformFeedbackBuffer2InfoEXT) -> ("counterOffset" ::: Word32) -> ("vertexStride" ::: Word32) -> IO ()) vkCmdDrawIndirectByteCount2EXT)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pInfo" ::: Ptr MemoryMarkerInfoAMD) -> IO ()) vkCmdWriteMarkerToMemoryAMD)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pInfo" ::: Ptr BindIndexBuffer3InfoKHR) -> IO ()) vkCmdBindIndexBuffer3KHR)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("firstBinding" ::: Word32) -> ("bindingCount" ::: Word32) -> ("pBindingInfos" ::: Ptr BindVertexBuffer3InfoKHR) -> IO ()) vkCmdBindVertexBuffers3KHR)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pInfo" ::: Ptr DrawIndirect2InfoKHR) -> IO ()) vkCmdDrawIndirect2KHR)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pInfo" ::: Ptr DrawIndirect2InfoKHR) -> IO ()) vkCmdDrawIndexedIndirect2KHR)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pInfo" ::: Ptr DrawIndirectCount2InfoKHR) -> IO ()) vkCmdDrawIndirectCount2KHR)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pInfo" ::: Ptr DrawIndirectCount2InfoKHR) -> IO ()) vkCmdDrawIndexedIndirectCount2KHR)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pInfo" ::: Ptr DrawIndirect2InfoKHR) -> IO ()) vkCmdDrawMeshTasksIndirect2EXT)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pInfo" ::: Ptr DrawIndirectCount2InfoKHR) -> IO ()) vkCmdDrawMeshTasksIndirectCount2EXT)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pInfo" ::: Ptr DispatchIndirect2InfoKHR) -> IO ()) vkCmdDispatchIndirect2KHR)
+    (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr (SomeStruct AccelerationStructureCreateInfo2KHR)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pAccelerationStructure" ::: Ptr AccelerationStructureKHR) -> IO Result) vkCreateAccelerationStructure2KHR)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pDispatchParameters" ::: Ptr DispatchParametersARM) -> IO ()) vkCmdSetDispatchParametersARM)
 
diff --git a/src/Vulkan/Exception.hs b/src/Vulkan/Exception.hs
--- a/src/Vulkan/Exception.hs
+++ b/src/Vulkan/Exception.hs
@@ -16,7 +16,7 @@
 -- | A human understandable message for each VkResult
 resultString :: Result -> String
 resultString = \case
-  SUCCESS -> "Command successfully completed"
+  SUCCESS -> "Command completed successfully"
   NOT_READY -> "A fence or query has not yet completed"
   TIMEOUT -> "A wait operation has not completed in the specified time"
   EVENT_SET -> "An event is signaled"
@@ -24,38 +24,16 @@
   INCOMPLETE -> "A return array was too small for the result"
   ERROR_OUT_OF_HOST_MEMORY -> "A host memory allocation has failed"
   ERROR_OUT_OF_DEVICE_MEMORY -> "A device memory allocation has failed"
-  ERROR_INITIALIZATION_FAILED -> "Initialization of an object could not be completed for implementation-specific reasons"
-  ERROR_DEVICE_LOST -> "The logical or physical device has been lost"
+  ERROR_INITIALIZATION_FAILED -> "Initialization of an object has failed"
+  ERROR_DEVICE_LOST -> "The logical device has been lost. See &lt;&lt;devsandqueues-lost-device&gt;&gt;"
   ERROR_MEMORY_MAP_FAILED -> "Mapping of a memory object has failed"
-  ERROR_LAYER_NOT_PRESENT -> "A requested layer is not present or could not be loaded"
-  ERROR_EXTENSION_NOT_PRESENT -> "A requested extension is not supported"
-  ERROR_FEATURE_NOT_PRESENT -> "A requested feature is not supported"
-  ERROR_INCOMPATIBLE_DRIVER -> "The requested version of Vulkan is not supported by the driver or is otherwise incompatible for implementation-specific reasons"
+  ERROR_LAYER_NOT_PRESENT -> "Layer specified does not exist"
+  ERROR_EXTENSION_NOT_PRESENT -> "Extension specified does not exist"
+  ERROR_FEATURE_NOT_PRESENT -> "Requested feature is not available on this device"
+  ERROR_INCOMPATIBLE_DRIVER -> "Unable to find a Vulkan driver"
   ERROR_TOO_MANY_OBJECTS -> "Too many objects of the type have already been created"
-  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"
-  ERROR_NOT_ENOUGH_SPACE_KHR -> "The application did not provide enough space to return all the required data"
-  PIPELINE_BINARY_MISSING_KHR -> "The application attempted to create a pipeline binary by querying an internal cache, but the internal cache entry did not exist"
-  INCOMPATIBLE_SHADER_BINARY_EXT -> "The provided binary shader code is not compatible with this device"
-  ERROR_COMPRESSION_EXHAUSTED_EXT -> "An image creation failed because internal resources required for compression are exhausted"
-  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"
-  THREAD_IDLE_KHR -> "A deferred operation is not complete but there is currently no work for this thread to do at the time of this call"
-  ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT -> "An operation on a swapchain created with VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT failed as it did not have exclusive full-screen access"
-  ERROR_NOT_PERMITTED_KHR -> "The driver implementation has denied a request to acquire a priority above the default priority (VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT) because the application does not have sufficient privileges"
-  ERROR_INVALID_SHADER_NV -> "One or more shaders failed to compile or link"
-  ERROR_VALIDATION_FAILED_EXT -> "A command failed because invalid usage was detected by the implementation or a validation-layer"
-  ERROR_INCOMPATIBLE_DISPLAY_KHR -> "The display used by a swapchain does not use the same presentable image layout, or is incompatible in a way that prevents sharing an image"
-  ERROR_OUT_OF_DATE_KHR -> "A surface has changed in such a way that it is no longer compatible with the swapchain, and further presentation requests using the swapchain will fail"
-  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"
-  ERROR_OUT_OF_POOL_MEMORY -> "A pool memory allocation has failed"
+  ERROR_FORMAT_NOT_SUPPORTED -> "Requested format is not supported on this device"
+  ERROR_FRAGMENTED_POOL -> "A requested pool allocation has failed due to fragmentation of the pool's memory"
+  ERROR_UNKNOWN -> "An unknown error has occurred, due to an implementation or application bug"
   r -> show r
 
diff --git a/src/Vulkan/Extensions.hs b/src/Vulkan/Extensions.hs
--- a/src/Vulkan/Extensions.hs
+++ b/src/Vulkan/Extensions.hs
@@ -2,6 +2,7 @@
 -- No documentation found for Chapter "Extensions"
 module Vulkan.Extensions  ( module Vulkan.Extensions.Dependencies
                           , module Vulkan.Extensions.Handles
+                          , module Vulkan.Extensions.VK_AMDX_dense_geometry_format
                           , module Vulkan.Extensions.VK_AMDX_shader_enqueue
                           , module Vulkan.Extensions.VK_AMD_anti_lag
                           , module Vulkan.Extensions.VK_AMD_buffer_marker
@@ -9,6 +10,7 @@
                           , module Vulkan.Extensions.VK_AMD_display_native_hdr
                           , module Vulkan.Extensions.VK_AMD_draw_indirect_count
                           , module Vulkan.Extensions.VK_AMD_gcn_shader
+                          , module Vulkan.Extensions.VK_AMD_gpa_interface
                           , module Vulkan.Extensions.VK_AMD_gpu_shader_half_float
                           , module Vulkan.Extensions.VK_AMD_gpu_shader_int16
                           , module Vulkan.Extensions.VK_AMD_memory_overallocation_behavior
@@ -28,11 +30,19 @@
                           , module Vulkan.Extensions.VK_AMD_texture_gather_bias_lod
                           , module Vulkan.Extensions.VK_ANDROID_external_format_resolve
                           , module Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer
+                          , module Vulkan.Extensions.VK_ARM_data_graph
+                          , module Vulkan.Extensions.VK_ARM_data_graph_instruction_set_tosa
+                          , module Vulkan.Extensions.VK_ARM_data_graph_neural_accelerator_statistics
+                          , module Vulkan.Extensions.VK_ARM_data_graph_optical_flow
+                          , module Vulkan.Extensions.VK_ARM_format_pack
+                          , module Vulkan.Extensions.VK_ARM_pipeline_opacity_micromap
                           , module Vulkan.Extensions.VK_ARM_rasterization_order_attachment_access
                           , module Vulkan.Extensions.VK_ARM_render_pass_striped
                           , module Vulkan.Extensions.VK_ARM_scheduling_controls
                           , module Vulkan.Extensions.VK_ARM_shader_core_builtins
                           , module Vulkan.Extensions.VK_ARM_shader_core_properties
+                          , module Vulkan.Extensions.VK_ARM_shader_instrumentation
+                          , module Vulkan.Extensions.VK_ARM_tensors
                           , module Vulkan.Extensions.VK_EXT_4444_formats
                           , module Vulkan.Extensions.VK_EXT_acquire_drm_display
                           , module Vulkan.Extensions.VK_EXT_acquire_xlib_display
@@ -47,6 +57,7 @@
                           , module Vulkan.Extensions.VK_EXT_conditional_rendering
                           , module Vulkan.Extensions.VK_EXT_conservative_rasterization
                           , module Vulkan.Extensions.VK_EXT_custom_border_color
+                          , module Vulkan.Extensions.VK_EXT_custom_resolve
                           , module Vulkan.Extensions.VK_EXT_debug_marker
                           , module Vulkan.Extensions.VK_EXT_debug_report
                           , module Vulkan.Extensions.VK_EXT_debug_utils
@@ -57,6 +68,7 @@
                           , module Vulkan.Extensions.VK_EXT_depth_clip_enable
                           , module Vulkan.Extensions.VK_EXT_depth_range_unrestricted
                           , module Vulkan.Extensions.VK_EXT_descriptor_buffer
+                          , module Vulkan.Extensions.VK_EXT_descriptor_heap
                           , module Vulkan.Extensions.VK_EXT_descriptor_indexing
                           , module Vulkan.Extensions.VK_EXT_device_address_binding_report
                           , module Vulkan.Extensions.VK_EXT_device_fault
@@ -74,9 +86,11 @@
                           , module Vulkan.Extensions.VK_EXT_external_memory_acquire_unmodified
                           , module Vulkan.Extensions.VK_EXT_external_memory_dma_buf
                           , module Vulkan.Extensions.VK_EXT_external_memory_host
+                          , module Vulkan.Extensions.VK_EXT_external_memory_metal
                           , module Vulkan.Extensions.VK_EXT_filter_cubic
                           , module Vulkan.Extensions.VK_EXT_fragment_density_map
                           , module Vulkan.Extensions.VK_EXT_fragment_density_map2
+                          , module Vulkan.Extensions.VK_EXT_fragment_density_map_offset
                           , module Vulkan.Extensions.VK_EXT_fragment_shader_interlock
                           , module Vulkan.Extensions.VK_EXT_frame_boundary
                           , module Vulkan.Extensions.VK_EXT_full_screen_exclusive
@@ -103,6 +117,7 @@
                           , module Vulkan.Extensions.VK_EXT_load_store_op_none
                           , module Vulkan.Extensions.VK_EXT_map_memory_placed
                           , module Vulkan.Extensions.VK_EXT_memory_budget
+                          , module Vulkan.Extensions.VK_EXT_memory_decompression
                           , module Vulkan.Extensions.VK_EXT_memory_priority
                           , module Vulkan.Extensions.VK_EXT_mesh_shader
                           , module Vulkan.Extensions.VK_EXT_metal_objects
@@ -124,29 +139,38 @@
                           , module Vulkan.Extensions.VK_EXT_pipeline_robustness
                           , module Vulkan.Extensions.VK_EXT_post_depth_coverage
                           , module Vulkan.Extensions.VK_EXT_present_mode_fifo_latest_ready
+                          , module Vulkan.Extensions.VK_EXT_present_timing
+                          , module Vulkan.Extensions.VK_EXT_primitive_restart_index
                           , module Vulkan.Extensions.VK_EXT_primitive_topology_list_restart
                           , module Vulkan.Extensions.VK_EXT_primitives_generated_query
                           , module Vulkan.Extensions.VK_EXT_private_data
                           , module Vulkan.Extensions.VK_EXT_provoking_vertex
                           , module Vulkan.Extensions.VK_EXT_queue_family_foreign
                           , module Vulkan.Extensions.VK_EXT_rasterization_order_attachment_access
+                          , module Vulkan.Extensions.VK_EXT_ray_tracing_invocation_reorder
                           , module Vulkan.Extensions.VK_EXT_rgba10x6_formats
                           , module Vulkan.Extensions.VK_EXT_robustness2
                           , module Vulkan.Extensions.VK_EXT_sample_locations
                           , module Vulkan.Extensions.VK_EXT_sampler_filter_minmax
                           , module Vulkan.Extensions.VK_EXT_scalar_block_layout
                           , module Vulkan.Extensions.VK_EXT_separate_stencil_usage
+                          , module Vulkan.Extensions.VK_EXT_shader_64bit_indexing
                           , module Vulkan.Extensions.VK_EXT_shader_atomic_float
                           , module Vulkan.Extensions.VK_EXT_shader_atomic_float2
                           , module Vulkan.Extensions.VK_EXT_shader_demote_to_helper_invocation
+                          , module Vulkan.Extensions.VK_EXT_shader_float8
                           , module Vulkan.Extensions.VK_EXT_shader_image_atomic_int64
+                          , module Vulkan.Extensions.VK_EXT_shader_long_vector
                           , module Vulkan.Extensions.VK_EXT_shader_module_identifier
                           , module Vulkan.Extensions.VK_EXT_shader_object
                           , module Vulkan.Extensions.VK_EXT_shader_replicated_composites
+                          , module Vulkan.Extensions.VK_EXT_shader_split_barrier
                           , module Vulkan.Extensions.VK_EXT_shader_stencil_export
                           , module Vulkan.Extensions.VK_EXT_shader_subgroup_ballot
+                          , module Vulkan.Extensions.VK_EXT_shader_subgroup_partitioned
                           , module Vulkan.Extensions.VK_EXT_shader_subgroup_vote
                           , module Vulkan.Extensions.VK_EXT_shader_tile_image
+                          , module Vulkan.Extensions.VK_EXT_shader_uniform_buffer_unsized_array
                           , module Vulkan.Extensions.VK_EXT_shader_viewport_index_layer
                           , module Vulkan.Extensions.VK_EXT_subgroup_size_control
                           , module Vulkan.Extensions.VK_EXT_subpass_merge_feedback
@@ -154,6 +178,7 @@
                           , module Vulkan.Extensions.VK_EXT_swapchain_colorspace
                           , module Vulkan.Extensions.VK_EXT_swapchain_maintenance1
                           , module Vulkan.Extensions.VK_EXT_texel_buffer_alignment
+                          , module Vulkan.Extensions.VK_EXT_texture_compression_astc_3d
                           , module Vulkan.Extensions.VK_EXT_texture_compression_astc_hdr
                           , module Vulkan.Extensions.VK_EXT_tooling_info
                           , module Vulkan.Extensions.VK_EXT_transform_feedback
@@ -165,6 +190,7 @@
                           , module Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state
                           , module Vulkan.Extensions.VK_EXT_ycbcr_2plane_444_formats
                           , module Vulkan.Extensions.VK_EXT_ycbcr_image_arrays
+                          , module Vulkan.Extensions.VK_EXT_zero_initialize_device_memory
                           , module Vulkan.Extensions.VK_FUCHSIA_buffer_collection
                           , module Vulkan.Extensions.VK_FUCHSIA_external_memory
                           , module Vulkan.Extensions.VK_FUCHSIA_external_semaphore
@@ -195,11 +221,15 @@
                           , module Vulkan.Extensions.VK_KHR_compute_shader_derivatives
                           , module Vulkan.Extensions.VK_KHR_cooperative_matrix
                           , module Vulkan.Extensions.VK_KHR_copy_commands2
+                          , module Vulkan.Extensions.VK_KHR_copy_memory_indirect
                           , module Vulkan.Extensions.VK_KHR_create_renderpass2
                           , module Vulkan.Extensions.VK_KHR_dedicated_allocation
                           , module Vulkan.Extensions.VK_KHR_deferred_host_operations
+                          , module Vulkan.Extensions.VK_KHR_depth_clamp_zero_one
                           , module Vulkan.Extensions.VK_KHR_depth_stencil_resolve
                           , module Vulkan.Extensions.VK_KHR_descriptor_update_template
+                          , module Vulkan.Extensions.VK_KHR_device_address_commands
+                          , module Vulkan.Extensions.VK_KHR_device_fault
                           , module Vulkan.Extensions.VK_KHR_device_group
                           , module Vulkan.Extensions.VK_KHR_device_group_creation
                           , module Vulkan.Extensions.VK_KHR_display
@@ -232,17 +262,23 @@
                           , module Vulkan.Extensions.VK_KHR_imageless_framebuffer
                           , module Vulkan.Extensions.VK_KHR_incremental_present
                           , module Vulkan.Extensions.VK_KHR_index_type_uint8
+                          , module Vulkan.Extensions.VK_KHR_internally_synchronized_queues
                           , module Vulkan.Extensions.VK_KHR_line_rasterization
                           , module Vulkan.Extensions.VK_KHR_load_store_op_none
                           , module Vulkan.Extensions.VK_KHR_maintenance1
+                          , module Vulkan.Extensions.VK_KHR_maintenance10
+                          , module Vulkan.Extensions.VK_KHR_maintenance11
                           , module Vulkan.Extensions.VK_KHR_maintenance2
                           , module Vulkan.Extensions.VK_KHR_maintenance3
                           , module Vulkan.Extensions.VK_KHR_maintenance4
                           , module Vulkan.Extensions.VK_KHR_maintenance5
                           , module Vulkan.Extensions.VK_KHR_maintenance6
                           , module Vulkan.Extensions.VK_KHR_maintenance7
+                          , module Vulkan.Extensions.VK_KHR_maintenance8
+                          , module Vulkan.Extensions.VK_KHR_maintenance9
                           , module Vulkan.Extensions.VK_KHR_map_memory2
                           , module Vulkan.Extensions.VK_KHR_multiview
+                          , module Vulkan.Extensions.VK_KHR_opacity_micromap
                           , module Vulkan.Extensions.VK_KHR_performance_query
                           , module Vulkan.Extensions.VK_KHR_pipeline_binary
                           , module Vulkan.Extensions.VK_KHR_pipeline_executable_properties
@@ -250,23 +286,31 @@
                           , module Vulkan.Extensions.VK_KHR_portability_enumeration
                           , module Vulkan.Extensions.VK_KHR_portability_subset
                           , module Vulkan.Extensions.VK_KHR_present_id
+                          , module Vulkan.Extensions.VK_KHR_present_id2
+                          , module Vulkan.Extensions.VK_KHR_present_mode_fifo_latest_ready
                           , module Vulkan.Extensions.VK_KHR_present_wait
+                          , module Vulkan.Extensions.VK_KHR_present_wait2
                           , module Vulkan.Extensions.VK_KHR_push_descriptor
                           , module Vulkan.Extensions.VK_KHR_ray_query
                           , module Vulkan.Extensions.VK_KHR_ray_tracing_maintenance1
                           , module Vulkan.Extensions.VK_KHR_ray_tracing_pipeline
                           , module Vulkan.Extensions.VK_KHR_ray_tracing_position_fetch
                           , module Vulkan.Extensions.VK_KHR_relaxed_block_layout
+                          , module Vulkan.Extensions.VK_KHR_robustness2
                           , module Vulkan.Extensions.VK_KHR_sampler_mirror_clamp_to_edge
                           , module Vulkan.Extensions.VK_KHR_sampler_ycbcr_conversion
                           , module Vulkan.Extensions.VK_KHR_separate_depth_stencil_layouts
+                          , module Vulkan.Extensions.VK_KHR_shader_abort
                           , module Vulkan.Extensions.VK_KHR_shader_atomic_int64
+                          , module Vulkan.Extensions.VK_KHR_shader_bfloat16
                           , module Vulkan.Extensions.VK_KHR_shader_clock
+                          , module Vulkan.Extensions.VK_KHR_shader_constant_data
                           , module Vulkan.Extensions.VK_KHR_shader_draw_parameters
                           , module Vulkan.Extensions.VK_KHR_shader_expect_assume
                           , module Vulkan.Extensions.VK_KHR_shader_float16_int8
                           , module Vulkan.Extensions.VK_KHR_shader_float_controls
                           , module Vulkan.Extensions.VK_KHR_shader_float_controls2
+                          , module Vulkan.Extensions.VK_KHR_shader_fma
                           , module Vulkan.Extensions.VK_KHR_shader_integer_dot_product
                           , module Vulkan.Extensions.VK_KHR_shader_maximal_reconvergence
                           , module Vulkan.Extensions.VK_KHR_shader_non_semantic_info
@@ -276,15 +320,19 @@
                           , module Vulkan.Extensions.VK_KHR_shader_subgroup_rotate
                           , module Vulkan.Extensions.VK_KHR_shader_subgroup_uniform_control_flow
                           , module Vulkan.Extensions.VK_KHR_shader_terminate_invocation
+                          , module Vulkan.Extensions.VK_KHR_shader_untyped_pointers
                           , module Vulkan.Extensions.VK_KHR_shared_presentable_image
                           , module Vulkan.Extensions.VK_KHR_spirv_1_4
                           , module Vulkan.Extensions.VK_KHR_storage_buffer_storage_class
                           , module Vulkan.Extensions.VK_KHR_surface
+                          , module Vulkan.Extensions.VK_KHR_surface_maintenance1
                           , module Vulkan.Extensions.VK_KHR_surface_protected_capabilities
                           , module Vulkan.Extensions.VK_KHR_swapchain
+                          , module Vulkan.Extensions.VK_KHR_swapchain_maintenance1
                           , module Vulkan.Extensions.VK_KHR_swapchain_mutable_format
                           , module Vulkan.Extensions.VK_KHR_synchronization2
                           , module Vulkan.Extensions.VK_KHR_timeline_semaphore
+                          , module Vulkan.Extensions.VK_KHR_unified_image_layouts
                           , module Vulkan.Extensions.VK_KHR_uniform_buffer_standard_layout
                           , module Vulkan.Extensions.VK_KHR_variable_pointers
                           , module Vulkan.Extensions.VK_KHR_vertex_attribute_divisor
@@ -308,9 +356,11 @@
                           , module Vulkan.Extensions.VK_NV_acquire_winrt_display
                           , module Vulkan.Extensions.VK_NV_clip_space_w_scaling
                           , module Vulkan.Extensions.VK_NV_command_buffer_inheritance
+                          , module Vulkan.Extensions.VK_NV_compute_occupancy_priority
                           , module Vulkan.Extensions.VK_NV_compute_shader_derivatives
                           , module Vulkan.Extensions.VK_NV_cooperative_matrix
                           , module Vulkan.Extensions.VK_NV_cooperative_matrix2
+                          , module Vulkan.Extensions.VK_NV_cooperative_vector
                           , module Vulkan.Extensions.VK_NV_copy_memory_indirect
                           , module Vulkan.Extensions.VK_NV_corner_sampled_image
                           , module Vulkan.Extensions.VK_NV_coverage_reduction_mode
@@ -325,6 +375,7 @@
                           , module Vulkan.Extensions.VK_NV_displacement_micromap
                           , module Vulkan.Extensions.VK_NV_display_stereo
                           , module Vulkan.Extensions.VK_NV_extended_sparse_address_space
+                          , module Vulkan.Extensions.VK_NV_external_compute_queue
                           , module Vulkan.Extensions.VK_NV_external_memory
                           , module Vulkan.Extensions.VK_NV_external_memory_capabilities
                           , module Vulkan.Extensions.VK_NV_external_memory_rdma
@@ -345,9 +396,12 @@
                           , module Vulkan.Extensions.VK_NV_optical_flow
                           , module Vulkan.Extensions.VK_NV_per_stage_descriptor_set
                           , module Vulkan.Extensions.VK_NV_present_barrier
+                          , module Vulkan.Extensions.VK_NV_present_metering
+                          , module Vulkan.Extensions.VK_NV_push_constant_bank
                           , module Vulkan.Extensions.VK_NV_raw_access_chains
                           , module Vulkan.Extensions.VK_NV_ray_tracing
                           , module Vulkan.Extensions.VK_NV_ray_tracing_invocation_reorder
+                          , module Vulkan.Extensions.VK_NV_ray_tracing_linear_swept_spheres
                           , module Vulkan.Extensions.VK_NV_ray_tracing_motion_blur
                           , module Vulkan.Extensions.VK_NV_ray_tracing_validation
                           , module Vulkan.Extensions.VK_NV_representative_fragment_test
@@ -361,27 +415,40 @@
                           , module Vulkan.Extensions.VK_NV_viewport_array2
                           , module Vulkan.Extensions.VK_NV_viewport_swizzle
                           , module Vulkan.Extensions.VK_NV_win32_keyed_mutex
+                          , module Vulkan.Extensions.VK_QCOM_cooperative_matrix_conversion
+                          , module Vulkan.Extensions.VK_QCOM_data_graph_model
+                          , module Vulkan.Extensions.VK_QCOM_elapsed_timer_query
                           , module Vulkan.Extensions.VK_QCOM_filter_cubic_clamp
                           , module Vulkan.Extensions.VK_QCOM_filter_cubic_weights
                           , module Vulkan.Extensions.VK_QCOM_fragment_density_map_offset
                           , module Vulkan.Extensions.VK_QCOM_image_processing
                           , module Vulkan.Extensions.VK_QCOM_image_processing2
+                          , module Vulkan.Extensions.VK_QCOM_image_processing3
                           , module Vulkan.Extensions.VK_QCOM_multiview_per_view_render_areas
                           , module Vulkan.Extensions.VK_QCOM_multiview_per_view_viewports
+                          , module Vulkan.Extensions.VK_QCOM_queue_perf_hint
                           , module Vulkan.Extensions.VK_QCOM_render_pass_shader_resolve
                           , module Vulkan.Extensions.VK_QCOM_render_pass_store_ops
                           , module Vulkan.Extensions.VK_QCOM_render_pass_transform
                           , module Vulkan.Extensions.VK_QCOM_rotated_copy_commands
+                          , module Vulkan.Extensions.VK_QCOM_shader_multiple_wait_queues
+                          , module Vulkan.Extensions.VK_QCOM_tile_memory_heap
                           , module Vulkan.Extensions.VK_QCOM_tile_properties
+                          , module Vulkan.Extensions.VK_QCOM_tile_shading
                           , module Vulkan.Extensions.VK_QCOM_ycbcr_degamma
                           , module Vulkan.Extensions.VK_QNX_external_memory_screen_buffer
                           , module Vulkan.Extensions.VK_QNX_screen_surface
                           , module Vulkan.Extensions.VK_SEC_amigo_profiling
+                          , module Vulkan.Extensions.VK_SEC_pipeline_cache_incremental_mode
+                          , module Vulkan.Extensions.VK_SEC_throttle_hint
                           , module Vulkan.Extensions.VK_VALVE_descriptor_set_host_mapping
+                          , module Vulkan.Extensions.VK_VALVE_fragment_density_map_layered
                           , module Vulkan.Extensions.VK_VALVE_mutable_descriptor_type
+                          , module Vulkan.Extensions.VK_VALVE_shader_mixed_float_dot_product
                           ) where
 import Vulkan.Extensions.Dependencies
 import Vulkan.Extensions.Handles
+import Vulkan.Extensions.VK_AMDX_dense_geometry_format
 import Vulkan.Extensions.VK_AMDX_shader_enqueue
 import Vulkan.Extensions.VK_AMD_anti_lag
 import Vulkan.Extensions.VK_AMD_buffer_marker
@@ -389,6 +456,7 @@
 import Vulkan.Extensions.VK_AMD_display_native_hdr
 import Vulkan.Extensions.VK_AMD_draw_indirect_count
 import Vulkan.Extensions.VK_AMD_gcn_shader
+import Vulkan.Extensions.VK_AMD_gpa_interface
 import Vulkan.Extensions.VK_AMD_gpu_shader_half_float
 import Vulkan.Extensions.VK_AMD_gpu_shader_int16
 import Vulkan.Extensions.VK_AMD_memory_overallocation_behavior
@@ -408,11 +476,19 @@
 import Vulkan.Extensions.VK_AMD_texture_gather_bias_lod
 import Vulkan.Extensions.VK_ANDROID_external_format_resolve
 import Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer
+import Vulkan.Extensions.VK_ARM_data_graph
+import Vulkan.Extensions.VK_ARM_data_graph_instruction_set_tosa
+import Vulkan.Extensions.VK_ARM_data_graph_neural_accelerator_statistics
+import Vulkan.Extensions.VK_ARM_data_graph_optical_flow
+import Vulkan.Extensions.VK_ARM_format_pack
+import Vulkan.Extensions.VK_ARM_pipeline_opacity_micromap
 import Vulkan.Extensions.VK_ARM_rasterization_order_attachment_access
 import Vulkan.Extensions.VK_ARM_render_pass_striped
 import Vulkan.Extensions.VK_ARM_scheduling_controls
 import Vulkan.Extensions.VK_ARM_shader_core_builtins
 import Vulkan.Extensions.VK_ARM_shader_core_properties
+import Vulkan.Extensions.VK_ARM_shader_instrumentation
+import Vulkan.Extensions.VK_ARM_tensors
 import Vulkan.Extensions.VK_EXT_4444_formats
 import Vulkan.Extensions.VK_EXT_acquire_drm_display
 import Vulkan.Extensions.VK_EXT_acquire_xlib_display
@@ -427,6 +503,7 @@
 import Vulkan.Extensions.VK_EXT_conditional_rendering
 import Vulkan.Extensions.VK_EXT_conservative_rasterization
 import Vulkan.Extensions.VK_EXT_custom_border_color
+import Vulkan.Extensions.VK_EXT_custom_resolve
 import Vulkan.Extensions.VK_EXT_debug_marker
 import Vulkan.Extensions.VK_EXT_debug_report
 import Vulkan.Extensions.VK_EXT_debug_utils
@@ -437,6 +514,7 @@
 import Vulkan.Extensions.VK_EXT_depth_clip_enable
 import Vulkan.Extensions.VK_EXT_depth_range_unrestricted
 import Vulkan.Extensions.VK_EXT_descriptor_buffer
+import Vulkan.Extensions.VK_EXT_descriptor_heap
 import Vulkan.Extensions.VK_EXT_descriptor_indexing
 import Vulkan.Extensions.VK_EXT_device_address_binding_report
 import Vulkan.Extensions.VK_EXT_device_fault
@@ -454,9 +532,11 @@
 import Vulkan.Extensions.VK_EXT_external_memory_acquire_unmodified
 import Vulkan.Extensions.VK_EXT_external_memory_dma_buf
 import Vulkan.Extensions.VK_EXT_external_memory_host
+import Vulkan.Extensions.VK_EXT_external_memory_metal
 import Vulkan.Extensions.VK_EXT_filter_cubic
 import Vulkan.Extensions.VK_EXT_fragment_density_map
 import Vulkan.Extensions.VK_EXT_fragment_density_map2
+import Vulkan.Extensions.VK_EXT_fragment_density_map_offset
 import Vulkan.Extensions.VK_EXT_fragment_shader_interlock
 import Vulkan.Extensions.VK_EXT_frame_boundary
 import Vulkan.Extensions.VK_EXT_full_screen_exclusive
@@ -483,6 +563,7 @@
 import Vulkan.Extensions.VK_EXT_load_store_op_none
 import Vulkan.Extensions.VK_EXT_map_memory_placed
 import Vulkan.Extensions.VK_EXT_memory_budget
+import Vulkan.Extensions.VK_EXT_memory_decompression
 import Vulkan.Extensions.VK_EXT_memory_priority
 import Vulkan.Extensions.VK_EXT_mesh_shader
 import Vulkan.Extensions.VK_EXT_metal_objects
@@ -504,29 +585,38 @@
 import Vulkan.Extensions.VK_EXT_pipeline_robustness
 import Vulkan.Extensions.VK_EXT_post_depth_coverage
 import Vulkan.Extensions.VK_EXT_present_mode_fifo_latest_ready
+import Vulkan.Extensions.VK_EXT_present_timing
+import Vulkan.Extensions.VK_EXT_primitive_restart_index
 import Vulkan.Extensions.VK_EXT_primitive_topology_list_restart
 import Vulkan.Extensions.VK_EXT_primitives_generated_query
 import Vulkan.Extensions.VK_EXT_private_data
 import Vulkan.Extensions.VK_EXT_provoking_vertex
 import Vulkan.Extensions.VK_EXT_queue_family_foreign
 import Vulkan.Extensions.VK_EXT_rasterization_order_attachment_access
+import Vulkan.Extensions.VK_EXT_ray_tracing_invocation_reorder
 import Vulkan.Extensions.VK_EXT_rgba10x6_formats
 import Vulkan.Extensions.VK_EXT_robustness2
 import Vulkan.Extensions.VK_EXT_sample_locations
 import Vulkan.Extensions.VK_EXT_sampler_filter_minmax
 import Vulkan.Extensions.VK_EXT_scalar_block_layout
 import Vulkan.Extensions.VK_EXT_separate_stencil_usage
+import Vulkan.Extensions.VK_EXT_shader_64bit_indexing
 import Vulkan.Extensions.VK_EXT_shader_atomic_float
 import Vulkan.Extensions.VK_EXT_shader_atomic_float2
 import Vulkan.Extensions.VK_EXT_shader_demote_to_helper_invocation
+import Vulkan.Extensions.VK_EXT_shader_float8
 import Vulkan.Extensions.VK_EXT_shader_image_atomic_int64
+import Vulkan.Extensions.VK_EXT_shader_long_vector
 import Vulkan.Extensions.VK_EXT_shader_module_identifier
 import Vulkan.Extensions.VK_EXT_shader_object
 import Vulkan.Extensions.VK_EXT_shader_replicated_composites
+import Vulkan.Extensions.VK_EXT_shader_split_barrier
 import Vulkan.Extensions.VK_EXT_shader_stencil_export
 import Vulkan.Extensions.VK_EXT_shader_subgroup_ballot
+import Vulkan.Extensions.VK_EXT_shader_subgroup_partitioned
 import Vulkan.Extensions.VK_EXT_shader_subgroup_vote
 import Vulkan.Extensions.VK_EXT_shader_tile_image
+import Vulkan.Extensions.VK_EXT_shader_uniform_buffer_unsized_array
 import Vulkan.Extensions.VK_EXT_shader_viewport_index_layer
 import Vulkan.Extensions.VK_EXT_subgroup_size_control
 import Vulkan.Extensions.VK_EXT_subpass_merge_feedback
@@ -534,6 +624,7 @@
 import Vulkan.Extensions.VK_EXT_swapchain_colorspace
 import Vulkan.Extensions.VK_EXT_swapchain_maintenance1
 import Vulkan.Extensions.VK_EXT_texel_buffer_alignment
+import Vulkan.Extensions.VK_EXT_texture_compression_astc_3d
 import Vulkan.Extensions.VK_EXT_texture_compression_astc_hdr
 import Vulkan.Extensions.VK_EXT_tooling_info
 import Vulkan.Extensions.VK_EXT_transform_feedback
@@ -545,6 +636,7 @@
 import Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state
 import Vulkan.Extensions.VK_EXT_ycbcr_2plane_444_formats
 import Vulkan.Extensions.VK_EXT_ycbcr_image_arrays
+import Vulkan.Extensions.VK_EXT_zero_initialize_device_memory
 import Vulkan.Extensions.VK_FUCHSIA_buffer_collection
 import Vulkan.Extensions.VK_FUCHSIA_external_memory
 import Vulkan.Extensions.VK_FUCHSIA_external_semaphore
@@ -575,11 +667,15 @@
 import Vulkan.Extensions.VK_KHR_compute_shader_derivatives
 import Vulkan.Extensions.VK_KHR_cooperative_matrix
 import Vulkan.Extensions.VK_KHR_copy_commands2
+import Vulkan.Extensions.VK_KHR_copy_memory_indirect
 import Vulkan.Extensions.VK_KHR_create_renderpass2
 import Vulkan.Extensions.VK_KHR_dedicated_allocation
 import Vulkan.Extensions.VK_KHR_deferred_host_operations
+import Vulkan.Extensions.VK_KHR_depth_clamp_zero_one
 import Vulkan.Extensions.VK_KHR_depth_stencil_resolve
 import Vulkan.Extensions.VK_KHR_descriptor_update_template
+import Vulkan.Extensions.VK_KHR_device_address_commands
+import Vulkan.Extensions.VK_KHR_device_fault
 import Vulkan.Extensions.VK_KHR_device_group
 import Vulkan.Extensions.VK_KHR_device_group_creation
 import Vulkan.Extensions.VK_KHR_display
@@ -612,17 +708,23 @@
 import Vulkan.Extensions.VK_KHR_imageless_framebuffer
 import Vulkan.Extensions.VK_KHR_incremental_present
 import Vulkan.Extensions.VK_KHR_index_type_uint8
+import Vulkan.Extensions.VK_KHR_internally_synchronized_queues
 import Vulkan.Extensions.VK_KHR_line_rasterization
 import Vulkan.Extensions.VK_KHR_load_store_op_none
 import Vulkan.Extensions.VK_KHR_maintenance1
+import Vulkan.Extensions.VK_KHR_maintenance10
+import Vulkan.Extensions.VK_KHR_maintenance11
 import Vulkan.Extensions.VK_KHR_maintenance2
 import Vulkan.Extensions.VK_KHR_maintenance3
 import Vulkan.Extensions.VK_KHR_maintenance4
 import Vulkan.Extensions.VK_KHR_maintenance5
 import Vulkan.Extensions.VK_KHR_maintenance6
 import Vulkan.Extensions.VK_KHR_maintenance7
+import Vulkan.Extensions.VK_KHR_maintenance8
+import Vulkan.Extensions.VK_KHR_maintenance9
 import Vulkan.Extensions.VK_KHR_map_memory2
 import Vulkan.Extensions.VK_KHR_multiview
+import Vulkan.Extensions.VK_KHR_opacity_micromap
 import Vulkan.Extensions.VK_KHR_performance_query
 import Vulkan.Extensions.VK_KHR_pipeline_binary
 import Vulkan.Extensions.VK_KHR_pipeline_executable_properties
@@ -630,23 +732,31 @@
 import Vulkan.Extensions.VK_KHR_portability_enumeration
 import Vulkan.Extensions.VK_KHR_portability_subset
 import Vulkan.Extensions.VK_KHR_present_id
+import Vulkan.Extensions.VK_KHR_present_id2
+import Vulkan.Extensions.VK_KHR_present_mode_fifo_latest_ready
 import Vulkan.Extensions.VK_KHR_present_wait
+import Vulkan.Extensions.VK_KHR_present_wait2
 import Vulkan.Extensions.VK_KHR_push_descriptor
 import Vulkan.Extensions.VK_KHR_ray_query
 import Vulkan.Extensions.VK_KHR_ray_tracing_maintenance1
 import Vulkan.Extensions.VK_KHR_ray_tracing_pipeline
 import Vulkan.Extensions.VK_KHR_ray_tracing_position_fetch
 import Vulkan.Extensions.VK_KHR_relaxed_block_layout
+import Vulkan.Extensions.VK_KHR_robustness2
 import Vulkan.Extensions.VK_KHR_sampler_mirror_clamp_to_edge
 import Vulkan.Extensions.VK_KHR_sampler_ycbcr_conversion
 import Vulkan.Extensions.VK_KHR_separate_depth_stencil_layouts
+import Vulkan.Extensions.VK_KHR_shader_abort
 import Vulkan.Extensions.VK_KHR_shader_atomic_int64
+import Vulkan.Extensions.VK_KHR_shader_bfloat16
 import Vulkan.Extensions.VK_KHR_shader_clock
+import Vulkan.Extensions.VK_KHR_shader_constant_data
 import Vulkan.Extensions.VK_KHR_shader_draw_parameters
 import Vulkan.Extensions.VK_KHR_shader_expect_assume
 import Vulkan.Extensions.VK_KHR_shader_float16_int8
 import Vulkan.Extensions.VK_KHR_shader_float_controls
 import Vulkan.Extensions.VK_KHR_shader_float_controls2
+import Vulkan.Extensions.VK_KHR_shader_fma
 import Vulkan.Extensions.VK_KHR_shader_integer_dot_product
 import Vulkan.Extensions.VK_KHR_shader_maximal_reconvergence
 import Vulkan.Extensions.VK_KHR_shader_non_semantic_info
@@ -656,15 +766,19 @@
 import Vulkan.Extensions.VK_KHR_shader_subgroup_rotate
 import Vulkan.Extensions.VK_KHR_shader_subgroup_uniform_control_flow
 import Vulkan.Extensions.VK_KHR_shader_terminate_invocation
+import Vulkan.Extensions.VK_KHR_shader_untyped_pointers
 import Vulkan.Extensions.VK_KHR_shared_presentable_image
 import Vulkan.Extensions.VK_KHR_spirv_1_4
 import Vulkan.Extensions.VK_KHR_storage_buffer_storage_class
 import Vulkan.Extensions.VK_KHR_surface
+import Vulkan.Extensions.VK_KHR_surface_maintenance1
 import Vulkan.Extensions.VK_KHR_surface_protected_capabilities
 import Vulkan.Extensions.VK_KHR_swapchain
+import Vulkan.Extensions.VK_KHR_swapchain_maintenance1
 import Vulkan.Extensions.VK_KHR_swapchain_mutable_format
 import Vulkan.Extensions.VK_KHR_synchronization2
 import Vulkan.Extensions.VK_KHR_timeline_semaphore
+import Vulkan.Extensions.VK_KHR_unified_image_layouts
 import Vulkan.Extensions.VK_KHR_uniform_buffer_standard_layout
 import Vulkan.Extensions.VK_KHR_variable_pointers
 import Vulkan.Extensions.VK_KHR_vertex_attribute_divisor
@@ -688,9 +802,11 @@
 import Vulkan.Extensions.VK_NV_acquire_winrt_display
 import Vulkan.Extensions.VK_NV_clip_space_w_scaling
 import Vulkan.Extensions.VK_NV_command_buffer_inheritance
+import Vulkan.Extensions.VK_NV_compute_occupancy_priority
 import Vulkan.Extensions.VK_NV_compute_shader_derivatives
 import Vulkan.Extensions.VK_NV_cooperative_matrix
 import Vulkan.Extensions.VK_NV_cooperative_matrix2
+import Vulkan.Extensions.VK_NV_cooperative_vector
 import Vulkan.Extensions.VK_NV_copy_memory_indirect
 import Vulkan.Extensions.VK_NV_corner_sampled_image
 import Vulkan.Extensions.VK_NV_coverage_reduction_mode
@@ -705,6 +821,7 @@
 import Vulkan.Extensions.VK_NV_displacement_micromap
 import Vulkan.Extensions.VK_NV_display_stereo
 import Vulkan.Extensions.VK_NV_extended_sparse_address_space
+import Vulkan.Extensions.VK_NV_external_compute_queue
 import Vulkan.Extensions.VK_NV_external_memory
 import Vulkan.Extensions.VK_NV_external_memory_capabilities
 import Vulkan.Extensions.VK_NV_external_memory_rdma
@@ -725,9 +842,12 @@
 import Vulkan.Extensions.VK_NV_optical_flow
 import Vulkan.Extensions.VK_NV_per_stage_descriptor_set
 import Vulkan.Extensions.VK_NV_present_barrier
+import Vulkan.Extensions.VK_NV_present_metering
+import Vulkan.Extensions.VK_NV_push_constant_bank
 import Vulkan.Extensions.VK_NV_raw_access_chains
 import Vulkan.Extensions.VK_NV_ray_tracing
 import Vulkan.Extensions.VK_NV_ray_tracing_invocation_reorder
+import Vulkan.Extensions.VK_NV_ray_tracing_linear_swept_spheres
 import Vulkan.Extensions.VK_NV_ray_tracing_motion_blur
 import Vulkan.Extensions.VK_NV_ray_tracing_validation
 import Vulkan.Extensions.VK_NV_representative_fragment_test
@@ -741,22 +861,34 @@
 import Vulkan.Extensions.VK_NV_viewport_array2
 import Vulkan.Extensions.VK_NV_viewport_swizzle
 import Vulkan.Extensions.VK_NV_win32_keyed_mutex
+import Vulkan.Extensions.VK_QCOM_cooperative_matrix_conversion
+import Vulkan.Extensions.VK_QCOM_data_graph_model
+import Vulkan.Extensions.VK_QCOM_elapsed_timer_query
 import Vulkan.Extensions.VK_QCOM_filter_cubic_clamp
 import Vulkan.Extensions.VK_QCOM_filter_cubic_weights
 import Vulkan.Extensions.VK_QCOM_fragment_density_map_offset
 import Vulkan.Extensions.VK_QCOM_image_processing
 import Vulkan.Extensions.VK_QCOM_image_processing2
+import Vulkan.Extensions.VK_QCOM_image_processing3
 import Vulkan.Extensions.VK_QCOM_multiview_per_view_render_areas
 import Vulkan.Extensions.VK_QCOM_multiview_per_view_viewports
+import Vulkan.Extensions.VK_QCOM_queue_perf_hint
 import Vulkan.Extensions.VK_QCOM_render_pass_shader_resolve
 import Vulkan.Extensions.VK_QCOM_render_pass_store_ops
 import Vulkan.Extensions.VK_QCOM_render_pass_transform
 import Vulkan.Extensions.VK_QCOM_rotated_copy_commands
+import Vulkan.Extensions.VK_QCOM_shader_multiple_wait_queues
+import Vulkan.Extensions.VK_QCOM_tile_memory_heap
 import Vulkan.Extensions.VK_QCOM_tile_properties
+import Vulkan.Extensions.VK_QCOM_tile_shading
 import Vulkan.Extensions.VK_QCOM_ycbcr_degamma
 import Vulkan.Extensions.VK_QNX_external_memory_screen_buffer
 import Vulkan.Extensions.VK_QNX_screen_surface
 import Vulkan.Extensions.VK_SEC_amigo_profiling
+import Vulkan.Extensions.VK_SEC_pipeline_cache_incremental_mode
+import Vulkan.Extensions.VK_SEC_throttle_hint
 import Vulkan.Extensions.VK_VALVE_descriptor_set_host_mapping
+import Vulkan.Extensions.VK_VALVE_fragment_density_map_layered
 import Vulkan.Extensions.VK_VALVE_mutable_descriptor_type
+import Vulkan.Extensions.VK_VALVE_shader_mixed_float_dot_product
 
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
@@ -15,6 +15,11 @@
                                   , OpticalFlowSessionNV(..)
                                   , MicromapEXT(..)
                                   , ShaderEXT(..)
+                                  , TensorARM(..)
+                                  , TensorViewARM(..)
+                                  , DataGraphPipelineSessionARM(..)
+                                  , ShaderInstrumentationARM(..)
+                                  , GpaSessionAMD(..)
                                   , DisplayKHR(..)
                                   , DisplayModeKHR(..)
                                   , SurfaceKHR(..)
@@ -23,6 +28,8 @@
                                   , DebugUtilsMessengerEXT(..)
                                   , CudaModuleNV(..)
                                   , CudaFunctionNV(..)
+                                  , ExternalComputeQueueNV(..)
+                                  , ExternalComputeQueueNV_T
                                   , Instance(..)
                                   , PhysicalDevice(..)
                                   , Device(..)
@@ -52,11 +59,16 @@
                                   , PrivateDataSlot(..)
                                   ) where
 
+import Foreign.Ptr (ptrToWordPtr)
 import GHC.Show (showParen)
 import Numeric (showHex)
+import Foreign.Ptr (pattern WordPtr)
 import Vulkan.Zero (Zero)
+import Vulkan.Zero (Zero(..))
 import Foreign.Storable (Storable)
+import Foreign.Ptr (Ptr)
 import Data.Word (Word64)
+import Vulkan.Dynamic (DeviceCmds)
 import Vulkan.Core10.APIConstants (HasObjectType(..))
 import Vulkan.Core10.APIConstants (IsHandle)
 import Vulkan.Core10.Enums.ObjectType (ObjectType(OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR))
@@ -66,11 +78,14 @@
 import Vulkan.Core10.Enums.ObjectType (ObjectType(OBJECT_TYPE_CUDA_MODULE_NV))
 import Vulkan.Core10.Enums.ObjectType (ObjectType(OBJECT_TYPE_CU_FUNCTION_NVX))
 import Vulkan.Core10.Enums.ObjectType (ObjectType(OBJECT_TYPE_CU_MODULE_NVX))
+import Vulkan.Core10.Enums.ObjectType (ObjectType(OBJECT_TYPE_DATA_GRAPH_PIPELINE_SESSION_ARM))
 import Vulkan.Core10.Enums.ObjectType (ObjectType(OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT))
 import Vulkan.Core10.Enums.ObjectType (ObjectType(OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT))
 import Vulkan.Core10.Enums.ObjectType (ObjectType(OBJECT_TYPE_DEFERRED_OPERATION_KHR))
 import Vulkan.Core10.Enums.ObjectType (ObjectType(OBJECT_TYPE_DISPLAY_KHR))
 import Vulkan.Core10.Enums.ObjectType (ObjectType(OBJECT_TYPE_DISPLAY_MODE_KHR))
+import Vulkan.Core10.Enums.ObjectType (ObjectType(OBJECT_TYPE_EXTERNAL_COMPUTE_QUEUE_NV))
+import Vulkan.Core10.Enums.ObjectType (ObjectType(OBJECT_TYPE_GPA_SESSION_AMD))
 import Vulkan.Core10.Enums.ObjectType (ObjectType(OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_EXT))
 import Vulkan.Core10.Enums.ObjectType (ObjectType(OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV))
 import Vulkan.Core10.Enums.ObjectType (ObjectType(OBJECT_TYPE_INDIRECT_EXECUTION_SET_EXT))
@@ -79,8 +94,11 @@
 import Vulkan.Core10.Enums.ObjectType (ObjectType(OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL))
 import Vulkan.Core10.Enums.ObjectType (ObjectType(OBJECT_TYPE_PIPELINE_BINARY_KHR))
 import Vulkan.Core10.Enums.ObjectType (ObjectType(OBJECT_TYPE_SHADER_EXT))
+import Vulkan.Core10.Enums.ObjectType (ObjectType(OBJECT_TYPE_SHADER_INSTRUMENTATION_ARM))
 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_TENSOR_ARM))
+import Vulkan.Core10.Enums.ObjectType (ObjectType(OBJECT_TYPE_TENSOR_VIEW_ARM))
 import Vulkan.Core10.Enums.ObjectType (ObjectType(OBJECT_TYPE_VALIDATION_CACHE_EXT))
 import Vulkan.Core10.Handles (Buffer(..))
 import Vulkan.Core10.Handles (BufferView(..))
@@ -178,7 +196,7 @@
 --
 -- Indirect Execution Sets allow the device to bind different shaders and
 -- pipeline states using
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#device-generated-commands>.
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#device-generated-commands>.
 --
 -- = See Also
 --
@@ -231,11 +249,13 @@
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureBuildGeometryInfoKHR',
 -- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.AccelerationStructureCaptureDescriptorDataInfoEXT',
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureDeviceAddressInfoKHR',
+-- 'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapKHR',
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.CopyAccelerationStructureInfoKHR',
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.CopyAccelerationStructureToMemoryInfoKHR',
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.CopyMemoryToAccelerationStructureInfoKHR',
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.WriteDescriptorSetAccelerationStructureKHR',
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.cmdWriteAccelerationStructuresPropertiesKHR',
+-- 'Vulkan.Extensions.VK_KHR_device_address_commands.createAccelerationStructure2KHR',
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.createAccelerationStructureKHR',
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.destroyAccelerationStructureKHR',
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.writeAccelerationStructuresPropertiesKHR'
@@ -339,6 +359,7 @@
 -- 'Vulkan.Extensions.VK_EXT_opacity_micromap.copyMemoryToMicromapEXT',
 -- 'Vulkan.Extensions.VK_EXT_opacity_micromap.copyMicromapEXT',
 -- 'Vulkan.Extensions.VK_EXT_opacity_micromap.copyMicromapToMemoryEXT',
+-- 'Vulkan.Extensions.VK_ARM_data_graph.createDataGraphPipelinesARM',
 -- 'Vulkan.Extensions.VK_KHR_deferred_host_operations.createDeferredOperationKHR',
 -- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.createRayTracingPipelinesKHR',
 -- 'Vulkan.Extensions.VK_KHR_deferred_host_operations.deferredOperationJoinKHR',
@@ -458,6 +479,124 @@
   showsPrec p (ShaderEXT x) = showParen (p >= 11) (showString "ShaderEXT 0x" . showHex x)
 
 
+-- | VkTensorARM - Opaque handle to a tensor object
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_tensors VK_ARM_tensors>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_DEFINE_NON_DISPATCHABLE_HANDLE VK_DEFINE_NON_DISPATCHABLE_HANDLE>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_heap VK_EXT_descriptor_heap>,
+-- 'Vulkan.Extensions.VK_ARM_tensors.BindTensorMemoryInfoARM',
+-- 'Vulkan.Extensions.VK_ARM_tensors.CopyTensorInfoARM',
+-- 'Vulkan.Extensions.VK_ARM_tensors.FrameBoundaryTensorsARM',
+-- 'Vulkan.Extensions.VK_ARM_tensors.MemoryDedicatedAllocateInfoTensorARM',
+-- 'Vulkan.Extensions.VK_ARM_tensors.TensorCaptureDescriptorDataInfoARM',
+-- 'Vulkan.Extensions.VK_ARM_tensors.TensorMemoryBarrierARM',
+-- 'Vulkan.Extensions.VK_ARM_tensors.TensorMemoryRequirementsInfoARM',
+-- 'Vulkan.Extensions.VK_ARM_tensors.TensorViewCreateInfoARM',
+-- 'Vulkan.Extensions.VK_ARM_tensors.createTensorARM',
+-- 'Vulkan.Extensions.VK_ARM_tensors.destroyTensorARM',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_heap.getTensorOpaqueCaptureDataARM'
+newtype TensorARM = TensorARM Word64
+  deriving newtype (Eq, Ord, Storable, Zero)
+  deriving anyclass (IsHandle)
+instance HasObjectType TensorARM where
+  objectTypeAndHandle (TensorARM h) = (OBJECT_TYPE_TENSOR_ARM, h)
+instance Show TensorARM where
+  showsPrec p (TensorARM x) = showParen (p >= 11) (showString "TensorARM 0x" . showHex x)
+
+
+-- | VkTensorViewARM - Opaque handle to an tensor view object
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_tensors VK_ARM_tensors>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_DEFINE_NON_DISPATCHABLE_HANDLE VK_DEFINE_NON_DISPATCHABLE_HANDLE>,
+-- 'Vulkan.Extensions.VK_ARM_tensors.DescriptorGetTensorInfoARM',
+-- 'Vulkan.Extensions.VK_ARM_tensors.TensorViewCaptureDescriptorDataInfoARM',
+-- 'Vulkan.Extensions.VK_ARM_tensors.WriteDescriptorSetTensorARM',
+-- 'Vulkan.Extensions.VK_ARM_tensors.createTensorViewARM',
+-- 'Vulkan.Extensions.VK_ARM_tensors.destroyTensorViewARM'
+newtype TensorViewARM = TensorViewARM Word64
+  deriving newtype (Eq, Ord, Storable, Zero)
+  deriving anyclass (IsHandle)
+instance HasObjectType TensorViewARM where
+  objectTypeAndHandle (TensorViewARM h) = (OBJECT_TYPE_TENSOR_VIEW_ARM, h)
+instance Show TensorViewARM where
+  showsPrec p (TensorViewARM x) = showParen (p >= 11) (showString "TensorViewARM 0x" . showHex x)
+
+
+-- | VkDataGraphPipelineSessionARM - Opaque handle to a data graph pipeline
+-- session object
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_data_graph VK_ARM_data_graph>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_DEFINE_NON_DISPATCHABLE_HANDLE VK_DEFINE_NON_DISPATCHABLE_HANDLE>,
+-- 'Vulkan.Extensions.VK_ARM_data_graph.BindDataGraphPipelineSessionMemoryInfoARM',
+-- 'Vulkan.Extensions.VK_ARM_data_graph.DataGraphPipelineSessionBindPointRequirementsInfoARM',
+-- 'Vulkan.Extensions.VK_ARM_data_graph.DataGraphPipelineSessionMemoryRequirementsInfoARM',
+-- 'Vulkan.Extensions.VK_ARM_data_graph.cmdDispatchDataGraphARM',
+-- 'Vulkan.Extensions.VK_ARM_data_graph.createDataGraphPipelineSessionARM',
+-- 'Vulkan.Extensions.VK_ARM_data_graph.destroyDataGraphPipelineSessionARM'
+newtype DataGraphPipelineSessionARM = DataGraphPipelineSessionARM Word64
+  deriving newtype (Eq, Ord, Storable, Zero)
+  deriving anyclass (IsHandle)
+instance HasObjectType DataGraphPipelineSessionARM where
+  objectTypeAndHandle (DataGraphPipelineSessionARM h) = ( OBJECT_TYPE_DATA_GRAPH_PIPELINE_SESSION_ARM
+                                                        , h )
+instance Show DataGraphPipelineSessionARM where
+  showsPrec p (DataGraphPipelineSessionARM x) = showParen (p >= 11) (showString "DataGraphPipelineSessionARM 0x" . showHex x)
+
+
+-- | VkShaderInstrumentationARM - Opaque handle to a shader instrumentation
+-- object
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_shader_instrumentation VK_ARM_shader_instrumentation>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_DEFINE_NON_DISPATCHABLE_HANDLE VK_DEFINE_NON_DISPATCHABLE_HANDLE>,
+-- 'Vulkan.Extensions.VK_ARM_shader_instrumentation.clearShaderInstrumentationMetricsARM',
+-- 'Vulkan.Extensions.VK_ARM_shader_instrumentation.cmdBeginShaderInstrumentationARM',
+-- 'Vulkan.Extensions.VK_ARM_shader_instrumentation.createShaderInstrumentationARM',
+-- 'Vulkan.Extensions.VK_ARM_shader_instrumentation.destroyShaderInstrumentationARM',
+-- 'Vulkan.Extensions.VK_ARM_shader_instrumentation.getShaderInstrumentationValuesARM'
+newtype ShaderInstrumentationARM = ShaderInstrumentationARM Word64
+  deriving newtype (Eq, Ord, Storable, Zero)
+  deriving anyclass (IsHandle)
+instance HasObjectType ShaderInstrumentationARM where
+  objectTypeAndHandle (ShaderInstrumentationARM h) = ( OBJECT_TYPE_SHADER_INSTRUMENTATION_ARM
+                                                     , h )
+instance Show ShaderInstrumentationARM where
+  showsPrec p (ShaderInstrumentationARM x) = showParen (p >= 11) (showString "ShaderInstrumentationARM 0x" . showHex x)
+
+
+-- | VkGpaSessionAMD - Opaque handle to a GPU Performance API object
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_gpa_interface VK_AMD_gpa_interface>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_DEFINE_NON_DISPATCHABLE_HANDLE VK_DEFINE_NON_DISPATCHABLE_HANDLE>,
+-- 'Vulkan.Extensions.VK_AMD_gpa_interface.GpaSessionCreateInfoAMD',
+-- 'Vulkan.Extensions.VK_AMD_gpa_interface.cmdBeginGpaSampleAMD',
+-- 'Vulkan.Extensions.VK_AMD_gpa_interface.cmdBeginGpaSessionAMD',
+-- 'Vulkan.Extensions.VK_AMD_gpa_interface.cmdCopyGpaSessionResultsAMD',
+-- 'Vulkan.Extensions.VK_AMD_gpa_interface.cmdEndGpaSampleAMD',
+-- 'Vulkan.Extensions.VK_AMD_gpa_interface.cmdEndGpaSessionAMD',
+-- 'Vulkan.Extensions.VK_AMD_gpa_interface.createGpaSessionAMD',
+-- 'Vulkan.Extensions.VK_AMD_gpa_interface.destroyGpaSessionAMD',
+-- 'Vulkan.Extensions.VK_AMD_gpa_interface.getGpaSessionResultsAMD',
+-- 'Vulkan.Extensions.VK_AMD_gpa_interface.getGpaSessionStatusAMD',
+-- 'Vulkan.Extensions.VK_AMD_gpa_interface.resetGpaSessionAMD'
+newtype GpaSessionAMD = GpaSessionAMD Word64
+  deriving newtype (Eq, Ord, Storable, Zero)
+  deriving anyclass (IsHandle)
+instance HasObjectType GpaSessionAMD where
+  objectTypeAndHandle (GpaSessionAMD h) = (OBJECT_TYPE_GPA_SESSION_AMD, h)
+instance Show GpaSessionAMD where
+  showsPrec p (GpaSessionAMD x) = showParen (p >= 11) (showString "GpaSessionAMD 0x" . showHex x)
+
+
 -- | VkDisplayKHR - Opaque handle to a display object
 --
 -- = See Also
@@ -535,6 +674,8 @@
 -- 'Vulkan.Extensions.VK_EXT_metal_surface.createMetalSurfaceEXT',
 -- 'Vulkan.Extensions.VK_QNX_screen_surface.createScreenSurfaceQNX',
 -- 'Vulkan.Extensions.VK_GGP_stream_descriptor_surface.createStreamDescriptorSurfaceGGP',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCreateSurfaceOHOS vkCreateSurfaceOHOS>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCreateUbmSurfaceSEC vkCreateUbmSurfaceSEC>,
 -- 'Vulkan.Extensions.VK_NN_vi_surface.createViSurfaceNN',
 -- 'Vulkan.Extensions.VK_KHR_wayland_surface.createWaylandSurfaceKHR',
 -- 'Vulkan.Extensions.VK_KHR_win32_surface.createWin32SurfaceKHR',
@@ -601,7 +742,7 @@
 -- 'Vulkan.Extensions.VK_KHR_swapchain.queuePresentKHR', which releases the
 -- acquisition of the image. The application /can/ also release the
 -- acquisition of the image through
--- 'Vulkan.Extensions.VK_EXT_swapchain_maintenance1.releaseSwapchainImagesEXT',
+-- 'Vulkan.Extensions.VK_KHR_swapchain_maintenance1.releaseSwapchainImagesKHR',
 -- if the image is not in use by the device, and skip the present
 -- operation.
 --
@@ -620,8 +761,10 @@
 -- 'Vulkan.Extensions.VK_KHR_swapchain.AcquireNextImageInfoKHR',
 -- 'Vulkan.Extensions.VK_KHR_swapchain.BindImageMemorySwapchainInfoKHR',
 -- 'Vulkan.Extensions.VK_KHR_swapchain.ImageSwapchainCreateInfoKHR',
+-- 'Vulkan.Extensions.VK_EXT_present_timing.PastPresentationTimingInfoEXT',
 -- 'Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR',
--- 'Vulkan.Extensions.VK_EXT_swapchain_maintenance1.ReleaseSwapchainImagesInfoEXT',
+-- 'Vulkan.Extensions.VK_KHR_swapchain_maintenance1.ReleaseSwapchainImagesInfoKHR',
+-- 'Vulkan.Extensions.VK_EXT_present_timing.SwapchainCalibratedTimestampInfoEXT',
 -- 'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR',
 -- 'Vulkan.Extensions.VK_EXT_full_screen_exclusive.acquireFullScreenExclusiveModeEXT',
 -- 'Vulkan.Extensions.VK_KHR_swapchain.acquireNextImageKHR',
@@ -634,6 +777,8 @@
 -- 'Vulkan.Extensions.VK_EXT_display_control.getSwapchainCounterEXT',
 -- 'Vulkan.Extensions.VK_KHR_swapchain.getSwapchainImagesKHR',
 -- 'Vulkan.Extensions.VK_KHR_shared_presentable_image.getSwapchainStatusKHR',
+-- 'Vulkan.Extensions.VK_EXT_present_timing.getSwapchainTimeDomainPropertiesEXT',
+-- 'Vulkan.Extensions.VK_EXT_present_timing.getSwapchainTimingPropertiesEXT',
 -- 'Vulkan.Extensions.VK_NV_low_latency2.latencySleepNV',
 -- 'Vulkan.Extensions.VK_KHR_swapchain.queuePresentKHR',
 -- 'Vulkan.Extensions.VK_EXT_full_screen_exclusive.releaseFullScreenExclusiveModeEXT',
@@ -641,6 +786,8 @@
 -- 'Vulkan.Extensions.VK_NV_low_latency2.setLatencyMarkerNV',
 -- 'Vulkan.Extensions.VK_NV_low_latency2.setLatencySleepModeNV',
 -- 'Vulkan.Extensions.VK_AMD_display_native_hdr.setLocalDimmingAMD',
+-- 'Vulkan.Extensions.VK_EXT_present_timing.setSwapchainPresentTimingQueueSizeEXT',
+-- 'Vulkan.Extensions.VK_KHR_present_wait2.waitForPresent2KHR',
 -- 'Vulkan.Extensions.VK_KHR_present_wait.waitForPresentKHR'
 newtype SwapchainKHR = SwapchainKHR Word64
   deriving newtype (Eq, Ord, Storable, Zero)
@@ -733,4 +880,28 @@
   objectTypeAndHandle (CudaFunctionNV h) = (OBJECT_TYPE_CUDA_FUNCTION_NV, h)
 instance Show CudaFunctionNV where
   showsPrec p (CudaFunctionNV x) = showParen (p >= 11) (showString "CudaFunctionNV 0x" . showHex x)
+
+
+-- | An opaque type for representing pointers to VkExternalComputeQueueNV handles
+data ExternalComputeQueueNV_T
+-- | VkExternalComputeQueueNV - Opaque handle to an external compute queue
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_DEFINE_HANDLE VK_DEFINE_HANDLE>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_external_compute_queue VK_NV_external_compute_queue>,
+-- 'Vulkan.Extensions.VK_NV_external_compute_queue.createExternalComputeQueueNV',
+-- 'Vulkan.Extensions.VK_NV_external_compute_queue.destroyExternalComputeQueueNV',
+-- 'Vulkan.Extensions.VK_NV_external_compute_queue.getExternalComputeQueueDataNV'
+data ExternalComputeQueueNV = ExternalComputeQueueNV
+  { externalComputeQueueNVHandle :: Ptr ExternalComputeQueueNV_T
+  , deviceCmds :: DeviceCmds
+  }
+  deriving stock (Eq, Show)
+  deriving anyclass (IsHandle)
+instance Zero ExternalComputeQueueNV where
+  zero = ExternalComputeQueueNV zero zero
+instance HasObjectType ExternalComputeQueueNV where
+  objectTypeAndHandle (ExternalComputeQueueNV (ptrToWordPtr -> WordPtr h) _) = ( OBJECT_TYPE_EXTERNAL_COMPUTE_QUEUE_NV
+                                                                               , fromIntegral h )
 
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
@@ -7,11 +7,15 @@
                                   , CuModuleNVX
                                   , CudaFunctionNV
                                   , CudaModuleNV
+                                  , DataGraphPipelineSessionARM
                                   , DebugReportCallbackEXT
                                   , DebugUtilsMessengerEXT
                                   , DeferredOperationKHR
                                   , DisplayKHR
                                   , DisplayModeKHR
+                                  , ExternalComputeQueueNV
+                                  , ExternalComputeQueueNV_T
+                                  , GpaSessionAMD
                                   , IndirectCommandsLayoutEXT
                                   , IndirectCommandsLayoutNV
                                   , IndirectExecutionSetEXT
@@ -20,8 +24,11 @@
                                   , PerformanceConfigurationINTEL
                                   , PipelineBinaryKHR
                                   , ShaderEXT
+                                  , ShaderInstrumentationARM
                                   , SurfaceKHR
                                   , SwapchainKHR
+                                  , TensorARM
+                                  , TensorViewARM
                                   , ValidationCacheEXT
                                   ) where
 
@@ -48,6 +55,9 @@
 data CudaModuleNV
 
 
+data DataGraphPipelineSessionARM
+
+
 data DebugReportCallbackEXT
 
 
@@ -63,6 +73,14 @@
 data DisplayModeKHR
 
 
+data ExternalComputeQueueNV
+
+data ExternalComputeQueueNV_T
+
+
+data GpaSessionAMD
+
+
 data IndirectCommandsLayoutEXT
 
 
@@ -87,10 +105,19 @@
 data ShaderEXT
 
 
+data ShaderInstrumentationARM
+
+
 data SurfaceKHR
 
 
 data SwapchainKHR
+
+
+data TensorARM
+
+
+data TensorViewARM
 
 
 data ValidationCacheEXT
diff --git a/src/Vulkan/Extensions/VK_AMDX_dense_geometry_format.hs b/src/Vulkan/Extensions/VK_AMDX_dense_geometry_format.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_AMDX_dense_geometry_format.hs
@@ -0,0 +1,490 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_AMDX_dense_geometry_format - device extension
+--
+-- = VK_AMDX_dense_geometry_format
+--
+-- [__Name String__]
+--     @VK_AMDX_dense_geometry_format@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     479
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Not ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>
+--     and
+--         
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance5 VK_KHR_maintenance5>
+--          or
+--         
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.4 Vulkan Version 1.4>
+--
+--     -   __This is a /provisional/ extension and /must/ be used with
+--         caution. See the
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#boilerplate-provisional-header description>
+--         of provisional header files for enablement and stability
+--         details.__
+--
+-- [__Contact__]
+--
+--     -   Stu Smith
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_AMDX_dense_geometry_format] @stu-s%0A*Here describe the issue or question you have about the VK_AMDX_dense_geometry_format extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_AMDX_dense_geometry_format.adoc VK_AMDX_dense_geometry_format>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2025-07-10
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Contributors__]
+--
+--     -   Stu Smith, AMD
+--
+--     -   Josh Barczak, AMD
+--
+--     -   Carsten Benthin, AMD
+--
+--     -   David McAllister, AMD
+--
+-- == Description
+--
+-- This extension adds the ability to build ray tracing acceleration
+-- structures from pre-compressed @Dense Geometry Format@ geometry data.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureGeometryKHR':
+--
+--     -   'AccelerationStructureDenseGeometryFormatTrianglesDataAMDX'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceDenseGeometryFormatFeaturesAMDX'
+--
+-- == New Enums
+--
+-- -   'CompressedTriangleFormatAMDX'
+--
+-- == New Enum Constants
+--
+-- -   'AMDX_DENSE_GEOMETRY_FORMAT_EXTENSION_NAME'
+--
+-- -   'AMDX_DENSE_GEOMETRY_FORMAT_SPEC_VERSION'
+--
+-- -   'Vulkan.Core10.APIConstants.COMPRESSED_TRIANGLE_FORMAT_DGF1_BYTE_ALIGNMENT_AMDX'
+--
+-- -   'Vulkan.Core10.APIConstants.COMPRESSED_TRIANGLE_FORMAT_DGF1_BYTE_STRIDE_AMDX'
+--
+-- -   Extending
+--     'Vulkan.Core14.Enums.BufferUsageFlags2.BufferUsageFlagBits2':
+--
+--     -   'Vulkan.Core14.Enums.BufferUsageFlags2.BUFFER_USAGE_2_COMPRESSED_DATA_DGF1_BIT_AMDX'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.GeometryTypeKHR':
+--
+--     -   'Vulkan.Extensions.VK_KHR_acceleration_structure.GEOMETRY_TYPE_DENSE_GEOMETRY_FORMAT_TRIANGLES_AMDX'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DENSE_GEOMETRY_FORMAT_TRIANGLES_DATA_AMDX'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_DENSE_GEOMETRY_FORMAT_FEATURES_AMDX'
+--
+-- == Issues
+--
+-- None.
+--
+-- == Examples
+--
+-- None.
+--
+-- == Version History
+--
+-- -   Revision 1, 2025-07-10 (Stu Smith)
+--
+--     -   Initial revision.
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_AMDX_dense_geometry_format Vulkan Specification>.
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_AMDX_dense_geometry_format  ( PhysicalDeviceDenseGeometryFormatFeaturesAMDX(..)
+                                                        , AccelerationStructureDenseGeometryFormatTrianglesDataAMDX(..)
+                                                        , CompressedTriangleFormatAMDX( COMPRESSED_TRIANGLE_FORMAT_DGF1_AMDX
+                                                                                      , ..
+                                                                                      )
+                                                        , AMDX_DENSE_GEOMETRY_FORMAT_SPEC_VERSION
+                                                        , pattern AMDX_DENSE_GEOMETRY_FORMAT_SPEC_VERSION
+                                                        , AMDX_DENSE_GEOMETRY_FORMAT_EXTENSION_NAME
+                                                        , pattern AMDX_DENSE_GEOMETRY_FORMAT_EXTENSION_NAME
+                                                        , DeviceOrHostAddressConstKHR(..)
+                                                        , GeometryTypeKHR(..)
+                                                        , COMPRESSED_TRIANGLE_FORMAT_DGF1_BYTE_ALIGNMENT_AMDX
+                                                        , pattern COMPRESSED_TRIANGLE_FORMAT_DGF1_BYTE_ALIGNMENT_AMDX
+                                                        , COMPRESSED_TRIANGLE_FORMAT_DGF1_BYTE_STRIDE_AMDX
+                                                        , pattern COMPRESSED_TRIANGLE_FORMAT_DGF1_BYTE_STRIDE_AMDX
+                                                        ) where
+
+import Vulkan.Internal.Utils (enumReadPrec)
+import Vulkan.Internal.Utils (enumShowsPrec)
+import Data.Typeable (eqT)
+import Foreign.Marshal.Alloc (allocaBytes)
+import GHC.Ptr (castPtr)
+import Foreign.Ptr (nullPtr)
+import Foreign.Ptr (plusPtr)
+import GHC.Show (showsPrec)
+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 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 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 Control.Monad.Trans.Cont (ContT(..))
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_opacity_micromap (AccelerationStructureTrianglesOpacityMicromapEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_opacity_micromap (AccelerationStructureTrianglesOpacityMicromapKHR)
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.CStruct.Extends (Chain)
+import Vulkan.Extensions.VK_KHR_acceleration_structure (DeviceOrHostAddressConstKHR)
+import Vulkan.Core10.FundamentalTypes (DeviceSize)
+import Vulkan.CStruct.Extends (Extends)
+import Vulkan.CStruct.Extends (Extendss)
+import Vulkan.CStruct.Extends (Extensible(..))
+import Vulkan.CStruct.Extends (PokeChain)
+import Vulkan.CStruct.Extends (PokeChain(..))
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DENSE_GEOMETRY_FORMAT_TRIANGLES_DATA_AMDX))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_DENSE_GEOMETRY_FORMAT_FEATURES_AMDX))
+import Vulkan.Core10.APIConstants (COMPRESSED_TRIANGLE_FORMAT_DGF1_BYTE_ALIGNMENT_AMDX)
+import Vulkan.Core10.APIConstants (COMPRESSED_TRIANGLE_FORMAT_DGF1_BYTE_STRIDE_AMDX)
+import Vulkan.Extensions.VK_KHR_acceleration_structure (DeviceOrHostAddressConstKHR(..))
+import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryTypeKHR(..))
+import Vulkan.Core10.APIConstants (pattern COMPRESSED_TRIANGLE_FORMAT_DGF1_BYTE_ALIGNMENT_AMDX)
+import Vulkan.Core10.APIConstants (pattern COMPRESSED_TRIANGLE_FORMAT_DGF1_BYTE_STRIDE_AMDX)
+-- | VkPhysicalDeviceDenseGeometryFormatFeaturesAMDX - Structure describing
+-- dense geometry format features that can be supported by an
+-- implementation
+--
+-- = Members
+--
+-- This structure describes the following feature:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceDenseGeometryFormatFeaturesAMDX' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceDenseGeometryFormatFeaturesAMDX', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMDX_dense_geometry_format VK_AMDX_dense_geometry_format>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceDenseGeometryFormatFeaturesAMDX = PhysicalDeviceDenseGeometryFormatFeaturesAMDX
+  { -- | #features-denseGeometryFormat# @denseGeometryFormat@ specifies whether
+    -- the implementation supports DGF1 compressed geometry data.
+    denseGeometryFormat :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceDenseGeometryFormatFeaturesAMDX)
+#endif
+deriving instance Show PhysicalDeviceDenseGeometryFormatFeaturesAMDX
+
+instance ToCStruct PhysicalDeviceDenseGeometryFormatFeaturesAMDX where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceDenseGeometryFormatFeaturesAMDX{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DENSE_GEOMETRY_FORMAT_FEATURES_AMDX)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (denseGeometryFormat))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DENSE_GEOMETRY_FORMAT_FEATURES_AMDX)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceDenseGeometryFormatFeaturesAMDX where
+  peekCStruct p = do
+    denseGeometryFormat <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDeviceDenseGeometryFormatFeaturesAMDX
+             (bool32ToBool denseGeometryFormat)
+
+instance Storable PhysicalDeviceDenseGeometryFormatFeaturesAMDX where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceDenseGeometryFormatFeaturesAMDX where
+  zero = PhysicalDeviceDenseGeometryFormatFeaturesAMDX
+           zero
+
+
+-- | VkAccelerationStructureDenseGeometryFormatTrianglesDataAMDX - Structure
+-- specifying acceleration structure DGF compressed triangle data
+--
+-- = Description
+--
+-- If @format@ is 'COMPRESSED_TRIANGLE_FORMAT_DGF1_AMDX', @numVertices@
+-- specifies the sum of vertex counts across all blocks.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkAccelerationStructureDenseGeometryFormatTrianglesDataAMDX-compressedData-10885#
+--     The buffer from which @compressedData.deviceAddress@ is queried
+--     /must/ have been created with the
+--     'Vulkan.Core14.Enums.BufferUsageFlags2.BUFFER_USAGE_2_COMPRESSED_DATA_DGF1_BIT_AMDX'
+--     usage flag set
+--
+-- -   #VUID-VkAccelerationStructureDenseGeometryFormatTrianglesDataAMDX-denseGeometryFormat-10886#
+--     The
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-denseGeometryFormat ::denseGeometryFormat>
+--     feature /must/ be enabled
+--
+-- -   #VUID-VkAccelerationStructureDenseGeometryFormatTrianglesDataAMDX-format-10887#
+--     If @format@ is VK_COMPRESSED_TRIANGLE_FORMAT_DGF1_AMDX, then
+--     @compressedData@ /must/ be aligned to
+--     'Vulkan.Core10.APIConstants.COMPRESSED_TRIANGLE_FORMAT_DGF1_BYTE_ALIGNMENT_AMDX'
+--     (128) bytes
+--
+-- -   #VUID-VkAccelerationStructureDenseGeometryFormatTrianglesDataAMDX-format-10888#
+--     If @format@ is VK_COMPRESSED_TRIANGLE_FORMAT_DGF1_AMDX, then
+--     @dataSize@ /must/ be a multiple of
+--     'Vulkan.Core10.APIConstants.COMPRESSED_TRIANGLE_FORMAT_DGF1_BYTE_STRIDE_AMDX'
+--     (128) bytes
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkAccelerationStructureDenseGeometryFormatTrianglesDataAMDX-sType-sType#
+--     @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DENSE_GEOMETRY_FORMAT_TRIANGLES_DATA_AMDX'
+--
+-- -   #VUID-VkAccelerationStructureDenseGeometryFormatTrianglesDataAMDX-compressedData-parameter#
+--     @compressedData@ /must/ be a valid
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.DeviceOrHostAddressConstKHR'
+--     union
+--
+-- -   #VUID-VkAccelerationStructureDenseGeometryFormatTrianglesDataAMDX-format-parameter#
+--     @format@ /must/ be a valid 'CompressedTriangleFormatAMDX' value
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureGeometryKHR'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMDX_dense_geometry_format VK_AMDX_dense_geometry_format>,
+-- 'CompressedTriangleFormatAMDX',
+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.DeviceOrHostAddressConstKHR',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data AccelerationStructureDenseGeometryFormatTrianglesDataAMDX (es :: [Type]) = AccelerationStructureDenseGeometryFormatTrianglesDataAMDX
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
+    next :: Chain es
+  , -- | @compressedData@ specifies the base address of the compressed data.
+    compressedData :: DeviceOrHostAddressConstKHR
+  , -- | @dataSize@ specifies the size of the compressed data.
+    dataSize :: DeviceSize
+  , -- | @numTriangles@ specifies the total number of triangles encoded in the
+    -- compressed data.
+    numTriangles :: Word32
+  , -- | @numVertices@ specifies the number of vertices in the compressed data.
+    numVertices :: Word32
+  , -- | @maxPrimitiveIndex@ specifies the maximum primitive index encoded in the
+    -- compressed data.
+    maxPrimitiveIndex :: Word32
+  , -- | @maxGeometryIndex@ specifies the maximum geometry index encoded in the
+    -- compressed data.
+    maxGeometryIndex :: Word32
+  , -- | @format@ specifies the 'CompressedTriangleFormatAMDX' format of the
+    -- compressed data.
+    format :: CompressedTriangleFormatAMDX
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (AccelerationStructureDenseGeometryFormatTrianglesDataAMDX (es :: [Type]))
+#endif
+deriving instance Show (Chain es) => Show (AccelerationStructureDenseGeometryFormatTrianglesDataAMDX es)
+
+instance Extensible AccelerationStructureDenseGeometryFormatTrianglesDataAMDX where
+  extensibleTypeName = "AccelerationStructureDenseGeometryFormatTrianglesDataAMDX"
+  setNext AccelerationStructureDenseGeometryFormatTrianglesDataAMDX{..} next' = AccelerationStructureDenseGeometryFormatTrianglesDataAMDX{next = next', ..}
+  getNext AccelerationStructureDenseGeometryFormatTrianglesDataAMDX{..} = next
+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends AccelerationStructureDenseGeometryFormatTrianglesDataAMDX e => b) -> Maybe b
+  extends _ f
+    | Just Refl <- eqT @e @AccelerationStructureTrianglesOpacityMicromapEXT = Just f
+    | Just Refl <- eqT @e @AccelerationStructureTrianglesOpacityMicromapKHR = Just f
+    | otherwise = Nothing
+
+instance ( Extendss AccelerationStructureDenseGeometryFormatTrianglesDataAMDX es
+         , PokeChain es ) => ToCStruct (AccelerationStructureDenseGeometryFormatTrianglesDataAMDX es) where
+  withCStruct x f = allocaBytes 56 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p AccelerationStructureDenseGeometryFormatTrianglesDataAMDX{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DENSE_GEOMETRY_FORMAT_TRIANGLES_DATA_AMDX)
+    pNext'' <- fmap castPtr . ContT $ withChain (next)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
+    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr DeviceOrHostAddressConstKHR)) (compressedData) . ($ ())
+    lift $ poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (dataSize)
+    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) (numTriangles)
+    lift $ poke ((p `plusPtr` 36 :: Ptr Word32)) (numVertices)
+    lift $ poke ((p `plusPtr` 40 :: Ptr Word32)) (maxPrimitiveIndex)
+    lift $ poke ((p `plusPtr` 44 :: Ptr Word32)) (maxGeometryIndex)
+    lift $ poke ((p `plusPtr` 48 :: Ptr CompressedTriangleFormatAMDX)) (format)
+    lift $ f
+  cStructSize = 56
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DENSE_GEOMETRY_FORMAT_TRIANGLES_DATA_AMDX)
+    pNext' <- fmap castPtr . ContT $ withZeroChain @es
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
+    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr DeviceOrHostAddressConstKHR)) (zero) . ($ ())
+    lift $ poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (zero)
+    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) (zero)
+    lift $ poke ((p `plusPtr` 36 :: Ptr Word32)) (zero)
+    lift $ poke ((p `plusPtr` 40 :: Ptr Word32)) (zero)
+    lift $ poke ((p `plusPtr` 44 :: Ptr Word32)) (zero)
+    lift $ poke ((p `plusPtr` 48 :: Ptr CompressedTriangleFormatAMDX)) (zero)
+    lift $ f
+
+instance es ~ '[] => Zero (AccelerationStructureDenseGeometryFormatTrianglesDataAMDX es) where
+  zero = AccelerationStructureDenseGeometryFormatTrianglesDataAMDX
+           ()
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkCompressedTriangleFormatAMDX - Available compressed triangle formats
+--
+-- = Description
+--
+-- -   'COMPRESSED_TRIANGLE_FORMAT_DGF1_AMDX' specifies that the compressed
+--     triangle data is in
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#dense-geometry-format Dense Geometry Format>,
+--     version 1, consisting of an array of 128B DGF blocks.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMDX_dense_geometry_format VK_AMDX_dense_geometry_format>,
+-- 'AccelerationStructureDenseGeometryFormatTrianglesDataAMDX'
+newtype CompressedTriangleFormatAMDX = CompressedTriangleFormatAMDX Int32
+  deriving newtype (Eq, Ord, Storable, Zero)
+
+-- No documentation found for Nested "VkCompressedTriangleFormatAMDX" "VK_COMPRESSED_TRIANGLE_FORMAT_DGF1_AMDX"
+pattern COMPRESSED_TRIANGLE_FORMAT_DGF1_AMDX = CompressedTriangleFormatAMDX 0
+
+{-# COMPLETE COMPRESSED_TRIANGLE_FORMAT_DGF1_AMDX :: CompressedTriangleFormatAMDX #-}
+
+conNameCompressedTriangleFormatAMDX :: String
+conNameCompressedTriangleFormatAMDX = "CompressedTriangleFormatAMDX"
+
+enumPrefixCompressedTriangleFormatAMDX :: String
+enumPrefixCompressedTriangleFormatAMDX = "COMPRESSED_TRIANGLE_FORMAT_DGF1_AMDX"
+
+showTableCompressedTriangleFormatAMDX :: [(CompressedTriangleFormatAMDX, String)]
+showTableCompressedTriangleFormatAMDX =
+  [
+    ( COMPRESSED_TRIANGLE_FORMAT_DGF1_AMDX
+    , ""
+    )
+  ]
+
+instance Show CompressedTriangleFormatAMDX where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixCompressedTriangleFormatAMDX
+      showTableCompressedTriangleFormatAMDX
+      conNameCompressedTriangleFormatAMDX
+      (\(CompressedTriangleFormatAMDX x) -> x)
+      (showsPrec 11)
+
+instance Read CompressedTriangleFormatAMDX where
+  readPrec =
+    enumReadPrec
+      enumPrefixCompressedTriangleFormatAMDX
+      showTableCompressedTriangleFormatAMDX
+      conNameCompressedTriangleFormatAMDX
+      CompressedTriangleFormatAMDX
+
+type AMDX_DENSE_GEOMETRY_FORMAT_SPEC_VERSION = 1
+
+-- No documentation found for TopLevel "VK_AMDX_DENSE_GEOMETRY_FORMAT_SPEC_VERSION"
+pattern AMDX_DENSE_GEOMETRY_FORMAT_SPEC_VERSION :: forall a . Integral a => a
+pattern AMDX_DENSE_GEOMETRY_FORMAT_SPEC_VERSION = 1
+
+
+type AMDX_DENSE_GEOMETRY_FORMAT_EXTENSION_NAME = "VK_AMDX_dense_geometry_format"
+
+-- No documentation found for TopLevel "VK_AMDX_DENSE_GEOMETRY_FORMAT_EXTENSION_NAME"
+pattern AMDX_DENSE_GEOMETRY_FORMAT_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern AMDX_DENSE_GEOMETRY_FORMAT_EXTENSION_NAME = "VK_AMDX_dense_geometry_format"
+
diff --git a/src/Vulkan/Extensions/VK_AMDX_dense_geometry_format.hs-boot b/src/Vulkan/Extensions/VK_AMDX_dense_geometry_format.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_AMDX_dense_geometry_format.hs-boot
@@ -0,0 +1,161 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_AMDX_dense_geometry_format - device extension
+--
+-- = VK_AMDX_dense_geometry_format
+--
+-- [__Name String__]
+--     @VK_AMDX_dense_geometry_format@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     479
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Not ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>
+--     and
+--         
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance5 VK_KHR_maintenance5>
+--          or
+--         
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.4 Vulkan Version 1.4>
+--
+--     -   __This is a /provisional/ extension and /must/ be used with
+--         caution. See the
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#boilerplate-provisional-header description>
+--         of provisional header files for enablement and stability
+--         details.__
+--
+-- [__Contact__]
+--
+--     -   Stu Smith
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_AMDX_dense_geometry_format] @stu-s%0A*Here describe the issue or question you have about the VK_AMDX_dense_geometry_format extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_AMDX_dense_geometry_format.adoc VK_AMDX_dense_geometry_format>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2025-07-10
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Contributors__]
+--
+--     -   Stu Smith, AMD
+--
+--     -   Josh Barczak, AMD
+--
+--     -   Carsten Benthin, AMD
+--
+--     -   David McAllister, AMD
+--
+-- == Description
+--
+-- This extension adds the ability to build ray tracing acceleration
+-- structures from pre-compressed @Dense Geometry Format@ geometry data.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureGeometryKHR':
+--
+--     -   'AccelerationStructureDenseGeometryFormatTrianglesDataAMDX'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceDenseGeometryFormatFeaturesAMDX'
+--
+-- == New Enums
+--
+-- -   'CompressedTriangleFormatAMDX'
+--
+-- == New Enum Constants
+--
+-- -   'AMDX_DENSE_GEOMETRY_FORMAT_EXTENSION_NAME'
+--
+-- -   'AMDX_DENSE_GEOMETRY_FORMAT_SPEC_VERSION'
+--
+-- -   'Vulkan.Core10.APIConstants.COMPRESSED_TRIANGLE_FORMAT_DGF1_BYTE_ALIGNMENT_AMDX'
+--
+-- -   'Vulkan.Core10.APIConstants.COMPRESSED_TRIANGLE_FORMAT_DGF1_BYTE_STRIDE_AMDX'
+--
+-- -   Extending
+--     'Vulkan.Core14.Enums.BufferUsageFlags2.BufferUsageFlagBits2':
+--
+--     -   'Vulkan.Core14.Enums.BufferUsageFlags2.BUFFER_USAGE_2_COMPRESSED_DATA_DGF1_BIT_AMDX'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.GeometryTypeKHR':
+--
+--     -   'Vulkan.Extensions.VK_KHR_acceleration_structure.GEOMETRY_TYPE_DENSE_GEOMETRY_FORMAT_TRIANGLES_AMDX'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DENSE_GEOMETRY_FORMAT_TRIANGLES_DATA_AMDX'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_DENSE_GEOMETRY_FORMAT_FEATURES_AMDX'
+--
+-- == Issues
+--
+-- None.
+--
+-- == Examples
+--
+-- None.
+--
+-- == Version History
+--
+-- -   Revision 1, 2025-07-10 (Stu Smith)
+--
+--     -   Initial revision.
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_AMDX_dense_geometry_format Vulkan Specification>.
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_AMDX_dense_geometry_format  ( AccelerationStructureDenseGeometryFormatTrianglesDataAMDX
+                                                        , PhysicalDeviceDenseGeometryFormatFeaturesAMDX
+                                                        ) 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)
+type role AccelerationStructureDenseGeometryFormatTrianglesDataAMDX nominal
+data AccelerationStructureDenseGeometryFormatTrianglesDataAMDX (es :: [Type])
+
+instance ( Extendss AccelerationStructureDenseGeometryFormatTrianglesDataAMDX es
+         , PokeChain es ) => ToCStruct (AccelerationStructureDenseGeometryFormatTrianglesDataAMDX es)
+instance Show (Chain es) => Show (AccelerationStructureDenseGeometryFormatTrianglesDataAMDX es)
+
+
+data PhysicalDeviceDenseGeometryFormatFeaturesAMDX
+
+instance ToCStruct PhysicalDeviceDenseGeometryFormatFeaturesAMDX
+instance Show PhysicalDeviceDenseGeometryFormatFeaturesAMDX
+
+instance FromCStruct PhysicalDeviceDenseGeometryFormatFeaturesAMDX
+
diff --git a/src/Vulkan/Extensions/VK_AMDX_shader_enqueue.hs b/src/Vulkan/Extensions/VK_AMDX_shader_enqueue.hs
--- a/src/Vulkan/Extensions/VK_AMDX_shader_enqueue.hs
+++ b/src/Vulkan/Extensions/VK_AMDX_shader_enqueue.hs
@@ -45,4043 +45,5549 @@
 --
 -- [__API Interactions__]
 --
---     -   Interacts with VK_EXT_mesh_shader
---
---     -   Interacts with VK_KHR_maintenance5
---
--- [__SPIR-V Dependencies__]
---
---     -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/AMDX/SPV_AMDX_shader_enqueue.html SPV_AMDX_shader_enqueue>
---
--- [__Contact__]
---
---     -   Tobias Hector
---         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_AMDX_shader_enqueue] @tobski%0A*Here describe the issue or question you have about the VK_AMDX_shader_enqueue extension* >
---
--- [__Extension Proposal__]
---     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_AMDX_shader_enqueue.adoc VK_AMDX_shader_enqueue>
---
--- == Other Extension Metadata
---
--- [__Last Modified Date__]
---     2024-07-17
---
--- [__Provisional__]
---     __This extension is /provisional/ and /should/ not be used in
---     production applications. The functionality /may/ change in ways that
---     break backwards compatibility between revisions, and before final
---     release.__
---
--- [__Contributors__]
---
---     -   Tobias Hector, AMD
---
---     -   Matthaeus Chajdas, AMD
---
---     -   Maciej Jesionowski, AMD
---
---     -   Robert Martin, AMD
---
---     -   Qun Lin, AMD
---
---     -   Rex Xu, AMD
---
---     -   Dominik Witczak, AMD
---
---     -   Karthik Srinivasan, AMD
---
---     -   Nicolai Haehnle, AMD
---
---     -   Stuart Smith, AMD
---
--- == Description
---
--- This extension adds the ability for developers to enqueue mesh and
--- compute shader workgroups from other compute shaders.
---
--- == New Commands
---
--- -   'cmdDispatchGraphAMDX'
---
--- -   'cmdDispatchGraphIndirectAMDX'
---
--- -   'cmdDispatchGraphIndirectCountAMDX'
---
--- -   'cmdInitializeGraphScratchMemoryAMDX'
---
--- -   'createExecutionGraphPipelinesAMDX'
---
--- -   'getExecutionGraphPipelineNodeIndexAMDX'
---
--- -   'getExecutionGraphPipelineScratchSizeAMDX'
---
--- == New Structures
---
--- -   'DispatchGraphCountInfoAMDX'
---
--- -   'DispatchGraphInfoAMDX'
---
--- -   'ExecutionGraphPipelineCreateInfoAMDX'
---
--- -   'ExecutionGraphPipelineScratchSizeAMDX'
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
---     'Vulkan.Core10.Device.DeviceCreateInfo':
---
---     -   'PhysicalDeviceShaderEnqueueFeaturesAMDX'
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
---
---     -   'PhysicalDeviceShaderEnqueuePropertiesAMDX'
---
--- -   Extending 'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo':
---
---     -   'PipelineShaderStageNodeCreateInfoAMDX'
---
--- == New Unions
---
--- -   'DeviceOrHostAddressConstAMDX'
---
--- == New Enum Constants
---
--- -   'AMDX_SHADER_ENQUEUE_EXTENSION_NAME'
---
--- -   'AMDX_SHADER_ENQUEUE_SPEC_VERSION'
---
--- -   'Vulkan.Core10.APIConstants.SHADER_INDEX_UNUSED_AMDX'
---
--- -   Extending
---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BufferUsageFlagBits':
---
---     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_EXECUTION_GRAPH_SCRATCH_BIT_AMDX'
---
--- -   Extending 'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint':
---
---     -   'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_EXECUTION_GRAPH_AMDX'
---
--- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_EXECUTION_GRAPH_PIPELINE_CREATE_INFO_AMDX'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_EXECUTION_GRAPH_PIPELINE_SCRATCH_SIZE_AMDX'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ENQUEUE_FEATURES_AMDX'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ENQUEUE_PROPERTIES_AMDX'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_NODE_CREATE_INFO_AMDX'
---
--- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance5 VK_KHR_maintenance5>
--- is supported:
---
--- -   Extending
---     'Vulkan.Extensions.VK_KHR_maintenance5.BufferUsageFlagBits2KHR':
---
---     -   'Vulkan.Extensions.VK_KHR_maintenance5.BUFFER_USAGE_2_EXECUTION_GRAPH_SCRATCH_BIT_AMDX'
---
--- -   Extending
---     'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlagBits2KHR':
---
---     -   'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_EXECUTION_GRAPH_BIT_AMDX'
---
--- == Version History
---
--- -   Revision 2, 2024-07-17 (Tobias Hector)
---
---     -   Add mesh nodes
---
--- -   Revision 1, 2021-07-22 (Tobias Hector)
---
---     -   Initial revision
---
--- == See Also
---
--- No cross-references are available
---
--- == Document Notes
---
--- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_AMDX_shader_enqueue Vulkan Specification>
---
--- This page is a generated document. Fixes and changes should be made to
--- the generator scripts, not directly.
-module Vulkan.Extensions.VK_AMDX_shader_enqueue  ( getExecutionGraphPipelineScratchSizeAMDX
-                                                 , getExecutionGraphPipelineNodeIndexAMDX
-                                                 , createExecutionGraphPipelinesAMDX
-                                                 , cmdInitializeGraphScratchMemoryAMDX
-                                                 , cmdDispatchGraphAMDX
-                                                 , cmdDispatchGraphIndirectAMDX
-                                                 , cmdDispatchGraphIndirectCountAMDX
-                                                 , PhysicalDeviceShaderEnqueuePropertiesAMDX(..)
-                                                 , PhysicalDeviceShaderEnqueueFeaturesAMDX(..)
-                                                 , ExecutionGraphPipelineCreateInfoAMDX(..)
-                                                 , PipelineShaderStageNodeCreateInfoAMDX(..)
-                                                 , ExecutionGraphPipelineScratchSizeAMDX(..)
-                                                 , DispatchGraphInfoAMDX(..)
-                                                 , DispatchGraphCountInfoAMDX(..)
-                                                 , DeviceOrHostAddressConstAMDX(..)
-                                                 , AMDX_SHADER_ENQUEUE_SPEC_VERSION
-                                                 , pattern AMDX_SHADER_ENQUEUE_SPEC_VERSION
-                                                 , AMDX_SHADER_ENQUEUE_EXTENSION_NAME
-                                                 , pattern AMDX_SHADER_ENQUEUE_EXTENSION_NAME
-                                                 , PipelineLibraryCreateInfoKHR(..)
-                                                 , BufferUsageFlagBits2KHR(..)
-                                                 , BufferUsageFlags2KHR
-                                                 , PipelineCreateFlagBits2KHR(..)
-                                                 , PipelineCreateFlags2KHR
-                                                 , SHADER_INDEX_UNUSED_AMDX
-                                                 , pattern SHADER_INDEX_UNUSED_AMDX
-                                                 ) 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 Data.Typeable (eqT)
-import Foreign.Marshal.Alloc (allocaBytes)
-import Foreign.Marshal.Alloc (callocBytes)
-import Foreign.Marshal.Alloc (free)
-import Foreign.Marshal.Utils (maybePeek)
-import GHC.Base (when)
-import GHC.IO (throwIO)
-import GHC.Ptr (castPtr)
-import GHC.Ptr (nullFunPtr)
-import Foreign.Ptr (nullPtr)
-import Foreign.Ptr (plusPtr)
-import Data.ByteString (packCString)
-import Data.ByteString (useAsCString)
-import Control.Monad.Trans.Class (lift)
-import Control.Monad.Trans.Cont (evalContT)
-import Control.Monad.Trans.Cont (runContT)
-import Data.Vector (generateM)
-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.Type.Equality ((:~:)(Refl))
-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 Data.Int (Int32)
-import Foreign.Ptr (FunPtr)
-import Foreign.Ptr (Ptr)
-import Data.Word (Word32)
-import Data.Word (Word64)
-import Data.ByteString (ByteString)
-import Data.Kind (Type)
-import Control.Monad.Trans.Cont (ContT(..))
-import 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.Utils (lowerArrayPtr)
-import Vulkan.CStruct.Extends (peekSomeCStruct)
-import Vulkan.CStruct.Extends (pokeSomeCStruct)
-import Vulkan.NamedType ((:::))
-import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)
-import Vulkan.Core10.FundamentalTypes (Bool32)
-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.Handles (Device)
-import Vulkan.Core10.Handles (Device(..))
-import Vulkan.Core10.Handles (Device(Device))
-import Vulkan.Core10.FundamentalTypes (DeviceAddress)
-import Vulkan.Dynamic (DeviceCmds(pVkCmdDispatchGraphAMDX))
-import Vulkan.Dynamic (DeviceCmds(pVkCmdDispatchGraphIndirectAMDX))
-import Vulkan.Dynamic (DeviceCmds(pVkCmdDispatchGraphIndirectCountAMDX))
-import Vulkan.Dynamic (DeviceCmds(pVkCmdInitializeGraphScratchMemoryAMDX))
-import Vulkan.Dynamic (DeviceCmds(pVkCreateExecutionGraphPipelinesAMDX))
-import Vulkan.Dynamic (DeviceCmds(pVkGetExecutionGraphPipelineNodeIndexAMDX))
-import Vulkan.Dynamic (DeviceCmds(pVkGetExecutionGraphPipelineScratchSizeAMDX))
-import Vulkan.Core10.FundamentalTypes (DeviceSize)
-import Vulkan.Core10.Handles (Device_T)
-import Vulkan.CStruct.Extends (Extends)
-import Vulkan.CStruct.Extends (Extendss)
-import Vulkan.CStruct.Extends (Extensible(..))
-import Vulkan.CStruct.Extends (PeekChain)
-import Vulkan.CStruct.Extends (PeekChain(..))
-import Vulkan.Core10.Handles (Pipeline)
-import Vulkan.Core10.Handles (Pipeline(..))
-import Vulkan.Core10.Handles (PipelineCache)
-import Vulkan.Core10.Handles (PipelineCache(..))
-import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_pipeline_compiler_control (PipelineCompilerControlCreateInfoAMD)
-import Vulkan.Core10.Enums.PipelineCreateFlagBits (PipelineCreateFlags)
-import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_pipeline_creation_feedback (PipelineCreationFeedbackCreateInfo)
-import Vulkan.Core10.Handles (PipelineLayout)
-import Vulkan.Extensions.VK_KHR_pipeline_library (PipelineLibraryCreateInfoKHR)
-import Vulkan.Core10.Pipeline (PipelineShaderStageCreateInfo)
-import Vulkan.CStruct.Extends (PokeChain)
-import Vulkan.CStruct.Extends (PokeChain(..))
-import Vulkan.Core10.Enums.Result (Result)
-import Vulkan.Core10.Enums.Result (Result(..))
-import Vulkan.CStruct.Extends (SomeStruct)
-import Vulkan.Core10.Enums.StructureType (StructureType)
-import Vulkan.Exception (VulkanException(..))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_EXECUTION_GRAPH_PIPELINE_CREATE_INFO_AMDX))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_EXECUTION_GRAPH_PIPELINE_SCRATCH_SIZE_AMDX))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ENQUEUE_FEATURES_AMDX))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ENQUEUE_PROPERTIES_AMDX))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_NODE_CREATE_INFO_AMDX))
-import Vulkan.Core10.Enums.Result (Result(SUCCESS))
-import Vulkan.Extensions.VK_KHR_maintenance5 (BufferUsageFlagBits2KHR(..))
-import Vulkan.Extensions.VK_KHR_maintenance5 (BufferUsageFlags2KHR)
-import Vulkan.Extensions.VK_KHR_maintenance5 (PipelineCreateFlagBits2KHR(..))
-import Vulkan.Extensions.VK_KHR_maintenance5 (PipelineCreateFlags2KHR)
-import Vulkan.Extensions.VK_KHR_pipeline_library (PipelineLibraryCreateInfoKHR(..))
-import Vulkan.Core10.APIConstants (SHADER_INDEX_UNUSED_AMDX)
-import Vulkan.Core10.APIConstants (pattern SHADER_INDEX_UNUSED_AMDX)
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkGetExecutionGraphPipelineScratchSizeAMDX
-  :: FunPtr (Ptr Device_T -> Pipeline -> Ptr ExecutionGraphPipelineScratchSizeAMDX -> IO Result) -> Ptr Device_T -> Pipeline -> Ptr ExecutionGraphPipelineScratchSizeAMDX -> IO Result
-
--- | vkGetExecutionGraphPipelineScratchSizeAMDX - Query scratch space
--- required to dispatch an execution graph
---
--- = Description
---
--- After this function returns, information about the scratch space
--- required will be returned in @pSizeInfo@.
---
--- == 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_AMDX_shader_enqueue VK_AMDX_shader_enqueue>,
--- 'Vulkan.Core10.Handles.Device', 'ExecutionGraphPipelineScratchSizeAMDX',
--- 'Vulkan.Core10.Handles.Pipeline'
-getExecutionGraphPipelineScratchSizeAMDX :: forall io
-                                          . (MonadIO io)
-                                         => -- | @device@ is the logical device that @executionGraph@ was created on.
-                                            --
-                                            -- #VUID-vkGetExecutionGraphPipelineScratchSizeAMDX-device-parameter#
-                                            -- @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
-                                            Device
-                                         -> -- | @executionGraph@ is the execution graph pipeline to query the scratch
-                                            -- space for.
-                                            --
-                                            -- #VUID-vkGetExecutionGraphPipelineScratchSizeAMDX-executionGraph-parameter#
-                                            -- @executionGraph@ /must/ be a valid 'Vulkan.Core10.Handles.Pipeline'
-                                            -- handle
-                                            --
-                                            -- #VUID-vkGetExecutionGraphPipelineScratchSizeAMDX-executionGraph-parent#
-                                            -- @executionGraph@ /must/ have been created, allocated, or retrieved from
-                                            -- @device@
-                                            ("executionGraph" ::: Pipeline)
-                                         -> io (("sizeInfo" ::: ExecutionGraphPipelineScratchSizeAMDX))
-getExecutionGraphPipelineScratchSizeAMDX device
-                                           executionGraph = liftIO . evalContT $ do
-  let vkGetExecutionGraphPipelineScratchSizeAMDXPtr = pVkGetExecutionGraphPipelineScratchSizeAMDX (case device of Device{deviceCmds} -> deviceCmds)
-  lift $ unless (vkGetExecutionGraphPipelineScratchSizeAMDXPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetExecutionGraphPipelineScratchSizeAMDX is null" Nothing Nothing
-  let vkGetExecutionGraphPipelineScratchSizeAMDX' = mkVkGetExecutionGraphPipelineScratchSizeAMDX vkGetExecutionGraphPipelineScratchSizeAMDXPtr
-  pPSizeInfo <- ContT (withZeroCStruct @ExecutionGraphPipelineScratchSizeAMDX)
-  r <- lift $ traceAroundEvent "vkGetExecutionGraphPipelineScratchSizeAMDX" (vkGetExecutionGraphPipelineScratchSizeAMDX'
-                                                                               (deviceHandle (device))
-                                                                               (executionGraph)
-                                                                               (pPSizeInfo))
-  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
-  pSizeInfo <- lift $ peekCStruct @ExecutionGraphPipelineScratchSizeAMDX pPSizeInfo
-  pure $ (pSizeInfo)
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkGetExecutionGraphPipelineNodeIndexAMDX
-  :: FunPtr (Ptr Device_T -> Pipeline -> Ptr PipelineShaderStageNodeCreateInfoAMDX -> Ptr Word32 -> IO Result) -> Ptr Device_T -> Pipeline -> Ptr PipelineShaderStageNodeCreateInfoAMDX -> Ptr Word32 -> IO Result
-
--- | vkGetExecutionGraphPipelineNodeIndexAMDX - Query internal id of a node
--- in an execution graph
---
--- = Description
---
--- Once this function returns, the contents of @pNodeIndex@ contain the
--- internal node index of the identified node.
---
--- == Valid Usage
---
--- -   #VUID-vkGetExecutionGraphPipelineNodeIndexAMDX-pNodeInfo-09140#
---     @pNodeInfo->pName@ /must/ not be @NULL@
---
--- -   #VUID-vkGetExecutionGraphPipelineNodeIndexAMDX-pNodeInfo-09141#
---     @pNodeInfo->index@ /must/ not be
---     'Vulkan.Core10.APIConstants.SHADER_INDEX_UNUSED_AMDX'
---
--- -   #VUID-vkGetExecutionGraphPipelineNodeIndexAMDX-executionGraph-09142#
---     There /must/ be a node in @executionGraph@ with a shader name and
---     index equal to @pNodeInfo->pName@ and @pNodeInfo->index@
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkGetExecutionGraphPipelineNodeIndexAMDX-device-parameter#
---     @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
---
--- -   #VUID-vkGetExecutionGraphPipelineNodeIndexAMDX-executionGraph-parameter#
---     @executionGraph@ /must/ be a valid 'Vulkan.Core10.Handles.Pipeline'
---     handle
---
--- -   #VUID-vkGetExecutionGraphPipelineNodeIndexAMDX-pNodeInfo-parameter#
---     @pNodeInfo@ /must/ be a valid pointer to a valid
---     'PipelineShaderStageNodeCreateInfoAMDX' structure
---
--- -   #VUID-vkGetExecutionGraphPipelineNodeIndexAMDX-pNodeIndex-parameter#
---     @pNodeIndex@ /must/ be a valid pointer to a @uint32_t@ value
---
--- -   #VUID-vkGetExecutionGraphPipelineNodeIndexAMDX-executionGraph-parent#
---     @executionGraph@ /must/ have been created, allocated, or retrieved
---     from @device@
---
--- == 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_AMDX_shader_enqueue VK_AMDX_shader_enqueue>,
--- 'Vulkan.Core10.Handles.Device', 'Vulkan.Core10.Handles.Pipeline',
--- 'PipelineShaderStageNodeCreateInfoAMDX'
-getExecutionGraphPipelineNodeIndexAMDX :: forall io
-                                        . (MonadIO io)
-                                       => -- | @device@ is the logical device that @executionGraph@ was created on.
-                                          Device
-                                       -> -- | @executionGraph@ is the execution graph pipeline to query the internal
-                                          -- node index for.
-                                          ("executionGraph" ::: Pipeline)
-                                       -> -- | @pNodeInfo@ is a pointer to a 'PipelineShaderStageNodeCreateInfoAMDX'
-                                          -- structure identifying the name and index of the node to query.
-                                          ("nodeInfo" ::: PipelineShaderStageNodeCreateInfoAMDX)
-                                       -> io (("nodeIndex" ::: Word32))
-getExecutionGraphPipelineNodeIndexAMDX device
-                                         executionGraph
-                                         nodeInfo = liftIO . evalContT $ do
-  let vkGetExecutionGraphPipelineNodeIndexAMDXPtr = pVkGetExecutionGraphPipelineNodeIndexAMDX (case device of Device{deviceCmds} -> deviceCmds)
-  lift $ unless (vkGetExecutionGraphPipelineNodeIndexAMDXPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetExecutionGraphPipelineNodeIndexAMDX is null" Nothing Nothing
-  let vkGetExecutionGraphPipelineNodeIndexAMDX' = mkVkGetExecutionGraphPipelineNodeIndexAMDX vkGetExecutionGraphPipelineNodeIndexAMDXPtr
-  pNodeInfo <- ContT $ withCStruct (nodeInfo)
-  pPNodeIndex <- ContT $ bracket (callocBytes @Word32 4) free
-  r <- lift $ traceAroundEvent "vkGetExecutionGraphPipelineNodeIndexAMDX" (vkGetExecutionGraphPipelineNodeIndexAMDX'
-                                                                             (deviceHandle (device))
-                                                                             (executionGraph)
-                                                                             pNodeInfo
-                                                                             (pPNodeIndex))
-  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
-  pNodeIndex <- lift $ peek @Word32 pPNodeIndex
-  pure $ (pNodeIndex)
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCreateExecutionGraphPipelinesAMDX
-  :: FunPtr (Ptr Device_T -> PipelineCache -> Word32 -> Ptr (SomeStruct ExecutionGraphPipelineCreateInfoAMDX) -> Ptr AllocationCallbacks -> Ptr Pipeline -> IO Result) -> Ptr Device_T -> PipelineCache -> Word32 -> Ptr (SomeStruct ExecutionGraphPipelineCreateInfoAMDX) -> Ptr AllocationCallbacks -> Ptr Pipeline -> IO Result
-
--- | vkCreateExecutionGraphPipelinesAMDX - Creates a new execution graph
--- pipeline object
---
--- = Description
---
--- Pipelines are created and returned as described for
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-multiple Multiple Pipeline Creation>.
---
--- == Valid Usage
---
--- -   #VUID-vkCreateExecutionGraphPipelinesAMDX-shaderEnqueue-09124# The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-shaderEnqueue shaderEnqueue>
---     feature /must/ be enabled
---
--- -   #VUID-vkCreateExecutionGraphPipelinesAMDX-flags-09125# If the
---     @flags@ member of any element of @pCreateInfos@ contains the
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'
---     flag, and the @basePipelineIndex@ member of that same element is not
---     @-1@, @basePipelineIndex@ /must/ be less than the index into
---     @pCreateInfos@ that corresponds to that element
---
--- -   #VUID-vkCreateExecutionGraphPipelinesAMDX-flags-09126# If the
---     @flags@ member of any element of @pCreateInfos@ contains the
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'
---     flag, the base pipeline /must/ have been created with the
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT'
---     flag set
---
--- -   #VUID-vkCreateExecutionGraphPipelinesAMDX-pipelineCache-09127# If
---     @pipelineCache@ was created with
---     'Vulkan.Core10.Enums.PipelineCacheCreateFlagBits.PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT',
---     host access to @pipelineCache@ /must/ be
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#fundamentals-threadingbehavior externally synchronized>
---
--- -   #VUID-vkCreateExecutionGraphPipelinesAMDX-pNext-09616# If
---     'Vulkan.Extensions.VK_KHR_pipeline_binary.PipelineBinaryInfoKHR'::@binaryCount@
---     is not @0@ for any element of @pCreateInfos@, @pipelineCache@ /must/
---     be 'Vulkan.Core10.APIConstants.NULL_HANDLE'
---
--- -   #VUID-vkCreateExecutionGraphPipelinesAMDX-pNext-09617# If a
---     'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlags2CreateInfoKHR'
---     structure with the
---     'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR'
---     flag set is included in the @pNext@ chain of any element of
---     @pCreateInfos@, @pipelineCache@ /must/ be
---     'Vulkan.Core10.APIConstants.NULL_HANDLE'
---
--- -   #VUID-vkCreateExecutionGraphPipelinesAMDX-binaryCount-09620# If
---     'Vulkan.Extensions.VK_KHR_pipeline_binary.PipelineBinaryInfoKHR'::@binaryCount@
---     is not @0@ for any element of @pCreateInfos@,
---     'Vulkan.Core13.Enums.PipelineCreationFeedbackFlagBits.PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT'
---     /must/ not be set in the @flags@ of that element
---
--- -   #VUID-vkCreateExecutionGraphPipelinesAMDX-binaryCount-09621# If
---     'Vulkan.Extensions.VK_KHR_pipeline_binary.PipelineBinaryInfoKHR'::@binaryCount@
---     is not @0@ for any element of @pCreateInfos@,
---     'Vulkan.Core13.Enums.PipelineCreationFeedbackFlagBits.PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT'
---     /must/ not be set in the @flags@ of that element
---
--- -   #VUID-vkCreateExecutionGraphPipelinesAMDX-binaryCount-09622# If
---     'Vulkan.Extensions.VK_KHR_pipeline_binary.PipelineBinaryInfoKHR'::@binaryCount@
---     is not @0@ for any element of @pCreateInfos@,
---     'Vulkan.Extensions.VK_EXT_pipeline_creation_cache_control.PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT'
---     /must/ not be set in the @flags@ of that element
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCreateExecutionGraphPipelinesAMDX-device-parameter# @device@
---     /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
---
--- -   #VUID-vkCreateExecutionGraphPipelinesAMDX-pipelineCache-parameter#
---     If @pipelineCache@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
---     @pipelineCache@ /must/ be a valid
---     'Vulkan.Core10.Handles.PipelineCache' handle
---
--- -   #VUID-vkCreateExecutionGraphPipelinesAMDX-pCreateInfos-parameter#
---     @pCreateInfos@ /must/ be a valid pointer to an array of
---     @createInfoCount@ valid 'ExecutionGraphPipelineCreateInfoAMDX'
---     structures
---
--- -   #VUID-vkCreateExecutionGraphPipelinesAMDX-pAllocator-parameter# If
---     @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid pointer
---     to a valid 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'
---     structure
---
--- -   #VUID-vkCreateExecutionGraphPipelinesAMDX-pPipelines-parameter#
---     @pPipelines@ /must/ be a valid pointer to an array of
---     @createInfoCount@ 'Vulkan.Core10.Handles.Pipeline' handles
---
--- -   #VUID-vkCreateExecutionGraphPipelinesAMDX-createInfoCount-arraylength#
---     @createInfoCount@ /must/ be greater than @0@
---
--- -   #VUID-vkCreateExecutionGraphPipelinesAMDX-pipelineCache-parent# If
---     @pipelineCache@ is a valid handle, it /must/ have been created,
---     allocated, or retrieved from @device@
---
--- == Return Codes
---
--- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
---
---     -   'Vulkan.Core10.Enums.Result.SUCCESS'
---
---     -   '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>]
---
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
---
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMDX_shader_enqueue VK_AMDX_shader_enqueue>,
--- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',
--- 'Vulkan.Core10.Handles.Device', 'ExecutionGraphPipelineCreateInfoAMDX',
--- 'Vulkan.Core10.Handles.Pipeline', 'Vulkan.Core10.Handles.PipelineCache'
-createExecutionGraphPipelinesAMDX :: forall io
-                                   . (MonadIO io)
-                                  => -- | @device@ is the logical device that creates the execution graph
-                                     -- pipelines.
-                                     Device
-                                  -> -- | @pipelineCache@ is either 'Vulkan.Core10.APIConstants.NULL_HANDLE',
-                                     -- indicating that pipeline caching is disabled; or the handle of a valid
-                                     -- <https://registry.khronos.org/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
-                                  -> -- | @pCreateInfos@ is a pointer to an array of
-                                     -- 'ExecutionGraphPipelineCreateInfoAMDX' structures.
-                                     ("createInfos" ::: Vector (SomeStruct ExecutionGraphPipelineCreateInfoAMDX))
-                                  -> -- | @pAllocator@ controls host memory allocation as described in the
-                                     -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
-                                     -- chapter.
-                                     ("allocator" ::: Maybe AllocationCallbacks)
-                                  -> io (Result, ("pipelines" ::: Vector Pipeline))
-createExecutionGraphPipelinesAMDX device
-                                    pipelineCache
-                                    createInfos
-                                    allocator = liftIO . evalContT $ do
-  let vkCreateExecutionGraphPipelinesAMDXPtr = pVkCreateExecutionGraphPipelinesAMDX (case device of Device{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCreateExecutionGraphPipelinesAMDXPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCreateExecutionGraphPipelinesAMDX is null" Nothing Nothing
-  let vkCreateExecutionGraphPipelinesAMDX' = mkVkCreateExecutionGraphPipelinesAMDX vkCreateExecutionGraphPipelinesAMDXPtr
-  pPCreateInfos <- ContT $ allocaBytes @(ExecutionGraphPipelineCreateInfoAMDX _) ((Data.Vector.length (createInfos)) * 64)
-  Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPCreateInfos `plusPtr` (64 * (i)) :: Ptr (ExecutionGraphPipelineCreateInfoAMDX _))) (e) . ($ ())) (createInfos)
-  pAllocator <- case (allocator) of
-    Nothing -> pure nullPtr
-    Just j -> ContT $ withCStruct (j)
-  pPPipelines <- ContT $ bracket (callocBytes @Pipeline ((fromIntegral ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32))) * 8)) free
-  r <- lift $ traceAroundEvent "vkCreateExecutionGraphPipelinesAMDX" (vkCreateExecutionGraphPipelinesAMDX'
-                                                                        (deviceHandle (device))
-                                                                        (pipelineCache)
-                                                                        ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32))
-                                                                        (forgetExtensions (pPCreateInfos))
-                                                                        pAllocator
-                                                                        (pPPipelines))
-  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
-  pPipelines <- lift $ generateM (fromIntegral ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32))) (\i -> peek @Pipeline ((pPPipelines `advancePtrBytes` (8 * (i)) :: Ptr Pipeline)))
-  pure $ (r, pPipelines)
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdInitializeGraphScratchMemoryAMDX
-  :: FunPtr (Ptr CommandBuffer_T -> Pipeline -> DeviceAddress -> DeviceSize -> IO ()) -> Ptr CommandBuffer_T -> Pipeline -> DeviceAddress -> DeviceSize -> IO ()
-
--- | vkCmdInitializeGraphScratchMemoryAMDX - Initialize scratch memory for an
--- execution graph
---
--- = Description
---
--- This command /must/ be called before using @scratch@ to dispatch the
--- bound execution graph pipeline.
---
--- Execution of this command /may/ modify any memory locations in the range
--- [@scratch@,@scratch@ + @scratchSize@). Accesses to this memory range are
--- performed in the
--- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COMPUTE_SHADER_BIT'
--- pipeline stage with the
--- 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_STORAGE_READ_BIT' and
--- 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_STORAGE_WRITE_BIT'
--- access flags.
---
--- If any portion of @scratch@ is modified by any command other than
--- 'cmdDispatchGraphAMDX', 'cmdDispatchGraphIndirectAMDX',
--- 'cmdDispatchGraphIndirectCountAMDX', or
--- 'cmdInitializeGraphScratchMemoryAMDX' with the same execution graph, it
--- /must/ be reinitialized for the execution graph again before dispatching
--- against it.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdInitializeGraphScratchMemoryAMDX-scratch-10185# @scratch@
---     /must/ be the device address of an allocated memory range at least
---     as large as @scratchSize@
---
--- -   #VUID-vkCmdInitializeGraphScratchMemoryAMDX-scratchSize-10186#
---     @scratchSize@ /must/ be greater than or equal to
---     'ExecutionGraphPipelineScratchSizeAMDX'::@minSize@ returned by
---     'getExecutionGraphPipelineScratchSizeAMDX' for the bound execution
---     graph pipeline
---
--- -   #VUID-vkCmdInitializeGraphScratchMemoryAMDX-scratch-09144# @scratch@
---     /must/ be a multiple of 64
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdInitializeGraphScratchMemoryAMDX-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdInitializeGraphScratchMemoryAMDX-executionGraph-parameter#
---     @executionGraph@ /must/ be a valid 'Vulkan.Core10.Handles.Pipeline'
---     handle
---
--- -   #VUID-vkCmdInitializeGraphScratchMemoryAMDX-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-vkCmdInitializeGraphScratchMemoryAMDX-commandBuffer-cmdpool#
---     The 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics, or compute operations
---
--- -   #VUID-vkCmdInitializeGraphScratchMemoryAMDX-videocoding# This
---     command /must/ only be called outside of a video coding scope
---
--- -   #VUID-vkCmdInitializeGraphScratchMemoryAMDX-bufferlevel#
---     @commandBuffer@ /must/ be a primary
---     'Vulkan.Core10.Handles.CommandBuffer'
---
--- -   #VUID-vkCmdInitializeGraphScratchMemoryAMDX-commonparent# Both of
---     @commandBuffer@, and @executionGraph@ /must/ have been created,
---     allocated, or retrieved from the same 'Vulkan.Core10.Handles.Device'
---
--- == Host Synchronization
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
--- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | Action                                                                                                                                 |
--- |                                                                                                                            |                                                                                                                        |                                                                                                                             | Compute                                                                                                               |                                                                                                                                        |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMDX_shader_enqueue VK_AMDX_shader_enqueue>,
--- 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.FundamentalTypes.DeviceAddress',
--- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
--- 'Vulkan.Core10.Handles.Pipeline'
-cmdInitializeGraphScratchMemoryAMDX :: forall io
-                                     . (MonadIO io)
-                                    => -- | @commandBuffer@ is the command buffer into which the command will be
-                                       -- recorded.
-                                       CommandBuffer
-                                    -> -- | @executionGraph@ is the execution graph pipeline to initialize the
-                                       -- scratch memory for.
-                                       ("executionGraph" ::: Pipeline)
-                                    -> -- | @scratch@ is the address of scratch memory to be initialized.
-                                       ("scratch" ::: DeviceAddress)
-                                    -> -- | @scratchSize@ is a range in bytes of scratch memory to be initialized.
-                                       ("scratchSize" ::: DeviceSize)
-                                    -> io ()
-cmdInitializeGraphScratchMemoryAMDX commandBuffer
-                                      executionGraph
-                                      scratch
-                                      scratchSize = liftIO $ do
-  let vkCmdInitializeGraphScratchMemoryAMDXPtr = pVkCmdInitializeGraphScratchMemoryAMDX (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  unless (vkCmdInitializeGraphScratchMemoryAMDXPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdInitializeGraphScratchMemoryAMDX is null" Nothing Nothing
-  let vkCmdInitializeGraphScratchMemoryAMDX' = mkVkCmdInitializeGraphScratchMemoryAMDX vkCmdInitializeGraphScratchMemoryAMDXPtr
-  traceAroundEvent "vkCmdInitializeGraphScratchMemoryAMDX" (vkCmdInitializeGraphScratchMemoryAMDX'
-                                                              (commandBufferHandle (commandBuffer))
-                                                              (executionGraph)
-                                                              (scratch)
-                                                              (scratchSize))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdDispatchGraphAMDX
-  :: FunPtr (Ptr CommandBuffer_T -> DeviceAddress -> DeviceSize -> Ptr DispatchGraphCountInfoAMDX -> IO ()) -> Ptr CommandBuffer_T -> DeviceAddress -> DeviceSize -> Ptr DispatchGraphCountInfoAMDX -> IO ()
-
--- | vkCmdDispatchGraphAMDX - Dispatch an execution graph
---
--- = Description
---
--- When this command is executed, the nodes specified in @pCountInfo@ are
--- executed. Nodes executed as part of this command are not implicitly
--- synchronized in any way against each other once they are dispatched.
--- There are no rasterization order guarantees between separately
--- dispatched graphics nodes, though individual primitives within a single
--- dispatch do adhere to rasterization order. Draw calls executed before or
--- after the execution graph also execute relative to each graphics node
--- with respect to rasterization order.
---
--- For this command, all device\/host pointers in substructures are treated
--- as host pointers and read only during host execution of this command.
--- Once this command returns, no reference to the original pointers is
--- retained.
---
--- Execution of this command /may/ modify any memory locations in the range
--- [@scratch@,@scratch@ + @scratchSize@). Accesses to this memory range are
--- performed in the
--- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COMPUTE_SHADER_BIT'
--- pipeline stage with the
--- 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_STORAGE_READ_BIT' and
--- 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_STORAGE_WRITE_BIT'
--- access flags.
---
--- This command
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#executiongraphs-meshnodes-statecapture captures command buffer state>
--- for mesh nodes similarly to draw commands.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdDispatchGraphAMDX-magFilter-04553# If a
---     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
---     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR',
---     @reductionMode@ equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
---     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-vkCmdDispatchGraphAMDX-magFilter-09598# If a
---     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
---     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR' and
---     @reductionMode@ equal to either
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
---     or
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
---     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_MINMAX_BIT'
---
--- -   #VUID-vkCmdDispatchGraphAMDX-mipmapMode-04770# If a
---     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
---     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR',
---     @reductionMode@ equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
---     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-vkCmdDispatchGraphAMDX-mipmapMode-09599# If a
---     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
---     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'
---     and @reductionMode@ equal to either
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
---     or
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
---     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_MINMAX_BIT'
---
--- -   #VUID-vkCmdDispatchGraphAMDX-unnormalizedCoordinates-09635# If a
---     'Vulkan.Core10.Handles.Sampler' created with
---     @unnormalizedCoordinates@ equal to
---     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
---     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
---     the image view’s @levelCount@ and @layerCount@ /must/ be 1
---
--- -   #VUID-vkCmdDispatchGraphAMDX-unnormalizedCoordinates-09636# If a
---     'Vulkan.Core10.Handles.Sampler' created with
---     @unnormalizedCoordinates@ equal to
---     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
---     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
---     the image view’s @viewType@ /must/ be
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D' or
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D'
---
--- -   #VUID-vkCmdDispatchGraphAMDX-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-vkCmdDispatchGraphAMDX-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-vkCmdDispatchGraphAMDX-None-07888# If a
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'
---     descriptor is accessed using atomic operations as a result of this
---     command, then the storage texel buffer’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-buffer-view-format-features format features>
---     /must/ contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT'
---
--- -   #VUID-vkCmdDispatchGraphAMDX-None-02692# If a
---     'Vulkan.Core10.Handles.ImageView' is sampled with
---     'Vulkan.Core10.Enums.Filter.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.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'
---
--- -   #VUID-vkCmdDispatchGraphAMDX-None-02693# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_filter_cubic VK_EXT_filter_cubic>
---     extension is not enabled and any 'Vulkan.Core10.Handles.ImageView'
---     is sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as a
---     result of this command, it /must/ not have a
---     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' of
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE', or
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY'
---
--- -   #VUID-vkCmdDispatchGraphAMDX-filterCubic-02694# Any
---     'Vulkan.Core10.Handles.ImageView' being sampled with
---     'Vulkan.Core10.Enums.Filter.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-vkCmdDispatchGraphAMDX-filterCubicMinmax-02695# Any
---     'Vulkan.Core10.Handles.ImageView' being sampled with
---     'Vulkan.Core10.Enums.Filter.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-vkCmdDispatchGraphAMDX-cubicRangeClamp-09212# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-cubicRangeClamp cubicRangeClamp>
---     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
---     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
---     a result of this command /must/ not have a
---     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
---     equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
---
--- -   #VUID-vkCmdDispatchGraphAMDX-reductionMode-09213# Any
---     'Vulkan.Core10.Handles.ImageView' being sampled with a
---     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
---     equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
---     as a result of this command /must/ sample with
---     'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT'
---
--- -   #VUID-vkCmdDispatchGraphAMDX-selectableCubicWeights-09214# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-selectableCubicWeights selectableCubicWeights>
---     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
---     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
---     a result of this command /must/ have
---     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.SamplerCubicWeightsCreateInfoQCOM'::@cubicWeights@
---     equal to
---     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM'
---
--- -   #VUID-vkCmdDispatchGraphAMDX-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-vkCmdDispatchGraphAMDX-OpTypeImage-07027# For any
---     'Vulkan.Core10.Handles.ImageView' being written as a storage image
---     where the image format field of the @OpTypeImage@ is @Unknown@, the
---     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_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdDispatchGraphAMDX-OpTypeImage-07028# For any
---     'Vulkan.Core10.Handles.ImageView' being read as a storage image
---     where the image format field of the @OpTypeImage@ is @Unknown@, the
---     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_STORAGE_READ_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdDispatchGraphAMDX-OpTypeImage-07029# For any
---     'Vulkan.Core10.Handles.BufferView' being written as a storage texel
---     buffer where the image format field of the @OpTypeImage@ is
---     @Unknown@, the view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
---     /must/ contain
---     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdDispatchGraphAMDX-OpTypeImage-07030# Any
---     'Vulkan.Core10.Handles.BufferView' being read as a storage texel
---     buffer where the image format field of the @OpTypeImage@ is
---     @Unknown@ then the view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
---     /must/ contain
---     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdDispatchGraphAMDX-None-08600# For each set /n/ that is
---     statically used by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     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' or the
---     'Vulkan.Core10.Handles.DescriptorSetLayout' array used to create the
---     current 'Vulkan.Extensions.Handles.ShaderEXT' , as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
---
--- -   #VUID-vkCmdDispatchGraphAMDX-None-08601# For each push constant that
---     is statically used by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     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' or the
---     'Vulkan.Core10.Handles.DescriptorSetLayout' array used to create the
---     current 'Vulkan.Extensions.Handles.ShaderEXT' , as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
---
--- -   #VUID-vkCmdDispatchGraphAMDX-None-10068# For each array of resources
---     that is used by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     the indices used to access members of the array /must/ be less than
---     the descriptor count for the identified binding in the descriptor
---     sets used by this command
---
--- -   #VUID-vkCmdDispatchGraphAMDX-maintenance4-08602# 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
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     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' or the
---     'Vulkan.Core10.Handles.DescriptorSetLayout' and
---     'Vulkan.Core10.PipelineLayout.PushConstantRange' arrays used to
---     create the current 'Vulkan.Extensions.Handles.ShaderEXT' , as
---     described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
---
--- -   #VUID-vkCmdDispatchGraphAMDX-None-08114# Descriptors in each bound
---     descriptor set, specified via
---     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
---     be valid as described by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
---     if they are statically used by the 'Vulkan.Core10.Handles.Pipeline'
---     bound to the pipeline bind point used by this command and the bound
---     'Vulkan.Core10.Handles.Pipeline' was not created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdDispatchGraphAMDX-None-08115# If the descriptors used by
---     the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
---     point were specified via
---     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', the
---     bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
---     without
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdDispatchGraphAMDX-None-08116# Descriptors in bound
---     descriptor buffers, specified via
---     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
---     /must/ be valid if they are dynamically used by the
---     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
---     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
---     was created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdDispatchGraphAMDX-None-08604# Descriptors in bound
---     descriptor buffers, specified via
---     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
---     /must/ be valid if they are dynamically used by any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     to the pipeline bind point used by this command
---
--- -   #VUID-vkCmdDispatchGraphAMDX-None-08117# If the descriptors used by
---     the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
---     point were specified via
---     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
---     the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
---     with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdDispatchGraphAMDX-None-08119# If a descriptor is
---     dynamically used with a 'Vulkan.Core10.Handles.Pipeline' created
---     with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
---     the descriptor memory /must/ be resident
---
--- -   #VUID-vkCmdDispatchGraphAMDX-None-08605# If a descriptor is
---     dynamically used with a 'Vulkan.Extensions.Handles.ShaderEXT'
---     created with a 'Vulkan.Core10.Handles.DescriptorSetLayout' that was
---     created with
---     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
---     the descriptor memory /must/ be resident
---
--- -   #VUID-vkCmdDispatchGraphAMDX-None-08606# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject>
---     feature is not enabled, a valid pipeline /must/ be bound to the
---     pipeline bind point used by this command
---
--- -   #VUID-vkCmdDispatchGraphAMDX-None-08608# If a pipeline is bound to
---     the pipeline bind point used by this command, there /must/ not have
---     been any calls to dynamic state setting commands for any state
---     specified statically in the 'Vulkan.Core10.Handles.Pipeline' object
---     bound to the pipeline bind point used by this command, since that
---     pipeline was bound
---
--- -   #VUID-vkCmdDispatchGraphAMDX-None-08609# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command or any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDispatchGraphAMDX-None-08610# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command or any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDispatchGraphAMDX-None-08611# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command or any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDispatchGraphAMDX-None-08607# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject>
---     feature is enabled, either a valid pipeline /must/ be bound to the
---     pipeline bind point used by this command, or a valid combination of
---     valid and 'Vulkan.Core10.APIConstants.NULL_HANDLE' shader objects
---     /must/ be bound to every supported shader stage corresponding to the
---     pipeline bind point used by this command
---
--- -   #VUID-vkCmdDispatchGraphAMDX-uniformBuffers-06935# If any stage of
---     the 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline
---     bind point used by this command accesses a uniform buffer, and that
---     stage was created without enabling either
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT'
---     or
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT'
---     for @uniformBuffers@, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, that stage /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-vkCmdDispatchGraphAMDX-None-08612# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, and any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDispatchGraphAMDX-storageBuffers-06936# If any stage of
---     the 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline
---     bind point used by this command accesses a storage buffer, and that
---     stage was created without enabling either
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT'
---     or
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT'
---     for @storageBuffers@, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, that stage /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-vkCmdDispatchGraphAMDX-None-08613# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, and any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDispatchGraphAMDX-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
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shaders>
---     /must/ not be a protected resource
---
--- -   #VUID-vkCmdDispatchGraphAMDX-None-06550# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
---     accesses a 'Vulkan.Core10.Handles.Sampler' or
---     'Vulkan.Core10.Handles.ImageView' object that enables
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,
---     that object /must/ only be used with @OpImageSample*@ or
---     @OpImageSparseSample*@ instructions
---
--- -   #VUID-vkCmdDispatchGraphAMDX-ConstOffset-06551# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
---     accesses a 'Vulkan.Core10.Handles.Sampler' or
---     'Vulkan.Core10.Handles.ImageView' object that enables
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,
---     that object /must/ not use the @ConstOffset@ and @Offset@ operands
---
--- -   #VUID-vkCmdDispatchGraphAMDX-viewType-07752# If a
---     'Vulkan.Core10.Handles.ImageView' is accessed as a result of this
---     command, then the image view’s @viewType@ /must/ match the @Dim@
---     operand of the @OpTypeImage@ as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-image-dimensions ???>
---
--- -   #VUID-vkCmdDispatchGraphAMDX-format-07753# If a
---     'Vulkan.Core10.Handles.ImageView' is accessed as a result of this
---     command, then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-numericformat numeric type>
---     of the image view’s @format@ and the @Sampled@ @Type@ operand of the
---     @OpTypeImage@ /must/ match
---
--- -   #VUID-vkCmdDispatchGraphAMDX-OpImageWrite-08795# If a
---     'Vulkan.Core10.Handles.ImageView' created with a format other than
---     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM_KHR' 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-vkCmdDispatchGraphAMDX-OpImageWrite-08796# If a
---     'Vulkan.Core10.Handles.ImageView' created with the format
---     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM_KHR' is accessed using
---     @OpImageWrite@ as a result of this command, then the @Type@ of the
---     @Texel@ operand of that instruction /must/ have four components
---
--- -   #VUID-vkCmdDispatchGraphAMDX-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-vkCmdDispatchGraphAMDX-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-vkCmdDispatchGraphAMDX-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-vkCmdDispatchGraphAMDX-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-vkCmdDispatchGraphAMDX-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-vkCmdDispatchGraphAMDX-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-vkCmdDispatchGraphAMDX-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-vkCmdDispatchGraphAMDX-OpImageWeightedSampleQCOM-06971# If
---     @OpImageWeightedSampleQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM'
---
--- -   #VUID-vkCmdDispatchGraphAMDX-OpImageWeightedSampleQCOM-06972# If
---     @OpImageWeightedSampleQCOM@ uses a 'Vulkan.Core10.Handles.ImageView'
---     as a sample weight image 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM'
---
--- -   #VUID-vkCmdDispatchGraphAMDX-OpImageBoxFilterQCOM-06973# If
---     @OpImageBoxFilterQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM'
---
--- -   #VUID-vkCmdDispatchGraphAMDX-OpImageBlockMatchSSDQCOM-06974# If
---     @OpImageBlockMatchSSDQCOM@ is used to read from an
---     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
---
--- -   #VUID-vkCmdDispatchGraphAMDX-OpImageBlockMatchSADQCOM-06975# If
---     @OpImageBlockMatchSADQCOM@ is used to read from an
---     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
---
--- -   #VUID-vkCmdDispatchGraphAMDX-OpImageBlockMatchSADQCOM-06976# If
---     @OpImageBlockMatchSADQCOM@ or OpImageBlockMatchSSDQCOM is used to
---     read from a reference image as result of this command, then the
---     specified reference coordinates /must/ not fail
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
---
--- -   #VUID-vkCmdDispatchGraphAMDX-OpImageWeightedSampleQCOM-06977# If
---     @OpImageWeightedSampleQCOM@, @OpImageBoxFilterQCOM@,
---     @OpImageBlockMatchWindowSSDQCOM@, @OpImageBlockMatchWindowSADQCOM@,
---     @OpImageBlockMatchGatherSSDQCOM@, @OpImageBlockMatchGatherSADQCOM@,
---     @OpImageBlockMatchSSDQCOM@, or @OpImageBlockMatchSADQCOM@ uses a
---     'Vulkan.Core10.Handles.Sampler' as a result of this command, then
---     the sampler /must/ have been created with
---     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
---
--- -   #VUID-vkCmdDispatchGraphAMDX-OpImageWeightedSampleQCOM-06978# If any
---     command other than @OpImageWeightedSampleQCOM@,
---     @OpImageBoxFilterQCOM@, @OpImageBlockMatchWindowSSDQCOM@,
---     @OpImageBlockMatchWindowSADQCOM@, @OpImageBlockMatchGatherSSDQCOM@,
---     @OpImageBlockMatchGatherSADQCOM@, @OpImageBlockMatchSSDQCOM@, or
---     @OpImageBlockMatchSADQCOM@ uses a 'Vulkan.Core10.Handles.Sampler' as
---     a result of this command, then the sampler /must/ not have been
---     created with
---     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
---
--- -   #VUID-vkCmdDispatchGraphAMDX-OpImageBlockMatchWindow-09215# If a
---     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
---     instruction is used to read from an
---     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
---
--- -   #VUID-vkCmdDispatchGraphAMDX-OpImageBlockMatchWindow-09216# If a
---     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
---     instruction is used to read from an
---     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
---     the image view’s format /must/ be a single-component format
---
--- -   #VUID-vkCmdDispatchGraphAMDX-OpImageBlockMatchWindow-09217# If a
---     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
---     read from a reference image as result of this command, then the
---     specified reference coordinates /must/ not fail
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
---
--- -   #VUID-vkCmdDispatchGraphAMDX-None-07288# Any shader invocation
---     executed by this command /must/
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-termination terminate>
---
--- -   #VUID-vkCmdDispatchGraphAMDX-None-09600# If a descriptor with type
---     equal to any of
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM',
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM',
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',
---     or
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'
---     is accessed as a result of this command, the image subresource
---     identified by that descriptor /must/ be in the image layout
---     identified when the descriptor was written
---
--- -   #VUID-vkCmdDispatchGraphAMDX-commandBuffer-09181# @commandBuffer@
---     /must/ not be a protected command buffer
---
--- -   #VUID-vkCmdDispatchGraphAMDX-commandBuffer-09182# @commandBuffer@
---     /must/ be a primary command buffer
---
--- -   #VUID-vkCmdDispatchGraphAMDX-scratch-10192# @scratch@ /must/ be the
---     device address of an allocated memory range at least as large as
---     @scratchSize@
---
--- -   #VUID-vkCmdDispatchGraphAMDX-scratchSize-10193# @scratchSize@ /must/
---     be greater than or equal to
---     'ExecutionGraphPipelineScratchSizeAMDX'::@minSize@ returned by
---     'getExecutionGraphPipelineScratchSizeAMDX' for the bound execution
---     graph pipeline
---
--- -   #VUID-vkCmdDispatchGraphAMDX-scratch-09184# @scratch@ /must/ be a
---     device address within a 'Vulkan.Core10.Handles.Buffer' created with
---     the
---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_EXECUTION_GRAPH_SCRATCH_BIT_AMDX'
---     or
---     'Vulkan.Extensions.VK_KHR_maintenance5.BUFFER_USAGE_2_EXECUTION_GRAPH_SCRATCH_BIT_AMDX'
---     flag
---
--- -   #VUID-vkCmdDispatchGraphAMDX-scratch-10194# The device memory range
---     [@scratch@,@scratch@
---     @scratchSize@] /must/ have been initialized with
---     'cmdInitializeGraphScratchMemoryAMDX' using the bound execution
---     graph pipeline, and not modified after that by anything other than
---     another execution graph dispatch command
---
--- -   #VUID-vkCmdDispatchGraphAMDX-maxComputeWorkGroupCount-09186#
---     Execution of this command /must/ not cause a node to be dispatched
---     with a larger number of workgroups than that specified by either a
---     @MaxNumWorkgroupsAMDX@ decoration in the dispatched node or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxComputeWorkGroupCount maxComputeWorkGroupCount>
---
--- -   #VUID-vkCmdDispatchGraphAMDX-maxExecutionGraphShaderPayloadCount-09187#
---     Execution of this command /must/ not cause any shader to initialize
---     more than
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxExecutionGraphShaderPayloadCount maxExecutionGraphShaderPayloadCount>
---     output payloads
---
--- -   #VUID-vkCmdDispatchGraphAMDX-NodeMaxPayloadsAMDX-09188# Execution of
---     this command /must/ not cause any shader that declares
---     @NodeMaxPayloadsAMDX@ to initialize more output payloads than
---     specified by the max number of payloads for that decoration. This
---     requirement applies to each @NodeMaxPayloadsAMDX@ decoration
---     separately
---
--- -   #VUID-vkCmdDispatchGraphAMDX-None-10195# If the bound execution
---     graph pipeline includes draw nodes, this command /must/ be called
---     within a render pass instance that is compatible with the graphics
---     pipeline used to create each of those nodes
---
--- -   #VUID-vkCmdDispatchGraphAMDX-pCountInfo-09145# @pCountInfo->infos@
---     /must/ be a host pointer to a memory allocation at least as large as
---     the product of @count@ and @stride@
---
--- -   #VUID-vkCmdDispatchGraphAMDX-infos-09146# Host memory locations at
---     indexes in the range [@infos@, @infos@ + (@count@*@stride@)), at a
---     granularity of @stride@ /must/ contain valid 'DispatchGraphInfoAMDX'
---     structures in the first 24 bytes
---
--- -   #VUID-vkCmdDispatchGraphAMDX-pCountInfo-09147# For each
---     'DispatchGraphInfoAMDX' structure in @pCountInfo->infos@, @payloads@
---     /must/ be a host pointer to a memory allocation at least as large as
---     the product of @payloadCount@ and @payloadStride@
---
--- -   #VUID-vkCmdDispatchGraphAMDX-pCountInfo-09148# For each
---     'DispatchGraphInfoAMDX' structure in @pCountInfo->infos@,
---     @nodeIndex@ /must/ be a valid node index in the bound execution
---     graph pipeline, as returned by
---     'getExecutionGraphPipelineNodeIndexAMDX'
---
--- -   #VUID-vkCmdDispatchGraphAMDX-pCountInfo-09149# For each
---     'DispatchGraphInfoAMDX' structure in @pCountInfo->infos@, host
---     memory locations at indexes in the range [@payloads@, @payloads@ +
---     (@payloadCount@ * @payloadStride@)), at a granularity of
---     @payloadStride@ /must/ contain a payload matching the size of the
---     input payload expected by the node in @nodeIndex@ in the first bytes
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdDispatchGraphAMDX-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdDispatchGraphAMDX-pCountInfo-parameter# @pCountInfo@
---     /must/ be a valid pointer to a valid 'DispatchGraphCountInfoAMDX'
---     structure
---
--- -   #VUID-vkCmdDispatchGraphAMDX-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-vkCmdDispatchGraphAMDX-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics, or compute operations
---
--- -   #VUID-vkCmdDispatchGraphAMDX-videocoding# This command /must/ only
---     be called outside of a video coding scope
---
--- -   #VUID-vkCmdDispatchGraphAMDX-bufferlevel# @commandBuffer@ /must/ be
---     a primary 'Vulkan.Core10.Handles.CommandBuffer'
---
--- == Host Synchronization
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
--- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | Action                                                                                                                                 |
--- |                                                                                                                            |                                                                                                                        |                                                                                                                             | Compute                                                                                                               |                                                                                                                                        |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMDX_shader_enqueue VK_AMDX_shader_enqueue>,
--- 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.FundamentalTypes.DeviceAddress',
--- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
--- 'DispatchGraphCountInfoAMDX'
-cmdDispatchGraphAMDX :: forall io
-                      . (MonadIO io)
-                     => -- | @commandBuffer@ is the command buffer into which the command will be
-                        -- recorded.
-                        CommandBuffer
-                     -> -- | @scratch@ is the address of scratch memory to be used.
-                        ("scratch" ::: DeviceAddress)
-                     -> -- | @scratchSize@ is a range in bytes of scratch memory to be used.
-                        ("scratchSize" ::: DeviceSize)
-                     -> -- | @pCountInfo@ is a host pointer to a 'DispatchGraphCountInfoAMDX'
-                        -- structure defining the nodes which will be initially executed.
-                        DispatchGraphCountInfoAMDX
-                     -> io ()
-cmdDispatchGraphAMDX commandBuffer
-                       scratch
-                       scratchSize
-                       countInfo = liftIO . evalContT $ do
-  let vkCmdDispatchGraphAMDXPtr = pVkCmdDispatchGraphAMDX (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCmdDispatchGraphAMDXPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdDispatchGraphAMDX is null" Nothing Nothing
-  let vkCmdDispatchGraphAMDX' = mkVkCmdDispatchGraphAMDX vkCmdDispatchGraphAMDXPtr
-  pCountInfo <- ContT $ withCStruct (countInfo)
-  lift $ traceAroundEvent "vkCmdDispatchGraphAMDX" (vkCmdDispatchGraphAMDX'
-                                                      (commandBufferHandle (commandBuffer))
-                                                      (scratch)
-                                                      (scratchSize)
-                                                      pCountInfo)
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdDispatchGraphIndirectAMDX
-  :: FunPtr (Ptr CommandBuffer_T -> DeviceAddress -> DeviceSize -> Ptr DispatchGraphCountInfoAMDX -> IO ()) -> Ptr CommandBuffer_T -> DeviceAddress -> DeviceSize -> Ptr DispatchGraphCountInfoAMDX -> IO ()
-
--- | vkCmdDispatchGraphIndirectAMDX - Dispatch an execution graph with node
--- and payload parameters read on the device
---
--- = Description
---
--- When this command is executed, the nodes specified in @pCountInfo@ are
--- executed. Nodes executed as part of this command are not implicitly
--- synchronized in any way against each other once they are dispatched.
--- There are no rasterization order guarantees between separately
--- dispatched graphics nodes, though individual primitives within a single
--- dispatch do adhere to rasterization order. Draw calls executed before or
--- after the execution graph also execute relative to each graphics node
--- with respect to rasterization order.
---
--- For this command, all device\/host pointers in substructures are treated
--- as device pointers and read during device execution of this command. The
--- allocation and contents of these pointers only needs to be valid during
--- device execution. All of these addresses will be read in the
--- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COMPUTE_SHADER_BIT'
--- pipeline stage with the
--- 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_STORAGE_READ_BIT'
--- access flag.
---
--- Execution of this command /may/ modify any memory locations in the range
--- [@scratch@,@scratch@ + @scratchSize@). Accesses to this memory range are
--- performed in the
--- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COMPUTE_SHADER_BIT'
--- pipeline stage with the
--- 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_STORAGE_READ_BIT' and
--- 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_STORAGE_WRITE_BIT'
--- access flags.
---
--- This command
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#executiongraphs-meshnodes-statecapture captures command buffer state>
--- for mesh nodes similarly to draw commands.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdDispatchGraphIndirectAMDX-magFilter-04553# If a
---     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
---     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR',
---     @reductionMode@ equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
---     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-vkCmdDispatchGraphIndirectAMDX-magFilter-09598# If a
---     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
---     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR' and
---     @reductionMode@ equal to either
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
---     or
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
---     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_MINMAX_BIT'
---
--- -   #VUID-vkCmdDispatchGraphIndirectAMDX-mipmapMode-04770# If a
---     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
---     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR',
---     @reductionMode@ equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
---     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-vkCmdDispatchGraphIndirectAMDX-mipmapMode-09599# If a
---     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
---     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'
---     and @reductionMode@ equal to either
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
---     or
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
---     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_MINMAX_BIT'
---
--- -   #VUID-vkCmdDispatchGraphIndirectAMDX-unnormalizedCoordinates-09635#
---     If a 'Vulkan.Core10.Handles.Sampler' created with
---     @unnormalizedCoordinates@ equal to
---     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
---     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
---     the image view’s @levelCount@ and @layerCount@ /must/ be 1
---
--- -   #VUID-vkCmdDispatchGraphIndirectAMDX-unnormalizedCoordinates-09636#
---     If a 'Vulkan.Core10.Handles.Sampler' created with
---     @unnormalizedCoordinates@ equal to
---     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
---     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
---     the image view’s @viewType@ /must/ be
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D' or
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D'
---
--- -   #VUID-vkCmdDispatchGraphIndirectAMDX-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-vkCmdDispatchGraphIndirectAMDX-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-vkCmdDispatchGraphIndirectAMDX-None-07888# If a
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'
---     descriptor is accessed using atomic operations as a result of this
---     command, then the storage texel buffer’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-buffer-view-format-features format features>
---     /must/ contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT'
---
--- -   #VUID-vkCmdDispatchGraphIndirectAMDX-None-02692# If a
---     'Vulkan.Core10.Handles.ImageView' is sampled with
---     'Vulkan.Core10.Enums.Filter.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.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'
---
--- -   #VUID-vkCmdDispatchGraphIndirectAMDX-None-02693# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_filter_cubic VK_EXT_filter_cubic>
---     extension is not enabled and any 'Vulkan.Core10.Handles.ImageView'
---     is sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as a
---     result of this command, it /must/ not have a
---     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' of
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE', or
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY'
---
--- -   #VUID-vkCmdDispatchGraphIndirectAMDX-filterCubic-02694# Any
---     'Vulkan.Core10.Handles.ImageView' being sampled with
---     'Vulkan.Core10.Enums.Filter.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-vkCmdDispatchGraphIndirectAMDX-filterCubicMinmax-02695# Any
---     'Vulkan.Core10.Handles.ImageView' being sampled with
---     'Vulkan.Core10.Enums.Filter.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-vkCmdDispatchGraphIndirectAMDX-cubicRangeClamp-09212# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-cubicRangeClamp cubicRangeClamp>
---     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
---     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
---     a result of this command /must/ not have a
---     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
---     equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
---
--- -   #VUID-vkCmdDispatchGraphIndirectAMDX-reductionMode-09213# Any
---     'Vulkan.Core10.Handles.ImageView' being sampled with a
---     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
---     equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
---     as a result of this command /must/ sample with
---     'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT'
---
--- -   #VUID-vkCmdDispatchGraphIndirectAMDX-selectableCubicWeights-09214#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-selectableCubicWeights selectableCubicWeights>
---     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
---     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
---     a result of this command /must/ have
---     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.SamplerCubicWeightsCreateInfoQCOM'::@cubicWeights@
---     equal to
---     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM'
---
--- -   #VUID-vkCmdDispatchGraphIndirectAMDX-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-vkCmdDispatchGraphIndirectAMDX-OpTypeImage-07027# For any
---     'Vulkan.Core10.Handles.ImageView' being written as a storage image
---     where the image format field of the @OpTypeImage@ is @Unknown@, the
---     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_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdDispatchGraphIndirectAMDX-OpTypeImage-07028# For any
---     'Vulkan.Core10.Handles.ImageView' being read as a storage image
---     where the image format field of the @OpTypeImage@ is @Unknown@, the
---     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_STORAGE_READ_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdDispatchGraphIndirectAMDX-OpTypeImage-07029# For any
---     'Vulkan.Core10.Handles.BufferView' being written as a storage texel
---     buffer where the image format field of the @OpTypeImage@ is
---     @Unknown@, the view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
---     /must/ contain
---     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdDispatchGraphIndirectAMDX-OpTypeImage-07030# Any
---     'Vulkan.Core10.Handles.BufferView' being read as a storage texel
---     buffer where the image format field of the @OpTypeImage@ is
---     @Unknown@ then the view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
---     /must/ contain
---     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdDispatchGraphIndirectAMDX-None-08600# For each set /n/
---     that is statically used by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     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' or the
---     'Vulkan.Core10.Handles.DescriptorSetLayout' array used to create the
---     current 'Vulkan.Extensions.Handles.ShaderEXT' , as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
---
--- -   #VUID-vkCmdDispatchGraphIndirectAMDX-None-08601# For each push
---     constant that is statically used by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     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' or the
---     'Vulkan.Core10.Handles.DescriptorSetLayout' array used to create the
---     current 'Vulkan.Extensions.Handles.ShaderEXT' , as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
---
--- -   #VUID-vkCmdDispatchGraphIndirectAMDX-None-10068# For each array of
---     resources that is used by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     the indices used to access members of the array /must/ be less than
---     the descriptor count for the identified binding in the descriptor
---     sets used by this command
---
--- -   #VUID-vkCmdDispatchGraphIndirectAMDX-maintenance4-08602# 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
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     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' or the
---     'Vulkan.Core10.Handles.DescriptorSetLayout' and
---     'Vulkan.Core10.PipelineLayout.PushConstantRange' arrays used to
---     create the current 'Vulkan.Extensions.Handles.ShaderEXT' , as
---     described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
---
--- -   #VUID-vkCmdDispatchGraphIndirectAMDX-None-08114# Descriptors in each
---     bound descriptor set, specified via
---     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
---     be valid as described by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
---     if they are statically used by the 'Vulkan.Core10.Handles.Pipeline'
---     bound to the pipeline bind point used by this command and the bound
---     'Vulkan.Core10.Handles.Pipeline' was not created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdDispatchGraphIndirectAMDX-None-08115# If the descriptors
---     used by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline
---     bind point were specified via
---     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', the
---     bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
---     without
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdDispatchGraphIndirectAMDX-None-08116# Descriptors in
---     bound descriptor buffers, specified via
---     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
---     /must/ be valid if they are dynamically used by the
---     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
---     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
---     was created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdDispatchGraphIndirectAMDX-None-08604# Descriptors in
---     bound descriptor buffers, specified via
---     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
---     /must/ be valid if they are dynamically used by any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     to the pipeline bind point used by this command
---
--- -   #VUID-vkCmdDispatchGraphIndirectAMDX-None-08117# If the descriptors
---     used by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline
---     bind point were specified via
---     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
---     the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
---     with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdDispatchGraphIndirectAMDX-None-08119# If a descriptor is
---     dynamically used with a 'Vulkan.Core10.Handles.Pipeline' created
---     with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
---     the descriptor memory /must/ be resident
---
--- -   #VUID-vkCmdDispatchGraphIndirectAMDX-None-08605# If a descriptor is
---     dynamically used with a 'Vulkan.Extensions.Handles.ShaderEXT'
---     created with a 'Vulkan.Core10.Handles.DescriptorSetLayout' that was
---     created with
---     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
---     the descriptor memory /must/ be resident
---
--- -   #VUID-vkCmdDispatchGraphIndirectAMDX-None-08606# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject>
---     feature is not enabled, a valid pipeline /must/ be bound to the
---     pipeline bind point used by this command
---
--- -   #VUID-vkCmdDispatchGraphIndirectAMDX-None-08608# If a pipeline is
---     bound to the pipeline bind point used by this command, there /must/
---     not have been any calls to dynamic state setting commands for any
---     state specified statically in the 'Vulkan.Core10.Handles.Pipeline'
---     object bound to the pipeline bind point used by this command, since
---     that pipeline was bound
---
--- -   #VUID-vkCmdDispatchGraphIndirectAMDX-None-08609# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command or any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDispatchGraphIndirectAMDX-None-08610# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command or any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDispatchGraphIndirectAMDX-None-08611# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command or any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDispatchGraphIndirectAMDX-None-08607# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject>
---     feature is enabled, either a valid pipeline /must/ be bound to the
---     pipeline bind point used by this command, or a valid combination of
---     valid and 'Vulkan.Core10.APIConstants.NULL_HANDLE' shader objects
---     /must/ be bound to every supported shader stage corresponding to the
---     pipeline bind point used by this command
---
--- -   #VUID-vkCmdDispatchGraphIndirectAMDX-uniformBuffers-06935# If any
---     stage of the 'Vulkan.Core10.Handles.Pipeline' object bound to the
---     pipeline bind point used by this command accesses a uniform buffer,
---     and that stage was created without enabling either
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT'
---     or
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT'
---     for @uniformBuffers@, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, that stage /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-vkCmdDispatchGraphIndirectAMDX-None-08612# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, and any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDispatchGraphIndirectAMDX-storageBuffers-06936# If any
---     stage of the 'Vulkan.Core10.Handles.Pipeline' object bound to the
---     pipeline bind point used by this command accesses a storage buffer,
---     and that stage was created without enabling either
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT'
---     or
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT'
---     for @storageBuffers@, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, that stage /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-vkCmdDispatchGraphIndirectAMDX-None-08613# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, and any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDispatchGraphIndirectAMDX-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
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shaders>
---     /must/ not be a protected resource
---
--- -   #VUID-vkCmdDispatchGraphIndirectAMDX-None-06550# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
---     accesses a 'Vulkan.Core10.Handles.Sampler' or
---     'Vulkan.Core10.Handles.ImageView' object that enables
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,
---     that object /must/ only be used with @OpImageSample*@ or
---     @OpImageSparseSample*@ instructions
---
--- -   #VUID-vkCmdDispatchGraphIndirectAMDX-ConstOffset-06551# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
---     accesses a 'Vulkan.Core10.Handles.Sampler' or
---     'Vulkan.Core10.Handles.ImageView' object that enables
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,
---     that object /must/ not use the @ConstOffset@ and @Offset@ operands
---
--- -   #VUID-vkCmdDispatchGraphIndirectAMDX-viewType-07752# If a
---     'Vulkan.Core10.Handles.ImageView' is accessed as a result of this
---     command, then the image view’s @viewType@ /must/ match the @Dim@
---     operand of the @OpTypeImage@ as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-image-dimensions ???>
---
--- -   #VUID-vkCmdDispatchGraphIndirectAMDX-format-07753# If a
---     'Vulkan.Core10.Handles.ImageView' is accessed as a result of this
---     command, then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-numericformat numeric type>
---     of the image view’s @format@ and the @Sampled@ @Type@ operand of the
---     @OpTypeImage@ /must/ match
---
--- -   #VUID-vkCmdDispatchGraphIndirectAMDX-OpImageWrite-08795# If a
---     'Vulkan.Core10.Handles.ImageView' created with a format other than
---     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM_KHR' 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-vkCmdDispatchGraphIndirectAMDX-OpImageWrite-08796# If a
---     'Vulkan.Core10.Handles.ImageView' created with the format
---     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM_KHR' is accessed using
---     @OpImageWrite@ as a result of this command, then the @Type@ of the
---     @Texel@ operand of that instruction /must/ have four components
---
--- -   #VUID-vkCmdDispatchGraphIndirectAMDX-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-vkCmdDispatchGraphIndirectAMDX-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-vkCmdDispatchGraphIndirectAMDX-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-vkCmdDispatchGraphIndirectAMDX-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-vkCmdDispatchGraphIndirectAMDX-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-vkCmdDispatchGraphIndirectAMDX-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-vkCmdDispatchGraphIndirectAMDX-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-vkCmdDispatchGraphIndirectAMDX-OpImageWeightedSampleQCOM-06971#
---     If @OpImageWeightedSampleQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM'
---
--- -   #VUID-vkCmdDispatchGraphIndirectAMDX-OpImageWeightedSampleQCOM-06972#
---     If @OpImageWeightedSampleQCOM@ uses a
---     'Vulkan.Core10.Handles.ImageView' as a sample weight image 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM'
---
--- -   #VUID-vkCmdDispatchGraphIndirectAMDX-OpImageBoxFilterQCOM-06973# If
---     @OpImageBoxFilterQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM'
---
--- -   #VUID-vkCmdDispatchGraphIndirectAMDX-OpImageBlockMatchSSDQCOM-06974#
---     If @OpImageBlockMatchSSDQCOM@ is used to read from an
---     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
---
--- -   #VUID-vkCmdDispatchGraphIndirectAMDX-OpImageBlockMatchSADQCOM-06975#
---     If @OpImageBlockMatchSADQCOM@ is used to read from an
---     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
---
--- -   #VUID-vkCmdDispatchGraphIndirectAMDX-OpImageBlockMatchSADQCOM-06976#
---     If @OpImageBlockMatchSADQCOM@ or OpImageBlockMatchSSDQCOM is used to
---     read from a reference image as result of this command, then the
---     specified reference coordinates /must/ not fail
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
---
--- -   #VUID-vkCmdDispatchGraphIndirectAMDX-OpImageWeightedSampleQCOM-06977#
---     If @OpImageWeightedSampleQCOM@, @OpImageBoxFilterQCOM@,
---     @OpImageBlockMatchWindowSSDQCOM@, @OpImageBlockMatchWindowSADQCOM@,
---     @OpImageBlockMatchGatherSSDQCOM@, @OpImageBlockMatchGatherSADQCOM@,
---     @OpImageBlockMatchSSDQCOM@, or @OpImageBlockMatchSADQCOM@ uses a
---     'Vulkan.Core10.Handles.Sampler' as a result of this command, then
---     the sampler /must/ have been created with
---     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
---
--- -   #VUID-vkCmdDispatchGraphIndirectAMDX-OpImageWeightedSampleQCOM-06978#
---     If any command other than @OpImageWeightedSampleQCOM@,
---     @OpImageBoxFilterQCOM@, @OpImageBlockMatchWindowSSDQCOM@,
---     @OpImageBlockMatchWindowSADQCOM@, @OpImageBlockMatchGatherSSDQCOM@,
---     @OpImageBlockMatchGatherSADQCOM@, @OpImageBlockMatchSSDQCOM@, or
---     @OpImageBlockMatchSADQCOM@ uses a 'Vulkan.Core10.Handles.Sampler' as
---     a result of this command, then the sampler /must/ not have been
---     created with
---     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
---
--- -   #VUID-vkCmdDispatchGraphIndirectAMDX-OpImageBlockMatchWindow-09215#
---     If a @OpImageBlockMatchWindow*QCOM@ or
---     @OpImageBlockMatchGather*QCOM@ instruction is used to read from an
---     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
---
--- -   #VUID-vkCmdDispatchGraphIndirectAMDX-OpImageBlockMatchWindow-09216#
---     If a @OpImageBlockMatchWindow*QCOM@ or
---     @OpImageBlockMatchGather*QCOM@ instruction is used to read from an
---     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
---     the image view’s format /must/ be a single-component format
---
--- -   #VUID-vkCmdDispatchGraphIndirectAMDX-OpImageBlockMatchWindow-09217#
---     If a @OpImageBlockMatchWindow*QCOM@ or
---     @OpImageBlockMatchGather*QCOM@ read from a reference image as result
---     of this command, then the specified reference coordinates /must/ not
---     fail
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
---
--- -   #VUID-vkCmdDispatchGraphIndirectAMDX-None-07288# Any shader
---     invocation executed by this command /must/
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-termination terminate>
---
--- -   #VUID-vkCmdDispatchGraphIndirectAMDX-None-09600# If a descriptor
---     with type equal to any of
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM',
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM',
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',
---     or
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'
---     is accessed as a result of this command, the image subresource
---     identified by that descriptor /must/ be in the image layout
---     identified when the descriptor was written
---
--- -   #VUID-vkCmdDispatchGraphIndirectAMDX-commandBuffer-09181#
---     @commandBuffer@ /must/ not be a protected command buffer
---
--- -   #VUID-vkCmdDispatchGraphIndirectAMDX-commandBuffer-09182#
---     @commandBuffer@ /must/ be a primary command buffer
---
--- -   #VUID-vkCmdDispatchGraphIndirectAMDX-scratch-10192# @scratch@ /must/
---     be the device address of an allocated memory range at least as large
---     as @scratchSize@
---
--- -   #VUID-vkCmdDispatchGraphIndirectAMDX-scratchSize-10193#
---     @scratchSize@ /must/ be greater than or equal to
---     'ExecutionGraphPipelineScratchSizeAMDX'::@minSize@ returned by
---     'getExecutionGraphPipelineScratchSizeAMDX' for the bound execution
---     graph pipeline
---
--- -   #VUID-vkCmdDispatchGraphIndirectAMDX-scratch-09184# @scratch@ /must/
---     be a device address within a 'Vulkan.Core10.Handles.Buffer' created
---     with the
---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_EXECUTION_GRAPH_SCRATCH_BIT_AMDX'
---     or
---     'Vulkan.Extensions.VK_KHR_maintenance5.BUFFER_USAGE_2_EXECUTION_GRAPH_SCRATCH_BIT_AMDX'
---     flag
---
--- -   #VUID-vkCmdDispatchGraphIndirectAMDX-scratch-10194# The device
---     memory range [@scratch@,@scratch@
---     @scratchSize@] /must/ have been initialized with
---     'cmdInitializeGraphScratchMemoryAMDX' using the bound execution
---     graph pipeline, and not modified after that by anything other than
---     another execution graph dispatch command
---
--- -   #VUID-vkCmdDispatchGraphIndirectAMDX-maxComputeWorkGroupCount-09186#
---     Execution of this command /must/ not cause a node to be dispatched
---     with a larger number of workgroups than that specified by either a
---     @MaxNumWorkgroupsAMDX@ decoration in the dispatched node or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxComputeWorkGroupCount maxComputeWorkGroupCount>
---
--- -   #VUID-vkCmdDispatchGraphIndirectAMDX-maxExecutionGraphShaderPayloadCount-09187#
---     Execution of this command /must/ not cause any shader to initialize
---     more than
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxExecutionGraphShaderPayloadCount maxExecutionGraphShaderPayloadCount>
---     output payloads
---
--- -   #VUID-vkCmdDispatchGraphIndirectAMDX-NodeMaxPayloadsAMDX-09188#
---     Execution of this command /must/ not cause any shader that declares
---     @NodeMaxPayloadsAMDX@ to initialize more output payloads than
---     specified by the max number of payloads for that decoration. This
---     requirement applies to each @NodeMaxPayloadsAMDX@ decoration
---     separately
---
--- -   #VUID-vkCmdDispatchGraphIndirectAMDX-None-10195# If the bound
---     execution graph pipeline includes draw nodes, this command /must/ be
---     called within a render pass instance that is compatible with the
---     graphics pipeline used to create each of those nodes
---
--- -   #VUID-vkCmdDispatchGraphIndirectAMDX-pCountInfo-09150#
---     @pCountInfo->infos@ /must/ be a device pointer to a memory
---     allocation at least as large as the product of @count@ and @stride@
---     when this command is executed on the device
---
--- -   #VUID-vkCmdDispatchGraphIndirectAMDX-pCountInfo-09151#
---     @pCountInfo->infos@ /must/ be a device address within a
---     'Vulkan.Core10.Handles.Buffer' created with the
---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'
---     flag
---
--- -   #VUID-vkCmdDispatchGraphIndirectAMDX-pCountInfo-09152#
---     @pCountInfo->infos@ /must/ be a multiple of
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-executionGraphDispatchAddressAlignment executionGraphDispatchAddressAlignment>
---
--- -   #VUID-vkCmdDispatchGraphIndirectAMDX-infos-09153# Device memory
---     locations at indexes in the range [@infos@, @infos@ +
---     (@count@*@stride@)), at a granularity of @stride@ /must/ contain
---     valid 'DispatchGraphInfoAMDX' structures in the first 24 bytes when
---     this command is executed on the device
---
--- -   #VUID-vkCmdDispatchGraphIndirectAMDX-pCountInfo-09154# For each
---     'DispatchGraphInfoAMDX' structure in @pCountInfo->infos@, @payloads@
---     /must/ be a device pointer to a memory allocation at least as large
---     as the product of @payloadCount@ and @payloadStride@ when this
---     command is executed on the device
---
--- -   #VUID-vkCmdDispatchGraphIndirectAMDX-pCountInfo-09155# For each
---     'DispatchGraphInfoAMDX' structure in @pCountInfo->infos@, @payloads@
---     /must/ be a device address within a 'Vulkan.Core10.Handles.Buffer'
---     created with the
---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'
---     flag
---
--- -   #VUID-vkCmdDispatchGraphIndirectAMDX-pCountInfo-09156# For each
---     'DispatchGraphInfoAMDX' structure in @pCountInfo->infos@, @payloads@
---     /must/ be a multiple of
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-executionGraphDispatchAddressAlignment executionGraphDispatchAddressAlignment>
---
--- -   #VUID-vkCmdDispatchGraphIndirectAMDX-pCountInfo-09157# For each
---     'DispatchGraphInfoAMDX' structure in @pCountInfo->infos@,
---     @nodeIndex@ /must/ be a valid node index in the bound execution
---     graph pipeline, as returned by
---     'getExecutionGraphPipelineNodeIndexAMDX' when this command is
---     executed on the device
---
--- -   #VUID-vkCmdDispatchGraphIndirectAMDX-pCountInfo-09158# For each
---     'DispatchGraphInfoAMDX' structure in @pCountInfo->infos@, device
---     memory locations at indexes in the range [@payloads@, @payloads@ +
---     (@payloadCount@ * @payloadStride@)), at a granularity of
---     @payloadStride@ /must/ contain a payload matching the size of the
---     input payload expected by the node in @nodeIndex@ in the first bytes
---     when this command is executed on the device
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdDispatchGraphIndirectAMDX-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdDispatchGraphIndirectAMDX-pCountInfo-parameter#
---     @pCountInfo@ /must/ be a valid pointer to a valid
---     'DispatchGraphCountInfoAMDX' structure
---
--- -   #VUID-vkCmdDispatchGraphIndirectAMDX-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-vkCmdDispatchGraphIndirectAMDX-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics, or compute operations
---
--- -   #VUID-vkCmdDispatchGraphIndirectAMDX-videocoding# This command
---     /must/ only be called outside of a video coding scope
---
--- -   #VUID-vkCmdDispatchGraphIndirectAMDX-bufferlevel# @commandBuffer@
---     /must/ be a primary 'Vulkan.Core10.Handles.CommandBuffer'
---
--- == Host Synchronization
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
--- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | Action                                                                                                                                 |
--- |                                                                                                                            |                                                                                                                        |                                                                                                                             | Compute                                                                                                               |                                                                                                                                        |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMDX_shader_enqueue VK_AMDX_shader_enqueue>,
--- 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.FundamentalTypes.DeviceAddress',
--- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
--- 'DispatchGraphCountInfoAMDX'
-cmdDispatchGraphIndirectAMDX :: forall io
-                              . (MonadIO io)
-                             => -- | @commandBuffer@ is the command buffer into which the command will be
-                                -- recorded.
-                                CommandBuffer
-                             -> -- | @scratch@ is the address of scratch memory to be used.
-                                ("scratch" ::: DeviceAddress)
-                             -> -- | @scratchSize@ is a range in bytes of scratch memory to be used.
-                                ("scratchSize" ::: DeviceSize)
-                             -> -- | @pCountInfo@ is a host pointer to a 'DispatchGraphCountInfoAMDX'
-                                -- structure defining the nodes which will be initially executed.
-                                DispatchGraphCountInfoAMDX
-                             -> io ()
-cmdDispatchGraphIndirectAMDX commandBuffer
-                               scratch
-                               scratchSize
-                               countInfo = liftIO . evalContT $ do
-  let vkCmdDispatchGraphIndirectAMDXPtr = pVkCmdDispatchGraphIndirectAMDX (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCmdDispatchGraphIndirectAMDXPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdDispatchGraphIndirectAMDX is null" Nothing Nothing
-  let vkCmdDispatchGraphIndirectAMDX' = mkVkCmdDispatchGraphIndirectAMDX vkCmdDispatchGraphIndirectAMDXPtr
-  pCountInfo <- ContT $ withCStruct (countInfo)
-  lift $ traceAroundEvent "vkCmdDispatchGraphIndirectAMDX" (vkCmdDispatchGraphIndirectAMDX'
-                                                              (commandBufferHandle (commandBuffer))
-                                                              (scratch)
-                                                              (scratchSize)
-                                                              pCountInfo)
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdDispatchGraphIndirectCountAMDX
-  :: FunPtr (Ptr CommandBuffer_T -> DeviceAddress -> DeviceSize -> DeviceAddress -> IO ()) -> Ptr CommandBuffer_T -> DeviceAddress -> DeviceSize -> DeviceAddress -> IO ()
-
--- | vkCmdDispatchGraphIndirectCountAMDX - Dispatch an execution graph with
--- all parameters read on the device
---
--- = Description
---
--- When this command is executed, the nodes specified in @countInfo@ are
--- executed. Nodes executed as part of this command are not implicitly
--- synchronized in any way against each other once they are dispatched.
---
--- For this command, all pointers in substructures are treated as device
--- pointers and read during device execution of this command. The
--- allocation and contents of these pointers only needs to be valid during
--- device execution. All of these addresses will be read in the
--- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COMPUTE_SHADER_BIT'
--- pipeline stage with the
--- 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_STORAGE_READ_BIT'
--- access flag.
---
--- Execution of this command /may/ modify any memory locations in the range
--- [@scratch@,@scratch@ + @scratchSize@). Accesses to this memory range are
--- performed in the
--- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COMPUTE_SHADER_BIT'
--- pipeline stage with the
--- 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_STORAGE_READ_BIT' and
--- 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_STORAGE_WRITE_BIT'
--- access flags.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-magFilter-04553# If a
---     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
---     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR',
---     @reductionMode@ equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
---     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-vkCmdDispatchGraphIndirectCountAMDX-magFilter-09598# If a
---     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
---     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR' and
---     @reductionMode@ equal to either
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
---     or
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
---     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_MINMAX_BIT'
---
--- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-mipmapMode-04770# If a
---     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
---     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR',
---     @reductionMode@ equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
---     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-vkCmdDispatchGraphIndirectCountAMDX-mipmapMode-09599# If a
---     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
---     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'
---     and @reductionMode@ equal to either
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
---     or
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
---     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_MINMAX_BIT'
---
--- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-unnormalizedCoordinates-09635#
---     If a 'Vulkan.Core10.Handles.Sampler' created with
---     @unnormalizedCoordinates@ equal to
---     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
---     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
---     the image view’s @levelCount@ and @layerCount@ /must/ be 1
---
--- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-unnormalizedCoordinates-09636#
---     If a 'Vulkan.Core10.Handles.Sampler' created with
---     @unnormalizedCoordinates@ equal to
---     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
---     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
---     the image view’s @viewType@ /must/ be
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D' or
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D'
---
--- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-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-vkCmdDispatchGraphIndirectCountAMDX-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-vkCmdDispatchGraphIndirectCountAMDX-None-07888# If a
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'
---     descriptor is accessed using atomic operations as a result of this
---     command, then the storage texel buffer’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-buffer-view-format-features format features>
---     /must/ contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT'
---
--- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-None-02692# If a
---     'Vulkan.Core10.Handles.ImageView' is sampled with
---     'Vulkan.Core10.Enums.Filter.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.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'
---
--- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-None-02693# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_filter_cubic VK_EXT_filter_cubic>
---     extension is not enabled and any 'Vulkan.Core10.Handles.ImageView'
---     is sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as a
---     result of this command, it /must/ not have a
---     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' of
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE', or
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY'
---
--- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-filterCubic-02694# Any
---     'Vulkan.Core10.Handles.ImageView' being sampled with
---     'Vulkan.Core10.Enums.Filter.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-vkCmdDispatchGraphIndirectCountAMDX-filterCubicMinmax-02695#
---     Any 'Vulkan.Core10.Handles.ImageView' being sampled with
---     'Vulkan.Core10.Enums.Filter.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-vkCmdDispatchGraphIndirectCountAMDX-cubicRangeClamp-09212# If
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-cubicRangeClamp cubicRangeClamp>
---     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
---     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
---     a result of this command /must/ not have a
---     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
---     equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
---
--- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-reductionMode-09213# Any
---     'Vulkan.Core10.Handles.ImageView' being sampled with a
---     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
---     equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
---     as a result of this command /must/ sample with
---     'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT'
---
--- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-selectableCubicWeights-09214#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-selectableCubicWeights selectableCubicWeights>
---     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
---     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
---     a result of this command /must/ have
---     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.SamplerCubicWeightsCreateInfoQCOM'::@cubicWeights@
---     equal to
---     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM'
---
--- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-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-vkCmdDispatchGraphIndirectCountAMDX-OpTypeImage-07027# For any
---     'Vulkan.Core10.Handles.ImageView' being written as a storage image
---     where the image format field of the @OpTypeImage@ is @Unknown@, the
---     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_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-OpTypeImage-07028# For any
---     'Vulkan.Core10.Handles.ImageView' being read as a storage image
---     where the image format field of the @OpTypeImage@ is @Unknown@, the
---     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_STORAGE_READ_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-OpTypeImage-07029# For any
---     'Vulkan.Core10.Handles.BufferView' being written as a storage texel
---     buffer where the image format field of the @OpTypeImage@ is
---     @Unknown@, the view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
---     /must/ contain
---     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-OpTypeImage-07030# Any
---     'Vulkan.Core10.Handles.BufferView' being read as a storage texel
---     buffer where the image format field of the @OpTypeImage@ is
---     @Unknown@ then the view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
---     /must/ contain
---     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-None-08600# For each set
---     /n/ that is statically used by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     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' or the
---     'Vulkan.Core10.Handles.DescriptorSetLayout' array used to create the
---     current 'Vulkan.Extensions.Handles.ShaderEXT' , as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
---
--- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-None-08601# For each push
---     constant that is statically used by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     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' or the
---     'Vulkan.Core10.Handles.DescriptorSetLayout' array used to create the
---     current 'Vulkan.Extensions.Handles.ShaderEXT' , as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
---
--- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-None-10068# For each array
---     of resources that is used by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     the indices used to access members of the array /must/ be less than
---     the descriptor count for the identified binding in the descriptor
---     sets used by this command
---
--- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-maintenance4-08602# 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
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     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' or the
---     'Vulkan.Core10.Handles.DescriptorSetLayout' and
---     'Vulkan.Core10.PipelineLayout.PushConstantRange' arrays used to
---     create the current 'Vulkan.Extensions.Handles.ShaderEXT' , as
---     described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
---
--- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-None-08114# Descriptors in
---     each bound descriptor set, specified via
---     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
---     be valid as described by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
---     if they are statically used by the 'Vulkan.Core10.Handles.Pipeline'
---     bound to the pipeline bind point used by this command and the bound
---     'Vulkan.Core10.Handles.Pipeline' was not created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-None-08115# If the
---     descriptors used by the 'Vulkan.Core10.Handles.Pipeline' bound to
---     the pipeline bind point were specified via
---     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', the
---     bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
---     without
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-None-08116# Descriptors in
---     bound descriptor buffers, specified via
---     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
---     /must/ be valid if they are dynamically used by the
---     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
---     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
---     was created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-None-08604# Descriptors in
---     bound descriptor buffers, specified via
---     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
---     /must/ be valid if they are dynamically used by any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     to the pipeline bind point used by this command
---
--- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-None-08117# If the
---     descriptors used by the 'Vulkan.Core10.Handles.Pipeline' bound to
---     the pipeline bind point were specified via
---     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
---     the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
---     with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-None-08119# If a
---     descriptor is dynamically used with a
---     'Vulkan.Core10.Handles.Pipeline' created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
---     the descriptor memory /must/ be resident
---
--- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-None-08605# If a
---     descriptor is dynamically used with a
---     'Vulkan.Extensions.Handles.ShaderEXT' created with a
---     'Vulkan.Core10.Handles.DescriptorSetLayout' that was created with
---     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
---     the descriptor memory /must/ be resident
---
--- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-None-08606# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject>
---     feature is not enabled, a valid pipeline /must/ be bound to the
---     pipeline bind point used by this command
---
--- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-None-08608# If a pipeline
---     is bound to the pipeline bind point used by this command, there
---     /must/ not have been any calls to dynamic state setting commands for
---     any state specified statically in the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command, since that pipeline was bound
---
--- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-None-08609# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command or any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDispatchGraphIndirectCountAMDX-None-08610# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command or any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDispatchGraphIndirectCountAMDX-None-08611# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command or any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDispatchGraphIndirectCountAMDX-None-08607# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject>
---     feature is enabled, either a valid pipeline /must/ be bound to the
---     pipeline bind point used by this command, or a valid combination of
---     valid and 'Vulkan.Core10.APIConstants.NULL_HANDLE' shader objects
---     /must/ be bound to every supported shader stage corresponding to the
---     pipeline bind point used by this command
---
--- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-uniformBuffers-06935# If
---     any stage of the 'Vulkan.Core10.Handles.Pipeline' object bound to
---     the pipeline bind point used by this command accesses a uniform
---     buffer, and that stage was created without enabling either
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT'
---     or
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT'
---     for @uniformBuffers@, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, that stage /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-vkCmdDispatchGraphIndirectCountAMDX-None-08612# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, and any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDispatchGraphIndirectCountAMDX-storageBuffers-06936# If
---     any stage of the 'Vulkan.Core10.Handles.Pipeline' object bound to
---     the pipeline bind point used by this command accesses a storage
---     buffer, and that stage was created without enabling either
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT'
---     or
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT'
---     for @storageBuffers@, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, that stage /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-vkCmdDispatchGraphIndirectCountAMDX-None-08613# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, and any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDispatchGraphIndirectCountAMDX-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
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shaders>
---     /must/ not be a protected resource
---
--- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-None-06550# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
---     accesses a 'Vulkan.Core10.Handles.Sampler' or
---     'Vulkan.Core10.Handles.ImageView' object that enables
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,
---     that object /must/ only be used with @OpImageSample*@ or
---     @OpImageSparseSample*@ instructions
---
--- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-ConstOffset-06551# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
---     accesses a 'Vulkan.Core10.Handles.Sampler' or
---     'Vulkan.Core10.Handles.ImageView' object that enables
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,
---     that object /must/ not use the @ConstOffset@ and @Offset@ operands
---
--- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-viewType-07752# If a
---     'Vulkan.Core10.Handles.ImageView' is accessed as a result of this
---     command, then the image view’s @viewType@ /must/ match the @Dim@
---     operand of the @OpTypeImage@ as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-image-dimensions ???>
---
--- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-format-07753# If a
---     'Vulkan.Core10.Handles.ImageView' is accessed as a result of this
---     command, then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-numericformat numeric type>
---     of the image view’s @format@ and the @Sampled@ @Type@ operand of the
---     @OpTypeImage@ /must/ match
---
--- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-OpImageWrite-08795# If a
---     'Vulkan.Core10.Handles.ImageView' created with a format other than
---     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM_KHR' 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-vkCmdDispatchGraphIndirectCountAMDX-OpImageWrite-08796# If a
---     'Vulkan.Core10.Handles.ImageView' created with the format
---     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM_KHR' is accessed using
---     @OpImageWrite@ as a result of this command, then the @Type@ of the
---     @Texel@ operand of that instruction /must/ have four components
---
--- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-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-vkCmdDispatchGraphIndirectCountAMDX-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-vkCmdDispatchGraphIndirectCountAMDX-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-vkCmdDispatchGraphIndirectCountAMDX-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-vkCmdDispatchGraphIndirectCountAMDX-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-vkCmdDispatchGraphIndirectCountAMDX-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-vkCmdDispatchGraphIndirectCountAMDX-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-vkCmdDispatchGraphIndirectCountAMDX-OpImageWeightedSampleQCOM-06971#
---     If @OpImageWeightedSampleQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM'
---
--- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-OpImageWeightedSampleQCOM-06972#
---     If @OpImageWeightedSampleQCOM@ uses a
---     'Vulkan.Core10.Handles.ImageView' as a sample weight image 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM'
---
--- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-OpImageBoxFilterQCOM-06973#
---     If @OpImageBoxFilterQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM'
---
--- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-OpImageBlockMatchSSDQCOM-06974#
---     If @OpImageBlockMatchSSDQCOM@ is used to read from an
---     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
---
--- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-OpImageBlockMatchSADQCOM-06975#
---     If @OpImageBlockMatchSADQCOM@ is used to read from an
---     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
---
--- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-OpImageBlockMatchSADQCOM-06976#
---     If @OpImageBlockMatchSADQCOM@ or OpImageBlockMatchSSDQCOM is used to
---     read from a reference image as result of this command, then the
---     specified reference coordinates /must/ not fail
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
---
--- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-OpImageWeightedSampleQCOM-06977#
---     If @OpImageWeightedSampleQCOM@, @OpImageBoxFilterQCOM@,
---     @OpImageBlockMatchWindowSSDQCOM@, @OpImageBlockMatchWindowSADQCOM@,
---     @OpImageBlockMatchGatherSSDQCOM@, @OpImageBlockMatchGatherSADQCOM@,
---     @OpImageBlockMatchSSDQCOM@, or @OpImageBlockMatchSADQCOM@ uses a
---     'Vulkan.Core10.Handles.Sampler' as a result of this command, then
---     the sampler /must/ have been created with
---     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
---
--- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-OpImageWeightedSampleQCOM-06978#
---     If any command other than @OpImageWeightedSampleQCOM@,
---     @OpImageBoxFilterQCOM@, @OpImageBlockMatchWindowSSDQCOM@,
---     @OpImageBlockMatchWindowSADQCOM@, @OpImageBlockMatchGatherSSDQCOM@,
---     @OpImageBlockMatchGatherSADQCOM@, @OpImageBlockMatchSSDQCOM@, or
---     @OpImageBlockMatchSADQCOM@ uses a 'Vulkan.Core10.Handles.Sampler' as
---     a result of this command, then the sampler /must/ not have been
---     created with
---     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
---
--- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-OpImageBlockMatchWindow-09215#
---     If a @OpImageBlockMatchWindow*QCOM@ or
---     @OpImageBlockMatchGather*QCOM@ instruction is used to read from an
---     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
---
--- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-OpImageBlockMatchWindow-09216#
---     If a @OpImageBlockMatchWindow*QCOM@ or
---     @OpImageBlockMatchGather*QCOM@ instruction is used to read from an
---     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
---     the image view’s format /must/ be a single-component format
---
--- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-OpImageBlockMatchWindow-09217#
---     If a @OpImageBlockMatchWindow*QCOM@ or
---     @OpImageBlockMatchGather*QCOM@ read from a reference image as result
---     of this command, then the specified reference coordinates /must/ not
---     fail
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
---
--- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-None-07288# Any shader
---     invocation executed by this command /must/
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-termination terminate>
---
--- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-None-09600# If a
---     descriptor with type equal to any of
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM',
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM',
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',
---     or
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'
---     is accessed as a result of this command, the image subresource
---     identified by that descriptor /must/ be in the image layout
---     identified when the descriptor was written
---
--- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-commandBuffer-09181#
---     @commandBuffer@ /must/ not be a protected command buffer
---
--- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-commandBuffer-09182#
---     @commandBuffer@ /must/ be a primary command buffer
---
--- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-scratch-10192# @scratch@
---     /must/ be the device address of an allocated memory range at least
---     as large as @scratchSize@
---
--- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-scratchSize-10193#
---     @scratchSize@ /must/ be greater than or equal to
---     'ExecutionGraphPipelineScratchSizeAMDX'::@minSize@ returned by
---     'getExecutionGraphPipelineScratchSizeAMDX' for the bound execution
---     graph pipeline
---
--- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-scratch-09184# @scratch@
---     /must/ be a device address within a 'Vulkan.Core10.Handles.Buffer'
---     created with the
---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_EXECUTION_GRAPH_SCRATCH_BIT_AMDX'
---     or
---     'Vulkan.Extensions.VK_KHR_maintenance5.BUFFER_USAGE_2_EXECUTION_GRAPH_SCRATCH_BIT_AMDX'
---     flag
---
--- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-scratch-10194# The device
---     memory range [@scratch@,@scratch@
---     @scratchSize@] /must/ have been initialized with
---     'cmdInitializeGraphScratchMemoryAMDX' using the bound execution
---     graph pipeline, and not modified after that by anything other than
---     another execution graph dispatch command
---
--- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-maxComputeWorkGroupCount-09186#
---     Execution of this command /must/ not cause a node to be dispatched
---     with a larger number of workgroups than that specified by either a
---     @MaxNumWorkgroupsAMDX@ decoration in the dispatched node or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxComputeWorkGroupCount maxComputeWorkGroupCount>
---
--- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-maxExecutionGraphShaderPayloadCount-09187#
---     Execution of this command /must/ not cause any shader to initialize
---     more than
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxExecutionGraphShaderPayloadCount maxExecutionGraphShaderPayloadCount>
---     output payloads
---
--- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-NodeMaxPayloadsAMDX-09188#
---     Execution of this command /must/ not cause any shader that declares
---     @NodeMaxPayloadsAMDX@ to initialize more output payloads than
---     specified by the max number of payloads for that decoration. This
---     requirement applies to each @NodeMaxPayloadsAMDX@ decoration
---     separately
---
--- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-None-10195# If the bound
---     execution graph pipeline includes draw nodes, this command /must/ be
---     called within a render pass instance that is compatible with the
---     graphics pipeline used to create each of those nodes
---
--- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-countInfo-09159#
---     @countInfo@ /must/ be a device pointer to a memory allocation
---     containing a valid 'DispatchGraphCountInfoAMDX' structure when this
---     command is executed on the device
---
--- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-countInfo-09160#
---     @countInfo@ /must/ be a device address within a
---     'Vulkan.Core10.Handles.Buffer' created with the
---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'
---     flag
---
--- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-countInfo-09161#
---     @countInfo@ /must/ be a multiple of
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-executionGraphDispatchAddressAlignment executionGraphDispatchAddressAlignment>
---
--- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-countInfo-09162#
---     @countInfo->infos@ /must/ be a device pointer to a memory allocation
---     at least as large as the product of @count@ and @stride@ when this
---     command is executed on the device
---
--- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-countInfo-09163#
---     @countInfo->infos@ /must/ be a device address within a
---     'Vulkan.Core10.Handles.Buffer' created with the
---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'
---     flag
---
--- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-countInfo-09164#
---     @countInfo->infos@ /must/ be a multiple of
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-executionGraphDispatchAddressAlignment executionGraphDispatchAddressAlignment>
---
--- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-infos-09165# Device memory
---     locations at indexes in the range [@infos@, @infos@ +
---     (@count@*@stride@)), at a granularity of @stride@ /must/ contain
---     valid 'DispatchGraphInfoAMDX' structures in the first 24 bytes when
---     this command is executed on the device
---
--- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-countInfo-09166# For each
---     'DispatchGraphInfoAMDX' structure in @countInfo->infos@, @payloads@
---     /must/ be a device pointer to a memory allocation at least as large
---     as the product of @payloadCount@ and @payloadStride@ when this
---     command is executed on the device
---
--- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-countInfo-09167# For each
---     'DispatchGraphInfoAMDX' structure in @countInfo->infos@, @payloads@
---     /must/ be a device address within a 'Vulkan.Core10.Handles.Buffer'
---     created with the
---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'
---     flag
---
--- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-countInfo-09168# For each
---     'DispatchGraphInfoAMDX' structure in @countInfo->infos@, @payloads@
---     /must/ be a multiple of
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-executionGraphDispatchAddressAlignment executionGraphDispatchAddressAlignment>
---
--- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-countInfo-09169# For each
---     'DispatchGraphInfoAMDX' structure in @countInfo->infos@, @nodeIndex@
---     /must/ be a valid node index in the bound execution graph pipeline,
---     as returned by 'getExecutionGraphPipelineNodeIndexAMDX' when this
---     command is executed on the device
---
--- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-countInfo-09170# For each
---     'DispatchGraphInfoAMDX' structure in @countInfo->infos@, device
---     memory locations at indexes in the range [@payloads@, @payloads@ +
---     (@payloadCount@ * @payloadStride@)), at a granularity of
---     @payloadStride@ /must/ contain a payload matching the size of the
---     input payload expected by the node in @nodeIndex@ in the first bytes
---     when this command is executed on the device
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-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-vkCmdDispatchGraphIndirectCountAMDX-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics, or compute operations
---
--- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-videocoding# This command
---     /must/ only be called outside of a video coding scope
---
--- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-bufferlevel#
---     @commandBuffer@ /must/ be a primary
---     'Vulkan.Core10.Handles.CommandBuffer'
---
--- == Host Synchronization
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
--- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | Action                                                                                                                                 |
--- |                                                                                                                            |                                                                                                                        |                                                                                                                             | Compute                                                                                                               |                                                                                                                                        |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMDX_shader_enqueue VK_AMDX_shader_enqueue>,
--- 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.FundamentalTypes.DeviceAddress',
--- 'Vulkan.Core10.FundamentalTypes.DeviceSize'
-cmdDispatchGraphIndirectCountAMDX :: forall io
-                                   . (MonadIO io)
-                                  => -- | @commandBuffer@ is the command buffer into which the command will be
-                                     -- recorded.
-                                     CommandBuffer
-                                  -> -- | @scratch@ is the address of scratch memory to be used.
-                                     ("scratch" ::: DeviceAddress)
-                                  -> -- | @scratchSize@ is a range in bytes of scratch memory to be used.
-                                     ("scratchSize" ::: DeviceSize)
-                                  -> -- | @countInfo@ is a device address of a 'DispatchGraphCountInfoAMDX'
-                                     -- structure defining the nodes which will be initially executed.
-                                     ("countInfo" ::: DeviceAddress)
-                                  -> io ()
-cmdDispatchGraphIndirectCountAMDX commandBuffer
-                                    scratch
-                                    scratchSize
-                                    countInfo = liftIO $ do
-  let vkCmdDispatchGraphIndirectCountAMDXPtr = pVkCmdDispatchGraphIndirectCountAMDX (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  unless (vkCmdDispatchGraphIndirectCountAMDXPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdDispatchGraphIndirectCountAMDX is null" Nothing Nothing
-  let vkCmdDispatchGraphIndirectCountAMDX' = mkVkCmdDispatchGraphIndirectCountAMDX vkCmdDispatchGraphIndirectCountAMDXPtr
-  traceAroundEvent "vkCmdDispatchGraphIndirectCountAMDX" (vkCmdDispatchGraphIndirectCountAMDX'
-                                                            (commandBufferHandle (commandBuffer))
-                                                            (scratch)
-                                                            (scratchSize)
-                                                            (countInfo))
-  pure $ ()
-
-
--- | VkPhysicalDeviceShaderEnqueuePropertiesAMDX - Structure describing
--- shader enqueue limits of an implementation
---
--- = Members
---
--- The members of the 'PhysicalDeviceShaderEnqueuePropertiesAMDX' structure
--- describe the following limits:
---
--- = Description
---
--- If the 'PhysicalDeviceShaderEnqueuePropertiesAMDX' 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_AMDX_shader_enqueue VK_AMDX_shader_enqueue>,
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PhysicalDeviceShaderEnqueuePropertiesAMDX = PhysicalDeviceShaderEnqueuePropertiesAMDX
-  { -- | #limits-maxExecutionGraphDepth# @maxExecutionGraphDepth@ defines the
-    -- maximum node chain depth in the graph. The dispatched node is at depth 1
-    -- and the node enqueued by it is at depth 2, and so on. If a node enqueues
-    -- itself, each recursive enqueue increases the depth by 1 as well.
-    maxExecutionGraphDepth :: Word32
-  , -- | #limits-maxExecutionGraphShaderOutputNodes#
-    -- @maxExecutionGraphShaderOutputNodes@ specifies the maximum number of
-    -- unique nodes that can be dispatched from a single shader, and /must/ be
-    -- at least 256.
-    maxExecutionGraphShaderOutputNodes :: Word32
-  , -- | #limits-maxExecutionGraphShaderPayloadSize#
-    -- @maxExecutionGraphShaderPayloadSize@ specifies the maximum total size of
-    -- payload declarations in a shader. For any payload declarations that
-    -- share resources, indicated by @NodeSharesPayloadLimitsWithAMDX@
-    -- decorations, the maximum size of each set of shared payload declarations
-    -- is taken. The sum of each shared set’s maximum size and the size of each
-    -- unshared payload is counted against this limit.
-    maxExecutionGraphShaderPayloadSize :: Word32
-  , -- | #limits-maxExecutionGraphShaderPayloadCount#
-    -- @maxExecutionGraphShaderPayloadCount@ specifies the maximum number of
-    -- output payloads that can be initialized in a single workgroup.
-    maxExecutionGraphShaderPayloadCount :: Word32
-  , -- | #limits-executionGraphDispatchAddressAlignment#
-    -- @executionGraphDispatchAddressAlignment@ specifies the alignment of
-    -- non-scratch 'Vulkan.Core10.FundamentalTypes.DeviceAddress' arguments
-    -- consumed by graph dispatch commands.
-    executionGraphDispatchAddressAlignment :: Word32
-  , -- | #limits-maxExecutionGraphWorkgroupCount#
-    -- @maxExecutionGraphWorkgroupCount@[3] is the maximum number of local
-    -- workgroups that a shader /can/ be dispatched with in X, Y, and Z
-    -- dimensions, respectively.
-    maxExecutionGraphWorkgroupCount :: (Word32, Word32, Word32)
-  , -- | #limits-maxExecutionGraphWorkgroups# @maxExecutionGraphWorkgroups@ is
-    -- the total number of local workgroups that a shader /can/ be dispatched
-    -- with.
-    maxExecutionGraphWorkgroups :: Word32
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PhysicalDeviceShaderEnqueuePropertiesAMDX)
-#endif
-deriving instance Show PhysicalDeviceShaderEnqueuePropertiesAMDX
-
-instance ToCStruct PhysicalDeviceShaderEnqueuePropertiesAMDX where
-  withCStruct x f = allocaBytes 56 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PhysicalDeviceShaderEnqueuePropertiesAMDX{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ENQUEUE_PROPERTIES_AMDX)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Word32)) (maxExecutionGraphDepth)
-    poke ((p `plusPtr` 20 :: Ptr Word32)) (maxExecutionGraphShaderOutputNodes)
-    poke ((p `plusPtr` 24 :: Ptr Word32)) (maxExecutionGraphShaderPayloadSize)
-    poke ((p `plusPtr` 28 :: Ptr Word32)) (maxExecutionGraphShaderPayloadCount)
-    poke ((p `plusPtr` 32 :: Ptr Word32)) (executionGraphDispatchAddressAlignment)
-    let pMaxExecutionGraphWorkgroupCount' = lowerArrayPtr ((p `plusPtr` 36 :: Ptr (FixedArray 3 Word32)))
-    case (maxExecutionGraphWorkgroupCount) of
-      (e0, e1, e2) -> do
-        poke (pMaxExecutionGraphWorkgroupCount' :: Ptr Word32) (e0)
-        poke (pMaxExecutionGraphWorkgroupCount' `plusPtr` 4 :: Ptr Word32) (e1)
-        poke (pMaxExecutionGraphWorkgroupCount' `plusPtr` 8 :: Ptr Word32) (e2)
-    poke ((p `plusPtr` 48 :: Ptr Word32)) (maxExecutionGraphWorkgroups)
-    f
-  cStructSize = 56
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ENQUEUE_PROPERTIES_AMDX)
-    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)
-    let pMaxExecutionGraphWorkgroupCount' = lowerArrayPtr ((p `plusPtr` 36 :: Ptr (FixedArray 3 Word32)))
-    case ((zero, zero, zero)) of
-      (e0, e1, e2) -> do
-        poke (pMaxExecutionGraphWorkgroupCount' :: Ptr Word32) (e0)
-        poke (pMaxExecutionGraphWorkgroupCount' `plusPtr` 4 :: Ptr Word32) (e1)
-        poke (pMaxExecutionGraphWorkgroupCount' `plusPtr` 8 :: Ptr Word32) (e2)
-    poke ((p `plusPtr` 48 :: Ptr Word32)) (zero)
-    f
-
-instance FromCStruct PhysicalDeviceShaderEnqueuePropertiesAMDX where
-  peekCStruct p = do
-    maxExecutionGraphDepth <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
-    maxExecutionGraphShaderOutputNodes <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
-    maxExecutionGraphShaderPayloadSize <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))
-    maxExecutionGraphShaderPayloadCount <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))
-    executionGraphDispatchAddressAlignment <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))
-    let pmaxExecutionGraphWorkgroupCount = lowerArrayPtr @Word32 ((p `plusPtr` 36 :: Ptr (FixedArray 3 Word32)))
-    maxExecutionGraphWorkgroupCount0 <- peek @Word32 ((pmaxExecutionGraphWorkgroupCount `advancePtrBytes` 0 :: Ptr Word32))
-    maxExecutionGraphWorkgroupCount1 <- peek @Word32 ((pmaxExecutionGraphWorkgroupCount `advancePtrBytes` 4 :: Ptr Word32))
-    maxExecutionGraphWorkgroupCount2 <- peek @Word32 ((pmaxExecutionGraphWorkgroupCount `advancePtrBytes` 8 :: Ptr Word32))
-    maxExecutionGraphWorkgroups <- peek @Word32 ((p `plusPtr` 48 :: Ptr Word32))
-    pure $ PhysicalDeviceShaderEnqueuePropertiesAMDX
-             maxExecutionGraphDepth
-             maxExecutionGraphShaderOutputNodes
-             maxExecutionGraphShaderPayloadSize
-             maxExecutionGraphShaderPayloadCount
-             executionGraphDispatchAddressAlignment
-             (( maxExecutionGraphWorkgroupCount0
-              , maxExecutionGraphWorkgroupCount1
-              , maxExecutionGraphWorkgroupCount2 ))
-             maxExecutionGraphWorkgroups
-
-instance Storable PhysicalDeviceShaderEnqueuePropertiesAMDX where
-  sizeOf ~_ = 56
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero PhysicalDeviceShaderEnqueuePropertiesAMDX where
-  zero = PhysicalDeviceShaderEnqueuePropertiesAMDX
-           zero
-           zero
-           zero
-           zero
-           zero
-           (zero, zero, zero)
-           zero
-
-
--- | VkPhysicalDeviceShaderEnqueueFeaturesAMDX - Structure describing whether
--- shader enqueue within execution graphs are supported by the
--- implementation
---
--- = Members
---
--- This structure describes the following feature:
---
--- = Description
---
--- If the 'PhysicalDeviceShaderEnqueueFeaturesAMDX' 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. 'PhysicalDeviceShaderEnqueueFeaturesAMDX' /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_AMDX_shader_enqueue VK_AMDX_shader_enqueue>,
--- 'Vulkan.Core10.FundamentalTypes.Bool32',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PhysicalDeviceShaderEnqueueFeaturesAMDX = PhysicalDeviceShaderEnqueueFeaturesAMDX
-  { -- | #features-shaderEnqueue# @shaderEnqueue@ indicates whether the
-    -- implementation supports
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#executiongraphs execution graphs>.
-    shaderEnqueue :: Bool
-  , -- | #features-shaderMeshEnqueue# @shaderMeshEnqueue@ indicates whether the
-    -- implementation supports
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#executiongraphs-meshnodes mesh nodes in execution graphs>.
-    shaderMeshEnqueue :: Bool
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PhysicalDeviceShaderEnqueueFeaturesAMDX)
-#endif
-deriving instance Show PhysicalDeviceShaderEnqueueFeaturesAMDX
-
-instance ToCStruct PhysicalDeviceShaderEnqueueFeaturesAMDX where
-  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PhysicalDeviceShaderEnqueueFeaturesAMDX{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ENQUEUE_FEATURES_AMDX)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (shaderEnqueue))
-    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (shaderMeshEnqueue))
-    f
-  cStructSize = 24
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ENQUEUE_FEATURES_AMDX)
-    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 PhysicalDeviceShaderEnqueueFeaturesAMDX where
-  peekCStruct p = do
-    shaderEnqueue <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
-    shaderMeshEnqueue <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
-    pure $ PhysicalDeviceShaderEnqueueFeaturesAMDX
-             (bool32ToBool shaderEnqueue) (bool32ToBool shaderMeshEnqueue)
-
-instance Storable PhysicalDeviceShaderEnqueueFeaturesAMDX where
-  sizeOf ~_ = 24
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero PhysicalDeviceShaderEnqueueFeaturesAMDX where
-  zero = PhysicalDeviceShaderEnqueueFeaturesAMDX
-           zero
-           zero
-
-
--- | VkExecutionGraphPipelineCreateInfoAMDX - Structure specifying parameters
--- of a newly created execution graph pipeline
---
--- = Description
---
--- The parameters @basePipelineHandle@ and @basePipelineIndex@ are
--- described in more detail in
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-pipeline-derivatives Pipeline Derivatives>.
---
--- Each shader stage provided when creating an execution graph pipeline
--- (including those in libraries) is associated with a name and an index,
--- determined by the inclusion or omission of a
--- 'PipelineShaderStageNodeCreateInfoAMDX' structure in its @pNext@ chain.
--- For any graphics pipeline libraries, only the name and index of the
--- vertex or mesh shader stage is linked directly to the graph as a node -
--- other shader stages in the pipeline will be executed after those shader
--- stages as normal. Task shaders cannot be included in a graphics pipeline
--- used for a draw node.
---
--- In addition to the shader name and index, an internal \"node index\" is
--- also generated for each node, which can be queried with
--- 'getExecutionGraphPipelineNodeIndexAMDX', and is used exclusively for
--- initial dispatch of an execution graph.
---
--- == Valid Usage
---
--- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-None-09497# If the
---     @pNext@ chain does not include a
---     'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlags2CreateInfoKHR'
---     structure, @flags@ /must/ be a valid combination of
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits'
---     values
---
--- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-flags-07984# If @flags@
---     contains the
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'
---     flag, and @basePipelineIndex@ is -1, @basePipelineHandle@ /must/ be
---     a valid execution graph 'Vulkan.Core10.Handles.Pipeline' handle
---
--- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-flags-07985# If @flags@
---     contains the
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'
---     flag, and @basePipelineHandle@ is
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', @basePipelineIndex@ /must/
---     be a valid index into the calling command’s @pCreateInfos@ parameter
---
--- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-flags-07986# If @flags@
---     contains the
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'
---     flag, @basePipelineIndex@ /must/ be -1 or @basePipelineHandle@
---     /must/ be 'Vulkan.Core10.APIConstants.NULL_HANDLE'
---
--- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-layout-07987# If a push
---     constant block is declared in a shader, a push constant range in
---     @layout@ /must/ match the shader stage
---
--- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-layout-10069# If a push
---     constant block is declared in a shader, the block must be contained
---     inside the push constant range in @layout@ that matches the stage
---
--- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-layout-07988# If a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-resources resource variables>
---     is declared in a shader, a descriptor slot in @layout@ /must/ match
---     the shader stage
---
--- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-layout-07990# If a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-resources resource variables>
---     is declared in a shader, and the descriptor type is not
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_MUTABLE_EXT', a
---     descriptor slot in @layout@ /must/ match the descriptor type
---
--- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-layout-07991# If a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-resources resource variables>
---     is declared in a shader as an array, a descriptor slot in @layout@
---     /must/ match the descriptor count
---
--- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-flags-03365# @flags@
---     /must/ not include
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR'
---
--- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-flags-03366# @flags@
---     /must/ not include
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR'
---
--- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-flags-03367# @flags@
---     /must/ not include
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR'
---
--- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-flags-03368# @flags@
---     /must/ not include
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR'
---
--- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-flags-03369# @flags@
---     /must/ not include
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR'
---
--- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-flags-03370# @flags@
---     /must/ not include
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR'
---
--- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-flags-03576# @flags@
---     /must/ not include
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR'
---
--- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-flags-04945# @flags@
---     /must/ not include
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV'
---
--- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-flags-09007# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-deviceGeneratedComputePipelines ::deviceGeneratedComputePipelines>
---     feature is not enabled, @flags@ /must/ not include
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV'
---
--- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-flags-09008# If @flags@
---     includes
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV',
---     then the @pNext@ chain /must/ include a pointer to a valid instance
---     of
---     'Vulkan.Extensions.VK_NV_device_generated_commands_compute.ComputePipelineIndirectBufferInfoNV'
---     specifying the address where the pipeline’s metadata will be saved
---
--- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-flags-11007# If @flags@
---     includes
---     'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXT',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-deviceGeneratedCommands ::deviceGeneratedCommands>
---     feature /must/ be enabled
---
--- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-pipelineCreationCacheControl-02875#
---     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'
---     or
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT'
---
--- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-stage-09128# The
---     @stage@ member of any element of @pStages@ /must/ be
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT'
---
--- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-pStages-09129# The
---     shader code for the entry point identified by each element of
---     @pStages@ and the rest of the state identified by this structure
---     /must/ adhere to the pipeline linking rules described in the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces Shader Interfaces>
---     chapter
---
--- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-layout-09130# @layout@
---     /must/ be
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-pipelinelayout-consistency consistent>
---     with the layout of the shaders specified in @pStages@
---
--- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-pLibraryInfo-09131# If
---     @pLibraryInfo@ is not @NULL@, each element of its @pLibraries@
---     member /must/ have been created with a @layout@ that is compatible
---     with the @layout@ in this pipeline
---
--- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-layout-09132# The
---     number of resources in @layout@ accessible to each shader stage that
---     is used by the pipeline /must/ be less than or equal to
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxPerStageResources@
---
--- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-pLibraryInfo-09133# If
---     @pLibraryInfo@ is not @NULL@, each element of
---     @pLibraryInfo->pLibraries@ /must/ be either a compute pipeline, an
---     execution graph pipeline, or a graphics pipeline
---
--- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-pLibraryInfo-10181# If
---     @pLibraryInfo@ is not @NULL@, each element of
---     @pLibraryInfo->pLibraries@ that is a compute pipeline or a graphics
---     pipeline /must/ have been created with
---     'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_EXECUTION_GRAPH_BIT_AMDX'
---     set
---
--- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-shaderMeshEnqueue-10182#
---     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-shaderMeshEnqueue shaderMeshEnqueue>
---     feature is not enabled, and @pLibraryInfo->pLibraries@ is not
---     @NULL@, @pLibraryInfo->pLibraries@ /must/ not contain any graphics
---     pipelines
---
--- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-pLibraryInfo-10183# Any
---     element of @pLibraryInfo->pLibraries@ identifying a graphics
---     pipeline /must/ have been created with
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-complete all possible state subsets>
---
--- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-None-09134# There
---     /must/ be no two nodes in the pipeline that share both the same
---     shader name and index, as specified by
---     'PipelineShaderStageNodeCreateInfoAMDX'
---
--- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-None-09135# There
---     /must/ be no two nodes in the pipeline that share the same shader
---     name and have input payload declarations with different sizes
---
--- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-None-09136# There
---     /must/ be no two nodes in the pipeline that share the same name but
---     have different execution models
---
--- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-CoalescedInputCountAMDX-09137#
---     There /must/ be no two nodes in the pipeline that share the same
---     name where one includes @CoalescedInputCountAMDX@ and the other does
---     not
---
--- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-StaticNumWorkgroupsAMDX-09138#
---     There /must/ be no two nodes in the pipeline that share the same
---     name where one includes @StaticNumWorkgroupsAMDX@ and the other does
---     not
---
--- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-PayloadNodeNameAMDX-09139#
---     If an output payload declared in any shader in the pipeline has a
---     @PayloadNodeNameAMDX@ decoration with a @Node@ @Name@ that matches
---     the shader name of any other node in the graph, the size of the
---     output payload /must/ match the size of the input payload in the
---     matching node
---
--- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-flags-10184# If @flags@
---     does not include
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR',
---     and an output payload declared in any shader in the pipeline does
---     not have a @PayloadNodeSparseArrayAMDX@ decoration, there /must/ be
---     a node in the graph corresponding to every index from 0 to its
---     @PayloadNodeArraySizeAMDX@ decoration
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-sType-sType# @sType@
---     /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_EXECUTION_GRAPH_PIPELINE_CREATE_INFO_AMDX'
---
--- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-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_AMD_pipeline_compiler_control.PipelineCompilerControlCreateInfoAMD'
---     or
---     'Vulkan.Core13.Promoted_From_VK_EXT_pipeline_creation_feedback.PipelineCreationFeedbackCreateInfo'
---
--- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-sType-unique# The
---     @sType@ value of each struct in the @pNext@ chain /must/ be unique
---
--- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-pStages-parameter# If
---     @stageCount@ is not @0@, and @pStages@ is not @NULL@, @pStages@
---     /must/ be a valid pointer to an array of @stageCount@ valid
---     'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo' structures
---
--- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-pLibraryInfo-parameter#
---     If @pLibraryInfo@ is not @NULL@, @pLibraryInfo@ /must/ be a valid
---     pointer to a valid
---     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'
---     structure
---
--- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-layout-parameter#
---     @layout@ /must/ be a valid 'Vulkan.Core10.Handles.PipelineLayout'
---     handle
---
--- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-commonparent# Both of
---     @basePipelineHandle@, and @layout@ 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_AMDX_shader_enqueue VK_AMDX_shader_enqueue>,
--- 'Vulkan.Core10.Handles.Pipeline',
--- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlags',
--- 'Vulkan.Core10.Handles.PipelineLayout',
--- 'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR',
--- 'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo',
--- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'createExecutionGraphPipelinesAMDX'
-data ExecutionGraphPipelineCreateInfoAMDX (es :: [Type]) = ExecutionGraphPipelineCreateInfoAMDX
-  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
-    next :: Chain es
-  , -- | @flags@ is a bitmask of
-    -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits'
-    -- specifying how the pipeline will be generated.
-    flags :: PipelineCreateFlags
-  , -- | @stageCount@ is the number of entries in the @pStages@ array.
-    stageCount :: Word32
-  , -- | @pStages@ is a pointer to an array of @stageCount@
-    -- 'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo' structures
-    -- describing the set of the shader stages to be included in the execution
-    -- graph pipeline.
-    stages :: Vector (SomeStruct PipelineShaderStageCreateInfo)
-  , -- | @pLibraryInfo@ is a pointer to a
-    -- 'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'
-    -- structure defining pipeline libraries to include.
-    libraryInfo :: Maybe PipelineLibraryCreateInfoKHR
-  , -- | @layout@ is the description of binding locations used by both the
-    -- pipeline and descriptor sets used with the pipeline.
-    layout :: PipelineLayout
-  , -- | @basePipelineHandle@ is a pipeline to derive from
-    basePipelineHandle :: Pipeline
-  , -- | @basePipelineIndex@ is an index into the @pCreateInfos@ parameter to use
-    -- as a pipeline to derive from
-    basePipelineIndex :: Int32
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (ExecutionGraphPipelineCreateInfoAMDX (es :: [Type]))
-#endif
-deriving instance Show (Chain es) => Show (ExecutionGraphPipelineCreateInfoAMDX es)
-
-instance Extensible ExecutionGraphPipelineCreateInfoAMDX where
-  extensibleTypeName = "ExecutionGraphPipelineCreateInfoAMDX"
-  setNext ExecutionGraphPipelineCreateInfoAMDX{..} next' = ExecutionGraphPipelineCreateInfoAMDX{next = next', ..}
-  getNext ExecutionGraphPipelineCreateInfoAMDX{..} = next
-  extends :: forall e b proxy. Typeable e => proxy e -> (Extends ExecutionGraphPipelineCreateInfoAMDX e => b) -> Maybe b
-  extends _ f
-    | Just Refl <- eqT @e @PipelineCompilerControlCreateInfoAMD = Just f
-    | Just Refl <- eqT @e @PipelineCreationFeedbackCreateInfo = Just f
-    | otherwise = Nothing
-
-instance ( Extendss ExecutionGraphPipelineCreateInfoAMDX es
-         , PokeChain es ) => ToCStruct (ExecutionGraphPipelineCreateInfoAMDX es) where
-  withCStruct x f = allocaBytes 64 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p ExecutionGraphPipelineCreateInfoAMDX{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_EXECUTION_GRAPH_PIPELINE_CREATE_INFO_AMDX)
-    pNext'' <- fmap castPtr . ContT $ withChain (next)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
-    lift $ poke ((p `plusPtr` 16 :: Ptr PipelineCreateFlags)) (flags)
-    let pStagesLength = Data.Vector.length $ (stages)
-    stageCount'' <- lift $ if (stageCount) == 0
-      then pure $ fromIntegral pStagesLength
-      else do
-        unless (fromIntegral pStagesLength == (stageCount) || pStagesLength == 0) $
-          throwIO $ IOError Nothing InvalidArgument "" "pStages must be empty or have 'stageCount' elements" Nothing Nothing
-        pure (stageCount)
-    lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) (stageCount'')
-    pStages'' <- if Data.Vector.null (stages)
-      then pure nullPtr
-      else do
-        pPStages <- ContT $ allocaBytes @(PipelineShaderStageCreateInfo _) (((Data.Vector.length (stages))) * 48)
-        Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPStages `plusPtr` (48 * (i)) :: Ptr (PipelineShaderStageCreateInfo _))) (e) . ($ ())) ((stages))
-        pure $ pPStages
-    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr (PipelineShaderStageCreateInfo _)))) pStages''
-    pLibraryInfo'' <- case (libraryInfo) of
-      Nothing -> pure nullPtr
-      Just j -> ContT $ withCStruct (j)
-    lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr PipelineLibraryCreateInfoKHR))) pLibraryInfo''
-    lift $ poke ((p `plusPtr` 40 :: Ptr PipelineLayout)) (layout)
-    lift $ poke ((p `plusPtr` 48 :: Ptr Pipeline)) (basePipelineHandle)
-    lift $ poke ((p `plusPtr` 56 :: Ptr Int32)) (basePipelineIndex)
-    lift $ f
-  cStructSize = 64
-  cStructAlignment = 8
-  pokeZeroCStruct p f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_EXECUTION_GRAPH_PIPELINE_CREATE_INFO_AMDX)
-    pNext' <- fmap castPtr . ContT $ withZeroChain @es
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
-    lift $ poke ((p `plusPtr` 40 :: Ptr PipelineLayout)) (zero)
-    lift $ poke ((p `plusPtr` 56 :: Ptr Int32)) (zero)
-    lift $ f
-
-instance ( Extendss ExecutionGraphPipelineCreateInfoAMDX es
-         , PeekChain es ) => FromCStruct (ExecutionGraphPipelineCreateInfoAMDX es) where
-  peekCStruct p = do
-    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
-    next <- peekChain (castPtr pNext)
-    flags <- peek @PipelineCreateFlags ((p `plusPtr` 16 :: Ptr PipelineCreateFlags))
-    stageCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
-    pStages <- peek @(Ptr (PipelineShaderStageCreateInfo _)) ((p `plusPtr` 24 :: Ptr (Ptr (PipelineShaderStageCreateInfo _))))
-    let pStagesLength = if pStages == nullPtr then 0 else (fromIntegral stageCount)
-    pStages' <- generateM pStagesLength (\i -> peekSomeCStruct (forgetExtensions ((pStages `advancePtrBytes` (48 * (i)) :: Ptr (PipelineShaderStageCreateInfo _)))))
-    pLibraryInfo <- peek @(Ptr PipelineLibraryCreateInfoKHR) ((p `plusPtr` 32 :: Ptr (Ptr PipelineLibraryCreateInfoKHR)))
-    pLibraryInfo' <- maybePeek (\j -> peekCStruct @PipelineLibraryCreateInfoKHR (j)) pLibraryInfo
-    layout <- peek @PipelineLayout ((p `plusPtr` 40 :: Ptr PipelineLayout))
-    basePipelineHandle <- peek @Pipeline ((p `plusPtr` 48 :: Ptr Pipeline))
-    basePipelineIndex <- peek @Int32 ((p `plusPtr` 56 :: Ptr Int32))
-    pure $ ExecutionGraphPipelineCreateInfoAMDX
-             next
-             flags
-             stageCount
-             pStages'
-             pLibraryInfo'
-             layout
-             basePipelineHandle
-             basePipelineIndex
-
-instance es ~ '[] => Zero (ExecutionGraphPipelineCreateInfoAMDX es) where
-  zero = ExecutionGraphPipelineCreateInfoAMDX
-           ()
-           zero
-           zero
-           mempty
-           Nothing
-           zero
-           zero
-           zero
-
-
--- | VkPipelineShaderStageNodeCreateInfoAMDX - Structure specifying the
--- shader name and index with an execution graph
---
--- = Description
---
--- When included in the @pNext@ chain of a
--- 'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo' structure, this
--- structure specifies the shader name and shader index of a node when
--- creating an execution graph pipeline. If this structure is omitted, the
--- shader name is set to the name of the entry point in SPIR-V and the
--- shader index is set to @0@.
---
--- When dispatching a node from another shader, the name is fixed at
--- pipeline creation, but the index /can/ be set dynamically. By
--- associating multiple shaders with the same name but different indexes,
--- applications can dynamically select different nodes to execute.
--- Applications /must/ ensure each node has a unique name and index.
---
--- Shaders with the same name /must/ be of the same type - e.g. a compute
--- and graphics shader, or even two compute shaders where one is coalescing
--- and the other is not, cannot share the same name.
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkPipelineShaderStageNodeCreateInfoAMDX-sType-sType# @sType@
---     /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_NODE_CREATE_INFO_AMDX'
---
--- -   #VUID-VkPipelineShaderStageNodeCreateInfoAMDX-pName-parameter# If
---     @pName@ is not @NULL@, @pName@ /must/ be a null-terminated UTF-8
---     string
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMDX_shader_enqueue VK_AMDX_shader_enqueue>,
--- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'getExecutionGraphPipelineNodeIndexAMDX'
-data PipelineShaderStageNodeCreateInfoAMDX = PipelineShaderStageNodeCreateInfoAMDX
-  { -- | @pName@ is the shader name to use when creating a node in an execution
-    -- graph. If @pName@ is @NULL@, the name of the entry point specified in
-    -- SPIR-V is used as the shader name.
-    name :: Maybe ByteString
-  , -- | @index@ is the shader index to use when creating a node in an execution
-    -- graph. If @index@ is
-    -- 'Vulkan.Core10.APIConstants.SHADER_INDEX_UNUSED_AMDX' then the original
-    -- index is used, either as specified by the @ShaderIndexAMDX@ execution
-    -- mode, or @0@ if that too is not specified.
-    index :: Word32
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PipelineShaderStageNodeCreateInfoAMDX)
-#endif
-deriving instance Show PipelineShaderStageNodeCreateInfoAMDX
-
-instance ToCStruct PipelineShaderStageNodeCreateInfoAMDX where
-  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PipelineShaderStageNodeCreateInfoAMDX{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_NODE_CREATE_INFO_AMDX)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    pName'' <- case (name) of
-      Nothing -> pure nullPtr
-      Just j -> ContT $ useAsCString (j)
-    lift $ poke ((p `plusPtr` 16 :: Ptr (Ptr CChar))) pName''
-    lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) (index)
-    lift $ f
-  cStructSize = 32
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_NODE_CREATE_INFO_AMDX)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)
-    f
-
-instance FromCStruct PipelineShaderStageNodeCreateInfoAMDX where
-  peekCStruct p = do
-    pName <- peek @(Ptr CChar) ((p `plusPtr` 16 :: Ptr (Ptr CChar)))
-    pName' <- maybePeek (\j -> packCString (j)) pName
-    index <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))
-    pure $ PipelineShaderStageNodeCreateInfoAMDX
-             pName' index
-
-instance Zero PipelineShaderStageNodeCreateInfoAMDX where
-  zero = PipelineShaderStageNodeCreateInfoAMDX
-           Nothing
-           zero
-
-
--- | VkExecutionGraphPipelineScratchSizeAMDX - Structure describing the
--- scratch space required to dispatch an execution graph
---
--- = Description
---
--- Applications /can/ use any amount of scratch memory greater than
--- @minSize@ for dispatching a graph, however only the values equal to
--- @minSize@ + an integer multiple of @sizeGranularity@ will be used.
--- Greater values /may/ result in higher performance, up to @maxSize@ which
--- indicates the most memory that an implementation can use effectively.
---
--- == Valid Usage (Implicit)
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMDX_shader_enqueue VK_AMDX_shader_enqueue>,
--- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
--- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'getExecutionGraphPipelineScratchSizeAMDX'
-data ExecutionGraphPipelineScratchSizeAMDX = ExecutionGraphPipelineScratchSizeAMDX
-  { -- | @minSize@ indicates the minimum scratch space required for dispatching
-    -- the queried execution graph.
-    minSize :: DeviceSize
-  , -- | @maxSize@ indicates the maximum scratch space that can be used for
-    -- dispatching the queried execution graph.
-    maxSize :: DeviceSize
-  , -- | @sizeGranularity@ indicates the granularity at which the scratch space
-    -- can be increased from @minSize@.
-    sizeGranularity :: DeviceSize
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (ExecutionGraphPipelineScratchSizeAMDX)
-#endif
-deriving instance Show ExecutionGraphPipelineScratchSizeAMDX
-
-instance ToCStruct ExecutionGraphPipelineScratchSizeAMDX where
-  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p ExecutionGraphPipelineScratchSizeAMDX{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_EXECUTION_GRAPH_PIPELINE_SCRATCH_SIZE_AMDX)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (minSize)
-    poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (maxSize)
-    poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (sizeGranularity)
-    f
-  cStructSize = 40
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_EXECUTION_GRAPH_PIPELINE_SCRATCH_SIZE_AMDX)
-    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 ExecutionGraphPipelineScratchSizeAMDX where
-  peekCStruct p = do
-    minSize <- peek @DeviceSize ((p `plusPtr` 16 :: Ptr DeviceSize))
-    maxSize <- peek @DeviceSize ((p `plusPtr` 24 :: Ptr DeviceSize))
-    sizeGranularity <- peek @DeviceSize ((p `plusPtr` 32 :: Ptr DeviceSize))
-    pure $ ExecutionGraphPipelineScratchSizeAMDX
-             minSize maxSize sizeGranularity
-
-instance Storable ExecutionGraphPipelineScratchSizeAMDX where
-  sizeOf ~_ = 40
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero ExecutionGraphPipelineScratchSizeAMDX where
-  zero = ExecutionGraphPipelineScratchSizeAMDX
-           zero
-           zero
-           zero
-
-
--- | VkDispatchGraphInfoAMDX - Structure specifying node parameters for
--- execution graph dispatch
---
--- = Description
---
--- Whether @payloads@ is consumed as a device or host pointer is defined by
--- the command this structure is used in.
---
--- == Valid Usage
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMDX_shader_enqueue VK_AMDX_shader_enqueue>,
--- 'DeviceOrHostAddressConstAMDX', 'DispatchGraphCountInfoAMDX'
-data DispatchGraphInfoAMDX = DispatchGraphInfoAMDX
-  { -- | @nodeIndex@ is the index of a node in an execution graph to be
-    -- dispatched.
-    nodeIndex :: Word32
-  , -- | @payloadCount@ is the number of payloads to dispatch for the specified
-    -- node.
-    --
-    -- #VUID-VkDispatchGraphInfoAMDX-payloadCount-09171# @payloadCount@ /must/
-    -- be no greater than
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxExecutionGraphShaderPayloadCount maxExecutionGraphShaderPayloadCount>
+--     -   Interacts with VK_VERSION_1_4
+--
+--     -   Interacts with VK_EXT_mesh_shader
+--
+--     -   Interacts with VK_KHR_maintenance5
+--
+-- [__Contact__]
+--
+--     -   Tobias Hector
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_AMDX_shader_enqueue] @tobski%0A*Here describe the issue or question you have about the VK_AMDX_shader_enqueue extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_AMDX_shader_enqueue.adoc VK_AMDX_shader_enqueue>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2024-07-17
+--
+-- [__Provisional__]
+--     __This extension is /provisional/ and /should/ not be used in
+--     production applications. The functionality /may/ change in ways that
+--     break backwards compatibility between revisions, and before final
+--     release.__
+--
+-- [__Contributors__]
+--
+--     -   Tobias Hector, AMD
+--
+--     -   Matthaeus Chajdas, AMD
+--
+--     -   Maciej Jesionowski, AMD
+--
+--     -   Robert Martin, AMD
+--
+--     -   Qun Lin, AMD
+--
+--     -   Rex Xu, AMD
+--
+--     -   Dominik Witczak, AMD
+--
+--     -   Karthik Srinivasan, AMD
+--
+--     -   Nicolai Haehnle, AMD
+--
+--     -   Stuart Smith, AMD
+--
+-- == Description
+--
+-- This extension adds the ability for developers to enqueue mesh and
+-- compute shader workgroups from other compute shaders.
+--
+-- == New Commands
+--
+-- -   'cmdDispatchGraphAMDX'
+--
+-- -   'cmdDispatchGraphIndirectAMDX'
+--
+-- -   'cmdDispatchGraphIndirectCountAMDX'
+--
+-- -   'cmdInitializeGraphScratchMemoryAMDX'
+--
+-- -   'createExecutionGraphPipelinesAMDX'
+--
+-- -   'getExecutionGraphPipelineNodeIndexAMDX'
+--
+-- -   'getExecutionGraphPipelineScratchSizeAMDX'
+--
+-- == New Structures
+--
+-- -   'DispatchGraphCountInfoAMDX'
+--
+-- -   'DispatchGraphInfoAMDX'
+--
+-- -   'ExecutionGraphPipelineCreateInfoAMDX'
+--
+-- -   'ExecutionGraphPipelineScratchSizeAMDX'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceShaderEnqueueFeaturesAMDX'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDeviceShaderEnqueuePropertiesAMDX'
+--
+-- -   Extending
+--     'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo':
+--
+--     -   'PipelineShaderStageNodeCreateInfoAMDX'
+--
+-- == New Unions
+--
+-- -   'DeviceOrHostAddressConstAMDX'
+--
+-- == New Enum Constants
+--
+-- -   'AMDX_SHADER_ENQUEUE_EXTENSION_NAME'
+--
+-- -   'AMDX_SHADER_ENQUEUE_SPEC_VERSION'
+--
+-- -   'Vulkan.Core10.APIConstants.SHADER_INDEX_UNUSED_AMDX'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BufferUsageFlagBits':
+--
+--     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_EXECUTION_GRAPH_SCRATCH_BIT_AMDX'
+--
+-- -   Extending 'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint':
+--
+--     -   'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_EXECUTION_GRAPH_AMDX'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_EXECUTION_GRAPH_PIPELINE_CREATE_INFO_AMDX'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_EXECUTION_GRAPH_PIPELINE_SCRATCH_SIZE_AMDX'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ENQUEUE_FEATURES_AMDX'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ENQUEUE_PROPERTIES_AMDX'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_NODE_CREATE_INFO_AMDX'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance5 VK_KHR_maintenance5>
+-- or
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.4 Vulkan Version 1.4>
+-- is supported:
+--
+-- -   Extending
+--     'Vulkan.Core14.Enums.BufferUsageFlags2.BufferUsageFlagBits2':
+--
+--     -   'Vulkan.Core14.Enums.BufferUsageFlags2.BUFFER_USAGE_2_EXECUTION_GRAPH_SCRATCH_BIT_AMDX'
+--
+-- -   Extending
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PipelineCreateFlagBits2':
+--
+--     -   'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_EXECUTION_GRAPH_BIT_AMDX'
+--
+-- == Version History
+--
+-- -   Revision 2, 2024-07-17 (Tobias Hector)
+--
+--     -   Add mesh nodes
+--
+-- -   Revision 1, 2021-07-22 (Tobias Hector)
+--
+--     -   Initial revision
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_AMDX_shader_enqueue Vulkan Specification>.
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_AMDX_shader_enqueue  ( getExecutionGraphPipelineScratchSizeAMDX
+                                                 , getExecutionGraphPipelineNodeIndexAMDX
+                                                 , createExecutionGraphPipelinesAMDX
+                                                 , cmdInitializeGraphScratchMemoryAMDX
+                                                 , cmdDispatchGraphAMDX
+                                                 , cmdDispatchGraphIndirectAMDX
+                                                 , cmdDispatchGraphIndirectCountAMDX
+                                                 , PhysicalDeviceShaderEnqueuePropertiesAMDX(..)
+                                                 , PhysicalDeviceShaderEnqueueFeaturesAMDX(..)
+                                                 , ExecutionGraphPipelineCreateInfoAMDX(..)
+                                                 , PipelineShaderStageNodeCreateInfoAMDX(..)
+                                                 , ExecutionGraphPipelineScratchSizeAMDX(..)
+                                                 , DispatchGraphInfoAMDX(..)
+                                                 , DispatchGraphCountInfoAMDX(..)
+                                                 , DeviceOrHostAddressConstAMDX(..)
+                                                 , AMDX_SHADER_ENQUEUE_SPEC_VERSION
+                                                 , pattern AMDX_SHADER_ENQUEUE_SPEC_VERSION
+                                                 , AMDX_SHADER_ENQUEUE_EXTENSION_NAME
+                                                 , pattern AMDX_SHADER_ENQUEUE_EXTENSION_NAME
+                                                 , PipelineLibraryCreateInfoKHR(..)
+                                                 , SHADER_INDEX_UNUSED_AMDX
+                                                 , pattern SHADER_INDEX_UNUSED_AMDX
+                                                 ) 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 Data.Typeable (eqT)
+import Foreign.Marshal.Alloc (allocaBytes)
+import Foreign.Marshal.Alloc (callocBytes)
+import Foreign.Marshal.Alloc (free)
+import Foreign.Marshal.Utils (maybePeek)
+import GHC.Base (when)
+import GHC.IO (throwIO)
+import GHC.Ptr (castPtr)
+import GHC.Ptr (nullFunPtr)
+import Foreign.Ptr (nullPtr)
+import Foreign.Ptr (plusPtr)
+import Data.ByteString (packCString)
+import Data.ByteString (useAsCString)
+import Control.Monad.Trans.Class (lift)
+import Control.Monad.Trans.Cont (evalContT)
+import Control.Monad.Trans.Cont (runContT)
+import Data.Vector (generateM)
+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.Type.Equality ((:~:)(Refl))
+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 Data.Int (Int32)
+import Foreign.Ptr (FunPtr)
+import Foreign.Ptr (Ptr)
+import Data.Word (Word32)
+import Data.Word (Word64)
+import Data.ByteString (ByteString)
+import Data.Kind (Type)
+import Control.Monad.Trans.Cont (ContT(..))
+import 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.Utils (lowerArrayPtr)
+import Vulkan.CStruct.Extends (peekSomeCStruct)
+import Vulkan.CStruct.Extends (pokeSomeCStruct)
+import Vulkan.NamedType ((:::))
+import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)
+import Vulkan.Core10.FundamentalTypes (Bool32)
+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.Handles (Device)
+import Vulkan.Core10.Handles (Device(..))
+import Vulkan.Core10.Handles (Device(Device))
+import Vulkan.Core10.FundamentalTypes (DeviceAddress)
+import Vulkan.Dynamic (DeviceCmds(pVkCmdDispatchGraphAMDX))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdDispatchGraphIndirectAMDX))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdDispatchGraphIndirectCountAMDX))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdInitializeGraphScratchMemoryAMDX))
+import Vulkan.Dynamic (DeviceCmds(pVkCreateExecutionGraphPipelinesAMDX))
+import Vulkan.Dynamic (DeviceCmds(pVkGetExecutionGraphPipelineNodeIndexAMDX))
+import Vulkan.Dynamic (DeviceCmds(pVkGetExecutionGraphPipelineScratchSizeAMDX))
+import Vulkan.Core10.FundamentalTypes (DeviceSize)
+import Vulkan.Core10.Handles (Device_T)
+import Vulkan.CStruct.Extends (Extends)
+import Vulkan.CStruct.Extends (Extendss)
+import Vulkan.CStruct.Extends (Extensible(..))
+import Vulkan.CStruct.Extends (PeekChain)
+import Vulkan.CStruct.Extends (PeekChain(..))
+import Vulkan.Core10.Handles (Pipeline)
+import Vulkan.Core10.Handles (Pipeline(..))
+import Vulkan.Core10.Handles (PipelineCache)
+import Vulkan.Core10.Handles (PipelineCache(..))
+import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_pipeline_compiler_control (PipelineCompilerControlCreateInfoAMD)
+import Vulkan.Core10.Enums.PipelineCreateFlagBits (PipelineCreateFlags)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_pipeline_creation_feedback (PipelineCreationFeedbackCreateInfo)
+import Vulkan.Core10.Handles (PipelineLayout)
+import Vulkan.Extensions.VK_KHR_pipeline_library (PipelineLibraryCreateInfoKHR)
+import Vulkan.Core10.ComputePipeline (PipelineShaderStageCreateInfo)
+import Vulkan.CStruct.Extends (PokeChain)
+import Vulkan.CStruct.Extends (PokeChain(..))
+import Vulkan.Core10.Enums.Result (Result)
+import Vulkan.Core10.Enums.Result (Result(..))
+import Vulkan.CStruct.Extends (SomeStruct)
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Exception (VulkanException(..))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_EXECUTION_GRAPH_PIPELINE_CREATE_INFO_AMDX))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_EXECUTION_GRAPH_PIPELINE_SCRATCH_SIZE_AMDX))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ENQUEUE_FEATURES_AMDX))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ENQUEUE_PROPERTIES_AMDX))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_NODE_CREATE_INFO_AMDX))
+import Vulkan.Core10.Enums.Result (Result(SUCCESS))
+import Vulkan.Extensions.VK_KHR_pipeline_library (PipelineLibraryCreateInfoKHR(..))
+import Vulkan.Core10.APIConstants (SHADER_INDEX_UNUSED_AMDX)
+import Vulkan.Core10.APIConstants (pattern SHADER_INDEX_UNUSED_AMDX)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetExecutionGraphPipelineScratchSizeAMDX
+  :: FunPtr (Ptr Device_T -> Pipeline -> Ptr ExecutionGraphPipelineScratchSizeAMDX -> IO Result) -> Ptr Device_T -> Pipeline -> Ptr ExecutionGraphPipelineScratchSizeAMDX -> IO Result
+
+-- | vkGetExecutionGraphPipelineScratchSizeAMDX - Query scratch space
+-- required to dispatch an execution graph
+--
+-- = Description
+--
+-- After this function returns, information about the scratch space
+-- required will be returned in @pSizeInfo@.
+--
+-- == 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_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMDX_shader_enqueue VK_AMDX_shader_enqueue>,
+-- 'Vulkan.Core10.Handles.Device', 'ExecutionGraphPipelineScratchSizeAMDX',
+-- 'Vulkan.Core10.Handles.Pipeline'
+getExecutionGraphPipelineScratchSizeAMDX :: forall io
+                                          . (MonadIO io)
+                                         => -- | @device@ is the logical device that @executionGraph@ was created on.
+                                            --
+                                            -- #VUID-vkGetExecutionGraphPipelineScratchSizeAMDX-device-parameter#
+                                            -- @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+                                            Device
+                                         -> -- | @executionGraph@ is the execution graph pipeline to query the scratch
+                                            -- space for.
+                                            --
+                                            -- #VUID-vkGetExecutionGraphPipelineScratchSizeAMDX-executionGraph-parameter#
+                                            -- @executionGraph@ /must/ be a valid 'Vulkan.Core10.Handles.Pipeline'
+                                            -- handle
+                                            --
+                                            -- #VUID-vkGetExecutionGraphPipelineScratchSizeAMDX-executionGraph-parent#
+                                            -- @executionGraph@ /must/ have been created, allocated, or retrieved from
+                                            -- @device@
+                                            ("executionGraph" ::: Pipeline)
+                                         -> io (("sizeInfo" ::: ExecutionGraphPipelineScratchSizeAMDX))
+getExecutionGraphPipelineScratchSizeAMDX device
+                                           executionGraph = liftIO . evalContT $ do
+  let vkGetExecutionGraphPipelineScratchSizeAMDXPtr = pVkGetExecutionGraphPipelineScratchSizeAMDX (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkGetExecutionGraphPipelineScratchSizeAMDXPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetExecutionGraphPipelineScratchSizeAMDX is null" Nothing Nothing
+  let vkGetExecutionGraphPipelineScratchSizeAMDX' = mkVkGetExecutionGraphPipelineScratchSizeAMDX vkGetExecutionGraphPipelineScratchSizeAMDXPtr
+  pPSizeInfo <- ContT (withZeroCStruct @ExecutionGraphPipelineScratchSizeAMDX)
+  r <- lift $ traceAroundEvent "vkGetExecutionGraphPipelineScratchSizeAMDX" (vkGetExecutionGraphPipelineScratchSizeAMDX'
+                                                                               (deviceHandle (device))
+                                                                               (executionGraph)
+                                                                               (pPSizeInfo))
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+  pSizeInfo <- lift $ peekCStruct @ExecutionGraphPipelineScratchSizeAMDX pPSizeInfo
+  pure $ (pSizeInfo)
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetExecutionGraphPipelineNodeIndexAMDX
+  :: FunPtr (Ptr Device_T -> Pipeline -> Ptr PipelineShaderStageNodeCreateInfoAMDX -> Ptr Word32 -> IO Result) -> Ptr Device_T -> Pipeline -> Ptr PipelineShaderStageNodeCreateInfoAMDX -> Ptr Word32 -> IO Result
+
+-- | vkGetExecutionGraphPipelineNodeIndexAMDX - Query internal id of a node
+-- in an execution graph
+--
+-- = Description
+--
+-- Once this function returns, the contents of @pNodeIndex@ contain the
+-- internal node index of the identified node.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkGetExecutionGraphPipelineNodeIndexAMDX-pNodeInfo-09140#
+--     @pNodeInfo->pName@ /must/ not be @NULL@
+--
+-- -   #VUID-vkGetExecutionGraphPipelineNodeIndexAMDX-pNodeInfo-09141#
+--     @pNodeInfo->index@ /must/ not be
+--     'Vulkan.Core10.APIConstants.SHADER_INDEX_UNUSED_AMDX'
+--
+-- -   #VUID-vkGetExecutionGraphPipelineNodeIndexAMDX-executionGraph-09142#
+--     There /must/ be a node in @executionGraph@ with a shader name and
+--     index equal to @pNodeInfo->pName@ and @pNodeInfo->index@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkGetExecutionGraphPipelineNodeIndexAMDX-device-parameter#
+--     @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkGetExecutionGraphPipelineNodeIndexAMDX-executionGraph-parameter#
+--     @executionGraph@ /must/ be a valid 'Vulkan.Core10.Handles.Pipeline'
+--     handle
+--
+-- -   #VUID-vkGetExecutionGraphPipelineNodeIndexAMDX-pNodeInfo-parameter#
+--     @pNodeInfo@ /must/ be a valid pointer to a valid
+--     'PipelineShaderStageNodeCreateInfoAMDX' structure
+--
+-- -   #VUID-vkGetExecutionGraphPipelineNodeIndexAMDX-pNodeIndex-parameter#
+--     @pNodeIndex@ /must/ be a valid pointer to a @uint32_t@ value
+--
+-- -   #VUID-vkGetExecutionGraphPipelineNodeIndexAMDX-executionGraph-parent#
+--     @executionGraph@ /must/ have been created, allocated, or retrieved
+--     from @device@
+--
+-- == 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_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMDX_shader_enqueue VK_AMDX_shader_enqueue>,
+-- 'Vulkan.Core10.Handles.Device', 'Vulkan.Core10.Handles.Pipeline',
+-- 'PipelineShaderStageNodeCreateInfoAMDX'
+getExecutionGraphPipelineNodeIndexAMDX :: forall io
+                                        . (MonadIO io)
+                                       => -- | @device@ is the logical device that @executionGraph@ was created on.
+                                          Device
+                                       -> -- | @executionGraph@ is the execution graph pipeline to query the internal
+                                          -- node index for.
+                                          ("executionGraph" ::: Pipeline)
+                                       -> -- | @pNodeInfo@ is a pointer to a 'PipelineShaderStageNodeCreateInfoAMDX'
+                                          -- structure identifying the name and index of the node to query.
+                                          ("nodeInfo" ::: PipelineShaderStageNodeCreateInfoAMDX)
+                                       -> io (("nodeIndex" ::: Word32))
+getExecutionGraphPipelineNodeIndexAMDX device
+                                         executionGraph
+                                         nodeInfo = liftIO . evalContT $ do
+  let vkGetExecutionGraphPipelineNodeIndexAMDXPtr = pVkGetExecutionGraphPipelineNodeIndexAMDX (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkGetExecutionGraphPipelineNodeIndexAMDXPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetExecutionGraphPipelineNodeIndexAMDX is null" Nothing Nothing
+  let vkGetExecutionGraphPipelineNodeIndexAMDX' = mkVkGetExecutionGraphPipelineNodeIndexAMDX vkGetExecutionGraphPipelineNodeIndexAMDXPtr
+  pNodeInfo <- ContT $ withCStruct (nodeInfo)
+  pPNodeIndex <- ContT $ bracket (callocBytes @Word32 4) free
+  r <- lift $ traceAroundEvent "vkGetExecutionGraphPipelineNodeIndexAMDX" (vkGetExecutionGraphPipelineNodeIndexAMDX'
+                                                                             (deviceHandle (device))
+                                                                             (executionGraph)
+                                                                             pNodeInfo
+                                                                             (pPNodeIndex))
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+  pNodeIndex <- lift $ peek @Word32 pPNodeIndex
+  pure $ (pNodeIndex)
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCreateExecutionGraphPipelinesAMDX
+  :: FunPtr (Ptr Device_T -> PipelineCache -> Word32 -> Ptr (SomeStruct ExecutionGraphPipelineCreateInfoAMDX) -> Ptr AllocationCallbacks -> Ptr Pipeline -> IO Result) -> Ptr Device_T -> PipelineCache -> Word32 -> Ptr (SomeStruct ExecutionGraphPipelineCreateInfoAMDX) -> Ptr AllocationCallbacks -> Ptr Pipeline -> IO Result
+
+-- | vkCreateExecutionGraphPipelinesAMDX - Creates a new execution graph
+-- pipeline object
+--
+-- = Description
+--
+-- Pipelines are created and returned as described for
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-multiple Multiple Pipeline Creation>.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCreateExecutionGraphPipelinesAMDX-shaderEnqueue-09124# The
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-shaderEnqueue shaderEnqueue>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCreateExecutionGraphPipelinesAMDX-flags-09125# If the
+--     @flags@ member of any element of @pCreateInfos@ contains the
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'
+--     flag, and the @basePipelineIndex@ member of that same element is not
+--     @-1@, @basePipelineIndex@ /must/ be less than the index into
+--     @pCreateInfos@ that corresponds to that element
+--
+-- -   #VUID-vkCreateExecutionGraphPipelinesAMDX-flags-09126# If the
+--     @flags@ member of any element of @pCreateInfos@ contains the
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'
+--     flag, the base pipeline /must/ have been created with the
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT'
+--     flag set
+--
+-- -   #VUID-vkCreateExecutionGraphPipelinesAMDX-pipelineCache-09127# If
+--     @pipelineCache@ was created with
+--     'Vulkan.Core10.Enums.PipelineCacheCreateFlagBits.PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT',
+--     host access to @pipelineCache@ /must/ be
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#fundamentals-threadingbehavior externally synchronized>
+--
+-- -   #VUID-vkCreateExecutionGraphPipelinesAMDX-pNext-09616# If
+--     'Vulkan.Extensions.VK_KHR_pipeline_binary.PipelineBinaryInfoKHR'::@binaryCount@
+--     is not @0@ for any element of @pCreateInfos@, @pipelineCache@ /must/
+--     be 'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-vkCreateExecutionGraphPipelinesAMDX-pNext-09617# If a
+--     'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlags2CreateInfoKHR'
+--     structure with the
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR'
+--     flag set is included in the @pNext@ chain of any element of
+--     @pCreateInfos@, @pipelineCache@ /must/ be
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-vkCreateExecutionGraphPipelinesAMDX-binaryCount-09620# If
+--     'Vulkan.Extensions.VK_KHR_pipeline_binary.PipelineBinaryInfoKHR'::@binaryCount@
+--     is not @0@ for any element of @pCreateInfos@,
+--     'Vulkan.Core13.Enums.PipelineCreationFeedbackFlagBits.PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT'
+--     /must/ not be set in the @flags@ of that element
+--
+-- -   #VUID-vkCreateExecutionGraphPipelinesAMDX-binaryCount-09621# If
+--     'Vulkan.Extensions.VK_KHR_pipeline_binary.PipelineBinaryInfoKHR'::@binaryCount@
+--     is not @0@ for any element of @pCreateInfos@,
+--     'Vulkan.Core13.Enums.PipelineCreationFeedbackFlagBits.PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT'
+--     /must/ not be set in the @flags@ of that element
+--
+-- -   #VUID-vkCreateExecutionGraphPipelinesAMDX-binaryCount-09622# If
+--     'Vulkan.Extensions.VK_KHR_pipeline_binary.PipelineBinaryInfoKHR'::@binaryCount@
+--     is not @0@ for any element of @pCreateInfos@,
+--     'Vulkan.Extensions.VK_EXT_pipeline_creation_cache_control.PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT'
+--     /must/ not be set in the @flags@ of that element
+--
+-- -   #VUID-vkCreateExecutionGraphPipelinesAMDX-pCreateInfos-11414# If any
+--     element of @pCreateInfos@ sets
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT'
+--     and includes embedded sampler mappings, there /must/ be less than
+--     (<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxSamplerAllocationCount maxSamplerAllocationCount>
+--     -
+--     (<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minSamplerHeapReservedRangeWithEmbedded minSamplerHeapReservedRangeWithEmbedded>
+--     \/
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-samplerDescriptorSize samplerDescriptorSize>))
+--     'Vulkan.Core10.Handles.Sampler' objects currently created on the
+--     device
+--
+-- -   #VUID-vkCreateExecutionGraphPipelinesAMDX-pCreateInfos-11429# If any
+--     element of @pCreateInfos@ sets
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT'
+--     and includes embedded sampler mappings, this command /must/ not
+--     cause the total number of unique embedded samplers in pipelines and
+--     shaders on this device to exceed
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxDescriptorHeapEmbeddedSamplers maxDescriptorHeapEmbeddedSamplers>
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCreateExecutionGraphPipelinesAMDX-device-parameter# @device@
+--     /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkCreateExecutionGraphPipelinesAMDX-pipelineCache-parameter#
+--     If @pipelineCache@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
+--     @pipelineCache@ /must/ be a valid
+--     'Vulkan.Core10.Handles.PipelineCache' handle
+--
+-- -   #VUID-vkCreateExecutionGraphPipelinesAMDX-pCreateInfos-parameter#
+--     @pCreateInfos@ /must/ be a valid pointer to an array of
+--     @createInfoCount@ valid 'ExecutionGraphPipelineCreateInfoAMDX'
+--     structures
+--
+-- -   #VUID-vkCreateExecutionGraphPipelinesAMDX-pAllocator-parameter# If
+--     @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid pointer
+--     to a valid 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'
+--     structure
+--
+-- -   #VUID-vkCreateExecutionGraphPipelinesAMDX-pPipelines-parameter#
+--     @pPipelines@ /must/ be a valid pointer to an array of
+--     @createInfoCount@ 'Vulkan.Core10.Handles.Pipeline' handles
+--
+-- -   #VUID-vkCreateExecutionGraphPipelinesAMDX-createInfoCount-arraylength#
+--     @createInfoCount@ /must/ be greater than @0@
+--
+-- -   #VUID-vkCreateExecutionGraphPipelinesAMDX-pipelineCache-parent# If
+--     @pipelineCache@ is a valid handle, it /must/ have been created,
+--     allocated, or retrieved from @device@
+--
+-- == Return Codes
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
+--
+--     -   'Vulkan.Extensions.VK_EXT_pipeline_creation_cache_control.PIPELINE_COMPILE_REQUIRED_EXT'
+--
+--     -   '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_DEVICE_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMDX_shader_enqueue VK_AMDX_shader_enqueue>,
+-- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',
+-- 'Vulkan.Core10.Handles.Device', 'ExecutionGraphPipelineCreateInfoAMDX',
+-- 'Vulkan.Core10.Handles.Pipeline', 'Vulkan.Core10.Handles.PipelineCache'
+createExecutionGraphPipelinesAMDX :: forall io
+                                   . (MonadIO io)
+                                  => -- | @device@ is the logical device that creates the execution graph
+                                     -- pipelines.
+                                     Device
+                                  -> -- | @pipelineCache@ is either 'Vulkan.Core10.APIConstants.NULL_HANDLE',
+                                     -- indicating that pipeline caching is disabled; or the handle of a valid
+                                     -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-cache pipeline cache>
+                                     -- object, in which case use of that cache is enabled for the duration of
+                                     -- the command. The implementation /must/ not access this object outside of
+                                     -- the duration of this command.
+                                     PipelineCache
+                                  -> -- | @pCreateInfos@ is a pointer to an array of
+                                     -- 'ExecutionGraphPipelineCreateInfoAMDX' structures.
+                                     ("createInfos" ::: Vector (SomeStruct ExecutionGraphPipelineCreateInfoAMDX))
+                                  -> -- | @pAllocator@ controls host memory allocation as described in the
+                                     -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
+                                     -- chapter.
+                                     ("allocator" ::: Maybe AllocationCallbacks)
+                                  -> io (Result, ("pipelines" ::: Vector Pipeline))
+createExecutionGraphPipelinesAMDX device
+                                    pipelineCache
+                                    createInfos
+                                    allocator = liftIO . evalContT $ do
+  let vkCreateExecutionGraphPipelinesAMDXPtr = pVkCreateExecutionGraphPipelinesAMDX (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCreateExecutionGraphPipelinesAMDXPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCreateExecutionGraphPipelinesAMDX is null" Nothing Nothing
+  let vkCreateExecutionGraphPipelinesAMDX' = mkVkCreateExecutionGraphPipelinesAMDX vkCreateExecutionGraphPipelinesAMDXPtr
+  pPCreateInfos <- ContT $ allocaBytes @(ExecutionGraphPipelineCreateInfoAMDX _) ((Data.Vector.length (createInfos)) * 64)
+  Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPCreateInfos `plusPtr` (64 * (i)) :: Ptr (ExecutionGraphPipelineCreateInfoAMDX _))) (e) . ($ ())) (createInfos)
+  pAllocator <- case (allocator) of
+    Nothing -> pure nullPtr
+    Just j -> ContT $ withCStruct (j)
+  pPPipelines <- ContT $ bracket (callocBytes @Pipeline ((fromIntegral ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32))) * 8)) free
+  r <- lift $ traceAroundEvent "vkCreateExecutionGraphPipelinesAMDX" (vkCreateExecutionGraphPipelinesAMDX'
+                                                                        (deviceHandle (device))
+                                                                        (pipelineCache)
+                                                                        ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32))
+                                                                        (forgetExtensions (pPCreateInfos))
+                                                                        pAllocator
+                                                                        (pPPipelines))
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+  pPipelines <- lift $ generateM (fromIntegral ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32))) (\i -> peek @Pipeline ((pPPipelines `advancePtrBytes` (8 * (i)) :: Ptr Pipeline)))
+  pure $ (r, pPipelines)
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdInitializeGraphScratchMemoryAMDX
+  :: FunPtr (Ptr CommandBuffer_T -> Pipeline -> DeviceAddress -> DeviceSize -> IO ()) -> Ptr CommandBuffer_T -> Pipeline -> DeviceAddress -> DeviceSize -> IO ()
+
+-- | vkCmdInitializeGraphScratchMemoryAMDX - Initialize scratch memory for an
+-- execution graph
+--
+-- = Description
+--
+-- This command /must/ be called before using @scratch@ to dispatch the
+-- bound execution graph pipeline.
+--
+-- Execution of this command /may/ modify any memory locations in the range
+-- [@scratch@,@scratch@ + @scratchSize@). Accesses to this memory range are
+-- performed in the
+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COMPUTE_SHADER_BIT'
+-- pipeline stage with the
+-- 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_STORAGE_READ_BIT' and
+-- 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_STORAGE_WRITE_BIT'
+-- access flags.
+--
+-- If any portion of @scratch@ is modified by any command other than
+-- 'cmdDispatchGraphAMDX', 'cmdDispatchGraphIndirectAMDX',
+-- 'cmdDispatchGraphIndirectCountAMDX', or
+-- 'cmdInitializeGraphScratchMemoryAMDX' with the same execution graph, it
+-- /must/ be reinitialized for the execution graph again before dispatching
+-- against it.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdInitializeGraphScratchMemoryAMDX-scratch-10185# @scratch@
+--     /must/ be the device address of an allocated memory range at least
+--     as large as @scratchSize@
+--
+-- -   #VUID-vkCmdInitializeGraphScratchMemoryAMDX-scratchSize-10186#
+--     @scratchSize@ /must/ be greater than or equal to
+--     'ExecutionGraphPipelineScratchSizeAMDX'::@minSize@ returned by
+--     'getExecutionGraphPipelineScratchSizeAMDX' for the bound execution
+--     graph pipeline
+--
+-- -   #VUID-vkCmdInitializeGraphScratchMemoryAMDX-scratch-09144# @scratch@
+--     /must/ be a multiple of 64
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdInitializeGraphScratchMemoryAMDX-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdInitializeGraphScratchMemoryAMDX-executionGraph-parameter#
+--     @executionGraph@ /must/ be a valid 'Vulkan.Core10.Handles.Pipeline'
+--     handle
+--
+-- -   #VUID-vkCmdInitializeGraphScratchMemoryAMDX-scratch-parameter#
+--     @scratch@ /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' value
+--
+-- -   #VUID-vkCmdInitializeGraphScratchMemoryAMDX-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-vkCmdInitializeGraphScratchMemoryAMDX-commandBuffer-cmdpool#
+--     The 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', or
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
+--
+-- -   #VUID-vkCmdInitializeGraphScratchMemoryAMDX-suspended# This command
+--     /must/ not be called between suspended render pass instances
+--
+-- -   #VUID-vkCmdInitializeGraphScratchMemoryAMDX-videocoding# This
+--     command /must/ only be called outside of a video coding scope
+--
+-- -   #VUID-vkCmdInitializeGraphScratchMemoryAMDX-bufferlevel#
+--     @commandBuffer@ /must/ be a primary
+--     'Vulkan.Core10.Handles.CommandBuffer'
+--
+-- -   #VUID-vkCmdInitializeGraphScratchMemoryAMDX-commonparent# Both of
+--     @commandBuffer@, and @executionGraph@ /must/ have been created,
+--     allocated, or retrieved from the same 'Vulkan.Core10.Handles.Device'
+--
+-- == Host Synchronization
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | Action                                                                                                                                 |
+-- |                                                                                                                            |                                                                                                                        |                                                                                                                             | VK_QUEUE_GRAPHICS_BIT                                                                                                 |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdInitializeGraphScratchMemoryAMDX is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMDX_shader_enqueue VK_AMDX_shader_enqueue>,
+-- 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceAddress',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
+-- 'Vulkan.Core10.Handles.Pipeline'
+cmdInitializeGraphScratchMemoryAMDX :: forall io
+                                     . (MonadIO io)
+                                    => -- | @commandBuffer@ is the command buffer into which the command will be
+                                       -- recorded.
+                                       CommandBuffer
+                                    -> -- | @executionGraph@ is the execution graph pipeline to initialize the
+                                       -- scratch memory for.
+                                       ("executionGraph" ::: Pipeline)
+                                    -> -- | @scratch@ is the address of scratch memory to be initialized.
+                                       ("scratch" ::: DeviceAddress)
+                                    -> -- | @scratchSize@ is a range in bytes of scratch memory to be initialized.
+                                       ("scratchSize" ::: DeviceSize)
+                                    -> io ()
+cmdInitializeGraphScratchMemoryAMDX commandBuffer
+                                      executionGraph
+                                      scratch
+                                      scratchSize = liftIO $ do
+  let vkCmdInitializeGraphScratchMemoryAMDXPtr = pVkCmdInitializeGraphScratchMemoryAMDX (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  unless (vkCmdInitializeGraphScratchMemoryAMDXPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdInitializeGraphScratchMemoryAMDX is null" Nothing Nothing
+  let vkCmdInitializeGraphScratchMemoryAMDX' = mkVkCmdInitializeGraphScratchMemoryAMDX vkCmdInitializeGraphScratchMemoryAMDXPtr
+  traceAroundEvent "vkCmdInitializeGraphScratchMemoryAMDX" (vkCmdInitializeGraphScratchMemoryAMDX'
+                                                              (commandBufferHandle (commandBuffer))
+                                                              (executionGraph)
+                                                              (scratch)
+                                                              (scratchSize))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdDispatchGraphAMDX
+  :: FunPtr (Ptr CommandBuffer_T -> DeviceAddress -> DeviceSize -> Ptr DispatchGraphCountInfoAMDX -> IO ()) -> Ptr CommandBuffer_T -> DeviceAddress -> DeviceSize -> Ptr DispatchGraphCountInfoAMDX -> IO ()
+
+-- | vkCmdDispatchGraphAMDX - Dispatch an execution graph
+--
+-- = Description
+--
+-- When this command is executed, the nodes specified in @pCountInfo@ are
+-- executed. Nodes executed as part of this command are not implicitly
+-- synchronized in any way against each other once they are dispatched.
+-- There are no rasterization order guarantees between separately
+-- dispatched graphics nodes, though individual primitives within a single
+-- dispatch do adhere to rasterization order. Draw calls executed before or
+-- after the execution graph also execute relative to each graphics node
+-- with respect to rasterization order.
+--
+-- For this command, all device\/host pointers in substructures are treated
+-- as host pointers and read only during host execution of this command.
+-- Once this command returns, no reference to the original pointers is
+-- retained.
+--
+-- Execution of this command /may/ modify any memory locations in the range
+-- [@scratch@,@scratch@ + @scratchSize@). Accesses to this memory range are
+-- performed in the
+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COMPUTE_SHADER_BIT'
+-- pipeline stage with the
+-- 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_STORAGE_READ_BIT' and
+-- 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_STORAGE_WRITE_BIT'
+-- access flags.
+--
+-- This command
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#executiongraphs-meshnodes-statecapture captures command buffer state>
+-- for mesh nodes similarly to draw commands.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-magFilter-04553# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
+--     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR',
+--     @reductionMode@ equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
+--     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-vkCmdDispatchGraphAMDX-magFilter-09598# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
+--     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR' and
+--     @reductionMode@ equal to either
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
+--     or
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
+--     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_MINMAX_BIT'
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-mipmapMode-04770# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
+--     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR',
+--     @reductionMode@ equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
+--     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-vkCmdDispatchGraphAMDX-mipmapMode-09599# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
+--     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'
+--     and @reductionMode@ equal to either
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
+--     or
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
+--     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_MINMAX_BIT'
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-unnormalizedCoordinates-09635# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the image view’s @levelCount@ and @layerCount@ /must/ be 1
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-None-08609# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the image view’s @viewType@ /must/ be
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D' or
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D'
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-None-08610# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the sampler /must/ not be used with any of the SPIR-V
+--     @OpImageSample*@ or @OpImageSparseSample*@ instructions with
+--     @ImplicitLod@, @Dref@ or @Proj@ in their name
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-None-08611# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the sampler /must/ not be used with any of the SPIR-V
+--     @OpImageSample*@ or @OpImageSparseSample*@ instructions that
+--     includes a LOD bias or any offset values
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-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-vkCmdDispatchGraphAMDX-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-vkCmdDispatchGraphAMDX-None-07888# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'
+--     descriptor is accessed using atomic operations as a result of this
+--     command, then the storage texel buffer’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-buffer-view-format-features format features>
+--     /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT'
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-None-02692# If a
+--     'Vulkan.Core10.Handles.ImageView' is sampled with
+--     'Vulkan.Core10.Enums.Filter.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.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-None-02693# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_filter_cubic VK_EXT_filter_cubic>
+--     extension is not enabled and any 'Vulkan.Core10.Handles.ImageView'
+--     is sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as a
+--     result of this command, it /must/ not have a
+--     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' of
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE', or
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY'
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-filterCubic-02694# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with
+--     'Vulkan.Core10.Enums.Filter.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-vkCmdDispatchGraphAMDX-filterCubicMinmax-02695# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with
+--     'Vulkan.Core10.Enums.Filter.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-vkCmdDispatchGraphAMDX-cubicRangeClamp-09212# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-cubicRangeClamp cubicRangeClamp>
+--     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
+--     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
+--     a result of this command /must/ not have a
+--     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
+--     equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-reductionMode-09213# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with a
+--     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
+--     equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
+--     as a result of this command /must/ sample with
+--     'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT'
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-selectableCubicWeights-09214# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-selectableCubicWeights selectableCubicWeights>
+--     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
+--     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
+--     a result of this command /must/ have
+--     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.SamplerCubicWeightsCreateInfoQCOM'::@cubicWeights@
+--     equal to
+--     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM'
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-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-vkCmdDispatchGraphAMDX-OpTypeImage-07027# For any
+--     'Vulkan.Core10.Handles.ImageView' being written as a storage image
+--     where the image format field of the @OpTypeImage@ is @Unknown@, the
+--     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_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-OpTypeImage-07028# For any
+--     'Vulkan.Core10.Handles.ImageView' being read as a storage image
+--     where the image format field of the @OpTypeImage@ is @Unknown@, the
+--     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_STORAGE_READ_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-OpTypeImage-07029# For any
+--     'Vulkan.Core10.Handles.BufferView' being written as a storage texel
+--     buffer where the image format field of the @OpTypeImage@ is
+--     @Unknown@, the view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
+--     /must/ contain
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-OpTypeImage-07030# Any
+--     'Vulkan.Core10.Handles.BufferView' being read as a storage texel
+--     buffer where the image format field of the @OpTypeImage@ is
+--     @Unknown@ then the view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
+--     /must/ contain
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-None-08600# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
+--     was created with a pipeline layout and statically uses a set /n/, a
+--     descriptor set /must/ have been bound to /n/ at the same pipeline
+--     bind point, with layouts compatible for set /n/ with the layout(s)
+--     used to create the shader, as described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptors-compatibility ???>
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-None-08601# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
+--     was created with a pipeline layout or specified push constant ranges
+--     and statically uses a push constant value, that value /must/ have
+--     been set for the same pipeline bind point, with push constant ranges
+--     that are
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptors-compatibility compatible>
+--     with the push constant range used to create the shader
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-None-10068# For each array of resources
+--     that is used by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
+--     the indices used to access members of the array /must/ be less than
+--     the descriptor count for the identified binding in the descriptor
+--     sets used by this command
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-None-08114# Descriptors in each bound
+--     descriptor set, specified via
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
+--     be valid if they are accessed as described by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
+--     by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
+--     point used by this command and the bound
+--     'Vulkan.Core10.Handles.Pipeline' was not created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-imageLayout-00344# If an image
+--     descriptor is accessed by a shader, the
+--     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' /must/ match the
+--     subresource accessible from the 'Vulkan.Core10.Handles.ImageView' 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>
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-None-08115# If the descriptors used by
+--     the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
+--     point were specified via
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', the
+--     bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     without
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-None-08116# Descriptors in bound
+--     descriptor buffers, specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     /must/ be valid if they are dynamically used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
+--     was created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-None-08604# Descriptors in bound
+--     descriptor buffers, specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     /must/ be valid if they are dynamically used by any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     to the pipeline bind point used by this command
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-None-08117# If the descriptors used by
+--     the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
+--     point were specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-None-08119# If a descriptor is
+--     dynamically used with a 'Vulkan.Core10.Handles.Pipeline' created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     the descriptor memory /must/ be resident
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-None-08605# If a descriptor is
+--     dynamically used with a 'Vulkan.Extensions.Handles.ShaderEXT'
+--     created with a 'Vulkan.Core10.Handles.DescriptorSetLayout' that was
+--     created with
+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     the descriptor memory /must/ be resident
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-None-08606# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject>
+--     feature is not enabled, a valid pipeline /must/ be bound to the
+--     pipeline bind point used by this command
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-None-08608# If a pipeline is bound to
+--     the pipeline bind point used by this command, there /must/ not have
+--     been any calls to dynamic state setting commands for any state
+--     specified statically in the 'Vulkan.Core10.Handles.Pipeline' object
+--     bound to the pipeline bind point used by this command, since that
+--     pipeline was bound
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-uniformBuffers-06935# If any stage of
+--     the 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline
+--     bind point used by this command accesses a uniform buffer, and that
+--     stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @uniformBuffers@, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /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-vkCmdDispatchGraphAMDX-None-08612# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, and any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     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-vkCmdDispatchGraphAMDX-storageBuffers-06936# If any stage of
+--     the 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline
+--     bind point used by this command accesses a storage buffer, and that
+--     stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @storageBuffers@, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /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-vkCmdDispatchGraphAMDX-None-08613# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, and any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     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-vkCmdDispatchGraphAMDX-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
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shaders>
+--     /must/ not be a protected resource
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-viewType-07752# If a
+--     'Vulkan.Core10.Handles.ImageView' is accessed as a result of this
+--     command, then the image view’s @viewType@ /must/ match the @Dim@
+--     operand of the @OpTypeImage@ as described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-image-dimensions ???>
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-format-07753# If a
+--     'Vulkan.Core10.Handles.ImageView' or
+--     'Vulkan.Core10.Handles.BufferView' is accessed as a result of this
+--     command, then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-numericformat numeric type>
+--     of the view’s @format@ and the @Sampled@ @Type@ operand of the
+--     @OpTypeImage@ /must/ match
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-OpImageWrite-08795# If a
+--     'Vulkan.Core10.Handles.ImageView' created with a format other than
+--     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM' 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-vkCmdDispatchGraphAMDX-OpImageWrite-08796# If a
+--     'Vulkan.Core10.Handles.ImageView' created with the format
+--     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM' is accessed using
+--     @OpImageWrite@ as a result of this command, then the @Type@ of the
+--     @Texel@ operand of that instruction /must/ have four components
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-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-vkCmdDispatchGraphAMDX-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-vkCmdDispatchGraphAMDX-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-vkCmdDispatchGraphAMDX-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-vkCmdDispatchGraphAMDX-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-vkCmdDispatchGraphAMDX-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-vkCmdDispatchGraphAMDX-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-vkCmdDispatchGraphAMDX-OpImageSampleWeightedQCOM-06971# If
+--     @OpImageSampleWeightedQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-OpImageSampleWeightedQCOM-06972# If
+--     @OpImageSampleWeightedQCOM@ uses a 'Vulkan.Core10.Handles.ImageView'
+--     as a sample weight image 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-OpImageBoxFilterQCOM-06973# If
+--     @OpImageBoxFilterQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-OpImageBlockMatchSSDQCOM-06974# If
+--     @OpImageBlockMatchSSDQCOM@ is used to read from an
+--     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
+--     or
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_SXD_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-OpImageBlockMatchSADQCOM-12420# If
+--     @OpImageBlockMatchSADQCOM@ is used to read from an
+--     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
+--     or
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_SXD_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-OpImageBlockMatchSADQCOM-06976# If
+--     @OpImageBlockMatchSADQCOM@ or OpImageBlockMatchSSDQCOM is used to
+--     read from a reference image as result of this command, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-blockMatchExtendedClampToEdge blockMatchExtendedClampToEdge>
+--     feature is not enabled or the /input/ sampler was not created with
+--     both @addressModeU@ and @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--     then the specified reference coordinates /must/ not fail
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-OpImageSampleWeightedQCOM-06977# If
+--     @OpImageSampleWeightedQCOM@, @OpImageBoxFilterQCOM@,
+--     @OpImageBlockMatchWindowSSDQCOM@, @OpImageBlockMatchWindowSADQCOM@,
+--     @OpImageBlockMatchGatherSSDQCOM@, @OpImageBlockMatchGatherSADQCOM@,
+--     @OpImageBlockMatchSSDQCOM@, or @OpImageBlockMatchSADQCOM@ uses a
+--     'Vulkan.Core10.Handles.Sampler' as a result of this command, then
+--     the sampler /must/ have been created with
+--     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-OpImageSampleWeightedQCOM-06978# If any
+--     command other than @OpImageSampleWeightedQCOM@,
+--     @OpImageBoxFilterQCOM@, @OpImageBlockMatchWindowSSDQCOM@,
+--     @OpImageBlockMatchWindowSADQCOM@, @OpImageBlockMatchGatherSSDQCOM@,
+--     @OpImageBlockMatchGatherSADQCOM@, @OpImageBlockMatchSSDQCOM@, or
+--     @OpImageBlockMatchSADQCOM@ uses a 'Vulkan.Core10.Handles.Sampler' as
+--     a result of this command, then the sampler /must/ not have been
+--     created with
+--     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-OpImageBlockMatchWindow-09215# If a
+--     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     instruction is used to read from an
+--     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-OpImageBlockMatchWindow-09216# If a
+--     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     instruction is used to read from an
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the image view’s format /must/ be a single-component format
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-OpImageBlockMatchWindow-09217# If a
+--     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     read from a reference image as result of this command, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-blockMatchExtendedClampToEdge blockMatchExtendedClampToEdge>
+--     feature is not enabled or the /input/ sampler was not created with
+--     both @addressModeU@ and @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--     then the specified reference coordinates /must/ not fail
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-OpImageBlockMatchWindow-12421# If a
+--     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     instruction uses a 'Vulkan.Core10.Handles.Sampler' as a result of
+--     this command, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-blockMatchExtendedClampToEdge blockMatchExtendedClampToEdge>
+--     is not enabled, the /input/ sampler /must/ not have been created
+--     with either @addressModeU@ or @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-addressModeU-12422# If a
+--     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     instruction uses a 'Vulkan.Core10.Handles.Sampler' as a result of
+--     this command, and the /input/ sampler was created with either
+--     @addressModeU@ or @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE',
+--     then the sampler /must/ have been created with both @addressModeU@
+--     and @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-None-07288# Any shader invocation
+--     executed by this command /must/
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-termination terminate>
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-None-09600# If a descriptor with type
+--     equal to any of
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',
+--     or
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'
+--     is accessed as a result of this command, all image subresources
+--     identified by that descriptor /must/ be in the image layout
+--     identified when the descriptor was written
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-micromap-11636# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command through an
+--     @OpRayQueryProceedKHR@ operation , the @VK_EXT_opacity_micromap@
+--     extension is not enabled, and the acceleration structure is built
+--     using geometry with a
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapKHR'
+--     structure included in its @pNext@ chain, the shader /must/ have
+--     specified a @OpacityMicromapIdKHR@ execution mode with its
+--     specialization constant operand equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-micromap-11637# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command and the
+--     acceleration structure was constructed through deserialization, all
+--     micromap arrays referenced by the acceleration structure that were
+--     not replaced by an acceleration structure update command /must/ have
+--     been deserialized using the serialized data of the corresponding
+--     micromaps used to originally build the acceleration structure prior
+--     to the execution of this command on the device
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-micromap-11638# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command and the
+--     acceleration structure is built using geometry with an @indexBuffer@
+--     containing both
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.OpacityMicromapSpecialIndexKHR'
+--     values and indices into an associated micromap array, any
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command /must/ not have been created with @flags@ that
+--     includes
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_KHR'
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-micromap-11639# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command and the
+--     acceleration structure is built using geometry with an @indexBuffer@
+--     containing both
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.OpacityMicromapSpecialIndexKHR'
+--     values and indices into an associated micromap array, any
+--     'Vulkan.Extensions.Handles.ShaderEXT' that accessed the descriptor
+--     /must/ not have been created with @flags@ that includes
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_EXT'
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-commandBuffer-10746# The
+--     'Vulkan.Core10.Handles.DeviceMemory' object allocated from a
+--     'Vulkan.Core10.DeviceInitialization.MemoryHeap' with the
+--     'Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_TILE_MEMORY_BIT_QCOM'
+--     property that is bound to a resource accessed as a result of this
+--     command /must/ be the active
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-bind-tile-memory bound tile memory object>
+--     in @commandBuffer@
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-None-10678# If this command is recorded
+--     inside a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-tile-shading tile shading render pass>
+--     instance, the stages corresponding to the pipeline bind point used
+--     by this command /must/ only include
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT',
+--     and\/or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT'
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-None-10679# If this command is recorded
+--     where
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model>
+--     is enabled, there /must/ be no access to any image while the image
+--     was be transitioned to the
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
+--     layout
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-pDescription-09900# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the
+--     underlying 'Vulkan.Extensions.Handles.TensorARM' object /must/ have
+--     been created with the
+--     'Vulkan.Extensions.VK_ARM_tensors.TENSOR_USAGE_SHADER_BIT_ARM' usage
+--     flag set
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-dimensionCount-09905# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the @Rank@
+--     of the @OpTypeTensorARM@ of the tensor resource variable /must/ be
+--     equal to the @dimensionCount@ provided via
+--     'Vulkan.Extensions.VK_ARM_tensors.TensorCreateInfoARM'::@pDescription@
+--     when creating the underlying 'Vulkan.Extensions.Handles.TensorARM'
+--     object
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-OpTypeTensorARM-09906# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the element
+--     type of the @OpTypeTensorARM@ of the tensor resource variable /must/
+--     be
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-tensor-formats compatible>
+--     with the 'Vulkan.Core10.Enums.Format.Format' of the
+--     'Vulkan.Extensions.Handles.TensorViewARM' used for the access
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-None-11297# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses a @OpTypeStruct@ decorated with @Block@ or
+--     @BufferBlock@ using that mapping, the calculated offset for the
+--     resource heap /must/ be a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-bufferDescriptorAlignment bufferDescriptorAlignment>
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-None-11298# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses an @OpTypeImage@ or @OpTypeSampledImage@ using
+--     that mapping, the calculated offset for the resource heap /must/ be
+--     a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-imageDescriptorAlignment imageDescriptorAlignment>
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-None-11299# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses an @OpTypeSampler@ or @OpTypeSampledImage@
+--     using that mapping, the calculated offset for the sampler heap
+--     /must/ be a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-samplerDescriptorAlignment samplerDescriptorAlignment>
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-None-11397# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses an @OpTypeTensorARM@ using that mapping, the
+--     calculated offset for the resource heap /must/ be a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-tensorDescriptorAlignment tensorDescriptorAlignment>
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-None-11300# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a
+--     multiple of 4
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-None-11301# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' backed by physical
+--     memory at every offset specified by each mapping
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-None-11302# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-None-11304# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a
+--     multiple of 8
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-None-11305# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' backed by physical
+--     memory at every offset specified by each mapping
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-None-11306# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address pointed to by the address in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-None-11308# For each
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps descriptor heap>
+--     that is statically used by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
+--     either directly or via a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>,
+--     a valid descriptor heap /must/ be bound
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-None-11309# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     was created as a 'Vulkan.Extensions.Handles.ShaderEXT' with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag or as part of a pipeline with the
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag, execution of this command /must/ not result in any descriptor
+--     read accessing data outside of the user range of the respective heap
+--     bound by @vkCmdBind*HeapEXT@ commands
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-None-11372# If any stage of the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command accesses a uniform buffer or uniform
+--     texel buffer through a descriptor in the bound resource heap, that
+--     stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @uniformBuffers@, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /must/ not access values outside
+--     of the range of the descriptor specified via
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+--     when the descriptor was written
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-None-11373# If any stage of the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command accesses a storage buffer or storage
+--     texel buffer through a descriptor in the bound resource heap, that
+--     stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @storageBuffers@, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /must/ not access values outside
+--     of the range of the descriptor specified by
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+--     when the descriptor was written
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-None-11374# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, and any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     to the pipeline bind point used by this command accesses a uniform
+--     buffer, uniform texel buffer, storage buffer, or storage texel
+--     buffer, that shader /must/ not access values outside of the range of
+--     the buffer as specified by
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+--     when the descriptor was written
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-pBindInfo-11375# If any
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     uses an embedded sampler via a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>,
+--     the value of @pBindInfo->reservedRangeSize@ set for
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.cmdBindSamplerHeapEXT'
+--     /must/ be greater than or equal to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minSamplerHeapReservedRangeWithEmbedded minSamplerHeapReservedRangeWithEmbedded>
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-None-11376# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     was created as a 'Vulkan.Extensions.Handles.ShaderEXT' with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag or as part of a pipeline with the
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag, and that shader statically uses a push constant value, that
+--     value /must/ have been set by
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.cmdPushDataEXT'
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-None-11398# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_DATA_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_DATA_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_RESOURCE_HEAP_DATA_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the access
+--     /must/ not be
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-execution-memory-access-bounds out of bounds>
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-None-11437# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the buffer from
+--     which the address in push data was queried /must/ have been created
+--     with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-None-11438# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a uniform buffer using that mapping, the
+--     address that the uniform buffer is mapped to /must/ have been
+--     queried from a buffer created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-None-11441# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a uniform buffer using that mapping, the
+--     address that the uniform buffer is mapped to /must/ be aligned to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minUniformBufferOffsetAlignment minUniformBufferOffsetAlignment>
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-None-11439# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a storage buffer using that mapping, the
+--     address that the storage buffer is mapped to /must/ have been
+--     queried from a buffer created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_STORAGE_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-None-11442# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a storage buffer using that mapping, the
+--     address that the storage buffer is mapped to /must/ be aligned to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minStorageBufferOffsetAlignment minStorageBufferOffsetAlignment>
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-None-11485# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses an acceleration structure using that mapping,
+--     the address that the acceleration structure is mapped to /must/ be
+--     an acceleration structure address retrieved from a
+--     'Vulkan.Extensions.Handles.AccelerationStructureKHR' object via
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.getAccelerationStructureDeviceAddressKHR'
+--     or handle retrieved from a
+--     'Vulkan.Extensions.Handles.AccelerationStructureNV' object via
+--     'Vulkan.Extensions.VK_NV_ray_tracing.getAccelerationStructureHandleNV'
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-index-11450# If a shader uses a sampler
+--     descriptor to sample an image as a result of this command, and that
+--     sampler descriptor uses a custom border color with an index defined
+--     by
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.SamplerCustomBorderColorIndexCreateInfoEXT',
+--     the value of
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.SamplerCustomBorderColorIndexCreateInfoEXT'::@index@
+--     /must/ have been registered before this command was recorded, and
+--     still be registered during the sampling operation, with an
+--     identically defined color
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-protectedNoFault-11455# If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, a pipeline is bound to the pipeline bind point
+--     used by this command, or a shader is bound to a shader stage used by
+--     this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     the address that the resource is mapped to /must/ have been queried
+--     from a buffer created without the
+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT'
+--     create flag set
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-protectedNoFault-11456# If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, a pipeline is bound to the pipeline bind point
+--     used by this command, or a shader is bound to a shader stage used by
+--     this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     the address of the indirect memory /must/ have been queried from a
+--     buffer created without the
+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT'
+--     create flag set
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-commandBuffer-09181# @commandBuffer@
+--     /must/ not be a protected command buffer
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-commandBuffer-09182# @commandBuffer@
+--     /must/ be a primary command buffer
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-scratch-10192# @scratch@ /must/ be the
+--     device address of an allocated memory range at least as large as
+--     @scratchSize@
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-scratchSize-10193# @scratchSize@ /must/
+--     be greater than or equal to
+--     'ExecutionGraphPipelineScratchSizeAMDX'::@minSize@ returned by
+--     'getExecutionGraphPipelineScratchSizeAMDX' for the bound execution
+--     graph pipeline
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-scratch-09184# @scratch@ /must/ be a
+--     device address within a 'Vulkan.Core10.Handles.Buffer' created with
+--     the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_EXECUTION_GRAPH_SCRATCH_BIT_AMDX'
+--     or
+--     'Vulkan.Core14.Enums.BufferUsageFlags2.BUFFER_USAGE_2_EXECUTION_GRAPH_SCRATCH_BIT_AMDX'
+--     usage flags set
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-scratch-10194# The device memory range
+--     [@scratch@,@scratch@
+--     @scratchSize@] /must/ have been initialized with
+--     'cmdInitializeGraphScratchMemoryAMDX' using the bound execution
+--     graph pipeline, and not modified after that by anything other than
+--     another execution graph dispatch command
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-maxComputeWorkGroupCount-09186#
+--     Execution of this command /must/ not cause a node to be dispatched
+--     with a larger number of workgroups than that specified by either a
+--     @MaxNumWorkgroupsAMDX@ decoration in the dispatched node or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxComputeWorkGroupCount maxComputeWorkGroupCount>
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-maxExecutionGraphShaderPayloadCount-09187#
+--     Execution of this command /must/ not cause any shader to initialize
+--     more than
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxExecutionGraphShaderPayloadCount maxExecutionGraphShaderPayloadCount>
+--     output payloads
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-NodeMaxPayloadsAMDX-09188# Execution of
+--     this command /must/ not cause any shader that declares
+--     @NodeMaxPayloadsAMDX@ to initialize more output payloads than
+--     specified by the max number of payloads for that decoration. This
+--     requirement applies to each @NodeMaxPayloadsAMDX@ decoration
+--     separately
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-None-10195# If the bound execution
+--     graph pipeline includes draw nodes, this command /must/ be called
+--     within a render pass instance that is compatible with the graphics
+--     pipeline used to create each of those nodes
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-pCountInfo-09145# @pCountInfo->infos@
+--     /must/ be a host pointer to a memory allocation at least as large as
+--     the product of @count@ and @stride@
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-infos-09146# Host memory locations at
+--     indexes in the range [@infos@, @infos@ + (@count@*@stride@)), at a
+--     granularity of @stride@ /must/ contain valid 'DispatchGraphInfoAMDX'
+--     structures in the first 24 bytes
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-pCountInfo-09147# For each
+--     'DispatchGraphInfoAMDX' structure in @pCountInfo->infos@, @payloads@
+--     /must/ be a host pointer to a memory allocation at least as large as
+--     the product of @payloadCount@ and @payloadStride@
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-pCountInfo-09148# For each
+--     'DispatchGraphInfoAMDX' structure in @pCountInfo->infos@,
+--     @nodeIndex@ /must/ be a valid node index in the bound execution
+--     graph pipeline, as returned by
+--     'getExecutionGraphPipelineNodeIndexAMDX'
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-pCountInfo-09149# For each
+--     'DispatchGraphInfoAMDX' structure in @pCountInfo->infos@, host
+--     memory locations at indexes in the range [@payloads@, @payloads@ +
+--     (@payloadCount@ * @payloadStride@)), at a granularity of
+--     @payloadStride@ /must/ contain a payload matching the size of the
+--     input payload expected by the node in @nodeIndex@ in the first bytes
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-scratch-parameter# @scratch@ /must/ be
+--     a valid 'Vulkan.Core10.FundamentalTypes.DeviceAddress' value
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-pCountInfo-parameter# @pCountInfo@
+--     /must/ be a valid pointer to a valid 'DispatchGraphCountInfoAMDX'
+--     structure
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-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-vkCmdDispatchGraphAMDX-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', or
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-suspended# This command /must/ not be
+--     called between suspended render pass instances
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-videocoding# This command /must/ only
+--     be called outside of a video coding scope
+--
+-- -   #VUID-vkCmdDispatchGraphAMDX-bufferlevel# @commandBuffer@ /must/ be
+--     a primary 'Vulkan.Core10.Handles.CommandBuffer'
+--
+-- == Host Synchronization
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | Action                                                                                                                                 |
+-- |                                                                                                                            |                                                                                                                        |                                                                                                                             | VK_QUEUE_GRAPHICS_BIT                                                                                                 |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdDispatchGraphAMDX is affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMDX_shader_enqueue VK_AMDX_shader_enqueue>,
+-- 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceAddress',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
+-- 'DispatchGraphCountInfoAMDX'
+cmdDispatchGraphAMDX :: forall io
+                      . (MonadIO io)
+                     => -- | @commandBuffer@ is the command buffer into which the command will be
+                        -- recorded.
+                        CommandBuffer
+                     -> -- | @scratch@ is the address of scratch memory to be used.
+                        ("scratch" ::: DeviceAddress)
+                     -> -- | @scratchSize@ is a range in bytes of scratch memory to be used.
+                        ("scratchSize" ::: DeviceSize)
+                     -> -- | @pCountInfo@ is a host pointer to a 'DispatchGraphCountInfoAMDX'
+                        -- structure defining the nodes which will be initially executed.
+                        DispatchGraphCountInfoAMDX
+                     -> io ()
+cmdDispatchGraphAMDX commandBuffer
+                       scratch
+                       scratchSize
+                       countInfo = liftIO . evalContT $ do
+  let vkCmdDispatchGraphAMDXPtr = pVkCmdDispatchGraphAMDX (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdDispatchGraphAMDXPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdDispatchGraphAMDX is null" Nothing Nothing
+  let vkCmdDispatchGraphAMDX' = mkVkCmdDispatchGraphAMDX vkCmdDispatchGraphAMDXPtr
+  pCountInfo <- ContT $ withCStruct (countInfo)
+  lift $ traceAroundEvent "vkCmdDispatchGraphAMDX" (vkCmdDispatchGraphAMDX'
+                                                      (commandBufferHandle (commandBuffer))
+                                                      (scratch)
+                                                      (scratchSize)
+                                                      pCountInfo)
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdDispatchGraphIndirectAMDX
+  :: FunPtr (Ptr CommandBuffer_T -> DeviceAddress -> DeviceSize -> Ptr DispatchGraphCountInfoAMDX -> IO ()) -> Ptr CommandBuffer_T -> DeviceAddress -> DeviceSize -> Ptr DispatchGraphCountInfoAMDX -> IO ()
+
+-- | vkCmdDispatchGraphIndirectAMDX - Dispatch an execution graph with node
+-- and payload parameters read on the device
+--
+-- = Description
+--
+-- When this command is executed, the nodes specified in @pCountInfo@ are
+-- executed. Nodes executed as part of this command are not implicitly
+-- synchronized in any way against each other once they are dispatched.
+-- There are no rasterization order guarantees between separately
+-- dispatched graphics nodes, though individual primitives within a single
+-- dispatch do adhere to rasterization order. Draw calls executed before or
+-- after the execution graph also execute relative to each graphics node
+-- with respect to rasterization order.
+--
+-- For this command, all device\/host pointers in substructures are treated
+-- as device pointers and read during device execution of this command. The
+-- allocation and contents of these pointers only needs to be valid during
+-- device execution. All of these addresses will be read in the
+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COMPUTE_SHADER_BIT'
+-- pipeline stage with the
+-- 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_STORAGE_READ_BIT'
+-- access flag.
+--
+-- Execution of this command /may/ modify any memory locations in the range
+-- [@scratch@,@scratch@ + @scratchSize@). Accesses to this memory range are
+-- performed in the
+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COMPUTE_SHADER_BIT'
+-- pipeline stage with the
+-- 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_STORAGE_READ_BIT' and
+-- 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_STORAGE_WRITE_BIT'
+-- access flags.
+--
+-- This command
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#executiongraphs-meshnodes-statecapture captures command buffer state>
+-- for mesh nodes similarly to draw commands.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-magFilter-04553# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
+--     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR',
+--     @reductionMode@ equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
+--     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-vkCmdDispatchGraphIndirectAMDX-magFilter-09598# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
+--     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR' and
+--     @reductionMode@ equal to either
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
+--     or
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
+--     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_MINMAX_BIT'
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-mipmapMode-04770# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
+--     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR',
+--     @reductionMode@ equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
+--     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-vkCmdDispatchGraphIndirectAMDX-mipmapMode-09599# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
+--     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'
+--     and @reductionMode@ equal to either
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
+--     or
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
+--     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_MINMAX_BIT'
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-unnormalizedCoordinates-09635#
+--     If a 'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the image view’s @levelCount@ and @layerCount@ /must/ be 1
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-None-08609# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the image view’s @viewType@ /must/ be
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D' or
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D'
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-None-08610# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the sampler /must/ not be used with any of the SPIR-V
+--     @OpImageSample*@ or @OpImageSparseSample*@ instructions with
+--     @ImplicitLod@, @Dref@ or @Proj@ in their name
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-None-08611# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the sampler /must/ not be used with any of the SPIR-V
+--     @OpImageSample*@ or @OpImageSparseSample*@ instructions that
+--     includes a LOD bias or any offset values
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-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-vkCmdDispatchGraphIndirectAMDX-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-vkCmdDispatchGraphIndirectAMDX-None-07888# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'
+--     descriptor is accessed using atomic operations as a result of this
+--     command, then the storage texel buffer’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-buffer-view-format-features format features>
+--     /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT'
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-None-02692# If a
+--     'Vulkan.Core10.Handles.ImageView' is sampled with
+--     'Vulkan.Core10.Enums.Filter.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.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-None-02693# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_filter_cubic VK_EXT_filter_cubic>
+--     extension is not enabled and any 'Vulkan.Core10.Handles.ImageView'
+--     is sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as a
+--     result of this command, it /must/ not have a
+--     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' of
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE', or
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY'
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-filterCubic-02694# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with
+--     'Vulkan.Core10.Enums.Filter.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-vkCmdDispatchGraphIndirectAMDX-filterCubicMinmax-02695# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with
+--     'Vulkan.Core10.Enums.Filter.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-vkCmdDispatchGraphIndirectAMDX-cubicRangeClamp-09212# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-cubicRangeClamp cubicRangeClamp>
+--     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
+--     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
+--     a result of this command /must/ not have a
+--     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
+--     equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-reductionMode-09213# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with a
+--     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
+--     equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
+--     as a result of this command /must/ sample with
+--     'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT'
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-selectableCubicWeights-09214#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-selectableCubicWeights selectableCubicWeights>
+--     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
+--     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
+--     a result of this command /must/ have
+--     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.SamplerCubicWeightsCreateInfoQCOM'::@cubicWeights@
+--     equal to
+--     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM'
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-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-vkCmdDispatchGraphIndirectAMDX-OpTypeImage-07027# For any
+--     'Vulkan.Core10.Handles.ImageView' being written as a storage image
+--     where the image format field of the @OpTypeImage@ is @Unknown@, the
+--     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_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-OpTypeImage-07028# For any
+--     'Vulkan.Core10.Handles.ImageView' being read as a storage image
+--     where the image format field of the @OpTypeImage@ is @Unknown@, the
+--     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_STORAGE_READ_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-OpTypeImage-07029# For any
+--     'Vulkan.Core10.Handles.BufferView' being written as a storage texel
+--     buffer where the image format field of the @OpTypeImage@ is
+--     @Unknown@, the view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
+--     /must/ contain
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-OpTypeImage-07030# Any
+--     'Vulkan.Core10.Handles.BufferView' being read as a storage texel
+--     buffer where the image format field of the @OpTypeImage@ is
+--     @Unknown@ then the view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
+--     /must/ contain
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-None-08600# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
+--     was created with a pipeline layout and statically uses a set /n/, a
+--     descriptor set /must/ have been bound to /n/ at the same pipeline
+--     bind point, with layouts compatible for set /n/ with the layout(s)
+--     used to create the shader, as described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptors-compatibility ???>
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-None-08601# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
+--     was created with a pipeline layout or specified push constant ranges
+--     and statically uses a push constant value, that value /must/ have
+--     been set for the same pipeline bind point, with push constant ranges
+--     that are
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptors-compatibility compatible>
+--     with the push constant range used to create the shader
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-None-10068# For each array of
+--     resources that is used by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
+--     the indices used to access members of the array /must/ be less than
+--     the descriptor count for the identified binding in the descriptor
+--     sets used by this command
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-None-08114# Descriptors in each
+--     bound descriptor set, specified via
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
+--     be valid if they are accessed as described by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
+--     by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
+--     point used by this command and the bound
+--     'Vulkan.Core10.Handles.Pipeline' was not created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-imageLayout-00344# If an image
+--     descriptor is accessed by a shader, the
+--     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' /must/ match the
+--     subresource accessible from the 'Vulkan.Core10.Handles.ImageView' 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>
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-None-08115# If the descriptors
+--     used by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline
+--     bind point were specified via
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', the
+--     bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     without
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-None-08116# Descriptors in
+--     bound descriptor buffers, specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     /must/ be valid if they are dynamically used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
+--     was created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-None-08604# Descriptors in
+--     bound descriptor buffers, specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     /must/ be valid if they are dynamically used by any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     to the pipeline bind point used by this command
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-None-08117# If the descriptors
+--     used by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline
+--     bind point were specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-None-08119# If a descriptor is
+--     dynamically used with a 'Vulkan.Core10.Handles.Pipeline' created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     the descriptor memory /must/ be resident
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-None-08605# If a descriptor is
+--     dynamically used with a 'Vulkan.Extensions.Handles.ShaderEXT'
+--     created with a 'Vulkan.Core10.Handles.DescriptorSetLayout' that was
+--     created with
+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     the descriptor memory /must/ be resident
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-None-08606# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject>
+--     feature is not enabled, a valid pipeline /must/ be bound to the
+--     pipeline bind point used by this command
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-None-08608# If a pipeline is
+--     bound to the pipeline bind point used by this command, there /must/
+--     not have been any calls to dynamic state setting commands for any
+--     state specified statically in the 'Vulkan.Core10.Handles.Pipeline'
+--     object bound to the pipeline bind point used by this command, since
+--     that pipeline was bound
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-uniformBuffers-06935# If any
+--     stage of the 'Vulkan.Core10.Handles.Pipeline' object bound to the
+--     pipeline bind point used by this command accesses a uniform buffer,
+--     and that stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @uniformBuffers@, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /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-vkCmdDispatchGraphIndirectAMDX-None-08612# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, and any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     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-vkCmdDispatchGraphIndirectAMDX-storageBuffers-06936# If any
+--     stage of the 'Vulkan.Core10.Handles.Pipeline' object bound to the
+--     pipeline bind point used by this command accesses a storage buffer,
+--     and that stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @storageBuffers@, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /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-vkCmdDispatchGraphIndirectAMDX-None-08613# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, and any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     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-vkCmdDispatchGraphIndirectAMDX-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
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shaders>
+--     /must/ not be a protected resource
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-viewType-07752# If a
+--     'Vulkan.Core10.Handles.ImageView' is accessed as a result of this
+--     command, then the image view’s @viewType@ /must/ match the @Dim@
+--     operand of the @OpTypeImage@ as described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-image-dimensions ???>
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-format-07753# If a
+--     'Vulkan.Core10.Handles.ImageView' or
+--     'Vulkan.Core10.Handles.BufferView' is accessed as a result of this
+--     command, then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-numericformat numeric type>
+--     of the view’s @format@ and the @Sampled@ @Type@ operand of the
+--     @OpTypeImage@ /must/ match
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-OpImageWrite-08795# If a
+--     'Vulkan.Core10.Handles.ImageView' created with a format other than
+--     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM' 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-vkCmdDispatchGraphIndirectAMDX-OpImageWrite-08796# If a
+--     'Vulkan.Core10.Handles.ImageView' created with the format
+--     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM' is accessed using
+--     @OpImageWrite@ as a result of this command, then the @Type@ of the
+--     @Texel@ operand of that instruction /must/ have four components
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-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-vkCmdDispatchGraphIndirectAMDX-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-vkCmdDispatchGraphIndirectAMDX-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-vkCmdDispatchGraphIndirectAMDX-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-vkCmdDispatchGraphIndirectAMDX-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-vkCmdDispatchGraphIndirectAMDX-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-vkCmdDispatchGraphIndirectAMDX-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-vkCmdDispatchGraphIndirectAMDX-OpImageSampleWeightedQCOM-06971#
+--     If @OpImageSampleWeightedQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-OpImageSampleWeightedQCOM-06972#
+--     If @OpImageSampleWeightedQCOM@ uses a
+--     'Vulkan.Core10.Handles.ImageView' as a sample weight image 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-OpImageBoxFilterQCOM-06973# If
+--     @OpImageBoxFilterQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-OpImageBlockMatchSSDQCOM-06974#
+--     If @OpImageBlockMatchSSDQCOM@ is used to read from an
+--     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
+--     or
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_SXD_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-OpImageBlockMatchSADQCOM-12420#
+--     If @OpImageBlockMatchSADQCOM@ is used to read from an
+--     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
+--     or
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_SXD_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-OpImageBlockMatchSADQCOM-06976#
+--     If @OpImageBlockMatchSADQCOM@ or OpImageBlockMatchSSDQCOM is used to
+--     read from a reference image as result of this command, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-blockMatchExtendedClampToEdge blockMatchExtendedClampToEdge>
+--     feature is not enabled or the /input/ sampler was not created with
+--     both @addressModeU@ and @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--     then the specified reference coordinates /must/ not fail
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-OpImageSampleWeightedQCOM-06977#
+--     If @OpImageSampleWeightedQCOM@, @OpImageBoxFilterQCOM@,
+--     @OpImageBlockMatchWindowSSDQCOM@, @OpImageBlockMatchWindowSADQCOM@,
+--     @OpImageBlockMatchGatherSSDQCOM@, @OpImageBlockMatchGatherSADQCOM@,
+--     @OpImageBlockMatchSSDQCOM@, or @OpImageBlockMatchSADQCOM@ uses a
+--     'Vulkan.Core10.Handles.Sampler' as a result of this command, then
+--     the sampler /must/ have been created with
+--     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-OpImageSampleWeightedQCOM-06978#
+--     If any command other than @OpImageSampleWeightedQCOM@,
+--     @OpImageBoxFilterQCOM@, @OpImageBlockMatchWindowSSDQCOM@,
+--     @OpImageBlockMatchWindowSADQCOM@, @OpImageBlockMatchGatherSSDQCOM@,
+--     @OpImageBlockMatchGatherSADQCOM@, @OpImageBlockMatchSSDQCOM@, or
+--     @OpImageBlockMatchSADQCOM@ uses a 'Vulkan.Core10.Handles.Sampler' as
+--     a result of this command, then the sampler /must/ not have been
+--     created with
+--     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-OpImageBlockMatchWindow-09215#
+--     If a @OpImageBlockMatchWindow*QCOM@ or
+--     @OpImageBlockMatchGather*QCOM@ instruction is used to read from an
+--     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-OpImageBlockMatchWindow-09216#
+--     If a @OpImageBlockMatchWindow*QCOM@ or
+--     @OpImageBlockMatchGather*QCOM@ instruction is used to read from an
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the image view’s format /must/ be a single-component format
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-OpImageBlockMatchWindow-09217#
+--     If a @OpImageBlockMatchWindow*QCOM@ or
+--     @OpImageBlockMatchGather*QCOM@ read from a reference image as result
+--     of this command, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-blockMatchExtendedClampToEdge blockMatchExtendedClampToEdge>
+--     feature is not enabled or the /input/ sampler was not created with
+--     both @addressModeU@ and @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--     then the specified reference coordinates /must/ not fail
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-OpImageBlockMatchWindow-12421#
+--     If a @OpImageBlockMatchWindow*QCOM@ or
+--     @OpImageBlockMatchGather*QCOM@ instruction uses a
+--     'Vulkan.Core10.Handles.Sampler' as a result of this command, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-blockMatchExtendedClampToEdge blockMatchExtendedClampToEdge>
+--     is not enabled, the /input/ sampler /must/ not have been created
+--     with either @addressModeU@ or @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-addressModeU-12422# If a
+--     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     instruction uses a 'Vulkan.Core10.Handles.Sampler' as a result of
+--     this command, and the /input/ sampler was created with either
+--     @addressModeU@ or @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE',
+--     then the sampler /must/ have been created with both @addressModeU@
+--     and @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-None-07288# Any shader
+--     invocation executed by this command /must/
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-termination terminate>
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-None-09600# If a descriptor
+--     with type equal to any of
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',
+--     or
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'
+--     is accessed as a result of this command, all image subresources
+--     identified by that descriptor /must/ be in the image layout
+--     identified when the descriptor was written
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-micromap-11636# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command through an
+--     @OpRayQueryProceedKHR@ operation , the @VK_EXT_opacity_micromap@
+--     extension is not enabled, and the acceleration structure is built
+--     using geometry with a
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapKHR'
+--     structure included in its @pNext@ chain, the shader /must/ have
+--     specified a @OpacityMicromapIdKHR@ execution mode with its
+--     specialization constant operand equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-micromap-11637# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command and the
+--     acceleration structure was constructed through deserialization, all
+--     micromap arrays referenced by the acceleration structure that were
+--     not replaced by an acceleration structure update command /must/ have
+--     been deserialized using the serialized data of the corresponding
+--     micromaps used to originally build the acceleration structure prior
+--     to the execution of this command on the device
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-micromap-11638# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command and the
+--     acceleration structure is built using geometry with an @indexBuffer@
+--     containing both
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.OpacityMicromapSpecialIndexKHR'
+--     values and indices into an associated micromap array, any
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command /must/ not have been created with @flags@ that
+--     includes
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_KHR'
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-micromap-11639# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command and the
+--     acceleration structure is built using geometry with an @indexBuffer@
+--     containing both
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.OpacityMicromapSpecialIndexKHR'
+--     values and indices into an associated micromap array, any
+--     'Vulkan.Extensions.Handles.ShaderEXT' that accessed the descriptor
+--     /must/ not have been created with @flags@ that includes
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_EXT'
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-commandBuffer-10746# The
+--     'Vulkan.Core10.Handles.DeviceMemory' object allocated from a
+--     'Vulkan.Core10.DeviceInitialization.MemoryHeap' with the
+--     'Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_TILE_MEMORY_BIT_QCOM'
+--     property that is bound to a resource accessed as a result of this
+--     command /must/ be the active
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-bind-tile-memory bound tile memory object>
+--     in @commandBuffer@
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-None-10678# If this command is
+--     recorded inside a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-tile-shading tile shading render pass>
+--     instance, the stages corresponding to the pipeline bind point used
+--     by this command /must/ only include
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT',
+--     and\/or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT'
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-None-10679# If this command is
+--     recorded where
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model>
+--     is enabled, there /must/ be no access to any image while the image
+--     was be transitioned to the
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
+--     layout
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-pDescription-09900# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the
+--     underlying 'Vulkan.Extensions.Handles.TensorARM' object /must/ have
+--     been created with the
+--     'Vulkan.Extensions.VK_ARM_tensors.TENSOR_USAGE_SHADER_BIT_ARM' usage
+--     flag set
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-dimensionCount-09905# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the @Rank@
+--     of the @OpTypeTensorARM@ of the tensor resource variable /must/ be
+--     equal to the @dimensionCount@ provided via
+--     'Vulkan.Extensions.VK_ARM_tensors.TensorCreateInfoARM'::@pDescription@
+--     when creating the underlying 'Vulkan.Extensions.Handles.TensorARM'
+--     object
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-OpTypeTensorARM-09906# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the element
+--     type of the @OpTypeTensorARM@ of the tensor resource variable /must/
+--     be
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-tensor-formats compatible>
+--     with the 'Vulkan.Core10.Enums.Format.Format' of the
+--     'Vulkan.Extensions.Handles.TensorViewARM' used for the access
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-None-11297# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses a @OpTypeStruct@ decorated with @Block@ or
+--     @BufferBlock@ using that mapping, the calculated offset for the
+--     resource heap /must/ be a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-bufferDescriptorAlignment bufferDescriptorAlignment>
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-None-11298# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses an @OpTypeImage@ or @OpTypeSampledImage@ using
+--     that mapping, the calculated offset for the resource heap /must/ be
+--     a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-imageDescriptorAlignment imageDescriptorAlignment>
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-None-11299# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses an @OpTypeSampler@ or @OpTypeSampledImage@
+--     using that mapping, the calculated offset for the sampler heap
+--     /must/ be a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-samplerDescriptorAlignment samplerDescriptorAlignment>
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-None-11397# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses an @OpTypeTensorARM@ using that mapping, the
+--     calculated offset for the resource heap /must/ be a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-tensorDescriptorAlignment tensorDescriptorAlignment>
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-None-11300# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a
+--     multiple of 4
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-None-11301# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' backed by physical
+--     memory at every offset specified by each mapping
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-None-11302# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-None-11304# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a
+--     multiple of 8
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-None-11305# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' backed by physical
+--     memory at every offset specified by each mapping
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-None-11306# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address pointed to by the address in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-None-11308# For each
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps descriptor heap>
+--     that is statically used by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
+--     either directly or via a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>,
+--     a valid descriptor heap /must/ be bound
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-None-11309# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     was created as a 'Vulkan.Extensions.Handles.ShaderEXT' with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag or as part of a pipeline with the
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag, execution of this command /must/ not result in any descriptor
+--     read accessing data outside of the user range of the respective heap
+--     bound by @vkCmdBind*HeapEXT@ commands
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-None-11372# If any stage of the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command accesses a uniform buffer or uniform
+--     texel buffer through a descriptor in the bound resource heap, that
+--     stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @uniformBuffers@, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /must/ not access values outside
+--     of the range of the descriptor specified via
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+--     when the descriptor was written
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-None-11373# If any stage of the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command accesses a storage buffer or storage
+--     texel buffer through a descriptor in the bound resource heap, that
+--     stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @storageBuffers@, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /must/ not access values outside
+--     of the range of the descriptor specified by
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+--     when the descriptor was written
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-None-11374# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, and any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     to the pipeline bind point used by this command accesses a uniform
+--     buffer, uniform texel buffer, storage buffer, or storage texel
+--     buffer, that shader /must/ not access values outside of the range of
+--     the buffer as specified by
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+--     when the descriptor was written
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-pBindInfo-11375# If any
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     uses an embedded sampler via a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>,
+--     the value of @pBindInfo->reservedRangeSize@ set for
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.cmdBindSamplerHeapEXT'
+--     /must/ be greater than or equal to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minSamplerHeapReservedRangeWithEmbedded minSamplerHeapReservedRangeWithEmbedded>
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-None-11376# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     was created as a 'Vulkan.Extensions.Handles.ShaderEXT' with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag or as part of a pipeline with the
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag, and that shader statically uses a push constant value, that
+--     value /must/ have been set by
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.cmdPushDataEXT'
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-None-11398# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_DATA_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_DATA_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_RESOURCE_HEAP_DATA_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the access
+--     /must/ not be
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-execution-memory-access-bounds out of bounds>
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-None-11437# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the buffer from
+--     which the address in push data was queried /must/ have been created
+--     with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-None-11438# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a uniform buffer using that mapping, the
+--     address that the uniform buffer is mapped to /must/ have been
+--     queried from a buffer created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-None-11441# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a uniform buffer using that mapping, the
+--     address that the uniform buffer is mapped to /must/ be aligned to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minUniformBufferOffsetAlignment minUniformBufferOffsetAlignment>
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-None-11439# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a storage buffer using that mapping, the
+--     address that the storage buffer is mapped to /must/ have been
+--     queried from a buffer created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_STORAGE_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-None-11442# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a storage buffer using that mapping, the
+--     address that the storage buffer is mapped to /must/ be aligned to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minStorageBufferOffsetAlignment minStorageBufferOffsetAlignment>
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-None-11485# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses an acceleration structure using that mapping,
+--     the address that the acceleration structure is mapped to /must/ be
+--     an acceleration structure address retrieved from a
+--     'Vulkan.Extensions.Handles.AccelerationStructureKHR' object via
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.getAccelerationStructureDeviceAddressKHR'
+--     or handle retrieved from a
+--     'Vulkan.Extensions.Handles.AccelerationStructureNV' object via
+--     'Vulkan.Extensions.VK_NV_ray_tracing.getAccelerationStructureHandleNV'
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-index-11450# If a shader uses a
+--     sampler descriptor to sample an image as a result of this command,
+--     and that sampler descriptor uses a custom border color with an index
+--     defined by
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.SamplerCustomBorderColorIndexCreateInfoEXT',
+--     the value of
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.SamplerCustomBorderColorIndexCreateInfoEXT'::@index@
+--     /must/ have been registered before this command was recorded, and
+--     still be registered during the sampling operation, with an
+--     identically defined color
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-protectedNoFault-11455# If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, a pipeline is bound to the pipeline bind point
+--     used by this command, or a shader is bound to a shader stage used by
+--     this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     the address that the resource is mapped to /must/ have been queried
+--     from a buffer created without the
+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT'
+--     create flag set
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-protectedNoFault-11456# If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, a pipeline is bound to the pipeline bind point
+--     used by this command, or a shader is bound to a shader stage used by
+--     this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     the address of the indirect memory /must/ have been queried from a
+--     buffer created without the
+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT'
+--     create flag set
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-commandBuffer-09181#
+--     @commandBuffer@ /must/ not be a protected command buffer
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-commandBuffer-09182#
+--     @commandBuffer@ /must/ be a primary command buffer
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-scratch-10192# @scratch@ /must/
+--     be the device address of an allocated memory range at least as large
+--     as @scratchSize@
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-scratchSize-10193#
+--     @scratchSize@ /must/ be greater than or equal to
+--     'ExecutionGraphPipelineScratchSizeAMDX'::@minSize@ returned by
+--     'getExecutionGraphPipelineScratchSizeAMDX' for the bound execution
+--     graph pipeline
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-scratch-09184# @scratch@ /must/
+--     be a device address within a 'Vulkan.Core10.Handles.Buffer' created
+--     with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_EXECUTION_GRAPH_SCRATCH_BIT_AMDX'
+--     or
+--     'Vulkan.Core14.Enums.BufferUsageFlags2.BUFFER_USAGE_2_EXECUTION_GRAPH_SCRATCH_BIT_AMDX'
+--     usage flags set
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-scratch-10194# The device
+--     memory range [@scratch@,@scratch@
+--     @scratchSize@] /must/ have been initialized with
+--     'cmdInitializeGraphScratchMemoryAMDX' using the bound execution
+--     graph pipeline, and not modified after that by anything other than
+--     another execution graph dispatch command
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-maxComputeWorkGroupCount-09186#
+--     Execution of this command /must/ not cause a node to be dispatched
+--     with a larger number of workgroups than that specified by either a
+--     @MaxNumWorkgroupsAMDX@ decoration in the dispatched node or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxComputeWorkGroupCount maxComputeWorkGroupCount>
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-maxExecutionGraphShaderPayloadCount-09187#
+--     Execution of this command /must/ not cause any shader to initialize
+--     more than
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxExecutionGraphShaderPayloadCount maxExecutionGraphShaderPayloadCount>
+--     output payloads
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-NodeMaxPayloadsAMDX-09188#
+--     Execution of this command /must/ not cause any shader that declares
+--     @NodeMaxPayloadsAMDX@ to initialize more output payloads than
+--     specified by the max number of payloads for that decoration. This
+--     requirement applies to each @NodeMaxPayloadsAMDX@ decoration
+--     separately
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-None-10195# If the bound
+--     execution graph pipeline includes draw nodes, this command /must/ be
+--     called within a render pass instance that is compatible with the
+--     graphics pipeline used to create each of those nodes
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-pCountInfo-09150#
+--     @pCountInfo->infos@ /must/ be a device pointer to a memory
+--     allocation at least as large as the product of @count@ and @stride@
+--     when this command is executed on the device
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-pCountInfo-09151#
+--     @pCountInfo->infos@ /must/ be a device address within a
+--     'Vulkan.Core10.Handles.Buffer' created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-pCountInfo-09152#
+--     @pCountInfo->infos@ /must/ be a multiple of
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-executionGraphDispatchAddressAlignment executionGraphDispatchAddressAlignment>
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-infos-09153# Device memory
+--     locations at indexes in the range [@infos@, @infos@ +
+--     (@count@*@stride@)), at a granularity of @stride@ /must/ contain
+--     valid 'DispatchGraphInfoAMDX' structures in the first 24 bytes when
+--     this command is executed on the device
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-pCountInfo-09154# For each
+--     'DispatchGraphInfoAMDX' structure in @pCountInfo->infos@, @payloads@
+--     /must/ be a device pointer to a memory allocation at least as large
+--     as the product of @payloadCount@ and @payloadStride@ when this
+--     command is executed on the device
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-pCountInfo-09155# For each
+--     'DispatchGraphInfoAMDX' structure in @pCountInfo->infos@, @payloads@
+--     /must/ be a device address within a 'Vulkan.Core10.Handles.Buffer'
+--     created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-pCountInfo-09156# For each
+--     'DispatchGraphInfoAMDX' structure in @pCountInfo->infos@, @payloads@
+--     /must/ be a multiple of
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-executionGraphDispatchAddressAlignment executionGraphDispatchAddressAlignment>
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-pCountInfo-09157# For each
+--     'DispatchGraphInfoAMDX' structure in @pCountInfo->infos@,
+--     @nodeIndex@ /must/ be a valid node index in the bound execution
+--     graph pipeline, as returned by
+--     'getExecutionGraphPipelineNodeIndexAMDX' when this command is
+--     executed on the device
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-pCountInfo-09158# For each
+--     'DispatchGraphInfoAMDX' structure in @pCountInfo->infos@, device
+--     memory locations at indexes in the range [@payloads@, @payloads@ +
+--     (@payloadCount@ * @payloadStride@)), at a granularity of
+--     @payloadStride@ /must/ contain a payload matching the size of the
+--     input payload expected by the node in @nodeIndex@ in the first bytes
+--     when this command is executed on the device
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-scratch-parameter# @scratch@
+--     /must/ be a valid 'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--     value
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-pCountInfo-parameter#
+--     @pCountInfo@ /must/ be a valid pointer to a valid
+--     'DispatchGraphCountInfoAMDX' structure
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-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-vkCmdDispatchGraphIndirectAMDX-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', or
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-suspended# This command /must/
+--     not be called between suspended render pass instances
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-videocoding# This command
+--     /must/ only be called outside of a video coding scope
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectAMDX-bufferlevel# @commandBuffer@
+--     /must/ be a primary 'Vulkan.Core10.Handles.CommandBuffer'
+--
+-- == Host Synchronization
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | Action                                                                                                                                 |
+-- |                                                                                                                            |                                                                                                                        |                                                                                                                             | VK_QUEUE_GRAPHICS_BIT                                                                                                 |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdDispatchGraphIndirectAMDX is affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMDX_shader_enqueue VK_AMDX_shader_enqueue>,
+-- 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceAddress',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
+-- 'DispatchGraphCountInfoAMDX'
+cmdDispatchGraphIndirectAMDX :: forall io
+                              . (MonadIO io)
+                             => -- | @commandBuffer@ is the command buffer into which the command will be
+                                -- recorded.
+                                CommandBuffer
+                             -> -- | @scratch@ is the address of scratch memory to be used.
+                                ("scratch" ::: DeviceAddress)
+                             -> -- | @scratchSize@ is a range in bytes of scratch memory to be used.
+                                ("scratchSize" ::: DeviceSize)
+                             -> -- | @pCountInfo@ is a host pointer to a 'DispatchGraphCountInfoAMDX'
+                                -- structure defining the nodes which will be initially executed.
+                                DispatchGraphCountInfoAMDX
+                             -> io ()
+cmdDispatchGraphIndirectAMDX commandBuffer
+                               scratch
+                               scratchSize
+                               countInfo = liftIO . evalContT $ do
+  let vkCmdDispatchGraphIndirectAMDXPtr = pVkCmdDispatchGraphIndirectAMDX (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdDispatchGraphIndirectAMDXPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdDispatchGraphIndirectAMDX is null" Nothing Nothing
+  let vkCmdDispatchGraphIndirectAMDX' = mkVkCmdDispatchGraphIndirectAMDX vkCmdDispatchGraphIndirectAMDXPtr
+  pCountInfo <- ContT $ withCStruct (countInfo)
+  lift $ traceAroundEvent "vkCmdDispatchGraphIndirectAMDX" (vkCmdDispatchGraphIndirectAMDX'
+                                                              (commandBufferHandle (commandBuffer))
+                                                              (scratch)
+                                                              (scratchSize)
+                                                              pCountInfo)
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdDispatchGraphIndirectCountAMDX
+  :: FunPtr (Ptr CommandBuffer_T -> DeviceAddress -> DeviceSize -> DeviceAddress -> IO ()) -> Ptr CommandBuffer_T -> DeviceAddress -> DeviceSize -> DeviceAddress -> IO ()
+
+-- | vkCmdDispatchGraphIndirectCountAMDX - Dispatch an execution graph with
+-- all parameters read on the device
+--
+-- = Description
+--
+-- When this command is executed, the nodes specified in @countInfo@ are
+-- executed. Nodes executed as part of this command are not implicitly
+-- synchronized in any way against each other once they are dispatched.
+--
+-- For this command, all pointers in substructures are treated as device
+-- pointers and read during device execution of this command. The
+-- allocation and contents of these pointers only needs to be valid during
+-- device execution. All of these addresses will be read in the
+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COMPUTE_SHADER_BIT'
+-- pipeline stage with the
+-- 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_STORAGE_READ_BIT'
+-- access flag.
+--
+-- Execution of this command /may/ modify any memory locations in the range
+-- [@scratch@,@scratch@ + @scratchSize@). Accesses to this memory range are
+-- performed in the
+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COMPUTE_SHADER_BIT'
+-- pipeline stage with the
+-- 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_STORAGE_READ_BIT' and
+-- 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_STORAGE_WRITE_BIT'
+-- access flags.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-magFilter-04553# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
+--     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR',
+--     @reductionMode@ equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
+--     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-vkCmdDispatchGraphIndirectCountAMDX-magFilter-09598# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
+--     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR' and
+--     @reductionMode@ equal to either
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
+--     or
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
+--     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_MINMAX_BIT'
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-mipmapMode-04770# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
+--     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR',
+--     @reductionMode@ equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
+--     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-vkCmdDispatchGraphIndirectCountAMDX-mipmapMode-09599# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
+--     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'
+--     and @reductionMode@ equal to either
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
+--     or
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
+--     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_MINMAX_BIT'
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-unnormalizedCoordinates-09635#
+--     If a 'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the image view’s @levelCount@ and @layerCount@ /must/ be 1
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-None-08609# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the image view’s @viewType@ /must/ be
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D' or
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D'
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-None-08610# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the sampler /must/ not be used with any of the SPIR-V
+--     @OpImageSample*@ or @OpImageSparseSample*@ instructions with
+--     @ImplicitLod@, @Dref@ or @Proj@ in their name
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-None-08611# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the sampler /must/ not be used with any of the SPIR-V
+--     @OpImageSample*@ or @OpImageSparseSample*@ instructions that
+--     includes a LOD bias or any offset values
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-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-vkCmdDispatchGraphIndirectCountAMDX-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-vkCmdDispatchGraphIndirectCountAMDX-None-07888# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'
+--     descriptor is accessed using atomic operations as a result of this
+--     command, then the storage texel buffer’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-buffer-view-format-features format features>
+--     /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT'
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-None-02692# If a
+--     'Vulkan.Core10.Handles.ImageView' is sampled with
+--     'Vulkan.Core10.Enums.Filter.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.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-None-02693# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_filter_cubic VK_EXT_filter_cubic>
+--     extension is not enabled and any 'Vulkan.Core10.Handles.ImageView'
+--     is sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as a
+--     result of this command, it /must/ not have a
+--     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' of
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE', or
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY'
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-filterCubic-02694# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with
+--     'Vulkan.Core10.Enums.Filter.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-vkCmdDispatchGraphIndirectCountAMDX-filterCubicMinmax-02695#
+--     Any 'Vulkan.Core10.Handles.ImageView' being sampled with
+--     'Vulkan.Core10.Enums.Filter.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-vkCmdDispatchGraphIndirectCountAMDX-cubicRangeClamp-09212# If
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-cubicRangeClamp cubicRangeClamp>
+--     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
+--     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
+--     a result of this command /must/ not have a
+--     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
+--     equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-reductionMode-09213# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with a
+--     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
+--     equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
+--     as a result of this command /must/ sample with
+--     'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT'
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-selectableCubicWeights-09214#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-selectableCubicWeights selectableCubicWeights>
+--     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
+--     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
+--     a result of this command /must/ have
+--     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.SamplerCubicWeightsCreateInfoQCOM'::@cubicWeights@
+--     equal to
+--     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM'
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-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-vkCmdDispatchGraphIndirectCountAMDX-OpTypeImage-07027# For any
+--     'Vulkan.Core10.Handles.ImageView' being written as a storage image
+--     where the image format field of the @OpTypeImage@ is @Unknown@, the
+--     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_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-OpTypeImage-07028# For any
+--     'Vulkan.Core10.Handles.ImageView' being read as a storage image
+--     where the image format field of the @OpTypeImage@ is @Unknown@, the
+--     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_STORAGE_READ_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-OpTypeImage-07029# For any
+--     'Vulkan.Core10.Handles.BufferView' being written as a storage texel
+--     buffer where the image format field of the @OpTypeImage@ is
+--     @Unknown@, the view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
+--     /must/ contain
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-OpTypeImage-07030# Any
+--     'Vulkan.Core10.Handles.BufferView' being read as a storage texel
+--     buffer where the image format field of the @OpTypeImage@ is
+--     @Unknown@ then the view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
+--     /must/ contain
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-None-08600# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
+--     was created with a pipeline layout and statically uses a set /n/, a
+--     descriptor set /must/ have been bound to /n/ at the same pipeline
+--     bind point, with layouts compatible for set /n/ with the layout(s)
+--     used to create the shader, as described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptors-compatibility ???>
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-None-08601# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
+--     was created with a pipeline layout or specified push constant ranges
+--     and statically uses a push constant value, that value /must/ have
+--     been set for the same pipeline bind point, with push constant ranges
+--     that are
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptors-compatibility compatible>
+--     with the push constant range used to create the shader
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-None-10068# For each array
+--     of resources that is used by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
+--     the indices used to access members of the array /must/ be less than
+--     the descriptor count for the identified binding in the descriptor
+--     sets used by this command
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-None-08114# Descriptors in
+--     each bound descriptor set, specified via
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
+--     be valid if they are accessed as described by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
+--     by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
+--     point used by this command and the bound
+--     'Vulkan.Core10.Handles.Pipeline' was not created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-imageLayout-00344# If an
+--     image descriptor is accessed by a shader, the
+--     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' /must/ match the
+--     subresource accessible from the 'Vulkan.Core10.Handles.ImageView' 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>
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-None-08115# If the
+--     descriptors used by the 'Vulkan.Core10.Handles.Pipeline' bound to
+--     the pipeline bind point were specified via
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', the
+--     bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     without
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-None-08116# Descriptors in
+--     bound descriptor buffers, specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     /must/ be valid if they are dynamically used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
+--     was created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-None-08604# Descriptors in
+--     bound descriptor buffers, specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     /must/ be valid if they are dynamically used by any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     to the pipeline bind point used by this command
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-None-08117# If the
+--     descriptors used by the 'Vulkan.Core10.Handles.Pipeline' bound to
+--     the pipeline bind point were specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-None-08119# If a
+--     descriptor is dynamically used with a
+--     'Vulkan.Core10.Handles.Pipeline' created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     the descriptor memory /must/ be resident
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-None-08605# If a
+--     descriptor is dynamically used with a
+--     'Vulkan.Extensions.Handles.ShaderEXT' created with a
+--     'Vulkan.Core10.Handles.DescriptorSetLayout' that was created with
+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     the descriptor memory /must/ be resident
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-None-08606# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject>
+--     feature is not enabled, a valid pipeline /must/ be bound to the
+--     pipeline bind point used by this command
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-None-08608# If a pipeline
+--     is bound to the pipeline bind point used by this command, there
+--     /must/ not have been any calls to dynamic state setting commands for
+--     any state specified statically in the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command, since that pipeline was bound
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-uniformBuffers-06935# If
+--     any stage of the 'Vulkan.Core10.Handles.Pipeline' object bound to
+--     the pipeline bind point used by this command accesses a uniform
+--     buffer, and that stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @uniformBuffers@, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /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-vkCmdDispatchGraphIndirectCountAMDX-None-08612# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, and any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     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-vkCmdDispatchGraphIndirectCountAMDX-storageBuffers-06936# If
+--     any stage of the 'Vulkan.Core10.Handles.Pipeline' object bound to
+--     the pipeline bind point used by this command accesses a storage
+--     buffer, and that stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @storageBuffers@, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /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-vkCmdDispatchGraphIndirectCountAMDX-None-08613# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, and any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     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-vkCmdDispatchGraphIndirectCountAMDX-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
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shaders>
+--     /must/ not be a protected resource
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-viewType-07752# If a
+--     'Vulkan.Core10.Handles.ImageView' is accessed as a result of this
+--     command, then the image view’s @viewType@ /must/ match the @Dim@
+--     operand of the @OpTypeImage@ as described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-image-dimensions ???>
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-format-07753# If a
+--     'Vulkan.Core10.Handles.ImageView' or
+--     'Vulkan.Core10.Handles.BufferView' is accessed as a result of this
+--     command, then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-numericformat numeric type>
+--     of the view’s @format@ and the @Sampled@ @Type@ operand of the
+--     @OpTypeImage@ /must/ match
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-OpImageWrite-08795# If a
+--     'Vulkan.Core10.Handles.ImageView' created with a format other than
+--     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM' 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-vkCmdDispatchGraphIndirectCountAMDX-OpImageWrite-08796# If a
+--     'Vulkan.Core10.Handles.ImageView' created with the format
+--     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM' is accessed using
+--     @OpImageWrite@ as a result of this command, then the @Type@ of the
+--     @Texel@ operand of that instruction /must/ have four components
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-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-vkCmdDispatchGraphIndirectCountAMDX-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-vkCmdDispatchGraphIndirectCountAMDX-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-vkCmdDispatchGraphIndirectCountAMDX-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-vkCmdDispatchGraphIndirectCountAMDX-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-vkCmdDispatchGraphIndirectCountAMDX-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-vkCmdDispatchGraphIndirectCountAMDX-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-vkCmdDispatchGraphIndirectCountAMDX-OpImageSampleWeightedQCOM-06971#
+--     If @OpImageSampleWeightedQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-OpImageSampleWeightedQCOM-06972#
+--     If @OpImageSampleWeightedQCOM@ uses a
+--     'Vulkan.Core10.Handles.ImageView' as a sample weight image 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-OpImageBoxFilterQCOM-06973#
+--     If @OpImageBoxFilterQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-OpImageBlockMatchSSDQCOM-06974#
+--     If @OpImageBlockMatchSSDQCOM@ is used to read from an
+--     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
+--     or
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_SXD_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-OpImageBlockMatchSADQCOM-12420#
+--     If @OpImageBlockMatchSADQCOM@ is used to read from an
+--     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
+--     or
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_SXD_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-OpImageBlockMatchSADQCOM-06976#
+--     If @OpImageBlockMatchSADQCOM@ or OpImageBlockMatchSSDQCOM is used to
+--     read from a reference image as result of this command, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-blockMatchExtendedClampToEdge blockMatchExtendedClampToEdge>
+--     feature is not enabled or the /input/ sampler was not created with
+--     both @addressModeU@ and @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--     then the specified reference coordinates /must/ not fail
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-OpImageSampleWeightedQCOM-06977#
+--     If @OpImageSampleWeightedQCOM@, @OpImageBoxFilterQCOM@,
+--     @OpImageBlockMatchWindowSSDQCOM@, @OpImageBlockMatchWindowSADQCOM@,
+--     @OpImageBlockMatchGatherSSDQCOM@, @OpImageBlockMatchGatherSADQCOM@,
+--     @OpImageBlockMatchSSDQCOM@, or @OpImageBlockMatchSADQCOM@ uses a
+--     'Vulkan.Core10.Handles.Sampler' as a result of this command, then
+--     the sampler /must/ have been created with
+--     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-OpImageSampleWeightedQCOM-06978#
+--     If any command other than @OpImageSampleWeightedQCOM@,
+--     @OpImageBoxFilterQCOM@, @OpImageBlockMatchWindowSSDQCOM@,
+--     @OpImageBlockMatchWindowSADQCOM@, @OpImageBlockMatchGatherSSDQCOM@,
+--     @OpImageBlockMatchGatherSADQCOM@, @OpImageBlockMatchSSDQCOM@, or
+--     @OpImageBlockMatchSADQCOM@ uses a 'Vulkan.Core10.Handles.Sampler' as
+--     a result of this command, then the sampler /must/ not have been
+--     created with
+--     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-OpImageBlockMatchWindow-09215#
+--     If a @OpImageBlockMatchWindow*QCOM@ or
+--     @OpImageBlockMatchGather*QCOM@ instruction is used to read from an
+--     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-OpImageBlockMatchWindow-09216#
+--     If a @OpImageBlockMatchWindow*QCOM@ or
+--     @OpImageBlockMatchGather*QCOM@ instruction is used to read from an
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the image view’s format /must/ be a single-component format
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-OpImageBlockMatchWindow-09217#
+--     If a @OpImageBlockMatchWindow*QCOM@ or
+--     @OpImageBlockMatchGather*QCOM@ read from a reference image as result
+--     of this command, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-blockMatchExtendedClampToEdge blockMatchExtendedClampToEdge>
+--     feature is not enabled or the /input/ sampler was not created with
+--     both @addressModeU@ and @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--     then the specified reference coordinates /must/ not fail
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-OpImageBlockMatchWindow-12421#
+--     If a @OpImageBlockMatchWindow*QCOM@ or
+--     @OpImageBlockMatchGather*QCOM@ instruction uses a
+--     'Vulkan.Core10.Handles.Sampler' as a result of this command, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-blockMatchExtendedClampToEdge blockMatchExtendedClampToEdge>
+--     is not enabled, the /input/ sampler /must/ not have been created
+--     with either @addressModeU@ or @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-addressModeU-12422# If a
+--     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     instruction uses a 'Vulkan.Core10.Handles.Sampler' as a result of
+--     this command, and the /input/ sampler was created with either
+--     @addressModeU@ or @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE',
+--     then the sampler /must/ have been created with both @addressModeU@
+--     and @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-None-07288# Any shader
+--     invocation executed by this command /must/
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-termination terminate>
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-None-09600# If a
+--     descriptor with type equal to any of
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',
+--     or
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'
+--     is accessed as a result of this command, all image subresources
+--     identified by that descriptor /must/ be in the image layout
+--     identified when the descriptor was written
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-micromap-11636# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command through an
+--     @OpRayQueryProceedKHR@ operation , the @VK_EXT_opacity_micromap@
+--     extension is not enabled, and the acceleration structure is built
+--     using geometry with a
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapKHR'
+--     structure included in its @pNext@ chain, the shader /must/ have
+--     specified a @OpacityMicromapIdKHR@ execution mode with its
+--     specialization constant operand equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-micromap-11637# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command and the
+--     acceleration structure was constructed through deserialization, all
+--     micromap arrays referenced by the acceleration structure that were
+--     not replaced by an acceleration structure update command /must/ have
+--     been deserialized using the serialized data of the corresponding
+--     micromaps used to originally build the acceleration structure prior
+--     to the execution of this command on the device
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-micromap-11638# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command and the
+--     acceleration structure is built using geometry with an @indexBuffer@
+--     containing both
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.OpacityMicromapSpecialIndexKHR'
+--     values and indices into an associated micromap array, any
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command /must/ not have been created with @flags@ that
+--     includes
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_KHR'
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-micromap-11639# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command and the
+--     acceleration structure is built using geometry with an @indexBuffer@
+--     containing both
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.OpacityMicromapSpecialIndexKHR'
+--     values and indices into an associated micromap array, any
+--     'Vulkan.Extensions.Handles.ShaderEXT' that accessed the descriptor
+--     /must/ not have been created with @flags@ that includes
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_EXT'
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-commandBuffer-10746# The
+--     'Vulkan.Core10.Handles.DeviceMemory' object allocated from a
+--     'Vulkan.Core10.DeviceInitialization.MemoryHeap' with the
+--     'Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_TILE_MEMORY_BIT_QCOM'
+--     property that is bound to a resource accessed as a result of this
+--     command /must/ be the active
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-bind-tile-memory bound tile memory object>
+--     in @commandBuffer@
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-None-10678# If this
+--     command is recorded inside a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-tile-shading tile shading render pass>
+--     instance, the stages corresponding to the pipeline bind point used
+--     by this command /must/ only include
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT',
+--     and\/or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT'
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-None-10679# If this
+--     command is recorded where
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model>
+--     is enabled, there /must/ be no access to any image while the image
+--     was be transitioned to the
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
+--     layout
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-pDescription-09900# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the
+--     underlying 'Vulkan.Extensions.Handles.TensorARM' object /must/ have
+--     been created with the
+--     'Vulkan.Extensions.VK_ARM_tensors.TENSOR_USAGE_SHADER_BIT_ARM' usage
+--     flag set
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-dimensionCount-09905# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the @Rank@
+--     of the @OpTypeTensorARM@ of the tensor resource variable /must/ be
+--     equal to the @dimensionCount@ provided via
+--     'Vulkan.Extensions.VK_ARM_tensors.TensorCreateInfoARM'::@pDescription@
+--     when creating the underlying 'Vulkan.Extensions.Handles.TensorARM'
+--     object
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-OpTypeTensorARM-09906# If
+--     a 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the element
+--     type of the @OpTypeTensorARM@ of the tensor resource variable /must/
+--     be
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-tensor-formats compatible>
+--     with the 'Vulkan.Core10.Enums.Format.Format' of the
+--     'Vulkan.Extensions.Handles.TensorViewARM' used for the access
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-None-11297# If a pipeline
+--     is bound to the pipeline bind point used by this command, or shader
+--     is bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses a @OpTypeStruct@ decorated with @Block@ or
+--     @BufferBlock@ using that mapping, the calculated offset for the
+--     resource heap /must/ be a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-bufferDescriptorAlignment bufferDescriptorAlignment>
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-None-11298# If a pipeline
+--     is bound to the pipeline bind point used by this command, or shader
+--     is bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses an @OpTypeImage@ or @OpTypeSampledImage@ using
+--     that mapping, the calculated offset for the resource heap /must/ be
+--     a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-imageDescriptorAlignment imageDescriptorAlignment>
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-None-11299# If a pipeline
+--     is bound to the pipeline bind point used by this command, or shader
+--     is bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses an @OpTypeSampler@ or @OpTypeSampledImage@
+--     using that mapping, the calculated offset for the sampler heap
+--     /must/ be a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-samplerDescriptorAlignment samplerDescriptorAlignment>
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-None-11397# If a pipeline
+--     is bound to the pipeline bind point used by this command, or shader
+--     is bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses an @OpTypeTensorARM@ using that mapping, the
+--     calculated offset for the resource heap /must/ be a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-tensorDescriptorAlignment tensorDescriptorAlignment>
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-None-11300# If a pipeline
+--     is bound to the pipeline bind point used by this command, or shader
+--     is bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a
+--     multiple of 4
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-None-11301# If a pipeline
+--     is bound to the pipeline bind point used by this command, or shader
+--     is bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' backed by physical
+--     memory at every offset specified by each mapping
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-None-11302# If a pipeline
+--     is bound to the pipeline bind point used by this command, or shader
+--     is bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-None-11304# If a pipeline
+--     is bound to the pipeline bind point used by this command, or shader
+--     is bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a
+--     multiple of 8
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-None-11305# If a pipeline
+--     is bound to the pipeline bind point used by this command, or shader
+--     is bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' backed by physical
+--     memory at every offset specified by each mapping
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-None-11306# If a pipeline
+--     is bound to the pipeline bind point used by this command, or shader
+--     is bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address pointed to by the address in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-None-11308# For each
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps descriptor heap>
+--     that is statically used by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
+--     either directly or via a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>,
+--     a valid descriptor heap /must/ be bound
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-None-11309# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     was created as a 'Vulkan.Extensions.Handles.ShaderEXT' with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag or as part of a pipeline with the
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag, execution of this command /must/ not result in any descriptor
+--     read accessing data outside of the user range of the respective heap
+--     bound by @vkCmdBind*HeapEXT@ commands
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-None-11372# If any stage
+--     of the 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline
+--     bind point used by this command accesses a uniform buffer or uniform
+--     texel buffer through a descriptor in the bound resource heap, that
+--     stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @uniformBuffers@, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /must/ not access values outside
+--     of the range of the descriptor specified via
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+--     when the descriptor was written
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-None-11373# If any stage
+--     of the 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline
+--     bind point used by this command accesses a storage buffer or storage
+--     texel buffer through a descriptor in the bound resource heap, that
+--     stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @storageBuffers@, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /must/ not access values outside
+--     of the range of the descriptor specified by
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+--     when the descriptor was written
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-None-11374# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, and any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     to the pipeline bind point used by this command accesses a uniform
+--     buffer, uniform texel buffer, storage buffer, or storage texel
+--     buffer, that shader /must/ not access values outside of the range of
+--     the buffer as specified by
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+--     when the descriptor was written
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-pBindInfo-11375# If any
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     uses an embedded sampler via a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>,
+--     the value of @pBindInfo->reservedRangeSize@ set for
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.cmdBindSamplerHeapEXT'
+--     /must/ be greater than or equal to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minSamplerHeapReservedRangeWithEmbedded minSamplerHeapReservedRangeWithEmbedded>
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-None-11376# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     was created as a 'Vulkan.Extensions.Handles.ShaderEXT' with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag or as part of a pipeline with the
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag, and that shader statically uses a push constant value, that
+--     value /must/ have been set by
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.cmdPushDataEXT'
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-None-11398# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_DATA_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_DATA_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_RESOURCE_HEAP_DATA_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the access
+--     /must/ not be
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-execution-memory-access-bounds out of bounds>
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-None-11437# If a pipeline
+--     is bound to the pipeline bind point used by this command, or shader
+--     is bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the buffer from
+--     which the address in push data was queried /must/ have been created
+--     with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-None-11438# If a pipeline
+--     is bound to the pipeline bind point used by this command, or shader
+--     is bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a uniform buffer using that mapping, the
+--     address that the uniform buffer is mapped to /must/ have been
+--     queried from a buffer created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-None-11441# If a pipeline
+--     is bound to the pipeline bind point used by this command, or shader
+--     is bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a uniform buffer using that mapping, the
+--     address that the uniform buffer is mapped to /must/ be aligned to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minUniformBufferOffsetAlignment minUniformBufferOffsetAlignment>
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-None-11439# If a pipeline
+--     is bound to the pipeline bind point used by this command, or shader
+--     is bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a storage buffer using that mapping, the
+--     address that the storage buffer is mapped to /must/ have been
+--     queried from a buffer created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_STORAGE_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-None-11442# If a pipeline
+--     is bound to the pipeline bind point used by this command, or shader
+--     is bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a storage buffer using that mapping, the
+--     address that the storage buffer is mapped to /must/ be aligned to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minStorageBufferOffsetAlignment minStorageBufferOffsetAlignment>
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-None-11485# If a pipeline
+--     is bound to the pipeline bind point used by this command, or shader
+--     is bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses an acceleration structure using that mapping,
+--     the address that the acceleration structure is mapped to /must/ be
+--     an acceleration structure address retrieved from a
+--     'Vulkan.Extensions.Handles.AccelerationStructureKHR' object via
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.getAccelerationStructureDeviceAddressKHR'
+--     or handle retrieved from a
+--     'Vulkan.Extensions.Handles.AccelerationStructureNV' object via
+--     'Vulkan.Extensions.VK_NV_ray_tracing.getAccelerationStructureHandleNV'
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-index-11450# If a shader
+--     uses a sampler descriptor to sample an image as a result of this
+--     command, and that sampler descriptor uses a custom border color with
+--     an index defined by
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.SamplerCustomBorderColorIndexCreateInfoEXT',
+--     the value of
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.SamplerCustomBorderColorIndexCreateInfoEXT'::@index@
+--     /must/ have been registered before this command was recorded, and
+--     still be registered during the sampling operation, with an
+--     identically defined color
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-protectedNoFault-11455# If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, a pipeline is bound to the pipeline bind point
+--     used by this command, or a shader is bound to a shader stage used by
+--     this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     the address that the resource is mapped to /must/ have been queried
+--     from a buffer created without the
+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT'
+--     create flag set
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-protectedNoFault-11456# If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, a pipeline is bound to the pipeline bind point
+--     used by this command, or a shader is bound to a shader stage used by
+--     this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     the address of the indirect memory /must/ have been queried from a
+--     buffer created without the
+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT'
+--     create flag set
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-commandBuffer-09181#
+--     @commandBuffer@ /must/ not be a protected command buffer
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-commandBuffer-09182#
+--     @commandBuffer@ /must/ be a primary command buffer
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-scratch-10192# @scratch@
+--     /must/ be the device address of an allocated memory range at least
+--     as large as @scratchSize@
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-scratchSize-10193#
+--     @scratchSize@ /must/ be greater than or equal to
+--     'ExecutionGraphPipelineScratchSizeAMDX'::@minSize@ returned by
+--     'getExecutionGraphPipelineScratchSizeAMDX' for the bound execution
+--     graph pipeline
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-scratch-09184# @scratch@
+--     /must/ be a device address within a 'Vulkan.Core10.Handles.Buffer'
+--     created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_EXECUTION_GRAPH_SCRATCH_BIT_AMDX'
+--     or
+--     'Vulkan.Core14.Enums.BufferUsageFlags2.BUFFER_USAGE_2_EXECUTION_GRAPH_SCRATCH_BIT_AMDX'
+--     usage flags set
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-scratch-10194# The device
+--     memory range [@scratch@,@scratch@
+--     @scratchSize@] /must/ have been initialized with
+--     'cmdInitializeGraphScratchMemoryAMDX' using the bound execution
+--     graph pipeline, and not modified after that by anything other than
+--     another execution graph dispatch command
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-maxComputeWorkGroupCount-09186#
+--     Execution of this command /must/ not cause a node to be dispatched
+--     with a larger number of workgroups than that specified by either a
+--     @MaxNumWorkgroupsAMDX@ decoration in the dispatched node or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxComputeWorkGroupCount maxComputeWorkGroupCount>
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-maxExecutionGraphShaderPayloadCount-09187#
+--     Execution of this command /must/ not cause any shader to initialize
+--     more than
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxExecutionGraphShaderPayloadCount maxExecutionGraphShaderPayloadCount>
+--     output payloads
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-NodeMaxPayloadsAMDX-09188#
+--     Execution of this command /must/ not cause any shader that declares
+--     @NodeMaxPayloadsAMDX@ to initialize more output payloads than
+--     specified by the max number of payloads for that decoration. This
+--     requirement applies to each @NodeMaxPayloadsAMDX@ decoration
+--     separately
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-None-10195# If the bound
+--     execution graph pipeline includes draw nodes, this command /must/ be
+--     called within a render pass instance that is compatible with the
+--     graphics pipeline used to create each of those nodes
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-countInfo-09159#
+--     @countInfo@ /must/ be a device pointer to a memory allocation
+--     containing a valid 'DispatchGraphCountInfoAMDX' structure when this
+--     command is executed on the device
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-countInfo-09160#
+--     @countInfo@ /must/ be a device address within a
+--     'Vulkan.Core10.Handles.Buffer' created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-countInfo-09161#
+--     @countInfo@ /must/ be a multiple of
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-executionGraphDispatchAddressAlignment executionGraphDispatchAddressAlignment>
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-countInfo-09162#
+--     @countInfo->infos@ /must/ be a device pointer to a memory allocation
+--     at least as large as the product of @count@ and @stride@ when this
+--     command is executed on the device
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-countInfo-09163#
+--     @countInfo->infos@ /must/ be a device address within a
+--     'Vulkan.Core10.Handles.Buffer' created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-countInfo-09164#
+--     @countInfo->infos@ /must/ be a multiple of
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-executionGraphDispatchAddressAlignment executionGraphDispatchAddressAlignment>
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-infos-09165# Device memory
+--     locations at indexes in the range [@infos@, @infos@ +
+--     (@count@*@stride@)), at a granularity of @stride@ /must/ contain
+--     valid 'DispatchGraphInfoAMDX' structures in the first 24 bytes when
+--     this command is executed on the device
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-countInfo-09166# For each
+--     'DispatchGraphInfoAMDX' structure in @countInfo->infos@, @payloads@
+--     /must/ be a device pointer to a memory allocation at least as large
+--     as the product of @payloadCount@ and @payloadStride@ when this
+--     command is executed on the device
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-countInfo-09167# For each
+--     'DispatchGraphInfoAMDX' structure in @countInfo->infos@, @payloads@
+--     /must/ be a device address within a 'Vulkan.Core10.Handles.Buffer'
+--     created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-countInfo-09168# For each
+--     'DispatchGraphInfoAMDX' structure in @countInfo->infos@, @payloads@
+--     /must/ be a multiple of
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-executionGraphDispatchAddressAlignment executionGraphDispatchAddressAlignment>
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-countInfo-09169# For each
+--     'DispatchGraphInfoAMDX' structure in @countInfo->infos@, @nodeIndex@
+--     /must/ be a valid node index in the bound execution graph pipeline,
+--     as returned by 'getExecutionGraphPipelineNodeIndexAMDX' when this
+--     command is executed on the device
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-countInfo-09170# For each
+--     'DispatchGraphInfoAMDX' structure in @countInfo->infos@, device
+--     memory locations at indexes in the range [@payloads@, @payloads@ +
+--     (@payloadCount@ * @payloadStride@)), at a granularity of
+--     @payloadStride@ /must/ contain a payload matching the size of the
+--     input payload expected by the node in @nodeIndex@ in the first bytes
+--     when this command is executed on the device
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-scratch-parameter#
+--     @scratch@ /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' value
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-countInfo-parameter#
+--     @countInfo@ /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' value
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-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-vkCmdDispatchGraphIndirectCountAMDX-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', or
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-suspended# This command
+--     /must/ not be called between suspended render pass instances
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-videocoding# This command
+--     /must/ only be called outside of a video coding scope
+--
+-- -   #VUID-vkCmdDispatchGraphIndirectCountAMDX-bufferlevel#
+--     @commandBuffer@ /must/ be a primary
+--     'Vulkan.Core10.Handles.CommandBuffer'
+--
+-- == Host Synchronization
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | Action                                                                                                                                 |
+-- |                                                                                                                            |                                                                                                                        |                                                                                                                             | VK_QUEUE_GRAPHICS_BIT                                                                                                 |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdDispatchGraphIndirectCountAMDX is affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMDX_shader_enqueue VK_AMDX_shader_enqueue>,
+-- 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceAddress',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize'
+cmdDispatchGraphIndirectCountAMDX :: forall io
+                                   . (MonadIO io)
+                                  => -- | @commandBuffer@ is the command buffer into which the command will be
+                                     -- recorded.
+                                     CommandBuffer
+                                  -> -- | @scratch@ is the address of scratch memory to be used.
+                                     ("scratch" ::: DeviceAddress)
+                                  -> -- | @scratchSize@ is a range in bytes of scratch memory to be used.
+                                     ("scratchSize" ::: DeviceSize)
+                                  -> -- | @countInfo@ is a device address of a 'DispatchGraphCountInfoAMDX'
+                                     -- structure defining the nodes which will be initially executed.
+                                     ("countInfo" ::: DeviceAddress)
+                                  -> io ()
+cmdDispatchGraphIndirectCountAMDX commandBuffer
+                                    scratch
+                                    scratchSize
+                                    countInfo = liftIO $ do
+  let vkCmdDispatchGraphIndirectCountAMDXPtr = pVkCmdDispatchGraphIndirectCountAMDX (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  unless (vkCmdDispatchGraphIndirectCountAMDXPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdDispatchGraphIndirectCountAMDX is null" Nothing Nothing
+  let vkCmdDispatchGraphIndirectCountAMDX' = mkVkCmdDispatchGraphIndirectCountAMDX vkCmdDispatchGraphIndirectCountAMDXPtr
+  traceAroundEvent "vkCmdDispatchGraphIndirectCountAMDX" (vkCmdDispatchGraphIndirectCountAMDX'
+                                                            (commandBufferHandle (commandBuffer))
+                                                            (scratch)
+                                                            (scratchSize)
+                                                            (countInfo))
+  pure $ ()
+
+
+-- | VkPhysicalDeviceShaderEnqueuePropertiesAMDX - Structure describing
+-- shader enqueue limits of an implementation
+--
+-- = Members
+--
+-- The members of the 'PhysicalDeviceShaderEnqueuePropertiesAMDX' structure
+-- describe the following limits:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceShaderEnqueuePropertiesAMDX' 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.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMDX_shader_enqueue VK_AMDX_shader_enqueue>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceShaderEnqueuePropertiesAMDX = PhysicalDeviceShaderEnqueuePropertiesAMDX
+  { -- | #limits-maxExecutionGraphDepth# @maxExecutionGraphDepth@ defines the
+    -- maximum node chain depth in the graph. The dispatched node is at depth 1
+    -- and the node enqueued by it is at depth 2, and so on. If a node enqueues
+    -- itself, each recursive enqueue increases the depth by 1 as well.
+    maxExecutionGraphDepth :: Word32
+  , -- | #limits-maxExecutionGraphShaderOutputNodes#
+    -- @maxExecutionGraphShaderOutputNodes@ specifies the maximum number of
+    -- unique nodes that can be dispatched from a single shader, and /must/ be
+    -- at least 256.
+    maxExecutionGraphShaderOutputNodes :: Word32
+  , -- | #limits-maxExecutionGraphShaderPayloadSize#
+    -- @maxExecutionGraphShaderPayloadSize@ specifies the maximum total size of
+    -- payload declarations in a shader. For any payload declarations that
+    -- share resources, indicated by @NodeSharesPayloadLimitsWithAMDX@
+    -- decorations, the maximum size of each set of shared payload declarations
+    -- is taken. The sum of each shared set’s maximum size and the size of each
+    -- unshared payload is counted against this limit.
+    maxExecutionGraphShaderPayloadSize :: Word32
+  , -- | #limits-maxExecutionGraphShaderPayloadCount#
+    -- @maxExecutionGraphShaderPayloadCount@ specifies the maximum number of
+    -- output payloads that can be initialized in a single workgroup.
+    maxExecutionGraphShaderPayloadCount :: Word32
+  , -- | #limits-executionGraphDispatchAddressAlignment#
+    -- @executionGraphDispatchAddressAlignment@ specifies the alignment of
+    -- non-scratch 'Vulkan.Core10.FundamentalTypes.DeviceAddress' arguments
+    -- consumed by graph dispatch commands.
+    executionGraphDispatchAddressAlignment :: Word32
+  , -- | #limits-maxExecutionGraphWorkgroupCount#
+    -- @maxExecutionGraphWorkgroupCount@[3] is the maximum number of local
+    -- workgroups that a shader /can/ be dispatched with in X, Y, and Z
+    -- dimensions, respectively.
+    maxExecutionGraphWorkgroupCount :: (Word32, Word32, Word32)
+  , -- | #limits-maxExecutionGraphWorkgroups# @maxExecutionGraphWorkgroups@ is
+    -- the total number of local workgroups that a shader /can/ be dispatched
+    -- with.
+    maxExecutionGraphWorkgroups :: Word32
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceShaderEnqueuePropertiesAMDX)
+#endif
+deriving instance Show PhysicalDeviceShaderEnqueuePropertiesAMDX
+
+instance ToCStruct PhysicalDeviceShaderEnqueuePropertiesAMDX where
+  withCStruct x f = allocaBytes 56 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceShaderEnqueuePropertiesAMDX{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ENQUEUE_PROPERTIES_AMDX)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (maxExecutionGraphDepth)
+    poke ((p `plusPtr` 20 :: Ptr Word32)) (maxExecutionGraphShaderOutputNodes)
+    poke ((p `plusPtr` 24 :: Ptr Word32)) (maxExecutionGraphShaderPayloadSize)
+    poke ((p `plusPtr` 28 :: Ptr Word32)) (maxExecutionGraphShaderPayloadCount)
+    poke ((p `plusPtr` 32 :: Ptr Word32)) (executionGraphDispatchAddressAlignment)
+    let pMaxExecutionGraphWorkgroupCount' = lowerArrayPtr ((p `plusPtr` 36 :: Ptr (FixedArray 3 Word32)))
+    case (maxExecutionGraphWorkgroupCount) of
+      (e0, e1, e2) -> do
+        poke (pMaxExecutionGraphWorkgroupCount' :: Ptr Word32) (e0)
+        poke (pMaxExecutionGraphWorkgroupCount' `plusPtr` 4 :: Ptr Word32) (e1)
+        poke (pMaxExecutionGraphWorkgroupCount' `plusPtr` 8 :: Ptr Word32) (e2)
+    poke ((p `plusPtr` 48 :: Ptr Word32)) (maxExecutionGraphWorkgroups)
+    f
+  cStructSize = 56
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ENQUEUE_PROPERTIES_AMDX)
+    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)
+    let pMaxExecutionGraphWorkgroupCount' = lowerArrayPtr ((p `plusPtr` 36 :: Ptr (FixedArray 3 Word32)))
+    case ((zero, zero, zero)) of
+      (e0, e1, e2) -> do
+        poke (pMaxExecutionGraphWorkgroupCount' :: Ptr Word32) (e0)
+        poke (pMaxExecutionGraphWorkgroupCount' `plusPtr` 4 :: Ptr Word32) (e1)
+        poke (pMaxExecutionGraphWorkgroupCount' `plusPtr` 8 :: Ptr Word32) (e2)
+    poke ((p `plusPtr` 48 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct PhysicalDeviceShaderEnqueuePropertiesAMDX where
+  peekCStruct p = do
+    maxExecutionGraphDepth <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    maxExecutionGraphShaderOutputNodes <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
+    maxExecutionGraphShaderPayloadSize <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))
+    maxExecutionGraphShaderPayloadCount <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))
+    executionGraphDispatchAddressAlignment <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))
+    let pmaxExecutionGraphWorkgroupCount = lowerArrayPtr @Word32 ((p `plusPtr` 36 :: Ptr (FixedArray 3 Word32)))
+    maxExecutionGraphWorkgroupCount0 <- peek @Word32 ((pmaxExecutionGraphWorkgroupCount `advancePtrBytes` 0 :: Ptr Word32))
+    maxExecutionGraphWorkgroupCount1 <- peek @Word32 ((pmaxExecutionGraphWorkgroupCount `advancePtrBytes` 4 :: Ptr Word32))
+    maxExecutionGraphWorkgroupCount2 <- peek @Word32 ((pmaxExecutionGraphWorkgroupCount `advancePtrBytes` 8 :: Ptr Word32))
+    maxExecutionGraphWorkgroups <- peek @Word32 ((p `plusPtr` 48 :: Ptr Word32))
+    pure $ PhysicalDeviceShaderEnqueuePropertiesAMDX
+             maxExecutionGraphDepth
+             maxExecutionGraphShaderOutputNodes
+             maxExecutionGraphShaderPayloadSize
+             maxExecutionGraphShaderPayloadCount
+             executionGraphDispatchAddressAlignment
+             (( maxExecutionGraphWorkgroupCount0
+              , maxExecutionGraphWorkgroupCount1
+              , maxExecutionGraphWorkgroupCount2 ))
+             maxExecutionGraphWorkgroups
+
+instance Storable PhysicalDeviceShaderEnqueuePropertiesAMDX where
+  sizeOf ~_ = 56
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceShaderEnqueuePropertiesAMDX where
+  zero = PhysicalDeviceShaderEnqueuePropertiesAMDX
+           zero
+           zero
+           zero
+           zero
+           zero
+           (zero, zero, zero)
+           zero
+
+
+-- | VkPhysicalDeviceShaderEnqueueFeaturesAMDX - Structure describing whether
+-- shader enqueue within execution graphs are supported by the
+-- implementation
+--
+-- = Members
+--
+-- This structure describes the following feature:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceShaderEnqueueFeaturesAMDX' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceShaderEnqueueFeaturesAMDX', it /must/ add an instance of
+-- the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMDX_shader_enqueue VK_AMDX_shader_enqueue>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceShaderEnqueueFeaturesAMDX = PhysicalDeviceShaderEnqueueFeaturesAMDX
+  { -- | #features-shaderEnqueue# @shaderEnqueue@ indicates whether the
+    -- implementation supports
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#executiongraphs execution graphs>.
+    shaderEnqueue :: Bool
+  , -- | #features-shaderMeshEnqueue# @shaderMeshEnqueue@ indicates whether the
+    -- implementation supports
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#executiongraphs-meshnodes mesh nodes in execution graphs>.
+    shaderMeshEnqueue :: Bool
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceShaderEnqueueFeaturesAMDX)
+#endif
+deriving instance Show PhysicalDeviceShaderEnqueueFeaturesAMDX
+
+instance ToCStruct PhysicalDeviceShaderEnqueueFeaturesAMDX where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceShaderEnqueueFeaturesAMDX{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ENQUEUE_FEATURES_AMDX)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (shaderEnqueue))
+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (shaderMeshEnqueue))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ENQUEUE_FEATURES_AMDX)
+    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 PhysicalDeviceShaderEnqueueFeaturesAMDX where
+  peekCStruct p = do
+    shaderEnqueue <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    shaderMeshEnqueue <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
+    pure $ PhysicalDeviceShaderEnqueueFeaturesAMDX
+             (bool32ToBool shaderEnqueue) (bool32ToBool shaderMeshEnqueue)
+
+instance Storable PhysicalDeviceShaderEnqueueFeaturesAMDX where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceShaderEnqueueFeaturesAMDX where
+  zero = PhysicalDeviceShaderEnqueueFeaturesAMDX
+           zero
+           zero
+
+
+-- | VkExecutionGraphPipelineCreateInfoAMDX - Structure specifying parameters
+-- of a newly created execution graph pipeline
+--
+-- = Description
+--
+-- The parameters @basePipelineHandle@ and @basePipelineIndex@ are
+-- described in more detail in
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-pipeline-derivatives Pipeline Derivatives>.
+--
+-- Each shader stage provided when creating an execution graph pipeline
+-- (including those in libraries) is associated with a name and an index,
+-- determined by the inclusion or omission of a
+-- 'PipelineShaderStageNodeCreateInfoAMDX' structure in its @pNext@ chain.
+-- For any graphics pipeline libraries, only the name and index of the
+-- vertex or mesh shader stage is linked directly to the graph as a node -
+-- other shader stages in the pipeline will be executed after those shader
+-- stages as normal. Task shaders cannot be included in a graphics pipeline
+-- used for a draw node.
+--
+-- In addition to the shader name and index, an internal “node index” is
+-- also generated for each node, which can be queried with
+-- 'getExecutionGraphPipelineNodeIndexAMDX', and is used exclusively for
+-- initial dispatch of an execution graph.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-None-09497# If the
+--     @pNext@ chain does not include a
+--     'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.PipelineCreateFlags2CreateInfo'
+--     structure, @flags@ /must/ be a valid combination of
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits'
+--     values
+--
+-- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-flags-07984# If @flags@
+--     contains the
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'
+--     flag, and @basePipelineIndex@ is -1, @basePipelineHandle@ /must/ be
+--     a valid execution graph 'Vulkan.Core10.Handles.Pipeline' handle
+--
+-- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-flags-07985# If @flags@
+--     contains the
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'
+--     flag, and @basePipelineHandle@ is
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', @basePipelineIndex@ /must/
+--     be a valid index into the calling command’s @pCreateInfos@ parameter
+--
+-- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-flags-07986# If @flags@
+--     contains the
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'
+--     flag, @basePipelineIndex@ /must/ be -1 or @basePipelineHandle@
+--     /must/ be 'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-layout-07987# If a push
+--     constant block is declared in a shader and @layout@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', a push constant range in
+--     @layout@ /must/ match the shader stage
+--
+-- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-layout-10069# If a push
+--     constant block is declared in a shader and @layout@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', the block must be
+--     contained inside the push constant range in @layout@ that matches
+--     the stage
+--
+-- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-layout-07988# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-resources resource variable>
+--     is declared in a shader and @layout@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', the corresponding
+--     descriptor set in @layout@ /must/ match the shader stage
+--
+-- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-layout-07990# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-resources resource variable>
+--     is declared in a shader, @layout@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the descriptor type is
+--     not
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_MUTABLE_EXT',
+--     the corresponding descriptor set in @layout@ /must/ match the
+--     descriptor type
+--
+-- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-layout-07991# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-resources resource variable>
+--     is declared in a shader as an array and @layout@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', the corresponding
+--     descriptor binding used to create @layout@ /must/ have a
+--     @descriptorCount@ that is greater than or equal to the length of the
+--     array
+--
+-- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-None-10391# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-resources resource variables>
+--     is declared in a shader as an array of descriptors, then the
+--     descriptor type of that variable /must/ not be
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK'
+--
+-- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-flags-11798# If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shader64BitIndexing shader64BitIndexing>
+--     feature is not enabled, @flags@ /must/ not contain
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_64_BIT_INDEXING_BIT_EXT'
+--
+-- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-pipelineCreationCacheControl-02878#
+--     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'
+--     nor
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT'
+--
+-- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-pipelineProtectedAccess-07368#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineProtectedAccess pipelineProtectedAccess>
+--     feature is not enabled, @flags@ /must/ not include
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT'
+--     nor
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT'
+--
+-- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-flags-07369# @flags@
+--     /must/ not include both
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT'
+--     and
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT'
+--
+-- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-flags-11311# If
+--     'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlags2CreateInfoKHR'::@flags@
+--     includes
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT',
+--     @layout@ /must/ be 'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-flags-11312# If
+--     'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlags2CreateInfoKHR'::@flags@
+--     includes
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT',
+--     all shader variables in the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-resources shader resource interface>
+--     with a 'Vulkan.Core10.Handles.DescriptorSet' and @Binding@
+--     decoration /must/ have a mapping declared in
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.ShaderDescriptorSetAndBindingMappingInfoEXT'::@pMappings@
+--
+-- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-flags-03365# @flags@
+--     /must/ not include
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR'
+--
+-- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-flags-03366# @flags@
+--     /must/ not include
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR'
+--
+-- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-flags-03367# @flags@
+--     /must/ not include
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR'
+--
+-- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-flags-03368# @flags@
+--     /must/ not include
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR'
+--
+-- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-flags-03369# @flags@
+--     /must/ not include
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR'
+--
+-- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-flags-03370# @flags@
+--     /must/ not include
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR'
+--
+-- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-flags-03576# @flags@
+--     /must/ not include
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR'
+--
+-- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-flags-04945# @flags@
+--     /must/ not include
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV'
+--
+-- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-flags-09007# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-deviceGeneratedComputePipelines ::deviceGeneratedComputePipelines>
+--     feature is not enabled, @flags@ /must/ not include
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV'
+--
+-- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-flags-09008# If @flags@
+--     includes
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV',
+--     then the @pNext@ chain /must/ include a pointer to a valid instance
+--     of
+--     'Vulkan.Extensions.VK_NV_device_generated_commands_compute.ComputePipelineIndirectBufferInfoNV'
+--     specifying the address where the pipeline’s metadata will be saved
+--
+-- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-flags-11007# If @flags@
+--     includes
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXT',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-deviceGeneratedCommands ::deviceGeneratedCommands>
+--     feature /must/ be enabled
+--
+-- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-stage-09128# The
+--     @stage@ member of any element of @pStages@ /must/ be
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT'
+--
+-- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-pStages-09129# The
+--     shader code for the entry point identified by each element of
+--     @pStages@ and the rest of the state identified by this structure
+--     /must/ adhere to the pipeline linking rules described in the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces Shader Interfaces>
+--     chapter
+--
+-- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-layout-09130# If
+--     @layout@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', it /must/
+--     be
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-pipelinelayout-consistency consistent>
+--     with the layout of the shaders specified in @pStages@
+--
+-- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-pLibraryInfo-09131# If
+--     @pLibraryInfo@ is not @NULL@ and @layout@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', each element of
+--     @pLibraryInfo->pLibraries@ /must/ have been created with a @layout@
+--     that is compatible with the @layout@ in this pipeline
+--
+-- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-layout-09132# If
+--     @layout@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the number
+--     of resources in @layout@ accessible to each shader stage that is
+--     used by the pipeline /must/ be less than or equal to
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxPerStageResources@
+--
+-- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-pLibraryInfo-09133# If
+--     @pLibraryInfo@ is not @NULL@, each element of
+--     @pLibraryInfo->pLibraries@ /must/ be either a compute pipeline, an
+--     execution graph pipeline, or a graphics pipeline
+--
+-- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-pLibraryInfo-10181# If
+--     @pLibraryInfo@ is not @NULL@, each element of
+--     @pLibraryInfo->pLibraries@ that is a compute pipeline or a graphics
+--     pipeline /must/ have been created with
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_EXECUTION_GRAPH_BIT_AMDX'
+--     set
+--
+-- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-shaderMeshEnqueue-10182#
+--     If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-shaderMeshEnqueue shaderMeshEnqueue>
+--     feature is not enabled, and @pLibraryInfo->pLibraries@ is not
+--     @NULL@, @pLibraryInfo->pLibraries@ /must/ not contain any graphics
+--     pipelines
+--
+-- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-pLibraryInfo-10183# Any
+--     element of @pLibraryInfo->pLibraries@ identifying a graphics
+--     pipeline /must/ have been created with
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-complete all possible state subsets>
+--
+-- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-None-09134# There
+--     /must/ be no two nodes in the pipeline that share both the same
+--     shader name and index, as specified by
+--     'PipelineShaderStageNodeCreateInfoAMDX'
+--
+-- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-None-09135# There
+--     /must/ be no two nodes in the pipeline that share the same shader
+--     name and have input payload declarations with different sizes
+--
+-- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-None-09136# There
+--     /must/ be no two nodes in the pipeline that share the same name but
+--     have different execution models
+--
+-- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-CoalescedInputCountAMDX-09137#
+--     There /must/ be no two nodes in the pipeline that share the same
+--     name where one includes @CoalescedInputCountAMDX@ and the other does
+--     not
+--
+-- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-StaticNumWorkgroupsAMDX-09138#
+--     There /must/ be no two nodes in the pipeline that share the same
+--     name where one includes @StaticNumWorkgroupsAMDX@ and the other does
+--     not
+--
+-- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-PayloadNodeNameAMDX-09139#
+--     If an output payload declared in any shader in the pipeline has a
+--     @PayloadNodeNameAMDX@ decoration with a @Node@ @Name@ that matches
+--     the shader name of any other node in the graph, the size of the
+--     output payload /must/ match the size of the input payload in the
+--     matching node
+--
+-- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-flags-10184# If @flags@
+--     does not include
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR',
+--     and an output payload declared in any shader in the pipeline does
+--     not have a @PayloadNodeSparseArrayAMDX@ decoration, there /must/ be
+--     a node in the graph corresponding to every index from 0 to its
+--     @PayloadNodeArraySizeAMDX@ decoration
+--
+-- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-flags-12334# @flags@
+--     /must/ not include
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT'
+--     nor
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT'
+--
+-- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-flags-11271# If
+--     'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlags2CreateInfoKHR'::@flags@
+--     includes
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT',
+--     all libraries linked to this pipeline /must/ also have that flag set
+--
+-- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-flags-11272# If
+--     'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlags2CreateInfoKHR'::@flags@
+--     does not include
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT',
+--     all libraries linked to this pipeline /must/ also not have that flag
+--     set
+--
+-- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-None-11363# If
+--     'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlags2CreateInfoKHR'::@flags@
+--     does not include
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT',
+--     @layout@ /must/ not be 'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-sType-sType# @sType@
+--     /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_EXECUTION_GRAPH_PIPELINE_CREATE_INFO_AMDX'
+--
+-- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-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_AMD_pipeline_compiler_control.PipelineCompilerControlCreateInfoAMD'
+--     or
+--     'Vulkan.Core13.Promoted_From_VK_EXT_pipeline_creation_feedback.PipelineCreationFeedbackCreateInfo'
+--
+-- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-sType-unique# The
+--     @sType@ value of each structure in the @pNext@ chain /must/ be
+--     unique
+--
+-- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-pStages-parameter# If
+--     @stageCount@ is not @0@, and @pStages@ is not @NULL@, @pStages@
+--     /must/ be a valid pointer to an array of @stageCount@ valid
+--     'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo'
+--     structures
+--
+-- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-pLibraryInfo-parameter#
+--     If @pLibraryInfo@ is not @NULL@, @pLibraryInfo@ /must/ be a valid
+--     pointer to a valid
+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'
+--     structure
+--
+-- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-layout-parameter# If
+--     @layout@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @layout@
+--     /must/ be a valid 'Vulkan.Core10.Handles.PipelineLayout' handle
+--
+-- -   #VUID-VkExecutionGraphPipelineCreateInfoAMDX-commonparent# Both of
+--     @basePipelineHandle@, and @layout@ 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_AMDX_shader_enqueue VK_AMDX_shader_enqueue>,
+-- 'Vulkan.Core10.Handles.Pipeline',
+-- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlags',
+-- 'Vulkan.Core10.Handles.PipelineLayout',
+-- 'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR',
+-- 'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'createExecutionGraphPipelinesAMDX'
+data ExecutionGraphPipelineCreateInfoAMDX (es :: [Type]) = ExecutionGraphPipelineCreateInfoAMDX
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
+    next :: Chain es
+  , -- | @flags@ is a bitmask of
+    -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits'
+    -- specifying how the pipeline will be generated.
+    flags :: PipelineCreateFlags
+  , -- | @stageCount@ is the number of entries in the @pStages@ array.
+    stageCount :: Word32
+  , -- | @pStages@ is a pointer to an array of @stageCount@
+    -- 'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo' structures
+    -- describing the set of the shader stages to be included in the execution
+    -- graph pipeline.
+    stages :: Vector (SomeStruct PipelineShaderStageCreateInfo)
+  , -- | @pLibraryInfo@ is a pointer to a
+    -- 'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'
+    -- structure defining pipeline libraries to include.
+    libraryInfo :: Maybe PipelineLibraryCreateInfoKHR
+  , -- | @layout@ is the description of binding locations used by both the
+    -- pipeline and descriptor sets used with the pipeline. The implementation
+    -- /must/ not access this object outside of the duration of the command
+    -- this structure is passed to.
+    layout :: PipelineLayout
+  , -- | @basePipelineHandle@ is a pipeline to derive from
+    basePipelineHandle :: Pipeline
+  , -- | @basePipelineIndex@ is an index into the @pCreateInfos@ parameter to use
+    -- as a pipeline to derive from
+    basePipelineIndex :: Int32
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (ExecutionGraphPipelineCreateInfoAMDX (es :: [Type]))
+#endif
+deriving instance Show (Chain es) => Show (ExecutionGraphPipelineCreateInfoAMDX es)
+
+instance Extensible ExecutionGraphPipelineCreateInfoAMDX where
+  extensibleTypeName = "ExecutionGraphPipelineCreateInfoAMDX"
+  setNext ExecutionGraphPipelineCreateInfoAMDX{..} next' = ExecutionGraphPipelineCreateInfoAMDX{next = next', ..}
+  getNext ExecutionGraphPipelineCreateInfoAMDX{..} = next
+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends ExecutionGraphPipelineCreateInfoAMDX e => b) -> Maybe b
+  extends _ f
+    | Just Refl <- eqT @e @PipelineCompilerControlCreateInfoAMD = Just f
+    | Just Refl <- eqT @e @PipelineCreationFeedbackCreateInfo = Just f
+    | otherwise = Nothing
+
+instance ( Extendss ExecutionGraphPipelineCreateInfoAMDX es
+         , PokeChain es ) => ToCStruct (ExecutionGraphPipelineCreateInfoAMDX es) where
+  withCStruct x f = allocaBytes 64 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p ExecutionGraphPipelineCreateInfoAMDX{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_EXECUTION_GRAPH_PIPELINE_CREATE_INFO_AMDX)
+    pNext'' <- fmap castPtr . ContT $ withChain (next)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
+    lift $ poke ((p `plusPtr` 16 :: Ptr PipelineCreateFlags)) (flags)
+    let pStagesLength = Data.Vector.length $ (stages)
+    stageCount'' <- lift $ if (stageCount) == 0
+      then pure $ fromIntegral pStagesLength
+      else do
+        unless (fromIntegral pStagesLength == (stageCount) || pStagesLength == 0) $
+          throwIO $ IOError Nothing InvalidArgument "" "pStages must be empty or have 'stageCount' elements" Nothing Nothing
+        pure (stageCount)
+    lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) (stageCount'')
+    pStages'' <- if Data.Vector.null (stages)
+      then pure nullPtr
+      else do
+        pPStages <- ContT $ allocaBytes @(PipelineShaderStageCreateInfo _) (((Data.Vector.length (stages))) * 48)
+        Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPStages `plusPtr` (48 * (i)) :: Ptr (PipelineShaderStageCreateInfo _))) (e) . ($ ())) ((stages))
+        pure $ pPStages
+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr (PipelineShaderStageCreateInfo _)))) pStages''
+    pLibraryInfo'' <- case (libraryInfo) of
+      Nothing -> pure nullPtr
+      Just j -> ContT $ withCStruct (j)
+    lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr PipelineLibraryCreateInfoKHR))) pLibraryInfo''
+    lift $ poke ((p `plusPtr` 40 :: Ptr PipelineLayout)) (layout)
+    lift $ poke ((p `plusPtr` 48 :: Ptr Pipeline)) (basePipelineHandle)
+    lift $ poke ((p `plusPtr` 56 :: Ptr Int32)) (basePipelineIndex)
+    lift $ f
+  cStructSize = 64
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_EXECUTION_GRAPH_PIPELINE_CREATE_INFO_AMDX)
+    pNext' <- fmap castPtr . ContT $ withZeroChain @es
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
+    lift $ poke ((p `plusPtr` 56 :: Ptr Int32)) (zero)
+    lift $ f
+
+instance ( Extendss ExecutionGraphPipelineCreateInfoAMDX es
+         , PeekChain es ) => FromCStruct (ExecutionGraphPipelineCreateInfoAMDX es) where
+  peekCStruct p = do
+    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
+    next <- peekChain (castPtr pNext)
+    flags <- peek @PipelineCreateFlags ((p `plusPtr` 16 :: Ptr PipelineCreateFlags))
+    stageCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
+    pStages <- peek @(Ptr (PipelineShaderStageCreateInfo _)) ((p `plusPtr` 24 :: Ptr (Ptr (PipelineShaderStageCreateInfo _))))
+    let pStagesLength = if pStages == nullPtr then 0 else (fromIntegral stageCount)
+    pStages' <- generateM pStagesLength (\i -> peekSomeCStruct (forgetExtensions ((pStages `advancePtrBytes` (48 * (i)) :: Ptr (PipelineShaderStageCreateInfo _)))))
+    pLibraryInfo <- peek @(Ptr PipelineLibraryCreateInfoKHR) ((p `plusPtr` 32 :: Ptr (Ptr PipelineLibraryCreateInfoKHR)))
+    pLibraryInfo' <- maybePeek (\j -> peekCStruct @PipelineLibraryCreateInfoKHR (j)) pLibraryInfo
+    layout <- peek @PipelineLayout ((p `plusPtr` 40 :: Ptr PipelineLayout))
+    basePipelineHandle <- peek @Pipeline ((p `plusPtr` 48 :: Ptr Pipeline))
+    basePipelineIndex <- peek @Int32 ((p `plusPtr` 56 :: Ptr Int32))
+    pure $ ExecutionGraphPipelineCreateInfoAMDX
+             next
+             flags
+             stageCount
+             pStages'
+             pLibraryInfo'
+             layout
+             basePipelineHandle
+             basePipelineIndex
+
+instance es ~ '[] => Zero (ExecutionGraphPipelineCreateInfoAMDX es) where
+  zero = ExecutionGraphPipelineCreateInfoAMDX
+           ()
+           zero
+           zero
+           mempty
+           Nothing
+           zero
+           zero
+           zero
+
+
+-- | VkPipelineShaderStageNodeCreateInfoAMDX - Structure specifying the
+-- shader name and index with an execution graph
+--
+-- = Description
+--
+-- When included in the @pNext@ chain of a
+-- 'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo' structure,
+-- this structure specifies the shader name and shader index of a node when
+-- creating an execution graph pipeline. If this structure is omitted, the
+-- shader name is set to the name of the entry point in SPIR-V and the
+-- shader index is set to @0@.
+--
+-- When dispatching a node from another shader, the name is fixed at
+-- pipeline creation, but the index /can/ be set dynamically. By
+-- associating multiple shaders with the same name but different indexes,
+-- applications can dynamically select different nodes to execute.
+-- Applications /must/ ensure each node has a unique name and index.
+--
+-- Shaders with the same name /must/ be of the same type - e.g. a compute
+-- and graphics shader, or even two compute shaders where one is coalescing
+-- and the other is not, cannot share the same name.
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkPipelineShaderStageNodeCreateInfoAMDX-sType-sType# @sType@
+--     /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_NODE_CREATE_INFO_AMDX'
+--
+-- -   #VUID-VkPipelineShaderStageNodeCreateInfoAMDX-pName-parameter# If
+--     @pName@ is not @NULL@, @pName@ /must/ be a null-terminated UTF-8
+--     string
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMDX_shader_enqueue VK_AMDX_shader_enqueue>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'getExecutionGraphPipelineNodeIndexAMDX'
+data PipelineShaderStageNodeCreateInfoAMDX = PipelineShaderStageNodeCreateInfoAMDX
+  { -- | @pName@ is the shader name to use when creating a node in an execution
+    -- graph. If @pName@ is @NULL@, the name of the entry point specified in
+    -- SPIR-V is used as the shader name.
+    name :: Maybe ByteString
+  , -- | @index@ is the shader index to use when creating a node in an execution
+    -- graph. If @index@ is
+    -- 'Vulkan.Core10.APIConstants.SHADER_INDEX_UNUSED_AMDX' then the original
+    -- index is used, either as specified by the @ShaderIndexAMDX@ execution
+    -- mode, or @0@ if that too is not specified.
+    index :: Word32
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PipelineShaderStageNodeCreateInfoAMDX)
+#endif
+deriving instance Show PipelineShaderStageNodeCreateInfoAMDX
+
+instance ToCStruct PipelineShaderStageNodeCreateInfoAMDX where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PipelineShaderStageNodeCreateInfoAMDX{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_NODE_CREATE_INFO_AMDX)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    pName'' <- case (name) of
+      Nothing -> pure nullPtr
+      Just j -> ContT $ useAsCString (j)
+    lift $ poke ((p `plusPtr` 16 :: Ptr (Ptr CChar))) pName''
+    lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) (index)
+    lift $ f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_NODE_CREATE_INFO_AMDX)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct PipelineShaderStageNodeCreateInfoAMDX where
+  peekCStruct p = do
+    pName <- peek @(Ptr CChar) ((p `plusPtr` 16 :: Ptr (Ptr CChar)))
+    pName' <- maybePeek (\j -> packCString (j)) pName
+    index <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))
+    pure $ PipelineShaderStageNodeCreateInfoAMDX
+             pName' index
+
+instance Zero PipelineShaderStageNodeCreateInfoAMDX where
+  zero = PipelineShaderStageNodeCreateInfoAMDX
+           Nothing
+           zero
+
+
+-- | VkExecutionGraphPipelineScratchSizeAMDX - Structure describing the
+-- scratch space required to dispatch an execution graph
+--
+-- = Description
+--
+-- Applications /can/ use any amount of scratch memory greater than
+-- @minSize@ for dispatching a graph, however only the values equal to
+-- @minSize@ + an integer multiple of @sizeGranularity@ will be used.
+-- Greater values /may/ result in higher performance, up to @maxSize@ which
+-- indicates the most memory that an implementation can use effectively.
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMDX_shader_enqueue VK_AMDX_shader_enqueue>,
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'getExecutionGraphPipelineScratchSizeAMDX'
+data ExecutionGraphPipelineScratchSizeAMDX = ExecutionGraphPipelineScratchSizeAMDX
+  { -- | @minSize@ indicates the minimum scratch space required for dispatching
+    -- the queried execution graph.
+    minSize :: DeviceSize
+  , -- | @maxSize@ indicates the maximum scratch space that can be used for
+    -- dispatching the queried execution graph.
+    maxSize :: DeviceSize
+  , -- | @sizeGranularity@ indicates the granularity at which the scratch space
+    -- can be increased from @minSize@.
+    sizeGranularity :: DeviceSize
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (ExecutionGraphPipelineScratchSizeAMDX)
+#endif
+deriving instance Show ExecutionGraphPipelineScratchSizeAMDX
+
+instance ToCStruct ExecutionGraphPipelineScratchSizeAMDX where
+  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p ExecutionGraphPipelineScratchSizeAMDX{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_EXECUTION_GRAPH_PIPELINE_SCRATCH_SIZE_AMDX)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (minSize)
+    poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (maxSize)
+    poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (sizeGranularity)
+    f
+  cStructSize = 40
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_EXECUTION_GRAPH_PIPELINE_SCRATCH_SIZE_AMDX)
+    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 ExecutionGraphPipelineScratchSizeAMDX where
+  peekCStruct p = do
+    minSize <- peek @DeviceSize ((p `plusPtr` 16 :: Ptr DeviceSize))
+    maxSize <- peek @DeviceSize ((p `plusPtr` 24 :: Ptr DeviceSize))
+    sizeGranularity <- peek @DeviceSize ((p `plusPtr` 32 :: Ptr DeviceSize))
+    pure $ ExecutionGraphPipelineScratchSizeAMDX
+             minSize maxSize sizeGranularity
+
+instance Storable ExecutionGraphPipelineScratchSizeAMDX where
+  sizeOf ~_ = 40
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero ExecutionGraphPipelineScratchSizeAMDX where
+  zero = ExecutionGraphPipelineScratchSizeAMDX
+           zero
+           zero
+           zero
+
+
+-- | VkDispatchGraphInfoAMDX - Structure specifying node parameters for
+-- execution graph dispatch
+--
+-- = Description
+--
+-- Whether @payloads@ is consumed as a device or host pointer is defined by
+-- the command this structure is used in.
+--
+-- == Valid Usage
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMDX_shader_enqueue VK_AMDX_shader_enqueue>,
+-- 'DeviceOrHostAddressConstAMDX', 'DispatchGraphCountInfoAMDX'
+data DispatchGraphInfoAMDX = DispatchGraphInfoAMDX
+  { -- | @nodeIndex@ is the index of a node in an execution graph to be
+    -- dispatched.
+    nodeIndex :: Word32
+  , -- | @payloadCount@ is the number of payloads to dispatch for the specified
+    -- node.
+    --
+    -- #VUID-VkDispatchGraphInfoAMDX-payloadCount-09171# @payloadCount@ /must/
+    -- be no greater than
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxExecutionGraphShaderPayloadCount maxExecutionGraphShaderPayloadCount>
     payloadCount :: Word32
   , -- | @payloads@ is a device or host address pointer to a flat array of
     -- payloads with size equal to the product of @payloadCount@ and
diff --git a/src/Vulkan/Extensions/VK_AMDX_shader_enqueue.hs-boot b/src/Vulkan/Extensions/VK_AMDX_shader_enqueue.hs-boot
--- a/src/Vulkan/Extensions/VK_AMDX_shader_enqueue.hs-boot
+++ b/src/Vulkan/Extensions/VK_AMDX_shader_enqueue.hs-boot
@@ -45,14 +45,12 @@
 --
 -- [__API Interactions__]
 --
+--     -   Interacts with VK_VERSION_1_4
+--
 --     -   Interacts with VK_EXT_mesh_shader
 --
 --     -   Interacts with VK_KHR_maintenance5
 --
--- [__SPIR-V Dependencies__]
---
---     -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/AMDX/SPV_AMDX_shader_enqueue.html SPV_AMDX_shader_enqueue>
---
 -- [__Contact__]
 --
 --     -   Tobias Hector
@@ -136,7 +134,8 @@
 --
 --     -   'PhysicalDeviceShaderEnqueuePropertiesAMDX'
 --
--- -   Extending 'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo':
+-- -   Extending
+--     'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo':
 --
 --     -   'PipelineShaderStageNodeCreateInfoAMDX'
 --
@@ -175,17 +174,19 @@
 --
 -- If
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance5 VK_KHR_maintenance5>
+-- or
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.4 Vulkan Version 1.4>
 -- is supported:
 --
 -- -   Extending
---     'Vulkan.Extensions.VK_KHR_maintenance5.BufferUsageFlagBits2KHR':
+--     'Vulkan.Core14.Enums.BufferUsageFlags2.BufferUsageFlagBits2':
 --
---     -   'Vulkan.Extensions.VK_KHR_maintenance5.BUFFER_USAGE_2_EXECUTION_GRAPH_SCRATCH_BIT_AMDX'
+--     -   'Vulkan.Core14.Enums.BufferUsageFlags2.BUFFER_USAGE_2_EXECUTION_GRAPH_SCRATCH_BIT_AMDX'
 --
 -- -   Extending
---     'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlagBits2KHR':
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PipelineCreateFlagBits2':
 --
---     -   'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_EXECUTION_GRAPH_BIT_AMDX'
+--     -   'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_EXECUTION_GRAPH_BIT_AMDX'
 --
 -- == Version History
 --
@@ -204,7 +205,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_AMDX_shader_enqueue Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_AMDX_shader_enqueue Vulkan Specification>.
 --
 -- This 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_anti_lag.hs b/src/Vulkan/Extensions/VK_AMD_anti_lag.hs
--- a/src/Vulkan/Extensions/VK_AMD_anti_lag.hs
+++ b/src/Vulkan/Extensions/VK_AMD_anti_lag.hs
@@ -21,7 +21,9 @@
 --     Not ratified
 --
 -- [__Extension and Version Dependencies__]
---     None
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
 --
 -- [__Contact__]
 --
@@ -104,7 +106,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_AMD_anti_lag Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_AMD_anti_lag Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -191,7 +193,7 @@
 --
 -- This command should be executed immediately before the application
 -- processes user input. If @pData@ is not @NULL@ and
--- 'AntiLagDataAMD'::@presentationInfo@ is not @NULL@, this command
+-- 'AntiLagDataAMD'::@pPresentationInfo@ is not @NULL@, this command
 -- /should/ be executed again before
 -- 'Vulkan.Extensions.VK_KHR_swapchain.queuePresentKHR', with
 -- @pPresentationInfo@ set to matching values.
@@ -199,7 +201,7 @@
 -- == Valid Usage
 --
 -- -   #VUID-vkAntiLagUpdateAMD-antiLag-10061# The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-antiLag antiLag>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-antiLag antiLag>
 --     feature /must/ be enabled
 --
 -- == Valid Usage (Implicit)
@@ -249,12 +251,22 @@
 -- 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. 'PhysicalDeviceAntiLagFeaturesAMD' /can/ also be used in the
--- @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to selectively
--- enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceAntiLagFeaturesAMD', it /must/ add an instance of the
+-- structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_anti_lag VK_AMD_anti_lag>,
@@ -457,6 +469,15 @@
 
 -- | VkAntiLagModeAMD - Set the status of the anti-lag feature
 --
+-- = Description
+--
+-- -   'ANTI_LAG_MODE_DRIVER_CONTROL_AMD' specifies that anti-lag will be
+--     enabled or disabled depending on driver settings.
+--
+-- -   'ANTI_LAG_MODE_ON_AMD' specifies that anti-lag will be enabled.
+--
+-- -   'ANTI_LAG_MODE_OFF_AMD' specifies that anti-lag will be disabled.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_anti_lag VK_AMD_anti_lag>,
@@ -464,14 +485,13 @@
 newtype AntiLagModeAMD = AntiLagModeAMD Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'ANTI_LAG_MODE_DRIVER_CONTROL_AMD' specifies that anti-lag will be
--- enabled or disabled depending on driver settings.
+-- No documentation found for Nested "VkAntiLagModeAMD" "VK_ANTI_LAG_MODE_DRIVER_CONTROL_AMD"
 pattern ANTI_LAG_MODE_DRIVER_CONTROL_AMD = AntiLagModeAMD 0
 
--- | 'ANTI_LAG_MODE_ON_AMD' specifies that anti-lag will be enabled.
+-- No documentation found for Nested "VkAntiLagModeAMD" "VK_ANTI_LAG_MODE_ON_AMD"
 pattern ANTI_LAG_MODE_ON_AMD = AntiLagModeAMD 1
 
--- | 'ANTI_LAG_MODE_OFF_AMD' specifies that anti-lag will be disabled.
+-- No documentation found for Nested "VkAntiLagModeAMD" "VK_ANTI_LAG_MODE_OFF_AMD"
 pattern ANTI_LAG_MODE_OFF_AMD = AntiLagModeAMD 2
 
 {-# COMPLETE
@@ -516,6 +536,14 @@
 
 -- | VkAntiLagStageAMD - Report the application stage
 --
+-- = Description
+--
+-- -   'ANTI_LAG_STAGE_INPUT_AMD' specifies the stage before processing
+--     input.
+--
+-- -   'ANTI_LAG_STAGE_PRESENT_AMD' specifies the stage before
+--     'Vulkan.Extensions.VK_KHR_swapchain.queuePresentKHR'.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_anti_lag VK_AMD_anti_lag>,
@@ -523,11 +551,10 @@
 newtype AntiLagStageAMD = AntiLagStageAMD Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'ANTI_LAG_STAGE_INPUT_AMD' specifies the stage before processing input.
+-- No documentation found for Nested "VkAntiLagStageAMD" "VK_ANTI_LAG_STAGE_INPUT_AMD"
 pattern ANTI_LAG_STAGE_INPUT_AMD = AntiLagStageAMD 0
 
--- | 'ANTI_LAG_STAGE_PRESENT_AMD' specifies the stage before
--- 'Vulkan.Extensions.VK_KHR_swapchain.queuePresentKHR'.
+-- No documentation found for Nested "VkAntiLagStageAMD" "VK_ANTI_LAG_STAGE_PRESENT_AMD"
 pattern ANTI_LAG_STAGE_PRESENT_AMD = AntiLagStageAMD 1
 
 {-# COMPLETE
diff --git a/src/Vulkan/Extensions/VK_AMD_anti_lag.hs-boot b/src/Vulkan/Extensions/VK_AMD_anti_lag.hs-boot
--- a/src/Vulkan/Extensions/VK_AMD_anti_lag.hs-boot
+++ b/src/Vulkan/Extensions/VK_AMD_anti_lag.hs-boot
@@ -21,7 +21,9 @@
 --     Not ratified
 --
 -- [__Extension and Version Dependencies__]
---     None
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
 --
 -- [__Contact__]
 --
@@ -104,7 +106,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_AMD_anti_lag Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_AMD_anti_lag Vulkan Specification>.
 --
 -- This 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_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
@@ -98,7 +98,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_AMD_buffer_marker Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -148,22 +148,43 @@
 --
 -- = 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 'cmdWriteBufferMarkerAMD' commands so long as their specified
--- pipeline stages occur either at the same time or earlier than this
--- command’s specified @pipelineStage@.
+-- When 'cmdWriteBufferMarkerAMD' is submitted to a queue, it defines an
+-- execution dependency between prior operations and writing the marker
+-- value, as well as a memory dependency from earlier
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#copies-buffer-markers buffer marker write commands>.
 --
--- While consecutive buffer marker writes with the same @pipelineStage@
--- parameter are implicitly complete in submission order, memory and
--- execution dependencies between buffer marker writes and other operations
--- /must/ still be explicitly ordered using synchronization commands. The
--- access scope for buffer marker writes falls under the
--- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_TRANSFER_WRITE_BIT', and the
--- pipeline stages for identifying the synchronization scope /must/ include
--- both @pipelineStage@ and
+-- The first
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+-- includes operations performed by operations that occur earlier in
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-submission-order submission order>
+-- in the pipeline stage identified by @pipelineStage@. It additionally
+-- includes other
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#copies-buffer-markers buffer marker write commands>
+-- that occur earlier in
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-submission-order submission order>
+-- that specified either the same @pipelineStage@ or a stage that is
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-pipeline-stages-order logically earlier>.
+--
+-- The second
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+-- includes only the buffer marker write.
+--
+-- The first
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
+-- includes only accesses performed by other
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#copies-buffer-markers buffer marker write commands>.
+--
+-- The second
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
+-- is empty.
+--
+-- The access scope for buffer marker writes falls under the
+-- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_TRANSFER_WRITE_BIT' flag, and
+-- is performed by either @pipelineStage@ or
 -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFER_BIT'.
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization Synchronization commands>
+-- should specify this access flag and both pipeline stages when defining
+-- dependencies with this command.
 --
 -- Similar to 'Vulkan.Core10.CommandBufferBuilding.cmdWriteTimestamp', if
 -- an implementation is unable to write a marker at any specific pipeline
@@ -243,9 +264,9 @@
 --     be less than or equal to the size of @dstBuffer@ minus @4@
 --
 -- -   #VUID-vkCmdWriteBufferMarkerAMD-dstBuffer-01799# @dstBuffer@ /must/
---     have been created with
+--     have been created with the
 --     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_DST_BIT'
---     usage flag
+--     usage flag set
 --
 -- -   #VUID-vkCmdWriteBufferMarkerAMD-dstBuffer-01800# If @dstBuffer@ is
 --     non-sparse then it /must/ be bound completely and contiguously to a
@@ -274,9 +295,14 @@
 --
 -- -   #VUID-vkCmdWriteBufferMarkerAMD-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support transfer, graphics, or compute
---     operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT',
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT', or
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_TRANSFER_BIT' operations
 --
+-- -   #VUID-vkCmdWriteBufferMarkerAMD-suspended# This command /must/ not
+--     be called between suspended render pass instances
+--
 -- -   #VUID-vkCmdWriteBufferMarkerAMD-videocoding# This command /must/
 --     only be called outside of a video coding scope
 --
@@ -298,11 +324,16 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Transfer                                                                                                              | Action                                                                                                                                 |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | Graphics                                                                                                              |                                                                                                                                        |
--- |                                                                                                                            |                                                                                                                        |                                                                                                                             | Compute                                                                                                               |                                                                                                                                        |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | VK_QUEUE_GRAPHICS_BIT                                                                                                 |                                                                                                                                        |
+-- |                                                                                                                            |                                                                                                                        |                                                                                                                             | VK_QUEUE_TRANSFER_BIT                                                                                                 |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdWriteBufferMarkerAMD is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_buffer_marker VK_AMD_buffer_marker>,
@@ -357,22 +388,43 @@
 --
 -- = 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@.
+-- When 'cmdWriteBufferMarker2AMD' is submitted to a queue, it defines an
+-- execution dependency between prior operations and writing the marker
+-- value, as well as a memory dependency from earlier
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#copies-buffer-markers buffer marker write commands>.
 --
--- 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
+-- The first
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+-- includes operations performed by operations that occur earlier in
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-submission-order submission order>
+-- in the pipeline stage identified by @pipelineStage@. It additionally
+-- includes other
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#copies-buffer-markers buffer marker write commands>
+-- that occur earlier in
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-submission-order submission order>
+-- that specified either the same @pipelineStage@ or a stage that is
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-pipeline-stages-order logically earlier>.
+--
+-- The second
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+-- includes only the buffer marker write.
+--
+-- The first
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
+-- includes only accesses performed by other
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#copies-buffer-markers buffer marker write commands>.
+--
+-- The second
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
+-- is empty.
+--
+-- The access scope for buffer marker writes falls under the
+-- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_TRANSFER_WRITE_BIT' flag, and
+-- is performed by either @pipelineStage@ or
 -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFER_BIT'.
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization Synchronization commands>
+-- should specify this access flag and both pipeline stages when defining
+-- dependencies with this command.
 --
 -- Similar to
 -- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.cmdWriteTimestamp2',
@@ -446,8 +498,23 @@
 --     feature are enabled, @stage@ /must/ not contain
 --     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR'
 --
+-- -   #VUID-vkCmdWriteBufferMarker2AMD-stage-10751# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-accelerationStructure accelerationStructure>
+--     feature is not enabled, @stage@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
+--
+-- -   #VUID-vkCmdWriteBufferMarker2AMD-stage-10752# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayTracingMaintenance1 rayTracingMaintenance1>
+--     feature is not enabled, @stage@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR'
+--
+-- -   #VUID-vkCmdWriteBufferMarker2AMD-stage-11541# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-micromapEXT ::micromap>
+--     feature is not enabled, @stage@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT'
+--
 -- -   #VUID-vkCmdWriteBufferMarker2AMD-synchronization2-03893# The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-synchronization2 synchronization2>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-synchronization2 synchronization2>
 --     feature /must/ be enabled
 --
 -- -   #VUID-vkCmdWriteBufferMarker2AMD-stage-03894# @stage@ /must/ include
@@ -463,7 +530,7 @@
 -- -   #VUID-vkCmdWriteBufferMarker2AMD-dstBuffer-03897# @dstBuffer@ /must/
 --     have been created with the
 --     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_DST_BIT'
---     usage flag
+--     usage flag set
 --
 -- -   #VUID-vkCmdWriteBufferMarker2AMD-dstBuffer-03898# If @dstBuffer@ is
 --     non-sparse then it /must/ be bound completely and contiguously to a
@@ -492,9 +559,14 @@
 --
 -- -   #VUID-vkCmdWriteBufferMarker2AMD-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support transfer, graphics, or compute
---     operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT',
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT', or
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_TRANSFER_BIT' operations
 --
+-- -   #VUID-vkCmdWriteBufferMarker2AMD-suspended# This command /must/ not
+--     be called between suspended render pass instances
+--
 -- -   #VUID-vkCmdWriteBufferMarker2AMD-videocoding# This command /must/
 --     only be called outside of a video coding scope
 --
@@ -516,10 +588,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Transfer                                                                                                              | Action                                                                                                                                 |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | Graphics                                                                                                              |                                                                                                                                        |
--- |                                                                                                                            |                                                                                                                        |                                                                                                                             | Compute                                                                                                               |                                                                                                                                        |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | VK_QUEUE_GRAPHICS_BIT                                                                                                 |                                                                                                                                        |
+-- |                                                                                                                            |                                                                                                                        |                                                                                                                             | VK_QUEUE_TRANSFER_BIT                                                                                                 |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdWriteBufferMarker2AMD is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
 --
 -- = See Also
 --
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
@@ -93,7 +93,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_AMD_device_coherent_memory Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -141,11 +141,21 @@
 -- structure passed to
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
 -- it is filled in to indicate whether each corresponding feature is
--- supported. 'PhysicalDeviceCoherentMemoryFeaturesAMD' /can/ also be used
--- in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceCoherentMemoryFeaturesAMD', it /must/ add an instance of
+-- the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
 --
 -- = See Also
 --
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
@@ -93,7 +93,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_AMD_device_coherent_memory Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -123,7 +123,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_AMD_display_native_hdr Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -237,8 +237,12 @@
 -- | VkDisplayNativeHdrSurfaceCapabilitiesAMD - Structure describing display
 -- native HDR specific capabilities of a surface
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.SurfaceCapabilities2KHR'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_display_native_hdr VK_AMD_display_native_hdr>,
@@ -306,6 +310,12 @@
 -- -   #VUID-VkSwapchainDisplayNativeHdrCreateInfoAMD-sType-sType# @sType@
 --     /must/ be
 --     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD'
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR'
 --
 -- == Valid Usage
 --
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
@@ -123,7 +123,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_AMD_display_native_hdr Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_AMD_draw_indirect_count Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -81,7 +81,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_AMD_gcn_shader Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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_gpa_interface.hs b/src/Vulkan/Extensions/VK_AMD_gpa_interface.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_AMD_gpa_interface.hs
@@ -0,0 +1,3007 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_AMD_gpa_interface - device extension
+--
+-- = VK_AMD_gpa_interface
+--
+-- [__Name String__]
+--     @VK_AMD_gpa_interface@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     134
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Not ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
+--
+-- [__Contact__]
+--
+--     -   Stu Smith
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_AMD_gpa_interface] @stu-s%0A*Here describe the issue or question you have about the VK_AMD_gpa_interface extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_AMD_gpa_interface.adoc VK_AMD_gpa_interface>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2026-05-01
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Contributors__]
+--
+--     -   Stu Smith, AMD
+--
+--     -   Tobias Hector, AMD
+--
+--     -   Noah Fredriks, AMD
+--
+--     -   Peter Lohrmann, AMD
+--
+--     -   Maciej Dziuban, AMD
+--
+-- == Description
+--
+-- This extension adds GPU Performance API (GPA) interface support for
+-- accessing GPU global performance counters, streaming performance
+-- monitors (SPM), and thread traces (SQTT), on AMD Radeon™ GPUs.
+--
+-- == New Object Types
+--
+-- -   'Vulkan.Extensions.Handles.GpaSessionAMD'
+--
+-- == New Commands
+--
+-- -   'cmdBeginGpaSampleAMD'
+--
+-- -   'cmdBeginGpaSessionAMD'
+--
+-- -   'cmdCopyGpaSessionResultsAMD'
+--
+-- -   'cmdEndGpaSampleAMD'
+--
+-- -   'cmdEndGpaSessionAMD'
+--
+-- -   'createGpaSessionAMD'
+--
+-- -   'destroyGpaSessionAMD'
+--
+-- -   'getGpaDeviceClockInfoAMD'
+--
+-- -   'getGpaSessionResultsAMD'
+--
+-- -   'getGpaSessionStatusAMD'
+--
+-- -   'resetGpaSessionAMD'
+--
+-- -   'setGpaDeviceClockModeAMD'
+--
+-- == New Structures
+--
+-- -   'GpaDeviceClockModeInfoAMD'
+--
+-- -   'GpaDeviceGetClockInfoAMD'
+--
+-- -   'GpaPerfBlockPropertiesAMD'
+--
+-- -   'GpaPerfCounterAMD'
+--
+-- -   'GpaSampleBeginInfoAMD'
+--
+-- -   'GpaSessionCreateInfoAMD'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceGpaFeaturesAMD'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDeviceGpaProperties2AMD'
+--
+--     -   'PhysicalDeviceGpaPropertiesAMD'
+--
+-- == New Enums
+--
+-- -   'GpaDeviceClockModeAMD'
+--
+-- -   'GpaPerfBlockAMD'
+--
+-- -   'GpaSampleTypeAMD'
+--
+-- -   'GpaSqShaderStageFlagBitsAMD'
+--
+-- == New Bitmasks
+--
+-- -   'GpaPerfBlockPropertiesFlagsAMD'
+--
+-- -   'GpaSqShaderStageFlagsAMD'
+--
+-- -   'PhysicalDeviceGpaPropertiesFlagsAMD'
+--
+-- == New Enum Constants
+--
+-- -   'AMD_GPA_INTERFACE_EXTENSION_NAME'
+--
+-- -   'AMD_GPA_INTERFACE_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.ObjectType.ObjectType':
+--
+--     -   'Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_GPA_SESSION_AMD'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GPA_DEVICE_CLOCK_MODE_INFO_AMD'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GPA_DEVICE_GET_CLOCK_INFO_AMD'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GPA_SAMPLE_BEGIN_INFO_AMD'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GPA_SESSION_CREATE_INFO_AMD'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_GPA_FEATURES_AMD'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_GPA_PROPERTIES_2_AMD'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_GPA_PROPERTIES_AMD'
+--
+-- == Version History
+--
+-- -   Revision 1, 2026-05-01 (Stu Smith)
+--
+--     -   Initial revision
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_AMD_gpa_interface Vulkan Specification>.
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_AMD_gpa_interface  ( createGpaSessionAMD
+                                               , withGpaSessionAMD
+                                               , destroyGpaSessionAMD
+                                               , setGpaDeviceClockModeAMD
+                                               , getGpaDeviceClockInfoAMD
+                                               , cmdBeginGpaSessionAMD
+                                               , cmdEndGpaSessionAMD
+                                               , cmdBeginGpaSampleAMD
+                                               , cmdEndGpaSampleAMD
+                                               , getGpaSessionStatusAMD
+                                               , getGpaSessionResultsAMD
+                                               , resetGpaSessionAMD
+                                               , cmdCopyGpaSessionResultsAMD
+                                               , pattern GPA_PERF_BLOCK_GE1_AMD
+                                               , pattern GPA_PERF_BLOCK_RLCLOCAL_AMD
+                                               , GpaPerfBlockPropertiesAMD(..)
+                                               , PhysicalDeviceGpaFeaturesAMD(..)
+                                               , PhysicalDeviceGpaPropertiesAMD(..)
+                                               , PhysicalDeviceGpaProperties2AMD(..)
+                                               , GpaPerfCounterAMD(..)
+                                               , GpaSampleBeginInfoAMD(..)
+                                               , GpaDeviceClockModeInfoAMD(..)
+                                               , GpaDeviceGetClockInfoAMD(..)
+                                               , GpaSessionCreateInfoAMD(..)
+                                               , GpaPerfBlockPropertiesFlagsAMD(..)
+                                               , PhysicalDeviceGpaPropertiesFlagsAMD(..)
+                                               , GpaSqShaderStageFlagsAMD
+                                               , GpaSqShaderStageFlagBitsAMD( GPA_SQ_SHADER_STAGE_PS_BIT_AMD
+                                                                            , GPA_SQ_SHADER_STAGE_VS_BIT_AMD
+                                                                            , GPA_SQ_SHADER_STAGE_GS_BIT_AMD
+                                                                            , GPA_SQ_SHADER_STAGE_ES_BIT_AMD
+                                                                            , GPA_SQ_SHADER_STAGE_HS_BIT_AMD
+                                                                            , GPA_SQ_SHADER_STAGE_LS_BIT_AMD
+                                                                            , GPA_SQ_SHADER_STAGE_CS_BIT_AMD
+                                                                            , ..
+                                                                            )
+                                               , GpaPerfBlockAMD( GPA_PERF_BLOCK_CPF_AMD
+                                                                , GPA_PERF_BLOCK_IA_AMD
+                                                                , GPA_PERF_BLOCK_VGT_AMD
+                                                                , GPA_PERF_BLOCK_PA_AMD
+                                                                , GPA_PERF_BLOCK_SC_AMD
+                                                                , GPA_PERF_BLOCK_SPI_AMD
+                                                                , GPA_PERF_BLOCK_SQ_AMD
+                                                                , GPA_PERF_BLOCK_SX_AMD
+                                                                , GPA_PERF_BLOCK_TA_AMD
+                                                                , GPA_PERF_BLOCK_TD_AMD
+                                                                , GPA_PERF_BLOCK_TCP_AMD
+                                                                , GPA_PERF_BLOCK_TCC_AMD
+                                                                , GPA_PERF_BLOCK_TCA_AMD
+                                                                , GPA_PERF_BLOCK_DB_AMD
+                                                                , GPA_PERF_BLOCK_CB_AMD
+                                                                , GPA_PERF_BLOCK_GDS_AMD
+                                                                , GPA_PERF_BLOCK_SRBM_AMD
+                                                                , GPA_PERF_BLOCK_GRBM_AMD
+                                                                , GPA_PERF_BLOCK_GRBM_SE_AMD
+                                                                , GPA_PERF_BLOCK_RLC_AMD
+                                                                , GPA_PERF_BLOCK_DMA_AMD
+                                                                , GPA_PERF_BLOCK_MC_AMD
+                                                                , GPA_PERF_BLOCK_CPG_AMD
+                                                                , GPA_PERF_BLOCK_CPC_AMD
+                                                                , GPA_PERF_BLOCK_WD_AMD
+                                                                , GPA_PERF_BLOCK_TCS_AMD
+                                                                , GPA_PERF_BLOCK_ATC_AMD
+                                                                , GPA_PERF_BLOCK_ATC_L2_AMD
+                                                                , GPA_PERF_BLOCK_MC_VM_L2_AMD
+                                                                , GPA_PERF_BLOCK_EA_AMD
+                                                                , GPA_PERF_BLOCK_RPB_AMD
+                                                                , GPA_PERF_BLOCK_RMI_AMD
+                                                                , GPA_PERF_BLOCK_UMCCH_AMD
+                                                                , GPA_PERF_BLOCK_GE_AMD
+                                                                , GPA_PERF_BLOCK_GL1A_AMD
+                                                                , GPA_PERF_BLOCK_GL1C_AMD
+                                                                , GPA_PERF_BLOCK_GL1CG_AMD
+                                                                , GPA_PERF_BLOCK_GL2A_AMD
+                                                                , GPA_PERF_BLOCK_GL2C_AMD
+                                                                , GPA_PERF_BLOCK_CHA_AMD
+                                                                , GPA_PERF_BLOCK_CHC_AMD
+                                                                , GPA_PERF_BLOCK_CHCG_AMD
+                                                                , GPA_PERF_BLOCK_GUS_AMD
+                                                                , GPA_PERF_BLOCK_GCR_AMD
+                                                                , GPA_PERF_BLOCK_PH_AMD
+                                                                , GPA_PERF_BLOCK_UTCL1_AMD
+                                                                , GPA_PERF_BLOCK_GE_DIST_AMD
+                                                                , GPA_PERF_BLOCK_GE_SE_AMD
+                                                                , GPA_PERF_BLOCK_DF_MALL_AMD
+                                                                , GPA_PERF_BLOCK_SQ_WGP_AMD
+                                                                , GPA_PERF_BLOCK_PC_AMD
+                                                                , GPA_PERF_BLOCK_GL1XA_AMD
+                                                                , GPA_PERF_BLOCK_GL1XC_AMD
+                                                                , GPA_PERF_BLOCK_WGS_AMD
+                                                                , GPA_PERF_BLOCK_EACPWD_AMD
+                                                                , GPA_PERF_BLOCK_EASE_AMD
+                                                                , GPA_PERF_BLOCK_RLCUSER_AMD
+                                                                , ..
+                                                                )
+                                               , GpaSampleTypeAMD( GPA_SAMPLE_TYPE_CUMULATIVE_AMD
+                                                                 , GPA_SAMPLE_TYPE_TRACE_AMD
+                                                                 , GPA_SAMPLE_TYPE_TIMING_AMD
+                                                                 , ..
+                                                                 )
+                                               , GpaDeviceClockModeAMD( GPA_DEVICE_CLOCK_MODE_DEFAULT_AMD
+                                                                      , GPA_DEVICE_CLOCK_MODE_QUERY_AMD
+                                                                      , GPA_DEVICE_CLOCK_MODE_PROFILING_AMD
+                                                                      , GPA_DEVICE_CLOCK_MODE_MIN_MEMORY_AMD
+                                                                      , GPA_DEVICE_CLOCK_MODE_MIN_ENGINE_AMD
+                                                                      , GPA_DEVICE_CLOCK_MODE_PEAK_AMD
+                                                                      , ..
+                                                                      )
+                                               , AMD_GPA_INTERFACE_SPEC_VERSION
+                                               , pattern AMD_GPA_INTERFACE_SPEC_VERSION
+                                               , AMD_GPA_INTERFACE_EXTENSION_NAME
+                                               , pattern AMD_GPA_INTERFACE_EXTENSION_NAME
+                                               , GpaSessionAMD(..)
+                                               ) where
+
+import Data.Bits (Bits)
+import Data.Bits (FiniteBits)
+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 GHC.Show (showsPrec)
+import Numeric (showHex)
+import Data.Coerce (coerce)
+import Control.Monad.Trans.Class (lift)
+import Control.Monad.Trans.Cont (evalContT)
+import Data.Vector (generateM)
+import qualified Data.Vector (imapM_)
+import qualified Data.Vector (length)
+import Foreign.C.Types (CSize(..))
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (FromCStruct(..))
+import Vulkan.CStruct (ToCStruct)
+import Vulkan.CStruct (ToCStruct(..))
+import Vulkan.Zero (Zero)
+import Vulkan.Zero (Zero(..))
+import Control.Monad.IO.Class (MonadIO)
+import Data.String (IsString)
+import Data.Typeable (Typeable)
+import Foreign.C.Types (CFloat)
+import Foreign.C.Types (CFloat(..))
+import Foreign.C.Types (CFloat(CFloat))
+import Foreign.C.Types (CSize)
+import Foreign.C.Types (CSize(..))
+import Foreign.Storable (Storable)
+import Foreign.Storable (Storable(peek))
+import Foreign.Storable (Storable(poke))
+import qualified Foreign.Storable (Storable(..))
+import GHC.Generics (Generic)
+import GHC.IO.Exception (IOErrorType(..))
+import GHC.IO.Exception (IOException(..))
+import Data.Int (Int32)
+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.NamedType ((:::))
+import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.Core10.Handles (CommandBuffer)
+import Vulkan.Core10.Handles (CommandBuffer(..))
+import Vulkan.Core10.Handles (CommandBuffer(CommandBuffer))
+import Vulkan.Core10.Handles (CommandBuffer_T)
+import Vulkan.Core10.Handles (Device)
+import Vulkan.Core10.Handles (Device(..))
+import Vulkan.Core10.Handles (Device(Device))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdBeginGpaSampleAMD))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdBeginGpaSessionAMD))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdCopyGpaSessionResultsAMD))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdEndGpaSampleAMD))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdEndGpaSessionAMD))
+import Vulkan.Dynamic (DeviceCmds(pVkCreateGpaSessionAMD))
+import Vulkan.Dynamic (DeviceCmds(pVkDestroyGpaSessionAMD))
+import Vulkan.Dynamic (DeviceCmds(pVkGetGpaDeviceClockInfoAMD))
+import Vulkan.Dynamic (DeviceCmds(pVkGetGpaSessionResultsAMD))
+import Vulkan.Dynamic (DeviceCmds(pVkGetGpaSessionStatusAMD))
+import Vulkan.Dynamic (DeviceCmds(pVkResetGpaSessionAMD))
+import Vulkan.Dynamic (DeviceCmds(pVkSetGpaDeviceClockModeAMD))
+import Vulkan.Core10.FundamentalTypes (DeviceSize)
+import Vulkan.Core10.Handles (Device_T)
+import Vulkan.Core10.FundamentalTypes (Flags)
+import Vulkan.Extensions.Handles (GpaSessionAMD)
+import Vulkan.Extensions.Handles (GpaSessionAMD(..))
+import Vulkan.Core10.Enums.PipelineStageFlagBits (PipelineStageFlags)
+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_GPA_DEVICE_CLOCK_MODE_INFO_AMD))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_GPA_DEVICE_GET_CLOCK_INFO_AMD))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_GPA_SAMPLE_BEGIN_INFO_AMD))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_GPA_SESSION_CREATE_INFO_AMD))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_GPA_FEATURES_AMD))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_GPA_PROPERTIES_2_AMD))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_GPA_PROPERTIES_AMD))
+import Vulkan.Core10.Enums.Result (Result(SUCCESS))
+import Vulkan.Extensions.Handles (GpaSessionAMD(..))
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCreateGpaSessionAMD
+  :: FunPtr (Ptr Device_T -> Ptr GpaSessionCreateInfoAMD -> Ptr AllocationCallbacks -> Ptr GpaSessionAMD -> IO Result) -> Ptr Device_T -> Ptr GpaSessionCreateInfoAMD -> Ptr AllocationCallbacks -> Ptr GpaSessionAMD -> IO Result
+
+-- | vkCreateGpaSessionAMD - Create a new GPA session object
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCreateGpaSessionAMD-device-parameter# @device@ /must/ be a
+--     valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkCreateGpaSessionAMD-pCreateInfo-parameter# @pCreateInfo@
+--     /must/ be a valid pointer to a valid 'GpaSessionCreateInfoAMD'
+--     structure
+--
+-- -   #VUID-vkCreateGpaSessionAMD-pAllocator-parameter# If @pAllocator@ is
+--     not @NULL@, @pAllocator@ /must/ be a valid pointer to a valid
+--     'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' structure
+--
+-- -   #VUID-vkCreateGpaSessionAMD-pGpaSession-parameter# @pGpaSession@
+--     /must/ be a valid pointer to a
+--     'Vulkan.Extensions.Handles.GpaSessionAMD' handle
+--
+-- -   #VUID-vkCreateGpaSessionAMD-device-queuecount# The device /must/
+--     have been created with at least @1@ queue
+--
+-- == 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_DEVICE_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_gpa_interface VK_AMD_gpa_interface>,
+-- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',
+-- 'Vulkan.Core10.Handles.Device',
+-- 'Vulkan.Extensions.Handles.GpaSessionAMD', 'GpaSessionCreateInfoAMD'
+createGpaSessionAMD :: forall io
+                     . (MonadIO io)
+                    => -- | @device@ is the logical device that creates the GPA session object.
+                       Device
+                    -> -- | @pCreateInfo@ is a pointer to a 'GpaSessionCreateInfoAMD' structure
+                       -- containing information about how the GPA session object is to be
+                       -- created.
+                       GpaSessionCreateInfoAMD
+                    -> -- | @pAllocator@ controls host memory allocation as described in the
+                       -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
+                       -- chapter.
+                       ("allocator" ::: Maybe AllocationCallbacks)
+                    -> io (GpaSessionAMD)
+createGpaSessionAMD device createInfo allocator = liftIO . evalContT $ do
+  let vkCreateGpaSessionAMDPtr = pVkCreateGpaSessionAMD (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCreateGpaSessionAMDPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCreateGpaSessionAMD is null" Nothing Nothing
+  let vkCreateGpaSessionAMD' = mkVkCreateGpaSessionAMD vkCreateGpaSessionAMDPtr
+  pCreateInfo <- ContT $ withCStruct (createInfo)
+  pAllocator <- case (allocator) of
+    Nothing -> pure nullPtr
+    Just j -> ContT $ withCStruct (j)
+  pPGpaSession <- ContT $ bracket (callocBytes @GpaSessionAMD 8) free
+  r <- lift $ traceAroundEvent "vkCreateGpaSessionAMD" (vkCreateGpaSessionAMD'
+                                                          (deviceHandle (device))
+                                                          pCreateInfo
+                                                          pAllocator
+                                                          (pPGpaSession))
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+  pGpaSession <- lift $ peek @GpaSessionAMD pPGpaSession
+  pure $ (pGpaSession)
+
+-- | A convenience wrapper to make a compatible pair of calls to
+-- 'createGpaSessionAMD' and 'destroyGpaSessionAMD'
+--
+-- To ensure that 'destroyGpaSessionAMD' 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.
+--
+withGpaSessionAMD :: forall io r . MonadIO io => Device -> GpaSessionCreateInfoAMD -> Maybe AllocationCallbacks -> (io GpaSessionAMD -> (GpaSessionAMD -> io ()) -> r) -> r
+withGpaSessionAMD device pCreateInfo pAllocator b =
+  b (createGpaSessionAMD device pCreateInfo pAllocator)
+    (\(o0) -> destroyGpaSessionAMD device o0 pAllocator)
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkDestroyGpaSessionAMD
+  :: FunPtr (Ptr Device_T -> GpaSessionAMD -> Ptr AllocationCallbacks -> IO ()) -> Ptr Device_T -> GpaSessionAMD -> Ptr AllocationCallbacks -> IO ()
+
+-- | vkDestroyGpaSessionAMD - Destroy a GPA session object
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkDestroyGpaSessionAMD-gpaSession-12408# All submitted
+--     commands that refer to @gpaSession@ /must/ have completed execution
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkDestroyGpaSessionAMD-device-parameter# @device@ /must/ be a
+--     valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkDestroyGpaSessionAMD-gpaSession-parameter# If @gpaSession@
+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @gpaSession@ /must/
+--     be a valid 'Vulkan.Extensions.Handles.GpaSessionAMD' handle
+--
+-- -   #VUID-vkDestroyGpaSessionAMD-pAllocator-parameter# If @pAllocator@
+--     is not @NULL@, @pAllocator@ /must/ be a valid pointer to a valid
+--     'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' structure
+--
+-- -   #VUID-vkDestroyGpaSessionAMD-gpaSession-parent# If @gpaSession@ is a
+--     valid handle, it /must/ have been created, allocated, or retrieved
+--     from @device@
+--
+-- == Host Synchronization
+--
+-- -   Host access to @gpaSession@ /must/ be externally synchronized
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_gpa_interface VK_AMD_gpa_interface>,
+-- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',
+-- 'Vulkan.Core10.Handles.Device',
+-- 'Vulkan.Extensions.Handles.GpaSessionAMD'
+destroyGpaSessionAMD :: forall io
+                      . (MonadIO io)
+                     => -- | @device@ is the logical device that destroys the GPA session.
+                        Device
+                     -> -- | @gpaSession@ is the handle of the GPA session to destroy.
+                        GpaSessionAMD
+                     -> -- | @pAllocator@ controls host memory allocation as described in the
+                        -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
+                        -- chapter.
+                        ("allocator" ::: Maybe AllocationCallbacks)
+                     -> io ()
+destroyGpaSessionAMD device gpaSession allocator = liftIO . evalContT $ do
+  let vkDestroyGpaSessionAMDPtr = pVkDestroyGpaSessionAMD (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkDestroyGpaSessionAMDPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkDestroyGpaSessionAMD is null" Nothing Nothing
+  let vkDestroyGpaSessionAMD' = mkVkDestroyGpaSessionAMD vkDestroyGpaSessionAMDPtr
+  pAllocator <- case (allocator) of
+    Nothing -> pure nullPtr
+    Just j -> ContT $ withCStruct (j)
+  lift $ traceAroundEvent "vkDestroyGpaSessionAMD" (vkDestroyGpaSessionAMD'
+                                                      (deviceHandle (device))
+                                                      (gpaSession)
+                                                      pAllocator)
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkSetGpaDeviceClockModeAMD
+  :: FunPtr (Ptr Device_T -> Ptr GpaDeviceClockModeInfoAMD -> IO Result) -> Ptr Device_T -> Ptr GpaDeviceClockModeInfoAMD -> IO Result
+
+-- | vkSetGpaDeviceClockModeAMD - Setting a device clock
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkSetGpaDeviceClockModeAMD-clockModes-12415# The
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-clockModes ::clockModes>
+--     feature /must/ be enabled
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkSetGpaDeviceClockModeAMD-device-parameter# @device@ /must/
+--     be a valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkSetGpaDeviceClockModeAMD-pInfo-parameter# @pInfo@ /must/ be
+--     a valid pointer to a 'GpaDeviceClockModeInfoAMD' structure
+--
+-- == 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_DEVICE_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_gpa_interface VK_AMD_gpa_interface>,
+-- 'Vulkan.Core10.Handles.Device', 'GpaDeviceClockModeInfoAMD'
+setGpaDeviceClockModeAMD :: forall io
+                          . (MonadIO io)
+                         => -- | @device@ is the logical device that sets the clocks.
+                            Device
+                         -> io (GpaDeviceClockModeInfoAMD)
+setGpaDeviceClockModeAMD device = liftIO . evalContT $ do
+  let vkSetGpaDeviceClockModeAMDPtr = pVkSetGpaDeviceClockModeAMD (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkSetGpaDeviceClockModeAMDPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkSetGpaDeviceClockModeAMD is null" Nothing Nothing
+  let vkSetGpaDeviceClockModeAMD' = mkVkSetGpaDeviceClockModeAMD vkSetGpaDeviceClockModeAMDPtr
+  pPInfo <- ContT (withZeroCStruct @GpaDeviceClockModeInfoAMD)
+  r <- lift $ traceAroundEvent "vkSetGpaDeviceClockModeAMD" (vkSetGpaDeviceClockModeAMD'
+                                                               (deviceHandle (device))
+                                                               (pPInfo))
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+  pInfo <- lift $ peekCStruct @GpaDeviceClockModeInfoAMD pPInfo
+  pure $ (pInfo)
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetGpaDeviceClockInfoAMD
+  :: FunPtr (Ptr Device_T -> Ptr GpaDeviceGetClockInfoAMD -> IO Result) -> Ptr Device_T -> Ptr GpaDeviceGetClockInfoAMD -> IO Result
+
+-- | vkGetGpaDeviceClockInfoAMD - Getting device clocks and ratios
+--
+-- == 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_DEVICE_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_gpa_interface VK_AMD_gpa_interface>,
+-- 'Vulkan.Core10.Handles.Device', 'GpaDeviceGetClockInfoAMD'
+getGpaDeviceClockInfoAMD :: forall io
+                          . (MonadIO io)
+                         => -- | @device@ is the logical device that sets the clocks.
+                            --
+                            -- #VUID-vkGetGpaDeviceClockInfoAMD-device-parameter# @device@ /must/ be a
+                            -- valid 'Vulkan.Core10.Handles.Device' handle
+                            Device
+                         -> io (GpaDeviceGetClockInfoAMD)
+getGpaDeviceClockInfoAMD device = liftIO . evalContT $ do
+  let vkGetGpaDeviceClockInfoAMDPtr = pVkGetGpaDeviceClockInfoAMD (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkGetGpaDeviceClockInfoAMDPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetGpaDeviceClockInfoAMD is null" Nothing Nothing
+  let vkGetGpaDeviceClockInfoAMD' = mkVkGetGpaDeviceClockInfoAMD vkGetGpaDeviceClockInfoAMDPtr
+  pPInfo <- ContT (withZeroCStruct @GpaDeviceGetClockInfoAMD)
+  r <- lift $ traceAroundEvent "vkGetGpaDeviceClockInfoAMD" (vkGetGpaDeviceClockInfoAMD'
+                                                               (deviceHandle (device))
+                                                               (pPInfo))
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+  pInfo <- lift $ peekCStruct @GpaDeviceGetClockInfoAMD pPInfo
+  pure $ (pInfo)
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdBeginGpaSessionAMD
+  :: FunPtr (Ptr CommandBuffer_T -> GpaSessionAMD -> IO Result) -> Ptr CommandBuffer_T -> GpaSessionAMD -> IO Result
+
+-- | vkCmdBeginGpaSessionAMD - Begin a GPA session
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdBeginGpaSessionAMD-gpaSession-12409# If @gpaSession@ has
+--     been used previously to begin and end a session,
+--     'resetGpaSessionAMD' /must/ have first been called
+--
+-- -   #VUID-vkCmdBeginGpaSessionAMD-commandBuffer-12410# If another GPA
+--     session has been started with 'cmdBeginGpaSessionAMD' in
+--     @commandBuffer@, it /must/ have been ended using
+--     'cmdEndGpaSessionAMD' before this call
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdBeginGpaSessionAMD-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdBeginGpaSessionAMD-gpaSession-parameter# @gpaSession@
+--     /must/ be a valid 'Vulkan.Extensions.Handles.GpaSessionAMD' handle
+--
+-- -   #VUID-vkCmdBeginGpaSessionAMD-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-vkCmdBeginGpaSessionAMD-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', or
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
+--
+-- -   #VUID-vkCmdBeginGpaSessionAMD-suspended# This command /must/ not be
+--     called between suspended render pass instances
+--
+-- -   #VUID-vkCmdBeginGpaSessionAMD-videocoding# This command /must/ only
+--     be called outside of a video coding scope
+--
+-- -   #VUID-vkCmdBeginGpaSessionAMD-commonparent# Both of @commandBuffer@,
+--     and @gpaSession@ /must/ have been created, allocated, or retrieved
+--     from the same 'Vulkan.Core10.Handles.Device'
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdBeginGpaSessionAMD is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- == 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_DEVICE_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_gpa_interface VK_AMD_gpa_interface>,
+-- 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'Vulkan.Extensions.Handles.GpaSessionAMD'
+cmdBeginGpaSessionAMD :: forall io
+                       . (MonadIO io)
+                      => -- | @commandBuffer@ is the command buffer into which the command will be
+                         -- recorded.
+                         CommandBuffer
+                      -> -- | @gpaSession@ is the handle of the GPA session to begin.
+                         GpaSessionAMD
+                      -> io ()
+cmdBeginGpaSessionAMD commandBuffer gpaSession = liftIO $ do
+  let vkCmdBeginGpaSessionAMDPtr = pVkCmdBeginGpaSessionAMD (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  unless (vkCmdBeginGpaSessionAMDPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdBeginGpaSessionAMD is null" Nothing Nothing
+  let vkCmdBeginGpaSessionAMD' = mkVkCmdBeginGpaSessionAMD vkCmdBeginGpaSessionAMDPtr
+  r <- traceAroundEvent "vkCmdBeginGpaSessionAMD" (vkCmdBeginGpaSessionAMD'
+                                                     (commandBufferHandle (commandBuffer))
+                                                     (gpaSession))
+  when (r < SUCCESS) (throwIO (VulkanException r))
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdEndGpaSessionAMD
+  :: FunPtr (Ptr CommandBuffer_T -> GpaSessionAMD -> IO Result) -> Ptr CommandBuffer_T -> GpaSessionAMD -> IO Result
+
+-- | vkCmdEndGpaSessionAMD - End a GPA session
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdEndGpaSessionAMD-gpaSession-12411# @gpaSession@ /must/
+--     have previously begun using 'cmdBeginGpaSessionAMD'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdEndGpaSessionAMD-commandBuffer-parameter# @commandBuffer@
+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdEndGpaSessionAMD-gpaSession-parameter# @gpaSession@
+--     /must/ be a valid 'Vulkan.Extensions.Handles.GpaSessionAMD' handle
+--
+-- -   #VUID-vkCmdEndGpaSessionAMD-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-vkCmdEndGpaSessionAMD-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', or
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
+--
+-- -   #VUID-vkCmdEndGpaSessionAMD-suspended# This command /must/ not be
+--     called between suspended render pass instances
+--
+-- -   #VUID-vkCmdEndGpaSessionAMD-videocoding# This command /must/ only be
+--     called outside of a video coding scope
+--
+-- -   #VUID-vkCmdEndGpaSessionAMD-commonparent# Both of @commandBuffer@,
+--     and @gpaSession@ /must/ have been created, allocated, or retrieved
+--     from the same 'Vulkan.Core10.Handles.Device'
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdEndGpaSessionAMD is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- == 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_DEVICE_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_gpa_interface VK_AMD_gpa_interface>,
+-- 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'Vulkan.Extensions.Handles.GpaSessionAMD'
+cmdEndGpaSessionAMD :: forall io
+                     . (MonadIO io)
+                    => -- | @commandBuffer@ is the command buffer into which the command will be
+                       -- recorded.
+                       CommandBuffer
+                    -> -- | @gpaSession@ is the handle of the GPA session to end.
+                       GpaSessionAMD
+                    -> io ()
+cmdEndGpaSessionAMD commandBuffer gpaSession = liftIO $ do
+  let vkCmdEndGpaSessionAMDPtr = pVkCmdEndGpaSessionAMD (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  unless (vkCmdEndGpaSessionAMDPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdEndGpaSessionAMD is null" Nothing Nothing
+  let vkCmdEndGpaSessionAMD' = mkVkCmdEndGpaSessionAMD vkCmdEndGpaSessionAMDPtr
+  r <- traceAroundEvent "vkCmdEndGpaSessionAMD" (vkCmdEndGpaSessionAMD'
+                                                   (commandBufferHandle (commandBuffer))
+                                                   (gpaSession))
+  when (r < SUCCESS) (throwIO (VulkanException r))
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdBeginGpaSampleAMD
+  :: FunPtr (Ptr CommandBuffer_T -> GpaSessionAMD -> Ptr GpaSampleBeginInfoAMD -> Ptr Word32 -> IO Result) -> Ptr CommandBuffer_T -> GpaSessionAMD -> Ptr GpaSampleBeginInfoAMD -> Ptr Word32 -> IO Result
+
+-- | vkCmdBeginGpaSampleAMD - Beginning a sample
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdBeginGpaSampleAMD-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdBeginGpaSampleAMD-gpaSession-parameter# @gpaSession@
+--     /must/ be a valid 'Vulkan.Extensions.Handles.GpaSessionAMD' handle
+--
+-- -   #VUID-vkCmdBeginGpaSampleAMD-pGpaSampleBeginInfo-parameter#
+--     @pGpaSampleBeginInfo@ /must/ be a valid pointer to a valid
+--     'GpaSampleBeginInfoAMD' structure
+--
+-- -   #VUID-vkCmdBeginGpaSampleAMD-pSampleID-parameter# @pSampleID@ /must/
+--     be a valid pointer to a @uint32_t@ value
+--
+-- -   #VUID-vkCmdBeginGpaSampleAMD-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-vkCmdBeginGpaSampleAMD-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', or
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
+--
+-- -   #VUID-vkCmdBeginGpaSampleAMD-suspended# This command /must/ not be
+--     called between suspended render pass instances
+--
+-- -   #VUID-vkCmdBeginGpaSampleAMD-videocoding# This command /must/ only
+--     be called outside of a video coding scope
+--
+-- -   #VUID-vkCmdBeginGpaSampleAMD-commonparent# Both of @commandBuffer@,
+--     and @gpaSession@ /must/ have been created, allocated, or retrieved
+--     from the same 'Vulkan.Core10.Handles.Device'
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdBeginGpaSampleAMD is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- == 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_DEVICE_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_gpa_interface VK_AMD_gpa_interface>,
+-- 'Vulkan.Core10.Handles.CommandBuffer', 'GpaSampleBeginInfoAMD',
+-- 'Vulkan.Extensions.Handles.GpaSessionAMD'
+cmdBeginGpaSampleAMD :: forall io
+                      . (MonadIO io)
+                     => -- | @commandBuffer@ is the command buffer into which the command will be
+                        -- recorded.
+                        CommandBuffer
+                     -> -- | @gpaSession@ is the handle of the GPA session to record the sample.
+                        GpaSessionAMD
+                     -> -- | @pGpaSampleBeginInfo@ is a pointer to a 'GpaSampleBeginInfoAMD'
+                        -- structure describing the sample parameters.
+                        GpaSampleBeginInfoAMD
+                     -> io (("sampleID" ::: Word32))
+cmdBeginGpaSampleAMD commandBuffer
+                       gpaSession
+                       gpaSampleBeginInfo = liftIO . evalContT $ do
+  let vkCmdBeginGpaSampleAMDPtr = pVkCmdBeginGpaSampleAMD (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdBeginGpaSampleAMDPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdBeginGpaSampleAMD is null" Nothing Nothing
+  let vkCmdBeginGpaSampleAMD' = mkVkCmdBeginGpaSampleAMD vkCmdBeginGpaSampleAMDPtr
+  pGpaSampleBeginInfo <- ContT $ withCStruct (gpaSampleBeginInfo)
+  pPSampleID <- ContT $ bracket (callocBytes @Word32 4) free
+  r <- lift $ traceAroundEvent "vkCmdBeginGpaSampleAMD" (vkCmdBeginGpaSampleAMD'
+                                                           (commandBufferHandle (commandBuffer))
+                                                           (gpaSession)
+                                                           pGpaSampleBeginInfo
+                                                           (pPSampleID))
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+  pSampleID <- lift $ peek @Word32 pPSampleID
+  pure $ (pSampleID)
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdEndGpaSampleAMD
+  :: FunPtr (Ptr CommandBuffer_T -> GpaSessionAMD -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> GpaSessionAMD -> Word32 -> IO ()
+
+-- | vkCmdEndGpaSampleAMD - Ending a sample
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdEndGpaSampleAMD-commandBuffer-parameter# @commandBuffer@
+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdEndGpaSampleAMD-gpaSession-parameter# @gpaSession@ /must/
+--     be a valid 'Vulkan.Extensions.Handles.GpaSessionAMD' handle
+--
+-- -   #VUID-vkCmdEndGpaSampleAMD-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-vkCmdEndGpaSampleAMD-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', or
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
+--
+-- -   #VUID-vkCmdEndGpaSampleAMD-suspended# This command /must/ not be
+--     called between suspended render pass instances
+--
+-- -   #VUID-vkCmdEndGpaSampleAMD-videocoding# This command /must/ only be
+--     called outside of a video coding scope
+--
+-- -   #VUID-vkCmdEndGpaSampleAMD-commonparent# Both of @commandBuffer@,
+--     and @gpaSession@ /must/ have been created, allocated, or retrieved
+--     from the same 'Vulkan.Core10.Handles.Device'
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdEndGpaSampleAMD is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_gpa_interface VK_AMD_gpa_interface>,
+-- 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'Vulkan.Extensions.Handles.GpaSessionAMD'
+cmdEndGpaSampleAMD :: forall io
+                    . (MonadIO io)
+                   => -- | @commandBuffer@ is the command buffer into which the command will be
+                      -- recorded.
+                      CommandBuffer
+                   -> -- | @gpaSession@ is the handle of the GPA session that is recording the
+                      -- sample.
+                      GpaSessionAMD
+                   -> -- | @sampleID@ is a unique sample ID returned by a previous call to
+                      -- 'cmdBeginGpaSampleAMD'.
+                      ("sampleID" ::: Word32)
+                   -> io ()
+cmdEndGpaSampleAMD commandBuffer gpaSession sampleID = liftIO $ do
+  let vkCmdEndGpaSampleAMDPtr = pVkCmdEndGpaSampleAMD (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  unless (vkCmdEndGpaSampleAMDPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdEndGpaSampleAMD is null" Nothing Nothing
+  let vkCmdEndGpaSampleAMD' = mkVkCmdEndGpaSampleAMD vkCmdEndGpaSampleAMDPtr
+  traceAroundEvent "vkCmdEndGpaSampleAMD" (vkCmdEndGpaSampleAMD'
+                                             (commandBufferHandle (commandBuffer))
+                                             (gpaSession)
+                                             (sampleID))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetGpaSessionStatusAMD
+  :: FunPtr (Ptr Device_T -> GpaSessionAMD -> IO Result) -> Ptr Device_T -> GpaSessionAMD -> IO Result
+
+-- | vkGetGpaSessionStatusAMD - Getting the status of a GPA session
+--
+-- == 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_DEVICE_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_gpa_interface VK_AMD_gpa_interface>,
+-- 'Vulkan.Core10.Handles.Device',
+-- 'Vulkan.Extensions.Handles.GpaSessionAMD'
+getGpaSessionStatusAMD :: forall io
+                        . (MonadIO io)
+                       => -- | @device@ is the logical device that sets the clocks.
+                          --
+                          -- #VUID-vkGetGpaSessionStatusAMD-device-parameter# @device@ /must/ be a
+                          -- valid 'Vulkan.Core10.Handles.Device' handle
+                          Device
+                       -> -- | @gpaSession@ is the session whose status is queried.
+                          --
+                          -- #VUID-vkGetGpaSessionStatusAMD-gpaSession-parameter# @gpaSession@ /must/
+                          -- be a valid 'Vulkan.Extensions.Handles.GpaSessionAMD' handle
+                          --
+                          -- #VUID-vkGetGpaSessionStatusAMD-gpaSession-parent# @gpaSession@ /must/
+                          -- have been created, allocated, or retrieved from @device@
+                          GpaSessionAMD
+                       -> io ()
+getGpaSessionStatusAMD device gpaSession = liftIO $ do
+  let vkGetGpaSessionStatusAMDPtr = pVkGetGpaSessionStatusAMD (case device of Device{deviceCmds} -> deviceCmds)
+  unless (vkGetGpaSessionStatusAMDPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetGpaSessionStatusAMD is null" Nothing Nothing
+  let vkGetGpaSessionStatusAMD' = mkVkGetGpaSessionStatusAMD vkGetGpaSessionStatusAMDPtr
+  r <- traceAroundEvent "vkGetGpaSessionStatusAMD" (vkGetGpaSessionStatusAMD'
+                                                      (deviceHandle (device))
+                                                      (gpaSession))
+  when (r < SUCCESS) (throwIO (VulkanException r))
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetGpaSessionResultsAMD
+  :: FunPtr (Ptr Device_T -> GpaSessionAMD -> Word32 -> Ptr CSize -> Ptr () -> IO Result) -> Ptr Device_T -> GpaSessionAMD -> Word32 -> Ptr CSize -> Ptr () -> IO Result
+
+-- | vkGetGpaSessionResultsAMD - Getting the status of a GPA session
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkGetGpaSessionResultsAMD-device-parameter# @device@ /must/ be
+--     a valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkGetGpaSessionResultsAMD-gpaSession-parameter# @gpaSession@
+--     /must/ be a valid 'Vulkan.Extensions.Handles.GpaSessionAMD' handle
+--
+-- -   #VUID-vkGetGpaSessionResultsAMD-pSizeInBytes-parameter#
+--     @pSizeInBytes@ /must/ be a valid pointer to a @size_t@ value
+--
+-- -   #VUID-vkGetGpaSessionResultsAMD-pData-parameter# If @pData@ is not
+--     @NULL@, @pData@ /must/ be a valid pointer to an array of
+--     @pSizeInBytes@ bytes
+--
+-- -   #VUID-vkGetGpaSessionResultsAMD-pSizeInBytes-arraylength# If @pData@
+--     is not @NULL@, the value referenced by @pSizeInBytes@ /must/ be
+--     greater than @0@
+--
+-- -   #VUID-vkGetGpaSessionResultsAMD-gpaSession-parent# @gpaSession@
+--     /must/ have been created, allocated, or retrieved from @device@
+--
+-- == 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_DEVICE_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_gpa_interface VK_AMD_gpa_interface>,
+-- 'Vulkan.Core10.Handles.Device',
+-- 'Vulkan.Extensions.Handles.GpaSessionAMD'
+getGpaSessionResultsAMD :: forall io
+                         . (MonadIO io)
+                        => -- | @device@ is the logical device that sets the clocks.
+                           Device
+                        -> -- | @gpaSession@ is the session whose results are queried.
+                           GpaSessionAMD
+                        -> -- | @sampleID@ is the sample ID, returned by 'cmdBeginGpaSampleAMD', whose
+                           -- results are to be queried.
+                           ("sampleID" ::: Word32)
+                        -> -- | @pData@ is either @NULL@ or a pointer to an array of @pSizeInBytes@
+                           -- bytes where the results will be written.
+                           ("data" ::: Ptr ())
+                        -> io (("sizeInBytes" ::: Word64))
+getGpaSessionResultsAMD device
+                          gpaSession
+                          sampleID
+                          data' = liftIO . evalContT $ do
+  let vkGetGpaSessionResultsAMDPtr = pVkGetGpaSessionResultsAMD (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkGetGpaSessionResultsAMDPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetGpaSessionResultsAMD is null" Nothing Nothing
+  let vkGetGpaSessionResultsAMD' = mkVkGetGpaSessionResultsAMD vkGetGpaSessionResultsAMDPtr
+  pPSizeInBytes <- ContT $ bracket (callocBytes @CSize 8) free
+  r <- lift $ traceAroundEvent "vkGetGpaSessionResultsAMD" (vkGetGpaSessionResultsAMD'
+                                                              (deviceHandle (device))
+                                                              (gpaSession)
+                                                              (sampleID)
+                                                              (pPSizeInBytes)
+                                                              (data'))
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+  pSizeInBytes <- lift $ peek @CSize pPSizeInBytes
+  pure $ ((coerce @CSize @Word64 pSizeInBytes))
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkResetGpaSessionAMD
+  :: FunPtr (Ptr Device_T -> GpaSessionAMD -> IO Result) -> Ptr Device_T -> GpaSessionAMD -> IO Result
+
+-- | vkResetGpaSessionAMD - Reset a GPA session
+--
+-- == 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_DEVICE_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_gpa_interface VK_AMD_gpa_interface>,
+-- 'Vulkan.Core10.Handles.Device',
+-- 'Vulkan.Extensions.Handles.GpaSessionAMD'
+resetGpaSessionAMD :: forall io
+                    . (MonadIO io)
+                   => -- | #VUID-vkResetGpaSessionAMD-device-parameter# @device@ /must/ be a valid
+                      -- 'Vulkan.Core10.Handles.Device' handle
+                      Device
+                   -> -- | @gpaSession@ is the handle of the GPA session to reset.
+                      --
+                      -- #VUID-vkResetGpaSessionAMD-gpaSession-parameter# @gpaSession@ /must/ be
+                      -- a valid 'Vulkan.Extensions.Handles.GpaSessionAMD' handle
+                      --
+                      -- #VUID-vkResetGpaSessionAMD-gpaSession-parent# @gpaSession@ /must/ have
+                      -- been created, allocated, or retrieved from @device@
+                      GpaSessionAMD
+                   -> io ()
+resetGpaSessionAMD device gpaSession = liftIO $ do
+  let vkResetGpaSessionAMDPtr = pVkResetGpaSessionAMD (case device of Device{deviceCmds} -> deviceCmds)
+  unless (vkResetGpaSessionAMDPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkResetGpaSessionAMD is null" Nothing Nothing
+  let vkResetGpaSessionAMD' = mkVkResetGpaSessionAMD vkResetGpaSessionAMDPtr
+  r <- traceAroundEvent "vkResetGpaSessionAMD" (vkResetGpaSessionAMD'
+                                                  (deviceHandle (device))
+                                                  (gpaSession))
+  when (r < SUCCESS) (throwIO (VulkanException r))
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdCopyGpaSessionResultsAMD
+  :: FunPtr (Ptr CommandBuffer_T -> GpaSessionAMD -> IO ()) -> Ptr CommandBuffer_T -> GpaSessionAMD -> IO ()
+
+-- | vkCmdCopyGpaSessionResultsAMD - Copying GPA session results
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdCopyGpaSessionResultsAMD-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdCopyGpaSessionResultsAMD-gpaSession-parameter#
+--     @gpaSession@ /must/ be a valid
+--     'Vulkan.Extensions.Handles.GpaSessionAMD' handle
+--
+-- -   #VUID-vkCmdCopyGpaSessionResultsAMD-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-vkCmdCopyGpaSessionResultsAMD-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT',
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT', or
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_TRANSFER_BIT' operations
+--
+-- -   #VUID-vkCmdCopyGpaSessionResultsAMD-suspended# This command /must/
+--     not be called between suspended render pass instances
+--
+-- -   #VUID-vkCmdCopyGpaSessionResultsAMD-videocoding# This command /must/
+--     only be called outside of a video coding scope
+--
+-- -   #VUID-vkCmdCopyGpaSessionResultsAMD-commonparent# Both of
+--     @commandBuffer@, and @gpaSession@ /must/ have been created,
+--     allocated, or retrieved from the same 'Vulkan.Core10.Handles.Device'
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
+-- |                                                                                                                            |                                                                                                                        |                                                                                                                             | VK_QUEUE_TRANSFER_BIT                                                                                                 |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdCopyGpaSessionResultsAMD is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_gpa_interface VK_AMD_gpa_interface>,
+-- 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'Vulkan.Extensions.Handles.GpaSessionAMD'
+cmdCopyGpaSessionResultsAMD :: forall io
+                             . (MonadIO io)
+                            => -- | @commandBuffer@ is the command buffer into which the command will be
+                               -- recorded.
+                               CommandBuffer
+                            -> -- | @gpaSession@ is the handle of the GPA session that is the destination of
+                               -- the copy.
+                               GpaSessionAMD
+                            -> io ()
+cmdCopyGpaSessionResultsAMD commandBuffer gpaSession = liftIO $ do
+  let vkCmdCopyGpaSessionResultsAMDPtr = pVkCmdCopyGpaSessionResultsAMD (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  unless (vkCmdCopyGpaSessionResultsAMDPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdCopyGpaSessionResultsAMD is null" Nothing Nothing
+  let vkCmdCopyGpaSessionResultsAMD' = mkVkCmdCopyGpaSessionResultsAMD vkCmdCopyGpaSessionResultsAMDPtr
+  traceAroundEvent "vkCmdCopyGpaSessionResultsAMD" (vkCmdCopyGpaSessionResultsAMD'
+                                                      (commandBufferHandle (commandBuffer))
+                                                      (gpaSession))
+  pure $ ()
+
+
+-- No documentation found for TopLevel "VK_GPA_PERF_BLOCK_GE1_AMD"
+pattern GPA_PERF_BLOCK_GE1_AMD = GPA_PERF_BLOCK_GE_AMD
+
+
+-- No documentation found for TopLevel "VK_GPA_PERF_BLOCK_RLCLOCAL_AMD"
+pattern GPA_PERF_BLOCK_RLCLOCAL_AMD = GPA_PERF_BLOCK_RLCUSER_AMD
+
+
+-- | VkGpaPerfBlockPropertiesAMD - Structure describing GPU performance API
+-- block properties for a physical device
+--
+-- = Members
+--
+-- The members of the 'GpaPerfBlockPropertiesAMD' structure describe the
+-- following:
+--
+-- = Description
+--
+-- If the 'GpaPerfBlockPropertiesAMD' 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_AMD_gpa_interface VK_AMD_gpa_interface>,
+-- 'GpaPerfBlockAMD', 'GpaPerfBlockPropertiesFlagsAMD',
+-- 'PhysicalDeviceGpaPropertiesAMD'
+data GpaPerfBlockPropertiesAMD = GpaPerfBlockPropertiesAMD
+  { -- | @blockType@ is a 'GpaPerfBlockAMD' specifying the performance block
+    -- type.
+    --
+    -- #VUID-VkGpaPerfBlockPropertiesAMD-blockType-parameter# @blockType@
+    -- /must/ be a valid 'GpaPerfBlockAMD' value
+    blockType :: GpaPerfBlockAMD
+  , -- | @flags@ is reserved for future use.
+    --
+    -- #VUID-VkGpaPerfBlockPropertiesAMD-flags-zerobitmask# @flags@ /must/ be
+    -- @0@
+    flags :: GpaPerfBlockPropertiesFlagsAMD
+  , -- | @instanceCount@ is the number of instances of this block that are
+    -- available in the device.
+    instanceCount :: Word32
+  , -- | @maxEventID@ is the maximum event ID for this block.
+    maxEventID :: Word32
+  , -- | @maxGlobalOnlyCounters@ is the number of counters available only for
+    -- global counters.
+    maxGlobalOnlyCounters :: Word32
+  , -- | @maxGlobalSharedCounters@ is the total counters available including
+    -- state shared between global and streaming performance monitor counters.
+    maxGlobalSharedCounters :: Word32
+  , -- | @maxStreamingCounters@ is the maximum number of counters available for
+    -- streaming only.
+    maxStreamingCounters :: Word32
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (GpaPerfBlockPropertiesAMD)
+#endif
+deriving instance Show GpaPerfBlockPropertiesAMD
+
+instance ToCStruct GpaPerfBlockPropertiesAMD where
+  withCStruct x f = allocaBytes 28 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p GpaPerfBlockPropertiesAMD{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr GpaPerfBlockAMD)) (blockType)
+    poke ((p `plusPtr` 4 :: Ptr GpaPerfBlockPropertiesFlagsAMD)) (flags)
+    poke ((p `plusPtr` 8 :: Ptr Word32)) (instanceCount)
+    poke ((p `plusPtr` 12 :: Ptr Word32)) (maxEventID)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (maxGlobalOnlyCounters)
+    poke ((p `plusPtr` 20 :: Ptr Word32)) (maxGlobalSharedCounters)
+    poke ((p `plusPtr` 24 :: Ptr Word32)) (maxStreamingCounters)
+    f
+  cStructSize = 28
+  cStructAlignment = 4
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr GpaPerfBlockAMD)) (zero)
+    poke ((p `plusPtr` 4 :: Ptr GpaPerfBlockPropertiesFlagsAMD)) (zero)
+    poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 12 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct GpaPerfBlockPropertiesAMD where
+  peekCStruct p = do
+    blockType <- peek @GpaPerfBlockAMD ((p `plusPtr` 0 :: Ptr GpaPerfBlockAMD))
+    flags <- peek @GpaPerfBlockPropertiesFlagsAMD ((p `plusPtr` 4 :: Ptr GpaPerfBlockPropertiesFlagsAMD))
+    instanceCount <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))
+    maxEventID <- peek @Word32 ((p `plusPtr` 12 :: Ptr Word32))
+    maxGlobalOnlyCounters <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    maxGlobalSharedCounters <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
+    maxStreamingCounters <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))
+    pure $ GpaPerfBlockPropertiesAMD
+             blockType
+             flags
+             instanceCount
+             maxEventID
+             maxGlobalOnlyCounters
+             maxGlobalSharedCounters
+             maxStreamingCounters
+
+instance Storable GpaPerfBlockPropertiesAMD where
+  sizeOf ~_ = 28
+  alignment ~_ = 4
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero GpaPerfBlockPropertiesAMD where
+  zero = GpaPerfBlockPropertiesAMD
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkPhysicalDeviceGpaFeaturesAMD - Structure describing support for GPU
+-- performance API
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceGpaFeaturesAMD' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceGpaFeaturesAMD', it /must/ add an instance of the
+-- structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_gpa_interface VK_AMD_gpa_interface>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceGpaFeaturesAMD = PhysicalDeviceGpaFeaturesAMD
+  { -- | #features-perfCounters# @perfCounters@ specifies whether performance
+    -- counters are supported.
+    perfCounters :: Bool
+  , -- | #features-streamingPerfCounters# @streamingPerfCounters@ specifies
+    -- whether streaming performance counters are supported.
+    streamingPerfCounters :: Bool
+  , -- | #features-sqThreadTracing# @sqThreadTracing@ specifies whether thread
+    -- tracing is supported.
+    sqThreadTracing :: Bool
+  , -- | #features-clockModes# @clockModes@ specifies whether setting clock modes
+    -- is supported.
+    clockModes :: Bool
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceGpaFeaturesAMD)
+#endif
+deriving instance Show PhysicalDeviceGpaFeaturesAMD
+
+instance ToCStruct PhysicalDeviceGpaFeaturesAMD where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceGpaFeaturesAMD{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_GPA_FEATURES_AMD)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (perfCounters))
+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (streamingPerfCounters))
+    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (sqThreadTracing))
+    poke ((p `plusPtr` 28 :: Ptr Bool32)) (boolToBool32 (clockModes))
+    f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_GPA_FEATURES_AMD)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 28 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceGpaFeaturesAMD where
+  peekCStruct p = do
+    perfCounters <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    streamingPerfCounters <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
+    sqThreadTracing <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))
+    clockModes <- peek @Bool32 ((p `plusPtr` 28 :: Ptr Bool32))
+    pure $ PhysicalDeviceGpaFeaturesAMD
+             (bool32ToBool perfCounters)
+             (bool32ToBool streamingPerfCounters)
+             (bool32ToBool sqThreadTracing)
+             (bool32ToBool clockModes)
+
+instance Storable PhysicalDeviceGpaFeaturesAMD where
+  sizeOf ~_ = 32
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceGpaFeaturesAMD where
+  zero = PhysicalDeviceGpaFeaturesAMD
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkPhysicalDeviceGpaPropertiesAMD - Structure describing GPU performance
+-- API properties for a physical device
+--
+-- = Members
+--
+-- The members of the 'PhysicalDeviceGpaPropertiesAMD' structure describe
+-- the following:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceGpaPropertiesAMD' 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.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_gpa_interface VK_AMD_gpa_interface>,
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
+-- 'GpaPerfBlockPropertiesAMD', 'PhysicalDeviceGpaPropertiesFlagsAMD',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceGpaPropertiesAMD = PhysicalDeviceGpaPropertiesAMD
+  { -- | @flags@ is reserved for future use.
+    flags :: PhysicalDeviceGpaPropertiesFlagsAMD
+  , -- | @maxSqttSeBufferSize@ is the SQTT buffer size per engine.
+    maxSqttSeBufferSize :: DeviceSize
+  , -- | @shaderEngineCount@ is the number of shader engines.
+    shaderEngineCount :: Word32
+  , -- | @perfBlockCount@ is the number of entries in @pPerfBlocks@.
+    perfBlockCount :: Word32
+  , -- | @pPerfBlocks@ is a pointer to an array of 'GpaPerfBlockPropertiesAMD'
+    -- structures containing the available performance blocks.
+    perfBlocks :: Ptr GpaPerfBlockPropertiesAMD
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceGpaPropertiesAMD)
+#endif
+deriving instance Show PhysicalDeviceGpaPropertiesAMD
+
+instance ToCStruct PhysicalDeviceGpaPropertiesAMD where
+  withCStruct x f = allocaBytes 48 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceGpaPropertiesAMD{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_GPA_PROPERTIES_AMD)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr PhysicalDeviceGpaPropertiesFlagsAMD)) (flags)
+    poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (maxSqttSeBufferSize)
+    poke ((p `plusPtr` 32 :: Ptr Word32)) (shaderEngineCount)
+    poke ((p `plusPtr` 36 :: Ptr Word32)) (perfBlockCount)
+    poke ((p `plusPtr` 40 :: Ptr (Ptr GpaPerfBlockPropertiesAMD))) (perfBlocks)
+    f
+  cStructSize = 48
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_GPA_PROPERTIES_AMD)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr PhysicalDeviceGpaPropertiesFlagsAMD)) (zero)
+    poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (zero)
+    poke ((p `plusPtr` 32 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 36 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 40 :: Ptr (Ptr GpaPerfBlockPropertiesAMD))) (zero)
+    f
+
+instance FromCStruct PhysicalDeviceGpaPropertiesAMD where
+  peekCStruct p = do
+    flags <- peek @PhysicalDeviceGpaPropertiesFlagsAMD ((p `plusPtr` 16 :: Ptr PhysicalDeviceGpaPropertiesFlagsAMD))
+    maxSqttSeBufferSize <- peek @DeviceSize ((p `plusPtr` 24 :: Ptr DeviceSize))
+    shaderEngineCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))
+    perfBlockCount <- peek @Word32 ((p `plusPtr` 36 :: Ptr Word32))
+    pPerfBlocks <- peek @(Ptr GpaPerfBlockPropertiesAMD) ((p `plusPtr` 40 :: Ptr (Ptr GpaPerfBlockPropertiesAMD)))
+    pure $ PhysicalDeviceGpaPropertiesAMD
+             flags
+             maxSqttSeBufferSize
+             shaderEngineCount
+             perfBlockCount
+             pPerfBlocks
+
+instance Storable PhysicalDeviceGpaPropertiesAMD where
+  sizeOf ~_ = 48
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceGpaPropertiesAMD where
+  zero = PhysicalDeviceGpaPropertiesAMD
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkPhysicalDeviceGpaProperties2AMD - Structure describing additional GPU
+-- performance API properties for a physical device
+--
+-- = Members
+--
+-- The members of the 'PhysicalDeviceGpaProperties2AMD' structure describe
+-- the following:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceGpaProperties2AMD' 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.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_gpa_interface VK_AMD_gpa_interface>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceGpaProperties2AMD = PhysicalDeviceGpaProperties2AMD
+  { -- | @revisionId@ is the GPU product identifier that may be used to classify
+    -- its GPA behavior.
+    revisionId :: Word32 }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceGpaProperties2AMD)
+#endif
+deriving instance Show PhysicalDeviceGpaProperties2AMD
+
+instance ToCStruct PhysicalDeviceGpaProperties2AMD where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceGpaProperties2AMD{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_GPA_PROPERTIES_2_AMD)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (revisionId)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_GPA_PROPERTIES_2_AMD)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct PhysicalDeviceGpaProperties2AMD where
+  peekCStruct p = do
+    revisionId <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    pure $ PhysicalDeviceGpaProperties2AMD
+             revisionId
+
+instance Storable PhysicalDeviceGpaProperties2AMD where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceGpaProperties2AMD where
+  zero = PhysicalDeviceGpaProperties2AMD
+           zero
+
+
+-- | VkGpaPerfCounterAMD - Structure specifying parameters of a GPA sample
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_gpa_interface VK_AMD_gpa_interface>,
+-- 'GpaPerfBlockAMD', 'GpaSampleBeginInfoAMD'
+data GpaPerfCounterAMD = GpaPerfCounterAMD
+  { -- | @blockType@ is a 'GpaPerfBlockAMD' value specifying the GPU block type
+    -- to sample.
+    --
+    -- #VUID-VkGpaPerfCounterAMD-blockType-parameter# @blockType@ /must/ be a
+    -- valid 'GpaPerfBlockAMD' value
+    blockType :: GpaPerfBlockAMD
+  , -- | @blockInstance@ is a value specifying which instance of the GPU block to
+    -- sample.
+    blockInstance :: Word32
+  , -- | @eventID@ is a value specifying the hardware-specific identifier of the
+    -- performance counter to sample.
+    eventID :: Word32
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (GpaPerfCounterAMD)
+#endif
+deriving instance Show GpaPerfCounterAMD
+
+instance ToCStruct GpaPerfCounterAMD where
+  withCStruct x f = allocaBytes 12 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p GpaPerfCounterAMD{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr GpaPerfBlockAMD)) (blockType)
+    poke ((p `plusPtr` 4 :: Ptr Word32)) (blockInstance)
+    poke ((p `plusPtr` 8 :: Ptr Word32)) (eventID)
+    f
+  cStructSize = 12
+  cStructAlignment = 4
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr GpaPerfBlockAMD)) (zero)
+    poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct GpaPerfCounterAMD where
+  peekCStruct p = do
+    blockType <- peek @GpaPerfBlockAMD ((p `plusPtr` 0 :: Ptr GpaPerfBlockAMD))
+    blockInstance <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))
+    eventID <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))
+    pure $ GpaPerfCounterAMD
+             blockType blockInstance eventID
+
+instance Storable GpaPerfCounterAMD where
+  sizeOf ~_ = 12
+  alignment ~_ = 4
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero GpaPerfCounterAMD where
+  zero = GpaPerfCounterAMD
+           zero
+           zero
+           zero
+
+
+-- | VkGpaSampleBeginInfoAMD - Structure specifying parameters of a GPA
+-- sample
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkGpaSampleBeginInfoAMD-sampleType-12412# If @sampleType@ is
+--     'GPA_SAMPLE_TYPE_CUMULATIVE_AMD', the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-perfCounters ::perfCounters>
+--     feature /must/ be enabled
+--
+-- -   #VUID-VkGpaSampleBeginInfoAMD-sampleType-12413# If @sampleType@ is
+--     'GPA_SAMPLE_TYPE_TRACE_AMD', at least one of the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-streamingPerfCounters ::streamingPerfCounters>
+--     or
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-sqThreadTracing ::sqThreadTracing>
+--     features /must/ be enabled
+--
+-- -   #VUID-VkGpaSampleBeginInfoAMD-sqThreadTraceEnable-12414# If
+--     @sqThreadTraceEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-sqThreadTracing ::sqThreadTracing>
+--     feature /must/ be enabled
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkGpaSampleBeginInfoAMD-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GPA_SAMPLE_BEGIN_INFO_AMD'
+--
+-- -   #VUID-VkGpaSampleBeginInfoAMD-pNext-pNext# @pNext@ /must/ be @NULL@
+--
+-- -   #VUID-VkGpaSampleBeginInfoAMD-sampleType-parameter# @sampleType@
+--     /must/ be a valid 'GpaSampleTypeAMD' value
+--
+-- -   #VUID-VkGpaSampleBeginInfoAMD-sqShaderMask-parameter# @sqShaderMask@
+--     /must/ be a valid combination of 'GpaSqShaderStageFlagBitsAMD'
+--     values
+--
+-- -   #VUID-VkGpaSampleBeginInfoAMD-sqShaderMask-requiredbitmask#
+--     @sqShaderMask@ /must/ not be @0@
+--
+-- -   #VUID-VkGpaSampleBeginInfoAMD-pPerfCounters-parameter#
+--     @pPerfCounters@ /must/ be a valid pointer to an array of
+--     @perfCounterCount@ valid 'GpaPerfCounterAMD' structures
+--
+-- -   #VUID-VkGpaSampleBeginInfoAMD-timingPreSample-parameter#
+--     @timingPreSample@ /must/ be a valid combination of
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'
+--     values
+--
+-- -   #VUID-VkGpaSampleBeginInfoAMD-timingPreSample-requiredbitmask#
+--     @timingPreSample@ /must/ not be @0@
+--
+-- -   #VUID-VkGpaSampleBeginInfoAMD-timingPostSample-parameter#
+--     @timingPostSample@ /must/ be a valid combination of
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'
+--     values
+--
+-- -   #VUID-VkGpaSampleBeginInfoAMD-timingPostSample-requiredbitmask#
+--     @timingPostSample@ /must/ not be @0@
+--
+-- -   #VUID-VkGpaSampleBeginInfoAMD-perfCounterCount-arraylength#
+--     @perfCounterCount@ /must/ be greater than @0@
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_gpa_interface VK_AMD_gpa_interface>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize', 'GpaPerfCounterAMD',
+-- 'GpaSampleTypeAMD', 'GpaSqShaderStageFlagsAMD',
+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlags',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'cmdBeginGpaSampleAMD'
+data GpaSampleBeginInfoAMD = GpaSampleBeginInfoAMD
+  { -- | @sampleType@ is a 'GpaSampleTypeAMD' value specifying the type of
+    -- sample.
+    sampleType :: GpaSampleTypeAMD
+  , -- | @sampleInternalOperations@ is a boolean indicating whether internal
+    -- driver operations are included in the results.
+    sampleInternalOperations :: Bool
+  , -- | @cacheFlushOnCounterCollection@ is a boolean indicating whether the
+    -- driver should insert cache flush and invalidate events before and after
+    -- every sample.
+    cacheFlushOnCounterCollection :: Bool
+  , -- | @sqShaderMaskEnable@ is a boolean indicating whether @sqShaderMask@
+    -- specifies the shader stages to sample. If
+    -- 'Vulkan.Core10.FundamentalTypes.FALSE', all shader stages are sampled.
+    sqShaderMaskEnable :: Bool
+  , -- | @sqShaderMask@ is a bitmask of 'GpaSqShaderStageFlagBitsAMD' values
+    -- specifying which shader stages to sample. Shader stage bits that are not
+    -- relevant to the specific device are ignored.
+    sqShaderMask :: GpaSqShaderStageFlagsAMD
+  , -- | @pPerfCounters@ is a pointer to an array of 'GpaPerfCounterAMD'
+    -- structures specifying the counters to be sampled. If @sampleType@ is
+    -- 'GPA_SAMPLE_TYPE_CUMULATIVE_AMD' @pPerfCounters@ specifies the counters
+    -- that are sampled at the beginning and at end of the sample period. If
+    -- @sampleType@ is 'GPA_SAMPLE_TYPE_TRACE_AMD' then the SPM data will be
+    -- added to the samples RGP data blob.
+    perfCounters :: Vector GpaPerfCounterAMD
+  , -- | @streamingPerfTraceSampleInterval@ is a value specifying the period for
+    -- SPM samples in cycles, and is ignored if @sampleType@ is not
+    -- 'GPA_SAMPLE_TYPE_TRACE_AMD'.
+    streamingPerfTraceSampleInterval :: Word32
+  , -- | @perfCounterDeviceMemoryLimit@ is a value specifying the maximum amount
+    -- of GPU memory that this sample can allocate for SPM data. If
+    -- @sampleType@ is not 'GPA_SAMPLE_TYPE_TRACE_AMD' this value is ignored.
+    perfCounterDeviceMemoryLimit :: DeviceSize
+  , -- | @sqThreadTraceEnable@ is a boolean specifying whether SQTT data should
+    -- be included. If @sampleType@ is not 'GPA_SAMPLE_TYPE_TRACE_AMD' this
+    -- value is ignored.
+    sqThreadTraceEnable :: Bool
+  , -- | @sqThreadTraceSuppressInstructionTokens@ is a boolean specifying whether
+    -- instruction-level SQTT tokens should be captured. If
+    -- 'Vulkan.Core10.FundamentalTypes.FALSE', the amount of sample data is
+    -- significantly reduced. If @sampleType@ is not
+    -- 'GPA_SAMPLE_TYPE_TRACE_AMD' this value is ignored.
+    sqThreadTraceSuppressInstructionTokens :: Bool
+  , -- | @sqThreadTraceDeviceMemoryLimit@ is a value specifying the maximum
+    -- amount of GPU memory in bytes that this sample can allocate for the SQTT
+    -- buffer. If @0@, the maximum size to prevent dropping tokens towards the
+    -- end of the sample is allocated. If @sampleType@ is not
+    -- 'GPA_SAMPLE_TYPE_TRACE_AMD' this value is ignored.
+    sqThreadTraceDeviceMemoryLimit :: DeviceSize
+  , -- | @timingPreSample@ is a
+    -- 'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlags2' mask of
+    -- pipeline stages specifying where the begin timestamp should take place.
+    -- If @sampleType@ is not 'GPA_SAMPLE_TYPE_TIMING_AMD' this value is
+    -- ignored.
+    timingPreSample :: PipelineStageFlags
+  , -- | @timingPostSample@ is a
+    -- 'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlags2' mask of
+    -- pipeline stages specifying where the end timestamp should take place. If
+    -- @sampleType@ is not 'GPA_SAMPLE_TYPE_TIMING_AMD' this value is ignored.
+    timingPostSample :: PipelineStageFlags
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (GpaSampleBeginInfoAMD)
+#endif
+deriving instance Show GpaSampleBeginInfoAMD
+
+instance ToCStruct GpaSampleBeginInfoAMD where
+  withCStruct x f = allocaBytes 88 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p GpaSampleBeginInfoAMD{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GPA_SAMPLE_BEGIN_INFO_AMD)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr GpaSampleTypeAMD)) (sampleType)
+    lift $ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (sampleInternalOperations))
+    lift $ poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (cacheFlushOnCounterCollection))
+    lift $ poke ((p `plusPtr` 28 :: Ptr Bool32)) (boolToBool32 (sqShaderMaskEnable))
+    lift $ poke ((p `plusPtr` 32 :: Ptr GpaSqShaderStageFlagsAMD)) (sqShaderMask)
+    lift $ poke ((p `plusPtr` 36 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (perfCounters)) :: Word32))
+    pPPerfCounters' <- ContT $ allocaBytes @GpaPerfCounterAMD ((Data.Vector.length (perfCounters)) * 12)
+    lift $ Data.Vector.imapM_ (\i e -> poke (pPPerfCounters' `plusPtr` (12 * (i)) :: Ptr GpaPerfCounterAMD) (e)) (perfCounters)
+    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr GpaPerfCounterAMD))) (pPPerfCounters')
+    lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) (streamingPerfTraceSampleInterval)
+    lift $ poke ((p `plusPtr` 56 :: Ptr DeviceSize)) (perfCounterDeviceMemoryLimit)
+    lift $ poke ((p `plusPtr` 64 :: Ptr Bool32)) (boolToBool32 (sqThreadTraceEnable))
+    lift $ poke ((p `plusPtr` 68 :: Ptr Bool32)) (boolToBool32 (sqThreadTraceSuppressInstructionTokens))
+    lift $ poke ((p `plusPtr` 72 :: Ptr DeviceSize)) (sqThreadTraceDeviceMemoryLimit)
+    lift $ poke ((p `plusPtr` 80 :: Ptr PipelineStageFlags)) (timingPreSample)
+    lift $ poke ((p `plusPtr` 84 :: Ptr PipelineStageFlags)) (timingPostSample)
+    lift $ f
+  cStructSize = 88
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GPA_SAMPLE_BEGIN_INFO_AMD)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr GpaSampleTypeAMD)) (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 GpaSqShaderStageFlagsAMD)) (zero)
+    poke ((p `plusPtr` 48 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 56 :: Ptr DeviceSize)) (zero)
+    poke ((p `plusPtr` 64 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 68 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 72 :: Ptr DeviceSize)) (zero)
+    poke ((p `plusPtr` 80 :: Ptr PipelineStageFlags)) (zero)
+    poke ((p `plusPtr` 84 :: Ptr PipelineStageFlags)) (zero)
+    f
+
+instance FromCStruct GpaSampleBeginInfoAMD where
+  peekCStruct p = do
+    sampleType <- peek @GpaSampleTypeAMD ((p `plusPtr` 16 :: Ptr GpaSampleTypeAMD))
+    sampleInternalOperations <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
+    cacheFlushOnCounterCollection <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))
+    sqShaderMaskEnable <- peek @Bool32 ((p `plusPtr` 28 :: Ptr Bool32))
+    sqShaderMask <- peek @GpaSqShaderStageFlagsAMD ((p `plusPtr` 32 :: Ptr GpaSqShaderStageFlagsAMD))
+    perfCounterCount <- peek @Word32 ((p `plusPtr` 36 :: Ptr Word32))
+    pPerfCounters <- peek @(Ptr GpaPerfCounterAMD) ((p `plusPtr` 40 :: Ptr (Ptr GpaPerfCounterAMD)))
+    pPerfCounters' <- generateM (fromIntegral perfCounterCount) (\i -> peekCStruct @GpaPerfCounterAMD ((pPerfCounters `advancePtrBytes` (12 * (i)) :: Ptr GpaPerfCounterAMD)))
+    streamingPerfTraceSampleInterval <- peek @Word32 ((p `plusPtr` 48 :: Ptr Word32))
+    perfCounterDeviceMemoryLimit <- peek @DeviceSize ((p `plusPtr` 56 :: Ptr DeviceSize))
+    sqThreadTraceEnable <- peek @Bool32 ((p `plusPtr` 64 :: Ptr Bool32))
+    sqThreadTraceSuppressInstructionTokens <- peek @Bool32 ((p `plusPtr` 68 :: Ptr Bool32))
+    sqThreadTraceDeviceMemoryLimit <- peek @DeviceSize ((p `plusPtr` 72 :: Ptr DeviceSize))
+    timingPreSample <- peek @PipelineStageFlags ((p `plusPtr` 80 :: Ptr PipelineStageFlags))
+    timingPostSample <- peek @PipelineStageFlags ((p `plusPtr` 84 :: Ptr PipelineStageFlags))
+    pure $ GpaSampleBeginInfoAMD
+             sampleType
+             (bool32ToBool sampleInternalOperations)
+             (bool32ToBool cacheFlushOnCounterCollection)
+             (bool32ToBool sqShaderMaskEnable)
+             sqShaderMask
+             pPerfCounters'
+             streamingPerfTraceSampleInterval
+             perfCounterDeviceMemoryLimit
+             (bool32ToBool sqThreadTraceEnable)
+             (bool32ToBool sqThreadTraceSuppressInstructionTokens)
+             sqThreadTraceDeviceMemoryLimit
+             timingPreSample
+             timingPostSample
+
+instance Zero GpaSampleBeginInfoAMD where
+  zero = GpaSampleBeginInfoAMD
+           zero
+           zero
+           zero
+           zero
+           zero
+           mempty
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkGpaDeviceClockModeInfoAMD - Structure containing returned clock ratios
+-- or clock mode to set
+--
+-- = Description
+--
+-- If @clockMode@ is 'GPA_DEVICE_CLOCK_MODE_QUERY_AMD',
+-- @memoryClockRatioToPeak@ and @engineClockRatioToPeak@ are filled with
+-- the ratios of their current values to their maximums respectively,
+-- otherwise they are left unchanged.
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_gpa_interface VK_AMD_gpa_interface>,
+-- 'GpaDeviceClockModeAMD',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'setGpaDeviceClockModeAMD'
+data GpaDeviceClockModeInfoAMD = GpaDeviceClockModeInfoAMD
+  { -- | @clockMode@ is a enum:VkGpaDeviceClockModeAMD value specify which clock
+    -- mode to set, or whether to query the current clocks.
+    --
+    -- #VUID-VkGpaDeviceClockModeInfoAMD-clockMode-parameter# @clockMode@
+    -- /must/ be a valid 'GpaDeviceClockModeAMD' value
+    clockMode :: GpaDeviceClockModeAMD
+  , -- | @memoryClockRatioToPeak@ is the returned ratio of the current memory
+    -- clock to the maximum memory clock, if @clockMode@ is
+    -- 'GPA_DEVICE_CLOCK_MODE_QUERY_AMD'.
+    memoryClockRatioToPeak :: Float
+  , -- | @engineClockRatioToPeak@ is the returned ratio of the current engine
+    -- clock to the maximum engine clock, if @clockMode@ is
+    -- 'GPA_DEVICE_CLOCK_MODE_QUERY_AMD'.
+    engineClockRatioToPeak :: Float
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (GpaDeviceClockModeInfoAMD)
+#endif
+deriving instance Show GpaDeviceClockModeInfoAMD
+
+instance ToCStruct GpaDeviceClockModeInfoAMD where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p GpaDeviceClockModeInfoAMD{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GPA_DEVICE_CLOCK_MODE_INFO_AMD)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr GpaDeviceClockModeAMD)) (clockMode)
+    poke ((p `plusPtr` 20 :: Ptr CFloat)) (CFloat (memoryClockRatioToPeak))
+    poke ((p `plusPtr` 24 :: Ptr CFloat)) (CFloat (engineClockRatioToPeak))
+    f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GPA_DEVICE_CLOCK_MODE_INFO_AMD)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr GpaDeviceClockModeAMD)) (zero)
+    poke ((p `plusPtr` 20 :: Ptr CFloat)) (CFloat (zero))
+    poke ((p `plusPtr` 24 :: Ptr CFloat)) (CFloat (zero))
+    f
+
+instance FromCStruct GpaDeviceClockModeInfoAMD where
+  peekCStruct p = do
+    clockMode <- peek @GpaDeviceClockModeAMD ((p `plusPtr` 16 :: Ptr GpaDeviceClockModeAMD))
+    memoryClockRatioToPeak <- peek @CFloat ((p `plusPtr` 20 :: Ptr CFloat))
+    engineClockRatioToPeak <- peek @CFloat ((p `plusPtr` 24 :: Ptr CFloat))
+    pure $ GpaDeviceClockModeInfoAMD
+             clockMode
+             (coerce @CFloat @Float memoryClockRatioToPeak)
+             (coerce @CFloat @Float engineClockRatioToPeak)
+
+instance Storable GpaDeviceClockModeInfoAMD where
+  sizeOf ~_ = 32
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero GpaDeviceClockModeInfoAMD where
+  zero = GpaDeviceClockModeInfoAMD
+           zero
+           zero
+           zero
+
+
+-- | VkGpaDeviceGetClockInfoAMD - Structure containing returned clock ratios
+-- or clock mode to set
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_gpa_interface VK_AMD_gpa_interface>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'getGpaDeviceClockInfoAMD'
+data GpaDeviceGetClockInfoAMD = GpaDeviceGetClockInfoAMD
+  { -- | @memoryClockRatioToPeak@ is the returned ratio of the current memory
+    -- clock to the maximum memory clock.
+    memoryClockRatioToPeak :: Float
+  , -- | @engineClockRatioToPeak@ is the returned ratio of the current engine
+    -- clock to the maximum engine clock.
+    engineClockRatioToPeak :: Float
+  , -- | @memoryClockFrequency@ is the current memory clock frequency in MHz.
+    memoryClockFrequency :: Word32
+  , -- | @engineClockFrequency@ is the current engine clock frequency in MHz.
+    engineClockFrequency :: Word32
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (GpaDeviceGetClockInfoAMD)
+#endif
+deriving instance Show GpaDeviceGetClockInfoAMD
+
+instance ToCStruct GpaDeviceGetClockInfoAMD where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p GpaDeviceGetClockInfoAMD{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GPA_DEVICE_GET_CLOCK_INFO_AMD)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr CFloat)) (CFloat (memoryClockRatioToPeak))
+    poke ((p `plusPtr` 20 :: Ptr CFloat)) (CFloat (engineClockRatioToPeak))
+    poke ((p `plusPtr` 24 :: Ptr Word32)) (memoryClockFrequency)
+    poke ((p `plusPtr` 28 :: Ptr Word32)) (engineClockFrequency)
+    f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GPA_DEVICE_GET_CLOCK_INFO_AMD)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr CFloat)) (CFloat (zero))
+    poke ((p `plusPtr` 20 :: Ptr CFloat)) (CFloat (zero))
+    poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 28 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct GpaDeviceGetClockInfoAMD where
+  peekCStruct p = do
+    memoryClockRatioToPeak <- peek @CFloat ((p `plusPtr` 16 :: Ptr CFloat))
+    engineClockRatioToPeak <- peek @CFloat ((p `plusPtr` 20 :: Ptr CFloat))
+    memoryClockFrequency <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))
+    engineClockFrequency <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))
+    pure $ GpaDeviceGetClockInfoAMD
+             (coerce @CFloat @Float memoryClockRatioToPeak)
+             (coerce @CFloat @Float engineClockRatioToPeak)
+             memoryClockFrequency
+             engineClockFrequency
+
+instance Storable GpaDeviceGetClockInfoAMD where
+  sizeOf ~_ = 32
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero GpaDeviceGetClockInfoAMD where
+  zero = GpaDeviceGetClockInfoAMD
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkGpaSessionCreateInfoAMD - Structure specifying parameters of a newly
+-- created GPA session
+--
+-- = Description
+--
+-- When sampling counters inside secondary command buffers, repeated
+-- invocations of the same secondary command buffer causes the previous
+-- results to be overwritten. To avoid this a GPA session object’s memory
+-- layout /can/ be cloned for use with multiple secondary invocations by
+-- specifying its handle in @secondaryCopySource@, allowing the new GPA
+-- session object to be the target of a copy using
+-- 'cmdCopyGpaSessionResultsAMD'.
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkGpaSessionCreateInfoAMD-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GPA_SESSION_CREATE_INFO_AMD'
+--
+-- -   #VUID-VkGpaSessionCreateInfoAMD-pNext-pNext# @pNext@ /must/ be
+--     @NULL@
+--
+-- -   #VUID-VkGpaSessionCreateInfoAMD-secondaryCopySource-parameter# If
+--     @secondaryCopySource@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', @secondaryCopySource@
+--     /must/ be a valid 'Vulkan.Extensions.Handles.GpaSessionAMD' handle
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_gpa_interface VK_AMD_gpa_interface>,
+-- 'Vulkan.Extensions.Handles.GpaSessionAMD',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType', 'createGpaSessionAMD'
+data GpaSessionCreateInfoAMD = GpaSessionCreateInfoAMD
+  { -- | @secondaryCopySource@ is a 'Vulkan.Extensions.Handles.GpaSessionAMD'
+    -- handle whose results /can/ be copied into this session.
+    secondaryCopySource :: GpaSessionAMD }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (GpaSessionCreateInfoAMD)
+#endif
+deriving instance Show GpaSessionCreateInfoAMD
+
+instance ToCStruct GpaSessionCreateInfoAMD where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p GpaSessionCreateInfoAMD{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GPA_SESSION_CREATE_INFO_AMD)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr GpaSessionAMD)) (secondaryCopySource)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GPA_SESSION_CREATE_INFO_AMD)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    f
+
+instance FromCStruct GpaSessionCreateInfoAMD where
+  peekCStruct p = do
+    secondaryCopySource <- peek @GpaSessionAMD ((p `plusPtr` 16 :: Ptr GpaSessionAMD))
+    pure $ GpaSessionCreateInfoAMD
+             secondaryCopySource
+
+instance Storable GpaSessionCreateInfoAMD where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero GpaSessionCreateInfoAMD where
+  zero = GpaSessionCreateInfoAMD
+           zero
+
+
+-- | VkGpaPerfBlockPropertiesFlagsAMD - Reserved for future use
+--
+-- = Description
+--
+-- 'GpaPerfBlockPropertiesFlagsAMD' is a bitmask type for setting GPA
+-- performance block property flags, but is currently reserved for future
+-- use.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_gpa_interface VK_AMD_gpa_interface>,
+-- 'Vulkan.Core10.FundamentalTypes.Flags', 'GpaPerfBlockPropertiesAMD'
+newtype GpaPerfBlockPropertiesFlagsAMD = GpaPerfBlockPropertiesFlagsAMD Flags
+  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
+
+conNameGpaPerfBlockPropertiesFlagsAMD :: String
+conNameGpaPerfBlockPropertiesFlagsAMD = "GpaPerfBlockPropertiesFlagsAMD"
+
+enumPrefixGpaPerfBlockPropertiesFlagsAMD :: String
+enumPrefixGpaPerfBlockPropertiesFlagsAMD = ""
+
+showTableGpaPerfBlockPropertiesFlagsAMD :: [(GpaPerfBlockPropertiesFlagsAMD, String)]
+showTableGpaPerfBlockPropertiesFlagsAMD = []
+
+instance Show GpaPerfBlockPropertiesFlagsAMD where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixGpaPerfBlockPropertiesFlagsAMD
+      showTableGpaPerfBlockPropertiesFlagsAMD
+      conNameGpaPerfBlockPropertiesFlagsAMD
+      (\(GpaPerfBlockPropertiesFlagsAMD x) -> x)
+      (\x -> showString "0x" . showHex x)
+
+instance Read GpaPerfBlockPropertiesFlagsAMD where
+  readPrec =
+    enumReadPrec
+      enumPrefixGpaPerfBlockPropertiesFlagsAMD
+      showTableGpaPerfBlockPropertiesFlagsAMD
+      conNameGpaPerfBlockPropertiesFlagsAMD
+      GpaPerfBlockPropertiesFlagsAMD
+
+-- | VkPhysicalDeviceGpaPropertiesFlagsAMD - Reserved for future use
+--
+-- = Description
+--
+-- 'PhysicalDeviceGpaPropertiesFlagsAMD' is a bitmask type for setting
+-- physical device GPA property flags, but is currently reserved for future
+-- use.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_gpa_interface VK_AMD_gpa_interface>,
+-- 'Vulkan.Core10.FundamentalTypes.Flags', 'PhysicalDeviceGpaPropertiesAMD'
+newtype PhysicalDeviceGpaPropertiesFlagsAMD = PhysicalDeviceGpaPropertiesFlagsAMD Flags
+  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
+
+conNamePhysicalDeviceGpaPropertiesFlagsAMD :: String
+conNamePhysicalDeviceGpaPropertiesFlagsAMD = "PhysicalDeviceGpaPropertiesFlagsAMD"
+
+enumPrefixPhysicalDeviceGpaPropertiesFlagsAMD :: String
+enumPrefixPhysicalDeviceGpaPropertiesFlagsAMD = ""
+
+showTablePhysicalDeviceGpaPropertiesFlagsAMD :: [(PhysicalDeviceGpaPropertiesFlagsAMD, String)]
+showTablePhysicalDeviceGpaPropertiesFlagsAMD = []
+
+instance Show PhysicalDeviceGpaPropertiesFlagsAMD where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixPhysicalDeviceGpaPropertiesFlagsAMD
+      showTablePhysicalDeviceGpaPropertiesFlagsAMD
+      conNamePhysicalDeviceGpaPropertiesFlagsAMD
+      (\(PhysicalDeviceGpaPropertiesFlagsAMD x) -> x)
+      (\x -> showString "0x" . showHex x)
+
+instance Read PhysicalDeviceGpaPropertiesFlagsAMD where
+  readPrec =
+    enumReadPrec
+      enumPrefixPhysicalDeviceGpaPropertiesFlagsAMD
+      showTablePhysicalDeviceGpaPropertiesFlagsAMD
+      conNamePhysicalDeviceGpaPropertiesFlagsAMD
+      PhysicalDeviceGpaPropertiesFlagsAMD
+
+type GpaSqShaderStageFlagsAMD = GpaSqShaderStageFlagBitsAMD
+
+-- | VkGpaSqShaderStageFlagBitsAMD - Bitmask specifying GPU shader stage to
+-- sample
+--
+-- = Description
+--
+-- -   'GPA_SQ_SHADER_STAGE_PS_BIT_AMD' specifies the pixel shader stage.
+--
+-- -   'GPA_SQ_SHADER_STAGE_VS_BIT_AMD' specifies the vertex shader stage.
+--
+-- -   'GPA_SQ_SHADER_STAGE_GS_BIT_AMD' specifies the geometry shader
+--     stage.
+--
+-- -   'GPA_SQ_SHADER_STAGE_ES_BIT_AMD' specifies the export shader stage.
+--
+-- -   'GPA_SQ_SHADER_STAGE_HS_BIT_AMD' specifies the hull shader stage.
+--
+-- -   'GPA_SQ_SHADER_STAGE_LS_BIT_AMD' specifies the local shader stage.
+--
+-- -   'GPA_SQ_SHADER_STAGE_CS_BIT_AMD' specifies the compute shader stage.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_gpa_interface VK_AMD_gpa_interface>,
+-- 'GpaSqShaderStageFlagsAMD'
+newtype GpaSqShaderStageFlagBitsAMD = GpaSqShaderStageFlagBitsAMD Flags
+  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
+
+-- No documentation found for Nested "VkGpaSqShaderStageFlagBitsAMD" "VK_GPA_SQ_SHADER_STAGE_PS_BIT_AMD"
+pattern GPA_SQ_SHADER_STAGE_PS_BIT_AMD = GpaSqShaderStageFlagBitsAMD 0x00000001
+
+-- No documentation found for Nested "VkGpaSqShaderStageFlagBitsAMD" "VK_GPA_SQ_SHADER_STAGE_VS_BIT_AMD"
+pattern GPA_SQ_SHADER_STAGE_VS_BIT_AMD = GpaSqShaderStageFlagBitsAMD 0x00000002
+
+-- No documentation found for Nested "VkGpaSqShaderStageFlagBitsAMD" "VK_GPA_SQ_SHADER_STAGE_GS_BIT_AMD"
+pattern GPA_SQ_SHADER_STAGE_GS_BIT_AMD = GpaSqShaderStageFlagBitsAMD 0x00000004
+
+-- No documentation found for Nested "VkGpaSqShaderStageFlagBitsAMD" "VK_GPA_SQ_SHADER_STAGE_ES_BIT_AMD"
+pattern GPA_SQ_SHADER_STAGE_ES_BIT_AMD = GpaSqShaderStageFlagBitsAMD 0x00000008
+
+-- No documentation found for Nested "VkGpaSqShaderStageFlagBitsAMD" "VK_GPA_SQ_SHADER_STAGE_HS_BIT_AMD"
+pattern GPA_SQ_SHADER_STAGE_HS_BIT_AMD = GpaSqShaderStageFlagBitsAMD 0x00000010
+
+-- No documentation found for Nested "VkGpaSqShaderStageFlagBitsAMD" "VK_GPA_SQ_SHADER_STAGE_LS_BIT_AMD"
+pattern GPA_SQ_SHADER_STAGE_LS_BIT_AMD = GpaSqShaderStageFlagBitsAMD 0x00000020
+
+-- No documentation found for Nested "VkGpaSqShaderStageFlagBitsAMD" "VK_GPA_SQ_SHADER_STAGE_CS_BIT_AMD"
+pattern GPA_SQ_SHADER_STAGE_CS_BIT_AMD = GpaSqShaderStageFlagBitsAMD 0x00000040
+
+conNameGpaSqShaderStageFlagBitsAMD :: String
+conNameGpaSqShaderStageFlagBitsAMD = "GpaSqShaderStageFlagBitsAMD"
+
+enumPrefixGpaSqShaderStageFlagBitsAMD :: String
+enumPrefixGpaSqShaderStageFlagBitsAMD = "GPA_SQ_SHADER_STAGE_"
+
+showTableGpaSqShaderStageFlagBitsAMD :: [(GpaSqShaderStageFlagBitsAMD, String)]
+showTableGpaSqShaderStageFlagBitsAMD =
+  [
+    ( GPA_SQ_SHADER_STAGE_PS_BIT_AMD
+    , "PS_BIT_AMD"
+    )
+  ,
+    ( GPA_SQ_SHADER_STAGE_VS_BIT_AMD
+    , "VS_BIT_AMD"
+    )
+  ,
+    ( GPA_SQ_SHADER_STAGE_GS_BIT_AMD
+    , "GS_BIT_AMD"
+    )
+  ,
+    ( GPA_SQ_SHADER_STAGE_ES_BIT_AMD
+    , "ES_BIT_AMD"
+    )
+  ,
+    ( GPA_SQ_SHADER_STAGE_HS_BIT_AMD
+    , "HS_BIT_AMD"
+    )
+  ,
+    ( GPA_SQ_SHADER_STAGE_LS_BIT_AMD
+    , "LS_BIT_AMD"
+    )
+  ,
+    ( GPA_SQ_SHADER_STAGE_CS_BIT_AMD
+    , "CS_BIT_AMD"
+    )
+  ]
+
+instance Show GpaSqShaderStageFlagBitsAMD where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixGpaSqShaderStageFlagBitsAMD
+      showTableGpaSqShaderStageFlagBitsAMD
+      conNameGpaSqShaderStageFlagBitsAMD
+      (\(GpaSqShaderStageFlagBitsAMD x) -> x)
+      (\x -> showString "0x" . showHex x)
+
+instance Read GpaSqShaderStageFlagBitsAMD where
+  readPrec =
+    enumReadPrec
+      enumPrefixGpaSqShaderStageFlagBitsAMD
+      showTableGpaSqShaderStageFlagBitsAMD
+      conNameGpaSqShaderStageFlagBitsAMD
+      GpaSqShaderStageFlagBitsAMD
+
+-- | VkGpaPerfBlockAMD - Enum providing performance counter types
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_gpa_interface VK_AMD_gpa_interface>,
+-- 'GpaPerfBlockPropertiesAMD', 'GpaPerfCounterAMD'
+newtype GpaPerfBlockAMD = GpaPerfBlockAMD Int32
+  deriving newtype (Eq, Ord, Storable, Zero)
+
+-- No documentation found for Nested "VkGpaPerfBlockAMD" "VK_GPA_PERF_BLOCK_CPF_AMD"
+pattern GPA_PERF_BLOCK_CPF_AMD = GpaPerfBlockAMD 0
+
+-- No documentation found for Nested "VkGpaPerfBlockAMD" "VK_GPA_PERF_BLOCK_IA_AMD"
+pattern GPA_PERF_BLOCK_IA_AMD = GpaPerfBlockAMD 1
+
+-- No documentation found for Nested "VkGpaPerfBlockAMD" "VK_GPA_PERF_BLOCK_VGT_AMD"
+pattern GPA_PERF_BLOCK_VGT_AMD = GpaPerfBlockAMD 2
+
+-- No documentation found for Nested "VkGpaPerfBlockAMD" "VK_GPA_PERF_BLOCK_PA_AMD"
+pattern GPA_PERF_BLOCK_PA_AMD = GpaPerfBlockAMD 3
+
+-- No documentation found for Nested "VkGpaPerfBlockAMD" "VK_GPA_PERF_BLOCK_SC_AMD"
+pattern GPA_PERF_BLOCK_SC_AMD = GpaPerfBlockAMD 4
+
+-- No documentation found for Nested "VkGpaPerfBlockAMD" "VK_GPA_PERF_BLOCK_SPI_AMD"
+pattern GPA_PERF_BLOCK_SPI_AMD = GpaPerfBlockAMD 5
+
+-- No documentation found for Nested "VkGpaPerfBlockAMD" "VK_GPA_PERF_BLOCK_SQ_AMD"
+pattern GPA_PERF_BLOCK_SQ_AMD = GpaPerfBlockAMD 6
+
+-- No documentation found for Nested "VkGpaPerfBlockAMD" "VK_GPA_PERF_BLOCK_SX_AMD"
+pattern GPA_PERF_BLOCK_SX_AMD = GpaPerfBlockAMD 7
+
+-- No documentation found for Nested "VkGpaPerfBlockAMD" "VK_GPA_PERF_BLOCK_TA_AMD"
+pattern GPA_PERF_BLOCK_TA_AMD = GpaPerfBlockAMD 8
+
+-- No documentation found for Nested "VkGpaPerfBlockAMD" "VK_GPA_PERF_BLOCK_TD_AMD"
+pattern GPA_PERF_BLOCK_TD_AMD = GpaPerfBlockAMD 9
+
+-- No documentation found for Nested "VkGpaPerfBlockAMD" "VK_GPA_PERF_BLOCK_TCP_AMD"
+pattern GPA_PERF_BLOCK_TCP_AMD = GpaPerfBlockAMD 10
+
+-- No documentation found for Nested "VkGpaPerfBlockAMD" "VK_GPA_PERF_BLOCK_TCC_AMD"
+pattern GPA_PERF_BLOCK_TCC_AMD = GpaPerfBlockAMD 11
+
+-- No documentation found for Nested "VkGpaPerfBlockAMD" "VK_GPA_PERF_BLOCK_TCA_AMD"
+pattern GPA_PERF_BLOCK_TCA_AMD = GpaPerfBlockAMD 12
+
+-- No documentation found for Nested "VkGpaPerfBlockAMD" "VK_GPA_PERF_BLOCK_DB_AMD"
+pattern GPA_PERF_BLOCK_DB_AMD = GpaPerfBlockAMD 13
+
+-- No documentation found for Nested "VkGpaPerfBlockAMD" "VK_GPA_PERF_BLOCK_CB_AMD"
+pattern GPA_PERF_BLOCK_CB_AMD = GpaPerfBlockAMD 14
+
+-- No documentation found for Nested "VkGpaPerfBlockAMD" "VK_GPA_PERF_BLOCK_GDS_AMD"
+pattern GPA_PERF_BLOCK_GDS_AMD = GpaPerfBlockAMD 15
+
+-- No documentation found for Nested "VkGpaPerfBlockAMD" "VK_GPA_PERF_BLOCK_SRBM_AMD"
+pattern GPA_PERF_BLOCK_SRBM_AMD = GpaPerfBlockAMD 16
+
+-- No documentation found for Nested "VkGpaPerfBlockAMD" "VK_GPA_PERF_BLOCK_GRBM_AMD"
+pattern GPA_PERF_BLOCK_GRBM_AMD = GpaPerfBlockAMD 17
+
+-- No documentation found for Nested "VkGpaPerfBlockAMD" "VK_GPA_PERF_BLOCK_GRBM_SE_AMD"
+pattern GPA_PERF_BLOCK_GRBM_SE_AMD = GpaPerfBlockAMD 18
+
+-- No documentation found for Nested "VkGpaPerfBlockAMD" "VK_GPA_PERF_BLOCK_RLC_AMD"
+pattern GPA_PERF_BLOCK_RLC_AMD = GpaPerfBlockAMD 19
+
+-- No documentation found for Nested "VkGpaPerfBlockAMD" "VK_GPA_PERF_BLOCK_DMA_AMD"
+pattern GPA_PERF_BLOCK_DMA_AMD = GpaPerfBlockAMD 20
+
+-- No documentation found for Nested "VkGpaPerfBlockAMD" "VK_GPA_PERF_BLOCK_MC_AMD"
+pattern GPA_PERF_BLOCK_MC_AMD = GpaPerfBlockAMD 21
+
+-- No documentation found for Nested "VkGpaPerfBlockAMD" "VK_GPA_PERF_BLOCK_CPG_AMD"
+pattern GPA_PERF_BLOCK_CPG_AMD = GpaPerfBlockAMD 22
+
+-- No documentation found for Nested "VkGpaPerfBlockAMD" "VK_GPA_PERF_BLOCK_CPC_AMD"
+pattern GPA_PERF_BLOCK_CPC_AMD = GpaPerfBlockAMD 23
+
+-- No documentation found for Nested "VkGpaPerfBlockAMD" "VK_GPA_PERF_BLOCK_WD_AMD"
+pattern GPA_PERF_BLOCK_WD_AMD = GpaPerfBlockAMD 24
+
+-- No documentation found for Nested "VkGpaPerfBlockAMD" "VK_GPA_PERF_BLOCK_TCS_AMD"
+pattern GPA_PERF_BLOCK_TCS_AMD = GpaPerfBlockAMD 25
+
+-- No documentation found for Nested "VkGpaPerfBlockAMD" "VK_GPA_PERF_BLOCK_ATC_AMD"
+pattern GPA_PERF_BLOCK_ATC_AMD = GpaPerfBlockAMD 26
+
+-- No documentation found for Nested "VkGpaPerfBlockAMD" "VK_GPA_PERF_BLOCK_ATC_L2_AMD"
+pattern GPA_PERF_BLOCK_ATC_L2_AMD = GpaPerfBlockAMD 27
+
+-- No documentation found for Nested "VkGpaPerfBlockAMD" "VK_GPA_PERF_BLOCK_MC_VM_L2_AMD"
+pattern GPA_PERF_BLOCK_MC_VM_L2_AMD = GpaPerfBlockAMD 28
+
+-- No documentation found for Nested "VkGpaPerfBlockAMD" "VK_GPA_PERF_BLOCK_EA_AMD"
+pattern GPA_PERF_BLOCK_EA_AMD = GpaPerfBlockAMD 29
+
+-- No documentation found for Nested "VkGpaPerfBlockAMD" "VK_GPA_PERF_BLOCK_RPB_AMD"
+pattern GPA_PERF_BLOCK_RPB_AMD = GpaPerfBlockAMD 30
+
+-- No documentation found for Nested "VkGpaPerfBlockAMD" "VK_GPA_PERF_BLOCK_RMI_AMD"
+pattern GPA_PERF_BLOCK_RMI_AMD = GpaPerfBlockAMD 31
+
+-- No documentation found for Nested "VkGpaPerfBlockAMD" "VK_GPA_PERF_BLOCK_UMCCH_AMD"
+pattern GPA_PERF_BLOCK_UMCCH_AMD = GpaPerfBlockAMD 32
+
+-- No documentation found for Nested "VkGpaPerfBlockAMD" "VK_GPA_PERF_BLOCK_GE_AMD"
+pattern GPA_PERF_BLOCK_GE_AMD = GpaPerfBlockAMD 33
+
+-- No documentation found for Nested "VkGpaPerfBlockAMD" "VK_GPA_PERF_BLOCK_GL1A_AMD"
+pattern GPA_PERF_BLOCK_GL1A_AMD = GpaPerfBlockAMD 34
+
+-- No documentation found for Nested "VkGpaPerfBlockAMD" "VK_GPA_PERF_BLOCK_GL1C_AMD"
+pattern GPA_PERF_BLOCK_GL1C_AMD = GpaPerfBlockAMD 35
+
+-- No documentation found for Nested "VkGpaPerfBlockAMD" "VK_GPA_PERF_BLOCK_GL1CG_AMD"
+pattern GPA_PERF_BLOCK_GL1CG_AMD = GpaPerfBlockAMD 36
+
+-- No documentation found for Nested "VkGpaPerfBlockAMD" "VK_GPA_PERF_BLOCK_GL2A_AMD"
+pattern GPA_PERF_BLOCK_GL2A_AMD = GpaPerfBlockAMD 37
+
+-- No documentation found for Nested "VkGpaPerfBlockAMD" "VK_GPA_PERF_BLOCK_GL2C_AMD"
+pattern GPA_PERF_BLOCK_GL2C_AMD = GpaPerfBlockAMD 38
+
+-- No documentation found for Nested "VkGpaPerfBlockAMD" "VK_GPA_PERF_BLOCK_CHA_AMD"
+pattern GPA_PERF_BLOCK_CHA_AMD = GpaPerfBlockAMD 39
+
+-- No documentation found for Nested "VkGpaPerfBlockAMD" "VK_GPA_PERF_BLOCK_CHC_AMD"
+pattern GPA_PERF_BLOCK_CHC_AMD = GpaPerfBlockAMD 40
+
+-- No documentation found for Nested "VkGpaPerfBlockAMD" "VK_GPA_PERF_BLOCK_CHCG_AMD"
+pattern GPA_PERF_BLOCK_CHCG_AMD = GpaPerfBlockAMD 41
+
+-- No documentation found for Nested "VkGpaPerfBlockAMD" "VK_GPA_PERF_BLOCK_GUS_AMD"
+pattern GPA_PERF_BLOCK_GUS_AMD = GpaPerfBlockAMD 42
+
+-- No documentation found for Nested "VkGpaPerfBlockAMD" "VK_GPA_PERF_BLOCK_GCR_AMD"
+pattern GPA_PERF_BLOCK_GCR_AMD = GpaPerfBlockAMD 43
+
+-- No documentation found for Nested "VkGpaPerfBlockAMD" "VK_GPA_PERF_BLOCK_PH_AMD"
+pattern GPA_PERF_BLOCK_PH_AMD = GpaPerfBlockAMD 44
+
+-- No documentation found for Nested "VkGpaPerfBlockAMD" "VK_GPA_PERF_BLOCK_UTCL1_AMD"
+pattern GPA_PERF_BLOCK_UTCL1_AMD = GpaPerfBlockAMD 45
+
+-- No documentation found for Nested "VkGpaPerfBlockAMD" "VK_GPA_PERF_BLOCK_GE_DIST_AMD"
+pattern GPA_PERF_BLOCK_GE_DIST_AMD = GpaPerfBlockAMD 46
+
+-- No documentation found for Nested "VkGpaPerfBlockAMD" "VK_GPA_PERF_BLOCK_GE_SE_AMD"
+pattern GPA_PERF_BLOCK_GE_SE_AMD = GpaPerfBlockAMD 47
+
+-- No documentation found for Nested "VkGpaPerfBlockAMD" "VK_GPA_PERF_BLOCK_DF_MALL_AMD"
+pattern GPA_PERF_BLOCK_DF_MALL_AMD = GpaPerfBlockAMD 48
+
+-- No documentation found for Nested "VkGpaPerfBlockAMD" "VK_GPA_PERF_BLOCK_SQ_WGP_AMD"
+pattern GPA_PERF_BLOCK_SQ_WGP_AMD = GpaPerfBlockAMD 49
+
+-- No documentation found for Nested "VkGpaPerfBlockAMD" "VK_GPA_PERF_BLOCK_PC_AMD"
+pattern GPA_PERF_BLOCK_PC_AMD = GpaPerfBlockAMD 50
+
+-- No documentation found for Nested "VkGpaPerfBlockAMD" "VK_GPA_PERF_BLOCK_GL1XA_AMD"
+pattern GPA_PERF_BLOCK_GL1XA_AMD = GpaPerfBlockAMD 51
+
+-- No documentation found for Nested "VkGpaPerfBlockAMD" "VK_GPA_PERF_BLOCK_GL1XC_AMD"
+pattern GPA_PERF_BLOCK_GL1XC_AMD = GpaPerfBlockAMD 52
+
+-- No documentation found for Nested "VkGpaPerfBlockAMD" "VK_GPA_PERF_BLOCK_WGS_AMD"
+pattern GPA_PERF_BLOCK_WGS_AMD = GpaPerfBlockAMD 53
+
+-- No documentation found for Nested "VkGpaPerfBlockAMD" "VK_GPA_PERF_BLOCK_EACPWD_AMD"
+pattern GPA_PERF_BLOCK_EACPWD_AMD = GpaPerfBlockAMD 54
+
+-- No documentation found for Nested "VkGpaPerfBlockAMD" "VK_GPA_PERF_BLOCK_EASE_AMD"
+pattern GPA_PERF_BLOCK_EASE_AMD = GpaPerfBlockAMD 55
+
+-- No documentation found for Nested "VkGpaPerfBlockAMD" "VK_GPA_PERF_BLOCK_RLCUSER_AMD"
+pattern GPA_PERF_BLOCK_RLCUSER_AMD = GpaPerfBlockAMD 56
+
+{-# COMPLETE
+  GPA_PERF_BLOCK_CPF_AMD
+  , GPA_PERF_BLOCK_IA_AMD
+  , GPA_PERF_BLOCK_VGT_AMD
+  , GPA_PERF_BLOCK_PA_AMD
+  , GPA_PERF_BLOCK_SC_AMD
+  , GPA_PERF_BLOCK_SPI_AMD
+  , GPA_PERF_BLOCK_SQ_AMD
+  , GPA_PERF_BLOCK_SX_AMD
+  , GPA_PERF_BLOCK_TA_AMD
+  , GPA_PERF_BLOCK_TD_AMD
+  , GPA_PERF_BLOCK_TCP_AMD
+  , GPA_PERF_BLOCK_TCC_AMD
+  , GPA_PERF_BLOCK_TCA_AMD
+  , GPA_PERF_BLOCK_DB_AMD
+  , GPA_PERF_BLOCK_CB_AMD
+  , GPA_PERF_BLOCK_GDS_AMD
+  , GPA_PERF_BLOCK_SRBM_AMD
+  , GPA_PERF_BLOCK_GRBM_AMD
+  , GPA_PERF_BLOCK_GRBM_SE_AMD
+  , GPA_PERF_BLOCK_RLC_AMD
+  , GPA_PERF_BLOCK_DMA_AMD
+  , GPA_PERF_BLOCK_MC_AMD
+  , GPA_PERF_BLOCK_CPG_AMD
+  , GPA_PERF_BLOCK_CPC_AMD
+  , GPA_PERF_BLOCK_WD_AMD
+  , GPA_PERF_BLOCK_TCS_AMD
+  , GPA_PERF_BLOCK_ATC_AMD
+  , GPA_PERF_BLOCK_ATC_L2_AMD
+  , GPA_PERF_BLOCK_MC_VM_L2_AMD
+  , GPA_PERF_BLOCK_EA_AMD
+  , GPA_PERF_BLOCK_RPB_AMD
+  , GPA_PERF_BLOCK_RMI_AMD
+  , GPA_PERF_BLOCK_UMCCH_AMD
+  , GPA_PERF_BLOCK_GE_AMD
+  , GPA_PERF_BLOCK_GL1A_AMD
+  , GPA_PERF_BLOCK_GL1C_AMD
+  , GPA_PERF_BLOCK_GL1CG_AMD
+  , GPA_PERF_BLOCK_GL2A_AMD
+  , GPA_PERF_BLOCK_GL2C_AMD
+  , GPA_PERF_BLOCK_CHA_AMD
+  , GPA_PERF_BLOCK_CHC_AMD
+  , GPA_PERF_BLOCK_CHCG_AMD
+  , GPA_PERF_BLOCK_GUS_AMD
+  , GPA_PERF_BLOCK_GCR_AMD
+  , GPA_PERF_BLOCK_PH_AMD
+  , GPA_PERF_BLOCK_UTCL1_AMD
+  , GPA_PERF_BLOCK_GE_DIST_AMD
+  , GPA_PERF_BLOCK_GE_SE_AMD
+  , GPA_PERF_BLOCK_DF_MALL_AMD
+  , GPA_PERF_BLOCK_SQ_WGP_AMD
+  , GPA_PERF_BLOCK_PC_AMD
+  , GPA_PERF_BLOCK_GL1XA_AMD
+  , GPA_PERF_BLOCK_GL1XC_AMD
+  , GPA_PERF_BLOCK_WGS_AMD
+  , GPA_PERF_BLOCK_EACPWD_AMD
+  , GPA_PERF_BLOCK_EASE_AMD
+  , GPA_PERF_BLOCK_RLCUSER_AMD ::
+    GpaPerfBlockAMD
+  #-}
+
+conNameGpaPerfBlockAMD :: String
+conNameGpaPerfBlockAMD = "GpaPerfBlockAMD"
+
+enumPrefixGpaPerfBlockAMD :: String
+enumPrefixGpaPerfBlockAMD = "GPA_PERF_BLOCK_"
+
+showTableGpaPerfBlockAMD :: [(GpaPerfBlockAMD, String)]
+showTableGpaPerfBlockAMD =
+  [ (GPA_PERF_BLOCK_CPF_AMD, "CPF_AMD")
+  , (GPA_PERF_BLOCK_IA_AMD, "IA_AMD")
+  , (GPA_PERF_BLOCK_VGT_AMD, "VGT_AMD")
+  , (GPA_PERF_BLOCK_PA_AMD, "PA_AMD")
+  , (GPA_PERF_BLOCK_SC_AMD, "SC_AMD")
+  , (GPA_PERF_BLOCK_SPI_AMD, "SPI_AMD")
+  , (GPA_PERF_BLOCK_SQ_AMD, "SQ_AMD")
+  , (GPA_PERF_BLOCK_SX_AMD, "SX_AMD")
+  , (GPA_PERF_BLOCK_TA_AMD, "TA_AMD")
+  , (GPA_PERF_BLOCK_TD_AMD, "TD_AMD")
+  , (GPA_PERF_BLOCK_TCP_AMD, "TCP_AMD")
+  , (GPA_PERF_BLOCK_TCC_AMD, "TCC_AMD")
+  , (GPA_PERF_BLOCK_TCA_AMD, "TCA_AMD")
+  , (GPA_PERF_BLOCK_DB_AMD, "DB_AMD")
+  , (GPA_PERF_BLOCK_CB_AMD, "CB_AMD")
+  , (GPA_PERF_BLOCK_GDS_AMD, "GDS_AMD")
+  , (GPA_PERF_BLOCK_SRBM_AMD, "SRBM_AMD")
+  , (GPA_PERF_BLOCK_GRBM_AMD, "GRBM_AMD")
+  , (GPA_PERF_BLOCK_GRBM_SE_AMD, "GRBM_SE_AMD")
+  , (GPA_PERF_BLOCK_RLC_AMD, "RLC_AMD")
+  , (GPA_PERF_BLOCK_DMA_AMD, "DMA_AMD")
+  , (GPA_PERF_BLOCK_MC_AMD, "MC_AMD")
+  , (GPA_PERF_BLOCK_CPG_AMD, "CPG_AMD")
+  , (GPA_PERF_BLOCK_CPC_AMD, "CPC_AMD")
+  , (GPA_PERF_BLOCK_WD_AMD, "WD_AMD")
+  , (GPA_PERF_BLOCK_TCS_AMD, "TCS_AMD")
+  , (GPA_PERF_BLOCK_ATC_AMD, "ATC_AMD")
+  , (GPA_PERF_BLOCK_ATC_L2_AMD, "ATC_L2_AMD")
+  , (GPA_PERF_BLOCK_MC_VM_L2_AMD, "MC_VM_L2_AMD")
+  , (GPA_PERF_BLOCK_EA_AMD, "EA_AMD")
+  , (GPA_PERF_BLOCK_RPB_AMD, "RPB_AMD")
+  , (GPA_PERF_BLOCK_RMI_AMD, "RMI_AMD")
+  , (GPA_PERF_BLOCK_UMCCH_AMD, "UMCCH_AMD")
+  , (GPA_PERF_BLOCK_GE_AMD, "GE_AMD")
+  , (GPA_PERF_BLOCK_GL1A_AMD, "GL1A_AMD")
+  , (GPA_PERF_BLOCK_GL1C_AMD, "GL1C_AMD")
+  , (GPA_PERF_BLOCK_GL1CG_AMD, "GL1CG_AMD")
+  , (GPA_PERF_BLOCK_GL2A_AMD, "GL2A_AMD")
+  , (GPA_PERF_BLOCK_GL2C_AMD, "GL2C_AMD")
+  , (GPA_PERF_BLOCK_CHA_AMD, "CHA_AMD")
+  , (GPA_PERF_BLOCK_CHC_AMD, "CHC_AMD")
+  , (GPA_PERF_BLOCK_CHCG_AMD, "CHCG_AMD")
+  , (GPA_PERF_BLOCK_GUS_AMD, "GUS_AMD")
+  , (GPA_PERF_BLOCK_GCR_AMD, "GCR_AMD")
+  , (GPA_PERF_BLOCK_PH_AMD, "PH_AMD")
+  , (GPA_PERF_BLOCK_UTCL1_AMD, "UTCL1_AMD")
+  , (GPA_PERF_BLOCK_GE_DIST_AMD, "GE_DIST_AMD")
+  , (GPA_PERF_BLOCK_GE_SE_AMD, "GE_SE_AMD")
+  , (GPA_PERF_BLOCK_DF_MALL_AMD, "DF_MALL_AMD")
+  , (GPA_PERF_BLOCK_SQ_WGP_AMD, "SQ_WGP_AMD")
+  , (GPA_PERF_BLOCK_PC_AMD, "PC_AMD")
+  , (GPA_PERF_BLOCK_GL1XA_AMD, "GL1XA_AMD")
+  , (GPA_PERF_BLOCK_GL1XC_AMD, "GL1XC_AMD")
+  , (GPA_PERF_BLOCK_WGS_AMD, "WGS_AMD")
+  , (GPA_PERF_BLOCK_EACPWD_AMD, "EACPWD_AMD")
+  , (GPA_PERF_BLOCK_EASE_AMD, "EASE_AMD")
+  , (GPA_PERF_BLOCK_RLCUSER_AMD, "RLCUSER_AMD")
+  ]
+
+instance Show GpaPerfBlockAMD where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixGpaPerfBlockAMD
+      showTableGpaPerfBlockAMD
+      conNameGpaPerfBlockAMD
+      (\(GpaPerfBlockAMD x) -> x)
+      (showsPrec 11)
+
+instance Read GpaPerfBlockAMD where
+  readPrec =
+    enumReadPrec
+      enumPrefixGpaPerfBlockAMD
+      showTableGpaPerfBlockAMD
+      conNameGpaPerfBlockAMD
+      GpaPerfBlockAMD
+
+-- | VkGpaSampleTypeAMD - Enum providing the sample type
+--
+-- = Description
+--
+-- -   'GPA_SAMPLE_TYPE_CUMULATIVE_AMD' specifies that one 64-bit result
+--     will be returned per global performance counter, representing the
+--     cumulative delta for that counter over the sample period. Cumulative
+--     samples /must/ begin and end in the same command buffer.
+--
+-- -   'GPA_SAMPLE_TYPE_TRACE_AMD' specifies that a buffer will be filled
+--     with SQTT results data in RGP file format, and\/or streaming
+--     performance monitor data. Trace samples /may/ span multiple command
+--     buffers.
+--
+-- -   'GPA_SAMPLE_TYPE_TIMING_AMD' specifies that two 64-bit results will
+--     be recorded to gather timestamp data.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_gpa_interface VK_AMD_gpa_interface>,
+-- 'GpaSampleBeginInfoAMD'
+newtype GpaSampleTypeAMD = GpaSampleTypeAMD Int32
+  deriving newtype (Eq, Ord, Storable, Zero)
+
+-- No documentation found for Nested "VkGpaSampleTypeAMD" "VK_GPA_SAMPLE_TYPE_CUMULATIVE_AMD"
+pattern GPA_SAMPLE_TYPE_CUMULATIVE_AMD = GpaSampleTypeAMD 0
+
+-- No documentation found for Nested "VkGpaSampleTypeAMD" "VK_GPA_SAMPLE_TYPE_TRACE_AMD"
+pattern GPA_SAMPLE_TYPE_TRACE_AMD = GpaSampleTypeAMD 1
+
+-- No documentation found for Nested "VkGpaSampleTypeAMD" "VK_GPA_SAMPLE_TYPE_TIMING_AMD"
+pattern GPA_SAMPLE_TYPE_TIMING_AMD = GpaSampleTypeAMD 2
+
+{-# COMPLETE
+  GPA_SAMPLE_TYPE_CUMULATIVE_AMD
+  , GPA_SAMPLE_TYPE_TRACE_AMD
+  , GPA_SAMPLE_TYPE_TIMING_AMD ::
+    GpaSampleTypeAMD
+  #-}
+
+conNameGpaSampleTypeAMD :: String
+conNameGpaSampleTypeAMD = "GpaSampleTypeAMD"
+
+enumPrefixGpaSampleTypeAMD :: String
+enumPrefixGpaSampleTypeAMD = "GPA_SAMPLE_TYPE_"
+
+showTableGpaSampleTypeAMD :: [(GpaSampleTypeAMD, String)]
+showTableGpaSampleTypeAMD =
+  [ (GPA_SAMPLE_TYPE_CUMULATIVE_AMD, "CUMULATIVE_AMD")
+  , (GPA_SAMPLE_TYPE_TRACE_AMD, "TRACE_AMD")
+  , (GPA_SAMPLE_TYPE_TIMING_AMD, "TIMING_AMD")
+  ]
+
+instance Show GpaSampleTypeAMD where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixGpaSampleTypeAMD
+      showTableGpaSampleTypeAMD
+      conNameGpaSampleTypeAMD
+      (\(GpaSampleTypeAMD x) -> x)
+      (showsPrec 11)
+
+instance Read GpaSampleTypeAMD where
+  readPrec =
+    enumReadPrec
+      enumPrefixGpaSampleTypeAMD
+      showTableGpaSampleTypeAMD
+      conNameGpaSampleTypeAMD
+      GpaSampleTypeAMD
+
+-- | VkGpaDeviceClockModeAMD - Enum providing the clock mode or query
+--
+-- = Description
+--
+-- -   'GPA_DEVICE_CLOCK_MODE_DEFAULT_AMD' specifies that device clocks and
+--     other power settings are restored to their default values.
+--
+-- -   'GPA_DEVICE_CLOCK_MODE_QUERY_AMD' specifies that the current clock
+--     values should be queried, with no new values set.
+--
+-- -   'GPA_DEVICE_CLOCK_MODE_PROFILING_AMD' specifies that clocks are set
+--     to a constant amount which is known to be power and thermal
+--     sustainable. The engine\/memory clock ratio will be kept the same as
+--     much as possible.
+--
+-- -   'GPA_DEVICE_CLOCK_MODE_MIN_MEMORY_AMD' specifies that the memory
+--     clock is set to the lowest available level and the engine clock is
+--     set to a thermal and power sustainable level.
+--
+-- -   'GPA_DEVICE_CLOCK_MODE_MIN_ENGINE_AMD' specifies that the engine
+--     clock is set to the lowest available level and the memory clock is
+--     set to a thermal and power sustainable level.
+--
+-- -   'GPA_DEVICE_CLOCK_MODE_PEAK_AMD' specifies that the clocks set to
+--     maximum when possible and fans set to maximum. Under power and
+--     thermal constraints device will clock down.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_gpa_interface VK_AMD_gpa_interface>,
+-- 'GpaDeviceClockModeInfoAMD'
+newtype GpaDeviceClockModeAMD = GpaDeviceClockModeAMD Int32
+  deriving newtype (Eq, Ord, Storable, Zero)
+
+-- No documentation found for Nested "VkGpaDeviceClockModeAMD" "VK_GPA_DEVICE_CLOCK_MODE_DEFAULT_AMD"
+pattern GPA_DEVICE_CLOCK_MODE_DEFAULT_AMD = GpaDeviceClockModeAMD 0
+
+-- No documentation found for Nested "VkGpaDeviceClockModeAMD" "VK_GPA_DEVICE_CLOCK_MODE_QUERY_AMD"
+pattern GPA_DEVICE_CLOCK_MODE_QUERY_AMD = GpaDeviceClockModeAMD 1
+
+-- No documentation found for Nested "VkGpaDeviceClockModeAMD" "VK_GPA_DEVICE_CLOCK_MODE_PROFILING_AMD"
+pattern GPA_DEVICE_CLOCK_MODE_PROFILING_AMD = GpaDeviceClockModeAMD 2
+
+-- No documentation found for Nested "VkGpaDeviceClockModeAMD" "VK_GPA_DEVICE_CLOCK_MODE_MIN_MEMORY_AMD"
+pattern GPA_DEVICE_CLOCK_MODE_MIN_MEMORY_AMD = GpaDeviceClockModeAMD 3
+
+-- No documentation found for Nested "VkGpaDeviceClockModeAMD" "VK_GPA_DEVICE_CLOCK_MODE_MIN_ENGINE_AMD"
+pattern GPA_DEVICE_CLOCK_MODE_MIN_ENGINE_AMD = GpaDeviceClockModeAMD 4
+
+-- No documentation found for Nested "VkGpaDeviceClockModeAMD" "VK_GPA_DEVICE_CLOCK_MODE_PEAK_AMD"
+pattern GPA_DEVICE_CLOCK_MODE_PEAK_AMD = GpaDeviceClockModeAMD 5
+
+{-# COMPLETE
+  GPA_DEVICE_CLOCK_MODE_DEFAULT_AMD
+  , GPA_DEVICE_CLOCK_MODE_QUERY_AMD
+  , GPA_DEVICE_CLOCK_MODE_PROFILING_AMD
+  , GPA_DEVICE_CLOCK_MODE_MIN_MEMORY_AMD
+  , GPA_DEVICE_CLOCK_MODE_MIN_ENGINE_AMD
+  , GPA_DEVICE_CLOCK_MODE_PEAK_AMD ::
+    GpaDeviceClockModeAMD
+  #-}
+
+conNameGpaDeviceClockModeAMD :: String
+conNameGpaDeviceClockModeAMD = "GpaDeviceClockModeAMD"
+
+enumPrefixGpaDeviceClockModeAMD :: String
+enumPrefixGpaDeviceClockModeAMD = "GPA_DEVICE_CLOCK_MODE_"
+
+showTableGpaDeviceClockModeAMD :: [(GpaDeviceClockModeAMD, String)]
+showTableGpaDeviceClockModeAMD =
+  [
+    ( GPA_DEVICE_CLOCK_MODE_DEFAULT_AMD
+    , "DEFAULT_AMD"
+    )
+  ,
+    ( GPA_DEVICE_CLOCK_MODE_QUERY_AMD
+    , "QUERY_AMD"
+    )
+  ,
+    ( GPA_DEVICE_CLOCK_MODE_PROFILING_AMD
+    , "PROFILING_AMD"
+    )
+  ,
+    ( GPA_DEVICE_CLOCK_MODE_MIN_MEMORY_AMD
+    , "MIN_MEMORY_AMD"
+    )
+  ,
+    ( GPA_DEVICE_CLOCK_MODE_MIN_ENGINE_AMD
+    , "MIN_ENGINE_AMD"
+    )
+  ,
+    ( GPA_DEVICE_CLOCK_MODE_PEAK_AMD
+    , "PEAK_AMD"
+    )
+  ]
+
+instance Show GpaDeviceClockModeAMD where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixGpaDeviceClockModeAMD
+      showTableGpaDeviceClockModeAMD
+      conNameGpaDeviceClockModeAMD
+      (\(GpaDeviceClockModeAMD x) -> x)
+      (showsPrec 11)
+
+instance Read GpaDeviceClockModeAMD where
+  readPrec =
+    enumReadPrec
+      enumPrefixGpaDeviceClockModeAMD
+      showTableGpaDeviceClockModeAMD
+      conNameGpaDeviceClockModeAMD
+      GpaDeviceClockModeAMD
+
+type AMD_GPA_INTERFACE_SPEC_VERSION = 1
+
+-- No documentation found for TopLevel "VK_AMD_GPA_INTERFACE_SPEC_VERSION"
+pattern AMD_GPA_INTERFACE_SPEC_VERSION :: forall a . Integral a => a
+pattern AMD_GPA_INTERFACE_SPEC_VERSION = 1
+
+
+type AMD_GPA_INTERFACE_EXTENSION_NAME = "VK_AMD_gpa_interface"
+
+-- No documentation found for TopLevel "VK_AMD_GPA_INTERFACE_EXTENSION_NAME"
+pattern AMD_GPA_INTERFACE_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern AMD_GPA_INTERFACE_EXTENSION_NAME = "VK_AMD_gpa_interface"
+
diff --git a/src/Vulkan/Extensions/VK_AMD_gpa_interface.hs-boot b/src/Vulkan/Extensions/VK_AMD_gpa_interface.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_AMD_gpa_interface.hs-boot
@@ -0,0 +1,265 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_AMD_gpa_interface - device extension
+--
+-- = VK_AMD_gpa_interface
+--
+-- [__Name String__]
+--     @VK_AMD_gpa_interface@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     134
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Not ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
+--
+-- [__Contact__]
+--
+--     -   Stu Smith
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_AMD_gpa_interface] @stu-s%0A*Here describe the issue or question you have about the VK_AMD_gpa_interface extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_AMD_gpa_interface.adoc VK_AMD_gpa_interface>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2026-05-01
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Contributors__]
+--
+--     -   Stu Smith, AMD
+--
+--     -   Tobias Hector, AMD
+--
+--     -   Noah Fredriks, AMD
+--
+--     -   Peter Lohrmann, AMD
+--
+--     -   Maciej Dziuban, AMD
+--
+-- == Description
+--
+-- This extension adds GPU Performance API (GPA) interface support for
+-- accessing GPU global performance counters, streaming performance
+-- monitors (SPM), and thread traces (SQTT), on AMD Radeon™ GPUs.
+--
+-- == New Object Types
+--
+-- -   'Vulkan.Extensions.Handles.GpaSessionAMD'
+--
+-- == New Commands
+--
+-- -   'cmdBeginGpaSampleAMD'
+--
+-- -   'cmdBeginGpaSessionAMD'
+--
+-- -   'cmdCopyGpaSessionResultsAMD'
+--
+-- -   'cmdEndGpaSampleAMD'
+--
+-- -   'cmdEndGpaSessionAMD'
+--
+-- -   'createGpaSessionAMD'
+--
+-- -   'destroyGpaSessionAMD'
+--
+-- -   'getGpaDeviceClockInfoAMD'
+--
+-- -   'getGpaSessionResultsAMD'
+--
+-- -   'getGpaSessionStatusAMD'
+--
+-- -   'resetGpaSessionAMD'
+--
+-- -   'setGpaDeviceClockModeAMD'
+--
+-- == New Structures
+--
+-- -   'GpaDeviceClockModeInfoAMD'
+--
+-- -   'GpaDeviceGetClockInfoAMD'
+--
+-- -   'GpaPerfBlockPropertiesAMD'
+--
+-- -   'GpaPerfCounterAMD'
+--
+-- -   'GpaSampleBeginInfoAMD'
+--
+-- -   'GpaSessionCreateInfoAMD'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceGpaFeaturesAMD'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDeviceGpaProperties2AMD'
+--
+--     -   'PhysicalDeviceGpaPropertiesAMD'
+--
+-- == New Enums
+--
+-- -   'GpaDeviceClockModeAMD'
+--
+-- -   'GpaPerfBlockAMD'
+--
+-- -   'GpaSampleTypeAMD'
+--
+-- -   'GpaSqShaderStageFlagBitsAMD'
+--
+-- == New Bitmasks
+--
+-- -   'GpaPerfBlockPropertiesFlagsAMD'
+--
+-- -   'GpaSqShaderStageFlagsAMD'
+--
+-- -   'PhysicalDeviceGpaPropertiesFlagsAMD'
+--
+-- == New Enum Constants
+--
+-- -   'AMD_GPA_INTERFACE_EXTENSION_NAME'
+--
+-- -   'AMD_GPA_INTERFACE_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.ObjectType.ObjectType':
+--
+--     -   'Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_GPA_SESSION_AMD'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GPA_DEVICE_CLOCK_MODE_INFO_AMD'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GPA_DEVICE_GET_CLOCK_INFO_AMD'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GPA_SAMPLE_BEGIN_INFO_AMD'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GPA_SESSION_CREATE_INFO_AMD'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_GPA_FEATURES_AMD'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_GPA_PROPERTIES_2_AMD'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_GPA_PROPERTIES_AMD'
+--
+-- == Version History
+--
+-- -   Revision 1, 2026-05-01 (Stu Smith)
+--
+--     -   Initial revision
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_AMD_gpa_interface Vulkan Specification>.
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_AMD_gpa_interface  ( GpaDeviceClockModeInfoAMD
+                                               , GpaDeviceGetClockInfoAMD
+                                               , GpaPerfBlockPropertiesAMD
+                                               , GpaPerfCounterAMD
+                                               , GpaSampleBeginInfoAMD
+                                               , GpaSessionCreateInfoAMD
+                                               , PhysicalDeviceGpaFeaturesAMD
+                                               , PhysicalDeviceGpaProperties2AMD
+                                               , PhysicalDeviceGpaPropertiesAMD
+                                               ) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data GpaDeviceClockModeInfoAMD
+
+instance ToCStruct GpaDeviceClockModeInfoAMD
+instance Show GpaDeviceClockModeInfoAMD
+
+instance FromCStruct GpaDeviceClockModeInfoAMD
+
+
+data GpaDeviceGetClockInfoAMD
+
+instance ToCStruct GpaDeviceGetClockInfoAMD
+instance Show GpaDeviceGetClockInfoAMD
+
+instance FromCStruct GpaDeviceGetClockInfoAMD
+
+
+data GpaPerfBlockPropertiesAMD
+
+instance ToCStruct GpaPerfBlockPropertiesAMD
+instance Show GpaPerfBlockPropertiesAMD
+
+instance FromCStruct GpaPerfBlockPropertiesAMD
+
+
+data GpaPerfCounterAMD
+
+instance ToCStruct GpaPerfCounterAMD
+instance Show GpaPerfCounterAMD
+
+instance FromCStruct GpaPerfCounterAMD
+
+
+data GpaSampleBeginInfoAMD
+
+instance ToCStruct GpaSampleBeginInfoAMD
+instance Show GpaSampleBeginInfoAMD
+
+instance FromCStruct GpaSampleBeginInfoAMD
+
+
+data GpaSessionCreateInfoAMD
+
+instance ToCStruct GpaSessionCreateInfoAMD
+instance Show GpaSessionCreateInfoAMD
+
+instance FromCStruct GpaSessionCreateInfoAMD
+
+
+data PhysicalDeviceGpaFeaturesAMD
+
+instance ToCStruct PhysicalDeviceGpaFeaturesAMD
+instance Show PhysicalDeviceGpaFeaturesAMD
+
+instance FromCStruct PhysicalDeviceGpaFeaturesAMD
+
+
+data PhysicalDeviceGpaProperties2AMD
+
+instance ToCStruct PhysicalDeviceGpaProperties2AMD
+instance Show PhysicalDeviceGpaProperties2AMD
+
+instance FromCStruct PhysicalDeviceGpaProperties2AMD
+
+
+data PhysicalDeviceGpaPropertiesAMD
+
+instance ToCStruct PhysicalDeviceGpaPropertiesAMD
+instance Show PhysicalDeviceGpaPropertiesAMD
+
+instance FromCStruct PhysicalDeviceGpaPropertiesAMD
+
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
@@ -76,7 +76,7 @@
 --
 -- Functionality in this extension is included in the
 -- @VK_KHR_shader_float16_int8@ extension, when the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-shaderFloat16 shaderFloat16>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-shaderFloat16 shaderFloat16>
 -- feature is enabled.
 --
 -- == New Enum Constants
@@ -102,7 +102,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_AMD_gpu_shader_half_float Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -77,9 +77,9 @@
 --
 -- Functionality in this extension is included in the
 -- @VK_KHR_shader_float16_int8@ extension, when the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-shaderInt16 shaderInt16>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-shaderInt16 shaderInt16>
 -- and
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-shaderFloat16 shaderFloat16>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-shaderFloat16 shaderFloat16>
 -- features are enabled.
 --
 -- == New Enum Constants
@@ -105,7 +105,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_AMD_gpu_shader_int16 Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -87,7 +87,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_AMD_memory_overallocation_behavior Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -132,8 +132,12 @@
 -- | VkDeviceMemoryOverallocationCreateInfoAMD - Specify memory
 -- overallocation behavior for a Vulkan device
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_memory_overallocation_behavior VK_AMD_memory_overallocation_behavior>,
@@ -187,6 +191,21 @@
 -- | VkMemoryOverallocationBehaviorAMD - Specify memory overallocation
 -- behavior
 --
+-- = Description
+--
+-- -   'MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD' lets the implementation
+--     decide if overallocation is allowed.
+--
+-- -   'MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD' specifies
+--     overallocation is allowed if platform permits.
+--
+-- -   'MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD' specifies the
+--     application is not allowed to allocate device memory beyond the heap
+--     sizes reported by
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceMemoryProperties'.
+--     Allocations that are not explicitly made by the application within
+--     the scope of the Vulkan instance are not accounted for.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_memory_overallocation_behavior VK_AMD_memory_overallocation_behavior>,
@@ -194,20 +213,13 @@
 newtype MemoryOverallocationBehaviorAMD = MemoryOverallocationBehaviorAMD Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD' lets the implementation
--- decide if overallocation is allowed.
+-- No documentation found for Nested "VkMemoryOverallocationBehaviorAMD" "VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD"
 pattern MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD = MemoryOverallocationBehaviorAMD 0
 
--- | 'MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD' specifies overallocation is
--- allowed if platform permits.
+-- No documentation found for Nested "VkMemoryOverallocationBehaviorAMD" "VK_MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD"
 pattern MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD = MemoryOverallocationBehaviorAMD 1
 
--- | 'MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD' specifies the
--- application is not allowed to allocate device memory beyond the heap
--- sizes reported by
--- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceMemoryProperties'.
--- Allocations that are not explicitly made by the application within the
--- scope of the Vulkan instance are not accounted for.
+-- No documentation found for Nested "VkMemoryOverallocationBehaviorAMD" "VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD"
 pattern MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD = MemoryOverallocationBehaviorAMD 2
 
 {-# COMPLETE
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
@@ -87,7 +87,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_AMD_memory_overallocation_behavior Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -69,7 +69,7 @@
 --
 -- -   Extending
 --     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo',
---     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo':
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo':
 --
 --     -   'AttachmentSampleCountInfoAMD'
 --
@@ -106,7 +106,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_AMD_mixed_attachment_samples Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -170,19 +170,26 @@
 -- 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
+-- chain of 'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'.
+-- When a graphics pipeline is created without a
 -- 'Vulkan.Core10.Handles.RenderPass', if this structure is included in the
--- @pNext@ chain of 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo', it
+-- @pNext@ chain of
+-- 'Vulkan.Core10.GraphicsPipeline.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@
+-- 'Vulkan.Core10.GraphicsPipeline.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)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo'
+--
+--     -   'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Extensions/VK_AMD_mixed_attachment_samples.hs-boot b/src/Vulkan/Extensions/VK_AMD_mixed_attachment_samples.hs-boot
--- a/src/Vulkan/Extensions/VK_AMD_mixed_attachment_samples.hs-boot
+++ b/src/Vulkan/Extensions/VK_AMD_mixed_attachment_samples.hs-boot
@@ -69,7 +69,7 @@
 --
 -- -   Extending
 --     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo',
---     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo':
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo':
 --
 --     -   'AttachmentSampleCountInfoAMD'
 --
@@ -106,7 +106,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_AMD_mixed_attachment_samples Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -60,7 +60,7 @@
 -- the y-axis.
 --
 -- -   Allow negative height to be specified in the
---     'Vulkan.Core10.Pipeline.Viewport'::@height@ field to perform
+--     'Vulkan.Core10.GraphicsPipeline.Viewport'::@height@ field to perform
 --     y-inversion of the clip-space to framebuffer-space transform. This
 --     allows apps to avoid having to use @gl_Position.y = -gl_Position.y@
 --     in shaders also targeting other APIs.
@@ -93,7 +93,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_AMD_negative_viewport_height Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -54,8 +54,9 @@
 --
 -- == New Structures
 --
--- -   Extending 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo',
---     'Vulkan.Core10.Pipeline.ComputePipelineCreateInfo',
+-- -   Extending
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo',
+--     'Vulkan.Core10.ComputePipeline.ComputePipelineCreateInfo',
 --     'Vulkan.Extensions.VK_AMDX_shader_enqueue.ExecutionGraphPipelineCreateInfoAMDX':
 --
 --     -   'PipelineCompilerControlCreateInfoAMD'
@@ -99,7 +100,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_AMD_pipeline_compiler_control Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -144,7 +145,15 @@
 -- | VkPipelineCompilerControlCreateInfoAMD - Structure used to pass
 -- compilation control flags to a pipeline
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.ComputePipeline.ComputePipelineCreateInfo'
+--
+--     -   'Vulkan.Extensions.VK_AMDX_shader_enqueue.ExecutionGraphPipelineCreateInfoAMDX'
+--
+--     -   'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'
 --
 -- = See Also
 --
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
@@ -54,8 +54,9 @@
 --
 -- == New Structures
 --
--- -   Extending 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo',
---     'Vulkan.Core10.Pipeline.ComputePipelineCreateInfo',
+-- -   Extending
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo',
+--     'Vulkan.Core10.ComputePipeline.ComputePipelineCreateInfo',
 --     'Vulkan.Extensions.VK_AMDX_shader_enqueue.ExecutionGraphPipelineCreateInfoAMDX':
 --
 --     -   'PipelineCompilerControlCreateInfoAMD'
@@ -99,7 +100,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_AMD_pipeline_compiler_control Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -91,7 +91,7 @@
 -- == New Structures
 --
 -- -   Extending
---     'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo':
+--     'Vulkan.Core10.GraphicsPipeline.PipelineRasterizationStateCreateInfo':
 --
 --     -   'PipelineRasterizationStateRasterizationOrderAMD'
 --
@@ -161,7 +161,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_AMD_rasterization_order Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -205,8 +205,12 @@
 -- | VkPipelineRasterizationStateRasterizationOrderAMD - Structure defining
 -- rasterization order for a graphics pipeline
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.GraphicsPipeline.PipelineRasterizationStateCreateInfo'
+--
 -- If the @VK_AMD_rasterization_order@ device extension is not enabled or
 -- the application does not request a particular rasterization order
 -- through specifying a 'PipelineRasterizationStateRasterizationOrderAMD'
@@ -266,6 +270,16 @@
 -- | VkRasterizationOrderAMD - Specify rasterization order for a graphics
 -- pipeline
 --
+-- = Description
+--
+-- -   'RASTERIZATION_ORDER_STRICT_AMD' specifies that operations for each
+--     primitive in a subpass /must/ occur in
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#drawing-primitive-order primitive order>.
+--
+-- -   'RASTERIZATION_ORDER_RELAXED_AMD' specifies that operations for each
+--     primitive in a subpass /may/ not occur in
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#drawing-primitive-order primitive order>.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_rasterization_order VK_AMD_rasterization_order>,
@@ -273,14 +287,10 @@
 newtype RasterizationOrderAMD = RasterizationOrderAMD Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'RASTERIZATION_ORDER_STRICT_AMD' specifies that operations for each
--- primitive in a subpass /must/ occur in
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#drawing-primitive-order primitive order>.
+-- No documentation found for Nested "VkRasterizationOrderAMD" "VK_RASTERIZATION_ORDER_STRICT_AMD"
 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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#drawing-primitive-order primitive order>.
+-- No documentation found for Nested "VkRasterizationOrderAMD" "VK_RASTERIZATION_ORDER_RELAXED_AMD"
 pattern RASTERIZATION_ORDER_RELAXED_AMD = RasterizationOrderAMD 1
 
 {-# COMPLETE
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
@@ -91,7 +91,7 @@
 -- == New Structures
 --
 -- -   Extending
---     'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo':
+--     'Vulkan.Core10.GraphicsPipeline.PipelineRasterizationStateCreateInfo':
 --
 --     -   'PipelineRasterizationStateRasterizationOrderAMD'
 --
@@ -161,7 +161,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_AMD_rasterization_order Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -85,7 +85,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_AMD_shader_ballot Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -149,7 +149,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_AMD_shader_core_properties Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -193,7 +193,11 @@
 -- it is filled in with each corresponding implementation-dependent
 -- property.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
 --
 -- = See Also
 --
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
@@ -149,7 +149,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_AMD_shader_core_properties Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -90,7 +90,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_AMD_shader_core_properties2 Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -146,7 +146,11 @@
 -- it is filled in with each corresponding implementation-dependent
 -- property.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
 --
 -- = See Also
 --
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
@@ -90,7 +90,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_AMD_shader_core_properties2 Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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_early_and_late_fragment_tests.hs b/src/Vulkan/Extensions/VK_AMD_shader_early_and_late_fragment_tests.hs
--- a/src/Vulkan/Extensions/VK_AMD_shader_early_and_late_fragment_tests.hs
+++ b/src/Vulkan/Extensions/VK_AMD_shader_early_and_late_fragment_tests.hs
@@ -93,7 +93,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_AMD_shader_early_and_late_fragment_tests Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_AMD_shader_early_and_late_fragment_tests Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -142,12 +142,21 @@
 -- 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. 'PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD'
--- /can/ also be used in the @pNext@ chain of
--- 'Vulkan.Core10.Device.DeviceCreateInfo' to selectively enable these
--- features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD', it /must/
+-- add an instance of the structure, with the desired feature members set
+-- to 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Extensions/VK_AMD_shader_early_and_late_fragment_tests.hs-boot b/src/Vulkan/Extensions/VK_AMD_shader_early_and_late_fragment_tests.hs-boot
--- a/src/Vulkan/Extensions/VK_AMD_shader_early_and_late_fragment_tests.hs-boot
+++ b/src/Vulkan/Extensions/VK_AMD_shader_early_and_late_fragment_tests.hs-boot
@@ -93,7 +93,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_AMD_shader_early_and_late_fragment_tests Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_AMD_shader_early_and_late_fragment_tests Vulkan Specification>.
 --
 -- This 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
@@ -83,7 +83,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_AMD_shader_explicit_vertex_parameter Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -79,7 +79,7 @@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-FragmentMaskAMD FragmentMaskAMD>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-FragmentMaskAMD FragmentMaskAMD>
 --
 -- == Examples
 --
@@ -129,7 +129,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_AMD_shader_fragment_mask Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -79,7 +79,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_AMD_shader_image_load_store_lod Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -149,7 +149,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_AMD_shader_info Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -283,6 +283,16 @@
 -- @infoType@ 'SHADER_INFO_TYPE_BINARY_AMD', are left to the vendor and are
 -- not further specified by this extension.
 --
+-- This query does not behave consistently with the behavior described in
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#fundamentals-binaryresults Opaque Binary Data Results>,
+-- for historical reasons.
+--
+-- If the amount of data available is larger than the passed @pInfoSize@,
+-- the query returns up to the size of the passed buffer, and signals
+-- overflow with a 'Vulkan.Core10.Enums.Result.INCOMPLETE' success status
+-- instead of returning a
+-- 'Vulkan.Core10.Enums.Result.ERROR_NOT_ENOUGH_SPACE_KHR' error status.
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-vkGetShaderInfoAMD-device-parameter# @device@ /must/ be a
@@ -312,16 +322,20 @@
 --
 -- [<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'
 --
+--     -   '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_FEATURE_NOT_PRESENT'
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_shader_info VK_AMD_shader_info>,
@@ -579,6 +593,17 @@
 -- | VkShaderInfoTypeAMD - Enum specifying which type of shader information
 -- to query
 --
+-- = Description
+--
+-- -   'SHADER_INFO_TYPE_STATISTICS_AMD' specifies that device resources
+--     used by a shader will be queried.
+--
+-- -   'SHADER_INFO_TYPE_BINARY_AMD' specifies that implementation-specific
+--     information will be queried.
+--
+-- -   'SHADER_INFO_TYPE_DISASSEMBLY_AMD' specifies that human-readable
+--     disassembly of a shader.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_shader_info VK_AMD_shader_info>,
@@ -586,16 +611,13 @@
 newtype ShaderInfoTypeAMD = ShaderInfoTypeAMD Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'SHADER_INFO_TYPE_STATISTICS_AMD' specifies that device resources used
--- by a shader will be queried.
+-- No documentation found for Nested "VkShaderInfoTypeAMD" "VK_SHADER_INFO_TYPE_STATISTICS_AMD"
 pattern SHADER_INFO_TYPE_STATISTICS_AMD = ShaderInfoTypeAMD 0
 
--- | 'SHADER_INFO_TYPE_BINARY_AMD' specifies that implementation-specific
--- information will be queried.
+-- No documentation found for Nested "VkShaderInfoTypeAMD" "VK_SHADER_INFO_TYPE_BINARY_AMD"
 pattern SHADER_INFO_TYPE_BINARY_AMD = ShaderInfoTypeAMD 1
 
--- | 'SHADER_INFO_TYPE_DISASSEMBLY_AMD' specifies that human-readable
--- disassembly of a shader.
+-- No documentation found for Nested "VkShaderInfoTypeAMD" "VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD"
 pattern SHADER_INFO_TYPE_DISASSEMBLY_AMD = ShaderInfoTypeAMD 2
 
 {-# COMPLETE
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
@@ -149,7 +149,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_AMD_shader_info Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -83,7 +83,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_AMD_shader_trinary_minmax Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -94,7 +94,7 @@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-ImageGatherBiasLodAMD ImageGatherBiasLodAMD>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-ImageGatherBiasLodAMD ImageGatherBiasLodAMD>
 --
 -- == Examples
 --
@@ -151,7 +151,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_AMD_texture_gather_bias_lod Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -188,7 +188,11 @@
 -- not texture gather bias\/LOD functionality is supported for a given
 -- image format and a given physical device.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.ImageFormatProperties2'
 --
 -- = See Also
 --
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
@@ -94,7 +94,7 @@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-ImageGatherBiasLodAMD ImageGatherBiasLodAMD>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-ImageGatherBiasLodAMD ImageGatherBiasLodAMD>
 --
 -- == Examples
 --
@@ -151,7 +151,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_AMD_texture_gather_bias_lod Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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_format_resolve.hs b/src/Vulkan/Extensions/VK_ANDROID_external_format_resolve.hs
--- a/src/Vulkan/Extensions/VK_ANDROID_external_format_resolve.hs
+++ b/src/Vulkan/Extensions/VK_ANDROID_external_format_resolve.hs
@@ -122,8 +122,10 @@
 -- -   Extending
 --     'Vulkan.Core12.Enums.ResolveModeFlagBits.ResolveModeFlagBits':
 --
---     -   'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID'
+--     -   'RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID'
 --
+--     -   'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID'
+--
 -- == Version History
 --
 -- -   Revision 1, 2023-05-34 (Tobias Hector)
@@ -137,11 +139,12 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_ANDROID_external_format_resolve Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_ANDROID_external_format_resolve Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
-module Vulkan.Extensions.VK_ANDROID_external_format_resolve  ( PhysicalDeviceExternalFormatResolveFeaturesANDROID(..)
+module Vulkan.Extensions.VK_ANDROID_external_format_resolve  ( pattern RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID
+                                                             , PhysicalDeviceExternalFormatResolveFeaturesANDROID(..)
                                                              , PhysicalDeviceExternalFormatResolvePropertiesANDROID(..)
                                                              , AndroidHardwareBufferFormatResolvePropertiesANDROID(..)
                                                              , ANDROID_EXTERNAL_FORMAT_RESOLVE_SPEC_VERSION
@@ -173,9 +176,15 @@
 import Vulkan.Core11.Enums.ChromaLocation (ChromaLocation)
 import Vulkan.Core10.Enums.Format (Format)
 import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Core12.Enums.ResolveModeFlagBits (ResolveModeFlags)
+import Vulkan.Core12.Enums.ResolveModeFlagBits (ResolveModeFlagBits(RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_RESOLVE_PROPERTIES_ANDROID))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_FEATURES_ANDROID))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_PROPERTIES_ANDROID))
+-- No documentation found for TopLevel "VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID"
+pattern RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID = RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID
+
+
 -- | VkPhysicalDeviceExternalFormatResolveFeaturesANDROID - Structure
 -- describing whether external format resolves are supported
 --
@@ -187,13 +196,22 @@
 -- 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. 'PhysicalDeviceExternalFormatResolveFeaturesANDROID' /can/
--- also be used in the @pNext@ chain of
--- 'Vulkan.Core10.Device.DeviceCreateInfo' to selectively enable these
--- features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceExternalFormatResolveFeaturesANDROID', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ANDROID_external_format_resolve VK_ANDROID_external_format_resolve>,
@@ -254,8 +272,12 @@
 -- it is filled in with each corresponding implementation-dependent
 -- property.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ANDROID_external_format_resolve VK_ANDROID_external_format_resolve>,
@@ -364,6 +386,12 @@
 -- -   #VUID-VkAndroidHardwareBufferFormatResolvePropertiesANDROID-sType-sType#
 --     @sType@ /must/ be
 --     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_RESOLVE_PROPERTIES_ANDROID'
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.AndroidHardwareBufferPropertiesANDROID'
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Extensions/VK_ANDROID_external_format_resolve.hs-boot b/src/Vulkan/Extensions/VK_ANDROID_external_format_resolve.hs-boot
--- a/src/Vulkan/Extensions/VK_ANDROID_external_format_resolve.hs-boot
+++ b/src/Vulkan/Extensions/VK_ANDROID_external_format_resolve.hs-boot
@@ -122,8 +122,10 @@
 -- -   Extending
 --     'Vulkan.Core12.Enums.ResolveModeFlagBits.ResolveModeFlagBits':
 --
---     -   'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID'
+--     -   'RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID'
 --
+--     -   'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID'
+--
 -- == Version History
 --
 -- -   Revision 1, 2023-05-34 (Tobias Hector)
@@ -137,7 +139,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_ANDROID_external_format_resolve Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_ANDROID_external_format_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_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
@@ -111,7 +111,7 @@
 -- -   Extending 'Vulkan.Core10.Image.ImageCreateInfo',
 --     'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionCreateInfo',
 --     'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.AttachmentDescription2',
---     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo',
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo',
 --     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo':
 --
 --     -   'ExternalFormatANDROID'
@@ -288,7 +288,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_ANDROID_external_memory_android_hardware_buffer Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -402,10 +402,14 @@
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
+--     -   'Vulkan.Extensions.VK_KHR_external_memory.ERROR_INVALID_EXTERNAL_HANDLE_KHR'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Extensions.VK_KHR_external_memory.ERROR_INVALID_EXTERNAL_HANDLE_KHR'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ANDROID_external_memory_android_hardware_buffer VK_ANDROID_external_memory_android_hardware_buffer>,
@@ -479,10 +483,14 @@
 --
 -- [<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_TOO_MANY_OBJECTS'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ANDROID_external_memory_android_hardware_buffer VK_ANDROID_external_memory_android_hardware_buffer>,
@@ -532,10 +540,11 @@
 --
 -- == Valid Usage
 --
--- -   #VUID-VkImportAndroidHardwareBufferInfoANDROID-buffer-01880# If
+-- -   #VUID-VkImportAndroidHardwareBufferInfoANDROID-buffer-09863# If
 --     @buffer@ is not @NULL@, Android hardware buffers /must/ be supported
 --     for import, as reported by
---     'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.ExternalImageFormatProperties'
+--     'Vulkan.Extensions.VK_ARM_tensors.ExternalTensorPropertiesARM',
+--     'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.ExternalImageFormatProperties',
 --     or
 --     'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.ExternalBufferProperties'
 --
@@ -543,7 +552,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-external-android-hardware-buffer Android Hardware Buffers>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-external-android-hardware-buffer Android Hardware Buffers>
 --
 -- == Valid Usage (Implicit)
 --
@@ -554,6 +563,12 @@
 -- -   #VUID-VkImportAndroidHardwareBufferInfoANDROID-buffer-parameter#
 --     @buffer@ /must/ be a valid pointer to an 'AHardwareBuffer' value
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.Memory.MemoryAllocateInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ANDROID_external_memory_android_hardware_buffer VK_ANDROID_external_memory_android_hardware_buffer>,
@@ -606,7 +621,7 @@
 --
 -- The @androidHardwareBufferUsage@ field /must/ include Android hardware
 -- buffer usage flags listed in the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-external-android-hardware-buffer-usage AHardwareBuffer Usage Equivalence>
+-- <https://registry.khronos.org/vulkan/specs/latest/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'.
@@ -624,8 +639,12 @@
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.ImageFormatProperties2'
 -- are required.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.ImageFormatProperties2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ANDROID_external_memory_android_hardware_buffer VK_ANDROID_external_memory_android_hardware_buffer>,
@@ -689,7 +708,8 @@
 --     'Vulkan.Extensions.VK_ANDROID_external_format_resolve.AndroidHardwareBufferFormatResolvePropertiesANDROID'
 --
 -- -   #VUID-VkAndroidHardwareBufferPropertiesANDROID-sType-unique# The
---     @sType@ value of each struct in the @pNext@ chain /must/ be unique
+--     @sType@ value of each structure in the @pNext@ chain /must/ be
+--     unique
 --
 -- = See Also
 --
@@ -845,7 +865,7 @@
 -- = Description
 --
 -- If the Android hardware buffer has one of the formats listed in the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-external-android-hardware-buffer-formats Format Equivalence table>,
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -864,7 +884,7 @@
 --
 -- The @formatFeatures@ member only indicates the features available when
 -- using an
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-external-android-hardware-buffer-external-formats external-format image>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -901,7 +921,7 @@
 -- with that format. If @format@ is
 -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', all members of
 -- @samplerYcbcrConversionComponents@ /must/ be the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-views-identity-mappings identity swizzle>.
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -922,8 +942,12 @@
 -- does, achieving identical results between APIs /may/ not be possible on
 -- some implementations.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'AndroidHardwareBufferPropertiesANDROID'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ANDROID_external_memory_android_hardware_buffer VK_ANDROID_external_memory_android_hardware_buffer>,
@@ -1041,15 +1065,27 @@
 -- = Description
 --
 -- When included in the @pNext@ chain of another structure, it indicates
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-external-android-hardware-buffer-external-formats additional format information>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-external-android-hardware-buffer-external-formats additional format information>
 -- beyond what is provided by 'Vulkan.Core10.Enums.Format.Format' values
 -- for an Android hardware buffer. If @externalFormat@ is zero, it
 -- indicates that no external format is used, and implementations should
 -- rely only on other format information. If this structure is not present,
 -- it is equivalent to setting @externalFormat@ to zero.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.AttachmentDescription2'
+--
+--     -   'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo'
+--
+--     -   'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'
+--
+--     -   'Vulkan.Core10.Image.ImageCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionCreateInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ANDROID_external_memory_android_hardware_buffer VK_ANDROID_external_memory_android_hardware_buffer>,
@@ -1110,7 +1146,11 @@
 -- in the corresponding fields of
 -- 'AndroidHardwareBufferFormatPropertiesANDROID'::@formatFeatures@.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'AndroidHardwareBufferPropertiesANDROID'
 --
 -- = See Also
 --
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
@@ -111,7 +111,7 @@
 -- -   Extending 'Vulkan.Core10.Image.ImageCreateInfo',
 --     'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionCreateInfo',
 --     'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.AttachmentDescription2',
---     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo',
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo',
 --     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo':
 --
 --     -   'ExternalFormatANDROID'
@@ -288,7 +288,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_ANDROID_external_memory_android_hardware_buffer Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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_data_graph.hs b/src/Vulkan/Extensions/VK_ARM_data_graph.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_ARM_data_graph.hs
@@ -0,0 +1,4593 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_ARM_data_graph - device extension
+--
+-- = VK_ARM_data_graph
+--
+-- [__Name String__]
+--     @VK_ARM_data_graph@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     508
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Not ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3 Vulkan Version 1.3>
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance5 VK_KHR_maintenance5>
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_deferred_host_operations VK_KHR_deferred_host_operations>
+--
+-- [__API Interactions__]
+--
+--     -   Interacts with VK_ARM_tensors
+--
+-- [__SPIR-V Dependencies__]
+--
+--     -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/ARM/SPV_ARM_graph.html SPV_ARM_graph>
+--
+-- [__Contact__]
+--
+--     -   Kevin Petit
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_ARM_data_graph] @kpet%0A*Here describe the issue or question you have about the VK_ARM_data_graph extension* >
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2025-06-18
+--
+-- [__Interactions and External Dependencies__]
+--
+--     -   This extension requires
+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/EXT/SPV_ARM_graph.html SPV_ARM_graph>
+--
+--     -   This extension interacts with @VK_EXT_mutable_descriptor_type@
+--
+--     -   This extension interacts with @VK_EXT_pipeline_protected_access@
+--
+--     -   This extension interacts with @VK_ARM_tensors@
+--
+--     -   This extension interacts with @VK_EXT_descriptor_buffer@
+--
+--     -   This extension interacts with @VK_KHR_maintenance6@
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Contributors__]
+--
+--     -   Kévin Petit, Arm Ltd.
+--
+--     -   Emma Ben Yossef, Arm Ltd.
+--
+--     -   Stefano Bucciarelli, Arm Ltd.
+--
+--     -   Marco Cattani, Arm Ltd.
+--
+--     -   Aaron DeBattista, Arm Ltd.
+--
+--     -   Jan-Harald Fredriksen, Arm Ltd.
+--
+--     -   Einar Hov, Arm Ltd.
+--
+--     -   Robert Hughes, Arm Ltd.
+--
+--     -   Oualid Khelifi, Arm Ltd.
+--
+--     -   Derek Lamberti, Arm Ltd.
+--
+--     -   Chetan Mistry, Arm Ltd.
+--
+--     -   Georgios Teneketzis, Arm Ltd.
+--
+--     -   Matthew Netsch, Qualcomm Technologies, Inc
+--
+-- == Description
+--
+-- This extension adds support for a new type of pipeline, data graph
+-- pipelines, that provide an encapsulation construct for computational
+-- graphs operating on full resources (e.g. ML\/AI graphs, image processing
+-- pipelines, etc). This extension only supports tensor resources and does
+-- not define any operations that can be used within those graphs. These
+-- operations will be defined by separate extensions.
+--
+-- == New Object Types
+--
+-- -   'Vulkan.Extensions.Handles.DataGraphPipelineSessionARM'
+--
+-- == New Commands
+--
+-- -   'bindDataGraphPipelineSessionMemoryARM'
+--
+-- -   'cmdDispatchDataGraphARM'
+--
+-- -   'createDataGraphPipelineSessionARM'
+--
+-- -   'createDataGraphPipelinesARM'
+--
+-- -   'destroyDataGraphPipelineSessionARM'
+--
+-- -   'getDataGraphPipelineAvailablePropertiesARM'
+--
+-- -   'getDataGraphPipelinePropertiesARM'
+--
+-- -   'getDataGraphPipelineSessionBindPointRequirementsARM'
+--
+-- -   'getDataGraphPipelineSessionMemoryRequirementsARM'
+--
+-- -   'getPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM'
+--
+-- -   'getPhysicalDeviceQueueFamilyDataGraphPropertiesARM'
+--
+-- == New Structures
+--
+-- -   'BindDataGraphPipelineSessionMemoryInfoARM'
+--
+-- -   'DataGraphPipelineConstantARM'
+--
+-- -   'DataGraphPipelineCreateInfoARM'
+--
+-- -   'DataGraphPipelineDispatchInfoARM'
+--
+-- -   'DataGraphPipelineInfoARM'
+--
+-- -   'DataGraphPipelinePropertyQueryResultARM'
+--
+-- -   'DataGraphPipelineResourceInfoARM'
+--
+-- -   'DataGraphPipelineSessionBindPointRequirementARM'
+--
+-- -   'DataGraphPipelineSessionBindPointRequirementsInfoARM'
+--
+-- -   'DataGraphPipelineSessionCreateInfoARM'
+--
+-- -   'DataGraphPipelineSessionMemoryRequirementsInfoARM'
+--
+-- -   'PhysicalDeviceDataGraphOperationSupportARM'
+--
+-- -   'PhysicalDeviceDataGraphProcessingEngineARM'
+--
+-- -   'PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM'
+--
+-- -   'QueueFamilyDataGraphProcessingEnginePropertiesARM'
+--
+-- -   'QueueFamilyDataGraphPropertiesARM'
+--
+-- -   Extending 'DataGraphPipelineCreateInfoARM':
+--
+--     -   'DataGraphPipelineCompilerControlCreateInfoARM'
+--
+--     -   'DataGraphPipelineIdentifierCreateInfoARM'
+--
+--     -   'DataGraphPipelineShaderModuleCreateInfoARM'
+--
+-- -   Extending 'DataGraphPipelineCreateInfoARM',
+--     'Vulkan.Core10.DescriptorSet.DescriptorPoolCreateInfo',
+--     'Vulkan.Core10.CommandPool.CommandPoolCreateInfo':
+--
+--     -   'DataGraphProcessingEngineCreateInfoARM'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceDataGraphFeaturesARM'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_tensors VK_ARM_tensors>
+-- is supported:
+--
+-- -   Extending 'DataGraphPipelineConstantARM':
+--
+--     -   'DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM'
+--
+-- == New Enums
+--
+-- -   'DataGraphPipelineDispatchFlagBitsARM'
+--
+-- -   'DataGraphPipelinePropertyARM'
+--
+-- -   'DataGraphPipelineSessionBindPointARM'
+--
+-- -   'DataGraphPipelineSessionBindPointTypeARM'
+--
+-- -   'DataGraphPipelineSessionCreateFlagBitsARM'
+--
+-- -   'PhysicalDeviceDataGraphOperationTypeARM'
+--
+-- -   'PhysicalDeviceDataGraphProcessingEngineTypeARM'
+--
+-- == New Bitmasks
+--
+-- -   'DataGraphPipelineDispatchFlagsARM'
+--
+-- -   'DataGraphPipelineSessionCreateFlagsARM'
+--
+-- == New Enum Constants
+--
+-- -   'ARM_DATA_GRAPH_EXTENSION_NAME'
+--
+-- -   'ARM_DATA_GRAPH_SPEC_VERSION'
+--
+-- -   'Vulkan.Core10.APIConstants.MAX_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_SET_NAME_SIZE_ARM'
+--
+-- -   Extending 'Vulkan.Core13.Enums.AccessFlags2.AccessFlagBits2':
+--
+--     -   'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_DATA_GRAPH_READ_BIT_ARM'
+--
+--     -   'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_DATA_GRAPH_WRITE_BIT_ARM'
+--
+-- -   Extending
+--     'Vulkan.Core14.Enums.BufferUsageFlags2.BufferUsageFlagBits2':
+--
+--     -   'Vulkan.Core14.Enums.BufferUsageFlags2.BUFFER_USAGE_2_DATA_GRAPH_FOREIGN_DESCRIPTOR_BIT_ARM'
+--
+-- -   Extending
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FormatFeatureFlagBits2':
+--
+--     -   'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_TENSOR_DATA_GRAPH_BIT_ARM'
+--
+-- -   Extending 'Vulkan.Core10.Enums.ObjectType.ObjectType':
+--
+--     -   'Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_DATA_GRAPH_PIPELINE_SESSION_ARM'
+--
+-- -   Extending 'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint':
+--
+--     -   'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_DATA_GRAPH_ARM'
+--
+-- -   Extending
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlagBits2':
+--
+--     -   'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_DATA_GRAPH_BIT_ARM'
+--
+-- -   Extending 'Vulkan.Core10.Enums.QueueFlagBits.QueueFlagBits':
+--
+--     -   'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_DATA_GRAPH_BIT_ARM'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BIND_DATA_GRAPH_PIPELINE_SESSION_MEMORY_INFO_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_COMPILER_CONTROL_CREATE_INFO_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CONSTANT_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CREATE_INFO_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_DISPATCH_INFO_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_IDENTIFIER_CREATE_INFO_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_INFO_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_PROPERTY_QUERY_RESULT_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_RESOURCE_INFO_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENTS_INFO_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENT_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_CREATE_INFO_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_MEMORY_REQUIREMENTS_INFO_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SHADER_MODULE_CREATE_INFO_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DATA_GRAPH_PROCESSING_ENGINE_CREATE_INFO_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_FEATURES_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_INFO_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_PROPERTIES_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_PROPERTIES_ARM'
+--
+-- -   Extending 'Vulkan.Extensions.VK_ARM_tensors.TensorUsageFlagBitsARM':
+--
+--     -   'Vulkan.Extensions.VK_ARM_tensors.TENSOR_USAGE_DATA_GRAPH_BIT_ARM'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_tensors VK_ARM_tensors>
+-- is supported:
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CONSTANT_TENSOR_SEMI_STRUCTURED_SPARSITY_INFO_ARM'
+--
+-- == New SPIR-V Capabilities
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-GraphARM GraphARM>
+--
+-- == Issues
+--
+-- 1) Should graph pipeline resource info structures be integrated into
+-- pipeline layouts? Would a new graph pipeline layout be a better fit?
+--
+-- __RESOLVED__: Graph pipeline resource info are passed separately at
+-- pipeline creation time.
+--
+-- 2) Do we need a new shader stage for graph pipelines for use in creating
+-- descriptor set layouts?
+--
+-- __RESOLVED__: Currently using
+-- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_ALL'.
+--
+-- 3) Should this extension provide applications with a way of knowing
+-- which combinations of sparsity information implementations can take
+-- advantage of when processing graph constants?
+--
+-- __RESOLVED__: No. Describing the exact combinations is in some cases
+-- complex and it is always valid for implementations to ignore the
+-- sparsity information and treat the data as dense. Specific
+-- implementations can provide guidance to application writers if they so
+-- desire and applications are encouraged to always provide sparsity
+-- information that they have.
+--
+-- == Version History
+--
+-- -   Revision 1, 2025-06-18 (Kévin Petit)
+--
+--     -   Initial revision
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_ARM_data_graph Vulkan Specification>.
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_ARM_data_graph  ( createDataGraphPipelinesARM
+                                            , createDataGraphPipelineSessionARM
+                                            , withDataGraphPipelineSessionARM
+                                            , getDataGraphPipelineSessionBindPointRequirementsARM
+                                            , getDataGraphPipelineSessionMemoryRequirementsARM
+                                            , bindDataGraphPipelineSessionMemoryARM
+                                            , destroyDataGraphPipelineSessionARM
+                                            , cmdDispatchDataGraphARM
+                                            , getDataGraphPipelineAvailablePropertiesARM
+                                            , getDataGraphPipelinePropertiesARM
+                                            , getPhysicalDeviceQueueFamilyDataGraphPropertiesARM
+                                            , getPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM
+                                            , PhysicalDeviceDataGraphFeaturesARM(..)
+                                            , DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM(..)
+                                            , DataGraphPipelineConstantARM(..)
+                                            , DataGraphPipelineResourceInfoARM(..)
+                                            , DataGraphPipelineCompilerControlCreateInfoARM(..)
+                                            , DataGraphPipelineCreateInfoARM(..)
+                                            , DataGraphPipelineShaderModuleCreateInfoARM(..)
+                                            , DataGraphPipelineSessionCreateInfoARM(..)
+                                            , DataGraphPipelineSessionBindPointRequirementsInfoARM(..)
+                                            , DataGraphPipelineSessionBindPointRequirementARM(..)
+                                            , DataGraphPipelineSessionMemoryRequirementsInfoARM(..)
+                                            , BindDataGraphPipelineSessionMemoryInfoARM(..)
+                                            , DataGraphPipelineInfoARM(..)
+                                            , DataGraphPipelinePropertyQueryResultARM(..)
+                                            , DataGraphPipelineIdentifierCreateInfoARM(..)
+                                            , DataGraphPipelineDispatchInfoARM(..)
+                                            , PhysicalDeviceDataGraphProcessingEngineARM(..)
+                                            , PhysicalDeviceDataGraphOperationSupportARM(..)
+                                            , QueueFamilyDataGraphPropertiesARM(..)
+                                            , PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM(..)
+                                            , QueueFamilyDataGraphProcessingEnginePropertiesARM(..)
+                                            , DataGraphProcessingEngineCreateInfoARM(..)
+                                            , DataGraphPipelineSessionCreateFlagsARM
+                                            , DataGraphPipelineSessionCreateFlagBitsARM( DATA_GRAPH_PIPELINE_SESSION_CREATE_PROTECTED_BIT_ARM
+                                                                                       , DATA_GRAPH_PIPELINE_SESSION_CREATE_OPTICAL_FLOW_CACHE_BIT_ARM
+                                                                                       , ..
+                                                                                       )
+                                            , DataGraphPipelineSessionBindPointARM( DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TRANSIENT_ARM
+                                                                                  , DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_NEURAL_ACCELERATOR_STATISTICS_ARM
+                                                                                  , DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_OPTICAL_FLOW_CACHE_ARM
+                                                                                  , ..
+                                                                                  )
+                                            , DataGraphPipelineSessionBindPointTypeARM( DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TYPE_MEMORY_ARM
+                                                                                      , ..
+                                                                                      )
+                                            , DataGraphPipelinePropertyARM( DATA_GRAPH_PIPELINE_PROPERTY_CREATION_LOG_ARM
+                                                                          , DATA_GRAPH_PIPELINE_PROPERTY_IDENTIFIER_ARM
+                                                                          , DATA_GRAPH_PIPELINE_PROPERTY_NEURAL_ACCELERATOR_STATISTICS_INFO_ARM
+                                                                          , DATA_GRAPH_PIPELINE_PROPERTY_NEURAL_ACCELERATOR_DEBUG_DATABASE_ARM
+                                                                          , ..
+                                                                          )
+                                            , DataGraphPipelineDispatchFlagsARM
+                                            , DataGraphPipelineDispatchFlagBitsARM(..)
+                                            , PhysicalDeviceDataGraphProcessingEngineTypeARM( PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_DEFAULT_ARM
+                                                                                            , PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_COMPUTE_QCOM
+                                                                                            , PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_NEURAL_QCOM
+                                                                                            , ..
+                                                                                            )
+                                            , PhysicalDeviceDataGraphOperationTypeARM( PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_SPIRV_EXTENDED_INSTRUCTION_SET_ARM
+                                                                                     , PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_OPTICAL_FLOW_ARM
+                                                                                     , PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_BUILTIN_MODEL_QCOM
+                                                                                     , PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_NEURAL_MODEL_QCOM
+                                                                                     , ..
+                                                                                     )
+                                            , ARM_DATA_GRAPH_SPEC_VERSION
+                                            , pattern ARM_DATA_GRAPH_SPEC_VERSION
+                                            , ARM_DATA_GRAPH_EXTENSION_NAME
+                                            , pattern ARM_DATA_GRAPH_EXTENSION_NAME
+                                            , DeferredOperationKHR(..)
+                                            , DataGraphPipelineSessionARM(..)
+                                            , TensorUsageFlagBitsARM(..)
+                                            , TensorUsageFlagsARM
+                                            , MAX_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_SET_NAME_SIZE_ARM
+                                            , pattern MAX_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_SET_NAME_SIZE_ARM
+                                            ) where
+
+import Data.Bits (Bits)
+import Data.Bits (FiniteBits)
+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 Data.Typeable (eqT)
+import Foreign.Marshal.Alloc (allocaBytes)
+import Foreign.Marshal.Alloc (callocBytes)
+import Foreign.Marshal.Alloc (free)
+import Foreign.Marshal.Utils (maybePeek)
+import GHC.Base (when)
+import GHC.IO (throwIO)
+import GHC.Ptr (castPtr)
+import GHC.Ptr (nullFunPtr)
+import Foreign.Ptr (nullPtr)
+import Foreign.Ptr (plusPtr)
+import GHC.Show (showString)
+import GHC.Show (showsPrec)
+import Numeric (showHex)
+import Data.ByteString (packCString)
+import Data.ByteString (useAsCString)
+import Data.Coerce (coerce)
+import Control.Monad.Trans.Class (lift)
+import Control.Monad.Trans.Cont (evalContT)
+import Data.Vector (generateM)
+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 Vulkan.Zero (Zero(..))
+import Control.Monad.IO.Class (MonadIO)
+import Data.String (IsString)
+import Data.Type.Equality ((:~:)(Refl))
+import Data.Typeable (Typeable)
+import Foreign.C.Types (CChar)
+import Foreign.C.Types (CSize)
+import Foreign.C.Types (CSize(..))
+import Foreign.C.Types (CSize(CSize))
+import Foreign.Storable (Storable)
+import Foreign.Storable (Storable(peek))
+import Foreign.Storable (Storable(poke))
+import qualified Foreign.Storable (Storable(..))
+import GHC.Generics (Generic)
+import GHC.IO.Exception (IOErrorType(..))
+import GHC.IO.Exception (IOException(..))
+import Data.Int (Int32)
+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.Word (Word8)
+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.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.CStruct.Extends (forgetExtensions)
+import Vulkan.CStruct.Utils (lowerArrayPtr)
+import Vulkan.CStruct.Extends (peekSomeCStruct)
+import Vulkan.CStruct.Utils (pokeFixedLengthNullTerminatedByteString)
+import Vulkan.CStruct.Extends (pokeSomeCStruct)
+import Vulkan.NamedType ((:::))
+import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)
+import Vulkan.Core10.FundamentalTypes (Bool32)
+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_data_graph_model (DataGraphPipelineBuiltinModelCreateInfoQCOM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_data_graph_neural_accelerator_statistics (DataGraphPipelineNeuralStatisticsCreateInfoARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_data_graph_optical_flow (DataGraphPipelineOpticalFlowCreateInfoARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_data_graph_optical_flow (DataGraphPipelineOpticalFlowDispatchInfoARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_data_graph_optical_flow (DataGraphPipelineResourceInfoImageLayoutARM)
+import Vulkan.Extensions.Handles (DataGraphPipelineSessionARM)
+import Vulkan.Extensions.Handles (DataGraphPipelineSessionARM(..))
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_data_graph_neural_accelerator_statistics (DataGraphPipelineSessionNeuralStatisticsCreateInfoARM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_data_graph_optical_flow (DataGraphPipelineSingleNodeCreateInfoARM)
+import Vulkan.Extensions.Handles (DeferredOperationKHR)
+import Vulkan.Extensions.Handles (DeferredOperationKHR(..))
+import Vulkan.Core10.Handles (Device)
+import Vulkan.Core10.Handles (Device(..))
+import Vulkan.Core10.Handles (Device(Device))
+import Vulkan.Dynamic (DeviceCmds(pVkBindDataGraphPipelineSessionMemoryARM))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdDispatchDataGraphARM))
+import Vulkan.Dynamic (DeviceCmds(pVkCreateDataGraphPipelineSessionARM))
+import Vulkan.Dynamic (DeviceCmds(pVkCreateDataGraphPipelinesARM))
+import Vulkan.Dynamic (DeviceCmds(pVkDestroyDataGraphPipelineSessionARM))
+import Vulkan.Dynamic (DeviceCmds(pVkGetDataGraphPipelineAvailablePropertiesARM))
+import Vulkan.Dynamic (DeviceCmds(pVkGetDataGraphPipelinePropertiesARM))
+import Vulkan.Dynamic (DeviceCmds(pVkGetDataGraphPipelineSessionBindPointRequirementsARM))
+import Vulkan.Dynamic (DeviceCmds(pVkGetDataGraphPipelineSessionMemoryRequirementsARM))
+import Vulkan.Core10.Handles (DeviceMemory)
+import Vulkan.Core10.FundamentalTypes (DeviceSize)
+import Vulkan.Core10.Handles (Device_T)
+import Vulkan.CStruct.Extends (Extends)
+import Vulkan.CStruct.Extends (Extendss)
+import Vulkan.CStruct.Extends (Extensible(..))
+import Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits (ExternalMemoryHandleTypeFlags)
+import Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits (ExternalSemaphoreHandleTypeFlags)
+import Vulkan.Core10.FundamentalTypes (Flags64)
+import Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM))
+import Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM))
+import Vulkan.Core10.APIConstants (MAX_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_SET_NAME_SIZE_ARM)
+import Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2 (MemoryRequirements2)
+import Vulkan.CStruct.Extends (PeekChain)
+import Vulkan.CStruct.Extends (PeekChain(..))
+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.Handles (Pipeline)
+import Vulkan.Core10.Handles (Pipeline(..))
+import Vulkan.Core10.Handles (PipelineCache)
+import Vulkan.Core10.Handles (PipelineCache(..))
+import Vulkan.Core14.Enums.PipelineCreateFlags2 (PipelineCreateFlags2)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_pipeline_creation_feedback (PipelineCreationFeedbackCreateInfo)
+import Vulkan.Core10.Handles (PipelineLayout)
+import Vulkan.CStruct.Extends (PokeChain)
+import Vulkan.CStruct.Extends (PokeChain(..))
+import Vulkan.Core10.Enums.Result (Result)
+import Vulkan.Core10.Enums.Result (Result(..))
+import Vulkan.Core10.Handles (ShaderModule)
+import {-# SOURCE #-} Vulkan.Core10.Shader (ShaderModuleCreateInfo)
+import Vulkan.CStruct.Extends (SomeStruct)
+import Vulkan.Core10.ComputePipeline (SpecializationInfo)
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_tensors (TensorDescriptionARM)
+import Vulkan.Exception (VulkanException(..))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_BIND_DATA_GRAPH_PIPELINE_SESSION_MEMORY_INFO_ARM))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_COMPILER_CONTROL_CREATE_INFO_ARM))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CONSTANT_ARM))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CONSTANT_TENSOR_SEMI_STRUCTURED_SPARSITY_INFO_ARM))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CREATE_INFO_ARM))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_DISPATCH_INFO_ARM))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_IDENTIFIER_CREATE_INFO_ARM))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_INFO_ARM))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_PROPERTY_QUERY_RESULT_ARM))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_RESOURCE_INFO_ARM))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENTS_INFO_ARM))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENT_ARM))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_CREATE_INFO_ARM))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_MEMORY_REQUIREMENTS_INFO_ARM))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SHADER_MODULE_CREATE_INFO_ARM))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DATA_GRAPH_PROCESSING_ENGINE_CREATE_INFO_ARM))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_FEATURES_ARM))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_INFO_ARM))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_PROPERTIES_ARM))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_PROPERTIES_ARM))
+import Vulkan.Core10.Enums.Result (Result(SUCCESS))
+import Vulkan.Extensions.Handles (DataGraphPipelineSessionARM(..))
+import Vulkan.Extensions.Handles (DeferredOperationKHR(..))
+import Vulkan.Core10.APIConstants (MAX_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_SET_NAME_SIZE_ARM)
+import Vulkan.Extensions.VK_ARM_tensors (TensorUsageFlagBitsARM(..))
+import Vulkan.Extensions.VK_ARM_tensors (TensorUsageFlagsARM)
+import Vulkan.Core10.APIConstants (pattern MAX_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_SET_NAME_SIZE_ARM)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCreateDataGraphPipelinesARM
+  :: FunPtr (Ptr Device_T -> DeferredOperationKHR -> PipelineCache -> Word32 -> Ptr (SomeStruct DataGraphPipelineCreateInfoARM) -> Ptr AllocationCallbacks -> Ptr Pipeline -> IO Result) -> Ptr Device_T -> DeferredOperationKHR -> PipelineCache -> Word32 -> Ptr (SomeStruct DataGraphPipelineCreateInfoARM) -> Ptr AllocationCallbacks -> Ptr Pipeline -> IO Result
+
+-- | vkCreateDataGraphPipelinesARM - Create data graph pipeline objects
+--
+-- = Description
+--
+-- The implementation will create a pipeline in each element of
+-- @pPipelines@ from the corresponding element of @pCreateInfos@. If the
+-- creation of any pipeline fails, that pipeline will be set to
+-- 'Vulkan.Core10.APIConstants.NULL_HANDLE'.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCreateDataGraphPipelinesARM-dataGraph-09760# The
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-dataGraph dataGraph>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCreateDataGraphPipelinesARM-device-09927# @device@ /must/
+--     support at least one queue family with the
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_DATA_GRAPH_BIT_ARM'
+--     capability
+--
+-- -   #VUID-vkCreateDataGraphPipelinesARM-deferredOperation-09761#
+--     @deferredOperation@ /must/ be
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-vkCreateDataGraphPipelinesARM-deferredOperation-09916# 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'
+--
+-- -   #VUID-vkCreateDataGraphPipelinesARM-pNext-09928# If at least one of
+--     the 'DataGraphPipelineCreateInfoARM' includes a
+--     'DataGraphPipelineIdentifierCreateInfoARM' structure in its @pNext@
+--     chain then @pipelineCache@ /must/ not be
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-vkCreateDataGraphPipelinesARM-pipelineCache-09762# If
+--     @pipelineCache@ was created with
+--     'Vulkan.Core10.Enums.PipelineCacheCreateFlagBits.PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT',
+--     host access to @pipelineCache@ /must/ be
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#fundamentals-threadingbehavior externally synchronized>
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCreateDataGraphPipelinesARM-device-parameter# @device@
+--     /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkCreateDataGraphPipelinesARM-deferredOperation-parameter# If
+--     @deferredOperation@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
+--     @deferredOperation@ /must/ be a valid
+--     'Vulkan.Extensions.Handles.DeferredOperationKHR' handle
+--
+-- -   #VUID-vkCreateDataGraphPipelinesARM-pipelineCache-parameter# If
+--     @pipelineCache@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
+--     @pipelineCache@ /must/ be a valid
+--     'Vulkan.Core10.Handles.PipelineCache' handle
+--
+-- -   #VUID-vkCreateDataGraphPipelinesARM-pCreateInfos-parameter#
+--     @pCreateInfos@ /must/ be a valid pointer to an array of
+--     @createInfoCount@ valid 'DataGraphPipelineCreateInfoARM' structures
+--
+-- -   #VUID-vkCreateDataGraphPipelinesARM-pAllocator-parameter# If
+--     @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid pointer
+--     to a valid 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'
+--     structure
+--
+-- -   #VUID-vkCreateDataGraphPipelinesARM-pPipelines-parameter#
+--     @pPipelines@ /must/ be a valid pointer to an array of
+--     @createInfoCount@ 'Vulkan.Core10.Handles.Pipeline' handles
+--
+-- -   #VUID-vkCreateDataGraphPipelinesARM-device-queuecount# The device
+--     /must/ have been created with at least @1@ queue
+--
+-- -   #VUID-vkCreateDataGraphPipelinesARM-createInfoCount-arraylength#
+--     @createInfoCount@ /must/ be greater than @0@
+--
+-- -   #VUID-vkCreateDataGraphPipelinesARM-deferredOperation-parent# If
+--     @deferredOperation@ is a valid handle, it /must/ have been created,
+--     allocated, or retrieved from @device@
+--
+-- -   #VUID-vkCreateDataGraphPipelinesARM-pipelineCache-parent# If
+--     @pipelineCache@ is a valid handle, it /must/ have been created,
+--     allocated, or retrieved from @device@
+--
+-- == Return Codes
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
+--
+--     -   'Vulkan.Extensions.VK_EXT_pipeline_creation_cache_control.PIPELINE_COMPILE_REQUIRED_EXT'
+--
+--     -   '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_DEVICE_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_data_graph VK_ARM_data_graph>,
+-- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',
+-- 'DataGraphPipelineCreateInfoARM',
+-- 'Vulkan.Extensions.Handles.DeferredOperationKHR',
+-- 'Vulkan.Core10.Handles.Device', 'Vulkan.Core10.Handles.Pipeline',
+-- 'Vulkan.Core10.Handles.PipelineCache'
+createDataGraphPipelinesARM :: forall io
+                             . (MonadIO io)
+                            => -- | @device@ is the logical device that creates the data graph pipelines.
+                               Device
+                            -> -- | @deferredOperation@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE' or the
+                               -- handle of a valid 'Vulkan.Extensions.Handles.DeferredOperationKHR'
+                               -- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-cache pipeline cache>
+                               -- object, in which case use of that cache is enabled for the duration of
+                               -- the command.
+                               PipelineCache
+                            -> -- | @pCreateInfos@ is a pointer to an array of
+                               -- 'DataGraphPipelineCreateInfoARM' structures.
+                               ("createInfos" ::: Vector (SomeStruct DataGraphPipelineCreateInfoARM))
+                            -> -- | @pAllocator@ controls host memory allocation as described in the
+                               -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
+                               -- chapter.
+                               ("allocator" ::: Maybe AllocationCallbacks)
+                            -> io (Result, ("pipelines" ::: Vector Pipeline))
+createDataGraphPipelinesARM device
+                              deferredOperation
+                              pipelineCache
+                              createInfos
+                              allocator = liftIO . evalContT $ do
+  let vkCreateDataGraphPipelinesARMPtr = pVkCreateDataGraphPipelinesARM (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCreateDataGraphPipelinesARMPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCreateDataGraphPipelinesARM is null" Nothing Nothing
+  let vkCreateDataGraphPipelinesARM' = mkVkCreateDataGraphPipelinesARM vkCreateDataGraphPipelinesARMPtr
+  pPCreateInfos <- ContT $ allocaBytes @(DataGraphPipelineCreateInfoARM _) ((Data.Vector.length (createInfos)) * 48)
+  Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPCreateInfos `plusPtr` (48 * (i)) :: Ptr (DataGraphPipelineCreateInfoARM _))) (e) . ($ ())) (createInfos)
+  pAllocator <- case (allocator) of
+    Nothing -> pure nullPtr
+    Just j -> ContT $ withCStruct (j)
+  pPPipelines <- ContT $ bracket (callocBytes @Pipeline ((fromIntegral ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32))) * 8)) free
+  r <- lift $ traceAroundEvent "vkCreateDataGraphPipelinesARM" (vkCreateDataGraphPipelinesARM'
+                                                                  (deviceHandle (device))
+                                                                  (deferredOperation)
+                                                                  (pipelineCache)
+                                                                  ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32))
+                                                                  (forgetExtensions (pPCreateInfos))
+                                                                  pAllocator
+                                                                  (pPPipelines))
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+  pPipelines <- lift $ generateM (fromIntegral ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32))) (\i -> peek @Pipeline ((pPPipelines `advancePtrBytes` (8 * (i)) :: Ptr Pipeline)))
+  pure $ (r, pPipelines)
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCreateDataGraphPipelineSessionARM
+  :: FunPtr (Ptr Device_T -> Ptr (SomeStruct DataGraphPipelineSessionCreateInfoARM) -> Ptr AllocationCallbacks -> Ptr DataGraphPipelineSessionARM -> IO Result) -> Ptr Device_T -> Ptr (SomeStruct DataGraphPipelineSessionCreateInfoARM) -> Ptr AllocationCallbacks -> Ptr DataGraphPipelineSessionARM -> IO Result
+
+-- | vkCreateDataGraphPipelineSessionARM - Create a data graph pipeline
+-- session
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCreateDataGraphPipelineSessionARM-device-parameter# @device@
+--     /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkCreateDataGraphPipelineSessionARM-pCreateInfo-parameter#
+--     @pCreateInfo@ /must/ be a valid pointer to a valid
+--     'DataGraphPipelineSessionCreateInfoARM' structure
+--
+-- -   #VUID-vkCreateDataGraphPipelineSessionARM-pAllocator-parameter# If
+--     @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid pointer
+--     to a valid 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'
+--     structure
+--
+-- -   #VUID-vkCreateDataGraphPipelineSessionARM-pSession-parameter#
+--     @pSession@ /must/ be a valid pointer to a
+--     'Vulkan.Extensions.Handles.DataGraphPipelineSessionARM' handle
+--
+-- -   #VUID-vkCreateDataGraphPipelineSessionARM-device-queuecount# The
+--     device /must/ have been created with at least @1@ queue
+--
+-- == 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_DEVICE_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_data_graph VK_ARM_data_graph>,
+-- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',
+-- 'Vulkan.Extensions.Handles.DataGraphPipelineSessionARM',
+-- 'DataGraphPipelineSessionCreateInfoARM', 'Vulkan.Core10.Handles.Device'
+createDataGraphPipelineSessionARM :: forall a io
+                                   . ( Extendss DataGraphPipelineSessionCreateInfoARM a
+                                     , PokeChain a
+                                     , MonadIO io )
+                                  => -- | @device@ is the logical device that creates the data graph pipeline
+                                     -- session.
+                                     Device
+                                  -> -- | @pCreateInfo@ is a pointer to a 'DataGraphPipelineSessionCreateInfoARM'
+                                     -- structure.
+                                     (DataGraphPipelineSessionCreateInfoARM a)
+                                  -> -- | @pAllocator@ controls host memory allocation as described in the
+                                     -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
+                                     -- chapter.
+                                     ("allocator" ::: Maybe AllocationCallbacks)
+                                  -> io (DataGraphPipelineSessionARM)
+createDataGraphPipelineSessionARM device
+                                    createInfo
+                                    allocator = liftIO . evalContT $ do
+  let vkCreateDataGraphPipelineSessionARMPtr = pVkCreateDataGraphPipelineSessionARM (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCreateDataGraphPipelineSessionARMPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCreateDataGraphPipelineSessionARM is null" Nothing Nothing
+  let vkCreateDataGraphPipelineSessionARM' = mkVkCreateDataGraphPipelineSessionARM vkCreateDataGraphPipelineSessionARMPtr
+  pCreateInfo <- ContT $ withCStruct (createInfo)
+  pAllocator <- case (allocator) of
+    Nothing -> pure nullPtr
+    Just j -> ContT $ withCStruct (j)
+  pPSession <- ContT $ bracket (callocBytes @DataGraphPipelineSessionARM 8) free
+  r <- lift $ traceAroundEvent "vkCreateDataGraphPipelineSessionARM" (vkCreateDataGraphPipelineSessionARM'
+                                                                        (deviceHandle (device))
+                                                                        (forgetExtensions pCreateInfo)
+                                                                        pAllocator
+                                                                        (pPSession))
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+  pSession <- lift $ peek @DataGraphPipelineSessionARM pPSession
+  pure $ (pSession)
+
+-- | A convenience wrapper to make a compatible pair of calls to
+-- 'createDataGraphPipelineSessionARM' and
+-- 'destroyDataGraphPipelineSessionARM'
+--
+-- To ensure that 'destroyDataGraphPipelineSessionARM' 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.
+--
+withDataGraphPipelineSessionARM :: forall a io r . (Extendss DataGraphPipelineSessionCreateInfoARM a, PokeChain a, MonadIO io) => Device -> DataGraphPipelineSessionCreateInfoARM a -> Maybe AllocationCallbacks -> (io DataGraphPipelineSessionARM -> (DataGraphPipelineSessionARM -> io ()) -> r) -> r
+withDataGraphPipelineSessionARM device pCreateInfo pAllocator b =
+  b (createDataGraphPipelineSessionARM device pCreateInfo pAllocator)
+    (\(o0) -> destroyDataGraphPipelineSessionARM device o0 pAllocator)
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetDataGraphPipelineSessionBindPointRequirementsARM
+  :: FunPtr (Ptr Device_T -> Ptr DataGraphPipelineSessionBindPointRequirementsInfoARM -> Ptr Word32 -> Ptr DataGraphPipelineSessionBindPointRequirementARM -> IO Result) -> Ptr Device_T -> Ptr DataGraphPipelineSessionBindPointRequirementsInfoARM -> Ptr Word32 -> Ptr DataGraphPipelineSessionBindPointRequirementARM -> IO Result
+
+-- | vkGetDataGraphPipelineSessionBindPointRequirementsARM - Get the bind
+-- point requirements of a data graph pipeline session
+--
+-- = Description
+--
+-- If @pBindPointRequirements@ is @NULL@, then the number of bind points
+-- associated with the data graph pipeline session is returned in
+-- @pBindPointRequirementCount@. Otherwise, @pBindPointRequirementCount@
+-- /must/ point to a variable set by the user to the number of elements in
+-- the @pBindPointRequirements@ array, and on return the variable is
+-- overwritten with the number of structures actually written to
+-- @pBindPointRequirements@. If @pBindPointRequirementCount@ is less than
+-- the number of bind points associated with the data graph pipeline
+-- session, at most @pBindPointRequirementCount@ structures will be
+-- written, and 'Vulkan.Core10.Enums.Result.INCOMPLETE' will be returned
+-- instead of 'Vulkan.Core10.Enums.Result.SUCCESS', to indicate that not
+-- all the required bind points were returned.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkGetDataGraphPipelineSessionBindPointRequirementsARM-session-09783#
+--     The @session@ member of @pInfo@ /must/ have been created with
+--     @device@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkGetDataGraphPipelineSessionBindPointRequirementsARM-device-parameter#
+--     @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkGetDataGraphPipelineSessionBindPointRequirementsARM-pInfo-parameter#
+--     @pInfo@ /must/ be a valid pointer to a valid
+--     'DataGraphPipelineSessionBindPointRequirementsInfoARM' structure
+--
+-- -   #VUID-vkGetDataGraphPipelineSessionBindPointRequirementsARM-pBindPointRequirementCount-parameter#
+--     @pBindPointRequirementCount@ /must/ be a valid pointer to a
+--     @uint32_t@ value
+--
+-- -   #VUID-vkGetDataGraphPipelineSessionBindPointRequirementsARM-pBindPointRequirements-parameter#
+--     If the value referenced by @pBindPointRequirementCount@ is not @0@,
+--     and @pBindPointRequirements@ is not @NULL@, @pBindPointRequirements@
+--     /must/ be a valid pointer to an array of
+--     @pBindPointRequirementCount@
+--     'DataGraphPipelineSessionBindPointRequirementARM' structures
+--
+-- == Return Codes
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
+--
+--     -   'Vulkan.Core10.Enums.Result.INCOMPLETE'
+--
+--     -   '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_DEVICE_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_data_graph VK_ARM_data_graph>,
+-- 'DataGraphPipelineSessionBindPointRequirementARM',
+-- 'DataGraphPipelineSessionBindPointRequirementsInfoARM',
+-- 'Vulkan.Core10.Handles.Device'
+getDataGraphPipelineSessionBindPointRequirementsARM :: forall io
+                                                     . (MonadIO io)
+                                                    => -- | @device@ is the logical device that owns the data graph pipeline
+                                                       -- session.
+                                                       Device
+                                                    -> -- | @pInfo@ is a pointer to a
+                                                       -- 'DataGraphPipelineSessionBindPointRequirementsInfoARM' structure
+                                                       -- containing parameters for the bind point requirements query.
+                                                       DataGraphPipelineSessionBindPointRequirementsInfoARM
+                                                    -> io (Result, ("bindPointRequirements" ::: Vector DataGraphPipelineSessionBindPointRequirementARM))
+getDataGraphPipelineSessionBindPointRequirementsARM device
+                                                      info = liftIO . evalContT $ do
+  let vkGetDataGraphPipelineSessionBindPointRequirementsARMPtr = pVkGetDataGraphPipelineSessionBindPointRequirementsARM (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkGetDataGraphPipelineSessionBindPointRequirementsARMPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetDataGraphPipelineSessionBindPointRequirementsARM is null" Nothing Nothing
+  let vkGetDataGraphPipelineSessionBindPointRequirementsARM' = mkVkGetDataGraphPipelineSessionBindPointRequirementsARM vkGetDataGraphPipelineSessionBindPointRequirementsARMPtr
+  let device' = deviceHandle (device)
+  pInfo <- ContT $ withCStruct (info)
+  pPBindPointRequirementCount <- ContT $ bracket (callocBytes @Word32 4) free
+  r <- lift $ traceAroundEvent "vkGetDataGraphPipelineSessionBindPointRequirementsARM" (vkGetDataGraphPipelineSessionBindPointRequirementsARM'
+                                                                                          device'
+                                                                                          pInfo
+                                                                                          (pPBindPointRequirementCount)
+                                                                                          (nullPtr))
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+  pBindPointRequirementCount <- lift $ peek @Word32 pPBindPointRequirementCount
+  pPBindPointRequirements <- ContT $ bracket (callocBytes @DataGraphPipelineSessionBindPointRequirementARM ((fromIntegral (pBindPointRequirementCount)) * 32)) free
+  _ <- traverse (\i -> ContT $ pokeZeroCStruct (pPBindPointRequirements `advancePtrBytes` (i * 32) :: Ptr DataGraphPipelineSessionBindPointRequirementARM) . ($ ())) [0..(fromIntegral (pBindPointRequirementCount)) - 1]
+  r' <- lift $ traceAroundEvent "vkGetDataGraphPipelineSessionBindPointRequirementsARM" (vkGetDataGraphPipelineSessionBindPointRequirementsARM'
+                                                                                           device'
+                                                                                           pInfo
+                                                                                           (pPBindPointRequirementCount)
+                                                                                           ((pPBindPointRequirements)))
+  lift $ when (r' < SUCCESS) (throwIO (VulkanException r'))
+  pBindPointRequirementCount' <- lift $ peek @Word32 pPBindPointRequirementCount
+  pBindPointRequirements' <- lift $ generateM (fromIntegral (pBindPointRequirementCount')) (\i -> peekCStruct @DataGraphPipelineSessionBindPointRequirementARM (((pPBindPointRequirements) `advancePtrBytes` (32 * (i)) :: Ptr DataGraphPipelineSessionBindPointRequirementARM)))
+  pure $ ((r'), pBindPointRequirements')
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetDataGraphPipelineSessionMemoryRequirementsARM
+  :: FunPtr (Ptr Device_T -> Ptr DataGraphPipelineSessionMemoryRequirementsInfoARM -> Ptr (SomeStruct MemoryRequirements2) -> IO ()) -> Ptr Device_T -> Ptr DataGraphPipelineSessionMemoryRequirementsInfoARM -> Ptr (SomeStruct MemoryRequirements2) -> IO ()
+
+-- | vkGetDataGraphPipelineSessionMemoryRequirementsARM - Get the memory
+-- requirements of a data graph pipeline session
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkGetDataGraphPipelineSessionMemoryRequirementsARM-session-09950#
+--     The @session@ member of @pInfo@ /must/ have been created with
+--     @device@
+--
+-- -   #VUID-vkGetDataGraphPipelineSessionMemoryRequirementsARM-bindPoint-09784#
+--     The @bindPoint@ member of @pInfo@ /must/ have been returned as part
+--     of a 'DataGraphPipelineSessionBindPointRequirementARM' whose
+--     @bindPointType@ member is
+--     'DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TYPE_MEMORY_ARM' by a prior
+--     call to 'getDataGraphPipelineSessionBindPointRequirementsARM' for
+--     the @session@ member of @pInfo@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkGetDataGraphPipelineSessionMemoryRequirementsARM-device-parameter#
+--     @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkGetDataGraphPipelineSessionMemoryRequirementsARM-pInfo-parameter#
+--     @pInfo@ /must/ be a valid pointer to a valid
+--     'DataGraphPipelineSessionMemoryRequirementsInfoARM' structure
+--
+-- -   #VUID-vkGetDataGraphPipelineSessionMemoryRequirementsARM-pMemoryRequirements-parameter#
+--     @pMemoryRequirements@ /must/ be a valid pointer to a
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.MemoryRequirements2'
+--     structure
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_data_graph VK_ARM_data_graph>,
+-- 'DataGraphPipelineSessionMemoryRequirementsInfoARM',
+-- 'Vulkan.Core10.Handles.Device',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.MemoryRequirements2'
+getDataGraphPipelineSessionMemoryRequirementsARM :: forall a io
+                                                  . ( Extendss MemoryRequirements2 a
+                                                    , PokeChain a
+                                                    , PeekChain a
+                                                    , MonadIO io )
+                                                 => -- | @device@ is the logical device that owns the data graph pipeline
+                                                    -- session.
+                                                    Device
+                                                 -> -- | @pInfo@ is a pointer to a
+                                                    -- 'DataGraphPipelineSessionMemoryRequirementsInfoARM' structure containing
+                                                    -- parameters for the memory requirements query.
+                                                    DataGraphPipelineSessionMemoryRequirementsInfoARM
+                                                 -> io (MemoryRequirements2 a)
+getDataGraphPipelineSessionMemoryRequirementsARM device
+                                                   info = liftIO . evalContT $ do
+  let vkGetDataGraphPipelineSessionMemoryRequirementsARMPtr = pVkGetDataGraphPipelineSessionMemoryRequirementsARM (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkGetDataGraphPipelineSessionMemoryRequirementsARMPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetDataGraphPipelineSessionMemoryRequirementsARM is null" Nothing Nothing
+  let vkGetDataGraphPipelineSessionMemoryRequirementsARM' = mkVkGetDataGraphPipelineSessionMemoryRequirementsARM vkGetDataGraphPipelineSessionMemoryRequirementsARMPtr
+  pInfo <- ContT $ withCStruct (info)
+  pPMemoryRequirements <- ContT (withZeroCStruct @(MemoryRequirements2 _))
+  lift $ traceAroundEvent "vkGetDataGraphPipelineSessionMemoryRequirementsARM" (vkGetDataGraphPipelineSessionMemoryRequirementsARM'
+                                                                                  (deviceHandle (device))
+                                                                                  pInfo
+                                                                                  (forgetExtensions (pPMemoryRequirements)))
+  pMemoryRequirements <- lift $ peekCStruct @(MemoryRequirements2 _) pPMemoryRequirements
+  pure $ (pMemoryRequirements)
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkBindDataGraphPipelineSessionMemoryARM
+  :: FunPtr (Ptr Device_T -> Word32 -> Ptr BindDataGraphPipelineSessionMemoryInfoARM -> IO Result) -> Ptr Device_T -> Word32 -> Ptr BindDataGraphPipelineSessionMemoryInfoARM -> IO Result
+
+-- | vkBindDataGraphPipelineSessionMemoryARM - Bind device memory to a data
+-- graph pipeline session 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_DEVICE_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_data_graph VK_ARM_data_graph>,
+-- 'BindDataGraphPipelineSessionMemoryInfoARM',
+-- 'Vulkan.Core10.Handles.Device'
+bindDataGraphPipelineSessionMemoryARM :: forall io
+                                       . (MonadIO io)
+                                      => -- | @device@ is the logical device that owns the data graph pipeline session
+                                         -- and memory.
+                                         --
+                                         -- #VUID-vkBindDataGraphPipelineSessionMemoryARM-device-parameter# @device@
+                                         -- /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+                                         Device
+                                      -> -- | @pBindInfos@ is a pointer to an array of
+                                         -- 'BindDataGraphPipelineSessionMemoryInfoARM' structures describing graph
+                                         -- pipeline sessions and memory to bind.
+                                         --
+                                         -- #VUID-vkBindDataGraphPipelineSessionMemoryARM-pBindInfos-parameter#
+                                         -- @pBindInfos@ /must/ be a valid pointer to an array of @bindInfoCount@
+                                         -- valid 'BindDataGraphPipelineSessionMemoryInfoARM' structures
+                                         ("bindInfos" ::: Vector BindDataGraphPipelineSessionMemoryInfoARM)
+                                      -> io ()
+bindDataGraphPipelineSessionMemoryARM device bindInfos = liftIO . evalContT $ do
+  let vkBindDataGraphPipelineSessionMemoryARMPtr = pVkBindDataGraphPipelineSessionMemoryARM (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkBindDataGraphPipelineSessionMemoryARMPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkBindDataGraphPipelineSessionMemoryARM is null" Nothing Nothing
+  let vkBindDataGraphPipelineSessionMemoryARM' = mkVkBindDataGraphPipelineSessionMemoryARM vkBindDataGraphPipelineSessionMemoryARMPtr
+  pPBindInfos <- ContT $ allocaBytes @BindDataGraphPipelineSessionMemoryInfoARM ((Data.Vector.length (bindInfos)) * 48)
+  lift $ Data.Vector.imapM_ (\i e -> poke (pPBindInfos `plusPtr` (48 * (i)) :: Ptr BindDataGraphPipelineSessionMemoryInfoARM) (e)) (bindInfos)
+  r <- lift $ traceAroundEvent "vkBindDataGraphPipelineSessionMemoryARM" (vkBindDataGraphPipelineSessionMemoryARM'
+                                                                            (deviceHandle (device))
+                                                                            ((fromIntegral (Data.Vector.length $ (bindInfos)) :: Word32))
+                                                                            (pPBindInfos))
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkDestroyDataGraphPipelineSessionARM
+  :: FunPtr (Ptr Device_T -> DataGraphPipelineSessionARM -> Ptr AllocationCallbacks -> IO ()) -> Ptr Device_T -> DataGraphPipelineSessionARM -> Ptr AllocationCallbacks -> IO ()
+
+-- | vkDestroyDataGraphPipelineSessionARM - Destroy a data graph pipeline
+-- session object
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkDestroyDataGraphPipelineSessionARM-session-09793# All
+--     submitted commands that refer to @session@ /must/ have completed
+--     execution
+--
+-- -   #VUID-vkDestroyDataGraphPipelineSessionARM-session-09794# If
+--     'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' were
+--     provided when @session@ was created, a compatible set of callbacks
+--     /must/ be provided here
+--
+-- -   #VUID-vkDestroyDataGraphPipelineSessionARM-session-09795# If no
+--     'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' were
+--     provided when @session@ was created, @pAllocator@ /must/ be @NULL@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkDestroyDataGraphPipelineSessionARM-device-parameter#
+--     @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkDestroyDataGraphPipelineSessionARM-session-parameter#
+--     @session@ /must/ be a valid
+--     'Vulkan.Extensions.Handles.DataGraphPipelineSessionARM' handle
+--
+-- -   #VUID-vkDestroyDataGraphPipelineSessionARM-pAllocator-parameter# If
+--     @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid pointer
+--     to a valid 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'
+--     structure
+--
+-- -   #VUID-vkDestroyDataGraphPipelineSessionARM-session-parent# @session@
+--     /must/ have been created, allocated, or retrieved from @device@
+--
+-- == Host Synchronization
+--
+-- -   Host access to @session@ /must/ be externally synchronized
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_data_graph VK_ARM_data_graph>,
+-- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',
+-- 'Vulkan.Extensions.Handles.DataGraphPipelineSessionARM',
+-- 'Vulkan.Core10.Handles.Device'
+destroyDataGraphPipelineSessionARM :: forall io
+                                    . (MonadIO io)
+                                   => -- | @device@ is the logical device that destroys the data graph pipeline
+                                      -- session.
+                                      Device
+                                   -> -- | @session@ is the handle of the data graph pipeline session to destroy.
+                                      DataGraphPipelineSessionARM
+                                   -> -- | @pAllocator@ controls host memory allocation as described in the
+                                      -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
+                                      -- chapter.
+                                      ("allocator" ::: Maybe AllocationCallbacks)
+                                   -> io ()
+destroyDataGraphPipelineSessionARM device
+                                     session
+                                     allocator = liftIO . evalContT $ do
+  let vkDestroyDataGraphPipelineSessionARMPtr = pVkDestroyDataGraphPipelineSessionARM (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkDestroyDataGraphPipelineSessionARMPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkDestroyDataGraphPipelineSessionARM is null" Nothing Nothing
+  let vkDestroyDataGraphPipelineSessionARM' = mkVkDestroyDataGraphPipelineSessionARM vkDestroyDataGraphPipelineSessionARMPtr
+  pAllocator <- case (allocator) of
+    Nothing -> pure nullPtr
+    Just j -> ContT $ withCStruct (j)
+  lift $ traceAroundEvent "vkDestroyDataGraphPipelineSessionARM" (vkDestroyDataGraphPipelineSessionARM'
+                                                                    (deviceHandle (device))
+                                                                    (session)
+                                                                    pAllocator)
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdDispatchDataGraphARM
+  :: FunPtr (Ptr CommandBuffer_T -> DataGraphPipelineSessionARM -> Ptr (SomeStruct DataGraphPipelineDispatchInfoARM) -> IO ()) -> Ptr CommandBuffer_T -> DataGraphPipelineSessionARM -> Ptr (SomeStruct DataGraphPipelineDispatchInfoARM) -> IO ()
+
+-- | vkCmdDispatchDataGraphARM - Dispatch a data graph pipeline within a
+-- session
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdDispatchDataGraphARM-session-09796# For each of the
+--     session bind point requirements returned by
+--     'getDataGraphPipelineSessionBindPointRequirementsARM' for @session@,
+--     'DataGraphPipelineSessionBindPointRequirementARM'::@numObjects@
+--     objects /must/ have been bound to @session@
+--
+-- -   #VUID-vkCmdDispatchDataGraphARM-dataGraphPipeline-09951# The
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command /must/ be identical to the @dataGraphPipeline@
+--     used to create @session@
+--
+-- -   #VUID-vkCmdDispatchDataGraphARM-None-09797# For each set /n/ that is
+--     statically used by a bound data graph pipeline, 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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-compatibility>
+--
+-- -   #VUID-vkCmdDispatchDataGraphARM-None-09935# Descriptors in each
+--     bound descriptor set, specified via
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
+--     be valid as described by
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptor-validity descriptor validity>
+--     if they are statically used by the 'Vulkan.Core10.Handles.Pipeline'
+--     bound to the pipeline bind point used by this command and the bound
+--     'Vulkan.Core10.Handles.Pipeline' was not created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDispatchDataGraphARM-None-09936# If the descriptors used
+--     by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
+--     point were specified via
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', the
+--     bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     without
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDispatchDataGraphARM-None-09937# Descriptors in bound
+--     descriptor buffers, specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     /must/ be valid if they are dynamically used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
+--     was created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDispatchDataGraphARM-None-09938# If the descriptors used
+--     by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
+--     point were specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDispatchDataGraphARM-None-09939# If a descriptor is
+--     dynamically used with a 'Vulkan.Core10.Handles.Pipeline' created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     the descriptor memory /must/ be resident
+--
+-- -   #VUID-vkCmdDispatchDataGraphARM-None-09799# A valid data graph
+--     pipeline /must/ be bound to the
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_DATA_GRAPH_ARM'
+--     pipeline bind point used by this command
+--
+-- -   #VUID-vkCmdDispatchDataGraphARM-pDescription-09930# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the
+--     underlying 'Vulkan.Extensions.Handles.TensorARM' object /must/ have
+--     been created with a
+--     'Vulkan.Extensions.VK_ARM_tensors.TensorCreateInfoARM'::@pDescription@
+--     whose @usage@ member contained
+--     'Vulkan.Extensions.VK_ARM_tensors.TENSOR_USAGE_DATA_GRAPH_BIT_ARM'
+--
+-- -   #VUID-vkCmdDispatchDataGraphARM-pipeline-09940# If the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command was created with a
+--     'DataGraphProcessingEngineCreateInfoARM' structure in the @pNext@
+--     chain of 'DataGraphPipelineCreateInfoARM' that included a foreign
+--     data graph processing engine in its @pProcessingEngines@ member,
+--     then all
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptors accessed as a result of this command /must/ be
+--     'Vulkan.Extensions.Handles.TensorARM' objects that have been bound
+--     to memory allocated with
+--     'Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExportMemoryAllocateInfo'::@handleTypes@
+--     with set bits that are a subset of the bits in
+--     'QueueFamilyDataGraphProcessingEnginePropertiesARM'::@foreignMemoryHandleTypes@
+--     structure queried via
+--     'getPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM'
+--     with a @queueFamilyIndex@ matching the one the command pool used to
+--     create @commandBuffer@ was created for and an identical
+--     @engineType@, for all the foreign data graph processing engines that
+--     were part of the 'DataGraphProcessingEngineCreateInfoARM' used to
+--     create the 'Vulkan.Core10.Handles.Pipeline'
+--
+-- -   #VUID-vkCmdDispatchDataGraphARM-pNext-09952# If the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command was created with a
+--     'DataGraphProcessingEngineCreateInfoARM' structure in the @pNext@
+--     chain of 'DataGraphPipelineCreateInfoARM' that included a foreign
+--     data graph processing engine in its @pProcessingEngines@ member,
+--     then all @session@ bound memory /must/ have been allocated with
+--     'Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExportMemoryAllocateInfo'::@handleTypes@
+--     with set bits that are a subset of the bits in
+--     'QueueFamilyDataGraphProcessingEnginePropertiesARM'::@foreignMemoryHandleTypes@
+--     structure queried via
+--     'getPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM'
+--     with a @queueFamilyIndex@ matching the one the command pool used to
+--     create @commandBuffer@ was created for and an identical
+--     @engineType@, for all the foreign data graph processing engines that
+--     were part of the 'DataGraphProcessingEngineCreateInfoARM' used to
+--     create the 'Vulkan.Core10.Handles.Pipeline'
+--
+-- -   #VUID-vkCmdDispatchDataGraphARM-commandBuffer-09800# If
+--     @commandBuffer@ is an unprotected command buffer and
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, any resource accessed by bound data graph
+--     pipelines /must/ not be a protected resource
+--
+-- -   #VUID-vkCmdDispatchDataGraphARM-commandBuffer-09801# If
+--     @commandBuffer@ is a protected command buffer and
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, any resource written to by the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the bind point used
+--     by this command /must/ not be an unprotected resource
+--
+-- -   #VUID-vkCmdDispatchDataGraphARM-commandBuffer-09941# All the
+--     operations used by the bound data graph pipeline /must/ be supported
+--     on the queue family for which the command pool out of which
+--     @commandBuffer@ was allocated, as reported by
+--     'getPhysicalDeviceQueueFamilyDataGraphPropertiesARM'
+--
+-- -   #VUID-vkCmdDispatchDataGraphARM-pInfo-09964# If @pInfo@ is not
+--     @NULL@ and its @pNext@ chain includes a
+--     'Vulkan.Extensions.VK_ARM_data_graph_optical_flow.DataGraphPipelineOpticalFlowDispatchInfoARM'
+--     structure, then the @flags@ member of that latter structure /must/
+--     not contain
+--     'Vulkan.Extensions.VK_ARM_data_graph_optical_flow.DATA_GRAPH_OPTICAL_FLOW_EXECUTE_INPUT_UNCHANGED_BIT_ARM',
+--     'Vulkan.Extensions.VK_ARM_data_graph_optical_flow.DATA_GRAPH_OPTICAL_FLOW_EXECUTE_REFERENCE_UNCHANGED_BIT_ARM',
+--     'Vulkan.Extensions.VK_ARM_data_graph_optical_flow.DATA_GRAPH_OPTICAL_FLOW_EXECUTE_INPUT_IS_PREVIOUS_REFERENCE_BIT_ARM',
+--     or ename
+--     VK_DATA_GRAPH_OPTICAL_FLOW_EXECUTE_REFERENCE_IS_PREVIOUS_INPUT_BIT_ARM
+--     if @session@ was not created with
+--     'DATA_GRAPH_PIPELINE_SESSION_CREATE_OPTICAL_FLOW_CACHE_BIT_ARM'
+--
+-- -   #VUID-vkCmdDispatchDataGraphARM-nodeType-09980# If the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_DATA_GRAPH_ARM'
+--     pipeline bind point was not created with a
+--     'Vulkan.Extensions.VK_ARM_data_graph_optical_flow.DataGraphPipelineSingleNodeCreateInfoARM'
+--     structure whose @nodeType@ member is
+--     'Vulkan.Extensions.VK_ARM_data_graph_optical_flow.DATA_GRAPH_PIPELINE_NODE_TYPE_OPTICAL_FLOW_ARM'
+--     included in the @pNext@ chain of 'DataGraphPipelineCreateInfoARM',
+--     then a
+--     'Vulkan.Extensions.VK_ARM_data_graph_optical_flow.DataGraphPipelineOpticalFlowDispatchInfoARM'
+--     structure /must/ not be included in the @pNext@ chain of @pInfo@
+--
+-- -   #VUID-vkCmdDispatchDataGraphARM-nodeType-09981# If the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_DATA_GRAPH_ARM'
+--     pipeline bind point was created with a
+--     'Vulkan.Extensions.VK_ARM_data_graph_optical_flow.DataGraphPipelineSingleNodeCreateInfoARM'
+--     structure whose @nodeType@ member is
+--     'Vulkan.Extensions.VK_ARM_data_graph_optical_flow.DATA_GRAPH_PIPELINE_NODE_TYPE_OPTICAL_FLOW_ARM'
+--     included in the @pNext@ chain of 'DataGraphPipelineCreateInfoARM',
+--     then all image subresources that are accessed via a connection point
+--     in
+--     'Vulkan.Extensions.VK_ARM_data_graph_optical_flow.DataGraphPipelineSingleNodeCreateInfoARM'::@pConnections@
+--     /must/ be in the layout specified by the @layout@ member of the
+--     'Vulkan.Extensions.VK_ARM_data_graph_optical_flow.DataGraphPipelineResourceInfoImageLayoutARM'
+--     that extends the 'DataGraphPipelineResourceInfoARM' structure whose
+--     @descriptorSet@ and @binding@ members match the @set@ and @binding@
+--     members of the
+--     'Vulkan.Extensions.VK_ARM_data_graph_optical_flow.DataGraphPipelineSingleNodeConnectionARM'
+--     structure for the connection point , unless the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-unifiedImageLayouts unifiedImageLayouts>
+--     feature is enabled, in which case they /may/ be in the
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL' layout
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdDispatchDataGraphARM-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdDispatchDataGraphARM-session-parameter# @session@ /must/
+--     be a valid 'Vulkan.Extensions.Handles.DataGraphPipelineSessionARM'
+--     handle
+--
+-- -   #VUID-vkCmdDispatchDataGraphARM-pInfo-parameter# If @pInfo@ is not
+--     @NULL@, @pInfo@ /must/ be a valid pointer to a valid
+--     'DataGraphPipelineDispatchInfoARM' structure
+--
+-- -   #VUID-vkCmdDispatchDataGraphARM-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-vkCmdDispatchDataGraphARM-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_DATA_GRAPH_BIT_ARM'
+--     operations
+--
+-- -   #VUID-vkCmdDispatchDataGraphARM-renderpass# This command /must/ only
+--     be called outside of a render pass instance
+--
+-- -   #VUID-vkCmdDispatchDataGraphARM-suspended# This command /must/ not
+--     be called between suspended render pass instances
+--
+-- -   #VUID-vkCmdDispatchDataGraphARM-videocoding# This command /must/
+--     only be called outside of a video coding scope
+--
+-- -   #VUID-vkCmdDispatchDataGraphARM-commonparent# Both of
+--     @commandBuffer@, and @session@ /must/ have been created, allocated,
+--     or retrieved from the same 'Vulkan.Core10.Handles.Device'
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | VK_QUEUE_DATA_GRAPH_BIT_ARM                                                                                           | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdDispatchDataGraphARM is affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_data_graph VK_ARM_data_graph>,
+-- 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'DataGraphPipelineDispatchInfoARM',
+-- 'Vulkan.Extensions.Handles.DataGraphPipelineSessionARM'
+cmdDispatchDataGraphARM :: forall a io
+                         . ( Extendss DataGraphPipelineDispatchInfoARM a
+                           , PokeChain a
+                           , MonadIO io )
+                        => -- | @commandBuffer@ is the command buffer into which the command will be
+                           -- recorded.
+                           CommandBuffer
+                        -> -- | @session@ is the 'Vulkan.Extensions.Handles.DataGraphPipelineSessionARM'
+                           -- that data graph pipeline being dispatched will use.
+                           DataGraphPipelineSessionARM
+                        -> -- | @pInfo@ is @NULL@ or a pointer to a 'DataGraphPipelineDispatchInfoARM'
+                           -- structure.
+                           ("info" ::: Maybe (DataGraphPipelineDispatchInfoARM a))
+                        -> io ()
+cmdDispatchDataGraphARM commandBuffer session info = liftIO . evalContT $ do
+  let vkCmdDispatchDataGraphARMPtr = pVkCmdDispatchDataGraphARM (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdDispatchDataGraphARMPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdDispatchDataGraphARM is null" Nothing Nothing
+  let vkCmdDispatchDataGraphARM' = mkVkCmdDispatchDataGraphARM vkCmdDispatchDataGraphARMPtr
+  pInfo <- case (info) of
+    Nothing -> pure nullPtr
+    Just j -> ContT $ withCStruct (j)
+  lift $ traceAroundEvent "vkCmdDispatchDataGraphARM" (vkCmdDispatchDataGraphARM'
+                                                         (commandBufferHandle (commandBuffer))
+                                                         (session)
+                                                         (forgetExtensions pInfo))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetDataGraphPipelineAvailablePropertiesARM
+  :: FunPtr (Ptr Device_T -> Ptr DataGraphPipelineInfoARM -> Ptr Word32 -> Ptr DataGraphPipelinePropertyARM -> IO Result) -> Ptr Device_T -> Ptr DataGraphPipelineInfoARM -> Ptr Word32 -> Ptr DataGraphPipelinePropertyARM -> IO Result
+
+-- | vkGetDataGraphPipelineAvailablePropertiesARM - Query available
+-- properties of a data graph pipeline
+--
+-- = Description
+--
+-- If @pProperties@ is @NULL@, then the number of properties associated
+-- with the data graph pipeline is returned in @pPropertiesCount@.
+-- Otherwise, @pPropertiesCount@ /must/ point to a variable set by the user
+-- to the number of elements in the @pProperties@ array, and on return the
+-- variable is overwritten with the number of enums actually written to
+-- @pProperties@. If @pPropertiesCount@ is less than the number of
+-- properties associated with the data graph pipeline, at most
+-- @pPropertiesCount@ structures will be written, and
+-- 'Vulkan.Core10.Enums.Result.INCOMPLETE' will be returned instead of
+-- 'Vulkan.Core10.Enums.Result.SUCCESS', to indicate that not all the
+-- available properties were returned.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkGetDataGraphPipelineAvailablePropertiesARM-dataGraphPipeline-09888#
+--     The @dataGraphPipeline@ member of @pPipelineInfo@ /must/ have been
+--     created with @device@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkGetDataGraphPipelineAvailablePropertiesARM-device-parameter#
+--     @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkGetDataGraphPipelineAvailablePropertiesARM-pPipelineInfo-parameter#
+--     @pPipelineInfo@ /must/ be a valid pointer to a valid
+--     'DataGraphPipelineInfoARM' structure
+--
+-- -   #VUID-vkGetDataGraphPipelineAvailablePropertiesARM-pPropertiesCount-parameter#
+--     @pPropertiesCount@ /must/ be a valid pointer to a @uint32_t@ value
+--
+-- -   #VUID-vkGetDataGraphPipelineAvailablePropertiesARM-pProperties-parameter#
+--     If the value referenced by @pPropertiesCount@ is not @0@, and
+--     @pProperties@ is not @NULL@, @pProperties@ /must/ be a valid pointer
+--     to an array of @pPropertiesCount@ 'DataGraphPipelinePropertyARM'
+--     values
+--
+-- == Return Codes
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
+--
+--     -   'Vulkan.Core10.Enums.Result.INCOMPLETE'
+--
+--     -   '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_DEVICE_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_data_graph VK_ARM_data_graph>,
+-- 'DataGraphPipelineInfoARM', 'DataGraphPipelinePropertyARM',
+-- 'Vulkan.Core10.Handles.Device'
+getDataGraphPipelineAvailablePropertiesARM :: forall io
+                                            . (MonadIO io)
+                                           => -- | @device@ is the logical device that created the data graph pipeline.
+                                              Device
+                                           -> -- | @pPipelineInfo@ is a 'DataGraphPipelineInfoARM' that describes the
+                                              -- 'Vulkan.Core10.Handles.Pipeline' being queried.
+                                              DataGraphPipelineInfoARM
+                                           -> io (Result, ("properties" ::: Vector DataGraphPipelinePropertyARM))
+getDataGraphPipelineAvailablePropertiesARM device
+                                             pipelineInfo = liftIO . evalContT $ do
+  let vkGetDataGraphPipelineAvailablePropertiesARMPtr = pVkGetDataGraphPipelineAvailablePropertiesARM (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkGetDataGraphPipelineAvailablePropertiesARMPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetDataGraphPipelineAvailablePropertiesARM is null" Nothing Nothing
+  let vkGetDataGraphPipelineAvailablePropertiesARM' = mkVkGetDataGraphPipelineAvailablePropertiesARM vkGetDataGraphPipelineAvailablePropertiesARMPtr
+  let device' = deviceHandle (device)
+  pPipelineInfo <- ContT $ withCStruct (pipelineInfo)
+  pPPropertiesCount <- ContT $ bracket (callocBytes @Word32 4) free
+  r <- lift $ traceAroundEvent "vkGetDataGraphPipelineAvailablePropertiesARM" (vkGetDataGraphPipelineAvailablePropertiesARM'
+                                                                                 device'
+                                                                                 pPipelineInfo
+                                                                                 (pPPropertiesCount)
+                                                                                 (nullPtr))
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+  pPropertiesCount <- lift $ peek @Word32 pPPropertiesCount
+  pPProperties <- ContT $ bracket (callocBytes @DataGraphPipelinePropertyARM ((fromIntegral (pPropertiesCount)) * 4)) free
+  r' <- lift $ traceAroundEvent "vkGetDataGraphPipelineAvailablePropertiesARM" (vkGetDataGraphPipelineAvailablePropertiesARM'
+                                                                                  device'
+                                                                                  pPipelineInfo
+                                                                                  (pPPropertiesCount)
+                                                                                  (pPProperties))
+  lift $ when (r' < SUCCESS) (throwIO (VulkanException r'))
+  pPropertiesCount' <- lift $ peek @Word32 pPPropertiesCount
+  pProperties' <- lift $ generateM (fromIntegral (pPropertiesCount')) (\i -> peek @DataGraphPipelinePropertyARM ((pPProperties `advancePtrBytes` (4 * (i)) :: Ptr DataGraphPipelinePropertyARM)))
+  pure $ ((r'), pProperties')
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetDataGraphPipelinePropertiesARM
+  :: FunPtr (Ptr Device_T -> Ptr DataGraphPipelineInfoARM -> Word32 -> Ptr DataGraphPipelinePropertyQueryResultARM -> IO Result) -> Ptr Device_T -> Ptr DataGraphPipelineInfoARM -> Word32 -> Ptr DataGraphPipelinePropertyQueryResultARM -> IO Result
+
+-- | vkGetDataGraphPipelinePropertiesARM - Query properties of a data graph
+-- pipeline
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkGetDataGraphPipelinePropertiesARM-dataGraphPipeline-09802#
+--     The @dataGraphPipeline@ member of @pPipelineInfo@ /must/ have been
+--     created with @device@
+--
+-- -   #VUID-vkGetDataGraphPipelinePropertiesARM-pProperties-09889# There
+--     /must/ not be two or more structures in the @pProperties@ array with
+--     the same 'DataGraphPipelinePropertyQueryResultARM'::@property@
+--
+-- -   #VUID-vkGetDataGraphPipelinePropertiesARM-pProperties-09856# If
+--     @pProperties@ includes a 'DataGraphPipelinePropertyQueryResultARM'
+--     whose @property@ member is
+--     'DATA_GRAPH_PIPELINE_PROPERTY_NEURAL_ACCELERATOR_STATISTICS_INFO_ARM'
+--     then @dataGraphPipeline@ /must/ have been created with a
+--     'Vulkan.Extensions.VK_ARM_data_graph_neural_accelerator_statistics.DataGraphPipelineNeuralStatisticsCreateInfoARM'
+--     whose @allowNeuralStatistics@ member was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' included in the @pNext@ chain
+--     of 'DataGraphPipelineCreateInfoARM'.
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkGetDataGraphPipelinePropertiesARM-device-parameter# @device@
+--     /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkGetDataGraphPipelinePropertiesARM-pPipelineInfo-parameter#
+--     @pPipelineInfo@ /must/ be a valid pointer to a valid
+--     'DataGraphPipelineInfoARM' structure
+--
+-- -   #VUID-vkGetDataGraphPipelinePropertiesARM-pProperties-parameter#
+--     @pProperties@ /must/ be a valid pointer to an array of
+--     @propertiesCount@ 'DataGraphPipelinePropertyQueryResultARM'
+--     structures
+--
+-- -   #VUID-vkGetDataGraphPipelinePropertiesARM-propertiesCount-arraylength#
+--     @propertiesCount@ /must/ be greater than @0@
+--
+-- == Return Codes
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
+--
+--     -   'Vulkan.Core10.Enums.Result.INCOMPLETE'
+--
+--     -   '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_DEVICE_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_data_graph VK_ARM_data_graph>,
+-- 'DataGraphPipelineInfoARM', 'DataGraphPipelinePropertyQueryResultARM',
+-- 'Vulkan.Core10.Handles.Device'
+getDataGraphPipelinePropertiesARM :: forall io
+                                   . (MonadIO io)
+                                  => -- | @device@ is the logical device that created the data graph pipeline.
+                                     Device
+                                  -> -- | @pPipelineInfo@ is a 'DataGraphPipelineInfoARM' that describes the
+                                     -- 'Vulkan.Core10.Handles.Pipeline' being queried.
+                                     DataGraphPipelineInfoARM
+                                  -> -- | @propertiesCount@ is the length of the @pProperties@ array.
+                                     ("propertiesCount" ::: Word32)
+                                  -> io (Result, ("properties" ::: Vector DataGraphPipelinePropertyQueryResultARM))
+getDataGraphPipelinePropertiesARM device
+                                    pipelineInfo
+                                    propertiesCount = liftIO . evalContT $ do
+  let vkGetDataGraphPipelinePropertiesARMPtr = pVkGetDataGraphPipelinePropertiesARM (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkGetDataGraphPipelinePropertiesARMPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetDataGraphPipelinePropertiesARM is null" Nothing Nothing
+  let vkGetDataGraphPipelinePropertiesARM' = mkVkGetDataGraphPipelinePropertiesARM vkGetDataGraphPipelinePropertiesARMPtr
+  pPipelineInfo <- ContT $ withCStruct (pipelineInfo)
+  pPProperties <- ContT $ bracket (callocBytes @DataGraphPipelinePropertyQueryResultARM ((fromIntegral (propertiesCount)) * 40)) free
+  _ <- traverse (\i -> ContT $ pokeZeroCStruct (pPProperties `advancePtrBytes` (i * 40) :: Ptr DataGraphPipelinePropertyQueryResultARM) . ($ ())) [0..(fromIntegral (propertiesCount)) - 1]
+  r <- lift $ traceAroundEvent "vkGetDataGraphPipelinePropertiesARM" (vkGetDataGraphPipelinePropertiesARM'
+                                                                        (deviceHandle (device))
+                                                                        pPipelineInfo
+                                                                        (propertiesCount)
+                                                                        ((pPProperties)))
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+  pProperties <- lift $ generateM (fromIntegral (propertiesCount)) (\i -> peekCStruct @DataGraphPipelinePropertyQueryResultARM (((pPProperties) `advancePtrBytes` (40 * (i)) :: Ptr DataGraphPipelinePropertyQueryResultARM)))
+  pure $ (r, pProperties)
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM
+  :: FunPtr (Ptr PhysicalDevice_T -> Word32 -> Ptr Word32 -> Ptr QueueFamilyDataGraphPropertiesARM -> IO Result) -> Ptr PhysicalDevice_T -> Word32 -> Ptr Word32 -> Ptr QueueFamilyDataGraphPropertiesARM -> IO Result
+
+-- | vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM - Query the data
+-- processing engines and the operations they support for a given queue
+-- family of a physical device
+--
+-- = Description
+--
+-- If @pQueueFamilyDataGraphProperties@ is @NULL@, then the number of
+-- properties available is returned in
+-- @pQueueFamilyDataGraphPropertyCount@. Otherwise,
+-- @pQueueFamilyDataGraphPropertyCount@ /must/ point to a variable set by
+-- the application to the number of elements in the
+-- @pQueueFamilyDataGraphProperties@ array, and on return the variable is
+-- overwritten with the number of structures actually written to
+-- @pQueueFamilyDataGraphProperties@. If
+-- @pQueueFamilyDataGraphPropertyCount@ is less than the number of
+-- properties available, at most @pQueueFamilyDataGraphPropertyCount@
+-- structures will be written, and 'Vulkan.Core10.Enums.Result.INCOMPLETE'
+-- will be returned instead of 'Vulkan.Core10.Enums.Result.SUCCESS', to
+-- indicate that not all the available properties were returned.
+--
+-- If the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-dataGraphModelQCOM dataGraphModel>
+-- feature is supported, the implementation /must/ return at least one
+-- property with engine type
+-- 'PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_NEURAL_QCOM' or
+-- 'PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_COMPUTE_QCOM'.
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM-physicalDevice-parameter#
+--     @physicalDevice@ /must/ be a valid
+--     'Vulkan.Core10.Handles.PhysicalDevice' handle
+--
+-- -   #VUID-vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM-pQueueFamilyDataGraphPropertyCount-parameter#
+--     @pQueueFamilyDataGraphPropertyCount@ /must/ be a valid pointer to a
+--     @uint32_t@ value
+--
+-- -   #VUID-vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM-pQueueFamilyDataGraphProperties-parameter#
+--     If the value referenced by @pQueueFamilyDataGraphPropertyCount@ is
+--     not @0@, and @pQueueFamilyDataGraphProperties@ is not @NULL@,
+--     @pQueueFamilyDataGraphProperties@ /must/ be a valid pointer to an
+--     array of @pQueueFamilyDataGraphPropertyCount@
+--     'QueueFamilyDataGraphPropertiesARM' structures
+--
+-- == Return Codes
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
+--
+--     -   'Vulkan.Core10.Enums.Result.INCOMPLETE'
+--
+--     -   '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_DEVICE_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_data_graph VK_ARM_data_graph>,
+-- 'Vulkan.Core10.Handles.PhysicalDevice',
+-- 'QueueFamilyDataGraphPropertiesARM'
+getPhysicalDeviceQueueFamilyDataGraphPropertiesARM :: forall io
+                                                    . (MonadIO io)
+                                                   => -- | @physicalDevice@ is the physical device to query.
+                                                      PhysicalDevice
+                                                   -> -- | @queueFamilyIndex@ is the index of the queue family being queried.
+                                                      ("queueFamilyIndex" ::: Word32)
+                                                   -> io (Result, ("queueFamilyDataGraphProperties" ::: Vector QueueFamilyDataGraphPropertiesARM))
+getPhysicalDeviceQueueFamilyDataGraphPropertiesARM physicalDevice
+                                                     queueFamilyIndex = liftIO . evalContT $ do
+  let vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARMPtr = pVkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM (case physicalDevice of PhysicalDevice{instanceCmds} -> instanceCmds)
+  lift $ unless (vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARMPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM is null" Nothing Nothing
+  let vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM' = mkVkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARMPtr
+  let physicalDevice' = physicalDeviceHandle (physicalDevice)
+  pPQueueFamilyDataGraphPropertyCount <- ContT $ bracket (callocBytes @Word32 4) free
+  r <- lift $ traceAroundEvent "vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM" (vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM'
+                                                                                         physicalDevice'
+                                                                                         (queueFamilyIndex)
+                                                                                         (pPQueueFamilyDataGraphPropertyCount)
+                                                                                         (nullPtr))
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+  pQueueFamilyDataGraphPropertyCount <- lift $ peek @Word32 pPQueueFamilyDataGraphPropertyCount
+  pPQueueFamilyDataGraphProperties <- ContT $ bracket (callocBytes @QueueFamilyDataGraphPropertiesARM ((fromIntegral (pQueueFamilyDataGraphPropertyCount)) * 160)) free
+  _ <- traverse (\i -> ContT $ pokeZeroCStruct (pPQueueFamilyDataGraphProperties `advancePtrBytes` (i * 160) :: Ptr QueueFamilyDataGraphPropertiesARM) . ($ ())) [0..(fromIntegral (pQueueFamilyDataGraphPropertyCount)) - 1]
+  r' <- lift $ traceAroundEvent "vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM" (vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM'
+                                                                                          physicalDevice'
+                                                                                          (queueFamilyIndex)
+                                                                                          (pPQueueFamilyDataGraphPropertyCount)
+                                                                                          ((pPQueueFamilyDataGraphProperties)))
+  lift $ when (r' < SUCCESS) (throwIO (VulkanException r'))
+  pQueueFamilyDataGraphPropertyCount' <- lift $ peek @Word32 pPQueueFamilyDataGraphPropertyCount
+  pQueueFamilyDataGraphProperties' <- lift $ generateM (fromIntegral (pQueueFamilyDataGraphPropertyCount')) (\i -> peekCStruct @QueueFamilyDataGraphPropertiesARM (((pPQueueFamilyDataGraphProperties) `advancePtrBytes` (160 * (i)) :: Ptr QueueFamilyDataGraphPropertiesARM)))
+  pure $ ((r'), pQueueFamilyDataGraphProperties')
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM
+  :: FunPtr (Ptr PhysicalDevice_T -> Ptr PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM -> Ptr QueueFamilyDataGraphProcessingEnginePropertiesARM -> IO ()) -> Ptr PhysicalDevice_T -> Ptr PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM -> Ptr QueueFamilyDataGraphProcessingEnginePropertiesARM -> IO ()
+
+-- | vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM -
+-- Query the properties of a data graph processing engine for a specific
+-- queue family of a physical device
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_data_graph VK_ARM_data_graph>,
+-- 'Vulkan.Core10.Handles.PhysicalDevice',
+-- 'PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM',
+-- 'QueueFamilyDataGraphProcessingEnginePropertiesARM'
+getPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM :: forall io
+                                                                    . ( MonadIO io )
+                                                                   => -- | @physicalDevice@ is the physical device to query.
+                                                                      --
+                                                                      -- #VUID-vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM-physicalDevice-parameter#
+                                                                      -- @physicalDevice@ /must/ be a valid
+                                                                      -- 'Vulkan.Core10.Handles.PhysicalDevice' handle
+                                                                      PhysicalDevice
+                                                                   -> -- | @pQueueFamilyDataGraphProcessingEngineInfo@ is a pointer to a
+                                                                      -- 'PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM' structure
+                                                                      -- that specifies the data graph processing engine and queue family to
+                                                                      -- query.
+                                                                      --
+                                                                      -- #VUID-vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM-pQueueFamilyDataGraphProcessingEngineInfo-parameter#
+                                                                      -- @pQueueFamilyDataGraphProcessingEngineInfo@ /must/ be a valid pointer to
+                                                                      -- a valid 'PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM'
+                                                                      -- structure
+                                                                      PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM
+                                                                   -> io (QueueFamilyDataGraphProcessingEnginePropertiesARM)
+getPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM physicalDevice
+                                                                     queueFamilyDataGraphProcessingEngineInfo = liftIO . evalContT $ do
+  let vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARMPtr = pVkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM (case physicalDevice of PhysicalDevice{instanceCmds} -> instanceCmds)
+  lift $ unless (vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARMPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM is null" Nothing Nothing
+  let vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM' = mkVkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARMPtr
+  pQueueFamilyDataGraphProcessingEngineInfo <- ContT $ withCStruct (queueFamilyDataGraphProcessingEngineInfo)
+  pPQueueFamilyDataGraphProcessingEngineProperties <- ContT (withZeroCStruct @QueueFamilyDataGraphProcessingEnginePropertiesARM)
+  lift $ traceAroundEvent "vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM" (vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM'
+                                                                                                    (physicalDeviceHandle (physicalDevice))
+                                                                                                    pQueueFamilyDataGraphProcessingEngineInfo
+                                                                                                    (pPQueueFamilyDataGraphProcessingEngineProperties))
+  pQueueFamilyDataGraphProcessingEngineProperties <- lift $ peekCStruct @QueueFamilyDataGraphProcessingEnginePropertiesARM pPQueueFamilyDataGraphProcessingEngineProperties
+  pure $ (pQueueFamilyDataGraphProcessingEngineProperties)
+
+
+-- | VkPhysicalDeviceDataGraphFeaturesARM - Structure describing features to
+-- control data graph pipelines
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceDataGraphFeaturesARM' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceDataGraphFeaturesARM', it /must/ add an instance of the
+-- structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_data_graph VK_ARM_data_graph>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceDataGraphFeaturesARM = PhysicalDeviceDataGraphFeaturesARM
+  { -- | #features-dataGraph# @dataGraph@ specifies whether data graph pipelines
+    -- /can/ be used.
+    dataGraph :: Bool
+  , -- | #features-dataGraphUpdateAfterBind# @dataGraphUpdateAfterBind@ specifies
+    -- whether data graph pipelines /can/ be created with a
+    -- 'Vulkan.Core10.Handles.PipelineLayout' that uses one or more
+    -- 'Vulkan.Core10.Handles.DescriptorSetLayout' objects created with the
+    -- 'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'
+    -- bit set.
+    dataGraphUpdateAfterBind :: Bool
+  , -- | #features-dataGraphSpecializationConstants#
+    -- @dataGraphSpecializationConstants@ specifies whether data graph
+    -- pipelines /can/ be created from shader modules that use specialization
+    -- constants.
+    dataGraphSpecializationConstants :: Bool
+  , -- | #features-dataGraphDescriptorBuffer# @dataGraphDescriptorBuffer@
+    -- specifies whether data graph pipelines /can/ use descriptor buffers.
+    dataGraphDescriptorBuffer :: Bool
+  , -- | #features-dataGraphShaderModule# @dataGraphShaderModule@ specifies
+    -- whether data graph pipelines /can/ be created from a shader module.
+    dataGraphShaderModule :: Bool
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceDataGraphFeaturesARM)
+#endif
+deriving instance Show PhysicalDeviceDataGraphFeaturesARM
+
+instance ToCStruct PhysicalDeviceDataGraphFeaturesARM where
+  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceDataGraphFeaturesARM{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_FEATURES_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (dataGraph))
+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (dataGraphUpdateAfterBind))
+    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (dataGraphSpecializationConstants))
+    poke ((p `plusPtr` 28 :: Ptr Bool32)) (boolToBool32 (dataGraphDescriptorBuffer))
+    poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (dataGraphShaderModule))
+    f
+  cStructSize = 40
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_FEATURES_ARM)
+    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))
+    f
+
+instance FromCStruct PhysicalDeviceDataGraphFeaturesARM where
+  peekCStruct p = do
+    dataGraph <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    dataGraphUpdateAfterBind <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
+    dataGraphSpecializationConstants <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))
+    dataGraphDescriptorBuffer <- peek @Bool32 ((p `plusPtr` 28 :: Ptr Bool32))
+    dataGraphShaderModule <- peek @Bool32 ((p `plusPtr` 32 :: Ptr Bool32))
+    pure $ PhysicalDeviceDataGraphFeaturesARM
+             (bool32ToBool dataGraph)
+             (bool32ToBool dataGraphUpdateAfterBind)
+             (bool32ToBool dataGraphSpecializationConstants)
+             (bool32ToBool dataGraphDescriptorBuffer)
+             (bool32ToBool dataGraphShaderModule)
+
+instance Storable PhysicalDeviceDataGraphFeaturesARM where
+  sizeOf ~_ = 40
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceDataGraphFeaturesARM where
+  zero = PhysicalDeviceDataGraphFeaturesARM
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkDataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM -
+-- Structure specifying semi-structured sparsity parameters of a tensor
+-- data graph pipeline constant
+--
+-- = Description
+--
+-- This extension does not provide applications with a way of knowing which
+-- combinations of @dimension@, @zeroCount@, and @groupSize@ an
+-- implementation /can/ take advantage of. Providing sparsity information
+-- for a graph constant is always valid and recommended, regardless of the
+-- specific combinations an implementation /can/ take advantage of. When
+-- they /can/ not take advantage of the sparsity information,
+-- implementations will ignore it and treat the data as dense.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'DataGraphPipelineConstantARM'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_data_graph VK_ARM_data_graph>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_tensors VK_ARM_tensors>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM = DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM
+  { -- | @dimension@ is the dimension of the tensor along which its data is
+    -- sparse.
+    dimension :: Word32
+  , -- | @zeroCount@ is the number of tensor elements that /must/ be zero in
+    -- every group of @groupSize@ elements.
+    zeroCount :: Word32
+  , -- | @groupSize@ is the number of tensor elements in a group.
+    groupSize :: Word32
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM)
+#endif
+deriving instance Show DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM
+
+instance ToCStruct DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CONSTANT_TENSOR_SEMI_STRUCTURED_SPARSITY_INFO_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (dimension)
+    poke ((p `plusPtr` 20 :: Ptr Word32)) (zeroCount)
+    poke ((p `plusPtr` 24 :: Ptr Word32)) (groupSize)
+    f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CONSTANT_TENSOR_SEMI_STRUCTURED_SPARSITY_INFO_ARM)
+    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)
+    f
+
+instance FromCStruct DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM where
+  peekCStruct p = do
+    dimension <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    zeroCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
+    groupSize <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))
+    pure $ DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM
+             dimension zeroCount groupSize
+
+instance Storable DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM where
+  sizeOf ~_ = 32
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM where
+  zero = DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM
+           zero
+           zero
+           zero
+
+
+-- | VkDataGraphPipelineConstantARM - Structure specifying parameters of a
+-- data graph pipeline constant
+--
+-- = Description
+--
+-- The size and layout of the data pointed to by @pConstantData@ is
+-- specified by a specific structure in the @pNext@ chain for each type of
+-- graph constant.
+--
+-- For graph constants of tensor type, the layout of the data is specified
+-- by a 'Vulkan.Extensions.VK_ARM_tensors.TensorDescriptionARM' structure.
+-- The data /must/ be laid out according to the following members of this
+-- structure:
+--
+-- -   'Vulkan.Extensions.VK_ARM_tensors.TensorDescriptionARM'::@tiling@
+--
+-- -   'Vulkan.Extensions.VK_ARM_tensors.TensorDescriptionARM'::@format@
+--
+-- -   'Vulkan.Extensions.VK_ARM_tensors.TensorDescriptionARM'::@dimensionCount@
+--
+-- -   'Vulkan.Extensions.VK_ARM_tensors.TensorDescriptionARM'::@pDimensions@
+--
+-- -   'Vulkan.Extensions.VK_ARM_tensors.TensorDescriptionARM'::@pStrides@
+--
+-- The presence of a
+-- 'DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM' structure
+-- in the @pNext@ chain has no impact on the expected layout of the data
+-- pointed to by @pConstantData@.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkDataGraphPipelineConstantARM-pNext-09775# If the @pNext@
+--     chain of this structure includes one or more
+--     'DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM'
+--     structures then it /must/ also include a
+--     'Vulkan.Extensions.VK_ARM_tensors.TensorDescriptionARM' structure
+--
+-- -   #VUID-VkDataGraphPipelineConstantARM-pNext-09776# If the @pNext@
+--     chain of this structure includes one or more
+--     'DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM'
+--     structures then, for each structure,
+--     'DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM'::@dimension@
+--     /must/ be less than
+--     'Vulkan.Extensions.VK_ARM_tensors.TensorDescriptionARM'::@dimensionCount@
+--
+-- -   #VUID-VkDataGraphPipelineConstantARM-pNext-09777# If the @pNext@
+--     chain of this structure includes a
+--     'DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM'
+--     structure then, for each structure,
+--     'Vulkan.Extensions.VK_ARM_tensors.TensorDescriptionARM'::@pDimensions@['DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM'::@dimension@]
+--     /must/ be a multiple of
+--     'DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM'::@groupSize@
+--
+-- -   #VUID-VkDataGraphPipelineConstantARM-pNext-09870# If the @pNext@
+--     chain of this structure includes multiple
+--     'DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM'
+--     structures then no two structures /may/ have their
+--     'DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM'::@dimension@
+--     member set to the same value
+--
+-- -   #VUID-VkDataGraphPipelineConstantARM-id-09850# If the @pNext@ chain
+--     of this structure includes a
+--     'Vulkan.Extensions.VK_ARM_tensors.TensorDescriptionARM' structure,
+--     then its @usage@ member /must/ contain
+--     'Vulkan.Extensions.VK_ARM_tensors.TENSOR_USAGE_DATA_GRAPH_BIT_ARM'
+--
+-- -   #VUID-VkDataGraphPipelineConstantARM-pNext-09917# If the @pNext@
+--     chain of this structure includes a
+--     'Vulkan.Extensions.VK_ARM_tensors.TensorDescriptionARM' structure,
+--     then its @tiling@ member /must/ be
+--     'Vulkan.Extensions.VK_ARM_tensors.TENSOR_TILING_LINEAR_ARM'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkDataGraphPipelineConstantARM-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CONSTANT_ARM'
+--
+-- -   #VUID-VkDataGraphPipelineConstantARM-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
+--     'DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM' or
+--     'Vulkan.Extensions.VK_ARM_tensors.TensorDescriptionARM'
+--
+-- -   #VUID-VkDataGraphPipelineConstantARM-sType-unique# The @sType@ value
+--     of each structure in the @pNext@ chain /must/ be unique, with the
+--     exception of structures of type
+--     'DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM'
+--
+-- -   #VUID-VkDataGraphPipelineConstantARM-pConstantData-parameter#
+--     @pConstantData@ /must/ be a pointer value
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_data_graph VK_ARM_data_graph>,
+-- 'DataGraphPipelineShaderModuleCreateInfoARM',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data DataGraphPipelineConstantARM (es :: [Type]) = DataGraphPipelineConstantARM
+  { -- | @pNext@ is a pointer to a structure extending this structure.
+    next :: Chain es
+  , -- | @id@ is the unique identifier of the graph constant this structure
+    -- describes.
+    id' :: Word32
+  , -- | @pConstantData@ is a pointer to the data for this graph constant.
+    constantData :: Ptr ()
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (DataGraphPipelineConstantARM (es :: [Type]))
+#endif
+deriving instance Show (Chain es) => Show (DataGraphPipelineConstantARM es)
+
+instance Extensible DataGraphPipelineConstantARM where
+  extensibleTypeName = "DataGraphPipelineConstantARM"
+  setNext DataGraphPipelineConstantARM{..} next' = DataGraphPipelineConstantARM{next = next', ..}
+  getNext DataGraphPipelineConstantARM{..} = next
+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends DataGraphPipelineConstantARM e => b) -> Maybe b
+  extends _ f
+    | Just Refl <- eqT @e @DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM = Just f
+    | Just Refl <- eqT @e @TensorDescriptionARM = Just f
+    | otherwise = Nothing
+
+instance ( Extendss DataGraphPipelineConstantARM es
+         , PokeChain es ) => ToCStruct (DataGraphPipelineConstantARM es) where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p DataGraphPipelineConstantARM{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CONSTANT_ARM)
+    pNext'' <- fmap castPtr . ContT $ withChain (next)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
+    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) (id')
+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr ()))) (constantData)
+    lift $ f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CONSTANT_ARM)
+    pNext' <- fmap castPtr . ContT $ withZeroChain @es
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
+    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr ()))) (zero)
+    lift $ f
+
+instance ( Extendss DataGraphPipelineConstantARM es
+         , PeekChain es ) => FromCStruct (DataGraphPipelineConstantARM es) where
+  peekCStruct p = do
+    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
+    next <- peekChain (castPtr pNext)
+    id' <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    pConstantData <- peek @(Ptr ()) ((p `plusPtr` 24 :: Ptr (Ptr ())))
+    pure $ DataGraphPipelineConstantARM
+             next id' pConstantData
+
+instance es ~ '[] => Zero (DataGraphPipelineConstantARM es) where
+  zero = DataGraphPipelineConstantARM
+           ()
+           zero
+           zero
+
+
+-- | VkDataGraphPipelineResourceInfoARM - Structure specifying parameters of
+-- a data graph pipeline resource
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkDataGraphPipelineResourceInfoARM-descriptorSet-09851# If the
+--     @pNext@ chain of this structure includes a
+--     'Vulkan.Extensions.VK_ARM_tensors.TensorDescriptionARM' structure,
+--     then its @usage@ /must/ contain
+--     'Vulkan.Extensions.VK_ARM_tensors.TENSOR_USAGE_DATA_GRAPH_BIT_ARM'
+--
+-- -   #VUID-VkDataGraphPipelineResourceInfoARM-descriptorSet-09962# If
+--     @descriptorSet@ and @binding@ identify an image resource or an array
+--     of image resources, then a
+--     'Vulkan.Extensions.VK_ARM_data_graph_optical_flow.DataGraphPipelineResourceInfoImageLayoutARM'
+--     structure /must/ be included in the @pNext@ chain , unless the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-unifiedImageLayouts unifiedImageLayouts>
+--     feature is enabled
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkDataGraphPipelineResourceInfoARM-sType-sType# @sType@ /must/
+--     be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_RESOURCE_INFO_ARM'
+--
+-- -   #VUID-VkDataGraphPipelineResourceInfoARM-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_ARM_data_graph_optical_flow.DataGraphPipelineResourceInfoImageLayoutARM'
+--     or 'Vulkan.Extensions.VK_ARM_tensors.TensorDescriptionARM'
+--
+-- -   #VUID-VkDataGraphPipelineResourceInfoARM-sType-unique# The @sType@
+--     value of each structure in the @pNext@ chain /must/ be unique
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_data_graph VK_ARM_data_graph>,
+-- 'DataGraphPipelineCreateInfoARM',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data DataGraphPipelineResourceInfoARM (es :: [Type]) = DataGraphPipelineResourceInfoARM
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
+    next :: Chain es
+  , -- | @descriptorSet@ is the descriptor set number of the resource being
+    -- described.
+    descriptorSet :: Word32
+  , -- | @binding@ is the binding number of the resource being described.
+    binding :: Word32
+  , -- | @arrayElement@ is the element in the resource array if @descriptorSet@
+    -- and @binding@ identifies an array of resources or @0@ otherwise.
+    arrayElement :: Word32
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (DataGraphPipelineResourceInfoARM (es :: [Type]))
+#endif
+deriving instance Show (Chain es) => Show (DataGraphPipelineResourceInfoARM es)
+
+instance Extensible DataGraphPipelineResourceInfoARM where
+  extensibleTypeName = "DataGraphPipelineResourceInfoARM"
+  setNext DataGraphPipelineResourceInfoARM{..} next' = DataGraphPipelineResourceInfoARM{next = next', ..}
+  getNext DataGraphPipelineResourceInfoARM{..} = next
+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends DataGraphPipelineResourceInfoARM e => b) -> Maybe b
+  extends _ f
+    | Just Refl <- eqT @e @DataGraphPipelineResourceInfoImageLayoutARM = Just f
+    | Just Refl <- eqT @e @TensorDescriptionARM = Just f
+    | otherwise = Nothing
+
+instance ( Extendss DataGraphPipelineResourceInfoARM es
+         , PokeChain es ) => ToCStruct (DataGraphPipelineResourceInfoARM es) where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p DataGraphPipelineResourceInfoARM{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_RESOURCE_INFO_ARM)
+    pNext'' <- fmap castPtr . ContT $ withChain (next)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
+    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) (descriptorSet)
+    lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) (binding)
+    lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) (arrayElement)
+    lift $ f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_RESOURCE_INFO_ARM)
+    pNext' <- fmap castPtr . ContT $ withZeroChain @es
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
+    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
+    lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)
+    lift $ f
+
+instance ( Extendss DataGraphPipelineResourceInfoARM es
+         , PeekChain es ) => FromCStruct (DataGraphPipelineResourceInfoARM es) where
+  peekCStruct p = do
+    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
+    next <- peekChain (castPtr pNext)
+    descriptorSet <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    binding <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
+    arrayElement <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))
+    pure $ DataGraphPipelineResourceInfoARM
+             next descriptorSet binding arrayElement
+
+instance es ~ '[] => Zero (DataGraphPipelineResourceInfoARM es) where
+  zero = DataGraphPipelineResourceInfoARM
+           ()
+           zero
+           zero
+           zero
+
+
+-- | VkDataGraphPipelineCompilerControlCreateInfoARM - Structure specifying
+-- compiler control parameters of a newly created data graph pipeline
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'DataGraphPipelineCreateInfoARM'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_data_graph VK_ARM_data_graph>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data DataGraphPipelineCompilerControlCreateInfoARM = DataGraphPipelineCompilerControlCreateInfoARM
+  { -- | @pVendorOptions@ is a null-terminated UTF-8 string specifying
+    -- implementation-specific options that affect the creation of a data graph
+    -- pipeline.
+    --
+    -- #VUID-VkDataGraphPipelineCompilerControlCreateInfoARM-pVendorOptions-parameter#
+    -- @pVendorOptions@ /must/ be a null-terminated UTF-8 string
+    vendorOptions :: ByteString }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (DataGraphPipelineCompilerControlCreateInfoARM)
+#endif
+deriving instance Show DataGraphPipelineCompilerControlCreateInfoARM
+
+instance ToCStruct DataGraphPipelineCompilerControlCreateInfoARM where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p DataGraphPipelineCompilerControlCreateInfoARM{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_COMPILER_CONTROL_CREATE_INFO_ARM)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    pVendorOptions'' <- ContT $ useAsCString (vendorOptions)
+    lift $ poke ((p `plusPtr` 16 :: Ptr (Ptr CChar))) pVendorOptions''
+    lift $ f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_COMPILER_CONTROL_CREATE_INFO_ARM)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    pVendorOptions'' <- ContT $ useAsCString (mempty)
+    lift $ poke ((p `plusPtr` 16 :: Ptr (Ptr CChar))) pVendorOptions''
+    lift $ f
+
+instance FromCStruct DataGraphPipelineCompilerControlCreateInfoARM where
+  peekCStruct p = do
+    pVendorOptions <- packCString =<< peek ((p `plusPtr` 16 :: Ptr (Ptr CChar)))
+    pure $ DataGraphPipelineCompilerControlCreateInfoARM
+             pVendorOptions
+
+instance Zero DataGraphPipelineCompilerControlCreateInfoARM where
+  zero = DataGraphPipelineCompilerControlCreateInfoARM
+           mempty
+
+
+-- | VkDataGraphPipelineCreateInfoARM - Structure specifying parameters of a
+-- newly created data graph pipeline
+--
+-- = Description
+--
+-- Applications /can/ create a data graph pipeline entirely from data
+-- present in a pipeline cache. This is done by including a
+-- 'DataGraphPipelineIdentifierCreateInfoARM' structure in the @pNext@
+-- chain. If the required data is not found in the pipeline cache, creating
+-- the data graph pipeline is not possible and the implementation /must/
+-- fail as specified by
+-- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT'.
+--
+-- Applications /can/ create a data graph pipeline without providing a
+-- pipeline cache or shader module by invoking one of the models provided
+-- by the implementation. This is done by including
+-- 'Vulkan.Extensions.VK_QCOM_data_graph_model.DataGraphPipelineBuiltinModelCreateInfoQCOM'
+-- in the @pNext@ chain.
+--
+-- When an identifier or built-in model is used to create a data graph
+-- pipeline, implementations /may/ fail pipeline creation with
+-- 'Vulkan.Core10.Enums.Result.PIPELINE_COMPILE_REQUIRED' for any reason.
+--
+-- The data graph engines for this pipeline /can/ be selected by including
+-- a 'DataGraphProcessingEngineCreateInfoARM' to the @pNext@ chain of this
+-- structure. Otherwise,
+-- 'PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_DEFAULT_ARM' will be
+-- used as the sole data graph engine.
+--
+-- The data graph operations that this pipeline uses /must/ be supported
+-- for the data graph engines selected for this pipeline as retrieved by
+-- 'getPhysicalDeviceQueueFamilyDataGraphPropertiesARM'.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkDataGraphPipelineCreateInfoARM-pNext-09977# One and only one
+--     of the following structures /must/ be included in the @pNext@ chain:
+--
+--     -   'DataGraphPipelineShaderModuleCreateInfoARM'
+--
+--     -   'DataGraphPipelineIdentifierCreateInfoARM'
+--
+--     -   'Vulkan.Extensions.VK_QCOM_data_graph_model.DataGraphPipelineBuiltinModelCreateInfoQCOM'
+--
+--     -   'Vulkan.Extensions.VK_ARM_data_graph_optical_flow.DataGraphPipelineSingleNodeCreateInfoARM'
+--
+-- -   #VUID-VkDataGraphPipelineCreateInfoARM-flags-09764# @flags@ /may/
+--     only contain
+--     'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_NO_PROTECTED_ACCESS_BIT_EXT',
+--     'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_PROTECTED_ACCESS_ONLY_BIT_EXT',
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DISABLE_OPTIMIZATION_BIT',
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_BUFFER_BIT_EXT',
+--     'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_KHR'
+--     or
+--     'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_EARLY_RETURN_ON_FAILURE_BIT_KHR'
+--
+-- -   #VUID-VkDataGraphPipelineCreateInfoARM-flags-09848# If @flags@
+--     contains
+--     'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_PROTECTED_ACCESS_ONLY_BIT_EXT'
+--     then a
+--     'Vulkan.Extensions.VK_ARM_data_graph_neural_accelerator_statistics.DataGraphPipelineNeuralStatisticsCreateInfoARM'
+--     structure /must/ not be included in the @pNext@ chain.
+--
+-- -   #VUID-VkDataGraphPipelineCreateInfoARM-layout-09767# @layout@ /must/
+--     have been created with @pushConstantRangeCount@ equal to 0 and
+--     @pPushConstantRanges@ equal to @NULL@
+--
+-- -   #VUID-VkDataGraphPipelineCreateInfoARM-dataGraphUpdateAfterBind-09768#
+--     If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-dataGraphUpdateAfterBind dataGraphUpdateAfterBind>
+--     feature is not enabled, @layout@ must not use any
+--     'Vulkan.Core10.Handles.DescriptorSetLayout' object created with the
+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'
+--     bit set
+--
+-- -   #VUID-VkDataGraphPipelineCreateInfoARM-dataGraphDescriptorBuffer-09885#
+--     If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-dataGraphDescriptorBuffer dataGraphDescriptorBuffer>
+--     feature is not enabled, @flags@ /must/ not contain
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-VkDataGraphPipelineCreateInfoARM-layout-09769# If a
+--     'DataGraphPipelineShaderModuleCreateInfoARM' structure is included
+--     in the @pNext@ chain and a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-resources resource variable>
+--     is declared in the shader module, the corresponding descriptor
+--     binding used to create @layout@ /must/ have a @descriptorType@ that
+--     corresponds to the type of the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-resources resource variable>
+--
+-- -   #VUID-VkDataGraphPipelineCreateInfoARM-None-11840# If a
+--     'DataGraphPipelineIdentifierCreateInfoARM' or a
+--     'Vulkan.Extensions.VK_QCOM_data_graph_model.DataGraphPipelineBuiltinModelCreateInfoQCOM'
+--     structure is included in the @pNext@ chain, then @flags@ /must/
+--     contain
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT'
+--
+-- -   #VUID-VkDataGraphPipelineCreateInfoARM-None-12363# If a
+--     'DataGraphPipelineIdentifierCreateInfoARM' or a
+--     'Vulkan.Extensions.VK_QCOM_data_graph_model.DataGraphPipelineBuiltinModelCreateInfoQCOM'
+--     structure is included in the @pNext@ chain, then @resourceInfoCount@
+--     /must/ be 0
+--
+-- -   #VUID-VkDataGraphPipelineCreateInfoARM-resourceInfoCount-12364# If
+--     @resourceInfoCount@ is equal to 0, then @pResourceInfos@ /must/
+--     equal @NULL@
+--
+-- -   #VUID-VkDataGraphPipelineCreateInfoARM-None-12365# If neither a
+--     'DataGraphPipelineIdentifierCreateInfoARM' nor a
+--     'Vulkan.Extensions.VK_QCOM_data_graph_model.DataGraphPipelineBuiltinModelCreateInfoQCOM'
+--     structure are included in the @pNext@ chain, then
+--     @resourceInfoCount@ /must/ be greater than 0
+--
+-- -   #VUID-VkDataGraphPipelineCreateInfoARM-dataGraphShaderModule-09886#
+--     If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-dataGraphShaderModule dataGraphShaderModule>
+--     feature is not enabled, a
+--     'DataGraphPipelineShaderModuleCreateInfoARM' structure /must/ not be
+--     included in the @pNext@ chain
+--
+-- -   #VUID-VkDataGraphPipelineCreateInfoARM-layout-09934# If a
+--     'DataGraphPipelineShaderModuleCreateInfoARM' structure is included
+--     in the @pNext@ chain and an array
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-resources resource variable>
+--     is declared in the shader module, the corresponding descriptor
+--     binding used to create @layout@ /must/ have a @descriptorCount@ that
+--     is greater than or equal to the length of the array
+--
+-- -   #VUID-VkDataGraphPipelineCreateInfoARM-pipelineCreationCacheControl-09871#
+--     If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-pipelineCreationCacheControl pipelineCreationCacheControl>
+--     feature is not enabled, @flags@ /must/ not include
+--     'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_KHR'
+--     or
+--     'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_EARLY_RETURN_ON_FAILURE_BIT_KHR'
+--
+-- -   #VUID-VkDataGraphPipelineCreateInfoARM-pSetLayouts-09770# The
+--     descriptor set layouts in
+--     'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo'::@pSetLayouts@
+--     used to create @layout@ /must/ not include any
+--     'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutBinding' whose
+--     descriptor type is
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_MUTABLE_EXT'
+--
+-- -   #VUID-VkDataGraphPipelineCreateInfoARM-pipelineProtectedAccess-09772#
+--     If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-pipelineProtectedAccess pipelineProtectedAccess>
+--     feature is not enabled, @flags@ /must/ not include
+--     'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_NO_PROTECTED_ACCESS_BIT_EXT'
+--     or
+--     'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_PROTECTED_ACCESS_ONLY_BIT_EXT'
+--
+-- -   #VUID-VkDataGraphPipelineCreateInfoARM-flags-09773# @flags@ /must/
+--     not include both
+--     'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_NO_PROTECTED_ACCESS_BIT_EXT'
+--     and
+--     'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_PROTECTED_ACCESS_ONLY_BIT_EXT'
+--
+-- -   #VUID-VkDataGraphPipelineCreateInfoARM-pNext-09804# If the @pNext@
+--     chain includes an
+--     'Vulkan.Core13.Promoted_From_VK_EXT_pipeline_creation_feedback.PipelineCreationFeedbackCreateInfo'
+--     structure, then its @pipelineStageCreationFeedbackCount@ /must/ be 0
+--
+-- -   #VUID-VkDataGraphPipelineCreateInfoARM-pNext-09948# If a
+--     'DataGraphProcessingEngineCreateInfoARM' structure is included in
+--     the @pNext@ chain, each member of @pProcessingEngines@ /must/ be
+--     identical to an 'QueueFamilyDataGraphPropertiesARM'::@engine@
+--     retrieved from 'getPhysicalDeviceQueueFamilyDataGraphPropertiesARM'
+--     with the @physicalDevice@ that was used to create @device@
+--
+-- -   #VUID-VkDataGraphPipelineCreateInfoARM-pNext-09949# If a
+--     'DataGraphProcessingEngineCreateInfoARM' structure is not included
+--     in the @pNext@ chain,
+--     'PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_DEFAULT_ARM'
+--     /must/ be set in an 'QueueFamilyDataGraphPropertiesARM'::@engine@
+--     retrieved from 'getPhysicalDeviceQueueFamilyDataGraphPropertiesARM'
+--     with the @physicalDevice@ that was used to create @device@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkDataGraphPipelineCreateInfoARM-sType-sType# @sType@ /must/
+--     be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CREATE_INFO_ARM'
+--
+-- -   #VUID-VkDataGraphPipelineCreateInfoARM-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_QCOM_data_graph_model.DataGraphPipelineBuiltinModelCreateInfoQCOM',
+--     'DataGraphPipelineCompilerControlCreateInfoARM',
+--     'DataGraphPipelineIdentifierCreateInfoARM',
+--     'Vulkan.Extensions.VK_ARM_data_graph_neural_accelerator_statistics.DataGraphPipelineNeuralStatisticsCreateInfoARM',
+--     'Vulkan.Extensions.VK_ARM_data_graph_optical_flow.DataGraphPipelineOpticalFlowCreateInfoARM',
+--     'DataGraphPipelineShaderModuleCreateInfoARM',
+--     'Vulkan.Extensions.VK_ARM_data_graph_optical_flow.DataGraphPipelineSingleNodeCreateInfoARM',
+--     'DataGraphProcessingEngineCreateInfoARM',
+--     'Vulkan.Core13.Promoted_From_VK_EXT_pipeline_creation_feedback.PipelineCreationFeedbackCreateInfo',
+--     or 'Vulkan.Core10.Shader.ShaderModuleCreateInfo'
+--
+-- -   #VUID-VkDataGraphPipelineCreateInfoARM-sType-unique# The @sType@
+--     value of each structure in the @pNext@ chain /must/ be unique
+--
+-- -   #VUID-VkDataGraphPipelineCreateInfoARM-flags-parameter# @flags@
+--     /must/ be a valid combination of
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PipelineCreateFlagBits2'
+--     values
+--
+-- -   #VUID-VkDataGraphPipelineCreateInfoARM-layout-parameter# @layout@
+--     /must/ be a valid 'Vulkan.Core10.Handles.PipelineLayout' handle
+--
+-- -   #VUID-VkDataGraphPipelineCreateInfoARM-pResourceInfos-parameter# If
+--     @resourceInfoCount@ is not @0@, @pResourceInfos@ /must/ be a valid
+--     pointer to an array of @resourceInfoCount@ valid
+--     'DataGraphPipelineResourceInfoARM' structures
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_data_graph VK_ARM_data_graph>,
+-- 'DataGraphPipelineResourceInfoARM',
+-- 'Vulkan.Core14.Enums.PipelineCreateFlags2.PipelineCreateFlags2',
+-- 'Vulkan.Core10.Handles.PipelineLayout',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'createDataGraphPipelinesARM'
+data DataGraphPipelineCreateInfoARM (es :: [Type]) = DataGraphPipelineCreateInfoARM
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
+    next :: Chain es
+  , -- | @flags@ is a bitmask of
+    -- 'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlagBits2KHR'
+    -- specifying how the pipeline will be generated.
+    flags :: PipelineCreateFlags2
+  , -- | @layout@ is the description of binding locations used by both the
+    -- pipeline and descriptor sets used with the pipeline.
+    layout :: PipelineLayout
+  , -- | @pResourceInfos@ is a pointer to an array of
+    -- 'DataGraphPipelineResourceInfoARM' structures.
+    resourceInfos :: Vector (SomeStruct DataGraphPipelineResourceInfoARM)
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (DataGraphPipelineCreateInfoARM (es :: [Type]))
+#endif
+deriving instance Show (Chain es) => Show (DataGraphPipelineCreateInfoARM es)
+
+instance Extensible DataGraphPipelineCreateInfoARM where
+  extensibleTypeName = "DataGraphPipelineCreateInfoARM"
+  setNext DataGraphPipelineCreateInfoARM{..} next' = DataGraphPipelineCreateInfoARM{next = next', ..}
+  getNext DataGraphPipelineCreateInfoARM{..} = next
+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends DataGraphPipelineCreateInfoARM e => b) -> Maybe b
+  extends _ f
+    | Just Refl <- eqT @e @DataGraphPipelineOpticalFlowCreateInfoARM = Just f
+    | Just Refl <- eqT @e @DataGraphPipelineSingleNodeCreateInfoARM = Just f
+    | Just Refl <- eqT @e @DataGraphPipelineBuiltinModelCreateInfoQCOM = Just f
+    | Just Refl <- eqT @e @DataGraphProcessingEngineCreateInfoARM = Just f
+    | Just Refl <- eqT @e @DataGraphPipelineIdentifierCreateInfoARM = Just f
+    | Just Refl <- eqT @e @DataGraphPipelineShaderModuleCreateInfoARM = Just f
+    | Just Refl <- eqT @e @DataGraphPipelineCompilerControlCreateInfoARM = Just f
+    | Just Refl <- eqT @e @DataGraphPipelineNeuralStatisticsCreateInfoARM = Just f
+    | Just Refl <- eqT @e @PipelineCreationFeedbackCreateInfo = Just f
+    | Just Refl <- eqT @e @(ShaderModuleCreateInfo '[]) = Just f
+    | otherwise = Nothing
+
+instance ( Extendss DataGraphPipelineCreateInfoARM es
+         , PokeChain es ) => ToCStruct (DataGraphPipelineCreateInfoARM es) where
+  withCStruct x f = allocaBytes 48 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p DataGraphPipelineCreateInfoARM{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CREATE_INFO_ARM)
+    pNext'' <- fmap castPtr . ContT $ withChain (next)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
+    lift $ poke ((p `plusPtr` 16 :: Ptr PipelineCreateFlags2)) (flags)
+    lift $ poke ((p `plusPtr` 24 :: Ptr PipelineLayout)) (layout)
+    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (resourceInfos)) :: Word32))
+    pPResourceInfos' <- ContT $ allocaBytes @(DataGraphPipelineResourceInfoARM _) ((Data.Vector.length (resourceInfos)) * 32)
+    Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPResourceInfos' `plusPtr` (32 * (i)) :: Ptr (DataGraphPipelineResourceInfoARM _))) (e) . ($ ())) (resourceInfos)
+    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr (DataGraphPipelineResourceInfoARM _)))) (pPResourceInfos')
+    lift $ f
+  cStructSize = 48
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CREATE_INFO_ARM)
+    pNext' <- fmap castPtr . ContT $ withZeroChain @es
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
+    lift $ poke ((p `plusPtr` 24 :: Ptr PipelineLayout)) (zero)
+    lift $ f
+
+instance ( Extendss DataGraphPipelineCreateInfoARM es
+         , PeekChain es ) => FromCStruct (DataGraphPipelineCreateInfoARM es) where
+  peekCStruct p = do
+    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
+    next <- peekChain (castPtr pNext)
+    flags <- peek @PipelineCreateFlags2 ((p `plusPtr` 16 :: Ptr PipelineCreateFlags2))
+    layout <- peek @PipelineLayout ((p `plusPtr` 24 :: Ptr PipelineLayout))
+    resourceInfoCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))
+    pResourceInfos <- peek @(Ptr (DataGraphPipelineResourceInfoARM _)) ((p `plusPtr` 40 :: Ptr (Ptr (DataGraphPipelineResourceInfoARM _))))
+    pResourceInfos' <- generateM (fromIntegral resourceInfoCount) (\i -> peekSomeCStruct (forgetExtensions ((pResourceInfos `advancePtrBytes` (32 * (i)) :: Ptr (DataGraphPipelineResourceInfoARM _)))))
+    pure $ DataGraphPipelineCreateInfoARM
+             next flags layout pResourceInfos'
+
+instance es ~ '[] => Zero (DataGraphPipelineCreateInfoARM es) where
+  zero = DataGraphPipelineCreateInfoARM
+           ()
+           zero
+           zero
+           mempty
+
+
+-- | VkDataGraphPipelineShaderModuleCreateInfoARM - Structure specifying
+-- shader module parameters of a newly created data graph pipeline
+--
+-- = Description
+--
+-- If @module@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the
+-- pipeline’s graph is defined by @module@. If @module@ is
+-- 'Vulkan.Core10.APIConstants.NULL_HANDLE', the pipeline’s graph is
+-- defined by the chained 'Vulkan.Core10.Shader.ShaderModuleCreateInfo'.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkDataGraphPipelineShaderModuleCreateInfoARM-dataGraphSpecializationConstants-09849#
+--     If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-dataGraphSpecializationConstants dataGraphSpecializationConstants>
+--     feature is not enabled then @pSpecializationInfo@ /must/ be @NULL@
+--     and @module@ /must/ not contain any @OpSpec*@ instructions
+--
+-- -   #VUID-VkDataGraphPipelineShaderModuleCreateInfoARM-pName-09872#
+--     @pName@ /must/ be the name of an @OpGraphEntryPointARM@ in @module@
+--
+-- -   #VUID-VkDataGraphPipelineShaderModuleCreateInfoARM-pNext-09873# If
+--     the @pNext@ chain includes a
+--     'Vulkan.Core10.Shader.ShaderModuleCreateInfo' structure, then
+--     @module@ /must/ be 'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-VkDataGraphPipelineShaderModuleCreateInfoARM-pNext-09874# If
+--     the @pNext@ chain does not include a
+--     'Vulkan.Core10.Shader.ShaderModuleCreateInfo' structure, then
+--     @module@ /must/ be a valid 'Vulkan.Core10.Handles.ShaderModule'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkDataGraphPipelineShaderModuleCreateInfoARM-sType-sType#
+--     @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SHADER_MODULE_CREATE_INFO_ARM'
+--
+-- -   #VUID-VkDataGraphPipelineShaderModuleCreateInfoARM-module-parameter#
+--     If @module@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
+--     @module@ /must/ be a valid 'Vulkan.Core10.Handles.ShaderModule'
+--     handle
+--
+-- -   #VUID-VkDataGraphPipelineShaderModuleCreateInfoARM-pName-parameter#
+--     @pName@ /must/ be a null-terminated UTF-8 string
+--
+-- -   #VUID-VkDataGraphPipelineShaderModuleCreateInfoARM-pSpecializationInfo-parameter#
+--     If @pSpecializationInfo@ is not @NULL@, @pSpecializationInfo@ /must/
+--     be a valid pointer to a valid
+--     'Vulkan.Core10.ComputePipeline.SpecializationInfo' structure
+--
+-- -   #VUID-VkDataGraphPipelineShaderModuleCreateInfoARM-pConstants-parameter#
+--     If @constantCount@ is not @0@, and @pConstants@ is not @NULL@,
+--     @pConstants@ /must/ be a valid pointer to an array of
+--     @constantCount@ valid 'DataGraphPipelineConstantARM' structures
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'DataGraphPipelineCreateInfoARM'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_data_graph VK_ARM_data_graph>,
+-- 'DataGraphPipelineConstantARM', 'Vulkan.Core10.Handles.ShaderModule',
+-- 'Vulkan.Core10.ComputePipeline.SpecializationInfo',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data DataGraphPipelineShaderModuleCreateInfoARM = DataGraphPipelineShaderModuleCreateInfoARM
+  { -- | @module@ is optionally a 'Vulkan.Core10.Handles.ShaderModule' object
+    -- containing the description of the graph.
+    module' :: ShaderModule
+  , -- | @pName@ is a pointer to a null-terminated UTF-8 string specifying the
+    -- graph entry point name for this pipeline.
+    name :: ByteString
+  , -- | @pSpecializationInfo@ is a pointer to a
+    -- 'Vulkan.Core10.ComputePipeline.SpecializationInfo' structure as
+    -- described in
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-specialization-constants Specialization Constants>,
+    -- or @NULL@.
+    specializationInfo :: Maybe SpecializationInfo
+  , -- | @constantCount@ is the length of the @pConstants@ array.
+    constantCount :: Word32
+  , -- | @pConstants@ is a pointer to an array of 'DataGraphPipelineConstantARM'
+    -- structures.
+    constants :: Vector (SomeStruct DataGraphPipelineConstantARM)
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (DataGraphPipelineShaderModuleCreateInfoARM)
+#endif
+deriving instance Show DataGraphPipelineShaderModuleCreateInfoARM
+
+instance ToCStruct DataGraphPipelineShaderModuleCreateInfoARM where
+  withCStruct x f = allocaBytes 56 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p DataGraphPipelineShaderModuleCreateInfoARM{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SHADER_MODULE_CREATE_INFO_ARM)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr ShaderModule)) (module')
+    pName'' <- ContT $ useAsCString (name)
+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr CChar))) pName''
+    pSpecializationInfo'' <- case (specializationInfo) of
+      Nothing -> pure nullPtr
+      Just j -> ContT $ withCStruct (j)
+    lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr SpecializationInfo))) pSpecializationInfo''
+    let pConstantsLength = Data.Vector.length $ (constants)
+    constantCount'' <- lift $ if (constantCount) == 0
+      then pure $ fromIntegral pConstantsLength
+      else do
+        unless (fromIntegral pConstantsLength == (constantCount) || pConstantsLength == 0) $
+          throwIO $ IOError Nothing InvalidArgument "" "pConstants must be empty or have 'constantCount' elements" Nothing Nothing
+        pure (constantCount)
+    lift $ poke ((p `plusPtr` 40 :: Ptr Word32)) (constantCount'')
+    pConstants'' <- if Data.Vector.null (constants)
+      then pure nullPtr
+      else do
+        pPConstants <- ContT $ allocaBytes @(DataGraphPipelineConstantARM _) (((Data.Vector.length (constants))) * 32)
+        Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPConstants `plusPtr` (32 * (i)) :: Ptr (DataGraphPipelineConstantARM _))) (e) . ($ ())) ((constants))
+        pure $ pPConstants
+    lift $ poke ((p `plusPtr` 48 :: Ptr (Ptr (DataGraphPipelineConstantARM _)))) pConstants''
+    lift $ f
+  cStructSize = 56
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SHADER_MODULE_CREATE_INFO_ARM)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    pName'' <- ContT $ useAsCString (mempty)
+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr CChar))) pName''
+    lift $ f
+
+instance FromCStruct DataGraphPipelineShaderModuleCreateInfoARM where
+  peekCStruct p = do
+    module' <- peek @ShaderModule ((p `plusPtr` 16 :: Ptr ShaderModule))
+    pName <- packCString =<< peek ((p `plusPtr` 24 :: Ptr (Ptr CChar)))
+    pSpecializationInfo <- peek @(Ptr SpecializationInfo) ((p `plusPtr` 32 :: Ptr (Ptr SpecializationInfo)))
+    pSpecializationInfo' <- maybePeek (\j -> peekCStruct @SpecializationInfo (j)) pSpecializationInfo
+    constantCount <- peek @Word32 ((p `plusPtr` 40 :: Ptr Word32))
+    pConstants <- peek @(Ptr (DataGraphPipelineConstantARM _)) ((p `plusPtr` 48 :: Ptr (Ptr (DataGraphPipelineConstantARM _))))
+    let pConstantsLength = if pConstants == nullPtr then 0 else (fromIntegral constantCount)
+    pConstants' <- generateM pConstantsLength (\i -> peekSomeCStruct (forgetExtensions ((pConstants `advancePtrBytes` (32 * (i)) :: Ptr (DataGraphPipelineConstantARM _)))))
+    pure $ DataGraphPipelineShaderModuleCreateInfoARM
+             module' pName pSpecializationInfo' constantCount pConstants'
+
+instance Zero DataGraphPipelineShaderModuleCreateInfoARM where
+  zero = DataGraphPipelineShaderModuleCreateInfoARM
+           zero
+           mempty
+           Nothing
+           zero
+           mempty
+
+
+-- | VkDataGraphPipelineSessionCreateInfoARM - Structure specifying
+-- parameters of a newly created data graph pipeline session
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkDataGraphPipelineSessionCreateInfoARM-dataGraphPipeline-09781#
+--     @dataGraphPipeline@ /must/ have been obtained via a call to
+--     'createDataGraphPipelinesARM'
+--
+-- -   #VUID-VkDataGraphPipelineSessionCreateInfoARM-protectedMemory-09782#
+--     If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-protectedMemory protectedMemory>
+--     feature is not enabled, @flags@ /must/ not contain
+--     'DATA_GRAPH_PIPELINE_SESSION_CREATE_PROTECTED_BIT_ARM'
+--
+-- -   #VUID-VkDataGraphPipelineSessionCreateInfoARM-pNext-09852# A
+--     'Vulkan.Extensions.VK_ARM_data_graph_neural_accelerator_statistics.DataGraphPipelineSessionNeuralStatisticsCreateInfoARM'
+--     structure /may/ only be included in the @pNext@ chain if and only if
+--     a
+--     'Vulkan.Extensions.VK_ARM_data_graph_neural_accelerator_statistics.DataGraphPipelineNeuralStatisticsCreateInfoARM'
+--     structure whose @allowNeuralStatistics@ member was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' was included in the @pNext@
+--     chain of the 'DataGraphPipelineCreateInfoARM' structure used to
+--     create @dataGraphPipeline@
+--
+-- -   #VUID-VkDataGraphPipelineSessionCreateInfoARM-flags-09853# If
+--     @flags@ contains
+--     'DATA_GRAPH_PIPELINE_SESSION_CREATE_PROTECTED_BIT_ARM' then a
+--     'Vulkan.Extensions.VK_ARM_data_graph_neural_accelerator_statistics.DataGraphPipelineNeuralStatisticsCreateInfoARM'
+--     structure /must/ not be included in the @pNext@ chain
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkDataGraphPipelineSessionCreateInfoARM-sType-sType# @sType@
+--     /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_CREATE_INFO_ARM'
+--
+-- -   #VUID-VkDataGraphPipelineSessionCreateInfoARM-pNext-pNext# @pNext@
+--     /must/ be @NULL@ or a pointer to a valid instance of
+--     'Vulkan.Extensions.VK_ARM_data_graph_neural_accelerator_statistics.DataGraphPipelineSessionNeuralStatisticsCreateInfoARM'
+--
+-- -   #VUID-VkDataGraphPipelineSessionCreateInfoARM-sType-unique# The
+--     @sType@ value of each structure in the @pNext@ chain /must/ be
+--     unique
+--
+-- -   #VUID-VkDataGraphPipelineSessionCreateInfoARM-flags-parameter#
+--     @flags@ /must/ be a valid combination of
+--     'DataGraphPipelineSessionCreateFlagBitsARM' values
+--
+-- -   #VUID-VkDataGraphPipelineSessionCreateInfoARM-dataGraphPipeline-parameter#
+--     @dataGraphPipeline@ /must/ be a valid
+--     'Vulkan.Core10.Handles.Pipeline' handle
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_data_graph VK_ARM_data_graph>,
+-- 'DataGraphPipelineSessionCreateFlagsARM',
+-- 'Vulkan.Core10.Handles.Pipeline',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'createDataGraphPipelineSessionARM'
+data DataGraphPipelineSessionCreateInfoARM (es :: [Type]) = DataGraphPipelineSessionCreateInfoARM
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
+    next :: Chain es
+  , -- | @flags@ is a bitmask of 'DataGraphPipelineSessionCreateFlagBitsARM'
+    -- describing additional parameters of the session.
+    flags :: DataGraphPipelineSessionCreateFlagsARM
+  , -- | @dataGraphPipeline@ is the 'Vulkan.Core10.Handles.Pipeline' handle of
+    -- the data graph pipeline for which a session is being created.
+    dataGraphPipeline :: Pipeline
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (DataGraphPipelineSessionCreateInfoARM (es :: [Type]))
+#endif
+deriving instance Show (Chain es) => Show (DataGraphPipelineSessionCreateInfoARM es)
+
+instance Extensible DataGraphPipelineSessionCreateInfoARM where
+  extensibleTypeName = "DataGraphPipelineSessionCreateInfoARM"
+  setNext DataGraphPipelineSessionCreateInfoARM{..} next' = DataGraphPipelineSessionCreateInfoARM{next = next', ..}
+  getNext DataGraphPipelineSessionCreateInfoARM{..} = next
+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends DataGraphPipelineSessionCreateInfoARM e => b) -> Maybe b
+  extends _ f
+    | Just Refl <- eqT @e @DataGraphPipelineSessionNeuralStatisticsCreateInfoARM = Just f
+    | otherwise = Nothing
+
+instance ( Extendss DataGraphPipelineSessionCreateInfoARM es
+         , PokeChain es ) => ToCStruct (DataGraphPipelineSessionCreateInfoARM es) where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p DataGraphPipelineSessionCreateInfoARM{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_CREATE_INFO_ARM)
+    pNext'' <- fmap castPtr . ContT $ withChain (next)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
+    lift $ poke ((p `plusPtr` 16 :: Ptr DataGraphPipelineSessionCreateFlagsARM)) (flags)
+    lift $ poke ((p `plusPtr` 24 :: Ptr Pipeline)) (dataGraphPipeline)
+    lift $ f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_CREATE_INFO_ARM)
+    pNext' <- fmap castPtr . ContT $ withZeroChain @es
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
+    lift $ poke ((p `plusPtr` 24 :: Ptr Pipeline)) (zero)
+    lift $ f
+
+instance ( Extendss DataGraphPipelineSessionCreateInfoARM es
+         , PeekChain es ) => FromCStruct (DataGraphPipelineSessionCreateInfoARM es) where
+  peekCStruct p = do
+    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
+    next <- peekChain (castPtr pNext)
+    flags <- peek @DataGraphPipelineSessionCreateFlagsARM ((p `plusPtr` 16 :: Ptr DataGraphPipelineSessionCreateFlagsARM))
+    dataGraphPipeline <- peek @Pipeline ((p `plusPtr` 24 :: Ptr Pipeline))
+    pure $ DataGraphPipelineSessionCreateInfoARM
+             next flags dataGraphPipeline
+
+instance es ~ '[] => Zero (DataGraphPipelineSessionCreateInfoARM es) where
+  zero = DataGraphPipelineSessionCreateInfoARM
+           ()
+           zero
+           zero
+
+
+-- | VkDataGraphPipelineSessionBindPointRequirementsInfoARM - Structure
+-- specifying info to query the bind point requirements of a data graph
+-- pipeline session
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_data_graph VK_ARM_data_graph>,
+-- 'Vulkan.Extensions.Handles.DataGraphPipelineSessionARM',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'getDataGraphPipelineSessionBindPointRequirementsARM'
+data DataGraphPipelineSessionBindPointRequirementsInfoARM = DataGraphPipelineSessionBindPointRequirementsInfoARM
+  { -- | @session@ is a 'Vulkan.Extensions.Handles.DataGraphPipelineSessionARM'
+    -- specifying the data graph pipeline session whose bind point requirements
+    -- are being queried.
+    --
+    -- #VUID-VkDataGraphPipelineSessionBindPointRequirementsInfoARM-session-parameter#
+    -- @session@ /must/ be a valid
+    -- 'Vulkan.Extensions.Handles.DataGraphPipelineSessionARM' handle
+    session :: DataGraphPipelineSessionARM }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (DataGraphPipelineSessionBindPointRequirementsInfoARM)
+#endif
+deriving instance Show DataGraphPipelineSessionBindPointRequirementsInfoARM
+
+instance ToCStruct DataGraphPipelineSessionBindPointRequirementsInfoARM where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p DataGraphPipelineSessionBindPointRequirementsInfoARM{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENTS_INFO_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr DataGraphPipelineSessionARM)) (session)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENTS_INFO_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr DataGraphPipelineSessionARM)) (zero)
+    f
+
+instance FromCStruct DataGraphPipelineSessionBindPointRequirementsInfoARM where
+  peekCStruct p = do
+    session <- peek @DataGraphPipelineSessionARM ((p `plusPtr` 16 :: Ptr DataGraphPipelineSessionARM))
+    pure $ DataGraphPipelineSessionBindPointRequirementsInfoARM
+             session
+
+instance Storable DataGraphPipelineSessionBindPointRequirementsInfoARM where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero DataGraphPipelineSessionBindPointRequirementsInfoARM where
+  zero = DataGraphPipelineSessionBindPointRequirementsInfoARM
+           zero
+
+
+-- | VkDataGraphPipelineSessionBindPointRequirementARM - Structure specifying
+-- the requirements of a bind point of a data graph pipeline session
+--
+-- = Description
+--
+-- Implementations /must/ always return 1 for @numObjects@ if @bindPoint@
+-- is one of the following bind points:
+--
+-- -   'DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TRANSIENT_ARM'
+--
+-- -   'DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_NEURAL_ACCELERATOR_STATISTICS_ARM'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkDataGraphPipelineSessionBindPointRequirementARM-sType-sType#
+--     @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENT_ARM'
+--
+-- -   #VUID-VkDataGraphPipelineSessionBindPointRequirementARM-pNext-pNext#
+--     @pNext@ /must/ be @NULL@
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_data_graph VK_ARM_data_graph>,
+-- 'DataGraphPipelineSessionBindPointARM',
+-- 'DataGraphPipelineSessionBindPointTypeARM',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'getDataGraphPipelineSessionBindPointRequirementsARM'
+data DataGraphPipelineSessionBindPointRequirementARM = DataGraphPipelineSessionBindPointRequirementARM
+  { -- | @bindPoint@ is a 'DataGraphPipelineSessionBindPointARM' specifying the
+    -- data graph pipeline session bind point being required.
+    bindPoint :: DataGraphPipelineSessionBindPointARM
+  , -- | @bindPointType@ is a 'DataGraphPipelineSessionBindPointTypeARM'
+    -- specifying the type of object required for @bindPoint@.
+    bindPointType :: DataGraphPipelineSessionBindPointTypeARM
+  , -- | @numObjects@ is the number of objects required for @bindPoint@.
+    numObjects :: Word32
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (DataGraphPipelineSessionBindPointRequirementARM)
+#endif
+deriving instance Show DataGraphPipelineSessionBindPointRequirementARM
+
+instance ToCStruct DataGraphPipelineSessionBindPointRequirementARM where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p DataGraphPipelineSessionBindPointRequirementARM{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENT_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr DataGraphPipelineSessionBindPointARM)) (bindPoint)
+    poke ((p `plusPtr` 20 :: Ptr DataGraphPipelineSessionBindPointTypeARM)) (bindPointType)
+    poke ((p `plusPtr` 24 :: Ptr Word32)) (numObjects)
+    f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENT_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr DataGraphPipelineSessionBindPointARM)) (zero)
+    poke ((p `plusPtr` 20 :: Ptr DataGraphPipelineSessionBindPointTypeARM)) (zero)
+    poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct DataGraphPipelineSessionBindPointRequirementARM where
+  peekCStruct p = do
+    bindPoint <- peek @DataGraphPipelineSessionBindPointARM ((p `plusPtr` 16 :: Ptr DataGraphPipelineSessionBindPointARM))
+    bindPointType <- peek @DataGraphPipelineSessionBindPointTypeARM ((p `plusPtr` 20 :: Ptr DataGraphPipelineSessionBindPointTypeARM))
+    numObjects <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))
+    pure $ DataGraphPipelineSessionBindPointRequirementARM
+             bindPoint bindPointType numObjects
+
+instance Storable DataGraphPipelineSessionBindPointRequirementARM where
+  sizeOf ~_ = 32
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero DataGraphPipelineSessionBindPointRequirementARM where
+  zero = DataGraphPipelineSessionBindPointRequirementARM
+           zero
+           zero
+           zero
+
+
+-- | VkDataGraphPipelineSessionMemoryRequirementsInfoARM - Structure
+-- specifying parameters to query the memory requirements of a data graph
+-- pipeline session
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_data_graph VK_ARM_data_graph>,
+-- 'Vulkan.Extensions.Handles.DataGraphPipelineSessionARM',
+-- 'DataGraphPipelineSessionBindPointARM',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'getDataGraphPipelineSessionMemoryRequirementsARM'
+data DataGraphPipelineSessionMemoryRequirementsInfoARM = DataGraphPipelineSessionMemoryRequirementsInfoARM
+  { -- | @session@ is the data graph pipeline session to query.
+    --
+    -- #VUID-VkDataGraphPipelineSessionMemoryRequirementsInfoARM-session-parameter#
+    -- @session@ /must/ be a valid
+    -- 'Vulkan.Extensions.Handles.DataGraphPipelineSessionARM' handle
+    session :: DataGraphPipelineSessionARM
+  , -- | @bindPoint@ is the bind point of a data graph pipeline session for which
+    -- memory requirements are being queried.
+    --
+    -- #VUID-VkDataGraphPipelineSessionMemoryRequirementsInfoARM-bindPoint-parameter#
+    -- @bindPoint@ /must/ be a valid 'DataGraphPipelineSessionBindPointARM'
+    -- value
+    bindPoint :: DataGraphPipelineSessionBindPointARM
+  , -- | @objectIndex@ is the index of the object whose memory requirements are
+    -- being queried.
+    --
+    -- #VUID-VkDataGraphPipelineSessionMemoryRequirementsInfoARM-objectIndex-09855#
+    -- @objectIndex@ /must/ be less than the number of objects returned by
+    -- 'getDataGraphPipelineSessionBindPointRequirementsARM' via
+    -- 'DataGraphPipelineSessionBindPointRequirementARM'::@numObjects@ with
+    -- 'DataGraphPipelineSessionMemoryRequirementsInfoARM'::@bindPoint@ equal
+    -- to @bindPoint@
+    objectIndex :: Word32
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (DataGraphPipelineSessionMemoryRequirementsInfoARM)
+#endif
+deriving instance Show DataGraphPipelineSessionMemoryRequirementsInfoARM
+
+instance ToCStruct DataGraphPipelineSessionMemoryRequirementsInfoARM where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p DataGraphPipelineSessionMemoryRequirementsInfoARM{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_MEMORY_REQUIREMENTS_INFO_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr DataGraphPipelineSessionARM)) (session)
+    poke ((p `plusPtr` 24 :: Ptr DataGraphPipelineSessionBindPointARM)) (bindPoint)
+    poke ((p `plusPtr` 28 :: Ptr Word32)) (objectIndex)
+    f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_MEMORY_REQUIREMENTS_INFO_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr DataGraphPipelineSessionARM)) (zero)
+    poke ((p `plusPtr` 24 :: Ptr DataGraphPipelineSessionBindPointARM)) (zero)
+    poke ((p `plusPtr` 28 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct DataGraphPipelineSessionMemoryRequirementsInfoARM where
+  peekCStruct p = do
+    session <- peek @DataGraphPipelineSessionARM ((p `plusPtr` 16 :: Ptr DataGraphPipelineSessionARM))
+    bindPoint <- peek @DataGraphPipelineSessionBindPointARM ((p `plusPtr` 24 :: Ptr DataGraphPipelineSessionBindPointARM))
+    objectIndex <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))
+    pure $ DataGraphPipelineSessionMemoryRequirementsInfoARM
+             session bindPoint objectIndex
+
+instance Storable DataGraphPipelineSessionMemoryRequirementsInfoARM where
+  sizeOf ~_ = 32
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero DataGraphPipelineSessionMemoryRequirementsInfoARM where
+  zero = DataGraphPipelineSessionMemoryRequirementsInfoARM
+           zero
+           zero
+           zero
+
+
+-- | VkBindDataGraphPipelineSessionMemoryInfoARM - Structure describing how
+-- to bind a data graph pipeline session to memory
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkBindDataGraphPipelineSessionMemoryInfoARM-session-09785#
+--     @session@ /must/ not have been bound to a memory object for
+--     @bindPoint@
+--
+-- -   #VUID-VkBindDataGraphPipelineSessionMemoryInfoARM-bindPoint-09786#
+--     @bindPoint@ /must/ have been returned as part of a
+--     'DataGraphPipelineSessionBindPointRequirementARM' whose
+--     @bindPointType@ member is
+--     'DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TYPE_MEMORY_ARM' by a prior
+--     call to 'getDataGraphPipelineSessionMemoryRequirementsARM' for
+--     @session@
+--
+-- -   #VUID-VkBindDataGraphPipelineSessionMemoryInfoARM-memoryOffset-09787#
+--     @memoryOffset@ /must/ be less than the size of @memory@
+--
+-- -   #VUID-VkBindDataGraphPipelineSessionMemoryInfoARM-memory-09788#
+--     @memory@ must have been allocated using one of the memory types
+--     allowed in the @memoryTypeBits@ member of the
+--     'Vulkan.Core10.MemoryManagement.MemoryRequirements' structure
+--     returned from a call to
+--     'getDataGraphPipelineSessionMemoryRequirementsARM' with @session@
+--
+-- -   #VUID-VkBindDataGraphPipelineSessionMemoryInfoARM-memoryOffset-09789#
+--     @memoryOffset@ /must/ be an integer multiple of the @alignment@
+--     member of the 'Vulkan.Core10.MemoryManagement.MemoryRequirements'
+--     structure returned from a call to
+--     'getDataGraphPipelineSessionMemoryRequirementsARM' with @session@
+--
+-- -   #VUID-VkBindDataGraphPipelineSessionMemoryInfoARM-size-09790# The
+--     @size@ member of the
+--     'Vulkan.Core10.MemoryManagement.MemoryRequirements' structure
+--     returned from a call to
+--     'getDataGraphPipelineSessionMemoryRequirementsARM' with @session@
+--     /must/ be less than or equal to the size of @memory@ minus
+--     @memoryOffset@
+--
+-- -   #VUID-VkBindDataGraphPipelineSessionMemoryInfoARM-session-09791# If
+--     @session@ was created with the
+--     'DATA_GRAPH_PIPELINE_SESSION_CREATE_PROTECTED_BIT_ARM' bit set, the
+--     session /must/ be bound to a memory object allocated with a memory
+--     type that reports
+--     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_PROTECTED_BIT'
+--
+-- -   #VUID-VkBindDataGraphPipelineSessionMemoryInfoARM-session-09792# If
+--     @session@ was created with the
+--     'DATA_GRAPH_PIPELINE_SESSION_CREATE_PROTECTED_BIT_ARM' bit not set,
+--     the session /must/ not be bound to a memory object allocated with a
+--     memory type that reports
+--     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_PROTECTED_BIT'
+--
+-- -   #VUID-VkBindDataGraphPipelineSessionMemoryInfoARM-objectIndex-09805#
+--     @objectIndex@ /must/ be less than the value of @numObjects@ returned
+--     by 'getDataGraphPipelineSessionBindPointRequirementsARM' for
+--     @bindPoint@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkBindDataGraphPipelineSessionMemoryInfoARM-sType-sType#
+--     @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BIND_DATA_GRAPH_PIPELINE_SESSION_MEMORY_INFO_ARM'
+--
+-- -   #VUID-VkBindDataGraphPipelineSessionMemoryInfoARM-pNext-pNext#
+--     @pNext@ /must/ be @NULL@
+--
+-- -   #VUID-VkBindDataGraphPipelineSessionMemoryInfoARM-session-parameter#
+--     @session@ /must/ be a valid
+--     'Vulkan.Extensions.Handles.DataGraphPipelineSessionARM' handle
+--
+-- -   #VUID-VkBindDataGraphPipelineSessionMemoryInfoARM-bindPoint-parameter#
+--     @bindPoint@ /must/ be a valid 'DataGraphPipelineSessionBindPointARM'
+--     value
+--
+-- -   #VUID-VkBindDataGraphPipelineSessionMemoryInfoARM-memory-parameter#
+--     @memory@ /must/ be a valid 'Vulkan.Core10.Handles.DeviceMemory'
+--     handle
+--
+-- -   #VUID-VkBindDataGraphPipelineSessionMemoryInfoARM-commonparent# Both
+--     of @memory@, and @session@ /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_ARM_data_graph VK_ARM_data_graph>,
+-- 'Vulkan.Extensions.Handles.DataGraphPipelineSessionARM',
+-- 'DataGraphPipelineSessionBindPointARM',
+-- 'Vulkan.Core10.Handles.DeviceMemory',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'bindDataGraphPipelineSessionMemoryARM'
+data BindDataGraphPipelineSessionMemoryInfoARM = BindDataGraphPipelineSessionMemoryInfoARM
+  { -- | @session@ is the data graph pipeline session to be attached to memory.
+    session :: DataGraphPipelineSessionARM
+  , -- | @bindPoint@ is the data graph pipeline session bind point to which
+    -- @memory@ is to be attached.
+    bindPoint :: DataGraphPipelineSessionBindPointARM
+  , -- | @objectIndex@ is the index of the object for @bindPoint@ at which
+    -- @memory@ is to be attached.
+    objectIndex :: Word32
+  , -- | @memory@ is a 'Vulkan.Core10.Handles.DeviceMemory' object describing the
+    -- device memory to attach.
+    memory :: DeviceMemory
+  , -- | @memoryOffset@ is the start offset of the resion of @memory@ which is to
+    -- be bound to the data graph pipeline session.
+    memoryOffset :: DeviceSize
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (BindDataGraphPipelineSessionMemoryInfoARM)
+#endif
+deriving instance Show BindDataGraphPipelineSessionMemoryInfoARM
+
+instance ToCStruct BindDataGraphPipelineSessionMemoryInfoARM where
+  withCStruct x f = allocaBytes 48 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p BindDataGraphPipelineSessionMemoryInfoARM{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BIND_DATA_GRAPH_PIPELINE_SESSION_MEMORY_INFO_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr DataGraphPipelineSessionARM)) (session)
+    poke ((p `plusPtr` 24 :: Ptr DataGraphPipelineSessionBindPointARM)) (bindPoint)
+    poke ((p `plusPtr` 28 :: Ptr Word32)) (objectIndex)
+    poke ((p `plusPtr` 32 :: Ptr DeviceMemory)) (memory)
+    poke ((p `plusPtr` 40 :: Ptr DeviceSize)) (memoryOffset)
+    f
+  cStructSize = 48
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BIND_DATA_GRAPH_PIPELINE_SESSION_MEMORY_INFO_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr DataGraphPipelineSessionARM)) (zero)
+    poke ((p `plusPtr` 24 :: Ptr DataGraphPipelineSessionBindPointARM)) (zero)
+    poke ((p `plusPtr` 28 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 32 :: Ptr DeviceMemory)) (zero)
+    poke ((p `plusPtr` 40 :: Ptr DeviceSize)) (zero)
+    f
+
+instance FromCStruct BindDataGraphPipelineSessionMemoryInfoARM where
+  peekCStruct p = do
+    session <- peek @DataGraphPipelineSessionARM ((p `plusPtr` 16 :: Ptr DataGraphPipelineSessionARM))
+    bindPoint <- peek @DataGraphPipelineSessionBindPointARM ((p `plusPtr` 24 :: Ptr DataGraphPipelineSessionBindPointARM))
+    objectIndex <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))
+    memory <- peek @DeviceMemory ((p `plusPtr` 32 :: Ptr DeviceMemory))
+    memoryOffset <- peek @DeviceSize ((p `plusPtr` 40 :: Ptr DeviceSize))
+    pure $ BindDataGraphPipelineSessionMemoryInfoARM
+             session bindPoint objectIndex memory memoryOffset
+
+instance Storable BindDataGraphPipelineSessionMemoryInfoARM where
+  sizeOf ~_ = 48
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero BindDataGraphPipelineSessionMemoryInfoARM where
+  zero = BindDataGraphPipelineSessionMemoryInfoARM
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkDataGraphPipelineInfoARM - Structure describing a data graph pipeline
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_data_graph VK_ARM_data_graph>,
+-- 'Vulkan.Core10.Handles.Pipeline',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'getDataGraphPipelineAvailablePropertiesARM',
+-- 'getDataGraphPipelinePropertiesARM'
+data DataGraphPipelineInfoARM = DataGraphPipelineInfoARM
+  { -- | @dataGraphPipeline@ is a 'Vulkan.Core10.Handles.Pipeline' handle.
+    --
+    -- #VUID-VkDataGraphPipelineInfoARM-dataGraphPipeline-09803#
+    -- @dataGraphPipeline@ /must/ have been created with
+    -- 'createDataGraphPipelinesARM'
+    --
+    -- #VUID-VkDataGraphPipelineInfoARM-dataGraphPipeline-parameter#
+    -- @dataGraphPipeline@ /must/ be a valid 'Vulkan.Core10.Handles.Pipeline'
+    -- handle
+    dataGraphPipeline :: Pipeline }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (DataGraphPipelineInfoARM)
+#endif
+deriving instance Show DataGraphPipelineInfoARM
+
+instance ToCStruct DataGraphPipelineInfoARM where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p DataGraphPipelineInfoARM{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_INFO_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Pipeline)) (dataGraphPipeline)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_INFO_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Pipeline)) (zero)
+    f
+
+instance FromCStruct DataGraphPipelineInfoARM where
+  peekCStruct p = do
+    dataGraphPipeline <- peek @Pipeline ((p `plusPtr` 16 :: Ptr Pipeline))
+    pure $ DataGraphPipelineInfoARM
+             dataGraphPipeline
+
+instance Storable DataGraphPipelineInfoARM where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero DataGraphPipelineInfoARM where
+  zero = DataGraphPipelineInfoARM
+           zero
+
+
+-- | VkDataGraphPipelinePropertyQueryResultARM - Structure describing a data
+-- graph pipeline property query or result
+--
+-- = Description
+--
+-- If @pData@ is @NULL@, then the size, in bytes, of the property data is
+-- returned in @dataSize@. Otherwise, @dataSize@ must be the size of the
+-- buffer, in bytes, pointed to by @pData@ and on return @dataSize@ is
+-- overwritten with the number of bytes of data actually written to @pData@
+-- including any trailing NUL character. If @dataSize@ is less than the
+-- size, in bytes, of the property data, at most @dataSize@ bytes of data
+-- will be written to @pData@, and 'Vulkan.Core10.Enums.Result.INCOMPLETE'
+-- will be returned by 'getDataGraphPipelinePropertiesARM' instead of
+-- 'Vulkan.Core10.Enums.Result.SUCCESS', to indicate that not all the
+-- available property data was returned. If @isText@ is
+-- 'Vulkan.Core10.FundamentalTypes.TRUE' and @pData@ is not @NULL@ and
+-- @dataSize@ is not zero, the last byte written to @pData@ will be a NUL
+-- character.
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkDataGraphPipelinePropertyQueryResultARM-sType-sType# @sType@
+--     /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_PROPERTY_QUERY_RESULT_ARM'
+--
+-- -   #VUID-VkDataGraphPipelinePropertyQueryResultARM-pNext-pNext# @pNext@
+--     /must/ be @NULL@
+--
+-- -   #VUID-VkDataGraphPipelinePropertyQueryResultARM-property-parameter#
+--     @property@ /must/ be a valid 'DataGraphPipelinePropertyARM' value
+--
+-- -   #VUID-VkDataGraphPipelinePropertyQueryResultARM-pData-parameter# If
+--     @dataSize@ is not @0@, and @pData@ is not @NULL@, @pData@ /must/ be
+--     a valid pointer to an array of @dataSize@ bytes
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_data_graph VK_ARM_data_graph>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32', 'DataGraphPipelinePropertyARM',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'getDataGraphPipelinePropertiesARM'
+data DataGraphPipelinePropertyQueryResultARM = DataGraphPipelinePropertyQueryResultARM
+  { -- | @property@ is a 'DataGraphPipelinePropertyARM' specifying the property
+    -- of the data graph pipeline being queried.
+    property :: DataGraphPipelinePropertyARM
+  , -- | @isText@ specifies whether the returned data is text or opaque data. If
+    -- @isText@ is 'Vulkan.Core10.FundamentalTypes.TRUE' then the data returned
+    -- in @pData@ is text and guaranteed to be a null-terminated UTF-8 string.
+    isText :: Bool
+  , -- | @dataSize@ is an integer related to the size, in bytes, of the data, as
+    -- described below.
+    dataSize :: Word64
+  , -- | @pData@ is either @NULL@ or a pointer to a block of memory into which
+    -- the implementation will return the property data.
+    data' :: Ptr ()
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (DataGraphPipelinePropertyQueryResultARM)
+#endif
+deriving instance Show DataGraphPipelinePropertyQueryResultARM
+
+instance ToCStruct DataGraphPipelinePropertyQueryResultARM where
+  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p DataGraphPipelinePropertyQueryResultARM{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_PROPERTY_QUERY_RESULT_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr DataGraphPipelinePropertyARM)) (property)
+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (isText))
+    poke ((p `plusPtr` 24 :: Ptr CSize)) (CSize (dataSize))
+    poke ((p `plusPtr` 32 :: Ptr (Ptr ()))) (data')
+    f
+  cStructSize = 40
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_PROPERTY_QUERY_RESULT_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr DataGraphPipelinePropertyARM)) (zero)
+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct DataGraphPipelinePropertyQueryResultARM where
+  peekCStruct p = do
+    property <- peek @DataGraphPipelinePropertyARM ((p `plusPtr` 16 :: Ptr DataGraphPipelinePropertyARM))
+    isText <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
+    dataSize <- peek @CSize ((p `plusPtr` 24 :: Ptr CSize))
+    pData <- peek @(Ptr ()) ((p `plusPtr` 32 :: Ptr (Ptr ())))
+    pure $ DataGraphPipelinePropertyQueryResultARM
+             property
+             (bool32ToBool isText)
+             (coerce @CSize @Word64 dataSize)
+             pData
+
+instance Storable DataGraphPipelinePropertyQueryResultARM where
+  sizeOf ~_ = 40
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero DataGraphPipelinePropertyQueryResultARM where
+  zero = DataGraphPipelinePropertyQueryResultARM
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkDataGraphPipelineIdentifierCreateInfoARM - Structure specifying an
+-- identifier for the newly created data graph pipeline
+--
+-- = Description
+--
+-- The @pIdentifier@ /can/ be retrieved from the device by calling
+-- 'getDataGraphPipelinePropertiesARM' and searching the results for a
+-- 'DataGraphPipelinePropertyQueryResultARM' structure with @property@ set
+-- to 'DATA_GRAPH_PIPELINE_PROPERTY_IDENTIFIER_ARM'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'DataGraphPipelineCreateInfoARM'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_data_graph VK_ARM_data_graph>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data DataGraphPipelineIdentifierCreateInfoARM = DataGraphPipelineIdentifierCreateInfoARM
+  { -- | @pIdentifier@ is a pointer to @identifierSize@ bytes of data that
+    -- describe the pipeline being created.
+    --
+    -- #VUID-VkDataGraphPipelineIdentifierCreateInfoARM-pIdentifier-parameter#
+    -- @pIdentifier@ /must/ be a valid pointer to an array of @identifierSize@
+    -- @uint8_t@ values
+    identifier :: Vector Word8 }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (DataGraphPipelineIdentifierCreateInfoARM)
+#endif
+deriving instance Show DataGraphPipelineIdentifierCreateInfoARM
+
+instance ToCStruct DataGraphPipelineIdentifierCreateInfoARM where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p DataGraphPipelineIdentifierCreateInfoARM{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_IDENTIFIER_CREATE_INFO_ARM)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (identifier)) :: Word32))
+    pPIdentifier' <- ContT $ allocaBytes @Word8 (Data.Vector.length (identifier))
+    lift $ Data.Vector.imapM_ (\i e -> poke (pPIdentifier' `plusPtr` (1 * (i)) :: Ptr Word8) (e)) (identifier)
+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Word8))) (pPIdentifier')
+    lift $ f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_IDENTIFIER_CREATE_INFO_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    f
+
+instance FromCStruct DataGraphPipelineIdentifierCreateInfoARM where
+  peekCStruct p = do
+    identifierSize <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    pIdentifier <- peek @(Ptr Word8) ((p `plusPtr` 24 :: Ptr (Ptr Word8)))
+    pIdentifier' <- generateM (fromIntegral identifierSize) (\i -> peek @Word8 ((pIdentifier `advancePtrBytes` (1 * (i)) :: Ptr Word8)))
+    pure $ DataGraphPipelineIdentifierCreateInfoARM
+             pIdentifier'
+
+instance Zero DataGraphPipelineIdentifierCreateInfoARM where
+  zero = DataGraphPipelineIdentifierCreateInfoARM
+           mempty
+
+
+-- | VkDataGraphPipelineDispatchInfoARM - Structure specifying parameters of
+-- a data graph pipeline dispatch
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkDataGraphPipelineDispatchInfoARM-sType-sType# @sType@ /must/
+--     be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_DISPATCH_INFO_ARM'
+--
+-- -   #VUID-VkDataGraphPipelineDispatchInfoARM-pNext-pNext# @pNext@ /must/
+--     be @NULL@ or a pointer to a valid instance of
+--     'Vulkan.Extensions.VK_ARM_data_graph_optical_flow.DataGraphPipelineOpticalFlowDispatchInfoARM'
+--
+-- -   #VUID-VkDataGraphPipelineDispatchInfoARM-sType-unique# The @sType@
+--     value of each structure in the @pNext@ chain /must/ be unique
+--
+-- -   #VUID-VkDataGraphPipelineDispatchInfoARM-flags-zerobitmask# @flags@
+--     /must/ be @0@
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_data_graph VK_ARM_data_graph>,
+-- 'DataGraphPipelineDispatchFlagsARM',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'cmdDispatchDataGraphARM'
+data DataGraphPipelineDispatchInfoARM (es :: [Type]) = DataGraphPipelineDispatchInfoARM
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
+    next :: Chain es
+  , -- | @flags@ is a bitmask of 'DataGraphPipelineDispatchFlagBitsARM'
+    -- describing additional parameters of the dispatch.
+    flags :: DataGraphPipelineDispatchFlagsARM
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (DataGraphPipelineDispatchInfoARM (es :: [Type]))
+#endif
+deriving instance Show (Chain es) => Show (DataGraphPipelineDispatchInfoARM es)
+
+instance Extensible DataGraphPipelineDispatchInfoARM where
+  extensibleTypeName = "DataGraphPipelineDispatchInfoARM"
+  setNext DataGraphPipelineDispatchInfoARM{..} next' = DataGraphPipelineDispatchInfoARM{next = next', ..}
+  getNext DataGraphPipelineDispatchInfoARM{..} = next
+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends DataGraphPipelineDispatchInfoARM e => b) -> Maybe b
+  extends _ f
+    | Just Refl <- eqT @e @DataGraphPipelineOpticalFlowDispatchInfoARM = Just f
+    | otherwise = Nothing
+
+instance ( Extendss DataGraphPipelineDispatchInfoARM es
+         , PokeChain es ) => ToCStruct (DataGraphPipelineDispatchInfoARM es) where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p DataGraphPipelineDispatchInfoARM{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_DISPATCH_INFO_ARM)
+    pNext'' <- fmap castPtr . ContT $ withChain (next)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
+    lift $ poke ((p `plusPtr` 16 :: Ptr DataGraphPipelineDispatchFlagsARM)) (flags)
+    lift $ f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_DISPATCH_INFO_ARM)
+    pNext' <- fmap castPtr . ContT $ withZeroChain @es
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
+    lift $ f
+
+instance ( Extendss DataGraphPipelineDispatchInfoARM es
+         , PeekChain es ) => FromCStruct (DataGraphPipelineDispatchInfoARM es) where
+  peekCStruct p = do
+    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
+    next <- peekChain (castPtr pNext)
+    flags <- peek @DataGraphPipelineDispatchFlagsARM ((p `plusPtr` 16 :: Ptr DataGraphPipelineDispatchFlagsARM))
+    pure $ DataGraphPipelineDispatchInfoARM
+             next flags
+
+instance es ~ '[] => Zero (DataGraphPipelineDispatchInfoARM es) where
+  zero = DataGraphPipelineDispatchInfoARM
+           ()
+           zero
+
+
+-- | VkPhysicalDeviceDataGraphProcessingEngineARM - Structure describing a
+-- data graph processing engine supported by a physical device
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_data_graph VK_ARM_data_graph>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'DataGraphProcessingEngineCreateInfoARM',
+-- 'PhysicalDeviceDataGraphProcessingEngineTypeARM',
+-- 'QueueFamilyDataGraphPropertiesARM'
+data PhysicalDeviceDataGraphProcessingEngineARM = PhysicalDeviceDataGraphProcessingEngineARM
+  { -- | @type@ is a 'PhysicalDeviceDataGraphProcessingEngineTypeARM' that
+    -- specifies the type of the processing engine.
+    type' :: PhysicalDeviceDataGraphProcessingEngineTypeARM
+  , -- | @isForeign@ specifies whether the processing engine is foreign.
+    isForeign :: Bool
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceDataGraphProcessingEngineARM)
+#endif
+deriving instance Show PhysicalDeviceDataGraphProcessingEngineARM
+
+instance ToCStruct PhysicalDeviceDataGraphProcessingEngineARM where
+  withCStruct x f = allocaBytes 8 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceDataGraphProcessingEngineARM{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr PhysicalDeviceDataGraphProcessingEngineTypeARM)) (type')
+    poke ((p `plusPtr` 4 :: Ptr Bool32)) (boolToBool32 (isForeign))
+    f
+  cStructSize = 8
+  cStructAlignment = 4
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr PhysicalDeviceDataGraphProcessingEngineTypeARM)) (zero)
+    poke ((p `plusPtr` 4 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceDataGraphProcessingEngineARM where
+  peekCStruct p = do
+    type' <- peek @PhysicalDeviceDataGraphProcessingEngineTypeARM ((p `plusPtr` 0 :: Ptr PhysicalDeviceDataGraphProcessingEngineTypeARM))
+    isForeign <- peek @Bool32 ((p `plusPtr` 4 :: Ptr Bool32))
+    pure $ PhysicalDeviceDataGraphProcessingEngineARM
+             type' (bool32ToBool isForeign)
+
+instance Storable PhysicalDeviceDataGraphProcessingEngineARM where
+  sizeOf ~_ = 8
+  alignment ~_ = 4
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceDataGraphProcessingEngineARM where
+  zero = PhysicalDeviceDataGraphProcessingEngineARM
+           zero
+           zero
+
+
+-- | VkPhysicalDeviceDataGraphOperationSupportARM - Structure describing an
+-- operation or set of operations supported by a data graph processing
+-- engine
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_data_graph VK_ARM_data_graph>,
+-- 'Vulkan.Extensions.VK_QCOM_data_graph_model.DataGraphPipelineBuiltinModelCreateInfoQCOM',
+-- 'PhysicalDeviceDataGraphOperationTypeARM',
+-- 'QueueFamilyDataGraphPropertiesARM'
+data PhysicalDeviceDataGraphOperationSupportARM = PhysicalDeviceDataGraphOperationSupportARM
+  { -- | @operationType@ is a 'PhysicalDeviceDataGraphOperationTypeARM' enum
+    -- specifying the type of the operation whose support is being described.
+    operationType :: PhysicalDeviceDataGraphOperationTypeARM
+  , -- | @name@ is a pointer to a null-terminated UTF-8 string specifying the
+    -- name of the operation whose support is being described.
+    name :: ByteString
+  , -- | @version@ is an integer specifying the version of the operation whose
+    -- support is being described.
+    version :: Word32
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceDataGraphOperationSupportARM)
+#endif
+deriving instance Show PhysicalDeviceDataGraphOperationSupportARM
+
+instance ToCStruct PhysicalDeviceDataGraphOperationSupportARM where
+  withCStruct x f = allocaBytes 136 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceDataGraphOperationSupportARM{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr PhysicalDeviceDataGraphOperationTypeARM)) (operationType)
+    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 4 :: Ptr (FixedArray MAX_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_SET_NAME_SIZE_ARM CChar))) (name)
+    poke ((p `plusPtr` 132 :: Ptr Word32)) (version)
+    f
+  cStructSize = 136
+  cStructAlignment = 4
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr PhysicalDeviceDataGraphOperationTypeARM)) (zero)
+    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 4 :: Ptr (FixedArray MAX_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_SET_NAME_SIZE_ARM CChar))) (mempty)
+    poke ((p `plusPtr` 132 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct PhysicalDeviceDataGraphOperationSupportARM where
+  peekCStruct p = do
+    operationType <- peek @PhysicalDeviceDataGraphOperationTypeARM ((p `plusPtr` 0 :: Ptr PhysicalDeviceDataGraphOperationTypeARM))
+    name <- packCString (lowerArrayPtr ((p `plusPtr` 4 :: Ptr (FixedArray MAX_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_SET_NAME_SIZE_ARM CChar))))
+    version <- peek @Word32 ((p `plusPtr` 132 :: Ptr Word32))
+    pure $ PhysicalDeviceDataGraphOperationSupportARM
+             operationType name version
+
+instance Storable PhysicalDeviceDataGraphOperationSupportARM where
+  sizeOf ~_ = 136
+  alignment ~_ = 4
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceDataGraphOperationSupportARM where
+  zero = PhysicalDeviceDataGraphOperationSupportARM
+           zero
+           mempty
+           zero
+
+
+-- | VkQueueFamilyDataGraphPropertiesARM - Structure describing a data graph
+-- processing engine and operation it supports
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_data_graph VK_ARM_data_graph>,
+-- 'PhysicalDeviceDataGraphOperationSupportARM',
+-- 'PhysicalDeviceDataGraphProcessingEngineARM',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'Vulkan.Extensions.VK_ARM_data_graph_instruction_set_tosa.getPhysicalDeviceQueueFamilyDataGraphEngineOperationPropertiesARM',
+-- 'Vulkan.Extensions.VK_ARM_data_graph_optical_flow.getPhysicalDeviceQueueFamilyDataGraphOpticalFlowImageFormatsARM',
+-- 'getPhysicalDeviceQueueFamilyDataGraphPropertiesARM'
+data QueueFamilyDataGraphPropertiesARM = QueueFamilyDataGraphPropertiesARM
+  { -- | @engine@ is a 'PhysicalDeviceDataGraphProcessingEngineARM' structure
+    -- describing a data graph processing engine.
+    engine :: PhysicalDeviceDataGraphProcessingEngineARM
+  , -- | @operation@ is a 'PhysicalDeviceDataGraphOperationSupportARM' structure
+    -- describing one or more operations supported by a data graph processing
+    -- engine.
+    operation :: PhysicalDeviceDataGraphOperationSupportARM
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (QueueFamilyDataGraphPropertiesARM)
+#endif
+deriving instance Show QueueFamilyDataGraphPropertiesARM
+
+instance ToCStruct QueueFamilyDataGraphPropertiesARM where
+  withCStruct x f = allocaBytes 160 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p QueueFamilyDataGraphPropertiesARM{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_PROPERTIES_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr PhysicalDeviceDataGraphProcessingEngineARM)) (engine)
+    poke ((p `plusPtr` 24 :: Ptr PhysicalDeviceDataGraphOperationSupportARM)) (operation)
+    f
+  cStructSize = 160
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_PROPERTIES_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr PhysicalDeviceDataGraphProcessingEngineARM)) (zero)
+    poke ((p `plusPtr` 24 :: Ptr PhysicalDeviceDataGraphOperationSupportARM)) (zero)
+    f
+
+instance FromCStruct QueueFamilyDataGraphPropertiesARM where
+  peekCStruct p = do
+    engine <- peekCStruct @PhysicalDeviceDataGraphProcessingEngineARM ((p `plusPtr` 16 :: Ptr PhysicalDeviceDataGraphProcessingEngineARM))
+    operation <- peekCStruct @PhysicalDeviceDataGraphOperationSupportARM ((p `plusPtr` 24 :: Ptr PhysicalDeviceDataGraphOperationSupportARM))
+    pure $ QueueFamilyDataGraphPropertiesARM
+             engine operation
+
+instance Storable QueueFamilyDataGraphPropertiesARM where
+  sizeOf ~_ = 160
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero QueueFamilyDataGraphPropertiesARM where
+  zero = QueueFamilyDataGraphPropertiesARM
+           zero
+           zero
+
+
+-- | VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM - Structure
+-- specifying a data graph processing engine type and queue family to query
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_data_graph VK_ARM_data_graph>,
+-- 'PhysicalDeviceDataGraphProcessingEngineTypeARM',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'getPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM'
+data PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM = PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM
+  { -- | @queueFamilyIndex@ specifies the queue family being queried.
+    queueFamilyIndex :: Word32
+  , -- | @engineType@ is a 'PhysicalDeviceDataGraphProcessingEngineTypeARM'
+    -- specifying the engine type whose properties are being queried.
+    --
+    -- #VUID-VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM-engineType-parameter#
+    -- @engineType@ /must/ be a valid
+    -- 'PhysicalDeviceDataGraphProcessingEngineTypeARM' value
+    engineType :: PhysicalDeviceDataGraphProcessingEngineTypeARM
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM)
+#endif
+deriving instance Show PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM
+
+instance ToCStruct PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_INFO_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (queueFamilyIndex)
+    poke ((p `plusPtr` 20 :: Ptr PhysicalDeviceDataGraphProcessingEngineTypeARM)) (engineType)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_INFO_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 20 :: Ptr PhysicalDeviceDataGraphProcessingEngineTypeARM)) (zero)
+    f
+
+instance FromCStruct PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM where
+  peekCStruct p = do
+    queueFamilyIndex <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    engineType <- peek @PhysicalDeviceDataGraphProcessingEngineTypeARM ((p `plusPtr` 20 :: Ptr PhysicalDeviceDataGraphProcessingEngineTypeARM))
+    pure $ PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM
+             queueFamilyIndex engineType
+
+instance Storable PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM where
+  zero = PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM
+           zero
+           zero
+
+
+-- | VkQueueFamilyDataGraphProcessingEnginePropertiesARM - Structure
+-- describing the properties of a data graph processing engine type for a
+-- given queue family
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_data_graph VK_ARM_data_graph>,
+-- 'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlags',
+-- 'Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits.ExternalSemaphoreHandleTypeFlags',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'getPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM'
+data QueueFamilyDataGraphProcessingEnginePropertiesARM = QueueFamilyDataGraphProcessingEnginePropertiesARM
+  { -- | @foreignSemaphoreHandleTypes@ is a
+    -- 'Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits.ExternalSemaphoreHandleTypeFlags'
+    -- that describes the external semaphore handle types supported by a
+    -- foreign data graph processing engine.
+    foreignSemaphoreHandleTypes :: ExternalSemaphoreHandleTypeFlags
+  , -- | @foreignMemoryHandleTypes@ is a
+    -- 'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlags'
+    -- that describes the external memory handle types supported by a foreign
+    -- data graph processing engine.
+    foreignMemoryHandleTypes :: ExternalMemoryHandleTypeFlags
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (QueueFamilyDataGraphProcessingEnginePropertiesARM)
+#endif
+deriving instance Show QueueFamilyDataGraphProcessingEnginePropertiesARM
+
+instance ToCStruct QueueFamilyDataGraphProcessingEnginePropertiesARM where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p QueueFamilyDataGraphProcessingEnginePropertiesARM{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_PROPERTIES_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr ExternalSemaphoreHandleTypeFlags)) (foreignSemaphoreHandleTypes)
+    poke ((p `plusPtr` 20 :: Ptr ExternalMemoryHandleTypeFlags)) (foreignMemoryHandleTypes)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_PROPERTIES_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr ExternalSemaphoreHandleTypeFlags)) (zero)
+    poke ((p `plusPtr` 20 :: Ptr ExternalMemoryHandleTypeFlags)) (zero)
+    f
+
+instance FromCStruct QueueFamilyDataGraphProcessingEnginePropertiesARM where
+  peekCStruct p = do
+    foreignSemaphoreHandleTypes <- peek @ExternalSemaphoreHandleTypeFlags ((p `plusPtr` 16 :: Ptr ExternalSemaphoreHandleTypeFlags))
+    foreignMemoryHandleTypes <- peek @ExternalMemoryHandleTypeFlags ((p `plusPtr` 20 :: Ptr ExternalMemoryHandleTypeFlags))
+    pure $ QueueFamilyDataGraphProcessingEnginePropertiesARM
+             foreignSemaphoreHandleTypes foreignMemoryHandleTypes
+
+instance Storable QueueFamilyDataGraphProcessingEnginePropertiesARM where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero QueueFamilyDataGraphProcessingEnginePropertiesARM where
+  zero = QueueFamilyDataGraphProcessingEnginePropertiesARM
+           zero
+           zero
+
+
+-- | VkDataGraphProcessingEngineCreateInfoARM - Structure describing a
+-- collection of data graph processing engines for which the object being
+-- created is specialized
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkDataGraphProcessingEngineCreateInfoARM-dataGraph-09953# The
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-dataGraph dataGraph>
+--     feature /must/ be enabled
+--
+-- -   #VUID-VkDataGraphProcessingEngineCreateInfoARM-pProcessingEngines-09918#
+--     @pProcessingEngines@ /must/ not contain identical
+--     'PhysicalDeviceDataGraphProcessingEngineARM' structures
+--
+-- -   #VUID-VkDataGraphProcessingEngineCreateInfoARM-pProcessingEngines-09956#
+--     For each element of @pProcessingEngines@, its @type@ member /must/
+--     be a valid 'PhysicalDeviceDataGraphProcessingEngineTypeARM' value
+--
+-- -   #VUID-VkDataGraphProcessingEngineCreateInfoARM-pProcessingEngines-11843#
+--     If any element of @pProcessingEngines@ has a @type@ of
+--     'PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_NEURAL_QCOM' or
+--     'PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_COMPUTE_QCOM' and
+--     @isForeign@ set to 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     @processingEngineCount@ /must/ equal @1@
+--
+-- -   #VUID-VkDataGraphProcessingEngineCreateInfoARM-pProcessingEngines-11844#
+--     If any element of @pProcessingEngines@ has a @type@ of
+--     'PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_NEURAL_QCOM' or
+--     'PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_COMPUTE_QCOM',
+--     the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-dataGraphModelQCOM dataGraphModel>
+--     feature /must/ be enabled
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkDataGraphProcessingEngineCreateInfoARM-sType-sType# @sType@
+--     /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DATA_GRAPH_PROCESSING_ENGINE_CREATE_INFO_ARM'
+--
+-- -   #VUID-VkDataGraphProcessingEngineCreateInfoARM-pProcessingEngines-parameter#
+--     @pProcessingEngines@ /must/ be a valid pointer to an array of
+--     @processingEngineCount@ 'PhysicalDeviceDataGraphProcessingEngineARM'
+--     structures
+--
+-- -   #VUID-VkDataGraphProcessingEngineCreateInfoARM-processingEngineCount-arraylength#
+--     @processingEngineCount@ /must/ be greater than @0@
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.CommandPool.CommandPoolCreateInfo'
+--
+--     -   'DataGraphPipelineCreateInfoARM'
+--
+--     -   'Vulkan.Core10.DescriptorSet.DescriptorPoolCreateInfo'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_data_graph VK_ARM_data_graph>,
+-- 'PhysicalDeviceDataGraphProcessingEngineARM',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data DataGraphProcessingEngineCreateInfoARM = DataGraphProcessingEngineCreateInfoARM
+  { -- | @processingEngineCount@ is the number of elements in
+    -- @pProcessingEngines@.
+    processingEngineCount :: Word32
+  , -- | @pProcessingEngines@ is a pointer to an array of @processingEngineCount@
+    -- 'PhysicalDeviceDataGraphProcessingEngineARM' structures.
+    processingEngines :: Ptr PhysicalDeviceDataGraphProcessingEngineARM
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (DataGraphProcessingEngineCreateInfoARM)
+#endif
+deriving instance Show DataGraphProcessingEngineCreateInfoARM
+
+instance ToCStruct DataGraphProcessingEngineCreateInfoARM where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p DataGraphProcessingEngineCreateInfoARM{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DATA_GRAPH_PROCESSING_ENGINE_CREATE_INFO_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (processingEngineCount)
+    poke ((p `plusPtr` 24 :: Ptr (Ptr PhysicalDeviceDataGraphProcessingEngineARM))) (processingEngines)
+    f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DATA_GRAPH_PROCESSING_ENGINE_CREATE_INFO_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 24 :: Ptr (Ptr PhysicalDeviceDataGraphProcessingEngineARM))) (zero)
+    f
+
+instance FromCStruct DataGraphProcessingEngineCreateInfoARM where
+  peekCStruct p = do
+    processingEngineCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    pProcessingEngines <- peek @(Ptr PhysicalDeviceDataGraphProcessingEngineARM) ((p `plusPtr` 24 :: Ptr (Ptr PhysicalDeviceDataGraphProcessingEngineARM)))
+    pure $ DataGraphProcessingEngineCreateInfoARM
+             processingEngineCount pProcessingEngines
+
+instance Storable DataGraphProcessingEngineCreateInfoARM where
+  sizeOf ~_ = 32
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero DataGraphProcessingEngineCreateInfoARM where
+  zero = DataGraphProcessingEngineCreateInfoARM
+           zero
+           zero
+
+
+type DataGraphPipelineSessionCreateFlagsARM = DataGraphPipelineSessionCreateFlagBitsARM
+
+-- | VkDataGraphPipelineSessionCreateFlagBitsARM - Bitmask specifying
+-- additional parameters of a data graph pipeline session
+--
+-- = Description
+--
+-- -   'DATA_GRAPH_PIPELINE_SESSION_CREATE_PROTECTED_BIT_ARM' specifies
+--     that the data graph pipeline session is backed by protected memory.
+--
+-- -   'DATA_GRAPH_PIPELINE_SESSION_CREATE_OPTICAL_FLOW_CACHE_BIT_ARM'
+--     specifies that the data graph pipeline session has a cache for
+--     optical flow operations. Enabling the cache is required for the
+--     implementation to use temporal hints.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_data_graph VK_ARM_data_graph>,
+-- 'DataGraphPipelineSessionCreateFlagsARM'
+newtype DataGraphPipelineSessionCreateFlagBitsARM = DataGraphPipelineSessionCreateFlagBitsARM Flags64
+  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
+
+-- No documentation found for Nested "VkDataGraphPipelineSessionCreateFlagBitsARM" "VK_DATA_GRAPH_PIPELINE_SESSION_CREATE_PROTECTED_BIT_ARM"
+pattern DATA_GRAPH_PIPELINE_SESSION_CREATE_PROTECTED_BIT_ARM = DataGraphPipelineSessionCreateFlagBitsARM 0x0000000000000001
+
+-- No documentation found for Nested "VkDataGraphPipelineSessionCreateFlagBitsARM" "VK_DATA_GRAPH_PIPELINE_SESSION_CREATE_OPTICAL_FLOW_CACHE_BIT_ARM"
+pattern DATA_GRAPH_PIPELINE_SESSION_CREATE_OPTICAL_FLOW_CACHE_BIT_ARM = DataGraphPipelineSessionCreateFlagBitsARM 0x0000000000000002
+
+conNameDataGraphPipelineSessionCreateFlagBitsARM :: String
+conNameDataGraphPipelineSessionCreateFlagBitsARM = "DataGraphPipelineSessionCreateFlagBitsARM"
+
+enumPrefixDataGraphPipelineSessionCreateFlagBitsARM :: String
+enumPrefixDataGraphPipelineSessionCreateFlagBitsARM = "DATA_GRAPH_PIPELINE_SESSION_CREATE_"
+
+showTableDataGraphPipelineSessionCreateFlagBitsARM :: [(DataGraphPipelineSessionCreateFlagBitsARM, String)]
+showTableDataGraphPipelineSessionCreateFlagBitsARM =
+  [
+    ( DATA_GRAPH_PIPELINE_SESSION_CREATE_PROTECTED_BIT_ARM
+    , "PROTECTED_BIT_ARM"
+    )
+  ,
+    ( DATA_GRAPH_PIPELINE_SESSION_CREATE_OPTICAL_FLOW_CACHE_BIT_ARM
+    , "OPTICAL_FLOW_CACHE_BIT_ARM"
+    )
+  ]
+
+instance Show DataGraphPipelineSessionCreateFlagBitsARM where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixDataGraphPipelineSessionCreateFlagBitsARM
+      showTableDataGraphPipelineSessionCreateFlagBitsARM
+      conNameDataGraphPipelineSessionCreateFlagBitsARM
+      (\(DataGraphPipelineSessionCreateFlagBitsARM x) -> x)
+      (\x -> showString "0x" . showHex x)
+
+instance Read DataGraphPipelineSessionCreateFlagBitsARM where
+  readPrec =
+    enumReadPrec
+      enumPrefixDataGraphPipelineSessionCreateFlagBitsARM
+      showTableDataGraphPipelineSessionCreateFlagBitsARM
+      conNameDataGraphPipelineSessionCreateFlagBitsARM
+      DataGraphPipelineSessionCreateFlagBitsARM
+
+-- | VkDataGraphPipelineSessionBindPointARM - Enumeration describing the bind
+-- points of a data graph pipeline session
+--
+-- = Description
+--
+-- -   'DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TRANSIENT_ARM' corresponds
+--     to the transient data produced and consumed during one dispatch of a
+--     data graph pipeline in a data graph pipeline session. This transient
+--     data is never reused by subsequent dispatches and can safely be
+--     clobbered once a 'cmdDispatchDataGraphARM' command completes
+--     execution.
+--
+-- -   'DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_OPTICAL_FLOW_CACHE_ARM'
+--     corresponds to the cache for
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#graphs-operations-opticalflow optical flow operations>.
+--
+-- -   'DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_NEURAL_ACCELERATOR_STATISTICS_ARM'
+--     corresponds to neural statistics data produced during one dispatch
+--     of a data graph pipeline in a data graph pipeline session.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_data_graph VK_ARM_data_graph>,
+-- 'BindDataGraphPipelineSessionMemoryInfoARM',
+-- 'DataGraphPipelineSessionBindPointRequirementARM',
+-- 'DataGraphPipelineSessionMemoryRequirementsInfoARM'
+newtype DataGraphPipelineSessionBindPointARM = DataGraphPipelineSessionBindPointARM Int32
+  deriving newtype (Eq, Ord, Storable, Zero)
+
+-- No documentation found for Nested "VkDataGraphPipelineSessionBindPointARM" "VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TRANSIENT_ARM"
+pattern DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TRANSIENT_ARM = DataGraphPipelineSessionBindPointARM 0
+
+-- No documentation found for Nested "VkDataGraphPipelineSessionBindPointARM" "VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_NEURAL_ACCELERATOR_STATISTICS_ARM"
+pattern DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_NEURAL_ACCELERATOR_STATISTICS_ARM = DataGraphPipelineSessionBindPointARM 1000676000
+
+-- No documentation found for Nested "VkDataGraphPipelineSessionBindPointARM" "VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_OPTICAL_FLOW_CACHE_ARM"
+pattern DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_OPTICAL_FLOW_CACHE_ARM = DataGraphPipelineSessionBindPointARM 1000631001
+
+{-# COMPLETE
+  DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TRANSIENT_ARM
+  , DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_NEURAL_ACCELERATOR_STATISTICS_ARM
+  , DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_OPTICAL_FLOW_CACHE_ARM ::
+    DataGraphPipelineSessionBindPointARM
+  #-}
+
+conNameDataGraphPipelineSessionBindPointARM :: String
+conNameDataGraphPipelineSessionBindPointARM = "DataGraphPipelineSessionBindPointARM"
+
+enumPrefixDataGraphPipelineSessionBindPointARM :: String
+enumPrefixDataGraphPipelineSessionBindPointARM = "DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_"
+
+showTableDataGraphPipelineSessionBindPointARM :: [(DataGraphPipelineSessionBindPointARM, String)]
+showTableDataGraphPipelineSessionBindPointARM =
+  [
+    ( DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TRANSIENT_ARM
+    , "TRANSIENT_ARM"
+    )
+  ,
+    ( DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_NEURAL_ACCELERATOR_STATISTICS_ARM
+    , "NEURAL_ACCELERATOR_STATISTICS_ARM"
+    )
+  ,
+    ( DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_OPTICAL_FLOW_CACHE_ARM
+    , "OPTICAL_FLOW_CACHE_ARM"
+    )
+  ]
+
+instance Show DataGraphPipelineSessionBindPointARM where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixDataGraphPipelineSessionBindPointARM
+      showTableDataGraphPipelineSessionBindPointARM
+      conNameDataGraphPipelineSessionBindPointARM
+      (\(DataGraphPipelineSessionBindPointARM x) -> x)
+      (showsPrec 11)
+
+instance Read DataGraphPipelineSessionBindPointARM where
+  readPrec =
+    enumReadPrec
+      enumPrefixDataGraphPipelineSessionBindPointARM
+      showTableDataGraphPipelineSessionBindPointARM
+      conNameDataGraphPipelineSessionBindPointARM
+      DataGraphPipelineSessionBindPointARM
+
+-- | VkDataGraphPipelineSessionBindPointTypeARM - Enumeration describing the
+-- type of bind points of a data graph pipeline session
+--
+-- = Description
+--
+-- -   'DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TYPE_MEMORY_ARM' corresponds
+--     to a memory allocation.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_data_graph VK_ARM_data_graph>,
+-- 'DataGraphPipelineSessionBindPointRequirementARM'
+newtype DataGraphPipelineSessionBindPointTypeARM = DataGraphPipelineSessionBindPointTypeARM Int32
+  deriving newtype (Eq, Ord, Storable, Zero)
+
+-- No documentation found for Nested "VkDataGraphPipelineSessionBindPointTypeARM" "VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TYPE_MEMORY_ARM"
+pattern DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TYPE_MEMORY_ARM = DataGraphPipelineSessionBindPointTypeARM 0
+
+{-# COMPLETE DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TYPE_MEMORY_ARM :: DataGraphPipelineSessionBindPointTypeARM #-}
+
+conNameDataGraphPipelineSessionBindPointTypeARM :: String
+conNameDataGraphPipelineSessionBindPointTypeARM = "DataGraphPipelineSessionBindPointTypeARM"
+
+enumPrefixDataGraphPipelineSessionBindPointTypeARM :: String
+enumPrefixDataGraphPipelineSessionBindPointTypeARM = "DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TYPE_MEMORY_ARM"
+
+showTableDataGraphPipelineSessionBindPointTypeARM :: [(DataGraphPipelineSessionBindPointTypeARM, String)]
+showTableDataGraphPipelineSessionBindPointTypeARM =
+  [
+    ( DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TYPE_MEMORY_ARM
+    , ""
+    )
+  ]
+
+instance Show DataGraphPipelineSessionBindPointTypeARM where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixDataGraphPipelineSessionBindPointTypeARM
+      showTableDataGraphPipelineSessionBindPointTypeARM
+      conNameDataGraphPipelineSessionBindPointTypeARM
+      (\(DataGraphPipelineSessionBindPointTypeARM x) -> x)
+      (showsPrec 11)
+
+instance Read DataGraphPipelineSessionBindPointTypeARM where
+  readPrec =
+    enumReadPrec
+      enumPrefixDataGraphPipelineSessionBindPointTypeARM
+      showTableDataGraphPipelineSessionBindPointTypeARM
+      conNameDataGraphPipelineSessionBindPointTypeARM
+      DataGraphPipelineSessionBindPointTypeARM
+
+-- | VkDataGraphPipelinePropertyARM - Enumeration describing the properties
+-- of a data graph pipeline that can be queried
+--
+-- = Description
+--
+-- -   'DATA_GRAPH_PIPELINE_PROPERTY_CREATION_LOG_ARM' corresponds to a
+--     human-readable log produced during the creation of a data graph
+--     pipeline. It /may/ contain information about errors encountered
+--     during the creation or other information generally useful for
+--     debugging. This property /can/ be queried for any data graph
+--     pipeline.
+--
+-- -   'DATA_GRAPH_PIPELINE_PROPERTY_IDENTIFIER_ARM' corresponds to an
+--     opaque identifier for the data graph pipeline. It /can/ be used to
+--     create a graph pipeline from a pipeline cache without the need to
+--     provide any creation data beyond the identifier, using a
+--     'DataGraphPipelineIdentifierCreateInfoARM' structure.
+--
+-- -   'DATA_GRAPH_PIPELINE_PROPERTY_NEURAL_ACCELERATOR_DEBUG_DATABASE_ARM'
+--     corresponds to opaque debug information that /can/ be queried for
+--     any data graph pipeline.
+--
+-- -   'DATA_GRAPH_PIPELINE_PROPERTY_NEURAL_ACCELERATOR_STATISTICS_INFO_ARM'
+--     corresponds to opaque information about neural statistics that /can/
+--     be queried for any data graph pipeline that was created with a
+--     'Vulkan.Extensions.VK_ARM_data_graph_neural_accelerator_statistics.DataGraphPipelineSessionNeuralStatisticsCreateInfoARM'
+--     structure whose @allowNeuralStatistics@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' included in the @pNext@ chain
+--     of 'DataGraphPipelineCreateInfoARM'.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_data_graph VK_ARM_data_graph>,
+-- 'DataGraphPipelinePropertyQueryResultARM',
+-- 'getDataGraphPipelineAvailablePropertiesARM'
+newtype DataGraphPipelinePropertyARM = DataGraphPipelinePropertyARM Int32
+  deriving newtype (Eq, Ord, Storable, Zero)
+
+-- No documentation found for Nested "VkDataGraphPipelinePropertyARM" "VK_DATA_GRAPH_PIPELINE_PROPERTY_CREATION_LOG_ARM"
+pattern DATA_GRAPH_PIPELINE_PROPERTY_CREATION_LOG_ARM = DataGraphPipelinePropertyARM 0
+
+-- No documentation found for Nested "VkDataGraphPipelinePropertyARM" "VK_DATA_GRAPH_PIPELINE_PROPERTY_IDENTIFIER_ARM"
+pattern DATA_GRAPH_PIPELINE_PROPERTY_IDENTIFIER_ARM = DataGraphPipelinePropertyARM 1
+
+-- No documentation found for Nested "VkDataGraphPipelinePropertyARM" "VK_DATA_GRAPH_PIPELINE_PROPERTY_NEURAL_ACCELERATOR_STATISTICS_INFO_ARM"
+pattern DATA_GRAPH_PIPELINE_PROPERTY_NEURAL_ACCELERATOR_STATISTICS_INFO_ARM = DataGraphPipelinePropertyARM 1000676001
+
+-- No documentation found for Nested "VkDataGraphPipelinePropertyARM" "VK_DATA_GRAPH_PIPELINE_PROPERTY_NEURAL_ACCELERATOR_DEBUG_DATABASE_ARM"
+pattern DATA_GRAPH_PIPELINE_PROPERTY_NEURAL_ACCELERATOR_DEBUG_DATABASE_ARM = DataGraphPipelinePropertyARM 1000676000
+
+{-# COMPLETE
+  DATA_GRAPH_PIPELINE_PROPERTY_CREATION_LOG_ARM
+  , DATA_GRAPH_PIPELINE_PROPERTY_IDENTIFIER_ARM
+  , DATA_GRAPH_PIPELINE_PROPERTY_NEURAL_ACCELERATOR_STATISTICS_INFO_ARM
+  , DATA_GRAPH_PIPELINE_PROPERTY_NEURAL_ACCELERATOR_DEBUG_DATABASE_ARM ::
+    DataGraphPipelinePropertyARM
+  #-}
+
+conNameDataGraphPipelinePropertyARM :: String
+conNameDataGraphPipelinePropertyARM = "DataGraphPipelinePropertyARM"
+
+enumPrefixDataGraphPipelinePropertyARM :: String
+enumPrefixDataGraphPipelinePropertyARM = "DATA_GRAPH_PIPELINE_PROPERTY_"
+
+showTableDataGraphPipelinePropertyARM :: [(DataGraphPipelinePropertyARM, String)]
+showTableDataGraphPipelinePropertyARM =
+  [
+    ( DATA_GRAPH_PIPELINE_PROPERTY_CREATION_LOG_ARM
+    , "CREATION_LOG_ARM"
+    )
+  ,
+    ( DATA_GRAPH_PIPELINE_PROPERTY_IDENTIFIER_ARM
+    , "IDENTIFIER_ARM"
+    )
+  ,
+    ( DATA_GRAPH_PIPELINE_PROPERTY_NEURAL_ACCELERATOR_STATISTICS_INFO_ARM
+    , "NEURAL_ACCELERATOR_STATISTICS_INFO_ARM"
+    )
+  ,
+    ( DATA_GRAPH_PIPELINE_PROPERTY_NEURAL_ACCELERATOR_DEBUG_DATABASE_ARM
+    , "NEURAL_ACCELERATOR_DEBUG_DATABASE_ARM"
+    )
+  ]
+
+instance Show DataGraphPipelinePropertyARM where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixDataGraphPipelinePropertyARM
+      showTableDataGraphPipelinePropertyARM
+      conNameDataGraphPipelinePropertyARM
+      (\(DataGraphPipelinePropertyARM x) -> x)
+      (showsPrec 11)
+
+instance Read DataGraphPipelinePropertyARM where
+  readPrec =
+    enumReadPrec
+      enumPrefixDataGraphPipelinePropertyARM
+      showTableDataGraphPipelinePropertyARM
+      conNameDataGraphPipelinePropertyARM
+      DataGraphPipelinePropertyARM
+
+type DataGraphPipelineDispatchFlagsARM = DataGraphPipelineDispatchFlagBitsARM
+
+-- | VkDataGraphPipelineDispatchFlagBitsARM - Bitmask specifying additional
+-- parameters of a data graph pipeline dispatch
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_data_graph VK_ARM_data_graph>,
+-- 'DataGraphPipelineDispatchFlagsARM'
+newtype DataGraphPipelineDispatchFlagBitsARM = DataGraphPipelineDispatchFlagBitsARM Flags64
+  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
+
+conNameDataGraphPipelineDispatchFlagBitsARM :: String
+conNameDataGraphPipelineDispatchFlagBitsARM = "DataGraphPipelineDispatchFlagBitsARM"
+
+enumPrefixDataGraphPipelineDispatchFlagBitsARM :: String
+enumPrefixDataGraphPipelineDispatchFlagBitsARM = ""
+
+showTableDataGraphPipelineDispatchFlagBitsARM :: [(DataGraphPipelineDispatchFlagBitsARM, String)]
+showTableDataGraphPipelineDispatchFlagBitsARM = []
+
+instance Show DataGraphPipelineDispatchFlagBitsARM where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixDataGraphPipelineDispatchFlagBitsARM
+      showTableDataGraphPipelineDispatchFlagBitsARM
+      conNameDataGraphPipelineDispatchFlagBitsARM
+      (\(DataGraphPipelineDispatchFlagBitsARM x) -> x)
+      (\x -> showString "0x" . showHex x)
+
+instance Read DataGraphPipelineDispatchFlagBitsARM where
+  readPrec =
+    enumReadPrec
+      enumPrefixDataGraphPipelineDispatchFlagBitsARM
+      showTableDataGraphPipelineDispatchFlagBitsARM
+      conNameDataGraphPipelineDispatchFlagBitsARM
+      DataGraphPipelineDispatchFlagBitsARM
+
+-- | VkPhysicalDeviceDataGraphProcessingEngineTypeARM - Enumeration
+-- describing data graph processing engines
+--
+-- = Description
+--
+-- -   'PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_DEFAULT_ARM'
+--     corresponds to the default data graph processing engine.
+--
+-- -   'PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_NEURAL_QCOM'
+--     specifies an engine that specializes in neural processing.
+--
+-- -   'PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_COMPUTE_QCOM'
+--     specifies an engine that uses compute processing to execute data
+--     graphs.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_data_graph VK_ARM_data_graph>,
+-- 'PhysicalDeviceDataGraphProcessingEngineARM',
+-- 'PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM'
+newtype PhysicalDeviceDataGraphProcessingEngineTypeARM = PhysicalDeviceDataGraphProcessingEngineTypeARM Int32
+  deriving newtype (Eq, Ord, Storable, Zero)
+
+-- No documentation found for Nested "VkPhysicalDeviceDataGraphProcessingEngineTypeARM" "VK_PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_DEFAULT_ARM"
+pattern PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_DEFAULT_ARM = PhysicalDeviceDataGraphProcessingEngineTypeARM 0
+
+-- No documentation found for Nested "VkPhysicalDeviceDataGraphProcessingEngineTypeARM" "VK_PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_COMPUTE_QCOM"
+pattern PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_COMPUTE_QCOM = PhysicalDeviceDataGraphProcessingEngineTypeARM 1000629001
+
+-- No documentation found for Nested "VkPhysicalDeviceDataGraphProcessingEngineTypeARM" "VK_PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_NEURAL_QCOM"
+pattern PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_NEURAL_QCOM = PhysicalDeviceDataGraphProcessingEngineTypeARM 1000629000
+
+{-# COMPLETE
+  PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_DEFAULT_ARM
+  , PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_COMPUTE_QCOM
+  , PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_NEURAL_QCOM ::
+    PhysicalDeviceDataGraphProcessingEngineTypeARM
+  #-}
+
+conNamePhysicalDeviceDataGraphProcessingEngineTypeARM :: String
+conNamePhysicalDeviceDataGraphProcessingEngineTypeARM = "PhysicalDeviceDataGraphProcessingEngineTypeARM"
+
+enumPrefixPhysicalDeviceDataGraphProcessingEngineTypeARM :: String
+enumPrefixPhysicalDeviceDataGraphProcessingEngineTypeARM = "PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_"
+
+showTablePhysicalDeviceDataGraphProcessingEngineTypeARM :: [(PhysicalDeviceDataGraphProcessingEngineTypeARM, String)]
+showTablePhysicalDeviceDataGraphProcessingEngineTypeARM =
+  [
+    ( PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_DEFAULT_ARM
+    , "DEFAULT_ARM"
+    )
+  ,
+    ( PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_COMPUTE_QCOM
+    , "COMPUTE_QCOM"
+    )
+  ,
+    ( PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_NEURAL_QCOM
+    , "NEURAL_QCOM"
+    )
+  ]
+
+instance Show PhysicalDeviceDataGraphProcessingEngineTypeARM where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixPhysicalDeviceDataGraphProcessingEngineTypeARM
+      showTablePhysicalDeviceDataGraphProcessingEngineTypeARM
+      conNamePhysicalDeviceDataGraphProcessingEngineTypeARM
+      (\(PhysicalDeviceDataGraphProcessingEngineTypeARM x) -> x)
+      (showsPrec 11)
+
+instance Read PhysicalDeviceDataGraphProcessingEngineTypeARM where
+  readPrec =
+    enumReadPrec
+      enumPrefixPhysicalDeviceDataGraphProcessingEngineTypeARM
+      showTablePhysicalDeviceDataGraphProcessingEngineTypeARM
+      conNamePhysicalDeviceDataGraphProcessingEngineTypeARM
+      PhysicalDeviceDataGraphProcessingEngineTypeARM
+
+-- | VkPhysicalDeviceDataGraphOperationTypeARM - Enumeration describing data
+-- graph operations
+--
+-- = Description
+--
+-- -   'PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_SPIRV_EXTENDED_INSTRUCTION_SET_ARM'
+--     corresponds to operations provided by a SPIR-V extended instruction
+--     set.
+--
+-- -   'PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_NEURAL_MODEL_QCOM'
+--     specifies an operation that executes neural models provided by the
+--     application.
+--
+-- -   'PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_BUILTIN_MODEL_QCOM'
+--     specifies an operation that executes specialized built-in models
+--     provided by the implementation.
+--
+-- -   'PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_OPTICAL_FLOW_ARM'
+--     corresponds to fixed-function optical flow as defined by
+--     @VK_ARM_data_graph_optical_flow@.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_data_graph VK_ARM_data_graph>,
+-- 'PhysicalDeviceDataGraphOperationSupportARM'
+newtype PhysicalDeviceDataGraphOperationTypeARM = PhysicalDeviceDataGraphOperationTypeARM Int32
+  deriving newtype (Eq, Ord, Storable, Zero)
+
+-- No documentation found for Nested "VkPhysicalDeviceDataGraphOperationTypeARM" "VK_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_SPIRV_EXTENDED_INSTRUCTION_SET_ARM"
+pattern PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_SPIRV_EXTENDED_INSTRUCTION_SET_ARM = PhysicalDeviceDataGraphOperationTypeARM 0
+
+-- No documentation found for Nested "VkPhysicalDeviceDataGraphOperationTypeARM" "VK_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_OPTICAL_FLOW_ARM"
+pattern PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_OPTICAL_FLOW_ARM = PhysicalDeviceDataGraphOperationTypeARM 1000631000
+
+-- No documentation found for Nested "VkPhysicalDeviceDataGraphOperationTypeARM" "VK_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_BUILTIN_MODEL_QCOM"
+pattern PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_BUILTIN_MODEL_QCOM = PhysicalDeviceDataGraphOperationTypeARM 1000629001
+
+-- No documentation found for Nested "VkPhysicalDeviceDataGraphOperationTypeARM" "VK_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_NEURAL_MODEL_QCOM"
+pattern PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_NEURAL_MODEL_QCOM = PhysicalDeviceDataGraphOperationTypeARM 1000629000
+
+{-# COMPLETE
+  PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_SPIRV_EXTENDED_INSTRUCTION_SET_ARM
+  , PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_OPTICAL_FLOW_ARM
+  , PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_BUILTIN_MODEL_QCOM
+  , PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_NEURAL_MODEL_QCOM ::
+    PhysicalDeviceDataGraphOperationTypeARM
+  #-}
+
+conNamePhysicalDeviceDataGraphOperationTypeARM :: String
+conNamePhysicalDeviceDataGraphOperationTypeARM = "PhysicalDeviceDataGraphOperationTypeARM"
+
+enumPrefixPhysicalDeviceDataGraphOperationTypeARM :: String
+enumPrefixPhysicalDeviceDataGraphOperationTypeARM = "PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_"
+
+showTablePhysicalDeviceDataGraphOperationTypeARM :: [(PhysicalDeviceDataGraphOperationTypeARM, String)]
+showTablePhysicalDeviceDataGraphOperationTypeARM =
+  [
+    ( PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_SPIRV_EXTENDED_INSTRUCTION_SET_ARM
+    , "SPIRV_EXTENDED_INSTRUCTION_SET_ARM"
+    )
+  ,
+    ( PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_OPTICAL_FLOW_ARM
+    , "OPTICAL_FLOW_ARM"
+    )
+  ,
+    ( PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_BUILTIN_MODEL_QCOM
+    , "BUILTIN_MODEL_QCOM"
+    )
+  ,
+    ( PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_NEURAL_MODEL_QCOM
+    , "NEURAL_MODEL_QCOM"
+    )
+  ]
+
+instance Show PhysicalDeviceDataGraphOperationTypeARM where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixPhysicalDeviceDataGraphOperationTypeARM
+      showTablePhysicalDeviceDataGraphOperationTypeARM
+      conNamePhysicalDeviceDataGraphOperationTypeARM
+      (\(PhysicalDeviceDataGraphOperationTypeARM x) -> x)
+      (showsPrec 11)
+
+instance Read PhysicalDeviceDataGraphOperationTypeARM where
+  readPrec =
+    enumReadPrec
+      enumPrefixPhysicalDeviceDataGraphOperationTypeARM
+      showTablePhysicalDeviceDataGraphOperationTypeARM
+      conNamePhysicalDeviceDataGraphOperationTypeARM
+      PhysicalDeviceDataGraphOperationTypeARM
+
+type ARM_DATA_GRAPH_SPEC_VERSION = 1
+
+-- No documentation found for TopLevel "VK_ARM_DATA_GRAPH_SPEC_VERSION"
+pattern ARM_DATA_GRAPH_SPEC_VERSION :: forall a . Integral a => a
+pattern ARM_DATA_GRAPH_SPEC_VERSION = 1
+
+
+type ARM_DATA_GRAPH_EXTENSION_NAME = "VK_ARM_data_graph"
+
+-- No documentation found for TopLevel "VK_ARM_DATA_GRAPH_EXTENSION_NAME"
+pattern ARM_DATA_GRAPH_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern ARM_DATA_GRAPH_EXTENSION_NAME = "VK_ARM_data_graph"
+
diff --git a/src/Vulkan/Extensions/VK_ARM_data_graph.hs-boot b/src/Vulkan/Extensions/VK_ARM_data_graph.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_ARM_data_graph.hs-boot
@@ -0,0 +1,578 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_ARM_data_graph - device extension
+--
+-- = VK_ARM_data_graph
+--
+-- [__Name String__]
+--     @VK_ARM_data_graph@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     508
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Not ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3 Vulkan Version 1.3>
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance5 VK_KHR_maintenance5>
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_deferred_host_operations VK_KHR_deferred_host_operations>
+--
+-- [__API Interactions__]
+--
+--     -   Interacts with VK_ARM_tensors
+--
+-- [__SPIR-V Dependencies__]
+--
+--     -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/ARM/SPV_ARM_graph.html SPV_ARM_graph>
+--
+-- [__Contact__]
+--
+--     -   Kevin Petit
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_ARM_data_graph] @kpet%0A*Here describe the issue or question you have about the VK_ARM_data_graph extension* >
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2025-06-18
+--
+-- [__Interactions and External Dependencies__]
+--
+--     -   This extension requires
+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/EXT/SPV_ARM_graph.html SPV_ARM_graph>
+--
+--     -   This extension interacts with @VK_EXT_mutable_descriptor_type@
+--
+--     -   This extension interacts with @VK_EXT_pipeline_protected_access@
+--
+--     -   This extension interacts with @VK_ARM_tensors@
+--
+--     -   This extension interacts with @VK_EXT_descriptor_buffer@
+--
+--     -   This extension interacts with @VK_KHR_maintenance6@
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Contributors__]
+--
+--     -   Kévin Petit, Arm Ltd.
+--
+--     -   Emma Ben Yossef, Arm Ltd.
+--
+--     -   Stefano Bucciarelli, Arm Ltd.
+--
+--     -   Marco Cattani, Arm Ltd.
+--
+--     -   Aaron DeBattista, Arm Ltd.
+--
+--     -   Jan-Harald Fredriksen, Arm Ltd.
+--
+--     -   Einar Hov, Arm Ltd.
+--
+--     -   Robert Hughes, Arm Ltd.
+--
+--     -   Oualid Khelifi, Arm Ltd.
+--
+--     -   Derek Lamberti, Arm Ltd.
+--
+--     -   Chetan Mistry, Arm Ltd.
+--
+--     -   Georgios Teneketzis, Arm Ltd.
+--
+--     -   Matthew Netsch, Qualcomm Technologies, Inc
+--
+-- == Description
+--
+-- This extension adds support for a new type of pipeline, data graph
+-- pipelines, that provide an encapsulation construct for computational
+-- graphs operating on full resources (e.g. ML\/AI graphs, image processing
+-- pipelines, etc). This extension only supports tensor resources and does
+-- not define any operations that can be used within those graphs. These
+-- operations will be defined by separate extensions.
+--
+-- == New Object Types
+--
+-- -   'Vulkan.Extensions.Handles.DataGraphPipelineSessionARM'
+--
+-- == New Commands
+--
+-- -   'bindDataGraphPipelineSessionMemoryARM'
+--
+-- -   'cmdDispatchDataGraphARM'
+--
+-- -   'createDataGraphPipelineSessionARM'
+--
+-- -   'createDataGraphPipelinesARM'
+--
+-- -   'destroyDataGraphPipelineSessionARM'
+--
+-- -   'getDataGraphPipelineAvailablePropertiesARM'
+--
+-- -   'getDataGraphPipelinePropertiesARM'
+--
+-- -   'getDataGraphPipelineSessionBindPointRequirementsARM'
+--
+-- -   'getDataGraphPipelineSessionMemoryRequirementsARM'
+--
+-- -   'getPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM'
+--
+-- -   'getPhysicalDeviceQueueFamilyDataGraphPropertiesARM'
+--
+-- == New Structures
+--
+-- -   'BindDataGraphPipelineSessionMemoryInfoARM'
+--
+-- -   'DataGraphPipelineConstantARM'
+--
+-- -   'DataGraphPipelineCreateInfoARM'
+--
+-- -   'DataGraphPipelineDispatchInfoARM'
+--
+-- -   'DataGraphPipelineInfoARM'
+--
+-- -   'DataGraphPipelinePropertyQueryResultARM'
+--
+-- -   'DataGraphPipelineResourceInfoARM'
+--
+-- -   'DataGraphPipelineSessionBindPointRequirementARM'
+--
+-- -   'DataGraphPipelineSessionBindPointRequirementsInfoARM'
+--
+-- -   'DataGraphPipelineSessionCreateInfoARM'
+--
+-- -   'DataGraphPipelineSessionMemoryRequirementsInfoARM'
+--
+-- -   'PhysicalDeviceDataGraphOperationSupportARM'
+--
+-- -   'PhysicalDeviceDataGraphProcessingEngineARM'
+--
+-- -   'PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM'
+--
+-- -   'QueueFamilyDataGraphProcessingEnginePropertiesARM'
+--
+-- -   'QueueFamilyDataGraphPropertiesARM'
+--
+-- -   Extending 'DataGraphPipelineCreateInfoARM':
+--
+--     -   'DataGraphPipelineCompilerControlCreateInfoARM'
+--
+--     -   'DataGraphPipelineIdentifierCreateInfoARM'
+--
+--     -   'DataGraphPipelineShaderModuleCreateInfoARM'
+--
+-- -   Extending 'DataGraphPipelineCreateInfoARM',
+--     'Vulkan.Core10.DescriptorSet.DescriptorPoolCreateInfo',
+--     'Vulkan.Core10.CommandPool.CommandPoolCreateInfo':
+--
+--     -   'DataGraphProcessingEngineCreateInfoARM'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceDataGraphFeaturesARM'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_tensors VK_ARM_tensors>
+-- is supported:
+--
+-- -   Extending 'DataGraphPipelineConstantARM':
+--
+--     -   'DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM'
+--
+-- == New Enums
+--
+-- -   'DataGraphPipelineDispatchFlagBitsARM'
+--
+-- -   'DataGraphPipelinePropertyARM'
+--
+-- -   'DataGraphPipelineSessionBindPointARM'
+--
+-- -   'DataGraphPipelineSessionBindPointTypeARM'
+--
+-- -   'DataGraphPipelineSessionCreateFlagBitsARM'
+--
+-- -   'PhysicalDeviceDataGraphOperationTypeARM'
+--
+-- -   'PhysicalDeviceDataGraphProcessingEngineTypeARM'
+--
+-- == New Bitmasks
+--
+-- -   'DataGraphPipelineDispatchFlagsARM'
+--
+-- -   'DataGraphPipelineSessionCreateFlagsARM'
+--
+-- == New Enum Constants
+--
+-- -   'ARM_DATA_GRAPH_EXTENSION_NAME'
+--
+-- -   'ARM_DATA_GRAPH_SPEC_VERSION'
+--
+-- -   'Vulkan.Core10.APIConstants.MAX_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_SET_NAME_SIZE_ARM'
+--
+-- -   Extending 'Vulkan.Core13.Enums.AccessFlags2.AccessFlagBits2':
+--
+--     -   'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_DATA_GRAPH_READ_BIT_ARM'
+--
+--     -   'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_DATA_GRAPH_WRITE_BIT_ARM'
+--
+-- -   Extending
+--     'Vulkan.Core14.Enums.BufferUsageFlags2.BufferUsageFlagBits2':
+--
+--     -   'Vulkan.Core14.Enums.BufferUsageFlags2.BUFFER_USAGE_2_DATA_GRAPH_FOREIGN_DESCRIPTOR_BIT_ARM'
+--
+-- -   Extending
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FormatFeatureFlagBits2':
+--
+--     -   'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_TENSOR_DATA_GRAPH_BIT_ARM'
+--
+-- -   Extending 'Vulkan.Core10.Enums.ObjectType.ObjectType':
+--
+--     -   'Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_DATA_GRAPH_PIPELINE_SESSION_ARM'
+--
+-- -   Extending 'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint':
+--
+--     -   'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_DATA_GRAPH_ARM'
+--
+-- -   Extending
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlagBits2':
+--
+--     -   'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_DATA_GRAPH_BIT_ARM'
+--
+-- -   Extending 'Vulkan.Core10.Enums.QueueFlagBits.QueueFlagBits':
+--
+--     -   'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_DATA_GRAPH_BIT_ARM'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BIND_DATA_GRAPH_PIPELINE_SESSION_MEMORY_INFO_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_COMPILER_CONTROL_CREATE_INFO_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CONSTANT_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CREATE_INFO_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_DISPATCH_INFO_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_IDENTIFIER_CREATE_INFO_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_INFO_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_PROPERTY_QUERY_RESULT_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_RESOURCE_INFO_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENTS_INFO_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENT_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_CREATE_INFO_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_MEMORY_REQUIREMENTS_INFO_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SHADER_MODULE_CREATE_INFO_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DATA_GRAPH_PROCESSING_ENGINE_CREATE_INFO_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_FEATURES_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_INFO_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_PROPERTIES_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_PROPERTIES_ARM'
+--
+-- -   Extending 'Vulkan.Extensions.VK_ARM_tensors.TensorUsageFlagBitsARM':
+--
+--     -   'Vulkan.Extensions.VK_ARM_tensors.TENSOR_USAGE_DATA_GRAPH_BIT_ARM'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_tensors VK_ARM_tensors>
+-- is supported:
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CONSTANT_TENSOR_SEMI_STRUCTURED_SPARSITY_INFO_ARM'
+--
+-- == New SPIR-V Capabilities
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-GraphARM GraphARM>
+--
+-- == Issues
+--
+-- 1) Should graph pipeline resource info structures be integrated into
+-- pipeline layouts? Would a new graph pipeline layout be a better fit?
+--
+-- __RESOLVED__: Graph pipeline resource info are passed separately at
+-- pipeline creation time.
+--
+-- 2) Do we need a new shader stage for graph pipelines for use in creating
+-- descriptor set layouts?
+--
+-- __RESOLVED__: Currently using
+-- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_ALL'.
+--
+-- 3) Should this extension provide applications with a way of knowing
+-- which combinations of sparsity information implementations can take
+-- advantage of when processing graph constants?
+--
+-- __RESOLVED__: No. Describing the exact combinations is in some cases
+-- complex and it is always valid for implementations to ignore the
+-- sparsity information and treat the data as dense. Specific
+-- implementations can provide guidance to application writers if they so
+-- desire and applications are encouraged to always provide sparsity
+-- information that they have.
+--
+-- == Version History
+--
+-- -   Revision 1, 2025-06-18 (Kévin Petit)
+--
+--     -   Initial revision
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_ARM_data_graph Vulkan Specification>.
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_ARM_data_graph  ( BindDataGraphPipelineSessionMemoryInfoARM
+                                            , DataGraphPipelineCompilerControlCreateInfoARM
+                                            , DataGraphPipelineConstantARM
+                                            , DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM
+                                            , DataGraphPipelineCreateInfoARM
+                                            , DataGraphPipelineDispatchInfoARM
+                                            , DataGraphPipelineIdentifierCreateInfoARM
+                                            , DataGraphPipelineInfoARM
+                                            , DataGraphPipelinePropertyQueryResultARM
+                                            , DataGraphPipelineResourceInfoARM
+                                            , DataGraphPipelineSessionBindPointRequirementARM
+                                            , DataGraphPipelineSessionBindPointRequirementsInfoARM
+                                            , DataGraphPipelineSessionCreateInfoARM
+                                            , DataGraphPipelineSessionMemoryRequirementsInfoARM
+                                            , DataGraphPipelineShaderModuleCreateInfoARM
+                                            , DataGraphProcessingEngineCreateInfoARM
+                                            , PhysicalDeviceDataGraphFeaturesARM
+                                            , PhysicalDeviceDataGraphOperationSupportARM
+                                            , PhysicalDeviceDataGraphProcessingEngineARM
+                                            , PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM
+                                            , QueueFamilyDataGraphProcessingEnginePropertiesARM
+                                            , QueueFamilyDataGraphPropertiesARM
+                                            , DataGraphPipelinePropertyARM
+                                            ) 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 BindDataGraphPipelineSessionMemoryInfoARM
+
+instance ToCStruct BindDataGraphPipelineSessionMemoryInfoARM
+instance Show BindDataGraphPipelineSessionMemoryInfoARM
+
+instance FromCStruct BindDataGraphPipelineSessionMemoryInfoARM
+
+
+data DataGraphPipelineCompilerControlCreateInfoARM
+
+instance ToCStruct DataGraphPipelineCompilerControlCreateInfoARM
+instance Show DataGraphPipelineCompilerControlCreateInfoARM
+
+instance FromCStruct DataGraphPipelineCompilerControlCreateInfoARM
+
+
+type role DataGraphPipelineConstantARM nominal
+data DataGraphPipelineConstantARM (es :: [Type])
+
+instance ( Extendss DataGraphPipelineConstantARM es
+         , PokeChain es ) => ToCStruct (DataGraphPipelineConstantARM es)
+instance Show (Chain es) => Show (DataGraphPipelineConstantARM es)
+
+instance ( Extendss DataGraphPipelineConstantARM es
+         , PeekChain es ) => FromCStruct (DataGraphPipelineConstantARM es)
+
+
+data DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM
+
+instance ToCStruct DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM
+instance Show DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM
+
+instance FromCStruct DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM
+
+
+type role DataGraphPipelineCreateInfoARM nominal
+data DataGraphPipelineCreateInfoARM (es :: [Type])
+
+instance ( Extendss DataGraphPipelineCreateInfoARM es
+         , PokeChain es ) => ToCStruct (DataGraphPipelineCreateInfoARM es)
+instance Show (Chain es) => Show (DataGraphPipelineCreateInfoARM es)
+
+instance ( Extendss DataGraphPipelineCreateInfoARM es
+         , PeekChain es ) => FromCStruct (DataGraphPipelineCreateInfoARM es)
+
+
+type role DataGraphPipelineDispatchInfoARM nominal
+data DataGraphPipelineDispatchInfoARM (es :: [Type])
+
+instance ( Extendss DataGraphPipelineDispatchInfoARM es
+         , PokeChain es ) => ToCStruct (DataGraphPipelineDispatchInfoARM es)
+instance Show (Chain es) => Show (DataGraphPipelineDispatchInfoARM es)
+
+instance ( Extendss DataGraphPipelineDispatchInfoARM es
+         , PeekChain es ) => FromCStruct (DataGraphPipelineDispatchInfoARM es)
+
+
+data DataGraphPipelineIdentifierCreateInfoARM
+
+instance ToCStruct DataGraphPipelineIdentifierCreateInfoARM
+instance Show DataGraphPipelineIdentifierCreateInfoARM
+
+instance FromCStruct DataGraphPipelineIdentifierCreateInfoARM
+
+
+data DataGraphPipelineInfoARM
+
+instance ToCStruct DataGraphPipelineInfoARM
+instance Show DataGraphPipelineInfoARM
+
+instance FromCStruct DataGraphPipelineInfoARM
+
+
+data DataGraphPipelinePropertyQueryResultARM
+
+instance ToCStruct DataGraphPipelinePropertyQueryResultARM
+instance Show DataGraphPipelinePropertyQueryResultARM
+
+instance FromCStruct DataGraphPipelinePropertyQueryResultARM
+
+
+type role DataGraphPipelineResourceInfoARM nominal
+data DataGraphPipelineResourceInfoARM (es :: [Type])
+
+instance ( Extendss DataGraphPipelineResourceInfoARM es
+         , PokeChain es ) => ToCStruct (DataGraphPipelineResourceInfoARM es)
+instance Show (Chain es) => Show (DataGraphPipelineResourceInfoARM es)
+
+instance ( Extendss DataGraphPipelineResourceInfoARM es
+         , PeekChain es ) => FromCStruct (DataGraphPipelineResourceInfoARM es)
+
+
+data DataGraphPipelineSessionBindPointRequirementARM
+
+instance ToCStruct DataGraphPipelineSessionBindPointRequirementARM
+instance Show DataGraphPipelineSessionBindPointRequirementARM
+
+instance FromCStruct DataGraphPipelineSessionBindPointRequirementARM
+
+
+data DataGraphPipelineSessionBindPointRequirementsInfoARM
+
+instance ToCStruct DataGraphPipelineSessionBindPointRequirementsInfoARM
+instance Show DataGraphPipelineSessionBindPointRequirementsInfoARM
+
+instance FromCStruct DataGraphPipelineSessionBindPointRequirementsInfoARM
+
+
+type role DataGraphPipelineSessionCreateInfoARM nominal
+data DataGraphPipelineSessionCreateInfoARM (es :: [Type])
+
+instance ( Extendss DataGraphPipelineSessionCreateInfoARM es
+         , PokeChain es ) => ToCStruct (DataGraphPipelineSessionCreateInfoARM es)
+instance Show (Chain es) => Show (DataGraphPipelineSessionCreateInfoARM es)
+
+instance ( Extendss DataGraphPipelineSessionCreateInfoARM es
+         , PeekChain es ) => FromCStruct (DataGraphPipelineSessionCreateInfoARM es)
+
+
+data DataGraphPipelineSessionMemoryRequirementsInfoARM
+
+instance ToCStruct DataGraphPipelineSessionMemoryRequirementsInfoARM
+instance Show DataGraphPipelineSessionMemoryRequirementsInfoARM
+
+instance FromCStruct DataGraphPipelineSessionMemoryRequirementsInfoARM
+
+
+data DataGraphPipelineShaderModuleCreateInfoARM
+
+instance ToCStruct DataGraphPipelineShaderModuleCreateInfoARM
+instance Show DataGraphPipelineShaderModuleCreateInfoARM
+
+instance FromCStruct DataGraphPipelineShaderModuleCreateInfoARM
+
+
+data DataGraphProcessingEngineCreateInfoARM
+
+instance ToCStruct DataGraphProcessingEngineCreateInfoARM
+instance Show DataGraphProcessingEngineCreateInfoARM
+
+instance FromCStruct DataGraphProcessingEngineCreateInfoARM
+
+
+data PhysicalDeviceDataGraphFeaturesARM
+
+instance ToCStruct PhysicalDeviceDataGraphFeaturesARM
+instance Show PhysicalDeviceDataGraphFeaturesARM
+
+instance FromCStruct PhysicalDeviceDataGraphFeaturesARM
+
+
+data PhysicalDeviceDataGraphOperationSupportARM
+
+instance ToCStruct PhysicalDeviceDataGraphOperationSupportARM
+instance Show PhysicalDeviceDataGraphOperationSupportARM
+
+instance FromCStruct PhysicalDeviceDataGraphOperationSupportARM
+
+
+data PhysicalDeviceDataGraphProcessingEngineARM
+
+instance ToCStruct PhysicalDeviceDataGraphProcessingEngineARM
+instance Show PhysicalDeviceDataGraphProcessingEngineARM
+
+instance FromCStruct PhysicalDeviceDataGraphProcessingEngineARM
+
+
+data PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM
+
+instance ToCStruct PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM
+instance Show PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM
+
+instance FromCStruct PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM
+
+
+data QueueFamilyDataGraphProcessingEnginePropertiesARM
+
+instance ToCStruct QueueFamilyDataGraphProcessingEnginePropertiesARM
+instance Show QueueFamilyDataGraphProcessingEnginePropertiesARM
+
+instance FromCStruct QueueFamilyDataGraphProcessingEnginePropertiesARM
+
+
+data QueueFamilyDataGraphPropertiesARM
+
+instance ToCStruct QueueFamilyDataGraphPropertiesARM
+instance Show QueueFamilyDataGraphPropertiesARM
+
+instance FromCStruct QueueFamilyDataGraphPropertiesARM
+
+
+data DataGraphPipelinePropertyARM
+
diff --git a/src/Vulkan/Extensions/VK_ARM_data_graph_instruction_set_tosa.hs b/src/Vulkan/Extensions/VK_ARM_data_graph_instruction_set_tosa.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_ARM_data_graph_instruction_set_tosa.hs
@@ -0,0 +1,530 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_ARM_data_graph_instruction_set_tosa - device extension
+--
+-- = VK_ARM_data_graph_instruction_set_tosa
+--
+-- [__Name String__]
+--     @VK_ARM_data_graph_instruction_set_tosa@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     509
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Not ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_data_graph VK_ARM_data_graph>
+--
+-- [__Contact__]
+--
+--     -   Kevin Petit
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_ARM_data_graph_instruction_set_tosa] @kpet%0A*Here describe the issue or question you have about the VK_ARM_data_graph_instruction_set_tosa extension* >
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2026-03-30
+--
+-- [__Interactions and External Dependencies__]
+--
+--     -   This extension requires
+--         <https://github.khronos.org/SPIRV-Registry//extended/TOSA.001000.1.html the TOSA SPIR-V 001000.1 extended instruction set>
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Contributors__]
+--
+--     -   Kévin Petit, Arm Ltd.
+--
+-- == Description
+--
+-- This extensions adds support for the @TOSA.001000.1@ extended
+-- instruction set for use in data graphs as defined by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_data_graph VK_ARM_data_graph>.
+-- It also adds detailed queries to report the TOSA profiles, levels, and
+-- extensions that are supported along with the quality of the
+-- implementation (e.g. accelerated, experimental, deprecated, etc).
+--
+-- == New Commands
+--
+-- -   'getPhysicalDeviceQueueFamilyDataGraphEngineOperationPropertiesARM'
+--
+-- == New Structures
+--
+-- -   'DataGraphTOSANameQualityARM'
+--
+-- -   'QueueFamilyDataGraphTOSAPropertiesARM'
+--
+-- == New Enums
+--
+-- -   'DataGraphTOSALevelARM'
+--
+-- -   'DataGraphTOSAQualityFlagBitsARM'
+--
+-- == New Bitmasks
+--
+-- -   'DataGraphTOSAQualityFlagsARM'
+--
+-- == New Enum Constants
+--
+-- -   'ARM_DATA_GRAPH_INSTRUCTION_SET_TOSA_EXTENSION_NAME'
+--
+-- -   'ARM_DATA_GRAPH_INSTRUCTION_SET_TOSA_SPEC_VERSION'
+--
+-- -   'Vulkan.Core10.APIConstants.MAX_DATA_GRAPH_TOSA_NAME_SIZE_ARM'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_TOSA_PROPERTIES_ARM'
+--
+-- == New SPIR-V Capabilities
+--
+-- None.
+--
+-- == Issues
+--
+-- None.
+--
+-- == Version History
+--
+-- -   Revision 1, 2026-03-30 (Kévin Petit)
+--
+--     -   Initial revision
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_ARM_data_graph_instruction_set_tosa Vulkan Specification>.
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_ARM_data_graph_instruction_set_tosa  ( getPhysicalDeviceQueueFamilyDataGraphEngineOperationPropertiesARM
+                                                                 , DataGraphTOSANameQualityARM(..)
+                                                                 , QueueFamilyDataGraphTOSAPropertiesARM(..)
+                                                                 , DataGraphTOSAQualityFlagsARM
+                                                                 , DataGraphTOSAQualityFlagBitsARM( DATA_GRAPH_TOSA_QUALITY_ACCELERATED_ARM
+                                                                                                  , DATA_GRAPH_TOSA_QUALITY_CONFORMANT_ARM
+                                                                                                  , DATA_GRAPH_TOSA_QUALITY_EXPERIMENTAL_ARM
+                                                                                                  , DATA_GRAPH_TOSA_QUALITY_DEPRECATED_ARM
+                                                                                                  , ..
+                                                                                                  )
+                                                                 , DataGraphTOSALevelARM( DATA_GRAPH_TOSA_LEVEL_NONE_ARM
+                                                                                        , DATA_GRAPH_TOSA_LEVEL_8K_ARM
+                                                                                        , ..
+                                                                                        )
+                                                                 , ARM_DATA_GRAPH_INSTRUCTION_SET_TOSA_SPEC_VERSION
+                                                                 , pattern ARM_DATA_GRAPH_INSTRUCTION_SET_TOSA_SPEC_VERSION
+                                                                 , ARM_DATA_GRAPH_INSTRUCTION_SET_TOSA_EXTENSION_NAME
+                                                                 , pattern ARM_DATA_GRAPH_INSTRUCTION_SET_TOSA_EXTENSION_NAME
+                                                                 , PhysicalDeviceDataGraphProcessingEngineARM(..)
+                                                                 , PhysicalDeviceDataGraphOperationSupportARM(..)
+                                                                 , QueueFamilyDataGraphPropertiesARM(..)
+                                                                 , PhysicalDeviceDataGraphProcessingEngineTypeARM(..)
+                                                                 , PhysicalDeviceDataGraphOperationTypeARM(..)
+                                                                 , MAX_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_SET_NAME_SIZE_ARM
+                                                                 , pattern MAX_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_SET_NAME_SIZE_ARM
+                                                                 , MAX_DATA_GRAPH_TOSA_NAME_SIZE_ARM
+                                                                 , pattern MAX_DATA_GRAPH_TOSA_NAME_SIZE_ARM
+                                                                 ) where
+
+import Data.Bits (Bits)
+import Data.Bits (FiniteBits)
+import Vulkan.CStruct.Utils (FixedArray)
+import Vulkan.Internal.Utils (enumReadPrec)
+import Vulkan.Internal.Utils (enumShowsPrec)
+import Vulkan.Internal.Utils (traceAroundEvent)
+import Control.Monad (unless)
+import Control.Monad.IO.Class (liftIO)
+import Foreign.Marshal.Alloc (allocaBytes)
+import GHC.Base (when)
+import GHC.IO (throwIO)
+import GHC.Ptr (nullFunPtr)
+import Foreign.Ptr (nullPtr)
+import Foreign.Ptr (plusPtr)
+import GHC.Show (showString)
+import GHC.Show (showsPrec)
+import Numeric (showHex)
+import Data.ByteString (packCString)
+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.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 Data.Int (Int32)
+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.CStruct.Extends (BaseOutStructure)
+import Vulkan.Core10.FundamentalTypes (Flags)
+import Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceQueueFamilyDataGraphEngineOperationPropertiesARM))
+import Vulkan.Core10.APIConstants (MAX_DATA_GRAPH_TOSA_NAME_SIZE_ARM)
+import Vulkan.Core10.Handles (PhysicalDevice)
+import Vulkan.Core10.Handles (PhysicalDevice(..))
+import Vulkan.Core10.Handles (PhysicalDevice(PhysicalDevice))
+import Vulkan.Core10.Handles (PhysicalDevice_T)
+import Vulkan.Extensions.VK_ARM_data_graph (QueueFamilyDataGraphPropertiesARM)
+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_QUEUE_FAMILY_DATA_GRAPH_TOSA_PROPERTIES_ARM))
+import Vulkan.Core10.Enums.Result (Result(SUCCESS))
+import Vulkan.Core10.APIConstants (MAX_DATA_GRAPH_TOSA_NAME_SIZE_ARM)
+import Vulkan.Core10.APIConstants (MAX_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_SET_NAME_SIZE_ARM)
+import Vulkan.Extensions.VK_ARM_data_graph (PhysicalDeviceDataGraphOperationSupportARM(..))
+import Vulkan.Extensions.VK_ARM_data_graph (PhysicalDeviceDataGraphOperationTypeARM(..))
+import Vulkan.Extensions.VK_ARM_data_graph (PhysicalDeviceDataGraphProcessingEngineARM(..))
+import Vulkan.Extensions.VK_ARM_data_graph (PhysicalDeviceDataGraphProcessingEngineTypeARM(..))
+import Vulkan.Extensions.VK_ARM_data_graph (QueueFamilyDataGraphPropertiesARM(..))
+import Vulkan.Core10.APIConstants (pattern MAX_DATA_GRAPH_TOSA_NAME_SIZE_ARM)
+import Vulkan.Core10.APIConstants (pattern MAX_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_SET_NAME_SIZE_ARM)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetPhysicalDeviceQueueFamilyDataGraphEngineOperationPropertiesARM
+  :: FunPtr (Ptr PhysicalDevice_T -> Word32 -> Ptr QueueFamilyDataGraphPropertiesARM -> Ptr BaseOutStructure -> IO Result) -> Ptr PhysicalDevice_T -> Word32 -> Ptr QueueFamilyDataGraphPropertiesARM -> Ptr BaseOutStructure -> IO Result
+
+-- No documentation found for TopLevel "vkGetPhysicalDeviceQueueFamilyDataGraphEngineOperationPropertiesARM"
+getPhysicalDeviceQueueFamilyDataGraphEngineOperationPropertiesARM :: forall io
+                                                                   . ( MonadIO io )
+                                                                  => -- No documentation found for Nested "vkGetPhysicalDeviceQueueFamilyDataGraphEngineOperationPropertiesARM" "physicalDevice"
+                                                                     PhysicalDevice
+                                                                  -> -- No documentation found for Nested "vkGetPhysicalDeviceQueueFamilyDataGraphEngineOperationPropertiesARM" "queueFamilyIndex"
+                                                                     ("queueFamilyIndex" ::: Word32)
+                                                                  -> -- No documentation found for Nested "vkGetPhysicalDeviceQueueFamilyDataGraphEngineOperationPropertiesARM" "pQueueFamilyDataGraphProperties"
+                                                                     QueueFamilyDataGraphPropertiesARM
+                                                                  -> -- No documentation found for Nested "vkGetPhysicalDeviceQueueFamilyDataGraphEngineOperationPropertiesARM" "pProperties"
+                                                                     ("properties" ::: Ptr BaseOutStructure)
+                                                                  -> io ()
+getPhysicalDeviceQueueFamilyDataGraphEngineOperationPropertiesARM physicalDevice
+                                                                    queueFamilyIndex
+                                                                    queueFamilyDataGraphProperties
+                                                                    properties = liftIO . evalContT $ do
+  let vkGetPhysicalDeviceQueueFamilyDataGraphEngineOperationPropertiesARMPtr = pVkGetPhysicalDeviceQueueFamilyDataGraphEngineOperationPropertiesARM (case physicalDevice of PhysicalDevice{instanceCmds} -> instanceCmds)
+  lift $ unless (vkGetPhysicalDeviceQueueFamilyDataGraphEngineOperationPropertiesARMPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetPhysicalDeviceQueueFamilyDataGraphEngineOperationPropertiesARM is null" Nothing Nothing
+  let vkGetPhysicalDeviceQueueFamilyDataGraphEngineOperationPropertiesARM' = mkVkGetPhysicalDeviceQueueFamilyDataGraphEngineOperationPropertiesARM vkGetPhysicalDeviceQueueFamilyDataGraphEngineOperationPropertiesARMPtr
+  pQueueFamilyDataGraphProperties <- ContT $ withCStruct (queueFamilyDataGraphProperties)
+  r <- lift $ traceAroundEvent "vkGetPhysicalDeviceQueueFamilyDataGraphEngineOperationPropertiesARM" (vkGetPhysicalDeviceQueueFamilyDataGraphEngineOperationPropertiesARM'
+                                                                                                        (physicalDeviceHandle (physicalDevice))
+                                                                                                        (queueFamilyIndex)
+                                                                                                        pQueueFamilyDataGraphProperties
+                                                                                                        (properties))
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+
+
+-- | VkDataGraphTOSANameQualityARM - Structure describing the name and
+-- quality level of a TOSA profile or extension
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_data_graph_instruction_set_tosa VK_ARM_data_graph_instruction_set_tosa>,
+-- 'DataGraphTOSAQualityFlagsARM', 'QueueFamilyDataGraphTOSAPropertiesARM'
+data DataGraphTOSANameQualityARM = DataGraphTOSANameQualityARM
+  { -- | @name@ is a pointer to a null-terminated UTF-8 string specifying the
+    -- name of the TOSA profile or extension.
+    name :: ByteString
+  , -- No documentation found for Nested "VkDataGraphTOSANameQualityARM" "qualityFlags"
+    qualityFlags :: DataGraphTOSAQualityFlagsARM
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (DataGraphTOSANameQualityARM)
+#endif
+deriving instance Show DataGraphTOSANameQualityARM
+
+instance ToCStruct DataGraphTOSANameQualityARM where
+  withCStruct x f = allocaBytes 132 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p DataGraphTOSANameQualityARM{..} f = do
+    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 0 :: Ptr (FixedArray MAX_DATA_GRAPH_TOSA_NAME_SIZE_ARM CChar))) (name)
+    poke ((p `plusPtr` 128 :: Ptr DataGraphTOSAQualityFlagsARM)) (qualityFlags)
+    f
+  cStructSize = 132
+  cStructAlignment = 4
+  pokeZeroCStruct p f = do
+    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 0 :: Ptr (FixedArray MAX_DATA_GRAPH_TOSA_NAME_SIZE_ARM CChar))) (mempty)
+    poke ((p `plusPtr` 128 :: Ptr DataGraphTOSAQualityFlagsARM)) (zero)
+    f
+
+instance FromCStruct DataGraphTOSANameQualityARM where
+  peekCStruct p = do
+    name <- packCString (lowerArrayPtr ((p `plusPtr` 0 :: Ptr (FixedArray MAX_DATA_GRAPH_TOSA_NAME_SIZE_ARM CChar))))
+    qualityFlags <- peek @DataGraphTOSAQualityFlagsARM ((p `plusPtr` 128 :: Ptr DataGraphTOSAQualityFlagsARM))
+    pure $ DataGraphTOSANameQualityARM
+             name qualityFlags
+
+instance Storable DataGraphTOSANameQualityARM where
+  sizeOf ~_ = 132
+  alignment ~_ = 4
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero DataGraphTOSANameQualityARM where
+  zero = DataGraphTOSANameQualityARM
+           mempty
+           zero
+
+
+-- | VkQueueFamilyDataGraphTOSAPropertiesARM - Structure describing the TOSA
+-- properties of a processing engine and operation set for a specific queue
+-- family of a physical device
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_data_graph_instruction_set_tosa VK_ARM_data_graph_instruction_set_tosa>,
+-- 'DataGraphTOSALevelARM', 'DataGraphTOSANameQualityARM',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data QueueFamilyDataGraphTOSAPropertiesARM = QueueFamilyDataGraphTOSAPropertiesARM
+  { -- | @pProfiles@ is a pointer to an array of 'DataGraphTOSANameQualityARM'
+    -- structures describing the TOSA profiles supported.
+    profiles :: Vector DataGraphTOSANameQualityARM
+  , -- | @pExtensions@ is a pointer to an array of 'DataGraphTOSANameQualityARM'
+    -- structures describing the TOSA extensions supported.
+    extensions :: Vector DataGraphTOSANameQualityARM
+  , -- | @level@ is a 'DataGraphTOSALevelARM' describing the TOSA level
+    -- supported.
+    level :: DataGraphTOSALevelARM
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (QueueFamilyDataGraphTOSAPropertiesARM)
+#endif
+deriving instance Show QueueFamilyDataGraphTOSAPropertiesARM
+
+instance ToCStruct QueueFamilyDataGraphTOSAPropertiesARM where
+  withCStruct x f = allocaBytes 56 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p QueueFamilyDataGraphTOSAPropertiesARM{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_TOSA_PROPERTIES_ARM)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (profiles)) :: Word32))
+    pPProfiles' <- ContT $ allocaBytes @DataGraphTOSANameQualityARM ((Data.Vector.length (profiles)) * 132)
+    lift $ Data.Vector.imapM_ (\i e -> poke (pPProfiles' `plusPtr` (132 * (i)) :: Ptr DataGraphTOSANameQualityARM) (e)) (profiles)
+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr DataGraphTOSANameQualityARM))) (pPProfiles')
+    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (extensions)) :: Word32))
+    pPExtensions' <- ContT $ allocaBytes @DataGraphTOSANameQualityARM ((Data.Vector.length (extensions)) * 132)
+    lift $ Data.Vector.imapM_ (\i e -> poke (pPExtensions' `plusPtr` (132 * (i)) :: Ptr DataGraphTOSANameQualityARM) (e)) (extensions)
+    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr DataGraphTOSANameQualityARM))) (pPExtensions')
+    lift $ poke ((p `plusPtr` 48 :: Ptr DataGraphTOSALevelARM)) (level)
+    lift $ f
+  cStructSize = 56
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_TOSA_PROPERTIES_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 48 :: Ptr DataGraphTOSALevelARM)) (zero)
+    f
+
+instance FromCStruct QueueFamilyDataGraphTOSAPropertiesARM where
+  peekCStruct p = do
+    profileCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    pProfiles <- peek @(Ptr DataGraphTOSANameQualityARM) ((p `plusPtr` 24 :: Ptr (Ptr DataGraphTOSANameQualityARM)))
+    pProfiles' <- generateM (fromIntegral profileCount) (\i -> peekCStruct @DataGraphTOSANameQualityARM ((pProfiles `advancePtrBytes` (132 * (i)) :: Ptr DataGraphTOSANameQualityARM)))
+    extensionCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))
+    pExtensions <- peek @(Ptr DataGraphTOSANameQualityARM) ((p `plusPtr` 40 :: Ptr (Ptr DataGraphTOSANameQualityARM)))
+    pExtensions' <- generateM (fromIntegral extensionCount) (\i -> peekCStruct @DataGraphTOSANameQualityARM ((pExtensions `advancePtrBytes` (132 * (i)) :: Ptr DataGraphTOSANameQualityARM)))
+    level <- peek @DataGraphTOSALevelARM ((p `plusPtr` 48 :: Ptr DataGraphTOSALevelARM))
+    pure $ QueueFamilyDataGraphTOSAPropertiesARM
+             pProfiles' pExtensions' level
+
+instance Zero QueueFamilyDataGraphTOSAPropertiesARM where
+  zero = QueueFamilyDataGraphTOSAPropertiesARM
+           mempty
+           mempty
+           zero
+
+
+type DataGraphTOSAQualityFlagsARM = DataGraphTOSAQualityFlagBitsARM
+
+-- | VkDataGraphTOSAQualityFlagBitsARM - Bits specifying quality properties
+-- for a TOSA profile or extension
+--
+-- = Description
+--
+-- -   'DATA_GRAPH_TOSA_QUALITY_ACCELERATED_ARM' specifies that the
+--     implementation of the TOSA profile or extension is accelerated.
+--
+-- -   'DATA_GRAPH_TOSA_QUALITY_CONFORMANT_ARM' specifies that the
+--     implementation of the TOSA profile or extension is conformant.
+--
+-- -   'DATA_GRAPH_TOSA_QUALITY_EXPERIMENTAL_ARM' specifies that the TOSA
+--     profile or extension is experimental.
+--
+-- -   'DATA_GRAPH_TOSA_QUALITY_DEPRECATED_ARM' specifies that the TOSA
+--     profile or extension is deprecated.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_data_graph_instruction_set_tosa VK_ARM_data_graph_instruction_set_tosa>,
+-- 'DataGraphTOSAQualityFlagsARM'
+newtype DataGraphTOSAQualityFlagBitsARM = DataGraphTOSAQualityFlagBitsARM Flags
+  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
+
+-- No documentation found for Nested "VkDataGraphTOSAQualityFlagBitsARM" "VK_DATA_GRAPH_TOSA_QUALITY_ACCELERATED_ARM"
+pattern DATA_GRAPH_TOSA_QUALITY_ACCELERATED_ARM = DataGraphTOSAQualityFlagBitsARM 0x00000001
+
+-- No documentation found for Nested "VkDataGraphTOSAQualityFlagBitsARM" "VK_DATA_GRAPH_TOSA_QUALITY_CONFORMANT_ARM"
+pattern DATA_GRAPH_TOSA_QUALITY_CONFORMANT_ARM = DataGraphTOSAQualityFlagBitsARM 0x00000002
+
+-- No documentation found for Nested "VkDataGraphTOSAQualityFlagBitsARM" "VK_DATA_GRAPH_TOSA_QUALITY_EXPERIMENTAL_ARM"
+pattern DATA_GRAPH_TOSA_QUALITY_EXPERIMENTAL_ARM = DataGraphTOSAQualityFlagBitsARM 0x00000004
+
+-- No documentation found for Nested "VkDataGraphTOSAQualityFlagBitsARM" "VK_DATA_GRAPH_TOSA_QUALITY_DEPRECATED_ARM"
+pattern DATA_GRAPH_TOSA_QUALITY_DEPRECATED_ARM = DataGraphTOSAQualityFlagBitsARM 0x00000008
+
+conNameDataGraphTOSAQualityFlagBitsARM :: String
+conNameDataGraphTOSAQualityFlagBitsARM = "DataGraphTOSAQualityFlagBitsARM"
+
+enumPrefixDataGraphTOSAQualityFlagBitsARM :: String
+enumPrefixDataGraphTOSAQualityFlagBitsARM = "DATA_GRAPH_TOSA_QUALITY_"
+
+showTableDataGraphTOSAQualityFlagBitsARM :: [(DataGraphTOSAQualityFlagBitsARM, String)]
+showTableDataGraphTOSAQualityFlagBitsARM =
+  [
+    ( DATA_GRAPH_TOSA_QUALITY_ACCELERATED_ARM
+    , "ACCELERATED_ARM"
+    )
+  ,
+    ( DATA_GRAPH_TOSA_QUALITY_CONFORMANT_ARM
+    , "CONFORMANT_ARM"
+    )
+  ,
+    ( DATA_GRAPH_TOSA_QUALITY_EXPERIMENTAL_ARM
+    , "EXPERIMENTAL_ARM"
+    )
+  ,
+    ( DATA_GRAPH_TOSA_QUALITY_DEPRECATED_ARM
+    , "DEPRECATED_ARM"
+    )
+  ]
+
+instance Show DataGraphTOSAQualityFlagBitsARM where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixDataGraphTOSAQualityFlagBitsARM
+      showTableDataGraphTOSAQualityFlagBitsARM
+      conNameDataGraphTOSAQualityFlagBitsARM
+      (\(DataGraphTOSAQualityFlagBitsARM x) -> x)
+      (\x -> showString "0x" . showHex x)
+
+instance Read DataGraphTOSAQualityFlagBitsARM where
+  readPrec =
+    enumReadPrec
+      enumPrefixDataGraphTOSAQualityFlagBitsARM
+      showTableDataGraphTOSAQualityFlagBitsARM
+      conNameDataGraphTOSAQualityFlagBitsARM
+      DataGraphTOSAQualityFlagBitsARM
+
+-- | VkDataGraphTOSALevelARM - Enumeration describing a data graph TOSA level
+--
+-- = Description
+--
+-- -   'DATA_GRAPH_TOSA_LEVEL_NONE_ARM' corresponds to the none TOSA level,
+--     as described in the TOSA specification.
+--
+-- -   'DATA_GRAPH_TOSA_LEVEL_8K_ARM' corresponds to the 8K TOSA level, as
+--     described in the TOSA specification.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_data_graph_instruction_set_tosa VK_ARM_data_graph_instruction_set_tosa>,
+-- 'QueueFamilyDataGraphTOSAPropertiesARM'
+newtype DataGraphTOSALevelARM = DataGraphTOSALevelARM Int32
+  deriving newtype (Eq, Ord, Storable, Zero)
+
+-- No documentation found for Nested "VkDataGraphTOSALevelARM" "VK_DATA_GRAPH_TOSA_LEVEL_NONE_ARM"
+pattern DATA_GRAPH_TOSA_LEVEL_NONE_ARM = DataGraphTOSALevelARM 0
+
+-- No documentation found for Nested "VkDataGraphTOSALevelARM" "VK_DATA_GRAPH_TOSA_LEVEL_8K_ARM"
+pattern DATA_GRAPH_TOSA_LEVEL_8K_ARM = DataGraphTOSALevelARM 1
+
+{-# COMPLETE
+  DATA_GRAPH_TOSA_LEVEL_NONE_ARM
+  , DATA_GRAPH_TOSA_LEVEL_8K_ARM ::
+    DataGraphTOSALevelARM
+  #-}
+
+conNameDataGraphTOSALevelARM :: String
+conNameDataGraphTOSALevelARM = "DataGraphTOSALevelARM"
+
+enumPrefixDataGraphTOSALevelARM :: String
+enumPrefixDataGraphTOSALevelARM = "DATA_GRAPH_TOSA_LEVEL_"
+
+showTableDataGraphTOSALevelARM :: [(DataGraphTOSALevelARM, String)]
+showTableDataGraphTOSALevelARM =
+  [ (DATA_GRAPH_TOSA_LEVEL_NONE_ARM, "NONE_ARM")
+  , (DATA_GRAPH_TOSA_LEVEL_8K_ARM, "8K_ARM")
+  ]
+
+instance Show DataGraphTOSALevelARM where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixDataGraphTOSALevelARM
+      showTableDataGraphTOSALevelARM
+      conNameDataGraphTOSALevelARM
+      (\(DataGraphTOSALevelARM x) -> x)
+      (showsPrec 11)
+
+instance Read DataGraphTOSALevelARM where
+  readPrec =
+    enumReadPrec
+      enumPrefixDataGraphTOSALevelARM
+      showTableDataGraphTOSALevelARM
+      conNameDataGraphTOSALevelARM
+      DataGraphTOSALevelARM
+
+type ARM_DATA_GRAPH_INSTRUCTION_SET_TOSA_SPEC_VERSION = 1
+
+-- No documentation found for TopLevel "VK_ARM_DATA_GRAPH_INSTRUCTION_SET_TOSA_SPEC_VERSION"
+pattern ARM_DATA_GRAPH_INSTRUCTION_SET_TOSA_SPEC_VERSION :: forall a . Integral a => a
+pattern ARM_DATA_GRAPH_INSTRUCTION_SET_TOSA_SPEC_VERSION = 1
+
+
+type ARM_DATA_GRAPH_INSTRUCTION_SET_TOSA_EXTENSION_NAME = "VK_ARM_data_graph_instruction_set_tosa"
+
+-- No documentation found for TopLevel "VK_ARM_DATA_GRAPH_INSTRUCTION_SET_TOSA_EXTENSION_NAME"
+pattern ARM_DATA_GRAPH_INSTRUCTION_SET_TOSA_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern ARM_DATA_GRAPH_INSTRUCTION_SET_TOSA_EXTENSION_NAME = "VK_ARM_data_graph_instruction_set_tosa"
+
diff --git a/src/Vulkan/Extensions/VK_ARM_data_graph_instruction_set_tosa.hs-boot b/src/Vulkan/Extensions/VK_ARM_data_graph_instruction_set_tosa.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_ARM_data_graph_instruction_set_tosa.hs-boot
@@ -0,0 +1,136 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_ARM_data_graph_instruction_set_tosa - device extension
+--
+-- = VK_ARM_data_graph_instruction_set_tosa
+--
+-- [__Name String__]
+--     @VK_ARM_data_graph_instruction_set_tosa@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     509
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Not ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_data_graph VK_ARM_data_graph>
+--
+-- [__Contact__]
+--
+--     -   Kevin Petit
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_ARM_data_graph_instruction_set_tosa] @kpet%0A*Here describe the issue or question you have about the VK_ARM_data_graph_instruction_set_tosa extension* >
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2026-03-30
+--
+-- [__Interactions and External Dependencies__]
+--
+--     -   This extension requires
+--         <https://github.khronos.org/SPIRV-Registry//extended/TOSA.001000.1.html the TOSA SPIR-V 001000.1 extended instruction set>
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Contributors__]
+--
+--     -   Kévin Petit, Arm Ltd.
+--
+-- == Description
+--
+-- This extensions adds support for the @TOSA.001000.1@ extended
+-- instruction set for use in data graphs as defined by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_data_graph VK_ARM_data_graph>.
+-- It also adds detailed queries to report the TOSA profiles, levels, and
+-- extensions that are supported along with the quality of the
+-- implementation (e.g. accelerated, experimental, deprecated, etc).
+--
+-- == New Commands
+--
+-- -   'getPhysicalDeviceQueueFamilyDataGraphEngineOperationPropertiesARM'
+--
+-- == New Structures
+--
+-- -   'DataGraphTOSANameQualityARM'
+--
+-- -   'QueueFamilyDataGraphTOSAPropertiesARM'
+--
+-- == New Enums
+--
+-- -   'DataGraphTOSALevelARM'
+--
+-- -   'DataGraphTOSAQualityFlagBitsARM'
+--
+-- == New Bitmasks
+--
+-- -   'DataGraphTOSAQualityFlagsARM'
+--
+-- == New Enum Constants
+--
+-- -   'ARM_DATA_GRAPH_INSTRUCTION_SET_TOSA_EXTENSION_NAME'
+--
+-- -   'ARM_DATA_GRAPH_INSTRUCTION_SET_TOSA_SPEC_VERSION'
+--
+-- -   'Vulkan.Core10.APIConstants.MAX_DATA_GRAPH_TOSA_NAME_SIZE_ARM'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_TOSA_PROPERTIES_ARM'
+--
+-- == New SPIR-V Capabilities
+--
+-- None.
+--
+-- == Issues
+--
+-- None.
+--
+-- == Version History
+--
+-- -   Revision 1, 2026-03-30 (Kévin Petit)
+--
+--     -   Initial revision
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_ARM_data_graph_instruction_set_tosa Vulkan Specification>.
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_ARM_data_graph_instruction_set_tosa  ( DataGraphTOSANameQualityARM
+                                                                 , QueueFamilyDataGraphTOSAPropertiesARM
+                                                                 ) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data DataGraphTOSANameQualityARM
+
+instance ToCStruct DataGraphTOSANameQualityARM
+instance Show DataGraphTOSANameQualityARM
+
+instance FromCStruct DataGraphTOSANameQualityARM
+
+
+data QueueFamilyDataGraphTOSAPropertiesARM
+
+instance ToCStruct QueueFamilyDataGraphTOSAPropertiesARM
+instance Show QueueFamilyDataGraphTOSAPropertiesARM
+
+instance FromCStruct QueueFamilyDataGraphTOSAPropertiesARM
+
diff --git a/src/Vulkan/Extensions/VK_ARM_data_graph_neural_accelerator_statistics.hs b/src/Vulkan/Extensions/VK_ARM_data_graph_neural_accelerator_statistics.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_ARM_data_graph_neural_accelerator_statistics.hs
@@ -0,0 +1,456 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_ARM_data_graph_neural_accelerator_statistics - device extension
+--
+-- = VK_ARM_data_graph_neural_accelerator_statistics
+--
+-- [__Name String__]
+--     @VK_ARM_data_graph_neural_accelerator_statistics@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     677
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Not ratified
+--
+-- [__Extension and Version Dependencies__]
+--     None
+--
+-- [__Contact__]
+--
+--     -   Kevin Petit
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_ARM_data_graph_neural_accelerator_statistics] @kpet%0A*Here describe the issue or question you have about the VK_ARM_data_graph_neural_accelerator_statistics extension* >
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2026-04-28
+--
+-- [__Interactions and External Dependencies__]
+--
+--     -   None
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Contributors__]
+--
+--     -   Kévin Petit, Arm Ltd.
+--
+--     -   Emma Lynn Mulier (Benyossef), Arm Ltd.
+--
+-- == Description
+--
+-- This extension adds support for getting data graph execution statistics
+-- for Arm neural accelerators.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_ARM_data_graph.DataGraphPipelineCreateInfoARM':
+--
+--     -   'DataGraphPipelineNeuralStatisticsCreateInfoARM'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_ARM_data_graph.DataGraphPipelineSessionCreateInfoARM':
+--
+--     -   'DataGraphPipelineSessionNeuralStatisticsCreateInfoARM'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceDataGraphNeuralAcceleratorStatisticsFeaturesARM'
+--
+-- == New Enums
+--
+-- -   'NeuralAcceleratorStatisticsModeARM'
+--
+-- == New Enum Constants
+--
+-- -   'ARM_DATA_GRAPH_NEURAL_ACCELERATOR_STATISTICS_EXTENSION_NAME'
+--
+-- -   'ARM_DATA_GRAPH_NEURAL_ACCELERATOR_STATISTICS_SPEC_VERSION'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_ARM_data_graph.DataGraphPipelinePropertyARM':
+--
+--     -   'Vulkan.Extensions.VK_ARM_data_graph.DATA_GRAPH_PIPELINE_PROPERTY_NEURAL_ACCELERATOR_DEBUG_DATABASE_ARM'
+--
+--     -   'Vulkan.Extensions.VK_ARM_data_graph.DATA_GRAPH_PIPELINE_PROPERTY_NEURAL_ACCELERATOR_STATISTICS_INFO_ARM'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_ARM_data_graph.DataGraphPipelineSessionBindPointARM':
+--
+--     -   'Vulkan.Extensions.VK_ARM_data_graph.DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_NEURAL_ACCELERATOR_STATISTICS_ARM'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_NEURAL_STATISTICS_CREATE_INFO_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_NEURAL_STATISTICS_CREATE_INFO_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_NEURAL_ACCELERATOR_STATISTICS_FEATURES_ARM'
+--
+-- == New SPIR-V Capabilities
+--
+-- None.
+--
+-- == Issues
+--
+-- None.
+--
+-- == Version History
+--
+-- -   Revision 1, 2026-04-28 (Kévin Petit)
+--
+--     -   Initial revision
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_ARM_data_graph_neural_accelerator_statistics Vulkan Specification>.
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_ARM_data_graph_neural_accelerator_statistics  ( PhysicalDeviceDataGraphNeuralAcceleratorStatisticsFeaturesARM(..)
+                                                                          , DataGraphPipelineNeuralStatisticsCreateInfoARM(..)
+                                                                          , DataGraphPipelineSessionNeuralStatisticsCreateInfoARM(..)
+                                                                          , NeuralAcceleratorStatisticsModeARM( NEURAL_ACCELERATOR_STATISTICS_MODE_DISABLED_ARM
+                                                                                                              , NEURAL_ACCELERATOR_STATISTICS_MODE_STATISTICS0_ARM
+                                                                                                              , NEURAL_ACCELERATOR_STATISTICS_MODE_STATISTICS1_ARM
+                                                                                                              , ..
+                                                                                                              )
+                                                                          , ARM_DATA_GRAPH_NEURAL_ACCELERATOR_STATISTICS_SPEC_VERSION
+                                                                          , pattern ARM_DATA_GRAPH_NEURAL_ACCELERATOR_STATISTICS_SPEC_VERSION
+                                                                          , ARM_DATA_GRAPH_NEURAL_ACCELERATOR_STATISTICS_EXTENSION_NAME
+                                                                          , pattern ARM_DATA_GRAPH_NEURAL_ACCELERATOR_STATISTICS_EXTENSION_NAME
+                                                                          , DataGraphPipelineSessionBindPointARM(..)
+                                                                          , DataGraphPipelinePropertyARM(..)
+                                                                          ) where
+
+import Vulkan.Internal.Utils (enumReadPrec)
+import Vulkan.Internal.Utils (enumShowsPrec)
+import Foreign.Marshal.Alloc (allocaBytes)
+import Foreign.Ptr (nullPtr)
+import Foreign.Ptr (plusPtr)
+import GHC.Show (showsPrec)
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (FromCStruct(..))
+import Vulkan.CStruct (ToCStruct)
+import Vulkan.CStruct (ToCStruct(..))
+import Vulkan.Zero (Zero)
+import Vulkan.Zero (Zero(..))
+import Data.String (IsString)
+import Data.Typeable (Typeable)
+import Foreign.Storable (Storable)
+import Foreign.Storable (Storable(peek))
+import Foreign.Storable (Storable(poke))
+import qualified Foreign.Storable (Storable(..))
+import GHC.Generics (Generic)
+import Data.Int (Int32)
+import Foreign.Ptr (Ptr)
+import GHC.Read (Read(readPrec))
+import GHC.Show (Show(showsPrec))
+import Data.Kind (Type)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_NEURAL_STATISTICS_CREATE_INFO_ARM))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_NEURAL_STATISTICS_CREATE_INFO_ARM))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_NEURAL_ACCELERATOR_STATISTICS_FEATURES_ARM))
+import Vulkan.Extensions.VK_ARM_data_graph (DataGraphPipelinePropertyARM(..))
+import Vulkan.Extensions.VK_ARM_data_graph (DataGraphPipelineSessionBindPointARM(..))
+-- | VkPhysicalDeviceDataGraphNeuralAcceleratorStatisticsFeaturesARM -
+-- Structure describing features to control data graph neural accelerator
+-- statistics
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceDataGraphNeuralAcceleratorStatisticsFeaturesARM'
+-- 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceDataGraphNeuralAcceleratorStatisticsFeaturesARM', it
+-- /must/ add an instance of the structure, with the desired feature
+-- members set to 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@
+-- chain of 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_data_graph_neural_accelerator_statistics VK_ARM_data_graph_neural_accelerator_statistics>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceDataGraphNeuralAcceleratorStatisticsFeaturesARM = PhysicalDeviceDataGraphNeuralAcceleratorStatisticsFeaturesARM
+  { -- | #features-dataGraphNeuralAcceleratorStatistics#
+    -- @dataGraphNeuralAcceleratorStatistics@ indicates that the implementation
+    -- supports gathering neural accelerator statistics for data graphs.
+    dataGraphNeuralAcceleratorStatistics :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceDataGraphNeuralAcceleratorStatisticsFeaturesARM)
+#endif
+deriving instance Show PhysicalDeviceDataGraphNeuralAcceleratorStatisticsFeaturesARM
+
+instance ToCStruct PhysicalDeviceDataGraphNeuralAcceleratorStatisticsFeaturesARM where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceDataGraphNeuralAcceleratorStatisticsFeaturesARM{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_NEURAL_ACCELERATOR_STATISTICS_FEATURES_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (dataGraphNeuralAcceleratorStatistics))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_NEURAL_ACCELERATOR_STATISTICS_FEATURES_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceDataGraphNeuralAcceleratorStatisticsFeaturesARM where
+  peekCStruct p = do
+    dataGraphNeuralAcceleratorStatistics <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDeviceDataGraphNeuralAcceleratorStatisticsFeaturesARM
+             (bool32ToBool dataGraphNeuralAcceleratorStatistics)
+
+instance Storable PhysicalDeviceDataGraphNeuralAcceleratorStatisticsFeaturesARM where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceDataGraphNeuralAcceleratorStatisticsFeaturesARM where
+  zero = PhysicalDeviceDataGraphNeuralAcceleratorStatisticsFeaturesARM
+           zero
+
+
+-- | VkDataGraphPipelineNeuralStatisticsCreateInfoARM - Structure specifying
+-- neural statistics parameters of a newly created graph pipeline
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Extensions.VK_ARM_data_graph.DataGraphPipelineCreateInfoARM'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_data_graph_neural_accelerator_statistics VK_ARM_data_graph_neural_accelerator_statistics>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data DataGraphPipelineNeuralStatisticsCreateInfoARM = DataGraphPipelineNeuralStatisticsCreateInfoARM
+  { -- | @allowNeuralStatistics@ specifies whether sessions for the newly created
+    -- pipeline /may/ enable neural statistics reporting.
+    allowNeuralStatistics :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (DataGraphPipelineNeuralStatisticsCreateInfoARM)
+#endif
+deriving instance Show DataGraphPipelineNeuralStatisticsCreateInfoARM
+
+instance ToCStruct DataGraphPipelineNeuralStatisticsCreateInfoARM where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p DataGraphPipelineNeuralStatisticsCreateInfoARM{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_NEURAL_STATISTICS_CREATE_INFO_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (allowNeuralStatistics))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_NEURAL_STATISTICS_CREATE_INFO_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct DataGraphPipelineNeuralStatisticsCreateInfoARM where
+  peekCStruct p = do
+    allowNeuralStatistics <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ DataGraphPipelineNeuralStatisticsCreateInfoARM
+             (bool32ToBool allowNeuralStatistics)
+
+instance Storable DataGraphPipelineNeuralStatisticsCreateInfoARM where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero DataGraphPipelineNeuralStatisticsCreateInfoARM where
+  zero = DataGraphPipelineNeuralStatisticsCreateInfoARM
+           zero
+
+
+-- | VkDataGraphPipelineSessionNeuralStatisticsCreateInfoARM - Structure
+-- specifying neural statistics parameters of a newly created data graph
+-- pipeline session
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Extensions.VK_ARM_data_graph.DataGraphPipelineSessionCreateInfoARM'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_data_graph_neural_accelerator_statistics VK_ARM_data_graph_neural_accelerator_statistics>,
+-- 'NeuralAcceleratorStatisticsModeARM',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data DataGraphPipelineSessionNeuralStatisticsCreateInfoARM = DataGraphPipelineSessionNeuralStatisticsCreateInfoARM
+  { -- | @mode@ is a 'NeuralAcceleratorStatisticsModeARM' specifying the neural
+    -- statistics mode for the session being created.
+    --
+    -- #VUID-VkDataGraphPipelineSessionNeuralStatisticsCreateInfoARM-mode-parameter#
+    -- @mode@ /must/ be a valid 'NeuralAcceleratorStatisticsModeARM' value
+    mode :: NeuralAcceleratorStatisticsModeARM }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (DataGraphPipelineSessionNeuralStatisticsCreateInfoARM)
+#endif
+deriving instance Show DataGraphPipelineSessionNeuralStatisticsCreateInfoARM
+
+instance ToCStruct DataGraphPipelineSessionNeuralStatisticsCreateInfoARM where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p DataGraphPipelineSessionNeuralStatisticsCreateInfoARM{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_NEURAL_STATISTICS_CREATE_INFO_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr NeuralAcceleratorStatisticsModeARM)) (mode)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_NEURAL_STATISTICS_CREATE_INFO_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr NeuralAcceleratorStatisticsModeARM)) (zero)
+    f
+
+instance FromCStruct DataGraphPipelineSessionNeuralStatisticsCreateInfoARM where
+  peekCStruct p = do
+    mode <- peek @NeuralAcceleratorStatisticsModeARM ((p `plusPtr` 16 :: Ptr NeuralAcceleratorStatisticsModeARM))
+    pure $ DataGraphPipelineSessionNeuralStatisticsCreateInfoARM
+             mode
+
+instance Storable DataGraphPipelineSessionNeuralStatisticsCreateInfoARM where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero DataGraphPipelineSessionNeuralStatisticsCreateInfoARM where
+  zero = DataGraphPipelineSessionNeuralStatisticsCreateInfoARM
+           zero
+
+
+-- | VkNeuralAcceleratorStatisticsModeARM - Enum specifying the mode of
+-- operation for neural accelerator statistics
+--
+-- = Description
+--
+-- -   'NEURAL_ACCELERATOR_STATISTICS_MODE_DISABLED_ARM' specifies that
+--     neural accelerator statistics are disabled.
+--
+-- -   'NEURAL_ACCELERATOR_STATISTICS_MODE_STATISTICS0_ARM' specifies the
+--     @statistics0@ mode of operation.
+--
+-- -   'NEURAL_ACCELERATOR_STATISTICS_MODE_STATISTICS1_ARM' specifies the
+--     @statistics1@ mode of operation.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_data_graph_neural_accelerator_statistics VK_ARM_data_graph_neural_accelerator_statistics>,
+-- 'DataGraphPipelineSessionNeuralStatisticsCreateInfoARM'
+newtype NeuralAcceleratorStatisticsModeARM = NeuralAcceleratorStatisticsModeARM Int32
+  deriving newtype (Eq, Ord, Storable, Zero)
+
+-- No documentation found for Nested "VkNeuralAcceleratorStatisticsModeARM" "VK_NEURAL_ACCELERATOR_STATISTICS_MODE_DISABLED_ARM"
+pattern NEURAL_ACCELERATOR_STATISTICS_MODE_DISABLED_ARM = NeuralAcceleratorStatisticsModeARM 0
+
+-- No documentation found for Nested "VkNeuralAcceleratorStatisticsModeARM" "VK_NEURAL_ACCELERATOR_STATISTICS_MODE_STATISTICS0_ARM"
+pattern NEURAL_ACCELERATOR_STATISTICS_MODE_STATISTICS0_ARM = NeuralAcceleratorStatisticsModeARM 1
+
+-- No documentation found for Nested "VkNeuralAcceleratorStatisticsModeARM" "VK_NEURAL_ACCELERATOR_STATISTICS_MODE_STATISTICS1_ARM"
+pattern NEURAL_ACCELERATOR_STATISTICS_MODE_STATISTICS1_ARM = NeuralAcceleratorStatisticsModeARM 2
+
+{-# COMPLETE
+  NEURAL_ACCELERATOR_STATISTICS_MODE_DISABLED_ARM
+  , NEURAL_ACCELERATOR_STATISTICS_MODE_STATISTICS0_ARM
+  , NEURAL_ACCELERATOR_STATISTICS_MODE_STATISTICS1_ARM ::
+    NeuralAcceleratorStatisticsModeARM
+  #-}
+
+conNameNeuralAcceleratorStatisticsModeARM :: String
+conNameNeuralAcceleratorStatisticsModeARM = "NeuralAcceleratorStatisticsModeARM"
+
+enumPrefixNeuralAcceleratorStatisticsModeARM :: String
+enumPrefixNeuralAcceleratorStatisticsModeARM = "NEURAL_ACCELERATOR_STATISTICS_MODE_"
+
+showTableNeuralAcceleratorStatisticsModeARM :: [(NeuralAcceleratorStatisticsModeARM, String)]
+showTableNeuralAcceleratorStatisticsModeARM =
+  [
+    ( NEURAL_ACCELERATOR_STATISTICS_MODE_DISABLED_ARM
+    , "DISABLED_ARM"
+    )
+  ,
+    ( NEURAL_ACCELERATOR_STATISTICS_MODE_STATISTICS0_ARM
+    , "STATISTICS0_ARM"
+    )
+  ,
+    ( NEURAL_ACCELERATOR_STATISTICS_MODE_STATISTICS1_ARM
+    , "STATISTICS1_ARM"
+    )
+  ]
+
+instance Show NeuralAcceleratorStatisticsModeARM where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixNeuralAcceleratorStatisticsModeARM
+      showTableNeuralAcceleratorStatisticsModeARM
+      conNameNeuralAcceleratorStatisticsModeARM
+      (\(NeuralAcceleratorStatisticsModeARM x) -> x)
+      (showsPrec 11)
+
+instance Read NeuralAcceleratorStatisticsModeARM where
+  readPrec =
+    enumReadPrec
+      enumPrefixNeuralAcceleratorStatisticsModeARM
+      showTableNeuralAcceleratorStatisticsModeARM
+      conNameNeuralAcceleratorStatisticsModeARM
+      NeuralAcceleratorStatisticsModeARM
+
+type ARM_DATA_GRAPH_NEURAL_ACCELERATOR_STATISTICS_SPEC_VERSION = 1
+
+-- No documentation found for TopLevel "VK_ARM_DATA_GRAPH_NEURAL_ACCELERATOR_STATISTICS_SPEC_VERSION"
+pattern ARM_DATA_GRAPH_NEURAL_ACCELERATOR_STATISTICS_SPEC_VERSION :: forall a . Integral a => a
+pattern ARM_DATA_GRAPH_NEURAL_ACCELERATOR_STATISTICS_SPEC_VERSION = 1
+
+
+type ARM_DATA_GRAPH_NEURAL_ACCELERATOR_STATISTICS_EXTENSION_NAME = "VK_ARM_data_graph_neural_accelerator_statistics"
+
+-- No documentation found for TopLevel "VK_ARM_DATA_GRAPH_NEURAL_ACCELERATOR_STATISTICS_EXTENSION_NAME"
+pattern ARM_DATA_GRAPH_NEURAL_ACCELERATOR_STATISTICS_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern ARM_DATA_GRAPH_NEURAL_ACCELERATOR_STATISTICS_EXTENSION_NAME = "VK_ARM_data_graph_neural_accelerator_statistics"
+
diff --git a/src/Vulkan/Extensions/VK_ARM_data_graph_neural_accelerator_statistics.hs-boot b/src/Vulkan/Extensions/VK_ARM_data_graph_neural_accelerator_statistics.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_ARM_data_graph_neural_accelerator_statistics.hs-boot
@@ -0,0 +1,158 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_ARM_data_graph_neural_accelerator_statistics - device extension
+--
+-- = VK_ARM_data_graph_neural_accelerator_statistics
+--
+-- [__Name String__]
+--     @VK_ARM_data_graph_neural_accelerator_statistics@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     677
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Not ratified
+--
+-- [__Extension and Version Dependencies__]
+--     None
+--
+-- [__Contact__]
+--
+--     -   Kevin Petit
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_ARM_data_graph_neural_accelerator_statistics] @kpet%0A*Here describe the issue or question you have about the VK_ARM_data_graph_neural_accelerator_statistics extension* >
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2026-04-28
+--
+-- [__Interactions and External Dependencies__]
+--
+--     -   None
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Contributors__]
+--
+--     -   Kévin Petit, Arm Ltd.
+--
+--     -   Emma Lynn Mulier (Benyossef), Arm Ltd.
+--
+-- == Description
+--
+-- This extension adds support for getting data graph execution statistics
+-- for Arm neural accelerators.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_ARM_data_graph.DataGraphPipelineCreateInfoARM':
+--
+--     -   'DataGraphPipelineNeuralStatisticsCreateInfoARM'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_ARM_data_graph.DataGraphPipelineSessionCreateInfoARM':
+--
+--     -   'DataGraphPipelineSessionNeuralStatisticsCreateInfoARM'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceDataGraphNeuralAcceleratorStatisticsFeaturesARM'
+--
+-- == New Enums
+--
+-- -   'NeuralAcceleratorStatisticsModeARM'
+--
+-- == New Enum Constants
+--
+-- -   'ARM_DATA_GRAPH_NEURAL_ACCELERATOR_STATISTICS_EXTENSION_NAME'
+--
+-- -   'ARM_DATA_GRAPH_NEURAL_ACCELERATOR_STATISTICS_SPEC_VERSION'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_ARM_data_graph.DataGraphPipelinePropertyARM':
+--
+--     -   'Vulkan.Extensions.VK_ARM_data_graph.DATA_GRAPH_PIPELINE_PROPERTY_NEURAL_ACCELERATOR_DEBUG_DATABASE_ARM'
+--
+--     -   'Vulkan.Extensions.VK_ARM_data_graph.DATA_GRAPH_PIPELINE_PROPERTY_NEURAL_ACCELERATOR_STATISTICS_INFO_ARM'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_ARM_data_graph.DataGraphPipelineSessionBindPointARM':
+--
+--     -   'Vulkan.Extensions.VK_ARM_data_graph.DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_NEURAL_ACCELERATOR_STATISTICS_ARM'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_NEURAL_STATISTICS_CREATE_INFO_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_NEURAL_STATISTICS_CREATE_INFO_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_NEURAL_ACCELERATOR_STATISTICS_FEATURES_ARM'
+--
+-- == New SPIR-V Capabilities
+--
+-- None.
+--
+-- == Issues
+--
+-- None.
+--
+-- == Version History
+--
+-- -   Revision 1, 2026-04-28 (Kévin Petit)
+--
+--     -   Initial revision
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_ARM_data_graph_neural_accelerator_statistics Vulkan Specification>.
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_ARM_data_graph_neural_accelerator_statistics  ( DataGraphPipelineNeuralStatisticsCreateInfoARM
+                                                                          , DataGraphPipelineSessionNeuralStatisticsCreateInfoARM
+                                                                          , PhysicalDeviceDataGraphNeuralAcceleratorStatisticsFeaturesARM
+                                                                          ) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data DataGraphPipelineNeuralStatisticsCreateInfoARM
+
+instance ToCStruct DataGraphPipelineNeuralStatisticsCreateInfoARM
+instance Show DataGraphPipelineNeuralStatisticsCreateInfoARM
+
+instance FromCStruct DataGraphPipelineNeuralStatisticsCreateInfoARM
+
+
+data DataGraphPipelineSessionNeuralStatisticsCreateInfoARM
+
+instance ToCStruct DataGraphPipelineSessionNeuralStatisticsCreateInfoARM
+instance Show DataGraphPipelineSessionNeuralStatisticsCreateInfoARM
+
+instance FromCStruct DataGraphPipelineSessionNeuralStatisticsCreateInfoARM
+
+
+data PhysicalDeviceDataGraphNeuralAcceleratorStatisticsFeaturesARM
+
+instance ToCStruct PhysicalDeviceDataGraphNeuralAcceleratorStatisticsFeaturesARM
+instance Show PhysicalDeviceDataGraphNeuralAcceleratorStatisticsFeaturesARM
+
+instance FromCStruct PhysicalDeviceDataGraphNeuralAcceleratorStatisticsFeaturesARM
+
diff --git a/src/Vulkan/Extensions/VK_ARM_data_graph_optical_flow.hs b/src/Vulkan/Extensions/VK_ARM_data_graph_optical_flow.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_ARM_data_graph_optical_flow.hs
@@ -0,0 +1,2014 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_ARM_data_graph_optical_flow - device extension
+--
+-- = VK_ARM_data_graph_optical_flow
+--
+-- [__Name String__]
+--     @VK_ARM_data_graph_optical_flow@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     632
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Not ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_data_graph VK_ARM_data_graph>
+--
+-- [__Contact__]
+--
+--     -   Kevin Petit
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_ARM_data_graph_optical_flow] @kpet%0A*Here describe the issue or question you have about the VK_ARM_data_graph_optical_flow extension* >
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2026-04-08
+--
+-- [__Contributors__]
+--
+--     -   Contributors to VK_NV_optical_flow
+--
+--     -   Kevin Petit, Arm Ltd.
+--
+--     -   Jan-Harald Fredriksen, Arm Ltd.
+--
+--     -   Steve Suzuki, Arm Ltd.
+--
+--     -   Liam O’Neil, Arm Ltd.
+--
+-- == Description
+--
+-- This extension allows applications to estimate the 2D displacement of
+-- pixels between two images.
+--
+-- == New Commands
+--
+-- -   'Vulkan.Extensions.VK_ARM_data_graph_instruction_set_tosa.getPhysicalDeviceQueueFamilyDataGraphEngineOperationPropertiesARM'
+--
+-- -   'getPhysicalDeviceQueueFamilyDataGraphOpticalFlowImageFormatsARM'
+--
+-- == New Structures
+--
+-- -   'DataGraphOpticalFlowImageFormatPropertiesARM'
+--
+-- -   'DataGraphPipelineSingleNodeConnectionARM'
+--
+-- -   'QueueFamilyDataGraphOpticalFlowPropertiesARM'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_ARM_data_graph.DataGraphPipelineCreateInfoARM':
+--
+--     -   'DataGraphPipelineOpticalFlowCreateInfoARM'
+--
+--     -   'DataGraphPipelineSingleNodeCreateInfoARM'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_ARM_data_graph.DataGraphPipelineDispatchInfoARM':
+--
+--     -   'DataGraphPipelineOpticalFlowDispatchInfoARM'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_ARM_data_graph.DataGraphPipelineResourceInfoARM':
+--
+--     -   'DataGraphPipelineResourceInfoImageLayoutARM'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceDataGraphOpticalFlowFeaturesARM'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceImageFormatInfo2',
+--     'Vulkan.Core10.Image.ImageCreateInfo':
+--
+--     -   'DataGraphOpticalFlowImageFormatInfoARM'
+--
+-- == New Enums
+--
+-- -   'DataGraphOpticalFlowCreateFlagBitsARM'
+--
+-- -   'DataGraphOpticalFlowExecuteFlagBitsARM'
+--
+-- -   'DataGraphOpticalFlowGridSizeFlagBitsARM'
+--
+-- -   'DataGraphOpticalFlowImageUsageFlagBitsARM'
+--
+-- -   'DataGraphOpticalFlowPerformanceLevelARM'
+--
+-- -   'DataGraphPipelineNodeConnectionTypeARM'
+--
+-- -   'DataGraphPipelineNodeTypeARM'
+--
+-- == New Bitmasks
+--
+-- -   'DataGraphOpticalFlowCreateFlagsARM'
+--
+-- -   'DataGraphOpticalFlowExecuteFlagsARM'
+--
+-- -   'DataGraphOpticalFlowGridSizeFlagsARM'
+--
+-- -   'DataGraphOpticalFlowImageUsageFlagsARM'
+--
+-- == New Enum Constants
+--
+-- -   'ARM_DATA_GRAPH_OPTICAL_FLOW_EXTENSION_NAME'
+--
+-- -   'ARM_DATA_GRAPH_OPTICAL_FLOW_SPEC_VERSION'
+--
+-- -   Extending 'DataGraphPipelineNodeConnectionTypeARM':
+--
+--     -   'DATA_GRAPH_PIPELINE_NODE_CONNECTION_TYPE_OPTICAL_FLOW_COST_ARM'
+--
+--     -   'DATA_GRAPH_PIPELINE_NODE_CONNECTION_TYPE_OPTICAL_FLOW_FLOW_VECTOR_ARM'
+--
+--     -   'DATA_GRAPH_PIPELINE_NODE_CONNECTION_TYPE_OPTICAL_FLOW_HINT_ARM'
+--
+--     -   'DATA_GRAPH_PIPELINE_NODE_CONNECTION_TYPE_OPTICAL_FLOW_INPUT_ARM'
+--
+--     -   'DATA_GRAPH_PIPELINE_NODE_CONNECTION_TYPE_OPTICAL_FLOW_REFERENCE_ARM'
+--
+-- -   Extending 'DataGraphPipelineNodeTypeARM':
+--
+--     -   'DATA_GRAPH_PIPELINE_NODE_TYPE_OPTICAL_FLOW_ARM'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_ARM_data_graph.DataGraphPipelineSessionBindPointARM':
+--
+--     -   'Vulkan.Extensions.VK_ARM_data_graph.DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_OPTICAL_FLOW_CACHE_ARM'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_ARM_data_graph.DataGraphPipelineSessionCreateFlagBitsARM':
+--
+--     -   'Vulkan.Extensions.VK_ARM_data_graph.DATA_GRAPH_PIPELINE_SESSION_CREATE_OPTICAL_FLOW_CACHE_BIT_ARM'
+--
+-- -   Extending
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FormatFeatureFlagBits2':
+--
+--     -   'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_DATA_GRAPH_OPTICAL_FLOW_COST_BIT_ARM'
+--
+--     -   'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_DATA_GRAPH_OPTICAL_FLOW_IMAGE_BIT_ARM'
+--
+--     -   'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_DATA_GRAPH_OPTICAL_FLOW_VECTOR_BIT_ARM'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_ARM_data_graph.PhysicalDeviceDataGraphOperationTypeARM':
+--
+--     -   'Vulkan.Extensions.VK_ARM_data_graph.PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_OPTICAL_FLOW_ARM'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DATA_GRAPH_OPTICAL_FLOW_IMAGE_FORMAT_INFO_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DATA_GRAPH_OPTICAL_FLOW_IMAGE_FORMAT_PROPERTIES_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_OPTICAL_FLOW_CREATE_INFO_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_OPTICAL_FLOW_DISPATCH_INFO_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_RESOURCE_INFO_IMAGE_LAYOUT_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SINGLE_NODE_CONNECTION_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SINGLE_NODE_CREATE_INFO_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_OPTICAL_FLOW_FEATURES_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_OPTICAL_FLOW_PROPERTIES_ARM'
+--
+-- == Version History
+--
+-- -   Revision 1, 2026-04-08 (Kevin Petit)
+--
+--     -   Internal revisions
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_ARM_data_graph_optical_flow Vulkan Specification>.
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_ARM_data_graph_optical_flow  ( getPhysicalDeviceQueueFamilyDataGraphOpticalFlowImageFormatsARM
+                                                         , DataGraphPipelineResourceInfoImageLayoutARM(..)
+                                                         , DataGraphPipelineSingleNodeConnectionARM(..)
+                                                         , PhysicalDeviceDataGraphOpticalFlowFeaturesARM(..)
+                                                         , QueueFamilyDataGraphOpticalFlowPropertiesARM(..)
+                                                         , DataGraphOpticalFlowImageFormatInfoARM(..)
+                                                         , DataGraphOpticalFlowImageFormatPropertiesARM(..)
+                                                         , DataGraphPipelineSingleNodeCreateInfoARM(..)
+                                                         , DataGraphPipelineOpticalFlowCreateInfoARM(..)
+                                                         , DataGraphPipelineOpticalFlowDispatchInfoARM(..)
+                                                         , DataGraphOpticalFlowGridSizeFlagsARM
+                                                         , DataGraphOpticalFlowGridSizeFlagBitsARM( DATA_GRAPH_OPTICAL_FLOW_GRID_SIZE_UNKNOWN_ARM
+                                                                                                  , DATA_GRAPH_OPTICAL_FLOW_GRID_SIZE_1X1_BIT_ARM
+                                                                                                  , DATA_GRAPH_OPTICAL_FLOW_GRID_SIZE_2X2_BIT_ARM
+                                                                                                  , DATA_GRAPH_OPTICAL_FLOW_GRID_SIZE_4X4_BIT_ARM
+                                                                                                  , DATA_GRAPH_OPTICAL_FLOW_GRID_SIZE_8X8_BIT_ARM
+                                                                                                  , ..
+                                                                                                  )
+                                                         , DataGraphOpticalFlowImageUsageFlagsARM
+                                                         , DataGraphOpticalFlowImageUsageFlagBitsARM( DATA_GRAPH_OPTICAL_FLOW_IMAGE_USAGE_UNKNOWN_ARM
+                                                                                                    , DATA_GRAPH_OPTICAL_FLOW_IMAGE_USAGE_INPUT_BIT_ARM
+                                                                                                    , DATA_GRAPH_OPTICAL_FLOW_IMAGE_USAGE_OUTPUT_BIT_ARM
+                                                                                                    , DATA_GRAPH_OPTICAL_FLOW_IMAGE_USAGE_HINT_BIT_ARM
+                                                                                                    , DATA_GRAPH_OPTICAL_FLOW_IMAGE_USAGE_COST_BIT_ARM
+                                                                                                    , ..
+                                                                                                    )
+                                                         , DataGraphOpticalFlowPerformanceLevelARM( DATA_GRAPH_OPTICAL_FLOW_PERFORMANCE_LEVEL_UNKNOWN_ARM
+                                                                                                  , DATA_GRAPH_OPTICAL_FLOW_PERFORMANCE_LEVEL_SLOW_ARM
+                                                                                                  , DATA_GRAPH_OPTICAL_FLOW_PERFORMANCE_LEVEL_MEDIUM_ARM
+                                                                                                  , DATA_GRAPH_OPTICAL_FLOW_PERFORMANCE_LEVEL_FAST_ARM
+                                                                                                  , ..
+                                                                                                  )
+                                                         , DataGraphPipelineNodeConnectionTypeARM( DATA_GRAPH_PIPELINE_NODE_CONNECTION_TYPE_OPTICAL_FLOW_COST_ARM
+                                                                                                 , DATA_GRAPH_PIPELINE_NODE_CONNECTION_TYPE_OPTICAL_FLOW_FLOW_VECTOR_ARM
+                                                                                                 , DATA_GRAPH_PIPELINE_NODE_CONNECTION_TYPE_OPTICAL_FLOW_HINT_ARM
+                                                                                                 , DATA_GRAPH_PIPELINE_NODE_CONNECTION_TYPE_OPTICAL_FLOW_REFERENCE_ARM
+                                                                                                 , DATA_GRAPH_PIPELINE_NODE_CONNECTION_TYPE_OPTICAL_FLOW_INPUT_ARM
+                                                                                                 , ..
+                                                                                                 )
+                                                         , DataGraphPipelineNodeTypeARM( DATA_GRAPH_PIPELINE_NODE_TYPE_OPTICAL_FLOW_ARM
+                                                                                       , ..
+                                                                                       )
+                                                         , DataGraphOpticalFlowCreateFlagsARM
+                                                         , DataGraphOpticalFlowCreateFlagBitsARM( DATA_GRAPH_OPTICAL_FLOW_CREATE_ENABLE_HINT_BIT_ARM
+                                                                                                , DATA_GRAPH_OPTICAL_FLOW_CREATE_ENABLE_COST_BIT_ARM
+                                                                                                , DATA_GRAPH_OPTICAL_FLOW_CREATE_RESERVED_30_BIT_ARM
+                                                                                                , ..
+                                                                                                )
+                                                         , DataGraphOpticalFlowExecuteFlagsARM
+                                                         , DataGraphOpticalFlowExecuteFlagBitsARM( DATA_GRAPH_OPTICAL_FLOW_EXECUTE_DISABLE_TEMPORAL_HINTS_BIT_ARM
+                                                                                                 , DATA_GRAPH_OPTICAL_FLOW_EXECUTE_INPUT_UNCHANGED_BIT_ARM
+                                                                                                 , DATA_GRAPH_OPTICAL_FLOW_EXECUTE_REFERENCE_UNCHANGED_BIT_ARM
+                                                                                                 , DATA_GRAPH_OPTICAL_FLOW_EXECUTE_INPUT_IS_PREVIOUS_REFERENCE_BIT_ARM
+                                                                                                 , DATA_GRAPH_OPTICAL_FLOW_EXECUTE_REFERENCE_IS_PREVIOUS_INPUT_BIT_ARM
+                                                                                                 , ..
+                                                                                                 )
+                                                         , ARM_DATA_GRAPH_OPTICAL_FLOW_SPEC_VERSION
+                                                         , pattern ARM_DATA_GRAPH_OPTICAL_FLOW_SPEC_VERSION
+                                                         , ARM_DATA_GRAPH_OPTICAL_FLOW_EXTENSION_NAME
+                                                         , pattern ARM_DATA_GRAPH_OPTICAL_FLOW_EXTENSION_NAME
+                                                         , PhysicalDeviceDataGraphProcessingEngineARM(..)
+                                                         , PhysicalDeviceDataGraphOperationSupportARM(..)
+                                                         , QueueFamilyDataGraphPropertiesARM(..)
+                                                         , getPhysicalDeviceQueueFamilyDataGraphEngineOperationPropertiesARM
+                                                         , DataGraphPipelineSessionCreateFlagBitsARM(..)
+                                                         , DataGraphPipelineSessionCreateFlagsARM
+                                                         , DataGraphPipelineSessionBindPointARM(..)
+                                                         , PhysicalDeviceDataGraphProcessingEngineTypeARM(..)
+                                                         , PhysicalDeviceDataGraphOperationTypeARM(..)
+                                                         , MAX_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_SET_NAME_SIZE_ARM
+                                                         , pattern MAX_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_SET_NAME_SIZE_ARM
+                                                         ) where
+
+import Data.Bits (Bits)
+import Data.Bits (FiniteBits)
+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 GHC.Show (showsPrec)
+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.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 (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.NamedType ((:::))
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.Core10.FundamentalTypes (Flags)
+import Vulkan.Core10.Enums.Format (Format)
+import Vulkan.Core10.Enums.ImageLayout (ImageLayout)
+import Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceQueueFamilyDataGraphOpticalFlowImageFormatsARM))
+import Vulkan.Core10.Handles (PhysicalDevice)
+import Vulkan.Core10.Handles (PhysicalDevice(..))
+import Vulkan.Core10.Handles (PhysicalDevice(PhysicalDevice))
+import Vulkan.Core10.Handles (PhysicalDevice_T)
+import Vulkan.Extensions.VK_ARM_data_graph (QueueFamilyDataGraphPropertiesARM)
+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_DATA_GRAPH_OPTICAL_FLOW_IMAGE_FORMAT_INFO_ARM))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DATA_GRAPH_OPTICAL_FLOW_IMAGE_FORMAT_PROPERTIES_ARM))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_OPTICAL_FLOW_CREATE_INFO_ARM))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_OPTICAL_FLOW_DISPATCH_INFO_ARM))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_RESOURCE_INFO_IMAGE_LAYOUT_ARM))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SINGLE_NODE_CONNECTION_ARM))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SINGLE_NODE_CREATE_INFO_ARM))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_OPTICAL_FLOW_FEATURES_ARM))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_OPTICAL_FLOW_PROPERTIES_ARM))
+import Vulkan.Core10.Enums.Result (Result(SUCCESS))
+import Vulkan.Extensions.VK_ARM_data_graph_instruction_set_tosa (getPhysicalDeviceQueueFamilyDataGraphEngineOperationPropertiesARM)
+import Vulkan.Extensions.VK_ARM_data_graph (DataGraphPipelineSessionBindPointARM(..))
+import Vulkan.Extensions.VK_ARM_data_graph (DataGraphPipelineSessionCreateFlagBitsARM(..))
+import Vulkan.Extensions.VK_ARM_data_graph (DataGraphPipelineSessionCreateFlagsARM)
+import Vulkan.Core10.APIConstants (MAX_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_SET_NAME_SIZE_ARM)
+import Vulkan.Extensions.VK_ARM_data_graph (PhysicalDeviceDataGraphOperationSupportARM(..))
+import Vulkan.Extensions.VK_ARM_data_graph (PhysicalDeviceDataGraphOperationTypeARM(..))
+import Vulkan.Extensions.VK_ARM_data_graph (PhysicalDeviceDataGraphProcessingEngineARM(..))
+import Vulkan.Extensions.VK_ARM_data_graph (PhysicalDeviceDataGraphProcessingEngineTypeARM(..))
+import Vulkan.Extensions.VK_ARM_data_graph (QueueFamilyDataGraphPropertiesARM(..))
+import Vulkan.Core10.APIConstants (pattern MAX_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_SET_NAME_SIZE_ARM)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetPhysicalDeviceQueueFamilyDataGraphOpticalFlowImageFormatsARM
+  :: FunPtr (Ptr PhysicalDevice_T -> Word32 -> Ptr QueueFamilyDataGraphPropertiesARM -> Ptr DataGraphOpticalFlowImageFormatInfoARM -> Ptr Word32 -> Ptr DataGraphOpticalFlowImageFormatPropertiesARM -> IO Result) -> Ptr PhysicalDevice_T -> Word32 -> Ptr QueueFamilyDataGraphPropertiesARM -> Ptr DataGraphOpticalFlowImageFormatInfoARM -> Ptr Word32 -> Ptr DataGraphOpticalFlowImageFormatPropertiesARM -> IO Result
+
+-- | vkGetPhysicalDeviceQueueFamilyDataGraphOpticalFlowImageFormatsARM -
+-- Query image formats for data graph optical flow
+--
+-- = Description
+--
+-- If @pImageFormatProperties@ is @NULL@, then the number of optical flow
+-- properties supported for the given @physicalDevice@ is returned in
+-- @pFormatCount@. Otherwise, @pFormatCount@ /must/ point to a variable set
+-- by the user to the number of elements in the @pImageFormatProperties@
+-- array, and on return the variable is overwritten with the number of
+-- values actually written to @pImageFormatProperties@. If the value of
+-- @pFormatCount@ is less than the number of optical flow properties
+-- supported, at most @pFormatCount@ values will be written to
+-- @pImageFormatProperties@, and 'Vulkan.Core10.Enums.Result.INCOMPLETE'
+-- will be returned instead of 'Vulkan.Core10.Enums.Result.SUCCESS', to
+-- indicate that not all the available values were returned. Before
+-- creating an image to be used as a optical flow image, obtain the
+-- supported image creation parameters by querying with
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFormatProperties2'
+-- and
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'
+-- using one of the reported formats and adding
+-- 'DataGraphOpticalFlowImageFormatInfoARM' to the @pNext@ chain of
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceImageFormatInfo2'.
+-- When querying the parameters with
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'
+-- for images used for optical flow operations, the
+-- 'DataGraphOpticalFlowImageFormatInfoARM'::@usage@ field should contain
+-- one or more of the bits defined in
+-- 'DataGraphOpticalFlowImageUsageFlagBitsARM'.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkGetPhysicalDeviceQueueFamilyDataGraphOpticalFlowImageFormatsARM-pQueueFamilyDataGraphProperties-09965#
+--     @pQueueFamilyDataGraphProperties@ /must/ point to a structure whose
+--     @operation@ member has its @name@ member equal to @OpticalFlow@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkGetPhysicalDeviceQueueFamilyDataGraphOpticalFlowImageFormatsARM-physicalDevice-parameter#
+--     @physicalDevice@ /must/ be a valid
+--     'Vulkan.Core10.Handles.PhysicalDevice' handle
+--
+-- -   #VUID-vkGetPhysicalDeviceQueueFamilyDataGraphOpticalFlowImageFormatsARM-pQueueFamilyDataGraphProperties-parameter#
+--     @pQueueFamilyDataGraphProperties@ /must/ be a valid pointer to a
+--     valid
+--     'Vulkan.Extensions.VK_ARM_data_graph.QueueFamilyDataGraphPropertiesARM'
+--     structure
+--
+-- -   #VUID-vkGetPhysicalDeviceQueueFamilyDataGraphOpticalFlowImageFormatsARM-pOpticalFlowImageFormatInfo-parameter#
+--     @pOpticalFlowImageFormatInfo@ /must/ be a valid pointer to a valid
+--     'DataGraphOpticalFlowImageFormatInfoARM' structure
+--
+-- -   #VUID-vkGetPhysicalDeviceQueueFamilyDataGraphOpticalFlowImageFormatsARM-pFormatCount-parameter#
+--     @pFormatCount@ /must/ be a valid pointer to a @uint32_t@ value
+--
+-- -   #VUID-vkGetPhysicalDeviceQueueFamilyDataGraphOpticalFlowImageFormatsARM-pImageFormatProperties-parameter#
+--     If the value referenced by @pFormatCount@ is not @0@, and
+--     @pImageFormatProperties@ is not @NULL@, @pImageFormatProperties@
+--     /must/ be a valid pointer to an array of @pFormatCount@
+--     'DataGraphOpticalFlowImageFormatPropertiesARM' structures
+--
+-- == Return Codes
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
+--
+--     -   'Vulkan.Core10.Enums.Result.INCOMPLETE'
+--
+--     -   '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_EXTENSION_NOT_PRESENT'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_FORMAT_NOT_SUPPORTED'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_INITIALIZATION_FAILED'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- 'Vulkan.Core10.Enums.Format.FORMAT_B8G8R8A8_UNORM',
+-- 'Vulkan.Core10.Enums.Format.FORMAT_R8G8B8A8_UNORM',
+-- 'Vulkan.Core10.Enums.Format.FORMAT_R8G8B8_UNORM',
+-- 'Vulkan.Core10.Enums.Format.FORMAT_B8G8R8_UNORM',
+-- 'Vulkan.Core10.Enums.Format.FORMAT_R8_UNORM', and
+-- 'Vulkan.Core10.Enums.Format.FORMAT_B10G11R11_UFLOAT_PACK32' are
+-- initially supported for images with
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#opticalflow-usageARM optical flow usage>
+-- 'DATA_GRAPH_OPTICAL_FLOW_IMAGE_USAGE_INPUT_BIT_ARM'.
+--
+-- 'Vulkan.Core10.Enums.Format.FORMAT_R16G16_SFLOAT' is initially supported
+-- for images with
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#opticalflow-usageARM optical flow usage>
+-- 'DATA_GRAPH_OPTICAL_FLOW_IMAGE_USAGE_OUTPUT_BIT_ARM' and
+-- 'DATA_GRAPH_OPTICAL_FLOW_IMAGE_USAGE_HINT_BIT_ARM'.
+--
+-- 'Vulkan.Core10.Enums.Format.FORMAT_R16_UINT' is initially supported for
+-- images with
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#opticalflow-usageARM optical flow usage>
+-- 'DATA_GRAPH_OPTICAL_FLOW_IMAGE_USAGE_COST_BIT_ARM'.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_data_graph_optical_flow VK_ARM_data_graph_optical_flow>,
+-- 'DataGraphOpticalFlowImageFormatInfoARM',
+-- 'DataGraphOpticalFlowImageFormatPropertiesARM',
+-- 'Vulkan.Core10.Handles.PhysicalDevice',
+-- 'Vulkan.Extensions.VK_ARM_data_graph.QueueFamilyDataGraphPropertiesARM'
+getPhysicalDeviceQueueFamilyDataGraphOpticalFlowImageFormatsARM :: forall io
+                                                                 . (MonadIO io)
+                                                                => -- | @physicalDevice@ is the physical device being queried.
+                                                                   PhysicalDevice
+                                                                -> -- | @queueFamilyIndex@ is the index of the queue family being queried.
+                                                                   ("queueFamilyIndex" ::: Word32)
+                                                                -> -- | @pQueueFamilyDataGraphProperties@ is a pointer to a
+                                                                   -- 'Vulkan.Extensions.VK_ARM_data_graph.QueueFamilyDataGraphPropertiesARM'
+                                                                   -- structure that selects the processing engine and operation set for which
+                                                                   -- the properties are queried.
+                                                                   QueueFamilyDataGraphPropertiesARM
+                                                                -> -- | @pOpticalFlowImageFormatInfo@ is a pointer to a
+                                                                   -- 'DataGraphOpticalFlowImageFormatInfoARM' structure specifying the
+                                                                   -- optical flow usage for which information is returned.
+                                                                   DataGraphOpticalFlowImageFormatInfoARM
+                                                                -> io (Result, ("imageFormatProperties" ::: Vector DataGraphOpticalFlowImageFormatPropertiesARM))
+getPhysicalDeviceQueueFamilyDataGraphOpticalFlowImageFormatsARM physicalDevice
+                                                                  queueFamilyIndex
+                                                                  queueFamilyDataGraphProperties
+                                                                  opticalFlowImageFormatInfo = liftIO . evalContT $ do
+  let vkGetPhysicalDeviceQueueFamilyDataGraphOpticalFlowImageFormatsARMPtr = pVkGetPhysicalDeviceQueueFamilyDataGraphOpticalFlowImageFormatsARM (case physicalDevice of PhysicalDevice{instanceCmds} -> instanceCmds)
+  lift $ unless (vkGetPhysicalDeviceQueueFamilyDataGraphOpticalFlowImageFormatsARMPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetPhysicalDeviceQueueFamilyDataGraphOpticalFlowImageFormatsARM is null" Nothing Nothing
+  let vkGetPhysicalDeviceQueueFamilyDataGraphOpticalFlowImageFormatsARM' = mkVkGetPhysicalDeviceQueueFamilyDataGraphOpticalFlowImageFormatsARM vkGetPhysicalDeviceQueueFamilyDataGraphOpticalFlowImageFormatsARMPtr
+  let physicalDevice' = physicalDeviceHandle (physicalDevice)
+  pQueueFamilyDataGraphProperties <- ContT $ withCStruct (queueFamilyDataGraphProperties)
+  pOpticalFlowImageFormatInfo <- ContT $ withCStruct (opticalFlowImageFormatInfo)
+  pPFormatCount <- ContT $ bracket (callocBytes @Word32 4) free
+  r <- lift $ traceAroundEvent "vkGetPhysicalDeviceQueueFamilyDataGraphOpticalFlowImageFormatsARM" (vkGetPhysicalDeviceQueueFamilyDataGraphOpticalFlowImageFormatsARM'
+                                                                                                      physicalDevice'
+                                                                                                      (queueFamilyIndex)
+                                                                                                      pQueueFamilyDataGraphProperties
+                                                                                                      pOpticalFlowImageFormatInfo
+                                                                                                      (pPFormatCount)
+                                                                                                      (nullPtr))
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+  pFormatCount <- lift $ peek @Word32 pPFormatCount
+  pPImageFormatProperties <- ContT $ bracket (callocBytes @DataGraphOpticalFlowImageFormatPropertiesARM ((fromIntegral (pFormatCount)) * 24)) free
+  _ <- traverse (\i -> ContT $ pokeZeroCStruct (pPImageFormatProperties `advancePtrBytes` (i * 24) :: Ptr DataGraphOpticalFlowImageFormatPropertiesARM) . ($ ())) [0..(fromIntegral (pFormatCount)) - 1]
+  r' <- lift $ traceAroundEvent "vkGetPhysicalDeviceQueueFamilyDataGraphOpticalFlowImageFormatsARM" (vkGetPhysicalDeviceQueueFamilyDataGraphOpticalFlowImageFormatsARM'
+                                                                                                       physicalDevice'
+                                                                                                       (queueFamilyIndex)
+                                                                                                       pQueueFamilyDataGraphProperties
+                                                                                                       pOpticalFlowImageFormatInfo
+                                                                                                       (pPFormatCount)
+                                                                                                       ((pPImageFormatProperties)))
+  lift $ when (r' < SUCCESS) (throwIO (VulkanException r'))
+  pFormatCount' <- lift $ peek @Word32 pPFormatCount
+  pImageFormatProperties' <- lift $ generateM (fromIntegral (pFormatCount')) (\i -> peekCStruct @DataGraphOpticalFlowImageFormatPropertiesARM (((pPImageFormatProperties) `advancePtrBytes` (24 * (i)) :: Ptr DataGraphOpticalFlowImageFormatPropertiesARM)))
+  pure $ ((r'), pImageFormatProperties')
+
+
+-- | VkDataGraphPipelineResourceInfoImageLayoutARM - Structure specifying
+-- parameters of a graph pipeline image resource
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Extensions.VK_ARM_data_graph.DataGraphPipelineResourceInfoARM'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_data_graph_optical_flow VK_ARM_data_graph_optical_flow>,
+-- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data DataGraphPipelineResourceInfoImageLayoutARM = DataGraphPipelineResourceInfoImageLayoutARM
+  { -- | @layout@ specifies the layout that the image subresource accessible from
+    -- the view provided as a graph pipeline resource /must/ be in at the time
+    -- where the graph pipeline being created is dispatched.
+    --
+    -- #VUID-VkDataGraphPipelineResourceInfoImageLayoutARM-layout-parameter#
+    -- @layout@ /must/ be a valid 'Vulkan.Core10.Enums.ImageLayout.ImageLayout'
+    -- value
+    layout :: ImageLayout }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (DataGraphPipelineResourceInfoImageLayoutARM)
+#endif
+deriving instance Show DataGraphPipelineResourceInfoImageLayoutARM
+
+instance ToCStruct DataGraphPipelineResourceInfoImageLayoutARM where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p DataGraphPipelineResourceInfoImageLayoutARM{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_RESOURCE_INFO_IMAGE_LAYOUT_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr ImageLayout)) (layout)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_RESOURCE_INFO_IMAGE_LAYOUT_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr ImageLayout)) (zero)
+    f
+
+instance FromCStruct DataGraphPipelineResourceInfoImageLayoutARM where
+  peekCStruct p = do
+    layout <- peek @ImageLayout ((p `plusPtr` 16 :: Ptr ImageLayout))
+    pure $ DataGraphPipelineResourceInfoImageLayoutARM
+             layout
+
+instance Storable DataGraphPipelineResourceInfoImageLayoutARM where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero DataGraphPipelineResourceInfoImageLayoutARM where
+  zero = DataGraphPipelineResourceInfoImageLayoutARM
+           zero
+
+
+-- | VkDataGraphPipelineSingleNodeConnectionARM - Structure describing a
+-- single connection between a data graph node and the pipeline layout of a
+-- graph pipeline
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_data_graph_optical_flow VK_ARM_data_graph_optical_flow>,
+-- 'DataGraphPipelineNodeConnectionTypeARM',
+-- 'DataGraphPipelineSingleNodeCreateInfoARM',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data DataGraphPipelineSingleNodeConnectionARM = DataGraphPipelineSingleNodeConnectionARM
+  { -- | @set@ is the descriptor set number of the graph pipeline layout resource
+    -- to be connected to this connection point.
+    set :: Word32
+  , -- | @binding@ is the binding number of the graph pipeline layout resource to
+    -- be connected to this connection point.
+    binding :: Word32
+  , -- | @connection@ is a 'DataGraphPipelineNodeConnectionTypeARM' specifying
+    -- the connection point to link to a graph pipeline layout resource.
+    --
+    -- #VUID-VkDataGraphPipelineSingleNodeConnectionARM-connection-parameter#
+    -- @connection@ /must/ be a valid 'DataGraphPipelineNodeConnectionTypeARM'
+    -- value
+    connection :: DataGraphPipelineNodeConnectionTypeARM
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (DataGraphPipelineSingleNodeConnectionARM)
+#endif
+deriving instance Show DataGraphPipelineSingleNodeConnectionARM
+
+instance ToCStruct DataGraphPipelineSingleNodeConnectionARM where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p DataGraphPipelineSingleNodeConnectionARM{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SINGLE_NODE_CONNECTION_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (set)
+    poke ((p `plusPtr` 20 :: Ptr Word32)) (binding)
+    poke ((p `plusPtr` 24 :: Ptr DataGraphPipelineNodeConnectionTypeARM)) (connection)
+    f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SINGLE_NODE_CONNECTION_ARM)
+    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 DataGraphPipelineNodeConnectionTypeARM)) (zero)
+    f
+
+instance FromCStruct DataGraphPipelineSingleNodeConnectionARM where
+  peekCStruct p = do
+    set <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    binding <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
+    connection <- peek @DataGraphPipelineNodeConnectionTypeARM ((p `plusPtr` 24 :: Ptr DataGraphPipelineNodeConnectionTypeARM))
+    pure $ DataGraphPipelineSingleNodeConnectionARM
+             set binding connection
+
+instance Storable DataGraphPipelineSingleNodeConnectionARM where
+  sizeOf ~_ = 32
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero DataGraphPipelineSingleNodeConnectionARM where
+  zero = DataGraphPipelineSingleNodeConnectionARM
+           zero
+           zero
+           zero
+
+
+-- | VkPhysicalDeviceDataGraphOpticalFlowFeaturesARM - Structure describing
+-- the data graph optical flow features supported by the implementation
+--
+-- = Members
+--
+-- This structure describes the following feature: * @sType@ is a
+-- 'Vulkan.Core10.Enums.StructureType.StructureType' value identifying this
+-- structure. * @pNext@ is @NULL@ or a pointer to a structure extending
+-- this structure. * #features-dataGraphOpticalFlow# @dataGraphOpticalFlow@
+-- indicates whether the implementation supports optical flow graph
+-- pipelines.
+--
+-- If the 'PhysicalDeviceDataGraphOpticalFlowFeaturesARM' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceDataGraphOpticalFlowFeaturesARM', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_data_graph_optical_flow VK_ARM_data_graph_optical_flow>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceDataGraphOpticalFlowFeaturesARM = PhysicalDeviceDataGraphOpticalFlowFeaturesARM
+  { -- No documentation found for Nested "VkPhysicalDeviceDataGraphOpticalFlowFeaturesARM" "dataGraphOpticalFlow"
+    dataGraphOpticalFlow :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceDataGraphOpticalFlowFeaturesARM)
+#endif
+deriving instance Show PhysicalDeviceDataGraphOpticalFlowFeaturesARM
+
+instance ToCStruct PhysicalDeviceDataGraphOpticalFlowFeaturesARM where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceDataGraphOpticalFlowFeaturesARM{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_OPTICAL_FLOW_FEATURES_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (dataGraphOpticalFlow))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_OPTICAL_FLOW_FEATURES_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceDataGraphOpticalFlowFeaturesARM where
+  peekCStruct p = do
+    dataGraphOpticalFlow <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDeviceDataGraphOpticalFlowFeaturesARM
+             (bool32ToBool dataGraphOpticalFlow)
+
+instance Storable PhysicalDeviceDataGraphOpticalFlowFeaturesARM where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceDataGraphOpticalFlowFeaturesARM where
+  zero = PhysicalDeviceDataGraphOpticalFlowFeaturesARM
+           zero
+
+
+-- | VkQueueFamilyDataGraphOpticalFlowPropertiesARM - Structure describing
+-- optical flow properties of a processing engine and operation set for a
+-- specific queue family of a physical device
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_data_graph_optical_flow VK_ARM_data_graph_optical_flow>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'DataGraphOpticalFlowGridSizeFlagsARM',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data QueueFamilyDataGraphOpticalFlowPropertiesARM = QueueFamilyDataGraphOpticalFlowPropertiesARM
+  { -- | #limits-supportedOutputGridSizesARM# @supportedOutputGridSizes@ are the
+    -- supported 'DataGraphOpticalFlowGridSizeFlagsARM' which /can/ be
+    -- specified in
+    -- 'DataGraphPipelineOpticalFlowCreateInfoARM'::@outputGridSize@.
+    supportedOutputGridSizes :: DataGraphOpticalFlowGridSizeFlagsARM
+  , -- | #limits-supportedHintGridSizesARM# @supportedHintGridSizes@ are the
+    -- supported 'DataGraphOpticalFlowGridSizeFlagsARM' which /can/ be
+    -- specified in
+    -- 'DataGraphPipelineOpticalFlowCreateInfoARM'::@hintGridSize@.
+    supportedHintGridSizes :: DataGraphOpticalFlowGridSizeFlagsARM
+  , -- | #limits-hintSupportedARM# @hintSupported@ is a boolean describing
+    -- whether using hint flow vector map is supported in an optical flow graph
+    -- pipeline.
+    hintSupported :: Bool
+  , -- | #limits-costSupportedARM# @costSupported@ is a boolean describing
+    -- whether cost map generation is supported in an optical flow graph
+    -- pipeline.
+    costSupported :: Bool
+  , -- | #limits-minWidthARM# @minWidth@ is the minimum width in pixels for
+    -- images used in an optical flow graph pipeline.
+    minWidth :: Word32
+  , -- | #limits-minHeightARM# @minHeight@ is the minimum height in pixels for
+    -- images used in an optical flow graph pipeline.
+    minHeight :: Word32
+  , -- | #limits-maxWidthARM# @maxWidth@ is the maximum width in pixels for
+    -- images used in an optical flow graph pipeline.
+    maxWidth :: Word32
+  , -- | #limits-maxHeightARM# @maxHeight@ is the maximum height in pixels for
+    -- images used in an optical flow graph pipeline.
+    maxHeight :: Word32
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (QueueFamilyDataGraphOpticalFlowPropertiesARM)
+#endif
+deriving instance Show QueueFamilyDataGraphOpticalFlowPropertiesARM
+
+instance ToCStruct QueueFamilyDataGraphOpticalFlowPropertiesARM where
+  withCStruct x f = allocaBytes 48 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p QueueFamilyDataGraphOpticalFlowPropertiesARM{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_OPTICAL_FLOW_PROPERTIES_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr DataGraphOpticalFlowGridSizeFlagsARM)) (supportedOutputGridSizes)
+    poke ((p `plusPtr` 20 :: Ptr DataGraphOpticalFlowGridSizeFlagsARM)) (supportedHintGridSizes)
+    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (hintSupported))
+    poke ((p `plusPtr` 28 :: Ptr Bool32)) (boolToBool32 (costSupported))
+    poke ((p `plusPtr` 32 :: Ptr Word32)) (minWidth)
+    poke ((p `plusPtr` 36 :: Ptr Word32)) (minHeight)
+    poke ((p `plusPtr` 40 :: Ptr Word32)) (maxWidth)
+    poke ((p `plusPtr` 44 :: Ptr Word32)) (maxHeight)
+    f
+  cStructSize = 48
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_OPTICAL_FLOW_PROPERTIES_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr DataGraphOpticalFlowGridSizeFlagsARM)) (zero)
+    poke ((p `plusPtr` 20 :: Ptr DataGraphOpticalFlowGridSizeFlagsARM)) (zero)
+    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 28 :: Ptr Bool32)) (boolToBool32 (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)
+    f
+
+instance FromCStruct QueueFamilyDataGraphOpticalFlowPropertiesARM where
+  peekCStruct p = do
+    supportedOutputGridSizes <- peek @DataGraphOpticalFlowGridSizeFlagsARM ((p `plusPtr` 16 :: Ptr DataGraphOpticalFlowGridSizeFlagsARM))
+    supportedHintGridSizes <- peek @DataGraphOpticalFlowGridSizeFlagsARM ((p `plusPtr` 20 :: Ptr DataGraphOpticalFlowGridSizeFlagsARM))
+    hintSupported <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))
+    costSupported <- peek @Bool32 ((p `plusPtr` 28 :: Ptr Bool32))
+    minWidth <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))
+    minHeight <- peek @Word32 ((p `plusPtr` 36 :: Ptr Word32))
+    maxWidth <- peek @Word32 ((p `plusPtr` 40 :: Ptr Word32))
+    maxHeight <- peek @Word32 ((p `plusPtr` 44 :: Ptr Word32))
+    pure $ QueueFamilyDataGraphOpticalFlowPropertiesARM
+             supportedOutputGridSizes
+             supportedHintGridSizes
+             (bool32ToBool hintSupported)
+             (bool32ToBool costSupported)
+             minWidth
+             minHeight
+             maxWidth
+             maxHeight
+
+instance Storable QueueFamilyDataGraphOpticalFlowPropertiesARM where
+  sizeOf ~_ = 48
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero QueueFamilyDataGraphOpticalFlowPropertiesARM where
+  zero = QueueFamilyDataGraphOpticalFlowPropertiesARM
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkDataGraphOpticalFlowImageFormatInfoARM - Structure describing data
+-- graph optical flow image format info
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Image.ImageCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceImageFormatInfo2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_data_graph_optical_flow VK_ARM_data_graph_optical_flow>,
+-- 'DataGraphOpticalFlowImageUsageFlagsARM',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'getPhysicalDeviceQueueFamilyDataGraphOpticalFlowImageFormatsARM'
+data DataGraphOpticalFlowImageFormatInfoARM = DataGraphOpticalFlowImageFormatInfoARM
+  { -- | #opticalflow-usageARM# @usage@ is a bitmask of
+    -- 'DataGraphOpticalFlowImageUsageFlagBitsARM' describing the intended
+    -- optical flow usage of the image.
+    --
+    -- #VUID-VkDataGraphOpticalFlowImageFormatInfoARM-usage-parameter# @usage@
+    -- /must/ be a valid combination of
+    -- 'DataGraphOpticalFlowImageUsageFlagBitsARM' values
+    --
+    -- #VUID-VkDataGraphOpticalFlowImageFormatInfoARM-usage-requiredbitmask#
+    -- @usage@ /must/ not be @0@
+    usage :: DataGraphOpticalFlowImageUsageFlagsARM }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (DataGraphOpticalFlowImageFormatInfoARM)
+#endif
+deriving instance Show DataGraphOpticalFlowImageFormatInfoARM
+
+instance ToCStruct DataGraphOpticalFlowImageFormatInfoARM where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p DataGraphOpticalFlowImageFormatInfoARM{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DATA_GRAPH_OPTICAL_FLOW_IMAGE_FORMAT_INFO_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr DataGraphOpticalFlowImageUsageFlagsARM)) (usage)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DATA_GRAPH_OPTICAL_FLOW_IMAGE_FORMAT_INFO_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr DataGraphOpticalFlowImageUsageFlagsARM)) (zero)
+    f
+
+instance FromCStruct DataGraphOpticalFlowImageFormatInfoARM where
+  peekCStruct p = do
+    usage <- peek @DataGraphOpticalFlowImageUsageFlagsARM ((p `plusPtr` 16 :: Ptr DataGraphOpticalFlowImageUsageFlagsARM))
+    pure $ DataGraphOpticalFlowImageFormatInfoARM
+             usage
+
+instance Storable DataGraphOpticalFlowImageFormatInfoARM where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero DataGraphOpticalFlowImageFormatInfoARM where
+  zero = DataGraphOpticalFlowImageFormatInfoARM
+           zero
+
+
+-- | VkDataGraphOpticalFlowImageFormatPropertiesARM - Structure describing
+-- properties of an optical flow image format
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_data_graph_optical_flow VK_ARM_data_graph_optical_flow>,
+-- 'Vulkan.Core10.Enums.Format.Format',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'getPhysicalDeviceQueueFamilyDataGraphOpticalFlowImageFormatsARM'
+data DataGraphOpticalFlowImageFormatPropertiesARM = DataGraphOpticalFlowImageFormatPropertiesARM
+  { -- | #opticalflow-formatARM# @format@ is a
+    -- 'Vulkan.Core10.Enums.Format.Format' that specifies the format that /can/
+    -- be used with the specified optical flow image usages.
+    format :: Format }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (DataGraphOpticalFlowImageFormatPropertiesARM)
+#endif
+deriving instance Show DataGraphOpticalFlowImageFormatPropertiesARM
+
+instance ToCStruct DataGraphOpticalFlowImageFormatPropertiesARM where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p DataGraphOpticalFlowImageFormatPropertiesARM{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DATA_GRAPH_OPTICAL_FLOW_IMAGE_FORMAT_PROPERTIES_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Format)) (format)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DATA_GRAPH_OPTICAL_FLOW_IMAGE_FORMAT_PROPERTIES_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Format)) (zero)
+    f
+
+instance FromCStruct DataGraphOpticalFlowImageFormatPropertiesARM where
+  peekCStruct p = do
+    format <- peek @Format ((p `plusPtr` 16 :: Ptr Format))
+    pure $ DataGraphOpticalFlowImageFormatPropertiesARM
+             format
+
+instance Storable DataGraphOpticalFlowImageFormatPropertiesARM where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero DataGraphOpticalFlowImageFormatPropertiesARM where
+  zero = DataGraphOpticalFlowImageFormatPropertiesARM
+           zero
+
+
+-- | VkDataGraphPipelineSingleNodeCreateInfoARM - Structure specifying
+-- parameters of a newly-created single fixed-function node graph pipeline
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkDataGraphPipelineSingleNodeCreateInfoARM-nodeType-09963# If
+--     @nodeType@ is 'DATA_GRAPH_PIPELINE_NODE_TYPE_OPTICAL_FLOW_ARM', then
+--     a 'DataGraphPipelineOpticalFlowCreateInfoARM' structure /must/ be
+--     included in the @pNext@ chain of this structure
+--
+-- -   #VUID-VkDataGraphPipelineSingleNodeCreateInfoARM-nodeType-09978# If
+--     @nodeType@ is 'DATA_GRAPH_PIPELINE_NODE_TYPE_OPTICAL_FLOW_ARM', then
+--     one and only 'DataGraphPipelineSingleNodeConnectionARM' structure
+--     /must/ be present in the @pConnections@ array for each of the
+--     following values of its @connection@ member:
+--
+--     -   'DATA_GRAPH_PIPELINE_NODE_CONNECTION_TYPE_OPTICAL_FLOW_INPUT_ARM'
+--
+--     -   'DATA_GRAPH_PIPELINE_NODE_CONNECTION_TYPE_OPTICAL_FLOW_REFERENCE_ARM'
+--
+--     -   'DATA_GRAPH_PIPELINE_NODE_CONNECTION_TYPE_OPTICAL_FLOW_FLOW_VECTOR_ARM'
+--
+-- -   #VUID-VkDataGraphPipelineSingleNodeCreateInfoARM-nodeType-09979# If
+--     @nodeType@ is 'DATA_GRAPH_PIPELINE_NODE_TYPE_OPTICAL_FLOW_ARM' and
+--     'DataGraphPipelineOpticalFlowCreateInfoARM'::@hintGridSize@ is not
+--     0, then one and only 'DataGraphPipelineSingleNodeConnectionARM'
+--     structure whose @connection@ member is
+--     'DATA_GRAPH_PIPELINE_NODE_CONNECTION_TYPE_OPTICAL_FLOW_HINT_ARM'
+--     /must/ be present in the @pConnections@ array
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkDataGraphPipelineSingleNodeCreateInfoARM-sType-sType#
+--     @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SINGLE_NODE_CREATE_INFO_ARM'
+--
+-- -   #VUID-VkDataGraphPipelineSingleNodeCreateInfoARM-nodeType-parameter#
+--     @nodeType@ /must/ be a valid 'DataGraphPipelineNodeTypeARM' value
+--
+-- -   #VUID-VkDataGraphPipelineSingleNodeCreateInfoARM-pConnections-parameter#
+--     @pConnections@ /must/ be a valid pointer to an array of
+--     @connectionCount@ valid 'DataGraphPipelineSingleNodeConnectionARM'
+--     structures
+--
+-- -   #VUID-VkDataGraphPipelineSingleNodeCreateInfoARM-connectionCount-arraylength#
+--     @connectionCount@ /must/ be greater than @0@
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Extensions.VK_ARM_data_graph.DataGraphPipelineCreateInfoARM'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_data_graph_optical_flow VK_ARM_data_graph_optical_flow>,
+-- 'DataGraphPipelineNodeTypeARM',
+-- 'DataGraphPipelineSingleNodeConnectionARM',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data DataGraphPipelineSingleNodeCreateInfoARM = DataGraphPipelineSingleNodeCreateInfoARM
+  { -- | @nodeType@ is a 'DataGraphPipelineNodeTypeARM' describing the type of
+    -- this node.
+    nodeType :: DataGraphPipelineNodeTypeARM
+  , -- | @pConnections@ is a pointer to an array of @connectionCount@
+    -- 'DataGraphPipelineSingleNodeConnectionARM' structures.
+    connections :: Vector DataGraphPipelineSingleNodeConnectionARM
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (DataGraphPipelineSingleNodeCreateInfoARM)
+#endif
+deriving instance Show DataGraphPipelineSingleNodeCreateInfoARM
+
+instance ToCStruct DataGraphPipelineSingleNodeCreateInfoARM where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p DataGraphPipelineSingleNodeCreateInfoARM{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SINGLE_NODE_CREATE_INFO_ARM)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr DataGraphPipelineNodeTypeARM)) (nodeType)
+    lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (connections)) :: Word32))
+    pPConnections' <- ContT $ allocaBytes @DataGraphPipelineSingleNodeConnectionARM ((Data.Vector.length (connections)) * 32)
+    lift $ Data.Vector.imapM_ (\i e -> poke (pPConnections' `plusPtr` (32 * (i)) :: Ptr DataGraphPipelineSingleNodeConnectionARM) (e)) (connections)
+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr DataGraphPipelineSingleNodeConnectionARM))) (pPConnections')
+    lift $ f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SINGLE_NODE_CREATE_INFO_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr DataGraphPipelineNodeTypeARM)) (zero)
+    f
+
+instance FromCStruct DataGraphPipelineSingleNodeCreateInfoARM where
+  peekCStruct p = do
+    nodeType <- peek @DataGraphPipelineNodeTypeARM ((p `plusPtr` 16 :: Ptr DataGraphPipelineNodeTypeARM))
+    connectionCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
+    pConnections <- peek @(Ptr DataGraphPipelineSingleNodeConnectionARM) ((p `plusPtr` 24 :: Ptr (Ptr DataGraphPipelineSingleNodeConnectionARM)))
+    pConnections' <- generateM (fromIntegral connectionCount) (\i -> peekCStruct @DataGraphPipelineSingleNodeConnectionARM ((pConnections `advancePtrBytes` (32 * (i)) :: Ptr DataGraphPipelineSingleNodeConnectionARM)))
+    pure $ DataGraphPipelineSingleNodeCreateInfoARM
+             nodeType pConnections'
+
+instance Zero DataGraphPipelineSingleNodeCreateInfoARM where
+  zero = DataGraphPipelineSingleNodeCreateInfoARM
+           zero
+           mempty
+
+
+-- | VkDataGraphPipelineOpticalFlowCreateInfoARM - Structure specifying the
+-- parameters of a newly-created optical flow graph pipeline
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkDataGraphPipelineOpticalFlowCreateInfoARM-width-09966#
+--     @width@ /must/ be greater than or equal to
+--     'QueueFamilyDataGraphOpticalFlowPropertiesARM'::@minWidth@ and less
+--     than or equal to
+--     'QueueFamilyDataGraphOpticalFlowPropertiesARM'::@maxWidth@
+--
+-- -   #VUID-VkDataGraphPipelineOpticalFlowCreateInfoARM-height-09967#
+--     @height@ /must/ be greater than or equal to
+--     'QueueFamilyDataGraphOpticalFlowPropertiesARM'::@minHeight@ and less
+--     than or equal to
+--     'QueueFamilyDataGraphOpticalFlowPropertiesARM'::@maxHeight@
+--
+-- -   #VUID-VkDataGraphPipelineOpticalFlowCreateInfoARM-imageFormat-09968#
+--     @imageFormat@ /must/ be one of the formats returned by
+--     'getPhysicalDeviceQueueFamilyDataGraphOpticalFlowImageFormatsARM'
+--     for 'DATA_GRAPH_OPTICAL_FLOW_IMAGE_USAGE_INPUT_BIT_ARM'
+--
+-- -   #VUID-VkDataGraphPipelineOpticalFlowCreateInfoARM-flowVectorFormat-09969#
+--     @flowVectorFormat@ /must/ be one of the formats returned by
+--     'getPhysicalDeviceQueueFamilyDataGraphOpticalFlowImageFormatsARM'
+--     for 'DATA_GRAPH_OPTICAL_FLOW_IMAGE_USAGE_OUTPUT_BIT_ARM'
+--
+-- -   #VUID-VkDataGraphPipelineOpticalFlowCreateInfoARM-costFormat-09970#
+--     @costFormat@ /must/ be one of the formats returned by
+--     'getPhysicalDeviceQueueFamilyDataGraphOpticalFlowImageFormatsARM'
+--     for 'DATA_GRAPH_OPTICAL_FLOW_IMAGE_USAGE_COST_BIT_ARM' if
+--     'DATA_GRAPH_OPTICAL_FLOW_CREATE_ENABLE_COST_BIT_ARM' is set in
+--     @flags@
+--
+-- -   #VUID-VkDataGraphPipelineOpticalFlowCreateInfoARM-outputGridSize-09971#
+--     @outputGridSize@ /must/ be exactly one of the bits reported in
+--     'QueueFamilyDataGraphOpticalFlowPropertiesARM'::@supportedOutputGridSizes@
+--
+-- -   #VUID-VkDataGraphPipelineOpticalFlowCreateInfoARM-hintGridSize-09972#
+--     @hintGridSize@ /must/ be 0 or exactly one of the bits reported in
+--     'QueueFamilyDataGraphOpticalFlowPropertiesARM'::@supportedHintGridSizes@
+--     if 'DATA_GRAPH_OPTICAL_FLOW_CREATE_ENABLE_HINT_BIT_ARM' is set in
+--     @flags@
+--
+-- -   #VUID-VkDataGraphPipelineOpticalFlowCreateInfoARM-hintGridSize-09973#
+--     @hintGridSize@ /must/ be the same as @outputGridSize@ if
+--     @hintGridSize@ is not 0
+--
+-- -   #VUID-VkDataGraphPipelineOpticalFlowCreateInfoARM-flags-09974#
+--     'DATA_GRAPH_OPTICAL_FLOW_CREATE_ENABLE_HINT_BIT_ARM' /must/ not be
+--     set in @flags@ if
+--     'QueueFamilyDataGraphOpticalFlowPropertiesARM'::@hintSupported@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-VkDataGraphPipelineOpticalFlowCreateInfoARM-flags-09975#
+--     'DATA_GRAPH_OPTICAL_FLOW_CREATE_ENABLE_COST_BIT_ARM' /must/ not be
+--     set in @flags@ if
+--     'QueueFamilyDataGraphOpticalFlowPropertiesARM'::@costSupported@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkDataGraphPipelineOpticalFlowCreateInfoARM-sType-sType#
+--     @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_OPTICAL_FLOW_CREATE_INFO_ARM'
+--
+-- -   #VUID-VkDataGraphPipelineOpticalFlowCreateInfoARM-imageFormat-parameter#
+--     @imageFormat@ /must/ be a valid 'Vulkan.Core10.Enums.Format.Format'
+--     value
+--
+-- -   #VUID-VkDataGraphPipelineOpticalFlowCreateInfoARM-flowVectorFormat-parameter#
+--     @flowVectorFormat@ /must/ be a valid
+--     'Vulkan.Core10.Enums.Format.Format' value
+--
+-- -   #VUID-VkDataGraphPipelineOpticalFlowCreateInfoARM-costFormat-parameter#
+--     If @costFormat@ is not @0@, @costFormat@ /must/ be a valid
+--     'Vulkan.Core10.Enums.Format.Format' value
+--
+-- -   #VUID-VkDataGraphPipelineOpticalFlowCreateInfoARM-performanceLevel-parameter#
+--     If @performanceLevel@ is not @0@, @performanceLevel@ /must/ be a
+--     valid 'DataGraphOpticalFlowPerformanceLevelARM' value
+--
+-- -   #VUID-VkDataGraphPipelineOpticalFlowCreateInfoARM-flags-parameter#
+--     @flags@ /must/ be a valid combination of
+--     'DataGraphOpticalFlowCreateFlagBitsARM' values
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Extensions.VK_ARM_data_graph.DataGraphPipelineCreateInfoARM'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_data_graph_optical_flow VK_ARM_data_graph_optical_flow>,
+-- 'DataGraphOpticalFlowCreateFlagsARM',
+-- 'DataGraphOpticalFlowGridSizeFlagsARM',
+-- 'DataGraphOpticalFlowPerformanceLevelARM',
+-- 'Vulkan.Core10.Enums.Format.Format',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data DataGraphPipelineOpticalFlowCreateInfoARM = DataGraphPipelineOpticalFlowCreateInfoARM
+  { -- | @width@ is the width in pixels of the input or reference image to be
+    -- bound to this optical flow pipeline.
+    width :: Word32
+  , -- | @height@ is the height in pixels of the input or reference image to be
+    -- bound to this optical flow pipeline.
+    height :: Word32
+  , -- | @imageFormat@ is the 'Vulkan.Core10.Enums.Format.Format' of the input
+    -- and reference image to be bound to this optical flow pipeline.
+    imageFormat :: Format
+  , -- | @flowVectorFormat@ is the 'Vulkan.Core10.Enums.Format.Format' of the
+    -- flow vector maps (output or hint) to be bound to this optical flow
+    -- pipeline.
+    flowVectorFormat :: Format
+  , -- | @costFormat@ is the 'Vulkan.Core10.Enums.Format.Format' of the cost maps
+    -- to be bound to this optical flow pipeline.
+    costFormat :: Format
+  , -- | @outputGridSize@ is exactly one bit of
+    -- 'DataGraphOpticalFlowGridSizeFlagsARM' specifying the grid size of the
+    -- output flow and cost maps to be bound to this optical flow pipeline. The
+    -- size of the output flow and cost maps is a function of the input image
+    -- dimensions and @outputGridSize@ and is calculated as follows:
+    -- OutputWidth = ⌈ @width@ \/ OutputGridWidth ⌉
+    -- OutputHeight = ⌈ @height@ \/ OutputGridHeight ⌉
+    -- where OutputGridWidth and OutputGridHeight are determined by
+    -- @outputGridSize@.
+    outputGridSize :: DataGraphOpticalFlowGridSizeFlagsARM
+  , -- | @hintGridSize@ is one exactly bit of
+    -- 'DataGraphOpticalFlowGridSizeFlagsARM' specifying the grid size of the
+    -- hint flow vector map to be bound to this optical flow pipeline. The size
+    -- of the hint maps is a function of the input image dimensions and
+    -- @hintGridSize@ and is calculated as follows:
+    -- HintWidth = ⌈ @width@ \/ HintGridWidth ⌉
+    -- HintHeight = ⌈ @height@ \/ HintGridHeight ⌉
+    -- where HintGridWidth and HintGridHeight are determined by @hintGridSize@.
+    hintGridSize :: DataGraphOpticalFlowGridSizeFlagsARM
+  , -- | @performanceLevel@ is the 'DataGraphOpticalFlowPerformanceLevelARM' used
+    -- for this optical flow pipeline.
+    performanceLevel :: DataGraphOpticalFlowPerformanceLevelARM
+  , -- | @flags@ are the 'DataGraphOpticalFlowCreateFlagsARM' used for this
+    -- optical flow pipeline.
+    flags :: DataGraphOpticalFlowCreateFlagsARM
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (DataGraphPipelineOpticalFlowCreateInfoARM)
+#endif
+deriving instance Show DataGraphPipelineOpticalFlowCreateInfoARM
+
+instance ToCStruct DataGraphPipelineOpticalFlowCreateInfoARM where
+  withCStruct x f = allocaBytes 56 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p DataGraphPipelineOpticalFlowCreateInfoARM{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_OPTICAL_FLOW_CREATE_INFO_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (width)
+    poke ((p `plusPtr` 20 :: Ptr Word32)) (height)
+    poke ((p `plusPtr` 24 :: Ptr Format)) (imageFormat)
+    poke ((p `plusPtr` 28 :: Ptr Format)) (flowVectorFormat)
+    poke ((p `plusPtr` 32 :: Ptr Format)) (costFormat)
+    poke ((p `plusPtr` 36 :: Ptr DataGraphOpticalFlowGridSizeFlagsARM)) (outputGridSize)
+    poke ((p `plusPtr` 40 :: Ptr DataGraphOpticalFlowGridSizeFlagsARM)) (hintGridSize)
+    poke ((p `plusPtr` 44 :: Ptr DataGraphOpticalFlowPerformanceLevelARM)) (performanceLevel)
+    poke ((p `plusPtr` 48 :: Ptr DataGraphOpticalFlowCreateFlagsARM)) (flags)
+    f
+  cStructSize = 56
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_OPTICAL_FLOW_CREATE_INFO_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 24 :: Ptr Format)) (zero)
+    poke ((p `plusPtr` 28 :: Ptr Format)) (zero)
+    poke ((p `plusPtr` 36 :: Ptr DataGraphOpticalFlowGridSizeFlagsARM)) (zero)
+    poke ((p `plusPtr` 40 :: Ptr DataGraphOpticalFlowGridSizeFlagsARM)) (zero)
+    f
+
+instance FromCStruct DataGraphPipelineOpticalFlowCreateInfoARM where
+  peekCStruct p = do
+    width <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    height <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
+    imageFormat <- peek @Format ((p `plusPtr` 24 :: Ptr Format))
+    flowVectorFormat <- peek @Format ((p `plusPtr` 28 :: Ptr Format))
+    costFormat <- peek @Format ((p `plusPtr` 32 :: Ptr Format))
+    outputGridSize <- peek @DataGraphOpticalFlowGridSizeFlagsARM ((p `plusPtr` 36 :: Ptr DataGraphOpticalFlowGridSizeFlagsARM))
+    hintGridSize <- peek @DataGraphOpticalFlowGridSizeFlagsARM ((p `plusPtr` 40 :: Ptr DataGraphOpticalFlowGridSizeFlagsARM))
+    performanceLevel <- peek @DataGraphOpticalFlowPerformanceLevelARM ((p `plusPtr` 44 :: Ptr DataGraphOpticalFlowPerformanceLevelARM))
+    flags <- peek @DataGraphOpticalFlowCreateFlagsARM ((p `plusPtr` 48 :: Ptr DataGraphOpticalFlowCreateFlagsARM))
+    pure $ DataGraphPipelineOpticalFlowCreateInfoARM
+             width
+             height
+             imageFormat
+             flowVectorFormat
+             costFormat
+             outputGridSize
+             hintGridSize
+             performanceLevel
+             flags
+
+instance Storable DataGraphPipelineOpticalFlowCreateInfoARM where
+  sizeOf ~_ = 56
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero DataGraphPipelineOpticalFlowCreateInfoARM where
+  zero = DataGraphPipelineOpticalFlowCreateInfoARM
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkDataGraphPipelineOpticalFlowDispatchInfoARM - Structure specifying
+-- parameters of a optical flow vector calculation
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Extensions.VK_ARM_data_graph.DataGraphPipelineDispatchInfoARM'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_data_graph_optical_flow VK_ARM_data_graph_optical_flow>,
+-- 'DataGraphOpticalFlowExecuteFlagsARM',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data DataGraphPipelineOpticalFlowDispatchInfoARM = DataGraphPipelineOpticalFlowDispatchInfoARM
+  { -- | @flags@ are the 'DataGraphOpticalFlowExecuteFlagsARM' used for this
+    -- command.
+    --
+    -- #VUID-VkDataGraphPipelineOpticalFlowDispatchInfoARM-flags-parameter#
+    -- @flags@ /must/ be a valid combination of
+    -- 'DataGraphOpticalFlowExecuteFlagBitsARM' values
+    flags :: DataGraphOpticalFlowExecuteFlagsARM
+  , -- | @meanFlowL1NormHint@ is an integer used to hint to the implementation
+    -- that the mean L1 norm of flow vectors is expected to be centered around
+    -- this value (in number of pixels of the input image). The implementation
+    -- may use this value to influence how flow vectors are computed. Different
+    -- values may result in different flow vectors and will affect the cost of
+    -- computing the flow vectors. A value of 0 means that the application does
+    -- not wish to provide a hint.
+    --
+    -- #VUID-VkDataGraphPipelineOpticalFlowDispatchInfoARM-meanFlowL1NormHint-09976#
+    -- @meanFlowL1NormHint@, when different from 0, /must/ be less than or
+    -- equal to the maximum of the width or height of the input image provided
+    -- at pipeline creation time via
+    -- 'DataGraphPipelineOpticalFlowCreateInfoARM'::@width@ or
+    -- 'DataGraphPipelineOpticalFlowCreateInfoARM'::@height@, respectively
+    meanFlowL1NormHint :: Word32
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (DataGraphPipelineOpticalFlowDispatchInfoARM)
+#endif
+deriving instance Show DataGraphPipelineOpticalFlowDispatchInfoARM
+
+instance ToCStruct DataGraphPipelineOpticalFlowDispatchInfoARM where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p DataGraphPipelineOpticalFlowDispatchInfoARM{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_OPTICAL_FLOW_DISPATCH_INFO_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr DataGraphOpticalFlowExecuteFlagsARM)) (flags)
+    poke ((p `plusPtr` 20 :: Ptr Word32)) (meanFlowL1NormHint)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_OPTICAL_FLOW_DISPATCH_INFO_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    f
+
+instance FromCStruct DataGraphPipelineOpticalFlowDispatchInfoARM where
+  peekCStruct p = do
+    flags <- peek @DataGraphOpticalFlowExecuteFlagsARM ((p `plusPtr` 16 :: Ptr DataGraphOpticalFlowExecuteFlagsARM))
+    meanFlowL1NormHint <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
+    pure $ DataGraphPipelineOpticalFlowDispatchInfoARM
+             flags meanFlowL1NormHint
+
+instance Storable DataGraphPipelineOpticalFlowDispatchInfoARM where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero DataGraphPipelineOpticalFlowDispatchInfoARM where
+  zero = DataGraphPipelineOpticalFlowDispatchInfoARM
+           zero
+           zero
+
+
+type DataGraphOpticalFlowGridSizeFlagsARM = DataGraphOpticalFlowGridSizeFlagBitsARM
+
+-- | VkDataGraphOpticalFlowGridSizeFlagBitsARM - Bits specifying grid sizes
+-- for optical flow operations
+--
+-- = Description
+--
+-- -   'DATA_GRAPH_OPTICAL_FLOW_GRID_SIZE_1X1_BIT_ARM' specifies that grid
+--     is 1x1 pixel.
+--
+-- -   'DATA_GRAPH_OPTICAL_FLOW_GRID_SIZE_2X2_BIT_ARM' specifies that grid
+--     is 2x2 pixel.
+--
+-- -   'DATA_GRAPH_OPTICAL_FLOW_GRID_SIZE_4X4_BIT_ARM' specifies that grid
+--     is 4x4 pixel.
+--
+-- -   'DATA_GRAPH_OPTICAL_FLOW_GRID_SIZE_8X8_BIT_ARM' specifies that grid
+--     is 8x8 pixel.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_data_graph_optical_flow VK_ARM_data_graph_optical_flow>,
+-- 'DataGraphOpticalFlowGridSizeFlagsARM'
+newtype DataGraphOpticalFlowGridSizeFlagBitsARM = DataGraphOpticalFlowGridSizeFlagBitsARM Flags
+  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
+
+-- No documentation found for Nested "VkDataGraphOpticalFlowGridSizeFlagBitsARM" "VK_DATA_GRAPH_OPTICAL_FLOW_GRID_SIZE_UNKNOWN_ARM"
+pattern DATA_GRAPH_OPTICAL_FLOW_GRID_SIZE_UNKNOWN_ARM = DataGraphOpticalFlowGridSizeFlagBitsARM 0x00000000
+
+-- No documentation found for Nested "VkDataGraphOpticalFlowGridSizeFlagBitsARM" "VK_DATA_GRAPH_OPTICAL_FLOW_GRID_SIZE_1X1_BIT_ARM"
+pattern DATA_GRAPH_OPTICAL_FLOW_GRID_SIZE_1X1_BIT_ARM = DataGraphOpticalFlowGridSizeFlagBitsARM 0x00000001
+
+-- No documentation found for Nested "VkDataGraphOpticalFlowGridSizeFlagBitsARM" "VK_DATA_GRAPH_OPTICAL_FLOW_GRID_SIZE_2X2_BIT_ARM"
+pattern DATA_GRAPH_OPTICAL_FLOW_GRID_SIZE_2X2_BIT_ARM = DataGraphOpticalFlowGridSizeFlagBitsARM 0x00000002
+
+-- No documentation found for Nested "VkDataGraphOpticalFlowGridSizeFlagBitsARM" "VK_DATA_GRAPH_OPTICAL_FLOW_GRID_SIZE_4X4_BIT_ARM"
+pattern DATA_GRAPH_OPTICAL_FLOW_GRID_SIZE_4X4_BIT_ARM = DataGraphOpticalFlowGridSizeFlagBitsARM 0x00000004
+
+-- No documentation found for Nested "VkDataGraphOpticalFlowGridSizeFlagBitsARM" "VK_DATA_GRAPH_OPTICAL_FLOW_GRID_SIZE_8X8_BIT_ARM"
+pattern DATA_GRAPH_OPTICAL_FLOW_GRID_SIZE_8X8_BIT_ARM = DataGraphOpticalFlowGridSizeFlagBitsARM 0x00000008
+
+conNameDataGraphOpticalFlowGridSizeFlagBitsARM :: String
+conNameDataGraphOpticalFlowGridSizeFlagBitsARM = "DataGraphOpticalFlowGridSizeFlagBitsARM"
+
+enumPrefixDataGraphOpticalFlowGridSizeFlagBitsARM :: String
+enumPrefixDataGraphOpticalFlowGridSizeFlagBitsARM = "DATA_GRAPH_OPTICAL_FLOW_GRID_SIZE_"
+
+showTableDataGraphOpticalFlowGridSizeFlagBitsARM :: [(DataGraphOpticalFlowGridSizeFlagBitsARM, String)]
+showTableDataGraphOpticalFlowGridSizeFlagBitsARM =
+  [
+    ( DATA_GRAPH_OPTICAL_FLOW_GRID_SIZE_UNKNOWN_ARM
+    , "UNKNOWN_ARM"
+    )
+  ,
+    ( DATA_GRAPH_OPTICAL_FLOW_GRID_SIZE_1X1_BIT_ARM
+    , "1X1_BIT_ARM"
+    )
+  ,
+    ( DATA_GRAPH_OPTICAL_FLOW_GRID_SIZE_2X2_BIT_ARM
+    , "2X2_BIT_ARM"
+    )
+  ,
+    ( DATA_GRAPH_OPTICAL_FLOW_GRID_SIZE_4X4_BIT_ARM
+    , "4X4_BIT_ARM"
+    )
+  ,
+    ( DATA_GRAPH_OPTICAL_FLOW_GRID_SIZE_8X8_BIT_ARM
+    , "8X8_BIT_ARM"
+    )
+  ]
+
+instance Show DataGraphOpticalFlowGridSizeFlagBitsARM where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixDataGraphOpticalFlowGridSizeFlagBitsARM
+      showTableDataGraphOpticalFlowGridSizeFlagBitsARM
+      conNameDataGraphOpticalFlowGridSizeFlagBitsARM
+      (\(DataGraphOpticalFlowGridSizeFlagBitsARM x) -> x)
+      (\x -> showString "0x" . showHex x)
+
+instance Read DataGraphOpticalFlowGridSizeFlagBitsARM where
+  readPrec =
+    enumReadPrec
+      enumPrefixDataGraphOpticalFlowGridSizeFlagBitsARM
+      showTableDataGraphOpticalFlowGridSizeFlagBitsARM
+      conNameDataGraphOpticalFlowGridSizeFlagBitsARM
+      DataGraphOpticalFlowGridSizeFlagBitsARM
+
+type DataGraphOpticalFlowImageUsageFlagsARM = DataGraphOpticalFlowImageUsageFlagBitsARM
+
+-- | VkDataGraphOpticalFlowImageUsageFlagBitsARM - Bits specifying image
+-- usage for optical flow operations
+--
+-- = Description
+--
+-- -   'DATA_GRAPH_OPTICAL_FLOW_IMAGE_USAGE_INPUT_BIT_ARM' specifies that
+--     the image /can/ be used as input or reference image for an optical
+--     flow operation.
+--
+-- -   'DATA_GRAPH_OPTICAL_FLOW_IMAGE_USAGE_OUTPUT_BIT_ARM' specifies that
+--     the image /can/ be used as output flow vector map for an optical
+--     flow operation.
+--
+-- -   'DATA_GRAPH_OPTICAL_FLOW_IMAGE_USAGE_HINT_BIT_ARM' specifies that
+--     the image /can/ be used as hint flow vector map for an optical flow
+--     operation.
+--
+-- -   'DATA_GRAPH_OPTICAL_FLOW_IMAGE_USAGE_COST_BIT_ARM' specifies that
+--     the image /can/ be used as output cost map for an optical flow
+--     operation.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_data_graph_optical_flow VK_ARM_data_graph_optical_flow>,
+-- 'DataGraphOpticalFlowImageUsageFlagsARM'
+newtype DataGraphOpticalFlowImageUsageFlagBitsARM = DataGraphOpticalFlowImageUsageFlagBitsARM Flags
+  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
+
+-- No documentation found for Nested "VkDataGraphOpticalFlowImageUsageFlagBitsARM" "VK_DATA_GRAPH_OPTICAL_FLOW_IMAGE_USAGE_UNKNOWN_ARM"
+pattern DATA_GRAPH_OPTICAL_FLOW_IMAGE_USAGE_UNKNOWN_ARM = DataGraphOpticalFlowImageUsageFlagBitsARM 0x00000000
+
+-- No documentation found for Nested "VkDataGraphOpticalFlowImageUsageFlagBitsARM" "VK_DATA_GRAPH_OPTICAL_FLOW_IMAGE_USAGE_INPUT_BIT_ARM"
+pattern DATA_GRAPH_OPTICAL_FLOW_IMAGE_USAGE_INPUT_BIT_ARM = DataGraphOpticalFlowImageUsageFlagBitsARM 0x00000001
+
+-- No documentation found for Nested "VkDataGraphOpticalFlowImageUsageFlagBitsARM" "VK_DATA_GRAPH_OPTICAL_FLOW_IMAGE_USAGE_OUTPUT_BIT_ARM"
+pattern DATA_GRAPH_OPTICAL_FLOW_IMAGE_USAGE_OUTPUT_BIT_ARM = DataGraphOpticalFlowImageUsageFlagBitsARM 0x00000002
+
+-- No documentation found for Nested "VkDataGraphOpticalFlowImageUsageFlagBitsARM" "VK_DATA_GRAPH_OPTICAL_FLOW_IMAGE_USAGE_HINT_BIT_ARM"
+pattern DATA_GRAPH_OPTICAL_FLOW_IMAGE_USAGE_HINT_BIT_ARM = DataGraphOpticalFlowImageUsageFlagBitsARM 0x00000004
+
+-- No documentation found for Nested "VkDataGraphOpticalFlowImageUsageFlagBitsARM" "VK_DATA_GRAPH_OPTICAL_FLOW_IMAGE_USAGE_COST_BIT_ARM"
+pattern DATA_GRAPH_OPTICAL_FLOW_IMAGE_USAGE_COST_BIT_ARM = DataGraphOpticalFlowImageUsageFlagBitsARM 0x00000008
+
+conNameDataGraphOpticalFlowImageUsageFlagBitsARM :: String
+conNameDataGraphOpticalFlowImageUsageFlagBitsARM = "DataGraphOpticalFlowImageUsageFlagBitsARM"
+
+enumPrefixDataGraphOpticalFlowImageUsageFlagBitsARM :: String
+enumPrefixDataGraphOpticalFlowImageUsageFlagBitsARM = "DATA_GRAPH_OPTICAL_FLOW_IMAGE_USAGE_"
+
+showTableDataGraphOpticalFlowImageUsageFlagBitsARM :: [(DataGraphOpticalFlowImageUsageFlagBitsARM, String)]
+showTableDataGraphOpticalFlowImageUsageFlagBitsARM =
+  [
+    ( DATA_GRAPH_OPTICAL_FLOW_IMAGE_USAGE_UNKNOWN_ARM
+    , "UNKNOWN_ARM"
+    )
+  ,
+    ( DATA_GRAPH_OPTICAL_FLOW_IMAGE_USAGE_INPUT_BIT_ARM
+    , "INPUT_BIT_ARM"
+    )
+  ,
+    ( DATA_GRAPH_OPTICAL_FLOW_IMAGE_USAGE_OUTPUT_BIT_ARM
+    , "OUTPUT_BIT_ARM"
+    )
+  ,
+    ( DATA_GRAPH_OPTICAL_FLOW_IMAGE_USAGE_HINT_BIT_ARM
+    , "HINT_BIT_ARM"
+    )
+  ,
+    ( DATA_GRAPH_OPTICAL_FLOW_IMAGE_USAGE_COST_BIT_ARM
+    , "COST_BIT_ARM"
+    )
+  ]
+
+instance Show DataGraphOpticalFlowImageUsageFlagBitsARM where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixDataGraphOpticalFlowImageUsageFlagBitsARM
+      showTableDataGraphOpticalFlowImageUsageFlagBitsARM
+      conNameDataGraphOpticalFlowImageUsageFlagBitsARM
+      (\(DataGraphOpticalFlowImageUsageFlagBitsARM x) -> x)
+      (\x -> showString "0x" . showHex x)
+
+instance Read DataGraphOpticalFlowImageUsageFlagBitsARM where
+  readPrec =
+    enumReadPrec
+      enumPrefixDataGraphOpticalFlowImageUsageFlagBitsARM
+      showTableDataGraphOpticalFlowImageUsageFlagBitsARM
+      conNameDataGraphOpticalFlowImageUsageFlagBitsARM
+      DataGraphOpticalFlowImageUsageFlagBitsARM
+
+-- | VkDataGraphOpticalFlowPerformanceLevelARM - Optical flow performance
+-- level types
+--
+-- = Description
+--
+-- -   'DATA_GRAPH_OPTICAL_FLOW_PERFORMANCE_LEVEL_SLOW_ARM' is a level with
+--     slower performance but higher quality.
+--
+-- -   'DATA_GRAPH_OPTICAL_FLOW_PERFORMANCE_LEVEL_MEDIUM_ARM' is a level
+--     with medium performance and medium quality.
+--
+-- -   'DATA_GRAPH_OPTICAL_FLOW_PERFORMANCE_LEVEL_FAST_ARM' is a preset
+--     with higher performance but lower quality.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_data_graph_optical_flow VK_ARM_data_graph_optical_flow>,
+-- 'DataGraphPipelineOpticalFlowCreateInfoARM'
+newtype DataGraphOpticalFlowPerformanceLevelARM = DataGraphOpticalFlowPerformanceLevelARM Int32
+  deriving newtype (Eq, Ord, Storable, Zero)
+
+-- No documentation found for Nested "VkDataGraphOpticalFlowPerformanceLevelARM" "VK_DATA_GRAPH_OPTICAL_FLOW_PERFORMANCE_LEVEL_UNKNOWN_ARM"
+pattern DATA_GRAPH_OPTICAL_FLOW_PERFORMANCE_LEVEL_UNKNOWN_ARM = DataGraphOpticalFlowPerformanceLevelARM 0
+
+-- No documentation found for Nested "VkDataGraphOpticalFlowPerformanceLevelARM" "VK_DATA_GRAPH_OPTICAL_FLOW_PERFORMANCE_LEVEL_SLOW_ARM"
+pattern DATA_GRAPH_OPTICAL_FLOW_PERFORMANCE_LEVEL_SLOW_ARM = DataGraphOpticalFlowPerformanceLevelARM 1
+
+-- No documentation found for Nested "VkDataGraphOpticalFlowPerformanceLevelARM" "VK_DATA_GRAPH_OPTICAL_FLOW_PERFORMANCE_LEVEL_MEDIUM_ARM"
+pattern DATA_GRAPH_OPTICAL_FLOW_PERFORMANCE_LEVEL_MEDIUM_ARM = DataGraphOpticalFlowPerformanceLevelARM 2
+
+-- No documentation found for Nested "VkDataGraphOpticalFlowPerformanceLevelARM" "VK_DATA_GRAPH_OPTICAL_FLOW_PERFORMANCE_LEVEL_FAST_ARM"
+pattern DATA_GRAPH_OPTICAL_FLOW_PERFORMANCE_LEVEL_FAST_ARM = DataGraphOpticalFlowPerformanceLevelARM 3
+
+{-# COMPLETE
+  DATA_GRAPH_OPTICAL_FLOW_PERFORMANCE_LEVEL_UNKNOWN_ARM
+  , DATA_GRAPH_OPTICAL_FLOW_PERFORMANCE_LEVEL_SLOW_ARM
+  , DATA_GRAPH_OPTICAL_FLOW_PERFORMANCE_LEVEL_MEDIUM_ARM
+  , DATA_GRAPH_OPTICAL_FLOW_PERFORMANCE_LEVEL_FAST_ARM ::
+    DataGraphOpticalFlowPerformanceLevelARM
+  #-}
+
+conNameDataGraphOpticalFlowPerformanceLevelARM :: String
+conNameDataGraphOpticalFlowPerformanceLevelARM = "DataGraphOpticalFlowPerformanceLevelARM"
+
+enumPrefixDataGraphOpticalFlowPerformanceLevelARM :: String
+enumPrefixDataGraphOpticalFlowPerformanceLevelARM = "DATA_GRAPH_OPTICAL_FLOW_PERFORMANCE_LEVEL_"
+
+showTableDataGraphOpticalFlowPerformanceLevelARM :: [(DataGraphOpticalFlowPerformanceLevelARM, String)]
+showTableDataGraphOpticalFlowPerformanceLevelARM =
+  [
+    ( DATA_GRAPH_OPTICAL_FLOW_PERFORMANCE_LEVEL_UNKNOWN_ARM
+    , "UNKNOWN_ARM"
+    )
+  ,
+    ( DATA_GRAPH_OPTICAL_FLOW_PERFORMANCE_LEVEL_SLOW_ARM
+    , "SLOW_ARM"
+    )
+  ,
+    ( DATA_GRAPH_OPTICAL_FLOW_PERFORMANCE_LEVEL_MEDIUM_ARM
+    , "MEDIUM_ARM"
+    )
+  ,
+    ( DATA_GRAPH_OPTICAL_FLOW_PERFORMANCE_LEVEL_FAST_ARM
+    , "FAST_ARM"
+    )
+  ]
+
+instance Show DataGraphOpticalFlowPerformanceLevelARM where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixDataGraphOpticalFlowPerformanceLevelARM
+      showTableDataGraphOpticalFlowPerformanceLevelARM
+      conNameDataGraphOpticalFlowPerformanceLevelARM
+      (\(DataGraphOpticalFlowPerformanceLevelARM x) -> x)
+      (showsPrec 11)
+
+instance Read DataGraphOpticalFlowPerformanceLevelARM where
+  readPrec =
+    enumReadPrec
+      enumPrefixDataGraphOpticalFlowPerformanceLevelARM
+      showTableDataGraphOpticalFlowPerformanceLevelARM
+      conNameDataGraphOpticalFlowPerformanceLevelARM
+      DataGraphOpticalFlowPerformanceLevelARM
+
+-- | VkDataGraphPipelineNodeConnectionTypeARM - Connection points for a
+-- fixed-function data graph node
+--
+-- = Description
+--
+-- -   'DATA_GRAPH_PIPELINE_NODE_CONNECTION_TYPE_OPTICAL_FLOW_INPUT_ARM'
+--     specifies the connection point for the input image of an optical
+--     flow node.
+--
+-- -   'DATA_GRAPH_PIPELINE_NODE_CONNECTION_TYPE_OPTICAL_FLOW_REFERENCE_ARM'
+--     specifies the connection point for the input reference image of an
+--     optical flow node.
+--
+-- -   'DATA_GRAPH_PIPELINE_NODE_CONNECTION_TYPE_OPTICAL_FLOW_HINT_ARM'
+--     specifies the connection point for the optional external hint flow
+--     vector map of an optical flow node.
+--
+-- -   'DATA_GRAPH_PIPELINE_NODE_CONNECTION_TYPE_OPTICAL_FLOW_FLOW_VECTOR_ARM'
+--     specifies the connection point for the output flow vector map of an
+--     optical flow node.
+--
+-- -   'DATA_GRAPH_PIPELINE_NODE_CONNECTION_TYPE_OPTICAL_FLOW_COST_ARM'
+--     specifies the connection point for the optional output cost map of
+--     an optical flow node.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_data_graph_optical_flow VK_ARM_data_graph_optical_flow>,
+-- 'DataGraphPipelineSingleNodeConnectionARM'
+newtype DataGraphPipelineNodeConnectionTypeARM = DataGraphPipelineNodeConnectionTypeARM 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
+
+-- No documentation found for Nested "VkDataGraphPipelineNodeConnectionTypeARM" "VK_DATA_GRAPH_PIPELINE_NODE_CONNECTION_TYPE_OPTICAL_FLOW_COST_ARM"
+pattern DATA_GRAPH_PIPELINE_NODE_CONNECTION_TYPE_OPTICAL_FLOW_COST_ARM = DataGraphPipelineNodeConnectionTypeARM 1000631004
+
+-- No documentation found for Nested "VkDataGraphPipelineNodeConnectionTypeARM" "VK_DATA_GRAPH_PIPELINE_NODE_CONNECTION_TYPE_OPTICAL_FLOW_FLOW_VECTOR_ARM"
+pattern DATA_GRAPH_PIPELINE_NODE_CONNECTION_TYPE_OPTICAL_FLOW_FLOW_VECTOR_ARM = DataGraphPipelineNodeConnectionTypeARM 1000631003
+
+-- No documentation found for Nested "VkDataGraphPipelineNodeConnectionTypeARM" "VK_DATA_GRAPH_PIPELINE_NODE_CONNECTION_TYPE_OPTICAL_FLOW_HINT_ARM"
+pattern DATA_GRAPH_PIPELINE_NODE_CONNECTION_TYPE_OPTICAL_FLOW_HINT_ARM = DataGraphPipelineNodeConnectionTypeARM 1000631002
+
+-- No documentation found for Nested "VkDataGraphPipelineNodeConnectionTypeARM" "VK_DATA_GRAPH_PIPELINE_NODE_CONNECTION_TYPE_OPTICAL_FLOW_REFERENCE_ARM"
+pattern DATA_GRAPH_PIPELINE_NODE_CONNECTION_TYPE_OPTICAL_FLOW_REFERENCE_ARM = DataGraphPipelineNodeConnectionTypeARM 1000631001
+
+-- No documentation found for Nested "VkDataGraphPipelineNodeConnectionTypeARM" "VK_DATA_GRAPH_PIPELINE_NODE_CONNECTION_TYPE_OPTICAL_FLOW_INPUT_ARM"
+pattern DATA_GRAPH_PIPELINE_NODE_CONNECTION_TYPE_OPTICAL_FLOW_INPUT_ARM = DataGraphPipelineNodeConnectionTypeARM 1000631000
+
+{-# COMPLETE
+  DATA_GRAPH_PIPELINE_NODE_CONNECTION_TYPE_OPTICAL_FLOW_COST_ARM
+  , DATA_GRAPH_PIPELINE_NODE_CONNECTION_TYPE_OPTICAL_FLOW_FLOW_VECTOR_ARM
+  , DATA_GRAPH_PIPELINE_NODE_CONNECTION_TYPE_OPTICAL_FLOW_HINT_ARM
+  , DATA_GRAPH_PIPELINE_NODE_CONNECTION_TYPE_OPTICAL_FLOW_REFERENCE_ARM
+  , DATA_GRAPH_PIPELINE_NODE_CONNECTION_TYPE_OPTICAL_FLOW_INPUT_ARM ::
+    DataGraphPipelineNodeConnectionTypeARM
+  #-}
+
+conNameDataGraphPipelineNodeConnectionTypeARM :: String
+conNameDataGraphPipelineNodeConnectionTypeARM = "DataGraphPipelineNodeConnectionTypeARM"
+
+enumPrefixDataGraphPipelineNodeConnectionTypeARM :: String
+enumPrefixDataGraphPipelineNodeConnectionTypeARM = "DATA_GRAPH_PIPELINE_NODE_CONNECTION_TYPE_OPTICAL_FLOW_"
+
+showTableDataGraphPipelineNodeConnectionTypeARM :: [(DataGraphPipelineNodeConnectionTypeARM, String)]
+showTableDataGraphPipelineNodeConnectionTypeARM =
+  [
+    ( DATA_GRAPH_PIPELINE_NODE_CONNECTION_TYPE_OPTICAL_FLOW_COST_ARM
+    , "COST_ARM"
+    )
+  ,
+    ( DATA_GRAPH_PIPELINE_NODE_CONNECTION_TYPE_OPTICAL_FLOW_FLOW_VECTOR_ARM
+    , "FLOW_VECTOR_ARM"
+    )
+  ,
+    ( DATA_GRAPH_PIPELINE_NODE_CONNECTION_TYPE_OPTICAL_FLOW_HINT_ARM
+    , "HINT_ARM"
+    )
+  ,
+    ( DATA_GRAPH_PIPELINE_NODE_CONNECTION_TYPE_OPTICAL_FLOW_REFERENCE_ARM
+    , "REFERENCE_ARM"
+    )
+  ,
+    ( DATA_GRAPH_PIPELINE_NODE_CONNECTION_TYPE_OPTICAL_FLOW_INPUT_ARM
+    , "INPUT_ARM"
+    )
+  ]
+
+instance Show DataGraphPipelineNodeConnectionTypeARM where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixDataGraphPipelineNodeConnectionTypeARM
+      showTableDataGraphPipelineNodeConnectionTypeARM
+      conNameDataGraphPipelineNodeConnectionTypeARM
+      (\(DataGraphPipelineNodeConnectionTypeARM x) -> x)
+      (showsPrec 11)
+
+instance Read DataGraphPipelineNodeConnectionTypeARM where
+  readPrec =
+    enumReadPrec
+      enumPrefixDataGraphPipelineNodeConnectionTypeARM
+      showTableDataGraphPipelineNodeConnectionTypeARM
+      conNameDataGraphPipelineNodeConnectionTypeARM
+      DataGraphPipelineNodeConnectionTypeARM
+
+-- | VkDataGraphPipelineNodeTypeARM - Enumeration describing the type of a
+-- data graph pipeline node
+--
+-- = Description
+--
+-- -   'DATA_GRAPH_PIPELINE_NODE_TYPE_OPTICAL_FLOW_ARM' corresponds to an
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#graphs-operations-opticalflow optical flow node>.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_data_graph_optical_flow VK_ARM_data_graph_optical_flow>,
+-- 'DataGraphPipelineSingleNodeCreateInfoARM'
+newtype DataGraphPipelineNodeTypeARM = DataGraphPipelineNodeTypeARM 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
+
+-- No documentation found for Nested "VkDataGraphPipelineNodeTypeARM" "VK_DATA_GRAPH_PIPELINE_NODE_TYPE_OPTICAL_FLOW_ARM"
+pattern DATA_GRAPH_PIPELINE_NODE_TYPE_OPTICAL_FLOW_ARM = DataGraphPipelineNodeTypeARM 1000631000
+
+{-# COMPLETE DATA_GRAPH_PIPELINE_NODE_TYPE_OPTICAL_FLOW_ARM :: DataGraphPipelineNodeTypeARM #-}
+
+conNameDataGraphPipelineNodeTypeARM :: String
+conNameDataGraphPipelineNodeTypeARM = "DataGraphPipelineNodeTypeARM"
+
+enumPrefixDataGraphPipelineNodeTypeARM :: String
+enumPrefixDataGraphPipelineNodeTypeARM = "DATA_GRAPH_PIPELINE_NODE_TYPE_OPTICAL_FLOW_ARM"
+
+showTableDataGraphPipelineNodeTypeARM :: [(DataGraphPipelineNodeTypeARM, String)]
+showTableDataGraphPipelineNodeTypeARM =
+  [
+    ( DATA_GRAPH_PIPELINE_NODE_TYPE_OPTICAL_FLOW_ARM
+    , ""
+    )
+  ]
+
+instance Show DataGraphPipelineNodeTypeARM where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixDataGraphPipelineNodeTypeARM
+      showTableDataGraphPipelineNodeTypeARM
+      conNameDataGraphPipelineNodeTypeARM
+      (\(DataGraphPipelineNodeTypeARM x) -> x)
+      (showsPrec 11)
+
+instance Read DataGraphPipelineNodeTypeARM where
+  readPrec =
+    enumReadPrec
+      enumPrefixDataGraphPipelineNodeTypeARM
+      showTableDataGraphPipelineNodeTypeARM
+      conNameDataGraphPipelineNodeTypeARM
+      DataGraphPipelineNodeTypeARM
+
+type DataGraphOpticalFlowCreateFlagsARM = DataGraphOpticalFlowCreateFlagBitsARM
+
+-- | VkDataGraphOpticalFlowCreateFlagBitsARM - Bits specifying flags for
+-- newly created optical flow data graph node
+--
+-- = Description
+--
+-- -   'DATA_GRAPH_OPTICAL_FLOW_CREATE_ENABLE_HINT_BIT_ARM' specifies that
+--     a 'Vulkan.Core10.Handles.ImageView' with external flow vector map
+--     will be used as hints in performing the motion search and /must/ be
+--     connected to
+--     'DATA_GRAPH_PIPELINE_NODE_CONNECTION_TYPE_OPTICAL_FLOW_HINT_ARM'.
+--
+-- -   'DATA_GRAPH_OPTICAL_FLOW_CREATE_ENABLE_COST_BIT_ARM' specifies that
+--     the cost for the forward flow is generated in a
+--     'Vulkan.Core10.Handles.ImageView' which /must/ be connected to
+--     'DATA_GRAPH_PIPELINE_NODE_CONNECTION_TYPE_OPTICAL_FLOW_COST_ARM'.
+--     The cost is the confidence level of the flow vector for each grid in
+--     the image. The cost implies how (in)accurate the flow vector is.
+--     Higher cost value implies the flow vector to be less accurate and
+--     vice-versa.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_data_graph_optical_flow VK_ARM_data_graph_optical_flow>,
+-- 'DataGraphOpticalFlowCreateFlagsARM'
+newtype DataGraphOpticalFlowCreateFlagBitsARM = DataGraphOpticalFlowCreateFlagBitsARM Flags
+  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
+
+-- No documentation found for Nested "VkDataGraphOpticalFlowCreateFlagBitsARM" "VK_DATA_GRAPH_OPTICAL_FLOW_CREATE_ENABLE_HINT_BIT_ARM"
+pattern DATA_GRAPH_OPTICAL_FLOW_CREATE_ENABLE_HINT_BIT_ARM = DataGraphOpticalFlowCreateFlagBitsARM 0x00000001
+
+-- No documentation found for Nested "VkDataGraphOpticalFlowCreateFlagBitsARM" "VK_DATA_GRAPH_OPTICAL_FLOW_CREATE_ENABLE_COST_BIT_ARM"
+pattern DATA_GRAPH_OPTICAL_FLOW_CREATE_ENABLE_COST_BIT_ARM = DataGraphOpticalFlowCreateFlagBitsARM 0x00000002
+
+-- No documentation found for Nested "VkDataGraphOpticalFlowCreateFlagBitsARM" "VK_DATA_GRAPH_OPTICAL_FLOW_CREATE_RESERVED_30_BIT_ARM"
+pattern DATA_GRAPH_OPTICAL_FLOW_CREATE_RESERVED_30_BIT_ARM = DataGraphOpticalFlowCreateFlagBitsARM 0x40000000
+
+conNameDataGraphOpticalFlowCreateFlagBitsARM :: String
+conNameDataGraphOpticalFlowCreateFlagBitsARM = "DataGraphOpticalFlowCreateFlagBitsARM"
+
+enumPrefixDataGraphOpticalFlowCreateFlagBitsARM :: String
+enumPrefixDataGraphOpticalFlowCreateFlagBitsARM = "DATA_GRAPH_OPTICAL_FLOW_CREATE_"
+
+showTableDataGraphOpticalFlowCreateFlagBitsARM :: [(DataGraphOpticalFlowCreateFlagBitsARM, String)]
+showTableDataGraphOpticalFlowCreateFlagBitsARM =
+  [
+    ( DATA_GRAPH_OPTICAL_FLOW_CREATE_ENABLE_HINT_BIT_ARM
+    , "ENABLE_HINT_BIT_ARM"
+    )
+  ,
+    ( DATA_GRAPH_OPTICAL_FLOW_CREATE_ENABLE_COST_BIT_ARM
+    , "ENABLE_COST_BIT_ARM"
+    )
+  ,
+    ( DATA_GRAPH_OPTICAL_FLOW_CREATE_RESERVED_30_BIT_ARM
+    , "RESERVED_30_BIT_ARM"
+    )
+  ]
+
+instance Show DataGraphOpticalFlowCreateFlagBitsARM where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixDataGraphOpticalFlowCreateFlagBitsARM
+      showTableDataGraphOpticalFlowCreateFlagBitsARM
+      conNameDataGraphOpticalFlowCreateFlagBitsARM
+      (\(DataGraphOpticalFlowCreateFlagBitsARM x) -> x)
+      (\x -> showString "0x" . showHex x)
+
+instance Read DataGraphOpticalFlowCreateFlagBitsARM where
+  readPrec =
+    enumReadPrec
+      enumPrefixDataGraphOpticalFlowCreateFlagBitsARM
+      showTableDataGraphOpticalFlowCreateFlagBitsARM
+      conNameDataGraphOpticalFlowCreateFlagBitsARM
+      DataGraphOpticalFlowCreateFlagBitsARM
+
+type DataGraphOpticalFlowExecuteFlagsARM = DataGraphOpticalFlowExecuteFlagBitsARM
+
+-- | VkDataGraphOpticalFlowExecuteFlagBitsARM - Bits specifying flags for a
+-- optical flow vector calculation
+--
+-- = Description
+--
+-- -   'DATA_GRAPH_OPTICAL_FLOW_EXECUTE_DISABLE_TEMPORAL_HINTS_BIT_ARM'
+--     specifies that temporal hints from previously generated flow vector
+--     map are not used. If temporal hints are enabled, the optical flow
+--     vector map from previous
+--     'Vulkan.Extensions.VK_ARM_data_graph.cmdDispatchDataGraphARM' calls
+--     in the same graph pipeline session /may/ be automatically used as
+--     hints for the current
+--     'Vulkan.Extensions.VK_ARM_data_graph.cmdDispatchDataGraphARM' call,
+--     to take advantage of temporal correlation in a video sequence.
+--     Temporal hints should be disabled if there is a-priori knowledge of
+--     no temporal correlation (e.g. a scene change, independent successive
+--     image pairs).
+--
+-- -   'DATA_GRAPH_OPTICAL_FLOW_EXECUTE_INPUT_UNCHANGED_BIT_ARM' specifies
+--     that the contents of the input image are the same as in the
+--     previously executed
+--     'Vulkan.Extensions.VK_ARM_data_graph.cmdDispatchDataGraphARM' call
+--     in the same graph pipeline session.
+--
+-- -   'DATA_GRAPH_OPTICAL_FLOW_EXECUTE_REFERENCE_UNCHANGED_BIT_ARM'
+--     specifies that the contents of the reference image are the same as
+--     in the previously executed
+--     'Vulkan.Extensions.VK_ARM_data_graph.cmdDispatchDataGraphARM' call
+--     in the same graph pipeline session.
+--
+-- -   'DATA_GRAPH_OPTICAL_FLOW_EXECUTE_INPUT_IS_PREVIOUS_REFERENCE_BIT_ARM'
+--     specifies that the contents of the input image are the same as the
+--     contents of the reference image in the previously executed
+--     'Vulkan.Extensions.VK_ARM_data_graph.cmdDispatchDataGraphARM' call
+--     in the same graph pipeline session.
+--
+-- -   'DATA_GRAPH_OPTICAL_FLOW_EXECUTE_REFERENCE_IS_PREVIOUS_INPUT_BIT_ARM'
+--     specifies that the contents of the reference image are the same as
+--     the contents of the input image in the previously executed
+--     'Vulkan.Extensions.VK_ARM_data_graph.cmdDispatchDataGraphARM' call
+--     in the same graph pipeline session.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_data_graph_optical_flow VK_ARM_data_graph_optical_flow>,
+-- 'DataGraphOpticalFlowExecuteFlagsARM'
+newtype DataGraphOpticalFlowExecuteFlagBitsARM = DataGraphOpticalFlowExecuteFlagBitsARM Flags
+  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
+
+-- No documentation found for Nested "VkDataGraphOpticalFlowExecuteFlagBitsARM" "VK_DATA_GRAPH_OPTICAL_FLOW_EXECUTE_DISABLE_TEMPORAL_HINTS_BIT_ARM"
+pattern DATA_GRAPH_OPTICAL_FLOW_EXECUTE_DISABLE_TEMPORAL_HINTS_BIT_ARM = DataGraphOpticalFlowExecuteFlagBitsARM 0x00000001
+
+-- No documentation found for Nested "VkDataGraphOpticalFlowExecuteFlagBitsARM" "VK_DATA_GRAPH_OPTICAL_FLOW_EXECUTE_INPUT_UNCHANGED_BIT_ARM"
+pattern DATA_GRAPH_OPTICAL_FLOW_EXECUTE_INPUT_UNCHANGED_BIT_ARM = DataGraphOpticalFlowExecuteFlagBitsARM 0x00000002
+
+-- No documentation found for Nested "VkDataGraphOpticalFlowExecuteFlagBitsARM" "VK_DATA_GRAPH_OPTICAL_FLOW_EXECUTE_REFERENCE_UNCHANGED_BIT_ARM"
+pattern DATA_GRAPH_OPTICAL_FLOW_EXECUTE_REFERENCE_UNCHANGED_BIT_ARM = DataGraphOpticalFlowExecuteFlagBitsARM 0x00000004
+
+-- No documentation found for Nested "VkDataGraphOpticalFlowExecuteFlagBitsARM" "VK_DATA_GRAPH_OPTICAL_FLOW_EXECUTE_INPUT_IS_PREVIOUS_REFERENCE_BIT_ARM"
+pattern DATA_GRAPH_OPTICAL_FLOW_EXECUTE_INPUT_IS_PREVIOUS_REFERENCE_BIT_ARM = DataGraphOpticalFlowExecuteFlagBitsARM 0x00000008
+
+-- No documentation found for Nested "VkDataGraphOpticalFlowExecuteFlagBitsARM" "VK_DATA_GRAPH_OPTICAL_FLOW_EXECUTE_REFERENCE_IS_PREVIOUS_INPUT_BIT_ARM"
+pattern DATA_GRAPH_OPTICAL_FLOW_EXECUTE_REFERENCE_IS_PREVIOUS_INPUT_BIT_ARM = DataGraphOpticalFlowExecuteFlagBitsARM 0x00000010
+
+conNameDataGraphOpticalFlowExecuteFlagBitsARM :: String
+conNameDataGraphOpticalFlowExecuteFlagBitsARM = "DataGraphOpticalFlowExecuteFlagBitsARM"
+
+enumPrefixDataGraphOpticalFlowExecuteFlagBitsARM :: String
+enumPrefixDataGraphOpticalFlowExecuteFlagBitsARM = "DATA_GRAPH_OPTICAL_FLOW_EXECUTE_"
+
+showTableDataGraphOpticalFlowExecuteFlagBitsARM :: [(DataGraphOpticalFlowExecuteFlagBitsARM, String)]
+showTableDataGraphOpticalFlowExecuteFlagBitsARM =
+  [
+    ( DATA_GRAPH_OPTICAL_FLOW_EXECUTE_DISABLE_TEMPORAL_HINTS_BIT_ARM
+    , "DISABLE_TEMPORAL_HINTS_BIT_ARM"
+    )
+  ,
+    ( DATA_GRAPH_OPTICAL_FLOW_EXECUTE_INPUT_UNCHANGED_BIT_ARM
+    , "INPUT_UNCHANGED_BIT_ARM"
+    )
+  ,
+    ( DATA_GRAPH_OPTICAL_FLOW_EXECUTE_REFERENCE_UNCHANGED_BIT_ARM
+    , "REFERENCE_UNCHANGED_BIT_ARM"
+    )
+  ,
+    ( DATA_GRAPH_OPTICAL_FLOW_EXECUTE_INPUT_IS_PREVIOUS_REFERENCE_BIT_ARM
+    , "INPUT_IS_PREVIOUS_REFERENCE_BIT_ARM"
+    )
+  ,
+    ( DATA_GRAPH_OPTICAL_FLOW_EXECUTE_REFERENCE_IS_PREVIOUS_INPUT_BIT_ARM
+    , "REFERENCE_IS_PREVIOUS_INPUT_BIT_ARM"
+    )
+  ]
+
+instance Show DataGraphOpticalFlowExecuteFlagBitsARM where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixDataGraphOpticalFlowExecuteFlagBitsARM
+      showTableDataGraphOpticalFlowExecuteFlagBitsARM
+      conNameDataGraphOpticalFlowExecuteFlagBitsARM
+      (\(DataGraphOpticalFlowExecuteFlagBitsARM x) -> x)
+      (\x -> showString "0x" . showHex x)
+
+instance Read DataGraphOpticalFlowExecuteFlagBitsARM where
+  readPrec =
+    enumReadPrec
+      enumPrefixDataGraphOpticalFlowExecuteFlagBitsARM
+      showTableDataGraphOpticalFlowExecuteFlagBitsARM
+      conNameDataGraphOpticalFlowExecuteFlagBitsARM
+      DataGraphOpticalFlowExecuteFlagBitsARM
+
+type ARM_DATA_GRAPH_OPTICAL_FLOW_SPEC_VERSION = 1
+
+-- No documentation found for TopLevel "VK_ARM_DATA_GRAPH_OPTICAL_FLOW_SPEC_VERSION"
+pattern ARM_DATA_GRAPH_OPTICAL_FLOW_SPEC_VERSION :: forall a . Integral a => a
+pattern ARM_DATA_GRAPH_OPTICAL_FLOW_SPEC_VERSION = 1
+
+
+type ARM_DATA_GRAPH_OPTICAL_FLOW_EXTENSION_NAME = "VK_ARM_data_graph_optical_flow"
+
+-- No documentation found for TopLevel "VK_ARM_DATA_GRAPH_OPTICAL_FLOW_EXTENSION_NAME"
+pattern ARM_DATA_GRAPH_OPTICAL_FLOW_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern ARM_DATA_GRAPH_OPTICAL_FLOW_EXTENSION_NAME = "VK_ARM_data_graph_optical_flow"
+
diff --git a/src/Vulkan/Extensions/VK_ARM_data_graph_optical_flow.hs-boot b/src/Vulkan/Extensions/VK_ARM_data_graph_optical_flow.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_ARM_data_graph_optical_flow.hs-boot
@@ -0,0 +1,290 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_ARM_data_graph_optical_flow - device extension
+--
+-- = VK_ARM_data_graph_optical_flow
+--
+-- [__Name String__]
+--     @VK_ARM_data_graph_optical_flow@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     632
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Not ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_data_graph VK_ARM_data_graph>
+--
+-- [__Contact__]
+--
+--     -   Kevin Petit
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_ARM_data_graph_optical_flow] @kpet%0A*Here describe the issue or question you have about the VK_ARM_data_graph_optical_flow extension* >
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2026-04-08
+--
+-- [__Contributors__]
+--
+--     -   Contributors to VK_NV_optical_flow
+--
+--     -   Kevin Petit, Arm Ltd.
+--
+--     -   Jan-Harald Fredriksen, Arm Ltd.
+--
+--     -   Steve Suzuki, Arm Ltd.
+--
+--     -   Liam O’Neil, Arm Ltd.
+--
+-- == Description
+--
+-- This extension allows applications to estimate the 2D displacement of
+-- pixels between two images.
+--
+-- == New Commands
+--
+-- -   'Vulkan.Extensions.VK_ARM_data_graph_instruction_set_tosa.getPhysicalDeviceQueueFamilyDataGraphEngineOperationPropertiesARM'
+--
+-- -   'getPhysicalDeviceQueueFamilyDataGraphOpticalFlowImageFormatsARM'
+--
+-- == New Structures
+--
+-- -   'DataGraphOpticalFlowImageFormatPropertiesARM'
+--
+-- -   'DataGraphPipelineSingleNodeConnectionARM'
+--
+-- -   'QueueFamilyDataGraphOpticalFlowPropertiesARM'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_ARM_data_graph.DataGraphPipelineCreateInfoARM':
+--
+--     -   'DataGraphPipelineOpticalFlowCreateInfoARM'
+--
+--     -   'DataGraphPipelineSingleNodeCreateInfoARM'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_ARM_data_graph.DataGraphPipelineDispatchInfoARM':
+--
+--     -   'DataGraphPipelineOpticalFlowDispatchInfoARM'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_ARM_data_graph.DataGraphPipelineResourceInfoARM':
+--
+--     -   'DataGraphPipelineResourceInfoImageLayoutARM'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceDataGraphOpticalFlowFeaturesARM'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceImageFormatInfo2',
+--     'Vulkan.Core10.Image.ImageCreateInfo':
+--
+--     -   'DataGraphOpticalFlowImageFormatInfoARM'
+--
+-- == New Enums
+--
+-- -   'DataGraphOpticalFlowCreateFlagBitsARM'
+--
+-- -   'DataGraphOpticalFlowExecuteFlagBitsARM'
+--
+-- -   'DataGraphOpticalFlowGridSizeFlagBitsARM'
+--
+-- -   'DataGraphOpticalFlowImageUsageFlagBitsARM'
+--
+-- -   'DataGraphOpticalFlowPerformanceLevelARM'
+--
+-- -   'DataGraphPipelineNodeConnectionTypeARM'
+--
+-- -   'DataGraphPipelineNodeTypeARM'
+--
+-- == New Bitmasks
+--
+-- -   'DataGraphOpticalFlowCreateFlagsARM'
+--
+-- -   'DataGraphOpticalFlowExecuteFlagsARM'
+--
+-- -   'DataGraphOpticalFlowGridSizeFlagsARM'
+--
+-- -   'DataGraphOpticalFlowImageUsageFlagsARM'
+--
+-- == New Enum Constants
+--
+-- -   'ARM_DATA_GRAPH_OPTICAL_FLOW_EXTENSION_NAME'
+--
+-- -   'ARM_DATA_GRAPH_OPTICAL_FLOW_SPEC_VERSION'
+--
+-- -   Extending 'DataGraphPipelineNodeConnectionTypeARM':
+--
+--     -   'DATA_GRAPH_PIPELINE_NODE_CONNECTION_TYPE_OPTICAL_FLOW_COST_ARM'
+--
+--     -   'DATA_GRAPH_PIPELINE_NODE_CONNECTION_TYPE_OPTICAL_FLOW_FLOW_VECTOR_ARM'
+--
+--     -   'DATA_GRAPH_PIPELINE_NODE_CONNECTION_TYPE_OPTICAL_FLOW_HINT_ARM'
+--
+--     -   'DATA_GRAPH_PIPELINE_NODE_CONNECTION_TYPE_OPTICAL_FLOW_INPUT_ARM'
+--
+--     -   'DATA_GRAPH_PIPELINE_NODE_CONNECTION_TYPE_OPTICAL_FLOW_REFERENCE_ARM'
+--
+-- -   Extending 'DataGraphPipelineNodeTypeARM':
+--
+--     -   'DATA_GRAPH_PIPELINE_NODE_TYPE_OPTICAL_FLOW_ARM'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_ARM_data_graph.DataGraphPipelineSessionBindPointARM':
+--
+--     -   'Vulkan.Extensions.VK_ARM_data_graph.DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_OPTICAL_FLOW_CACHE_ARM'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_ARM_data_graph.DataGraphPipelineSessionCreateFlagBitsARM':
+--
+--     -   'Vulkan.Extensions.VK_ARM_data_graph.DATA_GRAPH_PIPELINE_SESSION_CREATE_OPTICAL_FLOW_CACHE_BIT_ARM'
+--
+-- -   Extending
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FormatFeatureFlagBits2':
+--
+--     -   'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_DATA_GRAPH_OPTICAL_FLOW_COST_BIT_ARM'
+--
+--     -   'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_DATA_GRAPH_OPTICAL_FLOW_IMAGE_BIT_ARM'
+--
+--     -   'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_DATA_GRAPH_OPTICAL_FLOW_VECTOR_BIT_ARM'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_ARM_data_graph.PhysicalDeviceDataGraphOperationTypeARM':
+--
+--     -   'Vulkan.Extensions.VK_ARM_data_graph.PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_OPTICAL_FLOW_ARM'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DATA_GRAPH_OPTICAL_FLOW_IMAGE_FORMAT_INFO_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DATA_GRAPH_OPTICAL_FLOW_IMAGE_FORMAT_PROPERTIES_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_OPTICAL_FLOW_CREATE_INFO_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_OPTICAL_FLOW_DISPATCH_INFO_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_RESOURCE_INFO_IMAGE_LAYOUT_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SINGLE_NODE_CONNECTION_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SINGLE_NODE_CREATE_INFO_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_OPTICAL_FLOW_FEATURES_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_OPTICAL_FLOW_PROPERTIES_ARM'
+--
+-- == Version History
+--
+-- -   Revision 1, 2026-04-08 (Kevin Petit)
+--
+--     -   Internal revisions
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_ARM_data_graph_optical_flow Vulkan Specification>.
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_ARM_data_graph_optical_flow  ( DataGraphOpticalFlowImageFormatInfoARM
+                                                         , DataGraphOpticalFlowImageFormatPropertiesARM
+                                                         , DataGraphPipelineOpticalFlowCreateInfoARM
+                                                         , DataGraphPipelineOpticalFlowDispatchInfoARM
+                                                         , DataGraphPipelineResourceInfoImageLayoutARM
+                                                         , DataGraphPipelineSingleNodeConnectionARM
+                                                         , DataGraphPipelineSingleNodeCreateInfoARM
+                                                         , PhysicalDeviceDataGraphOpticalFlowFeaturesARM
+                                                         , QueueFamilyDataGraphOpticalFlowPropertiesARM
+                                                         ) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data DataGraphOpticalFlowImageFormatInfoARM
+
+instance ToCStruct DataGraphOpticalFlowImageFormatInfoARM
+instance Show DataGraphOpticalFlowImageFormatInfoARM
+
+instance FromCStruct DataGraphOpticalFlowImageFormatInfoARM
+
+
+data DataGraphOpticalFlowImageFormatPropertiesARM
+
+instance ToCStruct DataGraphOpticalFlowImageFormatPropertiesARM
+instance Show DataGraphOpticalFlowImageFormatPropertiesARM
+
+instance FromCStruct DataGraphOpticalFlowImageFormatPropertiesARM
+
+
+data DataGraphPipelineOpticalFlowCreateInfoARM
+
+instance ToCStruct DataGraphPipelineOpticalFlowCreateInfoARM
+instance Show DataGraphPipelineOpticalFlowCreateInfoARM
+
+instance FromCStruct DataGraphPipelineOpticalFlowCreateInfoARM
+
+
+data DataGraphPipelineOpticalFlowDispatchInfoARM
+
+instance ToCStruct DataGraphPipelineOpticalFlowDispatchInfoARM
+instance Show DataGraphPipelineOpticalFlowDispatchInfoARM
+
+instance FromCStruct DataGraphPipelineOpticalFlowDispatchInfoARM
+
+
+data DataGraphPipelineResourceInfoImageLayoutARM
+
+instance ToCStruct DataGraphPipelineResourceInfoImageLayoutARM
+instance Show DataGraphPipelineResourceInfoImageLayoutARM
+
+instance FromCStruct DataGraphPipelineResourceInfoImageLayoutARM
+
+
+data DataGraphPipelineSingleNodeConnectionARM
+
+instance ToCStruct DataGraphPipelineSingleNodeConnectionARM
+instance Show DataGraphPipelineSingleNodeConnectionARM
+
+instance FromCStruct DataGraphPipelineSingleNodeConnectionARM
+
+
+data DataGraphPipelineSingleNodeCreateInfoARM
+
+instance ToCStruct DataGraphPipelineSingleNodeCreateInfoARM
+instance Show DataGraphPipelineSingleNodeCreateInfoARM
+
+instance FromCStruct DataGraphPipelineSingleNodeCreateInfoARM
+
+
+data PhysicalDeviceDataGraphOpticalFlowFeaturesARM
+
+instance ToCStruct PhysicalDeviceDataGraphOpticalFlowFeaturesARM
+instance Show PhysicalDeviceDataGraphOpticalFlowFeaturesARM
+
+instance FromCStruct PhysicalDeviceDataGraphOpticalFlowFeaturesARM
+
+
+data QueueFamilyDataGraphOpticalFlowPropertiesARM
+
+instance ToCStruct QueueFamilyDataGraphOpticalFlowPropertiesARM
+instance Show QueueFamilyDataGraphOpticalFlowPropertiesARM
+
+instance FromCStruct QueueFamilyDataGraphOpticalFlowPropertiesARM
+
diff --git a/src/Vulkan/Extensions/VK_ARM_format_pack.hs b/src/Vulkan/Extensions/VK_ARM_format_pack.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_ARM_format_pack.hs
@@ -0,0 +1,281 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_ARM_format_pack - device extension
+--
+-- = VK_ARM_format_pack
+--
+-- [__Name String__]
+--     @VK_ARM_format_pack@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     610
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Not ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
+--
+-- [__Contact__]
+--
+--     -   Jan-Harald Fredriksen
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_ARM_format_pack] @janharaldfredriksen-arm%0A*Here describe the issue or question you have about the VK_ARM_format_pack extension* >
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2025-03-24
+--
+-- [__Interactions and External Dependencies__; __Contributors__]
+--
+--     -   Jan-Harald Fredriksen, Arm
+--
+--     -   Lisa Wu, Arm
+--
+--     -   Oivind Boge, Arm
+--
+-- == Description
+--
+-- This extension adds support for additional 1-, 2- and 4-component
+-- formats with 10, 12, or 14 bits of components in 16-bit containers.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceFormatPackFeaturesARM'
+--
+-- == New Enum Constants
+--
+-- -   'ARM_FORMAT_PACK_EXTENSION_NAME'
+--
+-- -   'ARM_FORMAT_PACK_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.Format.Format':
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_G14X2_B14X2R14X2_2PLANE_420_UNORM_3PACK16_ARM'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_G14X2_B14X2R14X2_2PLANE_422_UNORM_3PACK16_ARM'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_R10X6G10X6B10X6A10X6_UINT_4PACK16_ARM'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_R10X6G10X6_UINT_2PACK16_ARM'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_R10X6_UINT_PACK16_ARM'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_R12X4G12X4B12X4A12X4_UINT_4PACK16_ARM'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_R12X4G12X4_UINT_2PACK16_ARM'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_R12X4_UINT_PACK16_ARM'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_R14X2G14X2B14X2A14X2_UINT_4PACK16_ARM'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_R14X2G14X2B14X2A14X2_UNORM_4PACK16_ARM'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_R14X2G14X2_UINT_2PACK16_ARM'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_R14X2G14X2_UNORM_2PACK16_ARM'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_R14X2_UINT_PACK16_ARM'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_R14X2_UNORM_PACK16_ARM'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_FORMAT_PACK_FEATURES_ARM'
+--
+-- === What do we call this extension?
+--
+-- __RESOLVED__
+--
+-- Many existing extension have the format in the name, but in this case we
+-- want to expose multiple formats.
+--
+-- We will describe this set of formats as a “pack”.
+--
+-- === Compatibility classes
+--
+-- [__RESOLVED__]
+--     Should these additional formats be in the same compatibility class
+--     as any other formats? For single-plane formats, we put formats with
+--     the same number of bits (but different types) in the same class.
+--     Each multi-plane or subsampled format gets its own compatibility
+--     class. This is consistent with how existing formats are handled.
+--
+-- === Format feature requirements
+--
+-- [__RESOLVED__]
+--     The format feature queries could be used to determine what is
+--     supported on any given implementation, but it may be useful to
+--     establish a baseline requirement in the specification. For that
+--     purpose, we require a set of format features - sufficient to enable
+--     texture operations - to be supported for the added unsigned integer
+--     single-plane formats. Other formats and format features are
+--     optional.
+--
+-- == Version History
+--
+-- -   Revision 1, 2025-03-24
+--
+--     -   Initial revision
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_ARM_format_pack Vulkan Specification>.
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_ARM_format_pack  ( PhysicalDeviceFormatPackFeaturesARM(..)
+                                             , ARM_FORMAT_PACK_SPEC_VERSION
+                                             , pattern ARM_FORMAT_PACK_SPEC_VERSION
+                                             , ARM_FORMAT_PACK_EXTENSION_NAME
+                                             , pattern ARM_FORMAT_PACK_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_FORMAT_PACK_FEATURES_ARM))
+-- | VkPhysicalDeviceFormatPackFeaturesARM - Structure describing whether the
+-- additional formats feature is supported by an implementation
+--
+-- = Members
+--
+-- This structure describes the following feature:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceFormatPackFeaturesARM' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceFormatPackFeaturesARM', it /must/ add an instance of the
+-- structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_format_pack VK_ARM_format_pack>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceFormatPackFeaturesARM = PhysicalDeviceFormatPackFeaturesARM
+  { -- | #features-formatPack# @formatPack@ indicates that the implementation
+    -- /must/ support using a 'Vulkan.Core10.Enums.Format.Format' of
+    -- 'Vulkan.Core10.Enums.Format.FORMAT_R10X6_UINT_PACK16_ARM',
+    -- 'Vulkan.Core10.Enums.Format.FORMAT_R10X6G10X6_UINT_2PACK16_ARM',
+    -- 'Vulkan.Core10.Enums.Format.FORMAT_R10X6G10X6B10X6A10X6_UINT_4PACK16_ARM',
+    -- 'Vulkan.Core10.Enums.Format.FORMAT_R12X4_UINT_PACK16_ARM',
+    -- 'Vulkan.Core10.Enums.Format.FORMAT_R12X4G12X4_UINT_2PACK16_ARM',
+    -- 'Vulkan.Core10.Enums.Format.FORMAT_R12X4G12X4B12X4A12X4_UINT_4PACK16_ARM',
+    -- 'Vulkan.Core10.Enums.Format.FORMAT_R14X2_UINT_PACK16_ARM',
+    -- 'Vulkan.Core10.Enums.Format.FORMAT_R14X2G14X2_UINT_2PACK16_ARM', and
+    -- 'Vulkan.Core10.Enums.Format.FORMAT_R14X2G14X2B14X2A14X2_UINT_4PACK16_ARM',
+    -- with at least the following
+    -- 'Vulkan.Core10.Enums.FormatFeatureFlagBits.FormatFeatureFlagBits':
+    --
+    -- -   'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_BIT'
+    --
+    -- -   'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_TRANSFER_SRC_BIT'
+    --
+    -- -   'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_TRANSFER_DST_BIT'
+    formatPack :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceFormatPackFeaturesARM)
+#endif
+deriving instance Show PhysicalDeviceFormatPackFeaturesARM
+
+instance ToCStruct PhysicalDeviceFormatPackFeaturesARM where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceFormatPackFeaturesARM{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_FORMAT_PACK_FEATURES_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (formatPack))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_FORMAT_PACK_FEATURES_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceFormatPackFeaturesARM where
+  peekCStruct p = do
+    formatPack <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDeviceFormatPackFeaturesARM
+             (bool32ToBool formatPack)
+
+instance Storable PhysicalDeviceFormatPackFeaturesARM where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceFormatPackFeaturesARM where
+  zero = PhysicalDeviceFormatPackFeaturesARM
+           zero
+
+
+type ARM_FORMAT_PACK_SPEC_VERSION = 1
+
+-- No documentation found for TopLevel "VK_ARM_FORMAT_PACK_SPEC_VERSION"
+pattern ARM_FORMAT_PACK_SPEC_VERSION :: forall a . Integral a => a
+pattern ARM_FORMAT_PACK_SPEC_VERSION = 1
+
+
+type ARM_FORMAT_PACK_EXTENSION_NAME = "VK_ARM_format_pack"
+
+-- No documentation found for TopLevel "VK_ARM_FORMAT_PACK_EXTENSION_NAME"
+pattern ARM_FORMAT_PACK_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern ARM_FORMAT_PACK_EXTENSION_NAME = "VK_ARM_format_pack"
+
diff --git a/src/Vulkan/Extensions/VK_ARM_format_pack.hs-boot b/src/Vulkan/Extensions/VK_ARM_format_pack.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_ARM_format_pack.hs-boot
@@ -0,0 +1,157 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_ARM_format_pack - device extension
+--
+-- = VK_ARM_format_pack
+--
+-- [__Name String__]
+--     @VK_ARM_format_pack@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     610
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Not ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
+--
+-- [__Contact__]
+--
+--     -   Jan-Harald Fredriksen
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_ARM_format_pack] @janharaldfredriksen-arm%0A*Here describe the issue or question you have about the VK_ARM_format_pack extension* >
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2025-03-24
+--
+-- [__Interactions and External Dependencies__; __Contributors__]
+--
+--     -   Jan-Harald Fredriksen, Arm
+--
+--     -   Lisa Wu, Arm
+--
+--     -   Oivind Boge, Arm
+--
+-- == Description
+--
+-- This extension adds support for additional 1-, 2- and 4-component
+-- formats with 10, 12, or 14 bits of components in 16-bit containers.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceFormatPackFeaturesARM'
+--
+-- == New Enum Constants
+--
+-- -   'ARM_FORMAT_PACK_EXTENSION_NAME'
+--
+-- -   'ARM_FORMAT_PACK_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.Format.Format':
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_G14X2_B14X2R14X2_2PLANE_420_UNORM_3PACK16_ARM'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_G14X2_B14X2R14X2_2PLANE_422_UNORM_3PACK16_ARM'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_R10X6G10X6B10X6A10X6_UINT_4PACK16_ARM'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_R10X6G10X6_UINT_2PACK16_ARM'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_R10X6_UINT_PACK16_ARM'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_R12X4G12X4B12X4A12X4_UINT_4PACK16_ARM'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_R12X4G12X4_UINT_2PACK16_ARM'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_R12X4_UINT_PACK16_ARM'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_R14X2G14X2B14X2A14X2_UINT_4PACK16_ARM'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_R14X2G14X2B14X2A14X2_UNORM_4PACK16_ARM'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_R14X2G14X2_UINT_2PACK16_ARM'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_R14X2G14X2_UNORM_2PACK16_ARM'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_R14X2_UINT_PACK16_ARM'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_R14X2_UNORM_PACK16_ARM'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_FORMAT_PACK_FEATURES_ARM'
+--
+-- === What do we call this extension?
+--
+-- __RESOLVED__
+--
+-- Many existing extension have the format in the name, but in this case we
+-- want to expose multiple formats.
+--
+-- We will describe this set of formats as a “pack”.
+--
+-- === Compatibility classes
+--
+-- [__RESOLVED__]
+--     Should these additional formats be in the same compatibility class
+--     as any other formats? For single-plane formats, we put formats with
+--     the same number of bits (but different types) in the same class.
+--     Each multi-plane or subsampled format gets its own compatibility
+--     class. This is consistent with how existing formats are handled.
+--
+-- === Format feature requirements
+--
+-- [__RESOLVED__]
+--     The format feature queries could be used to determine what is
+--     supported on any given implementation, but it may be useful to
+--     establish a baseline requirement in the specification. For that
+--     purpose, we require a set of format features - sufficient to enable
+--     texture operations - to be supported for the added unsigned integer
+--     single-plane formats. Other formats and format features are
+--     optional.
+--
+-- == Version History
+--
+-- -   Revision 1, 2025-03-24
+--
+--     -   Initial revision
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_ARM_format_pack Vulkan Specification>.
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_ARM_format_pack  (PhysicalDeviceFormatPackFeaturesARM) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data PhysicalDeviceFormatPackFeaturesARM
+
+instance ToCStruct PhysicalDeviceFormatPackFeaturesARM
+instance Show PhysicalDeviceFormatPackFeaturesARM
+
+instance FromCStruct PhysicalDeviceFormatPackFeaturesARM
+
diff --git a/src/Vulkan/Extensions/VK_ARM_pipeline_opacity_micromap.hs b/src/Vulkan/Extensions/VK_ARM_pipeline_opacity_micromap.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_ARM_pipeline_opacity_micromap.hs
@@ -0,0 +1,242 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_ARM_pipeline_opacity_micromap - device extension
+--
+-- = VK_ARM_pipeline_opacity_micromap
+--
+-- [__Name String__]
+--     @VK_ARM_pipeline_opacity_micromap@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     597
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Not ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_opacity_micromap VK_EXT_opacity_micromap>
+--
+-- [__Contact__]
+--
+--     -   Mathieu Robart
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_ARM_pipeline_opacity_micromap] @mathieurobart-arm%0A*Here describe the issue or question you have about the VK_ARM_pipeline_opacity_micromap extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_ARM_pipeline_opacity_micromap.adoc VK_ARM_pipeline_opacity_micromap>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2025-01-07
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Contributors__]
+--
+--     -   Mathieu Robart, Arm
+--
+--     -   Marius Bjorge, Arm
+--
+--     -   Yaozhong Zhang, Arm
+--
+--     -   Jan-Harald Fredriksen, Arm
+--
+-- == Description
+--
+-- The Opacity Micromap extension @VK_EXT_opacity_micromap@ supports the
+-- new pipeline creation flag
+-- 'Vulkan.Extensions.VK_EXT_opacity_micromap.PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT',
+-- indicating that the ray tracing pipeline may be used with acceleration
+-- structures referencing micromaps. This allows for possible
+-- optimizations, knowing beforehand that opacity micromaps may be used
+-- with the pipeline.
+--
+-- An equivalent flag does not exist for pipelines supporting Ray Query
+-- with opacity micromaps, such as graphics and compute. Consequently, it
+-- is currently not possible to optimize such pipelines for no-opacity,
+-- e.g. when opacity micromaps are supported by an application but not used
+-- by the pipeline. This may lead to performance degradation.
+--
+-- This extension adds a new flag,
+-- 'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DISALLOW_OPACITY_MICROMAP_BIT_ARM',
+-- indicating that a pipeline will NOT be used with an acceleration
+-- structure referencing an opacity micromap, therefore allowing possible
+-- pipeline optimizations.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDevicePipelineOpacityMicromapFeaturesARM'
+--
+-- == New Enum Constants
+--
+-- -   'ARM_PIPELINE_OPACITY_MICROMAP_EXTENSION_NAME'
+--
+-- -   'ARM_PIPELINE_OPACITY_MICROMAP_SPEC_VERSION'
+--
+-- -   Extending
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PipelineCreateFlagBits2':
+--
+--     -   'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DISALLOW_OPACITY_MICROMAP_BIT_ARM'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_OPACITY_MICROMAP_FEATURES_ARM'
+--
+-- == Issues
+--
+-- None.
+--
+-- == Examples
+--
+-- None.
+--
+-- == Version History
+--
+-- -   Revision 1, 2025-01-07 (Mathieu Robart)
+--
+--     -   Initial draft
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_ARM_pipeline_opacity_micromap Vulkan Specification>.
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_ARM_pipeline_opacity_micromap  ( PhysicalDevicePipelineOpacityMicromapFeaturesARM(..)
+                                                           , ARM_PIPELINE_OPACITY_MICROMAP_SPEC_VERSION
+                                                           , pattern ARM_PIPELINE_OPACITY_MICROMAP_SPEC_VERSION
+                                                           , ARM_PIPELINE_OPACITY_MICROMAP_EXTENSION_NAME
+                                                           , pattern ARM_PIPELINE_OPACITY_MICROMAP_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_PIPELINE_OPACITY_MICROMAP_FEATURES_ARM))
+-- | VkPhysicalDevicePipelineOpacityMicromapFeaturesARM - Structure
+-- describing features supported by VK_ARM_pipeline_opacity_micromap
+--
+-- = Members
+--
+-- This structure describes the following features:
+--
+-- = Description
+--
+-- If the 'PhysicalDevicePipelineOpacityMicromapFeaturesARM' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDevicePipelineOpacityMicromapFeaturesARM', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_pipeline_opacity_micromap VK_ARM_pipeline_opacity_micromap>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDevicePipelineOpacityMicromapFeaturesARM = PhysicalDevicePipelineOpacityMicromapFeaturesARM
+  { -- | #features-pipelineOpacityMicromap# @pipelineOpacityMicromap@ indicates
+    -- if a pipeline /can/ declare if it can be used with an acceleration
+    -- structure referencing an opacity micromap, or not.
+    pipelineOpacityMicromap :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDevicePipelineOpacityMicromapFeaturesARM)
+#endif
+deriving instance Show PhysicalDevicePipelineOpacityMicromapFeaturesARM
+
+instance ToCStruct PhysicalDevicePipelineOpacityMicromapFeaturesARM where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDevicePipelineOpacityMicromapFeaturesARM{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_OPACITY_MICROMAP_FEATURES_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (pipelineOpacityMicromap))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_OPACITY_MICROMAP_FEATURES_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDevicePipelineOpacityMicromapFeaturesARM where
+  peekCStruct p = do
+    pipelineOpacityMicromap <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDevicePipelineOpacityMicromapFeaturesARM
+             (bool32ToBool pipelineOpacityMicromap)
+
+instance Storable PhysicalDevicePipelineOpacityMicromapFeaturesARM where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDevicePipelineOpacityMicromapFeaturesARM where
+  zero = PhysicalDevicePipelineOpacityMicromapFeaturesARM
+           zero
+
+
+type ARM_PIPELINE_OPACITY_MICROMAP_SPEC_VERSION = 1
+
+-- No documentation found for TopLevel "VK_ARM_PIPELINE_OPACITY_MICROMAP_SPEC_VERSION"
+pattern ARM_PIPELINE_OPACITY_MICROMAP_SPEC_VERSION :: forall a . Integral a => a
+pattern ARM_PIPELINE_OPACITY_MICROMAP_SPEC_VERSION = 1
+
+
+type ARM_PIPELINE_OPACITY_MICROMAP_EXTENSION_NAME = "VK_ARM_pipeline_opacity_micromap"
+
+-- No documentation found for TopLevel "VK_ARM_PIPELINE_OPACITY_MICROMAP_EXTENSION_NAME"
+pattern ARM_PIPELINE_OPACITY_MICROMAP_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern ARM_PIPELINE_OPACITY_MICROMAP_EXTENSION_NAME = "VK_ARM_pipeline_opacity_micromap"
+
diff --git a/src/Vulkan/Extensions/VK_ARM_pipeline_opacity_micromap.hs-boot b/src/Vulkan/Extensions/VK_ARM_pipeline_opacity_micromap.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_ARM_pipeline_opacity_micromap.hs-boot
@@ -0,0 +1,134 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_ARM_pipeline_opacity_micromap - device extension
+--
+-- = VK_ARM_pipeline_opacity_micromap
+--
+-- [__Name String__]
+--     @VK_ARM_pipeline_opacity_micromap@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     597
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Not ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_opacity_micromap VK_EXT_opacity_micromap>
+--
+-- [__Contact__]
+--
+--     -   Mathieu Robart
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_ARM_pipeline_opacity_micromap] @mathieurobart-arm%0A*Here describe the issue or question you have about the VK_ARM_pipeline_opacity_micromap extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_ARM_pipeline_opacity_micromap.adoc VK_ARM_pipeline_opacity_micromap>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2025-01-07
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Contributors__]
+--
+--     -   Mathieu Robart, Arm
+--
+--     -   Marius Bjorge, Arm
+--
+--     -   Yaozhong Zhang, Arm
+--
+--     -   Jan-Harald Fredriksen, Arm
+--
+-- == Description
+--
+-- The Opacity Micromap extension @VK_EXT_opacity_micromap@ supports the
+-- new pipeline creation flag
+-- 'Vulkan.Extensions.VK_EXT_opacity_micromap.PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT',
+-- indicating that the ray tracing pipeline may be used with acceleration
+-- structures referencing micromaps. This allows for possible
+-- optimizations, knowing beforehand that opacity micromaps may be used
+-- with the pipeline.
+--
+-- An equivalent flag does not exist for pipelines supporting Ray Query
+-- with opacity micromaps, such as graphics and compute. Consequently, it
+-- is currently not possible to optimize such pipelines for no-opacity,
+-- e.g. when opacity micromaps are supported by an application but not used
+-- by the pipeline. This may lead to performance degradation.
+--
+-- This extension adds a new flag,
+-- 'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DISALLOW_OPACITY_MICROMAP_BIT_ARM',
+-- indicating that a pipeline will NOT be used with an acceleration
+-- structure referencing an opacity micromap, therefore allowing possible
+-- pipeline optimizations.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDevicePipelineOpacityMicromapFeaturesARM'
+--
+-- == New Enum Constants
+--
+-- -   'ARM_PIPELINE_OPACITY_MICROMAP_EXTENSION_NAME'
+--
+-- -   'ARM_PIPELINE_OPACITY_MICROMAP_SPEC_VERSION'
+--
+-- -   Extending
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PipelineCreateFlagBits2':
+--
+--     -   'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DISALLOW_OPACITY_MICROMAP_BIT_ARM'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_OPACITY_MICROMAP_FEATURES_ARM'
+--
+-- == Issues
+--
+-- None.
+--
+-- == Examples
+--
+-- None.
+--
+-- == Version History
+--
+-- -   Revision 1, 2025-01-07 (Mathieu Robart)
+--
+--     -   Initial draft
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_ARM_pipeline_opacity_micromap Vulkan Specification>.
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_ARM_pipeline_opacity_micromap  (PhysicalDevicePipelineOpacityMicromapFeaturesARM) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data PhysicalDevicePipelineOpacityMicromapFeaturesARM
+
+instance ToCStruct PhysicalDevicePipelineOpacityMicromapFeaturesARM
+instance Show PhysicalDevicePipelineOpacityMicromapFeaturesARM
+
+instance FromCStruct PhysicalDevicePipelineOpacityMicromapFeaturesARM
+
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
@@ -39,7 +39,7 @@
 -- == Other Extension Metadata
 --
 -- [__Last Modified Date__]
---     2021-11-12
+--     2026-01-16
 --
 -- [__IP Status__]
 --     No known IP claims.
@@ -105,14 +105,7 @@
 --
 -- == Issues
 --
--- 1) Is there any interaction with the @VK_KHR_dynamic_rendering@
--- extension?
---
--- No. This extension only affects reads from input attachments. Render
--- pass instances begun with
--- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR' do not
--- have input attachments and a different mechanism will be needed to
--- provide similar functionality in this case.
+-- See the Issues for @VK_EXT_rasterization_order_attachment_access@.
 --
 -- == Examples
 --
@@ -124,6 +117,8 @@
 --
 --     -   Initial draft
 --
+--     -   Updated Issues section 2026-01-16
+--
 -- == See Also
 --
 -- No cross-references are available
@@ -131,7 +126,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_ARM_rasterization_order_attachment_access Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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_render_pass_striped.hs b/src/Vulkan/Extensions/VK_ARM_render_pass_striped.hs
--- a/src/Vulkan/Extensions/VK_ARM_render_pass_striped.hs
+++ b/src/Vulkan/Extensions/VK_ARM_render_pass_striped.hs
@@ -127,7 +127,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_ARM_render_pass_striped Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_ARM_render_pass_striped Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -196,12 +196,22 @@
 -- 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. 'PhysicalDeviceRenderPassStripedFeaturesARM' /can/ also be
--- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceRenderPassStripedFeaturesARM', it /must/ add an instance
+-- of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_render_pass_striped VK_ARM_render_pass_striped>,
@@ -267,8 +277,12 @@
 -- it is filled in with each corresponding implementation-dependent
 -- property.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_render_pass_striped VK_ARM_render_pass_striped>,
@@ -414,6 +428,14 @@
 -- -   #VUID-VkRenderPassStripeBeginInfoARM-stripeInfoCount-arraylength#
 --     @stripeInfoCount@ /must/ be greater than @0@
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.CommandBufferBuilding.RenderPassBeginInfo'
+--
+--     -   'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_render_pass_striped VK_ARM_render_pass_striped>,
@@ -508,6 +530,12 @@
 --
 -- -   #VUID-VkRenderPassStripeSubmitInfoARM-stripeSemaphoreInfoCount-arraylength#
 --     @stripeSemaphoreInfoCount@ /must/ be greater than @0@
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.CommandBufferSubmitInfo'
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Extensions/VK_ARM_render_pass_striped.hs-boot b/src/Vulkan/Extensions/VK_ARM_render_pass_striped.hs-boot
--- a/src/Vulkan/Extensions/VK_ARM_render_pass_striped.hs-boot
+++ b/src/Vulkan/Extensions/VK_ARM_render_pass_striped.hs-boot
@@ -127,7 +127,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_ARM_render_pass_striped Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_ARM_render_pass_striped Vulkan Specification>.
 --
 -- This 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_scheduling_controls.hs b/src/Vulkan/Extensions/VK_ARM_scheduling_controls.hs
--- a/src/Vulkan/Extensions/VK_ARM_scheduling_controls.hs
+++ b/src/Vulkan/Extensions/VK_ARM_scheduling_controls.hs
@@ -15,7 +15,7 @@
 --     418
 --
 -- [__Revision__]
---     1
+--     2
 --
 -- [__Ratification Status__]
 --     Not ratified
@@ -31,7 +31,7 @@
 -- == Other Extension Metadata
 --
 -- [__Last Modified Date__]
---     2023-08-23
+--     2025-09-05
 --
 -- [__Interactions and External Dependencies__]
 --     None
@@ -52,8 +52,14 @@
 -- This extension exposes a collection of controls to modify the scheduling
 -- behavior of Arm Mali devices.
 --
+-- == New Commands
+--
+-- -   'cmdSetDispatchParametersARM'
+--
 -- == New Structures
 --
+-- -   'DispatchParametersARM'
+--
 -- -   Extending 'Vulkan.Core10.Device.DeviceQueueCreateInfo',
 --     'Vulkan.Core10.Device.DeviceCreateInfo':
 --
@@ -68,6 +74,8 @@
 -- -   Extending
 --     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
 --
+--     -   'PhysicalDeviceSchedulingControlsDispatchParametersPropertiesARM'
+--
 --     -   'PhysicalDeviceSchedulingControlsPropertiesARM'
 --
 -- == New Enums
@@ -88,6 +96,10 @@
 --
 --     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEVICE_QUEUE_SHADER_CORE_CONTROL_CREATE_INFO_ARM'
 --
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DISPATCH_PARAMETERS_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_DISPATCH_PARAMETERS_PROPERTIES_ARM'
+--
 --     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_FEATURES_ARM'
 --
 --     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_PROPERTIES_ARM'
@@ -102,6 +114,18 @@
 --
 -- == Version History
 --
+-- -   Revision 2, 2025-09-05 (Kévin Petit)
+--
+--     -   Add dispatch parameters controls
+--
+--         -   'PHYSICAL_DEVICE_SCHEDULING_CONTROLS_DISPATCH_PARAMETERS_ARM'
+--
+--         -   'cmdSetDispatchParametersARM'
+--
+--         -   'DispatchParametersARM'
+--
+--         -   'PhysicalDeviceSchedulingControlsDispatchParametersPropertiesARM'
+--
 -- -   Revision 1, 2023-08-23 (Kévin Petit)
 --
 --     -   Initial revision
@@ -113,15 +137,19 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_ARM_scheduling_controls Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_ARM_scheduling_controls Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
-module Vulkan.Extensions.VK_ARM_scheduling_controls  ( DeviceQueueShaderCoreControlCreateInfoARM(..)
+module Vulkan.Extensions.VK_ARM_scheduling_controls  ( cmdSetDispatchParametersARM
+                                                     , DeviceQueueShaderCoreControlCreateInfoARM(..)
                                                      , PhysicalDeviceSchedulingControlsFeaturesARM(..)
                                                      , PhysicalDeviceSchedulingControlsPropertiesARM(..)
+                                                     , PhysicalDeviceSchedulingControlsDispatchParametersPropertiesARM(..)
+                                                     , DispatchParametersARM(..)
                                                      , PhysicalDeviceSchedulingControlsFlagsARM
                                                      , PhysicalDeviceSchedulingControlsFlagBitsARM( PHYSICAL_DEVICE_SCHEDULING_CONTROLS_SHADER_CORE_COUNT_ARM
+                                                                                                  , PHYSICAL_DEVICE_SCHEDULING_CONTROLS_DISPATCH_PARAMETERS_ARM
                                                                                                   , ..
                                                                                                   )
                                                      , ARM_SCHEDULING_CONTROLS_SPEC_VERSION
@@ -134,17 +162,25 @@
 import Data.Bits (FiniteBits)
 import Vulkan.Internal.Utils (enumReadPrec)
 import Vulkan.Internal.Utils (enumShowsPrec)
+import Vulkan.Internal.Utils (traceAroundEvent)
+import Control.Monad (unless)
+import Control.Monad.IO.Class (liftIO)
 import Foreign.Marshal.Alloc (allocaBytes)
+import GHC.IO (throwIO)
+import GHC.Ptr (nullFunPtr)
 import Foreign.Ptr (nullPtr)
 import Foreign.Ptr (plusPtr)
 import GHC.Show (showString)
 import Numeric (showHex)
+import Control.Monad.Trans.Class (lift)
+import Control.Monad.Trans.Cont (evalContT)
 import 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.String (IsString)
 import Data.Typeable (Typeable)
 import Foreign.Storable (Storable)
@@ -152,19 +188,132 @@
 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 Vulkan.Core10.FundamentalTypes (bool32ToBool)
 import Vulkan.Core10.FundamentalTypes (boolToBool32)
 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(pVkCmdSetDispatchParametersARM))
 import Vulkan.Core10.FundamentalTypes (Flags64)
 import Vulkan.Core10.Enums.StructureType (StructureType)
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEVICE_QUEUE_SHADER_CORE_CONTROL_CREATE_INFO_ARM))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DISPATCH_PARAMETERS_ARM))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_DISPATCH_PARAMETERS_PROPERTIES_ARM))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_FEATURES_ARM))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_PROPERTIES_ARM))
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdSetDispatchParametersARM
+  :: FunPtr (Ptr CommandBuffer_T -> Ptr DispatchParametersARM -> IO ()) -> Ptr CommandBuffer_T -> Ptr DispatchParametersARM -> IO ()
+
+-- | vkCmdSetDispatchParametersARM - Set parameters that affect dispatch
+-- commands
+--
+-- = Description
+--
+-- Parameters set using 'cmdSetDispatchParametersARM' affect the following
+-- dispatch commands:
+--
+-- -   'Vulkan.Core10.CommandBufferBuilding.cmdDispatch'
+--
+-- -   'Vulkan.Core11.Promoted_From_VK_KHR_device_group.cmdDispatchBase'
+--
+-- -   'Vulkan.Core10.CommandBufferBuilding.cmdDispatchIndirect'
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdSetDispatchParametersARM-schedulingControlsFlags-12391#
+--     'PhysicalDeviceSchedulingControlsPropertiesARM'::@schedulingControlsFlags@
+--     /must/ contain
+--     'PHYSICAL_DEVICE_SCHEDULING_CONTROLS_DISPATCH_PARAMETERS_ARM'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdSetDispatchParametersARM-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdSetDispatchParametersARM-pDispatchParameters-parameter#
+--     @pDispatchParameters@ /must/ be a valid pointer to a valid
+--     'DispatchParametersARM' structure
+--
+-- -   #VUID-vkCmdSetDispatchParametersARM-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-vkCmdSetDispatchParametersARM-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT' operations
+--
+-- -   #VUID-vkCmdSetDispatchParametersARM-renderpass# This command /must/
+--     only be called outside of a render pass instance
+--
+-- -   #VUID-vkCmdSetDispatchParametersARM-videocoding# This command /must/
+--     only be called outside of a video coding scope
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | State                                                                                                                                  |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdSetDispatchParametersARM is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_scheduling_controls VK_ARM_scheduling_controls>,
+-- 'Vulkan.Core10.Handles.CommandBuffer', 'DispatchParametersARM'
+cmdSetDispatchParametersARM :: forall io
+                             . (MonadIO io)
+                            => -- | @commandBuffer@ is the command buffer into which the command will be
+                               -- recorded.
+                               CommandBuffer
+                            -> -- | @pDispatchParameters@ is a pointer to a 'DispatchParametersARM'
+                               -- structure specifying the dispatch parameters to be set.
+                               DispatchParametersARM
+                            -> io ()
+cmdSetDispatchParametersARM commandBuffer
+                              dispatchParameters = liftIO . evalContT $ do
+  let vkCmdSetDispatchParametersARMPtr = pVkCmdSetDispatchParametersARM (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdSetDispatchParametersARMPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetDispatchParametersARM is null" Nothing Nothing
+  let vkCmdSetDispatchParametersARM' = mkVkCmdSetDispatchParametersARM vkCmdSetDispatchParametersARMPtr
+  pDispatchParameters <- ContT $ withCStruct (dispatchParameters)
+  lift $ traceAroundEvent "vkCmdSetDispatchParametersARM" (vkCmdSetDispatchParametersARM'
+                                                             (commandBufferHandle (commandBuffer))
+                                                             pDispatchParameters)
+  pure $ ()
+
+
 -- | VkDeviceQueueShaderCoreControlCreateInfoARM - Control the number of
 -- shader cores used by queues
 --
@@ -174,8 +323,14 @@
 -- 'DeviceQueueShaderCoreControlCreateInfoARM' will default to using all
 -- the shader cores available.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core10.Device.DeviceQueueCreateInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_scheduling_controls VK_ARM_scheduling_controls>,
@@ -241,12 +396,22 @@
 -- 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. 'PhysicalDeviceSchedulingControlsFeaturesARM' /can/ also be
--- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceSchedulingControlsFeaturesARM', it /must/ add an instance
+-- of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_scheduling_controls VK_ARM_scheduling_controls>,
@@ -312,20 +477,19 @@
 -- it is filled in with each corresponding implementation-dependent
 -- property.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_scheduling_controls VK_ARM_scheduling_controls>,
 -- 'PhysicalDeviceSchedulingControlsFlagsARM',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceSchedulingControlsPropertiesARM = PhysicalDeviceSchedulingControlsPropertiesARM
-  { -- | #VUID-VkPhysicalDeviceSchedulingControlsPropertiesARM-schedulingControlsFlags-parameter#
-    -- @schedulingControlsFlags@ /must/ be a valid combination of
-    -- 'PhysicalDeviceSchedulingControlsFlagBitsARM' values
-    --
-    -- #VUID-VkPhysicalDeviceSchedulingControlsPropertiesARM-schedulingControlsFlags-requiredbitmask#
-    -- @schedulingControlsFlags@ /must/ not be @0@
+  { -- No documentation found for Nested "VkPhysicalDeviceSchedulingControlsPropertiesARM" "schedulingControlsFlags"
     schedulingControlsFlags :: PhysicalDeviceSchedulingControlsFlagsARM }
   deriving (Typeable, Eq)
 #if defined(GENERIC_INSTANCES)
@@ -365,11 +529,207 @@
            zero
 
 
+-- | VkPhysicalDeviceSchedulingControlsDispatchParametersPropertiesARM -
+-- Structure containing scheduling control dispatch parameters properties
+-- of a physical device
+--
+-- = Members
+--
+-- -   #limits-schedulingControlsMaxWarpsCount#@schedulingControlsMaxWarpsCount@
+--     specifies the maximum number of warps that a shader core /can/ run
+--     concurrently.
+--
+-- -   #limits-schedulingControlsMaxQueuedWorkgroupBatchesCount#@schedulingControlsMaxQueuedWorkgroupBatchesCount@
+--     specifies the maximum number of workgroup batches that a shader core
+--     /can/ queue.
+--
+-- -   #limits-schedulingControlsMaxWorkGroupBatchSize#@schedulingControlsMaxWorkGroupBatchSize@
+--     specifies the maximum size of workgroup batches that /can/ be
+--     requested using 'DispatchParametersARM'::@workGroupBatchSize@.
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceSchedulingControlsDispatchParametersPropertiesARM'
+-- 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
+-- 'PhysicalDeviceSchedulingControlsPropertiesARM'::@schedulingControlsFlags@
+-- does not contain
+-- 'PHYSICAL_DEVICE_SCHEDULING_CONTROLS_DISPATCH_PARAMETERS_ARM' then
+-- @schedulingControlsMaxWarpCount@ and
+-- @schedulingControlsMaxQueuedBatchesCount@ are undefined.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_scheduling_controls VK_ARM_scheduling_controls>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceSchedulingControlsDispatchParametersPropertiesARM = PhysicalDeviceSchedulingControlsDispatchParametersPropertiesARM
+  { -- No documentation found for Nested "VkPhysicalDeviceSchedulingControlsDispatchParametersPropertiesARM" "schedulingControlsMaxWarpsCount"
+    schedulingControlsMaxWarpsCount :: Word32
+  , -- No documentation found for Nested "VkPhysicalDeviceSchedulingControlsDispatchParametersPropertiesARM" "schedulingControlsMaxQueuedBatchesCount"
+    schedulingControlsMaxQueuedBatchesCount :: Word32
+  , -- No documentation found for Nested "VkPhysicalDeviceSchedulingControlsDispatchParametersPropertiesARM" "schedulingControlsMaxWorkGroupBatchSize"
+    schedulingControlsMaxWorkGroupBatchSize :: Word32
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceSchedulingControlsDispatchParametersPropertiesARM)
+#endif
+deriving instance Show PhysicalDeviceSchedulingControlsDispatchParametersPropertiesARM
+
+instance ToCStruct PhysicalDeviceSchedulingControlsDispatchParametersPropertiesARM where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceSchedulingControlsDispatchParametersPropertiesARM{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_DISPATCH_PARAMETERS_PROPERTIES_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (schedulingControlsMaxWarpsCount)
+    poke ((p `plusPtr` 20 :: Ptr Word32)) (schedulingControlsMaxQueuedBatchesCount)
+    poke ((p `plusPtr` 24 :: Ptr Word32)) (schedulingControlsMaxWorkGroupBatchSize)
+    f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_DISPATCH_PARAMETERS_PROPERTIES_ARM)
+    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)
+    f
+
+instance FromCStruct PhysicalDeviceSchedulingControlsDispatchParametersPropertiesARM where
+  peekCStruct p = do
+    schedulingControlsMaxWarpsCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    schedulingControlsMaxQueuedBatchesCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
+    schedulingControlsMaxWorkGroupBatchSize <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))
+    pure $ PhysicalDeviceSchedulingControlsDispatchParametersPropertiesARM
+             schedulingControlsMaxWarpsCount
+             schedulingControlsMaxQueuedBatchesCount
+             schedulingControlsMaxWorkGroupBatchSize
+
+instance Storable PhysicalDeviceSchedulingControlsDispatchParametersPropertiesARM where
+  sizeOf ~_ = 32
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceSchedulingControlsDispatchParametersPropertiesARM where
+  zero = PhysicalDeviceSchedulingControlsDispatchParametersPropertiesARM
+           zero
+           zero
+           zero
+
+
+-- | VkDispatchParametersARM - Structure specifying parameters that affect
+-- dispatch commands
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_scheduling_controls VK_ARM_scheduling_controls>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'cmdSetDispatchParametersARM'
+data DispatchParametersARM = DispatchParametersARM
+  { -- | @workGroupBatchSize@, if it is not 0, is the number of workgroups in
+    -- each batch distributed to shader cores. Otherwise, the implementation
+    -- selects the number of workgroups in each batch.
+    --
+    -- #VUID-VkDispatchParametersARM-workGroupBatchSize-12394#
+    -- @workGroupBatchSize@ /must/ be less than or equal to
+    -- 'PhysicalDeviceSchedulingControlsPropertiesARM'::@schedulingControlsMaxWorkGroupBatchSize@
+    workGroupBatchSize :: Word32
+  , -- | @maxQueuedWorkGroupBatches@, if it is not 0, is the maximum number of
+    -- workgroup batches that shader cores /may/ queue. Otherwise, the
+    -- implementation selects the maximum number of workgroup batches that
+    -- shader cores /may/ queue.
+    --
+    -- #VUID-VkDispatchParametersARM-maxQueuedWorkGroupBatches-12393#
+    -- @maxQueuedWorkGroupBatches@ /must/ be less than or equal to
+    -- 'PhysicalDeviceSchedulingControlsDispatchParametersPropertiesARM'::@schedulingControlsMaxQueuedBatchesCount@
+    maxQueuedWorkGroupBatches :: Word32
+  , -- | @maxWarpsPerShaderCore@, if it is not 0, is the maximum number of warps
+    -- that /may/ run concurrently on individual shader cores. Otherwise, the
+    -- implementation selects the maximum number of warps that /may/ run
+    -- concurrently on individual shader cores.
+    --
+    -- #VUID-VkDispatchParametersARM-maxWarpsPerShaderCore-12392#
+    -- @maxWarpsPerShaderCore@ /must/ be less than or equal to
+    -- 'PhysicalDeviceSchedulingControlsDispatchParametersPropertiesARM'::@schedulingControlsMaxWarpCount@
+    maxWarpsPerShaderCore :: Word32
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (DispatchParametersARM)
+#endif
+deriving instance Show DispatchParametersARM
+
+instance ToCStruct DispatchParametersARM where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p DispatchParametersARM{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DISPATCH_PARAMETERS_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (workGroupBatchSize)
+    poke ((p `plusPtr` 20 :: Ptr Word32)) (maxQueuedWorkGroupBatches)
+    poke ((p `plusPtr` 24 :: Ptr Word32)) (maxWarpsPerShaderCore)
+    f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DISPATCH_PARAMETERS_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    f
+
+instance FromCStruct DispatchParametersARM where
+  peekCStruct p = do
+    workGroupBatchSize <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    maxQueuedWorkGroupBatches <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
+    maxWarpsPerShaderCore <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))
+    pure $ DispatchParametersARM
+             workGroupBatchSize maxQueuedWorkGroupBatches maxWarpsPerShaderCore
+
+instance Storable DispatchParametersARM where
+  sizeOf ~_ = 32
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero DispatchParametersARM where
+  zero = DispatchParametersARM
+           zero
+           zero
+           zero
+
+
 type PhysicalDeviceSchedulingControlsFlagsARM = PhysicalDeviceSchedulingControlsFlagBitsARM
 
 -- | VkPhysicalDeviceSchedulingControlsFlagBitsARM - Bitmask specifying
 -- scheduling controls supported by a physical device
 --
+-- = Description
+--
+-- -   'PHYSICAL_DEVICE_SCHEDULING_CONTROLS_SHADER_CORE_COUNT_ARM'
+--     specifies that a 'DeviceQueueShaderCoreControlCreateInfoARM'
+--     structure /may/ be included in the @pNext@ chain of a
+--     'Vulkan.Core10.Device.DeviceQueueCreateInfo' or
+--     'Vulkan.Core10.Device.DeviceCreateInfo' structure.
+--
+-- -   'PHYSICAL_DEVICE_SCHEDULING_CONTROLS_DISPATCH_PARAMETERS_ARM'
+--     specifies that a 'cmdSetDispatchParametersARM' command /may/ be
+--     recorded in a command buffer and that properties returned in
+--     'PhysicalDeviceSchedulingControlsDispatchParametersPropertiesARM'
+--     are valid.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_scheduling_controls VK_ARM_scheduling_controls>,
@@ -377,25 +737,28 @@
 newtype PhysicalDeviceSchedulingControlsFlagBitsARM = PhysicalDeviceSchedulingControlsFlagBitsARM Flags64
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'PHYSICAL_DEVICE_SCHEDULING_CONTROLS_SHADER_CORE_COUNT_ARM' specifies
--- that a 'DeviceQueueShaderCoreControlCreateInfoARM' structure /may/ be
--- included in the @pNext@ chain of a
--- 'Vulkan.Core10.Device.DeviceQueueCreateInfo' or
--- 'Vulkan.Core10.Device.DeviceCreateInfo' structure.
+-- No documentation found for Nested "VkPhysicalDeviceSchedulingControlsFlagBitsARM" "VK_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_SHADER_CORE_COUNT_ARM"
 pattern PHYSICAL_DEVICE_SCHEDULING_CONTROLS_SHADER_CORE_COUNT_ARM = PhysicalDeviceSchedulingControlsFlagBitsARM 0x0000000000000001
 
+-- No documentation found for Nested "VkPhysicalDeviceSchedulingControlsFlagBitsARM" "VK_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_DISPATCH_PARAMETERS_ARM"
+pattern PHYSICAL_DEVICE_SCHEDULING_CONTROLS_DISPATCH_PARAMETERS_ARM = PhysicalDeviceSchedulingControlsFlagBitsARM 0x0000000000000002
+
 conNamePhysicalDeviceSchedulingControlsFlagBitsARM :: String
 conNamePhysicalDeviceSchedulingControlsFlagBitsARM = "PhysicalDeviceSchedulingControlsFlagBitsARM"
 
 enumPrefixPhysicalDeviceSchedulingControlsFlagBitsARM :: String
-enumPrefixPhysicalDeviceSchedulingControlsFlagBitsARM = "PHYSICAL_DEVICE_SCHEDULING_CONTROLS_SHADER_CORE_COUNT_ARM"
+enumPrefixPhysicalDeviceSchedulingControlsFlagBitsARM = "PHYSICAL_DEVICE_SCHEDULING_CONTROLS_"
 
 showTablePhysicalDeviceSchedulingControlsFlagBitsARM :: [(PhysicalDeviceSchedulingControlsFlagBitsARM, String)]
 showTablePhysicalDeviceSchedulingControlsFlagBitsARM =
   [
     ( PHYSICAL_DEVICE_SCHEDULING_CONTROLS_SHADER_CORE_COUNT_ARM
-    , ""
+    , "SHADER_CORE_COUNT_ARM"
     )
+  ,
+    ( PHYSICAL_DEVICE_SCHEDULING_CONTROLS_DISPATCH_PARAMETERS_ARM
+    , "DISPATCH_PARAMETERS_ARM"
+    )
   ]
 
 instance Show PhysicalDeviceSchedulingControlsFlagBitsARM where
@@ -415,11 +778,11 @@
       conNamePhysicalDeviceSchedulingControlsFlagBitsARM
       PhysicalDeviceSchedulingControlsFlagBitsARM
 
-type ARM_SCHEDULING_CONTROLS_SPEC_VERSION = 1
+type ARM_SCHEDULING_CONTROLS_SPEC_VERSION = 2
 
 -- No documentation found for TopLevel "VK_ARM_SCHEDULING_CONTROLS_SPEC_VERSION"
 pattern ARM_SCHEDULING_CONTROLS_SPEC_VERSION :: forall a . Integral a => a
-pattern ARM_SCHEDULING_CONTROLS_SPEC_VERSION = 1
+pattern ARM_SCHEDULING_CONTROLS_SPEC_VERSION = 2
 
 
 type ARM_SCHEDULING_CONTROLS_EXTENSION_NAME = "VK_ARM_scheduling_controls"
diff --git a/src/Vulkan/Extensions/VK_ARM_scheduling_controls.hs-boot b/src/Vulkan/Extensions/VK_ARM_scheduling_controls.hs-boot
--- a/src/Vulkan/Extensions/VK_ARM_scheduling_controls.hs-boot
+++ b/src/Vulkan/Extensions/VK_ARM_scheduling_controls.hs-boot
@@ -15,7 +15,7 @@
 --     418
 --
 -- [__Revision__]
---     1
+--     2
 --
 -- [__Ratification Status__]
 --     Not ratified
@@ -31,7 +31,7 @@
 -- == Other Extension Metadata
 --
 -- [__Last Modified Date__]
---     2023-08-23
+--     2025-09-05
 --
 -- [__Interactions and External Dependencies__]
 --     None
@@ -52,8 +52,14 @@
 -- This extension exposes a collection of controls to modify the scheduling
 -- behavior of Arm Mali devices.
 --
+-- == New Commands
+--
+-- -   'cmdSetDispatchParametersARM'
+--
 -- == New Structures
 --
+-- -   'DispatchParametersARM'
+--
 -- -   Extending 'Vulkan.Core10.Device.DeviceQueueCreateInfo',
 --     'Vulkan.Core10.Device.DeviceCreateInfo':
 --
@@ -68,6 +74,8 @@
 -- -   Extending
 --     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
 --
+--     -   'PhysicalDeviceSchedulingControlsDispatchParametersPropertiesARM'
+--
 --     -   'PhysicalDeviceSchedulingControlsPropertiesARM'
 --
 -- == New Enums
@@ -88,6 +96,10 @@
 --
 --     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEVICE_QUEUE_SHADER_CORE_CONTROL_CREATE_INFO_ARM'
 --
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DISPATCH_PARAMETERS_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_DISPATCH_PARAMETERS_PROPERTIES_ARM'
+--
 --     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_FEATURES_ARM'
 --
 --     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_PROPERTIES_ARM'
@@ -102,6 +114,18 @@
 --
 -- == Version History
 --
+-- -   Revision 2, 2025-09-05 (Kévin Petit)
+--
+--     -   Add dispatch parameters controls
+--
+--         -   'PHYSICAL_DEVICE_SCHEDULING_CONTROLS_DISPATCH_PARAMETERS_ARM'
+--
+--         -   'cmdSetDispatchParametersARM'
+--
+--         -   'DispatchParametersARM'
+--
+--         -   'PhysicalDeviceSchedulingControlsDispatchParametersPropertiesARM'
+--
 -- -   Revision 1, 2023-08-23 (Kévin Petit)
 --
 --     -   Initial revision
@@ -113,11 +137,13 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_ARM_scheduling_controls Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_ARM_scheduling_controls Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
 module Vulkan.Extensions.VK_ARM_scheduling_controls  ( DeviceQueueShaderCoreControlCreateInfoARM
+                                                     , DispatchParametersARM
+                                                     , PhysicalDeviceSchedulingControlsDispatchParametersPropertiesARM
                                                      , PhysicalDeviceSchedulingControlsFeaturesARM
                                                      , PhysicalDeviceSchedulingControlsPropertiesARM
                                                      ) where
@@ -132,6 +158,22 @@
 instance Show DeviceQueueShaderCoreControlCreateInfoARM
 
 instance FromCStruct DeviceQueueShaderCoreControlCreateInfoARM
+
+
+data DispatchParametersARM
+
+instance ToCStruct DispatchParametersARM
+instance Show DispatchParametersARM
+
+instance FromCStruct DispatchParametersARM
+
+
+data PhysicalDeviceSchedulingControlsDispatchParametersPropertiesARM
+
+instance ToCStruct PhysicalDeviceSchedulingControlsDispatchParametersPropertiesARM
+instance Show PhysicalDeviceSchedulingControlsDispatchParametersPropertiesARM
+
+instance FromCStruct PhysicalDeviceSchedulingControlsDispatchParametersPropertiesARM
 
 
 data PhysicalDeviceSchedulingControlsFeaturesARM
diff --git a/src/Vulkan/Extensions/VK_ARM_shader_core_builtins.hs b/src/Vulkan/Extensions/VK_ARM_shader_core_builtins.hs
--- a/src/Vulkan/Extensions/VK_ARM_shader_core_builtins.hs
+++ b/src/Vulkan/Extensions/VK_ARM_shader_core_builtins.hs
@@ -93,19 +93,19 @@
 --
 -- == New or Modified Built-In Variables
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-corecountarm CoreCountARM>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-corecountarm CoreCountARM>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-coremaxidarm CoreMaxIDARM>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-coremaxidarm CoreMaxIDARM>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-coreidarm CoreIDARM>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-coreidarm CoreIDARM>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-warpmaxidarm WarpsMaxIDARM>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-warpmaxidarm WarpsMaxIDARM>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-warpidarm WarpIDARM>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-warpidarm WarpIDARM>
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-CoreBuiltinsARM CoreBuiltinsARM>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-CoreBuiltinsARM CoreBuiltinsARM>
 --
 -- == Issues
 --
@@ -128,7 +128,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_ARM_shader_core_builtins Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_ARM_shader_core_builtins Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -178,8 +178,12 @@
 -- it is filled in with each corresponding implementation-dependent
 -- property.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_shader_core_builtins VK_ARM_shader_core_builtins>,
@@ -258,11 +262,21 @@
 -- 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. 'PhysicalDeviceShaderCoreBuiltinsFeaturesARM' /can/ also be
--- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceShaderCoreBuiltinsFeaturesARM', it /must/ add an instance
+-- of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Extensions/VK_ARM_shader_core_builtins.hs-boot b/src/Vulkan/Extensions/VK_ARM_shader_core_builtins.hs-boot
--- a/src/Vulkan/Extensions/VK_ARM_shader_core_builtins.hs-boot
+++ b/src/Vulkan/Extensions/VK_ARM_shader_core_builtins.hs-boot
@@ -93,19 +93,19 @@
 --
 -- == New or Modified Built-In Variables
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-corecountarm CoreCountARM>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-corecountarm CoreCountARM>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-coremaxidarm CoreMaxIDARM>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-coremaxidarm CoreMaxIDARM>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-coreidarm CoreIDARM>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-coreidarm CoreIDARM>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-warpmaxidarm WarpsMaxIDARM>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-warpmaxidarm WarpsMaxIDARM>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-warpidarm WarpIDARM>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-warpidarm WarpIDARM>
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-CoreBuiltinsARM CoreBuiltinsARM>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-CoreBuiltinsARM CoreBuiltinsARM>
 --
 -- == Issues
 --
@@ -128,7 +128,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_ARM_shader_core_builtins Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_ARM_shader_core_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_ARM_shader_core_properties.hs b/src/Vulkan/Extensions/VK_ARM_shader_core_properties.hs
--- a/src/Vulkan/Extensions/VK_ARM_shader_core_properties.hs
+++ b/src/Vulkan/Extensions/VK_ARM_shader_core_properties.hs
@@ -81,7 +81,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_ARM_shader_core_properties Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_ARM_shader_core_properties Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -128,7 +128,11 @@
 -- it is filled in with each corresponding implementation-dependent
 -- property.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Extensions/VK_ARM_shader_core_properties.hs-boot b/src/Vulkan/Extensions/VK_ARM_shader_core_properties.hs-boot
--- a/src/Vulkan/Extensions/VK_ARM_shader_core_properties.hs-boot
+++ b/src/Vulkan/Extensions/VK_ARM_shader_core_properties.hs-boot
@@ -81,7 +81,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_ARM_shader_core_properties Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_ARM_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_ARM_shader_instrumentation.hs b/src/Vulkan/Extensions/VK_ARM_shader_instrumentation.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_ARM_shader_instrumentation.hs
@@ -0,0 +1,1324 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_ARM_shader_instrumentation - device extension
+--
+-- = VK_ARM_shader_instrumentation
+--
+-- [__Name String__]
+--     @VK_ARM_shader_instrumentation@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     608
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Not ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
+--
+-- [__API Interactions__]
+--
+--     -   Interacts with VK_EXT_shader_object
+--
+-- [__Special Use__]
+--
+--     -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-compatibility-specialuse Developer tools>
+--
+-- [__Contact__]
+--
+--     -   Jan-Harald Fredriksen
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_ARM_shader_instrumentation] @janharaldfredriksen-arm%0A*Here describe the issue or question you have about the VK_ARM_shader_instrumentation extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_ARM_shader_instrumentation.adoc VK_ARM_shader_instrumentation>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2026-02-26
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Contributors__]
+--
+--     -   Embla Flatlandsmo, Arm Ltd.
+--
+--     -   Jan-Harald Fredriksen, Arm Ltd.
+--
+--     -   Mikel Garai, Arm Ltd.
+--
+--     -   Peter Harris, Arm Ltd.
+--
+--     -   Ting Wei, Arm Ltd.
+--
+--     -   Torbjörn Nilsson, Arm Ltd.
+--
+-- == Description
+--
+-- This extension provides the ability to instrument shaders and capture
+-- performance metrics per shader type from commands executed by a queue.
+--
+-- == New Object Types
+--
+-- -   'Vulkan.Extensions.Handles.ShaderInstrumentationARM'
+--
+-- == New Commands
+--
+-- -   'clearShaderInstrumentationMetricsARM'
+--
+-- -   'cmdBeginShaderInstrumentationARM'
+--
+-- -   'cmdEndShaderInstrumentationARM'
+--
+-- -   'createShaderInstrumentationARM'
+--
+-- -   'destroyShaderInstrumentationARM'
+--
+-- -   'enumeratePhysicalDeviceShaderInstrumentationMetricsARM'
+--
+-- -   'getShaderInstrumentationValuesARM'
+--
+-- == New Structures
+--
+-- -   'ShaderInstrumentationCreateInfoARM'
+--
+-- -   'ShaderInstrumentationMetricDataHeaderARM'
+--
+-- -   'ShaderInstrumentationMetricDescriptionARM'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceShaderInstrumentationFeaturesARM'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDeviceShaderInstrumentationPropertiesARM'
+--
+-- == New Bitmasks
+--
+-- -   'ShaderInstrumentationValuesFlagsARM'
+--
+-- == New Enum Constants
+--
+-- -   'ARM_SHADER_INSTRUMENTATION_EXTENSION_NAME'
+--
+-- -   'ARM_SHADER_INSTRUMENTATION_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.ObjectType.ObjectType':
+--
+--     -   'Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_SHADER_INSTRUMENTATION_ARM'
+--
+-- -   Extending
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PipelineCreateFlagBits2':
+--
+--     -   'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_INSTRUMENT_SHADERS_BIT_ARM'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INSTRUMENTATION_FEATURES_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INSTRUMENTATION_PROPERTIES_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SHADER_INSTRUMENTATION_CREATE_INFO_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SHADER_INSTRUMENTATION_METRIC_DESCRIPTION_ARM'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_shader_object VK_EXT_shader_object>
+-- is supported:
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_EXT_shader_object.ShaderCreateFlagBitsEXT':
+--
+--     -   'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INSTRUMENT_SHADER_BIT_ARM'
+--
+-- == Version History
+--
+-- -   Revision 1, 2026-02-26 (Embla Flatlandsmo, Jan-Harald Fredriksen)
+--
+--     -   Initial draft.
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_ARM_shader_instrumentation Vulkan Specification>.
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_ARM_shader_instrumentation  ( enumeratePhysicalDeviceShaderInstrumentationMetricsARM
+                                                        , createShaderInstrumentationARM
+                                                        , withShaderInstrumentationARM
+                                                        , destroyShaderInstrumentationARM
+                                                        , cmdBeginShaderInstrumentationARM
+                                                        , cmdEndShaderInstrumentationARM
+                                                        , getShaderInstrumentationValuesARM
+                                                        , clearShaderInstrumentationMetricsARM
+                                                        , PhysicalDeviceShaderInstrumentationFeaturesARM(..)
+                                                        , PhysicalDeviceShaderInstrumentationPropertiesARM(..)
+                                                        , ShaderInstrumentationCreateInfoARM(..)
+                                                        , ShaderInstrumentationMetricDescriptionARM(..)
+                                                        , ShaderInstrumentationMetricDataHeaderARM(..)
+                                                        , ShaderInstrumentationValuesFlagsARM(..)
+                                                        , ARM_SHADER_INSTRUMENTATION_SPEC_VERSION
+                                                        , pattern ARM_SHADER_INSTRUMENTATION_SPEC_VERSION
+                                                        , ARM_SHADER_INSTRUMENTATION_EXTENSION_NAME
+                                                        , pattern ARM_SHADER_INSTRUMENTATION_EXTENSION_NAME
+                                                        , ShaderInstrumentationARM(..)
+                                                        , ShaderCreateFlagBitsEXT(..)
+                                                        , ShaderCreateFlagsEXT
+                                                        ) where
+
+import Data.Bits (Bits)
+import Data.Bits (FiniteBits)
+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.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.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.CStruct.Utils (lowerArrayPtr)
+import Vulkan.CStruct.Utils (pokeFixedLengthNullTerminatedByteString)
+import Vulkan.NamedType ((:::))
+import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.Core10.Handles (CommandBuffer)
+import Vulkan.Core10.Handles (CommandBuffer(..))
+import Vulkan.Core10.Handles (CommandBuffer(CommandBuffer))
+import Vulkan.Core10.Handles (CommandBuffer_T)
+import Vulkan.Core10.Handles (Device)
+import Vulkan.Core10.Handles (Device(..))
+import Vulkan.Core10.Handles (Device(Device))
+import Vulkan.Dynamic (DeviceCmds(pVkClearShaderInstrumentationMetricsARM))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdBeginShaderInstrumentationARM))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdEndShaderInstrumentationARM))
+import Vulkan.Dynamic (DeviceCmds(pVkCreateShaderInstrumentationARM))
+import Vulkan.Dynamic (DeviceCmds(pVkDestroyShaderInstrumentationARM))
+import Vulkan.Dynamic (DeviceCmds(pVkGetShaderInstrumentationValuesARM))
+import Vulkan.Core10.Handles (Device_T)
+import Vulkan.Core10.FundamentalTypes (Flags)
+import Vulkan.Dynamic (InstanceCmds(pVkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM))
+import Vulkan.Core10.APIConstants (MAX_DESCRIPTION_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.Extensions.Handles (ShaderInstrumentationARM)
+import Vulkan.Extensions.Handles (ShaderInstrumentationARM(..))
+import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Exception (VulkanException(..))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INSTRUMENTATION_FEATURES_ARM))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INSTRUMENTATION_PROPERTIES_ARM))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SHADER_INSTRUMENTATION_CREATE_INFO_ARM))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SHADER_INSTRUMENTATION_METRIC_DESCRIPTION_ARM))
+import Vulkan.Core10.Enums.Result (Result(SUCCESS))
+import Vulkan.Extensions.VK_EXT_shader_object (ShaderCreateFlagBitsEXT(..))
+import Vulkan.Extensions.VK_EXT_shader_object (ShaderCreateFlagsEXT)
+import Vulkan.Extensions.Handles (ShaderInstrumentationARM(..))
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM
+  :: FunPtr (Ptr PhysicalDevice_T -> Ptr Word32 -> Ptr ShaderInstrumentationMetricDescriptionARM -> IO Result) -> Ptr PhysicalDevice_T -> Ptr Word32 -> Ptr ShaderInstrumentationMetricDescriptionARM -> IO Result
+
+-- | vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM - Returns
+-- properties describing what shader instrumentation metrics are supported
+--
+-- = Description
+--
+-- If @pDescriptions@ is @NULL@, then the number of shader instrumentation
+-- metrics available is returned in @pDescriptionCount@. Otherwise,
+-- @pDescriptionCount@ /must/ point to a variable set by the application to
+-- the number of elements in the @pDescriptions@ array, and on return the
+-- variable is overwritten with the number of structures actually written
+-- to @pDescriptions@. If @pDescriptionCount@ is less than the number
+-- shader instrumentation metrics available, at most @pDescriptionCount@
+-- structures will be written, and 'Vulkan.Core10.Enums.Result.INCOMPLETE'
+-- will be returned instead of 'Vulkan.Core10.Enums.Result.SUCCESS', to
+-- indicate that not all the available shader instrumentation metrics were
+-- returned.
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM-physicalDevice-parameter#
+--     @physicalDevice@ /must/ be a valid
+--     'Vulkan.Core10.Handles.PhysicalDevice' handle
+--
+-- -   #VUID-vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM-pDescriptionCount-parameter#
+--     @pDescriptionCount@ /must/ be a valid pointer to a @uint32_t@ value
+--
+-- -   #VUID-vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM-pDescriptions-parameter#
+--     If the value referenced by @pDescriptionCount@ is not @0@, and
+--     @pDescriptions@ is not @NULL@, @pDescriptions@ /must/ be a valid
+--     pointer to an array of @pDescriptionCount@
+--     'ShaderInstrumentationMetricDescriptionARM' structures
+--
+-- == Return Codes
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
+--
+--     -   'Vulkan.Core10.Enums.Result.INCOMPLETE'
+--
+--     -   '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_INITIALIZATION_FAILED'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_shader_instrumentation VK_ARM_shader_instrumentation>,
+-- 'Vulkan.Core10.Handles.PhysicalDevice',
+-- 'ShaderInstrumentationMetricDescriptionARM'
+enumeratePhysicalDeviceShaderInstrumentationMetricsARM :: forall io
+                                                        . (MonadIO io)
+                                                       => -- | @physicalDevice@ is the physical device.
+                                                          PhysicalDevice
+                                                       -> io (Result, ("descriptions" ::: Vector ShaderInstrumentationMetricDescriptionARM))
+enumeratePhysicalDeviceShaderInstrumentationMetricsARM physicalDevice = liftIO . evalContT $ do
+  let vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARMPtr = pVkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM (case physicalDevice of PhysicalDevice{instanceCmds} -> instanceCmds)
+  lift $ unless (vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARMPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM is null" Nothing Nothing
+  let vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM' = mkVkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARMPtr
+  let physicalDevice' = physicalDeviceHandle (physicalDevice)
+  pPDescriptionCount <- ContT $ bracket (callocBytes @Word32 4) free
+  r <- lift $ traceAroundEvent "vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM" (vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM'
+                                                                                             physicalDevice'
+                                                                                             (pPDescriptionCount)
+                                                                                             (nullPtr))
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+  pDescriptionCount <- lift $ peek @Word32 pPDescriptionCount
+  pPDescriptions <- ContT $ bracket (callocBytes @ShaderInstrumentationMetricDescriptionARM ((fromIntegral (pDescriptionCount)) * 528)) free
+  _ <- traverse (\i -> ContT $ pokeZeroCStruct (pPDescriptions `advancePtrBytes` (i * 528) :: Ptr ShaderInstrumentationMetricDescriptionARM) . ($ ())) [0..(fromIntegral (pDescriptionCount)) - 1]
+  r' <- lift $ traceAroundEvent "vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM" (vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM'
+                                                                                              physicalDevice'
+                                                                                              (pPDescriptionCount)
+                                                                                              ((pPDescriptions)))
+  lift $ when (r' < SUCCESS) (throwIO (VulkanException r'))
+  pDescriptionCount' <- lift $ peek @Word32 pPDescriptionCount
+  pDescriptions' <- lift $ generateM (fromIntegral (pDescriptionCount')) (\i -> peekCStruct @ShaderInstrumentationMetricDescriptionARM (((pPDescriptions) `advancePtrBytes` (528 * (i)) :: Ptr ShaderInstrumentationMetricDescriptionARM)))
+  pure $ ((r'), pDescriptions')
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCreateShaderInstrumentationARM
+  :: FunPtr (Ptr Device_T -> Ptr ShaderInstrumentationCreateInfoARM -> Ptr AllocationCallbacks -> Ptr ShaderInstrumentationARM -> IO Result) -> Ptr Device_T -> Ptr ShaderInstrumentationCreateInfoARM -> Ptr AllocationCallbacks -> Ptr ShaderInstrumentationARM -> IO Result
+
+-- | vkCreateShaderInstrumentationARM - Create a new shader instrumentation
+-- object
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCreateShaderInstrumentationARM-device-parameter# @device@
+--     /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkCreateShaderInstrumentationARM-pCreateInfo-parameter#
+--     @pCreateInfo@ /must/ be a valid pointer to a valid
+--     'ShaderInstrumentationCreateInfoARM' structure
+--
+-- -   #VUID-vkCreateShaderInstrumentationARM-pAllocator-parameter# If
+--     @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid pointer
+--     to a valid 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'
+--     structure
+--
+-- -   #VUID-vkCreateShaderInstrumentationARM-pInstrumentation-parameter#
+--     @pInstrumentation@ /must/ be a valid pointer to a
+--     'Vulkan.Extensions.Handles.ShaderInstrumentationARM' handle
+--
+-- -   #VUID-vkCreateShaderInstrumentationARM-device-queuecount# The device
+--     /must/ have been created with at least @1@ queue
+--
+-- == 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_DEVICE_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_shader_instrumentation VK_ARM_shader_instrumentation>,
+-- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',
+-- 'Vulkan.Core10.Handles.Device',
+-- 'Vulkan.Extensions.Handles.ShaderInstrumentationARM',
+-- 'ShaderInstrumentationCreateInfoARM'
+createShaderInstrumentationARM :: forall io
+                                . (MonadIO io)
+                               => -- | @device@ is the logical device that creates the shader instrumentation
+                                  -- object.
+                                  Device
+                               -> -- | @pCreateInfo@ is a pointer to a 'ShaderInstrumentationCreateInfoARM'
+                                  -- structure containing information about how the shader instrumentation
+                                  -- object is to be created.
+                                  ShaderInstrumentationCreateInfoARM
+                               -> -- | @pAllocator@ controls host memory allocation as described in the
+                                  -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
+                                  -- chapter.
+                                  ("allocator" ::: Maybe AllocationCallbacks)
+                               -> io (ShaderInstrumentationARM)
+createShaderInstrumentationARM device
+                                 createInfo
+                                 allocator = liftIO . evalContT $ do
+  let vkCreateShaderInstrumentationARMPtr = pVkCreateShaderInstrumentationARM (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCreateShaderInstrumentationARMPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCreateShaderInstrumentationARM is null" Nothing Nothing
+  let vkCreateShaderInstrumentationARM' = mkVkCreateShaderInstrumentationARM vkCreateShaderInstrumentationARMPtr
+  pCreateInfo <- ContT $ withCStruct (createInfo)
+  pAllocator <- case (allocator) of
+    Nothing -> pure nullPtr
+    Just j -> ContT $ withCStruct (j)
+  pPInstrumentation <- ContT $ bracket (callocBytes @ShaderInstrumentationARM 8) free
+  r <- lift $ traceAroundEvent "vkCreateShaderInstrumentationARM" (vkCreateShaderInstrumentationARM'
+                                                                     (deviceHandle (device))
+                                                                     pCreateInfo
+                                                                     pAllocator
+                                                                     (pPInstrumentation))
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+  pInstrumentation <- lift $ peek @ShaderInstrumentationARM pPInstrumentation
+  pure $ (pInstrumentation)
+
+-- | A convenience wrapper to make a compatible pair of calls to
+-- 'createShaderInstrumentationARM' and 'destroyShaderInstrumentationARM'
+--
+-- To ensure that 'destroyShaderInstrumentationARM' 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.
+--
+withShaderInstrumentationARM :: forall io r . MonadIO io => Device -> ShaderInstrumentationCreateInfoARM -> Maybe AllocationCallbacks -> (io ShaderInstrumentationARM -> (ShaderInstrumentationARM -> io ()) -> r) -> r
+withShaderInstrumentationARM device pCreateInfo pAllocator b =
+  b (createShaderInstrumentationARM device pCreateInfo pAllocator)
+    (\(o0) -> destroyShaderInstrumentationARM device o0 pAllocator)
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkDestroyShaderInstrumentationARM
+  :: FunPtr (Ptr Device_T -> ShaderInstrumentationARM -> Ptr AllocationCallbacks -> IO ()) -> Ptr Device_T -> ShaderInstrumentationARM -> Ptr AllocationCallbacks -> IO ()
+
+-- | vkDestroyShaderInstrumentationARM - Destroy a shader instrumentation
+-- object
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkDestroyShaderInstrumentationARM-instrumentation-12374# All
+--     submitted commands that refer to @instrumentation@ /must/ have
+--     completed execution
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkDestroyShaderInstrumentationARM-device-parameter# @device@
+--     /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkDestroyShaderInstrumentationARM-instrumentation-parameter#
+--     If @instrumentation@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', @instrumentation@ /must/
+--     be a valid 'Vulkan.Extensions.Handles.ShaderInstrumentationARM'
+--     handle
+--
+-- -   #VUID-vkDestroyShaderInstrumentationARM-pAllocator-parameter# If
+--     @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid pointer
+--     to a valid 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'
+--     structure
+--
+-- -   #VUID-vkDestroyShaderInstrumentationARM-instrumentation-parent# If
+--     @instrumentation@ is a valid handle, it /must/ have been created,
+--     allocated, or retrieved from @device@
+--
+-- == Host Synchronization
+--
+-- -   Host access to @instrumentation@ /must/ be externally synchronized
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_shader_instrumentation VK_ARM_shader_instrumentation>,
+-- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',
+-- 'Vulkan.Core10.Handles.Device',
+-- 'Vulkan.Extensions.Handles.ShaderInstrumentationARM'
+destroyShaderInstrumentationARM :: forall io
+                                 . (MonadIO io)
+                                => -- | @device@ is the logical device that destroys the shader instrumentation.
+                                   Device
+                                -> -- | @instrumentation@ is the handle of the shader instrumentation to
+                                   -- destroy.
+                                   ShaderInstrumentationARM
+                                -> -- | @pAllocator@ controls host memory allocation as described in the
+                                   -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
+                                   -- chapter.
+                                   ("allocator" ::: Maybe AllocationCallbacks)
+                                -> io ()
+destroyShaderInstrumentationARM device
+                                  instrumentation
+                                  allocator = liftIO . evalContT $ do
+  let vkDestroyShaderInstrumentationARMPtr = pVkDestroyShaderInstrumentationARM (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkDestroyShaderInstrumentationARMPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkDestroyShaderInstrumentationARM is null" Nothing Nothing
+  let vkDestroyShaderInstrumentationARM' = mkVkDestroyShaderInstrumentationARM vkDestroyShaderInstrumentationARMPtr
+  pAllocator <- case (allocator) of
+    Nothing -> pure nullPtr
+    Just j -> ContT $ withCStruct (j)
+  lift $ traceAroundEvent "vkDestroyShaderInstrumentationARM" (vkDestroyShaderInstrumentationARM'
+                                                                 (deviceHandle (device))
+                                                                 (instrumentation)
+                                                                 pAllocator)
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdBeginShaderInstrumentationARM
+  :: FunPtr (Ptr CommandBuffer_T -> ShaderInstrumentationARM -> IO ()) -> Ptr CommandBuffer_T -> ShaderInstrumentationARM -> IO ()
+
+-- | vkCmdBeginShaderInstrumentationARM - Begin shader instrumentation
+--
+-- = Description
+--
+-- After beginning shader instrumentation, shader instrumentation is
+-- considered /active/ within the command buffer it was called in until
+-- shader instrumentation is ended.
+--
+-- The shader instrumentation object has an implicit result index where the
+-- per-shader metrics will be written. The result index is set to 0 when
+-- the object is created by calling 'createShaderInstrumentationARM', and
+-- incremented by @1@ for each draw, dispatch, and ray tracing command
+-- recorded while the shader instrumentation object is active.
+--
+-- The result index is also incremented by @1@ when
+-- 'Vulkan.Extensions.VK_EXT_device_generated_commands.cmdExecuteGeneratedCommandsEXT'
+-- is recorded.
+--
+-- While shader instrumentation is active, instrumented shaders write to
+-- the instrumentation object. These writes /must/ be synchronized using
+-- the instrumented shader’s stage with access mask
+-- 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_WRITE_BIT'. If no
+-- instrumentation object is bound, writes are discarded.
+--
+-- If a command buffer is submitted multiple times, the shader instrumented
+-- metrics for all submissions will be aggregated in the instrumentation
+-- object, unless the metrics are
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-instrumentation-clear cleared>
+-- between submissions.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdBeginShaderInstrumentationARM-commandBuffer-12375# This
+--     command /must/ not be recorded while shader instrumentation is
+--     active within @commandBuffer@
+--
+-- -   #VUID-vkCmdBeginShaderInstrumentationARM-commandBuffer-12376#
+--     @commandBuffer@ /must/ not be a protected command buffer
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdBeginShaderInstrumentationARM-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdBeginShaderInstrumentationARM-instrumentation-parameter#
+--     @instrumentation@ /must/ be a valid
+--     'Vulkan.Extensions.Handles.ShaderInstrumentationARM' handle
+--
+-- -   #VUID-vkCmdBeginShaderInstrumentationARM-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-vkCmdBeginShaderInstrumentationARM-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT',
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_DATA_GRAPH_BIT_ARM', or
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
+--
+-- -   #VUID-vkCmdBeginShaderInstrumentationARM-suspended# This command
+--     /must/ not be called between suspended render pass instances
+--
+-- -   #VUID-vkCmdBeginShaderInstrumentationARM-videocoding# This command
+--     /must/ only be called outside of a video coding scope
+--
+-- -   #VUID-vkCmdBeginShaderInstrumentationARM-commonparent# Both of
+--     @commandBuffer@, and @instrumentation@ /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 @instrumentation@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | VK_QUEUE_DATA_GRAPH_BIT_ARM                                                                                           | State                                                                                                                                  |
+-- |                                                                                                                            |                                                                                                                        |                                                                                                                             | VK_QUEUE_GRAPHICS_BIT                                                                                                 |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdBeginShaderInstrumentationARM is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_shader_instrumentation VK_ARM_shader_instrumentation>,
+-- 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'Vulkan.Extensions.Handles.ShaderInstrumentationARM'
+cmdBeginShaderInstrumentationARM :: forall io
+                                  . (MonadIO io)
+                                 => -- | @commandBuffer@ is the command buffer into which this command will be
+                                    -- recorded.
+                                    CommandBuffer
+                                 -> -- | @instrumentation@ is the handle of the shader instrumentation object
+                                    -- that will capture the metrics.
+                                    ShaderInstrumentationARM
+                                 -> io ()
+cmdBeginShaderInstrumentationARM commandBuffer instrumentation = liftIO $ do
+  let vkCmdBeginShaderInstrumentationARMPtr = pVkCmdBeginShaderInstrumentationARM (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  unless (vkCmdBeginShaderInstrumentationARMPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdBeginShaderInstrumentationARM is null" Nothing Nothing
+  let vkCmdBeginShaderInstrumentationARM' = mkVkCmdBeginShaderInstrumentationARM vkCmdBeginShaderInstrumentationARMPtr
+  traceAroundEvent "vkCmdBeginShaderInstrumentationARM" (vkCmdBeginShaderInstrumentationARM'
+                                                           (commandBufferHandle (commandBuffer))
+                                                           (instrumentation))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdEndShaderInstrumentationARM
+  :: FunPtr (Ptr CommandBuffer_T -> IO ()) -> Ptr CommandBuffer_T -> IO ()
+
+-- | vkCmdEndShaderInstrumentationARM - End shader instrumentation
+--
+-- = Description
+--
+-- Once recorded, shader instrumentation is no longer considered /active/
+-- within the command buffer.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdEndShaderInstrumentationARM-commandBuffer-12377# Shader
+--     instrumentation /must/ be active within @commandBuffer@
+--
+-- -   #VUID-vkCmdEndShaderInstrumentationARM-commandBuffer-12378#
+--     @commandBuffer@ /must/ not be a protected command buffer
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdEndShaderInstrumentationARM-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdEndShaderInstrumentationARM-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-vkCmdEndShaderInstrumentationARM-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT',
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_DATA_GRAPH_BIT_ARM', or
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
+--
+-- -   #VUID-vkCmdEndShaderInstrumentationARM-suspended# This command
+--     /must/ not be called between suspended render pass instances
+--
+-- -   #VUID-vkCmdEndShaderInstrumentationARM-videocoding# This command
+--     /must/ only be called outside of a video coding scope
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | VK_QUEUE_DATA_GRAPH_BIT_ARM                                                                                           | State                                                                                                                                  |
+-- |                                                                                                                            |                                                                                                                        |                                                                                                                             | VK_QUEUE_GRAPHICS_BIT                                                                                                 |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdEndShaderInstrumentationARM is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_shader_instrumentation VK_ARM_shader_instrumentation>,
+-- 'Vulkan.Core10.Handles.CommandBuffer'
+cmdEndShaderInstrumentationARM :: forall io
+                                . (MonadIO io)
+                               => -- | @commandBuffer@ is the command buffer into which this command will be
+                                  -- recorded.
+                                  CommandBuffer
+                               -> io ()
+cmdEndShaderInstrumentationARM commandBuffer = liftIO $ do
+  let vkCmdEndShaderInstrumentationARMPtr = pVkCmdEndShaderInstrumentationARM (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  unless (vkCmdEndShaderInstrumentationARMPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdEndShaderInstrumentationARM is null" Nothing Nothing
+  let vkCmdEndShaderInstrumentationARM' = mkVkCmdEndShaderInstrumentationARM vkCmdEndShaderInstrumentationARMPtr
+  traceAroundEvent "vkCmdEndShaderInstrumentationARM" (vkCmdEndShaderInstrumentationARM'
+                                                         (commandBufferHandle (commandBuffer)))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetShaderInstrumentationValuesARM
+  :: FunPtr (Ptr Device_T -> ShaderInstrumentationARM -> Ptr Word32 -> Ptr () -> ShaderInstrumentationValuesFlagsARM -> IO Result) -> Ptr Device_T -> ShaderInstrumentationARM -> Ptr Word32 -> Ptr () -> ShaderInstrumentationValuesFlagsARM -> IO Result
+
+-- | vkGetShaderInstrumentationValuesARM - Retrieve shader instrumentation
+-- data
+--
+-- = Description
+--
+-- If @pMetricValues@ is @NULL@, then the number of metric blocks available
+-- is returned in @pMetricBlockCount@. Otherwise, @pMetricBlockCount@
+-- /must/ point to a variable set by the application to the number of
+-- elements in the @pMetricValues@ array, and on return the variable is
+-- overwritten with the number of metric blocks actually written to
+-- @pMetricValues@. If @pMetricBlockCount@ is less than the number of
+-- metric blocks available, at most @pMetricBlockCount@ elements will be
+-- written, and 'Vulkan.Core10.Enums.Result.INCOMPLETE' will be returned
+-- instead of 'Vulkan.Core10.Enums.Result.SUCCESS', to indicate that not
+-- all the available metric blocks were returned.
+--
+-- Metrics are written to @pMetricValues@ as a tightly packed array of
+-- metric blocks, where each block consists of a
+-- 'ShaderInstrumentationMetricDataHeaderARM' header followed by
+-- 'PhysicalDeviceShaderInstrumentationPropertiesARM'::@numMetrics@
+-- unsigned 64-bit values. The order of the metrics matches the order in
+-- which they are enumerated by
+-- 'enumeratePhysicalDeviceShaderInstrumentationMetricsARM'.
+--
+-- == Return Codes
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
+--
+--     -   'Vulkan.Core10.Enums.Result.INCOMPLETE'
+--
+--     -   '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_DEVICE_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_shader_instrumentation VK_ARM_shader_instrumentation>,
+-- 'Vulkan.Core10.Handles.Device',
+-- 'Vulkan.Extensions.Handles.ShaderInstrumentationARM',
+-- 'ShaderInstrumentationValuesFlagsARM'
+getShaderInstrumentationValuesARM :: forall io
+                                   . (MonadIO io)
+                                  => -- | @device@ is the logical device that was used to capture shader
+                                     -- instrumentation data.
+                                     --
+                                     -- #VUID-vkGetShaderInstrumentationValuesARM-device-parameter# @device@
+                                     -- /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+                                     Device
+                                  -> -- | @instrumentation@ is the shader instrumentation object to retrieve
+                                     -- values from
+                                     --
+                                     -- #VUID-vkGetShaderInstrumentationValuesARM-instrumentation-parameter#
+                                     -- @instrumentation@ /must/ be a valid
+                                     -- 'Vulkan.Extensions.Handles.ShaderInstrumentationARM' handle
+                                     --
+                                     -- #VUID-vkGetShaderInstrumentationValuesARM-instrumentation-parent#
+                                     -- @instrumentation@ /must/ have been created, allocated, or retrieved from
+                                     -- @device@
+                                     ShaderInstrumentationARM
+                                  -> -- | @pMetricValues@ is either @NULL@ or a pointer to an
+                                     -- application-allocated buffer where the results will be written.
+                                     --
+                                     -- #VUID-vkGetShaderInstrumentationValuesARM-pMetricValues-parameter#
+                                     -- @pMetricValues@ /must/ be a pointer value
+                                     ("metricValues" ::: Ptr ())
+                                  -> -- | @flags@ is reserved for future use.
+                                     --
+                                     -- #VUID-vkGetShaderInstrumentationValuesARM-flags-zerobitmask# @flags@
+                                     -- /must/ be @0@
+                                     ShaderInstrumentationValuesFlagsARM
+                                  -> io (Result, ("metricBlockCount" ::: Word32))
+getShaderInstrumentationValuesARM device
+                                    instrumentation
+                                    metricValues
+                                    flags = liftIO . evalContT $ do
+  let vkGetShaderInstrumentationValuesARMPtr = pVkGetShaderInstrumentationValuesARM (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkGetShaderInstrumentationValuesARMPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetShaderInstrumentationValuesARM is null" Nothing Nothing
+  let vkGetShaderInstrumentationValuesARM' = mkVkGetShaderInstrumentationValuesARM vkGetShaderInstrumentationValuesARMPtr
+  pPMetricBlockCount <- ContT $ bracket (callocBytes @Word32 4) free
+  r <- lift $ traceAroundEvent "vkGetShaderInstrumentationValuesARM" (vkGetShaderInstrumentationValuesARM'
+                                                                        (deviceHandle (device))
+                                                                        (instrumentation)
+                                                                        (pPMetricBlockCount)
+                                                                        (metricValues)
+                                                                        (flags))
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+  pMetricBlockCount <- lift $ peek @Word32 pPMetricBlockCount
+  pure $ (r, pMetricBlockCount)
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkClearShaderInstrumentationMetricsARM
+  :: FunPtr (Ptr Device_T -> ShaderInstrumentationARM -> IO ()) -> Ptr Device_T -> ShaderInstrumentationARM -> IO ()
+
+-- | vkClearShaderInstrumentationMetricsARM - Clear shader instrumentation
+-- metrics to zero
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_shader_instrumentation VK_ARM_shader_instrumentation>,
+-- 'Vulkan.Core10.Handles.Device',
+-- 'Vulkan.Extensions.Handles.ShaderInstrumentationARM'
+clearShaderInstrumentationMetricsARM :: forall io
+                                      . (MonadIO io)
+                                     => -- | @device@ is the logical device that owns the shader instrumentation
+                                        -- object.
+                                        --
+                                        -- #VUID-vkClearShaderInstrumentationMetricsARM-device-parameter# @device@
+                                        -- /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+                                        Device
+                                     -> -- | @instrumentation@ is the shader instrumentation object to clear.
+                                        --
+                                        -- #VUID-vkClearShaderInstrumentationMetricsARM-instrumentation-parameter#
+                                        -- @instrumentation@ /must/ be a valid
+                                        -- 'Vulkan.Extensions.Handles.ShaderInstrumentationARM' handle
+                                        --
+                                        -- #VUID-vkClearShaderInstrumentationMetricsARM-instrumentation-parent#
+                                        -- @instrumentation@ /must/ have been created, allocated, or retrieved from
+                                        -- @device@
+                                        ShaderInstrumentationARM
+                                     -> io ()
+clearShaderInstrumentationMetricsARM device instrumentation = liftIO $ do
+  let vkClearShaderInstrumentationMetricsARMPtr = pVkClearShaderInstrumentationMetricsARM (case device of Device{deviceCmds} -> deviceCmds)
+  unless (vkClearShaderInstrumentationMetricsARMPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkClearShaderInstrumentationMetricsARM is null" Nothing Nothing
+  let vkClearShaderInstrumentationMetricsARM' = mkVkClearShaderInstrumentationMetricsARM vkClearShaderInstrumentationMetricsARMPtr
+  traceAroundEvent "vkClearShaderInstrumentationMetricsARM" (vkClearShaderInstrumentationMetricsARM'
+                                                               (deviceHandle (device))
+                                                               (instrumentation))
+  pure $ ()
+
+
+-- | VkPhysicalDeviceShaderInstrumentationFeaturesARM - Structure describing
+-- support for shader instrumentation
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceShaderInstrumentationFeaturesARM' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceShaderInstrumentationFeaturesARM', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_shader_instrumentation VK_ARM_shader_instrumentation>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceShaderInstrumentationFeaturesARM = PhysicalDeviceShaderInstrumentationFeaturesARM
+  { -- | #features-shaderInstrumentation# @shaderInstrumentation@ specifies
+    -- whether shader instrumentation is supported.
+    shaderInstrumentation :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceShaderInstrumentationFeaturesARM)
+#endif
+deriving instance Show PhysicalDeviceShaderInstrumentationFeaturesARM
+
+instance ToCStruct PhysicalDeviceShaderInstrumentationFeaturesARM where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceShaderInstrumentationFeaturesARM{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INSTRUMENTATION_FEATURES_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (shaderInstrumentation))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INSTRUMENTATION_FEATURES_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceShaderInstrumentationFeaturesARM where
+  peekCStruct p = do
+    shaderInstrumentation <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDeviceShaderInstrumentationFeaturesARM
+             (bool32ToBool shaderInstrumentation)
+
+instance Storable PhysicalDeviceShaderInstrumentationFeaturesARM where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceShaderInstrumentationFeaturesARM where
+  zero = PhysicalDeviceShaderInstrumentationFeaturesARM
+           zero
+
+
+-- | VkPhysicalDeviceShaderInstrumentationPropertiesARM - Structure
+-- describing shader instrumentation properties for a physical device
+--
+-- = Members
+--
+-- The members of the 'PhysicalDeviceShaderInstrumentationPropertiesARM'
+-- structure describe the following:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceShaderInstrumentationPropertiesARM' 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.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_shader_instrumentation VK_ARM_shader_instrumentation>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceShaderInstrumentationPropertiesARM = PhysicalDeviceShaderInstrumentationPropertiesARM
+  { -- | @numMetrics@ is the number of shader instrumentation metrics supported.
+    numMetrics :: Word32
+  , -- | @perBasicBlockGranularity@ is a boolean value indicating whether shader
+    -- instrumentation metrics are returned per basic block. If this is
+    -- 'Vulkan.Core10.FundamentalTypes.FALSE', then all metrics for the shader
+    -- are reported as basic block index @0@.
+    perBasicBlockGranularity :: Bool
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceShaderInstrumentationPropertiesARM)
+#endif
+deriving instance Show PhysicalDeviceShaderInstrumentationPropertiesARM
+
+instance ToCStruct PhysicalDeviceShaderInstrumentationPropertiesARM where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceShaderInstrumentationPropertiesARM{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INSTRUMENTATION_PROPERTIES_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (numMetrics)
+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (perBasicBlockGranularity))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INSTRUMENTATION_PROPERTIES_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceShaderInstrumentationPropertiesARM where
+  peekCStruct p = do
+    numMetrics <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    perBasicBlockGranularity <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
+    pure $ PhysicalDeviceShaderInstrumentationPropertiesARM
+             numMetrics (bool32ToBool perBasicBlockGranularity)
+
+instance Storable PhysicalDeviceShaderInstrumentationPropertiesARM where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceShaderInstrumentationPropertiesARM where
+  zero = PhysicalDeviceShaderInstrumentationPropertiesARM
+           zero
+           zero
+
+
+-- | VkShaderInstrumentationCreateInfoARM - Structure specifying parameters
+-- of a newly created shader instrumentation
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_shader_instrumentation VK_ARM_shader_instrumentation>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'createShaderInstrumentationARM'
+data ShaderInstrumentationCreateInfoARM = ShaderInstrumentationCreateInfoARM
+  {}
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (ShaderInstrumentationCreateInfoARM)
+#endif
+deriving instance Show ShaderInstrumentationCreateInfoARM
+
+instance ToCStruct ShaderInstrumentationCreateInfoARM where
+  withCStruct x f = allocaBytes 16 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p ShaderInstrumentationCreateInfoARM f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SHADER_INSTRUMENTATION_CREATE_INFO_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    f
+  cStructSize = 16
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SHADER_INSTRUMENTATION_CREATE_INFO_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    f
+
+instance FromCStruct ShaderInstrumentationCreateInfoARM where
+  peekCStruct _ = pure $ ShaderInstrumentationCreateInfoARM
+                           
+
+instance Storable ShaderInstrumentationCreateInfoARM where
+  sizeOf ~_ = 16
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero ShaderInstrumentationCreateInfoARM where
+  zero = ShaderInstrumentationCreateInfoARM
+           
+
+
+-- | VkShaderInstrumentationMetricDescriptionARM - Structure specifying
+-- shader instrumentation metric properties
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_shader_instrumentation VK_ARM_shader_instrumentation>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'enumeratePhysicalDeviceShaderInstrumentationMetricsARM'
+data ShaderInstrumentationMetricDescriptionARM = ShaderInstrumentationMetricDescriptionARM
+  { -- | @name@ is an array of 'Vulkan.Core10.APIConstants.MAX_DESCRIPTION_SIZE'
+    -- @char@ containing a null-terminated UTF-8 string which is a short human
+    -- readable name for this shader instrumentation metric.
+    --
+    -- #VUID-VkShaderInstrumentationMetricDescriptionARM-name-parameter# @name@
+    -- /must/ be a null-terminated UTF-8 string whose length is less than or
+    -- equal to 'Vulkan.Core10.APIConstants.MAX_DESCRIPTION_SIZE'
+    name :: ByteString
+  , -- | @description@ is an array of
+    -- 'Vulkan.Core10.APIConstants.MAX_DESCRIPTION_SIZE' @char@ containing a
+    -- null-terminated UTF-8 string which is a human readable description for
+    -- this shader instrumentation metric.
+    --
+    -- #VUID-VkShaderInstrumentationMetricDescriptionARM-description-parameter#
+    -- @description@ /must/ be a null-terminated UTF-8 string whose length is
+    -- less than or equal to 'Vulkan.Core10.APIConstants.MAX_DESCRIPTION_SIZE'
+    description :: ByteString
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (ShaderInstrumentationMetricDescriptionARM)
+#endif
+deriving instance Show ShaderInstrumentationMetricDescriptionARM
+
+instance ToCStruct ShaderInstrumentationMetricDescriptionARM where
+  withCStruct x f = allocaBytes 528 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p ShaderInstrumentationMetricDescriptionARM{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SHADER_INSTRUMENTATION_METRIC_DESCRIPTION_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 16 :: Ptr (FixedArray MAX_DESCRIPTION_SIZE CChar))) (name)
+    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 272 :: Ptr (FixedArray MAX_DESCRIPTION_SIZE CChar))) (description)
+    f
+  cStructSize = 528
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SHADER_INSTRUMENTATION_METRIC_DESCRIPTION_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 16 :: Ptr (FixedArray MAX_DESCRIPTION_SIZE CChar))) (mempty)
+    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 272 :: Ptr (FixedArray MAX_DESCRIPTION_SIZE CChar))) (mempty)
+    f
+
+instance FromCStruct ShaderInstrumentationMetricDescriptionARM where
+  peekCStruct p = do
+    name <- packCString (lowerArrayPtr ((p `plusPtr` 16 :: Ptr (FixedArray MAX_DESCRIPTION_SIZE CChar))))
+    description <- packCString (lowerArrayPtr ((p `plusPtr` 272 :: Ptr (FixedArray MAX_DESCRIPTION_SIZE CChar))))
+    pure $ ShaderInstrumentationMetricDescriptionARM
+             name description
+
+instance Storable ShaderInstrumentationMetricDescriptionARM where
+  sizeOf ~_ = 528
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero ShaderInstrumentationMetricDescriptionARM where
+  zero = ShaderInstrumentationMetricDescriptionARM
+           mempty
+           mempty
+
+
+-- | VkShaderInstrumentationMetricDataHeaderARM - Structure describing the
+-- header of a metric block
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_shader_instrumentation VK_ARM_shader_instrumentation>,
+-- 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlags'
+data ShaderInstrumentationMetricDataHeaderARM = ShaderInstrumentationMetricDataHeaderARM
+  { -- | @resultIndex@ is the result index of the metric block, as captured when
+    -- the command was recorded.
+    resultIndex :: Word32
+  , -- | @resultSubIndex@ is a secondary index with the result index, explained
+    -- further below.
+    resultSubIndex :: Word32
+  , -- | @stages@ is a bitfield of
+    -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits' describing
+    -- the shader stages that the metric block is for.
+    --
+    -- #VUID-VkShaderInstrumentationMetricDataHeaderARM-stages-parameter#
+    -- @stages@ /must/ be a valid combination of
+    -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits' values
+    --
+    -- #VUID-VkShaderInstrumentationMetricDataHeaderARM-stages-requiredbitmask#
+    -- @stages@ /must/ not be @0@
+    stages :: ShaderStageFlags
+  , -- | @basicBlockIndex@ is the index of the basic block within the shader that
+    -- the metric block is for.
+    basicBlockIndex :: Word32
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (ShaderInstrumentationMetricDataHeaderARM)
+#endif
+deriving instance Show ShaderInstrumentationMetricDataHeaderARM
+
+instance ToCStruct ShaderInstrumentationMetricDataHeaderARM where
+  withCStruct x f = allocaBytes 16 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p ShaderInstrumentationMetricDataHeaderARM{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr Word32)) (resultIndex)
+    poke ((p `plusPtr` 4 :: Ptr Word32)) (resultSubIndex)
+    poke ((p `plusPtr` 8 :: Ptr ShaderStageFlags)) (stages)
+    poke ((p `plusPtr` 12 :: Ptr Word32)) (basicBlockIndex)
+    f
+  cStructSize = 16
+  cStructAlignment = 4
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 8 :: Ptr ShaderStageFlags)) (zero)
+    poke ((p `plusPtr` 12 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct ShaderInstrumentationMetricDataHeaderARM where
+  peekCStruct p = do
+    resultIndex <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))
+    resultSubIndex <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))
+    stages <- peek @ShaderStageFlags ((p `plusPtr` 8 :: Ptr ShaderStageFlags))
+    basicBlockIndex <- peek @Word32 ((p `plusPtr` 12 :: Ptr Word32))
+    pure $ ShaderInstrumentationMetricDataHeaderARM
+             resultIndex resultSubIndex stages basicBlockIndex
+
+instance Storable ShaderInstrumentationMetricDataHeaderARM where
+  sizeOf ~_ = 16
+  alignment ~_ = 4
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero ShaderInstrumentationMetricDataHeaderARM where
+  zero = ShaderInstrumentationMetricDataHeaderARM
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkShaderInstrumentationValuesFlagsARM - Reserved for future use
+--
+-- = Description
+--
+-- 'ShaderInstrumentationValuesFlagsARM' is a bitmask type for parameters
+-- to the retrieval, but is currently reserved for future use.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_shader_instrumentation VK_ARM_shader_instrumentation>,
+-- 'Vulkan.Core10.FundamentalTypes.Flags',
+-- 'getShaderInstrumentationValuesARM'
+newtype ShaderInstrumentationValuesFlagsARM = ShaderInstrumentationValuesFlagsARM Flags
+  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
+
+conNameShaderInstrumentationValuesFlagsARM :: String
+conNameShaderInstrumentationValuesFlagsARM = "ShaderInstrumentationValuesFlagsARM"
+
+enumPrefixShaderInstrumentationValuesFlagsARM :: String
+enumPrefixShaderInstrumentationValuesFlagsARM = ""
+
+showTableShaderInstrumentationValuesFlagsARM :: [(ShaderInstrumentationValuesFlagsARM, String)]
+showTableShaderInstrumentationValuesFlagsARM = []
+
+instance Show ShaderInstrumentationValuesFlagsARM where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixShaderInstrumentationValuesFlagsARM
+      showTableShaderInstrumentationValuesFlagsARM
+      conNameShaderInstrumentationValuesFlagsARM
+      (\(ShaderInstrumentationValuesFlagsARM x) -> x)
+      (\x -> showString "0x" . showHex x)
+
+instance Read ShaderInstrumentationValuesFlagsARM where
+  readPrec =
+    enumReadPrec
+      enumPrefixShaderInstrumentationValuesFlagsARM
+      showTableShaderInstrumentationValuesFlagsARM
+      conNameShaderInstrumentationValuesFlagsARM
+      ShaderInstrumentationValuesFlagsARM
+
+type ARM_SHADER_INSTRUMENTATION_SPEC_VERSION = 1
+
+-- No documentation found for TopLevel "VK_ARM_SHADER_INSTRUMENTATION_SPEC_VERSION"
+pattern ARM_SHADER_INSTRUMENTATION_SPEC_VERSION :: forall a . Integral a => a
+pattern ARM_SHADER_INSTRUMENTATION_SPEC_VERSION = 1
+
+
+type ARM_SHADER_INSTRUMENTATION_EXTENSION_NAME = "VK_ARM_shader_instrumentation"
+
+-- No documentation found for TopLevel "VK_ARM_SHADER_INSTRUMENTATION_EXTENSION_NAME"
+pattern ARM_SHADER_INSTRUMENTATION_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern ARM_SHADER_INSTRUMENTATION_EXTENSION_NAME = "VK_ARM_shader_instrumentation"
+
diff --git a/src/Vulkan/Extensions/VK_ARM_shader_instrumentation.hs-boot b/src/Vulkan/Extensions/VK_ARM_shader_instrumentation.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_ARM_shader_instrumentation.hs-boot
@@ -0,0 +1,218 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_ARM_shader_instrumentation - device extension
+--
+-- = VK_ARM_shader_instrumentation
+--
+-- [__Name String__]
+--     @VK_ARM_shader_instrumentation@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     608
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Not ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
+--
+-- [__API Interactions__]
+--
+--     -   Interacts with VK_EXT_shader_object
+--
+-- [__Special Use__]
+--
+--     -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-compatibility-specialuse Developer tools>
+--
+-- [__Contact__]
+--
+--     -   Jan-Harald Fredriksen
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_ARM_shader_instrumentation] @janharaldfredriksen-arm%0A*Here describe the issue or question you have about the VK_ARM_shader_instrumentation extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_ARM_shader_instrumentation.adoc VK_ARM_shader_instrumentation>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2026-02-26
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Contributors__]
+--
+--     -   Embla Flatlandsmo, Arm Ltd.
+--
+--     -   Jan-Harald Fredriksen, Arm Ltd.
+--
+--     -   Mikel Garai, Arm Ltd.
+--
+--     -   Peter Harris, Arm Ltd.
+--
+--     -   Ting Wei, Arm Ltd.
+--
+--     -   Torbjörn Nilsson, Arm Ltd.
+--
+-- == Description
+--
+-- This extension provides the ability to instrument shaders and capture
+-- performance metrics per shader type from commands executed by a queue.
+--
+-- == New Object Types
+--
+-- -   'Vulkan.Extensions.Handles.ShaderInstrumentationARM'
+--
+-- == New Commands
+--
+-- -   'clearShaderInstrumentationMetricsARM'
+--
+-- -   'cmdBeginShaderInstrumentationARM'
+--
+-- -   'cmdEndShaderInstrumentationARM'
+--
+-- -   'createShaderInstrumentationARM'
+--
+-- -   'destroyShaderInstrumentationARM'
+--
+-- -   'enumeratePhysicalDeviceShaderInstrumentationMetricsARM'
+--
+-- -   'getShaderInstrumentationValuesARM'
+--
+-- == New Structures
+--
+-- -   'ShaderInstrumentationCreateInfoARM'
+--
+-- -   'ShaderInstrumentationMetricDataHeaderARM'
+--
+-- -   'ShaderInstrumentationMetricDescriptionARM'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceShaderInstrumentationFeaturesARM'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDeviceShaderInstrumentationPropertiesARM'
+--
+-- == New Bitmasks
+--
+-- -   'ShaderInstrumentationValuesFlagsARM'
+--
+-- == New Enum Constants
+--
+-- -   'ARM_SHADER_INSTRUMENTATION_EXTENSION_NAME'
+--
+-- -   'ARM_SHADER_INSTRUMENTATION_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.ObjectType.ObjectType':
+--
+--     -   'Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_SHADER_INSTRUMENTATION_ARM'
+--
+-- -   Extending
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PipelineCreateFlagBits2':
+--
+--     -   'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_INSTRUMENT_SHADERS_BIT_ARM'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INSTRUMENTATION_FEATURES_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INSTRUMENTATION_PROPERTIES_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SHADER_INSTRUMENTATION_CREATE_INFO_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SHADER_INSTRUMENTATION_METRIC_DESCRIPTION_ARM'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_shader_object VK_EXT_shader_object>
+-- is supported:
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_EXT_shader_object.ShaderCreateFlagBitsEXT':
+--
+--     -   'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INSTRUMENT_SHADER_BIT_ARM'
+--
+-- == Version History
+--
+-- -   Revision 1, 2026-02-26 (Embla Flatlandsmo, Jan-Harald Fredriksen)
+--
+--     -   Initial draft.
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_ARM_shader_instrumentation Vulkan Specification>.
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_ARM_shader_instrumentation  ( PhysicalDeviceShaderInstrumentationFeaturesARM
+                                                        , PhysicalDeviceShaderInstrumentationPropertiesARM
+                                                        , ShaderInstrumentationCreateInfoARM
+                                                        , ShaderInstrumentationMetricDataHeaderARM
+                                                        , ShaderInstrumentationMetricDescriptionARM
+                                                        , ShaderInstrumentationValuesFlagsARM
+                                                        ) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data PhysicalDeviceShaderInstrumentationFeaturesARM
+
+instance ToCStruct PhysicalDeviceShaderInstrumentationFeaturesARM
+instance Show PhysicalDeviceShaderInstrumentationFeaturesARM
+
+instance FromCStruct PhysicalDeviceShaderInstrumentationFeaturesARM
+
+
+data PhysicalDeviceShaderInstrumentationPropertiesARM
+
+instance ToCStruct PhysicalDeviceShaderInstrumentationPropertiesARM
+instance Show PhysicalDeviceShaderInstrumentationPropertiesARM
+
+instance FromCStruct PhysicalDeviceShaderInstrumentationPropertiesARM
+
+
+data ShaderInstrumentationCreateInfoARM
+
+instance ToCStruct ShaderInstrumentationCreateInfoARM
+instance Show ShaderInstrumentationCreateInfoARM
+
+instance FromCStruct ShaderInstrumentationCreateInfoARM
+
+
+data ShaderInstrumentationMetricDataHeaderARM
+
+instance ToCStruct ShaderInstrumentationMetricDataHeaderARM
+instance Show ShaderInstrumentationMetricDataHeaderARM
+
+instance FromCStruct ShaderInstrumentationMetricDataHeaderARM
+
+
+data ShaderInstrumentationMetricDescriptionARM
+
+instance ToCStruct ShaderInstrumentationMetricDescriptionARM
+instance Show ShaderInstrumentationMetricDescriptionARM
+
+instance FromCStruct ShaderInstrumentationMetricDescriptionARM
+
+
+data ShaderInstrumentationValuesFlagsARM
+
diff --git a/src/Vulkan/Extensions/VK_ARM_tensors.hs b/src/Vulkan/Extensions/VK_ARM_tensors.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_ARM_tensors.hs
@@ -0,0 +1,4337 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_ARM_tensors - device extension
+--
+-- = VK_ARM_tensors
+--
+-- [__Name String__]
+--     @VK_ARM_tensors@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     461
+--
+-- [__Revision__]
+--     2
+--
+-- [__Ratification Status__]
+--     Not ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3 Vulkan Version 1.3>
+--
+-- [__API Interactions__]
+--
+--     -   Interacts with VK_EXT_descriptor_buffer
+--
+--     -   Interacts with VK_EXT_frame_boundary
+--
+--     -   Interacts with VK_EXT_shader_float8
+--
+--     -   Interacts with VK_KHR_shader_bfloat16
+--
+-- [__SPIR-V Dependencies__]
+--
+--     -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/ARM/SPV_ARM_tensors.html SPV_ARM_tensors>
+--
+-- [__Contact__]
+--
+--     -   Kevin Petit
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_ARM_tensors] @kpet%0A*Here describe the issue or question you have about the VK_ARM_tensors extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_ARM_tensors.adoc VK_ARM_tensors>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2026-01-07
+--
+-- [__Interactions and External Dependencies__]
+--
+--     -   This extension requires
+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/ARM/SPV_ARM_tensors.html SPV_ARM_tensors>
+--
+--     -   This extension provides API support for
+--         <https://github.com/KhronosGroup/GLSL/blob/main/extensions/arm/GL_ARM_tensors.txt GL_ARM_tensors>
+--
+--     -   This extension interacts with @VK_EXT_mutable_descriptor_type@
+--
+--     -   This extension interacts with @VK_EXT_descriptor_buffer@
+--
+--     -   This extension interacts with @VK_EXT_frame_boundary@
+--
+--     -   This extension interacts with @VK_EXT_robustness2@
+--
+--     -   This extension interacts with @VK_KHR_unified_image_layouts@
+--
+--     -   This extension interacts with @VK_KHR_shader_bfloat16@
+--
+--     -   This extension interacts with @VK_EXT_shader_float8@
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Contributors__]
+--
+--     -   Kévin Petit, Arm Ltd.
+--
+--     -   Einar Hov, Arm Ltd.
+--
+--     -   Dominic Symes, Arm Ltd.
+--
+--     -   Jan-Harald Fredriksen, Arm Ltd.
+--
+--     -   Marco Cattani, Arm Ltd.
+--
+--     -   Lisa Wu, Arm Ltd.
+--
+--     -   Robert Hughes, Arm Ltd.
+--
+--     -   David Garbett, Arm Ltd.
+--
+--     -   Oualid Khelifi, Arm Ltd.
+--
+-- == Description
+--
+-- This extension adds support for tensors.
+--
+-- == New Object Types
+--
+-- -   'Vulkan.Extensions.Handles.TensorARM'
+--
+-- -   'Vulkan.Extensions.Handles.TensorViewARM'
+--
+-- == New Commands
+--
+-- -   'bindTensorMemoryARM'
+--
+-- -   'cmdCopyTensorARM'
+--
+-- -   'createTensorARM'
+--
+-- -   'createTensorViewARM'
+--
+-- -   'destroyTensorARM'
+--
+-- -   'destroyTensorViewARM'
+--
+-- -   'getDeviceTensorMemoryRequirementsARM'
+--
+-- -   'getPhysicalDeviceExternalTensorPropertiesARM'
+--
+-- -   'getTensorMemoryRequirementsARM'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_buffer VK_EXT_descriptor_buffer>
+-- is supported:
+--
+-- -   'getTensorOpaqueCaptureDescriptorDataARM'
+--
+-- -   'getTensorViewOpaqueCaptureDescriptorDataARM'
+--
+-- == New Structures
+--
+-- -   'BindTensorMemoryInfoARM'
+--
+-- -   'CopyTensorInfoARM'
+--
+-- -   'DeviceTensorMemoryRequirementsARM'
+--
+-- -   'ExternalTensorPropertiesARM'
+--
+-- -   'PhysicalDeviceExternalTensorInfoARM'
+--
+-- -   'TensorCopyARM'
+--
+-- -   'TensorCreateInfoARM'
+--
+-- -   'TensorMemoryRequirementsInfoARM'
+--
+-- -   'TensorViewCreateInfoARM'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_ARM_data_graph.DataGraphPipelineResourceInfoARM',
+--     'Vulkan.Extensions.VK_ARM_data_graph.DataGraphPipelineConstantARM':
+--
+--     -   'TensorDescriptionARM'
+--
+-- -   Extending
+--     'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.DependencyInfo':
+--
+--     -   'TensorDependencyInfoARM'
+--
+--     -   'TensorMemoryBarrierARM'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.FormatProperties2':
+--
+--     -   'TensorFormatPropertiesARM'
+--
+-- -   Extending 'Vulkan.Core10.Memory.MemoryAllocateInfo':
+--
+--     -   'MemoryDedicatedAllocateInfoTensorARM'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceTensorFeaturesARM'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDeviceTensorPropertiesARM'
+--
+-- -   Extending 'TensorCreateInfoARM':
+--
+--     -   'ExternalMemoryTensorCreateInfoARM'
+--
+-- -   Extending 'Vulkan.Core10.DescriptorSet.WriteDescriptorSet':
+--
+--     -   'WriteDescriptorSetTensorARM'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_buffer VK_EXT_descriptor_buffer>
+-- is supported:
+--
+-- -   'TensorCaptureDescriptorDataInfoARM'
+--
+-- -   'TensorViewCaptureDescriptorDataInfoARM'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.DescriptorGetInfoEXT':
+--
+--     -   'DescriptorGetTensorInfoARM'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceDescriptorBufferTensorFeaturesARM'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDeviceDescriptorBufferTensorPropertiesARM'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_frame_boundary VK_EXT_frame_boundary>
+-- is supported:
+--
+-- -   Extending 'Vulkan.Core10.Queue.SubmitInfo',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.SubmitInfo2',
+--     'Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR',
+--     'Vulkan.Core10.SparseResourceMemoryManagement.BindSparseInfo':
+--
+--     -   'FrameBoundaryTensorsARM'
+--
+-- == New Enums
+--
+-- -   'TensorCreateFlagBitsARM'
+--
+-- -   'TensorTilingARM'
+--
+-- -   'TensorUsageFlagBitsARM'
+--
+-- -   'TensorViewCreateFlagBitsARM'
+--
+-- == New Bitmasks
+--
+-- -   'TensorCreateFlagsARM'
+--
+-- -   'TensorUsageFlagsARM'
+--
+-- -   'TensorViewCreateFlagsARM'
+--
+-- == New Enum Constants
+--
+-- -   'ARM_TENSORS_EXTENSION_NAME'
+--
+-- -   'ARM_TENSORS_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.DescriptorType.DescriptorType':
+--
+--     -   'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--
+-- -   Extending 'Vulkan.Core10.Enums.Format.Format':
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_R8_BOOL_ARM'
+--
+-- -   Extending
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FormatFeatureFlagBits2':
+--
+--     -   'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_TENSOR_IMAGE_ALIASING_BIT_ARM'
+--
+--     -   'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_TENSOR_SHADER_BIT_ARM'
+--
+-- -   Extending 'Vulkan.Core10.Enums.ImageLayout.ImageLayout':
+--
+--     -   'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TENSOR_ALIASING_ARM'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlagBits':
+--
+--     -   'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TENSOR_ALIASING_BIT_ARM'
+--
+-- -   Extending 'Vulkan.Core10.Enums.ObjectType.ObjectType':
+--
+--     -   'Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_TENSOR_ARM'
+--
+--     -   'Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_TENSOR_VIEW_ARM'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BIND_TENSOR_MEMORY_INFO_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_TENSOR_INFO_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEVICE_TENSOR_MEMORY_REQUIREMENTS_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_EXTERNAL_MEMORY_TENSOR_CREATE_INFO_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_EXTERNAL_TENSOR_PROPERTIES_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_TENSOR_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_TENSOR_INFO_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_TENSOR_FEATURES_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_TENSOR_PROPERTIES_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_TENSOR_COPY_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_TENSOR_CREATE_INFO_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_TENSOR_DEPENDENCY_INFO_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_TENSOR_DESCRIPTION_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_TENSOR_FORMAT_PROPERTIES_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_TENSOR_MEMORY_BARRIER_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_TENSOR_MEMORY_REQUIREMENTS_INFO_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_TENSOR_VIEW_CREATE_INFO_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_TENSOR_ARM'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_buffer VK_EXT_descriptor_buffer>
+-- is supported:
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DESCRIPTOR_GET_TENSOR_INFO_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_FEATURES_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_PROPERTIES_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_TENSOR_CAPTURE_DESCRIPTOR_DATA_INFO_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_TENSOR_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_ARM'
+--
+-- -   Extending 'TensorCreateFlagBitsARM':
+--
+--     -   'TENSOR_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_ARM'
+--
+-- -   Extending 'TensorViewCreateFlagBitsARM':
+--
+--     -   'TENSOR_VIEW_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_ARM'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_frame_boundary VK_EXT_frame_boundary>
+-- is supported:
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_FRAME_BOUNDARY_TENSORS_ARM'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_shader_float8 VK_EXT_shader_float8>
+-- is supported:
+--
+-- -   Extending 'Vulkan.Core10.Enums.Format.Format':
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_R8_SFLOAT_FPENCODING_FLOAT8E4M3_ARM'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_R8_SFLOAT_FPENCODING_FLOAT8E5M2_ARM'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_shader_bfloat16 VK_KHR_shader_bfloat16>
+-- is supported:
+--
+-- -   Extending 'Vulkan.Core10.Enums.Format.Format':
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_R16_SFLOAT_FPENCODING_BFLOAT16_ARM'
+--
+-- == New SPIR-V Capabilities
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-TensorsARM TensorsARM>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-StorageTensorArrayDynamicIndexingARM StorageTensorArrayDynamicIndexingARM>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-StorageTensorArrayNonUniformIndexingARM StorageTensorArrayNonUniformIndexingARM>
+--
+-- == Issues
+--
+-- 1) Should tensor strides be passed in elements or in bytes?
+--
+-- __RESOLVED__: Strides are passed in bytes but are required to be a
+-- multiple of the tensor element size. Passing strides in bytes makes it
+-- possible to relax this requirement in the future without an interface
+-- change. It also makes it easier to describe memory alignment
+-- requirements.
+--
+-- 2) Should there be commands to copy data between tensors and
+-- buffers\/images?
+--
+-- __RESOLVED__: Adding these commands would result in a rather large API
+-- surface and not insignificant implementation and validation cost. The
+-- same outcome can be achieved with memory aliasing and tensor to tensor
+-- copy operations.
+--
+-- 3) Should this extension define transpose and\/or other data
+-- reorganization operations?
+--
+-- __RESOLVED__: These operations are useful to expose but this extension
+-- is only meant to add base support for tensors. Additional operations
+-- should be layered on top and defined in other extensions.
+--
+-- 4) Why are tensor strides described using signed integers?
+--
+-- __RESOLVED__: Negative strides make it possible to describe different
+-- linear data layouts. While this extension does not allow negative
+-- strides, it uses signed integers for strides to make it possible to
+-- relax this limitation in future extensions.
+--
+-- == Version History
+--
+-- -   Revision 2, 2026-01-07 (Kévin Petit)
+--
+--     -   Add interactions with VK_KHR_unified_image_layouts,
+--         VK_KHR_shader_bfloat16, and VK_EXT_shader_float8
+--
+-- -   Revision 1, 2025-06-03 (Kévin Petit)
+--
+--     -   Initial revision
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_ARM_tensors Vulkan Specification>.
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_ARM_tensors  ( createTensorARM
+                                         , withTensorARM
+                                         , destroyTensorARM
+                                         , createTensorViewARM
+                                         , withTensorViewARM
+                                         , destroyTensorViewARM
+                                         , getTensorMemoryRequirementsARM
+                                         , bindTensorMemoryARM
+                                         , getDeviceTensorMemoryRequirementsARM
+                                         , cmdCopyTensorARM
+                                         , getTensorOpaqueCaptureDescriptorDataARM
+                                         , getTensorViewOpaqueCaptureDescriptorDataARM
+                                         , getPhysicalDeviceExternalTensorPropertiesARM
+                                         , TensorDescriptionARM(..)
+                                         , TensorCreateInfoARM(..)
+                                         , TensorViewCreateInfoARM(..)
+                                         , TensorMemoryRequirementsInfoARM(..)
+                                         , BindTensorMemoryInfoARM(..)
+                                         , WriteDescriptorSetTensorARM(..)
+                                         , TensorFormatPropertiesARM(..)
+                                         , PhysicalDeviceTensorPropertiesARM(..)
+                                         , TensorMemoryBarrierARM(..)
+                                         , TensorDependencyInfoARM(..)
+                                         , PhysicalDeviceTensorFeaturesARM(..)
+                                         , DeviceTensorMemoryRequirementsARM(..)
+                                         , CopyTensorInfoARM(..)
+                                         , TensorCopyARM(..)
+                                         , MemoryDedicatedAllocateInfoTensorARM(..)
+                                         , PhysicalDeviceDescriptorBufferTensorPropertiesARM(..)
+                                         , PhysicalDeviceDescriptorBufferTensorFeaturesARM(..)
+                                         , TensorCaptureDescriptorDataInfoARM(..)
+                                         , TensorViewCaptureDescriptorDataInfoARM(..)
+                                         , DescriptorGetTensorInfoARM(..)
+                                         , FrameBoundaryTensorsARM(..)
+                                         , PhysicalDeviceExternalTensorInfoARM(..)
+                                         , ExternalTensorPropertiesARM(..)
+                                         , ExternalMemoryTensorCreateInfoARM(..)
+                                         , TensorCreateFlagsARM
+                                         , TensorCreateFlagBitsARM( TENSOR_CREATE_MUTABLE_FORMAT_BIT_ARM
+                                                                  , TENSOR_CREATE_PROTECTED_BIT_ARM
+                                                                  , TENSOR_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_ARM
+                                                                  , TENSOR_CREATE_DESCRIPTOR_HEAP_CAPTURE_REPLAY_BIT_ARM
+                                                                  , ..
+                                                                  )
+                                         , TensorUsageFlagsARM
+                                         , TensorUsageFlagBitsARM( TENSOR_USAGE_SHADER_BIT_ARM
+                                                                 , TENSOR_USAGE_TRANSFER_SRC_BIT_ARM
+                                                                 , TENSOR_USAGE_TRANSFER_DST_BIT_ARM
+                                                                 , TENSOR_USAGE_IMAGE_ALIASING_BIT_ARM
+                                                                 , TENSOR_USAGE_DATA_GRAPH_BIT_ARM
+                                                                 , ..
+                                                                 )
+                                         , TensorTilingARM( TENSOR_TILING_OPTIMAL_ARM
+                                                          , TENSOR_TILING_LINEAR_ARM
+                                                          , ..
+                                                          )
+                                         , TensorViewCreateFlagsARM
+                                         , TensorViewCreateFlagBitsARM( TENSOR_VIEW_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_ARM
+                                                                      , ..
+                                                                      )
+                                         , ARM_TENSORS_SPEC_VERSION
+                                         , pattern ARM_TENSORS_SPEC_VERSION
+                                         , ARM_TENSORS_EXTENSION_NAME
+                                         , pattern ARM_TENSORS_EXTENSION_NAME
+                                         , TensorARM(..)
+                                         , TensorViewARM(..)
+                                         ) where
+
+import Data.Bits (Bits)
+import Data.Bits (FiniteBits)
+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 GHC.Show (showsPrec)
+import Numeric (showHex)
+import Data.Coerce (coerce)
+import Control.Monad.Trans.Class (lift)
+import Control.Monad.Trans.Cont (evalContT)
+import Data.Vector (generateM)
+import qualified Data.Vector (imapM_)
+import qualified Data.Vector (length)
+import 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 Vulkan.Zero (Zero(..))
+import Control.Monad.IO.Class (MonadIO)
+import Data.String (IsString)
+import Data.Type.Equality ((:~:)(Refl))
+import Data.Typeable (Typeable)
+import Foreign.C.Types (CSize)
+import Foreign.C.Types (CSize(..))
+import Foreign.C.Types (CSize(CSize))
+import Foreign.Storable (Storable)
+import Foreign.Storable (Storable(peek))
+import Foreign.Storable (Storable(poke))
+import qualified Foreign.Storable (Storable(..))
+import GHC.Generics (Generic)
+import GHC.IO.Exception (IOErrorType(..))
+import GHC.IO.Exception (IOException(..))
+import Data.Int (Int32)
+import Data.Int (Int64)
+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 (withSomeCStruct)
+import Vulkan.NamedType ((:::))
+import Vulkan.Core13.Enums.AccessFlags2 (AccessFlags2)
+import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)
+import Vulkan.Core10.FundamentalTypes (Bool32)
+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.Handles (Device)
+import Vulkan.Core10.Handles (Device(..))
+import Vulkan.Core10.Handles (Device(Device))
+import Vulkan.Dynamic (DeviceCmds(pVkBindTensorMemoryARM))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdCopyTensorARM))
+import Vulkan.Dynamic (DeviceCmds(pVkCreateTensorARM))
+import Vulkan.Dynamic (DeviceCmds(pVkCreateTensorViewARM))
+import Vulkan.Dynamic (DeviceCmds(pVkDestroyTensorARM))
+import Vulkan.Dynamic (DeviceCmds(pVkDestroyTensorViewARM))
+import Vulkan.Dynamic (DeviceCmds(pVkGetDeviceTensorMemoryRequirementsARM))
+import Vulkan.Dynamic (DeviceCmds(pVkGetTensorMemoryRequirementsARM))
+import Vulkan.Dynamic (DeviceCmds(pVkGetTensorOpaqueCaptureDescriptorDataARM))
+import Vulkan.Dynamic (DeviceCmds(pVkGetTensorViewOpaqueCaptureDescriptorDataARM))
+import Vulkan.Core10.Handles (DeviceMemory)
+import Vulkan.Core10.FundamentalTypes (DeviceSize)
+import Vulkan.Core10.Handles (Device_T)
+import Vulkan.CStruct.Extends (Extends)
+import Vulkan.CStruct.Extends (Extendss)
+import Vulkan.CStruct.Extends (Extensible(..))
+import Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits (ExternalMemoryHandleTypeFlagBits)
+import Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits (ExternalMemoryHandleTypeFlags)
+import Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities (ExternalMemoryProperties)
+import Vulkan.Core10.FundamentalTypes (Flags64)
+import Vulkan.Core10.Enums.Format (Format)
+import Vulkan.Core13.Enums.FormatFeatureFlags2 (FormatFeatureFlags2)
+import Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceExternalTensorPropertiesARM))
+import Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2 (MemoryRequirements2)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_heap (OpaqueCaptureDataCreateInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_buffer (OpaqueCaptureDescriptorDataCreateInfoEXT)
+import Vulkan.CStruct.Extends (PeekChain)
+import Vulkan.CStruct.Extends (PeekChain(..))
+import Vulkan.Core10.Handles (PhysicalDevice)
+import Vulkan.Core10.Handles (PhysicalDevice(..))
+import Vulkan.Core10.Handles (PhysicalDevice(PhysicalDevice))
+import Vulkan.Core10.Handles (PhysicalDevice_T)
+import Vulkan.Core13.Enums.PipelineStageFlags2 (PipelineStageFlags2)
+import Vulkan.CStruct.Extends (PokeChain)
+import Vulkan.CStruct.Extends (PokeChain(..))
+import Vulkan.Core10.Enums.Result (Result)
+import Vulkan.Core10.Enums.Result (Result(..))
+import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)
+import Vulkan.Core10.Enums.SharingMode (SharingMode)
+import Vulkan.CStruct.Extends (SomeStruct)
+import Vulkan.CStruct.Extends (SomeStruct(..))
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Extensions.Handles (TensorARM)
+import Vulkan.Extensions.Handles (TensorARM(..))
+import Vulkan.Extensions.Handles (TensorViewARM)
+import Vulkan.Extensions.Handles (TensorViewARM(..))
+import Vulkan.Exception (VulkanException(..))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_BIND_TENSOR_MEMORY_INFO_ARM))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COPY_TENSOR_INFO_ARM))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DESCRIPTOR_GET_TENSOR_INFO_ARM))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEVICE_TENSOR_MEMORY_REQUIREMENTS_ARM))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_EXTERNAL_MEMORY_TENSOR_CREATE_INFO_ARM))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_EXTERNAL_TENSOR_PROPERTIES_ARM))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_FRAME_BOUNDARY_TENSORS_ARM))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_TENSOR_ARM))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_FEATURES_ARM))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_PROPERTIES_ARM))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_TENSOR_INFO_ARM))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_TENSOR_FEATURES_ARM))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_TENSOR_PROPERTIES_ARM))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_TENSOR_CAPTURE_DESCRIPTOR_DATA_INFO_ARM))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_TENSOR_COPY_ARM))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_TENSOR_CREATE_INFO_ARM))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_TENSOR_DEPENDENCY_INFO_ARM))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_TENSOR_DESCRIPTION_ARM))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_TENSOR_FORMAT_PROPERTIES_ARM))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_TENSOR_MEMORY_BARRIER_ARM))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_TENSOR_MEMORY_REQUIREMENTS_INFO_ARM))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_TENSOR_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_ARM))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_TENSOR_VIEW_CREATE_INFO_ARM))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_TENSOR_ARM))
+import Vulkan.Core10.Enums.Result (Result(SUCCESS))
+import Vulkan.Extensions.Handles (TensorARM(..))
+import Vulkan.Extensions.Handles (TensorViewARM(..))
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCreateTensorARM
+  :: FunPtr (Ptr Device_T -> Ptr (SomeStruct TensorCreateInfoARM) -> Ptr AllocationCallbacks -> Ptr TensorARM -> IO Result) -> Ptr Device_T -> Ptr (SomeStruct TensorCreateInfoARM) -> Ptr AllocationCallbacks -> Ptr TensorARM -> IO Result
+
+-- | vkCreateTensorARM - Create a new tensor object
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCreateTensorARM-tensors-09832# The
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-tensors tensors>
+--     feature /must/ be enabled
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCreateTensorARM-device-parameter# @device@ /must/ be a valid
+--     'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkCreateTensorARM-pCreateInfo-parameter# @pCreateInfo@ /must/
+--     be a valid pointer to a valid 'TensorCreateInfoARM' structure
+--
+-- -   #VUID-vkCreateTensorARM-pAllocator-parameter# If @pAllocator@ is not
+--     @NULL@, @pAllocator@ /must/ be a valid pointer to a valid
+--     'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' structure
+--
+-- -   #VUID-vkCreateTensorARM-pTensor-parameter# @pTensor@ /must/ be a
+--     valid pointer to a 'Vulkan.Extensions.Handles.TensorARM' handle
+--
+-- -   #VUID-vkCreateTensorARM-device-queuecount# The device /must/ have
+--     been created with at least @1@ queue
+--
+-- == 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_DEVICE_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_tensors VK_ARM_tensors>,
+-- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',
+-- 'Vulkan.Core10.Handles.Device', 'Vulkan.Extensions.Handles.TensorARM',
+-- 'TensorCreateInfoARM'
+createTensorARM :: forall a io
+                 . (Extendss TensorCreateInfoARM a, PokeChain a, MonadIO io)
+                => -- | @device@ is the logical device that creates the tensor.
+                   Device
+                -> -- | @pCreateInfo@ is a pointer to a 'TensorCreateInfoARM' structure
+                   -- containing parameters to be used to create the tensor.
+                   (TensorCreateInfoARM a)
+                -> -- | @pAllocator@ controls host memory allocation as described in the
+                   -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
+                   -- chapter.
+                   ("allocator" ::: Maybe AllocationCallbacks)
+                -> io (TensorARM)
+createTensorARM device createInfo allocator = liftIO . evalContT $ do
+  let vkCreateTensorARMPtr = pVkCreateTensorARM (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCreateTensorARMPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCreateTensorARM is null" Nothing Nothing
+  let vkCreateTensorARM' = mkVkCreateTensorARM vkCreateTensorARMPtr
+  pCreateInfo <- ContT $ withCStruct (createInfo)
+  pAllocator <- case (allocator) of
+    Nothing -> pure nullPtr
+    Just j -> ContT $ withCStruct (j)
+  pPTensor <- ContT $ bracket (callocBytes @TensorARM 8) free
+  r <- lift $ traceAroundEvent "vkCreateTensorARM" (vkCreateTensorARM'
+                                                      (deviceHandle (device))
+                                                      (forgetExtensions pCreateInfo)
+                                                      pAllocator
+                                                      (pPTensor))
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+  pTensor <- lift $ peek @TensorARM pPTensor
+  pure $ (pTensor)
+
+-- | A convenience wrapper to make a compatible pair of calls to
+-- 'createTensorARM' and 'destroyTensorARM'
+--
+-- To ensure that 'destroyTensorARM' 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.
+--
+withTensorARM :: forall a io r . (Extendss TensorCreateInfoARM a, PokeChain a, MonadIO io) => Device -> TensorCreateInfoARM a -> Maybe AllocationCallbacks -> (io TensorARM -> (TensorARM -> io ()) -> r) -> r
+withTensorARM device pCreateInfo pAllocator b =
+  b (createTensorARM device pCreateInfo pAllocator)
+    (\(o0) -> destroyTensorARM device o0 pAllocator)
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkDestroyTensorARM
+  :: FunPtr (Ptr Device_T -> TensorARM -> Ptr AllocationCallbacks -> IO ()) -> Ptr Device_T -> TensorARM -> Ptr AllocationCallbacks -> IO ()
+
+-- | vkDestroyTensorARM - Destroy a tensor object
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkDestroyTensorARM-tensor-09730# All submitted commands that
+--     refer to @tensor@, either directly or via a
+--     'Vulkan.Extensions.Handles.TensorViewARM', /must/ have completed
+--     execution
+--
+-- -   #VUID-vkDestroyTensorARM-tensor-09731# If
+--     'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' were
+--     provided when @tensor@ was created, a compatible set of callbacks
+--     /must/ be provided here
+--
+-- -   #VUID-vkDestroyTensorARM-tensor-09732# If no
+--     'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' were
+--     provided when @tensor@ was created, @pAllocator@ /must/ be @NULL@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkDestroyTensorARM-device-parameter# @device@ /must/ be a
+--     valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkDestroyTensorARM-tensor-parameter# If @tensor@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', @tensor@ /must/ be a valid
+--     'Vulkan.Extensions.Handles.TensorARM' handle
+--
+-- -   #VUID-vkDestroyTensorARM-pAllocator-parameter# If @pAllocator@ is
+--     not @NULL@, @pAllocator@ /must/ be a valid pointer to a valid
+--     'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' structure
+--
+-- -   #VUID-vkDestroyTensorARM-tensor-parent# If @tensor@ is a valid
+--     handle, it /must/ have been created, allocated, or retrieved from
+--     @device@
+--
+-- == Host Synchronization
+--
+-- -   Host access to @tensor@ /must/ be externally synchronized
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_tensors VK_ARM_tensors>,
+-- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',
+-- 'Vulkan.Core10.Handles.Device', 'Vulkan.Extensions.Handles.TensorARM'
+destroyTensorARM :: forall io
+                  . (MonadIO io)
+                 => -- | @device@ is the logical device that destroys the tensor.
+                    Device
+                 -> -- | @tensor@ is the tensor to destroy.
+                    TensorARM
+                 -> -- | @pAllocator@ controls host memory allocation as described in the
+                    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
+                    -- chapter.
+                    ("allocator" ::: Maybe AllocationCallbacks)
+                 -> io ()
+destroyTensorARM device tensor allocator = liftIO . evalContT $ do
+  let vkDestroyTensorARMPtr = pVkDestroyTensorARM (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkDestroyTensorARMPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkDestroyTensorARM is null" Nothing Nothing
+  let vkDestroyTensorARM' = mkVkDestroyTensorARM vkDestroyTensorARMPtr
+  pAllocator <- case (allocator) of
+    Nothing -> pure nullPtr
+    Just j -> ContT $ withCStruct (j)
+  lift $ traceAroundEvent "vkDestroyTensorARM" (vkDestroyTensorARM'
+                                                  (deviceHandle (device))
+                                                  (tensor)
+                                                  pAllocator)
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCreateTensorViewARM
+  :: FunPtr (Ptr Device_T -> Ptr (SomeStruct TensorViewCreateInfoARM) -> Ptr AllocationCallbacks -> Ptr TensorViewARM -> IO Result) -> Ptr Device_T -> Ptr (SomeStruct TensorViewCreateInfoARM) -> Ptr AllocationCallbacks -> Ptr TensorViewARM -> IO Result
+
+-- | vkCreateTensorViewARM - Create an tensor view from an existing tensor
+--
+-- = Description
+--
+-- Some of the tensor creation parameters are inherited by the view. In
+-- particular, other than format, the tensor view creation inherits all
+-- other parameters from the tensor.
+--
+-- The remaining parameters are contained in @pCreateInfo@.
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCreateTensorViewARM-device-parameter# @device@ /must/ be a
+--     valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkCreateTensorViewARM-pCreateInfo-parameter# @pCreateInfo@
+--     /must/ be a valid pointer to a valid 'TensorViewCreateInfoARM'
+--     structure
+--
+-- -   #VUID-vkCreateTensorViewARM-pAllocator-parameter# If @pAllocator@ is
+--     not @NULL@, @pAllocator@ /must/ be a valid pointer to a valid
+--     'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' structure
+--
+-- -   #VUID-vkCreateTensorViewARM-pView-parameter# @pView@ /must/ be a
+--     valid pointer to a 'Vulkan.Extensions.Handles.TensorViewARM' handle
+--
+-- -   #VUID-vkCreateTensorViewARM-device-queuecount# The device /must/
+--     have been created with at least @1@ queue
+--
+-- == 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_DEVICE_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_tensors VK_ARM_tensors>,
+-- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',
+-- 'Vulkan.Core10.Handles.Device',
+-- 'Vulkan.Extensions.Handles.TensorViewARM', 'TensorViewCreateInfoARM'
+createTensorViewARM :: forall a io
+                     . ( Extendss TensorViewCreateInfoARM a
+                       , PokeChain a
+                       , MonadIO io )
+                    => -- | @device@ is the logical device that creates the tensor view.
+                       Device
+                    -> -- | @pCreateInfo@ is a pointer to an instance of the
+                       -- 'TensorViewCreateInfoARM' structure containing parameters to be used to
+                       -- create the tensor view.
+                       (TensorViewCreateInfoARM a)
+                    -> -- | @pAllocator@ controls host memory allocation as described in the
+                       -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
+                       -- chapter.
+                       ("allocator" ::: Maybe AllocationCallbacks)
+                    -> io (TensorViewARM)
+createTensorViewARM device createInfo allocator = liftIO . evalContT $ do
+  let vkCreateTensorViewARMPtr = pVkCreateTensorViewARM (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCreateTensorViewARMPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCreateTensorViewARM is null" Nothing Nothing
+  let vkCreateTensorViewARM' = mkVkCreateTensorViewARM vkCreateTensorViewARMPtr
+  pCreateInfo <- ContT $ withCStruct (createInfo)
+  pAllocator <- case (allocator) of
+    Nothing -> pure nullPtr
+    Just j -> ContT $ withCStruct (j)
+  pPView <- ContT $ bracket (callocBytes @TensorViewARM 8) free
+  r <- lift $ traceAroundEvent "vkCreateTensorViewARM" (vkCreateTensorViewARM'
+                                                          (deviceHandle (device))
+                                                          (forgetExtensions pCreateInfo)
+                                                          pAllocator
+                                                          (pPView))
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+  pView <- lift $ peek @TensorViewARM pPView
+  pure $ (pView)
+
+-- | A convenience wrapper to make a compatible pair of calls to
+-- 'createTensorViewARM' and 'destroyTensorViewARM'
+--
+-- To ensure that 'destroyTensorViewARM' 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.
+--
+withTensorViewARM :: forall a io r . (Extendss TensorViewCreateInfoARM a, PokeChain a, MonadIO io) => Device -> TensorViewCreateInfoARM a -> Maybe AllocationCallbacks -> (io TensorViewARM -> (TensorViewARM -> io ()) -> r) -> r
+withTensorViewARM device pCreateInfo pAllocator b =
+  b (createTensorViewARM device pCreateInfo pAllocator)
+    (\(o0) -> destroyTensorViewARM device o0 pAllocator)
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkDestroyTensorViewARM
+  :: FunPtr (Ptr Device_T -> TensorViewARM -> Ptr AllocationCallbacks -> IO ()) -> Ptr Device_T -> TensorViewARM -> Ptr AllocationCallbacks -> IO ()
+
+-- | vkDestroyTensorViewARM - Destroy a tensor view object
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkDestroyTensorViewARM-tensorView-09750# All submitted
+--     commands that refer to @tensorView@ /must/ have completed execution
+--
+-- -   #VUID-vkDestroyTensorViewARM-tensorView-09751# If
+--     'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' were
+--     provided when @tensorView@ was created, a compatible set of
+--     callbacks /must/ be provided here
+--
+-- -   #VUID-vkDestroyTensorViewARM-tensorView-09752# If no
+--     'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' were
+--     provided when @tensorView@ was created, @pAllocator@ /must/ be
+--     @NULL@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkDestroyTensorViewARM-device-parameter# @device@ /must/ be a
+--     valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkDestroyTensorViewARM-tensorView-parameter# If @tensorView@
+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @tensorView@ /must/
+--     be a valid 'Vulkan.Extensions.Handles.TensorViewARM' handle
+--
+-- -   #VUID-vkDestroyTensorViewARM-pAllocator-parameter# If @pAllocator@
+--     is not @NULL@, @pAllocator@ /must/ be a valid pointer to a valid
+--     'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' structure
+--
+-- -   #VUID-vkDestroyTensorViewARM-tensorView-parent# If @tensorView@ is a
+--     valid handle, it /must/ have been created, allocated, or retrieved
+--     from @device@
+--
+-- == Host Synchronization
+--
+-- -   Host access to @tensorView@ /must/ be externally synchronized
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_tensors VK_ARM_tensors>,
+-- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',
+-- 'Vulkan.Core10.Handles.Device',
+-- 'Vulkan.Extensions.Handles.TensorViewARM'
+destroyTensorViewARM :: forall io
+                      . (MonadIO io)
+                     => -- | @device@ is the logical device that destroys the tensor view.
+                        Device
+                     -> -- | @tensorView@ is the tensor view to destroy.
+                        TensorViewARM
+                     -> -- | @pAllocator@ controls host memory allocation as described in the
+                        -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
+                        -- chapter.
+                        ("allocator" ::: Maybe AllocationCallbacks)
+                     -> io ()
+destroyTensorViewARM device tensorView allocator = liftIO . evalContT $ do
+  let vkDestroyTensorViewARMPtr = pVkDestroyTensorViewARM (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkDestroyTensorViewARMPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkDestroyTensorViewARM is null" Nothing Nothing
+  let vkDestroyTensorViewARM' = mkVkDestroyTensorViewARM vkDestroyTensorViewARMPtr
+  pAllocator <- case (allocator) of
+    Nothing -> pure nullPtr
+    Just j -> ContT $ withCStruct (j)
+  lift $ traceAroundEvent "vkDestroyTensorViewARM" (vkDestroyTensorViewARM'
+                                                      (deviceHandle (device))
+                                                      (tensorView)
+                                                      pAllocator)
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetTensorMemoryRequirementsARM
+  :: FunPtr (Ptr Device_T -> Ptr TensorMemoryRequirementsInfoARM -> Ptr (SomeStruct MemoryRequirements2) -> IO ()) -> Ptr Device_T -> Ptr TensorMemoryRequirementsInfoARM -> Ptr (SomeStruct MemoryRequirements2) -> IO ()
+
+-- | vkGetTensorMemoryRequirementsARM - 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_ARM_tensors VK_ARM_tensors>,
+-- 'Vulkan.Core10.Handles.Device',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.MemoryRequirements2',
+-- 'TensorMemoryRequirementsInfoARM'
+getTensorMemoryRequirementsARM :: forall a io
+                                . ( Extendss MemoryRequirements2 a
+                                  , PokeChain a
+                                  , PeekChain a
+                                  , MonadIO io )
+                               => -- | @device@ is the logical device that owns the tensor.
+                                  --
+                                  -- #VUID-vkGetTensorMemoryRequirementsARM-device-parameter# @device@ /must/
+                                  -- be a valid 'Vulkan.Core10.Handles.Device' handle
+                                  Device
+                               -> -- | @pInfo@ is a pointer to a 'TensorMemoryRequirementsInfoARM' structure
+                                  -- containing parameters required for the memory requirements query.
+                                  --
+                                  -- #VUID-vkGetTensorMemoryRequirementsARM-pInfo-parameter# @pInfo@ /must/
+                                  -- be a valid pointer to a valid 'TensorMemoryRequirementsInfoARM'
+                                  -- structure
+                                  TensorMemoryRequirementsInfoARM
+                               -> io (MemoryRequirements2 a)
+getTensorMemoryRequirementsARM device info = liftIO . evalContT $ do
+  let vkGetTensorMemoryRequirementsARMPtr = pVkGetTensorMemoryRequirementsARM (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkGetTensorMemoryRequirementsARMPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetTensorMemoryRequirementsARM is null" Nothing Nothing
+  let vkGetTensorMemoryRequirementsARM' = mkVkGetTensorMemoryRequirementsARM vkGetTensorMemoryRequirementsARMPtr
+  pInfo <- ContT $ withCStruct (info)
+  pPMemoryRequirements <- ContT (withZeroCStruct @(MemoryRequirements2 _))
+  lift $ traceAroundEvent "vkGetTensorMemoryRequirementsARM" (vkGetTensorMemoryRequirementsARM'
+                                                                (deviceHandle (device))
+                                                                pInfo
+                                                                (forgetExtensions (pPMemoryRequirements)))
+  pMemoryRequirements <- lift $ peekCStruct @(MemoryRequirements2 _) pPMemoryRequirements
+  pure $ (pMemoryRequirements)
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkBindTensorMemoryARM
+  :: FunPtr (Ptr Device_T -> Word32 -> Ptr BindTensorMemoryInfoARM -> IO Result) -> Ptr Device_T -> Word32 -> Ptr BindTensorMemoryInfoARM -> IO Result
+
+-- | vkBindTensorMemoryARM - Bind device memory to tensor objects
+--
+-- = Description
+--
+-- On some implementations, it /may/ be more efficient to batch memory
+-- bindings into a single command.
+--
+-- == 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_DEVICE_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_tensors VK_ARM_tensors>,
+-- 'BindTensorMemoryInfoARM', 'Vulkan.Core10.Handles.Device'
+bindTensorMemoryARM :: forall io
+                     . (MonadIO io)
+                    => -- | @device@ is the logical device that owns the buffers and memory.
+                       --
+                       -- #VUID-vkBindTensorMemoryARM-device-parameter# @device@ /must/ be a valid
+                       -- 'Vulkan.Core10.Handles.Device' handle
+                       Device
+                    -> -- | @pBindInfos@ is a pointer to an array of structures of type
+                       -- 'BindTensorMemoryInfoARM', describing tensors and memory to bind.
+                       --
+                       -- #VUID-vkBindTensorMemoryARM-pBindInfos-parameter# @pBindInfos@ /must/ be
+                       -- a valid pointer to an array of @bindInfoCount@ valid
+                       -- 'BindTensorMemoryInfoARM' structures
+                       ("bindInfos" ::: Vector BindTensorMemoryInfoARM)
+                    -> io ()
+bindTensorMemoryARM device bindInfos = liftIO . evalContT $ do
+  let vkBindTensorMemoryARMPtr = pVkBindTensorMemoryARM (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkBindTensorMemoryARMPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkBindTensorMemoryARM is null" Nothing Nothing
+  let vkBindTensorMemoryARM' = mkVkBindTensorMemoryARM vkBindTensorMemoryARMPtr
+  pPBindInfos <- ContT $ allocaBytes @BindTensorMemoryInfoARM ((Data.Vector.length (bindInfos)) * 40)
+  lift $ Data.Vector.imapM_ (\i e -> poke (pPBindInfos `plusPtr` (40 * (i)) :: Ptr BindTensorMemoryInfoARM) (e)) (bindInfos)
+  r <- lift $ traceAroundEvent "vkBindTensorMemoryARM" (vkBindTensorMemoryARM'
+                                                          (deviceHandle (device))
+                                                          ((fromIntegral (Data.Vector.length $ (bindInfos)) :: Word32))
+                                                          (pPBindInfos))
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetDeviceTensorMemoryRequirementsARM
+  :: FunPtr (Ptr Device_T -> Ptr DeviceTensorMemoryRequirementsARM -> Ptr (SomeStruct MemoryRequirements2) -> IO ()) -> Ptr Device_T -> Ptr DeviceTensorMemoryRequirementsARM -> Ptr (SomeStruct MemoryRequirements2) -> IO ()
+
+-- | vkGetDeviceTensorMemoryRequirementsARM - Returns the memory requirements
+-- for specified tensor creation infos
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkGetDeviceTensorMemoryRequirementsARM-tensors-09831# The
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-tensors tensors>
+--     feature /must/ be enabled
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkGetDeviceTensorMemoryRequirementsARM-device-parameter#
+--     @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkGetDeviceTensorMemoryRequirementsARM-pInfo-parameter#
+--     @pInfo@ /must/ be a valid pointer to a valid
+--     'DeviceTensorMemoryRequirementsARM' structure
+--
+-- -   #VUID-vkGetDeviceTensorMemoryRequirementsARM-pMemoryRequirements-parameter#
+--     @pMemoryRequirements@ /must/ be a valid pointer to a
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.MemoryRequirements2'
+--     structure
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_tensors VK_ARM_tensors>,
+-- 'Vulkan.Core10.Handles.Device', 'DeviceTensorMemoryRequirementsARM',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.MemoryRequirements2'
+getDeviceTensorMemoryRequirementsARM :: forall a io
+                                      . ( Extendss MemoryRequirements2 a
+                                        , PokeChain a
+                                        , PeekChain a
+                                        , MonadIO io )
+                                     => -- | @device@ is the logical device intended to own the tensor.
+                                        Device
+                                     -> -- | @pInfo@ is a pointer to a 'DeviceTensorMemoryRequirementsARM' structure
+                                        -- containing parameters required for the memory requirements query.
+                                        ("info" ::: DeviceTensorMemoryRequirementsARM)
+                                     -> io (MemoryRequirements2 a)
+getDeviceTensorMemoryRequirementsARM device info = liftIO . evalContT $ do
+  let vkGetDeviceTensorMemoryRequirementsARMPtr = pVkGetDeviceTensorMemoryRequirementsARM (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkGetDeviceTensorMemoryRequirementsARMPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetDeviceTensorMemoryRequirementsARM is null" Nothing Nothing
+  let vkGetDeviceTensorMemoryRequirementsARM' = mkVkGetDeviceTensorMemoryRequirementsARM vkGetDeviceTensorMemoryRequirementsARMPtr
+  pInfo <- ContT $ withCStruct (info)
+  pPMemoryRequirements <- ContT (withZeroCStruct @(MemoryRequirements2 _))
+  lift $ traceAroundEvent "vkGetDeviceTensorMemoryRequirementsARM" (vkGetDeviceTensorMemoryRequirementsARM'
+                                                                      (deviceHandle (device))
+                                                                      pInfo
+                                                                      (forgetExtensions (pPMemoryRequirements)))
+  pMemoryRequirements <- lift $ peekCStruct @(MemoryRequirements2 _) pPMemoryRequirements
+  pure $ (pMemoryRequirements)
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdCopyTensorARM
+  :: FunPtr (Ptr CommandBuffer_T -> Ptr CopyTensorInfoARM -> IO ()) -> Ptr CommandBuffer_T -> Ptr CopyTensorInfoARM -> IO ()
+
+-- | vkCmdCopyTensorARM - Copy data between tensors
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdCopyTensorARM-commandBuffer-parameter# @commandBuffer@
+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdCopyTensorARM-pCopyTensorInfo-parameter#
+--     @pCopyTensorInfo@ /must/ be a valid pointer to a valid
+--     'CopyTensorInfoARM' structure
+--
+-- -   #VUID-vkCmdCopyTensorARM-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-vkCmdCopyTensorARM-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT',
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT', or
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_TRANSFER_BIT' operations
+--
+-- -   #VUID-vkCmdCopyTensorARM-renderpass# This command /must/ only be
+--     called outside of a render pass instance
+--
+-- -   #VUID-vkCmdCopyTensorARM-suspended# This command /must/ not be
+--     called between suspended render pass instances
+--
+-- -   #VUID-vkCmdCopyTensorARM-videocoding# This command /must/ only be
+--     called outside of a video coding scope
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | VK_QUEUE_GRAPHICS_BIT                                                                                                 |                                                                                                                                        |
+-- |                                                                                                                            |                                                                                                                        |                                                                                                                             | VK_QUEUE_TRANSFER_BIT                                                                                                 |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdCopyTensorARM is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_tensors VK_ARM_tensors>,
+-- 'Vulkan.Core10.Handles.CommandBuffer', 'CopyTensorInfoARM'
+cmdCopyTensorARM :: forall io
+                  . (MonadIO io)
+                 => -- | @commandBuffer@ is the command buffer into which the command will be
+                    -- recorded.
+                    CommandBuffer
+                 -> -- | @pCopyTensorInfo@ is a pointer to 'CopyTensorInfoARM' structure
+                    -- describing the copy parameters.
+                    CopyTensorInfoARM
+                 -> io ()
+cmdCopyTensorARM commandBuffer copyTensorInfo = liftIO . evalContT $ do
+  let vkCmdCopyTensorARMPtr = pVkCmdCopyTensorARM (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdCopyTensorARMPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdCopyTensorARM is null" Nothing Nothing
+  let vkCmdCopyTensorARM' = mkVkCmdCopyTensorARM vkCmdCopyTensorARMPtr
+  pCopyTensorInfo <- ContT $ withCStruct (copyTensorInfo)
+  lift $ traceAroundEvent "vkCmdCopyTensorARM" (vkCmdCopyTensorARM'
+                                                  (commandBufferHandle (commandBuffer))
+                                                  pCopyTensorInfo)
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetTensorOpaqueCaptureDescriptorDataARM
+  :: FunPtr (Ptr Device_T -> Ptr TensorCaptureDescriptorDataInfoARM -> Ptr () -> IO Result) -> Ptr Device_T -> Ptr TensorCaptureDescriptorDataInfoARM -> Ptr () -> IO Result
+
+-- | vkGetTensorOpaqueCaptureDescriptorDataARM - Get tensor opaque capture
+-- descriptor data
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkGetTensorOpaqueCaptureDescriptorDataARM-descriptorBufferCaptureReplay-09702#
+--     The
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-descriptorBuffer descriptorBufferCaptureReplay>
+--     and
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-descriptorBufferTensorDescriptors descriptorBufferTensorDescriptors>
+--     features /must/ be enabled
+--
+-- -   #VUID-vkGetTensorOpaqueCaptureDescriptorDataARM-pData-09703# @pData@
+--     /must/ point to a buffer that is at least
+--     'PhysicalDeviceDescriptorBufferTensorPropertiesARM'::@tensorCaptureReplayDescriptorDataSize@
+--     bytes in size
+--
+-- -   #VUID-vkGetTensorOpaqueCaptureDescriptorDataARM-device-09704# If
+--     @device@ was created with multiple physical devices, then the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-bufferDeviceAddressMultiDevice bufferDeviceAddressMultiDevice>
+--     feature /must/ be enabled
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkGetTensorOpaqueCaptureDescriptorDataARM-device-parameter#
+--     @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkGetTensorOpaqueCaptureDescriptorDataARM-pInfo-parameter#
+--     @pInfo@ /must/ be a valid pointer to a valid
+--     'TensorCaptureDescriptorDataInfoARM' structure
+--
+-- -   #VUID-vkGetTensorOpaqueCaptureDescriptorDataARM-pData-parameter#
+--     @pData@ /must/ be a pointer value
+--
+-- == Return Codes
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
+--
+--     -   'Vulkan.Core10.Enums.Result.SUCCESS'
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_tensors VK_ARM_tensors>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_buffer VK_EXT_descriptor_buffer>,
+-- 'Vulkan.Core10.Handles.Device', 'TensorCaptureDescriptorDataInfoARM'
+getTensorOpaqueCaptureDescriptorDataARM :: forall io
+                                         . (MonadIO io)
+                                        => -- | @device@ is the logical device that gets the data.
+                                           Device
+                                        -> -- | @pInfo@ is a pointer to a 'TensorCaptureDescriptorDataInfoARM' structure
+                                           -- specifying the tensor.
+                                           TensorCaptureDescriptorDataInfoARM
+                                        -> -- | @pData@ is a pointer to a user-allocated buffer where the data will be
+                                           -- written.
+                                           ("data" ::: Ptr ())
+                                        -> io ()
+getTensorOpaqueCaptureDescriptorDataARM device
+                                          info
+                                          data' = liftIO . evalContT $ do
+  let vkGetTensorOpaqueCaptureDescriptorDataARMPtr = pVkGetTensorOpaqueCaptureDescriptorDataARM (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkGetTensorOpaqueCaptureDescriptorDataARMPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetTensorOpaqueCaptureDescriptorDataARM is null" Nothing Nothing
+  let vkGetTensorOpaqueCaptureDescriptorDataARM' = mkVkGetTensorOpaqueCaptureDescriptorDataARM vkGetTensorOpaqueCaptureDescriptorDataARMPtr
+  pInfo <- ContT $ withCStruct (info)
+  r <- lift $ traceAroundEvent "vkGetTensorOpaqueCaptureDescriptorDataARM" (vkGetTensorOpaqueCaptureDescriptorDataARM'
+                                                                              (deviceHandle (device))
+                                                                              pInfo
+                                                                              (data'))
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetTensorViewOpaqueCaptureDescriptorDataARM
+  :: FunPtr (Ptr Device_T -> Ptr TensorViewCaptureDescriptorDataInfoARM -> Ptr () -> IO Result) -> Ptr Device_T -> Ptr TensorViewCaptureDescriptorDataInfoARM -> Ptr () -> IO Result
+
+-- | vkGetTensorViewOpaqueCaptureDescriptorDataARM - Get tensor view opaque
+-- capture descriptor data
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkGetTensorViewOpaqueCaptureDescriptorDataARM-descriptorBufferCaptureReplay-09706#
+--     The
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-descriptorBuffer descriptorBufferCaptureReplay>
+--     and
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-descriptorBufferTensorDescriptors descriptorBufferTensorDescriptors>
+--     features /must/ be enabled
+--
+-- -   #VUID-vkGetTensorViewOpaqueCaptureDescriptorDataARM-pData-09707#
+--     @pData@ /must/ point to a buffer that is at least
+--     'PhysicalDeviceDescriptorBufferTensorPropertiesARM'::@tensorViewCaptureReplayDescriptorDataSize@
+--     bytes in size
+--
+-- -   #VUID-vkGetTensorViewOpaqueCaptureDescriptorDataARM-device-09708# If
+--     @device@ was created with multiple physical devices, then the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-bufferDeviceAddressMultiDevice bufferDeviceAddressMultiDevice>
+--     feature /must/ be enabled
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkGetTensorViewOpaqueCaptureDescriptorDataARM-device-parameter#
+--     @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkGetTensorViewOpaqueCaptureDescriptorDataARM-pInfo-parameter#
+--     @pInfo@ /must/ be a valid pointer to a valid
+--     'TensorViewCaptureDescriptorDataInfoARM' structure
+--
+-- -   #VUID-vkGetTensorViewOpaqueCaptureDescriptorDataARM-pData-parameter#
+--     @pData@ /must/ be a pointer value
+--
+-- == Return Codes
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
+--
+--     -   'Vulkan.Core10.Enums.Result.SUCCESS'
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_tensors VK_ARM_tensors>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_buffer VK_EXT_descriptor_buffer>,
+-- 'Vulkan.Core10.Handles.Device', 'TensorViewCaptureDescriptorDataInfoARM'
+getTensorViewOpaqueCaptureDescriptorDataARM :: forall io
+                                             . (MonadIO io)
+                                            => -- | @device@ is the logical device that gets the data.
+                                               Device
+                                            -> -- | @pInfo@ is a pointer to a 'TensorViewCaptureDescriptorDataInfoARM'
+                                               -- structure specifying the tensor view.
+                                               TensorViewCaptureDescriptorDataInfoARM
+                                            -> -- | @pData@ is a pointer to a user-allocated buffer where the data will be
+                                               -- written.
+                                               ("data" ::: Ptr ())
+                                            -> io ()
+getTensorViewOpaqueCaptureDescriptorDataARM device
+                                              info
+                                              data' = liftIO . evalContT $ do
+  let vkGetTensorViewOpaqueCaptureDescriptorDataARMPtr = pVkGetTensorViewOpaqueCaptureDescriptorDataARM (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkGetTensorViewOpaqueCaptureDescriptorDataARMPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetTensorViewOpaqueCaptureDescriptorDataARM is null" Nothing Nothing
+  let vkGetTensorViewOpaqueCaptureDescriptorDataARM' = mkVkGetTensorViewOpaqueCaptureDescriptorDataARM vkGetTensorViewOpaqueCaptureDescriptorDataARMPtr
+  pInfo <- ContT $ withCStruct (info)
+  r <- lift $ traceAroundEvent "vkGetTensorViewOpaqueCaptureDescriptorDataARM" (vkGetTensorViewOpaqueCaptureDescriptorDataARM'
+                                                                                  (deviceHandle (device))
+                                                                                  pInfo
+                                                                                  (data'))
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetPhysicalDeviceExternalTensorPropertiesARM
+  :: FunPtr (Ptr PhysicalDevice_T -> Ptr PhysicalDeviceExternalTensorInfoARM -> Ptr ExternalTensorPropertiesARM -> IO ()) -> Ptr PhysicalDevice_T -> Ptr PhysicalDeviceExternalTensorInfoARM -> Ptr ExternalTensorPropertiesARM -> IO ()
+
+-- | vkGetPhysicalDeviceExternalTensorPropertiesARM - Function for querying
+-- external tensor handle capabilities.
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_tensors VK_ARM_tensors>,
+-- 'ExternalTensorPropertiesARM', 'Vulkan.Core10.Handles.PhysicalDevice',
+-- 'PhysicalDeviceExternalTensorInfoARM'
+getPhysicalDeviceExternalTensorPropertiesARM :: forall io
+                                              . (MonadIO io)
+                                             => -- | @physicalDevice@ is the physical device from which to query the tensor
+                                                -- capabilities.
+                                                --
+                                                -- #VUID-vkGetPhysicalDeviceExternalTensorPropertiesARM-physicalDevice-parameter#
+                                                -- @physicalDevice@ /must/ be a valid
+                                                -- 'Vulkan.Core10.Handles.PhysicalDevice' handle
+                                                PhysicalDevice
+                                             -> -- | @pExternalTensorInfo@ is a pointer to a
+                                                -- 'PhysicalDeviceExternalTensorInfoARM' structure describing the
+                                                -- parameters that would be consumed by 'createTensorARM'.
+                                                --
+                                                -- #VUID-vkGetPhysicalDeviceExternalTensorPropertiesARM-pExternalTensorInfo-parameter#
+                                                -- @pExternalTensorInfo@ /must/ be a valid pointer to a valid
+                                                -- 'PhysicalDeviceExternalTensorInfoARM' structure
+                                                PhysicalDeviceExternalTensorInfoARM
+                                             -> io (ExternalTensorPropertiesARM)
+getPhysicalDeviceExternalTensorPropertiesARM physicalDevice
+                                               externalTensorInfo = liftIO . evalContT $ do
+  let vkGetPhysicalDeviceExternalTensorPropertiesARMPtr = pVkGetPhysicalDeviceExternalTensorPropertiesARM (case physicalDevice of PhysicalDevice{instanceCmds} -> instanceCmds)
+  lift $ unless (vkGetPhysicalDeviceExternalTensorPropertiesARMPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetPhysicalDeviceExternalTensorPropertiesARM is null" Nothing Nothing
+  let vkGetPhysicalDeviceExternalTensorPropertiesARM' = mkVkGetPhysicalDeviceExternalTensorPropertiesARM vkGetPhysicalDeviceExternalTensorPropertiesARMPtr
+  pExternalTensorInfo <- ContT $ withCStruct (externalTensorInfo)
+  pPExternalTensorProperties <- ContT (withZeroCStruct @ExternalTensorPropertiesARM)
+  lift $ traceAroundEvent "vkGetPhysicalDeviceExternalTensorPropertiesARM" (vkGetPhysicalDeviceExternalTensorPropertiesARM'
+                                                                              (physicalDeviceHandle (physicalDevice))
+                                                                              pExternalTensorInfo
+                                                                              (pPExternalTensorProperties))
+  pExternalTensorProperties <- lift $ peekCStruct @ExternalTensorPropertiesARM pPExternalTensorProperties
+  pure $ (pExternalTensorProperties)
+
+
+-- | VkTensorDescriptionARM - Structure describing a tensor
+--
+-- = Description
+--
+-- When describing a tensor created with 'TENSOR_TILING_OPTIMAL_ARM',
+-- @pStrides@ must be equal to @NULL@. When describing a tensor created
+-- with 'TENSOR_TILING_LINEAR_ARM', @pStrides@ is either an array of size
+-- @dimensionCount@ or @NULL@.
+--
+-- The formats that /must/ be supported for @format@ are documented in
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-formats-mandatory-features-tensor>.
+--
+-- Each element in the @pStrides@ array describes the offset in bytes
+-- between increments of the given dimension. For example, @pStrides@[0]
+-- describes the offset between element [x0,x1,x2,x3] and element
+-- [x0+1,x1,x2,x3]. The @pStrides@ array /can/ be used to determine whether
+-- a tensor is /packed/ or not. If @pStrides@[@dimensionCount@-1] is equal
+-- to the size of a tensor element and for each dimension @n@ greater than
+-- 0 and less than @dimensionCount@, @pStrides@[n-1] is equal to
+-- @pStrides@[n] * @pDimensions@[n], then the tensor is a packed tensor. If
+-- the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-tensorNonPacked tensorNonPacked>
+-- feature is not enabled, the tensor /must/ be a packed tensor.
+--
+-- When a tensor is created with 'TENSOR_TILING_LINEAR_ARM' and @pStrides@
+-- equal to @NULL@ the tensor strides are calculated by the vulkan
+-- implementation such that the resulting tensor is a packed tensor.
+--
+-- Expressed as an addressing formula, the starting byte of an element in a
+-- 4-dimensional, for example, linear tensor has address:
+--
+-- > // Assume (x0,x1,x2,x3) are in units of elements.
+-- >
+-- > address(x0,x1,x2,x3) = x0*pStrides[0] + x1*pStrides[1] + x2*pStrides[2] + x3*pStrides[3]
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkTensorDescriptionARM-dimensionCount-09733# @dimensionCount@
+--     /must/ be less than or equal to
+--     'PhysicalDeviceTensorPropertiesARM'::@maxTensorDimensionCount@
+--
+-- -   #VUID-VkTensorDescriptionARM-pDimensions-09734# For each i where i ≤
+--     dimensionCount-1, @pDimensions@[i] /must/ be greater than @0@
+--
+-- -   #VUID-VkTensorDescriptionARM-pDimensions-09883# For each i where i ≤
+--     dimensionCount-1, @pDimensions@[i] /must/ be less than or equal to
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxPerDimensionTensorElements ::maxPerDimensionTensorElements>
+--
+-- -   #VUID-VkTensorDescriptionARM-format-09735# @format@ /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' and /must/ be a
+--     one-component 'Vulkan.Core10.Enums.Format.Format'
+--
+-- -   #VUID-VkTensorDescriptionARM-pStrides-09736#
+--     @pStrides@[@dimensionCount@-1] /must/ equal the size in bytes of a
+--     tensor element
+--
+-- -   #VUID-VkTensorDescriptionARM-pStrides-09737# For each i,
+--     @pStrides@[i] /must/ be a multiple of the element size
+--
+-- -   #VUID-VkTensorDescriptionARM-pStrides-09738# For each i,
+--     @pStrides@[i] /must/ be greater than @0@ and less than or equal to
+--     'PhysicalDeviceTensorPropertiesARM'::@maxTensorStride@
+--
+-- -   #VUID-VkTensorDescriptionARM-pStrides-09884# @pStrides@[0] ×
+--     @pDimensions@[0] /must/ be less than or equal to
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxTensorSize ::maxTensorSize>
+--
+-- -   #VUID-VkTensorDescriptionARM-pStrides-09739# For each i greater than
+--     0, @pStrides@[i-1] /must/ be greater than or equal to @pStrides@[i]
+--     × @pDimensions@[i] so that no two elements of the tensor reference
+--     the same memory address
+--
+-- -   #VUID-VkTensorDescriptionARM-None-09740# If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-tensorNonPacked tensorNonPacked>
+--     feature is not enabled, then the members of 'TensorDescriptionARM'
+--     /must/ describe a packed tensor
+--
+-- -   #VUID-VkTensorDescriptionARM-tiling-09741# If @tiling@ is
+--     'TENSOR_TILING_OPTIMAL_ARM' and @usage@ is
+--     'TENSOR_USAGE_IMAGE_ALIASING_BIT_ARM' then the size of the tensor
+--     along its innermost dimension, i.e. @pDimensions@[@dimensionCount@ -
+--     1], /must/ be less than or equal to @4@
+--
+-- -   #VUID-VkTensorDescriptionARM-tiling-09742# If @tiling@ is
+--     'TENSOR_TILING_LINEAR_ARM' then
+--     'TENSOR_USAGE_IMAGE_ALIASING_BIT_ARM' /must/ not be set in @usage@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkTensorDescriptionARM-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_TENSOR_DESCRIPTION_ARM'
+--
+-- -   #VUID-VkTensorDescriptionARM-tiling-parameter# @tiling@ /must/ be a
+--     valid 'TensorTilingARM' value
+--
+-- -   #VUID-VkTensorDescriptionARM-format-parameter# @format@ /must/ be a
+--     valid 'Vulkan.Core10.Enums.Format.Format' value
+--
+-- -   #VUID-VkTensorDescriptionARM-pDimensions-parameter# @pDimensions@
+--     /must/ be a valid pointer to an array of @dimensionCount@ @int64_t@
+--     values
+--
+-- -   #VUID-VkTensorDescriptionARM-pStrides-parameter# If @pStrides@ is
+--     not @NULL@, @pStrides@ /must/ be a valid pointer to an array of
+--     @dimensionCount@ @int64_t@ values
+--
+-- -   #VUID-VkTensorDescriptionARM-usage-parameter# @usage@ /must/ be a
+--     valid combination of 'TensorUsageFlagBitsARM' values
+--
+-- -   #VUID-VkTensorDescriptionARM-usage-requiredbitmask# @usage@ /must/
+--     not be @0@
+--
+-- -   #VUID-VkTensorDescriptionARM-dimensionCount-arraylength#
+--     @dimensionCount@ /must/ be greater than @0@
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Extensions.VK_ARM_data_graph.DataGraphPipelineConstantARM'
+--
+--     -   'Vulkan.Extensions.VK_ARM_data_graph.DataGraphPipelineResourceInfoARM'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_tensors VK_ARM_tensors>,
+-- 'Vulkan.Core10.Enums.Format.Format',
+-- 'PhysicalDeviceExternalTensorInfoARM',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'TensorCreateInfoARM', 'TensorTilingARM', 'TensorUsageFlagsARM'
+data TensorDescriptionARM = TensorDescriptionARM
+  { -- | @tiling@ is a 'TensorTilingARM' value specifying the tiling of the
+    -- tensor
+    tiling :: TensorTilingARM
+  , -- | @format@ is a one component 'Vulkan.Core10.Enums.Format.Format'
+    -- describing the format and type of the data elements that will be
+    -- contained in the tensor.
+    format :: Format
+  , -- | @pDimensions@ is a pointer to an array of integers of size
+    -- @dimensionCount@ providing the number of data elements in each
+    -- dimension.
+    dimensions :: Vector Int64
+  , -- | @pStrides@ is either @NULL@ or is an array of size @dimensionCount@
+    -- providing the strides in bytes for the tensor in each dimension.
+    strides :: Vector Int64
+  , -- | @usage@ is a bitmask of 'TensorUsageFlagBitsARM' specifying the usage of
+    -- the tensor.
+    usage :: TensorUsageFlagsARM
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (TensorDescriptionARM)
+#endif
+deriving instance Show TensorDescriptionARM
+
+instance ToCStruct TensorDescriptionARM where
+  withCStruct x f = allocaBytes 56 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p TensorDescriptionARM{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_TENSOR_DESCRIPTION_ARM)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr TensorTilingARM)) (tiling)
+    lift $ poke ((p `plusPtr` 20 :: Ptr Format)) (format)
+    let pDimensionsLength = Data.Vector.length $ (dimensions)
+    let pStridesLength = Data.Vector.length $ (strides)
+    lift $ unless (fromIntegral pStridesLength == pDimensionsLength || pStridesLength == 0) $
+      throwIO $ IOError Nothing InvalidArgument "" "pStrides and pDimensions must have the same length" Nothing Nothing
+    lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) ((fromIntegral pDimensionsLength :: Word32))
+    pPDimensions' <- ContT $ allocaBytes @Int64 ((Data.Vector.length (dimensions)) * 8)
+    lift $ Data.Vector.imapM_ (\i e -> poke (pPDimensions' `plusPtr` (8 * (i)) :: Ptr Int64) (e)) (dimensions)
+    lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr Int64))) (pPDimensions')
+    pStrides'' <- if Data.Vector.null (strides)
+      then pure nullPtr
+      else do
+        pPStrides <- ContT $ allocaBytes @Int64 (((Data.Vector.length (strides))) * 8)
+        lift $ Data.Vector.imapM_ (\i e -> poke (pPStrides `plusPtr` (8 * (i)) :: Ptr Int64) (e)) ((strides))
+        pure $ pPStrides
+    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr Int64))) pStrides''
+    lift $ poke ((p `plusPtr` 48 :: Ptr TensorUsageFlagsARM)) (usage)
+    lift $ f
+  cStructSize = 56
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_TENSOR_DESCRIPTION_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr TensorTilingARM)) (zero)
+    poke ((p `plusPtr` 20 :: Ptr Format)) (zero)
+    poke ((p `plusPtr` 48 :: Ptr TensorUsageFlagsARM)) (zero)
+    f
+
+instance FromCStruct TensorDescriptionARM where
+  peekCStruct p = do
+    tiling <- peek @TensorTilingARM ((p `plusPtr` 16 :: Ptr TensorTilingARM))
+    format <- peek @Format ((p `plusPtr` 20 :: Ptr Format))
+    dimensionCount <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))
+    pDimensions <- peek @(Ptr Int64) ((p `plusPtr` 32 :: Ptr (Ptr Int64)))
+    pDimensions' <- generateM (fromIntegral dimensionCount) (\i -> peek @Int64 ((pDimensions `advancePtrBytes` (8 * (i)) :: Ptr Int64)))
+    pStrides <- peek @(Ptr Int64) ((p `plusPtr` 40 :: Ptr (Ptr Int64)))
+    let pStridesLength = if pStrides == nullPtr then 0 else (fromIntegral dimensionCount)
+    pStrides' <- generateM pStridesLength (\i -> peek @Int64 ((pStrides `advancePtrBytes` (8 * (i)) :: Ptr Int64)))
+    usage <- peek @TensorUsageFlagsARM ((p `plusPtr` 48 :: Ptr TensorUsageFlagsARM))
+    pure $ TensorDescriptionARM
+             tiling format pDimensions' pStrides' usage
+
+instance Zero TensorDescriptionARM where
+  zero = TensorDescriptionARM
+           zero
+           zero
+           mempty
+           mempty
+           zero
+
+
+-- No documentation found for TopLevel "VkTensorCreateInfoARM"
+data TensorCreateInfoARM (es :: [Type]) = TensorCreateInfoARM
+  { -- No documentation found for Nested "VkTensorCreateInfoARM" "pNext"
+    next :: Chain es
+  , -- No documentation found for Nested "VkTensorCreateInfoARM" "flags"
+    flags :: TensorCreateFlagsARM
+  , -- No documentation found for Nested "VkTensorCreateInfoARM" "pDescription"
+    description :: TensorDescriptionARM
+  , -- No documentation found for Nested "VkTensorCreateInfoARM" "sharingMode"
+    sharingMode :: SharingMode
+  , -- No documentation found for Nested "VkTensorCreateInfoARM" "pQueueFamilyIndices"
+    queueFamilyIndices :: Vector Word32
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (TensorCreateInfoARM (es :: [Type]))
+#endif
+deriving instance Show (Chain es) => Show (TensorCreateInfoARM es)
+
+instance Extensible TensorCreateInfoARM where
+  extensibleTypeName = "TensorCreateInfoARM"
+  setNext TensorCreateInfoARM{..} next' = TensorCreateInfoARM{next = next', ..}
+  getNext TensorCreateInfoARM{..} = next
+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends TensorCreateInfoARM e => b) -> Maybe b
+  extends _ f
+    | Just Refl <- eqT @e @OpaqueCaptureDataCreateInfoEXT = Just f
+    | Just Refl <- eqT @e @ExternalMemoryTensorCreateInfoARM = Just f
+    | Just Refl <- eqT @e @OpaqueCaptureDescriptorDataCreateInfoEXT = Just f
+    | otherwise = Nothing
+
+instance ( Extendss TensorCreateInfoARM es
+         , PokeChain es ) => ToCStruct (TensorCreateInfoARM es) where
+  withCStruct x f = allocaBytes 48 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p TensorCreateInfoARM{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_TENSOR_CREATE_INFO_ARM)
+    pNext'' <- fmap castPtr . ContT $ withChain (next)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
+    lift $ poke ((p `plusPtr` 16 :: Ptr TensorCreateFlagsARM)) (flags)
+    pDescription'' <- ContT $ withCStruct (description)
+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr TensorDescriptionARM))) pDescription''
+    lift $ poke ((p `plusPtr` 32 :: Ptr SharingMode)) (sharingMode)
+    lift $ poke ((p `plusPtr` 36 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (queueFamilyIndices)) :: Word32))
+    pPQueueFamilyIndices' <- ContT $ allocaBytes @Word32 ((Data.Vector.length (queueFamilyIndices)) * 4)
+    lift $ Data.Vector.imapM_ (\i e -> poke (pPQueueFamilyIndices' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (queueFamilyIndices)
+    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr Word32))) (pPQueueFamilyIndices')
+    lift $ f
+  cStructSize = 48
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_TENSOR_CREATE_INFO_ARM)
+    pNext' <- fmap castPtr . ContT $ withZeroChain @es
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
+    pDescription'' <- ContT $ withCStruct (zero)
+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr TensorDescriptionARM))) pDescription''
+    lift $ poke ((p `plusPtr` 32 :: Ptr SharingMode)) (zero)
+    lift $ f
+
+instance ( Extendss TensorCreateInfoARM es
+         , PeekChain es ) => FromCStruct (TensorCreateInfoARM es) where
+  peekCStruct p = do
+    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
+    next <- peekChain (castPtr pNext)
+    flags <- peek @TensorCreateFlagsARM ((p `plusPtr` 16 :: Ptr TensorCreateFlagsARM))
+    pDescription <- peekCStruct @TensorDescriptionARM =<< peek ((p `plusPtr` 24 :: Ptr (Ptr TensorDescriptionARM)))
+    sharingMode <- peek @SharingMode ((p `plusPtr` 32 :: Ptr SharingMode))
+    queueFamilyIndexCount <- peek @Word32 ((p `plusPtr` 36 :: Ptr Word32))
+    pQueueFamilyIndices <- peek @(Ptr Word32) ((p `plusPtr` 40 :: Ptr (Ptr Word32)))
+    pQueueFamilyIndices' <- generateM (fromIntegral queueFamilyIndexCount) (\i -> peek @Word32 ((pQueueFamilyIndices `advancePtrBytes` (4 * (i)) :: Ptr Word32)))
+    pure $ TensorCreateInfoARM
+             next flags pDescription sharingMode pQueueFamilyIndices'
+
+instance es ~ '[] => Zero (TensorCreateInfoARM es) where
+  zero = TensorCreateInfoARM
+           ()
+           zero
+           zero
+           zero
+           mempty
+
+
+-- | VkTensorViewCreateInfoARM - Structure specifying parameters of a newly
+-- created tensor view
+--
+-- = Description
+--
+-- If @tensor@ was created with the 'TENSOR_CREATE_MUTABLE_FORMAT_BIT_ARM'
+-- flag, @format@ /can/ be different from the tensor’s format, but if they
+-- are not equal they /must/ be /compatible/. Tensor format compatibility
+-- is defined in the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-compatibility-classes Format Compatibility Classes>
+-- section. Views of compatible formats will have the same mapping between
+-- element locations irrespective of the @format@, with only the
+-- interpretation of the bit pattern changing.
+--
+-- Values intended to be used with one view format /may/ not be exactly
+-- preserved when written or read through a different format. For example,
+-- an integer value that happens to have the bit pattern of a
+-- floating-point denorm or NaN /may/ be flushed or canonicalized when
+-- written or 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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#fundamentals-fixedfpconv Conversion from Normalized Fixed-Point to Floating-Point>.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkTensorViewCreateInfoARM-tensor-09743# If @tensor@ was not
+--     created with 'TENSOR_CREATE_MUTABLE_FORMAT_BIT_ARM' flag, @format@
+--     /must/ be identical to the @format@ used to create @tensor@
+--
+-- -   #VUID-VkTensorViewCreateInfoARM-tensor-09744# If @tensor@ was
+--     created with 'TENSOR_CREATE_MUTABLE_FORMAT_BIT_ARM' flag, @format@
+--     /must/ be compatible with the @format@ used to create @tensor@, as
+--     defined in
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-compatibility-classes Format Compatibility Classes>
+--
+-- -   #VUID-VkTensorViewCreateInfoARM-flags-09745# If @flags@ includes
+--     'TENSOR_VIEW_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_ARM', the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-descriptorBufferCaptureReplay descriptorBufferCaptureReplay>
+--     feature /must/ be enabled
+--
+-- -   #VUID-VkTensorViewCreateInfoARM-pNext-09746# If the @pNext@ chain
+--     includes a
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.OpaqueCaptureDescriptorDataCreateInfoEXT'
+--     structure, @flags@ /must/ contain
+--     'TENSOR_VIEW_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_ARM'
+--
+-- -   #VUID-VkTensorViewCreateInfoARM-usage-09747# The @usage@ flags of
+--     @tensor@ /must/ have at least one of the following bits set:
+--
+--     -   'TENSOR_USAGE_SHADER_BIT_ARM'
+--
+--     -   'TENSOR_USAGE_DATA_GRAPH_BIT_ARM'
+--
+-- -   #VUID-VkTensorViewCreateInfoARM-usage-09748# The tensor view’s
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-tensor-view-format-features format features>
+--     /must/ contain the format feature flags required by the @usage@
+--     flags of @tensor@ for @format@ as indicated in the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#format-feature-dependent-usage-flags>
+--     section
+--
+-- -   #VUID-VkTensorViewCreateInfoARM-tensor-09749# If @tensor@ is
+--     non-sparse then it /must/ be bound completely and contiguously to a
+--     single 'Vulkan.Core10.Handles.DeviceMemory' object
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkTensorViewCreateInfoARM-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_TENSOR_VIEW_CREATE_INFO_ARM'
+--
+-- -   #VUID-VkTensorViewCreateInfoARM-pNext-pNext# @pNext@ /must/ be
+--     @NULL@ or a pointer to a valid instance of
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.OpaqueCaptureDescriptorDataCreateInfoEXT'
+--
+-- -   #VUID-VkTensorViewCreateInfoARM-sType-unique# The @sType@ value of
+--     each structure in the @pNext@ chain /must/ be unique
+--
+-- -   #VUID-VkTensorViewCreateInfoARM-flags-parameter# @flags@ /must/ be a
+--     valid combination of 'TensorViewCreateFlagBitsARM' values
+--
+-- -   #VUID-VkTensorViewCreateInfoARM-tensor-parameter# @tensor@ /must/ be
+--     a valid 'Vulkan.Extensions.Handles.TensorARM' handle
+--
+-- -   #VUID-VkTensorViewCreateInfoARM-format-parameter# @format@ /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_ARM_tensors VK_ARM_tensors>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_heap VK_EXT_descriptor_heap>,
+-- 'Vulkan.Core10.Enums.Format.Format',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_heap.ResourceDescriptorDataEXT',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'Vulkan.Extensions.Handles.TensorARM', 'TensorViewCreateFlagsARM',
+-- 'createTensorViewARM'
+data TensorViewCreateInfoARM (es :: [Type]) = TensorViewCreateInfoARM
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
+    next :: Chain es
+  , -- | @flags@ is reserved for future use.
+    flags :: TensorViewCreateFlagsARM
+  , -- | @tensor@ is a 'Vulkan.Extensions.Handles.TensorARM' on which the view
+    -- will be created.
+    tensor :: TensorARM
+  , -- | @format@ is a 'Vulkan.Core10.Enums.Format.Format' describing the format
+    -- and type used to interpret elements in the tensor.
+    format :: Format
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (TensorViewCreateInfoARM (es :: [Type]))
+#endif
+deriving instance Show (Chain es) => Show (TensorViewCreateInfoARM es)
+
+instance Extensible TensorViewCreateInfoARM where
+  extensibleTypeName = "TensorViewCreateInfoARM"
+  setNext TensorViewCreateInfoARM{..} next' = TensorViewCreateInfoARM{next = next', ..}
+  getNext TensorViewCreateInfoARM{..} = next
+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends TensorViewCreateInfoARM e => b) -> Maybe b
+  extends _ f
+    | Just Refl <- eqT @e @OpaqueCaptureDescriptorDataCreateInfoEXT = Just f
+    | otherwise = Nothing
+
+instance ( Extendss TensorViewCreateInfoARM es
+         , PokeChain es ) => ToCStruct (TensorViewCreateInfoARM es) where
+  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p TensorViewCreateInfoARM{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_TENSOR_VIEW_CREATE_INFO_ARM)
+    pNext'' <- fmap castPtr . ContT $ withChain (next)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
+    lift $ poke ((p `plusPtr` 16 :: Ptr TensorViewCreateFlagsARM)) (flags)
+    lift $ poke ((p `plusPtr` 24 :: Ptr TensorARM)) (tensor)
+    lift $ poke ((p `plusPtr` 32 :: Ptr Format)) (format)
+    lift $ f
+  cStructSize = 40
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_TENSOR_VIEW_CREATE_INFO_ARM)
+    pNext' <- fmap castPtr . ContT $ withZeroChain @es
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
+    lift $ poke ((p `plusPtr` 24 :: Ptr TensorARM)) (zero)
+    lift $ poke ((p `plusPtr` 32 :: Ptr Format)) (zero)
+    lift $ f
+
+instance ( Extendss TensorViewCreateInfoARM es
+         , PeekChain es ) => FromCStruct (TensorViewCreateInfoARM es) where
+  peekCStruct p = do
+    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
+    next <- peekChain (castPtr pNext)
+    flags <- peek @TensorViewCreateFlagsARM ((p `plusPtr` 16 :: Ptr TensorViewCreateFlagsARM))
+    tensor <- peek @TensorARM ((p `plusPtr` 24 :: Ptr TensorARM))
+    format <- peek @Format ((p `plusPtr` 32 :: Ptr Format))
+    pure $ TensorViewCreateInfoARM
+             next flags tensor format
+
+instance es ~ '[] => Zero (TensorViewCreateInfoARM es) where
+  zero = TensorViewCreateInfoARM
+           ()
+           zero
+           zero
+           zero
+
+
+-- | VkTensorMemoryRequirementsInfoARM - Structure specifying memory
+-- requirements
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_tensors VK_ARM_tensors>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'Vulkan.Extensions.Handles.TensorARM', 'getTensorMemoryRequirementsARM'
+data TensorMemoryRequirementsInfoARM = TensorMemoryRequirementsInfoARM
+  { -- | @tensor@ is the tensor to query.
+    --
+    -- #VUID-VkTensorMemoryRequirementsInfoARM-tensor-parameter# @tensor@
+    -- /must/ be a valid 'Vulkan.Extensions.Handles.TensorARM' handle
+    tensor :: TensorARM }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (TensorMemoryRequirementsInfoARM)
+#endif
+deriving instance Show TensorMemoryRequirementsInfoARM
+
+instance ToCStruct TensorMemoryRequirementsInfoARM where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p TensorMemoryRequirementsInfoARM{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_TENSOR_MEMORY_REQUIREMENTS_INFO_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr TensorARM)) (tensor)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_TENSOR_MEMORY_REQUIREMENTS_INFO_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr TensorARM)) (zero)
+    f
+
+instance FromCStruct TensorMemoryRequirementsInfoARM where
+  peekCStruct p = do
+    tensor <- peek @TensorARM ((p `plusPtr` 16 :: Ptr TensorARM))
+    pure $ TensorMemoryRequirementsInfoARM
+             tensor
+
+instance Storable TensorMemoryRequirementsInfoARM where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero TensorMemoryRequirementsInfoARM where
+  zero = TensorMemoryRequirementsInfoARM
+           zero
+
+
+-- | VkBindTensorMemoryInfoARM - Structure specifying how to bind a tensor to
+-- memory
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkBindTensorMemoryInfoARM-tensor-09712# @tensor@ /must/ not
+--     already be backed by a memory object
+--
+-- -   #VUID-VkBindTensorMemoryInfoARM-memoryOffset-09713# @memoryOffset@
+--     /must/ be less than the size of @memory@
+--
+-- -   #VUID-VkBindTensorMemoryInfoARM-memory-09714# @memory@ /must/ have
+--     been allocated using one of the memory types allowed in the
+--     @memoryTypeBits@ member of the
+--     'Vulkan.Core10.MemoryManagement.MemoryRequirements' structure
+--     returned from a call to 'getTensorMemoryRequirementsARM' with
+--     @tensor@
+--
+-- -   #VUID-VkBindTensorMemoryInfoARM-memoryOffset-09715# @memoryOffset@
+--     /must/ be an integer multiple of the @alignment@ member of the
+--     'Vulkan.Core10.MemoryManagement.MemoryRequirements' structure
+--     returned from a call to 'getTensorMemoryRequirementsARM' with
+--     @tensor@
+--
+-- -   #VUID-VkBindTensorMemoryInfoARM-size-09716# The @size@ member of the
+--     'Vulkan.Core10.MemoryManagement.MemoryRequirements' structure
+--     returned from a call to 'getTensorMemoryRequirementsARM' with
+--     @tensor@ /must/ be less than or equal to the size of @memory@ minus
+--     @memoryOffset@
+--
+-- -   #VUID-VkBindTensorMemoryInfoARM-tensor-09717# If @tensor@ requires a
+--     dedicated allocation (as reported by
+--     'getTensorMemoryRequirementsARM' in
+--     'Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedRequirements'::@requiresDedicatedAllocation@
+--     for @tensor@), @memory@ /must/ have been created with
+--     'MemoryDedicatedAllocateInfoTensorARM'::@tensor@ equal to @tensor@
+--
+-- -   #VUID-VkBindTensorMemoryInfoARM-memory-09806# If the
+--     'Vulkan.Core10.Memory.MemoryAllocateInfo' provided when @memory@ was
+--     allocated included a 'MemoryDedicatedAllocateInfoTensorARM'
+--     structure in its @pNext@ chain, and
+--     'MemoryDedicatedAllocateInfoTensorARM'::@tensor@ was not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', then @tensor@ /must/ equal
+--     'MemoryDedicatedAllocateInfoTensorARM'::@tensor@, and @memoryOffset@
+--     /must/ be zero
+--
+-- -   #VUID-VkBindTensorMemoryInfoARM-memory-09895# If the value of
+--     'Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExportMemoryAllocateInfo'::@handleTypes@
+--     used to allocate @memory@ is not @0@, it /must/ include at least one
+--     of the handles set in
+--     'ExternalMemoryTensorCreateInfoARM'::@handleTypes@ when @tensor@ was
+--     created
+--
+-- -   #VUID-VkBindTensorMemoryInfoARM-memory-09896# If @memory@ was
+--     allocated by a memory import operation, that is not
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ImportAndroidHardwareBufferInfoANDROID'
+--     with a non-@NULL@ @buffer@ value, the external handle type of the
+--     imported memory /must/ also have been set in
+--     'ExternalMemoryTensorCreateInfoARM'::@handleTypes@ when @tensor@ was
+--     created
+--
+-- -   #VUID-VkBindTensorMemoryInfoARM-memory-09897# If @memory@ was
+--     allocated with the
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ImportAndroidHardwareBufferInfoANDROID'
+--     memory import operation with a non-@NULL@ @buffer@ value,
+--     'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID'
+--     /must/ also have been set in
+--     'ExternalMemoryTensorCreateInfoARM'::@handleTypes@ when @tensor@ was
+--     created
+--
+-- -   #VUID-VkBindTensorMemoryInfoARM-tensor-09718# If @tensor@ was
+--     created with the 'TENSOR_CREATE_PROTECTED_BIT_ARM' bit set, the
+--     tensor /must/ be bound to a memory object allocated with a memory
+--     type that reports
+--     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_PROTECTED_BIT'
+--
+-- -   #VUID-VkBindTensorMemoryInfoARM-tensor-09719# If @tensor@ was
+--     created with the 'TENSOR_CREATE_PROTECTED_BIT_ARM' bit not set, the
+--     tensor /must/ not be bound to a memory object allocated with a
+--     memory type that reports
+--     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_PROTECTED_BIT'
+--
+-- -   #VUID-VkBindTensorMemoryInfoARM-tensor-09943# If @tensor@ was
+--     created with the
+--     'TENSOR_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_ARM' bit set,
+--     @memory@ /must/ have been allocated with the
+--     'Vulkan.Core11.Enums.MemoryAllocateFlagBits.MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT'
+--     bit set
+--
+-- -   #VUID-VkBindTensorMemoryInfoARM-tensor-09944# If @tensor@ was
+--     created with the
+--     'TENSOR_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_ARM' bit set,
+--     @memory@ /must/ have been allocated with the
+--     'Vulkan.Core11.Enums.MemoryAllocateFlagBits.MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT'
+--     bit set
+--
+-- -   #VUID-VkBindTensorMemoryInfoARM-tensor-11406# If @tensor@ was
+--     created with the
+--     'TENSOR_CREATE_DESCRIPTOR_HEAP_CAPTURE_REPLAY_BIT_ARM' bit set,
+--     @memory@ /must/ have been allocated with the
+--     'Vulkan.Core11.Enums.MemoryAllocateFlagBits.MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT'
+--     bit set
+--
+-- -   #VUID-VkBindTensorMemoryInfoARM-tensor-11407# If @tensor@ was
+--     created with the
+--     'TENSOR_CREATE_DESCRIPTOR_HEAP_CAPTURE_REPLAY_BIT_ARM' bit set,
+--     @memory@ /must/ have been allocated with the
+--     'Vulkan.Core11.Enums.MemoryAllocateFlagBits.MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT'
+--     bit set
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkBindTensorMemoryInfoARM-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BIND_TENSOR_MEMORY_INFO_ARM'
+--
+-- -   #VUID-VkBindTensorMemoryInfoARM-pNext-pNext# @pNext@ /must/ be
+--     @NULL@
+--
+-- -   #VUID-VkBindTensorMemoryInfoARM-tensor-parameter# @tensor@ /must/ be
+--     a valid 'Vulkan.Extensions.Handles.TensorARM' handle
+--
+-- -   #VUID-VkBindTensorMemoryInfoARM-memory-parameter# @memory@ /must/ be
+--     a valid 'Vulkan.Core10.Handles.DeviceMemory' handle
+--
+-- -   #VUID-VkBindTensorMemoryInfoARM-commonparent# Both of @memory@, and
+--     @tensor@ /must/ have been created, allocated, or retrieved from the
+--     same 'Vulkan.Core10.Handles.Device'
+--
+-- == Host Synchronization
+--
+-- -   Host access to @tensor@ /must/ be externally synchronized
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_tensors VK_ARM_tensors>,
+-- 'Vulkan.Core10.Handles.DeviceMemory',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'Vulkan.Extensions.Handles.TensorARM', 'bindTensorMemoryARM'
+data BindTensorMemoryInfoARM = BindTensorMemoryInfoARM
+  { -- | @tensor@ is the tensor to be attached to memory.
+    tensor :: TensorARM
+  , -- | @memory@ is a 'Vulkan.Core10.Handles.DeviceMemory' object describing the
+    -- device memory to attach.
+    memory :: DeviceMemory
+  , -- | @memoryOffset@ is the start offset of the region of @memory@ which is to
+    -- be bound to the tensor. The number of bytes returned in the
+    -- 'Vulkan.Core10.MemoryManagement.MemoryRequirements'::@size@ member in
+    -- @memory@, starting from @memoryOffset@ bytes, will be bound to the
+    -- specified tensor.
+    memoryOffset :: DeviceSize
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (BindTensorMemoryInfoARM)
+#endif
+deriving instance Show BindTensorMemoryInfoARM
+
+instance ToCStruct BindTensorMemoryInfoARM where
+  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p BindTensorMemoryInfoARM{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BIND_TENSOR_MEMORY_INFO_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr TensorARM)) (tensor)
+    poke ((p `plusPtr` 24 :: Ptr DeviceMemory)) (memory)
+    poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (memoryOffset)
+    f
+  cStructSize = 40
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BIND_TENSOR_MEMORY_INFO_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr TensorARM)) (zero)
+    poke ((p `plusPtr` 24 :: Ptr DeviceMemory)) (zero)
+    poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (zero)
+    f
+
+instance FromCStruct BindTensorMemoryInfoARM where
+  peekCStruct p = do
+    tensor <- peek @TensorARM ((p `plusPtr` 16 :: Ptr TensorARM))
+    memory <- peek @DeviceMemory ((p `plusPtr` 24 :: Ptr DeviceMemory))
+    memoryOffset <- peek @DeviceSize ((p `plusPtr` 32 :: Ptr DeviceSize))
+    pure $ BindTensorMemoryInfoARM
+             tensor memory memoryOffset
+
+instance Storable BindTensorMemoryInfoARM where
+  sizeOf ~_ = 40
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero BindTensorMemoryInfoARM where
+  zero = BindTensorMemoryInfoARM
+           zero
+           zero
+           zero
+
+
+-- | VkWriteDescriptorSetTensorARM - Structure specifying descriptor tensor
+-- info
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkWriteDescriptorSetTensorARM-nullDescriptor-09898# If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-nullDescriptor nullDescriptor>
+--     feature is not enabled, each element of @pTensorViews@ /must/ not be
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkWriteDescriptorSetTensorARM-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_TENSOR_ARM'
+--
+-- -   #VUID-VkWriteDescriptorSetTensorARM-pTensorViews-parameter#
+--     @pTensorViews@ /must/ be a valid pointer to an array of
+--     @tensorViewCount@ valid or 'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--     'Vulkan.Extensions.Handles.TensorViewARM' handles
+--
+-- -   #VUID-VkWriteDescriptorSetTensorARM-tensorViewCount-arraylength#
+--     @tensorViewCount@ /must/ be greater than @0@
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.DescriptorSet.WriteDescriptorSet'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_tensors VK_ARM_tensors>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'Vulkan.Extensions.Handles.TensorViewARM'
+data WriteDescriptorSetTensorARM = WriteDescriptorSetTensorARM
+  { -- | @pTensorViews@ are the tensor views that will be used to update the
+    -- descriptor set.
+    tensorViews :: Vector TensorViewARM }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (WriteDescriptorSetTensorARM)
+#endif
+deriving instance Show WriteDescriptorSetTensorARM
+
+instance ToCStruct WriteDescriptorSetTensorARM where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p WriteDescriptorSetTensorARM{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_TENSOR_ARM)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (tensorViews)) :: Word32))
+    pPTensorViews' <- ContT $ allocaBytes @TensorViewARM ((Data.Vector.length (tensorViews)) * 8)
+    lift $ Data.Vector.imapM_ (\i e -> poke (pPTensorViews' `plusPtr` (8 * (i)) :: Ptr TensorViewARM) (e)) (tensorViews)
+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr TensorViewARM))) (pPTensorViews')
+    lift $ f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_TENSOR_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    f
+
+instance FromCStruct WriteDescriptorSetTensorARM where
+  peekCStruct p = do
+    tensorViewCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    pTensorViews <- peek @(Ptr TensorViewARM) ((p `plusPtr` 24 :: Ptr (Ptr TensorViewARM)))
+    pTensorViews' <- generateM (fromIntegral tensorViewCount) (\i -> peek @TensorViewARM ((pTensorViews `advancePtrBytes` (8 * (i)) :: Ptr TensorViewARM)))
+    pure $ WriteDescriptorSetTensorARM
+             pTensorViews'
+
+instance Zero WriteDescriptorSetTensorARM where
+  zero = WriteDescriptorSetTensorARM
+           mempty
+
+
+-- | VkTensorFormatPropertiesARM - Structure specifying properties of a
+-- format used to describe tensor elements
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.FormatProperties2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_tensors VK_ARM_tensors>,
+-- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FormatFeatureFlags2',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data TensorFormatPropertiesARM = TensorFormatPropertiesARM
+  { -- | @optimalTilingTensorFeatures@ is a bitmask of
+    -- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FormatFeatureFlagBits2'
+    -- specifying features supported by tensors created with a @tiling@
+    -- parameter of 'TENSOR_TILING_OPTIMAL_ARM'.
+    optimalTilingTensorFeatures :: FormatFeatureFlags2
+  , -- | @linearTilingTensorFeatures@ is a bitmask of
+    -- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FormatFeatureFlagBits2'
+    -- specifying features supported by tensors created with a @tiling@
+    -- parameter of 'TENSOR_TILING_LINEAR_ARM'.
+    linearTilingTensorFeatures :: FormatFeatureFlags2
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (TensorFormatPropertiesARM)
+#endif
+deriving instance Show TensorFormatPropertiesARM
+
+instance ToCStruct TensorFormatPropertiesARM where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p TensorFormatPropertiesARM{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_TENSOR_FORMAT_PROPERTIES_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr FormatFeatureFlags2)) (optimalTilingTensorFeatures)
+    poke ((p `plusPtr` 24 :: Ptr FormatFeatureFlags2)) (linearTilingTensorFeatures)
+    f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_TENSOR_FORMAT_PROPERTIES_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr FormatFeatureFlags2)) (zero)
+    poke ((p `plusPtr` 24 :: Ptr FormatFeatureFlags2)) (zero)
+    f
+
+instance FromCStruct TensorFormatPropertiesARM where
+  peekCStruct p = do
+    optimalTilingTensorFeatures <- peek @FormatFeatureFlags2 ((p `plusPtr` 16 :: Ptr FormatFeatureFlags2))
+    linearTilingTensorFeatures <- peek @FormatFeatureFlags2 ((p `plusPtr` 24 :: Ptr FormatFeatureFlags2))
+    pure $ TensorFormatPropertiesARM
+             optimalTilingTensorFeatures linearTilingTensorFeatures
+
+instance Storable TensorFormatPropertiesARM where
+  sizeOf ~_ = 32
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero TensorFormatPropertiesARM where
+  zero = TensorFormatPropertiesARM
+           zero
+           zero
+
+
+-- | VkPhysicalDeviceTensorPropertiesARM - Structure describing the tensor
+-- properties of a physical device
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceTensorPropertiesARM' 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.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_tensors VK_ARM_tensors>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlags',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceTensorPropertiesARM = PhysicalDeviceTensorPropertiesARM
+  { -- | #limits-maxTensorDimensionCount# @maxTensorDimensionCount@ is the
+    -- maximum number of dimensions that can be specified in the
+    -- @dimensionCount@ member of 'TensorDescriptionARM'.
+    maxTensorDimensionCount :: Word32
+  , -- | #limits-maxTensorElements# @maxTensorElements@ is the maximum number of
+    -- data elements in a created tensor as specified in the
+    -- 'TensorDescriptionARM' of 'TensorCreateInfoARM'. The number of data
+    -- elements in a tensor is computed as the product of @pDimensions@[i] for
+    -- all 0 ≤ i ≤ dimensionCount-1.
+    maxTensorElements :: Word64
+  , -- | #limits-maxPerDimensionTensorElements# @maxPerDimensionTensorElements@
+    -- is the maximum number of data elements alongside any dimension of a
+    -- tensor.
+    maxPerDimensionTensorElements :: Word64
+  , -- | #limits-maxTensorStride# @maxTensorStride@ is the maximum value for a
+    -- tensor stride that can be used in 'TensorDescriptionARM'::@pStrides@.
+    maxTensorStride :: Int64
+  , -- | #limits-maxTensorSize# @maxTensorSize@ is the maximum size, in bytes, of
+    -- a tensor.
+    maxTensorSize :: Word64
+  , -- | #limits-maxTensorShaderAccessArrayLength#
+    -- @maxTensorShaderAccessArrayLength@ is the maximum number of elements in
+    -- an array returned by @OpTensoReadARM@ or consumed by @OpTensorWriteARM@.
+    maxTensorShaderAccessArrayLength :: Word32
+  , -- | #limits-maxTensorShaderAccessSize# @maxTensorShaderAccessSize@ is the
+    -- maximum size in bytes of the data that can be read from a tensor with
+    -- @OpTensorReadARM@ or written to a tensor with @OpTensorWriteARM@.
+    maxTensorShaderAccessSize :: Word32
+  , -- | #limits-maxDescriptorSetStorageTensors# @maxDescriptorSetStorageTensors@
+    -- is the maximum number of tensors that /can/ be included in descriptor
+    -- bindings in a pipeline layout across all pipeline shader stages and
+    -- descriptor set numbers. Descriptors with a type of
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM' count
+    -- against this limit.
+    maxDescriptorSetStorageTensors :: Word32
+  , -- | #limits-maxPerStageDescriptorSetStorageTensors#
+    -- @maxPerStageDescriptorSetStorageTensors@ is the maximum number of
+    -- tensors that /can/ be accessible to a single shader stage in a pipeline
+    -- layout. Descriptors with a type of
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM' count
+    -- against this limit. A descriptor is accessible to a pipeline shader
+    -- stage when the @stageFlags@ member of the
+    -- 'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutBinding' structure has
+    -- the bit for that shader stage set.
+    maxPerStageDescriptorSetStorageTensors :: Word32
+  , -- | #limits-maxDescriptorSetUpdateAfterBindStorageTensors#
+    -- @maxDescriptorSetUpdateAfterBindStorageTensors@ is similar to
+    -- @maxDescriptorSetStorageTensors@ but counts descriptors from descriptor
+    -- sets created with or without the
+    -- 'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'
+    -- bit set.
+    maxDescriptorSetUpdateAfterBindStorageTensors :: Word32
+  , -- | #limits-maxPerStageDescriptorUpdateAfterBindStorageTensors#
+    -- @maxPerStageDescriptorUpdateAfterBindStorageTensors@ is similar to
+    -- @maxPerStageDescriptorSetStorageTensors@ but counts descriptors from
+    -- descriptor sets created with or without the
+    -- 'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'
+    -- bit set.
+    maxPerStageDescriptorUpdateAfterBindStorageTensors :: Word32
+  , -- | #limits-shaderStorageTensorArrayNonUniformIndexingNative#
+    -- @shaderStorageTensorArrayNonUniformIndexingNative@ is a boolean value
+    -- indicating whether storage tensor descriptors natively support
+    -- nonuniform indexing. If this is 'Vulkan.Core10.FundamentalTypes.FALSE',
+    -- then a single dynamic instance of an instruction that nonuniformly
+    -- indexes an array of storage buffers may execute multiple times in order
+    -- to access all the descriptors.
+    shaderStorageTensorArrayNonUniformIndexingNative :: Bool
+  , -- | #limits-shaderTensorSupportedStages# @shaderTensorSupportedStages@ is a
+    -- bitfield of
+    -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits' describing
+    -- the shader stages that /can/ access tensor resources.
+    -- @shaderTensorSupportedStages@ will have the
+    -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT' bit
+    -- set if any of the physical device’s queues support
+    -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT'.
+    shaderTensorSupportedStages :: ShaderStageFlags
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceTensorPropertiesARM)
+#endif
+deriving instance Show PhysicalDeviceTensorPropertiesARM
+
+instance ToCStruct PhysicalDeviceTensorPropertiesARM where
+  withCStruct x f = allocaBytes 88 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceTensorPropertiesARM{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_TENSOR_PROPERTIES_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (maxTensorDimensionCount)
+    poke ((p `plusPtr` 24 :: Ptr Word64)) (maxTensorElements)
+    poke ((p `plusPtr` 32 :: Ptr Word64)) (maxPerDimensionTensorElements)
+    poke ((p `plusPtr` 40 :: Ptr Int64)) (maxTensorStride)
+    poke ((p `plusPtr` 48 :: Ptr Word64)) (maxTensorSize)
+    poke ((p `plusPtr` 56 :: Ptr Word32)) (maxTensorShaderAccessArrayLength)
+    poke ((p `plusPtr` 60 :: Ptr Word32)) (maxTensorShaderAccessSize)
+    poke ((p `plusPtr` 64 :: Ptr Word32)) (maxDescriptorSetStorageTensors)
+    poke ((p `plusPtr` 68 :: Ptr Word32)) (maxPerStageDescriptorSetStorageTensors)
+    poke ((p `plusPtr` 72 :: Ptr Word32)) (maxDescriptorSetUpdateAfterBindStorageTensors)
+    poke ((p `plusPtr` 76 :: Ptr Word32)) (maxPerStageDescriptorUpdateAfterBindStorageTensors)
+    poke ((p `plusPtr` 80 :: Ptr Bool32)) (boolToBool32 (shaderStorageTensorArrayNonUniformIndexingNative))
+    poke ((p `plusPtr` 84 :: Ptr ShaderStageFlags)) (shaderTensorSupportedStages)
+    f
+  cStructSize = 88
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_TENSOR_PROPERTIES_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 24 :: Ptr Word64)) (zero)
+    poke ((p `plusPtr` 32 :: Ptr Word64)) (zero)
+    poke ((p `plusPtr` 40 :: Ptr Int64)) (zero)
+    poke ((p `plusPtr` 48 :: Ptr Word64)) (zero)
+    poke ((p `plusPtr` 56 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 60 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 64 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 68 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 72 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 76 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 80 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 84 :: Ptr ShaderStageFlags)) (zero)
+    f
+
+instance FromCStruct PhysicalDeviceTensorPropertiesARM where
+  peekCStruct p = do
+    maxTensorDimensionCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    maxTensorElements <- peek @Word64 ((p `plusPtr` 24 :: Ptr Word64))
+    maxPerDimensionTensorElements <- peek @Word64 ((p `plusPtr` 32 :: Ptr Word64))
+    maxTensorStride <- peek @Int64 ((p `plusPtr` 40 :: Ptr Int64))
+    maxTensorSize <- peek @Word64 ((p `plusPtr` 48 :: Ptr Word64))
+    maxTensorShaderAccessArrayLength <- peek @Word32 ((p `plusPtr` 56 :: Ptr Word32))
+    maxTensorShaderAccessSize <- peek @Word32 ((p `plusPtr` 60 :: Ptr Word32))
+    maxDescriptorSetStorageTensors <- peek @Word32 ((p `plusPtr` 64 :: Ptr Word32))
+    maxPerStageDescriptorSetStorageTensors <- peek @Word32 ((p `plusPtr` 68 :: Ptr Word32))
+    maxDescriptorSetUpdateAfterBindStorageTensors <- peek @Word32 ((p `plusPtr` 72 :: Ptr Word32))
+    maxPerStageDescriptorUpdateAfterBindStorageTensors <- peek @Word32 ((p `plusPtr` 76 :: Ptr Word32))
+    shaderStorageTensorArrayNonUniformIndexingNative <- peek @Bool32 ((p `plusPtr` 80 :: Ptr Bool32))
+    shaderTensorSupportedStages <- peek @ShaderStageFlags ((p `plusPtr` 84 :: Ptr ShaderStageFlags))
+    pure $ PhysicalDeviceTensorPropertiesARM
+             maxTensorDimensionCount
+             maxTensorElements
+             maxPerDimensionTensorElements
+             maxTensorStride
+             maxTensorSize
+             maxTensorShaderAccessArrayLength
+             maxTensorShaderAccessSize
+             maxDescriptorSetStorageTensors
+             maxPerStageDescriptorSetStorageTensors
+             maxDescriptorSetUpdateAfterBindStorageTensors
+             maxPerStageDescriptorUpdateAfterBindStorageTensors
+             (bool32ToBool shaderStorageTensorArrayNonUniformIndexingNative)
+             shaderTensorSupportedStages
+
+instance Storable PhysicalDeviceTensorPropertiesARM where
+  sizeOf ~_ = 88
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceTensorPropertiesARM where
+  zero = PhysicalDeviceTensorPropertiesARM
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkTensorMemoryBarrierARM - Structure specifying a tensor memory barrier
+--
+-- = Description
+--
+-- The first
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+-- and
+-- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+-- and
+-- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-access-scopes access scopes>
+-- are limited to only memory accesses to @tensor@.
+--
+-- If @tensor@ was created with
+-- 'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_EXCLUSIVE', and
+-- @srcQueueFamilyIndex@ is not equal to @dstQueueFamilyIndex@, this memory
+-- barrier defines a
+-- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-queue-transfers-release queue family release operation>
+-- for the specified tensor, 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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-queue-transfers-acquire queue family acquire operation>
+-- for the specified tensor, and the first synchronization and access
+-- scopes do not synchronize operations on that queue.
+--
+-- A
+-- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-queue-transfers>.
+-- A
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-queue-transfers-release queue family release operation>
+-- is defined when @dstQueueFamilyIndex@ is one of those values, and a
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-queue-transfers-acquire queue family acquire operation>
+-- is defined when @srcQueueFamilyIndex@ is one of those values.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkTensorMemoryBarrierARM-tensor-09755# If @tensor@ was created
+--     with a sharing mode of
+--     'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_CONCURRENT',
+--     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ /must/ both be
+--     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_IGNORED'
+--
+-- -   #VUID-VkTensorMemoryBarrierARM-tensor-09756# If @tensor@ was created
+--     with a sharing mode of
+--     'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_EXCLUSIVE',
+--     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ /must/ both be
+--     either 'Vulkan.Core10.APIConstants.QUEUE_FAMILY_IGNORED', or a valid
+--     queue family (see
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#devsandqueues-queueprops>)
+--
+-- -   #VUID-VkTensorMemoryBarrierARM-tensor-09757# If @tensor@ was created
+--     with a sharing mode of
+--     'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_EXCLUSIVE', and
+--     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ are not
+--     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_IGNORED', at least one of
+--     them /must/ be the same as the family of the queue that will execute
+--     this barrier
+--
+-- -   #VUID-VkTensorMemoryBarrierARM-tensor-09758# If @tensor@ is
+--     non-sparse then it /must/ be bound completely and contiguously to a
+--     single 'Vulkan.Core10.Handles.DeviceMemory' object
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkTensorMemoryBarrierARM-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_TENSOR_MEMORY_BARRIER_ARM'
+--
+-- -   #VUID-VkTensorMemoryBarrierARM-srcStageMask-parameter#
+--     @srcStageMask@ /must/ be a valid combination of
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlagBits2'
+--     values
+--
+-- -   #VUID-VkTensorMemoryBarrierARM-srcAccessMask-parameter#
+--     @srcAccessMask@ /must/ be a valid combination of
+--     'Vulkan.Core13.Enums.AccessFlags2.AccessFlagBits2' values
+--
+-- -   #VUID-VkTensorMemoryBarrierARM-dstStageMask-parameter#
+--     @dstStageMask@ /must/ be a valid combination of
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlagBits2'
+--     values
+--
+-- -   #VUID-VkTensorMemoryBarrierARM-dstAccessMask-parameter#
+--     @dstAccessMask@ /must/ be a valid combination of
+--     'Vulkan.Core13.Enums.AccessFlags2.AccessFlagBits2' values
+--
+-- -   #VUID-VkTensorMemoryBarrierARM-tensor-parameter# @tensor@ /must/ be
+--     a valid 'Vulkan.Extensions.Handles.TensorARM' handle
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.DependencyInfo'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_tensors VK_ARM_tensors>,
+-- 'Vulkan.Core13.Enums.AccessFlags2.AccessFlags2',
+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlags2',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'Vulkan.Extensions.Handles.TensorARM', 'TensorDependencyInfoARM'
+data TensorMemoryBarrierARM = TensorMemoryBarrierARM
+  { -- | @srcStageMask@ is a
+    -- 'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlags2' mask of
+    -- pipeline stages to be included in the
+    -- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-access-scopes second access scope>.
+    dstAccessMask :: AccessFlags2
+  , -- | @srcQueueFamilyIndex@ is the source queue family for a
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>.
+    srcQueueFamilyIndex :: Word32
+  , -- | @dstQueueFamilyIndex@ is the destination queue family for a
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>.
+    dstQueueFamilyIndex :: Word32
+  , -- | @tensor@ is a handle to the tensor whose backing memory is affected by
+    -- the barrier.
+    tensor :: TensorARM
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (TensorMemoryBarrierARM)
+#endif
+deriving instance Show TensorMemoryBarrierARM
+
+instance ToCStruct TensorMemoryBarrierARM where
+  withCStruct x f = allocaBytes 64 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p TensorMemoryBarrierARM{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_TENSOR_MEMORY_BARRIER_ARM)
+    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 TensorARM)) (tensor)
+    f
+  cStructSize = 64
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_TENSOR_MEMORY_BARRIER_ARM)
+    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 TensorARM)) (zero)
+    f
+
+instance FromCStruct TensorMemoryBarrierARM 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))
+    tensor <- peek @TensorARM ((p `plusPtr` 56 :: Ptr TensorARM))
+    pure $ TensorMemoryBarrierARM
+             srcStageMask
+             srcAccessMask
+             dstStageMask
+             dstAccessMask
+             srcQueueFamilyIndex
+             dstQueueFamilyIndex
+             tensor
+
+instance Storable TensorMemoryBarrierARM where
+  sizeOf ~_ = 64
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero TensorMemoryBarrierARM where
+  zero = TensorMemoryBarrierARM
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkTensorDependencyInfoARM - Structure specifying tensor dependency
+-- information for a synchronization command
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.DependencyInfo'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_tensors VK_ARM_tensors>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'TensorMemoryBarrierARM'
+data TensorDependencyInfoARM = TensorDependencyInfoARM
+  { -- | @pTensorMemoryBarriers@ is a pointer to an array of
+    -- 'TensorMemoryBarrierARM' structures defining memory dependencies between
+    -- tensors.
+    --
+    -- #VUID-VkTensorDependencyInfoARM-pTensorMemoryBarriers-parameter#
+    -- @pTensorMemoryBarriers@ /must/ be a valid pointer to an array of
+    -- @tensorMemoryBarrierCount@ valid 'TensorMemoryBarrierARM' structures
+    tensorMemoryBarriers :: Vector TensorMemoryBarrierARM }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (TensorDependencyInfoARM)
+#endif
+deriving instance Show TensorDependencyInfoARM
+
+instance ToCStruct TensorDependencyInfoARM where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p TensorDependencyInfoARM{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_TENSOR_DEPENDENCY_INFO_ARM)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (tensorMemoryBarriers)) :: Word32))
+    pPTensorMemoryBarriers' <- ContT $ allocaBytes @TensorMemoryBarrierARM ((Data.Vector.length (tensorMemoryBarriers)) * 64)
+    lift $ Data.Vector.imapM_ (\i e -> poke (pPTensorMemoryBarriers' `plusPtr` (64 * (i)) :: Ptr TensorMemoryBarrierARM) (e)) (tensorMemoryBarriers)
+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr TensorMemoryBarrierARM))) (pPTensorMemoryBarriers')
+    lift $ f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_TENSOR_DEPENDENCY_INFO_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    f
+
+instance FromCStruct TensorDependencyInfoARM where
+  peekCStruct p = do
+    tensorMemoryBarrierCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    pTensorMemoryBarriers <- peek @(Ptr TensorMemoryBarrierARM) ((p `plusPtr` 24 :: Ptr (Ptr TensorMemoryBarrierARM)))
+    pTensorMemoryBarriers' <- generateM (fromIntegral tensorMemoryBarrierCount) (\i -> peekCStruct @TensorMemoryBarrierARM ((pTensorMemoryBarriers `advancePtrBytes` (64 * (i)) :: Ptr TensorMemoryBarrierARM)))
+    pure $ TensorDependencyInfoARM
+             pTensorMemoryBarriers'
+
+instance Zero TensorDependencyInfoARM where
+  zero = TensorDependencyInfoARM
+           mempty
+
+
+-- | VkPhysicalDeviceTensorFeaturesARM - Structure describing tensor features
+-- that can be supported by an implementation
+--
+-- = Members
+--
+-- The members of the 'PhysicalDeviceTensorFeaturesARM' structure describe
+-- the following features:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceTensorFeaturesARM' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceTensorFeaturesARM', it /must/ add an instance of the
+-- structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_tensors VK_ARM_tensors>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceTensorFeaturesARM = PhysicalDeviceTensorFeaturesARM
+  { -- | #features-tensorNonPacked# @tensorNonPacked@ indicates whether the
+    -- implementation supports the creation of tensors that are not packed
+    -- tensors.
+    tensorNonPacked :: Bool
+  , -- | #features-shaderTensorAccess# @shaderTensorAccess@ indicates whether
+    -- shader modules /can/ declare the @TensorsARM@ capability.
+    shaderTensorAccess :: Bool
+  , -- No documentation found for Nested "VkPhysicalDeviceTensorFeaturesARM" "shaderStorageTensorArrayDynamicIndexing"
+    shaderStorageTensorArrayDynamicIndexing :: Bool
+  , -- | #features-shaderStorageTensorArrayNonUniformIndexing#
+    -- @shaderStorageTensorArrayNonUniformIndexing@ indicates whether arrays of
+    -- storage tensors /can/ be indexed by non-uniform integer expressions in
+    -- shader code. If this feature is not enabled, resources with a descriptor
+    -- type of 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+    -- /must/ not be indexed by non-uniform integer expressions when aggregated
+    -- into arrays in shader code. This also indicates whether shader modules
+    -- /can/ declare the @StorageTensorArrayNonUniformIndexingARM@ capability.
+    shaderStorageTensorArrayNonUniformIndexing :: Bool
+  , -- | #features-descriptorBindingStorageTensorUpdateAfterBind#
+    -- @descriptorBindingStorageTensorUpdateAfterBind@ indicates whether the
+    -- implementation supports updating storage tensor 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_TENSOR_ARM'.
+    descriptorBindingStorageTensorUpdateAfterBind :: Bool
+  , -- | #features-tensors# @tensors@ indicates whether the implementation
+    -- supports tensor resources.
+    tensors :: Bool
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceTensorFeaturesARM)
+#endif
+deriving instance Show PhysicalDeviceTensorFeaturesARM
+
+instance ToCStruct PhysicalDeviceTensorFeaturesARM where
+  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceTensorFeaturesARM{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_TENSOR_FEATURES_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (tensorNonPacked))
+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (shaderTensorAccess))
+    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (shaderStorageTensorArrayDynamicIndexing))
+    poke ((p `plusPtr` 28 :: Ptr Bool32)) (boolToBool32 (shaderStorageTensorArrayNonUniformIndexing))
+    poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (descriptorBindingStorageTensorUpdateAfterBind))
+    poke ((p `plusPtr` 36 :: Ptr Bool32)) (boolToBool32 (tensors))
+    f
+  cStructSize = 40
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_TENSOR_FEATURES_ARM)
+    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))
+    f
+
+instance FromCStruct PhysicalDeviceTensorFeaturesARM where
+  peekCStruct p = do
+    tensorNonPacked <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    shaderTensorAccess <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
+    shaderStorageTensorArrayDynamicIndexing <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))
+    shaderStorageTensorArrayNonUniformIndexing <- peek @Bool32 ((p `plusPtr` 28 :: Ptr Bool32))
+    descriptorBindingStorageTensorUpdateAfterBind <- peek @Bool32 ((p `plusPtr` 32 :: Ptr Bool32))
+    tensors <- peek @Bool32 ((p `plusPtr` 36 :: Ptr Bool32))
+    pure $ PhysicalDeviceTensorFeaturesARM
+             (bool32ToBool tensorNonPacked)
+             (bool32ToBool shaderTensorAccess)
+             (bool32ToBool shaderStorageTensorArrayDynamicIndexing)
+             (bool32ToBool shaderStorageTensorArrayNonUniformIndexing)
+             (bool32ToBool descriptorBindingStorageTensorUpdateAfterBind)
+             (bool32ToBool tensors)
+
+instance Storable PhysicalDeviceTensorFeaturesARM where
+  sizeOf ~_ = 40
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceTensorFeaturesARM where
+  zero = PhysicalDeviceTensorFeaturesARM
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkDeviceTensorMemoryRequirementsARM - (None)
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_tensors VK_ARM_tensors>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'TensorCreateInfoARM', 'getDeviceTensorMemoryRequirementsARM'
+data DeviceTensorMemoryRequirementsARM = DeviceTensorMemoryRequirementsARM
+  { -- | @pCreateInfo@ is a pointer to a 'TensorCreateInfoARM' structure
+    -- containing parameters affecting the creation of the tensor to query.
+    --
+    -- #VUID-VkDeviceTensorMemoryRequirementsARM-pCreateInfo-parameter#
+    -- @pCreateInfo@ /must/ be a valid pointer to a valid 'TensorCreateInfoARM'
+    -- structure
+    createInfo :: SomeStruct TensorCreateInfoARM }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (DeviceTensorMemoryRequirementsARM)
+#endif
+deriving instance Show DeviceTensorMemoryRequirementsARM
+
+instance ToCStruct DeviceTensorMemoryRequirementsARM where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p DeviceTensorMemoryRequirementsARM{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_TENSOR_MEMORY_REQUIREMENTS_ARM)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    pCreateInfo'' <- ContT @_ @_ @(Ptr (TensorCreateInfoARM '[])) $ \cont -> withSomeCStruct @TensorCreateInfoARM (createInfo) (cont . castPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr (Ptr (TensorCreateInfoARM _)))) pCreateInfo''
+    lift $ f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_TENSOR_MEMORY_REQUIREMENTS_ARM)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    pCreateInfo'' <- ContT @_ @_ @(Ptr (TensorCreateInfoARM '[])) $ \cont -> withSomeCStruct @TensorCreateInfoARM ((SomeStruct zero)) (cont . castPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr (Ptr (TensorCreateInfoARM _)))) pCreateInfo''
+    lift $ f
+
+instance FromCStruct DeviceTensorMemoryRequirementsARM where
+  peekCStruct p = do
+    pCreateInfo <- peekSomeCStruct . forgetExtensions =<< peek ((p `plusPtr` 16 :: Ptr (Ptr (TensorCreateInfoARM _))))
+    pure $ DeviceTensorMemoryRequirementsARM
+             pCreateInfo
+
+instance Zero DeviceTensorMemoryRequirementsARM where
+  zero = DeviceTensorMemoryRequirementsARM
+           (SomeStruct zero)
+
+
+-- | VkCopyTensorInfoARM - Structure specifying an tensor copy operation
+--
+-- = Description
+--
+-- Each region in @pRegions@ describes a region to be copied from the
+-- source tensor to a corresponding region of the destination tensor.
+-- @srcTensor@ and @dstTensor@ /can/ be the same tensor or alias the same
+-- memory.
+--
+-- The formats of @srcTensor@ and @dstTensor@ /must/ be compatible. Formats
+-- are compatible if they share the same class, as shown in the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-compatibility Compatible Formats>
+-- table.
+--
+-- 'cmdCopyTensorARM' allows copying between /size-compatible/ internal
+-- formats.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkCopyTensorInfoARM-dimensionCount-09684# @srcTensor@ and
+--     @dstTensor@ /must/ have been created with equal values for
+--     'TensorDescriptionARM'::@dimensionCount@
+--
+-- -   #VUID-VkCopyTensorInfoARM-pDimensions-09685# For each of the
+--     elements of 'TensorDescriptionARM'::@pDimensions@, @srcTensor@ and
+--     @dstTensor@ /must/ be the same size
+--
+-- -   #VUID-VkCopyTensorInfoARM-regionCount-09686# @regionCount@ must be
+--     equal to 1
+--
+-- -   #VUID-VkCopyTensorInfoARM-pRegions-09687# Each element of @pRegions@
+--     /must/ be a 'TensorCopyARM' structure whose @pSrcOffset@ is @NULL@
+--     or has all its elements equal to @0@
+--
+-- -   #VUID-VkCopyTensorInfoARM-pRegions-09688# Each element of @pRegions@
+--     /must/ be a 'TensorCopyARM' structure whose @pDstOffset@ is @NULL@
+--     or has all its elements equal to @0@
+--
+-- -   #VUID-VkCopyTensorInfoARM-pRegions-09689# Each element of @pRegions@
+--     /must/ be a 'TensorCopyARM' structure whose @pExtent@ is @NULL@ or
+--     equal to the 'TensorDescriptionARM'::@pDimensions@ array specified
+--     when @srcTensor@ and @dstTensor@ were created
+--
+-- -   #VUID-VkCopyTensorInfoARM-pRegions-09954# Each element of @pRegions@
+--     /must/ be a 'TensorCopyARM' structure whose @dimensionCount@, if it
+--     is not equal to 0, is equal to the largest of the
+--     'TensorDescriptionARM'::@dimensionCount@ of @srcTensor@ or
+--     @dstTensor@
+--
+-- -   #VUID-VkCopyTensorInfoARM-srcTensor-09690# The
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-tensor-view-format-features format features>
+--     of @srcTensor@ /must/ contain
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_TRANSFER_SRC_BIT'
+--
+-- -   #VUID-VkCopyTensorInfoARM-srcTensor-09691# @srcTensor@ /must/ have
+--     been created with the 'TENSOR_USAGE_TRANSFER_SRC_BIT_ARM' usage flag
+--     set
+--
+-- -   #VUID-VkCopyTensorInfoARM-dstTensor-09692# The
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-tensor-view-format-features format features>
+--     of @dstTensor@ /must/ contain
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_TRANSFER_DST_BIT'
+--
+-- -   #VUID-VkCopyTensorInfoARM-dstTensor-09693# @dstTensor@ /must/ have
+--     been created with the 'TENSOR_USAGE_TRANSFER_DST_BIT_ARM' usage flag
+--     set
+--
+-- -   #VUID-VkCopyTensorInfoARM-srcTensor-09694# If @srcTensor@ is
+--     non-sparse then it /must/ be bound completely and contiguously to a
+--     single 'Vulkan.Core10.Handles.DeviceMemory' object
+--
+-- -   #VUID-VkCopyTensorInfoARM-dstTensor-09695# If @dstTensor@ is
+--     non-sparse then it /must/ be bound completely and contiguously to a
+--     single 'Vulkan.Core10.Handles.DeviceMemory' object
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkCopyTensorInfoARM-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_TENSOR_INFO_ARM'
+--
+-- -   #VUID-VkCopyTensorInfoARM-pNext-pNext# @pNext@ /must/ be @NULL@
+--
+-- -   #VUID-VkCopyTensorInfoARM-srcTensor-parameter# @srcTensor@ /must/ be
+--     a valid 'Vulkan.Extensions.Handles.TensorARM' handle
+--
+-- -   #VUID-VkCopyTensorInfoARM-dstTensor-parameter# @dstTensor@ /must/ be
+--     a valid 'Vulkan.Extensions.Handles.TensorARM' handle
+--
+-- -   #VUID-VkCopyTensorInfoARM-pRegions-parameter# @pRegions@ /must/ be a
+--     valid pointer to an array of @regionCount@ valid 'TensorCopyARM'
+--     structures
+--
+-- -   #VUID-VkCopyTensorInfoARM-regionCount-arraylength# @regionCount@
+--     /must/ be greater than @0@
+--
+-- -   #VUID-VkCopyTensorInfoARM-commonparent# Both of @dstTensor@, and
+--     @srcTensor@ /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_ARM_tensors VK_ARM_tensors>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'Vulkan.Extensions.Handles.TensorARM', 'TensorCopyARM',
+-- 'cmdCopyTensorARM'
+data CopyTensorInfoARM = CopyTensorInfoARM
+  { -- | @srcTensor@ is the source tensor.
+    srcTensor :: TensorARM
+  , -- | @dstTensor@ is the destination tensor.
+    dstTensor :: TensorARM
+  , -- | @pRegions@ is a pointer to an array of 'TensorCopyARM' structures
+    -- specifying the regions to copy.
+    regions :: Vector TensorCopyARM
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (CopyTensorInfoARM)
+#endif
+deriving instance Show CopyTensorInfoARM
+
+instance ToCStruct CopyTensorInfoARM where
+  withCStruct x f = allocaBytes 48 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p CopyTensorInfoARM{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_TENSOR_INFO_ARM)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr TensorARM)) (srcTensor)
+    lift $ poke ((p `plusPtr` 24 :: Ptr TensorARM)) (dstTensor)
+    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (regions)) :: Word32))
+    pPRegions' <- ContT $ allocaBytes @TensorCopyARM ((Data.Vector.length (regions)) * 48)
+    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPRegions' `plusPtr` (48 * (i)) :: Ptr TensorCopyARM) (e) . ($ ())) (regions)
+    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr TensorCopyARM))) (pPRegions')
+    lift $ f
+  cStructSize = 48
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_TENSOR_INFO_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr TensorARM)) (zero)
+    poke ((p `plusPtr` 24 :: Ptr TensorARM)) (zero)
+    f
+
+instance FromCStruct CopyTensorInfoARM where
+  peekCStruct p = do
+    srcTensor <- peek @TensorARM ((p `plusPtr` 16 :: Ptr TensorARM))
+    dstTensor <- peek @TensorARM ((p `plusPtr` 24 :: Ptr TensorARM))
+    regionCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))
+    pRegions <- peek @(Ptr TensorCopyARM) ((p `plusPtr` 40 :: Ptr (Ptr TensorCopyARM)))
+    pRegions' <- generateM (fromIntegral regionCount) (\i -> peekCStruct @TensorCopyARM ((pRegions `advancePtrBytes` (48 * (i)) :: Ptr TensorCopyARM)))
+    pure $ CopyTensorInfoARM
+             srcTensor dstTensor pRegions'
+
+instance Zero CopyTensorInfoARM where
+  zero = CopyTensorInfoARM
+           zero
+           zero
+           mempty
+
+
+-- | VkTensorCopyARM - Structure specifying an tensor copy region
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkTensorCopyARM-dimensionCount-09955# @dimensionCount@ /must/
+--     be greater than 0 if @pSrcOffset@, @pDstOffset@, or @pExtent@ is not
+--     @NULL@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkTensorCopyARM-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_TENSOR_COPY_ARM'
+--
+-- -   #VUID-VkTensorCopyARM-pNext-pNext# @pNext@ /must/ be @NULL@
+--
+-- -   #VUID-VkTensorCopyARM-pSrcOffset-parameter# If @dimensionCount@ is
+--     not @0@, and @pSrcOffset@ is not @NULL@, @pSrcOffset@ /must/ be a
+--     valid pointer to an array of @dimensionCount@ @uint64_t@ values
+--
+-- -   #VUID-VkTensorCopyARM-pDstOffset-parameter# If @dimensionCount@ is
+--     not @0@, and @pDstOffset@ is not @NULL@, @pDstOffset@ /must/ be a
+--     valid pointer to an array of @dimensionCount@ @uint64_t@ values
+--
+-- -   #VUID-VkTensorCopyARM-pExtent-parameter# If @dimensionCount@ is not
+--     @0@, and @pExtent@ is not @NULL@, @pExtent@ /must/ be a valid
+--     pointer to an array of @dimensionCount@ @uint64_t@ values
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_tensors VK_ARM_tensors>,
+-- 'CopyTensorInfoARM', 'Vulkan.Core10.Enums.StructureType.StructureType'
+data TensorCopyARM = TensorCopyARM
+  { -- | @dimensionCount@ is the number of elements in the @pSrcOffset@,
+    -- @pDstOffset@ and @pExtent@ arrays.
+    dimensionCount :: Word32
+  , -- | @pSrcOffset@ is @NULL@ or an array of size @dimensionCount@ providing an
+    -- offset into the source tensor. When @pSrcOffset@ is @NULL@, the offset
+    -- into the source tensor is @0@ in all dimensions.
+    srcOffset :: Vector Word64
+  , -- | @pDstOffset@ is @NULL@ or an array of size @dimensionCount@ providing an
+    -- offset into the destination tensor. When @pDstOffset@ is @NULL@, the
+    -- offset into the destination tensor is @0@ in all dimensions.
+    dstOffset :: Vector Word64
+  , -- | @pExtent@ is @NULL@ or an array of size @dimensionCount@ providing the
+    -- number of elements to copy in each dimension. When @pExtent@ is @NULL@,
+    -- the number of elements to copy is taken as the total number of elements
+    -- in each dimension of the source tensor.
+    extent :: Vector Word64
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (TensorCopyARM)
+#endif
+deriving instance Show TensorCopyARM
+
+instance ToCStruct TensorCopyARM where
+  withCStruct x f = allocaBytes 48 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p TensorCopyARM{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_TENSOR_COPY_ARM)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    let pSrcOffsetLength = Data.Vector.length $ (srcOffset)
+    lift $ unless (fromIntegral pSrcOffsetLength == (dimensionCount) || pSrcOffsetLength == 0) $
+      throwIO $ IOError Nothing InvalidArgument "" "pSrcOffset must be empty or have 'dimensionCount' elements" Nothing Nothing
+    let pDstOffsetLength = Data.Vector.length $ (dstOffset)
+    lift $ unless (fromIntegral pDstOffsetLength == (dimensionCount) || pDstOffsetLength == 0) $
+      throwIO $ IOError Nothing InvalidArgument "" "pDstOffset must be empty or have 'dimensionCount' elements" Nothing Nothing
+    let pExtentLength = Data.Vector.length $ (extent)
+    lift $ unless (fromIntegral pExtentLength == (dimensionCount) || pExtentLength == 0) $
+      throwIO $ IOError Nothing InvalidArgument "" "pExtent must be empty or have 'dimensionCount' elements" Nothing Nothing
+    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((dimensionCount))
+    pSrcOffset'' <- if Data.Vector.null (srcOffset)
+      then pure nullPtr
+      else do
+        pPSrcOffset <- ContT $ allocaBytes @Word64 (((Data.Vector.length (srcOffset))) * 8)
+        lift $ Data.Vector.imapM_ (\i e -> poke (pPSrcOffset `plusPtr` (8 * (i)) :: Ptr Word64) (e)) ((srcOffset))
+        pure $ pPSrcOffset
+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Word64))) pSrcOffset''
+    pDstOffset'' <- if Data.Vector.null (dstOffset)
+      then pure nullPtr
+      else do
+        pPDstOffset <- ContT $ allocaBytes @Word64 (((Data.Vector.length (dstOffset))) * 8)
+        lift $ Data.Vector.imapM_ (\i e -> poke (pPDstOffset `plusPtr` (8 * (i)) :: Ptr Word64) (e)) ((dstOffset))
+        pure $ pPDstOffset
+    lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr Word64))) pDstOffset''
+    pExtent'' <- if Data.Vector.null (extent)
+      then pure nullPtr
+      else do
+        pPExtent <- ContT $ allocaBytes @Word64 (((Data.Vector.length (extent))) * 8)
+        lift $ Data.Vector.imapM_ (\i e -> poke (pPExtent `plusPtr` (8 * (i)) :: Ptr Word64) (e)) ((extent))
+        pure $ pPExtent
+    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr Word64))) pExtent''
+    lift $ f
+  cStructSize = 48
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_TENSOR_COPY_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    f
+
+instance FromCStruct TensorCopyARM where
+  peekCStruct p = do
+    dimensionCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    pSrcOffset <- peek @(Ptr Word64) ((p `plusPtr` 24 :: Ptr (Ptr Word64)))
+    let pSrcOffsetLength = if pSrcOffset == nullPtr then 0 else (fromIntegral dimensionCount)
+    pSrcOffset' <- generateM pSrcOffsetLength (\i -> peek @Word64 ((pSrcOffset `advancePtrBytes` (8 * (i)) :: Ptr Word64)))
+    pDstOffset <- peek @(Ptr Word64) ((p `plusPtr` 32 :: Ptr (Ptr Word64)))
+    let pDstOffsetLength = if pDstOffset == nullPtr then 0 else (fromIntegral dimensionCount)
+    pDstOffset' <- generateM pDstOffsetLength (\i -> peek @Word64 ((pDstOffset `advancePtrBytes` (8 * (i)) :: Ptr Word64)))
+    pExtent <- peek @(Ptr Word64) ((p `plusPtr` 40 :: Ptr (Ptr Word64)))
+    let pExtentLength = if pExtent == nullPtr then 0 else (fromIntegral dimensionCount)
+    pExtent' <- generateM pExtentLength (\i -> peek @Word64 ((pExtent `advancePtrBytes` (8 * (i)) :: Ptr Word64)))
+    pure $ TensorCopyARM
+             dimensionCount pSrcOffset' pDstOffset' pExtent'
+
+instance Zero TensorCopyARM where
+  zero = TensorCopyARM
+           zero
+           mempty
+           mempty
+           mempty
+
+
+-- | VkMemoryDedicatedAllocateInfoTensorARM - Specify a dedicated memory
+-- allocation tensor resource
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkMemoryDedicatedAllocateInfoTensorARM-allocationSize-09710#
+--     'Vulkan.Core10.Memory.MemoryAllocateInfo'::@allocationSize@ /must/
+--     equal the
+--     'Vulkan.Core10.MemoryManagement.MemoryRequirements'::@size@ of the
+--     tensor
+--
+-- -   #VUID-VkMemoryDedicatedAllocateInfoTensorARM-tensor-09859# If
+--     'Vulkan.Core10.Memory.MemoryAllocateInfo' defines a memory import
+--     operation with handle type
+--     'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT',
+--     the memory being imported /must/ also be a dedicated tensor
+--     allocation and @tensor@ /must/ be identical to the tensor associated
+--     with the imported memory
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkMemoryDedicatedAllocateInfoTensorARM-sType-sType# @sType@
+--     /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_TENSOR_ARM'
+--
+-- -   #VUID-VkMemoryDedicatedAllocateInfoTensorARM-tensor-parameter#
+--     @tensor@ /must/ be a valid 'Vulkan.Extensions.Handles.TensorARM'
+--     handle
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.Memory.MemoryAllocateInfo'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_tensors VK_ARM_tensors>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'Vulkan.Extensions.Handles.TensorARM'
+data MemoryDedicatedAllocateInfoTensorARM = MemoryDedicatedAllocateInfoTensorARM
+  { -- | @tensor@ is a handle of a tensor which this memory will be bound to.
+    tensor :: TensorARM }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (MemoryDedicatedAllocateInfoTensorARM)
+#endif
+deriving instance Show MemoryDedicatedAllocateInfoTensorARM
+
+instance ToCStruct MemoryDedicatedAllocateInfoTensorARM where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p MemoryDedicatedAllocateInfoTensorARM{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_TENSOR_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr TensorARM)) (tensor)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_TENSOR_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr TensorARM)) (zero)
+    f
+
+instance FromCStruct MemoryDedicatedAllocateInfoTensorARM where
+  peekCStruct p = do
+    tensor <- peek @TensorARM ((p `plusPtr` 16 :: Ptr TensorARM))
+    pure $ MemoryDedicatedAllocateInfoTensorARM
+             tensor
+
+instance Storable MemoryDedicatedAllocateInfoTensorARM where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero MemoryDedicatedAllocateInfoTensorARM where
+  zero = MemoryDedicatedAllocateInfoTensorARM
+           zero
+
+
+-- | VkPhysicalDeviceDescriptorBufferTensorPropertiesARM - Structure
+-- describing descriptor buffer tensor properties supported by an
+-- implementation
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceDescriptorBufferTensorPropertiesARM' 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.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_tensors VK_ARM_tensors>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_buffer VK_EXT_descriptor_buffer>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceDescriptorBufferTensorPropertiesARM = PhysicalDeviceDescriptorBufferTensorPropertiesARM
+  { -- | @tensorCaptureReplayDescriptorDataSize@ indicates the maximum size in
+    -- bytes of the opaque data used for capture and replay with tensors.
+    tensorCaptureReplayDescriptorDataSize :: Word64
+  , -- | @tensorViewCaptureReplayDescriptorDataSize@ indicates the maximum size
+    -- in bytes of the opaque data used for capture and replay with tensor
+    -- views.
+    tensorViewCaptureReplayDescriptorDataSize :: Word64
+  , -- | @tensorDescriptorSize@ indicates the size in bytes of a
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+    -- descriptor.
+    tensorDescriptorSize :: Word64
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceDescriptorBufferTensorPropertiesARM)
+#endif
+deriving instance Show PhysicalDeviceDescriptorBufferTensorPropertiesARM
+
+instance ToCStruct PhysicalDeviceDescriptorBufferTensorPropertiesARM where
+  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceDescriptorBufferTensorPropertiesARM{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_PROPERTIES_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr CSize)) (CSize (tensorCaptureReplayDescriptorDataSize))
+    poke ((p `plusPtr` 24 :: Ptr CSize)) (CSize (tensorViewCaptureReplayDescriptorDataSize))
+    poke ((p `plusPtr` 32 :: Ptr CSize)) (CSize (tensorDescriptorSize))
+    f
+  cStructSize = 40
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_PROPERTIES_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr CSize)) (CSize (zero))
+    poke ((p `plusPtr` 24 :: Ptr CSize)) (CSize (zero))
+    poke ((p `plusPtr` 32 :: Ptr CSize)) (CSize (zero))
+    f
+
+instance FromCStruct PhysicalDeviceDescriptorBufferTensorPropertiesARM where
+  peekCStruct p = do
+    tensorCaptureReplayDescriptorDataSize <- peek @CSize ((p `plusPtr` 16 :: Ptr CSize))
+    tensorViewCaptureReplayDescriptorDataSize <- peek @CSize ((p `plusPtr` 24 :: Ptr CSize))
+    tensorDescriptorSize <- peek @CSize ((p `plusPtr` 32 :: Ptr CSize))
+    pure $ PhysicalDeviceDescriptorBufferTensorPropertiesARM
+             (coerce @CSize @Word64 tensorCaptureReplayDescriptorDataSize)
+             (coerce @CSize @Word64 tensorViewCaptureReplayDescriptorDataSize)
+             (coerce @CSize @Word64 tensorDescriptorSize)
+
+instance Storable PhysicalDeviceDescriptorBufferTensorPropertiesARM where
+  sizeOf ~_ = 40
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceDescriptorBufferTensorPropertiesARM where
+  zero = PhysicalDeviceDescriptorBufferTensorPropertiesARM
+           zero
+           zero
+           zero
+
+
+-- | VkPhysicalDeviceDescriptorBufferTensorFeaturesARM - Structure describing
+-- the descriptor buffer tensor features that can be supported by an
+-- implementation
+--
+-- = Members
+--
+-- This structure describes the following features:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceDescriptorBufferTensorFeaturesARM' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceDescriptorBufferTensorFeaturesARM', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_tensors VK_ARM_tensors>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_buffer VK_EXT_descriptor_buffer>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceDescriptorBufferTensorFeaturesARM = PhysicalDeviceDescriptorBufferTensorFeaturesARM
+  { -- | #features-descriptorBufferTensorDescriptors#
+    -- @descriptorBufferTensorDescriptors@ indicates that the implementation
+    -- supports putthing shader-accessible tensor descriptors directly in
+    -- memory.
+    descriptorBufferTensorDescriptors :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceDescriptorBufferTensorFeaturesARM)
+#endif
+deriving instance Show PhysicalDeviceDescriptorBufferTensorFeaturesARM
+
+instance ToCStruct PhysicalDeviceDescriptorBufferTensorFeaturesARM where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceDescriptorBufferTensorFeaturesARM{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_FEATURES_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (descriptorBufferTensorDescriptors))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_FEATURES_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceDescriptorBufferTensorFeaturesARM where
+  peekCStruct p = do
+    descriptorBufferTensorDescriptors <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDeviceDescriptorBufferTensorFeaturesARM
+             (bool32ToBool descriptorBufferTensorDescriptors)
+
+instance Storable PhysicalDeviceDescriptorBufferTensorFeaturesARM where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceDescriptorBufferTensorFeaturesARM where
+  zero = PhysicalDeviceDescriptorBufferTensorFeaturesARM
+           zero
+
+
+-- | VkTensorCaptureDescriptorDataInfoARM - Structure specifying a tensor for
+-- descriptor capture
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkTensorCaptureDescriptorDataInfoARM-tensor-09705# If @tensor@
+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE' then @tensor@ /must/
+--     have been created with
+--     'TENSOR_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_ARM' set in
+--     'TensorCreateInfoARM'::@flags@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkTensorCaptureDescriptorDataInfoARM-sType-sType# @sType@
+--     /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_TENSOR_CAPTURE_DESCRIPTOR_DATA_INFO_ARM'
+--
+-- -   #VUID-VkTensorCaptureDescriptorDataInfoARM-pNext-pNext# @pNext@
+--     /must/ be @NULL@
+--
+-- -   #VUID-VkTensorCaptureDescriptorDataInfoARM-tensor-parameter#
+--     @tensor@ /must/ be a valid 'Vulkan.Extensions.Handles.TensorARM'
+--     handle
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_tensors VK_ARM_tensors>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_buffer VK_EXT_descriptor_buffer>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'Vulkan.Extensions.Handles.TensorARM',
+-- 'getTensorOpaqueCaptureDescriptorDataARM'
+data TensorCaptureDescriptorDataInfoARM = TensorCaptureDescriptorDataInfoARM
+  { -- | @tensor@ is the 'Vulkan.Extensions.Handles.TensorARM' handle of the
+    -- tensor to get opaque capture data for.
+    tensor :: TensorARM }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (TensorCaptureDescriptorDataInfoARM)
+#endif
+deriving instance Show TensorCaptureDescriptorDataInfoARM
+
+instance ToCStruct TensorCaptureDescriptorDataInfoARM where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p TensorCaptureDescriptorDataInfoARM{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_TENSOR_CAPTURE_DESCRIPTOR_DATA_INFO_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr TensorARM)) (tensor)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_TENSOR_CAPTURE_DESCRIPTOR_DATA_INFO_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr TensorARM)) (zero)
+    f
+
+instance FromCStruct TensorCaptureDescriptorDataInfoARM where
+  peekCStruct p = do
+    tensor <- peek @TensorARM ((p `plusPtr` 16 :: Ptr TensorARM))
+    pure $ TensorCaptureDescriptorDataInfoARM
+             tensor
+
+instance Storable TensorCaptureDescriptorDataInfoARM where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero TensorCaptureDescriptorDataInfoARM where
+  zero = TensorCaptureDescriptorDataInfoARM
+           zero
+
+
+-- | VkTensorViewCaptureDescriptorDataInfoARM - Structure specifying a tensor
+-- view for descriptor capture
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkTensorViewCaptureDescriptorDataInfoARM-tensorView-09709# If
+--     @tensorView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE' then
+--     @tensorView@ /must/ have been created with
+--     'TENSOR_VIEW_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_ARM' set in
+--     'TensorViewCreateInfoARM'::@flags@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkTensorViewCaptureDescriptorDataInfoARM-sType-sType# @sType@
+--     /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_TENSOR_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_ARM'
+--
+-- -   #VUID-VkTensorViewCaptureDescriptorDataInfoARM-pNext-pNext# @pNext@
+--     /must/ be @NULL@
+--
+-- -   #VUID-VkTensorViewCaptureDescriptorDataInfoARM-tensorView-parameter#
+--     @tensorView@ /must/ be a valid
+--     'Vulkan.Extensions.Handles.TensorViewARM' handle
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_tensors VK_ARM_tensors>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_buffer VK_EXT_descriptor_buffer>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'Vulkan.Extensions.Handles.TensorViewARM',
+-- 'getTensorViewOpaqueCaptureDescriptorDataARM'
+data TensorViewCaptureDescriptorDataInfoARM = TensorViewCaptureDescriptorDataInfoARM
+  { -- | @tensorView@ is the 'Vulkan.Extensions.Handles.TensorViewARM' handle of
+    -- the tensor view to get opaque capture data for.
+    tensorView :: TensorViewARM }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (TensorViewCaptureDescriptorDataInfoARM)
+#endif
+deriving instance Show TensorViewCaptureDescriptorDataInfoARM
+
+instance ToCStruct TensorViewCaptureDescriptorDataInfoARM where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p TensorViewCaptureDescriptorDataInfoARM{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_TENSOR_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr TensorViewARM)) (tensorView)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_TENSOR_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr TensorViewARM)) (zero)
+    f
+
+instance FromCStruct TensorViewCaptureDescriptorDataInfoARM where
+  peekCStruct p = do
+    tensorView <- peek @TensorViewARM ((p `plusPtr` 16 :: Ptr TensorViewARM))
+    pure $ TensorViewCaptureDescriptorDataInfoARM
+             tensorView
+
+instance Storable TensorViewCaptureDescriptorDataInfoARM where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero TensorViewCaptureDescriptorDataInfoARM where
+  zero = TensorViewCaptureDescriptorDataInfoARM
+           zero
+
+
+-- | VkDescriptorGetTensorInfoARM - Structure specifying parameters to get
+-- descriptor data for tensor views
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkDescriptorGetTensorInfoARM-nullDescriptor-09899# If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-nullDescriptor nullDescriptor>
+--     feature is not enabled, @tensorView@ /must/ not be
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkDescriptorGetTensorInfoARM-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DESCRIPTOR_GET_TENSOR_INFO_ARM'
+--
+-- -   #VUID-VkDescriptorGetTensorInfoARM-tensorView-parameter# If
+--     @tensorView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
+--     @tensorView@ /must/ be a valid
+--     'Vulkan.Extensions.Handles.TensorViewARM' handle
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Extensions.VK_EXT_descriptor_buffer.DescriptorGetInfoEXT'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_tensors VK_ARM_tensors>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_buffer VK_EXT_descriptor_buffer>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'Vulkan.Extensions.Handles.TensorViewARM'
+data DescriptorGetTensorInfoARM = DescriptorGetTensorInfoARM
+  { -- | @tensorView@ is a 'Vulkan.Extensions.Handles.TensorViewARM' handle
+    -- specifying the parameters of a
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+    -- descriptor.
+    tensorView :: TensorViewARM }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (DescriptorGetTensorInfoARM)
+#endif
+deriving instance Show DescriptorGetTensorInfoARM
+
+instance ToCStruct DescriptorGetTensorInfoARM where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p DescriptorGetTensorInfoARM{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DESCRIPTOR_GET_TENSOR_INFO_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr TensorViewARM)) (tensorView)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DESCRIPTOR_GET_TENSOR_INFO_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    f
+
+instance FromCStruct DescriptorGetTensorInfoARM where
+  peekCStruct p = do
+    tensorView <- peek @TensorViewARM ((p `plusPtr` 16 :: Ptr TensorViewARM))
+    pure $ DescriptorGetTensorInfoARM
+             tensorView
+
+instance Storable DescriptorGetTensorInfoARM where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero DescriptorGetTensorInfoARM where
+  zero = DescriptorGetTensorInfoARM
+           zero
+
+
+-- | VkFrameBoundaryTensorsARM - Add tensor frame boundary information to
+-- queue submissions
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.SparseResourceMemoryManagement.BindSparseInfo'
+--
+--     -   'Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR'
+--
+--     -   'Vulkan.Core10.Queue.SubmitInfo'
+--
+--     -   'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.SubmitInfo2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_tensors VK_ARM_tensors>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_frame_boundary VK_EXT_frame_boundary>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'Vulkan.Extensions.Handles.TensorARM'
+data FrameBoundaryTensorsARM = FrameBoundaryTensorsARM
+  { -- | @pTensors@ is a pointer to an array of
+    -- 'Vulkan.Extensions.Handles.TensorARM' objects with tensorCount entries.
+    --
+    -- #VUID-VkFrameBoundaryTensorsARM-pTensors-parameter# @pTensors@ /must/ be
+    -- a valid pointer to an array of @tensorCount@ valid
+    -- 'Vulkan.Extensions.Handles.TensorARM' handles
+    tensors :: Vector TensorARM }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (FrameBoundaryTensorsARM)
+#endif
+deriving instance Show FrameBoundaryTensorsARM
+
+instance ToCStruct FrameBoundaryTensorsARM where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p FrameBoundaryTensorsARM{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_FRAME_BOUNDARY_TENSORS_ARM)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (tensors)) :: Word32))
+    pPTensors' <- ContT $ allocaBytes @TensorARM ((Data.Vector.length (tensors)) * 8)
+    lift $ Data.Vector.imapM_ (\i e -> poke (pPTensors' `plusPtr` (8 * (i)) :: Ptr TensorARM) (e)) (tensors)
+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr TensorARM))) (pPTensors')
+    lift $ f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_FRAME_BOUNDARY_TENSORS_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    f
+
+instance FromCStruct FrameBoundaryTensorsARM where
+  peekCStruct p = do
+    tensorCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    pTensors <- peek @(Ptr TensorARM) ((p `plusPtr` 24 :: Ptr (Ptr TensorARM)))
+    pTensors' <- generateM (fromIntegral tensorCount) (\i -> peek @TensorARM ((pTensors `advancePtrBytes` (8 * (i)) :: Ptr TensorARM)))
+    pure $ FrameBoundaryTensorsARM
+             pTensors'
+
+instance Zero FrameBoundaryTensorsARM where
+  zero = FrameBoundaryTensorsARM
+           mempty
+
+
+-- | VkPhysicalDeviceExternalTensorInfoARM - Structure specifying tensor
+-- creation parameters.
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_tensors VK_ARM_tensors>,
+-- 'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'TensorCreateFlagsARM', 'TensorDescriptionARM',
+-- 'getPhysicalDeviceExternalTensorPropertiesARM'
+data PhysicalDeviceExternalTensorInfoARM = PhysicalDeviceExternalTensorInfoARM
+  { -- | @flags@ is a bitmask of 'TensorCreateFlagBitsARM' describing additional
+    -- parameters of the tensor, corresponding to
+    -- 'TensorCreateInfoARM'::@flags@.
+    --
+    -- #VUID-VkPhysicalDeviceExternalTensorInfoARM-flags-parameter# @flags@
+    -- /must/ be a valid combination of 'TensorCreateFlagBitsARM' values
+    flags :: TensorCreateFlagsARM
+  , -- | @pDescription@ is a 'TensorDescriptionARM' structure describing the
+    -- tensor, corresponding to 'TensorCreateInfoARM'::@pDescription@.
+    --
+    -- #VUID-VkPhysicalDeviceExternalTensorInfoARM-pDescription-parameter#
+    -- @pDescription@ /must/ be a valid pointer to a valid
+    -- 'TensorDescriptionARM' structure
+    description :: TensorDescriptionARM
+  , -- | @handleType@ is a
+    -- 'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits'
+    -- value specifying the external memory handle type for which capabilities
+    -- will be returned.
+    --
+    -- #VUID-VkPhysicalDeviceExternalTensorInfoARM-handleType-parameter#
+    -- @handleType@ /must/ be a valid
+    -- 'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits'
+    -- value
+    handleType :: ExternalMemoryHandleTypeFlagBits
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceExternalTensorInfoARM)
+#endif
+deriving instance Show PhysicalDeviceExternalTensorInfoARM
+
+instance ToCStruct PhysicalDeviceExternalTensorInfoARM where
+  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceExternalTensorInfoARM{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_TENSOR_INFO_ARM)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr TensorCreateFlagsARM)) (flags)
+    pDescription'' <- ContT $ withCStruct (description)
+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr TensorDescriptionARM))) pDescription''
+    lift $ poke ((p `plusPtr` 32 :: Ptr ExternalMemoryHandleTypeFlagBits)) (handleType)
+    lift $ f
+  cStructSize = 40
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_TENSOR_INFO_ARM)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    pDescription'' <- ContT $ withCStruct (zero)
+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr TensorDescriptionARM))) pDescription''
+    lift $ poke ((p `plusPtr` 32 :: Ptr ExternalMemoryHandleTypeFlagBits)) (zero)
+    lift $ f
+
+instance FromCStruct PhysicalDeviceExternalTensorInfoARM where
+  peekCStruct p = do
+    flags <- peek @TensorCreateFlagsARM ((p `plusPtr` 16 :: Ptr TensorCreateFlagsARM))
+    pDescription <- peekCStruct @TensorDescriptionARM =<< peek ((p `plusPtr` 24 :: Ptr (Ptr TensorDescriptionARM)))
+    handleType <- peek @ExternalMemoryHandleTypeFlagBits ((p `plusPtr` 32 :: Ptr ExternalMemoryHandleTypeFlagBits))
+    pure $ PhysicalDeviceExternalTensorInfoARM
+             flags pDescription handleType
+
+instance Zero PhysicalDeviceExternalTensorInfoARM where
+  zero = PhysicalDeviceExternalTensorInfoARM
+           zero
+           zero
+           zero
+
+
+-- | VkExternalTensorPropertiesARM - Structure specifying supported external
+-- handle capabilities for a tensor
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_tensors VK_ARM_tensors>,
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.ExternalMemoryProperties',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'getPhysicalDeviceExternalTensorPropertiesARM'
+data ExternalTensorPropertiesARM = ExternalTensorPropertiesARM
+  { -- | @externalMemoryProperties@ is a
+    -- 'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.ExternalMemoryProperties'
+    -- structure specifying various capabilities of the external handle type
+    -- when used with the specified tensor creation parameters.
+    --
+    -- #VUID-VkExternalTensorPropertiesARM-externalMemoryProperties-parameter#
+    -- @externalMemoryProperties@ /must/ be a valid
+    -- 'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.ExternalMemoryProperties'
+    -- structure
+    externalMemoryProperties :: ExternalMemoryProperties }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (ExternalTensorPropertiesARM)
+#endif
+deriving instance Show ExternalTensorPropertiesARM
+
+instance ToCStruct ExternalTensorPropertiesARM where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p ExternalTensorPropertiesARM{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_EXTERNAL_TENSOR_PROPERTIES_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr ExternalMemoryProperties)) (externalMemoryProperties)
+    f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_EXTERNAL_TENSOR_PROPERTIES_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr ExternalMemoryProperties)) (zero)
+    f
+
+instance FromCStruct ExternalTensorPropertiesARM where
+  peekCStruct p = do
+    externalMemoryProperties <- peekCStruct @ExternalMemoryProperties ((p `plusPtr` 16 :: Ptr ExternalMemoryProperties))
+    pure $ ExternalTensorPropertiesARM
+             externalMemoryProperties
+
+instance Storable ExternalTensorPropertiesARM where
+  sizeOf ~_ = 32
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero ExternalTensorPropertiesARM where
+  zero = ExternalTensorPropertiesARM
+           zero
+
+
+-- | VkExternalMemoryTensorCreateInfoARM - Specify that a tensor may be
+-- backed by external memory
+--
+-- = Members
+--
+-- A 'ExternalMemoryTensorCreateInfoARM' structure with a non-zero
+-- @handleTypes@ field must be included in the creation parameters for a
+-- tensor that will be bound to memory that is either exported or imported.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'TensorCreateInfoARM'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_tensors VK_ARM_tensors>,
+-- 'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlags',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data ExternalMemoryTensorCreateInfoARM = ExternalMemoryTensorCreateInfoARM
+  { -- | @handleTypes@ is zero or a bitmask of
+    -- 'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits'
+    -- specifying one or more external memory handle types.
+    --
+    -- #VUID-VkExternalMemoryTensorCreateInfoARM-handleTypes-parameter#
+    -- @handleTypes@ /must/ be a valid combination of
+    -- 'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits'
+    -- values
+    handleTypes :: ExternalMemoryHandleTypeFlags }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (ExternalMemoryTensorCreateInfoARM)
+#endif
+deriving instance Show ExternalMemoryTensorCreateInfoARM
+
+instance ToCStruct ExternalMemoryTensorCreateInfoARM where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p ExternalMemoryTensorCreateInfoARM{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_EXTERNAL_MEMORY_TENSOR_CREATE_INFO_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr ExternalMemoryHandleTypeFlags)) (handleTypes)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_EXTERNAL_MEMORY_TENSOR_CREATE_INFO_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    f
+
+instance FromCStruct ExternalMemoryTensorCreateInfoARM where
+  peekCStruct p = do
+    handleTypes <- peek @ExternalMemoryHandleTypeFlags ((p `plusPtr` 16 :: Ptr ExternalMemoryHandleTypeFlags))
+    pure $ ExternalMemoryTensorCreateInfoARM
+             handleTypes
+
+instance Storable ExternalMemoryTensorCreateInfoARM where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero ExternalMemoryTensorCreateInfoARM where
+  zero = ExternalMemoryTensorCreateInfoARM
+           zero
+
+
+type TensorCreateFlagsARM = TensorCreateFlagBitsARM
+
+-- | VkTensorCreateFlagBitsARM - Bitmask specifying additional parameters of
+-- a tensor
+--
+-- = Description
+--
+-- -   'TENSOR_CREATE_MUTABLE_FORMAT_BIT_ARM' specifies that the tensor
+--     /can/ be used to create a 'Vulkan.Extensions.Handles.TensorViewARM'
+--     with a different format from the tensor.
+--
+-- -   'TENSOR_CREATE_PROTECTED_BIT_ARM' specifies that the tensor is a
+--     protected tensor.
+--
+-- -   'TENSOR_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_ARM' specifies
+--     that the tensor /can/ be used with descriptor buffers when capturing
+--     and replaying (e.g. for trace capture and replay), see
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.OpaqueCaptureDescriptorDataCreateInfoEXT'
+--     for more detail.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_tensors VK_ARM_tensors>,
+-- 'TensorCreateFlagsARM'
+newtype TensorCreateFlagBitsARM = TensorCreateFlagBitsARM Flags64
+  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
+
+-- No documentation found for Nested "VkTensorCreateFlagBitsARM" "VK_TENSOR_CREATE_MUTABLE_FORMAT_BIT_ARM"
+pattern TENSOR_CREATE_MUTABLE_FORMAT_BIT_ARM = TensorCreateFlagBitsARM 0x0000000000000001
+
+-- No documentation found for Nested "VkTensorCreateFlagBitsARM" "VK_TENSOR_CREATE_PROTECTED_BIT_ARM"
+pattern TENSOR_CREATE_PROTECTED_BIT_ARM = TensorCreateFlagBitsARM 0x0000000000000002
+
+-- No documentation found for Nested "VkTensorCreateFlagBitsARM" "VK_TENSOR_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_ARM"
+pattern TENSOR_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_ARM = TensorCreateFlagBitsARM 0x0000000000000004
+
+-- No documentation found for Nested "VkTensorCreateFlagBitsARM" "VK_TENSOR_CREATE_DESCRIPTOR_HEAP_CAPTURE_REPLAY_BIT_ARM"
+pattern TENSOR_CREATE_DESCRIPTOR_HEAP_CAPTURE_REPLAY_BIT_ARM = TensorCreateFlagBitsARM 0x0000000000000008
+
+conNameTensorCreateFlagBitsARM :: String
+conNameTensorCreateFlagBitsARM = "TensorCreateFlagBitsARM"
+
+enumPrefixTensorCreateFlagBitsARM :: String
+enumPrefixTensorCreateFlagBitsARM = "TENSOR_CREATE_"
+
+showTableTensorCreateFlagBitsARM :: [(TensorCreateFlagBitsARM, String)]
+showTableTensorCreateFlagBitsARM =
+  [
+    ( TENSOR_CREATE_MUTABLE_FORMAT_BIT_ARM
+    , "MUTABLE_FORMAT_BIT_ARM"
+    )
+  ,
+    ( TENSOR_CREATE_PROTECTED_BIT_ARM
+    , "PROTECTED_BIT_ARM"
+    )
+  ,
+    ( TENSOR_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_ARM
+    , "DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_ARM"
+    )
+  ,
+    ( TENSOR_CREATE_DESCRIPTOR_HEAP_CAPTURE_REPLAY_BIT_ARM
+    , "DESCRIPTOR_HEAP_CAPTURE_REPLAY_BIT_ARM"
+    )
+  ]
+
+instance Show TensorCreateFlagBitsARM where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixTensorCreateFlagBitsARM
+      showTableTensorCreateFlagBitsARM
+      conNameTensorCreateFlagBitsARM
+      (\(TensorCreateFlagBitsARM x) -> x)
+      (\x -> showString "0x" . showHex x)
+
+instance Read TensorCreateFlagBitsARM where
+  readPrec =
+    enumReadPrec
+      enumPrefixTensorCreateFlagBitsARM
+      showTableTensorCreateFlagBitsARM
+      conNameTensorCreateFlagBitsARM
+      TensorCreateFlagBitsARM
+
+type TensorUsageFlagsARM = TensorUsageFlagBitsARM
+
+-- | VkTensorUsageFlagBitsARM - Bitmask specifying allowed usage of a tensor
+--
+-- = Description
+--
+-- -   'TENSOR_USAGE_SHADER_BIT_ARM' specifies that the tensor /can/ be
+--     used to create a 'Vulkan.Extensions.Handles.TensorViewARM' suitable
+--     for occupying a 'Vulkan.Core10.Handles.DescriptorSet' slot of type
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     accessed by shader stages.
+--
+-- -   'TENSOR_USAGE_TRANSFER_SRC_BIT_ARM' specifies that the tensor /can/
+--     be used as the source of a /transfer command/ (see the definition of
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-pipeline-stages-transfer >).
+--
+-- -   'TENSOR_USAGE_TRANSFER_DST_BIT_ARM' specifies that the tensor /can/
+--     be used as the destination of a transfer command.
+--
+-- -   'TENSOR_USAGE_IMAGE_ALIASING_BIT_ARM' specifies that the tensor
+--     /can/ be bound to a range of memory aliased with an image created
+--     with 'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL'. See
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-memory-aliasing>
+--     for a complete set of rules for tensor\/image aliasing.
+--
+-- -   'TENSOR_USAGE_DATA_GRAPH_BIT_ARM' specifies that the tensor /can/ be
+--     used to create a 'Vulkan.Extensions.Handles.TensorViewARM' suitable
+--     for occupying a 'Vulkan.Core10.Handles.DescriptorSet' slot of type
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     accessed by
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#graphs-pipelines data graph pipelines>.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_tensors VK_ARM_tensors>,
+-- 'TensorUsageFlagsARM'
+newtype TensorUsageFlagBitsARM = TensorUsageFlagBitsARM Flags64
+  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
+
+-- No documentation found for Nested "VkTensorUsageFlagBitsARM" "VK_TENSOR_USAGE_SHADER_BIT_ARM"
+pattern TENSOR_USAGE_SHADER_BIT_ARM = TensorUsageFlagBitsARM 0x0000000000000002
+
+-- No documentation found for Nested "VkTensorUsageFlagBitsARM" "VK_TENSOR_USAGE_TRANSFER_SRC_BIT_ARM"
+pattern TENSOR_USAGE_TRANSFER_SRC_BIT_ARM = TensorUsageFlagBitsARM 0x0000000000000004
+
+-- No documentation found for Nested "VkTensorUsageFlagBitsARM" "VK_TENSOR_USAGE_TRANSFER_DST_BIT_ARM"
+pattern TENSOR_USAGE_TRANSFER_DST_BIT_ARM = TensorUsageFlagBitsARM 0x0000000000000008
+
+-- No documentation found for Nested "VkTensorUsageFlagBitsARM" "VK_TENSOR_USAGE_IMAGE_ALIASING_BIT_ARM"
+pattern TENSOR_USAGE_IMAGE_ALIASING_BIT_ARM = TensorUsageFlagBitsARM 0x0000000000000010
+
+-- No documentation found for Nested "VkTensorUsageFlagBitsARM" "VK_TENSOR_USAGE_DATA_GRAPH_BIT_ARM"
+pattern TENSOR_USAGE_DATA_GRAPH_BIT_ARM = TensorUsageFlagBitsARM 0x0000000000000020
+
+conNameTensorUsageFlagBitsARM :: String
+conNameTensorUsageFlagBitsARM = "TensorUsageFlagBitsARM"
+
+enumPrefixTensorUsageFlagBitsARM :: String
+enumPrefixTensorUsageFlagBitsARM = "TENSOR_USAGE_"
+
+showTableTensorUsageFlagBitsARM :: [(TensorUsageFlagBitsARM, String)]
+showTableTensorUsageFlagBitsARM =
+  [
+    ( TENSOR_USAGE_SHADER_BIT_ARM
+    , "SHADER_BIT_ARM"
+    )
+  ,
+    ( TENSOR_USAGE_TRANSFER_SRC_BIT_ARM
+    , "TRANSFER_SRC_BIT_ARM"
+    )
+  ,
+    ( TENSOR_USAGE_TRANSFER_DST_BIT_ARM
+    , "TRANSFER_DST_BIT_ARM"
+    )
+  ,
+    ( TENSOR_USAGE_IMAGE_ALIASING_BIT_ARM
+    , "IMAGE_ALIASING_BIT_ARM"
+    )
+  ,
+    ( TENSOR_USAGE_DATA_GRAPH_BIT_ARM
+    , "DATA_GRAPH_BIT_ARM"
+    )
+  ]
+
+instance Show TensorUsageFlagBitsARM where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixTensorUsageFlagBitsARM
+      showTableTensorUsageFlagBitsARM
+      conNameTensorUsageFlagBitsARM
+      (\(TensorUsageFlagBitsARM x) -> x)
+      (\x -> showString "0x" . showHex x)
+
+instance Read TensorUsageFlagBitsARM where
+  readPrec =
+    enumReadPrec
+      enumPrefixTensorUsageFlagBitsARM
+      showTableTensorUsageFlagBitsARM
+      conNameTensorUsageFlagBitsARM
+      TensorUsageFlagBitsARM
+
+-- | VkTensorTilingARM - Specifies the tiling arrangement of data in an
+-- tensor
+--
+-- = Description
+--
+-- -   'TENSOR_TILING_OPTIMAL_ARM' specifies optimal tiling (elements are
+--     laid out in an implementation-dependent arrangement, for more
+--     efficient memory access).
+--
+-- -   'TENSOR_TILING_LINEAR_ARM' specifies linear tiling (elements are
+--     laid out linearly and the offset between each element is determined
+--     by the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-tensor-description-strides strides>
+--     of the tensor).
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_tensors VK_ARM_tensors>,
+-- 'TensorDescriptionARM'
+newtype TensorTilingARM = TensorTilingARM Int32
+  deriving newtype (Eq, Ord, Storable, Zero)
+
+-- No documentation found for Nested "VkTensorTilingARM" "VK_TENSOR_TILING_OPTIMAL_ARM"
+pattern TENSOR_TILING_OPTIMAL_ARM = TensorTilingARM 0
+
+-- No documentation found for Nested "VkTensorTilingARM" "VK_TENSOR_TILING_LINEAR_ARM"
+pattern TENSOR_TILING_LINEAR_ARM = TensorTilingARM 1
+
+{-# COMPLETE
+  TENSOR_TILING_OPTIMAL_ARM
+  , TENSOR_TILING_LINEAR_ARM ::
+    TensorTilingARM
+  #-}
+
+conNameTensorTilingARM :: String
+conNameTensorTilingARM = "TensorTilingARM"
+
+enumPrefixTensorTilingARM :: String
+enumPrefixTensorTilingARM = "TENSOR_TILING_"
+
+showTableTensorTilingARM :: [(TensorTilingARM, String)]
+showTableTensorTilingARM =
+  [ (TENSOR_TILING_OPTIMAL_ARM, "OPTIMAL_ARM")
+  , (TENSOR_TILING_LINEAR_ARM, "LINEAR_ARM")
+  ]
+
+instance Show TensorTilingARM where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixTensorTilingARM
+      showTableTensorTilingARM
+      conNameTensorTilingARM
+      (\(TensorTilingARM x) -> x)
+      (showsPrec 11)
+
+instance Read TensorTilingARM where
+  readPrec =
+    enumReadPrec
+      enumPrefixTensorTilingARM
+      showTableTensorTilingARM
+      conNameTensorTilingARM
+      TensorTilingARM
+
+type TensorViewCreateFlagsARM = TensorViewCreateFlagBitsARM
+
+-- | VkTensorViewCreateFlagBitsARM - Bitmask specifying additional parameters
+-- of an tensor view
+--
+-- = Description
+--
+-- -   'TENSOR_VIEW_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_ARM'
+--     specifies that the tensor view /can/ be used with descriptor buffers
+--     when capturing and replaying (e.g. for trace capture and replay),
+--     see
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.OpaqueCaptureDescriptorDataCreateInfoEXT'
+--     for more detail.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_tensors VK_ARM_tensors>,
+-- 'TensorViewCreateFlagsARM'
+newtype TensorViewCreateFlagBitsARM = TensorViewCreateFlagBitsARM Flags64
+  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
+
+-- No documentation found for Nested "VkTensorViewCreateFlagBitsARM" "VK_TENSOR_VIEW_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_ARM"
+pattern TENSOR_VIEW_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_ARM = TensorViewCreateFlagBitsARM 0x0000000000000001
+
+conNameTensorViewCreateFlagBitsARM :: String
+conNameTensorViewCreateFlagBitsARM = "TensorViewCreateFlagBitsARM"
+
+enumPrefixTensorViewCreateFlagBitsARM :: String
+enumPrefixTensorViewCreateFlagBitsARM = "TENSOR_VIEW_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_ARM"
+
+showTableTensorViewCreateFlagBitsARM :: [(TensorViewCreateFlagBitsARM, String)]
+showTableTensorViewCreateFlagBitsARM =
+  [
+    ( TENSOR_VIEW_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_ARM
+    , ""
+    )
+  ]
+
+instance Show TensorViewCreateFlagBitsARM where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixTensorViewCreateFlagBitsARM
+      showTableTensorViewCreateFlagBitsARM
+      conNameTensorViewCreateFlagBitsARM
+      (\(TensorViewCreateFlagBitsARM x) -> x)
+      (\x -> showString "0x" . showHex x)
+
+instance Read TensorViewCreateFlagBitsARM where
+  readPrec =
+    enumReadPrec
+      enumPrefixTensorViewCreateFlagBitsARM
+      showTableTensorViewCreateFlagBitsARM
+      conNameTensorViewCreateFlagBitsARM
+      TensorViewCreateFlagBitsARM
+
+type ARM_TENSORS_SPEC_VERSION = 2
+
+-- No documentation found for TopLevel "VK_ARM_TENSORS_SPEC_VERSION"
+pattern ARM_TENSORS_SPEC_VERSION :: forall a . Integral a => a
+pattern ARM_TENSORS_SPEC_VERSION = 2
+
+
+type ARM_TENSORS_EXTENSION_NAME = "VK_ARM_tensors"
+
+-- No documentation found for TopLevel "VK_ARM_TENSORS_EXTENSION_NAME"
+pattern ARM_TENSORS_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern ARM_TENSORS_EXTENSION_NAME = "VK_ARM_tensors"
+
diff --git a/src/Vulkan/Extensions/VK_ARM_tensors.hs-boot b/src/Vulkan/Extensions/VK_ARM_tensors.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_ARM_tensors.hs-boot
@@ -0,0 +1,665 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_ARM_tensors - device extension
+--
+-- = VK_ARM_tensors
+--
+-- [__Name String__]
+--     @VK_ARM_tensors@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     461
+--
+-- [__Revision__]
+--     2
+--
+-- [__Ratification Status__]
+--     Not ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3 Vulkan Version 1.3>
+--
+-- [__API Interactions__]
+--
+--     -   Interacts with VK_EXT_descriptor_buffer
+--
+--     -   Interacts with VK_EXT_frame_boundary
+--
+--     -   Interacts with VK_EXT_shader_float8
+--
+--     -   Interacts with VK_KHR_shader_bfloat16
+--
+-- [__SPIR-V Dependencies__]
+--
+--     -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/ARM/SPV_ARM_tensors.html SPV_ARM_tensors>
+--
+-- [__Contact__]
+--
+--     -   Kevin Petit
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_ARM_tensors] @kpet%0A*Here describe the issue or question you have about the VK_ARM_tensors extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_ARM_tensors.adoc VK_ARM_tensors>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2026-01-07
+--
+-- [__Interactions and External Dependencies__]
+--
+--     -   This extension requires
+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/ARM/SPV_ARM_tensors.html SPV_ARM_tensors>
+--
+--     -   This extension provides API support for
+--         <https://github.com/KhronosGroup/GLSL/blob/main/extensions/arm/GL_ARM_tensors.txt GL_ARM_tensors>
+--
+--     -   This extension interacts with @VK_EXT_mutable_descriptor_type@
+--
+--     -   This extension interacts with @VK_EXT_descriptor_buffer@
+--
+--     -   This extension interacts with @VK_EXT_frame_boundary@
+--
+--     -   This extension interacts with @VK_EXT_robustness2@
+--
+--     -   This extension interacts with @VK_KHR_unified_image_layouts@
+--
+--     -   This extension interacts with @VK_KHR_shader_bfloat16@
+--
+--     -   This extension interacts with @VK_EXT_shader_float8@
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Contributors__]
+--
+--     -   Kévin Petit, Arm Ltd.
+--
+--     -   Einar Hov, Arm Ltd.
+--
+--     -   Dominic Symes, Arm Ltd.
+--
+--     -   Jan-Harald Fredriksen, Arm Ltd.
+--
+--     -   Marco Cattani, Arm Ltd.
+--
+--     -   Lisa Wu, Arm Ltd.
+--
+--     -   Robert Hughes, Arm Ltd.
+--
+--     -   David Garbett, Arm Ltd.
+--
+--     -   Oualid Khelifi, Arm Ltd.
+--
+-- == Description
+--
+-- This extension adds support for tensors.
+--
+-- == New Object Types
+--
+-- -   'Vulkan.Extensions.Handles.TensorARM'
+--
+-- -   'Vulkan.Extensions.Handles.TensorViewARM'
+--
+-- == New Commands
+--
+-- -   'bindTensorMemoryARM'
+--
+-- -   'cmdCopyTensorARM'
+--
+-- -   'createTensorARM'
+--
+-- -   'createTensorViewARM'
+--
+-- -   'destroyTensorARM'
+--
+-- -   'destroyTensorViewARM'
+--
+-- -   'getDeviceTensorMemoryRequirementsARM'
+--
+-- -   'getPhysicalDeviceExternalTensorPropertiesARM'
+--
+-- -   'getTensorMemoryRequirementsARM'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_buffer VK_EXT_descriptor_buffer>
+-- is supported:
+--
+-- -   'getTensorOpaqueCaptureDescriptorDataARM'
+--
+-- -   'getTensorViewOpaqueCaptureDescriptorDataARM'
+--
+-- == New Structures
+--
+-- -   'BindTensorMemoryInfoARM'
+--
+-- -   'CopyTensorInfoARM'
+--
+-- -   'DeviceTensorMemoryRequirementsARM'
+--
+-- -   'ExternalTensorPropertiesARM'
+--
+-- -   'PhysicalDeviceExternalTensorInfoARM'
+--
+-- -   'TensorCopyARM'
+--
+-- -   'TensorCreateInfoARM'
+--
+-- -   'TensorMemoryRequirementsInfoARM'
+--
+-- -   'TensorViewCreateInfoARM'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_ARM_data_graph.DataGraphPipelineResourceInfoARM',
+--     'Vulkan.Extensions.VK_ARM_data_graph.DataGraphPipelineConstantARM':
+--
+--     -   'TensorDescriptionARM'
+--
+-- -   Extending
+--     'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.DependencyInfo':
+--
+--     -   'TensorDependencyInfoARM'
+--
+--     -   'TensorMemoryBarrierARM'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.FormatProperties2':
+--
+--     -   'TensorFormatPropertiesARM'
+--
+-- -   Extending 'Vulkan.Core10.Memory.MemoryAllocateInfo':
+--
+--     -   'MemoryDedicatedAllocateInfoTensorARM'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceTensorFeaturesARM'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDeviceTensorPropertiesARM'
+--
+-- -   Extending 'TensorCreateInfoARM':
+--
+--     -   'ExternalMemoryTensorCreateInfoARM'
+--
+-- -   Extending 'Vulkan.Core10.DescriptorSet.WriteDescriptorSet':
+--
+--     -   'WriteDescriptorSetTensorARM'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_buffer VK_EXT_descriptor_buffer>
+-- is supported:
+--
+-- -   'TensorCaptureDescriptorDataInfoARM'
+--
+-- -   'TensorViewCaptureDescriptorDataInfoARM'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.DescriptorGetInfoEXT':
+--
+--     -   'DescriptorGetTensorInfoARM'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceDescriptorBufferTensorFeaturesARM'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDeviceDescriptorBufferTensorPropertiesARM'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_frame_boundary VK_EXT_frame_boundary>
+-- is supported:
+--
+-- -   Extending 'Vulkan.Core10.Queue.SubmitInfo',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.SubmitInfo2',
+--     'Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR',
+--     'Vulkan.Core10.SparseResourceMemoryManagement.BindSparseInfo':
+--
+--     -   'FrameBoundaryTensorsARM'
+--
+-- == New Enums
+--
+-- -   'TensorCreateFlagBitsARM'
+--
+-- -   'TensorTilingARM'
+--
+-- -   'TensorUsageFlagBitsARM'
+--
+-- -   'TensorViewCreateFlagBitsARM'
+--
+-- == New Bitmasks
+--
+-- -   'TensorCreateFlagsARM'
+--
+-- -   'TensorUsageFlagsARM'
+--
+-- -   'TensorViewCreateFlagsARM'
+--
+-- == New Enum Constants
+--
+-- -   'ARM_TENSORS_EXTENSION_NAME'
+--
+-- -   'ARM_TENSORS_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.DescriptorType.DescriptorType':
+--
+--     -   'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--
+-- -   Extending 'Vulkan.Core10.Enums.Format.Format':
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_R8_BOOL_ARM'
+--
+-- -   Extending
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FormatFeatureFlagBits2':
+--
+--     -   'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_TENSOR_IMAGE_ALIASING_BIT_ARM'
+--
+--     -   'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_TENSOR_SHADER_BIT_ARM'
+--
+-- -   Extending 'Vulkan.Core10.Enums.ImageLayout.ImageLayout':
+--
+--     -   'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TENSOR_ALIASING_ARM'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlagBits':
+--
+--     -   'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TENSOR_ALIASING_BIT_ARM'
+--
+-- -   Extending 'Vulkan.Core10.Enums.ObjectType.ObjectType':
+--
+--     -   'Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_TENSOR_ARM'
+--
+--     -   'Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_TENSOR_VIEW_ARM'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BIND_TENSOR_MEMORY_INFO_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_TENSOR_INFO_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEVICE_TENSOR_MEMORY_REQUIREMENTS_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_EXTERNAL_MEMORY_TENSOR_CREATE_INFO_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_EXTERNAL_TENSOR_PROPERTIES_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_TENSOR_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_TENSOR_INFO_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_TENSOR_FEATURES_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_TENSOR_PROPERTIES_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_TENSOR_COPY_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_TENSOR_CREATE_INFO_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_TENSOR_DEPENDENCY_INFO_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_TENSOR_DESCRIPTION_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_TENSOR_FORMAT_PROPERTIES_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_TENSOR_MEMORY_BARRIER_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_TENSOR_MEMORY_REQUIREMENTS_INFO_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_TENSOR_VIEW_CREATE_INFO_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_TENSOR_ARM'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_buffer VK_EXT_descriptor_buffer>
+-- is supported:
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DESCRIPTOR_GET_TENSOR_INFO_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_FEATURES_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_PROPERTIES_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_TENSOR_CAPTURE_DESCRIPTOR_DATA_INFO_ARM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_TENSOR_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_ARM'
+--
+-- -   Extending 'TensorCreateFlagBitsARM':
+--
+--     -   'TENSOR_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_ARM'
+--
+-- -   Extending 'TensorViewCreateFlagBitsARM':
+--
+--     -   'TENSOR_VIEW_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_ARM'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_frame_boundary VK_EXT_frame_boundary>
+-- is supported:
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_FRAME_BOUNDARY_TENSORS_ARM'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_shader_float8 VK_EXT_shader_float8>
+-- is supported:
+--
+-- -   Extending 'Vulkan.Core10.Enums.Format.Format':
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_R8_SFLOAT_FPENCODING_FLOAT8E4M3_ARM'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_R8_SFLOAT_FPENCODING_FLOAT8E5M2_ARM'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_shader_bfloat16 VK_KHR_shader_bfloat16>
+-- is supported:
+--
+-- -   Extending 'Vulkan.Core10.Enums.Format.Format':
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_R16_SFLOAT_FPENCODING_BFLOAT16_ARM'
+--
+-- == New SPIR-V Capabilities
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-TensorsARM TensorsARM>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-StorageTensorArrayDynamicIndexingARM StorageTensorArrayDynamicIndexingARM>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-StorageTensorArrayNonUniformIndexingARM StorageTensorArrayNonUniformIndexingARM>
+--
+-- == Issues
+--
+-- 1) Should tensor strides be passed in elements or in bytes?
+--
+-- __RESOLVED__: Strides are passed in bytes but are required to be a
+-- multiple of the tensor element size. Passing strides in bytes makes it
+-- possible to relax this requirement in the future without an interface
+-- change. It also makes it easier to describe memory alignment
+-- requirements.
+--
+-- 2) Should there be commands to copy data between tensors and
+-- buffers\/images?
+--
+-- __RESOLVED__: Adding these commands would result in a rather large API
+-- surface and not insignificant implementation and validation cost. The
+-- same outcome can be achieved with memory aliasing and tensor to tensor
+-- copy operations.
+--
+-- 3) Should this extension define transpose and\/or other data
+-- reorganization operations?
+--
+-- __RESOLVED__: These operations are useful to expose but this extension
+-- is only meant to add base support for tensors. Additional operations
+-- should be layered on top and defined in other extensions.
+--
+-- 4) Why are tensor strides described using signed integers?
+--
+-- __RESOLVED__: Negative strides make it possible to describe different
+-- linear data layouts. While this extension does not allow negative
+-- strides, it uses signed integers for strides to make it possible to
+-- relax this limitation in future extensions.
+--
+-- == Version History
+--
+-- -   Revision 2, 2026-01-07 (Kévin Petit)
+--
+--     -   Add interactions with VK_KHR_unified_image_layouts,
+--         VK_KHR_shader_bfloat16, and VK_EXT_shader_float8
+--
+-- -   Revision 1, 2025-06-03 (Kévin Petit)
+--
+--     -   Initial revision
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_ARM_tensors Vulkan Specification>.
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_ARM_tensors  ( BindTensorMemoryInfoARM
+                                         , CopyTensorInfoARM
+                                         , DescriptorGetTensorInfoARM
+                                         , DeviceTensorMemoryRequirementsARM
+                                         , ExternalMemoryTensorCreateInfoARM
+                                         , ExternalTensorPropertiesARM
+                                         , FrameBoundaryTensorsARM
+                                         , MemoryDedicatedAllocateInfoTensorARM
+                                         , PhysicalDeviceDescriptorBufferTensorFeaturesARM
+                                         , PhysicalDeviceDescriptorBufferTensorPropertiesARM
+                                         , PhysicalDeviceExternalTensorInfoARM
+                                         , PhysicalDeviceTensorFeaturesARM
+                                         , PhysicalDeviceTensorPropertiesARM
+                                         , TensorCaptureDescriptorDataInfoARM
+                                         , TensorCopyARM
+                                         , TensorCreateInfoARM
+                                         , TensorDependencyInfoARM
+                                         , TensorDescriptionARM
+                                         , TensorFormatPropertiesARM
+                                         , TensorMemoryBarrierARM
+                                         , TensorMemoryRequirementsInfoARM
+                                         , TensorViewCaptureDescriptorDataInfoARM
+                                         , TensorViewCreateInfoARM
+                                         , WriteDescriptorSetTensorARM
+                                         ) 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 BindTensorMemoryInfoARM
+
+instance ToCStruct BindTensorMemoryInfoARM
+instance Show BindTensorMemoryInfoARM
+
+instance FromCStruct BindTensorMemoryInfoARM
+
+
+data CopyTensorInfoARM
+
+instance ToCStruct CopyTensorInfoARM
+instance Show CopyTensorInfoARM
+
+instance FromCStruct CopyTensorInfoARM
+
+
+data DescriptorGetTensorInfoARM
+
+instance ToCStruct DescriptorGetTensorInfoARM
+instance Show DescriptorGetTensorInfoARM
+
+instance FromCStruct DescriptorGetTensorInfoARM
+
+
+data DeviceTensorMemoryRequirementsARM
+
+instance ToCStruct DeviceTensorMemoryRequirementsARM
+instance Show DeviceTensorMemoryRequirementsARM
+
+instance FromCStruct DeviceTensorMemoryRequirementsARM
+
+
+data ExternalMemoryTensorCreateInfoARM
+
+instance ToCStruct ExternalMemoryTensorCreateInfoARM
+instance Show ExternalMemoryTensorCreateInfoARM
+
+instance FromCStruct ExternalMemoryTensorCreateInfoARM
+
+
+data ExternalTensorPropertiesARM
+
+instance ToCStruct ExternalTensorPropertiesARM
+instance Show ExternalTensorPropertiesARM
+
+instance FromCStruct ExternalTensorPropertiesARM
+
+
+data FrameBoundaryTensorsARM
+
+instance ToCStruct FrameBoundaryTensorsARM
+instance Show FrameBoundaryTensorsARM
+
+instance FromCStruct FrameBoundaryTensorsARM
+
+
+data MemoryDedicatedAllocateInfoTensorARM
+
+instance ToCStruct MemoryDedicatedAllocateInfoTensorARM
+instance Show MemoryDedicatedAllocateInfoTensorARM
+
+instance FromCStruct MemoryDedicatedAllocateInfoTensorARM
+
+
+data PhysicalDeviceDescriptorBufferTensorFeaturesARM
+
+instance ToCStruct PhysicalDeviceDescriptorBufferTensorFeaturesARM
+instance Show PhysicalDeviceDescriptorBufferTensorFeaturesARM
+
+instance FromCStruct PhysicalDeviceDescriptorBufferTensorFeaturesARM
+
+
+data PhysicalDeviceDescriptorBufferTensorPropertiesARM
+
+instance ToCStruct PhysicalDeviceDescriptorBufferTensorPropertiesARM
+instance Show PhysicalDeviceDescriptorBufferTensorPropertiesARM
+
+instance FromCStruct PhysicalDeviceDescriptorBufferTensorPropertiesARM
+
+
+data PhysicalDeviceExternalTensorInfoARM
+
+instance ToCStruct PhysicalDeviceExternalTensorInfoARM
+instance Show PhysicalDeviceExternalTensorInfoARM
+
+instance FromCStruct PhysicalDeviceExternalTensorInfoARM
+
+
+data PhysicalDeviceTensorFeaturesARM
+
+instance ToCStruct PhysicalDeviceTensorFeaturesARM
+instance Show PhysicalDeviceTensorFeaturesARM
+
+instance FromCStruct PhysicalDeviceTensorFeaturesARM
+
+
+data PhysicalDeviceTensorPropertiesARM
+
+instance ToCStruct PhysicalDeviceTensorPropertiesARM
+instance Show PhysicalDeviceTensorPropertiesARM
+
+instance FromCStruct PhysicalDeviceTensorPropertiesARM
+
+
+data TensorCaptureDescriptorDataInfoARM
+
+instance ToCStruct TensorCaptureDescriptorDataInfoARM
+instance Show TensorCaptureDescriptorDataInfoARM
+
+instance FromCStruct TensorCaptureDescriptorDataInfoARM
+
+
+data TensorCopyARM
+
+instance ToCStruct TensorCopyARM
+instance Show TensorCopyARM
+
+instance FromCStruct TensorCopyARM
+
+
+type role TensorCreateInfoARM nominal
+data TensorCreateInfoARM (es :: [Type])
+
+instance ( Extendss TensorCreateInfoARM es
+         , PokeChain es ) => ToCStruct (TensorCreateInfoARM es)
+instance Show (Chain es) => Show (TensorCreateInfoARM es)
+
+instance ( Extendss TensorCreateInfoARM es
+         , PeekChain es ) => FromCStruct (TensorCreateInfoARM es)
+
+
+data TensorDependencyInfoARM
+
+instance ToCStruct TensorDependencyInfoARM
+instance Show TensorDependencyInfoARM
+
+instance FromCStruct TensorDependencyInfoARM
+
+
+data TensorDescriptionARM
+
+instance ToCStruct TensorDescriptionARM
+instance Show TensorDescriptionARM
+
+instance FromCStruct TensorDescriptionARM
+
+
+data TensorFormatPropertiesARM
+
+instance ToCStruct TensorFormatPropertiesARM
+instance Show TensorFormatPropertiesARM
+
+instance FromCStruct TensorFormatPropertiesARM
+
+
+data TensorMemoryBarrierARM
+
+instance ToCStruct TensorMemoryBarrierARM
+instance Show TensorMemoryBarrierARM
+
+instance FromCStruct TensorMemoryBarrierARM
+
+
+data TensorMemoryRequirementsInfoARM
+
+instance ToCStruct TensorMemoryRequirementsInfoARM
+instance Show TensorMemoryRequirementsInfoARM
+
+instance FromCStruct TensorMemoryRequirementsInfoARM
+
+
+data TensorViewCaptureDescriptorDataInfoARM
+
+instance ToCStruct TensorViewCaptureDescriptorDataInfoARM
+instance Show TensorViewCaptureDescriptorDataInfoARM
+
+instance FromCStruct TensorViewCaptureDescriptorDataInfoARM
+
+
+type role TensorViewCreateInfoARM nominal
+data TensorViewCreateInfoARM (es :: [Type])
+
+instance ( Extendss TensorViewCreateInfoARM es
+         , PokeChain es ) => ToCStruct (TensorViewCreateInfoARM es)
+instance Show (Chain es) => Show (TensorViewCreateInfoARM es)
+
+instance ( Extendss TensorViewCreateInfoARM es
+         , PeekChain es ) => FromCStruct (TensorViewCreateInfoARM es)
+
+
+data WriteDescriptorSetTensorARM
+
+instance ToCStruct WriteDescriptorSetTensorARM
+instance Show WriteDescriptorSetTensorARM
+
+instance FromCStruct WriteDescriptorSetTensorARM
+
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
@@ -89,13 +89,12 @@
 --
 -- == 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.
+-- 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
 --
@@ -110,7 +109,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_4444_formats Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -170,11 +169,21 @@
 -- structure passed to
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
 -- it is filled in to indicate whether each corresponding feature is
--- supported. 'PhysicalDevice4444FormatsFeaturesEXT' /can/ also be used in
--- the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDevice4444FormatsFeaturesEXT', it /must/ add an instance of the
+-- structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
 --
 -- Although the formats defined by the @VK_EXT_4444_formats@ extension were
 -- promoted to Vulkan 1.3 as optional formats, the
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
@@ -89,13 +89,12 @@
 --
 -- == 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.
+-- 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
 --
@@ -110,7 +109,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_4444_formats Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -18,7 +18,7 @@
 --     1
 --
 -- [__Ratification Status__]
---     Not ratified
+--     Ratified
 --
 -- [__Extension and Version Dependencies__]
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_direct_mode_display VK_EXT_direct_mode_display>
@@ -75,7 +75,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_acquire_drm_display Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -139,7 +139,7 @@
 -- display is either released or the connector is unplugged. The provided
 -- @drmFd@ /must/ correspond to the one owned by the @physicalDevice@. If
 -- not, the error code 'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN' /must/ be
--- returned. The DRM FD must have DRM master permissions. If any error is
+-- returned. The DRM FD must have DRM mast⁠er permissions. If any error is
 -- encountered during the acquisition of the display, the call /must/
 -- return the error code
 -- 'Vulkan.Core10.Enums.Result.ERROR_INITIALIZATION_FAILED'.
@@ -157,6 +157,10 @@
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_INITIALIZATION_FAILED'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_acquire_drm_display VK_EXT_acquire_drm_display>,
@@ -209,7 +213,7 @@
 -- /must/ be 'Vulkan.Core10.APIConstants.NULL_HANDLE'. The provided @drmFd@
 -- /must/ correspond to the one owned by the @physicalDevice@. If not, the
 -- error code 'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN' /must/ be
--- returned. Master permissions are not required, because the file
+-- returned. Mast⁠er permissions are not required, because the file
 -- descriptor is just used for information gathering purposes. The given
 -- @connectorId@ /must/ be a resource owned by the provided @drmFd@. If
 -- not, the error code 'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN' /must/ be
@@ -228,6 +232,10 @@
 --     -   'Vulkan.Core10.Enums.Result.ERROR_INITIALIZATION_FAILED'
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
 --
 -- = See Also
 --
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
@@ -18,7 +18,7 @@
 --     1
 --
 -- [__Ratification Status__]
---     Not ratified
+--     Ratified
 --
 -- [__Extension and Version Dependencies__]
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_direct_mode_display VK_EXT_direct_mode_display>
@@ -108,7 +108,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_acquire_xlib_display Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -193,10 +193,14 @@
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_INITIALIZATION_FAILED'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_INITIALIZATION_FAILED'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_acquire_xlib_display VK_EXT_acquire_xlib_display>,
@@ -260,6 +264,10 @@
 -- [<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_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
 --
 -- = See Also
 --
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
@@ -18,7 +18,7 @@
 --     1
 --
 -- [__Ratification Status__]
---     Not ratified
+--     Ratified
 --
 -- [__Extension and Version Dependencies__]
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_direct_mode_display VK_EXT_direct_mode_display>
@@ -108,7 +108,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_acquire_xlib_display Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -153,7 +153,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_astc_decode_mode Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -201,7 +201,7 @@
 --     'Vulkan.Core10.Enums.Format.FORMAT_E5B9G9R9_UFLOAT_PACK32'
 --
 -- -   #VUID-VkImageViewASTCDecodeModeEXT-decodeMode-02231# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-astc-decodeModeSharedExponent decodeModeSharedExponent>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-astc-decodeModeSharedExponent decodeModeSharedExponent>
 --     feature is not enabled, @decodeMode@ /must/ not be
 --     'Vulkan.Core10.Enums.Format.FORMAT_E5B9G9R9_UFLOAT_PACK32'
 --
@@ -211,7 +211,7 @@
 --
 -- -   #VUID-VkImageViewASTCDecodeModeEXT-format-04084# @format@ of the
 --     image view /must/ be one of the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#appendix-compressedtex-astc ASTC Compressed Image Formats>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#appendix-compressedtex-astc ASTC Compressed Image Formats>
 --
 -- If @format@ uses sRGB encoding then the @decodeMode@ has no effect.
 --
@@ -224,6 +224,12 @@
 --     @decodeMode@ /must/ be a valid 'Vulkan.Core10.Enums.Format.Format'
 --     value
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.ImageView.ImageViewCreateInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_astc_decode_mode VK_EXT_astc_decode_mode>,
@@ -286,11 +292,21 @@
 -- structure passed to
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
 -- it is filled in to indicate whether each corresponding feature is
--- supported. 'PhysicalDeviceASTCDecodeFeaturesEXT' /can/ also be used in
--- the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceASTCDecodeFeaturesEXT', it /must/ add an instance of the
+-- structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
 --
 -- = See Also
 --
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
@@ -153,7 +153,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_astc_decode_mode Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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_attachment_feedback_loop_dynamic_state.hs b/src/Vulkan/Extensions/VK_EXT_attachment_feedback_loop_dynamic_state.hs
--- a/src/Vulkan/Extensions/VK_EXT_attachment_feedback_loop_dynamic_state.hs
+++ b/src/Vulkan/Extensions/VK_EXT_attachment_feedback_loop_dynamic_state.hs
@@ -107,7 +107,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_attachment_feedback_loop_dynamic_state Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_attachment_feedback_loop_dynamic_state Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -173,13 +173,13 @@
 -- For attachments that are written to in a render pass, only attachments
 -- with the aspects specified in @aspectMask@ /can/ be accessed as
 -- non-attachments by subsequent
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#drawing drawing commands>.
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#drawing drawing commands>.
 --
 -- == Valid Usage
 --
 -- -   #VUID-vkCmdSetAttachmentFeedbackLoopEnableEXT-attachmentFeedbackLoopDynamicState-08862#
 --     The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-attachmentFeedbackLoopDynamicState attachmentFeedbackLoopDynamicState>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-attachmentFeedbackLoopDynamicState attachmentFeedbackLoopDynamicState>
 --     feature /must/ be enabled
 --
 -- -   #VUID-vkCmdSetAttachmentFeedbackLoopEnableEXT-aspectMask-08863#
@@ -192,7 +192,7 @@
 --
 -- -   #VUID-vkCmdSetAttachmentFeedbackLoopEnableEXT-attachmentFeedbackLoopLayout-08864#
 --     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-attachmentFeedbackLoopLayout attachmentFeedbackLoopLayout>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-attachmentFeedbackLoopLayout attachmentFeedbackLoopLayout>
 --     feature is not enabled, @aspectMask@ /must/ be
 --     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_NONE'
 --
@@ -212,7 +212,8 @@
 --
 -- -   #VUID-vkCmdSetAttachmentFeedbackLoopEnableEXT-commandBuffer-cmdpool#
 --     The 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdSetAttachmentFeedbackLoopEnableEXT-videocoding# This
 --     command /must/ only be called outside of a video coding scope
@@ -231,10 +232,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
 -- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdSetAttachmentFeedbackLoopEnableEXT is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_attachment_feedback_loop_dynamic_state VK_EXT_attachment_feedback_loop_dynamic_state>,
@@ -276,12 +282,21 @@
 -- 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. 'PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT'
--- /can/ also be used in the @pNext@ chain of
--- 'Vulkan.Core10.Device.DeviceCreateInfo' to selectively enable these
--- features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT', it /must/
+-- add an instance of the structure, with the desired feature members set
+-- to 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Extensions/VK_EXT_attachment_feedback_loop_dynamic_state.hs-boot b/src/Vulkan/Extensions/VK_EXT_attachment_feedback_loop_dynamic_state.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_attachment_feedback_loop_dynamic_state.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_attachment_feedback_loop_dynamic_state.hs-boot
@@ -107,7 +107,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_attachment_feedback_loop_dynamic_state Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_attachment_feedback_loop_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_attachment_feedback_loop_layout.hs b/src/Vulkan/Extensions/VK_EXT_attachment_feedback_loop_layout.hs
--- a/src/Vulkan/Extensions/VK_EXT_attachment_feedback_loop_layout.hs
+++ b/src/Vulkan/Extensions/VK_EXT_attachment_feedback_loop_layout.hs
@@ -127,7 +127,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_attachment_feedback_loop_layout Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_attachment_feedback_loop_layout Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -167,8 +167,14 @@
 --
 -- This structure describes the following feature:
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_attachment_feedback_loop_layout VK_EXT_attachment_feedback_loop_layout>,
@@ -178,8 +184,9 @@
   { -- | #features-attachmentFeedbackLoopLayout# @attachmentFeedbackLoopLayout@
     -- indicates whether the implementation supports using
     -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
-    -- image layout for images created with
-    -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT'.
+    -- image layout for images created with the
+    -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT'
+    -- usage flag set.
     attachmentFeedbackLoopLayout :: Bool }
   deriving (Typeable, Eq)
 #if defined(GENERIC_INSTANCES)
diff --git a/src/Vulkan/Extensions/VK_EXT_attachment_feedback_loop_layout.hs-boot b/src/Vulkan/Extensions/VK_EXT_attachment_feedback_loop_layout.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_attachment_feedback_loop_layout.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_attachment_feedback_loop_layout.hs-boot
@@ -127,7 +127,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_attachment_feedback_loop_layout Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_attachment_feedback_loop_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_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
@@ -137,7 +137,7 @@
 --     -   'PhysicalDeviceBlendOperationAdvancedPropertiesEXT'
 --
 -- -   Extending
---     'Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo':
+--     'Vulkan.Core10.GraphicsPipeline.PipelineColorBlendStateCreateInfo':
 --
 --     -   'PipelineColorBlendAdvancedStateCreateInfoEXT'
 --
@@ -278,7 +278,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_blend_operation_advanced Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -343,12 +343,22 @@
 -- structure passed to
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
 -- it is filled in to indicate whether each corresponding feature is
--- supported. 'PhysicalDeviceBlendOperationAdvancedFeaturesEXT' /can/ also
--- be used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo'
--- to selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceBlendOperationAdvancedFeaturesEXT', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_blend_operation_advanced VK_EXT_blend_operation_advanced>,
@@ -357,9 +367,9 @@
 data PhysicalDeviceBlendOperationAdvancedFeaturesEXT = PhysicalDeviceBlendOperationAdvancedFeaturesEXT
   { -- | #features-advancedBlendCoherentOperations#
     -- @advancedBlendCoherentOperations@ specifies whether blending using
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#framebuffer-blend-advanced advanced blend operations>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#framebuffer-blend-advanced advanced blend operations>
     -- is guaranteed to execute atomically and in
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#drawing-primitive-order primitive order>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -421,8 +431,12 @@
 -- it is filled in with each corresponding implementation-dependent
 -- property.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_blend_operation_advanced VK_EXT_blend_operation_advanced>,
@@ -431,9 +445,9 @@
 data PhysicalDeviceBlendOperationAdvancedPropertiesEXT = PhysicalDeviceBlendOperationAdvancedPropertiesEXT
   { -- | #limits-advancedBlendMaxColorAttachments#
     -- @advancedBlendMaxColorAttachments@ is one greater than the highest color
-    -- attachment index that /can/ be used in a subpass, for a pipeline that
-    -- uses an
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#framebuffer-blend-advanced advanced blend operation>.
+    -- attachment index that /can/ be used in a render pass instance, for a
+    -- pipeline that uses an
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#framebuffer-blend-advanced advanced blend operation>.
     advancedBlendMaxColorAttachments :: Word32
   , -- | #limits-advancedBlendIndependentBlend# @advancedBlendIndependentBlend@
     -- specifies whether advanced blend operations /can/ vary per-attachment.
@@ -461,7 +475,7 @@
   , -- | #limits-advancedBlendAllOperations# @advancedBlendAllOperations@
     -- specifies whether all advanced blend operation enums are supported. See
     -- the valid usage of
-    -- 'Vulkan.Core10.Pipeline.PipelineColorBlendAttachmentState'.
+    -- 'Vulkan.Core10.GraphicsPipeline.PipelineColorBlendAttachmentState'.
     advancedBlendAllOperations :: Bool
   }
   deriving (Typeable, Eq)
@@ -541,19 +555,19 @@
 --
 -- -   #VUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-srcPremultiplied-01424#
 --     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-advancedBlendNonPremultipliedSrcColor non-premultiplied source color>
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-advancedBlendNonPremultipliedDstColor non-premultiplied destination color>
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-advancedBlendCorrelatedOverlap correlated overlap>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-advancedBlendCorrelatedOverlap correlated overlap>
 --     property is not supported, @blendOverlap@ /must/ be
 --     'BLEND_OVERLAP_UNCORRELATED_EXT'
 --
@@ -566,6 +580,12 @@
 -- -   #VUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-blendOverlap-parameter#
 --     @blendOverlap@ /must/ be a valid 'BlendOverlapEXT' value
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.GraphicsPipeline.PipelineColorBlendStateCreateInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_blend_operation_advanced VK_EXT_blend_operation_advanced>,
@@ -634,8 +654,15 @@
 --
 -- = Description
 --
--- \'
+-- -   'BLEND_OVERLAP_UNCORRELATED_EXT' specifies that there is no
+--     correlation between the source and destination coverage.
 --
+-- -   'BLEND_OVERLAP_CONJOINT_EXT' specifies that the source and
+--     destination coverage are considered to have maximal overlap.
+--
+-- -   'BLEND_OVERLAP_DISJOINT_EXT' specifies that the source and
+--     destination coverage are considered to have minimal overlap.
+--
 -- +----------------------------------+--------------------------------------------------------------------------------------+
 -- | Overlap Mode                     | Weighting Equations                                                                  |
 -- +==================================+======================================================================================+
@@ -668,16 +695,13 @@
 newtype BlendOverlapEXT = BlendOverlapEXT Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'BLEND_OVERLAP_UNCORRELATED_EXT' specifies that there is no correlation
--- between the source and destination coverage.
+-- No documentation found for Nested "VkBlendOverlapEXT" "VK_BLEND_OVERLAP_UNCORRELATED_EXT"
 pattern BLEND_OVERLAP_UNCORRELATED_EXT = BlendOverlapEXT 0
 
--- | 'BLEND_OVERLAP_DISJOINT_EXT' specifies that the source and destination
--- coverage are considered to have minimal overlap.
+-- No documentation found for Nested "VkBlendOverlapEXT" "VK_BLEND_OVERLAP_DISJOINT_EXT"
 pattern BLEND_OVERLAP_DISJOINT_EXT = BlendOverlapEXT 1
 
--- | 'BLEND_OVERLAP_CONJOINT_EXT' specifies that the source and destination
--- coverage are considered to have maximal overlap.
+-- No documentation found for Nested "VkBlendOverlapEXT" "VK_BLEND_OVERLAP_CONJOINT_EXT"
 pattern BLEND_OVERLAP_CONJOINT_EXT = BlendOverlapEXT 2
 
 {-# COMPLETE
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
@@ -137,7 +137,7 @@
 --     -   'PhysicalDeviceBlendOperationAdvancedPropertiesEXT'
 --
 -- -   Extending
---     'Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo':
+--     'Vulkan.Core10.GraphicsPipeline.PipelineColorBlendStateCreateInfo':
 --
 --     -   'PipelineColorBlendAdvancedStateCreateInfoEXT'
 --
@@ -278,7 +278,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_blend_operation_advanced Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -113,7 +113,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_border_color_swizzle Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -163,7 +163,7 @@
 --
 -- -   #VUID-VkSamplerBorderColorComponentMappingCreateInfoEXT-borderColorSwizzle-06437#
 --     The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-borderColorSwizzle borderColorSwizzle>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-borderColorSwizzle borderColorSwizzle>
 --     feature /must/ be enabled
 --
 -- == Valid Usage (Implicit)
@@ -176,6 +176,12 @@
 --     @components@ /must/ be a valid
 --     'Vulkan.Core10.ImageView.ComponentMapping' structure
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.Sampler.SamplerCreateInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_border_color_swizzle VK_EXT_border_color_swizzle>,
@@ -248,12 +254,22 @@
 -- 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. 'PhysicalDeviceBorderColorSwizzleFeaturesEXT' /can/ also be
--- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceBorderColorSwizzleFeaturesEXT', it /must/ add an instance
+-- of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_border_color_swizzle VK_EXT_border_color_swizzle>,
@@ -268,7 +284,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-views-identity-mappings identity component mapping>,
+    -- non-<https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-image-views-identity-mappings identity component mapping>,
     -- when either @borderColorSwizzleFromImage@ is enabled or the
     -- 'SamplerBorderColorComponentMappingCreateInfoEXT' is specified.
     borderColorSwizzle :: Bool
@@ -280,7 +296,7 @@
     -- is not set, applications /can/ chain a
     -- 'SamplerBorderColorComponentMappingCreateInfoEXT' structure when
     -- creating samplers for use with image views that do not have an
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-views-identity-mappings identity swizzle>
+    -- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -113,7 +113,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_border_color_swizzle Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -135,7 +135,7 @@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-PhysicalStorageBufferAddresses PhysicalStorageBufferAddressesEXT>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-PhysicalStorageBufferAddresses PhysicalStorageBufferAddressesEXT>
 --
 -- == Issues
 --
@@ -166,7 +166,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_buffer_device_address Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -257,9 +257,13 @@
 -- structure passed to
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
 -- it is filled in to indicate whether each corresponding feature is
--- supported. 'PhysicalDeviceBufferDeviceAddressFeaturesEXT' /can/ also be
--- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceBufferDeviceAddressFeaturesEXT', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
 -- The 'PhysicalDeviceBufferDeviceAddressFeaturesEXT' structure has the
 -- same members as the
@@ -271,8 +275,14 @@
 -- time, and the capture and replay mechanism is built around opaque
 -- capture addresses for buffer and memory objects.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_buffer_device_address VK_EXT_buffer_device_address>,
@@ -291,7 +301,7 @@
   , -- | #features-bufferDeviceAddressMultiDeviceEXT#
     -- @bufferDeviceAddressMultiDevice@ indicates that the implementation
     -- supports the
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-bufferDeviceAddressEXT bufferDeviceAddress>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-bufferDeviceAddressEXT bufferDeviceAddress>
     -- feature for logical devices created with multiple physical devices. If
     -- this feature is not supported, buffer addresses /must/ not be queried on
     -- a logical device created with more than one physical device.
@@ -359,12 +369,26 @@
 --
 -- If this structure is not present, it is as if @deviceAddress@ is zero.
 --
--- Apps /should/ avoid creating buffers with app-provided addresses and
--- implementation-provided addresses in the same process, to reduce the
--- likelihood of 'ERROR_INVALID_DEVICE_ADDRESS_EXT' errors.
+-- Applications /should/ avoid creating buffers with application-provided
+-- addresses and implementation-provided addresses in the same process, to
+-- reduce the likelihood of 'ERROR_INVALID_DEVICE_ADDRESS_EXT' errors.
 --
 -- == Valid Usage (Implicit)
 --
+-- -   #VUID-VkBufferDeviceAddressCreateInfoEXT-sType-sType# @sType@ /must/
+--     be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT'
+--
+-- -   #VUID-VkBufferDeviceAddressCreateInfoEXT-deviceAddress-parameter# If
+--     @deviceAddress@ is not @0@, @deviceAddress@ /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' value
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.Buffer.BufferCreateInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_buffer_device_address VK_EXT_buffer_device_address>,
@@ -391,7 +415,6 @@
   pokeZeroCStruct p f = do
     poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT)
     poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr DeviceAddress)) (zero)
     f
 
 instance FromCStruct BufferDeviceAddressCreateInfoEXT where
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
@@ -135,7 +135,7 @@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-PhysicalStorageBufferAddresses PhysicalStorageBufferAddressesEXT>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-PhysicalStorageBufferAddresses PhysicalStorageBufferAddressesEXT>
 --
 -- == Issues
 --
@@ -166,7 +166,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_buffer_device_address Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -97,8 +97,7 @@
 --
 --     -   'STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT'
 --
--- -   Extending
---     'Vulkan.Extensions.VK_KHR_calibrated_timestamps.TimeDomainKHR':
+-- -   Extending 'Vulkan.Extensions.VK_EXT_present_timing.TimeDomainKHR':
 --
 --     -   'TIME_DOMAIN_CLOCK_MONOTONIC_EXT'
 --
@@ -125,7 +124,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_calibrated_timestamps Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -152,16 +151,16 @@
 import Vulkan.Extensions.VK_KHR_calibrated_timestamps (getCalibratedTimestampsKHR)
 import Vulkan.Extensions.VK_KHR_calibrated_timestamps (getPhysicalDeviceCalibrateableTimeDomainsKHR)
 import Vulkan.Extensions.VK_KHR_calibrated_timestamps (CalibratedTimestampInfoKHR)
-import Vulkan.Extensions.VK_KHR_calibrated_timestamps (TimeDomainKHR)
+import Vulkan.Extensions.VK_EXT_present_timing (TimeDomainKHR)
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_KHR))
-import Vulkan.Extensions.VK_KHR_calibrated_timestamps (TimeDomainKHR(TIME_DOMAIN_CLOCK_MONOTONIC_KHR))
-import Vulkan.Extensions.VK_KHR_calibrated_timestamps (TimeDomainKHR(TIME_DOMAIN_CLOCK_MONOTONIC_RAW_KHR))
-import Vulkan.Extensions.VK_KHR_calibrated_timestamps (TimeDomainKHR(TIME_DOMAIN_DEVICE_KHR))
-import Vulkan.Extensions.VK_KHR_calibrated_timestamps (TimeDomainKHR(TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_KHR))
+import Vulkan.Extensions.VK_EXT_present_timing (TimeDomainKHR(TIME_DOMAIN_CLOCK_MONOTONIC_KHR))
+import Vulkan.Extensions.VK_EXT_present_timing (TimeDomainKHR(TIME_DOMAIN_CLOCK_MONOTONIC_RAW_KHR))
+import Vulkan.Extensions.VK_EXT_present_timing (TimeDomainKHR(TIME_DOMAIN_DEVICE_KHR))
+import Vulkan.Extensions.VK_EXT_present_timing (TimeDomainKHR(TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_KHR))
 import Vulkan.Extensions.VK_KHR_calibrated_timestamps (getCalibratedTimestampsKHR)
 import Vulkan.Extensions.VK_KHR_calibrated_timestamps (getPhysicalDeviceCalibrateableTimeDomainsKHR)
 import Vulkan.Extensions.VK_KHR_calibrated_timestamps (CalibratedTimestampInfoKHR(..))
-import Vulkan.Extensions.VK_KHR_calibrated_timestamps (TimeDomainKHR(..))
+import Vulkan.Extensions.VK_EXT_present_timing (TimeDomainKHR(..))
 -- No documentation found for TopLevel "VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT"
 pattern STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT = STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_KHR
 
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
@@ -75,7 +75,7 @@
 --     -   'PhysicalDeviceColorWriteEnableFeaturesEXT'
 --
 -- -   Extending
---     'Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo':
+--     'Vulkan.Core10.GraphicsPipeline.PipelineColorBlendStateCreateInfo':
 --
 --     -   'PipelineColorWriteCreateInfoEXT'
 --
@@ -108,7 +108,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_color_write_enable Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -183,11 +183,11 @@
 --
 -- This command sets the color write enables for subsequent drawing
 -- commands when drawing using
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-objects shader objects>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader objects>,
 -- or when the graphics pipeline is created with
 -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'
 -- set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
 -- Otherwise, this state is specified by the
 -- 'PipelineColorWriteCreateInfoEXT'::@pColorWriteEnables@ values used to
 -- create the currently active pipeline.
@@ -195,7 +195,7 @@
 -- == Valid Usage
 --
 -- -   #VUID-vkCmdSetColorWriteEnableEXT-None-04803# The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
 --     feature /must/ be enabled
 --
 -- -   #VUID-vkCmdSetColorWriteEnableEXT-attachmentCount-06656#
@@ -219,7 +219,8 @@
 --
 -- -   #VUID-vkCmdSetColorWriteEnableEXT-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdSetColorWriteEnableEXT-videocoding# This command /must/
 --     only be called outside of a video coding scope
@@ -241,10 +242,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
 -- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdSetColorWriteEnableEXT is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_color_write_enable VK_EXT_color_write_enable>,
@@ -291,12 +297,22 @@
 -- structure passed to
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
 -- it is filled in to indicate whether each corresponding feature is
--- supported. 'PhysicalDeviceColorWriteEnableFeaturesEXT' /can/ also be
--- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceColorWriteEnableFeaturesEXT', it /must/ add an instance
+-- of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_color_write_enable VK_EXT_color_write_enable>,
@@ -351,22 +367,22 @@
 -- = Description
 --
 -- When this structure is included in the @pNext@ chain of
--- 'Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo', it defines
--- per-attachment color write state. If this structure is not included in
--- the @pNext@ chain, it is equivalent to specifying this structure with
--- @attachmentCount@ equal to the @attachmentCount@ member of
--- 'Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo', and
--- @pColorWriteEnables@ pointing to an array of as many
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineColorBlendStateCreateInfo', it
+-- defines per-attachment color write state. If this structure is not
+-- included in the @pNext@ chain, it is equivalent to specifying this
+-- structure with @attachmentCount@ equal to the @attachmentCount@ member
+-- of 'Vulkan.Core10.GraphicsPipeline.PipelineColorBlendStateCreateInfo',
+-- and @pColorWriteEnables@ pointing to an array of as many
 -- 'Vulkan.Core10.FundamentalTypes.TRUE' values.
 --
 -- If the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
 -- feature is not enabled, all 'Vulkan.Core10.FundamentalTypes.Bool32'
 -- elements in the @pColorWriteEnables@ array /must/ be
 -- 'Vulkan.Core10.FundamentalTypes.TRUE'.
 --
 -- Color Write Enable interacts with the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#framebuffer-color-write-mask Color Write Mask>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#framebuffer-color-write-mask Color Write Mask>
 -- as follows:
 --
 -- -   If @colorWriteEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
@@ -380,7 +396,7 @@
 -- == Valid Usage
 --
 -- -   #VUID-VkPipelineColorWriteCreateInfoEXT-pAttachments-04801# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
 --     feature is not enabled, all elements of @pColorWriteEnables@ /must/
 --     be 'Vulkan.Core10.FundamentalTypes.TRUE'
 --
@@ -393,8 +409,8 @@
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT'
 --     dynamic states not set, @attachmentCount@ /must/ be equal to the
 --     @attachmentCount@ member of the
---     'Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo' structure
---     specified during pipeline creation
+--     'Vulkan.Core10.GraphicsPipeline.PipelineColorBlendStateCreateInfo'
+--     structure specified during pipeline creation
 --
 -- -   #VUID-VkPipelineColorWriteCreateInfoEXT-attachmentCount-06655#
 --     @attachmentCount@ /must/ be less than or equal to the
@@ -411,6 +427,12 @@
 --     If @attachmentCount@ is not @0@, @pColorWriteEnables@ /must/ be a
 --     valid pointer to an array of @attachmentCount@
 --     'Vulkan.Core10.FundamentalTypes.Bool32' values
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.GraphicsPipeline.PipelineColorBlendStateCreateInfo'
 --
 -- = See Also
 --
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
@@ -75,7 +75,7 @@
 --     -   'PhysicalDeviceColorWriteEnableFeaturesEXT'
 --
 -- -   Extending
---     'Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo':
+--     'Vulkan.Core10.GraphicsPipeline.PipelineColorBlendStateCreateInfo':
 --
 --     -   'PipelineColorWriteCreateInfoEXT'
 --
@@ -108,7 +108,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_color_write_enable Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -18,7 +18,7 @@
 --     2
 --
 -- [__Ratification Status__]
---     Not ratified
+--     Ratified
 --
 -- [__Extension and Version Dependencies__]
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
@@ -156,7 +156,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_conditional_rendering Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#active-conditional-rendering active>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#active-conditional-rendering active>
 --
 -- == Valid Usage (Implicit)
 --
@@ -262,8 +262,13 @@
 --
 -- -   #VUID-vkCmdBeginConditionalRenderingEXT-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics, or compute operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', or
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
+-- -   #VUID-vkCmdBeginConditionalRenderingEXT-suspended# This command
+--     /must/ not be called between suspended render pass instances
+--
 -- -   #VUID-vkCmdBeginConditionalRenderingEXT-videocoding# This command
 --     /must/ only be called outside of a video coding scope
 --
@@ -281,10 +286,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | Action                                                                                                                                 |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | Compute                                                                                                               | State                                                                                                                                  |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdBeginConditionalRenderingEXT is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_conditional_rendering VK_EXT_conditional_rendering>,
@@ -341,17 +351,17 @@
 --
 -- -   #VUID-vkCmdEndConditionalRenderingEXT-None-01985# Conditional
 --     rendering /must/ be
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#active-conditional-rendering active>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#active-conditional-rendering active>
 --
 -- -   #VUID-vkCmdEndConditionalRenderingEXT-None-01986# If conditional
 --     rendering was made
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#active-conditional-rendering active>
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#active-conditional-rendering active>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#active-conditional-rendering active>
 --     within a subpass it /must/ be ended in the same subpass
 --
 -- == Valid Usage (Implicit)
@@ -366,8 +376,13 @@
 --
 -- -   #VUID-vkCmdEndConditionalRenderingEXT-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics, or compute operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', or
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
+-- -   #VUID-vkCmdEndConditionalRenderingEXT-suspended# This command /must/
+--     not be called between suspended render pass instances
+--
 -- -   #VUID-vkCmdEndConditionalRenderingEXT-videocoding# This command
 --     /must/ only be called outside of a video coding scope
 --
@@ -385,10 +400,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | Action                                                                                                                                 |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | Compute                                                                                                               | State                                                                                                                                  |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdEndConditionalRenderingEXT is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_conditional_rendering VK_EXT_conditional_rendering>,
@@ -431,7 +451,7 @@
 -- -   #VUID-VkConditionalRenderingBeginInfoEXT-buffer-01982# @buffer@
 --     /must/ have been created with the
 --     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT'
---     bit set
+--     usage flag set
 --
 -- -   #VUID-VkConditionalRenderingBeginInfoEXT-offset-01983# @offset@
 --     /must/ be less than the size of @buffer@ by at least 32 bits
@@ -529,7 +549,7 @@
 --
 -- -   #VUID-VkCommandBufferInheritanceConditionalRenderingInfoEXT-conditionalRenderingEnable-01977#
 --     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-inheritedConditionalRendering inheritedConditionalRendering>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-inheritedConditionalRendering inheritedConditionalRendering>
 --     feature is not enabled, @conditionalRenderingEnable@ /must/ be
 --     'Vulkan.Core10.FundamentalTypes.FALSE'
 --
@@ -539,6 +559,12 @@
 --     @sType@ /must/ be
 --     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT'
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_conditional_rendering VK_EXT_conditional_rendering>,
@@ -607,12 +633,22 @@
 -- structure passed to
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
 -- it is filled in to indicate whether each corresponding feature is
--- supported. 'PhysicalDeviceConditionalRenderingFeaturesEXT' /can/ also be
--- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceConditionalRenderingFeaturesEXT', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_conditional_rendering VK_EXT_conditional_rendering>,
@@ -675,6 +711,14 @@
 -- | VkConditionalRenderingFlagBitsEXT - Specify the behavior of conditional
 -- rendering
 --
+-- = Description
+--
+-- -   'CONDITIONAL_RENDERING_INVERTED_BIT_EXT' specifies the condition
+--     used to determine whether to discard rendering commands or not. That
+--     is, if the 32-bit predicate read from @buffer@ memory at @offset@ is
+--     zero, the rendering commands are not discarded, and if non zero,
+--     then they are discarded.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_conditional_rendering VK_EXT_conditional_rendering>,
@@ -682,11 +726,7 @@
 newtype ConditionalRenderingFlagBitsEXT = ConditionalRenderingFlagBitsEXT Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'CONDITIONAL_RENDERING_INVERTED_BIT_EXT' specifies the condition used to
--- determine whether to discard rendering commands or not. That is, if the
--- 32-bit predicate read from @buffer@ memory at @offset@ is zero, the
--- rendering commands are not discarded, and if non zero, then they are
--- discarded.
+-- No documentation found for Nested "VkConditionalRenderingFlagBitsEXT" "VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT"
 pattern CONDITIONAL_RENDERING_INVERTED_BIT_EXT = ConditionalRenderingFlagBitsEXT 0x00000001
 
 conNameConditionalRenderingFlagBitsEXT :: String
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
@@ -18,7 +18,7 @@
 --     2
 --
 -- [__Ratification Status__]
---     Not ratified
+--     Ratified
 --
 -- [__Extension and Version Dependencies__]
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
@@ -156,7 +156,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_conditional_rendering Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -109,7 +109,7 @@
 --     -   'PhysicalDeviceConservativeRasterizationPropertiesEXT'
 --
 -- -   Extending
---     'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo':
+--     'Vulkan.Core10.GraphicsPipeline.PipelineRasterizationStateCreateInfo':
 --
 --     -   'PipelineRasterizationConservativeStateCreateInfoEXT'
 --
@@ -135,11 +135,11 @@
 --
 -- == New Built-In Variables
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-fullycoveredext FullyCoveredEXT>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-fullycoveredext FullyCoveredEXT>
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-FragmentFullyCoveredEXT FragmentFullyCoveredEXT>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-FragmentFullyCoveredEXT FragmentFullyCoveredEXT>
 --
 -- == Version History
 --
@@ -158,7 +158,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_conservative_rasterization Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -229,8 +229,12 @@
 -- it is filled in with each corresponding implementation-dependent
 -- property.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_conservative_rasterization VK_EXT_conservative_rasterization>,
@@ -406,12 +410,16 @@
 -- 'PipelineRasterizationConservativeStateCreateInfoEXT'.
 --
 -- If
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-conservativePointAndLineRasterization conservativePointAndLineRasterization>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-conservativePointAndLineRasterization conservativePointAndLineRasterization>
 -- is supported, conservative rasterization can be applied to line and
 -- point primitives, otherwise it must be disabled.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.GraphicsPipeline.PipelineRasterizationStateCreateInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_conservative_rasterization VK_EXT_conservative_rasterization>,
@@ -538,6 +546,18 @@
 -- | VkConservativeRasterizationModeEXT - Specify the conservative
 -- rasterization mode
 --
+-- = Description
+--
+-- -   'CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT' specifies that
+--     conservative rasterization is disabled and rasterization proceeds as
+--     normal.
+--
+-- -   'CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT' specifies that
+--     conservative rasterization is enabled in overestimation mode.
+--
+-- -   'CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT' specifies that
+--     conservative rasterization is enabled in underestimation mode.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_conservative_rasterization VK_EXT_conservative_rasterization>,
@@ -546,17 +566,13 @@
 newtype ConservativeRasterizationModeEXT = ConservativeRasterizationModeEXT Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT' specifies that
--- conservative rasterization is disabled and rasterization proceeds as
--- normal.
+-- No documentation found for Nested "VkConservativeRasterizationModeEXT" "VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT"
 pattern CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT = ConservativeRasterizationModeEXT 0
 
--- | 'CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT' specifies that
--- conservative rasterization is enabled in overestimation mode.
+-- No documentation found for Nested "VkConservativeRasterizationModeEXT" "VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT"
 pattern CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT = ConservativeRasterizationModeEXT 1
 
--- | 'CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT' specifies that
--- conservative rasterization is enabled in underestimation mode.
+-- No documentation found for Nested "VkConservativeRasterizationModeEXT" "VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT"
 pattern CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT = ConservativeRasterizationModeEXT 2
 
 {-# COMPLETE
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
@@ -109,7 +109,7 @@
 --     -   'PhysicalDeviceConservativeRasterizationPropertiesEXT'
 --
 -- -   Extending
---     'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo':
+--     'Vulkan.Core10.GraphicsPipeline.PipelineRasterizationStateCreateInfo':
 --
 --     -   'PipelineRasterizationConservativeStateCreateInfoEXT'
 --
@@ -135,11 +135,11 @@
 --
 -- == New Built-In Variables
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-fullycoveredext FullyCoveredEXT>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-fullycoveredext FullyCoveredEXT>
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-FragmentFullyCoveredEXT FragmentFullyCoveredEXT>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-FragmentFullyCoveredEXT FragmentFullyCoveredEXT>
 --
 -- == Version History
 --
@@ -158,7 +158,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_conservative_rasterization Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -248,7 +248,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_custom_border_color Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -311,8 +311,8 @@
 -- sampler is used with an image with a stencil format, then the
 -- implementation /must/ source the custom border color from either the
 -- first or second components of
--- 'Vulkan.Core10.Sampler.SamplerCreateInfo'::@customBorderColor@ and
--- /should/ source it from the first component.
+-- 'Vulkan.Core10.Sampler.SamplerCreateInfo'::@borderColor@ and /should/
+-- source it from the first component.
 --
 -- == Valid Usage
 --
@@ -322,11 +322,11 @@
 --     'Vulkan.Core10.Sampler.SamplerCreateInfo'::@borderColor@ type /must/
 --     match the sampled type of the provided @format@, as shown in the
 --     /SPIR-V Type/ column of the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#formats-numericformat>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-numericformat>
 --     table
 --
 -- -   #VUID-VkSamplerCustomBorderColorCreateInfoEXT-format-04014# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-customBorderColorWithoutFormat customBorderColorWithoutFormat>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-customBorderColorWithoutFormat customBorderColorWithoutFormat>
 --     feature is not enabled then @format@ /must/ not be
 --     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
 --
@@ -334,7 +334,7 @@
 --     sampler is used to sample an image view of
 --     'Vulkan.Core10.Enums.Format.FORMAT_B4G4R4A4_UNORM_PACK16',
 --     'Vulkan.Core10.Enums.Format.FORMAT_B5G6R5_UNORM_PACK16',
---     'Vulkan.Core10.Enums.Format.FORMAT_A1B5G5R5_UNORM_PACK16_KHR', or
+--     'Vulkan.Core10.Enums.Format.FORMAT_A1B5G5R5_UNORM_PACK16', or
 --     'Vulkan.Core10.Enums.Format.FORMAT_B5G5R5A1_UNORM_PACK16' format
 --     then @format@ /must/ not be
 --     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
@@ -348,12 +348,19 @@
 -- -   #VUID-VkSamplerCustomBorderColorCreateInfoEXT-format-parameter#
 --     @format@ /must/ be a valid 'Vulkan.Core10.Enums.Format.Format' value
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.Sampler.SamplerCreateInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_custom_border_color VK_EXT_custom_border_color>,
 -- 'Vulkan.Core10.CommandBufferBuilding.ClearColorValue',
 -- 'Vulkan.Core10.Enums.Format.Format',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_heap.registerCustomBorderColorEXT'
 data SamplerCustomBorderColorCreateInfoEXT = SamplerCustomBorderColorCreateInfoEXT
   { -- | @customBorderColor@ is a
     -- 'Vulkan.Core10.CommandBufferBuilding.ClearColorValue' representing the
@@ -362,7 +369,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-customBorderColorWithoutFormat customBorderColorWithoutFormat>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-customBorderColorWithoutFormat customBorderColorWithoutFormat>
     -- feature is enabled.
     format :: Format
   }
@@ -408,8 +415,12 @@
 -- it is filled in with each corresponding implementation-dependent
 -- property.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_custom_border_color VK_EXT_custom_border_color>,
@@ -472,11 +483,21 @@
 -- structure passed to
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
 -- it is filled in to indicate whether each corresponding feature is
--- supported. 'PhysicalDeviceCustomBorderColorFeaturesEXT' /can/ also be
--- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceCustomBorderColorFeaturesEXT', it /must/ add an instance
+-- of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
 --
 -- = See Also
 --
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
@@ -248,7 +248,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_custom_border_color Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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_custom_resolve.hs b/src/Vulkan/Extensions/VK_EXT_custom_resolve.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_EXT_custom_resolve.hs
@@ -0,0 +1,738 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_EXT_custom_resolve - device extension
+--
+-- = VK_EXT_custom_resolve
+--
+-- [__Name String__]
+--     @VK_EXT_custom_resolve@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     629
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
+--
+-- [__API Interactions__]
+--
+--     -   Interacts with VK_VERSION_1_3
+--
+--     -   Interacts with VK_KHR_dynamic_rendering
+--
+-- [__Contact__]
+--
+--     -   Mike Blumenkrantz
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_custom_resolve] @zmike%0A*Here describe the issue or question you have about the VK_EXT_custom_resolve extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_EXT_custom_resolve.adoc VK_EXT_custom_resolve>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2025-05-13
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Interactions and External Dependencies__]
+--
+--     -   This extension interacts with @VK_KHR_dynamic_rendering@
+--
+--     -   This extension interacts with
+--         @VK_EXT_dynamic_rendering_unused_attachments@
+--
+--     -   This extension interacts with @VK_EXT_fragment_density_map@
+--
+--     -   This extension interacts with @VK_EXT_graphics_pipeline_library@
+--
+--     -   This extension interacts with @VK_EXT_shader_object@
+--
+-- [__Contributors__]
+--
+--     -   Mike Blumenkrantz, Valve
+--
+--     -   Connor Abbott, Valve
+--
+--     -   Samuel Pitoiset, Valve
+--
+--     -   Matthew Netsch, Qualcomm
+--
+--     -   Jan-Harald Fredriksen, ARM
+--
+--     -   Ting Wei, ARM
+--
+--     -   Ricardo Garcia, Igalia
+--
+--     -   Spencer Fricke, LunarG
+--
+--     -   Piers Daniell, Nvidia
+--
+-- == Description
+--
+-- This extension provides functionality for using shaders to resolve
+-- multisample rendering attachments.
+--
+-- It builds upon mechanics introduced by
+-- VK_QCOM_render_pass_shader_resolve, additionally adding support for
+-- dynamic rendering.
+--
+-- == New Commands
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering VK_KHR_dynamic_rendering>
+-- or
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3 Vulkan Version 1.3>
+-- is supported:
+--
+-- -   'cmdBeginCustomResolveEXT'
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceCustomResolveFeaturesEXT'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering VK_KHR_dynamic_rendering>
+-- or
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3 Vulkan Version 1.3>
+-- is supported:
+--
+-- -   'BeginCustomResolveInfoEXT'
+--
+-- -   Extending
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo',
+--     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo',
+--     'Vulkan.Extensions.VK_EXT_shader_object.ShaderCreateInfoEXT':
+--
+--     -   'CustomResolveCreateInfoEXT'
+--
+-- == New Enum Constants
+--
+-- -   'EXT_CUSTOM_RESOLVE_EXTENSION_NAME'
+--
+-- -   'EXT_CUSTOM_RESOLVE_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_RESOLVE_FEATURES_EXT'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SubpassDescriptionFlagBits':
+--
+--     -   'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_CUSTOM_RESOLVE_BIT_EXT'
+--
+--     -   'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_EXT'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering VK_KHR_dynamic_rendering>
+-- or
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3 Vulkan Version 1.3>
+-- is supported:
+--
+-- -   Extending 'Vulkan.Core13.Enums.RenderingFlagBits.RenderingFlagBits':
+--
+--     -   'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_CUSTOM_RESOLVE_BIT_EXT'
+--
+--     -   'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_FRAGMENT_REGION_BIT_EXT'
+--
+-- -   Extending
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.ResolveModeFlagBits':
+--
+--     -   'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_CUSTOM_BIT_EXT'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BEGIN_CUSTOM_RESOLVE_INFO_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_CUSTOM_RESOLVE_CREATE_INFO_EXT'
+--
+-- == Issues
+--
+-- 1) How will this work with shader objects?
+--
+-- Some vendors emit an epilog at the end of the FS that stores each
+-- color\/depth\/stencil attachment to the appropriate tilebuffer location,
+-- and to do that they need to know the layout of the tilebuffer which
+-- depends on the attachment formats\/sample counts. We agreed that for
+-- shader object the FS epilog is emitted dynamically when the draw
+-- happens.
+--
+-- == Version History
+--
+-- -   Revision 1, 2025-05-13 (Mike Blumenkrantz)
+--
+--     -   Initial draft
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_custom_resolve 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_custom_resolve  ( cmdBeginCustomResolveEXT
+                                                , BeginCustomResolveInfoEXT(..)
+                                                , PhysicalDeviceCustomResolveFeaturesEXT(..)
+                                                , CustomResolveCreateInfoEXT(..)
+                                                , EXT_CUSTOM_RESOLVE_SPEC_VERSION
+                                                , pattern EXT_CUSTOM_RESOLVE_SPEC_VERSION
+                                                , EXT_CUSTOM_RESOLVE_EXTENSION_NAME
+                                                , pattern EXT_CUSTOM_RESOLVE_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 Data.Vector (generateM)
+import qualified Data.Vector (imapM_)
+import qualified Data.Vector (length)
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (FromCStruct(..))
+import Vulkan.CStruct (ToCStruct)
+import Vulkan.CStruct (ToCStruct(..))
+import Vulkan.Zero (Zero(..))
+import Control.Monad.IO.Class (MonadIO)
+import Data.String (IsString)
+import Data.Typeable (Typeable)
+import Foreign.Storable (Storable)
+import Foreign.Storable (Storable(peek))
+import Foreign.Storable (Storable(poke))
+import qualified Foreign.Storable (Storable(..))
+import GHC.Generics (Generic)
+import GHC.IO.Exception (IOErrorType(..))
+import GHC.IO.Exception (IOException(..))
+import Foreign.Ptr (FunPtr)
+import Foreign.Ptr (Ptr)
+import Data.Word (Word32)
+import Data.Kind (Type)
+import Control.Monad.Trans.Cont (ContT(..))
+import Data.Vector (Vector)
+import Vulkan.CStruct.Utils (advancePtrBytes)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.NamedType ((:::))
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.Core10.Handles (CommandBuffer)
+import Vulkan.Core10.Handles (CommandBuffer(..))
+import Vulkan.Core10.Handles (CommandBuffer(CommandBuffer))
+import Vulkan.Core10.Handles (CommandBuffer_T)
+import Vulkan.Dynamic (DeviceCmds(pVkCmdBeginCustomResolveEXT))
+import Vulkan.Core10.Enums.Format (Format)
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_BEGIN_CUSTOM_RESOLVE_INFO_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_CUSTOM_RESOLVE_CREATE_INFO_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_RESOLVE_FEATURES_EXT))
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdBeginCustomResolveEXT
+  :: FunPtr (Ptr CommandBuffer_T -> Ptr BeginCustomResolveInfoEXT -> IO ()) -> Ptr CommandBuffer_T -> Ptr BeginCustomResolveInfoEXT -> IO ()
+
+-- | vkCmdBeginCustomResolveEXT - Begins a shader resolve operation
+--
+-- = Description
+--
+-- Following this call, any @resolveImageView@ with @resolveMode@ set to
+-- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_CUSTOM_BIT_EXT'
+-- will be written by outputs which would otherwise have written to the
+-- @imageView@ image until the end of the current render pass instance.
+--
+-- Following this call, the fragment area /may/ be reduced to (1,1) if a
+-- fragment density map is attached. If this occurs, reads of input
+-- attachments mapped to a color, depth, or stencil attachment return the
+-- value for the original larger fragment containing the smaller fragment.
+-- Reads of input attachments not mapped to a color, depth, or stencil
+-- attachment use the new fragment area.
+--
+-- Because the content of any depth\/stencil resolve attachment as well as
+-- any color resolve attachment is undefined at the beginning of a resolve
+-- operation, any depth testing, stencil testing, or blending operation
+-- which sources these undefined values also has undefined result value.
+--
+-- During a custom resolve pass, multiple fragment invocations writing to
+-- the same (x, y, layer, view, sample) coordinate, i.e. overdraw, will
+-- produce undefined behavior.
+--
+-- Implementations are allowed to implement custom resolve attachment
+-- writes through other mechanisms than framebuffer attachment writes,
+-- which would normally obey rules of rasterization order.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdBeginCustomResolveEXT-commandBuffer-11517# The current
+--     render pass instance /must/ have been started or resumed by
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     in this @commandBuffer@
+--
+-- -   #VUID-vkCmdBeginCustomResolveEXT-None-11518#
+--     'cmdBeginCustomResolveEXT' /must/ not have already been recorded in
+--     the current render pass instance
+--
+-- -   #VUID-vkCmdBeginCustomResolveEXT-None-11519# The current render pass
+--     instance /must/ have specified
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_CUSTOM_RESOLVE_BIT_EXT'
+--
+-- -   #VUID-vkCmdBeginCustomResolveEXT-None-11520# The current render pass
+--     instance /must/ not have specified
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_SUSPENDING_BIT'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdBeginCustomResolveEXT-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdBeginCustomResolveEXT-pBeginCustomResolveInfo-parameter#
+--     If @pBeginCustomResolveInfo@ is not @NULL@,
+--     @pBeginCustomResolveInfo@ /must/ be a valid pointer to a valid
+--     'BeginCustomResolveInfoEXT' structure
+--
+-- -   #VUID-vkCmdBeginCustomResolveEXT-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-vkCmdBeginCustomResolveEXT-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
+--
+-- -   #VUID-vkCmdBeginCustomResolveEXT-renderpass# This command /must/
+--     only be called inside of a render pass instance
+--
+-- -   #VUID-vkCmdBeginCustomResolveEXT-suspended# This command /must/ not
+--     be called between suspended render pass instances
+--
+-- -   #VUID-vkCmdBeginCustomResolveEXT-videocoding# This command /must/
+--     only be called outside of a video coding scope
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Inside                                                                                                                 | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdBeginCustomResolveEXT is affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_custom_resolve VK_EXT_custom_resolve>,
+-- <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>,
+-- 'BeginCustomResolveInfoEXT', 'Vulkan.Core10.Handles.CommandBuffer'
+cmdBeginCustomResolveEXT :: forall io
+                          . (MonadIO io)
+                         => -- | @commandBuffer@ is the command buffer in which to record the command.
+                            CommandBuffer
+                         -> -- | @pBeginCustomResolveInfo@ is an optional struct with which to extend
+                            -- functionality.
+                            ("beginCustomResolveInfo" ::: Maybe BeginCustomResolveInfoEXT)
+                         -> io ()
+cmdBeginCustomResolveEXT commandBuffer
+                           beginCustomResolveInfo = liftIO . evalContT $ do
+  let vkCmdBeginCustomResolveEXTPtr = pVkCmdBeginCustomResolveEXT (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdBeginCustomResolveEXTPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdBeginCustomResolveEXT is null" Nothing Nothing
+  let vkCmdBeginCustomResolveEXT' = mkVkCmdBeginCustomResolveEXT vkCmdBeginCustomResolveEXTPtr
+  pBeginCustomResolveInfo <- case (beginCustomResolveInfo) of
+    Nothing -> pure nullPtr
+    Just j -> ContT $ withCStruct (j)
+  lift $ traceAroundEvent "vkCmdBeginCustomResolveEXT" (vkCmdBeginCustomResolveEXT'
+                                                          (commandBufferHandle (commandBuffer))
+                                                          pBeginCustomResolveInfo)
+  pure $ ()
+
+
+-- | VkBeginCustomResolveInfoEXT - Structure specifying shader resolve
+-- information
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_custom_resolve VK_EXT_custom_resolve>,
+-- <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.StructureType.StructureType',
+-- 'cmdBeginCustomResolveEXT'
+data BeginCustomResolveInfoEXT = BeginCustomResolveInfoEXT
+  {}
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (BeginCustomResolveInfoEXT)
+#endif
+deriving instance Show BeginCustomResolveInfoEXT
+
+instance ToCStruct BeginCustomResolveInfoEXT where
+  withCStruct x f = allocaBytes 16 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p BeginCustomResolveInfoEXT f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BEGIN_CUSTOM_RESOLVE_INFO_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    f
+  cStructSize = 16
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BEGIN_CUSTOM_RESOLVE_INFO_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    f
+
+instance FromCStruct BeginCustomResolveInfoEXT where
+  peekCStruct _ = pure $ BeginCustomResolveInfoEXT
+                           
+
+instance Storable BeginCustomResolveInfoEXT where
+  sizeOf ~_ = 16
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero BeginCustomResolveInfoEXT where
+  zero = BeginCustomResolveInfoEXT
+           
+
+
+-- | VkPhysicalDeviceCustomResolveFeaturesEXT - Structure indicating support
+-- for shader resolves
+--
+-- = Members
+--
+-- This structure describes the following feature:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceCustomResolveFeaturesEXT' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceCustomResolveFeaturesEXT', it /must/ add an instance of
+-- the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_custom_resolve VK_EXT_custom_resolve>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceCustomResolveFeaturesEXT = PhysicalDeviceCustomResolveFeaturesEXT
+  { -- | #features-customResolve# @customResolve@ specifies that the
+    -- implementation supports render pass resolves using shaders.
+    customResolve :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceCustomResolveFeaturesEXT)
+#endif
+deriving instance Show PhysicalDeviceCustomResolveFeaturesEXT
+
+instance ToCStruct PhysicalDeviceCustomResolveFeaturesEXT where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceCustomResolveFeaturesEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_RESOLVE_FEATURES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (customResolve))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_RESOLVE_FEATURES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceCustomResolveFeaturesEXT where
+  peekCStruct p = do
+    customResolve <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDeviceCustomResolveFeaturesEXT
+             (bool32ToBool customResolve)
+
+instance Storable PhysicalDeviceCustomResolveFeaturesEXT where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceCustomResolveFeaturesEXT where
+  zero = PhysicalDeviceCustomResolveFeaturesEXT
+           zero
+
+
+-- | VkCustomResolveCreateInfoEXT - Structure specifying format info for
+-- custom resolves
+--
+-- = Description
+--
+-- If the @pNext@ chain includes this structure for one of:
+--
+-- -   a 'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo' for a
+--     pipeline created without a 'Vulkan.Core10.Handles.RenderPass'
+--
+-- -   a 'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo' for a
+--     secondary command buffer within a render pass instance begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'.
+--
+-- it specifies the formats used in custom resolves within the same render
+-- pass. It also specifies that the corresponding object will be used in a
+-- render pass which contains a custom resolve operation.
+--
+-- If the @pNext@ chain includes this structure for a
+-- 'Vulkan.Extensions.VK_EXT_shader_object.ShaderCreateInfoEXT' for a
+-- fragment shader object, it only specifies that the fragment shader will
+-- be used in a custom resolve operation.
+--
+-- If a graphics pipeline is created with a valid
+-- 'Vulkan.Core10.Handles.RenderPass', parameters of this structure are
+-- ignored.
+--
+-- If @customResolve@ is 'Vulkan.Core10.FundamentalTypes.FALSE', the
+-- pipeline /can/ only be used outside the custom resolve section. If
+-- @customResolve@ is 'Vulkan.Core10.FundamentalTypes.TRUE', the pipeline
+-- /can/ only be used inside the custom resolve section.
+--
+-- When a dynamic render pass instance contains a custom resolve operation
+-- and the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+-- feature is not enabled , all pipelines used to draw in such render pass
+-- /must/ include this structure and have identical format information in
+-- it. When a dynamic render pass does not contain a custom resolve
+-- operation and the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+-- feature is not enabled , all pipelines used to draw in such render pass
+-- /must/ not include this structure.
+--
+-- If the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+-- feature is enabled, then when this structure is not included in the
+-- @pNext@ chain for
+-- 'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo',
+-- @customResolve@ is 'Vulkan.Core10.FundamentalTypes.FALSE',
+-- @colorAttachmentCount@ is @0@, and @depthAttachmentFormat@ and
+-- @stencilAttachmentFormat@ are
+-- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'.
+--
+-- 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 resolve portion of 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.
+--
+-- When passed as a @pNext@ member to a
+-- 'Vulkan.Extensions.VK_EXT_shader_object.ShaderCreateInfoEXT' struct for
+-- use with fragment density maps, the @colorAttachmentCount@,
+-- @pColorAttachmentFormats@, @depthAttachmentFormat@, and
+-- @stencilAttachmentFormat@ members of this struct are ignored. When not
+-- passed as a @pNext@ member, @customResolve@ is
+-- 'Vulkan.Core10.FundamentalTypes.FALSE'.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkCustomResolveCreateInfoEXT-colorAttachmentCount-11507#
+--     @colorAttachmentCount@ /must/ be less than or equal to
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxColorAttachments maxColorAttachments>
+--
+-- -   #VUID-VkCustomResolveCreateInfoEXT-depthAttachmentFormat-11508# If
+--     @depthAttachmentFormat@ is not
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', it /must/ be a format
+--     that includes a depth component
+--
+-- -   #VUID-VkCustomResolveCreateInfoEXT-depthAttachmentFormat-11509# If
+--     @depthAttachmentFormat@ is not
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', it /must/ be a format
+--     with
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#potential-format-features potential format features>
+--     that include
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT'
+--
+-- -   #VUID-VkCustomResolveCreateInfoEXT-pColorAttachmentFormats-11510# If
+--     any element of @pColorAttachmentFormats@ is not
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', it /must/ be a format
+--     with
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#potential-format-features potential format features>
+--     that include
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BIT'
+--     , or
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV'
+--     if the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-linearColorAttachment linearColorAttachment>
+--     feature is enabled
+--
+-- -   #VUID-VkCustomResolveCreateInfoEXT-stencilAttachmentFormat-11511# If
+--     @stencilAttachmentFormat@ is not
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', it /must/ be a format
+--     that includes a stencil aspect
+--
+-- -   #VUID-VkCustomResolveCreateInfoEXT-stencilAttachmentFormat-11512# If
+--     @stencilAttachmentFormat@ is not
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', it /must/ be a format
+--     with
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#potential-format-features potential format features>
+--     that include
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT'
+--
+-- -   #VUID-VkCustomResolveCreateInfoEXT-depthAttachmentFormat-11513# If
+--     @depthAttachmentFormat@ is not
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' and
+--     @stencilAttachmentFormat@ is not
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED',
+--     @depthAttachmentFormat@ /must/ equal @stencilAttachmentFormat@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkCustomResolveCreateInfoEXT-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_CUSTOM_RESOLVE_CREATE_INFO_EXT'
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo'
+--
+--     -   'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'
+--
+--     -   'Vulkan.Extensions.VK_EXT_shader_object.ShaderCreateInfoEXT'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_custom_resolve VK_EXT_custom_resolve>,
+-- <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.Format.Format',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data CustomResolveCreateInfoEXT = CustomResolveCreateInfoEXT
+  { -- | @customResolve@ indicates whether this pipeline will be used for a
+    -- resolve operation.
+    customResolve :: Bool
+  , -- | @pColorAttachmentFormats@ is a pointer to an array of
+    -- 'Vulkan.Core10.Enums.Format.Format' values defining the format of color
+    -- resolve attachments used in custom resolves in the same render pass.
+    colorAttachmentFormats :: Vector Format
+  , -- | @depthAttachmentFormat@ is a 'Vulkan.Core10.Enums.Format.Format' value
+    -- defining the format of the depth resolve attachment used in custom
+    -- resolves in the same render pass.
+    depthAttachmentFormat :: Format
+  , -- | @stencilAttachmentFormat@ is a 'Vulkan.Core10.Enums.Format.Format' value
+    -- defining the format of the stencil resolve attachment used in custom
+    -- resolves in the same render pass.
+    stencilAttachmentFormat :: Format
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (CustomResolveCreateInfoEXT)
+#endif
+deriving instance Show CustomResolveCreateInfoEXT
+
+instance ToCStruct CustomResolveCreateInfoEXT where
+  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p CustomResolveCreateInfoEXT{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_CUSTOM_RESOLVE_CREATE_INFO_EXT)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (customResolve))
+    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_CUSTOM_RESOLVE_CREATE_INFO_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 32 :: Ptr Format)) (zero)
+    poke ((p `plusPtr` 36 :: Ptr Format)) (zero)
+    f
+
+instance FromCStruct CustomResolveCreateInfoEXT where
+  peekCStruct p = do
+    customResolve <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    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 $ CustomResolveCreateInfoEXT
+             (bool32ToBool customResolve)
+             pColorAttachmentFormats'
+             depthAttachmentFormat
+             stencilAttachmentFormat
+
+instance Zero CustomResolveCreateInfoEXT where
+  zero = CustomResolveCreateInfoEXT
+           zero
+           mempty
+           zero
+           zero
+
+
+type EXT_CUSTOM_RESOLVE_SPEC_VERSION = 1
+
+-- No documentation found for TopLevel "VK_EXT_CUSTOM_RESOLVE_SPEC_VERSION"
+pattern EXT_CUSTOM_RESOLVE_SPEC_VERSION :: forall a . Integral a => a
+pattern EXT_CUSTOM_RESOLVE_SPEC_VERSION = 1
+
+
+type EXT_CUSTOM_RESOLVE_EXTENSION_NAME = "VK_EXT_custom_resolve"
+
+-- No documentation found for TopLevel "VK_EXT_CUSTOM_RESOLVE_EXTENSION_NAME"
+pattern EXT_CUSTOM_RESOLVE_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern EXT_CUSTOM_RESOLVE_EXTENSION_NAME = "VK_EXT_custom_resolve"
+
diff --git a/src/Vulkan/Extensions/VK_EXT_custom_resolve.hs-boot b/src/Vulkan/Extensions/VK_EXT_custom_resolve.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_EXT_custom_resolve.hs-boot
@@ -0,0 +1,224 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_EXT_custom_resolve - device extension
+--
+-- = VK_EXT_custom_resolve
+--
+-- [__Name String__]
+--     @VK_EXT_custom_resolve@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     629
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
+--
+-- [__API Interactions__]
+--
+--     -   Interacts with VK_VERSION_1_3
+--
+--     -   Interacts with VK_KHR_dynamic_rendering
+--
+-- [__Contact__]
+--
+--     -   Mike Blumenkrantz
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_custom_resolve] @zmike%0A*Here describe the issue or question you have about the VK_EXT_custom_resolve extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_EXT_custom_resolve.adoc VK_EXT_custom_resolve>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2025-05-13
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Interactions and External Dependencies__]
+--
+--     -   This extension interacts with @VK_KHR_dynamic_rendering@
+--
+--     -   This extension interacts with
+--         @VK_EXT_dynamic_rendering_unused_attachments@
+--
+--     -   This extension interacts with @VK_EXT_fragment_density_map@
+--
+--     -   This extension interacts with @VK_EXT_graphics_pipeline_library@
+--
+--     -   This extension interacts with @VK_EXT_shader_object@
+--
+-- [__Contributors__]
+--
+--     -   Mike Blumenkrantz, Valve
+--
+--     -   Connor Abbott, Valve
+--
+--     -   Samuel Pitoiset, Valve
+--
+--     -   Matthew Netsch, Qualcomm
+--
+--     -   Jan-Harald Fredriksen, ARM
+--
+--     -   Ting Wei, ARM
+--
+--     -   Ricardo Garcia, Igalia
+--
+--     -   Spencer Fricke, LunarG
+--
+--     -   Piers Daniell, Nvidia
+--
+-- == Description
+--
+-- This extension provides functionality for using shaders to resolve
+-- multisample rendering attachments.
+--
+-- It builds upon mechanics introduced by
+-- VK_QCOM_render_pass_shader_resolve, additionally adding support for
+-- dynamic rendering.
+--
+-- == New Commands
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering VK_KHR_dynamic_rendering>
+-- or
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3 Vulkan Version 1.3>
+-- is supported:
+--
+-- -   'cmdBeginCustomResolveEXT'
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceCustomResolveFeaturesEXT'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering VK_KHR_dynamic_rendering>
+-- or
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3 Vulkan Version 1.3>
+-- is supported:
+--
+-- -   'BeginCustomResolveInfoEXT'
+--
+-- -   Extending
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo',
+--     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo',
+--     'Vulkan.Extensions.VK_EXT_shader_object.ShaderCreateInfoEXT':
+--
+--     -   'CustomResolveCreateInfoEXT'
+--
+-- == New Enum Constants
+--
+-- -   'EXT_CUSTOM_RESOLVE_EXTENSION_NAME'
+--
+-- -   'EXT_CUSTOM_RESOLVE_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_RESOLVE_FEATURES_EXT'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SubpassDescriptionFlagBits':
+--
+--     -   'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_CUSTOM_RESOLVE_BIT_EXT'
+--
+--     -   'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_EXT'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering VK_KHR_dynamic_rendering>
+-- or
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3 Vulkan Version 1.3>
+-- is supported:
+--
+-- -   Extending 'Vulkan.Core13.Enums.RenderingFlagBits.RenderingFlagBits':
+--
+--     -   'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_CUSTOM_RESOLVE_BIT_EXT'
+--
+--     -   'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_FRAGMENT_REGION_BIT_EXT'
+--
+-- -   Extending
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.ResolveModeFlagBits':
+--
+--     -   'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_CUSTOM_BIT_EXT'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BEGIN_CUSTOM_RESOLVE_INFO_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_CUSTOM_RESOLVE_CREATE_INFO_EXT'
+--
+-- == Issues
+--
+-- 1) How will this work with shader objects?
+--
+-- Some vendors emit an epilog at the end of the FS that stores each
+-- color\/depth\/stencil attachment to the appropriate tilebuffer location,
+-- and to do that they need to know the layout of the tilebuffer which
+-- depends on the attachment formats\/sample counts. We agreed that for
+-- shader object the FS epilog is emitted dynamically when the draw
+-- happens.
+--
+-- == Version History
+--
+-- -   Revision 1, 2025-05-13 (Mike Blumenkrantz)
+--
+--     -   Initial draft
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_custom_resolve 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_custom_resolve  ( BeginCustomResolveInfoEXT
+                                                , CustomResolveCreateInfoEXT
+                                                , PhysicalDeviceCustomResolveFeaturesEXT
+                                                ) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data BeginCustomResolveInfoEXT
+
+instance ToCStruct BeginCustomResolveInfoEXT
+instance Show BeginCustomResolveInfoEXT
+
+instance FromCStruct BeginCustomResolveInfoEXT
+
+
+data CustomResolveCreateInfoEXT
+
+instance ToCStruct CustomResolveCreateInfoEXT
+instance Show CustomResolveCreateInfoEXT
+
+instance FromCStruct CustomResolveCreateInfoEXT
+
+
+data PhysicalDeviceCustomResolveFeaturesEXT
+
+instance ToCStruct PhysicalDeviceCustomResolveFeaturesEXT
+instance Show PhysicalDeviceCustomResolveFeaturesEXT
+
+instance FromCStruct PhysicalDeviceCustomResolveFeaturesEXT
+
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
@@ -265,7 +265,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_debug_marker Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -362,19 +362,6 @@
 -- | vkDebugMarkerSetObjectNameEXT - Give an application-defined name to an
 -- object
 --
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkDebugMarkerSetObjectNameEXT-device-parameter# @device@
---     /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
---
--- -   #VUID-vkDebugMarkerSetObjectNameEXT-pNameInfo-parameter# @pNameInfo@
---     /must/ be a valid pointer to a valid 'DebugMarkerObjectNameInfoEXT'
---     structure
---
--- == Host Synchronization
---
--- -   Host access to @pNameInfo->object@ /must/ be externally synchronized
---
 -- == Return Codes
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
@@ -383,10 +370,14 @@
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_debug_marker VK_EXT_debug_marker>,
@@ -394,9 +385,16 @@
 debugMarkerSetObjectNameEXT :: forall io
                              . (MonadIO io)
                             => -- | @device@ is the device that created the object.
+                               --
+                               -- #VUID-vkDebugMarkerSetObjectNameEXT-device-parameter# @device@ /must/ be
+                               -- a valid 'Vulkan.Core10.Handles.Device' handle
                                Device
                             -> -- | @pNameInfo@ is a pointer to a 'DebugMarkerObjectNameInfoEXT' structure
                                -- specifying the parameters of the name to set on the object.
+                               --
+                               -- #VUID-vkDebugMarkerSetObjectNameEXT-pNameInfo-parameter# @pNameInfo@
+                               -- /must/ be a valid pointer to a valid 'DebugMarkerObjectNameInfoEXT'
+                               -- structure
                                DebugMarkerObjectNameInfoEXT
                             -> io ()
 debugMarkerSetObjectNameEXT device nameInfo = liftIO . evalContT $ do
@@ -420,19 +418,6 @@
 
 -- | vkDebugMarkerSetObjectTagEXT - Attach arbitrary data to an object
 --
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkDebugMarkerSetObjectTagEXT-device-parameter# @device@ /must/
---     be a valid 'Vulkan.Core10.Handles.Device' handle
---
--- -   #VUID-vkDebugMarkerSetObjectTagEXT-pTagInfo-parameter# @pTagInfo@
---     /must/ be a valid pointer to a valid 'DebugMarkerObjectTagInfoEXT'
---     structure
---
--- == Host Synchronization
---
--- -   Host access to @pTagInfo->object@ /must/ be externally synchronized
---
 -- == Return Codes
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
@@ -441,10 +426,14 @@
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_debug_marker VK_EXT_debug_marker>,
@@ -452,9 +441,15 @@
 debugMarkerSetObjectTagEXT :: forall io
                             . (MonadIO io)
                            => -- | @device@ is the device that created the object.
+                              --
+                              -- #VUID-vkDebugMarkerSetObjectTagEXT-device-parameter# @device@ /must/ be
+                              -- a valid 'Vulkan.Core10.Handles.Device' handle
                               Device
                            -> -- | @pTagInfo@ is a pointer to a 'DebugMarkerObjectTagInfoEXT' structure
                               -- specifying the parameters of the tag to attach to the object.
+                              --
+                              -- #VUID-vkDebugMarkerSetObjectTagEXT-pTagInfo-parameter# @pTagInfo@ /must/
+                              -- be a valid pointer to a valid 'DebugMarkerObjectTagInfoEXT' structure
                               DebugMarkerObjectTagInfoEXT
                            -> io ()
 debugMarkerSetObjectTagEXT device tagInfo = liftIO . evalContT $ do
@@ -478,6 +473,13 @@
 
 -- | vkCmdDebugMarkerBeginEXT - Open a command buffer marker region
 --
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdDebugMarkerBeginEXT-None-10614# This command /must/ not
+--     be recorded when
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model>
+--     is enabled
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-vkCmdDebugMarkerBeginEXT-commandBuffer-parameter#
@@ -494,10 +496,15 @@
 --
 -- -   #VUID-vkCmdDebugMarkerBeginEXT-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics, or compute operations
---
--- -   #VUID-vkCmdDebugMarkerBeginEXT-videocoding# This command /must/ only
---     be called outside of a video coding scope
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT',
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT',
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_OPTICAL_FLOW_BIT_NV',
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_TRANSFER_BIT',
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits VK_QUEUE_VIDEO_DECODE_BIT_KHR>,
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits VK_QUEUE_VIDEO_ENCODE_BIT_KHR>
+--     operations
 --
 -- == Host Synchronization
 --
@@ -513,10 +520,19 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | Action                                                                                                                                 |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | Compute                                                                                                               |                                                                                                                                        |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Both                                                                                                                        | VK_QUEUE_COMPUTE_BIT                                                                                                  | State                                                                                                                                  |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | VK_QUEUE_GRAPHICS_BIT                                                                                                 |                                                                                                                                        |
+-- |                                                                                                                            |                                                                                                                        |                                                                                                                             | VK_QUEUE_OPTICAL_FLOW_BIT_NV                                                                                          |                                                                                                                                        |
+-- |                                                                                                                            |                                                                                                                        |                                                                                                                             | VK_QUEUE_TRANSFER_BIT                                                                                                 |                                                                                                                                        |
+-- |                                                                                                                            |                                                                                                                        |                                                                                                                             | VK_QUEUE_VIDEO_DECODE_BIT_KHR                                                                                         |                                                                                                                                        |
+-- |                                                                                                                            |                                                                                                                        |                                                                                                                             | VK_QUEUE_VIDEO_ENCODE_BIT_KHR                                                                                         |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdDebugMarkerBeginEXT is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_debug_marker VK_EXT_debug_marker>,
@@ -572,6 +588,11 @@
 --     'cmdDebugMarkerBeginEXT' command recorded to @commandBuffer@ that
 --     has not previously been ended by a call to 'cmdDebugMarkerEndEXT'
 --
+-- -   #VUID-vkCmdDebugMarkerEndEXT-None-10615# This command /must/ not be
+--     recorded when
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model>
+--     is enabled
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-vkCmdDebugMarkerEndEXT-commandBuffer-parameter#
@@ -584,10 +605,15 @@
 --
 -- -   #VUID-vkCmdDebugMarkerEndEXT-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics, or compute operations
---
--- -   #VUID-vkCmdDebugMarkerEndEXT-videocoding# This command /must/ only
---     be called outside of a video coding scope
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT',
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT',
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_OPTICAL_FLOW_BIT_NV',
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_TRANSFER_BIT',
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits VK_QUEUE_VIDEO_DECODE_BIT_KHR>,
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits VK_QUEUE_VIDEO_ENCODE_BIT_KHR>
+--     operations
 --
 -- == Host Synchronization
 --
@@ -603,10 +629,19 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | Action                                                                                                                                 |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | Compute                                                                                                               |                                                                                                                                        |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Both                                                                                                                        | VK_QUEUE_COMPUTE_BIT                                                                                                  | State                                                                                                                                  |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | VK_QUEUE_GRAPHICS_BIT                                                                                                 |                                                                                                                                        |
+-- |                                                                                                                            |                                                                                                                        |                                                                                                                             | VK_QUEUE_OPTICAL_FLOW_BIT_NV                                                                                          |                                                                                                                                        |
+-- |                                                                                                                            |                                                                                                                        |                                                                                                                             | VK_QUEUE_TRANSFER_BIT                                                                                                 |                                                                                                                                        |
+-- |                                                                                                                            |                                                                                                                        |                                                                                                                             | VK_QUEUE_VIDEO_DECODE_BIT_KHR                                                                                         |                                                                                                                                        |
+-- |                                                                                                                            |                                                                                                                        |                                                                                                                             | VK_QUEUE_VIDEO_ENCODE_BIT_KHR                                                                                         |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdDebugMarkerEndEXT is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_debug_marker VK_EXT_debug_marker>,
@@ -652,10 +687,15 @@
 --
 -- -   #VUID-vkCmdDebugMarkerInsertEXT-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics, or compute operations
---
--- -   #VUID-vkCmdDebugMarkerInsertEXT-videocoding# This command /must/
---     only be called outside of a video coding scope
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT',
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT',
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_OPTICAL_FLOW_BIT_NV',
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_TRANSFER_BIT',
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits VK_QUEUE_VIDEO_DECODE_BIT_KHR>,
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits VK_QUEUE_VIDEO_ENCODE_BIT_KHR>
+--     operations
 --
 -- == Host Synchronization
 --
@@ -671,10 +711,19 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | Action                                                                                                                                 |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | Compute                                                                                                               |                                                                                                                                        |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Both                                                                                                                        | VK_QUEUE_COMPUTE_BIT                                                                                                  | State                                                                                                                                  |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | VK_QUEUE_GRAPHICS_BIT                                                                                                 |                                                                                                                                        |
+-- |                                                                                                                            |                                                                                                                        |                                                                                                                             | VK_QUEUE_OPTICAL_FLOW_BIT_NV                                                                                          |                                                                                                                                        |
+-- |                                                                                                                            |                                                                                                                        |                                                                                                                             | VK_QUEUE_TRANSFER_BIT                                                                                                 |                                                                                                                                        |
+-- |                                                                                                                            |                                                                                                                        |                                                                                                                             | VK_QUEUE_VIDEO_DECODE_BIT_KHR                                                                                         |                                                                                                                                        |
+-- |                                                                                                                            |                                                                                                                        |                                                                                                                             | VK_QUEUE_VIDEO_ENCODE_BIT_KHR                                                                                         |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdDebugMarkerInsertEXT is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_debug_marker VK_EXT_debug_marker>,
@@ -709,8 +758,40 @@
 -- calling 'debugMarkerSetObjectNameEXT' again with a new string. To remove
 -- a previously set name, @pObjectName@ /should/ be an empty string.
 --
+-- == Valid Usage
+--
+-- -   #VUID-VkDebugMarkerObjectNameInfoEXT-objectType-01490# @objectType@
+--     /must/ not be
+--     'Vulkan.Extensions.VK_EXT_debug_report.DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT'
+--
+-- -   #VUID-VkDebugMarkerObjectNameInfoEXT-object-01491# @object@ /must/
+--     not be 'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-VkDebugMarkerObjectNameInfoEXT-object-01492# @object@ /must/
+--     be a Vulkan object of the type associated with @objectType@ as
+--     defined in
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#debug-report-object-types>
+--
 -- == Valid Usage (Implicit)
 --
+-- -   #VUID-VkDebugMarkerObjectNameInfoEXT-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT'
+--
+-- -   #VUID-VkDebugMarkerObjectNameInfoEXT-pNext-pNext# @pNext@ /must/ be
+--     @NULL@
+--
+-- -   #VUID-VkDebugMarkerObjectNameInfoEXT-objectType-parameter#
+--     @objectType@ /must/ be a valid
+--     'Vulkan.Extensions.VK_EXT_debug_report.DebugReportObjectTypeEXT'
+--     value
+--
+-- -   #VUID-VkDebugMarkerObjectNameInfoEXT-pObjectName-parameter#
+--     @pObjectName@ /must/ be a null-terminated UTF-8 string
+--
+-- == Host Synchronization
+--
+-- -   Host access to @object@ /must/ be externally synchronized
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_debug_marker VK_EXT_debug_marker>,
@@ -721,29 +802,11 @@
   { -- | @objectType@ is a
     -- 'Vulkan.Extensions.VK_EXT_debug_report.DebugReportObjectTypeEXT'
     -- specifying the type of the object to be named.
-    --
-    -- #VUID-VkDebugMarkerObjectNameInfoEXT-objectType-01490# @objectType@
-    -- /must/ not be
-    -- 'Vulkan.Extensions.VK_EXT_debug_report.DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT'
-    --
-    -- #VUID-VkDebugMarkerObjectNameInfoEXT-objectType-parameter# @objectType@
-    -- /must/ be a valid
-    -- 'Vulkan.Extensions.VK_EXT_debug_report.DebugReportObjectTypeEXT' value
     objectType :: DebugReportObjectTypeEXT
   , -- | @object@ is the object to be named.
-    --
-    -- #VUID-VkDebugMarkerObjectNameInfoEXT-object-01491# @object@ /must/ not
-    -- be 'Vulkan.Core10.APIConstants.NULL_HANDLE'
-    --
-    -- #VUID-VkDebugMarkerObjectNameInfoEXT-object-01492# @object@ /must/ be a
-    -- Vulkan object of the type associated with @objectType@ as defined in
-    -- <https://registry.khronos.org/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@.
-    --
-    -- #VUID-VkDebugMarkerObjectNameInfoEXT-pObjectName-parameter#
-    -- @pObjectName@ /must/ be a null-terminated UTF-8 string
     objectName :: ByteString
   }
   deriving (Typeable)
@@ -797,8 +860,43 @@
 -- being tagged. This can be used by debugging layers to easily filter for
 -- only data that can be used by that implementation.
 --
+-- == Valid Usage
+--
+-- -   #VUID-VkDebugMarkerObjectTagInfoEXT-objectType-01493# @objectType@
+--     /must/ not be
+--     'Vulkan.Extensions.VK_EXT_debug_report.DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT'
+--
+-- -   #VUID-VkDebugMarkerObjectTagInfoEXT-object-01494# @object@ /must/
+--     not be 'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-VkDebugMarkerObjectTagInfoEXT-object-01495# @object@ /must/ be
+--     a Vulkan object of the type associated with @objectType@ as defined
+--     in
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#debug-report-object-types>
+--
 -- == Valid Usage (Implicit)
 --
+-- -   #VUID-VkDebugMarkerObjectTagInfoEXT-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT'
+--
+-- -   #VUID-VkDebugMarkerObjectTagInfoEXT-pNext-pNext# @pNext@ /must/ be
+--     @NULL@
+--
+-- -   #VUID-VkDebugMarkerObjectTagInfoEXT-objectType-parameter#
+--     @objectType@ /must/ be a valid
+--     'Vulkan.Extensions.VK_EXT_debug_report.DebugReportObjectTypeEXT'
+--     value
+--
+-- -   #VUID-VkDebugMarkerObjectTagInfoEXT-pTag-parameter# @pTag@ /must/ be
+--     a valid pointer to an array of @tagSize@ bytes
+--
+-- -   #VUID-VkDebugMarkerObjectTagInfoEXT-tagSize-arraylength# @tagSize@
+--     /must/ be greater than @0@
+--
+-- == Host Synchronization
+--
+-- -   Host access to @object@ /must/ be externally synchronized
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_debug_marker VK_EXT_debug_marker>,
@@ -809,36 +907,15 @@
   { -- | @objectType@ is a
     -- 'Vulkan.Extensions.VK_EXT_debug_report.DebugReportObjectTypeEXT'
     -- specifying the type of the object to be named.
-    --
-    -- #VUID-VkDebugMarkerObjectTagInfoEXT-objectType-01493# @objectType@
-    -- /must/ not be
-    -- 'Vulkan.Extensions.VK_EXT_debug_report.DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT'
-    --
-    -- #VUID-VkDebugMarkerObjectTagInfoEXT-objectType-parameter# @objectType@
-    -- /must/ be a valid
-    -- 'Vulkan.Extensions.VK_EXT_debug_report.DebugReportObjectTypeEXT' value
     objectType :: DebugReportObjectTypeEXT
   , -- | @object@ is the object to be tagged.
-    --
-    -- #VUID-VkDebugMarkerObjectTagInfoEXT-object-01494# @object@ /must/ not be
-    -- 'Vulkan.Core10.APIConstants.NULL_HANDLE'
-    --
-    -- #VUID-VkDebugMarkerObjectTagInfoEXT-object-01495# @object@ /must/ be a
-    -- Vulkan object of the type associated with @objectType@ as defined in
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#debug-report-object-types>
     object :: Word64
   , -- | @tagName@ is a numerical identifier of the tag.
     tagName :: Word64
   , -- | @tagSize@ is the number of bytes of data to attach to the object.
-    --
-    -- #VUID-VkDebugMarkerObjectTagInfoEXT-tagSize-arraylength# @tagSize@
-    -- /must/ be greater than @0@
     tagSize :: Word64
   , -- | @pTag@ is a pointer to an array of @tagSize@ bytes containing the data
     -- to be associated with the object.
-    --
-    -- #VUID-VkDebugMarkerObjectTagInfoEXT-pTag-parameter# @pTag@ /must/ be a
-    -- valid pointer to an array of @tagSize@ bytes
     tag :: Ptr ()
   }
   deriving (Typeable)
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
@@ -265,7 +265,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_debug_marker Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -114,7 +114,7 @@
 --
 -- -   Extending 'Vulkan.Core10.Enums.Result.Result':
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED_EXT'
+--     -   'ERROR_VALIDATION_FAILED_EXT'
 --
 -- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
 --
@@ -143,8 +143,8 @@
 --
 -- To capture events that occur while creating or destroying an instance an
 -- application /can/ link a 'DebugReportCallbackCreateInfoEXT' structure to
--- the @pNext@ element of the
--- 'Vulkan.Core10.DeviceInitialization.InstanceCreateInfo' structure given
+-- the @pNext@ chain of the
+-- 'Vulkan.Core10.DeviceInitialization.InstanceCreateInfo' structure passed
 -- to 'Vulkan.Core10.DeviceInitialization.createInstance'.
 --
 -- Example uses: Create three callback objects. One will log errors and
@@ -251,8 +251,8 @@
 --
 -- __RESOLVED__: Due to the different nature of dispatchable and
 -- nondispatchable handles there is no generic way (that we know of) that
--- works for common compilers with 32bit, 64bit, C and C++. We recommend
--- applications use the same cast that the validation layers use:
+-- works for common C and C++ compilers in both 32-bit and 64-bit ABIs. We
+-- recommend applications use the same cast that the validation layers use:
 --
 -- +
 --
@@ -322,7 +322,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_debug_report Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -331,6 +331,7 @@
                                               , destroyDebugReportCallbackEXT
                                               , debugReportMessageEXT
                                               , pattern STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT
+                                              , pattern ERROR_VALIDATION_FAILED_EXT
                                               , pattern DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT
                                               , pattern DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT
                                               , DebugReportCallbackCreateInfoEXT(..)
@@ -463,6 +464,7 @@
 import Vulkan.Core10.Enums.Result (Result(..))
 import Vulkan.Core10.Enums.StructureType (StructureType)
 import Vulkan.Exception (VulkanException(..))
+import Vulkan.Core10.Enums.Result (Result(ERROR_VALIDATION_FAILED))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT))
 import Vulkan.Core10.Enums.Result (Result(SUCCESS))
 import Vulkan.Extensions.Handles (DebugReportCallbackEXT(..))
@@ -503,6 +505,10 @@
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_debug_report VK_EXT_debug_report>,
@@ -519,7 +525,7 @@
                                 -- called.
                                 DebugReportCallbackCreateInfoEXT
                              -> -- | @pAllocator@ controls host memory allocation as described in the
-                                -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                                -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
                                 -- chapter.
                                 ("allocator" ::: Maybe AllocationCallbacks)
                              -> io (DebugReportCallbackEXT)
@@ -618,7 +624,7 @@
                                  -- active.
                                  DebugReportCallbackEXT
                               -> -- | @pAllocator@ controls host memory allocation as described in the
-                                 -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                                 -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
                                  -- chapter.
                                  ("allocator" ::: Maybe AllocationCallbacks)
                               -> io ()
@@ -665,7 +671,7 @@
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE', @object@ /must/ be a
 --     Vulkan object of the corresponding type associated with @objectType@
 --     as defined in
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#debug-report-object-types>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#debug-report-object-types>
 --
 -- == Valid Usage (Implicit)
 --
@@ -747,6 +753,10 @@
 pattern STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT = STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT
 
 
+-- No documentation found for TopLevel "VK_ERROR_VALIDATION_FAILED_EXT"
+pattern ERROR_VALIDATION_FAILED_EXT = ERROR_VALIDATION_FAILED
+
+
 -- No documentation found for TopLevel "VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT"
 pattern DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT = DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT
 
@@ -779,8 +789,12 @@
 -- A callback may be called from multiple threads simultaneously (if the
 -- application is making Vulkan calls from multiple threads).
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.DeviceInitialization.InstanceCreateInfo'
+--
 -- = See Also
 --
 -- 'PFN_vkDebugReportCallbackEXT',
@@ -800,7 +814,8 @@
     -- #VUID-VkDebugReportCallbackCreateInfoEXT-pfnCallback-parameter#
     -- @pfnCallback@ /must/ be a valid 'PFN_vkDebugReportCallbackEXT' value
     pfnCallback :: PFN_vkDebugReportCallbackEXT
-  , -- | @pUserData@ is user data to be passed to the callback.
+  , -- | @pUserData@ is NULL or an application-defined user data pointer to be
+    -- passed to the callback.
     userData :: Ptr ()
   }
   deriving (Typeable)
@@ -852,6 +867,34 @@
 -- | VkDebugReportFlagBitsEXT - Bitmask specifying events which cause a debug
 -- report callback
 --
+-- = Description
+--
+-- -   'DEBUG_REPORT_ERROR_BIT_EXT' specifies that the application has
+--     violated a valid usage condition of the specification.
+--
+-- -   'DEBUG_REPORT_WARNING_BIT_EXT' specifies use of Vulkan that /may/
+--     expose an application bug. Such cases may not be immediately
+--     harmful, such as a fragment shader outputting to a location with no
+--     attachment. Other cases /may/ point to behavior that is almost
+--     certainly bad when unintended such as using an image whose memory
+--     has not been filled. In general if you see a warning but you know
+--     that the behavior is intended\/desired, then simply ignore the
+--     warning.
+--
+-- -   'DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT' specifies a potentially
+--     non-optimal use of Vulkan, e.g. using
+--     'Vulkan.Core10.CommandBufferBuilding.cmdClearColorImage' when
+--     setting 'Vulkan.Core10.Pass.AttachmentDescription'::@loadOp@ to
+--     'Vulkan.Core10.Enums.AttachmentLoadOp.ATTACHMENT_LOAD_OP_CLEAR'
+--     would have worked.
+--
+-- -   'DEBUG_REPORT_INFORMATION_BIT_EXT' specifies an informational
+--     message such as resource details that may be handy when debugging an
+--     application.
+--
+-- -   'DEBUG_REPORT_DEBUG_BIT_EXT' specifies diagnostic information from
+--     the implementation and layers.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_debug_report VK_EXT_debug_report>,
@@ -859,34 +902,19 @@
 newtype DebugReportFlagBitsEXT = DebugReportFlagBitsEXT Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'DEBUG_REPORT_INFORMATION_BIT_EXT' specifies an informational message
--- such as resource details that may be handy when debugging an
--- application.
+-- No documentation found for Nested "VkDebugReportFlagBitsEXT" "VK_DEBUG_REPORT_INFORMATION_BIT_EXT"
 pattern DEBUG_REPORT_INFORMATION_BIT_EXT = DebugReportFlagBitsEXT 0x00000001
 
--- | 'DEBUG_REPORT_WARNING_BIT_EXT' specifies use of Vulkan that /may/ expose
--- an application bug. Such cases may not be immediately harmful, such as a
--- fragment shader outputting to a location with no attachment. Other cases
--- /may/ point to behavior that is almost certainly bad when unintended
--- such as using an image whose memory has not been filled. In general if
--- you see a warning but you know that the behavior is intended\/desired,
--- then simply ignore the warning.
+-- No documentation found for Nested "VkDebugReportFlagBitsEXT" "VK_DEBUG_REPORT_WARNING_BIT_EXT"
 pattern DEBUG_REPORT_WARNING_BIT_EXT = DebugReportFlagBitsEXT 0x00000002
 
--- | 'DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT' specifies a potentially
--- non-optimal use of Vulkan, e.g. using
--- 'Vulkan.Core10.CommandBufferBuilding.cmdClearColorImage' when setting
--- 'Vulkan.Core10.Pass.AttachmentDescription'::@loadOp@ to
--- 'Vulkan.Core10.Enums.AttachmentLoadOp.ATTACHMENT_LOAD_OP_CLEAR' would
--- have worked.
+-- No documentation found for Nested "VkDebugReportFlagBitsEXT" "VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT"
 pattern DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT = DebugReportFlagBitsEXT 0x00000004
 
--- | 'DEBUG_REPORT_ERROR_BIT_EXT' specifies that the application has violated
--- a valid usage condition of the specification.
+-- No documentation found for Nested "VkDebugReportFlagBitsEXT" "VK_DEBUG_REPORT_ERROR_BIT_EXT"
 pattern DEBUG_REPORT_ERROR_BIT_EXT = DebugReportFlagBitsEXT 0x00000008
 
--- | 'DEBUG_REPORT_DEBUG_BIT_EXT' specifies diagnostic information from the
--- implementation and layers.
+-- No documentation found for Nested "VkDebugReportFlagBitsEXT" "VK_DEBUG_REPORT_DEBUG_BIT_EXT"
 pattern DEBUG_REPORT_DEBUG_BIT_EXT = DebugReportFlagBitsEXT 0x00000010
 
 conNameDebugReportFlagBitsEXT :: String
@@ -1012,10 +1040,14 @@
 --
 -- 'DebugReportObjectTypeEXT' and Vulkan Handle Relationship
 --
--- The primary expected use of
--- 'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED_EXT' is for
--- validation layer testing. It is not expected that an application would
--- see this error code during normal use of the validation layers.
+-- The primary expected use of 'ERROR_VALIDATION_FAILED_EXT' is for
+-- validation layer testing to prevent invalid commands from reaching the
+-- ICD. It is not expected that an application would see this error code
+-- during normal use of the validation layers. If an application returns
+-- 'Vulkan.Core10.FundamentalTypes.TRUE' in
+-- 'Vulkan.Extensions.VK_EXT_debug_utils.DebugUtilsMessengerCallbackDataEXT',
+-- the validation layers will return this error code instead of passing the
+-- command down the dispatch chain.
 --
 -- = See Also
 --
@@ -1407,11 +1439,12 @@
 -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', @object@ /must/ be a Vulkan
 -- object of the corresponding type associated with @objectType@ as defined
 -- in
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#debug-report-object-types>.
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#debug-report-object-types>.
 --
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_debug_report VK_EXT_debug_report>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'DebugReportCallbackCreateInfoEXT', 'DebugReportFlagsEXT',
 -- 'DebugReportObjectTypeEXT'
 type PFN_vkDebugReportCallbackEXT = FunPtr FN_vkDebugReportCallbackEXT
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
@@ -114,7 +114,7 @@
 --
 -- -   Extending 'Vulkan.Core10.Enums.Result.Result':
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED_EXT'
+--     -   'ERROR_VALIDATION_FAILED_EXT'
 --
 -- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
 --
@@ -143,8 +143,8 @@
 --
 -- To capture events that occur while creating or destroying an instance an
 -- application /can/ link a 'DebugReportCallbackCreateInfoEXT' structure to
--- the @pNext@ element of the
--- 'Vulkan.Core10.DeviceInitialization.InstanceCreateInfo' structure given
+-- the @pNext@ chain of the
+-- 'Vulkan.Core10.DeviceInitialization.InstanceCreateInfo' structure passed
 -- to 'Vulkan.Core10.DeviceInitialization.createInstance'.
 --
 -- Example uses: Create three callback objects. One will log errors and
@@ -251,8 +251,8 @@
 --
 -- __RESOLVED__: Due to the different nature of dispatchable and
 -- nondispatchable handles there is no generic way (that we know of) that
--- works for common compilers with 32bit, 64bit, C and C++. We recommend
--- applications use the same cast that the validation layers use:
+-- works for common C and C++ compilers in both 32-bit and 64-bit ABIs. We
+-- recommend applications use the same cast that the validation layers use:
 --
 -- +
 --
@@ -322,7 +322,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_debug_report Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -159,7 +159,10 @@
 --
 --     -   'DebugUtilsMessengerCreateInfoEXT'
 --
--- -   Extending 'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo':
+-- -   Extending
+--     'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.ResourceDescriptorInfoEXT',
+--     'Vulkan.Core10.Sampler.SamplerCreateInfo':
 --
 --     -   'DebugUtilsObjectNameInfoEXT'
 --
@@ -218,8 +221,8 @@
 --
 -- To capture events that occur while creating or destroying an instance an
 -- application /can/ link a 'DebugUtilsMessengerCreateInfoEXT' structure to
--- the @pNext@ element of the
--- 'Vulkan.Core10.DeviceInitialization.InstanceCreateInfo' structure given
+-- the @pNext@ chain of the
+-- 'Vulkan.Core10.DeviceInitialization.InstanceCreateInfo' structure passed
 -- to 'Vulkan.Core10.DeviceInitialization.createInstance'.
 --
 -- Example uses: Create three callback objects. One will log errors and
@@ -473,7 +476,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_debug_utils Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -703,10 +706,14 @@
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_debug_utils VK_EXT_debug_utils>,
@@ -770,11 +777,6 @@
 --     /must/ be a valid pointer to a valid 'DebugUtilsObjectTagInfoEXT'
 --     structure
 --
--- == Host Synchronization
---
--- -   Host access to @pTagInfo->objectHandle@ /must/ be externally
---     synchronized
---
 -- == Return Codes
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
@@ -783,10 +785,14 @@
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_debug_utils VK_EXT_debug_utils>,
@@ -820,6 +826,21 @@
 
 -- | vkQueueBeginDebugUtilsLabelEXT - Open a queue debug label region
 --
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkQueueBeginDebugUtilsLabelEXT-queue-parameter# @queue@ /must/
+--     be a valid 'Vulkan.Core10.Handles.Queue' handle
+--
+-- -   #VUID-vkQueueBeginDebugUtilsLabelEXT-pLabelInfo-parameter#
+--     @pLabelInfo@ /must/ be a valid pointer to a valid
+--     'DebugUtilsLabelEXT' structure
+--
+-- == Host Synchronization
+--
+-- -   Host access to @queue@ /must/ be externally synchronized if it was
+--     not created with
+--     'Vulkan.Core10.Enums.DeviceQueueCreateFlagBits.DEVICE_QUEUE_CREATE_INTERNALLY_SYNCHRONIZED_BIT_KHR'
+--
 -- == Command Properties
 --
 -- \'
@@ -837,15 +858,9 @@
 queueBeginDebugUtilsLabelEXT :: forall io
                               . (MonadIO io)
                              => -- | @queue@ is the queue in which to start a debug label region.
-                                --
-                                -- #VUID-vkQueueBeginDebugUtilsLabelEXT-queue-parameter# @queue@ /must/ be
-                                -- a valid 'Vulkan.Core10.Handles.Queue' handle
                                 Queue
                              -> -- | @pLabelInfo@ is a pointer to a 'DebugUtilsLabelEXT' structure specifying
                                 -- parameters of the label region to open.
-                                --
-                                -- #VUID-vkQueueBeginDebugUtilsLabelEXT-pLabelInfo-parameter# @pLabelInfo@
-                                -- /must/ be a valid pointer to a valid 'DebugUtilsLabelEXT' structure
                                 ("labelInfo" ::: DebugUtilsLabelEXT)
                              -> io ()
 queueBeginDebugUtilsLabelEXT queue labelInfo = liftIO . evalContT $ do
@@ -885,6 +900,12 @@
 -- -   #VUID-vkQueueEndDebugUtilsLabelEXT-queue-parameter# @queue@ /must/
 --     be a valid 'Vulkan.Core10.Handles.Queue' handle
 --
+-- == Host Synchronization
+--
+-- -   Host access to @queue@ /must/ be externally synchronized if it was
+--     not created with
+--     'Vulkan.Core10.Enums.DeviceQueueCreateFlagBits.DEVICE_QUEUE_CREATE_INTERNALLY_SYNCHRONIZED_BIT_KHR'
+--
 -- == Command Properties
 --
 -- \'
@@ -923,6 +944,21 @@
 
 -- | vkQueueInsertDebugUtilsLabelEXT - Insert a label into a queue
 --
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkQueueInsertDebugUtilsLabelEXT-queue-parameter# @queue@
+--     /must/ be a valid 'Vulkan.Core10.Handles.Queue' handle
+--
+-- -   #VUID-vkQueueInsertDebugUtilsLabelEXT-pLabelInfo-parameter#
+--     @pLabelInfo@ /must/ be a valid pointer to a valid
+--     'DebugUtilsLabelEXT' structure
+--
+-- == Host Synchronization
+--
+-- -   Host access to @queue@ /must/ be externally synchronized if it was
+--     not created with
+--     'Vulkan.Core10.Enums.DeviceQueueCreateFlagBits.DEVICE_QUEUE_CREATE_INTERNALLY_SYNCHRONIZED_BIT_KHR'
+--
 -- == Command Properties
 --
 -- \'
@@ -940,15 +976,9 @@
 queueInsertDebugUtilsLabelEXT :: forall io
                                . (MonadIO io)
                               => -- | @queue@ is the queue into which a debug label will be inserted.
-                                 --
-                                 -- #VUID-vkQueueInsertDebugUtilsLabelEXT-queue-parameter# @queue@ /must/ be
-                                 -- a valid 'Vulkan.Core10.Handles.Queue' handle
                                  Queue
                               -> -- | @pLabelInfo@ is a pointer to a 'DebugUtilsLabelEXT' structure specifying
                                  -- parameters of the label to insert.
-                                 --
-                                 -- #VUID-vkQueueInsertDebugUtilsLabelEXT-pLabelInfo-parameter# @pLabelInfo@
-                                 -- /must/ be a valid pointer to a valid 'DebugUtilsLabelEXT' structure
                                  ("labelInfo" ::: DebugUtilsLabelEXT)
                               -> io ()
 queueInsertDebugUtilsLabelEXT queue labelInfo = liftIO . evalContT $ do
@@ -988,10 +1018,15 @@
 --
 -- -   #VUID-vkCmdBeginDebugUtilsLabelEXT-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics, or compute operations
---
--- -   #VUID-vkCmdBeginDebugUtilsLabelEXT-videocoding# This command /must/
---     only be called outside of a video coding scope
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT',
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT',
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_OPTICAL_FLOW_BIT_NV',
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_TRANSFER_BIT',
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits VK_QUEUE_VIDEO_DECODE_BIT_KHR>,
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits VK_QUEUE_VIDEO_ENCODE_BIT_KHR>
+--     operations
 --
 -- == Host Synchronization
 --
@@ -1007,10 +1042,19 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | Action                                                                                                                                 |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | Compute                                                                                                               | State                                                                                                                                  |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Both                                                                                                                        | VK_QUEUE_COMPUTE_BIT                                                                                                  | State                                                                                                                                  |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | VK_QUEUE_GRAPHICS_BIT                                                                                                 |                                                                                                                                        |
+-- |                                                                                                                            |                                                                                                                        |                                                                                                                             | VK_QUEUE_OPTICAL_FLOW_BIT_NV                                                                                          |                                                                                                                                        |
+-- |                                                                                                                            |                                                                                                                        |                                                                                                                             | VK_QUEUE_TRANSFER_BIT                                                                                                 |                                                                                                                                        |
+-- |                                                                                                                            |                                                                                                                        |                                                                                                                             | VK_QUEUE_VIDEO_DECODE_BIT_KHR                                                                                         |                                                                                                                                        |
+-- |                                                                                                                            |                                                                                                                        |                                                                                                                             | VK_QUEUE_VIDEO_ENCODE_BIT_KHR                                                                                         |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdBeginDebugUtilsLabelEXT is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_debug_utils VK_EXT_debug_utils>,
@@ -1100,10 +1144,15 @@
 --
 -- -   #VUID-vkCmdEndDebugUtilsLabelEXT-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics, or compute operations
---
--- -   #VUID-vkCmdEndDebugUtilsLabelEXT-videocoding# This command /must/
---     only be called outside of a video coding scope
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT',
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT',
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_OPTICAL_FLOW_BIT_NV',
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_TRANSFER_BIT',
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits VK_QUEUE_VIDEO_DECODE_BIT_KHR>,
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits VK_QUEUE_VIDEO_ENCODE_BIT_KHR>
+--     operations
 --
 -- == Host Synchronization
 --
@@ -1119,10 +1168,19 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | Action                                                                                                                                 |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | Compute                                                                                                               | State                                                                                                                                  |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Both                                                                                                                        | VK_QUEUE_COMPUTE_BIT                                                                                                  | State                                                                                                                                  |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | VK_QUEUE_GRAPHICS_BIT                                                                                                 |                                                                                                                                        |
+-- |                                                                                                                            |                                                                                                                        |                                                                                                                             | VK_QUEUE_OPTICAL_FLOW_BIT_NV                                                                                          |                                                                                                                                        |
+-- |                                                                                                                            |                                                                                                                        |                                                                                                                             | VK_QUEUE_TRANSFER_BIT                                                                                                 |                                                                                                                                        |
+-- |                                                                                                                            |                                                                                                                        |                                                                                                                             | VK_QUEUE_VIDEO_DECODE_BIT_KHR                                                                                         |                                                                                                                                        |
+-- |                                                                                                                            |                                                                                                                        |                                                                                                                             | VK_QUEUE_VIDEO_ENCODE_BIT_KHR                                                                                         |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdEndDebugUtilsLabelEXT is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_debug_utils VK_EXT_debug_utils>,
@@ -1168,10 +1226,15 @@
 --
 -- -   #VUID-vkCmdInsertDebugUtilsLabelEXT-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics, or compute operations
---
--- -   #VUID-vkCmdInsertDebugUtilsLabelEXT-videocoding# This command /must/
---     only be called outside of a video coding scope
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT',
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT',
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_OPTICAL_FLOW_BIT_NV',
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_TRANSFER_BIT',
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits VK_QUEUE_VIDEO_DECODE_BIT_KHR>,
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits VK_QUEUE_VIDEO_ENCODE_BIT_KHR>
+--     operations
 --
 -- == Host Synchronization
 --
@@ -1187,10 +1250,19 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | Action                                                                                                                                 |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | Compute                                                                                                               |                                                                                                                                        |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Both                                                                                                                        | VK_QUEUE_COMPUTE_BIT                                                                                                  | State                                                                                                                                  |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | VK_QUEUE_GRAPHICS_BIT                                                                                                 |                                                                                                                                        |
+-- |                                                                                                                            |                                                                                                                        |                                                                                                                             | VK_QUEUE_OPTICAL_FLOW_BIT_NV                                                                                          |                                                                                                                                        |
+-- |                                                                                                                            |                                                                                                                        |                                                                                                                             | VK_QUEUE_TRANSFER_BIT                                                                                                 |                                                                                                                                        |
+-- |                                                                                                                            |                                                                                                                        |                                                                                                                             | VK_QUEUE_VIDEO_DECODE_BIT_KHR                                                                                         |                                                                                                                                        |
+-- |                                                                                                                            |                                                                                                                        |                                                                                                                             | VK_QUEUE_VIDEO_ENCODE_BIT_KHR                                                                                         |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdInsertDebugUtilsLabelEXT is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_debug_utils VK_EXT_debug_utils>,
@@ -1200,7 +1272,8 @@
                             => -- | @commandBuffer@ is the command buffer into which the command is
                                -- recorded.
                                CommandBuffer
-                            -> -- No documentation found for Nested "vkCmdInsertDebugUtilsLabelEXT" "pLabelInfo"
+                            -> -- | @pLabelInfo@ is a pointer to a 'DebugUtilsLabelEXT' structure specifying
+                               -- parameters of the label to insert.
                                ("labelInfo" ::: DebugUtilsLabelEXT)
                             -> io ()
 cmdInsertDebugUtilsLabelEXT commandBuffer labelInfo = liftIO . evalContT $ do
@@ -1252,6 +1325,10 @@
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- The application /must/ ensure that 'createDebugUtilsMessengerEXT' is not
 -- executed in parallel with any Vulkan command that is also called with
 -- @instance@ or child of @instance@ as the dispatchable argument.
@@ -1272,7 +1349,7 @@
                                 -- conditions under which this messenger will trigger the callback.
                                 DebugUtilsMessengerCreateInfoEXT
                              -> -- | @pAllocator@ controls host memory allocation as described in the
-                                -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                                -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
                                 -- chapter.
                                 ("allocator" ::: Maybe AllocationCallbacks)
                              -> io (DebugUtilsMessengerEXT)
@@ -1375,7 +1452,7 @@
                                  -- active.
                                  DebugUtilsMessengerEXT
                               -> -- | @pAllocator@ controls host memory allocation as described in the
-                                 -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                                 -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
                                  -- chapter.
                                  ("allocator" ::: Maybe AllocationCallbacks)
                               -> io ()
@@ -1487,14 +1564,22 @@
 -- set name is removed.
 --
 -- The
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-graphicsPipelineLibrary graphicsPipelineLibrary>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-graphicsPipelineLibrary graphicsPipelineLibrary>
 -- feature allows the specification of pipelines without the creation of
 -- 'Vulkan.Core10.Handles.ShaderModule' objects beforehand. In order to
 -- continue to allow naming these shaders independently,
 -- 'DebugUtilsObjectNameInfoEXT' /can/ be included in the @pNext@ chain of
--- 'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo', which associates
--- a static name with that particular shader.
+-- 'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo', which
+-- associates a static name with that particular shader.
 --
+-- This structure /can/ be included in the @pNext@ chain of
+-- 'Vulkan.Extensions.VK_EXT_descriptor_heap.ResourceDescriptorInfoEXT' or
+-- 'Vulkan.Core10.Sampler.SamplerCreateInfo' to label a descriptor or
+-- embedded sampler. This structure /may/ be ignored when included in the
+-- @pNext@ chain of 'Vulkan.Core10.Sampler.SamplerCreateInfo' when creating
+-- a sampler object. The label /must/ remain valid while the descriptor is
+-- valid; it /may/ be discarded if it becomes invalid.
+--
 -- == Valid Usage
 --
 -- -   #VUID-VkDebugUtilsObjectNameInfoEXT-objectType-02589# If
@@ -1507,7 +1592,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#debugging-object-types  and Vulkan Handle Relationship>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#debugging-object-types  and Vulkan Handle Relationship>
 --     table
 --
 -- == Valid Usage (Implicit)
@@ -1523,6 +1608,16 @@
 --     @pObjectName@ is not @NULL@, @pObjectName@ /must/ be a
 --     null-terminated UTF-8 string
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo'
+--
+--     -   'Vulkan.Extensions.VK_EXT_descriptor_heap.ResourceDescriptorInfoEXT'
+--
+--     -   'Vulkan.Core10.Sampler.SamplerCreateInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_debug_utils VK_EXT_debug_utils>,
@@ -1592,8 +1687,39 @@
 -- being tagged. This can be used by debugging layers to easily filter for
 -- only data that can be used by that implementation.
 --
+-- == Valid Usage
+--
+-- -   #VUID-VkDebugUtilsObjectTagInfoEXT-objectType-01908# @objectType@
+--     /must/ not be 'Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_UNKNOWN'
+--
+-- -   #VUID-VkDebugUtilsObjectTagInfoEXT-objectHandle-01910#
+--     @objectHandle@ /must/ be a valid Vulkan handle of the type
+--     associated with @objectType@ as defined in the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#debugging-object-types  and Vulkan Handle Relationship>
+--     table
+--
 -- == Valid Usage (Implicit)
 --
+-- -   #VUID-VkDebugUtilsObjectTagInfoEXT-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT'
+--
+-- -   #VUID-VkDebugUtilsObjectTagInfoEXT-pNext-pNext# @pNext@ /must/ be
+--     @NULL@
+--
+-- -   #VUID-VkDebugUtilsObjectTagInfoEXT-objectType-parameter#
+--     @objectType@ /must/ be a valid
+--     'Vulkan.Core10.Enums.ObjectType.ObjectType' value
+--
+-- -   #VUID-VkDebugUtilsObjectTagInfoEXT-pTag-parameter# @pTag@ /must/ be
+--     a valid pointer to an array of @tagSize@ bytes
+--
+-- -   #VUID-VkDebugUtilsObjectTagInfoEXT-tagSize-arraylength# @tagSize@
+--     /must/ be greater than @0@
+--
+-- == Host Synchronization
+--
+-- -   Host access to @objectHandle@ /must/ be externally synchronized
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_debug_utils VK_EXT_debug_utils>,
@@ -1603,33 +1729,15 @@
 data DebugUtilsObjectTagInfoEXT = DebugUtilsObjectTagInfoEXT
   { -- | @objectType@ is a 'Vulkan.Core10.Enums.ObjectType.ObjectType' specifying
     -- the type of the object to be named.
-    --
-    -- #VUID-VkDebugUtilsObjectTagInfoEXT-objectType-01908# @objectType@ /must/
-    -- not be 'Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_UNKNOWN'
-    --
-    -- #VUID-VkDebugUtilsObjectTagInfoEXT-objectType-parameter# @objectType@
-    -- /must/ be a valid 'Vulkan.Core10.Enums.ObjectType.ObjectType' value
     objectType :: ObjectType
   , -- | @objectHandle@ is the object to be tagged.
-    --
-    -- #VUID-VkDebugUtilsObjectTagInfoEXT-objectHandle-01910# @objectHandle@
-    -- /must/ be a valid Vulkan handle of the type associated with @objectType@
-    -- as defined in the
-    -- <https://registry.khronos.org/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.
     tagName :: Word64
   , -- | @tagSize@ is the number of bytes of data to attach to the object.
-    --
-    -- #VUID-VkDebugUtilsObjectTagInfoEXT-tagSize-arraylength# @tagSize@ /must/
-    -- be greater than @0@
     tagSize :: Word64
   , -- | @pTag@ is a pointer to an array of @tagSize@ bytes containing the data
     -- to be associated with the object.
-    --
-    -- #VUID-VkDebugUtilsObjectTagInfoEXT-pTag-parameter# @pTag@ /must/ be a
-    -- valid pointer to an array of @tagSize@ bytes
     tag :: Ptr ()
   }
   deriving (Typeable)
@@ -1812,8 +1920,12 @@
 -- A callback /can/ be called from multiple threads simultaneously (if the
 -- application is making Vulkan calls from multiple threads).
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.DeviceInitialization.InstanceCreateInfo'
+--
 -- = See Also
 --
 -- 'PFN_vkDebugUtilsMessengerCallbackEXT',
@@ -1855,7 +1967,8 @@
     -- @pfnUserCallback@ /must/ be a valid
     -- 'PFN_vkDebugUtilsMessengerCallbackEXT' value
     pfnUserCallback :: PFN_vkDebugUtilsMessengerCallbackEXT
-  , -- | @pUserData@ is user data to be passed to the callback.
+  , -- | @pUserData@ is NULL or an application-defined user data pointer to be
+    -- passed to the callback.
     userData :: Ptr ()
   }
   deriving (Typeable)
@@ -1952,7 +2065,7 @@
 --     'Vulkan.Extensions.VK_EXT_device_address_binding_report.DeviceAddressBindingCallbackDataEXT'
 --
 -- -   #VUID-VkDebugUtilsMessengerCallbackDataEXT-sType-unique# The @sType@
---     value of each struct in the @pNext@ chain /must/ be unique
+--     value of each structure in the @pNext@ chain /must/ be unique
 --
 -- -   #VUID-VkDebugUtilsMessengerCallbackDataEXT-flags-zerobitmask#
 --     @flags@ /must/ be @0@
@@ -1996,33 +2109,33 @@
   , -- | @pMessageIdName@ is @NULL@ or a null-terminated UTF-8 string that
     -- identifies the particular message ID that is associated with the
     -- provided message. If the message corresponds to a validation layer
-    -- message, then this string may contain the portion of the Vulkan
-    -- specification that is believed to have been violated.
+    -- message, then this string will be the VUID.
     messageIdName :: Maybe ByteString
   , -- | @messageIdNumber@ is the ID number of the triggering message. If the
     -- message corresponds to a validation layer message, then this number is
-    -- related to the internal number associated with the message being
-    -- triggered.
+    -- an internal hash of the VUID.
     messageIdNumber :: Int32
   , -- | @pMessage@ is @NULL@ if @messageTypes@ is equal to
     -- 'DEBUG_UTILS_MESSAGE_TYPE_DEVICE_ADDRESS_BINDING_BIT_EXT', or a
-    -- null-terminated UTF-8 string detailing the trigger conditions.
+    -- null-terminated UTF-8 string detailing the trigger conditions. If the
+    -- message corresponds to a validation layer message, then this will
+    -- contain the main message with the specification text and link.
     message :: Maybe ByteString
   , -- | @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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#debugging-queue-labels Queue Labels>
+    -- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#debugging-command-buffer-labels Command Buffer Labels>
+    -- <https://registry.khronos.org/vulkan/specs/latest/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'
-    -- objects related to the detected issue. The array is roughly in order or
+    -- objects related to the detected issue. The array is roughly in order of
     -- importance, but the 0th element is always guaranteed to be the most
     -- important object for this message.
     objects :: Vector DebugUtilsObjectNameInfoEXT
@@ -2212,6 +2325,27 @@
 --
 -- = Description
 --
+-- -   'DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT' specifies the most
+--     verbose output indicating all diagnostic messages from the Vulkan
+--     loader, layers, and drivers should be captured.
+--
+-- -   'DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT' specifies an
+--     informational message such as resource details that may be handy
+--     when debugging an application.
+--
+-- -   'DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT' specifies use of
+--     Vulkan that /may/ expose an application bug. Such cases may not be
+--     immediately harmful, such as a fragment shader outputting to a
+--     location with no attachment. Other cases /may/ point to behavior
+--     that is almost certainly bad when unintended such as using an image
+--     whose memory has not been filled. In general if you see a warning
+--     but you know that the behavior is intended\/desired, then simply
+--     ignore the warning.
+--
+-- -   'DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT' specifies that the
+--     application has violated a valid usage condition of the
+--     specification.
+--
 -- The values of 'DebugUtilsMessageSeverityFlagBitsEXT' are sorted based on
 -- severity. The higher the flag value, the more severe the message. This
 -- allows for simple boolean operation comparisons when looking at
@@ -2234,27 +2368,16 @@
 newtype DebugUtilsMessageSeverityFlagBitsEXT = DebugUtilsMessageSeverityFlagBitsEXT Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT' specifies the most
--- verbose output indicating all diagnostic messages from the Vulkan
--- loader, layers, and drivers should be captured.
+-- No documentation found for Nested "VkDebugUtilsMessageSeverityFlagBitsEXT" "VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT"
 pattern DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT = DebugUtilsMessageSeverityFlagBitsEXT 0x00000001
 
--- | 'DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT' specifies an informational
--- message such as resource details that may be handy when debugging an
--- application.
+-- No documentation found for Nested "VkDebugUtilsMessageSeverityFlagBitsEXT" "VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT"
 pattern DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT = DebugUtilsMessageSeverityFlagBitsEXT 0x00000010
 
--- | 'DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT' specifies use of Vulkan
--- that /may/ expose an application bug. Such cases may not be immediately
--- harmful, such as a fragment shader outputting to a location with no
--- attachment. Other cases /may/ point to behavior that is almost certainly
--- bad when unintended such as using an image whose memory has not been
--- filled. In general if you see a warning but you know that the behavior
--- is intended\/desired, then simply ignore the warning.
+-- No documentation found for Nested "VkDebugUtilsMessageSeverityFlagBitsEXT" "VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT"
 pattern DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT = DebugUtilsMessageSeverityFlagBitsEXT 0x00000100
 
--- | 'DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT' specifies that the
--- application has violated a valid usage condition of the specification.
+-- No documentation found for Nested "VkDebugUtilsMessageSeverityFlagBitsEXT" "VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT"
 pattern DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT = DebugUtilsMessageSeverityFlagBitsEXT 0x00001000
 
 conNameDebugUtilsMessageSeverityFlagBitsEXT :: String
@@ -2305,6 +2428,27 @@
 -- | VkDebugUtilsMessageTypeFlagBitsEXT - Bitmask specifying which types of
 -- events cause a debug messenger callback
 --
+-- = Description
+--
+-- -   'DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT' specifies that some
+--     general event has occurred. This is typically a non-specification,
+--     non-performance event.
+--
+-- -   'DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT' specifies that
+--     something has occurred during validation against the Vulkan
+--     specification that may indicate invalid behavior.
+--
+-- -   'DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT' specifies a
+--     potentially non-optimal use of Vulkan, e.g. using
+--     'Vulkan.Core10.CommandBufferBuilding.cmdClearColorImage' when
+--     setting 'Vulkan.Core10.Pass.AttachmentDescription'::@loadOp@ to
+--     'Vulkan.Core10.Enums.AttachmentLoadOp.ATTACHMENT_LOAD_OP_CLEAR'
+--     would have worked.
+--
+-- -   'DEBUG_UTILS_MESSAGE_TYPE_DEVICE_ADDRESS_BINDING_BIT_EXT' specifies
+--     that the implementation has modified the set of GPU-visible virtual
+--     addresses associated with a Vulkan object.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_debug_utils VK_EXT_debug_utils>,
@@ -2312,27 +2456,16 @@
 newtype DebugUtilsMessageTypeFlagBitsEXT = DebugUtilsMessageTypeFlagBitsEXT Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT' specifies that some general
--- event has occurred. This is typically a non-specification,
--- non-performance event.
+-- No documentation found for Nested "VkDebugUtilsMessageTypeFlagBitsEXT" "VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT"
 pattern DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT = DebugUtilsMessageTypeFlagBitsEXT 0x00000001
 
--- | 'DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT' specifies that something
--- has occurred during validation against the Vulkan specification that may
--- indicate invalid behavior.
+-- No documentation found for Nested "VkDebugUtilsMessageTypeFlagBitsEXT" "VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT"
 pattern DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT = DebugUtilsMessageTypeFlagBitsEXT 0x00000002
 
--- | 'DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT' specifies a potentially
--- non-optimal use of Vulkan, e.g. using
--- 'Vulkan.Core10.CommandBufferBuilding.cmdClearColorImage' when setting
--- 'Vulkan.Core10.Pass.AttachmentDescription'::@loadOp@ to
--- 'Vulkan.Core10.Enums.AttachmentLoadOp.ATTACHMENT_LOAD_OP_CLEAR' would
--- have worked.
+-- No documentation found for Nested "VkDebugUtilsMessageTypeFlagBitsEXT" "VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT"
 pattern DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT = DebugUtilsMessageTypeFlagBitsEXT 0x00000004
 
--- | 'DEBUG_UTILS_MESSAGE_TYPE_DEVICE_ADDRESS_BINDING_BIT_EXT' specifies that
--- the implementation has modified the set of GPU-visible virtual addresses
--- associated with a Vulkan object.
+-- No documentation found for Nested "VkDebugUtilsMessageTypeFlagBitsEXT" "VK_DEBUG_UTILS_MESSAGE_TYPE_DEVICE_ADDRESS_BINDING_BIT_EXT"
 pattern DEBUG_UTILS_MESSAGE_TYPE_DEVICE_ADDRESS_BINDING_BIT_EXT = DebugUtilsMessageTypeFlagBitsEXT 0x00000008
 
 conNameDebugUtilsMessageTypeFlagBitsEXT :: String
@@ -2398,6 +2531,7 @@
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_debug_utils VK_EXT_debug_utils>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'DebugUtilsMessageSeverityFlagBitsEXT', 'DebugUtilsMessageTypeFlagsEXT',
 -- 'DebugUtilsMessengerCallbackDataEXT', 'DebugUtilsMessengerCreateInfoEXT'
 type PFN_vkDebugUtilsMessengerCallbackEXT = FunPtr FN_vkDebugUtilsMessengerCallbackEXT
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
@@ -159,7 +159,10 @@
 --
 --     -   'DebugUtilsMessengerCreateInfoEXT'
 --
--- -   Extending 'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo':
+-- -   Extending
+--     'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.ResourceDescriptorInfoEXT',
+--     'Vulkan.Core10.Sampler.SamplerCreateInfo':
 --
 --     -   'DebugUtilsObjectNameInfoEXT'
 --
@@ -218,8 +221,8 @@
 --
 -- To capture events that occur while creating or destroying an instance an
 -- application /can/ link a 'DebugUtilsMessengerCreateInfoEXT' structure to
--- the @pNext@ element of the
--- 'Vulkan.Core10.DeviceInitialization.InstanceCreateInfo' structure given
+-- the @pNext@ chain of the
+-- 'Vulkan.Core10.DeviceInitialization.InstanceCreateInfo' structure passed
 -- to 'Vulkan.Core10.DeviceInitialization.createInstance'.
 --
 -- Example uses: Create three callback objects. One will log errors and
@@ -473,7 +476,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_debug_utils Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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_bias_control.hs b/src/Vulkan/Extensions/VK_EXT_depth_bias_control.hs
--- a/src/Vulkan/Extensions/VK_EXT_depth_bias_control.hs
+++ b/src/Vulkan/Extensions/VK_EXT_depth_bias_control.hs
@@ -73,8 +73,9 @@
 --
 -- This extension adds a new structure, 'DepthBiasRepresentationInfoEXT',
 -- that can be added to a @pNext@ chain of
--- 'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo' and allows
--- setting the scaling and representation of depth bias for a pipeline.
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineRasterizationStateCreateInfo'
+-- and allows setting the scaling and representation of depth bias for a
+-- pipeline.
 --
 -- This state can also be set dynamically by using the new structure
 -- mentioned above in combination with the new 'cmdSetDepthBias2EXT'
@@ -89,7 +90,7 @@
 -- -   'DepthBiasInfoEXT'
 --
 -- -   Extending 'DepthBiasInfoEXT',
---     'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo':
+--     'Vulkan.Core10.GraphicsPipeline.PipelineRasterizationStateCreateInfo':
 --
 --     -   'DepthBiasRepresentationInfoEXT'
 --
@@ -130,7 +131,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_depth_bias_control Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_depth_bias_control Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -246,7 +247,8 @@
 --
 -- -   #VUID-vkCmdSetDepthBias2EXT-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdSetDepthBias2EXT-videocoding# This command /must/ only be
 --     called outside of a video coding scope
@@ -265,10 +267,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
 -- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdSetDepthBias2EXT is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_depth_bias_control VK_EXT_depth_bias_control>,
@@ -307,7 +314,7 @@
 -- == Valid Usage
 --
 -- -   #VUID-VkDepthBiasInfoEXT-depthBiasClamp-08950# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-depthBiasClamp depthBiasClamp>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-depthBiasClamp depthBiasClamp>
 --     feature is not enabled, @depthBiasClamp@ /must/ be @0.0@
 --
 -- == Valid Usage (Implicit)
@@ -319,7 +326,7 @@
 --     pointer to a valid instance of 'DepthBiasRepresentationInfoEXT'
 --
 -- -   #VUID-VkDepthBiasInfoEXT-sType-unique# The @sType@ value of each
---     struct in the @pNext@ chain /must/ be unique
+--     structure in the @pNext@ chain /must/ be unique
 --
 -- = See Also
 --
@@ -403,18 +410,18 @@
 --
 -- -   #VUID-VkDepthBiasRepresentationInfoEXT-leastRepresentableValueForceUnormRepresentation-08947#
 --     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-leastRepresentableValueForceUnormRepresentation leastRepresentableValueForceUnormRepresentation>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-leastRepresentableValueForceUnormRepresentation leastRepresentableValueForceUnormRepresentation>
 --     feature is not enabled, @depthBiasRepresentation@ /must/ not be
 --     'DEPTH_BIAS_REPRESENTATION_LEAST_REPRESENTABLE_VALUE_FORCE_UNORM_EXT'
 --
 -- -   #VUID-VkDepthBiasRepresentationInfoEXT-floatRepresentation-08948# If
 --     the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-floatRepresentation floatRepresentation>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-floatRepresentation floatRepresentation>
 --     feature is not enabled, @depthBiasRepresentation@ /must/ not be
 --     'DEPTH_BIAS_REPRESENTATION_FLOAT_EXT'
 --
 -- -   #VUID-VkDepthBiasRepresentationInfoEXT-depthBiasExact-08949# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-depthBiasExact depthBiasExact>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-depthBiasExact depthBiasExact>
 --     feature is not enabled, @depthBiasExact@ /must/ be
 --     'Vulkan.Core10.FundamentalTypes.FALSE'
 --
@@ -428,6 +435,14 @@
 --     @depthBiasRepresentation@ /must/ be a valid
 --     'DepthBiasRepresentationEXT' value
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'DepthBiasInfoEXT'
+--
+--     -   'Vulkan.Core10.GraphicsPipeline.PipelineRasterizationStateCreateInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_depth_bias_control VK_EXT_depth_bias_control>,
@@ -490,8 +505,14 @@
 --
 -- This structure describes the following feature:
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_depth_bias_control VK_EXT_depth_bias_control>,
@@ -573,6 +594,22 @@
 
 -- | VkDepthBiasRepresentationEXT - Specify the depth bias representation
 --
+-- = Description
+--
+-- -   'DEPTH_BIAS_REPRESENTATION_LEAST_REPRESENTABLE_VALUE_FORMAT_EXT'
+--     specifies that the depth bias representation is a factor of the
+--     format’s r as described in
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-depthbias-computation>.
+--
+-- -   'DEPTH_BIAS_REPRESENTATION_LEAST_REPRESENTABLE_VALUE_FORCE_UNORM_EXT'
+--     specifies that the depth bias representation is a factor of a
+--     constant r defined by the bit-size or mantissa of the format as
+--     described in
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-depthbias-computation>.
+--
+-- -   'DEPTH_BIAS_REPRESENTATION_FLOAT_EXT' specifies that the depth bias
+--     representation is a factor of constant r equal to 1.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_depth_bias_control VK_EXT_depth_bias_control>,
@@ -580,20 +617,13 @@
 newtype DepthBiasRepresentationEXT = DepthBiasRepresentationEXT Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'DEPTH_BIAS_REPRESENTATION_LEAST_REPRESENTABLE_VALUE_FORMAT_EXT'
--- specifies that the depth bias representation is a factor of the format’s
--- r as described in
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-depthbias-computation>.
+-- No documentation found for Nested "VkDepthBiasRepresentationEXT" "VK_DEPTH_BIAS_REPRESENTATION_LEAST_REPRESENTABLE_VALUE_FORMAT_EXT"
 pattern DEPTH_BIAS_REPRESENTATION_LEAST_REPRESENTABLE_VALUE_FORMAT_EXT = DepthBiasRepresentationEXT 0
 
--- | 'DEPTH_BIAS_REPRESENTATION_LEAST_REPRESENTABLE_VALUE_FORCE_UNORM_EXT'
--- specifies that the depth bias representation is a factor of a constant r
--- defined by the bit-size or mantissa of the format as described in
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-depthbias-computation>.
+-- No documentation found for Nested "VkDepthBiasRepresentationEXT" "VK_DEPTH_BIAS_REPRESENTATION_LEAST_REPRESENTABLE_VALUE_FORCE_UNORM_EXT"
 pattern DEPTH_BIAS_REPRESENTATION_LEAST_REPRESENTABLE_VALUE_FORCE_UNORM_EXT = DepthBiasRepresentationEXT 1
 
--- | 'DEPTH_BIAS_REPRESENTATION_FLOAT_EXT' specifies that the depth bias
--- representation is a factor of constant r equal to 1.
+-- No documentation found for Nested "VkDepthBiasRepresentationEXT" "VK_DEPTH_BIAS_REPRESENTATION_FLOAT_EXT"
 pattern DEPTH_BIAS_REPRESENTATION_FLOAT_EXT = DepthBiasRepresentationEXT 2
 
 {-# COMPLETE
diff --git a/src/Vulkan/Extensions/VK_EXT_depth_bias_control.hs-boot b/src/Vulkan/Extensions/VK_EXT_depth_bias_control.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_depth_bias_control.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_depth_bias_control.hs-boot
@@ -73,8 +73,9 @@
 --
 -- This extension adds a new structure, 'DepthBiasRepresentationInfoEXT',
 -- that can be added to a @pNext@ chain of
--- 'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo' and allows
--- setting the scaling and representation of depth bias for a pipeline.
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineRasterizationStateCreateInfo'
+-- and allows setting the scaling and representation of depth bias for a
+-- pipeline.
 --
 -- This state can also be set dynamically by using the new structure
 -- mentioned above in combination with the new 'cmdSetDepthBias2EXT'
@@ -89,7 +90,7 @@
 -- -   'DepthBiasInfoEXT'
 --
 -- -   Extending 'DepthBiasInfoEXT',
---     'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo':
+--     'Vulkan.Core10.GraphicsPipeline.PipelineRasterizationStateCreateInfo':
 --
 --     -   'DepthBiasRepresentationInfoEXT'
 --
@@ -130,7 +131,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_depth_bias_control Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_depth_bias_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_clamp_control.hs b/src/Vulkan/Extensions/VK_EXT_depth_clamp_control.hs
--- a/src/Vulkan/Extensions/VK_EXT_depth_clamp_control.hs
+++ b/src/Vulkan/Extensions/VK_EXT_depth_clamp_control.hs
@@ -74,7 +74,8 @@
 --
 --     -   'PhysicalDeviceDepthClampControlFeaturesEXT'
 --
--- -   Extending 'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo':
+-- -   Extending
+--     'Vulkan.Core10.GraphicsPipeline.PipelineViewportStateCreateInfo':
 --
 --     -   'PipelineViewportDepthClampControlCreateInfoEXT'
 --
@@ -137,7 +138,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_depth_clamp_control Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_depth_clamp_control Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -222,11 +223,11 @@
 --
 -- This command sets the viewport depth clamp range for subsequent drawing
 -- commands when drawing using
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-objects shader objects>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader objects>,
 -- or when the graphics pipeline is created with
 -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT'
 -- set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
 -- Otherwise, this state is specified by the
 -- 'PipelineViewportDepthClampControlCreateInfoEXT'::@depthClampMode@ value
 -- used to create the currently active pipeline.
@@ -257,7 +258,8 @@
 --
 -- -   #VUID-vkCmdSetDepthClampRangeEXT-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdSetDepthClampRangeEXT-videocoding# This command /must/
 --     only be called outside of a video coding scope
@@ -276,10 +278,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
 -- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdSetDepthClampRangeEXT is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_depth_clamp_control VK_EXT_depth_clamp_control>,
@@ -330,12 +337,22 @@
 -- 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. 'PhysicalDeviceDepthClampControlFeaturesEXT' /can/ also be
--- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceDepthClampControlFeaturesEXT', it /must/ add an instance
+-- of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_depth_clamp_control VK_EXT_depth_clamp_control>,
@@ -391,9 +408,9 @@
 -- = Description
 --
 -- This structure extends
--- 'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo' and specifies
--- the depth clamp range used in the pipeline. If this structure is not
--- provided in the next chain then @depthClampMode@ defaults to
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineViewportStateCreateInfo' and
+-- specifies the depth clamp range used in the pipeline. If this structure
+-- is not provided in the next chain then @depthClampMode@ defaults to
 -- 'DEPTH_CLAMP_MODE_VIEWPORT_RANGE_EXT'.
 --
 -- == Valid Usage
@@ -418,6 +435,12 @@
 --     If @pDepthClampRange@ is not @NULL@, @pDepthClampRange@ /must/ be a
 --     valid pointer to a valid 'DepthClampRangeEXT' structure
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.GraphicsPipeline.PipelineViewportStateCreateInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_depth_clamp_control VK_EXT_depth_clamp_control>,
@@ -537,6 +560,19 @@
 
 -- | VkDepthClampModeEXT - Modes that determine the depth clamp range
 --
+-- = Description
+--
+-- -   'DEPTH_CLAMP_MODE_VIEWPORT_RANGE_EXT' specifies that the depth clamp
+--     range follows the viewport depth range. The depth clamp range of
+--     each viewport will implicitly be set to zmin = min(n,f) and zmax =
+--     max(n,f), where n and f are the @minDepth@ and @maxDepth@ depth
+--     range values of the viewport.
+--
+-- -   'DEPTH_CLAMP_MODE_USER_DEFINED_RANGE_EXT' specifies that a single
+--     user-defined depth clamp range will be used for all viewports. The
+--     user-defined depth clamp range is defined by the @minDepthClamp@ and
+--     @maxDepthClamp@ members of 'DepthClampRangeEXT'.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_depth_clamp_control VK_EXT_depth_clamp_control>,
@@ -545,17 +581,10 @@
 newtype DepthClampModeEXT = DepthClampModeEXT Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'DEPTH_CLAMP_MODE_VIEWPORT_RANGE_EXT' specifies that the depth clamp
--- range follows the viewport depth range. The depth clamp range of each
--- viewport will implicitly be set to zmin = min(n,f) and zmax = max(n,f),
--- where n and f are the @minDepth@ and @maxDepth@ depth range values of
--- the viewport.
+-- No documentation found for Nested "VkDepthClampModeEXT" "VK_DEPTH_CLAMP_MODE_VIEWPORT_RANGE_EXT"
 pattern DEPTH_CLAMP_MODE_VIEWPORT_RANGE_EXT = DepthClampModeEXT 0
 
--- | 'DEPTH_CLAMP_MODE_USER_DEFINED_RANGE_EXT' specifies that a single
--- user-defined depth clamp range will be used for all viewports. The
--- user-defined depth clamp range is defined by the @minDepthClamp@ and
--- @maxDepthClamp@ members of 'DepthClampRangeEXT'.
+-- No documentation found for Nested "VkDepthClampModeEXT" "VK_DEPTH_CLAMP_MODE_USER_DEFINED_RANGE_EXT"
 pattern DEPTH_CLAMP_MODE_USER_DEFINED_RANGE_EXT = DepthClampModeEXT 1
 
 {-# COMPLETE
diff --git a/src/Vulkan/Extensions/VK_EXT_depth_clamp_control.hs-boot b/src/Vulkan/Extensions/VK_EXT_depth_clamp_control.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_depth_clamp_control.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_depth_clamp_control.hs-boot
@@ -74,7 +74,8 @@
 --
 --     -   'PhysicalDeviceDepthClampControlFeaturesEXT'
 --
--- -   Extending 'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo':
+-- -   Extending
+--     'Vulkan.Core10.GraphicsPipeline.PipelineViewportStateCreateInfo':
 --
 --     -   'PipelineViewportDepthClampControlCreateInfoEXT'
 --
@@ -137,7 +138,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_depth_clamp_control Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_depth_clamp_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_clamp_zero_one.hs b/src/Vulkan/Extensions/VK_EXT_depth_clamp_zero_one.hs
--- a/src/Vulkan/Extensions/VK_EXT_depth_clamp_zero_one.hs
+++ b/src/Vulkan/Extensions/VK_EXT_depth_clamp_zero_one.hs
@@ -18,13 +18,19 @@
 --     1
 --
 -- [__Ratification Status__]
---     Not ratified
+--     Ratified
 --
 -- [__Extension and Version Dependencies__]
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
 --     or
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
 --
+-- [__Deprecation State__]
+--
+--     -   /Promoted/ to
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_depth_clamp_zero_one VK_KHR_depth_clamp_zero_one>
+--         extension
+--
 -- [__Contact__]
 --
 --     -   Graeme Leese
@@ -46,6 +52,13 @@
 -- portability in edge cases of features like depthBias. The particular
 -- behavior is chosen to match OpenGL to aid porting or emulation.
 --
+-- == Promotion to @VK_KHR_depth_clamp_zero_one@
+--
+-- All functionality in this extension is included in
+-- @VK_KHR_depth_clamp_zero_one@, with the suffix change to KHR. The
+-- original type, enum, and command names are still available as aliases of
+-- the core functionality.
+--
 -- == New Structures
 --
 -- -   Extending
@@ -62,7 +75,7 @@
 --
 -- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT'
+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT'
 --
 -- == Version History
 --
@@ -77,105 +90,29 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_depth_clamp_zero_one Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_depth_clamp_zero_one 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_depth_clamp_zero_one  ( PhysicalDeviceDepthClampZeroOneFeaturesEXT(..)
+module Vulkan.Extensions.VK_EXT_depth_clamp_zero_one  ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT
+                                                      , PhysicalDeviceDepthClampZeroOneFeaturesEXT
                                                       , EXT_DEPTH_CLAMP_ZERO_ONE_SPEC_VERSION
                                                       , pattern EXT_DEPTH_CLAMP_ZERO_ONE_SPEC_VERSION
                                                       , EXT_DEPTH_CLAMP_ZERO_ONE_EXTENSION_NAME
                                                       , pattern EXT_DEPTH_CLAMP_ZERO_ONE_EXTENSION_NAME
+                                                      , PhysicalDeviceDepthClampZeroOneFeaturesKHR(..)
                                                       ) 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_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT))
--- | VkPhysicalDeviceDepthClampZeroOneFeaturesEXT - Structure describing
--- feature to control zero to one depth clamping
---
--- = Members
---
--- This structure describes the following feature:
---
--- = Description
---
--- If the 'PhysicalDeviceDepthClampZeroOneFeaturesEXT' 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. 'PhysicalDeviceDepthClampZeroOneFeaturesEXT' /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_depth_clamp_zero_one VK_EXT_depth_clamp_zero_one>,
--- 'Vulkan.Core10.FundamentalTypes.Bool32',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PhysicalDeviceDepthClampZeroOneFeaturesEXT = PhysicalDeviceDepthClampZeroOneFeaturesEXT
-  { -- | #features-depthClampZeroOne# @depthClampZeroOne@ indicates that the
-    -- implementation supports clamping the depth to a range of @0@ to @1@.
-    depthClampZeroOne :: Bool }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PhysicalDeviceDepthClampZeroOneFeaturesEXT)
-#endif
-deriving instance Show PhysicalDeviceDepthClampZeroOneFeaturesEXT
+import Vulkan.Extensions.VK_KHR_depth_clamp_zero_one (PhysicalDeviceDepthClampZeroOneFeaturesKHR)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_KHR))
+import Vulkan.Extensions.VK_KHR_depth_clamp_zero_one (PhysicalDeviceDepthClampZeroOneFeaturesKHR(..))
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT = STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_KHR
 
-instance ToCStruct PhysicalDeviceDepthClampZeroOneFeaturesEXT where
-  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PhysicalDeviceDepthClampZeroOneFeaturesEXT{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (depthClampZeroOne))
-    f
-  cStructSize = 24
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
-    f
 
-instance FromCStruct PhysicalDeviceDepthClampZeroOneFeaturesEXT where
-  peekCStruct p = do
-    depthClampZeroOne <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
-    pure $ PhysicalDeviceDepthClampZeroOneFeaturesEXT
-             (bool32ToBool depthClampZeroOne)
-
-instance Storable PhysicalDeviceDepthClampZeroOneFeaturesEXT where
-  sizeOf ~_ = 24
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero PhysicalDeviceDepthClampZeroOneFeaturesEXT where
-  zero = PhysicalDeviceDepthClampZeroOneFeaturesEXT
-           zero
+-- No documentation found for TopLevel "VkPhysicalDeviceDepthClampZeroOneFeaturesEXT"
+type PhysicalDeviceDepthClampZeroOneFeaturesEXT = PhysicalDeviceDepthClampZeroOneFeaturesKHR
 
 
 type EXT_DEPTH_CLAMP_ZERO_ONE_SPEC_VERSION = 1
diff --git a/src/Vulkan/Extensions/VK_EXT_depth_clamp_zero_one.hs-boot b/src/Vulkan/Extensions/VK_EXT_depth_clamp_zero_one.hs-boot
deleted file mode 100644
--- a/src/Vulkan/Extensions/VK_EXT_depth_clamp_zero_one.hs-boot
+++ /dev/null
@@ -1,96 +0,0 @@
-{-# language CPP #-}
--- | = Name
---
--- VK_EXT_depth_clamp_zero_one - device extension
---
--- = VK_EXT_depth_clamp_zero_one
---
--- [__Name String__]
---     @VK_EXT_depth_clamp_zero_one@
---
--- [__Extension Type__]
---     Device extension
---
--- [__Registered Extension Number__]
---     422
---
--- [__Revision__]
---     1
---
--- [__Ratification Status__]
---     Not ratified
---
--- [__Extension and Version Dependencies__]
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
---
--- [__Contact__]
---
---     -   Graeme Leese
---         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_depth_clamp_zero_one] @gnl21%0A*Here describe the issue or question you have about the VK_EXT_depth_clamp_zero_one extension* >
---
--- == Other Extension Metadata
---
--- [__Last Modified Date__]
---     2021-07-29
---
--- [__Contributors__]
---
---     -   Graeme Leese, Broadcom
---
--- == Description
---
--- This extension gives defined behavior to fragment depth values which end
--- up outside the conventional [0, 1] range. It can be used to ensure
--- portability in edge cases of features like depthBias. The particular
--- behavior is chosen to match OpenGL to aid porting or emulation.
---
--- == New Structures
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
---     'Vulkan.Core10.Device.DeviceCreateInfo':
---
---     -   'PhysicalDeviceDepthClampZeroOneFeaturesEXT'
---
--- == New Enum Constants
---
--- -   'EXT_DEPTH_CLAMP_ZERO_ONE_EXTENSION_NAME'
---
--- -   'EXT_DEPTH_CLAMP_ZERO_ONE_SPEC_VERSION'
---
--- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT'
---
--- == Version History
---
--- -   Revision 1, 2021-07-29 (Graeme Leese)
---
---     -   Internal revisions
---
--- == See Also
---
--- No cross-references are available
---
--- == Document Notes
---
--- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_depth_clamp_zero_one 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_depth_clamp_zero_one  (PhysicalDeviceDepthClampZeroOneFeaturesEXT) where
-
-import Vulkan.CStruct (FromCStruct)
-import Vulkan.CStruct (ToCStruct)
-import Data.Kind (Type)
-
-data PhysicalDeviceDepthClampZeroOneFeaturesEXT
-
-instance ToCStruct PhysicalDeviceDepthClampZeroOneFeaturesEXT
-instance Show PhysicalDeviceDepthClampZeroOneFeaturesEXT
-
-instance FromCStruct PhysicalDeviceDepthClampZeroOneFeaturesEXT
-
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
@@ -66,7 +66,8 @@
 --
 --     -   'PhysicalDeviceDepthClipControlFeaturesEXT'
 --
--- -   Extending 'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo':
+-- -   Extending
+--     'Vulkan.Core10.GraphicsPipeline.PipelineViewportStateCreateInfo':
 --
 --     -   'PipelineViewportDepthClipControlCreateInfoEXT'
 --
@@ -105,8 +106,8 @@
 -- __RESOLVED__: No. It is highly unlikely that the depth range is changed
 -- to anything other than [0, 1] in the future. Should that happen a new
 -- extension will be required to extend such an enum, and that extension
--- might as well add a new struct to chain to
--- 'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@pNext@
+-- might as well add a new structure to chain to
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineViewportStateCreateInfo'::@pNext@
 -- instead.
 --
 -- == Version History
@@ -126,7 +127,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_depth_clip_control Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -176,12 +177,22 @@
 -- 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. 'PhysicalDeviceDepthClipControlFeaturesEXT' /can/ also be
--- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceDepthClipControlFeaturesEXT', it /must/ add an instance
+-- of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_depth_clip_control VK_EXT_depth_clip_control>,
@@ -238,7 +249,7 @@
 --
 -- -   #VUID-VkPipelineViewportDepthClipControlCreateInfoEXT-negativeOneToOne-06470#
 --     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-depthClipControl depthClipControl>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-depthClipControl depthClipControl>
 --     feature is not enabled, @negativeOneToOne@ /must/ be
 --     'Vulkan.Core10.FundamentalTypes.FALSE'
 --
@@ -247,6 +258,12 @@
 -- -   #VUID-VkPipelineViewportDepthClipControlCreateInfoEXT-sType-sType#
 --     @sType@ /must/ be
 --     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLIP_CONTROL_CREATE_INFO_EXT'
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.GraphicsPipeline.PipelineViewportStateCreateInfo'
 --
 -- = See Also
 --
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
@@ -66,7 +66,8 @@
 --
 --     -   'PhysicalDeviceDepthClipControlFeaturesEXT'
 --
--- -   Extending 'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo':
+-- -   Extending
+--     'Vulkan.Core10.GraphicsPipeline.PipelineViewportStateCreateInfo':
 --
 --     -   'PipelineViewportDepthClipControlCreateInfoEXT'
 --
@@ -105,8 +106,8 @@
 -- __RESOLVED__: No. It is highly unlikely that the depth range is changed
 -- to anything other than [0, 1] in the future. Should that happen a new
 -- extension will be required to extend such an enum, and that extension
--- might as well add a new struct to chain to
--- 'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@pNext@
+-- might as well add a new structure to chain to
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineViewportStateCreateInfo'::@pNext@
 -- instead.
 --
 -- == Version History
@@ -126,7 +127,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_depth_clip_control Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -55,7 +55,7 @@
 --
 -- This extension allows the depth clipping operation, that is normally
 -- implicitly controlled by
--- 'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo'::@depthClampEnable@,
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineRasterizationStateCreateInfo'::@depthClampEnable@,
 -- to instead be controlled explicitly by
 -- 'PipelineRasterizationDepthClipStateCreateInfoEXT'::@depthClipEnable@.
 --
@@ -72,7 +72,7 @@
 --     -   'PhysicalDeviceDepthClipEnableFeaturesEXT'
 --
 -- -   Extending
---     'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo':
+--     'Vulkan.Core10.GraphicsPipeline.PipelineRasterizationStateCreateInfo':
 --
 --     -   'PipelineRasterizationDepthClipStateCreateInfoEXT'
 --
@@ -105,7 +105,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_depth_clip_enable Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -166,12 +166,22 @@
 -- structure passed to
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
 -- it is filled in to indicate whether each corresponding feature is
--- supported. 'PhysicalDeviceDepthClipEnableFeaturesEXT' /can/ also be used
--- in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceDepthClipEnableFeaturesEXT', it /must/ add an instance of
+-- the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_depth_clip_enable VK_EXT_depth_clip_enable>,
@@ -182,7 +192,7 @@
     -- implementation supports setting the depth clipping operation explicitly
     -- via the 'PipelineRasterizationDepthClipStateCreateInfoEXT' pipeline
     -- state. Otherwise depth clipping is only enabled when
-    -- 'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo'::@depthClampEnable@
+    -- 'Vulkan.Core10.GraphicsPipeline.PipelineRasterizationStateCreateInfo'::@depthClampEnable@
     -- is 'Vulkan.Core10.FundamentalTypes.FALSE'.
     depthClipEnable :: Bool }
   deriving (Typeable, Eq)
@@ -226,8 +236,12 @@
 -- | VkPipelineRasterizationDepthClipStateCreateInfoEXT - Structure
 -- specifying depth clipping state
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.GraphicsPipeline.PipelineRasterizationStateCreateInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_depth_clip_enable VK_EXT_depth_clip_enable>,
@@ -242,7 +256,7 @@
     flags :: PipelineRasterizationDepthClipStateCreateFlagsEXT
   , -- | @depthClipEnable@ controls whether depth clipping is enabled as
     -- described in
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#vertexpostproc-clipping Primitive Clipping>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -55,7 +55,7 @@
 --
 -- This extension allows the depth clipping operation, that is normally
 -- implicitly controlled by
--- 'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo'::@depthClampEnable@,
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineRasterizationStateCreateInfo'::@depthClampEnable@,
 -- to instead be controlled explicitly by
 -- 'PipelineRasterizationDepthClipStateCreateInfoEXT'::@depthClipEnable@.
 --
@@ -72,7 +72,7 @@
 --     -   'PhysicalDeviceDepthClipEnableFeaturesEXT'
 --
 -- -   Extending
---     'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo':
+--     'Vulkan.Core10.GraphicsPipeline.PipelineRasterizationStateCreateInfo':
 --
 --     -   'PipelineRasterizationDepthClipStateCreateInfoEXT'
 --
@@ -105,7 +105,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_depth_clip_enable Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -41,10 +41,10 @@
 --
 -- == Description
 --
--- This extension removes the 'Vulkan.Core10.Pipeline.Viewport' @minDepth@
--- and @maxDepth@ restrictions that the values must be between @0.0@ and
--- @1.0@, inclusive. It also removes the same restriction on
--- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo'
+-- This extension removes the 'Vulkan.Core10.GraphicsPipeline.Viewport'
+-- @minDepth@ and @maxDepth@ restrictions that the values must be between
+-- @0.0@ and @1.0@, inclusive. It also removes the same restriction on
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDepthStencilStateCreateInfo'
 -- @minDepthBounds@ and @maxDepthBounds@. Finally it removes the
 -- restriction on the @depth@ value in
 -- 'Vulkan.Core10.CommandBufferBuilding.ClearDepthStencilValue'.
@@ -57,18 +57,18 @@
 --
 -- == Issues
 --
--- 1) How do 'Vulkan.Core10.Pipeline.Viewport' @minDepth@ and @maxDepth@
--- values outside of the @0.0@ to @1.0@ range interact with
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#vertexpostproc-clipping Primitive Clipping>?
+-- 1) How do 'Vulkan.Core10.GraphicsPipeline.Viewport' @minDepth@ and
+-- @maxDepth@ values outside of the @0.0@ to @1.0@ range interact with
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#vertexpostproc-clipping Primitive Clipping>?
 --
 -- __RESOLVED__: The behavior described in
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#vertexpostproc-clipping Primitive Clipping>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
--- instead clamped to the 'Vulkan.Core10.Pipeline.Viewport' @minDepth@ and
--- @maxDepth@ values, which in the case of this extension can be outside of
--- the @0.0@ to @1.0@ range.
+-- instead clamped to the 'Vulkan.Core10.GraphicsPipeline.Viewport'
+-- @minDepth@ and @maxDepth@ values, which in the case of this extension
+-- can be outside of the @0.0@ to @1.0@ range.
 --
 -- 2) What happens if a resulting depth fragment is outside of the @0.0@ to
 -- @1.0@ range and the depth buffer is fixed-point rather than
@@ -77,7 +77,7 @@
 -- __RESOLVED__: This situation can also arise without this extension (when
 -- fragment shaders replace depth values, for example), and this extension
 -- does not change the behavior, which is defined in the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-depth Depth Test>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#fragops-depth Depth Test>
 -- section of the Fragment Operations chapter.
 --
 -- == Version History
@@ -93,7 +93,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_depth_range_unrestricted Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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_buffer.hs b/src/Vulkan/Extensions/VK_EXT_descriptor_buffer.hs
--- a/src/Vulkan/Extensions/VK_EXT_descriptor_buffer.hs
+++ b/src/Vulkan/Extensions/VK_EXT_descriptor_buffer.hs
@@ -18,7 +18,7 @@
 --     1
 --
 -- [__Ratification Status__]
---     Not ratified
+--     Ratified
 --
 -- [__Extension and Version Dependencies__]
 --                     
@@ -43,10 +43,18 @@
 --
 -- [__API Interactions__]
 --
+--     -   Interacts with VK_EXT_fragment_density_map
+--
 --     -   Interacts with VK_KHR_acceleration_structure
 --
 --     -   Interacts with VK_NV_ray_tracing
 --
+-- [__Deprecation State__]
+--
+--     -   /Deprecated/ by
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_heap VK_EXT_descriptor_heap>
+--         extension
+--
 -- [__Contact__]
 --
 --     -   Tobias Hector
@@ -103,6 +111,13 @@
 -- descriptors directly in memory, making the management of descriptor data
 -- more explicit.
 --
+-- == Deprecation by @VK_EXT_descriptor_heap@
+--
+-- Functionality in this extension is deprecated by the
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_heap VK_EXT_descriptor_heap>
+-- extension. See
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#legacy-descriptor-sets Descriptor Management: Replaced by Descriptor Heaps>.
+--
 -- == New Commands
 --
 -- -   'cmdBindDescriptorBufferEmbeddedSamplersEXT'
@@ -154,7 +169,10 @@
 --     'Vulkan.Core10.ImageView.ImageViewCreateInfo',
 --     'Vulkan.Core10.Sampler.SamplerCreateInfo',
 --     'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureCreateInfoKHR',
---     'Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureCreateInfoNV':
+--     'Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureCreateInfoNV',
+--     'Vulkan.Extensions.VK_ARM_tensors.TensorCreateInfoARM',
+--     'Vulkan.Extensions.VK_ARM_tensors.TensorViewCreateInfoARM',
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.AccelerationStructureCreateInfo2KHR':
 --
 --     -   'OpaqueCaptureDescriptorDataCreateInfoEXT'
 --
@@ -171,11 +189,18 @@
 -- -   Extending
 --     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
 --
---     -   'PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT'
---
 --     -   'PhysicalDeviceDescriptorBufferPropertiesEXT'
 --
 -- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_fragment_density_map VK_EXT_fragment_density_map>
+-- is supported:
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT'
+--
+-- If
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>
 -- or
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>
@@ -226,7 +251,7 @@
 -- -   Extending
 --     'Vulkan.Core10.Enums.ImageCreateFlagBits.ImageCreateFlagBits':
 --
---     -   'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT'
+--     -   'IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT'
 --
 -- -   Extending
 --     'Vulkan.Core10.Enums.ImageViewCreateFlagBits.ImageViewCreateFlagBits':
@@ -292,7 +317,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_descriptor_buffer Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_descriptor_buffer Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -307,6 +332,7 @@
                                                    , getImageViewOpaqueCaptureDescriptorDataEXT
                                                    , getSamplerOpaqueCaptureDescriptorDataEXT
                                                    , getAccelerationStructureOpaqueCaptureDescriptorDataEXT
+                                                   , pattern IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT
                                                    , PhysicalDeviceDescriptorBufferFeaturesEXT(..)
                                                    , PhysicalDeviceDescriptorBufferPropertiesEXT(..)
                                                    , PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT(..)
@@ -391,12 +417,13 @@
 import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.Core10.Handles (Buffer)
 import Vulkan.Core10.Enums.BufferUsageFlagBits (BufferUsageFlags)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance5 (BufferUsageFlags2CreateInfoKHR)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_maintenance5 (BufferUsageFlags2CreateInfo)
 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_ARM_tensors (DescriptorGetTensorInfoARM)
 import Vulkan.Core10.DescriptorSet (DescriptorImageInfo)
 import Vulkan.Core10.Handles (DescriptorSetLayout)
 import Vulkan.Core10.Handles (DescriptorSetLayout(..))
@@ -448,6 +475,8 @@
 import Vulkan.Core10.Enums.DescriptorType (DescriptorType(DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER))
 import Vulkan.Core10.Enums.DescriptorType (DescriptorType(DESCRIPTOR_TYPE_UNIFORM_BUFFER))
 import Vulkan.Core10.Enums.DescriptorType (DescriptorType(DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER))
+import Vulkan.Core10.Enums.ImageCreateFlagBits (ImageCreateFlags)
+import Vulkan.Core10.Enums.ImageCreateFlagBits (ImageCreateFlagBits(IMAGE_CREATE_DESCRIPTOR_HEAP_CAPTURE_REPLAY_BIT_EXT))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_BUFFER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DESCRIPTOR_ADDRESS_INFO_EXT))
@@ -514,7 +543,7 @@
 -- == Valid Usage
 --
 -- -   #VUID-vkGetDescriptorSetLayoutSizeEXT-None-08011# The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-descriptorBuffer descriptorBuffer>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-descriptorBuffer descriptorBuffer>
 --     feature /must/ be enabled
 --
 -- -   #VUID-vkGetDescriptorSetLayoutSizeEXT-layout-08012# @layout@ /must/
@@ -522,6 +551,16 @@
 --     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
 --     flag set
 --
+-- -   #VUID-vkGetDescriptorSetLayoutSizeEXT-layout-11811# @layout@ /must/
+--     have not been created with the
+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT'
+--     flag set
+--
+-- -   #VUID-vkGetDescriptorSetLayoutSizeEXT-layout-11812# @layout@ /must/
+--     have not been created with the
+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_EMBEDDED_IMMUTABLE_SAMPLERS_BIT_EXT'
+--     flag set
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-vkGetDescriptorSetLayoutSizeEXT-device-parameter# @device@
@@ -607,18 +646,18 @@
 -- that @binding@ /must/ have the largest offset of any @binding@.
 --
 -- A descriptor @binding@ with type
--- 'Vulkan.Extensions.VK_VALVE_mutable_descriptor_type.DESCRIPTOR_TYPE_MUTABLE_VALVE'
--- /can/ be used. Any potential types in
--- 'Vulkan.Extensions.VK_VALVE_mutable_descriptor_type.MutableDescriptorTypeCreateInfoVALVE'::@pDescriptorTypes@
+-- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_MUTABLE_EXT' /can/
+-- be used. Any potential types in
+-- 'Vulkan.Extensions.VK_EXT_mutable_descriptor_type.MutableDescriptorTypeCreateInfoEXT'::@pDescriptorTypes@
 -- for @binding@ share the same offset. If the size of the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-mutable mutable descriptor>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-mutable mutable descriptor>
 -- is larger than the size of a concrete descriptor type being accessed,
 -- the padding area is ignored by the implementation.
 --
 -- == Valid Usage
 --
 -- -   #VUID-vkGetDescriptorSetLayoutBindingOffsetEXT-None-08013# The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-descriptorBuffer descriptorBuffer>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-descriptorBuffer descriptorBuffer>
 --     feature /must/ be enabled
 --
 -- -   #VUID-vkGetDescriptorSetLayoutBindingOffsetEXT-layout-08014#
@@ -626,6 +665,16 @@
 --     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
 --     flag set
 --
+-- -   #VUID-vkGetDescriptorSetLayoutBindingOffsetEXT-layout-11813#
+--     @layout@ /must/ have not been created with the
+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT'
+--     flag set
+--
+-- -   #VUID-vkGetDescriptorSetLayoutBindingOffsetEXT-layout-11814#
+--     @layout@ /must/ have not been created with the
+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_EMBEDDED_IMMUTABLE_SAMPLERS_BIT_EXT'
+--     flag set
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-vkGetDescriptorSetLayoutBindingOffsetEXT-device-parameter#
@@ -680,7 +729,7 @@
   unsafe
 #endif
   "dynamic" mkVkGetDescriptorEXT
-  :: FunPtr (Ptr Device_T -> Ptr DescriptorGetInfoEXT -> CSize -> Ptr () -> IO ()) -> Ptr Device_T -> Ptr DescriptorGetInfoEXT -> CSize -> Ptr () -> IO ()
+  :: FunPtr (Ptr Device_T -> Ptr (SomeStruct DescriptorGetInfoEXT) -> CSize -> Ptr () -> IO ()) -> Ptr Device_T -> Ptr (SomeStruct DescriptorGetInfoEXT) -> CSize -> Ptr () -> IO ()
 
 -- | vkGetDescriptorEXT - To get a descriptor to place in a buffer
 --
@@ -718,7 +767,7 @@
 -- == Valid Usage
 --
 -- -   #VUID-vkGetDescriptorEXT-None-08015# The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-descriptorBuffer descriptorBuffer>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-descriptorBuffer descriptorBuffer>
 --     feature /must/ be enabled
 --
 -- -   #VUID-vkGetDescriptorEXT-dataSize-08125# If @pDescriptorInfo->type@
@@ -776,13 +825,13 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_buffer VK_EXT_descriptor_buffer>,
 -- 'DescriptorGetInfoEXT', 'Vulkan.Core10.Handles.Device'
-getDescriptorEXT :: forall io
-                  . (MonadIO io)
+getDescriptorEXT :: forall a io
+                  . (Extendss DescriptorGetInfoEXT a, PokeChain a, MonadIO io)
                  => -- | @device@ is the logical device that gets the descriptor.
                     Device
                  -> -- | @pDescriptorInfo@ is a pointer to a 'DescriptorGetInfoEXT' structure
                     -- specifying the parameters of the descriptor to get.
-                    ("descriptorInfo" ::: DescriptorGetInfoEXT)
+                    ("descriptorInfo" ::: DescriptorGetInfoEXT a)
                  -> -- | @dataSize@ is the amount of the descriptor data to get in bytes.
                     ("dataSize" ::: Word64)
                  -> -- | @pDescriptor@ is a pointer to an application-allocated buffer where the
@@ -800,7 +849,7 @@
   pDescriptorInfo <- ContT $ withCStruct (descriptorInfo)
   lift $ traceAroundEvent "vkGetDescriptorEXT" (vkGetDescriptorEXT'
                                                   (deviceHandle (device))
-                                                  pDescriptorInfo
+                                                  (forgetExtensions pDescriptorInfo)
                                                   (CSize (dataSize))
                                                   (descriptor))
   pure $ ()
@@ -826,8 +875,20 @@
 --
 -- == Valid Usage
 --
+-- -   #VUID-vkCmdBindDescriptorBuffersEXT-commandBuffer-11295# If
+--     @commandBuffer@ is a secondary command buffer, it /must/ have begun
+--     with
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.CommandBufferInheritanceDescriptorHeapInfoEXT'::@pSamplerHeapBindInfo@
+--     equal to @NULL@
+--
+-- -   #VUID-vkCmdBindDescriptorBuffersEXT-commandBuffer-11296# If
+--     @commandBuffer@ is a secondary command buffer, it /must/ have begun
+--     with
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.CommandBufferInheritanceDescriptorHeapInfoEXT'::@pResourceHeapBindInfo@
+--     equal to @NULL@
+--
 -- -   #VUID-vkCmdBindDescriptorBuffersEXT-None-08047# The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-descriptorBuffer descriptorBuffer>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-descriptorBuffer descriptorBuffer>
 --     feature /must/ be enabled
 --
 -- -   #VUID-vkCmdBindDescriptorBuffersEXT-maxSamplerDescriptorBufferBindings-08048#
@@ -853,27 +914,31 @@
 --     /must/ be less than or equal to
 --     'PhysicalDeviceDescriptorBufferPropertiesEXT'::@maxDescriptorBufferBindings@
 --
--- -   #VUID-vkCmdBindDescriptorBuffersEXT-pBindingInfos-08052# For any
---     element of @pBindingInfos@, if the buffer from which @address@ was
---     queried is non-sparse then it /must/ be bound completely and
---     contiguously to a single 'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-vkCmdBindDescriptorBuffersEXT-pBindingInfos-08053# For any
+-- -   #VUID-vkCmdBindDescriptorBuffersEXT-pBindingInfos-08053# For each
 --     element of @pBindingInfos@, the buffer from which @address@ was
 --     queried /must/ have been created with the
 --     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT'
---     bit set if it contains sampler descriptor data
+--     usage flag set if it contains sampler descriptor data
 --
--- -   #VUID-vkCmdBindDescriptorBuffersEXT-pBindingInfos-08054# For any
+-- -   #VUID-vkCmdBindDescriptorBuffersEXT-pBindingInfos-08054# For each
 --     element of @pBindingInfos@, the buffer from which @address@ was
 --     queried /must/ have been created with the
 --     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT'
---     bit set if it contains resource descriptor data
+--     usage flag set if it contains resource descriptor data
 --
--- -   #VUID-vkCmdBindDescriptorBuffersEXT-pBindingInfos-08055# For any
---     element of @pBindingInfos@, @usage@ /must/ match the buffer from
---     which @address@ was queried
+-- -   #VUID-vkCmdBindDescriptorBuffersEXT-pBindingInfos-08055# For each
+--     element of @pBindingInfos@, at least one buffer from which @address@
+--     was queried must contain @usage@
 --
+-- -   #VUID-vkCmdBindDescriptorBuffersEXT-pBindingInfos-09947# For all
+--     elements of @pBindingInfos@, the buffer from which @address@ was
+--     queried /must/ have been created with the
+--     'Vulkan.Core14.Enums.BufferUsageFlags2.BUFFER_USAGE_2_DATA_GRAPH_FOREIGN_DESCRIPTOR_BIT_ARM'
+--     usage flag set if the command pool from which @commandBuffer@ was
+--     allocated from was created with any element of
+--     'Vulkan.Extensions.VK_ARM_data_graph.DataGraphProcessingEngineCreateInfoARM'::@pProcessingEngines@
+--     with @isForeign@ set to 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-vkCmdBindDescriptorBuffersEXT-commandBuffer-parameter#
@@ -890,7 +955,10 @@
 --
 -- -   #VUID-vkCmdBindDescriptorBuffersEXT-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics, or compute operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT',
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_DATA_GRAPH_BIT_ARM', or
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdBindDescriptorBuffersEXT-videocoding# This command /must/
 --     only be called outside of a video coding scope
@@ -912,10 +980,16 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | Compute                                                                                                               |                                                                                                                                        |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | State                                                                                                                                  |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | VK_QUEUE_DATA_GRAPH_BIT_ARM                                                                                           |                                                                                                                                        |
+-- |                                                                                                                            |                                                                                                                        |                                                                                                                             | VK_QUEUE_GRAPHICS_BIT                                                                                                 |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdBindDescriptorBuffersEXT is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_buffer VK_EXT_descriptor_buffer>,
@@ -958,8 +1032,8 @@
 -- 'cmdSetDescriptorBufferOffsetsEXT' binds @setCount@ pairs of descriptor
 -- buffers, specified by indices into the binding points bound using
 -- 'cmdBindDescriptorBuffersEXT', and buffer offsets to set numbers
--- [@firstSet@..@firstSet@+@descriptorSetCount@-1] for subsequent
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-bindpoint-commands bound pipeline commands>
+-- [@firstSet@..@firstSet@+@setCount@-1] for subsequent
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-bindpoint-commands bound pipeline commands>
 -- set by @pipelineBindPoint@. Set [@firstSet@ + i] is bound to the
 -- descriptor buffer at binding @pBufferIndices@[i] at an offset of
 -- @pOffsets@[i]. Any bindings that were previously applied via these sets,
@@ -967,7 +1041,7 @@
 -- are no longer valid. Other sets will also be invalidated upon calling
 -- this command if @layout@ differs from the pipeline layout used to bind
 -- those other sets, as described in
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-compatibility Pipeline Layout Compatibility>.
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-compatibility Pipeline Layout Compatibility>.
 --
 -- After binding descriptors, applications /can/ modify descriptor memory
 -- either by performing writes on the host or with device commands. When
@@ -998,7 +1072,7 @@
 --
 -- Dynamically accessing a resource through descriptor data from an unbound
 -- region of a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#sparsememory-partially-resident-buffers sparse partially-resident buffer>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#sparsememory-partially-resident-buffers sparse partially-resident buffer>
 -- will result in invalid descriptor data being read, and therefore
 -- undefined behavior.
 --
@@ -1018,6 +1092,18 @@
 --
 -- == Valid Usage
 --
+-- -   #VUID-vkCmdSetDescriptorBufferOffsetsEXT-commandBuffer-11295# If
+--     @commandBuffer@ is a secondary command buffer, it /must/ have begun
+--     with
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.CommandBufferInheritanceDescriptorHeapInfoEXT'::@pSamplerHeapBindInfo@
+--     equal to @NULL@
+--
+-- -   #VUID-vkCmdSetDescriptorBufferOffsetsEXT-commandBuffer-11296# If
+--     @commandBuffer@ is a secondary command buffer, it /must/ have begun
+--     with
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.CommandBufferInheritanceDescriptorHeapInfoEXT'::@pResourceHeapBindInfo@
+--     equal to @NULL@
+--
 -- -   #VUID-vkCmdSetDescriptorBufferOffsetsEXT-pOffsets-08061# The offsets
 --     in @pOffsets@ /must/ be aligned to
 --     'PhysicalDeviceDescriptorBufferPropertiesEXT'::@descriptorBufferOffsetAlignment@
@@ -1062,8 +1148,22 @@
 --     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
 --     bit set
 --
+-- -   #VUID-vkCmdSetDescriptorBufferOffsetsEXT-firstSet-11803# The
+--     'Vulkan.Core10.Handles.DescriptorSetLayout' for each set from
+--     @firstSet@ to @firstSet@ + @setCount@ when @layout@ was created
+--     /must/ not have been created with the
+--     'Vulkan.Extensions.VK_KHR_push_descriptor.DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR'
+--     bit set
+--
+-- -   #VUID-vkCmdSetDescriptorBufferOffsetsEXT-firstSet-11804# The
+--     'Vulkan.Core10.Handles.DescriptorSetLayout' for each set from
+--     @firstSet@ to @firstSet@ + @setCount@ when @layout@ was created
+--     /must/ not have been created with the
+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_EMBEDDED_IMMUTABLE_SAMPLERS_BIT_EXT'
+--     bit set
+--
 -- -   #VUID-vkCmdSetDescriptorBufferOffsetsEXT-None-08060# The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-descriptorBuffer descriptorBuffer>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-descriptorBuffer descriptorBuffer>
 --     feature /must/ be enabled
 --
 -- -   #VUID-vkCmdSetDescriptorBufferOffsetsEXT-pipelineBindPoint-08067#
@@ -1097,7 +1197,10 @@
 --
 -- -   #VUID-vkCmdSetDescriptorBufferOffsetsEXT-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics, or compute operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT',
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_DATA_GRAPH_BIT_ARM', or
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdSetDescriptorBufferOffsetsEXT-videocoding# This command
 --     /must/ only be called outside of a video coding scope
@@ -1123,10 +1226,16 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | Compute                                                                                                               |                                                                                                                                        |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | State                                                                                                                                  |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | VK_QUEUE_DATA_GRAPH_BIT_ARM                                                                                           |                                                                                                                                        |
+-- |                                                                                                                            |                                                                                                                        |                                                                                                                             | VK_QUEUE_GRAPHICS_BIT                                                                                                 |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdSetDescriptorBufferOffsetsEXT is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_buffer VK_EXT_descriptor_buffer>,
@@ -1199,7 +1308,7 @@
 -- 'cmdBindDescriptorBufferEmbeddedSamplersEXT' binds the embedded
 -- immutable samplers in @set@ of @layout@ to @set@ for the command buffer
 -- for subsequent
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-bindpoint-commands bound pipeline commands>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-bindpoint-commands bound pipeline commands>
 -- set by @pipelineBindPoint@. Any previous binding to this set by
 -- 'cmdSetDescriptorBufferOffsetsEXT' or this command is overwritten. Any
 -- sets that were last bound by a call to
@@ -1207,10 +1316,22 @@
 -- invalidated upon calling this command. Other sets will also be
 -- invalidated upon calling this command if @layout@ differs from the
 -- pipeline layout used to bind those other sets, as described in
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-compatibility Pipeline Layout Compatibility>.
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-compatibility Pipeline Layout Compatibility>.
 --
 -- == Valid Usage
 --
+-- -   #VUID-vkCmdBindDescriptorBufferEmbeddedSamplersEXT-commandBuffer-11295#
+--     If @commandBuffer@ is a secondary command buffer, it /must/ have
+--     begun with
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.CommandBufferInheritanceDescriptorHeapInfoEXT'::@pSamplerHeapBindInfo@
+--     equal to @NULL@
+--
+-- -   #VUID-vkCmdBindDescriptorBufferEmbeddedSamplersEXT-commandBuffer-11296#
+--     If @commandBuffer@ is a secondary command buffer, it /must/ have
+--     begun with
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.CommandBufferInheritanceDescriptorHeapInfoEXT'::@pResourceHeapBindInfo@
+--     equal to @NULL@
+--
 -- -   #VUID-vkCmdBindDescriptorBufferEmbeddedSamplersEXT-set-08070# The
 --     'Vulkan.Core10.Handles.DescriptorSetLayout' at index @set@ when
 --     @layout@ was created /must/ have been created with the
@@ -1223,7 +1344,7 @@
 --     provided when @layout@ was created
 --
 -- -   #VUID-vkCmdBindDescriptorBufferEmbeddedSamplersEXT-None-08068# The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-descriptorBuffer descriptorBuffer>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-descriptorBuffer descriptorBuffer>
 --     feature /must/ be enabled
 --
 -- -   #VUID-vkCmdBindDescriptorBufferEmbeddedSamplersEXT-pipelineBindPoint-08069#
@@ -1250,7 +1371,9 @@
 --
 -- -   #VUID-vkCmdBindDescriptorBufferEmbeddedSamplersEXT-commandBuffer-cmdpool#
 --     The 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics, or compute operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', or
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdBindDescriptorBufferEmbeddedSamplersEXT-videocoding# This
 --     command /must/ only be called outside of a video coding scope
@@ -1273,10 +1396,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | Compute                                                                                                               |                                                                                                                                        |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | State                                                                                                                                  |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | VK_QUEUE_GRAPHICS_BIT                                                                                                 |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdBindDescriptorBufferEmbeddedSamplersEXT is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_buffer VK_EXT_descriptor_buffer>,
@@ -1327,7 +1455,7 @@
 -- == Valid Usage
 --
 -- -   #VUID-vkGetBufferOpaqueCaptureDescriptorDataEXT-None-08072# The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-descriptorBufferCaptureReplay descriptorBufferCaptureReplay>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-descriptorBufferCaptureReplay descriptorBufferCaptureReplay>
 --     feature /must/ be enabled
 --
 -- -   #VUID-vkGetBufferOpaqueCaptureDescriptorDataEXT-pData-08073# @pData@
@@ -1337,7 +1465,7 @@
 --
 -- -   #VUID-vkGetBufferOpaqueCaptureDescriptorDataEXT-device-08074# If
 --     @device@ was created with multiple physical devices, then the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-bufferDeviceAddressMultiDevice bufferDeviceAddressMultiDevice>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-bufferDeviceAddressMultiDevice bufferDeviceAddressMultiDevice>
 --     feature /must/ be enabled
 --
 -- == Valid Usage (Implicit)
@@ -1360,10 +1488,14 @@
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_buffer VK_EXT_descriptor_buffer>,
@@ -1407,7 +1539,7 @@
 -- == Valid Usage
 --
 -- -   #VUID-vkGetImageOpaqueCaptureDescriptorDataEXT-None-08076# The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-descriptorBufferCaptureReplay descriptorBufferCaptureReplay>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-descriptorBufferCaptureReplay descriptorBufferCaptureReplay>
 --     feature /must/ be enabled
 --
 -- -   #VUID-vkGetImageOpaqueCaptureDescriptorDataEXT-pData-08077# @pData@
@@ -1417,7 +1549,7 @@
 --
 -- -   #VUID-vkGetImageOpaqueCaptureDescriptorDataEXT-device-08078# If
 --     @device@ was created with multiple physical devices, then the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-bufferDeviceAddressMultiDevice bufferDeviceAddressMultiDevice>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-bufferDeviceAddressMultiDevice bufferDeviceAddressMultiDevice>
 --     feature /must/ be enabled
 --
 -- == Valid Usage (Implicit)
@@ -1440,10 +1572,14 @@
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_buffer VK_EXT_descriptor_buffer>,
@@ -1487,7 +1623,7 @@
 -- == Valid Usage
 --
 -- -   #VUID-vkGetImageViewOpaqueCaptureDescriptorDataEXT-None-08080# The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-descriptorBufferCaptureReplay descriptorBufferCaptureReplay>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-descriptorBufferCaptureReplay descriptorBufferCaptureReplay>
 --     feature /must/ be enabled
 --
 -- -   #VUID-vkGetImageViewOpaqueCaptureDescriptorDataEXT-pData-08081#
@@ -1497,7 +1633,7 @@
 --
 -- -   #VUID-vkGetImageViewOpaqueCaptureDescriptorDataEXT-device-08082# If
 --     @device@ was created with multiple physical devices, then the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-bufferDeviceAddressMultiDevice bufferDeviceAddressMultiDevice>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-bufferDeviceAddressMultiDevice bufferDeviceAddressMultiDevice>
 --     feature /must/ be enabled
 --
 -- == Valid Usage (Implicit)
@@ -1520,10 +1656,14 @@
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_buffer VK_EXT_descriptor_buffer>,
@@ -1567,7 +1707,7 @@
 -- == Valid Usage
 --
 -- -   #VUID-vkGetSamplerOpaqueCaptureDescriptorDataEXT-None-08084# The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-descriptorBufferCaptureReplay descriptorBufferCaptureReplay>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-descriptorBufferCaptureReplay descriptorBufferCaptureReplay>
 --     feature /must/ be enabled
 --
 -- -   #VUID-vkGetSamplerOpaqueCaptureDescriptorDataEXT-pData-08085#
@@ -1577,7 +1717,7 @@
 --
 -- -   #VUID-vkGetSamplerOpaqueCaptureDescriptorDataEXT-device-08086# If
 --     @device@ was created with multiple physical devices, then the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-bufferDeviceAddressMultiDevice bufferDeviceAddressMultiDevice>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-bufferDeviceAddressMultiDevice bufferDeviceAddressMultiDevice>
 --     feature /must/ be enabled
 --
 -- == Valid Usage (Implicit)
@@ -1600,10 +1740,14 @@
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_buffer VK_EXT_descriptor_buffer>,
@@ -1648,7 +1792,7 @@
 --
 -- -   #VUID-vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT-None-08088#
 --     The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-descriptorBufferCaptureReplay descriptorBufferCaptureReplay>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-descriptorBufferCaptureReplay descriptorBufferCaptureReplay>
 --     feature /must/ be enabled
 --
 -- -   #VUID-vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT-pData-08089#
@@ -1658,7 +1802,7 @@
 --
 -- -   #VUID-vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT-device-08090#
 --     If @device@ was created with multiple physical devices, then the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-bufferDeviceAddressMultiDevice bufferDeviceAddressMultiDevice>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-bufferDeviceAddressMultiDevice bufferDeviceAddressMultiDevice>
 --     feature /must/ be enabled
 --
 -- == Valid Usage (Implicit)
@@ -1681,10 +1825,14 @@
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_buffer VK_EXT_descriptor_buffer>,
@@ -1719,6 +1867,10 @@
   lift $ when (r < SUCCESS) (throwIO (VulkanException r))
 
 
+-- No documentation found for TopLevel "VK_IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT"
+pattern IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = IMAGE_CREATE_DESCRIPTOR_HEAP_CAPTURE_REPLAY_BIT_EXT
+
+
 -- | VkPhysicalDeviceDescriptorBufferFeaturesEXT - Structure describing the
 -- descriptor buffer features that can be supported by an implementation
 --
@@ -1734,12 +1886,22 @@
 -- structure passed to
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
 -- it is filled in to indicate whether each corresponding feature is
--- supported. 'PhysicalDeviceDescriptorBufferFeaturesEXT' /can/ also be
--- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceDescriptorBufferFeaturesEXT', it /must/ add an instance
+-- of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_buffer VK_EXT_descriptor_buffer>,
@@ -1755,8 +1917,10 @@
     -- descriptor buffers. If this is 'Vulkan.Core10.FundamentalTypes.TRUE',
     -- all resources created with
     -- 'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT',
-    -- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT',
+    -- 'IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT',
     -- 'Vulkan.Core10.Enums.ImageViewCreateFlagBits.IMAGE_VIEW_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT',
+    -- 'Vulkan.Extensions.VK_ARM_tensors.TENSOR_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_ARM',
+    -- 'Vulkan.Extensions.VK_ARM_tensors.TENSOR_VIEW_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_ARM',
     -- 'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT',
     -- or
     -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT'
@@ -1833,17 +1997,16 @@
 -- = Description
 --
 -- A descriptor binding with type
--- 'Vulkan.Extensions.VK_VALVE_mutable_descriptor_type.DESCRIPTOR_TYPE_MUTABLE_VALVE'
--- has a descriptor size which is implied by the descriptor types included
--- in the
--- 'Vulkan.Extensions.VK_VALVE_mutable_descriptor_type.MutableDescriptorTypeCreateInfoVALVE'::@pDescriptorTypes@
+-- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_MUTABLE_EXT' has a
+-- descriptor size which is implied by the descriptor types included in the
+-- 'Vulkan.Extensions.VK_EXT_mutable_descriptor_type.MutableDescriptorTypeCreateInfoEXT'::@pDescriptorTypes@
 -- list. The descriptor size is equal to the maximum size of any descriptor
 -- type included in the @pDescriptorTypes@ list.
 --
 -- As there is no way to request robust and non-robust descriptors
 -- separately, or specify robust\/non-robust descriptors in the set layout,
 -- if the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
 -- feature is enabled then robust descriptors are always used.
 --
 -- If the 'PhysicalDeviceDescriptorBufferPropertiesEXT' structure is
@@ -1854,8 +2017,12 @@
 -- it is filled in with each corresponding implementation-dependent
 -- property.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_buffer VK_EXT_descriptor_buffer>,
@@ -1871,9 +2038,9 @@
     -- descriptors, immediately followed by an array of sampler descriptors.
     combinedImageSamplerDescriptorSingleArray :: Bool
   , -- | #limits-bufferlessPushDescriptors# @bufferlessPushDescriptors@ indicates
-    -- that the implementation does not require a buffer created with
+    -- that the implementation does not require a buffer created with the
     -- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT'
-    -- to be bound when using push descriptors.
+    -- usage flag set to be bound when using push descriptors.
     bufferlessPushDescriptors :: Bool
   , -- | #limits-allowSamplerImageViewPostSubmitCreation#
     -- @allowSamplerImageViewPostSubmitCreation@ indicates that the
@@ -1940,7 +2107,7 @@
     -- maximum size in bytes of the opaque data used for capture and replay
     -- with acceleration structures.
     accelerationStructureCaptureReplayDescriptorDataSize :: Word64
-  , -- | #limits-samplerDescriptorSize# @samplerDescriptorSize@ indicates the
+  , -- | #limits-samplerDescriptorSizeEXT# @samplerDescriptorSize@ indicates the
     -- size in bytes of a
     -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLER' descriptor.
     samplerDescriptorSize :: Word64
@@ -1963,7 +2130,7 @@
     -- @uniformTexelBufferDescriptorSize@ indicates the size in bytes of a
     -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER'
     -- descriptor if the
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
     -- feature is not enabled.
     uniformTexelBufferDescriptorSize :: Word64
   , -- | #limits-robustUniformTexelBufferDescriptorSize#
@@ -1971,14 +2138,14 @@
     -- a
     -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER'
     -- descriptor if the
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
     -- feature is enabled.
     robustUniformTexelBufferDescriptorSize :: Word64
   , -- | #limits-storageTexelBufferDescriptorSize#
     -- @storageTexelBufferDescriptorSize@ indicates the size in bytes of a
     -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'
     -- descriptor if the
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
     -- feature is not enabled.
     storageTexelBufferDescriptorSize :: Word64
   , -- | #limits-robustStorageTexelBufferDescriptorSize#
@@ -1986,7 +2153,7 @@
     -- a
     -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'
     -- descriptor if the
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
     -- feature is enabled.
     robustStorageTexelBufferDescriptorSize :: Word64
   , -- | #limits-uniformBufferDescriptorSize# @uniformBufferDescriptorSize@
@@ -1998,7 +2165,7 @@
     -- @robustUniformBufferDescriptorSize@ indicates the size in bytes of a
     -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER'
     -- descriptor if the
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
     -- feature is enabled.
     robustUniformBufferDescriptorSize :: Word64
   , -- | #limits-storageBufferDescriptorSize# @storageBufferDescriptorSize@
@@ -2010,7 +2177,7 @@
     -- @robustStorageBufferDescriptorSize@ indicates the size in bytes of a
     -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER'
     -- descriptor if the
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
     -- feature is enabled.
     robustStorageBufferDescriptorSize :: Word64
   , -- | #limits-inputAttachmentDescriptorSize# @inputAttachmentDescriptorSize@
@@ -2038,19 +2205,24 @@
   , -- | #limits-samplerDescriptorBufferAddressSpaceSize#
     -- @samplerDescriptorBufferAddressSpaceSize@ indicates the total size in
     -- bytes of the address space available for descriptor buffers created with
-    -- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT'.
+    -- the
+    -- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT'
+    -- usage flag set.
     samplerDescriptorBufferAddressSpaceSize :: DeviceSize
   , -- | #limits-resourceDescriptorBufferAddressSpaceSize#
     -- @resourceDescriptorBufferAddressSpaceSize@ indicates the total size in
     -- bytes of the address space available for descriptor buffers created with
-    -- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT'.
+    -- the
+    -- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT'
+    -- usage flag set.
     resourceDescriptorBufferAddressSpaceSize :: DeviceSize
   , -- | #limits-descriptorBufferAddressSpaceSize#
     -- @descriptorBufferAddressSpaceSize@ indicates the total size in bytes of
-    -- the address space available for descriptor buffers created with both
+    -- the address space available for descriptor buffers created with both the
     -- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT'
     -- and
-    -- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT'.
+    -- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT'
+    -- usage flags set.
     descriptorBufferAddressSpaceSize :: DeviceSize
   }
   deriving (Typeable, Eq)
@@ -2265,11 +2437,16 @@
 -- it is filled in with each corresponding implementation-dependent
 -- property.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_buffer VK_EXT_descriptor_buffer>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_fragment_density_map VK_EXT_fragment_density_map>,
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT = PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT
   { -- | #limits-combinedImageSamplerDensityMapDescriptorSize#
@@ -2332,7 +2509,7 @@
 --     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
 --
 -- -   #VUID-VkDescriptorAddressInfoEXT-address-08043# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-nullDescriptor nullDescriptor>
 --     feature is not enabled, @address@ /must/ not be zero
 --
 -- -   #VUID-VkDescriptorAddressInfoEXT-nullDescriptor-08938# If @address@
@@ -2342,17 +2519,23 @@
 --     is not zero, @range@ /must/ not be
 --     'Vulkan.Core10.APIConstants.WHOLE_SIZE'
 --
--- -   #VUID-VkDescriptorAddressInfoEXT-None-08044# If @address@ is not
---     zero, @address@ /must/ be a valid device address at an offset within
---     a 'Vulkan.Core10.Handles.Buffer'
---
--- -   #VUID-VkDescriptorAddressInfoEXT-range-08045# @range@ /must/ be less
---     than or equal to the size of the buffer containing @address@ minus
---     the offset of @address@ from the base address of the buffer
+-- -   #VUID-VkDescriptorAddressInfoEXT-range-08045# If @address@ is not
+--     zero, then @range@ /must/ be less than or equal to the size of the
+--     buffer containing @address@ minus the offset of @address@ from the
+--     base address of the buffer
 --
 -- -   #VUID-VkDescriptorAddressInfoEXT-range-08940# @range@ /must/ not be
 --     zero
 --
+-- -   #VUID-VkDescriptorAddressInfoEXT-None-12271# If Vulkan 1.3 is not
+--     supported and the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-ycbcr2plane444Formats ycbcr2plane444Formats>
+--     feature is not enabled, @format@ /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_G8_B8R8_2PLANE_444_UNORM',
+--     'Vulkan.Core10.Enums.Format.FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16',
+--     'Vulkan.Core10.Enums.Format.FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16',
+--     or 'Vulkan.Core10.Enums.Format.FORMAT_G16_B16R16_2PLANE_444_UNORM'
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-VkDescriptorAddressInfoEXT-sType-sType# @sType@ /must/ be
@@ -2361,11 +2544,15 @@
 -- -   #VUID-VkDescriptorAddressInfoEXT-pNext-pNext# @pNext@ /must/ be
 --     @NULL@
 --
+-- -   #VUID-VkDescriptorAddressInfoEXT-address-parameter# If @address@ is
+--     not @0@, @address@ /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' value
+--
 -- -   #VUID-VkDescriptorAddressInfoEXT-format-parameter# @format@ /must/
 --     be a valid 'Vulkan.Core10.Enums.Format.Format' value
 --
 -- If the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-nullDescriptor nullDescriptor>
 -- feature is enabled, @address@ /can/ be zero. Loads from a null
 -- descriptor return zero values and stores and atomics to a null
 -- descriptor are discarded.
@@ -2409,7 +2596,6 @@
   pokeZeroCStruct p f = do
     poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DESCRIPTOR_ADDRESS_INFO_EXT)
     poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr DeviceAddress)) (zero)
     poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (zero)
     poke ((p `plusPtr` 32 :: Ptr Format)) (zero)
     f
@@ -2441,27 +2627,34 @@
 -- = Description
 --
 -- If the @pNext@ chain includes a
--- 'Vulkan.Extensions.VK_KHR_maintenance5.BufferUsageFlags2CreateInfoKHR'
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.BufferUsageFlags2CreateInfo'
 -- structure,
--- 'Vulkan.Extensions.VK_KHR_maintenance5.BufferUsageFlags2CreateInfoKHR'::@usage@
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.BufferUsageFlags2CreateInfo'::@usage@
 -- from that structure is used instead of @usage@ from this structure.
 --
 -- == Valid Usage
 --
 -- -   #VUID-VkDescriptorBufferBindingInfoEXT-None-09499# If the @pNext@
 --     chain does not include a
---     'Vulkan.Extensions.VK_KHR_maintenance5.BufferUsageFlags2CreateInfoKHR'
+--     'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.BufferUsageFlags2CreateInfo'
 --     structure, @usage@ /must/ be a valid combination of
 --     'Vulkan.Core10.Enums.BufferUsageFlagBits.BufferUsageFlagBits' values
 --
 -- -   #VUID-VkDescriptorBufferBindingInfoEXT-None-09500# If the @pNext@
 --     chain does not include a
---     'Vulkan.Extensions.VK_KHR_maintenance5.BufferUsageFlags2CreateInfoKHR'
+--     'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.BufferUsageFlags2CreateInfo'
 --     structure, @usage@ /must/ not be 0
 --
+-- -   #VUID-VkDescriptorBufferBindingInfoEXT-usage-10998# The @usage@ must
+--     include at least one of
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT',
+--     or
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT'
+--
 -- -   #VUID-VkDescriptorBufferBindingInfoEXT-bufferlessPushDescriptors-08056#
 --     If
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-bufferlessPushDescriptors ::bufferlessPushDescriptors>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-bufferlessPushDescriptors ::bufferlessPushDescriptors>
 --     is 'Vulkan.Core10.FundamentalTypes.FALSE', and @usage@ contains
 --     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT',
 --     then the @pNext@ chain /must/ include a
@@ -2474,23 +2667,26 @@
 -- -   #VUID-VkDescriptorBufferBindingInfoEXT-usage-08122# If @usage@
 --     includes
 --     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT',
---     @address@ /must/ be an address within a valid buffer that was
---     created with
+--     @address@ /must/ be a device address allocated to the application
+--     from a buffer created with the
 --     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT'
+--     usage flag set
 --
 -- -   #VUID-VkDescriptorBufferBindingInfoEXT-usage-08123# If @usage@
 --     includes
 --     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT',
---     @address@ /must/ be an address within a valid buffer that was
---     created with
+--     @address@ /must/ be a device address allocated to the application
+--     from a buffer created with the
 --     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT'
+--     usage flag set
 --
 -- -   #VUID-VkDescriptorBufferBindingInfoEXT-usage-08124# If @usage@
 --     includes
 --     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT',
---     @address@ /must/ be an address within a valid buffer that was
---     created with
+--     @address@ /must/ be a device address allocated to the application
+--     from a buffer created with the
 --     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT'
+--     usage flag set
 --
 -- == Valid Usage (Implicit)
 --
@@ -2501,12 +2697,16 @@
 -- -   #VUID-VkDescriptorBufferBindingInfoEXT-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_maintenance5.BufferUsageFlags2CreateInfoKHR'
+--     'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.BufferUsageFlags2CreateInfo'
 --     or 'DescriptorBufferBindingPushDescriptorBufferHandleEXT'
 --
 -- -   #VUID-VkDescriptorBufferBindingInfoEXT-sType-unique# The @sType@
---     value of each struct in the @pNext@ chain /must/ be unique
+--     value of each structure in the @pNext@ chain /must/ be unique
 --
+-- -   #VUID-VkDescriptorBufferBindingInfoEXT-address-parameter# @address@
+--     /must/ be a valid 'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--     value
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_buffer VK_EXT_descriptor_buffer>,
@@ -2523,7 +2723,12 @@
   , -- | @usage@ is a bitmask of
     -- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BufferUsageFlagBits' specifying
     -- the 'Vulkan.Core10.Buffer.BufferCreateInfo'::@usage@ for the buffer from
-    -- which @address@ was queried.
+    -- which @address@ was queried. Usage flags other than
+    -- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT',
+    -- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT',
+    -- and
+    -- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT'
+    -- are ignored.
     usage :: BufferUsageFlags
   }
   deriving (Typeable)
@@ -2539,7 +2744,7 @@
   extends :: forall e b proxy. Typeable e => proxy e -> (Extends DescriptorBufferBindingInfoEXT e => b) -> Maybe b
   extends _ f
     | Just Refl <- eqT @e @DescriptorBufferBindingPushDescriptorBufferHandleEXT = Just f
-    | Just Refl <- eqT @e @BufferUsageFlags2CreateInfoKHR = Just f
+    | Just Refl <- eqT @e @BufferUsageFlags2CreateInfo = Just f
     | otherwise = Nothing
 
 instance ( Extendss DescriptorBufferBindingInfoEXT es
@@ -2584,7 +2789,7 @@
 -- == Valid Usage
 --
 -- -   #VUID-VkDescriptorBufferBindingPushDescriptorBufferHandleEXT-bufferlessPushDescriptors-08059#
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-bufferlessPushDescriptors ::bufferlessPushDescriptors>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-bufferlessPushDescriptors ::bufferlessPushDescriptors>
 --     /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
 --
 -- == Valid Usage (Implicit)
@@ -2596,6 +2801,12 @@
 -- -   #VUID-VkDescriptorBufferBindingPushDescriptorBufferHandleEXT-buffer-parameter#
 --     @buffer@ /must/ be a valid 'Vulkan.Core10.Handles.Buffer' handle
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'DescriptorBufferBindingInfoEXT'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_buffer VK_EXT_descriptor_buffer>,
@@ -2682,39 +2893,13 @@
 --     member of @data@ /must/ be a 'Vulkan.Core10.Handles.ImageView'
 --     created on @device@, or 'Vulkan.Core10.APIConstants.NULL_HANDLE'
 --
--- -   #VUID-VkDescriptorGetInfoEXT-type-08024# If @type@ is
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER',
---     @pUniformTexelBuffer@ is not @NULL@ and
---     @pUniformTexelBuffer->address@ is not zero,
---     @pUniformTexelBuffer->address@ /must/ be an address within a
---     'Vulkan.Core10.Handles.Buffer' created on @device@
---
--- -   #VUID-VkDescriptorGetInfoEXT-type-08025# If @type@ is
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER',
---     @pStorageTexelBuffer@ is not @NULL@ and
---     @pStorageTexelBuffer->address@ is not zero,
---     @pStorageTexelBuffer->address@ /must/ be an address within a
---     'Vulkan.Core10.Handles.Buffer' created on @device@
---
--- -   #VUID-VkDescriptorGetInfoEXT-type-08026# If @type@ is
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER',
---     @pUniformBuffer@ is not @NULL@ and @pUniformBuffer->address@ is not
---     zero, @pUniformBuffer->address@ /must/ be an address within a
---     'Vulkan.Core10.Handles.Buffer' created on @device@
---
--- -   #VUID-VkDescriptorGetInfoEXT-type-08027# If @type@ is
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER',
---     @pStorageBuffer@ is not @NULL@ and @pStorageBuffer->address@ is not
---     zero, @pStorageBuffer->address@ /must/ be an address within a
---     'Vulkan.Core10.Handles.Buffer' created on @device@
---
 -- -   #VUID-VkDescriptorGetInfoEXT-type-09427# If @type@ is
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER',
 --     @pUniformBuffer@ is not @NULL@ , the number of texel buffer elements
 --     given by (⌊@pUniformBuffer->range@ \/ (texel block size)⌋ × (texels
 --     per block)) where texel block size and texels per block are as
 --     defined in the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#formats-compatibility Compatible Formats>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-compatibility Compatible Formats>
 --     table for @pUniformBuffer->format@, /must/ be less than or equal to
 --     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxTexelBufferElements@
 --
@@ -2724,7 +2909,7 @@
 --     given by (⌊@pStorageBuffer->range@ \/ (texel block size)⌋ × (texels
 --     per block)) where texel block size and texels per block are as
 --     defined in the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#formats-compatibility Compatible Formats>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-compatibility Compatible Formats>
 --     table for @pStorageBuffer->format@, /must/ be less than or equal to
 --     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxTexelBufferElements@
 --
@@ -2743,13 +2928,115 @@
 --     @device@, returned by
 --     'Vulkan.Extensions.VK_NV_ray_tracing.getAccelerationStructureHandleNV'
 --
+-- -   #VUID-VkDescriptorGetInfoEXT-type-09701# If @type@ is
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM', a
+--     'Vulkan.Extensions.VK_ARM_tensors.DescriptorGetTensorInfoARM'
+--     structure /must/ be included in the @pNext@ chain and @data@ is
+--     ignored
+--
+-- -   #VUID-VkDescriptorGetInfoEXT-type-12216# If @type@ is
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER'
+--     and @pCombinedImageSampler->imageView@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', the
+--     @pCombinedImageSampler->imageView@ member of @data@ /must/ have been
+--     created with
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT' set
+--
+-- -   #VUID-VkDescriptorGetInfoEXT-type-12217# If @type@ is
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',
+--     @pSampledImage@ is not @NULL@, and @pSampledImage->imageView@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', the
+--     @pSampledImage->imageView@ member of @data@ /must/ have been created
+--     with
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT' set
+--
+-- -   #VUID-VkDescriptorGetInfoEXT-type-12218# If @type@ is
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',
+--     @pStorageImage@ is not @NULL@, and @pStorageImage->imageView@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', the
+--     @pStorageImage->imageView@ member of @data@ /must/ have been created
+--     with
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_STORAGE_BIT' set
+--
+-- -   #VUID-VkDescriptorGetInfoEXT-type-12219# If @type@ is
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT',
+--     the @pInputAttachmentImage->imageView@ member of @data@ /must/ have
+--     been created with
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT'
+--     set
+--
+-- -   #VUID-VkDescriptorGetInfoEXT-type-12220# If @type@ is
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER',
+--     @pUniformBuffer@ is not @NULL@ and @pUniformBuffer->address@ is not
+--     zero, @pUniformBuffer->address@ /must/ be a device address allocated
+--     to the application from a buffer created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-VkDescriptorGetInfoEXT-type-12221# If @type@ is
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER',
+--     @pStorageBuffer@ is not @NULL@ and @pStorageBuffer->address@ is not
+--     zero, @pStorageBuffer->address@ /must/ be a device address allocated
+--     to the application from a buffer created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_STORAGE_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-VkDescriptorGetInfoEXT-type-12222# If @type@ is
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER',
+--     @pUniformTexelBuffer@ is not @NULL@ and
+--     @pUniformTexelBuffer->address@ is not zero,
+--     @pUniformTexelBuffer->address@ /must/ be a device address allocated
+--     to the application from a buffer created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-VkDescriptorGetInfoEXT-type-12223# If @type@ is
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER',
+--     @pStorageTexelBuffer@ is not @NULL@ and
+--     @pStorageTexelBuffer->address@ is not zero,
+--     @pStorageTexelBuffer->address@ /must/ be a device address allocated
+--     to the application from a buffer created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-VkDescriptorGetInfoEXT-type-12265# If @type@ is
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER'
+--     and @pUniformBuffer@ is not @NULL@, @pUniformBuffer->address@ /must/
+--     be aligned to
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@minUniformBufferOffsetAlignment@
+--
+-- -   #VUID-VkDescriptorGetInfoEXT-type-12266# If @type@ is
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER'
+--     and @pStorageBuffer@ is not @NULL@, @pStorageBuffer->address@ /must/
+--     be aligned to
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@minStorageBufferOffsetAlignment@
+--
+-- -   #VUID-VkDescriptorGetInfoEXT-type-12269# If @type@ is
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER',
+--     and @pUniformTexelBuffer@ is not @NULL@,
+--     @pUniformTexelBuffer->address@ /must/ be a multiple of the effective
+--     alignment requirement as determined by
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-minTexelBufferOffsetAlignment minTexelBufferOffsetAlignment>
+--
+-- -   #VUID-VkDescriptorGetInfoEXT-type-12270# If @type@ is
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER',
+--     and @pStorageTexelBuffer@ is not @NULL@,
+--     @pStorageTexelBuffer->address@ /must/ be a multiple of the effective
+--     alignment requirement as determined by
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-minTexelBufferOffsetAlignment minTexelBufferOffsetAlignment>
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-VkDescriptorGetInfoEXT-sType-sType# @sType@ /must/ be
 --     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DESCRIPTOR_GET_INFO_EXT'
 --
 -- -   #VUID-VkDescriptorGetInfoEXT-pNext-pNext# @pNext@ /must/ be @NULL@
+--     or a pointer to a valid instance of
+--     'Vulkan.Extensions.VK_ARM_tensors.DescriptorGetTensorInfoARM'
 --
+-- -   #VUID-VkDescriptorGetInfoEXT-sType-unique# The @sType@ value of each
+--     structure in the @pNext@ chain /must/ be unique
+--
 -- -   #VUID-VkDescriptorGetInfoEXT-type-parameter# @type@ /must/ be a
 --     valid 'Vulkan.Core10.Enums.DescriptorType.DescriptorType' value
 --
@@ -2810,30 +3097,51 @@
 --     of @data@ /must/ be a valid pointer to a valid
 --     'DescriptorAddressInfoEXT' structure
 --
+-- -   #VUID-VkDescriptorGetInfoEXT-accelerationStructure-parameter# If
+--     @type@ is
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     or
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV',
+--     the @accelerationStructure@ member of @data@ /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' value
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_buffer VK_EXT_descriptor_buffer>,
 -- 'DescriptorDataEXT',
 -- 'Vulkan.Core10.Enums.DescriptorType.DescriptorType',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType', 'getDescriptorEXT'
-data DescriptorGetInfoEXT = DescriptorGetInfoEXT
-  { -- | @type@ is the type of descriptor to get.
+data DescriptorGetInfoEXT (es :: [Type]) = DescriptorGetInfoEXT
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
+    next :: Chain es
+  , -- | @type@ is the type of descriptor to get.
     type' :: DescriptorType
-  , -- | @data@ is a structure containing the information needed to get the
-    -- descriptor.
+  , -- | @data@ is a 'DescriptorDataEXT' union containing the information needed
+    -- to get the descriptor.
     data' :: DescriptorDataEXT
   }
   deriving (Typeable)
 #if defined(GENERIC_INSTANCES)
-deriving instance Generic (DescriptorGetInfoEXT)
+deriving instance Generic (DescriptorGetInfoEXT (es :: [Type]))
 #endif
-deriving instance Show DescriptorGetInfoEXT
+deriving instance Show (Chain es) => Show (DescriptorGetInfoEXT es)
 
-instance ToCStruct DescriptorGetInfoEXT where
+instance Extensible DescriptorGetInfoEXT where
+  extensibleTypeName = "DescriptorGetInfoEXT"
+  setNext DescriptorGetInfoEXT{..} next' = DescriptorGetInfoEXT{next = next', ..}
+  getNext DescriptorGetInfoEXT{..} = next
+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends DescriptorGetInfoEXT e => b) -> Maybe b
+  extends _ f
+    | Just Refl <- eqT @e @DescriptorGetTensorInfoARM = Just f
+    | otherwise = Nothing
+
+instance ( Extendss DescriptorGetInfoEXT es
+         , PokeChain es ) => ToCStruct (DescriptorGetInfoEXT es) where
   withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
   pokeCStruct p DescriptorGetInfoEXT{..} f = evalContT $ do
     lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DESCRIPTOR_GET_INFO_EXT)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    pNext'' <- fmap castPtr . ContT $ withChain (next)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
     lift $ poke ((p `plusPtr` 16 :: Ptr DescriptorType)) (type')
     ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr DescriptorDataEXT)) (data') . ($ ())
     lift $ f
@@ -2841,20 +3149,25 @@
   cStructAlignment = 8
   pokeZeroCStruct p f = evalContT $ do
     lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DESCRIPTOR_GET_INFO_EXT)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    pNext' <- fmap castPtr . ContT $ withZeroChain @es
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
     lift $ poke ((p `plusPtr` 16 :: Ptr DescriptorType)) (zero)
     ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr DescriptorDataEXT)) (zero) . ($ ())
     lift $ f
 
-instance FromCStruct DescriptorGetInfoEXT where
+instance ( Extendss DescriptorGetInfoEXT es
+         , PeekChain es ) => FromCStruct (DescriptorGetInfoEXT es) where
   peekCStruct p = do
+    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
+    next <- peekChain (castPtr pNext)
     type' <- peek @DescriptorType ((p `plusPtr` 16 :: Ptr DescriptorType))
     data' <- peekDescriptorDataEXT type' ((p `plusPtr` 24 :: Ptr DescriptorDataEXT))
     pure $ DescriptorGetInfoEXT
-             type' data'
+             next type' data'
 
-instance Zero DescriptorGetInfoEXT where
+instance es ~ '[] => Zero (DescriptorGetInfoEXT es) where
   zero = DescriptorGetInfoEXT
+           ()
            zero
            zero
 
@@ -2937,8 +3250,8 @@
     --
     -- #VUID-VkImageCaptureDescriptorDataInfoEXT-image-08079# @image@ /must/
     -- have been created with
-    -- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT'
-    -- set in 'Vulkan.Core10.Image.ImageCreateInfo'::@flags@
+    -- 'IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT' set in
+    -- 'Vulkan.Core10.Image.ImageCreateInfo'::@flags@
     --
     -- #VUID-VkImageCaptureDescriptorDataInfoEXT-image-parameter# @image@
     -- /must/ be a valid 'Vulkan.Core10.Handles.Image' handle
@@ -3233,13 +3546,44 @@
 -- 'Vulkan.Core10.Image.ImageCreateInfo',
 -- 'Vulkan.Core10.ImageView.ImageViewCreateInfo',
 -- 'Vulkan.Core10.Sampler.SamplerCreateInfo',
+-- 'Vulkan.Extensions.VK_ARM_tensors.TensorCreateInfoARM',
+-- 'Vulkan.Extensions.VK_ARM_tensors.TensorViewCreateInfoARM',
 -- 'Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureCreateInfoNV'
 -- or
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureCreateInfoKHR'
 -- structure.
 --
--- == Valid Usage (Implicit)
+-- When providing opaque capture data for an image, if the @pNext@ chain of
+-- 'Vulkan.Core10.Image.ImageCreateInfo' or
+-- 'Vulkan.Extensions.VK_ARM_tensors.TensorCreateInfoARM' contains an
+-- instance of both this structure and
+-- 'Vulkan.Extensions.VK_EXT_descriptor_heap.OpaqueCaptureDataCreateInfoEXT',
+-- they /should/ both specify data from the same original resource. If they
+-- have capture data from different original resources, resource creation
+-- is much more likely to fail.
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Extensions.VK_KHR_device_address_commands.AccelerationStructureCreateInfo2KHR'
+--
+--     -   'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureCreateInfoKHR'
+--
+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureCreateInfoNV'
+--
+--     -   'Vulkan.Core10.Buffer.BufferCreateInfo'
+--
+--     -   'Vulkan.Core10.Image.ImageCreateInfo'
+--
+--     -   'Vulkan.Core10.ImageView.ImageViewCreateInfo'
+--
+--     -   'Vulkan.Core10.Sampler.SamplerCreateInfo'
+--
+--     -   'Vulkan.Extensions.VK_ARM_tensors.TensorCreateInfoARM'
+--
+--     -   'Vulkan.Extensions.VK_ARM_tensors.TensorViewCreateInfoARM'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_buffer VK_EXT_descriptor_buffer>,
@@ -3250,6 +3594,8 @@
     -- 'getBufferOpaqueCaptureDescriptorDataEXT',
     -- 'getImageOpaqueCaptureDescriptorDataEXT',
     -- 'getImageViewOpaqueCaptureDescriptorDataEXT',
+    -- 'Vulkan.Extensions.VK_ARM_tensors.getTensorOpaqueCaptureDescriptorDataARM',
+    -- 'Vulkan.Extensions.VK_ARM_tensors.getTensorViewOpaqueCaptureDescriptorDataARM',
     -- 'getSamplerOpaqueCaptureDescriptorDataEXT', or
     -- 'getAccelerationStructureOpaqueCaptureDescriptorDataEXT'.
     --
diff --git a/src/Vulkan/Extensions/VK_EXT_descriptor_buffer.hs-boot b/src/Vulkan/Extensions/VK_EXT_descriptor_buffer.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_descriptor_buffer.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_descriptor_buffer.hs-boot
@@ -18,7 +18,7 @@
 --     1
 --
 -- [__Ratification Status__]
---     Not ratified
+--     Ratified
 --
 -- [__Extension and Version Dependencies__]
 --                     
@@ -43,10 +43,18 @@
 --
 -- [__API Interactions__]
 --
+--     -   Interacts with VK_EXT_fragment_density_map
+--
 --     -   Interacts with VK_KHR_acceleration_structure
 --
 --     -   Interacts with VK_NV_ray_tracing
 --
+-- [__Deprecation State__]
+--
+--     -   /Deprecated/ by
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_heap VK_EXT_descriptor_heap>
+--         extension
+--
 -- [__Contact__]
 --
 --     -   Tobias Hector
@@ -103,6 +111,13 @@
 -- descriptors directly in memory, making the management of descriptor data
 -- more explicit.
 --
+-- == Deprecation by @VK_EXT_descriptor_heap@
+--
+-- Functionality in this extension is deprecated by the
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_heap VK_EXT_descriptor_heap>
+-- extension. See
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#legacy-descriptor-sets Descriptor Management: Replaced by Descriptor Heaps>.
+--
 -- == New Commands
 --
 -- -   'cmdBindDescriptorBufferEmbeddedSamplersEXT'
@@ -154,7 +169,10 @@
 --     'Vulkan.Core10.ImageView.ImageViewCreateInfo',
 --     'Vulkan.Core10.Sampler.SamplerCreateInfo',
 --     'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureCreateInfoKHR',
---     'Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureCreateInfoNV':
+--     'Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureCreateInfoNV',
+--     'Vulkan.Extensions.VK_ARM_tensors.TensorCreateInfoARM',
+--     'Vulkan.Extensions.VK_ARM_tensors.TensorViewCreateInfoARM',
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.AccelerationStructureCreateInfo2KHR':
 --
 --     -   'OpaqueCaptureDescriptorDataCreateInfoEXT'
 --
@@ -171,11 +189,18 @@
 -- -   Extending
 --     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
 --
---     -   'PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT'
---
 --     -   'PhysicalDeviceDescriptorBufferPropertiesEXT'
 --
 -- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_fragment_density_map VK_EXT_fragment_density_map>
+-- is supported:
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT'
+--
+-- If
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>
 -- or
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>
@@ -226,7 +251,7 @@
 -- -   Extending
 --     'Vulkan.Core10.Enums.ImageCreateFlagBits.ImageCreateFlagBits':
 --
---     -   'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT'
+--     -   'IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT'
 --
 -- -   Extending
 --     'Vulkan.Core10.Enums.ImageViewCreateFlagBits.ImageViewCreateFlagBits':
@@ -292,7 +317,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_descriptor_buffer Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_descriptor_buffer Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -361,12 +386,15 @@
 instance FromCStruct DescriptorBufferBindingPushDescriptorBufferHandleEXT
 
 
-data DescriptorGetInfoEXT
+type role DescriptorGetInfoEXT nominal
+data DescriptorGetInfoEXT (es :: [Type])
 
-instance ToCStruct DescriptorGetInfoEXT
-instance Show DescriptorGetInfoEXT
+instance ( Extendss DescriptorGetInfoEXT es
+         , PokeChain es ) => ToCStruct (DescriptorGetInfoEXT es)
+instance Show (Chain es) => Show (DescriptorGetInfoEXT es)
 
-instance FromCStruct DescriptorGetInfoEXT
+instance ( Extendss DescriptorGetInfoEXT es
+         , PeekChain es ) => FromCStruct (DescriptorGetInfoEXT es)
 
 
 data ImageCaptureDescriptorDataInfoEXT
diff --git a/src/Vulkan/Extensions/VK_EXT_descriptor_heap.hs b/src/Vulkan/Extensions/VK_EXT_descriptor_heap.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_EXT_descriptor_heap.hs
@@ -0,0 +1,5553 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_EXT_descriptor_heap - device extension
+--
+-- = VK_EXT_descriptor_heap
+--
+-- [__Name String__]
+--     @VK_EXT_descriptor_heap@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     136
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance5 VK_KHR_maintenance5>
+--     and
+--         
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_buffer_device_address VK_KHR_buffer_device_address>
+--          or
+--         
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.2 Vulkan Version 1.2>
+--
+-- [__API Interactions__]
+--
+--     -   Interacts with VK_ARM_tensors
+--
+--     -   Interacts with VK_EXT_custom_border_color
+--
+--     -   Interacts with VK_EXT_device_generated_commands
+--
+--     -   Interacts with VK_EXT_fragment_density_map
+--
+--     -   Interacts with VK_EXT_shader_object
+--
+--     -   Interacts with VK_KHR_ray_tracing_pipeline
+--
+--     -   Interacts with VK_NV_device_generated_commands
+--
+--     -   Interacts with VK_NV_ray_tracing
+--
+-- [__SPIR-V Dependencies__]
+--
+--     -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/EXT/SPV_EXT_descriptor_heap.html SPV_EXT_descriptor_heap>
+--
+-- [__Contact__]
+--
+--     -   Tobias Hector
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_descriptor_heap] @tobski%0A*Here describe the issue or question you have about the VK_EXT_descriptor_heap extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_EXT_descriptor_heap.adoc VK_EXT_descriptor_heap>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2024-06-12
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Contributors__]
+--
+--     -   Tobias Hector, AMD
+--
+--     -   Jan-Harald Fredriksen, Arm
+--
+--     -   Daniel Story, Nintendo
+--
+--     -   Connor Abbot, Valve
+--
+--     -   Hans-Kristian Arntzen, Valve
+--
+--     -   Matthew Netsch, Qualcomm
+--
+--     -   Jeff Bolz, NVIDIA
+--
+--     -   Alyssa Rosenzweig, Valve
+--
+--     -   Lionel Landerwerlin, Intel
+--
+--     -   Baldur Karlsson, Valve
+--
+--     -   Faith Ekstrand, Collabora
+--
+--     -   Slawomir Grajewski, Intel
+--
+--     -   Mike Blumenkrantz, Valve
+--
+--     -   Yiwei Zhang, Google
+--
+--     -   Stu Smith, AMD
+--
+--     -   Piers Daniell, NVIDIA
+--
+--     -   Jon Leech, Khronos
+--
+--     -   Rodrigo Locatti, NVIDIA
+--
+--     -   Krzysztof Niski, NVIDIA
+--
+--     -   Alan Baker, Google
+--
+--     -   James Fitzpatrick, Imagination
+--
+--     -   Samuel (Sheng-Wen) Huang, Mediatek
+--
+--     -   Hai Nguyen, Google
+--
+--     -   Jeff Leger, Qualcomm
+--
+--     -   Marty Johnson, Khronos
+--
+--     -   Tom Olson, Arm
+--
+--     -   Chris Glover, Google
+--
+--     -   Daniel Koch, NVIDIA
+--
+--     -   Robert Simpson, Qualcomm
+--
+--     -   Dan Ginsburg, Valve
+--
+--     -   Andreas Süßenbach, NVIDIA
+--
+--     -   Anna Maniscalco, Valve
+--
+--     -   Artem Kharytoniuk, LunarG
+--
+--     -   Younggwan Kim, Arm
+--
+--     -   Konstantin Seurer, Valve
+--
+--     -   Catarina Shablia, Collabora
+--
+--     -   Spencer Fricke, LunarG
+--
+--     -   Chris Bieneman, Microsoft
+--
+--     -   Ting Wei, Arm
+--
+--     -   Boris Zanin, AMD
+--
+--     -   Samuel Pitoiset, Valve
+--
+--     -   Erik Hogeman, Arm
+--
+--     -   Jesse Natalie, Microsoft
+--
+--     -   Guang Xu, AMD
+--
+--     -   Embla Flatlandsmo, Arm
+--
+-- [__Interactions and External Dependencies__]
+--
+--     -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_shader_untyped_pointers VK_KHR_shader_untyped_pointers>
+--         must be supported, but it does not need to be enabled for
+--         applications using only the
+--         <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptorheaps-bindings binding interface>.
+--
+-- == Description
+--
+-- This extension allows explicit management of descriptors, and the memory
+-- used to store descriptors, conceptualised as descriptor heaps.
+-- Descriptor heap memory can be accessed as any other memory, enabling
+-- management of descriptors on both CPU and the GPU.
+--
+-- This extension was developed based on issues discovered with
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_buffer VK_EXT_descriptor_buffer>.
+-- There are more constraints on how it is implemented, to provide more
+-- portable guarantees and more predictable performance characteristics.
+-- For instance, rather than an arbitrary number of sampler or resource
+-- buffers, there is exactly one sampler heap and exactly one resource
+-- heap.
+--
+-- This extension also eliminates descriptor sets and pipeline layouts
+-- completely; instead applications can look descriptors up solely by their
+-- offset into a heap. Shaders still using descriptor set and binding
+-- decorations can still be mapped to heaps through an API that maps set
+-- and binding decorations to heap offsets, either as constants or through
+-- push data. This new mapping API also enables a much more straightforward
+-- mapping to HLSL shaders using the root signature and descriptor table
+-- interfaces.
+--
+-- The push constant API has also been replaced with the /push data/
+-- interface, which aims to provide much more clarity about how data is
+-- passed to the shader, without requiring any mapping information to be
+-- provided during pipeline or shader creation. Mappings are still
+-- available for shaders written for the legacy interface.
+--
+-- There is also a much clearer path for mapping shader constant data, with
+-- two recommended options for mapping constant data through push data;
+-- either directly in push data, or through a device address stored in push
+-- data, both of which can be mapped to shaders with set and binding
+-- interfaces.
+--
+-- == New Object Types
+--
+-- -   'Vulkan.Extensions.Handles.TensorARM'
+--
+-- == New Commands
+--
+-- -   'cmdBindResourceHeapEXT'
+--
+-- -   'cmdBindSamplerHeapEXT'
+--
+-- -   'cmdPushDataEXT'
+--
+-- -   'getImageOpaqueCaptureDataEXT'
+--
+-- -   'getPhysicalDeviceDescriptorSizeEXT'
+--
+-- -   'writeResourceDescriptorsEXT'
+--
+-- -   'writeSamplerDescriptorsEXT'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_tensors VK_ARM_tensors>
+-- is supported:
+--
+-- -   'getTensorOpaqueCaptureDataARM'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_custom_border_color VK_EXT_custom_border_color>
+-- is supported:
+--
+-- -   'registerCustomBorderColorEXT'
+--
+-- -   'unregisterCustomBorderColorEXT'
+--
+-- == New Structures
+--
+-- -   'BindHeapInfoEXT'
+--
+-- -   'DescriptorMappingSourceConstantOffsetEXT'
+--
+-- -   'DescriptorMappingSourceHeapDataEXT'
+--
+-- -   'DescriptorMappingSourceIndirectAddressEXT'
+--
+-- -   'DescriptorMappingSourceIndirectIndexArrayEXT'
+--
+-- -   'DescriptorMappingSourceIndirectIndexEXT'
+--
+-- -   'DescriptorMappingSourcePushIndexEXT'
+--
+-- -   'DescriptorMappingSourceShaderRecordIndexEXT'
+--
+-- -   'DescriptorSetAndBindingMappingEXT'
+--
+-- -   'DeviceAddressRangeEXT'
+--
+-- -   'HostAddressRangeConstEXT'
+--
+-- -   'HostAddressRangeEXT'
+--
+-- -   'ImageDescriptorInfoEXT'
+--
+-- -   'PushDataInfoEXT'
+--
+-- -   'ResourceDescriptorInfoEXT'
+--
+-- -   'Vulkan.Extensions.VK_ARM_tensors.TensorViewCreateInfoARM'
+--
+-- -   'TexelBufferDescriptorInfoEXT'
+--
+-- -   Extending
+--     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo':
+--
+--     -   'CommandBufferInheritanceDescriptorHeapInfoEXT'
+--
+-- -   Extending 'Vulkan.Core10.Image.ImageCreateInfo',
+--     'Vulkan.Extensions.VK_ARM_tensors.TensorCreateInfoARM':
+--
+--     -   'OpaqueCaptureDataCreateInfoEXT'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceDescriptorHeapFeaturesEXT'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDeviceDescriptorHeapPropertiesEXT'
+--
+-- -   Extending
+--     'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo',
+--     'Vulkan.Extensions.VK_EXT_shader_object.ShaderCreateInfoEXT':
+--
+--     -   'ShaderDescriptorSetAndBindingMappingInfoEXT'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_tensors VK_ARM_tensors>
+-- is supported:
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDeviceDescriptorHeapTensorPropertiesARM'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_custom_border_color VK_EXT_custom_border_color>
+-- is supported:
+--
+-- -   Extending 'Vulkan.Core10.Sampler.SamplerCreateInfo':
+--
+--     -   'SamplerCustomBorderColorIndexCreateInfoEXT'
+--
+-- 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.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.ImageFormatProperties2':
+--
+--     -   'SubsampledImageFormatPropertiesEXT'
+--
+-- 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.Extensions.VK_NV_device_generated_commands.IndirectCommandsLayoutTokenNV':
+--
+--     -   'IndirectCommandsLayoutPushDataTokenNV'
+--
+-- == New Unions
+--
+-- -   'DescriptorMappingSourceDataEXT'
+--
+-- -   'ResourceDescriptorDataEXT'
+--
+-- == New Enums
+--
+-- -   'DescriptorMappingSourceEXT'
+--
+-- -   'SpirvResourceTypeFlagBitsEXT'
+--
+-- == New Bitmasks
+--
+-- -   'SpirvResourceTypeFlagsEXT'
+--
+-- -   'Vulkan.Extensions.VK_ARM_tensors.TensorViewCreateFlagsARM'
+--
+-- == New Enum Constants
+--
+-- -   'EXT_DESCRIPTOR_HEAP_EXTENSION_NAME'
+--
+-- -   'EXT_DESCRIPTOR_HEAP_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core13.Enums.AccessFlags2.AccessFlagBits2':
+--
+--     -   'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_RESOURCE_HEAP_READ_BIT_EXT'
+--
+--     -   'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SAMPLER_HEAP_READ_BIT_EXT'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BufferUsageFlagBits':
+--
+--     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_DESCRIPTOR_HEAP_BIT_EXT'
+--
+-- -   Extending
+--     'Vulkan.Core14.Enums.BufferUsageFlags2.BufferUsageFlagBits2':
+--
+--     -   'Vulkan.Core14.Enums.BufferUsageFlags2.BUFFER_USAGE_2_DESCRIPTOR_HEAP_BIT_EXT'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.ImageCreateFlagBits':
+--
+--     -   'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_DESCRIPTOR_HEAP_CAPTURE_REPLAY_BIT_EXT'
+--
+-- -   Extending
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PipelineCreateFlagBits2':
+--
+--     -   'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BIND_HEAP_INFO_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_DESCRIPTOR_HEAP_INFO_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DESCRIPTOR_SET_AND_BINDING_MAPPING_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_DESCRIPTOR_INFO_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_OPAQUE_CAPTURE_DATA_CREATE_INFO_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_HEAP_FEATURES_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_HEAP_PROPERTIES_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PUSH_DATA_INFO_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RESOURCE_DESCRIPTOR_INFO_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SHADER_DESCRIPTOR_SET_AND_BINDING_MAPPING_INFO_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_TEXEL_BUFFER_DESCRIPTOR_INFO_EXT'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_tensors VK_ARM_tensors>
+-- is supported:
+--
+-- -   Extending 'SpirvResourceTypeFlagBitsEXT':
+--
+--     -   'SPIRV_RESOURCE_TYPE_TENSOR_BIT_ARM'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_HEAP_TENSOR_PROPERTIES_ARM'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_ARM_tensors.TensorCreateFlagBitsARM':
+--
+--     -   'Vulkan.Extensions.VK_ARM_tensors.TENSOR_CREATE_DESCRIPTOR_HEAP_CAPTURE_REPLAY_BIT_ARM'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_custom_border_color VK_EXT_custom_border_color>
+-- is supported:
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_INDEX_CREATE_INFO_EXT'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_generated_commands VK_EXT_device_generated_commands>
+-- is supported:
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_EXT_device_generated_commands.IndirectCommandsTokenTypeEXT':
+--
+--     -   'Vulkan.Extensions.VK_EXT_device_generated_commands.INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_DATA_EXT'
+--
+--     -   'Vulkan.Extensions.VK_EXT_device_generated_commands.INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_DATA_SEQUENCE_INDEX_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.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SUBSAMPLED_IMAGE_FORMAT_PROPERTIES_EXT'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_shader_object VK_EXT_shader_object>
+-- is supported:
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_EXT_shader_object.ShaderCreateFlagBitsEXT':
+--
+--     -   'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_ray_tracing_pipeline VK_KHR_ray_tracing_pipeline>
+-- or
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>
+-- is supported:
+--
+-- -   Extending 'DescriptorMappingSourceEXT':
+--
+--     -   'DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT'
+--
+--     -   'DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT'
+--
+--     -   'DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_DATA_EXT'
+--
+-- -   Extending 'SpirvResourceTypeFlagBitsEXT':
+--
+--     -   'SPIRV_RESOURCE_TYPE_ACCELERATION_STRUCTURE_BIT_EXT'
+--
+-- 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.Extensions.VK_NV_device_generated_commands.IndirectCommandsTokenTypeNV':
+--
+--     -   'Vulkan.Extensions.VK_NV_device_generated_commands.INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_DATA_NV'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_PUSH_DATA_TOKEN_NV'
+--
+-- == Version History
+--
+-- -   Revision 1, 2024-06-12 (Tobias Hector)
+--
+--     -   Initial revision.
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_descriptor_heap Vulkan Specification>.
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_EXT_descriptor_heap  ( writeSamplerDescriptorsEXT
+                                                 , writeResourceDescriptorsEXT
+                                                 , cmdBindSamplerHeapEXT
+                                                 , cmdBindResourceHeapEXT
+                                                 , cmdPushDataEXT
+                                                 , registerCustomBorderColorEXT
+                                                 , unregisterCustomBorderColorEXT
+                                                 , getImageOpaqueCaptureDataEXT
+                                                 , getPhysicalDeviceDescriptorSizeEXT
+                                                 , getTensorOpaqueCaptureDataARM
+                                                 , HostAddressRangeEXT(..)
+                                                 , HostAddressRangeConstEXT(..)
+                                                 , TexelBufferDescriptorInfoEXT(..)
+                                                 , ImageDescriptorInfoEXT(..)
+                                                 , ResourceDescriptorInfoEXT(..)
+                                                 , BindHeapInfoEXT(..)
+                                                 , PushDataInfoEXT(..)
+                                                 , DescriptorMappingSourceConstantOffsetEXT(..)
+                                                 , DescriptorMappingSourcePushIndexEXT(..)
+                                                 , DescriptorMappingSourceIndirectIndexEXT(..)
+                                                 , DescriptorMappingSourceIndirectIndexArrayEXT(..)
+                                                 , DescriptorMappingSourceHeapDataEXT(..)
+                                                 , DescriptorMappingSourceShaderRecordIndexEXT(..)
+                                                 , DescriptorMappingSourceIndirectAddressEXT(..)
+                                                 , DescriptorSetAndBindingMappingEXT(..)
+                                                 , ShaderDescriptorSetAndBindingMappingInfoEXT(..)
+                                                 , SamplerCustomBorderColorIndexCreateInfoEXT(..)
+                                                 , OpaqueCaptureDataCreateInfoEXT(..)
+                                                 , IndirectCommandsLayoutPushDataTokenNV(..)
+                                                 , SubsampledImageFormatPropertiesEXT(..)
+                                                 , PhysicalDeviceDescriptorHeapFeaturesEXT(..)
+                                                 , PhysicalDeviceDescriptorHeapPropertiesEXT(..)
+                                                 , CommandBufferInheritanceDescriptorHeapInfoEXT(..)
+                                                 , PhysicalDeviceDescriptorHeapTensorPropertiesARM(..)
+                                                 , ResourceDescriptorDataEXT(..)
+                                                 , DescriptorMappingSourceDataEXT(..)
+                                                 , DescriptorMappingSourceEXT( DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_CONSTANT_OFFSET_EXT
+                                                                             , DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT
+                                                                             , DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT
+                                                                             , DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT
+                                                                             , DESCRIPTOR_MAPPING_SOURCE_RESOURCE_HEAP_DATA_EXT
+                                                                             , DESCRIPTOR_MAPPING_SOURCE_PUSH_DATA_EXT
+                                                                             , DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT
+                                                                             , DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT
+                                                                             , DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT
+                                                                             , DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_DATA_EXT
+                                                                             , DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT
+                                                                             , ..
+                                                                             )
+                                                 , SpirvResourceTypeFlagsEXT
+                                                 , SpirvResourceTypeFlagBitsEXT( SPIRV_RESOURCE_TYPE_ALL_EXT
+                                                                               , SPIRV_RESOURCE_TYPE_SAMPLER_BIT_EXT
+                                                                               , SPIRV_RESOURCE_TYPE_SAMPLED_IMAGE_BIT_EXT
+                                                                               , SPIRV_RESOURCE_TYPE_READ_ONLY_IMAGE_BIT_EXT
+                                                                               , SPIRV_RESOURCE_TYPE_READ_WRITE_IMAGE_BIT_EXT
+                                                                               , SPIRV_RESOURCE_TYPE_COMBINED_SAMPLED_IMAGE_BIT_EXT
+                                                                               , SPIRV_RESOURCE_TYPE_UNIFORM_BUFFER_BIT_EXT
+                                                                               , SPIRV_RESOURCE_TYPE_READ_ONLY_STORAGE_BUFFER_BIT_EXT
+                                                                               , SPIRV_RESOURCE_TYPE_READ_WRITE_STORAGE_BUFFER_BIT_EXT
+                                                                               , SPIRV_RESOURCE_TYPE_TENSOR_BIT_ARM
+                                                                               , SPIRV_RESOURCE_TYPE_ACCELERATION_STRUCTURE_BIT_EXT
+                                                                               , ..
+                                                                               )
+                                                 , DeviceAddressRangeEXT
+                                                 , EXT_DESCRIPTOR_HEAP_SPEC_VERSION
+                                                 , pattern EXT_DESCRIPTOR_HEAP_SPEC_VERSION
+                                                 , EXT_DESCRIPTOR_HEAP_EXTENSION_NAME
+                                                 , pattern EXT_DESCRIPTOR_HEAP_EXTENSION_NAME
+                                                 , TensorARM(..)
+                                                 , SamplerCustomBorderColorCreateInfoEXT(..)
+                                                 , TensorViewCreateInfoARM(..)
+                                                 , DeviceAddressRangeKHR(..)
+                                                 , IndirectCommandsTokenTypeNV(..)
+                                                 , IndirectCommandsTokenTypeEXT(..)
+                                                 , ShaderCreateFlagBitsEXT(..)
+                                                 , ShaderCreateFlagsEXT
+                                                 , TensorCreateFlagBitsARM(..)
+                                                 , TensorCreateFlagsARM
+                                                 , TensorViewCreateFlagBitsARM(..)
+                                                 , TensorViewCreateFlagsARM
+                                                 ) where
+
+import Data.Bits (Bits)
+import Data.Bits (FiniteBits)
+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 Foreign.Marshal.Utils (maybePeek)
+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 GHC.Show (showsPrec)
+import Numeric (showHex)
+import Data.Coerce (coerce)
+import Control.Monad.Trans.Class (lift)
+import Control.Monad.Trans.Cont (evalContT)
+import Control.Monad.Trans.Cont (runContT)
+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.String (IsString)
+import Data.Type.Equality ((:~:)(Refl))
+import Data.Typeable (Typeable)
+import Foreign.C.Types (CSize)
+import Foreign.C.Types (CSize(..))
+import Foreign.C.Types (CSize(CSize))
+import Foreign.Storable (Storable)
+import Foreign.Storable (Storable(peek))
+import Foreign.Storable (Storable(poke))
+import qualified Foreign.Storable (Storable(..))
+import GHC.Generics (Generic)
+import GHC.IO.Exception (IOErrorType(..))
+import GHC.IO.Exception (IOException(..))
+import Data.Int (Int32)
+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.CStruct.Extends (withSomeCStruct)
+import Vulkan.NamedType ((:::))
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.Core10.FundamentalTypes (Bool32(..))
+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_EXT_debug_utils (DebugUtilsObjectNameInfoEXT)
+import Vulkan.Core10.Enums.DescriptorType (DescriptorType)
+import Vulkan.Core10.Enums.DescriptorType (DescriptorType(..))
+import Vulkan.Core10.Handles (Device)
+import Vulkan.Core10.Handles (Device(..))
+import Vulkan.Core10.Handles (Device(Device))
+import Vulkan.Extensions.VK_KHR_device_address_commands (DeviceAddressRangeKHR)
+import Vulkan.Dynamic (DeviceCmds(pVkCmdBindResourceHeapEXT))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdBindSamplerHeapEXT))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdPushDataEXT))
+import Vulkan.Dynamic (DeviceCmds(pVkGetImageOpaqueCaptureDataEXT))
+import Vulkan.Dynamic (DeviceCmds(pVkGetTensorOpaqueCaptureDataARM))
+import Vulkan.Dynamic (DeviceCmds(pVkRegisterCustomBorderColorEXT))
+import Vulkan.Dynamic (DeviceCmds(pVkUnregisterCustomBorderColorEXT))
+import Vulkan.Dynamic (DeviceCmds(pVkWriteResourceDescriptorsEXT))
+import Vulkan.Dynamic (DeviceCmds(pVkWriteSamplerDescriptorsEXT))
+import Vulkan.Core10.FundamentalTypes (DeviceSize)
+import Vulkan.Core10.Handles (Device_T)
+import Vulkan.CStruct.Extends (Extends)
+import Vulkan.CStruct.Extends (Extendss)
+import Vulkan.CStruct.Extends (Extensible(..))
+import Vulkan.Core10.FundamentalTypes (Flags)
+import Vulkan.Core10.Enums.Format (Format)
+import Vulkan.Core10.Handles (Image)
+import Vulkan.Core10.Handles (Image(..))
+import Vulkan.Core10.Enums.ImageLayout (ImageLayout)
+import Vulkan.Core10.ImageView (ImageViewCreateInfo)
+import Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceDescriptorSizeEXT))
+import Vulkan.CStruct.Extends (PeekChain)
+import Vulkan.CStruct.Extends (PeekChain(..))
+import Vulkan.Core10.Handles (PhysicalDevice)
+import Vulkan.Core10.Handles (PhysicalDevice(..))
+import Vulkan.Core10.Handles (PhysicalDevice(PhysicalDevice))
+import Vulkan.Core10.Handles (PhysicalDevice_T)
+import Vulkan.CStruct.Extends (PokeChain)
+import Vulkan.CStruct.Extends (PokeChain(..))
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_push_constant_bank (PushConstantBankInfoNV)
+import Vulkan.Core10.Enums.Result (Result)
+import Vulkan.Core10.Enums.Result (Result(..))
+import Vulkan.Core10.Sampler (SamplerCreateInfo)
+import Vulkan.Extensions.VK_EXT_custom_border_color (SamplerCustomBorderColorCreateInfoEXT)
+import Vulkan.CStruct.Extends (SomeStruct)
+import Vulkan.CStruct.Extends (SomeStruct(..))
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Extensions.Handles (TensorARM)
+import Vulkan.Extensions.Handles (TensorARM(..))
+import Vulkan.Extensions.VK_ARM_tensors (TensorViewCreateInfoARM)
+import Vulkan.Exception (VulkanException(..))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_BIND_HEAP_INFO_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_DESCRIPTOR_HEAP_INFO_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DESCRIPTOR_SET_AND_BINDING_MAPPING_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMAGE_DESCRIPTOR_INFO_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_PUSH_DATA_TOKEN_NV))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_OPAQUE_CAPTURE_DATA_CREATE_INFO_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_HEAP_FEATURES_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_HEAP_PROPERTIES_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_HEAP_TENSOR_PROPERTIES_ARM))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PUSH_DATA_INFO_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RESOURCE_DESCRIPTOR_INFO_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_INDEX_CREATE_INFO_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SHADER_DESCRIPTOR_SET_AND_BINDING_MAPPING_INFO_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SUBSAMPLED_IMAGE_FORMAT_PROPERTIES_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_TEXEL_BUFFER_DESCRIPTOR_INFO_EXT))
+import Vulkan.Core10.Enums.Result (Result(SUCCESS))
+import Vulkan.Extensions.VK_KHR_device_address_commands (DeviceAddressRangeKHR(..))
+import Vulkan.Extensions.VK_EXT_device_generated_commands (IndirectCommandsTokenTypeEXT(..))
+import Vulkan.Extensions.VK_NV_device_generated_commands (IndirectCommandsTokenTypeNV(..))
+import Vulkan.Extensions.VK_EXT_custom_border_color (SamplerCustomBorderColorCreateInfoEXT(..))
+import Vulkan.Extensions.VK_EXT_shader_object (ShaderCreateFlagBitsEXT(..))
+import Vulkan.Extensions.VK_EXT_shader_object (ShaderCreateFlagsEXT)
+import Vulkan.Extensions.Handles (TensorARM(..))
+import Vulkan.Extensions.VK_ARM_tensors (TensorCreateFlagBitsARM(..))
+import Vulkan.Extensions.VK_ARM_tensors (TensorCreateFlagsARM)
+import Vulkan.Extensions.VK_ARM_tensors (TensorViewCreateFlagBitsARM(..))
+import Vulkan.Extensions.VK_ARM_tensors (TensorViewCreateFlagsARM)
+import Vulkan.Extensions.VK_ARM_tensors (TensorViewCreateInfoARM(..))
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkWriteSamplerDescriptorsEXT
+  :: FunPtr (Ptr Device_T -> Word32 -> Ptr (SomeStruct SamplerCreateInfo) -> Ptr HostAddressRangeEXT -> IO Result) -> Ptr Device_T -> Word32 -> Ptr (SomeStruct SamplerCreateInfo) -> Ptr HostAddressRangeEXT -> IO Result
+
+-- | vkWriteSamplerDescriptorsEXT - Write sampler descriptors to memory
+--
+-- = Description
+--
+-- Each descriptor will be written to @pDescriptors@[i].@address@ where i
+-- is the index of its create info in @pSamplers@.
+--
+-- Descriptors written using a fully identical
+-- 'Vulkan.Core10.Sampler.SamplerCreateInfo' structure on the same
+-- 'Vulkan.Core10.Handles.Device' will always return the same bit pattern.
+-- If the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-descriptorHeapCaptureReplay descriptorHeapCaptureReplay>
+-- feature is enabled, descriptors written using a fully identical
+-- 'Vulkan.Core10.Sampler.SamplerCreateInfo' structure on a
+-- 'Vulkan.Core10.Handles.Device' created from the same
+-- 'Vulkan.Core10.Handles.PhysicalDevice' with identical parameters will
+-- always return the same bit pattern.
+--
+-- YCBCR samplers must be embedded in a shader by using
+-- 'ShaderDescriptorSetAndBindingMappingInfoEXT', they cannot be specified
+-- here.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkWriteSamplerDescriptorsEXT-descriptorHeap-11202# The
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-descriptorHeap descriptorHeap>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkWriteSamplerDescriptorsEXT-size-11203# The @size@ member of
+--     each element of @pDescriptors@ /must/ be greater than or equal to
+--     the value returned by 'getPhysicalDeviceDescriptorSizeEXT' with a
+--     @descriptorType@ equal to
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLER'
+--
+-- -   #VUID-vkWriteSamplerDescriptorsEXT-pSamplers-11204# Elements of
+--     @pSamplers@ /must/ not include
+--     'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionInfo'
+--     structures in their @pNext@ chains
+--
+-- -   #VUID-vkWriteSamplerDescriptorsEXT-borderColor-11444# If the
+--     @borderColor@ of any element of @pSamplers@ is
+--     'Vulkan.Core10.Enums.BorderColor.BORDER_COLOR_FLOAT_CUSTOM_EXT' or
+--     'Vulkan.Core10.Enums.BorderColor.BORDER_COLOR_INT_CUSTOM_EXT',
+--     'SamplerCustomBorderColorIndexCreateInfoEXT' /must/ be included in
+--     the @pNext@ chain of that element
+--
+-- -   #VUID-vkWriteSamplerDescriptorsEXT-borderColor-11205# If the
+--     @borderColor@ of any element of @pSamplers@ is
+--     'Vulkan.Core10.Enums.BorderColor.BORDER_COLOR_FLOAT_CUSTOM_EXT' or
+--     'Vulkan.Core10.Enums.BorderColor.BORDER_COLOR_INT_CUSTOM_EXT',
+--     'SamplerCustomBorderColorIndexCreateInfoEXT'::@index@ /must/ be a
+--     value less than
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxCustomBorderColorSamplers maxCustomBorderColorSamplers>
+--
+-- -   #VUID-vkWriteSamplerDescriptorsEXT-pNext-11400# If there is a
+--     'Vulkan.Extensions.VK_EXT_debug_utils.DebugUtilsObjectNameInfoEXT'
+--     structure in the @pNext@ chain of any element of @pSamplers@, its
+--     @objectType@ /must/ be
+--     'Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_UNKNOWN'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkWriteSamplerDescriptorsEXT-device-parameter# @device@ /must/
+--     be a valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkWriteSamplerDescriptorsEXT-pSamplers-parameter# @pSamplers@
+--     /must/ be a valid pointer to an array of @samplerCount@ valid
+--     'Vulkan.Core10.Sampler.SamplerCreateInfo' structures
+--
+-- -   #VUID-vkWriteSamplerDescriptorsEXT-pDescriptors-parameter#
+--     @pDescriptors@ /must/ be a valid pointer to an array of
+--     @samplerCount@ valid 'HostAddressRangeEXT' structures
+--
+-- -   #VUID-vkWriteSamplerDescriptorsEXT-samplerCount-arraylength#
+--     @samplerCount@ /must/ be greater than @0@
+--
+-- == 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_DEVICE_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_heap VK_EXT_descriptor_heap>,
+-- 'Vulkan.Core10.Handles.Device', 'HostAddressRangeEXT',
+-- 'Vulkan.Core10.Sampler.SamplerCreateInfo'
+writeSamplerDescriptorsEXT :: forall io
+                            . (MonadIO io)
+                           => -- | @device@ is the logical device that the descriptors are for.
+                              Device
+                           -> -- | @pSamplers@ is a pointer to an array of
+                              -- 'Vulkan.Core10.Sampler.SamplerCreateInfo' structures defining properties
+                              -- of the sampler descriptors that will be written.
+                              ("samplers" ::: Vector (SomeStruct SamplerCreateInfo))
+                           -> -- | @pDescriptors@ is a pointer to an array of 'HostAddressRangeEXT'
+                              -- structures defining the host address ranges that will be written to for
+                              -- each descriptor.
+                              ("descriptors" ::: Vector HostAddressRangeEXT)
+                           -> io ()
+writeSamplerDescriptorsEXT device samplers descriptors = liftIO . evalContT $ do
+  let vkWriteSamplerDescriptorsEXTPtr = pVkWriteSamplerDescriptorsEXT (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkWriteSamplerDescriptorsEXTPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkWriteSamplerDescriptorsEXT is null" Nothing Nothing
+  let vkWriteSamplerDescriptorsEXT' = mkVkWriteSamplerDescriptorsEXT vkWriteSamplerDescriptorsEXTPtr
+  let pSamplersLength = Data.Vector.length $ (samplers)
+  lift $ unless ((Data.Vector.length $ (descriptors)) == pSamplersLength) $
+    throwIO $ IOError Nothing InvalidArgument "" "pDescriptors and pSamplers must have the same length" Nothing Nothing
+  pPSamplers <- ContT $ allocaBytes @(SamplerCreateInfo _) ((Data.Vector.length (samplers)) * 80)
+  Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPSamplers `plusPtr` (80 * (i)) :: Ptr (SamplerCreateInfo _))) (e) . ($ ())) (samplers)
+  pPDescriptors <- ContT $ allocaBytes @HostAddressRangeEXT ((Data.Vector.length (descriptors)) * 16)
+  lift $ Data.Vector.imapM_ (\i e -> poke (pPDescriptors `plusPtr` (16 * (i)) :: Ptr HostAddressRangeEXT) (e)) (descriptors)
+  r <- lift $ traceAroundEvent "vkWriteSamplerDescriptorsEXT" (vkWriteSamplerDescriptorsEXT'
+                                                                 (deviceHandle (device))
+                                                                 ((fromIntegral pSamplersLength :: Word32))
+                                                                 (forgetExtensions (pPSamplers))
+                                                                 (pPDescriptors))
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkWriteResourceDescriptorsEXT
+  :: FunPtr (Ptr Device_T -> Word32 -> Ptr (SomeStruct ResourceDescriptorInfoEXT) -> Ptr HostAddressRangeEXT -> IO Result) -> Ptr Device_T -> Word32 -> Ptr (SomeStruct ResourceDescriptorInfoEXT) -> Ptr HostAddressRangeEXT -> IO Result
+
+-- | vkWriteResourceDescriptorsEXT - Write resource descriptors to memory
+--
+-- = Description
+--
+-- Each descriptor will be written to @pDescriptors@[i].address where i is
+-- the index of its create info in @pResources@.
+--
+-- If any image descriptor written by this command includes a
+-- 'Vulkan.Core11.Handles.SamplerYcbcrConversion', multiple descriptors
+-- will be written adjacent to each other for that descriptor, equal to
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionImageFormatProperties'::@combinedImageSamplerDescriptorCount@
+-- for the image.
+--
+-- If any image descriptor written by this command is for an image created
+-- with @flags@ containing
+-- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT',
+-- multiple descriptors will be written adjacent to each other for that
+-- descriptor, equal to
+-- 'SubsampledImageFormatPropertiesEXT'::@subsampledImageDescriptorCount@
+-- for the image.
+--
+-- Descriptors using the same @type@ and written using a fully identical
+-- 'TexelBufferDescriptorInfoEXT' or
+-- 'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+-- structure on the same 'Vulkan.Core10.Handles.Device' will always return
+-- the same bit pattern. If the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-descriptorHeapCaptureReplay descriptorHeapCaptureReplay>
+-- feature is enabled, this applies to any 'Vulkan.Core10.Handles.Device'
+-- created with identical parameters from the same
+-- 'Vulkan.Core10.Handles.PhysicalDevice'.
+--
+-- Recreating the same buffer descriptor during replay of a prior capture
+-- requires that the device address is the same, which requires additional
+-- data to be captured and provided during replay when creating a buffer
+-- and allocating memory for it.
+--
+-- Image descriptors using the same @type@ and written using a fully
+-- identical 'ImageDescriptorInfoEXT' other than
+-- 'ImageDescriptorInfoEXT'::@pView->image@, where image was successfully
+-- created with
+-- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_DESCRIPTOR_HEAP_CAPTURE_REPLAY_BIT_EXT'
+-- and a 'OpaqueCaptureDataCreateInfoEXT' with data captured via
+-- 'getImageOpaqueCaptureDataEXT' from an image used previously, will write
+-- a descriptor with the same bit pattern if possible; if the same bit
+-- pattern cannot be generated,
+-- 'Vulkan.Core10.Enums.Result.ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS' will
+-- be returned instead.
+--
+-- Tensor descriptors using the same @type@ and written using a fully
+-- identical 'Vulkan.Extensions.VK_ARM_tensors.TensorViewCreateInfoARM'
+-- other than
+-- 'Vulkan.Extensions.VK_ARM_tensors.TensorViewCreateInfoARM'::@tensor@,
+-- where tensor was successfully created with
+-- 'OpaqueCaptureDataCreateInfoEXT' with
+-- 'Vulkan.Extensions.VK_ARM_tensors.TENSOR_CREATE_DESCRIPTOR_HEAP_CAPTURE_REPLAY_BIT_ARM'
+-- and a 'OpaqueCaptureDataCreateInfoEXT' with data captured via
+-- 'getTensorOpaqueCaptureDataARM' from a tensor used previously, will
+-- write a descriptor with the same bit pattern if possible; if the same
+-- bit pattern cannot be generated,
+-- 'Vulkan.Core10.Enums.Result.ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS' will
+-- be returned instead.
+--
+-- Image creation is sufficiently complex that it may not be possible to
+-- recreate all possible descriptors from an image during replay, even if
+-- the image itself was successfully recreated. The conditions for this
+-- happening will be largely the same as those which could cause allocating
+-- a buffer with the same device address during replay to fail. Replay
+-- tools are advised to recreate captured descriptors for an image
+-- immediately after recreating the image itself wherever possible. The
+-- same is true for tensors.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkWriteResourceDescriptorsEXT-descriptorHeap-11206# The
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-descriptorHeap descriptorHeap>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkWriteResourceDescriptorsEXT-size-11207# The @size@ member of
+--     each element of @pDescriptors@ /must/ be greater than or equal to
+--     the value returned by 'getPhysicalDeviceDescriptorSizeEXT' with a
+--     @descriptorType@ equal to @type@
+--
+-- -   #VUID-vkWriteResourceDescriptorsEXT-pResources-11208# If any element
+--     of @pResources@ specifies a
+--     'Vulkan.Core10.ImageView.ImageViewCreateInfo' structure with a
+--     'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionInfo'
+--     structure in its @pNext@ chain, the corresponding element of
+--     @pDescriptors@ /must/ have a @size@ member that is greater than or
+--     equal to the product of the value returned by
+--     'getPhysicalDeviceDescriptorSizeEXT' with a @descriptorType@ equal
+--     to @type@ and
+--     'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionImageFormatProperties'::@combinedImageSamplerDescriptorCount@,
+--     as queried from
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceImageFormatInfo2'
+--     with image format info equivalent to the image view the descriptor
+--     is being created for
+--
+-- -   #VUID-vkWriteResourceDescriptorsEXT-pResources-11209# If any element
+--     of @pResources@ specifies a
+--     'Vulkan.Core10.ImageView.ImageViewCreateInfo' structure with an
+--     @image@ created with @flags@ containing
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT',
+--     the corresponding element of @pDescriptors@ /must/ have a @size@
+--     member that is greater than or equal to the product of the value
+--     returned by 'getPhysicalDeviceDescriptorSizeEXT' with a
+--     @descriptorType@ equal to @type@ and
+--     'SubsampledImageFormatPropertiesEXT'::@subsampledImageDescriptorCount@,
+--     as queried from
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceImageFormatInfo2'
+--     with image format info equivalent to the image view the descriptor
+--     is being created for
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkWriteResourceDescriptorsEXT-device-parameter# @device@
+--     /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkWriteResourceDescriptorsEXT-pResources-parameter#
+--     @pResources@ /must/ be a valid pointer to an array of
+--     @resourceCount@ valid 'ResourceDescriptorInfoEXT' structures
+--
+-- -   #VUID-vkWriteResourceDescriptorsEXT-pDescriptors-parameter#
+--     @pDescriptors@ /must/ be a valid pointer to an array of
+--     @resourceCount@ valid 'HostAddressRangeEXT' structures
+--
+-- -   #VUID-vkWriteResourceDescriptorsEXT-resourceCount-arraylength#
+--     @resourceCount@ /must/ be greater than @0@
+--
+-- == 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_DEVICE_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_heap VK_EXT_descriptor_heap>,
+-- 'Vulkan.Core10.Handles.Device', 'HostAddressRangeEXT',
+-- 'ResourceDescriptorInfoEXT'
+writeResourceDescriptorsEXT :: forall io
+                             . (MonadIO io)
+                            => -- | @device@ is the logical device that the descriptors are for.
+                               Device
+                            -> -- | @pResources@ is a pointer to an array of 'ResourceDescriptorInfoEXT'
+                               -- structures defining properties of the resource descriptors that will be
+                               -- written.
+                               ("resources" ::: Vector (SomeStruct ResourceDescriptorInfoEXT))
+                            -> -- | @pDescriptors@ is a pointer to an array of 'HostAddressRangeEXT'
+                               -- structures defining the host address ranges that will be written to for
+                               -- each descriptor.
+                               ("descriptors" ::: Vector HostAddressRangeEXT)
+                            -> io ()
+writeResourceDescriptorsEXT device
+                              resources
+                              descriptors = liftIO . evalContT $ do
+  let vkWriteResourceDescriptorsEXTPtr = pVkWriteResourceDescriptorsEXT (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkWriteResourceDescriptorsEXTPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkWriteResourceDescriptorsEXT is null" Nothing Nothing
+  let vkWriteResourceDescriptorsEXT' = mkVkWriteResourceDescriptorsEXT vkWriteResourceDescriptorsEXTPtr
+  let pResourcesLength = Data.Vector.length $ (resources)
+  lift $ unless ((Data.Vector.length $ (descriptors)) == pResourcesLength) $
+    throwIO $ IOError Nothing InvalidArgument "" "pDescriptors and pResources must have the same length" Nothing Nothing
+  pPResources <- ContT $ allocaBytes @(ResourceDescriptorInfoEXT _) ((Data.Vector.length (resources)) * 32)
+  Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPResources `plusPtr` (32 * (i)) :: Ptr (ResourceDescriptorInfoEXT _))) (e) . ($ ())) (resources)
+  pPDescriptors <- ContT $ allocaBytes @HostAddressRangeEXT ((Data.Vector.length (descriptors)) * 16)
+  lift $ Data.Vector.imapM_ (\i e -> poke (pPDescriptors `plusPtr` (16 * (i)) :: Ptr HostAddressRangeEXT) (e)) (descriptors)
+  r <- lift $ traceAroundEvent "vkWriteResourceDescriptorsEXT" (vkWriteResourceDescriptorsEXT'
+                                                                  (deviceHandle (device))
+                                                                  ((fromIntegral pResourcesLength :: Word32))
+                                                                  (forgetExtensions (pPResources))
+                                                                  (pPDescriptors))
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdBindSamplerHeapEXT
+  :: FunPtr (Ptr CommandBuffer_T -> Ptr BindHeapInfoEXT -> IO ()) -> Ptr CommandBuffer_T -> Ptr BindHeapInfoEXT -> IO ()
+
+-- | vkCmdBindSamplerHeapEXT - Binds a sampler heap to a command buffer
+--
+-- = Description
+--
+-- Addresses in the range defined by @pBindInfo->heapRange@ are bound as
+-- the sampler heap. The application /can/ access samplers and data through
+-- this heap anywhere except for the reserved range specified by
+-- @pBindInfo->reservedRangeOffset@. Addresses in the range
+-- [@pBindInfo->reservedRangeOffset@, @pBindInfo->reservedRangeOffset@ +
+-- @pBindInfo->reservedRangeSize@) are reserved for the implementation and
+-- /must/ not be accessed by the application at any time from when this
+-- command is recorded until there are no command buffers with that range
+-- bound.
+--
+-- The reserved range is bound to the command buffer until it has been
+-- reset.
+--
+-- Implementations may require a larger sampler heap reservation to store
+-- embedded sampler descriptors when used in a mapping, as advertised by
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-minSamplerHeapReservedRangeWithEmbedded minSamplerHeapReservedRangeWithEmbedded>.
+--
+-- Shaders executed by commands recorded after this command /can/ use the
+-- specified sampler heap to access resources.
+-- @pBindInfo->heapRange.address@ will be available to shaders to access
+-- samplers and data through the @SamplerHeapEXT@ @BuiltIn@ or via
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptorheaps-bindings shader bindings>.
+--
+-- When 'cmdBindSamplerHeapEXT' is recorded, it
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptorheaps-invalidate-sets immediately invalidates all non-heap descriptor state>.
+-- Similarly, recording any non-heap descriptor state commands immediately
+-- invalidates state set by this command.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdBindSamplerHeapEXT-pBindInfo-11223# The sum of
+--     @pBindInfo->reservedRangeOffset@ and @pBindInfo->reservedRangeSize@
+--     /must/ be less than or equal to @pBindInfo->heapRange.size@
+--
+-- -   #VUID-vkCmdBindSamplerHeapEXT-pBindInfo-11224#
+--     @pBindInfo->reservedRangeSize@ /must/ be greater than or equal to
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-minSamplerHeapReservedRange minSamplerHeapReservedRange>
+--
+-- -   #VUID-vkCmdBindSamplerHeapEXT-pBindInfo-11225#
+--     @pBindInfo->heapRange.size@ /must/ less than or equal to
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxSamplerHeapSize maxSamplerHeapSize>
+--
+-- -   #VUID-vkCmdBindSamplerHeapEXT-pBindInfo-11226#
+--     @pBindInfo->heapRange.address@ /must/ be a multiple of
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-samplerHeapAlignment samplerHeapAlignment>
+--
+-- -   #VUID-vkCmdBindSamplerHeapEXT-pBindInfo-11434#
+--     @pBindInfo->reservedRangeOffset@ /must/ be a multiple of
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-samplerDescriptorAlignment samplerDescriptorAlignment>
+--
+-- -   #VUID-vkCmdBindSamplerHeapEXT-pBindInfo-11228# Memory bound to
+--     addresses in the range [@pBindInfo->heapRange.address@ +
+--     @pBindInfo->reservedRangeOffset@, @pBindInfo->heapRange.address@ +
+--     @pBindInfo->reservedRangeOffset@ + @pBindInfo->reservedRangeSize@)
+--     /must/ not be
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptorheaps-reservedranges bound to any other command buffer as a reserved range>
+--     for any heap unless the reserved range matches exactly and it is the
+--     same heap type
+--
+-- -   #VUID-vkCmdBindSamplerHeapEXT-heapRange-11230# @heapRange@ /must/ be
+--     a device address range allocated to the application from a buffer
+--     created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_DESCRIPTOR_HEAP_BIT_EXT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdBindSamplerHeapEXT-commandBuffer-11231# If
+--     @commandBuffer@ is a secondary command buffer, it /must/ have begun
+--     with
+--     'CommandBufferInheritanceDescriptorHeapInfoEXT'::@pSamplerHeapBindInfo@
+--     equal to @NULL@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdBindSamplerHeapEXT-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdBindSamplerHeapEXT-pBindInfo-parameter# @pBindInfo@
+--     /must/ be a valid pointer to a valid 'BindHeapInfoEXT' structure
+--
+-- -   #VUID-vkCmdBindSamplerHeapEXT-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-vkCmdBindSamplerHeapEXT-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', or
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
+--
+-- -   #VUID-vkCmdBindSamplerHeapEXT-videocoding# This command /must/ only
+--     be called outside of a video coding scope
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | State                                                                                                                                  |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | VK_QUEUE_GRAPHICS_BIT                                                                                                 |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdBindSamplerHeapEXT is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_heap VK_EXT_descriptor_heap>,
+-- 'BindHeapInfoEXT', 'Vulkan.Core10.Handles.CommandBuffer'
+cmdBindSamplerHeapEXT :: forall io
+                       . (MonadIO io)
+                      => -- | @commandBuffer@ is the command buffer that the sampler heap will be
+                         -- bound to.
+                         CommandBuffer
+                      -> -- | @pBindInfo@ is a 'BindHeapInfoEXT' specifying the device address range
+                         -- used for the heap and any implementation reservations.
+                         ("bindInfo" ::: BindHeapInfoEXT)
+                      -> io ()
+cmdBindSamplerHeapEXT commandBuffer bindInfo = liftIO . evalContT $ do
+  let vkCmdBindSamplerHeapEXTPtr = pVkCmdBindSamplerHeapEXT (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdBindSamplerHeapEXTPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdBindSamplerHeapEXT is null" Nothing Nothing
+  let vkCmdBindSamplerHeapEXT' = mkVkCmdBindSamplerHeapEXT vkCmdBindSamplerHeapEXTPtr
+  pBindInfo <- ContT $ withCStruct (bindInfo)
+  lift $ traceAroundEvent "vkCmdBindSamplerHeapEXT" (vkCmdBindSamplerHeapEXT'
+                                                       (commandBufferHandle (commandBuffer))
+                                                       pBindInfo)
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdBindResourceHeapEXT
+  :: FunPtr (Ptr CommandBuffer_T -> Ptr BindHeapInfoEXT -> IO ()) -> Ptr CommandBuffer_T -> Ptr BindHeapInfoEXT -> IO ()
+
+-- | vkCmdBindResourceHeapEXT - Binds a resource heap to a command buffer
+--
+-- = Description
+--
+-- Addresses in the range defined by @pBindInfo->heapRange@ are bound as
+-- the resource heap. The application /can/ access resources and data
+-- through this heap anywhere except for the reserved range specified by
+-- @pBindInfo->reservedRangeOffset@. Addresses in the range
+-- [@pBindInfo->reservedRangeOffset@, @pBindInfo->reservedRangeOffset@ +
+-- @pBindInfo->reservedRangeSize@) are reserved for the implementation and
+-- /must/ not be accessed by the application at any time from when this
+-- command is recorded until there are no command buffers with that range
+-- bound.
+--
+-- The reserved range is bound to the command buffer until it has been
+-- reset.
+--
+-- Shaders executed by commands recorded after this command /can/ use the
+-- specified resource heap to access resources.
+-- @pBindInfo->heapRange.address@ will be available to shaders to access
+-- resources through the @ResourceHeapEXT@ @BuiltIn@ or via
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptorheaps-bindings shader bindings>.
+--
+-- When 'cmdBindResourceHeapEXT' is recorded, it
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptorheaps-invalidate-sets immediately invalidates all non-heap descriptor state>.
+-- Similarly, recording any non-heap descriptor state commands immediately
+-- invalidates state set by this command.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdBindResourceHeapEXT-pBindInfo-11232# The sum of
+--     @pBindInfo->reservedRangeOffset@ and @pBindInfo->reservedRangeSize@
+--     /must/ be less than or equal to @pBindInfo->heapRange.size@
+--
+-- -   #VUID-vkCmdBindResourceHeapEXT-pBindInfo-11233#
+--     @pBindInfo->reservedRangeSize@ /must/ be greater than or equal to
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-minResourceHeapReservedRange minResourceHeapReservedRange>
+--
+-- -   #VUID-vkCmdBindResourceHeapEXT-pBindInfo-11234#
+--     @pBindInfo->heapRange.size@ /must/ less than or equal to
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxResourceHeapSize maxResourceHeapSize>
+--
+-- -   #VUID-vkCmdBindResourceHeapEXT-pBindInfo-11235#
+--     @pBindInfo->heapRange.address@ /must/ be a multiple of
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-resourceHeapAlignment resourceHeapAlignment>
+--
+-- -   #VUID-vkCmdBindResourceHeapEXT-pBindInfo-11435#
+--     @pBindInfo->reservedRangeOffset@ /must/ be a multiple of
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-bufferDescriptorAlignment bufferDescriptorAlignment>
+--
+-- -   #VUID-vkCmdBindResourceHeapEXT-pBindInfo-11436#
+--     @pBindInfo->reservedRangeOffset@ /must/ be a multiple of
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-imageDescriptorAlignment imageDescriptorAlignment>
+--
+-- -   #VUID-vkCmdBindResourceHeapEXT-pBindInfo-11236# Memory bound to
+--     addresses in the range [@pBindInfo->heapRange.address@ +
+--     @pBindInfo->reservedRangeOffset@, @pBindInfo->heapRange.address@ +
+--     @pBindInfo->reservedRangeOffset@ + @pBindInfo->reservedRangeSize@)
+--     /must/ not be
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptorheaps-reservedranges bound to any other command buffer as a reserved range>
+--     for any heap unless the reserved range matches exactly and it is the
+--     same heap type
+--
+-- -   #VUID-vkCmdBindResourceHeapEXT-heapRange-11237# @heapRange@ /must/
+--     be a device address range allocated to the application from a buffer
+--     created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_DESCRIPTOR_HEAP_BIT_EXT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdBindResourceHeapEXT-commandBuffer-11238# If
+--     @commandBuffer@ is a secondary command buffer, it /must/ have begun
+--     with
+--     'CommandBufferInheritanceDescriptorHeapInfoEXT'::@pResourceHeapBindInfo@
+--     equal to @NULL@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdBindResourceHeapEXT-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdBindResourceHeapEXT-pBindInfo-parameter# @pBindInfo@
+--     /must/ be a valid pointer to a valid 'BindHeapInfoEXT' structure
+--
+-- -   #VUID-vkCmdBindResourceHeapEXT-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-vkCmdBindResourceHeapEXT-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', or
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
+--
+-- -   #VUID-vkCmdBindResourceHeapEXT-videocoding# This command /must/ only
+--     be called outside of a video coding scope
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | State                                                                                                                                  |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | VK_QUEUE_GRAPHICS_BIT                                                                                                 |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdBindResourceHeapEXT is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_heap VK_EXT_descriptor_heap>,
+-- 'BindHeapInfoEXT', 'Vulkan.Core10.Handles.CommandBuffer'
+cmdBindResourceHeapEXT :: forall io
+                        . (MonadIO io)
+                       => -- | @commandBuffer@ is the command buffer that the resource heap will be
+                          -- bound to.
+                          CommandBuffer
+                       -> -- | @pBindInfo@ is a 'BindHeapInfoEXT' specifying the device address range
+                          -- used for the heap and any implementation reservations.
+                          ("bindInfo" ::: BindHeapInfoEXT)
+                       -> io ()
+cmdBindResourceHeapEXT commandBuffer bindInfo = liftIO . evalContT $ do
+  let vkCmdBindResourceHeapEXTPtr = pVkCmdBindResourceHeapEXT (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdBindResourceHeapEXTPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdBindResourceHeapEXT is null" Nothing Nothing
+  let vkCmdBindResourceHeapEXT' = mkVkCmdBindResourceHeapEXT vkCmdBindResourceHeapEXTPtr
+  pBindInfo <- ContT $ withCStruct (bindInfo)
+  lift $ traceAroundEvent "vkCmdBindResourceHeapEXT" (vkCmdBindResourceHeapEXT'
+                                                        (commandBufferHandle (commandBuffer))
+                                                        pBindInfo)
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdPushDataEXT
+  :: FunPtr (Ptr CommandBuffer_T -> Ptr (SomeStruct PushDataInfoEXT) -> IO ()) -> Ptr CommandBuffer_T -> Ptr (SomeStruct PushDataInfoEXT) -> IO ()
+
+-- | vkCmdPushDataEXT - Update the values of push data
+--
+-- = Description
+--
+-- When 'cmdPushDataEXT' is recorded, it
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptorheaps-invalidate-sets immediately invalidates all non-heap descriptor state>.
+-- Similarly, recording any non-heap descriptor state commands immediately
+-- invalidates state set by this command.
+--
+-- All push data is available to all shaders using the existing
+-- @PushConstant@ @Storage@ @Class@.
+--
+-- Device addresses in push data are intended as the fast path for
+-- shader-constant data that does not fit into push data directly. In order
+-- to maximize performance of constant data inputs, addresses should be
+-- aligned to
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-minUniformBufferOffsetAlignment minUniformBufferOffsetAlignment>,
+-- and decorated with @Alignment@ and @NonWritable@ in the shader when
+-- using physical pointers.
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdPushDataEXT-commandBuffer-parameter# @commandBuffer@
+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdPushDataEXT-pPushDataInfo-parameter# @pPushDataInfo@
+--     /must/ be a valid pointer to a valid 'PushDataInfoEXT' structure
+--
+-- -   #VUID-vkCmdPushDataEXT-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-vkCmdPushDataEXT-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', or
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
+--
+-- -   #VUID-vkCmdPushDataEXT-videocoding# This command /must/ only be
+--     called outside of a video coding scope
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | State                                                                                                                                  |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | VK_QUEUE_GRAPHICS_BIT                                                                                                 |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdPushDataEXT is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_heap VK_EXT_descriptor_heap>,
+-- 'Vulkan.Core10.Handles.CommandBuffer', 'PushDataInfoEXT'
+cmdPushDataEXT :: forall a io
+                . (Extendss PushDataInfoEXT a, PokeChain a, MonadIO io)
+               => -- | @commandBuffer@ is the command buffer in which the push data update will
+                  -- be recorded.
+                  CommandBuffer
+               -> -- | @pPushDataInfo@ is a pointer to a 'PushDataInfoEXT' structure.
+                  (PushDataInfoEXT a)
+               -> io ()
+cmdPushDataEXT commandBuffer pushDataInfo = liftIO . evalContT $ do
+  let vkCmdPushDataEXTPtr = pVkCmdPushDataEXT (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdPushDataEXTPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdPushDataEXT is null" Nothing Nothing
+  let vkCmdPushDataEXT' = mkVkCmdPushDataEXT vkCmdPushDataEXTPtr
+  pPushDataInfo <- ContT $ withCStruct (pushDataInfo)
+  lift $ traceAroundEvent "vkCmdPushDataEXT" (vkCmdPushDataEXT'
+                                                (commandBufferHandle (commandBuffer))
+                                                (forgetExtensions pPushDataInfo))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkRegisterCustomBorderColorEXT
+  :: FunPtr (Ptr Device_T -> Ptr SamplerCustomBorderColorCreateInfoEXT -> Bool32 -> Ptr Word32 -> IO Result) -> Ptr Device_T -> Ptr SamplerCustomBorderColorCreateInfoEXT -> Bool32 -> Ptr Word32 -> IO Result
+
+-- | vkRegisterCustomBorderColorEXT - Register a custom border color
+--
+-- = Description
+--
+-- If @requestIndex@ is 'Vulkan.Core10.FundamentalTypes.TRUE', the value
+-- present in @pIndex@ when passed to the command is a requested index, and
+-- rather than returning a new index, the implementation will attempt to
+-- register that index, leaving the value intact. If the implementation is
+-- unable to register a requested index,
+-- 'Vulkan.Core10.Enums.Result.ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS' will
+-- be returned. If an index has not been registered (either explicitly or
+-- implicitly by creating a sampler object), or if it has been subsequently
+-- unregistered, the implementation /must/ register that index
+-- successfully.
+--
+-- If @requestIndex@ is 'Vulkan.Core10.FundamentalTypes.FALSE', the value
+-- stored in @pIndex@ is ignored, and a new index will be returned if the
+-- implementation is able to register a new index. If the implementation is
+-- unable to register a new index,
+-- 'Vulkan.Core10.Enums.Result.ERROR_TOO_MANY_OBJECTS' will be returned.
+--
+-- If an index is successfully registered, it /can/ be used when writing a
+-- sampler descriptor or creating a sampler object to use with the custom
+-- border color, via 'SamplerCustomBorderColorIndexCreateInfoEXT'.
+--
+-- The type of border color is not specified by this command
+-- ('Vulkan.Core10.Enums.BorderColor.BORDER_COLOR_FLOAT_CUSTOM_EXT' vs.
+-- 'Vulkan.Core10.Enums.BorderColor.BORDER_COLOR_INT_CUSTOM_EXT'); the data
+-- will be interpreted at the point the border color is sampled with an
+-- actual sampler. Implementations are expected to store the data as raw
+-- bytes if they do not need the format to be specified.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkRegisterCustomBorderColorEXT-requestIndex-11287# If
+--     @requestIndex@ is 'Vulkan.Core10.FundamentalTypes.TRUE', the value
+--     stored in @pIndex@ /must/ be less than
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxCustomBorderColorSamplers maxCustomBorderColorSamplers>
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkRegisterCustomBorderColorEXT-device-parameter# @device@
+--     /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkRegisterCustomBorderColorEXT-pBorderColor-parameter#
+--     @pBorderColor@ /must/ be a valid pointer to a valid
+--     'Vulkan.Extensions.VK_EXT_custom_border_color.SamplerCustomBorderColorCreateInfoEXT'
+--     structure
+--
+-- -   #VUID-vkRegisterCustomBorderColorEXT-pIndex-parameter# @pIndex@
+--     /must/ be a valid pointer to a @uint32_t@ value
+--
+-- == Return Codes
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
+--
+--     -   'Vulkan.Core10.Enums.Result.SUCCESS'
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_TOO_MANY_OBJECTS'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_custom_border_color VK_EXT_custom_border_color>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_heap VK_EXT_descriptor_heap>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32', 'Vulkan.Core10.Handles.Device',
+-- 'Vulkan.Extensions.VK_EXT_custom_border_color.SamplerCustomBorderColorCreateInfoEXT'
+registerCustomBorderColorEXT :: forall io
+                              . (MonadIO io)
+                             => -- | @device@ is the logical device where the border color is registered.
+                                Device
+                             -> -- | @pBorderColor@ is a pointer to a
+                                -- 'Vulkan.Extensions.VK_EXT_custom_border_color.SamplerCustomBorderColorCreateInfoEXT'
+                                -- structure specifying the custom border color value to register.
+                                SamplerCustomBorderColorCreateInfoEXT
+                             -> -- | @requestIndex@ is a Boolean value indicating if a specific index is
+                                -- requested or not.
+                                ("requestIndex" ::: Bool)
+                             -> io (("index" ::: Word32))
+registerCustomBorderColorEXT device
+                               borderColor
+                               requestIndex = liftIO . evalContT $ do
+  let vkRegisterCustomBorderColorEXTPtr = pVkRegisterCustomBorderColorEXT (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkRegisterCustomBorderColorEXTPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkRegisterCustomBorderColorEXT is null" Nothing Nothing
+  let vkRegisterCustomBorderColorEXT' = mkVkRegisterCustomBorderColorEXT vkRegisterCustomBorderColorEXTPtr
+  pBorderColor <- ContT $ withCStruct (borderColor)
+  pPIndex <- ContT $ bracket (callocBytes @Word32 4) free
+  r <- lift $ traceAroundEvent "vkRegisterCustomBorderColorEXT" (vkRegisterCustomBorderColorEXT'
+                                                                   (deviceHandle (device))
+                                                                   pBorderColor
+                                                                   (boolToBool32 (requestIndex))
+                                                                   (pPIndex))
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+  pIndex <- lift $ peek @Word32 pPIndex
+  pure $ (pIndex)
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkUnregisterCustomBorderColorEXT
+  :: FunPtr (Ptr Device_T -> Word32 -> IO ()) -> Ptr Device_T -> Word32 -> IO ()
+
+-- | vkUnregisterCustomBorderColorEXT - Unregister a custom border color
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_custom_border_color VK_EXT_custom_border_color>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_heap VK_EXT_descriptor_heap>,
+-- 'Vulkan.Core10.Handles.Device'
+unregisterCustomBorderColorEXT :: forall io
+                                . (MonadIO io)
+                               => -- | @device@ is the logical device where the border color is registered.
+                                  --
+                                  -- #VUID-vkUnregisterCustomBorderColorEXT-device-parameter# @device@ /must/
+                                  -- be a valid 'Vulkan.Core10.Handles.Device' handle
+                                  Device
+                               -> -- | @index@ is the @uint32_t@ index value to unregister.
+                                  --
+                                  -- #VUID-vkUnregisterCustomBorderColorEXT-index-11288# @index@ /must/ be
+                                  -- less than
+                                  -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxCustomBorderColorSamplers maxCustomBorderColorSamplers>
+                                  ("index" ::: Word32)
+                               -> io ()
+unregisterCustomBorderColorEXT device index = liftIO $ do
+  let vkUnregisterCustomBorderColorEXTPtr = pVkUnregisterCustomBorderColorEXT (case device of Device{deviceCmds} -> deviceCmds)
+  unless (vkUnregisterCustomBorderColorEXTPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkUnregisterCustomBorderColorEXT is null" Nothing Nothing
+  let vkUnregisterCustomBorderColorEXT' = mkVkUnregisterCustomBorderColorEXT vkUnregisterCustomBorderColorEXTPtr
+  traceAroundEvent "vkUnregisterCustomBorderColorEXT" (vkUnregisterCustomBorderColorEXT'
+                                                         (deviceHandle (device))
+                                                         (index))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetImageOpaqueCaptureDataEXT
+  :: FunPtr (Ptr Device_T -> Word32 -> Ptr Image -> Ptr HostAddressRangeEXT -> IO Result) -> Ptr Device_T -> Word32 -> Ptr Image -> Ptr HostAddressRangeEXT -> IO Result
+
+-- | vkGetImageOpaqueCaptureDataEXT - Get image opaque capture descriptor
+-- data for descriptor heap replay
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkGetImageOpaqueCaptureDataEXT-descriptorHeapCaptureReplay-11282#
+--     The
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-descriptorHeapCaptureReplay descriptorHeapCaptureReplay>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkGetImageOpaqueCaptureDataEXT-size-11283# The @size@ member
+--     of each element of @pDatas@ /must/ be equal to
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-imageCaptureReplayOpaqueDataSize imageCaptureReplayOpaqueDataSize>
+--
+-- -   #VUID-vkGetImageOpaqueCaptureDataEXT-device-11284# If @device@ was
+--     created with multiple physical devices, then the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-bufferDeviceAddressMultiDevice bufferDeviceAddressMultiDevice>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkGetImageOpaqueCaptureDataEXT-pImages-11285# Each element of
+--     @pImages@ /must/ have been created with
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_DESCRIPTOR_HEAP_CAPTURE_REPLAY_BIT_EXT'
+--     set in 'Vulkan.Core10.Image.ImageCreateInfo'::@flags@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkGetImageOpaqueCaptureDataEXT-device-parameter# @device@
+--     /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkGetImageOpaqueCaptureDataEXT-pImages-parameter# @pImages@
+--     /must/ be a valid pointer to an array of @imageCount@ valid
+--     'Vulkan.Core10.Handles.Image' handles
+--
+-- -   #VUID-vkGetImageOpaqueCaptureDataEXT-pDatas-parameter# @pDatas@
+--     /must/ be a valid pointer to an array of @imageCount@
+--     'HostAddressRangeEXT' structures
+--
+-- -   #VUID-vkGetImageOpaqueCaptureDataEXT-imageCount-arraylength#
+--     @imageCount@ /must/ be greater than @0@
+--
+-- -   #VUID-vkGetImageOpaqueCaptureDataEXT-pImages-parent# Each element of
+--     @pImages@ /must/ have been created, allocated, or retrieved from
+--     @device@
+--
+-- == 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_DEVICE_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_heap VK_EXT_descriptor_heap>,
+-- 'Vulkan.Core10.Handles.Device', 'HostAddressRangeEXT',
+-- 'Vulkan.Core10.Handles.Image'
+getImageOpaqueCaptureDataEXT :: forall io
+                              . (MonadIO io)
+                             => -- | @device@ is the logical device that gets the data.
+                                Device
+                             -> -- | @pImages@ is a pointer to an array of 'Vulkan.Core10.Handles.Image'
+                                -- objects to retrieve the opaque capture data from.
+                                ("images" ::: Vector Image)
+                             -> io (("datas" ::: Vector HostAddressRangeEXT))
+getImageOpaqueCaptureDataEXT device images = liftIO . evalContT $ do
+  let vkGetImageOpaqueCaptureDataEXTPtr = pVkGetImageOpaqueCaptureDataEXT (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkGetImageOpaqueCaptureDataEXTPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetImageOpaqueCaptureDataEXT is null" Nothing Nothing
+  let vkGetImageOpaqueCaptureDataEXT' = mkVkGetImageOpaqueCaptureDataEXT vkGetImageOpaqueCaptureDataEXTPtr
+  pPImages <- ContT $ allocaBytes @Image ((Data.Vector.length (images)) * 8)
+  lift $ Data.Vector.imapM_ (\i e -> poke (pPImages `plusPtr` (8 * (i)) :: Ptr Image) (e)) (images)
+  pPDatas <- ContT $ bracket (callocBytes @HostAddressRangeEXT ((fromIntegral ((fromIntegral (Data.Vector.length $ (images)) :: Word32))) * 16)) free
+  _ <- traverse (\i -> ContT $ pokeZeroCStruct (pPDatas `advancePtrBytes` (i * 16) :: Ptr HostAddressRangeEXT) . ($ ())) [0..(fromIntegral ((fromIntegral (Data.Vector.length $ (images)) :: Word32))) - 1]
+  r <- lift $ traceAroundEvent "vkGetImageOpaqueCaptureDataEXT" (vkGetImageOpaqueCaptureDataEXT'
+                                                                   (deviceHandle (device))
+                                                                   ((fromIntegral (Data.Vector.length $ (images)) :: Word32))
+                                                                   (pPImages)
+                                                                   ((pPDatas)))
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+  pDatas <- lift $ generateM (fromIntegral ((fromIntegral (Data.Vector.length $ (images)) :: Word32))) (\i -> peekCStruct @HostAddressRangeEXT (((pPDatas) `advancePtrBytes` (16 * (i)) :: Ptr HostAddressRangeEXT)))
+  pure $ (pDatas)
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetPhysicalDeviceDescriptorSizeEXT
+  :: FunPtr (Ptr PhysicalDevice_T -> DescriptorType -> IO DeviceSize) -> Ptr PhysicalDevice_T -> DescriptorType -> IO DeviceSize
+
+-- | vkGetPhysicalDeviceDescriptorSizeEXT - Report specific descriptor sizes
+-- for each descriptor type
+--
+-- = Description
+--
+-- The return value of this function will be a
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize' indicating the size in bytes
+-- (N) of a heap descriptor with a type equal to @descriptorType@. When a
+-- descriptor of this type is written by 'writeResourceDescriptorsEXT' or
+-- 'writeSamplerDescriptorsEXT', only the first N bytes are written; the
+-- rest will not be accessed and /can/ be safely discarded when copying
+-- descriptors around. Additionally, those first N bytes are the only bytes
+-- that will be accessed when the descriptor is accessed in the shader. N
+-- will never be larger than the applicable limits in
+-- 'PhysicalDeviceDescriptorHeapTensorPropertiesARM' or
+-- 'PhysicalDeviceDescriptorHeapPropertiesEXT'.
+--
+-- Values returned by this function have other requirements, so for example
+-- may not be power-of-two values.
+--
+-- This command is not intended for general use, and is for tools that
+-- already take advantage of tighter packing with other similar features
+-- (e.g. @VK_EXT_descriptor_buffer@) to optimize accesses in some cases.
+-- Applications can safely ignore this function and are advised to do so,
+-- to avoid depending on non-portable packing.
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_heap VK_EXT_descriptor_heap>,
+-- 'Vulkan.Core10.Enums.DescriptorType.DescriptorType',
+-- 'Vulkan.Core10.Handles.PhysicalDevice'
+getPhysicalDeviceDescriptorSizeEXT :: forall io
+                                    . (MonadIO io)
+                                   => -- | @physicalDevice@ is the physical device from which to query the
+                                      -- descriptor sizes.
+                                      --
+                                      -- #VUID-vkGetPhysicalDeviceDescriptorSizeEXT-physicalDevice-parameter#
+                                      -- @physicalDevice@ /must/ be a valid
+                                      -- 'Vulkan.Core10.Handles.PhysicalDevice' handle
+                                      PhysicalDevice
+                                   -> -- | @descriptorType@ is a
+                                      -- 'Vulkan.Core10.Enums.DescriptorType.DescriptorType' specifying the type
+                                      -- of heap descriptor to query the size for.
+                                      --
+                                      -- #VUID-vkGetPhysicalDeviceDescriptorSizeEXT-descriptorType-parameter#
+                                      -- @descriptorType@ /must/ be a valid
+                                      -- 'Vulkan.Core10.Enums.DescriptorType.DescriptorType' value
+                                      DescriptorType
+                                   -> io (DeviceSize)
+getPhysicalDeviceDescriptorSizeEXT physicalDevice descriptorType = liftIO $ do
+  let vkGetPhysicalDeviceDescriptorSizeEXTPtr = pVkGetPhysicalDeviceDescriptorSizeEXT (case physicalDevice of PhysicalDevice{instanceCmds} -> instanceCmds)
+  unless (vkGetPhysicalDeviceDescriptorSizeEXTPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetPhysicalDeviceDescriptorSizeEXT is null" Nothing Nothing
+  let vkGetPhysicalDeviceDescriptorSizeEXT' = mkVkGetPhysicalDeviceDescriptorSizeEXT vkGetPhysicalDeviceDescriptorSizeEXTPtr
+  r <- traceAroundEvent "vkGetPhysicalDeviceDescriptorSizeEXT" (vkGetPhysicalDeviceDescriptorSizeEXT'
+                                                                  (physicalDeviceHandle (physicalDevice))
+                                                                  (descriptorType))
+  pure $ (r)
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetTensorOpaqueCaptureDataARM
+  :: FunPtr (Ptr Device_T -> Word32 -> Ptr TensorARM -> Ptr HostAddressRangeEXT -> IO Result) -> Ptr Device_T -> Word32 -> Ptr TensorARM -> Ptr HostAddressRangeEXT -> IO Result
+
+-- | vkGetTensorOpaqueCaptureDataARM - Get tensor opaque capture descriptor
+-- data for descriptor heap replay
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkGetTensorOpaqueCaptureDataARM-descriptorHeapCaptureReplay-11391#
+--     The
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-descriptorHeapCaptureReplay descriptorHeapCaptureReplay>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkGetTensorOpaqueCaptureDataARM-size-11392# The @size@ member
+--     of each element of @pDatas@ /must/ be equal to
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-tensorCaptureReplayOpaqueDataSize tensorCaptureReplayOpaqueDataSize>
+--
+-- -   #VUID-vkGetTensorOpaqueCaptureDataARM-device-11393# If @device@ was
+--     created with multiple physical devices, then the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-bufferDeviceAddressMultiDevice bufferDeviceAddressMultiDevice>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkGetTensorOpaqueCaptureDataARM-pTensors-11394# Each element
+--     of @pTensors@ /must/ have been created with
+--     'Vulkan.Extensions.VK_ARM_tensors.TENSOR_CREATE_DESCRIPTOR_HEAP_CAPTURE_REPLAY_BIT_ARM'
+--     set in
+--     'Vulkan.Extensions.VK_ARM_tensors.TensorCreateInfoARM'::@flags@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkGetTensorOpaqueCaptureDataARM-device-parameter# @device@
+--     /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkGetTensorOpaqueCaptureDataARM-pTensors-parameter# @pTensors@
+--     /must/ be a valid pointer to an array of @tensorCount@ valid
+--     'Vulkan.Extensions.Handles.TensorARM' handles
+--
+-- -   #VUID-vkGetTensorOpaqueCaptureDataARM-pDatas-parameter# @pDatas@
+--     /must/ be a valid pointer to an array of @tensorCount@
+--     'HostAddressRangeEXT' structures
+--
+-- -   #VUID-vkGetTensorOpaqueCaptureDataARM-tensorCount-arraylength#
+--     @tensorCount@ /must/ be greater than @0@
+--
+-- -   #VUID-vkGetTensorOpaqueCaptureDataARM-pTensors-parent# Each element
+--     of @pTensors@ /must/ have been created, allocated, or retrieved from
+--     @device@
+--
+-- == 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_DEVICE_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_tensors VK_ARM_tensors>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_heap VK_EXT_descriptor_heap>,
+-- 'Vulkan.Core10.Handles.Device', 'HostAddressRangeEXT',
+-- 'Vulkan.Extensions.Handles.TensorARM'
+getTensorOpaqueCaptureDataARM :: forall io
+                               . (MonadIO io)
+                              => -- | @device@ is the logical device that gets the data.
+                                 Device
+                              -> -- | @pTensors@ is a pointer to an array of
+                                 -- 'Vulkan.Extensions.Handles.TensorARM' objects to retrieve the opaque
+                                 -- capture data from.
+                                 ("tensors" ::: Vector TensorARM)
+                              -> io (("datas" ::: Vector HostAddressRangeEXT))
+getTensorOpaqueCaptureDataARM device tensors = liftIO . evalContT $ do
+  let vkGetTensorOpaqueCaptureDataARMPtr = pVkGetTensorOpaqueCaptureDataARM (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkGetTensorOpaqueCaptureDataARMPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetTensorOpaqueCaptureDataARM is null" Nothing Nothing
+  let vkGetTensorOpaqueCaptureDataARM' = mkVkGetTensorOpaqueCaptureDataARM vkGetTensorOpaqueCaptureDataARMPtr
+  pPTensors <- ContT $ allocaBytes @TensorARM ((Data.Vector.length (tensors)) * 8)
+  lift $ Data.Vector.imapM_ (\i e -> poke (pPTensors `plusPtr` (8 * (i)) :: Ptr TensorARM) (e)) (tensors)
+  pPDatas <- ContT $ bracket (callocBytes @HostAddressRangeEXT ((fromIntegral ((fromIntegral (Data.Vector.length $ (tensors)) :: Word32))) * 16)) free
+  _ <- traverse (\i -> ContT $ pokeZeroCStruct (pPDatas `advancePtrBytes` (i * 16) :: Ptr HostAddressRangeEXT) . ($ ())) [0..(fromIntegral ((fromIntegral (Data.Vector.length $ (tensors)) :: Word32))) - 1]
+  r <- lift $ traceAroundEvent "vkGetTensorOpaqueCaptureDataARM" (vkGetTensorOpaqueCaptureDataARM'
+                                                                    (deviceHandle (device))
+                                                                    ((fromIntegral (Data.Vector.length $ (tensors)) :: Word32))
+                                                                    (pPTensors)
+                                                                    ((pPDatas)))
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+  pDatas <- lift $ generateM (fromIntegral ((fromIntegral (Data.Vector.length $ (tensors)) :: Word32))) (\i -> peekCStruct @HostAddressRangeEXT (((pPDatas) `advancePtrBytes` (16 * (i)) :: Ptr HostAddressRangeEXT)))
+  pure $ (pDatas)
+
+
+-- | VkHostAddressRangeEXT - Structure specifying a host address range
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_heap VK_EXT_descriptor_heap>,
+-- 'getImageOpaqueCaptureDataEXT', 'getTensorOpaqueCaptureDataARM',
+-- 'writeResourceDescriptorsEXT', 'writeSamplerDescriptorsEXT'
+data HostAddressRangeEXT = HostAddressRangeEXT
+  { -- | @address@ is a host memory address.
+    --
+    -- #VUID-VkHostAddressRangeEXT-address-parameter# @address@ /must/ be a
+    -- valid pointer to an array of @size@ bytes
+    address :: Ptr ()
+  , -- | @size@ is the size of the range.
+    --
+    -- #VUID-VkHostAddressRangeEXT-size-arraylength# @size@ /must/ be greater
+    -- than @0@
+    size :: Word64
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (HostAddressRangeEXT)
+#endif
+deriving instance Show HostAddressRangeEXT
+
+instance ToCStruct HostAddressRangeEXT where
+  withCStruct x f = allocaBytes 16 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p HostAddressRangeEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr (Ptr ()))) (address)
+    poke ((p `plusPtr` 8 :: Ptr CSize)) (CSize (size))
+    f
+  cStructSize = 16
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr (Ptr ()))) (zero)
+    poke ((p `plusPtr` 8 :: Ptr CSize)) (CSize (zero))
+    f
+
+instance FromCStruct HostAddressRangeEXT where
+  peekCStruct p = do
+    address <- peek @(Ptr ()) ((p `plusPtr` 0 :: Ptr (Ptr ())))
+    size <- peek @CSize ((p `plusPtr` 8 :: Ptr CSize))
+    pure $ HostAddressRangeEXT
+             address (coerce @CSize @Word64 size)
+
+instance Storable HostAddressRangeEXT where
+  sizeOf ~_ = 16
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero HostAddressRangeEXT where
+  zero = HostAddressRangeEXT
+           zero
+           zero
+
+
+-- | VkHostAddressRangeConstEXT - Structure specifying a constant host
+-- address range
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_heap VK_EXT_descriptor_heap>,
+-- 'OpaqueCaptureDataCreateInfoEXT', 'PushDataInfoEXT'
+data HostAddressRangeConstEXT = HostAddressRangeConstEXT
+  { -- | @address@ is a read-only host memory address.
+    --
+    -- #VUID-VkHostAddressRangeConstEXT-address-parameter# @address@ /must/ be
+    -- a valid pointer to an array of @size@ bytes
+    address :: Ptr ()
+  , -- | @size@ is the size of the range.
+    --
+    -- #VUID-VkHostAddressRangeConstEXT-size-arraylength# @size@ /must/ be
+    -- greater than @0@
+    size :: Word64
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (HostAddressRangeConstEXT)
+#endif
+deriving instance Show HostAddressRangeConstEXT
+
+instance ToCStruct HostAddressRangeConstEXT where
+  withCStruct x f = allocaBytes 16 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p HostAddressRangeConstEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr (Ptr ()))) (address)
+    poke ((p `plusPtr` 8 :: Ptr CSize)) (CSize (size))
+    f
+  cStructSize = 16
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr (Ptr ()))) (zero)
+    poke ((p `plusPtr` 8 :: Ptr CSize)) (CSize (zero))
+    f
+
+instance FromCStruct HostAddressRangeConstEXT where
+  peekCStruct p = do
+    address <- peek @(Ptr ()) ((p `plusPtr` 0 :: Ptr (Ptr ())))
+    size <- peek @CSize ((p `plusPtr` 8 :: Ptr CSize))
+    pure $ HostAddressRangeConstEXT
+             address (coerce @CSize @Word64 size)
+
+instance Storable HostAddressRangeConstEXT where
+  sizeOf ~_ = 16
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero HostAddressRangeConstEXT where
+  zero = HostAddressRangeConstEXT
+           zero
+           zero
+
+
+-- | VkTexelBufferDescriptorInfoEXT - Structure describing an image
+-- descriptor created from a buffer
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_heap VK_EXT_descriptor_heap>,
+-- 'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR',
+-- 'Vulkan.Core10.Enums.Format.Format', 'ResourceDescriptorDataEXT',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data TexelBufferDescriptorInfoEXT = TexelBufferDescriptorInfoEXT
+  { -- | @format@ is the 'Vulkan.Core10.Enums.Format.Format' of the descriptor.
+    --
+    -- #VUID-VkTexelBufferDescriptorInfoEXT-format-parameter# @format@ /must/
+    -- be a valid 'Vulkan.Core10.Enums.Format.Format' value
+    format :: Format
+  , -- | @addressRange@ is a
+    -- 'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+    -- defining the range of data backing the descriptor.
+    addressRange :: DeviceAddressRangeEXT
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (TexelBufferDescriptorInfoEXT)
+#endif
+deriving instance Show TexelBufferDescriptorInfoEXT
+
+instance ToCStruct TexelBufferDescriptorInfoEXT where
+  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p TexelBufferDescriptorInfoEXT{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_TEXEL_BUFFER_DESCRIPTOR_INFO_EXT)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr Format)) (format)
+    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr DeviceAddressRangeEXT)) (addressRange) . ($ ())
+    lift $ f
+  cStructSize = 40
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_TEXEL_BUFFER_DESCRIPTOR_INFO_EXT)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr Format)) (zero)
+    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr DeviceAddressRangeEXT)) (zero) . ($ ())
+    lift $ f
+
+instance FromCStruct TexelBufferDescriptorInfoEXT where
+  peekCStruct p = do
+    format <- peek @Format ((p `plusPtr` 16 :: Ptr Format))
+    addressRange <- peekCStruct @DeviceAddressRangeEXT ((p `plusPtr` 24 :: Ptr DeviceAddressRangeEXT))
+    pure $ TexelBufferDescriptorInfoEXT
+             format addressRange
+
+instance Zero TexelBufferDescriptorInfoEXT where
+  zero = TexelBufferDescriptorInfoEXT
+           zero
+           zero
+
+
+-- | VkImageDescriptorInfoEXT - Structure describing an image descriptor
+-- created from an image
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkImageDescriptorInfoEXT-pView-11426# @pView->viewType@ /must/
+--     not be 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D_ARRAY'
+--     if @pView->image@ was created with an @imageType@ of
+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D'
+--
+-- -   #VUID-VkImageDescriptorInfoEXT-pView-11427# If @pView->viewType@ is
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D' and
+--     @pView->image@ was created with an @imageType@ of
+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', @pView->image@ /must/
+--     have been created with
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT'
+--     set
+--
+-- -   #VUID-VkImageDescriptorInfoEXT-layout-11219# @layout@ /must/ be
+--     '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_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_READ_ONLY_OPTIMAL',
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL',
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_READ_ONLY_OPTIMAL',
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR',
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.IMAGE_LAYOUT_RENDERING_LOCAL_READ_KHR',
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT',
+--     or 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL'
+--
+-- -   #VUID-VkImageDescriptorInfoEXT-layout-11221# If @layout@ 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_READ_ONLY_OPTIMAL',
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL',
+--     or
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL',
+--     then @pView->aspectMask@ /must/ not include
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'
+--
+-- -   #VUID-VkImageDescriptorInfoEXT-pView-11430# If @pView->image@ is a
+--     depth\/stencil image, @pView->subresourceRange.aspectMask@ /must/
+--     include either
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' or
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
+--     but not both
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkImageDescriptorInfoEXT-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_DESCRIPTOR_INFO_EXT'
+--
+-- -   #VUID-VkImageDescriptorInfoEXT-pNext-pNext# @pNext@ /must/ be @NULL@
+--
+-- -   #VUID-VkImageDescriptorInfoEXT-pView-parameter# @pView@ /must/ be a
+--     valid pointer to a valid
+--     'Vulkan.Core10.ImageView.ImageViewCreateInfo' structure
+--
+-- -   #VUID-VkImageDescriptorInfoEXT-layout-parameter# @layout@ /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_descriptor_heap VK_EXT_descriptor_heap>,
+-- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout',
+-- 'Vulkan.Core10.ImageView.ImageViewCreateInfo',
+-- 'ResourceDescriptorDataEXT',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data ImageDescriptorInfoEXT = ImageDescriptorInfoEXT
+  { -- | @pView@ is an 'Vulkan.Core10.ImageView.ImageViewCreateInfo' describing
+    -- the descriptor.
+    view :: SomeStruct ImageViewCreateInfo
+  , -- | @layout@ is the 'Vulkan.Core10.Enums.ImageLayout.ImageLayout' that the
+    -- image view will be in when accessed as a descriptor.
+    layout :: ImageLayout
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (ImageDescriptorInfoEXT)
+#endif
+deriving instance Show ImageDescriptorInfoEXT
+
+instance ToCStruct ImageDescriptorInfoEXT where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p ImageDescriptorInfoEXT{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_DESCRIPTOR_INFO_EXT)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    pView'' <- ContT @_ @_ @(Ptr (ImageViewCreateInfo '[])) $ \cont -> withSomeCStruct @ImageViewCreateInfo (view) (cont . castPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr (Ptr (ImageViewCreateInfo _)))) pView''
+    lift $ poke ((p `plusPtr` 24 :: Ptr ImageLayout)) (layout)
+    lift $ f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_DESCRIPTOR_INFO_EXT)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    pView'' <- ContT @_ @_ @(Ptr (ImageViewCreateInfo '[])) $ \cont -> withSomeCStruct @ImageViewCreateInfo ((SomeStruct zero)) (cont . castPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr (Ptr (ImageViewCreateInfo _)))) pView''
+    lift $ poke ((p `plusPtr` 24 :: Ptr ImageLayout)) (zero)
+    lift $ f
+
+instance FromCStruct ImageDescriptorInfoEXT where
+  peekCStruct p = do
+    pView <- peekSomeCStruct . forgetExtensions =<< peek ((p `plusPtr` 16 :: Ptr (Ptr (ImageViewCreateInfo _))))
+    layout <- peek @ImageLayout ((p `plusPtr` 24 :: Ptr ImageLayout))
+    pure $ ImageDescriptorInfoEXT
+             pView layout
+
+instance Zero ImageDescriptorInfoEXT where
+  zero = ImageDescriptorInfoEXT
+           (SomeStruct zero)
+           zero
+
+
+-- | VkResourceDescriptorInfoEXT - Structure describing a resource descriptor
+--
+-- = Description
+--
+-- If @type@ is
+-- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER'
+-- or
+-- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER',
+-- @data->pTexelBuffer@ is used to construct the descriptor.
+--
+-- If @type@ is
+-- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR',
+-- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkDescriptorType VK_DESCRIPTOR_TYPE_PARTITIONED_ACCELERATION_STRUCTURE_NV>,
+-- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER', or
+-- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER',
+-- @data->pAddressRange@ is used to construct the descriptor. For
+-- acceleration structures, the size of the range is not used by the
+-- descriptor, and /can/ be set to 0. If a non-zero size is provided
+-- though, it /must/ be a valid range.
+--
+-- Applications may wish to provide a valid range as a way to check their
+-- own assumptions about the range they are binding; but it has no bearing
+-- on anything except validation. Implementations cannot make any
+-- assumptions based on the size of the provided range.
+--
+-- If @type@ is
+-- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',
+-- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM',
+-- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM',
+-- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE', or
+-- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT',
+-- @data->pImage@ is used to construct the descriptor. If @type@ is
+-- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM',
+-- @data->pTensorARM@ is used to construct the descriptor.
+--
+-- If the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-nullDescriptor nullDescriptor>
+-- feature is enabled, the corresponding element of @data@ /may/ be @NULL@
+-- to generate a null descriptor.
+--
+-- Applications /can/ give resource descriptors a debug name in a similar
+-- way to naming an object, via the
+-- 'Vulkan.Extensions.VK_EXT_debug_utils.DebugUtilsObjectNameInfoEXT'
+-- structure. However, as there is no actual object, this structure /must/
+-- be passed via the @pNext@ chain of this structure, with a @objectType@
+-- of 'Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_UNKNOWN' and a
+-- @objectHandle@ of 'Vulkan.Core10.APIConstants.NULL_HANDLE'. The name is
+-- attached to the unique set of descriptor bits written by the
+-- implementation, and writing the same bits again with new debug info
+-- /may/ rename the original descriptor.
+--
+-- Implementations are not prevented from returning the same bits for
+-- different descriptors. This can result in multiple different resources
+-- mapping to the same name. A common case for this might be something like
+-- a uniform buffer and storage buffer with the same device address range.
+--
+-- If a descriptor becomes invalid due to the underlying resource becoming
+-- invalid, implementations /may/ remove the name association.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkResourceDescriptorInfoEXT-type-11210# @type@ /must/ be one
+--     of
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV',
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkDescriptorType VK_DESCRIPTOR_TYPE_PARTITIONED_ACCELERATION_STRUCTURE_NV>,
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM', or
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'
+--
+-- -   #VUID-VkResourceDescriptorInfoEXT-None-11211# If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-nullDescriptor nullDescriptor>
+--     feature is not enabled, and @type@ is
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE'
+--     or
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',
+--     @data->pImage@ /must/ not be @NULL@
+--
+-- -   #VUID-VkResourceDescriptorInfoEXT-type-11469# If @type@ is
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM',
+--     or
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT',
+--     @data->pImage@ /must/ not be @NULL@
+--
+-- -   #VUID-VkResourceDescriptorInfoEXT-None-11212# If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-nullDescriptor nullDescriptor>
+--     feature is not enabled, and @type@ is
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER'
+--     or
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER',
+--     @data->pTexelBuffer@ /must/ not be @NULL@
+--
+-- -   #VUID-VkResourceDescriptorInfoEXT-None-11213# If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-nullDescriptor nullDescriptor>
+--     feature is not enabled, and @type@ is
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV',
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkDescriptorType VK_DESCRIPTOR_TYPE_PARTITIONED_ACCELERATION_STRUCTURE_NV>,
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER',
+--     or
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER',
+--     @data->pAddressRange@ /must/ not be @NULL@
+--
+-- -   #VUID-VkResourceDescriptorInfoEXT-None-11457# If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-nullDescriptor nullDescriptor>
+--     feature is not enabled, and @type@ is
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM',
+--     @data->pTensorARM@ /must/ not be @NULL@
+--
+-- -   #VUID-VkResourceDescriptorInfoEXT-type-12349# If @type@ is
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER'
+--     or
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER',
+--     @data->pTexelBuffer->addressRange.address@ /must/ be a multiple of
+--     the effective alignment requirement of @data->pTexelBuffer->format@
+--     as determined by
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-minTexelBufferOffsetAlignment minTexelBufferOffsetAlignment>
+--
+-- -   #VUID-VkResourceDescriptorInfoEXT-type-12350# If @type@ is
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER',
+--     @data->pAddressRange->address@ /must/ be a multiple of
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-minUniformBufferOffsetAlignment minUniformBufferOffsetAlignment>
+--
+-- -   #VUID-VkResourceDescriptorInfoEXT-type-12351# If @type@ is
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER',
+--     @data->pAddressRange->address@ /must/ be a multiple of
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-minStorageBufferOffsetAlignment minStorageBufferOffsetAlignment>
+--
+-- -   #VUID-VkResourceDescriptorInfoEXT-type-11454# If @type@ is one of
+--
+--     -   'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--
+--     -   'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV'
+--
+--     -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkDescriptorType VK_DESCRIPTOR_TYPE_PARTITIONED_ACCELERATION_STRUCTURE_NV>
+--
+--         @data->pAddressRange->address@ /must/ be a multiple of 256
+--
+-- -   #VUID-VkResourceDescriptorInfoEXT-pNext-11401# If there is a
+--     'Vulkan.Extensions.VK_EXT_debug_utils.DebugUtilsObjectNameInfoEXT'
+--     structure in the @pNext@ chain, its @objectType@ /must/ be
+--     'Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_UNKNOWN'
+--
+-- -   #VUID-VkResourceDescriptorInfoEXT-type-11422# If @type@ is
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM',
+--     or
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT',
+--     @data.pImage->pView->image@ /must/ not have been created with an
+--     @imageType@ of 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D'
+--
+-- -   #VUID-VkResourceDescriptorInfoEXT-type-11424# If @type@ is
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',
+--     @data.pImage->pView->viewType@ is
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D', and the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-image2DViewOf3D image2DViewOf3D>
+--     feature is not enabled, @data.pImage->pView->image@ /must/ not have
+--     been created with an @imageType@ of
+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D'
+--
+-- -   #VUID-VkResourceDescriptorInfoEXT-type-11425# If @type@ is
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',
+--     @data.pImage->pView->viewType@ is
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D', and the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-sampler2DViewOf3D sampler2DViewOf3D>
+--     feature is not enabled, @data.pImage->pView->image@ /must/ not have
+--     been created with an @imageType@ of
+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D'
+--
+-- -   #VUID-VkResourceDescriptorInfoEXT-type-11433# If @type@ is
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER'
+--     or
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER',
+--     @data.pAddressRange->size@ /must/ not be 0
+--
+-- -   #VUID-VkResourceDescriptorInfoEXT-type-11458# If @type@ is
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE'
+--     and @data.pImage@ is not @NULL@, @data.pImage->pView->image@ /must/
+--     have been created with the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT'
+--     usage flag set
+--
+-- -   #VUID-VkResourceDescriptorInfoEXT-type-11459# If @type@ is
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE'
+--     and @data.pImage@ is not @NULL@, @data.pImage->pView->image@ /must/
+--     have been created with the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_STORAGE_BIT'
+--     usage flag set
+--
+-- -   #VUID-VkResourceDescriptorInfoEXT-type-11460# If @type@ is
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'
+--     and @data.pImage@ is not @NULL@, @data.pImage->pView->image@ /must/
+--     have been created with the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT'
+--     usage flag set
+--
+-- -   #VUID-VkResourceDescriptorInfoEXT-type-11461# If @type@ is
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER'
+--     and @data.pAddressRange@ is not @NULL@, @data.pAddressRange@ /must/
+--     be a device address range allocated to the application from a buffer
+--     created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-VkResourceDescriptorInfoEXT-type-11462# If @type@ is
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER'
+--     and @data.pAddressRange@ is not @NULL@, @data.pAddressRange@ /must/
+--     be a device address range allocated to the application from a buffer
+--     created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_STORAGE_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-VkResourceDescriptorInfoEXT-type-11463# If @type@ is
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER'
+--     and @data.pTexelBuffer@ is not @NULL@,
+--     @data.pTexelBuffer->addressRange@ /must/ be a device address range
+--     allocated to the application from a buffer created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-VkResourceDescriptorInfoEXT-type-11464# If @type@ is
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'
+--     and @data.pTexelBuffer@ is not @NULL@,
+--     @data.pTexelBuffer->addressRange@ /must/ be a device address range
+--     allocated to the application from a buffer created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-VkResourceDescriptorInfoEXT-type-11483# If @type@ is
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkDescriptorType VK_DESCRIPTOR_TYPE_PARTITIONED_ACCELERATION_STRUCTURE_NV>
+--     or
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR',
+--     and @data.pAddressRange@ is not @NULL@,
+--     @data.pAddressRange->address@ /must/ be an acceleration structure
+--     address retrieved from a
+--     'Vulkan.Extensions.Handles.AccelerationStructureKHR' object via
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.getAccelerationStructureDeviceAddressKHR'
+--
+-- -   #VUID-VkResourceDescriptorInfoEXT-type-11484# If @type@ is
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkDescriptorType VK_DESCRIPTOR_TYPE_PARTITIONED_ACCELERATION_STRUCTURE_NV>
+--     or
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR',
+--     @data.pAddressRange@ is not @NULL@, and @data.pAddressRange->size@
+--     is not 0, @data.pAddressRange@ /must/ be a device address range
+--     allocated to the application from the buffer used to create the
+--     acceleration structure that @data.pAddressRange->address@ was
+--     retrieved from, and within the buffer range bound to that
+--     acceleration structure
+--
+-- -   #VUID-VkResourceDescriptorInfoEXT-type-11467# If @type@ is
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV'
+--     and @data.pAddressRange@ is not @NULL@,
+--     @data.pAddressRange->address@ /must/ be an acceleration structure
+--     handle retrieved from a
+--     'Vulkan.Extensions.Handles.AccelerationStructureNV' object via
+--     'Vulkan.Extensions.VK_NV_ray_tracing.getAccelerationStructureHandleNV'
+--
+-- -   #VUID-VkResourceDescriptorInfoEXT-type-11468# If @type@ is
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV'
+--     and @data.pAddressRange@ is not @NULL@, @data.pAddressRange->size@
+--     /must/ be 0
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkResourceDescriptorInfoEXT-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RESOURCE_DESCRIPTOR_INFO_EXT'
+--
+-- -   #VUID-VkResourceDescriptorInfoEXT-pNext-pNext# @pNext@ /must/ be
+--     @NULL@ or a pointer to a valid instance of
+--     'Vulkan.Extensions.VK_EXT_debug_utils.DebugUtilsObjectNameInfoEXT'
+--
+-- -   #VUID-VkResourceDescriptorInfoEXT-sType-unique# The @sType@ value of
+--     each structure in the @pNext@ chain /must/ be unique
+--
+-- -   #VUID-VkResourceDescriptorInfoEXT-type-parameter# @type@ /must/ be a
+--     valid 'Vulkan.Core10.Enums.DescriptorType.DescriptorType' value
+--
+-- -   #VUID-VkResourceDescriptorInfoEXT-pImage-parameter# If @type@ is
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM',
+--     or
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM',
+--     and if @pImage@ is not @NULL@, the @pImage@ member of @data@ /must/
+--     be a valid pointer to a valid 'ImageDescriptorInfoEXT' structure
+--
+-- -   #VUID-VkResourceDescriptorInfoEXT-pTexelBuffer-parameter# If @type@
+--     is
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER'
+--     or
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER',
+--     and if @pTexelBuffer@ is not @NULL@, the @pTexelBuffer@ member of
+--     @data@ /must/ be a valid pointer to a valid
+--     'TexelBufferDescriptorInfoEXT' structure
+--
+-- -   #VUID-VkResourceDescriptorInfoEXT-pAddressRange-parameter# If @type@
+--     is
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER',
+--     or
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER',
+--     and if @pAddressRange@ is not @NULL@, the @pAddressRange@ member of
+--     @data@ /must/ be a valid pointer to a valid 'DeviceAddressRangeEXT'
+--     structure
+--
+-- -   #VUID-VkResourceDescriptorInfoEXT-pTensorARM-parameter# If @type@ is
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM', and
+--     if @pTensorARM@ is not @NULL@, the @pTensorARM@ member of @data@
+--     /must/ be a valid pointer to a valid
+--     'Vulkan.Extensions.VK_ARM_tensors.TensorViewCreateInfoARM' structure
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_heap VK_EXT_descriptor_heap>,
+-- 'Vulkan.Core10.Enums.DescriptorType.DescriptorType',
+-- 'ResourceDescriptorDataEXT',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'writeResourceDescriptorsEXT'
+data ResourceDescriptorInfoEXT (es :: [Type]) = ResourceDescriptorInfoEXT
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
+    next :: Chain es
+  , -- | @type@ is the type of descriptor to get.
+    type' :: DescriptorType
+  , -- | @data@ is a 'ResourceDescriptorDataEXT' union defining the properties of
+    -- a resource descriptor according to @type@
+    data' :: ResourceDescriptorDataEXT
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (ResourceDescriptorInfoEXT (es :: [Type]))
+#endif
+deriving instance Show (Chain es) => Show (ResourceDescriptorInfoEXT es)
+
+instance Extensible ResourceDescriptorInfoEXT where
+  extensibleTypeName = "ResourceDescriptorInfoEXT"
+  setNext ResourceDescriptorInfoEXT{..} next' = ResourceDescriptorInfoEXT{next = next', ..}
+  getNext ResourceDescriptorInfoEXT{..} = next
+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends ResourceDescriptorInfoEXT e => b) -> Maybe b
+  extends _ f
+    | Just Refl <- eqT @e @DebugUtilsObjectNameInfoEXT = Just f
+    | otherwise = Nothing
+
+instance ( Extendss ResourceDescriptorInfoEXT es
+         , PokeChain es ) => ToCStruct (ResourceDescriptorInfoEXT es) where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p ResourceDescriptorInfoEXT{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RESOURCE_DESCRIPTOR_INFO_EXT)
+    pNext'' <- fmap castPtr . ContT $ withChain (next)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
+    lift $ poke ((p `plusPtr` 16 :: Ptr DescriptorType)) (type')
+    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr ResourceDescriptorDataEXT)) (data') . ($ ())
+    lift $ f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RESOURCE_DESCRIPTOR_INFO_EXT)
+    pNext' <- fmap castPtr . ContT $ withZeroChain @es
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
+    lift $ poke ((p `plusPtr` 16 :: Ptr DescriptorType)) (zero)
+    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr ResourceDescriptorDataEXT)) (zero) . ($ ())
+    lift $ f
+
+instance es ~ '[] => Zero (ResourceDescriptorInfoEXT es) where
+  zero = ResourceDescriptorInfoEXT
+           ()
+           zero
+           zero
+
+
+-- | VkBindHeapInfoEXT - Structure describing a device address range and
+-- implementation reservation for a descriptor heap
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_heap VK_EXT_descriptor_heap>,
+-- 'CommandBufferInheritanceDescriptorHeapInfoEXT',
+-- 'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'cmdBindResourceHeapEXT', 'cmdBindSamplerHeapEXT'
+data BindHeapInfoEXT = BindHeapInfoEXT
+  { -- | @heapRange@ is a
+    -- 'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+    -- defining the device address range used for the heap, inclusive of the
+    -- implementation reserved range.
+    heapRange :: DeviceAddressRangeEXT
+  , -- | @reservedRangeOffset@ is the offset within @heapRange@ to the start of
+    -- the reserved range for the implementation.
+    reservedRangeOffset :: DeviceSize
+  , -- | @reservedRangeSize@ is the size of the reserved range for the
+    -- implementation within @heapRange@.
+    reservedRangeSize :: DeviceSize
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (BindHeapInfoEXT)
+#endif
+deriving instance Show BindHeapInfoEXT
+
+instance ToCStruct BindHeapInfoEXT where
+  withCStruct x f = allocaBytes 48 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p BindHeapInfoEXT{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BIND_HEAP_INFO_EXT)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr DeviceAddressRangeEXT)) (heapRange) . ($ ())
+    lift $ poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (reservedRangeOffset)
+    lift $ poke ((p `plusPtr` 40 :: Ptr DeviceSize)) (reservedRangeSize)
+    lift $ f
+  cStructSize = 48
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BIND_HEAP_INFO_EXT)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr DeviceAddressRangeEXT)) (zero) . ($ ())
+    lift $ poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (zero)
+    lift $ poke ((p `plusPtr` 40 :: Ptr DeviceSize)) (zero)
+    lift $ f
+
+instance FromCStruct BindHeapInfoEXT where
+  peekCStruct p = do
+    heapRange <- peekCStruct @DeviceAddressRangeEXT ((p `plusPtr` 16 :: Ptr DeviceAddressRangeEXT))
+    reservedRangeOffset <- peek @DeviceSize ((p `plusPtr` 32 :: Ptr DeviceSize))
+    reservedRangeSize <- peek @DeviceSize ((p `plusPtr` 40 :: Ptr DeviceSize))
+    pure $ BindHeapInfoEXT
+             heapRange reservedRangeOffset reservedRangeSize
+
+instance Zero BindHeapInfoEXT where
+  zero = BindHeapInfoEXT
+           zero
+           zero
+           zero
+
+
+-- | VkPushDataInfoEXT - Structure specifying a push data update operation
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkPushDataInfoEXT-offset-11243# The sum of @offset@ and
+--     @data.size@ /must/ be less than or equal to
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxPushDataSize maxPushDataSize>
+--
+-- -   #VUID-VkPushDataInfoEXT-offset-11418# @offset@ /must/ be a multiple
+--     of 4
+--
+-- -   #VUID-VkPushDataInfoEXT-data-11419# @data.size@ /must/ be a multiple
+--     of 4
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkPushDataInfoEXT-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PUSH_DATA_INFO_EXT'
+--
+-- -   #VUID-VkPushDataInfoEXT-pNext-pNext# @pNext@ /must/ be @NULL@ or a
+--     pointer to a valid instance of
+--     'Vulkan.Extensions.VK_NV_push_constant_bank.PushConstantBankInfoNV'
+--
+-- -   #VUID-VkPushDataInfoEXT-sType-unique# The @sType@ value of each
+--     structure in the @pNext@ chain /must/ be unique
+--
+-- -   #VUID-VkPushDataInfoEXT-data-parameter# @data@ /must/ be a valid
+--     'HostAddressRangeConstEXT' structure
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_heap VK_EXT_descriptor_heap>,
+-- 'HostAddressRangeConstEXT',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType', 'cmdPushDataEXT'
+data PushDataInfoEXT (es :: [Type]) = PushDataInfoEXT
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
+    next :: Chain es
+  , -- | @offset@ is the start offset of the push data range to update, in units
+    -- of bytes.
+    offset :: Word32
+  , -- | @data@ is the host address range containing the push data to update.
+    data' :: HostAddressRangeConstEXT
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PushDataInfoEXT (es :: [Type]))
+#endif
+deriving instance Show (Chain es) => Show (PushDataInfoEXT es)
+
+instance Extensible PushDataInfoEXT where
+  extensibleTypeName = "PushDataInfoEXT"
+  setNext PushDataInfoEXT{..} next' = PushDataInfoEXT{next = next', ..}
+  getNext PushDataInfoEXT{..} = next
+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends PushDataInfoEXT e => b) -> Maybe b
+  extends _ f
+    | Just Refl <- eqT @e @PushConstantBankInfoNV = Just f
+    | otherwise = Nothing
+
+instance ( Extendss PushDataInfoEXT es
+         , PokeChain es ) => ToCStruct (PushDataInfoEXT es) where
+  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PushDataInfoEXT{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PUSH_DATA_INFO_EXT)
+    pNext'' <- fmap castPtr . ContT $ withChain (next)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
+    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) (offset)
+    lift $ poke ((p `plusPtr` 24 :: Ptr HostAddressRangeConstEXT)) (data')
+    lift $ f
+  cStructSize = 40
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PUSH_DATA_INFO_EXT)
+    pNext' <- fmap castPtr . ContT $ withZeroChain @es
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
+    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
+    lift $ poke ((p `plusPtr` 24 :: Ptr HostAddressRangeConstEXT)) (zero)
+    lift $ f
+
+instance ( Extendss PushDataInfoEXT es
+         , PeekChain es ) => FromCStruct (PushDataInfoEXT es) where
+  peekCStruct p = do
+    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
+    next <- peekChain (castPtr pNext)
+    offset <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    data' <- peekCStruct @HostAddressRangeConstEXT ((p `plusPtr` 24 :: Ptr HostAddressRangeConstEXT))
+    pure $ PushDataInfoEXT
+             next offset data'
+
+instance es ~ '[] => Zero (PushDataInfoEXT es) where
+  zero = PushDataInfoEXT
+           ()
+           zero
+           zero
+
+
+-- | VkDescriptorMappingSourceConstantOffsetEXT - Structure specifying
+-- mapping resources to a constant heap index
+--
+-- = Description
+--
+-- Resources using this mapping will be backed by a descriptor in the heap,
+-- at an offset calculated as
+--
+-- -   shaderIndex = (Binding - @firstBinding@) + arrayIndex
+--
+-- -   offset = heapOffset + (shaderIndex * heapArrayStride)
+--
+-- where Binding is the binding value in the shader, arrayIndex is the
+-- index into the array if the shader binding is declared as an array.
+--
+-- If the mapped resource is a @OpTypeSampledImage@, offset is instead
+-- calculated for the sampler as
+--
+-- -   offset = samplerHeapOffset + (shaderIndex * samplerHeapArrayStride)
+--
+-- If the mapped resource is a @OpTypeSampler@ or @OpTypeSampledImage@, and
+-- @pEmbeddedSampler@ is not @NULL@, the specified embedded sampler will be
+-- used rather than accessing the sampler heap.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkDescriptorMappingSourceConstantOffsetEXT-pEmbeddedSampler-11445#
+--     If @pEmbeddedSampler@ is a valid pointer to a
+--     'Vulkan.Core10.Sampler.SamplerCreateInfo', its @borderColor@ /must/
+--     not be
+--     'Vulkan.Core10.Enums.BorderColor.BORDER_COLOR_FLOAT_CUSTOM_EXT' or
+--     'Vulkan.Core10.Enums.BorderColor.BORDER_COLOR_INT_CUSTOM_EXT'
+--
+-- -   #VUID-VkDescriptorMappingSourceConstantOffsetEXT-pEmbeddedSampler-11415#
+--     If @pEmbeddedSampler@ is a valid pointer to a
+--     'Vulkan.Core10.Sampler.SamplerCreateInfo', and there is a
+--     'Vulkan.Extensions.VK_EXT_debug_utils.DebugUtilsObjectNameInfoEXT'
+--     structure in its @pNext@ chain, its @objectType@ /must/ be
+--     'Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_UNKNOWN'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkDescriptorMappingSourceConstantOffsetEXT-pEmbeddedSampler-parameter#
+--     If @pEmbeddedSampler@ is not @NULL@, @pEmbeddedSampler@ /must/ be a
+--     valid pointer to a valid 'Vulkan.Core10.Sampler.SamplerCreateInfo'
+--     structure
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_heap VK_EXT_descriptor_heap>,
+-- 'DescriptorMappingSourceDataEXT',
+-- 'Vulkan.Core10.Sampler.SamplerCreateInfo'
+data DescriptorMappingSourceConstantOffsetEXT = DescriptorMappingSourceConstantOffsetEXT
+  { -- | @heapOffset@ is a constant byte offset added to the heap address for the
+    -- mapped resource or sampler.
+    heapOffset :: Word32
+  , -- | @heapArrayStride@ is a constant byte stride that multiplies the shader
+    -- binding and array index.
+    heapArrayStride :: Word32
+  , -- | @pEmbeddedSampler@ is an optional
+    -- 'Vulkan.Core10.Sampler.SamplerCreateInfo' structure specifying a sampler
+    -- to embed into the shader, in place of looking the sampler up in a heap.
+    embeddedSampler :: Maybe (SomeStruct SamplerCreateInfo)
+  , -- | @samplerHeapOffset@ is used only when mapping a combined image sampler,
+    -- used in place of @heapOffset@ to retrieve the sampler.
+    samplerHeapOffset :: Word32
+  , -- | @samplerHeapArrayStride@ is used only when mapping a combined image
+    -- sampler, used in place of @heapArrayStride@ to retrieve the sampler.
+    samplerHeapArrayStride :: Word32
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (DescriptorMappingSourceConstantOffsetEXT)
+#endif
+deriving instance Show DescriptorMappingSourceConstantOffsetEXT
+
+instance ToCStruct DescriptorMappingSourceConstantOffsetEXT where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p DescriptorMappingSourceConstantOffsetEXT{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr Word32)) (heapOffset)
+    lift $ poke ((p `plusPtr` 4 :: Ptr Word32)) (heapArrayStride)
+    pEmbeddedSampler'' <- case (embeddedSampler) of
+      Nothing -> pure nullPtr
+      Just j -> ContT @_ @_ @(Ptr (SamplerCreateInfo '[])) $ \cont -> withSomeCStruct @SamplerCreateInfo (j) (cont . castPtr)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr (SamplerCreateInfo _)))) pEmbeddedSampler''
+    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) (samplerHeapOffset)
+    lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) (samplerHeapArrayStride)
+    lift $ f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct DescriptorMappingSourceConstantOffsetEXT where
+  peekCStruct p = do
+    heapOffset <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))
+    heapArrayStride <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))
+    pEmbeddedSampler <- peek @(Ptr (SamplerCreateInfo _)) ((p `plusPtr` 8 :: Ptr (Ptr (SamplerCreateInfo _))))
+    pEmbeddedSampler' <- maybePeek (\j -> peekSomeCStruct (forgetExtensions (j))) pEmbeddedSampler
+    samplerHeapOffset <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    samplerHeapArrayStride <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
+    pure $ DescriptorMappingSourceConstantOffsetEXT
+             heapOffset
+             heapArrayStride
+             pEmbeddedSampler'
+             samplerHeapOffset
+             samplerHeapArrayStride
+
+instance Zero DescriptorMappingSourceConstantOffsetEXT where
+  zero = DescriptorMappingSourceConstantOffsetEXT
+           zero
+           zero
+           Nothing
+           zero
+           zero
+
+
+-- | VkDescriptorMappingSourcePushIndexEXT - Structure specifying mapping
+-- resources to a heap index in push data
+--
+-- = Description
+--
+-- Resources using this mapping will be backed by a descriptor in the heap,
+-- at an offset calculated as
+--
+-- -   pushIndex = ((uint32_t*)pPushData)[pushOffset\/4]
+--
+-- -   shaderIndex = (Binding - firstBinding) + arrayIndex
+--
+-- -   offset = heapOffset + (pushIndex × heapIndexStride) + (shaderIndex ×
+--     heapArrayStride)
+--
+-- where Binding is the binding value in the shader, arrayIndex is the
+-- index into the array if the shader binding is declared as an array, and
+-- pPushData is the total set of push data specified by 'cmdPushDataEXT'.
+--
+-- If the mapped resource is a @OpTypeSampledImage@, offset is instead
+-- calculated for the sampler as
+--
+-- -   samplerPushIndex = ((uint32_t*)pPushData)[samplerPushOffset\/4]
+--
+-- -   offset = samplerHeapOffset + (samplerPushIndex ×
+--     samplerHeapIndexStride) + (shaderIndex × samplerHeapArrayStride)
+--
+-- If @useCombinedImageSamplerIndex@ is
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', and the mapped resource is a
+-- @OpTypeSampledImage@, pushIndex and samplerPushIndex in the above
+-- equations are instead calculated as
+--
+-- -   pushIndex = ((uint32_t*)pPushData)[pushOffset\/4] & 0xFFFFF
+--
+-- -   samplerPushIndex = (((uint32_t*)pPushData)[pushOffset\/4] >> 20) &
+--     0xFFF
+--
+-- If the mapped resource is a @OpTypeSampler@ or @OpTypeSampledImage@, and
+-- @pEmbeddedSampler@ is not @NULL@, the specified embedded sampler will be
+-- used rather than accessing the sampler heap.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkDescriptorMappingSourcePushIndexEXT-pushOffset-11258#
+--     @pushOffset@ /must/ be a multiple of 4
+--
+-- -   #VUID-VkDescriptorMappingSourcePushIndexEXT-pushOffset-11259#
+--     @pushOffset@ /must/ be less than or equal to @maxPushDataSize@ - 4
+--
+-- -   #VUID-VkDescriptorMappingSourcePushIndexEXT-pEmbeddedSampler-11446#
+--     If @pEmbeddedSampler@ is a valid pointer to a
+--     'Vulkan.Core10.Sampler.SamplerCreateInfo', its @borderColor@ /must/
+--     not be
+--     'Vulkan.Core10.Enums.BorderColor.BORDER_COLOR_FLOAT_CUSTOM_EXT' or
+--     'Vulkan.Core10.Enums.BorderColor.BORDER_COLOR_INT_CUSTOM_EXT'
+--
+-- -   #VUID-VkDescriptorMappingSourcePushIndexEXT-pEmbeddedSampler-11402#
+--     If @pEmbeddedSampler@ is a valid pointer to a
+--     'Vulkan.Core10.Sampler.SamplerCreateInfo', and there is a
+--     'Vulkan.Extensions.VK_EXT_debug_utils.DebugUtilsObjectNameInfoEXT'
+--     structure in its @pNext@ chain, its @objectType@ /must/ be
+--     'Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_UNKNOWN'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkDescriptorMappingSourcePushIndexEXT-pEmbeddedSampler-parameter#
+--     If @pEmbeddedSampler@ is not @NULL@, @pEmbeddedSampler@ /must/ be a
+--     valid pointer to a valid 'Vulkan.Core10.Sampler.SamplerCreateInfo'
+--     structure
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_heap VK_EXT_descriptor_heap>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'DescriptorMappingSourceDataEXT',
+-- 'Vulkan.Core10.Sampler.SamplerCreateInfo'
+data DescriptorMappingSourcePushIndexEXT = DescriptorMappingSourcePushIndexEXT
+  { -- | @heapOffset@ is a constant byte offset added to the heap address for the
+    -- mapped resource or sampler.
+    heapOffset :: Word32
+  , -- | @pushOffset@ is an index into push data where an index into the heap for
+    -- the mapped resource will be retrieved.
+    pushOffset :: Word32
+  , -- | @heapIndexStride@ is a constant byte stride that multiplies the index in
+    -- push data.
+    heapIndexStride :: Word32
+  , -- | @heapArrayStride@ is a constant byte stride that multiplies the shader
+    -- binding and array index.
+    heapArrayStride :: Word32
+  , -- | @pEmbeddedSampler@ is an optional
+    -- 'Vulkan.Core10.Sampler.SamplerCreateInfo' structure specifying a sampler
+    -- to embed into the shader, in place of looking the sampler up in a heap.
+    embeddedSampler :: Maybe (SomeStruct SamplerCreateInfo)
+  , -- | @useCombinedImageSamplerIndex@ specifies whether the generated index
+    -- value will be decoded as two packed indices if the mapped resource is an
+    -- @OpTypeSampledImage@.
+    useCombinedImageSamplerIndex :: Bool
+  , -- | @samplerHeapOffset@ is used only when mapping a combined image sampler,
+    -- used in place of @heapOffset@ to retrieve the sampler.
+    samplerHeapOffset :: Word32
+  , -- | @samplerPushOffset@ is used only when mapping a combined image sampler,
+    -- used in place of @pushOffset@ to retrieve the sampler.
+    samplerPushOffset :: Word32
+  , -- | @samplerHeapIndexStride@ is used only when mapping a combined image
+    -- sampler, used in place of @heapIndexStride@ to retrieve the sampler.
+    samplerHeapIndexStride :: Word32
+  , -- | @samplerHeapArrayStride@ is used only when mapping a combined image
+    -- sampler, used in place of @heapArrayStride@ to retrieve the sampler.
+    samplerHeapArrayStride :: Word32
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (DescriptorMappingSourcePushIndexEXT)
+#endif
+deriving instance Show DescriptorMappingSourcePushIndexEXT
+
+instance ToCStruct DescriptorMappingSourcePushIndexEXT where
+  withCStruct x f = allocaBytes 48 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p DescriptorMappingSourcePushIndexEXT{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr Word32)) (heapOffset)
+    lift $ poke ((p `plusPtr` 4 :: Ptr Word32)) (pushOffset)
+    lift $ poke ((p `plusPtr` 8 :: Ptr Word32)) (heapIndexStride)
+    lift $ poke ((p `plusPtr` 12 :: Ptr Word32)) (heapArrayStride)
+    pEmbeddedSampler'' <- case (embeddedSampler) of
+      Nothing -> pure nullPtr
+      Just j -> ContT @_ @_ @(Ptr (SamplerCreateInfo '[])) $ \cont -> withSomeCStruct @SamplerCreateInfo (j) (cont . castPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr (Ptr (SamplerCreateInfo _)))) pEmbeddedSampler''
+    lift $ poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (useCombinedImageSamplerIndex))
+    lift $ poke ((p `plusPtr` 28 :: Ptr Word32)) (samplerHeapOffset)
+    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) (samplerPushOffset)
+    lift $ poke ((p `plusPtr` 36 :: Ptr Word32)) (samplerHeapIndexStride)
+    lift $ poke ((p `plusPtr` 40 :: Ptr Word32)) (samplerHeapArrayStride)
+    lift $ f
+  cStructSize = 48
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 12 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 28 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 32 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 36 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 40 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct DescriptorMappingSourcePushIndexEXT where
+  peekCStruct p = do
+    heapOffset <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))
+    pushOffset <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))
+    heapIndexStride <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))
+    heapArrayStride <- peek @Word32 ((p `plusPtr` 12 :: Ptr Word32))
+    pEmbeddedSampler <- peek @(Ptr (SamplerCreateInfo _)) ((p `plusPtr` 16 :: Ptr (Ptr (SamplerCreateInfo _))))
+    pEmbeddedSampler' <- maybePeek (\j -> peekSomeCStruct (forgetExtensions (j))) pEmbeddedSampler
+    useCombinedImageSamplerIndex <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))
+    samplerHeapOffset <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))
+    samplerPushOffset <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))
+    samplerHeapIndexStride <- peek @Word32 ((p `plusPtr` 36 :: Ptr Word32))
+    samplerHeapArrayStride <- peek @Word32 ((p `plusPtr` 40 :: Ptr Word32))
+    pure $ DescriptorMappingSourcePushIndexEXT
+             heapOffset
+             pushOffset
+             heapIndexStride
+             heapArrayStride
+             pEmbeddedSampler'
+             (bool32ToBool useCombinedImageSamplerIndex)
+             samplerHeapOffset
+             samplerPushOffset
+             samplerHeapIndexStride
+             samplerHeapArrayStride
+
+instance Zero DescriptorMappingSourcePushIndexEXT where
+  zero = DescriptorMappingSourcePushIndexEXT
+           zero
+           zero
+           zero
+           zero
+           Nothing
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkDescriptorMappingSourceIndirectIndexEXT - Structure specifying mapping
+-- resources to a heap index in indirect data
+--
+-- = Description
+--
+-- Resources using this mapping will be backed by a descriptor in the heap,
+-- at an offset calculated as
+--
+-- -   uint32_t *indirectAddress =
+--     ((VkDeviceAddress*)pPushData)[pushOffset\/8]
+--
+-- -   indirectIndex = indirectAddress[(addressOffset \/ 4)]
+--
+-- -   shaderIndex = (Binding - firstBinding) + arrayIndex
+--
+-- -   offset = heapOffset + (indirectIndex × heapIndexStride) +
+--     (shaderIndex × heapArrayStride)
+--
+-- where Binding is the binding value in the shader, arrayIndex is the
+-- index into the array if the shader binding is declared as an array, and
+-- pPushData is the total set of push data specified by 'cmdPushDataEXT'.
+-- The value of the address in push data /must/ be a multiple of 4. Index
+-- reads through indirectAddress are performed as non-volatile uniform
+-- buffer reads, and can be synchronized using
+-- 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_UNIFORM_READ_BIT'. The value
+-- in memory /must/ remain static while any shader invocation using this
+-- mapping is in flight to avoid a data race.
+--
+-- If the mapped resource is a @OpTypeSampledImage@, offset is instead
+-- calculated for the sampler as
+--
+-- -   uint32_t *samplerIndirectAddress =
+--     ((VkDeviceAddress*)pPushData)[samplerPushOffset\/8]
+--
+-- -   samplerIndirectIndex = samplerIndirectAddress[(samplerAddressOffset
+--     \/ 4)]
+--
+-- -   offset = samplerHeapOffset + (samplerIndirectIndex ×
+--     samplerHeapIndexStride) + (shaderIndex × samplerHeapArrayStride)
+--
+-- If @useCombinedImageSamplerIndex@ is
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', and the mapped resource is a
+-- @OpTypeSampledImage@, indirectIndex and samplerIndirectIndex in the
+-- above equations are instead calculated as
+--
+-- -   indirectIndex = indirectAddress[addressOffset\/4] & 0xFFFFF
+--
+-- -   samplerIndirectIndex = indirectAddress[addressOffset\/4] >> 20) &
+--     0xFFF
+--
+-- If the mapped resource is a @OpTypeSampler@ or @OpTypeSampledImage@, and
+-- @pEmbeddedSampler@ is not @NULL@, the specified embedded sampler will be
+-- used rather than accessing the sampler heap.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkDescriptorMappingSourceIndirectIndexEXT-pushOffset-11260#
+--     @pushOffset@ /must/ be a multiple of 8
+--
+-- -   #VUID-VkDescriptorMappingSourceIndirectIndexEXT-pushOffset-11261#
+--     @pushOffset@ /must/ be less than or equal to @maxPushDataSize@ - 8
+--
+-- -   #VUID-VkDescriptorMappingSourceIndirectIndexEXT-addressOffset-11262#
+--     @addressOffset@ /must/ be a multiple of 4
+--
+-- -   #VUID-VkDescriptorMappingSourceIndirectIndexEXT-pEmbeddedSampler-11447#
+--     If @pEmbeddedSampler@ is a valid pointer to a
+--     'Vulkan.Core10.Sampler.SamplerCreateInfo', its @borderColor@ /must/
+--     not be
+--     'Vulkan.Core10.Enums.BorderColor.BORDER_COLOR_FLOAT_CUSTOM_EXT' or
+--     'Vulkan.Core10.Enums.BorderColor.BORDER_COLOR_INT_CUSTOM_EXT'
+--
+-- -   #VUID-VkDescriptorMappingSourceIndirectIndexEXT-pEmbeddedSampler-11403#
+--     If @pEmbeddedSampler@ is a valid pointer to a
+--     'Vulkan.Core10.Sampler.SamplerCreateInfo', and there is a
+--     'Vulkan.Extensions.VK_EXT_debug_utils.DebugUtilsObjectNameInfoEXT'
+--     structure in its @pNext@ chain, its @objectType@ /must/ be
+--     'Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_UNKNOWN'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkDescriptorMappingSourceIndirectIndexEXT-pEmbeddedSampler-parameter#
+--     If @pEmbeddedSampler@ is not @NULL@, @pEmbeddedSampler@ /must/ be a
+--     valid pointer to a valid 'Vulkan.Core10.Sampler.SamplerCreateInfo'
+--     structure
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_heap VK_EXT_descriptor_heap>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'DescriptorMappingSourceDataEXT',
+-- 'Vulkan.Core10.Sampler.SamplerCreateInfo'
+data DescriptorMappingSourceIndirectIndexEXT = DescriptorMappingSourceIndirectIndexEXT
+  { -- | @heapOffset@ is a constant byte offset added to the heap address for the
+    -- mapped resource or sampler.
+    heapOffset :: Word32
+  , -- | @pushOffset@ is an offset into push data where an the indirect address
+    -- will be.
+    pushOffset :: Word32
+  , -- | @addressOffset@ is an index into the address in push data where an index
+    -- into the heap for the mapped resource will be retrieved.
+    addressOffset :: Word32
+  , -- | @heapIndexStride@ is a constant byte stride that multiplies the index in
+    -- indirect data.
+    heapIndexStride :: Word32
+  , -- | @heapArrayStride@ is a constant byte stride that multiplies the shader
+    -- binding and array index.
+    heapArrayStride :: Word32
+  , -- | @pEmbeddedSampler@ is an optional
+    -- 'Vulkan.Core10.Sampler.SamplerCreateInfo' structure specifying a sampler
+    -- to embed into the shader, in place of looking the sampler up in a heap.
+    embeddedSampler :: Maybe (SomeStruct SamplerCreateInfo)
+  , -- | @useCombinedImageSamplerIndex@ specifies whether the generated index
+    -- value will be decoded as two packed indices if the mapped resource is an
+    -- @OpTypeSampledImage@.
+    useCombinedImageSamplerIndex :: Bool
+  , -- | @samplerHeapOffset@ is used only when mapping a combined image sampler,
+    -- used in place of @heapOffset@ to retrieve the sampler.
+    samplerHeapOffset :: Word32
+  , -- | @samplerPushOffset@ is used only when mapping a combined image sampler,
+    -- used in place of @pushOffset@ to retrieve the sampler.
+    samplerPushOffset :: Word32
+  , -- | @samplerAddressOffset@ is used only when mapping a combined image
+    -- sampler, used in place of @addressOffset@ to retrieve the sampler.
+    samplerAddressOffset :: Word32
+  , -- | @samplerHeapIndexStride@ is used only when mapping a combined image
+    -- sampler, used in place of @heapIndexStride@ to retrieve the sampler.
+    samplerHeapIndexStride :: Word32
+  , -- | @samplerHeapArrayStride@ is used only when mapping a combined image
+    -- sampler, used in place of @heapArrayStride@ to retrieve the sampler.
+    samplerHeapArrayStride :: Word32
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (DescriptorMappingSourceIndirectIndexEXT)
+#endif
+deriving instance Show DescriptorMappingSourceIndirectIndexEXT
+
+instance ToCStruct DescriptorMappingSourceIndirectIndexEXT where
+  withCStruct x f = allocaBytes 56 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p DescriptorMappingSourceIndirectIndexEXT{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr Word32)) (heapOffset)
+    lift $ poke ((p `plusPtr` 4 :: Ptr Word32)) (pushOffset)
+    lift $ poke ((p `plusPtr` 8 :: Ptr Word32)) (addressOffset)
+    lift $ poke ((p `plusPtr` 12 :: Ptr Word32)) (heapIndexStride)
+    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) (heapArrayStride)
+    pEmbeddedSampler'' <- case (embeddedSampler) of
+      Nothing -> pure nullPtr
+      Just j -> ContT @_ @_ @(Ptr (SamplerCreateInfo '[])) $ \cont -> withSomeCStruct @SamplerCreateInfo (j) (cont . castPtr)
+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr (SamplerCreateInfo _)))) pEmbeddedSampler''
+    lift $ poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (useCombinedImageSamplerIndex))
+    lift $ poke ((p `plusPtr` 36 :: Ptr Word32)) (samplerHeapOffset)
+    lift $ poke ((p `plusPtr` 40 :: Ptr Word32)) (samplerPushOffset)
+    lift $ poke ((p `plusPtr` 44 :: Ptr Word32)) (samplerAddressOffset)
+    lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) (samplerHeapIndexStride)
+    lift $ poke ((p `plusPtr` 52 :: Ptr Word32)) (samplerHeapArrayStride)
+    lift $ f
+  cStructSize = 56
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 12 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (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)
+    f
+
+instance FromCStruct DescriptorMappingSourceIndirectIndexEXT where
+  peekCStruct p = do
+    heapOffset <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))
+    pushOffset <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))
+    addressOffset <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))
+    heapIndexStride <- peek @Word32 ((p `plusPtr` 12 :: Ptr Word32))
+    heapArrayStride <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    pEmbeddedSampler <- peek @(Ptr (SamplerCreateInfo _)) ((p `plusPtr` 24 :: Ptr (Ptr (SamplerCreateInfo _))))
+    pEmbeddedSampler' <- maybePeek (\j -> peekSomeCStruct (forgetExtensions (j))) pEmbeddedSampler
+    useCombinedImageSamplerIndex <- peek @Bool32 ((p `plusPtr` 32 :: Ptr Bool32))
+    samplerHeapOffset <- peek @Word32 ((p `plusPtr` 36 :: Ptr Word32))
+    samplerPushOffset <- peek @Word32 ((p `plusPtr` 40 :: Ptr Word32))
+    samplerAddressOffset <- peek @Word32 ((p `plusPtr` 44 :: Ptr Word32))
+    samplerHeapIndexStride <- peek @Word32 ((p `plusPtr` 48 :: Ptr Word32))
+    samplerHeapArrayStride <- peek @Word32 ((p `plusPtr` 52 :: Ptr Word32))
+    pure $ DescriptorMappingSourceIndirectIndexEXT
+             heapOffset
+             pushOffset
+             addressOffset
+             heapIndexStride
+             heapArrayStride
+             pEmbeddedSampler'
+             (bool32ToBool useCombinedImageSamplerIndex)
+             samplerHeapOffset
+             samplerPushOffset
+             samplerAddressOffset
+             samplerHeapIndexStride
+             samplerHeapArrayStride
+
+instance Zero DescriptorMappingSourceIndirectIndexEXT where
+  zero = DescriptorMappingSourceIndirectIndexEXT
+           zero
+           zero
+           zero
+           zero
+           zero
+           Nothing
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkDescriptorMappingSourceIndirectIndexArrayEXT - Structure specifying
+-- mapping resources to a heap index array in indirect data
+--
+-- = Description
+--
+-- Resources using this mapping will be backed by a descriptor in the heap,
+-- at an offset calculated as
+--
+-- -   uint32_t *indirectAddress =
+--     ((VkDeviceAddress*)pPushData)[pushOffset\/8]
+--
+-- -   shaderIndex = (Binding - firstBinding) + arrayIndex
+--
+-- -   indirectIndex = indirectAddress[(addressOffset \/ 4) + shaderIndex]
+--
+-- -   offset = heapOffset + (indirectIndex × heapIndexStride)
+--
+-- where Binding is the binding value in the shader, arrayIndex is the
+-- index into the array if the shader binding is declared as an array, and
+-- pPushData is the total set of push data specified by 'cmdPushDataEXT'.
+-- The value of the address in push data /must/ be a multiple of 4. Index
+-- reads through indirectAddress are performed as non-volatile uniform
+-- buffer reads, and can be synchronized using
+-- 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_UNIFORM_READ_BIT'. The value
+-- in memory /must/ remain static while any shader invocation using this
+-- mapping is in flight to avoid a data race.
+--
+-- If the mapped resource is a @OpTypeSampledImage@, offset is instead
+-- calculated for the sampler as
+--
+-- -   uint32_t *samplerIndirectAddress =
+--     ((VkDeviceAddress*)pPushData)[samplerPushOffset\/8]
+--
+-- -   samplerIndirectIndex = samplerAddr[(samplerAddressOffset \/ 4) +
+--     shaderIndex]
+--
+-- -   offset = samplerHeapOffset + (samplerIndirectIndex ×
+--     samplerHeapIndexStride)
+--
+-- If @useCombinedImageSamplerIndex@ is
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', and the mapped resource is a
+-- @OpTypeSampledImage@, indirectIndex and samplerIndirectIndex in the
+-- above equations are instead calculated as
+--
+-- -   indirectIndex = indirectAddress[addressOffset\/4 + shaderIndex] &
+--     0xFFFFF
+--
+-- -   samplerIndirectIndex = indirectAddress[addressOffset\/4 +
+--     shaderIndex] >> 20) & 0xFFF
+--
+-- If the mapped resource is a @OpTypeSampler@ or @OpTypeSampledImage@, and
+-- @pEmbeddedSampler@ is not @NULL@, the specified embedded sampler will be
+-- used rather than accessing the sampler heap.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkDescriptorMappingSourceIndirectIndexArrayEXT-pushOffset-11359#
+--     @pushOffset@ /must/ be a multiple of 8
+--
+-- -   #VUID-VkDescriptorMappingSourceIndirectIndexArrayEXT-pushOffset-11360#
+--     @pushOffset@ /must/ be less than or equal to @maxPushDataSize@ - 8
+--
+-- -   #VUID-VkDescriptorMappingSourceIndirectIndexArrayEXT-addressOffset-11361#
+--     @addressOffset@ /must/ be a multiple of 4
+--
+-- -   #VUID-VkDescriptorMappingSourceIndirectIndexArrayEXT-pEmbeddedSampler-11448#
+--     If @pEmbeddedSampler@ is a valid pointer to a
+--     'Vulkan.Core10.Sampler.SamplerCreateInfo', its @borderColor@ /must/
+--     not be
+--     'Vulkan.Core10.Enums.BorderColor.BORDER_COLOR_FLOAT_CUSTOM_EXT' or
+--     'Vulkan.Core10.Enums.BorderColor.BORDER_COLOR_INT_CUSTOM_EXT'
+--
+-- -   #VUID-VkDescriptorMappingSourceIndirectIndexArrayEXT-pEmbeddedSampler-11404#
+--     If @pEmbeddedSampler@ is a valid pointer to a
+--     'Vulkan.Core10.Sampler.SamplerCreateInfo', and there is a
+--     'Vulkan.Extensions.VK_EXT_debug_utils.DebugUtilsObjectNameInfoEXT'
+--     structure in its @pNext@ chain, its @objectType@ /must/ be
+--     'Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_UNKNOWN'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkDescriptorMappingSourceIndirectIndexArrayEXT-pEmbeddedSampler-parameter#
+--     If @pEmbeddedSampler@ is not @NULL@, @pEmbeddedSampler@ /must/ be a
+--     valid pointer to a valid 'Vulkan.Core10.Sampler.SamplerCreateInfo'
+--     structure
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_heap VK_EXT_descriptor_heap>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'DescriptorMappingSourceDataEXT',
+-- 'Vulkan.Core10.Sampler.SamplerCreateInfo'
+data DescriptorMappingSourceIndirectIndexArrayEXT = DescriptorMappingSourceIndirectIndexArrayEXT
+  { -- | @heapOffset@ is a constant byte offset added to the heap address for the
+    -- mapped resource or sampler.
+    heapOffset :: Word32
+  , -- | @pushOffset@ is an offset into push data where an the indirect address
+    -- will be.
+    pushOffset :: Word32
+  , -- | @addressOffset@ is an index into the address in push data where an index
+    -- into the heap for the mapped resource will be retrieved.
+    addressOffset :: Word32
+  , -- | @heapIndexStride@ is a constant byte stride that multiplies the index in
+    -- indirect data.
+    heapIndexStride :: Word32
+  , -- | @pEmbeddedSampler@ is an optional
+    -- 'Vulkan.Core10.Sampler.SamplerCreateInfo' structure specifying a sampler
+    -- to embed into the shader, in place of looking the sampler up in a heap.
+    embeddedSampler :: Maybe (SomeStruct SamplerCreateInfo)
+  , -- | @useCombinedImageSamplerIndex@ specifies whether the generated index
+    -- value will be decoded as two packed indices if the mapped resource is an
+    -- @OpTypeSampledImage@.
+    useCombinedImageSamplerIndex :: Bool
+  , -- | @samplerHeapOffset@ is used only when mapping a combined image sampler,
+    -- used in place of @heapOffset@ to retrieve the sampler.
+    samplerHeapOffset :: Word32
+  , -- | @samplerPushOffset@ is used only when mapping a combined image sampler,
+    -- used in place of @pushOffset@ to retrieve the sampler.
+    samplerPushOffset :: Word32
+  , -- | @samplerAddressOffset@ is used only when mapping a combined image
+    -- sampler, used in place of @addressOffset@ to retrieve the sampler.
+    samplerAddressOffset :: Word32
+  , -- | @samplerHeapIndexStride@ is used only when mapping a combined image
+    -- sampler, used in place of @heapIndexStride@ to retrieve the sampler.
+    samplerHeapIndexStride :: Word32
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (DescriptorMappingSourceIndirectIndexArrayEXT)
+#endif
+deriving instance Show DescriptorMappingSourceIndirectIndexArrayEXT
+
+instance ToCStruct DescriptorMappingSourceIndirectIndexArrayEXT where
+  withCStruct x f = allocaBytes 48 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p DescriptorMappingSourceIndirectIndexArrayEXT{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr Word32)) (heapOffset)
+    lift $ poke ((p `plusPtr` 4 :: Ptr Word32)) (pushOffset)
+    lift $ poke ((p `plusPtr` 8 :: Ptr Word32)) (addressOffset)
+    lift $ poke ((p `plusPtr` 12 :: Ptr Word32)) (heapIndexStride)
+    pEmbeddedSampler'' <- case (embeddedSampler) of
+      Nothing -> pure nullPtr
+      Just j -> ContT @_ @_ @(Ptr (SamplerCreateInfo '[])) $ \cont -> withSomeCStruct @SamplerCreateInfo (j) (cont . castPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr (Ptr (SamplerCreateInfo _)))) pEmbeddedSampler''
+    lift $ poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (useCombinedImageSamplerIndex))
+    lift $ poke ((p `plusPtr` 28 :: Ptr Word32)) (samplerHeapOffset)
+    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) (samplerPushOffset)
+    lift $ poke ((p `plusPtr` 36 :: Ptr Word32)) (samplerAddressOffset)
+    lift $ poke ((p `plusPtr` 40 :: Ptr Word32)) (samplerHeapIndexStride)
+    lift $ f
+  cStructSize = 48
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 12 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 28 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 32 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 36 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 40 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct DescriptorMappingSourceIndirectIndexArrayEXT where
+  peekCStruct p = do
+    heapOffset <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))
+    pushOffset <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))
+    addressOffset <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))
+    heapIndexStride <- peek @Word32 ((p `plusPtr` 12 :: Ptr Word32))
+    pEmbeddedSampler <- peek @(Ptr (SamplerCreateInfo _)) ((p `plusPtr` 16 :: Ptr (Ptr (SamplerCreateInfo _))))
+    pEmbeddedSampler' <- maybePeek (\j -> peekSomeCStruct (forgetExtensions (j))) pEmbeddedSampler
+    useCombinedImageSamplerIndex <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))
+    samplerHeapOffset <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))
+    samplerPushOffset <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))
+    samplerAddressOffset <- peek @Word32 ((p `plusPtr` 36 :: Ptr Word32))
+    samplerHeapIndexStride <- peek @Word32 ((p `plusPtr` 40 :: Ptr Word32))
+    pure $ DescriptorMappingSourceIndirectIndexArrayEXT
+             heapOffset
+             pushOffset
+             addressOffset
+             heapIndexStride
+             pEmbeddedSampler'
+             (bool32ToBool useCombinedImageSamplerIndex)
+             samplerHeapOffset
+             samplerPushOffset
+             samplerAddressOffset
+             samplerHeapIndexStride
+
+instance Zero DescriptorMappingSourceIndirectIndexArrayEXT where
+  zero = DescriptorMappingSourceIndirectIndexArrayEXT
+           zero
+           zero
+           zero
+           zero
+           Nothing
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkDescriptorMappingSourceHeapDataEXT - Structure specifying mapping a
+-- uniform buffer to heap data
+--
+-- = Description
+--
+-- Uniform buffers using this mapping will be backed directly by data in
+-- the heap. Accessing data in the uniform buffer at an offset of
+-- shaderOffset in the shader will access heap data at an offset equal to
+--
+-- -   offset = shaderOffset + heapOffset +
+--     ((uint32_t*)pPushData)[pushOffset\/4]
+--
+-- where pPushData is the total set of push data specified by
+-- 'cmdPushDataEXT'. Shader reads through the heap mapped in this way are
+-- performed according to the mapped resource.
+--
+-- == Valid Usage
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_heap VK_EXT_descriptor_heap>,
+-- 'DescriptorMappingSourceDataEXT'
+data DescriptorMappingSourceHeapDataEXT = DescriptorMappingSourceHeapDataEXT
+  { -- | @heapOffset@ is a constant byte offset added to the heap address for the
+    -- mapped buffer.
+    --
+    -- #VUID-VkDescriptorMappingSourceHeapDataEXT-heapOffset-11263#
+    -- @heapOffset@ /must/ be a multiple of
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-minUniformBufferOffsetAlignment minUniformBufferOffsetAlignment>
+    heapOffset :: Word32
+  , -- | @pushOffset@ is an index into push data where an additional offset into
+    -- the heap for the mapped resource will be retrieved.
+    --
+    -- #VUID-VkDescriptorMappingSourceHeapDataEXT-pushOffset-11264#
+    -- @pushOffset@ /must/ be a multiple of 4
+    --
+    -- #VUID-VkDescriptorMappingSourceHeapDataEXT-pushOffset-11265#
+    -- @pushOffset@ /must/ be less than or equal to @maxPushDataSize@ - 4
+    pushOffset :: Word32
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (DescriptorMappingSourceHeapDataEXT)
+#endif
+deriving instance Show DescriptorMappingSourceHeapDataEXT
+
+instance ToCStruct DescriptorMappingSourceHeapDataEXT where
+  withCStruct x f = allocaBytes 8 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p DescriptorMappingSourceHeapDataEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr Word32)) (heapOffset)
+    poke ((p `plusPtr` 4 :: Ptr Word32)) (pushOffset)
+    f
+  cStructSize = 8
+  cStructAlignment = 4
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct DescriptorMappingSourceHeapDataEXT where
+  peekCStruct p = do
+    heapOffset <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))
+    pushOffset <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))
+    pure $ DescriptorMappingSourceHeapDataEXT
+             heapOffset pushOffset
+
+instance Storable DescriptorMappingSourceHeapDataEXT where
+  sizeOf ~_ = 8
+  alignment ~_ = 4
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero DescriptorMappingSourceHeapDataEXT where
+  zero = DescriptorMappingSourceHeapDataEXT
+           zero
+           zero
+
+
+-- | VkDescriptorMappingSourceShaderRecordIndexEXT - Structure specifying
+-- mapping resources to a heap index in shader record data
+--
+-- = Description
+--
+-- Resources using this mapping will be backed by a descriptor in the heap,
+-- at an offset calculated as
+--
+-- -   shaderRecordIndex =
+--     ((uint32_t*)pShaderRecordData)[shaderRecordOffset\/4]
+--
+-- -   shaderIndex = (Binding - firstBinding) + arrayIndex
+--
+-- -   offset = heapOffset + (shaderRecordIndex × heapIndexStride) +
+--     (shaderIndex × heapArrayStride)
+--
+-- where Binding is the binding value in the shader, arrayIndex is the
+-- index into the array if the shader binding is declared as an array, and
+-- pShaderRecordData is the set of shader record data accessible to the
+-- shader.
+--
+-- If the mapped resource is a @OpTypeSampledImage@, offset is instead
+-- calculated for the sampler as
+--
+-- -   samplerShaderRecordIndex =
+--     ((uint32_t*)pShaderRecordData)[samplerShaderRecordOffset\/4]
+--
+-- -   offset = samplerHeapOffset + (samplerShaderRecordIndex ×
+--     samplerHeapIndexStride) + (shaderIndex × samplerHeapArrayStride)
+--
+-- If @useCombinedImageSamplerIndex@ is
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', and the mapped resource is a
+-- @OpTypeSampledImage@, shaderRecordIndex and samplerShaderRecordIndex in
+-- the above equations are instead calculated as
+--
+-- -   shaderRecordIndex =
+--     ((uint32_t*)pShaderRecordData)[shaderRecordOffset\/4] & 0xFFFFF
+--
+-- -   samplerShaderRecordIndex =
+--     (((uint32_t*)pShaderRecordData)[shaderRecordOffset\/4] >> 20) &
+--     0xFFF
+--
+-- If the mapped resource is a @OpTypeSampler@ or @OpTypeSampledImage@, and
+-- @pEmbeddedSampler@ is not @NULL@, the specified embedded sampler will be
+-- used rather than accessing the sampler heap.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkDescriptorMappingSourceShaderRecordIndexEXT-shaderRecordOffset-11269#
+--     @shaderRecordOffset@ /must/ be a multiple of 4
+--
+-- -   #VUID-VkDescriptorMappingSourceShaderRecordIndexEXT-shaderRecordOffset-11270#
+--     @shaderRecordOffset@ /must/ be less than or equal to
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxShaderGroupStride maxShaderGroupStride>
+--     - 4
+--
+-- -   #VUID-VkDescriptorMappingSourceShaderRecordIndexEXT-pEmbeddedSampler-11449#
+--     If @pEmbeddedSampler@ is a valid pointer to a
+--     'Vulkan.Core10.Sampler.SamplerCreateInfo', its @borderColor@ /must/
+--     not be
+--     'Vulkan.Core10.Enums.BorderColor.BORDER_COLOR_FLOAT_CUSTOM_EXT' or
+--     'Vulkan.Core10.Enums.BorderColor.BORDER_COLOR_INT_CUSTOM_EXT'
+--
+-- -   #VUID-VkDescriptorMappingSourceShaderRecordIndexEXT-pEmbeddedSampler-11405#
+--     If @pEmbeddedSampler@ is a valid pointer to a
+--     'Vulkan.Core10.Sampler.SamplerCreateInfo', and there is a
+--     'Vulkan.Extensions.VK_EXT_debug_utils.DebugUtilsObjectNameInfoEXT'
+--     structure in its @pNext@ chain, its @objectType@ /must/ be
+--     'Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_UNKNOWN'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkDescriptorMappingSourceShaderRecordIndexEXT-pEmbeddedSampler-parameter#
+--     If @pEmbeddedSampler@ is not @NULL@, @pEmbeddedSampler@ /must/ be a
+--     valid pointer to a valid 'Vulkan.Core10.Sampler.SamplerCreateInfo'
+--     structure
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_heap VK_EXT_descriptor_heap>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'DescriptorMappingSourceDataEXT',
+-- 'Vulkan.Core10.Sampler.SamplerCreateInfo'
+data DescriptorMappingSourceShaderRecordIndexEXT = DescriptorMappingSourceShaderRecordIndexEXT
+  { -- | @heapOffset@ is a constant byte offset added to the heap address for the
+    -- mapped resource or sampler.
+    heapOffset :: Word32
+  , -- | @shaderRecordOffset@ is an index into shader record data where an index
+    -- into the heap for the mapped resource will be retrieved.
+    shaderRecordOffset :: Word32
+  , -- | @heapIndexStride@ is a constant byte stride that multiplies the index in
+    -- shader record data.
+    heapIndexStride :: Word32
+  , -- | @heapArrayStride@ is a constant byte stride that multiplies the shader
+    -- binding and array index.
+    heapArrayStride :: Word32
+  , -- | @pEmbeddedSampler@ is an optional
+    -- 'Vulkan.Core10.Sampler.SamplerCreateInfo' structure specifying a sampler
+    -- to embed into the shader, in place of looking the sampler up in a heap.
+    embeddedSampler :: Maybe (SomeStruct SamplerCreateInfo)
+  , -- | @useCombinedImageSamplerIndex@ specifies whether the generated index
+    -- value will be decoded as two packed indices if the mapped resource is an
+    -- @OpTypeSampledImage@.
+    useCombinedImageSamplerIndex :: Bool
+  , -- | @samplerHeapOffset@ is used only when mapping a combined image sampler,
+    -- used in place of @heapOffset@ to retrieve the sampler.
+    samplerHeapOffset :: Word32
+  , -- | @samplerShaderRecordOffset@ is used only when mapping a combined image
+    -- sampler, used in place of @shaderRecordOffset@ to retrieve the sampler.
+    samplerShaderRecordOffset :: Word32
+  , -- | @samplerHeapIndexStride@ is used only when mapping a combined image
+    -- sampler, used in place of @heapIndexStride@ to retrieve the sampler.
+    samplerHeapIndexStride :: Word32
+  , -- | @samplerHeapArrayStride@ is used only when mapping a combined image
+    -- sampler, used in place of @heapArrayStride@ to retrieve the sampler.
+    samplerHeapArrayStride :: Word32
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (DescriptorMappingSourceShaderRecordIndexEXT)
+#endif
+deriving instance Show DescriptorMappingSourceShaderRecordIndexEXT
+
+instance ToCStruct DescriptorMappingSourceShaderRecordIndexEXT where
+  withCStruct x f = allocaBytes 48 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p DescriptorMappingSourceShaderRecordIndexEXT{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr Word32)) (heapOffset)
+    lift $ poke ((p `plusPtr` 4 :: Ptr Word32)) (shaderRecordOffset)
+    lift $ poke ((p `plusPtr` 8 :: Ptr Word32)) (heapIndexStride)
+    lift $ poke ((p `plusPtr` 12 :: Ptr Word32)) (heapArrayStride)
+    pEmbeddedSampler'' <- case (embeddedSampler) of
+      Nothing -> pure nullPtr
+      Just j -> ContT @_ @_ @(Ptr (SamplerCreateInfo '[])) $ \cont -> withSomeCStruct @SamplerCreateInfo (j) (cont . castPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr (Ptr (SamplerCreateInfo _)))) pEmbeddedSampler''
+    lift $ poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (useCombinedImageSamplerIndex))
+    lift $ poke ((p `plusPtr` 28 :: Ptr Word32)) (samplerHeapOffset)
+    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) (samplerShaderRecordOffset)
+    lift $ poke ((p `plusPtr` 36 :: Ptr Word32)) (samplerHeapIndexStride)
+    lift $ poke ((p `plusPtr` 40 :: Ptr Word32)) (samplerHeapArrayStride)
+    lift $ f
+  cStructSize = 48
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 12 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 28 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 32 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 36 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 40 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct DescriptorMappingSourceShaderRecordIndexEXT where
+  peekCStruct p = do
+    heapOffset <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))
+    shaderRecordOffset <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))
+    heapIndexStride <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))
+    heapArrayStride <- peek @Word32 ((p `plusPtr` 12 :: Ptr Word32))
+    pEmbeddedSampler <- peek @(Ptr (SamplerCreateInfo _)) ((p `plusPtr` 16 :: Ptr (Ptr (SamplerCreateInfo _))))
+    pEmbeddedSampler' <- maybePeek (\j -> peekSomeCStruct (forgetExtensions (j))) pEmbeddedSampler
+    useCombinedImageSamplerIndex <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))
+    samplerHeapOffset <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))
+    samplerShaderRecordOffset <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))
+    samplerHeapIndexStride <- peek @Word32 ((p `plusPtr` 36 :: Ptr Word32))
+    samplerHeapArrayStride <- peek @Word32 ((p `plusPtr` 40 :: Ptr Word32))
+    pure $ DescriptorMappingSourceShaderRecordIndexEXT
+             heapOffset
+             shaderRecordOffset
+             heapIndexStride
+             heapArrayStride
+             pEmbeddedSampler'
+             (bool32ToBool useCombinedImageSamplerIndex)
+             samplerHeapOffset
+             samplerShaderRecordOffset
+             samplerHeapIndexStride
+             samplerHeapArrayStride
+
+instance Zero DescriptorMappingSourceShaderRecordIndexEXT where
+  zero = DescriptorMappingSourceShaderRecordIndexEXT
+           zero
+           zero
+           zero
+           zero
+           Nothing
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkDescriptorMappingSourceIndirectAddressEXT - Structure specifying
+-- mapping a uniform buffer to an address specified indirectly
+--
+-- = Description
+--
+-- Accessing data via the mapped resource in the shader will access data
+-- backing the address specified in the indirect address at the supplied
+-- offset:
+--
+-- -   indirectAddress = ((VkDeviceAddress*)pPushData)[pushOffset\/8]
+--
+-- -   resourceAddress =
+--     ((VkDeviceAddress*)indirectAddress)[addressOffset\/8]
+--
+-- where pPushData is the total set of push data specified by
+-- 'cmdPushDataEXT'. Reads through indirectAddress are performed as
+-- non-volatile uniform buffer reads, and can be synchronized using
+-- 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_UNIFORM_READ_BIT'. Shader
+-- reads through resourceAddress are performed according to the mapped
+-- resource. If the shader resource is an acceleration structure, the
+-- address /must/ be a valid acceleration structure address.
+--
+-- == Valid Usage
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_heap VK_EXT_descriptor_heap>,
+-- 'DescriptorMappingSourceDataEXT'
+data DescriptorMappingSourceIndirectAddressEXT = DescriptorMappingSourceIndirectAddressEXT
+  { -- | @pushOffset@ is a byte offset into push data where an indirect address
+    -- containing the address for the mapped resource will be retrieved.
+    --
+    -- #VUID-VkDescriptorMappingSourceIndirectAddressEXT-pushOffset-11266#
+    -- @pushOffset@ /must/ be a multiple of 8
+    --
+    -- #VUID-VkDescriptorMappingSourceIndirectAddressEXT-pushOffset-11267#
+    -- @pushOffset@ /must/ be less than or equal to @maxPushDataSize@ - 8
+    pushOffset :: Word32
+  , -- | @addressOffset@ is a byte offset into the indirect address where the
+    -- address for the mapped resource will be retrieved.
+    --
+    -- #VUID-VkDescriptorMappingSourceIndirectAddressEXT-addressOffset-11268#
+    -- @addressOffset@ /must/ be a multiple of 8
+    addressOffset :: Word32
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (DescriptorMappingSourceIndirectAddressEXT)
+#endif
+deriving instance Show DescriptorMappingSourceIndirectAddressEXT
+
+instance ToCStruct DescriptorMappingSourceIndirectAddressEXT where
+  withCStruct x f = allocaBytes 8 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p DescriptorMappingSourceIndirectAddressEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr Word32)) (pushOffset)
+    poke ((p `plusPtr` 4 :: Ptr Word32)) (addressOffset)
+    f
+  cStructSize = 8
+  cStructAlignment = 4
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct DescriptorMappingSourceIndirectAddressEXT where
+  peekCStruct p = do
+    pushOffset <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))
+    addressOffset <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))
+    pure $ DescriptorMappingSourceIndirectAddressEXT
+             pushOffset addressOffset
+
+instance Storable DescriptorMappingSourceIndirectAddressEXT where
+  sizeOf ~_ = 8
+  alignment ~_ = 4
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero DescriptorMappingSourceIndirectAddressEXT where
+  zero = DescriptorMappingSourceIndirectAddressEXT
+           zero
+           zero
+
+
+-- | VkDescriptorSetAndBindingMappingEXT - Structure specifying mappings from
+-- a set of shader resources to a descriptor heap
+--
+-- = Description
+--
+-- Resources specified in a shader with a
+-- 'Vulkan.Core10.Handles.DescriptorSet' decoration set to @descriptorSet@,
+-- a @Binding@ decoration greater than or equal to @firstBinding@ and less
+-- than the sum of @firstBinding@ and @bindingCount@, and a resource type
+-- matching one of the bits in @resourceMask@ will be mapped according to
+-- @source@ and @sourceData@.
+--
+-- Applications are free to overspecify bindings that are not present;
+-- allowing reuse of the same mapping structures with multiple shaders,
+-- even when those shaders only partially reuse those mappings. This
+-- includes things like setting binding counts higher than the number used
+-- in the shader, specifying bindings that are not present in the shader,
+-- and setting @resourceMask@ to all possible resources that may be
+-- encountered.
+--
+-- If @source@ selects an element of @sourceData@ defined by a structure,
+-- the description of that structure defines how resources are mapped.
+-- Source mappings using a single base type are defined here.
+--
+-- If @source@ is
+-- 'DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_CONSTANT_OFFSET_EXT', the resource
+-- will be backed by heap data as specified by
+-- <VkDescriptorMappingSourceConstantOffsetEXT.html constantOffset>.
+--
+-- If @source@ is 'DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT', the
+-- resource will be backed by heap data as specified by
+-- <VkDescriptorMappingSourcePushIndexEXT.html pushIndex>.
+--
+-- If @source@ is 'DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+-- the resource will be backed by heap data as specified by
+-- <VkDescriptorMappingSourceIndirectIndexEXT.html indirectIndex>.
+--
+-- If @source@ is
+-- 'DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT', the
+-- resource will be backed by heap data as specified by
+-- <VkDescriptorMappingSourceIndirectIndexEXT.html indirectIndexArray>.
+--
+-- If @source@ is 'DESCRIPTOR_MAPPING_SOURCE_RESOURCE_HEAP_DATA_EXT', the
+-- resource will be backed by heap data as specified by
+-- <VkDescriptorMappingSourceHeapDataEXT.html heapData>.
+--
+-- If @source@ is 'DESCRIPTOR_MAPPING_SOURCE_PUSH_DATA_EXT', the resource
+-- will be backed by push data at a range from @pushDataOffset@ to the size
+-- of the resource, allowing a uniform buffer to be backed by push data
+-- access push data. Accessing data in the uniform buffer at an offset of
+-- shaderOffset in the shader will access push data at an offset equal to
+--
+-- -   offset = shaderOffset + pushDataOffset.
+--
+-- If @source@ is 'DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT', the
+-- resource will be backed by data pointed to by a device address in push
+-- data at an offset of @pushAddressOffset@. Accessing data via the mapped
+-- resource in the shader will access data backing the address specified in
+-- push data:
+--
+-- -   address = ((VkDeviceAddress*)pPushData)[pushAddressOffset\/8]
+--
+-- where pPushData is the total set of push data specified by
+-- 'cmdPushDataEXT'. If the shader resource is an acceleration structure,
+-- the address /must/ be a valid acceleration structure address.
+--
+-- If @source@ is 'DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT', the
+-- resource will be backed by heap data as specified by
+-- <VkDescriptorMappingSourceIndirectAddressEXT.html indirectAddress>.
+--
+-- Accesses to resources using mappings to anything that is not a
+-- descriptor in a heap are not subject to robustness guarantees; resources
+-- for such mappings must not be accessed out of bounds.
+--
+-- If @source@ is
+-- 'DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT', the
+-- resource will be backed by heap data as specified by
+-- <VkDescriptorMappingSourceShaderRecordIndexEXT.html shaderRecordIndex>.
+--
+-- If @source@ is 'DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_DATA_EXT', the
+-- resource will be backed by shader record data at a range from
+-- @shaderRecordDataOffset@ to the size of the resource, allowing a uniform
+-- buffer to be used as a way to access shader record data. Accessing data
+-- in the uniform buffer at an offset shaderOffset in the shader will
+-- access shader record data at an offset equal to
+--
+-- -   offset = shaderOffset + shaderRecordDataOffset.
+--
+-- If @source@ is 'DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+-- the resource will be backed by data pointed to by a device address in
+-- the shader record at @shaderRecordAddressOffset@. Accessing data via the
+-- mapped resource in the shader will access data backing the address
+-- specified in shader record data:
+--
+-- -   address =
+--     ((VkDeviceAddress*)pShaderRecordData)[shaderRecordAddressOffset\/8]
+--
+-- where pShaderRecord is the memory associated with a given shader as its
+-- shader record. If the shader resource is an acceleration structure, the
+-- address /must/ be a valid acceleration structure address.
+--
+-- Accesses to resources using
+-- 'DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT' mappings are not
+-- subject to robustness guarantees; data must not be accessed outside of
+-- the allocated memory range.
+--
+-- Mappings must be declared for all variables with a
+-- 'Vulkan.Core10.Handles.DescriptorSet' and @Binding@ in the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-resources shader resource interface>.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkDescriptorSetAndBindingMappingEXT-source-11245# If @source@
+--     is 'DESCRIPTOR_MAPPING_SOURCE_PUSH_DATA_EXT',
+--     'DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT', or
+--     'DESCRIPTOR_MAPPING_SOURCE_RESOURCE_HEAP_DATA_EXT', @bindingCount@
+--     /must/ be 1
+--
+-- -   #VUID-VkDescriptorSetAndBindingMappingEXT-source-11246# If @source@
+--     is 'DESCRIPTOR_MAPPING_SOURCE_PUSH_DATA_EXT',
+--     @sourceData.pushDataOffset@ /must/ be a multiple of 4
+--
+-- -   #VUID-VkDescriptorSetAndBindingMappingEXT-source-11247# If @source@
+--     is 'DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     @sourceData.pushAddressOffset@ /must/ be a multiple of 8
+--
+-- -   #VUID-VkDescriptorSetAndBindingMappingEXT-source-11248# If @source@
+--     is 'DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_DATA_EXT' or
+--     'DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     @bindingCount@ /must/ be 1
+--
+-- -   #VUID-VkDescriptorSetAndBindingMappingEXT-source-11249# If @source@
+--     is 'DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_DATA_EXT',
+--     @sourceData.shaderRecordDataOffset@ /must/ be a multiple of 4
+--
+-- -   #VUID-VkDescriptorSetAndBindingMappingEXT-source-11250# If @source@
+--     is 'DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     @sourceData.shaderRecordAddressOffset@ /must/ be a multiple of 8
+--
+-- -   #VUID-VkDescriptorSetAndBindingMappingEXT-source-11251# If @source@
+--     is 'DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_CONSTANT_OFFSET_EXT',
+--     'DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     'DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT', or
+--     'DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT', and
+--     @descriptorSet@, @firstBinding@, and @bindingCount@ identify any
+--     @OpTypeImage@ variables, any @heapOffset@, and @heapArrayStride@
+--     members of the corresponding member of @sourceData@ /must/ be 0 or a
+--     multiple of
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-imageDescriptorAlignment imageDescriptorAlignment>
+--
+-- -   #VUID-VkDescriptorSetAndBindingMappingEXT-source-11252# If @source@
+--     is 'DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_CONSTANT_OFFSET_EXT',
+--     'DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     'DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT', or
+--     'DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT', and
+--     @descriptorSet@, @firstBinding@, and @bindingCount@ identify any
+--     @OpTypeStruct@ variables, any @heapOffset@, and @heapArrayStride@
+--     members of the corresponding member of @sourceData@ /must/ be 0 or a
+--     multiple of
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-bufferDescriptorAlignment bufferDescriptorAlignment>
+--
+-- -   #VUID-VkDescriptorSetAndBindingMappingEXT-source-11253# If @source@
+--     is 'DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_CONSTANT_OFFSET_EXT',
+--     'DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     'DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT', or
+--     'DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT', and
+--     @descriptorSet@, @firstBinding@, and @bindingCount@ identify any
+--     @OpTypeSampler@ variables, any @heapOffset@ and @heapArrayStride@
+--     members of the corresponding member of @sourceData@ /must/ be 0 or a
+--     multiple of
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-samplerDescriptorAlignment samplerDescriptorAlignment>
+--
+-- -   #VUID-VkDescriptorSetAndBindingMappingEXT-source-11254# If @source@
+--     is 'DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_CONSTANT_OFFSET_EXT',
+--     'DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     'DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT', or
+--     'DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT', and
+--     @descriptorSet@, @firstBinding@, and @bindingCount@ identify any
+--     @OpTypeSampledImage@ variables, any @samplerHeapOffset@ and
+--     @samplerHeapArrayStride@ members of the corresponding member of
+--     @sourceData@ /must/ be 0 or a multiple of
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-samplerDescriptorAlignment samplerDescriptorAlignment>
+--
+-- -   #VUID-VkDescriptorSetAndBindingMappingEXT-source-12406# If @source@
+--     is 'DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_CONSTANT_OFFSET_EXT',
+--     'DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     'DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT', or
+--     'DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT', and
+--     @descriptorSet@, @firstBinding@, and @bindingCount@ identify any
+--     @OpTypeSampledImage@ variables, any @heapOffset@ and
+--     @heapArrayStride@ members of the corresponding member of
+--     @sourceData@ /must/ be 0 or a multiple of
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-imageDescriptorAlignment imageDescriptorAlignment>
+--
+-- -   #VUID-VkDescriptorSetAndBindingMappingEXT-source-11356# If @source@
+--     is 'DESCRIPTOR_MAPPING_SOURCE_RESOURCE_HEAP_DATA_EXT',
+--     'DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_DATA_EXT', or
+--     'DESCRIPTOR_MAPPING_SOURCE_PUSH_DATA_EXT', @resourceMask@ /must/
+--     include 'SPIRV_RESOURCE_TYPE_UNIFORM_BUFFER_BIT_EXT'
+--
+-- -   #VUID-VkDescriptorSetAndBindingMappingEXT-source-11357# If @source@
+--     is 'DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT' or
+--     'DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT', @resourceMask@ /must/
+--     include at least one of
+--     'SPIRV_RESOURCE_TYPE_UNIFORM_BUFFER_BIT_EXT',
+--     'SPIRV_RESOURCE_TYPE_READ_ONLY_STORAGE_BUFFER_BIT_EXT',
+--     'SPIRV_RESOURCE_TYPE_READ_WRITE_STORAGE_BUFFER_BIT_EXT', or
+--     'SPIRV_RESOURCE_TYPE_ACCELERATION_STRUCTURE_BIT_EXT'
+--
+-- -   #VUID-VkDescriptorSetAndBindingMappingEXT-source-11358# If @source@
+--     is 'DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT', or
+--     'DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     'DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT', and
+--     the mapping sets @useCombinedImageSamplerIndex@ to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', @resourceMask@ /must/ include
+--     at least one of
+--     'SPIRV_RESOURCE_TYPE_COMBINED_SAMPLED_IMAGE_BIT_EXT',
+--     'SPIRV_RESOURCE_TYPE_SAMPLED_IMAGE_BIT_EXT', or
+--     'SPIRV_RESOURCE_TYPE_SAMPLER_BIT_EXT'
+--
+-- -   #VUID-VkDescriptorSetAndBindingMappingEXT-source-11389# If @source@
+--     is 'DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_CONSTANT_OFFSET_EXT',
+--     'DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT', or
+--     'DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT', and
+--     @bindingCount@ is not @1@, the @pEmbeddedSampler@ member of the
+--     corresponding mapping structure /must/ be @NULL@
+--
+-- -   #VUID-VkDescriptorSetAndBindingMappingEXT-source-11390# If @source@
+--     is 'DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_CONSTANT_OFFSET_EXT',
+--     'DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT', or
+--     'DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT', and
+--     @descriptorSet@, @firstBinding@, and @bindingCount@ identify any
+--     @OpTypeTensorARM@ variables, the @heapOffset@, and @heapArrayStride@
+--     members of the corresponding member of @sourceData@ /must/ be 0 or a
+--     multiple of
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-tensorDescriptorAlignment tensorDescriptorAlignment>
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkDescriptorSetAndBindingMappingEXT-sType-sType# @sType@
+--     /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DESCRIPTOR_SET_AND_BINDING_MAPPING_EXT'
+--
+-- -   #VUID-VkDescriptorSetAndBindingMappingEXT-pNext-pNext# @pNext@
+--     /must/ be @NULL@ or a pointer to a valid instance of
+--     'Vulkan.Extensions.VK_NV_push_constant_bank.PushConstantBankInfoNV'
+--
+-- -   #VUID-VkDescriptorSetAndBindingMappingEXT-sType-unique# The @sType@
+--     value of each structure in the @pNext@ chain /must/ be unique
+--
+-- -   #VUID-VkDescriptorSetAndBindingMappingEXT-resourceMask-parameter#
+--     @resourceMask@ /must/ be a valid combination of
+--     'SpirvResourceTypeFlagBitsEXT' values
+--
+-- -   #VUID-VkDescriptorSetAndBindingMappingEXT-resourceMask-requiredbitmask#
+--     @resourceMask@ /must/ not be @0@
+--
+-- -   #VUID-VkDescriptorSetAndBindingMappingEXT-source-parameter# @source@
+--     /must/ be a valid 'DescriptorMappingSourceEXT' value
+--
+-- -   #VUID-VkDescriptorSetAndBindingMappingEXT-constantOffset-parameter#
+--     If @source@ is
+--     'DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_CONSTANT_OFFSET_EXT', the
+--     @constantOffset@ member of @sourceData@ /must/ be a valid
+--     'DescriptorMappingSourceConstantOffsetEXT' structure
+--
+-- -   #VUID-VkDescriptorSetAndBindingMappingEXT-pushIndex-parameter# If
+--     @source@ is 'DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     the @pushIndex@ member of @sourceData@ /must/ be a valid
+--     'DescriptorMappingSourcePushIndexEXT' structure
+--
+-- -   #VUID-VkDescriptorSetAndBindingMappingEXT-indirectIndex-parameter#
+--     If @source@ is
+--     'DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT', the
+--     @indirectIndex@ member of @sourceData@ /must/ be a valid
+--     'DescriptorMappingSourceIndirectIndexEXT' structure
+--
+-- -   #VUID-VkDescriptorSetAndBindingMappingEXT-indirectIndexArray-parameter#
+--     If @source@ is
+--     'DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT', the
+--     @indirectIndexArray@ member of @sourceData@ /must/ be a valid
+--     'DescriptorMappingSourceIndirectIndexArrayEXT' structure
+--
+-- -   #VUID-VkDescriptorSetAndBindingMappingEXT-shaderRecordIndex-parameter#
+--     If @source@ is
+--     'DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT', the
+--     @shaderRecordIndex@ member of @sourceData@ /must/ be a valid
+--     'DescriptorMappingSourceShaderRecordIndexEXT' structure
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_heap VK_EXT_descriptor_heap>,
+-- 'DescriptorMappingSourceDataEXT', 'DescriptorMappingSourceEXT',
+-- 'ShaderDescriptorSetAndBindingMappingInfoEXT',
+-- 'SpirvResourceTypeFlagsEXT',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data DescriptorSetAndBindingMappingEXT (es :: [Type]) = DescriptorSetAndBindingMappingEXT
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
+    next :: Chain es
+  , -- | @descriptorSet@ is the value of 'Vulkan.Core10.Handles.DescriptorSet'
+    -- for resources that this mapping affects.
+    descriptorSet :: Word32
+  , -- | @firstBinding@ is the first value of @Binding@ of resources that this
+    -- mapping affects.
+    firstBinding :: Word32
+  , -- | @bindingCount@ is the number of consecutive @Binding@ values of
+    -- resources that this mapping affects.
+    bindingCount :: Word32
+  , -- | @resourceMask@ is a mask of 'SpirvResourceTypeFlagBitsEXT' values
+    -- indicating which resource types are specified by this mapping.
+    resourceMask :: SpirvResourceTypeFlagsEXT
+  , -- | @source@ is a 'DescriptorMappingSourceEXT' value specifying the method
+    -- of mapping specified for the affected resources.
+    source :: DescriptorMappingSourceEXT
+  , -- | @sourceData@ is a 'DescriptorMappingSourceDataEXT' that provides the
+    -- details of how each mapping is specified according to @source@.
+    sourceData :: DescriptorMappingSourceDataEXT
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (DescriptorSetAndBindingMappingEXT (es :: [Type]))
+#endif
+deriving instance Show (Chain es) => Show (DescriptorSetAndBindingMappingEXT es)
+
+instance Extensible DescriptorSetAndBindingMappingEXT where
+  extensibleTypeName = "DescriptorSetAndBindingMappingEXT"
+  setNext DescriptorSetAndBindingMappingEXT{..} next' = DescriptorSetAndBindingMappingEXT{next = next', ..}
+  getNext DescriptorSetAndBindingMappingEXT{..} = next
+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends DescriptorSetAndBindingMappingEXT e => b) -> Maybe b
+  extends _ f
+    | Just Refl <- eqT @e @PushConstantBankInfoNV = Just f
+    | otherwise = Nothing
+
+instance ( Extendss DescriptorSetAndBindingMappingEXT es
+         , PokeChain es ) => ToCStruct (DescriptorSetAndBindingMappingEXT es) where
+  withCStruct x f = allocaBytes 96 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p DescriptorSetAndBindingMappingEXT{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DESCRIPTOR_SET_AND_BINDING_MAPPING_EXT)
+    pNext'' <- fmap castPtr . ContT $ withChain (next)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
+    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) (descriptorSet)
+    lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) (firstBinding)
+    lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) (bindingCount)
+    lift $ poke ((p `plusPtr` 28 :: Ptr SpirvResourceTypeFlagsEXT)) (resourceMask)
+    lift $ poke ((p `plusPtr` 32 :: Ptr DescriptorMappingSourceEXT)) (source)
+    ContT $ pokeCStruct ((p `plusPtr` 40 :: Ptr DescriptorMappingSourceDataEXT)) (sourceData) . ($ ())
+    lift $ f
+  cStructSize = 96
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DESCRIPTOR_SET_AND_BINDING_MAPPING_EXT)
+    pNext' <- fmap castPtr . ContT $ withZeroChain @es
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
+    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
+    lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)
+    lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)
+    lift $ poke ((p `plusPtr` 28 :: Ptr SpirvResourceTypeFlagsEXT)) (zero)
+    lift $ poke ((p `plusPtr` 32 :: Ptr DescriptorMappingSourceEXT)) (zero)
+    ContT $ pokeCStruct ((p `plusPtr` 40 :: Ptr DescriptorMappingSourceDataEXT)) (zero) . ($ ())
+    lift $ f
+
+instance es ~ '[] => Zero (DescriptorSetAndBindingMappingEXT es) where
+  zero = DescriptorSetAndBindingMappingEXT
+           ()
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkShaderDescriptorSetAndBindingMappingInfoEXT - Structure specifying
+-- mappings from shader resources to descriptor heaps
+--
+-- = Description
+--
+-- Including this structure in the @pNext@ chain of
+-- 'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo' will set
+-- mappings for the shader defined by that structure. Similarly, including
+-- this structure in the @pNext@ chain of a
+-- 'Vulkan.Extensions.VK_EXT_shader_object.ShaderCreateInfoEXT' with a
+-- @codeType@ of
+-- 'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CODE_TYPE_SPIRV_EXT',
+-- will set mappings for that shader.
+--
+-- If this structure is not present, it is equivalent to setting
+-- @mappingCount@ to 0.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkShaderDescriptorSetAndBindingMappingInfoEXT-pMappings-11244#
+--     Any two elements of @pMappings@ /must/ not have the same value of
+--     @descriptorSet@, an overlapping range specified by @firstBinding@
+--     and @bindingCount@, and any overlapping bits in @resourceMask@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkShaderDescriptorSetAndBindingMappingInfoEXT-sType-sType#
+--     @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SHADER_DESCRIPTOR_SET_AND_BINDING_MAPPING_INFO_EXT'
+--
+-- -   #VUID-VkShaderDescriptorSetAndBindingMappingInfoEXT-pMappings-parameter#
+--     If @mappingCount@ is not @0@, @pMappings@ /must/ be a valid pointer
+--     to an array of @mappingCount@ valid
+--     'DescriptorSetAndBindingMappingEXT' structures
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo'
+--
+--     -   'Vulkan.Extensions.VK_EXT_shader_object.ShaderCreateInfoEXT'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_heap VK_EXT_descriptor_heap>,
+-- 'DescriptorSetAndBindingMappingEXT',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data ShaderDescriptorSetAndBindingMappingInfoEXT = ShaderDescriptorSetAndBindingMappingInfoEXT
+  { -- | @pMappings@ is a pointer to an array of
+    -- 'DescriptorSetAndBindingMappingEXT' structures specifying mappings for a
+    -- set of descriptors
+    mappings :: Vector (SomeStruct DescriptorSetAndBindingMappingEXT) }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (ShaderDescriptorSetAndBindingMappingInfoEXT)
+#endif
+deriving instance Show ShaderDescriptorSetAndBindingMappingInfoEXT
+
+instance ToCStruct ShaderDescriptorSetAndBindingMappingInfoEXT where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p ShaderDescriptorSetAndBindingMappingInfoEXT{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SHADER_DESCRIPTOR_SET_AND_BINDING_MAPPING_INFO_EXT)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (mappings)) :: Word32))
+    pPMappings' <- ContT $ allocaBytes @(DescriptorSetAndBindingMappingEXT _) ((Data.Vector.length (mappings)) * 96)
+    Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPMappings' `plusPtr` (96 * (i)) :: Ptr (DescriptorSetAndBindingMappingEXT _))) (e) . ($ ())) (mappings)
+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr (DescriptorSetAndBindingMappingEXT _)))) (pPMappings')
+    lift $ f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SHADER_DESCRIPTOR_SET_AND_BINDING_MAPPING_INFO_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    f
+
+instance Zero ShaderDescriptorSetAndBindingMappingInfoEXT where
+  zero = ShaderDescriptorSetAndBindingMappingInfoEXT
+           mempty
+
+
+-- | VkSamplerCustomBorderColorIndexCreateInfoEXT - Structure specifying the
+-- custom border color index for a sampler
+--
+-- = Description
+--
+-- If this structure is included in the @pNext@ chain of
+-- 'Vulkan.Core10.Sampler.SamplerCreateInfo', the value of @index@ will be
+-- used for the custom border color registration. @index@ does not need to
+-- be registered at the point that a sampler object is created or a sampler
+-- descriptor is written; as long as it is registered when any use of the
+-- sampler is recorded to a command, and remains registered while the
+-- sampler is in use. The color registered with the index and the color
+-- specified in the sampler /must/ be identically defined.
+--
+-- If this structure is not provided when creating a sampler object with a
+-- custom border color, it is equivalent to registering a new custom border
+-- color by calling 'registerCustomBorderColorEXT' with that custom border
+-- color value, and using that value as @index@ in this structure. This
+-- implicit registration will be implicitly unregistered when the sampler
+-- is destroyed.
+--
+-- If this structure is not provided when creating a sampler object without
+-- a custom border color, it is equivalent to setting @index@ to 0.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.Sampler.SamplerCreateInfo'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_custom_border_color VK_EXT_custom_border_color>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_heap VK_EXT_descriptor_heap>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data SamplerCustomBorderColorIndexCreateInfoEXT = SamplerCustomBorderColorIndexCreateInfoEXT
+  { -- | @index@ is the @uint32_t@ index value to use with the sampler
+    --
+    -- #VUID-VkSamplerCustomBorderColorIndexCreateInfoEXT-index-11289# @index@
+    -- /must/ be less than
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxCustomBorderColorSamplers maxCustomBorderColorSamplers>
+    index :: Word32 }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (SamplerCustomBorderColorIndexCreateInfoEXT)
+#endif
+deriving instance Show SamplerCustomBorderColorIndexCreateInfoEXT
+
+instance ToCStruct SamplerCustomBorderColorIndexCreateInfoEXT where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p SamplerCustomBorderColorIndexCreateInfoEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_INDEX_CREATE_INFO_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (index)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_INDEX_CREATE_INFO_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct SamplerCustomBorderColorIndexCreateInfoEXT where
+  peekCStruct p = do
+    index <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    pure $ SamplerCustomBorderColorIndexCreateInfoEXT
+             index
+
+instance Storable SamplerCustomBorderColorIndexCreateInfoEXT where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero SamplerCustomBorderColorIndexCreateInfoEXT where
+  zero = SamplerCustomBorderColorIndexCreateInfoEXT
+           zero
+
+
+-- | VkOpaqueCaptureDataCreateInfoEXT - Structure specifying opaque capture
+-- data
+--
+-- = Description
+--
+-- When an image is created with
+-- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_DESCRIPTOR_HEAP_CAPTURE_REPLAY_BIT_EXT'
+-- set in 'Vulkan.Core10.Image.ImageCreateInfo'::@flags@, if the @pNext@
+-- chain of 'Vulkan.Core10.Image.ImageCreateInfo' includes this structure,
+-- and @pData@ is not @NULL@, the implementation will attempt to recreate
+-- the image such that descriptors written with
+-- 'writeResourceDescriptorsEXT' will be reproduced with the same bit
+-- pattern as during capture if possible. If the implementation is unable
+-- to recreate the image based on this data, image creation will fail and
+-- return
+-- 'Vulkan.Core10.Enums.Result.ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS'.
+--
+-- When a tensor is created with
+-- 'Vulkan.Extensions.VK_ARM_tensors.TENSOR_CREATE_DESCRIPTOR_HEAP_CAPTURE_REPLAY_BIT_ARM'
+-- set in 'Vulkan.Extensions.VK_ARM_tensors.TensorCreateInfoARM'::@flags@,
+-- if the @pNext@ chain of
+-- 'Vulkan.Extensions.VK_ARM_tensors.TensorCreateInfoARM' includes this
+-- structure, and @pData@ is not @NULL@, the implementation will attempt to
+-- recreate the tensor such that descriptors written with
+-- 'writeResourceDescriptorsEXT' will be reproduced with the same bit
+-- pattern as during capture if possible. If the implementation is unable
+-- to recreate the tensor based on this data, tensor creation will fail and
+-- return
+-- 'Vulkan.Core10.Enums.Result.ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS'.
+--
+-- If this structure is not present, it is equivalent to setting @pData@ to
+-- @NULL@.
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkOpaqueCaptureDataCreateInfoEXT-sType-sType# @sType@ /must/
+--     be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_OPAQUE_CAPTURE_DATA_CREATE_INFO_EXT'
+--
+-- -   #VUID-VkOpaqueCaptureDataCreateInfoEXT-pData-parameter# If @pData@
+--     is not @NULL@, @pData@ /must/ be a valid pointer to a valid
+--     'HostAddressRangeConstEXT' structure
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Image.ImageCreateInfo'
+--
+--     -   'Vulkan.Extensions.VK_ARM_tensors.TensorCreateInfoARM'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_heap VK_EXT_descriptor_heap>,
+-- 'HostAddressRangeConstEXT',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data OpaqueCaptureDataCreateInfoEXT = OpaqueCaptureDataCreateInfoEXT
+  { -- | @pData@ is a pointer to the range of host memory containing opaque data
+    -- previously captured via 'getImageOpaqueCaptureDataEXT'.
+    data' :: Maybe HostAddressRangeConstEXT }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (OpaqueCaptureDataCreateInfoEXT)
+#endif
+deriving instance Show OpaqueCaptureDataCreateInfoEXT
+
+instance ToCStruct OpaqueCaptureDataCreateInfoEXT where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p OpaqueCaptureDataCreateInfoEXT{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_OPAQUE_CAPTURE_DATA_CREATE_INFO_EXT)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    pData'' <- case (data') of
+      Nothing -> pure nullPtr
+      Just j -> ContT $ withCStruct (j)
+    lift $ poke ((p `plusPtr` 16 :: Ptr (Ptr HostAddressRangeConstEXT))) pData''
+    lift $ f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_OPAQUE_CAPTURE_DATA_CREATE_INFO_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    f
+
+instance FromCStruct OpaqueCaptureDataCreateInfoEXT where
+  peekCStruct p = do
+    pData <- peek @(Ptr HostAddressRangeConstEXT) ((p `plusPtr` 16 :: Ptr (Ptr HostAddressRangeConstEXT)))
+    pData' <- maybePeek (\j -> peekCStruct @HostAddressRangeConstEXT (j)) pData
+    pure $ OpaqueCaptureDataCreateInfoEXT
+             pData'
+
+instance Zero OpaqueCaptureDataCreateInfoEXT where
+  zero = OpaqueCaptureDataCreateInfoEXT
+           Nothing
+
+
+-- | VkIndirectCommandsLayoutPushDataTokenNV - Struct specifying the details
+-- of an indirect push data command layout token
+--
+-- = Description
+--
+-- If this structure is in the @pNext@ chain of
+-- 'Vulkan.Extensions.VK_NV_device_generated_commands.IndirectCommandsLayoutTokenNV',
+-- and
+-- 'Vulkan.Extensions.VK_NV_device_generated_commands.IndirectCommandsLayoutTokenNV'::@tokenType@
+-- is set to
+-- 'Vulkan.Extensions.VK_NV_device_generated_commands.INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_DATA_NV',
+-- this structure defines a push data command layout token.
+--
+-- If this structure is not provided, it is equivalent to setting
+-- @pushDataOffset@ and @pushDataSize@ to 0.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkIndirectCommandsLayoutPushDataTokenNV-pushDataOffset-11335#
+--     The sum of @pushDataOffset@ and @pushDataSize@ /must/ be less than
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxPushDataSize maxPushDataSize>
+--
+-- -   #VUID-VkIndirectCommandsLayoutPushDataTokenNV-pushDataOffset-11420#
+--     @pushDataOffset@ /must/ be a multiple of 4
+--
+-- -   #VUID-VkIndirectCommandsLayoutPushDataTokenNV-pushDataSize-11421#
+--     @pushDataSize@ /must/ be a multiple of 4
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkIndirectCommandsLayoutPushDataTokenNV-sType-sType# @sType@
+--     /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_PUSH_DATA_TOKEN_NV'
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Extensions.VK_NV_device_generated_commands.IndirectCommandsLayoutTokenNV'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_heap VK_EXT_descriptor_heap>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_generated_commands VK_NV_device_generated_commands>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data IndirectCommandsLayoutPushDataTokenNV = IndirectCommandsLayoutPushDataTokenNV
+  { -- | @pushDataOffset@ is the offset used for the push data command.
+    pushDataOffset :: Word32
+  , -- | @pushDataSize@ is the size used for the push data command.
+    pushDataSize :: Word32
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (IndirectCommandsLayoutPushDataTokenNV)
+#endif
+deriving instance Show IndirectCommandsLayoutPushDataTokenNV
+
+instance ToCStruct IndirectCommandsLayoutPushDataTokenNV where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p IndirectCommandsLayoutPushDataTokenNV{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_PUSH_DATA_TOKEN_NV)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (pushDataOffset)
+    poke ((p `plusPtr` 20 :: Ptr Word32)) (pushDataSize)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_PUSH_DATA_TOKEN_NV)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct IndirectCommandsLayoutPushDataTokenNV where
+  peekCStruct p = do
+    pushDataOffset <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    pushDataSize <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
+    pure $ IndirectCommandsLayoutPushDataTokenNV
+             pushDataOffset pushDataSize
+
+instance Storable IndirectCommandsLayoutPushDataTokenNV where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero IndirectCommandsLayoutPushDataTokenNV where
+  zero = IndirectCommandsLayoutPushDataTokenNV
+           zero
+           zero
+
+
+-- | VkSubsampledImageFormatPropertiesEXT - Structure specifying image
+-- descriptor count for subsampled images
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.ImageFormatProperties2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_heap VK_EXT_descriptor_heap>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_fragment_density_map VK_EXT_fragment_density_map>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data SubsampledImageFormatPropertiesEXT = SubsampledImageFormatPropertiesEXT
+  { -- | @subsampledImageDescriptorCount@ is the number of image descriptors that
+    -- the implementation uses to access the image.
+    subsampledImageDescriptorCount :: Word32 }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (SubsampledImageFormatPropertiesEXT)
+#endif
+deriving instance Show SubsampledImageFormatPropertiesEXT
+
+instance ToCStruct SubsampledImageFormatPropertiesEXT where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p SubsampledImageFormatPropertiesEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SUBSAMPLED_IMAGE_FORMAT_PROPERTIES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (subsampledImageDescriptorCount)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SUBSAMPLED_IMAGE_FORMAT_PROPERTIES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct SubsampledImageFormatPropertiesEXT where
+  peekCStruct p = do
+    subsampledImageDescriptorCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    pure $ SubsampledImageFormatPropertiesEXT
+             subsampledImageDescriptorCount
+
+instance Storable SubsampledImageFormatPropertiesEXT where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero SubsampledImageFormatPropertiesEXT where
+  zero = SubsampledImageFormatPropertiesEXT
+           zero
+
+
+-- | VkPhysicalDeviceDescriptorHeapFeaturesEXT - Structure describing support
+-- for descriptor heaps
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceDescriptorHeapFeaturesEXT' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceDescriptorHeapFeaturesEXT', it /must/ add an instance of
+-- the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_heap VK_EXT_descriptor_heap>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceDescriptorHeapFeaturesEXT = PhysicalDeviceDescriptorHeapFeaturesEXT
+  { -- | #features-descriptorHeap# @descriptorHeap@ specifies whether
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptorheaps descriptor heaps>
+    -- /can/ be used.
+    descriptorHeap :: Bool
+  , -- | #features-descriptorHeapCaptureReplay# @descriptorHeapCaptureReplay@
+    -- specifies whether
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptorheaps-writing heap descriptors>
+    -- /can/ be captured and replayed.
+    descriptorHeapCaptureReplay :: Bool
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceDescriptorHeapFeaturesEXT)
+#endif
+deriving instance Show PhysicalDeviceDescriptorHeapFeaturesEXT
+
+instance ToCStruct PhysicalDeviceDescriptorHeapFeaturesEXT where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceDescriptorHeapFeaturesEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_HEAP_FEATURES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (descriptorHeap))
+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (descriptorHeapCaptureReplay))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_HEAP_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 PhysicalDeviceDescriptorHeapFeaturesEXT where
+  peekCStruct p = do
+    descriptorHeap <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    descriptorHeapCaptureReplay <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
+    pure $ PhysicalDeviceDescriptorHeapFeaturesEXT
+             (bool32ToBool descriptorHeap)
+             (bool32ToBool descriptorHeapCaptureReplay)
+
+instance Storable PhysicalDeviceDescriptorHeapFeaturesEXT where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceDescriptorHeapFeaturesEXT where
+  zero = PhysicalDeviceDescriptorHeapFeaturesEXT
+           zero
+           zero
+
+
+-- | VkPhysicalDeviceDescriptorHeapPropertiesEXT - Structure describing
+-- supported image alignments for a physical device
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceDescriptorHeapPropertiesEXT' 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.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_heap VK_EXT_descriptor_heap>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceDescriptorHeapPropertiesEXT = PhysicalDeviceDescriptorHeapPropertiesEXT
+  { -- | #limits-samplerHeapAlignment# @samplerHeapAlignment@ specifies the
+    -- required alignment of the @heapRange->address@ member of
+    -- 'BindHeapInfoEXT' for binding sampler heaps. It must be a power-of-two
+    -- value.
+    samplerHeapAlignment :: DeviceSize
+  , -- | #limits-resourceHeapAlignment# @resourceHeapAlignment@ specifies the
+    -- required alignment of the @heapRange->address@ member of
+    -- 'BindHeapInfoEXT' for binding resource heaps. It must be a power-of-two
+    -- value.
+    resourceHeapAlignment :: DeviceSize
+  , -- | #limits-maxSamplerHeapSize# @maxSamplerHeapSize@ describes maximum value
+    -- of the @size@ member of
+    -- 'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+    -- for binding sampler heaps, including the reservation, when embedded
+    -- samplers are used.
+    maxSamplerHeapSize :: DeviceSize
+  , -- | #limits-maxResourceHeapSize# @maxResourceHeapSize@ describes maximum
+    -- value of the @size@ member of
+    -- 'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+    -- for binding resource heaps, including the reservation.
+    maxResourceHeapSize :: DeviceSize
+  , -- | #limits-minSamplerHeapReservedRange# @minSamplerHeapReservedRange@
+    -- specifies the minimum amount of data that the implementation needs to be
+    -- reserved within the bound sampler heap range when embedded samplers are
+    -- not used.
+    minSamplerHeapReservedRange :: DeviceSize
+  , -- | #limits-minSamplerHeapReservedRangeWithEmbedded#
+    -- @minSamplerHeapReservedRangeWithEmbedded@ specifies the minimum amount
+    -- of data that the implementation needs to be reserved within the bound
+    -- sampler heap range when embedded samplers are used.
+    minSamplerHeapReservedRangeWithEmbedded :: DeviceSize
+  , -- | #limits-minResourceHeapReservedRange# @minResourceHeapReservedRange@
+    -- specifies the minimum amount of data that the implementation needs to be
+    -- reserved within the bound resource heap range.
+    minResourceHeapReservedRange :: DeviceSize
+  , -- | #limits-samplerDescriptorSize# @samplerDescriptorSize@ specifies the
+    -- size of sampler descriptors written by 'writeSamplerDescriptorsEXT'. It
+    -- /must/ be a power-of-two value.
+    samplerDescriptorSize :: DeviceSize
+  , -- | #limits-imageDescriptorSize# @imageDescriptorSize@ specifies the maximum
+    -- size of image and texel buffer descriptors written by
+    -- 'writeResourceDescriptorsEXT'. It /must/ be a power-of-two value.
+    imageDescriptorSize :: DeviceSize
+  , -- | #limits-bufferDescriptorSize# @bufferDescriptorSize@ specifies the
+    -- maximum size of unformatted buffer descriptors or acceleration
+    -- structures written by 'writeResourceDescriptorsEXT'. It /must/ be a
+    -- power-of-two value.
+    bufferDescriptorSize :: DeviceSize
+  , -- | #limits-samplerDescriptorAlignment# @samplerDescriptorAlignment@
+    -- specifies the required alignment of sampler descriptors within a sampler
+    -- heap. It must be a power-of-two value, and less than or equal to
+    -- @samplerDescriptorSize@.
+    samplerDescriptorAlignment :: DeviceSize
+  , -- | #limits-imageDescriptorAlignment# @imageDescriptorAlignment@ specifies
+    -- the required alignment of image descriptors within a resource heap. It
+    -- must be a power-of-two value, and less than or equal to
+    -- @imageDescriptorSize@.
+    imageDescriptorAlignment :: DeviceSize
+  , -- | #limits-bufferDescriptorAlignment# @bufferDescriptorAlignment@ specifies
+    -- the required alignment of buffer descriptors within a resource heap. It
+    -- must be a power-of-two value, and less than or equal to
+    -- @bufferDescriptorSize@.
+    bufferDescriptorAlignment :: DeviceSize
+  , -- | #limits-maxPushDataSize# @maxPushDataSize@ specifies the maximum total
+    -- size of all push data.
+    maxPushDataSize :: DeviceSize
+  , -- | #limits-imageCaptureReplayOpaqueDataSize#
+    -- @imageCaptureReplayOpaqueDataSize@ specifies the size of the opaque
+    -- capture\/replay data for an image.
+    imageCaptureReplayOpaqueDataSize :: Word64
+  , -- | #limits-maxDescriptorHeapEmbeddedSamplers#
+    -- @maxDescriptorHeapEmbeddedSamplers@ specifies the maximum number of
+    -- unique embedded samplers across all pipelines.
+    maxDescriptorHeapEmbeddedSamplers :: Word32
+  , -- | #limits-samplerYcbcrConversionCount# @samplerYcbcrConversionCount@
+    -- specifies the number of sampler descriptors required for any sampler
+    -- using YCBCR conversion.
+    samplerYcbcrConversionCount :: Word32
+  , -- | #limits-sparseDescriptorHeaps# @sparseDescriptorHeaps@ specifies whether
+    -- descriptor heaps can be backed by sparse memory or not. If this value is
+    -- 'Vulkan.Core10.FundamentalTypes.FALSE', buffers cannot be specified as
+    -- both sparse and having descriptor heap usage.
+    sparseDescriptorHeaps :: Bool
+  , -- | #limits-protectedDescriptorHeaps# @protectedDescriptorHeaps@ specifies
+    -- whether descriptor heaps can be used with protected submissions or not.
+    -- If this value is 'Vulkan.Core10.FundamentalTypes.FALSE', buffers cannot
+    -- be specified as both protected and having descriptor heap usage.
+    protectedDescriptorHeaps :: Bool
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceDescriptorHeapPropertiesEXT)
+#endif
+deriving instance Show PhysicalDeviceDescriptorHeapPropertiesEXT
+
+instance ToCStruct PhysicalDeviceDescriptorHeapPropertiesEXT where
+  withCStruct x f = allocaBytes 152 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceDescriptorHeapPropertiesEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_HEAP_PROPERTIES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (samplerHeapAlignment)
+    poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (resourceHeapAlignment)
+    poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (maxSamplerHeapSize)
+    poke ((p `plusPtr` 40 :: Ptr DeviceSize)) (maxResourceHeapSize)
+    poke ((p `plusPtr` 48 :: Ptr DeviceSize)) (minSamplerHeapReservedRange)
+    poke ((p `plusPtr` 56 :: Ptr DeviceSize)) (minSamplerHeapReservedRangeWithEmbedded)
+    poke ((p `plusPtr` 64 :: Ptr DeviceSize)) (minResourceHeapReservedRange)
+    poke ((p `plusPtr` 72 :: Ptr DeviceSize)) (samplerDescriptorSize)
+    poke ((p `plusPtr` 80 :: Ptr DeviceSize)) (imageDescriptorSize)
+    poke ((p `plusPtr` 88 :: Ptr DeviceSize)) (bufferDescriptorSize)
+    poke ((p `plusPtr` 96 :: Ptr DeviceSize)) (samplerDescriptorAlignment)
+    poke ((p `plusPtr` 104 :: Ptr DeviceSize)) (imageDescriptorAlignment)
+    poke ((p `plusPtr` 112 :: Ptr DeviceSize)) (bufferDescriptorAlignment)
+    poke ((p `plusPtr` 120 :: Ptr DeviceSize)) (maxPushDataSize)
+    poke ((p `plusPtr` 128 :: Ptr CSize)) (CSize (imageCaptureReplayOpaqueDataSize))
+    poke ((p `plusPtr` 136 :: Ptr Word32)) (maxDescriptorHeapEmbeddedSamplers)
+    poke ((p `plusPtr` 140 :: Ptr Word32)) (samplerYcbcrConversionCount)
+    poke ((p `plusPtr` 144 :: Ptr Bool32)) (boolToBool32 (sparseDescriptorHeaps))
+    poke ((p `plusPtr` 148 :: Ptr Bool32)) (boolToBool32 (protectedDescriptorHeaps))
+    f
+  cStructSize = 152
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_HEAP_PROPERTIES_EXT)
+    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)
+    poke ((p `plusPtr` 40 :: Ptr DeviceSize)) (zero)
+    poke ((p `plusPtr` 48 :: Ptr DeviceSize)) (zero)
+    poke ((p `plusPtr` 56 :: Ptr DeviceSize)) (zero)
+    poke ((p `plusPtr` 64 :: Ptr DeviceSize)) (zero)
+    poke ((p `plusPtr` 72 :: Ptr DeviceSize)) (zero)
+    poke ((p `plusPtr` 80 :: Ptr DeviceSize)) (zero)
+    poke ((p `plusPtr` 88 :: Ptr DeviceSize)) (zero)
+    poke ((p `plusPtr` 96 :: Ptr DeviceSize)) (zero)
+    poke ((p `plusPtr` 104 :: Ptr DeviceSize)) (zero)
+    poke ((p `plusPtr` 112 :: Ptr DeviceSize)) (zero)
+    poke ((p `plusPtr` 120 :: Ptr DeviceSize)) (zero)
+    poke ((p `plusPtr` 128 :: Ptr CSize)) (CSize (zero))
+    poke ((p `plusPtr` 136 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 140 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 144 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 148 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceDescriptorHeapPropertiesEXT where
+  peekCStruct p = do
+    samplerHeapAlignment <- peek @DeviceSize ((p `plusPtr` 16 :: Ptr DeviceSize))
+    resourceHeapAlignment <- peek @DeviceSize ((p `plusPtr` 24 :: Ptr DeviceSize))
+    maxSamplerHeapSize <- peek @DeviceSize ((p `plusPtr` 32 :: Ptr DeviceSize))
+    maxResourceHeapSize <- peek @DeviceSize ((p `plusPtr` 40 :: Ptr DeviceSize))
+    minSamplerHeapReservedRange <- peek @DeviceSize ((p `plusPtr` 48 :: Ptr DeviceSize))
+    minSamplerHeapReservedRangeWithEmbedded <- peek @DeviceSize ((p `plusPtr` 56 :: Ptr DeviceSize))
+    minResourceHeapReservedRange <- peek @DeviceSize ((p `plusPtr` 64 :: Ptr DeviceSize))
+    samplerDescriptorSize <- peek @DeviceSize ((p `plusPtr` 72 :: Ptr DeviceSize))
+    imageDescriptorSize <- peek @DeviceSize ((p `plusPtr` 80 :: Ptr DeviceSize))
+    bufferDescriptorSize <- peek @DeviceSize ((p `plusPtr` 88 :: Ptr DeviceSize))
+    samplerDescriptorAlignment <- peek @DeviceSize ((p `plusPtr` 96 :: Ptr DeviceSize))
+    imageDescriptorAlignment <- peek @DeviceSize ((p `plusPtr` 104 :: Ptr DeviceSize))
+    bufferDescriptorAlignment <- peek @DeviceSize ((p `plusPtr` 112 :: Ptr DeviceSize))
+    maxPushDataSize <- peek @DeviceSize ((p `plusPtr` 120 :: Ptr DeviceSize))
+    imageCaptureReplayOpaqueDataSize <- peek @CSize ((p `plusPtr` 128 :: Ptr CSize))
+    maxDescriptorHeapEmbeddedSamplers <- peek @Word32 ((p `plusPtr` 136 :: Ptr Word32))
+    samplerYcbcrConversionCount <- peek @Word32 ((p `plusPtr` 140 :: Ptr Word32))
+    sparseDescriptorHeaps <- peek @Bool32 ((p `plusPtr` 144 :: Ptr Bool32))
+    protectedDescriptorHeaps <- peek @Bool32 ((p `plusPtr` 148 :: Ptr Bool32))
+    pure $ PhysicalDeviceDescriptorHeapPropertiesEXT
+             samplerHeapAlignment
+             resourceHeapAlignment
+             maxSamplerHeapSize
+             maxResourceHeapSize
+             minSamplerHeapReservedRange
+             minSamplerHeapReservedRangeWithEmbedded
+             minResourceHeapReservedRange
+             samplerDescriptorSize
+             imageDescriptorSize
+             bufferDescriptorSize
+             samplerDescriptorAlignment
+             imageDescriptorAlignment
+             bufferDescriptorAlignment
+             maxPushDataSize
+             (coerce @CSize @Word64 imageCaptureReplayOpaqueDataSize)
+             maxDescriptorHeapEmbeddedSamplers
+             samplerYcbcrConversionCount
+             (bool32ToBool sparseDescriptorHeaps)
+             (bool32ToBool protectedDescriptorHeaps)
+
+instance Storable PhysicalDeviceDescriptorHeapPropertiesEXT where
+  sizeOf ~_ = 152
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceDescriptorHeapPropertiesEXT where
+  zero = PhysicalDeviceDescriptorHeapPropertiesEXT
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkCommandBufferInheritanceDescriptorHeapInfoEXT - Structure specifying
+-- command buffer inheritance information
+--
+-- = Description
+--
+-- If this structure is not present, the behavior is as if
+-- @pSamplerHeapBindInfo@ and @pResourceHeapBindInfo@ were both @NULL@.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkCommandBufferInheritanceDescriptorHeapInfoEXT-descriptorHeap-11200#
+--     If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-descriptorHeap descriptorHeap>
+--     feature is not enabled, @pSamplerHeapBindInfo@ /must/ be @NULL@
+--
+-- -   #VUID-VkCommandBufferInheritanceDescriptorHeapInfoEXT-descriptorHeap-11201#
+--     If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-descriptorHeap descriptorHeap>
+--     feature is not enabled, @pResourceHeapBindInfo@ /must/ be @NULL@
+--
+-- -   #VUID-VkCommandBufferInheritanceDescriptorHeapInfoEXT-pSamplerHeapBindInfo-11470#
+--     If @pSamplerHeapBindInfo@ is not @NULL@,
+--     @pSamplerHeapBindInfo->heapRange@ /must/ be a device address range
+--     allocated to the application from a buffer created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_DESCRIPTOR_HEAP_BIT_EXT'
+--     usage flag set
+--
+-- -   #VUID-VkCommandBufferInheritanceDescriptorHeapInfoEXT-pResourceHeapBindInfo-11471#
+--     If @pResourceHeapBindInfo@ is not @NULL@,
+--     @pResourceHeapBindInfo->heapRange@ /must/ be a device address range
+--     allocated to the application from a buffer created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_DESCRIPTOR_HEAP_BIT_EXT'
+--     usage flag set
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkCommandBufferInheritanceDescriptorHeapInfoEXT-sType-sType#
+--     @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_DESCRIPTOR_HEAP_INFO_EXT'
+--
+-- -   #VUID-VkCommandBufferInheritanceDescriptorHeapInfoEXT-pSamplerHeapBindInfo-parameter#
+--     If @pSamplerHeapBindInfo@ is not @NULL@, @pSamplerHeapBindInfo@
+--     /must/ be a valid pointer to a valid 'BindHeapInfoEXT' structure
+--
+-- -   #VUID-VkCommandBufferInheritanceDescriptorHeapInfoEXT-pResourceHeapBindInfo-parameter#
+--     If @pResourceHeapBindInfo@ is not @NULL@, @pResourceHeapBindInfo@
+--     /must/ be a valid pointer to a valid 'BindHeapInfoEXT' structure
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_heap VK_EXT_descriptor_heap>,
+-- 'BindHeapInfoEXT', 'Vulkan.Core10.Enums.StructureType.StructureType'
+data CommandBufferInheritanceDescriptorHeapInfoEXT = CommandBufferInheritanceDescriptorHeapInfoEXT
+  { -- | @pSamplerHeapBindInfo@ specifies the 'BindHeapInfoEXT' of the sampler
+    -- heap bound using 'cmdBindSamplerHeapEXT' in the primary. If this is
+    -- @NULL@, it indicates that no sampler heap is bound.
+    samplerHeapBindInfo :: Maybe BindHeapInfoEXT
+  , -- | @pResourceHeapBindInfo@ specifies the 'BindHeapInfoEXT' of the resource
+    -- heap bound using 'cmdBindResourceHeapEXT' in the primary. If this is
+    -- @NULL@, it indicates that no resource heap is bound.
+    resourceHeapBindInfo :: Maybe BindHeapInfoEXT
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (CommandBufferInheritanceDescriptorHeapInfoEXT)
+#endif
+deriving instance Show CommandBufferInheritanceDescriptorHeapInfoEXT
+
+instance ToCStruct CommandBufferInheritanceDescriptorHeapInfoEXT where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p CommandBufferInheritanceDescriptorHeapInfoEXT{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_DESCRIPTOR_HEAP_INFO_EXT)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    pSamplerHeapBindInfo'' <- case (samplerHeapBindInfo) of
+      Nothing -> pure nullPtr
+      Just j -> ContT $ withCStruct (j)
+    lift $ poke ((p `plusPtr` 16 :: Ptr (Ptr BindHeapInfoEXT))) pSamplerHeapBindInfo''
+    pResourceHeapBindInfo'' <- case (resourceHeapBindInfo) of
+      Nothing -> pure nullPtr
+      Just j -> ContT $ withCStruct (j)
+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr BindHeapInfoEXT))) pResourceHeapBindInfo''
+    lift $ f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_DESCRIPTOR_HEAP_INFO_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    f
+
+instance FromCStruct CommandBufferInheritanceDescriptorHeapInfoEXT where
+  peekCStruct p = do
+    pSamplerHeapBindInfo <- peek @(Ptr BindHeapInfoEXT) ((p `plusPtr` 16 :: Ptr (Ptr BindHeapInfoEXT)))
+    pSamplerHeapBindInfo' <- maybePeek (\j -> peekCStruct @BindHeapInfoEXT (j)) pSamplerHeapBindInfo
+    pResourceHeapBindInfo <- peek @(Ptr BindHeapInfoEXT) ((p `plusPtr` 24 :: Ptr (Ptr BindHeapInfoEXT)))
+    pResourceHeapBindInfo' <- maybePeek (\j -> peekCStruct @BindHeapInfoEXT (j)) pResourceHeapBindInfo
+    pure $ CommandBufferInheritanceDescriptorHeapInfoEXT
+             pSamplerHeapBindInfo' pResourceHeapBindInfo'
+
+instance Zero CommandBufferInheritanceDescriptorHeapInfoEXT where
+  zero = CommandBufferInheritanceDescriptorHeapInfoEXT
+           Nothing
+           Nothing
+
+
+-- | VkPhysicalDeviceDescriptorHeapTensorPropertiesARM - Structure describing
+-- descriptor heap tensor properties supported by an implementation
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceDescriptorHeapTensorPropertiesARM' 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.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_tensors VK_ARM_tensors>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_heap VK_EXT_descriptor_heap>,
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceDescriptorHeapTensorPropertiesARM = PhysicalDeviceDescriptorHeapTensorPropertiesARM
+  { -- | #limits-tensorDescriptorSize# @tensorDescriptorSize@ specifies the
+    -- maximum size of tensor descriptors written by
+    -- 'writeResourceDescriptorsEXT'.
+    tensorDescriptorSize :: DeviceSize
+  , -- | #limits-tensorDescriptorAlignment# @tensorDescriptorAlignment@ specifies
+    -- the required alignment of tensor descriptors within a resource heap. It
+    -- must be a power-of-two value, and less than or equal to
+    -- @tensorDescriptorSize@.
+    tensorDescriptorAlignment :: DeviceSize
+  , -- | #limits-tensorCaptureReplayOpaqueDataSize#
+    -- @tensorCaptureReplayOpaqueDataSize@ specifies the size of the opaque
+    -- capture\/replay data for an tensor.
+    tensorCaptureReplayOpaqueDataSize :: Word64
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceDescriptorHeapTensorPropertiesARM)
+#endif
+deriving instance Show PhysicalDeviceDescriptorHeapTensorPropertiesARM
+
+instance ToCStruct PhysicalDeviceDescriptorHeapTensorPropertiesARM where
+  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceDescriptorHeapTensorPropertiesARM{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_HEAP_TENSOR_PROPERTIES_ARM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (tensorDescriptorSize)
+    poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (tensorDescriptorAlignment)
+    poke ((p `plusPtr` 32 :: Ptr CSize)) (CSize (tensorCaptureReplayOpaqueDataSize))
+    f
+  cStructSize = 40
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_HEAP_TENSOR_PROPERTIES_ARM)
+    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 CSize)) (CSize (zero))
+    f
+
+instance FromCStruct PhysicalDeviceDescriptorHeapTensorPropertiesARM where
+  peekCStruct p = do
+    tensorDescriptorSize <- peek @DeviceSize ((p `plusPtr` 16 :: Ptr DeviceSize))
+    tensorDescriptorAlignment <- peek @DeviceSize ((p `plusPtr` 24 :: Ptr DeviceSize))
+    tensorCaptureReplayOpaqueDataSize <- peek @CSize ((p `plusPtr` 32 :: Ptr CSize))
+    pure $ PhysicalDeviceDescriptorHeapTensorPropertiesARM
+             tensorDescriptorSize
+             tensorDescriptorAlignment
+             (coerce @CSize @Word64 tensorCaptureReplayOpaqueDataSize)
+
+instance Storable PhysicalDeviceDescriptorHeapTensorPropertiesARM where
+  sizeOf ~_ = 40
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceDescriptorHeapTensorPropertiesARM where
+  zero = PhysicalDeviceDescriptorHeapTensorPropertiesARM
+           zero
+           zero
+           zero
+
+
+data ResourceDescriptorDataEXT
+  = AnImage (Maybe ImageDescriptorInfoEXT)
+  | ATexelBuffer (Maybe TexelBufferDescriptorInfoEXT)
+  | AnAddressRange (Maybe DeviceAddressRangeEXT)
+  | ATensorARM (Maybe (SomeStruct TensorViewCreateInfoARM))
+  deriving (Show)
+
+instance ToCStruct ResourceDescriptorDataEXT where
+  withCStruct x f = allocaBytes 8 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct :: Ptr ResourceDescriptorDataEXT -> ResourceDescriptorDataEXT -> IO a -> IO a
+  pokeCStruct p = (. const) . runContT .  \case
+    AnImage v -> do
+      pImage <- case (v) of
+        Nothing -> pure nullPtr
+        Just j -> ContT $ withCStruct (j)
+      lift $ poke (castPtr @_ @(Ptr ImageDescriptorInfoEXT) p) pImage
+    ATexelBuffer v -> do
+      pTexelBuffer <- case (v) of
+        Nothing -> pure nullPtr
+        Just j -> ContT $ withCStruct (j)
+      lift $ poke (castPtr @_ @(Ptr TexelBufferDescriptorInfoEXT) p) pTexelBuffer
+    AnAddressRange v -> do
+      pAddressRange <- case (v) of
+        Nothing -> pure nullPtr
+        Just j -> ContT $ withCStruct (j)
+      lift $ poke (castPtr @_ @(Ptr DeviceAddressRangeEXT) p) pAddressRange
+    ATensorARM v -> do
+      pTensorARM <- case (v) of
+        Nothing -> pure nullPtr
+        Just j -> ContT @_ @_ @(Ptr (TensorViewCreateInfoARM '[])) $ \cont -> withSomeCStruct @TensorViewCreateInfoARM (j) (cont . castPtr)
+      lift $ poke (castPtr @_ @(Ptr (TensorViewCreateInfoARM _)) p) pTensorARM
+  pokeZeroCStruct :: Ptr ResourceDescriptorDataEXT -> IO b -> IO b
+  pokeZeroCStruct _ f = f
+  cStructSize = 8
+  cStructAlignment = 8
+
+instance Zero ResourceDescriptorDataEXT where
+  zero = AnImage Nothing
+
+
+data DescriptorMappingSourceDataEXT
+  = ConstantOffset DescriptorMappingSourceConstantOffsetEXT
+  | PushIndex DescriptorMappingSourcePushIndexEXT
+  | IndirectIndex DescriptorMappingSourceIndirectIndexEXT
+  | IndirectIndexArray DescriptorMappingSourceIndirectIndexArrayEXT
+  | HeapData DescriptorMappingSourceHeapDataEXT
+  | PushDataOffset Word32
+  | PushAddressOffset Word32
+  | IndirectAddress DescriptorMappingSourceIndirectAddressEXT
+  | ShaderRecordIndex DescriptorMappingSourceShaderRecordIndexEXT
+  | ShaderRecordDataOffset Word32
+  | ShaderRecordAddressOffset Word32
+  deriving (Show)
+
+instance ToCStruct DescriptorMappingSourceDataEXT where
+  withCStruct x f = allocaBytes 56 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct :: Ptr DescriptorMappingSourceDataEXT -> DescriptorMappingSourceDataEXT -> IO a -> IO a
+  pokeCStruct p = (. const) . runContT .  \case
+    ConstantOffset v -> ContT $ pokeCStruct (castPtr @_ @DescriptorMappingSourceConstantOffsetEXT p) (v) . ($ ())
+    PushIndex v -> ContT $ pokeCStruct (castPtr @_ @DescriptorMappingSourcePushIndexEXT p) (v) . ($ ())
+    IndirectIndex v -> ContT $ pokeCStruct (castPtr @_ @DescriptorMappingSourceIndirectIndexEXT p) (v) . ($ ())
+    IndirectIndexArray v -> ContT $ pokeCStruct (castPtr @_ @DescriptorMappingSourceIndirectIndexArrayEXT p) (v) . ($ ())
+    HeapData v -> lift $ poke (castPtr @_ @DescriptorMappingSourceHeapDataEXT p) (v)
+    PushDataOffset v -> lift $ poke (castPtr @_ @Word32 p) (v)
+    PushAddressOffset v -> lift $ poke (castPtr @_ @Word32 p) (v)
+    IndirectAddress v -> lift $ poke (castPtr @_ @DescriptorMappingSourceIndirectAddressEXT p) (v)
+    ShaderRecordIndex v -> ContT $ pokeCStruct (castPtr @_ @DescriptorMappingSourceShaderRecordIndexEXT p) (v) . ($ ())
+    ShaderRecordDataOffset v -> lift $ poke (castPtr @_ @Word32 p) (v)
+    ShaderRecordAddressOffset v -> lift $ poke (castPtr @_ @Word32 p) (v)
+  pokeZeroCStruct :: Ptr DescriptorMappingSourceDataEXT -> IO b -> IO b
+  pokeZeroCStruct _ f = f
+  cStructSize = 56
+  cStructAlignment = 8
+
+instance Zero DescriptorMappingSourceDataEXT where
+  zero = IndirectIndex zero
+
+
+-- | VkDescriptorMappingSourceEXT - Specifies the mapping source for a shader
+-- binding
+--
+-- = Description
+--
+-- -   'DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_CONSTANT_OFFSET_EXT' specifies
+--     that the resource will be backed by a descriptor from the heap at a
+--     constant index.
+--
+-- -   'DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT' specifies that
+--     the resource will be backed by a descriptor from the heap at an
+--     index sourced from push data, added to a constant index.
+--
+-- -   'DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT' specifies
+--     that the resource will be backed by a descriptor from the heap at an
+--     index sourced from an address in push data, added to a constant
+--     index. If the mapping is an array, the array will be mapped to a
+--     base offset in indirect memory, and subsequent elements are mapped
+--     as offsets to that base.
+--
+-- -   'DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT'
+--     specifies that the resource will be backed by a descriptor from the
+--     heap at an index sourced from an address in push data, added to a
+--     constant index. If the mapping is an array, each array element will
+--     be mapped to a separate index in indirect memory.
+--
+-- -   'DESCRIPTOR_MAPPING_SOURCE_RESOURCE_HEAP_DATA_EXT' specifies that
+--     the resource will be backed by heap data directly.
+--
+-- -   'DESCRIPTOR_MAPPING_SOURCE_PUSH_DATA_EXT' specifies that the
+--     resource will be backed by push data directly.
+--
+-- -   'DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT' specifies that the
+--     resource will be backed by an address in push data.
+--
+-- -   'DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT' specifies that the
+--     resource will be backed by an address sourced via another address in
+--     push data.
+--
+-- -   'DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT'
+--     specifies that the resource will be backed by a descriptor from the
+--     heap at an index sourced from shader record data, added to a
+--     constant index.
+--
+-- -   'DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_DATA_EXT' specifies that
+--     the resource will be backed by shader record data directly.
+--
+-- -   'DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT' specifies that
+--     the resource will be backed by an address in shader record data.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_heap VK_EXT_descriptor_heap>,
+-- 'DescriptorSetAndBindingMappingEXT'
+newtype DescriptorMappingSourceEXT = DescriptorMappingSourceEXT Int32
+  deriving newtype (Eq, Ord, Storable, Zero)
+
+-- No documentation found for Nested "VkDescriptorMappingSourceEXT" "VK_DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_CONSTANT_OFFSET_EXT"
+pattern DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_CONSTANT_OFFSET_EXT = DescriptorMappingSourceEXT 0
+
+-- No documentation found for Nested "VkDescriptorMappingSourceEXT" "VK_DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT"
+pattern DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT = DescriptorMappingSourceEXT 1
+
+-- No documentation found for Nested "VkDescriptorMappingSourceEXT" "VK_DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT"
+pattern DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT = DescriptorMappingSourceEXT 2
+
+-- No documentation found for Nested "VkDescriptorMappingSourceEXT" "VK_DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT"
+pattern DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT = DescriptorMappingSourceEXT 3
+
+-- No documentation found for Nested "VkDescriptorMappingSourceEXT" "VK_DESCRIPTOR_MAPPING_SOURCE_RESOURCE_HEAP_DATA_EXT"
+pattern DESCRIPTOR_MAPPING_SOURCE_RESOURCE_HEAP_DATA_EXT = DescriptorMappingSourceEXT 4
+
+-- No documentation found for Nested "VkDescriptorMappingSourceEXT" "VK_DESCRIPTOR_MAPPING_SOURCE_PUSH_DATA_EXT"
+pattern DESCRIPTOR_MAPPING_SOURCE_PUSH_DATA_EXT = DescriptorMappingSourceEXT 5
+
+-- No documentation found for Nested "VkDescriptorMappingSourceEXT" "VK_DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT"
+pattern DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT = DescriptorMappingSourceEXT 6
+
+-- No documentation found for Nested "VkDescriptorMappingSourceEXT" "VK_DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT"
+pattern DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT = DescriptorMappingSourceEXT 7
+
+-- No documentation found for Nested "VkDescriptorMappingSourceEXT" "VK_DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT"
+pattern DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT = DescriptorMappingSourceEXT 10
+
+-- No documentation found for Nested "VkDescriptorMappingSourceEXT" "VK_DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_DATA_EXT"
+pattern DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_DATA_EXT = DescriptorMappingSourceEXT 9
+
+-- No documentation found for Nested "VkDescriptorMappingSourceEXT" "VK_DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT"
+pattern DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT = DescriptorMappingSourceEXT 8
+
+{-# COMPLETE
+  DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_CONSTANT_OFFSET_EXT
+  , DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT
+  , DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT
+  , DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT
+  , DESCRIPTOR_MAPPING_SOURCE_RESOURCE_HEAP_DATA_EXT
+  , DESCRIPTOR_MAPPING_SOURCE_PUSH_DATA_EXT
+  , DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT
+  , DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT
+  , DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT
+  , DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_DATA_EXT
+  , DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT ::
+    DescriptorMappingSourceEXT
+  #-}
+
+conNameDescriptorMappingSourceEXT :: String
+conNameDescriptorMappingSourceEXT = "DescriptorMappingSourceEXT"
+
+enumPrefixDescriptorMappingSourceEXT :: String
+enumPrefixDescriptorMappingSourceEXT = "DESCRIPTOR_MAPPING_SOURCE_"
+
+showTableDescriptorMappingSourceEXT :: [(DescriptorMappingSourceEXT, String)]
+showTableDescriptorMappingSourceEXT =
+  [
+    ( DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_CONSTANT_OFFSET_EXT
+    , "HEAP_WITH_CONSTANT_OFFSET_EXT"
+    )
+  ,
+    ( DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT
+    , "HEAP_WITH_PUSH_INDEX_EXT"
+    )
+  ,
+    ( DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT
+    , "HEAP_WITH_INDIRECT_INDEX_EXT"
+    )
+  ,
+    ( DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT
+    , "HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT"
+    )
+  ,
+    ( DESCRIPTOR_MAPPING_SOURCE_RESOURCE_HEAP_DATA_EXT
+    , "RESOURCE_HEAP_DATA_EXT"
+    )
+  ,
+    ( DESCRIPTOR_MAPPING_SOURCE_PUSH_DATA_EXT
+    , "PUSH_DATA_EXT"
+    )
+  ,
+    ( DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT
+    , "PUSH_ADDRESS_EXT"
+    )
+  ,
+    ( DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT
+    , "INDIRECT_ADDRESS_EXT"
+    )
+  ,
+    ( DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT
+    , "SHADER_RECORD_ADDRESS_EXT"
+    )
+  ,
+    ( DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_DATA_EXT
+    , "SHADER_RECORD_DATA_EXT"
+    )
+  ,
+    ( DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT
+    , "HEAP_WITH_SHADER_RECORD_INDEX_EXT"
+    )
+  ]
+
+instance Show DescriptorMappingSourceEXT where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixDescriptorMappingSourceEXT
+      showTableDescriptorMappingSourceEXT
+      conNameDescriptorMappingSourceEXT
+      (\(DescriptorMappingSourceEXT x) -> x)
+      (showsPrec 11)
+
+instance Read DescriptorMappingSourceEXT where
+  readPrec =
+    enumReadPrec
+      enumPrefixDescriptorMappingSourceEXT
+      showTableDescriptorMappingSourceEXT
+      conNameDescriptorMappingSourceEXT
+      DescriptorMappingSourceEXT
+
+type SpirvResourceTypeFlagsEXT = SpirvResourceTypeFlagBitsEXT
+
+-- | VkSpirvResourceTypeFlagBitsEXT - Bitmask specifying different SPIR-V
+-- resource declarations
+--
+-- = Description
+--
+-- -   'SPIRV_RESOURCE_TYPE_ALL_EXT' specifies that all resource
+--     declarations are included.
+--
+-- -   'SPIRV_RESOURCE_TYPE_SAMPLER_BIT_EXT' specifies @OpTypeSampler@
+--     variables.
+--
+-- -   'SPIRV_RESOURCE_TYPE_SAMPLED_IMAGE_BIT_EXT' specifies @OpTypeImage@
+--     variables with a @Sampled@ parameter of 1.
+--
+-- -   'SPIRV_RESOURCE_TYPE_READ_ONLY_IMAGE_BIT_EXT' specifies
+--     @OpTypeImage@ variables with a @Sampled@ parameter of 2 and
+--     decorated with @NonWritable@.
+--
+-- -   'SPIRV_RESOURCE_TYPE_READ_WRITE_IMAGE_BIT_EXT' specifies
+--     @OpTypeImage@ variables with a @Sampled@ parameter of 2 and not
+--     decorated with @NonWritable@.
+--
+-- -   'SPIRV_RESOURCE_TYPE_COMBINED_SAMPLED_IMAGE_BIT_EXT' specifies
+--     @OpTypeSampledImage@ variables.
+--
+-- -   'SPIRV_RESOURCE_TYPE_UNIFORM_BUFFER_BIT_EXT' specifies
+--     @OpTypeStruct@ variables in the @Uniform@ storage class decorated
+--     with @Block@
+--
+-- -   'SPIRV_RESOURCE_TYPE_READ_ONLY_STORAGE_BUFFER_BIT_EXT' specifies
+--     @OpTypeStruct@ variables either in the @StorageBuffer@ storage class
+--     decorated with @Block@ or in the @Uniform@ storage class decorated
+--     with @BufferBlock@, and decorated with @NonWritable@
+--
+-- -   'SPIRV_RESOURCE_TYPE_READ_WRITE_STORAGE_BUFFER_BIT_EXT' specifies
+--     @OpTypeStruct@ variables either in the @StorageBuffer@ storage class
+--     decorated with @Block@ or in the @Uniform@ storage class decorated
+--     with @BufferBlock@, but not decorated with @NonWritable@
+--
+-- -   'SPIRV_RESOURCE_TYPE_ACCELERATION_STRUCTURE_BIT_EXT' specifies
+--     @OpTypeAccelerationStructureKHR@ variables
+--
+-- -   'SPIRV_RESOURCE_TYPE_TENSOR_BIT_ARM' specifies @OpTypeTensorARM@
+--     variables
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_heap VK_EXT_descriptor_heap>,
+-- 'SpirvResourceTypeFlagsEXT'
+newtype SpirvResourceTypeFlagBitsEXT = SpirvResourceTypeFlagBitsEXT Flags
+  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
+
+-- No documentation found for Nested "VkSpirvResourceTypeFlagBitsEXT" "VK_SPIRV_RESOURCE_TYPE_ALL_EXT"
+pattern SPIRV_RESOURCE_TYPE_ALL_EXT = SpirvResourceTypeFlagBitsEXT 0x7fffffff
+
+-- No documentation found for Nested "VkSpirvResourceTypeFlagBitsEXT" "VK_SPIRV_RESOURCE_TYPE_SAMPLER_BIT_EXT"
+pattern SPIRV_RESOURCE_TYPE_SAMPLER_BIT_EXT = SpirvResourceTypeFlagBitsEXT 0x00000001
+
+-- No documentation found for Nested "VkSpirvResourceTypeFlagBitsEXT" "VK_SPIRV_RESOURCE_TYPE_SAMPLED_IMAGE_BIT_EXT"
+pattern SPIRV_RESOURCE_TYPE_SAMPLED_IMAGE_BIT_EXT = SpirvResourceTypeFlagBitsEXT 0x00000002
+
+-- No documentation found for Nested "VkSpirvResourceTypeFlagBitsEXT" "VK_SPIRV_RESOURCE_TYPE_READ_ONLY_IMAGE_BIT_EXT"
+pattern SPIRV_RESOURCE_TYPE_READ_ONLY_IMAGE_BIT_EXT = SpirvResourceTypeFlagBitsEXT 0x00000004
+
+-- No documentation found for Nested "VkSpirvResourceTypeFlagBitsEXT" "VK_SPIRV_RESOURCE_TYPE_READ_WRITE_IMAGE_BIT_EXT"
+pattern SPIRV_RESOURCE_TYPE_READ_WRITE_IMAGE_BIT_EXT = SpirvResourceTypeFlagBitsEXT 0x00000008
+
+-- No documentation found for Nested "VkSpirvResourceTypeFlagBitsEXT" "VK_SPIRV_RESOURCE_TYPE_COMBINED_SAMPLED_IMAGE_BIT_EXT"
+pattern SPIRV_RESOURCE_TYPE_COMBINED_SAMPLED_IMAGE_BIT_EXT = SpirvResourceTypeFlagBitsEXT 0x00000010
+
+-- No documentation found for Nested "VkSpirvResourceTypeFlagBitsEXT" "VK_SPIRV_RESOURCE_TYPE_UNIFORM_BUFFER_BIT_EXT"
+pattern SPIRV_RESOURCE_TYPE_UNIFORM_BUFFER_BIT_EXT = SpirvResourceTypeFlagBitsEXT 0x00000020
+
+-- No documentation found for Nested "VkSpirvResourceTypeFlagBitsEXT" "VK_SPIRV_RESOURCE_TYPE_READ_ONLY_STORAGE_BUFFER_BIT_EXT"
+pattern SPIRV_RESOURCE_TYPE_READ_ONLY_STORAGE_BUFFER_BIT_EXT = SpirvResourceTypeFlagBitsEXT 0x00000040
+
+-- No documentation found for Nested "VkSpirvResourceTypeFlagBitsEXT" "VK_SPIRV_RESOURCE_TYPE_READ_WRITE_STORAGE_BUFFER_BIT_EXT"
+pattern SPIRV_RESOURCE_TYPE_READ_WRITE_STORAGE_BUFFER_BIT_EXT = SpirvResourceTypeFlagBitsEXT 0x00000080
+
+-- No documentation found for Nested "VkSpirvResourceTypeFlagBitsEXT" "VK_SPIRV_RESOURCE_TYPE_TENSOR_BIT_ARM"
+pattern SPIRV_RESOURCE_TYPE_TENSOR_BIT_ARM = SpirvResourceTypeFlagBitsEXT 0x00000200
+
+-- No documentation found for Nested "VkSpirvResourceTypeFlagBitsEXT" "VK_SPIRV_RESOURCE_TYPE_ACCELERATION_STRUCTURE_BIT_EXT"
+pattern SPIRV_RESOURCE_TYPE_ACCELERATION_STRUCTURE_BIT_EXT = SpirvResourceTypeFlagBitsEXT 0x00000100
+
+conNameSpirvResourceTypeFlagBitsEXT :: String
+conNameSpirvResourceTypeFlagBitsEXT = "SpirvResourceTypeFlagBitsEXT"
+
+enumPrefixSpirvResourceTypeFlagBitsEXT :: String
+enumPrefixSpirvResourceTypeFlagBitsEXT = "SPIRV_RESOURCE_TYPE_"
+
+showTableSpirvResourceTypeFlagBitsEXT :: [(SpirvResourceTypeFlagBitsEXT, String)]
+showTableSpirvResourceTypeFlagBitsEXT =
+  [
+    ( SPIRV_RESOURCE_TYPE_ALL_EXT
+    , "ALL_EXT"
+    )
+  ,
+    ( SPIRV_RESOURCE_TYPE_SAMPLER_BIT_EXT
+    , "SAMPLER_BIT_EXT"
+    )
+  ,
+    ( SPIRV_RESOURCE_TYPE_SAMPLED_IMAGE_BIT_EXT
+    , "SAMPLED_IMAGE_BIT_EXT"
+    )
+  ,
+    ( SPIRV_RESOURCE_TYPE_READ_ONLY_IMAGE_BIT_EXT
+    , "READ_ONLY_IMAGE_BIT_EXT"
+    )
+  ,
+    ( SPIRV_RESOURCE_TYPE_READ_WRITE_IMAGE_BIT_EXT
+    , "READ_WRITE_IMAGE_BIT_EXT"
+    )
+  ,
+    ( SPIRV_RESOURCE_TYPE_COMBINED_SAMPLED_IMAGE_BIT_EXT
+    , "COMBINED_SAMPLED_IMAGE_BIT_EXT"
+    )
+  ,
+    ( SPIRV_RESOURCE_TYPE_UNIFORM_BUFFER_BIT_EXT
+    , "UNIFORM_BUFFER_BIT_EXT"
+    )
+  ,
+    ( SPIRV_RESOURCE_TYPE_READ_ONLY_STORAGE_BUFFER_BIT_EXT
+    , "READ_ONLY_STORAGE_BUFFER_BIT_EXT"
+    )
+  ,
+    ( SPIRV_RESOURCE_TYPE_READ_WRITE_STORAGE_BUFFER_BIT_EXT
+    , "READ_WRITE_STORAGE_BUFFER_BIT_EXT"
+    )
+  ,
+    ( SPIRV_RESOURCE_TYPE_TENSOR_BIT_ARM
+    , "TENSOR_BIT_ARM"
+    )
+  ,
+    ( SPIRV_RESOURCE_TYPE_ACCELERATION_STRUCTURE_BIT_EXT
+    , "ACCELERATION_STRUCTURE_BIT_EXT"
+    )
+  ]
+
+instance Show SpirvResourceTypeFlagBitsEXT where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixSpirvResourceTypeFlagBitsEXT
+      showTableSpirvResourceTypeFlagBitsEXT
+      conNameSpirvResourceTypeFlagBitsEXT
+      (\(SpirvResourceTypeFlagBitsEXT x) -> x)
+      (\x -> showString "0x" . showHex x)
+
+instance Read SpirvResourceTypeFlagBitsEXT where
+  readPrec =
+    enumReadPrec
+      enumPrefixSpirvResourceTypeFlagBitsEXT
+      showTableSpirvResourceTypeFlagBitsEXT
+      conNameSpirvResourceTypeFlagBitsEXT
+      SpirvResourceTypeFlagBitsEXT
+
+-- No documentation found for TopLevel "VkDeviceAddressRangeEXT"
+type DeviceAddressRangeEXT = DeviceAddressRangeKHR
+
+
+type EXT_DESCRIPTOR_HEAP_SPEC_VERSION = 1
+
+-- No documentation found for TopLevel "VK_EXT_DESCRIPTOR_HEAP_SPEC_VERSION"
+pattern EXT_DESCRIPTOR_HEAP_SPEC_VERSION :: forall a . Integral a => a
+pattern EXT_DESCRIPTOR_HEAP_SPEC_VERSION = 1
+
+
+type EXT_DESCRIPTOR_HEAP_EXTENSION_NAME = "VK_EXT_descriptor_heap"
+
+-- No documentation found for TopLevel "VK_EXT_DESCRIPTOR_HEAP_EXTENSION_NAME"
+pattern EXT_DESCRIPTOR_HEAP_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern EXT_DESCRIPTOR_HEAP_EXTENSION_NAME = "VK_EXT_descriptor_heap"
+
diff --git a/src/Vulkan/Extensions/VK_EXT_descriptor_heap.hs-boot b/src/Vulkan/Extensions/VK_EXT_descriptor_heap.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_EXT_descriptor_heap.hs-boot
@@ -0,0 +1,736 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_EXT_descriptor_heap - device extension
+--
+-- = VK_EXT_descriptor_heap
+--
+-- [__Name String__]
+--     @VK_EXT_descriptor_heap@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     136
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance5 VK_KHR_maintenance5>
+--     and
+--         
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_buffer_device_address VK_KHR_buffer_device_address>
+--          or
+--         
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.2 Vulkan Version 1.2>
+--
+-- [__API Interactions__]
+--
+--     -   Interacts with VK_ARM_tensors
+--
+--     -   Interacts with VK_EXT_custom_border_color
+--
+--     -   Interacts with VK_EXT_device_generated_commands
+--
+--     -   Interacts with VK_EXT_fragment_density_map
+--
+--     -   Interacts with VK_EXT_shader_object
+--
+--     -   Interacts with VK_KHR_ray_tracing_pipeline
+--
+--     -   Interacts with VK_NV_device_generated_commands
+--
+--     -   Interacts with VK_NV_ray_tracing
+--
+-- [__SPIR-V Dependencies__]
+--
+--     -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/EXT/SPV_EXT_descriptor_heap.html SPV_EXT_descriptor_heap>
+--
+-- [__Contact__]
+--
+--     -   Tobias Hector
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_descriptor_heap] @tobski%0A*Here describe the issue or question you have about the VK_EXT_descriptor_heap extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_EXT_descriptor_heap.adoc VK_EXT_descriptor_heap>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2024-06-12
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Contributors__]
+--
+--     -   Tobias Hector, AMD
+--
+--     -   Jan-Harald Fredriksen, Arm
+--
+--     -   Daniel Story, Nintendo
+--
+--     -   Connor Abbot, Valve
+--
+--     -   Hans-Kristian Arntzen, Valve
+--
+--     -   Matthew Netsch, Qualcomm
+--
+--     -   Jeff Bolz, NVIDIA
+--
+--     -   Alyssa Rosenzweig, Valve
+--
+--     -   Lionel Landerwerlin, Intel
+--
+--     -   Baldur Karlsson, Valve
+--
+--     -   Faith Ekstrand, Collabora
+--
+--     -   Slawomir Grajewski, Intel
+--
+--     -   Mike Blumenkrantz, Valve
+--
+--     -   Yiwei Zhang, Google
+--
+--     -   Stu Smith, AMD
+--
+--     -   Piers Daniell, NVIDIA
+--
+--     -   Jon Leech, Khronos
+--
+--     -   Rodrigo Locatti, NVIDIA
+--
+--     -   Krzysztof Niski, NVIDIA
+--
+--     -   Alan Baker, Google
+--
+--     -   James Fitzpatrick, Imagination
+--
+--     -   Samuel (Sheng-Wen) Huang, Mediatek
+--
+--     -   Hai Nguyen, Google
+--
+--     -   Jeff Leger, Qualcomm
+--
+--     -   Marty Johnson, Khronos
+--
+--     -   Tom Olson, Arm
+--
+--     -   Chris Glover, Google
+--
+--     -   Daniel Koch, NVIDIA
+--
+--     -   Robert Simpson, Qualcomm
+--
+--     -   Dan Ginsburg, Valve
+--
+--     -   Andreas Süßenbach, NVIDIA
+--
+--     -   Anna Maniscalco, Valve
+--
+--     -   Artem Kharytoniuk, LunarG
+--
+--     -   Younggwan Kim, Arm
+--
+--     -   Konstantin Seurer, Valve
+--
+--     -   Catarina Shablia, Collabora
+--
+--     -   Spencer Fricke, LunarG
+--
+--     -   Chris Bieneman, Microsoft
+--
+--     -   Ting Wei, Arm
+--
+--     -   Boris Zanin, AMD
+--
+--     -   Samuel Pitoiset, Valve
+--
+--     -   Erik Hogeman, Arm
+--
+--     -   Jesse Natalie, Microsoft
+--
+--     -   Guang Xu, AMD
+--
+--     -   Embla Flatlandsmo, Arm
+--
+-- [__Interactions and External Dependencies__]
+--
+--     -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_shader_untyped_pointers VK_KHR_shader_untyped_pointers>
+--         must be supported, but it does not need to be enabled for
+--         applications using only the
+--         <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptorheaps-bindings binding interface>.
+--
+-- == Description
+--
+-- This extension allows explicit management of descriptors, and the memory
+-- used to store descriptors, conceptualised as descriptor heaps.
+-- Descriptor heap memory can be accessed as any other memory, enabling
+-- management of descriptors on both CPU and the GPU.
+--
+-- This extension was developed based on issues discovered with
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_buffer VK_EXT_descriptor_buffer>.
+-- There are more constraints on how it is implemented, to provide more
+-- portable guarantees and more predictable performance characteristics.
+-- For instance, rather than an arbitrary number of sampler or resource
+-- buffers, there is exactly one sampler heap and exactly one resource
+-- heap.
+--
+-- This extension also eliminates descriptor sets and pipeline layouts
+-- completely; instead applications can look descriptors up solely by their
+-- offset into a heap. Shaders still using descriptor set and binding
+-- decorations can still be mapped to heaps through an API that maps set
+-- and binding decorations to heap offsets, either as constants or through
+-- push data. This new mapping API also enables a much more straightforward
+-- mapping to HLSL shaders using the root signature and descriptor table
+-- interfaces.
+--
+-- The push constant API has also been replaced with the /push data/
+-- interface, which aims to provide much more clarity about how data is
+-- passed to the shader, without requiring any mapping information to be
+-- provided during pipeline or shader creation. Mappings are still
+-- available for shaders written for the legacy interface.
+--
+-- There is also a much clearer path for mapping shader constant data, with
+-- two recommended options for mapping constant data through push data;
+-- either directly in push data, or through a device address stored in push
+-- data, both of which can be mapped to shaders with set and binding
+-- interfaces.
+--
+-- == New Object Types
+--
+-- -   'Vulkan.Extensions.Handles.TensorARM'
+--
+-- == New Commands
+--
+-- -   'cmdBindResourceHeapEXT'
+--
+-- -   'cmdBindSamplerHeapEXT'
+--
+-- -   'cmdPushDataEXT'
+--
+-- -   'getImageOpaqueCaptureDataEXT'
+--
+-- -   'getPhysicalDeviceDescriptorSizeEXT'
+--
+-- -   'writeResourceDescriptorsEXT'
+--
+-- -   'writeSamplerDescriptorsEXT'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_tensors VK_ARM_tensors>
+-- is supported:
+--
+-- -   'getTensorOpaqueCaptureDataARM'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_custom_border_color VK_EXT_custom_border_color>
+-- is supported:
+--
+-- -   'registerCustomBorderColorEXT'
+--
+-- -   'unregisterCustomBorderColorEXT'
+--
+-- == New Structures
+--
+-- -   'BindHeapInfoEXT'
+--
+-- -   'DescriptorMappingSourceConstantOffsetEXT'
+--
+-- -   'DescriptorMappingSourceHeapDataEXT'
+--
+-- -   'DescriptorMappingSourceIndirectAddressEXT'
+--
+-- -   'DescriptorMappingSourceIndirectIndexArrayEXT'
+--
+-- -   'DescriptorMappingSourceIndirectIndexEXT'
+--
+-- -   'DescriptorMappingSourcePushIndexEXT'
+--
+-- -   'DescriptorMappingSourceShaderRecordIndexEXT'
+--
+-- -   'DescriptorSetAndBindingMappingEXT'
+--
+-- -   'DeviceAddressRangeEXT'
+--
+-- -   'HostAddressRangeConstEXT'
+--
+-- -   'HostAddressRangeEXT'
+--
+-- -   'ImageDescriptorInfoEXT'
+--
+-- -   'PushDataInfoEXT'
+--
+-- -   'ResourceDescriptorInfoEXT'
+--
+-- -   'Vulkan.Extensions.VK_ARM_tensors.TensorViewCreateInfoARM'
+--
+-- -   'TexelBufferDescriptorInfoEXT'
+--
+-- -   Extending
+--     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo':
+--
+--     -   'CommandBufferInheritanceDescriptorHeapInfoEXT'
+--
+-- -   Extending 'Vulkan.Core10.Image.ImageCreateInfo',
+--     'Vulkan.Extensions.VK_ARM_tensors.TensorCreateInfoARM':
+--
+--     -   'OpaqueCaptureDataCreateInfoEXT'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceDescriptorHeapFeaturesEXT'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDeviceDescriptorHeapPropertiesEXT'
+--
+-- -   Extending
+--     'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo',
+--     'Vulkan.Extensions.VK_EXT_shader_object.ShaderCreateInfoEXT':
+--
+--     -   'ShaderDescriptorSetAndBindingMappingInfoEXT'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_tensors VK_ARM_tensors>
+-- is supported:
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDeviceDescriptorHeapTensorPropertiesARM'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_custom_border_color VK_EXT_custom_border_color>
+-- is supported:
+--
+-- -   Extending 'Vulkan.Core10.Sampler.SamplerCreateInfo':
+--
+--     -   'SamplerCustomBorderColorIndexCreateInfoEXT'
+--
+-- 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.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.ImageFormatProperties2':
+--
+--     -   'SubsampledImageFormatPropertiesEXT'
+--
+-- 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.Extensions.VK_NV_device_generated_commands.IndirectCommandsLayoutTokenNV':
+--
+--     -   'IndirectCommandsLayoutPushDataTokenNV'
+--
+-- == New Unions
+--
+-- -   'DescriptorMappingSourceDataEXT'
+--
+-- -   'ResourceDescriptorDataEXT'
+--
+-- == New Enums
+--
+-- -   'DescriptorMappingSourceEXT'
+--
+-- -   'SpirvResourceTypeFlagBitsEXT'
+--
+-- == New Bitmasks
+--
+-- -   'SpirvResourceTypeFlagsEXT'
+--
+-- -   'Vulkan.Extensions.VK_ARM_tensors.TensorViewCreateFlagsARM'
+--
+-- == New Enum Constants
+--
+-- -   'EXT_DESCRIPTOR_HEAP_EXTENSION_NAME'
+--
+-- -   'EXT_DESCRIPTOR_HEAP_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core13.Enums.AccessFlags2.AccessFlagBits2':
+--
+--     -   'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_RESOURCE_HEAP_READ_BIT_EXT'
+--
+--     -   'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SAMPLER_HEAP_READ_BIT_EXT'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BufferUsageFlagBits':
+--
+--     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_DESCRIPTOR_HEAP_BIT_EXT'
+--
+-- -   Extending
+--     'Vulkan.Core14.Enums.BufferUsageFlags2.BufferUsageFlagBits2':
+--
+--     -   'Vulkan.Core14.Enums.BufferUsageFlags2.BUFFER_USAGE_2_DESCRIPTOR_HEAP_BIT_EXT'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.ImageCreateFlagBits':
+--
+--     -   'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_DESCRIPTOR_HEAP_CAPTURE_REPLAY_BIT_EXT'
+--
+-- -   Extending
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PipelineCreateFlagBits2':
+--
+--     -   'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BIND_HEAP_INFO_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_DESCRIPTOR_HEAP_INFO_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DESCRIPTOR_SET_AND_BINDING_MAPPING_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_DESCRIPTOR_INFO_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_OPAQUE_CAPTURE_DATA_CREATE_INFO_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_HEAP_FEATURES_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_HEAP_PROPERTIES_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PUSH_DATA_INFO_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RESOURCE_DESCRIPTOR_INFO_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SHADER_DESCRIPTOR_SET_AND_BINDING_MAPPING_INFO_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_TEXEL_BUFFER_DESCRIPTOR_INFO_EXT'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_tensors VK_ARM_tensors>
+-- is supported:
+--
+-- -   Extending 'SpirvResourceTypeFlagBitsEXT':
+--
+--     -   'SPIRV_RESOURCE_TYPE_TENSOR_BIT_ARM'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_HEAP_TENSOR_PROPERTIES_ARM'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_ARM_tensors.TensorCreateFlagBitsARM':
+--
+--     -   'Vulkan.Extensions.VK_ARM_tensors.TENSOR_CREATE_DESCRIPTOR_HEAP_CAPTURE_REPLAY_BIT_ARM'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_custom_border_color VK_EXT_custom_border_color>
+-- is supported:
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_INDEX_CREATE_INFO_EXT'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_generated_commands VK_EXT_device_generated_commands>
+-- is supported:
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_EXT_device_generated_commands.IndirectCommandsTokenTypeEXT':
+--
+--     -   'Vulkan.Extensions.VK_EXT_device_generated_commands.INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_DATA_EXT'
+--
+--     -   'Vulkan.Extensions.VK_EXT_device_generated_commands.INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_DATA_SEQUENCE_INDEX_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.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SUBSAMPLED_IMAGE_FORMAT_PROPERTIES_EXT'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_shader_object VK_EXT_shader_object>
+-- is supported:
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_EXT_shader_object.ShaderCreateFlagBitsEXT':
+--
+--     -   'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_ray_tracing_pipeline VK_KHR_ray_tracing_pipeline>
+-- or
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>
+-- is supported:
+--
+-- -   Extending 'DescriptorMappingSourceEXT':
+--
+--     -   'DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT'
+--
+--     -   'DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT'
+--
+--     -   'DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_DATA_EXT'
+--
+-- -   Extending 'SpirvResourceTypeFlagBitsEXT':
+--
+--     -   'SPIRV_RESOURCE_TYPE_ACCELERATION_STRUCTURE_BIT_EXT'
+--
+-- 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.Extensions.VK_NV_device_generated_commands.IndirectCommandsTokenTypeNV':
+--
+--     -   'Vulkan.Extensions.VK_NV_device_generated_commands.INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_DATA_NV'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_PUSH_DATA_TOKEN_NV'
+--
+-- == Version History
+--
+-- -   Revision 1, 2024-06-12 (Tobias Hector)
+--
+--     -   Initial revision.
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_descriptor_heap Vulkan Specification>.
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_EXT_descriptor_heap  ( BindHeapInfoEXT
+                                                 , CommandBufferInheritanceDescriptorHeapInfoEXT
+                                                 , DescriptorMappingSourceConstantOffsetEXT
+                                                 , DescriptorMappingSourceHeapDataEXT
+                                                 , DescriptorMappingSourceIndirectAddressEXT
+                                                 , DescriptorMappingSourceIndirectIndexArrayEXT
+                                                 , DescriptorMappingSourceIndirectIndexEXT
+                                                 , DescriptorMappingSourcePushIndexEXT
+                                                 , DescriptorMappingSourceShaderRecordIndexEXT
+                                                 , DescriptorSetAndBindingMappingEXT
+                                                 , HostAddressRangeConstEXT
+                                                 , HostAddressRangeEXT
+                                                 , ImageDescriptorInfoEXT
+                                                 , IndirectCommandsLayoutPushDataTokenNV
+                                                 , OpaqueCaptureDataCreateInfoEXT
+                                                 , PhysicalDeviceDescriptorHeapFeaturesEXT
+                                                 , PhysicalDeviceDescriptorHeapPropertiesEXT
+                                                 , PhysicalDeviceDescriptorHeapTensorPropertiesARM
+                                                 , PushDataInfoEXT
+                                                 , ResourceDescriptorInfoEXT
+                                                 , SamplerCustomBorderColorIndexCreateInfoEXT
+                                                 , ShaderDescriptorSetAndBindingMappingInfoEXT
+                                                 , SubsampledImageFormatPropertiesEXT
+                                                 , TexelBufferDescriptorInfoEXT
+                                                 ) 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 BindHeapInfoEXT
+
+instance ToCStruct BindHeapInfoEXT
+instance Show BindHeapInfoEXT
+
+instance FromCStruct BindHeapInfoEXT
+
+
+data CommandBufferInheritanceDescriptorHeapInfoEXT
+
+instance ToCStruct CommandBufferInheritanceDescriptorHeapInfoEXT
+instance Show CommandBufferInheritanceDescriptorHeapInfoEXT
+
+instance FromCStruct CommandBufferInheritanceDescriptorHeapInfoEXT
+
+
+data DescriptorMappingSourceConstantOffsetEXT
+
+instance ToCStruct DescriptorMappingSourceConstantOffsetEXT
+instance Show DescriptorMappingSourceConstantOffsetEXT
+
+instance FromCStruct DescriptorMappingSourceConstantOffsetEXT
+
+
+data DescriptorMappingSourceHeapDataEXT
+
+instance ToCStruct DescriptorMappingSourceHeapDataEXT
+instance Show DescriptorMappingSourceHeapDataEXT
+
+instance FromCStruct DescriptorMappingSourceHeapDataEXT
+
+
+data DescriptorMappingSourceIndirectAddressEXT
+
+instance ToCStruct DescriptorMappingSourceIndirectAddressEXT
+instance Show DescriptorMappingSourceIndirectAddressEXT
+
+instance FromCStruct DescriptorMappingSourceIndirectAddressEXT
+
+
+data DescriptorMappingSourceIndirectIndexArrayEXT
+
+instance ToCStruct DescriptorMappingSourceIndirectIndexArrayEXT
+instance Show DescriptorMappingSourceIndirectIndexArrayEXT
+
+instance FromCStruct DescriptorMappingSourceIndirectIndexArrayEXT
+
+
+data DescriptorMappingSourceIndirectIndexEXT
+
+instance ToCStruct DescriptorMappingSourceIndirectIndexEXT
+instance Show DescriptorMappingSourceIndirectIndexEXT
+
+instance FromCStruct DescriptorMappingSourceIndirectIndexEXT
+
+
+data DescriptorMappingSourcePushIndexEXT
+
+instance ToCStruct DescriptorMappingSourcePushIndexEXT
+instance Show DescriptorMappingSourcePushIndexEXT
+
+instance FromCStruct DescriptorMappingSourcePushIndexEXT
+
+
+data DescriptorMappingSourceShaderRecordIndexEXT
+
+instance ToCStruct DescriptorMappingSourceShaderRecordIndexEXT
+instance Show DescriptorMappingSourceShaderRecordIndexEXT
+
+instance FromCStruct DescriptorMappingSourceShaderRecordIndexEXT
+
+
+type role DescriptorSetAndBindingMappingEXT nominal
+data DescriptorSetAndBindingMappingEXT (es :: [Type])
+
+instance ( Extendss DescriptorSetAndBindingMappingEXT es
+         , PokeChain es ) => ToCStruct (DescriptorSetAndBindingMappingEXT es)
+instance Show (Chain es) => Show (DescriptorSetAndBindingMappingEXT es)
+
+
+data HostAddressRangeConstEXT
+
+instance ToCStruct HostAddressRangeConstEXT
+instance Show HostAddressRangeConstEXT
+
+instance FromCStruct HostAddressRangeConstEXT
+
+
+data HostAddressRangeEXT
+
+instance ToCStruct HostAddressRangeEXT
+instance Show HostAddressRangeEXT
+
+instance FromCStruct HostAddressRangeEXT
+
+
+data ImageDescriptorInfoEXT
+
+instance ToCStruct ImageDescriptorInfoEXT
+instance Show ImageDescriptorInfoEXT
+
+instance FromCStruct ImageDescriptorInfoEXT
+
+
+data IndirectCommandsLayoutPushDataTokenNV
+
+instance ToCStruct IndirectCommandsLayoutPushDataTokenNV
+instance Show IndirectCommandsLayoutPushDataTokenNV
+
+instance FromCStruct IndirectCommandsLayoutPushDataTokenNV
+
+
+data OpaqueCaptureDataCreateInfoEXT
+
+instance ToCStruct OpaqueCaptureDataCreateInfoEXT
+instance Show OpaqueCaptureDataCreateInfoEXT
+
+instance FromCStruct OpaqueCaptureDataCreateInfoEXT
+
+
+data PhysicalDeviceDescriptorHeapFeaturesEXT
+
+instance ToCStruct PhysicalDeviceDescriptorHeapFeaturesEXT
+instance Show PhysicalDeviceDescriptorHeapFeaturesEXT
+
+instance FromCStruct PhysicalDeviceDescriptorHeapFeaturesEXT
+
+
+data PhysicalDeviceDescriptorHeapPropertiesEXT
+
+instance ToCStruct PhysicalDeviceDescriptorHeapPropertiesEXT
+instance Show PhysicalDeviceDescriptorHeapPropertiesEXT
+
+instance FromCStruct PhysicalDeviceDescriptorHeapPropertiesEXT
+
+
+data PhysicalDeviceDescriptorHeapTensorPropertiesARM
+
+instance ToCStruct PhysicalDeviceDescriptorHeapTensorPropertiesARM
+instance Show PhysicalDeviceDescriptorHeapTensorPropertiesARM
+
+instance FromCStruct PhysicalDeviceDescriptorHeapTensorPropertiesARM
+
+
+type role PushDataInfoEXT nominal
+data PushDataInfoEXT (es :: [Type])
+
+instance ( Extendss PushDataInfoEXT es
+         , PokeChain es ) => ToCStruct (PushDataInfoEXT es)
+instance Show (Chain es) => Show (PushDataInfoEXT es)
+
+instance ( Extendss PushDataInfoEXT es
+         , PeekChain es ) => FromCStruct (PushDataInfoEXT es)
+
+
+type role ResourceDescriptorInfoEXT nominal
+data ResourceDescriptorInfoEXT (es :: [Type])
+
+instance ( Extendss ResourceDescriptorInfoEXT es
+         , PokeChain es ) => ToCStruct (ResourceDescriptorInfoEXT es)
+instance Show (Chain es) => Show (ResourceDescriptorInfoEXT es)
+
+
+data SamplerCustomBorderColorIndexCreateInfoEXT
+
+instance ToCStruct SamplerCustomBorderColorIndexCreateInfoEXT
+instance Show SamplerCustomBorderColorIndexCreateInfoEXT
+
+instance FromCStruct SamplerCustomBorderColorIndexCreateInfoEXT
+
+
+data ShaderDescriptorSetAndBindingMappingInfoEXT
+
+instance ToCStruct ShaderDescriptorSetAndBindingMappingInfoEXT
+instance Show ShaderDescriptorSetAndBindingMappingInfoEXT
+
+
+data SubsampledImageFormatPropertiesEXT
+
+instance ToCStruct SubsampledImageFormatPropertiesEXT
+instance Show SubsampledImageFormatPropertiesEXT
+
+instance FromCStruct SubsampledImageFormatPropertiesEXT
+
+
+data TexelBufferDescriptorInfoEXT
+
+instance ToCStruct TexelBufferDescriptorInfoEXT
+instance Show TexelBufferDescriptorInfoEXT
+
+instance FromCStruct TexelBufferDescriptorInfoEXT
+
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
@@ -18,7 +18,7 @@
 --     2
 --
 -- [__Ratification Status__]
---     Not ratified
+--     Ratified
 --
 -- [__Extension and Version Dependencies__]
 --         
@@ -108,6 +108,21 @@
 -- non-updateAfterBind descriptor set layouts, and the new limits count
 -- descriptors in all descriptor set layouts in the pipeline layout.
 --
+-- == Promotion to Vulkan 1.2
+--
+-- Vulkan APIs in this extension are included in core Vulkan 1.2, with the
+-- EXT suffix omitted. However, if Vulkan 1.2 is supported and this
+-- extension is not, the @descriptorIndexing@ capability is optional.
+-- External interactions defined by this extension, such as SPIR-V token
+-- names, retain their original names. The original Vulkan API names are
+-- still available as aliases of the core functionality.
+--
+-- == Promotion to Vulkan 1.4
+--
+-- If Vulkan 1.4 is supported, support for the
+-- @shaderUniformTexelBufferArrayDynamicIndexing@ and
+-- @shaderStorageTexelBufferArrayDynamicIndexing@ capabilities is required.
+--
 -- == New Structures
 --
 -- -   Extending 'Vulkan.Core10.DescriptorSet.DescriptorSetAllocateInfo':
@@ -186,15 +201,6 @@
 --
 --     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT'
 --
--- == Promotion to Vulkan 1.2
---
--- Vulkan APIs in this extension are included in core Vulkan 1.2, with the
--- EXT suffix omitted. However, if Vulkan 1.2 is supported and this
--- extension is not, the @descriptorIndexing@ capability is optional.
--- External interactions defined by this extension, such as SPIR-V token
--- names, retain their original names. The original Vulkan API names are
--- still available as aliases of the core functionality.
---
 -- == Version History
 --
 -- -   Revision 1, 2017-07-26 (Jeff Bolz)
@@ -212,7 +218,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_descriptor_indexing Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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_address_binding_report.hs b/src/Vulkan/Extensions/VK_EXT_device_address_binding_report.hs
--- a/src/Vulkan/Extensions/VK_EXT_device_address_binding_report.hs
+++ b/src/Vulkan/Extensions/VK_EXT_device_address_binding_report.hs
@@ -18,7 +18,7 @@
 --     1
 --
 -- [__Ratification Status__]
---     Not ratified
+--     Ratified
 --
 -- [__Extension and Version Dependencies__]
 --         
@@ -210,6 +210,14 @@
 -- reporting the association between virtual address range and the
 -- buffer\/image.
 --
+-- 12.) Should binding reports be emitted for vkQueueBindSparse()
+-- operations?
+--
+-- __RESOLVED__: binding reports for sparse objects are best effort, some
+-- implementations might report events on vkQueueBindSparse() other
+-- implementations might report events on sparse object
+-- creation\/destruction.
+--
 -- == Version History
 --
 -- -   Revision 1, 2020-09-23 (Ralph Potter)
@@ -223,7 +231,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_device_address_binding_report Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_device_address_binding_report Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -299,12 +307,22 @@
 -- 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. 'PhysicalDeviceAddressBindingReportFeaturesEXT' /can/ also be
--- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceAddressBindingReportFeaturesEXT', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_address_binding_report VK_EXT_device_address_binding_report>,
@@ -359,7 +377,7 @@
 -- = Description
 --
 -- If the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-reportAddressBinding reportAddressBinding>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-reportAddressBinding reportAddressBinding>
 -- feature is enabled and the implementation binds or unbinds a region of
 -- virtual address space associated with a Vulkan object, the
 -- implementation /must/ submit a debug message with the following
@@ -379,15 +397,19 @@
 -- 'DEVICE_ADDRESS_BINDING_INTERNAL_OBJECT_BIT_EXT'.
 --
 -- Object handles reported in this manner are not
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#fundamentals-validusage-handles valid object handles>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#fundamentals-validusage-handles valid object handles>,
 -- and /must/ not be used as an input parameter to any Vulkan command.
 --
 -- Any valid object handle returned by an object creation function /must/
 -- match the handle specified via any previously reported binding events
 -- associated with the object’s creation.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Extensions.VK_EXT_debug_utils.DebugUtilsMessengerCallbackDataEXT'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_address_binding_report VK_EXT_device_address_binding_report>,
@@ -408,6 +430,10 @@
     -- of a region of the virtual address space associated with a Vulkan
     -- object, as identified by the @pObjects@ member of
     -- 'Vulkan.Extensions.VK_EXT_debug_utils.DebugUtilsMessengerCallbackDataEXT'.
+    --
+    -- #VUID-VkDeviceAddressBindingCallbackDataEXT-baseAddress-parameter#
+    -- @baseAddress@ /must/ be a valid
+    -- 'Vulkan.Core10.FundamentalTypes.DeviceAddress' value
     baseAddress :: DeviceAddress
   , -- | @size@ is the size in bytes of a region of GPU-accessible virtual
     -- address space.
@@ -473,6 +499,12 @@
 -- | VkDeviceAddressBindingFlagBitsEXT - Bitmask specifying the additional
 -- information about a binding event
 --
+-- = Description
+--
+-- -   'DEVICE_ADDRESS_BINDING_INTERNAL_OBJECT_BIT_EXT' specifies that
+--     'DeviceAddressBindingCallbackDataEXT' describes a Vulkan object that
+--     has not been made visible to the application via a Vulkan command.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_address_binding_report VK_EXT_device_address_binding_report>,
@@ -480,9 +512,7 @@
 newtype DeviceAddressBindingFlagBitsEXT = DeviceAddressBindingFlagBitsEXT Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'DEVICE_ADDRESS_BINDING_INTERNAL_OBJECT_BIT_EXT' specifies that
--- 'DeviceAddressBindingCallbackDataEXT' describes a Vulkan object that has
--- not been made visible to the application via a Vulkan command.
+-- No documentation found for Nested "VkDeviceAddressBindingFlagBitsEXT" "VK_DEVICE_ADDRESS_BINDING_INTERNAL_OBJECT_BIT_EXT"
 pattern DEVICE_ADDRESS_BINDING_INTERNAL_OBJECT_BIT_EXT = DeviceAddressBindingFlagBitsEXT 0x00000001
 
 conNameDeviceAddressBindingFlagBitsEXT :: String
@@ -519,6 +549,14 @@
 -- | VkDeviceAddressBindingTypeEXT - Enum describing a change in device
 -- address bindings
 --
+-- = Description
+--
+-- -   'DEVICE_ADDRESS_BINDING_TYPE_BIND_EXT' specifies that a new
+--     GPU-accessible virtual address range has been bound.
+--
+-- -   'DEVICE_ADDRESS_BINDING_TYPE_UNBIND_EXT' specifies that a
+--     GPU-accessible virtual address range has been unbound.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_address_binding_report VK_EXT_device_address_binding_report>,
@@ -526,12 +564,10 @@
 newtype DeviceAddressBindingTypeEXT = DeviceAddressBindingTypeEXT Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'DEVICE_ADDRESS_BINDING_TYPE_BIND_EXT' specifies that a new
--- GPU-accessible virtual address range has been bound.
+-- No documentation found for Nested "VkDeviceAddressBindingTypeEXT" "VK_DEVICE_ADDRESS_BINDING_TYPE_BIND_EXT"
 pattern DEVICE_ADDRESS_BINDING_TYPE_BIND_EXT = DeviceAddressBindingTypeEXT 0
 
--- | 'DEVICE_ADDRESS_BINDING_TYPE_UNBIND_EXT' specifies that a GPU-accessible
--- virtual address range has been unbound.
+-- No documentation found for Nested "VkDeviceAddressBindingTypeEXT" "VK_DEVICE_ADDRESS_BINDING_TYPE_UNBIND_EXT"
 pattern DEVICE_ADDRESS_BINDING_TYPE_UNBIND_EXT = DeviceAddressBindingTypeEXT 1
 
 {-# COMPLETE
diff --git a/src/Vulkan/Extensions/VK_EXT_device_address_binding_report.hs-boot b/src/Vulkan/Extensions/VK_EXT_device_address_binding_report.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_device_address_binding_report.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_device_address_binding_report.hs-boot
@@ -18,7 +18,7 @@
 --     1
 --
 -- [__Ratification Status__]
---     Not ratified
+--     Ratified
 --
 -- [__Extension and Version Dependencies__]
 --         
@@ -210,6 +210,14 @@
 -- reporting the association between virtual address range and the
 -- buffer\/image.
 --
+-- 12.) Should binding reports be emitted for vkQueueBindSparse()
+-- operations?
+--
+-- __RESOLVED__: binding reports for sparse objects are best effort, some
+-- implementations might report events on vkQueueBindSparse() other
+-- implementations might report events on sparse object
+-- creation\/destruction.
+--
 -- == Version History
 --
 -- -   Revision 1, 2020-09-23 (Ralph Potter)
@@ -223,7 +231,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_device_address_binding_report Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_device_address_binding_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_device_fault.hs b/src/Vulkan/Extensions/VK_EXT_device_fault.hs
--- a/src/Vulkan/Extensions/VK_EXT_device_fault.hs
+++ b/src/Vulkan/Extensions/VK_EXT_device_fault.hs
@@ -18,13 +18,19 @@
 --     2
 --
 -- [__Ratification Status__]
---     Not ratified
+--     Ratified
 --
 -- [__Extension and Version Dependencies__]
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
 --     or
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
 --
+-- [__Deprecation State__]
+--
+--     -   /Promoted/ to
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_device_fault VK_KHR_device_fault>
+--         extension
+--
 -- [__Contact__]
 --
 --     -   Ralph Potter <<data:image/png;base64, GitLab>>r_potter
@@ -105,6 +111,23 @@
 --
 -- -   'EXT_DEVICE_FAULT_SPEC_VERSION'
 --
+-- -   Extending
+--     'Vulkan.Extensions.VK_KHR_device_fault.DeviceFaultAddressTypeKHR':
+--
+--     -   'DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_EXT'
+--
+--     -   'DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_EXT'
+--
+--     -   'DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_EXT'
+--
+--     -   'DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_EXT'
+--
+--     -   'DEVICE_FAULT_ADDRESS_TYPE_NONE_EXT'
+--
+--     -   'DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_EXT'
+--
+--     -   'DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_EXT'
+--
 -- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
 --
 --     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEVICE_FAULT_COUNTS_EXT'
@@ -132,38 +155,38 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_device_fault Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_device_fault 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_device_fault  ( getDeviceFaultInfoEXT
+                                              , pattern DEVICE_FAULT_ADDRESS_TYPE_NONE_EXT
+                                              , pattern DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_EXT
+                                              , pattern DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_EXT
+                                              , pattern DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_EXT
+                                              , pattern DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_EXT
+                                              , pattern DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_EXT
+                                              , pattern DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_EXT
                                               , PhysicalDeviceFaultFeaturesEXT(..)
-                                              , DeviceFaultAddressInfoEXT(..)
-                                              , DeviceFaultVendorInfoEXT(..)
                                               , DeviceFaultCountsEXT(..)
                                               , DeviceFaultInfoEXT(..)
-                                              , DeviceFaultVendorBinaryHeaderVersionOneEXT(..)
-                                              , DeviceFaultAddressTypeEXT( DEVICE_FAULT_ADDRESS_TYPE_NONE_EXT
-                                                                         , DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_EXT
-                                                                         , DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_EXT
-                                                                         , DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_EXT
-                                                                         , DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_EXT
-                                                                         , DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_EXT
-                                                                         , DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_EXT
-                                                                         , ..
-                                                                         )
-                                              , DeviceFaultVendorBinaryHeaderVersionEXT( DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_ONE_EXT
-                                                                                       , ..
-                                                                                       )
+                                              , DeviceFaultVendorBinaryHeaderVersionEXT
+                                              , DeviceFaultAddressTypeEXT
+                                              , DeviceFaultAddressInfoEXT
+                                              , DeviceFaultVendorInfoEXT
+                                              , DeviceFaultVendorBinaryHeaderVersionOneEXT
                                               , EXT_DEVICE_FAULT_SPEC_VERSION
                                               , pattern EXT_DEVICE_FAULT_SPEC_VERSION
                                               , EXT_DEVICE_FAULT_EXTENSION_NAME
                                               , pattern EXT_DEVICE_FAULT_EXTENSION_NAME
+                                              , DeviceFaultAddressInfoKHR(..)
+                                              , DeviceFaultVendorInfoKHR(..)
+                                              , DeviceFaultVendorBinaryHeaderVersionOneKHR(..)
+                                              , DeviceFaultAddressTypeKHR(..)
+                                              , DeviceFaultVendorBinaryHeaderVersionKHR(..)
                                               ) where
 
 import Vulkan.CStruct.Utils (FixedArray)
-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)
@@ -173,7 +196,6 @@
 import GHC.Ptr (nullFunPtr)
 import Foreign.Ptr (nullPtr)
 import Foreign.Ptr (plusPtr)
-import GHC.Show (showsPrec)
 import Data.ByteString (packCString)
 import Control.Monad.Trans.Class (lift)
 import Control.Monad.Trans.Cont (evalContT)
@@ -181,7 +203,6 @@
 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.String (IsString)
@@ -194,41 +215,49 @@
 import GHC.Generics (Generic)
 import GHC.IO.Exception (IOErrorType(..))
 import GHC.IO.Exception (IOException(..))
-import Data.Int (Int32)
 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.Word (Word8)
 import Data.ByteString (ByteString)
 import Data.Kind (Type)
 import Control.Monad.Trans.Cont (ContT(..))
 import Vulkan.Core10.FundamentalTypes (bool32ToBool)
 import Vulkan.Core10.FundamentalTypes (boolToBool32)
 import Vulkan.CStruct.Utils (lowerArrayPtr)
-import Vulkan.CStruct.Utils (peekByteStringFromSizedVectorPtr)
-import Vulkan.CStruct.Utils (pokeFixedLengthByteString)
 import Vulkan.CStruct.Utils (pokeFixedLengthNullTerminatedByteString)
 import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.Core10.Handles (Device)
 import Vulkan.Core10.Handles (Device(..))
 import Vulkan.Core10.Handles (Device(Device))
-import Vulkan.Core10.FundamentalTypes (DeviceAddress)
 import Vulkan.Dynamic (DeviceCmds(pVkGetDeviceFaultInfoEXT))
+import Vulkan.Extensions.VK_KHR_device_fault (DeviceFaultAddressInfoKHR)
+import Vulkan.Extensions.VK_KHR_device_fault (DeviceFaultAddressTypeKHR)
+import Vulkan.Extensions.VK_KHR_device_fault (DeviceFaultVendorBinaryHeaderVersionKHR)
+import Vulkan.Extensions.VK_KHR_device_fault (DeviceFaultVendorBinaryHeaderVersionOneKHR)
+import Vulkan.Extensions.VK_KHR_device_fault (DeviceFaultVendorInfoKHR)
 import Vulkan.Core10.FundamentalTypes (DeviceSize)
 import Vulkan.Core10.Handles (Device_T)
 import Vulkan.Core10.APIConstants (MAX_DESCRIPTION_SIZE)
 import Vulkan.Core10.Enums.Result (Result)
 import Vulkan.Core10.Enums.Result (Result(..))
 import Vulkan.Core10.Enums.StructureType (StructureType)
-import Vulkan.Core10.APIConstants (UUID_SIZE)
 import Vulkan.Exception (VulkanException(..))
+import Vulkan.Extensions.VK_KHR_device_fault (DeviceFaultAddressTypeKHR(DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_KHR))
+import Vulkan.Extensions.VK_KHR_device_fault (DeviceFaultAddressTypeKHR(DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_KHR))
+import Vulkan.Extensions.VK_KHR_device_fault (DeviceFaultAddressTypeKHR(DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_KHR))
+import Vulkan.Extensions.VK_KHR_device_fault (DeviceFaultAddressTypeKHR(DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_KHR))
+import Vulkan.Extensions.VK_KHR_device_fault (DeviceFaultAddressTypeKHR(DEVICE_FAULT_ADDRESS_TYPE_NONE_KHR))
+import Vulkan.Extensions.VK_KHR_device_fault (DeviceFaultAddressTypeKHR(DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_KHR))
+import Vulkan.Extensions.VK_KHR_device_fault (DeviceFaultAddressTypeKHR(DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_KHR))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEVICE_FAULT_COUNTS_EXT))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEVICE_FAULT_INFO_EXT))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_FEATURES_EXT))
 import Vulkan.Core10.Enums.Result (Result(SUCCESS))
+import Vulkan.Extensions.VK_KHR_device_fault (DeviceFaultAddressInfoKHR(..))
+import Vulkan.Extensions.VK_KHR_device_fault (DeviceFaultAddressTypeKHR(..))
+import Vulkan.Extensions.VK_KHR_device_fault (DeviceFaultVendorBinaryHeaderVersionKHR(..))
+import Vulkan.Extensions.VK_KHR_device_fault (DeviceFaultVendorBinaryHeaderVersionOneKHR(..))
+import Vulkan.Extensions.VK_KHR_device_fault (DeviceFaultVendorInfoKHR(..))
 foreign import ccall
 #if !defined(SAFE_FOREIGN_CALLS)
   unsafe
@@ -236,8 +265,8 @@
   "dynamic" mkVkGetDeviceFaultInfoEXT
   :: FunPtr (Ptr Device_T -> Ptr DeviceFaultCountsEXT -> Ptr DeviceFaultInfoEXT -> IO Result) -> Ptr Device_T -> Ptr DeviceFaultCountsEXT -> Ptr DeviceFaultInfoEXT -> IO Result
 
--- | vkGetDeviceFaultInfoEXT - Reports diagnostic fault information on the
--- specified logical device
+-- | vkGetDeviceFaultInfoEXT - Reports fault information for the specified
+-- device
 --
 -- = Description
 --
@@ -260,7 +289,7 @@
 -- @pFaultInfo@.
 --
 -- If the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-deviceFaultVendorBinary vendor-specific crash dumps>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-deviceFaultVendorBinaryEXT vendor-specific crash dumps>
 -- feature is not enabled, then implementations /must/ set
 -- @pFaultCounts@->vendorBinarySize to zero and /must/ not modify
 -- @pFaultInfo@->pVendorBinaryData.
@@ -297,7 +326,7 @@
 --
 -- If @pFaultCounts@->vendorBinarySize is less than what is necessary to
 -- store the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#vendor-binary-crash-dumps binary crash dump header>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#vendor-binary-crash-dumps binary crash dump header>,
 -- nothing will be written to @pFaultInfo@->pVendorBinaryData and zero will
 -- be written to @pFaultCounts@->vendorBinarySize.
 --
@@ -342,14 +371,18 @@
 --
 -- [<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'
 --
+--     -   '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_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_fault VK_EXT_device_fault>,
@@ -378,13 +411,40 @@
   pure $ (r, pFaultCounts, pFaultInfo)
 
 
+-- No documentation found for TopLevel "VK_DEVICE_FAULT_ADDRESS_TYPE_NONE_EXT"
+pattern DEVICE_FAULT_ADDRESS_TYPE_NONE_EXT = DEVICE_FAULT_ADDRESS_TYPE_NONE_KHR
+
+
+-- No documentation found for TopLevel "VK_DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_EXT"
+pattern DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_EXT = DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_KHR
+
+
+-- No documentation found for TopLevel "VK_DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_EXT"
+pattern DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_EXT = DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_KHR
+
+
+-- No documentation found for TopLevel "VK_DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_EXT"
+pattern DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_EXT = DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_KHR
+
+
+-- No documentation found for TopLevel "VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_EXT"
+pattern DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_EXT = DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_KHR
+
+
+-- No documentation found for TopLevel "VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_EXT"
+pattern DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_EXT = DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_KHR
+
+
+-- No documentation found for TopLevel "VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_EXT"
+pattern DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_EXT = DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_KHR
+
+
 -- | VkPhysicalDeviceFaultFeaturesEXT - Structure indicating support for
 -- device fault reporting
 --
 -- = Members
 --
--- The members of the 'PhysicalDeviceFaultFeaturesEXT' structure describe
--- the following features:
+-- This structure describes the following features:
 --
 -- = Description
 --
@@ -394,25 +454,35 @@
 -- 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. 'PhysicalDeviceFaultFeaturesEXT' /can/ also be used in the
--- @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to selectively
--- enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceFaultFeaturesEXT', it /must/ add an instance of the
+-- structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_fault VK_EXT_device_fault>,
 -- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceFaultFeaturesEXT = PhysicalDeviceFaultFeaturesEXT
-  { -- | #features-deviceFault# @deviceFault@ indicates that the implementation
-    -- supports the reporting of device fault information.
+  { -- | #features-deviceFaultEXT# @deviceFault@ indicates that the
+    -- implementation supports the reporting of device fault information.
     deviceFault :: Bool
-  , -- | #features-deviceFaultVendorBinary# @deviceFaultVendorBinary@ indicates
-    -- that the implementation supports the generation of vendor-specific
-    -- binary crash dumps. These may provide additional information when
-    -- imported into vendor-specific external tools.
+  , -- | #features-deviceFaultVendorBinaryEXT# @deviceFaultVendorBinary@
+    -- indicates that the implementation supports the generation of
+    -- vendor-specific binary crash dumps. These may provide additional
+    -- information when imported into vendor-specific external tools.
     deviceFaultVendorBinary :: Bool
   }
   deriving (Typeable, Eq)
@@ -457,148 +527,6 @@
            zero
 
 
--- | VkDeviceFaultAddressInfoEXT - Structure specifying GPU virtual address
--- information
---
--- = Description
---
--- The combination of @reportedAddress@ and @addressPrecision@ allow the
--- possible range of addresses to be calculated, such that:
---
--- > lower_address = (pInfo->reportedAddress & ~(pInfo->addressPrecision-1))
--- > upper_address = (pInfo->reportedAddress |  (pInfo->addressPrecision-1))
---
--- It is valid for the @reportedAddress@ to contain a more precise address
--- than indicated by @addressPrecision@. In this case, the value of
--- @reportedAddress@ should be treated as an additional hint as to the
--- value of the address that triggered the page fault, or to the value of
--- an instruction pointer.
---
--- == Valid Usage (Implicit)
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_fault VK_EXT_device_fault>,
--- 'Vulkan.Core10.FundamentalTypes.DeviceAddress',
--- 'DeviceFaultAddressTypeEXT', 'DeviceFaultInfoEXT',
--- 'Vulkan.Core10.FundamentalTypes.DeviceSize'
-data DeviceFaultAddressInfoEXT = DeviceFaultAddressInfoEXT
-  { -- | @addressType@ is either the type of memory operation that triggered a
-    -- page fault, or the type of association between an instruction pointer
-    -- and a fault.
-    --
-    -- #VUID-VkDeviceFaultAddressInfoEXT-addressType-parameter# @addressType@
-    -- /must/ be a valid 'DeviceFaultAddressTypeEXT' value
-    addressType :: DeviceFaultAddressTypeEXT
-  , -- | @reportedAddress@ is the GPU virtual address recorded by the device.
-    reportedAddress :: DeviceAddress
-  , -- | @addressPrecision@ is a power of two value that specifies how precisely
-    -- the device can report the address.
-    addressPrecision :: DeviceSize
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (DeviceFaultAddressInfoEXT)
-#endif
-deriving instance Show DeviceFaultAddressInfoEXT
-
-instance ToCStruct DeviceFaultAddressInfoEXT where
-  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p DeviceFaultAddressInfoEXT{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr DeviceFaultAddressTypeEXT)) (addressType)
-    poke ((p `plusPtr` 8 :: Ptr DeviceAddress)) (reportedAddress)
-    poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (addressPrecision)
-    f
-  cStructSize = 24
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr DeviceFaultAddressTypeEXT)) (zero)
-    poke ((p `plusPtr` 8 :: Ptr DeviceAddress)) (zero)
-    poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (zero)
-    f
-
-instance FromCStruct DeviceFaultAddressInfoEXT where
-  peekCStruct p = do
-    addressType <- peek @DeviceFaultAddressTypeEXT ((p `plusPtr` 0 :: Ptr DeviceFaultAddressTypeEXT))
-    reportedAddress <- peek @DeviceAddress ((p `plusPtr` 8 :: Ptr DeviceAddress))
-    addressPrecision <- peek @DeviceSize ((p `plusPtr` 16 :: Ptr DeviceSize))
-    pure $ DeviceFaultAddressInfoEXT
-             addressType reportedAddress addressPrecision
-
-instance Storable DeviceFaultAddressInfoEXT where
-  sizeOf ~_ = 24
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero DeviceFaultAddressInfoEXT where
-  zero = DeviceFaultAddressInfoEXT
-           zero
-           zero
-           zero
-
-
--- | VkDeviceFaultVendorInfoEXT - Structure specifying vendor-specific fault
--- information
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_fault VK_EXT_device_fault>,
--- 'DeviceFaultInfoEXT'
-data DeviceFaultVendorInfoEXT = DeviceFaultVendorInfoEXT
-  { -- | @description@ is an array of
-    -- 'Vulkan.Core10.APIConstants.MAX_DESCRIPTION_SIZE' @char@ containing a
-    -- null-terminated UTF-8 string which is a human readable description of
-    -- the fault.
-    description :: ByteString
-  , -- | @vendorFaultCode@ is the vendor-specific fault code for this fault.
-    vendorFaultCode :: Word64
-  , -- | @vendorFaultData@ is the vendor-specific fault data associated with this
-    -- fault.
-    vendorFaultData :: Word64
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (DeviceFaultVendorInfoEXT)
-#endif
-deriving instance Show DeviceFaultVendorInfoEXT
-
-instance ToCStruct DeviceFaultVendorInfoEXT where
-  withCStruct x f = allocaBytes 272 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p DeviceFaultVendorInfoEXT{..} f = do
-    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 0 :: Ptr (FixedArray MAX_DESCRIPTION_SIZE CChar))) (description)
-    poke ((p `plusPtr` 256 :: Ptr Word64)) (vendorFaultCode)
-    poke ((p `plusPtr` 264 :: Ptr Word64)) (vendorFaultData)
-    f
-  cStructSize = 272
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 0 :: Ptr (FixedArray MAX_DESCRIPTION_SIZE CChar))) (mempty)
-    poke ((p `plusPtr` 256 :: Ptr Word64)) (zero)
-    poke ((p `plusPtr` 264 :: Ptr Word64)) (zero)
-    f
-
-instance FromCStruct DeviceFaultVendorInfoEXT where
-  peekCStruct p = do
-    description <- packCString (lowerArrayPtr ((p `plusPtr` 0 :: Ptr (FixedArray MAX_DESCRIPTION_SIZE CChar))))
-    vendorFaultCode <- peek @Word64 ((p `plusPtr` 256 :: Ptr Word64))
-    vendorFaultData <- peek @Word64 ((p `plusPtr` 264 :: Ptr Word64))
-    pure $ DeviceFaultVendorInfoEXT
-             description vendorFaultCode vendorFaultData
-
-instance Storable DeviceFaultVendorInfoEXT where
-  sizeOf ~_ = 272
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero DeviceFaultVendorInfoEXT where
-  zero = DeviceFaultVendorInfoEXT
-           mempty
-           zero
-           zero
-
-
 -- | VkDeviceFaultCountsEXT - Structure specifying device fault information
 --
 -- == Valid Usage (Implicit)
@@ -701,7 +629,8 @@
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_fault VK_EXT_device_fault>,
--- 'DeviceFaultAddressInfoEXT', 'DeviceFaultVendorInfoEXT',
+-- 'Vulkan.Extensions.VK_KHR_device_fault.DeviceFaultAddressInfoKHR',
+-- 'Vulkan.Extensions.VK_KHR_device_fault.DeviceFaultVendorInfoKHR',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType',
 -- 'getDeviceFaultInfoEXT'
 data DeviceFaultInfoEXT = DeviceFaultInfoEXT
@@ -713,19 +642,25 @@
   , -- | @pAddressInfos@ is @NULL@ or a pointer to an array of
     -- 'DeviceFaultAddressInfoEXT' structures describing either memory accesses
     -- which /may/ have caused a page fault, or describing active instruction
-    -- pointers at the time of the fault. If not @NULL@, each element of
-    -- @pAddressInfos@ describes the a bounded region of GPU virtual address
-    -- space containing either the GPU virtual address accessed, or the value
-    -- of an active instruction pointer.
-    addressInfos :: Ptr DeviceFaultAddressInfoEXT
+    -- pointers at the time of the fault. The length of @pAddressInfos@ is
+    -- specified by the 'DeviceFaultCountsEXT'::@addressInfoCount@ value passed
+    -- to 'getDeviceFaultInfoEXT'. If not @NULL@, each element of
+    -- @pAddressInfos@ describes a bounded region of GPU virtual address space
+    -- containing either the GPU virtual address accessed, or the value of an
+    -- active instruction pointer.
+    addressInfos :: Ptr DeviceFaultAddressInfoKHR
   , -- | @pVendorInfos@ is @NULL@ or a pointer to an array of
     -- 'DeviceFaultVendorInfoEXT' structures describing vendor-specific fault
-    -- information.
-    vendorInfos :: Ptr DeviceFaultVendorInfoEXT
-  , -- | @pVendorBinaryData@ is @NULL@ or a pointer to @vendorBinarySize@ number
-    -- of bytes of data, which will be populated with a vendor-specific binary
-    -- crash dump, as described in
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#vendor-binary-crash-dumps Vendor Binary Crash Dumps>.
+    -- information. The length of @pVendorInfos@ is specified by the
+    -- 'DeviceFaultCountsEXT'::@vendorInfoCount@ value passed to
+    -- 'getDeviceFaultInfoEXT'.
+    vendorInfos :: Ptr DeviceFaultVendorInfoKHR
+  , -- | @pVendorBinaryData@ is @NULL@ or a pointer to memory which will be
+    -- populated with a vendor-specific binary crash dump, as described in
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#vendor-binary-crash-dumps Vendor Binary Crash Dumps>.
+    -- The size of @pVendorBinaryData@ is specified by the
+    -- 'DeviceFaultCountsEXT'::@vendorBinarySize@ value passed to
+    -- 'getDeviceFaultInfoEXT'.
     vendorBinaryData :: Ptr ()
   }
   deriving (Typeable)
@@ -740,8 +675,8 @@
     poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_FAULT_INFO_EXT)
     poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
     pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 16 :: Ptr (FixedArray MAX_DESCRIPTION_SIZE CChar))) (description)
-    poke ((p `plusPtr` 272 :: Ptr (Ptr DeviceFaultAddressInfoEXT))) (addressInfos)
-    poke ((p `plusPtr` 280 :: Ptr (Ptr DeviceFaultVendorInfoEXT))) (vendorInfos)
+    poke ((p `plusPtr` 272 :: Ptr (Ptr DeviceFaultAddressInfoKHR))) (addressInfos)
+    poke ((p `plusPtr` 280 :: Ptr (Ptr DeviceFaultVendorInfoKHR))) (vendorInfos)
     poke ((p `plusPtr` 288 :: Ptr (Ptr ()))) (vendorBinaryData)
     f
   cStructSize = 296
@@ -755,8 +690,8 @@
 instance FromCStruct DeviceFaultInfoEXT where
   peekCStruct p = do
     description <- packCString (lowerArrayPtr ((p `plusPtr` 16 :: Ptr (FixedArray MAX_DESCRIPTION_SIZE CChar))))
-    pAddressInfos <- peek @(Ptr DeviceFaultAddressInfoEXT) ((p `plusPtr` 272 :: Ptr (Ptr DeviceFaultAddressInfoEXT)))
-    pVendorInfos <- peek @(Ptr DeviceFaultVendorInfoEXT) ((p `plusPtr` 280 :: Ptr (Ptr DeviceFaultVendorInfoEXT)))
+    pAddressInfos <- peek @(Ptr DeviceFaultAddressInfoKHR) ((p `plusPtr` 272 :: Ptr (Ptr DeviceFaultAddressInfoKHR)))
+    pVendorInfos <- peek @(Ptr DeviceFaultVendorInfoKHR) ((p `plusPtr` 280 :: Ptr (Ptr DeviceFaultVendorInfoKHR)))
     pVendorBinaryData <- peek @(Ptr ()) ((p `plusPtr` 288 :: Ptr (Ptr ())))
     pure $ DeviceFaultInfoEXT
              description pAddressInfos pVendorInfos pVendorBinaryData
@@ -775,338 +710,25 @@
            zero
 
 
--- | VkDeviceFaultVendorBinaryHeaderVersionOneEXT - Structure describing the
--- layout of the vendor binary crash dump header
---
--- = Description
---
--- Unlike most structures declared by the Vulkan API, all fields of this
--- structure are written with the least significant byte first, regardless
--- of host byte-order.
---
--- The C language specification does not define the packing of structure
--- members. This layout assumes tight structure member packing, with
--- members laid out in the order listed in the structure, and the intended
--- size of the structure is 56 bytes. If a compiler produces code that
--- diverges from that pattern, applications /must/ employ another method to
--- set values at the correct offsets.
---
--- == Valid Usage (Implicit)
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_fault VK_EXT_device_fault>,
--- 'DeviceFaultVendorBinaryHeaderVersionEXT'
-data DeviceFaultVendorBinaryHeaderVersionOneEXT = DeviceFaultVendorBinaryHeaderVersionOneEXT
-  { -- | @headerSize@ is the length in bytes of the crash dump header.
-    --
-    -- #VUID-VkDeviceFaultVendorBinaryHeaderVersionOneEXT-headerSize-07340#
-    -- @headerSize@ /must/ be 56
-    headerSize :: Word32
-  , -- | @headerVersion@ is a 'DeviceFaultVendorBinaryHeaderVersionEXT' enum
-    -- value specifying the version of the header. A consumer of the crash dump
-    -- /should/ use the header version to interpret the remainder of the
-    -- header.
-    --
-    -- #VUID-VkDeviceFaultVendorBinaryHeaderVersionOneEXT-headerVersion-07341#
-    -- @headerVersion@ /must/ be
-    -- 'DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_ONE_EXT'
-    --
-    -- #VUID-VkDeviceFaultVendorBinaryHeaderVersionOneEXT-headerVersion-parameter#
-    -- @headerVersion@ /must/ be a valid
-    -- 'DeviceFaultVendorBinaryHeaderVersionEXT' value
-    headerVersion :: DeviceFaultVendorBinaryHeaderVersionEXT
-  , -- | @vendorID@ is the
-    -- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceProperties'::@vendorID@
-    -- of the implementation.
-    vendorID :: Word32
-  , -- | @deviceID@ is the
-    -- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceProperties'::@deviceID@
-    -- of the implementation.
-    deviceID :: Word32
-  , -- | @driverVersion@ is the
-    -- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceProperties'::@driverVersion@
-    -- of the implementation.
-    driverVersion :: Word32
-  , -- | @pipelineCacheUUID@ is an array of
-    -- 'Vulkan.Core10.APIConstants.UUID_SIZE' @uint8_t@ values matching the
-    -- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceProperties'::@pipelineCacheUUID@
-    -- property of the implementation.
-    pipelineCacheUUID :: ByteString
-  , -- | @applicationNameOffset@ is zero, or an offset from the base address of
-    -- the crash dump header to a null-terminated UTF-8 string containing the
-    -- name of the application. If @applicationNameOffset@ is non-zero, this
-    -- string /must/ match the application name specified via
-    -- 'Vulkan.Core10.DeviceInitialization.ApplicationInfo'::@pApplicationName@
-    -- during instance creation.
-    applicationNameOffset :: Word32
-  , -- | @applicationVersion@ /must/ be zero or the value specified by
-    -- 'Vulkan.Core10.DeviceInitialization.ApplicationInfo'::@applicationVersion@
-    -- during instance creation.
-    applicationVersion :: Word32
-  , -- | @engineNameOffset@ is zero, or an offset from the base address of the
-    -- crash dump header to a null-terminated UTF-8 string containing the name
-    -- of the engine (if any) used to create the application. If
-    -- @engineNameOffset@ is non-zero, this string /must/ match the engine name
-    -- specified via
-    -- 'Vulkan.Core10.DeviceInitialization.ApplicationInfo'::@pEngineName@
-    -- during instance creation.
-    engineNameOffset :: Word32
-  , -- | @engineVersion@ /must/ be zero or the value specified by
-    -- 'Vulkan.Core10.DeviceInitialization.ApplicationInfo'::@engineVersion@
-    -- during instance creation.
-    engineVersion :: Word32
-  , -- | @apiVersion@ /must/ be zero or the value specified by
-    -- 'Vulkan.Core10.DeviceInitialization.ApplicationInfo'::@apiVersion@
-    -- during instance creation.
-    apiVersion :: Word32
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (DeviceFaultVendorBinaryHeaderVersionOneEXT)
-#endif
-deriving instance Show DeviceFaultVendorBinaryHeaderVersionOneEXT
+-- No documentation found for TopLevel "VkDeviceFaultVendorBinaryHeaderVersionEXT"
+type DeviceFaultVendorBinaryHeaderVersionEXT = DeviceFaultVendorBinaryHeaderVersionKHR
 
-instance ToCStruct DeviceFaultVendorBinaryHeaderVersionOneEXT where
-  withCStruct x f = allocaBytes 56 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p DeviceFaultVendorBinaryHeaderVersionOneEXT{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr Word32)) (headerSize)
-    poke ((p `plusPtr` 4 :: Ptr DeviceFaultVendorBinaryHeaderVersionEXT)) (headerVersion)
-    poke ((p `plusPtr` 8 :: Ptr Word32)) (vendorID)
-    poke ((p `plusPtr` 12 :: Ptr Word32)) (deviceID)
-    poke ((p `plusPtr` 16 :: Ptr Word32)) (driverVersion)
-    pokeFixedLengthByteString ((p `plusPtr` 20 :: Ptr (FixedArray UUID_SIZE Word8))) (pipelineCacheUUID)
-    poke ((p `plusPtr` 36 :: Ptr Word32)) (applicationNameOffset)
-    poke ((p `plusPtr` 40 :: Ptr Word32)) (applicationVersion)
-    poke ((p `plusPtr` 44 :: Ptr Word32)) (engineNameOffset)
-    poke ((p `plusPtr` 48 :: Ptr Word32)) (engineVersion)
-    poke ((p `plusPtr` 52 :: Ptr Word32)) (apiVersion)
-    f
-  cStructSize = 56
-  cStructAlignment = 4
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 4 :: Ptr DeviceFaultVendorBinaryHeaderVersionEXT)) (zero)
-    poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 12 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
-    pokeFixedLengthByteString ((p `plusPtr` 20 :: Ptr (FixedArray UUID_SIZE Word8))) (mempty)
-    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)
-    f
 
-instance FromCStruct DeviceFaultVendorBinaryHeaderVersionOneEXT where
-  peekCStruct p = do
-    headerSize <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))
-    headerVersion <- peek @DeviceFaultVendorBinaryHeaderVersionEXT ((p `plusPtr` 4 :: Ptr DeviceFaultVendorBinaryHeaderVersionEXT))
-    vendorID <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))
-    deviceID <- peek @Word32 ((p `plusPtr` 12 :: Ptr Word32))
-    driverVersion <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
-    pipelineCacheUUID <- peekByteStringFromSizedVectorPtr ((p `plusPtr` 20 :: Ptr (FixedArray UUID_SIZE Word8)))
-    applicationNameOffset <- peek @Word32 ((p `plusPtr` 36 :: Ptr Word32))
-    applicationVersion <- peek @Word32 ((p `plusPtr` 40 :: Ptr Word32))
-    engineNameOffset <- peek @Word32 ((p `plusPtr` 44 :: Ptr Word32))
-    engineVersion <- peek @Word32 ((p `plusPtr` 48 :: Ptr Word32))
-    apiVersion <- peek @Word32 ((p `plusPtr` 52 :: Ptr Word32))
-    pure $ DeviceFaultVendorBinaryHeaderVersionOneEXT
-             headerSize
-             headerVersion
-             vendorID
-             deviceID
-             driverVersion
-             pipelineCacheUUID
-             applicationNameOffset
-             applicationVersion
-             engineNameOffset
-             engineVersion
-             apiVersion
+-- No documentation found for TopLevel "VkDeviceFaultAddressTypeEXT"
+type DeviceFaultAddressTypeEXT = DeviceFaultAddressTypeKHR
 
-instance Storable DeviceFaultVendorBinaryHeaderVersionOneEXT where
-  sizeOf ~_ = 56
-  alignment ~_ = 4
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
 
-instance Zero DeviceFaultVendorBinaryHeaderVersionOneEXT where
-  zero = DeviceFaultVendorBinaryHeaderVersionOneEXT
-           zero
-           zero
-           zero
-           zero
-           zero
-           mempty
-           zero
-           zero
-           zero
-           zero
-           zero
+-- No documentation found for TopLevel "VkDeviceFaultAddressInfoEXT"
+type DeviceFaultAddressInfoEXT = DeviceFaultAddressInfoKHR
 
 
--- | VkDeviceFaultAddressTypeEXT - Page fault access types
---
--- = Description
---
--- The instruction pointer values recorded may not identify the specific
--- instruction(s) that triggered the fault. The relationship between the
--- instruction pointer reported and triggering instruction will be
--- vendor-specific.
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_fault VK_EXT_device_fault>,
--- 'DeviceFaultAddressInfoEXT'
-newtype DeviceFaultAddressTypeEXT = DeviceFaultAddressTypeEXT Int32
-  deriving newtype (Eq, Ord, Storable, Zero)
+-- No documentation found for TopLevel "VkDeviceFaultVendorInfoEXT"
+type DeviceFaultVendorInfoEXT = DeviceFaultVendorInfoKHR
 
--- | 'DEVICE_FAULT_ADDRESS_TYPE_NONE_EXT' specifies that
--- 'DeviceFaultAddressInfoEXT' does not describe a page fault, or an
--- instruction address.
-pattern DEVICE_FAULT_ADDRESS_TYPE_NONE_EXT = DeviceFaultAddressTypeEXT 0
 
--- | 'DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_EXT' specifies that
--- 'DeviceFaultAddressInfoEXT' describes a page fault triggered by an
--- invalid read operation.
-pattern DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_EXT = DeviceFaultAddressTypeEXT 1
-
--- | 'DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_EXT' specifies that
--- 'DeviceFaultAddressInfoEXT' describes a page fault triggered by an
--- invalid write operation.
-pattern DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_EXT = DeviceFaultAddressTypeEXT 2
-
--- | 'DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_EXT' describes a page fault
--- triggered by an attempt to execute non-executable memory.
-pattern DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_EXT = DeviceFaultAddressTypeEXT 3
-
--- | 'DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_EXT' specifies an
--- instruction pointer value at the time the fault occurred. This may or
--- may not be related to a fault.
-pattern DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_EXT = DeviceFaultAddressTypeEXT 4
-
--- | 'DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_EXT' specifies an
--- instruction pointer value associated with an invalid instruction fault.
-pattern DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_EXT = DeviceFaultAddressTypeEXT 5
-
--- | 'DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_EXT' specifies an
--- instruction pointer value associated with a fault.
-pattern DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_EXT = DeviceFaultAddressTypeEXT 6
-
-{-# COMPLETE
-  DEVICE_FAULT_ADDRESS_TYPE_NONE_EXT
-  , DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_EXT
-  , DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_EXT
-  , DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_EXT
-  , DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_EXT
-  , DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_EXT
-  , DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_EXT ::
-    DeviceFaultAddressTypeEXT
-  #-}
-
-conNameDeviceFaultAddressTypeEXT :: String
-conNameDeviceFaultAddressTypeEXT = "DeviceFaultAddressTypeEXT"
-
-enumPrefixDeviceFaultAddressTypeEXT :: String
-enumPrefixDeviceFaultAddressTypeEXT = "DEVICE_FAULT_ADDRESS_TYPE_"
-
-showTableDeviceFaultAddressTypeEXT :: [(DeviceFaultAddressTypeEXT, String)]
-showTableDeviceFaultAddressTypeEXT =
-  [
-    ( DEVICE_FAULT_ADDRESS_TYPE_NONE_EXT
-    , "NONE_EXT"
-    )
-  ,
-    ( DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_EXT
-    , "READ_INVALID_EXT"
-    )
-  ,
-    ( DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_EXT
-    , "WRITE_INVALID_EXT"
-    )
-  ,
-    ( DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_EXT
-    , "EXECUTE_INVALID_EXT"
-    )
-  ,
-    ( DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_EXT
-    , "INSTRUCTION_POINTER_UNKNOWN_EXT"
-    )
-  ,
-    ( DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_EXT
-    , "INSTRUCTION_POINTER_INVALID_EXT"
-    )
-  ,
-    ( DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_EXT
-    , "INSTRUCTION_POINTER_FAULT_EXT"
-    )
-  ]
-
-instance Show DeviceFaultAddressTypeEXT where
-  showsPrec =
-    enumShowsPrec
-      enumPrefixDeviceFaultAddressTypeEXT
-      showTableDeviceFaultAddressTypeEXT
-      conNameDeviceFaultAddressTypeEXT
-      (\(DeviceFaultAddressTypeEXT x) -> x)
-      (showsPrec 11)
-
-instance Read DeviceFaultAddressTypeEXT where
-  readPrec =
-    enumReadPrec
-      enumPrefixDeviceFaultAddressTypeEXT
-      showTableDeviceFaultAddressTypeEXT
-      conNameDeviceFaultAddressTypeEXT
-      DeviceFaultAddressTypeEXT
-
--- | VkDeviceFaultVendorBinaryHeaderVersionEXT - Encode vendor binary crash
--- dump version
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_fault VK_EXT_device_fault>,
--- 'DeviceFaultVendorBinaryHeaderVersionOneEXT', 'getDeviceFaultInfoEXT'
-newtype DeviceFaultVendorBinaryHeaderVersionEXT = DeviceFaultVendorBinaryHeaderVersionEXT 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
-
--- | 'DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_ONE_EXT' specifies version
--- one of the binary crash dump header.
-pattern DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_ONE_EXT = DeviceFaultVendorBinaryHeaderVersionEXT 1
-
-{-# COMPLETE DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_ONE_EXT :: DeviceFaultVendorBinaryHeaderVersionEXT #-}
-
-conNameDeviceFaultVendorBinaryHeaderVersionEXT :: String
-conNameDeviceFaultVendorBinaryHeaderVersionEXT = "DeviceFaultVendorBinaryHeaderVersionEXT"
-
-enumPrefixDeviceFaultVendorBinaryHeaderVersionEXT :: String
-enumPrefixDeviceFaultVendorBinaryHeaderVersionEXT = "DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_ONE_EXT"
-
-showTableDeviceFaultVendorBinaryHeaderVersionEXT :: [(DeviceFaultVendorBinaryHeaderVersionEXT, String)]
-showTableDeviceFaultVendorBinaryHeaderVersionEXT =
-  [
-    ( DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_ONE_EXT
-    , ""
-    )
-  ]
-
-instance Show DeviceFaultVendorBinaryHeaderVersionEXT where
-  showsPrec =
-    enumShowsPrec
-      enumPrefixDeviceFaultVendorBinaryHeaderVersionEXT
-      showTableDeviceFaultVendorBinaryHeaderVersionEXT
-      conNameDeviceFaultVendorBinaryHeaderVersionEXT
-      (\(DeviceFaultVendorBinaryHeaderVersionEXT x) -> x)
-      (showsPrec 11)
+-- No documentation found for TopLevel "VkDeviceFaultVendorBinaryHeaderVersionOneEXT"
+type DeviceFaultVendorBinaryHeaderVersionOneEXT = DeviceFaultVendorBinaryHeaderVersionOneKHR
 
-instance Read DeviceFaultVendorBinaryHeaderVersionEXT where
-  readPrec =
-    enumReadPrec
-      enumPrefixDeviceFaultVendorBinaryHeaderVersionEXT
-      showTableDeviceFaultVendorBinaryHeaderVersionEXT
-      conNameDeviceFaultVendorBinaryHeaderVersionEXT
-      DeviceFaultVendorBinaryHeaderVersionEXT
 
 type EXT_DEVICE_FAULT_SPEC_VERSION = 2
 
diff --git a/src/Vulkan/Extensions/VK_EXT_device_fault.hs-boot b/src/Vulkan/Extensions/VK_EXT_device_fault.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_device_fault.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_device_fault.hs-boot
@@ -18,13 +18,19 @@
 --     2
 --
 -- [__Ratification Status__]
---     Not ratified
+--     Ratified
 --
 -- [__Extension and Version Dependencies__]
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
 --     or
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
 --
+-- [__Deprecation State__]
+--
+--     -   /Promoted/ to
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_device_fault VK_KHR_device_fault>
+--         extension
+--
 -- [__Contact__]
 --
 --     -   Ralph Potter <<data:image/png;base64, GitLab>>r_potter
@@ -105,6 +111,23 @@
 --
 -- -   'EXT_DEVICE_FAULT_SPEC_VERSION'
 --
+-- -   Extending
+--     'Vulkan.Extensions.VK_KHR_device_fault.DeviceFaultAddressTypeKHR':
+--
+--     -   'DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_EXT'
+--
+--     -   'DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_EXT'
+--
+--     -   'DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_EXT'
+--
+--     -   'DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_EXT'
+--
+--     -   'DEVICE_FAULT_ADDRESS_TYPE_NONE_EXT'
+--
+--     -   'DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_EXT'
+--
+--     -   'DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_EXT'
+--
 -- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
 --
 --     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEVICE_FAULT_COUNTS_EXT'
@@ -132,15 +155,12 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_device_fault Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_device_fault 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_device_fault  ( DeviceFaultAddressInfoEXT
-                                              , DeviceFaultCountsEXT
+module Vulkan.Extensions.VK_EXT_device_fault  ( DeviceFaultCountsEXT
                                               , DeviceFaultInfoEXT
-                                              , DeviceFaultVendorBinaryHeaderVersionOneEXT
-                                              , DeviceFaultVendorInfoEXT
                                               , PhysicalDeviceFaultFeaturesEXT
                                               ) where
 
@@ -148,14 +168,6 @@
 import Vulkan.CStruct (ToCStruct)
 import Data.Kind (Type)
 
-data DeviceFaultAddressInfoEXT
-
-instance ToCStruct DeviceFaultAddressInfoEXT
-instance Show DeviceFaultAddressInfoEXT
-
-instance FromCStruct DeviceFaultAddressInfoEXT
-
-
 data DeviceFaultCountsEXT
 
 instance ToCStruct DeviceFaultCountsEXT
@@ -170,22 +182,6 @@
 instance Show DeviceFaultInfoEXT
 
 instance FromCStruct DeviceFaultInfoEXT
-
-
-data DeviceFaultVendorBinaryHeaderVersionOneEXT
-
-instance ToCStruct DeviceFaultVendorBinaryHeaderVersionOneEXT
-instance Show DeviceFaultVendorBinaryHeaderVersionOneEXT
-
-instance FromCStruct DeviceFaultVendorBinaryHeaderVersionOneEXT
-
-
-data DeviceFaultVendorInfoEXT
-
-instance ToCStruct DeviceFaultVendorInfoEXT
-instance Show DeviceFaultVendorInfoEXT
-
-instance FromCStruct DeviceFaultVendorInfoEXT
 
 
 data PhysicalDeviceFaultFeaturesEXT
diff --git a/src/Vulkan/Extensions/VK_EXT_device_generated_commands.hs b/src/Vulkan/Extensions/VK_EXT_device_generated_commands.hs
--- a/src/Vulkan/Extensions/VK_EXT_device_generated_commands.hs
+++ b/src/Vulkan/Extensions/VK_EXT_device_generated_commands.hs
@@ -21,7937 +21,8787 @@
 --     Ratified
 --
 -- [__Extension and Version Dependencies__]
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_buffer_device_address VK_KHR_buffer_device_address>
---     and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance5 VK_KHR_maintenance5>
---
--- [__API Interactions__]
---
---     -   Interacts with VK_EXT_shader_object
---
--- [__Contact__]
---
---     -   Mike Blumenkrantz
---         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_device_generated_commands] @zmike%0A*Here describe the issue or question you have about the VK_EXT_device_generated_commands extension* >
---
--- [__Extension Proposal__]
---     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_EXT_device_generated_commands.adoc VK_EXT_device_generated_commands>
---
--- == Other Extension Metadata
---
--- [__Last Modified Date__]
---     2024-02-23
---
--- [__Interactions and External Dependencies__]
---
---     -   This extension requires Vulkan 1.1
---
---     -   This extension requires @VK_EXT_buffer_device_address@ or
---         @VK_KHR_buffer_device_address@ or Vulkan 1.2 for the ability to
---         bind vertex and index buffers on the device.
---
---     -   This extension requires @VK_KHR_maintenance5@ for the ability to
---         use VkPipelineCreateFlags2KHR.
---
---     -   This extension interacts with @VK_NV_mesh_shader@. If the latter
---         extension is not supported, remove the command tokens to
---         initiate NV mesh tasks drawing in this extension.
---
---     -   This extension interacts with @VK_EXT_mesh_shader@. If the
---         latter extension is not supported, remove the command tokens to
---         initiate EXT mesh tasks drawing in this extension.
---
---     -   This extension interacts with @VK_KHR_ray_tracing_pipeline@. If
---         the latter extension is not supported, remove the command tokens
---         to initiate ray tracing in this extension.
---
---     -   This extension interacts with @VK_EXT_shader_object@. If the
---         latter extension is not supported, remove references to shader
---         objects in this extension.
---
--- [__Contributors__]
---
---     -   Mike Blumenkrantz, VALVE
---
---     -   Hans-Kristian Arntzen, VALVE
---
---     -   Jan-Harald Fredriksen, ARM
---
---     -   Spencer Fricke, LunarG
---
---     -   Ricardo Garcia, Igalia
---
---     -   Tobias Hector, AMD
---
---     -   Baldur Karlsson, VALVE
---
---     -   Christoph Kubisch, NVIDIA
---
---     -   Lionel Landwerlin, INTEL
---
---     -   Jon Leech, Khronos
---
---     -   Ting Wei, ARM
---
---     -   Ken Shanyi Zhang, AMD
---
---     -   Faith Ekstrand, Collabora
---
---     -   Vikram Kushwaha, NVIDIA
---
---     -   Connor Abbott, VALVE
---
---     -   Samuel Pitoiset, VALVE
---
--- == Description
---
--- This extension allows the device to generate a number of commands for
--- command buffers. It provides a subset of functionality from both
--- @VK_NV_device_generated_commands@ and
--- @VK_NV_device_generated_commands_compute@ as well as some new features.
---
--- When rendering a large number of objects, the device can be leveraged to
--- implement a number of critical functions, like updating matrices, or
--- implementing occlusion culling, frustum culling, front to back sorting,
--- etc. Implementing those on the device does not require any special
--- extension, since an application is free to define its own data
--- structures, and just process them using shaders.
---
--- To render objects which have been processed on the device, Vulkan has
--- several ways to perform indirect rendering, from the most basic
--- 'Vulkan.Core10.CommandBufferBuilding.cmdDrawIndirect' with one indirect
--- draw to
--- 'Vulkan.Core12.Promoted_From_VK_KHR_draw_indirect_count.cmdDrawIndirectCount'
--- which supports multiple indirect draws batched together, with a way to
--- determine number of draws at device execution time.
---
--- However, if rendering state needs to change between the indirect draws,
--- then unextended Vulkan forces the application to speculatively record a
--- prohibitive number of redundant indirect commands covering all possible
--- state combinations - which could end up processing nothing after culling
--- - or read back the processed stream and issue graphics command from the
--- host. For very large scenes, the synchronization overhead and cost to
--- generate the command buffer can become the bottleneck. This extension
--- allows an application to generate a device side stream of state changes
--- and commands, and convert it efficiently into a command buffer without
--- having to read it back to the host.
---
--- Furthermore, it allows incremental changes to such command buffers by
--- manipulating only partial sections of a command stream — for example
--- pipeline and shader object bindings. Unextended Vulkan requires
--- re-creation of entire command buffers in such a scenario, or updates
--- synchronized on the host.
---
--- The intended usage for this extension is for the application to:
---
--- -   create 'Vulkan.Core10.Handles.Buffer' objects and retrieve physical
---     addresses from them via
---     'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.getBufferDeviceAddress'
---
--- -   create a 'Vulkan.Extensions.Handles.IndirectExecutionSetEXT' for the
---     ability to change shaders on the device.
---
--- -   create a 'Vulkan.Extensions.Handles.IndirectCommandsLayoutEXT',
---     which lists the 'IndirectCommandsTokenTypeEXT' it wants to
---     dynamically execute as an atomic command sequence. This step likely
---     involves some internal device code compilation, since the intent is
---     for the GPU to generate the command buffer based on the layout.
---
--- -   fill the input stream buffers with the data for each of the inputs
---     it needs. Each input is an array that will be filled with
---     token-dependent data.
---
--- -   set up a preprocess 'Vulkan.Core10.Handles.Buffer' that uses memory
---     according to the information retrieved via
---     'getGeneratedCommandsMemoryRequirementsEXT'.
---
--- -   optionally preprocess the generated content using
---     'cmdPreprocessGeneratedCommandsEXT', for example on an asynchronous
---     compute queue, or for the purpose of re-using the data in multiple
---     executions.
---
--- -   call 'cmdExecuteGeneratedCommandsEXT' to create and execute the
---     actual device commands for all sequences based on the inputs
---     provided.
---
--- For each draw in a sequence, the following can be specified:
---
--- -   a number of vertex buffer bindings
---
--- -   a different index buffer, with an optional dynamic offset and index
---     type
---
--- -   a number of different push constants
---
--- -   updates to bound shader stages
---
--- For each dispatch in a sequence, the following can be specified:
---
--- -   a number of different push constants
---
--- -   updates to bound shader stages
---
--- For each trace rays in a sequence, the following can be specified:
---
--- -   a number of different push constants
---
--- -   updates to bound shader stages
---
--- While the GPU can be faster than a CPU to generate the commands, it will
--- not happen asynchronously to the device, therefore the primary use case
--- is generating “less” total work (occlusion culling, classification to
--- use specialized shaders, etc.).
---
--- == New Object Types
---
--- -   'Vulkan.Extensions.Handles.IndirectCommandsLayoutEXT'
---
--- -   'Vulkan.Extensions.Handles.IndirectExecutionSetEXT'
---
--- == New Commands
---
--- -   'cmdExecuteGeneratedCommandsEXT'
---
--- -   'cmdPreprocessGeneratedCommandsEXT'
---
--- -   'createIndirectCommandsLayoutEXT'
---
--- -   'createIndirectExecutionSetEXT'
---
--- -   'destroyIndirectCommandsLayoutEXT'
---
--- -   'destroyIndirectExecutionSetEXT'
---
--- -   'getGeneratedCommandsMemoryRequirementsEXT'
---
--- -   'updateIndirectExecutionSetPipelineEXT'
---
--- -   'updateIndirectExecutionSetShaderEXT'
---
--- == New Structures
---
--- -   'BindIndexBufferIndirectCommandEXT'
---
--- -   'BindVertexBufferIndirectCommandEXT'
---
--- -   'DrawIndirectCountIndirectCommandEXT'
---
--- -   'GeneratedCommandsInfoEXT'
---
--- -   'GeneratedCommandsMemoryRequirementsInfoEXT'
---
--- -   'IndirectCommandsExecutionSetTokenEXT'
---
--- -   'IndirectCommandsIndexBufferTokenEXT'
---
--- -   'IndirectCommandsLayoutCreateInfoEXT'
---
--- -   'IndirectCommandsLayoutTokenEXT'
---
--- -   'IndirectCommandsPushConstantTokenEXT'
---
--- -   'IndirectCommandsVertexBufferTokenEXT'
---
--- -   'IndirectExecutionSetCreateInfoEXT'
---
--- -   'IndirectExecutionSetPipelineInfoEXT'
---
--- -   'IndirectExecutionSetShaderInfoEXT'
---
--- -   'IndirectExecutionSetShaderLayoutInfoEXT'
---
--- -   'WriteIndirectExecutionSetPipelineEXT'
---
--- -   Extending 'GeneratedCommandsInfoEXT',
---     'GeneratedCommandsMemoryRequirementsInfoEXT':
---
---     -   'GeneratedCommandsPipelineInfoEXT'
---
---     -   'GeneratedCommandsShaderInfoEXT'
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
---     'Vulkan.Core10.Device.DeviceCreateInfo':
---
---     -   'PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT'
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
---
---     -   'PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT'
---
--- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_shader_object VK_EXT_shader_object>
--- is supported:
---
--- -   'WriteIndirectExecutionSetShaderEXT'
---
--- == New Unions
---
--- -   'IndirectCommandsTokenDataEXT'
---
--- -   'IndirectExecutionSetInfoEXT'
---
--- == New Enums
---
--- -   'IndirectCommandsInputModeFlagBitsEXT'
---
--- -   'IndirectCommandsLayoutUsageFlagBitsEXT'
---
--- -   'IndirectCommandsTokenTypeEXT'
---
--- -   'IndirectExecutionSetInfoTypeEXT'
---
--- == New Bitmasks
---
--- -   'IndirectCommandsInputModeFlagsEXT'
---
--- -   'IndirectCommandsLayoutUsageFlagsEXT'
---
--- == New Enum Constants
---
--- -   'EXT_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME'
---
--- -   'EXT_DEVICE_GENERATED_COMMANDS_SPEC_VERSION'
---
--- -   Extending 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits':
---
---     -   'ACCESS_COMMAND_PREPROCESS_READ_BIT_EXT'
---
---     -   'ACCESS_COMMAND_PREPROCESS_WRITE_BIT_EXT'
---
--- -   Extending
---     'Vulkan.Extensions.VK_KHR_maintenance5.BufferUsageFlagBits2KHR':
---
---     -   'Vulkan.Extensions.VK_KHR_maintenance5.BUFFER_USAGE_2_PREPROCESS_BUFFER_BIT_EXT'
---
--- -   Extending 'Vulkan.Core10.Enums.ObjectType.ObjectType':
---
---     -   'Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_EXT'
---
---     -   'Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_INDIRECT_EXECUTION_SET_EXT'
---
--- -   Extending
---     'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlagBits2KHR':
---
---     -   'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXT'
---
--- -   Extending
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits':
---
---     -   'PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_EXT'
---
--- -   Extending
---     'Vulkan.Extensions.VK_EXT_shader_object.ShaderCreateFlagBitsEXT':
---
---     -   'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDIRECT_BINDABLE_BIT_EXT'
---
--- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_EXT'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXT'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GENERATED_COMMANDS_PIPELINE_INFO_EXT'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GENERATED_COMMANDS_SHADER_INFO_EXT'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXT'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_EXT'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_CREATE_INFO_EXT'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXT'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_INFO_EXT'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXT'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXT'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXT'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXT'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_SHADER_EXT'
---
--- == Example Code
---
--- TODO
---
--- == Version History
---
--- -   Revision 1, 2024-02-23 (Mike Blumenkrantz)
---
---     -   Initial version
---
--- == See Also
---
--- No cross-references are available
---
--- == Document Notes
---
--- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_device_generated_commands 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_device_generated_commands  ( cmdExecuteGeneratedCommandsEXT
-                                                           , cmdPreprocessGeneratedCommandsEXT
-                                                           , getGeneratedCommandsMemoryRequirementsEXT
-                                                           , createIndirectCommandsLayoutEXT
-                                                           , withIndirectCommandsLayoutEXT
-                                                           , destroyIndirectCommandsLayoutEXT
-                                                           , createIndirectExecutionSetEXT
-                                                           , withIndirectExecutionSetEXT
-                                                           , destroyIndirectExecutionSetEXT
-                                                           , updateIndirectExecutionSetPipelineEXT
-                                                           , updateIndirectExecutionSetShaderEXT
-                                                           , pattern PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_EXT
-                                                           , pattern ACCESS_COMMAND_PREPROCESS_READ_BIT_EXT
-                                                           , pattern ACCESS_COMMAND_PREPROCESS_WRITE_BIT_EXT
-                                                           , PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT(..)
-                                                           , PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT(..)
-                                                           , GeneratedCommandsPipelineInfoEXT(..)
-                                                           , GeneratedCommandsShaderInfoEXT(..)
-                                                           , GeneratedCommandsMemoryRequirementsInfoEXT(..)
-                                                           , IndirectExecutionSetPipelineInfoEXT(..)
-                                                           , IndirectExecutionSetShaderLayoutInfoEXT(..)
-                                                           , IndirectExecutionSetShaderInfoEXT(..)
-                                                           , IndirectExecutionSetCreateInfoEXT(..)
-                                                           , GeneratedCommandsInfoEXT(..)
-                                                           , WriteIndirectExecutionSetPipelineEXT(..)
-                                                           , WriteIndirectExecutionSetShaderEXT(..)
-                                                           , IndirectCommandsLayoutCreateInfoEXT(..)
-                                                           , IndirectCommandsLayoutTokenEXT(..)
-                                                           , DrawIndirectCountIndirectCommandEXT(..)
-                                                           , IndirectCommandsVertexBufferTokenEXT(..)
-                                                           , BindVertexBufferIndirectCommandEXT(..)
-                                                           , IndirectCommandsIndexBufferTokenEXT(..)
-                                                           , BindIndexBufferIndirectCommandEXT(..)
-                                                           , IndirectCommandsPushConstantTokenEXT(..)
-                                                           , IndirectCommandsExecutionSetTokenEXT(..)
-                                                           , IndirectExecutionSetInfoEXT(..)
-                                                           , IndirectCommandsTokenDataEXT(..)
-                                                           , IndirectCommandsLayoutUsageFlagsEXT
-                                                           , IndirectCommandsLayoutUsageFlagBitsEXT( INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_EXT
-                                                                                                   , INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_EXT
-                                                                                                   , ..
-                                                                                                   )
-                                                           , IndirectExecutionSetInfoTypeEXT( INDIRECT_EXECUTION_SET_INFO_TYPE_PIPELINES_EXT
-                                                                                            , INDIRECT_EXECUTION_SET_INFO_TYPE_SHADER_OBJECTS_EXT
-                                                                                            , ..
-                                                                                            )
-                                                           , IndirectCommandsInputModeFlagsEXT
-                                                           , IndirectCommandsInputModeFlagBitsEXT( INDIRECT_COMMANDS_INPUT_MODE_VULKAN_INDEX_BUFFER_EXT
-                                                                                                 , INDIRECT_COMMANDS_INPUT_MODE_DXGI_INDEX_BUFFER_EXT
-                                                                                                 , ..
-                                                                                                 )
-                                                           , IndirectCommandsTokenTypeEXT( INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT
-                                                                                         , INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT
-                                                                                         , INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT
-                                                                                         , INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_EXT
-                                                                                         , INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_EXT
-                                                                                         , INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_EXT
-                                                                                         , INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_EXT
-                                                                                         , INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_COUNT_EXT
-                                                                                         , INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_COUNT_EXT
-                                                                                         , INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_EXT
-                                                                                         , INDIRECT_COMMANDS_TOKEN_TYPE_TRACE_RAYS2_EXT
-                                                                                         , INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_EXT
-                                                                                         , INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_EXT
-                                                                                         , INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_NV_EXT
-                                                                                         , INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV_EXT
-                                                                                         , ..
-                                                                                         )
-                                                           , EXT_DEVICE_GENERATED_COMMANDS_SPEC_VERSION
-                                                           , pattern EXT_DEVICE_GENERATED_COMMANDS_SPEC_VERSION
-                                                           , EXT_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME
-                                                           , pattern EXT_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME
-                                                           , IndirectCommandsLayoutEXT(..)
-                                                           , IndirectExecutionSetEXT(..)
-                                                           , ShaderEXT(..)
-                                                           , BufferUsageFlagBits2KHR(..)
-                                                           , BufferUsageFlags2KHR
-                                                           , PipelineCreateFlagBits2KHR(..)
-                                                           , PipelineCreateFlags2KHR
-                                                           , ShaderCreateFlagBitsEXT(..)
-                                                           , ShaderCreateFlagsEXT
-                                                           ) where
-
-import Data.Bits (Bits)
-import Data.Bits (FiniteBits)
-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 GHC.Show (showsPrec)
-import Numeric (showHex)
-import Control.Monad.Trans.Class (lift)
-import Control.Monad.Trans.Cont (evalContT)
-import Control.Monad.Trans.Cont (runContT)
-import Data.Vector (generateM)
-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 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 Data.Int (Int32)
-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.NamedType ((:::))
-import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)
-import Vulkan.Core10.FundamentalTypes (Bool32)
-import Vulkan.Core10.FundamentalTypes (Bool32(..))
-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.Handles (DescriptorSetLayout)
-import Vulkan.Core10.Handles (Device)
-import Vulkan.Core10.Handles (Device(..))
-import Vulkan.Core10.Handles (Device(Device))
-import Vulkan.Core10.FundamentalTypes (DeviceAddress)
-import Vulkan.Dynamic (DeviceCmds(pVkCmdExecuteGeneratedCommandsEXT))
-import Vulkan.Dynamic (DeviceCmds(pVkCmdPreprocessGeneratedCommandsEXT))
-import Vulkan.Dynamic (DeviceCmds(pVkCreateIndirectCommandsLayoutEXT))
-import Vulkan.Dynamic (DeviceCmds(pVkCreateIndirectExecutionSetEXT))
-import Vulkan.Dynamic (DeviceCmds(pVkDestroyIndirectCommandsLayoutEXT))
-import Vulkan.Dynamic (DeviceCmds(pVkDestroyIndirectExecutionSetEXT))
-import Vulkan.Dynamic (DeviceCmds(pVkGetGeneratedCommandsMemoryRequirementsEXT))
-import Vulkan.Dynamic (DeviceCmds(pVkUpdateIndirectExecutionSetPipelineEXT))
-import Vulkan.Dynamic (DeviceCmds(pVkUpdateIndirectExecutionSetShaderEXT))
-import Vulkan.Core10.FundamentalTypes (DeviceSize)
-import Vulkan.Core10.Handles (Device_T)
-import Vulkan.CStruct.Extends (Extends)
-import Vulkan.CStruct.Extends (Extendss)
-import Vulkan.CStruct.Extends (Extensible(..))
-import Vulkan.Core10.FundamentalTypes (Flags)
-import Vulkan.Core10.Enums.IndexType (IndexType)
-import Vulkan.Extensions.Handles (IndirectCommandsLayoutEXT)
-import Vulkan.Extensions.Handles (IndirectCommandsLayoutEXT(..))
-import Vulkan.Extensions.Handles (IndirectExecutionSetEXT)
-import Vulkan.Extensions.Handles (IndirectExecutionSetEXT(..))
-import Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2 (MemoryRequirements2)
-import Vulkan.CStruct.Extends (PeekChain)
-import Vulkan.CStruct.Extends (PeekChain(..))
-import Vulkan.Core10.Handles (Pipeline)
-import Vulkan.Core10.Handles (PipelineLayout)
-import {-# SOURCE #-} Vulkan.Core10.PipelineLayout (PipelineLayoutCreateInfo)
-import Vulkan.CStruct.Extends (PokeChain)
-import Vulkan.CStruct.Extends (PokeChain(..))
-import Vulkan.Core10.PipelineLayout (PushConstantRange)
-import Vulkan.Core10.Enums.Result (Result)
-import Vulkan.Core10.Enums.Result (Result(..))
-import Vulkan.Extensions.Handles (ShaderEXT)
-import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)
-import Vulkan.CStruct.Extends (SomeStruct)
-import Vulkan.Core10.Enums.StructureType (StructureType)
-import Vulkan.Exception (VulkanException(..))
-import Vulkan.Core10.Enums.AccessFlagBits (AccessFlags)
-import Vulkan.Core10.Enums.AccessFlagBits (AccessFlagBits(ACCESS_COMMAND_PREPROCESS_READ_BIT_NV))
-import Vulkan.Core10.Enums.AccessFlagBits (AccessFlags)
-import Vulkan.Core10.Enums.AccessFlagBits (AccessFlagBits(ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV))
-import Vulkan.Core10.Enums.PipelineStageFlagBits (PipelineStageFlags)
-import Vulkan.Core10.Enums.PipelineStageFlagBits (PipelineStageFlagBits(PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_EXT))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXT))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_GENERATED_COMMANDS_PIPELINE_INFO_EXT))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_GENERATED_COMMANDS_SHADER_INFO_EXT))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXT))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_EXT))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_CREATE_INFO_EXT))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXT))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_INFO_EXT))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXT))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXT))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXT))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXT))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_SHADER_EXT))
-import Vulkan.Core10.Enums.Result (Result(SUCCESS))
-import Vulkan.Extensions.VK_KHR_maintenance5 (BufferUsageFlagBits2KHR(..))
-import Vulkan.Extensions.VK_KHR_maintenance5 (BufferUsageFlags2KHR)
-import Vulkan.Extensions.Handles (IndirectCommandsLayoutEXT(..))
-import Vulkan.Extensions.Handles (IndirectExecutionSetEXT(..))
-import Vulkan.Extensions.VK_KHR_maintenance5 (PipelineCreateFlagBits2KHR(..))
-import Vulkan.Extensions.VK_KHR_maintenance5 (PipelineCreateFlags2KHR)
-import Vulkan.Extensions.VK_EXT_shader_object (ShaderCreateFlagBitsEXT(..))
-import Vulkan.Extensions.VK_EXT_shader_object (ShaderCreateFlagsEXT)
-import Vulkan.Extensions.Handles (ShaderEXT(..))
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdExecuteGeneratedCommandsEXT
-  :: FunPtr (Ptr CommandBuffer_T -> Bool32 -> Ptr (SomeStruct GeneratedCommandsInfoEXT) -> IO ()) -> Ptr CommandBuffer_T -> Bool32 -> Ptr (SomeStruct GeneratedCommandsInfoEXT) -> IO ()
-
--- | vkCmdExecuteGeneratedCommandsEXT - Generate and execute commands on the
--- device
---
--- = Description
---
--- If the 'INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_EXT' flag
--- was used to create the
--- 'GeneratedCommandsInfoEXT'::@indirectCommandsLayout@ then the execution
--- of sequences through this command /may/ use implementation-defined
--- ordering which is not guaranteed to be coherent using the same input
--- data. It does not affect the order of token processing within a
--- sequence. This is the implied ordering with
--- 'INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_EXT'.
---
--- After a call to 'cmdExecuteGeneratedCommandsEXT', command buffer state
--- will become undefined according to the tokens executed. This table
--- specifies the relationship between tokens used and state invalidation.
---
--- +---------------------------------------------------+------------------+
--- | __Common Tokens__                                 | __States         |
--- |                                                   | Invalidated__    |
--- +===================================================+==================+
--- | 'INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT'  | Bound shaders    |
--- |                                                   | and pipelines    |
--- +---------------------------------------------------+------------------+
--- | 'INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT'  | Push constant    |
--- |                                                   | data             |
--- +---------------------------------------------------+------------------+
--- | 'INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT' | Push constant    |
--- |                                                   | data             |
--- +---------------------------------------------------+------------------+
--- | 'INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_EXT'   | Index buffer     |
--- +---------------------------------------------------+------------------+
--- | 'INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_EXT'  | Vertex buffer    |
--- +---------------------------------------------------+------------------+
---
--- Indirect Execution State Invalidation
---
--- == Valid Usage
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-magFilter-04553# If a
---     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
---     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR',
---     @reductionMode@ equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
---     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-vkCmdExecuteGeneratedCommandsEXT-magFilter-09598# If a
---     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
---     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR' and
---     @reductionMode@ equal to either
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
---     or
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
---     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_MINMAX_BIT'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-mipmapMode-04770# If a
---     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
---     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR',
---     @reductionMode@ equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
---     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-vkCmdExecuteGeneratedCommandsEXT-mipmapMode-09599# If a
---     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
---     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'
---     and @reductionMode@ equal to either
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
---     or
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
---     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_MINMAX_BIT'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-unnormalizedCoordinates-09635#
---     If a 'Vulkan.Core10.Handles.Sampler' created with
---     @unnormalizedCoordinates@ equal to
---     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
---     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
---     the image view’s @levelCount@ and @layerCount@ /must/ be 1
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-unnormalizedCoordinates-09636#
---     If a 'Vulkan.Core10.Handles.Sampler' created with
---     @unnormalizedCoordinates@ equal to
---     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
---     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
---     the image view’s @viewType@ /must/ be
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D' or
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-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-vkCmdExecuteGeneratedCommandsEXT-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-vkCmdExecuteGeneratedCommandsEXT-None-07888# If a
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'
---     descriptor is accessed using atomic operations as a result of this
---     command, then the storage texel buffer’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-buffer-view-format-features format features>
---     /must/ contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-02692# If a
---     'Vulkan.Core10.Handles.ImageView' is sampled with
---     'Vulkan.Core10.Enums.Filter.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.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-02693# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_filter_cubic VK_EXT_filter_cubic>
---     extension is not enabled and any 'Vulkan.Core10.Handles.ImageView'
---     is sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as a
---     result of this command, it /must/ not have a
---     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' of
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE', or
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-filterCubic-02694# Any
---     'Vulkan.Core10.Handles.ImageView' being sampled with
---     'Vulkan.Core10.Enums.Filter.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-vkCmdExecuteGeneratedCommandsEXT-filterCubicMinmax-02695# Any
---     'Vulkan.Core10.Handles.ImageView' being sampled with
---     'Vulkan.Core10.Enums.Filter.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-vkCmdExecuteGeneratedCommandsEXT-cubicRangeClamp-09212# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-cubicRangeClamp cubicRangeClamp>
---     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
---     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
---     a result of this command /must/ not have a
---     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
---     equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-reductionMode-09213# Any
---     'Vulkan.Core10.Handles.ImageView' being sampled with a
---     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
---     equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
---     as a result of this command /must/ sample with
---     'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-selectableCubicWeights-09214#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-selectableCubicWeights selectableCubicWeights>
---     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
---     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
---     a result of this command /must/ have
---     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.SamplerCubicWeightsCreateInfoQCOM'::@cubicWeights@
---     equal to
---     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-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-vkCmdExecuteGeneratedCommandsEXT-OpTypeImage-07027# For any
---     'Vulkan.Core10.Handles.ImageView' being written as a storage image
---     where the image format field of the @OpTypeImage@ is @Unknown@, the
---     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_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-OpTypeImage-07028# For any
---     'Vulkan.Core10.Handles.ImageView' being read as a storage image
---     where the image format field of the @OpTypeImage@ is @Unknown@, the
---     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_STORAGE_READ_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-OpTypeImage-07029# For any
---     'Vulkan.Core10.Handles.BufferView' being written as a storage texel
---     buffer where the image format field of the @OpTypeImage@ is
---     @Unknown@, the view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
---     /must/ contain
---     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-OpTypeImage-07030# Any
---     'Vulkan.Core10.Handles.BufferView' being read as a storage texel
---     buffer where the image format field of the @OpTypeImage@ is
---     @Unknown@ then the view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
---     /must/ contain
---     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08600# For each set /n/
---     that is statically used by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     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' or the
---     'Vulkan.Core10.Handles.DescriptorSetLayout' array used to create the
---     current 'Vulkan.Extensions.Handles.ShaderEXT' , as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08601# For each push
---     constant that is statically used by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     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' or the
---     'Vulkan.Core10.Handles.DescriptorSetLayout' array used to create the
---     current 'Vulkan.Extensions.Handles.ShaderEXT' , as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-10068# For each array of
---     resources that is used by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     the indices used to access members of the array /must/ be less than
---     the descriptor count for the identified binding in the descriptor
---     sets used by this command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-maintenance4-08602# 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
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     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' or the
---     'Vulkan.Core10.Handles.DescriptorSetLayout' and
---     'Vulkan.Core10.PipelineLayout.PushConstantRange' arrays used to
---     create the current 'Vulkan.Extensions.Handles.ShaderEXT' , as
---     described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08114# Descriptors in
---     each bound descriptor set, specified via
---     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
---     be valid as described by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
---     if they are statically used by the 'Vulkan.Core10.Handles.Pipeline'
---     bound to the pipeline bind point used by this command and the bound
---     'Vulkan.Core10.Handles.Pipeline' was not created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08115# If the
---     descriptors used by the 'Vulkan.Core10.Handles.Pipeline' bound to
---     the pipeline bind point were specified via
---     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', the
---     bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
---     without
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08116# Descriptors in
---     bound descriptor buffers, specified via
---     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
---     /must/ be valid if they are dynamically used by the
---     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
---     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
---     was created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08604# Descriptors in
---     bound descriptor buffers, specified via
---     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
---     /must/ be valid if they are dynamically used by any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     to the pipeline bind point used by this command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08117# If the
---     descriptors used by the 'Vulkan.Core10.Handles.Pipeline' bound to
---     the pipeline bind point were specified via
---     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
---     the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
---     with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08119# If a descriptor
---     is dynamically used with a 'Vulkan.Core10.Handles.Pipeline' created
---     with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
---     the descriptor memory /must/ be resident
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08605# If a descriptor
---     is dynamically used with a 'Vulkan.Extensions.Handles.ShaderEXT'
---     created with a 'Vulkan.Core10.Handles.DescriptorSetLayout' that was
---     created with
---     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
---     the descriptor memory /must/ be resident
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08606# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject>
---     feature is not enabled, a valid pipeline /must/ be bound to the
---     pipeline bind point used by this command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08608# If a pipeline is
---     bound to the pipeline bind point used by this command, there /must/
---     not have been any calls to dynamic state setting commands for any
---     state specified statically in the 'Vulkan.Core10.Handles.Pipeline'
---     object bound to the pipeline bind point used by this command, since
---     that pipeline was bound
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08609# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command or any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdExecuteGeneratedCommandsEXT-None-08610# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command or any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdExecuteGeneratedCommandsEXT-None-08611# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command or any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdExecuteGeneratedCommandsEXT-None-08607# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject>
---     feature is enabled, either a valid pipeline /must/ be bound to the
---     pipeline bind point used by this command, or a valid combination of
---     valid and 'Vulkan.Core10.APIConstants.NULL_HANDLE' shader objects
---     /must/ be bound to every supported shader stage corresponding to the
---     pipeline bind point used by this command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-uniformBuffers-06935# If any
---     stage of the 'Vulkan.Core10.Handles.Pipeline' object bound to the
---     pipeline bind point used by this command accesses a uniform buffer,
---     and that stage was created without enabling either
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT'
---     or
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT'
---     for @uniformBuffers@, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, that stage /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-vkCmdExecuteGeneratedCommandsEXT-None-08612# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, and any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdExecuteGeneratedCommandsEXT-storageBuffers-06936# If any
---     stage of the 'Vulkan.Core10.Handles.Pipeline' object bound to the
---     pipeline bind point used by this command accesses a storage buffer,
---     and that stage was created without enabling either
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT'
---     or
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT'
---     for @storageBuffers@, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, that stage /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-vkCmdExecuteGeneratedCommandsEXT-None-08613# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, and any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdExecuteGeneratedCommandsEXT-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
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shaders>
---     /must/ not be a protected resource
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-06550# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
---     accesses a 'Vulkan.Core10.Handles.Sampler' or
---     'Vulkan.Core10.Handles.ImageView' object that enables
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,
---     that object /must/ only be used with @OpImageSample*@ or
---     @OpImageSparseSample*@ instructions
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-ConstOffset-06551# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
---     accesses a 'Vulkan.Core10.Handles.Sampler' or
---     'Vulkan.Core10.Handles.ImageView' object that enables
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,
---     that object /must/ not use the @ConstOffset@ and @Offset@ operands
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-viewType-07752# If a
---     'Vulkan.Core10.Handles.ImageView' is accessed as a result of this
---     command, then the image view’s @viewType@ /must/ match the @Dim@
---     operand of the @OpTypeImage@ as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-image-dimensions ???>
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-format-07753# If a
---     'Vulkan.Core10.Handles.ImageView' is accessed as a result of this
---     command, then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-numericformat numeric type>
---     of the image view’s @format@ and the @Sampled@ @Type@ operand of the
---     @OpTypeImage@ /must/ match
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-OpImageWrite-08795# If a
---     'Vulkan.Core10.Handles.ImageView' created with a format other than
---     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM_KHR' 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-vkCmdExecuteGeneratedCommandsEXT-OpImageWrite-08796# If a
---     'Vulkan.Core10.Handles.ImageView' created with the format
---     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM_KHR' is accessed using
---     @OpImageWrite@ as a result of this command, then the @Type@ of the
---     @Texel@ operand of that instruction /must/ have four components
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-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-vkCmdExecuteGeneratedCommandsEXT-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-vkCmdExecuteGeneratedCommandsEXT-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-vkCmdExecuteGeneratedCommandsEXT-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-vkCmdExecuteGeneratedCommandsEXT-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-vkCmdExecuteGeneratedCommandsEXT-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-vkCmdExecuteGeneratedCommandsEXT-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-vkCmdExecuteGeneratedCommandsEXT-OpImageWeightedSampleQCOM-06971#
---     If @OpImageWeightedSampleQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-OpImageWeightedSampleQCOM-06972#
---     If @OpImageWeightedSampleQCOM@ uses a
---     'Vulkan.Core10.Handles.ImageView' as a sample weight image 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-OpImageBoxFilterQCOM-06973#
---     If @OpImageBoxFilterQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-OpImageBlockMatchSSDQCOM-06974#
---     If @OpImageBlockMatchSSDQCOM@ is used to read from an
---     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-OpImageBlockMatchSADQCOM-06975#
---     If @OpImageBlockMatchSADQCOM@ is used to read from an
---     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-OpImageBlockMatchSADQCOM-06976#
---     If @OpImageBlockMatchSADQCOM@ or OpImageBlockMatchSSDQCOM is used to
---     read from a reference image as result of this command, then the
---     specified reference coordinates /must/ not fail
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-OpImageWeightedSampleQCOM-06977#
---     If @OpImageWeightedSampleQCOM@, @OpImageBoxFilterQCOM@,
---     @OpImageBlockMatchWindowSSDQCOM@, @OpImageBlockMatchWindowSADQCOM@,
---     @OpImageBlockMatchGatherSSDQCOM@, @OpImageBlockMatchGatherSADQCOM@,
---     @OpImageBlockMatchSSDQCOM@, or @OpImageBlockMatchSADQCOM@ uses a
---     'Vulkan.Core10.Handles.Sampler' as a result of this command, then
---     the sampler /must/ have been created with
---     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-OpImageWeightedSampleQCOM-06978#
---     If any command other than @OpImageWeightedSampleQCOM@,
---     @OpImageBoxFilterQCOM@, @OpImageBlockMatchWindowSSDQCOM@,
---     @OpImageBlockMatchWindowSADQCOM@, @OpImageBlockMatchGatherSSDQCOM@,
---     @OpImageBlockMatchGatherSADQCOM@, @OpImageBlockMatchSSDQCOM@, or
---     @OpImageBlockMatchSADQCOM@ uses a 'Vulkan.Core10.Handles.Sampler' as
---     a result of this command, then the sampler /must/ not have been
---     created with
---     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-OpImageBlockMatchWindow-09215#
---     If a @OpImageBlockMatchWindow*QCOM@ or
---     @OpImageBlockMatchGather*QCOM@ instruction is used to read from an
---     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-OpImageBlockMatchWindow-09216#
---     If a @OpImageBlockMatchWindow*QCOM@ or
---     @OpImageBlockMatchGather*QCOM@ instruction is used to read from an
---     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
---     the image view’s format /must/ be a single-component format
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-OpImageBlockMatchWindow-09217#
---     If a @OpImageBlockMatchWindow*QCOM@ or
---     @OpImageBlockMatchGather*QCOM@ read from a reference image as result
---     of this command, then the specified reference coordinates /must/ not
---     fail
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07288# Any shader
---     invocation executed by this command /must/
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-termination terminate>
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-09600# If a descriptor
---     with type equal to any of
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM',
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM',
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',
---     or
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'
---     is accessed as a result of this command, the image subresource
---     identified by that descriptor /must/ be in the image layout
---     identified when the descriptor was written
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-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-vkCmdExecuteGeneratedCommandsEXT-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-vkCmdExecuteGeneratedCommandsEXT-None-07748# If any shader
---     statically accesses an input attachment, a valid descriptor /must/
---     be bound to the pipeline via a descriptor set
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-OpTypeImage-07468# If any
---     shader executed by this pipeline accesses an @OpTypeImage@ variable
---     with a @Dim@ operand of @SubpassData@, it /must/ be decorated with
---     an @InputAttachmentIndex@ that corresponds to a valid input
---     attachment in the current subpass
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07469# Input attachment
---     views accessed in a subpass /must/ be created with the same
---     'Vulkan.Core10.Enums.Format.Format' as the corresponding subpass
---     definition, and be created with a 'Vulkan.Core10.Handles.ImageView'
---     that is compatible with the attachment referenced by the subpass\'
---     @pInputAttachments@[@InputAttachmentIndex@] in the bound
---     'Vulkan.Core10.Handles.Framebuffer' as specified by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#compatibility-inputattachment Fragment Input Attachment Compatibility>
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-pDepthInputAttachmentIndex-09595#
---     Input attachment views accessed in a dynamic render pass with a
---     @InputAttachmentIndex@ referenced by
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR',
---     or no @InputAttachmentIndex@ if
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR':@pDepthInputAttachmentIndex@
---     or
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR':@pStencilInputAttachmentIndex@
---     are @NULL@, /must/ be created with a
---     'Vulkan.Core10.Handles.ImageView' that is compatible with the
---     corresponding color, depth, or stencil attachment in
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-pDepthInputAttachmentIndex-09596#
---     Input attachment views accessed in a dynamic render pass via a
---     shader object /must/ have an @InputAttachmentIndex@ if both
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR':@pDepthInputAttachmentIndex@
---     and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR':@pStencilInputAttachmentIndex@
---     are non-@NULL@
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-InputAttachmentIndex-09597#
---     If an input attachment view accessed in a dynamic render pass via a
---     shader object has an @InputAttachmentIndex@, the
---     @InputAttachmentIndex@ /must/ match an index in
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-06537# Memory backing
---     image subresources used as attachments in the current render pass
---     /must/ not be written in any way other than as an attachment by this
---     command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-09000# If a color
---     attachment is written by any prior command in this subpass or by the
---     load, store, or resolve operations for this subpass, it is not in
---     the
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
---     image layout, and either:
---
---     -   the
---         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT'
---         is set on the bound pipeline or
---
---     -   the last call to
---         'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
---         included
---         'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'
---         and
---
---         -   there is no bound graphics pipeline or
---
---         -   the bound graphics pipeline was created with
---             'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
---
---     it /must/ not be accessed in any way other than as an attachment by
---     this command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-09001# If a depth
---     attachment is written by any prior command in this subpass or by the
---     load, store, or resolve operations for this subpass, it is not in
---     the
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
---     image layout, and either:
---
---     -   the
---         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT'
---         is set on the bound pipeline or
---
---     -   the last call to
---         'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
---         included
---         'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT'
---         and
---
---         -   there is no bound graphics pipeline or
---
---         -   the bound graphics pipeline was created with
---             'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
---
---     it /must/ not be accessed in any way other than as an attachment by
---     this command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-09002# If a stencil
---     attachment is written by any prior command in this subpass or by the
---     load, store, or resolve operations for this subpass, it is not in
---     the
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
---     image layout, and either:
---
---     -   the
---         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT'
---         is set on the bound pipeline or
---
---     -   the last call to
---         'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
---         included
---         'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
---         and
---
---         -   there is no bound graphics pipeline or
---
---         -   the bound graphics pipeline was created with
---             'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
---
---     it /must/ not be accessed in any way other than as an attachment by
---     this command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-09003# If an attachment
---     is written by any prior command in this subpass or by the load,
---     store, or resolve operations for this subpass, it /must/ not be
---     accessed in any way other than as an attachment, storage image, or
---     sampled image by this command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-06539# If any previously
---     recorded command in the current subpass accessed an image
---     subresource used as an attachment in this subpass in any way other
---     than as an attachment, this command /must/ not write to that image
---     subresource as an attachment
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-06886# If the current
---     render pass instance uses a depth\/stencil attachment with a
---     read-only layout for the depth aspect,
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-depth-write depth writes>
---     /must/ be disabled
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-06887# If the current
---     render pass instance uses a depth\/stencil attachment with a
---     read-only layout for the stencil aspect, both front and back
---     @writeMask@ are not zero, and stencil test is enabled,
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-stencil all stencil ops>
---     /must/ be 'Vulkan.Core10.Enums.StencilOp.STENCIL_OP_KEEP'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07831# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT' dynamic
---     state enabled then
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetViewport' /must/ have
---     been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07832# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR' dynamic
---     state enabled then
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetScissor' /must/ have been
---     called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07833# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_WIDTH' dynamic
---     state enabled then
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth' /must/ have
---     been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08617# If a shader
---     object is bound to any graphics stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
---     in the current command buffer set @polygonMode@ to
---     'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_LINE',
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth' /must/ have
---     been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08618# If a shader
---     object is bound to any graphics stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
---     in the current command buffer set @primitiveTopology@ to any line
---     topology, 'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08619# If a shader
---     object that outputs line primitives is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE',
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth' /must/ have
---     been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07834# If a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS' dynamic
---     state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @depthBiasEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBounds' or
---     'Vulkan.Extensions.VK_EXT_depth_bias_control.cmdSetDepthBias2EXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07835# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_BLEND_CONSTANTS'
---     dynamic state enabled then
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetBlendConstants' /must/
---     have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08621# If a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     in the current command buffer set any element of
---     @pColorBlendEnables@ to 'Vulkan.Core10.FundamentalTypes.TRUE', and
---     the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     in the current command buffer set the same element of
---     @pColorBlendEquations@ to a
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.ColorBlendEquationEXT'
---     structure with any 'Vulkan.Core10.Enums.BlendFactor.BlendFactor'
---     member with a value of
---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_COLOR',
---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR',
---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_ALPHA', or
---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA',
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetBlendConstants' /must/
---     have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07836# If a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @depthBoundsTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBounds' /must/
---     have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07837# If a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_COMPARE_MASK'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilCompareMask'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07838# If a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_WRITE_MASK'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilWriteMask'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07839# If a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_REFERENCE'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of and @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilReference'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-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-vkCmdExecuteGeneratedCommandsEXT-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-vkCmdExecuteGeneratedCommandsEXT-None-07634# If the
---     @VK_EXT_sample_locations@ extension is enabled, a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-06666# If the
---     @VK_EXT_sample_locations@ extension is enabled, a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then
---     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07840# If a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CULL_MODE' dynamic
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetCullMode'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07841# If a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRONT_FACE' dynamic
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetFrontFace'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07843# If a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_TEST_ENABLE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE',
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthTestEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07844# If a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthWriteEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07845# If a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_COMPARE_OP'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @depthTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthCompareOp'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07846# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthBounds depthBounds>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthBoundsTestEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07847# If a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_TEST_ENABLE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilTestEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07848# If a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_OP' dynamic
---     state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilOp'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-viewportCount-03417# If a
---     shader object is bound to any graphics stage or a graphics pipeline
---     is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
---     dynamic state enabled, and the state is not inherited, then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-scissorCount-03418# If a
---     shader object is bound to any graphics stage or a graphics pipeline
---     is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
---     dynamic state enabled, and the state is not inherited, then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-viewportCount-03419# If a
---     shader object is bound to any graphics stage or a graphics pipeline
---     is bound which 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, and the state is not inherited, then 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-vkCmdExecuteGeneratedCommandsEXT-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-vkCmdExecuteGeneratedCommandsEXT-viewportCount-04138# If the
---     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which 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 state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @viewportWScalingEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.cmdSetViewportWScalingNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08636# If the
---     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which 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 state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @viewportWScalingEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', 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-vkCmdExecuteGeneratedCommandsEXT-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-vkCmdExecuteGeneratedCommandsEXT-shadingRateImage-09233# If
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV'
---     and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetCoarseSampleOrderNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-shadingRateImage-09234# If
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which 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 state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @shadingRateImageEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetViewportShadingRatePaletteNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08637# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which 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 state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @shadingRateImageEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', 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-vkCmdExecuteGeneratedCommandsEXT-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
---     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo', 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-vkCmdExecuteGeneratedCommandsEXT-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
---     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo', 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-vkCmdExecuteGeneratedCommandsEXT-None-07878# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-exclusiveScissor exclusiveScissor>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07879# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-exclusiveScissor exclusiveScissor>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV'
---     dynamic state enabled, and the most recent call to
---     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorEnableNV'
---     in the current command buffer set any element of
---     @pExclusiveScissorEnables@ to 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then
---     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-04876# If a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which 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 and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-04877# If a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-logicOp-04878# If a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_EXT'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @logicOpEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetLogicOpEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-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-vkCmdExecuteGeneratedCommandsEXT-primitiveFragmentShadingRateWithMultipleViewports-08642#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
---     limit is not supported, and any shader object bound to a graphics
---     stage writes 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-vkCmdExecuteGeneratedCommandsEXT-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-vkCmdExecuteGeneratedCommandsEXT-None-08643# If a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then for each color
---     attachment in the render pass, 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 corresponding member of @pColorBlendEnables@ in the most
---     recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     in the current command buffer that affected that attachment index
---     /must/ have been 'Vulkan.Core10.FundamentalTypes.FALSE'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-multisampledRenderToSingleSampled-07284#
---     If rasterization is not disabled in the bound graphics pipeline, and
---     none of the following is enabled:
---
---     -   the @VK_AMD_mixed_attachment_samples@ extension
---
---     -   the @VK_NV_framebuffer_mixed_samples@ extension
---
---     -   the
---         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---         feature
---
---     then @rasterizationSamples@ for the bound graphics pipeline /must/
---     be the same as the current subpass color and\/or depth\/stencil
---     attachments
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08644# If a shader
---     object is bound to any graphics stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and none of the following is
---     enabled:
---
---     -   the @VK_AMD_mixed_attachment_samples@ extension
---
---     -   the @VK_NV_framebuffer_mixed_samples@ extension
---
---     -   the
---         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---         feature
---
---     then the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     in the current command buffer /must/ have set @rasterizationSamples@
---     to be the same as the number of samples for the current render pass
---     color and\/or depth\/stencil attachments
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08876# If a shader
---     object is bound to any graphics stage, the current render pass
---     instance /must/ have been begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-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-vkCmdExecuteGeneratedCommandsEXT-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-vkCmdExecuteGeneratedCommandsEXT-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-vkCmdExecuteGeneratedCommandsEXT-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-vkCmdExecuteGeneratedCommandsEXT-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-vkCmdExecuteGeneratedCommandsEXT-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-vkCmdExecuteGeneratedCommandsEXT-viewMask-06178# If the
---     current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the 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-vkCmdExecuteGeneratedCommandsEXT-colorAttachmentCount-06179#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled and the current render pass instance was
---     begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the 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-vkCmdExecuteGeneratedCommandsEXT-dynamicRenderingUnusedAttachments-08910#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and 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 an @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 bound graphics pipeline
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-dynamicRenderingUnusedAttachments-08912#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and 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 an @imageView@ equal to
---     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have the
---     corresponding element of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
---     used to create the bound pipeline equal to
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-dynamicRenderingUnusedAttachments-08911#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is enabled, and 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 an @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 bound graphics pipeline, or the corresponding
---     element of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@,
---     if it exists, /must/ be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-colorAttachmentCount-09362#
---     If 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@
---     equal to @1@, there is no shader object bound to any graphics stage,
---     and a color attachment with a resolve mode of
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID',
---     each element of the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
---     array with a @resolveImageView@ not equal to
---     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
---     with an image created with a
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value equal to the
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value used to create the bound graphics pipeline
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-09363# If there is no
---     shader object bound to any graphics stage, the current render pass
---     instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     and a
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
---     equal to @1@, and a color attachment with a resolve mode of
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID',
---     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 an image created with a
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value equal to the
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value used to create the bound graphics pipeline
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-09364# If the current
---     render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is no shader object bound to any graphics stage, and the bound
---     graphics pipeline was created with a non-zero
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value and with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have set the blend enable to
---     'Vulkan.Core10.FundamentalTypes.FALSE' prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-09365# If the current
---     render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is no shader object bound to any graphics stage, and the bound
---     graphics pipeline was created with a non-zero
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value and with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ have set @rasterizationSamples@ to
---     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' prior
---     to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-09366# If there is a
---     shader object bound to any graphics stage, and the current render
---     pass includes a color attachment that uses the
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID'
---     resolve mode, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have set blend enable to
---     'Vulkan.Core10.FundamentalTypes.FALSE' prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-rasterizationSamples-09367#
---     If there is a shader object bound to any graphics stage, and the
---     current render pass includes a color attachment that uses the
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID'
---     resolve mode, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ have set @rasterizationSamples@ to
---     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' prior
---     to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-09368# If the current
---     render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is no shader object bound to any graphics stage, and the bound
---     graphics pipeline was created with a non-zero
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value and with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
---     /must/ have set @pFragmentSize->width@ to @1@ prior to this drawing
---     command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-09369# If the current
---     render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is no shader object bound to any graphics stage, and the bound
---     graphics pipeline was created with a non-zero
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value and with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
---     /must/ have set @pFragmentSize->height@ to @1@ prior to this drawing
---     command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-pFragmentSize-09370# If there
---     is a shader object bound to any graphics stage, and the current
---     render pass includes a color attachment that uses the
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID'
---     resolve mode, then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
---     /must/ have set @pFragmentSize->width@ to @1@ prior to this drawing
---     command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-pFragmentSize-09371# If there
---     is a shader object bound to any graphics stage, and the current
---     render pass includes a color attachment that uses the
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID'
---     resolve mode, then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
---     /must/ have set @pFragmentSize->height@ to @1@ prior to this drawing
---     command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07749# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08646# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
---     feature is enabled, and a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-attachmentCount-07750# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'
---     dynamic state enabled then the @attachmentCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
---     /must/ be greater than or equal to the
---     'Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo'::@attachmentCount@
---     of the bound graphics pipeline
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08647# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
---     feature is enabled, and a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then the @attachmentCount@
---     parameter of most recent call to
---     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
---     in the current command buffer /must/ be greater than or equal to the
---     number of color attachments in the current render pass instance
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07751# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command for each
---     discard rectangle in
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'::@discardRectangleCount@
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07880# If the
---     @VK_EXT_discard_rectangles@ extension is enabled, a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07881# If the
---     @VK_EXT_discard_rectangles@ extension is enabled, a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @discardRectangleEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-rasterizerDiscardEnable-09236#
---     If the @VK_EXT_discard_rectangles@ extension is enabled, and a
---     shader object is bound to any graphics stage, and the most recent
---     call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEnableEXT'
---     in the current command buffer set @discardRectangleEnable@ to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-dynamicRenderingUnusedAttachments-08913#
---     If the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
---     used to create the bound graphics pipeline /must/ be equal to
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-dynamicRenderingUnusedAttachments-08914#
---     If current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->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 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->imageView@
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-dynamicRenderingUnusedAttachments-08915#
---     If the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is enabled,
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
---     used to create the bound graphics pipeline was not equal to the
---     'Vulkan.Core10.Enums.Format.Format' used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@,
---     the value of the format /must/ be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-dynamicRenderingUnusedAttachments-08916#
---     If the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
---     used to create the bound graphics pipeline /must/ be equal to
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-dynamicRenderingUnusedAttachments-08917#
---     If current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->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 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->imageView@
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-dynamicRenderingUnusedAttachments-08918#
---     If the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is enabled,
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
---     used to create the bound graphics pipeline was not equal to the
---     'Vulkan.Core10.Enums.Format.Format' used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@,
---     the value of the format /must/ be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-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_fragment_shading_rate.RenderingFragmentShadingRateAttachmentInfoKHR'::@imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the bound graphics
---     pipeline /must/ have been created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-imageView-06184# If the
---     current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     and
---     'Vulkan.Extensions.VK_EXT_fragment_density_map.RenderingFragmentDensityMapAttachmentInfoEXT'::@imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the bound graphics
---     pipeline /must/ have been created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-colorAttachmentCount-06185#
---     If the bound pipeline was created with a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.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_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     used to create the bound graphics pipeline
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-pDepthAttachment-06186# If
---     the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the bound pipeline was created with a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     structure, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
---     @depthStencilAttachmentSamples@ member of
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     used to create the bound graphics pipeline /must/ be equal to the
---     sample count used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-pStencilAttachment-06187# If
---     the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the bound pipeline was created with a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     structure, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
---     @depthStencilAttachmentSamples@ member of
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     used to create the bound graphics pipeline /must/ be equal to the
---     sample count used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-multisampledRenderToSingleSampled-07285#
---     If the bound pipeline was created without a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     structure, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---     feature is not enabled, 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 @rasterizationSamples@ for
---     the bound graphics pipeline
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-multisampledRenderToSingleSampled-07286#
---     If the bound pipeline was created without a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     structure, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     @rasterizationSamples@ for the bound graphics pipeline /must/ be
---     equal to the sample count used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-multisampledRenderToSingleSampled-07287#
---     If the bound pipeline was created without a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     structure, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     @rasterizationSamples@ for the bound graphics pipeline /must/ be
---     equal to the sample count used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-pNext-07935# If this command
---     has been called inside a render pass instance started with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     and the @pNext@ chain of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'
---     includes a
---     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'
---     structure with @multisampledRenderToSingleSampledEnable@ equal to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the value of
---     @rasterizationSamples@ for the bound graphics pipeline /must/ be
---     equal to
---     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'::@rasterizationSamples@
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-renderPass-06198# If the
---     current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the bound pipeline /must/ have been created with a
---     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@renderPass@
---     equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-pColorAttachments-08963# If
---     the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is a graphics pipeline bound with a fragment shader that
---     statically writes to a color attachment, the color write mask is not
---     zero, color writes are enabled, and the corresponding element of the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
---     corresponding element of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
---     used to create the pipeline /must/ not be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-pDepthAttachment-08964# If
---     the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is a graphics pipeline bound, depth test is enabled, depth
---     write is enabled, and the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
---     used to create the pipeline /must/ not be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-pStencilAttachment-08965# If
---     the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is a graphics pipeline bound, stencil test is enabled and the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
---     used to create the pipeline /must/ not be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-primitivesGeneratedQueryWithRasterizerDiscard-06708#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithRasterizerDiscard primitivesGeneratedQueryWithRasterizerDiscard>
---     feature is not enabled and the
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
---     query is active,
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-discard rasterization discard>
---     /must/ not be enabled
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-primitivesGeneratedQueryWithNonZeroStreams-06709#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>
---     feature is not enabled and the
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
---     query is active, the bound graphics pipeline /must/ not have been
---     created with a non-zero value in
---     'Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT'::@rasterizationStream@
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07619# If a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetTessellationDomainOriginEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07620# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClamp depthClamp>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClampEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07621# If a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_POLYGON_MODE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07622# If a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07623# If a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-alphaToCoverageEnable-08919#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT'
---     dynamic state enabled, and @alphaToCoverageEnable@ was
---     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-fragmentoutput Fragment Output Interface>
---     /must/ contain a variable for the alpha @Component@ word in
---     @Location@ 0 at @Index@ 0
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-alphaToCoverageEnable-08920#
---     If a shader object is bound to any graphics stage, and the most
---     recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT'
---     in the current command buffer set @alphaToCoverageEnable@ to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-fragmentoutput Fragment Output Interface>
---     /must/ contain a variable for the alpha @Component@ word in
---     @Location@ 0 at @Index@ 0
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07624# If a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07625# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-alphaToOne alphaToOne>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToOneEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07626# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-logicOp logicOp>
---     feature is enabled, a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLogicOpEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07627# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08657# If a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and both the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE' and there are color
---     attachments bound, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07628# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08658# If a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     for any attachment set that attachment’s value in
---     @pColorBlendEnables@ to 'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07629# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08659# If a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and both the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE' and there are color
---     attachments bound, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07630# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryStreams geometryStreams>
---     feature is enabled, and a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_STREAM_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationStreamEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07631# If the
---     @VK_EXT_conservative_rasterization@ extension is enabled, a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetConservativeRasterizationModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07632# If the
---     @VK_EXT_conservative_rasterization@ extension is enabled, a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @conservativeRasterizationMode@ is
---     'Vulkan.Extensions.VK_EXT_conservative_rasterization.CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT',
---     then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetExtraPrimitiveOverestimationSizeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07633# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClipEnable depthClipEnable>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT'
---     dynamic state, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07635# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-rasterizerDiscardEnable-09416#
---     If the @VK_EXT_blend_operation_advanced@ extension is enabled, and a
---     shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then at least one of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     and
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07636# If the
---     @VK_EXT_provoking_vertex@ extension is enabled, a shader object is
---     bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetProvokingVertexModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07637# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08666# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object is bound to any graphics
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
---     in the current command buffer set @polygonMode@ to
---     'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_LINE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08667# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
---     in the current command buffer set @primitiveTopology@ to any line
---     topology, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08668# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object that outputs line
---     primitives is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07638# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08669# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object is bound to any graphics
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
---     in the current command buffer set @polygonMode@ to
---     'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_LINE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08670# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
---     in the current command buffer set @primitiveTopology@ to any line
---     topology, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08671# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object that outputs line
---     primitives is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07849# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled and a shader object is bound to any graphics
---     stage, or a bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_KHR'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @stippledLineEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then
---     'Vulkan.Extensions.VK_KHR_line_rasterization.cmdSetLineStippleKHR'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07639# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClipControl depthClipControl>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipNegativeOneToOneEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-09650# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClampControl depthClampControl>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @depthClampEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_depth_clamp_control.cmdSetDepthClampRangeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07640# If the
---     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportWScalingEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07641# If the
---     @VK_NV_viewport_swizzle@ extension is enabled, and a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07642# If the
---     @VK_NV_fragment_coverage_to_color@ extension is enabled, a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07643# If the
---     @VK_NV_fragment_coverage_to_color@ extension is enabled, a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @coverageToColorEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07644# If the
---     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationModeNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07645# If the
---     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @coverageModulationMode@ is any value other than
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.COVERAGE_MODULATION_MODE_NONE_NV',
---     then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07646# If the
---     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @coverageModulationTableEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07647# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetShadingRateImageEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-pipelineFragmentShadingRate-09238#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate>
---     feature is enabled, a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07648# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-representativeFragmentTest representativeFragmentTest>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRepresentativeFragmentTestEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07649# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-coverageReductionMode coverageReductionMode>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageReductionModeNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-pColorBlendEnables-07470# If
---     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---     state enabled and the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     set @pColorBlendEnables@ for any attachment to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then for those attachments in
---     the subpass 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>
---     /must/ contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-rasterizationSamples-07471#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the current subpass does not use any color
---     and\/or depth\/stencil attachments, then the @rasterizationSamples@
---     in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ follow the rules for a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-noattachments zero-attachment subpass>
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-samples-07472# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
---     state enabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state disabled, then the @samples@ parameter in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
---     /must/ be greater or equal to the
---     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
---     parameter used to create the bound graphics pipeline
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-samples-07473# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
---     state and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     states enabled, then the @samples@ parameter in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
---     /must/ be greater or equal to the @rasterizationSamples@ parameter
---     in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-rasterizationSamples-07474#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---     feature is not enabled, and neither the
---     @VK_AMD_mixed_attachment_samples@ nor the
---     @VK_NV_framebuffer_mixed_samples@ extensions are enabled, then the
---     @rasterizationSamples@ in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ be the same as the current subpass color and\/or
---     depth\/stencil attachments
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-09211# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, or a shader object is bound to any graphics stage,
---     and the current render pass instance includes a
---     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'
---     structure with @multisampledRenderToSingleSampledEnable@ equal to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the
---     @rasterizationSamples@ in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ be the same as the @rasterizationSamples@ member of that
---     structure
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-firstAttachment-07476# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     calls /must/ specify an enable for all active color attachments in
---     the current subpass
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-rasterizerDiscardEnable-09417#
---     If a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     calls /must/ specify an enable for all active color attachments in
---     the current subpass
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-firstAttachment-07477# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     calls /must/ specify the blend equations for all active color
---     attachments in the current subpass where blending is enabled
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-rasterizerDiscardEnable-09418#
---     If a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and both the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE' and there are color
---     attachments bound, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     calls /must/ specify the blend equations for all active color
---     attachments in the current subpass where blending is enabled
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-firstAttachment-07478# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     calls /must/ specify the color write mask for all active color
---     attachments in the current subpass
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-rasterizerDiscardEnable-09419#
---     If a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     calls /must/ specify the color write mask for all active color
---     attachments in the current subpass
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-firstAttachment-07479# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
---     calls /must/ specify the advanced blend equations for all active
---     color attachments in the current subpass where blending is enabled
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-advancedBlendMaxColorAttachments-07480#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
---     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---     dynamic states enabled and the last calls to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     and
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
---     have enabled advanced blending, then the number of active color
---     attachments in the current subpass /must/ not exceed
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-advancedBlendMaxColorAttachments advancedBlendMaxColorAttachments>
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-primitivesGeneratedQueryWithNonZeroStreams-07481#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>
---     feature is not enabled and the
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
---     query is active, and the bound graphics pipeline was created with
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_STREAM_EXT'
---     state enabled, the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationStreamEXT'
---     /must/ have set the @rasterizationStream@ to zero
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-sampleLocationsPerPixel-07482#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state enabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state disabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then the @sampleLocationsPerPixel@ member of @pSampleLocationsInfo@
---     in the last call to
---     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
---     /must/ equal the @rasterizationSamples@ member of the
---     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'
---     structure the bound graphics pipeline has been created with
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-sampleLocationsPerPixel-07483#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state enabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then the @sampleLocationsPerPixel@ member of @pSampleLocationsInfo@
---     in the last call to
---     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
---     /must/ equal the @rasterizationSamples@ parameter of the last call
---     to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-sampleLocationsEnable-07484#
---     If a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, or the bound graphics pipeline was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     state enabled, and @sampleLocationsEnable@ was
---     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
---     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-vkCmdExecuteGeneratedCommandsEXT-sampleLocationsEnable-07485#
---     If a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state enabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     state enabled, and if @sampleLocationsEnable@ was
---     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
---     then the @sampleLocationsInfo.sampleLocationGridSize.width@ in the
---     last call to
---     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
---     /must/ evenly divide
---     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@sampleLocationGridSize.width@
---     as returned by
---     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
---     with a @samples@ parameter equaling @rasterizationSamples@
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-sampleLocationsEnable-07486#
---     If a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state enabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     state enabled, and if @sampleLocationsEnable@ was
---     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
---     then the @sampleLocationsInfo.sampleLocationGridSize.height@ in the
---     last call to
---     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
---     /must/ evenly divide
---     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@sampleLocationGridSize.height@
---     as returned by
---     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
---     with a @samples@ parameter equaling @rasterizationSamples@
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-sampleLocationsEnable-07487#
---     If a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     state enabled, and if @sampleLocationsEnable@ was
---     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
---     the fragment shader code /must/ not statically use the extended
---     instruction @InterpolateAtSample@
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-sampleLocationsEnable-07936#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state disabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then @sampleLocationsInfo.sampleLocationGridSize.width@ /must/
---     evenly divide
---     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@sampleLocationGridSize.width@
---     as returned by
---     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
---     with a @samples@ parameter equaling the value of
---     @rasterizationSamples@ in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-sampleLocationsEnable-07937#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state disabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then @sampleLocationsInfo.sampleLocationGridSize.height@ /must/
---     evenly divide
---     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@sampleLocationGridSize.height@
---     as returned by
---     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
---     with a @samples@ parameter equaling the value of
---     @rasterizationSamples@ in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-sampleLocationsEnable-07938#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state disabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then @sampleLocationsInfo.sampleLocationsPerPixel@ /must/ equal
---     @rasterizationSamples@ in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-coverageModulationTableEnable-07488#
---     If a shader object is bound to any graphics stage or the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV'
---     state enabled, and the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV'
---     set @coverageModulationTableEnable@ to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the
---     @coverageModulationTableCount@ parameter in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableNV'
---     /must/ equal the current @rasterizationSamples@ divided by the
---     number of color samples in the current subpass
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-rasterizationSamples-07489#
---     If the @VK_NV_framebuffer_mixed_samples@ extension is enabled, and
---     if current subpass has a depth\/stencil attachment and depth test,
---     stencil test, or depth bounds test are enabled in the bound
---     pipeline, then the current @rasterizationSamples@ /must/ be the same
---     as the sample count of the depth\/stencil attachment
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-coverageToColorEnable-07490#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
---     state enabled and the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
---     set the @coverageToColorEnable@ to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the current subpass
---     /must/ have a color attachment at the location selected by the last
---     call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
---     @coverageToColorLocation@, with a
---     'Vulkan.Core10.Enums.Format.Format' of
---     'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R8_SINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R16_UINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R16_SINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R32_UINT', or
---     'Vulkan.Core10.Enums.Format.FORMAT_R32_SINT'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-rasterizerDiscardEnable-09420#
---     If the @VK_NV_fragment_coverage_to_color@ extension is enabled, and
---     a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
---     set the @coverageToColorEnable@ to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the current subpass
---     /must/ have a color attachment at the location selected by the last
---     call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
---     @coverageToColorLocation@, with a
---     'Vulkan.Core10.Enums.Format.Format' of
---     'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R8_SINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R16_UINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R16_SINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R32_UINT', or
---     'Vulkan.Core10.Enums.Format.FORMAT_R32_SINT'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-coverageReductionMode-07491#
---     If this @VK_NV_coverage_reduction_mode@ extension is enabled, the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
---     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     states enabled, the current coverage reduction mode
---     @coverageReductionMode@, then the current @rasterizationSamples@,
---     and the sample counts for the color and depth\/stencil attachments
---     (if the subpass has them) /must/ be a valid combination returned by
---     'Vulkan.Extensions.VK_NV_coverage_reduction_mode.getPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-viewportCount-07492# 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_SWIZZLE_NV'
---     dynamic state enabled, 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-vkCmdExecuteGeneratedCommandsEXT-viewportCount-07493# 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_SWIZZLE_NV'
---     dynamic states enabled then the @viewportCount@ parameter in the
---     last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
---     /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-vkCmdExecuteGeneratedCommandsEXT-viewportCount-09421# If the
---     @VK_NV_viewport_swizzle@ extension is enabled, and a shader object
---     is bound to any graphics stage, then the @viewportCount@ parameter
---     in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
---     /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-vkCmdExecuteGeneratedCommandsEXT-rasterizationSamples-07494#
---     If the @VK_NV_framebuffer_mixed_samples@ extension is enabled, and
---     if the current subpass has any color attachments and
---     @rasterizationSamples@ of the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     is greater than the number of color samples, then the pipeline
---     @sampleShadingEnable@ /must/ be
---     'Vulkan.Core10.FundamentalTypes.FALSE'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-stippledLineEnable-07495# If
---     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---     or
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---     dynamic states enabled, and if the current @stippledLineEnable@
---     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
---     @lineRasterizationMode@ state is
---     'Vulkan.Extensions.VK_KHR_line_rasterization.LINE_RASTERIZATION_MODE_RECTANGULAR_KHR',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>
---     feature /must/ be enabled
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-stippledLineEnable-07496# If
---     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---     or
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---     dynamic states enabled, and if the current @stippledLineEnable@
---     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
---     @lineRasterizationMode@ state is
---     'Vulkan.Extensions.VK_KHR_line_rasterization.LINE_RASTERIZATION_MODE_BRESENHAM_KHR',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     feature /must/ be enabled
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-stippledLineEnable-07497# If
---     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---     or
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---     dynamic states enabled, and if the current @stippledLineEnable@
---     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
---     @lineRasterizationMode@ state is
---     'Vulkan.Extensions.VK_KHR_line_rasterization.LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     feature /must/ be enabled
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-stippledLineEnable-07498# If
---     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---     or
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---     dynamic states enabled, and if the current @stippledLineEnable@
---     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
---     @lineRasterizationMode@ state is
---     'Vulkan.Extensions.VK_KHR_line_rasterization.LINE_RASTERIZATION_MODE_DEFAULT_KHR',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>
---     feature /must/ be enabled and
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@strictLines@
---     /must/ be 'Vulkan.Core10.FundamentalTypes.TRUE'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-conservativePointAndLineRasterization-07499#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT'
---     dynamic state enabled,
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-conservativePointAndLineRasterization conservativePointAndLineRasterization>
---     is not supported, and the effective primitive topology output by the
---     last pre-rasterization shader stage is a line or point, then the
---     @conservativeRasterizationMode@ set by the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetConservativeRasterizationModeEXT'
---     /must/ be
---     'Vulkan.Extensions.VK_EXT_conservative_rasterization.CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-stage-07073# If the bound
---     pipeline was 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_VERTEX_BIT',
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT',
---     then
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-mesh-shader Mesh Shader Queries>
---     /must/ not be active
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08877# If a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07850# If dynamic state
---     was inherited from
---     'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV',
---     it /must/ be set in the current command buffer prior to this drawing
---     command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08684# If there is no
---     bound graphics pipeline,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08685# If there is no
---     bound graphics pipeline, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellationShader>
---     feature is enabled,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08686# If there is no
---     bound graphics pipeline, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellationShader>
---     feature is enabled,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08687# If there is no
---     bound graphics pipeline, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometryShader>
---     feature is enabled,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08688# If there is no
---     bound graphics pipeline,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08689# If there is no
---     bound graphics pipeline, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
---     feature is enabled,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08690# If there is no
---     bound graphics pipeline, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
---     feature is enabled,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08693# If there is no
---     bound graphics pipeline, and at least one of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
---     and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
---     features is enabled, one of the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---     stages /must/ have a valid 'Vulkan.Extensions.Handles.ShaderEXT'
---     bound, and the other /must/ have no
---     'Vulkan.Extensions.Handles.ShaderEXT' bound
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08694# If there is no
---     bound graphics pipeline, and both the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
---     and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
---     features are enabled, and a valid
---     'Vulkan.Extensions.Handles.ShaderEXT' is bound the to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---     stage, and that 'Vulkan.Extensions.Handles.ShaderEXT' was created
---     without the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
---     flag, a valid 'Vulkan.Extensions.Handles.ShaderEXT' /must/ be bound
---     to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---     stage
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08695# If there is no
---     bound graphics pipeline, and both the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
---     and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
---     features are enabled, and a valid
---     'Vulkan.Extensions.Handles.ShaderEXT' is bound the to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---     stage, and that 'Vulkan.Extensions.Handles.ShaderEXT' was created
---     with the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
---     flag, there /must/ be no 'Vulkan.Extensions.Handles.ShaderEXT' bound
---     to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---     stage
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08696# If there is no
---     bound graphics pipeline, and a valid
---     'Vulkan.Extensions.Handles.ShaderEXT' is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage, there /must/ be no 'Vulkan.Extensions.Handles.ShaderEXT'
---     bound to either the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---     stage or the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---     stage
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08698# If any graphics
---     shader is bound which was created with the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
---     flag, then all shaders created with the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
---     flag in the same
---     'Vulkan.Extensions.VK_EXT_shader_object.createShadersEXT' call
---     /must/ also be bound
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08699# If any graphics
---     shader is bound which was created with the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
---     flag, any stages in between stages whose shaders which did not
---     create a shader with the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
---     flag as part of the same
---     'Vulkan.Extensions.VK_EXT_shader_object.createShadersEXT' call
---     /must/ not have any 'Vulkan.Extensions.Handles.ShaderEXT' bound
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08878# All bound
---     graphics shader objects /must/ have been created with identical or
---     identically defined push constant ranges
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08879# All bound
---     graphics shader objects /must/ have been created with identical or
---     identically defined arrays of descriptor set layouts
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-colorAttachmentCount-09372#
---     If the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     and a
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
---     equal to @1@, a color attachment with a resolve mode of
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID',
---     and a fragment shader is bound, it /must/ not declare the
---     @DepthReplacing@ or @StencilRefReplacingEXT@ execution modes
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-pDynamicStates-08715# If the
---     bound graphics pipeline state includes a fragment shader stage, was
---     created with
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE'
---     set in
---     'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@,
---     and the fragment shader declares the @EarlyFragmentTests@ execution
---     mode and uses @OpDepthAttachmentReadEXT@, the @depthWriteEnable@
---     parameter in the last call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthWriteEnable'
---     /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-pDynamicStates-08716# If the
---     bound graphics pipeline state includes a fragment shader stage, was
---     created with
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_WRITE_MASK'
---     set in
---     'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@,
---     and the fragment shader declares the @EarlyFragmentTests@ execution
---     mode and uses @OpStencilAttachmentReadEXT@, the @writeMask@
---     parameter in the last call to
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilWriteMask' /must/
---     be @0@
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-09116# If a shader
---     object is bound to any graphics stage or the bound graphics pipeline
---     was created with
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT',
---     and the format of any color attachment is
---     'Vulkan.Core10.Enums.Format.FORMAT_E5B9G9R9_UFLOAT_PACK32', the
---     corresponding element of the @pColorWriteMasks@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     /must/ either include all of
---     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_R_BIT',
---     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_G_BIT',
---     and
---     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_B_BIT',
---     or none of them
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-maxFragmentDualSrcAttachments-09239#
---     If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blending blending>
---     is enabled for any attachment where either the source or destination
---     blend factors for that attachment
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-dsb use the secondary color input>,
---     the maximum value of @Location@ for any output attachment
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-staticuse statically used>
---     in the @Fragment@ @Execution@ @Model@ executed by this command
---     /must/ be less than
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFragmentDualSrcAttachments maxFragmentDualSrcAttachments>
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-09548# If the current
---     render pass was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     and there is no shader object bound to any graphics stage, the value
---     of each element of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingAttachmentLocationInfoKHR'::@pColorAttachmentLocations@
---     set by
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.cmdSetRenderingAttachmentLocationsKHR'
---     /must/ match the value set for the corresponding element in the
---     bound pipeline
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-09549# If the current
---     render pass was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     and there is no shader object bound to any graphics stage, input
---     attachment index mappings in the bound pipeline /must/ match those
---     set for the current render pass instance via
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-09642# If the current
---     render pass was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     with the
---     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT'
---     flag, the bound graphics pipeline /must/ have been created with
---     'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-09643# If the bound
---     graphics pipeline was created with
---     'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT',
---     the current render pass /must/ have begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     with the
---     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT'
---     flag
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-commandBuffer-11045#
---     @commandBuffer@ /must/ not be a protected command buffer
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-isPreprocessed-11046# If
---     @isPreprocessed@ is 'Vulkan.Core10.FundamentalTypes.TRUE' and
---     'getGeneratedCommandsMemoryRequirementsEXT' did not return a
---     required size of zero then 'cmdPreprocessGeneratedCommandsEXT'
---     /must/ have already been executed on the device before this command
---     executes, and the preprocessing command /must/ have used the same
---     @pGeneratedCommandsInfo@ content as well as the content of the input
---     buffers it references (all except
---     'GeneratedCommandsInfoEXT'::@preprocessBuffer@)
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-isPreprocessed-11047# If
---     @isPreprocessed@ is 'Vulkan.Core10.FundamentalTypes.TRUE' then the
---     @indirectCommandsLayout@ member of @pGeneratedCommandsInfo@ /must/
---     have been created with the
---     'INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_EXT' bit set
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-indirectCommandsLayout-11141#
---     If the @indirectCommandsLayout@ member of @pGeneratedCommandsInfo@
---     was created with the
---     'INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_EXT' bit
---     set, then @isPreprocessed@ /must/ be
---     'Vulkan.Core10.FundamentalTypes.TRUE'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-preprocessAddress-11142# The
---     contents of the @preprocessAddress@ member of
---     @pGeneratedCommandsInfo@ /must/ not have been previously used to
---     record another 'cmdExecuteGeneratedCommandsEXT'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-isPreprocessed-11048# If
---     @isPreprocessed@ is 'Vulkan.Core10.FundamentalTypes.TRUE' then the
---     bound descriptor sets and push constants /must/ match identically
---     with those bound during recording of the corresponding call to
---     'cmdPreprocessGeneratedCommandsEXT'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-isPreprocessed-10198# If
---     @isPreprocessed@ is 'Vulkan.Core10.FundamentalTypes.TRUE' then the
---     conditional render state and its predicate value /must/ match
---     identically with the state and value set during execution of the
---     corresponding call to 'cmdPreprocessGeneratedCommandsEXT'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-isPreprocessed-11049# If
---     @isPreprocessed@ is 'Vulkan.Core10.FundamentalTypes.TRUE' and the
---     @indirectCommandsLayout@ member of @pGeneratedCommandsInfo@ contains
---     a draw token, then the graphics state bound on @commandBuffer@
---     /must/ match identically with the graphics state bound on the
---     @stateCommandBuffer@ passed to 'cmdPreprocessGeneratedCommandsEXT'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-isPreprocessed-11149# If
---     @isPreprocessed@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then the
---     queue family index of @commandBuffer@ /must/ be the same as the
---     queue family index used to allocate the @stateCommandBuffer@ passed
---     to 'cmdPreprocessGeneratedCommandsEXT'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-isPreprocessed-11051# If
---     @isPreprocessed@ is 'Vulkan.Core10.FundamentalTypes.TRUE' and the
---     @indirectCommandsLayout@ member of @pGeneratedCommandsInfo@ contains
---     a dispatch token, then the compute state bound on @commandBuffer@
---     /must/ match identically with the compute state bound on the
---     @stateCommandBuffer@ passed to 'cmdPreprocessGeneratedCommandsEXT'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-isPreprocessed-11052# If
---     @isPreprocessed@ is 'Vulkan.Core10.FundamentalTypes.TRUE' and the
---     @indirectCommandsLayout@ member of @pGeneratedCommandsInfo@ contains
---     a ray tracing token, then the ray tracing state bound on
---     @commandBuffer@ /must/ match identically with the ray tracing state
---     bound on the @stateCommandBuffer@ passed to
---     'cmdPreprocessGeneratedCommandsEXT'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-isPreprocessed-11150# If
---     @isPreprocessed@ is 'Vulkan.Core10.FundamentalTypes.TRUE' and the
---     @indirectCommandsLayout@ member of @pGeneratedCommandsInfo@ contains
---     a ray tracing token, the queue family index @commandBuffer@ was
---     allocated from /must/ be the same queue family index used to
---     allocate the @stateCommandBuffer@ passed to
---     'cmdPreprocessGeneratedCommandsEXT'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-indirectCommandsLayout-11053#
---     If the token sequence of the passed
---     'GeneratedCommandsInfoEXT'::@indirectCommandsLayout@ contains a
---     'INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT' token, the initial
---     shader state of 'GeneratedCommandsInfoEXT'::@indirectExecutionSet@
---     /must/ be bound on @commandBuffer@
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-indirectCommandsLayout-11004#
---     If @indirectCommandsLayout@ was created with a token sequence that
---     contained the 'INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT' token
---     and @indirectExecutionSet@ was created using
---     'INDIRECT_EXECUTION_SET_INFO_TYPE_SHADER_OBJECTS_EXT', every
---     executed 'INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT' token
---     /must/ bind all the shader stages set in the
---     'IndirectCommandsExecutionSetTokenEXT'::@shaderStages@ used to
---     create @indirectCommandsLayout@
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-isPreprocessed-11055# If
---     @isPreprocessed@ is 'Vulkan.Core10.FundamentalTypes.TRUE' and the
---     token sequence of the passed
---     'GeneratedCommandsInfoEXT'::@indirectCommandsLayout@ contains a
---     'INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT' token, the members
---     of 'GeneratedCommandsInfoEXT'::@indirectExecutionSet@ accessed by
---     this command /must/ not have been modified since the preprocess
---     buffer was generated
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-indirectCommandsLayout-11056#
---     If the @indirectCommandsLayout@ member of @pGeneratedCommandsInfo@
---     contains a draw token, then the active render pass /must/ not have a
---     specified fragment density map
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-deviceGeneratedCommandsTransformFeedback-11057#
---     If
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-deviceGeneratedCommandsTransformFeedback deviceGeneratedCommandsTransformFeedback>
---     is not supported on device, transform feedback /must/ not be active
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-indirectExecutionSet-11058#
---     If transform feedback is active,
---     'GeneratedCommandsInfoEXT'::@indirectExecutionSet@ /must/ be
---     'Vulkan.Core10.APIConstants.NULL_HANDLE'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-deviceGeneratedCommands-11059#
---     The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-deviceGeneratedCommands ::deviceGeneratedCommands>
---     feature /must/ be enabled
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-supportedIndirectCommandsShaderStages-11060#
---     The bound shader stages /must/ be supported by
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-supportedIndirectCommandsShaderStages ::supportedIndirectCommandsShaderStages>
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-supportedIndirectCommandsShaderStages-11061#
---     Only stages specified in
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-supportedIndirectCommandsShaderStages ::supportedIndirectCommandsShaderStages>
---     /can/ be set in @pGeneratedCommandsInfo->shaderStages@
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-11062# If a rendering
---     pass is currently active, the view mask /must/ be @0@
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-commandBuffer-11143#
---     @commandBuffer@ /must/ not have been created with
---     'Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT'
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-pGeneratedCommandsInfo-parameter#
---     @pGeneratedCommandsInfo@ /must/ be a valid pointer to a valid
---     'GeneratedCommandsInfoEXT' structure
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-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-vkCmdExecuteGeneratedCommandsEXT-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics, or compute operations
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-videocoding# This command
---     /must/ only be called outside of a video coding scope
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-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#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
--- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | Action                                                                                                                                 |
--- |                                                                                                                            |                                                                                                                        |                                                                                                                             | Compute                                                                                                               | Indirection                                                                                                                            |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_generated_commands VK_EXT_device_generated_commands>,
--- 'Vulkan.Core10.FundamentalTypes.Bool32',
--- 'Vulkan.Core10.Handles.CommandBuffer', 'GeneratedCommandsInfoEXT'
-cmdExecuteGeneratedCommandsEXT :: forall a io
-                                . ( Extendss GeneratedCommandsInfoEXT a
-                                  , PokeChain a
-                                  , MonadIO io )
-                               => -- | @commandBuffer@ is the command buffer into which the command is
-                                  -- recorded.
-                                  CommandBuffer
-                               -> -- | @isPreprocessed@ represents whether the input data has already been
-                                  -- preprocessed on the device. If it is
-                                  -- 'Vulkan.Core10.FundamentalTypes.FALSE' this command will implicitly
-                                  -- trigger the preprocessing step, otherwise not.
-                                  ("isPreprocessed" ::: Bool)
-                               -> -- | @pGeneratedCommandsInfo@ is a pointer to a 'GeneratedCommandsInfoEXT'
-                                  -- structure containing parameters affecting the generation of commands.
-                                  (GeneratedCommandsInfoEXT a)
-                               -> io ()
-cmdExecuteGeneratedCommandsEXT commandBuffer
-                                 isPreprocessed
-                                 generatedCommandsInfo = liftIO . evalContT $ do
-  let vkCmdExecuteGeneratedCommandsEXTPtr = pVkCmdExecuteGeneratedCommandsEXT (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCmdExecuteGeneratedCommandsEXTPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdExecuteGeneratedCommandsEXT is null" Nothing Nothing
-  let vkCmdExecuteGeneratedCommandsEXT' = mkVkCmdExecuteGeneratedCommandsEXT vkCmdExecuteGeneratedCommandsEXTPtr
-  pGeneratedCommandsInfo <- ContT $ withCStruct (generatedCommandsInfo)
-  lift $ traceAroundEvent "vkCmdExecuteGeneratedCommandsEXT" (vkCmdExecuteGeneratedCommandsEXT'
-                                                                (commandBufferHandle (commandBuffer))
-                                                                (boolToBool32 (isPreprocessed))
-                                                                (forgetExtensions pGeneratedCommandsInfo))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdPreprocessGeneratedCommandsEXT
-  :: FunPtr (Ptr CommandBuffer_T -> Ptr (SomeStruct GeneratedCommandsInfoEXT) -> Ptr CommandBuffer_T -> IO ()) -> Ptr CommandBuffer_T -> Ptr (SomeStruct GeneratedCommandsInfoEXT) -> Ptr CommandBuffer_T -> IO ()
-
--- | vkCmdPreprocessGeneratedCommandsEXT - Performs preprocessing for
--- generated commands
---
--- = Description
---
--- Note
---
--- @stateCommandBuffer@ access is not synchronized by the driver, meaning
--- that this command buffer /must/ not be modified between threads in an
--- unsafe manner.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdPreprocessGeneratedCommandsEXT-commandBuffer-11081#
---     @commandBuffer@ /must/ not be a protected command buffer
---
--- -   #VUID-vkCmdPreprocessGeneratedCommandsEXT-pGeneratedCommandsInfo-11082#
---     @pGeneratedCommandsInfo@’s @indirectCommandsLayout@ /must/ have been
---     created with the
---     'INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_EXT' bit set
---
--- -   #VUID-vkCmdPreprocessGeneratedCommandsEXT-indirectCommandsLayout-11084#
---     If the token sequence of the passed
---     'GeneratedCommandsInfoEXT'::@indirectCommandsLayout@ contains a
---     'INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT' token, the initial
---     shader state of 'GeneratedCommandsInfoEXT'::@indirectExecutionSet@
---     /must/ be bound on @stateCommandBuffer@
---
--- -   #VUID-vkCmdPreprocessGeneratedCommandsEXT-stateCommandBuffer-11138#
---     @stateCommandBuffer@ /must/ be in the recording state
---
--- -   #VUID-vkCmdPreprocessGeneratedCommandsEXT-deviceGeneratedCommands-11087#
---     The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-deviceGeneratedCommands ::deviceGeneratedCommands>
---     feature /must/ be enabled
---
--- -   #VUID-vkCmdPreprocessGeneratedCommandsEXT-supportedIndirectCommandsShaderStages-11088#
---     Only stages specified in
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-supportedIndirectCommandsShaderStages ::supportedIndirectCommandsShaderStages>
---     /can/ be set in @pGeneratedCommandsInfo->shaderStages@
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdPreprocessGeneratedCommandsEXT-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdPreprocessGeneratedCommandsEXT-pGeneratedCommandsInfo-parameter#
---     @pGeneratedCommandsInfo@ /must/ be a valid pointer to a valid
---     'GeneratedCommandsInfoEXT' structure
---
--- -   #VUID-vkCmdPreprocessGeneratedCommandsEXT-stateCommandBuffer-parameter#
---     @stateCommandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdPreprocessGeneratedCommandsEXT-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-vkCmdPreprocessGeneratedCommandsEXT-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics, or compute operations
---
--- -   #VUID-vkCmdPreprocessGeneratedCommandsEXT-renderpass# This command
---     /must/ only be called outside of a render pass instance
---
--- -   #VUID-vkCmdPreprocessGeneratedCommandsEXT-videocoding# This command
---     /must/ only be called outside of a video coding scope
---
--- -   #VUID-vkCmdPreprocessGeneratedCommandsEXT-bufferlevel#
---     @commandBuffer@ /must/ be a primary
---     'Vulkan.Core10.Handles.CommandBuffer'
---
--- -   #VUID-vkCmdPreprocessGeneratedCommandsEXT-commonparent# Both of
---     @commandBuffer@, and @stateCommandBuffer@ /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 @stateCommandBuffer@ /must/ be externally
---     synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
--- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | Graphics                                                                                                              | Action                                                                                                                                 |
--- |                                                                                                                            |                                                                                                                        |                                                                                                                             | Compute                                                                                                               |                                                                                                                                        |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_generated_commands VK_EXT_device_generated_commands>,
--- 'Vulkan.Core10.Handles.CommandBuffer', 'GeneratedCommandsInfoEXT'
-cmdPreprocessGeneratedCommandsEXT :: forall a io
-                                   . ( Extendss GeneratedCommandsInfoEXT a
-                                     , PokeChain a
-                                     , MonadIO io )
-                                  => -- | @commandBuffer@ is the command buffer which does the preprocessing.
-                                     CommandBuffer
-                                  -> -- | @pGeneratedCommandsInfo@ is a pointer to a 'GeneratedCommandsInfoEXT'
-                                     -- structure containing parameters affecting the preprocessing step.
-                                     (GeneratedCommandsInfoEXT a)
-                                  -> -- | @stateCommandBuffer@ is a command buffer from which to snapshot current
-                                     -- states affecting the preprocessing step. When a graphics command action
-                                     -- token is used, graphics state is snapshotted. When a compute action
-                                     -- command token is used, compute state is snapshotted. When a ray tracing
-                                     -- action command token is used, ray tracing state is snapshotted. It can
-                                     -- be deleted at any time after this command has been recorded.
-                                     ("stateCommandBuffer" ::: CommandBuffer)
-                                  -> io ()
-cmdPreprocessGeneratedCommandsEXT commandBuffer
-                                    generatedCommandsInfo
-                                    stateCommandBuffer = liftIO . evalContT $ do
-  let vkCmdPreprocessGeneratedCommandsEXTPtr = pVkCmdPreprocessGeneratedCommandsEXT (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCmdPreprocessGeneratedCommandsEXTPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdPreprocessGeneratedCommandsEXT is null" Nothing Nothing
-  let vkCmdPreprocessGeneratedCommandsEXT' = mkVkCmdPreprocessGeneratedCommandsEXT vkCmdPreprocessGeneratedCommandsEXTPtr
-  pGeneratedCommandsInfo <- ContT $ withCStruct (generatedCommandsInfo)
-  lift $ traceAroundEvent "vkCmdPreprocessGeneratedCommandsEXT" (vkCmdPreprocessGeneratedCommandsEXT'
-                                                                   (commandBufferHandle (commandBuffer))
-                                                                   (forgetExtensions pGeneratedCommandsInfo)
-                                                                   (commandBufferHandle (stateCommandBuffer)))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkGetGeneratedCommandsMemoryRequirementsEXT
-  :: FunPtr (Ptr Device_T -> Ptr (SomeStruct GeneratedCommandsMemoryRequirementsInfoEXT) -> Ptr (SomeStruct MemoryRequirements2) -> IO ()) -> Ptr Device_T -> Ptr (SomeStruct GeneratedCommandsMemoryRequirementsInfoEXT) -> Ptr (SomeStruct MemoryRequirements2) -> IO ()
-
--- | vkGetGeneratedCommandsMemoryRequirementsEXT - Retrieve the buffer
--- allocation requirements for generated commands
---
--- = Description
---
--- If the size returned is zero, the preprocessing step can be skipped for
--- this layout.
---
--- == Valid Usage (Implicit)
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_generated_commands VK_EXT_device_generated_commands>,
--- 'Vulkan.Core10.Handles.Device',
--- 'GeneratedCommandsMemoryRequirementsInfoEXT',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.MemoryRequirements2'
-getGeneratedCommandsMemoryRequirementsEXT :: forall a b io
-                                           . ( Extendss GeneratedCommandsMemoryRequirementsInfoEXT a
-                                             , PokeChain a
-                                             , Extendss MemoryRequirements2 b
-                                             , PokeChain b
-                                             , PeekChain b
-                                             , MonadIO io )
-                                          => -- | @device@ is the logical device that owns the buffer.
-                                             --
-                                             -- #VUID-vkGetGeneratedCommandsMemoryRequirementsEXT-device-parameter#
-                                             -- @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
-                                             Device
-                                          -> -- | @pInfo@ is a pointer to a 'GeneratedCommandsMemoryRequirementsInfoEXT'
-                                             -- structure containing parameters required for the memory requirements
-                                             -- query.
-                                             --
-                                             -- #VUID-vkGetGeneratedCommandsMemoryRequirementsEXT-pInfo-parameter#
-                                             -- @pInfo@ /must/ be a valid pointer to a valid
-                                             -- 'GeneratedCommandsMemoryRequirementsInfoEXT' structure
-                                             (GeneratedCommandsMemoryRequirementsInfoEXT a)
-                                          -> io (MemoryRequirements2 b)
-getGeneratedCommandsMemoryRequirementsEXT device info = liftIO . evalContT $ do
-  let vkGetGeneratedCommandsMemoryRequirementsEXTPtr = pVkGetGeneratedCommandsMemoryRequirementsEXT (case device of Device{deviceCmds} -> deviceCmds)
-  lift $ unless (vkGetGeneratedCommandsMemoryRequirementsEXTPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetGeneratedCommandsMemoryRequirementsEXT is null" Nothing Nothing
-  let vkGetGeneratedCommandsMemoryRequirementsEXT' = mkVkGetGeneratedCommandsMemoryRequirementsEXT vkGetGeneratedCommandsMemoryRequirementsEXTPtr
-  pInfo <- ContT $ withCStruct (info)
-  pPMemoryRequirements <- ContT (withZeroCStruct @(MemoryRequirements2 _))
-  lift $ traceAroundEvent "vkGetGeneratedCommandsMemoryRequirementsEXT" (vkGetGeneratedCommandsMemoryRequirementsEXT'
-                                                                           (deviceHandle (device))
-                                                                           (forgetExtensions pInfo)
-                                                                           (forgetExtensions (pPMemoryRequirements)))
-  pMemoryRequirements <- lift $ peekCStruct @(MemoryRequirements2 _) pPMemoryRequirements
-  pure $ (pMemoryRequirements)
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCreateIndirectCommandsLayoutEXT
-  :: FunPtr (Ptr Device_T -> Ptr (SomeStruct IndirectCommandsLayoutCreateInfoEXT) -> Ptr AllocationCallbacks -> Ptr IndirectCommandsLayoutEXT -> IO Result) -> Ptr Device_T -> Ptr (SomeStruct IndirectCommandsLayoutCreateInfoEXT) -> Ptr AllocationCallbacks -> Ptr IndirectCommandsLayoutEXT -> IO Result
-
--- | vkCreateIndirectCommandsLayoutEXT - Create an indirect command layout
--- object
---
--- == Valid Usage
---
--- -   #VUID-vkCreateIndirectCommandsLayoutEXT-deviceGeneratedCommands-11089#
---     The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-deviceGeneratedCommands ::deviceGeneratedCommands>
---     feature /must/ be enabled
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCreateIndirectCommandsLayoutEXT-device-parameter# @device@
---     /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
---
--- -   #VUID-vkCreateIndirectCommandsLayoutEXT-pCreateInfo-parameter#
---     @pCreateInfo@ /must/ be a valid pointer to a valid
---     'IndirectCommandsLayoutCreateInfoEXT' structure
---
--- -   #VUID-vkCreateIndirectCommandsLayoutEXT-pAllocator-parameter# If
---     @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid pointer
---     to a valid 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'
---     structure
---
--- -   #VUID-vkCreateIndirectCommandsLayoutEXT-pIndirectCommandsLayout-parameter#
---     @pIndirectCommandsLayout@ /must/ be a valid pointer to a
---     'Vulkan.Extensions.Handles.IndirectCommandsLayoutEXT' 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'
---
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_generated_commands VK_EXT_device_generated_commands>,
--- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',
--- 'Vulkan.Core10.Handles.Device', 'IndirectCommandsLayoutCreateInfoEXT',
--- 'Vulkan.Extensions.Handles.IndirectCommandsLayoutEXT'
-createIndirectCommandsLayoutEXT :: forall a io
-                                 . ( Extendss IndirectCommandsLayoutCreateInfoEXT a
-                                   , PokeChain a
-                                   , MonadIO io )
-                                => -- | @device@ is the logical device that creates the indirect command layout.
-                                   Device
-                                -> -- | @pCreateInfo@ is a pointer to a 'IndirectCommandsLayoutCreateInfoEXT'
-                                   -- structure containing parameters affecting creation of the indirect
-                                   -- command layout.
-                                   (IndirectCommandsLayoutCreateInfoEXT a)
-                                -> -- | @pAllocator@ controls host memory allocation as described in the
-                                   -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
-                                   -- chapter.
-                                   ("allocator" ::: Maybe AllocationCallbacks)
-                                -> io (IndirectCommandsLayoutEXT)
-createIndirectCommandsLayoutEXT device
-                                  createInfo
-                                  allocator = liftIO . evalContT $ do
-  let vkCreateIndirectCommandsLayoutEXTPtr = pVkCreateIndirectCommandsLayoutEXT (case device of Device{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCreateIndirectCommandsLayoutEXTPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCreateIndirectCommandsLayoutEXT is null" Nothing Nothing
-  let vkCreateIndirectCommandsLayoutEXT' = mkVkCreateIndirectCommandsLayoutEXT vkCreateIndirectCommandsLayoutEXTPtr
-  pCreateInfo <- ContT $ withCStruct (createInfo)
-  pAllocator <- case (allocator) of
-    Nothing -> pure nullPtr
-    Just j -> ContT $ withCStruct (j)
-  pPIndirectCommandsLayout <- ContT $ bracket (callocBytes @IndirectCommandsLayoutEXT 8) free
-  r <- lift $ traceAroundEvent "vkCreateIndirectCommandsLayoutEXT" (vkCreateIndirectCommandsLayoutEXT'
-                                                                      (deviceHandle (device))
-                                                                      (forgetExtensions pCreateInfo)
-                                                                      pAllocator
-                                                                      (pPIndirectCommandsLayout))
-  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
-  pIndirectCommandsLayout <- lift $ peek @IndirectCommandsLayoutEXT pPIndirectCommandsLayout
-  pure $ (pIndirectCommandsLayout)
-
--- | A convenience wrapper to make a compatible pair of calls to
--- 'createIndirectCommandsLayoutEXT' and 'destroyIndirectCommandsLayoutEXT'
---
--- To ensure that 'destroyIndirectCommandsLayoutEXT' 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.
---
-withIndirectCommandsLayoutEXT :: forall a io r . (Extendss IndirectCommandsLayoutCreateInfoEXT a, PokeChain a, MonadIO io) => Device -> IndirectCommandsLayoutCreateInfoEXT a -> Maybe AllocationCallbacks -> (io IndirectCommandsLayoutEXT -> (IndirectCommandsLayoutEXT -> io ()) -> r) -> r
-withIndirectCommandsLayoutEXT device pCreateInfo pAllocator b =
-  b (createIndirectCommandsLayoutEXT device pCreateInfo pAllocator)
-    (\(o0) -> destroyIndirectCommandsLayoutEXT device o0 pAllocator)
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkDestroyIndirectCommandsLayoutEXT
-  :: FunPtr (Ptr Device_T -> IndirectCommandsLayoutEXT -> Ptr AllocationCallbacks -> IO ()) -> Ptr Device_T -> IndirectCommandsLayoutEXT -> Ptr AllocationCallbacks -> IO ()
-
--- | vkDestroyIndirectCommandsLayoutEXT - Destroy an indirect commands layout
---
--- == Valid Usage
---
--- -   #VUID-vkDestroyIndirectCommandsLayoutEXT-indirectCommandsLayout-11114#
---     All submitted commands that refer to @indirectCommandsLayout@ /must/
---     have completed execution
---
--- -   #VUID-vkDestroyIndirectCommandsLayoutEXT-indirectCommandsLayout-11115#
---     If 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' were
---     provided when @indirectCommandsLayout@ was created, a compatible set
---     of callbacks /must/ be provided here
---
--- -   #VUID-vkDestroyIndirectCommandsLayoutEXT-indirectCommandsLayout-11116#
---     If no 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' were
---     provided when @indirectCommandsLayout@ was created, @pAllocator@
---     /must/ be @NULL@
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkDestroyIndirectCommandsLayoutEXT-device-parameter# @device@
---     /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
---
--- -   #VUID-vkDestroyIndirectCommandsLayoutEXT-indirectCommandsLayout-parameter#
---     If @indirectCommandsLayout@ is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', @indirectCommandsLayout@
---     /must/ be a valid
---     'Vulkan.Extensions.Handles.IndirectCommandsLayoutEXT' handle
---
--- -   #VUID-vkDestroyIndirectCommandsLayoutEXT-pAllocator-parameter# If
---     @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid pointer
---     to a valid 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'
---     structure
---
--- -   #VUID-vkDestroyIndirectCommandsLayoutEXT-indirectCommandsLayout-parent#
---     If @indirectCommandsLayout@ is a valid handle, it /must/ have been
---     created, allocated, or retrieved from @device@
---
--- == Host Synchronization
---
--- -   Host access to @indirectCommandsLayout@ /must/ be externally
---     synchronized
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_generated_commands VK_EXT_device_generated_commands>,
--- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',
--- 'Vulkan.Core10.Handles.Device',
--- 'Vulkan.Extensions.Handles.IndirectCommandsLayoutEXT'
-destroyIndirectCommandsLayoutEXT :: forall io
-                                  . (MonadIO io)
-                                 => -- | @device@ is the logical device that destroys the layout.
-                                    Device
-                                 -> -- | @indirectCommandsLayout@ is the layout to destroy.
-                                    IndirectCommandsLayoutEXT
-                                 -> -- | @pAllocator@ controls host memory allocation as described in the
-                                    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
-                                    -- chapter.
-                                    ("allocator" ::: Maybe AllocationCallbacks)
-                                 -> io ()
-destroyIndirectCommandsLayoutEXT device
-                                   indirectCommandsLayout
-                                   allocator = liftIO . evalContT $ do
-  let vkDestroyIndirectCommandsLayoutEXTPtr = pVkDestroyIndirectCommandsLayoutEXT (case device of Device{deviceCmds} -> deviceCmds)
-  lift $ unless (vkDestroyIndirectCommandsLayoutEXTPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkDestroyIndirectCommandsLayoutEXT is null" Nothing Nothing
-  let vkDestroyIndirectCommandsLayoutEXT' = mkVkDestroyIndirectCommandsLayoutEXT vkDestroyIndirectCommandsLayoutEXTPtr
-  pAllocator <- case (allocator) of
-    Nothing -> pure nullPtr
-    Just j -> ContT $ withCStruct (j)
-  lift $ traceAroundEvent "vkDestroyIndirectCommandsLayoutEXT" (vkDestroyIndirectCommandsLayoutEXT'
-                                                                  (deviceHandle (device))
-                                                                  (indirectCommandsLayout)
-                                                                  pAllocator)
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCreateIndirectExecutionSetEXT
-  :: FunPtr (Ptr Device_T -> Ptr IndirectExecutionSetCreateInfoEXT -> Ptr AllocationCallbacks -> Ptr IndirectExecutionSetEXT -> IO Result) -> Ptr Device_T -> Ptr IndirectExecutionSetCreateInfoEXT -> Ptr AllocationCallbacks -> Ptr IndirectExecutionSetEXT -> IO Result
-
--- | vkCreateIndirectExecutionSetEXT - Create an indirect execution set
---
--- == Valid Usage
---
--- -   #VUID-vkCreateIndirectExecutionSetEXT-deviceGeneratedCommands-11013#
---     The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-deviceGeneratedCommands ::deviceGeneratedCommands>
---     feature /must/ be enabled
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCreateIndirectExecutionSetEXT-device-parameter# @device@
---     /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
---
--- -   #VUID-vkCreateIndirectExecutionSetEXT-pCreateInfo-parameter#
---     @pCreateInfo@ /must/ be a valid pointer to a valid
---     'IndirectExecutionSetCreateInfoEXT' structure
---
--- -   #VUID-vkCreateIndirectExecutionSetEXT-pAllocator-parameter# If
---     @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid pointer
---     to a valid 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'
---     structure
---
--- -   #VUID-vkCreateIndirectExecutionSetEXT-pIndirectExecutionSet-parameter#
---     @pIndirectExecutionSet@ /must/ be a valid pointer to a
---     'Vulkan.Extensions.Handles.IndirectExecutionSetEXT' 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'
---
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_generated_commands VK_EXT_device_generated_commands>,
--- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',
--- 'Vulkan.Core10.Handles.Device', 'IndirectExecutionSetCreateInfoEXT',
--- 'Vulkan.Extensions.Handles.IndirectExecutionSetEXT'
-createIndirectExecutionSetEXT :: forall io
-                               . (MonadIO io)
-                              => -- | @device@ is the logical device that creates the indirect execution set.
-                                 Device
-                              -> -- | @pCreateInfo@ is a pointer to a 'IndirectExecutionSetCreateInfoEXT'
-                                 -- structure containing parameters affecting creation of the indirect
-                                 -- execution set.
-                                 IndirectExecutionSetCreateInfoEXT
-                              -> -- | @pAllocator@ controls host memory allocation as described in the
-                                 -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
-                                 -- chapter.
-                                 ("allocator" ::: Maybe AllocationCallbacks)
-                              -> io (IndirectExecutionSetEXT)
-createIndirectExecutionSetEXT device
-                                createInfo
-                                allocator = liftIO . evalContT $ do
-  let vkCreateIndirectExecutionSetEXTPtr = pVkCreateIndirectExecutionSetEXT (case device of Device{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCreateIndirectExecutionSetEXTPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCreateIndirectExecutionSetEXT is null" Nothing Nothing
-  let vkCreateIndirectExecutionSetEXT' = mkVkCreateIndirectExecutionSetEXT vkCreateIndirectExecutionSetEXTPtr
-  pCreateInfo <- ContT $ withCStruct (createInfo)
-  pAllocator <- case (allocator) of
-    Nothing -> pure nullPtr
-    Just j -> ContT $ withCStruct (j)
-  pPIndirectExecutionSet <- ContT $ bracket (callocBytes @IndirectExecutionSetEXT 8) free
-  r <- lift $ traceAroundEvent "vkCreateIndirectExecutionSetEXT" (vkCreateIndirectExecutionSetEXT'
-                                                                    (deviceHandle (device))
-                                                                    pCreateInfo
-                                                                    pAllocator
-                                                                    (pPIndirectExecutionSet))
-  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
-  pIndirectExecutionSet <- lift $ peek @IndirectExecutionSetEXT pPIndirectExecutionSet
-  pure $ (pIndirectExecutionSet)
-
--- | A convenience wrapper to make a compatible pair of calls to
--- 'createIndirectExecutionSetEXT' and 'destroyIndirectExecutionSetEXT'
---
--- To ensure that 'destroyIndirectExecutionSetEXT' 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.
---
-withIndirectExecutionSetEXT :: forall io r . MonadIO io => Device -> IndirectExecutionSetCreateInfoEXT -> Maybe AllocationCallbacks -> (io IndirectExecutionSetEXT -> (IndirectExecutionSetEXT -> io ()) -> r) -> r
-withIndirectExecutionSetEXT device pCreateInfo pAllocator b =
-  b (createIndirectExecutionSetEXT device pCreateInfo pAllocator)
-    (\(o0) -> destroyIndirectExecutionSetEXT device o0 pAllocator)
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkDestroyIndirectExecutionSetEXT
-  :: FunPtr (Ptr Device_T -> IndirectExecutionSetEXT -> Ptr AllocationCallbacks -> IO ()) -> Ptr Device_T -> IndirectExecutionSetEXT -> Ptr AllocationCallbacks -> IO ()
-
--- | vkDestroyIndirectExecutionSetEXT - Destroy an indirect execution set
---
--- == Valid Usage
---
--- -   #VUID-vkDestroyIndirectExecutionSetEXT-indirectExecutionSet-11025#
---     All submitted commands that refer to @indirectExecutionSet@ /must/
---     have completed execution
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkDestroyIndirectExecutionSetEXT-device-parameter# @device@
---     /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
---
--- -   #VUID-vkDestroyIndirectExecutionSetEXT-indirectExecutionSet-parameter#
---     If @indirectExecutionSet@ is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', @indirectExecutionSet@
---     /must/ be a valid
---     'Vulkan.Extensions.Handles.IndirectExecutionSetEXT' handle
---
--- -   #VUID-vkDestroyIndirectExecutionSetEXT-pAllocator-parameter# If
---     @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid pointer
---     to a valid 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'
---     structure
---
--- -   #VUID-vkDestroyIndirectExecutionSetEXT-indirectExecutionSet-parent#
---     If @indirectExecutionSet@ is a valid handle, it /must/ have been
---     created, allocated, or retrieved from @device@
---
--- == Host Synchronization
---
--- -   Host access to @indirectExecutionSet@ /must/ be externally
---     synchronized
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_generated_commands VK_EXT_device_generated_commands>,
--- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',
--- 'Vulkan.Core10.Handles.Device',
--- 'Vulkan.Extensions.Handles.IndirectExecutionSetEXT'
-destroyIndirectExecutionSetEXT :: forall io
-                                . (MonadIO io)
-                               => -- | @device@ is the logical device that owns the indirect execution set.
-                                  Device
-                               -> -- | @indirectExecutionSet@ is the indirect execution set to destroy.
-                                  IndirectExecutionSetEXT
-                               -> -- | @pAllocator@ controls host memory allocation as described in the
-                                  -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
-                                  -- chapter.
-                                  ("allocator" ::: Maybe AllocationCallbacks)
-                               -> io ()
-destroyIndirectExecutionSetEXT device
-                                 indirectExecutionSet
-                                 allocator = liftIO . evalContT $ do
-  let vkDestroyIndirectExecutionSetEXTPtr = pVkDestroyIndirectExecutionSetEXT (case device of Device{deviceCmds} -> deviceCmds)
-  lift $ unless (vkDestroyIndirectExecutionSetEXTPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkDestroyIndirectExecutionSetEXT is null" Nothing Nothing
-  let vkDestroyIndirectExecutionSetEXT' = mkVkDestroyIndirectExecutionSetEXT vkDestroyIndirectExecutionSetEXTPtr
-  pAllocator <- case (allocator) of
-    Nothing -> pure nullPtr
-    Just j -> ContT $ withCStruct (j)
-  lift $ traceAroundEvent "vkDestroyIndirectExecutionSetEXT" (vkDestroyIndirectExecutionSetEXT'
-                                                                (deviceHandle (device))
-                                                                (indirectExecutionSet)
-                                                                pAllocator)
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkUpdateIndirectExecutionSetPipelineEXT
-  :: FunPtr (Ptr Device_T -> IndirectExecutionSetEXT -> Word32 -> Ptr WriteIndirectExecutionSetPipelineEXT -> IO ()) -> Ptr Device_T -> IndirectExecutionSetEXT -> Word32 -> Ptr WriteIndirectExecutionSetPipelineEXT -> IO ()
-
--- | vkUpdateIndirectExecutionSetPipelineEXT - Update the contents of an
--- indirect execution set
---
--- == Valid Usage
---
--- -   #VUID-vkUpdateIndirectExecutionSetPipelineEXT-indirectExecutionSet-11035#
---     @indirectExecutionSet@ /must/ have been created with type
---     'INDIRECT_EXECUTION_SET_INFO_TYPE_PIPELINES_EXT'
---
--- -   #VUID-vkUpdateIndirectExecutionSetPipelineEXT-executionSetWriteCount-11037#
---     @executionSetWriteCount@ /must/ be less than or equal to
---     'IndirectExecutionSetPipelineInfoEXT'::@maxPipelineCount@
---
--- -   #VUID-vkUpdateIndirectExecutionSetPipelineEXT-pExecutionSetWrites-11042#
---     Each element in the @pExecutionSetWrites@ array must have a unique
---     'WriteIndirectExecutionSetPipelineEXT'::@index@
---
--- -   #VUID-vkUpdateIndirectExecutionSetPipelineEXT-None-11038# Each
---     member of the Indirect Execution Set referenced by the update
---     command /must/ not be in use by the device
---
--- -   #VUID-vkUpdateIndirectExecutionSetPipelineEXT-None-11039# The layout
---     of each pipeline in @pExecutionSetWrites@ /must/ be
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-compatibility compatible>
---     with the @initialPipeline@ used to create the Indirect Execution Set
---
--- -   #VUID-vkUpdateIndirectExecutionSetPipelineEXT-None-11040# Each
---     pipeline in the Indirect Execution Set /must/ have identically
---     defined static and dynamic state values to the @initialPipeline@
---     used to create the Indirect Execution Set
---
--- -   #VUID-vkUpdateIndirectExecutionSetPipelineEXT-initialPipeline-11147#
---     Each pipeline in the Indirect Execution Set /must/ have identically
---     defined
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-fragmentoutput fragment outputs interface>
---     to the @initialPipeline@ used to create the Indirect Execution Set
---
--- -   #VUID-vkUpdateIndirectExecutionSetPipelineEXT-initialPipeline-11152#
---     Each pipeline in the Indirect Execution Set /must/ match the
---     @initialPipeline@ used to create the Indirect Execution Set in its
---     included shader stages
---
--- -   #VUID-vkUpdateIndirectExecutionSetPipelineEXT-initialPipeline-11098#
---     Each pipeline in the Indirect Execution Set /must/ match the
---     @initialPipeline@ used to create the Indirect Execution Set in its
---     use of @FragDepth@
---
--- -   #VUID-vkUpdateIndirectExecutionSetPipelineEXT-initialPipeline-11086#
---     Each pipeline in the Indirect Execution Set /must/ match the
---     @initialPipeline@ used to create the Indirect Execution Set in its
---     use of 'Vulkan.Core10.FundamentalTypes.SampleMask'
---
--- -   #VUID-vkUpdateIndirectExecutionSetPipelineEXT-initialPipeline-11085#
---     Each pipeline in the Indirect Execution Set /must/ match the
---     @initialPipeline@ used to create the Indirect Execution Set in its
---     use of @StencilExportEXT@
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkUpdateIndirectExecutionSetPipelineEXT-device-parameter#
---     @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
---
--- -   #VUID-vkUpdateIndirectExecutionSetPipelineEXT-indirectExecutionSet-parameter#
---     @indirectExecutionSet@ /must/ be a valid
---     'Vulkan.Extensions.Handles.IndirectExecutionSetEXT' handle
---
--- -   #VUID-vkUpdateIndirectExecutionSetPipelineEXT-pExecutionSetWrites-parameter#
---     @pExecutionSetWrites@ /must/ be a valid pointer to an array of
---     @executionSetWriteCount@ valid
---     'WriteIndirectExecutionSetPipelineEXT' structures
---
--- -   #VUID-vkUpdateIndirectExecutionSetPipelineEXT-executionSetWriteCount-arraylength#
---     @executionSetWriteCount@ /must/ be greater than @0@
---
--- -   #VUID-vkUpdateIndirectExecutionSetPipelineEXT-indirectExecutionSet-parent#
---     @indirectExecutionSet@ /must/ have been created, allocated, or
---     retrieved from @device@
---
--- == Host Synchronization
---
--- -   Host access to @indirectExecutionSet@ /must/ be externally
---     synchronized
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_generated_commands VK_EXT_device_generated_commands>,
--- 'Vulkan.Core10.Handles.Device',
--- 'Vulkan.Extensions.Handles.IndirectExecutionSetEXT',
--- 'WriteIndirectExecutionSetPipelineEXT'
-updateIndirectExecutionSetPipelineEXT :: forall io
-                                       . (MonadIO io)
-                                      => -- | @device@ is the logical device that owns the indirect execution set.
-                                         Device
-                                      -> -- | @indirectExecutionSet@ is the indirect execution set being updated.
-                                         IndirectExecutionSetEXT
-                                      -> -- | @pExecutionSetWrites@ is a pointer to an array of
-                                         -- 'WriteIndirectExecutionSetPipelineEXT' structures describing the
-                                         -- elements to update.
-                                         ("executionSetWrites" ::: Vector WriteIndirectExecutionSetPipelineEXT)
-                                      -> io ()
-updateIndirectExecutionSetPipelineEXT device
-                                        indirectExecutionSet
-                                        executionSetWrites = liftIO . evalContT $ do
-  let vkUpdateIndirectExecutionSetPipelineEXTPtr = pVkUpdateIndirectExecutionSetPipelineEXT (case device of Device{deviceCmds} -> deviceCmds)
-  lift $ unless (vkUpdateIndirectExecutionSetPipelineEXTPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkUpdateIndirectExecutionSetPipelineEXT is null" Nothing Nothing
-  let vkUpdateIndirectExecutionSetPipelineEXT' = mkVkUpdateIndirectExecutionSetPipelineEXT vkUpdateIndirectExecutionSetPipelineEXTPtr
-  pPExecutionSetWrites <- ContT $ allocaBytes @WriteIndirectExecutionSetPipelineEXT ((Data.Vector.length (executionSetWrites)) * 32)
-  lift $ Data.Vector.imapM_ (\i e -> poke (pPExecutionSetWrites `plusPtr` (32 * (i)) :: Ptr WriteIndirectExecutionSetPipelineEXT) (e)) (executionSetWrites)
-  lift $ traceAroundEvent "vkUpdateIndirectExecutionSetPipelineEXT" (vkUpdateIndirectExecutionSetPipelineEXT'
-                                                                       (deviceHandle (device))
-                                                                       (indirectExecutionSet)
-                                                                       ((fromIntegral (Data.Vector.length $ (executionSetWrites)) :: Word32))
-                                                                       (pPExecutionSetWrites))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkUpdateIndirectExecutionSetShaderEXT
-  :: FunPtr (Ptr Device_T -> IndirectExecutionSetEXT -> Word32 -> Ptr WriteIndirectExecutionSetShaderEXT -> IO ()) -> Ptr Device_T -> IndirectExecutionSetEXT -> Word32 -> Ptr WriteIndirectExecutionSetShaderEXT -> IO ()
-
--- | vkUpdateIndirectExecutionSetShaderEXT - Update the contents of an
--- indirect execution set
---
--- == Valid Usage
---
--- -   #VUID-vkUpdateIndirectExecutionSetShaderEXT-indirectExecutionSet-11041#
---     @indirectExecutionSet@ /must/ have been created with type
---     'INDIRECT_EXECUTION_SET_INFO_TYPE_SHADER_OBJECTS_EXT'
---
--- -   #VUID-vkUpdateIndirectExecutionSetShaderEXT-pExecutionSetWrites-11043#
---     Each element in the @pExecutionSetWrites@ array must have a unique
---     'WriteIndirectExecutionSetShaderEXT'::@index@
---
--- -   #VUID-vkUpdateIndirectExecutionSetShaderEXT-None-11044# Each member
---     of the Indirect Execution Set referenced by the update command
---     /must/ not be in use by the device
---
--- -   #VUID-vkUpdateIndirectExecutionSetShaderEXT-pExecutionSetWrites-11140#
---     The descriptor layout of each shader in @pExecutionSetWrites@ /must/
---     be
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-compatibility compatible>
---     with the initial layout info used to create the Indirect Execution
---     Set
---
--- -   #VUID-vkUpdateIndirectExecutionSetShaderEXT-None-11148# Each
---     fragment shader element in the Indirect Execution Set /must/ have
---     identically defined
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-fragmentoutput fragment outputs interface>
---     to the initial shader state used to create the Indirect Execution
---     Set
---
--- -   #VUID-vkUpdateIndirectExecutionSetShaderEXT-FragDepth-11054# Each
---     fragment shader element in the Indirect Execution Set /must/ match
---     the initial shader state used to create the Indirect Execution Set
---     in its use of @FragDepth@
---
--- -   #VUID-vkUpdateIndirectExecutionSetShaderEXT-SampleMask-11050# Each
---     fragment shader element in the Indirect Execution Set /must/ match
---     the initial shader state used to create the Indirect Execution Set
---     in its use of 'Vulkan.Core10.FundamentalTypes.SampleMask'
---
--- -   #VUID-vkUpdateIndirectExecutionSetShaderEXT-StencilExportEXT-11003#
---     Each fragment shader element in the Indirect Execution Set /must/
---     match the initial shader state used to create the Indirect Execution
---     Set in its use of @StencilExportEXT@
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkUpdateIndirectExecutionSetShaderEXT-device-parameter#
---     @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
---
--- -   #VUID-vkUpdateIndirectExecutionSetShaderEXT-indirectExecutionSet-parameter#
---     @indirectExecutionSet@ /must/ be a valid
---     'Vulkan.Extensions.Handles.IndirectExecutionSetEXT' handle
---
--- -   #VUID-vkUpdateIndirectExecutionSetShaderEXT-pExecutionSetWrites-parameter#
---     @pExecutionSetWrites@ /must/ be a valid pointer to an array of
---     @executionSetWriteCount@ valid 'WriteIndirectExecutionSetShaderEXT'
---     structures
---
--- -   #VUID-vkUpdateIndirectExecutionSetShaderEXT-executionSetWriteCount-arraylength#
---     @executionSetWriteCount@ /must/ be greater than @0@
---
--- -   #VUID-vkUpdateIndirectExecutionSetShaderEXT-indirectExecutionSet-parent#
---     @indirectExecutionSet@ /must/ have been created, allocated, or
---     retrieved from @device@
---
--- == Host Synchronization
---
--- -   Host access to @indirectExecutionSet@ /must/ be externally
---     synchronized
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_generated_commands VK_EXT_device_generated_commands>,
--- 'Vulkan.Core10.Handles.Device',
--- 'Vulkan.Extensions.Handles.IndirectExecutionSetEXT',
--- 'WriteIndirectExecutionSetShaderEXT'
-updateIndirectExecutionSetShaderEXT :: forall io
-                                     . (MonadIO io)
-                                    => -- | @device@ is the logical device that owns the indirect execution set.
-                                       Device
-                                    -> -- | @indirectExecutionSet@ is the indirect execution set being updated.
-                                       IndirectExecutionSetEXT
-                                    -> -- | @pExecutionSetWrites@ is a pointer to an array of
-                                       -- 'WriteIndirectExecutionSetShaderEXT' structures describing the elements
-                                       -- to update.
-                                       ("executionSetWrites" ::: Vector WriteIndirectExecutionSetShaderEXT)
-                                    -> io ()
-updateIndirectExecutionSetShaderEXT device
-                                      indirectExecutionSet
-                                      executionSetWrites = liftIO . evalContT $ do
-  let vkUpdateIndirectExecutionSetShaderEXTPtr = pVkUpdateIndirectExecutionSetShaderEXT (case device of Device{deviceCmds} -> deviceCmds)
-  lift $ unless (vkUpdateIndirectExecutionSetShaderEXTPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkUpdateIndirectExecutionSetShaderEXT is null" Nothing Nothing
-  let vkUpdateIndirectExecutionSetShaderEXT' = mkVkUpdateIndirectExecutionSetShaderEXT vkUpdateIndirectExecutionSetShaderEXTPtr
-  pPExecutionSetWrites <- ContT $ allocaBytes @WriteIndirectExecutionSetShaderEXT ((Data.Vector.length (executionSetWrites)) * 32)
-  lift $ Data.Vector.imapM_ (\i e -> poke (pPExecutionSetWrites `plusPtr` (32 * (i)) :: Ptr WriteIndirectExecutionSetShaderEXT) (e)) (executionSetWrites)
-  lift $ traceAroundEvent "vkUpdateIndirectExecutionSetShaderEXT" (vkUpdateIndirectExecutionSetShaderEXT'
-                                                                     (deviceHandle (device))
-                                                                     (indirectExecutionSet)
-                                                                     ((fromIntegral (Data.Vector.length $ (executionSetWrites)) :: Word32))
-                                                                     (pPExecutionSetWrites))
-  pure $ ()
-
-
--- No documentation found for TopLevel "VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_EXT"
-pattern PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_EXT = PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV
-
-
--- No documentation found for TopLevel "VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_EXT"
-pattern ACCESS_COMMAND_PREPROCESS_READ_BIT_EXT = ACCESS_COMMAND_PREPROCESS_READ_BIT_NV
-
-
--- No documentation found for TopLevel "VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_EXT"
-pattern ACCESS_COMMAND_PREPROCESS_WRITE_BIT_EXT = ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV
-
-
--- | VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT - Structure
--- describing the device-generated compute features that can be supported
--- by an implementation
---
--- = Members
---
--- This structure describes the following features:
---
--- = Description
---
--- If the 'PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT' 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. 'PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT' /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_device_generated_commands VK_EXT_device_generated_commands>,
--- 'Vulkan.Core10.FundamentalTypes.Bool32',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT = PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
-  { -- | #features-deviceGeneratedCommands# @deviceGeneratedCommands@ indicates
-    -- whether the implementation supports functionality to generate commands
-    -- on the device.
-    deviceGeneratedCommands :: Bool
-  , -- | #features-dynamicGeneratedPipelineLayout#
-    -- @dynamicGeneratedPipelineLayout@ indicates the implementation allows the
-    -- @pipelineLayout@ member of 'IndirectCommandsLayoutCreateInfoEXT' to be
-    -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' and
-    -- 'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo' /can/ be chained
-    -- off those structures\' @pNext@ instead.
-    dynamicGeneratedPipelineLayout :: Bool
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT)
-#endif
-deriving instance Show PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
-
-instance ToCStruct PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT where
-  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (deviceGeneratedCommands))
-    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (dynamicGeneratedPipelineLayout))
-    f
-  cStructSize = 24
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_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 PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT where
-  peekCStruct p = do
-    deviceGeneratedCommands <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
-    dynamicGeneratedPipelineLayout <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
-    pure $ PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
-             (bool32ToBool deviceGeneratedCommands)
-             (bool32ToBool dynamicGeneratedPipelineLayout)
-
-instance Storable PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT where
-  sizeOf ~_ = 24
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT where
-  zero = PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
-           zero
-           zero
-
-
--- | VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT - Structure
--- describing push descriptor limits that can be supported by an
--- implementation
---
--- = Description
---
--- If the 'PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT' 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_device_generated_commands VK_EXT_device_generated_commands>,
--- 'Vulkan.Core10.FundamentalTypes.Bool32',
--- 'IndirectCommandsInputModeFlagsEXT',
--- 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlags',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT = PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-  { -- | #limits-maxIndirectPipelineCount# @maxIndirectPipelineCount@ is the
-    -- maximum number of pipelines passed to 'createIndirectExecutionSetEXT'.
-    maxIndirectPipelineCount :: Word32
-  , -- | #limits-maxIndirectShaderObjectCount# @maxIndirectShaderObjectCount@ is
-    -- the maximum number of shader objects passed to
-    -- 'createIndirectExecutionSetEXT'. If this value is zero, binding shader
-    -- objects indirectly is not supported.
-    maxIndirectShaderObjectCount :: Word32
-  , -- | #limits-maxIndirectSequenceCount# @maxIndirectSequenceCount@ is the
-    -- maximum number of sequences in 'GeneratedCommandsInfoEXT' and in
-    -- 'GeneratedCommandsMemoryRequirementsInfoEXT'.
-    maxIndirectSequenceCount :: Word32
-  , -- | #limits-maxIndirectCommandsTokenCount# @maxIndirectCommandsTokenCount@
-    -- is the maximum number of tokens in
-    -- 'IndirectCommandsLayoutCreateInfoEXT'.
-    maxIndirectCommandsTokenCount :: Word32
-  , -- | #limits-maxIndirectCommandsTokenOffset# @maxIndirectCommandsTokenOffset@
-    -- is the maximum offset in 'IndirectCommandsLayoutTokenEXT'.
-    maxIndirectCommandsTokenOffset :: Word32
-  , -- | #limits-maxIndirectCommandsIndirectStride#
-    -- @maxIndirectCommandsIndirectStride@ is the maximum stream stride in
-    -- 'IndirectCommandsLayoutCreateInfoEXT'.
-    maxIndirectCommandsIndirectStride :: Word32
-  , -- | #limits-supportedIndirectCommandsInputModes#
-    -- @supportedIndirectCommandsInputModes@ indicates the supported input
-    -- modes.
-    supportedIndirectCommandsInputModes :: IndirectCommandsInputModeFlagsEXT
-  , -- | #limits-supportedIndirectCommandsShaderStages#
-    -- @supportedIndirectCommandsShaderStages@ indicates the stages which /can/
-    -- be used to generate indirect commands. Implementations are required to
-    -- support, at minimum:
-    -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
-    -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT',
-    -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT'.
-    supportedIndirectCommandsShaderStages :: ShaderStageFlags
-  , -- | #limits-supportedIndirectCommandsShaderStagesPipelineBinding#
-    -- @supportedIndirectCommandsShaderStagesPipelineBinding@ indicates the
-    -- stages which /can/ be used within indirect execution sets for indirectly
-    -- binding shader stages using pipelines.
-    supportedIndirectCommandsShaderStagesPipelineBinding :: ShaderStageFlags
-  , -- | #limits-supportedIndirectCommandsShaderStagesShaderBinding#
-    -- @supportedIndirectCommandsShaderStagesShaderBinding@ indicates the
-    -- stages which /can/ be used within indirect execution sets for indirectly
-    -- binding shader stages using shader objects.
-    supportedIndirectCommandsShaderStagesShaderBinding :: ShaderStageFlags
-  , -- | #limits-deviceGeneratedCommandsTransformFeedback#
-    -- @deviceGeneratedCommandsTransformFeedback@ indicates whether the
-    -- implementation supports interactions with @VK_EXT_transform_feedback@
-    -- for pipelines not created with
-    -- 'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXT'.
-    deviceGeneratedCommandsTransformFeedback :: Bool
-  , -- | #limits-deviceGeneratedCommandsMultiDrawIndirectCount#
-    -- @deviceGeneratedCommandsMultiDrawIndirectCount@ indicates whether the
-    -- implementation supports COUNT variants of multi-draw indirect tokens.
-    deviceGeneratedCommandsMultiDrawIndirectCount :: Bool
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT)
-#endif
-deriving instance Show PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-
-instance ToCStruct PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT where
-  withCStruct x f = allocaBytes 64 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Word32)) (maxIndirectPipelineCount)
-    poke ((p `plusPtr` 20 :: Ptr Word32)) (maxIndirectShaderObjectCount)
-    poke ((p `plusPtr` 24 :: Ptr Word32)) (maxIndirectSequenceCount)
-    poke ((p `plusPtr` 28 :: Ptr Word32)) (maxIndirectCommandsTokenCount)
-    poke ((p `plusPtr` 32 :: Ptr Word32)) (maxIndirectCommandsTokenOffset)
-    poke ((p `plusPtr` 36 :: Ptr Word32)) (maxIndirectCommandsIndirectStride)
-    poke ((p `plusPtr` 40 :: Ptr IndirectCommandsInputModeFlagsEXT)) (supportedIndirectCommandsInputModes)
-    poke ((p `plusPtr` 44 :: Ptr ShaderStageFlags)) (supportedIndirectCommandsShaderStages)
-    poke ((p `plusPtr` 48 :: Ptr ShaderStageFlags)) (supportedIndirectCommandsShaderStagesPipelineBinding)
-    poke ((p `plusPtr` 52 :: Ptr ShaderStageFlags)) (supportedIndirectCommandsShaderStagesShaderBinding)
-    poke ((p `plusPtr` 56 :: Ptr Bool32)) (boolToBool32 (deviceGeneratedCommandsTransformFeedback))
-    poke ((p `plusPtr` 60 :: Ptr Bool32)) (boolToBool32 (deviceGeneratedCommandsMultiDrawIndirectCount))
-    f
-  cStructSize = 64
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_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)
-    poke ((p `plusPtr` 36 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 40 :: Ptr IndirectCommandsInputModeFlagsEXT)) (zero)
-    poke ((p `plusPtr` 44 :: Ptr ShaderStageFlags)) (zero)
-    poke ((p `plusPtr` 48 :: Ptr ShaderStageFlags)) (zero)
-    poke ((p `plusPtr` 52 :: Ptr ShaderStageFlags)) (zero)
-    poke ((p `plusPtr` 56 :: Ptr Bool32)) (boolToBool32 (zero))
-    poke ((p `plusPtr` 60 :: Ptr Bool32)) (boolToBool32 (zero))
-    f
-
-instance FromCStruct PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT where
-  peekCStruct p = do
-    maxIndirectPipelineCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
-    maxIndirectShaderObjectCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
-    maxIndirectSequenceCount <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))
-    maxIndirectCommandsTokenCount <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))
-    maxIndirectCommandsTokenOffset <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))
-    maxIndirectCommandsIndirectStride <- peek @Word32 ((p `plusPtr` 36 :: Ptr Word32))
-    supportedIndirectCommandsInputModes <- peek @IndirectCommandsInputModeFlagsEXT ((p `plusPtr` 40 :: Ptr IndirectCommandsInputModeFlagsEXT))
-    supportedIndirectCommandsShaderStages <- peek @ShaderStageFlags ((p `plusPtr` 44 :: Ptr ShaderStageFlags))
-    supportedIndirectCommandsShaderStagesPipelineBinding <- peek @ShaderStageFlags ((p `plusPtr` 48 :: Ptr ShaderStageFlags))
-    supportedIndirectCommandsShaderStagesShaderBinding <- peek @ShaderStageFlags ((p `plusPtr` 52 :: Ptr ShaderStageFlags))
-    deviceGeneratedCommandsTransformFeedback <- peek @Bool32 ((p `plusPtr` 56 :: Ptr Bool32))
-    deviceGeneratedCommandsMultiDrawIndirectCount <- peek @Bool32 ((p `plusPtr` 60 :: Ptr Bool32))
-    pure $ PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-             maxIndirectPipelineCount
-             maxIndirectShaderObjectCount
-             maxIndirectSequenceCount
-             maxIndirectCommandsTokenCount
-             maxIndirectCommandsTokenOffset
-             maxIndirectCommandsIndirectStride
-             supportedIndirectCommandsInputModes
-             supportedIndirectCommandsShaderStages
-             supportedIndirectCommandsShaderStagesPipelineBinding
-             supportedIndirectCommandsShaderStagesShaderBinding
-             (bool32ToBool deviceGeneratedCommandsTransformFeedback)
-             (bool32ToBool deviceGeneratedCommandsMultiDrawIndirectCount)
-
-instance Storable PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT where
-  sizeOf ~_ = 64
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT where
-  zero = PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-
-
--- | VkGeneratedCommandsPipelineInfoEXT - Structure specifying a pipeline for
--- use with indirect command preprocessing
---
--- == Valid Usage (Implicit)
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_generated_commands VK_EXT_device_generated_commands>,
--- 'Vulkan.Core10.Handles.Pipeline',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data GeneratedCommandsPipelineInfoEXT = GeneratedCommandsPipelineInfoEXT
-  { -- | @pipeline@ is a valid pipeline object.
-    --
-    -- #VUID-VkGeneratedCommandsPipelineInfoEXT-pipeline-parameter# @pipeline@
-    -- /must/ be a valid 'Vulkan.Core10.Handles.Pipeline' handle
-    pipeline :: Pipeline }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (GeneratedCommandsPipelineInfoEXT)
-#endif
-deriving instance Show GeneratedCommandsPipelineInfoEXT
-
-instance ToCStruct GeneratedCommandsPipelineInfoEXT where
-  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p GeneratedCommandsPipelineInfoEXT{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GENERATED_COMMANDS_PIPELINE_INFO_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Pipeline)) (pipeline)
-    f
-  cStructSize = 24
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GENERATED_COMMANDS_PIPELINE_INFO_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Pipeline)) (zero)
-    f
-
-instance FromCStruct GeneratedCommandsPipelineInfoEXT where
-  peekCStruct p = do
-    pipeline <- peek @Pipeline ((p `plusPtr` 16 :: Ptr Pipeline))
-    pure $ GeneratedCommandsPipelineInfoEXT
-             pipeline
-
-instance Storable GeneratedCommandsPipelineInfoEXT where
-  sizeOf ~_ = 24
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero GeneratedCommandsPipelineInfoEXT where
-  zero = GeneratedCommandsPipelineInfoEXT
-           zero
-
-
--- | VkGeneratedCommandsShaderInfoEXT - Structure specifying shader objects
--- for use with indirect command preprocessing
---
--- == Valid Usage (Implicit)
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_generated_commands VK_EXT_device_generated_commands>,
--- 'Vulkan.Extensions.Handles.ShaderEXT',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data GeneratedCommandsShaderInfoEXT = GeneratedCommandsShaderInfoEXT
-  { -- | @pShaders@ is a pointer to an array of shader objects.
-    --
-    -- #VUID-VkGeneratedCommandsShaderInfoEXT-pShaders-11127# @pShaders@ /must/
-    -- not contain more than one shader object for a given
-    -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits' stage
-    --
-    -- #VUID-VkGeneratedCommandsShaderInfoEXT-pShaders-parameter# @pShaders@
-    -- /must/ be a valid pointer to an array of @shaderCount@ valid
-    -- 'Vulkan.Extensions.Handles.ShaderEXT' handles
-    shaders :: Vector ShaderEXT }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (GeneratedCommandsShaderInfoEXT)
-#endif
-deriving instance Show GeneratedCommandsShaderInfoEXT
-
-instance ToCStruct GeneratedCommandsShaderInfoEXT where
-  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p GeneratedCommandsShaderInfoEXT{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GENERATED_COMMANDS_SHADER_INFO_EXT)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (shaders)) :: Word32))
-    pPShaders' <- ContT $ allocaBytes @ShaderEXT ((Data.Vector.length (shaders)) * 8)
-    lift $ Data.Vector.imapM_ (\i e -> poke (pPShaders' `plusPtr` (8 * (i)) :: Ptr ShaderEXT) (e)) (shaders)
-    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr ShaderEXT))) (pPShaders')
-    lift $ f
-  cStructSize = 32
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GENERATED_COMMANDS_SHADER_INFO_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    f
-
-instance FromCStruct GeneratedCommandsShaderInfoEXT where
-  peekCStruct p = do
-    shaderCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
-    pShaders <- peek @(Ptr ShaderEXT) ((p `plusPtr` 24 :: Ptr (Ptr ShaderEXT)))
-    pShaders' <- generateM (fromIntegral shaderCount) (\i -> peek @ShaderEXT ((pShaders `advancePtrBytes` (8 * (i)) :: Ptr ShaderEXT)))
-    pure $ GeneratedCommandsShaderInfoEXT
-             pShaders'
-
-instance Zero GeneratedCommandsShaderInfoEXT where
-  zero = GeneratedCommandsShaderInfoEXT
-           mempty
-
-
--- | VkGeneratedCommandsMemoryRequirementsInfoEXT - Structure specifying
--- parameters for the reservation of preprocess buffer space
---
--- = Description
---
--- If the action command token for the layout is not a COUNT-type
--- multi-draw indirect token, @maxDrawCount@ is ignored.
---
--- == Valid Usage
---
--- -   #VUID-VkGeneratedCommandsMemoryRequirementsInfoEXT-maxSequencesCount-11009#
---     @maxSequencesCount@ /must/ be less or equal to
---     'PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT'::@maxIndirectSequenceCount@
---
--- -   #VUID-VkGeneratedCommandsMemoryRequirementsInfoEXT-indirectCommandsLayout-11010#
---     If @indirectCommandsLayout@ was created with a token sequence that
---     contained the 'INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT'
---     token, @indirectExecutionSet@ /must/ not be
---     'Vulkan.Core10.APIConstants.NULL_HANDLE'
---
--- -   #VUID-VkGeneratedCommandsMemoryRequirementsInfoEXT-indirectCommandsLayout-11151#
---     If @indirectCommandsLayout@ was created with a token sequence that
---     contained the 'INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT'
---     token, the shader stages used to create the initial shader state of
---     @indirectExecutionSet@ /must/ equal the
---     'IndirectCommandsExecutionSetTokenEXT'::@shaderStages@ used to
---     create @indirectCommandsLayout@
---
--- -   #VUID-VkGeneratedCommandsMemoryRequirementsInfoEXT-indirectCommandsLayout-11011#
---     If @indirectCommandsLayout@ was not created with a token sequence
---     that contained the 'INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT'
---     token, @indirectExecutionSet@ /must/ be
---     'Vulkan.Core10.APIConstants.NULL_HANDLE'
---
--- -   #VUID-VkGeneratedCommandsMemoryRequirementsInfoEXT-maxDrawCount-11146#
---     When not ignored, @maxDrawCount@ × @maxSequenceCount@ /must/ be less
---     than 2^24
---
--- -   #VUID-VkGeneratedCommandsMemoryRequirementsInfoEXT-indirectExecutionSet-11012#
---     If @indirectExecutionSet@ is
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', either a
---     'GeneratedCommandsPipelineInfoEXT' or a
---     'GeneratedCommandsShaderInfoEXT' /must/ be included in the @pNext@
---     chain
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkGeneratedCommandsMemoryRequirementsInfoEXT-sType-sType#
---     @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXT'
---
--- -   #VUID-VkGeneratedCommandsMemoryRequirementsInfoEXT-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
---     'GeneratedCommandsPipelineInfoEXT' or
---     'GeneratedCommandsShaderInfoEXT'
---
--- -   #VUID-VkGeneratedCommandsMemoryRequirementsInfoEXT-sType-unique# The
---     @sType@ value of each struct in the @pNext@ chain /must/ be unique
---
--- -   #VUID-VkGeneratedCommandsMemoryRequirementsInfoEXT-indirectExecutionSet-parameter#
---     If @indirectExecutionSet@ is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', @indirectExecutionSet@
---     /must/ be a valid
---     'Vulkan.Extensions.Handles.IndirectExecutionSetEXT' handle
---
--- -   #VUID-VkGeneratedCommandsMemoryRequirementsInfoEXT-indirectCommandsLayout-parameter#
---     @indirectCommandsLayout@ /must/ be a valid
---     'Vulkan.Extensions.Handles.IndirectCommandsLayoutEXT' handle
---
--- -   #VUID-VkGeneratedCommandsMemoryRequirementsInfoEXT-commonparent#
---     Both of @indirectCommandsLayout@, and @indirectExecutionSet@ that
---     are valid handles of non-ignored parameters /must/ have been
---     created, allocated, or retrieved from the same
---     'Vulkan.Core10.Handles.Device'
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_generated_commands VK_EXT_device_generated_commands>,
--- 'Vulkan.Extensions.Handles.IndirectCommandsLayoutEXT',
--- 'Vulkan.Extensions.Handles.IndirectExecutionSetEXT',
--- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'getGeneratedCommandsMemoryRequirementsEXT'
-data GeneratedCommandsMemoryRequirementsInfoEXT (es :: [Type]) = GeneratedCommandsMemoryRequirementsInfoEXT
-  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
-    next :: Chain es
-  , -- | @indirectExecutionSet@ is the indirect execution set to be used for
-    -- binding shaders.
-    indirectExecutionSet :: IndirectExecutionSetEXT
-  , -- | @indirectCommandsLayout@ is the
-    -- 'Vulkan.Extensions.Handles.IndirectCommandsLayoutEXT' that this buffer
-    -- memory is intended to be used with.
-    indirectCommandsLayout :: IndirectCommandsLayoutEXT
-  , -- | @maxSequenceCount@ is the maximum number of sequences that this buffer
-    -- memory can be used with.
-    maxSequenceCount :: Word32
-  , -- | @maxDrawCount@ is the maximum number of indirect draws that can be
-    -- executed by any COUNT-type multi-draw indirect tokens. The draw count in
-    -- the indirect buffer is clamped to this value for these token types.
-    maxDrawCount :: Word32
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (GeneratedCommandsMemoryRequirementsInfoEXT (es :: [Type]))
-#endif
-deriving instance Show (Chain es) => Show (GeneratedCommandsMemoryRequirementsInfoEXT es)
-
-instance Extensible GeneratedCommandsMemoryRequirementsInfoEXT where
-  extensibleTypeName = "GeneratedCommandsMemoryRequirementsInfoEXT"
-  setNext GeneratedCommandsMemoryRequirementsInfoEXT{..} next' = GeneratedCommandsMemoryRequirementsInfoEXT{next = next', ..}
-  getNext GeneratedCommandsMemoryRequirementsInfoEXT{..} = next
-  extends :: forall e b proxy. Typeable e => proxy e -> (Extends GeneratedCommandsMemoryRequirementsInfoEXT e => b) -> Maybe b
-  extends _ f
-    | Just Refl <- eqT @e @GeneratedCommandsShaderInfoEXT = Just f
-    | Just Refl <- eqT @e @GeneratedCommandsPipelineInfoEXT = Just f
-    | otherwise = Nothing
-
-instance ( Extendss GeneratedCommandsMemoryRequirementsInfoEXT es
-         , PokeChain es ) => ToCStruct (GeneratedCommandsMemoryRequirementsInfoEXT es) where
-  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p GeneratedCommandsMemoryRequirementsInfoEXT{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXT)
-    pNext'' <- fmap castPtr . ContT $ withChain (next)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
-    lift $ poke ((p `plusPtr` 16 :: Ptr IndirectExecutionSetEXT)) (indirectExecutionSet)
-    lift $ poke ((p `plusPtr` 24 :: Ptr IndirectCommandsLayoutEXT)) (indirectCommandsLayout)
-    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) (maxSequenceCount)
-    lift $ poke ((p `plusPtr` 36 :: Ptr Word32)) (maxDrawCount)
-    lift $ f
-  cStructSize = 40
-  cStructAlignment = 8
-  pokeZeroCStruct p f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXT)
-    pNext' <- fmap castPtr . ContT $ withZeroChain @es
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
-    lift $ poke ((p `plusPtr` 24 :: Ptr IndirectCommandsLayoutEXT)) (zero)
-    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) (zero)
-    lift $ poke ((p `plusPtr` 36 :: Ptr Word32)) (zero)
-    lift $ f
-
-instance ( Extendss GeneratedCommandsMemoryRequirementsInfoEXT es
-         , PeekChain es ) => FromCStruct (GeneratedCommandsMemoryRequirementsInfoEXT es) where
-  peekCStruct p = do
-    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
-    next <- peekChain (castPtr pNext)
-    indirectExecutionSet <- peek @IndirectExecutionSetEXT ((p `plusPtr` 16 :: Ptr IndirectExecutionSetEXT))
-    indirectCommandsLayout <- peek @IndirectCommandsLayoutEXT ((p `plusPtr` 24 :: Ptr IndirectCommandsLayoutEXT))
-    maxSequenceCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))
-    maxDrawCount <- peek @Word32 ((p `plusPtr` 36 :: Ptr Word32))
-    pure $ GeneratedCommandsMemoryRequirementsInfoEXT
-             next
-             indirectExecutionSet
-             indirectCommandsLayout
-             maxSequenceCount
-             maxDrawCount
-
-instance es ~ '[] => Zero (GeneratedCommandsMemoryRequirementsInfoEXT es) where
-  zero = GeneratedCommandsMemoryRequirementsInfoEXT
-           ()
-           zero
-           zero
-           zero
-           zero
-
-
--- | VkIndirectExecutionSetPipelineInfoEXT - Struct specifying parameters of
--- a newly created indirect execution set containing only pipelines
---
--- = Description
---
--- The characteristics of @initialPipeline@ will be used to validate all
--- pipelines added to the set even if they are removed from the set or
--- destroyed.
---
--- When an Indirect Execution Set created with pipelines is used,
--- @initialPipeline@ constitutes the initial shader state.
---
--- == Valid Usage
---
--- -   #VUID-VkIndirectExecutionSetPipelineInfoEXT-supportedIndirectCommandsShaderStagesPipelineBinding-11015#
---     If
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-supportedIndirectCommandsShaderStagesPipelineBinding ::supportedIndirectCommandsShaderStagesPipelineBinding>
---     does not contain
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT',
---     the 'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint' of
---     @initialPipeline@ /must/ not be
---     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_COMPUTE'
---
--- -   #VUID-VkIndirectExecutionSetPipelineInfoEXT-supportedIndirectCommandsShaderStagesPipelineBinding-11016#
---     If
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-supportedIndirectCommandsShaderStagesPipelineBinding ::supportedIndirectCommandsShaderStagesPipelineBinding>
---     does not contain
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT',
---     the 'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint' of
---     @initialPipeline@ /must/ not be
---     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
---
--- -   #VUID-VkIndirectExecutionSetPipelineInfoEXT-supportedIndirectCommandsShaderStagesPipelineBinding-11017#
---     If
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-supportedIndirectCommandsShaderStagesPipelineBinding ::supportedIndirectCommandsShaderStagesPipelineBinding>
---     does not contain ray tracing stages, the
---     'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint' of
---     @initialPipeline@ /must/ not be
---     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_RAY_TRACING_KHR'
---
--- -   #VUID-VkIndirectExecutionSetPipelineInfoEXT-maxPipelineCount-11018#
---     @maxPipelineCount@ /must/ be between @1@ and
---     'PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT'::@maxIndirectPipelineCount@
---
--- -   #VUID-VkIndirectExecutionSetPipelineInfoEXT-initialPipeline-11019#
---     @initialPipeline@ /must/ not use descriptors of type
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC'
---     or
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC'
---
--- -   #VUID-VkIndirectExecutionSetPipelineInfoEXT-initialPipeline-11153#
---     @initialPipeline@ /must/ have been created with
---     'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXT'
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkIndirectExecutionSetPipelineInfoEXT-sType-sType# @sType@
---     /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXT'
---
--- -   #VUID-VkIndirectExecutionSetPipelineInfoEXT-initialPipeline-parameter#
---     @initialPipeline@ /must/ be a valid 'Vulkan.Core10.Handles.Pipeline'
---     handle
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_generated_commands VK_EXT_device_generated_commands>,
--- 'IndirectExecutionSetInfoEXT', 'Vulkan.Core10.Handles.Pipeline',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data IndirectExecutionSetPipelineInfoEXT = IndirectExecutionSetPipelineInfoEXT
-  { -- | @initialPipeline@ is the initial pipeline for the set. This pipeline
-    -- will be automatically added to the set at index @0@.
-    initialPipeline :: Pipeline
-  , -- | @maxPipelineCount@ is the maximum number of pipelines stored in the set.
-    maxPipelineCount :: Word32
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (IndirectExecutionSetPipelineInfoEXT)
-#endif
-deriving instance Show IndirectExecutionSetPipelineInfoEXT
-
-instance ToCStruct IndirectExecutionSetPipelineInfoEXT where
-  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p IndirectExecutionSetPipelineInfoEXT{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Pipeline)) (initialPipeline)
-    poke ((p `plusPtr` 24 :: Ptr Word32)) (maxPipelineCount)
-    f
-  cStructSize = 32
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Pipeline)) (zero)
-    poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)
-    f
-
-instance FromCStruct IndirectExecutionSetPipelineInfoEXT where
-  peekCStruct p = do
-    initialPipeline <- peek @Pipeline ((p `plusPtr` 16 :: Ptr Pipeline))
-    maxPipelineCount <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))
-    pure $ IndirectExecutionSetPipelineInfoEXT
-             initialPipeline maxPipelineCount
-
-instance Storable IndirectExecutionSetPipelineInfoEXT where
-  sizeOf ~_ = 32
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero IndirectExecutionSetPipelineInfoEXT where
-  zero = IndirectExecutionSetPipelineInfoEXT
-           zero
-           zero
-
-
--- | VkIndirectExecutionSetShaderLayoutInfoEXT - Struct specifying descriptor
--- layout parameters of a newly created indirect execution set containing
--- only shader objects
---
--- == Valid Usage
---
--- -   #VUID-VkIndirectExecutionSetShaderLayoutInfoEXT-pSetLayouts-11024#
---     All members of @pSetLayouts@ /must/ not contain descriptors of type
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC'
---     or
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC'
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkIndirectExecutionSetShaderLayoutInfoEXT-sType-sType# @sType@
---     /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXT'
---
--- -   #VUID-VkIndirectExecutionSetShaderLayoutInfoEXT-pSetLayouts-parameter#
---     If @setLayoutCount@ is not @0@, @pSetLayouts@ /must/ be a valid
---     pointer to an array of @setLayoutCount@ valid or
---     'Vulkan.Core10.APIConstants.NULL_HANDLE'
---     'Vulkan.Core10.Handles.DescriptorSetLayout' handles
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_generated_commands VK_EXT_device_generated_commands>,
--- 'Vulkan.Core10.Handles.DescriptorSetLayout',
--- 'IndirectExecutionSetShaderInfoEXT',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data IndirectExecutionSetShaderLayoutInfoEXT = IndirectExecutionSetShaderLayoutInfoEXT
-  { -- | @pSetLayouts@ is a pointer to an array containing
-    -- 'Vulkan.Core10.Handles.DescriptorSetLayout' objects used by the shader
-    -- stage.
-    setLayouts :: Vector DescriptorSetLayout }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (IndirectExecutionSetShaderLayoutInfoEXT)
-#endif
-deriving instance Show IndirectExecutionSetShaderLayoutInfoEXT
-
-instance ToCStruct IndirectExecutionSetShaderLayoutInfoEXT where
-  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p IndirectExecutionSetShaderLayoutInfoEXT{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXT)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (setLayouts)) :: Word32))
-    pPSetLayouts' <- ContT $ allocaBytes @DescriptorSetLayout ((Data.Vector.length (setLayouts)) * 8)
-    lift $ Data.Vector.imapM_ (\i e -> poke (pPSetLayouts' `plusPtr` (8 * (i)) :: Ptr DescriptorSetLayout) (e)) (setLayouts)
-    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr DescriptorSetLayout))) (pPSetLayouts')
-    lift $ f
-  cStructSize = 32
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    f
-
-instance FromCStruct IndirectExecutionSetShaderLayoutInfoEXT where
-  peekCStruct p = do
-    setLayoutCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
-    pSetLayouts <- peek @(Ptr DescriptorSetLayout) ((p `plusPtr` 24 :: Ptr (Ptr DescriptorSetLayout)))
-    pSetLayouts' <- generateM (fromIntegral setLayoutCount) (\i -> peek @DescriptorSetLayout ((pSetLayouts `advancePtrBytes` (8 * (i)) :: Ptr DescriptorSetLayout)))
-    pure $ IndirectExecutionSetShaderLayoutInfoEXT
-             pSetLayouts'
-
-instance Zero IndirectExecutionSetShaderLayoutInfoEXT where
-  zero = IndirectExecutionSetShaderLayoutInfoEXT
-           mempty
-
-
--- | VkIndirectExecutionSetShaderInfoEXT - Struct specifying parameters of a
--- newly created indirect execution set containing only shader objects
---
--- = Description
---
--- The characteristics of @pInitialShaders@ will be used to validate all
--- shaders added to the set even if they are removed from the set or
--- destroyed.
---
--- When an Indirect Execution Set created with shader objects is used,
--- @pInitialShaders@ constitutes the initial shader state.
---
--- == Valid Usage
---
--- -   #VUID-VkIndirectExecutionSetShaderInfoEXT-pInitialShaders-11020# All
---     members of @pInitialShaders@ /must/ have a @stage@ supported by
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-supportedIndirectCommandsShaderStagesShaderBinding ::supportedIndirectCommandsShaderStagesShaderBinding>
---
--- -   #VUID-VkIndirectExecutionSetShaderInfoEXT-maxShaderCount-11021#
---     @maxShaderCount@ /must/ not be zero
---
--- -   #VUID-VkIndirectExecutionSetShaderInfoEXT-maxShaderCount-11022#
---     @maxShaderCount@ /must/ be less than or equal to
---     'PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT'::@maxIndirectShaderObjectCount@
---
--- -   #VUID-VkIndirectExecutionSetShaderInfoEXT-maxShaderCount-11036#
---     @maxShaderCount@ /must/ be greater than or equal to @shaderCount@
---
--- -   #VUID-VkIndirectExecutionSetShaderInfoEXT-stage-11023# The @stage@
---     of each element in the @pInitialShaders@ array /must/ be unique
---
--- -   #VUID-VkIndirectExecutionSetShaderInfoEXT-pInitialShaders-11154#
---     Each member of @pInitialShaders@ /must/ have been created with
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDIRECT_BINDABLE_BIT_EXT'
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkIndirectExecutionSetShaderInfoEXT-sType-sType# @sType@
---     /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_INFO_EXT'
---
--- -   #VUID-VkIndirectExecutionSetShaderInfoEXT-pInitialShaders-parameter#
---     @pInitialShaders@ /must/ be a valid pointer to an array of
---     @shaderCount@ valid 'Vulkan.Extensions.Handles.ShaderEXT' handles
---
--- -   #VUID-VkIndirectExecutionSetShaderInfoEXT-pSetLayoutInfos-parameter#
---     If @pSetLayoutInfos@ is not @NULL@, @pSetLayoutInfos@ /must/ be a
---     valid pointer to an array of @shaderCount@ valid
---     'IndirectExecutionSetShaderLayoutInfoEXT' structures
---
--- -   #VUID-VkIndirectExecutionSetShaderInfoEXT-pPushConstantRanges-parameter#
---     If @pushConstantRangeCount@ is not @0@, @pPushConstantRanges@ /must/
---     be a valid pointer to an array of @pushConstantRangeCount@ valid
---     'Vulkan.Core10.PipelineLayout.PushConstantRange' structures
---
--- -   #VUID-VkIndirectExecutionSetShaderInfoEXT-shaderCount-arraylength#
---     @shaderCount@ /must/ be greater than @0@
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_generated_commands VK_EXT_device_generated_commands>,
--- 'IndirectExecutionSetInfoEXT',
--- 'IndirectExecutionSetShaderLayoutInfoEXT',
--- 'Vulkan.Core10.PipelineLayout.PushConstantRange',
--- 'Vulkan.Extensions.Handles.ShaderEXT',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data IndirectExecutionSetShaderInfoEXT = IndirectExecutionSetShaderInfoEXT
-  { -- | @pInitialShaders@ is a pointer to an array containing a
-    -- 'Vulkan.Extensions.Handles.ShaderEXT' object for each shader stage that
-    -- will be used in the set. These shaders will be automatically added to
-    -- the set beginning at index @0@.
-    initialShaders :: Vector ShaderEXT
-  , -- | @pSetLayoutInfos@ is a pointer to an array containing a
-    -- 'IndirectExecutionSetShaderLayoutInfoEXT' used by each corresponding
-    -- @pInitialShaders@ shader stage in the set.
-    setLayoutInfos :: Vector IndirectExecutionSetShaderLayoutInfoEXT
-  , -- | @maxShaderCount@ is the maximum number of shader objects stored in the
-    -- set.
-    maxShaderCount :: Word32
-  , -- | @pPushConstantRanges@ is a pointer to the array of
-    -- 'Vulkan.Core10.PipelineLayout.PushConstantRange' ranges used by all
-    -- shaders in the set.
-    pushConstantRanges :: Vector PushConstantRange
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (IndirectExecutionSetShaderInfoEXT)
-#endif
-deriving instance Show IndirectExecutionSetShaderInfoEXT
-
-instance ToCStruct IndirectExecutionSetShaderInfoEXT where
-  withCStruct x f = allocaBytes 56 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p IndirectExecutionSetShaderInfoEXT{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_INFO_EXT)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    let pInitialShadersLength = Data.Vector.length $ (initialShaders)
-    let pSetLayoutInfosLength = Data.Vector.length $ (setLayoutInfos)
-    lift $ unless (fromIntegral pSetLayoutInfosLength == pInitialShadersLength || pSetLayoutInfosLength == 0) $
-      throwIO $ IOError Nothing InvalidArgument "" "pSetLayoutInfos and pInitialShaders must have the same length" Nothing Nothing
-    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral pInitialShadersLength :: Word32))
-    pPInitialShaders' <- ContT $ allocaBytes @ShaderEXT ((Data.Vector.length (initialShaders)) * 8)
-    lift $ Data.Vector.imapM_ (\i e -> poke (pPInitialShaders' `plusPtr` (8 * (i)) :: Ptr ShaderEXT) (e)) (initialShaders)
-    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr ShaderEXT))) (pPInitialShaders')
-    pSetLayoutInfos'' <- if Data.Vector.null (setLayoutInfos)
-      then pure nullPtr
-      else do
-        pPSetLayoutInfos <- ContT $ allocaBytes @IndirectExecutionSetShaderLayoutInfoEXT (((Data.Vector.length (setLayoutInfos))) * 32)
-        Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPSetLayoutInfos `plusPtr` (32 * (i)) :: Ptr IndirectExecutionSetShaderLayoutInfoEXT) (e) . ($ ())) ((setLayoutInfos))
-        pure $ pPSetLayoutInfos
-    lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr IndirectExecutionSetShaderLayoutInfoEXT))) pSetLayoutInfos''
-    lift $ poke ((p `plusPtr` 40 :: Ptr Word32)) (maxShaderCount)
-    lift $ poke ((p `plusPtr` 44 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (pushConstantRanges)) :: Word32))
-    pPPushConstantRanges' <- ContT $ allocaBytes @PushConstantRange ((Data.Vector.length (pushConstantRanges)) * 12)
-    lift $ Data.Vector.imapM_ (\i e -> poke (pPPushConstantRanges' `plusPtr` (12 * (i)) :: Ptr PushConstantRange) (e)) (pushConstantRanges)
-    lift $ poke ((p `plusPtr` 48 :: Ptr (Ptr PushConstantRange))) (pPPushConstantRanges')
-    lift $ f
-  cStructSize = 56
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_INFO_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 40 :: Ptr Word32)) (zero)
-    f
-
-instance FromCStruct IndirectExecutionSetShaderInfoEXT where
-  peekCStruct p = do
-    shaderCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
-    pInitialShaders <- peek @(Ptr ShaderEXT) ((p `plusPtr` 24 :: Ptr (Ptr ShaderEXT)))
-    pInitialShaders' <- generateM (fromIntegral shaderCount) (\i -> peek @ShaderEXT ((pInitialShaders `advancePtrBytes` (8 * (i)) :: Ptr ShaderEXT)))
-    pSetLayoutInfos <- peek @(Ptr IndirectExecutionSetShaderLayoutInfoEXT) ((p `plusPtr` 32 :: Ptr (Ptr IndirectExecutionSetShaderLayoutInfoEXT)))
-    let pSetLayoutInfosLength = if pSetLayoutInfos == nullPtr then 0 else (fromIntegral shaderCount)
-    pSetLayoutInfos' <- generateM pSetLayoutInfosLength (\i -> peekCStruct @IndirectExecutionSetShaderLayoutInfoEXT ((pSetLayoutInfos `advancePtrBytes` (32 * (i)) :: Ptr IndirectExecutionSetShaderLayoutInfoEXT)))
-    maxShaderCount <- peek @Word32 ((p `plusPtr` 40 :: Ptr Word32))
-    pushConstantRangeCount <- peek @Word32 ((p `plusPtr` 44 :: Ptr Word32))
-    pPushConstantRanges <- peek @(Ptr PushConstantRange) ((p `plusPtr` 48 :: Ptr (Ptr PushConstantRange)))
-    pPushConstantRanges' <- generateM (fromIntegral pushConstantRangeCount) (\i -> peekCStruct @PushConstantRange ((pPushConstantRanges `advancePtrBytes` (12 * (i)) :: Ptr PushConstantRange)))
-    pure $ IndirectExecutionSetShaderInfoEXT
-             pInitialShaders'
-             pSetLayoutInfos'
-             maxShaderCount
-             pPushConstantRanges'
-
-instance Zero IndirectExecutionSetShaderInfoEXT where
-  zero = IndirectExecutionSetShaderInfoEXT
-           mempty
-           mempty
-           zero
-           mempty
-
-
--- | VkIndirectExecutionSetCreateInfoEXT - Structure specifying parameters of
--- a newly created indirect execution set
---
--- == Valid Usage
---
--- -   #VUID-VkIndirectExecutionSetCreateInfoEXT-maxIndirectShaderObjectCount-11014#
---     If
---     'PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT'::@maxIndirectShaderObjectCount@
---     is zero or the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-shaderObject shaderObject>
---     feature is not enabled @type@ /must/ not be
---     'INDIRECT_EXECUTION_SET_INFO_TYPE_SHADER_OBJECTS_EXT'
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkIndirectExecutionSetCreateInfoEXT-sType-sType# @sType@
---     /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_CREATE_INFO_EXT'
---
--- -   #VUID-VkIndirectExecutionSetCreateInfoEXT-type-parameter# @type@
---     /must/ be a valid 'IndirectExecutionSetInfoTypeEXT' value
---
--- -   #VUID-VkIndirectExecutionSetCreateInfoEXT-pPipelineInfo-parameter#
---     If @type@ is 'INDIRECT_EXECUTION_SET_INFO_TYPE_PIPELINES_EXT', the
---     @pPipelineInfo@ member of @info@ /must/ be a valid pointer to a
---     valid 'IndirectExecutionSetPipelineInfoEXT' structure
---
--- -   #VUID-VkIndirectExecutionSetCreateInfoEXT-pShaderInfo-parameter# If
---     @type@ is 'INDIRECT_EXECUTION_SET_INFO_TYPE_SHADER_OBJECTS_EXT', the
---     @pShaderInfo@ member of @info@ /must/ be a valid pointer to a valid
---     'IndirectExecutionSetShaderInfoEXT' structure
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_generated_commands VK_EXT_device_generated_commands>,
--- 'IndirectExecutionSetInfoEXT', 'IndirectExecutionSetInfoTypeEXT',
--- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'createIndirectExecutionSetEXT'
-data IndirectExecutionSetCreateInfoEXT = IndirectExecutionSetCreateInfoEXT
-  { -- | @type@ is a 'IndirectExecutionSetInfoTypeEXT' describing the type of set
-    -- being created and determining which field of the @info@ union will be
-    -- used.
-    type' :: IndirectExecutionSetInfoTypeEXT
-  , -- | @info@ is a 'IndirectExecutionSetInfoEXT' union containing layout
-    -- information for the set.
-    info :: IndirectExecutionSetInfoEXT
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (IndirectExecutionSetCreateInfoEXT)
-#endif
-deriving instance Show IndirectExecutionSetCreateInfoEXT
-
-instance ToCStruct IndirectExecutionSetCreateInfoEXT where
-  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p IndirectExecutionSetCreateInfoEXT{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_CREATE_INFO_EXT)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    lift $ poke ((p `plusPtr` 16 :: Ptr IndirectExecutionSetInfoTypeEXT)) (type')
-    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr IndirectExecutionSetInfoEXT)) (info) . ($ ())
-    lift $ f
-  cStructSize = 32
-  cStructAlignment = 8
-  pokeZeroCStruct p f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_CREATE_INFO_EXT)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    lift $ poke ((p `plusPtr` 16 :: Ptr IndirectExecutionSetInfoTypeEXT)) (zero)
-    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr IndirectExecutionSetInfoEXT)) (zero) . ($ ())
-    lift $ f
-
-instance Zero IndirectExecutionSetCreateInfoEXT where
-  zero = IndirectExecutionSetCreateInfoEXT
-           zero
-           zero
-
-
--- | VkGeneratedCommandsInfoEXT - Structure specifying parameters for the
--- generation of commands
---
--- = Description
---
--- If @sequenceCountAddress@ is not @NULL@, then @maxSequenceCount@ is the
--- maximum number of sequences that can be executed. The actual number is
--- @min(maxSequenceCount, *sequenceCountAddress)@. If
--- @sequenceCountAddress@ is @NULL@, then @maxSequenceCount@ is the exact
--- number of sequences to execute.
---
--- If the action command token for the layout is not a COUNT-type
--- multi-draw indirect token, @maxDrawCount@ is ignored.
---
--- == Valid Usage
---
--- -   #VUID-VkGeneratedCommandsInfoEXT-preprocessAddress-11063# If
---     'getGeneratedCommandsMemoryRequirementsEXT' returns a non-zero size,
---     @preprocessAddress@ /must/ not be @NULL@
---
--- -   #VUID-VkGeneratedCommandsInfoEXT-preprocessAddress-11064#
---     'Vulkan.Core10.Handles.DeviceMemory' objects bound to the underlying
---     buffer for @preprocessAddress@ /must/ have been allocated using one
---     of the memory types allowed in the @memoryTypeBits@ member of the
---     'Vulkan.Core10.MemoryManagement.MemoryRequirements' structure
---     returned by 'getGeneratedCommandsMemoryRequirementsEXT'
---
--- -   #VUID-VkGeneratedCommandsInfoEXT-indirectCommandsLayout-11065# If
---     the @indirectCommandsLayout@ uses a token of
---     'INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT', then the
---     @indirectExecutionSet@’s push constant layout /must/ contain the
---     @updateRange@ specified in 'IndirectCommandsPushConstantTokenEXT'
---
--- -   #VUID-VkGeneratedCommandsInfoEXT-indirectCommandsLayout-11066# If
---     the @indirectCommandsLayout@ uses a token of
---     'INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT', then the
---     @indirectExecutionSet@’s push constant layout /must/ contain the
---     @updateRange@ specified in 'IndirectCommandsPushConstantTokenEXT'
---
--- -   #VUID-VkGeneratedCommandsInfoEXT-maxSequenceCount-11067#
---     @maxSequenceCount@ /must/ be less or equal to
---     'PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT'::@maxIndirectSequenceCount@
---     and
---     'GeneratedCommandsMemoryRequirementsInfoEXT'::@maxSequencesCount@
---     that was used to determine the @preprocessSize@
---
--- -   #VUID-VkGeneratedCommandsInfoEXT-sequenceCountAddress-11068# If
---     @sequenceCountAddress@ is not @NULL@, the value contained in the
---     address /must/ be less or equal to
---     'PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT'::@maxIndirectSequenceCount@
---     and
---     'GeneratedCommandsMemoryRequirementsInfoEXT'::@maxSequencesCount@
---     that was used to determine the @preprocessSize@
---
--- -   #VUID-VkGeneratedCommandsInfoEXT-maxSequenceCount-10246#
---     @maxSequenceCount@ /must/ not be zero
---
--- -   #VUID-VkGeneratedCommandsInfoEXT-preprocessAddress-11069# The
---     underlying buffer for @preprocessAddress@ /must/ have the
---     'Vulkan.Extensions.VK_KHR_maintenance5.BUFFER_USAGE_2_PREPROCESS_BUFFER_BIT_EXT'
---     bit set in its usage flag
---
--- -   #VUID-VkGeneratedCommandsInfoEXT-preprocessAddress-11070# If the
---     underlying buffer for @preprocessAddress@ is non-sparse then it
---     /must/ be bound completely and contiguously to a single
---     'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-VkGeneratedCommandsInfoEXT-indirectCommandsLayout-11144# If
---     the @indirectCommandsLayout@ contains a
---     'INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT' token, then the
---     descriptor and push constant layout info provided either by
---     @pipelineLayout@ or through a
---     'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo' in @pNext@
---     of the 'IndirectCommandsLayoutCreateInfoEXT' used to create
---     @indirectCommandsLayout@ /must/ be
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-compatibility compatible>
---     with the descriptor and push constant layout info used by
---     @indirectExecutionSet@
---
--- -   #VUID-VkGeneratedCommandsInfoEXT-indirectCommandsLayout-11002# If
---     @indirectCommandsLayout@ was created with a token sequence that
---     contained the 'INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT'
---     token, the shader stages used to create the initial shader state of
---     @indirectExecutionSet@ /must/ equal the
---     'IndirectCommandsExecutionSetTokenEXT'::@shaderStages@ used to
---     create @indirectCommandsLayout@
---
--- -   #VUID-VkGeneratedCommandsInfoEXT-preprocessSize-11071#
---     @preprocessSize@ /must/ be greater than or equal to the memory
---     requirement’s size returned by
---     'getGeneratedCommandsMemoryRequirementsEXT' using the matching
---     inputs (@indirectCommandsLayout@, …​) as within this structure
---
--- -   #VUID-VkGeneratedCommandsInfoEXT-sequenceCountAddress-11072# The
---     underlying buffer for @sequenceCountAddress@ /must/ have the
---     'Vulkan.Extensions.VK_KHR_maintenance5.BUFFER_USAGE_2_INDIRECT_BUFFER_BIT_KHR'
---     bit set in its usage flag
---
--- -   #VUID-VkGeneratedCommandsInfoEXT-sequenceCountAddress-11073# If
---     @sequenceCountAddress@ is not @NULL@, @sequenceCountAddress@ /must/
---     be aligned to @4@
---
--- -   #VUID-VkGeneratedCommandsInfoEXT-indirectAddress-11074#
---     @indirectAddress@ /must/ be aligned to @4@
---
--- -   #VUID-VkGeneratedCommandsInfoEXT-sequenceCountAddress-11075# If the
---     underlying buffer for @sequenceCountAddress@ is non-sparse then it
---     /must/ be bound completely and contiguously to a single
---     'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-VkGeneratedCommandsInfoEXT-indirectAddress-11076#
---     @indirectAddress@ /must/ not be @NULL@
---
--- -   #VUID-VkGeneratedCommandsInfoEXT-indirectAddressSize-11077#
---     @indirectAddressSize@ /must/ be greater than zero
---
--- -   #VUID-VkGeneratedCommandsInfoEXT-maxDrawCount-11078# When not
---     ignored, @maxDrawCount@ × @maxSequenceCount@ /must/ be less than
---     2^24
---
--- -   #VUID-VkGeneratedCommandsInfoEXT-indirectCommandsLayout-11079# If
---     @indirectCommandsLayout@ was created using a
---     'INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_EXT' token and shader
---     objects are not bound then the bound graphics pipeline /must/ have
---     been created with
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE'
---     in @pDynamicStates@
---
--- -   #VUID-VkGeneratedCommandsInfoEXT-indirectCommandsLayout-11083# If
---     the token sequence of the passed @indirectCommandsLayout@ contains a
---     'INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT' token, the
---     @indirectExecutionSet@ /must/ not be
---     'Vulkan.Core10.APIConstants.NULL_HANDLE'
---
--- -   #VUID-VkGeneratedCommandsInfoEXT-indirectCommandsLayout-10241# If
---     the token sequence of the passed @indirectCommandsLayout@ does not
---     contains a 'INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT' token,
---     the @indirectExecutionSet@ /must/ be
---     'Vulkan.Core10.APIConstants.NULL_HANDLE'
---
--- -   #VUID-VkGeneratedCommandsInfoEXT-indirectExecutionSet-11080# If
---     @indirectExecutionSet@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE',
---     a 'GeneratedCommandsPipelineInfoEXT' or
---     'GeneratedCommandsShaderInfoEXT' /must/ be included in the @pNext@
---     chain
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkGeneratedCommandsInfoEXT-sType-sType# @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_EXT'
---
--- -   #VUID-VkGeneratedCommandsInfoEXT-shaderStages-parameter#
---     @shaderStages@ /must/ be a valid combination of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits' values
---
--- -   #VUID-VkGeneratedCommandsInfoEXT-shaderStages-requiredbitmask#
---     @shaderStages@ /must/ not be @0@
---
--- -   #VUID-VkGeneratedCommandsInfoEXT-indirectExecutionSet-parameter# If
---     @indirectExecutionSet@ is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', @indirectExecutionSet@
---     /must/ be a valid
---     'Vulkan.Extensions.Handles.IndirectExecutionSetEXT' handle
---
--- -   #VUID-VkGeneratedCommandsInfoEXT-indirectCommandsLayout-parameter#
---     @indirectCommandsLayout@ /must/ be a valid
---     'Vulkan.Extensions.Handles.IndirectCommandsLayoutEXT' handle
---
--- -   #VUID-VkGeneratedCommandsInfoEXT-commonparent# Both of
---     @indirectCommandsLayout@, and @indirectExecutionSet@ that are valid
---     handles of non-ignored parameters /must/ have been created,
---     allocated, or retrieved from the same 'Vulkan.Core10.Handles.Device'
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_generated_commands VK_EXT_device_generated_commands>,
--- 'Vulkan.Core10.FundamentalTypes.DeviceAddress',
--- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
--- 'Vulkan.Extensions.Handles.IndirectCommandsLayoutEXT',
--- 'Vulkan.Extensions.Handles.IndirectExecutionSetEXT',
--- 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlags',
--- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'cmdExecuteGeneratedCommandsEXT', 'cmdPreprocessGeneratedCommandsEXT'
-data GeneratedCommandsInfoEXT (es :: [Type]) = GeneratedCommandsInfoEXT
-  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
-    next :: Chain es
-  , -- | @shaderStages@ is the mask of shader stages used by the commands.
-    shaderStages :: ShaderStageFlags
-  , -- | @indirectExecutionSet@ is the indirect execution set to be used for
-    -- binding shaders.
-    indirectExecutionSet :: IndirectExecutionSetEXT
-  , -- | @indirectCommandsLayout@ is the
-    -- 'Vulkan.Extensions.Handles.IndirectCommandsLayoutEXT' that specifies the
-    -- command sequence data.
-    indirectCommandsLayout :: IndirectCommandsLayoutEXT
-  , -- | @indirectAddress@ is an address that holds the indirect buffer data.
-    indirectAddress :: DeviceAddress
-  , -- | @indirectAddressSize@ is the size in bytes of indirect buffer data
-    -- starting at @indirectAddress@.
-    indirectAddressSize :: DeviceSize
-  , -- | @preprocessAddress@ specifies a physical address of the
-    -- 'Vulkan.Core10.Handles.Buffer' used for preprocessing the input data for
-    -- execution. If this structure is used with
-    -- 'cmdExecuteGeneratedCommandsEXT' with its @isPreprocessed@ set to
-    -- 'Vulkan.Core10.FundamentalTypes.TRUE', then the preprocessing step is
-    -- skipped but data in this address /may/ still be modified. The contents
-    -- and the layout of this address are opaque to applications and /must/ not
-    -- be modified outside functions related to device-generated commands or
-    -- copied to another buffer for reuse.
-    preprocessAddress :: DeviceAddress
-  , -- | @preprocessSize@ is the maximum byte size within @preprocessAddress@
-    -- that is available for preprocessing.
-    preprocessSize :: DeviceSize
-  , -- | @maxSequenceCount@ is used to determine the number of sequences to
-    -- execute.
-    maxSequenceCount :: Word32
-  , -- | @sequenceCountAddress@ specifies an optional physical address of a
-    -- single @uint32_t@ value containing the requested number of sequences to
-    -- execute.
-    sequenceCountAddress :: DeviceAddress
-  , -- | @maxDrawCount@ is the maximum number of indirect draws that can be
-    -- executed by any COUNT-type multi-draw indirect tokens. The draw count in
-    -- the indirect buffer is clamped to this value for these token types.
-    maxDrawCount :: Word32
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (GeneratedCommandsInfoEXT (es :: [Type]))
-#endif
-deriving instance Show (Chain es) => Show (GeneratedCommandsInfoEXT es)
-
-instance Extensible GeneratedCommandsInfoEXT where
-  extensibleTypeName = "GeneratedCommandsInfoEXT"
-  setNext GeneratedCommandsInfoEXT{..} next' = GeneratedCommandsInfoEXT{next = next', ..}
-  getNext GeneratedCommandsInfoEXT{..} = next
-  extends :: forall e b proxy. Typeable e => proxy e -> (Extends GeneratedCommandsInfoEXT e => b) -> Maybe b
-  extends _ f
-    | Just Refl <- eqT @e @GeneratedCommandsShaderInfoEXT = Just f
-    | Just Refl <- eqT @e @GeneratedCommandsPipelineInfoEXT = Just f
-    | otherwise = Nothing
-
-instance ( Extendss GeneratedCommandsInfoEXT es
-         , PokeChain es ) => ToCStruct (GeneratedCommandsInfoEXT es) where
-  withCStruct x f = allocaBytes 96 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p GeneratedCommandsInfoEXT{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_EXT)
-    pNext'' <- fmap castPtr . ContT $ withChain (next)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
-    lift $ poke ((p `plusPtr` 16 :: Ptr ShaderStageFlags)) (shaderStages)
-    lift $ poke ((p `plusPtr` 24 :: Ptr IndirectExecutionSetEXT)) (indirectExecutionSet)
-    lift $ poke ((p `plusPtr` 32 :: Ptr IndirectCommandsLayoutEXT)) (indirectCommandsLayout)
-    lift $ poke ((p `plusPtr` 40 :: Ptr DeviceAddress)) (indirectAddress)
-    lift $ poke ((p `plusPtr` 48 :: Ptr DeviceSize)) (indirectAddressSize)
-    lift $ poke ((p `plusPtr` 56 :: Ptr DeviceAddress)) (preprocessAddress)
-    lift $ poke ((p `plusPtr` 64 :: Ptr DeviceSize)) (preprocessSize)
-    lift $ poke ((p `plusPtr` 72 :: Ptr Word32)) (maxSequenceCount)
-    lift $ poke ((p `plusPtr` 80 :: Ptr DeviceAddress)) (sequenceCountAddress)
-    lift $ poke ((p `plusPtr` 88 :: Ptr Word32)) (maxDrawCount)
-    lift $ f
-  cStructSize = 96
-  cStructAlignment = 8
-  pokeZeroCStruct p f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_EXT)
-    pNext' <- fmap castPtr . ContT $ withZeroChain @es
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
-    lift $ poke ((p `plusPtr` 16 :: Ptr ShaderStageFlags)) (zero)
-    lift $ poke ((p `plusPtr` 32 :: Ptr IndirectCommandsLayoutEXT)) (zero)
-    lift $ poke ((p `plusPtr` 40 :: Ptr DeviceAddress)) (zero)
-    lift $ poke ((p `plusPtr` 48 :: Ptr DeviceSize)) (zero)
-    lift $ poke ((p `plusPtr` 64 :: Ptr DeviceSize)) (zero)
-    lift $ poke ((p `plusPtr` 72 :: Ptr Word32)) (zero)
-    lift $ poke ((p `plusPtr` 88 :: Ptr Word32)) (zero)
-    lift $ f
-
-instance ( Extendss GeneratedCommandsInfoEXT es
-         , PeekChain es ) => FromCStruct (GeneratedCommandsInfoEXT es) where
-  peekCStruct p = do
-    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
-    next <- peekChain (castPtr pNext)
-    shaderStages <- peek @ShaderStageFlags ((p `plusPtr` 16 :: Ptr ShaderStageFlags))
-    indirectExecutionSet <- peek @IndirectExecutionSetEXT ((p `plusPtr` 24 :: Ptr IndirectExecutionSetEXT))
-    indirectCommandsLayout <- peek @IndirectCommandsLayoutEXT ((p `plusPtr` 32 :: Ptr IndirectCommandsLayoutEXT))
-    indirectAddress <- peek @DeviceAddress ((p `plusPtr` 40 :: Ptr DeviceAddress))
-    indirectAddressSize <- peek @DeviceSize ((p `plusPtr` 48 :: Ptr DeviceSize))
-    preprocessAddress <- peek @DeviceAddress ((p `plusPtr` 56 :: Ptr DeviceAddress))
-    preprocessSize <- peek @DeviceSize ((p `plusPtr` 64 :: Ptr DeviceSize))
-    maxSequenceCount <- peek @Word32 ((p `plusPtr` 72 :: Ptr Word32))
-    sequenceCountAddress <- peek @DeviceAddress ((p `plusPtr` 80 :: Ptr DeviceAddress))
-    maxDrawCount <- peek @Word32 ((p `plusPtr` 88 :: Ptr Word32))
-    pure $ GeneratedCommandsInfoEXT
-             next
-             shaderStages
-             indirectExecutionSet
-             indirectCommandsLayout
-             indirectAddress
-             indirectAddressSize
-             preprocessAddress
-             preprocessSize
-             maxSequenceCount
-             sequenceCountAddress
-             maxDrawCount
-
-instance es ~ '[] => Zero (GeneratedCommandsInfoEXT es) where
-  zero = GeneratedCommandsInfoEXT
-           ()
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-
-
--- | VkWriteIndirectExecutionSetPipelineEXT - Struct specifying pipeline
--- update information for an indirect execution set
---
--- == Valid Usage
---
--- -   #VUID-VkWriteIndirectExecutionSetPipelineEXT-index-11026# @index@
---     /must/ be less than the value of
---     'IndirectExecutionSetPipelineInfoEXT'::@maxPipelineCount@ used to
---     create the set
---
--- -   #VUID-VkWriteIndirectExecutionSetPipelineEXT-pipeline-11027#
---     @pipeline@ /must/ have been created with
---     'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXT'
---
--- -   #VUID-VkWriteIndirectExecutionSetPipelineEXT-index-11029# @index@
---     /must/ not be referenced by submitted command buffers
---
--- -   #VUID-VkWriteIndirectExecutionSetPipelineEXT-pipeline-11030# The
---     shader stages contained in @pipeline@ /must/ be supported by
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-supportedIndirectCommandsShaderStagesPipelineBinding ::supportedIndirectCommandsShaderStagesPipelineBinding>
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkWriteIndirectExecutionSetPipelineEXT-sType-sType# @sType@
---     /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXT'
---
--- -   #VUID-VkWriteIndirectExecutionSetPipelineEXT-pipeline-parameter#
---     @pipeline@ /must/ be a valid 'Vulkan.Core10.Handles.Pipeline' handle
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_generated_commands VK_EXT_device_generated_commands>,
--- 'Vulkan.Core10.Handles.Pipeline',
--- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'updateIndirectExecutionSetPipelineEXT'
-data WriteIndirectExecutionSetPipelineEXT = WriteIndirectExecutionSetPipelineEXT
-  { -- | @index@ is the element of the set to update
-    index :: Word32
-  , -- | @pipeline@ is the pipeline to store in the indirect execution set
-    pipeline :: Pipeline
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (WriteIndirectExecutionSetPipelineEXT)
-#endif
-deriving instance Show WriteIndirectExecutionSetPipelineEXT
-
-instance ToCStruct WriteIndirectExecutionSetPipelineEXT where
-  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p WriteIndirectExecutionSetPipelineEXT{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Word32)) (index)
-    poke ((p `plusPtr` 24 :: Ptr Pipeline)) (pipeline)
-    f
-  cStructSize = 32
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 24 :: Ptr Pipeline)) (zero)
-    f
-
-instance FromCStruct WriteIndirectExecutionSetPipelineEXT where
-  peekCStruct p = do
-    index <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
-    pipeline <- peek @Pipeline ((p `plusPtr` 24 :: Ptr Pipeline))
-    pure $ WriteIndirectExecutionSetPipelineEXT
-             index pipeline
-
-instance Storable WriteIndirectExecutionSetPipelineEXT where
-  sizeOf ~_ = 32
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero WriteIndirectExecutionSetPipelineEXT where
-  zero = WriteIndirectExecutionSetPipelineEXT
-           zero
-           zero
-
-
--- | VkWriteIndirectExecutionSetShaderEXT - Struct specifying shader object
--- update information for an indirect execution set
---
--- = Description
---
--- Shaders need not be stored in the Indirect Execution Set according to
--- their stage. The only restriction for shader indices within a set is
--- that the value of the index /must/ be less than the maximum number of
--- shaders in the set.
---
--- == Valid Usage
---
--- -   #VUID-VkWriteIndirectExecutionSetShaderEXT-index-11031# @index@
---     /must/ be less than
---     'IndirectExecutionSetShaderInfoEXT'::@maxShaderCount@
---
--- -   #VUID-VkWriteIndirectExecutionSetShaderEXT-shader-11032# @shader@
---     /must/ have been created with
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDIRECT_BINDABLE_BIT_EXT'
---
--- -   #VUID-VkWriteIndirectExecutionSetShaderEXT-pInitialShaders-11033# A
---     shader created with the same
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits' /must/
---     have been passed in the
---     'IndirectExecutionSetShaderInfoEXT'::@pInitialShaders@ array
---
--- -   #VUID-VkWriteIndirectExecutionSetShaderEXT-index-11034# @index@
---     /must/ not be in use by submitted command buffers
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkWriteIndirectExecutionSetShaderEXT-sType-sType# @sType@
---     /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_SHADER_EXT'
---
--- -   #VUID-VkWriteIndirectExecutionSetShaderEXT-shader-parameter#
---     @shader@ /must/ be a valid 'Vulkan.Extensions.Handles.ShaderEXT'
---     handle
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_generated_commands VK_EXT_device_generated_commands>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_shader_object VK_EXT_shader_object>,
--- 'Vulkan.Extensions.Handles.ShaderEXT',
--- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'updateIndirectExecutionSetShaderEXT'
-data WriteIndirectExecutionSetShaderEXT = WriteIndirectExecutionSetShaderEXT
-  { -- | @index@ is the element of the set to update
-    index :: Word32
-  , -- | @shader@ is the shader to store in the indirect execution set
-    shader :: ShaderEXT
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (WriteIndirectExecutionSetShaderEXT)
-#endif
-deriving instance Show WriteIndirectExecutionSetShaderEXT
-
-instance ToCStruct WriteIndirectExecutionSetShaderEXT where
-  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p WriteIndirectExecutionSetShaderEXT{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_SHADER_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Word32)) (index)
-    poke ((p `plusPtr` 24 :: Ptr ShaderEXT)) (shader)
-    f
-  cStructSize = 32
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_SHADER_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 24 :: Ptr ShaderEXT)) (zero)
-    f
-
-instance FromCStruct WriteIndirectExecutionSetShaderEXT where
-  peekCStruct p = do
-    index <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
-    shader <- peek @ShaderEXT ((p `plusPtr` 24 :: Ptr ShaderEXT))
-    pure $ WriteIndirectExecutionSetShaderEXT
-             index shader
-
-instance Storable WriteIndirectExecutionSetShaderEXT where
-  sizeOf ~_ = 32
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero WriteIndirectExecutionSetShaderEXT where
-  zero = WriteIndirectExecutionSetShaderEXT
-           zero
-           zero
-
-
--- | VkIndirectCommandsLayoutCreateInfoEXT - Structure specifying the
--- parameters of a newly created indirect commands layout object
---
--- = Description
---
--- The following code illustrates some of the flags:
---
--- > void cmdProcessAllSequences(cmd, indirectExecutionSet, indirectCommandsLayout, indirectAddress, sequencesCount)
--- > {
--- >   for (s = 0; s < sequencesCount; s++)
--- >   {
--- >     sUsed = s;
--- >
--- >     if (indirectCommandsLayout.flags & VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_EXT) {
--- >       sUsed = incoherent_implementation_dependent_permutation[ sUsed ];
--- >     }
--- >
--- >     cmdProcessSequence( cmd, indirectExecutionSet, indirectCommandsLayout, indirectAddress, sUsed );
--- >   }
--- > }
---
--- When tokens are consumed, an offset is computed based on token offset
--- and stream stride. The resulting offset is required to be aligned. The
--- alignment for a specific token is equal to the scalar alignment of the
--- data type as defined in
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-alignment-requirements Alignment Requirements>,
--- or @4@, whichever is lower.
---
--- == Valid Usage
---
--- -   #VUID-VkIndirectCommandsLayoutCreateInfoEXT-indirectStride-11090#
---     @indirectStride@ /must/ be less than or equal to
---     'PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT'::@maxIndirectCommandsIndirectStride@
---
--- -   #VUID-VkIndirectCommandsLayoutCreateInfoEXT-shaderStages-11091#
---     @shaderStages@ /must/ only contain stages supported by
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-supportedIndirectCommandsShaderStages ::supportedIndirectCommandsShaderStages>
---
--- -   #VUID-VkIndirectCommandsLayoutCreateInfoEXT-tokenCount-11092#
---     @tokenCount@ /must/ less than or equal to
---     'PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT'::@maxIndirectCommandsTokenCount@
---
--- -   #VUID-VkIndirectCommandsLayoutCreateInfoEXT-pTokens-11093# The
---     number of tokens in the @pTokens@ array with @type@ equal to
---     'INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT' /must/ be less than
---     or equal to @1@
---
--- -   #VUID-VkIndirectCommandsLayoutCreateInfoEXT-pTokens-11145# The
---     number of tokens in the @pTokens@ array with @type@ equal to
---     'INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT' /must/ be less
---     than or equal to @1@
---
--- -   #VUID-VkIndirectCommandsLayoutCreateInfoEXT-pTokens-11094# The
---     number of tokens in the @pTokens@ array with @type@ equal to
---     'INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_EXT' /must/ be less than
---     or equal to @1@
---
--- -   #VUID-VkIndirectCommandsLayoutCreateInfoEXT-pTokens-11095# If the
---     action command token in the @pTokens@ array is not an indexed draw
---     token, then @pTokens@ /must/ not contain a member with @type@ set to
---     'INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_EXT'
---
--- -   #VUID-VkIndirectCommandsLayoutCreateInfoEXT-pTokens-11096# If the
---     action command token in the @pTokens@ array is not a non-mesh draw
---     token, then @pTokens@ /must/ not contain a member with @type@ set to
---     'INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_EXT'
---
--- -   #VUID-VkIndirectCommandsLayoutCreateInfoEXT-pTokens-11097# If the
---     @pTokens@ array contains multiple tokens with @type@ equal to
---     'INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_EXT', then there /must/
---     be no duplicate
---     'IndirectCommandsVertexBufferTokenEXT'::@vertexBindingUnit@ values
---
--- -   #VUID-VkIndirectCommandsLayoutCreateInfoEXT-pTokens-11099# For all
---     'INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT' and
---     'INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT' type tokens in
---     @pTokens@, there /must/ be no overlapping ranges between any
---     specified push constant ranges
---
--- -   #VUID-VkIndirectCommandsLayoutCreateInfoEXT-pTokens-11100# The
---     action command token /must/ be the last token in the @pTokens@ array
---
--- -   #VUID-VkIndirectCommandsLayoutCreateInfoEXT-pTokens-11139# If the
---     @pTokens@ array contains a
---     'INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT' token, then this
---     token /must/ be the first token in the array
---
--- -   #VUID-VkIndirectCommandsLayoutCreateInfoEXT-pTokens-11101# For any
---     element of @pTokens@, if @type@ is
---     'INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT' or
---     'INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT' and the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-dynamicGeneratedPipelineLayout dynamicGeneratedPipelineLayout>
---     feature is not enabled, then the @pipelineLayout@ /must/ not be
---     'Vulkan.Core10.APIConstants.NULL_HANDLE'
---
--- -   #VUID-VkIndirectCommandsLayoutCreateInfoEXT-pTokens-11102# For any
---     element of @pTokens@, if @type@ is either
---     'INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT' or
---     'INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT' and
---     @pipelineLayout@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', then
---     the @pNext@ chain /must/ include a
---     'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo' struct
---
--- -   #VUID-VkIndirectCommandsLayoutCreateInfoEXT-pTokens-11103# For any
---     element of @pTokens@, the @offset@ /must/ be greater than or equal
---     to the @offset@ member of the previous tokens
---
--- -   #VUID-VkIndirectCommandsLayoutCreateInfoEXT-pTokens-11104# For any
---     element of @pTokens@, if @type@ is
---     'INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_EXT',
---     'INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_EXT',
---     'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_EXT',
---     'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_EXT',
---     'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV_EXT',
---     'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_NV_EXT',
---     'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_COUNT_EXT',
---     'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_EXT', or
---     'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_EXT', then @shaderStages@ /must/
---     contain graphics stages
---
--- -   #VUID-VkIndirectCommandsLayoutCreateInfoEXT-pTokens-11105# For any
---     element of @pTokens@, if @type@ is
---     'INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_EXT', then @shaderStages@
---     /must/ be
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT'
---
--- -   #VUID-VkIndirectCommandsLayoutCreateInfoEXT-pTokens-11106# For any
---     element of @pTokens@, if @type@ is
---     'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_EXT' or
---     'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_EXT', then
---     @shaderStages@ /must/ contain
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---
--- -   #VUID-VkIndirectCommandsLayoutCreateInfoEXT-pTokens-11107# For any
---     element of @pTokens@, if @type@ is
---     'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV_EXT' or
---     'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_NV_EXT', then
---     the @shaderStages@ /must/ contain
---     'Vulkan.Extensions.VK_NV_mesh_shader.SHADER_STAGE_MESH_BIT_NV'
---
--- -   #VUID-VkIndirectCommandsLayoutCreateInfoEXT-pTokens-11108# For any
---     element of @pTokens@, if @type@ is
---     'INDIRECT_COMMANDS_TOKEN_TYPE_TRACE_RAYS2_EXT', then @shaderStages@
---     /must/ contain ray tracing stages
---
--- -   #VUID-VkIndirectCommandsLayoutCreateInfoEXT-shaderStages-11109# If
---     @shaderStages@ contains graphics stages then the state tokens in
---     @pTokens@ /must/ not include
---     'INDIRECT_COMMANDS_TOKEN_TYPE_TRACE_RAYS2_EXT',
---     'INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_EXT'
---
--- -   #VUID-VkIndirectCommandsLayoutCreateInfoEXT-shaderStages-11110# If
---     @shaderStages@ is
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT'
---     then the state tokens in @pTokens@ /must/ only include
---     'INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_EXT',
---     'INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT',
---     'INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT', or
---     'INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT'
---
--- -   #VUID-VkIndirectCommandsLayoutCreateInfoEXT-shaderStages-11111# If
---     @shaderStages@ contains ray tracing stages then the state tokens in
---     @pTokens@ /must/ only include
---     'INDIRECT_COMMANDS_TOKEN_TYPE_TRACE_RAYS2_EXT',
---     'INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT',
---     'INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT', or
---     'INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT'
---
--- -   #VUID-VkIndirectCommandsLayoutCreateInfoEXT-shaderStages-11112# The
---     @shaderStages@ /must/ only contain stages from one of the following:
---
---     -   graphics stages
---
---     -   'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT'
---
---     -   mesh stages and
---         'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---
---     -   ray tracing stages
---
--- -   #VUID-VkIndirectCommandsLayoutCreateInfoEXT-shaderStages-11113# If
---     @shaderStages@ contains
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT',
---     then @shaderStages@ /must/ also contain
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkIndirectCommandsLayoutCreateInfoEXT-sType-sType# @sType@
---     /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXT'
---
--- -   #VUID-VkIndirectCommandsLayoutCreateInfoEXT-pNext-pNext# @pNext@
---     /must/ be @NULL@ or a pointer to a valid instance of
---     'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo'
---
--- -   #VUID-VkIndirectCommandsLayoutCreateInfoEXT-sType-unique# The
---     @sType@ value of each struct in the @pNext@ chain /must/ be unique
---
--- -   #VUID-VkIndirectCommandsLayoutCreateInfoEXT-flags-parameter# @flags@
---     /must/ be a valid combination of
---     'IndirectCommandsLayoutUsageFlagBitsEXT' values
---
--- -   #VUID-VkIndirectCommandsLayoutCreateInfoEXT-shaderStages-parameter#
---     @shaderStages@ /must/ be a valid combination of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits' values
---
--- -   #VUID-VkIndirectCommandsLayoutCreateInfoEXT-shaderStages-requiredbitmask#
---     @shaderStages@ /must/ not be @0@
---
--- -   #VUID-VkIndirectCommandsLayoutCreateInfoEXT-pipelineLayout-parameter#
---     If @pipelineLayout@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
---     @pipelineLayout@ /must/ be a valid
---     'Vulkan.Core10.Handles.PipelineLayout' handle
---
--- -   #VUID-VkIndirectCommandsLayoutCreateInfoEXT-pTokens-parameter#
---     @pTokens@ /must/ be a valid pointer to an array of @tokenCount@
---     valid 'IndirectCommandsLayoutTokenEXT' structures
---
--- -   #VUID-VkIndirectCommandsLayoutCreateInfoEXT-tokenCount-arraylength#
---     @tokenCount@ /must/ be greater than @0@
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_generated_commands VK_EXT_device_generated_commands>,
--- 'IndirectCommandsLayoutTokenEXT', 'IndirectCommandsLayoutUsageFlagsEXT',
--- 'Vulkan.Core10.Handles.PipelineLayout',
--- 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlags',
--- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'createIndirectCommandsLayoutEXT'
-data IndirectCommandsLayoutCreateInfoEXT (es :: [Type]) = IndirectCommandsLayoutCreateInfoEXT
-  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
-    next :: Chain es
-  , -- | @flags@ is a bitmask of 'IndirectCommandsLayoutUsageFlagBitsEXT'
-    -- specifying usage rules for this layout.
-    flags :: IndirectCommandsLayoutUsageFlagsEXT
-  , -- | @shaderStages@ is the
-    -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlags' that this
-    -- layout supports.
-    shaderStages :: ShaderStageFlags
-  , -- | @indirectStride@ is the distance in bytes between sequences in the
-    -- indirect buffer
-    indirectStride :: Word32
-  , -- | @pipelineLayout@ is the optional 'Vulkan.Core10.Handles.PipelineLayout'
-    -- that tokens in this layout use. If the
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-dynamicGeneratedPipelineLayout dynamicGeneratedPipelineLayout>
-    -- feature is enabled, @pipelineLayout@ /can/ be
-    -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' and the layout /must/ be
-    -- specified by chaining the
-    -- 'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo' structure off
-    -- the @pNext@
-    pipelineLayout :: PipelineLayout
-  , -- | @pTokens@ is a pointer to an array of 'IndirectCommandsLayoutTokenEXT'
-    -- describing each command token in detail.
-    tokens :: Vector IndirectCommandsLayoutTokenEXT
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (IndirectCommandsLayoutCreateInfoEXT (es :: [Type]))
-#endif
-deriving instance Show (Chain es) => Show (IndirectCommandsLayoutCreateInfoEXT es)
-
-instance Extensible IndirectCommandsLayoutCreateInfoEXT where
-  extensibleTypeName = "IndirectCommandsLayoutCreateInfoEXT"
-  setNext IndirectCommandsLayoutCreateInfoEXT{..} next' = IndirectCommandsLayoutCreateInfoEXT{next = next', ..}
-  getNext IndirectCommandsLayoutCreateInfoEXT{..} = next
-  extends :: forall e b proxy. Typeable e => proxy e -> (Extends IndirectCommandsLayoutCreateInfoEXT e => b) -> Maybe b
-  extends _ f
-    | Just Refl <- eqT @e @PipelineLayoutCreateInfo = Just f
-    | otherwise = Nothing
-
-instance ( Extendss IndirectCommandsLayoutCreateInfoEXT es
-         , PokeChain es ) => ToCStruct (IndirectCommandsLayoutCreateInfoEXT es) where
-  withCStruct x f = allocaBytes 56 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p IndirectCommandsLayoutCreateInfoEXT{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXT)
-    pNext'' <- fmap castPtr . ContT $ withChain (next)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
-    lift $ poke ((p `plusPtr` 16 :: Ptr IndirectCommandsLayoutUsageFlagsEXT)) (flags)
-    lift $ poke ((p `plusPtr` 20 :: Ptr ShaderStageFlags)) (shaderStages)
-    lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) (indirectStride)
-    lift $ poke ((p `plusPtr` 32 :: Ptr PipelineLayout)) (pipelineLayout)
-    lift $ poke ((p `plusPtr` 40 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (tokens)) :: Word32))
-    pPTokens' <- ContT $ allocaBytes @IndirectCommandsLayoutTokenEXT ((Data.Vector.length (tokens)) * 40)
-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPTokens' `plusPtr` (40 * (i)) :: Ptr IndirectCommandsLayoutTokenEXT) (e) . ($ ())) (tokens)
-    lift $ poke ((p `plusPtr` 48 :: Ptr (Ptr IndirectCommandsLayoutTokenEXT))) (pPTokens')
-    lift $ f
-  cStructSize = 56
-  cStructAlignment = 8
-  pokeZeroCStruct p f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXT)
-    pNext' <- fmap castPtr . ContT $ withZeroChain @es
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
-    lift $ poke ((p `plusPtr` 20 :: Ptr ShaderStageFlags)) (zero)
-    lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)
-    lift $ f
-
-instance es ~ '[] => Zero (IndirectCommandsLayoutCreateInfoEXT es) where
-  zero = IndirectCommandsLayoutCreateInfoEXT
-           ()
-           zero
-           zero
-           zero
-           zero
-           mempty
-
-
--- | VkIndirectCommandsLayoutTokenEXT - Struct specifying the details of an
--- indirect command layout token
---
--- == Valid Usage
---
--- -   #VUID-VkIndirectCommandsLayoutTokenEXT-offset-11124# @offset@ /must/
---     be less than or equal to
---     'PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT'::@maxIndirectCommandsTokenOffset@
---
--- -   #VUID-VkIndirectCommandsLayoutTokenEXT-offset-11125# @offset@ /must/
---     be aligned to @4@
---
--- -   #VUID-VkIndirectCommandsLayoutTokenEXT-meshShader-11126# If
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-meshShader meshShader>
---     or
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-taskShader taskShader>
---     are not enabled, @type@ /must/ not be
---     'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_EXT'
---     'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_EXT',
---     'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV_EXT' or
---     'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_NV_EXT'
---
--- -   #VUID-VkIndirectCommandsLayoutTokenEXT-rayTracingMaintenance1-11128#
---     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-rayTracingMaintenance1 rayTracingMaintenance1>
---     feature is not enabled, @type@ /must/ not be
---     'INDIRECT_COMMANDS_TOKEN_TYPE_TRACE_RAYS2_EXT'
---
--- -   #VUID-VkIndirectCommandsLayoutTokenEXT-deviceGeneratedCommandsMultiDrawIndirectCount-11129#
---     If
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-deviceGeneratedCommandsMultiDrawIndirectCount ::deviceGeneratedCommandsMultiDrawIndirectCount>
---     is not supported, @type@ /must/ not be
---     'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_COUNT_EXT' or
---     'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_COUNT_EXT'
---
--- -   #VUID-VkIndirectCommandsLayoutTokenEXT-deviceGeneratedCommandsMultiDrawIndirectCount-11130#
---     If
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-deviceGeneratedCommandsMultiDrawIndirectCount ::deviceGeneratedCommandsMultiDrawIndirectCount>
---     is not supported, @type@ /must/ not be
---     'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_EXT'
---
--- -   #VUID-VkIndirectCommandsLayoutTokenEXT-deviceGeneratedCommandsMultiDrawIndirectCount-11131#
---     If
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-deviceGeneratedCommandsMultiDrawIndirectCount ::deviceGeneratedCommandsMultiDrawIndirectCount>
---     is not supported, @type@ /must/ not be
---     'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_NV_EXT'
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkIndirectCommandsLayoutTokenEXT-sType-sType# @sType@ /must/
---     be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_EXT'
---
--- -   #VUID-VkIndirectCommandsLayoutTokenEXT-type-parameter# @type@ /must/
---     be a valid 'IndirectCommandsTokenTypeEXT' value
---
--- -   #VUID-VkIndirectCommandsLayoutTokenEXT-pPushConstant-parameter# If
---     @type@ is
---     'INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT',VK_INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT,
---     the @pPushConstant@ member of @data@ /must/ be a valid pointer to a
---     valid 'IndirectCommandsPushConstantTokenEXT' structure
---
--- -   #VUID-VkIndirectCommandsLayoutTokenEXT-pVertexBuffer-parameter# If
---     @type@ is 'INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_EXT', the
---     @pVertexBuffer@ member of @data@ /must/ be a valid pointer to a
---     valid 'IndirectCommandsVertexBufferTokenEXT' structure
---
--- -   #VUID-VkIndirectCommandsLayoutTokenEXT-pIndexBuffer-parameter# If
---     @type@ is 'INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_EXT', the
---     @pIndexBuffer@ member of @data@ /must/ be a valid pointer to a valid
---     'IndirectCommandsIndexBufferTokenEXT' structure
---
--- -   #VUID-VkIndirectCommandsLayoutTokenEXT-pExecutionSet-parameter# If
---     @type@ is 'INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT', the
---     @pExecutionSet@ member of @data@ /must/ be a valid pointer to a
---     valid 'IndirectCommandsExecutionSetTokenEXT' structure
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_generated_commands VK_EXT_device_generated_commands>,
--- 'IndirectCommandsLayoutCreateInfoEXT', 'IndirectCommandsTokenDataEXT',
--- 'IndirectCommandsTokenTypeEXT',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data IndirectCommandsLayoutTokenEXT = IndirectCommandsLayoutTokenEXT
-  { -- | @type@ specifies the 'IndirectCommandsTokenTypeEXT' for @data@.
-    type' :: IndirectCommandsTokenTypeEXT
-  , -- | @data@ specifies a 'IndirectCommandsTokenDataEXT' containing
-    -- token-specific details for command execution. It is ignored if @type@
-    -- does not match any member of the 'IndirectCommandsTokenDataEXT' union.
-    data' :: IndirectCommandsTokenDataEXT
-  , -- | @offset@ is the relative byte offset for the token within one sequence
-    -- of the indirect buffer. The data stored at that offset is the command
-    -- data for the token, e.g.
-    -- 'Vulkan.Core10.OtherTypes.DispatchIndirectCommand'.
-    offset :: Word32
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (IndirectCommandsLayoutTokenEXT)
-#endif
-deriving instance Show IndirectCommandsLayoutTokenEXT
-
-instance ToCStruct IndirectCommandsLayoutTokenEXT where
-  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p IndirectCommandsLayoutTokenEXT{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_EXT)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    lift $ poke ((p `plusPtr` 16 :: Ptr IndirectCommandsTokenTypeEXT)) (type')
-    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr IndirectCommandsTokenDataEXT)) (data') . ($ ())
-    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) (offset)
-    lift $ f
-  cStructSize = 40
-  cStructAlignment = 8
-  pokeZeroCStruct p f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_EXT)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    lift $ poke ((p `plusPtr` 16 :: Ptr IndirectCommandsTokenTypeEXT)) (zero)
-    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr IndirectCommandsTokenDataEXT)) (zero) . ($ ())
-    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) (zero)
-    lift $ f
-
-instance Zero IndirectCommandsLayoutTokenEXT where
-  zero = IndirectCommandsLayoutTokenEXT
-           zero
-           zero
-           zero
-
-
--- | VkDrawIndirectCountIndirectCommandEXT - Structure specifying input data
--- for a single draw-type command token
---
--- = Description
---
--- The corresponding indirect draw struct data will be read from the buffer
--- address.
---
--- == Valid Usage
---
--- -   #VUID-VkDrawIndirectCountIndirectCommandEXT-None-11122# The buffer’s
---     usage flag from which the address was acquired /must/ have the
---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'
---     bit set
---
--- -   #VUID-VkDrawIndirectCountIndirectCommandEXT-None-11123# Each element
---     of the buffer from which the address was acquired and that is
---     non-sparse /must/ be bound completely and contiguously to a single
---     'Vulkan.Core10.Handles.DeviceMemory' object
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_generated_commands VK_EXT_device_generated_commands>,
--- 'Vulkan.Core10.FundamentalTypes.DeviceAddress'
-data DrawIndirectCountIndirectCommandEXT = DrawIndirectCountIndirectCommandEXT
-  { -- | @bufferAddress@ specifies a physical address of the
-    -- 'Vulkan.Core10.Handles.Buffer' used for draw commands.
-    bufferAddress :: DeviceAddress
-  , -- | @stride@ is the byte size stride for the command arguments
-    stride :: Word32
-  , -- | @commandCount@ is the number of commands to execute
-    commandCount :: Word32
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (DrawIndirectCountIndirectCommandEXT)
-#endif
-deriving instance Show DrawIndirectCountIndirectCommandEXT
-
-instance ToCStruct DrawIndirectCountIndirectCommandEXT where
-  withCStruct x f = allocaBytes 16 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p DrawIndirectCountIndirectCommandEXT{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr DeviceAddress)) (bufferAddress)
-    poke ((p `plusPtr` 8 :: Ptr Word32)) (stride)
-    poke ((p `plusPtr` 12 :: Ptr Word32)) (commandCount)
-    f
-  cStructSize = 16
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr DeviceAddress)) (zero)
-    poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 12 :: Ptr Word32)) (zero)
-    f
-
-instance FromCStruct DrawIndirectCountIndirectCommandEXT where
-  peekCStruct p = do
-    bufferAddress <- peek @DeviceAddress ((p `plusPtr` 0 :: Ptr DeviceAddress))
-    stride <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))
-    commandCount <- peek @Word32 ((p `plusPtr` 12 :: Ptr Word32))
-    pure $ DrawIndirectCountIndirectCommandEXT
-             bufferAddress stride commandCount
-
-instance Storable DrawIndirectCountIndirectCommandEXT where
-  sizeOf ~_ = 16
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero DrawIndirectCountIndirectCommandEXT where
-  zero = DrawIndirectCountIndirectCommandEXT
-           zero
-           zero
-           zero
-
-
--- | VkIndirectCommandsVertexBufferTokenEXT - Structure specifying layout
--- token info for a single index buffer command token
---
--- == Valid Usage
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_generated_commands VK_EXT_device_generated_commands>,
--- 'IndirectCommandsTokenDataEXT'
-data IndirectCommandsVertexBufferTokenEXT = IndirectCommandsVertexBufferTokenEXT
-  { -- | @vertexBindingUnit@ is the vertex input binding number to be bound.
-    --
-    -- #VUID-VkIndirectCommandsVertexBufferTokenEXT-vertexBindingUnit-11134#
-    -- @vertexBindingUnit@ /must/ be less than the total number of vertex input
-    -- bindings in use by the current graphics state
-    vertexBindingUnit :: Word32 }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (IndirectCommandsVertexBufferTokenEXT)
-#endif
-deriving instance Show IndirectCommandsVertexBufferTokenEXT
-
-instance ToCStruct IndirectCommandsVertexBufferTokenEXT where
-  withCStruct x f = allocaBytes 4 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p IndirectCommandsVertexBufferTokenEXT{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr Word32)) (vertexBindingUnit)
-    f
-  cStructSize = 4
-  cStructAlignment = 4
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)
-    f
-
-instance FromCStruct IndirectCommandsVertexBufferTokenEXT where
-  peekCStruct p = do
-    vertexBindingUnit <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))
-    pure $ IndirectCommandsVertexBufferTokenEXT
-             vertexBindingUnit
-
-instance Storable IndirectCommandsVertexBufferTokenEXT where
-  sizeOf ~_ = 4
-  alignment ~_ = 4
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero IndirectCommandsVertexBufferTokenEXT where
-  zero = IndirectCommandsVertexBufferTokenEXT
-           zero
-
-
--- | VkBindVertexBufferIndirectCommandEXT - Structure specifying input data
--- for a single vertex buffer command token
---
--- == Valid Usage
---
--- -   #VUID-VkBindVertexBufferIndirectCommandEXT-None-11120# The buffer’s
---     usage flag from which the address was acquired /must/ have the
---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_VERTEX_BUFFER_BIT'
---     bit set
---
--- -   #VUID-VkBindVertexBufferIndirectCommandEXT-None-11121# Each element
---     of the buffer from which the address was acquired and that is
---     non-sparse /must/ be bound completely and contiguously to a single
---     'Vulkan.Core10.Handles.DeviceMemory' object
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_generated_commands VK_EXT_device_generated_commands>,
--- 'Vulkan.Core10.FundamentalTypes.DeviceAddress'
-data BindVertexBufferIndirectCommandEXT = BindVertexBufferIndirectCommandEXT
-  { -- | @bufferAddress@ specifies a physical address of the
-    -- 'Vulkan.Core10.Handles.Buffer' used as vertex input binding.
-    bufferAddress :: DeviceAddress
-  , -- | @size@ is the byte size range which is available for this operation from
-    -- the provided address.
-    size :: Word32
-  , -- | @stride@ is the byte size stride for this vertex input binding as in
-    -- 'Vulkan.Core10.Pipeline.VertexInputBindingDescription'::@stride@.
-    stride :: Word32
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (BindVertexBufferIndirectCommandEXT)
-#endif
-deriving instance Show BindVertexBufferIndirectCommandEXT
-
-instance ToCStruct BindVertexBufferIndirectCommandEXT where
-  withCStruct x f = allocaBytes 16 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p BindVertexBufferIndirectCommandEXT{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr DeviceAddress)) (bufferAddress)
-    poke ((p `plusPtr` 8 :: Ptr Word32)) (size)
-    poke ((p `plusPtr` 12 :: Ptr Word32)) (stride)
-    f
-  cStructSize = 16
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr DeviceAddress)) (zero)
-    poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 12 :: Ptr Word32)) (zero)
-    f
-
-instance FromCStruct BindVertexBufferIndirectCommandEXT where
-  peekCStruct p = do
-    bufferAddress <- peek @DeviceAddress ((p `plusPtr` 0 :: Ptr DeviceAddress))
-    size <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))
-    stride <- peek @Word32 ((p `plusPtr` 12 :: Ptr Word32))
-    pure $ BindVertexBufferIndirectCommandEXT
-             bufferAddress size stride
-
-instance Storable BindVertexBufferIndirectCommandEXT where
-  sizeOf ~_ = 16
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero BindVertexBufferIndirectCommandEXT where
-  zero = BindVertexBufferIndirectCommandEXT
-           zero
-           zero
-           zero
-
-
--- | VkIndirectCommandsIndexBufferTokenEXT - Structure specifying layout
--- token info for a single index buffer command token
---
--- = Description
---
--- This allows for easy layering of Vulkan atop other APIs. When
--- 'INDIRECT_COMMANDS_INPUT_MODE_DXGI_INDEX_BUFFER_EXT' is specified, the
--- indirect buffer can contain a @D3D12_INDEX_BUFFER_VIEW@ instead of
--- 'BindIndexBufferIndirectCommandEXT' as D3D’s DXGI format value is mapped
--- to the 'Vulkan.Core10.Enums.IndexType.IndexType'. It works as both
--- structs are otherwise binary compatible.
---
--- == Valid Usage (Implicit)
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_generated_commands VK_EXT_device_generated_commands>,
--- 'IndirectCommandsInputModeFlagBitsEXT', 'IndirectCommandsTokenDataEXT'
-data IndirectCommandsIndexBufferTokenEXT = IndirectCommandsIndexBufferTokenEXT
-  { -- | @mode@ specifies the mode to use with this token.
-    --
-    -- #VUID-VkIndirectCommandsIndexBufferTokenEXT-mode-11135# @mode@ /must/ be
-    -- non-zero
-    --
-    -- #VUID-VkIndirectCommandsIndexBufferTokenEXT-mode-11136# @mode@ /must/ be
-    -- one of the bits supported in
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-supportedIndirectCommandsInputModes ::supportedIndirectCommandsInputModes>
-    --
-    -- #VUID-VkIndirectCommandsIndexBufferTokenEXT-mode-parameter# @mode@
-    -- /must/ be a valid 'IndirectCommandsInputModeFlagBitsEXT' value
-    mode :: IndirectCommandsInputModeFlagBitsEXT }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (IndirectCommandsIndexBufferTokenEXT)
-#endif
-deriving instance Show IndirectCommandsIndexBufferTokenEXT
-
-instance ToCStruct IndirectCommandsIndexBufferTokenEXT where
-  withCStruct x f = allocaBytes 4 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p IndirectCommandsIndexBufferTokenEXT{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr IndirectCommandsInputModeFlagBitsEXT)) (mode)
-    f
-  cStructSize = 4
-  cStructAlignment = 4
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr IndirectCommandsInputModeFlagBitsEXT)) (zero)
-    f
-
-instance FromCStruct IndirectCommandsIndexBufferTokenEXT where
-  peekCStruct p = do
-    mode <- peek @IndirectCommandsInputModeFlagBitsEXT ((p `plusPtr` 0 :: Ptr IndirectCommandsInputModeFlagBitsEXT))
-    pure $ IndirectCommandsIndexBufferTokenEXT
-             mode
-
-instance Storable IndirectCommandsIndexBufferTokenEXT where
-  sizeOf ~_ = 4
-  alignment ~_ = 4
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero IndirectCommandsIndexBufferTokenEXT where
-  zero = IndirectCommandsIndexBufferTokenEXT
-           zero
-
-
--- | VkBindIndexBufferIndirectCommandEXT - Structure specifying input data
--- for a single index buffer command token
---
--- == Valid Usage
---
--- -   #VUID-VkBindIndexBufferIndirectCommandEXT-None-11117# The buffer’s
---     usage flags from which the address was acquired /must/ have the
---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDEX_BUFFER_BIT'
---     bit set
---
--- -   #VUID-VkBindIndexBufferIndirectCommandEXT-bufferAddress-11118# The
---     @bufferAddress@ /must/ be aligned to the
---     'Vulkan.Core10.Enums.IndexType.IndexType' of the @indexType@ used
---
--- -   #VUID-VkBindIndexBufferIndirectCommandEXT-None-11119# Each element
---     of the buffer from which the address was acquired and that is
---     non-sparse /must/ be bound completely and contiguously to a single
---     'Vulkan.Core10.Handles.DeviceMemory' object
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkBindIndexBufferIndirectCommandEXT-indexType-parameter#
---     @indexType@ /must/ be a valid
---     'Vulkan.Core10.Enums.IndexType.IndexType' value
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_generated_commands VK_EXT_device_generated_commands>,
--- 'Vulkan.Core10.FundamentalTypes.DeviceAddress',
--- 'Vulkan.Core10.Enums.IndexType.IndexType'
-data BindIndexBufferIndirectCommandEXT = BindIndexBufferIndirectCommandEXT
-  { -- | @bufferAddress@ specifies a physical address of the
-    -- 'Vulkan.Core10.Handles.Buffer' used as index buffer.
-    bufferAddress :: DeviceAddress
-  , -- | @size@ is the byte size range which is available for this operation from
-    -- the provided address.
-    size :: Word32
-  , -- | @indexType@ is a 'Vulkan.Core10.Enums.IndexType.IndexType' value
-    -- specifying how indices are treated.
-    indexType :: IndexType
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (BindIndexBufferIndirectCommandEXT)
-#endif
-deriving instance Show BindIndexBufferIndirectCommandEXT
-
-instance ToCStruct BindIndexBufferIndirectCommandEXT where
-  withCStruct x f = allocaBytes 16 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p BindIndexBufferIndirectCommandEXT{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr DeviceAddress)) (bufferAddress)
-    poke ((p `plusPtr` 8 :: Ptr Word32)) (size)
-    poke ((p `plusPtr` 12 :: Ptr IndexType)) (indexType)
-    f
-  cStructSize = 16
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr DeviceAddress)) (zero)
-    poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 12 :: Ptr IndexType)) (zero)
-    f
-
-instance FromCStruct BindIndexBufferIndirectCommandEXT where
-  peekCStruct p = do
-    bufferAddress <- peek @DeviceAddress ((p `plusPtr` 0 :: Ptr DeviceAddress))
-    size <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))
-    indexType <- peek @IndexType ((p `plusPtr` 12 :: Ptr IndexType))
-    pure $ BindIndexBufferIndirectCommandEXT
-             bufferAddress size indexType
-
-instance Storable BindIndexBufferIndirectCommandEXT where
-  sizeOf ~_ = 16
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero BindIndexBufferIndirectCommandEXT where
-  zero = BindIndexBufferIndirectCommandEXT
-           zero
-           zero
-           zero
-
-
--- | VkIndirectCommandsPushConstantTokenEXT - Structure specifying layout
--- token info for a single push constant command token
---
--- = Description
---
--- The @stageFlags@ member of @updateRange@ is ignored.
---
--- == Valid Usage
---
--- -   #VUID-VkIndirectCommandsPushConstantTokenEXT-updateRange-11132#
---     @updateRange@ /must/ be contained within the push constant info used
---     by 'IndirectCommandsLayoutCreateInfoEXT'
---
--- -   #VUID-VkIndirectCommandsPushConstantTokenEXT-size-11133# If the
---     token type is 'INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT', the
---     @size@ member of @updateRange@ /must/ be 4
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkIndirectCommandsPushConstantTokenEXT-updateRange-parameter#
---     @updateRange@ /must/ be a valid
---     'Vulkan.Core10.PipelineLayout.PushConstantRange' structure
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_generated_commands VK_EXT_device_generated_commands>,
--- 'IndirectCommandsTokenDataEXT',
--- 'Vulkan.Core10.PipelineLayout.PushConstantRange'
-data IndirectCommandsPushConstantTokenEXT = IndirectCommandsPushConstantTokenEXT
-  { -- | @updateRange@ is the push constant range that will be updated by the
-    -- token.
-    updateRange :: PushConstantRange }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (IndirectCommandsPushConstantTokenEXT)
-#endif
-deriving instance Show IndirectCommandsPushConstantTokenEXT
-
-instance ToCStruct IndirectCommandsPushConstantTokenEXT where
-  withCStruct x f = allocaBytes 12 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p IndirectCommandsPushConstantTokenEXT{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr PushConstantRange)) (updateRange)
-    f
-  cStructSize = 12
-  cStructAlignment = 4
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr PushConstantRange)) (zero)
-    f
-
-instance FromCStruct IndirectCommandsPushConstantTokenEXT where
-  peekCStruct p = do
-    updateRange <- peekCStruct @PushConstantRange ((p `plusPtr` 0 :: Ptr PushConstantRange))
-    pure $ IndirectCommandsPushConstantTokenEXT
-             updateRange
-
-instance Storable IndirectCommandsPushConstantTokenEXT where
-  sizeOf ~_ = 12
-  alignment ~_ = 4
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero IndirectCommandsPushConstantTokenEXT where
-  zero = IndirectCommandsPushConstantTokenEXT
-           zero
-
-
--- | VkIndirectCommandsExecutionSetTokenEXT - Structure specifying input data
--- for a single execution set command token
---
--- == Valid Usage
---
--- -   #VUID-VkIndirectCommandsExecutionSetTokenEXT-shaderStages-11137#
---     Each bit in @shaderStages@ /must/ be supported by
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-supportedIndirectCommandsShaderStagesPipelineBinding ::supportedIndirectCommandsShaderStagesPipelineBinding>
---     or
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-supportedIndirectCommandsShaderStagesShaderBinding ::supportedIndirectCommandsShaderStagesShaderBinding>
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkIndirectCommandsExecutionSetTokenEXT-type-parameter# @type@
---     /must/ be a valid 'IndirectExecutionSetInfoTypeEXT' value
---
--- -   #VUID-VkIndirectCommandsExecutionSetTokenEXT-shaderStages-parameter#
---     @shaderStages@ /must/ be a valid combination of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits' values
---
--- -   #VUID-VkIndirectCommandsExecutionSetTokenEXT-shaderStages-requiredbitmask#
---     @shaderStages@ /must/ not be @0@
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_generated_commands VK_EXT_device_generated_commands>,
--- 'IndirectCommandsTokenDataEXT', 'IndirectExecutionSetInfoTypeEXT',
--- 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlags'
-data IndirectCommandsExecutionSetTokenEXT = IndirectCommandsExecutionSetTokenEXT
-  { -- | @type@ describes the type of indirect execution set in use.
-    type' :: IndirectExecutionSetInfoTypeEXT
-  , -- | @shaderStages@ specifies the shaders that will be changed by this token.
-    shaderStages :: ShaderStageFlags
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (IndirectCommandsExecutionSetTokenEXT)
-#endif
-deriving instance Show IndirectCommandsExecutionSetTokenEXT
-
-instance ToCStruct IndirectCommandsExecutionSetTokenEXT where
-  withCStruct x f = allocaBytes 8 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p IndirectCommandsExecutionSetTokenEXT{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr IndirectExecutionSetInfoTypeEXT)) (type')
-    poke ((p `plusPtr` 4 :: Ptr ShaderStageFlags)) (shaderStages)
-    f
-  cStructSize = 8
-  cStructAlignment = 4
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr IndirectExecutionSetInfoTypeEXT)) (zero)
-    poke ((p `plusPtr` 4 :: Ptr ShaderStageFlags)) (zero)
-    f
-
-instance FromCStruct IndirectCommandsExecutionSetTokenEXT where
-  peekCStruct p = do
-    type' <- peek @IndirectExecutionSetInfoTypeEXT ((p `plusPtr` 0 :: Ptr IndirectExecutionSetInfoTypeEXT))
-    shaderStages <- peek @ShaderStageFlags ((p `plusPtr` 4 :: Ptr ShaderStageFlags))
-    pure $ IndirectCommandsExecutionSetTokenEXT
-             type' shaderStages
-
-instance Storable IndirectCommandsExecutionSetTokenEXT where
-  sizeOf ~_ = 8
-  alignment ~_ = 4
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero IndirectCommandsExecutionSetTokenEXT where
-  zero = IndirectCommandsExecutionSetTokenEXT
-           zero
-           zero
-
-
-data IndirectExecutionSetInfoEXT
-  = PipelineInfo IndirectExecutionSetPipelineInfoEXT
-  | ShaderInfo IndirectExecutionSetShaderInfoEXT
-  deriving (Show)
-
-instance ToCStruct IndirectExecutionSetInfoEXT where
-  withCStruct x f = allocaBytes 8 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct :: Ptr IndirectExecutionSetInfoEXT -> IndirectExecutionSetInfoEXT -> IO a -> IO a
-  pokeCStruct p = (. const) . runContT .  \case
-    PipelineInfo v -> do
-      pPipelineInfo <- ContT $ withCStruct (v)
-      lift $ poke (castPtr @_ @(Ptr IndirectExecutionSetPipelineInfoEXT) p) pPipelineInfo
-    ShaderInfo v -> do
-      pShaderInfo <- ContT $ withCStruct (v)
-      lift $ poke (castPtr @_ @(Ptr IndirectExecutionSetShaderInfoEXT) p) pShaderInfo
-  pokeZeroCStruct :: Ptr IndirectExecutionSetInfoEXT -> IO b -> IO b
-  pokeZeroCStruct _ f = f
-  cStructSize = 8
-  cStructAlignment = 8
-
-instance Zero IndirectExecutionSetInfoEXT where
-  zero = PipelineInfo zero
-
-
-data IndirectCommandsTokenDataEXT
-  = PushConstant IndirectCommandsPushConstantTokenEXT
-  | VertexBuffer IndirectCommandsVertexBufferTokenEXT
-  | IndexBuffer IndirectCommandsIndexBufferTokenEXT
-  | ExecutionSet IndirectCommandsExecutionSetTokenEXT
-  deriving (Show)
-
-instance ToCStruct IndirectCommandsTokenDataEXT where
-  withCStruct x f = allocaBytes 8 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct :: Ptr IndirectCommandsTokenDataEXT -> IndirectCommandsTokenDataEXT -> IO a -> IO a
-  pokeCStruct p = (. const) . runContT .  \case
-    PushConstant v -> do
-      pPushConstant <- ContT $ withCStruct (v)
-      lift $ poke (castPtr @_ @(Ptr IndirectCommandsPushConstantTokenEXT) p) pPushConstant
-    VertexBuffer v -> do
-      pVertexBuffer <- ContT $ withCStruct (v)
-      lift $ poke (castPtr @_ @(Ptr IndirectCommandsVertexBufferTokenEXT) p) pVertexBuffer
-    IndexBuffer v -> do
-      pIndexBuffer <- ContT $ withCStruct (v)
-      lift $ poke (castPtr @_ @(Ptr IndirectCommandsIndexBufferTokenEXT) p) pIndexBuffer
-    ExecutionSet v -> do
-      pExecutionSet <- ContT $ withCStruct (v)
-      lift $ poke (castPtr @_ @(Ptr IndirectCommandsExecutionSetTokenEXT) p) pExecutionSet
-  pokeZeroCStruct :: Ptr IndirectCommandsTokenDataEXT -> IO b -> IO b
-  pokeZeroCStruct _ f = f
-  cStructSize = 8
-  cStructAlignment = 8
-
-instance Zero IndirectCommandsTokenDataEXT where
-  zero = PushConstant zero
-
-
-type IndirectCommandsLayoutUsageFlagsEXT = IndirectCommandsLayoutUsageFlagBitsEXT
-
--- | VkIndirectCommandsLayoutUsageFlagBitsEXT - Bitmask specifying allowed
--- usage of an indirect commands layout
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_generated_commands VK_EXT_device_generated_commands>,
--- 'IndirectCommandsLayoutUsageFlagsEXT'
-newtype IndirectCommandsLayoutUsageFlagBitsEXT = IndirectCommandsLayoutUsageFlagBitsEXT Flags
-  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
-
--- | 'INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_EXT' specifies
--- that the layout is always used with the manual preprocessing step
--- through calling 'cmdPreprocessGeneratedCommandsEXT' and executed by
--- 'cmdExecuteGeneratedCommandsEXT' with @isPreprocessed@ set to
--- 'Vulkan.Core10.FundamentalTypes.TRUE'.
-pattern INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_EXT = IndirectCommandsLayoutUsageFlagBitsEXT 0x00000001
-
--- | 'INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_EXT' specifies
--- that the processing of sequences will happen at an
--- implementation-dependent order, which is not guaranteed to be
--- deterministic using the same input data. This flag is ignored when the
--- @shaderStages@ is
--- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT' as it
--- is implied that the dispatch sequence is always unordered.
-pattern INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_EXT = IndirectCommandsLayoutUsageFlagBitsEXT 0x00000002
-
-conNameIndirectCommandsLayoutUsageFlagBitsEXT :: String
-conNameIndirectCommandsLayoutUsageFlagBitsEXT = "IndirectCommandsLayoutUsageFlagBitsEXT"
-
-enumPrefixIndirectCommandsLayoutUsageFlagBitsEXT :: String
-enumPrefixIndirectCommandsLayoutUsageFlagBitsEXT = "INDIRECT_COMMANDS_LAYOUT_USAGE_"
-
-showTableIndirectCommandsLayoutUsageFlagBitsEXT :: [(IndirectCommandsLayoutUsageFlagBitsEXT, String)]
-showTableIndirectCommandsLayoutUsageFlagBitsEXT =
-  [
-    ( INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_EXT
-    , "EXPLICIT_PREPROCESS_BIT_EXT"
-    )
-  ,
-    ( INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_EXT
-    , "UNORDERED_SEQUENCES_BIT_EXT"
-    )
-  ]
-
-instance Show IndirectCommandsLayoutUsageFlagBitsEXT where
-  showsPrec =
-    enumShowsPrec
-      enumPrefixIndirectCommandsLayoutUsageFlagBitsEXT
-      showTableIndirectCommandsLayoutUsageFlagBitsEXT
-      conNameIndirectCommandsLayoutUsageFlagBitsEXT
-      (\(IndirectCommandsLayoutUsageFlagBitsEXT x) -> x)
-      (\x -> showString "0x" . showHex x)
-
-instance Read IndirectCommandsLayoutUsageFlagBitsEXT where
-  readPrec =
-    enumReadPrec
-      enumPrefixIndirectCommandsLayoutUsageFlagBitsEXT
-      showTableIndirectCommandsLayoutUsageFlagBitsEXT
-      conNameIndirectCommandsLayoutUsageFlagBitsEXT
-      IndirectCommandsLayoutUsageFlagBitsEXT
-
--- | VkIndirectExecutionSetInfoTypeEXT - Enum specifying allowed usage of an
--- indirect execution set
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_generated_commands VK_EXT_device_generated_commands>,
--- 'IndirectCommandsExecutionSetTokenEXT',
--- 'IndirectExecutionSetCreateInfoEXT'
-newtype IndirectExecutionSetInfoTypeEXT = IndirectExecutionSetInfoTypeEXT Int32
-  deriving newtype (Eq, Ord, Storable, Zero)
-
--- | 'INDIRECT_EXECUTION_SET_INFO_TYPE_PIPELINES_EXT' specifies that the
--- indirect execution set contains 'Vulkan.Core10.Handles.Pipeline'
--- objects.
-pattern INDIRECT_EXECUTION_SET_INFO_TYPE_PIPELINES_EXT = IndirectExecutionSetInfoTypeEXT 0
-
--- | 'INDIRECT_EXECUTION_SET_INFO_TYPE_SHADER_OBJECTS_EXT' specifies that the
--- indirect execution set contains 'Vulkan.Extensions.Handles.ShaderEXT'
--- objects.
-pattern INDIRECT_EXECUTION_SET_INFO_TYPE_SHADER_OBJECTS_EXT = IndirectExecutionSetInfoTypeEXT 1
-
-{-# COMPLETE
-  INDIRECT_EXECUTION_SET_INFO_TYPE_PIPELINES_EXT
-  , INDIRECT_EXECUTION_SET_INFO_TYPE_SHADER_OBJECTS_EXT ::
-    IndirectExecutionSetInfoTypeEXT
-  #-}
-
-conNameIndirectExecutionSetInfoTypeEXT :: String
-conNameIndirectExecutionSetInfoTypeEXT = "IndirectExecutionSetInfoTypeEXT"
-
-enumPrefixIndirectExecutionSetInfoTypeEXT :: String
-enumPrefixIndirectExecutionSetInfoTypeEXT = "INDIRECT_EXECUTION_SET_INFO_TYPE_"
-
-showTableIndirectExecutionSetInfoTypeEXT :: [(IndirectExecutionSetInfoTypeEXT, String)]
-showTableIndirectExecutionSetInfoTypeEXT =
-  [
-    ( INDIRECT_EXECUTION_SET_INFO_TYPE_PIPELINES_EXT
-    , "PIPELINES_EXT"
-    )
-  ,
-    ( INDIRECT_EXECUTION_SET_INFO_TYPE_SHADER_OBJECTS_EXT
-    , "SHADER_OBJECTS_EXT"
-    )
-  ]
-
-instance Show IndirectExecutionSetInfoTypeEXT where
-  showsPrec =
-    enumShowsPrec
-      enumPrefixIndirectExecutionSetInfoTypeEXT
-      showTableIndirectExecutionSetInfoTypeEXT
-      conNameIndirectExecutionSetInfoTypeEXT
-      (\(IndirectExecutionSetInfoTypeEXT x) -> x)
-      (showsPrec 11)
-
-instance Read IndirectExecutionSetInfoTypeEXT where
-  readPrec =
-    enumReadPrec
-      enumPrefixIndirectExecutionSetInfoTypeEXT
-      showTableIndirectExecutionSetInfoTypeEXT
-      conNameIndirectExecutionSetInfoTypeEXT
-      IndirectExecutionSetInfoTypeEXT
-
-type IndirectCommandsInputModeFlagsEXT = IndirectCommandsInputModeFlagBitsEXT
-
--- | VkIndirectCommandsInputModeFlagBitsEXT - Bitmask specifying allowed
--- usage of an indirect commands layout
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_generated_commands VK_EXT_device_generated_commands>,
--- 'IndirectCommandsIndexBufferTokenEXT',
--- 'IndirectCommandsInputModeFlagsEXT'
-newtype IndirectCommandsInputModeFlagBitsEXT = IndirectCommandsInputModeFlagBitsEXT Flags
-  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
-
--- | 'INDIRECT_COMMANDS_INPUT_MODE_VULKAN_INDEX_BUFFER_EXT' specifies that
--- the indirect buffer contains 'BindIndexBufferIndirectCommandEXT'.
-pattern INDIRECT_COMMANDS_INPUT_MODE_VULKAN_INDEX_BUFFER_EXT = IndirectCommandsInputModeFlagBitsEXT 0x00000001
-
--- | 'INDIRECT_COMMANDS_INPUT_MODE_DXGI_INDEX_BUFFER_EXT' specifies that the
--- indirect buffer contains @D3D12_INDEX_BUFFER_VIEW@.
-pattern INDIRECT_COMMANDS_INPUT_MODE_DXGI_INDEX_BUFFER_EXT = IndirectCommandsInputModeFlagBitsEXT 0x00000002
-
-conNameIndirectCommandsInputModeFlagBitsEXT :: String
-conNameIndirectCommandsInputModeFlagBitsEXT = "IndirectCommandsInputModeFlagBitsEXT"
-
-enumPrefixIndirectCommandsInputModeFlagBitsEXT :: String
-enumPrefixIndirectCommandsInputModeFlagBitsEXT = "INDIRECT_COMMANDS_INPUT_MODE_"
-
-showTableIndirectCommandsInputModeFlagBitsEXT :: [(IndirectCommandsInputModeFlagBitsEXT, String)]
-showTableIndirectCommandsInputModeFlagBitsEXT =
-  [
-    ( INDIRECT_COMMANDS_INPUT_MODE_VULKAN_INDEX_BUFFER_EXT
-    , "VULKAN_INDEX_BUFFER_EXT"
-    )
-  ,
-    ( INDIRECT_COMMANDS_INPUT_MODE_DXGI_INDEX_BUFFER_EXT
-    , "DXGI_INDEX_BUFFER_EXT"
-    )
-  ]
-
-instance Show IndirectCommandsInputModeFlagBitsEXT where
-  showsPrec =
-    enumShowsPrec
-      enumPrefixIndirectCommandsInputModeFlagBitsEXT
-      showTableIndirectCommandsInputModeFlagBitsEXT
-      conNameIndirectCommandsInputModeFlagBitsEXT
-      (\(IndirectCommandsInputModeFlagBitsEXT x) -> x)
-      (\x -> showString "0x" . showHex x)
-
-instance Read IndirectCommandsInputModeFlagBitsEXT where
-  readPrec =
-    enumReadPrec
-      enumPrefixIndirectCommandsInputModeFlagBitsEXT
-      showTableIndirectCommandsInputModeFlagBitsEXT
-      conNameIndirectCommandsInputModeFlagBitsEXT
-      IndirectCommandsInputModeFlagBitsEXT
-
--- | VkIndirectCommandsTokenTypeEXT - Enum specifying token commands
---
--- = Description
---
--- \'
---
--- +-------------------------------------------------------------+----------------------------------------------------------------------------------+
--- | __Common Tokens__                                           | __Command Data__                                                                 |
--- +=============================================================+==================================================================================+
--- | 'INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT'            | @u32[]@ array of indices into the indirect execution set                         |
--- +-------------------------------------------------------------+----------------------------------------------------------------------------------+
--- | 'INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT'            | @u32[]@ raw data                                                                 |
--- +-------------------------------------------------------------+----------------------------------------------------------------------------------+
--- | 'INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT'           | @u32@ placeholder data (not accessed by shader)                                  |
--- +-------------------------------------------------------------+----------------------------------------------------------------------------------+
--- | __Compute Tokens__                                          |                                                                                  |
--- +-------------------------------------------------------------+----------------------------------------------------------------------------------+
--- | 'INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_EXT'                 | 'Vulkan.Core10.OtherTypes.DispatchIndirectCommand'                               |
--- +-------------------------------------------------------------+----------------------------------------------------------------------------------+
--- | __Ray Tracing Tokens__                                      |                                                                                  |
--- +-------------------------------------------------------------+----------------------------------------------------------------------------------+
--- | 'INDIRECT_COMMANDS_TOKEN_TYPE_TRACE_RAYS2_EXT'              | 'Vulkan.Extensions.VK_KHR_ray_tracing_maintenance1.TraceRaysIndirectCommand2KHR' |
--- +-------------------------------------------------------------+----------------------------------------------------------------------------------+
--- | __Graphics State Tokens__                                   |                                                                                  |
--- +-------------------------------------------------------------+----------------------------------------------------------------------------------+
--- | 'INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_EXT'             | 'BindIndexBufferIndirectCommandEXT'                                              |
--- +-------------------------------------------------------------+----------------------------------------------------------------------------------+
--- | 'INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_EXT'            | 'BindVertexBufferIndirectCommandEXT'                                             |
--- +-------------------------------------------------------------+----------------------------------------------------------------------------------+
--- | __Graphics Draw Tokens__                                    |                                                                                  |
--- +-------------------------------------------------------------+----------------------------------------------------------------------------------+
--- | 'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_EXT'             | 'Vulkan.Core10.OtherTypes.DrawIndexedIndirectCommand'                            |
--- +-------------------------------------------------------------+----------------------------------------------------------------------------------+
--- | 'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_EXT'                     | 'Vulkan.Core10.OtherTypes.DrawIndirectCommand'                                   |
--- +-------------------------------------------------------------+----------------------------------------------------------------------------------+
--- | 'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_EXT'          | 'Vulkan.Extensions.VK_EXT_mesh_shader.DrawMeshTasksIndirectCommandEXT'           |
--- +-------------------------------------------------------------+----------------------------------------------------------------------------------+
--- | 'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV_EXT'       | 'Vulkan.Extensions.VK_NV_mesh_shader.DrawMeshTasksIndirectCommandNV'             |
--- +-------------------------------------------------------------+----------------------------------------------------------------------------------+
--- | __Graphics Draw Count Tokens__                              |                                                                                  |
--- +-------------------------------------------------------------+----------------------------------------------------------------------------------+
--- | 'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_COUNT_EXT'       | 'DrawIndirectCountIndirectCommandEXT' with VkDrawIndexedIndirectCommand          |
--- +-------------------------------------------------------------+----------------------------------------------------------------------------------+
--- | 'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_COUNT_EXT'               | 'DrawIndirectCountIndirectCommandEXT' with VkDrawIndirectCommand                 |
--- +-------------------------------------------------------------+----------------------------------------------------------------------------------+
--- | 'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_EXT'    | 'DrawIndirectCountIndirectCommandEXT' with VkDrawMeshTasksIndirectCommandEXT     |
--- +-------------------------------------------------------------+----------------------------------------------------------------------------------+
--- | 'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_NV_EXT' | 'DrawIndirectCountIndirectCommandEXT' with VkDrawMeshTasksIndirectCommandNV      |
--- +-------------------------------------------------------------+----------------------------------------------------------------------------------+
---
--- Supported Indirect Command Tokens
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_generated_commands VK_EXT_device_generated_commands>,
--- 'IndirectCommandsLayoutTokenEXT'
-newtype IndirectCommandsTokenTypeEXT = IndirectCommandsTokenTypeEXT Int32
-  deriving newtype (Eq, Ord, Storable, Zero)
-
--- No documentation found for Nested "VkIndirectCommandsTokenTypeEXT" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT"
-pattern INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT = IndirectCommandsTokenTypeEXT 0
-
--- No documentation found for Nested "VkIndirectCommandsTokenTypeEXT" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT"
-pattern INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT = IndirectCommandsTokenTypeEXT 1
-
--- No documentation found for Nested "VkIndirectCommandsTokenTypeEXT" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT"
-pattern INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT = IndirectCommandsTokenTypeEXT 2
-
--- No documentation found for Nested "VkIndirectCommandsTokenTypeEXT" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_EXT"
-pattern INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_EXT = IndirectCommandsTokenTypeEXT 3
-
--- No documentation found for Nested "VkIndirectCommandsTokenTypeEXT" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_EXT"
-pattern INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_EXT = IndirectCommandsTokenTypeEXT 4
-
--- No documentation found for Nested "VkIndirectCommandsTokenTypeEXT" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_EXT"
-pattern INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_EXT = IndirectCommandsTokenTypeEXT 5
-
--- No documentation found for Nested "VkIndirectCommandsTokenTypeEXT" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_EXT"
-pattern INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_EXT = IndirectCommandsTokenTypeEXT 6
-
--- No documentation found for Nested "VkIndirectCommandsTokenTypeEXT" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_COUNT_EXT"
-pattern INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_COUNT_EXT = IndirectCommandsTokenTypeEXT 7
-
--- No documentation found for Nested "VkIndirectCommandsTokenTypeEXT" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_COUNT_EXT"
-pattern INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_COUNT_EXT = IndirectCommandsTokenTypeEXT 8
-
--- No documentation found for Nested "VkIndirectCommandsTokenTypeEXT" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_EXT"
-pattern INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_EXT = IndirectCommandsTokenTypeEXT 9
-
--- No documentation found for Nested "VkIndirectCommandsTokenTypeEXT" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_TRACE_RAYS2_EXT"
-pattern INDIRECT_COMMANDS_TOKEN_TYPE_TRACE_RAYS2_EXT = IndirectCommandsTokenTypeEXT 1000386004
-
--- No documentation found for Nested "VkIndirectCommandsTokenTypeEXT" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_EXT"
-pattern INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_EXT = IndirectCommandsTokenTypeEXT 1000328001
-
--- No documentation found for Nested "VkIndirectCommandsTokenTypeEXT" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_EXT"
-pattern INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_EXT = IndirectCommandsTokenTypeEXT 1000328000
-
--- No documentation found for Nested "VkIndirectCommandsTokenTypeEXT" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_NV_EXT"
-pattern INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_NV_EXT = IndirectCommandsTokenTypeEXT 1000202003
-
--- No documentation found for Nested "VkIndirectCommandsTokenTypeEXT" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV_EXT"
-pattern INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV_EXT = IndirectCommandsTokenTypeEXT 1000202002
-
-{-# COMPLETE
-  INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT
-  , INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT
-  , INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT
-  , INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_EXT
-  , INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_EXT
-  , INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_EXT
-  , INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_EXT
-  , INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_COUNT_EXT
-  , INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_COUNT_EXT
-  , INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_EXT
-  , INDIRECT_COMMANDS_TOKEN_TYPE_TRACE_RAYS2_EXT
-  , INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_EXT
-  , INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_EXT
-  , INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_NV_EXT
-  , INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV_EXT ::
-    IndirectCommandsTokenTypeEXT
-  #-}
-
-conNameIndirectCommandsTokenTypeEXT :: String
-conNameIndirectCommandsTokenTypeEXT = "IndirectCommandsTokenTypeEXT"
-
-enumPrefixIndirectCommandsTokenTypeEXT :: String
-enumPrefixIndirectCommandsTokenTypeEXT = "INDIRECT_COMMANDS_TOKEN_TYPE_"
-
-showTableIndirectCommandsTokenTypeEXT :: [(IndirectCommandsTokenTypeEXT, String)]
-showTableIndirectCommandsTokenTypeEXT =
-  [
-    ( INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT
-    , "EXECUTION_SET_EXT"
-    )
-  ,
-    ( INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT
-    , "PUSH_CONSTANT_EXT"
-    )
-  ,
-    ( INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT
-    , "SEQUENCE_INDEX_EXT"
-    )
-  ,
-    ( INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_EXT
-    , "INDEX_BUFFER_EXT"
-    )
-  ,
-    ( INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_EXT
-    , "VERTEX_BUFFER_EXT"
-    )
-  ,
-    ( INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_EXT
-    , "DRAW_INDEXED_EXT"
-    )
-  ,
-    ( INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_EXT
-    , "DRAW_EXT"
-    )
-  ,
-    ( INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_COUNT_EXT
-    , "DRAW_INDEXED_COUNT_EXT"
-    )
-  ,
-    ( INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_COUNT_EXT
-    , "DRAW_COUNT_EXT"
-    )
-  ,
-    ( INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_EXT
-    , "DISPATCH_EXT"
-    )
-  ,
-    ( INDIRECT_COMMANDS_TOKEN_TYPE_TRACE_RAYS2_EXT
-    , "TRACE_RAYS2_EXT"
-    )
-  ,
-    ( INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_EXT
-    , "DRAW_MESH_TASKS_COUNT_EXT"
-    )
-  ,
-    ( INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_EXT
-    , "DRAW_MESH_TASKS_EXT"
-    )
-  ,
-    ( INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_NV_EXT
-    , "DRAW_MESH_TASKS_COUNT_NV_EXT"
-    )
-  ,
-    ( INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV_EXT
-    , "DRAW_MESH_TASKS_NV_EXT"
+--             
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_buffer_device_address VK_KHR_buffer_device_address>
+--              or
+--             
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.2 Vulkan Version 1.2>
+--          and
+--         
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance5 VK_KHR_maintenance5>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3 Vulkan Version 1.3>
+--
+-- [__API Interactions__]
+--
+--     -   Interacts with VK_EXT_shader_object
+--
+-- [__Contact__]
+--
+--     -   Mike Blumenkrantz
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_device_generated_commands] @zmike%0A*Here describe the issue or question you have about the VK_EXT_device_generated_commands extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_EXT_device_generated_commands.adoc VK_EXT_device_generated_commands>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2024-02-23
+--
+-- [__Interactions and External Dependencies__]
+--
+--     -   This extension requires Vulkan 1.1
+--
+--     -   This extension requires @VK_EXT_buffer_device_address@ or
+--         @VK_KHR_buffer_device_address@ or Vulkan 1.2 for the ability to
+--         bind vertex and index buffers on the device.
+--
+--     -   This extension requires @VK_KHR_maintenance5@ for the ability to
+--         use VkPipelineCreateFlags2KHR.
+--
+--     -   This extension interacts with @VK_NV_mesh_shader@. If the latter
+--         extension is not supported, remove the command tokens to
+--         initiate NV mesh tasks drawing in this extension.
+--
+--     -   This extension interacts with @VK_EXT_mesh_shader@. If the
+--         latter extension is not supported, remove the command tokens to
+--         initiate EXT mesh tasks drawing in this extension.
+--
+--     -   This extension interacts with @VK_KHR_ray_tracing_pipeline@. If
+--         the latter extension is not supported, remove the command tokens
+--         to initiate ray tracing in this extension.
+--
+--     -   This extension interacts with @VK_EXT_shader_object@. If the
+--         latter extension is not supported, remove references to shader
+--         objects in this extension.
+--
+-- [__Contributors__]
+--
+--     -   Mike Blumenkrantz, VALVE
+--
+--     -   Hans-Kristian Arntzen, VALVE
+--
+--     -   Jan-Harald Fredriksen, ARM
+--
+--     -   Spencer Fricke, LunarG
+--
+--     -   Ricardo Garcia, Igalia
+--
+--     -   Tobias Hector, AMD
+--
+--     -   Baldur Karlsson, VALVE
+--
+--     -   Christoph Kubisch, NVIDIA
+--
+--     -   Lionel Landwerlin, INTEL
+--
+--     -   Jon Leech, Khronos
+--
+--     -   Ting Wei, ARM
+--
+--     -   Ken Shanyi Zhang, AMD
+--
+--     -   Faith Ekstrand, Collabora
+--
+--     -   Vikram Kushwaha, NVIDIA
+--
+--     -   Connor Abbott, VALVE
+--
+--     -   Samuel Pitoiset, VALVE
+--
+-- == Description
+--
+-- This extension allows the device to generate a number of commands for
+-- command buffers. It provides a subset of functionality from both
+-- @VK_NV_device_generated_commands@ and
+-- @VK_NV_device_generated_commands_compute@ as well as some new features.
+--
+-- When rendering a large number of objects, the device can be leveraged to
+-- implement a number of critical functions, like updating matrices, or
+-- implementing occlusion culling, frustum culling, front to back sorting,
+-- etc. Implementing those on the device does not require any special
+-- extension, since an application is free to define its own data
+-- structures, and just process them using shaders.
+--
+-- To render objects which have been processed on the device, Vulkan has
+-- several ways to perform indirect rendering, from the most basic
+-- 'Vulkan.Core10.CommandBufferBuilding.cmdDrawIndirect' with one indirect
+-- draw to
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_draw_indirect_count.cmdDrawIndirectCount'
+-- which supports multiple indirect draws batched together, with a way to
+-- determine number of draws at device execution time.
+--
+-- However, if rendering state needs to change between the indirect draws,
+-- then unextended Vulkan forces the application to speculatively record a
+-- prohibitive number of redundant indirect commands covering all possible
+-- state combinations - which could end up processing nothing after culling
+-- - or read back the processed stream and issue graphics command from the
+-- host. For very large scenes, the synchronization overhead and cost to
+-- generate the command buffer can become the bottleneck. This extension
+-- allows an application to generate a device side stream of state changes
+-- and commands, and convert it efficiently into a command buffer without
+-- having to read it back to the host.
+--
+-- Furthermore, it allows incremental changes to such command buffers by
+-- manipulating only partial sections of a command stream — for example
+-- pipeline and shader object bindings. Unextended Vulkan requires
+-- re-creation of entire command buffers in such a scenario, or updates
+-- synchronized on the host.
+--
+-- The intended usage for this extension is for the application to:
+--
+-- -   create 'Vulkan.Core10.Handles.Buffer' objects and retrieve physical
+--     addresses from them via
+--     'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.getBufferDeviceAddress'
+--
+-- -   create a 'Vulkan.Extensions.Handles.IndirectExecutionSetEXT' for the
+--     ability to change shaders on the device.
+--
+-- -   create a 'Vulkan.Extensions.Handles.IndirectCommandsLayoutEXT',
+--     which lists the 'IndirectCommandsTokenTypeEXT' it wants to
+--     dynamically execute as an atomic command sequence. This step likely
+--     involves some internal device code compilation, since the intent is
+--     for the GPU to generate the command buffer based on the layout.
+--
+-- -   fill the input stream buffers with the data for each of the inputs
+--     it needs. Each input is an array that will be filled with
+--     token-dependent data.
+--
+-- -   set up a preprocess 'Vulkan.Core10.Handles.Buffer' that uses memory
+--     according to the information retrieved via
+--     'getGeneratedCommandsMemoryRequirementsEXT'.
+--
+-- -   optionally preprocess the generated content using
+--     'cmdPreprocessGeneratedCommandsEXT', for example on an asynchronous
+--     compute queue, or for the purpose of reusing the data in multiple
+--     executions.
+--
+-- -   call 'cmdExecuteGeneratedCommandsEXT' to create and execute the
+--     actual device commands for all sequences based on the inputs
+--     provided.
+--
+-- For each draw in a sequence, the following can be specified:
+--
+-- -   a number of vertex buffer bindings
+--
+-- -   a different index buffer, with an optional dynamic offset and index
+--     type
+--
+-- -   a number of different push constants
+--
+-- -   updates to bound shader stages
+--
+-- For each dispatch in a sequence, the following can be specified:
+--
+-- -   a number of different push constants
+--
+-- -   updates to bound shader stages
+--
+-- For each trace rays in a sequence, the following can be specified:
+--
+-- -   a number of different push constants
+--
+-- -   updates to bound shader stages
+--
+-- While the GPU can be faster than a CPU to generate the commands, it will
+-- not happen asynchronously to the device, therefore the primary use case
+-- is generating “less” total work (occlusion culling, classification to
+-- use specialized shaders, etc.).
+--
+-- == New Object Types
+--
+-- -   'Vulkan.Extensions.Handles.IndirectCommandsLayoutEXT'
+--
+-- -   'Vulkan.Extensions.Handles.IndirectExecutionSetEXT'
+--
+-- == New Commands
+--
+-- -   'cmdExecuteGeneratedCommandsEXT'
+--
+-- -   'cmdPreprocessGeneratedCommandsEXT'
+--
+-- -   'createIndirectCommandsLayoutEXT'
+--
+-- -   'createIndirectExecutionSetEXT'
+--
+-- -   'destroyIndirectCommandsLayoutEXT'
+--
+-- -   'destroyIndirectExecutionSetEXT'
+--
+-- -   'getGeneratedCommandsMemoryRequirementsEXT'
+--
+-- -   'updateIndirectExecutionSetPipelineEXT'
+--
+-- -   'updateIndirectExecutionSetShaderEXT'
+--
+-- == New Structures
+--
+-- -   'BindIndexBufferIndirectCommandEXT'
+--
+-- -   'BindVertexBufferIndirectCommandEXT'
+--
+-- -   'DrawIndirectCountIndirectCommandEXT'
+--
+-- -   'GeneratedCommandsInfoEXT'
+--
+-- -   'GeneratedCommandsMemoryRequirementsInfoEXT'
+--
+-- -   'IndirectCommandsExecutionSetTokenEXT'
+--
+-- -   'IndirectCommandsIndexBufferTokenEXT'
+--
+-- -   'IndirectCommandsLayoutCreateInfoEXT'
+--
+-- -   'IndirectCommandsLayoutTokenEXT'
+--
+-- -   'IndirectCommandsPushConstantTokenEXT'
+--
+-- -   'IndirectCommandsVertexBufferTokenEXT'
+--
+-- -   'IndirectExecutionSetCreateInfoEXT'
+--
+-- -   'IndirectExecutionSetPipelineInfoEXT'
+--
+-- -   'IndirectExecutionSetShaderInfoEXT'
+--
+-- -   'IndirectExecutionSetShaderLayoutInfoEXT'
+--
+-- -   'WriteIndirectExecutionSetPipelineEXT'
+--
+-- -   Extending 'GeneratedCommandsInfoEXT',
+--     'GeneratedCommandsMemoryRequirementsInfoEXT':
+--
+--     -   'GeneratedCommandsPipelineInfoEXT'
+--
+--     -   'GeneratedCommandsShaderInfoEXT'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_shader_object VK_EXT_shader_object>
+-- is supported:
+--
+-- -   'WriteIndirectExecutionSetShaderEXT'
+--
+-- == New Unions
+--
+-- -   'IndirectCommandsTokenDataEXT'
+--
+-- -   'IndirectExecutionSetInfoEXT'
+--
+-- == New Enums
+--
+-- -   'IndirectCommandsInputModeFlagBitsEXT'
+--
+-- -   'IndirectCommandsLayoutUsageFlagBitsEXT'
+--
+-- -   'IndirectCommandsTokenTypeEXT'
+--
+-- -   'IndirectExecutionSetInfoTypeEXT'
+--
+-- == New Bitmasks
+--
+-- -   'IndirectCommandsInputModeFlagsEXT'
+--
+-- -   'IndirectCommandsLayoutUsageFlagsEXT'
+--
+-- == New Enum Constants
+--
+-- -   'EXT_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME'
+--
+-- -   'EXT_DEVICE_GENERATED_COMMANDS_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits':
+--
+--     -   'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_COMMAND_PREPROCESS_READ_BIT_EXT'
+--
+--     -   'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_COMMAND_PREPROCESS_WRITE_BIT_EXT'
+--
+-- -   Extending
+--     'Vulkan.Core14.Enums.BufferUsageFlags2.BufferUsageFlagBits2':
+--
+--     -   'Vulkan.Core14.Enums.BufferUsageFlags2.BUFFER_USAGE_2_PREPROCESS_BUFFER_BIT_EXT'
+--
+-- -   Extending 'Vulkan.Core10.Enums.ObjectType.ObjectType':
+--
+--     -   'Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_EXT'
+--
+--     -   'Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_INDIRECT_EXECUTION_SET_EXT'
+--
+-- -   Extending
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PipelineCreateFlagBits2':
+--
+--     -   'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXT'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits':
+--
+--     -   'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_EXT'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_EXT_shader_object.ShaderCreateFlagBitsEXT':
+--
+--     -   'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDIRECT_BINDABLE_BIT_EXT'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GENERATED_COMMANDS_PIPELINE_INFO_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GENERATED_COMMANDS_SHADER_INFO_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_CREATE_INFO_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_INFO_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_SHADER_EXT'
+--
+-- == Example Code
+--
+-- TODO
+--
+-- == Version History
+--
+-- -   Revision 1, 2024-02-23 (Mike Blumenkrantz)
+--
+--     -   Initial version
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_device_generated_commands 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_device_generated_commands  ( cmdExecuteGeneratedCommandsEXT
+                                                           , cmdPreprocessGeneratedCommandsEXT
+                                                           , getGeneratedCommandsMemoryRequirementsEXT
+                                                           , createIndirectCommandsLayoutEXT
+                                                           , withIndirectCommandsLayoutEXT
+                                                           , destroyIndirectCommandsLayoutEXT
+                                                           , createIndirectExecutionSetEXT
+                                                           , withIndirectExecutionSetEXT
+                                                           , destroyIndirectExecutionSetEXT
+                                                           , updateIndirectExecutionSetPipelineEXT
+                                                           , updateIndirectExecutionSetShaderEXT
+                                                           , PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT(..)
+                                                           , PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT(..)
+                                                           , GeneratedCommandsPipelineInfoEXT(..)
+                                                           , GeneratedCommandsShaderInfoEXT(..)
+                                                           , GeneratedCommandsMemoryRequirementsInfoEXT(..)
+                                                           , IndirectExecutionSetPipelineInfoEXT(..)
+                                                           , IndirectExecutionSetShaderLayoutInfoEXT(..)
+                                                           , IndirectExecutionSetShaderInfoEXT(..)
+                                                           , IndirectExecutionSetCreateInfoEXT(..)
+                                                           , GeneratedCommandsInfoEXT(..)
+                                                           , WriteIndirectExecutionSetPipelineEXT(..)
+                                                           , WriteIndirectExecutionSetShaderEXT(..)
+                                                           , IndirectCommandsLayoutCreateInfoEXT(..)
+                                                           , IndirectCommandsLayoutTokenEXT(..)
+                                                           , DrawIndirectCountIndirectCommandEXT(..)
+                                                           , IndirectCommandsVertexBufferTokenEXT(..)
+                                                           , BindVertexBufferIndirectCommandEXT(..)
+                                                           , IndirectCommandsIndexBufferTokenEXT(..)
+                                                           , BindIndexBufferIndirectCommandEXT(..)
+                                                           , IndirectCommandsPushConstantTokenEXT(..)
+                                                           , IndirectCommandsExecutionSetTokenEXT(..)
+                                                           , IndirectExecutionSetInfoEXT(..)
+                                                           , IndirectCommandsTokenDataEXT(..)
+                                                           , IndirectCommandsLayoutUsageFlagsEXT
+                                                           , IndirectCommandsLayoutUsageFlagBitsEXT( INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_EXT
+                                                                                                   , INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_EXT
+                                                                                                   , ..
+                                                                                                   )
+                                                           , IndirectExecutionSetInfoTypeEXT( INDIRECT_EXECUTION_SET_INFO_TYPE_PIPELINES_EXT
+                                                                                            , INDIRECT_EXECUTION_SET_INFO_TYPE_SHADER_OBJECTS_EXT
+                                                                                            , ..
+                                                                                            )
+                                                           , IndirectCommandsInputModeFlagsEXT
+                                                           , IndirectCommandsInputModeFlagBitsEXT( INDIRECT_COMMANDS_INPUT_MODE_VULKAN_INDEX_BUFFER_EXT
+                                                                                                 , INDIRECT_COMMANDS_INPUT_MODE_DXGI_INDEX_BUFFER_EXT
+                                                                                                 , ..
+                                                                                                 )
+                                                           , IndirectCommandsTokenTypeEXT( INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT
+                                                                                         , INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT
+                                                                                         , INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT
+                                                                                         , INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_EXT
+                                                                                         , INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_EXT
+                                                                                         , INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_EXT
+                                                                                         , INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_EXT
+                                                                                         , INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_COUNT_EXT
+                                                                                         , INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_COUNT_EXT
+                                                                                         , INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_EXT
+                                                                                         , INDIRECT_COMMANDS_TOKEN_TYPE_TRACE_RAYS2_EXT
+                                                                                         , INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_EXT
+                                                                                         , INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_EXT
+                                                                                         , INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_NV_EXT
+                                                                                         , INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV_EXT
+                                                                                         , INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_DATA_SEQUENCE_INDEX_EXT
+                                                                                         , INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_DATA_EXT
+                                                                                         , ..
+                                                                                         )
+                                                           , EXT_DEVICE_GENERATED_COMMANDS_SPEC_VERSION
+                                                           , pattern EXT_DEVICE_GENERATED_COMMANDS_SPEC_VERSION
+                                                           , EXT_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME
+                                                           , pattern EXT_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME
+                                                           , IndirectCommandsLayoutEXT(..)
+                                                           , IndirectExecutionSetEXT(..)
+                                                           , ShaderEXT(..)
+                                                           , ShaderCreateFlagBitsEXT(..)
+                                                           , ShaderCreateFlagsEXT
+                                                           ) where
+
+import Data.Bits (Bits)
+import Data.Bits (FiniteBits)
+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 GHC.Show (showsPrec)
+import Numeric (showHex)
+import Control.Monad.Trans.Class (lift)
+import Control.Monad.Trans.Cont (evalContT)
+import Control.Monad.Trans.Cont (runContT)
+import Data.Vector (generateM)
+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 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 Data.Int (Int32)
+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.CStruct.Extends (pokeSomeCStruct)
+import Vulkan.NamedType ((:::))
+import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.Core10.FundamentalTypes (Bool32(..))
+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.Handles (DescriptorSetLayout)
+import Vulkan.Core10.Handles (Device)
+import Vulkan.Core10.Handles (Device(..))
+import Vulkan.Core10.Handles (Device(Device))
+import Vulkan.Core10.FundamentalTypes (DeviceAddress)
+import Vulkan.Dynamic (DeviceCmds(pVkCmdExecuteGeneratedCommandsEXT))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdPreprocessGeneratedCommandsEXT))
+import Vulkan.Dynamic (DeviceCmds(pVkCreateIndirectCommandsLayoutEXT))
+import Vulkan.Dynamic (DeviceCmds(pVkCreateIndirectExecutionSetEXT))
+import Vulkan.Dynamic (DeviceCmds(pVkDestroyIndirectCommandsLayoutEXT))
+import Vulkan.Dynamic (DeviceCmds(pVkDestroyIndirectExecutionSetEXT))
+import Vulkan.Dynamic (DeviceCmds(pVkGetGeneratedCommandsMemoryRequirementsEXT))
+import Vulkan.Dynamic (DeviceCmds(pVkUpdateIndirectExecutionSetPipelineEXT))
+import Vulkan.Dynamic (DeviceCmds(pVkUpdateIndirectExecutionSetShaderEXT))
+import Vulkan.Core10.FundamentalTypes (DeviceSize)
+import Vulkan.Core10.Handles (Device_T)
+import Vulkan.CStruct.Extends (Extends)
+import Vulkan.CStruct.Extends (Extendss)
+import Vulkan.CStruct.Extends (Extensible(..))
+import Vulkan.Core10.FundamentalTypes (Flags)
+import Vulkan.Core10.Enums.IndexType (IndexType)
+import Vulkan.Extensions.Handles (IndirectCommandsLayoutEXT)
+import Vulkan.Extensions.Handles (IndirectCommandsLayoutEXT(..))
+import Vulkan.Extensions.Handles (IndirectExecutionSetEXT)
+import Vulkan.Extensions.Handles (IndirectExecutionSetEXT(..))
+import Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2 (MemoryRequirements2)
+import Vulkan.CStruct.Extends (PeekChain)
+import Vulkan.CStruct.Extends (PeekChain(..))
+import Vulkan.Core10.Handles (Pipeline)
+import Vulkan.Core10.Handles (PipelineLayout)
+import {-# SOURCE #-} Vulkan.Core10.PipelineLayout (PipelineLayoutCreateInfo)
+import Vulkan.CStruct.Extends (PokeChain)
+import Vulkan.CStruct.Extends (PokeChain(..))
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_push_constant_bank (PushConstantBankInfoNV)
+import Vulkan.Core10.PipelineLayout (PushConstantRange)
+import Vulkan.Core10.Enums.Result (Result)
+import Vulkan.Core10.Enums.Result (Result(..))
+import Vulkan.Extensions.Handles (ShaderEXT)
+import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)
+import Vulkan.CStruct.Extends (SomeStruct)
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Exception (VulkanException(..))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_GENERATED_COMMANDS_PIPELINE_INFO_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_GENERATED_COMMANDS_SHADER_INFO_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_CREATE_INFO_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_INFO_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_SHADER_EXT))
+import Vulkan.Core10.Enums.Result (Result(SUCCESS))
+import Vulkan.Extensions.Handles (IndirectCommandsLayoutEXT(..))
+import Vulkan.Extensions.Handles (IndirectExecutionSetEXT(..))
+import Vulkan.Extensions.VK_EXT_shader_object (ShaderCreateFlagBitsEXT(..))
+import Vulkan.Extensions.VK_EXT_shader_object (ShaderCreateFlagsEXT)
+import Vulkan.Extensions.Handles (ShaderEXT(..))
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdExecuteGeneratedCommandsEXT
+  :: FunPtr (Ptr CommandBuffer_T -> Bool32 -> Ptr (SomeStruct GeneratedCommandsInfoEXT) -> IO ()) -> Ptr CommandBuffer_T -> Bool32 -> Ptr (SomeStruct GeneratedCommandsInfoEXT) -> IO ()
+
+-- | vkCmdExecuteGeneratedCommandsEXT - Generate and execute commands on the
+-- device
+--
+-- = Description
+--
+-- If the 'INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_EXT' flag
+-- was used to create the
+-- 'GeneratedCommandsInfoEXT'::@indirectCommandsLayout@ then the execution
+-- of sequences through this command /may/ use implementation-defined
+-- ordering which is not guaranteed to be coherent using the same input
+-- data. It does not affect the order of token processing within a
+-- sequence. This is the implied ordering with
+-- 'INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_EXT'.
+--
+-- After a call to 'cmdExecuteGeneratedCommandsEXT', command buffer state
+-- will become undefined according to the tokens executed. This table
+-- specifies the relationship between tokens used and state invalidation.
+--
+-- +-------------------------------------------------------------+------------------+
+-- | __Common Tokens__                                           | __States         |
+-- |                                                             | Invalidated__    |
+-- +=============================================================+==================+
+-- | 'INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT'            | Bound shaders    |
+-- |                                                             | and pipelines    |
+-- +-------------------------------------------------------------+------------------+
+-- | 'INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT'            | Push constant    |
+-- |                                                             | data             |
+-- +-------------------------------------------------------------+------------------+
+-- | 'INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT'           | Push constant    |
+-- |                                                             | data             |
+-- +-------------------------------------------------------------+------------------+
+-- | 'INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_DATA_EXT'                | Push data        |
+-- +-------------------------------------------------------------+------------------+
+-- | 'INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_DATA_SEQUENCE_INDEX_EXT' | Push data        |
+-- +-------------------------------------------------------------+------------------+
+-- | 'INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_EXT'             | Index buffer     |
+-- +-------------------------------------------------------------+------------------+
+-- | 'INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_EXT'            | Vertex buffer    |
+-- +-------------------------------------------------------------+------------------+
+--
+-- Indirect Execution State Invalidation
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-magFilter-04553# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
+--     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR',
+--     @reductionMode@ equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
+--     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-vkCmdExecuteGeneratedCommandsEXT-magFilter-09598# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
+--     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR' and
+--     @reductionMode@ equal to either
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
+--     or
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
+--     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_MINMAX_BIT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-mipmapMode-04770# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
+--     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR',
+--     @reductionMode@ equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
+--     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-vkCmdExecuteGeneratedCommandsEXT-mipmapMode-09599# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
+--     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'
+--     and @reductionMode@ equal to either
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
+--     or
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
+--     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_MINMAX_BIT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-unnormalizedCoordinates-09635#
+--     If a 'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the image view’s @levelCount@ and @layerCount@ /must/ be 1
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08609# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the image view’s @viewType@ /must/ be
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D' or
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08610# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the sampler /must/ not be used with any of the SPIR-V
+--     @OpImageSample*@ or @OpImageSparseSample*@ instructions with
+--     @ImplicitLod@, @Dref@ or @Proj@ in their name
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08611# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the sampler /must/ not be used with any of the SPIR-V
+--     @OpImageSample*@ or @OpImageSparseSample*@ instructions that
+--     includes a LOD bias or any offset values
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-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-vkCmdExecuteGeneratedCommandsEXT-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-vkCmdExecuteGeneratedCommandsEXT-None-07888# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'
+--     descriptor is accessed using atomic operations as a result of this
+--     command, then the storage texel buffer’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-buffer-view-format-features format features>
+--     /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-02692# If a
+--     'Vulkan.Core10.Handles.ImageView' is sampled with
+--     'Vulkan.Core10.Enums.Filter.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.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-02693# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_filter_cubic VK_EXT_filter_cubic>
+--     extension is not enabled and any 'Vulkan.Core10.Handles.ImageView'
+--     is sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as a
+--     result of this command, it /must/ not have a
+--     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' of
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE', or
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-filterCubic-02694# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with
+--     'Vulkan.Core10.Enums.Filter.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-vkCmdExecuteGeneratedCommandsEXT-filterCubicMinmax-02695# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with
+--     'Vulkan.Core10.Enums.Filter.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-vkCmdExecuteGeneratedCommandsEXT-cubicRangeClamp-09212# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-cubicRangeClamp cubicRangeClamp>
+--     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
+--     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
+--     a result of this command /must/ not have a
+--     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
+--     equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-reductionMode-09213# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with a
+--     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
+--     equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
+--     as a result of this command /must/ sample with
+--     'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-selectableCubicWeights-09214#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-selectableCubicWeights selectableCubicWeights>
+--     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
+--     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
+--     a result of this command /must/ have
+--     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.SamplerCubicWeightsCreateInfoQCOM'::@cubicWeights@
+--     equal to
+--     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-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-vkCmdExecuteGeneratedCommandsEXT-OpTypeImage-07027# For any
+--     'Vulkan.Core10.Handles.ImageView' being written as a storage image
+--     where the image format field of the @OpTypeImage@ is @Unknown@, the
+--     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_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-OpTypeImage-07028# For any
+--     'Vulkan.Core10.Handles.ImageView' being read as a storage image
+--     where the image format field of the @OpTypeImage@ is @Unknown@, the
+--     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_STORAGE_READ_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-OpTypeImage-07029# For any
+--     'Vulkan.Core10.Handles.BufferView' being written as a storage texel
+--     buffer where the image format field of the @OpTypeImage@ is
+--     @Unknown@, the view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
+--     /must/ contain
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-OpTypeImage-07030# Any
+--     'Vulkan.Core10.Handles.BufferView' being read as a storage texel
+--     buffer where the image format field of the @OpTypeImage@ is
+--     @Unknown@ then the view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
+--     /must/ contain
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08600# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
+--     was created with a pipeline layout and statically uses a set /n/, a
+--     descriptor set /must/ have been bound to /n/ at the same pipeline
+--     bind point, with layouts compatible for set /n/ with the layout(s)
+--     used to create the shader, as described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptors-compatibility ???>
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08601# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
+--     was created with a pipeline layout or specified push constant ranges
+--     and statically uses a push constant value, that value /must/ have
+--     been set for the same pipeline bind point, with push constant ranges
+--     that are
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptors-compatibility compatible>
+--     with the push constant range used to create the shader
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-10068# For each array of
+--     resources that is used by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
+--     the indices used to access members of the array /must/ be less than
+--     the descriptor count for the identified binding in the descriptor
+--     sets used by this command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08114# Descriptors in
+--     each bound descriptor set, specified via
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
+--     be valid if they are accessed as described by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
+--     by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
+--     point used by this command and the bound
+--     'Vulkan.Core10.Handles.Pipeline' was not created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-imageLayout-00344# If an
+--     image descriptor is accessed by a shader, the
+--     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' /must/ match the
+--     subresource accessible from the 'Vulkan.Core10.Handles.ImageView' 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>
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08115# If the
+--     descriptors used by the 'Vulkan.Core10.Handles.Pipeline' bound to
+--     the pipeline bind point were specified via
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', the
+--     bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     without
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08116# Descriptors in
+--     bound descriptor buffers, specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     /must/ be valid if they are dynamically used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
+--     was created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08604# Descriptors in
+--     bound descriptor buffers, specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     /must/ be valid if they are dynamically used by any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     to the pipeline bind point used by this command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08117# If the
+--     descriptors used by the 'Vulkan.Core10.Handles.Pipeline' bound to
+--     the pipeline bind point were specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08119# If a descriptor
+--     is dynamically used with a 'Vulkan.Core10.Handles.Pipeline' created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     the descriptor memory /must/ be resident
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08605# If a descriptor
+--     is dynamically used with a 'Vulkan.Extensions.Handles.ShaderEXT'
+--     created with a 'Vulkan.Core10.Handles.DescriptorSetLayout' that was
+--     created with
+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     the descriptor memory /must/ be resident
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08606# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject>
+--     feature is not enabled, a valid pipeline /must/ be bound to the
+--     pipeline bind point used by this command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08608# If a pipeline is
+--     bound to the pipeline bind point used by this command, there /must/
+--     not have been any calls to dynamic state setting commands for any
+--     state specified statically in the 'Vulkan.Core10.Handles.Pipeline'
+--     object bound to the pipeline bind point used by this command, since
+--     that pipeline was bound
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-uniformBuffers-06935# If any
+--     stage of the 'Vulkan.Core10.Handles.Pipeline' object bound to the
+--     pipeline bind point used by this command accesses a uniform buffer,
+--     and that stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @uniformBuffers@, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /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-vkCmdExecuteGeneratedCommandsEXT-None-08612# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, and any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     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-vkCmdExecuteGeneratedCommandsEXT-storageBuffers-06936# If any
+--     stage of the 'Vulkan.Core10.Handles.Pipeline' object bound to the
+--     pipeline bind point used by this command accesses a storage buffer,
+--     and that stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @storageBuffers@, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /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-vkCmdExecuteGeneratedCommandsEXT-None-08613# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, and any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     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-vkCmdExecuteGeneratedCommandsEXT-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
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shaders>
+--     /must/ not be a protected resource
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-viewType-07752# If a
+--     'Vulkan.Core10.Handles.ImageView' is accessed as a result of this
+--     command, then the image view’s @viewType@ /must/ match the @Dim@
+--     operand of the @OpTypeImage@ as described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-image-dimensions ???>
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-format-07753# If a
+--     'Vulkan.Core10.Handles.ImageView' or
+--     'Vulkan.Core10.Handles.BufferView' is accessed as a result of this
+--     command, then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-numericformat numeric type>
+--     of the view’s @format@ and the @Sampled@ @Type@ operand of the
+--     @OpTypeImage@ /must/ match
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-OpImageWrite-08795# If a
+--     'Vulkan.Core10.Handles.ImageView' created with a format other than
+--     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM' 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-vkCmdExecuteGeneratedCommandsEXT-OpImageWrite-08796# If a
+--     'Vulkan.Core10.Handles.ImageView' created with the format
+--     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM' is accessed using
+--     @OpImageWrite@ as a result of this command, then the @Type@ of the
+--     @Texel@ operand of that instruction /must/ have four components
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-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-vkCmdExecuteGeneratedCommandsEXT-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-vkCmdExecuteGeneratedCommandsEXT-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-vkCmdExecuteGeneratedCommandsEXT-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-vkCmdExecuteGeneratedCommandsEXT-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-vkCmdExecuteGeneratedCommandsEXT-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-vkCmdExecuteGeneratedCommandsEXT-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-vkCmdExecuteGeneratedCommandsEXT-OpImageSampleWeightedQCOM-06971#
+--     If @OpImageSampleWeightedQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-OpImageSampleWeightedQCOM-06972#
+--     If @OpImageSampleWeightedQCOM@ uses a
+--     'Vulkan.Core10.Handles.ImageView' as a sample weight image 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-OpImageBoxFilterQCOM-06973#
+--     If @OpImageBoxFilterQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-OpImageBlockMatchSSDQCOM-06974#
+--     If @OpImageBlockMatchSSDQCOM@ is used to read from an
+--     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
+--     or
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_SXD_BIT_QCOM'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-OpImageBlockMatchSADQCOM-12420#
+--     If @OpImageBlockMatchSADQCOM@ is used to read from an
+--     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
+--     or
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_SXD_BIT_QCOM'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-OpImageBlockMatchSADQCOM-06976#
+--     If @OpImageBlockMatchSADQCOM@ or OpImageBlockMatchSSDQCOM is used to
+--     read from a reference image as result of this command, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-blockMatchExtendedClampToEdge blockMatchExtendedClampToEdge>
+--     feature is not enabled or the /input/ sampler was not created with
+--     both @addressModeU@ and @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--     then the specified reference coordinates /must/ not fail
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-OpImageSampleWeightedQCOM-06977#
+--     If @OpImageSampleWeightedQCOM@, @OpImageBoxFilterQCOM@,
+--     @OpImageBlockMatchWindowSSDQCOM@, @OpImageBlockMatchWindowSADQCOM@,
+--     @OpImageBlockMatchGatherSSDQCOM@, @OpImageBlockMatchGatherSADQCOM@,
+--     @OpImageBlockMatchSSDQCOM@, or @OpImageBlockMatchSADQCOM@ uses a
+--     'Vulkan.Core10.Handles.Sampler' as a result of this command, then
+--     the sampler /must/ have been created with
+--     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-OpImageSampleWeightedQCOM-06978#
+--     If any command other than @OpImageSampleWeightedQCOM@,
+--     @OpImageBoxFilterQCOM@, @OpImageBlockMatchWindowSSDQCOM@,
+--     @OpImageBlockMatchWindowSADQCOM@, @OpImageBlockMatchGatherSSDQCOM@,
+--     @OpImageBlockMatchGatherSADQCOM@, @OpImageBlockMatchSSDQCOM@, or
+--     @OpImageBlockMatchSADQCOM@ uses a 'Vulkan.Core10.Handles.Sampler' as
+--     a result of this command, then the sampler /must/ not have been
+--     created with
+--     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-OpImageBlockMatchWindow-09215#
+--     If a @OpImageBlockMatchWindow*QCOM@ or
+--     @OpImageBlockMatchGather*QCOM@ instruction is used to read from an
+--     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-OpImageBlockMatchWindow-09216#
+--     If a @OpImageBlockMatchWindow*QCOM@ or
+--     @OpImageBlockMatchGather*QCOM@ instruction is used to read from an
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the image view’s format /must/ be a single-component format
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-OpImageBlockMatchWindow-09217#
+--     If a @OpImageBlockMatchWindow*QCOM@ or
+--     @OpImageBlockMatchGather*QCOM@ read from a reference image as result
+--     of this command, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-blockMatchExtendedClampToEdge blockMatchExtendedClampToEdge>
+--     feature is not enabled or the /input/ sampler was not created with
+--     both @addressModeU@ and @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--     then the specified reference coordinates /must/ not fail
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-OpImageBlockMatchWindow-12421#
+--     If a @OpImageBlockMatchWindow*QCOM@ or
+--     @OpImageBlockMatchGather*QCOM@ instruction uses a
+--     'Vulkan.Core10.Handles.Sampler' as a result of this command, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-blockMatchExtendedClampToEdge blockMatchExtendedClampToEdge>
+--     is not enabled, the /input/ sampler /must/ not have been created
+--     with either @addressModeU@ or @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-addressModeU-12422# If a
+--     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     instruction uses a 'Vulkan.Core10.Handles.Sampler' as a result of
+--     this command, and the /input/ sampler was created with either
+--     @addressModeU@ or @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE',
+--     then the sampler /must/ have been created with both @addressModeU@
+--     and @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07288# Any shader
+--     invocation executed by this command /must/
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-termination terminate>
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-09600# If a descriptor
+--     with type equal to any of
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',
+--     or
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'
+--     is accessed as a result of this command, all image subresources
+--     identified by that descriptor /must/ be in the image layout
+--     identified when the descriptor was written
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-micromap-11636# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command through an
+--     @OpRayQueryProceedKHR@ operation , the @VK_EXT_opacity_micromap@
+--     extension is not enabled, and the acceleration structure is built
+--     using geometry with a
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapKHR'
+--     structure included in its @pNext@ chain, the shader /must/ have
+--     specified a @OpacityMicromapIdKHR@ execution mode with its
+--     specialization constant operand equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-micromap-11637# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command and the
+--     acceleration structure was constructed through deserialization, all
+--     micromap arrays referenced by the acceleration structure that were
+--     not replaced by an acceleration structure update command /must/ have
+--     been deserialized using the serialized data of the corresponding
+--     micromaps used to originally build the acceleration structure prior
+--     to the execution of this command on the device
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-micromap-11638# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command and the
+--     acceleration structure is built using geometry with an @indexBuffer@
+--     containing both
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.OpacityMicromapSpecialIndexKHR'
+--     values and indices into an associated micromap array, any
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command /must/ not have been created with @flags@ that
+--     includes
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_KHR'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-micromap-11639# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command and the
+--     acceleration structure is built using geometry with an @indexBuffer@
+--     containing both
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.OpacityMicromapSpecialIndexKHR'
+--     values and indices into an associated micromap array, any
+--     'Vulkan.Extensions.Handles.ShaderEXT' that accessed the descriptor
+--     /must/ not have been created with @flags@ that includes
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_EXT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-commandBuffer-10746# The
+--     'Vulkan.Core10.Handles.DeviceMemory' object allocated from a
+--     'Vulkan.Core10.DeviceInitialization.MemoryHeap' with the
+--     'Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_TILE_MEMORY_BIT_QCOM'
+--     property that is bound to a resource accessed as a result of this
+--     command /must/ be the active
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-bind-tile-memory bound tile memory object>
+--     in @commandBuffer@
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-10678# If this command
+--     is recorded inside a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-tile-shading tile shading render pass>
+--     instance, the stages corresponding to the pipeline bind point used
+--     by this command /must/ only include
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT',
+--     and\/or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-10679# If this command
+--     is recorded where
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model>
+--     is enabled, there /must/ be no access to any image while the image
+--     was be transitioned to the
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
+--     layout
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-pDescription-09900# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the
+--     underlying 'Vulkan.Extensions.Handles.TensorARM' object /must/ have
+--     been created with the
+--     'Vulkan.Extensions.VK_ARM_tensors.TENSOR_USAGE_SHADER_BIT_ARM' usage
+--     flag set
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-dimensionCount-09905# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the @Rank@
+--     of the @OpTypeTensorARM@ of the tensor resource variable /must/ be
+--     equal to the @dimensionCount@ provided via
+--     'Vulkan.Extensions.VK_ARM_tensors.TensorCreateInfoARM'::@pDescription@
+--     when creating the underlying 'Vulkan.Extensions.Handles.TensorARM'
+--     object
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-OpTypeTensorARM-09906# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the element
+--     type of the @OpTypeTensorARM@ of the tensor resource variable /must/
+--     be
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-tensor-formats compatible>
+--     with the 'Vulkan.Core10.Enums.Format.Format' of the
+--     'Vulkan.Extensions.Handles.TensorViewARM' used for the access
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-11297# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses a @OpTypeStruct@ decorated with @Block@ or
+--     @BufferBlock@ using that mapping, the calculated offset for the
+--     resource heap /must/ be a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-bufferDescriptorAlignment bufferDescriptorAlignment>
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-11298# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses an @OpTypeImage@ or @OpTypeSampledImage@ using
+--     that mapping, the calculated offset for the resource heap /must/ be
+--     a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-imageDescriptorAlignment imageDescriptorAlignment>
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-11299# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses an @OpTypeSampler@ or @OpTypeSampledImage@
+--     using that mapping, the calculated offset for the sampler heap
+--     /must/ be a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-samplerDescriptorAlignment samplerDescriptorAlignment>
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-11397# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses an @OpTypeTensorARM@ using that mapping, the
+--     calculated offset for the resource heap /must/ be a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-tensorDescriptorAlignment tensorDescriptorAlignment>
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-11300# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a
+--     multiple of 4
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-11301# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' backed by physical
+--     memory at every offset specified by each mapping
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-11302# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-11304# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a
+--     multiple of 8
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-11305# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' backed by physical
+--     memory at every offset specified by each mapping
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-11306# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address pointed to by the address in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-11308# For each
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps descriptor heap>
+--     that is statically used by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
+--     either directly or via a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>,
+--     a valid descriptor heap /must/ be bound
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-11309# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     was created as a 'Vulkan.Extensions.Handles.ShaderEXT' with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag or as part of a pipeline with the
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag, execution of this command /must/ not result in any descriptor
+--     read accessing data outside of the user range of the respective heap
+--     bound by @vkCmdBind*HeapEXT@ commands
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-11372# If any stage of
+--     the 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline
+--     bind point used by this command accesses a uniform buffer or uniform
+--     texel buffer through a descriptor in the bound resource heap, that
+--     stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @uniformBuffers@, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /must/ not access values outside
+--     of the range of the descriptor specified via
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+--     when the descriptor was written
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-11373# If any stage of
+--     the 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline
+--     bind point used by this command accesses a storage buffer or storage
+--     texel buffer through a descriptor in the bound resource heap, that
+--     stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @storageBuffers@, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /must/ not access values outside
+--     of the range of the descriptor specified by
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+--     when the descriptor was written
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-11374# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, and any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     to the pipeline bind point used by this command accesses a uniform
+--     buffer, uniform texel buffer, storage buffer, or storage texel
+--     buffer, that shader /must/ not access values outside of the range of
+--     the buffer as specified by
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+--     when the descriptor was written
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-pBindInfo-11375# If any
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     uses an embedded sampler via a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>,
+--     the value of @pBindInfo->reservedRangeSize@ set for
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.cmdBindSamplerHeapEXT'
+--     /must/ be greater than or equal to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minSamplerHeapReservedRangeWithEmbedded minSamplerHeapReservedRangeWithEmbedded>
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-11376# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     was created as a 'Vulkan.Extensions.Handles.ShaderEXT' with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag or as part of a pipeline with the
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag, and that shader statically uses a push constant value, that
+--     value /must/ have been set by
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.cmdPushDataEXT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-11398# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_DATA_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_DATA_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_RESOURCE_HEAP_DATA_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the access
+--     /must/ not be
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-execution-memory-access-bounds out of bounds>
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-11437# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the buffer from
+--     which the address in push data was queried /must/ have been created
+--     with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-11438# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a uniform buffer using that mapping, the
+--     address that the uniform buffer is mapped to /must/ have been
+--     queried from a buffer created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-11441# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a uniform buffer using that mapping, the
+--     address that the uniform buffer is mapped to /must/ be aligned to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minUniformBufferOffsetAlignment minUniformBufferOffsetAlignment>
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-11439# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a storage buffer using that mapping, the
+--     address that the storage buffer is mapped to /must/ have been
+--     queried from a buffer created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_STORAGE_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-11442# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a storage buffer using that mapping, the
+--     address that the storage buffer is mapped to /must/ be aligned to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minStorageBufferOffsetAlignment minStorageBufferOffsetAlignment>
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-11485# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses an acceleration structure using that mapping,
+--     the address that the acceleration structure is mapped to /must/ be
+--     an acceleration structure address retrieved from a
+--     'Vulkan.Extensions.Handles.AccelerationStructureKHR' object via
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.getAccelerationStructureDeviceAddressKHR'
+--     or handle retrieved from a
+--     'Vulkan.Extensions.Handles.AccelerationStructureNV' object via
+--     'Vulkan.Extensions.VK_NV_ray_tracing.getAccelerationStructureHandleNV'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-index-11450# If a shader uses
+--     a sampler descriptor to sample an image as a result of this command,
+--     and that sampler descriptor uses a custom border color with an index
+--     defined by
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.SamplerCustomBorderColorIndexCreateInfoEXT',
+--     the value of
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.SamplerCustomBorderColorIndexCreateInfoEXT'::@index@
+--     /must/ have been registered before this command was recorded, and
+--     still be registered during the sampling operation, with an
+--     identically defined color
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-protectedNoFault-11455# If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, a pipeline is bound to the pipeline bind point
+--     used by this command, or a shader is bound to a shader stage used by
+--     this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     the address that the resource is mapped to /must/ have been queried
+--     from a buffer created without the
+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT'
+--     create flag set
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-protectedNoFault-11456# If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, a pipeline is bound to the pipeline bind point
+--     used by this command, or a shader is bound to a shader stage used by
+--     this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     the address of the indirect memory /must/ have been queried from a
+--     buffer created without the
+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT'
+--     create flag set
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-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.GraphicsPipeline.GraphicsPipelineCreateInfo'
+--     structure specified when creating the
+--     'Vulkan.Core10.Handles.Pipeline' bound to
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-subpass-02685# The subpass
+--     index of the current render pass /must/ be equal to the @subpass@
+--     member of the
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'
+--     structure specified when creating the
+--     'Vulkan.Core10.Handles.Pipeline' bound to
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-OpTypeImage-07468# If any
+--     shader executed by this pipeline accesses an @OpTypeImage@ variable
+--     with a @Dim@ operand of @SubpassData@, it /must/ be decorated with
+--     an @InputAttachmentIndex@ that corresponds to a valid input
+--     attachment in the current subpass
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07469# Input attachment
+--     views accessed in a subpass /must/ be created with the same
+--     'Vulkan.Core10.Enums.Format.Format' as the corresponding subpass
+--     definition, and be created with a 'Vulkan.Core10.Handles.ImageView'
+--     that is compatible with the attachment referenced by the subpass\'
+--     @pInputAttachments@[@InputAttachmentIndex@] in the bound
+--     'Vulkan.Core10.Handles.Framebuffer' as specified by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#compatibility-inputattachment Fragment Input Attachment Compatibility>
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-pDepthInputAttachmentIndex-09595#
+--     Input attachment views accessed in a dynamic render pass with a
+--     @InputAttachmentIndex@ referenced by
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo',
+--     or no @InputAttachmentIndex@ if
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pDepthInputAttachmentIndex@
+--     or
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pStencilInputAttachmentIndex@
+--     are @NULL@, /must/ be created with a
+--     'Vulkan.Core10.Handles.ImageView' that is compatible with the
+--     corresponding color, depth, or stencil attachment in
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-pDepthInputAttachmentIndex-09596#
+--     Input attachment views accessed in a dynamic render pass via a
+--     shader object /must/ have an @InputAttachmentIndex@ if both
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pDepthInputAttachmentIndex@
+--     and
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pStencilInputAttachmentIndex@
+--     are non-@NULL@
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-InputAttachmentIndex-09597#
+--     If an input attachment view accessed in a dynamic render pass via a
+--     shader object has an @InputAttachmentIndex@, the
+--     @InputAttachmentIndex@ /must/ match an index in
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-06537# Memory backing
+--     image subresources used as attachments in the current render pass
+--     /must/ not be written in any way other than as an attachment by this
+--     command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-10795# If a color
+--     attachment is written by any prior command in this subpass or by the
+--     load, store, or resolve operations for this subpass, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT' on
+--     that attachment, it /must/ not be accessed in any way other than as
+--     an attachment by this command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-10796# If a depth
+--     attachment is written by any prior command in this subpass or by the
+--     load, store, or resolve operations for this subpass, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' on
+--     that attachment, it /must/ not be accessed in any way other than as
+--     an attachment by this command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-10797# If a stencil
+--     attachment is written by any prior command in this subpass or by the
+--     load, store, or resolve operations for this subpass, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
+--     on that attachment, it /must/ not be accessed in any way other than
+--     as an attachment by this command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-12338# If a color
+--     attachment is read in this command in any way other than as an
+--     attachment, or has been read by any prior command in this subpass as
+--     a non-attachment, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT' on
+--     that attachment, the color attachment /must/ not be written to by
+--     this command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-12339# If a depth
+--     attachment is read in this command in any way other than as an
+--     attachment, or has been read by any prior command in this subpass as
+--     a non-attachment, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' on
+--     that attachment, the depth attachment /must/ not be written to by
+--     this command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-12340# If a stencil
+--     attachment is read in this command in any way other than as an
+--     attachment, or has been read by any prior command in this subpass as
+--     a non-attachment, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
+--     on that attachment, the stencil attachment /must/ not be written to
+--     by this command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-09003# If an attachment
+--     is written by any prior command in this subpass or by the load,
+--     store, or resolve operations for this subpass, it /must/ not be
+--     accessed in any way other than as an attachment, storage image, or
+--     sampled image by this command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-06886# If the current
+--     render pass instance uses a depth\/stencil attachment with a
+--     read-only layout for the depth aspect,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-depth-write depth writes>
+--     /must/ be disabled
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-06887# If the current
+--     render pass instance uses a depth\/stencil attachment with a
+--     read-only layout for the stencil aspect, both front and back
+--     @writeMask@ are not zero, and stencil test is enabled,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-stencil all stencil ops>
+--     /must/ be 'Vulkan.Core10.Enums.StencilOp.STENCIL_OP_KEEP'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07831# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT' dynamic
+--     state enabled then
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetViewport' /must/ have
+--     been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07832# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR' dynamic
+--     state enabled then
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetScissor' /must/ have been
+--     called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08617# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_WIDTH' dynamic
+--     state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line topology class, then
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth' /must/ have
+--     been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07834# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS' dynamic
+--     state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @depthBiasEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBias' or
+--     'Vulkan.Extensions.VK_EXT_depth_bias_control.cmdSetDepthBias2EXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07835# If a shader
+--     object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_BLEND_CONSTANTS'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and an active color
+--     attachment
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @blendEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE' with a
+--     blend equations where any
+--     'Vulkan.Core10.Enums.BlendFactor.BlendFactor' member is
+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_COLOR',
+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR',
+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_ALPHA', or
+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA',
+--     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetBlendConstants'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07836# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @depthBoundsTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBounds' /must/
+--     have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07837# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_COMPARE_MASK'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilCompareMask'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07838# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_WRITE_MASK'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilWriteMask'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07839# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_REFERENCE'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of and @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilReference'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-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-vkCmdExecuteGeneratedCommandsEXT-sampleLocationsEnable-02689#
+--     If the bound graphics pipeline was created with
+--     'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@
+--     set to 'Vulkan.Core10.FundamentalTypes.TRUE', then the active depth
+--     attachment /must/ have been created with the
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'
+--     bit set
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07634# If the
+--     @VK_EXT_sample_locations@ extension is enabled, a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-06666# If the
+--     @VK_EXT_sample_locations@ extension is enabled, a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07840# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CULL_MODE' dynamic
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetCullMode'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07841# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRONT_FACE' dynamic
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetFrontFace'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07843# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_TEST_ENABLE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE',
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthTestEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07844# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @depthTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthWriteEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07845# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_COMPARE_OP'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @depthTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthCompareOp'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07846# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthBounds depthBounds>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthBoundsTestEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07847# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_TEST_ENABLE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilTestEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07848# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_OP' dynamic
+--     state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilOp'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-viewportCount-03417# If a
+--     shader object is bound to any graphics stage or a graphics pipeline
+--     is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
+--     dynamic state enabled, and the state is not inherited, then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-scissorCount-03418# If a
+--     shader object is bound to any graphics stage or a graphics pipeline
+--     is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
+--     dynamic state enabled, and the state is not inherited, then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-viewportCount-03419# If a
+--     shader object is bound to any graphics stage or a graphics pipeline
+--     is bound which 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, and the state is not inherited, then 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-vkCmdExecuteGeneratedCommandsEXT-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-vkCmdExecuteGeneratedCommandsEXT-viewportCount-04138# If the
+--     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which 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 state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @viewportWScalingEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.cmdSetViewportWScalingNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08636# If the
+--     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which 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 state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @viewportWScalingEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', 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-vkCmdExecuteGeneratedCommandsEXT-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-vkCmdExecuteGeneratedCommandsEXT-shadingRateImage-09233# If
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV'
+--     and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetCoarseSampleOrderNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-shadingRateImage-09234# If
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which 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 state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @shadingRateImageEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetViewportShadingRatePaletteNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08637# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which 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 state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @shadingRateImageEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', 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-vkCmdExecuteGeneratedCommandsEXT-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
+--     'Vulkan.Core10.GraphicsPipeline.PipelineViewportStateCreateInfo',
+--     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-vkCmdExecuteGeneratedCommandsEXT-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
+--     'Vulkan.Core10.GraphicsPipeline.PipelineViewportStateCreateInfo',
+--     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-vkCmdExecuteGeneratedCommandsEXT-None-07878# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-exclusiveScissor exclusiveScissor>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07879# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-exclusiveScissor exclusiveScissor>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV'
+--     dynamic state enabled, and the most recent call to
+--     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorEnableNV'
+--     in the current command buffer set any element of
+--     @pExclusiveScissorEnables@ to 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then
+--     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-04876# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which 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 and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-04877# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-logicOp-04878# If a shader
+--     object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @logicOpEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetLogicOpEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-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-vkCmdExecuteGeneratedCommandsEXT-primitiveFragmentShadingRateWithMultipleViewports-08642#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
+--     limit is not supported, and any shader object bound to a graphics
+--     stage writes 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-vkCmdExecuteGeneratedCommandsEXT-blendEnable-04727# If a
+--     shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then for each color
+--     attachment, 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 corresponding
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @blendEnable@ /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08644# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and none of the following is
+--     enabled:
+--
+--     -   the @VK_AMD_mixed_attachment_samples@ extension
+--
+--     -   the @VK_NV_framebuffer_mixed_samples@ extension
+--
+--     -   the
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
+--         feature
+--
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizationSamples@ /must/ be the same as the current color
+--     and\/or depth\/stencil attachments
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08876# If a shader
+--     object is bound to any graphics stage, the current render pass
+--     instance /must/ have been begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-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-vkCmdExecuteGeneratedCommandsEXT-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-vkCmdExecuteGeneratedCommandsEXT-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-vkCmdExecuteGeneratedCommandsEXT-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-vkCmdExecuteGeneratedCommandsEXT-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-vkCmdExecuteGeneratedCommandsEXT-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-vkCmdExecuteGeneratedCommandsEXT-viewMask-06178# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the 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-vkCmdExecuteGeneratedCommandsEXT-colorAttachmentCount-06179#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled and the current render pass instance was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the 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-vkCmdExecuteGeneratedCommandsEXT-dynamicRenderingUnusedAttachments-08910#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and 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 an @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 bound graphics pipeline
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-dynamicRenderingUnusedAttachments-08912#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and 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 an @imageView@ equal to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have the
+--     corresponding element of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
+--     used to create the bound pipeline equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-dynamicRenderingUnusedAttachments-08911#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled, and 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 an @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 bound graphics pipeline, or the corresponding
+--     element of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@,
+--     if it exists, /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-colorAttachmentCount-09362#
+--     If 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@
+--     equal to @1@, there is no shader object bound to any graphics stage,
+--     and a color attachment with a resolve mode of
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID',
+--     each element of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
+--     array with a @resolveImageView@ not equal to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
+--     with an image created with a
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value equal to the
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value used to create the bound graphics pipeline
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-09363# If there is no
+--     shader object bound to any graphics stage, the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and a
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
+--     equal to @1@, and a color attachment with a resolve mode of
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID',
+--     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 an image created with a
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value equal to the
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value used to create the bound graphics pipeline
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-09364# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there is no shader object bound to any graphics stage, and the bound
+--     graphics pipeline was created with a non-zero
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value and with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
+--     /must/ have set the blend enable to
+--     'Vulkan.Core10.FundamentalTypes.FALSE' prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-09365# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there is no shader object bound to any graphics stage, and the bound
+--     graphics pipeline was created with a non-zero
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value and with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     /must/ have set @rasterizationSamples@ to
+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' prior
+--     to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-09366# If there is a
+--     shader object bound to any graphics stage, and the current render
+--     pass includes a color attachment that uses the
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID'
+--     resolve mode, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
+--     /must/ have set blend enable to
+--     'Vulkan.Core10.FundamentalTypes.FALSE' prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-rasterizationSamples-09367#
+--     If there is a shader object bound to any graphics stage, and the
+--     current render pass includes a color attachment that uses the
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID'
+--     resolve mode, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     /must/ have set @rasterizationSamples@ to
+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' prior
+--     to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-09368# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there is no shader object bound to any graphics stage, and the bound
+--     graphics pipeline was created with a non-zero
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value and with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     /must/ have set @pFragmentSize->width@ to @1@ prior to this drawing
+--     command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-09369# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there is no shader object bound to any graphics stage, and the bound
+--     graphics pipeline was created with a non-zero
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value and with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     /must/ have set @pFragmentSize->height@ to @1@ prior to this drawing
+--     command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-pFragmentSize-09370# If there
+--     is a shader object bound to any graphics stage, and the current
+--     render pass includes a color attachment that uses the
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID'
+--     resolve mode, then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     /must/ have set @pFragmentSize->width@ to @1@ prior to this drawing
+--     command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-pFragmentSize-09371# If there
+--     is a shader object bound to any graphics stage, and the current
+--     render pass includes a color attachment that uses the
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID'
+--     resolve mode, then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     /must/ have set @pFragmentSize->height@ to @1@ prior to this drawing
+--     command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07749# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
+--     feature is enabled, a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-attachmentCount-07750# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
+--     feature is enabled, a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then the @attachmentCount@
+--     parameter of most recent call to
+--     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
+--     in the current command buffer /must/ be greater than or equal to the
+--     number of active color attachments
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07751# If the
+--     @VK_EXT_discard_rectangles@ extension is enabled, a graphics
+--     pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_EXT'
+--     dynamic state enabled and the @pNext@ chain of
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo' included
+--     a
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'
+--     structure, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @discardRectangleEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command for each
+--     discard rectangle in
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'::@discardRectangleCount@
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-rasterizerDiscardEnable-09236#
+--     If the @VK_EXT_discard_rectangles@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_EXT'
+--     dynamic state enabled and the @pNext@ chain of
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo' did not
+--     include a
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'
+--     structure, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @discardRectangleEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command for each
+--     discard rectangle in
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.PhysicalDeviceDiscardRectanglePropertiesEXT'::@maxDiscardRectangles@
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07880# If the
+--     @VK_EXT_discard_rectangles@ extension is enabled, a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07881# If the
+--     @VK_EXT_discard_rectangles@ extension is enabled, a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @discardRectangleEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleModeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-dynamicRenderingUnusedAttachments-08913#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
+--     used to create the bound graphics pipeline /must/ be equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-dynamicRenderingUnusedAttachments-08914#
+--     If current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->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 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->imageView@
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-dynamicRenderingUnusedAttachments-08915#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
+--     used to create the bound graphics pipeline was not equal to the
+--     'Vulkan.Core10.Enums.Format.Format' used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@,
+--     the value of the format /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-dynamicRenderingUnusedAttachments-08916#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
+--     used to create the bound graphics pipeline /must/ be equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-dynamicRenderingUnusedAttachments-08917#
+--     If current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->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 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->imageView@
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-dynamicRenderingUnusedAttachments-08918#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
+--     used to create the bound graphics pipeline was not equal to the
+--     'Vulkan.Core10.Enums.Format.Format' used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@,
+--     the value of the format /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-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_fragment_shading_rate.RenderingFragmentShadingRateAttachmentInfoKHR'::@imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the bound graphics
+--     pipeline /must/ have been created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-dynamicRenderingLocalRead-11797#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingLocalRead dynamicRenderingLocalRead>
+--     feature is enabled, the
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_LOCAL_READ_CONCURRENT_ACCESS_CONTROL_BIT_KHR'
+--     flag is specified, and an attachment is being used as a feedback
+--     loop as specified by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#rendering-attachment-input-attachment-feedback >,
+--     'Vulkan.Extensions.VK_KHR_maintenance10.RenderingAttachmentFlagsInfoKHR'::@flags@
+--     for that attachment /must/ include
+--     'Vulkan.Extensions.VK_KHR_maintenance10.RENDERING_ATTACHMENT_INPUT_ATTACHMENT_FEEDBACK_BIT_KHR'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-imageView-06184# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and
+--     'Vulkan.Extensions.VK_EXT_fragment_density_map.RenderingFragmentDensityMapAttachmentInfoEXT'::@imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the bound graphics
+--     pipeline /must/ have been created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-layers-10831# If the current
+--     render pass instance was created with
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE'
+--     or
+--     'Vulkan.Core10.Enums.RenderPassCreateFlagBits.RENDER_PASS_CREATE_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE',
+--     and the bound graphics pipeline was created with
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE',
+--     then the current render pass instance /must/ have a @layers@ value
+--     less than or equal to
+--     'Vulkan.Extensions.VK_VALVE_fragment_density_map_layered.PipelineFragmentDensityMapLayeredCreateInfoVALVE'::@maxFragmentDensityMapLayers@
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-colorAttachmentCount-06185#
+--     If the bound pipeline was created with a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.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_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     used to create the bound graphics pipeline
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-pDepthAttachment-06186# If
+--     the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the bound pipeline was created with a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     structure, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
+--     @depthStencilAttachmentSamples@ member of
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     used to create the bound graphics pipeline /must/ be equal to the
+--     sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-pStencilAttachment-06187# If
+--     the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the bound pipeline was created with a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     structure, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
+--     @depthStencilAttachmentSamples@ member of
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     used to create the bound graphics pipeline /must/ be equal to the
+--     sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-multisampledRenderToSingleSampled-07285#
+--     If the bound pipeline was created without a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     structure, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
+--     feature is not enabled, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, 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 @rasterizationSamples@ for
+--     the bound graphics pipeline
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-multisampledRenderToSingleSampled-07286#
+--     If the bound pipeline was created without a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     structure, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
+--     feature is not enabled, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     @rasterizationSamples@ for the bound graphics pipeline /must/ be
+--     equal to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-multisampledRenderToSingleSampled-07287#
+--     If the bound pipeline was created without a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     structure, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
+--     feature is not enabled, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     @rasterizationSamples@ for the bound graphics pipeline /must/ be
+--     equal to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-pNext-07935# If this command
+--     is called inside a render pass instance started with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     and the @pNext@ chain of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'
+--     includes a
+--     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'
+--     structure with @multisampledRenderToSingleSampledEnable@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then the value of
+--     @rasterizationSamples@ for the bound graphics pipeline /must/ be
+--     equal to
+--     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'::@rasterizationSamples@
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-renderPass-06198# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the bound pipeline /must/ have been created with a
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'::@renderPass@
+--     equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-pColorAttachments-08963# If
+--     the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, there is a
+--     graphics pipeline bound with a fragment shader that statically
+--     writes to a color attachment, the color write mask is not zero,
+--     color writes are enabled, and the corresponding element of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     corresponding element of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-pColorAttachments-11539# If
+--     the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, there is a graphics
+--     pipeline bound with a fragment shader that statically writes to a
+--     color attachment, the color write mask is not zero, color writes are
+--     enabled, and the corresponding element of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     corresponding element of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-pDepthAttachment-08964# If
+--     the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, there is a
+--     graphics pipeline bound, depth test is enabled, and the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-pDepthAttachment-11540# If
+--     the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, there is a graphics
+--     pipeline bound, depth test is enabled, and the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-pStencilAttachment-08965# If
+--     the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, there is a
+--     graphics pipeline bound, stencil test is enabled and the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-pStencilAttachment-11860# If
+--     the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, there is a graphics
+--     pipeline bound, stencil test is enabled and the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-flags-10582# If the current
+--     render pass instance was begun with a
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     call in @commandBuffer@, its
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@flags@
+--     parameter /must/ not have
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT'
+--     set unless
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_CONTENTS_INLINE_BIT_KHR'
+--     is also set
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-primitivesGeneratedQueryWithRasterizerDiscard-06708#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithRasterizerDiscard primitivesGeneratedQueryWithRasterizerDiscard>
+--     feature is not enabled and the
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
+--     query is active,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-discard rasterization discard>
+--     /must/ not be enabled
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-primitivesGeneratedQueryWithNonZeroStreams-06709#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>
+--     feature is not enabled and the
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
+--     query is active, the bound graphics pipeline /must/ not have been
+--     created with a non-zero value in
+--     'Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT'::@rasterizationStream@
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07620# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClamp depthClamp>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClampEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07621# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_POLYGON_MODE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07622# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07623# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-alphaToCoverageEnable-08919#
+--     If the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT'
+--     dynamic state enabled, and @alphaToCoverageEnable@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-fragmentoutput Fragment Output Interface>
+--     /must/ contain a variable for the alpha @Component@ word in
+--     @Location@ 0 at @Index@ 0
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-alphaToCoverageEnable-08920#
+--     If a shader object is bound to any graphics stage, and the most
+--     recent call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT'
+--     in the current command buffer set @alphaToCoverageEnable@ to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-fragmentoutput Fragment Output Interface>
+--     /must/ contain a variable for the alpha @Component@ word in
+--     @Location@ 0 at @Index@ 0
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07624# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07625# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-alphaToOne alphaToOne>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToOneEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07626# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-logicOp logicOp>
+--     feature is enabled, a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLogicOpEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07627# If a shader
+--     object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and there are color
+--     attachments bound, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07629# If a shader
+--     object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and there are color
+--     attachments bound, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07630# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryStreams geometryStreams>
+--     feature is enabled, and a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
+--     stage or a graphics pipeline is bound which was created with both a
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
+--     stage and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_STREAM_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationStreamEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07631# If the
+--     @VK_EXT_conservative_rasterization@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetConservativeRasterizationModeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07632# If the
+--     @VK_EXT_conservative_rasterization@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @conservativeRasterizationMode@ is
+--     'Vulkan.Extensions.VK_EXT_conservative_rasterization.CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT',
+--     then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetExtraPrimitiveOverestimationSizeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-conservativePointAndLineRasterization-07499#
+--     If the @VK_EXT_conservative_rasterization@ extension is enabled,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-conservativePointAndLineRasterization conservativePointAndLineRasterization>
+--     is not supported, a shader object is bound to any graphics stage or
+--     a graphics pipeline is bound, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line or point topology class, then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @conservativeRasterizationMode@ /must/ be
+--     'Vulkan.Extensions.VK_EXT_conservative_rasterization.CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07633# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClipEnable depthClipEnable>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT'
+--     dynamic state, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07636# If the
+--     @VK_EXT_provoking_vertex@ extension is enabled, a shader object is
+--     bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetProvokingVertexModeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08666# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
+--     features are enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line topology class, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08669# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
+--     features are enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line topology class, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07849# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
+--     features are enabled and a shader object is bound to any graphics
+--     stage, or a bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @stippledLineEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then
+--     'Vulkan.Core14.Promoted_From_VK_KHR_line_rasterization.cmdSetLineStipple'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-10608# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line topology class, and the current @lineRasterizationMode@
+--     is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_BRESENHAM'
+--     or
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH',
+--     then the current @alphaToCoverageEnable@, @alphaToOneEnable@ and
+--     @sampleShadingEnable@ states /must/ all be
+--     'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07639# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClipControl depthClipControl>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipNegativeOneToOneEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-09650# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClampControl depthClampControl>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @depthClampEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_depth_clamp_control.cmdSetDepthClampRangeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07640# If the
+--     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportWScalingEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07641# If the
+--     @VK_NV_viewport_swizzle@ extension is enabled, and a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07642# If the
+--     @VK_NV_fragment_coverage_to_color@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07643# If the
+--     @VK_NV_fragment_coverage_to_color@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @coverageToColorEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07644# If the
+--     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationModeNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07645# If the
+--     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @coverageModulationMode@ is any value other than
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.COVERAGE_MODULATION_MODE_NONE_NV',
+--     then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07646# If the
+--     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @coverageModulationTableEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07647# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetShadingRateImageEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-pipelineFragmentShadingRate-09238#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07648# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-representativeFragmentTest representativeFragmentTest>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRepresentativeFragmentTestEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07649# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-coverageReductionMode coverageReductionMode>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageReductionModeNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-rasterizationSamples-07471#
+--     If the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, and the current subpass does not use any color
+--     and\/or depth\/stencil attachments, then the @rasterizationSamples@
+--     in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     /must/ follow the rules for a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-noattachments zero-attachment subpass>
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-samples-07472# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
+--     state enabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state disabled, then the @samples@ parameter in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
+--     /must/ be greater or equal to the
+--     'Vulkan.Core10.GraphicsPipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
+--     parameter used to create the bound graphics pipeline
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-samples-07473# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
+--     state and
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     states enabled, then the @samples@ parameter in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
+--     /must/ be greater or equal to the @rasterizationSamples@ parameter
+--     in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-09211# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, or a shader object is bound to any graphics stage,
+--     and the current render pass instance includes a
+--     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'
+--     structure with @multisampledRenderToSingleSampledEnable@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then the
+--     @rasterizationSamples@ in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     /must/ be the same as the @rasterizationSamples@ member of that
+--     structure
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-firstAttachment-07476# If a
+--     shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--     dynamic states enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
+--     in the current command buffer prior to this drawing command /must/
+--     have set a value for all active color attachments
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-firstAttachment-07478# If a
+--     shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT'
+--     dynamic states enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
+--     in the current command buffer prior to this drawing command /must/
+--     have set a value for all active color attachments
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-advancedBlendMaxColorAttachments-07480#
+--     If a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
+--     and
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--     dynamic states enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and an active color
+--     attachment
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @blendEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then the
+--     number of active color attachments /must/ not exceed
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-advancedBlendMaxColorAttachments advancedBlendMaxColorAttachments>
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-10862# If a graphics
+--     pipeline is bound was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
+--     , but not the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command for all
+--     active color attachments with the @blendEnable@
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-rasterizerDiscardEnable-10863#
+--     If a graphics pipeline is bound was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT',
+--     but not the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command for all
+--     active color attachments with the @blendEnable@
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-10864# If a shader
+--     object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
+--     and
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then either
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command for all
+--     active color attachments with the @blendEnable@
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-primitivesGeneratedQueryWithNonZeroStreams-07481#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>
+--     feature is not enabled and the
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
+--     query is active, and the bound graphics pipeline was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_STREAM_EXT'
+--     state enabled, the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationStreamEXT'
+--     /must/ have set the @rasterizationStream@ to zero
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-sampleLocationsPerPixel-07482#
+--     If the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state enabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state disabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then the @sampleLocationsPerPixel@ member of @pSampleLocationsInfo@
+--     in the last call to
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     /must/ equal the @rasterizationSamples@ member of the
+--     'Vulkan.Core10.GraphicsPipeline.PipelineMultisampleStateCreateInfo'
+--     structure the bound graphics pipeline has been created with
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-sampleLocationsPerPixel-07483#
+--     If the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state enabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then the @sampleLocationsPerPixel@ member of @pSampleLocationsInfo@
+--     in the last call to
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     /must/ equal the @rasterizationSamples@ parameter of the last call
+--     to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-sampleLocationsEnable-07484#
+--     If a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage, or the bound graphics pipeline was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     state enabled, and @sampleLocationsEnable@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT'
+--     then the current active depth attachment /must/ have been created
+--     with the
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'
+--     bit set
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-sampleLocationsEnable-07485#
+--     If a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage, or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state enabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     state enabled, and if @sampleLocationsEnable@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
+--     then the @sampleLocationsInfo.maxSampleLocationGridSize.width@ in
+--     the last call to
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     /must/ evenly divide
+--     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.width@
+--     as returned by
+--     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
+--     with a @samples@ parameter equaling @rasterizationSamples@
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-sampleLocationsEnable-07486#
+--     If a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage, or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state enabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     state enabled, and if @sampleLocationsEnable@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
+--     then the @sampleLocationsInfo.maxSampleLocationGridSize.height@ in
+--     the last call to
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     /must/ evenly divide
+--     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.height@
+--     as returned by
+--     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
+--     with a @samples@ parameter equaling @rasterizationSamples@
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-sampleLocationsEnable-07487#
+--     If a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage, or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     state enabled, and if @sampleLocationsEnable@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
+--     the fragment shader code /must/ not statically use the extended
+--     instruction @InterpolateAtSample@
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-sampleLocationsEnable-07936#
+--     If the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state disabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then @sampleLocationsInfo.sampleLocationGridSize.width@ /must/
+--     evenly divide
+--     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.width@
+--     as returned by
+--     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
+--     with a @samples@ parameter equaling the value of
+--     @rasterizationSamples@ in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-sampleLocationsEnable-07937#
+--     If the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state disabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then @sampleLocationsInfo.sampleLocationGridSize.height@ /must/
+--     evenly divide
+--     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.height@
+--     as returned by
+--     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
+--     with a @samples@ parameter equaling the value of
+--     @rasterizationSamples@ in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-sampleLocationsEnable-07938#
+--     If the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state disabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then @sampleLocationsInfo.sampleLocationsPerPixel@ /must/ equal
+--     @rasterizationSamples@ in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-coverageModulationTableEnable-07488#
+--     If a shader object is bound to any graphics stage or the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV'
+--     state enabled, and the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV'
+--     set @coverageModulationTableEnable@ to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then the
+--     @coverageModulationTableCount@ parameter in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableNV'
+--     /must/ equal the current @rasterizationSamples@ divided by the
+--     number of color samples in the current active color attachment
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-rasterizationSamples-07489#
+--     If the @VK_NV_framebuffer_mixed_samples@ extension is enabled, and
+--     if current subpass has a depth\/stencil attachment and depth test,
+--     stencil test, or depth bounds test are enabled in the bound
+--     pipeline, then the current @rasterizationSamples@ /must/ be the same
+--     as the sample count of the depth\/stencil attachment
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-coverageToColorEnable-07490#
+--     If the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
+--     state enabled and the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
+--     set the @coverageToColorEnable@ to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then there /must/ be an
+--     active color attachment at the location selected by the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
+--     @coverageToColorLocation@, with a
+--     'Vulkan.Core10.Enums.Format.Format' of
+--     'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R8_SINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R16_UINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R16_SINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R32_UINT', or
+--     'Vulkan.Core10.Enums.Format.FORMAT_R32_SINT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-rasterizerDiscardEnable-09420#
+--     If the @VK_NV_fragment_coverage_to_color@ extension is enabled, and
+--     a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage, and the most recent call to
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
+--     in the current command buffer set @rasterizerDiscardEnable@ to
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
+--     set the @coverageToColorEnable@ to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then there /must/ be an
+--     active color attachment at the location selected by the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
+--     @coverageToColorLocation@, with a
+--     'Vulkan.Core10.Enums.Format.Format' of
+--     'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R8_SINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R16_UINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R16_SINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R32_UINT', or
+--     'Vulkan.Core10.Enums.Format.FORMAT_R32_SINT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-coverageReductionMode-07491#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-coverageReductionMode coverageReductionMode>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV'
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     dynamic states enabled, then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current values>
+--     of @coverageReductionMode@, @rasterizationSamples@, the sample
+--     counts for the color and depth\/stencil attachments (if the subpass
+--     has them) /must/ be a valid combination returned by
+--     'Vulkan.Extensions.VK_NV_coverage_reduction_mode.getPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-viewportCount-07492# 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_SWIZZLE_NV'
+--     dynamic state enabled, 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-vkCmdExecuteGeneratedCommandsEXT-viewportCount-07493# 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_SWIZZLE_NV'
+--     dynamic states enabled then the @viewportCount@ parameter in the
+--     last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
+--     /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-vkCmdExecuteGeneratedCommandsEXT-viewportCount-09421# If the
+--     @VK_NV_viewport_swizzle@ extension is enabled, and a shader object
+--     is bound to any graphics stage, then the @viewportCount@ parameter
+--     in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
+--     /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-vkCmdExecuteGeneratedCommandsEXT-rasterizationSamples-07494#
+--     If the @VK_NV_framebuffer_mixed_samples@ extension is enabled, and
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-coverageReductionMode coverageReductionMode>
+--     feature is not enabled, or the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @coverageReductionMode@ is not
+--     'Vulkan.Extensions.VK_NV_coverage_reduction_mode.COVERAGE_REDUCTION_MODE_TRUNCATE_NV',
+--     and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizationSamples@ is greater than sample count of the color
+--     attachment, then
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-sampleshading sample shading>
+--     /must/ be disabled
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-stippledLineEnable-07495# If
+--     the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic states enabled, and if the current @stippledLineEnable@
+--     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
+--     @lineRasterizationMode@ state is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_RECTANGULAR',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-stippledLineEnable-07496# If
+--     the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic states enabled, and if the current @stippledLineEnable@
+--     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
+--     @lineRasterizationMode@ state is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_BRESENHAM',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-stippledLineEnable-07497# If
+--     the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic states enabled, and if the current @stippledLineEnable@
+--     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
+--     @lineRasterizationMode@ state is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-stippledLineEnable-07498# If
+--     the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic states enabled, and if the current @stippledLineEnable@
+--     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
+--     @lineRasterizationMode@ state is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_DEFAULT',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>
+--     feature /must/ be enabled and
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@strictLines@
+--     /must/ be 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-stage-07073# If the bound
+--     pipeline was created with the
+--     'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo'::@stage@
+--     member of an element of
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'::@pStages@
+--     set to
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT',
+--     then
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-mesh-shader Mesh Shader Queries>
+--     /must/ not be active
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08877# If a shader
+--     object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-07850# If dynamic state
+--     was inherited from
+--     'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV',
+--     it /must/ be set in the current command buffer prior to this drawing
+--     command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-nextStage-10745# For each
+--     shader object bound to a graphics stage, except for shader object
+--     bound to the last graphics stage in the logical pipeline, it /must/
+--     have been created with a @nextStage@ including the corresponding bit
+--     to the shader object bound to the following graphics stage in the
+--     logical pipeline
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08684# If there is no
+--     bound graphics pipeline,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08685# If there is no
+--     bound graphics pipeline, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellationShader>
+--     feature is enabled,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08686# If there is no
+--     bound graphics pipeline, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellationShader>
+--     feature is enabled,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08687# If there is no
+--     bound graphics pipeline, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometryShader>
+--     feature is enabled,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08688# If there is no
+--     bound graphics pipeline,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08689# If there is no
+--     bound graphics pipeline, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
+--     feature is enabled,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08690# If there is no
+--     bound graphics pipeline, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
+--     feature is enabled,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08693# If there is no
+--     bound graphics pipeline, and at least one of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
+--     features is enabled, one of the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--     stages /must/ have a valid 'Vulkan.Extensions.Handles.ShaderEXT'
+--     bound, and the other /must/ have no
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08696# If there is no
+--     bound graphics pipeline, and a valid
+--     'Vulkan.Extensions.Handles.ShaderEXT' is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage, there /must/ be no 'Vulkan.Extensions.Handles.ShaderEXT'
+--     bound to either the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--     stage or the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--     stage
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08698# If any graphics
+--     shader is bound which was created with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
+--     flag, then all shaders created with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
+--     flag in the same
+--     'Vulkan.Extensions.VK_EXT_shader_object.createShadersEXT' call
+--     /must/ also be bound
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08699# If any graphics
+--     shader is bound which was created with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
+--     flag, any stages in between stages whose shaders which did not
+--     create a shader with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
+--     flag as part of the same
+--     'Vulkan.Extensions.VK_EXT_shader_object.createShadersEXT' call
+--     /must/ not have any 'Vulkan.Extensions.Handles.ShaderEXT' bound
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08878# All bound
+--     graphics shader objects /must/ have been created with identical or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-identically-defined identically defined>
+--     push constant ranges
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-08879# All bound
+--     graphics shader objects /must/ have either been created with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag set, or with identical or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-identically-defined identically defined>
+--     arrays of descriptor set layouts
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-colorAttachmentCount-09372#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and a
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
+--     equal to @1@, a color attachment with a resolve mode of
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID',
+--     and a fragment shader is bound, it /must/ not declare the
+--     @DepthReplacing@ or @StencilRefReplacingEXT@ execution modes
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-pDynamicStates-08715# If the
+--     bound graphics pipeline state includes a fragment shader stage, was
+--     created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE'
+--     set in
+--     'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@,
+--     and the fragment shader declares the @EarlyFragmentTests@ execution
+--     mode and uses @OpDepthAttachmentReadEXT@, the @depthWriteEnable@
+--     parameter in the last call to
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthWriteEnable'
+--     /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-pDynamicStates-08716# If the
+--     bound graphics pipeline state includes a fragment shader stage, was
+--     created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_WRITE_MASK'
+--     set in
+--     'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@,
+--     and the fragment shader declares the @EarlyFragmentTests@ execution
+--     mode and uses @OpStencilAttachmentReadEXT@, the @writeMask@
+--     parameter in the last call to
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilWriteMask' /must/
+--     be @0@
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-09116# If a shader
+--     object is bound to any graphics stage or the bound graphics pipeline
+--     was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT',
+--     and the format of any color attachment is
+--     'Vulkan.Core10.Enums.Format.FORMAT_E5B9G9R9_UFLOAT_PACK32', the
+--     corresponding element of the @pColorWriteMasks@ parameter of
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
+--     /must/ either include all of
+--     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_R_BIT',
+--     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_G_BIT',
+--     and
+--     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_B_BIT',
+--     or none of them
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-maxFragmentDualSrcAttachments-09239#
+--     If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blending blending>
+--     is enabled for any attachment where either the source or destination
+--     blend factors for that attachment
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-dsb use the secondary color input>,
+--     the maximum value of @Location@ for any output attachment
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-staticuse statically used>
+--     in the @Fragment@ @Execution@ @Model@ executed by this command
+--     /must/ be less than
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFragmentDualSrcAttachments maxFragmentDualSrcAttachments>
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-09548# If the current
+--     render pass was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there is no shader object bound to any graphics stage, the value of
+--     each element of
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingAttachmentLocationInfo'::@pColorAttachmentLocations@
+--     in the bound pipeline /must/ match the value for the corresponding
+--     locations set currently in the current render pass instance
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-09549# If the current
+--     render pass was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     and there is no shader object bound to any graphics stage, the value
+--     of each element of
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pColorAttachmentInputIndices@
+--     in the bound pipeline /must/ match the value for the corresponding
+--     index set currently in the current render pass instance
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-10927# If the current
+--     render pass was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     and there is no shader object bound to any graphics stage, the value
+--     of
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pDepthInputAttachmentIndex@
+--     in the bound pipeline /must/ match the value set currently in the
+--     current render pass instance
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-10928# If the current
+--     render pass was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     and there is no shader object bound to any graphics stage, the value
+--     of
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pStencilInputAttachmentIndex@
+--     in the bound pipeline /must/ match the value set currently in the
+--     current render pass instance
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-09642# If the current
+--     render pass was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     with the
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT'
+--     flag, the bound graphics pipeline /must/ have been created with
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-09643# If the bound
+--     graphics pipeline was created with
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT',
+--     the current render pass /must/ have begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     with the
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT'
+--     flag
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-10677# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model>
+--     is enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tileShadingPerTileDraw tileShadingPerTileDraw>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-10772# If a shader
+--     object is bound to any graphics stage, /multiview/ functionality
+--     /must/ not be enabled in the current render pass
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-multiviewPerViewViewports-12262#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiviewPerViewViewports multiviewPerViewViewports>
+--     feature is enabled, then the index of the most significant bit in
+--     current render pass instance @viewMask@ /must/ be less than the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @viewportCount@
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-multiviewPerViewViewports-12263#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiviewPerViewViewports multiviewPerViewViewports>
+--     feature is enabled, then the index of the most significant bit in
+--     current render pass instance @viewMask@ /must/ be less than the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @scissorCount@
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-flags-11521# If current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@flags@
+--     which includes
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_FRAGMENT_REGION_BIT_EXT',
+--     and if
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-sampleshading sample shading>
+--     is enabled (explicitly or implicitly), then the minimum fraction for
+--     sample shading /must/ equal 0.0
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-11522# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and contains a custom resolve, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, the graphics pipeline bound /must/ have been
+--     created with a
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-11523# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and does not contain a custom resolve, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, the graphics pipeline bound /must/ not have
+--     been created with a
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-customResolve-11524# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, the graphics pipeline
+--     bound /must/ have been created with
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@
+--     as 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-customResolve-11525# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and contains a custom resolve, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not been recorded in the render pass instance, the graphics
+--     pipeline bound /must/ have been created with
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@
+--     as 'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-11861# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled and the current render pass instance was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and contains a custom resolve, the bound graphics pipeline /must/
+--     have been created with a
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@colorAttachmentCount@
+--     equal to
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-11862# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and the current render pass instance was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, 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 an @resolveImageView@ 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_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@
+--     used to create the bound graphics pipeline
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-11863# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and the current render pass instance was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, 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 an @resolveImageView@ equal to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have the
+--     corresponding element of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@
+--     used to create the bound pipeline equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-dynamicRenderingUnusedAttachments-11864#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled, the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, 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 an @resolveImageView@ 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_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@
+--     used to create the bound graphics pipeline, or the corresponding
+--     element of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@,
+--     if it exists, /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-11865# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@
+--     used to create the bound graphics pipeline /must/ be equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-11866# If current render
+--     pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@
+--     used to create the 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->resolveImageView@
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-dynamicRenderingUnusedAttachments-11867#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@
+--     used to create the bound graphics pipeline was not equal to the
+--     'Vulkan.Core10.Enums.Format.Format' used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@,
+--     the value of the format /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-11868# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@
+--     used to create the bound graphics pipeline /must/ be equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-11869# If current render
+--     pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@
+--     used to create the 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->resolveImageView@
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-dynamicRenderingUnusedAttachments-11870#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@
+--     used to create the bound graphics pipeline was not equal to the
+--     'Vulkan.Core10.Enums.Format.Format' used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@,
+--     the value of the format /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-colorAttachmentCount-11871#
+--     If 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@ and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, then for each element
+--     of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
+--     array with a @resolveImageView@ not equal to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', the @resolveImageView@
+--     /must/ have been created with a sample count equal to the value of
+--     @rasterizationSamples@ for the bound graphics pipeline
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-pDepthAttachment-11872# If
+--     the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     @rasterizationSamples@ for the bound graphics pipeline /must/ be
+--     equal to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-pStencilAttachment-11873# If
+--     the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     @rasterizationSamples@ for the bound graphics pipeline /must/ be
+--     equal to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-customResolve-11529# If a
+--     shader object is bound to the fragment stage, the current render
+--     pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     a fragment density map attachment is active, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been called, then the fragment shader object bound /must/ have
+--     been created with
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@
+--     as 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-customResolve-11530# If a
+--     shader object is bound to the fragment stage, the current render
+--     pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and contains a custom resolve, a fragment density map attachment is
+--     active, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been called, then the fragment shader object bound
+--     /must/ have been created with
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@
+--     as 'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-flags-13361# If there are any
+--     shader objects bound that were created with @flags@ that includes
+--     the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     bit, then all bound shader objects /must/ have been created with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     bit
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-flags-13362# If there are any
+--     shader objects bound that were created with @flags@ that includes
+--     the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     bit, then the pipeline layout of the bound descriptor sets /must/
+--     have been created with
+--     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT'
+--     set
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-flags-13363# If there are any
+--     shader objects bound that were created with @flags@ that includes
+--     the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     bit, and any of the descriptor set layouts used to create the
+--     pipeline layout of the bound descriptor sets were created with any
+--     binding’s
+--     'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutBinding'::@stageFlags@
+--     set with
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT',
+--     then there /must/ be no binding with
+--     'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutBinding'::@stageFlags@
+--     set with
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-flags-13364# If there are any
+--     shader objects bound that were created with @flags@ that includes
+--     both the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     and
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
+--     bits, the pipeline layout of the bound descriptor sets /must/ have
+--     been created with
+--     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_NO_TASK_SHADER_BIT_KHR'
+--     set
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-flags-13365# If there are any
+--     shader objects bound that were created with @flags@ that includes
+--     both the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     and
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
+--     bits, there /must/ be no shader object bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--     stage
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-commandBuffer-11045#
+--     @commandBuffer@ /must/ not be a protected command buffer
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-isPreprocessed-11046# If
+--     @isPreprocessed@ is 'Vulkan.Core10.FundamentalTypes.TRUE' and
+--     'getGeneratedCommandsMemoryRequirementsEXT' did not return a
+--     required size of zero then 'cmdPreprocessGeneratedCommandsEXT'
+--     /must/ have already been executed on the device before this command
+--     executes, and the preprocessing command /must/ have used the same
+--     @pGeneratedCommandsInfo@ content as well as the content of the input
+--     buffers it references (all except
+--     'GeneratedCommandsInfoEXT'::@preprocessAddress@)
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-isPreprocessed-11047# If
+--     @isPreprocessed@ is 'Vulkan.Core10.FundamentalTypes.TRUE' then the
+--     @indirectCommandsLayout@ member of @pGeneratedCommandsInfo@ /must/
+--     have been created with the
+--     'INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_EXT' bit set
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-indirectCommandsLayout-11141#
+--     If the @indirectCommandsLayout@ member of @pGeneratedCommandsInfo@
+--     was created with the
+--     'INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_EXT' bit
+--     set, then @isPreprocessed@ /must/ be
+--     'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-preprocessAddress-11142# The
+--     contents of the @preprocessAddress@ member of
+--     @pGeneratedCommandsInfo@ /must/ not have been previously used to
+--     record another 'cmdExecuteGeneratedCommandsEXT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-isPreprocessed-11048# If
+--     @isPreprocessed@ is 'Vulkan.Core10.FundamentalTypes.TRUE' then the
+--     bound descriptor sets and push constants /must/ match identically
+--     with those bound during recording of the corresponding call to
+--     'cmdPreprocessGeneratedCommandsEXT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-isPreprocessed-10198# If
+--     @isPreprocessed@ is 'Vulkan.Core10.FundamentalTypes.TRUE' then the
+--     conditional render state and its predicate value /must/ match
+--     identically with the state and value set during execution of the
+--     corresponding call to 'cmdPreprocessGeneratedCommandsEXT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-isPreprocessed-11049# If
+--     @isPreprocessed@ is 'Vulkan.Core10.FundamentalTypes.TRUE' and the
+--     @indirectCommandsLayout@ member of @pGeneratedCommandsInfo@ contains
+--     a draw token, then the graphics state bound on @commandBuffer@
+--     /must/ match identically with the graphics state bound on the
+--     @stateCommandBuffer@ passed to 'cmdPreprocessGeneratedCommandsEXT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-isPreprocessed-11149# If
+--     @isPreprocessed@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then the
+--     queue family index of @commandBuffer@ /must/ be the same as the
+--     queue family index used to allocate the @stateCommandBuffer@ passed
+--     to 'cmdPreprocessGeneratedCommandsEXT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-isPreprocessed-11051# If
+--     @isPreprocessed@ is 'Vulkan.Core10.FundamentalTypes.TRUE' and the
+--     @indirectCommandsLayout@ member of @pGeneratedCommandsInfo@ contains
+--     a dispatch token, then the compute state bound on @commandBuffer@
+--     /must/ match identically with the compute state bound on the
+--     @stateCommandBuffer@ passed to 'cmdPreprocessGeneratedCommandsEXT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-isPreprocessed-11052# If
+--     @isPreprocessed@ is 'Vulkan.Core10.FundamentalTypes.TRUE' and the
+--     @indirectCommandsLayout@ member of @pGeneratedCommandsInfo@ contains
+--     a ray tracing token, then the ray tracing state bound on
+--     @commandBuffer@ /must/ match identically with the ray tracing state
+--     bound on the @stateCommandBuffer@ passed to
+--     'cmdPreprocessGeneratedCommandsEXT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-isPreprocessed-11150# If
+--     @isPreprocessed@ is 'Vulkan.Core10.FundamentalTypes.TRUE' and the
+--     @indirectCommandsLayout@ member of @pGeneratedCommandsInfo@ contains
+--     a ray tracing token, the queue family index @commandBuffer@ was
+--     allocated from /must/ be the same queue family index used to
+--     allocate the @stateCommandBuffer@ passed to
+--     'cmdPreprocessGeneratedCommandsEXT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-indirectCommandsLayout-11053#
+--     If the token sequence of the passed
+--     'GeneratedCommandsInfoEXT'::@indirectCommandsLayout@ contains a
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT' token, the initial
+--     shader state of 'GeneratedCommandsInfoEXT'::@indirectExecutionSet@
+--     /must/ be bound on @commandBuffer@
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-indirectCommandsLayout-11004#
+--     If @indirectCommandsLayout@ was created with a token sequence that
+--     contained the 'INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT' token
+--     and @indirectExecutionSet@ was created using
+--     'INDIRECT_EXECUTION_SET_INFO_TYPE_SHADER_OBJECTS_EXT', every
+--     executed 'INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT' token
+--     /must/ bind all the shader stages set in the
+--     'IndirectCommandsExecutionSetTokenEXT'::@shaderStages@ used to
+--     create @indirectCommandsLayout@
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-isPreprocessed-11055# If
+--     @isPreprocessed@ is 'Vulkan.Core10.FundamentalTypes.TRUE' and the
+--     token sequence of the passed
+--     'GeneratedCommandsInfoEXT'::@indirectCommandsLayout@ contains a
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT' token, the members
+--     of 'GeneratedCommandsInfoEXT'::@indirectExecutionSet@ accessed by
+--     this command /must/ not have been modified since the preprocess
+--     buffer was generated
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-indirectCommandsLayout-11056#
+--     If the @indirectCommandsLayout@ member of @pGeneratedCommandsInfo@
+--     contains a draw token, then the active render pass /must/ not have a
+--     specified fragment density map
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-deviceGeneratedCommandsTransformFeedback-11057#
+--     If
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-deviceGeneratedCommandsTransformFeedback deviceGeneratedCommandsTransformFeedback>
+--     is not supported on device, transform feedback /must/ not be active
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-indirectExecutionSet-11058#
+--     If transform feedback is active,
+--     'GeneratedCommandsInfoEXT'::@indirectExecutionSet@ /must/ be
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-deviceGeneratedCommands-11059#
+--     The
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-deviceGeneratedCommands ::deviceGeneratedCommands>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-supportedIndirectCommandsShaderStages-11060#
+--     The bound shader stages /must/ be supported by
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-supportedIndirectCommandsShaderStages ::supportedIndirectCommandsShaderStages>
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-supportedIndirectCommandsShaderStages-11061#
+--     Only stages specified in
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-supportedIndirectCommandsShaderStages ::supportedIndirectCommandsShaderStages>
+--     /can/ be set in @pGeneratedCommandsInfo->shaderStages@
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-None-11062# If a rendering
+--     pass is currently active, either the view mask /must/ be @0@ or
+--     @indirectExecutionSet@ /must/ be
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-commandBuffer-11143#
+--     @commandBuffer@ /must/ not have been recorded with
+--     'Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-indirectCommandsLayout-10769#
+--     If the @indirectCommandsLayout@ member of @pGeneratedCommandsInfo@
+--     contains a draw token, this command /must/ not be called outside a
+--     render pass instance
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-indirectCommandsLayout-12202#
+--     If the @indirectCommandsLayout@ member of @pGeneratedCommandsInfo@
+--     does not contain a draw token, this command /must/ not be called
+--     inside a render pass instance
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-pGeneratedCommandsInfo-parameter#
+--     @pGeneratedCommandsInfo@ /must/ be a valid pointer to a valid
+--     'GeneratedCommandsInfoEXT' structure
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-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-vkCmdExecuteGeneratedCommandsEXT-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', or
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-suspended# This command
+--     /must/ not be called between suspended render pass instances
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-videocoding# This command
+--     /must/ only be called outside of a video coding scope
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsEXT-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#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | Action                                                                                                                                 |
+-- |                                                                                                                            |                                                                                                                        |                                                                                                                             | VK_QUEUE_GRAPHICS_BIT                                                                                                 | Indirection                                                                                                                            |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdExecuteGeneratedCommandsEXT is affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_generated_commands VK_EXT_device_generated_commands>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Handles.CommandBuffer', 'GeneratedCommandsInfoEXT'
+cmdExecuteGeneratedCommandsEXT :: forall a io
+                                . ( Extendss GeneratedCommandsInfoEXT a
+                                  , PokeChain a
+                                  , MonadIO io )
+                               => -- | @commandBuffer@ is the command buffer into which the command is
+                                  -- recorded.
+                                  CommandBuffer
+                               -> -- | @isPreprocessed@ represents whether the input data has already been
+                                  -- preprocessed on the device. If it is
+                                  -- 'Vulkan.Core10.FundamentalTypes.FALSE' this command will implicitly
+                                  -- trigger the preprocessing step, otherwise not.
+                                  ("isPreprocessed" ::: Bool)
+                               -> -- | @pGeneratedCommandsInfo@ is a pointer to a 'GeneratedCommandsInfoEXT'
+                                  -- structure containing parameters affecting the generation of commands.
+                                  (GeneratedCommandsInfoEXT a)
+                               -> io ()
+cmdExecuteGeneratedCommandsEXT commandBuffer
+                                 isPreprocessed
+                                 generatedCommandsInfo = liftIO . evalContT $ do
+  let vkCmdExecuteGeneratedCommandsEXTPtr = pVkCmdExecuteGeneratedCommandsEXT (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdExecuteGeneratedCommandsEXTPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdExecuteGeneratedCommandsEXT is null" Nothing Nothing
+  let vkCmdExecuteGeneratedCommandsEXT' = mkVkCmdExecuteGeneratedCommandsEXT vkCmdExecuteGeneratedCommandsEXTPtr
+  pGeneratedCommandsInfo <- ContT $ withCStruct (generatedCommandsInfo)
+  lift $ traceAroundEvent "vkCmdExecuteGeneratedCommandsEXT" (vkCmdExecuteGeneratedCommandsEXT'
+                                                                (commandBufferHandle (commandBuffer))
+                                                                (boolToBool32 (isPreprocessed))
+                                                                (forgetExtensions pGeneratedCommandsInfo))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdPreprocessGeneratedCommandsEXT
+  :: FunPtr (Ptr CommandBuffer_T -> Ptr (SomeStruct GeneratedCommandsInfoEXT) -> Ptr CommandBuffer_T -> IO ()) -> Ptr CommandBuffer_T -> Ptr (SomeStruct GeneratedCommandsInfoEXT) -> Ptr CommandBuffer_T -> IO ()
+
+-- | vkCmdPreprocessGeneratedCommandsEXT - Performs preprocessing for
+-- generated commands
+--
+-- = Description
+--
+-- @stateCommandBuffer@ access is not synchronized by the driver, meaning
+-- that this command buffer /must/ not be modified between threads in an
+-- unsafe manner.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdPreprocessGeneratedCommandsEXT-commandBuffer-11081#
+--     @commandBuffer@ /must/ not be a protected command buffer
+--
+-- -   #VUID-vkCmdPreprocessGeneratedCommandsEXT-pGeneratedCommandsInfo-11082#
+--     @pGeneratedCommandsInfo@’s @indirectCommandsLayout@ /must/ have been
+--     created with the
+--     'INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_EXT' bit set
+--
+-- -   #VUID-vkCmdPreprocessGeneratedCommandsEXT-indirectCommandsLayout-11084#
+--     If the token sequence of the passed
+--     'GeneratedCommandsInfoEXT'::@indirectCommandsLayout@ contains a
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT' token, the initial
+--     shader state of 'GeneratedCommandsInfoEXT'::@indirectExecutionSet@
+--     /must/ be bound on @stateCommandBuffer@
+--
+-- -   #VUID-vkCmdPreprocessGeneratedCommandsEXT-stateCommandBuffer-11138#
+--     @stateCommandBuffer@ /must/ be in the recording state
+--
+-- -   #VUID-vkCmdPreprocessGeneratedCommandsEXT-deviceGeneratedCommands-11087#
+--     The
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-deviceGeneratedCommands ::deviceGeneratedCommands>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdPreprocessGeneratedCommandsEXT-supportedIndirectCommandsShaderStages-11088#
+--     Only stages specified in
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-supportedIndirectCommandsShaderStages ::supportedIndirectCommandsShaderStages>
+--     /can/ be set in @pGeneratedCommandsInfo->shaderStages@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdPreprocessGeneratedCommandsEXT-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdPreprocessGeneratedCommandsEXT-pGeneratedCommandsInfo-parameter#
+--     @pGeneratedCommandsInfo@ /must/ be a valid pointer to a valid
+--     'GeneratedCommandsInfoEXT' structure
+--
+-- -   #VUID-vkCmdPreprocessGeneratedCommandsEXT-stateCommandBuffer-parameter#
+--     @stateCommandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdPreprocessGeneratedCommandsEXT-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-vkCmdPreprocessGeneratedCommandsEXT-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', or
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
+--
+-- -   #VUID-vkCmdPreprocessGeneratedCommandsEXT-renderpass# This command
+--     /must/ only be called outside of a render pass instance
+--
+-- -   #VUID-vkCmdPreprocessGeneratedCommandsEXT-suspended# This command
+--     /must/ not be called between suspended render pass instances
+--
+-- -   #VUID-vkCmdPreprocessGeneratedCommandsEXT-videocoding# This command
+--     /must/ only be called outside of a video coding scope
+--
+-- -   #VUID-vkCmdPreprocessGeneratedCommandsEXT-bufferlevel#
+--     @commandBuffer@ /must/ be a primary
+--     'Vulkan.Core10.Handles.CommandBuffer'
+--
+-- -   #VUID-vkCmdPreprocessGeneratedCommandsEXT-commonparent# Both of
+--     @commandBuffer@, and @stateCommandBuffer@ /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 @stateCommandBuffer@ /must/ be externally
+--     synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | Action                                                                                                                                 |
+-- |                                                                                                                            |                                                                                                                        |                                                                                                                             | VK_QUEUE_GRAPHICS_BIT                                                                                                 |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdPreprocessGeneratedCommandsEXT is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_generated_commands VK_EXT_device_generated_commands>,
+-- 'Vulkan.Core10.Handles.CommandBuffer', 'GeneratedCommandsInfoEXT'
+cmdPreprocessGeneratedCommandsEXT :: forall a io
+                                   . ( Extendss GeneratedCommandsInfoEXT a
+                                     , PokeChain a
+                                     , MonadIO io )
+                                  => -- | @commandBuffer@ is the command buffer which does the preprocessing.
+                                     CommandBuffer
+                                  -> -- | @pGeneratedCommandsInfo@ is a pointer to a 'GeneratedCommandsInfoEXT'
+                                     -- structure containing parameters affecting the preprocessing step.
+                                     (GeneratedCommandsInfoEXT a)
+                                  -> -- | @stateCommandBuffer@ is a command buffer from which to snapshot current
+                                     -- states affecting the preprocessing step. When a graphics command action
+                                     -- token is used, graphics state is snapshotted. When a compute action
+                                     -- command token is used, compute state is snapshotted. When a ray tracing
+                                     -- action command token is used, ray tracing state is snapshotted. It can
+                                     -- be deleted at any time after this command has been recorded.
+                                     ("stateCommandBuffer" ::: CommandBuffer)
+                                  -> io ()
+cmdPreprocessGeneratedCommandsEXT commandBuffer
+                                    generatedCommandsInfo
+                                    stateCommandBuffer = liftIO . evalContT $ do
+  let vkCmdPreprocessGeneratedCommandsEXTPtr = pVkCmdPreprocessGeneratedCommandsEXT (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdPreprocessGeneratedCommandsEXTPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdPreprocessGeneratedCommandsEXT is null" Nothing Nothing
+  let vkCmdPreprocessGeneratedCommandsEXT' = mkVkCmdPreprocessGeneratedCommandsEXT vkCmdPreprocessGeneratedCommandsEXTPtr
+  pGeneratedCommandsInfo <- ContT $ withCStruct (generatedCommandsInfo)
+  lift $ traceAroundEvent "vkCmdPreprocessGeneratedCommandsEXT" (vkCmdPreprocessGeneratedCommandsEXT'
+                                                                   (commandBufferHandle (commandBuffer))
+                                                                   (forgetExtensions pGeneratedCommandsInfo)
+                                                                   (commandBufferHandle (stateCommandBuffer)))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetGeneratedCommandsMemoryRequirementsEXT
+  :: FunPtr (Ptr Device_T -> Ptr (SomeStruct GeneratedCommandsMemoryRequirementsInfoEXT) -> Ptr (SomeStruct MemoryRequirements2) -> IO ()) -> Ptr Device_T -> Ptr (SomeStruct GeneratedCommandsMemoryRequirementsInfoEXT) -> Ptr (SomeStruct MemoryRequirements2) -> IO ()
+
+-- | vkGetGeneratedCommandsMemoryRequirementsEXT - Retrieve the buffer
+-- allocation requirements for generated commands
+--
+-- = Description
+--
+-- If the size returned is zero, the preprocessing step can be skipped for
+-- this layout.
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_generated_commands VK_EXT_device_generated_commands>,
+-- 'Vulkan.Core10.Handles.Device',
+-- 'GeneratedCommandsMemoryRequirementsInfoEXT',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.MemoryRequirements2'
+getGeneratedCommandsMemoryRequirementsEXT :: forall a b io
+                                           . ( Extendss GeneratedCommandsMemoryRequirementsInfoEXT a
+                                             , PokeChain a
+                                             , Extendss MemoryRequirements2 b
+                                             , PokeChain b
+                                             , PeekChain b
+                                             , MonadIO io )
+                                          => -- | @device@ is the logical device that owns the buffer.
+                                             --
+                                             -- #VUID-vkGetGeneratedCommandsMemoryRequirementsEXT-device-parameter#
+                                             -- @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+                                             Device
+                                          -> -- | @pInfo@ is a pointer to a 'GeneratedCommandsMemoryRequirementsInfoEXT'
+                                             -- structure containing parameters required for the memory requirements
+                                             -- query.
+                                             --
+                                             -- #VUID-vkGetGeneratedCommandsMemoryRequirementsEXT-pInfo-parameter#
+                                             -- @pInfo@ /must/ be a valid pointer to a valid
+                                             -- 'GeneratedCommandsMemoryRequirementsInfoEXT' structure
+                                             (GeneratedCommandsMemoryRequirementsInfoEXT a)
+                                          -> io (MemoryRequirements2 b)
+getGeneratedCommandsMemoryRequirementsEXT device info = liftIO . evalContT $ do
+  let vkGetGeneratedCommandsMemoryRequirementsEXTPtr = pVkGetGeneratedCommandsMemoryRequirementsEXT (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkGetGeneratedCommandsMemoryRequirementsEXTPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetGeneratedCommandsMemoryRequirementsEXT is null" Nothing Nothing
+  let vkGetGeneratedCommandsMemoryRequirementsEXT' = mkVkGetGeneratedCommandsMemoryRequirementsEXT vkGetGeneratedCommandsMemoryRequirementsEXTPtr
+  pInfo <- ContT $ withCStruct (info)
+  pPMemoryRequirements <- ContT (withZeroCStruct @(MemoryRequirements2 _))
+  lift $ traceAroundEvent "vkGetGeneratedCommandsMemoryRequirementsEXT" (vkGetGeneratedCommandsMemoryRequirementsEXT'
+                                                                           (deviceHandle (device))
+                                                                           (forgetExtensions pInfo)
+                                                                           (forgetExtensions (pPMemoryRequirements)))
+  pMemoryRequirements <- lift $ peekCStruct @(MemoryRequirements2 _) pPMemoryRequirements
+  pure $ (pMemoryRequirements)
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCreateIndirectCommandsLayoutEXT
+  :: FunPtr (Ptr Device_T -> Ptr (SomeStruct IndirectCommandsLayoutCreateInfoEXT) -> Ptr AllocationCallbacks -> Ptr IndirectCommandsLayoutEXT -> IO Result) -> Ptr Device_T -> Ptr (SomeStruct IndirectCommandsLayoutCreateInfoEXT) -> Ptr AllocationCallbacks -> Ptr IndirectCommandsLayoutEXT -> IO Result
+
+-- | vkCreateIndirectCommandsLayoutEXT - Create an indirect command layout
+-- object
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCreateIndirectCommandsLayoutEXT-deviceGeneratedCommands-11089#
+--     The
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-deviceGeneratedCommands ::deviceGeneratedCommands>
+--     feature /must/ be enabled
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCreateIndirectCommandsLayoutEXT-device-parameter# @device@
+--     /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkCreateIndirectCommandsLayoutEXT-pCreateInfo-parameter#
+--     @pCreateInfo@ /must/ be a valid pointer to a valid
+--     'IndirectCommandsLayoutCreateInfoEXT' structure
+--
+-- -   #VUID-vkCreateIndirectCommandsLayoutEXT-pAllocator-parameter# If
+--     @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid pointer
+--     to a valid 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'
+--     structure
+--
+-- -   #VUID-vkCreateIndirectCommandsLayoutEXT-pIndirectCommandsLayout-parameter#
+--     @pIndirectCommandsLayout@ /must/ be a valid pointer to a
+--     'Vulkan.Extensions.Handles.IndirectCommandsLayoutEXT' handle
+--
+-- -   #VUID-vkCreateIndirectCommandsLayoutEXT-device-queuecount# The
+--     device /must/ have been created with at least @1@ queue
+--
+-- == 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_DEVICE_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_generated_commands VK_EXT_device_generated_commands>,
+-- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',
+-- 'Vulkan.Core10.Handles.Device', 'IndirectCommandsLayoutCreateInfoEXT',
+-- 'Vulkan.Extensions.Handles.IndirectCommandsLayoutEXT'
+createIndirectCommandsLayoutEXT :: forall a io
+                                 . ( Extendss IndirectCommandsLayoutCreateInfoEXT a
+                                   , PokeChain a
+                                   , MonadIO io )
+                                => -- | @device@ is the logical device that creates the indirect command layout.
+                                   Device
+                                -> -- | @pCreateInfo@ is a pointer to a 'IndirectCommandsLayoutCreateInfoEXT'
+                                   -- structure containing parameters affecting creation of the indirect
+                                   -- command layout.
+                                   (IndirectCommandsLayoutCreateInfoEXT a)
+                                -> -- | @pAllocator@ controls host memory allocation as described in the
+                                   -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
+                                   -- chapter.
+                                   ("allocator" ::: Maybe AllocationCallbacks)
+                                -> io (IndirectCommandsLayoutEXT)
+createIndirectCommandsLayoutEXT device
+                                  createInfo
+                                  allocator = liftIO . evalContT $ do
+  let vkCreateIndirectCommandsLayoutEXTPtr = pVkCreateIndirectCommandsLayoutEXT (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCreateIndirectCommandsLayoutEXTPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCreateIndirectCommandsLayoutEXT is null" Nothing Nothing
+  let vkCreateIndirectCommandsLayoutEXT' = mkVkCreateIndirectCommandsLayoutEXT vkCreateIndirectCommandsLayoutEXTPtr
+  pCreateInfo <- ContT $ withCStruct (createInfo)
+  pAllocator <- case (allocator) of
+    Nothing -> pure nullPtr
+    Just j -> ContT $ withCStruct (j)
+  pPIndirectCommandsLayout <- ContT $ bracket (callocBytes @IndirectCommandsLayoutEXT 8) free
+  r <- lift $ traceAroundEvent "vkCreateIndirectCommandsLayoutEXT" (vkCreateIndirectCommandsLayoutEXT'
+                                                                      (deviceHandle (device))
+                                                                      (forgetExtensions pCreateInfo)
+                                                                      pAllocator
+                                                                      (pPIndirectCommandsLayout))
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+  pIndirectCommandsLayout <- lift $ peek @IndirectCommandsLayoutEXT pPIndirectCommandsLayout
+  pure $ (pIndirectCommandsLayout)
+
+-- | A convenience wrapper to make a compatible pair of calls to
+-- 'createIndirectCommandsLayoutEXT' and 'destroyIndirectCommandsLayoutEXT'
+--
+-- To ensure that 'destroyIndirectCommandsLayoutEXT' 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.
+--
+withIndirectCommandsLayoutEXT :: forall a io r . (Extendss IndirectCommandsLayoutCreateInfoEXT a, PokeChain a, MonadIO io) => Device -> IndirectCommandsLayoutCreateInfoEXT a -> Maybe AllocationCallbacks -> (io IndirectCommandsLayoutEXT -> (IndirectCommandsLayoutEXT -> io ()) -> r) -> r
+withIndirectCommandsLayoutEXT device pCreateInfo pAllocator b =
+  b (createIndirectCommandsLayoutEXT device pCreateInfo pAllocator)
+    (\(o0) -> destroyIndirectCommandsLayoutEXT device o0 pAllocator)
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkDestroyIndirectCommandsLayoutEXT
+  :: FunPtr (Ptr Device_T -> IndirectCommandsLayoutEXT -> Ptr AllocationCallbacks -> IO ()) -> Ptr Device_T -> IndirectCommandsLayoutEXT -> Ptr AllocationCallbacks -> IO ()
+
+-- | vkDestroyIndirectCommandsLayoutEXT - Destroy an indirect commands layout
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkDestroyIndirectCommandsLayoutEXT-indirectCommandsLayout-11114#
+--     All submitted commands that refer to @indirectCommandsLayout@ /must/
+--     have completed execution
+--
+-- -   #VUID-vkDestroyIndirectCommandsLayoutEXT-indirectCommandsLayout-11115#
+--     If 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' were
+--     provided when @indirectCommandsLayout@ was created, a compatible set
+--     of callbacks /must/ be provided here
+--
+-- -   #VUID-vkDestroyIndirectCommandsLayoutEXT-indirectCommandsLayout-11116#
+--     If no 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' were
+--     provided when @indirectCommandsLayout@ was created, @pAllocator@
+--     /must/ be @NULL@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkDestroyIndirectCommandsLayoutEXT-device-parameter# @device@
+--     /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkDestroyIndirectCommandsLayoutEXT-indirectCommandsLayout-parameter#
+--     If @indirectCommandsLayout@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', @indirectCommandsLayout@
+--     /must/ be a valid
+--     'Vulkan.Extensions.Handles.IndirectCommandsLayoutEXT' handle
+--
+-- -   #VUID-vkDestroyIndirectCommandsLayoutEXT-pAllocator-parameter# If
+--     @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid pointer
+--     to a valid 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'
+--     structure
+--
+-- -   #VUID-vkDestroyIndirectCommandsLayoutEXT-indirectCommandsLayout-parent#
+--     If @indirectCommandsLayout@ is a valid handle, it /must/ have been
+--     created, allocated, or retrieved from @device@
+--
+-- == Host Synchronization
+--
+-- -   Host access to @indirectCommandsLayout@ /must/ be externally
+--     synchronized
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_generated_commands VK_EXT_device_generated_commands>,
+-- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',
+-- 'Vulkan.Core10.Handles.Device',
+-- 'Vulkan.Extensions.Handles.IndirectCommandsLayoutEXT'
+destroyIndirectCommandsLayoutEXT :: forall io
+                                  . (MonadIO io)
+                                 => -- | @device@ is the logical device that destroys the layout.
+                                    Device
+                                 -> -- | @indirectCommandsLayout@ is the layout to destroy.
+                                    IndirectCommandsLayoutEXT
+                                 -> -- | @pAllocator@ controls host memory allocation as described in the
+                                    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
+                                    -- chapter.
+                                    ("allocator" ::: Maybe AllocationCallbacks)
+                                 -> io ()
+destroyIndirectCommandsLayoutEXT device
+                                   indirectCommandsLayout
+                                   allocator = liftIO . evalContT $ do
+  let vkDestroyIndirectCommandsLayoutEXTPtr = pVkDestroyIndirectCommandsLayoutEXT (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkDestroyIndirectCommandsLayoutEXTPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkDestroyIndirectCommandsLayoutEXT is null" Nothing Nothing
+  let vkDestroyIndirectCommandsLayoutEXT' = mkVkDestroyIndirectCommandsLayoutEXT vkDestroyIndirectCommandsLayoutEXTPtr
+  pAllocator <- case (allocator) of
+    Nothing -> pure nullPtr
+    Just j -> ContT $ withCStruct (j)
+  lift $ traceAroundEvent "vkDestroyIndirectCommandsLayoutEXT" (vkDestroyIndirectCommandsLayoutEXT'
+                                                                  (deviceHandle (device))
+                                                                  (indirectCommandsLayout)
+                                                                  pAllocator)
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCreateIndirectExecutionSetEXT
+  :: FunPtr (Ptr Device_T -> Ptr IndirectExecutionSetCreateInfoEXT -> Ptr AllocationCallbacks -> Ptr IndirectExecutionSetEXT -> IO Result) -> Ptr Device_T -> Ptr IndirectExecutionSetCreateInfoEXT -> Ptr AllocationCallbacks -> Ptr IndirectExecutionSetEXT -> IO Result
+
+-- | vkCreateIndirectExecutionSetEXT - Create an indirect execution set
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCreateIndirectExecutionSetEXT-deviceGeneratedCommands-11013#
+--     The
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-deviceGeneratedCommands ::deviceGeneratedCommands>
+--     feature /must/ be enabled
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCreateIndirectExecutionSetEXT-device-parameter# @device@
+--     /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkCreateIndirectExecutionSetEXT-pCreateInfo-parameter#
+--     @pCreateInfo@ /must/ be a valid pointer to a valid
+--     'IndirectExecutionSetCreateInfoEXT' structure
+--
+-- -   #VUID-vkCreateIndirectExecutionSetEXT-pAllocator-parameter# If
+--     @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid pointer
+--     to a valid 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'
+--     structure
+--
+-- -   #VUID-vkCreateIndirectExecutionSetEXT-pIndirectExecutionSet-parameter#
+--     @pIndirectExecutionSet@ /must/ be a valid pointer to a
+--     'Vulkan.Extensions.Handles.IndirectExecutionSetEXT' handle
+--
+-- -   #VUID-vkCreateIndirectExecutionSetEXT-device-queuecount# The device
+--     /must/ have been created with at least @1@ queue
+--
+-- == 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_DEVICE_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_generated_commands VK_EXT_device_generated_commands>,
+-- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',
+-- 'Vulkan.Core10.Handles.Device', 'IndirectExecutionSetCreateInfoEXT',
+-- 'Vulkan.Extensions.Handles.IndirectExecutionSetEXT'
+createIndirectExecutionSetEXT :: forall io
+                               . (MonadIO io)
+                              => -- | @device@ is the logical device that creates the indirect execution set.
+                                 Device
+                              -> -- | @pCreateInfo@ is a pointer to a 'IndirectExecutionSetCreateInfoEXT'
+                                 -- structure containing parameters affecting creation of the indirect
+                                 -- execution set.
+                                 IndirectExecutionSetCreateInfoEXT
+                              -> -- | @pAllocator@ controls host memory allocation as described in the
+                                 -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
+                                 -- chapter.
+                                 ("allocator" ::: Maybe AllocationCallbacks)
+                              -> io (IndirectExecutionSetEXT)
+createIndirectExecutionSetEXT device
+                                createInfo
+                                allocator = liftIO . evalContT $ do
+  let vkCreateIndirectExecutionSetEXTPtr = pVkCreateIndirectExecutionSetEXT (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCreateIndirectExecutionSetEXTPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCreateIndirectExecutionSetEXT is null" Nothing Nothing
+  let vkCreateIndirectExecutionSetEXT' = mkVkCreateIndirectExecutionSetEXT vkCreateIndirectExecutionSetEXTPtr
+  pCreateInfo <- ContT $ withCStruct (createInfo)
+  pAllocator <- case (allocator) of
+    Nothing -> pure nullPtr
+    Just j -> ContT $ withCStruct (j)
+  pPIndirectExecutionSet <- ContT $ bracket (callocBytes @IndirectExecutionSetEXT 8) free
+  r <- lift $ traceAroundEvent "vkCreateIndirectExecutionSetEXT" (vkCreateIndirectExecutionSetEXT'
+                                                                    (deviceHandle (device))
+                                                                    pCreateInfo
+                                                                    pAllocator
+                                                                    (pPIndirectExecutionSet))
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+  pIndirectExecutionSet <- lift $ peek @IndirectExecutionSetEXT pPIndirectExecutionSet
+  pure $ (pIndirectExecutionSet)
+
+-- | A convenience wrapper to make a compatible pair of calls to
+-- 'createIndirectExecutionSetEXT' and 'destroyIndirectExecutionSetEXT'
+--
+-- To ensure that 'destroyIndirectExecutionSetEXT' 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.
+--
+withIndirectExecutionSetEXT :: forall io r . MonadIO io => Device -> IndirectExecutionSetCreateInfoEXT -> Maybe AllocationCallbacks -> (io IndirectExecutionSetEXT -> (IndirectExecutionSetEXT -> io ()) -> r) -> r
+withIndirectExecutionSetEXT device pCreateInfo pAllocator b =
+  b (createIndirectExecutionSetEXT device pCreateInfo pAllocator)
+    (\(o0) -> destroyIndirectExecutionSetEXT device o0 pAllocator)
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkDestroyIndirectExecutionSetEXT
+  :: FunPtr (Ptr Device_T -> IndirectExecutionSetEXT -> Ptr AllocationCallbacks -> IO ()) -> Ptr Device_T -> IndirectExecutionSetEXT -> Ptr AllocationCallbacks -> IO ()
+
+-- | vkDestroyIndirectExecutionSetEXT - Destroy an indirect execution set
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkDestroyIndirectExecutionSetEXT-indirectExecutionSet-11025#
+--     All submitted commands that refer to @indirectExecutionSet@ /must/
+--     have completed execution
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkDestroyIndirectExecutionSetEXT-device-parameter# @device@
+--     /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkDestroyIndirectExecutionSetEXT-indirectExecutionSet-parameter#
+--     If @indirectExecutionSet@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', @indirectExecutionSet@
+--     /must/ be a valid
+--     'Vulkan.Extensions.Handles.IndirectExecutionSetEXT' handle
+--
+-- -   #VUID-vkDestroyIndirectExecutionSetEXT-pAllocator-parameter# If
+--     @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid pointer
+--     to a valid 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'
+--     structure
+--
+-- -   #VUID-vkDestroyIndirectExecutionSetEXT-indirectExecutionSet-parent#
+--     If @indirectExecutionSet@ is a valid handle, it /must/ have been
+--     created, allocated, or retrieved from @device@
+--
+-- == Host Synchronization
+--
+-- -   Host access to @indirectExecutionSet@ /must/ be externally
+--     synchronized
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_generated_commands VK_EXT_device_generated_commands>,
+-- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',
+-- 'Vulkan.Core10.Handles.Device',
+-- 'Vulkan.Extensions.Handles.IndirectExecutionSetEXT'
+destroyIndirectExecutionSetEXT :: forall io
+                                . (MonadIO io)
+                               => -- | @device@ is the logical device that owns the indirect execution set.
+                                  Device
+                               -> -- | @indirectExecutionSet@ is the indirect execution set to destroy.
+                                  IndirectExecutionSetEXT
+                               -> -- | @pAllocator@ controls host memory allocation as described in the
+                                  -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
+                                  -- chapter.
+                                  ("allocator" ::: Maybe AllocationCallbacks)
+                               -> io ()
+destroyIndirectExecutionSetEXT device
+                                 indirectExecutionSet
+                                 allocator = liftIO . evalContT $ do
+  let vkDestroyIndirectExecutionSetEXTPtr = pVkDestroyIndirectExecutionSetEXT (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkDestroyIndirectExecutionSetEXTPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkDestroyIndirectExecutionSetEXT is null" Nothing Nothing
+  let vkDestroyIndirectExecutionSetEXT' = mkVkDestroyIndirectExecutionSetEXT vkDestroyIndirectExecutionSetEXTPtr
+  pAllocator <- case (allocator) of
+    Nothing -> pure nullPtr
+    Just j -> ContT $ withCStruct (j)
+  lift $ traceAroundEvent "vkDestroyIndirectExecutionSetEXT" (vkDestroyIndirectExecutionSetEXT'
+                                                                (deviceHandle (device))
+                                                                (indirectExecutionSet)
+                                                                pAllocator)
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkUpdateIndirectExecutionSetPipelineEXT
+  :: FunPtr (Ptr Device_T -> IndirectExecutionSetEXT -> Word32 -> Ptr WriteIndirectExecutionSetPipelineEXT -> IO ()) -> Ptr Device_T -> IndirectExecutionSetEXT -> Word32 -> Ptr WriteIndirectExecutionSetPipelineEXT -> IO ()
+
+-- | vkUpdateIndirectExecutionSetPipelineEXT - Update the contents of an
+-- indirect execution set
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkUpdateIndirectExecutionSetPipelineEXT-indirectExecutionSet-11035#
+--     @indirectExecutionSet@ /must/ have been created with type
+--     'INDIRECT_EXECUTION_SET_INFO_TYPE_PIPELINES_EXT'
+--
+-- -   #VUID-vkUpdateIndirectExecutionSetPipelineEXT-executionSetWriteCount-11037#
+--     @executionSetWriteCount@ /must/ be less than or equal to
+--     'IndirectExecutionSetPipelineInfoEXT'::@maxPipelineCount@
+--
+-- -   #VUID-vkUpdateIndirectExecutionSetPipelineEXT-pExecutionSetWrites-11042#
+--     Each element in the @pExecutionSetWrites@ array must have a unique
+--     'WriteIndirectExecutionSetPipelineEXT'::@index@
+--
+-- -   #VUID-vkUpdateIndirectExecutionSetPipelineEXT-None-11038# Each
+--     member of the Indirect Execution Set referenced by the update
+--     command /must/ not be in use by the device
+--
+-- -   #VUID-vkUpdateIndirectExecutionSetPipelineEXT-initialPipeline-11324#
+--     If @initialPipeline@ was created without
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT',
+--     each pipeline in @pExecutionSetWrites@ /must/ also have been created
+--     without
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT'
+--
+-- -   #VUID-vkUpdateIndirectExecutionSetPipelineEXT-initialPipeline-11325#
+--     If @initialPipeline@ was created with
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT',
+--     each pipeline in @pExecutionSetWrites@ /must/ also have been created
+--     with
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT'
+--
+-- -   #VUID-vkUpdateIndirectExecutionSetPipelineEXT-None-11039# If
+--     @initialPipeline@ was created without
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT',
+--     the layout of each pipeline in @pExecutionSetWrites@ /must/ be
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-compatibility compatible>
+--     with the @initialPipeline@ used to create the Indirect Execution Set
+--
+-- -   #VUID-vkUpdateIndirectExecutionSetPipelineEXT-None-11040# Each
+--     pipeline in the Indirect Execution Set /must/ have identically
+--     defined static and dynamic state values to the @initialPipeline@
+--     used to create the Indirect Execution Set
+--
+-- -   #VUID-vkUpdateIndirectExecutionSetPipelineEXT-initialPipeline-11147#
+--     Each pipeline in the Indirect Execution Set /must/ have identically
+--     defined
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-fragmentoutput fragment outputs interface>
+--     to the @initialPipeline@ used to create the Indirect Execution Set
+--
+-- -   #VUID-vkUpdateIndirectExecutionSetPipelineEXT-initialPipeline-11152#
+--     Each pipeline in the Indirect Execution Set /must/ match the
+--     @initialPipeline@ used to create the Indirect Execution Set in its
+--     included shader stages
+--
+-- -   #VUID-vkUpdateIndirectExecutionSetPipelineEXT-initialPipeline-11098#
+--     Each pipeline in the Indirect Execution Set /must/ match the
+--     @initialPipeline@ used to create the Indirect Execution Set in its
+--     use of @FragDepth@
+--
+-- -   #VUID-vkUpdateIndirectExecutionSetPipelineEXT-initialPipeline-11086#
+--     Each pipeline in the Indirect Execution Set /must/ match the
+--     @initialPipeline@ used to create the Indirect Execution Set in its
+--     use of 'Vulkan.Core10.FundamentalTypes.SampleMask'
+--
+-- -   #VUID-vkUpdateIndirectExecutionSetPipelineEXT-initialPipeline-11085#
+--     Each pipeline in the Indirect Execution Set /must/ match the
+--     @initialPipeline@ used to create the Indirect Execution Set in its
+--     use of @StencilExportEXT@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkUpdateIndirectExecutionSetPipelineEXT-device-parameter#
+--     @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkUpdateIndirectExecutionSetPipelineEXT-indirectExecutionSet-parameter#
+--     @indirectExecutionSet@ /must/ be a valid
+--     'Vulkan.Extensions.Handles.IndirectExecutionSetEXT' handle
+--
+-- -   #VUID-vkUpdateIndirectExecutionSetPipelineEXT-pExecutionSetWrites-parameter#
+--     @pExecutionSetWrites@ /must/ be a valid pointer to an array of
+--     @executionSetWriteCount@ valid
+--     'WriteIndirectExecutionSetPipelineEXT' structures
+--
+-- -   #VUID-vkUpdateIndirectExecutionSetPipelineEXT-executionSetWriteCount-arraylength#
+--     @executionSetWriteCount@ /must/ be greater than @0@
+--
+-- -   #VUID-vkUpdateIndirectExecutionSetPipelineEXT-indirectExecutionSet-parent#
+--     @indirectExecutionSet@ /must/ have been created, allocated, or
+--     retrieved from @device@
+--
+-- == Host Synchronization
+--
+-- -   Host access to @indirectExecutionSet@ /must/ be externally
+--     synchronized
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_generated_commands VK_EXT_device_generated_commands>,
+-- 'Vulkan.Core10.Handles.Device',
+-- 'Vulkan.Extensions.Handles.IndirectExecutionSetEXT',
+-- 'WriteIndirectExecutionSetPipelineEXT'
+updateIndirectExecutionSetPipelineEXT :: forall io
+                                       . (MonadIO io)
+                                      => -- | @device@ is the logical device that owns the indirect execution set.
+                                         Device
+                                      -> -- | @indirectExecutionSet@ is the indirect execution set being updated.
+                                         IndirectExecutionSetEXT
+                                      -> -- | @pExecutionSetWrites@ is a pointer to an array of
+                                         -- 'WriteIndirectExecutionSetPipelineEXT' structures describing the
+                                         -- elements to update.
+                                         ("executionSetWrites" ::: Vector WriteIndirectExecutionSetPipelineEXT)
+                                      -> io ()
+updateIndirectExecutionSetPipelineEXT device
+                                        indirectExecutionSet
+                                        executionSetWrites = liftIO . evalContT $ do
+  let vkUpdateIndirectExecutionSetPipelineEXTPtr = pVkUpdateIndirectExecutionSetPipelineEXT (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkUpdateIndirectExecutionSetPipelineEXTPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkUpdateIndirectExecutionSetPipelineEXT is null" Nothing Nothing
+  let vkUpdateIndirectExecutionSetPipelineEXT' = mkVkUpdateIndirectExecutionSetPipelineEXT vkUpdateIndirectExecutionSetPipelineEXTPtr
+  pPExecutionSetWrites <- ContT $ allocaBytes @WriteIndirectExecutionSetPipelineEXT ((Data.Vector.length (executionSetWrites)) * 32)
+  lift $ Data.Vector.imapM_ (\i e -> poke (pPExecutionSetWrites `plusPtr` (32 * (i)) :: Ptr WriteIndirectExecutionSetPipelineEXT) (e)) (executionSetWrites)
+  lift $ traceAroundEvent "vkUpdateIndirectExecutionSetPipelineEXT" (vkUpdateIndirectExecutionSetPipelineEXT'
+                                                                       (deviceHandle (device))
+                                                                       (indirectExecutionSet)
+                                                                       ((fromIntegral (Data.Vector.length $ (executionSetWrites)) :: Word32))
+                                                                       (pPExecutionSetWrites))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkUpdateIndirectExecutionSetShaderEXT
+  :: FunPtr (Ptr Device_T -> IndirectExecutionSetEXT -> Word32 -> Ptr WriteIndirectExecutionSetShaderEXT -> IO ()) -> Ptr Device_T -> IndirectExecutionSetEXT -> Word32 -> Ptr WriteIndirectExecutionSetShaderEXT -> IO ()
+
+-- | vkUpdateIndirectExecutionSetShaderEXT - Update the contents of an
+-- indirect execution set
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkUpdateIndirectExecutionSetShaderEXT-indirectExecutionSet-11041#
+--     @indirectExecutionSet@ /must/ have been created with type
+--     'INDIRECT_EXECUTION_SET_INFO_TYPE_SHADER_OBJECTS_EXT'
+--
+-- -   #VUID-vkUpdateIndirectExecutionSetShaderEXT-pExecutionSetWrites-11043#
+--     Each element in the @pExecutionSetWrites@ array must have a unique
+--     'WriteIndirectExecutionSetShaderEXT'::@index@
+--
+-- -   #VUID-vkUpdateIndirectExecutionSetShaderEXT-None-11044# Each member
+--     of the Indirect Execution Set referenced by the update command
+--     /must/ not be in use by the device
+--
+-- -   #VUID-vkUpdateIndirectExecutionSetShaderEXT-pInitialShaders-11326#
+--     If the shaders in @pInitialShaders@ were created without
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT',
+--     each shader in @pExecutionSetWrites@ /must/ also have been created
+--     without
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT'
+--
+-- -   #VUID-vkUpdateIndirectExecutionSetShaderEXT-pInitialShaders-11327#
+--     If the shaders in @pInitialShaders@ were created with
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT',
+--     each pipeline in @pExecutionSetWrites@ /must/ also have been created
+--     with
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT'
+--
+-- -   #VUID-vkUpdateIndirectExecutionSetShaderEXT-pExecutionSetWrites-11140#
+--     If the shaders in @pInitialShaders@ were created without
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT',
+--     the descriptor layout of each shader in @pExecutionSetWrites@ /must/
+--     be
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-compatibility compatible>
+--     with the initial layout info used to create the Indirect Execution
+--     Set
+--
+-- -   #VUID-vkUpdateIndirectExecutionSetShaderEXT-None-11148# Each
+--     fragment shader element in the Indirect Execution Set /must/ have
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#glossary-identically-defined identically defined>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-fragmentoutput fragment outputs interface>
+--     to the initial shader state used to create the Indirect Execution
+--     Set
+--
+-- -   #VUID-vkUpdateIndirectExecutionSetShaderEXT-FragDepth-11054# Each
+--     fragment shader element in the Indirect Execution Set /must/ match
+--     the initial shader state used to create the Indirect Execution Set
+--     in its use of @FragDepth@
+--
+-- -   #VUID-vkUpdateIndirectExecutionSetShaderEXT-SampleMask-11050# Each
+--     fragment shader element in the Indirect Execution Set /must/ match
+--     the initial shader state used to create the Indirect Execution Set
+--     in its use of 'Vulkan.Core10.FundamentalTypes.SampleMask'
+--
+-- -   #VUID-vkUpdateIndirectExecutionSetShaderEXT-StencilExportEXT-11003#
+--     Each fragment shader element in the Indirect Execution Set /must/
+--     match the initial shader state used to create the Indirect Execution
+--     Set in its use of @StencilExportEXT@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkUpdateIndirectExecutionSetShaderEXT-device-parameter#
+--     @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkUpdateIndirectExecutionSetShaderEXT-indirectExecutionSet-parameter#
+--     @indirectExecutionSet@ /must/ be a valid
+--     'Vulkan.Extensions.Handles.IndirectExecutionSetEXT' handle
+--
+-- -   #VUID-vkUpdateIndirectExecutionSetShaderEXT-pExecutionSetWrites-parameter#
+--     @pExecutionSetWrites@ /must/ be a valid pointer to an array of
+--     @executionSetWriteCount@ valid 'WriteIndirectExecutionSetShaderEXT'
+--     structures
+--
+-- -   #VUID-vkUpdateIndirectExecutionSetShaderEXT-executionSetWriteCount-arraylength#
+--     @executionSetWriteCount@ /must/ be greater than @0@
+--
+-- -   #VUID-vkUpdateIndirectExecutionSetShaderEXT-indirectExecutionSet-parent#
+--     @indirectExecutionSet@ /must/ have been created, allocated, or
+--     retrieved from @device@
+--
+-- == Host Synchronization
+--
+-- -   Host access to @indirectExecutionSet@ /must/ be externally
+--     synchronized
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_generated_commands VK_EXT_device_generated_commands>,
+-- 'Vulkan.Core10.Handles.Device',
+-- 'Vulkan.Extensions.Handles.IndirectExecutionSetEXT',
+-- 'WriteIndirectExecutionSetShaderEXT'
+updateIndirectExecutionSetShaderEXT :: forall io
+                                     . (MonadIO io)
+                                    => -- | @device@ is the logical device that owns the indirect execution set.
+                                       Device
+                                    -> -- | @indirectExecutionSet@ is the indirect execution set being updated.
+                                       IndirectExecutionSetEXT
+                                    -> -- | @pExecutionSetWrites@ is a pointer to an array of
+                                       -- 'WriteIndirectExecutionSetShaderEXT' structures describing the elements
+                                       -- to update.
+                                       ("executionSetWrites" ::: Vector WriteIndirectExecutionSetShaderEXT)
+                                    -> io ()
+updateIndirectExecutionSetShaderEXT device
+                                      indirectExecutionSet
+                                      executionSetWrites = liftIO . evalContT $ do
+  let vkUpdateIndirectExecutionSetShaderEXTPtr = pVkUpdateIndirectExecutionSetShaderEXT (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkUpdateIndirectExecutionSetShaderEXTPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkUpdateIndirectExecutionSetShaderEXT is null" Nothing Nothing
+  let vkUpdateIndirectExecutionSetShaderEXT' = mkVkUpdateIndirectExecutionSetShaderEXT vkUpdateIndirectExecutionSetShaderEXTPtr
+  pPExecutionSetWrites <- ContT $ allocaBytes @WriteIndirectExecutionSetShaderEXT ((Data.Vector.length (executionSetWrites)) * 32)
+  lift $ Data.Vector.imapM_ (\i e -> poke (pPExecutionSetWrites `plusPtr` (32 * (i)) :: Ptr WriteIndirectExecutionSetShaderEXT) (e)) (executionSetWrites)
+  lift $ traceAroundEvent "vkUpdateIndirectExecutionSetShaderEXT" (vkUpdateIndirectExecutionSetShaderEXT'
+                                                                     (deviceHandle (device))
+                                                                     (indirectExecutionSet)
+                                                                     ((fromIntegral (Data.Vector.length $ (executionSetWrites)) :: Word32))
+                                                                     (pPExecutionSetWrites))
+  pure $ ()
+
+
+-- | VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT - Structure
+-- describing the device-generated compute features that can be supported
+-- by an implementation
+--
+-- = Members
+--
+-- This structure describes the following features:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_generated_commands VK_EXT_device_generated_commands>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT = PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
+  { -- | #features-deviceGeneratedCommands# @deviceGeneratedCommands@ indicates
+    -- whether the implementation supports functionality to generate commands
+    -- on the device.
+    deviceGeneratedCommands :: Bool
+  , -- | #features-dynamicGeneratedPipelineLayout#
+    -- @dynamicGeneratedPipelineLayout@ indicates the implementation allows the
+    -- @pipelineLayout@ member of 'IndirectCommandsLayoutCreateInfoEXT' to be
+    -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' and
+    -- 'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo' /can/ be chained
+    -- off those structures\' @pNext@ instead.
+    dynamicGeneratedPipelineLayout :: Bool
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT)
+#endif
+deriving instance Show PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
+
+instance ToCStruct PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (deviceGeneratedCommands))
+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (dynamicGeneratedPipelineLayout))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_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 PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT where
+  peekCStruct p = do
+    deviceGeneratedCommands <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    dynamicGeneratedPipelineLayout <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
+    pure $ PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
+             (bool32ToBool deviceGeneratedCommands)
+             (bool32ToBool dynamicGeneratedPipelineLayout)
+
+instance Storable PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT where
+  zero = PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
+           zero
+           zero
+
+
+-- | VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT - Structure
+-- describing push descriptor limits that can be supported by an
+-- implementation
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT' 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.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_generated_commands VK_EXT_device_generated_commands>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'IndirectCommandsInputModeFlagsEXT',
+-- 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlags',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT = PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
+  { -- | #limits-maxIndirectPipelineCount# @maxIndirectPipelineCount@ is the
+    -- maximum number of pipelines passed to 'createIndirectExecutionSetEXT'.
+    maxIndirectPipelineCount :: Word32
+  , -- | #limits-maxIndirectShaderObjectCount# @maxIndirectShaderObjectCount@ is
+    -- the maximum number of shader objects passed to
+    -- 'createIndirectExecutionSetEXT'. If this value is zero, binding shader
+    -- objects indirectly is not supported.
+    maxIndirectShaderObjectCount :: Word32
+  , -- | #limits-maxIndirectSequenceCount# @maxIndirectSequenceCount@ is the
+    -- maximum number of sequences in 'GeneratedCommandsInfoEXT' and in
+    -- 'GeneratedCommandsMemoryRequirementsInfoEXT'.
+    maxIndirectSequenceCount :: Word32
+  , -- | #limits-maxIndirectCommandsTokenCount# @maxIndirectCommandsTokenCount@
+    -- is the maximum number of tokens in
+    -- 'IndirectCommandsLayoutCreateInfoEXT'.
+    maxIndirectCommandsTokenCount :: Word32
+  , -- | #limits-maxIndirectCommandsTokenOffset# @maxIndirectCommandsTokenOffset@
+    -- is the maximum offset in 'IndirectCommandsLayoutTokenEXT'.
+    maxIndirectCommandsTokenOffset :: Word32
+  , -- | #limits-maxIndirectCommandsIndirectStride#
+    -- @maxIndirectCommandsIndirectStride@ is the maximum stream stride in
+    -- 'IndirectCommandsLayoutCreateInfoEXT'.
+    maxIndirectCommandsIndirectStride :: Word32
+  , -- | #limits-supportedIndirectCommandsInputModes#
+    -- @supportedIndirectCommandsInputModes@ indicates the supported input
+    -- modes.
+    supportedIndirectCommandsInputModes :: IndirectCommandsInputModeFlagsEXT
+  , -- | #limits-supportedIndirectCommandsShaderStages#
+    -- @supportedIndirectCommandsShaderStages@ indicates the stages which /can/
+    -- be used to generate indirect commands. Implementations are required to
+    -- support, at minimum:
+    -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+    -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT',
+    -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT'.
+    supportedIndirectCommandsShaderStages :: ShaderStageFlags
+  , -- | #limits-supportedIndirectCommandsShaderStagesPipelineBinding#
+    -- @supportedIndirectCommandsShaderStagesPipelineBinding@ indicates the
+    -- stages which /can/ be used within indirect execution sets for indirectly
+    -- binding shader stages using pipelines.
+    supportedIndirectCommandsShaderStagesPipelineBinding :: ShaderStageFlags
+  , -- | #limits-supportedIndirectCommandsShaderStagesShaderBinding#
+    -- @supportedIndirectCommandsShaderStagesShaderBinding@ indicates the
+    -- stages which /can/ be used within indirect execution sets for indirectly
+    -- binding shader stages using shader objects.
+    supportedIndirectCommandsShaderStagesShaderBinding :: ShaderStageFlags
+  , -- | #limits-deviceGeneratedCommandsTransformFeedback#
+    -- @deviceGeneratedCommandsTransformFeedback@ indicates whether the
+    -- implementation supports interactions with @VK_EXT_transform_feedback@
+    -- for pipelines not created with
+    -- 'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXT'.
+    deviceGeneratedCommandsTransformFeedback :: Bool
+  , -- | #limits-deviceGeneratedCommandsMultiDrawIndirectCount#
+    -- @deviceGeneratedCommandsMultiDrawIndirectCount@ indicates whether the
+    -- implementation supports COUNT variants of multi-draw indirect tokens.
+    deviceGeneratedCommandsMultiDrawIndirectCount :: Bool
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT)
+#endif
+deriving instance Show PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
+
+instance ToCStruct PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT where
+  withCStruct x f = allocaBytes 64 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (maxIndirectPipelineCount)
+    poke ((p `plusPtr` 20 :: Ptr Word32)) (maxIndirectShaderObjectCount)
+    poke ((p `plusPtr` 24 :: Ptr Word32)) (maxIndirectSequenceCount)
+    poke ((p `plusPtr` 28 :: Ptr Word32)) (maxIndirectCommandsTokenCount)
+    poke ((p `plusPtr` 32 :: Ptr Word32)) (maxIndirectCommandsTokenOffset)
+    poke ((p `plusPtr` 36 :: Ptr Word32)) (maxIndirectCommandsIndirectStride)
+    poke ((p `plusPtr` 40 :: Ptr IndirectCommandsInputModeFlagsEXT)) (supportedIndirectCommandsInputModes)
+    poke ((p `plusPtr` 44 :: Ptr ShaderStageFlags)) (supportedIndirectCommandsShaderStages)
+    poke ((p `plusPtr` 48 :: Ptr ShaderStageFlags)) (supportedIndirectCommandsShaderStagesPipelineBinding)
+    poke ((p `plusPtr` 52 :: Ptr ShaderStageFlags)) (supportedIndirectCommandsShaderStagesShaderBinding)
+    poke ((p `plusPtr` 56 :: Ptr Bool32)) (boolToBool32 (deviceGeneratedCommandsTransformFeedback))
+    poke ((p `plusPtr` 60 :: Ptr Bool32)) (boolToBool32 (deviceGeneratedCommandsMultiDrawIndirectCount))
+    f
+  cStructSize = 64
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_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)
+    poke ((p `plusPtr` 36 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 40 :: Ptr IndirectCommandsInputModeFlagsEXT)) (zero)
+    poke ((p `plusPtr` 44 :: Ptr ShaderStageFlags)) (zero)
+    poke ((p `plusPtr` 48 :: Ptr ShaderStageFlags)) (zero)
+    poke ((p `plusPtr` 52 :: Ptr ShaderStageFlags)) (zero)
+    poke ((p `plusPtr` 56 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 60 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT where
+  peekCStruct p = do
+    maxIndirectPipelineCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    maxIndirectShaderObjectCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
+    maxIndirectSequenceCount <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))
+    maxIndirectCommandsTokenCount <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))
+    maxIndirectCommandsTokenOffset <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))
+    maxIndirectCommandsIndirectStride <- peek @Word32 ((p `plusPtr` 36 :: Ptr Word32))
+    supportedIndirectCommandsInputModes <- peek @IndirectCommandsInputModeFlagsEXT ((p `plusPtr` 40 :: Ptr IndirectCommandsInputModeFlagsEXT))
+    supportedIndirectCommandsShaderStages <- peek @ShaderStageFlags ((p `plusPtr` 44 :: Ptr ShaderStageFlags))
+    supportedIndirectCommandsShaderStagesPipelineBinding <- peek @ShaderStageFlags ((p `plusPtr` 48 :: Ptr ShaderStageFlags))
+    supportedIndirectCommandsShaderStagesShaderBinding <- peek @ShaderStageFlags ((p `plusPtr` 52 :: Ptr ShaderStageFlags))
+    deviceGeneratedCommandsTransformFeedback <- peek @Bool32 ((p `plusPtr` 56 :: Ptr Bool32))
+    deviceGeneratedCommandsMultiDrawIndirectCount <- peek @Bool32 ((p `plusPtr` 60 :: Ptr Bool32))
+    pure $ PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
+             maxIndirectPipelineCount
+             maxIndirectShaderObjectCount
+             maxIndirectSequenceCount
+             maxIndirectCommandsTokenCount
+             maxIndirectCommandsTokenOffset
+             maxIndirectCommandsIndirectStride
+             supportedIndirectCommandsInputModes
+             supportedIndirectCommandsShaderStages
+             supportedIndirectCommandsShaderStagesPipelineBinding
+             supportedIndirectCommandsShaderStagesShaderBinding
+             (bool32ToBool deviceGeneratedCommandsTransformFeedback)
+             (bool32ToBool deviceGeneratedCommandsMultiDrawIndirectCount)
+
+instance Storable PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT where
+  sizeOf ~_ = 64
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT where
+  zero = PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkGeneratedCommandsPipelineInfoEXT - Structure specifying a pipeline for
+-- use with indirect command preprocessing
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'GeneratedCommandsInfoEXT'
+--
+--     -   'GeneratedCommandsMemoryRequirementsInfoEXT'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_generated_commands VK_EXT_device_generated_commands>,
+-- 'Vulkan.Core10.Handles.Pipeline',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data GeneratedCommandsPipelineInfoEXT = GeneratedCommandsPipelineInfoEXT
+  { -- | @pipeline@ is a valid pipeline object.
+    --
+    -- #VUID-VkGeneratedCommandsPipelineInfoEXT-pipeline-parameter# @pipeline@
+    -- /must/ be a valid 'Vulkan.Core10.Handles.Pipeline' handle
+    pipeline :: Pipeline }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (GeneratedCommandsPipelineInfoEXT)
+#endif
+deriving instance Show GeneratedCommandsPipelineInfoEXT
+
+instance ToCStruct GeneratedCommandsPipelineInfoEXT where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p GeneratedCommandsPipelineInfoEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GENERATED_COMMANDS_PIPELINE_INFO_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Pipeline)) (pipeline)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GENERATED_COMMANDS_PIPELINE_INFO_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Pipeline)) (zero)
+    f
+
+instance FromCStruct GeneratedCommandsPipelineInfoEXT where
+  peekCStruct p = do
+    pipeline <- peek @Pipeline ((p `plusPtr` 16 :: Ptr Pipeline))
+    pure $ GeneratedCommandsPipelineInfoEXT
+             pipeline
+
+instance Storable GeneratedCommandsPipelineInfoEXT where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero GeneratedCommandsPipelineInfoEXT where
+  zero = GeneratedCommandsPipelineInfoEXT
+           zero
+
+
+-- | VkGeneratedCommandsShaderInfoEXT - Structure specifying shader objects
+-- for use with indirect command preprocessing
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'GeneratedCommandsInfoEXT'
+--
+--     -   'GeneratedCommandsMemoryRequirementsInfoEXT'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_generated_commands VK_EXT_device_generated_commands>,
+-- 'Vulkan.Extensions.Handles.ShaderEXT',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data GeneratedCommandsShaderInfoEXT = GeneratedCommandsShaderInfoEXT
+  { -- | @pShaders@ is a pointer to an array of shader objects.
+    --
+    -- #VUID-VkGeneratedCommandsShaderInfoEXT-pShaders-11127# @pShaders@ /must/
+    -- not contain more than one shader object for a given
+    -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits' stage
+    --
+    -- #VUID-VkGeneratedCommandsShaderInfoEXT-pShaders-parameter# @pShaders@
+    -- /must/ be a valid pointer to an array of @shaderCount@ valid
+    -- 'Vulkan.Extensions.Handles.ShaderEXT' handles
+    shaders :: Vector ShaderEXT }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (GeneratedCommandsShaderInfoEXT)
+#endif
+deriving instance Show GeneratedCommandsShaderInfoEXT
+
+instance ToCStruct GeneratedCommandsShaderInfoEXT where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p GeneratedCommandsShaderInfoEXT{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GENERATED_COMMANDS_SHADER_INFO_EXT)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (shaders)) :: Word32))
+    pPShaders' <- ContT $ allocaBytes @ShaderEXT ((Data.Vector.length (shaders)) * 8)
+    lift $ Data.Vector.imapM_ (\i e -> poke (pPShaders' `plusPtr` (8 * (i)) :: Ptr ShaderEXT) (e)) (shaders)
+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr ShaderEXT))) (pPShaders')
+    lift $ f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GENERATED_COMMANDS_SHADER_INFO_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    f
+
+instance FromCStruct GeneratedCommandsShaderInfoEXT where
+  peekCStruct p = do
+    shaderCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    pShaders <- peek @(Ptr ShaderEXT) ((p `plusPtr` 24 :: Ptr (Ptr ShaderEXT)))
+    pShaders' <- generateM (fromIntegral shaderCount) (\i -> peek @ShaderEXT ((pShaders `advancePtrBytes` (8 * (i)) :: Ptr ShaderEXT)))
+    pure $ GeneratedCommandsShaderInfoEXT
+             pShaders'
+
+instance Zero GeneratedCommandsShaderInfoEXT where
+  zero = GeneratedCommandsShaderInfoEXT
+           mempty
+
+
+-- | VkGeneratedCommandsMemoryRequirementsInfoEXT - Structure specifying
+-- parameters for the reservation of preprocess buffer space
+--
+-- = Description
+--
+-- If the action command token for the layout is not a COUNT-type
+-- multi-draw indirect token, @maxDrawCount@ is ignored.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkGeneratedCommandsMemoryRequirementsInfoEXT-maxSequencesCount-11009#
+--     @maxSequencesCount@ /must/ be less or equal to
+--     'PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT'::@maxIndirectSequenceCount@
+--
+-- -   #VUID-VkGeneratedCommandsMemoryRequirementsInfoEXT-indirectCommandsLayout-11010#
+--     If @indirectCommandsLayout@ was created with a token sequence that
+--     contained the 'INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT'
+--     token, @indirectExecutionSet@ /must/ not be
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-VkGeneratedCommandsMemoryRequirementsInfoEXT-indirectCommandsLayout-11151#
+--     If @indirectCommandsLayout@ was created with a token sequence that
+--     contained the 'INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT'
+--     token, the shader stages used to create the initial shader state of
+--     @indirectExecutionSet@ /must/ equal the
+--     'IndirectCommandsExecutionSetTokenEXT'::@shaderStages@ used to
+--     create @indirectCommandsLayout@
+--
+-- -   #VUID-VkGeneratedCommandsMemoryRequirementsInfoEXT-indirectCommandsLayout-11011#
+--     If @indirectCommandsLayout@ was not created with a token sequence
+--     that contained the 'INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT'
+--     token, @indirectExecutionSet@ /must/ be
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-VkGeneratedCommandsMemoryRequirementsInfoEXT-maxDrawCount-11146#
+--     When not ignored, @maxDrawCount@ × @maxSequenceCount@ /must/ be less
+--     than 2^24
+--
+-- -   #VUID-VkGeneratedCommandsMemoryRequirementsInfoEXT-indirectExecutionSet-11012#
+--     If @indirectExecutionSet@ is
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', either a
+--     'GeneratedCommandsPipelineInfoEXT' or a
+--     'GeneratedCommandsShaderInfoEXT' /must/ be included in the @pNext@
+--     chain
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkGeneratedCommandsMemoryRequirementsInfoEXT-sType-sType#
+--     @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXT'
+--
+-- -   #VUID-VkGeneratedCommandsMemoryRequirementsInfoEXT-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
+--     'GeneratedCommandsPipelineInfoEXT' or
+--     'GeneratedCommandsShaderInfoEXT'
+--
+-- -   #VUID-VkGeneratedCommandsMemoryRequirementsInfoEXT-sType-unique# The
+--     @sType@ value of each structure in the @pNext@ chain /must/ be
+--     unique
+--
+-- -   #VUID-VkGeneratedCommandsMemoryRequirementsInfoEXT-indirectExecutionSet-parameter#
+--     If @indirectExecutionSet@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', @indirectExecutionSet@
+--     /must/ be a valid
+--     'Vulkan.Extensions.Handles.IndirectExecutionSetEXT' handle
+--
+-- -   #VUID-VkGeneratedCommandsMemoryRequirementsInfoEXT-indirectCommandsLayout-parameter#
+--     @indirectCommandsLayout@ /must/ be a valid
+--     'Vulkan.Extensions.Handles.IndirectCommandsLayoutEXT' handle
+--
+-- -   #VUID-VkGeneratedCommandsMemoryRequirementsInfoEXT-commonparent#
+--     Both of @indirectCommandsLayout@, and @indirectExecutionSet@ that
+--     are valid handles of non-ignored parameters /must/ have been
+--     created, allocated, or retrieved from the same
+--     'Vulkan.Core10.Handles.Device'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_generated_commands VK_EXT_device_generated_commands>,
+-- 'Vulkan.Extensions.Handles.IndirectCommandsLayoutEXT',
+-- 'Vulkan.Extensions.Handles.IndirectExecutionSetEXT',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'getGeneratedCommandsMemoryRequirementsEXT'
+data GeneratedCommandsMemoryRequirementsInfoEXT (es :: [Type]) = GeneratedCommandsMemoryRequirementsInfoEXT
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
+    next :: Chain es
+  , -- | @indirectExecutionSet@ is the indirect execution set to be used for
+    -- binding shaders.
+    indirectExecutionSet :: IndirectExecutionSetEXT
+  , -- | @indirectCommandsLayout@ is the
+    -- 'Vulkan.Extensions.Handles.IndirectCommandsLayoutEXT' that this buffer
+    -- memory is intended to be used with.
+    indirectCommandsLayout :: IndirectCommandsLayoutEXT
+  , -- | @maxSequenceCount@ is the maximum number of sequences that this buffer
+    -- memory can be used with.
+    maxSequenceCount :: Word32
+  , -- | @maxDrawCount@ is the maximum number of indirect draws that can be
+    -- executed by any COUNT-type multi-draw indirect tokens. The draw count in
+    -- the indirect buffer is clamped to this value for these token types.
+    maxDrawCount :: Word32
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (GeneratedCommandsMemoryRequirementsInfoEXT (es :: [Type]))
+#endif
+deriving instance Show (Chain es) => Show (GeneratedCommandsMemoryRequirementsInfoEXT es)
+
+instance Extensible GeneratedCommandsMemoryRequirementsInfoEXT where
+  extensibleTypeName = "GeneratedCommandsMemoryRequirementsInfoEXT"
+  setNext GeneratedCommandsMemoryRequirementsInfoEXT{..} next' = GeneratedCommandsMemoryRequirementsInfoEXT{next = next', ..}
+  getNext GeneratedCommandsMemoryRequirementsInfoEXT{..} = next
+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends GeneratedCommandsMemoryRequirementsInfoEXT e => b) -> Maybe b
+  extends _ f
+    | Just Refl <- eqT @e @GeneratedCommandsShaderInfoEXT = Just f
+    | Just Refl <- eqT @e @GeneratedCommandsPipelineInfoEXT = Just f
+    | otherwise = Nothing
+
+instance ( Extendss GeneratedCommandsMemoryRequirementsInfoEXT es
+         , PokeChain es ) => ToCStruct (GeneratedCommandsMemoryRequirementsInfoEXT es) where
+  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p GeneratedCommandsMemoryRequirementsInfoEXT{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXT)
+    pNext'' <- fmap castPtr . ContT $ withChain (next)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
+    lift $ poke ((p `plusPtr` 16 :: Ptr IndirectExecutionSetEXT)) (indirectExecutionSet)
+    lift $ poke ((p `plusPtr` 24 :: Ptr IndirectCommandsLayoutEXT)) (indirectCommandsLayout)
+    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) (maxSequenceCount)
+    lift $ poke ((p `plusPtr` 36 :: Ptr Word32)) (maxDrawCount)
+    lift $ f
+  cStructSize = 40
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXT)
+    pNext' <- fmap castPtr . ContT $ withZeroChain @es
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
+    lift $ poke ((p `plusPtr` 24 :: Ptr IndirectCommandsLayoutEXT)) (zero)
+    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) (zero)
+    lift $ poke ((p `plusPtr` 36 :: Ptr Word32)) (zero)
+    lift $ f
+
+instance ( Extendss GeneratedCommandsMemoryRequirementsInfoEXT es
+         , PeekChain es ) => FromCStruct (GeneratedCommandsMemoryRequirementsInfoEXT es) where
+  peekCStruct p = do
+    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
+    next <- peekChain (castPtr pNext)
+    indirectExecutionSet <- peek @IndirectExecutionSetEXT ((p `plusPtr` 16 :: Ptr IndirectExecutionSetEXT))
+    indirectCommandsLayout <- peek @IndirectCommandsLayoutEXT ((p `plusPtr` 24 :: Ptr IndirectCommandsLayoutEXT))
+    maxSequenceCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))
+    maxDrawCount <- peek @Word32 ((p `plusPtr` 36 :: Ptr Word32))
+    pure $ GeneratedCommandsMemoryRequirementsInfoEXT
+             next
+             indirectExecutionSet
+             indirectCommandsLayout
+             maxSequenceCount
+             maxDrawCount
+
+instance es ~ '[] => Zero (GeneratedCommandsMemoryRequirementsInfoEXT es) where
+  zero = GeneratedCommandsMemoryRequirementsInfoEXT
+           ()
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkIndirectExecutionSetPipelineInfoEXT - Struct specifying parameters of
+-- a newly created indirect execution set containing only pipelines
+--
+-- = Description
+--
+-- The characteristics of @initialPipeline@ will be used to validate all
+-- pipelines added to the set even if they are removed from the set or
+-- destroyed.
+--
+-- When an Indirect Execution Set created with pipelines is used,
+-- @initialPipeline@ constitutes the initial shader state.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkIndirectExecutionSetPipelineInfoEXT-supportedIndirectCommandsShaderStagesPipelineBinding-11015#
+--     If
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-supportedIndirectCommandsShaderStagesPipelineBinding ::supportedIndirectCommandsShaderStagesPipelineBinding>
+--     does not contain
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT',
+--     the 'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint' of
+--     @initialPipeline@ /must/ not be
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_COMPUTE'
+--
+-- -   #VUID-VkIndirectExecutionSetPipelineInfoEXT-supportedIndirectCommandsShaderStagesPipelineBinding-11016#
+--     If
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-supportedIndirectCommandsShaderStagesPipelineBinding ::supportedIndirectCommandsShaderStagesPipelineBinding>
+--     does not contain
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT',
+--     the 'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint' of
+--     @initialPipeline@ /must/ not be
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
+--
+-- -   #VUID-VkIndirectExecutionSetPipelineInfoEXT-supportedIndirectCommandsShaderStagesPipelineBinding-11017#
+--     If
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-supportedIndirectCommandsShaderStagesPipelineBinding ::supportedIndirectCommandsShaderStagesPipelineBinding>
+--     does not contain ray tracing stages, the
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint' of
+--     @initialPipeline@ /must/ not be
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_RAY_TRACING_KHR'
+--
+-- -   #VUID-VkIndirectExecutionSetPipelineInfoEXT-maxPipelineCount-11018#
+--     @maxPipelineCount@ /must/ be between @1@ and
+--     'PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT'::@maxIndirectPipelineCount@
+--
+-- -   #VUID-VkIndirectExecutionSetPipelineInfoEXT-initialPipeline-11019#
+--     @initialPipeline@ /must/ not use descriptors of type
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC'
+--     or
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC'
+--
+-- -   #VUID-VkIndirectExecutionSetPipelineInfoEXT-initialPipeline-11153#
+--     @initialPipeline@ /must/ have been created with
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXT'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkIndirectExecutionSetPipelineInfoEXT-sType-sType# @sType@
+--     /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXT'
+--
+-- -   #VUID-VkIndirectExecutionSetPipelineInfoEXT-initialPipeline-parameter#
+--     @initialPipeline@ /must/ be a valid 'Vulkan.Core10.Handles.Pipeline'
+--     handle
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_generated_commands VK_EXT_device_generated_commands>,
+-- 'IndirectExecutionSetInfoEXT', 'Vulkan.Core10.Handles.Pipeline',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data IndirectExecutionSetPipelineInfoEXT = IndirectExecutionSetPipelineInfoEXT
+  { -- | @initialPipeline@ is the initial pipeline for the set. This pipeline
+    -- will be automatically added to the set at index @0@.
+    initialPipeline :: Pipeline
+  , -- | @maxPipelineCount@ is the maximum number of pipelines stored in the set.
+    maxPipelineCount :: Word32
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (IndirectExecutionSetPipelineInfoEXT)
+#endif
+deriving instance Show IndirectExecutionSetPipelineInfoEXT
+
+instance ToCStruct IndirectExecutionSetPipelineInfoEXT where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p IndirectExecutionSetPipelineInfoEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Pipeline)) (initialPipeline)
+    poke ((p `plusPtr` 24 :: Ptr Word32)) (maxPipelineCount)
+    f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Pipeline)) (zero)
+    poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct IndirectExecutionSetPipelineInfoEXT where
+  peekCStruct p = do
+    initialPipeline <- peek @Pipeline ((p `plusPtr` 16 :: Ptr Pipeline))
+    maxPipelineCount <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))
+    pure $ IndirectExecutionSetPipelineInfoEXT
+             initialPipeline maxPipelineCount
+
+instance Storable IndirectExecutionSetPipelineInfoEXT where
+  sizeOf ~_ = 32
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero IndirectExecutionSetPipelineInfoEXT where
+  zero = IndirectExecutionSetPipelineInfoEXT
+           zero
+           zero
+
+
+-- | VkIndirectExecutionSetShaderLayoutInfoEXT - Struct specifying descriptor
+-- layout parameters of a newly created indirect execution set containing
+-- only shader objects
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkIndirectExecutionSetShaderLayoutInfoEXT-pSetLayouts-11024#
+--     All members of @pSetLayouts@ /must/ not contain descriptors of type
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC'
+--     or
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkIndirectExecutionSetShaderLayoutInfoEXT-sType-sType# @sType@
+--     /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXT'
+--
+-- -   #VUID-VkIndirectExecutionSetShaderLayoutInfoEXT-pSetLayouts-parameter#
+--     If @setLayoutCount@ is not @0@, @pSetLayouts@ /must/ be a valid
+--     pointer to an array of @setLayoutCount@ valid or
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--     'Vulkan.Core10.Handles.DescriptorSetLayout' handles
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_generated_commands VK_EXT_device_generated_commands>,
+-- 'Vulkan.Core10.Handles.DescriptorSetLayout',
+-- 'IndirectExecutionSetShaderInfoEXT',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data IndirectExecutionSetShaderLayoutInfoEXT = IndirectExecutionSetShaderLayoutInfoEXT
+  { -- | @pSetLayouts@ is a pointer to an array containing
+    -- 'Vulkan.Core10.Handles.DescriptorSetLayout' objects used by the shader
+    -- stage. The implementation /must/ not access these objects outside of the
+    -- duration of the command this structure is passed to.
+    setLayouts :: Vector DescriptorSetLayout }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (IndirectExecutionSetShaderLayoutInfoEXT)
+#endif
+deriving instance Show IndirectExecutionSetShaderLayoutInfoEXT
+
+instance ToCStruct IndirectExecutionSetShaderLayoutInfoEXT where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p IndirectExecutionSetShaderLayoutInfoEXT{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXT)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (setLayouts)) :: Word32))
+    pPSetLayouts' <- ContT $ allocaBytes @DescriptorSetLayout ((Data.Vector.length (setLayouts)) * 8)
+    lift $ Data.Vector.imapM_ (\i e -> poke (pPSetLayouts' `plusPtr` (8 * (i)) :: Ptr DescriptorSetLayout) (e)) (setLayouts)
+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr DescriptorSetLayout))) (pPSetLayouts')
+    lift $ f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    f
+
+instance FromCStruct IndirectExecutionSetShaderLayoutInfoEXT where
+  peekCStruct p = do
+    setLayoutCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    pSetLayouts <- peek @(Ptr DescriptorSetLayout) ((p `plusPtr` 24 :: Ptr (Ptr DescriptorSetLayout)))
+    pSetLayouts' <- generateM (fromIntegral setLayoutCount) (\i -> peek @DescriptorSetLayout ((pSetLayouts `advancePtrBytes` (8 * (i)) :: Ptr DescriptorSetLayout)))
+    pure $ IndirectExecutionSetShaderLayoutInfoEXT
+             pSetLayouts'
+
+instance Zero IndirectExecutionSetShaderLayoutInfoEXT where
+  zero = IndirectExecutionSetShaderLayoutInfoEXT
+           mempty
+
+
+-- | VkIndirectExecutionSetShaderInfoEXT - Struct specifying parameters of a
+-- newly created indirect execution set containing only shader objects
+--
+-- = Description
+--
+-- The characteristics of @pInitialShaders@ will be used to validate all
+-- shaders added to the set even if they are removed from the set or
+-- destroyed.
+--
+-- When an Indirect Execution Set created with shader objects is used,
+-- @pInitialShaders@ constitutes the initial shader state.
+--
+-- If @pSetLayoutInfos@ is @NULL@, the descriptor layout parameters are
+-- inherited from the shader object.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkIndirectExecutionSetShaderInfoEXT-pInitialShaders-11020# All
+--     members of @pInitialShaders@ /must/ have a @stage@ supported by
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-supportedIndirectCommandsShaderStagesShaderBinding ::supportedIndirectCommandsShaderStagesShaderBinding>
+--
+-- -   #VUID-VkIndirectExecutionSetShaderInfoEXT-maxShaderCount-11021#
+--     @maxShaderCount@ /must/ not be zero
+--
+-- -   #VUID-VkIndirectExecutionSetShaderInfoEXT-maxShaderCount-11022#
+--     @maxShaderCount@ /must/ be less than or equal to
+--     'PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT'::@maxIndirectShaderObjectCount@
+--
+-- -   #VUID-VkIndirectExecutionSetShaderInfoEXT-maxShaderCount-11036#
+--     @maxShaderCount@ /must/ be greater than or equal to @shaderCount@
+--
+-- -   #VUID-VkIndirectExecutionSetShaderInfoEXT-stage-11023# The @stage@
+--     of each element in the @pInitialShaders@ array /must/ be unique
+--
+-- -   #VUID-VkIndirectExecutionSetShaderInfoEXT-pInitialShaders-11154#
+--     Each member of @pInitialShaders@ /must/ have been created with
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDIRECT_BINDABLE_BIT_EXT'
+--
+-- -   #VUID-VkIndirectExecutionSetShaderInfoEXT-pSetLayoutInfos-10929# If
+--     @pSetLayoutInfos@ is not @NULL@, the descriptor layout values
+--     specified /must/ be compatible with the descriptor set layouts
+--     defined at the creation of the shader object
+--
+-- -   #VUID-VkIndirectExecutionSetShaderInfoEXT-pInitialShaders-11321# If
+--     any element of @pInitialShaders@ was created with
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT',
+--     all elements of @pInitialShaders@ /must/ have been created with
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT'
+--
+-- -   #VUID-VkIndirectExecutionSetShaderInfoEXT-pInitialShaders-11322# If
+--     any element of @pInitialShaders@ was created without
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT',
+--     all elements of @pInitialShaders@ /must/ have been created without
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT'
+--
+-- -   #VUID-VkIndirectExecutionSetShaderInfoEXT-pInitialShaders-11323# If
+--     elements of @pInitialShaders@ were created with
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT',
+--     @pSetLayoutInfos@ /must/ be @NULL@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkIndirectExecutionSetShaderInfoEXT-sType-sType# @sType@
+--     /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_INFO_EXT'
+--
+-- -   #VUID-VkIndirectExecutionSetShaderInfoEXT-pInitialShaders-parameter#
+--     @pInitialShaders@ /must/ be a valid pointer to an array of
+--     @shaderCount@ valid 'Vulkan.Extensions.Handles.ShaderEXT' handles
+--
+-- -   #VUID-VkIndirectExecutionSetShaderInfoEXT-pSetLayoutInfos-parameter#
+--     If @pSetLayoutInfos@ is not @NULL@, @pSetLayoutInfos@ /must/ be a
+--     valid pointer to an array of @shaderCount@ valid
+--     'IndirectExecutionSetShaderLayoutInfoEXT' structures
+--
+-- -   #VUID-VkIndirectExecutionSetShaderInfoEXT-pPushConstantRanges-parameter#
+--     If @pushConstantRangeCount@ is not @0@, @pPushConstantRanges@ /must/
+--     be a valid pointer to an array of @pushConstantRangeCount@ valid
+--     'Vulkan.Core10.PipelineLayout.PushConstantRange' structures
+--
+-- -   #VUID-VkIndirectExecutionSetShaderInfoEXT-shaderCount-arraylength#
+--     @shaderCount@ /must/ be greater than @0@
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_generated_commands VK_EXT_device_generated_commands>,
+-- 'IndirectExecutionSetInfoEXT',
+-- 'IndirectExecutionSetShaderLayoutInfoEXT',
+-- 'Vulkan.Core10.PipelineLayout.PushConstantRange',
+-- 'Vulkan.Extensions.Handles.ShaderEXT',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data IndirectExecutionSetShaderInfoEXT = IndirectExecutionSetShaderInfoEXT
+  { -- | @pInitialShaders@ is a pointer to an array containing a
+    -- 'Vulkan.Extensions.Handles.ShaderEXT' object for each shader stage that
+    -- will be used in the set. These shaders will be automatically added to
+    -- the set beginning at index @0@.
+    initialShaders :: Vector ShaderEXT
+  , -- | @pSetLayoutInfos@ is NULL or a pointer to an array containing a
+    -- 'IndirectExecutionSetShaderLayoutInfoEXT' used by each corresponding
+    -- @pInitialShaders@ shader stage in the set.
+    setLayoutInfos :: Vector IndirectExecutionSetShaderLayoutInfoEXT
+  , -- | @maxShaderCount@ is the maximum number of shader objects stored in the
+    -- set.
+    maxShaderCount :: Word32
+  , -- | @pPushConstantRanges@ is a pointer to the array of
+    -- 'Vulkan.Core10.PipelineLayout.PushConstantRange' ranges used by all
+    -- shaders in the set.
+    pushConstantRanges :: Vector PushConstantRange
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (IndirectExecutionSetShaderInfoEXT)
+#endif
+deriving instance Show IndirectExecutionSetShaderInfoEXT
+
+instance ToCStruct IndirectExecutionSetShaderInfoEXT where
+  withCStruct x f = allocaBytes 56 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p IndirectExecutionSetShaderInfoEXT{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_INFO_EXT)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    let pInitialShadersLength = Data.Vector.length $ (initialShaders)
+    let pSetLayoutInfosLength = Data.Vector.length $ (setLayoutInfos)
+    lift $ unless (fromIntegral pSetLayoutInfosLength == pInitialShadersLength || pSetLayoutInfosLength == 0) $
+      throwIO $ IOError Nothing InvalidArgument "" "pSetLayoutInfos and pInitialShaders must have the same length" Nothing Nothing
+    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral pInitialShadersLength :: Word32))
+    pPInitialShaders' <- ContT $ allocaBytes @ShaderEXT ((Data.Vector.length (initialShaders)) * 8)
+    lift $ Data.Vector.imapM_ (\i e -> poke (pPInitialShaders' `plusPtr` (8 * (i)) :: Ptr ShaderEXT) (e)) (initialShaders)
+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr ShaderEXT))) (pPInitialShaders')
+    pSetLayoutInfos'' <- if Data.Vector.null (setLayoutInfos)
+      then pure nullPtr
+      else do
+        pPSetLayoutInfos <- ContT $ allocaBytes @IndirectExecutionSetShaderLayoutInfoEXT (((Data.Vector.length (setLayoutInfos))) * 32)
+        Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPSetLayoutInfos `plusPtr` (32 * (i)) :: Ptr IndirectExecutionSetShaderLayoutInfoEXT) (e) . ($ ())) ((setLayoutInfos))
+        pure $ pPSetLayoutInfos
+    lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr IndirectExecutionSetShaderLayoutInfoEXT))) pSetLayoutInfos''
+    lift $ poke ((p `plusPtr` 40 :: Ptr Word32)) (maxShaderCount)
+    lift $ poke ((p `plusPtr` 44 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (pushConstantRanges)) :: Word32))
+    pPPushConstantRanges' <- ContT $ allocaBytes @PushConstantRange ((Data.Vector.length (pushConstantRanges)) * 12)
+    lift $ Data.Vector.imapM_ (\i e -> poke (pPPushConstantRanges' `plusPtr` (12 * (i)) :: Ptr PushConstantRange) (e)) (pushConstantRanges)
+    lift $ poke ((p `plusPtr` 48 :: Ptr (Ptr PushConstantRange))) (pPPushConstantRanges')
+    lift $ f
+  cStructSize = 56
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_INFO_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 40 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct IndirectExecutionSetShaderInfoEXT where
+  peekCStruct p = do
+    shaderCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    pInitialShaders <- peek @(Ptr ShaderEXT) ((p `plusPtr` 24 :: Ptr (Ptr ShaderEXT)))
+    pInitialShaders' <- generateM (fromIntegral shaderCount) (\i -> peek @ShaderEXT ((pInitialShaders `advancePtrBytes` (8 * (i)) :: Ptr ShaderEXT)))
+    pSetLayoutInfos <- peek @(Ptr IndirectExecutionSetShaderLayoutInfoEXT) ((p `plusPtr` 32 :: Ptr (Ptr IndirectExecutionSetShaderLayoutInfoEXT)))
+    let pSetLayoutInfosLength = if pSetLayoutInfos == nullPtr then 0 else (fromIntegral shaderCount)
+    pSetLayoutInfos' <- generateM pSetLayoutInfosLength (\i -> peekCStruct @IndirectExecutionSetShaderLayoutInfoEXT ((pSetLayoutInfos `advancePtrBytes` (32 * (i)) :: Ptr IndirectExecutionSetShaderLayoutInfoEXT)))
+    maxShaderCount <- peek @Word32 ((p `plusPtr` 40 :: Ptr Word32))
+    pushConstantRangeCount <- peek @Word32 ((p `plusPtr` 44 :: Ptr Word32))
+    pPushConstantRanges <- peek @(Ptr PushConstantRange) ((p `plusPtr` 48 :: Ptr (Ptr PushConstantRange)))
+    pPushConstantRanges' <- generateM (fromIntegral pushConstantRangeCount) (\i -> peekCStruct @PushConstantRange ((pPushConstantRanges `advancePtrBytes` (12 * (i)) :: Ptr PushConstantRange)))
+    pure $ IndirectExecutionSetShaderInfoEXT
+             pInitialShaders'
+             pSetLayoutInfos'
+             maxShaderCount
+             pPushConstantRanges'
+
+instance Zero IndirectExecutionSetShaderInfoEXT where
+  zero = IndirectExecutionSetShaderInfoEXT
+           mempty
+           mempty
+           zero
+           mempty
+
+
+-- | VkIndirectExecutionSetCreateInfoEXT - Structure specifying parameters of
+-- a newly created indirect execution set
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkIndirectExecutionSetCreateInfoEXT-maxIndirectShaderObjectCount-11014#
+--     If
+--     'PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT'::@maxIndirectShaderObjectCount@
+--     is zero or the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-shaderObject shaderObject>
+--     feature is not enabled @type@ /must/ not be
+--     'INDIRECT_EXECUTION_SET_INFO_TYPE_SHADER_OBJECTS_EXT'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkIndirectExecutionSetCreateInfoEXT-sType-sType# @sType@
+--     /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_CREATE_INFO_EXT'
+--
+-- -   #VUID-VkIndirectExecutionSetCreateInfoEXT-type-parameter# @type@
+--     /must/ be a valid 'IndirectExecutionSetInfoTypeEXT' value
+--
+-- -   #VUID-VkIndirectExecutionSetCreateInfoEXT-pPipelineInfo-parameter#
+--     If @type@ is 'INDIRECT_EXECUTION_SET_INFO_TYPE_PIPELINES_EXT', the
+--     @pPipelineInfo@ member of @info@ /must/ be a valid pointer to a
+--     valid 'IndirectExecutionSetPipelineInfoEXT' structure
+--
+-- -   #VUID-VkIndirectExecutionSetCreateInfoEXT-pShaderInfo-parameter# If
+--     @type@ is 'INDIRECT_EXECUTION_SET_INFO_TYPE_SHADER_OBJECTS_EXT', the
+--     @pShaderInfo@ member of @info@ /must/ be a valid pointer to a valid
+--     'IndirectExecutionSetShaderInfoEXT' structure
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_generated_commands VK_EXT_device_generated_commands>,
+-- 'IndirectExecutionSetInfoEXT', 'IndirectExecutionSetInfoTypeEXT',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'createIndirectExecutionSetEXT'
+data IndirectExecutionSetCreateInfoEXT = IndirectExecutionSetCreateInfoEXT
+  { -- | @type@ is a 'IndirectExecutionSetInfoTypeEXT' describing the type of set
+    -- being created and determining which field of the @info@ union will be
+    -- used.
+    type' :: IndirectExecutionSetInfoTypeEXT
+  , -- | @info@ is a 'IndirectExecutionSetInfoEXT' union containing layout
+    -- information for the set.
+    info :: IndirectExecutionSetInfoEXT
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (IndirectExecutionSetCreateInfoEXT)
+#endif
+deriving instance Show IndirectExecutionSetCreateInfoEXT
+
+instance ToCStruct IndirectExecutionSetCreateInfoEXT where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p IndirectExecutionSetCreateInfoEXT{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_CREATE_INFO_EXT)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr IndirectExecutionSetInfoTypeEXT)) (type')
+    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr IndirectExecutionSetInfoEXT)) (info) . ($ ())
+    lift $ f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_CREATE_INFO_EXT)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr IndirectExecutionSetInfoTypeEXT)) (zero)
+    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr IndirectExecutionSetInfoEXT)) (zero) . ($ ())
+    lift $ f
+
+instance Zero IndirectExecutionSetCreateInfoEXT where
+  zero = IndirectExecutionSetCreateInfoEXT
+           zero
+           zero
+
+
+-- | VkGeneratedCommandsInfoEXT - Structure specifying parameters for the
+-- generation of commands
+--
+-- = Description
+--
+-- If @sequenceCountAddress@ is not @NULL@, then @maxSequenceCount@ is the
+-- maximum number of sequences that can be executed. The actual number is
+-- @min(maxSequenceCount, *sequenceCountAddress)@. If
+-- @sequenceCountAddress@ is @NULL@, then @maxSequenceCount@ is the exact
+-- number of sequences to execute.
+--
+-- If the action command token for the layout is not a COUNT-type
+-- multi-draw indirect token, @maxDrawCount@ is ignored.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkGeneratedCommandsInfoEXT-preprocessAddress-11063# If
+--     'getGeneratedCommandsMemoryRequirementsEXT' returns a non-zero size,
+--     @preprocessAddress@ /must/ not be @0@
+--
+-- -   #VUID-VkGeneratedCommandsInfoEXT-preprocessAddress-11064#
+--     'Vulkan.Core10.Handles.DeviceMemory' objects bound to the underlying
+--     buffer for @preprocessAddress@ /must/ have been allocated using one
+--     of the memory types allowed in the @memoryTypeBits@ member of the
+--     'Vulkan.Core10.MemoryManagement.MemoryRequirements' structure
+--     returned by 'getGeneratedCommandsMemoryRequirementsEXT'
+--
+-- -   #VUID-VkGeneratedCommandsInfoEXT-indirectCommandsLayout-11065# If
+--     the @indirectCommandsLayout@ uses a token of
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT', then the
+--     @indirectExecutionSet@’s push constant layout /must/ contain the
+--     @updateRange@ specified in 'IndirectCommandsPushConstantTokenEXT'
+--
+-- -   #VUID-VkGeneratedCommandsInfoEXT-indirectCommandsLayout-11066# If
+--     the @indirectCommandsLayout@ uses a token of
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT', then the
+--     @indirectExecutionSet@’s push constant layout /must/ contain the
+--     @updateRange@ specified in 'IndirectCommandsPushConstantTokenEXT'
+--
+-- -   #VUID-VkGeneratedCommandsInfoEXT-maxSequenceCount-11067#
+--     @maxSequenceCount@ /must/ be less or equal to
+--     'PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT'::@maxIndirectSequenceCount@
+--     and 'GeneratedCommandsMemoryRequirementsInfoEXT'::@maxSequenceCount@
+--     that was used to determine the @preprocessSize@
+--
+-- -   #VUID-VkGeneratedCommandsInfoEXT-sequenceCountAddress-11068# If
+--     @sequenceCountAddress@ is not @NULL@, the value contained in the
+--     address /must/ be less or equal to
+--     'PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT'::@maxIndirectSequenceCount@
+--     and 'GeneratedCommandsMemoryRequirementsInfoEXT'::@maxSequenceCount@
+--     that was used to determine the @preprocessSize@
+--
+-- -   #VUID-VkGeneratedCommandsInfoEXT-maxSequenceCount-10246#
+--     @maxSequenceCount@ /must/ not be zero
+--
+-- -   #VUID-VkGeneratedCommandsInfoEXT-preprocessAddress-11069#
+--     @preprocessAddress@ /must/ be a device address allocated to the
+--     application from a buffer created with the
+--     'Vulkan.Core14.Enums.BufferUsageFlags2.BUFFER_USAGE_2_PREPROCESS_BUFFER_BIT_EXT'
+--     usage flag set
+--
+-- -   #VUID-VkGeneratedCommandsInfoEXT-indirectCommandsLayout-11144# If
+--     the @indirectCommandsLayout@ contains a
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT' token, and there is
+--     a descriptor and push constant layout info provided either by
+--     @pipelineLayout@ or through a
+--     'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo' in @pNext@
+--     of the 'IndirectCommandsLayoutCreateInfoEXT' used to create
+--     @indirectCommandsLayout@, the pipeline layout /must/ be
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-compatibility compatible>
+--     with the descriptor and push constant layout info used by
+--     @indirectExecutionSet@
+--
+-- -   #VUID-VkGeneratedCommandsInfoEXT-indirectCommandsLayout-11328# If
+--     the @indirectCommandsLayout@ contains a
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT' token, and there
+--     was no descriptor and push constant layout info provided either by
+--     @pipelineLayout@ or through a
+--     'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo' in @pNext@
+--     of the 'IndirectCommandsLayoutCreateInfoEXT' used to create
+--     @indirectCommandsLayout@, pipelines in @indirectExecutionSet@ /must/
+--     have been created with
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT'
+--
+-- -   #VUID-VkGeneratedCommandsInfoEXT-indirectCommandsLayout-11329# If
+--     the @indirectCommandsLayout@ contains a
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT' token, and there
+--     was a descriptor and push constant layout info provided either by
+--     @pipelineLayout@ or through a
+--     'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo' in @pNext@
+--     of the 'IndirectCommandsLayoutCreateInfoEXT' used to create
+--     @indirectCommandsLayout@, pipelines in @indirectExecutionSet@ /must/
+--     have been created without
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT'
+--
+-- -   #VUID-VkGeneratedCommandsInfoEXT-indirectCommandsLayout-11330# If
+--     the @indirectCommandsLayout@ contains a
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT' token, and there
+--     was no descriptor and push constant layout info provided either by
+--     @pipelineLayout@ or through a
+--     'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo' in @pNext@
+--     of the 'IndirectCommandsLayoutCreateInfoEXT' used to create
+--     @indirectCommandsLayout@, shaders in @indirectExecutionSet@ /must/
+--     have been created with
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT'
+--
+-- -   #VUID-VkGeneratedCommandsInfoEXT-indirectCommandsLayout-11331# If
+--     the @indirectCommandsLayout@ contains a
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT' token, and there
+--     was a descriptor and push constant layout info provided either by
+--     @pipelineLayout@ or through a
+--     'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo' in @pNext@
+--     of the 'IndirectCommandsLayoutCreateInfoEXT' used to create
+--     @indirectCommandsLayout@, shaders in @indirectExecutionSet@ /must/
+--     have been created without
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT'
+--
+-- -   #VUID-VkGeneratedCommandsInfoEXT-indirectCommandsLayout-11002# If
+--     @indirectCommandsLayout@ was created with a token sequence that
+--     contained the 'INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT'
+--     token, the shader stages used to create the initial shader state of
+--     @indirectExecutionSet@ /must/ equal the
+--     'IndirectCommandsExecutionSetTokenEXT'::@shaderStages@ used to
+--     create @indirectCommandsLayout@
+--
+-- -   #VUID-VkGeneratedCommandsInfoEXT-preprocessSize-11071#
+--     @preprocessSize@ /must/ be greater than or equal to the memory
+--     requirement’s size returned by
+--     'getGeneratedCommandsMemoryRequirementsEXT' using the matching
+--     inputs (@indirectCommandsLayout@, …​) as within this structure
+--
+-- -   #VUID-VkGeneratedCommandsInfoEXT-sequenceCountAddress-11072# The
+--     underlying buffer for @sequenceCountAddress@ /must/ have the
+--     'Vulkan.Extensions.VK_KHR_maintenance5.BUFFER_USAGE_2_INDIRECT_BUFFER_BIT_KHR'
+--     bit set in its usage flag
+--
+-- -   #VUID-VkGeneratedCommandsInfoEXT-sequenceCountAddress-11073# If
+--     @sequenceCountAddress@ is not @NULL@, @sequenceCountAddress@ /must/
+--     be aligned to @4@
+--
+-- -   #VUID-VkGeneratedCommandsInfoEXT-indirectAddress-12407# The
+--     underlying buffer for @indirectAddress@ /must/ have the
+--     'Vulkan.Extensions.VK_KHR_maintenance5.BUFFER_USAGE_2_INDIRECT_BUFFER_BIT_KHR'
+--     bit set in its usage flag
+--
+-- -   #VUID-VkGeneratedCommandsInfoEXT-indirectAddress-11074#
+--     @indirectAddress@ /must/ be aligned to @4@
+--
+-- -   #VUID-VkGeneratedCommandsInfoEXT-indirectAddressSize-11077#
+--     @indirectAddressSize@ /must/ be greater than zero
+--
+-- -   #VUID-VkGeneratedCommandsInfoEXT-maxDrawCount-11078# When not
+--     ignored, @maxDrawCount@ × @maxSequenceCount@ /must/ be less than
+--     2^24
+--
+-- -   #VUID-VkGeneratedCommandsInfoEXT-indirectCommandsLayout-11079# If
+--     @indirectCommandsLayout@ was created using a
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_EXT' token and shader
+--     objects are not bound then the bound graphics pipeline /must/ have
+--     been created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE'
+--     in @pDynamicStates@
+--
+-- -   #VUID-VkGeneratedCommandsInfoEXT-indirectCommandsLayout-11083# If
+--     the token sequence of the passed @indirectCommandsLayout@ contains a
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT' token, the
+--     @indirectExecutionSet@ /must/ not be
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-VkGeneratedCommandsInfoEXT-indirectCommandsLayout-10241# If
+--     the token sequence of the passed @indirectCommandsLayout@ does not
+--     contains a 'INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT' token,
+--     the @indirectExecutionSet@ /must/ be
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-VkGeneratedCommandsInfoEXT-indirectExecutionSet-11080# If
+--     @indirectExecutionSet@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE',
+--     a 'GeneratedCommandsPipelineInfoEXT' or
+--     'GeneratedCommandsShaderInfoEXT' /must/ be included in the @pNext@
+--     chain
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkGeneratedCommandsInfoEXT-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_EXT'
+--
+-- -   #VUID-VkGeneratedCommandsInfoEXT-shaderStages-parameter#
+--     @shaderStages@ /must/ be a valid combination of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits' values
+--
+-- -   #VUID-VkGeneratedCommandsInfoEXT-shaderStages-requiredbitmask#
+--     @shaderStages@ /must/ not be @0@
+--
+-- -   #VUID-VkGeneratedCommandsInfoEXT-indirectExecutionSet-parameter# If
+--     @indirectExecutionSet@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', @indirectExecutionSet@
+--     /must/ be a valid
+--     'Vulkan.Extensions.Handles.IndirectExecutionSetEXT' handle
+--
+-- -   #VUID-VkGeneratedCommandsInfoEXT-indirectCommandsLayout-parameter#
+--     @indirectCommandsLayout@ /must/ be a valid
+--     'Vulkan.Extensions.Handles.IndirectCommandsLayoutEXT' handle
+--
+-- -   #VUID-VkGeneratedCommandsInfoEXT-indirectAddress-parameter#
+--     @indirectAddress@ /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' value
+--
+-- -   #VUID-VkGeneratedCommandsInfoEXT-preprocessAddress-parameter# If
+--     @preprocessAddress@ is not @0@, @preprocessAddress@ /must/ be a
+--     valid 'Vulkan.Core10.FundamentalTypes.DeviceAddress' value
+--
+-- -   #VUID-VkGeneratedCommandsInfoEXT-sequenceCountAddress-parameter# If
+--     @sequenceCountAddress@ is not @0@, @sequenceCountAddress@ /must/ be
+--     a valid 'Vulkan.Core10.FundamentalTypes.DeviceAddress' value
+--
+-- -   #VUID-VkGeneratedCommandsInfoEXT-commonparent# Both of
+--     @indirectCommandsLayout@, and @indirectExecutionSet@ that are valid
+--     handles of non-ignored parameters /must/ have been created,
+--     allocated, or retrieved from the same 'Vulkan.Core10.Handles.Device'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_generated_commands VK_EXT_device_generated_commands>,
+-- 'Vulkan.Core10.FundamentalTypes.DeviceAddress',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
+-- 'Vulkan.Extensions.Handles.IndirectCommandsLayoutEXT',
+-- 'Vulkan.Extensions.Handles.IndirectExecutionSetEXT',
+-- 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlags',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'cmdExecuteGeneratedCommandsEXT', 'cmdPreprocessGeneratedCommandsEXT'
+data GeneratedCommandsInfoEXT (es :: [Type]) = GeneratedCommandsInfoEXT
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
+    next :: Chain es
+  , -- | @shaderStages@ is the mask of shader stages used by the commands.
+    shaderStages :: ShaderStageFlags
+  , -- | @indirectExecutionSet@ is the indirect execution set to be used for
+    -- binding shaders.
+    indirectExecutionSet :: IndirectExecutionSetEXT
+  , -- | @indirectCommandsLayout@ is the
+    -- 'Vulkan.Extensions.Handles.IndirectCommandsLayoutEXT' that specifies the
+    -- command sequence data.
+    indirectCommandsLayout :: IndirectCommandsLayoutEXT
+  , -- | @indirectAddress@ is an address that holds the indirect buffer data.
+    indirectAddress :: DeviceAddress
+  , -- | @indirectAddressSize@ is the size in bytes of indirect buffer data
+    -- starting at @indirectAddress@.
+    indirectAddressSize :: DeviceSize
+  , -- | @preprocessAddress@ specifies a physical address of the
+    -- 'Vulkan.Core10.Handles.Buffer' used for preprocessing the input data for
+    -- execution. If this structure is used with
+    -- 'cmdExecuteGeneratedCommandsEXT' with its @isPreprocessed@ set to
+    -- 'Vulkan.Core10.FundamentalTypes.TRUE', then the preprocessing step is
+    -- skipped but data in this address /may/ still be modified. The contents
+    -- and the layout of this address are opaque to applications and /must/ not
+    -- be modified outside functions related to device-generated commands or
+    -- copied to another buffer for reuse.
+    preprocessAddress :: DeviceAddress
+  , -- | @preprocessSize@ is the maximum byte size within @preprocessAddress@
+    -- that is available for preprocessing.
+    preprocessSize :: DeviceSize
+  , -- | @maxSequenceCount@ is used to determine the number of sequences to
+    -- execute.
+    maxSequenceCount :: Word32
+  , -- | @sequenceCountAddress@ specifies an optional physical address of a
+    -- single @uint32_t@ value containing the requested number of sequences to
+    -- execute.
+    sequenceCountAddress :: DeviceAddress
+  , -- | @maxDrawCount@ is the maximum number of indirect draws that can be
+    -- executed by any COUNT-type multi-draw indirect tokens. The draw count in
+    -- the indirect buffer is clamped to this value for these token types.
+    maxDrawCount :: Word32
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (GeneratedCommandsInfoEXT (es :: [Type]))
+#endif
+deriving instance Show (Chain es) => Show (GeneratedCommandsInfoEXT es)
+
+instance Extensible GeneratedCommandsInfoEXT where
+  extensibleTypeName = "GeneratedCommandsInfoEXT"
+  setNext GeneratedCommandsInfoEXT{..} next' = GeneratedCommandsInfoEXT{next = next', ..}
+  getNext GeneratedCommandsInfoEXT{..} = next
+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends GeneratedCommandsInfoEXT e => b) -> Maybe b
+  extends _ f
+    | Just Refl <- eqT @e @GeneratedCommandsShaderInfoEXT = Just f
+    | Just Refl <- eqT @e @GeneratedCommandsPipelineInfoEXT = Just f
+    | otherwise = Nothing
+
+instance ( Extendss GeneratedCommandsInfoEXT es
+         , PokeChain es ) => ToCStruct (GeneratedCommandsInfoEXT es) where
+  withCStruct x f = allocaBytes 96 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p GeneratedCommandsInfoEXT{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_EXT)
+    pNext'' <- fmap castPtr . ContT $ withChain (next)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
+    lift $ poke ((p `plusPtr` 16 :: Ptr ShaderStageFlags)) (shaderStages)
+    lift $ poke ((p `plusPtr` 24 :: Ptr IndirectExecutionSetEXT)) (indirectExecutionSet)
+    lift $ poke ((p `plusPtr` 32 :: Ptr IndirectCommandsLayoutEXT)) (indirectCommandsLayout)
+    lift $ poke ((p `plusPtr` 40 :: Ptr DeviceAddress)) (indirectAddress)
+    lift $ poke ((p `plusPtr` 48 :: Ptr DeviceSize)) (indirectAddressSize)
+    lift $ poke ((p `plusPtr` 56 :: Ptr DeviceAddress)) (preprocessAddress)
+    lift $ poke ((p `plusPtr` 64 :: Ptr DeviceSize)) (preprocessSize)
+    lift $ poke ((p `plusPtr` 72 :: Ptr Word32)) (maxSequenceCount)
+    lift $ poke ((p `plusPtr` 80 :: Ptr DeviceAddress)) (sequenceCountAddress)
+    lift $ poke ((p `plusPtr` 88 :: Ptr Word32)) (maxDrawCount)
+    lift $ f
+  cStructSize = 96
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_EXT)
+    pNext' <- fmap castPtr . ContT $ withZeroChain @es
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
+    lift $ poke ((p `plusPtr` 16 :: Ptr ShaderStageFlags)) (zero)
+    lift $ poke ((p `plusPtr` 32 :: Ptr IndirectCommandsLayoutEXT)) (zero)
+    lift $ poke ((p `plusPtr` 40 :: Ptr DeviceAddress)) (zero)
+    lift $ poke ((p `plusPtr` 48 :: Ptr DeviceSize)) (zero)
+    lift $ poke ((p `plusPtr` 64 :: Ptr DeviceSize)) (zero)
+    lift $ poke ((p `plusPtr` 72 :: Ptr Word32)) (zero)
+    lift $ poke ((p `plusPtr` 88 :: Ptr Word32)) (zero)
+    lift $ f
+
+instance ( Extendss GeneratedCommandsInfoEXT es
+         , PeekChain es ) => FromCStruct (GeneratedCommandsInfoEXT es) where
+  peekCStruct p = do
+    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
+    next <- peekChain (castPtr pNext)
+    shaderStages <- peek @ShaderStageFlags ((p `plusPtr` 16 :: Ptr ShaderStageFlags))
+    indirectExecutionSet <- peek @IndirectExecutionSetEXT ((p `plusPtr` 24 :: Ptr IndirectExecutionSetEXT))
+    indirectCommandsLayout <- peek @IndirectCommandsLayoutEXT ((p `plusPtr` 32 :: Ptr IndirectCommandsLayoutEXT))
+    indirectAddress <- peek @DeviceAddress ((p `plusPtr` 40 :: Ptr DeviceAddress))
+    indirectAddressSize <- peek @DeviceSize ((p `plusPtr` 48 :: Ptr DeviceSize))
+    preprocessAddress <- peek @DeviceAddress ((p `plusPtr` 56 :: Ptr DeviceAddress))
+    preprocessSize <- peek @DeviceSize ((p `plusPtr` 64 :: Ptr DeviceSize))
+    maxSequenceCount <- peek @Word32 ((p `plusPtr` 72 :: Ptr Word32))
+    sequenceCountAddress <- peek @DeviceAddress ((p `plusPtr` 80 :: Ptr DeviceAddress))
+    maxDrawCount <- peek @Word32 ((p `plusPtr` 88 :: Ptr Word32))
+    pure $ GeneratedCommandsInfoEXT
+             next
+             shaderStages
+             indirectExecutionSet
+             indirectCommandsLayout
+             indirectAddress
+             indirectAddressSize
+             preprocessAddress
+             preprocessSize
+             maxSequenceCount
+             sequenceCountAddress
+             maxDrawCount
+
+instance es ~ '[] => Zero (GeneratedCommandsInfoEXT es) where
+  zero = GeneratedCommandsInfoEXT
+           ()
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkWriteIndirectExecutionSetPipelineEXT - Struct specifying pipeline
+-- update information for an indirect execution set
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkWriteIndirectExecutionSetPipelineEXT-index-11026# @index@
+--     /must/ be less than the value of
+--     'IndirectExecutionSetPipelineInfoEXT'::@maxPipelineCount@ used to
+--     create the set
+--
+-- -   #VUID-VkWriteIndirectExecutionSetPipelineEXT-pipeline-11027#
+--     @pipeline@ /must/ have been created with
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXT'
+--
+-- -   #VUID-VkWriteIndirectExecutionSetPipelineEXT-index-11029# @index@
+--     /must/ not be referenced by submitted command buffers
+--
+-- -   #VUID-VkWriteIndirectExecutionSetPipelineEXT-pipeline-11030# The
+--     shader stages contained in @pipeline@ /must/ be supported by
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-supportedIndirectCommandsShaderStagesPipelineBinding ::supportedIndirectCommandsShaderStagesPipelineBinding>
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkWriteIndirectExecutionSetPipelineEXT-sType-sType# @sType@
+--     /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXT'
+--
+-- -   #VUID-VkWriteIndirectExecutionSetPipelineEXT-pipeline-parameter#
+--     @pipeline@ /must/ be a valid 'Vulkan.Core10.Handles.Pipeline' handle
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_generated_commands VK_EXT_device_generated_commands>,
+-- 'Vulkan.Core10.Handles.Pipeline',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'updateIndirectExecutionSetPipelineEXT'
+data WriteIndirectExecutionSetPipelineEXT = WriteIndirectExecutionSetPipelineEXT
+  { -- | @index@ is the element of the set to update
+    index :: Word32
+  , -- | @pipeline@ is the pipeline to store in the indirect execution set
+    pipeline :: Pipeline
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (WriteIndirectExecutionSetPipelineEXT)
+#endif
+deriving instance Show WriteIndirectExecutionSetPipelineEXT
+
+instance ToCStruct WriteIndirectExecutionSetPipelineEXT where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p WriteIndirectExecutionSetPipelineEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (index)
+    poke ((p `plusPtr` 24 :: Ptr Pipeline)) (pipeline)
+    f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 24 :: Ptr Pipeline)) (zero)
+    f
+
+instance FromCStruct WriteIndirectExecutionSetPipelineEXT where
+  peekCStruct p = do
+    index <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    pipeline <- peek @Pipeline ((p `plusPtr` 24 :: Ptr Pipeline))
+    pure $ WriteIndirectExecutionSetPipelineEXT
+             index pipeline
+
+instance Storable WriteIndirectExecutionSetPipelineEXT where
+  sizeOf ~_ = 32
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero WriteIndirectExecutionSetPipelineEXT where
+  zero = WriteIndirectExecutionSetPipelineEXT
+           zero
+           zero
+
+
+-- | VkWriteIndirectExecutionSetShaderEXT - Struct specifying shader object
+-- update information for an indirect execution set
+--
+-- = Description
+--
+-- Shaders need not be stored in the Indirect Execution Set according to
+-- their stage. The only restriction for shader indices within a set is
+-- that the value of the index /must/ be less than the maximum number of
+-- shaders in the set.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkWriteIndirectExecutionSetShaderEXT-index-11031# @index@
+--     /must/ be less than
+--     'IndirectExecutionSetShaderInfoEXT'::@maxShaderCount@
+--
+-- -   #VUID-VkWriteIndirectExecutionSetShaderEXT-shader-11032# @shader@
+--     /must/ have been created with
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDIRECT_BINDABLE_BIT_EXT'
+--
+-- -   #VUID-VkWriteIndirectExecutionSetShaderEXT-pInitialShaders-11033# A
+--     shader created with the same
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits' /must/
+--     have been passed in the
+--     'IndirectExecutionSetShaderInfoEXT'::@pInitialShaders@ array
+--
+-- -   #VUID-VkWriteIndirectExecutionSetShaderEXT-index-11034# @index@
+--     /must/ not be in use by submitted command buffers
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkWriteIndirectExecutionSetShaderEXT-sType-sType# @sType@
+--     /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_SHADER_EXT'
+--
+-- -   #VUID-VkWriteIndirectExecutionSetShaderEXT-shader-parameter#
+--     @shader@ /must/ be a valid 'Vulkan.Extensions.Handles.ShaderEXT'
+--     handle
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_generated_commands VK_EXT_device_generated_commands>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_shader_object VK_EXT_shader_object>,
+-- 'Vulkan.Extensions.Handles.ShaderEXT',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'updateIndirectExecutionSetShaderEXT'
+data WriteIndirectExecutionSetShaderEXT = WriteIndirectExecutionSetShaderEXT
+  { -- | @index@ is the element of the set to update
+    index :: Word32
+  , -- | @shader@ is the shader to store in the indirect execution set
+    shader :: ShaderEXT
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (WriteIndirectExecutionSetShaderEXT)
+#endif
+deriving instance Show WriteIndirectExecutionSetShaderEXT
+
+instance ToCStruct WriteIndirectExecutionSetShaderEXT where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p WriteIndirectExecutionSetShaderEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_SHADER_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (index)
+    poke ((p `plusPtr` 24 :: Ptr ShaderEXT)) (shader)
+    f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_SHADER_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 24 :: Ptr ShaderEXT)) (zero)
+    f
+
+instance FromCStruct WriteIndirectExecutionSetShaderEXT where
+  peekCStruct p = do
+    index <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    shader <- peek @ShaderEXT ((p `plusPtr` 24 :: Ptr ShaderEXT))
+    pure $ WriteIndirectExecutionSetShaderEXT
+             index shader
+
+instance Storable WriteIndirectExecutionSetShaderEXT where
+  sizeOf ~_ = 32
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero WriteIndirectExecutionSetShaderEXT where
+  zero = WriteIndirectExecutionSetShaderEXT
+           zero
+           zero
+
+
+-- | VkIndirectCommandsLayoutCreateInfoEXT - Structure specifying the
+-- parameters of a newly created indirect commands layout object
+--
+-- = Description
+--
+-- The following code illustrates some of the flags:
+--
+-- > void cmdProcessAllSequences(cmd, indirectExecutionSet, indirectCommandsLayout, indirectAddress, sequencesCount)
+-- > {
+-- >   for (s = 0; s < sequencesCount; s++)
+-- >   {
+-- >     sUsed = s;
+-- >
+-- >     if (indirectCommandsLayout.flags & VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_EXT) {
+-- >       sUsed = incoherent_implementation_dependent_permutation[ sUsed ];
+-- >     }
+-- >
+-- >     cmdProcessSequence( cmd, indirectExecutionSet, indirectCommandsLayout, indirectAddress, sUsed );
+-- >   }
+-- > }
+--
+-- When tokens are consumed, an offset is computed based on token offset
+-- and stream stride. The resulting offset is required to be aligned. The
+-- alignment for a specific token is equal to the scalar alignment of the
+-- data type as defined in
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-alignment-requirements Alignment Requirements>,
+-- or @4@, whichever is lower.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkIndirectCommandsLayoutCreateInfoEXT-indirectStride-11090#
+--     @indirectStride@ /must/ be less than or equal to
+--     'PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT'::@maxIndirectCommandsIndirectStride@
+--
+-- -   #VUID-VkIndirectCommandsLayoutCreateInfoEXT-shaderStages-11091#
+--     @shaderStages@ /must/ only contain stages supported by
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-supportedIndirectCommandsShaderStages ::supportedIndirectCommandsShaderStages>
+--
+-- -   #VUID-VkIndirectCommandsLayoutCreateInfoEXT-tokenCount-11092#
+--     @tokenCount@ /must/ be less than or equal to
+--     'PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT'::@maxIndirectCommandsTokenCount@
+--
+-- -   #VUID-VkIndirectCommandsLayoutCreateInfoEXT-pTokens-11093# The
+--     number of tokens in the @pTokens@ array with @type@ equal to
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT' /must/ be less than
+--     or equal to @1@
+--
+-- -   #VUID-VkIndirectCommandsLayoutCreateInfoEXT-pTokens-11145# The
+--     number of tokens in the @pTokens@ array with @type@ equal to
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT' /must/ be less
+--     than or equal to @1@
+--
+-- -   #VUID-VkIndirectCommandsLayoutCreateInfoEXT-pTokens-11094# The
+--     number of tokens in the @pTokens@ array with @type@ equal to
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT' or
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_DATA_SEQUENCE_INDEX_EXT' /must/
+--     be less than or equal to @1@
+--
+-- -   #VUID-VkIndirectCommandsLayoutCreateInfoEXT-pTokens-11095# If the
+--     action command token in the @pTokens@ array is not an indexed draw
+--     token, then @pTokens@ /must/ not contain a member with @type@ set to
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_EXT'
+--
+-- -   #VUID-VkIndirectCommandsLayoutCreateInfoEXT-pTokens-11096# If the
+--     action command token in the @pTokens@ array is not a non-mesh draw
+--     token, then @pTokens@ /must/ not contain a member with @type@ set to
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_EXT'
+--
+-- -   #VUID-VkIndirectCommandsLayoutCreateInfoEXT-pTokens-11097# If the
+--     @pTokens@ array contains multiple tokens with @type@ equal to
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_EXT', then there /must/
+--     be no duplicate
+--     'IndirectCommandsVertexBufferTokenEXT'::@vertexBindingUnit@ values
+--
+-- -   #VUID-VkIndirectCommandsLayoutCreateInfoEXT-pTokens-11099# For all
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT',
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_DATA_EXT',
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_DATA_SEQUENCE_INDEX_EXT', and
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT' type tokens in
+--     @pTokens@, there /must/ be no overlapping ranges between any
+--     specified push constant ranges
+--
+-- -   #VUID-VkIndirectCommandsLayoutCreateInfoEXT-pTokens-11100# The
+--     action command token /must/ be the last token in the @pTokens@ array
+--
+-- -   #VUID-VkIndirectCommandsLayoutCreateInfoEXT-pTokens-11139# If the
+--     @pTokens@ array contains a
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT' token, then this
+--     token /must/ be the first token in the array
+--
+-- -   #VUID-VkIndirectCommandsLayoutCreateInfoEXT-pTokens-11101# For any
+--     element of @pTokens@, if @type@ is
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT' or
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT' and the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-dynamicGeneratedPipelineLayout dynamicGeneratedPipelineLayout>
+--     feature is not enabled, then the @pipelineLayout@ /must/ not be
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-VkIndirectCommandsLayoutCreateInfoEXT-pTokens-11102# For any
+--     element of @pTokens@, if @type@ is either
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT' or
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT' and
+--     @pipelineLayout@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', then
+--     the @pNext@ chain /must/ include a
+--     'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo' struct
+--
+-- -   #VUID-VkIndirectCommandsLayoutCreateInfoEXT-pTokens-11103# For any
+--     element of @pTokens@, the @offset@ /must/ be greater than or equal
+--     to the @offset@ member of the previous tokens
+--
+-- -   #VUID-VkIndirectCommandsLayoutCreateInfoEXT-pTokens-11104# For any
+--     element of @pTokens@, if @type@ is
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_EXT',
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_EXT',
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_EXT',
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_EXT',
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV_EXT',
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_NV_EXT',
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_COUNT_EXT',
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_EXT',
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_COUNT_EXT', or
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_EXT', then @shaderStages@ /must/
+--     contain graphics stages
+--
+-- -   #VUID-VkIndirectCommandsLayoutCreateInfoEXT-pTokens-11105# For any
+--     element of @pTokens@, if @type@ is
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_EXT', then @shaderStages@
+--     /must/ be
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT'
+--
+-- -   #VUID-VkIndirectCommandsLayoutCreateInfoEXT-pTokens-11106# For any
+--     element of @pTokens@, if @type@ is
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_EXT' or
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_EXT', then
+--     @shaderStages@ /must/ contain
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--
+-- -   #VUID-VkIndirectCommandsLayoutCreateInfoEXT-pTokens-11107# For any
+--     element of @pTokens@, if @type@ is
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV_EXT' or
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_NV_EXT', then
+--     the @shaderStages@ /must/ contain
+--     'Vulkan.Extensions.VK_NV_mesh_shader.SHADER_STAGE_MESH_BIT_NV'
+--
+-- -   #VUID-VkIndirectCommandsLayoutCreateInfoEXT-pTokens-11108# For any
+--     element of @pTokens@, if @type@ is
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_TRACE_RAYS2_EXT', then @shaderStages@
+--     /must/ contain ray tracing stages
+--
+-- -   #VUID-VkIndirectCommandsLayoutCreateInfoEXT-shaderStages-11109# If
+--     @shaderStages@ contains graphics stages then the state tokens in
+--     @pTokens@ /must/ not include
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_TRACE_RAYS2_EXT',
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_EXT'
+--
+-- -   #VUID-VkIndirectCommandsLayoutCreateInfoEXT-shaderStages-11110# If
+--     @shaderStages@ is
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT'
+--     then the state tokens in @pTokens@ /must/ only include
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_EXT',
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT',
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT',
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_DATA_EXT',
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_DATA_SEQUENCE_INDEX_EXT', or
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT'
+--
+-- -   #VUID-VkIndirectCommandsLayoutCreateInfoEXT-shaderStages-11111# If
+--     @shaderStages@ contains ray tracing stages then the state tokens in
+--     @pTokens@ /must/ only include
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_TRACE_RAYS2_EXT',
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT',
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT',
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_DATA_EXT',
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_DATA_SEQUENCE_INDEX_EXT', or
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT'
+--
+-- -   #VUID-VkIndirectCommandsLayoutCreateInfoEXT-shaderStages-11112# The
+--     @shaderStages@ /must/ only contain stages from one of the following:
+--
+--     -   'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_ALL' (if
+--         the
+--         <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-descriptorHeap descriptorHeap>
+--         feature is enabled)
+--
+--     -   graphics stages
+--
+--     -   'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT'
+--
+--     -   mesh stages and
+--         'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--
+--     -   ray tracing stages
+--
+-- -   #VUID-VkIndirectCommandsLayoutCreateInfoEXT-shaderStages-11113# If
+--     @shaderStages@ contains
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT',
+--     then @shaderStages@ /must/ also contain
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkIndirectCommandsLayoutCreateInfoEXT-sType-sType# @sType@
+--     /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXT'
+--
+-- -   #VUID-VkIndirectCommandsLayoutCreateInfoEXT-pNext-pNext# @pNext@
+--     /must/ be @NULL@ or a pointer to a valid instance of
+--     'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo'
+--
+-- -   #VUID-VkIndirectCommandsLayoutCreateInfoEXT-sType-unique# The
+--     @sType@ value of each structure in the @pNext@ chain /must/ be
+--     unique
+--
+-- -   #VUID-VkIndirectCommandsLayoutCreateInfoEXT-flags-parameter# @flags@
+--     /must/ be a valid combination of
+--     'IndirectCommandsLayoutUsageFlagBitsEXT' values
+--
+-- -   #VUID-VkIndirectCommandsLayoutCreateInfoEXT-shaderStages-parameter#
+--     @shaderStages@ /must/ be a valid combination of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits' values
+--
+-- -   #VUID-VkIndirectCommandsLayoutCreateInfoEXT-shaderStages-requiredbitmask#
+--     @shaderStages@ /must/ not be @0@
+--
+-- -   #VUID-VkIndirectCommandsLayoutCreateInfoEXT-pipelineLayout-parameter#
+--     If @pipelineLayout@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
+--     @pipelineLayout@ /must/ be a valid
+--     'Vulkan.Core10.Handles.PipelineLayout' handle
+--
+-- -   #VUID-VkIndirectCommandsLayoutCreateInfoEXT-pTokens-parameter#
+--     @pTokens@ /must/ be a valid pointer to an array of @tokenCount@
+--     valid 'IndirectCommandsLayoutTokenEXT' structures
+--
+-- -   #VUID-VkIndirectCommandsLayoutCreateInfoEXT-tokenCount-arraylength#
+--     @tokenCount@ /must/ be greater than @0@
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_generated_commands VK_EXT_device_generated_commands>,
+-- 'IndirectCommandsLayoutTokenEXT', 'IndirectCommandsLayoutUsageFlagsEXT',
+-- 'Vulkan.Core10.Handles.PipelineLayout',
+-- 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlags',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'createIndirectCommandsLayoutEXT'
+data IndirectCommandsLayoutCreateInfoEXT (es :: [Type]) = IndirectCommandsLayoutCreateInfoEXT
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
+    next :: Chain es
+  , -- | @flags@ is a bitmask of 'IndirectCommandsLayoutUsageFlagBitsEXT'
+    -- specifying usage rules for this layout.
+    flags :: IndirectCommandsLayoutUsageFlagsEXT
+  , -- | @shaderStages@ is the
+    -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlags' that this
+    -- layout supports.
+    shaderStages :: ShaderStageFlags
+  , -- | @indirectStride@ is the distance in bytes between sequences in the
+    -- indirect buffer
+    indirectStride :: Word32
+  , -- | @pipelineLayout@ is the optional 'Vulkan.Core10.Handles.PipelineLayout'
+    -- that tokens in this layout use. If the
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-dynamicGeneratedPipelineLayout dynamicGeneratedPipelineLayout>
+    -- feature is enabled, @pipelineLayout@ /can/ be
+    -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' and the layout /must/ be
+    -- specified by chaining the
+    -- 'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo' structure off
+    -- the @pNext@. If the
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-descriptorHeap descriptorHeap>
+    -- feature is enabled, @pipelineLayout@ /can/ be
+    -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' without providing a
+    -- 'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo' structure.
+    pipelineLayout :: PipelineLayout
+  , -- | @pTokens@ is a pointer to an array of 'IndirectCommandsLayoutTokenEXT'
+    -- describing each command token in detail.
+    tokens :: Vector (SomeStruct IndirectCommandsLayoutTokenEXT)
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (IndirectCommandsLayoutCreateInfoEXT (es :: [Type]))
+#endif
+deriving instance Show (Chain es) => Show (IndirectCommandsLayoutCreateInfoEXT es)
+
+instance Extensible IndirectCommandsLayoutCreateInfoEXT where
+  extensibleTypeName = "IndirectCommandsLayoutCreateInfoEXT"
+  setNext IndirectCommandsLayoutCreateInfoEXT{..} next' = IndirectCommandsLayoutCreateInfoEXT{next = next', ..}
+  getNext IndirectCommandsLayoutCreateInfoEXT{..} = next
+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends IndirectCommandsLayoutCreateInfoEXT e => b) -> Maybe b
+  extends _ f
+    | Just Refl <- eqT @e @PipelineLayoutCreateInfo = Just f
+    | otherwise = Nothing
+
+instance ( Extendss IndirectCommandsLayoutCreateInfoEXT es
+         , PokeChain es ) => ToCStruct (IndirectCommandsLayoutCreateInfoEXT es) where
+  withCStruct x f = allocaBytes 56 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p IndirectCommandsLayoutCreateInfoEXT{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXT)
+    pNext'' <- fmap castPtr . ContT $ withChain (next)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
+    lift $ poke ((p `plusPtr` 16 :: Ptr IndirectCommandsLayoutUsageFlagsEXT)) (flags)
+    lift $ poke ((p `plusPtr` 20 :: Ptr ShaderStageFlags)) (shaderStages)
+    lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) (indirectStride)
+    lift $ poke ((p `plusPtr` 32 :: Ptr PipelineLayout)) (pipelineLayout)
+    lift $ poke ((p `plusPtr` 40 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (tokens)) :: Word32))
+    pPTokens' <- ContT $ allocaBytes @(IndirectCommandsLayoutTokenEXT _) ((Data.Vector.length (tokens)) * 40)
+    Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPTokens' `plusPtr` (40 * (i)) :: Ptr (IndirectCommandsLayoutTokenEXT _))) (e) . ($ ())) (tokens)
+    lift $ poke ((p `plusPtr` 48 :: Ptr (Ptr (IndirectCommandsLayoutTokenEXT _)))) (pPTokens')
+    lift $ f
+  cStructSize = 56
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXT)
+    pNext' <- fmap castPtr . ContT $ withZeroChain @es
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
+    lift $ poke ((p `plusPtr` 20 :: Ptr ShaderStageFlags)) (zero)
+    lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)
+    lift $ f
+
+instance es ~ '[] => Zero (IndirectCommandsLayoutCreateInfoEXT es) where
+  zero = IndirectCommandsLayoutCreateInfoEXT
+           ()
+           zero
+           zero
+           zero
+           zero
+           mempty
+
+
+-- | VkIndirectCommandsLayoutTokenEXT - Struct specifying the details of an
+-- indirect command layout token
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkIndirectCommandsLayoutTokenEXT-offset-11124# @offset@ /must/
+--     be less than or equal to
+--     'PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT'::@maxIndirectCommandsTokenOffset@
+--
+-- -   #VUID-VkIndirectCommandsLayoutTokenEXT-offset-11125# @offset@ /must/
+--     be aligned to @4@
+--
+-- -   #VUID-VkIndirectCommandsLayoutTokenEXT-meshShader-11126# If
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-meshShader meshShader>
+--     or
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-taskShader taskShader>
+--     are not enabled, @type@ /must/ not be
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_EXT'
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_EXT',
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV_EXT' or
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_NV_EXT'
+--
+-- -   #VUID-VkIndirectCommandsLayoutTokenEXT-rayTracingMaintenance1-11128#
+--     If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-rayTracingMaintenance1 rayTracingMaintenance1>
+--     feature is not enabled, @type@ /must/ not be
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_TRACE_RAYS2_EXT'
+--
+-- -   #VUID-VkIndirectCommandsLayoutTokenEXT-deviceGeneratedCommandsMultiDrawIndirectCount-11129#
+--     If
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-deviceGeneratedCommandsMultiDrawIndirectCount ::deviceGeneratedCommandsMultiDrawIndirectCount>
+--     is not supported, @type@ /must/ not be
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_COUNT_EXT' or
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_COUNT_EXT'
+--
+-- -   #VUID-VkIndirectCommandsLayoutTokenEXT-deviceGeneratedCommandsMultiDrawIndirectCount-11130#
+--     If
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-deviceGeneratedCommandsMultiDrawIndirectCount ::deviceGeneratedCommandsMultiDrawIndirectCount>
+--     is not supported, @type@ /must/ not be
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_EXT'
+--
+-- -   #VUID-VkIndirectCommandsLayoutTokenEXT-deviceGeneratedCommandsMultiDrawIndirectCount-11131#
+--     If
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-deviceGeneratedCommandsMultiDrawIndirectCount ::deviceGeneratedCommandsMultiDrawIndirectCount>
+--     is not supported, @type@ /must/ not be
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_NV_EXT'
+--
+-- -   #VUID-VkIndirectCommandsLayoutTokenEXT-descriptorHeap-11332# If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-descriptorHeap descriptorHeap>
+--     feature is not enabled, @type@ /must/ not be
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_DATA_EXT' or
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_DATA_SEQUENCE_INDEX_EXT'
+--
+-- -   #VUID-VkIndirectCommandsLayoutTokenEXT-type-11333# If @type@ is
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_DATA_EXT' or
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_DATA_SEQUENCE_INDEX_EXT'
+--     'IndirectCommandsPushConstantTokenEXT'::@updateRange.shaderStages@
+--     /must/ be 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_ALL'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkIndirectCommandsLayoutTokenEXT-sType-sType# @sType@ /must/
+--     be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_EXT'
+--
+-- -   #VUID-VkIndirectCommandsLayoutTokenEXT-type-parameter# @type@ /must/
+--     be a valid 'IndirectCommandsTokenTypeEXT' value
+--
+-- -   #VUID-VkIndirectCommandsLayoutTokenEXT-pPushConstant-parameter# If
+--     @type@ is 'INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT',
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT',
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_DATA_EXT', or
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_DATA_SEQUENCE_INDEX_EXT', the
+--     @pPushConstant@ member of @data@ /must/ be a valid pointer to a
+--     valid 'IndirectCommandsPushConstantTokenEXT' structure
+--
+-- -   #VUID-VkIndirectCommandsLayoutTokenEXT-pVertexBuffer-parameter# If
+--     @type@ is 'INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_EXT', the
+--     @pVertexBuffer@ member of @data@ /must/ be a valid pointer to a
+--     valid 'IndirectCommandsVertexBufferTokenEXT' structure
+--
+-- -   #VUID-VkIndirectCommandsLayoutTokenEXT-pIndexBuffer-parameter# If
+--     @type@ is 'INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_EXT', the
+--     @pIndexBuffer@ member of @data@ /must/ be a valid pointer to a valid
+--     'IndirectCommandsIndexBufferTokenEXT' structure
+--
+-- -   #VUID-VkIndirectCommandsLayoutTokenEXT-pExecutionSet-parameter# If
+--     @type@ is 'INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT', the
+--     @pExecutionSet@ member of @data@ /must/ be a valid pointer to a
+--     valid 'IndirectCommandsExecutionSetTokenEXT' structure
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_generated_commands VK_EXT_device_generated_commands>,
+-- 'IndirectCommandsLayoutCreateInfoEXT', 'IndirectCommandsTokenDataEXT',
+-- 'IndirectCommandsTokenTypeEXT',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data IndirectCommandsLayoutTokenEXT (es :: [Type]) = IndirectCommandsLayoutTokenEXT
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
+    next :: Chain es
+  , -- | @type@ specifies the 'IndirectCommandsTokenTypeEXT' for @data@.
+    type' :: IndirectCommandsTokenTypeEXT
+  , -- | @data@ specifies a 'IndirectCommandsTokenDataEXT' containing
+    -- token-specific details for command execution. It is ignored if @type@
+    -- does not match any member of the 'IndirectCommandsTokenDataEXT' union.
+    data' :: IndirectCommandsTokenDataEXT
+  , -- | @offset@ is the relative byte offset for the token within one sequence
+    -- of the indirect buffer. The data stored at that offset is the command
+    -- data for the token, e.g.
+    -- 'Vulkan.Core10.OtherTypes.DispatchIndirectCommand'.
+    offset :: Word32
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (IndirectCommandsLayoutTokenEXT (es :: [Type]))
+#endif
+deriving instance Show (Chain es) => Show (IndirectCommandsLayoutTokenEXT es)
+
+instance Extensible IndirectCommandsLayoutTokenEXT where
+  extensibleTypeName = "IndirectCommandsLayoutTokenEXT"
+  setNext IndirectCommandsLayoutTokenEXT{..} next' = IndirectCommandsLayoutTokenEXT{next = next', ..}
+  getNext IndirectCommandsLayoutTokenEXT{..} = next
+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends IndirectCommandsLayoutTokenEXT e => b) -> Maybe b
+  extends _ f
+    | Just Refl <- eqT @e @PushConstantBankInfoNV = Just f
+    | otherwise = Nothing
+
+instance ( Extendss IndirectCommandsLayoutTokenEXT es
+         , PokeChain es ) => ToCStruct (IndirectCommandsLayoutTokenEXT es) where
+  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p IndirectCommandsLayoutTokenEXT{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_EXT)
+    pNext'' <- fmap castPtr . ContT $ withChain (next)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
+    lift $ poke ((p `plusPtr` 16 :: Ptr IndirectCommandsTokenTypeEXT)) (type')
+    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr IndirectCommandsTokenDataEXT)) (data') . ($ ())
+    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) (offset)
+    lift $ f
+  cStructSize = 40
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_EXT)
+    pNext' <- fmap castPtr . ContT $ withZeroChain @es
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
+    lift $ poke ((p `plusPtr` 16 :: Ptr IndirectCommandsTokenTypeEXT)) (zero)
+    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr IndirectCommandsTokenDataEXT)) (zero) . ($ ())
+    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) (zero)
+    lift $ f
+
+instance es ~ '[] => Zero (IndirectCommandsLayoutTokenEXT es) where
+  zero = IndirectCommandsLayoutTokenEXT
+           ()
+           zero
+           zero
+           zero
+
+
+-- | VkDrawIndirectCountIndirectCommandEXT - Structure specifying input data
+-- for a single draw-type command token
+--
+-- = Description
+--
+-- The corresponding indirect draw structure data will be read from the
+-- buffer address.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkDrawIndirectCountIndirectCommandEXT-None-11122# The buffer’s
+--     usage flag from which the address was acquired /must/ have the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'
+--     bit set
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkDrawIndirectCountIndirectCommandEXT-bufferAddress-parameter#
+--     @bufferAddress@ /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' value
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_generated_commands VK_EXT_device_generated_commands>,
+-- 'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+data DrawIndirectCountIndirectCommandEXT = DrawIndirectCountIndirectCommandEXT
+  { -- | @bufferAddress@ specifies a physical address of the
+    -- 'Vulkan.Core10.Handles.Buffer' used for draw commands.
+    bufferAddress :: DeviceAddress
+  , -- | @stride@ is the byte size stride for the command arguments
+    stride :: Word32
+  , -- | @commandCount@ is the number of commands to execute
+    commandCount :: Word32
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (DrawIndirectCountIndirectCommandEXT)
+#endif
+deriving instance Show DrawIndirectCountIndirectCommandEXT
+
+instance ToCStruct DrawIndirectCountIndirectCommandEXT where
+  withCStruct x f = allocaBytes 16 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p DrawIndirectCountIndirectCommandEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr DeviceAddress)) (bufferAddress)
+    poke ((p `plusPtr` 8 :: Ptr Word32)) (stride)
+    poke ((p `plusPtr` 12 :: Ptr Word32)) (commandCount)
+    f
+  cStructSize = 16
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr DeviceAddress)) (zero)
+    poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 12 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct DrawIndirectCountIndirectCommandEXT where
+  peekCStruct p = do
+    bufferAddress <- peek @DeviceAddress ((p `plusPtr` 0 :: Ptr DeviceAddress))
+    stride <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))
+    commandCount <- peek @Word32 ((p `plusPtr` 12 :: Ptr Word32))
+    pure $ DrawIndirectCountIndirectCommandEXT
+             bufferAddress stride commandCount
+
+instance Storable DrawIndirectCountIndirectCommandEXT where
+  sizeOf ~_ = 16
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero DrawIndirectCountIndirectCommandEXT where
+  zero = DrawIndirectCountIndirectCommandEXT
+           zero
+           zero
+           zero
+
+
+-- | VkIndirectCommandsVertexBufferTokenEXT - Structure specifying layout
+-- token info for a single index buffer command token
+--
+-- == Valid Usage
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_generated_commands VK_EXT_device_generated_commands>,
+-- 'IndirectCommandsTokenDataEXT'
+data IndirectCommandsVertexBufferTokenEXT = IndirectCommandsVertexBufferTokenEXT
+  { -- | @vertexBindingUnit@ is the vertex input binding number to be bound.
+    --
+    -- #VUID-VkIndirectCommandsVertexBufferTokenEXT-vertexBindingUnit-11134#
+    -- @vertexBindingUnit@ /must/ be less than the total number of vertex input
+    -- bindings in use by the current graphics state
+    vertexBindingUnit :: Word32 }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (IndirectCommandsVertexBufferTokenEXT)
+#endif
+deriving instance Show IndirectCommandsVertexBufferTokenEXT
+
+instance ToCStruct IndirectCommandsVertexBufferTokenEXT where
+  withCStruct x f = allocaBytes 4 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p IndirectCommandsVertexBufferTokenEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr Word32)) (vertexBindingUnit)
+    f
+  cStructSize = 4
+  cStructAlignment = 4
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct IndirectCommandsVertexBufferTokenEXT where
+  peekCStruct p = do
+    vertexBindingUnit <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))
+    pure $ IndirectCommandsVertexBufferTokenEXT
+             vertexBindingUnit
+
+instance Storable IndirectCommandsVertexBufferTokenEXT where
+  sizeOf ~_ = 4
+  alignment ~_ = 4
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero IndirectCommandsVertexBufferTokenEXT where
+  zero = IndirectCommandsVertexBufferTokenEXT
+           zero
+
+
+-- | VkBindVertexBufferIndirectCommandEXT - Structure specifying input data
+-- for a single vertex buffer command token
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkBindVertexBufferIndirectCommandEXT-None-11120# The buffer’s
+--     usage flag from which the address was acquired /must/ have the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_VERTEX_BUFFER_BIT'
+--     bit set
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkBindVertexBufferIndirectCommandEXT-bufferAddress-parameter#
+--     @bufferAddress@ /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' value
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_generated_commands VK_EXT_device_generated_commands>,
+-- 'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+data BindVertexBufferIndirectCommandEXT = BindVertexBufferIndirectCommandEXT
+  { -- | @bufferAddress@ specifies a physical address of the
+    -- 'Vulkan.Core10.Handles.Buffer' used as vertex input binding.
+    bufferAddress :: DeviceAddress
+  , -- | @size@ is the byte size range which is available for this operation from
+    -- the provided address.
+    size :: Word32
+  , -- | @stride@ is the byte size stride for this vertex input binding as in
+    -- 'Vulkan.Core10.GraphicsPipeline.VertexInputBindingDescription'::@stride@.
+    stride :: Word32
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (BindVertexBufferIndirectCommandEXT)
+#endif
+deriving instance Show BindVertexBufferIndirectCommandEXT
+
+instance ToCStruct BindVertexBufferIndirectCommandEXT where
+  withCStruct x f = allocaBytes 16 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p BindVertexBufferIndirectCommandEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr DeviceAddress)) (bufferAddress)
+    poke ((p `plusPtr` 8 :: Ptr Word32)) (size)
+    poke ((p `plusPtr` 12 :: Ptr Word32)) (stride)
+    f
+  cStructSize = 16
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr DeviceAddress)) (zero)
+    poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 12 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct BindVertexBufferIndirectCommandEXT where
+  peekCStruct p = do
+    bufferAddress <- peek @DeviceAddress ((p `plusPtr` 0 :: Ptr DeviceAddress))
+    size <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))
+    stride <- peek @Word32 ((p `plusPtr` 12 :: Ptr Word32))
+    pure $ BindVertexBufferIndirectCommandEXT
+             bufferAddress size stride
+
+instance Storable BindVertexBufferIndirectCommandEXT where
+  sizeOf ~_ = 16
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero BindVertexBufferIndirectCommandEXT where
+  zero = BindVertexBufferIndirectCommandEXT
+           zero
+           zero
+           zero
+
+
+-- | VkIndirectCommandsIndexBufferTokenEXT - Structure specifying layout
+-- token info for a single index buffer command token
+--
+-- = Description
+--
+-- This allows for easy layering of Vulkan atop other APIs. When
+-- 'INDIRECT_COMMANDS_INPUT_MODE_DXGI_INDEX_BUFFER_EXT' is specified, the
+-- indirect buffer can contain a @D3D12_INDEX_BUFFER_VIEW@ instead of
+-- 'BindIndexBufferIndirectCommandEXT' as D3D’s DXGI format value is mapped
+-- to the 'Vulkan.Core10.Enums.IndexType.IndexType'. It works as both
+-- structs are otherwise binary compatible.
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_generated_commands VK_EXT_device_generated_commands>,
+-- 'IndirectCommandsInputModeFlagBitsEXT', 'IndirectCommandsTokenDataEXT'
+data IndirectCommandsIndexBufferTokenEXT = IndirectCommandsIndexBufferTokenEXT
+  { -- | @mode@ specifies the mode to use with this token.
+    --
+    -- #VUID-VkIndirectCommandsIndexBufferTokenEXT-mode-11135# @mode@ /must/ be
+    -- non-zero
+    --
+    -- #VUID-VkIndirectCommandsIndexBufferTokenEXT-mode-11136# @mode@ /must/ be
+    -- one of the bits supported in
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-supportedIndirectCommandsInputModes ::supportedIndirectCommandsInputModes>
+    --
+    -- #VUID-VkIndirectCommandsIndexBufferTokenEXT-mode-parameter# @mode@
+    -- /must/ be a valid 'IndirectCommandsInputModeFlagBitsEXT' value
+    mode :: IndirectCommandsInputModeFlagBitsEXT }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (IndirectCommandsIndexBufferTokenEXT)
+#endif
+deriving instance Show IndirectCommandsIndexBufferTokenEXT
+
+instance ToCStruct IndirectCommandsIndexBufferTokenEXT where
+  withCStruct x f = allocaBytes 4 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p IndirectCommandsIndexBufferTokenEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr IndirectCommandsInputModeFlagBitsEXT)) (mode)
+    f
+  cStructSize = 4
+  cStructAlignment = 4
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr IndirectCommandsInputModeFlagBitsEXT)) (zero)
+    f
+
+instance FromCStruct IndirectCommandsIndexBufferTokenEXT where
+  peekCStruct p = do
+    mode <- peek @IndirectCommandsInputModeFlagBitsEXT ((p `plusPtr` 0 :: Ptr IndirectCommandsInputModeFlagBitsEXT))
+    pure $ IndirectCommandsIndexBufferTokenEXT
+             mode
+
+instance Storable IndirectCommandsIndexBufferTokenEXT where
+  sizeOf ~_ = 4
+  alignment ~_ = 4
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero IndirectCommandsIndexBufferTokenEXT where
+  zero = IndirectCommandsIndexBufferTokenEXT
+           zero
+
+
+-- | VkBindIndexBufferIndirectCommandEXT - Structure specifying input data
+-- for a single index buffer command token
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkBindIndexBufferIndirectCommandEXT-None-11117# The buffer’s
+--     usage flags from which the address was acquired /must/ have the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDEX_BUFFER_BIT'
+--     bit set
+--
+-- -   #VUID-VkBindIndexBufferIndirectCommandEXT-bufferAddress-11118# The
+--     @bufferAddress@ /must/ be aligned to the
+--     'Vulkan.Core10.Enums.IndexType.IndexType' of the @indexType@ used
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkBindIndexBufferIndirectCommandEXT-bufferAddress-parameter#
+--     @bufferAddress@ /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' value
+--
+-- -   #VUID-VkBindIndexBufferIndirectCommandEXT-indexType-parameter#
+--     @indexType@ /must/ be a valid
+--     'Vulkan.Core10.Enums.IndexType.IndexType' value
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_generated_commands VK_EXT_device_generated_commands>,
+-- 'Vulkan.Core10.FundamentalTypes.DeviceAddress',
+-- 'Vulkan.Core10.Enums.IndexType.IndexType'
+data BindIndexBufferIndirectCommandEXT = BindIndexBufferIndirectCommandEXT
+  { -- | @bufferAddress@ specifies a physical address of the
+    -- 'Vulkan.Core10.Handles.Buffer' used as index buffer.
+    bufferAddress :: DeviceAddress
+  , -- | @size@ is the byte size range which is available for this operation from
+    -- the provided address.
+    size :: Word32
+  , -- | @indexType@ is a 'Vulkan.Core10.Enums.IndexType.IndexType' value
+    -- specifying how indices are treated.
+    indexType :: IndexType
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (BindIndexBufferIndirectCommandEXT)
+#endif
+deriving instance Show BindIndexBufferIndirectCommandEXT
+
+instance ToCStruct BindIndexBufferIndirectCommandEXT where
+  withCStruct x f = allocaBytes 16 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p BindIndexBufferIndirectCommandEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr DeviceAddress)) (bufferAddress)
+    poke ((p `plusPtr` 8 :: Ptr Word32)) (size)
+    poke ((p `plusPtr` 12 :: Ptr IndexType)) (indexType)
+    f
+  cStructSize = 16
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr DeviceAddress)) (zero)
+    poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 12 :: Ptr IndexType)) (zero)
+    f
+
+instance FromCStruct BindIndexBufferIndirectCommandEXT where
+  peekCStruct p = do
+    bufferAddress <- peek @DeviceAddress ((p `plusPtr` 0 :: Ptr DeviceAddress))
+    size <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))
+    indexType <- peek @IndexType ((p `plusPtr` 12 :: Ptr IndexType))
+    pure $ BindIndexBufferIndirectCommandEXT
+             bufferAddress size indexType
+
+instance Storable BindIndexBufferIndirectCommandEXT where
+  sizeOf ~_ = 16
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero BindIndexBufferIndirectCommandEXT where
+  zero = BindIndexBufferIndirectCommandEXT
+           zero
+           zero
+           zero
+
+
+-- | VkIndirectCommandsPushConstantTokenEXT - Structure specifying layout
+-- token info for a single push constant command token
+--
+-- = Description
+--
+-- The @stageFlags@ member of @updateRange@ is ignored.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkIndirectCommandsPushConstantTokenEXT-updateRange-11132# If
+--     the token type is 'INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT'
+--     or 'INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT', @updateRange@
+--     /must/ be contained within the push constant info used by
+--     'IndirectCommandsLayoutCreateInfoEXT'
+--
+-- -   #VUID-VkIndirectCommandsPushConstantTokenEXT-size-11133# If the
+--     token type is
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_DATA_SEQUENCE_INDEX_EXT' or
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT', the @size@ member
+--     of @updateRange@ /must/ be 4
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkIndirectCommandsPushConstantTokenEXT-updateRange-parameter#
+--     @updateRange@ /must/ be a valid
+--     'Vulkan.Core10.PipelineLayout.PushConstantRange' structure
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_generated_commands VK_EXT_device_generated_commands>,
+-- 'IndirectCommandsTokenDataEXT',
+-- 'Vulkan.Core10.PipelineLayout.PushConstantRange'
+data IndirectCommandsPushConstantTokenEXT = IndirectCommandsPushConstantTokenEXT
+  { -- | @updateRange@ is the push constant range that will be updated by the
+    -- token.
+    updateRange :: PushConstantRange }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (IndirectCommandsPushConstantTokenEXT)
+#endif
+deriving instance Show IndirectCommandsPushConstantTokenEXT
+
+instance ToCStruct IndirectCommandsPushConstantTokenEXT where
+  withCStruct x f = allocaBytes 12 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p IndirectCommandsPushConstantTokenEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr PushConstantRange)) (updateRange)
+    f
+  cStructSize = 12
+  cStructAlignment = 4
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr PushConstantRange)) (zero)
+    f
+
+instance FromCStruct IndirectCommandsPushConstantTokenEXT where
+  peekCStruct p = do
+    updateRange <- peekCStruct @PushConstantRange ((p `plusPtr` 0 :: Ptr PushConstantRange))
+    pure $ IndirectCommandsPushConstantTokenEXT
+             updateRange
+
+instance Storable IndirectCommandsPushConstantTokenEXT where
+  sizeOf ~_ = 12
+  alignment ~_ = 4
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero IndirectCommandsPushConstantTokenEXT where
+  zero = IndirectCommandsPushConstantTokenEXT
+           zero
+
+
+-- | VkIndirectCommandsExecutionSetTokenEXT - Structure specifying input data
+-- for a single execution set command token
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkIndirectCommandsExecutionSetTokenEXT-shaderStages-11137#
+--     Each bit in @shaderStages@ /must/ be supported by
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-supportedIndirectCommandsShaderStagesPipelineBinding ::supportedIndirectCommandsShaderStagesPipelineBinding>
+--     or
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-supportedIndirectCommandsShaderStagesShaderBinding ::supportedIndirectCommandsShaderStagesShaderBinding>
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkIndirectCommandsExecutionSetTokenEXT-type-parameter# @type@
+--     /must/ be a valid 'IndirectExecutionSetInfoTypeEXT' value
+--
+-- -   #VUID-VkIndirectCommandsExecutionSetTokenEXT-shaderStages-parameter#
+--     @shaderStages@ /must/ be a valid combination of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits' values
+--
+-- -   #VUID-VkIndirectCommandsExecutionSetTokenEXT-shaderStages-requiredbitmask#
+--     @shaderStages@ /must/ not be @0@
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_generated_commands VK_EXT_device_generated_commands>,
+-- 'IndirectCommandsTokenDataEXT', 'IndirectExecutionSetInfoTypeEXT',
+-- 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlags'
+data IndirectCommandsExecutionSetTokenEXT = IndirectCommandsExecutionSetTokenEXT
+  { -- | @type@ describes the type of indirect execution set in use.
+    type' :: IndirectExecutionSetInfoTypeEXT
+  , -- | @shaderStages@ specifies the shaders that will be changed by this token.
+    shaderStages :: ShaderStageFlags
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (IndirectCommandsExecutionSetTokenEXT)
+#endif
+deriving instance Show IndirectCommandsExecutionSetTokenEXT
+
+instance ToCStruct IndirectCommandsExecutionSetTokenEXT where
+  withCStruct x f = allocaBytes 8 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p IndirectCommandsExecutionSetTokenEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr IndirectExecutionSetInfoTypeEXT)) (type')
+    poke ((p `plusPtr` 4 :: Ptr ShaderStageFlags)) (shaderStages)
+    f
+  cStructSize = 8
+  cStructAlignment = 4
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr IndirectExecutionSetInfoTypeEXT)) (zero)
+    poke ((p `plusPtr` 4 :: Ptr ShaderStageFlags)) (zero)
+    f
+
+instance FromCStruct IndirectCommandsExecutionSetTokenEXT where
+  peekCStruct p = do
+    type' <- peek @IndirectExecutionSetInfoTypeEXT ((p `plusPtr` 0 :: Ptr IndirectExecutionSetInfoTypeEXT))
+    shaderStages <- peek @ShaderStageFlags ((p `plusPtr` 4 :: Ptr ShaderStageFlags))
+    pure $ IndirectCommandsExecutionSetTokenEXT
+             type' shaderStages
+
+instance Storable IndirectCommandsExecutionSetTokenEXT where
+  sizeOf ~_ = 8
+  alignment ~_ = 4
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero IndirectCommandsExecutionSetTokenEXT where
+  zero = IndirectCommandsExecutionSetTokenEXT
+           zero
+           zero
+
+
+data IndirectExecutionSetInfoEXT
+  = PipelineInfo IndirectExecutionSetPipelineInfoEXT
+  | ShaderInfo IndirectExecutionSetShaderInfoEXT
+  deriving (Show)
+
+instance ToCStruct IndirectExecutionSetInfoEXT where
+  withCStruct x f = allocaBytes 8 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct :: Ptr IndirectExecutionSetInfoEXT -> IndirectExecutionSetInfoEXT -> IO a -> IO a
+  pokeCStruct p = (. const) . runContT .  \case
+    PipelineInfo v -> do
+      pPipelineInfo <- ContT $ withCStruct (v)
+      lift $ poke (castPtr @_ @(Ptr IndirectExecutionSetPipelineInfoEXT) p) pPipelineInfo
+    ShaderInfo v -> do
+      pShaderInfo <- ContT $ withCStruct (v)
+      lift $ poke (castPtr @_ @(Ptr IndirectExecutionSetShaderInfoEXT) p) pShaderInfo
+  pokeZeroCStruct :: Ptr IndirectExecutionSetInfoEXT -> IO b -> IO b
+  pokeZeroCStruct _ f = f
+  cStructSize = 8
+  cStructAlignment = 8
+
+instance Zero IndirectExecutionSetInfoEXT where
+  zero = PipelineInfo zero
+
+
+data IndirectCommandsTokenDataEXT
+  = PushConstant IndirectCommandsPushConstantTokenEXT
+  | VertexBuffer IndirectCommandsVertexBufferTokenEXT
+  | IndexBuffer IndirectCommandsIndexBufferTokenEXT
+  | ExecutionSet IndirectCommandsExecutionSetTokenEXT
+  deriving (Show)
+
+instance ToCStruct IndirectCommandsTokenDataEXT where
+  withCStruct x f = allocaBytes 8 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct :: Ptr IndirectCommandsTokenDataEXT -> IndirectCommandsTokenDataEXT -> IO a -> IO a
+  pokeCStruct p = (. const) . runContT .  \case
+    PushConstant v -> do
+      pPushConstant <- ContT $ withCStruct (v)
+      lift $ poke (castPtr @_ @(Ptr IndirectCommandsPushConstantTokenEXT) p) pPushConstant
+    VertexBuffer v -> do
+      pVertexBuffer <- ContT $ withCStruct (v)
+      lift $ poke (castPtr @_ @(Ptr IndirectCommandsVertexBufferTokenEXT) p) pVertexBuffer
+    IndexBuffer v -> do
+      pIndexBuffer <- ContT $ withCStruct (v)
+      lift $ poke (castPtr @_ @(Ptr IndirectCommandsIndexBufferTokenEXT) p) pIndexBuffer
+    ExecutionSet v -> do
+      pExecutionSet <- ContT $ withCStruct (v)
+      lift $ poke (castPtr @_ @(Ptr IndirectCommandsExecutionSetTokenEXT) p) pExecutionSet
+  pokeZeroCStruct :: Ptr IndirectCommandsTokenDataEXT -> IO b -> IO b
+  pokeZeroCStruct _ f = f
+  cStructSize = 8
+  cStructAlignment = 8
+
+instance Zero IndirectCommandsTokenDataEXT where
+  zero = PushConstant zero
+
+
+type IndirectCommandsLayoutUsageFlagsEXT = IndirectCommandsLayoutUsageFlagBitsEXT
+
+-- | VkIndirectCommandsLayoutUsageFlagBitsEXT - Bitmask specifying allowed
+-- usage of an indirect commands layout
+--
+-- = Description
+--
+-- -   'INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_EXT'
+--     specifies that the layout is always used with the manual
+--     preprocessing step through calling
+--     'cmdPreprocessGeneratedCommandsEXT' and executed by
+--     'cmdExecuteGeneratedCommandsEXT' with @isPreprocessed@ set to
+--     'Vulkan.Core10.FundamentalTypes.TRUE'.
+--
+-- -   'INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_EXT'
+--     specifies that the processing of sequences will happen at an
+--     implementation-dependent order, which is not guaranteed to be
+--     deterministic using the same input data. This flag is ignored when
+--     the @shaderStages@ is
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT'
+--     as it is implied that the dispatch sequence is always unordered.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_generated_commands VK_EXT_device_generated_commands>,
+-- 'IndirectCommandsLayoutUsageFlagsEXT'
+newtype IndirectCommandsLayoutUsageFlagBitsEXT = IndirectCommandsLayoutUsageFlagBitsEXT Flags
+  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
+
+-- No documentation found for Nested "VkIndirectCommandsLayoutUsageFlagBitsEXT" "VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_EXT"
+pattern INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_EXT = IndirectCommandsLayoutUsageFlagBitsEXT 0x00000001
+
+-- No documentation found for Nested "VkIndirectCommandsLayoutUsageFlagBitsEXT" "VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_EXT"
+pattern INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_EXT = IndirectCommandsLayoutUsageFlagBitsEXT 0x00000002
+
+conNameIndirectCommandsLayoutUsageFlagBitsEXT :: String
+conNameIndirectCommandsLayoutUsageFlagBitsEXT = "IndirectCommandsLayoutUsageFlagBitsEXT"
+
+enumPrefixIndirectCommandsLayoutUsageFlagBitsEXT :: String
+enumPrefixIndirectCommandsLayoutUsageFlagBitsEXT = "INDIRECT_COMMANDS_LAYOUT_USAGE_"
+
+showTableIndirectCommandsLayoutUsageFlagBitsEXT :: [(IndirectCommandsLayoutUsageFlagBitsEXT, String)]
+showTableIndirectCommandsLayoutUsageFlagBitsEXT =
+  [
+    ( INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_EXT
+    , "EXPLICIT_PREPROCESS_BIT_EXT"
+    )
+  ,
+    ( INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_EXT
+    , "UNORDERED_SEQUENCES_BIT_EXT"
+    )
+  ]
+
+instance Show IndirectCommandsLayoutUsageFlagBitsEXT where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixIndirectCommandsLayoutUsageFlagBitsEXT
+      showTableIndirectCommandsLayoutUsageFlagBitsEXT
+      conNameIndirectCommandsLayoutUsageFlagBitsEXT
+      (\(IndirectCommandsLayoutUsageFlagBitsEXT x) -> x)
+      (\x -> showString "0x" . showHex x)
+
+instance Read IndirectCommandsLayoutUsageFlagBitsEXT where
+  readPrec =
+    enumReadPrec
+      enumPrefixIndirectCommandsLayoutUsageFlagBitsEXT
+      showTableIndirectCommandsLayoutUsageFlagBitsEXT
+      conNameIndirectCommandsLayoutUsageFlagBitsEXT
+      IndirectCommandsLayoutUsageFlagBitsEXT
+
+-- | VkIndirectExecutionSetInfoTypeEXT - Enum specifying allowed usage of an
+-- indirect execution set
+--
+-- = Description
+--
+-- -   'INDIRECT_EXECUTION_SET_INFO_TYPE_PIPELINES_EXT' specifies that the
+--     indirect execution set contains 'Vulkan.Core10.Handles.Pipeline'
+--     objects.
+--
+-- -   'INDIRECT_EXECUTION_SET_INFO_TYPE_SHADER_OBJECTS_EXT' specifies that
+--     the indirect execution set contains
+--     'Vulkan.Extensions.Handles.ShaderEXT' objects.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_generated_commands VK_EXT_device_generated_commands>,
+-- 'IndirectCommandsExecutionSetTokenEXT',
+-- 'IndirectExecutionSetCreateInfoEXT'
+newtype IndirectExecutionSetInfoTypeEXT = IndirectExecutionSetInfoTypeEXT Int32
+  deriving newtype (Eq, Ord, Storable, Zero)
+
+-- No documentation found for Nested "VkIndirectExecutionSetInfoTypeEXT" "VK_INDIRECT_EXECUTION_SET_INFO_TYPE_PIPELINES_EXT"
+pattern INDIRECT_EXECUTION_SET_INFO_TYPE_PIPELINES_EXT = IndirectExecutionSetInfoTypeEXT 0
+
+-- No documentation found for Nested "VkIndirectExecutionSetInfoTypeEXT" "VK_INDIRECT_EXECUTION_SET_INFO_TYPE_SHADER_OBJECTS_EXT"
+pattern INDIRECT_EXECUTION_SET_INFO_TYPE_SHADER_OBJECTS_EXT = IndirectExecutionSetInfoTypeEXT 1
+
+{-# COMPLETE
+  INDIRECT_EXECUTION_SET_INFO_TYPE_PIPELINES_EXT
+  , INDIRECT_EXECUTION_SET_INFO_TYPE_SHADER_OBJECTS_EXT ::
+    IndirectExecutionSetInfoTypeEXT
+  #-}
+
+conNameIndirectExecutionSetInfoTypeEXT :: String
+conNameIndirectExecutionSetInfoTypeEXT = "IndirectExecutionSetInfoTypeEXT"
+
+enumPrefixIndirectExecutionSetInfoTypeEXT :: String
+enumPrefixIndirectExecutionSetInfoTypeEXT = "INDIRECT_EXECUTION_SET_INFO_TYPE_"
+
+showTableIndirectExecutionSetInfoTypeEXT :: [(IndirectExecutionSetInfoTypeEXT, String)]
+showTableIndirectExecutionSetInfoTypeEXT =
+  [
+    ( INDIRECT_EXECUTION_SET_INFO_TYPE_PIPELINES_EXT
+    , "PIPELINES_EXT"
+    )
+  ,
+    ( INDIRECT_EXECUTION_SET_INFO_TYPE_SHADER_OBJECTS_EXT
+    , "SHADER_OBJECTS_EXT"
+    )
+  ]
+
+instance Show IndirectExecutionSetInfoTypeEXT where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixIndirectExecutionSetInfoTypeEXT
+      showTableIndirectExecutionSetInfoTypeEXT
+      conNameIndirectExecutionSetInfoTypeEXT
+      (\(IndirectExecutionSetInfoTypeEXT x) -> x)
+      (showsPrec 11)
+
+instance Read IndirectExecutionSetInfoTypeEXT where
+  readPrec =
+    enumReadPrec
+      enumPrefixIndirectExecutionSetInfoTypeEXT
+      showTableIndirectExecutionSetInfoTypeEXT
+      conNameIndirectExecutionSetInfoTypeEXT
+      IndirectExecutionSetInfoTypeEXT
+
+type IndirectCommandsInputModeFlagsEXT = IndirectCommandsInputModeFlagBitsEXT
+
+-- | VkIndirectCommandsInputModeFlagBitsEXT - Bitmask specifying allowed
+-- usage of an indirect commands layout
+--
+-- = Description
+--
+-- -   'INDIRECT_COMMANDS_INPUT_MODE_VULKAN_INDEX_BUFFER_EXT' specifies
+--     that the indirect buffer contains
+--     'BindIndexBufferIndirectCommandEXT'.
+--
+-- -   'INDIRECT_COMMANDS_INPUT_MODE_DXGI_INDEX_BUFFER_EXT' specifies that
+--     the indirect buffer contains @D3D12_INDEX_BUFFER_VIEW@.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_generated_commands VK_EXT_device_generated_commands>,
+-- 'IndirectCommandsIndexBufferTokenEXT',
+-- 'IndirectCommandsInputModeFlagsEXT'
+newtype IndirectCommandsInputModeFlagBitsEXT = IndirectCommandsInputModeFlagBitsEXT Flags
+  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
+
+-- No documentation found for Nested "VkIndirectCommandsInputModeFlagBitsEXT" "VK_INDIRECT_COMMANDS_INPUT_MODE_VULKAN_INDEX_BUFFER_EXT"
+pattern INDIRECT_COMMANDS_INPUT_MODE_VULKAN_INDEX_BUFFER_EXT = IndirectCommandsInputModeFlagBitsEXT 0x00000001
+
+-- No documentation found for Nested "VkIndirectCommandsInputModeFlagBitsEXT" "VK_INDIRECT_COMMANDS_INPUT_MODE_DXGI_INDEX_BUFFER_EXT"
+pattern INDIRECT_COMMANDS_INPUT_MODE_DXGI_INDEX_BUFFER_EXT = IndirectCommandsInputModeFlagBitsEXT 0x00000002
+
+conNameIndirectCommandsInputModeFlagBitsEXT :: String
+conNameIndirectCommandsInputModeFlagBitsEXT = "IndirectCommandsInputModeFlagBitsEXT"
+
+enumPrefixIndirectCommandsInputModeFlagBitsEXT :: String
+enumPrefixIndirectCommandsInputModeFlagBitsEXT = "INDIRECT_COMMANDS_INPUT_MODE_"
+
+showTableIndirectCommandsInputModeFlagBitsEXT :: [(IndirectCommandsInputModeFlagBitsEXT, String)]
+showTableIndirectCommandsInputModeFlagBitsEXT =
+  [
+    ( INDIRECT_COMMANDS_INPUT_MODE_VULKAN_INDEX_BUFFER_EXT
+    , "VULKAN_INDEX_BUFFER_EXT"
+    )
+  ,
+    ( INDIRECT_COMMANDS_INPUT_MODE_DXGI_INDEX_BUFFER_EXT
+    , "DXGI_INDEX_BUFFER_EXT"
+    )
+  ]
+
+instance Show IndirectCommandsInputModeFlagBitsEXT where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixIndirectCommandsInputModeFlagBitsEXT
+      showTableIndirectCommandsInputModeFlagBitsEXT
+      conNameIndirectCommandsInputModeFlagBitsEXT
+      (\(IndirectCommandsInputModeFlagBitsEXT x) -> x)
+      (\x -> showString "0x" . showHex x)
+
+instance Read IndirectCommandsInputModeFlagBitsEXT where
+  readPrec =
+    enumReadPrec
+      enumPrefixIndirectCommandsInputModeFlagBitsEXT
+      showTableIndirectCommandsInputModeFlagBitsEXT
+      conNameIndirectCommandsInputModeFlagBitsEXT
+      IndirectCommandsInputModeFlagBitsEXT
+
+-- | VkIndirectCommandsTokenTypeEXT - Enum specifying token commands
+--
+-- = Description
+--
+-- \'
+--
+-- +-------------------------------------------------------------+----------------------------------------------------------------------------------+
+-- | __Common Tokens__                                           | __Command Data__                                                                 |
+-- +=============================================================+==================================================================================+
+-- | 'INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT'            | @u32[]@ array of indices into the indirect execution set                         |
+-- +-------------------------------------------------------------+----------------------------------------------------------------------------------+
+-- | 'INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT'            | @u32[]@ raw data                                                                 |
+-- +-------------------------------------------------------------+----------------------------------------------------------------------------------+
+-- | 'INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_DATA_EXT'                | @u8[]@ raw data                                                                  |
+-- +-------------------------------------------------------------+----------------------------------------------------------------------------------+
+-- | 'INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT'           | @u32@ placeholder data (not accessed by shader)                                  |
+-- +-------------------------------------------------------------+----------------------------------------------------------------------------------+
+-- | 'INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_DATA_SEQUENCE_INDEX_EXT' | @u32@ placeholder data (not accessed by shader)                                  |
+-- +-------------------------------------------------------------+----------------------------------------------------------------------------------+
+-- | __Compute Tokens__                                          |                                                                                  |
+-- +-------------------------------------------------------------+----------------------------------------------------------------------------------+
+-- | 'INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_EXT'                 | 'Vulkan.Core10.OtherTypes.DispatchIndirectCommand'                               |
+-- +-------------------------------------------------------------+----------------------------------------------------------------------------------+
+-- | __Ray Tracing Tokens__                                      |                                                                                  |
+-- +-------------------------------------------------------------+----------------------------------------------------------------------------------+
+-- | 'INDIRECT_COMMANDS_TOKEN_TYPE_TRACE_RAYS2_EXT'              | 'Vulkan.Extensions.VK_KHR_ray_tracing_maintenance1.TraceRaysIndirectCommand2KHR' |
+-- +-------------------------------------------------------------+----------------------------------------------------------------------------------+
+-- | __Graphics State Tokens__                                   |                                                                                  |
+-- +-------------------------------------------------------------+----------------------------------------------------------------------------------+
+-- | 'INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_EXT'             | 'BindIndexBufferIndirectCommandEXT'                                              |
+-- +-------------------------------------------------------------+----------------------------------------------------------------------------------+
+-- | 'INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_EXT'            | 'BindVertexBufferIndirectCommandEXT'                                             |
+-- +-------------------------------------------------------------+----------------------------------------------------------------------------------+
+-- | __Graphics Draw Tokens__                                    |                                                                                  |
+-- +-------------------------------------------------------------+----------------------------------------------------------------------------------+
+-- | 'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_EXT'             | 'Vulkan.Core10.OtherTypes.DrawIndexedIndirectCommand'                            |
+-- +-------------------------------------------------------------+----------------------------------------------------------------------------------+
+-- | 'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_EXT'                     | 'Vulkan.Core10.OtherTypes.DrawIndirectCommand'                                   |
+-- +-------------------------------------------------------------+----------------------------------------------------------------------------------+
+-- | 'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_EXT'          | 'Vulkan.Extensions.VK_EXT_mesh_shader.DrawMeshTasksIndirectCommandEXT'           |
+-- +-------------------------------------------------------------+----------------------------------------------------------------------------------+
+-- | 'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV_EXT'       | 'Vulkan.Extensions.VK_NV_mesh_shader.DrawMeshTasksIndirectCommandNV'             |
+-- +-------------------------------------------------------------+----------------------------------------------------------------------------------+
+-- | __Graphics Draw Count Tokens__                              |                                                                                  |
+-- +-------------------------------------------------------------+----------------------------------------------------------------------------------+
+-- | 'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_COUNT_EXT'       | 'DrawIndirectCountIndirectCommandEXT' with VkDrawIndexedIndirectCommand          |
+-- +-------------------------------------------------------------+----------------------------------------------------------------------------------+
+-- | 'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_COUNT_EXT'               | 'DrawIndirectCountIndirectCommandEXT' with VkDrawIndirectCommand                 |
+-- +-------------------------------------------------------------+----------------------------------------------------------------------------------+
+-- | 'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_EXT'    | 'DrawIndirectCountIndirectCommandEXT' with VkDrawMeshTasksIndirectCommandEXT     |
+-- +-------------------------------------------------------------+----------------------------------------------------------------------------------+
+-- | 'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_NV_EXT' | 'DrawIndirectCountIndirectCommandEXT' with VkDrawMeshTasksIndirectCommandNV      |
+-- +-------------------------------------------------------------+----------------------------------------------------------------------------------+
+--
+-- Supported Indirect Command Tokens
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_generated_commands VK_EXT_device_generated_commands>,
+-- 'IndirectCommandsLayoutTokenEXT'
+newtype IndirectCommandsTokenTypeEXT = IndirectCommandsTokenTypeEXT Int32
+  deriving newtype (Eq, Ord, Storable, Zero)
+
+-- No documentation found for Nested "VkIndirectCommandsTokenTypeEXT" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT"
+pattern INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT = IndirectCommandsTokenTypeEXT 0
+
+-- No documentation found for Nested "VkIndirectCommandsTokenTypeEXT" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT"
+pattern INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT = IndirectCommandsTokenTypeEXT 1
+
+-- No documentation found for Nested "VkIndirectCommandsTokenTypeEXT" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT"
+pattern INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT = IndirectCommandsTokenTypeEXT 2
+
+-- No documentation found for Nested "VkIndirectCommandsTokenTypeEXT" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_EXT"
+pattern INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_EXT = IndirectCommandsTokenTypeEXT 3
+
+-- No documentation found for Nested "VkIndirectCommandsTokenTypeEXT" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_EXT"
+pattern INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_EXT = IndirectCommandsTokenTypeEXT 4
+
+-- No documentation found for Nested "VkIndirectCommandsTokenTypeEXT" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_EXT"
+pattern INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_EXT = IndirectCommandsTokenTypeEXT 5
+
+-- No documentation found for Nested "VkIndirectCommandsTokenTypeEXT" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_EXT"
+pattern INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_EXT = IndirectCommandsTokenTypeEXT 6
+
+-- No documentation found for Nested "VkIndirectCommandsTokenTypeEXT" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_COUNT_EXT"
+pattern INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_COUNT_EXT = IndirectCommandsTokenTypeEXT 7
+
+-- No documentation found for Nested "VkIndirectCommandsTokenTypeEXT" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_COUNT_EXT"
+pattern INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_COUNT_EXT = IndirectCommandsTokenTypeEXT 8
+
+-- No documentation found for Nested "VkIndirectCommandsTokenTypeEXT" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_EXT"
+pattern INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_EXT = IndirectCommandsTokenTypeEXT 9
+
+-- No documentation found for Nested "VkIndirectCommandsTokenTypeEXT" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_TRACE_RAYS2_EXT"
+pattern INDIRECT_COMMANDS_TOKEN_TYPE_TRACE_RAYS2_EXT = IndirectCommandsTokenTypeEXT 1000386004
+
+-- No documentation found for Nested "VkIndirectCommandsTokenTypeEXT" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_EXT"
+pattern INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_EXT = IndirectCommandsTokenTypeEXT 1000328001
+
+-- No documentation found for Nested "VkIndirectCommandsTokenTypeEXT" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_EXT"
+pattern INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_EXT = IndirectCommandsTokenTypeEXT 1000328000
+
+-- No documentation found for Nested "VkIndirectCommandsTokenTypeEXT" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_NV_EXT"
+pattern INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_NV_EXT = IndirectCommandsTokenTypeEXT 1000202003
+
+-- No documentation found for Nested "VkIndirectCommandsTokenTypeEXT" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV_EXT"
+pattern INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV_EXT = IndirectCommandsTokenTypeEXT 1000202002
+
+-- No documentation found for Nested "VkIndirectCommandsTokenTypeEXT" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_DATA_SEQUENCE_INDEX_EXT"
+pattern INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_DATA_SEQUENCE_INDEX_EXT = IndirectCommandsTokenTypeEXT 1000135001
+
+-- No documentation found for Nested "VkIndirectCommandsTokenTypeEXT" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_DATA_EXT"
+pattern INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_DATA_EXT = IndirectCommandsTokenTypeEXT 1000135000
+
+{-# COMPLETE
+  INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT
+  , INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT
+  , INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT
+  , INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_EXT
+  , INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_EXT
+  , INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_EXT
+  , INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_EXT
+  , INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_COUNT_EXT
+  , INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_COUNT_EXT
+  , INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_EXT
+  , INDIRECT_COMMANDS_TOKEN_TYPE_TRACE_RAYS2_EXT
+  , INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_EXT
+  , INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_EXT
+  , INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_NV_EXT
+  , INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV_EXT
+  , INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_DATA_SEQUENCE_INDEX_EXT
+  , INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_DATA_EXT ::
+    IndirectCommandsTokenTypeEXT
+  #-}
+
+conNameIndirectCommandsTokenTypeEXT :: String
+conNameIndirectCommandsTokenTypeEXT = "IndirectCommandsTokenTypeEXT"
+
+enumPrefixIndirectCommandsTokenTypeEXT :: String
+enumPrefixIndirectCommandsTokenTypeEXT = "INDIRECT_COMMANDS_TOKEN_TYPE_"
+
+showTableIndirectCommandsTokenTypeEXT :: [(IndirectCommandsTokenTypeEXT, String)]
+showTableIndirectCommandsTokenTypeEXT =
+  [
+    ( INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT
+    , "EXECUTION_SET_EXT"
+    )
+  ,
+    ( INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT
+    , "PUSH_CONSTANT_EXT"
+    )
+  ,
+    ( INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT
+    , "SEQUENCE_INDEX_EXT"
+    )
+  ,
+    ( INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_EXT
+    , "INDEX_BUFFER_EXT"
+    )
+  ,
+    ( INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_EXT
+    , "VERTEX_BUFFER_EXT"
+    )
+  ,
+    ( INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_EXT
+    , "DRAW_INDEXED_EXT"
+    )
+  ,
+    ( INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_EXT
+    , "DRAW_EXT"
+    )
+  ,
+    ( INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_COUNT_EXT
+    , "DRAW_INDEXED_COUNT_EXT"
+    )
+  ,
+    ( INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_COUNT_EXT
+    , "DRAW_COUNT_EXT"
+    )
+  ,
+    ( INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_EXT
+    , "DISPATCH_EXT"
+    )
+  ,
+    ( INDIRECT_COMMANDS_TOKEN_TYPE_TRACE_RAYS2_EXT
+    , "TRACE_RAYS2_EXT"
+    )
+  ,
+    ( INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_EXT
+    , "DRAW_MESH_TASKS_COUNT_EXT"
+    )
+  ,
+    ( INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_EXT
+    , "DRAW_MESH_TASKS_EXT"
+    )
+  ,
+    ( INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_NV_EXT
+    , "DRAW_MESH_TASKS_COUNT_NV_EXT"
+    )
+  ,
+    ( INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV_EXT
+    , "DRAW_MESH_TASKS_NV_EXT"
+    )
+  ,
+    ( INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_DATA_SEQUENCE_INDEX_EXT
+    , "PUSH_DATA_SEQUENCE_INDEX_EXT"
+    )
+  ,
+    ( INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_DATA_EXT
+    , "PUSH_DATA_EXT"
     )
   ]
 
diff --git a/src/Vulkan/Extensions/VK_EXT_device_generated_commands.hs-boot b/src/Vulkan/Extensions/VK_EXT_device_generated_commands.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_device_generated_commands.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_device_generated_commands.hs-boot
@@ -21,9 +21,16 @@
 --     Ratified
 --
 -- [__Extension and Version Dependencies__]
+--             
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_buffer_device_address VK_KHR_buffer_device_address>
---     and
+--              or
+--             
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.2 Vulkan Version 1.2>
+--          and
+--         
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance5 VK_KHR_maintenance5>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3 Vulkan Version 1.3>
 --
 -- [__API Interactions__]
 --
@@ -167,7 +174,7 @@
 --
 -- -   optionally preprocess the generated content using
 --     'cmdPreprocessGeneratedCommandsEXT', for example on an asynchronous
---     compute queue, or for the purpose of re-using the data in multiple
+--     compute queue, or for the purpose of reusing the data in multiple
 --     executions.
 --
 -- -   call 'cmdExecuteGeneratedCommandsEXT' to create and execute the
@@ -316,14 +323,14 @@
 --
 -- -   Extending 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits':
 --
---     -   'ACCESS_COMMAND_PREPROCESS_READ_BIT_EXT'
+--     -   'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_COMMAND_PREPROCESS_READ_BIT_EXT'
 --
---     -   'ACCESS_COMMAND_PREPROCESS_WRITE_BIT_EXT'
+--     -   'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_COMMAND_PREPROCESS_WRITE_BIT_EXT'
 --
 -- -   Extending
---     'Vulkan.Extensions.VK_KHR_maintenance5.BufferUsageFlagBits2KHR':
+--     'Vulkan.Core14.Enums.BufferUsageFlags2.BufferUsageFlagBits2':
 --
---     -   'Vulkan.Extensions.VK_KHR_maintenance5.BUFFER_USAGE_2_PREPROCESS_BUFFER_BIT_EXT'
+--     -   'Vulkan.Core14.Enums.BufferUsageFlags2.BUFFER_USAGE_2_PREPROCESS_BUFFER_BIT_EXT'
 --
 -- -   Extending 'Vulkan.Core10.Enums.ObjectType.ObjectType':
 --
@@ -332,14 +339,14 @@
 --     -   'Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_INDIRECT_EXECUTION_SET_EXT'
 --
 -- -   Extending
---     'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlagBits2KHR':
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PipelineCreateFlagBits2':
 --
---     -   'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXT'
+--     -   'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXT'
 --
 -- -   Extending
 --     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits':
 --
---     -   'PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_EXT'
+--     -   'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_EXT'
 --
 -- -   Extending
 --     'Vulkan.Extensions.VK_EXT_shader_object.ShaderCreateFlagBitsEXT':
@@ -393,7 +400,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_device_generated_commands Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_device_generated_commands Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -513,10 +520,12 @@
 instance Show (Chain es) => Show (IndirectCommandsLayoutCreateInfoEXT es)
 
 
-data IndirectCommandsLayoutTokenEXT
+type role IndirectCommandsLayoutTokenEXT nominal
+data IndirectCommandsLayoutTokenEXT (es :: [Type])
 
-instance ToCStruct IndirectCommandsLayoutTokenEXT
-instance Show IndirectCommandsLayoutTokenEXT
+instance ( Extendss IndirectCommandsLayoutTokenEXT es
+         , PokeChain es ) => ToCStruct (IndirectCommandsLayoutTokenEXT es)
+instance Show (Chain es) => Show (IndirectCommandsLayoutTokenEXT es)
 
 
 data IndirectCommandsPushConstantTokenEXT
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
@@ -32,7 +32,7 @@
 -- [__Contact__]
 --
 --     -   Yiwei Zhang
---         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_device_memory_report] @zhangyiwei%0A*Here describe the issue or question you have about the VK_EXT_device_memory_report extension* >
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_device_memory_report] @zzyiwei%0A*Here describe the issue or question you have about the VK_EXT_device_memory_report extension* >
 --
 -- == Other Extension Metadata
 --
@@ -56,7 +56,7 @@
 -- associated with Vulkan objects. This extension exposes the actual
 -- underlying device memory usage, including allocations that are not
 -- normally visible to the application, such as memory consumed by
--- 'Vulkan.Core10.Pipeline.createGraphicsPipelines'. It is intended
+-- 'Vulkan.Core10.GraphicsPipeline.createGraphicsPipelines'. It is intended
 -- primarily for use by debug tooling rather than for production
 -- applications.
 --
@@ -232,7 +232,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_device_memory_report Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -313,12 +313,22 @@
 -- structure passed to
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
 -- it is filled in to indicate whether each corresponding feature is
--- supported. 'PhysicalDeviceDeviceMemoryReportFeaturesEXT' /can/ also be
--- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceDeviceMemoryReportFeaturesEXT', it /must/ add an instance
+-- of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_memory_report VK_EXT_device_memory_report>,
@@ -380,8 +390,12 @@
 -- The callback could be called from a background thread other than the
 -- thread calling the Vulkan commands.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
 -- = See Also
 --
 -- 'PFN_vkDeviceMemoryReportCallbackEXT',
@@ -400,10 +414,8 @@
     -- @pfnUserCallback@ /must/ be a valid
     -- 'PFN_vkDeviceMemoryReportCallbackEXT' value
     pfnUserCallback :: PFN_vkDeviceMemoryReportCallbackEXT
-  , -- | @pUserData@ is user data to be passed to the callback.
-    --
-    -- #VUID-VkDeviceDeviceMemoryReportCreateInfoEXT-pUserData-parameter#
-    -- @pUserData@ /must/ be a pointer value
+  , -- | @pUserData@ is NULL or an application-defined user data pointer to be
+    -- passed to the callback.
     userData :: Ptr ()
   }
   deriving (Typeable)
@@ -428,7 +440,6 @@
     poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
     poke ((p `plusPtr` 16 :: Ptr DeviceMemoryReportFlagsEXT)) (zero)
     poke ((p `plusPtr` 24 :: Ptr PFN_vkDeviceMemoryReportCallbackEXT)) (zero)
-    poke ((p `plusPtr` 32 :: Ptr (Ptr ()))) (zero)
     f
 
 instance FromCStruct DeviceDeviceMemoryReportCreateInfoEXT where
@@ -527,7 +538,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#debugging-object-types  and Vulkan Handle Relationship>
+    -- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -645,6 +656,26 @@
 -- | VkDeviceMemoryReportEventTypeEXT - Events that can occur on a device
 -- memory object
 --
+-- = Description
+--
+-- -   'DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATE_EXT' specifies this event
+--     corresponds to the allocation of an internal device memory object or
+--     a 'Vulkan.Core10.Handles.DeviceMemory'.
+--
+-- -   'DEVICE_MEMORY_REPORT_EVENT_TYPE_FREE_EXT' specifies this event
+--     corresponds to the deallocation of an internally-allocated device
+--     memory object or a 'Vulkan.Core10.Handles.DeviceMemory'.
+--
+-- -   'DEVICE_MEMORY_REPORT_EVENT_TYPE_IMPORT_EXT' specifies this event
+--     corresponds to the import of an external memory object.
+--
+-- -   'DEVICE_MEMORY_REPORT_EVENT_TYPE_UNIMPORT_EXT' specifies this event
+--     is the release of an imported external memory object.
+--
+-- -   'DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATION_FAILED_EXT' specifies
+--     this event corresponds to the failed allocation of an internal
+--     device memory object or a 'Vulkan.Core10.Handles.DeviceMemory'.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_memory_report VK_EXT_device_memory_report>,
@@ -652,27 +683,19 @@
 newtype DeviceMemoryReportEventTypeEXT = DeviceMemoryReportEventTypeEXT Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATE_EXT' specifies this event
--- corresponds to the allocation of an internal device memory object or a
--- 'Vulkan.Core10.Handles.DeviceMemory'.
+-- No documentation found for Nested "VkDeviceMemoryReportEventTypeEXT" "VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATE_EXT"
 pattern DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATE_EXT = DeviceMemoryReportEventTypeEXT 0
 
--- | 'DEVICE_MEMORY_REPORT_EVENT_TYPE_FREE_EXT' specifies this event
--- corresponds to the deallocation of an internally-allocated device memory
--- object or a 'Vulkan.Core10.Handles.DeviceMemory'.
+-- No documentation found for Nested "VkDeviceMemoryReportEventTypeEXT" "VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_FREE_EXT"
 pattern DEVICE_MEMORY_REPORT_EVENT_TYPE_FREE_EXT = DeviceMemoryReportEventTypeEXT 1
 
--- | 'DEVICE_MEMORY_REPORT_EVENT_TYPE_IMPORT_EXT' specifies this event
--- corresponds to the import of an external memory object.
+-- No documentation found for Nested "VkDeviceMemoryReportEventTypeEXT" "VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_IMPORT_EXT"
 pattern DEVICE_MEMORY_REPORT_EVENT_TYPE_IMPORT_EXT = DeviceMemoryReportEventTypeEXT 2
 
--- | 'DEVICE_MEMORY_REPORT_EVENT_TYPE_UNIMPORT_EXT' specifies this event is
--- the release of an imported external memory object.
+-- No documentation found for Nested "VkDeviceMemoryReportEventTypeEXT" "VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_UNIMPORT_EXT"
 pattern DEVICE_MEMORY_REPORT_EVENT_TYPE_UNIMPORT_EXT = DeviceMemoryReportEventTypeEXT 3
 
--- | 'DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATION_FAILED_EXT' specifies this
--- event corresponds to the failed allocation of an internal device memory
--- object or a 'Vulkan.Core10.Handles.DeviceMemory'.
+-- No documentation found for Nested "VkDeviceMemoryReportEventTypeEXT" "VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATION_FAILED_EXT"
 pattern DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATION_FAILED_EXT = DeviceMemoryReportEventTypeEXT 4
 
 {-# COMPLETE
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
@@ -32,7 +32,7 @@
 -- [__Contact__]
 --
 --     -   Yiwei Zhang
---         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_device_memory_report] @zhangyiwei%0A*Here describe the issue or question you have about the VK_EXT_device_memory_report extension* >
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_device_memory_report] @zzyiwei%0A*Here describe the issue or question you have about the VK_EXT_device_memory_report extension* >
 --
 -- == Other Extension Metadata
 --
@@ -56,7 +56,7 @@
 -- associated with Vulkan objects. This extension exposes the actual
 -- underlying device memory usage, including allocations that are not
 -- normally visible to the application, such as memory consumed by
--- 'Vulkan.Core10.Pipeline.createGraphicsPipelines'. It is intended
+-- 'Vulkan.Core10.GraphicsPipeline.createGraphicsPipelines'. It is intended
 -- primarily for use by debug tooling rather than for production
 -- applications.
 --
@@ -232,7 +232,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_device_memory_report Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_direct_mode_display Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -114,6 +114,7 @@
 import Vulkan.Internal.Utils (traceAroundEvent)
 import Control.Monad (unless)
 import Control.Monad.IO.Class (liftIO)
+import GHC.Base (when)
 import GHC.IO (throwIO)
 import GHC.Ptr (nullFunPtr)
 import Control.Monad.IO.Class (MonadIO)
@@ -131,6 +132,8 @@
 import Vulkan.Core10.Handles (PhysicalDevice_T)
 import Vulkan.Core10.Enums.Result (Result)
 import Vulkan.Core10.Enums.Result (Result(..))
+import Vulkan.Exception (VulkanException(..))
+import Vulkan.Core10.Enums.Result (Result(SUCCESS))
 import Vulkan.Extensions.Handles (DisplayKHR(..))
 foreign import ccall
 #if !defined(SAFE_FOREIGN_CALLS)
@@ -148,8 +151,11 @@
 --     -   'Vulkan.Core10.Enums.Result.SUCCESS'
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
---     None
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_direct_mode_display VK_EXT_direct_mode_display>,
@@ -176,10 +182,10 @@
   unless (vkReleaseDisplayEXTPtr /= nullFunPtr) $
     throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkReleaseDisplayEXT is null" Nothing Nothing
   let vkReleaseDisplayEXT' = mkVkReleaseDisplayEXT vkReleaseDisplayEXTPtr
-  _ <- traceAroundEvent "vkReleaseDisplayEXT" (vkReleaseDisplayEXT'
+  r <- traceAroundEvent "vkReleaseDisplayEXT" (vkReleaseDisplayEXT'
                                                  (physicalDeviceHandle (physicalDevice))
                                                  (display))
-  pure $ ()
+  when (r < SUCCESS) (throwIO (VulkanException r))
 
 
 type EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION = 1
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
@@ -18,7 +18,7 @@
 --     1
 --
 -- [__Ratification Status__]
---     Not ratified
+--     Ratified
 --
 -- [__Extension and Version Dependencies__]
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_surface VK_KHR_surface>
@@ -85,7 +85,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_directfb_surface Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -206,10 +206,14 @@
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_directfb_surface VK_EXT_directfb_surface>,
@@ -225,7 +229,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>).
+                            -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>).
                             ("allocator" ::: Maybe AllocationCallbacks)
                          -> io (SurfaceKHR)
 createDirectFBSurfaceEXT instance'
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
@@ -18,7 +18,7 @@
 --     1
 --
 -- [__Ratification Status__]
---     Not ratified
+--     Ratified
 --
 -- [__Extension and Version Dependencies__]
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_surface VK_KHR_surface>
@@ -85,7 +85,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_directfb_surface Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -51,7 +51,7 @@
 --
 -- This extension provides additional orthogonally aligned “discard
 -- rectangles” specified in framebuffer-space coordinates that restrict
--- rasterization of all points, lines and triangles.
+-- rasterization of all points, lines, and triangles.
 --
 -- From zero to an implementation-dependent limit (specified by
 -- @maxDiscardRectangles@) number of discard rectangles can be operational
@@ -85,7 +85,8 @@
 --
 -- == New Structures
 --
--- -   Extending 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo':
+-- -   Extending
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo':
 --
 --     -   'PipelineDiscardRectangleStateCreateInfoEXT'
 --
@@ -140,7 +141,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_discard_rectangles Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -240,11 +241,11 @@
 --
 -- This command sets the discard rectangles for subsequent drawing commands
 -- when drawing using
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-objects shader objects>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader objects>,
 -- or when the graphics pipeline is created with
 -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_EXT'
 -- set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
 -- Otherwise, this state is specified by the
 -- 'PipelineDiscardRectangleStateCreateInfoEXT'::@pDiscardRectangles@
 -- values used to create the currently active pipeline.
@@ -294,7 +295,8 @@
 --
 -- -   #VUID-vkCmdSetDiscardRectangleEXT-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdSetDiscardRectangleEXT-videocoding# This command /must/
 --     only be called outside of a video coding scope
@@ -316,10 +318,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
 -- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdSetDiscardRectangleEXT is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_discard_rectangles VK_EXT_discard_rectangles>,
@@ -369,11 +376,11 @@
 --
 -- This command sets the discard rectangle enable for subsequent drawing
 -- commands when drawing using
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-objects shader objects>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader objects>,
 -- or when the graphics pipeline is created with
 -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT'
 -- set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
 -- Otherwise, this state is implied by the
 -- 'PipelineDiscardRectangleStateCreateInfoEXT'::@discardRectangleCount@
 -- value used to create the currently active pipeline, where a non-zero
@@ -399,7 +406,8 @@
 --
 -- -   #VUID-vkCmdSetDiscardRectangleEnableEXT-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdSetDiscardRectangleEnableEXT-videocoding# This command
 --     /must/ only be called outside of a video coding scope
@@ -418,10 +426,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
 -- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdSetDiscardRectangleEnableEXT is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_discard_rectangles VK_EXT_discard_rectangles>,
@@ -462,11 +475,11 @@
 --
 -- This command sets the discard rectangle mode for subsequent drawing
 -- commands when drawing using
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-objects shader objects>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader objects>,
 -- or when the graphics pipeline is created with
 -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT'
 -- set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
 -- Otherwise, this state is specified by the
 -- 'PipelineDiscardRectangleStateCreateInfoEXT'::@discardRectangleMode@
 -- value used to create the currently active pipeline.
@@ -494,7 +507,8 @@
 --
 -- -   #VUID-vkCmdSetDiscardRectangleModeEXT-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdSetDiscardRectangleModeEXT-videocoding# This command
 --     /must/ only be called outside of a video coding scope
@@ -513,10 +527,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
 -- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdSetDiscardRectangleModeEXT is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_discard_rectangles VK_EXT_discard_rectangles>,
@@ -554,8 +573,12 @@
 -- it is filled in with each corresponding implementation-dependent
 -- property.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_discard_rectangles VK_EXT_discard_rectangles>,
@@ -613,25 +636,44 @@
 -- is ignored. If the
 -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT'
 -- dynamic state is not enabled for the pipeline the presence of this
--- structure in the 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'
--- chain, and a @discardRectangleCount@ greater than zero, implicitly
--- enables discard rectangles in the pipeline, otherwise discard rectangles
--- /must/ enabled or disabled by 'cmdSetDiscardRectangleEnableEXT'. If the
+-- structure in the
+-- 'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo' chain, and a
+-- @discardRectangleCount@ greater than zero, implicitly enables discard
+-- rectangles in the pipeline, otherwise discard rectangles /must/ enabled
+-- or disabled by 'cmdSetDiscardRectangleEnableEXT'. If the
 -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT'
 -- dynamic state is enabled for the pipeline, the @discardRectangleMode@
 -- member is ignored, and the discard rectangle mode /must/ be set by
 -- 'cmdSetDiscardRectangleModeEXT'.
 --
 -- When this structure is included in the @pNext@ chain of
--- 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo', it defines
+-- 'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo', it defines
 -- parameters of the discard rectangle test. If the
 -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_EXT'
 -- dynamic state is not enabled, and this structure is not included in the
 -- @pNext@ chain, it is equivalent to specifying this structure with a
--- @discardRectangleCount@ of @0@.
+-- @discardRectangleCount@ of @0@. If all
+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_EXT',
+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT',
+-- and
+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT'
+-- dynamic states are enabled, the application /can/ omit this structure
+-- from the @pNext@ chain of
+-- 'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo' and still
+-- use discard rectangles by setting all state dynamically. In this case
+-- 'cmdSetDiscardRectangleEXT' /must/ be called to set the discard
+-- rectangle for all indices [0, @maxDiscardRectangles@) before drawing
+-- with discard rectangles enabled. Individual discard rectangles /can/ be
+-- made ineffective by setting their
+-- 'Vulkan.Core10.FundamentalTypes.Rect2D'::@extent.width@ and
+-- 'Vulkan.Core10.FundamentalTypes.Rect2D'::@extent.height@ to zero.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_discard_rectangles VK_EXT_discard_rectangles>,
@@ -742,6 +784,14 @@
 
 -- | VkDiscardRectangleModeEXT - Specify the discard rectangle mode
 --
+-- = Description
+--
+-- -   'DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT' specifies that the discard
+--     rectangle test is inclusive.
+--
+-- -   'DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT' specifies that the discard
+--     rectangle test is exclusive.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_discard_rectangles VK_EXT_discard_rectangles>,
@@ -750,12 +800,10 @@
 newtype DiscardRectangleModeEXT = DiscardRectangleModeEXT Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT' specifies that the discard
--- rectangle test is inclusive.
+-- No documentation found for Nested "VkDiscardRectangleModeEXT" "VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT"
 pattern DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT = DiscardRectangleModeEXT 0
 
--- | 'DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT' specifies that the discard
--- rectangle test is exclusive.
+-- No documentation found for Nested "VkDiscardRectangleModeEXT" "VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT"
 pattern DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT = DiscardRectangleModeEXT 1
 
 {-# COMPLETE
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
@@ -51,7 +51,7 @@
 --
 -- This extension provides additional orthogonally aligned “discard
 -- rectangles” specified in framebuffer-space coordinates that restrict
--- rasterization of all points, lines and triangles.
+-- rasterization of all points, lines, and triangles.
 --
 -- From zero to an implementation-dependent limit (specified by
 -- @maxDiscardRectangles@) number of discard rectangles can be operational
@@ -85,7 +85,8 @@
 --
 -- == New Structures
 --
--- -   Extending 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo':
+-- -   Extending
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo':
 --
 --     -   'PipelineDiscardRectangleStateCreateInfoEXT'
 --
@@ -140,7 +141,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_discard_rectangles Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -142,7 +142,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_display_control Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -283,6 +283,10 @@
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_display_control VK_EXT_display_control>,
@@ -346,6 +350,10 @@
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_display_control VK_EXT_display_control>,
@@ -360,7 +368,7 @@
                           -- describing the event of interest to the application.
                           DeviceEventInfoEXT
                        -> -- | @pAllocator@ controls host memory allocation as described in the
-                          -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                          -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
                           -- chapter.
                           ("allocator" ::: Maybe AllocationCallbacks)
                        -> io (Fence)
@@ -429,6 +437,10 @@
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_display_control VK_EXT_display_control>,
@@ -445,7 +457,7 @@
                            -- describing the event of interest to the application.
                            DisplayEventInfoEXT
                         -> -- | @pAllocator@ controls host memory allocation as described in the
-                           -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                           -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
                            -- chapter.
                            ("allocator" ::: Maybe AllocationCallbacks)
                         -> io (Fence)
@@ -521,12 +533,16 @@
 --
 -- [<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_DEVICE_LOST'
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DATE_KHR'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_display_control VK_EXT_display_control>,
@@ -626,7 +642,10 @@
 -- 'DeviceEventTypeEXT', 'Vulkan.Core10.Enums.StructureType.StructureType',
 -- 'registerDeviceEventEXT'
 data DeviceEventInfoEXT = DeviceEventInfoEXT
-  { -- | #VUID-VkDeviceEventInfoEXT-deviceEvent-parameter# @deviceEvent@ /must/
+  { -- | @deviceEvent@ is a 'DeviceEventTypeEXT' value specifying when the fence
+    -- will be signaled.
+    --
+    -- #VUID-VkDeviceEventInfoEXT-deviceEvent-parameter# @deviceEvent@ /must/
     -- be a valid 'DeviceEventTypeEXT' value
     deviceEvent :: DeviceEventTypeEXT }
   deriving (Typeable, Eq)
@@ -742,6 +761,12 @@
 --     'Vulkan.Extensions.VK_EXT_display_surface_counter.SurfaceCounterFlagBitsEXT'
 --     values
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_display_control VK_EXT_display_control>,
@@ -791,6 +816,20 @@
 
 -- | VkDisplayPowerStateEXT - Possible power states for a display
 --
+-- = Description
+--
+-- -   'DISPLAY_POWER_STATE_OFF_EXT' specifies that the display is powered
+--     down.
+--
+-- -   'DISPLAY_POWER_STATE_SUSPEND_EXT' specifies that the display is put
+--     into a low power mode, from which it /may/ be able to transition
+--     back to 'DISPLAY_POWER_STATE_ON_EXT' more quickly than if it were in
+--     'DISPLAY_POWER_STATE_OFF_EXT'. This state /may/ be the same as
+--     'DISPLAY_POWER_STATE_OFF_EXT'.
+--
+-- -   'DISPLAY_POWER_STATE_ON_EXT' specifies that the display is powered
+--     on.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_display_control VK_EXT_display_control>,
@@ -798,18 +837,13 @@
 newtype DisplayPowerStateEXT = DisplayPowerStateEXT Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'DISPLAY_POWER_STATE_OFF_EXT' specifies that the display is powered
--- down.
+-- No documentation found for Nested "VkDisplayPowerStateEXT" "VK_DISPLAY_POWER_STATE_OFF_EXT"
 pattern DISPLAY_POWER_STATE_OFF_EXT = DisplayPowerStateEXT 0
 
--- | 'DISPLAY_POWER_STATE_SUSPEND_EXT' specifies that the display is put into
--- a low power mode, from which it /may/ be able to transition back to
--- 'DISPLAY_POWER_STATE_ON_EXT' more quickly than if it were in
--- 'DISPLAY_POWER_STATE_OFF_EXT'. This state /may/ be the same as
--- 'DISPLAY_POWER_STATE_OFF_EXT'.
+-- No documentation found for Nested "VkDisplayPowerStateEXT" "VK_DISPLAY_POWER_STATE_SUSPEND_EXT"
 pattern DISPLAY_POWER_STATE_SUSPEND_EXT = DisplayPowerStateEXT 1
 
--- | 'DISPLAY_POWER_STATE_ON_EXT' specifies that the display is powered on.
+-- No documentation found for Nested "VkDisplayPowerStateEXT" "VK_DISPLAY_POWER_STATE_ON_EXT"
 pattern DISPLAY_POWER_STATE_ON_EXT = DisplayPowerStateEXT 2
 
 {-# COMPLETE
@@ -854,6 +888,14 @@
 
 -- | VkDeviceEventTypeEXT - Events that can occur on a device object
 --
+-- = Description
+--
+-- -   'DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT' specifies that the fence is
+--     signaled when a display is plugged into or unplugged from the
+--     specified device. Applications /can/ use this notification to
+--     determine when they need to re-enumerate the available displays on a
+--     device.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_display_control VK_EXT_display_control>,
@@ -861,10 +903,7 @@
 newtype DeviceEventTypeEXT = DeviceEventTypeEXT Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT' specifies that the fence is
--- signaled when a display is plugged into or unplugged from the specified
--- device. Applications /can/ use this notification to determine when they
--- need to re-enumerate the available displays on a device.
+-- No documentation found for Nested "VkDeviceEventTypeEXT" "VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT"
 pattern DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = DeviceEventTypeEXT 0
 
 {-# COMPLETE DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT :: DeviceEventTypeEXT #-}
@@ -897,6 +936,12 @@
 
 -- | VkDisplayEventTypeEXT - Events that can occur on a display object
 --
+-- = Description
+--
+-- -   'DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT' specifies that the fence is
+--     signaled when the first pixel of the next display refresh cycle
+--     leaves the display engine for the display.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_display_control VK_EXT_display_control>,
@@ -904,9 +949,7 @@
 newtype DisplayEventTypeEXT = DisplayEventTypeEXT Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT' specifies that the fence is
--- signaled when the first pixel of the next display refresh cycle leaves
--- the display engine for the display.
+-- No documentation found for Nested "VkDisplayEventTypeEXT" "VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT"
 pattern DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = DisplayEventTypeEXT 0
 
 {-# COMPLETE DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT :: DisplayEventTypeEXT #-}
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
@@ -142,7 +142,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_display_control Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -95,7 +95,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_display_surface_counter Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -200,10 +200,6 @@
 --
 -- == Valid Usage
 --
--- -   #VUID-vkGetPhysicalDeviceSurfaceCapabilities2EXT-surface-06523#
---     @surface@ /must/ be a valid 'Vulkan.Extensions.Handles.SurfaceKHR'
---     handle
---
 -- -   #VUID-vkGetPhysicalDeviceSurfaceCapabilities2EXT-surface-06211#
 --     @surface@ /must/ be supported by @physicalDevice@, as reported by
 --     'Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceSupportKHR'
@@ -236,12 +232,16 @@
 --
 -- [<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_OUT_OF_HOST_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_SURFACE_LOST_KHR'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_display_surface_counter VK_EXT_display_surface_counter>,
@@ -352,7 +352,7 @@
     -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlagBits' representing
     -- the ways the application /can/ use the presentable images of a swapchain
     -- created with 'Vulkan.Extensions.VK_KHR_surface.PresentModeKHR' set to
-    -- 'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_FIFO_LATEST_READY_EXT',
+    -- 'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_FIFO_LATEST_READY_KHR',
     -- 'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_IMMEDIATE_KHR',
     -- 'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_MAILBOX_KHR',
     -- 'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_FIFO_KHR' or
@@ -363,12 +363,9 @@
     -- usages.
     supportedUsageFlags :: ImageUsageFlags
   , -- | @supportedSurfaceCounters@ is a bitmask of 'SurfaceCounterFlagBitsEXT'
-    -- indicating the supported surface counter types.
-    --
-    -- #VUID-VkSurfaceCapabilities2EXT-supportedSurfaceCounters-01246#
-    -- @supportedSurfaceCounters@ /must/ not include
+    -- indicating the supported surface counter types. It /must/ not include
     -- 'SURFACE_COUNTER_VBLANK_BIT_EXT' unless the surface queried is a
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#wsi-display-surfaces display surface>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#wsi-display-surfaces display surface>
     supportedSurfaceCounters :: SurfaceCounterFlagsEXT
   }
   deriving (Typeable)
@@ -462,6 +459,12 @@
 
 -- | VkSurfaceCounterFlagBitsEXT - Surface-relative counter types
 --
+-- = Description
+--
+-- -   'SURFACE_COUNTER_VBLANK_BIT_EXT' specifies a counter incrementing
+--     once every time a vertical blanking period occurs on the display
+--     associated with the surface.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_display_surface_counter VK_EXT_display_surface_counter>,
@@ -470,9 +473,7 @@
 newtype SurfaceCounterFlagBitsEXT = SurfaceCounterFlagBitsEXT Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'SURFACE_COUNTER_VBLANK_BIT_EXT' specifies a counter incrementing once
--- every time a vertical blanking period occurs on the display associated
--- with the surface.
+-- No documentation found for Nested "VkSurfaceCounterFlagBitsEXT" "VK_SURFACE_COUNTER_VBLANK_BIT_EXT"
 pattern SURFACE_COUNTER_VBLANK_BIT_EXT = SurfaceCounterFlagBitsEXT 0x00000001
 
 conNameSurfaceCounterFlagBitsEXT :: String
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
@@ -95,7 +95,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_display_surface_counter Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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_dynamic_rendering_unused_attachments.hs b/src/Vulkan/Extensions/VK_EXT_dynamic_rendering_unused_attachments.hs
--- a/src/Vulkan/Extensions/VK_EXT_dynamic_rendering_unused_attachments.hs
+++ b/src/Vulkan/Extensions/VK_EXT_dynamic_rendering_unused_attachments.hs
@@ -107,7 +107,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_dynamic_rendering_unused_attachments Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_dynamic_rendering_unused_attachments Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -156,12 +156,21 @@
 -- 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. 'PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT'
--- /can/ also be used in the @pNext@ chain of
--- 'Vulkan.Core10.Device.DeviceCreateInfo' to selectively enable these
--- features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT', it /must/
+-- add an instance of the structure, with the desired feature members set
+-- to 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Extensions/VK_EXT_dynamic_rendering_unused_attachments.hs-boot b/src/Vulkan/Extensions/VK_EXT_dynamic_rendering_unused_attachments.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_dynamic_rendering_unused_attachments.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_dynamic_rendering_unused_attachments.hs-boot
@@ -107,7 +107,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_dynamic_rendering_unused_attachments Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_dynamic_rendering_unused_attachments Vulkan Specification>.
 --
 -- This 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
@@ -18,7 +18,7 @@
 --     1
 --
 -- [__Ratification Status__]
---     Not ratified
+--     Ratified
 --
 -- [__Extension and Version Dependencies__]
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
@@ -143,11 +143,10 @@
 --
 -- == Promotion to Vulkan 1.3
 --
--- This extension has been partially promoted. All dynamic state enumerants
--- and commands 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.
+-- All dynamic state enumerants and commands 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.
 --
 -- == Issues
 --
@@ -177,7 +176,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -369,11 +368,21 @@
 -- 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.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceExtendedDynamicStateFeaturesEXT', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
 --
 -- = See Also
 --
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
@@ -18,7 +18,7 @@
 --     1
 --
 -- [__Ratification Status__]
---     Not ratified
+--     Ratified
 --
 -- [__Extension and Version Dependencies__]
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
@@ -143,11 +143,10 @@
 --
 -- == Promotion to Vulkan 1.3
 --
--- This extension has been partially promoted. All dynamic state enumerants
--- and commands 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.
+-- All dynamic state enumerants and commands 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.
 --
 -- == Issues
 --
@@ -177,7 +176,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -18,7 +18,7 @@
 --     1
 --
 -- [__Ratification Status__]
---     Not ratified
+--     Ratified
 --
 -- [__Extension and Version Dependencies__]
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
@@ -101,8 +101,7 @@
 --
 -- == Promotion to Vulkan 1.3
 --
--- This extension has been partially promoted. The dynamic state enumerants
--- 'DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT',
+-- 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
 -- commands in this extension are included in core Vulkan 1.3, with the EXT
@@ -124,7 +123,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state2 Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -204,13 +203,13 @@
 --
 -- This command sets the number of control points per patch for subsequent
 -- drawing commands when drawing using
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-objects shader objects>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader objects>,
 -- or when the graphics pipeline is created with
 -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT'
 -- set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
 -- Otherwise, this state is specified by the
--- 'Vulkan.Core10.Pipeline.PipelineTessellationStateCreateInfo'::@patchControlPoints@
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineTessellationStateCreateInfo'::@patchControlPoints@
 -- value used to create the currently active pipeline.
 --
 -- == Valid Usage
@@ -243,7 +242,8 @@
 --
 -- -   #VUID-vkCmdSetPatchControlPointsEXT-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdSetPatchControlPointsEXT-videocoding# This command /must/
 --     only be called outside of a video coding scope
@@ -262,10 +262,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
 -- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdSetPatchControlPointsEXT is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = 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>,
@@ -304,12 +309,12 @@
 --
 -- This command sets the logical operation for blend state for subsequent
 -- drawing commands when drawing using
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-objects shader objects>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader objects>,
 -- or when the graphics pipeline is created with
 -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_EXT' set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
 -- Otherwise, this state is specified by the
--- 'Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo'::@logicOp@
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineColorBlendStateCreateInfo'::@logicOp@
 -- value used to create the currently active pipeline.
 --
 -- == Valid Usage
@@ -339,7 +344,8 @@
 --
 -- -   #VUID-vkCmdSetLogicOpEXT-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdSetLogicOpEXT-videocoding# This command /must/ only be
 --     called outside of a video coding scope
@@ -358,10 +364,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
 -- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdSetLogicOpEXT is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = 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>,
@@ -426,11 +437,21 @@
 -- structure passed to
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
 -- it is filled in to indicate whether each corresponding feature is
--- supported. 'PhysicalDeviceExtendedDynamicState2FeaturesEXT' /can/ also
--- be used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo'
--- to selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceExtendedDynamicState2FeaturesEXT', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
 --
 -- = See Also
 --
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
@@ -18,7 +18,7 @@
 --     1
 --
 -- [__Ratification Status__]
---     Not ratified
+--     Ratified
 --
 -- [__Extension and Version Dependencies__]
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
@@ -101,8 +101,7 @@
 --
 -- == Promotion to Vulkan 1.3
 --
--- This extension has been partially promoted. The dynamic state enumerants
--- 'DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT',
+-- 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
 -- commands in this extension are included in core Vulkan 1.3, with the EXT
@@ -124,7 +123,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state2 Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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_extended_dynamic_state3.hs b/src/Vulkan/Extensions/VK_EXT_extended_dynamic_state3.hs
--- a/src/Vulkan/Extensions/VK_EXT_extended_dynamic_state3.hs
+++ b/src/Vulkan/Extensions/VK_EXT_extended_dynamic_state3.hs
@@ -449,13 +449,11 @@
 -- 1) What about the VkPipelineMultisampleStateCreateInfo state
 -- @sampleShadingEnable@ and @minSampleShading@?
 --
--- [__UNRESOLVED__]
---
---     -   @sampleShadingEnable@ and @minSampleShading@ are required when
---         compiling the fragment shader, and it is not meaningful to set
---         them dynamically since they always need to match the fragment
---         shader state, so this hardware state may as well just come from
---         the pipeline with the fragment shader.
+-- @sampleShadingEnable@ and @minSampleShading@ are required when compiling
+-- the fragment shader, and it is not meaningful to set them dynamically
+-- since they always need to match the fragment shader state, so this
+-- hardware state may as well just come from the pipeline with the fragment
+-- shader.
 --
 -- == Version History
 --
@@ -474,7 +472,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state3 Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_extended_dynamic_state3 Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -523,7 +521,6 @@
                                                          , CoverageModulationModeNV(..)
                                                          , CoverageReductionModeNV(..)
                                                          , ConservativeRasterizationModeEXT(..)
-                                                         , LineRasterizationModeKHR(..)
                                                          , ProvokingVertexModeEXT(..)
                                                          , LineRasterizationModeEXT
                                                          ) where
@@ -540,6 +537,7 @@
 import Control.Monad.Trans.Cont (evalContT)
 import qualified Data.Vector (imapM_)
 import qualified Data.Vector (length)
+import qualified Data.Vector (null)
 import Foreign.C.Types (CFloat(..))
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
@@ -615,8 +613,8 @@
 import Vulkan.Dynamic (DeviceCmds(pVkCmdSetTessellationDomainOriginEXT))
 import Vulkan.Dynamic (DeviceCmds(pVkCmdSetViewportSwizzleNV))
 import Vulkan.Dynamic (DeviceCmds(pVkCmdSetViewportWScalingEnableNV))
+import Vulkan.Core14.Enums.LineRasterizationMode (LineRasterizationMode(..))
 import Vulkan.Extensions.VK_EXT_line_rasterization (LineRasterizationModeEXT)
-import Vulkan.Extensions.VK_KHR_line_rasterization (LineRasterizationModeKHR(..))
 import Vulkan.Core10.Enums.PolygonMode (PolygonMode)
 import Vulkan.Core10.Enums.PolygonMode (PolygonMode(..))
 import Vulkan.Extensions.VK_EXT_provoking_vertex (ProvokingVertexModeEXT)
@@ -635,7 +633,6 @@
 import Vulkan.Extensions.VK_NV_framebuffer_mixed_samples (CoverageModulationModeNV(..))
 import Vulkan.Extensions.VK_NV_coverage_reduction_mode (CoverageReductionModeNV(..))
 import Vulkan.Extensions.VK_EXT_line_rasterization (LineRasterizationModeEXT)
-import Vulkan.Extensions.VK_KHR_line_rasterization (LineRasterizationModeKHR(..))
 import Vulkan.Extensions.VK_EXT_provoking_vertex (ProvokingVertexModeEXT(..))
 import Vulkan.Extensions.VK_NV_viewport_swizzle (ViewportCoordinateSwizzleNV(..))
 import Vulkan.Extensions.VK_NV_viewport_swizzle (ViewportSwizzleNV(..))
@@ -653,11 +650,11 @@
 --
 -- This command sets the origin of the tessellation domain space for
 -- subsequent drawing commands when drawing using
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-objects shader objects>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader objects>,
 -- or when the graphics pipeline is created with
 -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT'
 -- set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
 -- Otherwise, this state is specified by the
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_maintenance2.PipelineTessellationDomainOriginStateCreateInfo'::@domainOrigin@
 -- value used to create the currently active pipeline.
@@ -692,7 +689,8 @@
 --
 -- -   #VUID-vkCmdSetTessellationDomainOriginEXT-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdSetTessellationDomainOriginEXT-videocoding# This command
 --     /must/ only be called outside of a video coding scope
@@ -711,10 +709,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
 -- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdSetTessellationDomainOriginEXT is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state3 VK_EXT_extended_dynamic_state3>,
@@ -756,13 +759,13 @@
 --
 -- This command sets whether depth clamping is enabled or disabled for
 -- subsequent drawing commands when drawing using
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-objects shader objects>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader objects>,
 -- or when the graphics pipeline is created with
 -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT'
 -- set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
 -- Otherwise, this state is specified by the
--- 'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo'::@depthClampEnable@
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineRasterizationStateCreateInfo'::@depthClampEnable@
 -- value used to create the currently active pipeline.
 --
 -- If the depth clamping state is changed dynamically, and the pipeline was
@@ -771,6 +774,20 @@
 -- enabled, then depth clipping is enabled when depth clamping is disabled
 -- and vice versa.
 --
+-- If the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance11 maintenance11>
+-- feature is enabled, the above statement is further clarified to state
+-- that the depth clipping state is only affected by the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#dynamic-state-current-value current value>
+-- of @depthClampEnable@ if the pipeline was not created with the
+-- 'Vulkan.Extensions.VK_EXT_depth_clip_enable.PipelineRasterizationDepthClipStateCreateInfoEXT'
+-- structure. If
+-- 'Vulkan.Extensions.VK_EXT_depth_clip_enable.PipelineRasterizationDepthClipStateCreateInfoEXT'
+-- was included in the pipeline creation then the depth clipping state is
+-- set explicitly by
+-- 'Vulkan.Extensions.VK_EXT_depth_clip_enable.PipelineRasterizationDepthClipStateCreateInfoEXT'::@depthClipEnable@
+-- and not changed when the depth clamping state is modified.
+--
 -- == Valid Usage
 --
 -- -   #VUID-vkCmdSetDepthClampEnableEXT-None-09423# At least one of the
@@ -785,7 +802,7 @@
 --         feature is enabled
 --
 -- -   #VUID-vkCmdSetDepthClampEnableEXT-depthClamp-07449# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-depthClamp depthClamp>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-depthClamp depthClamp>
 --     feature is not enabled, @depthClampEnable@ /must/ be
 --     'Vulkan.Core10.FundamentalTypes.FALSE'
 --
@@ -801,7 +818,8 @@
 --
 -- -   #VUID-vkCmdSetDepthClampEnableEXT-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdSetDepthClampEnableEXT-videocoding# This command /must/
 --     only be called outside of a video coding scope
@@ -820,10 +838,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
 -- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdSetDepthClampEnableEXT is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state3 VK_EXT_extended_dynamic_state3>,
@@ -863,12 +886,12 @@
 --
 -- This command sets the polygon mode for subsequent drawing commands when
 -- drawing using
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-objects shader objects>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader objects>,
 -- or when the graphics pipeline is created with
 -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_POLYGON_MODE_EXT' set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
 -- Otherwise, this state is specified by the
--- 'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo'::@polygonMode@
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineRasterizationStateCreateInfo'::@polygonMode@
 -- value used to create the currently active pipeline.
 --
 -- == Valid Usage
@@ -885,7 +908,7 @@
 --         feature is enabled
 --
 -- -   #VUID-vkCmdSetPolygonModeEXT-fillModeNonSolid-07424# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-fillModeNonSolid fillModeNonSolid>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-fillModeNonSolid fillModeNonSolid>
 --     feature is not enabled, @polygonMode@ /must/ be
 --     'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_FILL' or
 --     'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_FILL_RECTANGLE_NV'
@@ -911,7 +934,8 @@
 --
 -- -   #VUID-vkCmdSetPolygonModeEXT-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdSetPolygonModeEXT-videocoding# This command /must/ only
 --     be called outside of a video coding scope
@@ -930,10 +954,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
 -- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdSetPolygonModeEXT is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state3 VK_EXT_extended_dynamic_state3>,
@@ -973,13 +1002,13 @@
 --
 -- This command sets the @rasterizationSamples@ for subsequent drawing
 -- commands when drawing using
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-objects shader objects>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader objects>,
 -- or when the graphics pipeline is created with
 -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
 -- set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
 -- Otherwise, this state is specified by the
--- 'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
 -- value used to create the currently active pipeline.
 --
 -- == Valid Usage
@@ -1011,7 +1040,8 @@
 --
 -- -   #VUID-vkCmdSetRasterizationSamplesEXT-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdSetRasterizationSamplesEXT-videocoding# This command
 --     /must/ only be called outside of a video coding scope
@@ -1030,10 +1060,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
 -- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdSetRasterizationSamplesEXT is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state3 VK_EXT_extended_dynamic_state3>,
@@ -1073,12 +1108,12 @@
 --
 -- This command sets the sample mask for subsequent drawing commands when
 -- drawing using
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-objects shader objects>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader objects>,
 -- or when the graphics pipeline is created with
 -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT' set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
 -- Otherwise, this state is specified by the
--- 'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@pSampleMask@
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineMultisampleStateCreateInfo'::@pSampleMask@
 -- value used to create the currently active pipeline.
 --
 -- == Valid Usage
@@ -1094,6 +1129,11 @@
 --         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject>
 --         feature is enabled
 --
+-- -   #VUID-vkCmdSetSampleMaskEXT-pSampleMask-10999# @pSampleMask@ /must/
+--     not be @NULL@ if the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance10 maintenance10>
+--     feature is not enabled
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-vkCmdSetSampleMaskEXT-commandBuffer-parameter# @commandBuffer@
@@ -1103,9 +1143,9 @@
 --     valid 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits'
 --     value
 --
--- -   #VUID-vkCmdSetSampleMaskEXT-pSampleMask-parameter# @pSampleMask@
---     /must/ be a valid pointer to an array of
---     \(\lceil{\mathit{samples} \over 32}\rceil\)
+-- -   #VUID-vkCmdSetSampleMaskEXT-pSampleMask-parameter# If @pSampleMask@
+--     is not @NULL@, @pSampleMask@ /must/ be a valid pointer to an array
+--     of \(\lceil{\mathit{samples} \over 32}\rceil\)
 --     'Vulkan.Core10.FundamentalTypes.SampleMask' values
 --
 -- -   #VUID-vkCmdSetSampleMaskEXT-commandBuffer-recording# @commandBuffer@
@@ -1114,7 +1154,8 @@
 --
 -- -   #VUID-vkCmdSetSampleMaskEXT-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdSetSampleMaskEXT-videocoding# This command /must/ only be
 --     called outside of a video coding scope
@@ -1133,10 +1174,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
 -- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdSetSampleMaskEXT is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state3 VK_EXT_extended_dynamic_state3>,
@@ -1153,7 +1199,10 @@
                        ("samples" ::: SampleCountFlagBits)
                     -> -- | @pSampleMask@ is a pointer to an array of
                        -- 'Vulkan.Core10.FundamentalTypes.SampleMask' values, where the array size
-                       -- is based on the @samples@ parameter.
+                       -- is based on the @samples@ parameter. If the
+                       -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance10 maintenance10>
+                       -- feature is enabled, and this parameter is set to @NULL@, it is treated
+                       -- as if the mask has all bits set to @1@.
                        ("sampleMask" ::: Vector SampleMask)
                     -> io ()
 cmdSetSampleMaskEXT commandBuffer samples sampleMask = liftIO . evalContT $ do
@@ -1161,12 +1210,16 @@
   lift $ unless (vkCmdSetSampleMaskEXTPtr /= nullFunPtr) $
     throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetSampleMaskEXT is null" Nothing Nothing
   let vkCmdSetSampleMaskEXT' = mkVkCmdSetSampleMaskEXT vkCmdSetSampleMaskEXTPtr
-  pPSampleMask <- ContT $ allocaBytes @SampleMask ((Data.Vector.length (sampleMask)) * 4)
-  lift $ Data.Vector.imapM_ (\i e -> poke (pPSampleMask `plusPtr` (4 * (i)) :: Ptr SampleMask) (e)) (sampleMask)
+  pSampleMask <- if Data.Vector.null (sampleMask)
+    then pure nullPtr
+    else do
+      pPSampleMask <- ContT $ allocaBytes @SampleMask (((Data.Vector.length (sampleMask))) * 4)
+      lift $ Data.Vector.imapM_ (\i e -> poke (pPSampleMask `plusPtr` (4 * (i)) :: Ptr SampleMask) (e)) ((sampleMask))
+      pure $ pPSampleMask
   lift $ traceAroundEvent "vkCmdSetSampleMaskEXT" (vkCmdSetSampleMaskEXT'
                                                      (commandBufferHandle (commandBuffer))
                                                      (samples)
-                                                     (pPSampleMask))
+                                                     pSampleMask)
   pure $ ()
 
 
@@ -1184,13 +1237,13 @@
 --
 -- This command sets the @alphaToCoverageEnable@ state for subsequent
 -- drawing commands when drawing using
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-objects shader objects>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader objects>,
 -- or when the graphics pipeline is created with
 -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT'
 -- set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
 -- Otherwise, this state is specified by the
--- 'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@alphaToCoverageEnable@
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineMultisampleStateCreateInfo'::@alphaToCoverageEnable@
 -- value used to create the currently active pipeline.
 --
 -- == Valid Usage
@@ -1218,7 +1271,8 @@
 --
 -- -   #VUID-vkCmdSetAlphaToCoverageEnableEXT-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdSetAlphaToCoverageEnableEXT-videocoding# This command
 --     /must/ only be called outside of a video coding scope
@@ -1237,10 +1291,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
 -- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdSetAlphaToCoverageEnableEXT is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state3 VK_EXT_extended_dynamic_state3>,
@@ -1280,13 +1339,13 @@
 --
 -- This command sets the @alphaToOneEnable@ state for subsequent drawing
 -- commands when drawing using
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-objects shader objects>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader objects>,
 -- or when the graphics pipeline is created with
 -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT'
 -- set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
 -- Otherwise, this state is specified by the
--- 'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@alphaToOneEnable@
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineMultisampleStateCreateInfo'::@alphaToOneEnable@
 -- value used to create the currently active pipeline.
 --
 -- == Valid Usage
@@ -1303,7 +1362,7 @@
 --         feature is enabled
 --
 -- -   #VUID-vkCmdSetAlphaToOneEnableEXT-alphaToOne-07607# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-alphaToOne alphaToOne>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-alphaToOne alphaToOne>
 --     feature is not enabled, @alphaToOneEnable@ /must/ be
 --     'Vulkan.Core10.FundamentalTypes.FALSE'
 --
@@ -1319,7 +1378,8 @@
 --
 -- -   #VUID-vkCmdSetAlphaToOneEnableEXT-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdSetAlphaToOneEnableEXT-videocoding# This command /must/
 --     only be called outside of a video coding scope
@@ -1338,10 +1398,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
 -- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdSetAlphaToOneEnableEXT is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state3 VK_EXT_extended_dynamic_state3>,
@@ -1381,13 +1446,13 @@
 --
 -- This command sets whether logical operations are enabled for subsequent
 -- drawing commands when drawing using
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-objects shader objects>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader objects>,
 -- or when the graphics pipeline is created with
 -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT' set
 -- in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
 -- Otherwise, this state is specified by the
--- 'Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo'::@logicOpEnable@
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineColorBlendStateCreateInfo'::@logicOpEnable@
 -- value used to create the currently active pipeline.
 --
 -- == Valid Usage
@@ -1404,7 +1469,7 @@
 --         feature is enabled
 --
 -- -   #VUID-vkCmdSetLogicOpEnableEXT-logicOp-07366# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-logicOp logicOp>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-logicOp logicOp>
 --     feature is not enabled, @logicOpEnable@ /must/ be
 --     'Vulkan.Core10.FundamentalTypes.FALSE'
 --
@@ -1420,7 +1485,8 @@
 --
 -- -   #VUID-vkCmdSetLogicOpEnableEXT-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdSetLogicOpEnableEXT-videocoding# This command /must/ only
 --     be called outside of a video coding scope
@@ -1439,10 +1505,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
 -- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdSetLogicOpEnableEXT is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state3 VK_EXT_extended_dynamic_state3>,
@@ -1482,13 +1553,13 @@
 --
 -- This command sets the color blending enable of the specified color
 -- attachments for subsequent drawing commands when drawing using
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-objects shader objects>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader objects>,
 -- or when the graphics pipeline is created with
 -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
 -- set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
 -- Otherwise, this state is specified by the
--- 'Vulkan.Core10.Pipeline.PipelineColorBlendAttachmentState'::@blendEnable@
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineColorBlendAttachmentState'::@blendEnable@
 -- values used to create the currently active pipeline.
 --
 -- == Valid Usage
@@ -1520,7 +1591,8 @@
 --
 -- -   #VUID-vkCmdSetColorBlendEnableEXT-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdSetColorBlendEnableEXT-videocoding# This command /must/
 --     only be called outside of a video coding scope
@@ -1542,10 +1614,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
 -- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdSetColorBlendEnableEXT is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state3 VK_EXT_extended_dynamic_state3>,
@@ -1595,19 +1672,19 @@
 --
 -- This command sets the color blending factors and operations of the
 -- specified attachments for subsequent drawing commands when drawing using
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-objects shader objects>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader objects>,
 -- or when the graphics pipeline is created with
 -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
 -- set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
 -- Otherwise, this state is specified by the
--- 'Vulkan.Core10.Pipeline.PipelineColorBlendAttachmentState'::@srcColorBlendFactor@,
--- 'Vulkan.Core10.Pipeline.PipelineColorBlendAttachmentState'::@dstColorBlendFactor@,
--- 'Vulkan.Core10.Pipeline.PipelineColorBlendAttachmentState'::@colorBlendOp@,
--- 'Vulkan.Core10.Pipeline.PipelineColorBlendAttachmentState'::@srcAlphaBlendFactor@,
--- 'Vulkan.Core10.Pipeline.PipelineColorBlendAttachmentState'::@dstAlphaBlendFactor@,
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineColorBlendAttachmentState'::@srcColorBlendFactor@,
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineColorBlendAttachmentState'::@dstColorBlendFactor@,
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineColorBlendAttachmentState'::@colorBlendOp@,
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineColorBlendAttachmentState'::@srcAlphaBlendFactor@,
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineColorBlendAttachmentState'::@dstAlphaBlendFactor@,
 -- and
--- 'Vulkan.Core10.Pipeline.PipelineColorBlendAttachmentState'::@alphaBlendOp@
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineColorBlendAttachmentState'::@alphaBlendOp@
 -- values used to create the currently active pipeline.
 --
 -- == Valid Usage
@@ -1639,7 +1716,8 @@
 --
 -- -   #VUID-vkCmdSetColorBlendEquationEXT-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdSetColorBlendEquationEXT-videocoding# This command /must/
 --     only be called outside of a video coding scope
@@ -1661,10 +1739,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
 -- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdSetColorBlendEquationEXT is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state3 VK_EXT_extended_dynamic_state3>,
@@ -1714,13 +1797,13 @@
 --
 -- This command sets the color write masks of the specified attachments for
 -- subsequent drawing commands when drawing using
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-objects shader objects>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader objects>,
 -- or when the graphics pipeline is created with
 -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT'
 -- set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
 -- Otherwise, this state is specified by the
--- 'Vulkan.Core10.Pipeline.PipelineColorBlendAttachmentState'::@colorWriteMask@
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineColorBlendAttachmentState'::@colorWriteMask@
 -- values used to create the currently active pipeline.
 --
 -- Formats with bits that are shared between components specified by
@@ -1761,7 +1844,8 @@
 --
 -- -   #VUID-vkCmdSetColorWriteMaskEXT-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdSetColorWriteMaskEXT-videocoding# This command /must/
 --     only be called outside of a video coding scope
@@ -1783,10 +1867,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
 -- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdSetColorWriteMaskEXT is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state3 VK_EXT_extended_dynamic_state3>,
@@ -1837,11 +1926,11 @@
 --
 -- This command sets the @rasterizationStream@ state for subsequent drawing
 -- commands when drawing using
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-objects shader objects>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader objects>,
 -- or when the graphics pipeline is created with
 -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_STREAM_EXT'
 -- set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
 -- Otherwise, this state is specified by the
 -- 'Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT'::@rasterizationStream@
 -- value used to create the currently active pipeline.
@@ -1860,7 +1949,7 @@
 --         feature is enabled
 --
 -- -   #VUID-vkCmdSetRasterizationStreamEXT-transformFeedback-07411# The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-transformFeedback transformFeedback>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-transformFeedback transformFeedback>
 --     feature /must/ be enabled
 --
 -- -   #VUID-vkCmdSetRasterizationStreamEXT-rasterizationStream-07412#
@@ -1884,7 +1973,8 @@
 --
 -- -   #VUID-vkCmdSetRasterizationStreamEXT-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdSetRasterizationStreamEXT-videocoding# This command
 --     /must/ only be called outside of a video coding scope
@@ -1903,10 +1993,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
 -- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdSetRasterizationStreamEXT is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state3 VK_EXT_extended_dynamic_state3>,
@@ -1946,11 +2041,11 @@
 --
 -- This command sets the @conservativeRasterizationMode@ state for
 -- subsequent drawing commands when drawing using
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-objects shader objects>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader objects>,
 -- or when the graphics pipeline is created with
 -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT'
 -- set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
 -- Otherwise, this state is specified by the
 -- 'Vulkan.Extensions.VK_EXT_conservative_rasterization.PipelineRasterizationConservativeStateCreateInfoEXT'::@conservativeRasterizationMode@
 -- value used to create the currently active pipeline.
@@ -1985,7 +2080,8 @@
 --
 -- -   #VUID-vkCmdSetConservativeRasterizationModeEXT-commandBuffer-cmdpool#
 --     The 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdSetConservativeRasterizationModeEXT-videocoding# This
 --     command /must/ only be called outside of a video coding scope
@@ -2004,10 +2100,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
 -- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdSetConservativeRasterizationModeEXT is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_conservative_rasterization VK_EXT_conservative_rasterization>,
@@ -2051,11 +2152,11 @@
 --
 -- This command sets the @extraPrimitiveOverestimationSize@ for subsequent
 -- drawing commands when drawing using
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-objects shader objects>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader objects>,
 -- or when the graphics pipeline is created with
 -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT'
 -- set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
 -- Otherwise, this state is specified by the
 -- 'Vulkan.Extensions.VK_EXT_conservative_rasterization.PipelineRasterizationConservativeStateCreateInfoEXT'::@extraPrimitiveOverestimationSize@
 -- value used to create the currently active pipeline.
@@ -2091,7 +2192,8 @@
 --
 -- -   #VUID-vkCmdSetExtraPrimitiveOverestimationSizeEXT-commandBuffer-cmdpool#
 --     The 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdSetExtraPrimitiveOverestimationSizeEXT-videocoding# This
 --     command /must/ only be called outside of a video coding scope
@@ -2110,10 +2212,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
 -- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdSetExtraPrimitiveOverestimationSizeEXT is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_conservative_rasterization VK_EXT_conservative_rasterization>,
@@ -2155,18 +2262,18 @@
 --
 -- This command sets whether depth clipping is enabled or disabled for
 -- subsequent drawing commands when drawing using
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-objects shader objects>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader objects>,
 -- or when the graphics pipeline is created with
 -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT'
 -- set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
 -- Otherwise, this state is specified by the
 -- 'Vulkan.Extensions.VK_EXT_depth_clip_enable.PipelineRasterizationDepthClipStateCreateInfoEXT'::@depthClipEnable@
--- value used to create the currently active pipeline, or by the inverse of
--- 'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo'::@depthClampEnable@
--- if
+-- value used to create the currently active pipeline. If
 -- 'Vulkan.Extensions.VK_EXT_depth_clip_enable.PipelineRasterizationDepthClipStateCreateInfoEXT'
--- is not specified.
+-- was not specified, depth clipping is set to the inverse of the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#dynamic-state-current-value current value>
+-- of @depthClampEnable@.
 --
 -- == Valid Usage
 --
@@ -2182,7 +2289,7 @@
 --         feature is enabled
 --
 -- -   #VUID-vkCmdSetDepthClipEnableEXT-depthClipEnable-07451# The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-depthClipEnable depthClipEnable>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-depthClipEnable depthClipEnable>
 --     feature /must/ be enabled
 --
 -- == Valid Usage (Implicit)
@@ -2197,7 +2304,8 @@
 --
 -- -   #VUID-vkCmdSetDepthClipEnableEXT-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdSetDepthClipEnableEXT-videocoding# This command /must/
 --     only be called outside of a video coding scope
@@ -2216,10 +2324,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
 -- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdSetDepthClipEnableEXT is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_depth_clip_enable VK_EXT_depth_clip_enable>,
@@ -2260,11 +2373,11 @@
 --
 -- This command sets the @sampleLocationsEnable@ state for subsequent
 -- drawing commands when drawing using
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-objects shader objects>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader objects>,
 -- or when the graphics pipeline is created with
 -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
 -- set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
 -- Otherwise, this state is specified by the
 -- 'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@
 -- value used to create the currently active pipeline.
@@ -2294,7 +2407,8 @@
 --
 -- -   #VUID-vkCmdSetSampleLocationsEnableEXT-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdSetSampleLocationsEnableEXT-videocoding# This command
 --     /must/ only be called outside of a video coding scope
@@ -2313,10 +2427,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
 -- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdSetSampleLocationsEnableEXT is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state3 VK_EXT_extended_dynamic_state3>,
@@ -2357,11 +2476,11 @@
 --
 -- This command sets the advanced blend operation parameters of the
 -- specified attachments for subsequent drawing commands when drawing using
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-objects shader objects>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader objects>,
 -- or when the graphics pipeline is created with
 -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
 -- set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
 -- Otherwise, this state is specified by the
 -- 'Vulkan.Extensions.VK_EXT_blend_operation_advanced.PipelineColorBlendAdvancedStateCreateInfoEXT'::@srcPremultiplied@,
 -- 'Vulkan.Extensions.VK_EXT_blend_operation_advanced.PipelineColorBlendAdvancedStateCreateInfoEXT'::@dstPremultiplied@,
@@ -2398,7 +2517,8 @@
 --
 -- -   #VUID-vkCmdSetColorBlendAdvancedEXT-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdSetColorBlendAdvancedEXT-videocoding# This command /must/
 --     only be called outside of a video coding scope
@@ -2420,10 +2540,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
 -- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdSetColorBlendAdvancedEXT is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_blend_operation_advanced VK_EXT_blend_operation_advanced>,
@@ -2474,11 +2599,11 @@
 --
 -- This command sets the @provokingVertexMode@ state for subsequent drawing
 -- commands when drawing using
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-objects shader objects>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader objects>,
 -- or when the graphics pipeline is created with
 -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT'
 -- set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
 -- Otherwise, this state is specified by the
 -- 'Vulkan.Extensions.VK_EXT_provoking_vertex.PipelineRasterizationProvokingVertexStateCreateInfoEXT'::@provokingVertexMode@
 -- value used to create the currently active pipeline.
@@ -2500,7 +2625,7 @@
 --     @provokingVertexMode@ is
 --     'Vulkan.Extensions.VK_EXT_provoking_vertex.PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT',
 --     then the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-provokingVertexLast provokingVertexLast>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-provokingVertexLast provokingVertexLast>
 --     feature /must/ be enabled
 --
 -- == Valid Usage (Implicit)
@@ -2520,7 +2645,8 @@
 --
 -- -   #VUID-vkCmdSetProvokingVertexModeEXT-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdSetProvokingVertexModeEXT-videocoding# This command
 --     /must/ only be called outside of a video coding scope
@@ -2539,10 +2665,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
 -- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdSetProvokingVertexModeEXT is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state3 VK_EXT_extended_dynamic_state3>,
@@ -2583,13 +2714,13 @@
 --
 -- This command sets the @lineRasterizationMode@ state for subsequent
 -- drawing commands when drawing using
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-objects shader objects>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader objects>,
 -- or when the graphics pipeline is created with
 -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
 -- set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
 -- Otherwise, this state is specified by the
--- 'Vulkan.Extensions.VK_KHR_line_rasterization.PipelineRasterizationLineStateCreateInfoKHR'::@lineRasterizationMode@
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_line_rasterization.PipelineRasterizationLineStateCreateInfo'::@lineRasterizationMode@
 -- value used to create the currently active pipeline.
 --
 -- == Valid Usage
@@ -2607,23 +2738,23 @@
 --
 -- -   #VUID-vkCmdSetLineRasterizationModeEXT-lineRasterizationMode-07418#
 --     If @lineRasterizationMode@ is
---     'Vulkan.Extensions.VK_KHR_line_rasterization.LINE_RASTERIZATION_MODE_RECTANGULAR_KHR',
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_RECTANGULAR',
 --     then the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-rectangularLines rectangularLines>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-rectangularLines rectangularLines>
 --     feature /must/ be enabled
 --
 -- -   #VUID-vkCmdSetLineRasterizationModeEXT-lineRasterizationMode-07419#
 --     If @lineRasterizationMode@ is
---     'Vulkan.Extensions.VK_KHR_line_rasterization.LINE_RASTERIZATION_MODE_BRESENHAM_KHR',
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_BRESENHAM',
 --     then the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-bresenhamLines bresenhamLines>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-bresenhamLines bresenhamLines>
 --     feature /must/ be enabled
 --
 -- -   #VUID-vkCmdSetLineRasterizationModeEXT-lineRasterizationMode-07420#
 --     If @lineRasterizationMode@ is
---     'Vulkan.Extensions.VK_KHR_line_rasterization.LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR',
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH',
 --     then the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-smoothLines smoothLines>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-smoothLines smoothLines>
 --     feature /must/ be enabled
 --
 -- == Valid Usage (Implicit)
@@ -2643,7 +2774,8 @@
 --
 -- -   #VUID-vkCmdSetLineRasterizationModeEXT-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdSetLineRasterizationModeEXT-videocoding# This command
 --     /must/ only be called outside of a video coding scope
@@ -2662,17 +2794,22 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
 -- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdSetLineRasterizationModeEXT is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state3 VK_EXT_extended_dynamic_state3>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_line_rasterization VK_EXT_line_rasterization>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_shader_object VK_EXT_shader_object>,
 -- 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Extensions.VK_EXT_line_rasterization.LineRasterizationModeEXT'
+-- 'Vulkan.Core14.Enums.LineRasterizationMode.LineRasterizationMode'
 cmdSetLineRasterizationModeEXT :: forall io
                                 . (MonadIO io)
                                => -- | @commandBuffer@ is the command buffer into which the command will be
@@ -2706,13 +2843,13 @@
 --
 -- This command sets the @stippledLineEnable@ state for subsequent drawing
 -- commands when drawing using
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-objects shader objects>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader objects>,
 -- or when the graphics pipeline is created with
 -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
 -- set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
 -- Otherwise, this state is specified by the
--- 'Vulkan.Extensions.VK_KHR_line_rasterization.PipelineRasterizationLineStateCreateInfoKHR'::@stippledLineEnable@
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_line_rasterization.PipelineRasterizationLineStateCreateInfo'::@stippledLineEnable@
 -- value used to create the currently active pipeline.
 --
 -- == Valid Usage
@@ -2740,7 +2877,8 @@
 --
 -- -   #VUID-vkCmdSetLineStippleEnableEXT-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdSetLineStippleEnableEXT-videocoding# This command /must/
 --     only be called outside of a video coding scope
@@ -2759,10 +2897,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
 -- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdSetLineStippleEnableEXT is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state3 VK_EXT_extended_dynamic_state3>,
@@ -2803,11 +2946,11 @@
 --
 -- This command sets the @negativeOneToOne@ state for subsequent drawing
 -- commands when drawing using
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-objects shader objects>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader objects>,
 -- or when the graphics pipeline is created with
 -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT'
 -- set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
 -- Otherwise, this state is specified by the
 -- 'Vulkan.Extensions.VK_EXT_depth_clip_control.PipelineViewportDepthClipControlCreateInfoEXT'::@negativeOneToOne@
 -- value used to create the currently active pipeline.
@@ -2827,7 +2970,7 @@
 --
 -- -   #VUID-vkCmdSetDepthClipNegativeOneToOneEXT-depthClipControl-07453#
 --     The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-depthClipControl depthClipControl>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-depthClipControl depthClipControl>
 --     feature /must/ be enabled
 --
 -- == Valid Usage (Implicit)
@@ -2842,7 +2985,8 @@
 --
 -- -   #VUID-vkCmdSetDepthClipNegativeOneToOneEXT-commandBuffer-cmdpool#
 --     The 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdSetDepthClipNegativeOneToOneEXT-videocoding# This command
 --     /must/ only be called outside of a video coding scope
@@ -2861,10 +3005,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
 -- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdSetDepthClipNegativeOneToOneEXT is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_depth_clip_control VK_EXT_depth_clip_control>,
@@ -2905,11 +3054,11 @@
 --
 -- This command sets the @viewportWScalingEnable@ state for subsequent
 -- drawing commands when drawing using
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-objects shader objects>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader objects>,
 -- or when the graphics pipeline is created with
 -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV'
 -- set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
 -- Otherwise, this state is specified by the
 -- 'Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV'::@viewportWScalingEnable@
 -- value used to create the currently active pipeline.
@@ -2939,7 +3088,8 @@
 --
 -- -   #VUID-vkCmdSetViewportWScalingEnableNV-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdSetViewportWScalingEnableNV-videocoding# This command
 --     /must/ only be called outside of a video coding scope
@@ -2958,10 +3108,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
 -- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdSetViewportWScalingEnableNV is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state3 VK_EXT_extended_dynamic_state3>,
@@ -3003,11 +3158,11 @@
 --
 -- This command sets the viewport swizzle state for subsequent drawing
 -- commands when drawing using
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-objects shader objects>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader objects>,
 -- or when the graphics pipeline is created with
 -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV' set
 -- in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
 -- Otherwise, this state is specified by the
 -- 'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV'::@viewportCount@,
 -- and
@@ -3045,7 +3200,8 @@
 --
 -- -   #VUID-vkCmdSetViewportSwizzleNV-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdSetViewportSwizzleNV-videocoding# This command /must/
 --     only be called outside of a video coding scope
@@ -3067,10 +3223,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
 -- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdSetViewportSwizzleNV is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state3 VK_EXT_extended_dynamic_state3>,
@@ -3122,11 +3283,11 @@
 --
 -- This command sets the @coverageToColorEnable@ state for subsequent
 -- drawing commands when drawing using
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-objects shader objects>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader objects>,
 -- or when the graphics pipeline is created with
 -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
 -- set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
 -- Otherwise, this state is specified by the
 -- 'Vulkan.Extensions.VK_NV_fragment_coverage_to_color.PipelineCoverageToColorStateCreateInfoNV'::@coverageToColorEnable@
 -- value used to create the currently active pipeline.
@@ -3156,7 +3317,8 @@
 --
 -- -   #VUID-vkCmdSetCoverageToColorEnableNV-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdSetCoverageToColorEnableNV-videocoding# This command
 --     /must/ only be called outside of a video coding scope
@@ -3175,10 +3337,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
 -- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdSetCoverageToColorEnableNV is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state3 VK_EXT_extended_dynamic_state3>,
@@ -3219,11 +3386,11 @@
 --
 -- This command sets the @coverageToColorLocation@ state for subsequent
 -- drawing commands when drawing using
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-objects shader objects>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader objects>,
 -- or when the graphics pipeline is created with
 -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV'
 -- set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
 -- Otherwise, this state is specified by the
 -- 'Vulkan.Extensions.VK_NV_fragment_coverage_to_color.PipelineCoverageToColorStateCreateInfoNV'::@coverageToColorLocation@
 -- value used to create the currently active pipeline.
@@ -3253,7 +3420,8 @@
 --
 -- -   #VUID-vkCmdSetCoverageToColorLocationNV-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdSetCoverageToColorLocationNV-videocoding# This command
 --     /must/ only be called outside of a video coding scope
@@ -3272,10 +3440,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
 -- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdSetCoverageToColorLocationNV is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state3 VK_EXT_extended_dynamic_state3>,
@@ -3316,11 +3489,11 @@
 --
 -- This command sets the @coverageModulationMode@ state for subsequent
 -- drawing commands when drawing using
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-objects shader objects>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader objects>,
 -- or the graphics pipeline is created with
 -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV'
 -- set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
 -- Otherwise, this state is specified by the
 -- 'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.PipelineCoverageModulationStateCreateInfoNV'::@coverageModulationMode@
 -- value used to create the currently active pipeline.
@@ -3355,7 +3528,8 @@
 --
 -- -   #VUID-vkCmdSetCoverageModulationModeNV-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdSetCoverageModulationModeNV-videocoding# This command
 --     /must/ only be called outside of a video coding scope
@@ -3374,10 +3548,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
 -- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdSetCoverageModulationModeNV is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state3 VK_EXT_extended_dynamic_state3>,
@@ -3419,11 +3598,11 @@
 --
 -- This command sets the @coverageModulationTableEnable@ state for
 -- subsequent drawing commands when drawing using
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-objects shader objects>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader objects>,
 -- or when the graphics pipeline is created with
 -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV'
 -- set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
 -- Otherwise, this state is specified by the
 -- 'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.PipelineCoverageModulationStateCreateInfoNV'::@coverageModulationTableEnable@
 -- value used to create the currently active pipeline.
@@ -3453,7 +3632,8 @@
 --
 -- -   #VUID-vkCmdSetCoverageModulationTableEnableNV-commandBuffer-cmdpool#
 --     The 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdSetCoverageModulationTableEnableNV-videocoding# This
 --     command /must/ only be called outside of a video coding scope
@@ -3472,10 +3652,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
 -- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdSetCoverageModulationTableEnableNV is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state3 VK_EXT_extended_dynamic_state3>,
@@ -3518,11 +3703,11 @@
 --
 -- This command sets the table of modulation factors for subsequent drawing
 -- commands when drawing using
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-objects shader objects>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader objects>,
 -- or when the graphics pipeline is created with
 -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV'
 -- set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
 -- Otherwise, this state is specified by the
 -- 'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.PipelineCoverageModulationStateCreateInfoNV'::@coverageModulationTableCount@,
 -- and
@@ -3558,7 +3743,8 @@
 --
 -- -   #VUID-vkCmdSetCoverageModulationTableNV-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdSetCoverageModulationTableNV-videocoding# This command
 --     /must/ only be called outside of a video coding scope
@@ -3580,10 +3766,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
 -- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdSetCoverageModulationTableNV is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state3 VK_EXT_extended_dynamic_state3>,
@@ -3628,11 +3819,11 @@
 --
 -- This command sets the @shadingRateImageEnable@ state for subsequent
 -- drawing commands when drawing using
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-objects shader objects>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader objects>,
 -- or when the graphics pipeline is created with
 -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV'
 -- set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
 -- Otherwise, this state is specified by the
 -- 'Vulkan.Extensions.VK_NV_shading_rate_image.PipelineViewportShadingRateImageStateCreateInfoNV'::@shadingRateImageEnable@
 -- value used to create the currently active pipeline.
@@ -3662,7 +3853,8 @@
 --
 -- -   #VUID-vkCmdSetShadingRateImageEnableNV-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdSetShadingRateImageEnableNV-videocoding# This command
 --     /must/ only be called outside of a video coding scope
@@ -3681,10 +3873,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
 -- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdSetShadingRateImageEnableNV is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state3 VK_EXT_extended_dynamic_state3>,
@@ -3726,11 +3923,11 @@
 --
 -- This command sets the @coverageReductionMode@ state for subsequent
 -- drawing commands when drawing using
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-objects shader objects>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader objects>,
 -- or when the graphics pipeline is created with
 -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV'
 -- set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
 -- Otherwise, this state is specified by the
 -- 'Vulkan.Extensions.VK_NV_coverage_reduction_mode.PipelineCoverageReductionStateCreateInfoNV'::@coverageReductionMode@
 -- value used to create the currently active pipeline.
@@ -3765,7 +3962,8 @@
 --
 -- -   #VUID-vkCmdSetCoverageReductionModeNV-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdSetCoverageReductionModeNV-videocoding# This command
 --     /must/ only be called outside of a video coding scope
@@ -3784,10 +3982,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
 -- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdSetCoverageReductionModeNV is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state3 VK_EXT_extended_dynamic_state3>,
@@ -3828,11 +4031,11 @@
 --
 -- This command sets the @representativeFragmentTestEnable@ state for
 -- subsequent drawing commands when drawing using
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-objects shader objects>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader objects>,
 -- or when the graphics pipeline is created with
 -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV'
 -- set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
 -- Otherwise, this state is specified by the
 -- 'Vulkan.Extensions.VK_NV_representative_fragment_test.PipelineRepresentativeFragmentTestStateCreateInfoNV'::@representativeFragmentTestEnable@
 -- value used to create the currently active pipeline.
@@ -3862,7 +4065,8 @@
 --
 -- -   #VUID-vkCmdSetRepresentativeFragmentTestEnableNV-commandBuffer-cmdpool#
 --     The 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdSetRepresentativeFragmentTestEnableNV-videocoding# This
 --     command /must/ only be called outside of a video coding scope
@@ -3881,10 +4085,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
 -- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdSetRepresentativeFragmentTestEnableNV is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state3 VK_EXT_extended_dynamic_state3>,
@@ -3928,12 +4137,22 @@
 -- 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. 'PhysicalDeviceExtendedDynamicState3FeaturesEXT' /can/ also
--- be used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo'
--- to selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceExtendedDynamicState3FeaturesEXT', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state3 VK_EXT_extended_dynamic_state3>,
@@ -4328,8 +4547,12 @@
 -- it is filled in with each corresponding implementation-dependent
 -- property.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state3 VK_EXT_extended_dynamic_state3>,
@@ -4341,7 +4564,7 @@
     -- allows
     -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
     -- to use a different
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#drawing-primitive-topology-class primitive topology class>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#drawing-primitive-topology-class primitive topology class>
     -- to the one specified in the active graphics pipeline.
     dynamicPrimitiveTopologyUnrestricted :: Bool }
   deriving (Typeable, Eq)
@@ -4388,7 +4611,7 @@
 -- == Valid Usage
 --
 -- -   #VUID-VkColorBlendEquationEXT-dualSrcBlend-07357# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-dualSrcBlend dualSrcBlend>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-dualSrcBlend dualSrcBlend>
 --     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',
@@ -4396,7 +4619,7 @@
 --     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA'
 --
 -- -   #VUID-VkColorBlendEquationEXT-dualSrcBlend-07358# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-dualSrcBlend dualSrcBlend>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-dualSrcBlend dualSrcBlend>
 --     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',
@@ -4404,7 +4627,7 @@
 --     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA'
 --
 -- -   #VUID-VkColorBlendEquationEXT-dualSrcBlend-07359# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-dualSrcBlend dualSrcBlend>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-dualSrcBlend dualSrcBlend>
 --     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',
@@ -4412,7 +4635,7 @@
 --     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA'
 --
 -- -   #VUID-VkColorBlendEquationEXT-dualSrcBlend-07360# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-dualSrcBlend dualSrcBlend>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-dualSrcBlend dualSrcBlend>
 --     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',
@@ -4599,17 +4822,17 @@
 -- == Valid Usage
 --
 -- -   #VUID-VkColorBlendAdvancedEXT-srcPremultiplied-07505# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-advancedBlendNonPremultipliedSrcColor non-premultiplied source color>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-advancedBlendNonPremultipliedSrcColor non-premultiplied source color>
 --     property is not supported, @srcPremultiplied@ /must/ be
 --     'Vulkan.Core10.FundamentalTypes.TRUE'
 --
 -- -   #VUID-VkColorBlendAdvancedEXT-dstPremultiplied-07506# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-advancedBlendNonPremultipliedDstColor non-premultiplied destination color>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-advancedBlendNonPremultipliedDstColor non-premultiplied destination color>
 --     property is not supported, @dstPremultiplied@ /must/ be
 --     'Vulkan.Core10.FundamentalTypes.TRUE'
 --
 -- -   #VUID-VkColorBlendAdvancedEXT-blendOverlap-07507# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-advancedBlendCorrelatedOverlap correlated overlap>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-advancedBlendCorrelatedOverlap correlated overlap>
 --     property is not supported, @blendOverlap@ /must/ be
 --     'Vulkan.Extensions.VK_EXT_blend_operation_advanced.BLEND_OVERLAP_UNCORRELATED_EXT'
 --
diff --git a/src/Vulkan/Extensions/VK_EXT_extended_dynamic_state3.hs-boot b/src/Vulkan/Extensions/VK_EXT_extended_dynamic_state3.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_extended_dynamic_state3.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_extended_dynamic_state3.hs-boot
@@ -449,13 +449,11 @@
 -- 1) What about the VkPipelineMultisampleStateCreateInfo state
 -- @sampleShadingEnable@ and @minSampleShading@?
 --
--- [__UNRESOLVED__]
---
---     -   @sampleShadingEnable@ and @minSampleShading@ are required when
---         compiling the fragment shader, and it is not meaningful to set
---         them dynamically since they always need to match the fragment
---         shader state, so this hardware state may as well just come from
---         the pipeline with the fragment shader.
+-- @sampleShadingEnable@ and @minSampleShading@ are required when compiling
+-- the fragment shader, and it is not meaningful to set them dynamically
+-- since they always need to match the fragment shader state, so this
+-- hardware state may as well just come from the pipeline with the fragment
+-- shader.
 --
 -- == Version History
 --
@@ -474,7 +472,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state3 Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_extended_dynamic_state3 Vulkan Specification>.
 --
 -- This 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_acquire_unmodified.hs b/src/Vulkan/Extensions/VK_EXT_external_memory_acquire_unmodified.hs
--- a/src/Vulkan/Extensions/VK_EXT_external_memory_acquire_unmodified.hs
+++ b/src/Vulkan/Extensions/VK_EXT_external_memory_acquire_unmodified.hs
@@ -27,8 +27,8 @@
 --
 -- [__Contact__]
 --
---     -   Lina Versace
---         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_external_memory_acquire_unmodified] @linyaa-kiwi%0A*Here describe the issue or question you have about the VK_EXT_external_memory_acquire_unmodified extension* >
+--     -   James Jones
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_external_memory_acquire_unmodified] @cubanismo%0A*Here describe the issue or question you have about the VK_EXT_external_memory_acquire_unmodified extension* >
 --
 -- [__Extension Proposal__]
 --     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_EXT_external_memory_acquire_unmodified.adoc VK_EXT_external_memory_acquire_unmodified>
@@ -59,9 +59,9 @@
 --
 -- == New Structures
 --
--- -   Extending 'Vulkan.Core10.OtherTypes.BufferMemoryBarrier',
+-- -   Extending 'Vulkan.Core10.CommandBufferBuilding.BufferMemoryBarrier',
 --     'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.BufferMemoryBarrier2',
---     'Vulkan.Core10.OtherTypes.ImageMemoryBarrier',
+--     'Vulkan.Core10.CommandBufferBuilding.ImageMemoryBarrier',
 --     'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.ImageMemoryBarrier2':
 --
 --     -   'ExternalMemoryAcquireUnmodifiedEXT'
@@ -89,7 +89,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_external_memory_acquire_unmodified Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_external_memory_acquire_unmodified Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -138,13 +138,13 @@
 -- the /acquire operation/\'s memory barrier structure because this /may/
 -- reduce the performance penalty.
 --
--- This struct is ignored if @acquireUnmodifiedMemory@ is
+-- This structure is ignored if @acquireUnmodifiedMemory@ is
 -- 'Vulkan.Core10.FundamentalTypes.FALSE'. In particular,
 -- 'Vulkan.Core10.FundamentalTypes.FALSE' does /not/ specify that memory
 -- was modified.
 --
--- This struct is ignored if the memory barrier’s @srcQueueFamilyIndex@ is
--- not a special queue family reserved for external memory ownership
+-- This structure is ignored if the memory barrier’s @srcQueueFamilyIndex@
+-- is not a special queue family reserved for external memory ownership
 -- transfers.
 --
 -- The method by which the application determines whether memory was
@@ -170,7 +170,7 @@
 --     'Vulkan.Core10.FundamentalTypes.TRUE', and the memory barrier’s
 --     @srcQueueFamilyIndex@ is a special queue family reserved for
 --     external memory ownership transfers (as described in
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-queue-transfers>),
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-queue-transfers>),
 --     then each range of 'Vulkan.Core10.Handles.DeviceMemory' bound to the
 --     resource /must/ have remained unmodified during all time since the
 --     resource’s most recent release of ownership to the queue family
@@ -180,6 +180,18 @@
 -- -   #VUID-VkExternalMemoryAcquireUnmodifiedEXT-sType-sType# @sType@
 --     /must/ be
 --     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT'
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.CommandBufferBuilding.BufferMemoryBarrier'
+--
+--     -   'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.BufferMemoryBarrier2'
+--
+--     -   'Vulkan.Core10.CommandBufferBuilding.ImageMemoryBarrier'
+--
+--     -   'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.ImageMemoryBarrier2'
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Extensions/VK_EXT_external_memory_acquire_unmodified.hs-boot b/src/Vulkan/Extensions/VK_EXT_external_memory_acquire_unmodified.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_external_memory_acquire_unmodified.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_external_memory_acquire_unmodified.hs-boot
@@ -27,8 +27,8 @@
 --
 -- [__Contact__]
 --
---     -   Lina Versace
---         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_external_memory_acquire_unmodified] @linyaa-kiwi%0A*Here describe the issue or question you have about the VK_EXT_external_memory_acquire_unmodified extension* >
+--     -   James Jones
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_external_memory_acquire_unmodified] @cubanismo%0A*Here describe the issue or question you have about the VK_EXT_external_memory_acquire_unmodified extension* >
 --
 -- [__Extension Proposal__]
 --     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_EXT_external_memory_acquire_unmodified.adoc VK_EXT_external_memory_acquire_unmodified>
@@ -59,9 +59,9 @@
 --
 -- == New Structures
 --
--- -   Extending 'Vulkan.Core10.OtherTypes.BufferMemoryBarrier',
+-- -   Extending 'Vulkan.Core10.CommandBufferBuilding.BufferMemoryBarrier',
 --     'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.BufferMemoryBarrier2',
---     'Vulkan.Core10.OtherTypes.ImageMemoryBarrier',
+--     'Vulkan.Core10.CommandBufferBuilding.ImageMemoryBarrier',
 --     'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.ImageMemoryBarrier2':
 --
 --     -   'ExternalMemoryAcquireUnmodifiedEXT'
@@ -89,7 +89,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_external_memory_acquire_unmodified Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_external_memory_acquire_unmodified Vulkan Specification>.
 --
 -- This 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
@@ -25,8 +25,8 @@
 --
 -- [__Contact__]
 --
---     -   Lina Versace
---         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_external_memory_dma_buf] @linyaa-kiwi%0A*Here describe the issue or question you have about the VK_EXT_external_memory_dma_buf extension* >
+--     -   James Jones
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_external_memory_dma_buf] @cubanismo%0A*Here describe the issue or question you have about the VK_EXT_external_memory_dma_buf extension* >
 --
 -- == Other Extension Metadata
 --
@@ -106,7 +106,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_external_memory_dma_buf Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_external_memory_host Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -284,10 +284,14 @@
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_INVALID_EXTERNAL_HANDLE'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_INVALID_EXTERNAL_HANDLE'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_external_memory_host VK_EXT_external_memory_host>,
@@ -332,7 +336,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-device-hostaccess Host Access to Device Memory Objects>.
+-- <https://registry.khronos.org/vulkan/specs/latest/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,
@@ -415,6 +419,12 @@
 -- -   #VUID-VkImportMemoryHostPointerInfoEXT-pHostPointer-parameter#
 --     @pHostPointer@ /must/ be a pointer value
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.Memory.MemoryAllocateInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_external_memory_host VK_EXT_external_memory_host>,
@@ -479,7 +489,7 @@
 -- identify memory types which are host visible. Implementations /may/
 -- include bits that identify memory types which are not host visible.
 -- Behavior for imported pointers of such types is defined by
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#host-memory-import-non-visible-type >.
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#host-memory-import-non-visible-type >.
 --
 -- == Valid Usage (Implicit)
 --
@@ -544,7 +554,11 @@
 -- it is filled in with each corresponding implementation-dependent
 -- property.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
 --
 -- = See Also
 --
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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_external_memory_host Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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_external_memory_metal.hs b/src/Vulkan/Extensions/VK_EXT_external_memory_metal.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_EXT_external_memory_metal.hs
@@ -0,0 +1,594 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_EXT_external_memory_metal - device extension
+--
+-- = VK_EXT_external_memory_metal
+--
+-- [__Name String__]
+--     @VK_EXT_external_memory_metal@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     603
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_memory VK_KHR_external_memory>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
+--
+-- [__Contact__]
+--
+--     -   Aitor Camacho Larrondo
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_external_memory_metal] @aitor-lunarg%0A*Here describe the issue or question you have about the VK_EXT_external_memory_metal extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_EXT_external_memory_metal.adoc VK_EXT_external_memory_metal>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2024-07-18
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Contributors__]
+--
+--     -   Aitor Camacho Larrondo, LunarG Inc.
+--
+-- == Description
+--
+-- An application may wish to reference device memory in multiple Vulkan
+-- device instances, in multiple processes, and\/or in Metal API. This
+-- extension enables an application to export and import Metal handles from
+-- Vulkan memory objects such that the underlying resources can be
+-- referenced outside the scope of the Vulkan device instance that created
+-- them.
+--
+-- == New Commands
+--
+-- -   'getMemoryMetalHandleEXT'
+--
+-- -   'getMemoryMetalHandlePropertiesEXT'
+--
+-- == New Structures
+--
+-- -   'MemoryGetMetalHandleInfoEXT'
+--
+-- -   'MemoryMetalHandlePropertiesEXT'
+--
+-- -   Extending 'Vulkan.Core10.Memory.MemoryAllocateInfo':
+--
+--     -   'ImportMemoryMetalHandleInfoEXT'
+--
+-- == New Enum Constants
+--
+-- -   'EXT_EXTERNAL_MEMORY_METAL_EXTENSION_NAME'
+--
+-- -   'EXT_EXTERNAL_MEMORY_METAL_SPEC_VERSION'
+--
+-- -   Extending
+--     'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits':
+--
+--     -   'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_MTLBUFFER_BIT_EXT'
+--
+--     -   'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_MTLHEAP_BIT_EXT'
+--
+--     -   'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_MTLTEXTURE_BIT_EXT'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMPORT_MEMORY_METAL_HANDLE_INFO_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MEMORY_GET_METAL_HANDLE_INFO_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MEMORY_METAL_HANDLE_PROPERTIES_EXT'
+--
+-- == Version History
+--
+-- -   Revision 1, 2024-07-18 (Aitor Camacho Larrondo)
+--
+--     -   Initial revision
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_external_memory_metal 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_external_memory_metal  ( getMemoryMetalHandleEXT
+                                                       , getMemoryMetalHandlePropertiesEXT
+                                                       , ImportMemoryMetalHandleInfoEXT(..)
+                                                       , MemoryMetalHandlePropertiesEXT(..)
+                                                       , MemoryGetMetalHandleInfoEXT(..)
+                                                       , EXT_EXTERNAL_MEMORY_METAL_SPEC_VERSION
+                                                       , pattern EXT_EXTERNAL_MEMORY_METAL_SPEC_VERSION
+                                                       , EXT_EXTERNAL_MEMORY_METAL_EXTENSION_NAME
+                                                       , pattern EXT_EXTERNAL_MEMORY_METAL_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.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.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 Vulkan.NamedType ((:::))
+import Vulkan.Core10.Handles (Device)
+import Vulkan.Core10.Handles (Device(..))
+import Vulkan.Core10.Handles (Device(Device))
+import Vulkan.Dynamic (DeviceCmds(pVkGetMemoryMetalHandleEXT))
+import Vulkan.Dynamic (DeviceCmds(pVkGetMemoryMetalHandlePropertiesEXT))
+import Vulkan.Core10.Handles (DeviceMemory)
+import Vulkan.Core10.Handles (Device_T)
+import Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits (ExternalMemoryHandleTypeFlagBits)
+import Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits (ExternalMemoryHandleTypeFlagBits(..))
+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_IMPORT_MEMORY_METAL_HANDLE_INFO_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_MEMORY_GET_METAL_HANDLE_INFO_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_MEMORY_METAL_HANDLE_PROPERTIES_EXT))
+import Vulkan.Core10.Enums.Result (Result(SUCCESS))
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetMemoryMetalHandleEXT
+  :: FunPtr (Ptr Device_T -> Ptr MemoryGetMetalHandleInfoEXT -> Ptr (Ptr ()) -> IO Result) -> Ptr Device_T -> Ptr MemoryGetMetalHandleInfoEXT -> Ptr (Ptr ()) -> IO Result
+
+-- | vkGetMemoryMetalHandleEXT - Get a Metal handle for a memory object
+--
+-- = Description
+--
+-- Unless the app retains the handle object returned by the call, the
+-- lifespan will be the same as the associated
+-- 'Vulkan.Core10.Handles.DeviceMemory'.
+--
+-- == 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_TOO_MANY_OBJECTS'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_external_memory_metal VK_EXT_external_memory_metal>,
+-- 'Vulkan.Core10.Handles.Device', 'MemoryGetMetalHandleInfoEXT'
+getMemoryMetalHandleEXT :: forall io
+                         . (MonadIO io)
+                        => -- | @device@ is the logical device that created the device memory being
+                           -- exported.
+                           --
+                           -- #VUID-vkGetMemoryMetalHandleEXT-device-parameter# @device@ /must/ be a
+                           -- valid 'Vulkan.Core10.Handles.Device' handle
+                           Device
+                        -> -- | @pGetMetalHandleInfo@ is a pointer to a 'MemoryGetMetalHandleInfoEXT'
+                           -- structure containing parameters of the export operation.
+                           --
+                           -- #VUID-vkGetMemoryMetalHandleEXT-pGetMetalHandleInfo-parameter#
+                           -- @pGetMetalHandleInfo@ /must/ be a valid pointer to a valid
+                           -- 'MemoryGetMetalHandleInfoEXT' structure
+                           MemoryGetMetalHandleInfoEXT
+                        -> io (("handle" ::: Ptr ()))
+getMemoryMetalHandleEXT device getMetalHandleInfo = liftIO . evalContT $ do
+  let vkGetMemoryMetalHandleEXTPtr = pVkGetMemoryMetalHandleEXT (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkGetMemoryMetalHandleEXTPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetMemoryMetalHandleEXT is null" Nothing Nothing
+  let vkGetMemoryMetalHandleEXT' = mkVkGetMemoryMetalHandleEXT vkGetMemoryMetalHandleEXTPtr
+  pGetMetalHandleInfo <- ContT $ withCStruct (getMetalHandleInfo)
+  pPHandle <- ContT $ bracket (callocBytes @(Ptr ()) 8) free
+  r <- lift $ traceAroundEvent "vkGetMemoryMetalHandleEXT" (vkGetMemoryMetalHandleEXT'
+                                                              (deviceHandle (device))
+                                                              pGetMetalHandleInfo
+                                                              (pPHandle))
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+  pHandle <- lift $ peek @(Ptr ()) pPHandle
+  pure $ (pHandle)
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetMemoryMetalHandlePropertiesEXT
+  :: FunPtr (Ptr Device_T -> ExternalMemoryHandleTypeFlagBits -> Ptr () -> Ptr MemoryMetalHandlePropertiesEXT -> IO Result) -> Ptr Device_T -> ExternalMemoryHandleTypeFlagBits -> Ptr () -> Ptr MemoryMetalHandlePropertiesEXT -> IO Result
+
+-- | vkGetMemoryMetalHandlePropertiesEXT - Get Properties of External Memory
+-- Metal Handles
+--
+-- == 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_INVALID_EXTERNAL_HANDLE'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_external_memory_metal VK_EXT_external_memory_metal>,
+-- 'Vulkan.Core10.Handles.Device',
+-- 'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits',
+-- 'MemoryMetalHandlePropertiesEXT'
+getMemoryMetalHandlePropertiesEXT :: forall io
+                                   . (MonadIO io)
+                                  => -- | @device@ is the logical device that will be importing @pHandle@.
+                                     --
+                                     -- #VUID-vkGetMemoryMetalHandlePropertiesEXT-device-parameter# @device@
+                                     -- /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+                                     Device
+                                  -> -- | @handleType@ is a
+                                     -- 'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits'
+                                     -- value specifying the type of the handle @pHandle@.
+                                     --
+                                     -- #VUID-vkGetMemoryMetalHandlePropertiesEXT-handleType-10417# @handleType@
+                                     -- /must/ be
+                                     -- 'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_MTLBUFFER_BIT_EXT',
+                                     -- 'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_MTLTEXTURE_BIT_EXT'
+                                     -- or
+                                     -- 'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_MTLHEAP_BIT_EXT'
+                                     --
+                                     -- #VUID-vkGetMemoryMetalHandlePropertiesEXT-handleType-parameter#
+                                     -- @handleType@ /must/ be a valid
+                                     -- 'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits'
+                                     -- value
+                                     ExternalMemoryHandleTypeFlagBits
+                                  -> -- | @pHandle@ is the handle which will be imported.
+                                     --
+                                     -- #VUID-vkGetMemoryMetalHandlePropertiesEXT-handle-10416# @pHandle@ /must/
+                                     -- point to a valid id\<MTLBuffer>, id\<MTLTexture> or id\<MTLDevice>
+                                     --
+                                     -- #VUID-vkGetMemoryMetalHandlePropertiesEXT-pHandle-parameter# @pHandle@
+                                     -- /must/ be a pointer value
+                                     ("handle" ::: Ptr ())
+                                  -> io (MemoryMetalHandlePropertiesEXT)
+getMemoryMetalHandlePropertiesEXT device
+                                    handleType
+                                    handle = liftIO . evalContT $ do
+  let vkGetMemoryMetalHandlePropertiesEXTPtr = pVkGetMemoryMetalHandlePropertiesEXT (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkGetMemoryMetalHandlePropertiesEXTPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetMemoryMetalHandlePropertiesEXT is null" Nothing Nothing
+  let vkGetMemoryMetalHandlePropertiesEXT' = mkVkGetMemoryMetalHandlePropertiesEXT vkGetMemoryMetalHandlePropertiesEXTPtr
+  pPMemoryMetalHandleProperties <- ContT (withZeroCStruct @MemoryMetalHandlePropertiesEXT)
+  r <- lift $ traceAroundEvent "vkGetMemoryMetalHandlePropertiesEXT" (vkGetMemoryMetalHandlePropertiesEXT'
+                                                                        (deviceHandle (device))
+                                                                        (handleType)
+                                                                        (handle)
+                                                                        (pPMemoryMetalHandleProperties))
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+  pMemoryMetalHandleProperties <- lift $ peekCStruct @MemoryMetalHandlePropertiesEXT pPMemoryMetalHandleProperties
+  pure $ (pMemoryMetalHandleProperties)
+
+
+-- | VkImportMemoryMetalHandleInfoEXT - Import Metal memory created on the
+-- same physical device
+--
+-- = Description
+--
+-- Importing memory object payloads from Metal handles shares the ownership
+-- of the handle to the Vulkan implementation.
+--
+-- Applications /can/ import the same payload into multiple instances of
+-- Vulkan, into the same instance from which it was exported, and multiple
+-- times into a given Vulkan instance. In all cases, each import operation
+-- /must/ create a distinct 'Vulkan.Core10.Handles.DeviceMemory' object.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkImportMemoryMetalHandleInfoEXT-handleType-10408# If
+--     @handleType@ is not @0@, it /must/ be supported for import, as
+--     reported by
+--     'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.ExternalImageFormatProperties'
+--     or
+--     'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.ExternalBufferProperties'
+--
+-- -   #VUID-VkImportMemoryMetalHandleInfoEXT-handle-10409# The memory from
+--     which @handle@ was exported /must/ have been created on the same
+--     underlying physical device as @device@
+--
+-- -   #VUID-VkImportMemoryMetalHandleInfoEXT-handleType-10410# If
+--     @handleType@ is not @0@, it /must/ be
+--     'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_MTLBUFFER_BIT_EXT',
+--     'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_MTLTEXTURE_BIT_EXT'
+--     or
+--     'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_MTLHEAP_BIT_EXT'
+--
+-- -   #VUID-VkImportMemoryMetalHandleInfoEXT-handleType-10411# If
+--     @handleType@ is not @0@ , @handle@ /must/ be a valid non-NULL handle
+--     of the type specified by @handleType@
+--
+-- -   #VUID-VkImportMemoryMetalHandleInfoEXT-handle-10412# @handle@ /must/
+--     obey any requirements listed for @handleType@ in
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#external-memory-handle-types-compatibility external memory handle types compatibility>
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkImportMemoryMetalHandleInfoEXT-sType-sType# @sType@ /must/
+--     be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMPORT_MEMORY_METAL_HANDLE_INFO_EXT'
+--
+-- -   #VUID-VkImportMemoryMetalHandleInfoEXT-handleType-parameter# If
+--     @handleType@ is not @0@, @handleType@ /must/ be a valid
+--     'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits'
+--     value
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.Memory.MemoryAllocateInfo'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_external_memory_metal VK_EXT_external_memory_metal>,
+-- 'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data ImportMemoryMetalHandleInfoEXT = ImportMemoryMetalHandleInfoEXT
+  { -- | @handleType@ is a
+    -- 'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits'
+    -- value specifying the type of @handle@ or @name@.
+    handleType :: ExternalMemoryHandleTypeFlagBits
+  , -- | @handle@ is @NULL@ or the external handle to import.
+    handle :: Ptr ()
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (ImportMemoryMetalHandleInfoEXT)
+#endif
+deriving instance Show ImportMemoryMetalHandleInfoEXT
+
+instance ToCStruct ImportMemoryMetalHandleInfoEXT where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p ImportMemoryMetalHandleInfoEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMPORT_MEMORY_METAL_HANDLE_INFO_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr ExternalMemoryHandleTypeFlagBits)) (handleType)
+    poke ((p `plusPtr` 24 :: Ptr (Ptr ()))) (handle)
+    f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMPORT_MEMORY_METAL_HANDLE_INFO_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    f
+
+instance FromCStruct ImportMemoryMetalHandleInfoEXT where
+  peekCStruct p = do
+    handleType <- peek @ExternalMemoryHandleTypeFlagBits ((p `plusPtr` 16 :: Ptr ExternalMemoryHandleTypeFlagBits))
+    handle <- peek @(Ptr ()) ((p `plusPtr` 24 :: Ptr (Ptr ())))
+    pure $ ImportMemoryMetalHandleInfoEXT
+             handleType handle
+
+instance Storable ImportMemoryMetalHandleInfoEXT where
+  sizeOf ~_ = 32
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero ImportMemoryMetalHandleInfoEXT where
+  zero = ImportMemoryMetalHandleInfoEXT
+           zero
+           zero
+
+
+-- | VkMemoryMetalHandlePropertiesEXT - Properties of External Memory Metal
+-- Handles
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_external_memory_metal VK_EXT_external_memory_metal>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'getMemoryMetalHandlePropertiesEXT'
+data MemoryMetalHandlePropertiesEXT = MemoryMetalHandlePropertiesEXT
+  { -- | @memoryTypeBits@ is a bitmask containing one bit set for every memory
+    -- type which the specified Metal handle /can/ be imported as.
+    memoryTypeBits :: Word32 }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (MemoryMetalHandlePropertiesEXT)
+#endif
+deriving instance Show MemoryMetalHandlePropertiesEXT
+
+instance ToCStruct MemoryMetalHandlePropertiesEXT where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p MemoryMetalHandlePropertiesEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MEMORY_METAL_HANDLE_PROPERTIES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (memoryTypeBits)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MEMORY_METAL_HANDLE_PROPERTIES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct MemoryMetalHandlePropertiesEXT where
+  peekCStruct p = do
+    memoryTypeBits <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    pure $ MemoryMetalHandlePropertiesEXT
+             memoryTypeBits
+
+instance Storable MemoryMetalHandlePropertiesEXT where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero MemoryMetalHandlePropertiesEXT where
+  zero = MemoryMetalHandlePropertiesEXT
+           zero
+
+
+-- | VkMemoryGetMetalHandleInfoEXT - Structure describing a Metal handle
+-- memory export operation
+--
+-- = Description
+--
+-- The properties of the handle returned depend on the value of
+-- @handleType@. See
+-- 'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits'
+-- for a description of the properties of the defined external memory
+-- handle types.
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_external_memory_metal VK_EXT_external_memory_metal>,
+-- 'Vulkan.Core10.Handles.DeviceMemory',
+-- 'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'getMemoryMetalHandleEXT'
+data MemoryGetMetalHandleInfoEXT = MemoryGetMetalHandleInfoEXT
+  { -- | @memory@ is the memory object from which the handle will be exported.
+    --
+    -- #VUID-VkMemoryGetMetalHandleInfoEXT-memory-10413# @memory@ /must/ have
+    -- been created with a valid
+    -- 'Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExportMemoryAllocateInfo'
+    --
+    -- #VUID-VkMemoryGetMetalHandleInfoEXT-memory-parameter# @memory@ /must/ be
+    -- a valid 'Vulkan.Core10.Handles.DeviceMemory' handle
+    memory :: DeviceMemory
+  , -- | @handleType@ is a
+    -- 'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits'
+    -- value specifying the type of handle requested.
+    --
+    -- #VUID-VkMemoryGetMetalHandleInfoEXT-handleType-10414# @handleType@
+    -- /must/ have been included in
+    -- 'Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExportMemoryAllocateInfo'::@handleTypes@
+    -- when @memory@ was created
+    --
+    -- #VUID-VkMemoryGetMetalHandleInfoEXT-handleType-10415# @handleType@
+    -- /must/ be
+    -- 'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_MTLBUFFER_BIT_EXT',
+    -- 'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_MTLTEXTURE_BIT_EXT'
+    -- or
+    -- 'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_MTLHEAP_BIT_EXT'
+    --
+    -- #VUID-VkMemoryGetMetalHandleInfoEXT-handleType-parameter# @handleType@
+    -- /must/ be a valid
+    -- 'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits'
+    -- value
+    handleType :: ExternalMemoryHandleTypeFlagBits
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (MemoryGetMetalHandleInfoEXT)
+#endif
+deriving instance Show MemoryGetMetalHandleInfoEXT
+
+instance ToCStruct MemoryGetMetalHandleInfoEXT where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p MemoryGetMetalHandleInfoEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MEMORY_GET_METAL_HANDLE_INFO_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr DeviceMemory)) (memory)
+    poke ((p `plusPtr` 24 :: Ptr ExternalMemoryHandleTypeFlagBits)) (handleType)
+    f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MEMORY_GET_METAL_HANDLE_INFO_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr DeviceMemory)) (zero)
+    poke ((p `plusPtr` 24 :: Ptr ExternalMemoryHandleTypeFlagBits)) (zero)
+    f
+
+instance FromCStruct MemoryGetMetalHandleInfoEXT where
+  peekCStruct p = do
+    memory <- peek @DeviceMemory ((p `plusPtr` 16 :: Ptr DeviceMemory))
+    handleType <- peek @ExternalMemoryHandleTypeFlagBits ((p `plusPtr` 24 :: Ptr ExternalMemoryHandleTypeFlagBits))
+    pure $ MemoryGetMetalHandleInfoEXT
+             memory handleType
+
+instance Storable MemoryGetMetalHandleInfoEXT where
+  sizeOf ~_ = 32
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero MemoryGetMetalHandleInfoEXT where
+  zero = MemoryGetMetalHandleInfoEXT
+           zero
+           zero
+
+
+type EXT_EXTERNAL_MEMORY_METAL_SPEC_VERSION = 1
+
+-- No documentation found for TopLevel "VK_EXT_EXTERNAL_MEMORY_METAL_SPEC_VERSION"
+pattern EXT_EXTERNAL_MEMORY_METAL_SPEC_VERSION :: forall a . Integral a => a
+pattern EXT_EXTERNAL_MEMORY_METAL_SPEC_VERSION = 1
+
+
+type EXT_EXTERNAL_MEMORY_METAL_EXTENSION_NAME = "VK_EXT_external_memory_metal"
+
+-- No documentation found for TopLevel "VK_EXT_EXTERNAL_MEMORY_METAL_EXTENSION_NAME"
+pattern EXT_EXTERNAL_MEMORY_METAL_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern EXT_EXTERNAL_MEMORY_METAL_EXTENSION_NAME = "VK_EXT_external_memory_metal"
+
diff --git a/src/Vulkan/Extensions/VK_EXT_external_memory_metal.hs-boot b/src/Vulkan/Extensions/VK_EXT_external_memory_metal.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_EXT_external_memory_metal.hs-boot
@@ -0,0 +1,144 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_EXT_external_memory_metal - device extension
+--
+-- = VK_EXT_external_memory_metal
+--
+-- [__Name String__]
+--     @VK_EXT_external_memory_metal@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     603
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_memory VK_KHR_external_memory>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
+--
+-- [__Contact__]
+--
+--     -   Aitor Camacho Larrondo
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_external_memory_metal] @aitor-lunarg%0A*Here describe the issue or question you have about the VK_EXT_external_memory_metal extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_EXT_external_memory_metal.adoc VK_EXT_external_memory_metal>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2024-07-18
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Contributors__]
+--
+--     -   Aitor Camacho Larrondo, LunarG Inc.
+--
+-- == Description
+--
+-- An application may wish to reference device memory in multiple Vulkan
+-- device instances, in multiple processes, and\/or in Metal API. This
+-- extension enables an application to export and import Metal handles from
+-- Vulkan memory objects such that the underlying resources can be
+-- referenced outside the scope of the Vulkan device instance that created
+-- them.
+--
+-- == New Commands
+--
+-- -   'getMemoryMetalHandleEXT'
+--
+-- -   'getMemoryMetalHandlePropertiesEXT'
+--
+-- == New Structures
+--
+-- -   'MemoryGetMetalHandleInfoEXT'
+--
+-- -   'MemoryMetalHandlePropertiesEXT'
+--
+-- -   Extending 'Vulkan.Core10.Memory.MemoryAllocateInfo':
+--
+--     -   'ImportMemoryMetalHandleInfoEXT'
+--
+-- == New Enum Constants
+--
+-- -   'EXT_EXTERNAL_MEMORY_METAL_EXTENSION_NAME'
+--
+-- -   'EXT_EXTERNAL_MEMORY_METAL_SPEC_VERSION'
+--
+-- -   Extending
+--     'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits':
+--
+--     -   'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_MTLBUFFER_BIT_EXT'
+--
+--     -   'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_MTLHEAP_BIT_EXT'
+--
+--     -   'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_MTLTEXTURE_BIT_EXT'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMPORT_MEMORY_METAL_HANDLE_INFO_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MEMORY_GET_METAL_HANDLE_INFO_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MEMORY_METAL_HANDLE_PROPERTIES_EXT'
+--
+-- == Version History
+--
+-- -   Revision 1, 2024-07-18 (Aitor Camacho Larrondo)
+--
+--     -   Initial revision
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_external_memory_metal 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_external_memory_metal  ( ImportMemoryMetalHandleInfoEXT
+                                                       , MemoryGetMetalHandleInfoEXT
+                                                       , MemoryMetalHandlePropertiesEXT
+                                                       ) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data ImportMemoryMetalHandleInfoEXT
+
+instance ToCStruct ImportMemoryMetalHandleInfoEXT
+instance Show ImportMemoryMetalHandleInfoEXT
+
+instance FromCStruct ImportMemoryMetalHandleInfoEXT
+
+
+data MemoryGetMetalHandleInfoEXT
+
+instance ToCStruct MemoryGetMetalHandleInfoEXT
+instance Show MemoryGetMetalHandleInfoEXT
+
+instance FromCStruct MemoryGetMetalHandleInfoEXT
+
+
+data MemoryMetalHandlePropertiesEXT
+
+instance ToCStruct MemoryMetalHandlePropertiesEXT
+instance Show MemoryMetalHandlePropertiesEXT
+
+instance FromCStruct MemoryMetalHandlePropertiesEXT
+
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
@@ -123,7 +123,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_filter_cubic Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -162,8 +162,12 @@
 -- | VkPhysicalDeviceImageViewImageFormatInfoEXT - Structure for providing
 -- image view type
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceImageFormatInfo2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_filter_cubic VK_EXT_filter_cubic>,
@@ -223,6 +227,12 @@
 -- -   #VUID-VkFilterCubicImageViewImageFormatPropertiesEXT-sType-sType#
 --     @sType@ /must/ be
 --     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT'
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.ImageFormatProperties2'
 --
 -- == Valid Usage
 --
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
@@ -123,7 +123,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_filter_cubic Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -15,7 +15,7 @@
 --     219
 --
 -- [__Revision__]
---     2
+--     3
 --
 -- [__Ratification Status__]
 --     Ratified
@@ -45,7 +45,7 @@
 -- == Other Extension Metadata
 --
 -- [__Last Modified Date__]
---     2021-09-30
+--     2025-05-20
 --
 -- [__Interactions and External Dependencies__]
 --
@@ -200,13 +200,13 @@
 --
 -- == New or Modified Built-In Variables
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-fraginvocationcount FragInvocationCountEXT>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-fraginvocationcount FragInvocationCountEXT>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-fragsize FragSizeEXT>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-fragsize FragSizeEXT>
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-FragmentDensityEXT FragmentDensityEXT>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-FragmentDensityEXT FragmentDensityEXT>
 --
 -- == Version History
 --
@@ -218,6 +218,10 @@
 --
 --     -   Add interaction with @VK_KHR_format_feature_flags2@ to @vk.xml@
 --
+-- -   Revision 3, 2025-05-20 (Matthew Netsch)
+--
+--     -   Fixes fragmentDensityTexelSize calculation equation
+--
 -- == See Also
 --
 -- No cross-references are available
@@ -225,7 +229,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_fragment_density_map Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -290,12 +294,22 @@
 -- structure passed to
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
 -- it is filled in to indicate whether each corresponding feature is
--- supported. 'PhysicalDeviceFragmentDensityMapFeaturesEXT' /can/ also be
--- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceFragmentDensityMapFeaturesEXT', it /must/ add an instance
+-- of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = 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>,
@@ -322,9 +336,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-fragmentdensitymapattachment fragment density map attachment>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-fragmentdensitymapattachment fragment density map attachment>
     -- /must/ only have
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#samplers-subsamplesampler subsampled attachments>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#samplers-subsamplesampler subsampled attachments>
     -- bound.
     fragmentDensityMapNonSubsampledImages :: Bool
   }
@@ -390,8 +404,12 @@
 -- it is filled in with each corresponding implementation-dependent
 -- property.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
 -- = 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>,
@@ -401,7 +419,7 @@
 data PhysicalDeviceFragmentDensityMapPropertiesEXT = PhysicalDeviceFragmentDensityMapPropertiesEXT
   { -- | #limits-minFragmentDensityTexelSize# @minFragmentDensityTexelSize@ is
     -- the minimum
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#glossary-fragment-density-texel-size fragment density texel size>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#glossary-fragment-density-texel-size fragment density texel size>.
     minFragmentDensityTexelSize :: Extent2D
   , -- | #limits-maxFragmentDensityTexelSize# @maxFragmentDensityTexelSize@ is
     -- the maximum fragment density texel size.
@@ -534,6 +552,14 @@
 --     @fragmentDensityMapAttachment@ /must/ be a valid
 --     'Vulkan.Core10.Pass.AttachmentReference' structure
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Pass.RenderPassCreateInfo'
+--
+--     -   'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.RenderPassCreateInfo2'
+--
 -- = 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>,
@@ -602,8 +628,9 @@
 --
 -- -   #VUID-VkRenderingFragmentDensityMapAttachmentInfoEXT-imageView-06158#
 --     If @imageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', it
---     /must/ have been created with
+--     /must/ have been created with the
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT'
+--     usage flag set
 --
 -- -   #VUID-VkRenderingFragmentDensityMapAttachmentInfoEXT-imageView-06159#
 --     If @imageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', it
@@ -612,7 +639,7 @@
 --
 -- -   #VUID-VkRenderingFragmentDensityMapAttachmentInfoEXT-apiVersion-07908#
 --     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-multiview multiview>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-multiview multiview>
 --     feature is not enabled,
 --     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceProperties'::@apiVersion@
 --     is less than Vulkan 1.1, and @imageView@ is not
@@ -633,6 +660,12 @@
 --     @imageLayout@ /must/ be a valid
 --     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' value
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'
+--
 -- = 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>,
@@ -691,11 +724,11 @@
            zero
 
 
-type EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION = 2
+type EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION = 3
 
 -- No documentation found for TopLevel "VK_EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION"
 pattern EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION :: forall a . Integral a => a
-pattern EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION = 2
+pattern EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION = 3
 
 
 type EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME = "VK_EXT_fragment_density_map"
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
@@ -15,7 +15,7 @@
 --     219
 --
 -- [__Revision__]
---     2
+--     3
 --
 -- [__Ratification Status__]
 --     Ratified
@@ -45,7 +45,7 @@
 -- == Other Extension Metadata
 --
 -- [__Last Modified Date__]
---     2021-09-30
+--     2025-05-20
 --
 -- [__Interactions and External Dependencies__]
 --
@@ -200,13 +200,13 @@
 --
 -- == New or Modified Built-In Variables
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-fraginvocationcount FragInvocationCountEXT>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-fraginvocationcount FragInvocationCountEXT>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-fragsize FragSizeEXT>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-fragsize FragSizeEXT>
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-FragmentDensityEXT FragmentDensityEXT>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-FragmentDensityEXT FragmentDensityEXT>
 --
 -- == Version History
 --
@@ -218,6 +218,10 @@
 --
 --     -   Add interaction with @VK_KHR_format_feature_flags2@ to @vk.xml@
 --
+-- -   Revision 3, 2025-05-20 (Matthew Netsch)
+--
+--     -   Fixes fragmentDensityTexelSize calculation equation
+--
 -- == See Also
 --
 -- No cross-references are available
@@ -225,7 +229,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_fragment_density_map Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -97,7 +97,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_fragment_density_map2 Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -149,12 +149,22 @@
 -- structure passed to
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
 -- it is filled in to indicate whether each corresponding feature is
--- supported. 'PhysicalDeviceFragmentDensityMap2FeaturesEXT' /can/ also be
--- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceFragmentDensityMap2FeaturesEXT', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_fragment_density_map2 VK_EXT_fragment_density_map2>,
@@ -220,7 +230,11 @@
 -- it is filled in with each corresponding implementation-dependent
 -- property.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
 --
 -- = See Also
 --
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
@@ -97,7 +97,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_fragment_density_map2 Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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_map_offset.hs b/src/Vulkan/Extensions/VK_EXT_fragment_density_map_offset.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_EXT_fragment_density_map_offset.hs
@@ -0,0 +1,527 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_EXT_fragment_density_map_offset - device extension
+--
+-- = VK_EXT_fragment_density_map_offset
+--
+-- [__Name String__]
+--     @VK_EXT_fragment_density_map_offset@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     620
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Ratified
+--
+-- [__Extension and Version Dependencies__]
+--         
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--          or
+--         
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_fragment_density_map VK_EXT_fragment_density_map>
+--     and
+--         
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_create_renderpass2 VK_KHR_create_renderpass2>
+--          or
+--         
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.2 Vulkan Version 1.2>
+--     and
+--         
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3 Vulkan Version 1.3>
+--          or
+--         
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering VK_KHR_dynamic_rendering>
+--
+-- [__Contact__]
+--
+--     -   Connor Abbott
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_fragment_density_map_offset] @cwabbott0%0A*Here describe the issue or question you have about the VK_EXT_fragment_density_map_offset extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_EXT_fragment_density_map_offset.adoc VK_EXT_fragment_density_map_offset>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2025-02-14
+--
+-- [__Contributors__]
+--
+--     -   Connor Abbott, Valve Corporation
+--
+--     -   Matthew Netsch, Qualcomm Technologies, Inc.
+--
+--     -   Jonathan Wicks, Qualcomm Technologies, Inc.
+--
+--     -   Jonathan Tinkham, Qualcomm Technologies, Inc.
+--
+--     -   Jeff Leger, Qualcomm Technologies, Inc.
+--
+--     -   Manan Katwala, Qualcomm Technologies, Inc.
+--
+--     -   Mike Blumenkrantz, Valve Corporation
+--
+-- == Description
+--
+-- This extension allows an application to specify offsets to a fragment
+-- density map attachment, changing the framebuffer location where density
+-- values are applied to without having to regenerate the fragment density
+-- map.
+--
+-- == New Commands
+--
+-- -   'cmdEndRendering2EXT'
+--
+-- == New Structures
+--
+-- -   'RenderingEndInfoEXT'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT'
+--
+-- -   Extending
+--     'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.SubpassEndInfo',
+--     'Vulkan.Extensions.VK_KHR_maintenance10.RenderingEndInfoKHR':
+--
+--     -   'RenderPassFragmentDensityMapOffsetEndInfoEXT'
+--
+-- == New Enum Constants
+--
+-- -   'EXT_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME'
+--
+-- -   'EXT_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.ImageCreateFlagBits':
+--
+--     -   'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_EXT'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_EXT'
+--
+--     -   'STRUCTURE_TYPE_RENDERING_END_INFO_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_EXT'
+--
+-- == Version History
+--
+-- -   Revision 1, 2025-02-14 (Connor Abbott)
+--
+--     -   Initial version
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_fragment_density_map_offset 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_fragment_density_map_offset  ( pattern STRUCTURE_TYPE_RENDERING_END_INFO_EXT
+                                                             , cmdEndRendering2EXT
+                                                             , PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT(..)
+                                                             , PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT(..)
+                                                             , RenderPassFragmentDensityMapOffsetEndInfoEXT(..)
+                                                             , RenderingEndInfoEXT
+                                                             , EXT_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION
+                                                             , pattern EXT_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION
+                                                             , EXT_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME
+                                                             , pattern EXT_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME
+                                                             , RenderingEndInfoKHR(..)
+                                                             , cmdEndRendering2KHR
+                                                             ) 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.Extensions.VK_KHR_maintenance10 (cmdEndRendering2KHR)
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.Core10.FundamentalTypes (Extent2D)
+import Vulkan.Core10.FundamentalTypes (Offset2D)
+import Vulkan.Extensions.VK_KHR_maintenance10 (RenderingEndInfoKHR)
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RENDERING_END_INFO_KHR))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_EXT))
+import Vulkan.Extensions.VK_KHR_maintenance10 (cmdEndRendering2KHR)
+import Vulkan.Extensions.VK_KHR_maintenance10 (RenderingEndInfoKHR(..))
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_RENDERING_END_INFO_EXT"
+pattern STRUCTURE_TYPE_RENDERING_END_INFO_EXT = STRUCTURE_TYPE_RENDERING_END_INFO_KHR
+
+
+-- No documentation found for TopLevel "vkCmdEndRendering2EXT"
+cmdEndRendering2EXT = cmdEndRendering2KHR
+
+
+-- | VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT - Structure
+-- describing fragment density map offset features that can be supported by
+-- an implementation
+--
+-- = Members
+--
+-- This structure describes the following feature:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_fragment_density_map_offset VK_EXT_fragment_density_map_offset>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_fragment_density_map_offset VK_QCOM_fragment_density_map_offset>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT = PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT
+  { -- | #features-fragmentDensityMapOffset# @fragmentDensityMapOffset@ specifies
+    -- whether the implementation supports
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-fragmentdensitymapoffsets fragment density map offsets>
+    fragmentDensityMapOffset :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT)
+#endif
+deriving instance Show PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT
+
+instance ToCStruct PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (fragmentDensityMapOffset))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT where
+  peekCStruct p = do
+    fragmentDensityMapOffset <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT
+             (bool32ToBool fragmentDensityMapOffset)
+
+instance Storable PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT where
+  zero = PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT
+           zero
+
+
+-- | VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT - Structure
+-- describing fragment density map offset properties that can be supported
+-- by an implementation
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT' 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.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_fragment_density_map_offset VK_EXT_fragment_density_map_offset>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_fragment_density_map_offset VK_QCOM_fragment_density_map_offset>,
+-- 'Vulkan.Core10.FundamentalTypes.Extent2D',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT = PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT
+  { -- | #limits-fragmentdensityoffsetgranularity#
+    -- @fragmentDensityOffsetGranularity@ is the granularity for
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-fragmentdensitymapoffsets fragment density offsets>.
+    fragmentDensityOffsetGranularity :: Extent2D }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT)
+#endif
+deriving instance Show PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT
+
+instance ToCStruct PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Extent2D)) (fragmentDensityOffsetGranularity)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Extent2D)) (zero)
+    f
+
+instance FromCStruct PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT where
+  peekCStruct p = do
+    fragmentDensityOffsetGranularity <- peekCStruct @Extent2D ((p `plusPtr` 16 :: Ptr Extent2D))
+    pure $ PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT
+             fragmentDensityOffsetGranularity
+
+instance Storable PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT where
+  zero = PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT
+           zero
+
+
+-- | VkRenderPassFragmentDensityMapOffsetEndInfoEXT - Structure specifying
+-- fragment density map offset subpass end information
+--
+-- = Description
+--
+-- The array elements are given per @layer@ as defined by
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
+--
+-- If neither the
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.SubpassEndInfo'::@pNext@
+-- chain for the last subpass of a render pass nor the
+-- 'RenderingEndInfoEXT'::@pNext@ chain of a dynamic render pass include
+-- 'RenderPassFragmentDensityMapOffsetEndInfoEXT', or if
+-- @fragmentDensityOffsetCount@ is zero, then the offset (0,0) is used for
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#fragmentdensitymap-fetch-density-value Fetch Density Value>.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkRenderPassFragmentDensityMapOffsetEndInfoEXT-fragmentDensityMapOffsets-06503#
+--     If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-fragmentDensityMapOffset fragmentDensityMapOffset>
+--     feature is not enabled or fragment density map is not enabled in the
+--     render pass, @fragmentDensityOffsetCount@ /must/ equal @0@
+--
+-- -   #VUID-VkRenderPassFragmentDensityMapOffsetEndInfoEXT-fragmentDensityMapAttachment-06504#
+--     If
+--     'Vulkan.Extensions.VK_EXT_fragment_density_map.RenderPassFragmentDensityMapCreateInfoEXT'::@fragmentDensityMapAttachment@
+--     is not 'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' and was not
+--     created with
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_EXT',
+--     @fragmentDensityOffsetCount@ /must/ equal @0@
+--
+-- -   #VUID-VkRenderPassFragmentDensityMapOffsetEndInfoEXT-pDepthStencilAttachment-06505#
+--     If the depth or stencil attachments for the render pass are used and
+--     were not created with
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_EXT',
+--     @fragmentDensityOffsetCount@ /must/ equal @0@
+--
+-- -   #VUID-VkRenderPassFragmentDensityMapOffsetEndInfoEXT-pInputAttachments-06506#
+--     If any used input attachments for the render pass were not created
+--     with
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_EXT',
+--     @fragmentDensityOffsetCount@ /must/ equal @0@
+--
+-- -   #VUID-VkRenderPassFragmentDensityMapOffsetEndInfoEXT-pColorAttachments-06507#
+--     If any used color attachments for the render pass were not created
+--     with
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_EXT',
+--     @fragmentDensityOffsetCount@ /must/ equal @0@
+--
+-- -   #VUID-VkRenderPassFragmentDensityMapOffsetEndInfoEXT-pResolveAttachments-06508#
+--     If any used resolve attachments for the render pass were not created
+--     with
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_EXT',
+--     @fragmentDensityOffsetCount@ /must/ equal @0@
+--
+-- -   #VUID-VkRenderPassFragmentDensityMapOffsetEndInfoEXT-pPreserveAttachments-06509#
+--     If any used preserve attachments for the render pass were not
+--     created with
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_EXT',
+--     @fragmentDensityOffsetCount@ /must/ equal @0@
+--
+-- -   #VUID-VkRenderPassFragmentDensityMapOffsetEndInfoEXT-fragmentDensityOffsetCount-06510#
+--     If @fragmentDensityOffsetCount@ is not @0@ and multiview is enabled
+--     for the render pass, @fragmentDensityOffsetCount@ /must/ equal the
+--     @layerCount@ that was specified in creating the fragment density map
+--     attachment view
+--
+-- -   #VUID-VkRenderPassFragmentDensityMapOffsetEndInfoEXT-fragmentDensityOffsetCount-06511#
+--     If @fragmentDensityOffsetCount@ is not @0@ and multiview is not
+--     enabled for the render pass, @fragmentDensityOffsetCount@ /must/
+--     equal @1@
+--
+-- -   #VUID-VkRenderPassFragmentDensityMapOffsetEndInfoEXT-x-06512# The
+--     @x@ component of each element of @pFragmentDensityOffsets@ /must/ be
+--     an integer multiple of @fragmentDensityOffsetGranularity.width@
+--
+-- -   #VUID-VkRenderPassFragmentDensityMapOffsetEndInfoEXT-y-06513# The
+--     @y@ component of each element of @pFragmentDensityOffsets@ /must/ be
+--     an integer multiple of @fragmentDensityOffsetGranularity.height@
+--
+-- -   #VUID-VkRenderPassFragmentDensityMapOffsetEndInfoEXT-pFragmentDensityOffsets-10730#
+--     Each element of @pFragmentDensityOffsets@ /must/ be identical for
+--     every 'Vulkan.Extensions.VK_KHR_maintenance10.cmdEndRendering2KHR'
+--     call made in a render pass
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkRenderPassFragmentDensityMapOffsetEndInfoEXT-sType-sType#
+--     @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_EXT'
+--
+-- -   #VUID-VkRenderPassFragmentDensityMapOffsetEndInfoEXT-pFragmentDensityOffsets-parameter#
+--     If @fragmentDensityOffsetCount@ is not @0@,
+--     @pFragmentDensityOffsets@ /must/ be a valid pointer to an array of
+--     @fragmentDensityOffsetCount@
+--     'Vulkan.Core10.FundamentalTypes.Offset2D' structures
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Extensions.VK_KHR_maintenance10.RenderingEndInfoKHR'
+--
+--     -   'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.SubpassEndInfo'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_fragment_density_map_offset VK_EXT_fragment_density_map_offset>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_fragment_density_map_offset VK_QCOM_fragment_density_map_offset>,
+-- 'Vulkan.Core10.FundamentalTypes.Offset2D',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data RenderPassFragmentDensityMapOffsetEndInfoEXT = RenderPassFragmentDensityMapOffsetEndInfoEXT
+  { -- | @pFragmentDensityOffsets@ is a pointer to an array of
+    -- 'Vulkan.Core10.FundamentalTypes.Offset2D' structs, each of which
+    -- describes the offset per layer.
+    fragmentDensityOffsets :: Vector Offset2D }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (RenderPassFragmentDensityMapOffsetEndInfoEXT)
+#endif
+deriving instance Show RenderPassFragmentDensityMapOffsetEndInfoEXT
+
+instance ToCStruct RenderPassFragmentDensityMapOffsetEndInfoEXT where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p RenderPassFragmentDensityMapOffsetEndInfoEXT{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_EXT)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (fragmentDensityOffsets)) :: Word32))
+    pPFragmentDensityOffsets' <- ContT $ allocaBytes @Offset2D ((Data.Vector.length (fragmentDensityOffsets)) * 8)
+    lift $ Data.Vector.imapM_ (\i e -> poke (pPFragmentDensityOffsets' `plusPtr` (8 * (i)) :: Ptr Offset2D) (e)) (fragmentDensityOffsets)
+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Offset2D))) (pPFragmentDensityOffsets')
+    lift $ f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    f
+
+instance FromCStruct RenderPassFragmentDensityMapOffsetEndInfoEXT where
+  peekCStruct p = do
+    fragmentDensityOffsetCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    pFragmentDensityOffsets <- peek @(Ptr Offset2D) ((p `plusPtr` 24 :: Ptr (Ptr Offset2D)))
+    pFragmentDensityOffsets' <- generateM (fromIntegral fragmentDensityOffsetCount) (\i -> peekCStruct @Offset2D ((pFragmentDensityOffsets `advancePtrBytes` (8 * (i)) :: Ptr Offset2D)))
+    pure $ RenderPassFragmentDensityMapOffsetEndInfoEXT
+             pFragmentDensityOffsets'
+
+instance Zero RenderPassFragmentDensityMapOffsetEndInfoEXT where
+  zero = RenderPassFragmentDensityMapOffsetEndInfoEXT
+           mempty
+
+
+-- No documentation found for TopLevel "VkRenderingEndInfoEXT"
+type RenderingEndInfoEXT = RenderingEndInfoKHR
+
+
+type EXT_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION = 1
+
+-- No documentation found for TopLevel "VK_EXT_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION"
+pattern EXT_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION :: forall a . Integral a => a
+pattern EXT_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION = 1
+
+
+type EXT_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME = "VK_EXT_fragment_density_map_offset"
+
+-- No documentation found for TopLevel "VK_EXT_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME"
+pattern EXT_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern EXT_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME = "VK_EXT_fragment_density_map_offset"
+
diff --git a/src/Vulkan/Extensions/VK_EXT_fragment_density_map_offset.hs-boot b/src/Vulkan/Extensions/VK_EXT_fragment_density_map_offset.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_EXT_fragment_density_map_offset.hs-boot
@@ -0,0 +1,174 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_EXT_fragment_density_map_offset - device extension
+--
+-- = VK_EXT_fragment_density_map_offset
+--
+-- [__Name String__]
+--     @VK_EXT_fragment_density_map_offset@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     620
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Ratified
+--
+-- [__Extension and Version Dependencies__]
+--         
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--          or
+--         
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_fragment_density_map VK_EXT_fragment_density_map>
+--     and
+--         
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_create_renderpass2 VK_KHR_create_renderpass2>
+--          or
+--         
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.2 Vulkan Version 1.2>
+--     and
+--         
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3 Vulkan Version 1.3>
+--          or
+--         
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering VK_KHR_dynamic_rendering>
+--
+-- [__Contact__]
+--
+--     -   Connor Abbott
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_fragment_density_map_offset] @cwabbott0%0A*Here describe the issue or question you have about the VK_EXT_fragment_density_map_offset extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_EXT_fragment_density_map_offset.adoc VK_EXT_fragment_density_map_offset>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2025-02-14
+--
+-- [__Contributors__]
+--
+--     -   Connor Abbott, Valve Corporation
+--
+--     -   Matthew Netsch, Qualcomm Technologies, Inc.
+--
+--     -   Jonathan Wicks, Qualcomm Technologies, Inc.
+--
+--     -   Jonathan Tinkham, Qualcomm Technologies, Inc.
+--
+--     -   Jeff Leger, Qualcomm Technologies, Inc.
+--
+--     -   Manan Katwala, Qualcomm Technologies, Inc.
+--
+--     -   Mike Blumenkrantz, Valve Corporation
+--
+-- == Description
+--
+-- This extension allows an application to specify offsets to a fragment
+-- density map attachment, changing the framebuffer location where density
+-- values are applied to without having to regenerate the fragment density
+-- map.
+--
+-- == New Commands
+--
+-- -   'cmdEndRendering2EXT'
+--
+-- == New Structures
+--
+-- -   'RenderingEndInfoEXT'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT'
+--
+-- -   Extending
+--     'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.SubpassEndInfo',
+--     'Vulkan.Extensions.VK_KHR_maintenance10.RenderingEndInfoKHR':
+--
+--     -   'RenderPassFragmentDensityMapOffsetEndInfoEXT'
+--
+-- == New Enum Constants
+--
+-- -   'EXT_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME'
+--
+-- -   'EXT_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.ImageCreateFlagBits':
+--
+--     -   'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_EXT'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_EXT'
+--
+--     -   'STRUCTURE_TYPE_RENDERING_END_INFO_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_EXT'
+--
+-- == Version History
+--
+-- -   Revision 1, 2025-02-14 (Connor Abbott)
+--
+--     -   Initial version
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_fragment_density_map_offset 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_fragment_density_map_offset  ( PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT
+                                                             , PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT
+                                                             , RenderPassFragmentDensityMapOffsetEndInfoEXT
+                                                             ) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT
+
+instance ToCStruct PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT
+instance Show PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT
+
+instance FromCStruct PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT
+
+
+data PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT
+
+instance ToCStruct PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT
+instance Show PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT
+
+instance FromCStruct PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT
+
+
+data RenderPassFragmentDensityMapOffsetEndInfoEXT
+
+instance ToCStruct RenderPassFragmentDensityMapOffsetEndInfoEXT
+instance Show RenderPassFragmentDensityMapOffsetEndInfoEXT
+
+instance FromCStruct RenderPassFragmentDensityMapOffsetEndInfoEXT
+
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
@@ -104,11 +104,11 @@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-FragmentShaderSampleInterlockEXT FragmentShaderInterlockEXT>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-FragmentShaderSampleInterlockEXT FragmentShaderInterlockEXT>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-FragmentShaderPixelInterlockEXT FragmentShaderPixelInterlockEXT>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-FragmentShaderPixelInterlockEXT FragmentShaderPixelInterlockEXT>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-FragmentShaderShadingRateInterlockEXT FragmentShaderShadingRateInterlockEXT>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-FragmentShaderShadingRateInterlockEXT FragmentShaderShadingRateInterlockEXT>
 --
 -- == Version History
 --
@@ -123,7 +123,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_fragment_shader_interlock Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -172,11 +172,21 @@
 -- structure passed to
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
 -- it is filled in to indicate whether each corresponding feature is
--- supported. 'PhysicalDeviceFragmentShaderInterlockFeaturesEXT' /can/ also
--- be used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo'
--- to selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceFragmentShaderInterlockFeaturesEXT', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
 --
 -- = See Also
 --
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
@@ -104,11 +104,11 @@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-FragmentShaderSampleInterlockEXT FragmentShaderInterlockEXT>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-FragmentShaderSampleInterlockEXT FragmentShaderInterlockEXT>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-FragmentShaderPixelInterlockEXT FragmentShaderPixelInterlockEXT>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-FragmentShaderPixelInterlockEXT FragmentShaderPixelInterlockEXT>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-FragmentShaderShadingRateInterlockEXT FragmentShaderShadingRateInterlockEXT>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-FragmentShaderShadingRateInterlockEXT FragmentShaderShadingRateInterlockEXT>
 --
 -- == Version History
 --
@@ -123,7 +123,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_fragment_shader_interlock Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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_frame_boundary.hs b/src/Vulkan/Extensions/VK_EXT_frame_boundary.hs
--- a/src/Vulkan/Extensions/VK_EXT_frame_boundary.hs
+++ b/src/Vulkan/Extensions/VK_EXT_frame_boundary.hs
@@ -21,7 +21,9 @@
 --     Ratified
 --
 -- [__Extension and Version Dependencies__]
---     None
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
 --
 -- [__Contact__]
 --
@@ -112,7 +114,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_frame_boundary Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_frame_boundary Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -189,7 +191,7 @@
 -- The application /can/ associate frame boundary information to a queue
 -- submission call by adding a 'FrameBoundaryEXT' structure to the @pNext@
 -- chain of
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-submission queue submission>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#devsandqueues-submission queue submission>,
 -- 'Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR', or
 -- 'Vulkan.Core10.SparseResourceMemoryManagement.BindSparseInfo'.
 --
@@ -205,7 +207,7 @@
 -- identifiers between frames.
 --
 -- The @pImages@ and @pBuffers@ arrays contain a list of images and buffers
--- which store the \"end result\" of the frame. As the concept of frame is
+-- which store the “end result” of the frame. As the concept of frame is
 -- application-dependent, not all frames /may/ produce their results in
 -- images or buffers, yet this is a sufficiently common case to be handled
 -- by 'FrameBoundaryEXT'. Note that no extra information, such as image
@@ -247,6 +249,18 @@
 --     non-ignored parameters /must/ have been created, allocated, or
 --     retrieved from the same 'Vulkan.Core10.Handles.Device'
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.SparseResourceMemoryManagement.BindSparseInfo'
+--
+--     -   'Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR'
+--
+--     -   'Vulkan.Core10.Queue.SubmitInfo'
+--
+--     -   'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.SubmitInfo2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_frame_boundary VK_EXT_frame_boundary>,
@@ -385,12 +399,22 @@
 -- 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. 'PhysicalDeviceFrameBoundaryFeaturesEXT' /can/ also be used
--- in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceFrameBoundaryFeaturesEXT', it /must/ add an instance of
+-- the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_frame_boundary VK_EXT_frame_boundary>,
@@ -443,6 +467,13 @@
 -- | VkFrameBoundaryFlagBitsEXT - Bitmask specifying whether a queue
 -- submission is the last one for a given frame
 --
+-- = Description
+--
+-- -   'FRAME_BOUNDARY_FRAME_END_BIT_EXT' specifies that this queue
+--     submission is the last one for this frame, i.e. once this queue
+--     submission has terminated, then the work for this frame is
+--     completed.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_frame_boundary VK_EXT_frame_boundary>,
@@ -450,9 +481,7 @@
 newtype FrameBoundaryFlagBitsEXT = FrameBoundaryFlagBitsEXT Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'FRAME_BOUNDARY_FRAME_END_BIT_EXT' specifies that this queue submission
--- is the last one for this frame, i.e. once this queue submission has
--- terminated, then the work for this frame is completed.
+-- No documentation found for Nested "VkFrameBoundaryFlagBitsEXT" "VK_FRAME_BOUNDARY_FRAME_END_BIT_EXT"
 pattern FRAME_BOUNDARY_FRAME_END_BIT_EXT = FrameBoundaryFlagBitsEXT 0x00000001
 
 conNameFrameBoundaryFlagBitsEXT :: String
diff --git a/src/Vulkan/Extensions/VK_EXT_frame_boundary.hs-boot b/src/Vulkan/Extensions/VK_EXT_frame_boundary.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_frame_boundary.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_frame_boundary.hs-boot
@@ -21,7 +21,9 @@
 --     Ratified
 --
 -- [__Extension and Version Dependencies__]
---     None
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
 --
 -- [__Contact__]
 --
@@ -112,7 +114,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_frame_boundary Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_frame_boundary Vulkan Specification>.
 --
 -- This 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
@@ -255,7 +255,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_full_screen_exclusive Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -425,18 +425,22 @@
 --
 -- [<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.SUCCESS'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_SURFACE_LOST_KHR'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_full_screen_exclusive VK_EXT_full_screen_exclusive>,
@@ -511,12 +515,16 @@
 --
 -- [<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_OUT_OF_HOST_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_SURFACE_LOST_KHR'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_full_screen_exclusive VK_EXT_full_screen_exclusive>,
@@ -599,14 +607,18 @@
 --
 -- [<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_INITIALIZATION_FAILED'
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_INITIALIZATION_FAILED'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_SURFACE_LOST_KHR'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_full_screen_exclusive VK_EXT_full_screen_exclusive>,
@@ -676,12 +688,16 @@
 --
 -- [<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_OUT_OF_HOST_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_SURFACE_LOST_KHR'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_full_screen_exclusive VK_EXT_full_screen_exclusive>,
@@ -731,8 +747,14 @@
 -- If this structure is not present, @fullScreenExclusive@ is considered to
 -- be 'FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.PhysicalDeviceSurfaceInfo2KHR'
+--
+--     -   'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_full_screen_exclusive VK_EXT_full_screen_exclusive>,
@@ -799,8 +821,14 @@
 -- APIs. Such changes /may/ alter the surface capabilities reported for the
 -- created surface.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.PhysicalDeviceSurfaceInfo2KHR'
+--
+--     -   'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_full_screen_exclusive VK_EXT_full_screen_exclusive>,
@@ -868,15 +896,20 @@
 -- @fullScreenExclusiveSupported@ is
 -- 'Vulkan.Core10.FundamentalTypes.FALSE'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.SurfaceCapabilities2KHR'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_full_screen_exclusive VK_EXT_full_screen_exclusive>,
 -- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data SurfaceCapabilitiesFullScreenExclusiveEXT = SurfaceCapabilitiesFullScreenExclusiveEXT
-  { -- No documentation found for Nested "VkSurfaceCapabilitiesFullScreenExclusiveEXT" "fullScreenExclusiveSupported"
+  { -- | @fullScreenExclusiveSupported@ is a boolean describing whether the
+    -- surface is able to make use of exclusive full-screen access.
     fullScreenExclusiveSupported :: Bool }
   deriving (Typeable, Eq)
 #if defined(GENERIC_INSTANCES)
@@ -919,6 +952,28 @@
 -- | VkFullScreenExclusiveEXT - Hint values an application can specify
 -- affecting full-screen transition behavior
 --
+-- = Description
+--
+-- -   'FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT' specifies that the
+--     implementation /should/ determine the appropriate full-screen method
+--     by whatever means it deems appropriate.
+--
+-- -   'FULL_SCREEN_EXCLUSIVE_ALLOWED_EXT' specifies that the
+--     implementation /may/ use full-screen exclusive mechanisms when
+--     available. Such mechanisms /may/ result in better performance
+--     and\/or the availability of different presentation capabilities, but
+--     /may/ require a more disruptive transition during swapchain
+--     initialization, first presentation and\/or destruction.
+--
+-- -   'FULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT' specifies that the
+--     implementation /should/ avoid using full-screen mechanisms which
+--     rely on disruptive transitions.
+--
+-- -   'FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT' specifies that
+--     the application will manage full-screen exclusive mode by using the
+--     'acquireFullScreenExclusiveModeEXT' and
+--     'releaseFullScreenExclusiveModeEXT' commands.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_full_screen_exclusive VK_EXT_full_screen_exclusive>,
@@ -926,28 +981,16 @@
 newtype FullScreenExclusiveEXT = FullScreenExclusiveEXT Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT' specifies that the implementation
--- /should/ determine the appropriate full-screen method by whatever means
--- it deems appropriate.
+-- No documentation found for Nested "VkFullScreenExclusiveEXT" "VK_FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT"
 pattern FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT = FullScreenExclusiveEXT 0
 
--- | 'FULL_SCREEN_EXCLUSIVE_ALLOWED_EXT' specifies that the implementation
--- /may/ use full-screen exclusive mechanisms when available. Such
--- mechanisms /may/ result in better performance and\/or the availability
--- of different presentation capabilities, but /may/ require a more
--- disruptive transition during swapchain initialization, first
--- presentation and\/or destruction.
+-- No documentation found for Nested "VkFullScreenExclusiveEXT" "VK_FULL_SCREEN_EXCLUSIVE_ALLOWED_EXT"
 pattern FULL_SCREEN_EXCLUSIVE_ALLOWED_EXT = FullScreenExclusiveEXT 1
 
--- | 'FULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT' specifies that the implementation
--- /should/ avoid using full-screen mechanisms which rely on disruptive
--- transitions.
+-- No documentation found for Nested "VkFullScreenExclusiveEXT" "VK_FULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT"
 pattern FULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT = FullScreenExclusiveEXT 2
 
--- | 'FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT' specifies that the
--- application will manage full-screen exclusive mode by using the
--- 'acquireFullScreenExclusiveModeEXT' and
--- 'releaseFullScreenExclusiveModeEXT' commands.
+-- No documentation found for Nested "VkFullScreenExclusiveEXT" "VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT"
 pattern FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT = FullScreenExclusiveEXT 3
 
 {-# COMPLETE
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
@@ -255,7 +255,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_full_screen_exclusive Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -29,6 +29,9 @@
 --         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_global_priority VK_KHR_global_priority>
 --         extension
 --
+--         -   Which in turn was /promoted/ to
+--             <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.4-promotions Vulkan 1.4>
+--
 -- [__Contact__]
 --
 --     -   Andres Rodriguez
@@ -58,7 +61,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
--- 'Vulkan.Extensions.VK_KHR_global_priority.QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT'.
+-- 'QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT'.
 --
 -- The driver implementation will attempt to skew hardware resource
 -- allocation in favor of the higher-priority task. Therefore,
@@ -73,9 +76,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
--- ('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.
+-- ('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
@@ -98,6 +101,17 @@
 --
 -- -   'EXT_GLOBAL_PRIORITY_SPEC_VERSION'
 --
+-- -   Extending
+--     'Vulkan.Core14.Enums.QueueGlobalPriority.QueueGlobalPriority':
+--
+--     -   'QUEUE_GLOBAL_PRIORITY_HIGH_EXT'
+--
+--     -   'QUEUE_GLOBAL_PRIORITY_LOW_EXT'
+--
+--     -   'QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT'
+--
+--     -   'QUEUE_GLOBAL_PRIORITY_REALTIME_EXT'
+--
 -- -   Extending 'Vulkan.Core10.Enums.Result.Result':
 --
 --     -   'ERROR_NOT_PERMITTED_EXT'
@@ -123,43 +137,63 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_global_priority Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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  ( pattern STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT
                                                  , pattern ERROR_NOT_PERMITTED_EXT
+                                                 , pattern QUEUE_GLOBAL_PRIORITY_LOW_EXT
+                                                 , pattern QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT
+                                                 , pattern QUEUE_GLOBAL_PRIORITY_HIGH_EXT
+                                                 , pattern QUEUE_GLOBAL_PRIORITY_REALTIME_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 Data.String (IsString)
-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(..))
+import Vulkan.Core14.Promoted_From_VK_KHR_global_priority (DeviceQueueGlobalPriorityCreateInfo)
+import Vulkan.Core14.Enums.QueueGlobalPriority (QueueGlobalPriority)
+import Vulkan.Core10.Enums.Result (Result(ERROR_NOT_PERMITTED))
+import Vulkan.Core14.Enums.QueueGlobalPriority (QueueGlobalPriority(QUEUE_GLOBAL_PRIORITY_HIGH))
+import Vulkan.Core14.Enums.QueueGlobalPriority (QueueGlobalPriority(QUEUE_GLOBAL_PRIORITY_LOW))
+import Vulkan.Core14.Enums.QueueGlobalPriority (QueueGlobalPriority(QUEUE_GLOBAL_PRIORITY_MEDIUM))
+import Vulkan.Core14.Enums.QueueGlobalPriority (QueueGlobalPriority(QUEUE_GLOBAL_PRIORITY_REALTIME))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO))
 -- 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
+pattern STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT = STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO
 
 
 -- No documentation found for TopLevel "VK_ERROR_NOT_PERMITTED_EXT"
-pattern ERROR_NOT_PERMITTED_EXT = ERROR_NOT_PERMITTED_KHR
+pattern ERROR_NOT_PERMITTED_EXT = ERROR_NOT_PERMITTED
 
 
+-- No documentation found for TopLevel "VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT"
+pattern QUEUE_GLOBAL_PRIORITY_LOW_EXT = QUEUE_GLOBAL_PRIORITY_LOW
+
+
+-- No documentation found for TopLevel "VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT"
+pattern QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT = QUEUE_GLOBAL_PRIORITY_MEDIUM
+
+
+-- No documentation found for TopLevel "VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT"
+pattern QUEUE_GLOBAL_PRIORITY_HIGH_EXT = QUEUE_GLOBAL_PRIORITY_HIGH
+
+
+-- No documentation found for TopLevel "VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT"
+pattern QUEUE_GLOBAL_PRIORITY_REALTIME_EXT = QUEUE_GLOBAL_PRIORITY_REALTIME
+
+
 -- No documentation found for TopLevel "VkQueueGlobalPriorityEXT"
-type QueueGlobalPriorityEXT = QueueGlobalPriorityKHR
+type QueueGlobalPriorityEXT = QueueGlobalPriority
 
 
 -- No documentation found for TopLevel "VkDeviceQueueGlobalPriorityCreateInfoEXT"
-type DeviceQueueGlobalPriorityCreateInfoEXT = DeviceQueueGlobalPriorityCreateInfoKHR
+type DeviceQueueGlobalPriorityCreateInfoEXT = DeviceQueueGlobalPriorityCreateInfo
 
 
 type EXT_GLOBAL_PRIORITY_SPEC_VERSION = 2
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
@@ -35,10 +35,13 @@
 --         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_global_priority VK_KHR_global_priority>
 --         extension
 --
+--         -   Which in turn was /promoted/ to
+--             <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.4-promotions Vulkan 1.4>
+--
 -- [__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* >
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_global_priority_query] @zzyiwei%0A*Here describe the issue or question you have about the VK_EXT_global_priority_query extension* >
 --
 -- == Other Extension Metadata
 --
@@ -82,7 +85,7 @@
 --
 -- -   'EXT_GLOBAL_PRIORITY_QUERY_SPEC_VERSION'
 --
--- -   'Vulkan.Core10.APIConstants.MAX_GLOBAL_PRIORITY_SIZE_EXT'
+-- -   'MAX_GLOBAL_PRIORITY_SIZE_EXT'
 --
 -- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
 --
@@ -121,7 +124,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_global_priority_query Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -134,42 +137,32 @@
                                                        , pattern EXT_GLOBAL_PRIORITY_QUERY_SPEC_VERSION
                                                        , EXT_GLOBAL_PRIORITY_QUERY_EXTENSION_NAME
                                                        , pattern EXT_GLOBAL_PRIORITY_QUERY_EXTENSION_NAME
-                                                       , PhysicalDeviceGlobalPriorityQueryFeaturesKHR(..)
-                                                       , QueueFamilyGlobalPriorityPropertiesKHR(..)
-                                                       , QueueGlobalPriorityKHR(..)
-                                                       , MAX_GLOBAL_PRIORITY_SIZE_KHR
-                                                       , pattern MAX_GLOBAL_PRIORITY_SIZE_KHR
                                                        ) where
 
 import Data.String (IsString)
-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)
+import Vulkan.Core14.Promoted_From_VK_KHR_global_priority (PhysicalDeviceGlobalPriorityQueryFeatures)
+import Vulkan.Core14.Promoted_From_VK_KHR_global_priority (QueueFamilyGlobalPriorityProperties)
+import Vulkan.Core10.APIConstants (pattern MAX_GLOBAL_PRIORITY_SIZE)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES))
 -- 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
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_EXT = STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES
 
 
 -- 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
+pattern STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_EXT = STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES
 
 
 -- No documentation found for TopLevel "VK_MAX_GLOBAL_PRIORITY_SIZE_EXT"
-pattern MAX_GLOBAL_PRIORITY_SIZE_EXT = MAX_GLOBAL_PRIORITY_SIZE_KHR
+pattern MAX_GLOBAL_PRIORITY_SIZE_EXT = MAX_GLOBAL_PRIORITY_SIZE
 
 
 -- No documentation found for TopLevel "VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT"
-type PhysicalDeviceGlobalPriorityQueryFeaturesEXT = PhysicalDeviceGlobalPriorityQueryFeaturesKHR
+type PhysicalDeviceGlobalPriorityQueryFeaturesEXT = PhysicalDeviceGlobalPriorityQueryFeatures
 
 
 -- No documentation found for TopLevel "VkQueueFamilyGlobalPriorityPropertiesEXT"
-type QueueFamilyGlobalPriorityPropertiesEXT = QueueFamilyGlobalPriorityPropertiesKHR
+type QueueFamilyGlobalPriorityPropertiesEXT = QueueFamilyGlobalPriorityProperties
 
 
 type EXT_GLOBAL_PRIORITY_QUERY_SPEC_VERSION = 1
diff --git a/src/Vulkan/Extensions/VK_EXT_graphics_pipeline_library.hs b/src/Vulkan/Extensions/VK_EXT_graphics_pipeline_library.hs
--- a/src/Vulkan/Extensions/VK_EXT_graphics_pipeline_library.hs
+++ b/src/Vulkan/Extensions/VK_EXT_graphics_pipeline_library.hs
@@ -18,7 +18,7 @@
 --     1
 --
 -- [__Ratification Status__]
---     Not ratified
+--     Ratified
 --
 -- [__Extension and Version Dependencies__]
 --         
@@ -81,7 +81,8 @@
 --
 -- == New Structures
 --
--- -   Extending 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo':
+-- -   Extending
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo':
 --
 --     -   'GraphicsPipelineLibraryCreateInfoEXT'
 --
@@ -145,7 +146,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_graphics_pipeline_library Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_graphics_pipeline_library Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -214,12 +215,22 @@
 -- 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. 'PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT' /can/ also
--- be used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo'
--- to selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_graphics_pipeline_library VK_EXT_graphics_pipeline_library>,
@@ -228,7 +239,7 @@
 data PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT = PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT
   { -- | #features-graphicsPipelineLibrary# @graphicsPipelineLibrary@ indicates
     -- that the implementation supports
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-library graphics pipeline libraries>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-library graphics pipeline libraries>.
     graphicsPipelineLibrary :: Bool }
   deriving (Typeable, Eq)
 #if defined(GENERIC_INSTANCES)
@@ -281,8 +292,12 @@
 -- it is filled in with each corresponding implementation-dependent
 -- property.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_graphics_pipeline_library VK_EXT_graphics_pipeline_library>,
@@ -357,26 +372,33 @@
 -- = Description
 --
 -- If a 'GraphicsPipelineLibraryCreateInfoEXT' structure is included in the
--- @pNext@ chain of 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo', it
+-- @pNext@ chain of
+-- 'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo', it
 -- specifies the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets subsets of the graphics pipeline>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets subsets of the graphics pipeline>
 -- being created, excluding any subsets from linked pipeline libraries. If
 -- the pipeline is created with pipeline libraries, state from those
 -- libraries is aggregated with said subset.
 --
 -- If this structure is omitted, and either
--- 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@flags@ includes
+-- 'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'::@flags@
+-- includes
 -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR'
--- or the 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@pNext@
+-- or the
+-- 'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'::@pNext@
 -- chain includes a
 -- 'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'
 -- structure with a @libraryCount@ greater than @0@, it is as if @flags@ is
 -- @0@. Otherwise if this structure is omitted, it is as if @flags@
 -- includes all possible subsets of the graphics pipeline (i.e. a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-complete complete graphics pipeline>).
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-complete complete graphics pipeline>).
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_graphics_pipeline_library VK_EXT_graphics_pipeline_library>,
@@ -436,6 +458,24 @@
 -- | VkGraphicsPipelineLibraryFlagBitsEXT - Bitmask specifying the subset of
 -- a graphics pipeline to compile
 --
+-- = Description
+--
+-- -   'GRAPHICS_PIPELINE_LIBRARY_VERTEX_INPUT_INTERFACE_BIT_EXT' specifies
+--     that a pipeline will include
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-vertex-input vertex input interface state>.
+--
+-- -   'GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT'
+--     specifies that a pipeline will include
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>.
+--
+-- -   'GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT' specifies that a
+--     pipeline will include
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>.
+--
+-- -   'GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT'
+--     specifies that a pipeline will include
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_graphics_pipeline_library VK_EXT_graphics_pipeline_library>,
@@ -443,24 +483,16 @@
 newtype GraphicsPipelineLibraryFlagBitsEXT = GraphicsPipelineLibraryFlagBitsEXT Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'GRAPHICS_PIPELINE_LIBRARY_VERTEX_INPUT_INTERFACE_BIT_EXT' specifies
--- that a pipeline will include
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-vertex-input vertex input interface state>.
+-- No documentation found for Nested "VkGraphicsPipelineLibraryFlagBitsEXT" "VK_GRAPHICS_PIPELINE_LIBRARY_VERTEX_INPUT_INTERFACE_BIT_EXT"
 pattern GRAPHICS_PIPELINE_LIBRARY_VERTEX_INPUT_INTERFACE_BIT_EXT = GraphicsPipelineLibraryFlagBitsEXT 0x00000001
 
--- | 'GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT' specifies
--- that a pipeline will include
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>.
+-- No documentation found for Nested "VkGraphicsPipelineLibraryFlagBitsEXT" "VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT"
 pattern GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT = GraphicsPipelineLibraryFlagBitsEXT 0x00000002
 
--- | 'GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT' specifies that a
--- pipeline will include
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-shader fragment shader state>.
+-- No documentation found for Nested "VkGraphicsPipelineLibraryFlagBitsEXT" "VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT"
 pattern GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT = GraphicsPipelineLibraryFlagBitsEXT 0x00000004
 
--- | 'GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT' specifies
--- that a pipeline will include
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-fragment-output fragment output interface state>.
+-- No documentation found for Nested "VkGraphicsPipelineLibraryFlagBitsEXT" "VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT"
 pattern GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT = GraphicsPipelineLibraryFlagBitsEXT 0x00000008
 
 conNameGraphicsPipelineLibraryFlagBitsEXT :: String
diff --git a/src/Vulkan/Extensions/VK_EXT_graphics_pipeline_library.hs-boot b/src/Vulkan/Extensions/VK_EXT_graphics_pipeline_library.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_graphics_pipeline_library.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_graphics_pipeline_library.hs-boot
@@ -18,7 +18,7 @@
 --     1
 --
 -- [__Ratification Status__]
---     Not ratified
+--     Ratified
 --
 -- [__Extension and Version Dependencies__]
 --         
@@ -81,7 +81,8 @@
 --
 -- == New Structures
 --
--- -   Extending 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo':
+-- -   Extending
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo':
 --
 --     -   'GraphicsPipelineLibraryCreateInfoEXT'
 --
@@ -145,7 +146,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_graphics_pipeline_library Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_graphics_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_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
@@ -117,8 +117,7 @@
 --
 -- -   Revision 3, 2024-03-26 (Tobias Hector & Sebastian Wick)
 --
---     -   Clarifications and removal of erroneous \"reference monitor\"
---         term
+--     -   Clarifications and removal of erroneous “reference monitor” term
 --
 -- == See Also
 --
@@ -127,7 +126,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_hdr_metadata Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -240,6 +239,11 @@
 --     @pSwapchains@ /must/ have been created, allocated, or retrieved from
 --     @device@
 --
+-- == Host Synchronization
+--
+-- -   Host access to each member of @pSwapchains@ /must/ be externally
+--     synchronized
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_hdr_metadata VK_EXT_hdr_metadata>,
@@ -352,7 +356,7 @@
 --     'Vulkan.Extensions.VK_HUAWEI_hdr_vivid.HdrVividDynamicMetadataHUAWEI'
 --
 -- -   #VUID-VkHdrMetadataEXT-sType-unique# The @sType@ value of each
---     struct in the @pNext@ chain /must/ be unique
+--     structure in the @pNext@ chain /must/ be unique
 --
 -- = See Also
 --
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
@@ -117,8 +117,7 @@
 --
 -- -   Revision 3, 2024-03-26 (Tobias Hector & Sebastian Wick)
 --
---     -   Clarifications and removal of erroneous \"reference monitor\"
---         term
+--     -   Clarifications and removal of erroneous “reference monitor” term
 --
 -- == See Also
 --
@@ -127,7 +126,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_hdr_metadata Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -59,7 +59,7 @@
 -- customizable set of restrictions and features of a presentation engine.
 -- This makes it a useful portable test target for applications targeting a
 -- wide range of presentation engines where the actual target presentation
--- engines might be scarce, unavailable or otherwise undesirable or
+-- engines might be scarce, unavailable, or otherwise undesirable or
 -- inconvenient to use for general Vulkan application development.
 --
 -- == New Commands
@@ -97,7 +97,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_headless_surface Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -206,10 +206,14 @@
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_headless_surface VK_EXT_headless_surface>,
@@ -225,7 +229,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>).
+                            -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>).
                             ("allocator" ::: Maybe AllocationCallbacks)
                          -> io (SurfaceKHR)
 createHeadlessSurfaceEXT instance'
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
@@ -59,7 +59,7 @@
 -- customizable set of restrictions and features of a presentation engine.
 -- This makes it a useful portable test target for applications targeting a
 -- wide range of presentation engines where the actual target presentation
--- engines might be scarce, unavailable or otherwise undesirable or
+-- engines might be scarce, unavailable, or otherwise undesirable or
 -- inconvenient to use for general Vulkan application development.
 --
 -- == New Commands
@@ -97,7 +97,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_headless_surface Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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_image_copy.hs b/src/Vulkan/Extensions/VK_EXT_host_image_copy.hs
--- a/src/Vulkan/Extensions/VK_EXT_host_image_copy.hs
+++ b/src/Vulkan/Extensions/VK_EXT_host_image_copy.hs
@@ -35,3052 +35,457 @@
 --     or
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3 Vulkan Version 1.3>
 --
--- [__Contact__]
---
---     -   Shahbaz Youssefi
---         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_host_image_copy] @syoussefi%0A*Here describe the issue or question you have about the VK_EXT_host_image_copy extension* >
---
--- [__Extension Proposal__]
---     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_EXT_host_image_copy.adoc VK_EXT_host_image_copy>
---
--- == Other Extension Metadata
---
--- [__Last Modified Date__]
---     2023-04-26
---
--- [__Contributors__]
---
---     -   Shahbaz Youssefi, Google
---
---     -   Faith Ekstrand, Collabora
---
---     -   Hans-Kristian Arntzen, Valve
---
---     -   Piers Daniell, NVIDIA
---
---     -   Jan-Harald Fredriksen, Arm
---
---     -   James Fitzpatrick, Imagination
---
---     -   Daniel Story, Nintendo
---
--- == Description
---
--- This extension allows applications to copy data between host memory and
--- images on the host processor, without staging the data through a
--- GPU-accessible buffer. This removes the need to allocate and manage the
--- buffer and its associated memory. On some architectures it may also
--- eliminate an extra copy operation. This extension additionally allows
--- applications to copy data between images on the host.
---
--- To support initializing a new image in preparation for a host copy, it
--- is now possible to transition a new image to
--- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL' or other
--- host-copyable layouts via 'transitionImageLayoutEXT'. Additionally, it
--- is possible to perform copies that preserve the swizzling layout of the
--- image by using the 'HOST_IMAGE_COPY_MEMCPY_EXT' flag. In that case, the
--- memory size needed for copies to or from a buffer can be retrieved by
--- chaining 'SubresourceHostMemcpySizeEXT' to @pLayout@ in
--- 'getImageSubresourceLayout2EXT'.
---
--- == New Commands
---
--- -   'copyImageToImageEXT'
---
--- -   'copyImageToMemoryEXT'
---
--- -   'copyMemoryToImageEXT'
---
--- -   'getImageSubresourceLayout2EXT'
---
--- -   'transitionImageLayoutEXT'
---
--- == New Structures
---
--- -   'CopyImageToImageInfoEXT'
---
--- -   'CopyImageToMemoryInfoEXT'
---
--- -   'CopyMemoryToImageInfoEXT'
---
--- -   'HostImageLayoutTransitionInfoEXT'
---
--- -   'ImageSubresource2EXT'
---
--- -   'ImageToMemoryCopyEXT'
---
--- -   'MemoryToImageCopyEXT'
---
--- -   'SubresourceLayout2EXT'
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.ImageFormatProperties2':
---
---     -   'HostImageCopyDevicePerformanceQueryEXT'
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
---     'Vulkan.Core10.Device.DeviceCreateInfo':
---
---     -   'PhysicalDeviceHostImageCopyFeaturesEXT'
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
---
---     -   'PhysicalDeviceHostImageCopyPropertiesEXT'
---
--- -   Extending
---     'Vulkan.Extensions.VK_KHR_maintenance5.SubresourceLayout2KHR':
---
---     -   'SubresourceHostMemcpySizeEXT'
---
--- == New Enums
---
--- -   'HostImageCopyFlagBitsEXT'
---
--- == New Bitmasks
---
--- -   'HostImageCopyFlagsEXT'
---
--- == New Enum Constants
---
--- -   'EXT_HOST_IMAGE_COPY_EXTENSION_NAME'
---
--- -   'EXT_HOST_IMAGE_COPY_SPEC_VERSION'
---
--- -   Extending
---     'Vulkan.Core13.Enums.FormatFeatureFlags2.FormatFeatureFlagBits2':
---
---     -   'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_HOST_IMAGE_TRANSFER_BIT_EXT'
---
--- -   Extending
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlagBits':
---
---     -   'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_HOST_TRANSFER_BIT_EXT'
---
--- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO_EXT'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO_EXT'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO_EXT'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY_EXT'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO_EXT'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY_EXT'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY_EXT'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES_EXT'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES_EXT'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE_EXT'
---
--- == Issues
---
--- 1) When uploading data to an image, the data is usually loaded from
--- disk. Why not have the application load the data directly into a
--- 'Vulkan.Core10.Handles.DeviceMemory' bound to a buffer (instead of host
--- memory), and use
--- 'Vulkan.Core10.CommandBufferBuilding.cmdCopyBufferToImage'? The same
--- could be done when downloading data from an image.
---
--- __RESOLVED__: This may not always be possible. Complicated Vulkan
--- applications such as game engines often have decoupled subsystems for
--- streaming data and rendering. It may be unreasonable to require the
--- streaming subsystem to coordinate with the rendering subsystem to
--- allocate memory on its behalf, especially as Vulkan may not be the only
--- API supported by the engine. In emulation layers, the image data is
--- necessarily provided by the application in host memory, so an
--- optimization as suggested is not possible. Most importantly, the device
--- memory may not be mappable by an application, but still accessible to
--- the driver.
---
--- 2) Are @optimalBufferCopyOffsetAlignment@ and
--- @optimalBufferCopyRowPitchAlignment@ applicable to host memory as well
--- with the functions introduced by this extension? Or should there be new
--- limits?
---
--- __RESOLVED__: No alignment requirements for the host memory pointer.
---
--- 3) Should there be granularity requirements for image offsets and
--- extents?
---
--- __RESOLVED__: No granularity requirements, i.e. a granularity of 1 pixel
--- (for non-compressed formats) and 1 texel block (for compressed formats)
--- is assumed.
---
--- 4) How should the application deal with layout transitions before or
--- after copying to or from images?
---
--- __RESOLVED__: An existing issue with linear images is that when
--- emulating other APIs, it is impossible to know when to transition them
--- as they are written to by the host and then used bindlessly. The copy
--- operations in this extension are affected by the same limitation. A new
--- command is thus introduced by this extension to address this problem by
--- allowing the host to perform an image layout transition between a
--- handful of layouts.
---
--- == Version History
---
--- -   Revision 0, 2021-01-20 (Faith Ekstrand)
---
---     -   Initial idea and xml
---
--- -   Revision 1, 2023-04-26 (Shahbaz Youssefi)
---
---     -   Initial revision
---
--- == See Also
---
--- No cross-references are available
---
--- == Document Notes
---
--- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_host_image_copy 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_host_image_copy  ( copyMemoryToImageEXT
-                                                 , copyImageToMemoryEXT
-                                                 , copyImageToImageEXT
-                                                 , transitionImageLayoutEXT
-                                                 , getImageSubresourceLayout2EXT
-                                                 , PhysicalDeviceHostImageCopyFeaturesEXT(..)
-                                                 , PhysicalDeviceHostImageCopyPropertiesEXT(..)
-                                                 , MemoryToImageCopyEXT(..)
-                                                 , ImageToMemoryCopyEXT(..)
-                                                 , CopyMemoryToImageInfoEXT(..)
-                                                 , CopyImageToMemoryInfoEXT(..)
-                                                 , CopyImageToImageInfoEXT(..)
-                                                 , HostImageLayoutTransitionInfoEXT(..)
-                                                 , SubresourceHostMemcpySizeEXT(..)
-                                                 , HostImageCopyDevicePerformanceQueryEXT(..)
-                                                 , HostImageCopyFlagsEXT
-                                                 , HostImageCopyFlagBitsEXT( HOST_IMAGE_COPY_MEMCPY_EXT
-                                                                           , ..
-                                                                           )
-                                                 , ImageSubresource2EXT
-                                                 , SubresourceLayout2EXT
-                                                 , EXT_HOST_IMAGE_COPY_SPEC_VERSION
-                                                 , pattern EXT_HOST_IMAGE_COPY_SPEC_VERSION
-                                                 , EXT_HOST_IMAGE_COPY_EXTENSION_NAME
-                                                 , pattern EXT_HOST_IMAGE_COPY_EXTENSION_NAME
-                                                 , ImageSubresource2KHR(..)
-                                                 , SubresourceLayout2KHR(..)
-                                                 , getImageSubresourceLayout2KHR
-                                                 ) where
-
-import Data.Bits (Bits)
-import Data.Bits (FiniteBits)
-import Vulkan.CStruct.Utils (FixedArray)
-import Vulkan.Internal.Utils (enumReadPrec)
-import Vulkan.Internal.Utils (enumShowsPrec)
-import Vulkan.Internal.Utils (traceAroundEvent)
-import Control.Monad (unless)
-import Control.Monad.IO.Class (liftIO)
-import Foreign.Marshal.Alloc (allocaBytes)
-import GHC.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 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.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 (Word8)
-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.Core10.FundamentalTypes (bool32ToBool)
-import Vulkan.Core10.FundamentalTypes (boolToBool32)
-import Vulkan.Extensions.VK_KHR_maintenance5 (getImageSubresourceLayout2KHR)
-import Vulkan.CStruct.Utils (peekByteStringFromSizedVectorPtr)
-import Vulkan.CStruct.Utils (pokeFixedLengthByteString)
-import Vulkan.NamedType ((:::))
-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(pVkCopyImageToImageEXT))
-import Vulkan.Dynamic (DeviceCmds(pVkCopyImageToMemoryEXT))
-import Vulkan.Dynamic (DeviceCmds(pVkCopyMemoryToImageEXT))
-import Vulkan.Dynamic (DeviceCmds(pVkTransitionImageLayoutEXT))
-import Vulkan.Core10.FundamentalTypes (DeviceSize)
-import Vulkan.Core10.Handles (Device_T)
-import Vulkan.Core10.FundamentalTypes (Extent3D)
-import Vulkan.Core10.FundamentalTypes (Flags)
-import Vulkan.Core10.Handles (Image)
-import Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2 (ImageCopy2)
-import Vulkan.Core10.Enums.ImageLayout (ImageLayout)
-import Vulkan.Extensions.VK_KHR_maintenance5 (ImageSubresource2KHR)
-import Vulkan.Core10.CommandBufferBuilding (ImageSubresourceLayers)
-import Vulkan.Core10.ImageView (ImageSubresourceRange)
-import Vulkan.Core10.FundamentalTypes (Offset3D)
-import Vulkan.Core10.Enums.Result (Result)
-import Vulkan.Core10.Enums.Result (Result(..))
-import Vulkan.Core10.Enums.StructureType (StructureType)
-import Vulkan.Extensions.VK_KHR_maintenance5 (SubresourceLayout2KHR)
-import Vulkan.Core10.APIConstants (UUID_SIZE)
-import Vulkan.Exception (VulkanException(..))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO_EXT))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO_EXT))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO_EXT))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY_EXT))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO_EXT))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY_EXT))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY_EXT))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES_EXT))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES_EXT))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE_EXT))
-import Vulkan.Core10.Enums.Result (Result(SUCCESS))
-import Vulkan.Extensions.VK_KHR_maintenance5 (getImageSubresourceLayout2KHR)
-import Vulkan.Extensions.VK_KHR_maintenance5 (ImageSubresource2KHR(..))
-import Vulkan.Extensions.VK_KHR_maintenance5 (SubresourceLayout2KHR(..))
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCopyMemoryToImageEXT
-  :: FunPtr (Ptr Device_T -> Ptr CopyMemoryToImageInfoEXT -> IO Result) -> Ptr Device_T -> Ptr CopyMemoryToImageInfoEXT -> IO Result
-
--- | vkCopyMemoryToImageEXT - Copy data from host memory into an image
---
--- = Description
---
--- This command is functionally similar to
--- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.cmdCopyBufferToImage2',
--- except it is executed on the host and reads from host memory instead of
--- a buffer. The memory of @pCopyMemoryToImageInfo->dstImage@ is accessed
--- by the host as if
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-coherent coherent>.
---
--- Because queue submissions
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-submission-host-writes automatically make host memory visible to the device>,
--- there would not be a need for a memory barrier before using the results
--- of this copy operation on the device.
---
--- == 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_INITIALIZATION_FAILED'
---
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
---
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
---
---     -   'Vulkan.Core10.Enums.Result.ERROR_MEMORY_MAP_FAILED'
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_host_image_copy VK_EXT_host_image_copy>,
--- 'CopyMemoryToImageInfoEXT', 'Vulkan.Core10.Handles.Device'
-copyMemoryToImageEXT :: forall io
-                      . (MonadIO io)
-                     => -- | @device@ is the device which owns @pCopyMemoryToImageInfo->dstImage@.
-                        --
-                        -- #VUID-vkCopyMemoryToImageEXT-device-parameter# @device@ /must/ be a
-                        -- valid 'Vulkan.Core10.Handles.Device' handle
-                        Device
-                     -> -- | @pCopyMemoryToImageInfo@ is a pointer to a 'CopyMemoryToImageInfoEXT'
-                        -- structure describing the copy parameters.
-                        --
-                        -- #VUID-vkCopyMemoryToImageEXT-pCopyMemoryToImageInfo-parameter#
-                        -- @pCopyMemoryToImageInfo@ /must/ be a valid pointer to a valid
-                        -- 'CopyMemoryToImageInfoEXT' structure
-                        CopyMemoryToImageInfoEXT
-                     -> io ()
-copyMemoryToImageEXT device copyMemoryToImageInfo = liftIO . evalContT $ do
-  let vkCopyMemoryToImageEXTPtr = pVkCopyMemoryToImageEXT (case device of Device{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCopyMemoryToImageEXTPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCopyMemoryToImageEXT is null" Nothing Nothing
-  let vkCopyMemoryToImageEXT' = mkVkCopyMemoryToImageEXT vkCopyMemoryToImageEXTPtr
-  pCopyMemoryToImageInfo <- ContT $ withCStruct (copyMemoryToImageInfo)
-  r <- lift $ traceAroundEvent "vkCopyMemoryToImageEXT" (vkCopyMemoryToImageEXT'
-                                                           (deviceHandle (device))
-                                                           pCopyMemoryToImageInfo)
-  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCopyImageToMemoryEXT
-  :: FunPtr (Ptr Device_T -> Ptr CopyImageToMemoryInfoEXT -> IO Result) -> Ptr Device_T -> Ptr CopyImageToMemoryInfoEXT -> IO Result
-
--- | vkCopyImageToMemoryEXT - Copy image data into host memory
---
--- = Description
---
--- This command is functionally similar to
--- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.cmdCopyImageToBuffer2',
--- except it is executed on the host and writes to host memory instead of a
--- buffer. The memory of @pCopyImageToMemoryInfo->srcImage@ is accessed by
--- the host as if
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-coherent coherent>.
---
--- If the device has written to the image memory, it is not automatically
--- made available to the host. Before this copy command can be called, a
--- memory barrier for this image /must/ have been issued on the device with
--- the second
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
--- including
--- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_HOST_BIT' and
--- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_HOST_READ_BIT'.
---
--- == 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_INITIALIZATION_FAILED'
---
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
---
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
---
---     -   'Vulkan.Core10.Enums.Result.ERROR_MEMORY_MAP_FAILED'
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_host_image_copy VK_EXT_host_image_copy>,
--- 'CopyImageToMemoryInfoEXT', 'Vulkan.Core10.Handles.Device'
-copyImageToMemoryEXT :: forall io
-                      . (MonadIO io)
-                     => -- | @device@ is the device which owns @pCopyImageToMemoryInfo->srcImage@.
-                        --
-                        -- #VUID-vkCopyImageToMemoryEXT-device-parameter# @device@ /must/ be a
-                        -- valid 'Vulkan.Core10.Handles.Device' handle
-                        Device
-                     -> -- | @pCopyImageToMemoryInfo@ is a pointer to a 'CopyImageToMemoryInfoEXT'
-                        -- structure describing the copy parameters.
-                        --
-                        -- #VUID-vkCopyImageToMemoryEXT-pCopyImageToMemoryInfo-parameter#
-                        -- @pCopyImageToMemoryInfo@ /must/ be a valid pointer to a valid
-                        -- 'CopyImageToMemoryInfoEXT' structure
-                        CopyImageToMemoryInfoEXT
-                     -> io ()
-copyImageToMemoryEXT device copyImageToMemoryInfo = liftIO . evalContT $ do
-  let vkCopyImageToMemoryEXTPtr = pVkCopyImageToMemoryEXT (case device of Device{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCopyImageToMemoryEXTPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCopyImageToMemoryEXT is null" Nothing Nothing
-  let vkCopyImageToMemoryEXT' = mkVkCopyImageToMemoryEXT vkCopyImageToMemoryEXTPtr
-  pCopyImageToMemoryInfo <- ContT $ withCStruct (copyImageToMemoryInfo)
-  r <- lift $ traceAroundEvent "vkCopyImageToMemoryEXT" (vkCopyImageToMemoryEXT'
-                                                           (deviceHandle (device))
-                                                           pCopyImageToMemoryInfo)
-  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCopyImageToImageEXT
-  :: FunPtr (Ptr Device_T -> Ptr CopyImageToImageInfoEXT -> IO Result) -> Ptr Device_T -> Ptr CopyImageToImageInfoEXT -> IO Result
-
--- | vkCopyImageToImageEXT - Copy image data using the host
---
--- = Description
---
--- This command is functionally similar to
--- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.cmdCopyImage2',
--- except it is executed on the host. The memory of
--- @pCopyImageToImageInfo->srcImage@ and @pCopyImageToImageInfo->dstImage@
--- is accessed by the host as if
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-coherent coherent>.
---
--- If the device has written to the memory of
--- @pCopyImageToImageInfo->srcImage@, it is not automatically made
--- available to the host. Before this copy command can be called, a memory
--- barrier for this image /must/ have been issued on the device with the
--- second
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
--- including
--- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_HOST_BIT' and
--- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_HOST_READ_BIT'.
---
--- Because queue submissions
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-submission-host-writes automatically make host memory visible to the device>,
--- there would not be a need for a memory barrier before using the results
--- of this copy operation in @pCopyMemoryToImageInfo->dstImage@ on the
--- device.
---
--- == 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_INITIALIZATION_FAILED'
---
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
---
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
---
---     -   'Vulkan.Core10.Enums.Result.ERROR_MEMORY_MAP_FAILED'
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_host_image_copy VK_EXT_host_image_copy>,
--- 'CopyImageToImageInfoEXT', 'Vulkan.Core10.Handles.Device'
-copyImageToImageEXT :: forall io
-                     . (MonadIO io)
-                    => -- | @device@ is the device which owns @pCopyImageToImageInfo->srcImage@ and
-                       -- @pCopyImageToImageInfo->dstImage@.
-                       --
-                       -- #VUID-vkCopyImageToImageEXT-device-parameter# @device@ /must/ be a valid
-                       -- 'Vulkan.Core10.Handles.Device' handle
-                       Device
-                    -> -- | @pCopyImageToImageInfo@ is a pointer to a 'CopyImageToImageInfoEXT'
-                       -- structure describing the copy parameters.
-                       --
-                       -- #VUID-vkCopyImageToImageEXT-pCopyImageToImageInfo-parameter#
-                       -- @pCopyImageToImageInfo@ /must/ be a valid pointer to a valid
-                       -- 'CopyImageToImageInfoEXT' structure
-                       CopyImageToImageInfoEXT
-                    -> io ()
-copyImageToImageEXT device copyImageToImageInfo = liftIO . evalContT $ do
-  let vkCopyImageToImageEXTPtr = pVkCopyImageToImageEXT (case device of Device{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCopyImageToImageEXTPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCopyImageToImageEXT is null" Nothing Nothing
-  let vkCopyImageToImageEXT' = mkVkCopyImageToImageEXT vkCopyImageToImageEXTPtr
-  pCopyImageToImageInfo <- ContT $ withCStruct (copyImageToImageInfo)
-  r <- lift $ traceAroundEvent "vkCopyImageToImageEXT" (vkCopyImageToImageEXT'
-                                                          (deviceHandle (device))
-                                                          pCopyImageToImageInfo)
-  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkTransitionImageLayoutEXT
-  :: FunPtr (Ptr Device_T -> Word32 -> Ptr HostImageLayoutTransitionInfoEXT -> IO Result) -> Ptr Device_T -> Word32 -> Ptr HostImageLayoutTransitionInfoEXT -> IO Result
-
--- | vkTransitionImageLayoutEXT - Perform an image layout transition on the
--- host
---
--- == 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_INITIALIZATION_FAILED'
---
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
---
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
---
---     -   'Vulkan.Core10.Enums.Result.ERROR_MEMORY_MAP_FAILED'
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_host_image_copy VK_EXT_host_image_copy>,
--- 'Vulkan.Core10.Handles.Device', 'HostImageLayoutTransitionInfoEXT'
-transitionImageLayoutEXT :: forall io
-                          . (MonadIO io)
-                         => -- | @device@ is the device which owns @pTransitions@[i].@image@.
-                            --
-                            -- #VUID-vkTransitionImageLayoutEXT-device-parameter# @device@ /must/ be a
-                            -- valid 'Vulkan.Core10.Handles.Device' handle
-                            Device
-                         -> -- | @pTransitions@ is a pointer to an array of
-                            -- 'HostImageLayoutTransitionInfoEXT' structures specifying the image and
-                            -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-views subresource ranges>
-                            -- within them to transition.
-                            --
-                            -- #VUID-vkTransitionImageLayoutEXT-pTransitions-parameter# @pTransitions@
-                            -- /must/ be a valid pointer to an array of @transitionCount@ valid
-                            -- 'HostImageLayoutTransitionInfoEXT' structures
-                            ("transitions" ::: Vector HostImageLayoutTransitionInfoEXT)
-                         -> io ()
-transitionImageLayoutEXT device transitions = liftIO . evalContT $ do
-  let vkTransitionImageLayoutEXTPtr = pVkTransitionImageLayoutEXT (case device of Device{deviceCmds} -> deviceCmds)
-  lift $ unless (vkTransitionImageLayoutEXTPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkTransitionImageLayoutEXT is null" Nothing Nothing
-  let vkTransitionImageLayoutEXT' = mkVkTransitionImageLayoutEXT vkTransitionImageLayoutEXTPtr
-  pPTransitions <- ContT $ allocaBytes @HostImageLayoutTransitionInfoEXT ((Data.Vector.length (transitions)) * 56)
-  lift $ Data.Vector.imapM_ (\i e -> poke (pPTransitions `plusPtr` (56 * (i)) :: Ptr HostImageLayoutTransitionInfoEXT) (e)) (transitions)
-  r <- lift $ traceAroundEvent "vkTransitionImageLayoutEXT" (vkTransitionImageLayoutEXT'
-                                                               (deviceHandle (device))
-                                                               ((fromIntegral (Data.Vector.length $ (transitions)) :: Word32))
-                                                               (pPTransitions))
-  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
-
-
--- No documentation found for TopLevel "vkGetImageSubresourceLayout2EXT"
-getImageSubresourceLayout2EXT = getImageSubresourceLayout2KHR
-
-
--- | VkPhysicalDeviceHostImageCopyFeaturesEXT - Structure indicating support
--- for copies to or from images from host memory
---
--- = Members
---
--- This structure describes the following feature:
---
--- = Description
---
--- If the 'PhysicalDeviceHostImageCopyFeaturesEXT' 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. 'PhysicalDeviceHostImageCopyFeaturesEXT' /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_host_image_copy VK_EXT_host_image_copy>,
--- 'Vulkan.Core10.FundamentalTypes.Bool32',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PhysicalDeviceHostImageCopyFeaturesEXT = PhysicalDeviceHostImageCopyFeaturesEXT
-  { -- | #features-hostImageCopy# @hostImageCopy@ indicates that the
-    -- implementation supports copying from host memory to images using the
-    -- 'copyMemoryToImageEXT' command, copying from images to host memory using
-    -- the 'copyImageToMemoryEXT' command, and copying between images using the
-    -- 'copyImageToImageEXT' command.
-    hostImageCopy :: Bool }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PhysicalDeviceHostImageCopyFeaturesEXT)
-#endif
-deriving instance Show PhysicalDeviceHostImageCopyFeaturesEXT
-
-instance ToCStruct PhysicalDeviceHostImageCopyFeaturesEXT where
-  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PhysicalDeviceHostImageCopyFeaturesEXT{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (hostImageCopy))
-    f
-  cStructSize = 24
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
-    f
-
-instance FromCStruct PhysicalDeviceHostImageCopyFeaturesEXT where
-  peekCStruct p = do
-    hostImageCopy <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
-    pure $ PhysicalDeviceHostImageCopyFeaturesEXT
-             (bool32ToBool hostImageCopy)
-
-instance Storable PhysicalDeviceHostImageCopyFeaturesEXT where
-  sizeOf ~_ = 24
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero PhysicalDeviceHostImageCopyFeaturesEXT where
-  zero = PhysicalDeviceHostImageCopyFeaturesEXT
-           zero
-
-
--- | VkPhysicalDeviceHostImageCopyPropertiesEXT - Structure enumerating image
--- layouts supported by an implementation for host memory copies
---
--- = Description
---
--- If the 'PhysicalDeviceHostImageCopyPropertiesEXT' 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 @pCopyDstLayouts@ is @NULL@, then the number of image layouts that
--- are supported in 'CopyMemoryToImageInfoEXT'::@dstImageLayout@ and
--- 'CopyImageToImageInfoEXT'::@dstImageLayout@ is returned in
--- @copyDstLayoutCount@. Otherwise, @copyDstLayoutCount@ /must/ be set by
--- the application to the number of elements in the @pCopyDstLayouts@
--- array, and on return the variable is overwritten with the number of
--- values actually written to @pCopyDstLayouts@. If the value of
--- @copyDstLayoutCount@ is less than the number of image layouts that are
--- supported, at most @copyDstLayoutCount@ values will be written to
--- @pCopyDstLayouts@. The implementation /must/ include the
--- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL' image layout in
--- @pCopyDstLayouts@.
---
--- If @pCopySrcLayouts@ is @NULL@, then the number of image layouts that
--- are supported in 'CopyImageToMemoryInfoEXT'::@srcImageLayout@ and
--- 'CopyImageToImageInfoEXT'::@srcImageLayout@ is returned in
--- @copySrcLayoutCount@. Otherwise, @copySrcLayoutCount@ /must/ be set by
--- the application to the number of elements in the @pCopySrcLayouts@
--- array, and on return the variable is overwritten with the number of
--- values actually written to @pCopySrcLayouts@. If the value of
--- @copySrcLayoutCount@ is less than the number of image layouts that are
--- supported, at most @copySrcLayoutCount@ values will be written to
--- @pCopySrcLayouts@. The implementation /must/ include the
--- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL' image layout in
--- @pCopySrcLayouts@.
---
--- The @optimalTilingLayoutUUID@ value can be used to ensure compatible
--- data layouts when using the 'HOST_IMAGE_COPY_MEMCPY_EXT' flag in
--- 'copyMemoryToImageEXT' and 'copyImageToMemoryEXT'.
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkPhysicalDeviceHostImageCopyPropertiesEXT-sType-sType#
---     @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES_EXT'
---
--- -   #VUID-VkPhysicalDeviceHostImageCopyPropertiesEXT-pCopySrcLayouts-parameter#
---     If @copySrcLayoutCount@ is not @0@, and @pCopySrcLayouts@ is not
---     @NULL@, @pCopySrcLayouts@ /must/ be a valid pointer to an array of
---     @copySrcLayoutCount@ 'Vulkan.Core10.Enums.ImageLayout.ImageLayout'
---     values
---
--- -   #VUID-VkPhysicalDeviceHostImageCopyPropertiesEXT-pCopyDstLayouts-parameter#
---     If @copyDstLayoutCount@ is not @0@, and @pCopyDstLayouts@ is not
---     @NULL@, @pCopyDstLayouts@ /must/ be a valid pointer to an array of
---     @copyDstLayoutCount@ 'Vulkan.Core10.Enums.ImageLayout.ImageLayout'
---     values
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_host_image_copy VK_EXT_host_image_copy>,
--- 'Vulkan.Core10.FundamentalTypes.Bool32',
--- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PhysicalDeviceHostImageCopyPropertiesEXT = PhysicalDeviceHostImageCopyPropertiesEXT
-  { -- | @copySrcLayoutCount@ is an integer related to the number of image
-    -- layouts for host copies from images available or queried, as described
-    -- below.
-    copySrcLayoutCount :: Word32
-  , -- | @pCopySrcLayouts@ is a pointer to an array of
-    -- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout' in which supported image
-    -- layouts for use with host copy operations from images are returned.
-    copySrcLayouts :: Ptr ImageLayout
-  , -- | @copyDstLayoutCount@ is an integer related to the number of image
-    -- layouts for host copies to images available or queried, as described
-    -- below.
-    copyDstLayoutCount :: Word32
-  , -- | @pCopyDstLayouts@ is a pointer to an array of
-    -- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout' in which supported image
-    -- layouts for use with host copy operations to images are returned.
-    copyDstLayouts :: Ptr ImageLayout
-  , -- | @optimalTilingLayoutUUID@ is an array of
-    -- 'Vulkan.Core10.APIConstants.UUID_SIZE' @uint8_t@ values representing a
-    -- universally unique identifier for the implementation’s swizzling layout
-    -- of images created with
-    -- 'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL'.
-    optimalTilingLayoutUUID :: ByteString
-  , -- | @identicalMemoryTypeRequirements@ indicates that specifying the
-    -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_HOST_TRANSFER_BIT_EXT'
-    -- flag in 'Vulkan.Core10.Image.ImageCreateInfo'::@usage@ does not affect
-    -- the memory type requirements of the image.
-    identicalMemoryTypeRequirements :: Bool
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PhysicalDeviceHostImageCopyPropertiesEXT)
-#endif
-deriving instance Show PhysicalDeviceHostImageCopyPropertiesEXT
-
-instance ToCStruct PhysicalDeviceHostImageCopyPropertiesEXT where
-  withCStruct x f = allocaBytes 72 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PhysicalDeviceHostImageCopyPropertiesEXT{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Word32)) (copySrcLayoutCount)
-    poke ((p `plusPtr` 24 :: Ptr (Ptr ImageLayout))) (copySrcLayouts)
-    poke ((p `plusPtr` 32 :: Ptr Word32)) (copyDstLayoutCount)
-    poke ((p `plusPtr` 40 :: Ptr (Ptr ImageLayout))) (copyDstLayouts)
-    pokeFixedLengthByteString ((p `plusPtr` 48 :: Ptr (FixedArray UUID_SIZE Word8))) (optimalTilingLayoutUUID)
-    poke ((p `plusPtr` 64 :: Ptr Bool32)) (boolToBool32 (identicalMemoryTypeRequirements))
-    f
-  cStructSize = 72
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 64 :: Ptr Bool32)) (boolToBool32 (zero))
-    f
-
-instance FromCStruct PhysicalDeviceHostImageCopyPropertiesEXT where
-  peekCStruct p = do
-    copySrcLayoutCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
-    pCopySrcLayouts <- peek @(Ptr ImageLayout) ((p `plusPtr` 24 :: Ptr (Ptr ImageLayout)))
-    copyDstLayoutCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))
-    pCopyDstLayouts <- peek @(Ptr ImageLayout) ((p `plusPtr` 40 :: Ptr (Ptr ImageLayout)))
-    optimalTilingLayoutUUID <- peekByteStringFromSizedVectorPtr ((p `plusPtr` 48 :: Ptr (FixedArray UUID_SIZE Word8)))
-    identicalMemoryTypeRequirements <- peek @Bool32 ((p `plusPtr` 64 :: Ptr Bool32))
-    pure $ PhysicalDeviceHostImageCopyPropertiesEXT
-             copySrcLayoutCount
-             pCopySrcLayouts
-             copyDstLayoutCount
-             pCopyDstLayouts
-             optimalTilingLayoutUUID
-             (bool32ToBool identicalMemoryTypeRequirements)
-
-instance Storable PhysicalDeviceHostImageCopyPropertiesEXT where
-  sizeOf ~_ = 72
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero PhysicalDeviceHostImageCopyPropertiesEXT where
-  zero = PhysicalDeviceHostImageCopyPropertiesEXT
-           zero
-           zero
-           zero
-           zero
-           mempty
-           zero
-
-
--- | VkMemoryToImageCopyEXT - Structure specifying a host memory to image
--- copy operation
---
--- = Description
---
--- This structure is functionally similar to
--- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.BufferImageCopy2',
--- except it defines host memory as the source of copy instead of a buffer.
--- In particular, the same data packing rules and restrictions as that
--- structure apply here as well.
---
--- == Valid Usage
---
--- -   #VUID-VkMemoryToImageCopyEXT-pHostPointer-09061# @pHostPointer@
---     /must/ point to memory that is large enough to contain all memory
---     locations that are accessed according to
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#copies-buffers-images-addressing Buffer and Image Addressing>,
---     for each element of @pRegions@
---
--- -   #VUID-VkMemoryToImageCopyEXT-pRegions-09062# 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-VkMemoryToImageCopyEXT-memoryRowLength-09101#
---     @memoryRowLength@ /must/ be @0@, or greater than or equal to the
---     @width@ member of @imageExtent@
---
--- -   #VUID-VkMemoryToImageCopyEXT-memoryImageHeight-09102#
---     @memoryImageHeight@ /must/ be @0@, or greater than or equal to the
---     @height@ member of @imageExtent@
---
--- -   #VUID-VkMemoryToImageCopyEXT-aspectMask-09103# The @aspectMask@
---     member of @imageSubresource@ /must/ only have a single bit set
---
--- -   #VUID-VkMemoryToImageCopyEXT-imageExtent-06659# @imageExtent.width@
---     /must/ not be 0
---
--- -   #VUID-VkMemoryToImageCopyEXT-imageExtent-06660# @imageExtent.height@
---     /must/ not be 0
---
--- -   #VUID-VkMemoryToImageCopyEXT-imageExtent-06661# @imageExtent.depth@
---     /must/ not be 0
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkMemoryToImageCopyEXT-sType-sType# @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY_EXT'
---
--- -   #VUID-VkMemoryToImageCopyEXT-pNext-pNext# @pNext@ /must/ be @NULL@
---
--- -   #VUID-VkMemoryToImageCopyEXT-pHostPointer-parameter# @pHostPointer@
---     /must/ be a pointer value
---
--- -   #VUID-VkMemoryToImageCopyEXT-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_EXT_host_image_copy VK_EXT_host_image_copy>,
--- 'CopyMemoryToImageInfoEXT', 'Vulkan.Core10.FundamentalTypes.Extent3D',
--- 'Vulkan.Core10.CommandBufferBuilding.ImageSubresourceLayers',
--- 'Vulkan.Core10.FundamentalTypes.Offset3D',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data MemoryToImageCopyEXT = MemoryToImageCopyEXT
-  { -- | @pHostPointer@ is the host memory address which is the source of the
-    -- copy.
-    hostPointer :: Ptr ()
-  , -- | @memoryRowLength@ and @memoryImageHeight@ specify in texels a subregion
-    -- of a larger two- or three-dimensional image in host memory, and control
-    -- the addressing calculations. If either of these values is zero, that
-    -- aspect of the host memory is considered to be tightly packed according
-    -- to the @imageExtent@.
-    memoryRowLength :: Word32
-  , -- No documentation found for Nested "VkMemoryToImageCopyEXT" "memoryImageHeight"
-    memoryImageHeight :: 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 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 (MemoryToImageCopyEXT)
-#endif
-deriving instance Show MemoryToImageCopyEXT
-
-instance ToCStruct MemoryToImageCopyEXT where
-  withCStruct x f = allocaBytes 72 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p MemoryToImageCopyEXT{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr (Ptr ()))) (hostPointer)
-    poke ((p `plusPtr` 24 :: Ptr Word32)) (memoryRowLength)
-    poke ((p `plusPtr` 28 :: Ptr Word32)) (memoryImageHeight)
-    poke ((p `plusPtr` 32 :: Ptr ImageSubresourceLayers)) (imageSubresource)
-    poke ((p `plusPtr` 48 :: Ptr Offset3D)) (imageOffset)
-    poke ((p `plusPtr` 60 :: Ptr Extent3D)) (imageExtent)
-    f
-  cStructSize = 72
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr (Ptr ()))) (zero)
-    poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 28 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 32 :: Ptr ImageSubresourceLayers)) (zero)
-    poke ((p `plusPtr` 48 :: Ptr Offset3D)) (zero)
-    poke ((p `plusPtr` 60 :: Ptr Extent3D)) (zero)
-    f
-
-instance FromCStruct MemoryToImageCopyEXT where
-  peekCStruct p = do
-    pHostPointer <- peek @(Ptr ()) ((p `plusPtr` 16 :: Ptr (Ptr ())))
-    memoryRowLength <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))
-    memoryImageHeight <- 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 $ MemoryToImageCopyEXT
-             pHostPointer
-             memoryRowLength
-             memoryImageHeight
-             imageSubresource
-             imageOffset
-             imageExtent
-
-instance Storable MemoryToImageCopyEXT where
-  sizeOf ~_ = 72
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero MemoryToImageCopyEXT where
-  zero = MemoryToImageCopyEXT
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-
-
--- | VkImageToMemoryCopyEXT - Structure specifying an image to host memory
--- copy operation
---
--- = Description
---
--- This structure is functionally similar to
--- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.BufferImageCopy2',
--- except it defines host memory as the target of copy instead of a buffer.
--- In particular, the same data packing rules and restrictions as that
--- structure apply here as well.
---
--- == Valid Usage
---
--- -   #VUID-VkImageToMemoryCopyEXT-pHostPointer-09066# @pHostPointer@
---     /must/ point to memory that is large enough to contain all memory
---     locations that are accessed according to
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#copies-buffers-images-addressing Buffer and Image Addressing>,
---     for each element of @pRegions@
---
--- -   #VUID-VkImageToMemoryCopyEXT-pRegions-09067# 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-VkImageToMemoryCopyEXT-memoryRowLength-09101#
---     @memoryRowLength@ /must/ be @0@, or greater than or equal to the
---     @width@ member of @imageExtent@
---
--- -   #VUID-VkImageToMemoryCopyEXT-memoryImageHeight-09102#
---     @memoryImageHeight@ /must/ be @0@, or greater than or equal to the
---     @height@ member of @imageExtent@
---
--- -   #VUID-VkImageToMemoryCopyEXT-aspectMask-09103# The @aspectMask@
---     member of @imageSubresource@ /must/ only have a single bit set
---
--- -   #VUID-VkImageToMemoryCopyEXT-imageExtent-06659# @imageExtent.width@
---     /must/ not be 0
---
--- -   #VUID-VkImageToMemoryCopyEXT-imageExtent-06660# @imageExtent.height@
---     /must/ not be 0
---
--- -   #VUID-VkImageToMemoryCopyEXT-imageExtent-06661# @imageExtent.depth@
---     /must/ not be 0
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkImageToMemoryCopyEXT-sType-sType# @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY_EXT'
---
--- -   #VUID-VkImageToMemoryCopyEXT-pNext-pNext# @pNext@ /must/ be @NULL@
---
--- -   #VUID-VkImageToMemoryCopyEXT-pHostPointer-parameter# @pHostPointer@
---     /must/ be a pointer value
---
--- -   #VUID-VkImageToMemoryCopyEXT-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_EXT_host_image_copy VK_EXT_host_image_copy>,
--- 'CopyImageToMemoryInfoEXT', 'Vulkan.Core10.FundamentalTypes.Extent3D',
--- 'Vulkan.Core10.CommandBufferBuilding.ImageSubresourceLayers',
--- 'Vulkan.Core10.FundamentalTypes.Offset3D',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data ImageToMemoryCopyEXT = ImageToMemoryCopyEXT
-  { -- | @pHostPointer@ is the host memory address which is the destination of
-    -- the copy.
-    hostPointer :: Ptr ()
-  , -- | @memoryRowLength@ and @memoryImageHeight@ specify in texels a subregion
-    -- of a larger two- or three-dimensional image in host memory, and control
-    -- the addressing calculations. If either of these values is zero, that
-    -- aspect of the host memory is considered to be tightly packed according
-    -- to the @imageExtent@.
-    memoryRowLength :: Word32
-  , -- No documentation found for Nested "VkImageToMemoryCopyEXT" "memoryImageHeight"
-    memoryImageHeight :: 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 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 (ImageToMemoryCopyEXT)
-#endif
-deriving instance Show ImageToMemoryCopyEXT
-
-instance ToCStruct ImageToMemoryCopyEXT where
-  withCStruct x f = allocaBytes 72 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p ImageToMemoryCopyEXT{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr (Ptr ()))) (hostPointer)
-    poke ((p `plusPtr` 24 :: Ptr Word32)) (memoryRowLength)
-    poke ((p `plusPtr` 28 :: Ptr Word32)) (memoryImageHeight)
-    poke ((p `plusPtr` 32 :: Ptr ImageSubresourceLayers)) (imageSubresource)
-    poke ((p `plusPtr` 48 :: Ptr Offset3D)) (imageOffset)
-    poke ((p `plusPtr` 60 :: Ptr Extent3D)) (imageExtent)
-    f
-  cStructSize = 72
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr (Ptr ()))) (zero)
-    poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 28 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 32 :: Ptr ImageSubresourceLayers)) (zero)
-    poke ((p `plusPtr` 48 :: Ptr Offset3D)) (zero)
-    poke ((p `plusPtr` 60 :: Ptr Extent3D)) (zero)
-    f
-
-instance FromCStruct ImageToMemoryCopyEXT where
-  peekCStruct p = do
-    pHostPointer <- peek @(Ptr ()) ((p `plusPtr` 16 :: Ptr (Ptr ())))
-    memoryRowLength <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))
-    memoryImageHeight <- 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 $ ImageToMemoryCopyEXT
-             pHostPointer
-             memoryRowLength
-             memoryImageHeight
-             imageSubresource
-             imageOffset
-             imageExtent
-
-instance Storable ImageToMemoryCopyEXT where
-  sizeOf ~_ = 72
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero ImageToMemoryCopyEXT where
-  zero = ImageToMemoryCopyEXT
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-
-
--- | VkCopyMemoryToImageInfoEXT - Structure specifying parameters of host
--- memory to image copy command
---
--- = Description
---
--- 'copyMemoryToImageEXT' does not check whether the device memory
--- associated with @dstImage@ is currently in use before performing the
--- copy. The application /must/ guarantee that any previously submitted
--- command that reads from or writes to the copy regions has completed
--- before the host performs the copy.
---
--- Copy regions for the image /must/ be aligned to a multiple of the texel
--- block extent in each dimension, except at the edges of the image, where
--- region extents /must/ match the edge of the image.
---
--- == Valid Usage
---
--- -   #VUID-VkCopyMemoryToImageInfoEXT-dstImage-09109# If @dstImage@ is
---     sparse then all memory ranges accessed by the copy command /must/ be
---     bound as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#sparsememory-resource-binding Binding Resource Memory>
---
--- -   #VUID-VkCopyMemoryToImageInfoEXT-dstImage-09111# If the stencil
---     aspect of @dstImage@ is accessed, and @dstImage@ was not created
---     with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageStencilUsageCreateInfo separate stencil usage>,
---     @dstImage@ /must/ have been created with
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_HOST_TRANSFER_BIT_EXT'
---     set in 'Vulkan.Core10.Image.ImageCreateInfo'::@usage@
---
--- -   #VUID-VkCopyMemoryToImageInfoEXT-dstImage-09112# If the stencil
---     aspect of @dstImage@ is accessed, and @dstImage@ was created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageStencilUsageCreateInfo separate stencil usage>,
---     @dstImage@ /must/ have been created with
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_HOST_TRANSFER_BIT_EXT'
---     set in
---     'Vulkan.Core12.Promoted_From_VK_EXT_separate_stencil_usage.ImageStencilUsageCreateInfo'::@stencilUsage@
---
--- -   #VUID-VkCopyMemoryToImageInfoEXT-dstImage-09113# If non-stencil
---     aspects of @dstImage@ are accessed, @dstImage@ /must/ have been
---     created with
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_HOST_TRANSFER_BIT_EXT'
---     set in 'Vulkan.Core10.Image.ImageCreateInfo'::@usage@
---
--- -   #VUID-VkCopyMemoryToImageInfoEXT-imageOffset-09114# If @flags@
---     contains 'HOST_IMAGE_COPY_MEMCPY_EXT', the @x@, @y@, and @z@ members
---     of the @imageOffset@ member of each element of @pRegions@ /must/ be
---     @0@
---
--- -   #VUID-VkCopyMemoryToImageInfoEXT-dstImage-09115# If @flags@ contains
---     'HOST_IMAGE_COPY_MEMCPY_EXT', the @imageExtent@ member of each
---     element of @pRegions@ /must/ equal the extents of @dstImage@
---     identified by @imageSubresource@
---
--- -   #VUID-VkCopyMemoryToImageInfoEXT-dstImage-07966# If @dstImage@ is
---     non-sparse then the image or the specified /disjoint/ plane /must/
---     be bound completely and contiguously to a single
---     'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-VkCopyMemoryToImageInfoEXT-imageSubresource-07967# 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-VkCopyMemoryToImageInfoEXT-imageSubresource-07968# If
---     @imageSubresource.layerCount@ is not
---     'Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS',
---     @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-VkCopyMemoryToImageInfoEXT-dstImage-07969# @dstImage@ /must/
---     not have been created with @flags@ containing
---     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT'
---
--- -   #VUID-VkCopyMemoryToImageInfoEXT-imageSubresource-07970# The image
---     region specified by each element of @pRegions@ /must/ be contained
---     within the specified @imageSubresource@ of @dstImage@
---
--- -   #VUID-VkCopyMemoryToImageInfoEXT-imageSubresource-07971# 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-VkCopyMemoryToImageInfoEXT-imageSubresource-07972# 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-VkCopyMemoryToImageInfoEXT-dstImage-07973# @dstImage@ /must/
---     have a sample count equal to
---     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'
---
--- -   #VUID-VkCopyMemoryToImageInfoEXT-dstImage-07979# 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-VkCopyMemoryToImageInfoEXT-imageOffset-09104# 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-VkCopyMemoryToImageInfoEXT-dstImage-07980# 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-VkCopyMemoryToImageInfoEXT-dstImage-07274# For each element of
---     @pRegions@, if
---     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
---     is equal to
---     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_IDENTITY_BIT_KHR'
---     or
---     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_270_BIT_KHR',
---     @imageOffset.x@ /must/ be a multiple of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width>
---     of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@
---
--- -   #VUID-VkCopyMemoryToImageInfoEXT-imageOffset-10051# For each element
---     of @pRegions@, if
---     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
---     is equal to
---     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_180_BIT_KHR'
---     or
---     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_90_BIT_KHR',
---     and @imageOffset.x@ does not equal the width of the subresource
---     specified by @imageSubresource@, @imageOffset.x@ /must/ be a
---     multiple of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width>
---     of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@
---
--- -   #VUID-VkCopyMemoryToImageInfoEXT-dstImage-07275# For each element of
---     @pRegions@, if
---     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
---     is equal to
---     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_IDENTITY_BIT_KHR'
---     or
---     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_90_BIT_KHR',
---     @imageOffset.y@ /must/ be a multiple of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent height>
---     of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@
---
--- -   #VUID-VkCopyMemoryToImageInfoEXT-imageOffset-10052# For each element
---     of @pRegions@, if
---     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
---     is equal to
---     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_270_BIT_KHR'
---     or
---     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_180_BIT_KHR',
---     and @imageOffset.y@ does not equal the height of the subresource
---     specified by @imageSubresource@, @imageOffset.y@ /must/ be a
---     multiple of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent height>
---     of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@
---
--- -   #VUID-VkCopyMemoryToImageInfoEXT-dstImage-07276# For each element of
---     @pRegions@, @imageOffset.z@ /must/ be a multiple of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent depth>
---     of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@
---
--- -   #VUID-VkCopyMemoryToImageInfoEXT-dstImage-00207# For each element of
---     @pRegions@, if
---     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
---     is equal to
---     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_IDENTITY_BIT_KHR',
---     the sum of @imageOffset.x@ and @extent.width@ does not equal the
---     width of the subresource specified by @imageSubresource@,
---     @extent.width@ /must/ be a multiple of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width>
---     of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@
---
--- -   #VUID-VkCopyMemoryToImageInfoEXT-imageOffset-10053# For each element
---     of @pRegions@, if
---     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
---     is equal to
---     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_90_BIT_KHR',
---     the difference of @imageOffset.x@ and @extent.height@ /must/ be a
---     multiple of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width>
---     of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@
---
--- -   #VUID-VkCopyMemoryToImageInfoEXT-imageOffset-10054# For each element
---     of @pRegions@, if
---     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
---     is equal to
---     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_180_BIT_KHR',
---     the difference of @imageOffset.x@ and @extent.width@ /must/ be a
---     multiple of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width>
---     of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@
---
--- -   #VUID-VkCopyMemoryToImageInfoEXT-imageOffset-10055# For each element
---     of @pRegions@, if
---     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
---     is equal to
---     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_270_BIT_KHR',
---     the sum of @imageOffset.x@ and @extent.height@ does not equal the
---     width of the subresource specified by @imageSubresource@,
---     @extent.height@ /must/ be a multiple of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width>
---     of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@
---
--- -   #VUID-VkCopyMemoryToImageInfoEXT-dstImage-00208# For each element of
---     @pRegions@, if
---     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
---     is equal to
---     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_IDENTITY_BIT_KHR',
---     and the sum of @imageOffset.y@ and @extent.height@ does not equal
---     the height of the subresource specified by @imageSubresource@,
---     @extent.height@ /must/ be a multiple of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent height>
---     of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@
---
--- -   #VUID-VkCopyMemoryToImageInfoEXT-imageOffset-10056# For each element
---     of @pRegions@, if
---     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
---     is equal to
---     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_90_BIT_KHR',
---     the sum of @imageOffset.y@ and @extent.width@ does not equal the
---     height of the subresource specified by @imageSubresource@,
---     @extent.width@ /must/ be a multiple of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent height>
---     of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@
---
--- -   #VUID-VkCopyMemoryToImageInfoEXT-imageOffset-10057# For each element
---     of @pRegions@, if
---     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
---     is equal to
---     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_180_BIT_KHR',
---     the difference of @imageOffset.y@ and @extent.height@ /must/ be a
---     multiple of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent height>
---     of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@
---
--- -   #VUID-VkCopyMemoryToImageInfoEXT-imageOffset-10058# For each element
---     of @pRegions@, if
---     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
---     is equal to
---     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_270_BIT_KHR',
---     the difference of @imageOffset.y@ and @extent.width@ /must/ be a
---     multiple of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent height>
---     of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@
---
--- -   #VUID-VkCopyMemoryToImageInfoEXT-dstImage-00209# For each element of
---     @pRegions@, if the sum of @imageOffset.z@ and @extent.depth@ does
---     not equal the depth of the subresource specified by
---     @srcSubresource@, @extent.depth@ /must/ be a multiple of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent depth>
---     of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@
---
--- -   #VUID-VkCopyMemoryToImageInfoEXT-imageSubresource-09105# For each
---     element of @pRegions@, @imageSubresource.aspectMask@ /must/ specify
---     aspects present in @dstImage@
---
--- -   #VUID-VkCopyMemoryToImageInfoEXT-dstImage-07981# 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>,
---     then for each element of @pRegions@, @imageSubresource.aspectMask@
---     /must/ be a single valid
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-planes-image-aspect multi-planar aspect mask>
---     bit
---
--- -   #VUID-VkCopyMemoryToImageInfoEXT-dstImage-07983# 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-VkCopyMemoryToImageInfoEXT-memoryRowLength-09106# For each
---     element of @pRegions@, @memoryRowLength@ /must/ be a multiple of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width>
---     of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@
---
--- -   #VUID-VkCopyMemoryToImageInfoEXT-memoryImageHeight-09107# For each
---     element of @pRegions@, @memoryImageHeight@ /must/ be a multiple of
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent height>
---     of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@
---
--- -   #VUID-VkCopyMemoryToImageInfoEXT-memoryRowLength-09108# For each
---     element of @pRegions@, @memoryRowLength@ divided by the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width>
---     and then multiplied by the texel block size of @dstImage@ /must/ be
---     less than or equal to 231-1
---
--- -   #VUID-VkCopyMemoryToImageInfoEXT-dstImageLayout-09059#
---     @dstImageLayout@ /must/ specify the current layout of the image
---     subresources of @dstImage@ specified in @pRegions@
---
--- -   #VUID-VkCopyMemoryToImageInfoEXT-dstImageLayout-09060#
---     @dstImageLayout@ /must/ be one of the image layouts returned in
---     'PhysicalDeviceHostImageCopyPropertiesEXT'::@pCopyDstLayouts@
---
--- -   #VUID-VkCopyMemoryToImageInfoEXT-flags-09393# If @flags@ includes
---     'HOST_IMAGE_COPY_MEMCPY_EXT', for each region in @pRegions@,
---     @memoryRowLength@ and @memoryImageHeight@ /must/ both be 0
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkCopyMemoryToImageInfoEXT-sType-sType# @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO_EXT'
---
--- -   #VUID-VkCopyMemoryToImageInfoEXT-pNext-pNext# @pNext@ /must/ be
---     @NULL@
---
--- -   #VUID-VkCopyMemoryToImageInfoEXT-flags-parameter# @flags@ /must/ be
---     a valid combination of 'HostImageCopyFlagBitsEXT' values
---
--- -   #VUID-VkCopyMemoryToImageInfoEXT-dstImage-parameter# @dstImage@
---     /must/ be a valid 'Vulkan.Core10.Handles.Image' handle
---
--- -   #VUID-VkCopyMemoryToImageInfoEXT-dstImageLayout-parameter#
---     @dstImageLayout@ /must/ be a valid
---     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' value
---
--- -   #VUID-VkCopyMemoryToImageInfoEXT-pRegions-parameter# @pRegions@
---     /must/ be a valid pointer to an array of @regionCount@ valid
---     'MemoryToImageCopyEXT' structures
---
--- -   #VUID-VkCopyMemoryToImageInfoEXT-regionCount-arraylength#
---     @regionCount@ /must/ be greater than @0@
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_host_image_copy VK_EXT_host_image_copy>,
--- 'HostImageCopyFlagsEXT', 'Vulkan.Core10.Handles.Image',
--- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout', 'MemoryToImageCopyEXT',
--- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'copyMemoryToImageEXT'
-data CopyMemoryToImageInfoEXT = CopyMemoryToImageInfoEXT
-  { -- | @flags@ is a bitmask of 'HostImageCopyFlagBitsEXT' values describing
-    -- additional copy parameters.
-    flags :: HostImageCopyFlagsEXT
-  , -- | @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 'MemoryToImageCopyEXT' structures
-    -- specifying the regions to copy.
-    regions :: Vector MemoryToImageCopyEXT
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (CopyMemoryToImageInfoEXT)
-#endif
-deriving instance Show CopyMemoryToImageInfoEXT
-
-instance ToCStruct CopyMemoryToImageInfoEXT where
-  withCStruct x f = allocaBytes 48 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p CopyMemoryToImageInfoEXT{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO_EXT)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    lift $ poke ((p `plusPtr` 16 :: Ptr HostImageCopyFlagsEXT)) (flags)
-    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 @MemoryToImageCopyEXT ((Data.Vector.length (regions)) * 72)
-    lift $ Data.Vector.imapM_ (\i e -> poke (pPRegions' `plusPtr` (72 * (i)) :: Ptr MemoryToImageCopyEXT) (e)) (regions)
-    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr MemoryToImageCopyEXT))) (pPRegions')
-    lift $ f
-  cStructSize = 48
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 24 :: Ptr Image)) (zero)
-    poke ((p `plusPtr` 32 :: Ptr ImageLayout)) (zero)
-    f
-
-instance FromCStruct CopyMemoryToImageInfoEXT where
-  peekCStruct p = do
-    flags <- peek @HostImageCopyFlagsEXT ((p `plusPtr` 16 :: Ptr HostImageCopyFlagsEXT))
-    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 MemoryToImageCopyEXT) ((p `plusPtr` 40 :: Ptr (Ptr MemoryToImageCopyEXT)))
-    pRegions' <- generateM (fromIntegral regionCount) (\i -> peekCStruct @MemoryToImageCopyEXT ((pRegions `advancePtrBytes` (72 * (i)) :: Ptr MemoryToImageCopyEXT)))
-    pure $ CopyMemoryToImageInfoEXT
-             flags dstImage dstImageLayout pRegions'
-
-instance Zero CopyMemoryToImageInfoEXT where
-  zero = CopyMemoryToImageInfoEXT
-           zero
-           zero
-           zero
-           mempty
-
-
--- | VkCopyImageToMemoryInfoEXT - Structure specifying parameters of an image
--- to host memory copy command
---
--- = Description
---
--- 'copyImageToMemoryEXT' does not check whether the device memory
--- associated with @srcImage@ is currently in use before performing the
--- copy. The application /must/ guarantee that any previously submitted
--- command that writes to the copy regions has completed before the host
--- performs the copy.
---
--- Copy regions for the image /must/ be aligned to a multiple of the texel
--- block extent in each dimension, except at the edges of the image, where
--- region extents /must/ match the edge of the image.
---
--- == Valid Usage
---
--- -   #VUID-VkCopyImageToMemoryInfoEXT-srcImage-09109# If @srcImage@ is
---     sparse then all memory ranges accessed by the copy command /must/ be
---     bound as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#sparsememory-resource-binding Binding Resource Memory>
---
--- -   #VUID-VkCopyImageToMemoryInfoEXT-srcImage-09111# If the stencil
---     aspect of @srcImage@ is accessed, and @srcImage@ was not created
---     with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageStencilUsageCreateInfo separate stencil usage>,
---     @srcImage@ /must/ have been created with
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_HOST_TRANSFER_BIT_EXT'
---     set in 'Vulkan.Core10.Image.ImageCreateInfo'::@usage@
---
--- -   #VUID-VkCopyImageToMemoryInfoEXT-srcImage-09112# If the stencil
---     aspect of @srcImage@ is accessed, and @srcImage@ was created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageStencilUsageCreateInfo separate stencil usage>,
---     @srcImage@ /must/ have been created with
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_HOST_TRANSFER_BIT_EXT'
---     set in
---     'Vulkan.Core12.Promoted_From_VK_EXT_separate_stencil_usage.ImageStencilUsageCreateInfo'::@stencilUsage@
---
--- -   #VUID-VkCopyImageToMemoryInfoEXT-srcImage-09113# If non-stencil
---     aspects of @srcImage@ are accessed, @srcImage@ /must/ have been
---     created with
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_HOST_TRANSFER_BIT_EXT'
---     set in 'Vulkan.Core10.Image.ImageCreateInfo'::@usage@
---
--- -   #VUID-VkCopyImageToMemoryInfoEXT-imageOffset-09114# If @flags@
---     contains 'HOST_IMAGE_COPY_MEMCPY_EXT', the @x@, @y@, and @z@ members
---     of the @imageOffset@ member of each element of @pRegions@ /must/ be
---     @0@
---
--- -   #VUID-VkCopyImageToMemoryInfoEXT-srcImage-09115# If @flags@ contains
---     'HOST_IMAGE_COPY_MEMCPY_EXT', the @imageExtent@ member of each
---     element of @pRegions@ /must/ equal the extents of @srcImage@
---     identified by @imageSubresource@
---
--- -   #VUID-VkCopyImageToMemoryInfoEXT-srcImage-07966# If @srcImage@ is
---     non-sparse then the image or the specified /disjoint/ plane /must/
---     be bound completely and contiguously to a single
---     'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-VkCopyImageToMemoryInfoEXT-imageSubresource-07967# 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-VkCopyImageToMemoryInfoEXT-imageSubresource-07968# If
---     @imageSubresource.layerCount@ is not
---     'Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS',
---     @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-VkCopyImageToMemoryInfoEXT-srcImage-07969# @srcImage@ /must/
---     not have been created with @flags@ containing
---     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT'
---
--- -   #VUID-VkCopyImageToMemoryInfoEXT-imageSubresource-07970# The image
---     region specified by each element of @pRegions@ /must/ be contained
---     within the specified @imageSubresource@ of @srcImage@
---
--- -   #VUID-VkCopyImageToMemoryInfoEXT-imageSubresource-07971# 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-VkCopyImageToMemoryInfoEXT-imageSubresource-07972# 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-VkCopyImageToMemoryInfoEXT-srcImage-07973# @srcImage@ /must/
---     have a sample count equal to
---     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'
---
--- -   #VUID-VkCopyImageToMemoryInfoEXT-srcImage-07979# 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-VkCopyImageToMemoryInfoEXT-imageOffset-09104# 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-VkCopyImageToMemoryInfoEXT-srcImage-07980# 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-VkCopyImageToMemoryInfoEXT-srcImage-07274# For each element of
---     @pRegions@, if
---     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
---     is equal to
---     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_IDENTITY_BIT_KHR'
---     or
---     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_270_BIT_KHR',
---     @imageOffset.x@ /must/ be a multiple of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width>
---     of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@
---
--- -   #VUID-VkCopyImageToMemoryInfoEXT-imageOffset-10051# For each element
---     of @pRegions@, if
---     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
---     is equal to
---     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_180_BIT_KHR'
---     or
---     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_90_BIT_KHR',
---     and @imageOffset.x@ does not equal the width of the subresource
---     specified by @imageSubresource@, @imageOffset.x@ /must/ be a
---     multiple of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width>
---     of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@
---
--- -   #VUID-VkCopyImageToMemoryInfoEXT-srcImage-07275# For each element of
---     @pRegions@, if
---     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
---     is equal to
---     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_IDENTITY_BIT_KHR'
---     or
---     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_90_BIT_KHR',
---     @imageOffset.y@ /must/ be a multiple of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent height>
---     of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@
---
--- -   #VUID-VkCopyImageToMemoryInfoEXT-imageOffset-10052# For each element
---     of @pRegions@, if
---     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
---     is equal to
---     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_270_BIT_KHR'
---     or
---     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_180_BIT_KHR',
---     and @imageOffset.y@ does not equal the height of the subresource
---     specified by @imageSubresource@, @imageOffset.y@ /must/ be a
---     multiple of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent height>
---     of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@
---
--- -   #VUID-VkCopyImageToMemoryInfoEXT-srcImage-07276# For each element of
---     @pRegions@, @imageOffset.z@ /must/ be a multiple of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent depth>
---     of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@
---
--- -   #VUID-VkCopyImageToMemoryInfoEXT-srcImage-00207# For each element of
---     @pRegions@, if
---     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
---     is equal to
---     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_IDENTITY_BIT_KHR',
---     the sum of @imageOffset.x@ and @extent.width@ does not equal the
---     width of the subresource specified by @imageSubresource@,
---     @extent.width@ /must/ be a multiple of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width>
---     of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@
---
--- -   #VUID-VkCopyImageToMemoryInfoEXT-imageOffset-10053# For each element
---     of @pRegions@, if
---     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
---     is equal to
---     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_90_BIT_KHR',
---     the difference of @imageOffset.x@ and @extent.height@ /must/ be a
---     multiple of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width>
---     of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@
---
--- -   #VUID-VkCopyImageToMemoryInfoEXT-imageOffset-10054# For each element
---     of @pRegions@, if
---     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
---     is equal to
---     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_180_BIT_KHR',
---     the difference of @imageOffset.x@ and @extent.width@ /must/ be a
---     multiple of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width>
---     of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@
---
--- -   #VUID-VkCopyImageToMemoryInfoEXT-imageOffset-10055# For each element
---     of @pRegions@, if
---     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
---     is equal to
---     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_270_BIT_KHR',
---     the sum of @imageOffset.x@ and @extent.height@ does not equal the
---     width of the subresource specified by @imageSubresource@,
---     @extent.height@ /must/ be a multiple of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width>
---     of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@
---
--- -   #VUID-VkCopyImageToMemoryInfoEXT-srcImage-00208# For each element of
---     @pRegions@, if
---     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
---     is equal to
---     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_IDENTITY_BIT_KHR',
---     and the sum of @imageOffset.y@ and @extent.height@ does not equal
---     the height of the subresource specified by @imageSubresource@,
---     @extent.height@ /must/ be a multiple of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent height>
---     of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@
---
--- -   #VUID-VkCopyImageToMemoryInfoEXT-imageOffset-10056# For each element
---     of @pRegions@, if
---     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
---     is equal to
---     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_90_BIT_KHR',
---     the sum of @imageOffset.y@ and @extent.width@ does not equal the
---     height of the subresource specified by @imageSubresource@,
---     @extent.width@ /must/ be a multiple of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent height>
---     of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@
---
--- -   #VUID-VkCopyImageToMemoryInfoEXT-imageOffset-10057# For each element
---     of @pRegions@, if
---     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
---     is equal to
---     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_180_BIT_KHR',
---     the difference of @imageOffset.y@ and @extent.height@ /must/ be a
---     multiple of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent height>
---     of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@
---
--- -   #VUID-VkCopyImageToMemoryInfoEXT-imageOffset-10058# For each element
---     of @pRegions@, if
---     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
---     is equal to
---     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_270_BIT_KHR',
---     the difference of @imageOffset.y@ and @extent.width@ /must/ be a
---     multiple of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent height>
---     of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@
---
--- -   #VUID-VkCopyImageToMemoryInfoEXT-srcImage-00209# For each element of
---     @pRegions@, if the sum of @imageOffset.z@ and @extent.depth@ does
---     not equal the depth of the subresource specified by
---     @srcSubresource@, @extent.depth@ /must/ be a multiple of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent depth>
---     of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@
---
--- -   #VUID-VkCopyImageToMemoryInfoEXT-imageSubresource-09105# For each
---     element of @pRegions@, @imageSubresource.aspectMask@ /must/ specify
---     aspects present in @srcImage@
---
--- -   #VUID-VkCopyImageToMemoryInfoEXT-srcImage-07981# 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>,
---     then for each element of @pRegions@, @imageSubresource.aspectMask@
---     /must/ be a single valid
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-planes-image-aspect multi-planar aspect mask>
---     bit
---
--- -   #VUID-VkCopyImageToMemoryInfoEXT-srcImage-07983# 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-VkCopyImageToMemoryInfoEXT-memoryRowLength-09106# For each
---     element of @pRegions@, @memoryRowLength@ /must/ be a multiple of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width>
---     of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@
---
--- -   #VUID-VkCopyImageToMemoryInfoEXT-memoryImageHeight-09107# For each
---     element of @pRegions@, @memoryImageHeight@ /must/ be a multiple of
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent height>
---     of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@
---
--- -   #VUID-VkCopyImageToMemoryInfoEXT-memoryRowLength-09108# For each
---     element of @pRegions@, @memoryRowLength@ divided by the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width>
---     and then multiplied by the texel block size of @srcImage@ /must/ be
---     less than or equal to 231-1
---
--- -   #VUID-VkCopyImageToMemoryInfoEXT-srcImageLayout-09064#
---     @srcImageLayout@ /must/ specify the current layout of the image
---     subresources of @srcImage@ specified in @pRegions@
---
--- -   #VUID-VkCopyImageToMemoryInfoEXT-srcImageLayout-09065#
---     @srcImageLayout@ /must/ be one of the image layouts returned in
---     'PhysicalDeviceHostImageCopyPropertiesEXT'::@pCopySrcLayouts@
---
--- -   #VUID-VkCopyImageToMemoryInfoEXT-flags-09394# If @flags@ includes
---     'HOST_IMAGE_COPY_MEMCPY_EXT', for each region in @pRegions@,
---     @memoryRowLength@ and @memoryImageHeight@ /must/ both be 0
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkCopyImageToMemoryInfoEXT-sType-sType# @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO_EXT'
---
--- -   #VUID-VkCopyImageToMemoryInfoEXT-pNext-pNext# @pNext@ /must/ be
---     @NULL@
---
--- -   #VUID-VkCopyImageToMemoryInfoEXT-flags-parameter# @flags@ /must/ be
---     a valid combination of 'HostImageCopyFlagBitsEXT' values
---
--- -   #VUID-VkCopyImageToMemoryInfoEXT-srcImage-parameter# @srcImage@
---     /must/ be a valid 'Vulkan.Core10.Handles.Image' handle
---
--- -   #VUID-VkCopyImageToMemoryInfoEXT-srcImageLayout-parameter#
---     @srcImageLayout@ /must/ be a valid
---     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' value
---
--- -   #VUID-VkCopyImageToMemoryInfoEXT-pRegions-parameter# @pRegions@
---     /must/ be a valid pointer to an array of @regionCount@ valid
---     'ImageToMemoryCopyEXT' structures
---
--- -   #VUID-VkCopyImageToMemoryInfoEXT-regionCount-arraylength#
---     @regionCount@ /must/ be greater than @0@
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_host_image_copy VK_EXT_host_image_copy>,
--- 'HostImageCopyFlagsEXT', 'Vulkan.Core10.Handles.Image',
--- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout', 'ImageToMemoryCopyEXT',
--- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'copyImageToMemoryEXT'
-data CopyImageToMemoryInfoEXT = CopyImageToMemoryInfoEXT
-  { -- | @flags@ is a bitmask of 'HostImageCopyFlagBitsEXT' values describing
-    -- additional copy parameters.
-    flags :: HostImageCopyFlagsEXT
-  , -- | @srcImage@ is the source image.
-    srcImage :: Image
-  , -- | @srcImageLayout@ is the layout of the source image subresources for the
-    -- copy.
-    srcImageLayout :: ImageLayout
-  , -- | @pRegions@ is a pointer to an array of 'ImageToMemoryCopyEXT' structures
-    -- specifying the regions to copy.
-    regions :: Vector ImageToMemoryCopyEXT
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (CopyImageToMemoryInfoEXT)
-#endif
-deriving instance Show CopyImageToMemoryInfoEXT
-
-instance ToCStruct CopyImageToMemoryInfoEXT where
-  withCStruct x f = allocaBytes 48 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p CopyImageToMemoryInfoEXT{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO_EXT)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    lift $ poke ((p `plusPtr` 16 :: Ptr HostImageCopyFlagsEXT)) (flags)
-    lift $ poke ((p `plusPtr` 24 :: Ptr Image)) (srcImage)
-    lift $ poke ((p `plusPtr` 32 :: Ptr ImageLayout)) (srcImageLayout)
-    lift $ poke ((p `plusPtr` 36 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (regions)) :: Word32))
-    pPRegions' <- ContT $ allocaBytes @ImageToMemoryCopyEXT ((Data.Vector.length (regions)) * 72)
-    lift $ Data.Vector.imapM_ (\i e -> poke (pPRegions' `plusPtr` (72 * (i)) :: Ptr ImageToMemoryCopyEXT) (e)) (regions)
-    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr ImageToMemoryCopyEXT))) (pPRegions')
-    lift $ f
-  cStructSize = 48
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 24 :: Ptr Image)) (zero)
-    poke ((p `plusPtr` 32 :: Ptr ImageLayout)) (zero)
-    f
-
-instance FromCStruct CopyImageToMemoryInfoEXT where
-  peekCStruct p = do
-    flags <- peek @HostImageCopyFlagsEXT ((p `plusPtr` 16 :: Ptr HostImageCopyFlagsEXT))
-    srcImage <- peek @Image ((p `plusPtr` 24 :: Ptr Image))
-    srcImageLayout <- peek @ImageLayout ((p `plusPtr` 32 :: Ptr ImageLayout))
-    regionCount <- peek @Word32 ((p `plusPtr` 36 :: Ptr Word32))
-    pRegions <- peek @(Ptr ImageToMemoryCopyEXT) ((p `plusPtr` 40 :: Ptr (Ptr ImageToMemoryCopyEXT)))
-    pRegions' <- generateM (fromIntegral regionCount) (\i -> peekCStruct @ImageToMemoryCopyEXT ((pRegions `advancePtrBytes` (72 * (i)) :: Ptr ImageToMemoryCopyEXT)))
-    pure $ CopyImageToMemoryInfoEXT
-             flags srcImage srcImageLayout pRegions'
-
-instance Zero CopyImageToMemoryInfoEXT where
-  zero = CopyImageToMemoryInfoEXT
-           zero
-           zero
-           zero
-           mempty
-
-
--- | VkCopyImageToImageInfoEXT - Structure specifying parameters of an image
--- to image host copy command
---
--- = Description
---
--- 'copyImageToImageEXT' does not check whether the device memory
--- associated with @srcImage@ or @dstImage@ is currently in use before
--- performing the copy. The application /must/ guarantee that any
--- previously submitted command that writes to the copy regions has
--- completed before the host performs the copy.
---
--- == Valid Usage
---
--- -   #VUID-VkCopyImageToImageInfoEXT-srcImage-09069# @srcImage@ and
---     @dstImage@ /must/ have been created with identical image creation
---     parameters
---
--- -   #VUID-VkCopyImageToImageInfoEXT-srcImage-09109# If @srcImage@ is
---     sparse then all memory ranges accessed by the copy command /must/ be
---     bound as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#sparsememory-resource-binding Binding Resource Memory>
---
--- -   #VUID-VkCopyImageToImageInfoEXT-srcImage-09111# If the stencil
---     aspect of @srcImage@ is accessed, and @srcImage@ was not created
---     with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageStencilUsageCreateInfo separate stencil usage>,
---     @srcImage@ /must/ have been created with
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_HOST_TRANSFER_BIT_EXT'
---     set in 'Vulkan.Core10.Image.ImageCreateInfo'::@usage@
---
--- -   #VUID-VkCopyImageToImageInfoEXT-srcImage-09112# If the stencil
---     aspect of @srcImage@ is accessed, and @srcImage@ was created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageStencilUsageCreateInfo separate stencil usage>,
---     @srcImage@ /must/ have been created with
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_HOST_TRANSFER_BIT_EXT'
---     set in
---     'Vulkan.Core12.Promoted_From_VK_EXT_separate_stencil_usage.ImageStencilUsageCreateInfo'::@stencilUsage@
---
--- -   #VUID-VkCopyImageToImageInfoEXT-srcImage-09113# If non-stencil
---     aspects of @srcImage@ are accessed, @srcImage@ /must/ have been
---     created with
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_HOST_TRANSFER_BIT_EXT'
---     set in 'Vulkan.Core10.Image.ImageCreateInfo'::@usage@
---
--- -   #VUID-VkCopyImageToImageInfoEXT-srcOffset-09114# If @flags@ contains
---     'HOST_IMAGE_COPY_MEMCPY_EXT', the @x@, @y@, and @z@ members of the
---     @srcOffset@ member of each element of @pRegions@ /must/ be @0@
---
--- -   #VUID-VkCopyImageToImageInfoEXT-srcImage-09115# If @flags@ contains
---     'HOST_IMAGE_COPY_MEMCPY_EXT', the @extent@ member of each element of
---     @pRegions@ /must/ equal the extents of @srcImage@ identified by
---     @srcSubresource@
---
--- -   #VUID-VkCopyImageToImageInfoEXT-srcImage-07966# If @srcImage@ is
---     non-sparse then the image or the specified /disjoint/ plane /must/
---     be bound completely and contiguously to a single
---     'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-VkCopyImageToImageInfoEXT-srcSubresource-07967# 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-VkCopyImageToImageInfoEXT-srcSubresource-07968# If
---     @srcSubresource.layerCount@ is not
---     'Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS',
---     @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-VkCopyImageToImageInfoEXT-srcImage-07969# @srcImage@ /must/
---     not have been created with @flags@ containing
---     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT'
---
--- -   #VUID-VkCopyImageToImageInfoEXT-srcSubresource-07970# The image
---     region specified by each element of @pRegions@ /must/ be contained
---     within the specified @srcSubresource@ of @srcImage@
---
--- -   #VUID-VkCopyImageToImageInfoEXT-srcSubresource-07971# 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-VkCopyImageToImageInfoEXT-srcSubresource-07972# 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-VkCopyImageToImageInfoEXT-srcImage-07979# 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-VkCopyImageToImageInfoEXT-srcOffset-09104# 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-VkCopyImageToImageInfoEXT-srcImage-07980# 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-VkCopyImageToImageInfoEXT-srcImage-07274# For each element of
---     @pRegions@, if
---     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
---     is equal to
---     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_IDENTITY_BIT_KHR'
---     or
---     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_270_BIT_KHR',
---     @srcOffset.x@ /must/ be a multiple of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width>
---     of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@
---
--- -   #VUID-VkCopyImageToImageInfoEXT-srcOffset-10051# For each element of
---     @pRegions@, if
---     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
---     is equal to
---     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_180_BIT_KHR'
---     or
---     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_90_BIT_KHR',
---     and @srcOffset.x@ does not equal the width of the subresource
---     specified by @srcSubresource@, @srcOffset.x@ /must/ be a multiple of
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width>
---     of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@
---
--- -   #VUID-VkCopyImageToImageInfoEXT-srcImage-07275# For each element of
---     @pRegions@, if
---     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
---     is equal to
---     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_IDENTITY_BIT_KHR'
---     or
---     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_90_BIT_KHR',
---     @srcOffset.y@ /must/ be a multiple of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent height>
---     of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@
---
--- -   #VUID-VkCopyImageToImageInfoEXT-srcOffset-10052# For each element of
---     @pRegions@, if
---     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
---     is equal to
---     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_270_BIT_KHR'
---     or
---     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_180_BIT_KHR',
---     and @srcOffset.y@ does not equal the height of the subresource
---     specified by @srcSubresource@, @srcOffset.y@ /must/ be a multiple of
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent height>
---     of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@
---
--- -   #VUID-VkCopyImageToImageInfoEXT-srcImage-07276# For each element of
---     @pRegions@, @srcOffset.z@ /must/ be a multiple of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent depth>
---     of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@
---
--- -   #VUID-VkCopyImageToImageInfoEXT-srcImage-00207# For each element of
---     @pRegions@, if
---     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
---     is equal to
---     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_IDENTITY_BIT_KHR',
---     the sum of @srcOffset.x@ and @extent.width@ does not equal the width
---     of the subresource specified by @srcSubresource@, @extent.width@
---     /must/ be a multiple of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width>
---     of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@
---
--- -   #VUID-VkCopyImageToImageInfoEXT-srcOffset-10053# For each element of
---     @pRegions@, if
---     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
---     is equal to
---     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_90_BIT_KHR',
---     the difference of @srcOffset.x@ and @extent.height@ /must/ be a
---     multiple of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width>
---     of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@
---
--- -   #VUID-VkCopyImageToImageInfoEXT-srcOffset-10054# For each element of
---     @pRegions@, if
---     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
---     is equal to
---     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_180_BIT_KHR',
---     the difference of @srcOffset.x@ and @extent.width@ /must/ be a
---     multiple of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width>
---     of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@
---
--- -   #VUID-VkCopyImageToImageInfoEXT-srcOffset-10055# For each element of
---     @pRegions@, if
---     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
---     is equal to
---     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_270_BIT_KHR',
---     the sum of @srcOffset.x@ and @extent.height@ does not equal the
---     width of the subresource specified by @srcSubresource@,
---     @extent.height@ /must/ be a multiple of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width>
---     of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@
---
--- -   #VUID-VkCopyImageToImageInfoEXT-srcImage-00208# For each element of
---     @pRegions@, if
---     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
---     is equal to
---     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_IDENTITY_BIT_KHR',
---     and the sum of @srcOffset.y@ and @extent.height@ does not equal the
---     height of the subresource specified by @srcSubresource@,
---     @extent.height@ /must/ be a multiple of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent height>
---     of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@
---
--- -   #VUID-VkCopyImageToImageInfoEXT-srcOffset-10056# For each element of
---     @pRegions@, if
---     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
---     is equal to
---     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_90_BIT_KHR',
---     the sum of @srcOffset.y@ and @extent.width@ does not equal the
---     height of the subresource specified by @srcSubresource@,
---     @extent.width@ /must/ be a multiple of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent height>
---     of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@
---
--- -   #VUID-VkCopyImageToImageInfoEXT-srcOffset-10057# For each element of
---     @pRegions@, if
---     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
---     is equal to
---     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_180_BIT_KHR',
---     the difference of @srcOffset.y@ and @extent.height@ /must/ be a
---     multiple of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent height>
---     of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@
---
--- -   #VUID-VkCopyImageToImageInfoEXT-srcOffset-10058# For each element of
---     @pRegions@, if
---     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
---     is equal to
---     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_270_BIT_KHR',
---     the difference of @srcOffset.y@ and @extent.width@ /must/ be a
---     multiple of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent height>
---     of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@
---
--- -   #VUID-VkCopyImageToImageInfoEXT-srcImage-00209# For each element of
---     @pRegions@, if the sum of @srcOffset.z@ and @extent.depth@ does not
---     equal the depth of the subresource specified by @srcSubresource@,
---     @extent.depth@ /must/ be a multiple of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent depth>
---     of the 'Vulkan.Core10.Enums.Format.Format' of @srcImage@
---
--- -   #VUID-VkCopyImageToImageInfoEXT-srcSubresource-09105# For each
---     element of @pRegions@, @srcSubresource.aspectMask@ /must/ specify
---     aspects present in @srcImage@
---
--- -   #VUID-VkCopyImageToImageInfoEXT-srcImage-07981# 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>,
---     then for each element of @pRegions@, @srcSubresource.aspectMask@
---     /must/ be a single valid
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-planes-image-aspect multi-planar aspect mask>
---     bit
---
--- -   #VUID-VkCopyImageToImageInfoEXT-srcImage-07983# If @srcImage@ is of
---     type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', for each element
---     of @pRegions@, @srcSubresource.baseArrayLayer@ /must/ be @0@ and
---     @srcSubresource.layerCount@ /must/ be @1@
---
--- -   #VUID-VkCopyImageToImageInfoEXT-dstImage-09109# If @dstImage@ is
---     sparse then all memory ranges accessed by the copy command /must/ be
---     bound as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#sparsememory-resource-binding Binding Resource Memory>
---
--- -   #VUID-VkCopyImageToImageInfoEXT-dstImage-09111# If the stencil
---     aspect of @dstImage@ is accessed, and @dstImage@ was not created
---     with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageStencilUsageCreateInfo separate stencil usage>,
---     @dstImage@ /must/ have been created with
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_HOST_TRANSFER_BIT_EXT'
---     set in 'Vulkan.Core10.Image.ImageCreateInfo'::@usage@
---
--- -   #VUID-VkCopyImageToImageInfoEXT-dstImage-09112# If the stencil
---     aspect of @dstImage@ is accessed, and @dstImage@ was created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageStencilUsageCreateInfo separate stencil usage>,
---     @dstImage@ /must/ have been created with
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_HOST_TRANSFER_BIT_EXT'
---     set in
---     'Vulkan.Core12.Promoted_From_VK_EXT_separate_stencil_usage.ImageStencilUsageCreateInfo'::@stencilUsage@
---
--- -   #VUID-VkCopyImageToImageInfoEXT-dstImage-09113# If non-stencil
---     aspects of @dstImage@ are accessed, @dstImage@ /must/ have been
---     created with
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_HOST_TRANSFER_BIT_EXT'
---     set in 'Vulkan.Core10.Image.ImageCreateInfo'::@usage@
---
--- -   #VUID-VkCopyImageToImageInfoEXT-dstOffset-09114# If @flags@ contains
---     'HOST_IMAGE_COPY_MEMCPY_EXT', the @x@, @y@, and @z@ members of the
---     @dstOffset@ member of each element of @pRegions@ /must/ be @0@
---
--- -   #VUID-VkCopyImageToImageInfoEXT-dstImage-09115# If @flags@ contains
---     'HOST_IMAGE_COPY_MEMCPY_EXT', the @extent@ member of each element of
---     @pRegions@ /must/ equal the extents of @dstImage@ identified by
---     @dstSubresource@
---
--- -   #VUID-VkCopyImageToImageInfoEXT-dstImage-07966# If @dstImage@ is
---     non-sparse then the image or the specified /disjoint/ plane /must/
---     be bound completely and contiguously to a single
---     'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-VkCopyImageToImageInfoEXT-dstSubresource-07967# 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-VkCopyImageToImageInfoEXT-dstSubresource-07968# If
---     @dstSubresource.layerCount@ is not
---     'Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS',
---     @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-VkCopyImageToImageInfoEXT-dstImage-07969# @dstImage@ /must/
---     not have been created with @flags@ containing
---     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT'
---
--- -   #VUID-VkCopyImageToImageInfoEXT-dstSubresource-07970# The image
---     region specified by each element of @pRegions@ /must/ be contained
---     within the specified @dstSubresource@ of @dstImage@
---
--- -   #VUID-VkCopyImageToImageInfoEXT-dstSubresource-07971# 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-VkCopyImageToImageInfoEXT-dstSubresource-07972# 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-VkCopyImageToImageInfoEXT-dstImage-07979# 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-VkCopyImageToImageInfoEXT-dstOffset-09104# 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-VkCopyImageToImageInfoEXT-dstImage-07980# 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@
---
--- -   #VUID-VkCopyImageToImageInfoEXT-dstImage-07274# For each element of
---     @pRegions@, if
---     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
---     is equal to
---     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_IDENTITY_BIT_KHR'
---     or
---     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_270_BIT_KHR',
---     @dstOffset.x@ /must/ be a multiple of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width>
---     of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@
---
--- -   #VUID-VkCopyImageToImageInfoEXT-dstOffset-10051# For each element of
---     @pRegions@, if
---     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
---     is equal to
---     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_180_BIT_KHR'
---     or
---     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_90_BIT_KHR',
---     and @dstOffset.x@ does not equal the width of the subresource
---     specified by @dstSubresource@, @dstOffset.x@ /must/ be a multiple of
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width>
---     of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@
---
--- -   #VUID-VkCopyImageToImageInfoEXT-dstImage-07275# For each element of
---     @pRegions@, if
---     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
---     is equal to
---     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_IDENTITY_BIT_KHR'
---     or
---     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_90_BIT_KHR',
---     @dstOffset.y@ /must/ be a multiple of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent height>
---     of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@
---
--- -   #VUID-VkCopyImageToImageInfoEXT-dstOffset-10052# For each element of
---     @pRegions@, if
---     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
---     is equal to
---     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_270_BIT_KHR'
---     or
---     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_180_BIT_KHR',
---     and @dstOffset.y@ does not equal the height of the subresource
---     specified by @dstSubresource@, @dstOffset.y@ /must/ be a multiple of
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent height>
---     of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@
---
--- -   #VUID-VkCopyImageToImageInfoEXT-dstImage-07276# For each element of
---     @pRegions@, @dstOffset.z@ /must/ be a multiple of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent depth>
---     of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@
---
--- -   #VUID-VkCopyImageToImageInfoEXT-dstImage-00207# For each element of
---     @pRegions@, if
---     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
---     is equal to
---     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_IDENTITY_BIT_KHR',
---     the sum of @dstOffset.x@ and @extent.width@ does not equal the width
---     of the subresource specified by @dstSubresource@, @extent.width@
---     /must/ be a multiple of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width>
---     of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@
---
--- -   #VUID-VkCopyImageToImageInfoEXT-dstOffset-10053# For each element of
---     @pRegions@, if
---     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
---     is equal to
---     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_90_BIT_KHR',
---     the difference of @dstOffset.x@ and @extent.height@ /must/ be a
---     multiple of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width>
---     of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@
---
--- -   #VUID-VkCopyImageToImageInfoEXT-dstOffset-10054# For each element of
---     @pRegions@, if
---     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
---     is equal to
---     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_180_BIT_KHR',
---     the difference of @dstOffset.x@ and @extent.width@ /must/ be a
---     multiple of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width>
---     of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@
---
--- -   #VUID-VkCopyImageToImageInfoEXT-dstOffset-10055# For each element of
---     @pRegions@, if
---     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
---     is equal to
---     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_270_BIT_KHR',
---     the sum of @dstOffset.x@ and @extent.height@ does not equal the
---     width of the subresource specified by @dstSubresource@,
---     @extent.height@ /must/ be a multiple of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent width>
---     of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@
---
--- -   #VUID-VkCopyImageToImageInfoEXT-dstImage-00208# For each element of
---     @pRegions@, if
---     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
---     is equal to
---     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_IDENTITY_BIT_KHR',
---     and the sum of @dstOffset.y@ and @extent.height@ does not equal the
---     height of the subresource specified by @dstSubresource@,
---     @extent.height@ /must/ be a multiple of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent height>
---     of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@
---
--- -   #VUID-VkCopyImageToImageInfoEXT-dstOffset-10056# For each element of
---     @pRegions@, if
---     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
---     is equal to
---     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_90_BIT_KHR',
---     the sum of @dstOffset.y@ and @extent.width@ does not equal the
---     height of the subresource specified by @dstSubresource@,
---     @extent.width@ /must/ be a multiple of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent height>
---     of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@
---
--- -   #VUID-VkCopyImageToImageInfoEXT-dstOffset-10057# For each element of
---     @pRegions@, if
---     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
---     is equal to
---     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_180_BIT_KHR',
---     the difference of @dstOffset.y@ and @extent.height@ /must/ be a
---     multiple of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent height>
---     of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@
---
--- -   #VUID-VkCopyImageToImageInfoEXT-dstOffset-10058# For each element of
---     @pRegions@, if
---     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'::@transform@
---     is equal to
---     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_270_BIT_KHR',
---     the difference of @dstOffset.y@ and @extent.width@ /must/ be a
---     multiple of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent height>
---     of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@
---
--- -   #VUID-VkCopyImageToImageInfoEXT-dstImage-00209# For each element of
---     @pRegions@, if the sum of @dstOffset.z@ and @extent.depth@ does not
---     equal the depth of the subresource specified by @srcSubresource@,
---     @extent.depth@ /must/ be a multiple of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent depth>
---     of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@
---
--- -   #VUID-VkCopyImageToImageInfoEXT-dstSubresource-09105# For each
---     element of @pRegions@, @dstSubresource.aspectMask@ /must/ specify
---     aspects present in @dstImage@
---
--- -   #VUID-VkCopyImageToImageInfoEXT-dstImage-07981# 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>,
---     then for each element of @pRegions@, @dstSubresource.aspectMask@
---     /must/ be a single valid
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-planes-image-aspect multi-planar aspect mask>
---     bit
---
--- -   #VUID-VkCopyImageToImageInfoEXT-dstImage-07983# If @dstImage@ is of
---     type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', for each element
---     of @pRegions@, @dstSubresource.baseArrayLayer@ /must/ be @0@ and
---     @dstSubresource.layerCount@ /must/ be @1@
---
--- -   #VUID-VkCopyImageToImageInfoEXT-srcImageLayout-09070#
---     @srcImageLayout@ /must/ specify the current layout of the image
---     subresources of @srcImage@ specified in @pRegions@
---
--- -   #VUID-VkCopyImageToImageInfoEXT-dstImageLayout-09071#
---     @dstImageLayout@ /must/ specify the current layout of the image
---     subresources of @dstImage@ specified in @pRegions@
---
--- -   #VUID-VkCopyImageToImageInfoEXT-srcImageLayout-09072#
---     @srcImageLayout@ /must/ be one of the image layouts returned in
---     'PhysicalDeviceHostImageCopyPropertiesEXT'::@pCopySrcLayouts@
---
--- -   #VUID-VkCopyImageToImageInfoEXT-dstImageLayout-09073#
---     @dstImageLayout@ /must/ be one of the image layouts returned in
---     'PhysicalDeviceHostImageCopyPropertiesEXT'::@pCopyDstLayouts@
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkCopyImageToImageInfoEXT-sType-sType# @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO_EXT'
---
--- -   #VUID-VkCopyImageToImageInfoEXT-pNext-pNext# @pNext@ /must/ be
---     @NULL@
---
--- -   #VUID-VkCopyImageToImageInfoEXT-flags-parameter# @flags@ /must/ be a
---     valid combination of 'HostImageCopyFlagBitsEXT' values
---
--- -   #VUID-VkCopyImageToImageInfoEXT-srcImage-parameter# @srcImage@
---     /must/ be a valid 'Vulkan.Core10.Handles.Image' handle
---
--- -   #VUID-VkCopyImageToImageInfoEXT-srcImageLayout-parameter#
---     @srcImageLayout@ /must/ be a valid
---     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' value
---
--- -   #VUID-VkCopyImageToImageInfoEXT-dstImage-parameter# @dstImage@
---     /must/ be a valid 'Vulkan.Core10.Handles.Image' handle
---
--- -   #VUID-VkCopyImageToImageInfoEXT-dstImageLayout-parameter#
---     @dstImageLayout@ /must/ be a valid
---     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' value
---
--- -   #VUID-VkCopyImageToImageInfoEXT-pRegions-parameter# @pRegions@
---     /must/ be a valid pointer to an array of @regionCount@ valid
---     'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.ImageCopy2'
---     structures
---
--- -   #VUID-VkCopyImageToImageInfoEXT-regionCount-arraylength#
---     @regionCount@ /must/ be greater than @0@
---
--- -   #VUID-VkCopyImageToImageInfoEXT-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_EXT_host_image_copy VK_EXT_host_image_copy>,
--- 'HostImageCopyFlagsEXT', 'Vulkan.Core10.Handles.Image',
--- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.ImageCopy2',
--- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout',
--- 'Vulkan.Core10.Enums.StructureType.StructureType', 'copyImageToImageEXT'
-data CopyImageToImageInfoEXT = CopyImageToImageInfoEXT
-  { -- | @flags@ is a bitmask of 'HostImageCopyFlagBitsEXT' values describing
-    -- additional copy parameters.
-    flags :: HostImageCopyFlagsEXT
-  , -- | @srcImage@ is the source image.
-    srcImage :: Image
-  , -- | @srcImageLayout@ is the layout of the source image subresources for the
-    -- copy.
-    srcImageLayout :: ImageLayout
-  , -- | @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
-    -- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.ImageCopy2'
-    -- structures specifying the regions to copy.
-    regions :: Vector ImageCopy2
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (CopyImageToImageInfoEXT)
-#endif
-deriving instance Show CopyImageToImageInfoEXT
-
-instance ToCStruct CopyImageToImageInfoEXT where
-  withCStruct x f = allocaBytes 64 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p CopyImageToImageInfoEXT{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO_EXT)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    lift $ poke ((p `plusPtr` 16 :: Ptr HostImageCopyFlagsEXT)) (flags)
-    lift $ poke ((p `plusPtr` 24 :: Ptr Image)) (srcImage)
-    lift $ poke ((p `plusPtr` 32 :: Ptr ImageLayout)) (srcImageLayout)
-    lift $ poke ((p `plusPtr` 40 :: Ptr Image)) (dstImage)
-    lift $ poke ((p `plusPtr` 48 :: Ptr ImageLayout)) (dstImageLayout)
-    lift $ poke ((p `plusPtr` 52 :: 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` 56 :: Ptr (Ptr ImageCopy2))) (pPRegions')
-    lift $ f
-  cStructSize = 64
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 24 :: Ptr Image)) (zero)
-    poke ((p `plusPtr` 32 :: Ptr ImageLayout)) (zero)
-    poke ((p `plusPtr` 40 :: Ptr Image)) (zero)
-    poke ((p `plusPtr` 48 :: Ptr ImageLayout)) (zero)
-    f
-
-instance FromCStruct CopyImageToImageInfoEXT where
-  peekCStruct p = do
-    flags <- peek @HostImageCopyFlagsEXT ((p `plusPtr` 16 :: Ptr HostImageCopyFlagsEXT))
-    srcImage <- peek @Image ((p `plusPtr` 24 :: Ptr Image))
-    srcImageLayout <- peek @ImageLayout ((p `plusPtr` 32 :: Ptr ImageLayout))
-    dstImage <- peek @Image ((p `plusPtr` 40 :: Ptr Image))
-    dstImageLayout <- peek @ImageLayout ((p `plusPtr` 48 :: Ptr ImageLayout))
-    regionCount <- peek @Word32 ((p `plusPtr` 52 :: Ptr Word32))
-    pRegions <- peek @(Ptr ImageCopy2) ((p `plusPtr` 56 :: Ptr (Ptr ImageCopy2)))
-    pRegions' <- generateM (fromIntegral regionCount) (\i -> peekCStruct @ImageCopy2 ((pRegions `advancePtrBytes` (88 * (i)) :: Ptr ImageCopy2)))
-    pure $ CopyImageToImageInfoEXT
-             flags srcImage srcImageLayout dstImage dstImageLayout pRegions'
-
-instance Zero CopyImageToImageInfoEXT where
-  zero = CopyImageToImageInfoEXT
-           zero
-           zero
-           zero
-           zero
-           zero
-           mempty
-
-
--- | VkHostImageLayoutTransitionInfoEXT - Structure specifying the parameters
--- of a host-side image layout transition
---
--- = Description
---
--- 'transitionImageLayoutEXT' does not check whether the device memory
--- associated with an image is currently in use before performing the
--- layout transition. The application /must/ guarantee that any previously
--- submitted command that reads from or writes to this subresource has
--- completed before the host performs the layout transition. The memory of
--- @image@ is accessed by the host as if
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-coherent coherent>.
---
--- Image layout transitions performed on the host do not require queue
--- family ownership transfers as the physical layout of the image will not
--- vary between queue families for the layouts supported by this function.
---
--- If the device has written to the image memory, it is not automatically
--- made available to the host. Before this command can be called, a memory
--- barrier for this image /must/ have been issued on the device with the
--- second
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
--- including
--- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_HOST_BIT' and
--- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_HOST_READ_BIT'.
---
--- Because queue submissions
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-submission-host-writes automatically make host memory visible to the device>,
--- there would not be a need for a memory barrier before using the results
--- of this layout transition on the device.
---
--- == Valid Usage
---
--- -   #VUID-VkHostImageLayoutTransitionInfoEXT-image-09055# @image@ /must/
---     have been created with
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_HOST_TRANSFER_BIT_EXT'
---
--- -   #VUID-VkHostImageLayoutTransitionInfoEXT-subresourceRange-01486#
---     @subresourceRange.baseMipLevel@ /must/ be less than the @mipLevels@
---     specified in 'Vulkan.Core10.Image.ImageCreateInfo' when @image@ was
---     created
---
--- -   #VUID-VkHostImageLayoutTransitionInfoEXT-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-VkHostImageLayoutTransitionInfoEXT-subresourceRange-01488#
---     @subresourceRange.baseArrayLayer@ /must/ be less than the
---     @arrayLayers@ specified in 'Vulkan.Core10.Image.ImageCreateInfo'
---     when @image@ was created
---
--- -   #VUID-VkHostImageLayoutTransitionInfoEXT-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-VkHostImageLayoutTransitionInfoEXT-image-01932# If @image@ is
---     non-sparse then it /must/ be bound completely and contiguously to a
---     single 'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-VkHostImageLayoutTransitionInfoEXT-image-09241# If @image@ has
---     a color format that is single-plane, then the @aspectMask@ member of
---     @subresourceRange@ /must/ be
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'
---
--- -   #VUID-VkHostImageLayoutTransitionInfoEXT-image-09242# If @image@ has
---     a color format and is not /disjoint/, then the @aspectMask@ member
---     of @subresourceRange@ /must/ be
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'
---
--- -   #VUID-VkHostImageLayoutTransitionInfoEXT-image-01672# If @image@ has
---     a multi-planar format and the image is /disjoint/, then the
---     @aspectMask@ member of @subresourceRange@ /must/ include at least
---     one
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-planes-image-aspect multi-planar aspect mask>
---     bit or
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'
---
--- -   #VUID-VkHostImageLayoutTransitionInfoEXT-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-VkHostImageLayoutTransitionInfoEXT-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-VkHostImageLayoutTransitionInfoEXT-aspectMask-08702# If the
---     @aspectMask@ member of @subresourceRange@ includes
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT',
---     @oldLayout@ and @newLayout@ /must/ not be one of
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL'
---     or
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL'
---
--- -   #VUID-VkHostImageLayoutTransitionInfoEXT-aspectMask-08703# If the
---     @aspectMask@ member of @subresourceRange@ includes
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT',
---     @oldLayout@ and @newLayout@ /must/ not be one of
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL'
---     or
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL'
---
--- -   #VUID-VkHostImageLayoutTransitionInfoEXT-subresourceRange-09601#
---     @subresourceRange.aspectMask@ /must/ be valid for the @format@ the
---     @image@ was created with
---
--- -   #VUID-VkHostImageLayoutTransitionInfoEXT-oldLayout-09229#
---     @oldLayout@ /must/ be either
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_UNDEFINED' or the
---     current layout of the image subresources as specified in
---     @subresourceRange@
---
--- -   #VUID-VkHostImageLayoutTransitionInfoEXT-oldLayout-09230# If
---     @oldLayout@ is not
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_UNDEFINED' or
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_PREINITIALIZED', it
---     /must/ be one of the layouts in
---     'PhysicalDeviceHostImageCopyPropertiesEXT'::@pCopySrcLayouts@
---
--- -   #VUID-VkHostImageLayoutTransitionInfoEXT-newLayout-09057#
---     @newLayout@ /must/ be one of the layouts in
---     'PhysicalDeviceHostImageCopyPropertiesEXT'::@pCopyDstLayouts@
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkHostImageLayoutTransitionInfoEXT-sType-sType# @sType@ /must/
---     be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO_EXT'
---
--- -   #VUID-VkHostImageLayoutTransitionInfoEXT-pNext-pNext# @pNext@ /must/
---     be @NULL@
---
--- -   #VUID-VkHostImageLayoutTransitionInfoEXT-image-parameter# @image@
---     /must/ be a valid 'Vulkan.Core10.Handles.Image' handle
---
--- -   #VUID-VkHostImageLayoutTransitionInfoEXT-oldLayout-parameter#
---     @oldLayout@ /must/ be a valid
---     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' value
---
--- -   #VUID-VkHostImageLayoutTransitionInfoEXT-newLayout-parameter#
---     @newLayout@ /must/ be a valid
---     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' value
---
--- -   #VUID-VkHostImageLayoutTransitionInfoEXT-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_EXT_host_image_copy VK_EXT_host_image_copy>,
--- 'Vulkan.Core10.Handles.Image',
--- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout',
--- 'Vulkan.Core10.ImageView.ImageSubresourceRange',
--- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'transitionImageLayoutEXT'
-data HostImageLayoutTransitionInfoEXT = HostImageLayoutTransitionInfoEXT
-  { -- | @image@ is a handle to the image affected by this layout transition.
-    image :: Image
-  , -- | @oldLayout@ is the old layout in an
-    -- <https://registry.khronos.org/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>.
-    newLayout :: ImageLayout
-  , -- | @subresourceRange@ describes the
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-views image subresource range>
-    -- within @image@ that is affected by this layout transition.
-    subresourceRange :: ImageSubresourceRange
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (HostImageLayoutTransitionInfoEXT)
-#endif
-deriving instance Show HostImageLayoutTransitionInfoEXT
-
-instance ToCStruct HostImageLayoutTransitionInfoEXT where
-  withCStruct x f = allocaBytes 56 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p HostImageLayoutTransitionInfoEXT{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Image)) (image)
-    poke ((p `plusPtr` 24 :: Ptr ImageLayout)) (oldLayout)
-    poke ((p `plusPtr` 28 :: Ptr ImageLayout)) (newLayout)
-    poke ((p `plusPtr` 32 :: Ptr ImageSubresourceRange)) (subresourceRange)
-    f
-  cStructSize = 56
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Image)) (zero)
-    poke ((p `plusPtr` 24 :: Ptr ImageLayout)) (zero)
-    poke ((p `plusPtr` 28 :: Ptr ImageLayout)) (zero)
-    poke ((p `plusPtr` 32 :: Ptr ImageSubresourceRange)) (zero)
-    f
-
-instance FromCStruct HostImageLayoutTransitionInfoEXT where
-  peekCStruct p = do
-    image <- peek @Image ((p `plusPtr` 16 :: Ptr Image))
-    oldLayout <- peek @ImageLayout ((p `plusPtr` 24 :: Ptr ImageLayout))
-    newLayout <- peek @ImageLayout ((p `plusPtr` 28 :: Ptr ImageLayout))
-    subresourceRange <- peekCStruct @ImageSubresourceRange ((p `plusPtr` 32 :: Ptr ImageSubresourceRange))
-    pure $ HostImageLayoutTransitionInfoEXT
-             image oldLayout newLayout subresourceRange
-
-instance Storable HostImageLayoutTransitionInfoEXT where
-  sizeOf ~_ = 56
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero HostImageLayoutTransitionInfoEXT where
-  zero = HostImageLayoutTransitionInfoEXT
-           zero
-           zero
-           zero
-           zero
-
-
--- | VkSubresourceHostMemcpySizeEXT - Memory size needed to copy to or from
--- an image on the host with VK_HOST_IMAGE_COPY_MEMCPY_EXT
---
--- == Valid Usage (Implicit)
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_host_image_copy VK_EXT_host_image_copy>,
--- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data SubresourceHostMemcpySizeEXT = SubresourceHostMemcpySizeEXT
-  { -- | @size@ is the size in bytes of the image subresource.
-    size :: DeviceSize }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (SubresourceHostMemcpySizeEXT)
-#endif
-deriving instance Show SubresourceHostMemcpySizeEXT
-
-instance ToCStruct SubresourceHostMemcpySizeEXT where
-  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p SubresourceHostMemcpySizeEXT{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (size)
-    f
-  cStructSize = 24
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (zero)
-    f
-
-instance FromCStruct SubresourceHostMemcpySizeEXT where
-  peekCStruct p = do
-    size <- peek @DeviceSize ((p `plusPtr` 16 :: Ptr DeviceSize))
-    pure $ SubresourceHostMemcpySizeEXT
-             size
-
-instance Storable SubresourceHostMemcpySizeEXT where
-  sizeOf ~_ = 24
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero SubresourceHostMemcpySizeEXT where
-  zero = SubresourceHostMemcpySizeEXT
-           zero
-
-
--- | VkHostImageCopyDevicePerformanceQueryEXT - Struct containing information
--- about optimality of device access
---
--- = Description
---
--- The implementation /may/ return 'Vulkan.Core10.FundamentalTypes.FALSE'
--- in @optimalDeviceAccess@ if @identicalMemoryLayout@ is
--- 'Vulkan.Core10.FundamentalTypes.FALSE'. If @identicalMemoryLayout@ is
--- 'Vulkan.Core10.FundamentalTypes.TRUE', @optimalDeviceAccess@ /must/ be
--- 'Vulkan.Core10.FundamentalTypes.TRUE'.
---
--- The implementation /may/ return 'Vulkan.Core10.FundamentalTypes.TRUE' in
--- @optimalDeviceAccess@ while @identicalMemoryLayout@ is
--- 'Vulkan.Core10.FundamentalTypes.FALSE'. In this situation, any device
--- performance impact /should/ not be measurable.
---
--- If
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceImageFormatInfo2'::@format@
--- is a block-compressed format and
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'
--- returns 'Vulkan.Core10.Enums.Result.SUCCESS', the implementation /must/
--- return 'Vulkan.Core10.FundamentalTypes.TRUE' in @optimalDeviceAccess@.
---
--- Applications can make use of @optimalDeviceAccess@ to determine their
--- resource copying strategy. If a resource is expected to be accessed more
--- on device than on the host, and the implementation considers the
--- resource sub-optimally accessed, it is likely better to use device
--- copies instead.
---
--- Layout not being identical yet still considered optimal for device
--- access could happen if the implementation has different memory layout
--- patterns, some of which are easier to access on the host.
---
--- The most practical reason for @optimalDeviceAccess@ to be
--- 'Vulkan.Core10.FundamentalTypes.FALSE' is that host image access may
--- disable framebuffer compression where it would otherwise have been
--- enabled. This represents far more efficient host image access since no
--- compression algorithm is required to read or write to the image, but it
--- would impact device access performance. Some implementations may only
--- set @optimalDeviceAccess@ to 'Vulkan.Core10.FundamentalTypes.FALSE' if
--- certain conditions are met, such as specific image usage flags or
--- creation flags.
---
--- == Valid Usage (Implicit)
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_host_image_copy VK_EXT_host_image_copy>,
--- 'Vulkan.Core10.FundamentalTypes.Bool32',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data HostImageCopyDevicePerformanceQueryEXT = HostImageCopyDevicePerformanceQueryEXT
-  { -- | @optimalDeviceAccess@ returns 'Vulkan.Core10.FundamentalTypes.TRUE' if
-    -- use of host image copy has no adverse effect on device access
-    -- performance, compared to an image that is created with exact same
-    -- creation parameters, and bound to the same
-    -- 'Vulkan.Core10.Handles.DeviceMemory', except that
-    -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_HOST_TRANSFER_BIT_EXT'
-    -- is replaced with
-    -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_SRC_BIT'
-    -- and
-    -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'.
-    optimalDeviceAccess :: Bool
-  , -- | @identicalMemoryLayout@ returns 'Vulkan.Core10.FundamentalTypes.TRUE' if
-    -- use of host image copy has no impact on memory layout compared to an
-    -- image that is created with exact same creation parameters, and bound to
-    -- the same 'Vulkan.Core10.Handles.DeviceMemory', except that
-    -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_HOST_TRANSFER_BIT_EXT'
-    -- is replaced with
-    -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_SRC_BIT'
-    -- and
-    -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'.
-    identicalMemoryLayout :: Bool
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (HostImageCopyDevicePerformanceQueryEXT)
-#endif
-deriving instance Show HostImageCopyDevicePerformanceQueryEXT
-
-instance ToCStruct HostImageCopyDevicePerformanceQueryEXT where
-  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p HostImageCopyDevicePerformanceQueryEXT{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (optimalDeviceAccess))
-    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (identicalMemoryLayout))
-    f
-  cStructSize = 24
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY_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 HostImageCopyDevicePerformanceQueryEXT where
-  peekCStruct p = do
-    optimalDeviceAccess <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
-    identicalMemoryLayout <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
-    pure $ HostImageCopyDevicePerformanceQueryEXT
-             (bool32ToBool optimalDeviceAccess)
-             (bool32ToBool identicalMemoryLayout)
-
-instance Storable HostImageCopyDevicePerformanceQueryEXT where
-  sizeOf ~_ = 24
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero HostImageCopyDevicePerformanceQueryEXT where
-  zero = HostImageCopyDevicePerformanceQueryEXT
-           zero
-           zero
-
-
-type HostImageCopyFlagsEXT = HostImageCopyFlagBitsEXT
-
--- | VkHostImageCopyFlagBitsEXT - Bitmask specifying additional copy
--- parameters
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_host_image_copy VK_EXT_host_image_copy>,
--- 'HostImageCopyFlagsEXT'
-newtype HostImageCopyFlagBitsEXT = HostImageCopyFlagBitsEXT Flags
-  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
-
--- | 'HOST_IMAGE_COPY_MEMCPY_EXT' specifies that no memory layout swizzling
--- is to be applied during data copy. For copies between memory and images,
--- this flag indicates that image data in host memory is swizzled in
--- exactly the same way as the image data on the device. Using this flag
--- indicates that the implementations /may/ use a simple memory copy to
--- transfer the data between the host memory and the device memory. The
--- format of the swizzled data in host memory is platform dependent and is
--- not defined in this specification.
-pattern HOST_IMAGE_COPY_MEMCPY_EXT = HostImageCopyFlagBitsEXT 0x00000001
-
-conNameHostImageCopyFlagBitsEXT :: String
-conNameHostImageCopyFlagBitsEXT = "HostImageCopyFlagBitsEXT"
-
-enumPrefixHostImageCopyFlagBitsEXT :: String
-enumPrefixHostImageCopyFlagBitsEXT = "HOST_IMAGE_COPY_MEMCPY_EXT"
-
-showTableHostImageCopyFlagBitsEXT :: [(HostImageCopyFlagBitsEXT, String)]
-showTableHostImageCopyFlagBitsEXT = [(HOST_IMAGE_COPY_MEMCPY_EXT, "")]
-
-instance Show HostImageCopyFlagBitsEXT where
-  showsPrec =
-    enumShowsPrec
-      enumPrefixHostImageCopyFlagBitsEXT
-      showTableHostImageCopyFlagBitsEXT
-      conNameHostImageCopyFlagBitsEXT
-      (\(HostImageCopyFlagBitsEXT x) -> x)
-      (\x -> showString "0x" . showHex x)
-
-instance Read HostImageCopyFlagBitsEXT where
-  readPrec =
-    enumReadPrec
-      enumPrefixHostImageCopyFlagBitsEXT
-      showTableHostImageCopyFlagBitsEXT
-      conNameHostImageCopyFlagBitsEXT
-      HostImageCopyFlagBitsEXT
-
--- No documentation found for TopLevel "VkImageSubresource2EXT"
-type ImageSubresource2EXT = ImageSubresource2KHR
-
-
--- No documentation found for TopLevel "VkSubresourceLayout2EXT"
-type SubresourceLayout2EXT = SubresourceLayout2KHR
+-- [__Deprecation State__]
+--
+--     -   /Promoted/ to
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.4-promotions Vulkan 1.4>
+--
+-- [__Contact__]
+--
+--     -   Shahbaz Youssefi
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_host_image_copy] @syoussefi%0A*Here describe the issue or question you have about the VK_EXT_host_image_copy extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_EXT_host_image_copy.adoc VK_EXT_host_image_copy>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2023-04-26
+--
+-- [__Contributors__]
+--
+--     -   Shahbaz Youssefi, Google
+--
+--     -   Faith Ekstrand, Collabora
+--
+--     -   Hans-Kristian Arntzen, Valve
+--
+--     -   Piers Daniell, NVIDIA
+--
+--     -   Jan-Harald Fredriksen, Arm
+--
+--     -   James Fitzpatrick, Imagination
+--
+--     -   Daniel Story, Nintendo
+--
+-- == Description
+--
+-- This extension allows applications to copy data between host memory and
+-- images on the host processor, without staging the data through a
+-- GPU-accessible buffer. This removes the need to allocate and manage the
+-- buffer and its associated memory. On some architectures it may also
+-- eliminate an extra copy operation. This extension additionally allows
+-- applications to copy data between images on the host.
+--
+-- To support initializing a new image in preparation for a host copy, it
+-- is now possible to transition a new image to
+-- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL' or other
+-- host-copyable layouts via 'transitionImageLayoutEXT'. Additionally, it
+-- is possible to perform copies that preserve the swizzling layout of the
+-- image by using the 'HOST_IMAGE_COPY_MEMCPY_BIT_EXT' flag. In that case,
+-- the memory size needed for copies to or from a buffer can be retrieved
+-- by chaining 'SubresourceHostMemcpySizeEXT' to @pLayout@ in
+-- 'getImageSubresourceLayout2EXT'.
+--
+-- == New Commands
+--
+-- -   'copyImageToImageEXT'
+--
+-- -   'copyImageToMemoryEXT'
+--
+-- -   'copyMemoryToImageEXT'
+--
+-- -   'getImageSubresourceLayout2EXT'
+--
+-- -   'transitionImageLayoutEXT'
+--
+-- == New Structures
+--
+-- -   'CopyImageToImageInfoEXT'
+--
+-- -   'CopyImageToMemoryInfoEXT'
+--
+-- -   'CopyMemoryToImageInfoEXT'
+--
+-- -   'HostImageLayoutTransitionInfoEXT'
+--
+-- -   'ImageSubresource2EXT'
+--
+-- -   'ImageToMemoryCopyEXT'
+--
+-- -   'MemoryToImageCopyEXT'
+--
+-- -   'SubresourceLayout2EXT'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.ImageFormatProperties2':
+--
+--     -   'HostImageCopyDevicePerformanceQueryEXT'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceHostImageCopyFeaturesEXT'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDeviceHostImageCopyPropertiesEXT'
+--
+-- -   Extending
+--     'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.SubresourceLayout2':
+--
+--     -   'SubresourceHostMemcpySizeEXT'
+--
+-- == New Enums
+--
+-- -   'HostImageCopyFlagBitsEXT'
+--
+-- == New Bitmasks
+--
+-- -   'HostImageCopyFlagsEXT'
+--
+-- == New Enum Constants
+--
+-- -   'EXT_HOST_IMAGE_COPY_EXTENSION_NAME'
+--
+-- -   'EXT_HOST_IMAGE_COPY_SPEC_VERSION'
+--
+-- -   Extending
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FormatFeatureFlagBits2':
+--
+--     -   'FORMAT_FEATURE_2_HOST_IMAGE_TRANSFER_BIT_EXT'
+--
+-- -   Extending
+--     'Vulkan.Core14.Enums.HostImageCopyFlagBits.HostImageCopyFlagBits':
+--
+--     -   'HOST_IMAGE_COPY_MEMCPY_BIT_EXT'
+--
+--     -   'HOST_IMAGE_COPY_MEMCPY_EXT'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlagBits':
+--
+--     -   'IMAGE_USAGE_HOST_TRANSFER_BIT_EXT'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO_EXT'
+--
+--     -   'STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO_EXT'
+--
+--     -   'STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO_EXT'
+--
+--     -   'STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY_EXT'
+--
+--     -   'STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO_EXT'
+--
+--     -   'STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY_EXT'
+--
+--     -   'STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY_EXT'
+--
+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES_EXT'
+--
+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES_EXT'
+--
+--     -   'STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE_EXT'
+--
+-- == Promotion to Vulkan 1.4
+--
+-- Functionality in this extension is included in core Vulkan 1.4, with the
+-- EXT suffix omitted. However, the feature is made optional in Vulkan 1.4.
+-- The original type, enum, and command names are still available as
+-- aliases of the core functionality.
+--
+-- A Vulkan 1.4 implementation that has a
+-- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' queue must
+-- support either:
+--
+-- -   the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-hostImageCopy hostImageCopy>
+--     feature; or
+--
+-- -   an additional queue that supports
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_TRANSFER_BIT'.
+--
+-- Additionally, all queues supporting
+-- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' or
+-- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT' must also
+-- advertise 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_TRANSFER_BIT'.
+--
+-- == Issues
+--
+-- 1) When uploading data to an image, the data is usually loaded from
+-- disk. Why not have the application load the data directly into a
+-- 'Vulkan.Core10.Handles.DeviceMemory' bound to a buffer (instead of host
+-- memory), and use
+-- 'Vulkan.Core10.CommandBufferBuilding.cmdCopyBufferToImage'? The same
+-- could be done when downloading data from an image.
+--
+-- __RESOLVED__: This may not always be possible. Complicated Vulkan
+-- applications such as game engines often have decoupled subsystems for
+-- streaming data and rendering. It may be unreasonable to require the
+-- streaming subsystem to coordinate with the rendering subsystem to
+-- allocate memory on its behalf, especially as Vulkan may not be the only
+-- API supported by the engine. In emulation layers, the image data is
+-- necessarily provided by the application in host memory, so an
+-- optimization as suggested is not possible. Most importantly, the device
+-- memory may not be mappable by an application, but still accessible to
+-- the driver.
+--
+-- 2) Are @optimalBufferCopyOffsetAlignment@ and
+-- @optimalBufferCopyRowPitchAlignment@ applicable to host memory as well
+-- with the functions introduced by this extension? Or should there be new
+-- limits?
+--
+-- __RESOLVED__: No alignment requirements for the host memory pointer.
+--
+-- 3) Should there be granularity requirements for image offsets and
+-- extents?
+--
+-- __RESOLVED__: No granularity requirements, i.e. a granularity of 1 pixel
+-- (for non-compressed formats) and 1 texel block (for compressed formats)
+-- is assumed.
+--
+-- 4) How should the application deal with layout transitions before or
+-- after copying to or from images?
+--
+-- __RESOLVED__: An existing issue with linear images is that when
+-- emulating other APIs, it is impossible to know when to transition them
+-- as they are written to by the host and then used bindlessly. The copy
+-- operations in this extension are affected by the same limitation. A new
+-- command is thus introduced by this extension to address this problem by
+-- allowing the host to perform an image layout transition between a
+-- handful of layouts.
+--
+-- == Version History
+--
+-- -   Revision 0, 2021-01-20 (Faith Ekstrand)
+--
+--     -   Initial idea and xml
+--
+-- -   Revision 1, 2023-04-26 (Shahbaz Youssefi)
+--
+--     -   Initial revision
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_host_image_copy 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_host_image_copy  ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES_EXT
+                                                 , pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES_EXT
+                                                 , pattern STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY_EXT
+                                                 , pattern STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY_EXT
+                                                 , pattern STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO_EXT
+                                                 , pattern STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO_EXT
+                                                 , pattern STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO_EXT
+                                                 , pattern STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO_EXT
+                                                 , pattern STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE_EXT
+                                                 , pattern STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY_EXT
+                                                 , pattern IMAGE_USAGE_HOST_TRANSFER_BIT_EXT
+                                                 , pattern FORMAT_FEATURE_2_HOST_IMAGE_TRANSFER_BIT_EXT
+                                                 , pattern HOST_IMAGE_COPY_MEMCPY_BIT_EXT
+                                                 , pattern HOST_IMAGE_COPY_MEMCPY_EXT
+                                                 , copyMemoryToImageEXT
+                                                 , copyImageToMemoryEXT
+                                                 , copyImageToImageEXT
+                                                 , transitionImageLayoutEXT
+                                                 , getImageSubresourceLayout2EXT
+                                                 , HostImageCopyFlagsEXT
+                                                 , HostImageCopyFlagBitsEXT
+                                                 , PhysicalDeviceHostImageCopyFeaturesEXT
+                                                 , PhysicalDeviceHostImageCopyPropertiesEXT
+                                                 , MemoryToImageCopyEXT
+                                                 , ImageToMemoryCopyEXT
+                                                 , CopyMemoryToImageInfoEXT
+                                                 , CopyImageToMemoryInfoEXT
+                                                 , CopyImageToImageInfoEXT
+                                                 , HostImageLayoutTransitionInfoEXT
+                                                 , SubresourceHostMemcpySizeEXT
+                                                 , HostImageCopyDevicePerformanceQueryEXT
+                                                 , ImageSubresource2EXT
+                                                 , SubresourceLayout2EXT
+                                                 , EXT_HOST_IMAGE_COPY_SPEC_VERSION
+                                                 , pattern EXT_HOST_IMAGE_COPY_SPEC_VERSION
+                                                 , EXT_HOST_IMAGE_COPY_EXTENSION_NAME
+                                                 , pattern EXT_HOST_IMAGE_COPY_EXTENSION_NAME
+                                                 ) where
+
+import Data.String (IsString)
+import Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy (copyImageToImage)
+import Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy (copyImageToMemory)
+import Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy (copyMemoryToImage)
+import Vulkan.Core14.Promoted_From_VK_KHR_maintenance5 (getImageSubresourceLayout2)
+import Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy (transitionImageLayout)
+import Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy (CopyImageToImageInfo)
+import Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy (CopyImageToMemoryInfo)
+import Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy (CopyMemoryToImageInfo)
+import Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy (HostImageCopyDevicePerformanceQuery)
+import Vulkan.Core14.Enums.HostImageCopyFlagBits (HostImageCopyFlagBits)
+import Vulkan.Core14.Enums.HostImageCopyFlagBits (HostImageCopyFlags)
+import Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy (HostImageLayoutTransitionInfo)
+import Vulkan.Core14.Promoted_From_VK_KHR_maintenance5 (ImageSubresource2)
+import Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy (ImageToMemoryCopy)
+import Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy (MemoryToImageCopy)
+import Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy (PhysicalDeviceHostImageCopyFeatures)
+import Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy (PhysicalDeviceHostImageCopyProperties)
+import Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy (SubresourceHostMemcpySize)
+import Vulkan.Core14.Promoted_From_VK_KHR_maintenance5 (SubresourceLayout2)
+import Vulkan.Core13.Enums.FormatFeatureFlags2 (FormatFeatureFlags2)
+import Vulkan.Core13.Enums.FormatFeatureFlags2 (FormatFeatureFlagBits2(FORMAT_FEATURE_2_HOST_IMAGE_TRANSFER_BIT))
+import Vulkan.Core14.Enums.HostImageCopyFlagBits (HostImageCopyFlags)
+import Vulkan.Core14.Enums.HostImageCopyFlagBits (HostImageCopyFlagBits(HOST_IMAGE_COPY_MEMCPY_BIT))
+import Vulkan.Core10.Enums.ImageUsageFlagBits (ImageUsageFlags)
+import Vulkan.Core10.Enums.ImageUsageFlagBits (ImageUsageFlagBits(IMAGE_USAGE_HOST_TRANSFER_BIT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE))
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES_EXT = STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES
+
+
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES_EXT = STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES
+
+
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY_EXT"
+pattern STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY_EXT = STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY
+
+
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY_EXT"
+pattern STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY_EXT = STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY
+
+
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO_EXT"
+pattern STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO_EXT = STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO
+
+
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO_EXT"
+pattern STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO_EXT = STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO
+
+
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO_EXT"
+pattern STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO_EXT = STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO
+
+
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO_EXT"
+pattern STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO_EXT = STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO
+
+
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE_EXT"
+pattern STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE_EXT = STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE
+
+
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY_EXT"
+pattern STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY_EXT = STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY
+
+
+-- No documentation found for TopLevel "VK_IMAGE_USAGE_HOST_TRANSFER_BIT_EXT"
+pattern IMAGE_USAGE_HOST_TRANSFER_BIT_EXT = IMAGE_USAGE_HOST_TRANSFER_BIT
+
+
+-- No documentation found for TopLevel "VK_FORMAT_FEATURE_2_HOST_IMAGE_TRANSFER_BIT_EXT"
+pattern FORMAT_FEATURE_2_HOST_IMAGE_TRANSFER_BIT_EXT = FORMAT_FEATURE_2_HOST_IMAGE_TRANSFER_BIT
+
+
+-- No documentation found for TopLevel "VK_HOST_IMAGE_COPY_MEMCPY_BIT_EXT"
+pattern HOST_IMAGE_COPY_MEMCPY_BIT_EXT = HOST_IMAGE_COPY_MEMCPY_BIT
+
+
+-- No documentation found for TopLevel "VK_HOST_IMAGE_COPY_MEMCPY_EXT"
+pattern HOST_IMAGE_COPY_MEMCPY_EXT = HOST_IMAGE_COPY_MEMCPY_BIT
+
+
+-- No documentation found for TopLevel "vkCopyMemoryToImageEXT"
+copyMemoryToImageEXT = copyMemoryToImage
+
+
+-- No documentation found for TopLevel "vkCopyImageToMemoryEXT"
+copyImageToMemoryEXT = copyImageToMemory
+
+
+-- No documentation found for TopLevel "vkCopyImageToImageEXT"
+copyImageToImageEXT = copyImageToImage
+
+
+-- No documentation found for TopLevel "vkTransitionImageLayoutEXT"
+transitionImageLayoutEXT = transitionImageLayout
+
+
+-- No documentation found for TopLevel "vkGetImageSubresourceLayout2EXT"
+getImageSubresourceLayout2EXT = getImageSubresourceLayout2
+
+
+-- No documentation found for TopLevel "VkHostImageCopyFlagsEXT"
+type HostImageCopyFlagsEXT = HostImageCopyFlags
+
+
+-- No documentation found for TopLevel "VkHostImageCopyFlagBitsEXT"
+type HostImageCopyFlagBitsEXT = HostImageCopyFlagBits
+
+
+-- No documentation found for TopLevel "VkPhysicalDeviceHostImageCopyFeaturesEXT"
+type PhysicalDeviceHostImageCopyFeaturesEXT = PhysicalDeviceHostImageCopyFeatures
+
+
+-- No documentation found for TopLevel "VkPhysicalDeviceHostImageCopyPropertiesEXT"
+type PhysicalDeviceHostImageCopyPropertiesEXT = PhysicalDeviceHostImageCopyProperties
+
+
+-- No documentation found for TopLevel "VkMemoryToImageCopyEXT"
+type MemoryToImageCopyEXT = MemoryToImageCopy
+
+
+-- No documentation found for TopLevel "VkImageToMemoryCopyEXT"
+type ImageToMemoryCopyEXT = ImageToMemoryCopy
+
+
+-- No documentation found for TopLevel "VkCopyMemoryToImageInfoEXT"
+type CopyMemoryToImageInfoEXT = CopyMemoryToImageInfo
+
+
+-- No documentation found for TopLevel "VkCopyImageToMemoryInfoEXT"
+type CopyImageToMemoryInfoEXT = CopyImageToMemoryInfo
+
+
+-- No documentation found for TopLevel "VkCopyImageToImageInfoEXT"
+type CopyImageToImageInfoEXT = CopyImageToImageInfo
+
+
+-- No documentation found for TopLevel "VkHostImageLayoutTransitionInfoEXT"
+type HostImageLayoutTransitionInfoEXT = HostImageLayoutTransitionInfo
+
+
+-- No documentation found for TopLevel "VkSubresourceHostMemcpySizeEXT"
+type SubresourceHostMemcpySizeEXT = SubresourceHostMemcpySize
+
+
+-- No documentation found for TopLevel "VkHostImageCopyDevicePerformanceQueryEXT"
+type HostImageCopyDevicePerformanceQueryEXT = HostImageCopyDevicePerformanceQuery
+
+
+-- No documentation found for TopLevel "VkImageSubresource2EXT"
+type ImageSubresource2EXT = ImageSubresource2
+
+
+-- No documentation found for TopLevel "VkSubresourceLayout2EXT"
+type SubresourceLayout2EXT = SubresourceLayout2
 
 
 type EXT_HOST_IMAGE_COPY_SPEC_VERSION = 1
diff --git a/src/Vulkan/Extensions/VK_EXT_host_image_copy.hs-boot b/src/Vulkan/Extensions/VK_EXT_host_image_copy.hs-boot
deleted file mode 100644
--- a/src/Vulkan/Extensions/VK_EXT_host_image_copy.hs-boot
+++ /dev/null
@@ -1,343 +0,0 @@
-{-# language CPP #-}
--- | = Name
---
--- VK_EXT_host_image_copy - device extension
---
--- = VK_EXT_host_image_copy
---
--- [__Name String__]
---     @VK_EXT_host_image_copy@
---
--- [__Extension Type__]
---     Device extension
---
--- [__Registered Extension Number__]
---     271
---
--- [__Revision__]
---     1
---
--- [__Ratification Status__]
---     Ratified
---
--- [__Extension and Version Dependencies__]
---             
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
---              or
---             
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
---          and
---         
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_copy_commands2 VK_KHR_copy_commands2>
---          and
---         
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_format_feature_flags2 VK_KHR_format_feature_flags2>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3 Vulkan Version 1.3>
---
--- [__Contact__]
---
---     -   Shahbaz Youssefi
---         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_host_image_copy] @syoussefi%0A*Here describe the issue or question you have about the VK_EXT_host_image_copy extension* >
---
--- [__Extension Proposal__]
---     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_EXT_host_image_copy.adoc VK_EXT_host_image_copy>
---
--- == Other Extension Metadata
---
--- [__Last Modified Date__]
---     2023-04-26
---
--- [__Contributors__]
---
---     -   Shahbaz Youssefi, Google
---
---     -   Faith Ekstrand, Collabora
---
---     -   Hans-Kristian Arntzen, Valve
---
---     -   Piers Daniell, NVIDIA
---
---     -   Jan-Harald Fredriksen, Arm
---
---     -   James Fitzpatrick, Imagination
---
---     -   Daniel Story, Nintendo
---
--- == Description
---
--- This extension allows applications to copy data between host memory and
--- images on the host processor, without staging the data through a
--- GPU-accessible buffer. This removes the need to allocate and manage the
--- buffer and its associated memory. On some architectures it may also
--- eliminate an extra copy operation. This extension additionally allows
--- applications to copy data between images on the host.
---
--- To support initializing a new image in preparation for a host copy, it
--- is now possible to transition a new image to
--- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL' or other
--- host-copyable layouts via 'transitionImageLayoutEXT'. Additionally, it
--- is possible to perform copies that preserve the swizzling layout of the
--- image by using the 'HOST_IMAGE_COPY_MEMCPY_EXT' flag. In that case, the
--- memory size needed for copies to or from a buffer can be retrieved by
--- chaining 'SubresourceHostMemcpySizeEXT' to @pLayout@ in
--- 'getImageSubresourceLayout2EXT'.
---
--- == New Commands
---
--- -   'copyImageToImageEXT'
---
--- -   'copyImageToMemoryEXT'
---
--- -   'copyMemoryToImageEXT'
---
--- -   'getImageSubresourceLayout2EXT'
---
--- -   'transitionImageLayoutEXT'
---
--- == New Structures
---
--- -   'CopyImageToImageInfoEXT'
---
--- -   'CopyImageToMemoryInfoEXT'
---
--- -   'CopyMemoryToImageInfoEXT'
---
--- -   'HostImageLayoutTransitionInfoEXT'
---
--- -   'ImageSubresource2EXT'
---
--- -   'ImageToMemoryCopyEXT'
---
--- -   'MemoryToImageCopyEXT'
---
--- -   'SubresourceLayout2EXT'
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.ImageFormatProperties2':
---
---     -   'HostImageCopyDevicePerformanceQueryEXT'
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
---     'Vulkan.Core10.Device.DeviceCreateInfo':
---
---     -   'PhysicalDeviceHostImageCopyFeaturesEXT'
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
---
---     -   'PhysicalDeviceHostImageCopyPropertiesEXT'
---
--- -   Extending
---     'Vulkan.Extensions.VK_KHR_maintenance5.SubresourceLayout2KHR':
---
---     -   'SubresourceHostMemcpySizeEXT'
---
--- == New Enums
---
--- -   'HostImageCopyFlagBitsEXT'
---
--- == New Bitmasks
---
--- -   'HostImageCopyFlagsEXT'
---
--- == New Enum Constants
---
--- -   'EXT_HOST_IMAGE_COPY_EXTENSION_NAME'
---
--- -   'EXT_HOST_IMAGE_COPY_SPEC_VERSION'
---
--- -   Extending
---     'Vulkan.Core13.Enums.FormatFeatureFlags2.FormatFeatureFlagBits2':
---
---     -   'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_HOST_IMAGE_TRANSFER_BIT_EXT'
---
--- -   Extending
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlagBits':
---
---     -   'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_HOST_TRANSFER_BIT_EXT'
---
--- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO_EXT'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO_EXT'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO_EXT'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY_EXT'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO_EXT'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY_EXT'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY_EXT'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES_EXT'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES_EXT'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE_EXT'
---
--- == Issues
---
--- 1) When uploading data to an image, the data is usually loaded from
--- disk. Why not have the application load the data directly into a
--- 'Vulkan.Core10.Handles.DeviceMemory' bound to a buffer (instead of host
--- memory), and use
--- 'Vulkan.Core10.CommandBufferBuilding.cmdCopyBufferToImage'? The same
--- could be done when downloading data from an image.
---
--- __RESOLVED__: This may not always be possible. Complicated Vulkan
--- applications such as game engines often have decoupled subsystems for
--- streaming data and rendering. It may be unreasonable to require the
--- streaming subsystem to coordinate with the rendering subsystem to
--- allocate memory on its behalf, especially as Vulkan may not be the only
--- API supported by the engine. In emulation layers, the image data is
--- necessarily provided by the application in host memory, so an
--- optimization as suggested is not possible. Most importantly, the device
--- memory may not be mappable by an application, but still accessible to
--- the driver.
---
--- 2) Are @optimalBufferCopyOffsetAlignment@ and
--- @optimalBufferCopyRowPitchAlignment@ applicable to host memory as well
--- with the functions introduced by this extension? Or should there be new
--- limits?
---
--- __RESOLVED__: No alignment requirements for the host memory pointer.
---
--- 3) Should there be granularity requirements for image offsets and
--- extents?
---
--- __RESOLVED__: No granularity requirements, i.e. a granularity of 1 pixel
--- (for non-compressed formats) and 1 texel block (for compressed formats)
--- is assumed.
---
--- 4) How should the application deal with layout transitions before or
--- after copying to or from images?
---
--- __RESOLVED__: An existing issue with linear images is that when
--- emulating other APIs, it is impossible to know when to transition them
--- as they are written to by the host and then used bindlessly. The copy
--- operations in this extension are affected by the same limitation. A new
--- command is thus introduced by this extension to address this problem by
--- allowing the host to perform an image layout transition between a
--- handful of layouts.
---
--- == Version History
---
--- -   Revision 0, 2021-01-20 (Faith Ekstrand)
---
---     -   Initial idea and xml
---
--- -   Revision 1, 2023-04-26 (Shahbaz Youssefi)
---
---     -   Initial revision
---
--- == See Also
---
--- No cross-references are available
---
--- == Document Notes
---
--- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_host_image_copy 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_host_image_copy  ( CopyImageToImageInfoEXT
-                                                 , CopyImageToMemoryInfoEXT
-                                                 , CopyMemoryToImageInfoEXT
-                                                 , HostImageCopyDevicePerformanceQueryEXT
-                                                 , HostImageLayoutTransitionInfoEXT
-                                                 , ImageToMemoryCopyEXT
-                                                 , MemoryToImageCopyEXT
-                                                 , PhysicalDeviceHostImageCopyFeaturesEXT
-                                                 , PhysicalDeviceHostImageCopyPropertiesEXT
-                                                 , SubresourceHostMemcpySizeEXT
-                                                 ) where
-
-import Vulkan.CStruct (FromCStruct)
-import Vulkan.CStruct (ToCStruct)
-import Data.Kind (Type)
-
-data CopyImageToImageInfoEXT
-
-instance ToCStruct CopyImageToImageInfoEXT
-instance Show CopyImageToImageInfoEXT
-
-instance FromCStruct CopyImageToImageInfoEXT
-
-
-data CopyImageToMemoryInfoEXT
-
-instance ToCStruct CopyImageToMemoryInfoEXT
-instance Show CopyImageToMemoryInfoEXT
-
-instance FromCStruct CopyImageToMemoryInfoEXT
-
-
-data CopyMemoryToImageInfoEXT
-
-instance ToCStruct CopyMemoryToImageInfoEXT
-instance Show CopyMemoryToImageInfoEXT
-
-instance FromCStruct CopyMemoryToImageInfoEXT
-
-
-data HostImageCopyDevicePerformanceQueryEXT
-
-instance ToCStruct HostImageCopyDevicePerformanceQueryEXT
-instance Show HostImageCopyDevicePerformanceQueryEXT
-
-instance FromCStruct HostImageCopyDevicePerformanceQueryEXT
-
-
-data HostImageLayoutTransitionInfoEXT
-
-instance ToCStruct HostImageLayoutTransitionInfoEXT
-instance Show HostImageLayoutTransitionInfoEXT
-
-instance FromCStruct HostImageLayoutTransitionInfoEXT
-
-
-data ImageToMemoryCopyEXT
-
-instance ToCStruct ImageToMemoryCopyEXT
-instance Show ImageToMemoryCopyEXT
-
-instance FromCStruct ImageToMemoryCopyEXT
-
-
-data MemoryToImageCopyEXT
-
-instance ToCStruct MemoryToImageCopyEXT
-instance Show MemoryToImageCopyEXT
-
-instance FromCStruct MemoryToImageCopyEXT
-
-
-data PhysicalDeviceHostImageCopyFeaturesEXT
-
-instance ToCStruct PhysicalDeviceHostImageCopyFeaturesEXT
-instance Show PhysicalDeviceHostImageCopyFeaturesEXT
-
-instance FromCStruct PhysicalDeviceHostImageCopyFeaturesEXT
-
-
-data PhysicalDeviceHostImageCopyPropertiesEXT
-
-instance ToCStruct PhysicalDeviceHostImageCopyPropertiesEXT
-instance Show PhysicalDeviceHostImageCopyPropertiesEXT
-
-instance FromCStruct PhysicalDeviceHostImageCopyPropertiesEXT
-
-
-data SubresourceHostMemcpySizeEXT
-
-instance ToCStruct SubresourceHostMemcpySizeEXT
-instance Show SubresourceHostMemcpySizeEXT
-
-instance FromCStruct SubresourceHostMemcpySizeEXT
-
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
@@ -98,7 +98,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_host_query_reset Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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_2d_view_of_3d.hs b/src/Vulkan/Extensions/VK_EXT_image_2d_view_of_3d.hs
--- a/src/Vulkan/Extensions/VK_EXT_image_2d_view_of_3d.hs
+++ b/src/Vulkan/Extensions/VK_EXT_image_2d_view_of_3d.hs
@@ -38,6 +38,9 @@
 --     -   Mike Blumenkrantz
 --         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_image_2d_view_of_3d] @zmike%0A*Here describe the issue or question you have about the VK_EXT_image_2d_view_of_3d extension* >
 --
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_EXT_image_2d_view_of_3d.adoc VK_EXT_image_2d_view_of_3d>
+--
 -- == Other Extension Metadata
 --
 -- [__Last Modified Date__]
@@ -110,7 +113,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_image_2d_view_of_3d Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_image_2d_view_of_3d Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -159,11 +162,21 @@
 -- 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. 'PhysicalDeviceImage2DViewOf3DFeaturesEXT' /can/ also be used
--- in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceImage2DViewOf3DFeaturesEXT', it /must/ add an instance of
+-- the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Extensions/VK_EXT_image_2d_view_of_3d.hs-boot b/src/Vulkan/Extensions/VK_EXT_image_2d_view_of_3d.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_image_2d_view_of_3d.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_image_2d_view_of_3d.hs-boot
@@ -38,6 +38,9 @@
 --     -   Mike Blumenkrantz
 --         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_image_2d_view_of_3d] @zmike%0A*Here describe the issue or question you have about the VK_EXT_image_2d_view_of_3d extension* >
 --
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_EXT_image_2d_view_of_3d.adoc VK_EXT_image_2d_view_of_3d>
+--
 -- == Other Extension Metadata
 --
 -- [__Last Modified Date__]
@@ -110,7 +113,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_image_2d_view_of_3d Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_image_2d_view_of_3d Vulkan Specification>.
 --
 -- This 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_compression_control.hs b/src/Vulkan/Extensions/VK_EXT_image_compression_control.hs
--- a/src/Vulkan/Extensions/VK_EXT_image_compression_control.hs
+++ b/src/Vulkan/Extensions/VK_EXT_image_compression_control.hs
@@ -18,7 +18,7 @@
 --     1
 --
 -- [__Ratification Status__]
---     Not ratified
+--     Ratified
 --
 -- [__Extension and Version Dependencies__]
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
@@ -86,7 +86,7 @@
 -- -   Extending
 --     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.ImageFormatProperties2',
 --     'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.SurfaceFormat2KHR',
---     'Vulkan.Extensions.VK_KHR_maintenance5.SubresourceLayout2KHR':
+--     'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.SubresourceLayout2':
 --
 --     -   'ImageCompressionPropertiesEXT'
 --
@@ -143,7 +143,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_image_compression_control Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_image_compression_control Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -191,9 +191,6 @@
                                                            , pattern EXT_IMAGE_COMPRESSION_CONTROL_SPEC_VERSION
                                                            , EXT_IMAGE_COMPRESSION_CONTROL_EXTENSION_NAME
                                                            , pattern EXT_IMAGE_COMPRESSION_CONTROL_EXTENSION_NAME
-                                                           , ImageSubresource2KHR(..)
-                                                           , SubresourceLayout2KHR(..)
-                                                           , getImageSubresourceLayout2KHR
                                                            , ImageSubresource2EXT
                                                            , SubresourceLayout2EXT
                                                            , getImageSubresourceLayout2EXT
@@ -233,21 +230,18 @@
 import Vulkan.Core10.Enums.StructureType (StructureType)
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_KHR))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_KHR))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2))
 import Vulkan.Extensions.VK_EXT_host_image_copy (getImageSubresourceLayout2EXT)
-import Vulkan.Extensions.VK_KHR_maintenance5 (getImageSubresourceLayout2KHR)
 import Vulkan.Extensions.VK_EXT_host_image_copy (ImageSubresource2EXT)
-import Vulkan.Extensions.VK_KHR_maintenance5 (ImageSubresource2KHR(..))
 import Vulkan.Extensions.VK_EXT_host_image_copy (SubresourceLayout2EXT)
-import Vulkan.Extensions.VK_KHR_maintenance5 (SubresourceLayout2KHR(..))
 -- No documentation found for TopLevel "VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_EXT"
-pattern STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_EXT = STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_KHR
+pattern STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_EXT = STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2
 
 
 -- No documentation found for TopLevel "VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_EXT"
-pattern STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_EXT = STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_KHR
+pattern STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_EXT = STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2
 
 
 -- | VkImageCompressionControlEXT - Specify image compression properties
@@ -276,11 +270,22 @@
 -- -   #VUID-VkImageCompressionControlEXT-sType-sType# @sType@ /must/ be
 --     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT'
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Image.ImageCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceImageFormatInfo2'
+--
+--     -   'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR'
+--
 -- Some combinations of compression properties may not be supported. For
 -- example, some implementations may not support different fixed-rate
--- compression rates per plane of a multi-planar format and will not be
--- able to enable fixed-rate compression for any plane if the requested
--- rates differ.
+-- compression rates per plane of a
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-multiplanar multi-planar format>
+-- and will not be able to enable fixed-rate compression for any plane if
+-- the requested rates differ.
 --
 -- = See Also
 --
@@ -361,12 +366,22 @@
 -- 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. 'PhysicalDeviceImageCompressionControlFeaturesEXT' /can/ also
--- be used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo'
--- to selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceImageCompressionControlFeaturesEXT', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_image_compression_control VK_EXT_image_compression_control>,
@@ -417,8 +432,16 @@
 
 -- | VkImageCompressionPropertiesEXT - Compression properties of an image
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.ImageFormatProperties2'
+--
+--     -   'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.SubresourceLayout2'
+--
+--     -   'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.SurfaceFormat2KHR'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_image_compression_control VK_EXT_image_compression_control>,
@@ -486,6 +509,23 @@
 --
 -- = Description
 --
+-- -   'IMAGE_COMPRESSION_DEFAULT_EXT' specifies that the default image
+--     compression setting is used. Implementations /must/ not apply
+--     fixed-rate compression.
+--
+-- -   'IMAGE_COMPRESSION_FIXED_RATE_DEFAULT_EXT' specifies that the
+--     implementation /may/ choose any supported fixed-rate compression
+--     setting in an implementation-defined manner based on the properties
+--     of the image.
+--
+-- -   'IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT' specifies that
+--     fixed-rate compression /may/ be used and that the allowed
+--     compression rates are specified by
+--     'ImageCompressionControlEXT'::@pFixedRateFlags@.
+--
+-- -   'IMAGE_COMPRESSION_DISABLED_EXT' specifies that all lossless and
+--     fixed-rate compression /should/ be disabled.
+--
 -- If 'ImageCompressionControlEXT'::@flags@ is
 -- 'IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT', then the @i@th member of
 -- the @pFixedRateFlags@ array specifies the allowed compression rates for
@@ -503,24 +543,16 @@
 newtype ImageCompressionFlagBitsEXT = ImageCompressionFlagBitsEXT Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'IMAGE_COMPRESSION_DEFAULT_EXT' specifies that the default image
--- compression setting is used. Implementations /must/ not apply fixed-rate
--- compression.
+-- No documentation found for Nested "VkImageCompressionFlagBitsEXT" "VK_IMAGE_COMPRESSION_DEFAULT_EXT"
 pattern IMAGE_COMPRESSION_DEFAULT_EXT = ImageCompressionFlagBitsEXT 0x00000000
 
--- | 'IMAGE_COMPRESSION_FIXED_RATE_DEFAULT_EXT' specifies that the
--- implementation /may/ choose any supported fixed-rate compression setting
--- in an implementation-defined manner based on the properties of the
--- image.
+-- No documentation found for Nested "VkImageCompressionFlagBitsEXT" "VK_IMAGE_COMPRESSION_FIXED_RATE_DEFAULT_EXT"
 pattern IMAGE_COMPRESSION_FIXED_RATE_DEFAULT_EXT = ImageCompressionFlagBitsEXT 0x00000001
 
--- | 'IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT' specifies that fixed-rate
--- compression /may/ be used and that the allowed compression rates are
--- specified by 'ImageCompressionControlEXT'::@pFixedRateFlags@.
+-- No documentation found for Nested "VkImageCompressionFlagBitsEXT" "VK_IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT"
 pattern IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT = ImageCompressionFlagBitsEXT 0x00000002
 
--- | 'IMAGE_COMPRESSION_DISABLED_EXT' specifies that all lossless and
--- fixed-rate compression /should/ be disabled.
+-- No documentation found for Nested "VkImageCompressionFlagBitsEXT" "VK_IMAGE_COMPRESSION_DISABLED_EXT"
 pattern IMAGE_COMPRESSION_DISABLED_EXT = ImageCompressionFlagBitsEXT 0x00000004
 
 conNameImageCompressionFlagBitsEXT :: String
@@ -573,6 +605,57 @@
 --
 -- = Description
 --
+-- -   'IMAGE_COMPRESSION_FIXED_RATE_NONE_EXT' specifies that fixed-rate
+--     compression /must/ not be used.
+--
+-- -   'IMAGE_COMPRESSION_FIXED_RATE_1BPC_BIT_EXT' specifies that
+--     fixed-rate compression with a bitrate of [1,2) bits per component
+--     /may/ be used.
+--
+-- -   'IMAGE_COMPRESSION_FIXED_RATE_2BPC_BIT_EXT' specifies that
+--     fixed-rate compression with a bitrate of [2,3) bits per component
+--     /may/ be used.
+--
+-- -   'IMAGE_COMPRESSION_FIXED_RATE_3BPC_BIT_EXT' specifies that
+--     fixed-rate compression with a bitrate of [3,4) bits per component
+--     /may/ be used.
+--
+-- -   'IMAGE_COMPRESSION_FIXED_RATE_4BPC_BIT_EXT' specifies that
+--     fixed-rate compression with a bitrate of [4,5) bits per component
+--     /may/ be used.
+--
+-- -   'IMAGE_COMPRESSION_FIXED_RATE_5BPC_BIT_EXT' specifies that
+--     fixed-rate compression with a bitrate of [5,6) bits per component
+--     /may/ be used.
+--
+-- -   'IMAGE_COMPRESSION_FIXED_RATE_6BPC_BIT_EXT' specifies that
+--     fixed-rate compression with a bitrate of [6,7) bits per component
+--     /may/ be used.
+--
+-- -   'IMAGE_COMPRESSION_FIXED_RATE_7BPC_BIT_EXT' specifies that
+--     fixed-rate compression with a bitrate of [7,8) bits per component
+--     /may/ be used.
+--
+-- -   'IMAGE_COMPRESSION_FIXED_RATE_8BPC_BIT_EXT' specifies that
+--     fixed-rate compression with a bitrate of [8,9) bits per component
+--     /may/ be used.
+--
+-- -   'IMAGE_COMPRESSION_FIXED_RATE_9BPC_BIT_EXT' specifies that
+--     fixed-rate compression with a bitrate of [9,10) bits per component
+--     /may/ be used.
+--
+-- -   'IMAGE_COMPRESSION_FIXED_RATE_10BPC_BIT_EXT' specifies that
+--     fixed-rate compression with a bitrate of [10,11) bits per component
+--     /may/ be used.
+--
+-- -   'IMAGE_COMPRESSION_FIXED_RATE_11BPC_BIT_EXT' specifies that
+--     fixed-rate compression with a bitrate of [11,12) bits per component
+--     /may/ be used.
+--
+-- -   'IMAGE_COMPRESSION_FIXED_RATE_12BPC_BIT_EXT' specifies that
+--     fixed-rate compression with a bitrate of at least 12 bits per
+--     component /may/ be used.
+--
 -- If the format has a different bit rate for different components,
 -- 'ImageCompressionControlEXT'::@pFixedRateFlags@ describes the rate of
 -- the component with the largest number of bits assigned to it, scaled pro
@@ -604,57 +687,43 @@
 newtype ImageCompressionFixedRateFlagBitsEXT = ImageCompressionFixedRateFlagBitsEXT Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'IMAGE_COMPRESSION_FIXED_RATE_NONE_EXT' specifies that fixed-rate
--- compression /must/ not be used.
+-- No documentation found for Nested "VkImageCompressionFixedRateFlagBitsEXT" "VK_IMAGE_COMPRESSION_FIXED_RATE_NONE_EXT"
 pattern IMAGE_COMPRESSION_FIXED_RATE_NONE_EXT = ImageCompressionFixedRateFlagBitsEXT 0x00000000
 
--- | 'IMAGE_COMPRESSION_FIXED_RATE_1BPC_BIT_EXT' specifies that fixed-rate
--- compression with a bitrate of [1,2) bits per component /may/ be used.
+-- No documentation found for Nested "VkImageCompressionFixedRateFlagBitsEXT" "VK_IMAGE_COMPRESSION_FIXED_RATE_1BPC_BIT_EXT"
 pattern IMAGE_COMPRESSION_FIXED_RATE_1BPC_BIT_EXT = ImageCompressionFixedRateFlagBitsEXT 0x00000001
 
--- | 'IMAGE_COMPRESSION_FIXED_RATE_2BPC_BIT_EXT' specifies that fixed-rate
--- compression with a bitrate of [2,3) bits per component /may/ be used.
+-- No documentation found for Nested "VkImageCompressionFixedRateFlagBitsEXT" "VK_IMAGE_COMPRESSION_FIXED_RATE_2BPC_BIT_EXT"
 pattern IMAGE_COMPRESSION_FIXED_RATE_2BPC_BIT_EXT = ImageCompressionFixedRateFlagBitsEXT 0x00000002
 
--- | 'IMAGE_COMPRESSION_FIXED_RATE_3BPC_BIT_EXT' specifies that fixed-rate
--- compression with a bitrate of [3,4) bits per component /may/ be used.
+-- No documentation found for Nested "VkImageCompressionFixedRateFlagBitsEXT" "VK_IMAGE_COMPRESSION_FIXED_RATE_3BPC_BIT_EXT"
 pattern IMAGE_COMPRESSION_FIXED_RATE_3BPC_BIT_EXT = ImageCompressionFixedRateFlagBitsEXT 0x00000004
 
--- | 'IMAGE_COMPRESSION_FIXED_RATE_4BPC_BIT_EXT' specifies that fixed-rate
--- compression with a bitrate of [4,5) bits per component /may/ be used.
+-- No documentation found for Nested "VkImageCompressionFixedRateFlagBitsEXT" "VK_IMAGE_COMPRESSION_FIXED_RATE_4BPC_BIT_EXT"
 pattern IMAGE_COMPRESSION_FIXED_RATE_4BPC_BIT_EXT = ImageCompressionFixedRateFlagBitsEXT 0x00000008
 
--- | 'IMAGE_COMPRESSION_FIXED_RATE_5BPC_BIT_EXT' specifies that fixed-rate
--- compression with a bitrate of [5,6) bits per component /may/ be used.
+-- No documentation found for Nested "VkImageCompressionFixedRateFlagBitsEXT" "VK_IMAGE_COMPRESSION_FIXED_RATE_5BPC_BIT_EXT"
 pattern IMAGE_COMPRESSION_FIXED_RATE_5BPC_BIT_EXT = ImageCompressionFixedRateFlagBitsEXT 0x00000010
 
--- | 'IMAGE_COMPRESSION_FIXED_RATE_6BPC_BIT_EXT' specifies that fixed-rate
--- compression with a bitrate of [6,7) bits per component /may/ be used.
+-- No documentation found for Nested "VkImageCompressionFixedRateFlagBitsEXT" "VK_IMAGE_COMPRESSION_FIXED_RATE_6BPC_BIT_EXT"
 pattern IMAGE_COMPRESSION_FIXED_RATE_6BPC_BIT_EXT = ImageCompressionFixedRateFlagBitsEXT 0x00000020
 
--- | 'IMAGE_COMPRESSION_FIXED_RATE_7BPC_BIT_EXT' specifies that fixed-rate
--- compression with a bitrate of [7,8) bits per component /may/ be used.
+-- No documentation found for Nested "VkImageCompressionFixedRateFlagBitsEXT" "VK_IMAGE_COMPRESSION_FIXED_RATE_7BPC_BIT_EXT"
 pattern IMAGE_COMPRESSION_FIXED_RATE_7BPC_BIT_EXT = ImageCompressionFixedRateFlagBitsEXT 0x00000040
 
--- | 'IMAGE_COMPRESSION_FIXED_RATE_8BPC_BIT_EXT' specifies that fixed-rate
--- compression with a bitrate of [8,9) bits per component /may/ be used.
+-- No documentation found for Nested "VkImageCompressionFixedRateFlagBitsEXT" "VK_IMAGE_COMPRESSION_FIXED_RATE_8BPC_BIT_EXT"
 pattern IMAGE_COMPRESSION_FIXED_RATE_8BPC_BIT_EXT = ImageCompressionFixedRateFlagBitsEXT 0x00000080
 
--- | 'IMAGE_COMPRESSION_FIXED_RATE_9BPC_BIT_EXT' specifies that fixed-rate
--- compression with a bitrate of [9,10) bits per component /may/ be used.
+-- No documentation found for Nested "VkImageCompressionFixedRateFlagBitsEXT" "VK_IMAGE_COMPRESSION_FIXED_RATE_9BPC_BIT_EXT"
 pattern IMAGE_COMPRESSION_FIXED_RATE_9BPC_BIT_EXT = ImageCompressionFixedRateFlagBitsEXT 0x00000100
 
--- | 'IMAGE_COMPRESSION_FIXED_RATE_10BPC_BIT_EXT' specifies that fixed-rate
--- compression with a bitrate of [10,11) bits per component /may/ be used.
+-- No documentation found for Nested "VkImageCompressionFixedRateFlagBitsEXT" "VK_IMAGE_COMPRESSION_FIXED_RATE_10BPC_BIT_EXT"
 pattern IMAGE_COMPRESSION_FIXED_RATE_10BPC_BIT_EXT = ImageCompressionFixedRateFlagBitsEXT 0x00000200
 
--- | 'IMAGE_COMPRESSION_FIXED_RATE_11BPC_BIT_EXT' specifies that fixed-rate
--- compression with a bitrate of [11,12) bits per component /may/ be used.
+-- No documentation found for Nested "VkImageCompressionFixedRateFlagBitsEXT" "VK_IMAGE_COMPRESSION_FIXED_RATE_11BPC_BIT_EXT"
 pattern IMAGE_COMPRESSION_FIXED_RATE_11BPC_BIT_EXT = ImageCompressionFixedRateFlagBitsEXT 0x00000400
 
--- | 'IMAGE_COMPRESSION_FIXED_RATE_12BPC_BIT_EXT' specifies that fixed-rate
--- compression with a bitrate of at least 12 bits per component /may/ be
--- used.
+-- No documentation found for Nested "VkImageCompressionFixedRateFlagBitsEXT" "VK_IMAGE_COMPRESSION_FIXED_RATE_12BPC_BIT_EXT"
 pattern IMAGE_COMPRESSION_FIXED_RATE_12BPC_BIT_EXT = ImageCompressionFixedRateFlagBitsEXT 0x00000800
 
 -- No documentation found for Nested "VkImageCompressionFixedRateFlagBitsEXT" "VK_IMAGE_COMPRESSION_FIXED_RATE_13BPC_BIT_EXT"
diff --git a/src/Vulkan/Extensions/VK_EXT_image_compression_control.hs-boot b/src/Vulkan/Extensions/VK_EXT_image_compression_control.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_image_compression_control.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_image_compression_control.hs-boot
@@ -18,7 +18,7 @@
 --     1
 --
 -- [__Ratification Status__]
---     Not ratified
+--     Ratified
 --
 -- [__Extension and Version Dependencies__]
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
@@ -86,7 +86,7 @@
 -- -   Extending
 --     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.ImageFormatProperties2',
 --     'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.SurfaceFormat2KHR',
---     'Vulkan.Extensions.VK_KHR_maintenance5.SubresourceLayout2KHR':
+--     'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.SubresourceLayout2':
 --
 --     -   'ImageCompressionPropertiesEXT'
 --
@@ -143,7 +143,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_image_compression_control Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_image_compression_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_image_compression_control_swapchain.hs b/src/Vulkan/Extensions/VK_EXT_image_compression_control_swapchain.hs
--- a/src/Vulkan/Extensions/VK_EXT_image_compression_control_swapchain.hs
+++ b/src/Vulkan/Extensions/VK_EXT_image_compression_control_swapchain.hs
@@ -18,7 +18,7 @@
 --     1
 --
 -- [__Ratification Status__]
---     Not ratified
+--     Ratified
 --
 -- [__Extension and Version Dependencies__]
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_image_compression_control VK_EXT_image_compression_control>
@@ -87,7 +87,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_image_compression_control_swapchain Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_image_compression_control_swapchain Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -136,12 +136,21 @@
 -- 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. 'PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT'
--- /can/ also be used in the @pNext@ chain of
--- 'Vulkan.Core10.Device.DeviceCreateInfo' to selectively enable these
--- features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT', it /must/
+-- add an instance of the structure, with the desired feature members set
+-- to 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Extensions/VK_EXT_image_compression_control_swapchain.hs-boot b/src/Vulkan/Extensions/VK_EXT_image_compression_control_swapchain.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_image_compression_control_swapchain.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_image_compression_control_swapchain.hs-boot
@@ -18,7 +18,7 @@
 --     1
 --
 -- [__Ratification Status__]
---     Not ratified
+--     Ratified
 --
 -- [__Extension and Version Dependencies__]
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_image_compression_control VK_EXT_image_compression_control>
@@ -87,7 +87,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_image_compression_control_swapchain Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_image_compression_control_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_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
@@ -46,8 +46,8 @@
 --
 -- [__Contact__]
 --
---     -   Lina Versace
---         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_image_drm_format_modifier] @linyaa-kiwi%0A*Here describe the issue or question you have about the VK_EXT_image_drm_format_modifier extension* >
+--     -   James Jones
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_image_drm_format_modifier] @cubanismo%0A*Here describe the issue or question you have about the VK_EXT_image_drm_format_modifier extension* >
 --
 -- == Other Extension Metadata
 --
@@ -82,9 +82,9 @@
 -- graphics, video, and display APIs.
 --
 -- Its functionality closely overlaps with
--- @EGL_EXT_image_dma_buf_import_modifiers@<https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn2 2>^
+-- @EGL_EXT_image_dma_buf_import_modifiers@<https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn2 2>^
 -- and
--- @EGL_MESA_image_dma_buf_export@<https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn3 3>^.
+-- @EGL_MESA_image_dma_buf_export@<https://registry.khronos.org/vulkan/specs/latest/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.
@@ -265,33 +265,33 @@
 -- == Prior Art
 --
 -- Extension
--- @EGL_EXT_image_dma_buf_import@<https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn1 1>^
+-- @EGL_EXT_image_dma_buf_import@<https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn2 2>^
+-- @EGL_EXT_image_dma_buf_import_modifiers@<https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn3 3>^
+-- @EGL_MESA_image_dma_buf_export@<https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn4 4>^,
+-- @struct drm_mode_fb_cmd2@<https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn4 4>^,
 -- allows one to specify the framebuffer’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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn1 1>^;
+-- @EGL_EXT_image_dma_buf_import_modifiers@<https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn5 5>^.
+-- @gbm.h@<https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn5 5>^.
 --
 -- == New Commands
 --
@@ -390,10 +390,10 @@
 -- 'Vulkan.Core10.Handles.Image'.
 --
 -- __DISCUSSION__: Prior art, such as
--- @EGL_EXT_image_dma_buf_import_modifiers@<https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn2 2>^,
--- @struct drm_mode_fb_cmd2@<https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn4 4>^,
+-- @EGL_EXT_image_dma_buf_import_modifiers@<https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn2 2>^,
+-- @struct drm_mode_fb_cmd2@<https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn4 4>^,
 -- and
--- @struct gbm_import_fd_modifier_data@<https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn5 5>^,
+-- @struct gbm_import_fd_modifier_data@<https://registry.khronos.org/vulkan/specs/latest/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
@@ -416,10 +416,10 @@
 -- /must/ be 0.
 --
 -- __DISCUSSION__: Prior art, such as
--- @EGL_EXT_image_dma_buf_import_modifiers@<https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn2 2>^,
--- @struct drm_mode_fb_cmd2@<https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn4 4>^,
+-- @EGL_EXT_image_dma_buf_import_modifiers@<https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn2 2>^,
+-- @struct drm_mode_fb_cmd2@<https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn4 4>^,
 -- and
--- @struct gbm_import_fd_modifier_data@<https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn5 5>^,
+-- @struct gbm_import_fd_modifier_data@<https://registry.khronos.org/vulkan/specs/latest/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.
@@ -558,7 +558,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -656,6 +656,10 @@
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <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>,
@@ -712,8 +716,12 @@
 -- Among the elements in array @pDrmFormatModifierProperties@, each
 -- returned @drmFormatModifier@ /must/ be unique.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.FormatProperties2'
+--
 -- = See Also
 --
 -- <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>,
@@ -781,9 +789,8 @@
 -- An image’s /memory planecount/ (as returned by
 -- @drmFormatModifierPlaneCount@) is distinct from its /format planecount/
 -- (in the sense of
--- <https://registry.khronos.org/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
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-multiplanar multi-planar format>).
+-- In 'Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlags', each
 -- @VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT@ represents a /memory plane/ and
 -- each @VK_IMAGE_ASPECT_PLANE_i_BIT@ a /format plane/.
 --
@@ -808,17 +815,17 @@
 -- not necessarily contiguous.
 --
 -- If an image is
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#glossary-linear-resource linear>,
+-- <https://registry.khronos.org/vulkan/specs/latest/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
 -- the /format planecount/, and @drmFormatModifierTilingFeatures@ /must/ be
 -- identical to the
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.FormatProperties2'::@linearTilingFeatures@
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.FormatProperties2'::@formatProperties.linearTilingFeatures@
 -- returned in the same @pNext@ chain.
 --
 -- If an image is
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#glossary-linear-resource non-linear>,
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -934,8 +941,17 @@
 --     @pQueueFamilyIndices@ /must/ be a valid pointer to an array of
 --     @queueFamilyIndexCount@ @uint32_t@ values
 --
+-- -   #VUID-VkPhysicalDeviceImageDrmFormatModifierInfoEXT-maintenance11-13351#
+--     If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance11 maintenance11>
+--     feature is supported and @sharingMode@ is
+--     'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_CONCURRENT', then
+--     @queueFamilyIndexCount@ /must/ be greater than @0@
+--
 -- -   #VUID-VkPhysicalDeviceImageDrmFormatModifierInfoEXT-sharingMode-02315#
---     If @sharingMode@ is
+--     If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance11 maintenance11>
+--     feature is not supported and @sharingMode@ is
 --     'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_CONCURRENT', then
 --     @queueFamilyIndexCount@ /must/ be greater than @1@
 --
@@ -957,6 +973,12 @@
 --     @sharingMode@ /must/ be a valid
 --     'Vulkan.Core10.Enums.SharingMode.SharingMode' value
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceImageFormatInfo2'
+--
 -- = See Also
 --
 -- <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>,
@@ -965,8 +987,8 @@
 data PhysicalDeviceImageDrmFormatModifierInfoEXT = PhysicalDeviceImageDrmFormatModifierInfoEXT
   { -- | @drmFormatModifier@ is the image’s /Linux DRM format modifier/,
     -- corresponding to
-    -- 'ImageDrmFormatModifierExplicitCreateInfoEXT'::@modifier@ or to
-    -- 'ImageDrmFormatModifierListCreateInfoEXT'::@pModifiers@.
+    -- 'ImageDrmFormatModifierExplicitCreateInfoEXT'::@drmFormatModifier@ or to
+    -- 'ImageDrmFormatModifierListCreateInfoEXT'::@pDrmFormatModifiers@.
     drmFormatModifier :: Word64
   , -- | @sharingMode@ specifies how the image will be accessed by multiple queue
     -- families.
@@ -1045,6 +1067,12 @@
 -- -   #VUID-VkImageDrmFormatModifierListCreateInfoEXT-drmFormatModifierCount-arraylength#
 --     @drmFormatModifierCount@ /must/ be greater than @0@
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.Image.ImageCreateInfo'
+--
 -- = See Also
 --
 -- <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>,
@@ -1154,6 +1182,12 @@
 -- -   #VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-drmFormatModifierPlaneCount-arraylength#
 --     @drmFormatModifierPlaneCount@ /must/ be greater than @0@
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.Image.ImageCreateInfo'
+--
 -- = See Also
 --
 -- <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>,
@@ -1232,7 +1266,7 @@
 -- 'getImageDrmFormatModifierPropertiesEXT'
 data ImageDrmFormatModifierPropertiesEXT = ImageDrmFormatModifierPropertiesEXT
   { -- | @drmFormatModifier@ returns the image’s
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#glossary-drm-format-modifier Linux DRM format modifier>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#glossary-drm-format-modifier Linux DRM format modifier>.
     drmFormatModifier :: Word64 }
   deriving (Typeable, Eq)
 #if defined(GENERIC_INSTANCES)
@@ -1293,7 +1327,11 @@
 -- reported in the corresponding element of
 -- 'DrmFormatModifierPropertiesListEXT'::@pDrmFormatModifierProperties@.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.FormatProperties2'
 --
 -- = See Also
 --
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
@@ -46,8 +46,8 @@
 --
 -- [__Contact__]
 --
---     -   Lina Versace
---         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_image_drm_format_modifier] @linyaa-kiwi%0A*Here describe the issue or question you have about the VK_EXT_image_drm_format_modifier extension* >
+--     -   James Jones
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_image_drm_format_modifier] @cubanismo%0A*Here describe the issue or question you have about the VK_EXT_image_drm_format_modifier extension* >
 --
 -- == Other Extension Metadata
 --
@@ -82,9 +82,9 @@
 -- graphics, video, and display APIs.
 --
 -- Its functionality closely overlaps with
--- @EGL_EXT_image_dma_buf_import_modifiers@<https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn2 2>^
+-- @EGL_EXT_image_dma_buf_import_modifiers@<https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn2 2>^
 -- and
--- @EGL_MESA_image_dma_buf_export@<https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn3 3>^.
+-- @EGL_MESA_image_dma_buf_export@<https://registry.khronos.org/vulkan/specs/latest/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.
@@ -265,33 +265,33 @@
 -- == Prior Art
 --
 -- Extension
--- @EGL_EXT_image_dma_buf_import@<https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn1 1>^
+-- @EGL_EXT_image_dma_buf_import@<https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn2 2>^
+-- @EGL_EXT_image_dma_buf_import_modifiers@<https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn3 3>^
+-- @EGL_MESA_image_dma_buf_export@<https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn4 4>^,
+-- @struct drm_mode_fb_cmd2@<https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn4 4>^,
 -- allows one to specify the framebuffer’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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn1 1>^;
+-- @EGL_EXT_image_dma_buf_import_modifiers@<https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn5 5>^.
+-- @gbm.h@<https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn5 5>^.
 --
 -- == New Commands
 --
@@ -390,10 +390,10 @@
 -- 'Vulkan.Core10.Handles.Image'.
 --
 -- __DISCUSSION__: Prior art, such as
--- @EGL_EXT_image_dma_buf_import_modifiers@<https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn2 2>^,
--- @struct drm_mode_fb_cmd2@<https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn4 4>^,
+-- @EGL_EXT_image_dma_buf_import_modifiers@<https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn2 2>^,
+-- @struct drm_mode_fb_cmd2@<https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn4 4>^,
 -- and
--- @struct gbm_import_fd_modifier_data@<https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn5 5>^,
+-- @struct gbm_import_fd_modifier_data@<https://registry.khronos.org/vulkan/specs/latest/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
@@ -416,10 +416,10 @@
 -- /must/ be 0.
 --
 -- __DISCUSSION__: Prior art, such as
--- @EGL_EXT_image_dma_buf_import_modifiers@<https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn2 2>^,
--- @struct drm_mode_fb_cmd2@<https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn4 4>^,
+-- @EGL_EXT_image_dma_buf_import_modifiers@<https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn2 2>^,
+-- @struct drm_mode_fb_cmd2@<https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn4 4>^,
 -- and
--- @struct gbm_import_fd_modifier_data@<https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn5 5>^,
+-- @struct gbm_import_fd_modifier_data@<https://registry.khronos.org/vulkan/specs/latest/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.
@@ -558,7 +558,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -64,7 +64,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#textures-conversion-to-rgba Conversion to RGBA>.
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#images-component-substitution>.
 --
 -- == New Structures
 --
@@ -120,7 +120,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_image_robustness Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
diff --git a/src/Vulkan/Extensions/VK_EXT_image_sliced_view_of_3d.hs b/src/Vulkan/Extensions/VK_EXT_image_sliced_view_of_3d.hs
--- a/src/Vulkan/Extensions/VK_EXT_image_sliced_view_of_3d.hs
+++ b/src/Vulkan/Extensions/VK_EXT_image_sliced_view_of_3d.hs
@@ -18,7 +18,7 @@
 --     1
 --
 -- [__Ratification Status__]
---     Not ratified
+--     Ratified
 --
 -- [__Extension and Version Dependencies__]
 --         
@@ -108,7 +108,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_image_sliced_view_of_3d Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_image_sliced_view_of_3d Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -167,7 +167,7 @@
 -- The effective view depth is equal to @extent.depth@ used to create the
 -- @image@ for this view adjusted by @subresourceRange.baseMipLevel@ as
 -- specified in
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-mip-level-sizing Image Mip Level Sizing>.
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-image-mip-level-sizing Image Mip Level Sizing>.
 --
 -- Shader access to this image view is only affected by
 -- 'ImageViewSlicedCreateInfoEXT' if it uses a descriptor of type
@@ -182,14 +182,14 @@
 -- -   #VUID-VkImageViewSlicedCreateInfoEXT-sliceOffset-07867#
 --     @sliceOffset@ /must/ be less than the effective view depth as
 --     specified in
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-mip-level-sizing Image Mip Level Sizing>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-image-mip-level-sizing Image Mip Level Sizing>
 --
 -- -   #VUID-VkImageViewSlicedCreateInfoEXT-sliceCount-07868# If
 --     @sliceCount@ is not
 --     'Vulkan.Core10.APIConstants.REMAINING_3D_SLICES_EXT', it /must/ be
 --     non-zero and @sliceOffset@ + @sliceCount@ /must/ be less than or
 --     equal to the effective view depth as specified in
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-mip-level-sizing Image Mip Level Sizing>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-image-mip-level-sizing Image Mip Level Sizing>
 --
 -- -   #VUID-VkImageViewSlicedCreateInfoEXT-image-07869# @image@ /must/
 --     have been created with @imageType@ equal to
@@ -202,7 +202,7 @@
 --     /must/ reference exactly 1 mip level
 --
 -- -   #VUID-VkImageViewSlicedCreateInfoEXT-None-07871# The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-imageSlicedViewOf3D imageSlicedViewOf3D>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-imageSlicedViewOf3D imageSlicedViewOf3D>
 --     feature /must/ be enabled
 --
 -- == Valid Usage (Implicit)
@@ -210,6 +210,12 @@
 -- -   #VUID-VkImageViewSlicedCreateInfoEXT-sType-sType# @sType@ /must/ be
 --     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_VIEW_SLICED_CREATE_INFO_EXT'
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.ImageView.ImageViewCreateInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_image_sliced_view_of_3d VK_EXT_image_sliced_view_of_3d>,
@@ -280,11 +286,21 @@
 -- 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. 'PhysicalDeviceImageSlicedViewOf3DFeaturesEXT' /can/ also be
--- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceImageSlicedViewOf3DFeaturesEXT', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Extensions/VK_EXT_image_sliced_view_of_3d.hs-boot b/src/Vulkan/Extensions/VK_EXT_image_sliced_view_of_3d.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_image_sliced_view_of_3d.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_image_sliced_view_of_3d.hs-boot
@@ -18,7 +18,7 @@
 --     1
 --
 -- [__Ratification Status__]
---     Not ratified
+--     Ratified
 --
 -- [__Extension and Version Dependencies__]
 --         
@@ -108,7 +108,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_image_sliced_view_of_3d Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_image_sliced_view_of_3d Vulkan Specification>.
 --
 -- This 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_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
@@ -55,10 +55,10 @@
 -- == Description
 --
 -- This extension allows applications to clamp the minimum LOD value during
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#textures-image-level-selection Image Level(s) Selection>,
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#textures-gather Texel Gathering>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#textures-image-level-selection Image Level(s) Selection>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#textures-gather Texel Gathering>
 -- and
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#textures-integer-coordinate-operations Integer Texel Coordinate Operations>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#textures-integer-coordinate-operations Integer Texel Coordinate Operations>
 -- with a given 'Vulkan.Core10.Handles.ImageView' by
 -- 'ImageViewMinLodCreateInfoEXT'::@minLod@.
 --
@@ -104,7 +104,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_image_view_min_lod Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -159,12 +159,22 @@
 -- 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. 'PhysicalDeviceImageViewMinLodFeaturesEXT' /can/ also be used
--- in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceImageViewMinLodFeaturesEXT', it /must/ add an instance of
+-- the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_image_view_min_lod VK_EXT_image_view_min_lod>,
@@ -173,10 +183,10 @@
 data PhysicalDeviceImageViewMinLodFeaturesEXT = PhysicalDeviceImageViewMinLodFeaturesEXT
   { -- | #features-minLod# @minLod@ indicates whether the implementation supports
     -- clamping the minimum LOD value during
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#textures-image-level-selection Image Level(s) Selection>,
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#textures-gather Texel Gathering>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#textures-image-level-selection Image Level(s) Selection>,
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#textures-gather Texel Gathering>
     -- and
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#textures-integer-coordinate-operations Integer Texel Coordinate Operations>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#textures-integer-coordinate-operations Integer Texel Coordinate Operations>
     -- with a given 'Vulkan.Core10.Handles.ImageView' by
     -- 'ImageViewMinLodCreateInfoEXT'::@minLod@.
     minLod :: Bool }
@@ -226,10 +236,10 @@
 -- If the @pNext@ chain includes a 'ImageViewMinLodCreateInfoEXT'
 -- structure, then that structure includes a parameter specifying a value
 -- to clamp the minimum LOD value during
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#textures-image-level-selection Image Level(s) Selection>,
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#textures-gather Texel Gathering>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#textures-image-level-selection Image Level(s) Selection>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#textures-gather Texel Gathering>
 -- and
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#textures-integer-coordinate-operations Integer Texel Coordinate Operations>.
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#textures-integer-coordinate-operations Integer Texel Coordinate Operations>.
 --
 -- If the image view contains 'ImageViewMinLodCreateInfoEXT' and it is used
 -- as part of a sampling operation:
@@ -248,7 +258,7 @@
 -- == Valid Usage
 --
 -- -   #VUID-VkImageViewMinLodCreateInfoEXT-minLod-06455# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-minLod minLod>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-minLod minLod>
 --     feature is not enabled, @minLod@ /must/ be @0.0@
 --
 -- -   #VUID-VkImageViewMinLodCreateInfoEXT-minLod-06456# @minLod@ /must/
@@ -259,6 +269,12 @@
 --
 -- -   #VUID-VkImageViewMinLodCreateInfoEXT-sType-sType# @sType@ /must/ be
 --     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_VIEW_MIN_LOD_CREATE_INFO_EXT'
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.ImageView.ImageViewCreateInfo'
 --
 -- = See Also
 --
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
@@ -55,10 +55,10 @@
 -- == Description
 --
 -- This extension allows applications to clamp the minimum LOD value during
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#textures-image-level-selection Image Level(s) Selection>,
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#textures-gather Texel Gathering>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#textures-image-level-selection Image Level(s) Selection>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#textures-gather Texel Gathering>
 -- and
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#textures-integer-coordinate-operations Integer Texel Coordinate Operations>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#textures-integer-coordinate-operations Integer Texel Coordinate Operations>
 -- with a given 'Vulkan.Core10.Handles.ImageView' by
 -- 'ImageViewMinLodCreateInfoEXT'::@minLod@.
 --
@@ -104,7 +104,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_image_view_min_lod Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -31,6 +31,9 @@
 --         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_index_type_uint8 VK_KHR_index_type_uint8>
 --         extension
 --
+--         -   Which in turn was /promoted/ to
+--             <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.4-promotions Vulkan 1.4>
+--
 -- [__Contact__]
 --
 --     -   Piers Daniell
@@ -94,7 +97,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_index_type_uint8 Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -105,24 +108,22 @@
                                                   , pattern EXT_INDEX_TYPE_UINT8_SPEC_VERSION
                                                   , EXT_INDEX_TYPE_UINT8_EXTENSION_NAME
                                                   , pattern EXT_INDEX_TYPE_UINT8_EXTENSION_NAME
-                                                  , PhysicalDeviceIndexTypeUint8FeaturesKHR(..)
                                                   ) where
 
 import Data.String (IsString)
-import Vulkan.Extensions.VK_KHR_index_type_uint8 (PhysicalDeviceIndexTypeUint8FeaturesKHR)
-import Vulkan.Core10.Enums.IndexType (IndexType(INDEX_TYPE_UINT8_KHR))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_KHR))
-import Vulkan.Extensions.VK_KHR_index_type_uint8 (PhysicalDeviceIndexTypeUint8FeaturesKHR(..))
+import Vulkan.Core14.Promoted_From_VK_KHR_index_type_uint8 (PhysicalDeviceIndexTypeUint8Features)
+import Vulkan.Core10.Enums.IndexType (IndexType(INDEX_TYPE_UINT8))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES))
 -- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_KHR
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES
 
 
 -- No documentation found for TopLevel "VK_INDEX_TYPE_UINT8_EXT"
-pattern INDEX_TYPE_UINT8_EXT = INDEX_TYPE_UINT8_KHR
+pattern INDEX_TYPE_UINT8_EXT = INDEX_TYPE_UINT8
 
 
 -- No documentation found for TopLevel "VkPhysicalDeviceIndexTypeUint8FeaturesEXT"
-type PhysicalDeviceIndexTypeUint8FeaturesEXT = PhysicalDeviceIndexTypeUint8FeaturesKHR
+type PhysicalDeviceIndexTypeUint8FeaturesEXT = PhysicalDeviceIndexTypeUint8Features
 
 
 type EXT_INDEX_TYPE_UINT8_SPEC_VERSION = 1
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
@@ -125,9 +125,9 @@
 -- functionality.
 --
 -- Vulkan 1.3 adds
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#versions-1.3-new-features additional functionality related to this extension>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#versions-1.3-new-features additional functionality related to this extension>
 -- in the form of the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxInlineUniformTotalSize maxInlineUniformTotalSize>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxInlineUniformTotalSize maxInlineUniformTotalSize>
 -- limit.
 --
 -- == Issues
@@ -175,7 +175,7 @@
 -- inline uniform blocks.
 --
 -- 5) Is the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-descriptorBindingVariableDescriptorCount descriptorBindingVariableDescriptorCount>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-descriptorBindingVariableDescriptorCount descriptorBindingVariableDescriptorCount>
 -- feature introduced by @VK_EXT_descriptor_indexing@ supported for inline
 -- uniform blocks?
 --
@@ -201,7 +201,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_inline_uniform_block Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
diff --git a/src/Vulkan/Extensions/VK_EXT_layer_settings.hs b/src/Vulkan/Extensions/VK_EXT_layer_settings.hs
--- a/src/Vulkan/Extensions/VK_EXT_layer_settings.hs
+++ b/src/Vulkan/Extensions/VK_EXT_layer_settings.hs
@@ -68,8 +68,8 @@
 -- This extension provides a mechanism for configuring programmatically
 -- through the Vulkan API the behavior of layers.
 --
--- This extension provides the 'LayerSettingsCreateInfoEXT' struct that can
--- be included in the @pNext@ chain of the
+-- This extension provides the 'LayerSettingsCreateInfoEXT' structure that
+-- can be included in the @pNext@ chain of the
 -- 'Vulkan.Core10.DeviceInitialization.InstanceCreateInfo' structure passed
 -- as the @pCreateInfo@ parameter of
 -- 'Vulkan.Core10.DeviceInitialization.createInstance'.
@@ -175,7 +175,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_layer_settings Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_layer_settings Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -247,6 +247,12 @@
 --     @settingCount@ is not @0@, @pSettings@ /must/ be a valid pointer to
 --     an array of @settingCount@ valid 'LayerSettingEXT' structures
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.DeviceInitialization.InstanceCreateInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_layer_settings VK_EXT_layer_settings>,
@@ -387,6 +393,32 @@
 
 -- | VkLayerSettingTypeEXT - Type of the values that can be passed to a layer
 --
+-- = Description
+--
+-- -   'LAYER_SETTING_TYPE_BOOL32_EXT' specifies that the layer setting’s
+--     type is 'Vulkan.Core10.FundamentalTypes.Bool32'.
+--
+-- -   'LAYER_SETTING_TYPE_INT32_EXT' specifies that the layer setting’s
+--     type is signed 32-bit integer.
+--
+-- -   'LAYER_SETTING_TYPE_INT64_EXT' specifies that the layer setting’s
+--     type is signed 64-bit integer.
+--
+-- -   'LAYER_SETTING_TYPE_UINT32_EXT' specifies that the layer setting’s
+--     type is unsigned 32-bit integer.
+--
+-- -   'LAYER_SETTING_TYPE_UINT64_EXT' specifies that the layer setting’s
+--     type is unsigned 64-bit integer.
+--
+-- -   'LAYER_SETTING_TYPE_FLOAT32_EXT' specifies that the layer setting’s
+--     type is 32-bit floating-point.
+--
+-- -   'LAYER_SETTING_TYPE_FLOAT64_EXT' specifies that the layer setting’s
+--     type is 64-bit floating-point.
+--
+-- -   'LAYER_SETTING_TYPE_STRING_EXT' specifies that the layer setting’s
+--     type is a pointer to a null-terminated UTF-8 string.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_layer_settings VK_EXT_layer_settings>,
@@ -394,36 +426,28 @@
 newtype LayerSettingTypeEXT = LayerSettingTypeEXT Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'LAYER_SETTING_TYPE_BOOL32_EXT' specifies that the layer setting’s type
--- is 'Vulkan.Core10.FundamentalTypes.Bool32'.
+-- No documentation found for Nested "VkLayerSettingTypeEXT" "VK_LAYER_SETTING_TYPE_BOOL32_EXT"
 pattern LAYER_SETTING_TYPE_BOOL32_EXT = LayerSettingTypeEXT 0
 
--- | 'LAYER_SETTING_TYPE_INT32_EXT' specifies that the layer setting’s type
--- is signed 32-bit integer.
+-- No documentation found for Nested "VkLayerSettingTypeEXT" "VK_LAYER_SETTING_TYPE_INT32_EXT"
 pattern LAYER_SETTING_TYPE_INT32_EXT = LayerSettingTypeEXT 1
 
--- | 'LAYER_SETTING_TYPE_INT64_EXT' specifies that the layer setting’s type
--- is signed 64-bit integer.
+-- No documentation found for Nested "VkLayerSettingTypeEXT" "VK_LAYER_SETTING_TYPE_INT64_EXT"
 pattern LAYER_SETTING_TYPE_INT64_EXT = LayerSettingTypeEXT 2
 
--- | 'LAYER_SETTING_TYPE_UINT32_EXT' specifies that the layer setting’s type
--- is unsigned 32-bit integer.
+-- No documentation found for Nested "VkLayerSettingTypeEXT" "VK_LAYER_SETTING_TYPE_UINT32_EXT"
 pattern LAYER_SETTING_TYPE_UINT32_EXT = LayerSettingTypeEXT 3
 
--- | 'LAYER_SETTING_TYPE_UINT64_EXT' specifies that the layer setting’s type
--- is unsigned 64-bit integer.
+-- No documentation found for Nested "VkLayerSettingTypeEXT" "VK_LAYER_SETTING_TYPE_UINT64_EXT"
 pattern LAYER_SETTING_TYPE_UINT64_EXT = LayerSettingTypeEXT 4
 
--- | 'LAYER_SETTING_TYPE_FLOAT32_EXT' specifies that the layer setting’s type
--- is 32-bit floating-point.
+-- No documentation found for Nested "VkLayerSettingTypeEXT" "VK_LAYER_SETTING_TYPE_FLOAT32_EXT"
 pattern LAYER_SETTING_TYPE_FLOAT32_EXT = LayerSettingTypeEXT 5
 
--- | 'LAYER_SETTING_TYPE_FLOAT64_EXT' specifies that the layer setting’s type
--- is 64-bit floating-point.
+-- No documentation found for Nested "VkLayerSettingTypeEXT" "VK_LAYER_SETTING_TYPE_FLOAT64_EXT"
 pattern LAYER_SETTING_TYPE_FLOAT64_EXT = LayerSettingTypeEXT 6
 
--- | 'LAYER_SETTING_TYPE_STRING_EXT' specifies that the layer setting’s type
--- is a pointer to a null-terminated UTF-8 string.
+-- No documentation found for Nested "VkLayerSettingTypeEXT" "VK_LAYER_SETTING_TYPE_STRING_EXT"
 pattern LAYER_SETTING_TYPE_STRING_EXT = LayerSettingTypeEXT 7
 
 {-# COMPLETE
diff --git a/src/Vulkan/Extensions/VK_EXT_layer_settings.hs-boot b/src/Vulkan/Extensions/VK_EXT_layer_settings.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_layer_settings.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_layer_settings.hs-boot
@@ -68,8 +68,8 @@
 -- This extension provides a mechanism for configuring programmatically
 -- through the Vulkan API the behavior of layers.
 --
--- This extension provides the 'LayerSettingsCreateInfoEXT' struct that can
--- be included in the @pNext@ chain of the
+-- This extension provides the 'LayerSettingsCreateInfoEXT' structure that
+-- can be included in the @pNext@ chain of the
 -- 'Vulkan.Core10.DeviceInitialization.InstanceCreateInfo' structure passed
 -- as the @pCreateInfo@ parameter of
 -- 'Vulkan.Core10.DeviceInitialization.createInstance'.
@@ -175,7 +175,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_layer_settings Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_layer_settings Vulkan Specification>.
 --
 -- This 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_legacy_dithering.hs b/src/Vulkan/Extensions/VK_EXT_legacy_dithering.hs
--- a/src/Vulkan/Extensions/VK_EXT_legacy_dithering.hs
+++ b/src/Vulkan/Extensions/VK_EXT_legacy_dithering.hs
@@ -18,7 +18,7 @@
 --     2
 --
 -- [__Ratification Status__]
---     Not ratified
+--     Ratified
 --
 -- [__Extension and Version Dependencies__]
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
@@ -29,6 +29,8 @@
 --
 --     -   Interacts with VK_VERSION_1_3
 --
+--     -   Interacts with VK_VERSION_1_4
+--
 --     -   Interacts with VK_KHR_dynamic_rendering
 --
 --     -   Interacts with VK_KHR_maintenance5
@@ -95,12 +97,14 @@
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3 Vulkan Version 1.3>
 -- and
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance5 VK_KHR_maintenance5>
+-- or
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.4 Vulkan Version 1.4>
 -- is supported:
 --
 -- -   Extending
---     'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlagBits2KHR':
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PipelineCreateFlagBits2':
 --
---     -   'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT'
+--     -   'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT'
 --
 -- -   Extending 'Vulkan.Core13.Enums.RenderingFlagBits.RenderingFlagBits':
 --
@@ -138,7 +142,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_legacy_dithering Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_legacy_dithering Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -147,8 +151,6 @@
                                                   , pattern EXT_LEGACY_DITHERING_SPEC_VERSION
                                                   , EXT_LEGACY_DITHERING_EXTENSION_NAME
                                                   , pattern EXT_LEGACY_DITHERING_EXTENSION_NAME
-                                                  , PipelineCreateFlagBits2KHR(..)
-                                                  , PipelineCreateFlags2KHR
                                                   ) where
 
 import Foreign.Marshal.Alloc (allocaBytes)
@@ -173,8 +175,6 @@
 import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.Core10.Enums.StructureType (StructureType)
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT))
-import Vulkan.Extensions.VK_KHR_maintenance5 (PipelineCreateFlagBits2KHR(..))
-import Vulkan.Extensions.VK_KHR_maintenance5 (PipelineCreateFlags2KHR)
 -- | VkPhysicalDeviceLegacyDitheringFeaturesEXT - Structure describing
 -- support for legacy dithering
 --
@@ -190,12 +190,22 @@
 -- 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. 'PhysicalDeviceLegacyDitheringFeaturesEXT' /can/ also be used
--- in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceLegacyDitheringFeaturesEXT', it /must/ add an instance of
+-- the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_legacy_dithering VK_EXT_legacy_dithering>,
@@ -204,7 +214,7 @@
 data PhysicalDeviceLegacyDitheringFeaturesEXT = PhysicalDeviceLegacyDitheringFeaturesEXT
   { -- | #features-legacyDithering# @legacyDithering@ indicates whether the
     -- implementation supports
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-legacy-dithering Legacy Dithering>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-legacy-dithering Legacy Dithering>.
     legacyDithering :: Bool }
   deriving (Typeable, Eq)
 #if defined(GENERIC_INSTANCES)
diff --git a/src/Vulkan/Extensions/VK_EXT_legacy_dithering.hs-boot b/src/Vulkan/Extensions/VK_EXT_legacy_dithering.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_legacy_dithering.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_legacy_dithering.hs-boot
@@ -18,7 +18,7 @@
 --     2
 --
 -- [__Ratification Status__]
---     Not ratified
+--     Ratified
 --
 -- [__Extension and Version Dependencies__]
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
@@ -29,6 +29,8 @@
 --
 --     -   Interacts with VK_VERSION_1_3
 --
+--     -   Interacts with VK_VERSION_1_4
+--
 --     -   Interacts with VK_KHR_dynamic_rendering
 --
 --     -   Interacts with VK_KHR_maintenance5
@@ -95,12 +97,14 @@
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3 Vulkan Version 1.3>
 -- and
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance5 VK_KHR_maintenance5>
+-- or
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.4 Vulkan Version 1.4>
 -- is supported:
 --
 -- -   Extending
---     'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlagBits2KHR':
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PipelineCreateFlagBits2':
 --
---     -   'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT'
+--     -   'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT'
 --
 -- -   Extending 'Vulkan.Core13.Enums.RenderingFlagBits.RenderingFlagBits':
 --
@@ -138,7 +142,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_legacy_dithering Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_legacy_dithering Vulkan Specification>.
 --
 -- This 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_legacy_vertex_attributes.hs b/src/Vulkan/Extensions/VK_EXT_legacy_vertex_attributes.hs
--- a/src/Vulkan/Extensions/VK_EXT_legacy_vertex_attributes.hs
+++ b/src/Vulkan/Extensions/VK_EXT_legacy_vertex_attributes.hs
@@ -115,7 +115,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_legacy_vertex_attributes Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_legacy_vertex_attributes Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -165,12 +165,22 @@
 -- 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. 'PhysicalDeviceLegacyVertexAttributesFeaturesEXT' /can/ also
--- be used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo'
--- to selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceLegacyVertexAttributesFeaturesEXT', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_legacy_vertex_attributes VK_EXT_legacy_vertex_attributes>,
@@ -234,12 +244,19 @@
 -- 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. 'PhysicalDeviceLegacyVertexAttributesPropertiesEXT' /can/
--- also be used in the @pNext@ chain of
--- 'Vulkan.Core10.Device.DeviceCreateInfo' to selectively enable these
--- features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceLegacyVertexAttributesPropertiesEXT', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Extensions/VK_EXT_legacy_vertex_attributes.hs-boot b/src/Vulkan/Extensions/VK_EXT_legacy_vertex_attributes.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_legacy_vertex_attributes.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_legacy_vertex_attributes.hs-boot
@@ -115,7 +115,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_legacy_vertex_attributes Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_legacy_vertex_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_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
@@ -31,6 +31,9 @@
 --         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_line_rasterization VK_KHR_line_rasterization>
 --         extension
 --
+--         -   Which in turn was /promoted/ to
+--             <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.4-promotions Vulkan 1.4>
+--
 -- [__Special Use__]
 --
 --     -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-compatibility-specialuse CAD support>
@@ -89,7 +92,7 @@
 --     -   'PhysicalDeviceLineRasterizationPropertiesEXT'
 --
 -- -   Extending
---     'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo':
+--     'Vulkan.Core10.GraphicsPipeline.PipelineRasterizationStateCreateInfo':
 --
 --     -   'PipelineRasterizationLineStateCreateInfoEXT'
 --
@@ -107,6 +110,17 @@
 --
 --     -   'DYNAMIC_STATE_LINE_STIPPLE_EXT'
 --
+-- -   Extending
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LineRasterizationMode':
+--
+--     -   'LINE_RASTERIZATION_MODE_BRESENHAM_EXT'
+--
+--     -   'LINE_RASTERIZATION_MODE_DEFAULT_EXT'
+--
+--     -   'LINE_RASTERIZATION_MODE_RECTANGULAR_EXT'
+--
+--     -   'LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT'
+--
 -- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
 --
 --     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT'
@@ -139,7 +153,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_line_rasterization Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -147,6 +161,10 @@
                                                     , pattern STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT
                                                     , pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT
                                                     , pattern DYNAMIC_STATE_LINE_STIPPLE_EXT
+                                                    , pattern LINE_RASTERIZATION_MODE_DEFAULT_EXT
+                                                    , pattern LINE_RASTERIZATION_MODE_RECTANGULAR_EXT
+                                                    , pattern LINE_RASTERIZATION_MODE_BRESENHAM_EXT
+                                                    , pattern LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT
                                                     , cmdSetLineStippleEXT
                                                     , LineRasterizationModeEXT
                                                     , PhysicalDeviceLineRasterizationFeaturesEXT
@@ -156,62 +174,72 @@
                                                     , pattern EXT_LINE_RASTERIZATION_SPEC_VERSION
                                                     , EXT_LINE_RASTERIZATION_EXTENSION_NAME
                                                     , pattern EXT_LINE_RASTERIZATION_EXTENSION_NAME
-                                                    , PhysicalDeviceLineRasterizationFeaturesKHR(..)
-                                                    , PhysicalDeviceLineRasterizationPropertiesKHR(..)
-                                                    , PipelineRasterizationLineStateCreateInfoKHR(..)
-                                                    , cmdSetLineStippleKHR
-                                                    , LineRasterizationModeKHR(..)
                                                     ) where
 
 import Data.String (IsString)
-import Vulkan.Extensions.VK_KHR_line_rasterization (cmdSetLineStippleKHR)
-import Vulkan.Extensions.VK_KHR_line_rasterization (LineRasterizationModeKHR)
-import Vulkan.Extensions.VK_KHR_line_rasterization (PhysicalDeviceLineRasterizationFeaturesKHR)
-import Vulkan.Extensions.VK_KHR_line_rasterization (PhysicalDeviceLineRasterizationPropertiesKHR)
-import Vulkan.Extensions.VK_KHR_line_rasterization (PipelineRasterizationLineStateCreateInfoKHR)
-import Vulkan.Core10.Enums.DynamicState (DynamicState(DYNAMIC_STATE_LINE_STIPPLE_KHR))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_KHR))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_KHR))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_KHR))
-import Vulkan.Extensions.VK_KHR_line_rasterization (cmdSetLineStippleKHR)
-import Vulkan.Extensions.VK_KHR_line_rasterization (LineRasterizationModeKHR(..))
-import Vulkan.Extensions.VK_KHR_line_rasterization (PhysicalDeviceLineRasterizationFeaturesKHR(..))
-import Vulkan.Extensions.VK_KHR_line_rasterization (PhysicalDeviceLineRasterizationPropertiesKHR(..))
-import Vulkan.Extensions.VK_KHR_line_rasterization (PipelineRasterizationLineStateCreateInfoKHR(..))
+import Vulkan.Core14.Promoted_From_VK_KHR_line_rasterization (cmdSetLineStipple)
+import Vulkan.Core14.Enums.LineRasterizationMode (LineRasterizationMode)
+import Vulkan.Core14.Promoted_From_VK_KHR_line_rasterization (PhysicalDeviceLineRasterizationFeatures)
+import Vulkan.Core14.Promoted_From_VK_KHR_line_rasterization (PhysicalDeviceLineRasterizationProperties)
+import Vulkan.Core14.Promoted_From_VK_KHR_line_rasterization (PipelineRasterizationLineStateCreateInfo)
+import Vulkan.Core10.Enums.DynamicState (DynamicState(DYNAMIC_STATE_LINE_STIPPLE))
+import Vulkan.Core14.Enums.LineRasterizationMode (LineRasterizationMode(LINE_RASTERIZATION_MODE_BRESENHAM))
+import Vulkan.Core14.Enums.LineRasterizationMode (LineRasterizationMode(LINE_RASTERIZATION_MODE_DEFAULT))
+import Vulkan.Core14.Enums.LineRasterizationMode (LineRasterizationMode(LINE_RASTERIZATION_MODE_RECTANGULAR))
+import Vulkan.Core14.Enums.LineRasterizationMode (LineRasterizationMode(LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO))
 -- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT = STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_KHR
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT = STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES
 
 
 -- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT"
-pattern STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT = STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_KHR
+pattern STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT = STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO
 
 
 -- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT = STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_KHR
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT = STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES
 
 
 -- No documentation found for TopLevel "VK_DYNAMIC_STATE_LINE_STIPPLE_EXT"
-pattern DYNAMIC_STATE_LINE_STIPPLE_EXT = DYNAMIC_STATE_LINE_STIPPLE_KHR
+pattern DYNAMIC_STATE_LINE_STIPPLE_EXT = DYNAMIC_STATE_LINE_STIPPLE
 
 
+-- No documentation found for TopLevel "VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT"
+pattern LINE_RASTERIZATION_MODE_DEFAULT_EXT = LINE_RASTERIZATION_MODE_DEFAULT
+
+
+-- No documentation found for TopLevel "VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT"
+pattern LINE_RASTERIZATION_MODE_RECTANGULAR_EXT = LINE_RASTERIZATION_MODE_RECTANGULAR
+
+
+-- No documentation found for TopLevel "VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT"
+pattern LINE_RASTERIZATION_MODE_BRESENHAM_EXT = LINE_RASTERIZATION_MODE_BRESENHAM
+
+
+-- No documentation found for TopLevel "VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT"
+pattern LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT = LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH
+
+
 -- No documentation found for TopLevel "vkCmdSetLineStippleEXT"
-cmdSetLineStippleEXT = cmdSetLineStippleKHR
+cmdSetLineStippleEXT = cmdSetLineStipple
 
 
 -- No documentation found for TopLevel "VkLineRasterizationModeEXT"
-type LineRasterizationModeEXT = LineRasterizationModeKHR
+type LineRasterizationModeEXT = LineRasterizationMode
 
 
 -- No documentation found for TopLevel "VkPhysicalDeviceLineRasterizationFeaturesEXT"
-type PhysicalDeviceLineRasterizationFeaturesEXT = PhysicalDeviceLineRasterizationFeaturesKHR
+type PhysicalDeviceLineRasterizationFeaturesEXT = PhysicalDeviceLineRasterizationFeatures
 
 
 -- No documentation found for TopLevel "VkPhysicalDeviceLineRasterizationPropertiesEXT"
-type PhysicalDeviceLineRasterizationPropertiesEXT = PhysicalDeviceLineRasterizationPropertiesKHR
+type PhysicalDeviceLineRasterizationPropertiesEXT = PhysicalDeviceLineRasterizationProperties
 
 
 -- No documentation found for TopLevel "VkPipelineRasterizationLineStateCreateInfoEXT"
-type PipelineRasterizationLineStateCreateInfoEXT = PipelineRasterizationLineStateCreateInfoKHR
+type PipelineRasterizationLineStateCreateInfoEXT = PipelineRasterizationLineStateCreateInfo
 
 
 type EXT_LINE_RASTERIZATION_SPEC_VERSION = 1
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
@@ -31,6 +31,9 @@
 --         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_line_rasterization VK_KHR_line_rasterization>
 --         extension
 --
+--         -   Which in turn was /promoted/ to
+--             <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.4-promotions Vulkan 1.4>
+--
 -- [__Special Use__]
 --
 --     -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-compatibility-specialuse CAD support>
@@ -89,7 +92,7 @@
 --     -   'PhysicalDeviceLineRasterizationPropertiesEXT'
 --
 -- -   Extending
---     'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo':
+--     'Vulkan.Core10.GraphicsPipeline.PipelineRasterizationStateCreateInfo':
 --
 --     -   'PipelineRasterizationLineStateCreateInfoEXT'
 --
@@ -107,6 +110,17 @@
 --
 --     -   'DYNAMIC_STATE_LINE_STIPPLE_EXT'
 --
+-- -   Extending
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LineRasterizationMode':
+--
+--     -   'LINE_RASTERIZATION_MODE_BRESENHAM_EXT'
+--
+--     -   'LINE_RASTERIZATION_MODE_DEFAULT_EXT'
+--
+--     -   'LINE_RASTERIZATION_MODE_RECTANGULAR_EXT'
+--
+--     -   'LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT'
+--
 -- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
 --
 --     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT'
@@ -139,14 +153,14 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_line_rasterization Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
 module Vulkan.Extensions.VK_EXT_line_rasterization  (LineRasterizationModeEXT) where
 
 
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_line_rasterization (LineRasterizationModeKHR)
+import {-# SOURCE #-} Vulkan.Core14.Enums.LineRasterizationMode (LineRasterizationMode)
 -- No documentation found for TopLevel "VkLineRasterizationModeEXT"
-type LineRasterizationModeEXT = LineRasterizationModeKHR
+type LineRasterizationModeEXT = LineRasterizationMode
 
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
@@ -29,6 +29,9 @@
 --         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_load_store_op_none VK_KHR_load_store_op_none>
 --         extension
 --
+--         -   Which in turn was /promoted/ to
+--             <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.4-promotions Vulkan 1.4>
+--
 -- [__Contact__]
 --
 --     -   Shahbaz Youssefi
@@ -102,7 +105,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_load_store_op_none Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -115,10 +118,10 @@
                                                     ) where
 
 import Data.String (IsString)
-import Vulkan.Core10.Enums.AttachmentLoadOp (AttachmentLoadOp(ATTACHMENT_LOAD_OP_NONE_KHR))
+import Vulkan.Core10.Enums.AttachmentLoadOp (AttachmentLoadOp(ATTACHMENT_LOAD_OP_NONE))
 import Vulkan.Core10.Enums.AttachmentStoreOp (AttachmentStoreOp(ATTACHMENT_STORE_OP_NONE))
 -- No documentation found for TopLevel "VK_ATTACHMENT_LOAD_OP_NONE_EXT"
-pattern ATTACHMENT_LOAD_OP_NONE_EXT = ATTACHMENT_LOAD_OP_NONE_KHR
+pattern ATTACHMENT_LOAD_OP_NONE_EXT = ATTACHMENT_LOAD_OP_NONE
 
 
 -- No documentation found for TopLevel "VK_ATTACHMENT_STORE_OP_NONE_EXT"
diff --git a/src/Vulkan/Extensions/VK_EXT_map_memory_placed.hs b/src/Vulkan/Extensions/VK_EXT_map_memory_placed.hs
--- a/src/Vulkan/Extensions/VK_EXT_map_memory_placed.hs
+++ b/src/Vulkan/Extensions/VK_EXT_map_memory_placed.hs
@@ -22,6 +22,8 @@
 --
 -- [__Extension and Version Dependencies__]
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_map_memory2 VK_KHR_map_memory2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.4 Vulkan Version 1.4>
 --
 -- [__Contact__]
 --
@@ -65,7 +67,8 @@
 --
 -- == New Structures
 --
--- -   Extending 'Vulkan.Extensions.VK_KHR_map_memory2.MemoryMapInfoKHR':
+-- -   Extending
+--     'Vulkan.Core14.Promoted_From_VK_KHR_map_memory2.MemoryMapInfo':
 --
 --     -   'MemoryMapPlacedInfoEXT'
 --
@@ -91,9 +94,9 @@
 --     -   'Vulkan.Core10.Enums.MemoryMapFlagBits.MEMORY_MAP_PLACED_BIT_EXT'
 --
 -- -   Extending
---     'Vulkan.Extensions.VK_KHR_map_memory2.MemoryUnmapFlagBitsKHR':
+--     'Vulkan.Core14.Enums.MemoryUnmapFlagBits.MemoryUnmapFlagBits':
 --
---     -   'Vulkan.Extensions.VK_KHR_map_memory2.MEMORY_UNMAP_RESERVE_BIT_EXT'
+--     -   'Vulkan.Core14.Enums.MemoryUnmapFlagBits.MEMORY_UNMAP_RESERVE_BIT_EXT'
 --
 -- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
 --
@@ -105,7 +108,7 @@
 --
 -- == Version History
 --
--- -   Revision 0, 2024-01-14 (Faith Ekstrand)
+-- -   Revision 1, 2024-01-14 (Faith Ekstrand)
 --
 --     -   Internal revisions
 --
@@ -116,7 +119,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_map_memory_placed Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_map_memory_placed Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -127,8 +130,6 @@
                                                    , pattern EXT_MAP_MEMORY_PLACED_SPEC_VERSION
                                                    , EXT_MAP_MEMORY_PLACED_EXTENSION_NAME
                                                    , pattern EXT_MAP_MEMORY_PLACED_EXTENSION_NAME
-                                                   , MemoryUnmapFlagBitsKHR(..)
-                                                   , MemoryUnmapFlagsKHR
                                                    ) where
 
 import Foreign.Marshal.Alloc (allocaBytes)
@@ -156,8 +157,6 @@
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_MEMORY_MAP_PLACED_INFO_EXT))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_MAP_MEMORY_PLACED_FEATURES_EXT))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_MAP_MEMORY_PLACED_PROPERTIES_EXT))
-import Vulkan.Extensions.VK_KHR_map_memory2 (MemoryUnmapFlagBitsKHR(..))
-import Vulkan.Extensions.VK_KHR_map_memory2 (MemoryUnmapFlagsKHR)
 -- | VkPhysicalDeviceMapMemoryPlacedFeaturesEXT - Structure describing placed
 -- memory map features that can be supported by an implementation
 --
@@ -173,12 +172,22 @@
 -- 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. 'PhysicalDeviceMapMemoryPlacedFeaturesEXT' /can/ also be used
--- in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceMapMemoryPlacedFeaturesEXT', it /must/ add an instance of
+-- the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_map_memory_placed VK_EXT_map_memory_placed>,
@@ -264,8 +273,12 @@
 -- it is filled in with each corresponding implementation-dependent
 -- property.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_map_memory_placed VK_EXT_map_memory_placed>,
@@ -319,19 +332,13 @@
 --
 -- == Valid Usage
 --
--- -   #VUID-VkMemoryMapPlacedInfoEXT-flags-09576# If
---     'Vulkan.Extensions.VK_KHR_map_memory2.MemoryMapInfoKHR'::@flags@
---     contains
---     'Vulkan.Core10.Enums.MemoryMapFlagBits.MEMORY_MAP_PLACED_BIT_EXT',
---     @pPlacedAddress@ /must/ not be @NULL@
---
 -- -   #VUID-VkMemoryMapPlacedInfoEXT-pPlacedAddress-09577#
 --     @pPlacedAddress@ /must/ be aligned to an integer multiple of
 --     'PhysicalDeviceMapMemoryPlacedPropertiesEXT'::@minPlacedMemoryMapAlignment@
 --
 -- -   #VUID-VkMemoryMapPlacedInfoEXT-pPlacedAddress-09578# The address
 --     range specified by @pPlacedAddress@ and
---     'Vulkan.Extensions.VK_KHR_map_memory2.MemoryMapInfoKHR'::@size@
+--     'Vulkan.Core14.Promoted_From_VK_KHR_map_memory2.MemoryMapInfo'::@size@
 --     /must/ not overlap any existing Vulkan memory object mapping
 --
 -- == Valid Usage (Implicit)
@@ -339,14 +346,21 @@
 -- -   #VUID-VkMemoryMapPlacedInfoEXT-sType-sType# @sType@ /must/ be
 --     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MEMORY_MAP_PLACED_INFO_EXT'
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core14.Promoted_From_VK_KHR_map_memory2.MemoryMapInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_map_memory_placed VK_EXT_map_memory_placed>,
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data MemoryMapPlacedInfoEXT = MemoryMapPlacedInfoEXT
   { -- | @pPlacedAddress@ is the virtual address at which to place the address.
-    -- If 'Vulkan.Extensions.VK_KHR_map_memory2.MemoryMapInfoKHR'::@flags@ does
-    -- not contain
+    -- If
+    -- 'Vulkan.Core14.Promoted_From_VK_KHR_map_memory2.MemoryMapInfo'::@flags@
+    -- does not contain
     -- 'Vulkan.Core10.Enums.MemoryMapFlagBits.MEMORY_MAP_PLACED_BIT_EXT', this
     -- value is ignored.
     placedAddress :: Ptr () }
diff --git a/src/Vulkan/Extensions/VK_EXT_map_memory_placed.hs-boot b/src/Vulkan/Extensions/VK_EXT_map_memory_placed.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_map_memory_placed.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_map_memory_placed.hs-boot
@@ -22,6 +22,8 @@
 --
 -- [__Extension and Version Dependencies__]
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_map_memory2 VK_KHR_map_memory2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.4 Vulkan Version 1.4>
 --
 -- [__Contact__]
 --
@@ -65,7 +67,8 @@
 --
 -- == New Structures
 --
--- -   Extending 'Vulkan.Extensions.VK_KHR_map_memory2.MemoryMapInfoKHR':
+-- -   Extending
+--     'Vulkan.Core14.Promoted_From_VK_KHR_map_memory2.MemoryMapInfo':
 --
 --     -   'MemoryMapPlacedInfoEXT'
 --
@@ -91,9 +94,9 @@
 --     -   'Vulkan.Core10.Enums.MemoryMapFlagBits.MEMORY_MAP_PLACED_BIT_EXT'
 --
 -- -   Extending
---     'Vulkan.Extensions.VK_KHR_map_memory2.MemoryUnmapFlagBitsKHR':
+--     'Vulkan.Core14.Enums.MemoryUnmapFlagBits.MemoryUnmapFlagBits':
 --
---     -   'Vulkan.Extensions.VK_KHR_map_memory2.MEMORY_UNMAP_RESERVE_BIT_EXT'
+--     -   'Vulkan.Core14.Enums.MemoryUnmapFlagBits.MEMORY_UNMAP_RESERVE_BIT_EXT'
 --
 -- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
 --
@@ -105,7 +108,7 @@
 --
 -- == Version History
 --
--- -   Revision 0, 2024-01-14 (Faith Ekstrand)
+-- -   Revision 1, 2024-01-14 (Faith Ekstrand)
 --
 --     -   Internal revisions
 --
@@ -116,7 +119,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_map_memory_placed Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_map_memory_placed Vulkan Specification>.
 --
 -- This 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 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
@@ -98,7 +98,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_memory_budget Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -156,7 +156,11 @@
 -- The @heapBudget@ value /must/ be less than or equal to
 -- 'Vulkan.Core10.DeviceInitialization.MemoryHeap'::@size@ for each heap.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceMemoryProperties2'
 --
 -- = See Also
 --
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
@@ -98,7 +98,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_memory_budget Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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_decompression.hs b/src/Vulkan/Extensions/VK_EXT_memory_decompression.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_EXT_memory_decompression.hs
@@ -0,0 +1,980 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_EXT_memory_decompression - device extension
+--
+-- = VK_EXT_memory_decompression
+--
+-- [__Name String__]
+--     @VK_EXT_memory_decompression@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     551
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_buffer_device_address VK_KHR_buffer_device_address>
+--
+-- [__Contact__]
+--
+--     -   Vikram Kushwaha
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_memory_decompression] @vkushwaha-nv%0A*Here describe the issue or question you have about the VK_EXT_memory_decompression extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_EXT_memory_decompression.adoc VK_EXT_memory_decompression>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2025-01-23
+--
+-- [__Contributors__]
+--
+--     -   Vikram Kushwaha, NVIDIA
+--
+--     -   Daniel Koch, NVIDIA
+--
+--     -   Jeff Bolz, NVIDIA
+--
+--     -   Christoph Kubisch, NVIDIA
+--
+--     -   Piers Daniell, NVIDIA
+--
+--     -   Spencer Fricke, LunarG
+--
+-- == Description
+--
+-- This extension adds support for performing memory to memory
+-- decompression.
+--
+-- == New Commands
+--
+-- -   'cmdDecompressMemoryEXT'
+--
+-- -   'cmdDecompressMemoryIndirectCountEXT'
+--
+-- == New Structures
+--
+-- -   'DecompressMemoryInfoEXT'
+--
+-- -   'DecompressMemoryRegionEXT'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceMemoryDecompressionFeaturesEXT'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDeviceMemoryDecompressionPropertiesEXT'
+--
+-- == New Enums
+--
+-- -   'MemoryDecompressionMethodFlagBitsEXT'
+--
+-- == New Bitmasks
+--
+-- -   'MemoryDecompressionMethodFlagsEXT'
+--
+-- == New Enum Constants
+--
+-- -   'EXT_MEMORY_DECOMPRESSION_EXTENSION_NAME'
+--
+-- -   'EXT_MEMORY_DECOMPRESSION_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core13.Enums.AccessFlags2.AccessFlagBits2':
+--
+--     -   'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_MEMORY_DECOMPRESSION_READ_BIT_EXT'
+--
+--     -   'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_MEMORY_DECOMPRESSION_WRITE_BIT_EXT'
+--
+-- -   Extending
+--     'Vulkan.Core14.Enums.BufferUsageFlags2.BufferUsageFlagBits2':
+--
+--     -   'Vulkan.Core14.Enums.BufferUsageFlags2.BUFFER_USAGE_2_MEMORY_DECOMPRESSION_BIT_EXT'
+--
+-- -   Extending
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlagBits2':
+--
+--     -   'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MEMORY_DECOMPRESSION_BIT_EXT'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DECOMPRESS_MEMORY_INFO_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_EXT'
+--
+-- == Issues
+--
+-- 1) How does an app know the minimum size that @decompressedSize@ should
+-- be set to?
+--
+-- __RESOLVED__: When decompressing, data is typically processed in chunks.
+-- For example, with GDeflate 1.0, data is streamed in 64 KB blocks, but
+-- the final block may be smaller. The exact size of this last block
+-- depends on the compression method and original data size and so it must
+-- be stored in the compressed bitstream so that the decompressor can set
+-- @decompressedSize@ correctly. It is still ok for the last block to take
+-- up all 64 KB, but setting it too low will cause issues and is undefined
+-- behavior. It is a known limitation that the validation layers will not
+-- be able to detect the minimum size of @decompressedSize@ unless it
+-- decides to implement each decompression method specification.
+--
+-- == Version History
+--
+-- -   Revision 1, 2025-01-23 (Daniel Koch)
+--
+--     -   Initial draft
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_memory_decompression Vulkan Specification>.
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_EXT_memory_decompression  ( cmdDecompressMemoryEXT
+                                                      , cmdDecompressMemoryIndirectCountEXT
+                                                      , pattern MEMORY_DECOMPRESSION_METHOD_GDEFLATE_1_0_BIT_NV
+                                                      , PhysicalDeviceMemoryDecompressionFeaturesEXT(..)
+                                                      , PhysicalDeviceMemoryDecompressionPropertiesEXT(..)
+                                                      , DecompressMemoryRegionEXT(..)
+                                                      , DecompressMemoryInfoEXT(..)
+                                                      , MemoryDecompressionMethodFlagsEXT
+                                                      , MemoryDecompressionMethodFlagBitsEXT( MEMORY_DECOMPRESSION_METHOD_GDEFLATE_1_0_BIT_EXT
+                                                                                            , ..
+                                                                                            )
+                                                      , EXT_MEMORY_DECOMPRESSION_SPEC_VERSION
+                                                      , pattern EXT_MEMORY_DECOMPRESSION_SPEC_VERSION
+                                                      , EXT_MEMORY_DECOMPRESSION_EXTENSION_NAME
+                                                      , pattern EXT_MEMORY_DECOMPRESSION_EXTENSION_NAME
+                                                      ) where
+
+import Data.Bits (Bits)
+import Data.Bits (FiniteBits)
+import Vulkan.Internal.Utils (enumReadPrec)
+import Vulkan.Internal.Utils (enumShowsPrec)
+import Vulkan.Internal.Utils (traceAroundEvent)
+import Control.Monad (unless)
+import Control.Monad.IO.Class (liftIO)
+import Foreign.Marshal.Alloc (allocaBytes)
+import GHC.IO (throwIO)
+import GHC.Ptr (nullFunPtr)
+import Foreign.Ptr (nullPtr)
+import Foreign.Ptr (plusPtr)
+import GHC.Show (showString)
+import Numeric (showHex)
+import Control.Monad.Trans.Class (lift)
+import Control.Monad.Trans.Cont (evalContT)
+import 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.String (IsString)
+import Data.Typeable (Typeable)
+import Foreign.Storable (Storable)
+import Foreign.Storable (Storable(peek))
+import Foreign.Storable (Storable(poke))
+import qualified Foreign.Storable (Storable(..))
+import GHC.Generics (Generic)
+import GHC.IO.Exception (IOErrorType(..))
+import GHC.IO.Exception (IOException(..))
+import Foreign.Ptr (FunPtr)
+import Foreign.Ptr (Ptr)
+import GHC.Read (Read(readPrec))
+import GHC.Show (Show(showsPrec))
+import Data.Word (Word32)
+import Data.Word (Word64)
+import Data.Kind (Type)
+import Control.Monad.Trans.Cont (ContT(..))
+import Data.Vector (Vector)
+import Vulkan.CStruct.Utils (advancePtrBytes)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.NamedType ((:::))
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.Core10.Handles (CommandBuffer)
+import Vulkan.Core10.Handles (CommandBuffer(..))
+import Vulkan.Core10.Handles (CommandBuffer(CommandBuffer))
+import Vulkan.Core10.Handles (CommandBuffer_T)
+import Vulkan.Core10.FundamentalTypes (DeviceAddress)
+import Vulkan.Dynamic (DeviceCmds(pVkCmdDecompressMemoryEXT))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdDecompressMemoryIndirectCountEXT))
+import Vulkan.Core10.FundamentalTypes (DeviceSize)
+import Vulkan.Core10.FundamentalTypes (Flags64)
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DECOMPRESS_MEMORY_INFO_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_EXT))
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdDecompressMemoryEXT
+  :: FunPtr (Ptr CommandBuffer_T -> Ptr DecompressMemoryInfoEXT -> IO ()) -> Ptr CommandBuffer_T -> Ptr DecompressMemoryInfoEXT -> IO ()
+
+-- | vkCmdDecompressMemoryEXT - Decompress data between memory regions
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdDecompressMemoryEXT-memoryDecompression-11761# The
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-memoryDecompression memoryDecompression>
+--     feature /must/ be enabled
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdDecompressMemoryEXT-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdDecompressMemoryEXT-pDecompressMemoryInfoEXT-parameter#
+--     @pDecompressMemoryInfoEXT@ /must/ be a valid pointer to a valid
+--     'DecompressMemoryInfoEXT' structure
+--
+-- -   #VUID-vkCmdDecompressMemoryEXT-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-vkCmdDecompressMemoryEXT-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', or
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
+--
+-- -   #VUID-vkCmdDecompressMemoryEXT-renderpass# This command /must/ only
+--     be called outside of a render pass instance
+--
+-- -   #VUID-vkCmdDecompressMemoryEXT-suspended# This command /must/ not be
+--     called between suspended render pass instances
+--
+-- -   #VUID-vkCmdDecompressMemoryEXT-videocoding# This command /must/ only
+--     be called outside of a video coding scope
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | VK_QUEUE_GRAPHICS_BIT                                                                                                 |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdDecompressMemoryEXT is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_memory_decompression VK_EXT_memory_decompression>,
+-- 'Vulkan.Core10.Handles.CommandBuffer', 'DecompressMemoryInfoEXT'
+cmdDecompressMemoryEXT :: forall io
+                        . (MonadIO io)
+                       => -- | @commandBuffer@ is the command buffer into which the command will be
+                          -- recorded.
+                          CommandBuffer
+                       -> -- | @pDecompressMemoryInfoEXT@ is a pointer to a 'DecompressMemoryInfoEXT'
+                          -- structure describing the decompression parameters.
+                          DecompressMemoryInfoEXT
+                       -> io ()
+cmdDecompressMemoryEXT commandBuffer
+                         decompressMemoryInfoEXT = liftIO . evalContT $ do
+  let vkCmdDecompressMemoryEXTPtr = pVkCmdDecompressMemoryEXT (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdDecompressMemoryEXTPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdDecompressMemoryEXT is null" Nothing Nothing
+  let vkCmdDecompressMemoryEXT' = mkVkCmdDecompressMemoryEXT vkCmdDecompressMemoryEXTPtr
+  pDecompressMemoryInfoEXT <- ContT $ withCStruct (decompressMemoryInfoEXT)
+  lift $ traceAroundEvent "vkCmdDecompressMemoryEXT" (vkCmdDecompressMemoryEXT'
+                                                        (commandBufferHandle (commandBuffer))
+                                                        pDecompressMemoryInfoEXT)
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdDecompressMemoryIndirectCountEXT
+  :: FunPtr (Ptr CommandBuffer_T -> MemoryDecompressionMethodFlagsEXT -> DeviceAddress -> DeviceAddress -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> MemoryDecompressionMethodFlagsEXT -> DeviceAddress -> DeviceAddress -> Word32 -> Word32 -> IO ()
+
+-- | vkCmdDecompressMemoryIndirectCountEXT - Indirect decompress data between
+-- memory regions
+--
+-- = Description
+--
+-- Each region specified in @indirectCommandsAddress@ is decompressed from
+-- the source to destination region based on the specified
+-- @decompressionMethod@.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdDecompressMemoryIndirectCountEXT-None-07692# The
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-memoryDecompression memoryDecompression>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdDecompressMemoryIndirectCountEXT-indirectCommandsAddress-07694#
+--     @indirectCommandsAddress@ /must/ be a device address allocated to
+--     the application from a buffer created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdDecompressMemoryIndirectCountEXT-indirectCommandsAddress-07695#
+--     @indirectCommandsAddress@ /must/ be a multiple of @4@
+--
+-- -   #VUID-vkCmdDecompressMemoryIndirectCountEXT-indirectCommandsCountAddress-07697#
+--     @indirectCommandsCountAddress@ /must/ be a device address allocated
+--     to the application from a buffer created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdDecompressMemoryIndirectCountEXT-indirectCommandsCountAddress-07698#
+--     @indirectCommandsCountAddress@ /must/ be a multiple of @4@
+--
+-- -   #VUID-vkCmdDecompressMemoryIndirectCountEXT-indirectCommandsCountAddress-07699#
+--     The count stored in @indirectCommandsCountAddress@ /must/ be less
+--     than or equal to
+--     'PhysicalDeviceMemoryDecompressionPropertiesEXT'::@maxDecompressionIndirectCount@
+--
+-- -   #VUID-vkCmdDecompressMemoryIndirectCountEXT-indirectCommandsAddress-11794#
+--     All device addresses between @indirectCommandsAddress@ and
+--     @indirectCommandsAddress@ + (@stride@ × (count stored in
+--     @indirectCommandsCountAddress@)) - 1 /must/ be in the buffer device
+--     address range of the same buffer
+--
+-- -   #VUID-vkCmdDecompressMemoryIndirectCountEXT-decompressionMethod-07690#
+--     The @decompressionMethod@ /must/ have a single bit set
+--
+-- -   #VUID-vkCmdDecompressMemoryIndirectCountEXT-stride-11767# @stride@
+--     /must/ be a multiple of @4@ and /must/ be greater than or equal to
+--     sizeof('DecompressMemoryRegionEXT')
+--
+-- -   #VUID-vkCmdDecompressMemoryIndirectCountEXT-maxDecompressionCount-11768#
+--     @maxDecompressionCount@ /must/ be less than or equal to
+--     'PhysicalDeviceMemoryDecompressionPropertiesEXT'::@maxDecompressionIndirectCount@
+--
+-- -   #VUID-vkCmdDecompressMemoryIndirectCountEXT-decompressionMethod-11769#
+--     If @decompressionMethod@ is
+--     'MEMORY_DECOMPRESSION_METHOD_GDEFLATE_1_0_BIT_EXT', then all values
+--     in 'DecompressMemoryRegionEXT'::@decompressedSize@ /must/ be less
+--     than or equal to 65536 bytes
+--
+-- -   #VUID-vkCmdDecompressMemoryIndirectCountEXT-decompressionMethod-11810#
+--     @decompressionMethod@ /must/ be a valid bit specified in
+--     'PhysicalDeviceMemoryDecompressionPropertiesEXT'::@decompressionMethods@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdDecompressMemoryIndirectCountEXT-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdDecompressMemoryIndirectCountEXT-decompressionMethod-parameter#
+--     @decompressionMethod@ /must/ be a valid combination of
+--     'MemoryDecompressionMethodFlagBitsEXT' values
+--
+-- -   #VUID-vkCmdDecompressMemoryIndirectCountEXT-decompressionMethod-requiredbitmask#
+--     @decompressionMethod@ /must/ not be @0@
+--
+-- -   #VUID-vkCmdDecompressMemoryIndirectCountEXT-indirectCommandsAddress-parameter#
+--     @indirectCommandsAddress@ /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' value
+--
+-- -   #VUID-vkCmdDecompressMemoryIndirectCountEXT-indirectCommandsCountAddress-parameter#
+--     @indirectCommandsCountAddress@ /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' value
+--
+-- -   #VUID-vkCmdDecompressMemoryIndirectCountEXT-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-vkCmdDecompressMemoryIndirectCountEXT-commandBuffer-cmdpool#
+--     The 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', or
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
+--
+-- -   #VUID-vkCmdDecompressMemoryIndirectCountEXT-renderpass# This command
+--     /must/ only be called outside of a render pass instance
+--
+-- -   #VUID-vkCmdDecompressMemoryIndirectCountEXT-suspended# This command
+--     /must/ not be called between suspended render pass instances
+--
+-- -   #VUID-vkCmdDecompressMemoryIndirectCountEXT-videocoding# This
+--     command /must/ only be called outside of a video coding scope
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | VK_QUEUE_GRAPHICS_BIT                                                                                                 |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdDecompressMemoryIndirectCountEXT is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_memory_decompression VK_EXT_memory_decompression>,
+-- 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceAddress',
+-- 'MemoryDecompressionMethodFlagsEXT'
+cmdDecompressMemoryIndirectCountEXT :: forall io
+                                     . (MonadIO io)
+                                    => -- | @commandBuffer@ is the command buffer into which the command will be
+                                       -- recorded.
+                                       CommandBuffer
+                                    -> -- | @decompressionMethod@ is a bitmask of
+                                       -- 'MemoryDecompressionMethodFlagBitsEXT' with a single bit set specifying
+                                       -- the method used to decompress data.
+                                       MemoryDecompressionMethodFlagsEXT
+                                    -> -- | @indirectCommandsAddress@ is the device address containing decompression
+                                       -- parameters laid out as an array of 'DecompressMemoryRegionEXT'
+                                       -- structures.
+                                       ("indirectCommandsAddress" ::: DeviceAddress)
+                                    -> -- | @indirectCommandsCountAddress@ is the device address containing a 32-bit
+                                       -- integer value specifying the decompression count.
+                                       ("indirectCommandsCountAddress" ::: DeviceAddress)
+                                    -> -- | @maxDecompressionCount@ is maximum number of decompressions that will be
+                                       -- executed. The actual number of executed decompressions is the minimum of
+                                       -- the count specified in @indirectCommandsCountAddress@ and
+                                       -- @maxDecompressionCount@.
+                                       ("maxDecompressionCount" ::: Word32)
+                                    -> -- | @stride@ is the byte stride between successive sets of decompression
+                                       -- parameters located starting from @indirectCommandsAddress@.
+                                       ("stride" ::: Word32)
+                                    -> io ()
+cmdDecompressMemoryIndirectCountEXT commandBuffer
+                                      decompressionMethod
+                                      indirectCommandsAddress
+                                      indirectCommandsCountAddress
+                                      maxDecompressionCount
+                                      stride = liftIO $ do
+  let vkCmdDecompressMemoryIndirectCountEXTPtr = pVkCmdDecompressMemoryIndirectCountEXT (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  unless (vkCmdDecompressMemoryIndirectCountEXTPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdDecompressMemoryIndirectCountEXT is null" Nothing Nothing
+  let vkCmdDecompressMemoryIndirectCountEXT' = mkVkCmdDecompressMemoryIndirectCountEXT vkCmdDecompressMemoryIndirectCountEXTPtr
+  traceAroundEvent "vkCmdDecompressMemoryIndirectCountEXT" (vkCmdDecompressMemoryIndirectCountEXT'
+                                                              (commandBufferHandle (commandBuffer))
+                                                              (decompressionMethod)
+                                                              (indirectCommandsAddress)
+                                                              (indirectCommandsCountAddress)
+                                                              (maxDecompressionCount)
+                                                              (stride))
+  pure $ ()
+
+
+-- No documentation found for TopLevel "VK_MEMORY_DECOMPRESSION_METHOD_GDEFLATE_1_0_BIT_NV"
+pattern MEMORY_DECOMPRESSION_METHOD_GDEFLATE_1_0_BIT_NV = MEMORY_DECOMPRESSION_METHOD_GDEFLATE_1_0_BIT_EXT
+
+
+-- | VkPhysicalDeviceMemoryDecompressionFeaturesEXT - Structure describing if
+-- memory decompression is supported by an implementation
+--
+-- = Members
+--
+-- This structure describes the following features:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceMemoryDecompressionFeaturesEXT' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceMemoryDecompressionFeaturesEXT', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_memory_decompression VK_EXT_memory_decompression>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_memory_decompression VK_NV_memory_decompression>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceMemoryDecompressionFeaturesEXT = PhysicalDeviceMemoryDecompressionFeaturesEXT
+  { -- | #features-memoryDecompression# @memoryDecompression@ indicates whether
+    -- memory decompression is supported.
+    memoryDecompression :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceMemoryDecompressionFeaturesEXT)
+#endif
+deriving instance Show PhysicalDeviceMemoryDecompressionFeaturesEXT
+
+instance ToCStruct PhysicalDeviceMemoryDecompressionFeaturesEXT where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceMemoryDecompressionFeaturesEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (memoryDecompression))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceMemoryDecompressionFeaturesEXT where
+  peekCStruct p = do
+    memoryDecompression <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDeviceMemoryDecompressionFeaturesEXT
+             (bool32ToBool memoryDecompression)
+
+instance Storable PhysicalDeviceMemoryDecompressionFeaturesEXT where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceMemoryDecompressionFeaturesEXT where
+  zero = PhysicalDeviceMemoryDecompressionFeaturesEXT
+           zero
+
+
+-- | VkPhysicalDeviceMemoryDecompressionPropertiesEXT - Structure describing
+-- supported memory decompression methods by an implementation
+--
+-- = Description
+--
+-- If
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-memoryDecompression memoryDecompression>
+-- feature is supported, @decompressionMethods@ /must/ have at least one
+-- bit set.
+--
+-- If the 'PhysicalDeviceMemoryDecompressionPropertiesEXT' 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.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_memory_decompression VK_EXT_memory_decompression>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_memory_decompression VK_NV_memory_decompression>,
+-- 'MemoryDecompressionMethodFlagsEXT',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceMemoryDecompressionPropertiesEXT = PhysicalDeviceMemoryDecompressionPropertiesEXT
+  { -- | @decompressionMethods@ is a bitmask of
+    -- 'MemoryDecompressionMethodFlagBitsEXT' specifying memory decompression
+    -- methods supported by the implementation.
+    decompressionMethods :: MemoryDecompressionMethodFlagsEXT
+  , -- | @maxDecompressionIndirectCount@ specifies the maximum supported count
+    -- value identified by either
+    -- 'cmdDecompressMemoryIndirectCountEXT'::@maxDecompressionCount@ or the
+    -- value specified in
+    -- 'cmdDecompressMemoryIndirectCountEXT'::@indirectCommandsCountAddress@
+    maxDecompressionIndirectCount :: Word64
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceMemoryDecompressionPropertiesEXT)
+#endif
+deriving instance Show PhysicalDeviceMemoryDecompressionPropertiesEXT
+
+instance ToCStruct PhysicalDeviceMemoryDecompressionPropertiesEXT where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceMemoryDecompressionPropertiesEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr MemoryDecompressionMethodFlagsEXT)) (decompressionMethods)
+    poke ((p `plusPtr` 24 :: Ptr Word64)) (maxDecompressionIndirectCount)
+    f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr MemoryDecompressionMethodFlagsEXT)) (zero)
+    poke ((p `plusPtr` 24 :: Ptr Word64)) (zero)
+    f
+
+instance FromCStruct PhysicalDeviceMemoryDecompressionPropertiesEXT where
+  peekCStruct p = do
+    decompressionMethods <- peek @MemoryDecompressionMethodFlagsEXT ((p `plusPtr` 16 :: Ptr MemoryDecompressionMethodFlagsEXT))
+    maxDecompressionIndirectCount <- peek @Word64 ((p `plusPtr` 24 :: Ptr Word64))
+    pure $ PhysicalDeviceMemoryDecompressionPropertiesEXT
+             decompressionMethods maxDecompressionIndirectCount
+
+instance Storable PhysicalDeviceMemoryDecompressionPropertiesEXT where
+  sizeOf ~_ = 32
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceMemoryDecompressionPropertiesEXT where
+  zero = PhysicalDeviceMemoryDecompressionPropertiesEXT
+           zero
+           zero
+
+
+-- | VkDecompressMemoryRegionEXT - Structure specifying decompression region
+--
+-- = Description
+--
+-- Accesses to compressed and decompressed data specified in @srcAddress@
+-- and @dstAddress@ /must/ be
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies synchronized>
+-- with the
+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MEMORY_DECOMPRESSION_BIT_EXT'
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-pipeline-stages pipeline stage>
+-- with
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-access-types access type>
+-- of
+-- 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_MEMORY_DECOMPRESSION_READ_BIT_EXT'
+-- or
+-- 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_MEMORY_DECOMPRESSION_WRITE_BIT_EXT'.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkDecompressMemoryRegionEXT-srcAddress-07685# @srcAddress@
+--     /must/ be 4 byte aligned
+--
+-- -   #VUID-VkDecompressMemoryRegionEXT-srcAddress-07686# The memory range
+--     defined by @srcAddress@ and @compressedSize@ /must/ be contained
+--     within the size of the buffer bound to @srcAddress@, minus the
+--     offset of @srcAddress@ from the base address of that buffer
+--
+-- -   #VUID-VkDecompressMemoryRegionEXT-dstAddress-07687# @dstAddress@
+--     /must/ be 4 byte aligned
+--
+-- -   #VUID-VkDecompressMemoryRegionEXT-dstAddress-07688# The memory range
+--     defined by @dstAddress@ and @decompressedSize@ /must/ be contained
+--     within the size of the buffer bound to @dstAddress@, minus the
+--     offset of @dstAddress@ from the base address of that buffer
+--
+-- -   #VUID-VkDecompressMemoryRegionEXT-decompressedSize-07689#
+--     @decompressedSize@ /must/ be large enough to hold the decompressed
+--     data based on the @decompressionMethod@
+--
+-- -   #VUID-VkDecompressMemoryRegionEXT-compressedSize-11795#
+--     @compressedSize@ /must/ not be zero
+--
+-- -   #VUID-VkDecompressMemoryRegionEXT-decompressedSize-11796#
+--     @decompressedSize@ /must/ not be zero
+--
+-- -   #VUID-VkDecompressMemoryRegionEXT-srcAddress-07691# The memory range
+--     defined by @srcAddress@ and @compressedSize@ /must/ not overlap the
+--     memory range defined by @dstAddress@ and @decompressedSize@
+--
+-- -   #VUID-VkDecompressMemoryRegionEXT-srcAddress-11764# @srcAddress@
+--     /must/ be a device address allocated to the application from a
+--     buffer created with the
+--     'Vulkan.Core14.Enums.BufferUsageFlags2.BUFFER_USAGE_2_MEMORY_DECOMPRESSION_BIT_EXT'
+--     usage flag set
+--
+-- -   #VUID-VkDecompressMemoryRegionEXT-dstAddress-11765# @dstAddress@
+--     /must/ be a device address allocated to the application from a
+--     buffer created with the
+--     'Vulkan.Core14.Enums.BufferUsageFlags2.BUFFER_USAGE_2_MEMORY_DECOMPRESSION_BIT_EXT'
+--     usage flag set
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkDecompressMemoryRegionEXT-srcAddress-parameter# @srcAddress@
+--     /must/ be a valid 'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--     value
+--
+-- -   #VUID-VkDecompressMemoryRegionEXT-dstAddress-parameter# @dstAddress@
+--     /must/ be a valid 'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--     value
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_memory_decompression VK_EXT_memory_decompression>,
+-- 'DecompressMemoryInfoEXT',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceAddress',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize'
+data DecompressMemoryRegionEXT = DecompressMemoryRegionEXT
+  { -- | @srcAddress@ is the address where compressed data is stored.
+    srcAddress :: DeviceAddress
+  , -- | @dstAddress@ is the destination address where decompressed data will be
+    -- written.
+    dstAddress :: DeviceAddress
+  , -- | @compressedSize@ is the size of compressed data in bytes.
+    compressedSize :: DeviceSize
+  , -- | @decompressedSize@ is the size of decompressed data in bytes.
+    decompressedSize :: DeviceSize
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (DecompressMemoryRegionEXT)
+#endif
+deriving instance Show DecompressMemoryRegionEXT
+
+instance ToCStruct DecompressMemoryRegionEXT where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p DecompressMemoryRegionEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr DeviceAddress)) (srcAddress)
+    poke ((p `plusPtr` 8 :: Ptr DeviceAddress)) (dstAddress)
+    poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (compressedSize)
+    poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (decompressedSize)
+    f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr DeviceAddress)) (zero)
+    poke ((p `plusPtr` 8 :: Ptr DeviceAddress)) (zero)
+    poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (zero)
+    poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (zero)
+    f
+
+instance FromCStruct DecompressMemoryRegionEXT where
+  peekCStruct p = do
+    srcAddress <- peek @DeviceAddress ((p `plusPtr` 0 :: Ptr DeviceAddress))
+    dstAddress <- peek @DeviceAddress ((p `plusPtr` 8 :: Ptr DeviceAddress))
+    compressedSize <- peek @DeviceSize ((p `plusPtr` 16 :: Ptr DeviceSize))
+    decompressedSize <- peek @DeviceSize ((p `plusPtr` 24 :: Ptr DeviceSize))
+    pure $ DecompressMemoryRegionEXT
+             srcAddress dstAddress compressedSize decompressedSize
+
+instance Storable DecompressMemoryRegionEXT where
+  sizeOf ~_ = 32
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero DecompressMemoryRegionEXT where
+  zero = DecompressMemoryRegionEXT
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkDecompressMemoryInfoEXT - Structure specifying decompression memory
+-- info
+--
+-- = Description
+--
+-- Each memory region specified in @pRegions@ is decompressed from the
+-- source to the destination address based on the decompression method
+-- specified in @decompressionMethod@. If any of the specified source and
+-- destination regions overlap in memory, then the results of decompression
+-- are undefined.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkDecompressMemoryInfoEXT-decompressionMethod-07690# The
+--     @decompressionMethod@ /must/ have a single bit set
+--
+-- -   #VUID-VkDecompressMemoryInfoEXT-decompressionMethod-11762# If
+--     @decompressionMethod@ is
+--     'MEMORY_DECOMPRESSION_METHOD_GDEFLATE_1_0_BIT_EXT', then for each
+--     element of @pRegions@, @decompressedSize@ /must/ be less than or
+--     equal to 65536 bytes
+--
+-- -   #VUID-VkDecompressMemoryInfoEXT-decompressionMethod-11763#
+--     @decompressionMethod@ /must/ be a valid bit specified in
+--     'PhysicalDeviceMemoryDecompressionPropertiesEXT'::@decompressionMethods@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkDecompressMemoryInfoEXT-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DECOMPRESS_MEMORY_INFO_EXT'
+--
+-- -   #VUID-VkDecompressMemoryInfoEXT-pNext-pNext# @pNext@ /must/ be
+--     @NULL@
+--
+-- -   #VUID-VkDecompressMemoryInfoEXT-decompressionMethod-parameter#
+--     @decompressionMethod@ /must/ be a valid combination of
+--     'MemoryDecompressionMethodFlagBitsEXT' values
+--
+-- -   #VUID-VkDecompressMemoryInfoEXT-decompressionMethod-requiredbitmask#
+--     @decompressionMethod@ /must/ not be @0@
+--
+-- -   #VUID-VkDecompressMemoryInfoEXT-pRegions-parameter# @pRegions@
+--     /must/ be a valid pointer to an array of @regionCount@
+--     'DecompressMemoryRegionEXT' structures
+--
+-- -   #VUID-VkDecompressMemoryInfoEXT-regionCount-arraylength#
+--     @regionCount@ /must/ be greater than @0@
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_memory_decompression VK_EXT_memory_decompression>,
+-- 'DecompressMemoryRegionEXT', 'MemoryDecompressionMethodFlagsEXT',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'cmdDecompressMemoryEXT'
+data DecompressMemoryInfoEXT = DecompressMemoryInfoEXT
+  { -- | @decompressionMethod@ is a bitmask of
+    -- 'MemoryDecompressionMethodFlagBitsEXT' with a single bit set specifying
+    -- the method used to decompress data.
+    decompressionMethod :: MemoryDecompressionMethodFlagsEXT
+  , -- | @pRegions@ is a pointer to an array of 'DecompressMemoryRegionEXT'
+    -- structures specifying the regions to decompress.
+    regions :: Vector DecompressMemoryRegionEXT
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (DecompressMemoryInfoEXT)
+#endif
+deriving instance Show DecompressMemoryInfoEXT
+
+instance ToCStruct DecompressMemoryInfoEXT where
+  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p DecompressMemoryInfoEXT{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DECOMPRESS_MEMORY_INFO_EXT)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr MemoryDecompressionMethodFlagsEXT)) (decompressionMethod)
+    lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (regions)) :: Word32))
+    pPRegions' <- ContT $ allocaBytes @DecompressMemoryRegionEXT ((Data.Vector.length (regions)) * 32)
+    lift $ Data.Vector.imapM_ (\i e -> poke (pPRegions' `plusPtr` (32 * (i)) :: Ptr DecompressMemoryRegionEXT) (e)) (regions)
+    lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr DecompressMemoryRegionEXT))) (pPRegions')
+    lift $ f
+  cStructSize = 40
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DECOMPRESS_MEMORY_INFO_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr MemoryDecompressionMethodFlagsEXT)) (zero)
+    f
+
+instance FromCStruct DecompressMemoryInfoEXT where
+  peekCStruct p = do
+    decompressionMethod <- peek @MemoryDecompressionMethodFlagsEXT ((p `plusPtr` 16 :: Ptr MemoryDecompressionMethodFlagsEXT))
+    regionCount <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))
+    pRegions <- peek @(Ptr DecompressMemoryRegionEXT) ((p `plusPtr` 32 :: Ptr (Ptr DecompressMemoryRegionEXT)))
+    pRegions' <- generateM (fromIntegral regionCount) (\i -> peekCStruct @DecompressMemoryRegionEXT ((pRegions `advancePtrBytes` (32 * (i)) :: Ptr DecompressMemoryRegionEXT)))
+    pure $ DecompressMemoryInfoEXT
+             decompressionMethod pRegions'
+
+instance Zero DecompressMemoryInfoEXT where
+  zero = DecompressMemoryInfoEXT
+           zero
+           mempty
+
+
+type MemoryDecompressionMethodFlagsEXT = MemoryDecompressionMethodFlagBitsEXT
+
+-- | VkMemoryDecompressionMethodFlagBitsEXT - List the supported memory
+-- decompression methods
+--
+-- = Description
+--
+-- -   'MEMORY_DECOMPRESSION_METHOD_GDEFLATE_1_0_BIT_EXT' specifies that
+--     the GDeflate 1.0 algorithm is used to decompress data.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_memory_decompression VK_EXT_memory_decompression>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_memory_decompression VK_NV_memory_decompression>,
+-- 'MemoryDecompressionMethodFlagsEXT'
+newtype MemoryDecompressionMethodFlagBitsEXT = MemoryDecompressionMethodFlagBitsEXT Flags64
+  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
+
+-- No documentation found for Nested "VkMemoryDecompressionMethodFlagBitsEXT" "VK_MEMORY_DECOMPRESSION_METHOD_GDEFLATE_1_0_BIT_EXT"
+pattern MEMORY_DECOMPRESSION_METHOD_GDEFLATE_1_0_BIT_EXT = MemoryDecompressionMethodFlagBitsEXT 0x0000000000000001
+
+conNameMemoryDecompressionMethodFlagBitsEXT :: String
+conNameMemoryDecompressionMethodFlagBitsEXT = "MemoryDecompressionMethodFlagBitsEXT"
+
+enumPrefixMemoryDecompressionMethodFlagBitsEXT :: String
+enumPrefixMemoryDecompressionMethodFlagBitsEXT = "MEMORY_DECOMPRESSION_METHOD_GDEFLATE_1_0_BIT_EXT"
+
+showTableMemoryDecompressionMethodFlagBitsEXT :: [(MemoryDecompressionMethodFlagBitsEXT, String)]
+showTableMemoryDecompressionMethodFlagBitsEXT =
+  [
+    ( MEMORY_DECOMPRESSION_METHOD_GDEFLATE_1_0_BIT_EXT
+    , ""
+    )
+  ]
+
+instance Show MemoryDecompressionMethodFlagBitsEXT where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixMemoryDecompressionMethodFlagBitsEXT
+      showTableMemoryDecompressionMethodFlagBitsEXT
+      conNameMemoryDecompressionMethodFlagBitsEXT
+      (\(MemoryDecompressionMethodFlagBitsEXT x) -> x)
+      (\x -> showString "0x" . showHex x)
+
+instance Read MemoryDecompressionMethodFlagBitsEXT where
+  readPrec =
+    enumReadPrec
+      enumPrefixMemoryDecompressionMethodFlagBitsEXT
+      showTableMemoryDecompressionMethodFlagBitsEXT
+      conNameMemoryDecompressionMethodFlagBitsEXT
+      MemoryDecompressionMethodFlagBitsEXT
+
+type EXT_MEMORY_DECOMPRESSION_SPEC_VERSION = 1
+
+-- No documentation found for TopLevel "VK_EXT_MEMORY_DECOMPRESSION_SPEC_VERSION"
+pattern EXT_MEMORY_DECOMPRESSION_SPEC_VERSION :: forall a . Integral a => a
+pattern EXT_MEMORY_DECOMPRESSION_SPEC_VERSION = 1
+
+
+type EXT_MEMORY_DECOMPRESSION_EXTENSION_NAME = "VK_EXT_memory_decompression"
+
+-- No documentation found for TopLevel "VK_EXT_MEMORY_DECOMPRESSION_EXTENSION_NAME"
+pattern EXT_MEMORY_DECOMPRESSION_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern EXT_MEMORY_DECOMPRESSION_EXTENSION_NAME = "VK_EXT_memory_decompression"
+
diff --git a/src/Vulkan/Extensions/VK_EXT_memory_decompression.hs-boot b/src/Vulkan/Extensions/VK_EXT_memory_decompression.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_EXT_memory_decompression.hs-boot
@@ -0,0 +1,201 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_EXT_memory_decompression - device extension
+--
+-- = VK_EXT_memory_decompression
+--
+-- [__Name String__]
+--     @VK_EXT_memory_decompression@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     551
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_buffer_device_address VK_KHR_buffer_device_address>
+--
+-- [__Contact__]
+--
+--     -   Vikram Kushwaha
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_memory_decompression] @vkushwaha-nv%0A*Here describe the issue or question you have about the VK_EXT_memory_decompression extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_EXT_memory_decompression.adoc VK_EXT_memory_decompression>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2025-01-23
+--
+-- [__Contributors__]
+--
+--     -   Vikram Kushwaha, NVIDIA
+--
+--     -   Daniel Koch, NVIDIA
+--
+--     -   Jeff Bolz, NVIDIA
+--
+--     -   Christoph Kubisch, NVIDIA
+--
+--     -   Piers Daniell, NVIDIA
+--
+--     -   Spencer Fricke, LunarG
+--
+-- == Description
+--
+-- This extension adds support for performing memory to memory
+-- decompression.
+--
+-- == New Commands
+--
+-- -   'cmdDecompressMemoryEXT'
+--
+-- -   'cmdDecompressMemoryIndirectCountEXT'
+--
+-- == New Structures
+--
+-- -   'DecompressMemoryInfoEXT'
+--
+-- -   'DecompressMemoryRegionEXT'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceMemoryDecompressionFeaturesEXT'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDeviceMemoryDecompressionPropertiesEXT'
+--
+-- == New Enums
+--
+-- -   'MemoryDecompressionMethodFlagBitsEXT'
+--
+-- == New Bitmasks
+--
+-- -   'MemoryDecompressionMethodFlagsEXT'
+--
+-- == New Enum Constants
+--
+-- -   'EXT_MEMORY_DECOMPRESSION_EXTENSION_NAME'
+--
+-- -   'EXT_MEMORY_DECOMPRESSION_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core13.Enums.AccessFlags2.AccessFlagBits2':
+--
+--     -   'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_MEMORY_DECOMPRESSION_READ_BIT_EXT'
+--
+--     -   'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_MEMORY_DECOMPRESSION_WRITE_BIT_EXT'
+--
+-- -   Extending
+--     'Vulkan.Core14.Enums.BufferUsageFlags2.BufferUsageFlagBits2':
+--
+--     -   'Vulkan.Core14.Enums.BufferUsageFlags2.BUFFER_USAGE_2_MEMORY_DECOMPRESSION_BIT_EXT'
+--
+-- -   Extending
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlagBits2':
+--
+--     -   'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MEMORY_DECOMPRESSION_BIT_EXT'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DECOMPRESS_MEMORY_INFO_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_EXT'
+--
+-- == Issues
+--
+-- 1) How does an app know the minimum size that @decompressedSize@ should
+-- be set to?
+--
+-- __RESOLVED__: When decompressing, data is typically processed in chunks.
+-- For example, with GDeflate 1.0, data is streamed in 64 KB blocks, but
+-- the final block may be smaller. The exact size of this last block
+-- depends on the compression method and original data size and so it must
+-- be stored in the compressed bitstream so that the decompressor can set
+-- @decompressedSize@ correctly. It is still ok for the last block to take
+-- up all 64 KB, but setting it too low will cause issues and is undefined
+-- behavior. It is a known limitation that the validation layers will not
+-- be able to detect the minimum size of @decompressedSize@ unless it
+-- decides to implement each decompression method specification.
+--
+-- == Version History
+--
+-- -   Revision 1, 2025-01-23 (Daniel Koch)
+--
+--     -   Initial draft
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_memory_decompression Vulkan Specification>.
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_EXT_memory_decompression  ( DecompressMemoryInfoEXT
+                                                      , DecompressMemoryRegionEXT
+                                                      , PhysicalDeviceMemoryDecompressionFeaturesEXT
+                                                      , PhysicalDeviceMemoryDecompressionPropertiesEXT
+                                                      , MemoryDecompressionMethodFlagsEXT
+                                                      , MemoryDecompressionMethodFlagBitsEXT
+                                                      ) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data DecompressMemoryInfoEXT
+
+instance ToCStruct DecompressMemoryInfoEXT
+instance Show DecompressMemoryInfoEXT
+
+instance FromCStruct DecompressMemoryInfoEXT
+
+
+data DecompressMemoryRegionEXT
+
+instance ToCStruct DecompressMemoryRegionEXT
+instance Show DecompressMemoryRegionEXT
+
+instance FromCStruct DecompressMemoryRegionEXT
+
+
+data PhysicalDeviceMemoryDecompressionFeaturesEXT
+
+instance ToCStruct PhysicalDeviceMemoryDecompressionFeaturesEXT
+instance Show PhysicalDeviceMemoryDecompressionFeaturesEXT
+
+instance FromCStruct PhysicalDeviceMemoryDecompressionFeaturesEXT
+
+
+data PhysicalDeviceMemoryDecompressionPropertiesEXT
+
+instance ToCStruct PhysicalDeviceMemoryDecompressionPropertiesEXT
+instance Show PhysicalDeviceMemoryDecompressionPropertiesEXT
+
+instance FromCStruct PhysicalDeviceMemoryDecompressionPropertiesEXT
+
+
+type MemoryDecompressionMethodFlagsEXT = MemoryDecompressionMethodFlagBitsEXT
+
+data MemoryDecompressionMethodFlagBitsEXT
+
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
@@ -88,7 +88,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_memory_priority Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -142,12 +142,22 @@
 -- structure passed to
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
 -- it is filled in to indicate whether each corresponding feature is
--- supported. 'PhysicalDeviceMemoryPriorityFeaturesEXT' /can/ also be used
--- in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceMemoryPriorityFeaturesEXT', it /must/ add an instance of
+-- the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_memory_priority VK_EXT_memory_priority>,
@@ -206,7 +216,11 @@
 -- If this structure is not included, it is as if the @priority@ value were
 -- @0.5@.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.Memory.MemoryAllocateInfo'
 --
 -- = See Also
 --
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
@@ -88,7 +88,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_memory_priority Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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_mesh_shader.hs b/src/Vulkan/Extensions/VK_EXT_mesh_shader.hs
--- a/src/Vulkan/Extensions/VK_EXT_mesh_shader.hs
+++ b/src/Vulkan/Extensions/VK_EXT_mesh_shader.hs
@@ -18,11549 +18,13514 @@
 --     1
 --
 -- [__Ratification Status__]
---     Not ratified
---
--- [__Extension and Version Dependencies__]
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_spirv_1_4 VK_KHR_spirv_1_4>
---
--- [__API Interactions__]
---
---     -   Interacts with VK_EXT_device_generated_commands
---
---     -   Interacts with VK_KHR_fragment_shading_rate
---
---     -   Interacts with VK_NV_device_generated_commands
---
---     -   Interacts with
---         VkPhysicalDeviceMeshShaderFeaturesEXT::primitiveFragmentShadingRateMeshShader
---
--- [__SPIR-V Dependencies__]
---
---     -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/EXT/SPV_EXT_mesh_shader.html SPV_EXT_mesh_shader>
---
--- [__Contact__]
---
---     -   Christoph Kubisch
---         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_mesh_shader] @pixeljetstream%0A*Here describe the issue or question you have about the VK_EXT_mesh_shader extension* >
---
--- [__Extension Proposal__]
---     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_EXT_mesh_shader.adoc VK_EXT_mesh_shader>
---
--- == Other Extension Metadata
---
--- [__Last Modified Date__]
---     2022-01-20
---
--- [__Interactions and External Dependencies__]
---
---     -   This extension provides API support for
---         <https://github.com/KhronosGroup/GLSL/blob/main/extensions/ext/GLSL_EXT_mesh_shader.txt GLSL_EXT_mesh_shader>
---
---     -   Interacts with Vulkan 1.1
---
---     -   Interacts with @VK_KHR_multiview@
---
---     -   Interacts with @VK_KHR_fragment_shading_rate@
---
--- [__Contributors__]
---
---     -   Christoph Kubisch, NVIDIA
---
---     -   Pat Brown, NVIDIA
---
---     -   Jeff Bolz, NVIDIA
---
---     -   Daniel Koch, NVIDIA
---
---     -   Piers Daniell, NVIDIA
---
---     -   Pierre Boudier, NVIDIA
---
---     -   Patrick Mours, NVIDIA
---
---     -   David Zhao Akeley, NVIDIA
---
---     -   Kedarnath Thangudu, NVIDIA
---
---     -   Timur Kristóf, Valve
---
---     -   Hans-Kristian Arntzen, Valve
---
---     -   Philip Rebohle, Valve
---
---     -   Mike Blumenkrantz, Valve
---
---     -   Slawomir Grajewski, Intel
---
---     -   Michal Pietrasiuk, Intel
---
---     -   Mariusz Merecki, Intel
---
---     -   Tom Olson, ARM
---
---     -   Jan-Harald Fredriksen, ARM
---
---     -   Sandeep Kakarlapudi, ARM
---
---     -   Ruihao Zhang, QUALCOMM
---
---     -   Ricardo Garcia, Igalia, S.L.
---
---     -   Tobias Hector, AMD
---
---     -   Stu Smith, AMD
---
--- == Description
---
--- This extension provides a new mechanism allowing applications to
--- generate collections of geometric primitives via programmable mesh
--- shading. It is an alternative to the existing programmable primitive
--- shading pipeline, which relied on generating input primitives by a fixed
--- function assembler as well as fixed function vertex fetch.
---
--- This extension also adds support for the following SPIR-V extension in
--- Vulkan:
---
--- -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/EXT/SPV_EXT_mesh_shader.html SPV_EXT_mesh_shader>
---
--- == New Commands
---
--- -   'cmdDrawMeshTasksEXT'
---
--- -   'cmdDrawMeshTasksIndirectCountEXT'
---
--- -   'cmdDrawMeshTasksIndirectEXT'
---
--- == New Structures
---
--- -   'DrawMeshTasksIndirectCommandEXT'
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
---     'Vulkan.Core10.Device.DeviceCreateInfo':
---
---     -   'PhysicalDeviceMeshShaderFeaturesEXT'
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
---
---     -   'PhysicalDeviceMeshShaderPropertiesEXT'
---
--- == New Enum Constants
---
--- -   'EXT_MESH_SHADER_EXTENSION_NAME'
---
--- -   'EXT_MESH_SHADER_SPEC_VERSION'
---
--- -   Extending
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits':
---
---     -   'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_EXT'
---
---     -   'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_EXT'
---
--- -   Extending
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QueryPipelineStatisticFlagBits':
---
---     -   'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_MESH_SHADER_INVOCATIONS_BIT_EXT'
---
---     -   'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_TASK_SHADER_INVOCATIONS_BIT_EXT'
---
--- -   Extending 'Vulkan.Core10.Enums.QueryType.QueryType':
---
---     -   'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_MESH_PRIMITIVES_GENERATED_EXT'
---
--- -   Extending
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits':
---
---     -   'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---
---     -   'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---
--- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_EXT'
---
--- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_generated_commands VK_EXT_device_generated_commands>
--- is supported:
---
--- -   Extending
---     'Vulkan.Extensions.VK_EXT_device_generated_commands.IndirectCommandsTokenTypeEXT':
---
---     -   'Vulkan.Extensions.VK_EXT_device_generated_commands.INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_EXT'
---
---     -   'Vulkan.Extensions.VK_EXT_device_generated_commands.INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_EXT'
---
--- 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.Extensions.VK_NV_device_generated_commands.IndirectCommandsTokenTypeNV':
---
---     -   'Vulkan.Extensions.VK_NV_device_generated_commands.INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV'
---
--- == New or Modified Built-In Variables
---
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-cullprimitive CullPrimitiveEXT>
---
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-primitivepointindices PrimitivePointIndicesEXT>
---
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-primitivelineindices PrimitiveLineIndicesEXT>
---
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-primitivetriangleindices PrimitiveTriangleIndicesEXT>
---
--- -   (modified)@Position@
---
--- -   (modified)@PointSize@
---
--- -   (modified)@ClipDistance@
---
--- -   (modified)@CullDistance@
---
--- -   (modified)@PrimitiveId@
---
--- -   (modified)@Layer@
---
--- -   (modified)@ViewportIndex@
---
--- -   (modified)@NumWorkgroups@
---
--- -   (modified)@WorkgroupSize@
---
--- -   (modified)@WorkgroupId@
---
--- -   (modified)@LocalInvocationId@
---
--- -   (modified)@GlobalInvocationId@
---
--- -   (modified)@LocalInvocationIndex@
---
--- -   (modified)@NumSubgroups@
---
--- -   (modified)@SubgroupId@
---
--- -   (modified)@DrawIndex@
---
--- -   (modified)@PrimitiveShadingRateKHR@
---
--- -   (modified)@ViewIndex@
---
--- == New SPIR-V Capability
---
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-MeshShadingEXT MeshShadingEXT>
---
--- == Version History
---
--- -   Revision 1, 2022-03-08 (Christoph Kubisch, Daniel Koch, Patrick
---     Mours)
---
---     -   Initial revision
---
--- == See Also
---
--- No cross-references are available
---
--- == Document Notes
---
--- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_mesh_shader 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_mesh_shader  ( cmdDrawMeshTasksEXT
-                                             , cmdDrawMeshTasksIndirectEXT
-                                             , cmdDrawMeshTasksIndirectCountEXT
-                                             , PhysicalDeviceMeshShaderFeaturesEXT(..)
-                                             , PhysicalDeviceMeshShaderPropertiesEXT(..)
-                                             , DrawMeshTasksIndirectCommandEXT(..)
-                                             , EXT_MESH_SHADER_SPEC_VERSION
-                                             , pattern EXT_MESH_SHADER_SPEC_VERSION
-                                             , EXT_MESH_SHADER_EXTENSION_NAME
-                                             , pattern EXT_MESH_SHADER_EXTENSION_NAME
-                                             , IndirectCommandsTokenTypeNV(..)
-                                             , IndirectCommandsTokenTypeEXT(..)
-                                             ) where
-
-import Vulkan.CStruct.Utils (FixedArray)
-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 Vulkan.CStruct (FromCStruct)
-import Vulkan.CStruct (FromCStruct(..))
-import Vulkan.CStruct (ToCStruct)
-import Vulkan.CStruct (ToCStruct(..))
-import Vulkan.Zero (Zero(..))
-import Control.Monad.IO.Class (MonadIO)
-import Data.String (IsString)
-import Data.Typeable (Typeable)
-import Foreign.Storable (Storable)
-import Foreign.Storable (Storable(peek))
-import Foreign.Storable (Storable(poke))
-import qualified Foreign.Storable (Storable(..))
-import GHC.Generics (Generic)
-import GHC.IO.Exception (IOErrorType(..))
-import GHC.IO.Exception (IOException(..))
-import Foreign.Ptr (FunPtr)
-import Foreign.Ptr (Ptr)
-import Data.Word (Word32)
-import Data.Kind (Type)
-import Vulkan.CStruct.Utils (advancePtrBytes)
-import Vulkan.Core10.FundamentalTypes (bool32ToBool)
-import Vulkan.Core10.FundamentalTypes (boolToBool32)
-import Vulkan.CStruct.Utils (lowerArrayPtr)
-import Vulkan.NamedType ((:::))
-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.Dynamic (DeviceCmds(pVkCmdDrawMeshTasksEXT))
-import Vulkan.Dynamic (DeviceCmds(pVkCmdDrawMeshTasksIndirectCountEXT))
-import Vulkan.Dynamic (DeviceCmds(pVkCmdDrawMeshTasksIndirectEXT))
-import Vulkan.Core10.FundamentalTypes (DeviceSize)
-import Vulkan.Core10.Enums.StructureType (StructureType)
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_EXT))
-import Vulkan.Extensions.VK_EXT_device_generated_commands (IndirectCommandsTokenTypeEXT(..))
-import Vulkan.Extensions.VK_NV_device_generated_commands (IndirectCommandsTokenTypeNV(..))
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdDrawMeshTasksEXT
-  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Word32 -> Word32 -> IO ()
-
--- | vkCmdDrawMeshTasksEXT - Draw mesh task work items
---
--- = Description
---
--- When the command is executed, a global workgroup consisting of
--- @groupCountX@ × @groupCountY@ × @groupCountZ@ local workgroups is
--- assembled.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-magFilter-04553# If a
---     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
---     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR',
---     @reductionMode@ equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
---     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-vkCmdDrawMeshTasksEXT-magFilter-09598# If a
---     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
---     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR' and
---     @reductionMode@ equal to either
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
---     or
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
---     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_MINMAX_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-mipmapMode-04770# If a
---     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
---     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR',
---     @reductionMode@ equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
---     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-vkCmdDrawMeshTasksEXT-mipmapMode-09599# If a
---     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
---     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'
---     and @reductionMode@ equal to either
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
---     or
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
---     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_MINMAX_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-unnormalizedCoordinates-09635# If a
---     'Vulkan.Core10.Handles.Sampler' created with
---     @unnormalizedCoordinates@ equal to
---     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
---     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
---     the image view’s @levelCount@ and @layerCount@ /must/ be 1
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-unnormalizedCoordinates-09636# If a
---     'Vulkan.Core10.Handles.Sampler' created with
---     @unnormalizedCoordinates@ equal to
---     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
---     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
---     the image view’s @viewType@ /must/ be
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D' or
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D'
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-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-vkCmdDrawMeshTasksEXT-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-vkCmdDrawMeshTasksEXT-None-07888# If a
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'
---     descriptor is accessed using atomic operations as a result of this
---     command, then the storage texel buffer’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-buffer-view-format-features format features>
---     /must/ contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-02692# If a
---     'Vulkan.Core10.Handles.ImageView' is sampled with
---     'Vulkan.Core10.Enums.Filter.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.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-02693# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_filter_cubic VK_EXT_filter_cubic>
---     extension is not enabled and any 'Vulkan.Core10.Handles.ImageView'
---     is sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as a
---     result of this command, it /must/ not have a
---     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' of
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE', or
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY'
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-filterCubic-02694# Any
---     'Vulkan.Core10.Handles.ImageView' being sampled with
---     'Vulkan.Core10.Enums.Filter.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-vkCmdDrawMeshTasksEXT-filterCubicMinmax-02695# Any
---     'Vulkan.Core10.Handles.ImageView' being sampled with
---     'Vulkan.Core10.Enums.Filter.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-vkCmdDrawMeshTasksEXT-cubicRangeClamp-09212# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-cubicRangeClamp cubicRangeClamp>
---     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
---     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
---     a result of this command /must/ not have a
---     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
---     equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-reductionMode-09213# Any
---     'Vulkan.Core10.Handles.ImageView' being sampled with a
---     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
---     equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
---     as a result of this command /must/ sample with
---     'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT'
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-selectableCubicWeights-09214# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-selectableCubicWeights selectableCubicWeights>
---     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
---     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
---     a result of this command /must/ have
---     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.SamplerCubicWeightsCreateInfoQCOM'::@cubicWeights@
---     equal to
---     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM'
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-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-vkCmdDrawMeshTasksEXT-OpTypeImage-07027# For any
---     'Vulkan.Core10.Handles.ImageView' being written as a storage image
---     where the image format field of the @OpTypeImage@ is @Unknown@, the
---     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_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-OpTypeImage-07028# For any
---     'Vulkan.Core10.Handles.ImageView' being read as a storage image
---     where the image format field of the @OpTypeImage@ is @Unknown@, the
---     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_STORAGE_READ_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-OpTypeImage-07029# For any
---     'Vulkan.Core10.Handles.BufferView' being written as a storage texel
---     buffer where the image format field of the @OpTypeImage@ is
---     @Unknown@, the view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
---     /must/ contain
---     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-OpTypeImage-07030# Any
---     'Vulkan.Core10.Handles.BufferView' being read as a storage texel
---     buffer where the image format field of the @OpTypeImage@ is
---     @Unknown@ then the view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
---     /must/ contain
---     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-08600# For each set /n/ that is
---     statically used by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     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' or the
---     'Vulkan.Core10.Handles.DescriptorSetLayout' array used to create the
---     current 'Vulkan.Extensions.Handles.ShaderEXT' , as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-08601# For each push constant that
---     is statically used by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     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' or the
---     'Vulkan.Core10.Handles.DescriptorSetLayout' array used to create the
---     current 'Vulkan.Extensions.Handles.ShaderEXT' , as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-10068# For each array of resources
---     that is used by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     the indices used to access members of the array /must/ be less than
---     the descriptor count for the identified binding in the descriptor
---     sets used by this command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-maintenance4-08602# 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
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     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' or the
---     'Vulkan.Core10.Handles.DescriptorSetLayout' and
---     'Vulkan.Core10.PipelineLayout.PushConstantRange' arrays used to
---     create the current 'Vulkan.Extensions.Handles.ShaderEXT' , as
---     described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-08114# Descriptors in each bound
---     descriptor set, specified via
---     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
---     be valid as described by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
---     if they are statically used by the 'Vulkan.Core10.Handles.Pipeline'
---     bound to the pipeline bind point used by this command and the bound
---     'Vulkan.Core10.Handles.Pipeline' was not created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-08115# If the descriptors used by
---     the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
---     point were specified via
---     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', the
---     bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
---     without
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-08116# Descriptors in bound
---     descriptor buffers, specified via
---     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
---     /must/ be valid if they are dynamically used by the
---     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
---     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
---     was created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-08604# Descriptors in bound
---     descriptor buffers, specified via
---     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
---     /must/ be valid if they are dynamically used by any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     to the pipeline bind point used by this command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-08117# If the descriptors used by
---     the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
---     point were specified via
---     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
---     the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
---     with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-08119# If a descriptor is
---     dynamically used with a 'Vulkan.Core10.Handles.Pipeline' created
---     with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
---     the descriptor memory /must/ be resident
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-08605# If a descriptor is
---     dynamically used with a 'Vulkan.Extensions.Handles.ShaderEXT'
---     created with a 'Vulkan.Core10.Handles.DescriptorSetLayout' that was
---     created with
---     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
---     the descriptor memory /must/ be resident
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-08606# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject>
---     feature is not enabled, a valid pipeline /must/ be bound to the
---     pipeline bind point used by this command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-08608# If a pipeline is bound to
---     the pipeline bind point used by this command, there /must/ not have
---     been any calls to dynamic state setting commands for any state
---     specified statically in the 'Vulkan.Core10.Handles.Pipeline' object
---     bound to the pipeline bind point used by this command, since that
---     pipeline was bound
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-08609# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command or any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDrawMeshTasksEXT-None-08610# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command or any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDrawMeshTasksEXT-None-08611# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command or any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDrawMeshTasksEXT-None-08607# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject>
---     feature is enabled, either a valid pipeline /must/ be bound to the
---     pipeline bind point used by this command, or a valid combination of
---     valid and 'Vulkan.Core10.APIConstants.NULL_HANDLE' shader objects
---     /must/ be bound to every supported shader stage corresponding to the
---     pipeline bind point used by this command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-uniformBuffers-06935# If any stage of
---     the 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline
---     bind point used by this command accesses a uniform buffer, and that
---     stage was created without enabling either
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT'
---     or
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT'
---     for @uniformBuffers@, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, that stage /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-vkCmdDrawMeshTasksEXT-None-08612# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, and any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDrawMeshTasksEXT-storageBuffers-06936# If any stage of
---     the 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline
---     bind point used by this command accesses a storage buffer, and that
---     stage was created without enabling either
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT'
---     or
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT'
---     for @storageBuffers@, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, that stage /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-vkCmdDrawMeshTasksEXT-None-08613# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, and any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDrawMeshTasksEXT-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
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shaders>
---     /must/ not be a protected resource
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-06550# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
---     accesses a 'Vulkan.Core10.Handles.Sampler' or
---     'Vulkan.Core10.Handles.ImageView' object that enables
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,
---     that object /must/ only be used with @OpImageSample*@ or
---     @OpImageSparseSample*@ instructions
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-ConstOffset-06551# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
---     accesses a 'Vulkan.Core10.Handles.Sampler' or
---     'Vulkan.Core10.Handles.ImageView' object that enables
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,
---     that object /must/ not use the @ConstOffset@ and @Offset@ operands
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-viewType-07752# If a
---     'Vulkan.Core10.Handles.ImageView' is accessed as a result of this
---     command, then the image view’s @viewType@ /must/ match the @Dim@
---     operand of the @OpTypeImage@ as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-image-dimensions ???>
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-format-07753# If a
---     'Vulkan.Core10.Handles.ImageView' is accessed as a result of this
---     command, then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-numericformat numeric type>
---     of the image view’s @format@ and the @Sampled@ @Type@ operand of the
---     @OpTypeImage@ /must/ match
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-OpImageWrite-08795# If a
---     'Vulkan.Core10.Handles.ImageView' created with a format other than
---     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM_KHR' 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-vkCmdDrawMeshTasksEXT-OpImageWrite-08796# If a
---     'Vulkan.Core10.Handles.ImageView' created with the format
---     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM_KHR' is accessed using
---     @OpImageWrite@ as a result of this command, then the @Type@ of the
---     @Texel@ operand of that instruction /must/ have four components
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-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-vkCmdDrawMeshTasksEXT-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-vkCmdDrawMeshTasksEXT-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-vkCmdDrawMeshTasksEXT-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-vkCmdDrawMeshTasksEXT-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-vkCmdDrawMeshTasksEXT-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-vkCmdDrawMeshTasksEXT-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-vkCmdDrawMeshTasksEXT-OpImageWeightedSampleQCOM-06971# If
---     @OpImageWeightedSampleQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-OpImageWeightedSampleQCOM-06972# If
---     @OpImageWeightedSampleQCOM@ uses a 'Vulkan.Core10.Handles.ImageView'
---     as a sample weight image 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-OpImageBoxFilterQCOM-06973# If
---     @OpImageBoxFilterQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-OpImageBlockMatchSSDQCOM-06974# If
---     @OpImageBlockMatchSSDQCOM@ is used to read from an
---     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-OpImageBlockMatchSADQCOM-06975# If
---     @OpImageBlockMatchSADQCOM@ is used to read from an
---     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-OpImageBlockMatchSADQCOM-06976# If
---     @OpImageBlockMatchSADQCOM@ or OpImageBlockMatchSSDQCOM is used to
---     read from a reference image as result of this command, then the
---     specified reference coordinates /must/ not fail
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-OpImageWeightedSampleQCOM-06977# If
---     @OpImageWeightedSampleQCOM@, @OpImageBoxFilterQCOM@,
---     @OpImageBlockMatchWindowSSDQCOM@, @OpImageBlockMatchWindowSADQCOM@,
---     @OpImageBlockMatchGatherSSDQCOM@, @OpImageBlockMatchGatherSADQCOM@,
---     @OpImageBlockMatchSSDQCOM@, or @OpImageBlockMatchSADQCOM@ uses a
---     'Vulkan.Core10.Handles.Sampler' as a result of this command, then
---     the sampler /must/ have been created with
---     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-OpImageWeightedSampleQCOM-06978# If any
---     command other than @OpImageWeightedSampleQCOM@,
---     @OpImageBoxFilterQCOM@, @OpImageBlockMatchWindowSSDQCOM@,
---     @OpImageBlockMatchWindowSADQCOM@, @OpImageBlockMatchGatherSSDQCOM@,
---     @OpImageBlockMatchGatherSADQCOM@, @OpImageBlockMatchSSDQCOM@, or
---     @OpImageBlockMatchSADQCOM@ uses a 'Vulkan.Core10.Handles.Sampler' as
---     a result of this command, then the sampler /must/ not have been
---     created with
---     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-OpImageBlockMatchWindow-09215# If a
---     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
---     instruction is used to read from an
---     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-OpImageBlockMatchWindow-09216# If a
---     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
---     instruction is used to read from an
---     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
---     the image view’s format /must/ be a single-component format
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-OpImageBlockMatchWindow-09217# If a
---     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
---     read from a reference image as result of this command, then the
---     specified reference coordinates /must/ not fail
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-07288# Any shader invocation
---     executed by this command /must/
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-termination terminate>
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-09600# If a descriptor with type
---     equal to any of
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM',
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM',
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',
---     or
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'
---     is accessed as a result of this command, the image subresource
---     identified by that descriptor /must/ be in the image layout
---     identified when the descriptor was written
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-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-vkCmdDrawMeshTasksEXT-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-vkCmdDrawMeshTasksEXT-None-07748# If any shader statically
---     accesses an input attachment, a valid descriptor /must/ be bound to
---     the pipeline via a descriptor set
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-OpTypeImage-07468# If any shader
---     executed by this pipeline accesses an @OpTypeImage@ variable with a
---     @Dim@ operand of @SubpassData@, it /must/ be decorated with an
---     @InputAttachmentIndex@ that corresponds to a valid input attachment
---     in the current subpass
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-07469# Input attachment views
---     accessed in a subpass /must/ be created with the same
---     'Vulkan.Core10.Enums.Format.Format' as the corresponding subpass
---     definition, and be created with a 'Vulkan.Core10.Handles.ImageView'
---     that is compatible with the attachment referenced by the subpass\'
---     @pInputAttachments@[@InputAttachmentIndex@] in the bound
---     'Vulkan.Core10.Handles.Framebuffer' as specified by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#compatibility-inputattachment Fragment Input Attachment Compatibility>
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-pDepthInputAttachmentIndex-09595# Input
---     attachment views accessed in a dynamic render pass with a
---     @InputAttachmentIndex@ referenced by
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR',
---     or no @InputAttachmentIndex@ if
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR':@pDepthInputAttachmentIndex@
---     or
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR':@pStencilInputAttachmentIndex@
---     are @NULL@, /must/ be created with a
---     'Vulkan.Core10.Handles.ImageView' that is compatible with the
---     corresponding color, depth, or stencil attachment in
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-pDepthInputAttachmentIndex-09596# Input
---     attachment views accessed in a dynamic render pass via a shader
---     object /must/ have an @InputAttachmentIndex@ if both
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR':@pDepthInputAttachmentIndex@
---     and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR':@pStencilInputAttachmentIndex@
---     are non-@NULL@
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-InputAttachmentIndex-09597# If an input
---     attachment view accessed in a dynamic render pass via a shader
---     object has an @InputAttachmentIndex@, the @InputAttachmentIndex@
---     /must/ match an index in
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR'
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-06537# Memory backing image
---     subresources used as attachments in the current render pass /must/
---     not be written in any way other than as an attachment by this
---     command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-09000# If a color attachment is
---     written by any prior command in this subpass or by the load, store,
---     or resolve operations for this subpass, it is not in the
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
---     image layout, and either:
---
---     -   the
---         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT'
---         is set on the bound pipeline or
---
---     -   the last call to
---         'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
---         included
---         'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'
---         and
---
---         -   there is no bound graphics pipeline or
---
---         -   the bound graphics pipeline was created with
---             'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
---
---     it /must/ not be accessed in any way other than as an attachment by
---     this command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-09001# If a depth attachment is
---     written by any prior command in this subpass or by the load, store,
---     or resolve operations for this subpass, it is not in the
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
---     image layout, and either:
---
---     -   the
---         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT'
---         is set on the bound pipeline or
---
---     -   the last call to
---         'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
---         included
---         'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT'
---         and
---
---         -   there is no bound graphics pipeline or
---
---         -   the bound graphics pipeline was created with
---             'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
---
---     it /must/ not be accessed in any way other than as an attachment by
---     this command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-09002# If a stencil attachment is
---     written by any prior command in this subpass or by the load, store,
---     or resolve operations for this subpass, it is not in the
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
---     image layout, and either:
---
---     -   the
---         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT'
---         is set on the bound pipeline or
---
---     -   the last call to
---         'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
---         included
---         'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
---         and
---
---         -   there is no bound graphics pipeline or
---
---         -   the bound graphics pipeline was created with
---             'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
---
---     it /must/ not be accessed in any way other than as an attachment by
---     this command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-09003# If an attachment is written
---     by any prior command in this subpass or by the load, store, or
---     resolve operations for this subpass, it /must/ not be accessed in
---     any way other than as an attachment, storage image, or sampled image
---     by this command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-06539# If any previously recorded
---     command in the current subpass accessed an image subresource used as
---     an attachment in this subpass in any way other than as an
---     attachment, this command /must/ not write to that image subresource
---     as an attachment
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-06886# If the current render pass
---     instance uses a depth\/stencil attachment with a read-only layout
---     for the depth aspect,
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-depth-write depth writes>
---     /must/ be disabled
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-06887# If the current render pass
---     instance uses a depth\/stencil attachment with a read-only layout
---     for the stencil aspect, both front and back @writeMask@ are not
---     zero, and stencil test is enabled,
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-stencil all stencil ops>
---     /must/ be 'Vulkan.Core10.Enums.StencilOp.STENCIL_OP_KEEP'
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-07831# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT' dynamic
---     state enabled then
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetViewport' /must/ have
---     been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-07832# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR' dynamic
---     state enabled then
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetScissor' /must/ have been
---     called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-07833# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_WIDTH' dynamic
---     state enabled then
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth' /must/ have
---     been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-08617# If a shader object is bound
---     to any graphics stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
---     in the current command buffer set @polygonMode@ to
---     'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_LINE',
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth' /must/ have
---     been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-08618# If a shader object is bound
---     to any graphics stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
---     in the current command buffer set @primitiveTopology@ to any line
---     topology, 'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-08619# If a shader object that
---     outputs line primitives is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE',
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth' /must/ have
---     been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-07834# If a shader object is bound
---     to any graphics stage or a graphics pipeline is bound which was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS' dynamic
---     state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @depthBiasEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBounds' or
---     'Vulkan.Extensions.VK_EXT_depth_bias_control.cmdSetDepthBias2EXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-07835# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_BLEND_CONSTANTS'
---     dynamic state enabled then
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetBlendConstants' /must/
---     have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-08621# If a shader object is bound
---     to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     in the current command buffer set any element of
---     @pColorBlendEnables@ to 'Vulkan.Core10.FundamentalTypes.TRUE', and
---     the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     in the current command buffer set the same element of
---     @pColorBlendEquations@ to a
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.ColorBlendEquationEXT'
---     structure with any 'Vulkan.Core10.Enums.BlendFactor.BlendFactor'
---     member with a value of
---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_COLOR',
---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR',
---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_ALPHA', or
---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA',
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetBlendConstants' /must/
---     have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-07836# If a shader object is bound
---     to any graphics stage or a graphics pipeline is bound which was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @depthBoundsTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBounds' /must/
---     have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-07837# If a shader object is bound
---     to any graphics stage or a graphics pipeline is bound which was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_COMPARE_MASK'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilCompareMask'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-07838# If a shader object is bound
---     to any graphics stage or a graphics pipeline is bound which was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_WRITE_MASK'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilWriteMask'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-07839# If a shader object is bound
---     to any graphics stage or a graphics pipeline is bound which was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_REFERENCE'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of and @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilReference'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-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-vkCmdDrawMeshTasksEXT-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-vkCmdDrawMeshTasksEXT-None-07634# If the
---     @VK_EXT_sample_locations@ extension is enabled, a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-06666# If the
---     @VK_EXT_sample_locations@ extension is enabled, a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then
---     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-07840# If a shader object is bound
---     to any graphics stage or a graphics pipeline is bound which was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CULL_MODE' dynamic
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetCullMode'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-07841# If a shader object is bound
---     to any graphics stage or a graphics pipeline is bound which was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRONT_FACE' dynamic
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetFrontFace'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-07843# If a shader object is bound
---     to any graphics stage or a graphics pipeline is bound which was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_TEST_ENABLE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE',
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthTestEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-07844# If a shader object is bound
---     to any graphics stage or a graphics pipeline is bound which was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthWriteEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-07845# If a shader object is bound
---     to any graphics stage or a graphics pipeline is bound which was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_COMPARE_OP'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @depthTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthCompareOp'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-07846# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthBounds depthBounds>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthBoundsTestEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-07847# If a shader object is bound
---     to any graphics stage or a graphics pipeline is bound which was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_TEST_ENABLE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilTestEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-07848# If a shader object is bound
---     to any graphics stage or a graphics pipeline is bound which was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_OP' dynamic
---     state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilOp'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-viewportCount-03417# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
---     dynamic state enabled, and the state is not inherited, then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-scissorCount-03418# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
---     dynamic state enabled, and the state is not inherited, then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-viewportCount-03419# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     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, and the state is not inherited, then 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-vkCmdDrawMeshTasksEXT-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-vkCmdDrawMeshTasksEXT-viewportCount-04138# If the
---     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which 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 state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @viewportWScalingEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.cmdSetViewportWScalingNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-08636# If the
---     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which 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 state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @viewportWScalingEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', 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-vkCmdDrawMeshTasksEXT-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-vkCmdDrawMeshTasksEXT-shadingRateImage-09233# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV'
---     and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetCoarseSampleOrderNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-shadingRateImage-09234# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which 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 state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @shadingRateImageEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetViewportShadingRatePaletteNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-08637# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which 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 state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @shadingRateImageEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', 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-vkCmdDrawMeshTasksEXT-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
---     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo', 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-vkCmdDrawMeshTasksEXT-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
---     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo', 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-vkCmdDrawMeshTasksEXT-None-07878# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-exclusiveScissor exclusiveScissor>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-07879# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-exclusiveScissor exclusiveScissor>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV'
---     dynamic state enabled, and the most recent call to
---     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorEnableNV'
---     in the current command buffer set any element of
---     @pExclusiveScissorEnables@ to 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then
---     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-04876# If a shader object is bound
---     to any graphics stage or a graphics pipeline is bound which 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 and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-04877# If a shader object is bound
---     to any graphics stage or a graphics pipeline is bound which was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-logicOp-04878# If a shader object is
---     bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_EXT'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @logicOpEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetLogicOpEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-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-vkCmdDrawMeshTasksEXT-primitiveFragmentShadingRateWithMultipleViewports-08642#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
---     limit is not supported, and any shader object bound to a graphics
---     stage writes 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-vkCmdDrawMeshTasksEXT-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-vkCmdDrawMeshTasksEXT-None-08643# If a shader object is bound
---     to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then for each color
---     attachment in the render pass, 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 corresponding member of @pColorBlendEnables@ in the most
---     recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     in the current command buffer that affected that attachment index
---     /must/ have been 'Vulkan.Core10.FundamentalTypes.FALSE'
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-multisampledRenderToSingleSampled-07284#
---     If rasterization is not disabled in the bound graphics pipeline, and
---     none of the following is enabled:
---
---     -   the @VK_AMD_mixed_attachment_samples@ extension
---
---     -   the @VK_NV_framebuffer_mixed_samples@ extension
---
---     -   the
---         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---         feature
---
---     then @rasterizationSamples@ for the bound graphics pipeline /must/
---     be the same as the current subpass color and\/or depth\/stencil
---     attachments
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-08644# If a shader object is bound
---     to any graphics stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and none of the following is
---     enabled:
---
---     -   the @VK_AMD_mixed_attachment_samples@ extension
---
---     -   the @VK_NV_framebuffer_mixed_samples@ extension
---
---     -   the
---         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---         feature
---
---     then the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     in the current command buffer /must/ have set @rasterizationSamples@
---     to be the same as the number of samples for the current render pass
---     color and\/or depth\/stencil attachments
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-08876# If a shader object is bound
---     to any graphics stage, the current render pass instance /must/ have
---     been begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-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-vkCmdDrawMeshTasksEXT-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-vkCmdDrawMeshTasksEXT-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-vkCmdDrawMeshTasksEXT-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-vkCmdDrawMeshTasksEXT-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-vkCmdDrawMeshTasksEXT-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-vkCmdDrawMeshTasksEXT-viewMask-06178# If the current render
---     pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the 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-vkCmdDrawMeshTasksEXT-colorAttachmentCount-06179# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled and the current render pass instance was
---     begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the 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-vkCmdDrawMeshTasksEXT-dynamicRenderingUnusedAttachments-08910#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and 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 an @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 bound graphics pipeline
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-dynamicRenderingUnusedAttachments-08912#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and 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 an @imageView@ equal to
---     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have the
---     corresponding element of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
---     used to create the bound pipeline equal to
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-dynamicRenderingUnusedAttachments-08911#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is enabled, and 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 an @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 bound graphics pipeline, or the corresponding
---     element of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@,
---     if it exists, /must/ be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-colorAttachmentCount-09362# If 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@
---     equal to @1@, there is no shader object bound to any graphics stage,
---     and a color attachment with a resolve mode of
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID',
---     each element of the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
---     array with a @resolveImageView@ not equal to
---     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
---     with an image created with a
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value equal to the
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value used to create the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-09363# If there is no shader object
---     bound to any graphics stage, the current render pass instance was
---     begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     and a
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
---     equal to @1@, and a color attachment with a resolve mode of
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID',
---     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 an image created with a
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value equal to the
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value used to create the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-09364# If the current render pass
---     instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is no shader object bound to any graphics stage, and the bound
---     graphics pipeline was created with a non-zero
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value and with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have set the blend enable to
---     'Vulkan.Core10.FundamentalTypes.FALSE' prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-09365# If the current render pass
---     instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is no shader object bound to any graphics stage, and the bound
---     graphics pipeline was created with a non-zero
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value and with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ have set @rasterizationSamples@ to
---     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' prior
---     to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-09366# If there is a shader object
---     bound to any graphics stage, and the current render pass includes a
---     color attachment that uses the
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID'
---     resolve mode, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have set blend enable to
---     'Vulkan.Core10.FundamentalTypes.FALSE' prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-rasterizationSamples-09367# If there is
---     a shader object bound to any graphics stage, and the current render
---     pass includes a color attachment that uses the
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID'
---     resolve mode, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ have set @rasterizationSamples@ to
---     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' prior
---     to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-09368# If the current render pass
---     instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is no shader object bound to any graphics stage, and the bound
---     graphics pipeline was created with a non-zero
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value and with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
---     /must/ have set @pFragmentSize->width@ to @1@ prior to this drawing
---     command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-09369# If the current render pass
---     instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is no shader object bound to any graphics stage, and the bound
---     graphics pipeline was created with a non-zero
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value and with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
---     /must/ have set @pFragmentSize->height@ to @1@ prior to this drawing
---     command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-pFragmentSize-09370# If there is a
---     shader object bound to any graphics stage, and the current render
---     pass includes a color attachment that uses the
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID'
---     resolve mode, then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
---     /must/ have set @pFragmentSize->width@ to @1@ prior to this drawing
---     command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-pFragmentSize-09371# If there is a
---     shader object bound to any graphics stage, and the current render
---     pass includes a color attachment that uses the
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID'
---     resolve mode, then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
---     /must/ have set @pFragmentSize->height@ to @1@ prior to this drawing
---     command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-07749# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-08646# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
---     feature is enabled, and a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-attachmentCount-07750# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'
---     dynamic state enabled then the @attachmentCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
---     /must/ be greater than or equal to the
---     'Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo'::@attachmentCount@
---     of the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-08647# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
---     feature is enabled, and a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then the @attachmentCount@
---     parameter of most recent call to
---     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
---     in the current command buffer /must/ be greater than or equal to the
---     number of color attachments in the current render pass instance
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-07751# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command for each
---     discard rectangle in
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'::@discardRectangleCount@
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-07880# If the
---     @VK_EXT_discard_rectangles@ extension is enabled, a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-07881# If the
---     @VK_EXT_discard_rectangles@ extension is enabled, a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @discardRectangleEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-rasterizerDiscardEnable-09236# If the
---     @VK_EXT_discard_rectangles@ extension is enabled, and a shader
---     object is bound to any graphics stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEnableEXT'
---     in the current command buffer set @discardRectangleEnable@ to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-dynamicRenderingUnusedAttachments-08913#
---     If the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
---     used to create the bound graphics pipeline /must/ be equal to
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-dynamicRenderingUnusedAttachments-08914#
---     If current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->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 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->imageView@
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-dynamicRenderingUnusedAttachments-08915#
---     If the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is enabled,
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
---     used to create the bound graphics pipeline was not equal to the
---     'Vulkan.Core10.Enums.Format.Format' used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@,
---     the value of the format /must/ be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-dynamicRenderingUnusedAttachments-08916#
---     If the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
---     used to create the bound graphics pipeline /must/ be equal to
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-dynamicRenderingUnusedAttachments-08917#
---     If current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->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 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->imageView@
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-dynamicRenderingUnusedAttachments-08918#
---     If the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is enabled,
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
---     used to create the bound graphics pipeline was not equal to the
---     'Vulkan.Core10.Enums.Format.Format' used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@,
---     the value of the format /must/ be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-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_fragment_shading_rate.RenderingFragmentShadingRateAttachmentInfoKHR'::@imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the bound graphics
---     pipeline /must/ have been created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-imageView-06184# If the current render
---     pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     and
---     'Vulkan.Extensions.VK_EXT_fragment_density_map.RenderingFragmentDensityMapAttachmentInfoEXT'::@imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the bound graphics
---     pipeline /must/ have been created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT'
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-colorAttachmentCount-06185# If the bound
---     pipeline was created with a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.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_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     used to create the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-pDepthAttachment-06186# If the current
---     render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the bound pipeline was created with a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     structure, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
---     @depthStencilAttachmentSamples@ member of
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     used to create the bound graphics pipeline /must/ be equal to the
---     sample count used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-pStencilAttachment-06187# If the current
---     render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the bound pipeline was created with a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     structure, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
---     @depthStencilAttachmentSamples@ member of
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     used to create the bound graphics pipeline /must/ be equal to the
---     sample count used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-multisampledRenderToSingleSampled-07285#
---     If the bound pipeline was created without a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     structure, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---     feature is not enabled, 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 @rasterizationSamples@ for
---     the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-multisampledRenderToSingleSampled-07286#
---     If the bound pipeline was created without a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     structure, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     @rasterizationSamples@ for the bound graphics pipeline /must/ be
---     equal to the sample count used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-multisampledRenderToSingleSampled-07287#
---     If the bound pipeline was created without a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     structure, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     @rasterizationSamples@ for the bound graphics pipeline /must/ be
---     equal to the sample count used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-pNext-07935# If this command has been
---     called inside a render pass instance started with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     and the @pNext@ chain of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'
---     includes a
---     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'
---     structure with @multisampledRenderToSingleSampledEnable@ equal to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the value of
---     @rasterizationSamples@ for the bound graphics pipeline /must/ be
---     equal to
---     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'::@rasterizationSamples@
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-renderPass-06198# If the current render
---     pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the bound pipeline /must/ have been created with a
---     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@renderPass@
---     equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE'
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-pColorAttachments-08963# If the current
---     render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is a graphics pipeline bound with a fragment shader that
---     statically writes to a color attachment, the color write mask is not
---     zero, color writes are enabled, and the corresponding element of the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
---     corresponding element of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
---     used to create the pipeline /must/ not be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-pDepthAttachment-08964# If the current
---     render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is a graphics pipeline bound, depth test is enabled, depth
---     write is enabled, and the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
---     used to create the pipeline /must/ not be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-pStencilAttachment-08965# If the current
---     render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is a graphics pipeline bound, stencil test is enabled and the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
---     used to create the pipeline /must/ not be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-primitivesGeneratedQueryWithRasterizerDiscard-06708#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithRasterizerDiscard primitivesGeneratedQueryWithRasterizerDiscard>
---     feature is not enabled and the
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
---     query is active,
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-discard rasterization discard>
---     /must/ not be enabled
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-primitivesGeneratedQueryWithNonZeroStreams-06709#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>
---     feature is not enabled and the
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
---     query is active, the bound graphics pipeline /must/ not have been
---     created with a non-zero value in
---     'Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT'::@rasterizationStream@
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-07619# If a shader object is bound
---     to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetTessellationDomainOriginEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-07620# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClamp depthClamp>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClampEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-07621# If a shader object is bound
---     to any graphics stage or a graphics pipeline is bound which was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_POLYGON_MODE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-07622# If a shader object is bound
---     to any graphics stage or a graphics pipeline is bound which was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-07623# If a shader object is bound
---     to any graphics stage or a graphics pipeline is bound which was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-alphaToCoverageEnable-08919# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT'
---     dynamic state enabled, and @alphaToCoverageEnable@ was
---     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-fragmentoutput Fragment Output Interface>
---     /must/ contain a variable for the alpha @Component@ word in
---     @Location@ 0 at @Index@ 0
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-alphaToCoverageEnable-08920# If a shader
---     object is bound to any graphics stage, and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT'
---     in the current command buffer set @alphaToCoverageEnable@ to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-fragmentoutput Fragment Output Interface>
---     /must/ contain a variable for the alpha @Component@ word in
---     @Location@ 0 at @Index@ 0
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-07624# If a shader object is bound
---     to any graphics stage or a graphics pipeline is bound which was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-07625# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-alphaToOne alphaToOne>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToOneEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-07626# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-logicOp logicOp>
---     feature is enabled, a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLogicOpEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-07627# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-08657# If a shader object is bound
---     to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and both the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE' and there are color
---     attachments bound, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-07628# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-08658# If a shader object is bound
---     to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     for any attachment set that attachment’s value in
---     @pColorBlendEnables@ to 'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-07629# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-08659# If a shader object is bound
---     to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and both the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE' and there are color
---     attachments bound, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-07630# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryStreams geometryStreams>
---     feature is enabled, and a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_STREAM_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationStreamEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-07631# If the
---     @VK_EXT_conservative_rasterization@ extension is enabled, a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetConservativeRasterizationModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-07632# If the
---     @VK_EXT_conservative_rasterization@ extension is enabled, a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @conservativeRasterizationMode@ is
---     'Vulkan.Extensions.VK_EXT_conservative_rasterization.CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT',
---     then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetExtraPrimitiveOverestimationSizeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-07633# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClipEnable depthClipEnable>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT'
---     dynamic state, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-07635# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-rasterizerDiscardEnable-09416# If the
---     @VK_EXT_blend_operation_advanced@ extension is enabled, and a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then at least one of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     and
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-07636# If the
---     @VK_EXT_provoking_vertex@ extension is enabled, a shader object is
---     bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetProvokingVertexModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-07637# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-08666# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object is bound to any graphics
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
---     in the current command buffer set @polygonMode@ to
---     'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_LINE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-08667# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
---     in the current command buffer set @primitiveTopology@ to any line
---     topology, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-08668# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object that outputs line
---     primitives is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-07638# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-08669# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object is bound to any graphics
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
---     in the current command buffer set @polygonMode@ to
---     'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_LINE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-08670# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
---     in the current command buffer set @primitiveTopology@ to any line
---     topology, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-08671# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object that outputs line
---     primitives is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-07849# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled and a shader object is bound to any graphics
---     stage, or a bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_KHR'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @stippledLineEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then
---     'Vulkan.Extensions.VK_KHR_line_rasterization.cmdSetLineStippleKHR'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-07639# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClipControl depthClipControl>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipNegativeOneToOneEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-09650# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClampControl depthClampControl>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @depthClampEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_depth_clamp_control.cmdSetDepthClampRangeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-07640# If the
---     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportWScalingEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-07641# If the
---     @VK_NV_viewport_swizzle@ extension is enabled, and a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-07642# If the
---     @VK_NV_fragment_coverage_to_color@ extension is enabled, a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-07643# If the
---     @VK_NV_fragment_coverage_to_color@ extension is enabled, a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @coverageToColorEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-07644# If the
---     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationModeNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-07645# If the
---     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @coverageModulationMode@ is any value other than
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.COVERAGE_MODULATION_MODE_NONE_NV',
---     then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-07646# If the
---     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @coverageModulationTableEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-07647# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetShadingRateImageEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-pipelineFragmentShadingRate-09238# If
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate>
---     feature is enabled, a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-07648# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-representativeFragmentTest representativeFragmentTest>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRepresentativeFragmentTestEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-07649# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-coverageReductionMode coverageReductionMode>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageReductionModeNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-pColorBlendEnables-07470# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---     state enabled and the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     set @pColorBlendEnables@ for any attachment to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then for those attachments in
---     the subpass 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>
---     /must/ contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-rasterizationSamples-07471# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the current subpass does not use any color
---     and\/or depth\/stencil attachments, then the @rasterizationSamples@
---     in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ follow the rules for a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-noattachments zero-attachment subpass>
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-samples-07472# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
---     state enabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state disabled, then the @samples@ parameter in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
---     /must/ be greater or equal to the
---     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
---     parameter used to create the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-samples-07473# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
---     state and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     states enabled, then the @samples@ parameter in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
---     /must/ be greater or equal to the @rasterizationSamples@ parameter
---     in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-rasterizationSamples-07474# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---     feature is not enabled, and neither the
---     @VK_AMD_mixed_attachment_samples@ nor the
---     @VK_NV_framebuffer_mixed_samples@ extensions are enabled, then the
---     @rasterizationSamples@ in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ be the same as the current subpass color and\/or
---     depth\/stencil attachments
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-09211# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, or a shader object is bound to any graphics stage,
---     and the current render pass instance includes a
---     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'
---     structure with @multisampledRenderToSingleSampledEnable@ equal to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the
---     @rasterizationSamples@ in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ be the same as the @rasterizationSamples@ member of that
---     structure
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-firstAttachment-07476# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     calls /must/ specify an enable for all active color attachments in
---     the current subpass
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-rasterizerDiscardEnable-09417# If a
---     shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     calls /must/ specify an enable for all active color attachments in
---     the current subpass
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-firstAttachment-07477# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     calls /must/ specify the blend equations for all active color
---     attachments in the current subpass where blending is enabled
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-rasterizerDiscardEnable-09418# If a
---     shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and both the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE' and there are color
---     attachments bound, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     calls /must/ specify the blend equations for all active color
---     attachments in the current subpass where blending is enabled
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-firstAttachment-07478# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     calls /must/ specify the color write mask for all active color
---     attachments in the current subpass
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-rasterizerDiscardEnable-09419# If a
---     shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     calls /must/ specify the color write mask for all active color
---     attachments in the current subpass
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-firstAttachment-07479# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
---     calls /must/ specify the advanced blend equations for all active
---     color attachments in the current subpass where blending is enabled
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-advancedBlendMaxColorAttachments-07480#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
---     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---     dynamic states enabled and the last calls to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     and
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
---     have enabled advanced blending, then the number of active color
---     attachments in the current subpass /must/ not exceed
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-advancedBlendMaxColorAttachments advancedBlendMaxColorAttachments>
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-primitivesGeneratedQueryWithNonZeroStreams-07481#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>
---     feature is not enabled and the
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
---     query is active, and the bound graphics pipeline was created with
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_STREAM_EXT'
---     state enabled, the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationStreamEXT'
---     /must/ have set the @rasterizationStream@ to zero
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-sampleLocationsPerPixel-07482# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state enabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state disabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then the @sampleLocationsPerPixel@ member of @pSampleLocationsInfo@
---     in the last call to
---     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
---     /must/ equal the @rasterizationSamples@ member of the
---     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'
---     structure the bound graphics pipeline has been created with
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-sampleLocationsPerPixel-07483# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state enabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then the @sampleLocationsPerPixel@ member of @pSampleLocationsInfo@
---     in the last call to
---     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
---     /must/ equal the @rasterizationSamples@ parameter of the last call
---     to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-sampleLocationsEnable-07484# If a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, or the bound graphics pipeline was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     state enabled, and @sampleLocationsEnable@ was
---     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
---     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-vkCmdDrawMeshTasksEXT-sampleLocationsEnable-07485# If a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state enabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     state enabled, and if @sampleLocationsEnable@ was
---     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
---     then the @sampleLocationsInfo.sampleLocationGridSize.width@ in the
---     last call to
---     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
---     /must/ evenly divide
---     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@sampleLocationGridSize.width@
---     as returned by
---     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
---     with a @samples@ parameter equaling @rasterizationSamples@
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-sampleLocationsEnable-07486# If a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state enabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     state enabled, and if @sampleLocationsEnable@ was
---     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
---     then the @sampleLocationsInfo.sampleLocationGridSize.height@ in the
---     last call to
---     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
---     /must/ evenly divide
---     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@sampleLocationGridSize.height@
---     as returned by
---     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
---     with a @samples@ parameter equaling @rasterizationSamples@
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-sampleLocationsEnable-07487# If a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     state enabled, and if @sampleLocationsEnable@ was
---     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
---     the fragment shader code /must/ not statically use the extended
---     instruction @InterpolateAtSample@
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-sampleLocationsEnable-07936# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state disabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then @sampleLocationsInfo.sampleLocationGridSize.width@ /must/
---     evenly divide
---     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@sampleLocationGridSize.width@
---     as returned by
---     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
---     with a @samples@ parameter equaling the value of
---     @rasterizationSamples@ in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-sampleLocationsEnable-07937# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state disabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then @sampleLocationsInfo.sampleLocationGridSize.height@ /must/
---     evenly divide
---     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@sampleLocationGridSize.height@
---     as returned by
---     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
---     with a @samples@ parameter equaling the value of
---     @rasterizationSamples@ in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-sampleLocationsEnable-07938# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state disabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then @sampleLocationsInfo.sampleLocationsPerPixel@ /must/ equal
---     @rasterizationSamples@ in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-coverageModulationTableEnable-07488# If
---     a shader object is bound to any graphics stage or the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV'
---     state enabled, and the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV'
---     set @coverageModulationTableEnable@ to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the
---     @coverageModulationTableCount@ parameter in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableNV'
---     /must/ equal the current @rasterizationSamples@ divided by the
---     number of color samples in the current subpass
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-rasterizationSamples-07489# If the
---     @VK_NV_framebuffer_mixed_samples@ extension is enabled, and if
---     current subpass has a depth\/stencil attachment and depth test,
---     stencil test, or depth bounds test are enabled in the bound
---     pipeline, then the current @rasterizationSamples@ /must/ be the same
---     as the sample count of the depth\/stencil attachment
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-coverageToColorEnable-07490# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
---     state enabled and the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
---     set the @coverageToColorEnable@ to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the current subpass
---     /must/ have a color attachment at the location selected by the last
---     call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
---     @coverageToColorLocation@, with a
---     'Vulkan.Core10.Enums.Format.Format' of
---     'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R8_SINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R16_UINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R16_SINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R32_UINT', or
---     'Vulkan.Core10.Enums.Format.FORMAT_R32_SINT'
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-rasterizerDiscardEnable-09420# If the
---     @VK_NV_fragment_coverage_to_color@ extension is enabled, and a
---     shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
---     set the @coverageToColorEnable@ to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the current subpass
---     /must/ have a color attachment at the location selected by the last
---     call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
---     @coverageToColorLocation@, with a
---     'Vulkan.Core10.Enums.Format.Format' of
---     'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R8_SINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R16_UINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R16_SINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R32_UINT', or
---     'Vulkan.Core10.Enums.Format.FORMAT_R32_SINT'
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-coverageReductionMode-07491# If this
---     @VK_NV_coverage_reduction_mode@ extension is enabled, the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
---     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     states enabled, the current coverage reduction mode
---     @coverageReductionMode@, then the current @rasterizationSamples@,
---     and the sample counts for the color and depth\/stencil attachments
---     (if the subpass has them) /must/ be a valid combination returned by
---     'Vulkan.Extensions.VK_NV_coverage_reduction_mode.getPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV'
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-viewportCount-07492# 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_SWIZZLE_NV'
---     dynamic state enabled, 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-vkCmdDrawMeshTasksEXT-viewportCount-07493# 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_SWIZZLE_NV'
---     dynamic states enabled then the @viewportCount@ parameter in the
---     last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
---     /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-vkCmdDrawMeshTasksEXT-viewportCount-09421# If the
---     @VK_NV_viewport_swizzle@ extension is enabled, and a shader object
---     is bound to any graphics stage, then the @viewportCount@ parameter
---     in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
---     /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-vkCmdDrawMeshTasksEXT-rasterizationSamples-07494# If the
---     @VK_NV_framebuffer_mixed_samples@ extension is enabled, and if the
---     current subpass has any color attachments and @rasterizationSamples@
---     of the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     is greater than the number of color samples, then the pipeline
---     @sampleShadingEnable@ /must/ be
---     'Vulkan.Core10.FundamentalTypes.FALSE'
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-stippledLineEnable-07495# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---     or
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---     dynamic states enabled, and if the current @stippledLineEnable@
---     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
---     @lineRasterizationMode@ state is
---     'Vulkan.Extensions.VK_KHR_line_rasterization.LINE_RASTERIZATION_MODE_RECTANGULAR_KHR',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>
---     feature /must/ be enabled
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-stippledLineEnable-07496# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---     or
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---     dynamic states enabled, and if the current @stippledLineEnable@
---     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
---     @lineRasterizationMode@ state is
---     'Vulkan.Extensions.VK_KHR_line_rasterization.LINE_RASTERIZATION_MODE_BRESENHAM_KHR',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     feature /must/ be enabled
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-stippledLineEnable-07497# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---     or
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---     dynamic states enabled, and if the current @stippledLineEnable@
---     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
---     @lineRasterizationMode@ state is
---     'Vulkan.Extensions.VK_KHR_line_rasterization.LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     feature /must/ be enabled
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-stippledLineEnable-07498# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---     or
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---     dynamic states enabled, and if the current @stippledLineEnable@
---     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
---     @lineRasterizationMode@ state is
---     'Vulkan.Extensions.VK_KHR_line_rasterization.LINE_RASTERIZATION_MODE_DEFAULT_KHR',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>
---     feature /must/ be enabled and
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@strictLines@
---     /must/ be 'Vulkan.Core10.FundamentalTypes.TRUE'
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-conservativePointAndLineRasterization-07499#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT'
---     dynamic state enabled,
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-conservativePointAndLineRasterization conservativePointAndLineRasterization>
---     is not supported, and the effective primitive topology output by the
---     last pre-rasterization shader stage is a line or point, then the
---     @conservativeRasterizationMode@ set by the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetConservativeRasterizationModeEXT'
---     /must/ be
---     'Vulkan.Extensions.VK_EXT_conservative_rasterization.CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT'
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-stage-07073# If the bound pipeline was
---     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_VERTEX_BIT',
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT',
---     then
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-mesh-shader Mesh Shader Queries>
---     /must/ not be active
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-08877# If a shader object is bound
---     to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-07850# If dynamic state was
---     inherited from
---     'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV',
---     it /must/ be set in the current command buffer prior to this drawing
---     command
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-08684# If there is no bound
---     graphics pipeline,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-08685# If there is no bound
---     graphics pipeline, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellationShader>
---     feature is enabled,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-08686# If there is no bound
---     graphics pipeline, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellationShader>
---     feature is enabled,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-08687# If there is no bound
---     graphics pipeline, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometryShader>
---     feature is enabled,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-08688# If there is no bound
---     graphics pipeline,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-08689# If there is no bound
---     graphics pipeline, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
---     feature is enabled,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-08690# If there is no bound
---     graphics pipeline, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
---     feature is enabled,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-08693# If there is no bound
---     graphics pipeline, and at least one of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
---     and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
---     features is enabled, one of the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---     stages /must/ have a valid 'Vulkan.Extensions.Handles.ShaderEXT'
---     bound, and the other /must/ have no
---     'Vulkan.Extensions.Handles.ShaderEXT' bound
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-08694# If there is no bound
---     graphics pipeline, and both the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
---     and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
---     features are enabled, and a valid
---     'Vulkan.Extensions.Handles.ShaderEXT' is bound the to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---     stage, and that 'Vulkan.Extensions.Handles.ShaderEXT' was created
---     without the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
---     flag, a valid 'Vulkan.Extensions.Handles.ShaderEXT' /must/ be bound
---     to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---     stage
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-08695# If there is no bound
---     graphics pipeline, and both the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
---     and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
---     features are enabled, and a valid
---     'Vulkan.Extensions.Handles.ShaderEXT' is bound the to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---     stage, and that 'Vulkan.Extensions.Handles.ShaderEXT' was created
---     with the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
---     flag, there /must/ be no 'Vulkan.Extensions.Handles.ShaderEXT' bound
---     to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---     stage
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-08696# If there is no bound
---     graphics pipeline, and a valid 'Vulkan.Extensions.Handles.ShaderEXT'
---     is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage, there /must/ be no 'Vulkan.Extensions.Handles.ShaderEXT'
---     bound to either the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---     stage or the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---     stage
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-08698# If any graphics shader is
---     bound which was created with the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
---     flag, then all shaders created with the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
---     flag in the same
---     'Vulkan.Extensions.VK_EXT_shader_object.createShadersEXT' call
---     /must/ also be bound
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-08699# If any graphics shader is
---     bound which was created with the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
---     flag, any stages in between stages whose shaders which did not
---     create a shader with the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
---     flag as part of the same
---     'Vulkan.Extensions.VK_EXT_shader_object.createShadersEXT' call
---     /must/ not have any 'Vulkan.Extensions.Handles.ShaderEXT' bound
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-08878# All bound graphics shader
---     objects /must/ have been created with identical or identically
---     defined push constant ranges
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-08879# All bound graphics shader
---     objects /must/ have been created with identical or identically
---     defined arrays of descriptor set layouts
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-colorAttachmentCount-09372# If the
---     current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     and a
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
---     equal to @1@, a color attachment with a resolve mode of
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID',
---     and a fragment shader is bound, it /must/ not declare the
---     @DepthReplacing@ or @StencilRefReplacingEXT@ execution modes
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-pDynamicStates-08715# If the bound
---     graphics pipeline state includes a fragment shader stage, was
---     created with
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE'
---     set in
---     'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@,
---     and the fragment shader declares the @EarlyFragmentTests@ execution
---     mode and uses @OpDepthAttachmentReadEXT@, the @depthWriteEnable@
---     parameter in the last call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthWriteEnable'
---     /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-pDynamicStates-08716# If the bound
---     graphics pipeline state includes a fragment shader stage, was
---     created with
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_WRITE_MASK'
---     set in
---     'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@,
---     and the fragment shader declares the @EarlyFragmentTests@ execution
---     mode and uses @OpStencilAttachmentReadEXT@, the @writeMask@
---     parameter in the last call to
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilWriteMask' /must/
---     be @0@
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-09116# If a shader object is bound
---     to any graphics stage or the bound graphics pipeline was created
---     with
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT',
---     and the format of any color attachment is
---     'Vulkan.Core10.Enums.Format.FORMAT_E5B9G9R9_UFLOAT_PACK32', the
---     corresponding element of the @pColorWriteMasks@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     /must/ either include all of
---     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_R_BIT',
---     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_G_BIT',
---     and
---     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_B_BIT',
---     or none of them
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-maxFragmentDualSrcAttachments-09239# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blending blending>
---     is enabled for any attachment where either the source or destination
---     blend factors for that attachment
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-dsb use the secondary color input>,
---     the maximum value of @Location@ for any output attachment
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-staticuse statically used>
---     in the @Fragment@ @Execution@ @Model@ executed by this command
---     /must/ be less than
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFragmentDualSrcAttachments maxFragmentDualSrcAttachments>
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-09548# If the current render pass
---     was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     and there is no shader object bound to any graphics stage, the value
---     of each element of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingAttachmentLocationInfoKHR'::@pColorAttachmentLocations@
---     set by
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.cmdSetRenderingAttachmentLocationsKHR'
---     /must/ match the value set for the corresponding element in the
---     bound pipeline
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-09549# If the current render pass
---     was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     and there is no shader object bound to any graphics stage, input
---     attachment index mappings in the bound pipeline /must/ match those
---     set for the current render pass instance via
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR'
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-09642# If the current render pass
---     was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     with the
---     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT'
---     flag, the bound graphics pipeline /must/ have been created with
---     'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT'
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-09643# If the bound graphics
---     pipeline was created with
---     'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT',
---     the current render pass /must/ have begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     with the
---     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT'
---     flag
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-stage-06480# The bound graphics pipeline
---     /must/ not have been created with the
---     'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo'::@stage@
---     member of any element of
---     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@pStages@ set
---     to
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-07074#
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-transform-feedback Transform Feedback Queries>
---     /must/ not be active
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-07075#
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-primitives-generated Primitives Generated Queries>
---     /must/ not be active
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-pipelineStatistics-07076# The
---     @pipelineStatistics@ member used to create any active
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-pipestats Pipeline Statistics Query>
---     /must/ not contain
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT',
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT',
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT',
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT',
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT',
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT',
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT',
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT',
---     or
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-TaskEXT-07322# If the current pipeline
---     bound to
---     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
---     contains a shader using the @TaskEXT@ @Execution@ @Model@,
---     @groupCountX@ /must/ be less than or equal to
---     'PhysicalDeviceMeshShaderPropertiesEXT'::@maxTaskWorkGroupCount@[0]
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-TaskEXT-07323# If the current pipeline
---     bound to
---     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
---     contains a shader using the @TaskEXT@ @Execution@ @Model@,
---     @groupCountY@ /must/ be less than or equal to
---     'PhysicalDeviceMeshShaderPropertiesEXT'::@maxTaskWorkGroupCount@[1]
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-TaskEXT-07324# If the current pipeline
---     bound to
---     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
---     contains a shader using the @TaskEXT@ @Execution@ @Model@,
---     @groupCountZ@ /must/ be less than or equal to
---     'PhysicalDeviceMeshShaderPropertiesEXT'::@maxTaskWorkGroupCount@[2]
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-TaskEXT-07325# If the current pipeline
---     bound to
---     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
---     contains a shader using the @TaskEXT@ @Execution@ @Model@, The
---     product of @groupCountX@, @groupCountY@ and @groupCountZ@ /must/ be
---     less than or equal to
---     'PhysicalDeviceMeshShaderPropertiesEXT'::@maxTaskWorkGroupTotalCount@
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-TaskEXT-07326# If the current pipeline
---     bound to
---     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
---     does not contain a shader using the @TaskEXT@ @Execution@ @Model@,
---     @groupCountX@ /must/ be less than or equal to
---     'PhysicalDeviceMeshShaderPropertiesEXT'::@maxMeshWorkGroupCount@[0]
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-TaskEXT-07327# If the current pipeline
---     bound to
---     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
---     does not contain a shader using the @TaskEXT@ @Execution@ @Model@,
---     @groupCountY@ /must/ be less than or equal to
---     'PhysicalDeviceMeshShaderPropertiesEXT'::@maxMeshWorkGroupCount@[1]
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-TaskEXT-07328# If the current pipeline
---     bound to
---     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
---     does not contain a shader using the @TaskEXT@ @Execution@ @Model@,
---     @groupCountZ@ /must/ be less than or equal to
---     'PhysicalDeviceMeshShaderPropertiesEXT'::@maxMeshWorkGroupCount@[2]
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-TaskEXT-07329# If the current pipeline
---     bound to
---     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
---     does not contain a shader using the @TaskEXT@ @Execution@ @Model@,
---     The product of @groupCountX@, @groupCountY@ and @groupCountZ@ /must/
---     be less than or equal to
---     'PhysicalDeviceMeshShaderPropertiesEXT'::@maxMeshWorkGroupTotalCount@
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-MeshEXT-07087# The current pipeline
---     bound to
---     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
---     /must/ contain a shader stage using the @MeshEXT@ @Execution@
---     @Model@
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-commandBuffer-parameter# @commandBuffer@
---     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-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-vkCmdDrawMeshTasksEXT-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-renderpass# This command /must/ only be
---     called inside of a render pass instance
---
--- -   #VUID-vkCmdDrawMeshTasksEXT-videocoding# This command /must/ only be
---     called outside of a video coding scope
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
--- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Inside                                                                                                                 | Outside                                                                                                                     | Graphics                                                                                                              | Action                                                                                                                                 |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_mesh_shader VK_EXT_mesh_shader>,
--- 'Vulkan.Core10.Handles.CommandBuffer'
-cmdDrawMeshTasksEXT :: 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 ()
-cmdDrawMeshTasksEXT commandBuffer
-                      groupCountX
-                      groupCountY
-                      groupCountZ = liftIO $ do
-  let vkCmdDrawMeshTasksEXTPtr = pVkCmdDrawMeshTasksEXT (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  unless (vkCmdDrawMeshTasksEXTPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdDrawMeshTasksEXT is null" Nothing Nothing
-  let vkCmdDrawMeshTasksEXT' = mkVkCmdDrawMeshTasksEXT vkCmdDrawMeshTasksEXTPtr
-  traceAroundEvent "vkCmdDrawMeshTasksEXT" (vkCmdDrawMeshTasksEXT'
-                                              (commandBufferHandle (commandBuffer))
-                                              (groupCountX)
-                                              (groupCountY)
-                                              (groupCountZ))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdDrawMeshTasksIndirectEXT
-  :: FunPtr (Ptr CommandBuffer_T -> Buffer -> DeviceSize -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> DeviceSize -> Word32 -> Word32 -> IO ()
-
--- | vkCmdDrawMeshTasksIndirectEXT - Issue an indirect mesh tasks draw into a
--- command buffer
---
--- = Description
---
--- 'cmdDrawMeshTasksIndirectEXT' behaves similarly to 'cmdDrawMeshTasksEXT'
--- 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 'DrawMeshTasksIndirectCommandEXT' structures. If
--- @drawCount@ is less than or equal to one, @stride@ is ignored.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-magFilter-04553# If a
---     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
---     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR',
---     @reductionMode@ equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
---     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-vkCmdDrawMeshTasksIndirectEXT-magFilter-09598# If a
---     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
---     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR' and
---     @reductionMode@ equal to either
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
---     or
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
---     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_MINMAX_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-mipmapMode-04770# If a
---     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
---     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR',
---     @reductionMode@ equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
---     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-vkCmdDrawMeshTasksIndirectEXT-mipmapMode-09599# If a
---     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
---     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'
---     and @reductionMode@ equal to either
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
---     or
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
---     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_MINMAX_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-unnormalizedCoordinates-09635#
---     If a 'Vulkan.Core10.Handles.Sampler' created with
---     @unnormalizedCoordinates@ equal to
---     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
---     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
---     the image view’s @levelCount@ and @layerCount@ /must/ be 1
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-unnormalizedCoordinates-09636#
---     If a 'Vulkan.Core10.Handles.Sampler' created with
---     @unnormalizedCoordinates@ equal to
---     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
---     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
---     the image view’s @viewType@ /must/ be
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D' or
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-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-vkCmdDrawMeshTasksIndirectEXT-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-vkCmdDrawMeshTasksIndirectEXT-None-07888# If a
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'
---     descriptor is accessed using atomic operations as a result of this
---     command, then the storage texel buffer’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-buffer-view-format-features format features>
---     /must/ contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-02692# If a
---     'Vulkan.Core10.Handles.ImageView' is sampled with
---     'Vulkan.Core10.Enums.Filter.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.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-02693# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_filter_cubic VK_EXT_filter_cubic>
---     extension is not enabled and any 'Vulkan.Core10.Handles.ImageView'
---     is sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as a
---     result of this command, it /must/ not have a
---     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' of
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE', or
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-filterCubic-02694# Any
---     'Vulkan.Core10.Handles.ImageView' being sampled with
---     'Vulkan.Core10.Enums.Filter.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-vkCmdDrawMeshTasksIndirectEXT-filterCubicMinmax-02695# Any
---     'Vulkan.Core10.Handles.ImageView' being sampled with
---     'Vulkan.Core10.Enums.Filter.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-vkCmdDrawMeshTasksIndirectEXT-cubicRangeClamp-09212# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-cubicRangeClamp cubicRangeClamp>
---     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
---     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
---     a result of this command /must/ not have a
---     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
---     equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-reductionMode-09213# Any
---     'Vulkan.Core10.Handles.ImageView' being sampled with a
---     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
---     equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
---     as a result of this command /must/ sample with
---     'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-selectableCubicWeights-09214# If
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-selectableCubicWeights selectableCubicWeights>
---     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
---     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
---     a result of this command /must/ have
---     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.SamplerCubicWeightsCreateInfoQCOM'::@cubicWeights@
---     equal to
---     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-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-vkCmdDrawMeshTasksIndirectEXT-OpTypeImage-07027# For any
---     'Vulkan.Core10.Handles.ImageView' being written as a storage image
---     where the image format field of the @OpTypeImage@ is @Unknown@, the
---     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_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-OpTypeImage-07028# For any
---     'Vulkan.Core10.Handles.ImageView' being read as a storage image
---     where the image format field of the @OpTypeImage@ is @Unknown@, the
---     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_STORAGE_READ_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-OpTypeImage-07029# For any
---     'Vulkan.Core10.Handles.BufferView' being written as a storage texel
---     buffer where the image format field of the @OpTypeImage@ is
---     @Unknown@, the view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
---     /must/ contain
---     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-OpTypeImage-07030# Any
---     'Vulkan.Core10.Handles.BufferView' being read as a storage texel
---     buffer where the image format field of the @OpTypeImage@ is
---     @Unknown@ then the view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
---     /must/ contain
---     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08600# For each set /n/
---     that is statically used by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     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' or the
---     'Vulkan.Core10.Handles.DescriptorSetLayout' array used to create the
---     current 'Vulkan.Extensions.Handles.ShaderEXT' , as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08601# For each push
---     constant that is statically used by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     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' or the
---     'Vulkan.Core10.Handles.DescriptorSetLayout' array used to create the
---     current 'Vulkan.Extensions.Handles.ShaderEXT' , as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-10068# For each array of
---     resources that is used by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     the indices used to access members of the array /must/ be less than
---     the descriptor count for the identified binding in the descriptor
---     sets used by this command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-maintenance4-08602# 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
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     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' or the
---     'Vulkan.Core10.Handles.DescriptorSetLayout' and
---     'Vulkan.Core10.PipelineLayout.PushConstantRange' arrays used to
---     create the current 'Vulkan.Extensions.Handles.ShaderEXT' , as
---     described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08114# Descriptors in each
---     bound descriptor set, specified via
---     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
---     be valid as described by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
---     if they are statically used by the 'Vulkan.Core10.Handles.Pipeline'
---     bound to the pipeline bind point used by this command and the bound
---     'Vulkan.Core10.Handles.Pipeline' was not created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08115# If the descriptors
---     used by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline
---     bind point were specified via
---     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', the
---     bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
---     without
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08116# Descriptors in bound
---     descriptor buffers, specified via
---     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
---     /must/ be valid if they are dynamically used by the
---     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
---     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
---     was created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08604# Descriptors in bound
---     descriptor buffers, specified via
---     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
---     /must/ be valid if they are dynamically used by any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     to the pipeline bind point used by this command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08117# If the descriptors
---     used by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline
---     bind point were specified via
---     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
---     the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
---     with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08119# If a descriptor is
---     dynamically used with a 'Vulkan.Core10.Handles.Pipeline' created
---     with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
---     the descriptor memory /must/ be resident
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08605# If a descriptor is
---     dynamically used with a 'Vulkan.Extensions.Handles.ShaderEXT'
---     created with a 'Vulkan.Core10.Handles.DescriptorSetLayout' that was
---     created with
---     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
---     the descriptor memory /must/ be resident
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08606# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject>
---     feature is not enabled, a valid pipeline /must/ be bound to the
---     pipeline bind point used by this command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08608# If a pipeline is
---     bound to the pipeline bind point used by this command, there /must/
---     not have been any calls to dynamic state setting commands for any
---     state specified statically in the 'Vulkan.Core10.Handles.Pipeline'
---     object bound to the pipeline bind point used by this command, since
---     that pipeline was bound
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08609# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command or any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDrawMeshTasksIndirectEXT-None-08610# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command or any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDrawMeshTasksIndirectEXT-None-08611# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command or any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDrawMeshTasksIndirectEXT-None-08607# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject>
---     feature is enabled, either a valid pipeline /must/ be bound to the
---     pipeline bind point used by this command, or a valid combination of
---     valid and 'Vulkan.Core10.APIConstants.NULL_HANDLE' shader objects
---     /must/ be bound to every supported shader stage corresponding to the
---     pipeline bind point used by this command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-uniformBuffers-06935# If any
---     stage of the 'Vulkan.Core10.Handles.Pipeline' object bound to the
---     pipeline bind point used by this command accesses a uniform buffer,
---     and that stage was created without enabling either
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT'
---     or
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT'
---     for @uniformBuffers@, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, that stage /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-vkCmdDrawMeshTasksIndirectEXT-None-08612# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, and any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDrawMeshTasksIndirectEXT-storageBuffers-06936# If any
---     stage of the 'Vulkan.Core10.Handles.Pipeline' object bound to the
---     pipeline bind point used by this command accesses a storage buffer,
---     and that stage was created without enabling either
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT'
---     or
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT'
---     for @storageBuffers@, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, that stage /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-vkCmdDrawMeshTasksIndirectEXT-None-08613# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, and any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDrawMeshTasksIndirectEXT-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
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shaders>
---     /must/ not be a protected resource
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-06550# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
---     accesses a 'Vulkan.Core10.Handles.Sampler' or
---     'Vulkan.Core10.Handles.ImageView' object that enables
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,
---     that object /must/ only be used with @OpImageSample*@ or
---     @OpImageSparseSample*@ instructions
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-ConstOffset-06551# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
---     accesses a 'Vulkan.Core10.Handles.Sampler' or
---     'Vulkan.Core10.Handles.ImageView' object that enables
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,
---     that object /must/ not use the @ConstOffset@ and @Offset@ operands
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-viewType-07752# If a
---     'Vulkan.Core10.Handles.ImageView' is accessed as a result of this
---     command, then the image view’s @viewType@ /must/ match the @Dim@
---     operand of the @OpTypeImage@ as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-image-dimensions ???>
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-format-07753# If a
---     'Vulkan.Core10.Handles.ImageView' is accessed as a result of this
---     command, then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-numericformat numeric type>
---     of the image view’s @format@ and the @Sampled@ @Type@ operand of the
---     @OpTypeImage@ /must/ match
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-OpImageWrite-08795# If a
---     'Vulkan.Core10.Handles.ImageView' created with a format other than
---     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM_KHR' 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-vkCmdDrawMeshTasksIndirectEXT-OpImageWrite-08796# If a
---     'Vulkan.Core10.Handles.ImageView' created with the format
---     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM_KHR' is accessed using
---     @OpImageWrite@ as a result of this command, then the @Type@ of the
---     @Texel@ operand of that instruction /must/ have four components
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-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-vkCmdDrawMeshTasksIndirectEXT-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-vkCmdDrawMeshTasksIndirectEXT-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-vkCmdDrawMeshTasksIndirectEXT-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-vkCmdDrawMeshTasksIndirectEXT-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-vkCmdDrawMeshTasksIndirectEXT-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-vkCmdDrawMeshTasksIndirectEXT-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-vkCmdDrawMeshTasksIndirectEXT-OpImageWeightedSampleQCOM-06971#
---     If @OpImageWeightedSampleQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-OpImageWeightedSampleQCOM-06972#
---     If @OpImageWeightedSampleQCOM@ uses a
---     'Vulkan.Core10.Handles.ImageView' as a sample weight image 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-OpImageBoxFilterQCOM-06973# If
---     @OpImageBoxFilterQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-OpImageBlockMatchSSDQCOM-06974#
---     If @OpImageBlockMatchSSDQCOM@ is used to read from an
---     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-OpImageBlockMatchSADQCOM-06975#
---     If @OpImageBlockMatchSADQCOM@ is used to read from an
---     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-OpImageBlockMatchSADQCOM-06976#
---     If @OpImageBlockMatchSADQCOM@ or OpImageBlockMatchSSDQCOM is used to
---     read from a reference image as result of this command, then the
---     specified reference coordinates /must/ not fail
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-OpImageWeightedSampleQCOM-06977#
---     If @OpImageWeightedSampleQCOM@, @OpImageBoxFilterQCOM@,
---     @OpImageBlockMatchWindowSSDQCOM@, @OpImageBlockMatchWindowSADQCOM@,
---     @OpImageBlockMatchGatherSSDQCOM@, @OpImageBlockMatchGatherSADQCOM@,
---     @OpImageBlockMatchSSDQCOM@, or @OpImageBlockMatchSADQCOM@ uses a
---     'Vulkan.Core10.Handles.Sampler' as a result of this command, then
---     the sampler /must/ have been created with
---     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-OpImageWeightedSampleQCOM-06978#
---     If any command other than @OpImageWeightedSampleQCOM@,
---     @OpImageBoxFilterQCOM@, @OpImageBlockMatchWindowSSDQCOM@,
---     @OpImageBlockMatchWindowSADQCOM@, @OpImageBlockMatchGatherSSDQCOM@,
---     @OpImageBlockMatchGatherSADQCOM@, @OpImageBlockMatchSSDQCOM@, or
---     @OpImageBlockMatchSADQCOM@ uses a 'Vulkan.Core10.Handles.Sampler' as
---     a result of this command, then the sampler /must/ not have been
---     created with
---     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-OpImageBlockMatchWindow-09215#
---     If a @OpImageBlockMatchWindow*QCOM@ or
---     @OpImageBlockMatchGather*QCOM@ instruction is used to read from an
---     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-OpImageBlockMatchWindow-09216#
---     If a @OpImageBlockMatchWindow*QCOM@ or
---     @OpImageBlockMatchGather*QCOM@ instruction is used to read from an
---     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
---     the image view’s format /must/ be a single-component format
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-OpImageBlockMatchWindow-09217#
---     If a @OpImageBlockMatchWindow*QCOM@ or
---     @OpImageBlockMatchGather*QCOM@ read from a reference image as result
---     of this command, then the specified reference coordinates /must/ not
---     fail
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07288# Any shader
---     invocation executed by this command /must/
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-termination terminate>
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-09600# If a descriptor with
---     type equal to any of
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM',
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM',
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',
---     or
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'
---     is accessed as a result of this command, the image subresource
---     identified by that descriptor /must/ be in the image layout
---     identified when the descriptor was written
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-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-vkCmdDrawMeshTasksIndirectEXT-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-vkCmdDrawMeshTasksIndirectEXT-None-07748# If any shader
---     statically accesses an input attachment, a valid descriptor /must/
---     be bound to the pipeline via a descriptor set
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-OpTypeImage-07468# If any shader
---     executed by this pipeline accesses an @OpTypeImage@ variable with a
---     @Dim@ operand of @SubpassData@, it /must/ be decorated with an
---     @InputAttachmentIndex@ that corresponds to a valid input attachment
---     in the current subpass
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07469# Input attachment
---     views accessed in a subpass /must/ be created with the same
---     'Vulkan.Core10.Enums.Format.Format' as the corresponding subpass
---     definition, and be created with a 'Vulkan.Core10.Handles.ImageView'
---     that is compatible with the attachment referenced by the subpass\'
---     @pInputAttachments@[@InputAttachmentIndex@] in the bound
---     'Vulkan.Core10.Handles.Framebuffer' as specified by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#compatibility-inputattachment Fragment Input Attachment Compatibility>
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-pDepthInputAttachmentIndex-09595#
---     Input attachment views accessed in a dynamic render pass with a
---     @InputAttachmentIndex@ referenced by
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR',
---     or no @InputAttachmentIndex@ if
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR':@pDepthInputAttachmentIndex@
---     or
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR':@pStencilInputAttachmentIndex@
---     are @NULL@, /must/ be created with a
---     'Vulkan.Core10.Handles.ImageView' that is compatible with the
---     corresponding color, depth, or stencil attachment in
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-pDepthInputAttachmentIndex-09596#
---     Input attachment views accessed in a dynamic render pass via a
---     shader object /must/ have an @InputAttachmentIndex@ if both
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR':@pDepthInputAttachmentIndex@
---     and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR':@pStencilInputAttachmentIndex@
---     are non-@NULL@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-InputAttachmentIndex-09597# If
---     an input attachment view accessed in a dynamic render pass via a
---     shader object has an @InputAttachmentIndex@, the
---     @InputAttachmentIndex@ /must/ match an index in
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-06537# Memory backing image
---     subresources used as attachments in the current render pass /must/
---     not be written in any way other than as an attachment by this
---     command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-09000# If a color
---     attachment is written by any prior command in this subpass or by the
---     load, store, or resolve operations for this subpass, it is not in
---     the
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
---     image layout, and either:
---
---     -   the
---         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT'
---         is set on the bound pipeline or
---
---     -   the last call to
---         'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
---         included
---         'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'
---         and
---
---         -   there is no bound graphics pipeline or
---
---         -   the bound graphics pipeline was created with
---             'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
---
---     it /must/ not be accessed in any way other than as an attachment by
---     this command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-09001# If a depth
---     attachment is written by any prior command in this subpass or by the
---     load, store, or resolve operations for this subpass, it is not in
---     the
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
---     image layout, and either:
---
---     -   the
---         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT'
---         is set on the bound pipeline or
---
---     -   the last call to
---         'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
---         included
---         'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT'
---         and
---
---         -   there is no bound graphics pipeline or
---
---         -   the bound graphics pipeline was created with
---             'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
---
---     it /must/ not be accessed in any way other than as an attachment by
---     this command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-09002# If a stencil
---     attachment is written by any prior command in this subpass or by the
---     load, store, or resolve operations for this subpass, it is not in
---     the
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
---     image layout, and either:
---
---     -   the
---         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT'
---         is set on the bound pipeline or
---
---     -   the last call to
---         'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
---         included
---         'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
---         and
---
---         -   there is no bound graphics pipeline or
---
---         -   the bound graphics pipeline was created with
---             'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
---
---     it /must/ not be accessed in any way other than as an attachment by
---     this command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-09003# If an attachment is
---     written by any prior command in this subpass or by the load, store,
---     or resolve operations for this subpass, it /must/ not be accessed in
---     any way other than as an attachment, storage image, or sampled image
---     by this command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-06539# If any previously
---     recorded command in the current subpass accessed an image
---     subresource used as an attachment in this subpass in any way other
---     than as an attachment, this command /must/ not write to that image
---     subresource as an attachment
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-06886# If the current
---     render pass instance uses a depth\/stencil attachment with a
---     read-only layout for the depth aspect,
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-depth-write depth writes>
---     /must/ be disabled
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-06887# If the current
---     render pass instance uses a depth\/stencil attachment with a
---     read-only layout for the stencil aspect, both front and back
---     @writeMask@ are not zero, and stencil test is enabled,
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-stencil all stencil ops>
---     /must/ be 'Vulkan.Core10.Enums.StencilOp.STENCIL_OP_KEEP'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07831# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT' dynamic
---     state enabled then
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetViewport' /must/ have
---     been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07832# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR' dynamic
---     state enabled then
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetScissor' /must/ have been
---     called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07833# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_WIDTH' dynamic
---     state enabled then
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth' /must/ have
---     been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08617# If a shader object
---     is bound to any graphics stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
---     in the current command buffer set @polygonMode@ to
---     'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_LINE',
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth' /must/ have
---     been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08618# If a shader object
---     is bound to any graphics stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
---     in the current command buffer set @primitiveTopology@ to any line
---     topology, 'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08619# If a shader object
---     that outputs line primitives is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE',
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth' /must/ have
---     been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07834# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS' dynamic
---     state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @depthBiasEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBounds' or
---     'Vulkan.Extensions.VK_EXT_depth_bias_control.cmdSetDepthBias2EXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07835# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_BLEND_CONSTANTS'
---     dynamic state enabled then
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetBlendConstants' /must/
---     have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08621# If a shader object
---     is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     in the current command buffer set any element of
---     @pColorBlendEnables@ to 'Vulkan.Core10.FundamentalTypes.TRUE', and
---     the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     in the current command buffer set the same element of
---     @pColorBlendEquations@ to a
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.ColorBlendEquationEXT'
---     structure with any 'Vulkan.Core10.Enums.BlendFactor.BlendFactor'
---     member with a value of
---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_COLOR',
---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR',
---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_ALPHA', or
---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA',
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetBlendConstants' /must/
---     have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07836# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @depthBoundsTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBounds' /must/
---     have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07837# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_COMPARE_MASK'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilCompareMask'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07838# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_WRITE_MASK'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilWriteMask'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07839# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_REFERENCE'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of and @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilReference'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-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-vkCmdDrawMeshTasksIndirectEXT-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-vkCmdDrawMeshTasksIndirectEXT-None-07634# If the
---     @VK_EXT_sample_locations@ extension is enabled, a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-06666# If the
---     @VK_EXT_sample_locations@ extension is enabled, a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then
---     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07840# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CULL_MODE' dynamic
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetCullMode'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07841# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRONT_FACE' dynamic
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetFrontFace'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07843# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_TEST_ENABLE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE',
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthTestEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07844# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthWriteEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07845# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_COMPARE_OP'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @depthTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthCompareOp'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07846# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthBounds depthBounds>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthBoundsTestEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07847# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_TEST_ENABLE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilTestEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07848# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_OP' dynamic
---     state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilOp'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-viewportCount-03417# If a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
---     dynamic state enabled, and the state is not inherited, then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-scissorCount-03418# If a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
---     dynamic state enabled, and the state is not inherited, then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-viewportCount-03419# If a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which 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, and the state is not inherited, then 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-vkCmdDrawMeshTasksIndirectEXT-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-vkCmdDrawMeshTasksIndirectEXT-viewportCount-04138# If the
---     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which 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 state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @viewportWScalingEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.cmdSetViewportWScalingNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08636# If the
---     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which 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 state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @viewportWScalingEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', 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-vkCmdDrawMeshTasksIndirectEXT-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-vkCmdDrawMeshTasksIndirectEXT-shadingRateImage-09233# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV'
---     and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetCoarseSampleOrderNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-shadingRateImage-09234# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which 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 state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @shadingRateImageEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetViewportShadingRatePaletteNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08637# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which 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 state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @shadingRateImageEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', 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-vkCmdDrawMeshTasksIndirectEXT-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
---     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo', 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-vkCmdDrawMeshTasksIndirectEXT-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
---     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo', 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-vkCmdDrawMeshTasksIndirectEXT-None-07878# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-exclusiveScissor exclusiveScissor>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07879# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-exclusiveScissor exclusiveScissor>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV'
---     dynamic state enabled, and the most recent call to
---     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorEnableNV'
---     in the current command buffer set any element of
---     @pExclusiveScissorEnables@ to 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then
---     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-04876# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     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 and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-04877# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-logicOp-04878# If a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_EXT'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @logicOpEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetLogicOpEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-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-vkCmdDrawMeshTasksIndirectEXT-primitiveFragmentShadingRateWithMultipleViewports-08642#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
---     limit is not supported, and any shader object bound to a graphics
---     stage writes 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-vkCmdDrawMeshTasksIndirectEXT-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-vkCmdDrawMeshTasksIndirectEXT-None-08643# If a shader object
---     is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then for each color
---     attachment in the render pass, 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 corresponding member of @pColorBlendEnables@ in the most
---     recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     in the current command buffer that affected that attachment index
---     /must/ have been 'Vulkan.Core10.FundamentalTypes.FALSE'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-multisampledRenderToSingleSampled-07284#
---     If rasterization is not disabled in the bound graphics pipeline, and
---     none of the following is enabled:
---
---     -   the @VK_AMD_mixed_attachment_samples@ extension
---
---     -   the @VK_NV_framebuffer_mixed_samples@ extension
---
---     -   the
---         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---         feature
---
---     then @rasterizationSamples@ for the bound graphics pipeline /must/
---     be the same as the current subpass color and\/or depth\/stencil
---     attachments
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08644# If a shader object
---     is bound to any graphics stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and none of the following is
---     enabled:
---
---     -   the @VK_AMD_mixed_attachment_samples@ extension
---
---     -   the @VK_NV_framebuffer_mixed_samples@ extension
---
---     -   the
---         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---         feature
---
---     then the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     in the current command buffer /must/ have set @rasterizationSamples@
---     to be the same as the number of samples for the current render pass
---     color and\/or depth\/stencil attachments
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08876# If a shader object
---     is bound to any graphics stage, the current render pass instance
---     /must/ have been begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-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-vkCmdDrawMeshTasksIndirectEXT-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-vkCmdDrawMeshTasksIndirectEXT-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-vkCmdDrawMeshTasksIndirectEXT-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-vkCmdDrawMeshTasksIndirectEXT-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-vkCmdDrawMeshTasksIndirectEXT-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-vkCmdDrawMeshTasksIndirectEXT-viewMask-06178# If the current
---     render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the 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-vkCmdDrawMeshTasksIndirectEXT-colorAttachmentCount-06179# If
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled and the current render pass instance was
---     begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the 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-vkCmdDrawMeshTasksIndirectEXT-dynamicRenderingUnusedAttachments-08910#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and 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 an @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 bound graphics pipeline
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-dynamicRenderingUnusedAttachments-08912#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and 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 an @imageView@ equal to
---     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have the
---     corresponding element of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
---     used to create the bound pipeline equal to
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-dynamicRenderingUnusedAttachments-08911#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is enabled, and 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 an @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 bound graphics pipeline, or the corresponding
---     element of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@,
---     if it exists, /must/ be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-colorAttachmentCount-09362# If
---     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@
---     equal to @1@, there is no shader object bound to any graphics stage,
---     and a color attachment with a resolve mode of
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID',
---     each element of the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
---     array with a @resolveImageView@ not equal to
---     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
---     with an image created with a
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value equal to the
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value used to create the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-09363# If there is no
---     shader object bound to any graphics stage, the current render pass
---     instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     and a
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
---     equal to @1@, and a color attachment with a resolve mode of
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID',
---     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 an image created with a
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value equal to the
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value used to create the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-09364# If the current
---     render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is no shader object bound to any graphics stage, and the bound
---     graphics pipeline was created with a non-zero
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value and with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have set the blend enable to
---     'Vulkan.Core10.FundamentalTypes.FALSE' prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-09365# If the current
---     render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is no shader object bound to any graphics stage, and the bound
---     graphics pipeline was created with a non-zero
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value and with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ have set @rasterizationSamples@ to
---     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' prior
---     to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-09366# If there is a shader
---     object bound to any graphics stage, and the current render pass
---     includes a color attachment that uses the
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID'
---     resolve mode, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have set blend enable to
---     'Vulkan.Core10.FundamentalTypes.FALSE' prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-rasterizationSamples-09367# If
---     there is a shader object bound to any graphics stage, and the
---     current render pass includes a color attachment that uses the
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID'
---     resolve mode, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ have set @rasterizationSamples@ to
---     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' prior
---     to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-09368# If the current
---     render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is no shader object bound to any graphics stage, and the bound
---     graphics pipeline was created with a non-zero
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value and with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
---     /must/ have set @pFragmentSize->width@ to @1@ prior to this drawing
---     command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-09369# If the current
---     render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is no shader object bound to any graphics stage, and the bound
---     graphics pipeline was created with a non-zero
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value and with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
---     /must/ have set @pFragmentSize->height@ to @1@ prior to this drawing
---     command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-pFragmentSize-09370# If there is
---     a shader object bound to any graphics stage, and the current render
---     pass includes a color attachment that uses the
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID'
---     resolve mode, then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
---     /must/ have set @pFragmentSize->width@ to @1@ prior to this drawing
---     command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-pFragmentSize-09371# If there is
---     a shader object bound to any graphics stage, and the current render
---     pass includes a color attachment that uses the
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID'
---     resolve mode, then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
---     /must/ have set @pFragmentSize->height@ to @1@ prior to this drawing
---     command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07749# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08646# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
---     feature is enabled, and a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-attachmentCount-07750# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'
---     dynamic state enabled then the @attachmentCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
---     /must/ be greater than or equal to the
---     'Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo'::@attachmentCount@
---     of the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08647# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
---     feature is enabled, and a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then the @attachmentCount@
---     parameter of most recent call to
---     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
---     in the current command buffer /must/ be greater than or equal to the
---     number of color attachments in the current render pass instance
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07751# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command for each
---     discard rectangle in
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'::@discardRectangleCount@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07880# If the
---     @VK_EXT_discard_rectangles@ extension is enabled, a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07881# If the
---     @VK_EXT_discard_rectangles@ extension is enabled, a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @discardRectangleEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-rasterizerDiscardEnable-09236#
---     If the @VK_EXT_discard_rectangles@ extension is enabled, and a
---     shader object is bound to any graphics stage, and the most recent
---     call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEnableEXT'
---     in the current command buffer set @discardRectangleEnable@ to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-dynamicRenderingUnusedAttachments-08913#
---     If the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
---     used to create the bound graphics pipeline /must/ be equal to
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-dynamicRenderingUnusedAttachments-08914#
---     If current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->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 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->imageView@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-dynamicRenderingUnusedAttachments-08915#
---     If the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is enabled,
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
---     used to create the bound graphics pipeline was not equal to the
---     'Vulkan.Core10.Enums.Format.Format' used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@,
---     the value of the format /must/ be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-dynamicRenderingUnusedAttachments-08916#
---     If the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
---     used to create the bound graphics pipeline /must/ be equal to
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-dynamicRenderingUnusedAttachments-08917#
---     If current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->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 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->imageView@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-dynamicRenderingUnusedAttachments-08918#
---     If the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is enabled,
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
---     used to create the bound graphics pipeline was not equal to the
---     'Vulkan.Core10.Enums.Format.Format' used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@,
---     the value of the format /must/ be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-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_fragment_shading_rate.RenderingFragmentShadingRateAttachmentInfoKHR'::@imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the bound graphics
---     pipeline /must/ have been created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-imageView-06184# If the current
---     render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     and
---     'Vulkan.Extensions.VK_EXT_fragment_density_map.RenderingFragmentDensityMapAttachmentInfoEXT'::@imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the bound graphics
---     pipeline /must/ have been created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-colorAttachmentCount-06185# If
---     the bound pipeline was created with a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.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_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     used to create the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-pDepthAttachment-06186# If the
---     current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the bound pipeline was created with a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     structure, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
---     @depthStencilAttachmentSamples@ member of
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     used to create the bound graphics pipeline /must/ be equal to the
---     sample count used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-pStencilAttachment-06187# If the
---     current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the bound pipeline was created with a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     structure, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
---     @depthStencilAttachmentSamples@ member of
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     used to create the bound graphics pipeline /must/ be equal to the
---     sample count used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-multisampledRenderToSingleSampled-07285#
---     If the bound pipeline was created without a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     structure, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---     feature is not enabled, 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 @rasterizationSamples@ for
---     the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-multisampledRenderToSingleSampled-07286#
---     If the bound pipeline was created without a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     structure, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     @rasterizationSamples@ for the bound graphics pipeline /must/ be
---     equal to the sample count used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-multisampledRenderToSingleSampled-07287#
---     If the bound pipeline was created without a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     structure, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     @rasterizationSamples@ for the bound graphics pipeline /must/ be
---     equal to the sample count used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-pNext-07935# If this command has
---     been called inside a render pass instance started with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     and the @pNext@ chain of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'
---     includes a
---     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'
---     structure with @multisampledRenderToSingleSampledEnable@ equal to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the value of
---     @rasterizationSamples@ for the bound graphics pipeline /must/ be
---     equal to
---     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'::@rasterizationSamples@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-renderPass-06198# If the current
---     render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the bound pipeline /must/ have been created with a
---     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@renderPass@
---     equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-pColorAttachments-08963# If the
---     current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is a graphics pipeline bound with a fragment shader that
---     statically writes to a color attachment, the color write mask is not
---     zero, color writes are enabled, and the corresponding element of the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
---     corresponding element of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
---     used to create the pipeline /must/ not be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-pDepthAttachment-08964# If the
---     current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is a graphics pipeline bound, depth test is enabled, depth
---     write is enabled, and the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
---     used to create the pipeline /must/ not be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-pStencilAttachment-08965# If the
---     current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is a graphics pipeline bound, stencil test is enabled and the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
---     used to create the pipeline /must/ not be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-primitivesGeneratedQueryWithRasterizerDiscard-06708#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithRasterizerDiscard primitivesGeneratedQueryWithRasterizerDiscard>
---     feature is not enabled and the
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
---     query is active,
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-discard rasterization discard>
---     /must/ not be enabled
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-primitivesGeneratedQueryWithNonZeroStreams-06709#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>
---     feature is not enabled and the
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
---     query is active, the bound graphics pipeline /must/ not have been
---     created with a non-zero value in
---     'Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT'::@rasterizationStream@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07619# If a shader object
---     is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetTessellationDomainOriginEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07620# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClamp depthClamp>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClampEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07621# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_POLYGON_MODE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07622# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07623# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-alphaToCoverageEnable-08919# If
---     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT'
---     dynamic state enabled, and @alphaToCoverageEnable@ was
---     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-fragmentoutput Fragment Output Interface>
---     /must/ contain a variable for the alpha @Component@ word in
---     @Location@ 0 at @Index@ 0
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-alphaToCoverageEnable-08920# If
---     a shader object is bound to any graphics stage, and the most recent
---     call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT'
---     in the current command buffer set @alphaToCoverageEnable@ to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-fragmentoutput Fragment Output Interface>
---     /must/ contain a variable for the alpha @Component@ word in
---     @Location@ 0 at @Index@ 0
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07624# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07625# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-alphaToOne alphaToOne>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToOneEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07626# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-logicOp logicOp>
---     feature is enabled, a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLogicOpEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07627# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08657# If a shader object
---     is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and both the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE' and there are color
---     attachments bound, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07628# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08658# If a shader object
---     is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     for any attachment set that attachment’s value in
---     @pColorBlendEnables@ to 'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07629# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08659# If a shader object
---     is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and both the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE' and there are color
---     attachments bound, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07630# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryStreams geometryStreams>
---     feature is enabled, and a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_STREAM_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationStreamEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07631# If the
---     @VK_EXT_conservative_rasterization@ extension is enabled, a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetConservativeRasterizationModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07632# If the
---     @VK_EXT_conservative_rasterization@ extension is enabled, a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @conservativeRasterizationMode@ is
---     'Vulkan.Extensions.VK_EXT_conservative_rasterization.CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT',
---     then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetExtraPrimitiveOverestimationSizeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07633# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClipEnable depthClipEnable>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT'
---     dynamic state, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07635# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-rasterizerDiscardEnable-09416#
---     If the @VK_EXT_blend_operation_advanced@ extension is enabled, and a
---     shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then at least one of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     and
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07636# If the
---     @VK_EXT_provoking_vertex@ extension is enabled, a shader object is
---     bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetProvokingVertexModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07637# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08666# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object is bound to any graphics
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
---     in the current command buffer set @polygonMode@ to
---     'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_LINE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08667# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
---     in the current command buffer set @primitiveTopology@ to any line
---     topology, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08668# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object that outputs line
---     primitives is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07638# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08669# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object is bound to any graphics
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
---     in the current command buffer set @polygonMode@ to
---     'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_LINE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08670# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
---     in the current command buffer set @primitiveTopology@ to any line
---     topology, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08671# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object that outputs line
---     primitives is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07849# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled and a shader object is bound to any graphics
---     stage, or a bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_KHR'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @stippledLineEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then
---     'Vulkan.Extensions.VK_KHR_line_rasterization.cmdSetLineStippleKHR'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07639# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClipControl depthClipControl>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipNegativeOneToOneEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-09650# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClampControl depthClampControl>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @depthClampEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_depth_clamp_control.cmdSetDepthClampRangeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07640# If the
---     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportWScalingEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07641# If the
---     @VK_NV_viewport_swizzle@ extension is enabled, and a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07642# If the
---     @VK_NV_fragment_coverage_to_color@ extension is enabled, a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07643# If the
---     @VK_NV_fragment_coverage_to_color@ extension is enabled, a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @coverageToColorEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07644# If the
---     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationModeNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07645# If the
---     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @coverageModulationMode@ is any value other than
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.COVERAGE_MODULATION_MODE_NONE_NV',
---     then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07646# If the
---     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @coverageModulationTableEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07647# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetShadingRateImageEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-pipelineFragmentShadingRate-09238#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate>
---     feature is enabled, a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07648# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-representativeFragmentTest representativeFragmentTest>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRepresentativeFragmentTestEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07649# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-coverageReductionMode coverageReductionMode>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageReductionModeNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-pColorBlendEnables-07470# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---     state enabled and the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     set @pColorBlendEnables@ for any attachment to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then for those attachments in
---     the subpass 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>
---     /must/ contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-rasterizationSamples-07471# If
---     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the current subpass does not use any color
---     and\/or depth\/stencil attachments, then the @rasterizationSamples@
---     in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ follow the rules for a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-noattachments zero-attachment subpass>
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-samples-07472# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
---     state enabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state disabled, then the @samples@ parameter in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
---     /must/ be greater or equal to the
---     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
---     parameter used to create the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-samples-07473# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
---     state and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     states enabled, then the @samples@ parameter in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
---     /must/ be greater or equal to the @rasterizationSamples@ parameter
---     in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-rasterizationSamples-07474# If
---     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---     feature is not enabled, and neither the
---     @VK_AMD_mixed_attachment_samples@ nor the
---     @VK_NV_framebuffer_mixed_samples@ extensions are enabled, then the
---     @rasterizationSamples@ in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ be the same as the current subpass color and\/or
---     depth\/stencil attachments
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-09211# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, or a shader object is bound to any graphics stage,
---     and the current render pass instance includes a
---     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'
---     structure with @multisampledRenderToSingleSampledEnable@ equal to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the
---     @rasterizationSamples@ in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ be the same as the @rasterizationSamples@ member of that
---     structure
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-firstAttachment-07476# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     calls /must/ specify an enable for all active color attachments in
---     the current subpass
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-rasterizerDiscardEnable-09417#
---     If a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     calls /must/ specify an enable for all active color attachments in
---     the current subpass
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-firstAttachment-07477# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     calls /must/ specify the blend equations for all active color
---     attachments in the current subpass where blending is enabled
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-rasterizerDiscardEnable-09418#
---     If a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and both the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE' and there are color
---     attachments bound, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     calls /must/ specify the blend equations for all active color
---     attachments in the current subpass where blending is enabled
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-firstAttachment-07478# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     calls /must/ specify the color write mask for all active color
---     attachments in the current subpass
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-rasterizerDiscardEnable-09419#
---     If a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     calls /must/ specify the color write mask for all active color
---     attachments in the current subpass
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-firstAttachment-07479# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
---     calls /must/ specify the advanced blend equations for all active
---     color attachments in the current subpass where blending is enabled
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-advancedBlendMaxColorAttachments-07480#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
---     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---     dynamic states enabled and the last calls to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     and
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
---     have enabled advanced blending, then the number of active color
---     attachments in the current subpass /must/ not exceed
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-advancedBlendMaxColorAttachments advancedBlendMaxColorAttachments>
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-primitivesGeneratedQueryWithNonZeroStreams-07481#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>
---     feature is not enabled and the
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
---     query is active, and the bound graphics pipeline was created with
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_STREAM_EXT'
---     state enabled, the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationStreamEXT'
---     /must/ have set the @rasterizationStream@ to zero
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-sampleLocationsPerPixel-07482#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state enabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state disabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then the @sampleLocationsPerPixel@ member of @pSampleLocationsInfo@
---     in the last call to
---     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
---     /must/ equal the @rasterizationSamples@ member of the
---     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'
---     structure the bound graphics pipeline has been created with
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-sampleLocationsPerPixel-07483#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state enabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then the @sampleLocationsPerPixel@ member of @pSampleLocationsInfo@
---     in the last call to
---     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
---     /must/ equal the @rasterizationSamples@ parameter of the last call
---     to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-sampleLocationsEnable-07484# If
---     a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, or the bound graphics pipeline was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     state enabled, and @sampleLocationsEnable@ was
---     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
---     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-vkCmdDrawMeshTasksIndirectEXT-sampleLocationsEnable-07485# If
---     a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state enabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     state enabled, and if @sampleLocationsEnable@ was
---     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
---     then the @sampleLocationsInfo.sampleLocationGridSize.width@ in the
---     last call to
---     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
---     /must/ evenly divide
---     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@sampleLocationGridSize.width@
---     as returned by
---     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
---     with a @samples@ parameter equaling @rasterizationSamples@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-sampleLocationsEnable-07486# If
---     a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state enabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     state enabled, and if @sampleLocationsEnable@ was
---     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
---     then the @sampleLocationsInfo.sampleLocationGridSize.height@ in the
---     last call to
---     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
---     /must/ evenly divide
---     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@sampleLocationGridSize.height@
---     as returned by
---     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
---     with a @samples@ parameter equaling @rasterizationSamples@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-sampleLocationsEnable-07487# If
---     a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     state enabled, and if @sampleLocationsEnable@ was
---     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
---     the fragment shader code /must/ not statically use the extended
---     instruction @InterpolateAtSample@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-sampleLocationsEnable-07936# If
---     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state disabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then @sampleLocationsInfo.sampleLocationGridSize.width@ /must/
---     evenly divide
---     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@sampleLocationGridSize.width@
---     as returned by
---     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
---     with a @samples@ parameter equaling the value of
---     @rasterizationSamples@ in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-sampleLocationsEnable-07937# If
---     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state disabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then @sampleLocationsInfo.sampleLocationGridSize.height@ /must/
---     evenly divide
---     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@sampleLocationGridSize.height@
---     as returned by
---     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
---     with a @samples@ parameter equaling the value of
---     @rasterizationSamples@ in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-sampleLocationsEnable-07938# If
---     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state disabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then @sampleLocationsInfo.sampleLocationsPerPixel@ /must/ equal
---     @rasterizationSamples@ in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-coverageModulationTableEnable-07488#
---     If a shader object is bound to any graphics stage or the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV'
---     state enabled, and the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV'
---     set @coverageModulationTableEnable@ to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the
---     @coverageModulationTableCount@ parameter in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableNV'
---     /must/ equal the current @rasterizationSamples@ divided by the
---     number of color samples in the current subpass
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-rasterizationSamples-07489# If
---     the @VK_NV_framebuffer_mixed_samples@ extension is enabled, and if
---     current subpass has a depth\/stencil attachment and depth test,
---     stencil test, or depth bounds test are enabled in the bound
---     pipeline, then the current @rasterizationSamples@ /must/ be the same
---     as the sample count of the depth\/stencil attachment
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-coverageToColorEnable-07490# If
---     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
---     state enabled and the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
---     set the @coverageToColorEnable@ to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the current subpass
---     /must/ have a color attachment at the location selected by the last
---     call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
---     @coverageToColorLocation@, with a
---     'Vulkan.Core10.Enums.Format.Format' of
---     'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R8_SINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R16_UINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R16_SINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R32_UINT', or
---     'Vulkan.Core10.Enums.Format.FORMAT_R32_SINT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-rasterizerDiscardEnable-09420#
---     If the @VK_NV_fragment_coverage_to_color@ extension is enabled, and
---     a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
---     set the @coverageToColorEnable@ to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the current subpass
---     /must/ have a color attachment at the location selected by the last
---     call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
---     @coverageToColorLocation@, with a
---     'Vulkan.Core10.Enums.Format.Format' of
---     'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R8_SINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R16_UINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R16_SINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R32_UINT', or
---     'Vulkan.Core10.Enums.Format.FORMAT_R32_SINT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-coverageReductionMode-07491# If
---     this @VK_NV_coverage_reduction_mode@ extension is enabled, the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
---     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     states enabled, the current coverage reduction mode
---     @coverageReductionMode@, then the current @rasterizationSamples@,
---     and the sample counts for the color and depth\/stencil attachments
---     (if the subpass has them) /must/ be a valid combination returned by
---     'Vulkan.Extensions.VK_NV_coverage_reduction_mode.getPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-viewportCount-07492# 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_SWIZZLE_NV'
---     dynamic state enabled, 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-vkCmdDrawMeshTasksIndirectEXT-viewportCount-07493# 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_SWIZZLE_NV'
---     dynamic states enabled then the @viewportCount@ parameter in the
---     last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
---     /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-vkCmdDrawMeshTasksIndirectEXT-viewportCount-09421# If the
---     @VK_NV_viewport_swizzle@ extension is enabled, and a shader object
---     is bound to any graphics stage, then the @viewportCount@ parameter
---     in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
---     /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-vkCmdDrawMeshTasksIndirectEXT-rasterizationSamples-07494# If
---     the @VK_NV_framebuffer_mixed_samples@ extension is enabled, and if
---     the current subpass has any color attachments and
---     @rasterizationSamples@ of the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     is greater than the number of color samples, then the pipeline
---     @sampleShadingEnable@ /must/ be
---     'Vulkan.Core10.FundamentalTypes.FALSE'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-stippledLineEnable-07495# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---     or
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---     dynamic states enabled, and if the current @stippledLineEnable@
---     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
---     @lineRasterizationMode@ state is
---     'Vulkan.Extensions.VK_KHR_line_rasterization.LINE_RASTERIZATION_MODE_RECTANGULAR_KHR',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>
---     feature /must/ be enabled
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-stippledLineEnable-07496# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---     or
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---     dynamic states enabled, and if the current @stippledLineEnable@
---     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
---     @lineRasterizationMode@ state is
---     'Vulkan.Extensions.VK_KHR_line_rasterization.LINE_RASTERIZATION_MODE_BRESENHAM_KHR',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     feature /must/ be enabled
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-stippledLineEnable-07497# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---     or
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---     dynamic states enabled, and if the current @stippledLineEnable@
---     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
---     @lineRasterizationMode@ state is
---     'Vulkan.Extensions.VK_KHR_line_rasterization.LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     feature /must/ be enabled
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-stippledLineEnable-07498# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---     or
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---     dynamic states enabled, and if the current @stippledLineEnable@
---     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
---     @lineRasterizationMode@ state is
---     'Vulkan.Extensions.VK_KHR_line_rasterization.LINE_RASTERIZATION_MODE_DEFAULT_KHR',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>
---     feature /must/ be enabled and
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@strictLines@
---     /must/ be 'Vulkan.Core10.FundamentalTypes.TRUE'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-conservativePointAndLineRasterization-07499#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT'
---     dynamic state enabled,
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-conservativePointAndLineRasterization conservativePointAndLineRasterization>
---     is not supported, and the effective primitive topology output by the
---     last pre-rasterization shader stage is a line or point, then the
---     @conservativeRasterizationMode@ set by the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetConservativeRasterizationModeEXT'
---     /must/ be
---     'Vulkan.Extensions.VK_EXT_conservative_rasterization.CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-stage-07073# If the bound
---     pipeline was 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_VERTEX_BIT',
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT',
---     then
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-mesh-shader Mesh Shader Queries>
---     /must/ not be active
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08877# If a shader object
---     is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07850# If dynamic state was
---     inherited from
---     'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV',
---     it /must/ be set in the current command buffer prior to this drawing
---     command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08684# If there is no bound
---     graphics pipeline,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08685# If there is no bound
---     graphics pipeline, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellationShader>
---     feature is enabled,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08686# If there is no bound
---     graphics pipeline, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellationShader>
---     feature is enabled,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08687# If there is no bound
---     graphics pipeline, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometryShader>
---     feature is enabled,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08688# If there is no bound
---     graphics pipeline,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08689# If there is no bound
---     graphics pipeline, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
---     feature is enabled,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08690# If there is no bound
---     graphics pipeline, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
---     feature is enabled,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08693# If there is no bound
---     graphics pipeline, and at least one of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
---     and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
---     features is enabled, one of the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---     stages /must/ have a valid 'Vulkan.Extensions.Handles.ShaderEXT'
---     bound, and the other /must/ have no
---     'Vulkan.Extensions.Handles.ShaderEXT' bound
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08694# If there is no bound
---     graphics pipeline, and both the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
---     and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
---     features are enabled, and a valid
---     'Vulkan.Extensions.Handles.ShaderEXT' is bound the to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---     stage, and that 'Vulkan.Extensions.Handles.ShaderEXT' was created
---     without the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
---     flag, a valid 'Vulkan.Extensions.Handles.ShaderEXT' /must/ be bound
---     to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---     stage
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08695# If there is no bound
---     graphics pipeline, and both the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
---     and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
---     features are enabled, and a valid
---     'Vulkan.Extensions.Handles.ShaderEXT' is bound the to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---     stage, and that 'Vulkan.Extensions.Handles.ShaderEXT' was created
---     with the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
---     flag, there /must/ be no 'Vulkan.Extensions.Handles.ShaderEXT' bound
---     to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---     stage
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08696# If there is no bound
---     graphics pipeline, and a valid 'Vulkan.Extensions.Handles.ShaderEXT'
---     is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage, there /must/ be no 'Vulkan.Extensions.Handles.ShaderEXT'
---     bound to either the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---     stage or the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---     stage
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08698# If any graphics
---     shader is bound which was created with the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
---     flag, then all shaders created with the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
---     flag in the same
---     'Vulkan.Extensions.VK_EXT_shader_object.createShadersEXT' call
---     /must/ also be bound
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08699# If any graphics
---     shader is bound which was created with the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
---     flag, any stages in between stages whose shaders which did not
---     create a shader with the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
---     flag as part of the same
---     'Vulkan.Extensions.VK_EXT_shader_object.createShadersEXT' call
---     /must/ not have any 'Vulkan.Extensions.Handles.ShaderEXT' bound
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08878# All bound graphics
---     shader objects /must/ have been created with identical or
---     identically defined push constant ranges
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08879# All bound graphics
---     shader objects /must/ have been created with identical or
---     identically defined arrays of descriptor set layouts
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-colorAttachmentCount-09372# If
---     the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     and a
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
---     equal to @1@, a color attachment with a resolve mode of
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID',
---     and a fragment shader is bound, it /must/ not declare the
---     @DepthReplacing@ or @StencilRefReplacingEXT@ execution modes
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-pDynamicStates-08715# If the
---     bound graphics pipeline state includes a fragment shader stage, was
---     created with
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE'
---     set in
---     'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@,
---     and the fragment shader declares the @EarlyFragmentTests@ execution
---     mode and uses @OpDepthAttachmentReadEXT@, the @depthWriteEnable@
---     parameter in the last call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthWriteEnable'
---     /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-pDynamicStates-08716# If the
---     bound graphics pipeline state includes a fragment shader stage, was
---     created with
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_WRITE_MASK'
---     set in
---     'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@,
---     and the fragment shader declares the @EarlyFragmentTests@ execution
---     mode and uses @OpStencilAttachmentReadEXT@, the @writeMask@
---     parameter in the last call to
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilWriteMask' /must/
---     be @0@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-09116# If a shader object
---     is bound to any graphics stage or the bound graphics pipeline was
---     created with
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT',
---     and the format of any color attachment is
---     'Vulkan.Core10.Enums.Format.FORMAT_E5B9G9R9_UFLOAT_PACK32', the
---     corresponding element of the @pColorWriteMasks@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     /must/ either include all of
---     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_R_BIT',
---     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_G_BIT',
---     and
---     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_B_BIT',
---     or none of them
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-maxFragmentDualSrcAttachments-09239#
---     If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blending blending>
---     is enabled for any attachment where either the source or destination
---     blend factors for that attachment
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-dsb use the secondary color input>,
---     the maximum value of @Location@ for any output attachment
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-staticuse statically used>
---     in the @Fragment@ @Execution@ @Model@ executed by this command
---     /must/ be less than
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFragmentDualSrcAttachments maxFragmentDualSrcAttachments>
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-09548# If the current
---     render pass was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     and there is no shader object bound to any graphics stage, the value
---     of each element of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingAttachmentLocationInfoKHR'::@pColorAttachmentLocations@
---     set by
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.cmdSetRenderingAttachmentLocationsKHR'
---     /must/ match the value set for the corresponding element in the
---     bound pipeline
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-09549# If the current
---     render pass was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     and there is no shader object bound to any graphics stage, input
---     attachment index mappings in the bound pipeline /must/ match those
---     set for the current render pass instance via
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-09642# If the current
---     render pass was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     with the
---     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT'
---     flag, the bound graphics pipeline /must/ have been created with
---     'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-09643# If the bound
---     graphics pipeline was created with
---     'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT',
---     the current render pass /must/ have begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     with the
---     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT'
---     flag
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-stage-06480# The bound graphics
---     pipeline /must/ not have been created with the
---     'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo'::@stage@
---     member of any element of
---     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@pStages@ set
---     to
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07074#
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-transform-feedback Transform Feedback Queries>
---     /must/ not be active
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07075#
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-primitives-generated Primitives Generated Queries>
---     /must/ not be active
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-pipelineStatistics-07076# The
---     @pipelineStatistics@ member used to create any active
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-pipestats Pipeline Statistics Query>
---     /must/ not contain
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT',
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT',
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT',
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT',
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT',
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT',
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT',
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT',
---     or
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-buffer-02708# If @buffer@ is
---     non-sparse then it /must/ be bound completely and contiguously to a
---     single 'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-buffer-02709# @buffer@ /must/
---     have been created with the
---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'
---     bit set
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-offset-02710# @offset@ /must/ be
---     a multiple of @4@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-commandBuffer-02711#
---     @commandBuffer@ /must/ not be a protected command buffer
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-drawCount-02718# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiDrawIndirect multiDrawIndirect>
---     feature is not enabled, @drawCount@ /must/ be @0@ or @1@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-drawCount-02719# @drawCount@
---     /must/ be less than or equal to
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxDrawIndirectCount@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-drawCount-07088# If @drawCount@
---     is greater than @1@, @stride@ /must/ be a multiple of @4@ and /must/
---     be greater than or equal to
---     @sizeof@('DrawMeshTasksIndirectCommandEXT')
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-drawCount-07089# If @drawCount@
---     is equal to @1@, (@offset@ +
---     @sizeof@('DrawMeshTasksIndirectCommandEXT')) /must/ be less than or
---     equal to the size of @buffer@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-drawCount-07090# If @drawCount@
---     is greater than @1@, (@stride@ × (@drawCount@ - 1) + @offset@ +
---     @sizeof@('DrawMeshTasksIndirectCommandEXT')) /must/ be less than or
---     equal to the size of @buffer@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-MeshEXT-07091# The current
---     pipeline bound to
---     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
---     /must/ contain a shader stage using the @MeshEXT@ @Execution@
---     @Model@
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-buffer-parameter# @buffer@
---     /must/ be a valid 'Vulkan.Core10.Handles.Buffer' handle
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-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-vkCmdDrawMeshTasksIndirectEXT-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-renderpass# This command /must/
---     only be called inside of a render pass instance
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-videocoding# This command /must/
---     only be called outside of a video coding scope
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-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#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
--- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Inside                                                                                                                 | Outside                                                                                                                     | Graphics                                                                                                              | Action                                                                                                                                 |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_mesh_shader VK_EXT_mesh_shader>,
--- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.FundamentalTypes.DeviceSize'
-cmdDrawMeshTasksIndirectEXT :: 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 ()
-cmdDrawMeshTasksIndirectEXT commandBuffer
-                              buffer
-                              offset
-                              drawCount
-                              stride = liftIO $ do
-  let vkCmdDrawMeshTasksIndirectEXTPtr = pVkCmdDrawMeshTasksIndirectEXT (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  unless (vkCmdDrawMeshTasksIndirectEXTPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdDrawMeshTasksIndirectEXT is null" Nothing Nothing
-  let vkCmdDrawMeshTasksIndirectEXT' = mkVkCmdDrawMeshTasksIndirectEXT vkCmdDrawMeshTasksIndirectEXTPtr
-  traceAroundEvent "vkCmdDrawMeshTasksIndirectEXT" (vkCmdDrawMeshTasksIndirectEXT'
-                                                      (commandBufferHandle (commandBuffer))
-                                                      (buffer)
-                                                      (offset)
-                                                      (drawCount)
-                                                      (stride))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdDrawMeshTasksIndirectCountEXT
-  :: FunPtr (Ptr CommandBuffer_T -> Buffer -> DeviceSize -> Buffer -> DeviceSize -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> DeviceSize -> Buffer -> DeviceSize -> Word32 -> Word32 -> IO ()
-
--- | vkCmdDrawMeshTasksIndirectCountEXT - Perform an indirect mesh tasks draw
--- with the draw count sourced from a buffer
---
--- = Description
---
--- 'cmdDrawMeshTasksIndirectCountEXT' behaves similarly to
--- 'cmdDrawMeshTasksIndirectEXT' except that the draw count is read by the
--- device from a buffer during execution. The command will read an unsigned
--- 32-bit integer from @countBuffer@ located at @countBufferOffset@ and use
--- this as the draw count.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-magFilter-04553# If a
---     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
---     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR',
---     @reductionMode@ equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
---     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-vkCmdDrawMeshTasksIndirectCountEXT-magFilter-09598# If a
---     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
---     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR' and
---     @reductionMode@ equal to either
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
---     or
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
---     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_MINMAX_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-mipmapMode-04770# If a
---     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
---     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR',
---     @reductionMode@ equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
---     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-vkCmdDrawMeshTasksIndirectCountEXT-mipmapMode-09599# If a
---     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
---     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'
---     and @reductionMode@ equal to either
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
---     or
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
---     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_MINMAX_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-unnormalizedCoordinates-09635#
---     If a 'Vulkan.Core10.Handles.Sampler' created with
---     @unnormalizedCoordinates@ equal to
---     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
---     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
---     the image view’s @levelCount@ and @layerCount@ /must/ be 1
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-unnormalizedCoordinates-09636#
---     If a 'Vulkan.Core10.Handles.Sampler' created with
---     @unnormalizedCoordinates@ equal to
---     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
---     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
---     the image view’s @viewType@ /must/ be
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D' or
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-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-vkCmdDrawMeshTasksIndirectCountEXT-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-vkCmdDrawMeshTasksIndirectCountEXT-None-07888# If a
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'
---     descriptor is accessed using atomic operations as a result of this
---     command, then the storage texel buffer’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-buffer-view-format-features format features>
---     /must/ contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-02692# If a
---     'Vulkan.Core10.Handles.ImageView' is sampled with
---     'Vulkan.Core10.Enums.Filter.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.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-02693# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_filter_cubic VK_EXT_filter_cubic>
---     extension is not enabled and any 'Vulkan.Core10.Handles.ImageView'
---     is sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as a
---     result of this command, it /must/ not have a
---     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' of
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE', or
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-filterCubic-02694# Any
---     'Vulkan.Core10.Handles.ImageView' being sampled with
---     'Vulkan.Core10.Enums.Filter.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-vkCmdDrawMeshTasksIndirectCountEXT-filterCubicMinmax-02695#
---     Any 'Vulkan.Core10.Handles.ImageView' being sampled with
---     'Vulkan.Core10.Enums.Filter.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-vkCmdDrawMeshTasksIndirectCountEXT-cubicRangeClamp-09212# If
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-cubicRangeClamp cubicRangeClamp>
---     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
---     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
---     a result of this command /must/ not have a
---     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
---     equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-reductionMode-09213# Any
---     'Vulkan.Core10.Handles.ImageView' being sampled with a
---     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
---     equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
---     as a result of this command /must/ sample with
---     'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-selectableCubicWeights-09214#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-selectableCubicWeights selectableCubicWeights>
---     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
---     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
---     a result of this command /must/ have
---     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.SamplerCubicWeightsCreateInfoQCOM'::@cubicWeights@
---     equal to
---     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-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-vkCmdDrawMeshTasksIndirectCountEXT-OpTypeImage-07027# For any
---     'Vulkan.Core10.Handles.ImageView' being written as a storage image
---     where the image format field of the @OpTypeImage@ is @Unknown@, the
---     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_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpTypeImage-07028# For any
---     'Vulkan.Core10.Handles.ImageView' being read as a storage image
---     where the image format field of the @OpTypeImage@ is @Unknown@, the
---     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_STORAGE_READ_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpTypeImage-07029# For any
---     'Vulkan.Core10.Handles.BufferView' being written as a storage texel
---     buffer where the image format field of the @OpTypeImage@ is
---     @Unknown@, the view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
---     /must/ contain
---     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpTypeImage-07030# Any
---     'Vulkan.Core10.Handles.BufferView' being read as a storage texel
---     buffer where the image format field of the @OpTypeImage@ is
---     @Unknown@ then the view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
---     /must/ contain
---     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08600# For each set
---     /n/ that is statically used by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     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' or the
---     'Vulkan.Core10.Handles.DescriptorSetLayout' array used to create the
---     current 'Vulkan.Extensions.Handles.ShaderEXT' , as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08601# For each push
---     constant that is statically used by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     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' or the
---     'Vulkan.Core10.Handles.DescriptorSetLayout' array used to create the
---     current 'Vulkan.Extensions.Handles.ShaderEXT' , as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-10068# For each array
---     of resources that is used by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     the indices used to access members of the array /must/ be less than
---     the descriptor count for the identified binding in the descriptor
---     sets used by this command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-maintenance4-08602# 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
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     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' or the
---     'Vulkan.Core10.Handles.DescriptorSetLayout' and
---     'Vulkan.Core10.PipelineLayout.PushConstantRange' arrays used to
---     create the current 'Vulkan.Extensions.Handles.ShaderEXT' , as
---     described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08114# Descriptors in
---     each bound descriptor set, specified via
---     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
---     be valid as described by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
---     if they are statically used by the 'Vulkan.Core10.Handles.Pipeline'
---     bound to the pipeline bind point used by this command and the bound
---     'Vulkan.Core10.Handles.Pipeline' was not created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08115# If the
---     descriptors used by the 'Vulkan.Core10.Handles.Pipeline' bound to
---     the pipeline bind point were specified via
---     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', the
---     bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
---     without
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08116# Descriptors in
---     bound descriptor buffers, specified via
---     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
---     /must/ be valid if they are dynamically used by the
---     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
---     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
---     was created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08604# Descriptors in
---     bound descriptor buffers, specified via
---     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
---     /must/ be valid if they are dynamically used by any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     to the pipeline bind point used by this command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08117# If the
---     descriptors used by the 'Vulkan.Core10.Handles.Pipeline' bound to
---     the pipeline bind point were specified via
---     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
---     the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
---     with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08119# If a descriptor
---     is dynamically used with a 'Vulkan.Core10.Handles.Pipeline' created
---     with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
---     the descriptor memory /must/ be resident
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08605# If a descriptor
---     is dynamically used with a 'Vulkan.Extensions.Handles.ShaderEXT'
---     created with a 'Vulkan.Core10.Handles.DescriptorSetLayout' that was
---     created with
---     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
---     the descriptor memory /must/ be resident
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08606# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject>
---     feature is not enabled, a valid pipeline /must/ be bound to the
---     pipeline bind point used by this command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08608# If a pipeline
---     is bound to the pipeline bind point used by this command, there
---     /must/ not have been any calls to dynamic state setting commands for
---     any state specified statically in the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command, since that pipeline was bound
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08609# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command or any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDrawMeshTasksIndirectCountEXT-None-08610# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command or any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDrawMeshTasksIndirectCountEXT-None-08611# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command or any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDrawMeshTasksIndirectCountEXT-None-08607# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject>
---     feature is enabled, either a valid pipeline /must/ be bound to the
---     pipeline bind point used by this command, or a valid combination of
---     valid and 'Vulkan.Core10.APIConstants.NULL_HANDLE' shader objects
---     /must/ be bound to every supported shader stage corresponding to the
---     pipeline bind point used by this command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-uniformBuffers-06935# If
---     any stage of the 'Vulkan.Core10.Handles.Pipeline' object bound to
---     the pipeline bind point used by this command accesses a uniform
---     buffer, and that stage was created without enabling either
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT'
---     or
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT'
---     for @uniformBuffers@, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, that stage /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-vkCmdDrawMeshTasksIndirectCountEXT-None-08612# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, and any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDrawMeshTasksIndirectCountEXT-storageBuffers-06936# If
---     any stage of the 'Vulkan.Core10.Handles.Pipeline' object bound to
---     the pipeline bind point used by this command accesses a storage
---     buffer, and that stage was created without enabling either
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT'
---     or
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT'
---     for @storageBuffers@, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, that stage /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-vkCmdDrawMeshTasksIndirectCountEXT-None-08613# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, and any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDrawMeshTasksIndirectCountEXT-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
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shaders>
---     /must/ not be a protected resource
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-06550# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
---     accesses a 'Vulkan.Core10.Handles.Sampler' or
---     'Vulkan.Core10.Handles.ImageView' object that enables
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,
---     that object /must/ only be used with @OpImageSample*@ or
---     @OpImageSparseSample*@ instructions
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-ConstOffset-06551# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
---     accesses a 'Vulkan.Core10.Handles.Sampler' or
---     'Vulkan.Core10.Handles.ImageView' object that enables
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,
---     that object /must/ not use the @ConstOffset@ and @Offset@ operands
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-viewType-07752# If a
---     'Vulkan.Core10.Handles.ImageView' is accessed as a result of this
---     command, then the image view’s @viewType@ /must/ match the @Dim@
---     operand of the @OpTypeImage@ as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-image-dimensions ???>
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-format-07753# If a
---     'Vulkan.Core10.Handles.ImageView' is accessed as a result of this
---     command, then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-numericformat numeric type>
---     of the image view’s @format@ and the @Sampled@ @Type@ operand of the
---     @OpTypeImage@ /must/ match
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpImageWrite-08795# If a
---     'Vulkan.Core10.Handles.ImageView' created with a format other than
---     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM_KHR' 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-vkCmdDrawMeshTasksIndirectCountEXT-OpImageWrite-08796# If a
---     'Vulkan.Core10.Handles.ImageView' created with the format
---     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM_KHR' is accessed using
---     @OpImageWrite@ as a result of this command, then the @Type@ of the
---     @Texel@ operand of that instruction /must/ have four components
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-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-vkCmdDrawMeshTasksIndirectCountEXT-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-vkCmdDrawMeshTasksIndirectCountEXT-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-vkCmdDrawMeshTasksIndirectCountEXT-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-vkCmdDrawMeshTasksIndirectCountEXT-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-vkCmdDrawMeshTasksIndirectCountEXT-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-vkCmdDrawMeshTasksIndirectCountEXT-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-vkCmdDrawMeshTasksIndirectCountEXT-OpImageWeightedSampleQCOM-06971#
---     If @OpImageWeightedSampleQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpImageWeightedSampleQCOM-06972#
---     If @OpImageWeightedSampleQCOM@ uses a
---     'Vulkan.Core10.Handles.ImageView' as a sample weight image 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpImageBoxFilterQCOM-06973#
---     If @OpImageBoxFilterQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpImageBlockMatchSSDQCOM-06974#
---     If @OpImageBlockMatchSSDQCOM@ is used to read from an
---     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpImageBlockMatchSADQCOM-06975#
---     If @OpImageBlockMatchSADQCOM@ is used to read from an
---     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpImageBlockMatchSADQCOM-06976#
---     If @OpImageBlockMatchSADQCOM@ or OpImageBlockMatchSSDQCOM is used to
---     read from a reference image as result of this command, then the
---     specified reference coordinates /must/ not fail
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpImageWeightedSampleQCOM-06977#
---     If @OpImageWeightedSampleQCOM@, @OpImageBoxFilterQCOM@,
---     @OpImageBlockMatchWindowSSDQCOM@, @OpImageBlockMatchWindowSADQCOM@,
---     @OpImageBlockMatchGatherSSDQCOM@, @OpImageBlockMatchGatherSADQCOM@,
---     @OpImageBlockMatchSSDQCOM@, or @OpImageBlockMatchSADQCOM@ uses a
---     'Vulkan.Core10.Handles.Sampler' as a result of this command, then
---     the sampler /must/ have been created with
---     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpImageWeightedSampleQCOM-06978#
---     If any command other than @OpImageWeightedSampleQCOM@,
---     @OpImageBoxFilterQCOM@, @OpImageBlockMatchWindowSSDQCOM@,
---     @OpImageBlockMatchWindowSADQCOM@, @OpImageBlockMatchGatherSSDQCOM@,
---     @OpImageBlockMatchGatherSADQCOM@, @OpImageBlockMatchSSDQCOM@, or
---     @OpImageBlockMatchSADQCOM@ uses a 'Vulkan.Core10.Handles.Sampler' as
---     a result of this command, then the sampler /must/ not have been
---     created with
---     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpImageBlockMatchWindow-09215#
---     If a @OpImageBlockMatchWindow*QCOM@ or
---     @OpImageBlockMatchGather*QCOM@ instruction is used to read from an
---     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpImageBlockMatchWindow-09216#
---     If a @OpImageBlockMatchWindow*QCOM@ or
---     @OpImageBlockMatchGather*QCOM@ instruction is used to read from an
---     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
---     the image view’s format /must/ be a single-component format
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpImageBlockMatchWindow-09217#
---     If a @OpImageBlockMatchWindow*QCOM@ or
---     @OpImageBlockMatchGather*QCOM@ read from a reference image as result
---     of this command, then the specified reference coordinates /must/ not
---     fail
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07288# Any shader
---     invocation executed by this command /must/
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-termination terminate>
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09600# If a descriptor
---     with type equal to any of
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM',
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM',
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',
---     or
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'
---     is accessed as a result of this command, the image subresource
---     identified by that descriptor /must/ be in the image layout
---     identified when the descriptor was written
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-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-vkCmdDrawMeshTasksIndirectCountEXT-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-vkCmdDrawMeshTasksIndirectCountEXT-None-07748# If any shader
---     statically accesses an input attachment, a valid descriptor /must/
---     be bound to the pipeline via a descriptor set
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpTypeImage-07468# If any
---     shader executed by this pipeline accesses an @OpTypeImage@ variable
---     with a @Dim@ operand of @SubpassData@, it /must/ be decorated with
---     an @InputAttachmentIndex@ that corresponds to a valid input
---     attachment in the current subpass
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07469# Input
---     attachment views accessed in a subpass /must/ be created with the
---     same 'Vulkan.Core10.Enums.Format.Format' as the corresponding
---     subpass definition, and be created with a
---     'Vulkan.Core10.Handles.ImageView' that is compatible with the
---     attachment referenced by the subpass\'
---     @pInputAttachments@[@InputAttachmentIndex@] in the bound
---     'Vulkan.Core10.Handles.Framebuffer' as specified by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#compatibility-inputattachment Fragment Input Attachment Compatibility>
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-pDepthInputAttachmentIndex-09595#
---     Input attachment views accessed in a dynamic render pass with a
---     @InputAttachmentIndex@ referenced by
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR',
---     or no @InputAttachmentIndex@ if
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR':@pDepthInputAttachmentIndex@
---     or
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR':@pStencilInputAttachmentIndex@
---     are @NULL@, /must/ be created with a
---     'Vulkan.Core10.Handles.ImageView' that is compatible with the
---     corresponding color, depth, or stencil attachment in
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-pDepthInputAttachmentIndex-09596#
---     Input attachment views accessed in a dynamic render pass via a
---     shader object /must/ have an @InputAttachmentIndex@ if both
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR':@pDepthInputAttachmentIndex@
---     and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR':@pStencilInputAttachmentIndex@
---     are non-@NULL@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-InputAttachmentIndex-09597#
---     If an input attachment view accessed in a dynamic render pass via a
---     shader object has an @InputAttachmentIndex@, the
---     @InputAttachmentIndex@ /must/ match an index in
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-06537# Memory backing
---     image subresources used as attachments in the current render pass
---     /must/ not be written in any way other than as an attachment by this
---     command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09000# If a color
---     attachment is written by any prior command in this subpass or by the
---     load, store, or resolve operations for this subpass, it is not in
---     the
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
---     image layout, and either:
---
---     -   the
---         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT'
---         is set on the bound pipeline or
---
---     -   the last call to
---         'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
---         included
---         'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'
---         and
---
---         -   there is no bound graphics pipeline or
---
---         -   the bound graphics pipeline was created with
---             'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
---
---     it /must/ not be accessed in any way other than as an attachment by
---     this command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09001# If a depth
---     attachment is written by any prior command in this subpass or by the
---     load, store, or resolve operations for this subpass, it is not in
---     the
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
---     image layout, and either:
---
---     -   the
---         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT'
---         is set on the bound pipeline or
---
---     -   the last call to
---         'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
---         included
---         'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT'
---         and
---
---         -   there is no bound graphics pipeline or
---
---         -   the bound graphics pipeline was created with
---             'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
---
---     it /must/ not be accessed in any way other than as an attachment by
---     this command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09002# If a stencil
---     attachment is written by any prior command in this subpass or by the
---     load, store, or resolve operations for this subpass, it is not in
---     the
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
---     image layout, and either:
---
---     -   the
---         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT'
---         is set on the bound pipeline or
---
---     -   the last call to
---         'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
---         included
---         'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
---         and
---
---         -   there is no bound graphics pipeline or
---
---         -   the bound graphics pipeline was created with
---             'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
---
---     it /must/ not be accessed in any way other than as an attachment by
---     this command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09003# If an
---     attachment is written by any prior command in this subpass or by the
---     load, store, or resolve operations for this subpass, it /must/ not
---     be accessed in any way other than as an attachment, storage image,
---     or sampled image by this command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-06539# If any
---     previously recorded command in the current subpass accessed an image
---     subresource used as an attachment in this subpass in any way other
---     than as an attachment, this command /must/ not write to that image
---     subresource as an attachment
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-06886# If the current
---     render pass instance uses a depth\/stencil attachment with a
---     read-only layout for the depth aspect,
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-depth-write depth writes>
---     /must/ be disabled
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-06887# If the current
---     render pass instance uses a depth\/stencil attachment with a
---     read-only layout for the stencil aspect, both front and back
---     @writeMask@ are not zero, and stencil test is enabled,
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-stencil all stencil ops>
---     /must/ be 'Vulkan.Core10.Enums.StencilOp.STENCIL_OP_KEEP'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07831# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT' dynamic
---     state enabled then
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetViewport' /must/ have
---     been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07832# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR' dynamic
---     state enabled then
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetScissor' /must/ have been
---     called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07833# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_WIDTH' dynamic
---     state enabled then
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth' /must/ have
---     been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08617# If a shader
---     object is bound to any graphics stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
---     in the current command buffer set @polygonMode@ to
---     'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_LINE',
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth' /must/ have
---     been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08618# If a shader
---     object is bound to any graphics stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
---     in the current command buffer set @primitiveTopology@ to any line
---     topology, 'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08619# If a shader
---     object that outputs line primitives is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE',
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth' /must/ have
---     been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07834# If a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS' dynamic
---     state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @depthBiasEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBounds' or
---     'Vulkan.Extensions.VK_EXT_depth_bias_control.cmdSetDepthBias2EXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07835# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_BLEND_CONSTANTS'
---     dynamic state enabled then
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetBlendConstants' /must/
---     have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08621# If a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     in the current command buffer set any element of
---     @pColorBlendEnables@ to 'Vulkan.Core10.FundamentalTypes.TRUE', and
---     the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     in the current command buffer set the same element of
---     @pColorBlendEquations@ to a
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.ColorBlendEquationEXT'
---     structure with any 'Vulkan.Core10.Enums.BlendFactor.BlendFactor'
---     member with a value of
---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_COLOR',
---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR',
---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_ALPHA', or
---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA',
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetBlendConstants' /must/
---     have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07836# If a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @depthBoundsTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBounds' /must/
---     have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07837# If a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_COMPARE_MASK'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilCompareMask'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07838# If a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_WRITE_MASK'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilWriteMask'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07839# If a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_REFERENCE'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of and @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilReference'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-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-vkCmdDrawMeshTasksIndirectCountEXT-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-vkCmdDrawMeshTasksIndirectCountEXT-None-07634# If the
---     @VK_EXT_sample_locations@ extension is enabled, a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-06666# If the
---     @VK_EXT_sample_locations@ extension is enabled, a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then
---     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07840# If a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CULL_MODE' dynamic
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetCullMode'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07841# If a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRONT_FACE' dynamic
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetFrontFace'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07843# If a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_TEST_ENABLE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE',
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthTestEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07844# If a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthWriteEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07845# If a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_COMPARE_OP'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @depthTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthCompareOp'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07846# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthBounds depthBounds>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthBoundsTestEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07847# If a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_TEST_ENABLE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilTestEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07848# If a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_OP' dynamic
---     state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilOp'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-viewportCount-03417# If a
---     shader object is bound to any graphics stage or a graphics pipeline
---     is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
---     dynamic state enabled, and the state is not inherited, then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-scissorCount-03418# If a
---     shader object is bound to any graphics stage or a graphics pipeline
---     is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
---     dynamic state enabled, and the state is not inherited, then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-viewportCount-03419# If a
---     shader object is bound to any graphics stage or a graphics pipeline
---     is bound which 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, and the state is not inherited, then 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-vkCmdDrawMeshTasksIndirectCountEXT-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-vkCmdDrawMeshTasksIndirectCountEXT-viewportCount-04138# If the
---     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which 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 state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @viewportWScalingEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.cmdSetViewportWScalingNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08636# If the
---     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which 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 state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @viewportWScalingEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', 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-vkCmdDrawMeshTasksIndirectCountEXT-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-vkCmdDrawMeshTasksIndirectCountEXT-shadingRateImage-09233# If
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV'
---     and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetCoarseSampleOrderNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-shadingRateImage-09234# If
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which 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 state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @shadingRateImageEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetViewportShadingRatePaletteNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08637# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which 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 state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @shadingRateImageEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', 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-vkCmdDrawMeshTasksIndirectCountEXT-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
---     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo', 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-vkCmdDrawMeshTasksIndirectCountEXT-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
---     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo', 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-vkCmdDrawMeshTasksIndirectCountEXT-None-07878# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-exclusiveScissor exclusiveScissor>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07879# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-exclusiveScissor exclusiveScissor>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV'
---     dynamic state enabled, and the most recent call to
---     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorEnableNV'
---     in the current command buffer set any element of
---     @pExclusiveScissorEnables@ to 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then
---     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-04876# If a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which 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 and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-04877# If a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-logicOp-04878# If a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_EXT'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @logicOpEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetLogicOpEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-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-vkCmdDrawMeshTasksIndirectCountEXT-primitiveFragmentShadingRateWithMultipleViewports-08642#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
---     limit is not supported, and any shader object bound to a graphics
---     stage writes 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-vkCmdDrawMeshTasksIndirectCountEXT-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-vkCmdDrawMeshTasksIndirectCountEXT-None-08643# If a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then for each color
---     attachment in the render pass, 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 corresponding member of @pColorBlendEnables@ in the most
---     recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     in the current command buffer that affected that attachment index
---     /must/ have been 'Vulkan.Core10.FundamentalTypes.FALSE'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-multisampledRenderToSingleSampled-07284#
---     If rasterization is not disabled in the bound graphics pipeline, and
---     none of the following is enabled:
---
---     -   the @VK_AMD_mixed_attachment_samples@ extension
---
---     -   the @VK_NV_framebuffer_mixed_samples@ extension
---
---     -   the
---         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---         feature
---
---     then @rasterizationSamples@ for the bound graphics pipeline /must/
---     be the same as the current subpass color and\/or depth\/stencil
---     attachments
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08644# If a shader
---     object is bound to any graphics stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and none of the following is
---     enabled:
---
---     -   the @VK_AMD_mixed_attachment_samples@ extension
---
---     -   the @VK_NV_framebuffer_mixed_samples@ extension
---
---     -   the
---         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---         feature
---
---     then the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     in the current command buffer /must/ have set @rasterizationSamples@
---     to be the same as the number of samples for the current render pass
---     color and\/or depth\/stencil attachments
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08876# If a shader
---     object is bound to any graphics stage, the current render pass
---     instance /must/ have been begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-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-vkCmdDrawMeshTasksIndirectCountEXT-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-vkCmdDrawMeshTasksIndirectCountEXT-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-vkCmdDrawMeshTasksIndirectCountEXT-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-vkCmdDrawMeshTasksIndirectCountEXT-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-vkCmdDrawMeshTasksIndirectCountEXT-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-vkCmdDrawMeshTasksIndirectCountEXT-viewMask-06178# If the
---     current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the 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-vkCmdDrawMeshTasksIndirectCountEXT-colorAttachmentCount-06179#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled and the current render pass instance was
---     begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the 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-vkCmdDrawMeshTasksIndirectCountEXT-dynamicRenderingUnusedAttachments-08910#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and 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 an @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 bound graphics pipeline
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-dynamicRenderingUnusedAttachments-08912#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and 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 an @imageView@ equal to
---     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have the
---     corresponding element of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
---     used to create the bound pipeline equal to
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-dynamicRenderingUnusedAttachments-08911#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is enabled, and 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 an @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 bound graphics pipeline, or the corresponding
---     element of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@,
---     if it exists, /must/ be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-colorAttachmentCount-09362#
---     If 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@
---     equal to @1@, there is no shader object bound to any graphics stage,
---     and a color attachment with a resolve mode of
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID',
---     each element of the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
---     array with a @resolveImageView@ not equal to
---     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
---     with an image created with a
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value equal to the
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value used to create the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09363# If there is no
---     shader object bound to any graphics stage, the current render pass
---     instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     and a
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
---     equal to @1@, and a color attachment with a resolve mode of
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID',
---     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 an image created with a
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value equal to the
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value used to create the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09364# If the current
---     render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is no shader object bound to any graphics stage, and the bound
---     graphics pipeline was created with a non-zero
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value and with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have set the blend enable to
---     'Vulkan.Core10.FundamentalTypes.FALSE' prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09365# If the current
---     render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is no shader object bound to any graphics stage, and the bound
---     graphics pipeline was created with a non-zero
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value and with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ have set @rasterizationSamples@ to
---     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' prior
---     to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09366# If there is a
---     shader object bound to any graphics stage, and the current render
---     pass includes a color attachment that uses the
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID'
---     resolve mode, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have set blend enable to
---     'Vulkan.Core10.FundamentalTypes.FALSE' prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-rasterizationSamples-09367#
---     If there is a shader object bound to any graphics stage, and the
---     current render pass includes a color attachment that uses the
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID'
---     resolve mode, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ have set @rasterizationSamples@ to
---     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' prior
---     to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09368# If the current
---     render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is no shader object bound to any graphics stage, and the bound
---     graphics pipeline was created with a non-zero
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value and with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
---     /must/ have set @pFragmentSize->width@ to @1@ prior to this drawing
---     command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09369# If the current
---     render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is no shader object bound to any graphics stage, and the bound
---     graphics pipeline was created with a non-zero
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value and with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
---     /must/ have set @pFragmentSize->height@ to @1@ prior to this drawing
---     command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-pFragmentSize-09370# If
---     there is a shader object bound to any graphics stage, and the
---     current render pass includes a color attachment that uses the
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID'
---     resolve mode, then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
---     /must/ have set @pFragmentSize->width@ to @1@ prior to this drawing
---     command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-pFragmentSize-09371# If
---     there is a shader object bound to any graphics stage, and the
---     current render pass includes a color attachment that uses the
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID'
---     resolve mode, then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
---     /must/ have set @pFragmentSize->height@ to @1@ prior to this drawing
---     command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07749# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08646# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
---     feature is enabled, and a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-attachmentCount-07750# If
---     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'
---     dynamic state enabled then the @attachmentCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
---     /must/ be greater than or equal to the
---     'Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo'::@attachmentCount@
---     of the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08647# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
---     feature is enabled, and a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then the @attachmentCount@
---     parameter of most recent call to
---     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
---     in the current command buffer /must/ be greater than or equal to the
---     number of color attachments in the current render pass instance
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07751# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command for each
---     discard rectangle in
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'::@discardRectangleCount@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07880# If the
---     @VK_EXT_discard_rectangles@ extension is enabled, a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07881# If the
---     @VK_EXT_discard_rectangles@ extension is enabled, a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @discardRectangleEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-rasterizerDiscardEnable-09236#
---     If the @VK_EXT_discard_rectangles@ extension is enabled, and a
---     shader object is bound to any graphics stage, and the most recent
---     call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEnableEXT'
---     in the current command buffer set @discardRectangleEnable@ to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-dynamicRenderingUnusedAttachments-08913#
---     If the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
---     used to create the bound graphics pipeline /must/ be equal to
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-dynamicRenderingUnusedAttachments-08914#
---     If current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->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 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->imageView@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-dynamicRenderingUnusedAttachments-08915#
---     If the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is enabled,
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
---     used to create the bound graphics pipeline was not equal to the
---     'Vulkan.Core10.Enums.Format.Format' used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@,
---     the value of the format /must/ be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-dynamicRenderingUnusedAttachments-08916#
---     If the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
---     used to create the bound graphics pipeline /must/ be equal to
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-dynamicRenderingUnusedAttachments-08917#
---     If current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->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 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->imageView@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-dynamicRenderingUnusedAttachments-08918#
---     If the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is enabled,
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
---     used to create the bound graphics pipeline was not equal to the
---     'Vulkan.Core10.Enums.Format.Format' used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@,
---     the value of the format /must/ be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-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_fragment_shading_rate.RenderingFragmentShadingRateAttachmentInfoKHR'::@imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the bound graphics
---     pipeline /must/ have been created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-imageView-06184# If the
---     current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     and
---     'Vulkan.Extensions.VK_EXT_fragment_density_map.RenderingFragmentDensityMapAttachmentInfoEXT'::@imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the bound graphics
---     pipeline /must/ have been created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-colorAttachmentCount-06185#
---     If the bound pipeline was created with a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.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_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     used to create the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-pDepthAttachment-06186# If
---     the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the bound pipeline was created with a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     structure, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
---     @depthStencilAttachmentSamples@ member of
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     used to create the bound graphics pipeline /must/ be equal to the
---     sample count used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-pStencilAttachment-06187#
---     If the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the bound pipeline was created with a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     structure, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
---     @depthStencilAttachmentSamples@ member of
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     used to create the bound graphics pipeline /must/ be equal to the
---     sample count used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-multisampledRenderToSingleSampled-07285#
---     If the bound pipeline was created without a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     structure, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---     feature is not enabled, 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 @rasterizationSamples@ for
---     the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-multisampledRenderToSingleSampled-07286#
---     If the bound pipeline was created without a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     structure, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     @rasterizationSamples@ for the bound graphics pipeline /must/ be
---     equal to the sample count used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-multisampledRenderToSingleSampled-07287#
---     If the bound pipeline was created without a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     structure, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     @rasterizationSamples@ for the bound graphics pipeline /must/ be
---     equal to the sample count used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-pNext-07935# If this
---     command has been called inside a render pass instance started with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     and the @pNext@ chain of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'
---     includes a
---     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'
---     structure with @multisampledRenderToSingleSampledEnable@ equal to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the value of
---     @rasterizationSamples@ for the bound graphics pipeline /must/ be
---     equal to
---     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'::@rasterizationSamples@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-renderPass-06198# If the
---     current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the bound pipeline /must/ have been created with a
---     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@renderPass@
---     equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-pColorAttachments-08963# If
---     the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is a graphics pipeline bound with a fragment shader that
---     statically writes to a color attachment, the color write mask is not
---     zero, color writes are enabled, and the corresponding element of the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
---     corresponding element of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
---     used to create the pipeline /must/ not be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-pDepthAttachment-08964# If
---     the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is a graphics pipeline bound, depth test is enabled, depth
---     write is enabled, and the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
---     used to create the pipeline /must/ not be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-pStencilAttachment-08965#
---     If the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is a graphics pipeline bound, stencil test is enabled and the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
---     used to create the pipeline /must/ not be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-primitivesGeneratedQueryWithRasterizerDiscard-06708#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithRasterizerDiscard primitivesGeneratedQueryWithRasterizerDiscard>
---     feature is not enabled and the
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
---     query is active,
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-discard rasterization discard>
---     /must/ not be enabled
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-primitivesGeneratedQueryWithNonZeroStreams-06709#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>
---     feature is not enabled and the
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
---     query is active, the bound graphics pipeline /must/ not have been
---     created with a non-zero value in
---     'Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT'::@rasterizationStream@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07619# If a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetTessellationDomainOriginEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07620# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClamp depthClamp>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClampEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07621# If a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_POLYGON_MODE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07622# If a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07623# If a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-alphaToCoverageEnable-08919#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT'
---     dynamic state enabled, and @alphaToCoverageEnable@ was
---     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-fragmentoutput Fragment Output Interface>
---     /must/ contain a variable for the alpha @Component@ word in
---     @Location@ 0 at @Index@ 0
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-alphaToCoverageEnable-08920#
---     If a shader object is bound to any graphics stage, and the most
---     recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT'
---     in the current command buffer set @alphaToCoverageEnable@ to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-fragmentoutput Fragment Output Interface>
---     /must/ contain a variable for the alpha @Component@ word in
---     @Location@ 0 at @Index@ 0
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07624# If a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07625# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-alphaToOne alphaToOne>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToOneEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07626# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-logicOp logicOp>
---     feature is enabled, a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLogicOpEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07627# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08657# If a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and both the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE' and there are color
---     attachments bound, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07628# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08658# If a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     for any attachment set that attachment’s value in
---     @pColorBlendEnables@ to 'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07629# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08659# If a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and both the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE' and there are color
---     attachments bound, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07630# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryStreams geometryStreams>
---     feature is enabled, and a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_STREAM_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationStreamEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07631# If the
---     @VK_EXT_conservative_rasterization@ extension is enabled, a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetConservativeRasterizationModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07632# If the
---     @VK_EXT_conservative_rasterization@ extension is enabled, a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @conservativeRasterizationMode@ is
---     'Vulkan.Extensions.VK_EXT_conservative_rasterization.CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT',
---     then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetExtraPrimitiveOverestimationSizeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07633# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClipEnable depthClipEnable>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT'
---     dynamic state, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07635# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-rasterizerDiscardEnable-09416#
---     If the @VK_EXT_blend_operation_advanced@ extension is enabled, and a
---     shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then at least one of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     and
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07636# If the
---     @VK_EXT_provoking_vertex@ extension is enabled, a shader object is
---     bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetProvokingVertexModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07637# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08666# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object is bound to any graphics
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
---     in the current command buffer set @polygonMode@ to
---     'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_LINE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08667# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
---     in the current command buffer set @primitiveTopology@ to any line
---     topology, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08668# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object that outputs line
---     primitives is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07638# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08669# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object is bound to any graphics
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
---     in the current command buffer set @polygonMode@ to
---     'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_LINE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08670# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
---     in the current command buffer set @primitiveTopology@ to any line
---     topology, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08671# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object that outputs line
---     primitives is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07849# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled and a shader object is bound to any graphics
---     stage, or a bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_KHR'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @stippledLineEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then
---     'Vulkan.Extensions.VK_KHR_line_rasterization.cmdSetLineStippleKHR'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07639# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClipControl depthClipControl>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipNegativeOneToOneEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09650# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClampControl depthClampControl>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @depthClampEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_depth_clamp_control.cmdSetDepthClampRangeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07640# If the
---     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportWScalingEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07641# If the
---     @VK_NV_viewport_swizzle@ extension is enabled, and a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07642# If the
---     @VK_NV_fragment_coverage_to_color@ extension is enabled, a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07643# If the
---     @VK_NV_fragment_coverage_to_color@ extension is enabled, a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @coverageToColorEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07644# If the
---     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationModeNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07645# If the
---     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @coverageModulationMode@ is any value other than
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.COVERAGE_MODULATION_MODE_NONE_NV',
---     then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07646# If the
---     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @coverageModulationTableEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07647# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetShadingRateImageEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-pipelineFragmentShadingRate-09238#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate>
---     feature is enabled, a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07648# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-representativeFragmentTest representativeFragmentTest>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRepresentativeFragmentTestEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07649# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-coverageReductionMode coverageReductionMode>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageReductionModeNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-pColorBlendEnables-07470#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---     state enabled and the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     set @pColorBlendEnables@ for any attachment to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then for those attachments in
---     the subpass 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>
---     /must/ contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-rasterizationSamples-07471#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the current subpass does not use any color
---     and\/or depth\/stencil attachments, then the @rasterizationSamples@
---     in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ follow the rules for a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-noattachments zero-attachment subpass>
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-samples-07472# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
---     state enabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state disabled, then the @samples@ parameter in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
---     /must/ be greater or equal to the
---     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
---     parameter used to create the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-samples-07473# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
---     state and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     states enabled, then the @samples@ parameter in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
---     /must/ be greater or equal to the @rasterizationSamples@ parameter
---     in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-rasterizationSamples-07474#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---     feature is not enabled, and neither the
---     @VK_AMD_mixed_attachment_samples@ nor the
---     @VK_NV_framebuffer_mixed_samples@ extensions are enabled, then the
---     @rasterizationSamples@ in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ be the same as the current subpass color and\/or
---     depth\/stencil attachments
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09211# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, or a shader object is bound to any graphics stage,
---     and the current render pass instance includes a
---     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'
---     structure with @multisampledRenderToSingleSampledEnable@ equal to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the
---     @rasterizationSamples@ in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ be the same as the @rasterizationSamples@ member of that
---     structure
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-firstAttachment-07476# If
---     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     calls /must/ specify an enable for all active color attachments in
---     the current subpass
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-rasterizerDiscardEnable-09417#
---     If a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     calls /must/ specify an enable for all active color attachments in
---     the current subpass
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-firstAttachment-07477# If
---     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     calls /must/ specify the blend equations for all active color
---     attachments in the current subpass where blending is enabled
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-rasterizerDiscardEnable-09418#
---     If a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and both the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE' and there are color
---     attachments bound, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     calls /must/ specify the blend equations for all active color
---     attachments in the current subpass where blending is enabled
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-firstAttachment-07478# If
---     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     calls /must/ specify the color write mask for all active color
---     attachments in the current subpass
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-rasterizerDiscardEnable-09419#
---     If a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     calls /must/ specify the color write mask for all active color
---     attachments in the current subpass
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-firstAttachment-07479# If
---     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
---     calls /must/ specify the advanced blend equations for all active
---     color attachments in the current subpass where blending is enabled
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-advancedBlendMaxColorAttachments-07480#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
---     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---     dynamic states enabled and the last calls to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     and
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
---     have enabled advanced blending, then the number of active color
---     attachments in the current subpass /must/ not exceed
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-advancedBlendMaxColorAttachments advancedBlendMaxColorAttachments>
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-primitivesGeneratedQueryWithNonZeroStreams-07481#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>
---     feature is not enabled and the
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
---     query is active, and the bound graphics pipeline was created with
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_STREAM_EXT'
---     state enabled, the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationStreamEXT'
---     /must/ have set the @rasterizationStream@ to zero
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-sampleLocationsPerPixel-07482#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state enabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state disabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then the @sampleLocationsPerPixel@ member of @pSampleLocationsInfo@
---     in the last call to
---     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
---     /must/ equal the @rasterizationSamples@ member of the
---     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'
---     structure the bound graphics pipeline has been created with
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-sampleLocationsPerPixel-07483#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state enabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then the @sampleLocationsPerPixel@ member of @pSampleLocationsInfo@
---     in the last call to
---     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
---     /must/ equal the @rasterizationSamples@ parameter of the last call
---     to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-sampleLocationsEnable-07484#
---     If a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, or the bound graphics pipeline was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     state enabled, and @sampleLocationsEnable@ was
---     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
---     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-vkCmdDrawMeshTasksIndirectCountEXT-sampleLocationsEnable-07485#
---     If a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state enabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     state enabled, and if @sampleLocationsEnable@ was
---     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
---     then the @sampleLocationsInfo.sampleLocationGridSize.width@ in the
---     last call to
---     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
---     /must/ evenly divide
---     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@sampleLocationGridSize.width@
---     as returned by
---     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
---     with a @samples@ parameter equaling @rasterizationSamples@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-sampleLocationsEnable-07486#
---     If a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state enabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     state enabled, and if @sampleLocationsEnable@ was
---     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
---     then the @sampleLocationsInfo.sampleLocationGridSize.height@ in the
---     last call to
---     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
---     /must/ evenly divide
---     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@sampleLocationGridSize.height@
---     as returned by
---     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
---     with a @samples@ parameter equaling @rasterizationSamples@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-sampleLocationsEnable-07487#
---     If a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     state enabled, and if @sampleLocationsEnable@ was
---     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
---     the fragment shader code /must/ not statically use the extended
---     instruction @InterpolateAtSample@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-sampleLocationsEnable-07936#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state disabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then @sampleLocationsInfo.sampleLocationGridSize.width@ /must/
---     evenly divide
---     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@sampleLocationGridSize.width@
---     as returned by
---     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
---     with a @samples@ parameter equaling the value of
---     @rasterizationSamples@ in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-sampleLocationsEnable-07937#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state disabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then @sampleLocationsInfo.sampleLocationGridSize.height@ /must/
---     evenly divide
---     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@sampleLocationGridSize.height@
---     as returned by
---     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
---     with a @samples@ parameter equaling the value of
---     @rasterizationSamples@ in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-sampleLocationsEnable-07938#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state disabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then @sampleLocationsInfo.sampleLocationsPerPixel@ /must/ equal
---     @rasterizationSamples@ in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-coverageModulationTableEnable-07488#
---     If a shader object is bound to any graphics stage or the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV'
---     state enabled, and the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV'
---     set @coverageModulationTableEnable@ to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the
---     @coverageModulationTableCount@ parameter in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableNV'
---     /must/ equal the current @rasterizationSamples@ divided by the
---     number of color samples in the current subpass
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-rasterizationSamples-07489#
---     If the @VK_NV_framebuffer_mixed_samples@ extension is enabled, and
---     if current subpass has a depth\/stencil attachment and depth test,
---     stencil test, or depth bounds test are enabled in the bound
---     pipeline, then the current @rasterizationSamples@ /must/ be the same
---     as the sample count of the depth\/stencil attachment
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-coverageToColorEnable-07490#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
---     state enabled and the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
---     set the @coverageToColorEnable@ to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the current subpass
---     /must/ have a color attachment at the location selected by the last
---     call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
---     @coverageToColorLocation@, with a
---     'Vulkan.Core10.Enums.Format.Format' of
---     'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R8_SINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R16_UINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R16_SINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R32_UINT', or
---     'Vulkan.Core10.Enums.Format.FORMAT_R32_SINT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-rasterizerDiscardEnable-09420#
---     If the @VK_NV_fragment_coverage_to_color@ extension is enabled, and
---     a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
---     set the @coverageToColorEnable@ to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the current subpass
---     /must/ have a color attachment at the location selected by the last
---     call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
---     @coverageToColorLocation@, with a
---     'Vulkan.Core10.Enums.Format.Format' of
---     'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R8_SINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R16_UINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R16_SINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R32_UINT', or
---     'Vulkan.Core10.Enums.Format.FORMAT_R32_SINT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-coverageReductionMode-07491#
---     If this @VK_NV_coverage_reduction_mode@ extension is enabled, the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
---     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     states enabled, the current coverage reduction mode
---     @coverageReductionMode@, then the current @rasterizationSamples@,
---     and the sample counts for the color and depth\/stencil attachments
---     (if the subpass has them) /must/ be a valid combination returned by
---     'Vulkan.Extensions.VK_NV_coverage_reduction_mode.getPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-viewportCount-07492# 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_SWIZZLE_NV'
---     dynamic state enabled, 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-vkCmdDrawMeshTasksIndirectCountEXT-viewportCount-07493# 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_SWIZZLE_NV'
---     dynamic states enabled then the @viewportCount@ parameter in the
---     last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
---     /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-vkCmdDrawMeshTasksIndirectCountEXT-viewportCount-09421# If the
---     @VK_NV_viewport_swizzle@ extension is enabled, and a shader object
---     is bound to any graphics stage, then the @viewportCount@ parameter
---     in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
---     /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-vkCmdDrawMeshTasksIndirectCountEXT-rasterizationSamples-07494#
---     If the @VK_NV_framebuffer_mixed_samples@ extension is enabled, and
---     if the current subpass has any color attachments and
---     @rasterizationSamples@ of the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     is greater than the number of color samples, then the pipeline
---     @sampleShadingEnable@ /must/ be
---     'Vulkan.Core10.FundamentalTypes.FALSE'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-stippledLineEnable-07495#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---     or
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---     dynamic states enabled, and if the current @stippledLineEnable@
---     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
---     @lineRasterizationMode@ state is
---     'Vulkan.Extensions.VK_KHR_line_rasterization.LINE_RASTERIZATION_MODE_RECTANGULAR_KHR',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>
---     feature /must/ be enabled
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-stippledLineEnable-07496#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---     or
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---     dynamic states enabled, and if the current @stippledLineEnable@
---     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
---     @lineRasterizationMode@ state is
---     'Vulkan.Extensions.VK_KHR_line_rasterization.LINE_RASTERIZATION_MODE_BRESENHAM_KHR',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     feature /must/ be enabled
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-stippledLineEnable-07497#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---     or
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---     dynamic states enabled, and if the current @stippledLineEnable@
---     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
---     @lineRasterizationMode@ state is
---     'Vulkan.Extensions.VK_KHR_line_rasterization.LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     feature /must/ be enabled
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-stippledLineEnable-07498#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---     or
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---     dynamic states enabled, and if the current @stippledLineEnable@
---     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
---     @lineRasterizationMode@ state is
---     'Vulkan.Extensions.VK_KHR_line_rasterization.LINE_RASTERIZATION_MODE_DEFAULT_KHR',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>
---     feature /must/ be enabled and
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@strictLines@
---     /must/ be 'Vulkan.Core10.FundamentalTypes.TRUE'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-conservativePointAndLineRasterization-07499#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT'
---     dynamic state enabled,
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-conservativePointAndLineRasterization conservativePointAndLineRasterization>
---     is not supported, and the effective primitive topology output by the
---     last pre-rasterization shader stage is a line or point, then the
---     @conservativeRasterizationMode@ set by the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetConservativeRasterizationModeEXT'
---     /must/ be
---     'Vulkan.Extensions.VK_EXT_conservative_rasterization.CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-stage-07073# If the bound
---     pipeline was 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_VERTEX_BIT',
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT',
---     then
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-mesh-shader Mesh Shader Queries>
---     /must/ not be active
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08877# If a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07850# If dynamic
---     state was inherited from
---     'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV',
---     it /must/ be set in the current command buffer prior to this drawing
---     command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08684# If there is no
---     bound graphics pipeline,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08685# If there is no
---     bound graphics pipeline, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellationShader>
---     feature is enabled,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08686# If there is no
---     bound graphics pipeline, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellationShader>
---     feature is enabled,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08687# If there is no
---     bound graphics pipeline, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometryShader>
---     feature is enabled,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08688# If there is no
---     bound graphics pipeline,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08689# If there is no
---     bound graphics pipeline, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
---     feature is enabled,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08690# If there is no
---     bound graphics pipeline, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
---     feature is enabled,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08693# If there is no
---     bound graphics pipeline, and at least one of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
---     and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
---     features is enabled, one of the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---     stages /must/ have a valid 'Vulkan.Extensions.Handles.ShaderEXT'
---     bound, and the other /must/ have no
---     'Vulkan.Extensions.Handles.ShaderEXT' bound
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08694# If there is no
---     bound graphics pipeline, and both the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
---     and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
---     features are enabled, and a valid
---     'Vulkan.Extensions.Handles.ShaderEXT' is bound the to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---     stage, and that 'Vulkan.Extensions.Handles.ShaderEXT' was created
---     without the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
---     flag, a valid 'Vulkan.Extensions.Handles.ShaderEXT' /must/ be bound
---     to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---     stage
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08695# If there is no
---     bound graphics pipeline, and both the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
---     and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
---     features are enabled, and a valid
---     'Vulkan.Extensions.Handles.ShaderEXT' is bound the to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---     stage, and that 'Vulkan.Extensions.Handles.ShaderEXT' was created
---     with the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
---     flag, there /must/ be no 'Vulkan.Extensions.Handles.ShaderEXT' bound
---     to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---     stage
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08696# If there is no
---     bound graphics pipeline, and a valid
---     'Vulkan.Extensions.Handles.ShaderEXT' is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage, there /must/ be no 'Vulkan.Extensions.Handles.ShaderEXT'
---     bound to either the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---     stage or the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---     stage
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08698# If any graphics
---     shader is bound which was created with the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
---     flag, then all shaders created with the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
---     flag in the same
---     'Vulkan.Extensions.VK_EXT_shader_object.createShadersEXT' call
---     /must/ also be bound
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08699# If any graphics
---     shader is bound which was created with the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
---     flag, any stages in between stages whose shaders which did not
---     create a shader with the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
---     flag as part of the same
---     'Vulkan.Extensions.VK_EXT_shader_object.createShadersEXT' call
---     /must/ not have any 'Vulkan.Extensions.Handles.ShaderEXT' bound
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08878# All bound
---     graphics shader objects /must/ have been created with identical or
---     identically defined push constant ranges
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08879# All bound
---     graphics shader objects /must/ have been created with identical or
---     identically defined arrays of descriptor set layouts
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-colorAttachmentCount-09372#
---     If the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     and a
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
---     equal to @1@, a color attachment with a resolve mode of
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID',
---     and a fragment shader is bound, it /must/ not declare the
---     @DepthReplacing@ or @StencilRefReplacingEXT@ execution modes
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-pDynamicStates-08715# If
---     the bound graphics pipeline state includes a fragment shader stage,
---     was created with
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE'
---     set in
---     'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@,
---     and the fragment shader declares the @EarlyFragmentTests@ execution
---     mode and uses @OpDepthAttachmentReadEXT@, the @depthWriteEnable@
---     parameter in the last call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthWriteEnable'
---     /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-pDynamicStates-08716# If
---     the bound graphics pipeline state includes a fragment shader stage,
---     was created with
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_WRITE_MASK'
---     set in
---     'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@,
---     and the fragment shader declares the @EarlyFragmentTests@ execution
---     mode and uses @OpStencilAttachmentReadEXT@, the @writeMask@
---     parameter in the last call to
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilWriteMask' /must/
---     be @0@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09116# If a shader
---     object is bound to any graphics stage or the bound graphics pipeline
---     was created with
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT',
---     and the format of any color attachment is
---     'Vulkan.Core10.Enums.Format.FORMAT_E5B9G9R9_UFLOAT_PACK32', the
---     corresponding element of the @pColorWriteMasks@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     /must/ either include all of
---     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_R_BIT',
---     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_G_BIT',
---     and
---     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_B_BIT',
---     or none of them
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-maxFragmentDualSrcAttachments-09239#
---     If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blending blending>
---     is enabled for any attachment where either the source or destination
---     blend factors for that attachment
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-dsb use the secondary color input>,
---     the maximum value of @Location@ for any output attachment
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-staticuse statically used>
---     in the @Fragment@ @Execution@ @Model@ executed by this command
---     /must/ be less than
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFragmentDualSrcAttachments maxFragmentDualSrcAttachments>
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09548# If the current
---     render pass was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     and there is no shader object bound to any graphics stage, the value
---     of each element of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingAttachmentLocationInfoKHR'::@pColorAttachmentLocations@
---     set by
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.cmdSetRenderingAttachmentLocationsKHR'
---     /must/ match the value set for the corresponding element in the
---     bound pipeline
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09549# If the current
---     render pass was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     and there is no shader object bound to any graphics stage, input
---     attachment index mappings in the bound pipeline /must/ match those
---     set for the current render pass instance via
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09642# If the current
---     render pass was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     with the
---     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT'
---     flag, the bound graphics pipeline /must/ have been created with
---     'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09643# If the bound
---     graphics pipeline was created with
---     'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT',
---     the current render pass /must/ have begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     with the
---     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT'
---     flag
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-stage-06480# The bound
---     graphics pipeline /must/ not have been created with the
---     'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo'::@stage@
---     member of any element of
---     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@pStages@ set
---     to
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07074#
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-transform-feedback Transform Feedback Queries>
---     /must/ not be active
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07075#
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-primitives-generated Primitives Generated Queries>
---     /must/ not be active
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-pipelineStatistics-07076#
---     The @pipelineStatistics@ member used to create any active
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-pipestats Pipeline Statistics Query>
---     /must/ not contain
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT',
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT',
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT',
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT',
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT',
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT',
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT',
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT',
---     or
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-buffer-02708# If @buffer@
---     is non-sparse then it /must/ be bound completely and contiguously to
---     a single 'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-buffer-02709# @buffer@
---     /must/ have been created with the
---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'
---     bit set
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-offset-02710# @offset@
---     /must/ be a multiple of @4@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-commandBuffer-02711#
---     @commandBuffer@ /must/ not be a protected command buffer
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-countBuffer-02714# If
---     @countBuffer@ is non-sparse then it /must/ be bound completely and
---     contiguously to a single 'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-countBuffer-02715#
---     @countBuffer@ /must/ have been created with the
---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'
---     bit set
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-countBufferOffset-02716#
---     @countBufferOffset@ /must/ be a multiple of @4@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-countBuffer-02717# The
---     count stored in @countBuffer@ /must/ be less than or equal to
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxDrawIndirectCount@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-countBufferOffset-04129#
---     (@countBufferOffset@ + @sizeof@(uint32_t)) /must/ be less than or
---     equal to the size of @countBuffer@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-04445# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-drawIndirectCount drawIndirectCount>
---     feature is not enabled this function /must/ not be used
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-stride-07096# @stride@
---     /must/ be a multiple of @4@ and /must/ be greater than or equal to
---     @sizeof@('DrawMeshTasksIndirectCommandEXT')
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-maxDrawCount-07097# If
---     @maxDrawCount@ is greater than or equal to @1@, (@stride@ ×
---     (@maxDrawCount@ - 1) + @offset@ +
---     @sizeof@('DrawMeshTasksIndirectCommandEXT')) /must/ be less than or
---     equal to the size of @buffer@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-MeshEXT-07100# The current
---     pipeline bound to
---     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
---     /must/ contain a shader stage using the @MeshEXT@ @Execution@
---     @Model@
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-buffer-parameter# @buffer@
---     /must/ be a valid 'Vulkan.Core10.Handles.Buffer' handle
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-countBuffer-parameter#
---     @countBuffer@ /must/ be a valid 'Vulkan.Core10.Handles.Buffer'
---     handle
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-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-vkCmdDrawMeshTasksIndirectCountEXT-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-renderpass# This command
---     /must/ only be called inside of a render pass instance
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-videocoding# This command
---     /must/ only be called outside of a video coding scope
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-commonparent# Each of
---     @buffer@, @commandBuffer@, and @countBuffer@ /must/ have been
---     created, allocated, or retrieved from the same
---     'Vulkan.Core10.Handles.Device'
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
--- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Inside                                                                                                                 | Outside                                                                                                                     | Graphics                                                                                                              | Action                                                                                                                                 |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_mesh_shader VK_EXT_mesh_shader>,
--- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.FundamentalTypes.DeviceSize'
-cmdDrawMeshTasksIndirectCountEXT :: 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)
-                                 -> -- | @countBuffer@ is the buffer containing the draw count.
-                                    ("countBuffer" ::: Buffer)
-                                 -> -- | @countBufferOffset@ is the byte offset into @countBuffer@ where the draw
-                                    -- count begins.
-                                    ("countBufferOffset" ::: DeviceSize)
-                                 -> -- | @maxDrawCount@ specifies the maximum number of draws that will be
-                                    -- executed. The actual number of executed draw calls is the minimum of the
-                                    -- count specified in @countBuffer@ and @maxDrawCount@.
-                                    ("maxDrawCount" ::: Word32)
-                                 -> -- | @stride@ is the byte stride between successive sets of draw parameters.
-                                    ("stride" ::: Word32)
-                                 -> io ()
-cmdDrawMeshTasksIndirectCountEXT commandBuffer
-                                   buffer
-                                   offset
-                                   countBuffer
-                                   countBufferOffset
-                                   maxDrawCount
-                                   stride = liftIO $ do
-  let vkCmdDrawMeshTasksIndirectCountEXTPtr = pVkCmdDrawMeshTasksIndirectCountEXT (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  unless (vkCmdDrawMeshTasksIndirectCountEXTPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdDrawMeshTasksIndirectCountEXT is null" Nothing Nothing
-  let vkCmdDrawMeshTasksIndirectCountEXT' = mkVkCmdDrawMeshTasksIndirectCountEXT vkCmdDrawMeshTasksIndirectCountEXTPtr
-  traceAroundEvent "vkCmdDrawMeshTasksIndirectCountEXT" (vkCmdDrawMeshTasksIndirectCountEXT'
-                                                           (commandBufferHandle (commandBuffer))
-                                                           (buffer)
-                                                           (offset)
-                                                           (countBuffer)
-                                                           (countBufferOffset)
-                                                           (maxDrawCount)
-                                                           (stride))
-  pure $ ()
-
-
--- | VkPhysicalDeviceMeshShaderFeaturesEXT - Structure describing mesh
--- shading features that can be supported by an implementation
---
--- = Description
---
--- If the 'PhysicalDeviceMeshShaderFeaturesEXT' 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. 'PhysicalDeviceMeshShaderFeaturesEXT' /can/ also be used in
--- the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
---
--- The corresponding features of the
--- 'Vulkan.Extensions.VK_NV_mesh_shader.PhysicalDeviceMeshShaderFeaturesNV'
--- structure /must/ match those in 'PhysicalDeviceMeshShaderFeaturesEXT'.
---
--- == Valid Usage
---
--- -   #VUID-VkPhysicalDeviceMeshShaderFeaturesEXT-multiviewMeshShader-07032#
---     If @multiviewMeshShader@ is enabled then
---     'Vulkan.Extensions.VK_KHR_multiview.PhysicalDeviceMultiviewFeaturesKHR'::@multiview@
---     /must/ also be enabled
---
--- -   #VUID-VkPhysicalDeviceMeshShaderFeaturesEXT-primitiveFragmentShadingRateMeshShader-07033#
---     If @primitiveFragmentShadingRateMeshShader@ is enabled then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PhysicalDeviceFragmentShadingRateFeaturesKHR'::@primitiveFragmentShadingRate@
---     /must/ also be enabled
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkPhysicalDeviceMeshShaderFeaturesEXT-sType-sType# @sType@
---     /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT'
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_mesh_shader VK_EXT_mesh_shader>,
--- 'Vulkan.Core10.FundamentalTypes.Bool32',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PhysicalDeviceMeshShaderFeaturesEXT = PhysicalDeviceMeshShaderFeaturesEXT
-  { -- | #features-taskShader# @taskShader@ specifies whether task shaders are
-    -- supported. If this feature is not enabled, the
-    -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT' and
-    -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_EXT'
-    -- enum values /must/ not be used.
-    taskShader :: Bool
-  , -- | #features-meshShader# @meshShader@ specifies whether mesh shaders are
-    -- supported. If this feature is not enabled, the
-    -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT' and
-    -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_EXT'
-    -- enum values /must/ not be used.
-    meshShader :: Bool
-  , -- | #features-multiviewMeshShader# @multiviewMeshShader@ specifies whether
-    -- the implementation supports
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-multiview multiview>
-    -- rendering within a render pass, with mesh shaders. If this feature is
-    -- not enabled, then a pipeline compiled against a subpass with a non-zero
-    -- view mask /must/ not include a mesh shader.
-    multiviewMeshShader :: Bool
-  , -- | #features-primitiveFragmentShadingRateMeshShader#
-    -- @primitiveFragmentShadingRateMeshShader@ indicates that the
-    -- implementation supports the
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-primitive primitive fragment shading rate>
-    -- in mesh shaders.
-    primitiveFragmentShadingRateMeshShader :: Bool
-  , -- | #features-meshShaderQueries# @meshShaderQueries@ indicates that the
-    -- implementation supports creating query pools using the
-    -- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_MESH_PRIMITIVES_GENERATED_EXT'
-    -- query type and statistic queries containing the
-    -- 'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_TASK_SHADER_INVOCATIONS_BIT_EXT'
-    -- and
-    -- 'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_MESH_SHADER_INVOCATIONS_BIT_EXT'
-    -- flags
-    meshShaderQueries :: Bool
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PhysicalDeviceMeshShaderFeaturesEXT)
-#endif
-deriving instance Show PhysicalDeviceMeshShaderFeaturesEXT
-
-instance ToCStruct PhysicalDeviceMeshShaderFeaturesEXT where
-  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PhysicalDeviceMeshShaderFeaturesEXT{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (taskShader))
-    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (meshShader))
-    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (multiviewMeshShader))
-    poke ((p `plusPtr` 28 :: Ptr Bool32)) (boolToBool32 (primitiveFragmentShadingRateMeshShader))
-    poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (meshShaderQueries))
-    f
-  cStructSize = 40
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
-    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))
-    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (zero))
-    poke ((p `plusPtr` 28 :: Ptr Bool32)) (boolToBool32 (zero))
-    poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (zero))
-    f
-
-instance FromCStruct PhysicalDeviceMeshShaderFeaturesEXT where
-  peekCStruct p = do
-    taskShader <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
-    meshShader <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
-    multiviewMeshShader <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))
-    primitiveFragmentShadingRateMeshShader <- peek @Bool32 ((p `plusPtr` 28 :: Ptr Bool32))
-    meshShaderQueries <- peek @Bool32 ((p `plusPtr` 32 :: Ptr Bool32))
-    pure $ PhysicalDeviceMeshShaderFeaturesEXT
-             (bool32ToBool taskShader)
-             (bool32ToBool meshShader)
-             (bool32ToBool multiviewMeshShader)
-             (bool32ToBool primitiveFragmentShadingRateMeshShader)
-             (bool32ToBool meshShaderQueries)
-
-instance Storable PhysicalDeviceMeshShaderFeaturesEXT where
-  sizeOf ~_ = 40
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero PhysicalDeviceMeshShaderFeaturesEXT where
-  zero = PhysicalDeviceMeshShaderFeaturesEXT
-           zero
-           zero
-           zero
-           zero
-           zero
-
-
--- | VkPhysicalDeviceMeshShaderPropertiesEXT - Structure describing mesh
--- shading properties
---
--- = Members
---
--- The members of the 'PhysicalDeviceMeshShaderPropertiesEXT' structure
--- describe the following implementation-dependent limits:
---
--- = Description
---
--- If the 'PhysicalDeviceMeshShaderPropertiesEXT' structure is included in
--- the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',
--- it is filled with the implementation-dependent limits.
---
--- == Valid Usage (Implicit)
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_mesh_shader VK_EXT_mesh_shader>,
--- 'Vulkan.Core10.FundamentalTypes.Bool32',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PhysicalDeviceMeshShaderPropertiesEXT = PhysicalDeviceMeshShaderPropertiesEXT
-  { -- | #limits-maxTaskWorkGroupTotalCount# @maxTaskWorkGroupTotalCount@ is the
-    -- maximum number of total local workgroups that /can/ be launched by a
-    -- single mesh tasks drawing command. See
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#drawing-mesh-shading>.
-    maxTaskWorkGroupTotalCount :: Word32
-  , -- | #limits-maxTaskWorkGroupCount# @maxTaskWorkGroupCount@[3] is the maximum
-    -- number of local workgroups that /can/ be launched by a single mesh tasks
-    -- drawing command. These three values represent the maximum number of
-    -- local workgroups for the X, Y, and Z dimensions, respectively. The
-    -- workgroup count parameters to the drawing commands /must/ be less than
-    -- or equal to the corresponding limit. The product of these dimensions
-    -- /must/ be less than or equal to @maxTaskWorkGroupTotalCount@.
-    maxTaskWorkGroupCount :: (Word32, Word32, Word32)
-  , -- | #limits-maxTaskWorkGroupInvocations# @maxTaskWorkGroupInvocations@ is
-    -- the maximum total number of task shader invocations in a single local
-    -- workgroup. The product of the X, Y, and Z sizes, as specified by the
-    -- @LocalSize@ or @LocalSizeId@ execution mode in shader modules or by the
-    -- object decorated by the @WorkgroupSize@ decoration, /must/ be less than
-    -- or equal to this limit.
-    maxTaskWorkGroupInvocations :: Word32
-  , -- | #limits-maxTaskWorkGroupSize# @maxTaskWorkGroupSize@[3] is the maximum
-    -- size of a local task workgroup, per dimension. These three values
-    -- represent the maximum local workgroup size in the X, Y, and Z
-    -- dimensions, respectively. The @x@, @y@, and @z@ sizes, as specified by
-    -- the @LocalSize@ or @LocalSizeId@ execution mode or by the object
-    -- decorated by the @WorkgroupSize@ decoration in shader modules, /must/ be
-    -- less than or equal to the corresponding limit.
-    maxTaskWorkGroupSize :: (Word32, Word32, Word32)
-  , -- | #limits-maxTaskPayloadSize# @maxTaskPayloadSize@ is the maximum total
-    -- storage size, in bytes, available for variables declared with the
-    -- @TaskPayloadWorkgroupEXT@ storage class in shader modules in the task
-    -- shader stage.
-    maxTaskPayloadSize :: Word32
-  , -- | #limits-maxTaskSharedMemorySize# @maxTaskSharedMemorySize@ is the
-    -- maximum total storage size, in bytes, available for variables declared
-    -- with the @Workgroup@ storage class in shader modules in the task shader
-    -- stage.
-    maxTaskSharedMemorySize :: Word32
-  , -- | #limits-maxTaskPayloadAndSharedMemorySize#
-    -- @maxTaskPayloadAndSharedMemorySize@ is the maximum total storage size,
-    -- in bytes, available for variables that are declared with the
-    -- @TaskPayloadWorkgroupEXT@ or @Workgroup@ storage class, in shader
-    -- modules in the task shader stage.
-    maxTaskPayloadAndSharedMemorySize :: Word32
-  , -- | #limits-maxMeshWorkGroupTotalCount# @maxMeshWorkGroupTotalCount@ is the
-    -- maximum number of local output tasks a single task shader workgroup can
-    -- emit.
-    maxMeshWorkGroupTotalCount :: Word32
-  , -- | #limits-maxMeshWorkGroupCount# @maxMeshWorkGroupCount@[3] is the maximum
-    -- number of local output tasks a single task shader workgroup can emit,
-    -- per dimension. These three values represent the maximum number of local
-    -- output tasks for the X, Y, and Z dimensions, respectively. The workgroup
-    -- count parameters to the @OpEmitMeshTasksEXT@ /must/ be less than or
-    -- equal to the corresponding limit. The product of these dimensions /must/
-    -- be less than or equal to @maxMeshWorkGroupTotalCount@.
-    maxMeshWorkGroupCount :: (Word32, Word32, Word32)
-  , -- | #limits-maxMeshWorkGroupInvocations# @maxMeshWorkGroupInvocations@ is
-    -- the maximum total number of mesh shader invocations in a single local
-    -- workgroup. The product of the X, Y, and Z sizes, as specified by the
-    -- @LocalSize@ or @LocalSizeId@ execution mode in shader modules or by the
-    -- object decorated by the @WorkgroupSize@ decoration, /must/ be less than
-    -- or equal to this limit.
-    maxMeshWorkGroupInvocations :: Word32
-  , -- | #limits-maxMeshWorkGroupSize# @maxMeshWorkGroupSize@[3] is the maximum
-    -- size of a local mesh workgroup, per dimension. These three values
-    -- represent the maximum local workgroup size in the X, Y, and Z
-    -- dimensions, respectively. The @x@, @y@, and @z@ sizes, as specified by
-    -- the @LocalSize@ or @LocalSizeId@ execution mode or by the object
-    -- decorated by the @WorkgroupSize@ decoration in shader modules, /must/ be
-    -- less than or equal to the corresponding limit.
-    maxMeshWorkGroupSize :: (Word32, Word32, Word32)
-  , -- | #limits-maxMeshSharedMemorySize# @maxMeshSharedMemorySize@ is the
-    -- maximum total storage size, in bytes, available for variables declared
-    -- with the @Workgroup@ storage class in shader modules in the mesh shader
-    -- stage.
-    maxMeshSharedMemorySize :: Word32
-  , -- | #limits-maxMeshPayloadAndSharedMemorySize#
-    -- @maxMeshPayloadAndSharedMemorySize@ is the maximum total storage size,
-    -- in bytes, available for variables that are declared with the
-    -- @TaskPayloadWorkgroupEXT@ or @Workgroup@ storage class in shader modules
-    -- in the mesh shader stage.
-    maxMeshPayloadAndSharedMemorySize :: Word32
-  , -- | #limits-maxMeshOutputMemorySize# @maxMeshOutputMemorySize@ is the
-    -- maximum total storage size, in bytes, available for output variables in
-    -- shader modules in the mesh shader stage, according to the formula in
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#mesh-output Mesh Shader Output>.
-    maxMeshOutputMemorySize :: Word32
-  , -- | #limits-maxMeshPayloadAndOutputMemorySize#
-    -- @maxMeshPayloadAndOutputMemorySize@ is the maximum total storage size,
-    -- in bytes, available for variables that are declared with the
-    -- @TaskPayloadWorkgroupEXT@ storage class, or output variables in shader
-    -- modules in the mesh shader stage, according to the formula in
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#mesh-output Mesh Shader Output>.
+--     Ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_spirv_1_4 VK_KHR_spirv_1_4>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.2 Vulkan Version 1.2>
+--
+-- [__API Interactions__]
+--
+--     -   Interacts with VK_VERSION_1_2
+--
+--     -   Interacts with VK_AMD_draw_indirect_count
+--
+--     -   Interacts with VK_EXT_device_generated_commands
+--
+--     -   Interacts with VK_KHR_draw_indirect_count
+--
+--     -   Interacts with VK_KHR_fragment_shading_rate
+--
+--     -   Interacts with VK_NV_device_generated_commands
+--
+--     -   Interacts with
+--         VkPhysicalDeviceMeshShaderFeaturesEXT::primitiveFragmentShadingRateMeshShader
+--
+-- [__SPIR-V Dependencies__]
+--
+--     -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/EXT/SPV_EXT_mesh_shader.html SPV_EXT_mesh_shader>
+--
+-- [__Contact__]
+--
+--     -   Christoph Kubisch
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_mesh_shader] @pixeljetstream%0A*Here describe the issue or question you have about the VK_EXT_mesh_shader extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_EXT_mesh_shader.adoc VK_EXT_mesh_shader>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2022-01-20
+--
+-- [__Interactions and External Dependencies__]
+--
+--     -   This extension provides API support for
+--         <https://github.com/KhronosGroup/GLSL/blob/main/extensions/ext/GLSL_EXT_mesh_shader.txt GLSL_EXT_mesh_shader>
+--
+--     -   Interacts with Vulkan 1.1
+--
+--     -   Interacts with @VK_KHR_multiview@
+--
+--     -   Interacts with @VK_KHR_fragment_shading_rate@
+--
+-- [__Contributors__]
+--
+--     -   Christoph Kubisch, NVIDIA
+--
+--     -   Pat Brown, NVIDIA
+--
+--     -   Jeff Bolz, NVIDIA
+--
+--     -   Daniel Koch, NVIDIA
+--
+--     -   Piers Daniell, NVIDIA
+--
+--     -   Pierre Boudier, NVIDIA
+--
+--     -   Patrick Mours, NVIDIA
+--
+--     -   David Zhao Akeley, NVIDIA
+--
+--     -   Kedarnath Thangudu, NVIDIA
+--
+--     -   Timur Kristóf, Valve
+--
+--     -   Hans-Kristian Arntzen, Valve
+--
+--     -   Philip Rebohle, Valve
+--
+--     -   Mike Blumenkrantz, Valve
+--
+--     -   Slawomir Grajewski, Intel
+--
+--     -   Michal Pietrasiuk, Intel
+--
+--     -   Mariusz Merecki, Intel
+--
+--     -   Tom Olson, ARM
+--
+--     -   Jan-Harald Fredriksen, ARM
+--
+--     -   Sandeep Kakarlapudi, ARM
+--
+--     -   Ruihao Zhang, QUALCOMM
+--
+--     -   Ricardo Garcia, Igalia, S.L.
+--
+--     -   Tobias Hector, AMD
+--
+--     -   Stu Smith, AMD
+--
+-- == Description
+--
+-- This extension provides a new mechanism allowing applications to
+-- generate collections of geometric primitives via programmable mesh
+-- shading. It is an alternative to the existing programmable primitive
+-- shading pipeline, which relied on generating input primitives by a fixed
+-- function assembler as well as fixed function vertex fetch.
+--
+-- This extension also adds support for the following SPIR-V extension in
+-- Vulkan:
+--
+-- -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/EXT/SPV_EXT_mesh_shader.html SPV_EXT_mesh_shader>
+--
+-- == New Commands
+--
+-- -   'cmdDrawMeshTasksEXT'
+--
+-- -   'cmdDrawMeshTasksIndirectEXT'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.2 Vulkan Version 1.2>
+-- or
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_draw_indirect_count VK_KHR_draw_indirect_count>
+-- or
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_draw_indirect_count VK_AMD_draw_indirect_count>
+-- is supported:
+--
+-- -   'cmdDrawMeshTasksIndirectCountEXT'
+--
+-- == New Structures
+--
+-- -   'DrawMeshTasksIndirectCommandEXT'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceMeshShaderFeaturesEXT'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDeviceMeshShaderPropertiesEXT'
+--
+-- == New Enum Constants
+--
+-- -   'EXT_MESH_SHADER_EXTENSION_NAME'
+--
+-- -   'EXT_MESH_SHADER_SPEC_VERSION'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits':
+--
+--     -   'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_EXT'
+--
+--     -   'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_EXT'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QueryPipelineStatisticFlagBits':
+--
+--     -   'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_MESH_SHADER_INVOCATIONS_BIT_EXT'
+--
+--     -   'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_TASK_SHADER_INVOCATIONS_BIT_EXT'
+--
+-- -   Extending 'Vulkan.Core10.Enums.QueryType.QueryType':
+--
+--     -   'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_MESH_PRIMITIVES_GENERATED_EXT'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits':
+--
+--     -   'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--
+--     -   'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_EXT'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_generated_commands VK_EXT_device_generated_commands>
+-- is supported:
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_EXT_device_generated_commands.IndirectCommandsTokenTypeEXT':
+--
+--     -   'Vulkan.Extensions.VK_EXT_device_generated_commands.INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_EXT'
+--
+--     -   'Vulkan.Extensions.VK_EXT_device_generated_commands.INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_EXT'
+--
+-- 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.Extensions.VK_NV_device_generated_commands.IndirectCommandsTokenTypeNV':
+--
+--     -   'Vulkan.Extensions.VK_NV_device_generated_commands.INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV'
+--
+-- == New or Modified Built-In Variables
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-cullprimitive CullPrimitiveEXT>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-primitivepointindices PrimitivePointIndicesEXT>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-primitivelineindices PrimitiveLineIndicesEXT>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-primitivetriangleindices PrimitiveTriangleIndicesEXT>
+--
+-- -   (modified)@Position@
+--
+-- -   (modified)@PointSize@
+--
+-- -   (modified)@ClipDistance@
+--
+-- -   (modified)@CullDistance@
+--
+-- -   (modified)@PrimitiveId@
+--
+-- -   (modified)@Layer@
+--
+-- -   (modified)@ViewportIndex@
+--
+-- -   (modified)@NumWorkgroups@
+--
+-- -   (modified)@WorkgroupSize@
+--
+-- -   (modified)@WorkgroupId@
+--
+-- -   (modified)@LocalInvocationId@
+--
+-- -   (modified)@GlobalInvocationId@
+--
+-- -   (modified)@LocalInvocationIndex@
+--
+-- -   (modified)@NumSubgroups@
+--
+-- -   (modified)@SubgroupId@
+--
+-- -   (modified)@DrawIndex@
+--
+-- -   (modified)@PrimitiveShadingRateKHR@
+--
+-- -   (modified)@ViewIndex@
+--
+-- == New SPIR-V Capability
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-MeshShadingEXT MeshShadingEXT>
+--
+-- == Version History
+--
+-- -   Revision 1, 2022-03-08 (Christoph Kubisch, Daniel Koch, Patrick
+--     Mours)
+--
+--     -   Initial revision
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_mesh_shader 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_mesh_shader  ( cmdDrawMeshTasksEXT
+                                             , cmdDrawMeshTasksIndirectEXT
+                                             , cmdDrawMeshTasksIndirectCountEXT
+                                             , PhysicalDeviceMeshShaderFeaturesEXT(..)
+                                             , PhysicalDeviceMeshShaderPropertiesEXT(..)
+                                             , DrawMeshTasksIndirectCommandEXT(..)
+                                             , EXT_MESH_SHADER_SPEC_VERSION
+                                             , pattern EXT_MESH_SHADER_SPEC_VERSION
+                                             , EXT_MESH_SHADER_EXTENSION_NAME
+                                             , pattern EXT_MESH_SHADER_EXTENSION_NAME
+                                             , IndirectCommandsTokenTypeNV(..)
+                                             , IndirectCommandsTokenTypeEXT(..)
+                                             ) where
+
+import Vulkan.CStruct.Utils (FixedArray)
+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 Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (FromCStruct(..))
+import Vulkan.CStruct (ToCStruct)
+import Vulkan.CStruct (ToCStruct(..))
+import Vulkan.Zero (Zero(..))
+import Control.Monad.IO.Class (MonadIO)
+import Data.String (IsString)
+import Data.Typeable (Typeable)
+import Foreign.Storable (Storable)
+import Foreign.Storable (Storable(peek))
+import Foreign.Storable (Storable(poke))
+import qualified Foreign.Storable (Storable(..))
+import GHC.Generics (Generic)
+import GHC.IO.Exception (IOErrorType(..))
+import GHC.IO.Exception (IOException(..))
+import Foreign.Ptr (FunPtr)
+import Foreign.Ptr (Ptr)
+import Data.Word (Word32)
+import Data.Kind (Type)
+import Vulkan.CStruct.Utils (advancePtrBytes)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.CStruct.Utils (lowerArrayPtr)
+import Vulkan.NamedType ((:::))
+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.Dynamic (DeviceCmds(pVkCmdDrawMeshTasksEXT))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdDrawMeshTasksIndirectCountEXT))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdDrawMeshTasksIndirectEXT))
+import Vulkan.Core10.FundamentalTypes (DeviceSize)
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_EXT))
+import Vulkan.Extensions.VK_EXT_device_generated_commands (IndirectCommandsTokenTypeEXT(..))
+import Vulkan.Extensions.VK_NV_device_generated_commands (IndirectCommandsTokenTypeNV(..))
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdDrawMeshTasksEXT
+  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Word32 -> Word32 -> IO ()
+
+-- | vkCmdDrawMeshTasksEXT - Draw mesh task work items
+--
+-- = Description
+--
+-- When the command is executed, a global workgroup consisting of
+-- @groupCountX@ × @groupCountY@ × @groupCountZ@ local workgroups is
+-- assembled.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-magFilter-04553# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
+--     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR',
+--     @reductionMode@ equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
+--     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-vkCmdDrawMeshTasksEXT-magFilter-09598# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
+--     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR' and
+--     @reductionMode@ equal to either
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
+--     or
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
+--     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_MINMAX_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-mipmapMode-04770# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
+--     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR',
+--     @reductionMode@ equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
+--     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-vkCmdDrawMeshTasksEXT-mipmapMode-09599# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
+--     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'
+--     and @reductionMode@ equal to either
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
+--     or
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
+--     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_MINMAX_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-unnormalizedCoordinates-09635# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the image view’s @levelCount@ and @layerCount@ /must/ be 1
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-08609# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the image view’s @viewType@ /must/ be
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D' or
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-08610# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the sampler /must/ not be used with any of the SPIR-V
+--     @OpImageSample*@ or @OpImageSparseSample*@ instructions with
+--     @ImplicitLod@, @Dref@ or @Proj@ in their name
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-08611# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the sampler /must/ not be used with any of the SPIR-V
+--     @OpImageSample*@ or @OpImageSparseSample*@ instructions that
+--     includes a LOD bias or any offset values
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-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-vkCmdDrawMeshTasksEXT-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-vkCmdDrawMeshTasksEXT-None-07888# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'
+--     descriptor is accessed using atomic operations as a result of this
+--     command, then the storage texel buffer’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-buffer-view-format-features format features>
+--     /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-02692# If a
+--     'Vulkan.Core10.Handles.ImageView' is sampled with
+--     'Vulkan.Core10.Enums.Filter.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.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-02693# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_filter_cubic VK_EXT_filter_cubic>
+--     extension is not enabled and any 'Vulkan.Core10.Handles.ImageView'
+--     is sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as a
+--     result of this command, it /must/ not have a
+--     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' of
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE', or
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-filterCubic-02694# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with
+--     'Vulkan.Core10.Enums.Filter.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-vkCmdDrawMeshTasksEXT-filterCubicMinmax-02695# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with
+--     'Vulkan.Core10.Enums.Filter.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-vkCmdDrawMeshTasksEXT-cubicRangeClamp-09212# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-cubicRangeClamp cubicRangeClamp>
+--     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
+--     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
+--     a result of this command /must/ not have a
+--     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
+--     equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-reductionMode-09213# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with a
+--     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
+--     equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
+--     as a result of this command /must/ sample with
+--     'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-selectableCubicWeights-09214# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-selectableCubicWeights selectableCubicWeights>
+--     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
+--     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
+--     a result of this command /must/ have
+--     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.SamplerCubicWeightsCreateInfoQCOM'::@cubicWeights@
+--     equal to
+--     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-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-vkCmdDrawMeshTasksEXT-OpTypeImage-07027# For any
+--     'Vulkan.Core10.Handles.ImageView' being written as a storage image
+--     where the image format field of the @OpTypeImage@ is @Unknown@, the
+--     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_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-OpTypeImage-07028# For any
+--     'Vulkan.Core10.Handles.ImageView' being read as a storage image
+--     where the image format field of the @OpTypeImage@ is @Unknown@, the
+--     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_STORAGE_READ_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-OpTypeImage-07029# For any
+--     'Vulkan.Core10.Handles.BufferView' being written as a storage texel
+--     buffer where the image format field of the @OpTypeImage@ is
+--     @Unknown@, the view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
+--     /must/ contain
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-OpTypeImage-07030# Any
+--     'Vulkan.Core10.Handles.BufferView' being read as a storage texel
+--     buffer where the image format field of the @OpTypeImage@ is
+--     @Unknown@ then the view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
+--     /must/ contain
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-08600# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
+--     was created with a pipeline layout and statically uses a set /n/, a
+--     descriptor set /must/ have been bound to /n/ at the same pipeline
+--     bind point, with layouts compatible for set /n/ with the layout(s)
+--     used to create the shader, as described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptors-compatibility ???>
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-08601# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
+--     was created with a pipeline layout or specified push constant ranges
+--     and statically uses a push constant value, that value /must/ have
+--     been set for the same pipeline bind point, with push constant ranges
+--     that are
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptors-compatibility compatible>
+--     with the push constant range used to create the shader
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-10068# For each array of resources
+--     that is used by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
+--     the indices used to access members of the array /must/ be less than
+--     the descriptor count for the identified binding in the descriptor
+--     sets used by this command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-08114# Descriptors in each bound
+--     descriptor set, specified via
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
+--     be valid if they are accessed as described by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
+--     by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
+--     point used by this command and the bound
+--     'Vulkan.Core10.Handles.Pipeline' was not created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-imageLayout-00344# If an image
+--     descriptor is accessed by a shader, the
+--     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' /must/ match the
+--     subresource accessible from the 'Vulkan.Core10.Handles.ImageView' 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>
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-08115# If the descriptors used by
+--     the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
+--     point were specified via
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', the
+--     bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     without
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-08116# Descriptors in bound
+--     descriptor buffers, specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     /must/ be valid if they are dynamically used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
+--     was created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-08604# Descriptors in bound
+--     descriptor buffers, specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     /must/ be valid if they are dynamically used by any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     to the pipeline bind point used by this command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-08117# If the descriptors used by
+--     the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
+--     point were specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-08119# If a descriptor is
+--     dynamically used with a 'Vulkan.Core10.Handles.Pipeline' created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     the descriptor memory /must/ be resident
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-08605# If a descriptor is
+--     dynamically used with a 'Vulkan.Extensions.Handles.ShaderEXT'
+--     created with a 'Vulkan.Core10.Handles.DescriptorSetLayout' that was
+--     created with
+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     the descriptor memory /must/ be resident
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-08606# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject>
+--     feature is not enabled, a valid pipeline /must/ be bound to the
+--     pipeline bind point used by this command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-08608# If a pipeline is bound to
+--     the pipeline bind point used by this command, there /must/ not have
+--     been any calls to dynamic state setting commands for any state
+--     specified statically in the 'Vulkan.Core10.Handles.Pipeline' object
+--     bound to the pipeline bind point used by this command, since that
+--     pipeline was bound
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-uniformBuffers-06935# If any stage of
+--     the 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline
+--     bind point used by this command accesses a uniform buffer, and that
+--     stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @uniformBuffers@, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /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-vkCmdDrawMeshTasksEXT-None-08612# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, and any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     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-vkCmdDrawMeshTasksEXT-storageBuffers-06936# If any stage of
+--     the 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline
+--     bind point used by this command accesses a storage buffer, and that
+--     stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @storageBuffers@, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /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-vkCmdDrawMeshTasksEXT-None-08613# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, and any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     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-vkCmdDrawMeshTasksEXT-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
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shaders>
+--     /must/ not be a protected resource
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-viewType-07752# If a
+--     'Vulkan.Core10.Handles.ImageView' is accessed as a result of this
+--     command, then the image view’s @viewType@ /must/ match the @Dim@
+--     operand of the @OpTypeImage@ as described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-image-dimensions ???>
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-format-07753# If a
+--     'Vulkan.Core10.Handles.ImageView' or
+--     'Vulkan.Core10.Handles.BufferView' is accessed as a result of this
+--     command, then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-numericformat numeric type>
+--     of the view’s @format@ and the @Sampled@ @Type@ operand of the
+--     @OpTypeImage@ /must/ match
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-OpImageWrite-08795# If a
+--     'Vulkan.Core10.Handles.ImageView' created with a format other than
+--     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM' 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-vkCmdDrawMeshTasksEXT-OpImageWrite-08796# If a
+--     'Vulkan.Core10.Handles.ImageView' created with the format
+--     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM' is accessed using
+--     @OpImageWrite@ as a result of this command, then the @Type@ of the
+--     @Texel@ operand of that instruction /must/ have four components
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-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-vkCmdDrawMeshTasksEXT-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-vkCmdDrawMeshTasksEXT-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-vkCmdDrawMeshTasksEXT-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-vkCmdDrawMeshTasksEXT-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-vkCmdDrawMeshTasksEXT-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-vkCmdDrawMeshTasksEXT-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-vkCmdDrawMeshTasksEXT-OpImageSampleWeightedQCOM-06971# If
+--     @OpImageSampleWeightedQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-OpImageSampleWeightedQCOM-06972# If
+--     @OpImageSampleWeightedQCOM@ uses a 'Vulkan.Core10.Handles.ImageView'
+--     as a sample weight image 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-OpImageBoxFilterQCOM-06973# If
+--     @OpImageBoxFilterQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-OpImageBlockMatchSSDQCOM-06974# If
+--     @OpImageBlockMatchSSDQCOM@ is used to read from an
+--     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
+--     or
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_SXD_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-OpImageBlockMatchSADQCOM-12420# If
+--     @OpImageBlockMatchSADQCOM@ is used to read from an
+--     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
+--     or
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_SXD_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-OpImageBlockMatchSADQCOM-06976# If
+--     @OpImageBlockMatchSADQCOM@ or OpImageBlockMatchSSDQCOM is used to
+--     read from a reference image as result of this command, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-blockMatchExtendedClampToEdge blockMatchExtendedClampToEdge>
+--     feature is not enabled or the /input/ sampler was not created with
+--     both @addressModeU@ and @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--     then the specified reference coordinates /must/ not fail
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-OpImageSampleWeightedQCOM-06977# If
+--     @OpImageSampleWeightedQCOM@, @OpImageBoxFilterQCOM@,
+--     @OpImageBlockMatchWindowSSDQCOM@, @OpImageBlockMatchWindowSADQCOM@,
+--     @OpImageBlockMatchGatherSSDQCOM@, @OpImageBlockMatchGatherSADQCOM@,
+--     @OpImageBlockMatchSSDQCOM@, or @OpImageBlockMatchSADQCOM@ uses a
+--     'Vulkan.Core10.Handles.Sampler' as a result of this command, then
+--     the sampler /must/ have been created with
+--     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-OpImageSampleWeightedQCOM-06978# If any
+--     command other than @OpImageSampleWeightedQCOM@,
+--     @OpImageBoxFilterQCOM@, @OpImageBlockMatchWindowSSDQCOM@,
+--     @OpImageBlockMatchWindowSADQCOM@, @OpImageBlockMatchGatherSSDQCOM@,
+--     @OpImageBlockMatchGatherSADQCOM@, @OpImageBlockMatchSSDQCOM@, or
+--     @OpImageBlockMatchSADQCOM@ uses a 'Vulkan.Core10.Handles.Sampler' as
+--     a result of this command, then the sampler /must/ not have been
+--     created with
+--     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-OpImageBlockMatchWindow-09215# If a
+--     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     instruction is used to read from an
+--     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-OpImageBlockMatchWindow-09216# If a
+--     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     instruction is used to read from an
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the image view’s format /must/ be a single-component format
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-OpImageBlockMatchWindow-09217# If a
+--     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     read from a reference image as result of this command, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-blockMatchExtendedClampToEdge blockMatchExtendedClampToEdge>
+--     feature is not enabled or the /input/ sampler was not created with
+--     both @addressModeU@ and @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--     then the specified reference coordinates /must/ not fail
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-OpImageBlockMatchWindow-12421# If a
+--     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     instruction uses a 'Vulkan.Core10.Handles.Sampler' as a result of
+--     this command, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-blockMatchExtendedClampToEdge blockMatchExtendedClampToEdge>
+--     is not enabled, the /input/ sampler /must/ not have been created
+--     with either @addressModeU@ or @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-addressModeU-12422# If a
+--     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     instruction uses a 'Vulkan.Core10.Handles.Sampler' as a result of
+--     this command, and the /input/ sampler was created with either
+--     @addressModeU@ or @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE',
+--     then the sampler /must/ have been created with both @addressModeU@
+--     and @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-07288# Any shader invocation
+--     executed by this command /must/
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-termination terminate>
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-09600# If a descriptor with type
+--     equal to any of
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',
+--     or
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'
+--     is accessed as a result of this command, all image subresources
+--     identified by that descriptor /must/ be in the image layout
+--     identified when the descriptor was written
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-micromap-11636# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command through an
+--     @OpRayQueryProceedKHR@ operation , the @VK_EXT_opacity_micromap@
+--     extension is not enabled, and the acceleration structure is built
+--     using geometry with a
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapKHR'
+--     structure included in its @pNext@ chain, the shader /must/ have
+--     specified a @OpacityMicromapIdKHR@ execution mode with its
+--     specialization constant operand equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-micromap-11637# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command and the
+--     acceleration structure was constructed through deserialization, all
+--     micromap arrays referenced by the acceleration structure that were
+--     not replaced by an acceleration structure update command /must/ have
+--     been deserialized using the serialized data of the corresponding
+--     micromaps used to originally build the acceleration structure prior
+--     to the execution of this command on the device
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-micromap-11638# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command and the
+--     acceleration structure is built using geometry with an @indexBuffer@
+--     containing both
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.OpacityMicromapSpecialIndexKHR'
+--     values and indices into an associated micromap array, any
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command /must/ not have been created with @flags@ that
+--     includes
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_KHR'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-micromap-11639# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command and the
+--     acceleration structure is built using geometry with an @indexBuffer@
+--     containing both
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.OpacityMicromapSpecialIndexKHR'
+--     values and indices into an associated micromap array, any
+--     'Vulkan.Extensions.Handles.ShaderEXT' that accessed the descriptor
+--     /must/ not have been created with @flags@ that includes
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-commandBuffer-10746# The
+--     'Vulkan.Core10.Handles.DeviceMemory' object allocated from a
+--     'Vulkan.Core10.DeviceInitialization.MemoryHeap' with the
+--     'Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_TILE_MEMORY_BIT_QCOM'
+--     property that is bound to a resource accessed as a result of this
+--     command /must/ be the active
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-bind-tile-memory bound tile memory object>
+--     in @commandBuffer@
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-10678# If this command is recorded
+--     inside a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-tile-shading tile shading render pass>
+--     instance, the stages corresponding to the pipeline bind point used
+--     by this command /must/ only include
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT',
+--     and\/or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-10679# If this command is recorded
+--     where
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model>
+--     is enabled, there /must/ be no access to any image while the image
+--     was be transitioned to the
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
+--     layout
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-pDescription-09900# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the
+--     underlying 'Vulkan.Extensions.Handles.TensorARM' object /must/ have
+--     been created with the
+--     'Vulkan.Extensions.VK_ARM_tensors.TENSOR_USAGE_SHADER_BIT_ARM' usage
+--     flag set
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-dimensionCount-09905# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the @Rank@
+--     of the @OpTypeTensorARM@ of the tensor resource variable /must/ be
+--     equal to the @dimensionCount@ provided via
+--     'Vulkan.Extensions.VK_ARM_tensors.TensorCreateInfoARM'::@pDescription@
+--     when creating the underlying 'Vulkan.Extensions.Handles.TensorARM'
+--     object
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-OpTypeTensorARM-09906# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the element
+--     type of the @OpTypeTensorARM@ of the tensor resource variable /must/
+--     be
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-tensor-formats compatible>
+--     with the 'Vulkan.Core10.Enums.Format.Format' of the
+--     'Vulkan.Extensions.Handles.TensorViewARM' used for the access
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-11297# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses a @OpTypeStruct@ decorated with @Block@ or
+--     @BufferBlock@ using that mapping, the calculated offset for the
+--     resource heap /must/ be a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-bufferDescriptorAlignment bufferDescriptorAlignment>
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-11298# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses an @OpTypeImage@ or @OpTypeSampledImage@ using
+--     that mapping, the calculated offset for the resource heap /must/ be
+--     a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-imageDescriptorAlignment imageDescriptorAlignment>
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-11299# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses an @OpTypeSampler@ or @OpTypeSampledImage@
+--     using that mapping, the calculated offset for the sampler heap
+--     /must/ be a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-samplerDescriptorAlignment samplerDescriptorAlignment>
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-11397# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses an @OpTypeTensorARM@ using that mapping, the
+--     calculated offset for the resource heap /must/ be a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-tensorDescriptorAlignment tensorDescriptorAlignment>
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-11300# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a
+--     multiple of 4
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-11301# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' backed by physical
+--     memory at every offset specified by each mapping
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-11302# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-11304# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a
+--     multiple of 8
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-11305# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' backed by physical
+--     memory at every offset specified by each mapping
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-11306# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address pointed to by the address in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-11308# For each
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps descriptor heap>
+--     that is statically used by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
+--     either directly or via a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>,
+--     a valid descriptor heap /must/ be bound
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-11309# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     was created as a 'Vulkan.Extensions.Handles.ShaderEXT' with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag or as part of a pipeline with the
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag, execution of this command /must/ not result in any descriptor
+--     read accessing data outside of the user range of the respective heap
+--     bound by @vkCmdBind*HeapEXT@ commands
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-11372# If any stage of the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command accesses a uniform buffer or uniform
+--     texel buffer through a descriptor in the bound resource heap, that
+--     stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @uniformBuffers@, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /must/ not access values outside
+--     of the range of the descriptor specified via
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+--     when the descriptor was written
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-11373# If any stage of the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command accesses a storage buffer or storage
+--     texel buffer through a descriptor in the bound resource heap, that
+--     stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @storageBuffers@, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /must/ not access values outside
+--     of the range of the descriptor specified by
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+--     when the descriptor was written
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-11374# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, and any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     to the pipeline bind point used by this command accesses a uniform
+--     buffer, uniform texel buffer, storage buffer, or storage texel
+--     buffer, that shader /must/ not access values outside of the range of
+--     the buffer as specified by
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+--     when the descriptor was written
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-pBindInfo-11375# If any
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     uses an embedded sampler via a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>,
+--     the value of @pBindInfo->reservedRangeSize@ set for
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.cmdBindSamplerHeapEXT'
+--     /must/ be greater than or equal to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minSamplerHeapReservedRangeWithEmbedded minSamplerHeapReservedRangeWithEmbedded>
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-11376# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     was created as a 'Vulkan.Extensions.Handles.ShaderEXT' with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag or as part of a pipeline with the
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag, and that shader statically uses a push constant value, that
+--     value /must/ have been set by
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.cmdPushDataEXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-11398# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_DATA_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_DATA_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_RESOURCE_HEAP_DATA_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the access
+--     /must/ not be
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-execution-memory-access-bounds out of bounds>
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-11437# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the buffer from
+--     which the address in push data was queried /must/ have been created
+--     with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-11438# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a uniform buffer using that mapping, the
+--     address that the uniform buffer is mapped to /must/ have been
+--     queried from a buffer created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-11441# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a uniform buffer using that mapping, the
+--     address that the uniform buffer is mapped to /must/ be aligned to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minUniformBufferOffsetAlignment minUniformBufferOffsetAlignment>
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-11439# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a storage buffer using that mapping, the
+--     address that the storage buffer is mapped to /must/ have been
+--     queried from a buffer created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_STORAGE_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-11442# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a storage buffer using that mapping, the
+--     address that the storage buffer is mapped to /must/ be aligned to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minStorageBufferOffsetAlignment minStorageBufferOffsetAlignment>
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-11485# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses an acceleration structure using that mapping,
+--     the address that the acceleration structure is mapped to /must/ be
+--     an acceleration structure address retrieved from a
+--     'Vulkan.Extensions.Handles.AccelerationStructureKHR' object via
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.getAccelerationStructureDeviceAddressKHR'
+--     or handle retrieved from a
+--     'Vulkan.Extensions.Handles.AccelerationStructureNV' object via
+--     'Vulkan.Extensions.VK_NV_ray_tracing.getAccelerationStructureHandleNV'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-index-11450# If a shader uses a sampler
+--     descriptor to sample an image as a result of this command, and that
+--     sampler descriptor uses a custom border color with an index defined
+--     by
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.SamplerCustomBorderColorIndexCreateInfoEXT',
+--     the value of
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.SamplerCustomBorderColorIndexCreateInfoEXT'::@index@
+--     /must/ have been registered before this command was recorded, and
+--     still be registered during the sampling operation, with an
+--     identically defined color
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-protectedNoFault-11455# If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, a pipeline is bound to the pipeline bind point
+--     used by this command, or a shader is bound to a shader stage used by
+--     this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     the address that the resource is mapped to /must/ have been queried
+--     from a buffer created without the
+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT'
+--     create flag set
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-protectedNoFault-11456# If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, a pipeline is bound to the pipeline bind point
+--     used by this command, or a shader is bound to a shader stage used by
+--     this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     the address of the indirect memory /must/ have been queried from a
+--     buffer created without the
+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT'
+--     create flag set
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-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.GraphicsPipeline.GraphicsPipelineCreateInfo'
+--     structure specified when creating the
+--     'Vulkan.Core10.Handles.Pipeline' bound to
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-subpass-02685# The subpass index of the
+--     current render pass /must/ be equal to the @subpass@ member of the
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'
+--     structure specified when creating the
+--     'Vulkan.Core10.Handles.Pipeline' bound to
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-OpTypeImage-07468# If any shader
+--     executed by this pipeline accesses an @OpTypeImage@ variable with a
+--     @Dim@ operand of @SubpassData@, it /must/ be decorated with an
+--     @InputAttachmentIndex@ that corresponds to a valid input attachment
+--     in the current subpass
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-07469# Input attachment views
+--     accessed in a subpass /must/ be created with the same
+--     'Vulkan.Core10.Enums.Format.Format' as the corresponding subpass
+--     definition, and be created with a 'Vulkan.Core10.Handles.ImageView'
+--     that is compatible with the attachment referenced by the subpass\'
+--     @pInputAttachments@[@InputAttachmentIndex@] in the bound
+--     'Vulkan.Core10.Handles.Framebuffer' as specified by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#compatibility-inputattachment Fragment Input Attachment Compatibility>
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-pDepthInputAttachmentIndex-09595# Input
+--     attachment views accessed in a dynamic render pass with a
+--     @InputAttachmentIndex@ referenced by
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo',
+--     or no @InputAttachmentIndex@ if
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pDepthInputAttachmentIndex@
+--     or
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pStencilInputAttachmentIndex@
+--     are @NULL@, /must/ be created with a
+--     'Vulkan.Core10.Handles.ImageView' that is compatible with the
+--     corresponding color, depth, or stencil attachment in
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-pDepthInputAttachmentIndex-09596# Input
+--     attachment views accessed in a dynamic render pass via a shader
+--     object /must/ have an @InputAttachmentIndex@ if both
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pDepthInputAttachmentIndex@
+--     and
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pStencilInputAttachmentIndex@
+--     are non-@NULL@
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-InputAttachmentIndex-09597# If an input
+--     attachment view accessed in a dynamic render pass via a shader
+--     object has an @InputAttachmentIndex@, the @InputAttachmentIndex@
+--     /must/ match an index in
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-06537# Memory backing image
+--     subresources used as attachments in the current render pass /must/
+--     not be written in any way other than as an attachment by this
+--     command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-10795# If a color attachment is
+--     written by any prior command in this subpass or by the load, store,
+--     or resolve operations for this subpass, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT' on
+--     that attachment, it /must/ not be accessed in any way other than as
+--     an attachment by this command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-10796# If a depth attachment is
+--     written by any prior command in this subpass or by the load, store,
+--     or resolve operations for this subpass, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' on
+--     that attachment, it /must/ not be accessed in any way other than as
+--     an attachment by this command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-10797# If a stencil attachment is
+--     written by any prior command in this subpass or by the load, store,
+--     or resolve operations for this subpass, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
+--     on that attachment, it /must/ not be accessed in any way other than
+--     as an attachment by this command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-12338# If a color attachment is
+--     read in this command in any way other than as an attachment, or has
+--     been read by any prior command in this subpass as a non-attachment,
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT' on
+--     that attachment, the color attachment /must/ not be written to by
+--     this command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-12339# If a depth attachment is
+--     read in this command in any way other than as an attachment, or has
+--     been read by any prior command in this subpass as a non-attachment,
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' on
+--     that attachment, the depth attachment /must/ not be written to by
+--     this command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-12340# If a stencil attachment is
+--     read in this command in any way other than as an attachment, or has
+--     been read by any prior command in this subpass as a non-attachment,
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
+--     on that attachment, the stencil attachment /must/ not be written to
+--     by this command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-09003# If an attachment is written
+--     by any prior command in this subpass or by the load, store, or
+--     resolve operations for this subpass, it /must/ not be accessed in
+--     any way other than as an attachment, storage image, or sampled image
+--     by this command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-06886# If the current render pass
+--     instance uses a depth\/stencil attachment with a read-only layout
+--     for the depth aspect,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-depth-write depth writes>
+--     /must/ be disabled
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-06887# If the current render pass
+--     instance uses a depth\/stencil attachment with a read-only layout
+--     for the stencil aspect, both front and back @writeMask@ are not
+--     zero, and stencil test is enabled,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-stencil all stencil ops>
+--     /must/ be 'Vulkan.Core10.Enums.StencilOp.STENCIL_OP_KEEP'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-07831# If the bound graphics
+--     pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT' dynamic
+--     state enabled then
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetViewport' /must/ have
+--     been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-07832# If the bound graphics
+--     pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR' dynamic
+--     state enabled then
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetScissor' /must/ have been
+--     called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-08617# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_WIDTH' dynamic
+--     state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line topology class, then
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth' /must/ have
+--     been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-07834# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS' dynamic
+--     state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @depthBiasEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBias' or
+--     'Vulkan.Extensions.VK_EXT_depth_bias_control.cmdSetDepthBias2EXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-07835# If a shader object is bound
+--     to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_BLEND_CONSTANTS'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and an active color
+--     attachment
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @blendEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE' with a
+--     blend equations where any
+--     'Vulkan.Core10.Enums.BlendFactor.BlendFactor' member is
+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_COLOR',
+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR',
+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_ALPHA', or
+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA',
+--     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetBlendConstants'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-07836# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @depthBoundsTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBounds' /must/
+--     have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-07837# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_COMPARE_MASK'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilCompareMask'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-07838# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_WRITE_MASK'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilWriteMask'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-07839# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_REFERENCE'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of and @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilReference'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-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-vkCmdDrawMeshTasksEXT-sampleLocationsEnable-02689# If the
+--     bound graphics pipeline was created with
+--     'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@
+--     set to 'Vulkan.Core10.FundamentalTypes.TRUE', then the active depth
+--     attachment /must/ have been created with the
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'
+--     bit set
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-07634# If the
+--     @VK_EXT_sample_locations@ extension is enabled, a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-06666# If the
+--     @VK_EXT_sample_locations@ extension is enabled, a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-07840# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CULL_MODE' dynamic
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetCullMode'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-07841# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRONT_FACE' dynamic
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetFrontFace'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-07843# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_TEST_ENABLE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE',
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthTestEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-07844# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @depthTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthWriteEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-07845# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_COMPARE_OP'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @depthTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthCompareOp'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-07846# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthBounds depthBounds>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthBoundsTestEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-07847# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_TEST_ENABLE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilTestEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-07848# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_OP' dynamic
+--     state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilOp'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-viewportCount-03417# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
+--     dynamic state enabled, and the state is not inherited, then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-scissorCount-03418# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
+--     dynamic state enabled, and the state is not inherited, then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-viewportCount-03419# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     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, and the state is not inherited, then 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-vkCmdDrawMeshTasksEXT-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-vkCmdDrawMeshTasksEXT-viewportCount-04138# If the
+--     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which 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 state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @viewportWScalingEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.cmdSetViewportWScalingNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-08636# If the
+--     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which 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 state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @viewportWScalingEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', 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-vkCmdDrawMeshTasksEXT-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-vkCmdDrawMeshTasksEXT-shadingRateImage-09233# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV'
+--     and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetCoarseSampleOrderNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-shadingRateImage-09234# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which 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 state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @shadingRateImageEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetViewportShadingRatePaletteNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-08637# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which 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 state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @shadingRateImageEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', 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-vkCmdDrawMeshTasksEXT-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
+--     'Vulkan.Core10.GraphicsPipeline.PipelineViewportStateCreateInfo',
+--     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-vkCmdDrawMeshTasksEXT-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
+--     'Vulkan.Core10.GraphicsPipeline.PipelineViewportStateCreateInfo',
+--     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-vkCmdDrawMeshTasksEXT-None-07878# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-exclusiveScissor exclusiveScissor>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-07879# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-exclusiveScissor exclusiveScissor>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV'
+--     dynamic state enabled, and the most recent call to
+--     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorEnableNV'
+--     in the current command buffer set any element of
+--     @pExclusiveScissorEnables@ to 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then
+--     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-04876# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which 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 and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-04877# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-logicOp-04878# If a shader object is
+--     bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @logicOpEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetLogicOpEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-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-vkCmdDrawMeshTasksEXT-primitiveFragmentShadingRateWithMultipleViewports-08642#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
+--     limit is not supported, and any shader object bound to a graphics
+--     stage writes 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-vkCmdDrawMeshTasksEXT-blendEnable-04727# If a shader object is
+--     bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then for each color
+--     attachment, 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 corresponding
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @blendEnable@ /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-08644# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and none of the following is
+--     enabled:
+--
+--     -   the @VK_AMD_mixed_attachment_samples@ extension
+--
+--     -   the @VK_NV_framebuffer_mixed_samples@ extension
+--
+--     -   the
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
+--         feature
+--
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizationSamples@ /must/ be the same as the current color
+--     and\/or depth\/stencil attachments
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-08876# If a shader object is bound
+--     to any graphics stage, the current render pass instance /must/ have
+--     been begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-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-vkCmdDrawMeshTasksEXT-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-vkCmdDrawMeshTasksEXT-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-vkCmdDrawMeshTasksEXT-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-vkCmdDrawMeshTasksEXT-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-vkCmdDrawMeshTasksEXT-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-vkCmdDrawMeshTasksEXT-viewMask-06178# If the current render
+--     pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the 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-vkCmdDrawMeshTasksEXT-colorAttachmentCount-06179# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled and the current render pass instance was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the 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-vkCmdDrawMeshTasksEXT-dynamicRenderingUnusedAttachments-08910#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and 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 an @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 bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-dynamicRenderingUnusedAttachments-08912#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and 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 an @imageView@ equal to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have the
+--     corresponding element of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
+--     used to create the bound pipeline equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-dynamicRenderingUnusedAttachments-08911#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled, and 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 an @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 bound graphics pipeline, or the corresponding
+--     element of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@,
+--     if it exists, /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-colorAttachmentCount-09362# If 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@
+--     equal to @1@, there is no shader object bound to any graphics stage,
+--     and a color attachment with a resolve mode of
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID',
+--     each element of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
+--     array with a @resolveImageView@ not equal to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
+--     with an image created with a
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value equal to the
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value used to create the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-09363# If there is no shader object
+--     bound to any graphics stage, the current render pass instance was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and a
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
+--     equal to @1@, and a color attachment with a resolve mode of
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID',
+--     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 an image created with a
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value equal to the
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value used to create the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-09364# If the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there is no shader object bound to any graphics stage, and the bound
+--     graphics pipeline was created with a non-zero
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value and with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
+--     /must/ have set the blend enable to
+--     'Vulkan.Core10.FundamentalTypes.FALSE' prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-09365# If the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there is no shader object bound to any graphics stage, and the bound
+--     graphics pipeline was created with a non-zero
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value and with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     /must/ have set @rasterizationSamples@ to
+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' prior
+--     to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-09366# If there is a shader object
+--     bound to any graphics stage, and the current render pass includes a
+--     color attachment that uses the
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID'
+--     resolve mode, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
+--     /must/ have set blend enable to
+--     'Vulkan.Core10.FundamentalTypes.FALSE' prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-rasterizationSamples-09367# If there is
+--     a shader object bound to any graphics stage, and the current render
+--     pass includes a color attachment that uses the
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID'
+--     resolve mode, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     /must/ have set @rasterizationSamples@ to
+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' prior
+--     to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-09368# If the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there is no shader object bound to any graphics stage, and the bound
+--     graphics pipeline was created with a non-zero
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value and with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     /must/ have set @pFragmentSize->width@ to @1@ prior to this drawing
+--     command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-09369# If the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there is no shader object bound to any graphics stage, and the bound
+--     graphics pipeline was created with a non-zero
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value and with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     /must/ have set @pFragmentSize->height@ to @1@ prior to this drawing
+--     command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-pFragmentSize-09370# If there is a
+--     shader object bound to any graphics stage, and the current render
+--     pass includes a color attachment that uses the
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID'
+--     resolve mode, then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     /must/ have set @pFragmentSize->width@ to @1@ prior to this drawing
+--     command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-pFragmentSize-09371# If there is a
+--     shader object bound to any graphics stage, and the current render
+--     pass includes a color attachment that uses the
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID'
+--     resolve mode, then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     /must/ have set @pFragmentSize->height@ to @1@ prior to this drawing
+--     command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-07749# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
+--     feature is enabled, a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-attachmentCount-07750# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
+--     feature is enabled, a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then the @attachmentCount@
+--     parameter of most recent call to
+--     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
+--     in the current command buffer /must/ be greater than or equal to the
+--     number of active color attachments
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-07751# If the
+--     @VK_EXT_discard_rectangles@ extension is enabled, a graphics
+--     pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_EXT'
+--     dynamic state enabled and the @pNext@ chain of
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo' included
+--     a
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'
+--     structure, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @discardRectangleEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command for each
+--     discard rectangle in
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'::@discardRectangleCount@
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-rasterizerDiscardEnable-09236# If the
+--     @VK_EXT_discard_rectangles@ extension is enabled, a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_EXT'
+--     dynamic state enabled and the @pNext@ chain of
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo' did not
+--     include a
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'
+--     structure, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @discardRectangleEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command for each
+--     discard rectangle in
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.PhysicalDeviceDiscardRectanglePropertiesEXT'::@maxDiscardRectangles@
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-07880# If the
+--     @VK_EXT_discard_rectangles@ extension is enabled, a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-07881# If the
+--     @VK_EXT_discard_rectangles@ extension is enabled, a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @discardRectangleEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleModeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-dynamicRenderingUnusedAttachments-08913#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
+--     used to create the bound graphics pipeline /must/ be equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-dynamicRenderingUnusedAttachments-08914#
+--     If current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->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 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->imageView@
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-dynamicRenderingUnusedAttachments-08915#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
+--     used to create the bound graphics pipeline was not equal to the
+--     'Vulkan.Core10.Enums.Format.Format' used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@,
+--     the value of the format /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-dynamicRenderingUnusedAttachments-08916#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
+--     used to create the bound graphics pipeline /must/ be equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-dynamicRenderingUnusedAttachments-08917#
+--     If current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->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 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->imageView@
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-dynamicRenderingUnusedAttachments-08918#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
+--     used to create the bound graphics pipeline was not equal to the
+--     'Vulkan.Core10.Enums.Format.Format' used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@,
+--     the value of the format /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-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_fragment_shading_rate.RenderingFragmentShadingRateAttachmentInfoKHR'::@imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the bound graphics
+--     pipeline /must/ have been created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-dynamicRenderingLocalRead-11797# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingLocalRead dynamicRenderingLocalRead>
+--     feature is enabled, the
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_LOCAL_READ_CONCURRENT_ACCESS_CONTROL_BIT_KHR'
+--     flag is specified, and an attachment is being used as a feedback
+--     loop as specified by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#rendering-attachment-input-attachment-feedback >,
+--     'Vulkan.Extensions.VK_KHR_maintenance10.RenderingAttachmentFlagsInfoKHR'::@flags@
+--     for that attachment /must/ include
+--     'Vulkan.Extensions.VK_KHR_maintenance10.RENDERING_ATTACHMENT_INPUT_ATTACHMENT_FEEDBACK_BIT_KHR'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-imageView-06184# If the current render
+--     pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and
+--     'Vulkan.Extensions.VK_EXT_fragment_density_map.RenderingFragmentDensityMapAttachmentInfoEXT'::@imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the bound graphics
+--     pipeline /must/ have been created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-layers-10831# If the current render pass
+--     instance was created with
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE'
+--     or
+--     'Vulkan.Core10.Enums.RenderPassCreateFlagBits.RENDER_PASS_CREATE_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE',
+--     and the bound graphics pipeline was created with
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE',
+--     then the current render pass instance /must/ have a @layers@ value
+--     less than or equal to
+--     'Vulkan.Extensions.VK_VALVE_fragment_density_map_layered.PipelineFragmentDensityMapLayeredCreateInfoVALVE'::@maxFragmentDensityMapLayers@
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-colorAttachmentCount-06185# If the bound
+--     pipeline was created with a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.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_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     used to create the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-pDepthAttachment-06186# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the bound pipeline was created with a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     structure, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
+--     @depthStencilAttachmentSamples@ member of
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     used to create the bound graphics pipeline /must/ be equal to the
+--     sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-pStencilAttachment-06187# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the bound pipeline was created with a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     structure, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
+--     @depthStencilAttachmentSamples@ member of
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     used to create the bound graphics pipeline /must/ be equal to the
+--     sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-multisampledRenderToSingleSampled-07285#
+--     If the bound pipeline was created without a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     structure, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
+--     feature is not enabled, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, 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 @rasterizationSamples@ for
+--     the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-multisampledRenderToSingleSampled-07286#
+--     If the bound pipeline was created without a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     structure, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
+--     feature is not enabled, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     @rasterizationSamples@ for the bound graphics pipeline /must/ be
+--     equal to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-multisampledRenderToSingleSampled-07287#
+--     If the bound pipeline was created without a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     structure, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
+--     feature is not enabled, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     @rasterizationSamples@ for the bound graphics pipeline /must/ be
+--     equal to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-pNext-07935# If this command is called
+--     inside a render pass instance started with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     and the @pNext@ chain of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'
+--     includes a
+--     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'
+--     structure with @multisampledRenderToSingleSampledEnable@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then the value of
+--     @rasterizationSamples@ for the bound graphics pipeline /must/ be
+--     equal to
+--     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'::@rasterizationSamples@
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-renderPass-06198# If the current render
+--     pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the bound pipeline /must/ have been created with a
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'::@renderPass@
+--     equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-pColorAttachments-08963# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, there is a
+--     graphics pipeline bound with a fragment shader that statically
+--     writes to a color attachment, the color write mask is not zero,
+--     color writes are enabled, and the corresponding element of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     corresponding element of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-pColorAttachments-11539# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, there is a graphics
+--     pipeline bound with a fragment shader that statically writes to a
+--     color attachment, the color write mask is not zero, color writes are
+--     enabled, and the corresponding element of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     corresponding element of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-pDepthAttachment-08964# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, there is a
+--     graphics pipeline bound, depth test is enabled, and the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-pDepthAttachment-11540# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, there is a graphics
+--     pipeline bound, depth test is enabled, and the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-pStencilAttachment-08965# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, there is a
+--     graphics pipeline bound, stencil test is enabled and the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-pStencilAttachment-11860# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, there is a graphics
+--     pipeline bound, stencil test is enabled and the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-flags-10582# If the current render pass
+--     instance was begun with a
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     call in @commandBuffer@, its
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@flags@
+--     parameter /must/ not have
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT'
+--     set unless
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_CONTENTS_INLINE_BIT_KHR'
+--     is also set
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-primitivesGeneratedQueryWithRasterizerDiscard-06708#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithRasterizerDiscard primitivesGeneratedQueryWithRasterizerDiscard>
+--     feature is not enabled and the
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
+--     query is active,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-discard rasterization discard>
+--     /must/ not be enabled
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-primitivesGeneratedQueryWithNonZeroStreams-06709#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>
+--     feature is not enabled and the
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
+--     query is active, the bound graphics pipeline /must/ not have been
+--     created with a non-zero value in
+--     'Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT'::@rasterizationStream@
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-07620# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClamp depthClamp>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClampEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-07621# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_POLYGON_MODE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-07622# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-07623# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-alphaToCoverageEnable-08919# If the
+--     bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT'
+--     dynamic state enabled, and @alphaToCoverageEnable@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-fragmentoutput Fragment Output Interface>
+--     /must/ contain a variable for the alpha @Component@ word in
+--     @Location@ 0 at @Index@ 0
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-alphaToCoverageEnable-08920# If a shader
+--     object is bound to any graphics stage, and the most recent call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT'
+--     in the current command buffer set @alphaToCoverageEnable@ to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-fragmentoutput Fragment Output Interface>
+--     /must/ contain a variable for the alpha @Component@ word in
+--     @Location@ 0 at @Index@ 0
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-07624# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-07625# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-alphaToOne alphaToOne>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToOneEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-07626# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-logicOp logicOp>
+--     feature is enabled, a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLogicOpEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-07627# If a shader object is bound
+--     to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and there are color
+--     attachments bound, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-07629# If a shader object is bound
+--     to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and there are color
+--     attachments bound, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-07630# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryStreams geometryStreams>
+--     feature is enabled, and a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
+--     stage or a graphics pipeline is bound which was created with both a
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
+--     stage and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_STREAM_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationStreamEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-07631# If the
+--     @VK_EXT_conservative_rasterization@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetConservativeRasterizationModeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-07632# If the
+--     @VK_EXT_conservative_rasterization@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @conservativeRasterizationMode@ is
+--     'Vulkan.Extensions.VK_EXT_conservative_rasterization.CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT',
+--     then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetExtraPrimitiveOverestimationSizeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-conservativePointAndLineRasterization-07499#
+--     If the @VK_EXT_conservative_rasterization@ extension is enabled,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-conservativePointAndLineRasterization conservativePointAndLineRasterization>
+--     is not supported, a shader object is bound to any graphics stage or
+--     a graphics pipeline is bound, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line or point topology class, then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @conservativeRasterizationMode@ /must/ be
+--     'Vulkan.Extensions.VK_EXT_conservative_rasterization.CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-07633# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClipEnable depthClipEnable>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT'
+--     dynamic state, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-07636# If the
+--     @VK_EXT_provoking_vertex@ extension is enabled, a shader object is
+--     bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetProvokingVertexModeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-08666# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
+--     features are enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line topology class, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-08669# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
+--     features are enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line topology class, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-07849# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
+--     features are enabled and a shader object is bound to any graphics
+--     stage, or a bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @stippledLineEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then
+--     'Vulkan.Core14.Promoted_From_VK_KHR_line_rasterization.cmdSetLineStipple'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-10608# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line topology class, and the current @lineRasterizationMode@
+--     is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_BRESENHAM'
+--     or
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH',
+--     then the current @alphaToCoverageEnable@, @alphaToOneEnable@ and
+--     @sampleShadingEnable@ states /must/ all be
+--     'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-07639# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClipControl depthClipControl>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipNegativeOneToOneEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-09650# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClampControl depthClampControl>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @depthClampEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_depth_clamp_control.cmdSetDepthClampRangeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-07640# If the
+--     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportWScalingEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-07641# If the
+--     @VK_NV_viewport_swizzle@ extension is enabled, and a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-07642# If the
+--     @VK_NV_fragment_coverage_to_color@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-07643# If the
+--     @VK_NV_fragment_coverage_to_color@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @coverageToColorEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-07644# If the
+--     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationModeNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-07645# If the
+--     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @coverageModulationMode@ is any value other than
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.COVERAGE_MODULATION_MODE_NONE_NV',
+--     then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-07646# If the
+--     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @coverageModulationTableEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-07647# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetShadingRateImageEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-pipelineFragmentShadingRate-09238# If
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-07648# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-representativeFragmentTest representativeFragmentTest>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRepresentativeFragmentTestEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-07649# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-coverageReductionMode coverageReductionMode>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageReductionModeNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-rasterizationSamples-07471# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, and the current subpass does not use any color
+--     and\/or depth\/stencil attachments, then the @rasterizationSamples@
+--     in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     /must/ follow the rules for a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-noattachments zero-attachment subpass>
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-samples-07472# If the bound graphics
+--     pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
+--     state enabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state disabled, then the @samples@ parameter in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
+--     /must/ be greater or equal to the
+--     'Vulkan.Core10.GraphicsPipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
+--     parameter used to create the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-samples-07473# If the bound graphics
+--     pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
+--     state and
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     states enabled, then the @samples@ parameter in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
+--     /must/ be greater or equal to the @rasterizationSamples@ parameter
+--     in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-09211# If the bound graphics
+--     pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, or a shader object is bound to any graphics stage,
+--     and the current render pass instance includes a
+--     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'
+--     structure with @multisampledRenderToSingleSampledEnable@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then the
+--     @rasterizationSamples@ in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     /must/ be the same as the @rasterizationSamples@ member of that
+--     structure
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-firstAttachment-07476# If a shader
+--     object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--     dynamic states enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
+--     in the current command buffer prior to this drawing command /must/
+--     have set a value for all active color attachments
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-firstAttachment-07478# If a shader
+--     object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT'
+--     dynamic states enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
+--     in the current command buffer prior to this drawing command /must/
+--     have set a value for all active color attachments
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-advancedBlendMaxColorAttachments-07480#
+--     If a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
+--     and
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--     dynamic states enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and an active color
+--     attachment
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @blendEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then the
+--     number of active color attachments /must/ not exceed
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-advancedBlendMaxColorAttachments advancedBlendMaxColorAttachments>
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-10862# If a graphics pipeline is
+--     bound was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
+--     , but not the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command for all
+--     active color attachments with the @blendEnable@
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-rasterizerDiscardEnable-10863# If a
+--     graphics pipeline is bound was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT',
+--     but not the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command for all
+--     active color attachments with the @blendEnable@
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-10864# If a shader object is bound
+--     to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
+--     and
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then either
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command for all
+--     active color attachments with the @blendEnable@
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-primitivesGeneratedQueryWithNonZeroStreams-07481#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>
+--     feature is not enabled and the
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
+--     query is active, and the bound graphics pipeline was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_STREAM_EXT'
+--     state enabled, the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationStreamEXT'
+--     /must/ have set the @rasterizationStream@ to zero
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-sampleLocationsPerPixel-07482# If the
+--     bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state enabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state disabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then the @sampleLocationsPerPixel@ member of @pSampleLocationsInfo@
+--     in the last call to
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     /must/ equal the @rasterizationSamples@ member of the
+--     'Vulkan.Core10.GraphicsPipeline.PipelineMultisampleStateCreateInfo'
+--     structure the bound graphics pipeline has been created with
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-sampleLocationsPerPixel-07483# If the
+--     bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state enabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then the @sampleLocationsPerPixel@ member of @pSampleLocationsInfo@
+--     in the last call to
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     /must/ equal the @rasterizationSamples@ parameter of the last call
+--     to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-sampleLocationsEnable-07484# If a shader
+--     object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage, or the bound graphics pipeline was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     state enabled, and @sampleLocationsEnable@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT'
+--     then the current active depth attachment /must/ have been created
+--     with the
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'
+--     bit set
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-sampleLocationsEnable-07485# If a shader
+--     object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage, or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state enabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     state enabled, and if @sampleLocationsEnable@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
+--     then the @sampleLocationsInfo.maxSampleLocationGridSize.width@ in
+--     the last call to
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     /must/ evenly divide
+--     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.width@
+--     as returned by
+--     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
+--     with a @samples@ parameter equaling @rasterizationSamples@
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-sampleLocationsEnable-07486# If a shader
+--     object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage, or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state enabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     state enabled, and if @sampleLocationsEnable@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
+--     then the @sampleLocationsInfo.maxSampleLocationGridSize.height@ in
+--     the last call to
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     /must/ evenly divide
+--     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.height@
+--     as returned by
+--     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
+--     with a @samples@ parameter equaling @rasterizationSamples@
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-sampleLocationsEnable-07487# If a shader
+--     object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage, or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     state enabled, and if @sampleLocationsEnable@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
+--     the fragment shader code /must/ not statically use the extended
+--     instruction @InterpolateAtSample@
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-sampleLocationsEnable-07936# If the
+--     bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state disabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then @sampleLocationsInfo.sampleLocationGridSize.width@ /must/
+--     evenly divide
+--     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.width@
+--     as returned by
+--     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
+--     with a @samples@ parameter equaling the value of
+--     @rasterizationSamples@ in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-sampleLocationsEnable-07937# If the
+--     bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state disabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then @sampleLocationsInfo.sampleLocationGridSize.height@ /must/
+--     evenly divide
+--     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.height@
+--     as returned by
+--     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
+--     with a @samples@ parameter equaling the value of
+--     @rasterizationSamples@ in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-sampleLocationsEnable-07938# If the
+--     bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state disabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then @sampleLocationsInfo.sampleLocationsPerPixel@ /must/ equal
+--     @rasterizationSamples@ in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-coverageModulationTableEnable-07488# If
+--     a shader object is bound to any graphics stage or the bound graphics
+--     pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV'
+--     state enabled, and the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV'
+--     set @coverageModulationTableEnable@ to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then the
+--     @coverageModulationTableCount@ parameter in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableNV'
+--     /must/ equal the current @rasterizationSamples@ divided by the
+--     number of color samples in the current active color attachment
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-rasterizationSamples-07489# If the
+--     @VK_NV_framebuffer_mixed_samples@ extension is enabled, and if
+--     current subpass has a depth\/stencil attachment and depth test,
+--     stencil test, or depth bounds test are enabled in the bound
+--     pipeline, then the current @rasterizationSamples@ /must/ be the same
+--     as the sample count of the depth\/stencil attachment
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-coverageToColorEnable-07490# If the
+--     bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
+--     state enabled and the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
+--     set the @coverageToColorEnable@ to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then there /must/ be an
+--     active color attachment at the location selected by the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
+--     @coverageToColorLocation@, with a
+--     'Vulkan.Core10.Enums.Format.Format' of
+--     'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R8_SINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R16_UINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R16_SINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R32_UINT', or
+--     'Vulkan.Core10.Enums.Format.FORMAT_R32_SINT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-rasterizerDiscardEnable-09420# If the
+--     @VK_NV_fragment_coverage_to_color@ extension is enabled, and a
+--     shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage, and the most recent call to
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
+--     in the current command buffer set @rasterizerDiscardEnable@ to
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
+--     set the @coverageToColorEnable@ to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then there /must/ be an
+--     active color attachment at the location selected by the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
+--     @coverageToColorLocation@, with a
+--     'Vulkan.Core10.Enums.Format.Format' of
+--     'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R8_SINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R16_UINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R16_SINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R32_UINT', or
+--     'Vulkan.Core10.Enums.Format.FORMAT_R32_SINT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-coverageReductionMode-07491# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-coverageReductionMode coverageReductionMode>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV'
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     dynamic states enabled, then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current values>
+--     of @coverageReductionMode@, @rasterizationSamples@, the sample
+--     counts for the color and depth\/stencil attachments (if the subpass
+--     has them) /must/ be a valid combination returned by
+--     'Vulkan.Extensions.VK_NV_coverage_reduction_mode.getPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-viewportCount-07492# 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_SWIZZLE_NV'
+--     dynamic state enabled, 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-vkCmdDrawMeshTasksEXT-viewportCount-07493# 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_SWIZZLE_NV'
+--     dynamic states enabled then the @viewportCount@ parameter in the
+--     last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
+--     /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-vkCmdDrawMeshTasksEXT-viewportCount-09421# If the
+--     @VK_NV_viewport_swizzle@ extension is enabled, and a shader object
+--     is bound to any graphics stage, then the @viewportCount@ parameter
+--     in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
+--     /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-vkCmdDrawMeshTasksEXT-rasterizationSamples-07494# If the
+--     @VK_NV_framebuffer_mixed_samples@ extension is enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-coverageReductionMode coverageReductionMode>
+--     feature is not enabled, or the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @coverageReductionMode@ is not
+--     'Vulkan.Extensions.VK_NV_coverage_reduction_mode.COVERAGE_REDUCTION_MODE_TRUNCATE_NV',
+--     and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizationSamples@ is greater than sample count of the color
+--     attachment, then
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-sampleshading sample shading>
+--     /must/ be disabled
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-stippledLineEnable-07495# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic states enabled, and if the current @stippledLineEnable@
+--     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
+--     @lineRasterizationMode@ state is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_RECTANGULAR',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-stippledLineEnable-07496# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic states enabled, and if the current @stippledLineEnable@
+--     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
+--     @lineRasterizationMode@ state is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_BRESENHAM',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-stippledLineEnable-07497# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic states enabled, and if the current @stippledLineEnable@
+--     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
+--     @lineRasterizationMode@ state is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-stippledLineEnable-07498# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic states enabled, and if the current @stippledLineEnable@
+--     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
+--     @lineRasterizationMode@ state is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_DEFAULT',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>
+--     feature /must/ be enabled and
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@strictLines@
+--     /must/ be 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-stage-07073# If the bound pipeline was
+--     created with the
+--     'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo'::@stage@
+--     member of an element of
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'::@pStages@
+--     set to
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT',
+--     then
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-mesh-shader Mesh Shader Queries>
+--     /must/ not be active
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-08877# If a shader object is bound
+--     to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-07850# If dynamic state was
+--     inherited from
+--     'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV',
+--     it /must/ be set in the current command buffer prior to this drawing
+--     command
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-nextStage-10745# For each shader object
+--     bound to a graphics stage, except for shader object bound to the
+--     last graphics stage in the logical pipeline, it /must/ have been
+--     created with a @nextStage@ including the corresponding bit to the
+--     shader object bound to the following graphics stage in the logical
+--     pipeline
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-08684# If there is no bound
+--     graphics pipeline,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-08685# If there is no bound
+--     graphics pipeline, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellationShader>
+--     feature is enabled,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-08686# If there is no bound
+--     graphics pipeline, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellationShader>
+--     feature is enabled,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-08687# If there is no bound
+--     graphics pipeline, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometryShader>
+--     feature is enabled,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-08688# If there is no bound
+--     graphics pipeline,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-08689# If there is no bound
+--     graphics pipeline, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
+--     feature is enabled,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-08690# If there is no bound
+--     graphics pipeline, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
+--     feature is enabled,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-08693# If there is no bound
+--     graphics pipeline, and at least one of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
+--     features is enabled, one of the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--     stages /must/ have a valid 'Vulkan.Extensions.Handles.ShaderEXT'
+--     bound, and the other /must/ have no
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-08696# If there is no bound
+--     graphics pipeline, and a valid 'Vulkan.Extensions.Handles.ShaderEXT'
+--     is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage, there /must/ be no 'Vulkan.Extensions.Handles.ShaderEXT'
+--     bound to either the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--     stage or the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--     stage
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-08698# If any graphics shader is
+--     bound which was created with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
+--     flag, then all shaders created with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
+--     flag in the same
+--     'Vulkan.Extensions.VK_EXT_shader_object.createShadersEXT' call
+--     /must/ also be bound
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-08699# If any graphics shader is
+--     bound which was created with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
+--     flag, any stages in between stages whose shaders which did not
+--     create a shader with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
+--     flag as part of the same
+--     'Vulkan.Extensions.VK_EXT_shader_object.createShadersEXT' call
+--     /must/ not have any 'Vulkan.Extensions.Handles.ShaderEXT' bound
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-08878# All bound graphics shader
+--     objects /must/ have been created with identical or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-identically-defined identically defined>
+--     push constant ranges
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-08879# All bound graphics shader
+--     objects /must/ have either been created with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag set, or with identical or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-identically-defined identically defined>
+--     arrays of descriptor set layouts
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-colorAttachmentCount-09372# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and a
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
+--     equal to @1@, a color attachment with a resolve mode of
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID',
+--     and a fragment shader is bound, it /must/ not declare the
+--     @DepthReplacing@ or @StencilRefReplacingEXT@ execution modes
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-pDynamicStates-08715# If the bound
+--     graphics pipeline state includes a fragment shader stage, was
+--     created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE'
+--     set in
+--     'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@,
+--     and the fragment shader declares the @EarlyFragmentTests@ execution
+--     mode and uses @OpDepthAttachmentReadEXT@, the @depthWriteEnable@
+--     parameter in the last call to
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthWriteEnable'
+--     /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-pDynamicStates-08716# If the bound
+--     graphics pipeline state includes a fragment shader stage, was
+--     created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_WRITE_MASK'
+--     set in
+--     'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@,
+--     and the fragment shader declares the @EarlyFragmentTests@ execution
+--     mode and uses @OpStencilAttachmentReadEXT@, the @writeMask@
+--     parameter in the last call to
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilWriteMask' /must/
+--     be @0@
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-09116# If a shader object is bound
+--     to any graphics stage or the bound graphics pipeline was created
+--     with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT',
+--     and the format of any color attachment is
+--     'Vulkan.Core10.Enums.Format.FORMAT_E5B9G9R9_UFLOAT_PACK32', the
+--     corresponding element of the @pColorWriteMasks@ parameter of
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
+--     /must/ either include all of
+--     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_R_BIT',
+--     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_G_BIT',
+--     and
+--     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_B_BIT',
+--     or none of them
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-maxFragmentDualSrcAttachments-09239# If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blending blending>
+--     is enabled for any attachment where either the source or destination
+--     blend factors for that attachment
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-dsb use the secondary color input>,
+--     the maximum value of @Location@ for any output attachment
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-staticuse statically used>
+--     in the @Fragment@ @Execution@ @Model@ executed by this command
+--     /must/ be less than
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFragmentDualSrcAttachments maxFragmentDualSrcAttachments>
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-09548# If the current render pass
+--     was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there is no shader object bound to any graphics stage, the value of
+--     each element of
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingAttachmentLocationInfo'::@pColorAttachmentLocations@
+--     in the bound pipeline /must/ match the value for the corresponding
+--     locations set currently in the current render pass instance
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-09549# If the current render pass
+--     was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     and there is no shader object bound to any graphics stage, the value
+--     of each element of
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pColorAttachmentInputIndices@
+--     in the bound pipeline /must/ match the value for the corresponding
+--     index set currently in the current render pass instance
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-10927# If the current render pass
+--     was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     and there is no shader object bound to any graphics stage, the value
+--     of
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pDepthInputAttachmentIndex@
+--     in the bound pipeline /must/ match the value set currently in the
+--     current render pass instance
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-10928# If the current render pass
+--     was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     and there is no shader object bound to any graphics stage, the value
+--     of
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pStencilInputAttachmentIndex@
+--     in the bound pipeline /must/ match the value set currently in the
+--     current render pass instance
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-09642# If the current render pass
+--     was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     with the
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT'
+--     flag, the bound graphics pipeline /must/ have been created with
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-09643# If the bound graphics
+--     pipeline was created with
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT',
+--     the current render pass /must/ have begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     with the
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT'
+--     flag
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-10677# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model>
+--     is enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tileShadingPerTileDraw tileShadingPerTileDraw>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-10772# If a shader object is bound
+--     to any graphics stage, /multiview/ functionality /must/ not be
+--     enabled in the current render pass
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-multiviewPerViewViewports-12262# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiviewPerViewViewports multiviewPerViewViewports>
+--     feature is enabled, then the index of the most significant bit in
+--     current render pass instance @viewMask@ /must/ be less than the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @viewportCount@
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-multiviewPerViewViewports-12263# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiviewPerViewViewports multiviewPerViewViewports>
+--     feature is enabled, then the index of the most significant bit in
+--     current render pass instance @viewMask@ /must/ be less than the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @scissorCount@
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-flags-11521# If current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@flags@
+--     which includes
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_FRAGMENT_REGION_BIT_EXT',
+--     and if
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-sampleshading sample shading>
+--     is enabled (explicitly or implicitly), then the minimum fraction for
+--     sample shading /must/ equal 0.0
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-11522# If the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and contains a custom resolve, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, the graphics pipeline bound /must/ have been
+--     created with a
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-11523# If the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and does not contain a custom resolve, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, the graphics pipeline bound /must/ not have
+--     been created with a
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-customResolve-11524# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, the graphics pipeline
+--     bound /must/ have been created with
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@
+--     as 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-customResolve-11525# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and contains a custom resolve, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not been recorded in the render pass instance, the graphics
+--     pipeline bound /must/ have been created with
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@
+--     as 'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-11861# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled and the current render pass instance was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and contains a custom resolve, the bound graphics pipeline /must/
+--     have been created with a
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@colorAttachmentCount@
+--     equal to
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-11862# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and the current render pass instance was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, 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 an @resolveImageView@ 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_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@
+--     used to create the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-11863# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and the current render pass instance was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, 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 an @resolveImageView@ equal to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have the
+--     corresponding element of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@
+--     used to create the bound pipeline equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-dynamicRenderingUnusedAttachments-11864#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled, the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, 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 an @resolveImageView@ 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_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@
+--     used to create the bound graphics pipeline, or the corresponding
+--     element of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@,
+--     if it exists, /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-11865# If the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@
+--     used to create the bound graphics pipeline /must/ be equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-11866# If current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@
+--     used to create the 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->resolveImageView@
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-dynamicRenderingUnusedAttachments-11867#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@
+--     used to create the bound graphics pipeline was not equal to the
+--     'Vulkan.Core10.Enums.Format.Format' used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@,
+--     the value of the format /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-11868# If the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@
+--     used to create the bound graphics pipeline /must/ be equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-11869# If current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@
+--     used to create the 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->resolveImageView@
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-dynamicRenderingUnusedAttachments-11870#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@
+--     used to create the bound graphics pipeline was not equal to the
+--     'Vulkan.Core10.Enums.Format.Format' used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@,
+--     the value of the format /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-colorAttachmentCount-11871# If 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@ and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, then for each element
+--     of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
+--     array with a @resolveImageView@ not equal to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', the @resolveImageView@
+--     /must/ have been created with a sample count equal to the value of
+--     @rasterizationSamples@ for the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-pDepthAttachment-11872# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     @rasterizationSamples@ for the bound graphics pipeline /must/ be
+--     equal to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-pStencilAttachment-11873# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     @rasterizationSamples@ for the bound graphics pipeline /must/ be
+--     equal to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-customResolve-11529# If a shader object
+--     is bound to the fragment stage, the current render pass instance was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     a fragment density map attachment is active, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been called, then the fragment shader object bound /must/ have
+--     been created with
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@
+--     as 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-customResolve-11530# If a shader object
+--     is bound to the fragment stage, the current render pass instance was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and contains a custom resolve, a fragment density map attachment is
+--     active, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been called, then the fragment shader object bound
+--     /must/ have been created with
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@
+--     as 'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-flags-13361# If there are any shader
+--     objects bound that were created with @flags@ that includes the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     bit, then all bound shader objects /must/ have been created with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     bit
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-flags-13362# If there are any shader
+--     objects bound that were created with @flags@ that includes the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     bit, then the pipeline layout of the bound descriptor sets /must/
+--     have been created with
+--     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT'
+--     set
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-flags-13363# If there are any shader
+--     objects bound that were created with @flags@ that includes the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     bit, and any of the descriptor set layouts used to create the
+--     pipeline layout of the bound descriptor sets were created with any
+--     binding’s
+--     'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutBinding'::@stageFlags@
+--     set with
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT',
+--     then there /must/ be no binding with
+--     'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutBinding'::@stageFlags@
+--     set with
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-flags-13364# If there are any shader
+--     objects bound that were created with @flags@ that includes both the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     and
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
+--     bits, the pipeline layout of the bound descriptor sets /must/ have
+--     been created with
+--     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_NO_TASK_SHADER_BIT_KHR'
+--     set
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-flags-13365# If there are any shader
+--     objects bound that were created with @flags@ that includes both the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     and
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
+--     bits, there /must/ be no shader object bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--     stage
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-stage-06480# The bound graphics pipeline
+--     /must/ not have been created with the
+--     'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo'::@stage@
+--     member of any element of
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'::@pStages@
+--     set to
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-pStages-10680# If there is no bound
+--     graphics pipeline,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     not have last bound the @pStages@ element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
+--     with a valid shader object other than
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-07074#
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-transform-feedback Transform Feedback Queries>
+--     /must/ not be active
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-07075#
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-primitives-generated Primitives Generated Queries>
+--     /must/ not be active
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-pipelineStatistics-07076# The
+--     @pipelineStatistics@ member used to create any active
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-pipestats Pipeline Statistics Query>
+--     /must/ not contain
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT',
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT',
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT',
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT',
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT',
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT',
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT',
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT',
+--     or
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-08694# If there is no bound
+--     graphics pipeline, and both the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
+--     features are enabled, and a valid
+--     'Vulkan.Extensions.Handles.ShaderEXT' is bound the to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--     stage, and that 'Vulkan.Extensions.Handles.ShaderEXT' was created
+--     without the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
+--     flag, a valid 'Vulkan.Extensions.Handles.ShaderEXT' /must/ be bound
+--     to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--     stage
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-08695# If there is no bound
+--     graphics pipeline, and both the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
+--     features are enabled, and a valid
+--     'Vulkan.Extensions.Handles.ShaderEXT' is bound the to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--     stage, and that 'Vulkan.Extensions.Handles.ShaderEXT' was created
+--     with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
+--     flag, there /must/ be no 'Vulkan.Extensions.Handles.ShaderEXT' bound
+--     to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--     stage
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-TaskEXT-07322# If the current pipeline
+--     bound to
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
+--     contains a shader using the @TaskEXT@ @Execution@ @Model@,
+--     @groupCountX@ /must/ be less than or equal to
+--     'PhysicalDeviceMeshShaderPropertiesEXT'::@maxTaskWorkGroupCount@[0]
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-TaskEXT-07323# If the current pipeline
+--     bound to
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
+--     contains a shader using the @TaskEXT@ @Execution@ @Model@,
+--     @groupCountY@ /must/ be less than or equal to
+--     'PhysicalDeviceMeshShaderPropertiesEXT'::@maxTaskWorkGroupCount@[1]
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-TaskEXT-07324# If the current pipeline
+--     bound to
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
+--     contains a shader using the @TaskEXT@ @Execution@ @Model@,
+--     @groupCountZ@ /must/ be less than or equal to
+--     'PhysicalDeviceMeshShaderPropertiesEXT'::@maxTaskWorkGroupCount@[2]
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-TaskEXT-07325# If the current pipeline
+--     bound to
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
+--     contains a shader using the @TaskEXT@ @Execution@ @Model@, The
+--     product of @groupCountX@, @groupCountY@ and @groupCountZ@ /must/ be
+--     less than or equal to
+--     'PhysicalDeviceMeshShaderPropertiesEXT'::@maxTaskWorkGroupTotalCount@
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-TaskEXT-07326# If the current pipeline
+--     bound to
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
+--     does not contain a shader using the @TaskEXT@ @Execution@ @Model@,
+--     @groupCountX@ /must/ be less than or equal to
+--     'PhysicalDeviceMeshShaderPropertiesEXT'::@maxMeshWorkGroupCount@[0]
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-TaskEXT-07327# If the current pipeline
+--     bound to
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
+--     does not contain a shader using the @TaskEXT@ @Execution@ @Model@,
+--     @groupCountY@ /must/ be less than or equal to
+--     'PhysicalDeviceMeshShaderPropertiesEXT'::@maxMeshWorkGroupCount@[1]
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-TaskEXT-07328# If the current pipeline
+--     bound to
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
+--     does not contain a shader using the @TaskEXT@ @Execution@ @Model@,
+--     @groupCountZ@ /must/ be less than or equal to
+--     'PhysicalDeviceMeshShaderPropertiesEXT'::@maxMeshWorkGroupCount@[2]
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-TaskEXT-07329# If the current pipeline
+--     bound to
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
+--     does not contain a shader using the @TaskEXT@ @Execution@ @Model@,
+--     The product of @groupCountX@, @groupCountY@ and @groupCountZ@ /must/
+--     be less than or equal to
+--     'PhysicalDeviceMeshShaderPropertiesEXT'::@maxMeshWorkGroupTotalCount@
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-MeshEXT-07087# The current pipeline
+--     bound to
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
+--     /must/ contain a shader stage using the @MeshEXT@ @Execution@
+--     @Model@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-commandBuffer-parameter# @commandBuffer@
+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-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-vkCmdDrawMeshTasksEXT-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-renderpass# This command /must/ only be
+--     called inside of a render pass instance
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-suspended# This command /must/ not be
+--     called between suspended render pass instances
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-videocoding# This command /must/ only be
+--     called outside of a video coding scope
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Inside                                                                                                                 | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdDrawMeshTasksEXT is affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_mesh_shader VK_EXT_mesh_shader>,
+-- 'Vulkan.Core10.Handles.CommandBuffer'
+cmdDrawMeshTasksEXT :: 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 ()
+cmdDrawMeshTasksEXT commandBuffer
+                      groupCountX
+                      groupCountY
+                      groupCountZ = liftIO $ do
+  let vkCmdDrawMeshTasksEXTPtr = pVkCmdDrawMeshTasksEXT (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  unless (vkCmdDrawMeshTasksEXTPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdDrawMeshTasksEXT is null" Nothing Nothing
+  let vkCmdDrawMeshTasksEXT' = mkVkCmdDrawMeshTasksEXT vkCmdDrawMeshTasksEXTPtr
+  traceAroundEvent "vkCmdDrawMeshTasksEXT" (vkCmdDrawMeshTasksEXT'
+                                              (commandBufferHandle (commandBuffer))
+                                              (groupCountX)
+                                              (groupCountY)
+                                              (groupCountZ))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdDrawMeshTasksIndirectEXT
+  :: FunPtr (Ptr CommandBuffer_T -> Buffer -> DeviceSize -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> DeviceSize -> Word32 -> Word32 -> IO ()
+
+-- | vkCmdDrawMeshTasksIndirectEXT - Issue an indirect mesh tasks draw into a
+-- command buffer
+--
+-- = Description
+--
+-- 'cmdDrawMeshTasksIndirectEXT' behaves similarly to 'cmdDrawMeshTasksEXT'
+-- 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 'DrawMeshTasksIndirectCommandEXT' structures. If
+-- @drawCount@ is less than or equal to one, @stride@ is ignored.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-magFilter-04553# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
+--     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR',
+--     @reductionMode@ equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
+--     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-vkCmdDrawMeshTasksIndirectEXT-magFilter-09598# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
+--     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR' and
+--     @reductionMode@ equal to either
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
+--     or
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
+--     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_MINMAX_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-mipmapMode-04770# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
+--     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR',
+--     @reductionMode@ equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
+--     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-vkCmdDrawMeshTasksIndirectEXT-mipmapMode-09599# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
+--     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'
+--     and @reductionMode@ equal to either
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
+--     or
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
+--     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_MINMAX_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-unnormalizedCoordinates-09635#
+--     If a 'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the image view’s @levelCount@ and @layerCount@ /must/ be 1
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08609# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the image view’s @viewType@ /must/ be
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D' or
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08610# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the sampler /must/ not be used with any of the SPIR-V
+--     @OpImageSample*@ or @OpImageSparseSample*@ instructions with
+--     @ImplicitLod@, @Dref@ or @Proj@ in their name
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08611# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the sampler /must/ not be used with any of the SPIR-V
+--     @OpImageSample*@ or @OpImageSparseSample*@ instructions that
+--     includes a LOD bias or any offset values
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-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-vkCmdDrawMeshTasksIndirectEXT-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-vkCmdDrawMeshTasksIndirectEXT-None-07888# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'
+--     descriptor is accessed using atomic operations as a result of this
+--     command, then the storage texel buffer’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-buffer-view-format-features format features>
+--     /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-02692# If a
+--     'Vulkan.Core10.Handles.ImageView' is sampled with
+--     'Vulkan.Core10.Enums.Filter.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.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-02693# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_filter_cubic VK_EXT_filter_cubic>
+--     extension is not enabled and any 'Vulkan.Core10.Handles.ImageView'
+--     is sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as a
+--     result of this command, it /must/ not have a
+--     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' of
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE', or
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-filterCubic-02694# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with
+--     'Vulkan.Core10.Enums.Filter.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-vkCmdDrawMeshTasksIndirectEXT-filterCubicMinmax-02695# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with
+--     'Vulkan.Core10.Enums.Filter.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-vkCmdDrawMeshTasksIndirectEXT-cubicRangeClamp-09212# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-cubicRangeClamp cubicRangeClamp>
+--     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
+--     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
+--     a result of this command /must/ not have a
+--     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
+--     equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-reductionMode-09213# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with a
+--     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
+--     equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
+--     as a result of this command /must/ sample with
+--     'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-selectableCubicWeights-09214# If
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-selectableCubicWeights selectableCubicWeights>
+--     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
+--     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
+--     a result of this command /must/ have
+--     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.SamplerCubicWeightsCreateInfoQCOM'::@cubicWeights@
+--     equal to
+--     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-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-vkCmdDrawMeshTasksIndirectEXT-OpTypeImage-07027# For any
+--     'Vulkan.Core10.Handles.ImageView' being written as a storage image
+--     where the image format field of the @OpTypeImage@ is @Unknown@, the
+--     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_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-OpTypeImage-07028# For any
+--     'Vulkan.Core10.Handles.ImageView' being read as a storage image
+--     where the image format field of the @OpTypeImage@ is @Unknown@, the
+--     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_STORAGE_READ_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-OpTypeImage-07029# For any
+--     'Vulkan.Core10.Handles.BufferView' being written as a storage texel
+--     buffer where the image format field of the @OpTypeImage@ is
+--     @Unknown@, the view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
+--     /must/ contain
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-OpTypeImage-07030# Any
+--     'Vulkan.Core10.Handles.BufferView' being read as a storage texel
+--     buffer where the image format field of the @OpTypeImage@ is
+--     @Unknown@ then the view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
+--     /must/ contain
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08600# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
+--     was created with a pipeline layout and statically uses a set /n/, a
+--     descriptor set /must/ have been bound to /n/ at the same pipeline
+--     bind point, with layouts compatible for set /n/ with the layout(s)
+--     used to create the shader, as described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptors-compatibility ???>
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08601# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
+--     was created with a pipeline layout or specified push constant ranges
+--     and statically uses a push constant value, that value /must/ have
+--     been set for the same pipeline bind point, with push constant ranges
+--     that are
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptors-compatibility compatible>
+--     with the push constant range used to create the shader
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-10068# For each array of
+--     resources that is used by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
+--     the indices used to access members of the array /must/ be less than
+--     the descriptor count for the identified binding in the descriptor
+--     sets used by this command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08114# Descriptors in each
+--     bound descriptor set, specified via
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
+--     be valid if they are accessed as described by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
+--     by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
+--     point used by this command and the bound
+--     'Vulkan.Core10.Handles.Pipeline' was not created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-imageLayout-00344# If an image
+--     descriptor is accessed by a shader, the
+--     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' /must/ match the
+--     subresource accessible from the 'Vulkan.Core10.Handles.ImageView' 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>
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08115# If the descriptors
+--     used by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline
+--     bind point were specified via
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', the
+--     bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     without
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08116# Descriptors in bound
+--     descriptor buffers, specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     /must/ be valid if they are dynamically used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
+--     was created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08604# Descriptors in bound
+--     descriptor buffers, specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     /must/ be valid if they are dynamically used by any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     to the pipeline bind point used by this command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08117# If the descriptors
+--     used by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline
+--     bind point were specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08119# If a descriptor is
+--     dynamically used with a 'Vulkan.Core10.Handles.Pipeline' created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     the descriptor memory /must/ be resident
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08605# If a descriptor is
+--     dynamically used with a 'Vulkan.Extensions.Handles.ShaderEXT'
+--     created with a 'Vulkan.Core10.Handles.DescriptorSetLayout' that was
+--     created with
+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     the descriptor memory /must/ be resident
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08606# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject>
+--     feature is not enabled, a valid pipeline /must/ be bound to the
+--     pipeline bind point used by this command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08608# If a pipeline is
+--     bound to the pipeline bind point used by this command, there /must/
+--     not have been any calls to dynamic state setting commands for any
+--     state specified statically in the 'Vulkan.Core10.Handles.Pipeline'
+--     object bound to the pipeline bind point used by this command, since
+--     that pipeline was bound
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-uniformBuffers-06935# If any
+--     stage of the 'Vulkan.Core10.Handles.Pipeline' object bound to the
+--     pipeline bind point used by this command accesses a uniform buffer,
+--     and that stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @uniformBuffers@, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /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-vkCmdDrawMeshTasksIndirectEXT-None-08612# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, and any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     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-vkCmdDrawMeshTasksIndirectEXT-storageBuffers-06936# If any
+--     stage of the 'Vulkan.Core10.Handles.Pipeline' object bound to the
+--     pipeline bind point used by this command accesses a storage buffer,
+--     and that stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @storageBuffers@, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /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-vkCmdDrawMeshTasksIndirectEXT-None-08613# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, and any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     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-vkCmdDrawMeshTasksIndirectEXT-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
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shaders>
+--     /must/ not be a protected resource
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-viewType-07752# If a
+--     'Vulkan.Core10.Handles.ImageView' is accessed as a result of this
+--     command, then the image view’s @viewType@ /must/ match the @Dim@
+--     operand of the @OpTypeImage@ as described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-image-dimensions ???>
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-format-07753# If a
+--     'Vulkan.Core10.Handles.ImageView' or
+--     'Vulkan.Core10.Handles.BufferView' is accessed as a result of this
+--     command, then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-numericformat numeric type>
+--     of the view’s @format@ and the @Sampled@ @Type@ operand of the
+--     @OpTypeImage@ /must/ match
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-OpImageWrite-08795# If a
+--     'Vulkan.Core10.Handles.ImageView' created with a format other than
+--     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM' 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-vkCmdDrawMeshTasksIndirectEXT-OpImageWrite-08796# If a
+--     'Vulkan.Core10.Handles.ImageView' created with the format
+--     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM' is accessed using
+--     @OpImageWrite@ as a result of this command, then the @Type@ of the
+--     @Texel@ operand of that instruction /must/ have four components
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-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-vkCmdDrawMeshTasksIndirectEXT-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-vkCmdDrawMeshTasksIndirectEXT-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-vkCmdDrawMeshTasksIndirectEXT-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-vkCmdDrawMeshTasksIndirectEXT-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-vkCmdDrawMeshTasksIndirectEXT-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-vkCmdDrawMeshTasksIndirectEXT-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-vkCmdDrawMeshTasksIndirectEXT-OpImageSampleWeightedQCOM-06971#
+--     If @OpImageSampleWeightedQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-OpImageSampleWeightedQCOM-06972#
+--     If @OpImageSampleWeightedQCOM@ uses a
+--     'Vulkan.Core10.Handles.ImageView' as a sample weight image 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-OpImageBoxFilterQCOM-06973# If
+--     @OpImageBoxFilterQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-OpImageBlockMatchSSDQCOM-06974#
+--     If @OpImageBlockMatchSSDQCOM@ is used to read from an
+--     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
+--     or
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_SXD_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-OpImageBlockMatchSADQCOM-12420#
+--     If @OpImageBlockMatchSADQCOM@ is used to read from an
+--     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
+--     or
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_SXD_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-OpImageBlockMatchSADQCOM-06976#
+--     If @OpImageBlockMatchSADQCOM@ or OpImageBlockMatchSSDQCOM is used to
+--     read from a reference image as result of this command, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-blockMatchExtendedClampToEdge blockMatchExtendedClampToEdge>
+--     feature is not enabled or the /input/ sampler was not created with
+--     both @addressModeU@ and @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--     then the specified reference coordinates /must/ not fail
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-OpImageSampleWeightedQCOM-06977#
+--     If @OpImageSampleWeightedQCOM@, @OpImageBoxFilterQCOM@,
+--     @OpImageBlockMatchWindowSSDQCOM@, @OpImageBlockMatchWindowSADQCOM@,
+--     @OpImageBlockMatchGatherSSDQCOM@, @OpImageBlockMatchGatherSADQCOM@,
+--     @OpImageBlockMatchSSDQCOM@, or @OpImageBlockMatchSADQCOM@ uses a
+--     'Vulkan.Core10.Handles.Sampler' as a result of this command, then
+--     the sampler /must/ have been created with
+--     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-OpImageSampleWeightedQCOM-06978#
+--     If any command other than @OpImageSampleWeightedQCOM@,
+--     @OpImageBoxFilterQCOM@, @OpImageBlockMatchWindowSSDQCOM@,
+--     @OpImageBlockMatchWindowSADQCOM@, @OpImageBlockMatchGatherSSDQCOM@,
+--     @OpImageBlockMatchGatherSADQCOM@, @OpImageBlockMatchSSDQCOM@, or
+--     @OpImageBlockMatchSADQCOM@ uses a 'Vulkan.Core10.Handles.Sampler' as
+--     a result of this command, then the sampler /must/ not have been
+--     created with
+--     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-OpImageBlockMatchWindow-09215#
+--     If a @OpImageBlockMatchWindow*QCOM@ or
+--     @OpImageBlockMatchGather*QCOM@ instruction is used to read from an
+--     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-OpImageBlockMatchWindow-09216#
+--     If a @OpImageBlockMatchWindow*QCOM@ or
+--     @OpImageBlockMatchGather*QCOM@ instruction is used to read from an
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the image view’s format /must/ be a single-component format
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-OpImageBlockMatchWindow-09217#
+--     If a @OpImageBlockMatchWindow*QCOM@ or
+--     @OpImageBlockMatchGather*QCOM@ read from a reference image as result
+--     of this command, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-blockMatchExtendedClampToEdge blockMatchExtendedClampToEdge>
+--     feature is not enabled or the /input/ sampler was not created with
+--     both @addressModeU@ and @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--     then the specified reference coordinates /must/ not fail
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-OpImageBlockMatchWindow-12421#
+--     If a @OpImageBlockMatchWindow*QCOM@ or
+--     @OpImageBlockMatchGather*QCOM@ instruction uses a
+--     'Vulkan.Core10.Handles.Sampler' as a result of this command, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-blockMatchExtendedClampToEdge blockMatchExtendedClampToEdge>
+--     is not enabled, the /input/ sampler /must/ not have been created
+--     with either @addressModeU@ or @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-addressModeU-12422# If a
+--     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     instruction uses a 'Vulkan.Core10.Handles.Sampler' as a result of
+--     this command, and the /input/ sampler was created with either
+--     @addressModeU@ or @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE',
+--     then the sampler /must/ have been created with both @addressModeU@
+--     and @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07288# Any shader
+--     invocation executed by this command /must/
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-termination terminate>
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-09600# If a descriptor with
+--     type equal to any of
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',
+--     or
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'
+--     is accessed as a result of this command, all image subresources
+--     identified by that descriptor /must/ be in the image layout
+--     identified when the descriptor was written
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-micromap-11636# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command through an
+--     @OpRayQueryProceedKHR@ operation , the @VK_EXT_opacity_micromap@
+--     extension is not enabled, and the acceleration structure is built
+--     using geometry with a
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapKHR'
+--     structure included in its @pNext@ chain, the shader /must/ have
+--     specified a @OpacityMicromapIdKHR@ execution mode with its
+--     specialization constant operand equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-micromap-11637# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command and the
+--     acceleration structure was constructed through deserialization, all
+--     micromap arrays referenced by the acceleration structure that were
+--     not replaced by an acceleration structure update command /must/ have
+--     been deserialized using the serialized data of the corresponding
+--     micromaps used to originally build the acceleration structure prior
+--     to the execution of this command on the device
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-micromap-11638# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command and the
+--     acceleration structure is built using geometry with an @indexBuffer@
+--     containing both
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.OpacityMicromapSpecialIndexKHR'
+--     values and indices into an associated micromap array, any
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command /must/ not have been created with @flags@ that
+--     includes
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_KHR'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-micromap-11639# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command and the
+--     acceleration structure is built using geometry with an @indexBuffer@
+--     containing both
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.OpacityMicromapSpecialIndexKHR'
+--     values and indices into an associated micromap array, any
+--     'Vulkan.Extensions.Handles.ShaderEXT' that accessed the descriptor
+--     /must/ not have been created with @flags@ that includes
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-commandBuffer-10746# The
+--     'Vulkan.Core10.Handles.DeviceMemory' object allocated from a
+--     'Vulkan.Core10.DeviceInitialization.MemoryHeap' with the
+--     'Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_TILE_MEMORY_BIT_QCOM'
+--     property that is bound to a resource accessed as a result of this
+--     command /must/ be the active
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-bind-tile-memory bound tile memory object>
+--     in @commandBuffer@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-10678# If this command is
+--     recorded inside a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-tile-shading tile shading render pass>
+--     instance, the stages corresponding to the pipeline bind point used
+--     by this command /must/ only include
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT',
+--     and\/or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-10679# If this command is
+--     recorded where
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model>
+--     is enabled, there /must/ be no access to any image while the image
+--     was be transitioned to the
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
+--     layout
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-pDescription-09900# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the
+--     underlying 'Vulkan.Extensions.Handles.TensorARM' object /must/ have
+--     been created with the
+--     'Vulkan.Extensions.VK_ARM_tensors.TENSOR_USAGE_SHADER_BIT_ARM' usage
+--     flag set
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-dimensionCount-09905# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the @Rank@
+--     of the @OpTypeTensorARM@ of the tensor resource variable /must/ be
+--     equal to the @dimensionCount@ provided via
+--     'Vulkan.Extensions.VK_ARM_tensors.TensorCreateInfoARM'::@pDescription@
+--     when creating the underlying 'Vulkan.Extensions.Handles.TensorARM'
+--     object
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-OpTypeTensorARM-09906# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the element
+--     type of the @OpTypeTensorARM@ of the tensor resource variable /must/
+--     be
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-tensor-formats compatible>
+--     with the 'Vulkan.Core10.Enums.Format.Format' of the
+--     'Vulkan.Extensions.Handles.TensorViewARM' used for the access
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-11297# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses a @OpTypeStruct@ decorated with @Block@ or
+--     @BufferBlock@ using that mapping, the calculated offset for the
+--     resource heap /must/ be a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-bufferDescriptorAlignment bufferDescriptorAlignment>
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-11298# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses an @OpTypeImage@ or @OpTypeSampledImage@ using
+--     that mapping, the calculated offset for the resource heap /must/ be
+--     a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-imageDescriptorAlignment imageDescriptorAlignment>
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-11299# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses an @OpTypeSampler@ or @OpTypeSampledImage@
+--     using that mapping, the calculated offset for the sampler heap
+--     /must/ be a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-samplerDescriptorAlignment samplerDescriptorAlignment>
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-11397# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses an @OpTypeTensorARM@ using that mapping, the
+--     calculated offset for the resource heap /must/ be a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-tensorDescriptorAlignment tensorDescriptorAlignment>
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-11300# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a
+--     multiple of 4
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-11301# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' backed by physical
+--     memory at every offset specified by each mapping
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-11302# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-11304# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a
+--     multiple of 8
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-11305# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' backed by physical
+--     memory at every offset specified by each mapping
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-11306# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address pointed to by the address in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-11308# For each
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps descriptor heap>
+--     that is statically used by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
+--     either directly or via a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>,
+--     a valid descriptor heap /must/ be bound
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-11309# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     was created as a 'Vulkan.Extensions.Handles.ShaderEXT' with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag or as part of a pipeline with the
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag, execution of this command /must/ not result in any descriptor
+--     read accessing data outside of the user range of the respective heap
+--     bound by @vkCmdBind*HeapEXT@ commands
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-11372# If any stage of the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command accesses a uniform buffer or uniform
+--     texel buffer through a descriptor in the bound resource heap, that
+--     stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @uniformBuffers@, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /must/ not access values outside
+--     of the range of the descriptor specified via
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+--     when the descriptor was written
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-11373# If any stage of the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command accesses a storage buffer or storage
+--     texel buffer through a descriptor in the bound resource heap, that
+--     stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @storageBuffers@, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /must/ not access values outside
+--     of the range of the descriptor specified by
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+--     when the descriptor was written
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-11374# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, and any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     to the pipeline bind point used by this command accesses a uniform
+--     buffer, uniform texel buffer, storage buffer, or storage texel
+--     buffer, that shader /must/ not access values outside of the range of
+--     the buffer as specified by
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+--     when the descriptor was written
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-pBindInfo-11375# If any
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     uses an embedded sampler via a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>,
+--     the value of @pBindInfo->reservedRangeSize@ set for
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.cmdBindSamplerHeapEXT'
+--     /must/ be greater than or equal to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minSamplerHeapReservedRangeWithEmbedded minSamplerHeapReservedRangeWithEmbedded>
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-11376# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     was created as a 'Vulkan.Extensions.Handles.ShaderEXT' with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag or as part of a pipeline with the
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag, and that shader statically uses a push constant value, that
+--     value /must/ have been set by
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.cmdPushDataEXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-11398# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_DATA_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_DATA_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_RESOURCE_HEAP_DATA_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the access
+--     /must/ not be
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-execution-memory-access-bounds out of bounds>
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-11437# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the buffer from
+--     which the address in push data was queried /must/ have been created
+--     with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-11438# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a uniform buffer using that mapping, the
+--     address that the uniform buffer is mapped to /must/ have been
+--     queried from a buffer created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-11441# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a uniform buffer using that mapping, the
+--     address that the uniform buffer is mapped to /must/ be aligned to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minUniformBufferOffsetAlignment minUniformBufferOffsetAlignment>
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-11439# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a storage buffer using that mapping, the
+--     address that the storage buffer is mapped to /must/ have been
+--     queried from a buffer created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_STORAGE_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-11442# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a storage buffer using that mapping, the
+--     address that the storage buffer is mapped to /must/ be aligned to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minStorageBufferOffsetAlignment minStorageBufferOffsetAlignment>
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-11485# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses an acceleration structure using that mapping,
+--     the address that the acceleration structure is mapped to /must/ be
+--     an acceleration structure address retrieved from a
+--     'Vulkan.Extensions.Handles.AccelerationStructureKHR' object via
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.getAccelerationStructureDeviceAddressKHR'
+--     or handle retrieved from a
+--     'Vulkan.Extensions.Handles.AccelerationStructureNV' object via
+--     'Vulkan.Extensions.VK_NV_ray_tracing.getAccelerationStructureHandleNV'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-index-11450# If a shader uses a
+--     sampler descriptor to sample an image as a result of this command,
+--     and that sampler descriptor uses a custom border color with an index
+--     defined by
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.SamplerCustomBorderColorIndexCreateInfoEXT',
+--     the value of
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.SamplerCustomBorderColorIndexCreateInfoEXT'::@index@
+--     /must/ have been registered before this command was recorded, and
+--     still be registered during the sampling operation, with an
+--     identically defined color
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-protectedNoFault-11455# If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, a pipeline is bound to the pipeline bind point
+--     used by this command, or a shader is bound to a shader stage used by
+--     this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     the address that the resource is mapped to /must/ have been queried
+--     from a buffer created without the
+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT'
+--     create flag set
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-protectedNoFault-11456# If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, a pipeline is bound to the pipeline bind point
+--     used by this command, or a shader is bound to a shader stage used by
+--     this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     the address of the indirect memory /must/ have been queried from a
+--     buffer created without the
+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT'
+--     create flag set
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-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.GraphicsPipeline.GraphicsPipelineCreateInfo'
+--     structure specified when creating the
+--     'Vulkan.Core10.Handles.Pipeline' bound to
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-subpass-02685# The subpass index
+--     of the current render pass /must/ be equal to the @subpass@ member
+--     of the 'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'
+--     structure specified when creating the
+--     'Vulkan.Core10.Handles.Pipeline' bound to
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-OpTypeImage-07468# If any shader
+--     executed by this pipeline accesses an @OpTypeImage@ variable with a
+--     @Dim@ operand of @SubpassData@, it /must/ be decorated with an
+--     @InputAttachmentIndex@ that corresponds to a valid input attachment
+--     in the current subpass
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07469# Input attachment
+--     views accessed in a subpass /must/ be created with the same
+--     'Vulkan.Core10.Enums.Format.Format' as the corresponding subpass
+--     definition, and be created with a 'Vulkan.Core10.Handles.ImageView'
+--     that is compatible with the attachment referenced by the subpass\'
+--     @pInputAttachments@[@InputAttachmentIndex@] in the bound
+--     'Vulkan.Core10.Handles.Framebuffer' as specified by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#compatibility-inputattachment Fragment Input Attachment Compatibility>
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-pDepthInputAttachmentIndex-09595#
+--     Input attachment views accessed in a dynamic render pass with a
+--     @InputAttachmentIndex@ referenced by
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo',
+--     or no @InputAttachmentIndex@ if
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pDepthInputAttachmentIndex@
+--     or
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pStencilInputAttachmentIndex@
+--     are @NULL@, /must/ be created with a
+--     'Vulkan.Core10.Handles.ImageView' that is compatible with the
+--     corresponding color, depth, or stencil attachment in
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-pDepthInputAttachmentIndex-09596#
+--     Input attachment views accessed in a dynamic render pass via a
+--     shader object /must/ have an @InputAttachmentIndex@ if both
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pDepthInputAttachmentIndex@
+--     and
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pStencilInputAttachmentIndex@
+--     are non-@NULL@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-InputAttachmentIndex-09597# If
+--     an input attachment view accessed in a dynamic render pass via a
+--     shader object has an @InputAttachmentIndex@, the
+--     @InputAttachmentIndex@ /must/ match an index in
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-06537# Memory backing image
+--     subresources used as attachments in the current render pass /must/
+--     not be written in any way other than as an attachment by this
+--     command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-10795# If a color
+--     attachment is written by any prior command in this subpass or by the
+--     load, store, or resolve operations for this subpass, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT' on
+--     that attachment, it /must/ not be accessed in any way other than as
+--     an attachment by this command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-10796# If a depth
+--     attachment is written by any prior command in this subpass or by the
+--     load, store, or resolve operations for this subpass, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' on
+--     that attachment, it /must/ not be accessed in any way other than as
+--     an attachment by this command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-10797# If a stencil
+--     attachment is written by any prior command in this subpass or by the
+--     load, store, or resolve operations for this subpass, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
+--     on that attachment, it /must/ not be accessed in any way other than
+--     as an attachment by this command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-12338# If a color
+--     attachment is read in this command in any way other than as an
+--     attachment, or has been read by any prior command in this subpass as
+--     a non-attachment, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT' on
+--     that attachment, the color attachment /must/ not be written to by
+--     this command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-12339# If a depth
+--     attachment is read in this command in any way other than as an
+--     attachment, or has been read by any prior command in this subpass as
+--     a non-attachment, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' on
+--     that attachment, the depth attachment /must/ not be written to by
+--     this command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-12340# If a stencil
+--     attachment is read in this command in any way other than as an
+--     attachment, or has been read by any prior command in this subpass as
+--     a non-attachment, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
+--     on that attachment, the stencil attachment /must/ not be written to
+--     by this command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-09003# If an attachment is
+--     written by any prior command in this subpass or by the load, store,
+--     or resolve operations for this subpass, it /must/ not be accessed in
+--     any way other than as an attachment, storage image, or sampled image
+--     by this command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-06886# If the current
+--     render pass instance uses a depth\/stencil attachment with a
+--     read-only layout for the depth aspect,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-depth-write depth writes>
+--     /must/ be disabled
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-06887# If the current
+--     render pass instance uses a depth\/stencil attachment with a
+--     read-only layout for the stencil aspect, both front and back
+--     @writeMask@ are not zero, and stencil test is enabled,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-stencil all stencil ops>
+--     /must/ be 'Vulkan.Core10.Enums.StencilOp.STENCIL_OP_KEEP'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07831# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT' dynamic
+--     state enabled then
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetViewport' /must/ have
+--     been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07832# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR' dynamic
+--     state enabled then
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetScissor' /must/ have been
+--     called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08617# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_WIDTH' dynamic
+--     state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line topology class, then
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth' /must/ have
+--     been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07834# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS' dynamic
+--     state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @depthBiasEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBias' or
+--     'Vulkan.Extensions.VK_EXT_depth_bias_control.cmdSetDepthBias2EXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07835# If a shader object
+--     is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_BLEND_CONSTANTS'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and an active color
+--     attachment
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @blendEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE' with a
+--     blend equations where any
+--     'Vulkan.Core10.Enums.BlendFactor.BlendFactor' member is
+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_COLOR',
+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR',
+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_ALPHA', or
+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA',
+--     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetBlendConstants'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07836# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @depthBoundsTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBounds' /must/
+--     have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07837# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_COMPARE_MASK'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilCompareMask'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07838# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_WRITE_MASK'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilWriteMask'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07839# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_REFERENCE'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of and @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilReference'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-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-vkCmdDrawMeshTasksIndirectEXT-sampleLocationsEnable-02689# If
+--     the bound graphics pipeline was created with
+--     'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@
+--     set to 'Vulkan.Core10.FundamentalTypes.TRUE', then the active depth
+--     attachment /must/ have been created with the
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'
+--     bit set
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07634# If the
+--     @VK_EXT_sample_locations@ extension is enabled, a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-06666# If the
+--     @VK_EXT_sample_locations@ extension is enabled, a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07840# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CULL_MODE' dynamic
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetCullMode'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07841# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRONT_FACE' dynamic
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetFrontFace'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07843# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_TEST_ENABLE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE',
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthTestEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07844# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @depthTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthWriteEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07845# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_COMPARE_OP'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @depthTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthCompareOp'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07846# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthBounds depthBounds>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthBoundsTestEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07847# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_TEST_ENABLE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilTestEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07848# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_OP' dynamic
+--     state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilOp'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-viewportCount-03417# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
+--     dynamic state enabled, and the state is not inherited, then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-scissorCount-03418# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
+--     dynamic state enabled, and the state is not inherited, then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-viewportCount-03419# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which 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, and the state is not inherited, then 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-vkCmdDrawMeshTasksIndirectEXT-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-vkCmdDrawMeshTasksIndirectEXT-viewportCount-04138# If the
+--     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which 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 state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @viewportWScalingEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.cmdSetViewportWScalingNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08636# If the
+--     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which 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 state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @viewportWScalingEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', 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-vkCmdDrawMeshTasksIndirectEXT-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-vkCmdDrawMeshTasksIndirectEXT-shadingRateImage-09233# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV'
+--     and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetCoarseSampleOrderNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-shadingRateImage-09234# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which 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 state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @shadingRateImageEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetViewportShadingRatePaletteNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08637# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which 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 state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @shadingRateImageEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', 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-vkCmdDrawMeshTasksIndirectEXT-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
+--     'Vulkan.Core10.GraphicsPipeline.PipelineViewportStateCreateInfo',
+--     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-vkCmdDrawMeshTasksIndirectEXT-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
+--     'Vulkan.Core10.GraphicsPipeline.PipelineViewportStateCreateInfo',
+--     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-vkCmdDrawMeshTasksIndirectEXT-None-07878# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-exclusiveScissor exclusiveScissor>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07879# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-exclusiveScissor exclusiveScissor>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV'
+--     dynamic state enabled, and the most recent call to
+--     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorEnableNV'
+--     in the current command buffer set any element of
+--     @pExclusiveScissorEnables@ to 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then
+--     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-04876# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     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 and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-04877# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-logicOp-04878# If a shader
+--     object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @logicOpEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetLogicOpEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-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-vkCmdDrawMeshTasksIndirectEXT-primitiveFragmentShadingRateWithMultipleViewports-08642#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
+--     limit is not supported, and any shader object bound to a graphics
+--     stage writes 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-vkCmdDrawMeshTasksIndirectEXT-blendEnable-04727# If a shader
+--     object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then for each color
+--     attachment, 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 corresponding
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @blendEnable@ /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08644# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and none of the following is
+--     enabled:
+--
+--     -   the @VK_AMD_mixed_attachment_samples@ extension
+--
+--     -   the @VK_NV_framebuffer_mixed_samples@ extension
+--
+--     -   the
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
+--         feature
+--
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizationSamples@ /must/ be the same as the current color
+--     and\/or depth\/stencil attachments
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08876# If a shader object
+--     is bound to any graphics stage, the current render pass instance
+--     /must/ have been begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-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-vkCmdDrawMeshTasksIndirectEXT-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-vkCmdDrawMeshTasksIndirectEXT-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-vkCmdDrawMeshTasksIndirectEXT-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-vkCmdDrawMeshTasksIndirectEXT-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-vkCmdDrawMeshTasksIndirectEXT-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-vkCmdDrawMeshTasksIndirectEXT-viewMask-06178# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the 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-vkCmdDrawMeshTasksIndirectEXT-colorAttachmentCount-06179# If
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled and the current render pass instance was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the 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-vkCmdDrawMeshTasksIndirectEXT-dynamicRenderingUnusedAttachments-08910#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and 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 an @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 bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-dynamicRenderingUnusedAttachments-08912#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and 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 an @imageView@ equal to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have the
+--     corresponding element of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
+--     used to create the bound pipeline equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-dynamicRenderingUnusedAttachments-08911#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled, and 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 an @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 bound graphics pipeline, or the corresponding
+--     element of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@,
+--     if it exists, /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-colorAttachmentCount-09362# If
+--     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@
+--     equal to @1@, there is no shader object bound to any graphics stage,
+--     and a color attachment with a resolve mode of
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID',
+--     each element of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
+--     array with a @resolveImageView@ not equal to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
+--     with an image created with a
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value equal to the
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value used to create the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-09363# If there is no
+--     shader object bound to any graphics stage, the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and a
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
+--     equal to @1@, and a color attachment with a resolve mode of
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID',
+--     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 an image created with a
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value equal to the
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value used to create the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-09364# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there is no shader object bound to any graphics stage, and the bound
+--     graphics pipeline was created with a non-zero
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value and with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
+--     /must/ have set the blend enable to
+--     'Vulkan.Core10.FundamentalTypes.FALSE' prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-09365# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there is no shader object bound to any graphics stage, and the bound
+--     graphics pipeline was created with a non-zero
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value and with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     /must/ have set @rasterizationSamples@ to
+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' prior
+--     to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-09366# If there is a shader
+--     object bound to any graphics stage, and the current render pass
+--     includes a color attachment that uses the
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID'
+--     resolve mode, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
+--     /must/ have set blend enable to
+--     'Vulkan.Core10.FundamentalTypes.FALSE' prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-rasterizationSamples-09367# If
+--     there is a shader object bound to any graphics stage, and the
+--     current render pass includes a color attachment that uses the
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID'
+--     resolve mode, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     /must/ have set @rasterizationSamples@ to
+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' prior
+--     to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-09368# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there is no shader object bound to any graphics stage, and the bound
+--     graphics pipeline was created with a non-zero
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value and with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     /must/ have set @pFragmentSize->width@ to @1@ prior to this drawing
+--     command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-09369# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there is no shader object bound to any graphics stage, and the bound
+--     graphics pipeline was created with a non-zero
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value and with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     /must/ have set @pFragmentSize->height@ to @1@ prior to this drawing
+--     command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-pFragmentSize-09370# If there is
+--     a shader object bound to any graphics stage, and the current render
+--     pass includes a color attachment that uses the
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID'
+--     resolve mode, then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     /must/ have set @pFragmentSize->width@ to @1@ prior to this drawing
+--     command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-pFragmentSize-09371# If there is
+--     a shader object bound to any graphics stage, and the current render
+--     pass includes a color attachment that uses the
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID'
+--     resolve mode, then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     /must/ have set @pFragmentSize->height@ to @1@ prior to this drawing
+--     command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07749# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
+--     feature is enabled, a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-attachmentCount-07750# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
+--     feature is enabled, a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then the @attachmentCount@
+--     parameter of most recent call to
+--     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
+--     in the current command buffer /must/ be greater than or equal to the
+--     number of active color attachments
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07751# If the
+--     @VK_EXT_discard_rectangles@ extension is enabled, a graphics
+--     pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_EXT'
+--     dynamic state enabled and the @pNext@ chain of
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo' included
+--     a
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'
+--     structure, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @discardRectangleEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command for each
+--     discard rectangle in
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'::@discardRectangleCount@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-rasterizerDiscardEnable-09236#
+--     If the @VK_EXT_discard_rectangles@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_EXT'
+--     dynamic state enabled and the @pNext@ chain of
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo' did not
+--     include a
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'
+--     structure, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @discardRectangleEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command for each
+--     discard rectangle in
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.PhysicalDeviceDiscardRectanglePropertiesEXT'::@maxDiscardRectangles@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07880# If the
+--     @VK_EXT_discard_rectangles@ extension is enabled, a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07881# If the
+--     @VK_EXT_discard_rectangles@ extension is enabled, a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @discardRectangleEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleModeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-dynamicRenderingUnusedAttachments-08913#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
+--     used to create the bound graphics pipeline /must/ be equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-dynamicRenderingUnusedAttachments-08914#
+--     If current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->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 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->imageView@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-dynamicRenderingUnusedAttachments-08915#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
+--     used to create the bound graphics pipeline was not equal to the
+--     'Vulkan.Core10.Enums.Format.Format' used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@,
+--     the value of the format /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-dynamicRenderingUnusedAttachments-08916#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
+--     used to create the bound graphics pipeline /must/ be equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-dynamicRenderingUnusedAttachments-08917#
+--     If current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->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 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->imageView@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-dynamicRenderingUnusedAttachments-08918#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
+--     used to create the bound graphics pipeline was not equal to the
+--     'Vulkan.Core10.Enums.Format.Format' used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@,
+--     the value of the format /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-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_fragment_shading_rate.RenderingFragmentShadingRateAttachmentInfoKHR'::@imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the bound graphics
+--     pipeline /must/ have been created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-dynamicRenderingLocalRead-11797#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingLocalRead dynamicRenderingLocalRead>
+--     feature is enabled, the
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_LOCAL_READ_CONCURRENT_ACCESS_CONTROL_BIT_KHR'
+--     flag is specified, and an attachment is being used as a feedback
+--     loop as specified by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#rendering-attachment-input-attachment-feedback >,
+--     'Vulkan.Extensions.VK_KHR_maintenance10.RenderingAttachmentFlagsInfoKHR'::@flags@
+--     for that attachment /must/ include
+--     'Vulkan.Extensions.VK_KHR_maintenance10.RENDERING_ATTACHMENT_INPUT_ATTACHMENT_FEEDBACK_BIT_KHR'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-imageView-06184# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and
+--     'Vulkan.Extensions.VK_EXT_fragment_density_map.RenderingFragmentDensityMapAttachmentInfoEXT'::@imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the bound graphics
+--     pipeline /must/ have been created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-layers-10831# If the current
+--     render pass instance was created with
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE'
+--     or
+--     'Vulkan.Core10.Enums.RenderPassCreateFlagBits.RENDER_PASS_CREATE_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE',
+--     and the bound graphics pipeline was created with
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE',
+--     then the current render pass instance /must/ have a @layers@ value
+--     less than or equal to
+--     'Vulkan.Extensions.VK_VALVE_fragment_density_map_layered.PipelineFragmentDensityMapLayeredCreateInfoVALVE'::@maxFragmentDensityMapLayers@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-colorAttachmentCount-06185# If
+--     the bound pipeline was created with a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.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_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     used to create the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-pDepthAttachment-06186# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the bound pipeline was created with a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     structure, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
+--     @depthStencilAttachmentSamples@ member of
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     used to create the bound graphics pipeline /must/ be equal to the
+--     sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-pStencilAttachment-06187# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the bound pipeline was created with a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     structure, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
+--     @depthStencilAttachmentSamples@ member of
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     used to create the bound graphics pipeline /must/ be equal to the
+--     sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-multisampledRenderToSingleSampled-07285#
+--     If the bound pipeline was created without a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     structure, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
+--     feature is not enabled, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, 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 @rasterizationSamples@ for
+--     the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-multisampledRenderToSingleSampled-07286#
+--     If the bound pipeline was created without a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     structure, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
+--     feature is not enabled, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     @rasterizationSamples@ for the bound graphics pipeline /must/ be
+--     equal to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-multisampledRenderToSingleSampled-07287#
+--     If the bound pipeline was created without a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     structure, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
+--     feature is not enabled, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     @rasterizationSamples@ for the bound graphics pipeline /must/ be
+--     equal to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-pNext-07935# If this command is
+--     called inside a render pass instance started with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     and the @pNext@ chain of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'
+--     includes a
+--     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'
+--     structure with @multisampledRenderToSingleSampledEnable@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then the value of
+--     @rasterizationSamples@ for the bound graphics pipeline /must/ be
+--     equal to
+--     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'::@rasterizationSamples@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-renderPass-06198# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the bound pipeline /must/ have been created with a
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'::@renderPass@
+--     equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-pColorAttachments-08963# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, there is a
+--     graphics pipeline bound with a fragment shader that statically
+--     writes to a color attachment, the color write mask is not zero,
+--     color writes are enabled, and the corresponding element of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     corresponding element of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-pColorAttachments-11539# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, there is a graphics
+--     pipeline bound with a fragment shader that statically writes to a
+--     color attachment, the color write mask is not zero, color writes are
+--     enabled, and the corresponding element of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     corresponding element of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-pDepthAttachment-08964# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, there is a
+--     graphics pipeline bound, depth test is enabled, and the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-pDepthAttachment-11540# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, there is a graphics
+--     pipeline bound, depth test is enabled, and the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-pStencilAttachment-08965# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, there is a
+--     graphics pipeline bound, stencil test is enabled and the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-pStencilAttachment-11860# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, there is a graphics
+--     pipeline bound, stencil test is enabled and the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-flags-10582# If the current
+--     render pass instance was begun with a
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     call in @commandBuffer@, its
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@flags@
+--     parameter /must/ not have
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT'
+--     set unless
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_CONTENTS_INLINE_BIT_KHR'
+--     is also set
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-primitivesGeneratedQueryWithRasterizerDiscard-06708#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithRasterizerDiscard primitivesGeneratedQueryWithRasterizerDiscard>
+--     feature is not enabled and the
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
+--     query is active,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-discard rasterization discard>
+--     /must/ not be enabled
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-primitivesGeneratedQueryWithNonZeroStreams-06709#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>
+--     feature is not enabled and the
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
+--     query is active, the bound graphics pipeline /must/ not have been
+--     created with a non-zero value in
+--     'Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT'::@rasterizationStream@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07620# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClamp depthClamp>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClampEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07621# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_POLYGON_MODE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07622# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07623# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-alphaToCoverageEnable-08919# If
+--     the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT'
+--     dynamic state enabled, and @alphaToCoverageEnable@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-fragmentoutput Fragment Output Interface>
+--     /must/ contain a variable for the alpha @Component@ word in
+--     @Location@ 0 at @Index@ 0
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-alphaToCoverageEnable-08920# If
+--     a shader object is bound to any graphics stage, and the most recent
+--     call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT'
+--     in the current command buffer set @alphaToCoverageEnable@ to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-fragmentoutput Fragment Output Interface>
+--     /must/ contain a variable for the alpha @Component@ word in
+--     @Location@ 0 at @Index@ 0
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07624# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07625# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-alphaToOne alphaToOne>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToOneEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07626# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-logicOp logicOp>
+--     feature is enabled, a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLogicOpEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07627# If a shader object
+--     is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and there are color
+--     attachments bound, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07629# If a shader object
+--     is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and there are color
+--     attachments bound, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07630# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryStreams geometryStreams>
+--     feature is enabled, and a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
+--     stage or a graphics pipeline is bound which was created with both a
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
+--     stage and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_STREAM_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationStreamEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07631# If the
+--     @VK_EXT_conservative_rasterization@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetConservativeRasterizationModeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07632# If the
+--     @VK_EXT_conservative_rasterization@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @conservativeRasterizationMode@ is
+--     'Vulkan.Extensions.VK_EXT_conservative_rasterization.CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT',
+--     then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetExtraPrimitiveOverestimationSizeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-conservativePointAndLineRasterization-07499#
+--     If the @VK_EXT_conservative_rasterization@ extension is enabled,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-conservativePointAndLineRasterization conservativePointAndLineRasterization>
+--     is not supported, a shader object is bound to any graphics stage or
+--     a graphics pipeline is bound, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line or point topology class, then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @conservativeRasterizationMode@ /must/ be
+--     'Vulkan.Extensions.VK_EXT_conservative_rasterization.CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07633# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClipEnable depthClipEnable>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT'
+--     dynamic state, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07636# If the
+--     @VK_EXT_provoking_vertex@ extension is enabled, a shader object is
+--     bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetProvokingVertexModeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08666# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
+--     features are enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line topology class, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08669# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
+--     features are enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line topology class, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07849# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
+--     features are enabled and a shader object is bound to any graphics
+--     stage, or a bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @stippledLineEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then
+--     'Vulkan.Core14.Promoted_From_VK_KHR_line_rasterization.cmdSetLineStipple'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-10608# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line topology class, and the current @lineRasterizationMode@
+--     is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_BRESENHAM'
+--     or
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH',
+--     then the current @alphaToCoverageEnable@, @alphaToOneEnable@ and
+--     @sampleShadingEnable@ states /must/ all be
+--     'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07639# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClipControl depthClipControl>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipNegativeOneToOneEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-09650# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClampControl depthClampControl>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @depthClampEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_depth_clamp_control.cmdSetDepthClampRangeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07640# If the
+--     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportWScalingEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07641# If the
+--     @VK_NV_viewport_swizzle@ extension is enabled, and a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07642# If the
+--     @VK_NV_fragment_coverage_to_color@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07643# If the
+--     @VK_NV_fragment_coverage_to_color@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @coverageToColorEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07644# If the
+--     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationModeNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07645# If the
+--     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @coverageModulationMode@ is any value other than
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.COVERAGE_MODULATION_MODE_NONE_NV',
+--     then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07646# If the
+--     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @coverageModulationTableEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07647# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetShadingRateImageEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-pipelineFragmentShadingRate-09238#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07648# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-representativeFragmentTest representativeFragmentTest>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRepresentativeFragmentTestEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07649# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-coverageReductionMode coverageReductionMode>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageReductionModeNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-rasterizationSamples-07471# If
+--     the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, and the current subpass does not use any color
+--     and\/or depth\/stencil attachments, then the @rasterizationSamples@
+--     in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     /must/ follow the rules for a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-noattachments zero-attachment subpass>
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-samples-07472# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
+--     state enabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state disabled, then the @samples@ parameter in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
+--     /must/ be greater or equal to the
+--     'Vulkan.Core10.GraphicsPipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
+--     parameter used to create the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-samples-07473# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
+--     state and
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     states enabled, then the @samples@ parameter in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
+--     /must/ be greater or equal to the @rasterizationSamples@ parameter
+--     in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-09211# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, or a shader object is bound to any graphics stage,
+--     and the current render pass instance includes a
+--     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'
+--     structure with @multisampledRenderToSingleSampledEnable@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then the
+--     @rasterizationSamples@ in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     /must/ be the same as the @rasterizationSamples@ member of that
+--     structure
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-firstAttachment-07476# If a
+--     shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--     dynamic states enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
+--     in the current command buffer prior to this drawing command /must/
+--     have set a value for all active color attachments
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-firstAttachment-07478# If a
+--     shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT'
+--     dynamic states enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
+--     in the current command buffer prior to this drawing command /must/
+--     have set a value for all active color attachments
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-advancedBlendMaxColorAttachments-07480#
+--     If a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
+--     and
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--     dynamic states enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and an active color
+--     attachment
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @blendEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then the
+--     number of active color attachments /must/ not exceed
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-advancedBlendMaxColorAttachments advancedBlendMaxColorAttachments>
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-10862# If a graphics
+--     pipeline is bound was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
+--     , but not the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command for all
+--     active color attachments with the @blendEnable@
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-rasterizerDiscardEnable-10863#
+--     If a graphics pipeline is bound was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT',
+--     but not the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command for all
+--     active color attachments with the @blendEnable@
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-10864# If a shader object
+--     is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
+--     and
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then either
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command for all
+--     active color attachments with the @blendEnable@
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-primitivesGeneratedQueryWithNonZeroStreams-07481#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>
+--     feature is not enabled and the
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
+--     query is active, and the bound graphics pipeline was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_STREAM_EXT'
+--     state enabled, the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationStreamEXT'
+--     /must/ have set the @rasterizationStream@ to zero
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-sampleLocationsPerPixel-07482#
+--     If the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state enabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state disabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then the @sampleLocationsPerPixel@ member of @pSampleLocationsInfo@
+--     in the last call to
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     /must/ equal the @rasterizationSamples@ member of the
+--     'Vulkan.Core10.GraphicsPipeline.PipelineMultisampleStateCreateInfo'
+--     structure the bound graphics pipeline has been created with
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-sampleLocationsPerPixel-07483#
+--     If the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state enabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then the @sampleLocationsPerPixel@ member of @pSampleLocationsInfo@
+--     in the last call to
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     /must/ equal the @rasterizationSamples@ parameter of the last call
+--     to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-sampleLocationsEnable-07484# If
+--     a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage, or the bound graphics pipeline was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     state enabled, and @sampleLocationsEnable@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT'
+--     then the current active depth attachment /must/ have been created
+--     with the
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'
+--     bit set
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-sampleLocationsEnable-07485# If
+--     a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage, or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state enabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     state enabled, and if @sampleLocationsEnable@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
+--     then the @sampleLocationsInfo.maxSampleLocationGridSize.width@ in
+--     the last call to
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     /must/ evenly divide
+--     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.width@
+--     as returned by
+--     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
+--     with a @samples@ parameter equaling @rasterizationSamples@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-sampleLocationsEnable-07486# If
+--     a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage, or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state enabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     state enabled, and if @sampleLocationsEnable@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
+--     then the @sampleLocationsInfo.maxSampleLocationGridSize.height@ in
+--     the last call to
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     /must/ evenly divide
+--     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.height@
+--     as returned by
+--     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
+--     with a @samples@ parameter equaling @rasterizationSamples@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-sampleLocationsEnable-07487# If
+--     a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage, or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     state enabled, and if @sampleLocationsEnable@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
+--     the fragment shader code /must/ not statically use the extended
+--     instruction @InterpolateAtSample@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-sampleLocationsEnable-07936# If
+--     the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state disabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then @sampleLocationsInfo.sampleLocationGridSize.width@ /must/
+--     evenly divide
+--     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.width@
+--     as returned by
+--     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
+--     with a @samples@ parameter equaling the value of
+--     @rasterizationSamples@ in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-sampleLocationsEnable-07937# If
+--     the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state disabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then @sampleLocationsInfo.sampleLocationGridSize.height@ /must/
+--     evenly divide
+--     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.height@
+--     as returned by
+--     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
+--     with a @samples@ parameter equaling the value of
+--     @rasterizationSamples@ in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-sampleLocationsEnable-07938# If
+--     the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state disabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then @sampleLocationsInfo.sampleLocationsPerPixel@ /must/ equal
+--     @rasterizationSamples@ in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-coverageModulationTableEnable-07488#
+--     If a shader object is bound to any graphics stage or the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV'
+--     state enabled, and the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV'
+--     set @coverageModulationTableEnable@ to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then the
+--     @coverageModulationTableCount@ parameter in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableNV'
+--     /must/ equal the current @rasterizationSamples@ divided by the
+--     number of color samples in the current active color attachment
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-rasterizationSamples-07489# If
+--     the @VK_NV_framebuffer_mixed_samples@ extension is enabled, and if
+--     current subpass has a depth\/stencil attachment and depth test,
+--     stencil test, or depth bounds test are enabled in the bound
+--     pipeline, then the current @rasterizationSamples@ /must/ be the same
+--     as the sample count of the depth\/stencil attachment
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-coverageToColorEnable-07490# If
+--     the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
+--     state enabled and the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
+--     set the @coverageToColorEnable@ to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then there /must/ be an
+--     active color attachment at the location selected by the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
+--     @coverageToColorLocation@, with a
+--     'Vulkan.Core10.Enums.Format.Format' of
+--     'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R8_SINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R16_UINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R16_SINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R32_UINT', or
+--     'Vulkan.Core10.Enums.Format.FORMAT_R32_SINT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-rasterizerDiscardEnable-09420#
+--     If the @VK_NV_fragment_coverage_to_color@ extension is enabled, and
+--     a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage, and the most recent call to
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
+--     in the current command buffer set @rasterizerDiscardEnable@ to
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
+--     set the @coverageToColorEnable@ to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then there /must/ be an
+--     active color attachment at the location selected by the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
+--     @coverageToColorLocation@, with a
+--     'Vulkan.Core10.Enums.Format.Format' of
+--     'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R8_SINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R16_UINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R16_SINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R32_UINT', or
+--     'Vulkan.Core10.Enums.Format.FORMAT_R32_SINT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-coverageReductionMode-07491# If
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-coverageReductionMode coverageReductionMode>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV'
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     dynamic states enabled, then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current values>
+--     of @coverageReductionMode@, @rasterizationSamples@, the sample
+--     counts for the color and depth\/stencil attachments (if the subpass
+--     has them) /must/ be a valid combination returned by
+--     'Vulkan.Extensions.VK_NV_coverage_reduction_mode.getPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-viewportCount-07492# 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_SWIZZLE_NV'
+--     dynamic state enabled, 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-vkCmdDrawMeshTasksIndirectEXT-viewportCount-07493# 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_SWIZZLE_NV'
+--     dynamic states enabled then the @viewportCount@ parameter in the
+--     last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
+--     /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-vkCmdDrawMeshTasksIndirectEXT-viewportCount-09421# If the
+--     @VK_NV_viewport_swizzle@ extension is enabled, and a shader object
+--     is bound to any graphics stage, then the @viewportCount@ parameter
+--     in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
+--     /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-vkCmdDrawMeshTasksIndirectEXT-rasterizationSamples-07494# If
+--     the @VK_NV_framebuffer_mixed_samples@ extension is enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-coverageReductionMode coverageReductionMode>
+--     feature is not enabled, or the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @coverageReductionMode@ is not
+--     'Vulkan.Extensions.VK_NV_coverage_reduction_mode.COVERAGE_REDUCTION_MODE_TRUNCATE_NV',
+--     and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizationSamples@ is greater than sample count of the color
+--     attachment, then
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-sampleshading sample shading>
+--     /must/ be disabled
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-stippledLineEnable-07495# If the
+--     bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic states enabled, and if the current @stippledLineEnable@
+--     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
+--     @lineRasterizationMode@ state is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_RECTANGULAR',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-stippledLineEnable-07496# If the
+--     bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic states enabled, and if the current @stippledLineEnable@
+--     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
+--     @lineRasterizationMode@ state is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_BRESENHAM',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-stippledLineEnable-07497# If the
+--     bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic states enabled, and if the current @stippledLineEnable@
+--     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
+--     @lineRasterizationMode@ state is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-stippledLineEnable-07498# If the
+--     bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic states enabled, and if the current @stippledLineEnable@
+--     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
+--     @lineRasterizationMode@ state is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_DEFAULT',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>
+--     feature /must/ be enabled and
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@strictLines@
+--     /must/ be 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-stage-07073# If the bound
+--     pipeline was created with the
+--     'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo'::@stage@
+--     member of an element of
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'::@pStages@
+--     set to
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT',
+--     then
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-mesh-shader Mesh Shader Queries>
+--     /must/ not be active
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08877# If a shader object
+--     is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07850# If dynamic state was
+--     inherited from
+--     'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV',
+--     it /must/ be set in the current command buffer prior to this drawing
+--     command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-nextStage-10745# For each shader
+--     object bound to a graphics stage, except for shader object bound to
+--     the last graphics stage in the logical pipeline, it /must/ have been
+--     created with a @nextStage@ including the corresponding bit to the
+--     shader object bound to the following graphics stage in the logical
+--     pipeline
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08684# If there is no bound
+--     graphics pipeline,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08685# If there is no bound
+--     graphics pipeline, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellationShader>
+--     feature is enabled,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08686# If there is no bound
+--     graphics pipeline, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellationShader>
+--     feature is enabled,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08687# If there is no bound
+--     graphics pipeline, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometryShader>
+--     feature is enabled,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08688# If there is no bound
+--     graphics pipeline,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08689# If there is no bound
+--     graphics pipeline, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
+--     feature is enabled,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08690# If there is no bound
+--     graphics pipeline, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
+--     feature is enabled,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08693# If there is no bound
+--     graphics pipeline, and at least one of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
+--     features is enabled, one of the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--     stages /must/ have a valid 'Vulkan.Extensions.Handles.ShaderEXT'
+--     bound, and the other /must/ have no
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08696# If there is no bound
+--     graphics pipeline, and a valid 'Vulkan.Extensions.Handles.ShaderEXT'
+--     is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage, there /must/ be no 'Vulkan.Extensions.Handles.ShaderEXT'
+--     bound to either the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--     stage or the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--     stage
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08698# If any graphics
+--     shader is bound which was created with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
+--     flag, then all shaders created with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
+--     flag in the same
+--     'Vulkan.Extensions.VK_EXT_shader_object.createShadersEXT' call
+--     /must/ also be bound
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08699# If any graphics
+--     shader is bound which was created with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
+--     flag, any stages in between stages whose shaders which did not
+--     create a shader with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
+--     flag as part of the same
+--     'Vulkan.Extensions.VK_EXT_shader_object.createShadersEXT' call
+--     /must/ not have any 'Vulkan.Extensions.Handles.ShaderEXT' bound
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08878# All bound graphics
+--     shader objects /must/ have been created with identical or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-identically-defined identically defined>
+--     push constant ranges
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08879# All bound graphics
+--     shader objects /must/ have either been created with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag set, or with identical or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-identically-defined identically defined>
+--     arrays of descriptor set layouts
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-colorAttachmentCount-09372# If
+--     the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and a
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
+--     equal to @1@, a color attachment with a resolve mode of
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID',
+--     and a fragment shader is bound, it /must/ not declare the
+--     @DepthReplacing@ or @StencilRefReplacingEXT@ execution modes
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-pDynamicStates-08715# If the
+--     bound graphics pipeline state includes a fragment shader stage, was
+--     created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE'
+--     set in
+--     'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@,
+--     and the fragment shader declares the @EarlyFragmentTests@ execution
+--     mode and uses @OpDepthAttachmentReadEXT@, the @depthWriteEnable@
+--     parameter in the last call to
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthWriteEnable'
+--     /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-pDynamicStates-08716# If the
+--     bound graphics pipeline state includes a fragment shader stage, was
+--     created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_WRITE_MASK'
+--     set in
+--     'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@,
+--     and the fragment shader declares the @EarlyFragmentTests@ execution
+--     mode and uses @OpStencilAttachmentReadEXT@, the @writeMask@
+--     parameter in the last call to
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilWriteMask' /must/
+--     be @0@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-09116# If a shader object
+--     is bound to any graphics stage or the bound graphics pipeline was
+--     created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT',
+--     and the format of any color attachment is
+--     'Vulkan.Core10.Enums.Format.FORMAT_E5B9G9R9_UFLOAT_PACK32', the
+--     corresponding element of the @pColorWriteMasks@ parameter of
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
+--     /must/ either include all of
+--     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_R_BIT',
+--     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_G_BIT',
+--     and
+--     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_B_BIT',
+--     or none of them
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-maxFragmentDualSrcAttachments-09239#
+--     If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blending blending>
+--     is enabled for any attachment where either the source or destination
+--     blend factors for that attachment
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-dsb use the secondary color input>,
+--     the maximum value of @Location@ for any output attachment
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-staticuse statically used>
+--     in the @Fragment@ @Execution@ @Model@ executed by this command
+--     /must/ be less than
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFragmentDualSrcAttachments maxFragmentDualSrcAttachments>
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-09548# If the current
+--     render pass was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there is no shader object bound to any graphics stage, the value of
+--     each element of
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingAttachmentLocationInfo'::@pColorAttachmentLocations@
+--     in the bound pipeline /must/ match the value for the corresponding
+--     locations set currently in the current render pass instance
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-09549# If the current
+--     render pass was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     and there is no shader object bound to any graphics stage, the value
+--     of each element of
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pColorAttachmentInputIndices@
+--     in the bound pipeline /must/ match the value for the corresponding
+--     index set currently in the current render pass instance
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-10927# If the current
+--     render pass was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     and there is no shader object bound to any graphics stage, the value
+--     of
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pDepthInputAttachmentIndex@
+--     in the bound pipeline /must/ match the value set currently in the
+--     current render pass instance
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-10928# If the current
+--     render pass was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     and there is no shader object bound to any graphics stage, the value
+--     of
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pStencilInputAttachmentIndex@
+--     in the bound pipeline /must/ match the value set currently in the
+--     current render pass instance
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-09642# If the current
+--     render pass was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     with the
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT'
+--     flag, the bound graphics pipeline /must/ have been created with
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-09643# If the bound
+--     graphics pipeline was created with
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT',
+--     the current render pass /must/ have begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     with the
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT'
+--     flag
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-10677# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model>
+--     is enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tileShadingPerTileDraw tileShadingPerTileDraw>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-10772# If a shader object
+--     is bound to any graphics stage, /multiview/ functionality /must/ not
+--     be enabled in the current render pass
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-multiviewPerViewViewports-12262#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiviewPerViewViewports multiviewPerViewViewports>
+--     feature is enabled, then the index of the most significant bit in
+--     current render pass instance @viewMask@ /must/ be less than the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @viewportCount@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-multiviewPerViewViewports-12263#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiviewPerViewViewports multiviewPerViewViewports>
+--     feature is enabled, then the index of the most significant bit in
+--     current render pass instance @viewMask@ /must/ be less than the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @scissorCount@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-flags-11521# If current render
+--     pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@flags@
+--     which includes
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_FRAGMENT_REGION_BIT_EXT',
+--     and if
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-sampleshading sample shading>
+--     is enabled (explicitly or implicitly), then the minimum fraction for
+--     sample shading /must/ equal 0.0
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-11522# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and contains a custom resolve, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, the graphics pipeline bound /must/ have been
+--     created with a
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-11523# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and does not contain a custom resolve, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, the graphics pipeline bound /must/ not have
+--     been created with a
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-customResolve-11524# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, the graphics pipeline
+--     bound /must/ have been created with
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@
+--     as 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-customResolve-11525# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and contains a custom resolve, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not been recorded in the render pass instance, the graphics
+--     pipeline bound /must/ have been created with
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@
+--     as 'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-11861# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled and the current render pass instance was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and contains a custom resolve, the bound graphics pipeline /must/
+--     have been created with a
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@colorAttachmentCount@
+--     equal to
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-11862# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and the current render pass instance was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, 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 an @resolveImageView@ 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_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@
+--     used to create the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-11863# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and the current render pass instance was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, 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 an @resolveImageView@ equal to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have the
+--     corresponding element of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@
+--     used to create the bound pipeline equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-dynamicRenderingUnusedAttachments-11864#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled, the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, 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 an @resolveImageView@ 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_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@
+--     used to create the bound graphics pipeline, or the corresponding
+--     element of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@,
+--     if it exists, /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-11865# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@
+--     used to create the bound graphics pipeline /must/ be equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-11866# If current render
+--     pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@
+--     used to create the 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->resolveImageView@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-dynamicRenderingUnusedAttachments-11867#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@
+--     used to create the bound graphics pipeline was not equal to the
+--     'Vulkan.Core10.Enums.Format.Format' used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@,
+--     the value of the format /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-11868# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@
+--     used to create the bound graphics pipeline /must/ be equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-11869# If current render
+--     pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@
+--     used to create the 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->resolveImageView@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-dynamicRenderingUnusedAttachments-11870#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@
+--     used to create the bound graphics pipeline was not equal to the
+--     'Vulkan.Core10.Enums.Format.Format' used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@,
+--     the value of the format /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-colorAttachmentCount-11871# If
+--     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@ and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, then for each element
+--     of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
+--     array with a @resolveImageView@ not equal to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', the @resolveImageView@
+--     /must/ have been created with a sample count equal to the value of
+--     @rasterizationSamples@ for the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-pDepthAttachment-11872# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     @rasterizationSamples@ for the bound graphics pipeline /must/ be
+--     equal to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-pStencilAttachment-11873# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     @rasterizationSamples@ for the bound graphics pipeline /must/ be
+--     equal to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-customResolve-11529# If a shader
+--     object is bound to the fragment stage, the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     a fragment density map attachment is active, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been called, then the fragment shader object bound /must/ have
+--     been created with
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@
+--     as 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-customResolve-11530# If a shader
+--     object is bound to the fragment stage, the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and contains a custom resolve, a fragment density map attachment is
+--     active, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been called, then the fragment shader object bound
+--     /must/ have been created with
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@
+--     as 'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-flags-13361# If there are any
+--     shader objects bound that were created with @flags@ that includes
+--     the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     bit, then all bound shader objects /must/ have been created with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     bit
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-flags-13362# If there are any
+--     shader objects bound that were created with @flags@ that includes
+--     the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     bit, then the pipeline layout of the bound descriptor sets /must/
+--     have been created with
+--     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT'
+--     set
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-flags-13363# If there are any
+--     shader objects bound that were created with @flags@ that includes
+--     the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     bit, and any of the descriptor set layouts used to create the
+--     pipeline layout of the bound descriptor sets were created with any
+--     binding’s
+--     'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutBinding'::@stageFlags@
+--     set with
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT',
+--     then there /must/ be no binding with
+--     'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutBinding'::@stageFlags@
+--     set with
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-flags-13364# If there are any
+--     shader objects bound that were created with @flags@ that includes
+--     both the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     and
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
+--     bits, the pipeline layout of the bound descriptor sets /must/ have
+--     been created with
+--     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_NO_TASK_SHADER_BIT_KHR'
+--     set
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-flags-13365# If there are any
+--     shader objects bound that were created with @flags@ that includes
+--     both the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     and
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
+--     bits, there /must/ be no shader object bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--     stage
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-stage-06480# The bound graphics
+--     pipeline /must/ not have been created with the
+--     'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo'::@stage@
+--     member of any element of
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'::@pStages@
+--     set to
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-pStages-10680# If there is no
+--     bound graphics pipeline,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     not have last bound the @pStages@ element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
+--     with a valid shader object other than
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07074#
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-transform-feedback Transform Feedback Queries>
+--     /must/ not be active
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-07075#
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-primitives-generated Primitives Generated Queries>
+--     /must/ not be active
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-pipelineStatistics-07076# The
+--     @pipelineStatistics@ member used to create any active
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-pipestats Pipeline Statistics Query>
+--     /must/ not contain
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT',
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT',
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT',
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT',
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT',
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT',
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT',
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT',
+--     or
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08694# If there is no bound
+--     graphics pipeline, and both the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
+--     features are enabled, and a valid
+--     'Vulkan.Extensions.Handles.ShaderEXT' is bound the to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--     stage, and that 'Vulkan.Extensions.Handles.ShaderEXT' was created
+--     without the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
+--     flag, a valid 'Vulkan.Extensions.Handles.ShaderEXT' /must/ be bound
+--     to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--     stage
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08695# If there is no bound
+--     graphics pipeline, and both the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
+--     features are enabled, and a valid
+--     'Vulkan.Extensions.Handles.ShaderEXT' is bound the to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--     stage, and that 'Vulkan.Extensions.Handles.ShaderEXT' was created
+--     with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
+--     flag, there /must/ be no 'Vulkan.Extensions.Handles.ShaderEXT' bound
+--     to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--     stage
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-buffer-02708# If @buffer@ is
+--     non-sparse then it /must/ be bound completely and contiguously to a
+--     single 'Vulkan.Core10.Handles.DeviceMemory' object
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-buffer-02709# @buffer@ /must/
+--     have been created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-offset-02710# @offset@ /must/ be
+--     a multiple of @4@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-commandBuffer-02711#
+--     @commandBuffer@ /must/ not be a protected command buffer
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-drawCount-02718# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiDrawIndirect multiDrawIndirect>
+--     feature is not enabled, @drawCount@ /must/ be @0@ or @1@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-drawCount-02719# @drawCount@
+--     /must/ be less than or equal to
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxDrawIndirectCount@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-drawCount-07088# If @drawCount@
+--     is greater than @1@, @stride@ /must/ be a multiple of @4@ and /must/
+--     be greater than or equal to
+--     @sizeof@('DrawMeshTasksIndirectCommandEXT')
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-drawCount-07089# If @drawCount@
+--     is equal to @1@, (@offset@ +
+--     @sizeof@('DrawMeshTasksIndirectCommandEXT')) /must/ be less than or
+--     equal to the size of @buffer@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-drawCount-07090# If @drawCount@
+--     is greater than @1@, (@stride@ × (@drawCount@ - 1) + @offset@ +
+--     @sizeof@('DrawMeshTasksIndirectCommandEXT')) /must/ be less than or
+--     equal to the size of @buffer@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-MeshEXT-07091# The current
+--     pipeline bound to
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
+--     /must/ contain a shader stage using the @MeshEXT@ @Execution@
+--     @Model@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-buffer-parameter# @buffer@
+--     /must/ be a valid 'Vulkan.Core10.Handles.Buffer' handle
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-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-vkCmdDrawMeshTasksIndirectEXT-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-renderpass# This command /must/
+--     only be called inside of a render pass instance
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-suspended# This command /must/
+--     not be called between suspended render pass instances
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-videocoding# This command /must/
+--     only be called outside of a video coding scope
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-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#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Inside                                                                                                                 | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdDrawMeshTasksIndirectEXT is affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_mesh_shader VK_EXT_mesh_shader>,
+-- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize'
+cmdDrawMeshTasksIndirectEXT :: 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 ()
+cmdDrawMeshTasksIndirectEXT commandBuffer
+                              buffer
+                              offset
+                              drawCount
+                              stride = liftIO $ do
+  let vkCmdDrawMeshTasksIndirectEXTPtr = pVkCmdDrawMeshTasksIndirectEXT (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  unless (vkCmdDrawMeshTasksIndirectEXTPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdDrawMeshTasksIndirectEXT is null" Nothing Nothing
+  let vkCmdDrawMeshTasksIndirectEXT' = mkVkCmdDrawMeshTasksIndirectEXT vkCmdDrawMeshTasksIndirectEXTPtr
+  traceAroundEvent "vkCmdDrawMeshTasksIndirectEXT" (vkCmdDrawMeshTasksIndirectEXT'
+                                                      (commandBufferHandle (commandBuffer))
+                                                      (buffer)
+                                                      (offset)
+                                                      (drawCount)
+                                                      (stride))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdDrawMeshTasksIndirectCountEXT
+  :: FunPtr (Ptr CommandBuffer_T -> Buffer -> DeviceSize -> Buffer -> DeviceSize -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> DeviceSize -> Buffer -> DeviceSize -> Word32 -> Word32 -> IO ()
+
+-- | vkCmdDrawMeshTasksIndirectCountEXT - Perform an indirect mesh tasks draw
+-- with the draw count sourced from a buffer
+--
+-- = Description
+--
+-- 'cmdDrawMeshTasksIndirectCountEXT' behaves similarly to
+-- 'cmdDrawMeshTasksIndirectEXT' except that the draw count is read by the
+-- device from a buffer during execution. The command will read an unsigned
+-- 32-bit integer from @countBuffer@ located at @countBufferOffset@ and use
+-- this as the draw count.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-magFilter-04553# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
+--     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR',
+--     @reductionMode@ equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
+--     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-vkCmdDrawMeshTasksIndirectCountEXT-magFilter-09598# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
+--     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR' and
+--     @reductionMode@ equal to either
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
+--     or
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
+--     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_MINMAX_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-mipmapMode-04770# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
+--     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR',
+--     @reductionMode@ equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
+--     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-vkCmdDrawMeshTasksIndirectCountEXT-mipmapMode-09599# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
+--     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'
+--     and @reductionMode@ equal to either
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
+--     or
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
+--     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_MINMAX_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-unnormalizedCoordinates-09635#
+--     If a 'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the image view’s @levelCount@ and @layerCount@ /must/ be 1
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08609# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the image view’s @viewType@ /must/ be
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D' or
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08610# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the sampler /must/ not be used with any of the SPIR-V
+--     @OpImageSample*@ or @OpImageSparseSample*@ instructions with
+--     @ImplicitLod@, @Dref@ or @Proj@ in their name
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08611# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the sampler /must/ not be used with any of the SPIR-V
+--     @OpImageSample*@ or @OpImageSparseSample*@ instructions that
+--     includes a LOD bias or any offset values
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-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-vkCmdDrawMeshTasksIndirectCountEXT-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-vkCmdDrawMeshTasksIndirectCountEXT-None-07888# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'
+--     descriptor is accessed using atomic operations as a result of this
+--     command, then the storage texel buffer’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-buffer-view-format-features format features>
+--     /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-02692# If a
+--     'Vulkan.Core10.Handles.ImageView' is sampled with
+--     'Vulkan.Core10.Enums.Filter.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.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-02693# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_filter_cubic VK_EXT_filter_cubic>
+--     extension is not enabled and any 'Vulkan.Core10.Handles.ImageView'
+--     is sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as a
+--     result of this command, it /must/ not have a
+--     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' of
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE', or
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-filterCubic-02694# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with
+--     'Vulkan.Core10.Enums.Filter.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-vkCmdDrawMeshTasksIndirectCountEXT-filterCubicMinmax-02695#
+--     Any 'Vulkan.Core10.Handles.ImageView' being sampled with
+--     'Vulkan.Core10.Enums.Filter.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-vkCmdDrawMeshTasksIndirectCountEXT-cubicRangeClamp-09212# If
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-cubicRangeClamp cubicRangeClamp>
+--     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
+--     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
+--     a result of this command /must/ not have a
+--     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
+--     equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-reductionMode-09213# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with a
+--     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
+--     equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
+--     as a result of this command /must/ sample with
+--     'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-selectableCubicWeights-09214#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-selectableCubicWeights selectableCubicWeights>
+--     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
+--     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
+--     a result of this command /must/ have
+--     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.SamplerCubicWeightsCreateInfoQCOM'::@cubicWeights@
+--     equal to
+--     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-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-vkCmdDrawMeshTasksIndirectCountEXT-OpTypeImage-07027# For any
+--     'Vulkan.Core10.Handles.ImageView' being written as a storage image
+--     where the image format field of the @OpTypeImage@ is @Unknown@, the
+--     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_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpTypeImage-07028# For any
+--     'Vulkan.Core10.Handles.ImageView' being read as a storage image
+--     where the image format field of the @OpTypeImage@ is @Unknown@, the
+--     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_STORAGE_READ_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpTypeImage-07029# For any
+--     'Vulkan.Core10.Handles.BufferView' being written as a storage texel
+--     buffer where the image format field of the @OpTypeImage@ is
+--     @Unknown@, the view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
+--     /must/ contain
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpTypeImage-07030# Any
+--     'Vulkan.Core10.Handles.BufferView' being read as a storage texel
+--     buffer where the image format field of the @OpTypeImage@ is
+--     @Unknown@ then the view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
+--     /must/ contain
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08600# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
+--     was created with a pipeline layout and statically uses a set /n/, a
+--     descriptor set /must/ have been bound to /n/ at the same pipeline
+--     bind point, with layouts compatible for set /n/ with the layout(s)
+--     used to create the shader, as described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptors-compatibility ???>
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08601# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
+--     was created with a pipeline layout or specified push constant ranges
+--     and statically uses a push constant value, that value /must/ have
+--     been set for the same pipeline bind point, with push constant ranges
+--     that are
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptors-compatibility compatible>
+--     with the push constant range used to create the shader
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-10068# For each array
+--     of resources that is used by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
+--     the indices used to access members of the array /must/ be less than
+--     the descriptor count for the identified binding in the descriptor
+--     sets used by this command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08114# Descriptors in
+--     each bound descriptor set, specified via
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
+--     be valid if they are accessed as described by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
+--     by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
+--     point used by this command and the bound
+--     'Vulkan.Core10.Handles.Pipeline' was not created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-imageLayout-00344# If an
+--     image descriptor is accessed by a shader, the
+--     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' /must/ match the
+--     subresource accessible from the 'Vulkan.Core10.Handles.ImageView' 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>
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08115# If the
+--     descriptors used by the 'Vulkan.Core10.Handles.Pipeline' bound to
+--     the pipeline bind point were specified via
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', the
+--     bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     without
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08116# Descriptors in
+--     bound descriptor buffers, specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     /must/ be valid if they are dynamically used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
+--     was created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08604# Descriptors in
+--     bound descriptor buffers, specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     /must/ be valid if they are dynamically used by any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     to the pipeline bind point used by this command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08117# If the
+--     descriptors used by the 'Vulkan.Core10.Handles.Pipeline' bound to
+--     the pipeline bind point were specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08119# If a descriptor
+--     is dynamically used with a 'Vulkan.Core10.Handles.Pipeline' created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     the descriptor memory /must/ be resident
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08605# If a descriptor
+--     is dynamically used with a 'Vulkan.Extensions.Handles.ShaderEXT'
+--     created with a 'Vulkan.Core10.Handles.DescriptorSetLayout' that was
+--     created with
+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     the descriptor memory /must/ be resident
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08606# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject>
+--     feature is not enabled, a valid pipeline /must/ be bound to the
+--     pipeline bind point used by this command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08608# If a pipeline
+--     is bound to the pipeline bind point used by this command, there
+--     /must/ not have been any calls to dynamic state setting commands for
+--     any state specified statically in the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command, since that pipeline was bound
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-uniformBuffers-06935# If
+--     any stage of the 'Vulkan.Core10.Handles.Pipeline' object bound to
+--     the pipeline bind point used by this command accesses a uniform
+--     buffer, and that stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @uniformBuffers@, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /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-vkCmdDrawMeshTasksIndirectCountEXT-None-08612# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, and any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     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-vkCmdDrawMeshTasksIndirectCountEXT-storageBuffers-06936# If
+--     any stage of the 'Vulkan.Core10.Handles.Pipeline' object bound to
+--     the pipeline bind point used by this command accesses a storage
+--     buffer, and that stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @storageBuffers@, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /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-vkCmdDrawMeshTasksIndirectCountEXT-None-08613# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, and any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     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-vkCmdDrawMeshTasksIndirectCountEXT-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
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shaders>
+--     /must/ not be a protected resource
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-viewType-07752# If a
+--     'Vulkan.Core10.Handles.ImageView' is accessed as a result of this
+--     command, then the image view’s @viewType@ /must/ match the @Dim@
+--     operand of the @OpTypeImage@ as described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-image-dimensions ???>
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-format-07753# If a
+--     'Vulkan.Core10.Handles.ImageView' or
+--     'Vulkan.Core10.Handles.BufferView' is accessed as a result of this
+--     command, then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-numericformat numeric type>
+--     of the view’s @format@ and the @Sampled@ @Type@ operand of the
+--     @OpTypeImage@ /must/ match
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpImageWrite-08795# If a
+--     'Vulkan.Core10.Handles.ImageView' created with a format other than
+--     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM' 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-vkCmdDrawMeshTasksIndirectCountEXT-OpImageWrite-08796# If a
+--     'Vulkan.Core10.Handles.ImageView' created with the format
+--     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM' is accessed using
+--     @OpImageWrite@ as a result of this command, then the @Type@ of the
+--     @Texel@ operand of that instruction /must/ have four components
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-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-vkCmdDrawMeshTasksIndirectCountEXT-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-vkCmdDrawMeshTasksIndirectCountEXT-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-vkCmdDrawMeshTasksIndirectCountEXT-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-vkCmdDrawMeshTasksIndirectCountEXT-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-vkCmdDrawMeshTasksIndirectCountEXT-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-vkCmdDrawMeshTasksIndirectCountEXT-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-vkCmdDrawMeshTasksIndirectCountEXT-OpImageSampleWeightedQCOM-06971#
+--     If @OpImageSampleWeightedQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpImageSampleWeightedQCOM-06972#
+--     If @OpImageSampleWeightedQCOM@ uses a
+--     'Vulkan.Core10.Handles.ImageView' as a sample weight image 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpImageBoxFilterQCOM-06973#
+--     If @OpImageBoxFilterQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpImageBlockMatchSSDQCOM-06974#
+--     If @OpImageBlockMatchSSDQCOM@ is used to read from an
+--     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
+--     or
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_SXD_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpImageBlockMatchSADQCOM-12420#
+--     If @OpImageBlockMatchSADQCOM@ is used to read from an
+--     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
+--     or
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_SXD_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpImageBlockMatchSADQCOM-06976#
+--     If @OpImageBlockMatchSADQCOM@ or OpImageBlockMatchSSDQCOM is used to
+--     read from a reference image as result of this command, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-blockMatchExtendedClampToEdge blockMatchExtendedClampToEdge>
+--     feature is not enabled or the /input/ sampler was not created with
+--     both @addressModeU@ and @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--     then the specified reference coordinates /must/ not fail
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpImageSampleWeightedQCOM-06977#
+--     If @OpImageSampleWeightedQCOM@, @OpImageBoxFilterQCOM@,
+--     @OpImageBlockMatchWindowSSDQCOM@, @OpImageBlockMatchWindowSADQCOM@,
+--     @OpImageBlockMatchGatherSSDQCOM@, @OpImageBlockMatchGatherSADQCOM@,
+--     @OpImageBlockMatchSSDQCOM@, or @OpImageBlockMatchSADQCOM@ uses a
+--     'Vulkan.Core10.Handles.Sampler' as a result of this command, then
+--     the sampler /must/ have been created with
+--     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpImageSampleWeightedQCOM-06978#
+--     If any command other than @OpImageSampleWeightedQCOM@,
+--     @OpImageBoxFilterQCOM@, @OpImageBlockMatchWindowSSDQCOM@,
+--     @OpImageBlockMatchWindowSADQCOM@, @OpImageBlockMatchGatherSSDQCOM@,
+--     @OpImageBlockMatchGatherSADQCOM@, @OpImageBlockMatchSSDQCOM@, or
+--     @OpImageBlockMatchSADQCOM@ uses a 'Vulkan.Core10.Handles.Sampler' as
+--     a result of this command, then the sampler /must/ not have been
+--     created with
+--     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpImageBlockMatchWindow-09215#
+--     If a @OpImageBlockMatchWindow*QCOM@ or
+--     @OpImageBlockMatchGather*QCOM@ instruction is used to read from an
+--     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpImageBlockMatchWindow-09216#
+--     If a @OpImageBlockMatchWindow*QCOM@ or
+--     @OpImageBlockMatchGather*QCOM@ instruction is used to read from an
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the image view’s format /must/ be a single-component format
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpImageBlockMatchWindow-09217#
+--     If a @OpImageBlockMatchWindow*QCOM@ or
+--     @OpImageBlockMatchGather*QCOM@ read from a reference image as result
+--     of this command, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-blockMatchExtendedClampToEdge blockMatchExtendedClampToEdge>
+--     feature is not enabled or the /input/ sampler was not created with
+--     both @addressModeU@ and @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--     then the specified reference coordinates /must/ not fail
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpImageBlockMatchWindow-12421#
+--     If a @OpImageBlockMatchWindow*QCOM@ or
+--     @OpImageBlockMatchGather*QCOM@ instruction uses a
+--     'Vulkan.Core10.Handles.Sampler' as a result of this command, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-blockMatchExtendedClampToEdge blockMatchExtendedClampToEdge>
+--     is not enabled, the /input/ sampler /must/ not have been created
+--     with either @addressModeU@ or @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-addressModeU-12422# If a
+--     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     instruction uses a 'Vulkan.Core10.Handles.Sampler' as a result of
+--     this command, and the /input/ sampler was created with either
+--     @addressModeU@ or @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE',
+--     then the sampler /must/ have been created with both @addressModeU@
+--     and @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07288# Any shader
+--     invocation executed by this command /must/
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-termination terminate>
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09600# If a descriptor
+--     with type equal to any of
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',
+--     or
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'
+--     is accessed as a result of this command, all image subresources
+--     identified by that descriptor /must/ be in the image layout
+--     identified when the descriptor was written
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-micromap-11636# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command through an
+--     @OpRayQueryProceedKHR@ operation , the @VK_EXT_opacity_micromap@
+--     extension is not enabled, and the acceleration structure is built
+--     using geometry with a
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapKHR'
+--     structure included in its @pNext@ chain, the shader /must/ have
+--     specified a @OpacityMicromapIdKHR@ execution mode with its
+--     specialization constant operand equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-micromap-11637# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command and the
+--     acceleration structure was constructed through deserialization, all
+--     micromap arrays referenced by the acceleration structure that were
+--     not replaced by an acceleration structure update command /must/ have
+--     been deserialized using the serialized data of the corresponding
+--     micromaps used to originally build the acceleration structure prior
+--     to the execution of this command on the device
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-micromap-11638# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command and the
+--     acceleration structure is built using geometry with an @indexBuffer@
+--     containing both
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.OpacityMicromapSpecialIndexKHR'
+--     values and indices into an associated micromap array, any
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command /must/ not have been created with @flags@ that
+--     includes
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_KHR'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-micromap-11639# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command and the
+--     acceleration structure is built using geometry with an @indexBuffer@
+--     containing both
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.OpacityMicromapSpecialIndexKHR'
+--     values and indices into an associated micromap array, any
+--     'Vulkan.Extensions.Handles.ShaderEXT' that accessed the descriptor
+--     /must/ not have been created with @flags@ that includes
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-commandBuffer-10746# The
+--     'Vulkan.Core10.Handles.DeviceMemory' object allocated from a
+--     'Vulkan.Core10.DeviceInitialization.MemoryHeap' with the
+--     'Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_TILE_MEMORY_BIT_QCOM'
+--     property that is bound to a resource accessed as a result of this
+--     command /must/ be the active
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-bind-tile-memory bound tile memory object>
+--     in @commandBuffer@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-10678# If this command
+--     is recorded inside a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-tile-shading tile shading render pass>
+--     instance, the stages corresponding to the pipeline bind point used
+--     by this command /must/ only include
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT',
+--     and\/or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-10679# If this command
+--     is recorded where
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model>
+--     is enabled, there /must/ be no access to any image while the image
+--     was be transitioned to the
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
+--     layout
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-pDescription-09900# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the
+--     underlying 'Vulkan.Extensions.Handles.TensorARM' object /must/ have
+--     been created with the
+--     'Vulkan.Extensions.VK_ARM_tensors.TENSOR_USAGE_SHADER_BIT_ARM' usage
+--     flag set
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-dimensionCount-09905# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the @Rank@
+--     of the @OpTypeTensorARM@ of the tensor resource variable /must/ be
+--     equal to the @dimensionCount@ provided via
+--     'Vulkan.Extensions.VK_ARM_tensors.TensorCreateInfoARM'::@pDescription@
+--     when creating the underlying 'Vulkan.Extensions.Handles.TensorARM'
+--     object
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpTypeTensorARM-09906# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the element
+--     type of the @OpTypeTensorARM@ of the tensor resource variable /must/
+--     be
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-tensor-formats compatible>
+--     with the 'Vulkan.Core10.Enums.Format.Format' of the
+--     'Vulkan.Extensions.Handles.TensorViewARM' used for the access
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-11297# If a pipeline
+--     is bound to the pipeline bind point used by this command, or shader
+--     is bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses a @OpTypeStruct@ decorated with @Block@ or
+--     @BufferBlock@ using that mapping, the calculated offset for the
+--     resource heap /must/ be a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-bufferDescriptorAlignment bufferDescriptorAlignment>
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-11298# If a pipeline
+--     is bound to the pipeline bind point used by this command, or shader
+--     is bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses an @OpTypeImage@ or @OpTypeSampledImage@ using
+--     that mapping, the calculated offset for the resource heap /must/ be
+--     a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-imageDescriptorAlignment imageDescriptorAlignment>
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-11299# If a pipeline
+--     is bound to the pipeline bind point used by this command, or shader
+--     is bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses an @OpTypeSampler@ or @OpTypeSampledImage@
+--     using that mapping, the calculated offset for the sampler heap
+--     /must/ be a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-samplerDescriptorAlignment samplerDescriptorAlignment>
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-11397# If a pipeline
+--     is bound to the pipeline bind point used by this command, or shader
+--     is bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses an @OpTypeTensorARM@ using that mapping, the
+--     calculated offset for the resource heap /must/ be a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-tensorDescriptorAlignment tensorDescriptorAlignment>
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-11300# If a pipeline
+--     is bound to the pipeline bind point used by this command, or shader
+--     is bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a
+--     multiple of 4
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-11301# If a pipeline
+--     is bound to the pipeline bind point used by this command, or shader
+--     is bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' backed by physical
+--     memory at every offset specified by each mapping
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-11302# If a pipeline
+--     is bound to the pipeline bind point used by this command, or shader
+--     is bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-11304# If a pipeline
+--     is bound to the pipeline bind point used by this command, or shader
+--     is bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a
+--     multiple of 8
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-11305# If a pipeline
+--     is bound to the pipeline bind point used by this command, or shader
+--     is bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' backed by physical
+--     memory at every offset specified by each mapping
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-11306# If a pipeline
+--     is bound to the pipeline bind point used by this command, or shader
+--     is bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address pointed to by the address in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-11308# For each
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps descriptor heap>
+--     that is statically used by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
+--     either directly or via a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>,
+--     a valid descriptor heap /must/ be bound
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-11309# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     was created as a 'Vulkan.Extensions.Handles.ShaderEXT' with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag or as part of a pipeline with the
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag, execution of this command /must/ not result in any descriptor
+--     read accessing data outside of the user range of the respective heap
+--     bound by @vkCmdBind*HeapEXT@ commands
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-11372# If any stage of
+--     the 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline
+--     bind point used by this command accesses a uniform buffer or uniform
+--     texel buffer through a descriptor in the bound resource heap, that
+--     stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @uniformBuffers@, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /must/ not access values outside
+--     of the range of the descriptor specified via
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+--     when the descriptor was written
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-11373# If any stage of
+--     the 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline
+--     bind point used by this command accesses a storage buffer or storage
+--     texel buffer through a descriptor in the bound resource heap, that
+--     stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @storageBuffers@, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /must/ not access values outside
+--     of the range of the descriptor specified by
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+--     when the descriptor was written
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-11374# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, and any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     to the pipeline bind point used by this command accesses a uniform
+--     buffer, uniform texel buffer, storage buffer, or storage texel
+--     buffer, that shader /must/ not access values outside of the range of
+--     the buffer as specified by
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+--     when the descriptor was written
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-pBindInfo-11375# If any
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     uses an embedded sampler via a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>,
+--     the value of @pBindInfo->reservedRangeSize@ set for
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.cmdBindSamplerHeapEXT'
+--     /must/ be greater than or equal to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minSamplerHeapReservedRangeWithEmbedded minSamplerHeapReservedRangeWithEmbedded>
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-11376# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     was created as a 'Vulkan.Extensions.Handles.ShaderEXT' with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag or as part of a pipeline with the
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag, and that shader statically uses a push constant value, that
+--     value /must/ have been set by
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.cmdPushDataEXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-11398# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_DATA_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_DATA_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_RESOURCE_HEAP_DATA_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the access
+--     /must/ not be
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-execution-memory-access-bounds out of bounds>
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-11437# If a pipeline
+--     is bound to the pipeline bind point used by this command, or shader
+--     is bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the buffer from
+--     which the address in push data was queried /must/ have been created
+--     with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-11438# If a pipeline
+--     is bound to the pipeline bind point used by this command, or shader
+--     is bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a uniform buffer using that mapping, the
+--     address that the uniform buffer is mapped to /must/ have been
+--     queried from a buffer created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-11441# If a pipeline
+--     is bound to the pipeline bind point used by this command, or shader
+--     is bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a uniform buffer using that mapping, the
+--     address that the uniform buffer is mapped to /must/ be aligned to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minUniformBufferOffsetAlignment minUniformBufferOffsetAlignment>
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-11439# If a pipeline
+--     is bound to the pipeline bind point used by this command, or shader
+--     is bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a storage buffer using that mapping, the
+--     address that the storage buffer is mapped to /must/ have been
+--     queried from a buffer created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_STORAGE_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-11442# If a pipeline
+--     is bound to the pipeline bind point used by this command, or shader
+--     is bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a storage buffer using that mapping, the
+--     address that the storage buffer is mapped to /must/ be aligned to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minStorageBufferOffsetAlignment minStorageBufferOffsetAlignment>
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-11485# If a pipeline
+--     is bound to the pipeline bind point used by this command, or shader
+--     is bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses an acceleration structure using that mapping,
+--     the address that the acceleration structure is mapped to /must/ be
+--     an acceleration structure address retrieved from a
+--     'Vulkan.Extensions.Handles.AccelerationStructureKHR' object via
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.getAccelerationStructureDeviceAddressKHR'
+--     or handle retrieved from a
+--     'Vulkan.Extensions.Handles.AccelerationStructureNV' object via
+--     'Vulkan.Extensions.VK_NV_ray_tracing.getAccelerationStructureHandleNV'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-index-11450# If a shader
+--     uses a sampler descriptor to sample an image as a result of this
+--     command, and that sampler descriptor uses a custom border color with
+--     an index defined by
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.SamplerCustomBorderColorIndexCreateInfoEXT',
+--     the value of
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.SamplerCustomBorderColorIndexCreateInfoEXT'::@index@
+--     /must/ have been registered before this command was recorded, and
+--     still be registered during the sampling operation, with an
+--     identically defined color
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-protectedNoFault-11455# If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, a pipeline is bound to the pipeline bind point
+--     used by this command, or a shader is bound to a shader stage used by
+--     this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     the address that the resource is mapped to /must/ have been queried
+--     from a buffer created without the
+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT'
+--     create flag set
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-protectedNoFault-11456# If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, a pipeline is bound to the pipeline bind point
+--     used by this command, or a shader is bound to a shader stage used by
+--     this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     the address of the indirect memory /must/ have been queried from a
+--     buffer created without the
+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT'
+--     create flag set
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-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.GraphicsPipeline.GraphicsPipelineCreateInfo'
+--     structure specified when creating the
+--     'Vulkan.Core10.Handles.Pipeline' bound to
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-subpass-02685# The subpass
+--     index of the current render pass /must/ be equal to the @subpass@
+--     member of the
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'
+--     structure specified when creating the
+--     'Vulkan.Core10.Handles.Pipeline' bound to
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpTypeImage-07468# If any
+--     shader executed by this pipeline accesses an @OpTypeImage@ variable
+--     with a @Dim@ operand of @SubpassData@, it /must/ be decorated with
+--     an @InputAttachmentIndex@ that corresponds to a valid input
+--     attachment in the current subpass
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07469# Input
+--     attachment views accessed in a subpass /must/ be created with the
+--     same 'Vulkan.Core10.Enums.Format.Format' as the corresponding
+--     subpass definition, and be created with a
+--     'Vulkan.Core10.Handles.ImageView' that is compatible with the
+--     attachment referenced by the subpass\'
+--     @pInputAttachments@[@InputAttachmentIndex@] in the bound
+--     'Vulkan.Core10.Handles.Framebuffer' as specified by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#compatibility-inputattachment Fragment Input Attachment Compatibility>
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-pDepthInputAttachmentIndex-09595#
+--     Input attachment views accessed in a dynamic render pass with a
+--     @InputAttachmentIndex@ referenced by
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo',
+--     or no @InputAttachmentIndex@ if
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pDepthInputAttachmentIndex@
+--     or
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pStencilInputAttachmentIndex@
+--     are @NULL@, /must/ be created with a
+--     'Vulkan.Core10.Handles.ImageView' that is compatible with the
+--     corresponding color, depth, or stencil attachment in
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-pDepthInputAttachmentIndex-09596#
+--     Input attachment views accessed in a dynamic render pass via a
+--     shader object /must/ have an @InputAttachmentIndex@ if both
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pDepthInputAttachmentIndex@
+--     and
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pStencilInputAttachmentIndex@
+--     are non-@NULL@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-InputAttachmentIndex-09597#
+--     If an input attachment view accessed in a dynamic render pass via a
+--     shader object has an @InputAttachmentIndex@, the
+--     @InputAttachmentIndex@ /must/ match an index in
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-06537# Memory backing
+--     image subresources used as attachments in the current render pass
+--     /must/ not be written in any way other than as an attachment by this
+--     command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-10795# If a color
+--     attachment is written by any prior command in this subpass or by the
+--     load, store, or resolve operations for this subpass, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT' on
+--     that attachment, it /must/ not be accessed in any way other than as
+--     an attachment by this command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-10796# If a depth
+--     attachment is written by any prior command in this subpass or by the
+--     load, store, or resolve operations for this subpass, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' on
+--     that attachment, it /must/ not be accessed in any way other than as
+--     an attachment by this command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-10797# If a stencil
+--     attachment is written by any prior command in this subpass or by the
+--     load, store, or resolve operations for this subpass, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
+--     on that attachment, it /must/ not be accessed in any way other than
+--     as an attachment by this command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-12338# If a color
+--     attachment is read in this command in any way other than as an
+--     attachment, or has been read by any prior command in this subpass as
+--     a non-attachment, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT' on
+--     that attachment, the color attachment /must/ not be written to by
+--     this command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-12339# If a depth
+--     attachment is read in this command in any way other than as an
+--     attachment, or has been read by any prior command in this subpass as
+--     a non-attachment, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' on
+--     that attachment, the depth attachment /must/ not be written to by
+--     this command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-12340# If a stencil
+--     attachment is read in this command in any way other than as an
+--     attachment, or has been read by any prior command in this subpass as
+--     a non-attachment, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
+--     on that attachment, the stencil attachment /must/ not be written to
+--     by this command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09003# If an
+--     attachment is written by any prior command in this subpass or by the
+--     load, store, or resolve operations for this subpass, it /must/ not
+--     be accessed in any way other than as an attachment, storage image,
+--     or sampled image by this command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-06886# If the current
+--     render pass instance uses a depth\/stencil attachment with a
+--     read-only layout for the depth aspect,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-depth-write depth writes>
+--     /must/ be disabled
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-06887# If the current
+--     render pass instance uses a depth\/stencil attachment with a
+--     read-only layout for the stencil aspect, both front and back
+--     @writeMask@ are not zero, and stencil test is enabled,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-stencil all stencil ops>
+--     /must/ be 'Vulkan.Core10.Enums.StencilOp.STENCIL_OP_KEEP'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07831# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT' dynamic
+--     state enabled then
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetViewport' /must/ have
+--     been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07832# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR' dynamic
+--     state enabled then
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetScissor' /must/ have been
+--     called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08617# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_WIDTH' dynamic
+--     state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line topology class, then
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth' /must/ have
+--     been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07834# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS' dynamic
+--     state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @depthBiasEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBias' or
+--     'Vulkan.Extensions.VK_EXT_depth_bias_control.cmdSetDepthBias2EXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07835# If a shader
+--     object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_BLEND_CONSTANTS'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and an active color
+--     attachment
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @blendEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE' with a
+--     blend equations where any
+--     'Vulkan.Core10.Enums.BlendFactor.BlendFactor' member is
+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_COLOR',
+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR',
+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_ALPHA', or
+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA',
+--     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetBlendConstants'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07836# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @depthBoundsTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBounds' /must/
+--     have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07837# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_COMPARE_MASK'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilCompareMask'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07838# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_WRITE_MASK'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilWriteMask'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07839# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_REFERENCE'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of and @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilReference'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-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-vkCmdDrawMeshTasksIndirectCountEXT-sampleLocationsEnable-02689#
+--     If the bound graphics pipeline was created with
+--     'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@
+--     set to 'Vulkan.Core10.FundamentalTypes.TRUE', then the active depth
+--     attachment /must/ have been created with the
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'
+--     bit set
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07634# If the
+--     @VK_EXT_sample_locations@ extension is enabled, a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-06666# If the
+--     @VK_EXT_sample_locations@ extension is enabled, a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07840# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CULL_MODE' dynamic
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetCullMode'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07841# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRONT_FACE' dynamic
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetFrontFace'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07843# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_TEST_ENABLE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE',
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthTestEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07844# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @depthTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthWriteEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07845# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_COMPARE_OP'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @depthTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthCompareOp'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07846# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthBounds depthBounds>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthBoundsTestEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07847# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_TEST_ENABLE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilTestEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07848# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_OP' dynamic
+--     state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilOp'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-viewportCount-03417# If a
+--     shader object is bound to any graphics stage or a graphics pipeline
+--     is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
+--     dynamic state enabled, and the state is not inherited, then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-scissorCount-03418# If a
+--     shader object is bound to any graphics stage or a graphics pipeline
+--     is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
+--     dynamic state enabled, and the state is not inherited, then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-viewportCount-03419# If a
+--     shader object is bound to any graphics stage or a graphics pipeline
+--     is bound which 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, and the state is not inherited, then 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-vkCmdDrawMeshTasksIndirectCountEXT-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-vkCmdDrawMeshTasksIndirectCountEXT-viewportCount-04138# If the
+--     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which 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 state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @viewportWScalingEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.cmdSetViewportWScalingNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08636# If the
+--     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which 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 state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @viewportWScalingEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', 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-vkCmdDrawMeshTasksIndirectCountEXT-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-vkCmdDrawMeshTasksIndirectCountEXT-shadingRateImage-09233# If
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV'
+--     and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetCoarseSampleOrderNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-shadingRateImage-09234# If
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which 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 state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @shadingRateImageEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetViewportShadingRatePaletteNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08637# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which 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 state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @shadingRateImageEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', 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-vkCmdDrawMeshTasksIndirectCountEXT-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
+--     'Vulkan.Core10.GraphicsPipeline.PipelineViewportStateCreateInfo',
+--     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-vkCmdDrawMeshTasksIndirectCountEXT-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
+--     'Vulkan.Core10.GraphicsPipeline.PipelineViewportStateCreateInfo',
+--     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-vkCmdDrawMeshTasksIndirectCountEXT-None-07878# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-exclusiveScissor exclusiveScissor>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07879# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-exclusiveScissor exclusiveScissor>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV'
+--     dynamic state enabled, and the most recent call to
+--     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorEnableNV'
+--     in the current command buffer set any element of
+--     @pExclusiveScissorEnables@ to 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then
+--     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-04876# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which 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 and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-04877# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-logicOp-04878# If a shader
+--     object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @logicOpEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetLogicOpEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-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-vkCmdDrawMeshTasksIndirectCountEXT-primitiveFragmentShadingRateWithMultipleViewports-08642#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
+--     limit is not supported, and any shader object bound to a graphics
+--     stage writes 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-vkCmdDrawMeshTasksIndirectCountEXT-blendEnable-04727# If a
+--     shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then for each color
+--     attachment, 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 corresponding
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @blendEnable@ /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08644# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and none of the following is
+--     enabled:
+--
+--     -   the @VK_AMD_mixed_attachment_samples@ extension
+--
+--     -   the @VK_NV_framebuffer_mixed_samples@ extension
+--
+--     -   the
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
+--         feature
+--
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizationSamples@ /must/ be the same as the current color
+--     and\/or depth\/stencil attachments
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08876# If a shader
+--     object is bound to any graphics stage, the current render pass
+--     instance /must/ have been begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-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-vkCmdDrawMeshTasksIndirectCountEXT-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-vkCmdDrawMeshTasksIndirectCountEXT-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-vkCmdDrawMeshTasksIndirectCountEXT-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-vkCmdDrawMeshTasksIndirectCountEXT-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-vkCmdDrawMeshTasksIndirectCountEXT-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-vkCmdDrawMeshTasksIndirectCountEXT-viewMask-06178# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the 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-vkCmdDrawMeshTasksIndirectCountEXT-colorAttachmentCount-06179#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled and the current render pass instance was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the 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-vkCmdDrawMeshTasksIndirectCountEXT-dynamicRenderingUnusedAttachments-08910#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and 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 an @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 bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-dynamicRenderingUnusedAttachments-08912#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and 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 an @imageView@ equal to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have the
+--     corresponding element of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
+--     used to create the bound pipeline equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-dynamicRenderingUnusedAttachments-08911#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled, and 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 an @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 bound graphics pipeline, or the corresponding
+--     element of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@,
+--     if it exists, /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-colorAttachmentCount-09362#
+--     If 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@
+--     equal to @1@, there is no shader object bound to any graphics stage,
+--     and a color attachment with a resolve mode of
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID',
+--     each element of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
+--     array with a @resolveImageView@ not equal to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
+--     with an image created with a
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value equal to the
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value used to create the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09363# If there is no
+--     shader object bound to any graphics stage, the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and a
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
+--     equal to @1@, and a color attachment with a resolve mode of
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID',
+--     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 an image created with a
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value equal to the
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value used to create the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09364# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there is no shader object bound to any graphics stage, and the bound
+--     graphics pipeline was created with a non-zero
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value and with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
+--     /must/ have set the blend enable to
+--     'Vulkan.Core10.FundamentalTypes.FALSE' prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09365# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there is no shader object bound to any graphics stage, and the bound
+--     graphics pipeline was created with a non-zero
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value and with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     /must/ have set @rasterizationSamples@ to
+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' prior
+--     to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09366# If there is a
+--     shader object bound to any graphics stage, and the current render
+--     pass includes a color attachment that uses the
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID'
+--     resolve mode, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
+--     /must/ have set blend enable to
+--     'Vulkan.Core10.FundamentalTypes.FALSE' prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-rasterizationSamples-09367#
+--     If there is a shader object bound to any graphics stage, and the
+--     current render pass includes a color attachment that uses the
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID'
+--     resolve mode, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     /must/ have set @rasterizationSamples@ to
+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' prior
+--     to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09368# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there is no shader object bound to any graphics stage, and the bound
+--     graphics pipeline was created with a non-zero
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value and with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     /must/ have set @pFragmentSize->width@ to @1@ prior to this drawing
+--     command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09369# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there is no shader object bound to any graphics stage, and the bound
+--     graphics pipeline was created with a non-zero
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value and with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     /must/ have set @pFragmentSize->height@ to @1@ prior to this drawing
+--     command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-pFragmentSize-09370# If
+--     there is a shader object bound to any graphics stage, and the
+--     current render pass includes a color attachment that uses the
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID'
+--     resolve mode, then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     /must/ have set @pFragmentSize->width@ to @1@ prior to this drawing
+--     command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-pFragmentSize-09371# If
+--     there is a shader object bound to any graphics stage, and the
+--     current render pass includes a color attachment that uses the
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID'
+--     resolve mode, then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     /must/ have set @pFragmentSize->height@ to @1@ prior to this drawing
+--     command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07749# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
+--     feature is enabled, a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-attachmentCount-07750# If
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
+--     feature is enabled, a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then the @attachmentCount@
+--     parameter of most recent call to
+--     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
+--     in the current command buffer /must/ be greater than or equal to the
+--     number of active color attachments
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07751# If the
+--     @VK_EXT_discard_rectangles@ extension is enabled, a graphics
+--     pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_EXT'
+--     dynamic state enabled and the @pNext@ chain of
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo' included
+--     a
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'
+--     structure, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @discardRectangleEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command for each
+--     discard rectangle in
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'::@discardRectangleCount@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-rasterizerDiscardEnable-09236#
+--     If the @VK_EXT_discard_rectangles@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_EXT'
+--     dynamic state enabled and the @pNext@ chain of
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo' did not
+--     include a
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'
+--     structure, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @discardRectangleEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command for each
+--     discard rectangle in
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.PhysicalDeviceDiscardRectanglePropertiesEXT'::@maxDiscardRectangles@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07880# If the
+--     @VK_EXT_discard_rectangles@ extension is enabled, a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07881# If the
+--     @VK_EXT_discard_rectangles@ extension is enabled, a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @discardRectangleEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleModeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-dynamicRenderingUnusedAttachments-08913#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
+--     used to create the bound graphics pipeline /must/ be equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-dynamicRenderingUnusedAttachments-08914#
+--     If current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->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 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->imageView@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-dynamicRenderingUnusedAttachments-08915#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
+--     used to create the bound graphics pipeline was not equal to the
+--     'Vulkan.Core10.Enums.Format.Format' used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@,
+--     the value of the format /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-dynamicRenderingUnusedAttachments-08916#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
+--     used to create the bound graphics pipeline /must/ be equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-dynamicRenderingUnusedAttachments-08917#
+--     If current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->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 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->imageView@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-dynamicRenderingUnusedAttachments-08918#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
+--     used to create the bound graphics pipeline was not equal to the
+--     'Vulkan.Core10.Enums.Format.Format' used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@,
+--     the value of the format /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-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_fragment_shading_rate.RenderingFragmentShadingRateAttachmentInfoKHR'::@imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the bound graphics
+--     pipeline /must/ have been created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-dynamicRenderingLocalRead-11797#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingLocalRead dynamicRenderingLocalRead>
+--     feature is enabled, the
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_LOCAL_READ_CONCURRENT_ACCESS_CONTROL_BIT_KHR'
+--     flag is specified, and an attachment is being used as a feedback
+--     loop as specified by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#rendering-attachment-input-attachment-feedback >,
+--     'Vulkan.Extensions.VK_KHR_maintenance10.RenderingAttachmentFlagsInfoKHR'::@flags@
+--     for that attachment /must/ include
+--     'Vulkan.Extensions.VK_KHR_maintenance10.RENDERING_ATTACHMENT_INPUT_ATTACHMENT_FEEDBACK_BIT_KHR'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-imageView-06184# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and
+--     'Vulkan.Extensions.VK_EXT_fragment_density_map.RenderingFragmentDensityMapAttachmentInfoEXT'::@imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the bound graphics
+--     pipeline /must/ have been created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-layers-10831# If the
+--     current render pass instance was created with
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE'
+--     or
+--     'Vulkan.Core10.Enums.RenderPassCreateFlagBits.RENDER_PASS_CREATE_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE',
+--     and the bound graphics pipeline was created with
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE',
+--     then the current render pass instance /must/ have a @layers@ value
+--     less than or equal to
+--     'Vulkan.Extensions.VK_VALVE_fragment_density_map_layered.PipelineFragmentDensityMapLayeredCreateInfoVALVE'::@maxFragmentDensityMapLayers@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-colorAttachmentCount-06185#
+--     If the bound pipeline was created with a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.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_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     used to create the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-pDepthAttachment-06186# If
+--     the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the bound pipeline was created with a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     structure, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
+--     @depthStencilAttachmentSamples@ member of
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     used to create the bound graphics pipeline /must/ be equal to the
+--     sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-pStencilAttachment-06187#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the bound pipeline was created with a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     structure, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
+--     @depthStencilAttachmentSamples@ member of
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     used to create the bound graphics pipeline /must/ be equal to the
+--     sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-multisampledRenderToSingleSampled-07285#
+--     If the bound pipeline was created without a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     structure, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
+--     feature is not enabled, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, 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 @rasterizationSamples@ for
+--     the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-multisampledRenderToSingleSampled-07286#
+--     If the bound pipeline was created without a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     structure, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
+--     feature is not enabled, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     @rasterizationSamples@ for the bound graphics pipeline /must/ be
+--     equal to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-multisampledRenderToSingleSampled-07287#
+--     If the bound pipeline was created without a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     structure, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
+--     feature is not enabled, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     @rasterizationSamples@ for the bound graphics pipeline /must/ be
+--     equal to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-pNext-07935# If this
+--     command is called inside a render pass instance started with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     and the @pNext@ chain of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'
+--     includes a
+--     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'
+--     structure with @multisampledRenderToSingleSampledEnable@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then the value of
+--     @rasterizationSamples@ for the bound graphics pipeline /must/ be
+--     equal to
+--     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'::@rasterizationSamples@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-renderPass-06198# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the bound pipeline /must/ have been created with a
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'::@renderPass@
+--     equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-pColorAttachments-08963# If
+--     the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, there is a
+--     graphics pipeline bound with a fragment shader that statically
+--     writes to a color attachment, the color write mask is not zero,
+--     color writes are enabled, and the corresponding element of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     corresponding element of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-pColorAttachments-11539# If
+--     the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, there is a graphics
+--     pipeline bound with a fragment shader that statically writes to a
+--     color attachment, the color write mask is not zero, color writes are
+--     enabled, and the corresponding element of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     corresponding element of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-pDepthAttachment-08964# If
+--     the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, there is a
+--     graphics pipeline bound, depth test is enabled, and the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-pDepthAttachment-11540# If
+--     the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, there is a graphics
+--     pipeline bound, depth test is enabled, and the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-pStencilAttachment-08965#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, there is a
+--     graphics pipeline bound, stencil test is enabled and the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-pStencilAttachment-11860#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, there is a graphics
+--     pipeline bound, stencil test is enabled and the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-flags-10582# If the current
+--     render pass instance was begun with a
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     call in @commandBuffer@, its
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@flags@
+--     parameter /must/ not have
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT'
+--     set unless
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_CONTENTS_INLINE_BIT_KHR'
+--     is also set
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-primitivesGeneratedQueryWithRasterizerDiscard-06708#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithRasterizerDiscard primitivesGeneratedQueryWithRasterizerDiscard>
+--     feature is not enabled and the
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
+--     query is active,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-discard rasterization discard>
+--     /must/ not be enabled
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-primitivesGeneratedQueryWithNonZeroStreams-06709#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>
+--     feature is not enabled and the
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
+--     query is active, the bound graphics pipeline /must/ not have been
+--     created with a non-zero value in
+--     'Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT'::@rasterizationStream@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07620# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClamp depthClamp>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClampEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07621# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_POLYGON_MODE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07622# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07623# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-alphaToCoverageEnable-08919#
+--     If the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT'
+--     dynamic state enabled, and @alphaToCoverageEnable@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-fragmentoutput Fragment Output Interface>
+--     /must/ contain a variable for the alpha @Component@ word in
+--     @Location@ 0 at @Index@ 0
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-alphaToCoverageEnable-08920#
+--     If a shader object is bound to any graphics stage, and the most
+--     recent call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT'
+--     in the current command buffer set @alphaToCoverageEnable@ to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-fragmentoutput Fragment Output Interface>
+--     /must/ contain a variable for the alpha @Component@ word in
+--     @Location@ 0 at @Index@ 0
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07624# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07625# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-alphaToOne alphaToOne>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToOneEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07626# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-logicOp logicOp>
+--     feature is enabled, a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLogicOpEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07627# If a shader
+--     object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and there are color
+--     attachments bound, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07629# If a shader
+--     object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and there are color
+--     attachments bound, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07630# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryStreams geometryStreams>
+--     feature is enabled, and a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
+--     stage or a graphics pipeline is bound which was created with both a
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
+--     stage and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_STREAM_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationStreamEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07631# If the
+--     @VK_EXT_conservative_rasterization@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetConservativeRasterizationModeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07632# If the
+--     @VK_EXT_conservative_rasterization@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @conservativeRasterizationMode@ is
+--     'Vulkan.Extensions.VK_EXT_conservative_rasterization.CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT',
+--     then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetExtraPrimitiveOverestimationSizeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-conservativePointAndLineRasterization-07499#
+--     If the @VK_EXT_conservative_rasterization@ extension is enabled,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-conservativePointAndLineRasterization conservativePointAndLineRasterization>
+--     is not supported, a shader object is bound to any graphics stage or
+--     a graphics pipeline is bound, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line or point topology class, then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @conservativeRasterizationMode@ /must/ be
+--     'Vulkan.Extensions.VK_EXT_conservative_rasterization.CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07633# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClipEnable depthClipEnable>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT'
+--     dynamic state, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07636# If the
+--     @VK_EXT_provoking_vertex@ extension is enabled, a shader object is
+--     bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetProvokingVertexModeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08666# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
+--     features are enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line topology class, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08669# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
+--     features are enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line topology class, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07849# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
+--     features are enabled and a shader object is bound to any graphics
+--     stage, or a bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @stippledLineEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then
+--     'Vulkan.Core14.Promoted_From_VK_KHR_line_rasterization.cmdSetLineStipple'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-10608# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line topology class, and the current @lineRasterizationMode@
+--     is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_BRESENHAM'
+--     or
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH',
+--     then the current @alphaToCoverageEnable@, @alphaToOneEnable@ and
+--     @sampleShadingEnable@ states /must/ all be
+--     'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07639# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClipControl depthClipControl>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipNegativeOneToOneEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09650# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClampControl depthClampControl>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @depthClampEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_depth_clamp_control.cmdSetDepthClampRangeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07640# If the
+--     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportWScalingEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07641# If the
+--     @VK_NV_viewport_swizzle@ extension is enabled, and a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07642# If the
+--     @VK_NV_fragment_coverage_to_color@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07643# If the
+--     @VK_NV_fragment_coverage_to_color@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @coverageToColorEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07644# If the
+--     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationModeNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07645# If the
+--     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @coverageModulationMode@ is any value other than
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.COVERAGE_MODULATION_MODE_NONE_NV',
+--     then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07646# If the
+--     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @coverageModulationTableEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07647# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetShadingRateImageEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-pipelineFragmentShadingRate-09238#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07648# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-representativeFragmentTest representativeFragmentTest>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRepresentativeFragmentTestEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07649# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-coverageReductionMode coverageReductionMode>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageReductionModeNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-rasterizationSamples-07471#
+--     If the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, and the current subpass does not use any color
+--     and\/or depth\/stencil attachments, then the @rasterizationSamples@
+--     in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     /must/ follow the rules for a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-noattachments zero-attachment subpass>
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-samples-07472# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
+--     state enabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state disabled, then the @samples@ parameter in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
+--     /must/ be greater or equal to the
+--     'Vulkan.Core10.GraphicsPipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
+--     parameter used to create the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-samples-07473# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
+--     state and
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     states enabled, then the @samples@ parameter in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
+--     /must/ be greater or equal to the @rasterizationSamples@ parameter
+--     in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09211# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, or a shader object is bound to any graphics stage,
+--     and the current render pass instance includes a
+--     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'
+--     structure with @multisampledRenderToSingleSampledEnable@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then the
+--     @rasterizationSamples@ in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     /must/ be the same as the @rasterizationSamples@ member of that
+--     structure
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-firstAttachment-07476# If a
+--     shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--     dynamic states enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
+--     in the current command buffer prior to this drawing command /must/
+--     have set a value for all active color attachments
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-firstAttachment-07478# If a
+--     shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT'
+--     dynamic states enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
+--     in the current command buffer prior to this drawing command /must/
+--     have set a value for all active color attachments
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-advancedBlendMaxColorAttachments-07480#
+--     If a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
+--     and
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--     dynamic states enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and an active color
+--     attachment
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @blendEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then the
+--     number of active color attachments /must/ not exceed
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-advancedBlendMaxColorAttachments advancedBlendMaxColorAttachments>
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-10862# If a graphics
+--     pipeline is bound was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
+--     , but not the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command for all
+--     active color attachments with the @blendEnable@
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-rasterizerDiscardEnable-10863#
+--     If a graphics pipeline is bound was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT',
+--     but not the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command for all
+--     active color attachments with the @blendEnable@
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-10864# If a shader
+--     object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
+--     and
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then either
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command for all
+--     active color attachments with the @blendEnable@
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-primitivesGeneratedQueryWithNonZeroStreams-07481#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>
+--     feature is not enabled and the
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
+--     query is active, and the bound graphics pipeline was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_STREAM_EXT'
+--     state enabled, the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationStreamEXT'
+--     /must/ have set the @rasterizationStream@ to zero
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-sampleLocationsPerPixel-07482#
+--     If the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state enabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state disabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then the @sampleLocationsPerPixel@ member of @pSampleLocationsInfo@
+--     in the last call to
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     /must/ equal the @rasterizationSamples@ member of the
+--     'Vulkan.Core10.GraphicsPipeline.PipelineMultisampleStateCreateInfo'
+--     structure the bound graphics pipeline has been created with
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-sampleLocationsPerPixel-07483#
+--     If the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state enabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then the @sampleLocationsPerPixel@ member of @pSampleLocationsInfo@
+--     in the last call to
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     /must/ equal the @rasterizationSamples@ parameter of the last call
+--     to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-sampleLocationsEnable-07484#
+--     If a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage, or the bound graphics pipeline was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     state enabled, and @sampleLocationsEnable@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT'
+--     then the current active depth attachment /must/ have been created
+--     with the
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'
+--     bit set
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-sampleLocationsEnable-07485#
+--     If a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage, or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state enabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     state enabled, and if @sampleLocationsEnable@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
+--     then the @sampleLocationsInfo.maxSampleLocationGridSize.width@ in
+--     the last call to
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     /must/ evenly divide
+--     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.width@
+--     as returned by
+--     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
+--     with a @samples@ parameter equaling @rasterizationSamples@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-sampleLocationsEnable-07486#
+--     If a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage, or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state enabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     state enabled, and if @sampleLocationsEnable@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
+--     then the @sampleLocationsInfo.maxSampleLocationGridSize.height@ in
+--     the last call to
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     /must/ evenly divide
+--     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.height@
+--     as returned by
+--     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
+--     with a @samples@ parameter equaling @rasterizationSamples@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-sampleLocationsEnable-07487#
+--     If a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage, or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     state enabled, and if @sampleLocationsEnable@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
+--     the fragment shader code /must/ not statically use the extended
+--     instruction @InterpolateAtSample@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-sampleLocationsEnable-07936#
+--     If the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state disabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then @sampleLocationsInfo.sampleLocationGridSize.width@ /must/
+--     evenly divide
+--     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.width@
+--     as returned by
+--     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
+--     with a @samples@ parameter equaling the value of
+--     @rasterizationSamples@ in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-sampleLocationsEnable-07937#
+--     If the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state disabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then @sampleLocationsInfo.sampleLocationGridSize.height@ /must/
+--     evenly divide
+--     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.height@
+--     as returned by
+--     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
+--     with a @samples@ parameter equaling the value of
+--     @rasterizationSamples@ in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-sampleLocationsEnable-07938#
+--     If the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state disabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then @sampleLocationsInfo.sampleLocationsPerPixel@ /must/ equal
+--     @rasterizationSamples@ in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-coverageModulationTableEnable-07488#
+--     If a shader object is bound to any graphics stage or the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV'
+--     state enabled, and the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV'
+--     set @coverageModulationTableEnable@ to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then the
+--     @coverageModulationTableCount@ parameter in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableNV'
+--     /must/ equal the current @rasterizationSamples@ divided by the
+--     number of color samples in the current active color attachment
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-rasterizationSamples-07489#
+--     If the @VK_NV_framebuffer_mixed_samples@ extension is enabled, and
+--     if current subpass has a depth\/stencil attachment and depth test,
+--     stencil test, or depth bounds test are enabled in the bound
+--     pipeline, then the current @rasterizationSamples@ /must/ be the same
+--     as the sample count of the depth\/stencil attachment
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-coverageToColorEnable-07490#
+--     If the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
+--     state enabled and the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
+--     set the @coverageToColorEnable@ to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then there /must/ be an
+--     active color attachment at the location selected by the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
+--     @coverageToColorLocation@, with a
+--     'Vulkan.Core10.Enums.Format.Format' of
+--     'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R8_SINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R16_UINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R16_SINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R32_UINT', or
+--     'Vulkan.Core10.Enums.Format.FORMAT_R32_SINT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-rasterizerDiscardEnable-09420#
+--     If the @VK_NV_fragment_coverage_to_color@ extension is enabled, and
+--     a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage, and the most recent call to
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
+--     in the current command buffer set @rasterizerDiscardEnable@ to
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
+--     set the @coverageToColorEnable@ to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then there /must/ be an
+--     active color attachment at the location selected by the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
+--     @coverageToColorLocation@, with a
+--     'Vulkan.Core10.Enums.Format.Format' of
+--     'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R8_SINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R16_UINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R16_SINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R32_UINT', or
+--     'Vulkan.Core10.Enums.Format.FORMAT_R32_SINT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-coverageReductionMode-07491#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-coverageReductionMode coverageReductionMode>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV'
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     dynamic states enabled, then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current values>
+--     of @coverageReductionMode@, @rasterizationSamples@, the sample
+--     counts for the color and depth\/stencil attachments (if the subpass
+--     has them) /must/ be a valid combination returned by
+--     'Vulkan.Extensions.VK_NV_coverage_reduction_mode.getPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-viewportCount-07492# 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_SWIZZLE_NV'
+--     dynamic state enabled, 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-vkCmdDrawMeshTasksIndirectCountEXT-viewportCount-07493# 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_SWIZZLE_NV'
+--     dynamic states enabled then the @viewportCount@ parameter in the
+--     last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
+--     /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-vkCmdDrawMeshTasksIndirectCountEXT-viewportCount-09421# If the
+--     @VK_NV_viewport_swizzle@ extension is enabled, and a shader object
+--     is bound to any graphics stage, then the @viewportCount@ parameter
+--     in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
+--     /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-vkCmdDrawMeshTasksIndirectCountEXT-rasterizationSamples-07494#
+--     If the @VK_NV_framebuffer_mixed_samples@ extension is enabled, and
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-coverageReductionMode coverageReductionMode>
+--     feature is not enabled, or the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @coverageReductionMode@ is not
+--     'Vulkan.Extensions.VK_NV_coverage_reduction_mode.COVERAGE_REDUCTION_MODE_TRUNCATE_NV',
+--     and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizationSamples@ is greater than sample count of the color
+--     attachment, then
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-sampleshading sample shading>
+--     /must/ be disabled
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-stippledLineEnable-07495#
+--     If the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic states enabled, and if the current @stippledLineEnable@
+--     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
+--     @lineRasterizationMode@ state is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_RECTANGULAR',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-stippledLineEnable-07496#
+--     If the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic states enabled, and if the current @stippledLineEnable@
+--     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
+--     @lineRasterizationMode@ state is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_BRESENHAM',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-stippledLineEnable-07497#
+--     If the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic states enabled, and if the current @stippledLineEnable@
+--     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
+--     @lineRasterizationMode@ state is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-stippledLineEnable-07498#
+--     If the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic states enabled, and if the current @stippledLineEnable@
+--     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
+--     @lineRasterizationMode@ state is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_DEFAULT',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>
+--     feature /must/ be enabled and
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@strictLines@
+--     /must/ be 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-stage-07073# If the bound
+--     pipeline was created with the
+--     'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo'::@stage@
+--     member of an element of
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'::@pStages@
+--     set to
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT',
+--     then
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-mesh-shader Mesh Shader Queries>
+--     /must/ not be active
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08877# If a shader
+--     object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07850# If dynamic
+--     state was inherited from
+--     'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV',
+--     it /must/ be set in the current command buffer prior to this drawing
+--     command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-nextStage-10745# For each
+--     shader object bound to a graphics stage, except for shader object
+--     bound to the last graphics stage in the logical pipeline, it /must/
+--     have been created with a @nextStage@ including the corresponding bit
+--     to the shader object bound to the following graphics stage in the
+--     logical pipeline
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08684# If there is no
+--     bound graphics pipeline,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08685# If there is no
+--     bound graphics pipeline, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellationShader>
+--     feature is enabled,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08686# If there is no
+--     bound graphics pipeline, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellationShader>
+--     feature is enabled,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08687# If there is no
+--     bound graphics pipeline, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometryShader>
+--     feature is enabled,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08688# If there is no
+--     bound graphics pipeline,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08689# If there is no
+--     bound graphics pipeline, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
+--     feature is enabled,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08690# If there is no
+--     bound graphics pipeline, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
+--     feature is enabled,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08693# If there is no
+--     bound graphics pipeline, and at least one of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
+--     features is enabled, one of the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--     stages /must/ have a valid 'Vulkan.Extensions.Handles.ShaderEXT'
+--     bound, and the other /must/ have no
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08696# If there is no
+--     bound graphics pipeline, and a valid
+--     'Vulkan.Extensions.Handles.ShaderEXT' is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage, there /must/ be no 'Vulkan.Extensions.Handles.ShaderEXT'
+--     bound to either the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--     stage or the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--     stage
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08698# If any graphics
+--     shader is bound which was created with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
+--     flag, then all shaders created with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
+--     flag in the same
+--     'Vulkan.Extensions.VK_EXT_shader_object.createShadersEXT' call
+--     /must/ also be bound
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08699# If any graphics
+--     shader is bound which was created with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
+--     flag, any stages in between stages whose shaders which did not
+--     create a shader with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
+--     flag as part of the same
+--     'Vulkan.Extensions.VK_EXT_shader_object.createShadersEXT' call
+--     /must/ not have any 'Vulkan.Extensions.Handles.ShaderEXT' bound
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08878# All bound
+--     graphics shader objects /must/ have been created with identical or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-identically-defined identically defined>
+--     push constant ranges
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08879# All bound
+--     graphics shader objects /must/ have either been created with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag set, or with identical or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-identically-defined identically defined>
+--     arrays of descriptor set layouts
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-colorAttachmentCount-09372#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and a
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
+--     equal to @1@, a color attachment with a resolve mode of
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID',
+--     and a fragment shader is bound, it /must/ not declare the
+--     @DepthReplacing@ or @StencilRefReplacingEXT@ execution modes
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-pDynamicStates-08715# If
+--     the bound graphics pipeline state includes a fragment shader stage,
+--     was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE'
+--     set in
+--     'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@,
+--     and the fragment shader declares the @EarlyFragmentTests@ execution
+--     mode and uses @OpDepthAttachmentReadEXT@, the @depthWriteEnable@
+--     parameter in the last call to
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthWriteEnable'
+--     /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-pDynamicStates-08716# If
+--     the bound graphics pipeline state includes a fragment shader stage,
+--     was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_WRITE_MASK'
+--     set in
+--     'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@,
+--     and the fragment shader declares the @EarlyFragmentTests@ execution
+--     mode and uses @OpStencilAttachmentReadEXT@, the @writeMask@
+--     parameter in the last call to
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilWriteMask' /must/
+--     be @0@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09116# If a shader
+--     object is bound to any graphics stage or the bound graphics pipeline
+--     was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT',
+--     and the format of any color attachment is
+--     'Vulkan.Core10.Enums.Format.FORMAT_E5B9G9R9_UFLOAT_PACK32', the
+--     corresponding element of the @pColorWriteMasks@ parameter of
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
+--     /must/ either include all of
+--     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_R_BIT',
+--     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_G_BIT',
+--     and
+--     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_B_BIT',
+--     or none of them
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-maxFragmentDualSrcAttachments-09239#
+--     If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blending blending>
+--     is enabled for any attachment where either the source or destination
+--     blend factors for that attachment
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-dsb use the secondary color input>,
+--     the maximum value of @Location@ for any output attachment
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-staticuse statically used>
+--     in the @Fragment@ @Execution@ @Model@ executed by this command
+--     /must/ be less than
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFragmentDualSrcAttachments maxFragmentDualSrcAttachments>
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09548# If the current
+--     render pass was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there is no shader object bound to any graphics stage, the value of
+--     each element of
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingAttachmentLocationInfo'::@pColorAttachmentLocations@
+--     in the bound pipeline /must/ match the value for the corresponding
+--     locations set currently in the current render pass instance
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09549# If the current
+--     render pass was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     and there is no shader object bound to any graphics stage, the value
+--     of each element of
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pColorAttachmentInputIndices@
+--     in the bound pipeline /must/ match the value for the corresponding
+--     index set currently in the current render pass instance
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-10927# If the current
+--     render pass was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     and there is no shader object bound to any graphics stage, the value
+--     of
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pDepthInputAttachmentIndex@
+--     in the bound pipeline /must/ match the value set currently in the
+--     current render pass instance
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-10928# If the current
+--     render pass was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     and there is no shader object bound to any graphics stage, the value
+--     of
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pStencilInputAttachmentIndex@
+--     in the bound pipeline /must/ match the value set currently in the
+--     current render pass instance
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09642# If the current
+--     render pass was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     with the
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT'
+--     flag, the bound graphics pipeline /must/ have been created with
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09643# If the bound
+--     graphics pipeline was created with
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT',
+--     the current render pass /must/ have begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     with the
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT'
+--     flag
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-10677# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model>
+--     is enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tileShadingPerTileDraw tileShadingPerTileDraw>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-10772# If a shader
+--     object is bound to any graphics stage, /multiview/ functionality
+--     /must/ not be enabled in the current render pass
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-multiviewPerViewViewports-12262#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiviewPerViewViewports multiviewPerViewViewports>
+--     feature is enabled, then the index of the most significant bit in
+--     current render pass instance @viewMask@ /must/ be less than the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @viewportCount@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-multiviewPerViewViewports-12263#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiviewPerViewViewports multiviewPerViewViewports>
+--     feature is enabled, then the index of the most significant bit in
+--     current render pass instance @viewMask@ /must/ be less than the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @scissorCount@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-flags-11521# If current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@flags@
+--     which includes
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_FRAGMENT_REGION_BIT_EXT',
+--     and if
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-sampleshading sample shading>
+--     is enabled (explicitly or implicitly), then the minimum fraction for
+--     sample shading /must/ equal 0.0
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-11522# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and contains a custom resolve, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, the graphics pipeline bound /must/ have been
+--     created with a
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-11523# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and does not contain a custom resolve, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, the graphics pipeline bound /must/ not have
+--     been created with a
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-customResolve-11524# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, the graphics pipeline
+--     bound /must/ have been created with
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@
+--     as 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-customResolve-11525# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and contains a custom resolve, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not been recorded in the render pass instance, the graphics
+--     pipeline bound /must/ have been created with
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@
+--     as 'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-11861# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled and the current render pass instance was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and contains a custom resolve, the bound graphics pipeline /must/
+--     have been created with a
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@colorAttachmentCount@
+--     equal to
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-11862# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and the current render pass instance was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, 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 an @resolveImageView@ 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_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@
+--     used to create the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-11863# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and the current render pass instance was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, 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 an @resolveImageView@ equal to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have the
+--     corresponding element of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@
+--     used to create the bound pipeline equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-dynamicRenderingUnusedAttachments-11864#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled, the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, 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 an @resolveImageView@ 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_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@
+--     used to create the bound graphics pipeline, or the corresponding
+--     element of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@,
+--     if it exists, /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-11865# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@
+--     used to create the bound graphics pipeline /must/ be equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-11866# If current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@
+--     used to create the 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->resolveImageView@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-dynamicRenderingUnusedAttachments-11867#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@
+--     used to create the bound graphics pipeline was not equal to the
+--     'Vulkan.Core10.Enums.Format.Format' used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@,
+--     the value of the format /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-11868# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@
+--     used to create the bound graphics pipeline /must/ be equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-11869# If current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@
+--     used to create the 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->resolveImageView@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-dynamicRenderingUnusedAttachments-11870#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@
+--     used to create the bound graphics pipeline was not equal to the
+--     'Vulkan.Core10.Enums.Format.Format' used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@,
+--     the value of the format /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-colorAttachmentCount-11871#
+--     If 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@ and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, then for each element
+--     of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
+--     array with a @resolveImageView@ not equal to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', the @resolveImageView@
+--     /must/ have been created with a sample count equal to the value of
+--     @rasterizationSamples@ for the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-pDepthAttachment-11872# If
+--     the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     @rasterizationSamples@ for the bound graphics pipeline /must/ be
+--     equal to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-pStencilAttachment-11873#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     @rasterizationSamples@ for the bound graphics pipeline /must/ be
+--     equal to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-customResolve-11529# If a
+--     shader object is bound to the fragment stage, the current render
+--     pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     a fragment density map attachment is active, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been called, then the fragment shader object bound /must/ have
+--     been created with
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@
+--     as 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-customResolve-11530# If a
+--     shader object is bound to the fragment stage, the current render
+--     pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and contains a custom resolve, a fragment density map attachment is
+--     active, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been called, then the fragment shader object bound
+--     /must/ have been created with
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@
+--     as 'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-flags-13361# If there are
+--     any shader objects bound that were created with @flags@ that
+--     includes the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     bit, then all bound shader objects /must/ have been created with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     bit
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-flags-13362# If there are
+--     any shader objects bound that were created with @flags@ that
+--     includes the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     bit, then the pipeline layout of the bound descriptor sets /must/
+--     have been created with
+--     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT'
+--     set
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-flags-13363# If there are
+--     any shader objects bound that were created with @flags@ that
+--     includes the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     bit, and any of the descriptor set layouts used to create the
+--     pipeline layout of the bound descriptor sets were created with any
+--     binding’s
+--     'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutBinding'::@stageFlags@
+--     set with
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT',
+--     then there /must/ be no binding with
+--     'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutBinding'::@stageFlags@
+--     set with
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-flags-13364# If there are
+--     any shader objects bound that were created with @flags@ that
+--     includes both the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     and
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
+--     bits, the pipeline layout of the bound descriptor sets /must/ have
+--     been created with
+--     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_NO_TASK_SHADER_BIT_KHR'
+--     set
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-flags-13365# If there are
+--     any shader objects bound that were created with @flags@ that
+--     includes both the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     and
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
+--     bits, there /must/ be no shader object bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--     stage
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-stage-06480# The bound
+--     graphics pipeline /must/ not have been created with the
+--     'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo'::@stage@
+--     member of any element of
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'::@pStages@
+--     set to
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-pStages-10680# If there is
+--     no bound graphics pipeline,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     not have last bound the @pStages@ element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
+--     with a valid shader object other than
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07074#
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-transform-feedback Transform Feedback Queries>
+--     /must/ not be active
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07075#
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-primitives-generated Primitives Generated Queries>
+--     /must/ not be active
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-pipelineStatistics-07076#
+--     The @pipelineStatistics@ member used to create any active
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-pipestats Pipeline Statistics Query>
+--     /must/ not contain
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT',
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT',
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT',
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT',
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT',
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT',
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT',
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT',
+--     or
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08694# If there is no
+--     bound graphics pipeline, and both the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
+--     features are enabled, and a valid
+--     'Vulkan.Extensions.Handles.ShaderEXT' is bound the to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--     stage, and that 'Vulkan.Extensions.Handles.ShaderEXT' was created
+--     without the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
+--     flag, a valid 'Vulkan.Extensions.Handles.ShaderEXT' /must/ be bound
+--     to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--     stage
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08695# If there is no
+--     bound graphics pipeline, and both the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
+--     features are enabled, and a valid
+--     'Vulkan.Extensions.Handles.ShaderEXT' is bound the to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--     stage, and that 'Vulkan.Extensions.Handles.ShaderEXT' was created
+--     with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
+--     flag, there /must/ be no 'Vulkan.Extensions.Handles.ShaderEXT' bound
+--     to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--     stage
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-buffer-02708# If @buffer@
+--     is non-sparse then it /must/ be bound completely and contiguously to
+--     a single 'Vulkan.Core10.Handles.DeviceMemory' object
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-buffer-02709# @buffer@
+--     /must/ have been created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-offset-02710# @offset@
+--     /must/ be a multiple of @4@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-commandBuffer-02711#
+--     @commandBuffer@ /must/ not be a protected command buffer
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-countBuffer-02714# If
+--     @countBuffer@ is non-sparse then it /must/ be bound completely and
+--     contiguously to a single 'Vulkan.Core10.Handles.DeviceMemory' object
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-countBuffer-02715#
+--     @countBuffer@ /must/ have been created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-countBufferOffset-02716#
+--     @countBufferOffset@ /must/ be a multiple of @4@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-countBuffer-02717# The
+--     count stored in @countBuffer@ /must/ be less than or equal to
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxDrawIndirectCount@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-countBufferOffset-04129#
+--     (@countBufferOffset@ + @sizeof@(uint32_t)) /must/ be less than or
+--     equal to the size of @countBuffer@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-04445# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-drawIndirectCount drawIndirectCount>
+--     feature is not enabled this function /must/ not be used
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-stride-07096# @stride@
+--     /must/ be a multiple of @4@ and /must/ be greater than or equal to
+--     @sizeof@('DrawMeshTasksIndirectCommandEXT')
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-maxDrawCount-07097# If
+--     @maxDrawCount@ is greater than or equal to @1@, (@stride@ ×
+--     (@maxDrawCount@ - 1) + @offset@ +
+--     @sizeof@('DrawMeshTasksIndirectCommandEXT')) /must/ be less than or
+--     equal to the size of @buffer@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-MeshEXT-07100# The current
+--     pipeline bound to
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
+--     /must/ contain a shader stage using the @MeshEXT@ @Execution@
+--     @Model@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-buffer-parameter# @buffer@
+--     /must/ be a valid 'Vulkan.Core10.Handles.Buffer' handle
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-countBuffer-parameter#
+--     @countBuffer@ /must/ be a valid 'Vulkan.Core10.Handles.Buffer'
+--     handle
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-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-vkCmdDrawMeshTasksIndirectCountEXT-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-renderpass# This command
+--     /must/ only be called inside of a render pass instance
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-suspended# This command
+--     /must/ not be called between suspended render pass instances
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-videocoding# This command
+--     /must/ only be called outside of a video coding scope
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-commonparent# Each of
+--     @buffer@, @commandBuffer@, and @countBuffer@ /must/ have been
+--     created, allocated, or retrieved from the same
+--     'Vulkan.Core10.Handles.Device'
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Inside                                                                                                                 | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdDrawMeshTasksIndirectCountEXT is affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_draw_indirect_count VK_AMD_draw_indirect_count>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_mesh_shader VK_EXT_mesh_shader>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_draw_indirect_count VK_KHR_draw_indirect_count>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_2 VK_VERSION_1_2>,
+-- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize'
+cmdDrawMeshTasksIndirectCountEXT :: 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)
+                                 -> -- | @countBuffer@ is the buffer containing the draw count.
+                                    ("countBuffer" ::: Buffer)
+                                 -> -- | @countBufferOffset@ is the byte offset into @countBuffer@ where the draw
+                                    -- count begins.
+                                    ("countBufferOffset" ::: DeviceSize)
+                                 -> -- | @maxDrawCount@ specifies the maximum number of draws that will be
+                                    -- executed. The actual number of executed draw calls is the minimum of the
+                                    -- count specified in @countBuffer@ and @maxDrawCount@.
+                                    ("maxDrawCount" ::: Word32)
+                                 -> -- | @stride@ is the byte stride between successive sets of draw parameters.
+                                    ("stride" ::: Word32)
+                                 -> io ()
+cmdDrawMeshTasksIndirectCountEXT commandBuffer
+                                   buffer
+                                   offset
+                                   countBuffer
+                                   countBufferOffset
+                                   maxDrawCount
+                                   stride = liftIO $ do
+  let vkCmdDrawMeshTasksIndirectCountEXTPtr = pVkCmdDrawMeshTasksIndirectCountEXT (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  unless (vkCmdDrawMeshTasksIndirectCountEXTPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdDrawMeshTasksIndirectCountEXT is null" Nothing Nothing
+  let vkCmdDrawMeshTasksIndirectCountEXT' = mkVkCmdDrawMeshTasksIndirectCountEXT vkCmdDrawMeshTasksIndirectCountEXTPtr
+  traceAroundEvent "vkCmdDrawMeshTasksIndirectCountEXT" (vkCmdDrawMeshTasksIndirectCountEXT'
+                                                           (commandBufferHandle (commandBuffer))
+                                                           (buffer)
+                                                           (offset)
+                                                           (countBuffer)
+                                                           (countBufferOffset)
+                                                           (maxDrawCount)
+                                                           (stride))
+  pure $ ()
+
+
+-- | VkPhysicalDeviceMeshShaderFeaturesEXT - Structure describing mesh
+-- shading features that can be supported by an implementation
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceMeshShaderFeaturesEXT' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceMeshShaderFeaturesEXT', it /must/ add an instance of the
+-- structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- The corresponding features of the
+-- 'Vulkan.Extensions.VK_NV_mesh_shader.PhysicalDeviceMeshShaderFeaturesNV'
+-- structure /must/ match those in 'PhysicalDeviceMeshShaderFeaturesEXT'.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkPhysicalDeviceMeshShaderFeaturesEXT-multiviewMeshShader-07032#
+--     If @multiviewMeshShader@ is enabled then
+--     'Vulkan.Extensions.VK_KHR_multiview.PhysicalDeviceMultiviewFeaturesKHR'::@multiview@
+--     /must/ also be enabled
+--
+-- -   #VUID-VkPhysicalDeviceMeshShaderFeaturesEXT-primitiveFragmentShadingRateMeshShader-07033#
+--     If @primitiveFragmentShadingRateMeshShader@ is enabled then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PhysicalDeviceFragmentShadingRateFeaturesKHR'::@primitiveFragmentShadingRate@
+--     /must/ also be enabled
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkPhysicalDeviceMeshShaderFeaturesEXT-sType-sType# @sType@
+--     /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT'
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_mesh_shader VK_EXT_mesh_shader>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceMeshShaderFeaturesEXT = PhysicalDeviceMeshShaderFeaturesEXT
+  { -- | #features-taskShader# @taskShader@ specifies whether task shaders are
+    -- supported. If this feature is not enabled, the
+    -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT' and
+    -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_EXT'
+    -- enum values /must/ not be used.
+    taskShader :: Bool
+  , -- | #features-meshShader# @meshShader@ specifies whether mesh shaders are
+    -- supported. If this feature is not enabled, the
+    -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT' and
+    -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_EXT'
+    -- enum values /must/ not be used.
+    meshShader :: Bool
+  , -- | #features-multiviewMeshShader# @multiviewMeshShader@ specifies whether
+    -- the implementation supports
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-multiview multiview>
+    -- rendering within a render pass, with mesh shaders. If this feature is
+    -- not enabled, then a pipeline compiled against a subpass with a non-zero
+    -- view mask /must/ not include a mesh shader.
+    multiviewMeshShader :: Bool
+  , -- | #features-primitiveFragmentShadingRateMeshShader#
+    -- @primitiveFragmentShadingRateMeshShader@ indicates that the
+    -- implementation supports the
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-fragment-shading-rate-primitive primitive fragment shading rate>
+    -- in mesh shaders.
+    primitiveFragmentShadingRateMeshShader :: Bool
+  , -- | #features-meshShaderQueries# @meshShaderQueries@ indicates that the
+    -- implementation supports creating query pools using the
+    -- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_MESH_PRIMITIVES_GENERATED_EXT'
+    -- query type and statistic queries containing the
+    -- 'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_TASK_SHADER_INVOCATIONS_BIT_EXT'
+    -- and
+    -- 'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_MESH_SHADER_INVOCATIONS_BIT_EXT'
+    -- flags
+    meshShaderQueries :: Bool
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceMeshShaderFeaturesEXT)
+#endif
+deriving instance Show PhysicalDeviceMeshShaderFeaturesEXT
+
+instance ToCStruct PhysicalDeviceMeshShaderFeaturesEXT where
+  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceMeshShaderFeaturesEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (taskShader))
+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (meshShader))
+    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (multiviewMeshShader))
+    poke ((p `plusPtr` 28 :: Ptr Bool32)) (boolToBool32 (primitiveFragmentShadingRateMeshShader))
+    poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (meshShaderQueries))
+    f
+  cStructSize = 40
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 28 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceMeshShaderFeaturesEXT where
+  peekCStruct p = do
+    taskShader <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    meshShader <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
+    multiviewMeshShader <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))
+    primitiveFragmentShadingRateMeshShader <- peek @Bool32 ((p `plusPtr` 28 :: Ptr Bool32))
+    meshShaderQueries <- peek @Bool32 ((p `plusPtr` 32 :: Ptr Bool32))
+    pure $ PhysicalDeviceMeshShaderFeaturesEXT
+             (bool32ToBool taskShader)
+             (bool32ToBool meshShader)
+             (bool32ToBool multiviewMeshShader)
+             (bool32ToBool primitiveFragmentShadingRateMeshShader)
+             (bool32ToBool meshShaderQueries)
+
+instance Storable PhysicalDeviceMeshShaderFeaturesEXT where
+  sizeOf ~_ = 40
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceMeshShaderFeaturesEXT where
+  zero = PhysicalDeviceMeshShaderFeaturesEXT
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkPhysicalDeviceMeshShaderPropertiesEXT - Structure describing mesh
+-- shading properties
+--
+-- = Members
+--
+-- The members of the 'PhysicalDeviceMeshShaderPropertiesEXT' structure
+-- describe the following implementation-dependent limits:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceMeshShaderPropertiesEXT' structure is included in
+-- the @pNext@ chain of
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',
+-- it is filled with the implementation-dependent limits.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_mesh_shader VK_EXT_mesh_shader>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceMeshShaderPropertiesEXT = PhysicalDeviceMeshShaderPropertiesEXT
+  { -- | #limits-maxTaskWorkGroupTotalCount# @maxTaskWorkGroupTotalCount@ is the
+    -- maximum number of local workgroups that /can/ be launched for a task
+    -- shader by a
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#drawing-mesh-shading mesh tasks drawing command>.
+    maxTaskWorkGroupTotalCount :: Word32
+  , -- | #limits-maxTaskWorkGroupCount# @maxTaskWorkGroupCount@[3] is the maximum
+    -- number of local workgroups that /can/ be launched for a task shader in
+    -- each dimension by a
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#drawing-mesh-shading mesh tasks drawing command>.
+    -- These three values represent the maximum number of local workgroups for
+    -- the X, Y, and Z dimensions, respectively. The workgroup count parameters
+    -- to the drawing commands /must/ be less than or equal to the
+    -- corresponding limit. The product of these dimensions /must/ be less than
+    -- or equal to @maxTaskWorkGroupTotalCount@.
+    maxTaskWorkGroupCount :: (Word32, Word32, Word32)
+  , -- | #limits-maxTaskWorkGroupInvocations# @maxTaskWorkGroupInvocations@ is
+    -- the maximum total number of task shader invocations in a single local
+    -- workgroup. The product of the X, Y, and Z sizes, as specified by the
+    -- @LocalSize@ or @LocalSizeId@ execution mode in shader modules or by the
+    -- object decorated by the @WorkgroupSize@ decoration, /must/ be less than
+    -- or equal to this limit.
+    maxTaskWorkGroupInvocations :: Word32
+  , -- | #limits-maxTaskWorkGroupSize# @maxTaskWorkGroupSize@[3] is the maximum
+    -- size of a local workgroup for a task shader in each dimension. These
+    -- three values represent the maximum local workgroup size in the X, Y, and
+    -- Z dimensions, respectively. The @x@, @y@, and @z@ sizes, as specified by
+    -- the @LocalSize@ or @LocalSizeId@ execution mode or by the object
+    -- decorated by the @WorkgroupSize@ decoration in shader modules, /must/ be
+    -- less than or equal to the corresponding limit.
+    maxTaskWorkGroupSize :: (Word32, Word32, Word32)
+  , -- | #limits-maxTaskPayloadSize# @maxTaskPayloadSize@ is the maximum total
+    -- storage size, in bytes, available for variables declared with the
+    -- @TaskPayloadWorkgroupEXT@ storage class in shader modules in the task
+    -- shader stage.
+    maxTaskPayloadSize :: Word32
+  , -- | #limits-maxTaskSharedMemorySize# @maxTaskSharedMemorySize@ is the
+    -- maximum total storage size, in bytes, available for variables declared
+    -- with the @Workgroup@ storage class in shader modules in the task shader
+    -- stage.
+    maxTaskSharedMemorySize :: Word32
+  , -- | #limits-maxTaskPayloadAndSharedMemorySize#
+    -- @maxTaskPayloadAndSharedMemorySize@ is the maximum total storage size,
+    -- in bytes, available for variables that are declared with the
+    -- @TaskPayloadWorkgroupEXT@ or @Workgroup@ storage class, in shader
+    -- modules in the task shader stage.
+    maxTaskPayloadAndSharedMemorySize :: Word32
+  , -- | #limits-maxMeshWorkGroupTotalCount# @maxMeshWorkGroupTotalCount@ is the
+    -- maximum number of local workgroups that /can/ be launched for a mesh
+    -- shader, either directly by a
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#drawing-mesh-shading mesh tasks drawing command>,
+    -- or emitted by a single task shader workgroup.
+    maxMeshWorkGroupTotalCount :: Word32
+  , -- | #limits-maxMeshWorkGroupCount# @maxMeshWorkGroupCount@[3] is the maximum
+    -- number of local workgroups that /can/ be launched for a mesh shader in
+    -- each dimension, either directly by a
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#drawing-mesh-shading mesh tasks drawing command>,
+    -- or emitted by a single task shader workgroup. These three values
+    -- represent the maximum number of local output tasks for the X, Y, and Z
+    -- dimensions, respectively. The workgroup count parameters to the
+    -- @OpEmitMeshTasksEXT@ /must/ be less than or equal to the corresponding
+    -- limit. The product of these dimensions /must/ be less than or equal to
+    -- @maxMeshWorkGroupTotalCount@.
+    maxMeshWorkGroupCount :: (Word32, Word32, Word32)
+  , -- | #limits-maxMeshWorkGroupInvocations# @maxMeshWorkGroupInvocations@ is
+    -- the maximum total number of mesh shader invocations in a single local
+    -- workgroup. The product of the X, Y, and Z sizes, as specified by the
+    -- @LocalSize@ or @LocalSizeId@ execution mode in shader modules or by the
+    -- object decorated by the @WorkgroupSize@ decoration, /must/ be less than
+    -- or equal to this limit.
+    maxMeshWorkGroupInvocations :: Word32
+  , -- | #limits-maxMeshWorkGroupSize# @maxMeshWorkGroupSize@[3] is the maximum
+    -- size of a local workgroup for a mesh shader in each dimension. These
+    -- three values represent the maximum local workgroup size in the X, Y, and
+    -- Z dimensions, respectively. The @x@, @y@, and @z@ sizes, as specified by
+    -- the @LocalSize@ or @LocalSizeId@ execution mode or by the object
+    -- decorated by the @WorkgroupSize@ decoration in shader modules, /must/ be
+    -- less than or equal to the corresponding limit.
+    maxMeshWorkGroupSize :: (Word32, Word32, Word32)
+  , -- | #limits-maxMeshSharedMemorySize# @maxMeshSharedMemorySize@ is the
+    -- maximum total storage size, in bytes, available for variables declared
+    -- with the @Workgroup@ storage class in shader modules in the mesh shader
+    -- stage.
+    maxMeshSharedMemorySize :: Word32
+  , -- | #limits-maxMeshPayloadAndSharedMemorySize#
+    -- @maxMeshPayloadAndSharedMemorySize@ is the maximum total storage size,
+    -- in bytes, available for variables that are declared with the
+    -- @TaskPayloadWorkgroupEXT@ or @Workgroup@ storage class in shader modules
+    -- in the mesh shader stage.
+    maxMeshPayloadAndSharedMemorySize :: Word32
+  , -- | #limits-maxMeshOutputMemorySize# @maxMeshOutputMemorySize@ is the
+    -- maximum total storage size, in bytes, available for output variables in
+    -- shader modules in the mesh shader stage, according to the formula in
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#mesh-output Mesh Shader Output>.
+    maxMeshOutputMemorySize :: Word32
+  , -- | #limits-maxMeshPayloadAndOutputMemorySize#
+    -- @maxMeshPayloadAndOutputMemorySize@ is the maximum total storage size,
+    -- in bytes, available for variables that are declared with the
+    -- @TaskPayloadWorkgroupEXT@ storage class, or output variables in shader
+    -- modules in the mesh shader stage, according to the formula in
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#mesh-output Mesh Shader Output>.
     maxMeshPayloadAndOutputMemorySize :: Word32
   , -- | #limits-maxMeshOutputComponents# @maxMeshOutputComponents@ is the
     -- maximum number of components of output variables which /can/ be output
diff --git a/src/Vulkan/Extensions/VK_EXT_mesh_shader.hs-boot b/src/Vulkan/Extensions/VK_EXT_mesh_shader.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_mesh_shader.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_mesh_shader.hs-boot
@@ -18,15 +18,23 @@
 --     1
 --
 -- [__Ratification Status__]
---     Not ratified
+--     Ratified
 --
 -- [__Extension and Version Dependencies__]
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_spirv_1_4 VK_KHR_spirv_1_4>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.2 Vulkan Version 1.2>
 --
 -- [__API Interactions__]
 --
+--     -   Interacts with VK_VERSION_1_2
+--
+--     -   Interacts with VK_AMD_draw_indirect_count
+--
 --     -   Interacts with VK_EXT_device_generated_commands
 --
+--     -   Interacts with VK_KHR_draw_indirect_count
+--
 --     -   Interacts with VK_KHR_fragment_shading_rate
 --
 --     -   Interacts with VK_NV_device_generated_commands
@@ -127,10 +135,18 @@
 --
 -- -   'cmdDrawMeshTasksEXT'
 --
--- -   'cmdDrawMeshTasksIndirectCountEXT'
---
 -- -   'cmdDrawMeshTasksIndirectEXT'
 --
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.2 Vulkan Version 1.2>
+-- or
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_draw_indirect_count VK_KHR_draw_indirect_count>
+-- or
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_draw_indirect_count VK_AMD_draw_indirect_count>
+-- is supported:
+--
+-- -   'cmdDrawMeshTasksIndirectCountEXT'
+--
 -- == New Structures
 --
 -- -   'DrawMeshTasksIndirectCommandEXT'
@@ -205,13 +221,13 @@
 --
 -- == New or Modified Built-In Variables
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-cullprimitive CullPrimitiveEXT>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-cullprimitive CullPrimitiveEXT>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-primitivepointindices PrimitivePointIndicesEXT>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-primitivepointindices PrimitivePointIndicesEXT>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-primitivelineindices PrimitiveLineIndicesEXT>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-primitivelineindices PrimitiveLineIndicesEXT>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-primitivetriangleindices PrimitiveTriangleIndicesEXT>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-primitivetriangleindices PrimitiveTriangleIndicesEXT>
 --
 -- -   (modified)@Position@
 --
@@ -251,7 +267,7 @@
 --
 -- == New SPIR-V Capability
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-MeshShadingEXT MeshShadingEXT>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-MeshShadingEXT MeshShadingEXT>
 --
 -- == Version History
 --
@@ -267,7 +283,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_mesh_shader Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_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_EXT_metal_objects.hs b/src/Vulkan/Extensions/VK_EXT_metal_objects.hs
--- a/src/Vulkan/Extensions/VK_EXT_metal_objects.hs
+++ b/src/Vulkan/Extensions/VK_EXT_metal_objects.hs
@@ -196,7 +196,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_metal_objects Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_metal_objects Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -365,6 +365,24 @@
 --     If @exportObjectType@ is not @0@, @exportObjectType@ /must/ be a
 --     valid 'ExportMetalObjectTypeFlagBitsEXT' value
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.BufferView.BufferViewCreateInfo'
+--
+--     -   'Vulkan.Core10.Event.EventCreateInfo'
+--
+--     -   'Vulkan.Core10.Image.ImageCreateInfo'
+--
+--     -   'Vulkan.Core10.ImageView.ImageViewCreateInfo'
+--
+--     -   'Vulkan.Core10.DeviceInitialization.InstanceCreateInfo'
+--
+--     -   'Vulkan.Core10.Memory.MemoryAllocateInfo'
+--
+--     -   'Vulkan.Core10.QueueSemaphore.SemaphoreCreateInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_metal_objects VK_EXT_metal_objects>,
@@ -494,27 +512,30 @@
 -- -   #VUID-VkExportMetalObjectsInfoEXT-pNext-06799# If the @pNext@ chain
 --     includes a 'ExportMetalTextureInfoEXT' structure, and if the
 --     'Vulkan.Core10.Handles.Image' in its @image@ member does not have a
---     multi-planar format, then its @plane@ member /must/ be
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-multiplanar multi-planar format>,
+--     then its @plane@ member /must/ be
 --     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'
 --
 -- -   #VUID-VkExportMetalObjectsInfoEXT-pNext-06800# If the @pNext@ chain
 --     includes a 'ExportMetalTextureInfoEXT' structure, and if the
 --     'Vulkan.Core10.Handles.Image' in its @image@ member has a
---     multi-planar format with only two planes, then its @plane@ member
---     /must/ not be
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-multiplanar multi-planar format>
+--     with only two planes, then its @plane@ member /must/ not be
 --     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'
 --
 -- -   #VUID-VkExportMetalObjectsInfoEXT-pNext-06801# If the @pNext@ chain
 --     includes a 'ExportMetalTextureInfoEXT' structure, and if the
 --     'Vulkan.Core10.Handles.ImageView' in its @imageView@ member does not
---     have a multi-planar format, then its @plane@ member /must/ be
+--     have a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-multiplanar multi-planar format>,
+--     then its @plane@ member /must/ be
 --     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'
 --
 -- -   #VUID-VkExportMetalObjectsInfoEXT-pNext-06802# If the @pNext@ chain
 --     includes a 'ExportMetalTextureInfoEXT' structure, and if the
 --     'Vulkan.Core10.Handles.ImageView' in its @imageView@ member has a
---     multi-planar format with only two planes, then its @plane@ member
---     /must/ not be
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-multiplanar multi-planar format>
+--     with only two planes, then its @plane@ member /must/ not be
 --     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'
 --
 -- -   #VUID-VkExportMetalObjectsInfoEXT-pNext-06803# If the @pNext@ chain
@@ -565,7 +586,7 @@
 --     'ExportMetalSharedEventInfoEXT', or 'ExportMetalTextureInfoEXT'
 --
 -- -   #VUID-VkExportMetalObjectsInfoEXT-sType-unique# The @sType@ value of
---     each struct in the @pNext@ chain /must/ be unique, with the
+--     each structure in the @pNext@ chain /must/ be unique, with the
 --     exception of structures of type 'ExportMetalBufferInfoEXT',
 --     'ExportMetalCommandQueueInfoEXT', 'ExportMetalIOSurfaceInfoEXT',
 --     'ExportMetalSharedEventInfoEXT', or 'ExportMetalTextureInfoEXT'
@@ -630,8 +651,12 @@
 -- | VkExportMetalDeviceInfoEXT - Structure that identifies a VkDevice object
 -- and corresponding Metal MTLDevice object
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'ExportMetalObjectsInfoEXT'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_metal_objects VK_EXT_metal_objects>,
@@ -685,8 +710,12 @@
 -- | VkExportMetalCommandQueueInfoEXT - Structure that identifies a VkQueue
 -- object and corresponding Metal MTLCommandQueue object
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'ExportMetalObjectsInfoEXT'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_metal_objects VK_EXT_metal_objects>,
@@ -750,8 +779,12 @@
 -- | VkExportMetalBufferInfoEXT - Structure that identifies a VkDeviceMemory
 -- object and corresponding Metal MTLBuffer object
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'ExportMetalObjectsInfoEXT'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_metal_objects VK_EXT_metal_objects>,
@@ -822,8 +855,12 @@
 -- 'Vulkan.Core10.Handles.DeviceMemory'. Failure to do so results in
 -- undefined behavior.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.Memory.MemoryAllocateInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_metal_objects VK_EXT_metal_objects>,
@@ -902,6 +939,12 @@
 --     non-ignored parameters /must/ have been created, allocated, or
 --     retrieved from the same 'Vulkan.Core10.Handles.Device'
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'ExportMetalObjectsInfoEXT'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_metal_objects VK_EXT_metal_objects>,
@@ -996,8 +1039,17 @@
 -- 'Vulkan.Core10.Handles.Image'. Failure to do so results in undefined
 -- behavior.
 --
--- == Valid Usage (Implicit)
+-- Due to @id\<MTLTexture>@ already being backed by memory, images created
+-- with 'ImportMetalTextureInfoEXT' in the @pNext@ of the
+-- 'Vulkan.Core10.Image.ImageCreateInfo' will be treated as bound to a
+-- VkDeviceMemory.
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.Image.ImageCreateInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_metal_objects VK_EXT_metal_objects>,
@@ -1060,8 +1112,12 @@
 -- | VkExportMetalIOSurfaceInfoEXT - Structure that identifies a VkImage
 -- object and corresponding Metal IOSurfaceRef object
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'ExportMetalObjectsInfoEXT'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_metal_objects VK_EXT_metal_objects>,
@@ -1137,8 +1193,12 @@
 -- 'Vulkan.Core10.Handles.Image'. Failure to do so results in undefined
 -- behavior.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.Image.ImageCreateInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_metal_objects VK_EXT_metal_objects>,
@@ -1208,6 +1268,12 @@
 --     /must/ have been created, allocated, or retrieved from the same
 --     'Vulkan.Core10.Handles.Device'
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'ExportMetalObjectsInfoEXT'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_metal_objects VK_EXT_metal_objects>,
@@ -1287,8 +1353,14 @@
 -- object will be set to
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.SemaphoreTypeCreateInfo'::@initialValue@.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Event.EventCreateInfo'
+--
+--     -   'Vulkan.Core10.QueueSemaphore.SemaphoreCreateInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_metal_objects VK_EXT_metal_objects>,
@@ -1341,6 +1413,26 @@
 -- | VkExportMetalObjectTypeFlagBitsEXT - Bitmask specifying Metal object
 -- types that can be exported from a Vulkan object
 --
+-- = Description
+--
+-- -   'EXPORT_METAL_OBJECT_TYPE_METAL_DEVICE_BIT_EXT' specifies that a
+--     Metal @MTLDevice@ may be exported.
+--
+-- -   'EXPORT_METAL_OBJECT_TYPE_METAL_COMMAND_QUEUE_BIT_EXT' specifies
+--     that a Metal @MTLCommandQueue@ may be exported.
+--
+-- -   'EXPORT_METAL_OBJECT_TYPE_METAL_BUFFER_BIT_EXT' specifies that a
+--     Metal @MTLBuffer@ may be exported.
+--
+-- -   'EXPORT_METAL_OBJECT_TYPE_METAL_TEXTURE_BIT_EXT' specifies that a
+--     Metal @MTLTexture@ may be exported.
+--
+-- -   'EXPORT_METAL_OBJECT_TYPE_METAL_IOSURFACE_BIT_EXT' specifies that a
+--     Metal @IOSurface@ may be exported.
+--
+-- -   'EXPORT_METAL_OBJECT_TYPE_METAL_SHARED_EVENT_BIT_EXT' specifies that
+--     a Metal @MTLSharedEvent@ may be exported.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_metal_objects VK_EXT_metal_objects>,
@@ -1348,28 +1440,22 @@
 newtype ExportMetalObjectTypeFlagBitsEXT = ExportMetalObjectTypeFlagBitsEXT Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'EXPORT_METAL_OBJECT_TYPE_METAL_DEVICE_BIT_EXT' specifies that a Metal
--- @MTLDevice@ may be exported.
+-- No documentation found for Nested "VkExportMetalObjectTypeFlagBitsEXT" "VK_EXPORT_METAL_OBJECT_TYPE_METAL_DEVICE_BIT_EXT"
 pattern EXPORT_METAL_OBJECT_TYPE_METAL_DEVICE_BIT_EXT = ExportMetalObjectTypeFlagBitsEXT 0x00000001
 
--- | 'EXPORT_METAL_OBJECT_TYPE_METAL_COMMAND_QUEUE_BIT_EXT' specifies that a
--- Metal @MTLCommandQueue@ may be exported.
+-- No documentation found for Nested "VkExportMetalObjectTypeFlagBitsEXT" "VK_EXPORT_METAL_OBJECT_TYPE_METAL_COMMAND_QUEUE_BIT_EXT"
 pattern EXPORT_METAL_OBJECT_TYPE_METAL_COMMAND_QUEUE_BIT_EXT = ExportMetalObjectTypeFlagBitsEXT 0x00000002
 
--- | 'EXPORT_METAL_OBJECT_TYPE_METAL_BUFFER_BIT_EXT' specifies that a Metal
--- @MTLBuffer@ may be exported.
+-- No documentation found for Nested "VkExportMetalObjectTypeFlagBitsEXT" "VK_EXPORT_METAL_OBJECT_TYPE_METAL_BUFFER_BIT_EXT"
 pattern EXPORT_METAL_OBJECT_TYPE_METAL_BUFFER_BIT_EXT = ExportMetalObjectTypeFlagBitsEXT 0x00000004
 
--- | 'EXPORT_METAL_OBJECT_TYPE_METAL_TEXTURE_BIT_EXT' specifies that a Metal
--- @MTLTexture@ may be exported.
+-- No documentation found for Nested "VkExportMetalObjectTypeFlagBitsEXT" "VK_EXPORT_METAL_OBJECT_TYPE_METAL_TEXTURE_BIT_EXT"
 pattern EXPORT_METAL_OBJECT_TYPE_METAL_TEXTURE_BIT_EXT = ExportMetalObjectTypeFlagBitsEXT 0x00000008
 
--- | 'EXPORT_METAL_OBJECT_TYPE_METAL_IOSURFACE_BIT_EXT' specifies that a
--- Metal @IOSurface@ may be exported.
+-- No documentation found for Nested "VkExportMetalObjectTypeFlagBitsEXT" "VK_EXPORT_METAL_OBJECT_TYPE_METAL_IOSURFACE_BIT_EXT"
 pattern EXPORT_METAL_OBJECT_TYPE_METAL_IOSURFACE_BIT_EXT = ExportMetalObjectTypeFlagBitsEXT 0x00000010
 
--- | 'EXPORT_METAL_OBJECT_TYPE_METAL_SHARED_EVENT_BIT_EXT' specifies that a
--- Metal @MTLSharedEvent@ may be exported.
+-- No documentation found for Nested "VkExportMetalObjectTypeFlagBitsEXT" "VK_EXPORT_METAL_OBJECT_TYPE_METAL_SHARED_EVENT_BIT_EXT"
 pattern EXPORT_METAL_OBJECT_TYPE_METAL_SHARED_EVENT_BIT_EXT = ExportMetalObjectTypeFlagBitsEXT 0x00000020
 
 conNameExportMetalObjectTypeFlagBitsEXT :: String
diff --git a/src/Vulkan/Extensions/VK_EXT_metal_objects.hs-boot b/src/Vulkan/Extensions/VK_EXT_metal_objects.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_metal_objects.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_metal_objects.hs-boot
@@ -196,7 +196,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_metal_objects Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_metal_objects Vulkan Specification>.
 --
 -- This 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
@@ -18,7 +18,7 @@
 --     1
 --
 -- [__Ratification Status__]
---     Not ratified
+--     Ratified
 --
 -- [__Extension and Version Dependencies__]
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_surface VK_KHR_surface>
@@ -86,7 +86,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_metal_surface Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -194,12 +194,16 @@
 --
 -- [<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_NATIVE_WINDOW_IN_USE_KHR'
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_NATIVE_WINDOW_IN_USE_KHR'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_metal_surface VK_EXT_metal_surface>,
@@ -215,7 +219,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>).
+                         -- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -18,7 +18,7 @@
 --     1
 --
 -- [__Ratification Status__]
---     Not ratified
+--     Ratified
 --
 -- [__Extension and Version Dependencies__]
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_surface VK_KHR_surface>
@@ -86,7 +86,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_metal_surface Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -124,7932 +124,9368 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/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.
-module Vulkan.Extensions.VK_EXT_multi_draw  ( cmdDrawMultiEXT
-                                            , cmdDrawMultiIndexedEXT
-                                            , MultiDrawInfoEXT(..)
-                                            , MultiDrawIndexedInfoEXT(..)
-                                            , PhysicalDeviceMultiDrawPropertiesEXT(..)
-                                            , PhysicalDeviceMultiDrawFeaturesEXT(..)
-                                            , EXT_MULTI_DRAW_SPEC_VERSION
-                                            , pattern EXT_MULTI_DRAW_SPEC_VERSION
-                                            , EXT_MULTI_DRAW_EXTENSION_NAME
-                                            , pattern EXT_MULTI_DRAW_EXTENSION_NAME
-                                            ) where
-
-import Vulkan.Internal.Utils (traceAroundEvent)
-import Control.Monad (unless)
-import Control.Monad.IO.Class (liftIO)
-import Foreign.Marshal.Alloc (allocaBytes)
-import Foreign.Marshal.Utils (with)
-import GHC.IO (throwIO)
-import GHC.Ptr (nullFunPtr)
-import Foreign.Ptr (nullPtr)
-import Foreign.Ptr (plusPtr)
-import Control.Monad.Trans.Class (lift)
-import Control.Monad.Trans.Cont (evalContT)
-import qualified Data.Vector (imapM_)
-import qualified Data.Vector (length)
-import Vulkan.CStruct (FromCStruct)
-import Vulkan.CStruct (FromCStruct(..))
-import Vulkan.CStruct (ToCStruct)
-import Vulkan.CStruct (ToCStruct(..))
-import Vulkan.Zero (Zero(..))
-import Control.Monad.IO.Class (MonadIO)
-import Data.String (IsString)
-import Data.Typeable (Typeable)
-import Foreign.Storable (Storable)
-import Foreign.Storable (Storable(peek))
-import Foreign.Storable (Storable(poke))
-import qualified Foreign.Storable (Storable(..))
-import GHC.Generics (Generic)
-import GHC.IO.Exception (IOErrorType(..))
-import GHC.IO.Exception (IOException(..))
-import Data.Int (Int32)
-import Foreign.Ptr (FunPtr)
-import Foreign.Ptr (Ptr)
-import Data.Word (Word32)
-import Data.Kind (Type)
-import Control.Monad.Trans.Cont (ContT(..))
-import Data.Vector (Vector)
-import Vulkan.Core10.FundamentalTypes (bool32ToBool)
-import Vulkan.Core10.FundamentalTypes (boolToBool32)
-import Vulkan.NamedType ((:::))
-import Vulkan.Core10.FundamentalTypes (Bool32)
-import Vulkan.Core10.Handles (CommandBuffer)
-import Vulkan.Core10.Handles (CommandBuffer(..))
-import Vulkan.Core10.Handles (CommandBuffer(CommandBuffer))
-import Vulkan.Core10.Handles (CommandBuffer_T)
-import Vulkan.Dynamic (DeviceCmds(pVkCmdDrawMultiEXT))
-import Vulkan.Dynamic (DeviceCmds(pVkCmdDrawMultiIndexedEXT))
-import Vulkan.Core10.Enums.StructureType (StructureType)
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT))
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdDrawMultiEXT
-  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Ptr MultiDrawInfoEXT -> Word32 -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Ptr MultiDrawInfoEXT -> Word32 -> Word32 -> Word32 -> IO ()
-
--- | vkCmdDrawMultiEXT - Draw primitives
---
--- = Description
---
--- The number of draws recorded is @drawCount@, with each draw reading,
--- sequentially, a @firstVertex@ and a @vertexCount@ from @pVertexInfo@.
--- For each recorded draw, primitives are assembled as for
--- 'Vulkan.Core10.CommandBufferBuilding.cmdDraw', and drawn @instanceCount@
--- times with @instanceIndex@ starting with @firstInstance@ and
--- sequentially for each instance.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdDrawMultiEXT-magFilter-04553# If a
---     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
---     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR',
---     @reductionMode@ equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
---     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-vkCmdDrawMultiEXT-magFilter-09598# If a
---     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
---     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR' and
---     @reductionMode@ equal to either
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
---     or
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
---     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_MINMAX_BIT'
---
--- -   #VUID-vkCmdDrawMultiEXT-mipmapMode-04770# If a
---     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
---     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR',
---     @reductionMode@ equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
---     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-vkCmdDrawMultiEXT-mipmapMode-09599# If a
---     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
---     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'
---     and @reductionMode@ equal to either
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
---     or
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
---     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_MINMAX_BIT'
---
--- -   #VUID-vkCmdDrawMultiEXT-unnormalizedCoordinates-09635# If a
---     'Vulkan.Core10.Handles.Sampler' created with
---     @unnormalizedCoordinates@ equal to
---     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
---     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
---     the image view’s @levelCount@ and @layerCount@ /must/ be 1
---
--- -   #VUID-vkCmdDrawMultiEXT-unnormalizedCoordinates-09636# If a
---     'Vulkan.Core10.Handles.Sampler' created with
---     @unnormalizedCoordinates@ equal to
---     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
---     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
---     the image view’s @viewType@ /must/ be
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D' or
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D'
---
--- -   #VUID-vkCmdDrawMultiEXT-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-vkCmdDrawMultiEXT-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-vkCmdDrawMultiEXT-None-07888# If a
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'
---     descriptor is accessed using atomic operations as a result of this
---     command, then the storage texel buffer’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-buffer-view-format-features format features>
---     /must/ contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT'
---
--- -   #VUID-vkCmdDrawMultiEXT-None-02692# If a
---     'Vulkan.Core10.Handles.ImageView' is sampled with
---     'Vulkan.Core10.Enums.Filter.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.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'
---
--- -   #VUID-vkCmdDrawMultiEXT-None-02693# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_filter_cubic VK_EXT_filter_cubic>
---     extension is not enabled and any 'Vulkan.Core10.Handles.ImageView'
---     is sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as a
---     result of this command, it /must/ not have a
---     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' of
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE', or
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY'
---
--- -   #VUID-vkCmdDrawMultiEXT-filterCubic-02694# Any
---     'Vulkan.Core10.Handles.ImageView' being sampled with
---     'Vulkan.Core10.Enums.Filter.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-vkCmdDrawMultiEXT-filterCubicMinmax-02695# Any
---     'Vulkan.Core10.Handles.ImageView' being sampled with
---     'Vulkan.Core10.Enums.Filter.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-vkCmdDrawMultiEXT-cubicRangeClamp-09212# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-cubicRangeClamp cubicRangeClamp>
---     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
---     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
---     a result of this command /must/ not have a
---     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
---     equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
---
--- -   #VUID-vkCmdDrawMultiEXT-reductionMode-09213# Any
---     'Vulkan.Core10.Handles.ImageView' being sampled with a
---     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
---     equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
---     as a result of this command /must/ sample with
---     'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT'
---
--- -   #VUID-vkCmdDrawMultiEXT-selectableCubicWeights-09214# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-selectableCubicWeights selectableCubicWeights>
---     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
---     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
---     a result of this command /must/ have
---     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.SamplerCubicWeightsCreateInfoQCOM'::@cubicWeights@
---     equal to
---     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM'
---
--- -   #VUID-vkCmdDrawMultiEXT-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-vkCmdDrawMultiEXT-OpTypeImage-07027# For any
---     'Vulkan.Core10.Handles.ImageView' being written as a storage image
---     where the image format field of the @OpTypeImage@ is @Unknown@, the
---     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_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdDrawMultiEXT-OpTypeImage-07028# For any
---     'Vulkan.Core10.Handles.ImageView' being read as a storage image
---     where the image format field of the @OpTypeImage@ is @Unknown@, the
---     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_STORAGE_READ_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdDrawMultiEXT-OpTypeImage-07029# For any
---     'Vulkan.Core10.Handles.BufferView' being written as a storage texel
---     buffer where the image format field of the @OpTypeImage@ is
---     @Unknown@, the view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
---     /must/ contain
---     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdDrawMultiEXT-OpTypeImage-07030# Any
---     'Vulkan.Core10.Handles.BufferView' being read as a storage texel
---     buffer where the image format field of the @OpTypeImage@ is
---     @Unknown@ then the view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
---     /must/ contain
---     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdDrawMultiEXT-None-08600# For each set /n/ that is
---     statically used by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     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' or the
---     'Vulkan.Core10.Handles.DescriptorSetLayout' array used to create the
---     current 'Vulkan.Extensions.Handles.ShaderEXT' , as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
---
--- -   #VUID-vkCmdDrawMultiEXT-None-08601# For each push constant that is
---     statically used by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     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' or the
---     'Vulkan.Core10.Handles.DescriptorSetLayout' array used to create the
---     current 'Vulkan.Extensions.Handles.ShaderEXT' , as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
---
--- -   #VUID-vkCmdDrawMultiEXT-None-10068# For each array of resources that
---     is used by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     the indices used to access members of the array /must/ be less than
---     the descriptor count for the identified binding in the descriptor
---     sets used by this command
---
--- -   #VUID-vkCmdDrawMultiEXT-maintenance4-08602# 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
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     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' or the
---     'Vulkan.Core10.Handles.DescriptorSetLayout' and
---     'Vulkan.Core10.PipelineLayout.PushConstantRange' arrays used to
---     create the current 'Vulkan.Extensions.Handles.ShaderEXT' , as
---     described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
---
--- -   #VUID-vkCmdDrawMultiEXT-None-08114# Descriptors in each bound
---     descriptor set, specified via
---     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
---     be valid as described by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
---     if they are statically used by the 'Vulkan.Core10.Handles.Pipeline'
---     bound to the pipeline bind point used by this command and the bound
---     'Vulkan.Core10.Handles.Pipeline' was not created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdDrawMultiEXT-None-08115# If the descriptors used by the
---     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
---     were specified via
---     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', the
---     bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
---     without
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdDrawMultiEXT-None-08116# Descriptors in bound descriptor
---     buffers, specified via
---     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
---     /must/ be valid if they are dynamically used by the
---     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
---     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
---     was created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdDrawMultiEXT-None-08604# Descriptors in bound descriptor
---     buffers, specified via
---     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
---     /must/ be valid if they are dynamically used by any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     to the pipeline bind point used by this command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-08117# If the descriptors used by the
---     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
---     were specified via
---     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
---     the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
---     with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdDrawMultiEXT-None-08119# If a descriptor is dynamically
---     used with a 'Vulkan.Core10.Handles.Pipeline' created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
---     the descriptor memory /must/ be resident
---
--- -   #VUID-vkCmdDrawMultiEXT-None-08605# If a descriptor is dynamically
---     used with a 'Vulkan.Extensions.Handles.ShaderEXT' created with a
---     'Vulkan.Core10.Handles.DescriptorSetLayout' that was created with
---     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
---     the descriptor memory /must/ be resident
---
--- -   #VUID-vkCmdDrawMultiEXT-None-08606# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject>
---     feature is not enabled, a valid pipeline /must/ be bound to the
---     pipeline bind point used by this command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-08608# If a pipeline is bound to the
---     pipeline bind point used by this command, there /must/ not have been
---     any calls to dynamic state setting commands for any state specified
---     statically in the 'Vulkan.Core10.Handles.Pipeline' object bound to
---     the pipeline bind point used by this command, since that pipeline
---     was bound
---
--- -   #VUID-vkCmdDrawMultiEXT-None-08609# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command or any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDrawMultiEXT-None-08610# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command or any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDrawMultiEXT-None-08611# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command or any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDrawMultiEXT-None-08607# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject>
---     feature is enabled, either a valid pipeline /must/ be bound to the
---     pipeline bind point used by this command, or a valid combination of
---     valid and 'Vulkan.Core10.APIConstants.NULL_HANDLE' shader objects
---     /must/ be bound to every supported shader stage corresponding to the
---     pipeline bind point used by this command
---
--- -   #VUID-vkCmdDrawMultiEXT-uniformBuffers-06935# If any stage of the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command accesses a uniform buffer, and that stage
---     was created without enabling either
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT'
---     or
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT'
---     for @uniformBuffers@, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, that stage /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-vkCmdDrawMultiEXT-None-08612# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, and any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDrawMultiEXT-storageBuffers-06936# If any stage of the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command accesses a storage buffer, and that stage
---     was created without enabling either
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT'
---     or
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT'
---     for @storageBuffers@, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, that stage /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-vkCmdDrawMultiEXT-None-08613# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, and any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDrawMultiEXT-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
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shaders>
---     /must/ not be a protected resource
---
--- -   #VUID-vkCmdDrawMultiEXT-None-06550# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
---     accesses a 'Vulkan.Core10.Handles.Sampler' or
---     'Vulkan.Core10.Handles.ImageView' object that enables
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,
---     that object /must/ only be used with @OpImageSample*@ or
---     @OpImageSparseSample*@ instructions
---
--- -   #VUID-vkCmdDrawMultiEXT-ConstOffset-06551# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
---     accesses a 'Vulkan.Core10.Handles.Sampler' or
---     'Vulkan.Core10.Handles.ImageView' object that enables
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,
---     that object /must/ not use the @ConstOffset@ and @Offset@ operands
---
--- -   #VUID-vkCmdDrawMultiEXT-viewType-07752# If a
---     'Vulkan.Core10.Handles.ImageView' is accessed as a result of this
---     command, then the image view’s @viewType@ /must/ match the @Dim@
---     operand of the @OpTypeImage@ as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-image-dimensions ???>
---
--- -   #VUID-vkCmdDrawMultiEXT-format-07753# If a
---     'Vulkan.Core10.Handles.ImageView' is accessed as a result of this
---     command, then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-numericformat numeric type>
---     of the image view’s @format@ and the @Sampled@ @Type@ operand of the
---     @OpTypeImage@ /must/ match
---
--- -   #VUID-vkCmdDrawMultiEXT-OpImageWrite-08795# If a
---     'Vulkan.Core10.Handles.ImageView' created with a format other than
---     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM_KHR' 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-vkCmdDrawMultiEXT-OpImageWrite-08796# If a
---     'Vulkan.Core10.Handles.ImageView' created with the format
---     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM_KHR' is accessed using
---     @OpImageWrite@ as a result of this command, then the @Type@ of the
---     @Texel@ operand of that instruction /must/ have four components
---
--- -   #VUID-vkCmdDrawMultiEXT-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-vkCmdDrawMultiEXT-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-vkCmdDrawMultiEXT-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-vkCmdDrawMultiEXT-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-vkCmdDrawMultiEXT-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-vkCmdDrawMultiEXT-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-vkCmdDrawMultiEXT-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-vkCmdDrawMultiEXT-OpImageWeightedSampleQCOM-06971# If
---     @OpImageWeightedSampleQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawMultiEXT-OpImageWeightedSampleQCOM-06972# If
---     @OpImageWeightedSampleQCOM@ uses a 'Vulkan.Core10.Handles.ImageView'
---     as a sample weight image 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawMultiEXT-OpImageBoxFilterQCOM-06973# If
---     @OpImageBoxFilterQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawMultiEXT-OpImageBlockMatchSSDQCOM-06974# If
---     @OpImageBlockMatchSSDQCOM@ is used to read from an
---     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawMultiEXT-OpImageBlockMatchSADQCOM-06975# If
---     @OpImageBlockMatchSADQCOM@ is used to read from an
---     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawMultiEXT-OpImageBlockMatchSADQCOM-06976# If
---     @OpImageBlockMatchSADQCOM@ or OpImageBlockMatchSSDQCOM is used to
---     read from a reference image as result of this command, then the
---     specified reference coordinates /must/ not fail
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
---
--- -   #VUID-vkCmdDrawMultiEXT-OpImageWeightedSampleQCOM-06977# If
---     @OpImageWeightedSampleQCOM@, @OpImageBoxFilterQCOM@,
---     @OpImageBlockMatchWindowSSDQCOM@, @OpImageBlockMatchWindowSADQCOM@,
---     @OpImageBlockMatchGatherSSDQCOM@, @OpImageBlockMatchGatherSADQCOM@,
---     @OpImageBlockMatchSSDQCOM@, or @OpImageBlockMatchSADQCOM@ uses a
---     'Vulkan.Core10.Handles.Sampler' as a result of this command, then
---     the sampler /must/ have been created with
---     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawMultiEXT-OpImageWeightedSampleQCOM-06978# If any
---     command other than @OpImageWeightedSampleQCOM@,
---     @OpImageBoxFilterQCOM@, @OpImageBlockMatchWindowSSDQCOM@,
---     @OpImageBlockMatchWindowSADQCOM@, @OpImageBlockMatchGatherSSDQCOM@,
---     @OpImageBlockMatchGatherSADQCOM@, @OpImageBlockMatchSSDQCOM@, or
---     @OpImageBlockMatchSADQCOM@ uses a 'Vulkan.Core10.Handles.Sampler' as
---     a result of this command, then the sampler /must/ not have been
---     created with
---     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawMultiEXT-OpImageBlockMatchWindow-09215# If a
---     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
---     instruction is used to read from an
---     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawMultiEXT-OpImageBlockMatchWindow-09216# If a
---     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
---     instruction is used to read from an
---     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
---     the image view’s format /must/ be a single-component format
---
--- -   #VUID-vkCmdDrawMultiEXT-OpImageBlockMatchWindow-09217# If a
---     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
---     read from a reference image as result of this command, then the
---     specified reference coordinates /must/ not fail
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
---
--- -   #VUID-vkCmdDrawMultiEXT-None-07288# Any shader invocation executed
---     by this command /must/
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-termination terminate>
---
--- -   #VUID-vkCmdDrawMultiEXT-None-09600# If a descriptor with type equal
---     to any of
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM',
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM',
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',
---     or
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'
---     is accessed as a result of this command, the image subresource
---     identified by that descriptor /must/ be in the image layout
---     identified when the descriptor was written
---
--- -   #VUID-vkCmdDrawMultiEXT-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-vkCmdDrawMultiEXT-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-vkCmdDrawMultiEXT-None-07748# If any shader statically
---     accesses an input attachment, a valid descriptor /must/ be bound to
---     the pipeline via a descriptor set
---
--- -   #VUID-vkCmdDrawMultiEXT-OpTypeImage-07468# If any shader executed by
---     this pipeline accesses an @OpTypeImage@ variable with a @Dim@
---     operand of @SubpassData@, it /must/ be decorated with an
---     @InputAttachmentIndex@ that corresponds to a valid input attachment
---     in the current subpass
---
--- -   #VUID-vkCmdDrawMultiEXT-None-07469# Input attachment views accessed
---     in a subpass /must/ be created with the same
---     'Vulkan.Core10.Enums.Format.Format' as the corresponding subpass
---     definition, and be created with a 'Vulkan.Core10.Handles.ImageView'
---     that is compatible with the attachment referenced by the subpass\'
---     @pInputAttachments@[@InputAttachmentIndex@] in the bound
---     'Vulkan.Core10.Handles.Framebuffer' as specified by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#compatibility-inputattachment Fragment Input Attachment Compatibility>
---
--- -   #VUID-vkCmdDrawMultiEXT-pDepthInputAttachmentIndex-09595# Input
---     attachment views accessed in a dynamic render pass with a
---     @InputAttachmentIndex@ referenced by
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR',
---     or no @InputAttachmentIndex@ if
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR':@pDepthInputAttachmentIndex@
---     or
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR':@pStencilInputAttachmentIndex@
---     are @NULL@, /must/ be created with a
---     'Vulkan.Core10.Handles.ImageView' that is compatible with the
---     corresponding color, depth, or stencil attachment in
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'
---
--- -   #VUID-vkCmdDrawMultiEXT-pDepthInputAttachmentIndex-09596# Input
---     attachment views accessed in a dynamic render pass via a shader
---     object /must/ have an @InputAttachmentIndex@ if both
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR':@pDepthInputAttachmentIndex@
---     and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR':@pStencilInputAttachmentIndex@
---     are non-@NULL@
---
--- -   #VUID-vkCmdDrawMultiEXT-InputAttachmentIndex-09597# If an input
---     attachment view accessed in a dynamic render pass via a shader
---     object has an @InputAttachmentIndex@, the @InputAttachmentIndex@
---     /must/ match an index in
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR'
---
--- -   #VUID-vkCmdDrawMultiEXT-None-06537# Memory backing image
---     subresources used as attachments in the current render pass /must/
---     not be written in any way other than as an attachment by this
---     command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-09000# If a color attachment is written
---     by any prior command in this subpass or by the load, store, or
---     resolve operations for this subpass, it is not in the
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
---     image layout, and either:
---
---     -   the
---         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT'
---         is set on the bound pipeline or
---
---     -   the last call to
---         'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
---         included
---         'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'
---         and
---
---         -   there is no bound graphics pipeline or
---
---         -   the bound graphics pipeline was created with
---             'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
---
---     it /must/ not be accessed in any way other than as an attachment by
---     this command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-09001# If a depth attachment is written
---     by any prior command in this subpass or by the load, store, or
---     resolve operations for this subpass, it is not in the
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
---     image layout, and either:
---
---     -   the
---         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT'
---         is set on the bound pipeline or
---
---     -   the last call to
---         'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
---         included
---         'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT'
---         and
---
---         -   there is no bound graphics pipeline or
---
---         -   the bound graphics pipeline was created with
---             'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
---
---     it /must/ not be accessed in any way other than as an attachment by
---     this command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-09002# If a stencil attachment is
---     written by any prior command in this subpass or by the load, store,
---     or resolve operations for this subpass, it is not in the
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
---     image layout, and either:
---
---     -   the
---         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT'
---         is set on the bound pipeline or
---
---     -   the last call to
---         'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
---         included
---         'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
---         and
---
---         -   there is no bound graphics pipeline or
---
---         -   the bound graphics pipeline was created with
---             'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
---
---     it /must/ not be accessed in any way other than as an attachment by
---     this command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-09003# If an attachment is written by
---     any prior command in this subpass or by the load, store, or resolve
---     operations for this subpass, it /must/ not be accessed in any way
---     other than as an attachment, storage image, or sampled image by this
---     command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-06539# If any previously recorded
---     command in the current subpass accessed an image subresource used as
---     an attachment in this subpass in any way other than as an
---     attachment, this command /must/ not write to that image subresource
---     as an attachment
---
--- -   #VUID-vkCmdDrawMultiEXT-None-06886# If the current render pass
---     instance uses a depth\/stencil attachment with a read-only layout
---     for the depth aspect,
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-depth-write depth writes>
---     /must/ be disabled
---
--- -   #VUID-vkCmdDrawMultiEXT-None-06887# If the current render pass
---     instance uses a depth\/stencil attachment with a read-only layout
---     for the stencil aspect, both front and back @writeMask@ are not
---     zero, and stencil test is enabled,
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-stencil all stencil ops>
---     /must/ be 'Vulkan.Core10.Enums.StencilOp.STENCIL_OP_KEEP'
---
--- -   #VUID-vkCmdDrawMultiEXT-None-07831# If the bound graphics pipeline
---     state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT' dynamic
---     state enabled then
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetViewport' /must/ have
---     been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-07832# If the bound graphics pipeline
---     state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR' dynamic
---     state enabled then
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetScissor' /must/ have been
---     called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-07833# If the bound graphics pipeline
---     state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_WIDTH' dynamic
---     state enabled then
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth' /must/ have
---     been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-08617# If a shader object is bound to
---     any graphics stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
---     in the current command buffer set @polygonMode@ to
---     'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_LINE',
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth' /must/ have
---     been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-08618# If a shader object is bound to
---     any graphics stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
---     in the current command buffer set @primitiveTopology@ to any line
---     topology, 'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-08619# If a shader object that outputs
---     line primitives is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE',
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth' /must/ have
---     been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-07834# If a shader object is bound to
---     any graphics stage or a graphics pipeline is bound which was created
---     with the 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @depthBiasEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBounds' or
---     'Vulkan.Extensions.VK_EXT_depth_bias_control.cmdSetDepthBias2EXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-07835# If the bound graphics pipeline
---     state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_BLEND_CONSTANTS'
---     dynamic state enabled then
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetBlendConstants' /must/
---     have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-08621# If a shader object is bound to
---     the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     in the current command buffer set any element of
---     @pColorBlendEnables@ to 'Vulkan.Core10.FundamentalTypes.TRUE', and
---     the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     in the current command buffer set the same element of
---     @pColorBlendEquations@ to a
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.ColorBlendEquationEXT'
---     structure with any 'Vulkan.Core10.Enums.BlendFactor.BlendFactor'
---     member with a value of
---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_COLOR',
---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR',
---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_ALPHA', or
---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA',
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetBlendConstants' /must/
---     have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-07836# If a shader object is bound to
---     any graphics stage or a graphics pipeline is bound which was created
---     with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @depthBoundsTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBounds' /must/
---     have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-07837# If a shader object is bound to
---     any graphics stage or a graphics pipeline is bound which was created
---     with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_COMPARE_MASK'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilCompareMask'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-07838# If a shader object is bound to
---     any graphics stage or a graphics pipeline is bound which was created
---     with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_WRITE_MASK'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilWriteMask'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-07839# If a shader object is bound to
---     any graphics stage or a graphics pipeline is bound which was created
---     with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_REFERENCE'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of and @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilReference'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-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-vkCmdDrawMultiEXT-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-vkCmdDrawMultiEXT-None-07634# If the @VK_EXT_sample_locations@
---     extension is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-06666# If the @VK_EXT_sample_locations@
---     extension is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then
---     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-07840# If a shader object is bound to
---     any graphics stage or a graphics pipeline is bound which was created
---     with the 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CULL_MODE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetCullMode'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-07841# If a shader object is bound to
---     any graphics stage or a graphics pipeline is bound which was created
---     with the 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRONT_FACE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetFrontFace'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-07843# If a shader object is bound to
---     any graphics stage or a graphics pipeline is bound which was created
---     with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_TEST_ENABLE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE',
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthTestEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-07844# If a shader object is bound to
---     any graphics stage or a graphics pipeline is bound which was created
---     with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthWriteEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-07845# If a shader object is bound to
---     any graphics stage or a graphics pipeline is bound which was created
---     with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_COMPARE_OP'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @depthTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthCompareOp'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-07846# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthBounds depthBounds>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthBoundsTestEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-07847# If a shader object is bound to
---     any graphics stage or a graphics pipeline is bound which was created
---     with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_TEST_ENABLE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilTestEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-07848# If a shader object is bound to
---     any graphics stage or a graphics pipeline is bound which was created
---     with the 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_OP'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilOp'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-viewportCount-03417# If a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
---     dynamic state enabled, and the state is not inherited, then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-scissorCount-03418# If a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
---     dynamic state enabled, and the state is not inherited, then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing
---
--- -   #VUID-vkCmdDrawMultiEXT-viewportCount-03419# If a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     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, and the state is not inherited, then 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-vkCmdDrawMultiEXT-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-vkCmdDrawMultiEXT-viewportCount-04138# If the
---     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which 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 state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @viewportWScalingEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.cmdSetViewportWScalingNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-08636# If the
---     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which 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 state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @viewportWScalingEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', 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-vkCmdDrawMultiEXT-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-vkCmdDrawMultiEXT-shadingRateImage-09233# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV'
---     and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetCoarseSampleOrderNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-shadingRateImage-09234# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which 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 state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @shadingRateImageEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetViewportShadingRatePaletteNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-08637# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which 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 state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @shadingRateImageEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', 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-vkCmdDrawMultiEXT-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
---     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo', 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-vkCmdDrawMultiEXT-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
---     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo', 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-vkCmdDrawMultiEXT-None-07878# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-exclusiveScissor exclusiveScissor>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-07879# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-exclusiveScissor exclusiveScissor>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV'
---     dynamic state enabled, and the most recent call to
---     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorEnableNV'
---     in the current command buffer set any element of
---     @pExclusiveScissorEnables@ to 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then
---     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-04876# If a shader object is bound to
---     any graphics stage or a graphics pipeline is bound which 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 and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-04877# If a shader object is bound to
---     any graphics stage or a graphics pipeline is bound which was created
---     with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-logicOp-04878# If a shader object is bound
---     to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_EXT'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @logicOpEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetLogicOpEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-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-vkCmdDrawMultiEXT-primitiveFragmentShadingRateWithMultipleViewports-08642#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
---     limit is not supported, and any shader object bound to a graphics
---     stage writes 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-vkCmdDrawMultiEXT-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-vkCmdDrawMultiEXT-None-08643# If a shader object is bound to
---     the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then for each color
---     attachment in the render pass, 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 corresponding member of @pColorBlendEnables@ in the most
---     recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     in the current command buffer that affected that attachment index
---     /must/ have been 'Vulkan.Core10.FundamentalTypes.FALSE'
---
--- -   #VUID-vkCmdDrawMultiEXT-multisampledRenderToSingleSampled-07284# If
---     rasterization is not disabled in the bound graphics pipeline, and
---     none of the following is enabled:
---
---     -   the @VK_AMD_mixed_attachment_samples@ extension
---
---     -   the @VK_NV_framebuffer_mixed_samples@ extension
---
---     -   the
---         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---         feature
---
---     then @rasterizationSamples@ for the bound graphics pipeline /must/
---     be the same as the current subpass color and\/or depth\/stencil
---     attachments
---
--- -   #VUID-vkCmdDrawMultiEXT-None-08644# If a shader object is bound to
---     any graphics stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and none of the following is
---     enabled:
---
---     -   the @VK_AMD_mixed_attachment_samples@ extension
---
---     -   the @VK_NV_framebuffer_mixed_samples@ extension
---
---     -   the
---         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---         feature
---
---     then the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     in the current command buffer /must/ have set @rasterizationSamples@
---     to be the same as the number of samples for the current render pass
---     color and\/or depth\/stencil attachments
---
--- -   #VUID-vkCmdDrawMultiEXT-None-08876# If a shader object is bound to
---     any graphics stage, the current render pass instance /must/ have
---     been begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---
--- -   #VUID-vkCmdDrawMultiEXT-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-vkCmdDrawMultiEXT-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-vkCmdDrawMultiEXT-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-vkCmdDrawMultiEXT-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-vkCmdDrawMultiEXT-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-vkCmdDrawMultiEXT-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-vkCmdDrawMultiEXT-viewMask-06178# If the current render pass
---     instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the 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-vkCmdDrawMultiEXT-colorAttachmentCount-06179# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled and the current render pass instance was
---     begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the 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-vkCmdDrawMultiEXT-dynamicRenderingUnusedAttachments-08910# If
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and 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 an @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 bound graphics pipeline
---
--- -   #VUID-vkCmdDrawMultiEXT-dynamicRenderingUnusedAttachments-08912# If
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and 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 an @imageView@ equal to
---     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have the
---     corresponding element of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
---     used to create the bound pipeline equal to
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawMultiEXT-dynamicRenderingUnusedAttachments-08911# If
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is enabled, and 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 an @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 bound graphics pipeline, or the corresponding
---     element of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@,
---     if it exists, /must/ be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawMultiEXT-colorAttachmentCount-09362# If 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@
---     equal to @1@, there is no shader object bound to any graphics stage,
---     and a color attachment with a resolve mode of
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID',
---     each element of the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
---     array with a @resolveImageView@ not equal to
---     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
---     with an image created with a
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value equal to the
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value used to create the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawMultiEXT-None-09363# If there is no shader object
---     bound to any graphics stage, the current render pass instance was
---     begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     and a
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
---     equal to @1@, and a color attachment with a resolve mode of
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID',
---     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 an image created with a
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value equal to the
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value used to create the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawMultiEXT-None-09364# If the current render pass
---     instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is no shader object bound to any graphics stage, and the bound
---     graphics pipeline was created with a non-zero
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value and with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have set the blend enable to
---     'Vulkan.Core10.FundamentalTypes.FALSE' prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-09365# If the current render pass
---     instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is no shader object bound to any graphics stage, and the bound
---     graphics pipeline was created with a non-zero
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value and with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ have set @rasterizationSamples@ to
---     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' prior
---     to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-09366# If there is a shader object
---     bound to any graphics stage, and the current render pass includes a
---     color attachment that uses the
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID'
---     resolve mode, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have set blend enable to
---     'Vulkan.Core10.FundamentalTypes.FALSE' prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-rasterizationSamples-09367# If there is a
---     shader object bound to any graphics stage, and the current render
---     pass includes a color attachment that uses the
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID'
---     resolve mode, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ have set @rasterizationSamples@ to
---     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' prior
---     to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-09368# If the current render pass
---     instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is no shader object bound to any graphics stage, and the bound
---     graphics pipeline was created with a non-zero
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value and with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
---     /must/ have set @pFragmentSize->width@ to @1@ prior to this drawing
---     command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-09369# If the current render pass
---     instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is no shader object bound to any graphics stage, and the bound
---     graphics pipeline was created with a non-zero
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value and with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
---     /must/ have set @pFragmentSize->height@ to @1@ prior to this drawing
---     command
---
--- -   #VUID-vkCmdDrawMultiEXT-pFragmentSize-09370# If there is a shader
---     object bound to any graphics stage, and the current render pass
---     includes a color attachment that uses the
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID'
---     resolve mode, then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
---     /must/ have set @pFragmentSize->width@ to @1@ prior to this drawing
---     command
---
--- -   #VUID-vkCmdDrawMultiEXT-pFragmentSize-09371# If there is a shader
---     object bound to any graphics stage, and the current render pass
---     includes a color attachment that uses the
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID'
---     resolve mode, then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
---     /must/ have set @pFragmentSize->height@ to @1@ prior to this drawing
---     command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-07749# If the bound graphics pipeline
---     state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-08646# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
---     feature is enabled, and a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-attachmentCount-07750# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'
---     dynamic state enabled then the @attachmentCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
---     /must/ be greater than or equal to the
---     'Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo'::@attachmentCount@
---     of the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawMultiEXT-None-08647# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
---     feature is enabled, and a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then the @attachmentCount@
---     parameter of most recent call to
---     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
---     in the current command buffer /must/ be greater than or equal to the
---     number of color attachments in the current render pass instance
---
--- -   #VUID-vkCmdDrawMultiEXT-None-07751# If the bound graphics pipeline
---     state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command for each
---     discard rectangle in
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'::@discardRectangleCount@
---
--- -   #VUID-vkCmdDrawMultiEXT-None-07880# If the
---     @VK_EXT_discard_rectangles@ extension is enabled, a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-07881# If the
---     @VK_EXT_discard_rectangles@ extension is enabled, a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @discardRectangleEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-rasterizerDiscardEnable-09236# If the
---     @VK_EXT_discard_rectangles@ extension is enabled, and a shader
---     object is bound to any graphics stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEnableEXT'
---     in the current command buffer set @discardRectangleEnable@ to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-dynamicRenderingUnusedAttachments-08913# If
---     the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
---     used to create the bound graphics pipeline /must/ be equal to
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawMultiEXT-dynamicRenderingUnusedAttachments-08914# If
---     current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->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 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->imageView@
---
--- -   #VUID-vkCmdDrawMultiEXT-dynamicRenderingUnusedAttachments-08915# If
---     the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is enabled,
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
---     used to create the bound graphics pipeline was not equal to the
---     'Vulkan.Core10.Enums.Format.Format' used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@,
---     the value of the format /must/ be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawMultiEXT-dynamicRenderingUnusedAttachments-08916# If
---     the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
---     used to create the bound graphics pipeline /must/ be equal to
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawMultiEXT-dynamicRenderingUnusedAttachments-08917# If
---     current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->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 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->imageView@
---
--- -   #VUID-vkCmdDrawMultiEXT-dynamicRenderingUnusedAttachments-08918# If
---     the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is enabled,
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
---     used to create the bound graphics pipeline was not equal to the
---     'Vulkan.Core10.Enums.Format.Format' used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@,
---     the value of the format /must/ be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawMultiEXT-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_fragment_shading_rate.RenderingFragmentShadingRateAttachmentInfoKHR'::@imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the bound graphics
---     pipeline /must/ have been created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
---
--- -   #VUID-vkCmdDrawMultiEXT-imageView-06184# If the current render pass
---     instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     and
---     'Vulkan.Extensions.VK_EXT_fragment_density_map.RenderingFragmentDensityMapAttachmentInfoEXT'::@imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the bound graphics
---     pipeline /must/ have been created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT'
---
--- -   #VUID-vkCmdDrawMultiEXT-colorAttachmentCount-06185# If the bound
---     pipeline was created with a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.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_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     used to create the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawMultiEXT-pDepthAttachment-06186# If the current
---     render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the bound pipeline was created with a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     structure, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
---     @depthStencilAttachmentSamples@ member of
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     used to create the bound graphics pipeline /must/ be equal to the
---     sample count used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---
--- -   #VUID-vkCmdDrawMultiEXT-pStencilAttachment-06187# If the current
---     render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the bound pipeline was created with a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     structure, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
---     @depthStencilAttachmentSamples@ member of
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     used to create the bound graphics pipeline /must/ be equal to the
---     sample count used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---
--- -   #VUID-vkCmdDrawMultiEXT-multisampledRenderToSingleSampled-07285# If
---     the bound pipeline was created without a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     structure, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---     feature is not enabled, 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 @rasterizationSamples@ for
---     the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawMultiEXT-multisampledRenderToSingleSampled-07286# If
---     the bound pipeline was created without a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     structure, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     @rasterizationSamples@ for the bound graphics pipeline /must/ be
---     equal to the sample count used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---
--- -   #VUID-vkCmdDrawMultiEXT-multisampledRenderToSingleSampled-07287# If
---     the bound pipeline was created without a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     structure, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     @rasterizationSamples@ for the bound graphics pipeline /must/ be
---     equal to the sample count used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---
--- -   #VUID-vkCmdDrawMultiEXT-pNext-07935# If this command has been called
---     inside a render pass instance started with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     and the @pNext@ chain of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'
---     includes a
---     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'
---     structure with @multisampledRenderToSingleSampledEnable@ equal to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the value of
---     @rasterizationSamples@ for the bound graphics pipeline /must/ be
---     equal to
---     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'::@rasterizationSamples@
---
--- -   #VUID-vkCmdDrawMultiEXT-renderPass-06198# If the current render pass
---     instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the bound pipeline /must/ have been created with a
---     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@renderPass@
---     equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE'
---
--- -   #VUID-vkCmdDrawMultiEXT-pColorAttachments-08963# If the current
---     render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is a graphics pipeline bound with a fragment shader that
---     statically writes to a color attachment, the color write mask is not
---     zero, color writes are enabled, and the corresponding element of the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
---     corresponding element of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
---     used to create the pipeline /must/ not be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawMultiEXT-pDepthAttachment-08964# If the current
---     render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is a graphics pipeline bound, depth test is enabled, depth
---     write is enabled, and the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
---     used to create the pipeline /must/ not be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawMultiEXT-pStencilAttachment-08965# If the current
---     render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is a graphics pipeline bound, stencil test is enabled and the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
---     used to create the pipeline /must/ not be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawMultiEXT-primitivesGeneratedQueryWithRasterizerDiscard-06708#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithRasterizerDiscard primitivesGeneratedQueryWithRasterizerDiscard>
---     feature is not enabled and the
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
---     query is active,
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-discard rasterization discard>
---     /must/ not be enabled
---
--- -   #VUID-vkCmdDrawMultiEXT-primitivesGeneratedQueryWithNonZeroStreams-06709#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>
---     feature is not enabled and the
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
---     query is active, the bound graphics pipeline /must/ not have been
---     created with a non-zero value in
---     'Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT'::@rasterizationStream@
---
--- -   #VUID-vkCmdDrawMultiEXT-None-07619# If a shader object is bound to
---     the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetTessellationDomainOriginEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-07620# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClamp depthClamp>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClampEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-07621# If a shader object is bound to
---     any graphics stage or a graphics pipeline is bound which was created
---     with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_POLYGON_MODE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-07622# If a shader object is bound to
---     any graphics stage or a graphics pipeline is bound which was created
---     with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-07623# If a shader object is bound to
---     any graphics stage or a graphics pipeline is bound which was created
---     with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-alphaToCoverageEnable-08919# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT'
---     dynamic state enabled, and @alphaToCoverageEnable@ was
---     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-fragmentoutput Fragment Output Interface>
---     /must/ contain a variable for the alpha @Component@ word in
---     @Location@ 0 at @Index@ 0
---
--- -   #VUID-vkCmdDrawMultiEXT-alphaToCoverageEnable-08920# If a shader
---     object is bound to any graphics stage, and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT'
---     in the current command buffer set @alphaToCoverageEnable@ to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-fragmentoutput Fragment Output Interface>
---     /must/ contain a variable for the alpha @Component@ word in
---     @Location@ 0 at @Index@ 0
---
--- -   #VUID-vkCmdDrawMultiEXT-None-07624# If a shader object is bound to
---     any graphics stage or a graphics pipeline is bound which was created
---     with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-07625# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-alphaToOne alphaToOne>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToOneEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-07626# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-logicOp logicOp>
---     feature is enabled, a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLogicOpEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-07627# If the bound graphics pipeline
---     state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-08657# If a shader object is bound to
---     the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and both the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE' and there are color
---     attachments bound, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-07628# If the bound graphics pipeline
---     state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-08658# If a shader object is bound to
---     the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     for any attachment set that attachment’s value in
---     @pColorBlendEnables@ to 'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-07629# If the bound graphics pipeline
---     state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-08659# If a shader object is bound to
---     the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and both the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE' and there are color
---     attachments bound, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-07630# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryStreams geometryStreams>
---     feature is enabled, and a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_STREAM_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationStreamEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-07631# If the
---     @VK_EXT_conservative_rasterization@ extension is enabled, a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetConservativeRasterizationModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-07632# If the
---     @VK_EXT_conservative_rasterization@ extension is enabled, a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @conservativeRasterizationMode@ is
---     'Vulkan.Extensions.VK_EXT_conservative_rasterization.CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT',
---     then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetExtraPrimitiveOverestimationSizeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-07633# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClipEnable depthClipEnable>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT'
---     dynamic state, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-07635# If the bound graphics pipeline
---     state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-rasterizerDiscardEnable-09416# If the
---     @VK_EXT_blend_operation_advanced@ extension is enabled, and a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then at least one of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     and
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-07636# If the @VK_EXT_provoking_vertex@
---     extension is enabled, a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetProvokingVertexModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-07637# If the bound graphics pipeline
---     state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-08666# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object is bound to any graphics
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
---     in the current command buffer set @polygonMode@ to
---     'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_LINE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-08667# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
---     in the current command buffer set @primitiveTopology@ to any line
---     topology, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-08668# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object that outputs line
---     primitives is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-07638# If the bound graphics pipeline
---     state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-08669# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object is bound to any graphics
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
---     in the current command buffer set @polygonMode@ to
---     'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_LINE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-08670# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
---     in the current command buffer set @primitiveTopology@ to any line
---     topology, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-08671# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object that outputs line
---     primitives is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-07849# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled and a shader object is bound to any graphics
---     stage, or a bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_KHR'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @stippledLineEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then
---     'Vulkan.Extensions.VK_KHR_line_rasterization.cmdSetLineStippleKHR'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-07639# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClipControl depthClipControl>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipNegativeOneToOneEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-09650# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClampControl depthClampControl>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @depthClampEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_depth_clamp_control.cmdSetDepthClampRangeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-07640# If the
---     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportWScalingEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-07641# If the @VK_NV_viewport_swizzle@
---     extension is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-07642# If the
---     @VK_NV_fragment_coverage_to_color@ extension is enabled, a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-07643# If the
---     @VK_NV_fragment_coverage_to_color@ extension is enabled, a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @coverageToColorEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-07644# If the
---     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationModeNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-07645# If the
---     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @coverageModulationMode@ is any value other than
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.COVERAGE_MODULATION_MODE_NONE_NV',
---     then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-07646# If the
---     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @coverageModulationTableEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-07647# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetShadingRateImageEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-pipelineFragmentShadingRate-09238# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate>
---     feature is enabled, a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-07648# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-representativeFragmentTest representativeFragmentTest>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRepresentativeFragmentTestEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-07649# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-coverageReductionMode coverageReductionMode>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageReductionModeNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-pColorBlendEnables-07470# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---     state enabled and the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     set @pColorBlendEnables@ for any attachment to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then for those attachments in
---     the subpass 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>
---     /must/ contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT'
---
--- -   #VUID-vkCmdDrawMultiEXT-rasterizationSamples-07471# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the current subpass does not use any color
---     and\/or depth\/stencil attachments, then the @rasterizationSamples@
---     in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ follow the rules for a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-noattachments zero-attachment subpass>
---
--- -   #VUID-vkCmdDrawMultiEXT-samples-07472# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
---     state enabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state disabled, then the @samples@ parameter in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
---     /must/ be greater or equal to the
---     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
---     parameter used to create the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawMultiEXT-samples-07473# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
---     state and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     states enabled, then the @samples@ parameter in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
---     /must/ be greater or equal to the @rasterizationSamples@ parameter
---     in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---
--- -   #VUID-vkCmdDrawMultiEXT-rasterizationSamples-07474# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---     feature is not enabled, and neither the
---     @VK_AMD_mixed_attachment_samples@ nor the
---     @VK_NV_framebuffer_mixed_samples@ extensions are enabled, then the
---     @rasterizationSamples@ in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ be the same as the current subpass color and\/or
---     depth\/stencil attachments
---
--- -   #VUID-vkCmdDrawMultiEXT-None-09211# If the bound graphics pipeline
---     state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, or a shader object is bound to any graphics stage,
---     and the current render pass instance includes a
---     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'
---     structure with @multisampledRenderToSingleSampledEnable@ equal to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the
---     @rasterizationSamples@ in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ be the same as the @rasterizationSamples@ member of that
---     structure
---
--- -   #VUID-vkCmdDrawMultiEXT-firstAttachment-07476# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     calls /must/ specify an enable for all active color attachments in
---     the current subpass
---
--- -   #VUID-vkCmdDrawMultiEXT-rasterizerDiscardEnable-09417# If a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     calls /must/ specify an enable for all active color attachments in
---     the current subpass
---
--- -   #VUID-vkCmdDrawMultiEXT-firstAttachment-07477# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     calls /must/ specify the blend equations for all active color
---     attachments in the current subpass where blending is enabled
---
--- -   #VUID-vkCmdDrawMultiEXT-rasterizerDiscardEnable-09418# If a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and both the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE' and there are color
---     attachments bound, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     calls /must/ specify the blend equations for all active color
---     attachments in the current subpass where blending is enabled
---
--- -   #VUID-vkCmdDrawMultiEXT-firstAttachment-07478# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     calls /must/ specify the color write mask for all active color
---     attachments in the current subpass
---
--- -   #VUID-vkCmdDrawMultiEXT-rasterizerDiscardEnable-09419# If a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     calls /must/ specify the color write mask for all active color
---     attachments in the current subpass
---
--- -   #VUID-vkCmdDrawMultiEXT-firstAttachment-07479# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
---     calls /must/ specify the advanced blend equations for all active
---     color attachments in the current subpass where blending is enabled
---
--- -   #VUID-vkCmdDrawMultiEXT-advancedBlendMaxColorAttachments-07480# If
---     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
---     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---     dynamic states enabled and the last calls to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     and
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
---     have enabled advanced blending, then the number of active color
---     attachments in the current subpass /must/ not exceed
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-advancedBlendMaxColorAttachments advancedBlendMaxColorAttachments>
---
--- -   #VUID-vkCmdDrawMultiEXT-primitivesGeneratedQueryWithNonZeroStreams-07481#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>
---     feature is not enabled and the
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
---     query is active, and the bound graphics pipeline was created with
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_STREAM_EXT'
---     state enabled, the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationStreamEXT'
---     /must/ have set the @rasterizationStream@ to zero
---
--- -   #VUID-vkCmdDrawMultiEXT-sampleLocationsPerPixel-07482# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state enabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state disabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then the @sampleLocationsPerPixel@ member of @pSampleLocationsInfo@
---     in the last call to
---     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
---     /must/ equal the @rasterizationSamples@ member of the
---     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'
---     structure the bound graphics pipeline has been created with
---
--- -   #VUID-vkCmdDrawMultiEXT-sampleLocationsPerPixel-07483# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state enabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then the @sampleLocationsPerPixel@ member of @pSampleLocationsInfo@
---     in the last call to
---     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
---     /must/ equal the @rasterizationSamples@ parameter of the last call
---     to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---
--- -   #VUID-vkCmdDrawMultiEXT-sampleLocationsEnable-07484# If a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, or the bound graphics pipeline was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     state enabled, and @sampleLocationsEnable@ was
---     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
---     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-vkCmdDrawMultiEXT-sampleLocationsEnable-07485# If a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state enabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     state enabled, and if @sampleLocationsEnable@ was
---     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
---     then the @sampleLocationsInfo.sampleLocationGridSize.width@ in the
---     last call to
---     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
---     /must/ evenly divide
---     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@sampleLocationGridSize.width@
---     as returned by
---     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
---     with a @samples@ parameter equaling @rasterizationSamples@
---
--- -   #VUID-vkCmdDrawMultiEXT-sampleLocationsEnable-07486# If a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state enabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     state enabled, and if @sampleLocationsEnable@ was
---     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
---     then the @sampleLocationsInfo.sampleLocationGridSize.height@ in the
---     last call to
---     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
---     /must/ evenly divide
---     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@sampleLocationGridSize.height@
---     as returned by
---     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
---     with a @samples@ parameter equaling @rasterizationSamples@
---
--- -   #VUID-vkCmdDrawMultiEXT-sampleLocationsEnable-07487# If a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     state enabled, and if @sampleLocationsEnable@ was
---     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
---     the fragment shader code /must/ not statically use the extended
---     instruction @InterpolateAtSample@
---
--- -   #VUID-vkCmdDrawMultiEXT-sampleLocationsEnable-07936# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state disabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then @sampleLocationsInfo.sampleLocationGridSize.width@ /must/
---     evenly divide
---     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@sampleLocationGridSize.width@
---     as returned by
---     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
---     with a @samples@ parameter equaling the value of
---     @rasterizationSamples@ in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---
--- -   #VUID-vkCmdDrawMultiEXT-sampleLocationsEnable-07937# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state disabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then @sampleLocationsInfo.sampleLocationGridSize.height@ /must/
---     evenly divide
---     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@sampleLocationGridSize.height@
---     as returned by
---     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
---     with a @samples@ parameter equaling the value of
---     @rasterizationSamples@ in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---
--- -   #VUID-vkCmdDrawMultiEXT-sampleLocationsEnable-07938# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state disabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then @sampleLocationsInfo.sampleLocationsPerPixel@ /must/ equal
---     @rasterizationSamples@ in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---
--- -   #VUID-vkCmdDrawMultiEXT-coverageModulationTableEnable-07488# If a
---     shader object is bound to any graphics stage or the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV'
---     state enabled, and the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV'
---     set @coverageModulationTableEnable@ to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the
---     @coverageModulationTableCount@ parameter in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableNV'
---     /must/ equal the current @rasterizationSamples@ divided by the
---     number of color samples in the current subpass
---
--- -   #VUID-vkCmdDrawMultiEXT-rasterizationSamples-07489# If the
---     @VK_NV_framebuffer_mixed_samples@ extension is enabled, and if
---     current subpass has a depth\/stencil attachment and depth test,
---     stencil test, or depth bounds test are enabled in the bound
---     pipeline, then the current @rasterizationSamples@ /must/ be the same
---     as the sample count of the depth\/stencil attachment
---
--- -   #VUID-vkCmdDrawMultiEXT-coverageToColorEnable-07490# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
---     state enabled and the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
---     set the @coverageToColorEnable@ to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the current subpass
---     /must/ have a color attachment at the location selected by the last
---     call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
---     @coverageToColorLocation@, with a
---     'Vulkan.Core10.Enums.Format.Format' of
---     'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R8_SINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R16_UINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R16_SINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R32_UINT', or
---     'Vulkan.Core10.Enums.Format.FORMAT_R32_SINT'
---
--- -   #VUID-vkCmdDrawMultiEXT-rasterizerDiscardEnable-09420# If the
---     @VK_NV_fragment_coverage_to_color@ extension is enabled, and a
---     shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
---     set the @coverageToColorEnable@ to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the current subpass
---     /must/ have a color attachment at the location selected by the last
---     call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
---     @coverageToColorLocation@, with a
---     'Vulkan.Core10.Enums.Format.Format' of
---     'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R8_SINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R16_UINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R16_SINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R32_UINT', or
---     'Vulkan.Core10.Enums.Format.FORMAT_R32_SINT'
---
--- -   #VUID-vkCmdDrawMultiEXT-coverageReductionMode-07491# If this
---     @VK_NV_coverage_reduction_mode@ extension is enabled, the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
---     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     states enabled, the current coverage reduction mode
---     @coverageReductionMode@, then the current @rasterizationSamples@,
---     and the sample counts for the color and depth\/stencil attachments
---     (if the subpass has them) /must/ be a valid combination returned by
---     'Vulkan.Extensions.VK_NV_coverage_reduction_mode.getPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV'
---
--- -   #VUID-vkCmdDrawMultiEXT-viewportCount-07492# 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_SWIZZLE_NV'
---     dynamic state enabled, 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-vkCmdDrawMultiEXT-viewportCount-07493# 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_SWIZZLE_NV'
---     dynamic states enabled then the @viewportCount@ parameter in the
---     last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
---     /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-vkCmdDrawMultiEXT-viewportCount-09421# If the
---     @VK_NV_viewport_swizzle@ extension is enabled, and a shader object
---     is bound to any graphics stage, then the @viewportCount@ parameter
---     in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
---     /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-vkCmdDrawMultiEXT-rasterizationSamples-07494# If the
---     @VK_NV_framebuffer_mixed_samples@ extension is enabled, and if the
---     current subpass has any color attachments and @rasterizationSamples@
---     of the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     is greater than the number of color samples, then the pipeline
---     @sampleShadingEnable@ /must/ be
---     'Vulkan.Core10.FundamentalTypes.FALSE'
---
--- -   #VUID-vkCmdDrawMultiEXT-stippledLineEnable-07495# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---     or
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---     dynamic states enabled, and if the current @stippledLineEnable@
---     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
---     @lineRasterizationMode@ state is
---     'Vulkan.Extensions.VK_KHR_line_rasterization.LINE_RASTERIZATION_MODE_RECTANGULAR_KHR',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>
---     feature /must/ be enabled
---
--- -   #VUID-vkCmdDrawMultiEXT-stippledLineEnable-07496# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---     or
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---     dynamic states enabled, and if the current @stippledLineEnable@
---     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
---     @lineRasterizationMode@ state is
---     'Vulkan.Extensions.VK_KHR_line_rasterization.LINE_RASTERIZATION_MODE_BRESENHAM_KHR',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     feature /must/ be enabled
---
--- -   #VUID-vkCmdDrawMultiEXT-stippledLineEnable-07497# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---     or
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---     dynamic states enabled, and if the current @stippledLineEnable@
---     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
---     @lineRasterizationMode@ state is
---     'Vulkan.Extensions.VK_KHR_line_rasterization.LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     feature /must/ be enabled
---
--- -   #VUID-vkCmdDrawMultiEXT-stippledLineEnable-07498# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---     or
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---     dynamic states enabled, and if the current @stippledLineEnable@
---     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
---     @lineRasterizationMode@ state is
---     'Vulkan.Extensions.VK_KHR_line_rasterization.LINE_RASTERIZATION_MODE_DEFAULT_KHR',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>
---     feature /must/ be enabled and
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@strictLines@
---     /must/ be 'Vulkan.Core10.FundamentalTypes.TRUE'
---
--- -   #VUID-vkCmdDrawMultiEXT-conservativePointAndLineRasterization-07499#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT'
---     dynamic state enabled,
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-conservativePointAndLineRasterization conservativePointAndLineRasterization>
---     is not supported, and the effective primitive topology output by the
---     last pre-rasterization shader stage is a line or point, then the
---     @conservativeRasterizationMode@ set by the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetConservativeRasterizationModeEXT'
---     /must/ be
---     'Vulkan.Extensions.VK_EXT_conservative_rasterization.CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT'
---
--- -   #VUID-vkCmdDrawMultiEXT-stage-07073# If the bound pipeline was
---     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_VERTEX_BIT',
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT',
---     then
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-mesh-shader Mesh Shader Queries>
---     /must/ not be active
---
--- -   #VUID-vkCmdDrawMultiEXT-None-08877# If a shader object is bound to
---     the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-07850# If dynamic state was inherited
---     from
---     'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV',
---     it /must/ be set in the current command buffer prior to this drawing
---     command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-08684# If there is no bound graphics
---     pipeline, 'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT'
---     /must/ have been called in the current command buffer with @pStages@
---     with an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---
--- -   #VUID-vkCmdDrawMultiEXT-None-08685# If there is no bound graphics
---     pipeline, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellationShader>
---     feature is enabled,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
---
--- -   #VUID-vkCmdDrawMultiEXT-None-08686# If there is no bound graphics
---     pipeline, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellationShader>
---     feature is enabled,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---
--- -   #VUID-vkCmdDrawMultiEXT-None-08687# If there is no bound graphics
---     pipeline, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometryShader>
---     feature is enabled,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---
--- -   #VUID-vkCmdDrawMultiEXT-None-08688# If there is no bound graphics
---     pipeline, 'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT'
---     /must/ have been called in the current command buffer with @pStages@
---     with an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---
--- -   #VUID-vkCmdDrawMultiEXT-None-08689# If there is no bound graphics
---     pipeline, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
---     feature is enabled,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---
--- -   #VUID-vkCmdDrawMultiEXT-None-08690# If there is no bound graphics
---     pipeline, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
---     feature is enabled,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---
--- -   #VUID-vkCmdDrawMultiEXT-None-08693# If there is no bound graphics
---     pipeline, and at least one of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
---     and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
---     features is enabled, one of the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---     stages /must/ have a valid 'Vulkan.Extensions.Handles.ShaderEXT'
---     bound, and the other /must/ have no
---     'Vulkan.Extensions.Handles.ShaderEXT' bound
---
--- -   #VUID-vkCmdDrawMultiEXT-None-08694# If there is no bound graphics
---     pipeline, and both the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
---     and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
---     features are enabled, and a valid
---     'Vulkan.Extensions.Handles.ShaderEXT' is bound the to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---     stage, and that 'Vulkan.Extensions.Handles.ShaderEXT' was created
---     without the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
---     flag, a valid 'Vulkan.Extensions.Handles.ShaderEXT' /must/ be bound
---     to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---     stage
---
--- -   #VUID-vkCmdDrawMultiEXT-None-08695# If there is no bound graphics
---     pipeline, and both the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
---     and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
---     features are enabled, and a valid
---     'Vulkan.Extensions.Handles.ShaderEXT' is bound the to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---     stage, and that 'Vulkan.Extensions.Handles.ShaderEXT' was created
---     with the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
---     flag, there /must/ be no 'Vulkan.Extensions.Handles.ShaderEXT' bound
---     to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---     stage
---
--- -   #VUID-vkCmdDrawMultiEXT-None-08696# If there is no bound graphics
---     pipeline, and a valid 'Vulkan.Extensions.Handles.ShaderEXT' is bound
---     to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage, there /must/ be no 'Vulkan.Extensions.Handles.ShaderEXT'
---     bound to either the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---     stage or the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---     stage
---
--- -   #VUID-vkCmdDrawMultiEXT-None-08698# If any graphics shader is bound
---     which was created with the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
---     flag, then all shaders created with the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
---     flag in the same
---     'Vulkan.Extensions.VK_EXT_shader_object.createShadersEXT' call
---     /must/ also be bound
---
--- -   #VUID-vkCmdDrawMultiEXT-None-08699# If any graphics shader is bound
---     which was created with the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
---     flag, any stages in between stages whose shaders which did not
---     create a shader with the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
---     flag as part of the same
---     'Vulkan.Extensions.VK_EXT_shader_object.createShadersEXT' call
---     /must/ not have any 'Vulkan.Extensions.Handles.ShaderEXT' bound
---
--- -   #VUID-vkCmdDrawMultiEXT-None-08878# All bound graphics shader
---     objects /must/ have been created with identical or identically
---     defined push constant ranges
---
--- -   #VUID-vkCmdDrawMultiEXT-None-08879# All bound graphics shader
---     objects /must/ have been created with identical or identically
---     defined arrays of descriptor set layouts
---
--- -   #VUID-vkCmdDrawMultiEXT-colorAttachmentCount-09372# If the current
---     render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     and a
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
---     equal to @1@, a color attachment with a resolve mode of
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID',
---     and a fragment shader is bound, it /must/ not declare the
---     @DepthReplacing@ or @StencilRefReplacingEXT@ execution modes
---
--- -   #VUID-vkCmdDrawMultiEXT-pDynamicStates-08715# If the bound graphics
---     pipeline state includes a fragment shader stage, was created with
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE'
---     set in
---     'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@,
---     and the fragment shader declares the @EarlyFragmentTests@ execution
---     mode and uses @OpDepthAttachmentReadEXT@, the @depthWriteEnable@
---     parameter in the last call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthWriteEnable'
---     /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
---
--- -   #VUID-vkCmdDrawMultiEXT-pDynamicStates-08716# If the bound graphics
---     pipeline state includes a fragment shader stage, was created with
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_WRITE_MASK'
---     set in
---     'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@,
---     and the fragment shader declares the @EarlyFragmentTests@ execution
---     mode and uses @OpStencilAttachmentReadEXT@, the @writeMask@
---     parameter in the last call to
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilWriteMask' /must/
---     be @0@
---
--- -   #VUID-vkCmdDrawMultiEXT-None-09116# If a shader object is bound to
---     any graphics stage or the bound graphics pipeline was created with
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT',
---     and the format of any color attachment is
---     'Vulkan.Core10.Enums.Format.FORMAT_E5B9G9R9_UFLOAT_PACK32', the
---     corresponding element of the @pColorWriteMasks@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     /must/ either include all of
---     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_R_BIT',
---     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_G_BIT',
---     and
---     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_B_BIT',
---     or none of them
---
--- -   #VUID-vkCmdDrawMultiEXT-maxFragmentDualSrcAttachments-09239# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blending blending>
---     is enabled for any attachment where either the source or destination
---     blend factors for that attachment
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-dsb use the secondary color input>,
---     the maximum value of @Location@ for any output attachment
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-staticuse statically used>
---     in the @Fragment@ @Execution@ @Model@ executed by this command
---     /must/ be less than
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFragmentDualSrcAttachments maxFragmentDualSrcAttachments>
---
--- -   #VUID-vkCmdDrawMultiEXT-None-09548# If the current render pass was
---     begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     and there is no shader object bound to any graphics stage, the value
---     of each element of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingAttachmentLocationInfoKHR'::@pColorAttachmentLocations@
---     set by
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.cmdSetRenderingAttachmentLocationsKHR'
---     /must/ match the value set for the corresponding element in the
---     bound pipeline
---
--- -   #VUID-vkCmdDrawMultiEXT-None-09549# If the current render pass was
---     begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     and there is no shader object bound to any graphics stage, input
---     attachment index mappings in the bound pipeline /must/ match those
---     set for the current render pass instance via
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR'
---
--- -   #VUID-vkCmdDrawMultiEXT-None-09642# If the current render pass was
---     begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     with the
---     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT'
---     flag, the bound graphics pipeline /must/ have been created with
---     'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT'
---
--- -   #VUID-vkCmdDrawMultiEXT-None-09643# If the bound graphics pipeline
---     was created with
---     'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT',
---     the current render pass /must/ have begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     with the
---     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT'
---     flag
---
--- -   #VUID-vkCmdDrawMultiEXT-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-vkCmdDrawMultiEXT-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-vkCmdDrawMultiEXT-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-vkCmdDrawMultiEXT-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-vkCmdDrawMultiEXT-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-vkCmdDrawMultiEXT-None-02721# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, and that pipeline was created without
---     enabling
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT'
---     for @vertexInputs@, then 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-vkCmdDrawMultiEXT-None-07842# If there is a shader object
---     bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY'
---     dynamic state enabled then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-dynamicPrimitiveTopologyUnrestricted-07500#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY'
---     dynamic state enabled and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-dynamicPrimitiveTopologyUnrestricted dynamicPrimitiveTopologyUnrestricted>
---     is 'Vulkan.Core10.FundamentalTypes.FALSE', then the
---     @primitiveTopology@ parameter of
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
---     /must/ be of the same
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-class topology class>
---     as the pipeline
---     'Vulkan.Core10.Pipeline.PipelineInputAssemblyStateCreateInfo'::@topology@
---     state
---
--- -   #VUID-vkCmdDrawMultiEXT-primitiveTopology-10286# If there is a
---     shader object bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
---     stage, then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
---     /must/ have set @primitiveTopology@ to
---     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST'
---     prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-pStrides-04913# If the bound graphics
---     pipeline was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE'
---     dynamic state enabled, but without the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
---     dynamic state enabled, then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this draw command, and the
---     @pStrides@ parameter of
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2'
---     /must/ not be @NULL@
---
--- -   #VUID-vkCmdDrawMultiEXT-None-04914# If there is a shader object
---     bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage or 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 and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this draw command
---
--- -   #VUID-vkCmdDrawMultiEXT-Input-07939# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-vertexAttributeRobustness vertexAttributeRobustness>
---     is not enabled and there is a shader object bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
---     dynamic state enabled then all variables with the @Input@ storage
---     class decorated with @Location@ in the @Vertex@ @Execution@ @Model@
---     @OpEntryPoint@ /must/ contain a location in
---     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@location@
---
--- -   #VUID-vkCmdDrawMultiEXT-Input-08734# If there is a shader object
---     bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
---     dynamic state enabled and either the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-legacyVertexAttributes legacyVertexAttributes>
---     feature is not enabled or the SPIR-V Type associated with a given
---     @Input@ variable of the corresponding @Location@ in the @Vertex@
---     @Execution@ @Model@ @OpEntryPoint@ is 64-bit, then the numeric type
---     associated with all @Input@ variables of the corresponding
---     @Location@ in the @Vertex@ @Execution@ @Model@ @OpEntryPoint@ /must/
---     be the same as
---     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@
---
--- -   #VUID-vkCmdDrawMultiEXT-format-08936# If there is a shader object
---     bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
---     dynamic state enabled and
---     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@
---     has a 64-bit component, then the scalar width associated with all
---     @Input@ variables of the corresponding @Location@ in the @Vertex@
---     @Execution@ @Model@ @OpEntryPoint@ /must/ be 64-bit
---
--- -   #VUID-vkCmdDrawMultiEXT-format-08937# If there is a shader object
---     bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
---     dynamic state enabled and the scalar width associated with a
---     @Location@ decorated @Input@ variable in the @Vertex@ @Execution@
---     @Model@ @OpEntryPoint@ is 64-bit, then the corresponding
---     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@
---     /must/ have a 64-bit component
---
--- -   #VUID-vkCmdDrawMultiEXT-None-09203# If there is a shader object
---     bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
---     dynamic state enabled and
---     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@
---     has a 64-bit component, then all @Input@ variables at the
---     corresponding @Location@ in the @Vertex@ @Execution@ @Model@
---     @OpEntryPoint@ /must/ not use components that are not present in the
---     format
---
--- -   #VUID-vkCmdDrawMultiEXT-None-04875# If there is a shader object
---     bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
---     stage or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @primitiveTopology@ is
---     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST',
---     then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPatchControlPointsEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-04879# If there is a shader object
---     bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE'
---     dynamic state enabled then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiEXT-None-09637# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitiveTopologyListRestart primitiveTopologyListRestart>
---     feature is not enabled, the topology is
---     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_POINT_LIST',
---     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_LINE_LIST',
---     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_TRIANGLE_LIST',
---     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY',
---     or
---     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY',
---     there is a shader object bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE'
---     dynamic state enabled then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnable'
---     /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
---
--- -   #VUID-vkCmdDrawMultiEXT-stage-06481# The bound graphics pipeline
---     /must/ not have been created with the
---     'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo'::@stage@
---     member of any element of
---     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@pStages@ set
---     to
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---
--- -   #VUID-vkCmdDrawMultiEXT-None-08885# There /must/ be no shader object
---     bound to either of the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---     stages
---
--- -   #VUID-vkCmdDrawMultiEXT-pNext-09461# If the bound graphics pipeline
---     state was created with
---     'Vulkan.Extensions.VK_KHR_vertex_attribute_divisor.PipelineVertexInputDivisorStateCreateInfoKHR'
---     in the @pNext@ chain of
---     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@pVertexInputState@,
---     any member of
---     'Vulkan.Extensions.VK_KHR_vertex_attribute_divisor.PipelineVertexInputDivisorStateCreateInfoKHR'::@pVertexBindingDivisors@
---     has a value other than @1@ in @divisor@, and
---     'Vulkan.Extensions.VK_KHR_vertex_attribute_divisor.PhysicalDeviceVertexAttributeDivisorPropertiesKHR'::@supportsNonZeroFirstInstance@
---     is 'Vulkan.Core10.FundamentalTypes.FALSE', then @firstInstance@
---     /must/ be @0@
---
--- -   #VUID-vkCmdDrawMultiEXT-None-09462# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-objects shader objects>
---     are used for drawing or the bound graphics pipeline state was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
---     dynamic state enabled, any member of the
---     @pVertexBindingDescriptions@ parameter to the
---     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.cmdSetVertexInputEXT'
---     call that sets this dynamic state has a value other than @1@ in
---     @divisor@, and
---     'Vulkan.Extensions.VK_KHR_vertex_attribute_divisor.PhysicalDeviceVertexAttributeDivisorPropertiesKHR'::@supportsNonZeroFirstInstance@
---     is 'Vulkan.Core10.FundamentalTypes.FALSE', then @firstInstance@
---     /must/ be @0@
---
--- -   #VUID-vkCmdDrawMultiEXT-None-04933# The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-multiDraw multiDraw>
---     feature /must/ be enabled
---
--- -   #VUID-vkCmdDrawMultiEXT-drawCount-04934# @drawCount@ /must/ be less
---     than 'PhysicalDeviceMultiDrawPropertiesEXT'::@maxMultiDrawCount@
---
--- -   #VUID-vkCmdDrawMultiEXT-drawCount-04935# If @drawCount@ is greater
---     than zero, @pVertexInfo@ /must/ be a valid pointer to memory
---     containing one or more valid instances of 'MultiDrawInfoEXT'
---     structures
---
--- -   #VUID-vkCmdDrawMultiEXT-drawCount-09628# If @drawCount@ is greater
---     than @1@, @stride@ /must/ be a multiple of @4@ and /must/ be greater
---     than or equal to @sizeof@('MultiDrawInfoEXT')
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdDrawMultiEXT-commandBuffer-parameter# @commandBuffer@
---     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdDrawMultiEXT-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-vkCmdDrawMultiEXT-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
---
--- -   #VUID-vkCmdDrawMultiEXT-renderpass# This command /must/ only be
---     called inside of a render pass instance
---
--- -   #VUID-vkCmdDrawMultiEXT-videocoding# This command /must/ only be
---     called outside of a video coding scope
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
--- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Inside                                                                                                                 | Outside                                                                                                                     | Graphics                                                                                                              | Action                                                                                                                                 |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_multi_draw VK_EXT_multi_draw>,
--- 'Vulkan.Core10.Handles.CommandBuffer', 'MultiDrawInfoEXT'
-cmdDrawMultiEXT :: forall io
-                 . (MonadIO io)
-                => -- | @commandBuffer@ is the command buffer into which the command is
-                   -- recorded.
-                   CommandBuffer
-                -> -- | @pVertexInfo@ is a pointer to an array of 'MultiDrawInfoEXT' with vertex
-                   -- information to be drawn.
-                   ("vertexInfo" ::: Vector MultiDrawInfoEXT)
-                -> -- | @instanceCount@ is the number of instances per draw.
-                   ("instanceCount" ::: Word32)
-                -> -- | @firstInstance@ is the instance ID of the first instance in each draw.
-                   ("firstInstance" ::: Word32)
-                -> -- | @stride@ is the byte stride between consecutive elements of
-                   -- @pVertexInfo@.
-                   ("stride" ::: Word32)
-                -> io ()
-cmdDrawMultiEXT commandBuffer
-                  vertexInfo
-                  instanceCount
-                  firstInstance
-                  stride = liftIO . evalContT $ do
-  let vkCmdDrawMultiEXTPtr = pVkCmdDrawMultiEXT (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCmdDrawMultiEXTPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdDrawMultiEXT is null" Nothing Nothing
-  let vkCmdDrawMultiEXT' = mkVkCmdDrawMultiEXT vkCmdDrawMultiEXTPtr
-  pPVertexInfo <- ContT $ allocaBytes @MultiDrawInfoEXT ((Data.Vector.length (vertexInfo)) * 8)
-  lift $ Data.Vector.imapM_ (\i e -> poke (pPVertexInfo `plusPtr` (8 * (i)) :: Ptr MultiDrawInfoEXT) (e)) (vertexInfo)
-  lift $ traceAroundEvent "vkCmdDrawMultiEXT" (vkCmdDrawMultiEXT'
-                                                 (commandBufferHandle (commandBuffer))
-                                                 ((fromIntegral (Data.Vector.length $ (vertexInfo)) :: Word32))
-                                                 (pPVertexInfo)
-                                                 (instanceCount)
-                                                 (firstInstance)
-                                                 (stride))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdDrawMultiIndexedEXT
-  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Ptr MultiDrawIndexedInfoEXT -> Word32 -> Word32 -> Word32 -> Ptr Int32 -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Ptr MultiDrawIndexedInfoEXT -> Word32 -> Word32 -> Word32 -> Ptr Int32 -> IO ()
-
--- | vkCmdDrawMultiIndexedEXT - Draw primitives
---
--- = Description
---
--- The number of draws recorded is @drawCount@, with each draw reading,
--- sequentially, a @firstIndex@ and an @indexCount@ from @pIndexInfo@. For
--- each recorded draw, primitives are assembled as for
--- 'Vulkan.Core10.CommandBufferBuilding.cmdDrawIndexed', and drawn
--- @instanceCount@ times with @instanceIndex@ starting with @firstInstance@
--- and sequentially for each instance. If @pVertexOffset@ is @NULL@, a
--- @vertexOffset@ is also read from @pIndexInfo@, otherwise the value from
--- dereferencing @pVertexOffset@ is used.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-magFilter-04553# If a
---     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
---     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR',
---     @reductionMode@ equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
---     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-vkCmdDrawMultiIndexedEXT-magFilter-09598# If a
---     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
---     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR' and
---     @reductionMode@ equal to either
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
---     or
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
---     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_MINMAX_BIT'
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-mipmapMode-04770# If a
---     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
---     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR',
---     @reductionMode@ equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
---     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-vkCmdDrawMultiIndexedEXT-mipmapMode-09599# If a
---     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
---     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'
---     and @reductionMode@ equal to either
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
---     or
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
---     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_MINMAX_BIT'
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-unnormalizedCoordinates-09635# If a
---     'Vulkan.Core10.Handles.Sampler' created with
---     @unnormalizedCoordinates@ equal to
---     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
---     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
---     the image view’s @levelCount@ and @layerCount@ /must/ be 1
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-unnormalizedCoordinates-09636# If a
---     'Vulkan.Core10.Handles.Sampler' created with
---     @unnormalizedCoordinates@ equal to
---     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
---     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
---     the image view’s @viewType@ /must/ be
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D' or
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D'
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-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-vkCmdDrawMultiIndexedEXT-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-vkCmdDrawMultiIndexedEXT-None-07888# If a
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'
---     descriptor is accessed using atomic operations as a result of this
---     command, then the storage texel buffer’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-buffer-view-format-features format features>
---     /must/ contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT'
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-02692# If a
---     'Vulkan.Core10.Handles.ImageView' is sampled with
---     'Vulkan.Core10.Enums.Filter.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.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-02693# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_filter_cubic VK_EXT_filter_cubic>
---     extension is not enabled and any 'Vulkan.Core10.Handles.ImageView'
---     is sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as a
---     result of this command, it /must/ not have a
---     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' of
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE', or
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY'
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-filterCubic-02694# Any
---     'Vulkan.Core10.Handles.ImageView' being sampled with
---     'Vulkan.Core10.Enums.Filter.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-vkCmdDrawMultiIndexedEXT-filterCubicMinmax-02695# Any
---     'Vulkan.Core10.Handles.ImageView' being sampled with
---     'Vulkan.Core10.Enums.Filter.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-vkCmdDrawMultiIndexedEXT-cubicRangeClamp-09212# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-cubicRangeClamp cubicRangeClamp>
---     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
---     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
---     a result of this command /must/ not have a
---     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
---     equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-reductionMode-09213# Any
---     'Vulkan.Core10.Handles.ImageView' being sampled with a
---     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
---     equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
---     as a result of this command /must/ sample with
---     'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT'
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-selectableCubicWeights-09214# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-selectableCubicWeights selectableCubicWeights>
---     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
---     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
---     a result of this command /must/ have
---     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.SamplerCubicWeightsCreateInfoQCOM'::@cubicWeights@
---     equal to
---     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM'
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-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-vkCmdDrawMultiIndexedEXT-OpTypeImage-07027# For any
---     'Vulkan.Core10.Handles.ImageView' being written as a storage image
---     where the image format field of the @OpTypeImage@ is @Unknown@, the
---     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_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-OpTypeImage-07028# For any
---     'Vulkan.Core10.Handles.ImageView' being read as a storage image
---     where the image format field of the @OpTypeImage@ is @Unknown@, the
---     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_STORAGE_READ_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-OpTypeImage-07029# For any
---     'Vulkan.Core10.Handles.BufferView' being written as a storage texel
---     buffer where the image format field of the @OpTypeImage@ is
---     @Unknown@, the view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
---     /must/ contain
---     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-OpTypeImage-07030# Any
---     'Vulkan.Core10.Handles.BufferView' being read as a storage texel
---     buffer where the image format field of the @OpTypeImage@ is
---     @Unknown@ then the view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
---     /must/ contain
---     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08600# For each set /n/ that is
---     statically used by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     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' or the
---     'Vulkan.Core10.Handles.DescriptorSetLayout' array used to create the
---     current 'Vulkan.Extensions.Handles.ShaderEXT' , as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08601# For each push constant
---     that is statically used by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     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' or the
---     'Vulkan.Core10.Handles.DescriptorSetLayout' array used to create the
---     current 'Vulkan.Extensions.Handles.ShaderEXT' , as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-10068# For each array of
---     resources that is used by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     the indices used to access members of the array /must/ be less than
---     the descriptor count for the identified binding in the descriptor
---     sets used by this command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-maintenance4-08602# 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
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     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' or the
---     'Vulkan.Core10.Handles.DescriptorSetLayout' and
---     'Vulkan.Core10.PipelineLayout.PushConstantRange' arrays used to
---     create the current 'Vulkan.Extensions.Handles.ShaderEXT' , as
---     described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08114# Descriptors in each bound
---     descriptor set, specified via
---     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
---     be valid as described by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
---     if they are statically used by the 'Vulkan.Core10.Handles.Pipeline'
---     bound to the pipeline bind point used by this command and the bound
---     'Vulkan.Core10.Handles.Pipeline' was not created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08115# If the descriptors used
---     by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
---     point were specified via
---     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', the
---     bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
---     without
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08116# Descriptors in bound
---     descriptor buffers, specified via
---     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
---     /must/ be valid if they are dynamically used by the
---     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
---     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
---     was created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08604# Descriptors in bound
---     descriptor buffers, specified via
---     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
---     /must/ be valid if they are dynamically used by any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     to the pipeline bind point used by this command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08117# If the descriptors used
---     by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
---     point were specified via
---     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
---     the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
---     with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08119# If a descriptor is
---     dynamically used with a 'Vulkan.Core10.Handles.Pipeline' created
---     with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
---     the descriptor memory /must/ be resident
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08605# If a descriptor is
---     dynamically used with a 'Vulkan.Extensions.Handles.ShaderEXT'
---     created with a 'Vulkan.Core10.Handles.DescriptorSetLayout' that was
---     created with
---     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
---     the descriptor memory /must/ be resident
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08606# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject>
---     feature is not enabled, a valid pipeline /must/ be bound to the
---     pipeline bind point used by this command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08608# If a pipeline is bound to
---     the pipeline bind point used by this command, there /must/ not have
---     been any calls to dynamic state setting commands for any state
---     specified statically in the 'Vulkan.Core10.Handles.Pipeline' object
---     bound to the pipeline bind point used by this command, since that
---     pipeline was bound
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08609# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command or any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDrawMultiIndexedEXT-None-08610# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command or any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDrawMultiIndexedEXT-None-08611# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command or any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDrawMultiIndexedEXT-None-08607# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject>
---     feature is enabled, either a valid pipeline /must/ be bound to the
---     pipeline bind point used by this command, or a valid combination of
---     valid and 'Vulkan.Core10.APIConstants.NULL_HANDLE' shader objects
---     /must/ be bound to every supported shader stage corresponding to the
---     pipeline bind point used by this command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-uniformBuffers-06935# If any stage of
---     the 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline
---     bind point used by this command accesses a uniform buffer, and that
---     stage was created without enabling either
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT'
---     or
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT'
---     for @uniformBuffers@, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, that stage /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-vkCmdDrawMultiIndexedEXT-None-08612# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, and any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDrawMultiIndexedEXT-storageBuffers-06936# If any stage of
---     the 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline
---     bind point used by this command accesses a storage buffer, and that
---     stage was created without enabling either
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT'
---     or
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT'
---     for @storageBuffers@, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, that stage /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-vkCmdDrawMultiIndexedEXT-None-08613# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, and any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDrawMultiIndexedEXT-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
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shaders>
---     /must/ not be a protected resource
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-06550# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
---     accesses a 'Vulkan.Core10.Handles.Sampler' or
---     'Vulkan.Core10.Handles.ImageView' object that enables
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,
---     that object /must/ only be used with @OpImageSample*@ or
---     @OpImageSparseSample*@ instructions
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-ConstOffset-06551# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
---     accesses a 'Vulkan.Core10.Handles.Sampler' or
---     'Vulkan.Core10.Handles.ImageView' object that enables
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,
---     that object /must/ not use the @ConstOffset@ and @Offset@ operands
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-viewType-07752# If a
---     'Vulkan.Core10.Handles.ImageView' is accessed as a result of this
---     command, then the image view’s @viewType@ /must/ match the @Dim@
---     operand of the @OpTypeImage@ as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-image-dimensions ???>
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-format-07753# If a
---     'Vulkan.Core10.Handles.ImageView' is accessed as a result of this
---     command, then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-numericformat numeric type>
---     of the image view’s @format@ and the @Sampled@ @Type@ operand of the
---     @OpTypeImage@ /must/ match
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-OpImageWrite-08795# If a
---     'Vulkan.Core10.Handles.ImageView' created with a format other than
---     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM_KHR' 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-vkCmdDrawMultiIndexedEXT-OpImageWrite-08796# If a
---     'Vulkan.Core10.Handles.ImageView' created with the format
---     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM_KHR' is accessed using
---     @OpImageWrite@ as a result of this command, then the @Type@ of the
---     @Texel@ operand of that instruction /must/ have four components
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-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-vkCmdDrawMultiIndexedEXT-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-vkCmdDrawMultiIndexedEXT-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-vkCmdDrawMultiIndexedEXT-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-vkCmdDrawMultiIndexedEXT-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-vkCmdDrawMultiIndexedEXT-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-vkCmdDrawMultiIndexedEXT-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-vkCmdDrawMultiIndexedEXT-OpImageWeightedSampleQCOM-06971# If
---     @OpImageWeightedSampleQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-OpImageWeightedSampleQCOM-06972# If
---     @OpImageWeightedSampleQCOM@ uses a 'Vulkan.Core10.Handles.ImageView'
---     as a sample weight image 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-OpImageBoxFilterQCOM-06973# If
---     @OpImageBoxFilterQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-OpImageBlockMatchSSDQCOM-06974# If
---     @OpImageBlockMatchSSDQCOM@ is used to read from an
---     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-OpImageBlockMatchSADQCOM-06975# If
---     @OpImageBlockMatchSADQCOM@ is used to read from an
---     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-OpImageBlockMatchSADQCOM-06976# If
---     @OpImageBlockMatchSADQCOM@ or OpImageBlockMatchSSDQCOM is used to
---     read from a reference image as result of this command, then the
---     specified reference coordinates /must/ not fail
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-OpImageWeightedSampleQCOM-06977# If
---     @OpImageWeightedSampleQCOM@, @OpImageBoxFilterQCOM@,
---     @OpImageBlockMatchWindowSSDQCOM@, @OpImageBlockMatchWindowSADQCOM@,
---     @OpImageBlockMatchGatherSSDQCOM@, @OpImageBlockMatchGatherSADQCOM@,
---     @OpImageBlockMatchSSDQCOM@, or @OpImageBlockMatchSADQCOM@ uses a
---     'Vulkan.Core10.Handles.Sampler' as a result of this command, then
---     the sampler /must/ have been created with
---     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-OpImageWeightedSampleQCOM-06978# If
---     any command other than @OpImageWeightedSampleQCOM@,
---     @OpImageBoxFilterQCOM@, @OpImageBlockMatchWindowSSDQCOM@,
---     @OpImageBlockMatchWindowSADQCOM@, @OpImageBlockMatchGatherSSDQCOM@,
---     @OpImageBlockMatchGatherSADQCOM@, @OpImageBlockMatchSSDQCOM@, or
---     @OpImageBlockMatchSADQCOM@ uses a 'Vulkan.Core10.Handles.Sampler' as
---     a result of this command, then the sampler /must/ not have been
---     created with
---     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-OpImageBlockMatchWindow-09215# If a
---     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
---     instruction is used to read from an
---     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-OpImageBlockMatchWindow-09216# If a
---     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
---     instruction is used to read from an
---     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
---     the image view’s format /must/ be a single-component format
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-OpImageBlockMatchWindow-09217# If a
---     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
---     read from a reference image as result of this command, then the
---     specified reference coordinates /must/ not fail
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07288# Any shader invocation
---     executed by this command /must/
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-termination terminate>
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-09600# If a descriptor with type
---     equal to any of
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM',
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM',
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',
---     or
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'
---     is accessed as a result of this command, the image subresource
---     identified by that descriptor /must/ be in the image layout
---     identified when the descriptor was written
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-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-vkCmdDrawMultiIndexedEXT-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-vkCmdDrawMultiIndexedEXT-None-07748# If any shader statically
---     accesses an input attachment, a valid descriptor /must/ be bound to
---     the pipeline via a descriptor set
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-OpTypeImage-07468# If any shader
---     executed by this pipeline accesses an @OpTypeImage@ variable with a
---     @Dim@ operand of @SubpassData@, it /must/ be decorated with an
---     @InputAttachmentIndex@ that corresponds to a valid input attachment
---     in the current subpass
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07469# Input attachment views
---     accessed in a subpass /must/ be created with the same
---     'Vulkan.Core10.Enums.Format.Format' as the corresponding subpass
---     definition, and be created with a 'Vulkan.Core10.Handles.ImageView'
---     that is compatible with the attachment referenced by the subpass\'
---     @pInputAttachments@[@InputAttachmentIndex@] in the bound
---     'Vulkan.Core10.Handles.Framebuffer' as specified by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#compatibility-inputattachment Fragment Input Attachment Compatibility>
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-pDepthInputAttachmentIndex-09595#
---     Input attachment views accessed in a dynamic render pass with a
---     @InputAttachmentIndex@ referenced by
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR',
---     or no @InputAttachmentIndex@ if
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR':@pDepthInputAttachmentIndex@
---     or
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR':@pStencilInputAttachmentIndex@
---     are @NULL@, /must/ be created with a
---     'Vulkan.Core10.Handles.ImageView' that is compatible with the
---     corresponding color, depth, or stencil attachment in
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-pDepthInputAttachmentIndex-09596#
---     Input attachment views accessed in a dynamic render pass via a
---     shader object /must/ have an @InputAttachmentIndex@ if both
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR':@pDepthInputAttachmentIndex@
---     and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR':@pStencilInputAttachmentIndex@
---     are non-@NULL@
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-InputAttachmentIndex-09597# If an
---     input attachment view accessed in a dynamic render pass via a shader
---     object has an @InputAttachmentIndex@, the @InputAttachmentIndex@
---     /must/ match an index in
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR'
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-06537# Memory backing image
---     subresources used as attachments in the current render pass /must/
---     not be written in any way other than as an attachment by this
---     command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-09000# If a color attachment is
---     written by any prior command in this subpass or by the load, store,
---     or resolve operations for this subpass, it is not in the
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
---     image layout, and either:
---
---     -   the
---         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT'
---         is set on the bound pipeline or
---
---     -   the last call to
---         'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
---         included
---         'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'
---         and
---
---         -   there is no bound graphics pipeline or
---
---         -   the bound graphics pipeline was created with
---             'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
---
---     it /must/ not be accessed in any way other than as an attachment by
---     this command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-09001# If a depth attachment is
---     written by any prior command in this subpass or by the load, store,
---     or resolve operations for this subpass, it is not in the
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
---     image layout, and either:
---
---     -   the
---         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT'
---         is set on the bound pipeline or
---
---     -   the last call to
---         'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
---         included
---         'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT'
---         and
---
---         -   there is no bound graphics pipeline or
---
---         -   the bound graphics pipeline was created with
---             'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
---
---     it /must/ not be accessed in any way other than as an attachment by
---     this command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-09002# If a stencil attachment
---     is written by any prior command in this subpass or by the load,
---     store, or resolve operations for this subpass, it is not in the
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
---     image layout, and either:
---
---     -   the
---         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT'
---         is set on the bound pipeline or
---
---     -   the last call to
---         'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
---         included
---         'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
---         and
---
---         -   there is no bound graphics pipeline or
---
---         -   the bound graphics pipeline was created with
---             'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
---
---     it /must/ not be accessed in any way other than as an attachment by
---     this command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-09003# If an attachment is
---     written by any prior command in this subpass or by the load, store,
---     or resolve operations for this subpass, it /must/ not be accessed in
---     any way other than as an attachment, storage image, or sampled image
---     by this command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-06539# If any previously
---     recorded command in the current subpass accessed an image
---     subresource used as an attachment in this subpass in any way other
---     than as an attachment, this command /must/ not write to that image
---     subresource as an attachment
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-06886# If the current render
---     pass instance uses a depth\/stencil attachment with a read-only
---     layout for the depth aspect,
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-depth-write depth writes>
---     /must/ be disabled
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-06887# If the current render
---     pass instance uses a depth\/stencil attachment with a read-only
---     layout for the stencil aspect, both front and back @writeMask@ are
---     not zero, and stencil test is enabled,
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-stencil all stencil ops>
---     /must/ be 'Vulkan.Core10.Enums.StencilOp.STENCIL_OP_KEEP'
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07831# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT' dynamic
---     state enabled then
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetViewport' /must/ have
---     been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07832# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR' dynamic
---     state enabled then
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetScissor' /must/ have been
---     called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07833# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_WIDTH' dynamic
---     state enabled then
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth' /must/ have
---     been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08617# If a shader object is
---     bound to any graphics stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
---     in the current command buffer set @polygonMode@ to
---     'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_LINE',
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth' /must/ have
---     been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08618# If a shader object is
---     bound to any graphics stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
---     in the current command buffer set @primitiveTopology@ to any line
---     topology, 'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08619# If a shader object that
---     outputs line primitives is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE',
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth' /must/ have
---     been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07834# If a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS' dynamic
---     state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @depthBiasEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBounds' or
---     'Vulkan.Extensions.VK_EXT_depth_bias_control.cmdSetDepthBias2EXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07835# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_BLEND_CONSTANTS'
---     dynamic state enabled then
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetBlendConstants' /must/
---     have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08621# If a shader object is
---     bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     in the current command buffer set any element of
---     @pColorBlendEnables@ to 'Vulkan.Core10.FundamentalTypes.TRUE', and
---     the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     in the current command buffer set the same element of
---     @pColorBlendEquations@ to a
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.ColorBlendEquationEXT'
---     structure with any 'Vulkan.Core10.Enums.BlendFactor.BlendFactor'
---     member with a value of
---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_COLOR',
---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR',
---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_ALPHA', or
---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA',
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetBlendConstants' /must/
---     have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07836# If a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @depthBoundsTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBounds' /must/
---     have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07837# If a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_COMPARE_MASK'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilCompareMask'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07838# If a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_WRITE_MASK'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilWriteMask'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07839# If a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_REFERENCE'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of and @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilReference'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-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-vkCmdDrawMultiIndexedEXT-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-vkCmdDrawMultiIndexedEXT-None-07634# If the
---     @VK_EXT_sample_locations@ extension is enabled, a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-06666# If the
---     @VK_EXT_sample_locations@ extension is enabled, a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then
---     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07840# If a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CULL_MODE' dynamic
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetCullMode'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07841# If a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRONT_FACE' dynamic
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetFrontFace'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07843# If a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_TEST_ENABLE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE',
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthTestEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07844# If a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthWriteEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07845# If a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_COMPARE_OP'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @depthTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthCompareOp'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07846# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthBounds depthBounds>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthBoundsTestEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07847# If a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_TEST_ENABLE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilTestEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07848# If a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_OP' dynamic
---     state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilOp'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-viewportCount-03417# If a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
---     dynamic state enabled, and the state is not inherited, then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-scissorCount-03418# If a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
---     dynamic state enabled, and the state is not inherited, then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-viewportCount-03419# If a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which 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, and the state is not inherited, then 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-vkCmdDrawMultiIndexedEXT-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-vkCmdDrawMultiIndexedEXT-viewportCount-04138# If the
---     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which 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 state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @viewportWScalingEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.cmdSetViewportWScalingNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08636# If the
---     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which 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 state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @viewportWScalingEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', 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-vkCmdDrawMultiIndexedEXT-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-vkCmdDrawMultiIndexedEXT-shadingRateImage-09233# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV'
---     and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetCoarseSampleOrderNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-shadingRateImage-09234# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which 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 state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @shadingRateImageEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetViewportShadingRatePaletteNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08637# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which 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 state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @shadingRateImageEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', 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-vkCmdDrawMultiIndexedEXT-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
---     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo', 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-vkCmdDrawMultiIndexedEXT-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
---     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo', 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-vkCmdDrawMultiIndexedEXT-None-07878# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-exclusiveScissor exclusiveScissor>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07879# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-exclusiveScissor exclusiveScissor>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV'
---     dynamic state enabled, and the most recent call to
---     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorEnableNV'
---     in the current command buffer set any element of
---     @pExclusiveScissorEnables@ to 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then
---     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-04876# If a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     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 and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-04877# If a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-logicOp-04878# If a shader object is
---     bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_EXT'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @logicOpEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetLogicOpEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-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-vkCmdDrawMultiIndexedEXT-primitiveFragmentShadingRateWithMultipleViewports-08642#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
---     limit is not supported, and any shader object bound to a graphics
---     stage writes 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-vkCmdDrawMultiIndexedEXT-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-vkCmdDrawMultiIndexedEXT-None-08643# If a shader object is
---     bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then for each color
---     attachment in the render pass, 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 corresponding member of @pColorBlendEnables@ in the most
---     recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     in the current command buffer that affected that attachment index
---     /must/ have been 'Vulkan.Core10.FundamentalTypes.FALSE'
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-multisampledRenderToSingleSampled-07284#
---     If rasterization is not disabled in the bound graphics pipeline, and
---     none of the following is enabled:
---
---     -   the @VK_AMD_mixed_attachment_samples@ extension
---
---     -   the @VK_NV_framebuffer_mixed_samples@ extension
---
---     -   the
---         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---         feature
---
---     then @rasterizationSamples@ for the bound graphics pipeline /must/
---     be the same as the current subpass color and\/or depth\/stencil
---     attachments
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08644# If a shader object is
---     bound to any graphics stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and none of the following is
---     enabled:
---
---     -   the @VK_AMD_mixed_attachment_samples@ extension
---
---     -   the @VK_NV_framebuffer_mixed_samples@ extension
---
---     -   the
---         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---         feature
---
---     then the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     in the current command buffer /must/ have set @rasterizationSamples@
---     to be the same as the number of samples for the current render pass
---     color and\/or depth\/stencil attachments
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08876# If a shader object is
---     bound to any graphics stage, the current render pass instance /must/
---     have been begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-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-vkCmdDrawMultiIndexedEXT-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-vkCmdDrawMultiIndexedEXT-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-vkCmdDrawMultiIndexedEXT-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-vkCmdDrawMultiIndexedEXT-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-vkCmdDrawMultiIndexedEXT-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-vkCmdDrawMultiIndexedEXT-viewMask-06178# If the current render
---     pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the 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-vkCmdDrawMultiIndexedEXT-colorAttachmentCount-06179# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled and the current render pass instance was
---     begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the 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-vkCmdDrawMultiIndexedEXT-dynamicRenderingUnusedAttachments-08910#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and 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 an @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 bound graphics pipeline
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-dynamicRenderingUnusedAttachments-08912#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and 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 an @imageView@ equal to
---     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have the
---     corresponding element of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
---     used to create the bound pipeline equal to
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-dynamicRenderingUnusedAttachments-08911#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is enabled, and 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 an @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 bound graphics pipeline, or the corresponding
---     element of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@,
---     if it exists, /must/ be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-colorAttachmentCount-09362# If 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@
---     equal to @1@, there is no shader object bound to any graphics stage,
---     and a color attachment with a resolve mode of
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID',
---     each element of the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
---     array with a @resolveImageView@ not equal to
---     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
---     with an image created with a
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value equal to the
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value used to create the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-09363# If there is no shader
---     object bound to any graphics stage, the current render pass instance
---     was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     and a
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
---     equal to @1@, and a color attachment with a resolve mode of
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID',
---     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 an image created with a
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value equal to the
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value used to create the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-09364# If the current render
---     pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is no shader object bound to any graphics stage, and the bound
---     graphics pipeline was created with a non-zero
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value and with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have set the blend enable to
---     'Vulkan.Core10.FundamentalTypes.FALSE' prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-09365# If the current render
---     pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is no shader object bound to any graphics stage, and the bound
---     graphics pipeline was created with a non-zero
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value and with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ have set @rasterizationSamples@ to
---     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' prior
---     to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-09366# If there is a shader
---     object bound to any graphics stage, and the current render pass
---     includes a color attachment that uses the
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID'
---     resolve mode, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have set blend enable to
---     'Vulkan.Core10.FundamentalTypes.FALSE' prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-rasterizationSamples-09367# If there
---     is a shader object bound to any graphics stage, and the current
---     render pass includes a color attachment that uses the
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID'
---     resolve mode, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ have set @rasterizationSamples@ to
---     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' prior
---     to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-09368# If the current render
---     pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is no shader object bound to any graphics stage, and the bound
---     graphics pipeline was created with a non-zero
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value and with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
---     /must/ have set @pFragmentSize->width@ to @1@ prior to this drawing
---     command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-09369# If the current render
---     pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is no shader object bound to any graphics stage, and the bound
---     graphics pipeline was created with a non-zero
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value and with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
---     /must/ have set @pFragmentSize->height@ to @1@ prior to this drawing
---     command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-pFragmentSize-09370# If there is a
---     shader object bound to any graphics stage, and the current render
---     pass includes a color attachment that uses the
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID'
---     resolve mode, then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
---     /must/ have set @pFragmentSize->width@ to @1@ prior to this drawing
---     command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-pFragmentSize-09371# If there is a
---     shader object bound to any graphics stage, and the current render
---     pass includes a color attachment that uses the
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID'
---     resolve mode, then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
---     /must/ have set @pFragmentSize->height@ to @1@ prior to this drawing
---     command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07749# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08646# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
---     feature is enabled, and a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-attachmentCount-07750# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'
---     dynamic state enabled then the @attachmentCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
---     /must/ be greater than or equal to the
---     'Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo'::@attachmentCount@
---     of the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08647# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
---     feature is enabled, and a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then the @attachmentCount@
---     parameter of most recent call to
---     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
---     in the current command buffer /must/ be greater than or equal to the
---     number of color attachments in the current render pass instance
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07751# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command for each
---     discard rectangle in
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'::@discardRectangleCount@
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07880# If the
---     @VK_EXT_discard_rectangles@ extension is enabled, a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07881# If the
---     @VK_EXT_discard_rectangles@ extension is enabled, a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @discardRectangleEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-rasterizerDiscardEnable-09236# If the
---     @VK_EXT_discard_rectangles@ extension is enabled, and a shader
---     object is bound to any graphics stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEnableEXT'
---     in the current command buffer set @discardRectangleEnable@ to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-dynamicRenderingUnusedAttachments-08913#
---     If the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
---     used to create the bound graphics pipeline /must/ be equal to
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-dynamicRenderingUnusedAttachments-08914#
---     If current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->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 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->imageView@
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-dynamicRenderingUnusedAttachments-08915#
---     If the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is enabled,
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
---     used to create the bound graphics pipeline was not equal to the
---     'Vulkan.Core10.Enums.Format.Format' used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@,
---     the value of the format /must/ be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-dynamicRenderingUnusedAttachments-08916#
---     If the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
---     used to create the bound graphics pipeline /must/ be equal to
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-dynamicRenderingUnusedAttachments-08917#
---     If current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->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 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->imageView@
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-dynamicRenderingUnusedAttachments-08918#
---     If the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is enabled,
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
---     used to create the bound graphics pipeline was not equal to the
---     'Vulkan.Core10.Enums.Format.Format' used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@,
---     the value of the format /must/ be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-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_fragment_shading_rate.RenderingFragmentShadingRateAttachmentInfoKHR'::@imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the bound graphics
---     pipeline /must/ have been created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-imageView-06184# If the current
---     render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     and
---     'Vulkan.Extensions.VK_EXT_fragment_density_map.RenderingFragmentDensityMapAttachmentInfoEXT'::@imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the bound graphics
---     pipeline /must/ have been created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT'
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-colorAttachmentCount-06185# If the
---     bound pipeline was created with a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.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_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     used to create the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-pDepthAttachment-06186# If the
---     current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the bound pipeline was created with a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     structure, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
---     @depthStencilAttachmentSamples@ member of
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     used to create the bound graphics pipeline /must/ be equal to the
---     sample count used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-pStencilAttachment-06187# If the
---     current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the bound pipeline was created with a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     structure, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
---     @depthStencilAttachmentSamples@ member of
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     used to create the bound graphics pipeline /must/ be equal to the
---     sample count used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-multisampledRenderToSingleSampled-07285#
---     If the bound pipeline was created without a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     structure, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---     feature is not enabled, 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 @rasterizationSamples@ for
---     the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-multisampledRenderToSingleSampled-07286#
---     If the bound pipeline was created without a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     structure, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     @rasterizationSamples@ for the bound graphics pipeline /must/ be
---     equal to the sample count used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-multisampledRenderToSingleSampled-07287#
---     If the bound pipeline was created without a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     structure, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     @rasterizationSamples@ for the bound graphics pipeline /must/ be
---     equal to the sample count used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-pNext-07935# If this command has been
---     called inside a render pass instance started with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     and the @pNext@ chain of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'
---     includes a
---     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'
---     structure with @multisampledRenderToSingleSampledEnable@ equal to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the value of
---     @rasterizationSamples@ for the bound graphics pipeline /must/ be
---     equal to
---     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'::@rasterizationSamples@
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-renderPass-06198# If the current
---     render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the bound pipeline /must/ have been created with a
---     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@renderPass@
---     equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE'
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-pColorAttachments-08963# If the
---     current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is a graphics pipeline bound with a fragment shader that
---     statically writes to a color attachment, the color write mask is not
---     zero, color writes are enabled, and the corresponding element of the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
---     corresponding element of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
---     used to create the pipeline /must/ not be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-pDepthAttachment-08964# If the
---     current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is a graphics pipeline bound, depth test is enabled, depth
---     write is enabled, and the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
---     used to create the pipeline /must/ not be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-pStencilAttachment-08965# If the
---     current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is a graphics pipeline bound, stencil test is enabled and the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
---     used to create the pipeline /must/ not be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-primitivesGeneratedQueryWithRasterizerDiscard-06708#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithRasterizerDiscard primitivesGeneratedQueryWithRasterizerDiscard>
---     feature is not enabled and the
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
---     query is active,
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-discard rasterization discard>
---     /must/ not be enabled
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-primitivesGeneratedQueryWithNonZeroStreams-06709#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>
---     feature is not enabled and the
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
---     query is active, the bound graphics pipeline /must/ not have been
---     created with a non-zero value in
---     'Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT'::@rasterizationStream@
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07619# If a shader object is
---     bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetTessellationDomainOriginEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07620# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClamp depthClamp>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClampEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07621# If a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_POLYGON_MODE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07622# If a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07623# If a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-alphaToCoverageEnable-08919# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT'
---     dynamic state enabled, and @alphaToCoverageEnable@ was
---     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-fragmentoutput Fragment Output Interface>
---     /must/ contain a variable for the alpha @Component@ word in
---     @Location@ 0 at @Index@ 0
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-alphaToCoverageEnable-08920# If a
---     shader object is bound to any graphics stage, and the most recent
---     call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT'
---     in the current command buffer set @alphaToCoverageEnable@ to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-fragmentoutput Fragment Output Interface>
---     /must/ contain a variable for the alpha @Component@ word in
---     @Location@ 0 at @Index@ 0
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07624# If a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07625# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-alphaToOne alphaToOne>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToOneEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07626# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-logicOp logicOp>
---     feature is enabled, a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLogicOpEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07627# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08657# If a shader object is
---     bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and both the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE' and there are color
---     attachments bound, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07628# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08658# If a shader object is
---     bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     for any attachment set that attachment’s value in
---     @pColorBlendEnables@ to 'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07629# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08659# If a shader object is
---     bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and both the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE' and there are color
---     attachments bound, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07630# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryStreams geometryStreams>
---     feature is enabled, and a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_STREAM_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationStreamEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07631# If the
---     @VK_EXT_conservative_rasterization@ extension is enabled, a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetConservativeRasterizationModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07632# If the
---     @VK_EXT_conservative_rasterization@ extension is enabled, a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @conservativeRasterizationMode@ is
---     'Vulkan.Extensions.VK_EXT_conservative_rasterization.CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT',
---     then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetExtraPrimitiveOverestimationSizeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07633# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClipEnable depthClipEnable>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT'
---     dynamic state, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07635# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-rasterizerDiscardEnable-09416# If the
---     @VK_EXT_blend_operation_advanced@ extension is enabled, and a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then at least one of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     and
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07636# If the
---     @VK_EXT_provoking_vertex@ extension is enabled, a shader object is
---     bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetProvokingVertexModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07637# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08666# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object is bound to any graphics
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
---     in the current command buffer set @polygonMode@ to
---     'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_LINE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08667# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
---     in the current command buffer set @primitiveTopology@ to any line
---     topology, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08668# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object that outputs line
---     primitives is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07638# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08669# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object is bound to any graphics
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
---     in the current command buffer set @polygonMode@ to
---     'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_LINE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08670# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
---     in the current command buffer set @primitiveTopology@ to any line
---     topology, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08671# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object that outputs line
---     primitives is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07849# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled and a shader object is bound to any graphics
---     stage, or a bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_KHR'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @stippledLineEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then
---     'Vulkan.Extensions.VK_KHR_line_rasterization.cmdSetLineStippleKHR'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07639# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClipControl depthClipControl>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipNegativeOneToOneEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-09650# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClampControl depthClampControl>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @depthClampEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_depth_clamp_control.cmdSetDepthClampRangeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07640# If the
---     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportWScalingEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07641# If the
---     @VK_NV_viewport_swizzle@ extension is enabled, and a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07642# If the
---     @VK_NV_fragment_coverage_to_color@ extension is enabled, a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07643# If the
---     @VK_NV_fragment_coverage_to_color@ extension is enabled, a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @coverageToColorEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07644# If the
---     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationModeNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07645# If the
---     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @coverageModulationMode@ is any value other than
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.COVERAGE_MODULATION_MODE_NONE_NV',
---     then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07646# If the
---     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @coverageModulationTableEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07647# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetShadingRateImageEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-pipelineFragmentShadingRate-09238# If
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate>
---     feature is enabled, a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07648# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-representativeFragmentTest representativeFragmentTest>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRepresentativeFragmentTestEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07649# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-coverageReductionMode coverageReductionMode>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageReductionModeNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-pColorBlendEnables-07470# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---     state enabled and the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     set @pColorBlendEnables@ for any attachment to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then for those attachments in
---     the subpass 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>
---     /must/ contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT'
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-rasterizationSamples-07471# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the current subpass does not use any color
---     and\/or depth\/stencil attachments, then the @rasterizationSamples@
---     in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ follow the rules for a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-noattachments zero-attachment subpass>
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-samples-07472# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
---     state enabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state disabled, then the @samples@ parameter in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
---     /must/ be greater or equal to the
---     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
---     parameter used to create the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-samples-07473# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
---     state and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     states enabled, then the @samples@ parameter in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
---     /must/ be greater or equal to the @rasterizationSamples@ parameter
---     in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-rasterizationSamples-07474# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---     feature is not enabled, and neither the
---     @VK_AMD_mixed_attachment_samples@ nor the
---     @VK_NV_framebuffer_mixed_samples@ extensions are enabled, then the
---     @rasterizationSamples@ in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ be the same as the current subpass color and\/or
---     depth\/stencil attachments
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-09211# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, or a shader object is bound to any graphics stage,
---     and the current render pass instance includes a
---     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'
---     structure with @multisampledRenderToSingleSampledEnable@ equal to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the
---     @rasterizationSamples@ in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ be the same as the @rasterizationSamples@ member of that
---     structure
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-firstAttachment-07476# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     calls /must/ specify an enable for all active color attachments in
---     the current subpass
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-rasterizerDiscardEnable-09417# If a
---     shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     calls /must/ specify an enable for all active color attachments in
---     the current subpass
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-firstAttachment-07477# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     calls /must/ specify the blend equations for all active color
---     attachments in the current subpass where blending is enabled
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-rasterizerDiscardEnable-09418# If a
---     shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and both the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE' and there are color
---     attachments bound, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     calls /must/ specify the blend equations for all active color
---     attachments in the current subpass where blending is enabled
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-firstAttachment-07478# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     calls /must/ specify the color write mask for all active color
---     attachments in the current subpass
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-rasterizerDiscardEnable-09419# If a
---     shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     calls /must/ specify the color write mask for all active color
---     attachments in the current subpass
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-firstAttachment-07479# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
---     calls /must/ specify the advanced blend equations for all active
---     color attachments in the current subpass where blending is enabled
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-advancedBlendMaxColorAttachments-07480#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
---     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---     dynamic states enabled and the last calls to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     and
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
---     have enabled advanced blending, then the number of active color
---     attachments in the current subpass /must/ not exceed
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-advancedBlendMaxColorAttachments advancedBlendMaxColorAttachments>
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-primitivesGeneratedQueryWithNonZeroStreams-07481#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>
---     feature is not enabled and the
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
---     query is active, and the bound graphics pipeline was created with
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_STREAM_EXT'
---     state enabled, the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationStreamEXT'
---     /must/ have set the @rasterizationStream@ to zero
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-sampleLocationsPerPixel-07482# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state enabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state disabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then the @sampleLocationsPerPixel@ member of @pSampleLocationsInfo@
---     in the last call to
---     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
---     /must/ equal the @rasterizationSamples@ member of the
---     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'
---     structure the bound graphics pipeline has been created with
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-sampleLocationsPerPixel-07483# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state enabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then the @sampleLocationsPerPixel@ member of @pSampleLocationsInfo@
---     in the last call to
---     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
---     /must/ equal the @rasterizationSamples@ parameter of the last call
---     to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-sampleLocationsEnable-07484# If a
---     shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, or the bound graphics pipeline was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     state enabled, and @sampleLocationsEnable@ was
---     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
---     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-vkCmdDrawMultiIndexedEXT-sampleLocationsEnable-07485# If a
---     shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state enabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     state enabled, and if @sampleLocationsEnable@ was
---     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
---     then the @sampleLocationsInfo.sampleLocationGridSize.width@ in the
---     last call to
---     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
---     /must/ evenly divide
---     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@sampleLocationGridSize.width@
---     as returned by
---     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
---     with a @samples@ parameter equaling @rasterizationSamples@
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-sampleLocationsEnable-07486# If a
---     shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state enabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     state enabled, and if @sampleLocationsEnable@ was
---     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
---     then the @sampleLocationsInfo.sampleLocationGridSize.height@ in the
---     last call to
---     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
---     /must/ evenly divide
---     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@sampleLocationGridSize.height@
---     as returned by
---     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
---     with a @samples@ parameter equaling @rasterizationSamples@
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-sampleLocationsEnable-07487# If a
---     shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     state enabled, and if @sampleLocationsEnable@ was
---     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
---     the fragment shader code /must/ not statically use the extended
---     instruction @InterpolateAtSample@
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-sampleLocationsEnable-07936# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state disabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then @sampleLocationsInfo.sampleLocationGridSize.width@ /must/
---     evenly divide
---     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@sampleLocationGridSize.width@
---     as returned by
---     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
---     with a @samples@ parameter equaling the value of
---     @rasterizationSamples@ in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-sampleLocationsEnable-07937# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state disabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then @sampleLocationsInfo.sampleLocationGridSize.height@ /must/
---     evenly divide
---     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@sampleLocationGridSize.height@
---     as returned by
---     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
---     with a @samples@ parameter equaling the value of
---     @rasterizationSamples@ in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-sampleLocationsEnable-07938# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state disabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then @sampleLocationsInfo.sampleLocationsPerPixel@ /must/ equal
---     @rasterizationSamples@ in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-coverageModulationTableEnable-07488#
---     If a shader object is bound to any graphics stage or the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV'
---     state enabled, and the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV'
---     set @coverageModulationTableEnable@ to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the
---     @coverageModulationTableCount@ parameter in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableNV'
---     /must/ equal the current @rasterizationSamples@ divided by the
---     number of color samples in the current subpass
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-rasterizationSamples-07489# If the
---     @VK_NV_framebuffer_mixed_samples@ extension is enabled, and if
---     current subpass has a depth\/stencil attachment and depth test,
---     stencil test, or depth bounds test are enabled in the bound
---     pipeline, then the current @rasterizationSamples@ /must/ be the same
---     as the sample count of the depth\/stencil attachment
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-coverageToColorEnable-07490# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
---     state enabled and the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
---     set the @coverageToColorEnable@ to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the current subpass
---     /must/ have a color attachment at the location selected by the last
---     call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
---     @coverageToColorLocation@, with a
---     'Vulkan.Core10.Enums.Format.Format' of
---     'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R8_SINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R16_UINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R16_SINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R32_UINT', or
---     'Vulkan.Core10.Enums.Format.FORMAT_R32_SINT'
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-rasterizerDiscardEnable-09420# If the
---     @VK_NV_fragment_coverage_to_color@ extension is enabled, and a
---     shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
---     set the @coverageToColorEnable@ to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the current subpass
---     /must/ have a color attachment at the location selected by the last
---     call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
---     @coverageToColorLocation@, with a
---     'Vulkan.Core10.Enums.Format.Format' of
---     'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R8_SINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R16_UINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R16_SINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R32_UINT', or
---     'Vulkan.Core10.Enums.Format.FORMAT_R32_SINT'
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-coverageReductionMode-07491# If this
---     @VK_NV_coverage_reduction_mode@ extension is enabled, the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
---     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     states enabled, the current coverage reduction mode
---     @coverageReductionMode@, then the current @rasterizationSamples@,
---     and the sample counts for the color and depth\/stencil attachments
---     (if the subpass has them) /must/ be a valid combination returned by
---     'Vulkan.Extensions.VK_NV_coverage_reduction_mode.getPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV'
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-viewportCount-07492# 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_SWIZZLE_NV'
---     dynamic state enabled, 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-vkCmdDrawMultiIndexedEXT-viewportCount-07493# 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_SWIZZLE_NV'
---     dynamic states enabled then the @viewportCount@ parameter in the
---     last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
---     /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-vkCmdDrawMultiIndexedEXT-viewportCount-09421# If the
---     @VK_NV_viewport_swizzle@ extension is enabled, and a shader object
---     is bound to any graphics stage, then the @viewportCount@ parameter
---     in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
---     /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-vkCmdDrawMultiIndexedEXT-rasterizationSamples-07494# If the
---     @VK_NV_framebuffer_mixed_samples@ extension is enabled, and if the
---     current subpass has any color attachments and @rasterizationSamples@
---     of the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     is greater than the number of color samples, then the pipeline
---     @sampleShadingEnable@ /must/ be
---     'Vulkan.Core10.FundamentalTypes.FALSE'
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-stippledLineEnable-07495# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---     or
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---     dynamic states enabled, and if the current @stippledLineEnable@
---     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
---     @lineRasterizationMode@ state is
---     'Vulkan.Extensions.VK_KHR_line_rasterization.LINE_RASTERIZATION_MODE_RECTANGULAR_KHR',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>
---     feature /must/ be enabled
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-stippledLineEnable-07496# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---     or
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---     dynamic states enabled, and if the current @stippledLineEnable@
---     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
---     @lineRasterizationMode@ state is
---     'Vulkan.Extensions.VK_KHR_line_rasterization.LINE_RASTERIZATION_MODE_BRESENHAM_KHR',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     feature /must/ be enabled
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-stippledLineEnable-07497# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---     or
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---     dynamic states enabled, and if the current @stippledLineEnable@
---     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
---     @lineRasterizationMode@ state is
---     'Vulkan.Extensions.VK_KHR_line_rasterization.LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     feature /must/ be enabled
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-stippledLineEnable-07498# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---     or
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---     dynamic states enabled, and if the current @stippledLineEnable@
---     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
---     @lineRasterizationMode@ state is
---     'Vulkan.Extensions.VK_KHR_line_rasterization.LINE_RASTERIZATION_MODE_DEFAULT_KHR',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>
---     feature /must/ be enabled and
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@strictLines@
---     /must/ be 'Vulkan.Core10.FundamentalTypes.TRUE'
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-conservativePointAndLineRasterization-07499#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT'
---     dynamic state enabled,
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-conservativePointAndLineRasterization conservativePointAndLineRasterization>
---     is not supported, and the effective primitive topology output by the
---     last pre-rasterization shader stage is a line or point, then the
---     @conservativeRasterizationMode@ set by the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetConservativeRasterizationModeEXT'
---     /must/ be
---     'Vulkan.Extensions.VK_EXT_conservative_rasterization.CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT'
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-stage-07073# If the bound pipeline
---     was 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_VERTEX_BIT',
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT',
---     then
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-mesh-shader Mesh Shader Queries>
---     /must/ not be active
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08877# If a shader object is
---     bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07850# If dynamic state was
---     inherited from
---     'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV',
---     it /must/ be set in the current command buffer prior to this drawing
---     command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08684# If there is no bound
---     graphics pipeline,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08685# If there is no bound
---     graphics pipeline, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellationShader>
---     feature is enabled,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08686# If there is no bound
---     graphics pipeline, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellationShader>
---     feature is enabled,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08687# If there is no bound
---     graphics pipeline, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometryShader>
---     feature is enabled,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08688# If there is no bound
---     graphics pipeline,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08689# If there is no bound
---     graphics pipeline, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
---     feature is enabled,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08690# If there is no bound
---     graphics pipeline, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
---     feature is enabled,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08693# If there is no bound
---     graphics pipeline, and at least one of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
---     and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
---     features is enabled, one of the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---     stages /must/ have a valid 'Vulkan.Extensions.Handles.ShaderEXT'
---     bound, and the other /must/ have no
---     'Vulkan.Extensions.Handles.ShaderEXT' bound
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08694# If there is no bound
---     graphics pipeline, and both the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
---     and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
---     features are enabled, and a valid
---     'Vulkan.Extensions.Handles.ShaderEXT' is bound the to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---     stage, and that 'Vulkan.Extensions.Handles.ShaderEXT' was created
---     without the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
---     flag, a valid 'Vulkan.Extensions.Handles.ShaderEXT' /must/ be bound
---     to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---     stage
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08695# If there is no bound
---     graphics pipeline, and both the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
---     and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
---     features are enabled, and a valid
---     'Vulkan.Extensions.Handles.ShaderEXT' is bound the to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---     stage, and that 'Vulkan.Extensions.Handles.ShaderEXT' was created
---     with the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
---     flag, there /must/ be no 'Vulkan.Extensions.Handles.ShaderEXT' bound
---     to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---     stage
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08696# If there is no bound
---     graphics pipeline, and a valid 'Vulkan.Extensions.Handles.ShaderEXT'
---     is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage, there /must/ be no 'Vulkan.Extensions.Handles.ShaderEXT'
---     bound to either the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---     stage or the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---     stage
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08698# If any graphics shader is
---     bound which was created with the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
---     flag, then all shaders created with the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
---     flag in the same
---     'Vulkan.Extensions.VK_EXT_shader_object.createShadersEXT' call
---     /must/ also be bound
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08699# If any graphics shader is
---     bound which was created with the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
---     flag, any stages in between stages whose shaders which did not
---     create a shader with the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
---     flag as part of the same
---     'Vulkan.Extensions.VK_EXT_shader_object.createShadersEXT' call
---     /must/ not have any 'Vulkan.Extensions.Handles.ShaderEXT' bound
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08878# All bound graphics shader
---     objects /must/ have been created with identical or identically
---     defined push constant ranges
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08879# All bound graphics shader
---     objects /must/ have been created with identical or identically
---     defined arrays of descriptor set layouts
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-colorAttachmentCount-09372# If the
---     current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     and a
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
---     equal to @1@, a color attachment with a resolve mode of
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID',
---     and a fragment shader is bound, it /must/ not declare the
---     @DepthReplacing@ or @StencilRefReplacingEXT@ execution modes
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-pDynamicStates-08715# If the bound
---     graphics pipeline state includes a fragment shader stage, was
---     created with
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE'
---     set in
---     'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@,
---     and the fragment shader declares the @EarlyFragmentTests@ execution
---     mode and uses @OpDepthAttachmentReadEXT@, the @depthWriteEnable@
---     parameter in the last call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthWriteEnable'
---     /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-pDynamicStates-08716# If the bound
---     graphics pipeline state includes a fragment shader stage, was
---     created with
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_WRITE_MASK'
---     set in
---     'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@,
---     and the fragment shader declares the @EarlyFragmentTests@ execution
---     mode and uses @OpStencilAttachmentReadEXT@, the @writeMask@
---     parameter in the last call to
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilWriteMask' /must/
---     be @0@
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-09116# If a shader object is
---     bound to any graphics stage or the bound graphics pipeline was
---     created with
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT',
---     and the format of any color attachment is
---     'Vulkan.Core10.Enums.Format.FORMAT_E5B9G9R9_UFLOAT_PACK32', the
---     corresponding element of the @pColorWriteMasks@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     /must/ either include all of
---     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_R_BIT',
---     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_G_BIT',
---     and
---     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_B_BIT',
---     or none of them
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-maxFragmentDualSrcAttachments-09239#
---     If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blending blending>
---     is enabled for any attachment where either the source or destination
---     blend factors for that attachment
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-dsb use the secondary color input>,
---     the maximum value of @Location@ for any output attachment
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-staticuse statically used>
---     in the @Fragment@ @Execution@ @Model@ executed by this command
---     /must/ be less than
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFragmentDualSrcAttachments maxFragmentDualSrcAttachments>
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-09548# If the current render
---     pass was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     and there is no shader object bound to any graphics stage, the value
---     of each element of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingAttachmentLocationInfoKHR'::@pColorAttachmentLocations@
---     set by
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.cmdSetRenderingAttachmentLocationsKHR'
---     /must/ match the value set for the corresponding element in the
---     bound pipeline
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-09549# If the current render
---     pass was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     and there is no shader object bound to any graphics stage, input
---     attachment index mappings in the bound pipeline /must/ match those
---     set for the current render pass instance via
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR'
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-09642# If the current render
---     pass was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     with the
---     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT'
---     flag, the bound graphics pipeline /must/ have been created with
---     'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT'
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-09643# If the bound graphics
---     pipeline was created with
---     'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT',
---     the current render pass /must/ have begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     with the
---     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT'
---     flag
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-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-vkCmdDrawMultiIndexedEXT-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-vkCmdDrawMultiIndexedEXT-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-vkCmdDrawMultiIndexedEXT-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-vkCmdDrawMultiIndexedEXT-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-vkCmdDrawMultiIndexedEXT-None-02721# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, and that pipeline was created without
---     enabling
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT'
---     for @vertexInputs@, then 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-vkCmdDrawMultiIndexedEXT-None-07842# If there is a shader
---     object bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY'
---     dynamic state enabled then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-dynamicPrimitiveTopologyUnrestricted-07500#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY'
---     dynamic state enabled and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-dynamicPrimitiveTopologyUnrestricted dynamicPrimitiveTopologyUnrestricted>
---     is 'Vulkan.Core10.FundamentalTypes.FALSE', then the
---     @primitiveTopology@ parameter of
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
---     /must/ be of the same
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-class topology class>
---     as the pipeline
---     'Vulkan.Core10.Pipeline.PipelineInputAssemblyStateCreateInfo'::@topology@
---     state
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-primitiveTopology-10286# If there is
---     a shader object bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
---     stage, then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
---     /must/ have set @primitiveTopology@ to
---     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST'
---     prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-pStrides-04913# If the bound graphics
---     pipeline was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE'
---     dynamic state enabled, but without the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
---     dynamic state enabled, then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this draw command, and the
---     @pStrides@ parameter of
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2'
---     /must/ not be @NULL@
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-04914# If there is a shader
---     object bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage or 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 and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this draw command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-Input-07939# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-vertexAttributeRobustness vertexAttributeRobustness>
---     is not enabled and there is a shader object bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
---     dynamic state enabled then all variables with the @Input@ storage
---     class decorated with @Location@ in the @Vertex@ @Execution@ @Model@
---     @OpEntryPoint@ /must/ contain a location in
---     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@location@
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-Input-08734# If there is a shader
---     object bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
---     dynamic state enabled and either the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-legacyVertexAttributes legacyVertexAttributes>
---     feature is not enabled or the SPIR-V Type associated with a given
---     @Input@ variable of the corresponding @Location@ in the @Vertex@
---     @Execution@ @Model@ @OpEntryPoint@ is 64-bit, then the numeric type
---     associated with all @Input@ variables of the corresponding
---     @Location@ in the @Vertex@ @Execution@ @Model@ @OpEntryPoint@ /must/
---     be the same as
---     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-format-08936# If there is a shader
---     object bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
---     dynamic state enabled and
---     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@
---     has a 64-bit component, then the scalar width associated with all
---     @Input@ variables of the corresponding @Location@ in the @Vertex@
---     @Execution@ @Model@ @OpEntryPoint@ /must/ be 64-bit
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-format-08937# If there is a shader
---     object bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
---     dynamic state enabled and the scalar width associated with a
---     @Location@ decorated @Input@ variable in the @Vertex@ @Execution@
---     @Model@ @OpEntryPoint@ is 64-bit, then the corresponding
---     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@
---     /must/ have a 64-bit component
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-09203# If there is a shader
---     object bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
---     dynamic state enabled and
---     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@
---     has a 64-bit component, then all @Input@ variables at the
---     corresponding @Location@ in the @Vertex@ @Execution@ @Model@
---     @OpEntryPoint@ /must/ not use components that are not present in the
---     format
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-04875# If there is a shader
---     object bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
---     stage or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @primitiveTopology@ is
---     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST',
---     then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPatchControlPointsEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-04879# If there is a shader
---     object bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE'
---     dynamic state enabled then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-09637# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitiveTopologyListRestart primitiveTopologyListRestart>
---     feature is not enabled, the topology is
---     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_POINT_LIST',
---     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_LINE_LIST',
---     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_TRIANGLE_LIST',
---     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY',
---     or
---     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY',
---     there is a shader object bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE'
---     dynamic state enabled then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnable'
---     /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-stage-06481# The bound graphics
---     pipeline /must/ not have been created with the
---     'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo'::@stage@
---     member of any element of
---     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@pStages@ set
---     to
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08885# There /must/ be no shader
---     object bound to either of the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---     stages
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07312# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance6 maintenance6>
---     feature is not enabled, a valid index buffer /must/ be bound
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-pNext-09461# If the bound graphics
---     pipeline state was created with
---     'Vulkan.Extensions.VK_KHR_vertex_attribute_divisor.PipelineVertexInputDivisorStateCreateInfoKHR'
---     in the @pNext@ chain of
---     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@pVertexInputState@,
---     any member of
---     'Vulkan.Extensions.VK_KHR_vertex_attribute_divisor.PipelineVertexInputDivisorStateCreateInfoKHR'::@pVertexBindingDivisors@
---     has a value other than @1@ in @divisor@, and
---     'Vulkan.Extensions.VK_KHR_vertex_attribute_divisor.PhysicalDeviceVertexAttributeDivisorPropertiesKHR'::@supportsNonZeroFirstInstance@
---     is 'Vulkan.Core10.FundamentalTypes.FALSE', then @firstInstance@
---     /must/ be @0@
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-09462# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-objects shader objects>
---     are used for drawing or the bound graphics pipeline state was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
---     dynamic state enabled, any member of the
---     @pVertexBindingDescriptions@ parameter to the
---     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.cmdSetVertexInputEXT'
---     call that sets this dynamic state has a value other than @1@ in
---     @divisor@, and
---     'Vulkan.Extensions.VK_KHR_vertex_attribute_divisor.PhysicalDeviceVertexAttributeDivisorPropertiesKHR'::@supportsNonZeroFirstInstance@
---     is 'Vulkan.Core10.FundamentalTypes.FALSE', then @firstInstance@
---     /must/ be @0@
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-robustBufferAccess2-08798# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
---     feature is not enabled, (@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
---     'Vulkan.Core10.CommandBufferBuilding.cmdBindIndexBuffer' or
---     'Vulkan.Extensions.VK_KHR_maintenance5.cmdBindIndexBuffer2KHR'. If
---     'Vulkan.Extensions.VK_KHR_maintenance5.cmdBindIndexBuffer2KHR' is
---     used to bind the index buffer, the size of the bound index buffer is
---     'Vulkan.Extensions.VK_KHR_maintenance5.cmdBindIndexBuffer2KHR'::@size@
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-04937# The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-multiDraw multiDraw>
---     feature /must/ be enabled
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-drawCount-04939# @drawCount@ /must/
---     be less than
---     'PhysicalDeviceMultiDrawPropertiesEXT'::@maxMultiDrawCount@
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-drawCount-04940# If @drawCount@ is
---     greater than zero, @pIndexInfo@ /must/ be a valid pointer to memory
---     containing one or more valid instances of 'MultiDrawIndexedInfoEXT'
---     structures
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-drawCount-09629# If @drawCount@ is
---     greater than @1@, @stride@ /must/ be a multiple of @4@ and /must/ be
---     greater than or equal to @sizeof@('MultiDrawIndexedInfoEXT')
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-pVertexOffset-parameter# If
---     @pVertexOffset@ is not @NULL@, @pVertexOffset@ /must/ be a valid
---     pointer to a valid @int32_t@ value
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-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-vkCmdDrawMultiIndexedEXT-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-renderpass# This command /must/ only
---     be called inside of a render pass instance
---
--- -   #VUID-vkCmdDrawMultiIndexedEXT-videocoding# This command /must/ only
---     be called outside of a video coding scope
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
--- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Inside                                                                                                                 | Outside                                                                                                                     | Graphics                                                                                                              | Action                                                                                                                                 |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_multi_draw VK_EXT_multi_draw>,
--- 'Vulkan.Core10.Handles.CommandBuffer', 'MultiDrawIndexedInfoEXT'
-cmdDrawMultiIndexedEXT :: forall io
-                        . (MonadIO io)
-                       => -- | @commandBuffer@ is the command buffer into which the command is
-                          -- recorded.
-                          CommandBuffer
-                       -> -- | @pIndexInfo@ is a pointer to an array of 'MultiDrawIndexedInfoEXT' with
-                          -- index information to be drawn.
-                          ("indexInfo" ::: Vector MultiDrawIndexedInfoEXT)
-                       -> -- | @instanceCount@ is the number of instances per draw.
-                          ("instanceCount" ::: Word32)
-                       -> -- | @firstInstance@ is the instance ID of the first instance in each draw.
-                          ("firstInstance" ::: Word32)
-                       -> -- | @stride@ is the byte stride between consecutive elements of
-                          -- @pIndexInfo@.
-                          ("stride" ::: Word32)
-                       -> -- | @pVertexOffset@ is @NULL@ or a pointer to the value added to the vertex
-                          -- index before indexing into the vertex buffer. When specified,
-                          -- 'MultiDrawIndexedInfoEXT'::@offset@ is ignored.
-                          ("vertexOffset" ::: Maybe Int32)
-                       -> io ()
-cmdDrawMultiIndexedEXT commandBuffer
-                         indexInfo
-                         instanceCount
-                         firstInstance
-                         stride
-                         vertexOffset = liftIO . evalContT $ do
-  let vkCmdDrawMultiIndexedEXTPtr = pVkCmdDrawMultiIndexedEXT (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCmdDrawMultiIndexedEXTPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdDrawMultiIndexedEXT is null" Nothing Nothing
-  let vkCmdDrawMultiIndexedEXT' = mkVkCmdDrawMultiIndexedEXT vkCmdDrawMultiIndexedEXTPtr
-  pPIndexInfo <- ContT $ allocaBytes @MultiDrawIndexedInfoEXT ((Data.Vector.length (indexInfo)) * 12)
-  lift $ Data.Vector.imapM_ (\i e -> poke (pPIndexInfo `plusPtr` (12 * (i)) :: Ptr MultiDrawIndexedInfoEXT) (e)) (indexInfo)
-  pVertexOffset <- case (vertexOffset) of
-    Nothing -> pure nullPtr
-    Just j -> ContT $ with (j)
-  lift $ traceAroundEvent "vkCmdDrawMultiIndexedEXT" (vkCmdDrawMultiIndexedEXT'
-                                                        (commandBufferHandle (commandBuffer))
-                                                        ((fromIntegral (Data.Vector.length $ (indexInfo)) :: Word32))
-                                                        (pPIndexInfo)
-                                                        (instanceCount)
-                                                        (firstInstance)
-                                                        (stride)
-                                                        pVertexOffset)
-  pure $ ()
-
-
--- | VkMultiDrawInfoEXT - Structure specifying a multi-draw command
---
--- = Description
---
--- The members of 'MultiDrawInfoEXT' have the same meaning as the
--- @firstVertex@ and @vertexCount@ parameters in
--- 'Vulkan.Core10.CommandBufferBuilding.cmdDraw'.
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_multi_draw VK_EXT_multi_draw>,
--- 'cmdDrawMultiEXT'
-data MultiDrawInfoEXT = MultiDrawInfoEXT
-  { -- | @firstVertex@ is the first vertex to draw.
-    firstVertex :: Word32
-  , -- | @vertexCount@ is the number of vertices to draw.
-    vertexCount :: Word32
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (MultiDrawInfoEXT)
-#endif
-deriving instance Show MultiDrawInfoEXT
-
-instance ToCStruct MultiDrawInfoEXT where
-  withCStruct x f = allocaBytes 8 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p MultiDrawInfoEXT{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr Word32)) (firstVertex)
-    poke ((p `plusPtr` 4 :: Ptr Word32)) (vertexCount)
-    f
-  cStructSize = 8
-  cStructAlignment = 4
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)
-    f
-
-instance FromCStruct MultiDrawInfoEXT where
-  peekCStruct p = do
-    firstVertex <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))
-    vertexCount <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))
-    pure $ MultiDrawInfoEXT
-             firstVertex vertexCount
-
-instance Storable MultiDrawInfoEXT where
-  sizeOf ~_ = 8
-  alignment ~_ = 4
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero MultiDrawInfoEXT where
-  zero = MultiDrawInfoEXT
-           zero
-           zero
-
-
--- | VkMultiDrawIndexedInfoEXT - Structure specifying a multi-draw command
---
--- = Description
---
--- The @firstIndex@, @indexCount@, and @vertexOffset@ members of
--- 'MultiDrawIndexedInfoEXT' have the same meaning as the @firstIndex@,
--- @indexCount@, and @vertexOffset@ parameters, respectively, of
--- 'Vulkan.Core10.CommandBufferBuilding.cmdDrawIndexed'.
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_multi_draw VK_EXT_multi_draw>,
--- 'cmdDrawMultiIndexedEXT'
-data MultiDrawIndexedInfoEXT = MultiDrawIndexedInfoEXT
-  { -- | @firstIndex@ is the first index to draw.
-    firstIndex :: Word32
-  , -- | @indexCount@ is the number of vertices to draw.
-    indexCount :: Word32
-  , -- | @vertexOffset@ is the value added to the vertex index before indexing
-    -- into the vertex buffer for indexed multidraws.
-    vertexOffset :: Int32
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (MultiDrawIndexedInfoEXT)
-#endif
-deriving instance Show MultiDrawIndexedInfoEXT
-
-instance ToCStruct MultiDrawIndexedInfoEXT where
-  withCStruct x f = allocaBytes 12 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p MultiDrawIndexedInfoEXT{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr Word32)) (firstIndex)
-    poke ((p `plusPtr` 4 :: Ptr Word32)) (indexCount)
-    poke ((p `plusPtr` 8 :: Ptr Int32)) (vertexOffset)
-    f
-  cStructSize = 12
-  cStructAlignment = 4
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 8 :: Ptr Int32)) (zero)
-    f
-
-instance FromCStruct MultiDrawIndexedInfoEXT where
-  peekCStruct p = do
-    firstIndex <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))
-    indexCount <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))
-    vertexOffset <- peek @Int32 ((p `plusPtr` 8 :: Ptr Int32))
-    pure $ MultiDrawIndexedInfoEXT
-             firstIndex indexCount vertexOffset
-
-instance Storable MultiDrawIndexedInfoEXT where
-  sizeOf ~_ = 12
-  alignment ~_ = 4
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero MultiDrawIndexedInfoEXT where
-  zero = MultiDrawIndexedInfoEXT
-           zero
-           zero
-           zero
-
-
--- | VkPhysicalDeviceMultiDrawPropertiesEXT - Structure describing multidraw
--- limits of an implementation
---
--- = Members
---
--- The members of the 'PhysicalDeviceMultiDrawPropertiesEXT' structure
--- describe the following features:
---
--- = Description
---
--- If the 'PhysicalDeviceMultiDrawPropertiesEXT' 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_multi_draw VK_EXT_multi_draw>,
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PhysicalDeviceMultiDrawPropertiesEXT = PhysicalDeviceMultiDrawPropertiesEXT
-  { -- | #limits-maxMultiDrawCount# @maxMultiDrawCount@ indicates the maximum
-    -- number of draw calls which /can/ be batched into a single multidraw.
-    maxMultiDrawCount :: Word32 }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PhysicalDeviceMultiDrawPropertiesEXT)
-#endif
-deriving instance Show PhysicalDeviceMultiDrawPropertiesEXT
-
-instance ToCStruct PhysicalDeviceMultiDrawPropertiesEXT where
-  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PhysicalDeviceMultiDrawPropertiesEXT{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Word32)) (maxMultiDrawCount)
-    f
-  cStructSize = 24
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
-    f
-
-instance FromCStruct PhysicalDeviceMultiDrawPropertiesEXT where
-  peekCStruct p = do
-    maxMultiDrawCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
-    pure $ PhysicalDeviceMultiDrawPropertiesEXT
-             maxMultiDrawCount
-
-instance Storable PhysicalDeviceMultiDrawPropertiesEXT where
-  sizeOf ~_ = 24
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero PhysicalDeviceMultiDrawPropertiesEXT where
-  zero = PhysicalDeviceMultiDrawPropertiesEXT
-           zero
-
-
--- | VkPhysicalDeviceMultiDrawFeaturesEXT - Structure describing whether the
--- implementation supports multi draw functionality
---
--- = Members
---
--- This structure describes the following features:
---
--- = Description
---
--- If the 'PhysicalDeviceMultiDrawFeaturesEXT' 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. 'PhysicalDeviceMultiDrawFeaturesEXT' /can/ also be used in
--- the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
---
--- == Valid Usage (Implicit)
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
+module Vulkan.Extensions.VK_EXT_multi_draw  ( cmdDrawMultiEXT
+                                            , cmdDrawMultiIndexedEXT
+                                            , MultiDrawInfoEXT(..)
+                                            , MultiDrawIndexedInfoEXT(..)
+                                            , PhysicalDeviceMultiDrawPropertiesEXT(..)
+                                            , PhysicalDeviceMultiDrawFeaturesEXT(..)
+                                            , EXT_MULTI_DRAW_SPEC_VERSION
+                                            , pattern EXT_MULTI_DRAW_SPEC_VERSION
+                                            , EXT_MULTI_DRAW_EXTENSION_NAME
+                                            , pattern EXT_MULTI_DRAW_EXTENSION_NAME
+                                            ) where
+
+import Vulkan.Internal.Utils (traceAroundEvent)
+import Control.Monad (unless)
+import Control.Monad.IO.Class (liftIO)
+import Foreign.Marshal.Alloc (allocaBytes)
+import Foreign.Marshal.Utils (with)
+import GHC.IO (throwIO)
+import GHC.Ptr (nullFunPtr)
+import Foreign.Ptr (nullPtr)
+import Foreign.Ptr (plusPtr)
+import Control.Monad.Trans.Class (lift)
+import Control.Monad.Trans.Cont (evalContT)
+import qualified Data.Vector (imapM_)
+import qualified Data.Vector (length)
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (FromCStruct(..))
+import Vulkan.CStruct (ToCStruct)
+import Vulkan.CStruct (ToCStruct(..))
+import Vulkan.Zero (Zero(..))
+import Control.Monad.IO.Class (MonadIO)
+import Data.String (IsString)
+import Data.Typeable (Typeable)
+import Foreign.Storable (Storable)
+import Foreign.Storable (Storable(peek))
+import Foreign.Storable (Storable(poke))
+import qualified Foreign.Storable (Storable(..))
+import GHC.Generics (Generic)
+import GHC.IO.Exception (IOErrorType(..))
+import GHC.IO.Exception (IOException(..))
+import Data.Int (Int32)
+import Foreign.Ptr (FunPtr)
+import Foreign.Ptr (Ptr)
+import Data.Word (Word32)
+import Data.Kind (Type)
+import Control.Monad.Trans.Cont (ContT(..))
+import Data.Vector (Vector)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.NamedType ((:::))
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.Core10.Handles (CommandBuffer)
+import Vulkan.Core10.Handles (CommandBuffer(..))
+import Vulkan.Core10.Handles (CommandBuffer(CommandBuffer))
+import Vulkan.Core10.Handles (CommandBuffer_T)
+import Vulkan.Dynamic (DeviceCmds(pVkCmdDrawMultiEXT))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdDrawMultiIndexedEXT))
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT))
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdDrawMultiEXT
+  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Ptr MultiDrawInfoEXT -> Word32 -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Ptr MultiDrawInfoEXT -> Word32 -> Word32 -> Word32 -> IO ()
+
+-- | vkCmdDrawMultiEXT - Draw primitives
+--
+-- = Description
+--
+-- The number of draws recorded is @drawCount@, with each draw reading,
+-- sequentially, a @firstVertex@ and a @vertexCount@ from @pVertexInfo@.
+-- For each recorded draw, primitives are assembled as for
+-- 'Vulkan.Core10.CommandBufferBuilding.cmdDraw', and drawn @instanceCount@
+-- times with @instanceIndex@ starting with @firstInstance@ and
+-- sequentially for each instance.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdDrawMultiEXT-magFilter-04553# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
+--     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR',
+--     @reductionMode@ equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
+--     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-vkCmdDrawMultiEXT-magFilter-09598# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
+--     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR' and
+--     @reductionMode@ equal to either
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
+--     or
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
+--     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_MINMAX_BIT'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-mipmapMode-04770# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
+--     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR',
+--     @reductionMode@ equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
+--     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-vkCmdDrawMultiEXT-mipmapMode-09599# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
+--     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'
+--     and @reductionMode@ equal to either
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
+--     or
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
+--     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_MINMAX_BIT'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-unnormalizedCoordinates-09635# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the image view’s @levelCount@ and @layerCount@ /must/ be 1
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-08609# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the image view’s @viewType@ /must/ be
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D' or
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-08610# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the sampler /must/ not be used with any of the SPIR-V
+--     @OpImageSample*@ or @OpImageSparseSample*@ instructions with
+--     @ImplicitLod@, @Dref@ or @Proj@ in their name
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-08611# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the sampler /must/ not be used with any of the SPIR-V
+--     @OpImageSample*@ or @OpImageSparseSample*@ instructions that
+--     includes a LOD bias or any offset values
+--
+-- -   #VUID-vkCmdDrawMultiEXT-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-vkCmdDrawMultiEXT-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-vkCmdDrawMultiEXT-None-07888# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'
+--     descriptor is accessed using atomic operations as a result of this
+--     command, then the storage texel buffer’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-buffer-view-format-features format features>
+--     /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-02692# If a
+--     'Vulkan.Core10.Handles.ImageView' is sampled with
+--     'Vulkan.Core10.Enums.Filter.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.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-02693# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_filter_cubic VK_EXT_filter_cubic>
+--     extension is not enabled and any 'Vulkan.Core10.Handles.ImageView'
+--     is sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as a
+--     result of this command, it /must/ not have a
+--     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' of
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE', or
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-filterCubic-02694# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with
+--     'Vulkan.Core10.Enums.Filter.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-vkCmdDrawMultiEXT-filterCubicMinmax-02695# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with
+--     'Vulkan.Core10.Enums.Filter.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-vkCmdDrawMultiEXT-cubicRangeClamp-09212# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-cubicRangeClamp cubicRangeClamp>
+--     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
+--     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
+--     a result of this command /must/ not have a
+--     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
+--     equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-reductionMode-09213# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with a
+--     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
+--     equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
+--     as a result of this command /must/ sample with
+--     'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-selectableCubicWeights-09214# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-selectableCubicWeights selectableCubicWeights>
+--     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
+--     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
+--     a result of this command /must/ have
+--     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.SamplerCubicWeightsCreateInfoQCOM'::@cubicWeights@
+--     equal to
+--     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-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-vkCmdDrawMultiEXT-OpTypeImage-07027# For any
+--     'Vulkan.Core10.Handles.ImageView' being written as a storage image
+--     where the image format field of the @OpTypeImage@ is @Unknown@, the
+--     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_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-OpTypeImage-07028# For any
+--     'Vulkan.Core10.Handles.ImageView' being read as a storage image
+--     where the image format field of the @OpTypeImage@ is @Unknown@, the
+--     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_STORAGE_READ_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-OpTypeImage-07029# For any
+--     'Vulkan.Core10.Handles.BufferView' being written as a storage texel
+--     buffer where the image format field of the @OpTypeImage@ is
+--     @Unknown@, the view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
+--     /must/ contain
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-OpTypeImage-07030# Any
+--     'Vulkan.Core10.Handles.BufferView' being read as a storage texel
+--     buffer where the image format field of the @OpTypeImage@ is
+--     @Unknown@ then the view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
+--     /must/ contain
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-08600# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
+--     was created with a pipeline layout and statically uses a set /n/, a
+--     descriptor set /must/ have been bound to /n/ at the same pipeline
+--     bind point, with layouts compatible for set /n/ with the layout(s)
+--     used to create the shader, as described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptors-compatibility ???>
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-08601# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
+--     was created with a pipeline layout or specified push constant ranges
+--     and statically uses a push constant value, that value /must/ have
+--     been set for the same pipeline bind point, with push constant ranges
+--     that are
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptors-compatibility compatible>
+--     with the push constant range used to create the shader
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-10068# For each array of resources that
+--     is used by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
+--     the indices used to access members of the array /must/ be less than
+--     the descriptor count for the identified binding in the descriptor
+--     sets used by this command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-08114# Descriptors in each bound
+--     descriptor set, specified via
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
+--     be valid if they are accessed as described by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
+--     by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
+--     point used by this command and the bound
+--     'Vulkan.Core10.Handles.Pipeline' was not created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-imageLayout-00344# If an image descriptor is
+--     accessed by a shader, the
+--     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' /must/ match the
+--     subresource accessible from the 'Vulkan.Core10.Handles.ImageView' 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>
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-08115# If the descriptors used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     were specified via
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', the
+--     bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     without
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-08116# Descriptors in bound descriptor
+--     buffers, specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     /must/ be valid if they are dynamically used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
+--     was created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-08604# Descriptors in bound descriptor
+--     buffers, specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     /must/ be valid if they are dynamically used by any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     to the pipeline bind point used by this command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-08117# If the descriptors used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     were specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-08119# If a descriptor is dynamically
+--     used with a 'Vulkan.Core10.Handles.Pipeline' created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     the descriptor memory /must/ be resident
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-08605# If a descriptor is dynamically
+--     used with a 'Vulkan.Extensions.Handles.ShaderEXT' created with a
+--     'Vulkan.Core10.Handles.DescriptorSetLayout' that was created with
+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     the descriptor memory /must/ be resident
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-08606# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject>
+--     feature is not enabled, a valid pipeline /must/ be bound to the
+--     pipeline bind point used by this command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-08608# If a pipeline is bound to the
+--     pipeline bind point used by this command, there /must/ not have been
+--     any calls to dynamic state setting commands for any state specified
+--     statically in the 'Vulkan.Core10.Handles.Pipeline' object bound to
+--     the pipeline bind point used by this command, since that pipeline
+--     was bound
+--
+-- -   #VUID-vkCmdDrawMultiEXT-uniformBuffers-06935# If any stage of the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command accesses a uniform buffer, and that stage
+--     was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @uniformBuffers@, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /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-vkCmdDrawMultiEXT-None-08612# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, and any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     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-vkCmdDrawMultiEXT-storageBuffers-06936# If any stage of the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command accesses a storage buffer, and that stage
+--     was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @storageBuffers@, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /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-vkCmdDrawMultiEXT-None-08613# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, and any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     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-vkCmdDrawMultiEXT-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
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shaders>
+--     /must/ not be a protected resource
+--
+-- -   #VUID-vkCmdDrawMultiEXT-viewType-07752# If a
+--     'Vulkan.Core10.Handles.ImageView' is accessed as a result of this
+--     command, then the image view’s @viewType@ /must/ match the @Dim@
+--     operand of the @OpTypeImage@ as described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-image-dimensions ???>
+--
+-- -   #VUID-vkCmdDrawMultiEXT-format-07753# If a
+--     'Vulkan.Core10.Handles.ImageView' or
+--     'Vulkan.Core10.Handles.BufferView' is accessed as a result of this
+--     command, then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-numericformat numeric type>
+--     of the view’s @format@ and the @Sampled@ @Type@ operand of the
+--     @OpTypeImage@ /must/ match
+--
+-- -   #VUID-vkCmdDrawMultiEXT-OpImageWrite-08795# If a
+--     'Vulkan.Core10.Handles.ImageView' created with a format other than
+--     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM' 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-vkCmdDrawMultiEXT-OpImageWrite-08796# If a
+--     'Vulkan.Core10.Handles.ImageView' created with the format
+--     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM' is accessed using
+--     @OpImageWrite@ as a result of this command, then the @Type@ of the
+--     @Texel@ operand of that instruction /must/ have four components
+--
+-- -   #VUID-vkCmdDrawMultiEXT-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-vkCmdDrawMultiEXT-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-vkCmdDrawMultiEXT-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-vkCmdDrawMultiEXT-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-vkCmdDrawMultiEXT-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-vkCmdDrawMultiEXT-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-vkCmdDrawMultiEXT-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-vkCmdDrawMultiEXT-OpImageSampleWeightedQCOM-06971# If
+--     @OpImageSampleWeightedQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-OpImageSampleWeightedQCOM-06972# If
+--     @OpImageSampleWeightedQCOM@ uses a 'Vulkan.Core10.Handles.ImageView'
+--     as a sample weight image 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-OpImageBoxFilterQCOM-06973# If
+--     @OpImageBoxFilterQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-OpImageBlockMatchSSDQCOM-06974# If
+--     @OpImageBlockMatchSSDQCOM@ is used to read from an
+--     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
+--     or
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_SXD_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-OpImageBlockMatchSADQCOM-12420# If
+--     @OpImageBlockMatchSADQCOM@ is used to read from an
+--     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
+--     or
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_SXD_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-OpImageBlockMatchSADQCOM-06976# If
+--     @OpImageBlockMatchSADQCOM@ or OpImageBlockMatchSSDQCOM is used to
+--     read from a reference image as result of this command, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-blockMatchExtendedClampToEdge blockMatchExtendedClampToEdge>
+--     feature is not enabled or the /input/ sampler was not created with
+--     both @addressModeU@ and @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--     then the specified reference coordinates /must/ not fail
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
+--
+-- -   #VUID-vkCmdDrawMultiEXT-OpImageSampleWeightedQCOM-06977# If
+--     @OpImageSampleWeightedQCOM@, @OpImageBoxFilterQCOM@,
+--     @OpImageBlockMatchWindowSSDQCOM@, @OpImageBlockMatchWindowSADQCOM@,
+--     @OpImageBlockMatchGatherSSDQCOM@, @OpImageBlockMatchGatherSADQCOM@,
+--     @OpImageBlockMatchSSDQCOM@, or @OpImageBlockMatchSADQCOM@ uses a
+--     'Vulkan.Core10.Handles.Sampler' as a result of this command, then
+--     the sampler /must/ have been created with
+--     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-OpImageSampleWeightedQCOM-06978# If any
+--     command other than @OpImageSampleWeightedQCOM@,
+--     @OpImageBoxFilterQCOM@, @OpImageBlockMatchWindowSSDQCOM@,
+--     @OpImageBlockMatchWindowSADQCOM@, @OpImageBlockMatchGatherSSDQCOM@,
+--     @OpImageBlockMatchGatherSADQCOM@, @OpImageBlockMatchSSDQCOM@, or
+--     @OpImageBlockMatchSADQCOM@ uses a 'Vulkan.Core10.Handles.Sampler' as
+--     a result of this command, then the sampler /must/ not have been
+--     created with
+--     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-OpImageBlockMatchWindow-09215# If a
+--     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     instruction is used to read from an
+--     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-OpImageBlockMatchWindow-09216# If a
+--     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     instruction is used to read from an
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the image view’s format /must/ be a single-component format
+--
+-- -   #VUID-vkCmdDrawMultiEXT-OpImageBlockMatchWindow-09217# If a
+--     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     read from a reference image as result of this command, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-blockMatchExtendedClampToEdge blockMatchExtendedClampToEdge>
+--     feature is not enabled or the /input/ sampler was not created with
+--     both @addressModeU@ and @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--     then the specified reference coordinates /must/ not fail
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
+--
+-- -   #VUID-vkCmdDrawMultiEXT-OpImageBlockMatchWindow-12421# If a
+--     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     instruction uses a 'Vulkan.Core10.Handles.Sampler' as a result of
+--     this command, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-blockMatchExtendedClampToEdge blockMatchExtendedClampToEdge>
+--     is not enabled, the /input/ sampler /must/ not have been created
+--     with either @addressModeU@ or @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-addressModeU-12422# If a
+--     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     instruction uses a 'Vulkan.Core10.Handles.Sampler' as a result of
+--     this command, and the /input/ sampler was created with either
+--     @addressModeU@ or @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE',
+--     then the sampler /must/ have been created with both @addressModeU@
+--     and @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-07288# Any shader invocation executed
+--     by this command /must/
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-termination terminate>
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-09600# If a descriptor with type equal
+--     to any of
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',
+--     or
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'
+--     is accessed as a result of this command, all image subresources
+--     identified by that descriptor /must/ be in the image layout
+--     identified when the descriptor was written
+--
+-- -   #VUID-vkCmdDrawMultiEXT-micromap-11636# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command through an
+--     @OpRayQueryProceedKHR@ operation , the @VK_EXT_opacity_micromap@
+--     extension is not enabled, and the acceleration structure is built
+--     using geometry with a
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapKHR'
+--     structure included in its @pNext@ chain, the shader /must/ have
+--     specified a @OpacityMicromapIdKHR@ execution mode with its
+--     specialization constant operand equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-micromap-11637# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command and the
+--     acceleration structure was constructed through deserialization, all
+--     micromap arrays referenced by the acceleration structure that were
+--     not replaced by an acceleration structure update command /must/ have
+--     been deserialized using the serialized data of the corresponding
+--     micromaps used to originally build the acceleration structure prior
+--     to the execution of this command on the device
+--
+-- -   #VUID-vkCmdDrawMultiEXT-micromap-11638# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command and the
+--     acceleration structure is built using geometry with an @indexBuffer@
+--     containing both
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.OpacityMicromapSpecialIndexKHR'
+--     values and indices into an associated micromap array, any
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command /must/ not have been created with @flags@ that
+--     includes
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_KHR'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-micromap-11639# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command and the
+--     acceleration structure is built using geometry with an @indexBuffer@
+--     containing both
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.OpacityMicromapSpecialIndexKHR'
+--     values and indices into an associated micromap array, any
+--     'Vulkan.Extensions.Handles.ShaderEXT' that accessed the descriptor
+--     /must/ not have been created with @flags@ that includes
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-commandBuffer-10746# The
+--     'Vulkan.Core10.Handles.DeviceMemory' object allocated from a
+--     'Vulkan.Core10.DeviceInitialization.MemoryHeap' with the
+--     'Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_TILE_MEMORY_BIT_QCOM'
+--     property that is bound to a resource accessed as a result of this
+--     command /must/ be the active
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-bind-tile-memory bound tile memory object>
+--     in @commandBuffer@
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-10678# If this command is recorded
+--     inside a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-tile-shading tile shading render pass>
+--     instance, the stages corresponding to the pipeline bind point used
+--     by this command /must/ only include
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT',
+--     and\/or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-10679# If this command is recorded
+--     where
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model>
+--     is enabled, there /must/ be no access to any image while the image
+--     was be transitioned to the
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
+--     layout
+--
+-- -   #VUID-vkCmdDrawMultiEXT-pDescription-09900# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the
+--     underlying 'Vulkan.Extensions.Handles.TensorARM' object /must/ have
+--     been created with the
+--     'Vulkan.Extensions.VK_ARM_tensors.TENSOR_USAGE_SHADER_BIT_ARM' usage
+--     flag set
+--
+-- -   #VUID-vkCmdDrawMultiEXT-dimensionCount-09905# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the @Rank@
+--     of the @OpTypeTensorARM@ of the tensor resource variable /must/ be
+--     equal to the @dimensionCount@ provided via
+--     'Vulkan.Extensions.VK_ARM_tensors.TensorCreateInfoARM'::@pDescription@
+--     when creating the underlying 'Vulkan.Extensions.Handles.TensorARM'
+--     object
+--
+-- -   #VUID-vkCmdDrawMultiEXT-OpTypeTensorARM-09906# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the element
+--     type of the @OpTypeTensorARM@ of the tensor resource variable /must/
+--     be
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-tensor-formats compatible>
+--     with the 'Vulkan.Core10.Enums.Format.Format' of the
+--     'Vulkan.Extensions.Handles.TensorViewARM' used for the access
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-11297# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses a @OpTypeStruct@ decorated with @Block@ or
+--     @BufferBlock@ using that mapping, the calculated offset for the
+--     resource heap /must/ be a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-bufferDescriptorAlignment bufferDescriptorAlignment>
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-11298# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses an @OpTypeImage@ or @OpTypeSampledImage@ using
+--     that mapping, the calculated offset for the resource heap /must/ be
+--     a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-imageDescriptorAlignment imageDescriptorAlignment>
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-11299# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses an @OpTypeSampler@ or @OpTypeSampledImage@
+--     using that mapping, the calculated offset for the sampler heap
+--     /must/ be a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-samplerDescriptorAlignment samplerDescriptorAlignment>
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-11397# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses an @OpTypeTensorARM@ using that mapping, the
+--     calculated offset for the resource heap /must/ be a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-tensorDescriptorAlignment tensorDescriptorAlignment>
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-11300# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a
+--     multiple of 4
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-11301# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' backed by physical
+--     memory at every offset specified by each mapping
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-11302# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-11304# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a
+--     multiple of 8
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-11305# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' backed by physical
+--     memory at every offset specified by each mapping
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-11306# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address pointed to by the address in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-11308# For each
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps descriptor heap>
+--     that is statically used by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
+--     either directly or via a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>,
+--     a valid descriptor heap /must/ be bound
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-11309# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     was created as a 'Vulkan.Extensions.Handles.ShaderEXT' with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag or as part of a pipeline with the
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag, execution of this command /must/ not result in any descriptor
+--     read accessing data outside of the user range of the respective heap
+--     bound by @vkCmdBind*HeapEXT@ commands
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-11372# If any stage of the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command accesses a uniform buffer or uniform
+--     texel buffer through a descriptor in the bound resource heap, that
+--     stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @uniformBuffers@, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /must/ not access values outside
+--     of the range of the descriptor specified via
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+--     when the descriptor was written
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-11373# If any stage of the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command accesses a storage buffer or storage
+--     texel buffer through a descriptor in the bound resource heap, that
+--     stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @storageBuffers@, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /must/ not access values outside
+--     of the range of the descriptor specified by
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+--     when the descriptor was written
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-11374# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, and any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     to the pipeline bind point used by this command accesses a uniform
+--     buffer, uniform texel buffer, storage buffer, or storage texel
+--     buffer, that shader /must/ not access values outside of the range of
+--     the buffer as specified by
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+--     when the descriptor was written
+--
+-- -   #VUID-vkCmdDrawMultiEXT-pBindInfo-11375# If any
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     uses an embedded sampler via a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>,
+--     the value of @pBindInfo->reservedRangeSize@ set for
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.cmdBindSamplerHeapEXT'
+--     /must/ be greater than or equal to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minSamplerHeapReservedRangeWithEmbedded minSamplerHeapReservedRangeWithEmbedded>
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-11376# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     was created as a 'Vulkan.Extensions.Handles.ShaderEXT' with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag or as part of a pipeline with the
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag, and that shader statically uses a push constant value, that
+--     value /must/ have been set by
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.cmdPushDataEXT'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-11398# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_DATA_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_DATA_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_RESOURCE_HEAP_DATA_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the access
+--     /must/ not be
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-execution-memory-access-bounds out of bounds>
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-11437# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the buffer from
+--     which the address in push data was queried /must/ have been created
+--     with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-11438# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a uniform buffer using that mapping, the
+--     address that the uniform buffer is mapped to /must/ have been
+--     queried from a buffer created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-11441# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a uniform buffer using that mapping, the
+--     address that the uniform buffer is mapped to /must/ be aligned to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minUniformBufferOffsetAlignment minUniformBufferOffsetAlignment>
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-11439# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a storage buffer using that mapping, the
+--     address that the storage buffer is mapped to /must/ have been
+--     queried from a buffer created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_STORAGE_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-11442# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a storage buffer using that mapping, the
+--     address that the storage buffer is mapped to /must/ be aligned to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minStorageBufferOffsetAlignment minStorageBufferOffsetAlignment>
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-11485# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses an acceleration structure using that mapping,
+--     the address that the acceleration structure is mapped to /must/ be
+--     an acceleration structure address retrieved from a
+--     'Vulkan.Extensions.Handles.AccelerationStructureKHR' object via
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.getAccelerationStructureDeviceAddressKHR'
+--     or handle retrieved from a
+--     'Vulkan.Extensions.Handles.AccelerationStructureNV' object via
+--     'Vulkan.Extensions.VK_NV_ray_tracing.getAccelerationStructureHandleNV'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-index-11450# If a shader uses a sampler
+--     descriptor to sample an image as a result of this command, and that
+--     sampler descriptor uses a custom border color with an index defined
+--     by
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.SamplerCustomBorderColorIndexCreateInfoEXT',
+--     the value of
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.SamplerCustomBorderColorIndexCreateInfoEXT'::@index@
+--     /must/ have been registered before this command was recorded, and
+--     still be registered during the sampling operation, with an
+--     identically defined color
+--
+-- -   #VUID-vkCmdDrawMultiEXT-protectedNoFault-11455# If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, a pipeline is bound to the pipeline bind point
+--     used by this command, or a shader is bound to a shader stage used by
+--     this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     the address that the resource is mapped to /must/ have been queried
+--     from a buffer created without the
+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT'
+--     create flag set
+--
+-- -   #VUID-vkCmdDrawMultiEXT-protectedNoFault-11456# If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, a pipeline is bound to the pipeline bind point
+--     used by this command, or a shader is bound to a shader stage used by
+--     this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     the address of the indirect memory /must/ have been queried from a
+--     buffer created without the
+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT'
+--     create flag set
+--
+-- -   #VUID-vkCmdDrawMultiEXT-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.GraphicsPipeline.GraphicsPipelineCreateInfo'
+--     structure specified when creating the
+--     'Vulkan.Core10.Handles.Pipeline' bound to
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-subpass-02685# The subpass index of the
+--     current render pass /must/ be equal to the @subpass@ member of the
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'
+--     structure specified when creating the
+--     'Vulkan.Core10.Handles.Pipeline' bound to
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-OpTypeImage-07468# If any shader executed by
+--     this pipeline accesses an @OpTypeImage@ variable with a @Dim@
+--     operand of @SubpassData@, it /must/ be decorated with an
+--     @InputAttachmentIndex@ that corresponds to a valid input attachment
+--     in the current subpass
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-07469# Input attachment views accessed
+--     in a subpass /must/ be created with the same
+--     'Vulkan.Core10.Enums.Format.Format' as the corresponding subpass
+--     definition, and be created with a 'Vulkan.Core10.Handles.ImageView'
+--     that is compatible with the attachment referenced by the subpass\'
+--     @pInputAttachments@[@InputAttachmentIndex@] in the bound
+--     'Vulkan.Core10.Handles.Framebuffer' as specified by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#compatibility-inputattachment Fragment Input Attachment Compatibility>
+--
+-- -   #VUID-vkCmdDrawMultiEXT-pDepthInputAttachmentIndex-09595# Input
+--     attachment views accessed in a dynamic render pass with a
+--     @InputAttachmentIndex@ referenced by
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo',
+--     or no @InputAttachmentIndex@ if
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pDepthInputAttachmentIndex@
+--     or
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pStencilInputAttachmentIndex@
+--     are @NULL@, /must/ be created with a
+--     'Vulkan.Core10.Handles.ImageView' that is compatible with the
+--     corresponding color, depth, or stencil attachment in
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-pDepthInputAttachmentIndex-09596# Input
+--     attachment views accessed in a dynamic render pass via a shader
+--     object /must/ have an @InputAttachmentIndex@ if both
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pDepthInputAttachmentIndex@
+--     and
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pStencilInputAttachmentIndex@
+--     are non-@NULL@
+--
+-- -   #VUID-vkCmdDrawMultiEXT-InputAttachmentIndex-09597# If an input
+--     attachment view accessed in a dynamic render pass via a shader
+--     object has an @InputAttachmentIndex@, the @InputAttachmentIndex@
+--     /must/ match an index in
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-06537# Memory backing image
+--     subresources used as attachments in the current render pass /must/
+--     not be written in any way other than as an attachment by this
+--     command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-10795# If a color attachment is written
+--     by any prior command in this subpass or by the load, store, or
+--     resolve operations for this subpass, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT' on
+--     that attachment, it /must/ not be accessed in any way other than as
+--     an attachment by this command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-10796# If a depth attachment is written
+--     by any prior command in this subpass or by the load, store, or
+--     resolve operations for this subpass, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' on
+--     that attachment, it /must/ not be accessed in any way other than as
+--     an attachment by this command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-10797# If a stencil attachment is
+--     written by any prior command in this subpass or by the load, store,
+--     or resolve operations for this subpass, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
+--     on that attachment, it /must/ not be accessed in any way other than
+--     as an attachment by this command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-12338# If a color attachment is read in
+--     this command in any way other than as an attachment, or has been
+--     read by any prior command in this subpass as a non-attachment, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT' on
+--     that attachment, the color attachment /must/ not be written to by
+--     this command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-12339# If a depth attachment is read in
+--     this command in any way other than as an attachment, or has been
+--     read by any prior command in this subpass as a non-attachment, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' on
+--     that attachment, the depth attachment /must/ not be written to by
+--     this command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-12340# If a stencil attachment is read
+--     in this command in any way other than as an attachment, or has been
+--     read by any prior command in this subpass as a non-attachment, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
+--     on that attachment, the stencil attachment /must/ not be written to
+--     by this command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-09003# If an attachment is written by
+--     any prior command in this subpass or by the load, store, or resolve
+--     operations for this subpass, it /must/ not be accessed in any way
+--     other than as an attachment, storage image, or sampled image by this
+--     command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-06886# If the current render pass
+--     instance uses a depth\/stencil attachment with a read-only layout
+--     for the depth aspect,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-depth-write depth writes>
+--     /must/ be disabled
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-06887# If the current render pass
+--     instance uses a depth\/stencil attachment with a read-only layout
+--     for the stencil aspect, both front and back @writeMask@ are not
+--     zero, and stencil test is enabled,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-stencil all stencil ops>
+--     /must/ be 'Vulkan.Core10.Enums.StencilOp.STENCIL_OP_KEEP'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-07831# If the bound graphics pipeline
+--     state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT' dynamic
+--     state enabled then
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetViewport' /must/ have
+--     been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-07832# If the bound graphics pipeline
+--     state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR' dynamic
+--     state enabled then
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetScissor' /must/ have been
+--     called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-08617# If a shader object is bound to
+--     any graphics stage or a graphics pipeline is bound which was created
+--     with the 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_WIDTH'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line topology class, then
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth' /must/ have
+--     been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-07834# If a shader object is bound to
+--     any graphics stage or a graphics pipeline is bound which was created
+--     with the 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @depthBiasEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBias' or
+--     'Vulkan.Extensions.VK_EXT_depth_bias_control.cmdSetDepthBias2EXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-07835# If a shader object is bound to
+--     the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_BLEND_CONSTANTS'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and an active color
+--     attachment
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @blendEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE' with a
+--     blend equations where any
+--     'Vulkan.Core10.Enums.BlendFactor.BlendFactor' member is
+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_COLOR',
+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR',
+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_ALPHA', or
+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA',
+--     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetBlendConstants'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-07836# If a shader object is bound to
+--     any graphics stage or a graphics pipeline is bound which was created
+--     with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @depthBoundsTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBounds' /must/
+--     have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-07837# If a shader object is bound to
+--     any graphics stage or a graphics pipeline is bound which was created
+--     with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_COMPARE_MASK'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilCompareMask'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-07838# If a shader object is bound to
+--     any graphics stage or a graphics pipeline is bound which was created
+--     with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_WRITE_MASK'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilWriteMask'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-07839# If a shader object is bound to
+--     any graphics stage or a graphics pipeline is bound which was created
+--     with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_REFERENCE'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of and @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilReference'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-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-vkCmdDrawMultiEXT-sampleLocationsEnable-02689# If the bound
+--     graphics pipeline was created with
+--     'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@
+--     set to 'Vulkan.Core10.FundamentalTypes.TRUE', then the active depth
+--     attachment /must/ have been created with the
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'
+--     bit set
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-07634# If the @VK_EXT_sample_locations@
+--     extension is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-06666# If the @VK_EXT_sample_locations@
+--     extension is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-07840# If a shader object is bound to
+--     any graphics stage or a graphics pipeline is bound which was created
+--     with the 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CULL_MODE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetCullMode'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-07841# If a shader object is bound to
+--     any graphics stage or a graphics pipeline is bound which was created
+--     with the 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRONT_FACE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetFrontFace'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-07843# If a shader object is bound to
+--     any graphics stage or a graphics pipeline is bound which was created
+--     with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_TEST_ENABLE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE',
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthTestEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-07844# If a shader object is bound to
+--     any graphics stage or a graphics pipeline is bound which was created
+--     with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @depthTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthWriteEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-07845# If a shader object is bound to
+--     any graphics stage or a graphics pipeline is bound which was created
+--     with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_COMPARE_OP'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @depthTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthCompareOp'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-07846# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthBounds depthBounds>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthBoundsTestEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-07847# If a shader object is bound to
+--     any graphics stage or a graphics pipeline is bound which was created
+--     with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_TEST_ENABLE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilTestEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-07848# If a shader object is bound to
+--     any graphics stage or a graphics pipeline is bound which was created
+--     with the 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_OP'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilOp'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-viewportCount-03417# If a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
+--     dynamic state enabled, and the state is not inherited, then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-scissorCount-03418# If a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
+--     dynamic state enabled, and the state is not inherited, then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing
+--
+-- -   #VUID-vkCmdDrawMultiEXT-viewportCount-03419# If a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     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, and the state is not inherited, then 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-vkCmdDrawMultiEXT-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-vkCmdDrawMultiEXT-viewportCount-04138# If the
+--     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which 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 state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @viewportWScalingEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.cmdSetViewportWScalingNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-08636# If the
+--     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which 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 state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @viewportWScalingEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', 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-vkCmdDrawMultiEXT-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-vkCmdDrawMultiEXT-shadingRateImage-09233# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV'
+--     and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetCoarseSampleOrderNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-shadingRateImage-09234# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which 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 state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @shadingRateImageEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetViewportShadingRatePaletteNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-08637# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which 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 state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @shadingRateImageEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', 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-vkCmdDrawMultiEXT-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
+--     'Vulkan.Core10.GraphicsPipeline.PipelineViewportStateCreateInfo',
+--     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-vkCmdDrawMultiEXT-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
+--     'Vulkan.Core10.GraphicsPipeline.PipelineViewportStateCreateInfo',
+--     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-vkCmdDrawMultiEXT-None-07878# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-exclusiveScissor exclusiveScissor>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-07879# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-exclusiveScissor exclusiveScissor>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV'
+--     dynamic state enabled, and the most recent call to
+--     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorEnableNV'
+--     in the current command buffer set any element of
+--     @pExclusiveScissorEnables@ to 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then
+--     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-04876# If a shader object is bound to
+--     any graphics stage or a graphics pipeline is bound which 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 and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-04877# If a shader object is bound to
+--     any graphics stage or a graphics pipeline is bound which was created
+--     with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-logicOp-04878# If a shader object is bound
+--     to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @logicOpEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetLogicOpEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-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-vkCmdDrawMultiEXT-primitiveFragmentShadingRateWithMultipleViewports-08642#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
+--     limit is not supported, and any shader object bound to a graphics
+--     stage writes 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-vkCmdDrawMultiEXT-blendEnable-04727# If a shader object is
+--     bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then for each color
+--     attachment, 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 corresponding
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @blendEnable@ /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-08644# If a shader object is bound to
+--     any graphics stage or a graphics pipeline is bound, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and none of the following is
+--     enabled:
+--
+--     -   the @VK_AMD_mixed_attachment_samples@ extension
+--
+--     -   the @VK_NV_framebuffer_mixed_samples@ extension
+--
+--     -   the
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
+--         feature
+--
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizationSamples@ /must/ be the same as the current color
+--     and\/or depth\/stencil attachments
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-08876# If a shader object is bound to
+--     any graphics stage, the current render pass instance /must/ have
+--     been begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-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-vkCmdDrawMultiEXT-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-vkCmdDrawMultiEXT-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-vkCmdDrawMultiEXT-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-vkCmdDrawMultiEXT-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-vkCmdDrawMultiEXT-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-vkCmdDrawMultiEXT-viewMask-06178# If the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the 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-vkCmdDrawMultiEXT-colorAttachmentCount-06179# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled and the current render pass instance was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the 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-vkCmdDrawMultiEXT-dynamicRenderingUnusedAttachments-08910# If
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and 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 an @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 bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawMultiEXT-dynamicRenderingUnusedAttachments-08912# If
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and 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 an @imageView@ equal to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have the
+--     corresponding element of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
+--     used to create the bound pipeline equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-dynamicRenderingUnusedAttachments-08911# If
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled, and 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 an @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 bound graphics pipeline, or the corresponding
+--     element of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@,
+--     if it exists, /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-colorAttachmentCount-09362# If 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@
+--     equal to @1@, there is no shader object bound to any graphics stage,
+--     and a color attachment with a resolve mode of
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID',
+--     each element of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
+--     array with a @resolveImageView@ not equal to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
+--     with an image created with a
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value equal to the
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value used to create the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-09363# If there is no shader object
+--     bound to any graphics stage, the current render pass instance was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and a
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
+--     equal to @1@, and a color attachment with a resolve mode of
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID',
+--     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 an image created with a
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value equal to the
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value used to create the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-09364# If the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there is no shader object bound to any graphics stage, and the bound
+--     graphics pipeline was created with a non-zero
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value and with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
+--     /must/ have set the blend enable to
+--     'Vulkan.Core10.FundamentalTypes.FALSE' prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-09365# If the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there is no shader object bound to any graphics stage, and the bound
+--     graphics pipeline was created with a non-zero
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value and with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     /must/ have set @rasterizationSamples@ to
+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' prior
+--     to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-09366# If there is a shader object
+--     bound to any graphics stage, and the current render pass includes a
+--     color attachment that uses the
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID'
+--     resolve mode, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
+--     /must/ have set blend enable to
+--     'Vulkan.Core10.FundamentalTypes.FALSE' prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-rasterizationSamples-09367# If there is a
+--     shader object bound to any graphics stage, and the current render
+--     pass includes a color attachment that uses the
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID'
+--     resolve mode, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     /must/ have set @rasterizationSamples@ to
+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' prior
+--     to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-09368# If the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there is no shader object bound to any graphics stage, and the bound
+--     graphics pipeline was created with a non-zero
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value and with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     /must/ have set @pFragmentSize->width@ to @1@ prior to this drawing
+--     command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-09369# If the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there is no shader object bound to any graphics stage, and the bound
+--     graphics pipeline was created with a non-zero
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value and with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     /must/ have set @pFragmentSize->height@ to @1@ prior to this drawing
+--     command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-pFragmentSize-09370# If there is a shader
+--     object bound to any graphics stage, and the current render pass
+--     includes a color attachment that uses the
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID'
+--     resolve mode, then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     /must/ have set @pFragmentSize->width@ to @1@ prior to this drawing
+--     command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-pFragmentSize-09371# If there is a shader
+--     object bound to any graphics stage, and the current render pass
+--     includes a color attachment that uses the
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID'
+--     resolve mode, then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     /must/ have set @pFragmentSize->height@ to @1@ prior to this drawing
+--     command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-07749# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
+--     feature is enabled, a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-attachmentCount-07750# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
+--     feature is enabled, a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then the @attachmentCount@
+--     parameter of most recent call to
+--     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
+--     in the current command buffer /must/ be greater than or equal to the
+--     number of active color attachments
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-07751# If the
+--     @VK_EXT_discard_rectangles@ extension is enabled, a graphics
+--     pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_EXT'
+--     dynamic state enabled and the @pNext@ chain of
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo' included
+--     a
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'
+--     structure, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @discardRectangleEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command for each
+--     discard rectangle in
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'::@discardRectangleCount@
+--
+-- -   #VUID-vkCmdDrawMultiEXT-rasterizerDiscardEnable-09236# If the
+--     @VK_EXT_discard_rectangles@ extension is enabled, a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_EXT'
+--     dynamic state enabled and the @pNext@ chain of
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo' did not
+--     include a
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'
+--     structure, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @discardRectangleEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command for each
+--     discard rectangle in
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.PhysicalDeviceDiscardRectanglePropertiesEXT'::@maxDiscardRectangles@
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-07880# If the
+--     @VK_EXT_discard_rectangles@ extension is enabled, a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-07881# If the
+--     @VK_EXT_discard_rectangles@ extension is enabled, a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @discardRectangleEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleModeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-dynamicRenderingUnusedAttachments-08913# If
+--     the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
+--     used to create the bound graphics pipeline /must/ be equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-dynamicRenderingUnusedAttachments-08914# If
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->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 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->imageView@
+--
+-- -   #VUID-vkCmdDrawMultiEXT-dynamicRenderingUnusedAttachments-08915# If
+--     the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
+--     used to create the bound graphics pipeline was not equal to the
+--     'Vulkan.Core10.Enums.Format.Format' used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@,
+--     the value of the format /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-dynamicRenderingUnusedAttachments-08916# If
+--     the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
+--     used to create the bound graphics pipeline /must/ be equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-dynamicRenderingUnusedAttachments-08917# If
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->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 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->imageView@
+--
+-- -   #VUID-vkCmdDrawMultiEXT-dynamicRenderingUnusedAttachments-08918# If
+--     the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
+--     used to create the bound graphics pipeline was not equal to the
+--     'Vulkan.Core10.Enums.Format.Format' used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@,
+--     the value of the format /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-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_fragment_shading_rate.RenderingFragmentShadingRateAttachmentInfoKHR'::@imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the bound graphics
+--     pipeline /must/ have been created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-dynamicRenderingLocalRead-11797# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingLocalRead dynamicRenderingLocalRead>
+--     feature is enabled, the
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_LOCAL_READ_CONCURRENT_ACCESS_CONTROL_BIT_KHR'
+--     flag is specified, and an attachment is being used as a feedback
+--     loop as specified by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#rendering-attachment-input-attachment-feedback >,
+--     'Vulkan.Extensions.VK_KHR_maintenance10.RenderingAttachmentFlagsInfoKHR'::@flags@
+--     for that attachment /must/ include
+--     'Vulkan.Extensions.VK_KHR_maintenance10.RENDERING_ATTACHMENT_INPUT_ATTACHMENT_FEEDBACK_BIT_KHR'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-imageView-06184# If the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and
+--     'Vulkan.Extensions.VK_EXT_fragment_density_map.RenderingFragmentDensityMapAttachmentInfoEXT'::@imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the bound graphics
+--     pipeline /must/ have been created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-layers-10831# If the current render pass
+--     instance was created with
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE'
+--     or
+--     'Vulkan.Core10.Enums.RenderPassCreateFlagBits.RENDER_PASS_CREATE_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE',
+--     and the bound graphics pipeline was created with
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE',
+--     then the current render pass instance /must/ have a @layers@ value
+--     less than or equal to
+--     'Vulkan.Extensions.VK_VALVE_fragment_density_map_layered.PipelineFragmentDensityMapLayeredCreateInfoVALVE'::@maxFragmentDensityMapLayers@
+--
+-- -   #VUID-vkCmdDrawMultiEXT-colorAttachmentCount-06185# If the bound
+--     pipeline was created with a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.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_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     used to create the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawMultiEXT-pDepthAttachment-06186# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the bound pipeline was created with a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     structure, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
+--     @depthStencilAttachmentSamples@ member of
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     used to create the bound graphics pipeline /must/ be equal to the
+--     sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--
+-- -   #VUID-vkCmdDrawMultiEXT-pStencilAttachment-06187# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the bound pipeline was created with a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     structure, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
+--     @depthStencilAttachmentSamples@ member of
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     used to create the bound graphics pipeline /must/ be equal to the
+--     sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--
+-- -   #VUID-vkCmdDrawMultiEXT-multisampledRenderToSingleSampled-07285# If
+--     the bound pipeline was created without a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     structure, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
+--     feature is not enabled, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, 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 @rasterizationSamples@ for
+--     the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawMultiEXT-multisampledRenderToSingleSampled-07286# If
+--     the bound pipeline was created without a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     structure, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
+--     feature is not enabled, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     @rasterizationSamples@ for the bound graphics pipeline /must/ be
+--     equal to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--
+-- -   #VUID-vkCmdDrawMultiEXT-multisampledRenderToSingleSampled-07287# If
+--     the bound pipeline was created without a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     structure, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
+--     feature is not enabled, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     @rasterizationSamples@ for the bound graphics pipeline /must/ be
+--     equal to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--
+-- -   #VUID-vkCmdDrawMultiEXT-pNext-07935# If this command is called
+--     inside a render pass instance started with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     and the @pNext@ chain of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'
+--     includes a
+--     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'
+--     structure with @multisampledRenderToSingleSampledEnable@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then the value of
+--     @rasterizationSamples@ for the bound graphics pipeline /must/ be
+--     equal to
+--     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'::@rasterizationSamples@
+--
+-- -   #VUID-vkCmdDrawMultiEXT-renderPass-06198# If the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the bound pipeline /must/ have been created with a
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'::@renderPass@
+--     equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-pColorAttachments-08963# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, there is a
+--     graphics pipeline bound with a fragment shader that statically
+--     writes to a color attachment, the color write mask is not zero,
+--     color writes are enabled, and the corresponding element of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     corresponding element of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-pColorAttachments-11539# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, there is a graphics
+--     pipeline bound with a fragment shader that statically writes to a
+--     color attachment, the color write mask is not zero, color writes are
+--     enabled, and the corresponding element of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     corresponding element of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-pDepthAttachment-08964# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, there is a
+--     graphics pipeline bound, depth test is enabled, and the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-pDepthAttachment-11540# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, there is a graphics
+--     pipeline bound, depth test is enabled, and the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-pStencilAttachment-08965# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, there is a
+--     graphics pipeline bound, stencil test is enabled and the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-pStencilAttachment-11860# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, there is a graphics
+--     pipeline bound, stencil test is enabled and the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-flags-10582# If the current render pass
+--     instance was begun with a
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     call in @commandBuffer@, its
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@flags@
+--     parameter /must/ not have
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT'
+--     set unless
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_CONTENTS_INLINE_BIT_KHR'
+--     is also set
+--
+-- -   #VUID-vkCmdDrawMultiEXT-primitivesGeneratedQueryWithRasterizerDiscard-06708#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithRasterizerDiscard primitivesGeneratedQueryWithRasterizerDiscard>
+--     feature is not enabled and the
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
+--     query is active,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-discard rasterization discard>
+--     /must/ not be enabled
+--
+-- -   #VUID-vkCmdDrawMultiEXT-primitivesGeneratedQueryWithNonZeroStreams-06709#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>
+--     feature is not enabled and the
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
+--     query is active, the bound graphics pipeline /must/ not have been
+--     created with a non-zero value in
+--     'Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT'::@rasterizationStream@
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-07620# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClamp depthClamp>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClampEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-07621# If a shader object is bound to
+--     any graphics stage or a graphics pipeline is bound which was created
+--     with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_POLYGON_MODE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-07622# If a shader object is bound to
+--     any graphics stage or a graphics pipeline is bound which was created
+--     with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-07623# If a shader object is bound to
+--     any graphics stage or a graphics pipeline is bound which was created
+--     with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-alphaToCoverageEnable-08919# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT'
+--     dynamic state enabled, and @alphaToCoverageEnable@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-fragmentoutput Fragment Output Interface>
+--     /must/ contain a variable for the alpha @Component@ word in
+--     @Location@ 0 at @Index@ 0
+--
+-- -   #VUID-vkCmdDrawMultiEXT-alphaToCoverageEnable-08920# If a shader
+--     object is bound to any graphics stage, and the most recent call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT'
+--     in the current command buffer set @alphaToCoverageEnable@ to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-fragmentoutput Fragment Output Interface>
+--     /must/ contain a variable for the alpha @Component@ word in
+--     @Location@ 0 at @Index@ 0
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-07624# If a shader object is bound to
+--     any graphics stage or a graphics pipeline is bound which was created
+--     with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-07625# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-alphaToOne alphaToOne>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToOneEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-07626# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-logicOp logicOp>
+--     feature is enabled, a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLogicOpEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-07627# If a shader object is bound to
+--     the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and there are color
+--     attachments bound, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-07629# If a shader object is bound to
+--     the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and there are color
+--     attachments bound, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-07630# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryStreams geometryStreams>
+--     feature is enabled, and a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
+--     stage or a graphics pipeline is bound which was created with both a
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
+--     stage and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_STREAM_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationStreamEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-07631# If the
+--     @VK_EXT_conservative_rasterization@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetConservativeRasterizationModeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-07632# If the
+--     @VK_EXT_conservative_rasterization@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @conservativeRasterizationMode@ is
+--     'Vulkan.Extensions.VK_EXT_conservative_rasterization.CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT',
+--     then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetExtraPrimitiveOverestimationSizeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-conservativePointAndLineRasterization-07499#
+--     If the @VK_EXT_conservative_rasterization@ extension is enabled,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-conservativePointAndLineRasterization conservativePointAndLineRasterization>
+--     is not supported, a shader object is bound to any graphics stage or
+--     a graphics pipeline is bound, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line or point topology class, then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @conservativeRasterizationMode@ /must/ be
+--     'Vulkan.Extensions.VK_EXT_conservative_rasterization.CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-07633# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClipEnable depthClipEnable>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT'
+--     dynamic state, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-07636# If the @VK_EXT_provoking_vertex@
+--     extension is enabled, a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetProvokingVertexModeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-08666# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
+--     features are enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line topology class, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-08669# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
+--     features are enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line topology class, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-07849# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
+--     features are enabled and a shader object is bound to any graphics
+--     stage, or a bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @stippledLineEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then
+--     'Vulkan.Core14.Promoted_From_VK_KHR_line_rasterization.cmdSetLineStipple'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-10608# If a shader object is bound to
+--     any graphics stage or a graphics pipeline is bound which was created
+--     with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line topology class, and the current @lineRasterizationMode@
+--     is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_BRESENHAM'
+--     or
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH',
+--     then the current @alphaToCoverageEnable@, @alphaToOneEnable@ and
+--     @sampleShadingEnable@ states /must/ all be
+--     'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-07639# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClipControl depthClipControl>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipNegativeOneToOneEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-09650# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClampControl depthClampControl>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @depthClampEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_depth_clamp_control.cmdSetDepthClampRangeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-07640# If the
+--     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportWScalingEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-07641# If the @VK_NV_viewport_swizzle@
+--     extension is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-07642# If the
+--     @VK_NV_fragment_coverage_to_color@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-07643# If the
+--     @VK_NV_fragment_coverage_to_color@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @coverageToColorEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-07644# If the
+--     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationModeNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-07645# If the
+--     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @coverageModulationMode@ is any value other than
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.COVERAGE_MODULATION_MODE_NONE_NV',
+--     then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-07646# If the
+--     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @coverageModulationTableEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-07647# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetShadingRateImageEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-pipelineFragmentShadingRate-09238# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-07648# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-representativeFragmentTest representativeFragmentTest>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRepresentativeFragmentTestEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-07649# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-coverageReductionMode coverageReductionMode>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageReductionModeNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-rasterizationSamples-07471# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, and the current subpass does not use any color
+--     and\/or depth\/stencil attachments, then the @rasterizationSamples@
+--     in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     /must/ follow the rules for a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-noattachments zero-attachment subpass>
+--
+-- -   #VUID-vkCmdDrawMultiEXT-samples-07472# If the bound graphics
+--     pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
+--     state enabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state disabled, then the @samples@ parameter in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
+--     /must/ be greater or equal to the
+--     'Vulkan.Core10.GraphicsPipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
+--     parameter used to create the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawMultiEXT-samples-07473# If the bound graphics
+--     pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
+--     state and
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     states enabled, then the @samples@ parameter in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
+--     /must/ be greater or equal to the @rasterizationSamples@ parameter
+--     in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-09211# If the bound graphics pipeline
+--     state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, or a shader object is bound to any graphics stage,
+--     and the current render pass instance includes a
+--     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'
+--     structure with @multisampledRenderToSingleSampledEnable@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then the
+--     @rasterizationSamples@ in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     /must/ be the same as the @rasterizationSamples@ member of that
+--     structure
+--
+-- -   #VUID-vkCmdDrawMultiEXT-firstAttachment-07476# If a shader object is
+--     bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--     dynamic states enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
+--     in the current command buffer prior to this drawing command /must/
+--     have set a value for all active color attachments
+--
+-- -   #VUID-vkCmdDrawMultiEXT-firstAttachment-07478# If a shader object is
+--     bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT'
+--     dynamic states enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
+--     in the current command buffer prior to this drawing command /must/
+--     have set a value for all active color attachments
+--
+-- -   #VUID-vkCmdDrawMultiEXT-advancedBlendMaxColorAttachments-07480# If a
+--     shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
+--     and
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--     dynamic states enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and an active color
+--     attachment
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @blendEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then the
+--     number of active color attachments /must/ not exceed
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-advancedBlendMaxColorAttachments advancedBlendMaxColorAttachments>
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-10862# If a graphics pipeline is bound
+--     was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
+--     , but not the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command for all
+--     active color attachments with the @blendEnable@
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-rasterizerDiscardEnable-10863# If a graphics
+--     pipeline is bound was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT',
+--     but not the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command for all
+--     active color attachments with the @blendEnable@
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-10864# If a shader object is bound to
+--     the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
+--     and
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then either
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command for all
+--     active color attachments with the @blendEnable@
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-primitivesGeneratedQueryWithNonZeroStreams-07481#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>
+--     feature is not enabled and the
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
+--     query is active, and the bound graphics pipeline was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_STREAM_EXT'
+--     state enabled, the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationStreamEXT'
+--     /must/ have set the @rasterizationStream@ to zero
+--
+-- -   #VUID-vkCmdDrawMultiEXT-sampleLocationsPerPixel-07482# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state enabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state disabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then the @sampleLocationsPerPixel@ member of @pSampleLocationsInfo@
+--     in the last call to
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     /must/ equal the @rasterizationSamples@ member of the
+--     'Vulkan.Core10.GraphicsPipeline.PipelineMultisampleStateCreateInfo'
+--     structure the bound graphics pipeline has been created with
+--
+-- -   #VUID-vkCmdDrawMultiEXT-sampleLocationsPerPixel-07483# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state enabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then the @sampleLocationsPerPixel@ member of @pSampleLocationsInfo@
+--     in the last call to
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     /must/ equal the @rasterizationSamples@ parameter of the last call
+--     to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-sampleLocationsEnable-07484# If a shader
+--     object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage, or the bound graphics pipeline was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     state enabled, and @sampleLocationsEnable@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT'
+--     then the current active depth attachment /must/ have been created
+--     with the
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'
+--     bit set
+--
+-- -   #VUID-vkCmdDrawMultiEXT-sampleLocationsEnable-07485# If a shader
+--     object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage, or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state enabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     state enabled, and if @sampleLocationsEnable@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
+--     then the @sampleLocationsInfo.maxSampleLocationGridSize.width@ in
+--     the last call to
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     /must/ evenly divide
+--     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.width@
+--     as returned by
+--     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
+--     with a @samples@ parameter equaling @rasterizationSamples@
+--
+-- -   #VUID-vkCmdDrawMultiEXT-sampleLocationsEnable-07486# If a shader
+--     object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage, or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state enabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     state enabled, and if @sampleLocationsEnable@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
+--     then the @sampleLocationsInfo.maxSampleLocationGridSize.height@ in
+--     the last call to
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     /must/ evenly divide
+--     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.height@
+--     as returned by
+--     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
+--     with a @samples@ parameter equaling @rasterizationSamples@
+--
+-- -   #VUID-vkCmdDrawMultiEXT-sampleLocationsEnable-07487# If a shader
+--     object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage, or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     state enabled, and if @sampleLocationsEnable@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
+--     the fragment shader code /must/ not statically use the extended
+--     instruction @InterpolateAtSample@
+--
+-- -   #VUID-vkCmdDrawMultiEXT-sampleLocationsEnable-07936# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state disabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then @sampleLocationsInfo.sampleLocationGridSize.width@ /must/
+--     evenly divide
+--     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.width@
+--     as returned by
+--     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
+--     with a @samples@ parameter equaling the value of
+--     @rasterizationSamples@ in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-sampleLocationsEnable-07937# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state disabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then @sampleLocationsInfo.sampleLocationGridSize.height@ /must/
+--     evenly divide
+--     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.height@
+--     as returned by
+--     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
+--     with a @samples@ parameter equaling the value of
+--     @rasterizationSamples@ in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-sampleLocationsEnable-07938# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state disabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then @sampleLocationsInfo.sampleLocationsPerPixel@ /must/ equal
+--     @rasterizationSamples@ in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-coverageModulationTableEnable-07488# If a
+--     shader object is bound to any graphics stage or the bound graphics
+--     pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV'
+--     state enabled, and the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV'
+--     set @coverageModulationTableEnable@ to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then the
+--     @coverageModulationTableCount@ parameter in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableNV'
+--     /must/ equal the current @rasterizationSamples@ divided by the
+--     number of color samples in the current active color attachment
+--
+-- -   #VUID-vkCmdDrawMultiEXT-rasterizationSamples-07489# If the
+--     @VK_NV_framebuffer_mixed_samples@ extension is enabled, and if
+--     current subpass has a depth\/stencil attachment and depth test,
+--     stencil test, or depth bounds test are enabled in the bound
+--     pipeline, then the current @rasterizationSamples@ /must/ be the same
+--     as the sample count of the depth\/stencil attachment
+--
+-- -   #VUID-vkCmdDrawMultiEXT-coverageToColorEnable-07490# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
+--     state enabled and the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
+--     set the @coverageToColorEnable@ to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then there /must/ be an
+--     active color attachment at the location selected by the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
+--     @coverageToColorLocation@, with a
+--     'Vulkan.Core10.Enums.Format.Format' of
+--     'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R8_SINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R16_UINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R16_SINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R32_UINT', or
+--     'Vulkan.Core10.Enums.Format.FORMAT_R32_SINT'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-rasterizerDiscardEnable-09420# If the
+--     @VK_NV_fragment_coverage_to_color@ extension is enabled, and a
+--     shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage, and the most recent call to
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
+--     in the current command buffer set @rasterizerDiscardEnable@ to
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
+--     set the @coverageToColorEnable@ to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then there /must/ be an
+--     active color attachment at the location selected by the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
+--     @coverageToColorLocation@, with a
+--     'Vulkan.Core10.Enums.Format.Format' of
+--     'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R8_SINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R16_UINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R16_SINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R32_UINT', or
+--     'Vulkan.Core10.Enums.Format.FORMAT_R32_SINT'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-coverageReductionMode-07491# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-coverageReductionMode coverageReductionMode>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV'
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     dynamic states enabled, then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current values>
+--     of @coverageReductionMode@, @rasterizationSamples@, the sample
+--     counts for the color and depth\/stencil attachments (if the subpass
+--     has them) /must/ be a valid combination returned by
+--     'Vulkan.Extensions.VK_NV_coverage_reduction_mode.getPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-viewportCount-07492# 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_SWIZZLE_NV'
+--     dynamic state enabled, 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-vkCmdDrawMultiEXT-viewportCount-07493# 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_SWIZZLE_NV'
+--     dynamic states enabled then the @viewportCount@ parameter in the
+--     last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
+--     /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-vkCmdDrawMultiEXT-viewportCount-09421# If the
+--     @VK_NV_viewport_swizzle@ extension is enabled, and a shader object
+--     is bound to any graphics stage, then the @viewportCount@ parameter
+--     in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
+--     /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-vkCmdDrawMultiEXT-rasterizationSamples-07494# If the
+--     @VK_NV_framebuffer_mixed_samples@ extension is enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-coverageReductionMode coverageReductionMode>
+--     feature is not enabled, or the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @coverageReductionMode@ is not
+--     'Vulkan.Extensions.VK_NV_coverage_reduction_mode.COVERAGE_REDUCTION_MODE_TRUNCATE_NV',
+--     and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizationSamples@ is greater than sample count of the color
+--     attachment, then
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-sampleshading sample shading>
+--     /must/ be disabled
+--
+-- -   #VUID-vkCmdDrawMultiEXT-stippledLineEnable-07495# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic states enabled, and if the current @stippledLineEnable@
+--     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
+--     @lineRasterizationMode@ state is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_RECTANGULAR',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdDrawMultiEXT-stippledLineEnable-07496# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic states enabled, and if the current @stippledLineEnable@
+--     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
+--     @lineRasterizationMode@ state is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_BRESENHAM',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdDrawMultiEXT-stippledLineEnable-07497# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic states enabled, and if the current @stippledLineEnable@
+--     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
+--     @lineRasterizationMode@ state is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdDrawMultiEXT-stippledLineEnable-07498# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic states enabled, and if the current @stippledLineEnable@
+--     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
+--     @lineRasterizationMode@ state is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_DEFAULT',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>
+--     feature /must/ be enabled and
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@strictLines@
+--     /must/ be 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-stage-07073# If the bound pipeline was
+--     created with the
+--     'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo'::@stage@
+--     member of an element of
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'::@pStages@
+--     set to
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT',
+--     then
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-mesh-shader Mesh Shader Queries>
+--     /must/ not be active
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-08877# If a shader object is bound to
+--     the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-07850# If dynamic state was inherited
+--     from
+--     'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV',
+--     it /must/ be set in the current command buffer prior to this drawing
+--     command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-nextStage-10745# For each shader object
+--     bound to a graphics stage, except for shader object bound to the
+--     last graphics stage in the logical pipeline, it /must/ have been
+--     created with a @nextStage@ including the corresponding bit to the
+--     shader object bound to the following graphics stage in the logical
+--     pipeline
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-08684# If there is no bound graphics
+--     pipeline, 'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT'
+--     /must/ have been called in the current command buffer with @pStages@
+--     with an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-08685# If there is no bound graphics
+--     pipeline, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellationShader>
+--     feature is enabled,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-08686# If there is no bound graphics
+--     pipeline, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellationShader>
+--     feature is enabled,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-08687# If there is no bound graphics
+--     pipeline, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometryShader>
+--     feature is enabled,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-08688# If there is no bound graphics
+--     pipeline, 'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT'
+--     /must/ have been called in the current command buffer with @pStages@
+--     with an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-08689# If there is no bound graphics
+--     pipeline, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
+--     feature is enabled,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-08690# If there is no bound graphics
+--     pipeline, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
+--     feature is enabled,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-08693# If there is no bound graphics
+--     pipeline, and at least one of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
+--     features is enabled, one of the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--     stages /must/ have a valid 'Vulkan.Extensions.Handles.ShaderEXT'
+--     bound, and the other /must/ have no
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-08696# If there is no bound graphics
+--     pipeline, and a valid 'Vulkan.Extensions.Handles.ShaderEXT' is bound
+--     to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage, there /must/ be no 'Vulkan.Extensions.Handles.ShaderEXT'
+--     bound to either the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--     stage or the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--     stage
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-08698# If any graphics shader is bound
+--     which was created with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
+--     flag, then all shaders created with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
+--     flag in the same
+--     'Vulkan.Extensions.VK_EXT_shader_object.createShadersEXT' call
+--     /must/ also be bound
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-08699# If any graphics shader is bound
+--     which was created with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
+--     flag, any stages in between stages whose shaders which did not
+--     create a shader with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
+--     flag as part of the same
+--     'Vulkan.Extensions.VK_EXT_shader_object.createShadersEXT' call
+--     /must/ not have any 'Vulkan.Extensions.Handles.ShaderEXT' bound
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-08878# All bound graphics shader
+--     objects /must/ have been created with identical or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-identically-defined identically defined>
+--     push constant ranges
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-08879# All bound graphics shader
+--     objects /must/ have either been created with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag set, or with identical or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-identically-defined identically defined>
+--     arrays of descriptor set layouts
+--
+-- -   #VUID-vkCmdDrawMultiEXT-colorAttachmentCount-09372# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and a
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
+--     equal to @1@, a color attachment with a resolve mode of
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID',
+--     and a fragment shader is bound, it /must/ not declare the
+--     @DepthReplacing@ or @StencilRefReplacingEXT@ execution modes
+--
+-- -   #VUID-vkCmdDrawMultiEXT-pDynamicStates-08715# If the bound graphics
+--     pipeline state includes a fragment shader stage, was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE'
+--     set in
+--     'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@,
+--     and the fragment shader declares the @EarlyFragmentTests@ execution
+--     mode and uses @OpDepthAttachmentReadEXT@, the @depthWriteEnable@
+--     parameter in the last call to
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthWriteEnable'
+--     /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-pDynamicStates-08716# If the bound graphics
+--     pipeline state includes a fragment shader stage, was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_WRITE_MASK'
+--     set in
+--     'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@,
+--     and the fragment shader declares the @EarlyFragmentTests@ execution
+--     mode and uses @OpStencilAttachmentReadEXT@, the @writeMask@
+--     parameter in the last call to
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilWriteMask' /must/
+--     be @0@
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-09116# If a shader object is bound to
+--     any graphics stage or the bound graphics pipeline was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT',
+--     and the format of any color attachment is
+--     'Vulkan.Core10.Enums.Format.FORMAT_E5B9G9R9_UFLOAT_PACK32', the
+--     corresponding element of the @pColorWriteMasks@ parameter of
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
+--     /must/ either include all of
+--     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_R_BIT',
+--     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_G_BIT',
+--     and
+--     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_B_BIT',
+--     or none of them
+--
+-- -   #VUID-vkCmdDrawMultiEXT-maxFragmentDualSrcAttachments-09239# If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blending blending>
+--     is enabled for any attachment where either the source or destination
+--     blend factors for that attachment
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-dsb use the secondary color input>,
+--     the maximum value of @Location@ for any output attachment
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-staticuse statically used>
+--     in the @Fragment@ @Execution@ @Model@ executed by this command
+--     /must/ be less than
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFragmentDualSrcAttachments maxFragmentDualSrcAttachments>
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-09548# If the current render pass was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there is no shader object bound to any graphics stage, the value of
+--     each element of
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingAttachmentLocationInfo'::@pColorAttachmentLocations@
+--     in the bound pipeline /must/ match the value for the corresponding
+--     locations set currently in the current render pass instance
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-09549# If the current render pass was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     and there is no shader object bound to any graphics stage, the value
+--     of each element of
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pColorAttachmentInputIndices@
+--     in the bound pipeline /must/ match the value for the corresponding
+--     index set currently in the current render pass instance
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-10927# If the current render pass was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     and there is no shader object bound to any graphics stage, the value
+--     of
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pDepthInputAttachmentIndex@
+--     in the bound pipeline /must/ match the value set currently in the
+--     current render pass instance
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-10928# If the current render pass was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     and there is no shader object bound to any graphics stage, the value
+--     of
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pStencilInputAttachmentIndex@
+--     in the bound pipeline /must/ match the value set currently in the
+--     current render pass instance
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-09642# If the current render pass was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     with the
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT'
+--     flag, the bound graphics pipeline /must/ have been created with
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-09643# If the bound graphics pipeline
+--     was created with
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT',
+--     the current render pass /must/ have begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     with the
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT'
+--     flag
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-10677# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model>
+--     is enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tileShadingPerTileDraw tileShadingPerTileDraw>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-10772# If a shader object is bound to
+--     any graphics stage, /multiview/ functionality /must/ not be enabled
+--     in the current render pass
+--
+-- -   #VUID-vkCmdDrawMultiEXT-multiviewPerViewViewports-12262# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiviewPerViewViewports multiviewPerViewViewports>
+--     feature is enabled, then the index of the most significant bit in
+--     current render pass instance @viewMask@ /must/ be less than the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @viewportCount@
+--
+-- -   #VUID-vkCmdDrawMultiEXT-multiviewPerViewViewports-12263# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiviewPerViewViewports multiviewPerViewViewports>
+--     feature is enabled, then the index of the most significant bit in
+--     current render pass instance @viewMask@ /must/ be less than the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @scissorCount@
+--
+-- -   #VUID-vkCmdDrawMultiEXT-flags-11521# If current render pass instance
+--     was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@flags@
+--     which includes
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_FRAGMENT_REGION_BIT_EXT',
+--     and if
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-sampleshading sample shading>
+--     is enabled (explicitly or implicitly), then the minimum fraction for
+--     sample shading /must/ equal 0.0
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-11522# If the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and contains a custom resolve, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, the graphics pipeline bound /must/ have been
+--     created with a
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-11523# If the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and does not contain a custom resolve, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, the graphics pipeline bound /must/ not have
+--     been created with a
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-customResolve-11524# If the current render
+--     pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, the graphics pipeline
+--     bound /must/ have been created with
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@
+--     as 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-customResolve-11525# If the current render
+--     pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and contains a custom resolve, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not been recorded in the render pass instance, the graphics
+--     pipeline bound /must/ have been created with
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@
+--     as 'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-11861# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled and the current render pass instance was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and contains a custom resolve, the bound graphics pipeline /must/
+--     have been created with a
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@colorAttachmentCount@
+--     equal to
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-11862# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and the current render pass instance was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, 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 an @resolveImageView@ 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_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@
+--     used to create the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-11863# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and the current render pass instance was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, 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 an @resolveImageView@ equal to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have the
+--     corresponding element of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@
+--     used to create the bound pipeline equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-dynamicRenderingUnusedAttachments-11864# If
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled, the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, 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 an @resolveImageView@ 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_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@
+--     used to create the bound graphics pipeline, or the corresponding
+--     element of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@,
+--     if it exists, /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-11865# If the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@
+--     used to create the bound graphics pipeline /must/ be equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-11866# If current render pass instance
+--     was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@
+--     used to create the 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->resolveImageView@
+--
+-- -   #VUID-vkCmdDrawMultiEXT-dynamicRenderingUnusedAttachments-11867# If
+--     the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@
+--     used to create the bound graphics pipeline was not equal to the
+--     'Vulkan.Core10.Enums.Format.Format' used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@,
+--     the value of the format /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-11868# If the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@
+--     used to create the bound graphics pipeline /must/ be equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-11869# If current render pass instance
+--     was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@
+--     used to create the 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->resolveImageView@
+--
+-- -   #VUID-vkCmdDrawMultiEXT-dynamicRenderingUnusedAttachments-11870# If
+--     the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@
+--     used to create the bound graphics pipeline was not equal to the
+--     'Vulkan.Core10.Enums.Format.Format' used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@,
+--     the value of the format /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-colorAttachmentCount-11871# If 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@ and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, then for each element
+--     of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
+--     array with a @resolveImageView@ not equal to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', the @resolveImageView@
+--     /must/ have been created with a sample count equal to the value of
+--     @rasterizationSamples@ for the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawMultiEXT-pDepthAttachment-11872# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     @rasterizationSamples@ for the bound graphics pipeline /must/ be
+--     equal to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--
+-- -   #VUID-vkCmdDrawMultiEXT-pStencilAttachment-11873# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     @rasterizationSamples@ for the bound graphics pipeline /must/ be
+--     equal to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--
+-- -   #VUID-vkCmdDrawMultiEXT-customResolve-11529# If a shader object is
+--     bound to the fragment stage, the current render pass instance was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     a fragment density map attachment is active, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been called, then the fragment shader object bound /must/ have
+--     been created with
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@
+--     as 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-customResolve-11530# If a shader object is
+--     bound to the fragment stage, the current render pass instance was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and contains a custom resolve, a fragment density map attachment is
+--     active, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been called, then the fragment shader object bound
+--     /must/ have been created with
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@
+--     as 'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-flags-13361# If there are any shader objects
+--     bound that were created with @flags@ that includes the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     bit, then all bound shader objects /must/ have been created with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     bit
+--
+-- -   #VUID-vkCmdDrawMultiEXT-flags-13362# If there are any shader objects
+--     bound that were created with @flags@ that includes the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     bit, then the pipeline layout of the bound descriptor sets /must/
+--     have been created with
+--     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT'
+--     set
+--
+-- -   #VUID-vkCmdDrawMultiEXT-flags-13363# If there are any shader objects
+--     bound that were created with @flags@ that includes the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     bit, and any of the descriptor set layouts used to create the
+--     pipeline layout of the bound descriptor sets were created with any
+--     binding’s
+--     'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutBinding'::@stageFlags@
+--     set with
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT',
+--     then there /must/ be no binding with
+--     'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutBinding'::@stageFlags@
+--     set with
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-flags-13364# If there are any shader objects
+--     bound that were created with @flags@ that includes both the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     and
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
+--     bits, the pipeline layout of the bound descriptor sets /must/ have
+--     been created with
+--     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_NO_TASK_SHADER_BIT_KHR'
+--     set
+--
+-- -   #VUID-vkCmdDrawMultiEXT-flags-13365# If there are any shader objects
+--     bound that were created with @flags@ that includes both the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     and
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
+--     bits, there /must/ be no shader object bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--     stage
+--
+-- -   #VUID-vkCmdDrawMultiEXT-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-vkCmdDrawMultiEXT-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-vkCmdDrawMultiEXT-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-vkCmdDrawMultiEXT-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-vkCmdDrawMultiEXT-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-vkCmdDrawMultiEXT-None-02721# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, and that pipeline was created without
+--     enabling
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     for @vertexInputs@, then 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-vkCmdDrawMultiEXT-format-10389# For each vertex attribute
+--     accessed by this command, if its
+--     'Vulkan.Core10.GraphicsPipeline.VertexInputAttributeDescription'::@format@
+--     or
+--     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@
+--     is a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-packed packed format>,
+--     and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-legacyVertexAttributes legacyVertexAttributes>
+--     feature is not enabled, the value of @attribAddress@, calculated as
+--     described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input-address-calculation Vertex Input Calculation>,
+--     /must/ be a multiple of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats size of the format>
+--
+-- -   #VUID-vkCmdDrawMultiEXT-format-10390# For each vertex attribute
+--     accessed by this command, if its
+--     'Vulkan.Core10.GraphicsPipeline.VertexInputAttributeDescription'::@format@
+--     or
+--     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@
+--     is not a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-packed packed format>,
+--     and either the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-legacyVertexAttributes legacyVertexAttributes>
+--     feature is not enabled or @format@ has 64-bit components, the value
+--     of @attribAddress@, calculated as described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input-address-calculation Vertex Input Calculation>,
+--     /must/ be a multiple of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats component size of the format>
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-07842# If there is a shader object
+--     bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY'
+--     dynamic state enabled then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-dynamicPrimitiveTopologyUnrestricted-07500#
+--     If the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY'
+--     dynamic state enabled and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-dynamicPrimitiveTopologyUnrestricted dynamicPrimitiveTopologyUnrestricted>
+--     is 'Vulkan.Core10.FundamentalTypes.FALSE', then the
+--     @primitiveTopology@ parameter of
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
+--     /must/ be of the same
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-class topology class>
+--     as the pipeline
+--     'Vulkan.Core10.GraphicsPipeline.PipelineInputAssemblyStateCreateInfo'::@topology@
+--     state
+--
+-- -   #VUID-vkCmdDrawMultiEXT-primitiveTopology-10286# If a
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
+--     stage is bound, then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @primitiveTopology@ /must/ be
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST'
+--     prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-primitiveTopology-10747# If
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
+--     set @primitiveTopology@ to
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST'
+--     prior to this drawing command, then a
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
+--     stage /must/ be bound
+--
+-- -   #VUID-vkCmdDrawMultiEXT-primitiveTopology-10748# If
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
+--     set @primitiveTopology@ to
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_POINT_LIST'
+--     prior to this drawing command, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance5 maintenance5>
+--     feature is not enabled, both a
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     and
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
+--     stage are not bound, then the @Vertex@ @Execution@ @Model@ /must/
+--     have a @PointSize@ decorated variable that is statically written to
+--
+-- -   #VUID-vkCmdDrawMultiEXT-pStrides-04913# If the bound graphics
+--     pipeline was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE'
+--     dynamic state enabled, but without the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2'
+--     with a non-@NULL@ @pStrides@ parameter or
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.cmdBindVertexBuffers3KHR'
+--     with @setStride@ set to 'Vulkan.Core10.FundamentalTypes.TRUE' /must/
+--     have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this draw command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-13118# If the bound graphics pipeline
+--     was created without the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE'
+--     dynamic state enabled, without the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
+--     dynamic state enabled, and
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.cmdBindVertexBuffers3KHR'
+--     was called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this draw command, the value
+--     of @setStride@ in each of its @pBindInfos@ elements must have been
+--     'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-04914# If there is a shader object
+--     bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage or 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 and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this draw command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-Input-07939# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-vertexAttributeRobustness vertexAttributeRobustness>
+--     feature is not enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance9 maintenance9>
+--     feature is not enabled, and there is a shader object bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
+--     dynamic state enabled then all variables with the @Input@ storage
+--     class decorated with @Location@ in the @Vertex@ @Execution@ @Model@
+--     @OpEntryPoint@ /must/ contain a location in
+--     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@location@
+--
+-- -   #VUID-vkCmdDrawMultiEXT-Input-08734# If there is a shader object
+--     bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
+--     dynamic state enabled and either the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-legacyVertexAttributes legacyVertexAttributes>
+--     feature is not enabled or the SPIR-V Type associated with a given
+--     @Input@ variable of the corresponding @Location@ in the @Vertex@
+--     @Execution@ @Model@ @OpEntryPoint@ is 64-bit, then the numeric type
+--     associated with all @Input@ variables of the corresponding
+--     @Location@ in the @Vertex@ @Execution@ @Model@ @OpEntryPoint@ /must/
+--     be the same as
+--     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@
+--
+-- -   #VUID-vkCmdDrawMultiEXT-format-08936# If there is a shader object
+--     bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
+--     dynamic state enabled and
+--     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@
+--     has a 64-bit component, then the scalar width associated with all
+--     @Input@ variables of the corresponding @Location@ in the @Vertex@
+--     @Execution@ @Model@ @OpEntryPoint@ /must/ be 64-bit
+--
+-- -   #VUID-vkCmdDrawMultiEXT-format-08937# If there is a shader object
+--     bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
+--     dynamic state enabled and the scalar width associated with a
+--     @Location@ decorated @Input@ variable in the @Vertex@ @Execution@
+--     @Model@ @OpEntryPoint@ is 64-bit, then the corresponding
+--     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@
+--     /must/ have a 64-bit component
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-09203# If there is a shader object
+--     bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
+--     dynamic state enabled and
+--     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@
+--     has a 64-bit component, then all @Input@ variables at the
+--     corresponding @Location@ in the @Vertex@ @Execution@ @Model@
+--     @OpEntryPoint@ /must/ not use components that are not present in the
+--     format
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-04875# If there is a shader object
+--     bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
+--     stage or the bound graphics pipeline state was created with both a
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
+--     stage and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @primitiveTopology@ is
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST',
+--     then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPatchControlPointsEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-04879# If there is a shader object
+--     bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE'
+--     dynamic state enabled then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-09637# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitiveTopologyListRestart primitiveTopologyListRestart>
+--     feature is not enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-vertex-input-assembler-topology input assembly>
+--     is
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_POINT_LIST',
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_LINE_LIST',
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_TRIANGLE_LIST',
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY',
+--     or
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY',
+--     there is a shader object bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE'
+--     dynamic state enabled, then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnable'
+--     /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-10909# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitiveTopologyPatchListRestart primitiveTopologyPatchListRestart>
+--     feature is not enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-vertex-input-assembler-topology input assembly>
+--     is
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST',
+--     there is a shader object bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
+--     stage or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE'
+--     dynamic state enabled then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnable'
+--     /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-stage-06481# The bound graphics pipeline
+--     /must/ not have been created with the
+--     'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo'::@stage@
+--     member of any element of
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'::@pStages@
+--     set to
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-08885# There /must/ be no shader object
+--     bound to either of the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--     stages
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-07619# If a shader object is bound to
+--     the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     stage or a graphics pipeline is bound which was created with both a
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     stage and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetTessellationDomainOriginEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiEXT-OpExecutionMode-12239# If a shader is bound
+--     to both the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
+--     and
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     stages, and if both stages contain an @OpExecutionMode@ instruction
+--     specifying the type of subdivision, they /must/ be the same
+--
+-- -   #VUID-vkCmdDrawMultiEXT-OpExecutionMode-12240# If a shader is bound
+--     to both the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
+--     and
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     stages, and if both stages contain an @OpExecutionMode@ instruction
+--     specifying the orientation of triangles, they /must/ be the same
+--
+-- -   #VUID-vkCmdDrawMultiEXT-OpExecutionMode-12241# If a shader is bound
+--     to both the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
+--     and
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     stages, and if both stages contain an @OpExecutionMode@ instruction
+--     specifying the segment spacing, they /must/ be the same
+--
+-- -   #VUID-vkCmdDrawMultiEXT-OpExecutionMode-12242# If a shader is bound
+--     to both the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
+--     and
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     stages, and if both stages contain an @OpExecutionMode@ instruction
+--     specifying the output patch size, they /must/ be the same
+--
+-- -   #VUID-vkCmdDrawMultiEXT-pNext-09461# If the bound graphics pipeline
+--     state was created with
+--     'Vulkan.Core14.Promoted_From_VK_KHR_vertex_attribute_divisor.PipelineVertexInputDivisorStateCreateInfo'
+--     in the @pNext@ chain of
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'::@pVertexInputState@,
+--     any member of
+--     'Vulkan.Core14.Promoted_From_VK_KHR_vertex_attribute_divisor.PipelineVertexInputDivisorStateCreateInfo'::@pVertexBindingDivisors@
+--     has a value other than @1@ in @divisor@, and
+--     'Vulkan.Core14.Promoted_From_VK_KHR_vertex_attribute_divisor.PhysicalDeviceVertexAttributeDivisorProperties'::@supportsNonZeroFirstInstance@
+--     is 'Vulkan.Core10.FundamentalTypes.FALSE', then @firstInstance@
+--     /must/ be @0@
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-09462# If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-objects shader objects>
+--     are used for drawing or the bound graphics pipeline state was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
+--     dynamic state enabled, any member of the
+--     @pVertexBindingDescriptions@ parameter to the
+--     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.cmdSetVertexInputEXT'
+--     call that sets this dynamic state has a value other than @1@ in
+--     @divisor@, and
+--     'Vulkan.Core14.Promoted_From_VK_KHR_vertex_attribute_divisor.PhysicalDeviceVertexAttributeDivisorProperties'::@supportsNonZeroFirstInstance@
+--     is 'Vulkan.Core10.FundamentalTypes.FALSE', then @firstInstance@
+--     /must/ be @0@
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-04933# The
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-multiDraw multiDraw>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdDrawMultiEXT-drawCount-04934# @drawCount@ /must/ be less
+--     than 'PhysicalDeviceMultiDrawPropertiesEXT'::@maxMultiDrawCount@
+--
+-- -   #VUID-vkCmdDrawMultiEXT-drawCount-04935# If @drawCount@ is greater
+--     than zero, @pVertexInfo@ /must/ be a valid pointer to memory
+--     containing one or more valid instances of 'MultiDrawInfoEXT'
+--     structures
+--
+-- -   #VUID-vkCmdDrawMultiEXT-drawCount-09628# If @drawCount@ is greater
+--     than @1@, @stride@ /must/ be a multiple of @4@ and /must/ be greater
+--     than or equal to @sizeof@('MultiDrawInfoEXT')
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdDrawMultiEXT-commandBuffer-parameter# @commandBuffer@
+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdDrawMultiEXT-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-vkCmdDrawMultiEXT-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
+--
+-- -   #VUID-vkCmdDrawMultiEXT-renderpass# This command /must/ only be
+--     called inside of a render pass instance
+--
+-- -   #VUID-vkCmdDrawMultiEXT-suspended# This command /must/ not be called
+--     between suspended render pass instances
+--
+-- -   #VUID-vkCmdDrawMultiEXT-videocoding# This command /must/ only be
+--     called outside of a video coding scope
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Inside                                                                                                                 | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdDrawMultiEXT is affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_multi_draw VK_EXT_multi_draw>,
+-- 'Vulkan.Core10.Handles.CommandBuffer', 'MultiDrawInfoEXT'
+cmdDrawMultiEXT :: forall io
+                 . (MonadIO io)
+                => -- | @commandBuffer@ is the command buffer into which the command is
+                   -- recorded.
+                   CommandBuffer
+                -> -- | @pVertexInfo@ is a pointer to an array of 'MultiDrawInfoEXT' with vertex
+                   -- information to be drawn.
+                   ("vertexInfo" ::: Vector MultiDrawInfoEXT)
+                -> -- | @instanceCount@ is the number of instances per draw.
+                   ("instanceCount" ::: Word32)
+                -> -- | @firstInstance@ is the instance ID of the first instance in each draw.
+                   ("firstInstance" ::: Word32)
+                -> -- | @stride@ is the byte stride between consecutive elements of
+                   -- @pVertexInfo@.
+                   ("stride" ::: Word32)
+                -> io ()
+cmdDrawMultiEXT commandBuffer
+                  vertexInfo
+                  instanceCount
+                  firstInstance
+                  stride = liftIO . evalContT $ do
+  let vkCmdDrawMultiEXTPtr = pVkCmdDrawMultiEXT (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdDrawMultiEXTPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdDrawMultiEXT is null" Nothing Nothing
+  let vkCmdDrawMultiEXT' = mkVkCmdDrawMultiEXT vkCmdDrawMultiEXTPtr
+  pPVertexInfo <- ContT $ allocaBytes @MultiDrawInfoEXT ((Data.Vector.length (vertexInfo)) * 8)
+  lift $ Data.Vector.imapM_ (\i e -> poke (pPVertexInfo `plusPtr` (8 * (i)) :: Ptr MultiDrawInfoEXT) (e)) (vertexInfo)
+  lift $ traceAroundEvent "vkCmdDrawMultiEXT" (vkCmdDrawMultiEXT'
+                                                 (commandBufferHandle (commandBuffer))
+                                                 ((fromIntegral (Data.Vector.length $ (vertexInfo)) :: Word32))
+                                                 (pPVertexInfo)
+                                                 (instanceCount)
+                                                 (firstInstance)
+                                                 (stride))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdDrawMultiIndexedEXT
+  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Ptr MultiDrawIndexedInfoEXT -> Word32 -> Word32 -> Word32 -> Ptr Int32 -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Ptr MultiDrawIndexedInfoEXT -> Word32 -> Word32 -> Word32 -> Ptr Int32 -> IO ()
+
+-- | vkCmdDrawMultiIndexedEXT - Draw primitives
+--
+-- = Description
+--
+-- The number of draws recorded is @drawCount@, with each draw reading,
+-- sequentially, a @firstIndex@ and an @indexCount@ from @pIndexInfo@. For
+-- each recorded draw, primitives are assembled as for
+-- 'Vulkan.Core10.CommandBufferBuilding.cmdDrawIndexed', and drawn
+-- @instanceCount@ times with @instanceIndex@ starting with @firstInstance@
+-- and sequentially for each instance. If @pVertexOffset@ is @NULL@, a
+-- @vertexOffset@ is also read from @pIndexInfo@, otherwise the value from
+-- dereferencing @pVertexOffset@ is used.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-magFilter-04553# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
+--     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR',
+--     @reductionMode@ equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
+--     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-vkCmdDrawMultiIndexedEXT-magFilter-09598# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
+--     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR' and
+--     @reductionMode@ equal to either
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
+--     or
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
+--     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_MINMAX_BIT'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-mipmapMode-04770# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
+--     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR',
+--     @reductionMode@ equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
+--     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-vkCmdDrawMultiIndexedEXT-mipmapMode-09599# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
+--     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'
+--     and @reductionMode@ equal to either
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
+--     or
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
+--     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_MINMAX_BIT'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-unnormalizedCoordinates-09635# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the image view’s @levelCount@ and @layerCount@ /must/ be 1
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08609# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the image view’s @viewType@ /must/ be
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D' or
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08610# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the sampler /must/ not be used with any of the SPIR-V
+--     @OpImageSample*@ or @OpImageSparseSample*@ instructions with
+--     @ImplicitLod@, @Dref@ or @Proj@ in their name
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08611# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the sampler /must/ not be used with any of the SPIR-V
+--     @OpImageSample*@ or @OpImageSparseSample*@ instructions that
+--     includes a LOD bias or any offset values
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-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-vkCmdDrawMultiIndexedEXT-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-vkCmdDrawMultiIndexedEXT-None-07888# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'
+--     descriptor is accessed using atomic operations as a result of this
+--     command, then the storage texel buffer’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-buffer-view-format-features format features>
+--     /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-02692# If a
+--     'Vulkan.Core10.Handles.ImageView' is sampled with
+--     'Vulkan.Core10.Enums.Filter.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.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-02693# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_filter_cubic VK_EXT_filter_cubic>
+--     extension is not enabled and any 'Vulkan.Core10.Handles.ImageView'
+--     is sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as a
+--     result of this command, it /must/ not have a
+--     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' of
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE', or
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-filterCubic-02694# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with
+--     'Vulkan.Core10.Enums.Filter.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-vkCmdDrawMultiIndexedEXT-filterCubicMinmax-02695# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with
+--     'Vulkan.Core10.Enums.Filter.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-vkCmdDrawMultiIndexedEXT-cubicRangeClamp-09212# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-cubicRangeClamp cubicRangeClamp>
+--     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
+--     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
+--     a result of this command /must/ not have a
+--     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
+--     equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-reductionMode-09213# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with a
+--     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
+--     equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
+--     as a result of this command /must/ sample with
+--     'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-selectableCubicWeights-09214# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-selectableCubicWeights selectableCubicWeights>
+--     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
+--     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
+--     a result of this command /must/ have
+--     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.SamplerCubicWeightsCreateInfoQCOM'::@cubicWeights@
+--     equal to
+--     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-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-vkCmdDrawMultiIndexedEXT-OpTypeImage-07027# For any
+--     'Vulkan.Core10.Handles.ImageView' being written as a storage image
+--     where the image format field of the @OpTypeImage@ is @Unknown@, the
+--     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_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-OpTypeImage-07028# For any
+--     'Vulkan.Core10.Handles.ImageView' being read as a storage image
+--     where the image format field of the @OpTypeImage@ is @Unknown@, the
+--     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_STORAGE_READ_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-OpTypeImage-07029# For any
+--     'Vulkan.Core10.Handles.BufferView' being written as a storage texel
+--     buffer where the image format field of the @OpTypeImage@ is
+--     @Unknown@, the view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
+--     /must/ contain
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-OpTypeImage-07030# Any
+--     'Vulkan.Core10.Handles.BufferView' being read as a storage texel
+--     buffer where the image format field of the @OpTypeImage@ is
+--     @Unknown@ then the view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
+--     /must/ contain
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08600# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
+--     was created with a pipeline layout and statically uses a set /n/, a
+--     descriptor set /must/ have been bound to /n/ at the same pipeline
+--     bind point, with layouts compatible for set /n/ with the layout(s)
+--     used to create the shader, as described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptors-compatibility ???>
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08601# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
+--     was created with a pipeline layout or specified push constant ranges
+--     and statically uses a push constant value, that value /must/ have
+--     been set for the same pipeline bind point, with push constant ranges
+--     that are
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptors-compatibility compatible>
+--     with the push constant range used to create the shader
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-10068# For each array of
+--     resources that is used by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
+--     the indices used to access members of the array /must/ be less than
+--     the descriptor count for the identified binding in the descriptor
+--     sets used by this command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08114# Descriptors in each bound
+--     descriptor set, specified via
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
+--     be valid if they are accessed as described by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
+--     by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
+--     point used by this command and the bound
+--     'Vulkan.Core10.Handles.Pipeline' was not created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-imageLayout-00344# If an image
+--     descriptor is accessed by a shader, the
+--     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' /must/ match the
+--     subresource accessible from the 'Vulkan.Core10.Handles.ImageView' 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>
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08115# If the descriptors used
+--     by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
+--     point were specified via
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', the
+--     bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     without
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08116# Descriptors in bound
+--     descriptor buffers, specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     /must/ be valid if they are dynamically used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
+--     was created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08604# Descriptors in bound
+--     descriptor buffers, specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     /must/ be valid if they are dynamically used by any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     to the pipeline bind point used by this command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08117# If the descriptors used
+--     by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
+--     point were specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08119# If a descriptor is
+--     dynamically used with a 'Vulkan.Core10.Handles.Pipeline' created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     the descriptor memory /must/ be resident
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08605# If a descriptor is
+--     dynamically used with a 'Vulkan.Extensions.Handles.ShaderEXT'
+--     created with a 'Vulkan.Core10.Handles.DescriptorSetLayout' that was
+--     created with
+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     the descriptor memory /must/ be resident
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08606# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject>
+--     feature is not enabled, a valid pipeline /must/ be bound to the
+--     pipeline bind point used by this command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08608# If a pipeline is bound to
+--     the pipeline bind point used by this command, there /must/ not have
+--     been any calls to dynamic state setting commands for any state
+--     specified statically in the 'Vulkan.Core10.Handles.Pipeline' object
+--     bound to the pipeline bind point used by this command, since that
+--     pipeline was bound
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-uniformBuffers-06935# If any stage of
+--     the 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline
+--     bind point used by this command accesses a uniform buffer, and that
+--     stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @uniformBuffers@, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /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-vkCmdDrawMultiIndexedEXT-None-08612# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, and any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     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-vkCmdDrawMultiIndexedEXT-storageBuffers-06936# If any stage of
+--     the 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline
+--     bind point used by this command accesses a storage buffer, and that
+--     stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @storageBuffers@, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /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-vkCmdDrawMultiIndexedEXT-None-08613# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, and any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     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-vkCmdDrawMultiIndexedEXT-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
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shaders>
+--     /must/ not be a protected resource
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-viewType-07752# If a
+--     'Vulkan.Core10.Handles.ImageView' is accessed as a result of this
+--     command, then the image view’s @viewType@ /must/ match the @Dim@
+--     operand of the @OpTypeImage@ as described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-image-dimensions ???>
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-format-07753# If a
+--     'Vulkan.Core10.Handles.ImageView' or
+--     'Vulkan.Core10.Handles.BufferView' is accessed as a result of this
+--     command, then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-numericformat numeric type>
+--     of the view’s @format@ and the @Sampled@ @Type@ operand of the
+--     @OpTypeImage@ /must/ match
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-OpImageWrite-08795# If a
+--     'Vulkan.Core10.Handles.ImageView' created with a format other than
+--     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM' 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-vkCmdDrawMultiIndexedEXT-OpImageWrite-08796# If a
+--     'Vulkan.Core10.Handles.ImageView' created with the format
+--     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM' is accessed using
+--     @OpImageWrite@ as a result of this command, then the @Type@ of the
+--     @Texel@ operand of that instruction /must/ have four components
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-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-vkCmdDrawMultiIndexedEXT-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-vkCmdDrawMultiIndexedEXT-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-vkCmdDrawMultiIndexedEXT-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-vkCmdDrawMultiIndexedEXT-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-vkCmdDrawMultiIndexedEXT-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-vkCmdDrawMultiIndexedEXT-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-vkCmdDrawMultiIndexedEXT-OpImageSampleWeightedQCOM-06971# If
+--     @OpImageSampleWeightedQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-OpImageSampleWeightedQCOM-06972# If
+--     @OpImageSampleWeightedQCOM@ uses a 'Vulkan.Core10.Handles.ImageView'
+--     as a sample weight image 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-OpImageBoxFilterQCOM-06973# If
+--     @OpImageBoxFilterQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-OpImageBlockMatchSSDQCOM-06974# If
+--     @OpImageBlockMatchSSDQCOM@ is used to read from an
+--     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
+--     or
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_SXD_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-OpImageBlockMatchSADQCOM-12420# If
+--     @OpImageBlockMatchSADQCOM@ is used to read from an
+--     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
+--     or
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_SXD_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-OpImageBlockMatchSADQCOM-06976# If
+--     @OpImageBlockMatchSADQCOM@ or OpImageBlockMatchSSDQCOM is used to
+--     read from a reference image as result of this command, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-blockMatchExtendedClampToEdge blockMatchExtendedClampToEdge>
+--     feature is not enabled or the /input/ sampler was not created with
+--     both @addressModeU@ and @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--     then the specified reference coordinates /must/ not fail
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-OpImageSampleWeightedQCOM-06977# If
+--     @OpImageSampleWeightedQCOM@, @OpImageBoxFilterQCOM@,
+--     @OpImageBlockMatchWindowSSDQCOM@, @OpImageBlockMatchWindowSADQCOM@,
+--     @OpImageBlockMatchGatherSSDQCOM@, @OpImageBlockMatchGatherSADQCOM@,
+--     @OpImageBlockMatchSSDQCOM@, or @OpImageBlockMatchSADQCOM@ uses a
+--     'Vulkan.Core10.Handles.Sampler' as a result of this command, then
+--     the sampler /must/ have been created with
+--     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-OpImageSampleWeightedQCOM-06978# If
+--     any command other than @OpImageSampleWeightedQCOM@,
+--     @OpImageBoxFilterQCOM@, @OpImageBlockMatchWindowSSDQCOM@,
+--     @OpImageBlockMatchWindowSADQCOM@, @OpImageBlockMatchGatherSSDQCOM@,
+--     @OpImageBlockMatchGatherSADQCOM@, @OpImageBlockMatchSSDQCOM@, or
+--     @OpImageBlockMatchSADQCOM@ uses a 'Vulkan.Core10.Handles.Sampler' as
+--     a result of this command, then the sampler /must/ not have been
+--     created with
+--     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-OpImageBlockMatchWindow-09215# If a
+--     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     instruction is used to read from an
+--     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-OpImageBlockMatchWindow-09216# If a
+--     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     instruction is used to read from an
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the image view’s format /must/ be a single-component format
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-OpImageBlockMatchWindow-09217# If a
+--     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     read from a reference image as result of this command, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-blockMatchExtendedClampToEdge blockMatchExtendedClampToEdge>
+--     feature is not enabled or the /input/ sampler was not created with
+--     both @addressModeU@ and @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--     then the specified reference coordinates /must/ not fail
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-OpImageBlockMatchWindow-12421# If a
+--     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     instruction uses a 'Vulkan.Core10.Handles.Sampler' as a result of
+--     this command, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-blockMatchExtendedClampToEdge blockMatchExtendedClampToEdge>
+--     is not enabled, the /input/ sampler /must/ not have been created
+--     with either @addressModeU@ or @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-addressModeU-12422# If a
+--     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     instruction uses a 'Vulkan.Core10.Handles.Sampler' as a result of
+--     this command, and the /input/ sampler was created with either
+--     @addressModeU@ or @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE',
+--     then the sampler /must/ have been created with both @addressModeU@
+--     and @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07288# Any shader invocation
+--     executed by this command /must/
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-termination terminate>
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-09600# If a descriptor with type
+--     equal to any of
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',
+--     or
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'
+--     is accessed as a result of this command, all image subresources
+--     identified by that descriptor /must/ be in the image layout
+--     identified when the descriptor was written
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-micromap-11636# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command through an
+--     @OpRayQueryProceedKHR@ operation , the @VK_EXT_opacity_micromap@
+--     extension is not enabled, and the acceleration structure is built
+--     using geometry with a
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapKHR'
+--     structure included in its @pNext@ chain, the shader /must/ have
+--     specified a @OpacityMicromapIdKHR@ execution mode with its
+--     specialization constant operand equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-micromap-11637# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command and the
+--     acceleration structure was constructed through deserialization, all
+--     micromap arrays referenced by the acceleration structure that were
+--     not replaced by an acceleration structure update command /must/ have
+--     been deserialized using the serialized data of the corresponding
+--     micromaps used to originally build the acceleration structure prior
+--     to the execution of this command on the device
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-micromap-11638# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command and the
+--     acceleration structure is built using geometry with an @indexBuffer@
+--     containing both
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.OpacityMicromapSpecialIndexKHR'
+--     values and indices into an associated micromap array, any
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command /must/ not have been created with @flags@ that
+--     includes
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_KHR'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-micromap-11639# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command and the
+--     acceleration structure is built using geometry with an @indexBuffer@
+--     containing both
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.OpacityMicromapSpecialIndexKHR'
+--     values and indices into an associated micromap array, any
+--     'Vulkan.Extensions.Handles.ShaderEXT' that accessed the descriptor
+--     /must/ not have been created with @flags@ that includes
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-commandBuffer-10746# The
+--     'Vulkan.Core10.Handles.DeviceMemory' object allocated from a
+--     'Vulkan.Core10.DeviceInitialization.MemoryHeap' with the
+--     'Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_TILE_MEMORY_BIT_QCOM'
+--     property that is bound to a resource accessed as a result of this
+--     command /must/ be the active
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-bind-tile-memory bound tile memory object>
+--     in @commandBuffer@
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-10678# If this command is
+--     recorded inside a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-tile-shading tile shading render pass>
+--     instance, the stages corresponding to the pipeline bind point used
+--     by this command /must/ only include
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT',
+--     and\/or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-10679# If this command is
+--     recorded where
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model>
+--     is enabled, there /must/ be no access to any image while the image
+--     was be transitioned to the
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
+--     layout
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-pDescription-09900# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the
+--     underlying 'Vulkan.Extensions.Handles.TensorARM' object /must/ have
+--     been created with the
+--     'Vulkan.Extensions.VK_ARM_tensors.TENSOR_USAGE_SHADER_BIT_ARM' usage
+--     flag set
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-dimensionCount-09905# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the @Rank@
+--     of the @OpTypeTensorARM@ of the tensor resource variable /must/ be
+--     equal to the @dimensionCount@ provided via
+--     'Vulkan.Extensions.VK_ARM_tensors.TensorCreateInfoARM'::@pDescription@
+--     when creating the underlying 'Vulkan.Extensions.Handles.TensorARM'
+--     object
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-OpTypeTensorARM-09906# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the element
+--     type of the @OpTypeTensorARM@ of the tensor resource variable /must/
+--     be
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-tensor-formats compatible>
+--     with the 'Vulkan.Core10.Enums.Format.Format' of the
+--     'Vulkan.Extensions.Handles.TensorViewARM' used for the access
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-11297# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses a @OpTypeStruct@ decorated with @Block@ or
+--     @BufferBlock@ using that mapping, the calculated offset for the
+--     resource heap /must/ be a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-bufferDescriptorAlignment bufferDescriptorAlignment>
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-11298# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses an @OpTypeImage@ or @OpTypeSampledImage@ using
+--     that mapping, the calculated offset for the resource heap /must/ be
+--     a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-imageDescriptorAlignment imageDescriptorAlignment>
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-11299# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses an @OpTypeSampler@ or @OpTypeSampledImage@
+--     using that mapping, the calculated offset for the sampler heap
+--     /must/ be a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-samplerDescriptorAlignment samplerDescriptorAlignment>
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-11397# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses an @OpTypeTensorARM@ using that mapping, the
+--     calculated offset for the resource heap /must/ be a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-tensorDescriptorAlignment tensorDescriptorAlignment>
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-11300# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a
+--     multiple of 4
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-11301# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' backed by physical
+--     memory at every offset specified by each mapping
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-11302# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-11304# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a
+--     multiple of 8
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-11305# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' backed by physical
+--     memory at every offset specified by each mapping
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-11306# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address pointed to by the address in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-11308# For each
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps descriptor heap>
+--     that is statically used by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
+--     either directly or via a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>,
+--     a valid descriptor heap /must/ be bound
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-11309# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     was created as a 'Vulkan.Extensions.Handles.ShaderEXT' with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag or as part of a pipeline with the
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag, execution of this command /must/ not result in any descriptor
+--     read accessing data outside of the user range of the respective heap
+--     bound by @vkCmdBind*HeapEXT@ commands
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-11372# If any stage of the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command accesses a uniform buffer or uniform
+--     texel buffer through a descriptor in the bound resource heap, that
+--     stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @uniformBuffers@, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /must/ not access values outside
+--     of the range of the descriptor specified via
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+--     when the descriptor was written
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-11373# If any stage of the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command accesses a storage buffer or storage
+--     texel buffer through a descriptor in the bound resource heap, that
+--     stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @storageBuffers@, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /must/ not access values outside
+--     of the range of the descriptor specified by
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+--     when the descriptor was written
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-11374# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, and any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     to the pipeline bind point used by this command accesses a uniform
+--     buffer, uniform texel buffer, storage buffer, or storage texel
+--     buffer, that shader /must/ not access values outside of the range of
+--     the buffer as specified by
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+--     when the descriptor was written
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-pBindInfo-11375# If any
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     uses an embedded sampler via a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>,
+--     the value of @pBindInfo->reservedRangeSize@ set for
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.cmdBindSamplerHeapEXT'
+--     /must/ be greater than or equal to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minSamplerHeapReservedRangeWithEmbedded minSamplerHeapReservedRangeWithEmbedded>
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-11376# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     was created as a 'Vulkan.Extensions.Handles.ShaderEXT' with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag or as part of a pipeline with the
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag, and that shader statically uses a push constant value, that
+--     value /must/ have been set by
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.cmdPushDataEXT'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-11398# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_DATA_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_DATA_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_RESOURCE_HEAP_DATA_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the access
+--     /must/ not be
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-execution-memory-access-bounds out of bounds>
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-11437# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the buffer from
+--     which the address in push data was queried /must/ have been created
+--     with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-11438# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a uniform buffer using that mapping, the
+--     address that the uniform buffer is mapped to /must/ have been
+--     queried from a buffer created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-11441# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a uniform buffer using that mapping, the
+--     address that the uniform buffer is mapped to /must/ be aligned to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minUniformBufferOffsetAlignment minUniformBufferOffsetAlignment>
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-11439# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a storage buffer using that mapping, the
+--     address that the storage buffer is mapped to /must/ have been
+--     queried from a buffer created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_STORAGE_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-11442# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a storage buffer using that mapping, the
+--     address that the storage buffer is mapped to /must/ be aligned to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minStorageBufferOffsetAlignment minStorageBufferOffsetAlignment>
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-11485# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses an acceleration structure using that mapping,
+--     the address that the acceleration structure is mapped to /must/ be
+--     an acceleration structure address retrieved from a
+--     'Vulkan.Extensions.Handles.AccelerationStructureKHR' object via
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.getAccelerationStructureDeviceAddressKHR'
+--     or handle retrieved from a
+--     'Vulkan.Extensions.Handles.AccelerationStructureNV' object via
+--     'Vulkan.Extensions.VK_NV_ray_tracing.getAccelerationStructureHandleNV'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-index-11450# If a shader uses a
+--     sampler descriptor to sample an image as a result of this command,
+--     and that sampler descriptor uses a custom border color with an index
+--     defined by
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.SamplerCustomBorderColorIndexCreateInfoEXT',
+--     the value of
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.SamplerCustomBorderColorIndexCreateInfoEXT'::@index@
+--     /must/ have been registered before this command was recorded, and
+--     still be registered during the sampling operation, with an
+--     identically defined color
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-protectedNoFault-11455# If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, a pipeline is bound to the pipeline bind point
+--     used by this command, or a shader is bound to a shader stage used by
+--     this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     the address that the resource is mapped to /must/ have been queried
+--     from a buffer created without the
+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT'
+--     create flag set
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-protectedNoFault-11456# If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, a pipeline is bound to the pipeline bind point
+--     used by this command, or a shader is bound to a shader stage used by
+--     this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     the address of the indirect memory /must/ have been queried from a
+--     buffer created without the
+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT'
+--     create flag set
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-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.GraphicsPipeline.GraphicsPipelineCreateInfo'
+--     structure specified when creating the
+--     'Vulkan.Core10.Handles.Pipeline' bound to
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-subpass-02685# The subpass index of
+--     the current render pass /must/ be equal to the @subpass@ member of
+--     the 'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'
+--     structure specified when creating the
+--     'Vulkan.Core10.Handles.Pipeline' bound to
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-OpTypeImage-07468# If any shader
+--     executed by this pipeline accesses an @OpTypeImage@ variable with a
+--     @Dim@ operand of @SubpassData@, it /must/ be decorated with an
+--     @InputAttachmentIndex@ that corresponds to a valid input attachment
+--     in the current subpass
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07469# Input attachment views
+--     accessed in a subpass /must/ be created with the same
+--     'Vulkan.Core10.Enums.Format.Format' as the corresponding subpass
+--     definition, and be created with a 'Vulkan.Core10.Handles.ImageView'
+--     that is compatible with the attachment referenced by the subpass\'
+--     @pInputAttachments@[@InputAttachmentIndex@] in the bound
+--     'Vulkan.Core10.Handles.Framebuffer' as specified by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#compatibility-inputattachment Fragment Input Attachment Compatibility>
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-pDepthInputAttachmentIndex-09595#
+--     Input attachment views accessed in a dynamic render pass with a
+--     @InputAttachmentIndex@ referenced by
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo',
+--     or no @InputAttachmentIndex@ if
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pDepthInputAttachmentIndex@
+--     or
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pStencilInputAttachmentIndex@
+--     are @NULL@, /must/ be created with a
+--     'Vulkan.Core10.Handles.ImageView' that is compatible with the
+--     corresponding color, depth, or stencil attachment in
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-pDepthInputAttachmentIndex-09596#
+--     Input attachment views accessed in a dynamic render pass via a
+--     shader object /must/ have an @InputAttachmentIndex@ if both
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pDepthInputAttachmentIndex@
+--     and
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pStencilInputAttachmentIndex@
+--     are non-@NULL@
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-InputAttachmentIndex-09597# If an
+--     input attachment view accessed in a dynamic render pass via a shader
+--     object has an @InputAttachmentIndex@, the @InputAttachmentIndex@
+--     /must/ match an index in
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-06537# Memory backing image
+--     subresources used as attachments in the current render pass /must/
+--     not be written in any way other than as an attachment by this
+--     command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-10795# If a color attachment is
+--     written by any prior command in this subpass or by the load, store,
+--     or resolve operations for this subpass, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT' on
+--     that attachment, it /must/ not be accessed in any way other than as
+--     an attachment by this command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-10796# If a depth attachment is
+--     written by any prior command in this subpass or by the load, store,
+--     or resolve operations for this subpass, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' on
+--     that attachment, it /must/ not be accessed in any way other than as
+--     an attachment by this command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-10797# If a stencil attachment
+--     is written by any prior command in this subpass or by the load,
+--     store, or resolve operations for this subpass, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
+--     on that attachment, it /must/ not be accessed in any way other than
+--     as an attachment by this command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-12338# If a color attachment is
+--     read in this command in any way other than as an attachment, or has
+--     been read by any prior command in this subpass as a non-attachment,
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT' on
+--     that attachment, the color attachment /must/ not be written to by
+--     this command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-12339# If a depth attachment is
+--     read in this command in any way other than as an attachment, or has
+--     been read by any prior command in this subpass as a non-attachment,
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' on
+--     that attachment, the depth attachment /must/ not be written to by
+--     this command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-12340# If a stencil attachment
+--     is read in this command in any way other than as an attachment, or
+--     has been read by any prior command in this subpass as a
+--     non-attachment, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
+--     on that attachment, the stencil attachment /must/ not be written to
+--     by this command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-09003# If an attachment is
+--     written by any prior command in this subpass or by the load, store,
+--     or resolve operations for this subpass, it /must/ not be accessed in
+--     any way other than as an attachment, storage image, or sampled image
+--     by this command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-06886# If the current render
+--     pass instance uses a depth\/stencil attachment with a read-only
+--     layout for the depth aspect,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-depth-write depth writes>
+--     /must/ be disabled
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-06887# If the current render
+--     pass instance uses a depth\/stencil attachment with a read-only
+--     layout for the stencil aspect, both front and back @writeMask@ are
+--     not zero, and stencil test is enabled,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-stencil all stencil ops>
+--     /must/ be 'Vulkan.Core10.Enums.StencilOp.STENCIL_OP_KEEP'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07831# If the bound graphics
+--     pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT' dynamic
+--     state enabled then
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetViewport' /must/ have
+--     been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07832# If the bound graphics
+--     pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR' dynamic
+--     state enabled then
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetScissor' /must/ have been
+--     called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08617# If a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_WIDTH' dynamic
+--     state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line topology class, then
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth' /must/ have
+--     been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07834# If a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS' dynamic
+--     state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @depthBiasEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBias' or
+--     'Vulkan.Extensions.VK_EXT_depth_bias_control.cmdSetDepthBias2EXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07835# If a shader object is
+--     bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_BLEND_CONSTANTS'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and an active color
+--     attachment
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @blendEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE' with a
+--     blend equations where any
+--     'Vulkan.Core10.Enums.BlendFactor.BlendFactor' member is
+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_COLOR',
+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR',
+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_ALPHA', or
+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA',
+--     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetBlendConstants'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07836# If a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @depthBoundsTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBounds' /must/
+--     have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07837# If a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_COMPARE_MASK'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilCompareMask'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07838# If a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_WRITE_MASK'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilWriteMask'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07839# If a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_REFERENCE'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of and @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilReference'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-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-vkCmdDrawMultiIndexedEXT-sampleLocationsEnable-02689# If the
+--     bound graphics pipeline was created with
+--     'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@
+--     set to 'Vulkan.Core10.FundamentalTypes.TRUE', then the active depth
+--     attachment /must/ have been created with the
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'
+--     bit set
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07634# If the
+--     @VK_EXT_sample_locations@ extension is enabled, a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-06666# If the
+--     @VK_EXT_sample_locations@ extension is enabled, a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07840# If a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CULL_MODE' dynamic
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetCullMode'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07841# If a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRONT_FACE' dynamic
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetFrontFace'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07843# If a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_TEST_ENABLE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE',
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthTestEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07844# If a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @depthTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthWriteEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07845# If a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_COMPARE_OP'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @depthTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthCompareOp'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07846# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthBounds depthBounds>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthBoundsTestEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07847# If a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_TEST_ENABLE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilTestEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07848# If a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_OP' dynamic
+--     state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilOp'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-viewportCount-03417# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
+--     dynamic state enabled, and the state is not inherited, then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-scissorCount-03418# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
+--     dynamic state enabled, and the state is not inherited, then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-viewportCount-03419# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which 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, and the state is not inherited, then 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-vkCmdDrawMultiIndexedEXT-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-vkCmdDrawMultiIndexedEXT-viewportCount-04138# If the
+--     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which 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 state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @viewportWScalingEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.cmdSetViewportWScalingNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08636# If the
+--     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which 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 state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @viewportWScalingEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', 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-vkCmdDrawMultiIndexedEXT-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-vkCmdDrawMultiIndexedEXT-shadingRateImage-09233# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV'
+--     and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetCoarseSampleOrderNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-shadingRateImage-09234# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which 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 state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @shadingRateImageEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetViewportShadingRatePaletteNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08637# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which 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 state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @shadingRateImageEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', 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-vkCmdDrawMultiIndexedEXT-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
+--     'Vulkan.Core10.GraphicsPipeline.PipelineViewportStateCreateInfo',
+--     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-vkCmdDrawMultiIndexedEXT-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
+--     'Vulkan.Core10.GraphicsPipeline.PipelineViewportStateCreateInfo',
+--     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-vkCmdDrawMultiIndexedEXT-None-07878# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-exclusiveScissor exclusiveScissor>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07879# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-exclusiveScissor exclusiveScissor>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV'
+--     dynamic state enabled, and the most recent call to
+--     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorEnableNV'
+--     in the current command buffer set any element of
+--     @pExclusiveScissorEnables@ to 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then
+--     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-04876# If a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     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 and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-04877# If a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-logicOp-04878# If a shader object is
+--     bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @logicOpEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetLogicOpEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-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-vkCmdDrawMultiIndexedEXT-primitiveFragmentShadingRateWithMultipleViewports-08642#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
+--     limit is not supported, and any shader object bound to a graphics
+--     stage writes 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-vkCmdDrawMultiIndexedEXT-blendEnable-04727# If a shader object
+--     is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then for each color
+--     attachment, 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 corresponding
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @blendEnable@ /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08644# If a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and none of the following is
+--     enabled:
+--
+--     -   the @VK_AMD_mixed_attachment_samples@ extension
+--
+--     -   the @VK_NV_framebuffer_mixed_samples@ extension
+--
+--     -   the
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
+--         feature
+--
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizationSamples@ /must/ be the same as the current color
+--     and\/or depth\/stencil attachments
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08876# If a shader object is
+--     bound to any graphics stage, the current render pass instance /must/
+--     have been begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-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-vkCmdDrawMultiIndexedEXT-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-vkCmdDrawMultiIndexedEXT-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-vkCmdDrawMultiIndexedEXT-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-vkCmdDrawMultiIndexedEXT-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-vkCmdDrawMultiIndexedEXT-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-vkCmdDrawMultiIndexedEXT-viewMask-06178# If the current render
+--     pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the 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-vkCmdDrawMultiIndexedEXT-colorAttachmentCount-06179# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled and the current render pass instance was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the 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-vkCmdDrawMultiIndexedEXT-dynamicRenderingUnusedAttachments-08910#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and 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 an @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 bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-dynamicRenderingUnusedAttachments-08912#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and 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 an @imageView@ equal to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have the
+--     corresponding element of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
+--     used to create the bound pipeline equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-dynamicRenderingUnusedAttachments-08911#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled, and 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 an @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 bound graphics pipeline, or the corresponding
+--     element of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@,
+--     if it exists, /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-colorAttachmentCount-09362# If 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@
+--     equal to @1@, there is no shader object bound to any graphics stage,
+--     and a color attachment with a resolve mode of
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID',
+--     each element of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
+--     array with a @resolveImageView@ not equal to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
+--     with an image created with a
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value equal to the
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value used to create the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-09363# If there is no shader
+--     object bound to any graphics stage, the current render pass instance
+--     was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and a
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
+--     equal to @1@, and a color attachment with a resolve mode of
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID',
+--     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 an image created with a
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value equal to the
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value used to create the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-09364# If the current render
+--     pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there is no shader object bound to any graphics stage, and the bound
+--     graphics pipeline was created with a non-zero
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value and with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
+--     /must/ have set the blend enable to
+--     'Vulkan.Core10.FundamentalTypes.FALSE' prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-09365# If the current render
+--     pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there is no shader object bound to any graphics stage, and the bound
+--     graphics pipeline was created with a non-zero
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value and with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     /must/ have set @rasterizationSamples@ to
+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' prior
+--     to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-09366# If there is a shader
+--     object bound to any graphics stage, and the current render pass
+--     includes a color attachment that uses the
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID'
+--     resolve mode, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
+--     /must/ have set blend enable to
+--     'Vulkan.Core10.FundamentalTypes.FALSE' prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-rasterizationSamples-09367# If there
+--     is a shader object bound to any graphics stage, and the current
+--     render pass includes a color attachment that uses the
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID'
+--     resolve mode, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     /must/ have set @rasterizationSamples@ to
+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' prior
+--     to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-09368# If the current render
+--     pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there is no shader object bound to any graphics stage, and the bound
+--     graphics pipeline was created with a non-zero
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value and with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     /must/ have set @pFragmentSize->width@ to @1@ prior to this drawing
+--     command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-09369# If the current render
+--     pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there is no shader object bound to any graphics stage, and the bound
+--     graphics pipeline was created with a non-zero
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value and with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     /must/ have set @pFragmentSize->height@ to @1@ prior to this drawing
+--     command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-pFragmentSize-09370# If there is a
+--     shader object bound to any graphics stage, and the current render
+--     pass includes a color attachment that uses the
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID'
+--     resolve mode, then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     /must/ have set @pFragmentSize->width@ to @1@ prior to this drawing
+--     command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-pFragmentSize-09371# If there is a
+--     shader object bound to any graphics stage, and the current render
+--     pass includes a color attachment that uses the
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID'
+--     resolve mode, then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     /must/ have set @pFragmentSize->height@ to @1@ prior to this drawing
+--     command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07749# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
+--     feature is enabled, a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-attachmentCount-07750# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
+--     feature is enabled, a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then the @attachmentCount@
+--     parameter of most recent call to
+--     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
+--     in the current command buffer /must/ be greater than or equal to the
+--     number of active color attachments
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07751# If the
+--     @VK_EXT_discard_rectangles@ extension is enabled, a graphics
+--     pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_EXT'
+--     dynamic state enabled and the @pNext@ chain of
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo' included
+--     a
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'
+--     structure, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @discardRectangleEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command for each
+--     discard rectangle in
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'::@discardRectangleCount@
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-rasterizerDiscardEnable-09236# If the
+--     @VK_EXT_discard_rectangles@ extension is enabled, a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_EXT'
+--     dynamic state enabled and the @pNext@ chain of
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo' did not
+--     include a
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'
+--     structure, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @discardRectangleEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command for each
+--     discard rectangle in
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.PhysicalDeviceDiscardRectanglePropertiesEXT'::@maxDiscardRectangles@
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07880# If the
+--     @VK_EXT_discard_rectangles@ extension is enabled, a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07881# If the
+--     @VK_EXT_discard_rectangles@ extension is enabled, a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @discardRectangleEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleModeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-dynamicRenderingUnusedAttachments-08913#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
+--     used to create the bound graphics pipeline /must/ be equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-dynamicRenderingUnusedAttachments-08914#
+--     If current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->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 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->imageView@
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-dynamicRenderingUnusedAttachments-08915#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
+--     used to create the bound graphics pipeline was not equal to the
+--     'Vulkan.Core10.Enums.Format.Format' used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@,
+--     the value of the format /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-dynamicRenderingUnusedAttachments-08916#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
+--     used to create the bound graphics pipeline /must/ be equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-dynamicRenderingUnusedAttachments-08917#
+--     If current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->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 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->imageView@
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-dynamicRenderingUnusedAttachments-08918#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
+--     used to create the bound graphics pipeline was not equal to the
+--     'Vulkan.Core10.Enums.Format.Format' used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@,
+--     the value of the format /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-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_fragment_shading_rate.RenderingFragmentShadingRateAttachmentInfoKHR'::@imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the bound graphics
+--     pipeline /must/ have been created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-dynamicRenderingLocalRead-11797# If
+--     the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingLocalRead dynamicRenderingLocalRead>
+--     feature is enabled, the
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_LOCAL_READ_CONCURRENT_ACCESS_CONTROL_BIT_KHR'
+--     flag is specified, and an attachment is being used as a feedback
+--     loop as specified by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#rendering-attachment-input-attachment-feedback >,
+--     'Vulkan.Extensions.VK_KHR_maintenance10.RenderingAttachmentFlagsInfoKHR'::@flags@
+--     for that attachment /must/ include
+--     'Vulkan.Extensions.VK_KHR_maintenance10.RENDERING_ATTACHMENT_INPUT_ATTACHMENT_FEEDBACK_BIT_KHR'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-imageView-06184# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and
+--     'Vulkan.Extensions.VK_EXT_fragment_density_map.RenderingFragmentDensityMapAttachmentInfoEXT'::@imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the bound graphics
+--     pipeline /must/ have been created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-layers-10831# If the current render
+--     pass instance was created with
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE'
+--     or
+--     'Vulkan.Core10.Enums.RenderPassCreateFlagBits.RENDER_PASS_CREATE_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE',
+--     and the bound graphics pipeline was created with
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE',
+--     then the current render pass instance /must/ have a @layers@ value
+--     less than or equal to
+--     'Vulkan.Extensions.VK_VALVE_fragment_density_map_layered.PipelineFragmentDensityMapLayeredCreateInfoVALVE'::@maxFragmentDensityMapLayers@
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-colorAttachmentCount-06185# If the
+--     bound pipeline was created with a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.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_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     used to create the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-pDepthAttachment-06186# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the bound pipeline was created with a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     structure, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
+--     @depthStencilAttachmentSamples@ member of
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     used to create the bound graphics pipeline /must/ be equal to the
+--     sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-pStencilAttachment-06187# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the bound pipeline was created with a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     structure, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
+--     @depthStencilAttachmentSamples@ member of
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     used to create the bound graphics pipeline /must/ be equal to the
+--     sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-multisampledRenderToSingleSampled-07285#
+--     If the bound pipeline was created without a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     structure, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
+--     feature is not enabled, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, 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 @rasterizationSamples@ for
+--     the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-multisampledRenderToSingleSampled-07286#
+--     If the bound pipeline was created without a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     structure, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
+--     feature is not enabled, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     @rasterizationSamples@ for the bound graphics pipeline /must/ be
+--     equal to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-multisampledRenderToSingleSampled-07287#
+--     If the bound pipeline was created without a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     structure, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
+--     feature is not enabled, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     @rasterizationSamples@ for the bound graphics pipeline /must/ be
+--     equal to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-pNext-07935# If this command is
+--     called inside a render pass instance started with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     and the @pNext@ chain of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'
+--     includes a
+--     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'
+--     structure with @multisampledRenderToSingleSampledEnable@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then the value of
+--     @rasterizationSamples@ for the bound graphics pipeline /must/ be
+--     equal to
+--     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'::@rasterizationSamples@
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-renderPass-06198# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the bound pipeline /must/ have been created with a
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'::@renderPass@
+--     equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-pColorAttachments-08963# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, there is a
+--     graphics pipeline bound with a fragment shader that statically
+--     writes to a color attachment, the color write mask is not zero,
+--     color writes are enabled, and the corresponding element of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     corresponding element of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-pColorAttachments-11539# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, there is a graphics
+--     pipeline bound with a fragment shader that statically writes to a
+--     color attachment, the color write mask is not zero, color writes are
+--     enabled, and the corresponding element of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     corresponding element of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-pDepthAttachment-08964# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, there is a
+--     graphics pipeline bound, depth test is enabled, and the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-pDepthAttachment-11540# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, there is a graphics
+--     pipeline bound, depth test is enabled, and the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-pStencilAttachment-08965# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, there is a
+--     graphics pipeline bound, stencil test is enabled and the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-pStencilAttachment-11860# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, there is a graphics
+--     pipeline bound, stencil test is enabled and the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-flags-10582# If the current render
+--     pass instance was begun with a
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     call in @commandBuffer@, its
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@flags@
+--     parameter /must/ not have
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT'
+--     set unless
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_CONTENTS_INLINE_BIT_KHR'
+--     is also set
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-primitivesGeneratedQueryWithRasterizerDiscard-06708#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithRasterizerDiscard primitivesGeneratedQueryWithRasterizerDiscard>
+--     feature is not enabled and the
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
+--     query is active,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-discard rasterization discard>
+--     /must/ not be enabled
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-primitivesGeneratedQueryWithNonZeroStreams-06709#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>
+--     feature is not enabled and the
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
+--     query is active, the bound graphics pipeline /must/ not have been
+--     created with a non-zero value in
+--     'Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT'::@rasterizationStream@
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07620# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClamp depthClamp>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClampEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07621# If a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_POLYGON_MODE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07622# If a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07623# If a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-alphaToCoverageEnable-08919# If the
+--     bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT'
+--     dynamic state enabled, and @alphaToCoverageEnable@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-fragmentoutput Fragment Output Interface>
+--     /must/ contain a variable for the alpha @Component@ word in
+--     @Location@ 0 at @Index@ 0
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-alphaToCoverageEnable-08920# If a
+--     shader object is bound to any graphics stage, and the most recent
+--     call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT'
+--     in the current command buffer set @alphaToCoverageEnable@ to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-fragmentoutput Fragment Output Interface>
+--     /must/ contain a variable for the alpha @Component@ word in
+--     @Location@ 0 at @Index@ 0
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07624# If a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07625# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-alphaToOne alphaToOne>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToOneEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07626# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-logicOp logicOp>
+--     feature is enabled, a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLogicOpEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07627# If a shader object is
+--     bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and there are color
+--     attachments bound, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07629# If a shader object is
+--     bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and there are color
+--     attachments bound, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07630# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryStreams geometryStreams>
+--     feature is enabled, and a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
+--     stage or a graphics pipeline is bound which was created with both a
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
+--     stage and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_STREAM_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationStreamEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07631# If the
+--     @VK_EXT_conservative_rasterization@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetConservativeRasterizationModeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07632# If the
+--     @VK_EXT_conservative_rasterization@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @conservativeRasterizationMode@ is
+--     'Vulkan.Extensions.VK_EXT_conservative_rasterization.CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT',
+--     then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetExtraPrimitiveOverestimationSizeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-conservativePointAndLineRasterization-07499#
+--     If the @VK_EXT_conservative_rasterization@ extension is enabled,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-conservativePointAndLineRasterization conservativePointAndLineRasterization>
+--     is not supported, a shader object is bound to any graphics stage or
+--     a graphics pipeline is bound, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line or point topology class, then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @conservativeRasterizationMode@ /must/ be
+--     'Vulkan.Extensions.VK_EXT_conservative_rasterization.CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07633# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClipEnable depthClipEnable>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT'
+--     dynamic state, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07636# If the
+--     @VK_EXT_provoking_vertex@ extension is enabled, a shader object is
+--     bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetProvokingVertexModeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08666# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
+--     features are enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line topology class, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08669# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
+--     features are enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line topology class, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07849# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
+--     features are enabled and a shader object is bound to any graphics
+--     stage, or a bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @stippledLineEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then
+--     'Vulkan.Core14.Promoted_From_VK_KHR_line_rasterization.cmdSetLineStipple'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-10608# If a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line topology class, and the current @lineRasterizationMode@
+--     is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_BRESENHAM'
+--     or
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH',
+--     then the current @alphaToCoverageEnable@, @alphaToOneEnable@ and
+--     @sampleShadingEnable@ states /must/ all be
+--     'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07639# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClipControl depthClipControl>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipNegativeOneToOneEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-09650# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClampControl depthClampControl>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @depthClampEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_depth_clamp_control.cmdSetDepthClampRangeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07640# If the
+--     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportWScalingEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07641# If the
+--     @VK_NV_viewport_swizzle@ extension is enabled, and a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07642# If the
+--     @VK_NV_fragment_coverage_to_color@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07643# If the
+--     @VK_NV_fragment_coverage_to_color@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @coverageToColorEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07644# If the
+--     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationModeNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07645# If the
+--     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @coverageModulationMode@ is any value other than
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.COVERAGE_MODULATION_MODE_NONE_NV',
+--     then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07646# If the
+--     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @coverageModulationTableEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07647# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetShadingRateImageEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-pipelineFragmentShadingRate-09238# If
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07648# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-representativeFragmentTest representativeFragmentTest>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRepresentativeFragmentTestEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07649# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-coverageReductionMode coverageReductionMode>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageReductionModeNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-rasterizationSamples-07471# If the
+--     bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, and the current subpass does not use any color
+--     and\/or depth\/stencil attachments, then the @rasterizationSamples@
+--     in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     /must/ follow the rules for a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-noattachments zero-attachment subpass>
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-samples-07472# If the bound graphics
+--     pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
+--     state enabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state disabled, then the @samples@ parameter in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
+--     /must/ be greater or equal to the
+--     'Vulkan.Core10.GraphicsPipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
+--     parameter used to create the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-samples-07473# If the bound graphics
+--     pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
+--     state and
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     states enabled, then the @samples@ parameter in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
+--     /must/ be greater or equal to the @rasterizationSamples@ parameter
+--     in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-09211# If the bound graphics
+--     pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, or a shader object is bound to any graphics stage,
+--     and the current render pass instance includes a
+--     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'
+--     structure with @multisampledRenderToSingleSampledEnable@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then the
+--     @rasterizationSamples@ in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     /must/ be the same as the @rasterizationSamples@ member of that
+--     structure
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-firstAttachment-07476# If a shader
+--     object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--     dynamic states enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
+--     in the current command buffer prior to this drawing command /must/
+--     have set a value for all active color attachments
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-firstAttachment-07478# If a shader
+--     object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT'
+--     dynamic states enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
+--     in the current command buffer prior to this drawing command /must/
+--     have set a value for all active color attachments
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-advancedBlendMaxColorAttachments-07480#
+--     If a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
+--     and
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--     dynamic states enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and an active color
+--     attachment
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @blendEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then the
+--     number of active color attachments /must/ not exceed
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-advancedBlendMaxColorAttachments advancedBlendMaxColorAttachments>
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-10862# If a graphics pipeline is
+--     bound was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
+--     , but not the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command for all
+--     active color attachments with the @blendEnable@
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-rasterizerDiscardEnable-10863# If a
+--     graphics pipeline is bound was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT',
+--     but not the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command for all
+--     active color attachments with the @blendEnable@
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-10864# If a shader object is
+--     bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
+--     and
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then either
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command for all
+--     active color attachments with the @blendEnable@
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-primitivesGeneratedQueryWithNonZeroStreams-07481#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>
+--     feature is not enabled and the
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
+--     query is active, and the bound graphics pipeline was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_STREAM_EXT'
+--     state enabled, the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationStreamEXT'
+--     /must/ have set the @rasterizationStream@ to zero
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-sampleLocationsPerPixel-07482# If the
+--     bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state enabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state disabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then the @sampleLocationsPerPixel@ member of @pSampleLocationsInfo@
+--     in the last call to
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     /must/ equal the @rasterizationSamples@ member of the
+--     'Vulkan.Core10.GraphicsPipeline.PipelineMultisampleStateCreateInfo'
+--     structure the bound graphics pipeline has been created with
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-sampleLocationsPerPixel-07483# If the
+--     bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state enabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then the @sampleLocationsPerPixel@ member of @pSampleLocationsInfo@
+--     in the last call to
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     /must/ equal the @rasterizationSamples@ parameter of the last call
+--     to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-sampleLocationsEnable-07484# If a
+--     shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage, or the bound graphics pipeline was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     state enabled, and @sampleLocationsEnable@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT'
+--     then the current active depth attachment /must/ have been created
+--     with the
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'
+--     bit set
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-sampleLocationsEnable-07485# If a
+--     shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage, or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state enabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     state enabled, and if @sampleLocationsEnable@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
+--     then the @sampleLocationsInfo.maxSampleLocationGridSize.width@ in
+--     the last call to
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     /must/ evenly divide
+--     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.width@
+--     as returned by
+--     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
+--     with a @samples@ parameter equaling @rasterizationSamples@
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-sampleLocationsEnable-07486# If a
+--     shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage, or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state enabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     state enabled, and if @sampleLocationsEnable@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
+--     then the @sampleLocationsInfo.maxSampleLocationGridSize.height@ in
+--     the last call to
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     /must/ evenly divide
+--     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.height@
+--     as returned by
+--     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
+--     with a @samples@ parameter equaling @rasterizationSamples@
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-sampleLocationsEnable-07487# If a
+--     shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage, or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     state enabled, and if @sampleLocationsEnable@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
+--     the fragment shader code /must/ not statically use the extended
+--     instruction @InterpolateAtSample@
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-sampleLocationsEnable-07936# If the
+--     bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state disabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then @sampleLocationsInfo.sampleLocationGridSize.width@ /must/
+--     evenly divide
+--     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.width@
+--     as returned by
+--     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
+--     with a @samples@ parameter equaling the value of
+--     @rasterizationSamples@ in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-sampleLocationsEnable-07937# If the
+--     bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state disabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then @sampleLocationsInfo.sampleLocationGridSize.height@ /must/
+--     evenly divide
+--     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.height@
+--     as returned by
+--     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
+--     with a @samples@ parameter equaling the value of
+--     @rasterizationSamples@ in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-sampleLocationsEnable-07938# If the
+--     bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state disabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then @sampleLocationsInfo.sampleLocationsPerPixel@ /must/ equal
+--     @rasterizationSamples@ in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-coverageModulationTableEnable-07488#
+--     If a shader object is bound to any graphics stage or the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV'
+--     state enabled, and the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV'
+--     set @coverageModulationTableEnable@ to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then the
+--     @coverageModulationTableCount@ parameter in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableNV'
+--     /must/ equal the current @rasterizationSamples@ divided by the
+--     number of color samples in the current active color attachment
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-rasterizationSamples-07489# If the
+--     @VK_NV_framebuffer_mixed_samples@ extension is enabled, and if
+--     current subpass has a depth\/stencil attachment and depth test,
+--     stencil test, or depth bounds test are enabled in the bound
+--     pipeline, then the current @rasterizationSamples@ /must/ be the same
+--     as the sample count of the depth\/stencil attachment
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-coverageToColorEnable-07490# If the
+--     bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
+--     state enabled and the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
+--     set the @coverageToColorEnable@ to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then there /must/ be an
+--     active color attachment at the location selected by the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
+--     @coverageToColorLocation@, with a
+--     'Vulkan.Core10.Enums.Format.Format' of
+--     'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R8_SINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R16_UINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R16_SINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R32_UINT', or
+--     'Vulkan.Core10.Enums.Format.FORMAT_R32_SINT'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-rasterizerDiscardEnable-09420# If the
+--     @VK_NV_fragment_coverage_to_color@ extension is enabled, and a
+--     shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage, and the most recent call to
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
+--     in the current command buffer set @rasterizerDiscardEnable@ to
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
+--     set the @coverageToColorEnable@ to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then there /must/ be an
+--     active color attachment at the location selected by the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
+--     @coverageToColorLocation@, with a
+--     'Vulkan.Core10.Enums.Format.Format' of
+--     'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R8_SINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R16_UINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R16_SINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R32_UINT', or
+--     'Vulkan.Core10.Enums.Format.FORMAT_R32_SINT'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-coverageReductionMode-07491# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-coverageReductionMode coverageReductionMode>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV'
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     dynamic states enabled, then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current values>
+--     of @coverageReductionMode@, @rasterizationSamples@, the sample
+--     counts for the color and depth\/stencil attachments (if the subpass
+--     has them) /must/ be a valid combination returned by
+--     'Vulkan.Extensions.VK_NV_coverage_reduction_mode.getPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-viewportCount-07492# 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_SWIZZLE_NV'
+--     dynamic state enabled, 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-vkCmdDrawMultiIndexedEXT-viewportCount-07493# 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_SWIZZLE_NV'
+--     dynamic states enabled then the @viewportCount@ parameter in the
+--     last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
+--     /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-vkCmdDrawMultiIndexedEXT-viewportCount-09421# If the
+--     @VK_NV_viewport_swizzle@ extension is enabled, and a shader object
+--     is bound to any graphics stage, then the @viewportCount@ parameter
+--     in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
+--     /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-vkCmdDrawMultiIndexedEXT-rasterizationSamples-07494# If the
+--     @VK_NV_framebuffer_mixed_samples@ extension is enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-coverageReductionMode coverageReductionMode>
+--     feature is not enabled, or the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @coverageReductionMode@ is not
+--     'Vulkan.Extensions.VK_NV_coverage_reduction_mode.COVERAGE_REDUCTION_MODE_TRUNCATE_NV',
+--     and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizationSamples@ is greater than sample count of the color
+--     attachment, then
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-sampleshading sample shading>
+--     /must/ be disabled
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-stippledLineEnable-07495# If the
+--     bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic states enabled, and if the current @stippledLineEnable@
+--     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
+--     @lineRasterizationMode@ state is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_RECTANGULAR',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-stippledLineEnable-07496# If the
+--     bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic states enabled, and if the current @stippledLineEnable@
+--     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
+--     @lineRasterizationMode@ state is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_BRESENHAM',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-stippledLineEnable-07497# If the
+--     bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic states enabled, and if the current @stippledLineEnable@
+--     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
+--     @lineRasterizationMode@ state is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-stippledLineEnable-07498# If the
+--     bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic states enabled, and if the current @stippledLineEnable@
+--     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
+--     @lineRasterizationMode@ state is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_DEFAULT',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>
+--     feature /must/ be enabled and
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@strictLines@
+--     /must/ be 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-stage-07073# If the bound pipeline
+--     was created with the
+--     'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo'::@stage@
+--     member of an element of
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'::@pStages@
+--     set to
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT',
+--     then
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-mesh-shader Mesh Shader Queries>
+--     /must/ not be active
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08877# If a shader object is
+--     bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07850# If dynamic state was
+--     inherited from
+--     'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV',
+--     it /must/ be set in the current command buffer prior to this drawing
+--     command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-nextStage-10745# For each shader
+--     object bound to a graphics stage, except for shader object bound to
+--     the last graphics stage in the logical pipeline, it /must/ have been
+--     created with a @nextStage@ including the corresponding bit to the
+--     shader object bound to the following graphics stage in the logical
+--     pipeline
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08684# If there is no bound
+--     graphics pipeline,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08685# If there is no bound
+--     graphics pipeline, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellationShader>
+--     feature is enabled,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08686# If there is no bound
+--     graphics pipeline, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellationShader>
+--     feature is enabled,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08687# If there is no bound
+--     graphics pipeline, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometryShader>
+--     feature is enabled,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08688# If there is no bound
+--     graphics pipeline,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08689# If there is no bound
+--     graphics pipeline, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
+--     feature is enabled,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08690# If there is no bound
+--     graphics pipeline, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
+--     feature is enabled,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08693# If there is no bound
+--     graphics pipeline, and at least one of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
+--     features is enabled, one of the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--     stages /must/ have a valid 'Vulkan.Extensions.Handles.ShaderEXT'
+--     bound, and the other /must/ have no
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08696# If there is no bound
+--     graphics pipeline, and a valid 'Vulkan.Extensions.Handles.ShaderEXT'
+--     is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage, there /must/ be no 'Vulkan.Extensions.Handles.ShaderEXT'
+--     bound to either the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--     stage or the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--     stage
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08698# If any graphics shader is
+--     bound which was created with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
+--     flag, then all shaders created with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
+--     flag in the same
+--     'Vulkan.Extensions.VK_EXT_shader_object.createShadersEXT' call
+--     /must/ also be bound
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08699# If any graphics shader is
+--     bound which was created with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
+--     flag, any stages in between stages whose shaders which did not
+--     create a shader with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
+--     flag as part of the same
+--     'Vulkan.Extensions.VK_EXT_shader_object.createShadersEXT' call
+--     /must/ not have any 'Vulkan.Extensions.Handles.ShaderEXT' bound
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08878# All bound graphics shader
+--     objects /must/ have been created with identical or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-identically-defined identically defined>
+--     push constant ranges
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08879# All bound graphics shader
+--     objects /must/ have either been created with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag set, or with identical or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-identically-defined identically defined>
+--     arrays of descriptor set layouts
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-colorAttachmentCount-09372# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and a
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
+--     equal to @1@, a color attachment with a resolve mode of
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID',
+--     and a fragment shader is bound, it /must/ not declare the
+--     @DepthReplacing@ or @StencilRefReplacingEXT@ execution modes
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-pDynamicStates-08715# If the bound
+--     graphics pipeline state includes a fragment shader stage, was
+--     created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE'
+--     set in
+--     'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@,
+--     and the fragment shader declares the @EarlyFragmentTests@ execution
+--     mode and uses @OpDepthAttachmentReadEXT@, the @depthWriteEnable@
+--     parameter in the last call to
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthWriteEnable'
+--     /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-pDynamicStates-08716# If the bound
+--     graphics pipeline state includes a fragment shader stage, was
+--     created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_WRITE_MASK'
+--     set in
+--     'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@,
+--     and the fragment shader declares the @EarlyFragmentTests@ execution
+--     mode and uses @OpStencilAttachmentReadEXT@, the @writeMask@
+--     parameter in the last call to
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilWriteMask' /must/
+--     be @0@
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-09116# If a shader object is
+--     bound to any graphics stage or the bound graphics pipeline was
+--     created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT',
+--     and the format of any color attachment is
+--     'Vulkan.Core10.Enums.Format.FORMAT_E5B9G9R9_UFLOAT_PACK32', the
+--     corresponding element of the @pColorWriteMasks@ parameter of
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
+--     /must/ either include all of
+--     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_R_BIT',
+--     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_G_BIT',
+--     and
+--     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_B_BIT',
+--     or none of them
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-maxFragmentDualSrcAttachments-09239#
+--     If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blending blending>
+--     is enabled for any attachment where either the source or destination
+--     blend factors for that attachment
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-dsb use the secondary color input>,
+--     the maximum value of @Location@ for any output attachment
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-staticuse statically used>
+--     in the @Fragment@ @Execution@ @Model@ executed by this command
+--     /must/ be less than
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFragmentDualSrcAttachments maxFragmentDualSrcAttachments>
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-09548# If the current render
+--     pass was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there is no shader object bound to any graphics stage, the value of
+--     each element of
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingAttachmentLocationInfo'::@pColorAttachmentLocations@
+--     in the bound pipeline /must/ match the value for the corresponding
+--     locations set currently in the current render pass instance
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-09549# If the current render
+--     pass was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     and there is no shader object bound to any graphics stage, the value
+--     of each element of
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pColorAttachmentInputIndices@
+--     in the bound pipeline /must/ match the value for the corresponding
+--     index set currently in the current render pass instance
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-10927# If the current render
+--     pass was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     and there is no shader object bound to any graphics stage, the value
+--     of
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pDepthInputAttachmentIndex@
+--     in the bound pipeline /must/ match the value set currently in the
+--     current render pass instance
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-10928# If the current render
+--     pass was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     and there is no shader object bound to any graphics stage, the value
+--     of
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pStencilInputAttachmentIndex@
+--     in the bound pipeline /must/ match the value set currently in the
+--     current render pass instance
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-09642# If the current render
+--     pass was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     with the
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT'
+--     flag, the bound graphics pipeline /must/ have been created with
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-09643# If the bound graphics
+--     pipeline was created with
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT',
+--     the current render pass /must/ have begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     with the
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT'
+--     flag
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-10677# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model>
+--     is enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tileShadingPerTileDraw tileShadingPerTileDraw>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-10772# If a shader object is
+--     bound to any graphics stage, /multiview/ functionality /must/ not be
+--     enabled in the current render pass
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-multiviewPerViewViewports-12262# If
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiviewPerViewViewports multiviewPerViewViewports>
+--     feature is enabled, then the index of the most significant bit in
+--     current render pass instance @viewMask@ /must/ be less than the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @viewportCount@
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-multiviewPerViewViewports-12263# If
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiviewPerViewViewports multiviewPerViewViewports>
+--     feature is enabled, then the index of the most significant bit in
+--     current render pass instance @viewMask@ /must/ be less than the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @scissorCount@
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-flags-11521# If current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@flags@
+--     which includes
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_FRAGMENT_REGION_BIT_EXT',
+--     and if
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-sampleshading sample shading>
+--     is enabled (explicitly or implicitly), then the minimum fraction for
+--     sample shading /must/ equal 0.0
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-11522# If the current render
+--     pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and contains a custom resolve, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, the graphics pipeline bound /must/ have been
+--     created with a
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-11523# If the current render
+--     pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and does not contain a custom resolve, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, the graphics pipeline bound /must/ not have
+--     been created with a
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-customResolve-11524# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, the graphics pipeline
+--     bound /must/ have been created with
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@
+--     as 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-customResolve-11525# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and contains a custom resolve, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not been recorded in the render pass instance, the graphics
+--     pipeline bound /must/ have been created with
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@
+--     as 'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-11861# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled and the current render pass instance was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and contains a custom resolve, the bound graphics pipeline /must/
+--     have been created with a
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@colorAttachmentCount@
+--     equal to
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-11862# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and the current render pass instance was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, 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 an @resolveImageView@ 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_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@
+--     used to create the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-11863# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and the current render pass instance was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, 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 an @resolveImageView@ equal to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have the
+--     corresponding element of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@
+--     used to create the bound pipeline equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-dynamicRenderingUnusedAttachments-11864#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled, the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, 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 an @resolveImageView@ 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_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@
+--     used to create the bound graphics pipeline, or the corresponding
+--     element of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@,
+--     if it exists, /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-11865# If the current render
+--     pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@
+--     used to create the bound graphics pipeline /must/ be equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-11866# If current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@
+--     used to create the 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->resolveImageView@
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-dynamicRenderingUnusedAttachments-11867#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@
+--     used to create the bound graphics pipeline was not equal to the
+--     'Vulkan.Core10.Enums.Format.Format' used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@,
+--     the value of the format /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-11868# If the current render
+--     pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@
+--     used to create the bound graphics pipeline /must/ be equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-11869# If current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@
+--     used to create the 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->resolveImageView@
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-dynamicRenderingUnusedAttachments-11870#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@
+--     used to create the bound graphics pipeline was not equal to the
+--     'Vulkan.Core10.Enums.Format.Format' used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@,
+--     the value of the format /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-colorAttachmentCount-11871# If 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@ and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, then for each element
+--     of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
+--     array with a @resolveImageView@ not equal to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', the @resolveImageView@
+--     /must/ have been created with a sample count equal to the value of
+--     @rasterizationSamples@ for the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-pDepthAttachment-11872# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     @rasterizationSamples@ for the bound graphics pipeline /must/ be
+--     equal to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-pStencilAttachment-11873# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     @rasterizationSamples@ for the bound graphics pipeline /must/ be
+--     equal to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-customResolve-11529# If a shader
+--     object is bound to the fragment stage, the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     a fragment density map attachment is active, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been called, then the fragment shader object bound /must/ have
+--     been created with
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@
+--     as 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-customResolve-11530# If a shader
+--     object is bound to the fragment stage, the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and contains a custom resolve, a fragment density map attachment is
+--     active, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been called, then the fragment shader object bound
+--     /must/ have been created with
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@
+--     as 'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-flags-13361# If there are any shader
+--     objects bound that were created with @flags@ that includes the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     bit, then all bound shader objects /must/ have been created with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     bit
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-flags-13362# If there are any shader
+--     objects bound that were created with @flags@ that includes the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     bit, then the pipeline layout of the bound descriptor sets /must/
+--     have been created with
+--     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT'
+--     set
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-flags-13363# If there are any shader
+--     objects bound that were created with @flags@ that includes the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     bit, and any of the descriptor set layouts used to create the
+--     pipeline layout of the bound descriptor sets were created with any
+--     binding’s
+--     'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutBinding'::@stageFlags@
+--     set with
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT',
+--     then there /must/ be no binding with
+--     'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutBinding'::@stageFlags@
+--     set with
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-flags-13364# If there are any shader
+--     objects bound that were created with @flags@ that includes both the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     and
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
+--     bits, the pipeline layout of the bound descriptor sets /must/ have
+--     been created with
+--     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_NO_TASK_SHADER_BIT_KHR'
+--     set
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-flags-13365# If there are any shader
+--     objects bound that were created with @flags@ that includes both the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     and
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
+--     bits, there /must/ be no shader object bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--     stage
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-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-vkCmdDrawMultiIndexedEXT-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-vkCmdDrawMultiIndexedEXT-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-vkCmdDrawMultiIndexedEXT-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-vkCmdDrawMultiIndexedEXT-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-vkCmdDrawMultiIndexedEXT-None-02721# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, and that pipeline was created without
+--     enabling
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     for @vertexInputs@, then 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-vkCmdDrawMultiIndexedEXT-format-10389# For each vertex
+--     attribute accessed by this command, if its
+--     'Vulkan.Core10.GraphicsPipeline.VertexInputAttributeDescription'::@format@
+--     or
+--     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@
+--     is a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-packed packed format>,
+--     and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-legacyVertexAttributes legacyVertexAttributes>
+--     feature is not enabled, the value of @attribAddress@, calculated as
+--     described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input-address-calculation Vertex Input Calculation>,
+--     /must/ be a multiple of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats size of the format>
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-format-10390# For each vertex
+--     attribute accessed by this command, if its
+--     'Vulkan.Core10.GraphicsPipeline.VertexInputAttributeDescription'::@format@
+--     or
+--     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@
+--     is not a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-packed packed format>,
+--     and either the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-legacyVertexAttributes legacyVertexAttributes>
+--     feature is not enabled or @format@ has 64-bit components, the value
+--     of @attribAddress@, calculated as described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input-address-calculation Vertex Input Calculation>,
+--     /must/ be a multiple of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats component size of the format>
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07842# If there is a shader
+--     object bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY'
+--     dynamic state enabled then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-dynamicPrimitiveTopologyUnrestricted-07500#
+--     If the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY'
+--     dynamic state enabled and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-dynamicPrimitiveTopologyUnrestricted dynamicPrimitiveTopologyUnrestricted>
+--     is 'Vulkan.Core10.FundamentalTypes.FALSE', then the
+--     @primitiveTopology@ parameter of
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
+--     /must/ be of the same
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-class topology class>
+--     as the pipeline
+--     'Vulkan.Core10.GraphicsPipeline.PipelineInputAssemblyStateCreateInfo'::@topology@
+--     state
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-primitiveTopology-10286# If a
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
+--     stage is bound, then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @primitiveTopology@ /must/ be
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST'
+--     prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-primitiveTopology-10747# If
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
+--     set @primitiveTopology@ to
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST'
+--     prior to this drawing command, then a
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
+--     stage /must/ be bound
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-primitiveTopology-10748# If
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
+--     set @primitiveTopology@ to
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_POINT_LIST'
+--     prior to this drawing command, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance5 maintenance5>
+--     feature is not enabled, both a
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     and
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
+--     stage are not bound, then the @Vertex@ @Execution@ @Model@ /must/
+--     have a @PointSize@ decorated variable that is statically written to
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-pStrides-04913# If the bound graphics
+--     pipeline was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE'
+--     dynamic state enabled, but without the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2'
+--     with a non-@NULL@ @pStrides@ parameter or
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.cmdBindVertexBuffers3KHR'
+--     with @setStride@ set to 'Vulkan.Core10.FundamentalTypes.TRUE' /must/
+--     have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this draw command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-13118# If the bound graphics
+--     pipeline was created without the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE'
+--     dynamic state enabled, without the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
+--     dynamic state enabled, and
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.cmdBindVertexBuffers3KHR'
+--     was called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this draw command, the value
+--     of @setStride@ in each of its @pBindInfos@ elements must have been
+--     'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-04914# If there is a shader
+--     object bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage or 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 and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this draw command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-Input-07939# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-vertexAttributeRobustness vertexAttributeRobustness>
+--     feature is not enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance9 maintenance9>
+--     feature is not enabled, and there is a shader object bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
+--     dynamic state enabled then all variables with the @Input@ storage
+--     class decorated with @Location@ in the @Vertex@ @Execution@ @Model@
+--     @OpEntryPoint@ /must/ contain a location in
+--     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@location@
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-Input-08734# If there is a shader
+--     object bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
+--     dynamic state enabled and either the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-legacyVertexAttributes legacyVertexAttributes>
+--     feature is not enabled or the SPIR-V Type associated with a given
+--     @Input@ variable of the corresponding @Location@ in the @Vertex@
+--     @Execution@ @Model@ @OpEntryPoint@ is 64-bit, then the numeric type
+--     associated with all @Input@ variables of the corresponding
+--     @Location@ in the @Vertex@ @Execution@ @Model@ @OpEntryPoint@ /must/
+--     be the same as
+--     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-format-08936# If there is a shader
+--     object bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
+--     dynamic state enabled and
+--     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@
+--     has a 64-bit component, then the scalar width associated with all
+--     @Input@ variables of the corresponding @Location@ in the @Vertex@
+--     @Execution@ @Model@ @OpEntryPoint@ /must/ be 64-bit
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-format-08937# If there is a shader
+--     object bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
+--     dynamic state enabled and the scalar width associated with a
+--     @Location@ decorated @Input@ variable in the @Vertex@ @Execution@
+--     @Model@ @OpEntryPoint@ is 64-bit, then the corresponding
+--     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@
+--     /must/ have a 64-bit component
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-09203# If there is a shader
+--     object bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
+--     dynamic state enabled and
+--     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@
+--     has a 64-bit component, then all @Input@ variables at the
+--     corresponding @Location@ in the @Vertex@ @Execution@ @Model@
+--     @OpEntryPoint@ /must/ not use components that are not present in the
+--     format
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-04875# If there is a shader
+--     object bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
+--     stage or the bound graphics pipeline state was created with both a
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
+--     stage and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @primitiveTopology@ is
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST',
+--     then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPatchControlPointsEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-04879# If there is a shader
+--     object bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE'
+--     dynamic state enabled then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-09637# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitiveTopologyListRestart primitiveTopologyListRestart>
+--     feature is not enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-vertex-input-assembler-topology input assembly>
+--     is
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_POINT_LIST',
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_LINE_LIST',
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_TRIANGLE_LIST',
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY',
+--     or
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY',
+--     there is a shader object bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE'
+--     dynamic state enabled, then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnable'
+--     /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-10909# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitiveTopologyPatchListRestart primitiveTopologyPatchListRestart>
+--     feature is not enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-vertex-input-assembler-topology input assembly>
+--     is
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST',
+--     there is a shader object bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
+--     stage or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE'
+--     dynamic state enabled then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnable'
+--     /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-stage-06481# The bound graphics
+--     pipeline /must/ not have been created with the
+--     'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo'::@stage@
+--     member of any element of
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'::@pStages@
+--     set to
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08885# There /must/ be no shader
+--     object bound to either of the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--     stages
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07619# If a shader object is
+--     bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     stage or a graphics pipeline is bound which was created with both a
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     stage and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetTessellationDomainOriginEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-OpExecutionMode-12239# If a shader is
+--     bound to both the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
+--     and
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     stages, and if both stages contain an @OpExecutionMode@ instruction
+--     specifying the type of subdivision, they /must/ be the same
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-OpExecutionMode-12240# If a shader is
+--     bound to both the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
+--     and
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     stages, and if both stages contain an @OpExecutionMode@ instruction
+--     specifying the orientation of triangles, they /must/ be the same
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-OpExecutionMode-12241# If a shader is
+--     bound to both the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
+--     and
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     stages, and if both stages contain an @OpExecutionMode@ instruction
+--     specifying the segment spacing, they /must/ be the same
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-OpExecutionMode-12242# If a shader is
+--     bound to both the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
+--     and
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     stages, and if both stages contain an @OpExecutionMode@ instruction
+--     specifying the output patch size, they /must/ be the same
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-07312# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance6 maintenance6>
+--     feature is not enabled, a valid index buffer /must/ be bound
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-primitiveRestartIndex-12401# If the
+--     primitive restart index for this draw operation was set with
+--     'Vulkan.Extensions.VK_EXT_primitive_restart_index.cmdSetPrimitiveRestartIndexEXT',
+--     then @primitiveRestartIndex@ /must/ not be greater than the maximum
+--     representable value for the bound
+--     'Vulkan.Core10.Enums.IndexType.IndexType'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-pNext-09461# If the bound graphics
+--     pipeline state was created with
+--     'Vulkan.Core14.Promoted_From_VK_KHR_vertex_attribute_divisor.PipelineVertexInputDivisorStateCreateInfo'
+--     in the @pNext@ chain of
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'::@pVertexInputState@,
+--     any member of
+--     'Vulkan.Core14.Promoted_From_VK_KHR_vertex_attribute_divisor.PipelineVertexInputDivisorStateCreateInfo'::@pVertexBindingDivisors@
+--     has a value other than @1@ in @divisor@, and
+--     'Vulkan.Core14.Promoted_From_VK_KHR_vertex_attribute_divisor.PhysicalDeviceVertexAttributeDivisorProperties'::@supportsNonZeroFirstInstance@
+--     is 'Vulkan.Core10.FundamentalTypes.FALSE', then @firstInstance@
+--     /must/ be @0@
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-09462# If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-objects shader objects>
+--     are used for drawing or the bound graphics pipeline state was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
+--     dynamic state enabled, any member of the
+--     @pVertexBindingDescriptions@ parameter to the
+--     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.cmdSetVertexInputEXT'
+--     call that sets this dynamic state has a value other than @1@ in
+--     @divisor@, and
+--     'Vulkan.Core14.Promoted_From_VK_KHR_vertex_attribute_divisor.PhysicalDeviceVertexAttributeDivisorProperties'::@supportsNonZeroFirstInstance@
+--     is 'Vulkan.Core10.FundamentalTypes.FALSE', then @firstInstance@
+--     /must/ be @0@
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-robustBufferAccess2-08798# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, (@indexSize@ × (@firstIndex@ +
+--     @indexCount@)) /must/ be less than or equal to the size of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#index-buffer-range bound index buffer range>,
+--     with @indexSize@ being based on the type specified by @indexType@,
+--     and the other parameters sourced from this command
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-04937# The
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-multiDraw multiDraw>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-drawCount-04939# @drawCount@ /must/
+--     be less than
+--     'PhysicalDeviceMultiDrawPropertiesEXT'::@maxMultiDrawCount@
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-drawCount-04940# If @drawCount@ is
+--     greater than zero, @pIndexInfo@ /must/ be a valid pointer to memory
+--     containing one or more valid instances of 'MultiDrawIndexedInfoEXT'
+--     structures
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-drawCount-09629# If @drawCount@ is
+--     greater than @1@, @stride@ /must/ be a multiple of @4@ and /must/ be
+--     greater than or equal to @sizeof@('MultiDrawIndexedInfoEXT')
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-pVertexOffset-parameter# If
+--     @pVertexOffset@ is not @NULL@, @pVertexOffset@ /must/ be a valid
+--     pointer to a valid @int32_t@ value
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-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-vkCmdDrawMultiIndexedEXT-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-renderpass# This command /must/ only
+--     be called inside of a render pass instance
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-suspended# This command /must/ not be
+--     called between suspended render pass instances
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-videocoding# This command /must/ only
+--     be called outside of a video coding scope
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Inside                                                                                                                 | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdDrawMultiIndexedEXT is affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_multi_draw VK_EXT_multi_draw>,
+-- 'Vulkan.Core10.Handles.CommandBuffer', 'MultiDrawIndexedInfoEXT'
+cmdDrawMultiIndexedEXT :: forall io
+                        . (MonadIO io)
+                       => -- | @commandBuffer@ is the command buffer into which the command is
+                          -- recorded.
+                          CommandBuffer
+                       -> -- | @pIndexInfo@ is a pointer to an array of 'MultiDrawIndexedInfoEXT' with
+                          -- index information to be drawn.
+                          ("indexInfo" ::: Vector MultiDrawIndexedInfoEXT)
+                       -> -- | @instanceCount@ is the number of instances per draw.
+                          ("instanceCount" ::: Word32)
+                       -> -- | @firstInstance@ is the instance ID of the first instance in each draw.
+                          ("firstInstance" ::: Word32)
+                       -> -- | @stride@ is the byte stride between consecutive elements of
+                          -- @pIndexInfo@.
+                          ("stride" ::: Word32)
+                       -> -- | @pVertexOffset@ is @NULL@ or a pointer to the value added to the vertex
+                          -- index before indexing into the vertex buffer. When specified,
+                          -- 'MultiDrawIndexedInfoEXT'::@offset@ is ignored.
+                          ("vertexOffset" ::: Maybe Int32)
+                       -> io ()
+cmdDrawMultiIndexedEXT commandBuffer
+                         indexInfo
+                         instanceCount
+                         firstInstance
+                         stride
+                         vertexOffset = liftIO . evalContT $ do
+  let vkCmdDrawMultiIndexedEXTPtr = pVkCmdDrawMultiIndexedEXT (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdDrawMultiIndexedEXTPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdDrawMultiIndexedEXT is null" Nothing Nothing
+  let vkCmdDrawMultiIndexedEXT' = mkVkCmdDrawMultiIndexedEXT vkCmdDrawMultiIndexedEXTPtr
+  pPIndexInfo <- ContT $ allocaBytes @MultiDrawIndexedInfoEXT ((Data.Vector.length (indexInfo)) * 12)
+  lift $ Data.Vector.imapM_ (\i e -> poke (pPIndexInfo `plusPtr` (12 * (i)) :: Ptr MultiDrawIndexedInfoEXT) (e)) (indexInfo)
+  pVertexOffset <- case (vertexOffset) of
+    Nothing -> pure nullPtr
+    Just j -> ContT $ with (j)
+  lift $ traceAroundEvent "vkCmdDrawMultiIndexedEXT" (vkCmdDrawMultiIndexedEXT'
+                                                        (commandBufferHandle (commandBuffer))
+                                                        ((fromIntegral (Data.Vector.length $ (indexInfo)) :: Word32))
+                                                        (pPIndexInfo)
+                                                        (instanceCount)
+                                                        (firstInstance)
+                                                        (stride)
+                                                        pVertexOffset)
+  pure $ ()
+
+
+-- | VkMultiDrawInfoEXT - Structure specifying a multi-draw command
+--
+-- = Description
+--
+-- The members of 'MultiDrawInfoEXT' have the same meaning as the
+-- @firstVertex@ and @vertexCount@ parameters in
+-- 'Vulkan.Core10.CommandBufferBuilding.cmdDraw'.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_multi_draw VK_EXT_multi_draw>,
+-- 'cmdDrawMultiEXT'
+data MultiDrawInfoEXT = MultiDrawInfoEXT
+  { -- | @firstVertex@ is the first vertex to draw.
+    firstVertex :: Word32
+  , -- | @vertexCount@ is the number of vertices to draw.
+    vertexCount :: Word32
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (MultiDrawInfoEXT)
+#endif
+deriving instance Show MultiDrawInfoEXT
+
+instance ToCStruct MultiDrawInfoEXT where
+  withCStruct x f = allocaBytes 8 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p MultiDrawInfoEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr Word32)) (firstVertex)
+    poke ((p `plusPtr` 4 :: Ptr Word32)) (vertexCount)
+    f
+  cStructSize = 8
+  cStructAlignment = 4
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct MultiDrawInfoEXT where
+  peekCStruct p = do
+    firstVertex <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))
+    vertexCount <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))
+    pure $ MultiDrawInfoEXT
+             firstVertex vertexCount
+
+instance Storable MultiDrawInfoEXT where
+  sizeOf ~_ = 8
+  alignment ~_ = 4
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero MultiDrawInfoEXT where
+  zero = MultiDrawInfoEXT
+           zero
+           zero
+
+
+-- | VkMultiDrawIndexedInfoEXT - Structure specifying a multi-draw command
+--
+-- = Description
+--
+-- The @firstIndex@, @indexCount@, and @vertexOffset@ members of
+-- 'MultiDrawIndexedInfoEXT' have the same meaning as the @firstIndex@,
+-- @indexCount@, and @vertexOffset@ parameters, respectively, of
+-- 'Vulkan.Core10.CommandBufferBuilding.cmdDrawIndexed'.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_multi_draw VK_EXT_multi_draw>,
+-- 'cmdDrawMultiIndexedEXT'
+data MultiDrawIndexedInfoEXT = MultiDrawIndexedInfoEXT
+  { -- | @firstIndex@ is the first index to draw.
+    firstIndex :: Word32
+  , -- | @indexCount@ is the number of vertices to draw.
+    indexCount :: Word32
+  , -- | @vertexOffset@ is the value added to the vertex index before indexing
+    -- into the vertex buffer for indexed multidraws.
+    vertexOffset :: Int32
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (MultiDrawIndexedInfoEXT)
+#endif
+deriving instance Show MultiDrawIndexedInfoEXT
+
+instance ToCStruct MultiDrawIndexedInfoEXT where
+  withCStruct x f = allocaBytes 12 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p MultiDrawIndexedInfoEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr Word32)) (firstIndex)
+    poke ((p `plusPtr` 4 :: Ptr Word32)) (indexCount)
+    poke ((p `plusPtr` 8 :: Ptr Int32)) (vertexOffset)
+    f
+  cStructSize = 12
+  cStructAlignment = 4
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 8 :: Ptr Int32)) (zero)
+    f
+
+instance FromCStruct MultiDrawIndexedInfoEXT where
+  peekCStruct p = do
+    firstIndex <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))
+    indexCount <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))
+    vertexOffset <- peek @Int32 ((p `plusPtr` 8 :: Ptr Int32))
+    pure $ MultiDrawIndexedInfoEXT
+             firstIndex indexCount vertexOffset
+
+instance Storable MultiDrawIndexedInfoEXT where
+  sizeOf ~_ = 12
+  alignment ~_ = 4
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero MultiDrawIndexedInfoEXT where
+  zero = MultiDrawIndexedInfoEXT
+           zero
+           zero
+           zero
+
+
+-- | VkPhysicalDeviceMultiDrawPropertiesEXT - Structure describing multidraw
+-- limits of an implementation
+--
+-- = Members
+--
+-- The members of the 'PhysicalDeviceMultiDrawPropertiesEXT' structure
+-- describe the following features:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceMultiDrawPropertiesEXT' 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.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_multi_draw VK_EXT_multi_draw>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceMultiDrawPropertiesEXT = PhysicalDeviceMultiDrawPropertiesEXT
+  { -- | #limits-maxMultiDrawCount# @maxMultiDrawCount@ indicates the maximum
+    -- number of draw calls which /can/ be batched into a single multidraw.
+    maxMultiDrawCount :: Word32 }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceMultiDrawPropertiesEXT)
+#endif
+deriving instance Show PhysicalDeviceMultiDrawPropertiesEXT
+
+instance ToCStruct PhysicalDeviceMultiDrawPropertiesEXT where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceMultiDrawPropertiesEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (maxMultiDrawCount)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct PhysicalDeviceMultiDrawPropertiesEXT where
+  peekCStruct p = do
+    maxMultiDrawCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    pure $ PhysicalDeviceMultiDrawPropertiesEXT
+             maxMultiDrawCount
+
+instance Storable PhysicalDeviceMultiDrawPropertiesEXT where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceMultiDrawPropertiesEXT where
+  zero = PhysicalDeviceMultiDrawPropertiesEXT
+           zero
+
+
+-- | VkPhysicalDeviceMultiDrawFeaturesEXT - Structure describing whether the
+-- implementation supports multi draw functionality
+--
+-- = Members
+--
+-- This structure describes the following features:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceMultiDrawFeaturesEXT' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceMultiDrawFeaturesEXT', it /must/ add an instance of the
+-- structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
 --
 -- = See Also
 --
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
@@ -124,7 +124,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_multi_draw Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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_multisampled_render_to_single_sampled.hs b/src/Vulkan/Extensions/VK_EXT_multisampled_render_to_single_sampled.hs
--- a/src/Vulkan/Extensions/VK_EXT_multisampled_render_to_single_sampled.hs
+++ b/src/Vulkan/Extensions/VK_EXT_multisampled_render_to_single_sampled.hs
@@ -18,7 +18,7 @@
 --     1
 --
 -- [__Ratification Status__]
---     Not ratified
+--     Ratified
 --
 -- [__Extension and Version Dependencies__]
 --         
@@ -171,7 +171,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_multisampled_render_to_single_sampled Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_multisampled_render_to_single_sampled Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -225,13 +225,22 @@
 -- 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. 'PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT'
--- /can/ also be used in the @pNext@ chain of
--- 'Vulkan.Core10.Device.DeviceCreateInfo' to selectively enable these
--- features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT', it /must/
+-- add an instance of the structure, with the desired feature members set
+-- to 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_multisampled_render_to_single_sampled VK_EXT_multisampled_render_to_single_sampled>,
@@ -291,13 +300,17 @@
 -- on a multisampled attachment with this format can incur additional
 -- costs, including additional memory bandwidth usage and a higher memory
 -- footprint. If an attachment with such a format is used in a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#subpass-multisampledrendertosinglesampled multisampled-render-to-single-sampled>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#subpass-multisampledrendertosinglesampled multisampled-render-to-single-sampled>
 -- subpass, the additional memory and memory bandwidth usage can nullify
 -- the benefits of using the @VK_EXT_multisampled_render_to_single_sampled@
 -- extension.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.FormatProperties2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_multisampled_render_to_single_sampled VK_EXT_multisampled_render_to_single_sampled>,
@@ -376,6 +389,14 @@
 --     @rasterizationSamples@ /must/ be a valid
 --     'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' value
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'
+--
+--     -   'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.SubpassDescription2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_multisampled_render_to_single_sampled VK_EXT_multisampled_render_to_single_sampled>,
@@ -385,7 +406,7 @@
 data MultisampledRenderToSingleSampledInfoEXT = MultisampledRenderToSingleSampledInfoEXT
   { -- | @multisampledRenderToSingleSampledEnable@ controls whether multisampled
     -- rendering to single-sampled attachments is performed as described
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#multisampled-render-to-single-sampled below>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#multisampled-render-to-single-sampled below>.
     multisampledRenderToSingleSampledEnable :: Bool
   , -- | @rasterizationSamples@ is a
     -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' specifying
diff --git a/src/Vulkan/Extensions/VK_EXT_multisampled_render_to_single_sampled.hs-boot b/src/Vulkan/Extensions/VK_EXT_multisampled_render_to_single_sampled.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_multisampled_render_to_single_sampled.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_multisampled_render_to_single_sampled.hs-boot
@@ -18,7 +18,7 @@
 --     1
 --
 -- [__Ratification Status__]
---     Not ratified
+--     Ratified
 --
 -- [__Extension and Version Dependencies__]
 --         
@@ -171,7 +171,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_multisampled_render_to_single_sampled Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_multisampled_render_to_single_sampled Vulkan Specification>.
 --
 -- This 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_mutable_descriptor_type.hs b/src/Vulkan/Extensions/VK_EXT_mutable_descriptor_type.hs
--- a/src/Vulkan/Extensions/VK_EXT_mutable_descriptor_type.hs
+++ b/src/Vulkan/Extensions/VK_EXT_mutable_descriptor_type.hs
@@ -18,10 +18,12 @@
 --     1
 --
 -- [__Ratification Status__]
---     Not ratified
+--     Ratified
 --
 -- [__Extension and Version Dependencies__]
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance3 VK_KHR_maintenance3>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
 --
 -- [__Special Use__]
 --
@@ -132,7 +134,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_mutable_descriptor_type Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_mutable_descriptor_type Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -220,9 +222,13 @@
 -- 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. 'PhysicalDeviceMutableDescriptorTypeFeaturesEXT' /can/ also
--- be used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo'
--- to selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceMutableDescriptorTypeFeaturesEXT', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
 -- == Valid Usage (Implicit)
 --
@@ -230,6 +236,14 @@
 --     @sType@ /must/ be
 --     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT'
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_mutable_descriptor_type VK_EXT_mutable_descriptor_type>,
@@ -333,6 +347,10 @@
 --     @pDescriptorTypes@ /must/ not contain
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK'
 --
+-- -   #VUID-VkMutableDescriptorTypeListEXT-pDescriptorTypes-09696#
+--     @pDescriptorTypes@ /must/ not contain
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-VkMutableDescriptorTypeListEXT-pDescriptorTypes-parameter# If
@@ -407,6 +425,14 @@
 --     @pMutableDescriptorTypeLists@ /must/ be a valid pointer to an array
 --     of @mutableDescriptorTypeListCount@ valid
 --     'MutableDescriptorTypeListEXT' structures
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.DescriptorSet.DescriptorPoolCreateInfo'
+--
+--     -   'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutCreateInfo'
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Extensions/VK_EXT_mutable_descriptor_type.hs-boot b/src/Vulkan/Extensions/VK_EXT_mutable_descriptor_type.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_mutable_descriptor_type.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_mutable_descriptor_type.hs-boot
@@ -18,10 +18,12 @@
 --     1
 --
 -- [__Ratification Status__]
---     Not ratified
+--     Ratified
 --
 -- [__Extension and Version Dependencies__]
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance3 VK_KHR_maintenance3>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
 --
 -- [__Special Use__]
 --
@@ -132,7 +134,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_mutable_descriptor_type Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_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/Extensions/VK_EXT_nested_command_buffer.hs b/src/Vulkan/Extensions/VK_EXT_nested_command_buffer.hs
--- a/src/Vulkan/Extensions/VK_EXT_nested_command_buffer.hs
+++ b/src/Vulkan/Extensions/VK_EXT_nested_command_buffer.hs
@@ -116,7 +116,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_nested_command_buffer Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_nested_command_buffer Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -180,12 +180,22 @@
 -- 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. 'PhysicalDeviceNestedCommandBufferFeaturesEXT' /can/ also be
--- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceNestedCommandBufferFeaturesEXT', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_nested_command_buffer VK_EXT_nested_command_buffer>,
@@ -194,14 +204,14 @@
 data PhysicalDeviceNestedCommandBufferFeaturesEXT = PhysicalDeviceNestedCommandBufferFeaturesEXT
   { -- | #features-nestedCommandBuffer# @nestedCommandBuffer@ indicates the
     -- implementation supports nested command buffers, which allows
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#glossary Secondary Command Buffers>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#glossary Secondary Command Buffers>
     -- to execute other
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#glossary Secondary Command Buffers>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#glossary Secondary Command Buffers>.
     nestedCommandBuffer :: Bool
   , -- | #features-nestedCommandBufferRendering# @nestedCommandBufferRendering@
     -- indicates that it is valid to call
     -- 'Vulkan.Core10.CommandBufferBuilding.cmdExecuteCommands' inside a
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#glossary Secondary Command Buffer>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#glossary Secondary Command Buffer>
     -- recorded with
     -- 'Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT'.
     nestedCommandBufferRendering :: Bool
@@ -278,8 +288,12 @@
 -- it is filled in with each corresponding implementation-dependent
 -- property.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_nested_command_buffer VK_EXT_nested_command_buffer>,
@@ -288,7 +302,7 @@
   { -- | #limits-maxCommandBufferNestingLevel# @maxCommandBufferNestingLevel@
     -- indicates the maximum nesting level of calls to
     -- 'Vulkan.Core10.CommandBufferBuilding.cmdExecuteCommands' from
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#glossary Secondary Command Buffers>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#glossary Secondary Command Buffers>.
     -- A @maxCommandBufferNestingLevel@ of @UINT32_MAX@ means there is no limit
     -- to the nesting level.
     maxCommandBufferNestingLevel :: Word32 }
diff --git a/src/Vulkan/Extensions/VK_EXT_nested_command_buffer.hs-boot b/src/Vulkan/Extensions/VK_EXT_nested_command_buffer.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_nested_command_buffer.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_nested_command_buffer.hs-boot
@@ -116,7 +116,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_nested_command_buffer Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_nested_command_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_EXT_non_seamless_cube_map.hs b/src/Vulkan/Extensions/VK_EXT_non_seamless_cube_map.hs
--- a/src/Vulkan/Extensions/VK_EXT_non_seamless_cube_map.hs
+++ b/src/Vulkan/Extensions/VK_EXT_non_seamless_cube_map.hs
@@ -54,7 +54,7 @@
 -- == Description
 --
 -- This extension provides functionality to disable
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#textures-cubemapedge cube map edge handling>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#textures-cubemapedge cube map edge handling>
 -- on a per sampler level which matches the behavior of other graphics
 -- APIs.
 --
@@ -97,7 +97,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_non_seamless_cube_map Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_non_seamless_cube_map Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -145,11 +145,21 @@
 -- 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. 'PhysicalDeviceNonSeamlessCubeMapFeaturesEXT' /can/ also be
--- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceNonSeamlessCubeMapFeaturesEXT', it /must/ add an instance
+-- of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Extensions/VK_EXT_non_seamless_cube_map.hs-boot b/src/Vulkan/Extensions/VK_EXT_non_seamless_cube_map.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_non_seamless_cube_map.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_non_seamless_cube_map.hs-boot
@@ -54,7 +54,7 @@
 -- == Description
 --
 -- This extension provides functionality to disable
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#textures-cubemapedge cube map edge handling>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#textures-cubemapedge cube map edge handling>
 -- on a per sampler level which matches the behavior of other graphics
 -- APIs.
 --
@@ -97,7 +97,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_non_seamless_cube_map Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_non_seamless_cube_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_opacity_micromap.hs b/src/Vulkan/Extensions/VK_EXT_opacity_micromap.hs
--- a/src/Vulkan/Extensions/VK_EXT_opacity_micromap.hs
+++ b/src/Vulkan/Extensions/VK_EXT_opacity_micromap.hs
@@ -29,3929 +29,4086 @@
 --         
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3 Vulkan Version 1.3>
 --
--- [__SPIR-V Dependencies__]
---
---     -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/EXT/SPV_EXT_opacity_micromap.html SPV_EXT_opacity_micromap>
---
--- [__Contact__]
---
---     -   Christoph Kubisch
---         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_opacity_micromap] @pixeljetstream%0A*Here describe the issue or question you have about the VK_EXT_opacity_micromap extension* >
---
---     -   Eric Werness
---
--- [__Extension Proposal__]
---     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_EXT_opacity_micromap.adoc VK_EXT_opacity_micromap>
---
--- == Other Extension Metadata
---
--- [__Last Modified Date__]
---     2022-08-24
---
--- [__Interactions and External Dependencies__]
---
---     -   This extension provides API support for
---         <https://github.com/KhronosGroup/GLSL/blob/main/extensions/ext/GLSL_EXT_opacity_micromap.txt GLSL_EXT_opacity_micromap>
---
--- [__Contributors__]
---
---     -   Christoph Kubisch, NVIDIA
---
---     -   Eric Werness, NVIDIA
---
---     -   Josh Barczak, Intel
---
---     -   Stu Smith, AMD
---
--- == Description
---
--- When adding transparency to a ray traced scene, an application can
--- choose between further tessellating the geometry or using an any-hit
--- shader to allow the ray through specific parts of the geometry. These
--- options have the downside of either significantly increasing memory
--- consumption or adding runtime overhead to run shader code in the middle
--- of traversal, respectively.
---
--- This extension adds the ability to add an /opacity micromap/ to geometry
--- when building an acceleration structure. The opacity micromap compactly
--- encodes opacity information which can be read by the implementation to
--- mark parts of triangles as opaque or transparent. The format is
--- externally visible to allow the application to compress its internal
--- geometry and surface representations into the compressed format ahead of
--- time. The compressed format subdivides each triangle into a set of
--- subtriangles, each of which can be assigned either two or four opacity
--- values. These opacity values can control if a ray hitting that
--- subtriangle is treated as an opaque hit, complete miss, or possible hit,
--- depending on the controls described in
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#ray-opacity-micromap Ray Opacity Micromap>.
---
--- This extension provides:
---
--- -   a 'Vulkan.Extensions.Handles.MicromapEXT' structure to store the
---     micromap,
---
--- -   functions similar to acceleration structure build functions to build
---     the opacity micromap array, and
---
--- -   a structure to extend
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureGeometryTrianglesDataKHR'
---     to attach a micromap to the geometry of the acceleration structure.
---
--- == New Object Types
---
--- -   'Vulkan.Extensions.Handles.MicromapEXT'
---
--- == New Commands
---
--- -   'buildMicromapsEXT'
---
--- -   'cmdBuildMicromapsEXT'
---
--- -   'cmdCopyMemoryToMicromapEXT'
---
--- -   'cmdCopyMicromapEXT'
---
--- -   'cmdCopyMicromapToMemoryEXT'
---
--- -   'cmdWriteMicromapsPropertiesEXT'
---
--- -   'copyMemoryToMicromapEXT'
---
--- -   'copyMicromapEXT'
---
--- -   'copyMicromapToMemoryEXT'
---
--- -   'createMicromapEXT'
---
--- -   'destroyMicromapEXT'
---
--- -   'getDeviceMicromapCompatibilityEXT'
---
--- -   'getMicromapBuildSizesEXT'
---
--- -   'writeMicromapsPropertiesEXT'
---
--- == New Structures
---
--- -   'CopyMemoryToMicromapInfoEXT'
---
--- -   'CopyMicromapInfoEXT'
---
--- -   'CopyMicromapToMemoryInfoEXT'
---
--- -   'MicromapBuildInfoEXT'
---
--- -   'MicromapBuildSizesInfoEXT'
---
--- -   'MicromapCreateInfoEXT'
---
--- -   'MicromapTriangleEXT'
---
--- -   'MicromapUsageEXT'
---
--- -   'MicromapVersionInfoEXT'
---
--- -   Extending
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureGeometryTrianglesDataKHR':
---
---     -   'AccelerationStructureTrianglesOpacityMicromapEXT'
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
---     'Vulkan.Core10.Device.DeviceCreateInfo':
---
---     -   'PhysicalDeviceOpacityMicromapFeaturesEXT'
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
---
---     -   'PhysicalDeviceOpacityMicromapPropertiesEXT'
---
--- == New Enums
---
--- -   'BuildMicromapFlagBitsEXT'
---
--- -   'BuildMicromapModeEXT'
---
--- -   'CopyMicromapModeEXT'
---
--- -   'MicromapCreateFlagBitsEXT'
---
--- -   'MicromapTypeEXT'
---
--- -   'OpacityMicromapFormatEXT'
---
--- -   'OpacityMicromapSpecialIndexEXT'
---
--- == New Bitmasks
---
--- -   'BuildMicromapFlagsEXT'
---
--- -   'MicromapCreateFlagsEXT'
---
--- == New Enum Constants
---
--- -   'EXT_OPACITY_MICROMAP_EXTENSION_NAME'
---
--- -   'EXT_OPACITY_MICROMAP_SPEC_VERSION'
---
--- -   Extending 'Vulkan.Core13.Enums.AccessFlags2.AccessFlagBits2':
---
---     -   'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_MICROMAP_READ_BIT_EXT'
---
---     -   'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_MICROMAP_WRITE_BIT_EXT'
---
--- -   Extending
---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BufferUsageFlagBits':
---
---     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXT'
---
---     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_MICROMAP_STORAGE_BIT_EXT'
---
--- -   Extending
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.BuildAccelerationStructureFlagBitsKHR':
---
---     -   'Vulkan.Extensions.VK_KHR_acceleration_structure.BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_EXT'
---
---     -   'Vulkan.Extensions.VK_KHR_acceleration_structure.BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_EXT'
---
---     -   'Vulkan.Extensions.VK_KHR_acceleration_structure.BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_EXT'
---
--- -   Extending
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.GeometryInstanceFlagBitsKHR':
---
---     -   'Vulkan.Extensions.VK_KHR_acceleration_structure.GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_EXT'
---
---     -   'Vulkan.Extensions.VK_KHR_acceleration_structure.GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_EXT'
---
--- -   Extending 'Vulkan.Core10.Enums.ObjectType.ObjectType':
---
---     -   'Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_MICROMAP_EXT'
---
--- -   Extending
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits':
---
---     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT'
---
--- -   Extending
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlagBits2':
---
---     -   'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT'
---
--- -   Extending 'Vulkan.Core10.Enums.QueryType.QueryType':
---
---     -   'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_MICROMAP_COMPACTED_SIZE_EXT'
---
---     -   'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_MICROMAP_SERIALIZATION_SIZE_EXT'
---
--- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_MEMORY_TO_MICROMAP_INFO_EXT'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_MICROMAP_INFO_EXT'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_MICROMAP_TO_MEMORY_INFO_EXT'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MICROMAP_BUILD_INFO_EXT'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MICROMAP_BUILD_SIZES_INFO_EXT'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MICROMAP_CREATE_INFO_EXT'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MICROMAP_VERSION_INFO_EXT'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_EXT'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_PROPERTIES_EXT'
---
--- == Reference Code
---
--- > uint32_t BarycentricsToSpaceFillingCurveIndex(float u, float v, uint32_t level)
--- > {
--- >     u = clamp(u, 0.0f, 1.0f);
--- >     v = clamp(v, 0.0f, 1.0f);
--- >
--- >     uint32_t iu, iv, iw;
--- >
--- >     // Quantize barycentric coordinates
--- >     float fu = u * (1u << level);
--- >     float fv = v * (1u << level);
--- >
--- >     iu = (uint32_t)fu;
--- >     iv = (uint32_t)fv;
--- >
--- >     float uf = fu - float(iu);
--- >     float vf = fv - float(iv);
--- >
--- >     if (iu >= (1u << level)) iu = (1u << level) - 1u;
--- >     if (iv >= (1u << level)) iv = (1u << level) - 1u;
--- >
--- >     uint32_t iuv = iu + iv;
--- >
--- >     if (iuv >= (1u << level))
--- >         iu -= iuv - (1u << level) + 1u;
--- >
--- >     iw = ~(iu + iv);
--- >
--- >     if (uf + vf >= 1.0f && iuv < (1u << level) - 1u) --iw;
--- >
--- >     uint32_t b0 = ~(iu ^ iw);
--- >     b0 &= ((1u << level) - 1u);
--- >     uint32_t t = (iu ^ iv) & b0;
--- >
--- >     uint32_t f = t;
--- >     f ^= f >> 1u;
--- >     f ^= f >> 2u;
--- >     f ^= f >> 4u;
--- >     f ^= f >> 8u;
--- >     uint32_t b1 = ((f ^ iu) & ~b0) | t;
--- >
--- >     // Interleave bits
--- >     b0 = (b0 | (b0 << 8u)) & 0x00ff00ffu;
--- >     b0 = (b0 | (b0 << 4u)) & 0x0f0f0f0fu;
--- >     b0 = (b0 | (b0 << 2u)) & 0x33333333u;
--- >     b0 = (b0 | (b0 << 1u)) & 0x55555555u;
--- >     b1 = (b1 | (b1 << 8u)) & 0x00ff00ffu;
--- >     b1 = (b1 | (b1 << 4u)) & 0x0f0f0f0fu;
--- >     b1 = (b1 | (b1 << 2u)) & 0x33333333u;
--- >     b1 = (b1 | (b1 << 1u)) & 0x55555555u;
--- >
--- >     return b0 | (b1 << 1u);
--- > }
---
--- == Issues
---
--- (1) Is the build actually similar to an acceleration structure build?
---
--- -   Resolved: The build should be much lighter-weight than an
---     acceleration structure build, but the infrastructure is similar
---     enough that it makes sense to keep the concepts compatible.
---
--- (2) Why does VkMicromapUsageEXT not have type\/pNext?
---
--- -   Resolved: There can be a very large number of these structures, so
---     doubling the size of these can be significant memory consumption.
---     Also, an application may be loading these directly from a file which
---     is more compatible with it being a flat structure. The including
---     structures are extensible and are probably a more suitable place to
---     add extensibility.
---
--- (3) Why is there a SPIR-V extension?
---
--- -   Resolved: There is a ray flag. To be consistent with how the
---     existing ray tracing extensions work that ray flag needs its own
---     extension.
---
--- (4) Should there be indirect micromap build?
---
--- -   Resolved: Not for now. There is more in-depth usage metadata
---     required and it seems less likely that something like a GPU culling
---     system would need to change the counts for a micromap.
---
--- (5) Should micromaps have a micromap device address?
---
--- -   Resolved: There is no need right now (can just use the handle) but
---     that is a bit different from acceleration structures, though the two
---     are not completely parallel in their usage.
---
--- (6) Why are the alignment requirements defined as a mix of hardcoded
--- values and caps?
---
--- -   Resolved: This is most parallel with the definition of
---     @VK_KHR_acceleration_structure@ and maintaining commonality makes it
---     easier for applications to share memory.
---
--- == Version History
---
--- -   Revision 2, 2022-06-22 (Eric Werness)
---
---     -   EXTify and clean up for discussion
---
--- -   Revision 1, 2022-01-01 (Eric Werness)
---
---     -   Initial revision
---
--- == See Also
---
--- No cross-references are available
---
--- == Document Notes
---
--- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_opacity_micromap 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_opacity_micromap  ( createMicromapEXT
-                                                  , withMicromapEXT
-                                                  , cmdBuildMicromapsEXT
-                                                  , buildMicromapsEXT
-                                                  , destroyMicromapEXT
-                                                  , cmdCopyMicromapEXT
-                                                  , copyMicromapEXT
-                                                  , cmdCopyMicromapToMemoryEXT
-                                                  , copyMicromapToMemoryEXT
-                                                  , cmdCopyMemoryToMicromapEXT
-                                                  , copyMemoryToMicromapEXT
-                                                  , cmdWriteMicromapsPropertiesEXT
-                                                  , writeMicromapsPropertiesEXT
-                                                  , getDeviceMicromapCompatibilityEXT
-                                                  , getMicromapBuildSizesEXT
-                                                  , MicromapBuildInfoEXT(..)
-                                                  , MicromapCreateInfoEXT(..)
-                                                  , MicromapVersionInfoEXT(..)
-                                                  , CopyMicromapInfoEXT(..)
-                                                  , CopyMicromapToMemoryInfoEXT(..)
-                                                  , CopyMemoryToMicromapInfoEXT(..)
-                                                  , MicromapBuildSizesInfoEXT(..)
-                                                  , MicromapUsageEXT(..)
-                                                  , MicromapTriangleEXT(..)
-                                                  , PhysicalDeviceOpacityMicromapFeaturesEXT(..)
-                                                  , PhysicalDeviceOpacityMicromapPropertiesEXT(..)
-                                                  , AccelerationStructureTrianglesOpacityMicromapEXT(..)
-                                                  , MicromapTypeEXT( MICROMAP_TYPE_OPACITY_MICROMAP_EXT
-                                                                   , MICROMAP_TYPE_DISPLACEMENT_MICROMAP_NV
-                                                                   , ..
-                                                                   )
-                                                  , BuildMicromapFlagsEXT
-                                                  , BuildMicromapFlagBitsEXT( BUILD_MICROMAP_PREFER_FAST_TRACE_BIT_EXT
-                                                                            , BUILD_MICROMAP_PREFER_FAST_BUILD_BIT_EXT
-                                                                            , BUILD_MICROMAP_ALLOW_COMPACTION_BIT_EXT
-                                                                            , ..
-                                                                            )
-                                                  , MicromapCreateFlagsEXT
-                                                  , MicromapCreateFlagBitsEXT( MICROMAP_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT
-                                                                             , ..
-                                                                             )
-                                                  , CopyMicromapModeEXT( COPY_MICROMAP_MODE_CLONE_EXT
-                                                                       , COPY_MICROMAP_MODE_SERIALIZE_EXT
-                                                                       , COPY_MICROMAP_MODE_DESERIALIZE_EXT
-                                                                       , COPY_MICROMAP_MODE_COMPACT_EXT
-                                                                       , ..
-                                                                       )
-                                                  , BuildMicromapModeEXT( BUILD_MICROMAP_MODE_BUILD_EXT
-                                                                        , ..
-                                                                        )
-                                                  , OpacityMicromapFormatEXT( OPACITY_MICROMAP_FORMAT_2_STATE_EXT
-                                                                            , OPACITY_MICROMAP_FORMAT_4_STATE_EXT
-                                                                            , ..
-                                                                            )
-                                                  , OpacityMicromapSpecialIndexEXT( OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_TRANSPARENT_EXT
-                                                                                  , OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_OPAQUE_EXT
-                                                                                  , OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_TRANSPARENT_EXT
-                                                                                  , OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_OPAQUE_EXT
-                                                                                  , ..
-                                                                                  )
-                                                  , EXT_OPACITY_MICROMAP_SPEC_VERSION
-                                                  , pattern EXT_OPACITY_MICROMAP_SPEC_VERSION
-                                                  , EXT_OPACITY_MICROMAP_EXTENSION_NAME
-                                                  , pattern EXT_OPACITY_MICROMAP_EXTENSION_NAME
-                                                  , DeferredOperationKHR(..)
-                                                  , MicromapEXT(..)
-                                                  , DeviceOrHostAddressKHR(..)
-                                                  , DeviceOrHostAddressConstKHR(..)
-                                                  , GeometryInstanceFlagBitsKHR(..)
-                                                  , GeometryInstanceFlagsKHR
-                                                  , BuildAccelerationStructureFlagBitsKHR(..)
-                                                  , BuildAccelerationStructureFlagsKHR
-                                                  , AccelerationStructureBuildTypeKHR(..)
-                                                  , AccelerationStructureCompatibilityKHR(..)
-                                                  ) where
-
-import Data.Bits (Bits)
-import Data.Bits (FiniteBits)
-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 (castPtr)
-import GHC.Ptr (nullFunPtr)
-import Foreign.Ptr (nullPtr)
-import Foreign.Ptr (plusPtr)
-import GHC.Show (showString)
-import GHC.Show (showsPrec)
-import Numeric (showHex)
-import qualified Data.ByteString (length)
-import Data.ByteString (packCStringLen)
-import Data.ByteString.Unsafe (unsafeUseAsCString)
-import Control.Monad.Trans.Class (lift)
-import Control.Monad.Trans.Cont (evalContT)
-import qualified Data.Vector (imapM_)
-import qualified Data.Vector (length)
-import Foreign.C.Types (CSize(..))
-import Vulkan.CStruct (FromCStruct)
-import Vulkan.CStruct (FromCStruct(..))
-import Vulkan.CStruct (ToCStruct)
-import Vulkan.CStruct (ToCStruct(..))
-import Vulkan.Zero (Zero)
-import Vulkan.Zero (Zero(..))
-import Control.Monad.IO.Class (MonadIO)
-import Data.String (IsString)
-import Data.Typeable (Typeable)
-import Foreign.C.Types (CChar)
-import Foreign.C.Types (CSize)
-import Foreign.C.Types (CSize(CSize))
-import Foreign.Storable (Storable)
-import Foreign.Storable (Storable(peek))
-import Foreign.Storable (Storable(poke))
-import qualified Foreign.Storable (Storable(..))
-import GHC.Generics (Generic)
-import GHC.IO.Exception (IOErrorType(..))
-import GHC.IO.Exception (IOException(..))
-import Data.Int (Int32)
-import Foreign.Ptr (FunPtr)
-import Foreign.Ptr (Ptr)
-import GHC.Read (Read(readPrec))
-import GHC.Show (Show(showsPrec))
-import Data.Word (Word16)
-import Data.Word (Word32)
-import Data.Word (Word64)
-import Data.Word (Word8)
-import Data.ByteString (ByteString)
-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.Extensions.VK_KHR_acceleration_structure (AccelerationStructureBuildTypeKHR)
-import Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureBuildTypeKHR(..))
-import Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureCompatibilityKHR)
-import Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureCompatibilityKHR(..))
-import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)
-import Vulkan.Core10.FundamentalTypes (Bool32)
-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.Extensions.Handles (DeferredOperationKHR)
-import Vulkan.Extensions.Handles (DeferredOperationKHR(..))
-import Vulkan.Core10.Handles (Device)
-import Vulkan.Core10.Handles (Device(..))
-import Vulkan.Core10.Handles (Device(Device))
-import Vulkan.Core10.FundamentalTypes (DeviceAddress)
-import Vulkan.Dynamic (DeviceCmds(pVkBuildMicromapsEXT))
-import Vulkan.Dynamic (DeviceCmds(pVkCmdBuildMicromapsEXT))
-import Vulkan.Dynamic (DeviceCmds(pVkCmdCopyMemoryToMicromapEXT))
-import Vulkan.Dynamic (DeviceCmds(pVkCmdCopyMicromapEXT))
-import Vulkan.Dynamic (DeviceCmds(pVkCmdCopyMicromapToMemoryEXT))
-import Vulkan.Dynamic (DeviceCmds(pVkCmdWriteMicromapsPropertiesEXT))
-import Vulkan.Dynamic (DeviceCmds(pVkCopyMemoryToMicromapEXT))
-import Vulkan.Dynamic (DeviceCmds(pVkCopyMicromapEXT))
-import Vulkan.Dynamic (DeviceCmds(pVkCopyMicromapToMemoryEXT))
-import Vulkan.Dynamic (DeviceCmds(pVkCreateMicromapEXT))
-import Vulkan.Dynamic (DeviceCmds(pVkDestroyMicromapEXT))
-import Vulkan.Dynamic (DeviceCmds(pVkGetDeviceMicromapCompatibilityEXT))
-import Vulkan.Dynamic (DeviceCmds(pVkGetMicromapBuildSizesEXT))
-import Vulkan.Dynamic (DeviceCmds(pVkWriteMicromapsPropertiesEXT))
-import Vulkan.Extensions.VK_KHR_acceleration_structure (DeviceOrHostAddressConstKHR)
-import Vulkan.Extensions.VK_KHR_acceleration_structure (DeviceOrHostAddressKHR)
-import Vulkan.Core10.FundamentalTypes (DeviceSize)
-import Vulkan.Core10.Handles (Device_T)
-import Vulkan.Core10.FundamentalTypes (Flags)
-import Vulkan.Core10.Enums.IndexType (IndexType)
-import Vulkan.Extensions.Handles (MicromapEXT)
-import Vulkan.Extensions.Handles (MicromapEXT(..))
-import Vulkan.Core10.Handles (QueryPool)
-import Vulkan.Core10.Handles (QueryPool(..))
-import Vulkan.Core10.Enums.QueryType (QueryType)
-import Vulkan.Core10.Enums.QueryType (QueryType(..))
-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_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COPY_MEMORY_TO_MICROMAP_INFO_EXT))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COPY_MICROMAP_INFO_EXT))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COPY_MICROMAP_TO_MEMORY_INFO_EXT))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_MICROMAP_BUILD_INFO_EXT))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_MICROMAP_BUILD_SIZES_INFO_EXT))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_MICROMAP_CREATE_INFO_EXT))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_MICROMAP_VERSION_INFO_EXT))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_EXT))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_PROPERTIES_EXT))
-import Vulkan.Core10.Enums.Result (Result(SUCCESS))
-import Vulkan.Core10.APIConstants (pattern UUID_SIZE)
-import Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureBuildTypeKHR(..))
-import Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureCompatibilityKHR(..))
-import Vulkan.Extensions.VK_KHR_acceleration_structure (BuildAccelerationStructureFlagBitsKHR(..))
-import Vulkan.Extensions.VK_KHR_acceleration_structure (BuildAccelerationStructureFlagsKHR)
-import Vulkan.Extensions.Handles (DeferredOperationKHR(..))
-import Vulkan.Extensions.VK_KHR_acceleration_structure (DeviceOrHostAddressConstKHR(..))
-import Vulkan.Extensions.VK_KHR_acceleration_structure (DeviceOrHostAddressKHR(..))
-import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryInstanceFlagBitsKHR(..))
-import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryInstanceFlagsKHR)
-import Vulkan.Extensions.Handles (MicromapEXT(..))
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCreateMicromapEXT
-  :: FunPtr (Ptr Device_T -> Ptr MicromapCreateInfoEXT -> Ptr AllocationCallbacks -> Ptr MicromapEXT -> IO Result) -> Ptr Device_T -> Ptr MicromapCreateInfoEXT -> Ptr AllocationCallbacks -> Ptr MicromapEXT -> IO Result
-
--- | vkCreateMicromapEXT - Create a new micromap object
---
--- = Description
---
--- Similar to other objects in Vulkan, the micromap creation merely creates
--- an object with a specific “shape”. The type and quantity of geometry
--- that can be built into a micromap is determined by the parameters of
--- 'MicromapCreateInfoEXT'.
---
--- The micromap data is stored in the object referred to by
--- 'MicromapCreateInfoEXT'::@buffer@. Once memory has been bound to that
--- buffer, it /must/ be populated by micromap build or micromap copy
--- commands such as 'cmdBuildMicromapsEXT', 'buildMicromapsEXT',
--- 'cmdCopyMicromapEXT', and 'copyMicromapEXT'.
---
--- The expected usage for a trace capture\/replay tool is that it will
--- serialize and later deserialize the micromap data using micromap copy
--- commands. During capture the tool will use 'copyMicromapToMemoryEXT' or
--- 'cmdCopyMicromapToMemoryEXT' with a @mode@ of
--- 'COPY_MICROMAP_MODE_SERIALIZE_EXT', and 'copyMemoryToMicromapEXT' or
--- 'cmdCopyMemoryToMicromapEXT' with a @mode@ of
--- 'COPY_MICROMAP_MODE_DESERIALIZE_EXT' during replay.
---
--- The input buffers passed to micromap build commands will be referenced
--- by the implementation for the duration of the command. Micromaps /must/
--- be fully self-contained. The application /can/ reuse or free any memory
--- which was used by the command as an input or as scratch without
--- affecting the results of a subsequent acceleration structure build using
--- the micromap or traversal of that acceleration structure.
---
--- == Valid Usage
---
--- -   #VUID-vkCreateMicromapEXT-micromap-07430# The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-micromap micromap>
---     feature /must/ be enabled
---
--- -   #VUID-vkCreateMicromapEXT-deviceAddress-07431# If
---     'MicromapCreateInfoEXT'::@deviceAddress@ is not zero, the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-micromapCaptureReplay micromapCaptureReplay>
---     feature /must/ be enabled
---
--- -   #VUID-vkCreateMicromapEXT-device-07432# If @device@ was created with
---     multiple physical devices, then the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-bufferDeviceAddressMultiDevice bufferDeviceAddressMultiDevice>
---     feature /must/ be enabled
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCreateMicromapEXT-device-parameter# @device@ /must/ be a
---     valid 'Vulkan.Core10.Handles.Device' handle
---
--- -   #VUID-vkCreateMicromapEXT-pCreateInfo-parameter# @pCreateInfo@
---     /must/ be a valid pointer to a valid 'MicromapCreateInfoEXT'
---     structure
---
--- -   #VUID-vkCreateMicromapEXT-pAllocator-parameter# If @pAllocator@ is
---     not @NULL@, @pAllocator@ /must/ be a valid pointer to a valid
---     'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' structure
---
--- -   #VUID-vkCreateMicromapEXT-pMicromap-parameter# @pMicromap@ /must/ be
---     a valid pointer to a 'Vulkan.Extensions.Handles.MicromapEXT' 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'
---
---     -   'Vulkan.Extensions.VK_KHR_buffer_device_address.ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR'
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_opacity_micromap VK_EXT_opacity_micromap>,
--- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',
--- 'Vulkan.Core10.Handles.Device', 'MicromapCreateInfoEXT',
--- 'Vulkan.Extensions.Handles.MicromapEXT'
-createMicromapEXT :: forall io
-                   . (MonadIO io)
-                  => -- | @device@ is the logical device that creates the acceleration structure
-                     -- object.
-                     Device
-                  -> -- | @pCreateInfo@ is a pointer to a 'MicromapCreateInfoEXT' structure
-                     -- containing parameters affecting creation of the micromap.
-                     MicromapCreateInfoEXT
-                  -> -- | @pAllocator@ controls host memory allocation as described in the
-                     -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
-                     -- chapter.
-                     ("allocator" ::: Maybe AllocationCallbacks)
-                  -> io (MicromapEXT)
-createMicromapEXT device createInfo allocator = liftIO . evalContT $ do
-  let vkCreateMicromapEXTPtr = pVkCreateMicromapEXT (case device of Device{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCreateMicromapEXTPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCreateMicromapEXT is null" Nothing Nothing
-  let vkCreateMicromapEXT' = mkVkCreateMicromapEXT vkCreateMicromapEXTPtr
-  pCreateInfo <- ContT $ withCStruct (createInfo)
-  pAllocator <- case (allocator) of
-    Nothing -> pure nullPtr
-    Just j -> ContT $ withCStruct (j)
-  pPMicromap <- ContT $ bracket (callocBytes @MicromapEXT 8) free
-  r <- lift $ traceAroundEvent "vkCreateMicromapEXT" (vkCreateMicromapEXT'
-                                                        (deviceHandle (device))
-                                                        pCreateInfo
-                                                        pAllocator
-                                                        (pPMicromap))
-  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
-  pMicromap <- lift $ peek @MicromapEXT pPMicromap
-  pure $ (pMicromap)
-
--- | A convenience wrapper to make a compatible pair of calls to
--- 'createMicromapEXT' and 'destroyMicromapEXT'
---
--- To ensure that 'destroyMicromapEXT' 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.
---
-withMicromapEXT :: forall io r . MonadIO io => Device -> MicromapCreateInfoEXT -> Maybe AllocationCallbacks -> (io MicromapEXT -> (MicromapEXT -> io ()) -> r) -> r
-withMicromapEXT device pCreateInfo pAllocator b =
-  b (createMicromapEXT device pCreateInfo pAllocator)
-    (\(o0) -> destroyMicromapEXT device o0 pAllocator)
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdBuildMicromapsEXT
-  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Ptr MicromapBuildInfoEXT -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Ptr MicromapBuildInfoEXT -> IO ()
-
--- | vkCmdBuildMicromapsEXT - Build a micromap
---
--- = Description
---
--- The 'cmdBuildMicromapsEXT' command provides the ability to initiate
--- multiple micromaps builds, however there is no ordering or
--- synchronization implied between any of the individual micromap builds.
---
--- This means that there /cannot/ be any memory aliasing between any
--- micromap memories or scratch memories being used by any of the builds.
---
--- Accesses to the micromap scratch buffers as identified by the
--- 'MicromapBuildInfoEXT'::@scratchData@ buffer device addresses /must/ be
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies synchronized>
--- with the
--- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT'
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages pipeline stage>
--- and an
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-access-types access type>
--- of ('Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_MICROMAP_READ_BIT_EXT' |
--- 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_MICROMAP_WRITE_BIT_EXT').
--- Accesses to 'MicromapBuildInfoEXT'::@dstMicromap@ /must/ be
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies synchronized>
--- with the
--- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT'
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages pipeline stage>
--- and an
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-access-types access type>
--- of 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_MICROMAP_WRITE_BIT_EXT'.
---
--- Accesses to other input buffers as identified by any used values of
--- 'MicromapBuildInfoEXT'::@data@ or
--- 'MicromapBuildInfoEXT'::@triangleArray@ /must/ be
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies synchronized>
--- with the
--- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT'
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages pipeline stage>
--- and an
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-access-types access type>
--- of 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_SHADER_READ_BIT'.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdBuildMicromapsEXT-pInfos-07461# For each @pInfos@[i],
---     @dstMicromap@ /must/ have been created with a value of
---     'MicromapCreateInfoEXT'::@size@ greater than or equal to the memory
---     size required by the build operation, as returned by
---     'getMicromapBuildSizesEXT' with @pBuildInfo@ = @pInfos@[i]
---
--- -   #VUID-vkCmdBuildMicromapsEXT-mode-07462# The @mode@ member of each
---     element of @pInfos@ /must/ be a valid 'BuildMicromapModeEXT' value
---
--- -   #VUID-vkCmdBuildMicromapsEXT-dstMicromap-07463# The @dstMicromap@
---     member of any element of @pInfos@ /must/ be a valid
---     'Vulkan.Extensions.Handles.MicromapEXT' handle
---
--- -   #VUID-vkCmdBuildMicromapsEXT-pInfos-07464# For each element of
---     @pInfos@ its @type@ member /must/ match the value of
---     'MicromapCreateInfoEXT'::@type@ when its @dstMicromap@ was created
---
--- -   #VUID-vkCmdBuildMicromapsEXT-dstMicromap-07465# The range of memory
---     backing the @dstMicromap@ member of any element of @pInfos@ that is
---     accessed by this command /must/ not overlap the memory backing the
---     @dstMicromap@ member of any other element of @pInfos@, which is
---     accessed by this command
---
--- -   #VUID-vkCmdBuildMicromapsEXT-dstMicromap-07466# The range of memory
---     backing the @dstMicromap@ member of any element of @pInfos@ that is
---     accessed by this command /must/ not overlap the memory backing the
---     @scratchData@ member of any element of @pInfos@ (including the same
---     element), which is accessed by this command
---
--- -   #VUID-vkCmdBuildMicromapsEXT-scratchData-07467# The range of memory
---     backing the @scratchData@ member of any element of @pInfos@ that is
---     accessed by this command /must/ not overlap the memory backing the
---     @scratchData@ member of any other element of @pInfos@, which is
---     accessed by this command
---
--- -   #VUID-vkCmdBuildMicromapsEXT-pInfos-07508# For each element of
---     @pInfos@, the @buffer@ used to create its @dstMicromap@ member
---     /must/ be bound to device memory
---
--- -   #VUID-vkCmdBuildMicromapsEXT-pInfos-07509# If @pInfos@[i].@mode@ is
---     'BUILD_MICROMAP_MODE_BUILD_EXT', all addresses between
---     @pInfos@[i].@scratchData.deviceAddress@ and
---     @pInfos@[i].@scratchData.deviceAddress@ + N - 1 /must/ be in the
---     buffer device address range of the same buffer, where N is given by
---     the @buildScratchSize@ member of the 'MicromapBuildSizesInfoEXT'
---     structure returned from a call to 'getMicromapBuildSizesEXT' with an
---     identical 'MicromapBuildInfoEXT' structure and primitive count
---
--- -   #VUID-vkCmdBuildMicromapsEXT-data-07510# The buffers from which the
---     buffer device addresses for all of the @data@ and @triangleArray@
---     members of all @pInfos@[i] are queried /must/ have been created with
---     the
---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXT'
---     usage flag
---
--- -   #VUID-vkCmdBuildMicromapsEXT-pInfos-07511# For each element of
---     @pInfos@[i] the buffer from which the buffer device address
---     @pInfos@[i].@scratchData.deviceAddress@ is queried /must/ have been
---     created with
---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_STORAGE_BUFFER_BIT'
---     usage flag
---
--- -   #VUID-vkCmdBuildMicromapsEXT-pInfos-07512# For each element of
---     @pInfos@, its @scratchData.deviceAddress@, @data.deviceAddress@, and
---     @triangleArray.deviceAddress@ members /must/ be valid device
---     addresses obtained from
---     'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.getBufferDeviceAddress'
---
--- -   #VUID-vkCmdBuildMicromapsEXT-pInfos-07513# For each element of
---     @pInfos@, if @scratchData.deviceAddress@, @data.deviceAddress@, or
---     @triangleArray.deviceAddress@ is the address of a non-sparse buffer
---     then it /must/ be bound completely and contiguously to a single
---     'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-vkCmdBuildMicromapsEXT-pInfos-07514# For each element of
---     @pInfos@, its @scratchData.deviceAddress@ member /must/ be a
---     multiple of
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.PhysicalDeviceAccelerationStructurePropertiesKHR'::@minAccelerationStructureScratchOffsetAlignment@
---
--- -   #VUID-vkCmdBuildMicromapsEXT-pInfos-07515# For each element of
---     @pInfos@, its @triangleArray.deviceAddress@ and @data.deviceAddress@
---     members /must/ be a multiple of @256@
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdBuildMicromapsEXT-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdBuildMicromapsEXT-pInfos-parameter# @pInfos@ /must/ be a
---     valid pointer to an array of @infoCount@ valid
---     'MicromapBuildInfoEXT' structures
---
--- -   #VUID-vkCmdBuildMicromapsEXT-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-vkCmdBuildMicromapsEXT-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support compute operations
---
--- -   #VUID-vkCmdBuildMicromapsEXT-renderpass# This command /must/ only be
---     called outside of a render pass instance
---
--- -   #VUID-vkCmdBuildMicromapsEXT-videocoding# This command /must/ only
---     be called outside of a video coding scope
---
--- -   #VUID-vkCmdBuildMicromapsEXT-infoCount-arraylength# @infoCount@
---     /must/ be greater than @0@
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
--- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | Compute                                                                                                               | Action                                                                                                                                 |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_opacity_micromap VK_EXT_opacity_micromap>,
--- 'Vulkan.Core10.Handles.CommandBuffer', 'MicromapBuildInfoEXT'
-cmdBuildMicromapsEXT :: forall io
-                      . (MonadIO io)
-                     => -- | @commandBuffer@ is the command buffer into which the command will be
-                        -- recorded.
-                        CommandBuffer
-                     -> -- | @pInfos@ is a pointer to an array of @infoCount@ 'MicromapBuildInfoEXT'
-                        -- structures defining the data used to build each micromap.
-                        ("infos" ::: Vector MicromapBuildInfoEXT)
-                     -> io ()
-cmdBuildMicromapsEXT commandBuffer infos = liftIO . evalContT $ do
-  let vkCmdBuildMicromapsEXTPtr = pVkCmdBuildMicromapsEXT (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCmdBuildMicromapsEXTPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdBuildMicromapsEXT is null" Nothing Nothing
-  let vkCmdBuildMicromapsEXT' = mkVkCmdBuildMicromapsEXT vkCmdBuildMicromapsEXTPtr
-  pPInfos <- ContT $ allocaBytes @MicromapBuildInfoEXT ((Data.Vector.length (infos)) * 96)
-  Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPInfos `plusPtr` (96 * (i)) :: Ptr MicromapBuildInfoEXT) (e) . ($ ())) (infos)
-  lift $ traceAroundEvent "vkCmdBuildMicromapsEXT" (vkCmdBuildMicromapsEXT'
-                                                      (commandBufferHandle (commandBuffer))
-                                                      ((fromIntegral (Data.Vector.length $ (infos)) :: Word32))
-                                                      (pPInfos))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkBuildMicromapsEXT
-  :: FunPtr (Ptr Device_T -> DeferredOperationKHR -> Word32 -> Ptr MicromapBuildInfoEXT -> IO Result) -> Ptr Device_T -> DeferredOperationKHR -> Word32 -> Ptr MicromapBuildInfoEXT -> IO Result
-
--- | vkBuildMicromapsEXT - Build a micromap on the host
---
--- = Description
---
--- This command fulfills the same task as 'cmdBuildMicromapsEXT' but is
--- executed by the host.
---
--- The 'buildMicromapsEXT' command provides the ability to initiate
--- multiple micromaps builds, however there is no ordering or
--- synchronization implied between any of the individual micromap builds.
---
--- This means that there /cannot/ be any memory aliasing between any
--- micromap memories or scratch memories being used by any of the builds.
---
--- == Valid Usage
---
--- -   #VUID-vkBuildMicromapsEXT-pInfos-07461# For each @pInfos@[i],
---     @dstMicromap@ /must/ have been created with a value of
---     'MicromapCreateInfoEXT'::@size@ greater than or equal to the memory
---     size required by the build operation, as returned by
---     'getMicromapBuildSizesEXT' with @pBuildInfo@ = @pInfos@[i]
---
--- -   #VUID-vkBuildMicromapsEXT-mode-07462# The @mode@ member of each
---     element of @pInfos@ /must/ be a valid 'BuildMicromapModeEXT' value
---
--- -   #VUID-vkBuildMicromapsEXT-dstMicromap-07463# The @dstMicromap@
---     member of any element of @pInfos@ /must/ be a valid
---     'Vulkan.Extensions.Handles.MicromapEXT' handle
---
--- -   #VUID-vkBuildMicromapsEXT-pInfos-07464# For each element of @pInfos@
---     its @type@ member /must/ match the value of
---     'MicromapCreateInfoEXT'::@type@ when its @dstMicromap@ was created
---
--- -   #VUID-vkBuildMicromapsEXT-dstMicromap-07465# The range of memory
---     backing the @dstMicromap@ member of any element of @pInfos@ that is
---     accessed by this command /must/ not overlap the memory backing the
---     @dstMicromap@ member of any other element of @pInfos@, which is
---     accessed by this command
---
--- -   #VUID-vkBuildMicromapsEXT-dstMicromap-07466# The range of memory
---     backing the @dstMicromap@ member of any element of @pInfos@ that is
---     accessed by this command /must/ not overlap the memory backing the
---     @scratchData@ member of any element of @pInfos@ (including the same
---     element), which is accessed by this command
---
--- -   #VUID-vkBuildMicromapsEXT-scratchData-07467# The range of memory
---     backing the @scratchData@ member of any element of @pInfos@ that is
---     accessed by this command /must/ not overlap the memory backing the
---     @scratchData@ member of any other element of @pInfos@, which is
---     accessed by this command
---
--- -   #VUID-vkBuildMicromapsEXT-pInfos-07552# For each element of
---     @pInfos@, the @buffer@ used to create its @dstMicromap@ member
---     /must/ be bound to host-visible device memory
---
--- -   #VUID-vkBuildMicromapsEXT-pInfos-07553# For each element of
---     @pInfos@, all referenced addresses of @pInfos@[i].@data.hostAddress@
---     /must/ be valid host memory
---
--- -   #VUID-vkBuildMicromapsEXT-pInfos-07554# For each element of
---     @pInfos@, all referenced addresses of
---     @pInfos@[i].@triangleArray.hostAddress@ /must/ be valid host memory
---
--- -   #VUID-vkBuildMicromapsEXT-micromapHostCommands-07555# The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-micromapHostCommands ::micromapHostCommands>
---     feature /must/ be enabled
---
--- -   #VUID-vkBuildMicromapsEXT-pInfos-07556# If @pInfos@[i].@mode@ is
---     'BUILD_MICROMAP_MODE_BUILD_EXT', all addresses between
---     @pInfos@[i].@scratchData.hostAddress@ and
---     @pInfos@[i].@scratchData.hostAddress@ + N - 1 /must/ be valid host
---     memory, where N is given by the @buildScratchSize@ member of the
---     'MicromapBuildSizesInfoEXT' structure returned from a call to
---     'getMicromapBuildSizesEXT' with an identical 'MicromapBuildInfoEXT'
---     structure and primitive count
---
--- -   #VUID-vkBuildMicromapsEXT-pInfos-07557# For each element of
---     @pInfos@, the @buffer@ used to create its @dstMicromap@ member
---     /must/ be bound to memory that was not allocated with multiple
---     instances
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkBuildMicromapsEXT-device-parameter# @device@ /must/ be a
---     valid 'Vulkan.Core10.Handles.Device' handle
---
--- -   #VUID-vkBuildMicromapsEXT-deferredOperation-parameter# If
---     @deferredOperation@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
---     @deferredOperation@ /must/ be a valid
---     'Vulkan.Extensions.Handles.DeferredOperationKHR' handle
---
--- -   #VUID-vkBuildMicromapsEXT-pInfos-parameter# @pInfos@ /must/ be a
---     valid pointer to an array of @infoCount@ valid
---     'MicromapBuildInfoEXT' structures
---
--- -   #VUID-vkBuildMicromapsEXT-infoCount-arraylength# @infoCount@ /must/
---     be greater than @0@
---
--- -   #VUID-vkBuildMicromapsEXT-deferredOperation-parent# If
---     @deferredOperation@ is a valid handle, it /must/ have been created,
---     allocated, or retrieved from @device@
---
--- == 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.OPERATION_DEFERRED_KHR'
---
---     -   'Vulkan.Core10.Enums.Result.OPERATION_NOT_DEFERRED_KHR'
---
--- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
---
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
---
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_opacity_micromap VK_EXT_opacity_micromap>,
--- 'Vulkan.Extensions.Handles.DeferredOperationKHR',
--- 'Vulkan.Core10.Handles.Device', 'MicromapBuildInfoEXT'
-buildMicromapsEXT :: forall io
-                   . (MonadIO io)
-                  => -- | @device@ is the 'Vulkan.Core10.Handles.Device' for which the micromaps
-                     -- are being built.
-                     Device
-                  -> -- | @deferredOperation@ is an optional
-                     -- 'Vulkan.Extensions.Handles.DeferredOperationKHR' to
-                     -- <https://registry.khronos.org/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@ 'MicromapBuildInfoEXT'
-                     -- structures defining the geometry used to build each micromap.
-                     ("infos" ::: Vector MicromapBuildInfoEXT)
-                  -> io (Result)
-buildMicromapsEXT device deferredOperation infos = liftIO . evalContT $ do
-  let vkBuildMicromapsEXTPtr = pVkBuildMicromapsEXT (case device of Device{deviceCmds} -> deviceCmds)
-  lift $ unless (vkBuildMicromapsEXTPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkBuildMicromapsEXT is null" Nothing Nothing
-  let vkBuildMicromapsEXT' = mkVkBuildMicromapsEXT vkBuildMicromapsEXTPtr
-  pPInfos <- ContT $ allocaBytes @MicromapBuildInfoEXT ((Data.Vector.length (infos)) * 96)
-  Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPInfos `plusPtr` (96 * (i)) :: Ptr MicromapBuildInfoEXT) (e) . ($ ())) (infos)
-  r <- lift $ traceAroundEvent "vkBuildMicromapsEXT" (vkBuildMicromapsEXT'
-                                                        (deviceHandle (device))
-                                                        (deferredOperation)
-                                                        ((fromIntegral (Data.Vector.length $ (infos)) :: Word32))
-                                                        (pPInfos))
-  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
-  pure $ (r)
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkDestroyMicromapEXT
-  :: FunPtr (Ptr Device_T -> MicromapEXT -> Ptr AllocationCallbacks -> IO ()) -> Ptr Device_T -> MicromapEXT -> Ptr AllocationCallbacks -> IO ()
-
--- | vkDestroyMicromapEXT - Destroy a micromap object
---
--- == Valid Usage
---
--- -   #VUID-vkDestroyMicromapEXT-micromap-07441# All submitted commands
---     that refer to @micromap@ /must/ have completed execution
---
--- -   #VUID-vkDestroyMicromapEXT-micromap-07442# If
---     'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' were
---     provided when @micromap@ was created, a compatible set of callbacks
---     /must/ be provided here
---
--- -   #VUID-vkDestroyMicromapEXT-micromap-07443# If no
---     'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' were
---     provided when @micromap@ was created, @pAllocator@ /must/ be @NULL@
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkDestroyMicromapEXT-device-parameter# @device@ /must/ be a
---     valid 'Vulkan.Core10.Handles.Device' handle
---
--- -   #VUID-vkDestroyMicromapEXT-micromap-parameter# If @micromap@ is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', @micromap@ /must/ be a
---     valid 'Vulkan.Extensions.Handles.MicromapEXT' handle
---
--- -   #VUID-vkDestroyMicromapEXT-pAllocator-parameter# If @pAllocator@ is
---     not @NULL@, @pAllocator@ /must/ be a valid pointer to a valid
---     'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' structure
---
--- -   #VUID-vkDestroyMicromapEXT-micromap-parent# If @micromap@ is a valid
---     handle, it /must/ have been created, allocated, or retrieved from
---     @device@
---
--- == Host Synchronization
---
--- -   Host access to @micromap@ /must/ be externally synchronized
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_opacity_micromap VK_EXT_opacity_micromap>,
--- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',
--- 'Vulkan.Core10.Handles.Device', 'Vulkan.Extensions.Handles.MicromapEXT'
-destroyMicromapEXT :: forall io
-                    . (MonadIO io)
-                   => -- | @device@ is the logical device that destroys the micromap.
-                      Device
-                   -> -- | @micromap@ is the micromap to destroy.
-                      MicromapEXT
-                   -> -- | @pAllocator@ controls host memory allocation as described in the
-                      -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
-                      -- chapter.
-                      ("allocator" ::: Maybe AllocationCallbacks)
-                   -> io ()
-destroyMicromapEXT device micromap allocator = liftIO . evalContT $ do
-  let vkDestroyMicromapEXTPtr = pVkDestroyMicromapEXT (case device of Device{deviceCmds} -> deviceCmds)
-  lift $ unless (vkDestroyMicromapEXTPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkDestroyMicromapEXT is null" Nothing Nothing
-  let vkDestroyMicromapEXT' = mkVkDestroyMicromapEXT vkDestroyMicromapEXTPtr
-  pAllocator <- case (allocator) of
-    Nothing -> pure nullPtr
-    Just j -> ContT $ withCStruct (j)
-  lift $ traceAroundEvent "vkDestroyMicromapEXT" (vkDestroyMicromapEXT'
-                                                    (deviceHandle (device))
-                                                    (micromap)
-                                                    pAllocator)
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdCopyMicromapEXT
-  :: FunPtr (Ptr CommandBuffer_T -> Ptr CopyMicromapInfoEXT -> IO ()) -> Ptr CommandBuffer_T -> Ptr CopyMicromapInfoEXT -> IO ()
-
--- | vkCmdCopyMicromapEXT - Copy a micromap
---
--- = Description
---
--- This command copies the @pInfo->src@ micromap to the @pInfo->dst@
--- micromap in the manner specified by @pInfo->mode@.
---
--- Accesses to @pInfo->src@ and @pInfo->dst@ /must/ be
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies synchronized>
--- with the
--- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT'
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages pipeline stage>
--- and an
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-access-types access type>
--- of 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_MICROMAP_READ_BIT_EXT' or
--- 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_MICROMAP_WRITE_BIT_EXT' as
--- appropriate.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdCopyMicromapEXT-buffer-07529# The @buffer@ used to create
---     @pInfo->src@ /must/ be bound to device memory
---
--- -   #VUID-vkCmdCopyMicromapEXT-buffer-07530# The @buffer@ used to create
---     @pInfo->dst@ /must/ be bound to device memory
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdCopyMicromapEXT-commandBuffer-parameter# @commandBuffer@
---     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdCopyMicromapEXT-pInfo-parameter# @pInfo@ /must/ be a
---     valid pointer to a valid 'CopyMicromapInfoEXT' structure
---
--- -   #VUID-vkCmdCopyMicromapEXT-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-vkCmdCopyMicromapEXT-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support compute operations
---
--- -   #VUID-vkCmdCopyMicromapEXT-renderpass# This command /must/ only be
---     called outside of a render pass instance
---
--- -   #VUID-vkCmdCopyMicromapEXT-videocoding# This command /must/ only be
---     called outside of a video coding scope
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
--- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | Compute                                                                                                               | Action                                                                                                                                 |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_opacity_micromap VK_EXT_opacity_micromap>,
--- 'Vulkan.Core10.Handles.CommandBuffer', 'CopyMicromapInfoEXT'
-cmdCopyMicromapEXT :: forall io
-                    . (MonadIO io)
-                   => -- | @commandBuffer@ is the command buffer into which the command will be
-                      -- recorded.
-                      CommandBuffer
-                   -> -- | @pInfo@ is a pointer to a 'CopyMicromapInfoEXT' structure defining the
-                      -- copy operation.
-                      CopyMicromapInfoEXT
-                   -> io ()
-cmdCopyMicromapEXT commandBuffer info = liftIO . evalContT $ do
-  let vkCmdCopyMicromapEXTPtr = pVkCmdCopyMicromapEXT (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCmdCopyMicromapEXTPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdCopyMicromapEXT is null" Nothing Nothing
-  let vkCmdCopyMicromapEXT' = mkVkCmdCopyMicromapEXT vkCmdCopyMicromapEXTPtr
-  pInfo <- ContT $ withCStruct (info)
-  lift $ traceAroundEvent "vkCmdCopyMicromapEXT" (vkCmdCopyMicromapEXT'
-                                                    (commandBufferHandle (commandBuffer))
-                                                    pInfo)
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCopyMicromapEXT
-  :: FunPtr (Ptr Device_T -> DeferredOperationKHR -> Ptr CopyMicromapInfoEXT -> IO Result) -> Ptr Device_T -> DeferredOperationKHR -> Ptr CopyMicromapInfoEXT -> IO Result
-
--- | vkCopyMicromapEXT - Copy a micromap on the host
---
--- = Description
---
--- This command fulfills the same task as 'cmdCopyMicromapEXT' but is
--- executed by the host.
---
--- == Valid Usage
---
--- -   #VUID-vkCopyMicromapEXT-deferredOperation-03678# Any previous
---     deferred operation that was associated with @deferredOperation@
---     /must/ be complete
---
--- -   #VUID-vkCopyMicromapEXT-buffer-07558# The @buffer@ used to create
---     @pInfo->src@ /must/ be bound to host-visible device memory
---
--- -   #VUID-vkCopyMicromapEXT-buffer-07559# The @buffer@ used to create
---     @pInfo->dst@ /must/ be bound to host-visible device memory
---
--- -   #VUID-vkCopyMicromapEXT-micromapHostCommands-07560# The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-micromapHostCommands ::micromapHostCommands>
---     feature /must/ be enabled
---
--- -   #VUID-vkCopyMicromapEXT-buffer-07561# The @buffer@ used to create
---     @pInfo->src@ /must/ be bound to memory that was not allocated with
---     multiple instances
---
--- -   #VUID-vkCopyMicromapEXT-buffer-07562# The @buffer@ used to create
---     @pInfo->dst@ /must/ be bound to memory that was not allocated with
---     multiple instances
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCopyMicromapEXT-device-parameter# @device@ /must/ be a valid
---     'Vulkan.Core10.Handles.Device' handle
---
--- -   #VUID-vkCopyMicromapEXT-deferredOperation-parameter# If
---     @deferredOperation@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
---     @deferredOperation@ /must/ be a valid
---     'Vulkan.Extensions.Handles.DeferredOperationKHR' handle
---
--- -   #VUID-vkCopyMicromapEXT-pInfo-parameter# @pInfo@ /must/ be a valid
---     pointer to a valid 'CopyMicromapInfoEXT' structure
---
--- -   #VUID-vkCopyMicromapEXT-deferredOperation-parent# If
---     @deferredOperation@ is a valid handle, it /must/ have been created,
---     allocated, or retrieved from @device@
---
--- == 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.OPERATION_DEFERRED_KHR'
---
---     -   'Vulkan.Core10.Enums.Result.OPERATION_NOT_DEFERRED_KHR'
---
--- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
---
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
---
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_opacity_micromap VK_EXT_opacity_micromap>,
--- 'CopyMicromapInfoEXT', 'Vulkan.Extensions.Handles.DeferredOperationKHR',
--- 'Vulkan.Core10.Handles.Device'
-copyMicromapEXT :: forall io
-                 . (MonadIO io)
-                => -- | @device@ is the device which owns the micromaps.
-                   Device
-                -> -- | @deferredOperation@ is an optional
-                   -- 'Vulkan.Extensions.Handles.DeferredOperationKHR' to
-                   -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#deferred-host-operations-requesting request deferral>
-                   -- for this command.
-                   DeferredOperationKHR
-                -> -- | @pInfo@ is a pointer to a 'CopyMicromapInfoEXT' structure defining the
-                   -- copy operation.
-                   CopyMicromapInfoEXT
-                -> io (Result)
-copyMicromapEXT device deferredOperation info = liftIO . evalContT $ do
-  let vkCopyMicromapEXTPtr = pVkCopyMicromapEXT (case device of Device{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCopyMicromapEXTPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCopyMicromapEXT is null" Nothing Nothing
-  let vkCopyMicromapEXT' = mkVkCopyMicromapEXT vkCopyMicromapEXTPtr
-  pInfo <- ContT $ withCStruct (info)
-  r <- lift $ traceAroundEvent "vkCopyMicromapEXT" (vkCopyMicromapEXT'
-                                                      (deviceHandle (device))
-                                                      (deferredOperation)
-                                                      pInfo)
-  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
-  pure $ (r)
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdCopyMicromapToMemoryEXT
-  :: FunPtr (Ptr CommandBuffer_T -> Ptr CopyMicromapToMemoryInfoEXT -> IO ()) -> Ptr CommandBuffer_T -> Ptr CopyMicromapToMemoryInfoEXT -> IO ()
-
--- | vkCmdCopyMicromapToMemoryEXT - Copy a micromap to device memory
---
--- = Description
---
--- Accesses to @pInfo->src@ /must/ be
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies synchronized>
--- with the
--- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT'
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages pipeline stage>
--- and an
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-access-types access type>
--- of 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_MICROMAP_READ_BIT_EXT'.
--- Accesses to the buffer indicated by @pInfo->dst.deviceAddress@ /must/ be
--- synchronized with the
--- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT'
--- pipeline stage and an access type of
--- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_TRANSFER_WRITE_BIT'.
---
--- This command produces the same results as 'copyMicromapToMemoryEXT', but
--- writes its result to a device address, and is executed on the device
--- rather than the host. The output /may/ not necessarily be bit-for-bit
--- identical, but it can be equally used by either
--- 'cmdCopyMemoryToMicromapEXT' or 'copyMemoryToMicromapEXT'.
---
--- The defined header structure for the serialized data consists of:
---
--- -   'Vulkan.Core10.APIConstants.UUID_SIZE' bytes of data matching
---     'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceIDProperties'::@driverUUID@
---
--- -   'Vulkan.Core10.APIConstants.UUID_SIZE' bytes of data identifying the
---     compatibility for comparison using
---     'getDeviceMicromapCompatibilityEXT' The serialized data is written
---     to the buffer (or read from the buffer) according to the host
---     endianness.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdCopyMicromapToMemoryEXT-pInfo-07536#
---     @pInfo->dst.deviceAddress@ /must/ be a valid device address for a
---     buffer bound to device memory
---
--- -   #VUID-vkCmdCopyMicromapToMemoryEXT-pInfo-07537#
---     @pInfo->dst.deviceAddress@ /must/ be aligned to @256@ bytes
---
--- -   #VUID-vkCmdCopyMicromapToMemoryEXT-pInfo-07538# If the buffer
---     pointed to by @pInfo->dst.deviceAddress@ is non-sparse then it
---     /must/ be bound completely and contiguously to a single
---     'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-vkCmdCopyMicromapToMemoryEXT-buffer-07539# The @buffer@ used
---     to create @pInfo->src@ /must/ be bound to device memory
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdCopyMicromapToMemoryEXT-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdCopyMicromapToMemoryEXT-pInfo-parameter# @pInfo@ /must/
---     be a valid pointer to a valid 'CopyMicromapToMemoryInfoEXT'
---     structure
---
--- -   #VUID-vkCmdCopyMicromapToMemoryEXT-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-vkCmdCopyMicromapToMemoryEXT-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support compute operations
---
--- -   #VUID-vkCmdCopyMicromapToMemoryEXT-renderpass# This command /must/
---     only be called outside of a render pass instance
---
--- -   #VUID-vkCmdCopyMicromapToMemoryEXT-videocoding# This command /must/
---     only be called outside of a video coding scope
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
--- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | Compute                                                                                                               | Action                                                                                                                                 |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_opacity_micromap VK_EXT_opacity_micromap>,
--- 'Vulkan.Core10.Handles.CommandBuffer', 'CopyMicromapToMemoryInfoEXT'
-cmdCopyMicromapToMemoryEXT :: forall io
-                            . (MonadIO io)
-                           => -- | @commandBuffer@ is the command buffer into which the command will be
-                              -- recorded.
-                              CommandBuffer
-                           -> -- | @pInfo@ is an a pointer to a 'CopyMicromapToMemoryInfoEXT' structure
-                              -- defining the copy operation.
-                              CopyMicromapToMemoryInfoEXT
-                           -> io ()
-cmdCopyMicromapToMemoryEXT commandBuffer info = liftIO . evalContT $ do
-  let vkCmdCopyMicromapToMemoryEXTPtr = pVkCmdCopyMicromapToMemoryEXT (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCmdCopyMicromapToMemoryEXTPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdCopyMicromapToMemoryEXT is null" Nothing Nothing
-  let vkCmdCopyMicromapToMemoryEXT' = mkVkCmdCopyMicromapToMemoryEXT vkCmdCopyMicromapToMemoryEXTPtr
-  pInfo <- ContT $ withCStruct (info)
-  lift $ traceAroundEvent "vkCmdCopyMicromapToMemoryEXT" (vkCmdCopyMicromapToMemoryEXT'
-                                                            (commandBufferHandle (commandBuffer))
-                                                            pInfo)
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCopyMicromapToMemoryEXT
-  :: FunPtr (Ptr Device_T -> DeferredOperationKHR -> Ptr CopyMicromapToMemoryInfoEXT -> IO Result) -> Ptr Device_T -> DeferredOperationKHR -> Ptr CopyMicromapToMemoryInfoEXT -> IO Result
-
--- | vkCopyMicromapToMemoryEXT - Serialize a micromap on the host
---
--- = Description
---
--- This command fulfills the same task as 'cmdCopyMicromapToMemoryEXT' but
--- is executed by the host.
---
--- This command produces the same results as 'cmdCopyMicromapToMemoryEXT',
--- but writes its result directly to a host pointer, and is executed on the
--- host rather than the device. The output /may/ not necessarily be
--- bit-for-bit identical, but it can be equally used by either
--- 'cmdCopyMemoryToMicromapEXT' or 'copyMemoryToMicromapEXT'.
---
--- == Valid Usage
---
--- -   #VUID-vkCopyMicromapToMemoryEXT-deferredOperation-03678# Any
---     previous deferred operation that was associated with
---     @deferredOperation@ /must/ be complete
---
--- -   #VUID-vkCopyMicromapToMemoryEXT-buffer-07568# The @buffer@ used to
---     create @pInfo->src@ /must/ be bound to host-visible device memory
---
--- -   #VUID-vkCopyMicromapToMemoryEXT-pInfo-07569#
---     @pInfo->dst.hostAddress@ /must/ be a valid host pointer
---
--- -   #VUID-vkCopyMicromapToMemoryEXT-pInfo-07570#
---     @pInfo->dst.hostAddress@ /must/ be aligned to 16 bytes
---
--- -   #VUID-vkCopyMicromapToMemoryEXT-micromapHostCommands-07571# The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-micromapHostCommands ::micromapHostCommands>
---     feature /must/ be enabled
---
--- -   #VUID-vkCopyMicromapToMemoryEXT-buffer-07572# The @buffer@ used to
---     create @pInfo->src@ /must/ be bound to memory that was not allocated
---     with multiple instances
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCopyMicromapToMemoryEXT-device-parameter# @device@ /must/ be
---     a valid 'Vulkan.Core10.Handles.Device' handle
---
--- -   #VUID-vkCopyMicromapToMemoryEXT-deferredOperation-parameter# If
---     @deferredOperation@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
---     @deferredOperation@ /must/ be a valid
---     'Vulkan.Extensions.Handles.DeferredOperationKHR' handle
---
--- -   #VUID-vkCopyMicromapToMemoryEXT-pInfo-parameter# @pInfo@ /must/ be a
---     valid pointer to a valid 'CopyMicromapToMemoryInfoEXT' structure
---
--- -   #VUID-vkCopyMicromapToMemoryEXT-deferredOperation-parent# If
---     @deferredOperation@ is a valid handle, it /must/ have been created,
---     allocated, or retrieved from @device@
---
--- == 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.OPERATION_DEFERRED_KHR'
---
---     -   'Vulkan.Core10.Enums.Result.OPERATION_NOT_DEFERRED_KHR'
---
--- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
---
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
---
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_opacity_micromap VK_EXT_opacity_micromap>,
--- 'CopyMicromapToMemoryInfoEXT',
--- 'Vulkan.Extensions.Handles.DeferredOperationKHR',
--- 'Vulkan.Core10.Handles.Device'
-copyMicromapToMemoryEXT :: forall io
-                         . (MonadIO io)
-                        => -- | @device@ is the device which owns @pInfo->src@.
-                           Device
-                        -> -- | @deferredOperation@ is an optional
-                           -- 'Vulkan.Extensions.Handles.DeferredOperationKHR' to
-                           -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#deferred-host-operations-requesting request deferral>
-                           -- for this command.
-                           DeferredOperationKHR
-                        -> -- | @pInfo@ is a pointer to a 'CopyMicromapToMemoryInfoEXT' structure
-                           -- defining the copy operation.
-                           CopyMicromapToMemoryInfoEXT
-                        -> io (Result)
-copyMicromapToMemoryEXT device deferredOperation info = liftIO . evalContT $ do
-  let vkCopyMicromapToMemoryEXTPtr = pVkCopyMicromapToMemoryEXT (case device of Device{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCopyMicromapToMemoryEXTPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCopyMicromapToMemoryEXT is null" Nothing Nothing
-  let vkCopyMicromapToMemoryEXT' = mkVkCopyMicromapToMemoryEXT vkCopyMicromapToMemoryEXTPtr
-  pInfo <- ContT $ withCStruct (info)
-  r <- lift $ traceAroundEvent "vkCopyMicromapToMemoryEXT" (vkCopyMicromapToMemoryEXT'
-                                                              (deviceHandle (device))
-                                                              (deferredOperation)
-                                                              pInfo)
-  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
-  pure $ (r)
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdCopyMemoryToMicromapEXT
-  :: FunPtr (Ptr CommandBuffer_T -> Ptr CopyMemoryToMicromapInfoEXT -> IO ()) -> Ptr CommandBuffer_T -> Ptr CopyMemoryToMicromapInfoEXT -> IO ()
-
--- | vkCmdCopyMemoryToMicromapEXT - Copy device memory to a micromap
---
--- = Description
---
--- Accesses to @pInfo->dst@ /must/ be
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies synchronized>
--- with the
--- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT'
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages pipeline stage>
--- and an
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-access-types access type>
--- of 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_MICROMAP_READ_BIT_EXT'.
--- Accesses to the buffer indicated by @pInfo->src.deviceAddress@ /must/ be
--- synchronized with the
--- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT'
--- pipeline stage and an access type of
--- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_TRANSFER_READ_BIT'.
---
--- This command can accept micromaps produced by either
--- 'cmdCopyMicromapToMemoryEXT' or 'copyMicromapToMemoryEXT'.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdCopyMemoryToMicromapEXT-pInfo-07543#
---     @pInfo->src.deviceAddress@ /must/ be a valid device address for a
---     buffer bound to device memory
---
--- -   #VUID-vkCmdCopyMemoryToMicromapEXT-pInfo-07544#
---     @pInfo->src.deviceAddress@ /must/ be aligned to @256@ bytes
---
--- -   #VUID-vkCmdCopyMemoryToMicromapEXT-pInfo-07545# If the buffer
---     pointed to by @pInfo->src.deviceAddress@ is non-sparse then it
---     /must/ be bound completely and contiguously to a single
---     'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-vkCmdCopyMemoryToMicromapEXT-buffer-07546# The @buffer@ used
---     to create @pInfo->dst@ /must/ be bound to device memory
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdCopyMemoryToMicromapEXT-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdCopyMemoryToMicromapEXT-pInfo-parameter# @pInfo@ /must/
---     be a valid pointer to a valid 'CopyMemoryToMicromapInfoEXT'
---     structure
---
--- -   #VUID-vkCmdCopyMemoryToMicromapEXT-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-vkCmdCopyMemoryToMicromapEXT-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support compute operations
---
--- -   #VUID-vkCmdCopyMemoryToMicromapEXT-renderpass# This command /must/
---     only be called outside of a render pass instance
---
--- -   #VUID-vkCmdCopyMemoryToMicromapEXT-videocoding# This command /must/
---     only be called outside of a video coding scope
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
--- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | Compute                                                                                                               | Action                                                                                                                                 |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_opacity_micromap VK_EXT_opacity_micromap>,
--- 'Vulkan.Core10.Handles.CommandBuffer', 'CopyMemoryToMicromapInfoEXT'
-cmdCopyMemoryToMicromapEXT :: forall io
-                            . (MonadIO io)
-                           => -- | @commandBuffer@ is the command buffer into which the command will be
-                              -- recorded.
-                              CommandBuffer
-                           -> -- | @pInfo@ is a pointer to a 'CopyMemoryToMicromapInfoEXT' structure
-                              -- defining the copy operation.
-                              CopyMemoryToMicromapInfoEXT
-                           -> io ()
-cmdCopyMemoryToMicromapEXT commandBuffer info = liftIO . evalContT $ do
-  let vkCmdCopyMemoryToMicromapEXTPtr = pVkCmdCopyMemoryToMicromapEXT (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCmdCopyMemoryToMicromapEXTPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdCopyMemoryToMicromapEXT is null" Nothing Nothing
-  let vkCmdCopyMemoryToMicromapEXT' = mkVkCmdCopyMemoryToMicromapEXT vkCmdCopyMemoryToMicromapEXTPtr
-  pInfo <- ContT $ withCStruct (info)
-  lift $ traceAroundEvent "vkCmdCopyMemoryToMicromapEXT" (vkCmdCopyMemoryToMicromapEXT'
-                                                            (commandBufferHandle (commandBuffer))
-                                                            pInfo)
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCopyMemoryToMicromapEXT
-  :: FunPtr (Ptr Device_T -> DeferredOperationKHR -> Ptr CopyMemoryToMicromapInfoEXT -> IO Result) -> Ptr Device_T -> DeferredOperationKHR -> Ptr CopyMemoryToMicromapInfoEXT -> IO Result
-
--- | vkCopyMemoryToMicromapEXT - Deserialize a micromap on the host
---
--- = Description
---
--- This command fulfills the same task as 'cmdCopyMemoryToMicromapEXT' but
--- is executed by the host.
---
--- This command can accept micromaps produced by either
--- 'cmdCopyMicromapToMemoryEXT' or 'copyMicromapToMemoryEXT'.
---
--- == Valid Usage
---
--- -   #VUID-vkCopyMemoryToMicromapEXT-deferredOperation-03678# Any
---     previous deferred operation that was associated with
---     @deferredOperation@ /must/ be complete
---
--- -   #VUID-vkCopyMemoryToMicromapEXT-pInfo-07563#
---     @pInfo->src.hostAddress@ /must/ be a valid host pointer
---
--- -   #VUID-vkCopyMemoryToMicromapEXT-pInfo-07564#
---     @pInfo->src.hostAddress@ /must/ be aligned to 16 bytes
---
--- -   #VUID-vkCopyMemoryToMicromapEXT-buffer-07565# The @buffer@ used to
---     create @pInfo->dst@ /must/ be bound to host-visible device memory
---
--- -   #VUID-vkCopyMemoryToMicromapEXT-micromapHostCommands-07566# The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-micromapHostCommands ::micromapHostCommands>
---     feature /must/ be enabled
---
--- -   #VUID-vkCopyMemoryToMicromapEXT-buffer-07567# The @buffer@ used to
---     create @pInfo->dst@ /must/ be bound to memory that was not allocated
---     with multiple instances
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCopyMemoryToMicromapEXT-device-parameter# @device@ /must/ be
---     a valid 'Vulkan.Core10.Handles.Device' handle
---
--- -   #VUID-vkCopyMemoryToMicromapEXT-deferredOperation-parameter# If
---     @deferredOperation@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
---     @deferredOperation@ /must/ be a valid
---     'Vulkan.Extensions.Handles.DeferredOperationKHR' handle
---
--- -   #VUID-vkCopyMemoryToMicromapEXT-pInfo-parameter# @pInfo@ /must/ be a
---     valid pointer to a valid 'CopyMemoryToMicromapInfoEXT' structure
---
--- -   #VUID-vkCopyMemoryToMicromapEXT-deferredOperation-parent# If
---     @deferredOperation@ is a valid handle, it /must/ have been created,
---     allocated, or retrieved from @device@
---
--- == 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.OPERATION_DEFERRED_KHR'
---
---     -   'Vulkan.Core10.Enums.Result.OPERATION_NOT_DEFERRED_KHR'
---
--- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
---
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
---
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_opacity_micromap VK_EXT_opacity_micromap>,
--- 'CopyMemoryToMicromapInfoEXT',
--- 'Vulkan.Extensions.Handles.DeferredOperationKHR',
--- 'Vulkan.Core10.Handles.Device'
-copyMemoryToMicromapEXT :: forall io
-                         . (MonadIO io)
-                        => -- | @device@ is the device which owns @pInfo->dst@.
-                           Device
-                        -> -- | @deferredOperation@ is an optional
-                           -- 'Vulkan.Extensions.Handles.DeferredOperationKHR' to
-                           -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#deferred-host-operations-requesting request deferral>
-                           -- for this command.
-                           DeferredOperationKHR
-                        -> -- | @pInfo@ is a pointer to a 'CopyMemoryToMicromapInfoEXT' structure
-                           -- defining the copy operation.
-                           CopyMemoryToMicromapInfoEXT
-                        -> io (Result)
-copyMemoryToMicromapEXT device deferredOperation info = liftIO . evalContT $ do
-  let vkCopyMemoryToMicromapEXTPtr = pVkCopyMemoryToMicromapEXT (case device of Device{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCopyMemoryToMicromapEXTPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCopyMemoryToMicromapEXT is null" Nothing Nothing
-  let vkCopyMemoryToMicromapEXT' = mkVkCopyMemoryToMicromapEXT vkCopyMemoryToMicromapEXTPtr
-  pInfo <- ContT $ withCStruct (info)
-  r <- lift $ traceAroundEvent "vkCopyMemoryToMicromapEXT" (vkCopyMemoryToMicromapEXT'
-                                                              (deviceHandle (device))
-                                                              (deferredOperation)
-                                                              pInfo)
-  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
-  pure $ (r)
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdWriteMicromapsPropertiesEXT
-  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Ptr MicromapEXT -> QueryType -> QueryPool -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Ptr MicromapEXT -> QueryType -> QueryPool -> Word32 -> IO ()
-
--- | vkCmdWriteMicromapsPropertiesEXT - Write micromap result parameters to
--- query results.
---
--- = Description
---
--- Accesses to any of the micromaps listed in @pMicromaps@ /must/ be
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies synchronized>
--- with the
--- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT'
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages pipeline stage>
--- and an
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-access-types access type>
--- of 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_MICROMAP_READ_BIT_EXT'.
---
--- -   If @queryType@ is
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_MICROMAP_SERIALIZATION_SIZE_EXT',
---     then the value written out is the number of bytes required by a
---     serialized micromap.
---
--- -   If @queryType@ is
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_MICROMAP_COMPACTED_SIZE_EXT',
---     then the value written out is the number of bytes required by a
---     compacted micromap.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdWriteMicromapsPropertiesEXT-queryPool-07525# @queryPool@
---     /must/ have been created with a @queryType@ matching @queryType@
---
--- -   #VUID-vkCmdWriteMicromapsPropertiesEXT-queryPool-07526# The queries
---     identified by @queryPool@ and @firstQuery@ /must/ be /unavailable/
---
--- -   #VUID-vkCmdWriteMicromapsPropertiesEXT-buffer-07527# The @buffer@
---     used to create each micromap in @pMicrmaps@ /must/ be bound to
---     device memory
---
--- -   #VUID-vkCmdWriteMicromapsPropertiesEXT-query-07528# The sum of
---     @query@ plus @micromapCount@ /must/ be less than or equal to the
---     number of queries in @queryPool@
---
--- -   #VUID-vkCmdWriteMicromapsPropertiesEXT-pMicromaps-07501# All
---     micromaps in @pMicromaps@ /must/ have been constructed prior to the
---     execution of this command
---
--- -   #VUID-vkCmdWriteMicromapsPropertiesEXT-pMicromaps-07502# All
---     micromaps in @pMicromaps@ /must/ have been constructed with
---     'BUILD_MICROMAP_ALLOW_COMPACTION_BIT_EXT' if @queryType@ is
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_MICROMAP_COMPACTED_SIZE_EXT'
---
--- -   #VUID-vkCmdWriteMicromapsPropertiesEXT-queryType-07503# @queryType@
---     /must/ be
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_MICROMAP_COMPACTED_SIZE_EXT'
---     or
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_MICROMAP_SERIALIZATION_SIZE_EXT'
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdWriteMicromapsPropertiesEXT-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdWriteMicromapsPropertiesEXT-pMicromaps-parameter#
---     @pMicromaps@ /must/ be a valid pointer to an array of
---     @micromapCount@ valid 'Vulkan.Extensions.Handles.MicromapEXT'
---     handles
---
--- -   #VUID-vkCmdWriteMicromapsPropertiesEXT-queryType-parameter#
---     @queryType@ /must/ be a valid
---     'Vulkan.Core10.Enums.QueryType.QueryType' value
---
--- -   #VUID-vkCmdWriteMicromapsPropertiesEXT-queryPool-parameter#
---     @queryPool@ /must/ be a valid 'Vulkan.Core10.Handles.QueryPool'
---     handle
---
--- -   #VUID-vkCmdWriteMicromapsPropertiesEXT-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-vkCmdWriteMicromapsPropertiesEXT-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support compute operations
---
--- -   #VUID-vkCmdWriteMicromapsPropertiesEXT-renderpass# This command
---     /must/ only be called outside of a render pass instance
---
--- -   #VUID-vkCmdWriteMicromapsPropertiesEXT-videocoding# This command
---     /must/ only be called outside of a video coding scope
---
--- -   #VUID-vkCmdWriteMicromapsPropertiesEXT-micromapCount-arraylength#
---     @micromapCount@ /must/ be greater than @0@
---
--- -   #VUID-vkCmdWriteMicromapsPropertiesEXT-commonparent# Each of
---     @commandBuffer@, @queryPool@, and the elements of @pMicromaps@
---     /must/ have been created, allocated, or retrieved from the same
---     'Vulkan.Core10.Handles.Device'
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
--- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | Compute                                                                                                               | Action                                                                                                                                 |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_opacity_micromap VK_EXT_opacity_micromap>,
--- 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Extensions.Handles.MicromapEXT',
--- 'Vulkan.Core10.Handles.QueryPool',
--- 'Vulkan.Core10.Enums.QueryType.QueryType'
-cmdWriteMicromapsPropertiesEXT :: forall io
-                                . (MonadIO io)
-                               => -- | @commandBuffer@ is the command buffer into which the command will be
-                                  -- recorded.
-                                  CommandBuffer
-                               -> -- | @pMicromaps@ is a pointer to an array of existing previously built
-                                  -- micromaps.
-                                  ("micromaps" ::: Vector MicromapEXT)
-                               -> -- | @queryType@ is a 'Vulkan.Core10.Enums.QueryType.QueryType' value
-                                  -- specifying the type of queries managed by the pool.
-                                  QueryType
-                               -> -- | @queryPool@ is the query pool that will manage the results of the query.
-                                  QueryPool
-                               -> -- | @firstQuery@ is the first query index within the query pool that will
-                                  -- contain the @micromapCount@ number of results.
-                                  ("firstQuery" ::: Word32)
-                               -> io ()
-cmdWriteMicromapsPropertiesEXT commandBuffer
-                                 micromaps
-                                 queryType
-                                 queryPool
-                                 firstQuery = liftIO . evalContT $ do
-  let vkCmdWriteMicromapsPropertiesEXTPtr = pVkCmdWriteMicromapsPropertiesEXT (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCmdWriteMicromapsPropertiesEXTPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdWriteMicromapsPropertiesEXT is null" Nothing Nothing
-  let vkCmdWriteMicromapsPropertiesEXT' = mkVkCmdWriteMicromapsPropertiesEXT vkCmdWriteMicromapsPropertiesEXTPtr
-  pPMicromaps <- ContT $ allocaBytes @MicromapEXT ((Data.Vector.length (micromaps)) * 8)
-  lift $ Data.Vector.imapM_ (\i e -> poke (pPMicromaps `plusPtr` (8 * (i)) :: Ptr MicromapEXT) (e)) (micromaps)
-  lift $ traceAroundEvent "vkCmdWriteMicromapsPropertiesEXT" (vkCmdWriteMicromapsPropertiesEXT'
-                                                                (commandBufferHandle (commandBuffer))
-                                                                ((fromIntegral (Data.Vector.length $ (micromaps)) :: Word32))
-                                                                (pPMicromaps)
-                                                                (queryType)
-                                                                (queryPool)
-                                                                (firstQuery))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkWriteMicromapsPropertiesEXT
-  :: FunPtr (Ptr Device_T -> Word32 -> Ptr MicromapEXT -> QueryType -> CSize -> Ptr () -> CSize -> IO Result) -> Ptr Device_T -> Word32 -> Ptr MicromapEXT -> QueryType -> CSize -> Ptr () -> CSize -> IO Result
-
--- | vkWriteMicromapsPropertiesEXT - Query micromap meta-data on the host
---
--- = Description
---
--- This command fulfills the same task as 'cmdWriteMicromapsPropertiesEXT'
--- but is executed by the host.
---
--- == Valid Usage
---
--- -   #VUID-vkWriteMicromapsPropertiesEXT-pMicromaps-07501# All micromaps
---     in @pMicromaps@ /must/ have been constructed prior to the execution
---     of this command
---
--- -   #VUID-vkWriteMicromapsPropertiesEXT-pMicromaps-07502# All micromaps
---     in @pMicromaps@ /must/ have been constructed with
---     'BUILD_MICROMAP_ALLOW_COMPACTION_BIT_EXT' if @queryType@ is
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_MICROMAP_COMPACTED_SIZE_EXT'
---
--- -   #VUID-vkWriteMicromapsPropertiesEXT-queryType-07503# @queryType@
---     /must/ be
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_MICROMAP_COMPACTED_SIZE_EXT'
---     or
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_MICROMAP_SERIALIZATION_SIZE_EXT'
---
--- -   #VUID-vkWriteMicromapsPropertiesEXT-queryType-10071# If @queryType@
---     is
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_MICROMAP_SERIALIZATION_SIZE_EXT'
---     or
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_MICROMAP_COMPACTED_SIZE_EXT'
---     then @stride@ /must/ be a multiple of the size of
---     'Vulkan.Core10.FundamentalTypes.DeviceSize'
---
--- -   #VUID-vkWriteMicromapsPropertiesEXT-queryType-10072# If @queryType@
---     is
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_MICROMAP_SERIALIZATION_SIZE_EXT'
---     or
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_MICROMAP_COMPACTED_SIZE_EXT'
---     then @pData@ /must/ point to a
---     'Vulkan.Core10.FundamentalTypes.DeviceSize'
---
--- -   #VUID-vkWriteMicromapsPropertiesEXT-dataSize-07576# @dataSize@
---     /must/ be greater than or equal to @micromapCount@*@stride@
---
--- -   #VUID-vkWriteMicromapsPropertiesEXT-buffer-07577# The @buffer@ used
---     to create each micromap in @pMicromaps@ /must/ be bound to
---     host-visible device memory
---
--- -   #VUID-vkWriteMicromapsPropertiesEXT-micromapHostCommands-07578# The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-micromapHostCommands ::micromapHostCommands>
---     feature /must/ be enabled
---
--- -   #VUID-vkWriteMicromapsPropertiesEXT-buffer-07579# The @buffer@ used
---     to create each micromap in @pMicromaps@ /must/ be bound to memory
---     that was not allocated with multiple instances
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkWriteMicromapsPropertiesEXT-device-parameter# @device@
---     /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
---
--- -   #VUID-vkWriteMicromapsPropertiesEXT-pMicromaps-parameter#
---     @pMicromaps@ /must/ be a valid pointer to an array of
---     @micromapCount@ valid 'Vulkan.Extensions.Handles.MicromapEXT'
---     handles
---
--- -   #VUID-vkWriteMicromapsPropertiesEXT-queryType-parameter# @queryType@
---     /must/ be a valid 'Vulkan.Core10.Enums.QueryType.QueryType' value
---
--- -   #VUID-vkWriteMicromapsPropertiesEXT-pData-parameter# @pData@ /must/
---     be a valid pointer to an array of @dataSize@ bytes
---
--- -   #VUID-vkWriteMicromapsPropertiesEXT-micromapCount-arraylength#
---     @micromapCount@ /must/ be greater than @0@
---
--- -   #VUID-vkWriteMicromapsPropertiesEXT-dataSize-arraylength# @dataSize@
---     /must/ be greater than @0@
---
--- -   #VUID-vkWriteMicromapsPropertiesEXT-pMicromaps-parent# Each element
---     of @pMicromaps@ /must/ have been created, allocated, or retrieved
---     from @device@
---
--- == Return Codes
---
--- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
---
---     -   'Vulkan.Core10.Enums.Result.SUCCESS'
---
--- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
---
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
---
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_opacity_micromap VK_EXT_opacity_micromap>,
--- 'Vulkan.Core10.Handles.Device', 'Vulkan.Extensions.Handles.MicromapEXT',
--- 'Vulkan.Core10.Enums.QueryType.QueryType'
-writeMicromapsPropertiesEXT :: forall io
-                             . (MonadIO io)
-                            => -- | @device@ is the device which owns the micromaps in @pMicromaps@.
-                               Device
-                            -> -- | @pMicromaps@ is a pointer to an array of existing previously built
-                               -- micromaps.
-                               ("micromaps" ::: Vector MicromapEXT)
-                            -> -- | @queryType@ is a 'Vulkan.Core10.Enums.QueryType.QueryType' value
-                               -- specifying the property to be queried.
-                               QueryType
-                            -> -- | @dataSize@ is the size in bytes of the buffer pointed to by @pData@.
-                               ("dataSize" ::: Word64)
-                            -> -- | @pData@ is a pointer to an application-allocated buffer where the
-                               -- results will be written.
-                               ("data" ::: Ptr ())
-                            -> -- | @stride@ is the stride in bytes between results for individual queries
-                               -- within @pData@.
-                               ("stride" ::: Word64)
-                            -> io ()
-writeMicromapsPropertiesEXT device
-                              micromaps
-                              queryType
-                              dataSize
-                              data'
-                              stride = liftIO . evalContT $ do
-  let vkWriteMicromapsPropertiesEXTPtr = pVkWriteMicromapsPropertiesEXT (case device of Device{deviceCmds} -> deviceCmds)
-  lift $ unless (vkWriteMicromapsPropertiesEXTPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkWriteMicromapsPropertiesEXT is null" Nothing Nothing
-  let vkWriteMicromapsPropertiesEXT' = mkVkWriteMicromapsPropertiesEXT vkWriteMicromapsPropertiesEXTPtr
-  pPMicromaps <- ContT $ allocaBytes @MicromapEXT ((Data.Vector.length (micromaps)) * 8)
-  lift $ Data.Vector.imapM_ (\i e -> poke (pPMicromaps `plusPtr` (8 * (i)) :: Ptr MicromapEXT) (e)) (micromaps)
-  r <- lift $ traceAroundEvent "vkWriteMicromapsPropertiesEXT" (vkWriteMicromapsPropertiesEXT'
-                                                                  (deviceHandle (device))
-                                                                  ((fromIntegral (Data.Vector.length $ (micromaps)) :: Word32))
-                                                                  (pPMicromaps)
-                                                                  (queryType)
-                                                                  (CSize (dataSize))
-                                                                  (data')
-                                                                  (CSize (stride)))
-  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkGetDeviceMicromapCompatibilityEXT
-  :: FunPtr (Ptr Device_T -> Ptr MicromapVersionInfoEXT -> Ptr AccelerationStructureCompatibilityKHR -> IO ()) -> Ptr Device_T -> Ptr MicromapVersionInfoEXT -> Ptr AccelerationStructureCompatibilityKHR -> IO ()
-
--- | vkGetDeviceMicromapCompatibilityEXT - Check if a serialized micromap is
--- compatible with the current device
---
--- == Valid Usage
---
--- -   #VUID-vkGetDeviceMicromapCompatibilityEXT-micromap-07551# The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-micromap micromap>
---     feature /must/ be enabled
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkGetDeviceMicromapCompatibilityEXT-device-parameter# @device@
---     /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
---
--- -   #VUID-vkGetDeviceMicromapCompatibilityEXT-pVersionInfo-parameter#
---     @pVersionInfo@ /must/ be a valid pointer to a valid
---     'MicromapVersionInfoEXT' structure
---
--- -   #VUID-vkGetDeviceMicromapCompatibilityEXT-pCompatibility-parameter#
---     @pCompatibility@ /must/ be a valid pointer to a
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureCompatibilityKHR'
---     value
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_opacity_micromap VK_EXT_opacity_micromap>,
--- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureCompatibilityKHR',
--- 'Vulkan.Core10.Handles.Device', 'MicromapVersionInfoEXT'
-getDeviceMicromapCompatibilityEXT :: forall io
-                                   . (MonadIO io)
-                                  => -- | @device@ is the device to check the version against.
-                                     Device
-                                  -> -- | @pVersionInfo@ is a pointer to a 'MicromapVersionInfoEXT' structure
-                                     -- specifying version information to check against the device.
-                                     MicromapVersionInfoEXT
-                                  -> io (AccelerationStructureCompatibilityKHR)
-getDeviceMicromapCompatibilityEXT device versionInfo = liftIO . evalContT $ do
-  let vkGetDeviceMicromapCompatibilityEXTPtr = pVkGetDeviceMicromapCompatibilityEXT (case device of Device{deviceCmds} -> deviceCmds)
-  lift $ unless (vkGetDeviceMicromapCompatibilityEXTPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetDeviceMicromapCompatibilityEXT is null" Nothing Nothing
-  let vkGetDeviceMicromapCompatibilityEXT' = mkVkGetDeviceMicromapCompatibilityEXT vkGetDeviceMicromapCompatibilityEXTPtr
-  pVersionInfo <- ContT $ withCStruct (versionInfo)
-  pPCompatibility <- ContT $ bracket (callocBytes @AccelerationStructureCompatibilityKHR 4) free
-  lift $ traceAroundEvent "vkGetDeviceMicromapCompatibilityEXT" (vkGetDeviceMicromapCompatibilityEXT'
-                                                                   (deviceHandle (device))
-                                                                   pVersionInfo
-                                                                   (pPCompatibility))
-  pCompatibility <- lift $ peek @AccelerationStructureCompatibilityKHR pPCompatibility
-  pure $ (pCompatibility)
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkGetMicromapBuildSizesEXT
-  :: FunPtr (Ptr Device_T -> AccelerationStructureBuildTypeKHR -> Ptr MicromapBuildInfoEXT -> Ptr MicromapBuildSizesInfoEXT -> IO ()) -> Ptr Device_T -> AccelerationStructureBuildTypeKHR -> Ptr MicromapBuildInfoEXT -> Ptr MicromapBuildSizesInfoEXT -> IO ()
-
--- | vkGetMicromapBuildSizesEXT - Retrieve the required size for a micromap
---
--- = Description
---
--- The @dstMicromap@ and @mode@ members of @pBuildInfo@ are ignored. Any
--- 'Vulkan.Extensions.VK_KHR_acceleration_structure.DeviceOrHostAddressKHR'
--- members of @pBuildInfo@ are ignored by this command.
---
--- A micromap created with the @micromapSize@ returned by this command
--- supports any build with a 'MicromapBuildInfoEXT' structure subject to
--- the following properties:
---
--- -   The build command is a host build command, and @buildType@ is
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR'
---     or
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR'
---
--- -   The build command is a device build command, and @buildType@ is
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR'
---     or
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR'
---
--- -   For 'MicromapBuildInfoEXT':
---
---     -   Its @type@, and @flags@ members are equal to @pBuildInfo->type@
---         and @pBuildInfo->flags@, respectively.
---
---     -   The sum of usage information in either @pUsageCounts@ or
---         @ppUsageCounts@ is equal to the sum of usage information in
---         either @pBuildInfo->pUsageCounts@ or
---         @pBuildInfo->ppUsageCounts@.
---
--- Similarly, the @buildScratchSize@ value will support any build command
--- specifying the 'BUILD_MICROMAP_MODE_BUILD_EXT' @mode@ under the above
--- conditions.
---
--- == Valid Usage
---
--- -   #VUID-vkGetMicromapBuildSizesEXT-dstMicromap-09180#
---     'MicromapBuildInfoEXT'::@dstMicromap@ /must/ have been created from
---     @device@
---
--- -   #VUID-vkGetMicromapBuildSizesEXT-micromap-07439# The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-micromap micromap>
---     feature /must/ be enabled
---
--- -   #VUID-vkGetMicromapBuildSizesEXT-device-07440# If @device@ was
---     created with multiple physical devices, then the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-bufferDeviceAddressMultiDevice bufferDeviceAddressMultiDevice>
---     feature /must/ be enabled
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkGetMicromapBuildSizesEXT-device-parameter# @device@ /must/
---     be a valid 'Vulkan.Core10.Handles.Device' handle
---
--- -   #VUID-vkGetMicromapBuildSizesEXT-buildType-parameter# @buildType@
---     /must/ be a valid
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureBuildTypeKHR'
---     value
---
--- -   #VUID-vkGetMicromapBuildSizesEXT-pBuildInfo-parameter# @pBuildInfo@
---     /must/ be a valid pointer to a valid 'MicromapBuildInfoEXT'
---     structure
---
--- -   #VUID-vkGetMicromapBuildSizesEXT-pSizeInfo-parameter# @pSizeInfo@
---     /must/ be a valid pointer to a 'MicromapBuildSizesInfoEXT' structure
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_opacity_micromap VK_EXT_opacity_micromap>,
--- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureBuildTypeKHR',
--- 'Vulkan.Core10.Handles.Device', 'MicromapBuildInfoEXT',
--- 'MicromapBuildSizesInfoEXT'
-getMicromapBuildSizesEXT :: forall io
-                          . (MonadIO io)
-                         => -- | @device@ is the logical device that will be used for creating the
-                            -- micromap.
-                            Device
-                         -> -- | @buildType@ defines whether host or device operations (or both) are
-                            -- being queried for.
-                            AccelerationStructureBuildTypeKHR
-                         -> -- | @pBuildInfo@ is a pointer to a 'MicromapBuildInfoEXT' structure
-                            -- describing parameters of a build operation.
-                            MicromapBuildInfoEXT
-                         -> io (("sizeInfo" ::: MicromapBuildSizesInfoEXT))
-getMicromapBuildSizesEXT device buildType buildInfo = liftIO . evalContT $ do
-  let vkGetMicromapBuildSizesEXTPtr = pVkGetMicromapBuildSizesEXT (case device of Device{deviceCmds} -> deviceCmds)
-  lift $ unless (vkGetMicromapBuildSizesEXTPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetMicromapBuildSizesEXT is null" Nothing Nothing
-  let vkGetMicromapBuildSizesEXT' = mkVkGetMicromapBuildSizesEXT vkGetMicromapBuildSizesEXTPtr
-  pBuildInfo <- ContT $ withCStruct (buildInfo)
-  pPSizeInfo <- ContT (withZeroCStruct @MicromapBuildSizesInfoEXT)
-  lift $ traceAroundEvent "vkGetMicromapBuildSizesEXT" (vkGetMicromapBuildSizesEXT'
-                                                          (deviceHandle (device))
-                                                          (buildType)
-                                                          pBuildInfo
-                                                          (pPSizeInfo))
-  pSizeInfo <- lift $ peekCStruct @MicromapBuildSizesInfoEXT pPSizeInfo
-  pure $ (pSizeInfo)
-
-
--- | VkMicromapBuildInfoEXT - Structure specifying the data used to build a
--- micromap
---
--- = Description
---
--- Only one of @pUsageCounts@ or @ppUsageCounts@ /can/ be a valid pointer,
--- the other /must/ be @NULL@. The elements of the non-@NULL@ array
--- describe the total counts used to build each micromap. Each element
--- contains a @count@ which is the number of micromap triangles of that
--- @format@ and @subdivisionLevel@ contained in the micromap. Multiple
--- elements with the same @format@ and @subdivisionLevel@ are allowed and
--- the total count for that @format@ and @subdivisionLevel@ is the sum of
--- the @count@ for each element.
---
--- Each micromap triangle refers to one element in @triangleArray@ which
--- contains the @format@ and @subdivisionLevel@ for that particular
--- triangle as well as a @dataOffset@ in bytes which is the location
--- relative to @data@ where that triangle’s micromap data begins. The data
--- at @triangleArray@ is laid out as a 4 byte unsigned integer for the
--- @dataOffset@ followed by a 2 byte unsigned integer for the subdivision
--- level then a 2 byte unsigned integer for the format. In practice,
--- compilers compile 'MicromapTriangleEXT' to match this pattern.
---
--- For opacity micromaps, the data at @data@ is packed as either one bit
--- per element for 'OPACITY_MICROMAP_FORMAT_2_STATE_EXT' or two bits per
--- element for 'OPACITY_MICROMAP_FORMAT_4_STATE_EXT' and is packed from LSB
--- to MSB in each byte. The data at each index in those bytes is
--- interpreted as discussed in
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#ray-opacity-micromap Ray Opacity Micromap>.
---
--- For displacement micromaps, the data at @data@ is interpreted as
--- discussed in
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#displacement-micromap-encoding Displacement Micromap Encoding>.
---
--- == Valid Usage
---
--- -   #VUID-VkMicromapBuildInfoEXT-pUsageCounts-07516# Only one of
---     @pUsageCounts@ or @ppUsageCounts@ /can/ be a valid pointer, the
---     other /must/ be @NULL@
---
--- -   #VUID-VkMicromapBuildInfoEXT-type-07517# If @type@ is
---     'MICROMAP_TYPE_OPACITY_MICROMAP_EXT' the @format@ member of
---     'MicromapUsageEXT' /must/ be a valid value from
---     'OpacityMicromapFormatEXT'
---
--- -   #VUID-VkMicromapBuildInfoEXT-type-07518# If @type@ is
---     'MICROMAP_TYPE_OPACITY_MICROMAP_EXT' the @format@ member of
---     'MicromapTriangleEXT' /must/ be a valid value from
---     'OpacityMicromapFormatEXT'
---
--- -   #VUID-VkMicromapBuildInfoEXT-type-08704# If @type@ is
---     'MICROMAP_TYPE_DISPLACEMENT_MICROMAP_NV' the @format@ member of
---     'MicromapUsageEXT' /must/ be a valid value from
---     'Vulkan.Extensions.VK_NV_displacement_micromap.DisplacementMicromapFormatNV'
---
--- -   #VUID-VkMicromapBuildInfoEXT-type-08705# If @type@ is
---     'MICROMAP_TYPE_DISPLACEMENT_MICROMAP_NV' the @format@ member of
---     'MicromapTriangleEXT' /must/ be a valid value from
---     'Vulkan.Extensions.VK_NV_displacement_micromap.DisplacementMicromapFormatNV'
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkMicromapBuildInfoEXT-sType-sType# @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MICROMAP_BUILD_INFO_EXT'
---
--- -   #VUID-VkMicromapBuildInfoEXT-pNext-pNext# @pNext@ /must/ be @NULL@
---
--- -   #VUID-VkMicromapBuildInfoEXT-type-parameter# @type@ /must/ be a
---     valid 'MicromapTypeEXT' value
---
--- -   #VUID-VkMicromapBuildInfoEXT-flags-parameter# @flags@ /must/ be a
---     valid combination of 'BuildMicromapFlagBitsEXT' values
---
--- -   #VUID-VkMicromapBuildInfoEXT-pUsageCounts-parameter# If
---     @usageCountsCount@ is not @0@, and @pUsageCounts@ is not @NULL@,
---     @pUsageCounts@ /must/ be a valid pointer to an array of
---     @usageCountsCount@ 'MicromapUsageEXT' structures
---
--- -   #VUID-VkMicromapBuildInfoEXT-ppUsageCounts-parameter# If
---     @usageCountsCount@ is not @0@, and @ppUsageCounts@ is not @NULL@,
---     @ppUsageCounts@ /must/ be a valid pointer to an array of
---     @usageCountsCount@ valid pointers to 'MicromapUsageEXT' structures
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_opacity_micromap VK_EXT_opacity_micromap>,
--- 'BuildMicromapFlagsEXT', 'BuildMicromapModeEXT',
--- 'Vulkan.Extensions.VK_KHR_acceleration_structure.DeviceOrHostAddressConstKHR',
--- 'Vulkan.Extensions.VK_KHR_acceleration_structure.DeviceOrHostAddressKHR',
--- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
--- 'Vulkan.Extensions.Handles.MicromapEXT', 'MicromapTypeEXT',
--- 'MicromapUsageEXT', 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'buildMicromapsEXT', 'cmdBuildMicromapsEXT', 'getMicromapBuildSizesEXT'
-data MicromapBuildInfoEXT = MicromapBuildInfoEXT
-  { -- | @type@ is a 'MicromapTypeEXT' value specifying the type of micromap
-    -- being built.
-    type' :: MicromapTypeEXT
-  , -- | @flags@ is a bitmask of 'BuildMicromapFlagBitsEXT' specifying additional
-    -- parameters of the micromap.
-    flags :: BuildMicromapFlagsEXT
-  , -- | @mode@ is a 'BuildMicromapModeEXT' value specifying the type of
-    -- operation to perform.
-    mode :: BuildMicromapModeEXT
-  , -- | @dstMicromap@ is a pointer to the target micromap for the build.
-    dstMicromap :: MicromapEXT
-  , -- | @pUsageCounts@ is a pointer to an array of 'MicromapUsageEXT'
-    -- structures.
-    usageCounts :: Vector MicromapUsageEXT
-  , -- | @data@ is the device or host address to memory which contains the data
-    -- for the micromap.
-    data' :: DeviceOrHostAddressConstKHR
-  , -- | @scratchData@ is the device or host address to memory that will be used
-    -- as scratch memory for the build.
-    scratchData :: DeviceOrHostAddressKHR
-  , -- | @triangleArray@ is the device or host address to memory containing the
-    -- 'MicromapTriangleEXT' data
-    triangleArray :: DeviceOrHostAddressConstKHR
-  , -- | @triangleArrayStride@ is the stride in bytes between each element of
-    -- @triangleArray@
-    triangleArrayStride :: DeviceSize
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (MicromapBuildInfoEXT)
-#endif
-deriving instance Show MicromapBuildInfoEXT
-
-instance ToCStruct MicromapBuildInfoEXT where
-  withCStruct x f = allocaBytes 96 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p MicromapBuildInfoEXT{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MICROMAP_BUILD_INFO_EXT)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    lift $ poke ((p `plusPtr` 16 :: Ptr MicromapTypeEXT)) (type')
-    lift $ poke ((p `plusPtr` 20 :: Ptr BuildMicromapFlagsEXT)) (flags)
-    lift $ poke ((p `plusPtr` 24 :: Ptr BuildMicromapModeEXT)) (mode)
-    lift $ poke ((p `plusPtr` 32 :: Ptr MicromapEXT)) (dstMicromap)
-    lift $ poke ((p `plusPtr` 40 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (usageCounts)) :: Word32))
-    pPUsageCounts' <- ContT $ allocaBytes @MicromapUsageEXT ((Data.Vector.length (usageCounts)) * 12)
-    lift $ Data.Vector.imapM_ (\i e -> poke (pPUsageCounts' `plusPtr` (12 * (i)) :: Ptr MicromapUsageEXT) (e)) (usageCounts)
-    lift $ poke ((p `plusPtr` 48 :: Ptr (Ptr MicromapUsageEXT))) (pPUsageCounts')
-    lift $ poke ((p `plusPtr` 56 :: Ptr (Ptr (Ptr MicromapUsageEXT)))) (nullPtr)
-    ContT $ pokeCStruct ((p `plusPtr` 64 :: Ptr DeviceOrHostAddressConstKHR)) (data') . ($ ())
-    ContT $ pokeCStruct ((p `plusPtr` 72 :: Ptr DeviceOrHostAddressKHR)) (scratchData) . ($ ())
-    ContT $ pokeCStruct ((p `plusPtr` 80 :: Ptr DeviceOrHostAddressConstKHR)) (triangleArray) . ($ ())
-    lift $ poke ((p `plusPtr` 88 :: Ptr DeviceSize)) (triangleArrayStride)
-    lift $ f
-  cStructSize = 96
-  cStructAlignment = 8
-  pokeZeroCStruct p f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MICROMAP_BUILD_INFO_EXT)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    lift $ poke ((p `plusPtr` 16 :: Ptr MicromapTypeEXT)) (zero)
-    lift $ poke ((p `plusPtr` 24 :: Ptr BuildMicromapModeEXT)) (zero)
-    lift $ poke ((p `plusPtr` 56 :: Ptr (Ptr (Ptr MicromapUsageEXT)))) (nullPtr)
-    ContT $ pokeCStruct ((p `plusPtr` 64 :: Ptr DeviceOrHostAddressConstKHR)) (zero) . ($ ())
-    ContT $ pokeCStruct ((p `plusPtr` 72 :: Ptr DeviceOrHostAddressKHR)) (zero) . ($ ())
-    ContT $ pokeCStruct ((p `plusPtr` 80 :: Ptr DeviceOrHostAddressConstKHR)) (zero) . ($ ())
-    lift $ poke ((p `plusPtr` 88 :: Ptr DeviceSize)) (zero)
-    lift $ f
-
-instance Zero MicromapBuildInfoEXT where
-  zero = MicromapBuildInfoEXT
-           zero
-           zero
-           zero
-           zero
-           mempty
-           zero
-           zero
-           zero
-           zero
-
-
--- | VkMicromapCreateInfoEXT - Structure specifying the parameters of a newly
--- created micromap object
---
--- = Description
---
--- If @deviceAddress@ is zero, no specific address is requested.
---
--- If @deviceAddress@ is not zero, @deviceAddress@ /must/ be an address
--- retrieved from an identically created micromap on the same
--- implementation. The micromap /must/ also be placed on an identically
--- created @buffer@ and at the same @offset@.
---
--- Applications /should/ avoid creating micromaps with application-provided
--- addresses and implementation-provided addresses in the same process, to
--- reduce the likelihood of
--- 'Vulkan.Extensions.VK_KHR_buffer_device_address.ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR'
--- errors.
---
--- The expected usage for this is that a trace capture\/replay tool will
--- add the
--- 'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT'
--- flag to all buffers that use
--- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT',
--- and will add
--- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT'
--- to all buffers used as storage for a micromap where @deviceAddress@ is
--- not zero. This also means that the tool will need to add
--- 'Vulkan.Core11.Enums.MemoryAllocateFlagBits.MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT'
--- to memory allocations to allow the flag to be set where the application
--- may not have otherwise required it. During capture the tool will save
--- the queried opaque device addresses in the trace. During replay, the
--- buffers will be created specifying the original address so any address
--- values stored in the trace data will remain valid.
---
--- Implementations are expected to separate such buffers in the GPU address
--- space so normal allocations will avoid using these addresses.
--- Apps\/tools should avoid mixing app-provided and implementation-provided
--- addresses for buffers created with
--- 'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT',
--- to avoid address space allocation conflicts.
---
--- If the micromap will be the target of a build operation, the required
--- size for a micromap /can/ be queried with 'getMicromapBuildSizesEXT'.
---
--- == Valid Usage
---
--- -   #VUID-VkMicromapCreateInfoEXT-deviceAddress-07433# If
---     @deviceAddress@ is not zero, @createFlags@ /must/ include
---     'MICROMAP_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT'
---
--- -   #VUID-VkMicromapCreateInfoEXT-createFlags-07434# If @createFlags@
---     includes 'MICROMAP_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT',
---     'PhysicalDeviceOpacityMicromapFeaturesEXT'::@micromapCaptureReplay@
---     /must/ be 'Vulkan.Core10.FundamentalTypes.TRUE'
---
--- -   #VUID-VkMicromapCreateInfoEXT-buffer-07435# @buffer@ /must/ have
---     been created with a @usage@ value containing
---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_MICROMAP_STORAGE_BIT_EXT'
---
--- -   #VUID-VkMicromapCreateInfoEXT-buffer-07436# @buffer@ /must/ not have
---     been created with
---     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_SPARSE_RESIDENCY_BIT'
---
--- -   #VUID-VkMicromapCreateInfoEXT-offset-07437# The sum of @offset@ and
---     @size@ /must/ be less than the size of @buffer@
---
--- -   #VUID-VkMicromapCreateInfoEXT-offset-07438# @offset@ /must/ be a
---     multiple of @256@ bytes
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkMicromapCreateInfoEXT-sType-sType# @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MICROMAP_CREATE_INFO_EXT'
---
--- -   #VUID-VkMicromapCreateInfoEXT-pNext-pNext# @pNext@ /must/ be @NULL@
---
--- -   #VUID-VkMicromapCreateInfoEXT-createFlags-parameter# @createFlags@
---     /must/ be a valid combination of 'MicromapCreateFlagBitsEXT' values
---
--- -   #VUID-VkMicromapCreateInfoEXT-buffer-parameter# @buffer@ /must/ be a
---     valid 'Vulkan.Core10.Handles.Buffer' handle
---
--- -   #VUID-VkMicromapCreateInfoEXT-type-parameter# @type@ /must/ be a
---     valid 'MicromapTypeEXT' value
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_opacity_micromap VK_EXT_opacity_micromap>,
--- 'Vulkan.Core10.Handles.Buffer',
--- 'Vulkan.Core10.FundamentalTypes.DeviceAddress',
--- 'Vulkan.Core10.FundamentalTypes.DeviceSize', 'MicromapCreateFlagsEXT',
--- 'MicromapTypeEXT', 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'createMicromapEXT'
-data MicromapCreateInfoEXT = MicromapCreateInfoEXT
-  { -- | @createFlags@ is a bitmask of 'MicromapCreateFlagBitsEXT' specifying
-    -- additional creation parameters of the micromap.
-    createFlags :: MicromapCreateFlagsEXT
-  , -- | @buffer@ is the buffer on which the micromap will be stored.
-    buffer :: Buffer
-  , -- | @offset@ is an offset in bytes from the base address of the buffer at
-    -- which the micromap will be stored, and /must/ be a multiple of @256@.
-    offset :: DeviceSize
-  , -- | @size@ is the size required for the micromap.
-    size :: DeviceSize
-  , -- | @type@ is a 'MicromapTypeEXT' value specifying the type of micromap that
-    -- will be created.
-    type' :: MicromapTypeEXT
-  , -- | @deviceAddress@ is the device address requested for the micromap if the
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-micromapCaptureReplay micromapCaptureReplay>
-    -- feature is being used.
-    deviceAddress :: DeviceAddress
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (MicromapCreateInfoEXT)
-#endif
-deriving instance Show MicromapCreateInfoEXT
-
-instance ToCStruct MicromapCreateInfoEXT where
-  withCStruct x f = allocaBytes 64 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p MicromapCreateInfoEXT{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MICROMAP_CREATE_INFO_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr MicromapCreateFlagsEXT)) (createFlags)
-    poke ((p `plusPtr` 24 :: Ptr Buffer)) (buffer)
-    poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (offset)
-    poke ((p `plusPtr` 40 :: Ptr DeviceSize)) (size)
-    poke ((p `plusPtr` 48 :: Ptr MicromapTypeEXT)) (type')
-    poke ((p `plusPtr` 56 :: Ptr DeviceAddress)) (deviceAddress)
-    f
-  cStructSize = 64
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MICROMAP_CREATE_INFO_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 24 :: Ptr Buffer)) (zero)
-    poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (zero)
-    poke ((p `plusPtr` 40 :: Ptr DeviceSize)) (zero)
-    poke ((p `plusPtr` 48 :: Ptr MicromapTypeEXT)) (zero)
-    f
-
-instance FromCStruct MicromapCreateInfoEXT where
-  peekCStruct p = do
-    createFlags <- peek @MicromapCreateFlagsEXT ((p `plusPtr` 16 :: Ptr MicromapCreateFlagsEXT))
-    buffer <- peek @Buffer ((p `plusPtr` 24 :: Ptr Buffer))
-    offset <- peek @DeviceSize ((p `plusPtr` 32 :: Ptr DeviceSize))
-    size <- peek @DeviceSize ((p `plusPtr` 40 :: Ptr DeviceSize))
-    type' <- peek @MicromapTypeEXT ((p `plusPtr` 48 :: Ptr MicromapTypeEXT))
-    deviceAddress <- peek @DeviceAddress ((p `plusPtr` 56 :: Ptr DeviceAddress))
-    pure $ MicromapCreateInfoEXT
-             createFlags buffer offset size type' deviceAddress
-
-instance Storable MicromapCreateInfoEXT where
-  sizeOf ~_ = 64
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero MicromapCreateInfoEXT where
-  zero = MicromapCreateInfoEXT
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-
-
--- | VkMicromapVersionInfoEXT - Micromap version information
---
--- = Description
---
--- @pVersionData@ is a /pointer/ to an array of
--- 2×'Vulkan.Core10.APIConstants.UUID_SIZE' @uint8_t@ values instead of two
--- 'Vulkan.Core10.APIConstants.UUID_SIZE' arrays as the expected use case
--- for this member is to be pointed at the header of a previously
--- serialized micromap (via 'cmdCopyMicromapToMemoryEXT' or
--- 'copyMicromapToMemoryEXT') that is loaded in memory. Using arrays would
--- necessitate extra memory copies of the UUIDs.
---
--- == Valid Usage (Implicit)
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_opacity_micromap VK_EXT_opacity_micromap>,
--- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'getDeviceMicromapCompatibilityEXT'
-data MicromapVersionInfoEXT = MicromapVersionInfoEXT
-  { -- | @pVersionData@ is a pointer to the version header of a micromap as
-    -- defined in 'cmdCopyMicromapToMemoryEXT'
-    --
-    -- #VUID-VkMicromapVersionInfoEXT-pVersionData-parameter# @pVersionData@
-    -- /must/ be a valid pointer to an array of
-    -- \(2 \times \mathtt{VK\_UUID\_SIZE}\) @uint8_t@ values
-    versionData :: ByteString }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (MicromapVersionInfoEXT)
-#endif
-deriving instance Show MicromapVersionInfoEXT
-
-instance ToCStruct MicromapVersionInfoEXT where
-  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p MicromapVersionInfoEXT{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MICROMAP_VERSION_INFO_EXT)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    lift $ unless (Data.ByteString.length (versionData) == 2 * UUID_SIZE) $
-      throwIO $ IOError Nothing InvalidArgument "" "VkMicromapVersionInfoEXT::versionData must be 2*VK_UUID_SIZE bytes" Nothing Nothing
-    versionData' <- fmap (castPtr @CChar @Word8) . ContT $ unsafeUseAsCString (versionData)
-    lift $ poke ((p `plusPtr` 16 :: Ptr (Ptr Word8))) versionData'
-    lift $ f
-  cStructSize = 24
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MICROMAP_VERSION_INFO_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    f
-
-instance FromCStruct MicromapVersionInfoEXT where
-  peekCStruct p = do
-    versionData <- peek @(Ptr Word8) ((p `plusPtr` 16 :: Ptr (Ptr Word8)))
-    versionData' <- packCStringLen ( castPtr @Word8 @CChar versionData
-                                   , 2 * UUID_SIZE )
-    pure $ MicromapVersionInfoEXT
-             versionData'
-
-instance Zero MicromapVersionInfoEXT where
-  zero = MicromapVersionInfoEXT
-           mempty
-
-
--- | VkCopyMicromapInfoEXT - Parameters for copying a micromap
---
--- == Valid Usage
---
--- -   #VUID-VkCopyMicromapInfoEXT-mode-07531# @mode@ /must/ be
---     'COPY_MICROMAP_MODE_COMPACT_EXT' or 'COPY_MICROMAP_MODE_CLONE_EXT'
---
--- -   #VUID-VkCopyMicromapInfoEXT-src-07532# The source acceleration
---     structure @src@ /must/ have been constructed prior to the execution
---     of this command
---
--- -   #VUID-VkCopyMicromapInfoEXT-mode-07533# If @mode@ is
---     'COPY_MICROMAP_MODE_COMPACT_EXT', @src@ /must/ have been constructed
---     with 'BUILD_MICROMAP_ALLOW_COMPACTION_BIT_EXT' in the build
---
--- -   #VUID-VkCopyMicromapInfoEXT-buffer-07534# The @buffer@ used to
---     create @src@ /must/ be bound to device memory
---
--- -   #VUID-VkCopyMicromapInfoEXT-buffer-07535# The @buffer@ used to
---     create @dst@ /must/ be bound to device memory
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkCopyMicromapInfoEXT-sType-sType# @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_MICROMAP_INFO_EXT'
---
--- -   #VUID-VkCopyMicromapInfoEXT-pNext-pNext# @pNext@ /must/ be @NULL@
---
--- -   #VUID-VkCopyMicromapInfoEXT-src-parameter# @src@ /must/ be a valid
---     'Vulkan.Extensions.Handles.MicromapEXT' handle
---
--- -   #VUID-VkCopyMicromapInfoEXT-dst-parameter# @dst@ /must/ be a valid
---     'Vulkan.Extensions.Handles.MicromapEXT' handle
---
--- -   #VUID-VkCopyMicromapInfoEXT-mode-parameter# @mode@ /must/ be a valid
---     'CopyMicromapModeEXT' value
---
--- -   #VUID-VkCopyMicromapInfoEXT-commonparent# Both of @dst@, and @src@
---     /must/ have been created, allocated, or retrieved from the same
---     'Vulkan.Core10.Handles.Device'
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_opacity_micromap VK_EXT_opacity_micromap>,
--- 'CopyMicromapModeEXT', 'Vulkan.Extensions.Handles.MicromapEXT',
--- 'Vulkan.Core10.Enums.StructureType.StructureType', 'cmdCopyMicromapEXT',
--- 'copyMicromapEXT'
-data CopyMicromapInfoEXT = CopyMicromapInfoEXT
-  { -- | @src@ is the source micromap for the copy.
-    src :: MicromapEXT
-  , -- | @dst@ is the target micromap for the copy.
-    dst :: MicromapEXT
-  , -- | @mode@ is a 'CopyMicromapModeEXT' value specifying additional operations
-    -- to perform during the copy.
-    mode :: CopyMicromapModeEXT
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (CopyMicromapInfoEXT)
-#endif
-deriving instance Show CopyMicromapInfoEXT
-
-instance ToCStruct CopyMicromapInfoEXT where
-  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p CopyMicromapInfoEXT{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_MICROMAP_INFO_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr MicromapEXT)) (src)
-    poke ((p `plusPtr` 24 :: Ptr MicromapEXT)) (dst)
-    poke ((p `plusPtr` 32 :: Ptr CopyMicromapModeEXT)) (mode)
-    f
-  cStructSize = 40
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_MICROMAP_INFO_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr MicromapEXT)) (zero)
-    poke ((p `plusPtr` 24 :: Ptr MicromapEXT)) (zero)
-    poke ((p `plusPtr` 32 :: Ptr CopyMicromapModeEXT)) (zero)
-    f
-
-instance FromCStruct CopyMicromapInfoEXT where
-  peekCStruct p = do
-    src <- peek @MicromapEXT ((p `plusPtr` 16 :: Ptr MicromapEXT))
-    dst <- peek @MicromapEXT ((p `plusPtr` 24 :: Ptr MicromapEXT))
-    mode <- peek @CopyMicromapModeEXT ((p `plusPtr` 32 :: Ptr CopyMicromapModeEXT))
-    pure $ CopyMicromapInfoEXT
-             src dst mode
-
-instance Storable CopyMicromapInfoEXT where
-  sizeOf ~_ = 40
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero CopyMicromapInfoEXT where
-  zero = CopyMicromapInfoEXT
-           zero
-           zero
-           zero
-
-
--- | VkCopyMicromapToMemoryInfoEXT - Parameters for serializing a micromap
---
--- == Valid Usage
---
--- -   #VUID-VkCopyMicromapToMemoryInfoEXT-src-07540# The source micromap
---     @src@ /must/ have been constructed prior to the execution of this
---     command
---
--- -   #VUID-VkCopyMicromapToMemoryInfoEXT-dst-07541# The memory pointed to
---     by @dst@ /must/ be at least as large as the serialization size of
---     @src@, as reported by 'writeMicromapsPropertiesEXT' or
---     'cmdWriteMicromapsPropertiesEXT' with a query type of
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_MICROMAP_SERIALIZATION_SIZE_EXT'
---
--- -   #VUID-VkCopyMicromapToMemoryInfoEXT-mode-07542# @mode@ /must/ be
---     'COPY_MICROMAP_MODE_SERIALIZE_EXT'
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkCopyMicromapToMemoryInfoEXT-sType-sType# @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_MICROMAP_TO_MEMORY_INFO_EXT'
---
--- -   #VUID-VkCopyMicromapToMemoryInfoEXT-pNext-pNext# @pNext@ /must/ be
---     @NULL@
---
--- -   #VUID-VkCopyMicromapToMemoryInfoEXT-src-parameter# @src@ /must/ be a
---     valid 'Vulkan.Extensions.Handles.MicromapEXT' handle
---
--- -   #VUID-VkCopyMicromapToMemoryInfoEXT-mode-parameter# @mode@ /must/ be
---     a valid 'CopyMicromapModeEXT' value
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_opacity_micromap VK_EXT_opacity_micromap>,
--- 'CopyMicromapModeEXT',
--- 'Vulkan.Extensions.VK_KHR_acceleration_structure.DeviceOrHostAddressKHR',
--- 'Vulkan.Extensions.Handles.MicromapEXT',
--- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'cmdCopyMicromapToMemoryEXT', 'copyMicromapToMemoryEXT'
-data CopyMicromapToMemoryInfoEXT = CopyMicromapToMemoryInfoEXT
-  { -- | @src@ is the source micromap for the copy
-    src :: MicromapEXT
-  , -- | @dst@ is the device or host address to memory which is the target for
-    -- the copy
-    dst :: DeviceOrHostAddressKHR
-  , -- | @mode@ is a 'CopyMicromapModeEXT' value specifying additional operations
-    -- to perform during the copy.
-    mode :: CopyMicromapModeEXT
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (CopyMicromapToMemoryInfoEXT)
-#endif
-deriving instance Show CopyMicromapToMemoryInfoEXT
-
-instance ToCStruct CopyMicromapToMemoryInfoEXT where
-  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p CopyMicromapToMemoryInfoEXT{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_MICROMAP_TO_MEMORY_INFO_EXT)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    lift $ poke ((p `plusPtr` 16 :: Ptr MicromapEXT)) (src)
-    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr DeviceOrHostAddressKHR)) (dst) . ($ ())
-    lift $ poke ((p `plusPtr` 32 :: Ptr CopyMicromapModeEXT)) (mode)
-    lift $ f
-  cStructSize = 40
-  cStructAlignment = 8
-  pokeZeroCStruct p f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_MICROMAP_TO_MEMORY_INFO_EXT)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    lift $ poke ((p `plusPtr` 16 :: Ptr MicromapEXT)) (zero)
-    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr DeviceOrHostAddressKHR)) (zero) . ($ ())
-    lift $ poke ((p `plusPtr` 32 :: Ptr CopyMicromapModeEXT)) (zero)
-    lift $ f
-
-instance Zero CopyMicromapToMemoryInfoEXT where
-  zero = CopyMicromapToMemoryInfoEXT
-           zero
-           zero
-           zero
-
-
--- | VkCopyMemoryToMicromapInfoEXT - Parameters for deserializing a micromap
---
--- == Valid Usage
---
--- -   #VUID-VkCopyMemoryToMicromapInfoEXT-src-07547# The source memory
---     pointed to by @src@ /must/ contain data previously serialized using
---     'cmdCopyMicromapToMemoryEXT'
---
--- -   #VUID-VkCopyMemoryToMicromapInfoEXT-mode-07548# @mode@ /must/ be
---     'COPY_MICROMAP_MODE_DESERIALIZE_EXT'
---
--- -   #VUID-VkCopyMemoryToMicromapInfoEXT-src-07549# The data in @src@
---     /must/ have a format compatible with the destination physical device
---     as returned by 'getDeviceMicromapCompatibilityEXT'
---
--- -   #VUID-VkCopyMemoryToMicromapInfoEXT-dst-07550# @dst@ /must/ have
---     been created with a @size@ greater than or equal to that used to
---     serialize the data in @src@
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkCopyMemoryToMicromapInfoEXT-sType-sType# @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_MEMORY_TO_MICROMAP_INFO_EXT'
---
--- -   #VUID-VkCopyMemoryToMicromapInfoEXT-pNext-pNext# @pNext@ /must/ be
---     @NULL@
---
--- -   #VUID-VkCopyMemoryToMicromapInfoEXT-dst-parameter# @dst@ /must/ be a
---     valid 'Vulkan.Extensions.Handles.MicromapEXT' handle
---
--- -   #VUID-VkCopyMemoryToMicromapInfoEXT-mode-parameter# @mode@ /must/ be
---     a valid 'CopyMicromapModeEXT' value
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_opacity_micromap VK_EXT_opacity_micromap>,
--- 'CopyMicromapModeEXT',
--- 'Vulkan.Extensions.VK_KHR_acceleration_structure.DeviceOrHostAddressConstKHR',
--- 'Vulkan.Extensions.Handles.MicromapEXT',
--- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'cmdCopyMemoryToMicromapEXT', 'copyMemoryToMicromapEXT'
-data CopyMemoryToMicromapInfoEXT = CopyMemoryToMicromapInfoEXT
-  { -- | @src@ is the device or host address to memory containing the source data
-    -- for the copy.
-    src :: DeviceOrHostAddressConstKHR
-  , -- | @dst@ is the target micromap for the copy.
-    dst :: MicromapEXT
-  , -- | @mode@ is a 'CopyMicromapModeEXT' value specifying additional operations
-    -- to perform during the copy.
-    mode :: CopyMicromapModeEXT
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (CopyMemoryToMicromapInfoEXT)
-#endif
-deriving instance Show CopyMemoryToMicromapInfoEXT
-
-instance ToCStruct CopyMemoryToMicromapInfoEXT where
-  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p CopyMemoryToMicromapInfoEXT{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_MEMORY_TO_MICROMAP_INFO_EXT)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr DeviceOrHostAddressConstKHR)) (src) . ($ ())
-    lift $ poke ((p `plusPtr` 24 :: Ptr MicromapEXT)) (dst)
-    lift $ poke ((p `plusPtr` 32 :: Ptr CopyMicromapModeEXT)) (mode)
-    lift $ f
-  cStructSize = 40
-  cStructAlignment = 8
-  pokeZeroCStruct p f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_MEMORY_TO_MICROMAP_INFO_EXT)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr DeviceOrHostAddressConstKHR)) (zero) . ($ ())
-    lift $ poke ((p `plusPtr` 24 :: Ptr MicromapEXT)) (zero)
-    lift $ poke ((p `plusPtr` 32 :: Ptr CopyMicromapModeEXT)) (zero)
-    lift $ f
-
-instance Zero CopyMemoryToMicromapInfoEXT where
-  zero = CopyMemoryToMicromapInfoEXT
-           zero
-           zero
-           zero
-
-
--- | VkMicromapBuildSizesInfoEXT - Structure specifying build sizes for a
--- micromap
---
--- == Valid Usage (Implicit)
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_opacity_micromap VK_EXT_opacity_micromap>,
--- 'Vulkan.Core10.FundamentalTypes.Bool32',
--- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
--- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'getMicromapBuildSizesEXT'
-data MicromapBuildSizesInfoEXT = MicromapBuildSizesInfoEXT
-  { -- | @micromapSize@ is the size in bytes required in a
-    -- 'Vulkan.Extensions.Handles.MicromapEXT' for a build or update operation.
-    micromapSize :: DeviceSize
-  , -- | @buildScratchSize@ is the size in bytes required in a scratch buffer for
-    -- a build operation.
-    buildScratchSize :: DeviceSize
-  , -- | @discardable@ indicates whether or not the micromap object may be
-    -- destroyed after an acceleration structure build or update. A false value
-    -- means that acceleration structures built with this micromap /may/
-    -- contain references to the data contained therein, and the application
-    -- /must/ not destroy the micromap until ray traversal has concluded. A
-    -- true value means that the information in the micromap will be copied by
-    -- value into the acceleration structure, and the micromap /may/ be
-    -- destroyed after the acceleration structure build concludes.
-    discardable :: Bool
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (MicromapBuildSizesInfoEXT)
-#endif
-deriving instance Show MicromapBuildSizesInfoEXT
-
-instance ToCStruct MicromapBuildSizesInfoEXT where
-  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p MicromapBuildSizesInfoEXT{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MICROMAP_BUILD_SIZES_INFO_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (micromapSize)
-    poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (buildScratchSize)
-    poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (discardable))
-    f
-  cStructSize = 40
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MICROMAP_BUILD_SIZES_INFO_EXT)
-    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 Bool32)) (boolToBool32 (zero))
-    f
-
-instance FromCStruct MicromapBuildSizesInfoEXT where
-  peekCStruct p = do
-    micromapSize <- peek @DeviceSize ((p `plusPtr` 16 :: Ptr DeviceSize))
-    buildScratchSize <- peek @DeviceSize ((p `plusPtr` 24 :: Ptr DeviceSize))
-    discardable <- peek @Bool32 ((p `plusPtr` 32 :: Ptr Bool32))
-    pure $ MicromapBuildSizesInfoEXT
-             micromapSize buildScratchSize (bool32ToBool discardable)
-
-instance Storable MicromapBuildSizesInfoEXT where
-  sizeOf ~_ = 40
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero MicromapBuildSizesInfoEXT where
-  zero = MicromapBuildSizesInfoEXT
-           zero
-           zero
-           zero
-
-
--- | VkMicromapUsageEXT - Structure specifying the usage information used to
--- build a micromap
---
--- == Valid Usage
---
--- -   #VUID-VkMicromapUsageEXT-format-07519# If the 'MicromapTypeEXT' of
---     the micromap is 'MICROMAP_TYPE_OPACITY_MICROMAP_EXT' then @format@
---     /must/ be 'OPACITY_MICROMAP_FORMAT_2_STATE_EXT' or
---     'OPACITY_MICROMAP_FORMAT_4_STATE_EXT'
---
--- -   #VUID-VkMicromapUsageEXT-format-07520# If the 'MicromapTypeEXT' of
---     the micromap is 'MICROMAP_TYPE_OPACITY_MICROMAP_EXT' and @format@ is
---     'OPACITY_MICROMAP_FORMAT_2_STATE_EXT' then @subdivisionLevel@ /must/
---     be less than or equal to
---     'PhysicalDeviceOpacityMicromapPropertiesEXT'::@maxOpacity2StateSubdivisionLevel@
---
--- -   #VUID-VkMicromapUsageEXT-format-07521# If the 'MicromapTypeEXT' of
---     the micromap is 'MICROMAP_TYPE_OPACITY_MICROMAP_EXT' and @format@ is
---     'OPACITY_MICROMAP_FORMAT_4_STATE_EXT' then @subdivisionLevel@ /must/
---     be less than or equal to
---     'PhysicalDeviceOpacityMicromapPropertiesEXT'::@maxOpacity4StateSubdivisionLevel@
---
--- -   #VUID-VkMicromapUsageEXT-format-08706# If the 'MicromapTypeEXT' of
---     the micromap is 'MICROMAP_TYPE_DISPLACEMENT_MICROMAP_NV' then
---     @format@ /must/ be
---     'Vulkan.Extensions.VK_NV_displacement_micromap.DISPLACEMENT_MICROMAP_FORMAT_64_TRIANGLES_64_BYTES_NV',
---     'Vulkan.Extensions.VK_NV_displacement_micromap.DISPLACEMENT_MICROMAP_FORMAT_256_TRIANGLES_128_BYTES_NV'
---     or
---     'Vulkan.Extensions.VK_NV_displacement_micromap.DISPLACEMENT_MICROMAP_FORMAT_1024_TRIANGLES_128_BYTES_NV'
---
--- -   #VUID-VkMicromapUsageEXT-subdivisionLevel-08707# If the
---     'MicromapTypeEXT' of the micromap is
---     'MICROMAP_TYPE_DISPLACEMENT_MICROMAP_NV' then @subdivisionLevel@
---     /must/ be less than or equal to
---     'Vulkan.Extensions.VK_NV_displacement_micromap.PhysicalDeviceDisplacementMicromapPropertiesNV'::@maxDisplacementMicromapSubdivisionLevel@
---
--- The @format@ is interpreted based on the @type@ of the micromap using
--- it.
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_opacity_micromap VK_EXT_opacity_micromap>,
--- 'Vulkan.Extensions.VK_NV_displacement_micromap.AccelerationStructureTrianglesDisplacementMicromapNV',
--- 'AccelerationStructureTrianglesOpacityMicromapEXT',
--- 'MicromapBuildInfoEXT'
-data MicromapUsageEXT = MicromapUsageEXT
-  { -- | @count@ is the number of triangles in the usage format defined by the
-    -- @subdivisionLevel@ and @format@ below in the micromap
-    count :: Word32
-  , -- | @subdivisionLevel@ is the subdivision level of this usage format
-    subdivisionLevel :: Word32
-  , -- | @format@ is the format of this usage format
-    format :: Word32
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (MicromapUsageEXT)
-#endif
-deriving instance Show MicromapUsageEXT
-
-instance ToCStruct MicromapUsageEXT where
-  withCStruct x f = allocaBytes 12 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p MicromapUsageEXT{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr Word32)) (count)
-    poke ((p `plusPtr` 4 :: Ptr Word32)) (subdivisionLevel)
-    poke ((p `plusPtr` 8 :: Ptr Word32)) (format)
-    f
-  cStructSize = 12
-  cStructAlignment = 4
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)
-    f
-
-instance FromCStruct MicromapUsageEXT where
-  peekCStruct p = do
-    count <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))
-    subdivisionLevel <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))
-    format <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))
-    pure $ MicromapUsageEXT
-             count subdivisionLevel format
-
-instance Storable MicromapUsageEXT where
-  sizeOf ~_ = 12
-  alignment ~_ = 4
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero MicromapUsageEXT where
-  zero = MicromapUsageEXT
-           zero
-           zero
-           zero
-
-
--- | VkMicromapTriangleEXT - Structure specifying the micromap format and
--- data for a triangle
---
--- == Valid Usage
---
--- -   #VUID-VkMicromapTriangleEXT-format-07522# If the 'MicromapTypeEXT'
---     of the micromap is 'MICROMAP_TYPE_OPACITY_MICROMAP_EXT' then
---     @format@ /must/ be 'OPACITY_MICROMAP_FORMAT_2_STATE_EXT' or
---     'OPACITY_MICROMAP_FORMAT_4_STATE_EXT'
---
--- -   #VUID-VkMicromapTriangleEXT-format-07523# If the 'MicromapTypeEXT'
---     of the micromap is 'MICROMAP_TYPE_OPACITY_MICROMAP_EXT' and @format@
---     is 'OPACITY_MICROMAP_FORMAT_2_STATE_EXT' then @subdivisionLevel@
---     /must/ be less than or equal to
---     'PhysicalDeviceOpacityMicromapPropertiesEXT'::@maxOpacity2StateSubdivisionLevel@
---
--- -   #VUID-VkMicromapTriangleEXT-format-07524# If the 'MicromapTypeEXT'
---     of the micromap is 'MICROMAP_TYPE_OPACITY_MICROMAP_EXT' and @format@
---     is 'OPACITY_MICROMAP_FORMAT_4_STATE_EXT' then @subdivisionLevel@
---     /must/ be less than or equal to
---     'PhysicalDeviceOpacityMicromapPropertiesEXT'::@maxOpacity4StateSubdivisionLevel@
---
--- -   #VUID-VkMicromapTriangleEXT-format-08708# If the 'MicromapTypeEXT'
---     of the micromap is 'MICROMAP_TYPE_DISPLACEMENT_MICROMAP_NV' then
---     @format@ /must/ be
---     'Vulkan.Extensions.VK_NV_displacement_micromap.DISPLACEMENT_MICROMAP_FORMAT_64_TRIANGLES_64_BYTES_NV',
---     'Vulkan.Extensions.VK_NV_displacement_micromap.DISPLACEMENT_MICROMAP_FORMAT_256_TRIANGLES_128_BYTES_NV'
---     or
---     'Vulkan.Extensions.VK_NV_displacement_micromap.DISPLACEMENT_MICROMAP_FORMAT_1024_TRIANGLES_128_BYTES_NV'
---
--- -   #VUID-VkMicromapTriangleEXT-subdivisionLevel-08709# If the
---     'MicromapTypeEXT' of the micromap is
---     'MICROMAP_TYPE_DISPLACEMENT_MICROMAP_NV' then @subdivisionLevel@
---     /must/ be less than or equal to
---     'Vulkan.Extensions.VK_NV_displacement_micromap.PhysicalDeviceDisplacementMicromapPropertiesNV'::@maxDisplacementMicromapSubdivisionLevel@
---
--- The @format@ is interpreted based on the @type@ of the micromap using
--- it.
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_opacity_micromap VK_EXT_opacity_micromap>
-data MicromapTriangleEXT = MicromapTriangleEXT
-  { -- | @dataOffset@ is the offset in bytes of the start of the data for this
-    -- triangle. This is a byte aligned value.
-    dataOffset :: Word32
-  , -- | @subdivisionLevel@ is the subdivision level of this triangle
-    subdivisionLevel :: Word16
-  , -- | @format@ is the format of this triangle
-    format :: Word16
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (MicromapTriangleEXT)
-#endif
-deriving instance Show MicromapTriangleEXT
-
-instance ToCStruct MicromapTriangleEXT where
-  withCStruct x f = allocaBytes 8 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p MicromapTriangleEXT{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr Word32)) (dataOffset)
-    poke ((p `plusPtr` 4 :: Ptr Word16)) (subdivisionLevel)
-    poke ((p `plusPtr` 6 :: Ptr Word16)) (format)
-    f
-  cStructSize = 8
-  cStructAlignment = 4
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 4 :: Ptr Word16)) (zero)
-    poke ((p `plusPtr` 6 :: Ptr Word16)) (zero)
-    f
-
-instance FromCStruct MicromapTriangleEXT where
-  peekCStruct p = do
-    dataOffset <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))
-    subdivisionLevel <- peek @Word16 ((p `plusPtr` 4 :: Ptr Word16))
-    format <- peek @Word16 ((p `plusPtr` 6 :: Ptr Word16))
-    pure $ MicromapTriangleEXT
-             dataOffset subdivisionLevel format
-
-instance Storable MicromapTriangleEXT where
-  sizeOf ~_ = 8
-  alignment ~_ = 4
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero MicromapTriangleEXT where
-  zero = MicromapTriangleEXT
-           zero
-           zero
-           zero
-
-
--- | VkPhysicalDeviceOpacityMicromapFeaturesEXT - Structure describing the
--- ray tracing opacity micromap features that can be supported by an
--- implementation
---
--- = Members
---
--- This structure describes the following feature:
---
--- = Description
---
--- If the 'PhysicalDeviceOpacityMicromapFeaturesEXT' 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. 'PhysicalDeviceOpacityMicromapFeaturesEXT' /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_opacity_micromap VK_EXT_opacity_micromap>,
--- 'Vulkan.Core10.FundamentalTypes.Bool32',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PhysicalDeviceOpacityMicromapFeaturesEXT = PhysicalDeviceOpacityMicromapFeaturesEXT
-  { -- | #features-micromap# @micromap@ indicates whether the implementation
-    -- supports the micromap array feature.
-    micromap :: Bool
-  , -- | #features-micromapCaptureReplay# @micromapCaptureReplay@ indicates
-    -- whether the implementation supports capture and replay of addresses for
-    -- micromap arrays.
-    micromapCaptureReplay :: Bool
-  , -- | #features-micromapHostCommands# @micromapHostCommands@ indicates whether
-    -- the implementation supports host side micromap array commands.
-    micromapHostCommands :: Bool
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PhysicalDeviceOpacityMicromapFeaturesEXT)
-#endif
-deriving instance Show PhysicalDeviceOpacityMicromapFeaturesEXT
-
-instance ToCStruct PhysicalDeviceOpacityMicromapFeaturesEXT where
-  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PhysicalDeviceOpacityMicromapFeaturesEXT{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (micromap))
-    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (micromapCaptureReplay))
-    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (micromapHostCommands))
-    f
-  cStructSize = 32
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
-    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))
-    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (zero))
-    f
-
-instance FromCStruct PhysicalDeviceOpacityMicromapFeaturesEXT where
-  peekCStruct p = do
-    micromap <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
-    micromapCaptureReplay <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
-    micromapHostCommands <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))
-    pure $ PhysicalDeviceOpacityMicromapFeaturesEXT
-             (bool32ToBool micromap)
-             (bool32ToBool micromapCaptureReplay)
-             (bool32ToBool micromapHostCommands)
-
-instance Storable PhysicalDeviceOpacityMicromapFeaturesEXT where
-  sizeOf ~_ = 32
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero PhysicalDeviceOpacityMicromapFeaturesEXT where
-  zero = PhysicalDeviceOpacityMicromapFeaturesEXT
-           zero
-           zero
-           zero
-
-
--- | VkPhysicalDeviceOpacityMicromapPropertiesEXT - Structure describing the
--- opacity micromap properties of a physical device
---
--- = Description
---
--- If the 'PhysicalDeviceOpacityMicromapPropertiesEXT' 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_opacity_micromap VK_EXT_opacity_micromap>,
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PhysicalDeviceOpacityMicromapPropertiesEXT = PhysicalDeviceOpacityMicromapPropertiesEXT
-  { -- | @maxOpacity2StateSubdivisionLevel@ is the maximum allowed
-    -- @subdivisionLevel@ when @format@ is
-    -- 'OPACITY_MICROMAP_FORMAT_2_STATE_EXT'
-    maxOpacity2StateSubdivisionLevel :: Word32
-  , -- | @maxOpacity4StateSubdivisionLevel@ is the maximum allowed
-    -- @subdivisionLevel@ when @format@ is
-    -- 'OPACITY_MICROMAP_FORMAT_4_STATE_EXT'
-    maxOpacity4StateSubdivisionLevel :: Word32
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PhysicalDeviceOpacityMicromapPropertiesEXT)
-#endif
-deriving instance Show PhysicalDeviceOpacityMicromapPropertiesEXT
-
-instance ToCStruct PhysicalDeviceOpacityMicromapPropertiesEXT where
-  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PhysicalDeviceOpacityMicromapPropertiesEXT{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_PROPERTIES_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Word32)) (maxOpacity2StateSubdivisionLevel)
-    poke ((p `plusPtr` 20 :: Ptr Word32)) (maxOpacity4StateSubdivisionLevel)
-    f
-  cStructSize = 24
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_PROPERTIES_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)
-    f
-
-instance FromCStruct PhysicalDeviceOpacityMicromapPropertiesEXT where
-  peekCStruct p = do
-    maxOpacity2StateSubdivisionLevel <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
-    maxOpacity4StateSubdivisionLevel <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
-    pure $ PhysicalDeviceOpacityMicromapPropertiesEXT
-             maxOpacity2StateSubdivisionLevel maxOpacity4StateSubdivisionLevel
-
-instance Storable PhysicalDeviceOpacityMicromapPropertiesEXT where
-  sizeOf ~_ = 24
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero PhysicalDeviceOpacityMicromapPropertiesEXT where
-  zero = PhysicalDeviceOpacityMicromapPropertiesEXT
-           zero
-           zero
-
-
--- | VkAccelerationStructureTrianglesOpacityMicromapEXT - Structure
--- specifying an opacity micromap in a bottom-level acceleration structure
---
--- = Description
---
--- If 'AccelerationStructureTrianglesOpacityMicromapEXT' is included in the
--- @pNext@ chain of a
--- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureGeometryTrianglesDataKHR'
--- structure, that geometry will reference that micromap.
---
--- For each triangle in the geometry, the acceleration structure build
--- fetches an index from @indexBuffer@ using @indexType@ and @indexStride@.
--- If that value is the unsigned cast of one of the values from
--- 'OpacityMicromapSpecialIndexEXT' then that triangle behaves as described
--- for that special value in
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#ray-opacity-micromap Ray Opacity Micromap>.
--- Otherwise that triangle uses the opacity micromap information from
--- @micromap@ at that index plus @baseTriangle@.
---
--- Only one of @pUsageCounts@ or @ppUsageCounts@ /can/ be a valid pointer,
--- the other /must/ be @NULL@. The elements of the non-@NULL@ array
--- describe the total count used to build this geometry. For a given
--- @format@ and @subdivisionLevel@ the number of triangles in this geometry
--- matching those values after indirection and special index handling
--- /must/ be equal to the sum of matching @count@ provided.
---
--- If @micromap@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', then every
--- value read from @indexBuffer@ /must/ be one of the values in
--- 'OpacityMicromapSpecialIndexEXT'.
---
--- == Valid Usage
---
--- -   #VUID-VkAccelerationStructureTrianglesOpacityMicromapEXT-pUsageCounts-07335#
---     Only one of @pUsageCounts@ or @ppUsageCounts@ /can/ be a valid
---     pointer, the other /must/ be @NULL@
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkAccelerationStructureTrianglesOpacityMicromapEXT-sType-sType#
---     @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT'
---
--- -   #VUID-VkAccelerationStructureTrianglesOpacityMicromapEXT-indexType-parameter#
---     @indexType@ /must/ be a valid
---     'Vulkan.Core10.Enums.IndexType.IndexType' value
---
--- -   #VUID-VkAccelerationStructureTrianglesOpacityMicromapEXT-pUsageCounts-parameter#
---     If @usageCountsCount@ is not @0@, and @pUsageCounts@ is not @NULL@,
---     @pUsageCounts@ /must/ be a valid pointer to an array of
---     @usageCountsCount@ 'MicromapUsageEXT' structures
---
--- -   #VUID-VkAccelerationStructureTrianglesOpacityMicromapEXT-ppUsageCounts-parameter#
---     If @usageCountsCount@ is not @0@, and @ppUsageCounts@ is not @NULL@,
---     @ppUsageCounts@ /must/ be a valid pointer to an array of
---     @usageCountsCount@ valid pointers to 'MicromapUsageEXT' structures
---
--- -   #VUID-VkAccelerationStructureTrianglesOpacityMicromapEXT-micromap-parameter#
---     If @micromap@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
---     @micromap@ /must/ be a valid 'Vulkan.Extensions.Handles.MicromapEXT'
---     handle
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_opacity_micromap VK_EXT_opacity_micromap>,
--- 'Vulkan.Extensions.VK_KHR_acceleration_structure.DeviceOrHostAddressConstKHR',
--- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
--- 'Vulkan.Core10.Enums.IndexType.IndexType',
--- 'Vulkan.Extensions.Handles.MicromapEXT', 'MicromapUsageEXT',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data AccelerationStructureTrianglesOpacityMicromapEXT = AccelerationStructureTrianglesOpacityMicromapEXT
-  { -- | @indexType@ is the type of triangle indices used when indexing this
-    -- micromap
-    indexType :: IndexType
-  , -- | @indexBuffer@ is the address containing the triangle indices
-    indexBuffer :: DeviceOrHostAddressConstKHR
-  , -- | @indexStride@ is the byte stride between triangle indices
-    indexStride :: DeviceSize
-  , -- | @baseTriangle@ is the base value added to the non-negative triangle
-    -- indices
-    baseTriangle :: Word32
-  , -- | @pUsageCounts@ is a pointer to an array of 'MicromapUsageEXT'
-    -- structures.
-    usageCounts :: Vector MicromapUsageEXT
-  , -- | @micromap@ is the handle to the micromap object to include in this
-    -- geometry
-    micromap :: MicromapEXT
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (AccelerationStructureTrianglesOpacityMicromapEXT)
-#endif
-deriving instance Show AccelerationStructureTrianglesOpacityMicromapEXT
-
-instance ToCStruct AccelerationStructureTrianglesOpacityMicromapEXT where
-  withCStruct x f = allocaBytes 72 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p AccelerationStructureTrianglesOpacityMicromapEXT{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    lift $ poke ((p `plusPtr` 16 :: Ptr IndexType)) (indexType)
-    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr DeviceOrHostAddressConstKHR)) (indexBuffer) . ($ ())
-    lift $ poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (indexStride)
-    lift $ poke ((p `plusPtr` 40 :: Ptr Word32)) (baseTriangle)
-    lift $ poke ((p `plusPtr` 44 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (usageCounts)) :: Word32))
-    pPUsageCounts' <- ContT $ allocaBytes @MicromapUsageEXT ((Data.Vector.length (usageCounts)) * 12)
-    lift $ Data.Vector.imapM_ (\i e -> poke (pPUsageCounts' `plusPtr` (12 * (i)) :: Ptr MicromapUsageEXT) (e)) (usageCounts)
-    lift $ poke ((p `plusPtr` 48 :: Ptr (Ptr MicromapUsageEXT))) (pPUsageCounts')
-    lift $ poke ((p `plusPtr` 56 :: Ptr (Ptr (Ptr MicromapUsageEXT)))) (nullPtr)
-    lift $ poke ((p `plusPtr` 64 :: Ptr MicromapEXT)) (micromap)
-    lift $ f
-  cStructSize = 72
-  cStructAlignment = 8
-  pokeZeroCStruct p f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    lift $ poke ((p `plusPtr` 16 :: Ptr IndexType)) (zero)
-    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr DeviceOrHostAddressConstKHR)) (zero) . ($ ())
-    lift $ poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (zero)
-    lift $ poke ((p `plusPtr` 40 :: Ptr Word32)) (zero)
-    lift $ poke ((p `plusPtr` 56 :: Ptr (Ptr (Ptr MicromapUsageEXT)))) (nullPtr)
-    lift $ f
-
-instance Zero AccelerationStructureTrianglesOpacityMicromapEXT where
-  zero = AccelerationStructureTrianglesOpacityMicromapEXT
-           zero
-           zero
-           zero
-           zero
-           mempty
-           zero
-
-
--- | VkMicromapTypeEXT - Type of micromap
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_opacity_micromap VK_EXT_opacity_micromap>,
--- 'MicromapBuildInfoEXT', 'MicromapCreateInfoEXT'
-newtype MicromapTypeEXT = MicromapTypeEXT Int32
-  deriving newtype (Eq, Ord, Storable, Zero)
-
--- | 'MICROMAP_TYPE_OPACITY_MICROMAP_EXT' is a micromap containing data to
--- control the opacity of a triangle.
-pattern MICROMAP_TYPE_OPACITY_MICROMAP_EXT = MicromapTypeEXT 0
-
--- | 'MICROMAP_TYPE_DISPLACEMENT_MICROMAP_NV' is a micromap containing data
--- to control the displacement of subtriangles within a triangle.
-pattern MICROMAP_TYPE_DISPLACEMENT_MICROMAP_NV = MicromapTypeEXT 1000397000
-
-{-# COMPLETE
-  MICROMAP_TYPE_OPACITY_MICROMAP_EXT
-  , MICROMAP_TYPE_DISPLACEMENT_MICROMAP_NV ::
-    MicromapTypeEXT
-  #-}
-
-conNameMicromapTypeEXT :: String
-conNameMicromapTypeEXT = "MicromapTypeEXT"
-
-enumPrefixMicromapTypeEXT :: String
-enumPrefixMicromapTypeEXT = "MICROMAP_TYPE_"
-
-showTableMicromapTypeEXT :: [(MicromapTypeEXT, String)]
-showTableMicromapTypeEXT =
-  [
-    ( MICROMAP_TYPE_OPACITY_MICROMAP_EXT
-    , "OPACITY_MICROMAP_EXT"
-    )
-  ,
-    ( MICROMAP_TYPE_DISPLACEMENT_MICROMAP_NV
-    , "DISPLACEMENT_MICROMAP_NV"
-    )
-  ]
-
-instance Show MicromapTypeEXT where
-  showsPrec =
-    enumShowsPrec
-      enumPrefixMicromapTypeEXT
-      showTableMicromapTypeEXT
-      conNameMicromapTypeEXT
-      (\(MicromapTypeEXT x) -> x)
-      (showsPrec 11)
-
-instance Read MicromapTypeEXT where
-  readPrec =
-    enumReadPrec
-      enumPrefixMicromapTypeEXT
-      showTableMicromapTypeEXT
-      conNameMicromapTypeEXT
-      MicromapTypeEXT
-
-type BuildMicromapFlagsEXT = BuildMicromapFlagBitsEXT
-
--- | VkBuildMicromapFlagBitsEXT - Bitmask specifying additional parameters
--- for micromap builds
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_opacity_micromap VK_EXT_opacity_micromap>,
--- 'BuildMicromapFlagsEXT'
-newtype BuildMicromapFlagBitsEXT = BuildMicromapFlagBitsEXT Flags
-  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
-
--- | 'BUILD_MICROMAP_PREFER_FAST_TRACE_BIT_EXT' specifies that the given
--- micromap build /should/ prioritize trace performance over build time.
-pattern BUILD_MICROMAP_PREFER_FAST_TRACE_BIT_EXT = BuildMicromapFlagBitsEXT 0x00000001
-
--- | 'BUILD_MICROMAP_PREFER_FAST_BUILD_BIT_EXT' specifies that the given
--- micromap build /should/ prioritize build time over trace performance.
-pattern BUILD_MICROMAP_PREFER_FAST_BUILD_BIT_EXT = BuildMicromapFlagBitsEXT 0x00000002
-
--- No documentation found for Nested "VkBuildMicromapFlagBitsEXT" "VK_BUILD_MICROMAP_ALLOW_COMPACTION_BIT_EXT"
-pattern BUILD_MICROMAP_ALLOW_COMPACTION_BIT_EXT = BuildMicromapFlagBitsEXT 0x00000004
-
-conNameBuildMicromapFlagBitsEXT :: String
-conNameBuildMicromapFlagBitsEXT = "BuildMicromapFlagBitsEXT"
-
-enumPrefixBuildMicromapFlagBitsEXT :: String
-enumPrefixBuildMicromapFlagBitsEXT = "BUILD_MICROMAP_"
-
-showTableBuildMicromapFlagBitsEXT :: [(BuildMicromapFlagBitsEXT, String)]
-showTableBuildMicromapFlagBitsEXT =
-  [
-    ( BUILD_MICROMAP_PREFER_FAST_TRACE_BIT_EXT
-    , "PREFER_FAST_TRACE_BIT_EXT"
-    )
-  ,
-    ( BUILD_MICROMAP_PREFER_FAST_BUILD_BIT_EXT
-    , "PREFER_FAST_BUILD_BIT_EXT"
-    )
-  ,
-    ( BUILD_MICROMAP_ALLOW_COMPACTION_BIT_EXT
-    , "ALLOW_COMPACTION_BIT_EXT"
-    )
-  ]
-
-instance Show BuildMicromapFlagBitsEXT where
-  showsPrec =
-    enumShowsPrec
-      enumPrefixBuildMicromapFlagBitsEXT
-      showTableBuildMicromapFlagBitsEXT
-      conNameBuildMicromapFlagBitsEXT
-      (\(BuildMicromapFlagBitsEXT x) -> x)
-      (\x -> showString "0x" . showHex x)
-
-instance Read BuildMicromapFlagBitsEXT where
-  readPrec =
-    enumReadPrec
-      enumPrefixBuildMicromapFlagBitsEXT
-      showTableBuildMicromapFlagBitsEXT
-      conNameBuildMicromapFlagBitsEXT
-      BuildMicromapFlagBitsEXT
-
-type MicromapCreateFlagsEXT = MicromapCreateFlagBitsEXT
-
--- | VkMicromapCreateFlagBitsEXT - Bitmask specifying additional creation
--- parameters for micromap
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_opacity_micromap VK_EXT_opacity_micromap>,
--- 'MicromapCreateFlagsEXT'
-newtype MicromapCreateFlagBitsEXT = MicromapCreateFlagBitsEXT Flags
-  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
-
--- | 'MICROMAP_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT' specifies that
--- the micromap’s address /can/ be saved and reused on a subsequent run.
-pattern MICROMAP_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = MicromapCreateFlagBitsEXT 0x00000001
-
-conNameMicromapCreateFlagBitsEXT :: String
-conNameMicromapCreateFlagBitsEXT = "MicromapCreateFlagBitsEXT"
-
-enumPrefixMicromapCreateFlagBitsEXT :: String
-enumPrefixMicromapCreateFlagBitsEXT = "MICROMAP_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT"
-
-showTableMicromapCreateFlagBitsEXT :: [(MicromapCreateFlagBitsEXT, String)]
-showTableMicromapCreateFlagBitsEXT =
-  [
-    ( MICROMAP_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT
-    , ""
-    )
-  ]
-
-instance Show MicromapCreateFlagBitsEXT where
-  showsPrec =
-    enumShowsPrec
-      enumPrefixMicromapCreateFlagBitsEXT
-      showTableMicromapCreateFlagBitsEXT
-      conNameMicromapCreateFlagBitsEXT
-      (\(MicromapCreateFlagBitsEXT x) -> x)
-      (\x -> showString "0x" . showHex x)
-
-instance Read MicromapCreateFlagBitsEXT where
-  readPrec =
-    enumReadPrec
-      enumPrefixMicromapCreateFlagBitsEXT
-      showTableMicromapCreateFlagBitsEXT
-      conNameMicromapCreateFlagBitsEXT
-      MicromapCreateFlagBitsEXT
-
--- | VkCopyMicromapModeEXT - Micromap copy mode
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_opacity_micromap VK_EXT_opacity_micromap>,
--- 'CopyMemoryToMicromapInfoEXT', 'CopyMicromapInfoEXT',
--- 'CopyMicromapToMemoryInfoEXT'
-newtype CopyMicromapModeEXT = CopyMicromapModeEXT Int32
-  deriving newtype (Eq, Ord, Storable, Zero)
-
--- | 'COPY_MICROMAP_MODE_CLONE_EXT' creates a direct copy of the micromap
--- specified in @src@ into the one specified by @dst@. The @dst@ micromap
--- /must/ have been created with the same parameters as @src@.
-pattern COPY_MICROMAP_MODE_CLONE_EXT = CopyMicromapModeEXT 0
-
--- | 'COPY_MICROMAP_MODE_SERIALIZE_EXT' serializes the micromap to a
--- semi-opaque format which can be reloaded on a compatible implementation.
-pattern COPY_MICROMAP_MODE_SERIALIZE_EXT = CopyMicromapModeEXT 1
-
--- | 'COPY_MICROMAP_MODE_DESERIALIZE_EXT' deserializes the semi-opaque
--- serialization format in the buffer to the micromap.
-pattern COPY_MICROMAP_MODE_DESERIALIZE_EXT = CopyMicromapModeEXT 2
-
--- | 'COPY_MICROMAP_MODE_COMPACT_EXT' creates a more compact version of a
--- micromap @src@ into @dst@. The micromap @dst@ /must/ have been created
--- with a size at least as large as that returned by
--- 'cmdWriteMicromapsPropertiesEXT' after the build of the micromap
--- specified by @src@.
-pattern COPY_MICROMAP_MODE_COMPACT_EXT = CopyMicromapModeEXT 3
-
-{-# COMPLETE
-  COPY_MICROMAP_MODE_CLONE_EXT
-  , COPY_MICROMAP_MODE_SERIALIZE_EXT
-  , COPY_MICROMAP_MODE_DESERIALIZE_EXT
-  , COPY_MICROMAP_MODE_COMPACT_EXT ::
-    CopyMicromapModeEXT
-  #-}
-
-conNameCopyMicromapModeEXT :: String
-conNameCopyMicromapModeEXT = "CopyMicromapModeEXT"
-
-enumPrefixCopyMicromapModeEXT :: String
-enumPrefixCopyMicromapModeEXT = "COPY_MICROMAP_MODE_"
-
-showTableCopyMicromapModeEXT :: [(CopyMicromapModeEXT, String)]
-showTableCopyMicromapModeEXT =
-  [ (COPY_MICROMAP_MODE_CLONE_EXT, "CLONE_EXT")
-  ,
-    ( COPY_MICROMAP_MODE_SERIALIZE_EXT
-    , "SERIALIZE_EXT"
-    )
-  ,
-    ( COPY_MICROMAP_MODE_DESERIALIZE_EXT
-    , "DESERIALIZE_EXT"
-    )
-  ,
-    ( COPY_MICROMAP_MODE_COMPACT_EXT
-    , "COMPACT_EXT"
-    )
-  ]
-
-instance Show CopyMicromapModeEXT where
-  showsPrec =
-    enumShowsPrec
-      enumPrefixCopyMicromapModeEXT
-      showTableCopyMicromapModeEXT
-      conNameCopyMicromapModeEXT
-      (\(CopyMicromapModeEXT x) -> x)
-      (showsPrec 11)
-
-instance Read CopyMicromapModeEXT where
-  readPrec =
-    enumReadPrec
-      enumPrefixCopyMicromapModeEXT
-      showTableCopyMicromapModeEXT
-      conNameCopyMicromapModeEXT
-      CopyMicromapModeEXT
-
--- | VkBuildMicromapModeEXT - Enum specifying the type of build operation to
--- perform
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_opacity_micromap VK_EXT_opacity_micromap>,
--- 'MicromapBuildInfoEXT'
-newtype BuildMicromapModeEXT = BuildMicromapModeEXT Int32
-  deriving newtype (Eq, Ord, Storable, Zero)
-
--- | 'BUILD_MICROMAP_MODE_BUILD_EXT' specifies that the destination micromap
--- will be built using the specified data.
-pattern BUILD_MICROMAP_MODE_BUILD_EXT = BuildMicromapModeEXT 0
-
-{-# COMPLETE BUILD_MICROMAP_MODE_BUILD_EXT :: BuildMicromapModeEXT #-}
-
-conNameBuildMicromapModeEXT :: String
-conNameBuildMicromapModeEXT = "BuildMicromapModeEXT"
-
-enumPrefixBuildMicromapModeEXT :: String
-enumPrefixBuildMicromapModeEXT = "BUILD_MICROMAP_MODE_BUILD_EXT"
-
-showTableBuildMicromapModeEXT :: [(BuildMicromapModeEXT, String)]
-showTableBuildMicromapModeEXT = [(BUILD_MICROMAP_MODE_BUILD_EXT, "")]
-
-instance Show BuildMicromapModeEXT where
-  showsPrec =
-    enumShowsPrec
-      enumPrefixBuildMicromapModeEXT
-      showTableBuildMicromapModeEXT
-      conNameBuildMicromapModeEXT
-      (\(BuildMicromapModeEXT x) -> x)
-      (showsPrec 11)
-
-instance Read BuildMicromapModeEXT where
-  readPrec =
-    enumReadPrec
-      enumPrefixBuildMicromapModeEXT
-      showTableBuildMicromapModeEXT
-      conNameBuildMicromapModeEXT
-      BuildMicromapModeEXT
-
--- | VkOpacityMicromapFormatEXT - Format enum for opacity micromaps
---
--- = Description
---
--- For compactness, these values are stored as 16-bit in some structures.
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_opacity_micromap VK_EXT_opacity_micromap>
-newtype OpacityMicromapFormatEXT = OpacityMicromapFormatEXT 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
-
--- | 'OPACITY_MICROMAP_FORMAT_2_STATE_EXT' specifies that the given micromap
--- format has one bit per subtriangle encoding either fully opaque or fully
--- transparent.
-pattern OPACITY_MICROMAP_FORMAT_2_STATE_EXT = OpacityMicromapFormatEXT 1
-
--- | 'OPACITY_MICROMAP_FORMAT_4_STATE_EXT' specifies that the given micromap
--- format has two bits per subtriangle encoding four modes which can be
--- interpreted as described in
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#ray-opacity-micromap ray traversal>.
-pattern OPACITY_MICROMAP_FORMAT_4_STATE_EXT = OpacityMicromapFormatEXT 2
-
-{-# COMPLETE
-  OPACITY_MICROMAP_FORMAT_2_STATE_EXT
-  , OPACITY_MICROMAP_FORMAT_4_STATE_EXT ::
-    OpacityMicromapFormatEXT
-  #-}
-
-conNameOpacityMicromapFormatEXT :: String
-conNameOpacityMicromapFormatEXT = "OpacityMicromapFormatEXT"
-
-enumPrefixOpacityMicromapFormatEXT :: String
-enumPrefixOpacityMicromapFormatEXT = "OPACITY_MICROMAP_FORMAT_"
-
-showTableOpacityMicromapFormatEXT :: [(OpacityMicromapFormatEXT, String)]
-showTableOpacityMicromapFormatEXT =
-  [
-    ( OPACITY_MICROMAP_FORMAT_2_STATE_EXT
-    , "2_STATE_EXT"
-    )
-  ,
-    ( OPACITY_MICROMAP_FORMAT_4_STATE_EXT
-    , "4_STATE_EXT"
-    )
-  ]
-
-instance Show OpacityMicromapFormatEXT where
-  showsPrec =
-    enumShowsPrec
-      enumPrefixOpacityMicromapFormatEXT
-      showTableOpacityMicromapFormatEXT
-      conNameOpacityMicromapFormatEXT
-      (\(OpacityMicromapFormatEXT x) -> x)
-      (showsPrec 11)
-
-instance Read OpacityMicromapFormatEXT where
-  readPrec =
-    enumReadPrec
-      enumPrefixOpacityMicromapFormatEXT
-      showTableOpacityMicromapFormatEXT
-      conNameOpacityMicromapFormatEXT
-      OpacityMicromapFormatEXT
-
--- | VkOpacityMicromapSpecialIndexEXT - Enum for special indices in the
--- opacity micromap
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_opacity_micromap VK_EXT_opacity_micromap>
-newtype OpacityMicromapSpecialIndexEXT = OpacityMicromapSpecialIndexEXT 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
-
--- | 'OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_TRANSPARENT_EXT' specifies that
--- the entire triangle is fully transparent.
-pattern OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_TRANSPARENT_EXT = OpacityMicromapSpecialIndexEXT (-1)
-
--- | 'OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_OPAQUE_EXT' specifies that the
--- entire triangle is fully opaque.
-pattern OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_OPAQUE_EXT = OpacityMicromapSpecialIndexEXT (-2)
-
--- | 'OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_TRANSPARENT_EXT' specifies
--- that the entire triangle is unknown-transparent.
-pattern OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_TRANSPARENT_EXT = OpacityMicromapSpecialIndexEXT (-3)
-
--- | 'OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_OPAQUE_EXT' specifies that
--- the entire triangle is unknown-opaque.
-pattern OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_OPAQUE_EXT = OpacityMicromapSpecialIndexEXT (-4)
-
-{-# COMPLETE
-  OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_TRANSPARENT_EXT
-  , OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_OPAQUE_EXT
-  , OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_TRANSPARENT_EXT
-  , OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_OPAQUE_EXT ::
-    OpacityMicromapSpecialIndexEXT
-  #-}
-
-conNameOpacityMicromapSpecialIndexEXT :: String
-conNameOpacityMicromapSpecialIndexEXT = "OpacityMicromapSpecialIndexEXT"
-
-enumPrefixOpacityMicromapSpecialIndexEXT :: String
-enumPrefixOpacityMicromapSpecialIndexEXT = "OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_"
-
-showTableOpacityMicromapSpecialIndexEXT :: [(OpacityMicromapSpecialIndexEXT, String)]
-showTableOpacityMicromapSpecialIndexEXT =
-  [
-    ( OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_TRANSPARENT_EXT
-    , "TRANSPARENT_EXT"
-    )
-  ,
-    ( OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_OPAQUE_EXT
-    , "OPAQUE_EXT"
-    )
-  ,
-    ( OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_TRANSPARENT_EXT
-    , "UNKNOWN_TRANSPARENT_EXT"
-    )
-  ,
-    ( OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_OPAQUE_EXT
-    , "UNKNOWN_OPAQUE_EXT"
-    )
-  ]
-
-instance Show OpacityMicromapSpecialIndexEXT where
-  showsPrec =
-    enumShowsPrec
-      enumPrefixOpacityMicromapSpecialIndexEXT
-      showTableOpacityMicromapSpecialIndexEXT
-      conNameOpacityMicromapSpecialIndexEXT
-      (\(OpacityMicromapSpecialIndexEXT x) -> x)
-      (showsPrec 11)
-
-instance Read OpacityMicromapSpecialIndexEXT where
-  readPrec =
-    enumReadPrec
-      enumPrefixOpacityMicromapSpecialIndexEXT
-      showTableOpacityMicromapSpecialIndexEXT
-      conNameOpacityMicromapSpecialIndexEXT
-      OpacityMicromapSpecialIndexEXT
+-- [__API Interactions__]
+--
+--     -   Interacts with VK_VERSION_1_4
+--
+--     -   Interacts with VK_KHR_maintenance5
+--
+-- [__SPIR-V Dependencies__]
+--
+--     -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/EXT/SPV_EXT_opacity_micromap.html SPV_EXT_opacity_micromap>
+--
+-- [__Deprecation State__]
+--
+--     -   /Promoted/ to
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_opacity_micromap VK_KHR_opacity_micromap>
+--         extension
+--
+-- [__Contact__]
+--
+--     -   Christoph Kubisch
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_opacity_micromap] @pixeljetstream%0A*Here describe the issue or question you have about the VK_EXT_opacity_micromap extension* >
+--
+--     -   Eric Werness
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_EXT_opacity_micromap.adoc VK_EXT_opacity_micromap>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2022-08-24
+--
+-- [__Interactions and External Dependencies__]
+--
+--     -   This extension provides API support for
+--         <https://github.com/KhronosGroup/GLSL/blob/main/extensions/ext/GLSL_EXT_opacity_micromap.txt GLSL_EXT_opacity_micromap>
+--
+-- [__Contributors__]
+--
+--     -   Christoph Kubisch, NVIDIA
+--
+--     -   Eric Werness, NVIDIA
+--
+--     -   Josh Barczak, Intel
+--
+--     -   Stu Smith, AMD
+--
+-- == Description
+--
+-- When adding transparency to a ray traced scene, an application can
+-- choose between further tessellating the geometry or using an any-hit
+-- shader to allow the ray through specific parts of the geometry. These
+-- options have the downside of either significantly increasing memory
+-- consumption or adding runtime overhead to run shader code in the middle
+-- of traversal, respectively.
+--
+-- This extension adds the ability to add an /opacity micromap/ to geometry
+-- when building an acceleration structure. The opacity micromap compactly
+-- encodes opacity information which can be read by the implementation to
+-- mark parts of triangles as opaque or transparent. The format is
+-- externally visible to allow the application to compress its internal
+-- geometry and surface representations into the compressed format ahead of
+-- time. The compressed format subdivides each triangle into a set of
+-- subtriangles, each of which can be assigned either two or four opacity
+-- values. These opacity values can control if a ray hitting that
+-- subtriangle is treated as an opaque hit, complete miss, or possible hit,
+-- depending on the controls described in
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#ray-opacity-micromap Ray Opacity Micromap>.
+--
+-- This extension provides:
+--
+-- -   a 'Vulkan.Extensions.Handles.MicromapEXT' structure to store the
+--     micromap,
+--
+-- -   functions similar to acceleration structure build functions to build
+--     the opacity micromap array, and
+--
+-- -   a structure to extend
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureGeometryTrianglesDataKHR'
+--     to attach a micromap to the geometry of the acceleration structure.
+--
+-- == New Object Types
+--
+-- -   'Vulkan.Extensions.Handles.MicromapEXT'
+--
+-- == New Commands
+--
+-- -   'buildMicromapsEXT'
+--
+-- -   'cmdBuildMicromapsEXT'
+--
+-- -   'cmdCopyMemoryToMicromapEXT'
+--
+-- -   'cmdCopyMicromapEXT'
+--
+-- -   'cmdCopyMicromapToMemoryEXT'
+--
+-- -   'cmdWriteMicromapsPropertiesEXT'
+--
+-- -   'copyMemoryToMicromapEXT'
+--
+-- -   'copyMicromapEXT'
+--
+-- -   'copyMicromapToMemoryEXT'
+--
+-- -   'createMicromapEXT'
+--
+-- -   'destroyMicromapEXT'
+--
+-- -   'getDeviceMicromapCompatibilityEXT'
+--
+-- -   'getMicromapBuildSizesEXT'
+--
+-- -   'writeMicromapsPropertiesEXT'
+--
+-- == New Structures
+--
+-- -   'CopyMemoryToMicromapInfoEXT'
+--
+-- -   'CopyMicromapInfoEXT'
+--
+-- -   'CopyMicromapToMemoryInfoEXT'
+--
+-- -   'MicromapBuildInfoEXT'
+--
+-- -   'MicromapBuildSizesInfoEXT'
+--
+-- -   'MicromapCreateInfoEXT'
+--
+-- -   'MicromapTriangleEXT'
+--
+-- -   'MicromapUsageEXT'
+--
+-- -   'MicromapVersionInfoEXT'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureGeometryTrianglesDataKHR',
+--     'Vulkan.Extensions.VK_AMDX_dense_geometry_format.AccelerationStructureDenseGeometryFormatTrianglesDataAMDX':
+--
+--     -   'AccelerationStructureTrianglesOpacityMicromapEXT'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceOpacityMicromapFeaturesEXT'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDeviceOpacityMicromapPropertiesEXT'
+--
+-- == New Enums
+--
+-- -   'BuildMicromapFlagBitsEXT'
+--
+-- -   'BuildMicromapModeEXT'
+--
+-- -   'CopyMicromapModeEXT'
+--
+-- -   'MicromapCreateFlagBitsEXT'
+--
+-- -   'MicromapTypeEXT'
+--
+-- -   'OpacityMicromapFormatEXT'
+--
+-- -   'OpacityMicromapSpecialIndexEXT'
+--
+-- == New Bitmasks
+--
+-- -   'BuildMicromapFlagsEXT'
+--
+-- -   'MicromapCreateFlagsEXT'
+--
+-- == New Enum Constants
+--
+-- -   'EXT_OPACITY_MICROMAP_EXTENSION_NAME'
+--
+-- -   'EXT_OPACITY_MICROMAP_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core13.Enums.AccessFlags2.AccessFlagBits2':
+--
+--     -   'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_MICROMAP_READ_BIT_EXT'
+--
+--     -   'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_MICROMAP_WRITE_BIT_EXT'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BufferUsageFlagBits':
+--
+--     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXT'
+--
+--     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_MICROMAP_STORAGE_BIT_EXT'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.BuildAccelerationStructureFlagBitsKHR':
+--
+--     -   'BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_BIT_EXT'
+--
+--     -   'BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_EXT'
+--
+--     -   'Vulkan.Extensions.VK_KHR_acceleration_structure.BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_BIT_EXT'
+--
+--     -   'BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_EXT'
+--
+--     -   'BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_BIT_EXT'
+--
+--     -   'BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_EXT'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.GeometryInstanceFlagBitsKHR':
+--
+--     -   'GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_BIT_EXT'
+--
+--     -   'GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_EXT'
+--
+--     -   'GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_BIT_EXT'
+--
+--     -   'GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_EXT'
+--
+-- -   Extending 'Vulkan.Core10.Enums.ObjectType.ObjectType':
+--
+--     -   'Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_MICROMAP_EXT'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.OpacityMicromapFormatKHR':
+--
+--     -   'OPACITY_MICROMAP_FORMAT_2_STATE_EXT'
+--
+--     -   'OPACITY_MICROMAP_FORMAT_4_STATE_EXT'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.OpacityMicromapSpecialIndexKHR':
+--
+--     -   'OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_OPAQUE_EXT'
+--
+--     -   'OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_TRANSPARENT_EXT'
+--
+--     -   'OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_OPAQUE_EXT'
+--
+--     -   'OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_TRANSPARENT_EXT'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits':
+--
+--     -   'PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT'
+--
+-- -   Extending
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlagBits2':
+--
+--     -   'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT'
+--
+-- -   Extending 'Vulkan.Core10.Enums.QueryType.QueryType':
+--
+--     -   'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_MICROMAP_COMPACTED_SIZE_EXT'
+--
+--     -   'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_MICROMAP_SERIALIZATION_SIZE_EXT'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_MEMORY_TO_MICROMAP_INFO_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_MICROMAP_INFO_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_MICROMAP_TO_MEMORY_INFO_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MICROMAP_BUILD_INFO_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MICROMAP_BUILD_SIZES_INFO_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MICROMAP_CREATE_INFO_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MICROMAP_VERSION_INFO_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_PROPERTIES_EXT'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance5 VK_KHR_maintenance5>
+-- or
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.4 Vulkan Version 1.4>
+-- is supported:
+--
+-- -   Extending
+--     'Vulkan.Core14.Enums.BufferUsageFlags2.BufferUsageFlagBits2':
+--
+--     -   'Vulkan.Core14.Enums.BufferUsageFlags2.BUFFER_USAGE_2_MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXT'
+--
+--     -   'Vulkan.Core14.Enums.BufferUsageFlags2.BUFFER_USAGE_2_MICROMAP_STORAGE_BIT_EXT'
+--
+-- -   Extending
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PipelineCreateFlagBits2':
+--
+--     -   'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT'
+--
+-- == Promotion to VK_KHR_opacity_micromap
+--
+-- Functionality in this extension is included in VK_KHR_opacity_micromap.
+-- The type, enum and command names are still aliases of the KHR
+-- functionality with some exceptions.
+--
+-- See the VK_KHR_opacity_micromap proposal for details on the differences.
+--
+-- == Reference Code
+--
+-- > uint32_t BarycentricsToSpaceFillingCurveIndex(float u, float v, uint32_t level)
+-- > {
+-- >     u = clamp(u, 0.0f, 1.0f);
+-- >     v = clamp(v, 0.0f, 1.0f);
+-- >
+-- >     uint32_t iu, iv, iw;
+-- >
+-- >     // Quantize barycentric coordinates
+-- >     float fu = u * (1u << level);
+-- >     float fv = v * (1u << level);
+-- >
+-- >     iu = (uint32_t)fu;
+-- >     iv = (uint32_t)fv;
+-- >
+-- >     float uf = fu - float(iu);
+-- >     float vf = fv - float(iv);
+-- >
+-- >     if (iu >= (1u << level)) iu = (1u << level) - 1u;
+-- >     if (iv >= (1u << level)) iv = (1u << level) - 1u;
+-- >
+-- >     uint32_t iuv = iu + iv;
+-- >
+-- >     if (iuv >= (1u << level))
+-- >         iu -= iuv - (1u << level) + 1u;
+-- >
+-- >     iw = ~(iu + iv);
+-- >
+-- >     if (uf + vf >= 1.0f && iuv < (1u << level) - 1u) --iw;
+-- >
+-- >     uint32_t b0 = ~(iu ^ iw);
+-- >     b0 &= ((1u << level) - 1u);
+-- >     uint32_t t = (iu ^ iv) & b0;
+-- >
+-- >     uint32_t f = t;
+-- >     f ^= f >> 1u;
+-- >     f ^= f >> 2u;
+-- >     f ^= f >> 4u;
+-- >     f ^= f >> 8u;
+-- >     uint32_t b1 = ((f ^ iu) & ~b0) | t;
+-- >
+-- >     // Interleave bits
+-- >     b0 = (b0 | (b0 << 8u)) & 0x00ff00ffu;
+-- >     b0 = (b0 | (b0 << 4u)) & 0x0f0f0f0fu;
+-- >     b0 = (b0 | (b0 << 2u)) & 0x33333333u;
+-- >     b0 = (b0 | (b0 << 1u)) & 0x55555555u;
+-- >     b1 = (b1 | (b1 << 8u)) & 0x00ff00ffu;
+-- >     b1 = (b1 | (b1 << 4u)) & 0x0f0f0f0fu;
+-- >     b1 = (b1 | (b1 << 2u)) & 0x33333333u;
+-- >     b1 = (b1 | (b1 << 1u)) & 0x55555555u;
+-- >
+-- >     return b0 | (b1 << 1u);
+-- > }
+--
+-- == Issues
+--
+-- (1) Is the build actually similar to an acceleration structure build?
+--
+-- -   Resolved: The build should be much lighter-weight than an
+--     acceleration structure build, but the infrastructure is similar
+--     enough that it makes sense to keep the concepts compatible.
+--
+-- (2) Why does VkMicromapUsageEXT not have type\/pNext?
+--
+-- -   Resolved: There can be a very large number of these structures, so
+--     doubling the size of these can be significant memory consumption.
+--     Also, an application may be loading these directly from a file which
+--     is more compatible with it being a flat structure. The including
+--     structures are extensible and are probably a more suitable place to
+--     add extensibility.
+--
+-- (3) Why is there a SPIR-V extension?
+--
+-- -   Resolved: There is a ray flag. To be consistent with how the
+--     existing ray tracing extensions work that ray flag needs its own
+--     extension.
+--
+-- (4) Should there be indirect micromap build?
+--
+-- -   Resolved: Not for now. There is more in-depth usage metadata
+--     required and it seems less likely that something like a GPU culling
+--     system would need to change the counts for a micromap.
+--
+-- (5) Should micromaps have a micromap device address?
+--
+-- -   Resolved: There is no need right now (can just use the handle) but
+--     that is a bit different from acceleration structures, though the two
+--     are not completely parallel in their usage.
+--
+-- (6) Why are the alignment requirements defined as a mix of hardcoded
+-- values and caps?
+--
+-- -   Resolved: This is most parallel with the definition of
+--     @VK_KHR_acceleration_structure@ and maintaining commonality makes it
+--     easier for applications to share memory.
+--
+-- == Version History
+--
+-- -   Revision 2, 2022-06-22 (Eric Werness)
+--
+--     -   EXTify and clean up for discussion
+--
+-- -   Revision 1, 2022-01-01 (Eric Werness)
+--
+--     -   Initial revision
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_opacity_micromap 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_opacity_micromap  ( createMicromapEXT
+                                                  , withMicromapEXT
+                                                  , cmdBuildMicromapsEXT
+                                                  , buildMicromapsEXT
+                                                  , destroyMicromapEXT
+                                                  , cmdCopyMicromapEXT
+                                                  , copyMicromapEXT
+                                                  , cmdCopyMicromapToMemoryEXT
+                                                  , copyMicromapToMemoryEXT
+                                                  , cmdCopyMemoryToMicromapEXT
+                                                  , copyMemoryToMicromapEXT
+                                                  , cmdWriteMicromapsPropertiesEXT
+                                                  , writeMicromapsPropertiesEXT
+                                                  , getDeviceMicromapCompatibilityEXT
+                                                  , getMicromapBuildSizesEXT
+                                                  , pattern PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT
+                                                  , pattern GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_BIT_EXT
+                                                  , pattern GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_EXT
+                                                  , pattern GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_BIT_EXT
+                                                  , pattern GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_EXT
+                                                  , pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_BIT_EXT
+                                                  , pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_EXT
+                                                  , pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_BIT_EXT
+                                                  , pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_EXT
+                                                  , pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_EXT
+                                                  , pattern OPACITY_MICROMAP_FORMAT_2_STATE_EXT
+                                                  , pattern OPACITY_MICROMAP_FORMAT_4_STATE_EXT
+                                                  , pattern OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_TRANSPARENT_EXT
+                                                  , pattern OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_OPAQUE_EXT
+                                                  , pattern OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_TRANSPARENT_EXT
+                                                  , pattern OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_OPAQUE_EXT
+                                                  , MicromapBuildInfoEXT(..)
+                                                  , MicromapCreateInfoEXT(..)
+                                                  , MicromapVersionInfoEXT(..)
+                                                  , CopyMicromapInfoEXT(..)
+                                                  , CopyMicromapToMemoryInfoEXT(..)
+                                                  , CopyMemoryToMicromapInfoEXT(..)
+                                                  , MicromapBuildSizesInfoEXT(..)
+                                                  , MicromapUsageEXT(..)
+                                                  , PhysicalDeviceOpacityMicromapFeaturesEXT(..)
+                                                  , PhysicalDeviceOpacityMicromapPropertiesEXT(..)
+                                                  , AccelerationStructureTrianglesOpacityMicromapEXT(..)
+                                                  , MicromapTypeEXT( MICROMAP_TYPE_OPACITY_MICROMAP_EXT
+                                                                   , MICROMAP_TYPE_DISPLACEMENT_MICROMAP_NV
+                                                                   , ..
+                                                                   )
+                                                  , BuildMicromapFlagsEXT
+                                                  , BuildMicromapFlagBitsEXT( BUILD_MICROMAP_PREFER_FAST_TRACE_BIT_EXT
+                                                                            , BUILD_MICROMAP_PREFER_FAST_BUILD_BIT_EXT
+                                                                            , BUILD_MICROMAP_ALLOW_COMPACTION_BIT_EXT
+                                                                            , ..
+                                                                            )
+                                                  , MicromapCreateFlagsEXT
+                                                  , MicromapCreateFlagBitsEXT( MICROMAP_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT
+                                                                             , ..
+                                                                             )
+                                                  , CopyMicromapModeEXT( COPY_MICROMAP_MODE_CLONE_EXT
+                                                                       , COPY_MICROMAP_MODE_SERIALIZE_EXT
+                                                                       , COPY_MICROMAP_MODE_DESERIALIZE_EXT
+                                                                       , COPY_MICROMAP_MODE_COMPACT_EXT
+                                                                       , ..
+                                                                       )
+                                                  , BuildMicromapModeEXT( BUILD_MICROMAP_MODE_BUILD_EXT
+                                                                        , ..
+                                                                        )
+                                                  , OpacityMicromapFormatEXT
+                                                  , OpacityMicromapSpecialIndexEXT
+                                                  , MicromapTriangleEXT
+                                                  , EXT_OPACITY_MICROMAP_SPEC_VERSION
+                                                  , pattern EXT_OPACITY_MICROMAP_SPEC_VERSION
+                                                  , EXT_OPACITY_MICROMAP_EXTENSION_NAME
+                                                  , pattern EXT_OPACITY_MICROMAP_EXTENSION_NAME
+                                                  , DeferredOperationKHR(..)
+                                                  , MicromapEXT(..)
+                                                  , MicromapTriangleKHR(..)
+                                                  , DeviceOrHostAddressKHR(..)
+                                                  , DeviceOrHostAddressConstKHR(..)
+                                                  , GeometryInstanceFlagBitsKHR(..)
+                                                  , GeometryInstanceFlagsKHR
+                                                  , BuildAccelerationStructureFlagBitsKHR(..)
+                                                  , BuildAccelerationStructureFlagsKHR
+                                                  , AccelerationStructureBuildTypeKHR(..)
+                                                  , AccelerationStructureCompatibilityKHR(..)
+                                                  , OpacityMicromapFormatKHR(..)
+                                                  , OpacityMicromapSpecialIndexKHR(..)
+                                                  , pattern PIPELINE_CREATE_2_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT
+                                                  ) where
+
+import Data.Bits (Bits)
+import Data.Bits (FiniteBits)
+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 (castPtr)
+import GHC.Ptr (nullFunPtr)
+import Foreign.Ptr (nullPtr)
+import Foreign.Ptr (plusPtr)
+import GHC.Show (showString)
+import GHC.Show (showsPrec)
+import Numeric (showHex)
+import qualified Data.ByteString (length)
+import Data.ByteString (packCStringLen)
+import Data.ByteString.Unsafe (unsafeUseAsCString)
+import Control.Monad.Trans.Class (lift)
+import Control.Monad.Trans.Cont (evalContT)
+import qualified Data.Vector (imapM_)
+import qualified Data.Vector (length)
+import Foreign.C.Types (CSize(..))
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (FromCStruct(..))
+import Vulkan.CStruct (ToCStruct)
+import Vulkan.CStruct (ToCStruct(..))
+import Vulkan.Zero (Zero)
+import Vulkan.Zero (Zero(..))
+import Control.Monad.IO.Class (MonadIO)
+import Data.String (IsString)
+import Data.Typeable (Typeable)
+import Foreign.C.Types (CChar)
+import Foreign.C.Types (CSize)
+import Foreign.C.Types (CSize(CSize))
+import Foreign.Storable (Storable)
+import Foreign.Storable (Storable(peek))
+import Foreign.Storable (Storable(poke))
+import qualified Foreign.Storable (Storable(..))
+import GHC.Generics (Generic)
+import GHC.IO.Exception (IOErrorType(..))
+import GHC.IO.Exception (IOException(..))
+import Data.Int (Int32)
+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.Word (Word8)
+import Data.ByteString (ByteString)
+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.Extensions.VK_KHR_acceleration_structure (AccelerationStructureBuildTypeKHR)
+import Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureBuildTypeKHR(..))
+import Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureCompatibilityKHR)
+import Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureCompatibilityKHR(..))
+import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)
+import Vulkan.Core10.FundamentalTypes (Bool32)
+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.Extensions.Handles (DeferredOperationKHR)
+import Vulkan.Extensions.Handles (DeferredOperationKHR(..))
+import Vulkan.Core10.Handles (Device)
+import Vulkan.Core10.Handles (Device(..))
+import Vulkan.Core10.Handles (Device(Device))
+import Vulkan.Core10.FundamentalTypes (DeviceAddress)
+import Vulkan.Dynamic (DeviceCmds(pVkBuildMicromapsEXT))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdBuildMicromapsEXT))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdCopyMemoryToMicromapEXT))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdCopyMicromapEXT))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdCopyMicromapToMemoryEXT))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdWriteMicromapsPropertiesEXT))
+import Vulkan.Dynamic (DeviceCmds(pVkCopyMemoryToMicromapEXT))
+import Vulkan.Dynamic (DeviceCmds(pVkCopyMicromapEXT))
+import Vulkan.Dynamic (DeviceCmds(pVkCopyMicromapToMemoryEXT))
+import Vulkan.Dynamic (DeviceCmds(pVkCreateMicromapEXT))
+import Vulkan.Dynamic (DeviceCmds(pVkDestroyMicromapEXT))
+import Vulkan.Dynamic (DeviceCmds(pVkGetDeviceMicromapCompatibilityEXT))
+import Vulkan.Dynamic (DeviceCmds(pVkGetMicromapBuildSizesEXT))
+import Vulkan.Dynamic (DeviceCmds(pVkWriteMicromapsPropertiesEXT))
+import Vulkan.Extensions.VK_KHR_acceleration_structure (DeviceOrHostAddressConstKHR)
+import Vulkan.Extensions.VK_KHR_acceleration_structure (DeviceOrHostAddressKHR)
+import Vulkan.Core10.FundamentalTypes (DeviceSize)
+import Vulkan.Core10.Handles (Device_T)
+import Vulkan.Core10.FundamentalTypes (Flags)
+import Vulkan.Core10.Enums.IndexType (IndexType)
+import Vulkan.Extensions.Handles (MicromapEXT)
+import Vulkan.Extensions.Handles (MicromapEXT(..))
+import Vulkan.Extensions.VK_KHR_opacity_micromap (MicromapTriangleKHR)
+import Vulkan.Extensions.VK_KHR_opacity_micromap (OpacityMicromapFormatKHR)
+import Vulkan.Extensions.VK_KHR_opacity_micromap (OpacityMicromapSpecialIndexKHR)
+import Vulkan.Core10.Handles (QueryPool)
+import Vulkan.Core10.Handles (QueryPool(..))
+import Vulkan.Core10.Enums.QueryType (QueryType)
+import Vulkan.Core10.Enums.QueryType (QueryType(..))
+import Vulkan.Core10.Enums.Result (Result)
+import Vulkan.Core10.Enums.Result (Result(..))
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Exception (VulkanException(..))
+import Vulkan.Extensions.VK_KHR_acceleration_structure (BuildAccelerationStructureFlagsKHR)
+import Vulkan.Extensions.VK_KHR_acceleration_structure (BuildAccelerationStructureFlagBitsKHR(BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_BIT_KHR))
+import Vulkan.Extensions.VK_KHR_acceleration_structure (BuildAccelerationStructureFlagsKHR)
+import Vulkan.Extensions.VK_KHR_acceleration_structure (BuildAccelerationStructureFlagBitsKHR(BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_BIT_EXT))
+import Vulkan.Extensions.VK_KHR_acceleration_structure (BuildAccelerationStructureFlagsKHR)
+import Vulkan.Extensions.VK_KHR_acceleration_structure (BuildAccelerationStructureFlagBitsKHR(BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_BIT_KHR))
+import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryInstanceFlagsKHR)
+import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryInstanceFlagBitsKHR(GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_BIT_KHR))
+import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryInstanceFlagsKHR)
+import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryInstanceFlagBitsKHR(GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_BIT_KHR))
+import Vulkan.Extensions.VK_KHR_opacity_micromap (OpacityMicromapFormatKHR(OPACITY_MICROMAP_FORMAT_2_STATE_KHR))
+import Vulkan.Extensions.VK_KHR_opacity_micromap (OpacityMicromapFormatKHR(OPACITY_MICROMAP_FORMAT_4_STATE_KHR))
+import Vulkan.Extensions.VK_KHR_opacity_micromap (OpacityMicromapSpecialIndexKHR(OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_OPAQUE_KHR))
+import Vulkan.Extensions.VK_KHR_opacity_micromap (OpacityMicromapSpecialIndexKHR(OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_TRANSPARENT_KHR))
+import Vulkan.Extensions.VK_KHR_opacity_micromap (OpacityMicromapSpecialIndexKHR(OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_OPAQUE_KHR))
+import Vulkan.Extensions.VK_KHR_opacity_micromap (OpacityMicromapSpecialIndexKHR(OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_TRANSPARENT_KHR))
+import Vulkan.Core10.Enums.PipelineCreateFlagBits (PipelineCreateFlags)
+import Vulkan.Core10.Enums.PipelineCreateFlagBits (PipelineCreateFlagBits(PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_KHR))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COPY_MEMORY_TO_MICROMAP_INFO_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COPY_MICROMAP_INFO_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COPY_MICROMAP_TO_MEMORY_INFO_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_MICROMAP_BUILD_INFO_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_MICROMAP_BUILD_SIZES_INFO_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_MICROMAP_CREATE_INFO_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_MICROMAP_VERSION_INFO_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_PROPERTIES_EXT))
+import Vulkan.Core10.Enums.Result (Result(SUCCESS))
+import Vulkan.Core10.APIConstants (pattern UUID_SIZE)
+import Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureBuildTypeKHR(..))
+import Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureCompatibilityKHR(..))
+import Vulkan.Extensions.VK_KHR_acceleration_structure (BuildAccelerationStructureFlagBitsKHR(..))
+import Vulkan.Extensions.VK_KHR_acceleration_structure (BuildAccelerationStructureFlagsKHR)
+import Vulkan.Extensions.Handles (DeferredOperationKHR(..))
+import Vulkan.Extensions.VK_KHR_acceleration_structure (DeviceOrHostAddressConstKHR(..))
+import Vulkan.Extensions.VK_KHR_acceleration_structure (DeviceOrHostAddressKHR(..))
+import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryInstanceFlagBitsKHR(..))
+import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryInstanceFlagsKHR)
+import Vulkan.Extensions.Handles (MicromapEXT(..))
+import Vulkan.Extensions.VK_KHR_opacity_micromap (MicromapTriangleKHR(..))
+import Vulkan.Extensions.VK_KHR_opacity_micromap (OpacityMicromapFormatKHR(..))
+import Vulkan.Extensions.VK_KHR_opacity_micromap (OpacityMicromapSpecialIndexKHR(..))
+import Vulkan.Core14.Enums.PipelineCreateFlags2 (pattern PIPELINE_CREATE_2_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCreateMicromapEXT
+  :: FunPtr (Ptr Device_T -> Ptr MicromapCreateInfoEXT -> Ptr AllocationCallbacks -> Ptr MicromapEXT -> IO Result) -> Ptr Device_T -> Ptr MicromapCreateInfoEXT -> Ptr AllocationCallbacks -> Ptr MicromapEXT -> IO Result
+
+-- | vkCreateMicromapEXT - Create a new micromap object
+--
+-- = Description
+--
+-- Similar to other objects in Vulkan, the micromap creation merely creates
+-- an object with a specific “shape”. The type and quantity of geometry
+-- that can be built into a micromap is determined by the parameters of
+-- 'MicromapCreateInfoEXT'.
+--
+-- The micromap data is stored in the object referred to by
+-- 'MicromapCreateInfoEXT'::@buffer@. Once memory has been bound to that
+-- buffer, it must be populated by micromap build or micromap copy commands
+-- such as 'cmdBuildMicromapsEXT', 'buildMicromapsEXT',
+-- 'cmdCopyMicromapEXT', and 'copyMicromapEXT'.
+--
+-- The expected usage for a trace capture\/replay tool is that it will
+-- serialize and later deserialize the micromap data using micromap copy
+-- commands. During capture the tool will set
+-- 'CopyMicromapToMemoryInfoEXT'::@mode@ to
+-- 'COPY_MICROMAP_MODE_SERIALIZE_EXT', and during replay the tool will set
+-- 'CopyMemoryToMicromapInfoEXT'::@mode@ to
+-- 'COPY_MICROMAP_MODE_DESERIALIZE_EXT'.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCreateMicromapEXT-micromap-11615# The
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-micromapEXT ::micromap>
+--     feature /must/ be enabled
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCreateMicromapEXT-device-parameter# @device@ /must/ be a
+--     valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkCreateMicromapEXT-pCreateInfo-parameter# @pCreateInfo@
+--     /must/ be a valid pointer to a valid 'MicromapCreateInfoEXT'
+--     structure
+--
+-- -   #VUID-vkCreateMicromapEXT-pAllocator-parameter# If @pAllocator@ is
+--     not @NULL@, @pAllocator@ /must/ be a valid pointer to a valid
+--     'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' structure
+--
+-- -   #VUID-vkCreateMicromapEXT-pMicromap-parameter# @pMicromap@ /must/ be
+--     a valid pointer to a 'Vulkan.Extensions.Handles.MicromapEXT' handle
+--
+-- -   #VUID-vkCreateMicromapEXT-device-queuecount# The device /must/ have
+--     been created with at least @1@ queue
+--
+-- == 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.Extensions.VK_KHR_buffer_device_address.ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_opacity_micromap VK_EXT_opacity_micromap>,
+-- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',
+-- 'Vulkan.Core10.Handles.Device', 'MicromapCreateInfoEXT',
+-- 'Vulkan.Extensions.Handles.MicromapEXT'
+createMicromapEXT :: forall io
+                   . (MonadIO io)
+                  => -- | @device@ is the logical device that creates the micromap structure
+                     -- object.
+                     Device
+                  -> -- | @pCreateInfo@ is a pointer to a 'MicromapCreateInfoEXT' structure
+                     -- containing parameters affecting creation of the micromap.
+                     MicromapCreateInfoEXT
+                  -> -- | @pAllocator@ controls host memory allocation as described in the
+                     -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
+                     -- chapter.
+                     ("allocator" ::: Maybe AllocationCallbacks)
+                  -> io (MicromapEXT)
+createMicromapEXT device createInfo allocator = liftIO . evalContT $ do
+  let vkCreateMicromapEXTPtr = pVkCreateMicromapEXT (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCreateMicromapEXTPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCreateMicromapEXT is null" Nothing Nothing
+  let vkCreateMicromapEXT' = mkVkCreateMicromapEXT vkCreateMicromapEXTPtr
+  pCreateInfo <- ContT $ withCStruct (createInfo)
+  pAllocator <- case (allocator) of
+    Nothing -> pure nullPtr
+    Just j -> ContT $ withCStruct (j)
+  pPMicromap <- ContT $ bracket (callocBytes @MicromapEXT 8) free
+  r <- lift $ traceAroundEvent "vkCreateMicromapEXT" (vkCreateMicromapEXT'
+                                                        (deviceHandle (device))
+                                                        pCreateInfo
+                                                        pAllocator
+                                                        (pPMicromap))
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+  pMicromap <- lift $ peek @MicromapEXT pPMicromap
+  pure $ (pMicromap)
+
+-- | A convenience wrapper to make a compatible pair of calls to
+-- 'createMicromapEXT' and 'destroyMicromapEXT'
+--
+-- To ensure that 'destroyMicromapEXT' 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.
+--
+withMicromapEXT :: forall io r . MonadIO io => Device -> MicromapCreateInfoEXT -> Maybe AllocationCallbacks -> (io MicromapEXT -> (MicromapEXT -> io ()) -> r) -> r
+withMicromapEXT device pCreateInfo pAllocator b =
+  b (createMicromapEXT device pCreateInfo pAllocator)
+    (\(o0) -> destroyMicromapEXT device o0 pAllocator)
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdBuildMicromapsEXT
+  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Ptr MicromapBuildInfoEXT -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Ptr MicromapBuildInfoEXT -> IO ()
+
+-- | vkCmdBuildMicromapsEXT - Build a micromap
+--
+-- = Description
+--
+-- The 'cmdBuildMicromapsEXT' command provides the ability to initiate
+-- multiple micromaps builds, however there is no ordering or
+-- synchronization implied between any of the individual micromap builds.
+--
+-- This means that there /cannot/ be any memory aliasing between any
+-- micromap memories or scratch memories being used by any of the builds.
+--
+-- The input buffers passed to this command will be referenced by the
+-- implementation for the duration of the command’s execution on the
+-- device. Micromaps /must/ be fully self-contained. The application /can/
+-- reuse or free any memory which was used by this command’s execution on
+-- the device as an input or as scratch without affecting the results of a
+-- subsequent acceleration structure build using the micromap or traversal
+-- of that acceleration structure, provided proper synchronization is used
+-- as described below.
+--
+-- Accesses to the micromap scratch buffers as identified by the
+-- 'MicromapBuildInfoEXT'::@scratchData@ buffer device addresses /must/ be
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies synchronized>
+-- with the
+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT'
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-pipeline-stages pipeline stage>
+-- and an
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-access-types access type>
+-- of ('Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_MICROMAP_READ_BIT_EXT' |
+-- 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_MICROMAP_WRITE_BIT_EXT').
+-- Accesses to 'MicromapBuildInfoEXT'::@dstMicromap@ /must/ be
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies synchronized>
+-- with the
+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT'
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-pipeline-stages pipeline stage>
+-- and an
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-access-types access type>
+-- of 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_MICROMAP_WRITE_BIT_EXT'.
+--
+-- Accesses to other input buffers as identified by any used values of
+-- 'MicromapBuildInfoEXT'::@data@ or
+-- 'MicromapBuildInfoEXT'::@triangleArray@ /must/ be
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies synchronized>
+-- with the
+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT'
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-pipeline-stages pipeline stage>
+-- and an
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-access-types access type>
+-- of 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_SHADER_READ_BIT'.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdBuildMicromapsEXT-pInfos-07461# For each @pInfos@[i],
+--     @dstMicromap@ /must/ have been created with a value of
+--     'MicromapCreateInfoEXT'::@size@ greater than or equal to the memory
+--     size required by the build operation, as returned by
+--     'getMicromapBuildSizesEXT' with @pBuildInfo@ = @pInfos@[i]
+--
+-- -   #VUID-vkCmdBuildMicromapsEXT-mode-07462# The @mode@ member of each
+--     element of @pInfos@ /must/ be a valid 'BuildMicromapModeEXT' value
+--
+-- -   #VUID-vkCmdBuildMicromapsEXT-dstMicromap-07463# The @dstMicromap@
+--     member of any element of @pInfos@ /must/ be a valid
+--     'Vulkan.Extensions.Handles.MicromapEXT' handle
+--
+-- -   #VUID-vkCmdBuildMicromapsEXT-pInfos-07464# For each element of
+--     @pInfos@ its @type@ member /must/ match the value of
+--     'MicromapCreateInfoEXT'::@type@ when its @dstMicromap@ was created
+--
+-- -   #VUID-vkCmdBuildMicromapsEXT-micromap-11648# The
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-micromapEXT ::micromap>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdBuildMicromapsEXT-pInfos-07508# For each element of
+--     @pInfos@, the @buffer@ used to create its @dstMicromap@ member
+--     /must/ be bound to device memory
+--
+-- -   #VUID-vkCmdBuildMicromapsEXT-pInfos-07509# If @pInfos@[i].@mode@ is
+--     'BUILD_MICROMAP_MODE_BUILD_EXT', all addresses between
+--     @pInfos@[i].@scratchData.deviceAddress@ and
+--     @pInfos@[i].@scratchData.deviceAddress@ + N - 1 /must/ be in the
+--     buffer device address range of the same buffer, where N is given by
+--     the @buildScratchSize@ member of the 'MicromapBuildSizesInfoEXT'
+--     structure returned from a call to 'getMicromapBuildSizesEXT' with an
+--     identical 'MicromapBuildInfoEXT' structure and primitive count
+--
+-- -   #VUID-vkCmdBuildMicromapsEXT-data-07510# The buffers from which the
+--     buffer device addresses for all of the @data@ and @triangleArray@
+--     members of all @pInfos@[i] are queried /must/ have been created with
+--     the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdBuildMicromapsEXT-pInfos-07511# For each element of
+--     @pInfos@[i] the buffer from which the buffer device address
+--     @pInfos@[i].@scratchData.deviceAddress@ is queried /must/ have been
+--     created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_STORAGE_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdBuildMicromapsEXT-pInfos-07512# For each element of
+--     @pInfos@, if the value of
+--     'MicromapBuildSizesInfoEXT'::@buildScratchSize@, returned from a
+--     call to 'getMicromapBuildSizesEXT' with an identical
+--     'MicromapBuildInfoEXT' structure, is not @0@,
+--     @scratchData.deviceAddress@ /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdBuildMicromapsEXT-pInfos-10896# For each element of
+--     @pInfos@, @data.deviceAddress@ /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdBuildMicromapsEXT-pInfos-10897# For each element of
+--     @pInfos@, @triangleArray.deviceAddress@ /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdBuildMicromapsEXT-pInfos-07514# For each element of
+--     @pInfos@, its @scratchData.deviceAddress@ member /must/ be a
+--     multiple of
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.PhysicalDeviceAccelerationStructurePropertiesKHR'::@minAccelerationStructureScratchOffsetAlignment@
+--
+-- -   #VUID-vkCmdBuildMicromapsEXT-pInfos-07515# For each element of
+--     @pInfos@, its @triangleArray.deviceAddress@ and @data.deviceAddress@
+--     members /must/ be a multiple of @256@
+--
+-- -   #VUID-vkCmdBuildMicromapsEXT-dstMicromap-11649# The range of memory
+--     backing the @dstMicromap@ member of any element of @pInfos@ that is
+--     accessed by the execution of this command on the device /must/ not
+--     overlap the memory backing the @dstMicromap@ member of any other
+--     element of @pInfos@, which is accessed by the execution of this
+--     command on the device
+--
+-- -   #VUID-vkCmdBuildMicromapsEXT-dstMicromap-11650# The range of memory
+--     backing the @dstMicromap@ member of any element of @pInfos@ that is
+--     accessed by the execution of this command on the device /must/ not
+--     overlap the memory backing the @scratchData@ member of any element
+--     of @pInfos@ (including the same element), which is accessed by the
+--     execution of this command on the device
+--
+-- -   #VUID-vkCmdBuildMicromapsEXT-scratchData-11651# The range of memory
+--     backing the @scratchData@ member of any element of @pInfos@ that is
+--     accessed by the execution of this command on the device /must/ not
+--     overlap the memory backing the @scratchData@ member of any other
+--     element of @pInfos@, which is accessed by the execution of this
+--     command on the device
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdBuildMicromapsEXT-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdBuildMicromapsEXT-pInfos-parameter# @pInfos@ /must/ be a
+--     valid pointer to an array of @infoCount@ valid
+--     'MicromapBuildInfoEXT' structures
+--
+-- -   #VUID-vkCmdBuildMicromapsEXT-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-vkCmdBuildMicromapsEXT-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT' operations
+--
+-- -   #VUID-vkCmdBuildMicromapsEXT-renderpass# This command /must/ only be
+--     called outside of a render pass instance
+--
+-- -   #VUID-vkCmdBuildMicromapsEXT-suspended# This command /must/ not be
+--     called between suspended render pass instances
+--
+-- -   #VUID-vkCmdBuildMicromapsEXT-videocoding# This command /must/ only
+--     be called outside of a video coding scope
+--
+-- -   #VUID-vkCmdBuildMicromapsEXT-infoCount-arraylength# @infoCount@
+--     /must/ be greater than @0@
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdBuildMicromapsEXT is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_opacity_micromap VK_EXT_opacity_micromap>,
+-- 'Vulkan.Core10.Handles.CommandBuffer', 'MicromapBuildInfoEXT'
+cmdBuildMicromapsEXT :: forall io
+                      . (MonadIO io)
+                     => -- | @commandBuffer@ is the command buffer into which the command will be
+                        -- recorded.
+                        CommandBuffer
+                     -> -- | @pInfos@ is a pointer to an array of @infoCount@ 'MicromapBuildInfoEXT'
+                        -- structures defining the data used to build each micromap.
+                        ("infos" ::: Vector MicromapBuildInfoEXT)
+                     -> io ()
+cmdBuildMicromapsEXT commandBuffer infos = liftIO . evalContT $ do
+  let vkCmdBuildMicromapsEXTPtr = pVkCmdBuildMicromapsEXT (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdBuildMicromapsEXTPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdBuildMicromapsEXT is null" Nothing Nothing
+  let vkCmdBuildMicromapsEXT' = mkVkCmdBuildMicromapsEXT vkCmdBuildMicromapsEXTPtr
+  pPInfos <- ContT $ allocaBytes @MicromapBuildInfoEXT ((Data.Vector.length (infos)) * 96)
+  Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPInfos `plusPtr` (96 * (i)) :: Ptr MicromapBuildInfoEXT) (e) . ($ ())) (infos)
+  lift $ traceAroundEvent "vkCmdBuildMicromapsEXT" (vkCmdBuildMicromapsEXT'
+                                                      (commandBufferHandle (commandBuffer))
+                                                      ((fromIntegral (Data.Vector.length $ (infos)) :: Word32))
+                                                      (pPInfos))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkBuildMicromapsEXT
+  :: FunPtr (Ptr Device_T -> DeferredOperationKHR -> Word32 -> Ptr MicromapBuildInfoEXT -> IO Result) -> Ptr Device_T -> DeferredOperationKHR -> Word32 -> Ptr MicromapBuildInfoEXT -> IO Result
+
+-- | vkBuildMicromapsEXT - Build a micromap on the host
+--
+-- = Description
+--
+-- This command fulfills the same task as 'cmdBuildMicromapsEXT' but is
+-- executed by the host.
+--
+-- The 'buildMicromapsEXT' command provides the ability to initiate
+-- multiple micromaps builds, however there is no ordering or
+-- synchronization implied between any of the individual micromap builds.
+--
+-- This means that there /cannot/ be any memory aliasing between any
+-- micromap memories or scratch memories being used by any of the builds.
+--
+-- The input buffers passed to this command will be referenced by the
+-- implementation for the duration of the command. Micromaps /must/ be
+-- fully self-contained. The application /can/ reuse or free any memory
+-- which was used by the command as an input or as scratch without
+-- affecting the results of a subsequent acceleration structure build using
+-- the micromap or traversal of that acceleration structure.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkBuildMicromapsEXT-pInfos-07461# For each @pInfos@[i],
+--     @dstMicromap@ /must/ have been created with a value of
+--     'MicromapCreateInfoEXT'::@size@ greater than or equal to the memory
+--     size required by the build operation, as returned by
+--     'getMicromapBuildSizesEXT' with @pBuildInfo@ = @pInfos@[i]
+--
+-- -   #VUID-vkBuildMicromapsEXT-mode-07462# The @mode@ member of each
+--     element of @pInfos@ /must/ be a valid 'BuildMicromapModeEXT' value
+--
+-- -   #VUID-vkBuildMicromapsEXT-dstMicromap-07463# The @dstMicromap@
+--     member of any element of @pInfos@ /must/ be a valid
+--     'Vulkan.Extensions.Handles.MicromapEXT' handle
+--
+-- -   #VUID-vkBuildMicromapsEXT-pInfos-07464# For each element of @pInfos@
+--     its @type@ member /must/ match the value of
+--     'MicromapCreateInfoEXT'::@type@ when its @dstMicromap@ was created
+--
+-- -   #VUID-vkBuildMicromapsEXT-pInfos-07552# For each element of
+--     @pInfos@, the @buffer@ used to create its @dstMicromap@ member
+--     /must/ be bound to host-visible device memory
+--
+-- -   #VUID-vkBuildMicromapsEXT-pInfos-07553# For each element of
+--     @pInfos@, all referenced addresses of @pInfos@[i].@data.hostAddress@
+--     /must/ be valid host memory
+--
+-- -   #VUID-vkBuildMicromapsEXT-pInfos-07554# For each element of
+--     @pInfos@, all referenced addresses of
+--     @pInfos@[i].@triangleArray.hostAddress@ /must/ be valid host memory
+--
+-- -   #VUID-vkBuildMicromapsEXT-micromapHostCommands-07555# The
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-micromapHostCommandsEXT ::micromapHostCommands>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkBuildMicromapsEXT-pInfos-07556# If @pInfos@[i].@mode@ is
+--     'BUILD_MICROMAP_MODE_BUILD_EXT', and N is not @0@, then all
+--     addresses between @pInfos@[i].@scratchData.hostAddress@ and
+--     @pInfos@[i].@scratchData.hostAddress@ + N - 1 /must/ be valid host
+--     memory, where N is given by the value of
+--     'MicromapBuildSizesInfoEXT'::@buildScratchSize@ returned from a call
+--     to 'getMicromapBuildSizesEXT' with an identical
+--     'MicromapBuildInfoEXT' structure
+--
+-- -   #VUID-vkBuildMicromapsEXT-pInfos-07557# For each element of
+--     @pInfos@, the @buffer@ used to create its @dstMicromap@ member
+--     /must/ be bound to memory that was not allocated with multiple
+--     instances
+--
+-- -   #VUID-vkBuildMicromapsEXT-dstMicromap-11667# The range of memory
+--     backing the @dstMicromap@ member of any element of @pInfos@ that is
+--     accessed by this command /must/ not overlap the memory backing the
+--     @dstMicromap@ member of any other element of @pInfos@, which is
+--     accessed by this command
+--
+-- -   #VUID-vkBuildMicromapsEXT-dstMicromap-11668# The range of memory
+--     backing the @dstMicromap@ member of any element of @pInfos@ that is
+--     accessed by this command /must/ not overlap the memory backing the
+--     @scratchData@ member of any element of @pInfos@ (including the same
+--     element), which is accessed by this command
+--
+-- -   #VUID-vkBuildMicromapsEXT-scratchData-11669# The range of memory
+--     backing the @scratchData@ member of any element of @pInfos@ that is
+--     accessed by this command /must/ not overlap the memory backing the
+--     @scratchData@ member of any other element of @pInfos@, which is
+--     accessed by this command
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkBuildMicromapsEXT-device-parameter# @device@ /must/ be a
+--     valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkBuildMicromapsEXT-deferredOperation-parameter# If
+--     @deferredOperation@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
+--     @deferredOperation@ /must/ be a valid
+--     'Vulkan.Extensions.Handles.DeferredOperationKHR' handle
+--
+-- -   #VUID-vkBuildMicromapsEXT-pInfos-parameter# @pInfos@ /must/ be a
+--     valid pointer to an array of @infoCount@ valid
+--     'MicromapBuildInfoEXT' structures
+--
+-- -   #VUID-vkBuildMicromapsEXT-infoCount-arraylength# @infoCount@ /must/
+--     be greater than @0@
+--
+-- -   #VUID-vkBuildMicromapsEXT-deferredOperation-parent# If
+--     @deferredOperation@ is a valid handle, it /must/ have been created,
+--     allocated, or retrieved from @device@
+--
+-- == Return Codes
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
+--
+--     -   'Vulkan.Core10.Enums.Result.OPERATION_DEFERRED_KHR'
+--
+--     -   'Vulkan.Core10.Enums.Result.OPERATION_NOT_DEFERRED_KHR'
+--
+--     -   '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_DEVICE_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_opacity_micromap VK_EXT_opacity_micromap>,
+-- 'Vulkan.Extensions.Handles.DeferredOperationKHR',
+-- 'Vulkan.Core10.Handles.Device', 'MicromapBuildInfoEXT'
+buildMicromapsEXT :: forall io
+                   . (MonadIO io)
+                  => -- | @device@ is the 'Vulkan.Core10.Handles.Device' for which the micromaps
+                     -- are being built.
+                     Device
+                  -> -- | @deferredOperation@ is an optional
+                     -- 'Vulkan.Extensions.Handles.DeferredOperationKHR' to
+                     -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#deferred-host-operations-requesting request deferral>
+                     -- for this command.
+                     DeferredOperationKHR
+                  -> -- | @pInfos@ is a pointer to an array of @infoCount@ 'MicromapBuildInfoEXT'
+                     -- structures defining the geometry used to build each micromap.
+                     ("infos" ::: Vector MicromapBuildInfoEXT)
+                  -> io (Result)
+buildMicromapsEXT device deferredOperation infos = liftIO . evalContT $ do
+  let vkBuildMicromapsEXTPtr = pVkBuildMicromapsEXT (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkBuildMicromapsEXTPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkBuildMicromapsEXT is null" Nothing Nothing
+  let vkBuildMicromapsEXT' = mkVkBuildMicromapsEXT vkBuildMicromapsEXTPtr
+  pPInfos <- ContT $ allocaBytes @MicromapBuildInfoEXT ((Data.Vector.length (infos)) * 96)
+  Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPInfos `plusPtr` (96 * (i)) :: Ptr MicromapBuildInfoEXT) (e) . ($ ())) (infos)
+  r <- lift $ traceAroundEvent "vkBuildMicromapsEXT" (vkBuildMicromapsEXT'
+                                                        (deviceHandle (device))
+                                                        (deferredOperation)
+                                                        ((fromIntegral (Data.Vector.length $ (infos)) :: Word32))
+                                                        (pPInfos))
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+  pure $ (r)
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkDestroyMicromapEXT
+  :: FunPtr (Ptr Device_T -> MicromapEXT -> Ptr AllocationCallbacks -> IO ()) -> Ptr Device_T -> MicromapEXT -> Ptr AllocationCallbacks -> IO ()
+
+-- | vkDestroyMicromapEXT - Destroy a micromap object
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkDestroyMicromapEXT-micromap-11619# The
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-micromapEXT ::micromap>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkDestroyMicromapEXT-micromap-07441# All submitted commands
+--     that refer to @micromap@ /must/ have completed execution
+--
+-- -   #VUID-vkDestroyMicromapEXT-micromap-07442# If
+--     'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' were
+--     provided when @micromap@ was created, a compatible set of callbacks
+--     /must/ be provided here
+--
+-- -   #VUID-vkDestroyMicromapEXT-micromap-07443# If no
+--     'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' were
+--     provided when @micromap@ was created, @pAllocator@ /must/ be @NULL@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkDestroyMicromapEXT-device-parameter# @device@ /must/ be a
+--     valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkDestroyMicromapEXT-micromap-parameter# If @micromap@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', @micromap@ /must/ be a
+--     valid 'Vulkan.Extensions.Handles.MicromapEXT' handle
+--
+-- -   #VUID-vkDestroyMicromapEXT-pAllocator-parameter# If @pAllocator@ is
+--     not @NULL@, @pAllocator@ /must/ be a valid pointer to a valid
+--     'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' structure
+--
+-- -   #VUID-vkDestroyMicromapEXT-micromap-parent# If @micromap@ is a valid
+--     handle, it /must/ have been created, allocated, or retrieved from
+--     @device@
+--
+-- == Host Synchronization
+--
+-- -   Host access to @micromap@ /must/ be externally synchronized
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_opacity_micromap VK_EXT_opacity_micromap>,
+-- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',
+-- 'Vulkan.Core10.Handles.Device', 'Vulkan.Extensions.Handles.MicromapEXT'
+destroyMicromapEXT :: forall io
+                    . (MonadIO io)
+                   => -- | @device@ is the logical device that destroys the micromap.
+                      Device
+                   -> -- | @micromap@ is the micromap to destroy.
+                      MicromapEXT
+                   -> -- | @pAllocator@ controls host memory allocation as described in the
+                      -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
+                      -- chapter.
+                      ("allocator" ::: Maybe AllocationCallbacks)
+                   -> io ()
+destroyMicromapEXT device micromap allocator = liftIO . evalContT $ do
+  let vkDestroyMicromapEXTPtr = pVkDestroyMicromapEXT (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkDestroyMicromapEXTPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkDestroyMicromapEXT is null" Nothing Nothing
+  let vkDestroyMicromapEXT' = mkVkDestroyMicromapEXT vkDestroyMicromapEXTPtr
+  pAllocator <- case (allocator) of
+    Nothing -> pure nullPtr
+    Just j -> ContT $ withCStruct (j)
+  lift $ traceAroundEvent "vkDestroyMicromapEXT" (vkDestroyMicromapEXT'
+                                                    (deviceHandle (device))
+                                                    (micromap)
+                                                    pAllocator)
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdCopyMicromapEXT
+  :: FunPtr (Ptr CommandBuffer_T -> Ptr CopyMicromapInfoEXT -> IO ()) -> Ptr CommandBuffer_T -> Ptr CopyMicromapInfoEXT -> IO ()
+
+-- | vkCmdCopyMicromapEXT - Copy a micromap
+--
+-- = Description
+--
+-- This command copies the @pInfo->src@ micromap to the @pInfo->dst@
+-- micromap in the manner specified by @pInfo->mode@.
+--
+-- Accesses to @pInfo->src@ and @pInfo->dst@ /must/ be
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies synchronized>
+-- with the
+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT'
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-pipeline-stages pipeline stage>
+-- and an
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-access-types access type>
+-- of 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_MICROMAP_READ_BIT_EXT' or
+-- 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_MICROMAP_WRITE_BIT_EXT' as
+-- appropriate.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdCopyMicromapEXT-buffer-07529# The @buffer@ used to create
+--     @pInfo->src@ /must/ be bound to device memory
+--
+-- -   #VUID-vkCmdCopyMicromapEXT-buffer-07530# The @buffer@ used to create
+--     @pInfo->dst@ /must/ /must/ be bound to device memory
+--
+-- -   #VUID-vkCmdCopyMicromapEXT-src-07532# The source micromap @src@
+--     /must/ have been constructed prior to the execution of this command
+--     on the device
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdCopyMicromapEXT-commandBuffer-parameter# @commandBuffer@
+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdCopyMicromapEXT-pInfo-parameter# @pInfo@ /must/ be a
+--     valid pointer to a valid 'CopyMicromapInfoEXT' structure
+--
+-- -   #VUID-vkCmdCopyMicromapEXT-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-vkCmdCopyMicromapEXT-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT' operations
+--
+-- -   #VUID-vkCmdCopyMicromapEXT-renderpass# This command /must/ only be
+--     called outside of a render pass instance
+--
+-- -   #VUID-vkCmdCopyMicromapEXT-suspended# This command /must/ not be
+--     called between suspended render pass instances
+--
+-- -   #VUID-vkCmdCopyMicromapEXT-videocoding# This command /must/ only be
+--     called outside of a video coding scope
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdCopyMicromapEXT is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_opacity_micromap VK_EXT_opacity_micromap>,
+-- 'Vulkan.Core10.Handles.CommandBuffer', 'CopyMicromapInfoEXT'
+cmdCopyMicromapEXT :: forall io
+                    . (MonadIO io)
+                   => -- | @commandBuffer@ is the command buffer into which the command will be
+                      -- recorded.
+                      CommandBuffer
+                   -> -- | @pInfo@ is a pointer to a 'CopyMicromapInfoEXT' structure defining the
+                      -- copy operation.
+                      CopyMicromapInfoEXT
+                   -> io ()
+cmdCopyMicromapEXT commandBuffer info = liftIO . evalContT $ do
+  let vkCmdCopyMicromapEXTPtr = pVkCmdCopyMicromapEXT (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdCopyMicromapEXTPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdCopyMicromapEXT is null" Nothing Nothing
+  let vkCmdCopyMicromapEXT' = mkVkCmdCopyMicromapEXT vkCmdCopyMicromapEXTPtr
+  pInfo <- ContT $ withCStruct (info)
+  lift $ traceAroundEvent "vkCmdCopyMicromapEXT" (vkCmdCopyMicromapEXT'
+                                                    (commandBufferHandle (commandBuffer))
+                                                    pInfo)
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCopyMicromapEXT
+  :: FunPtr (Ptr Device_T -> DeferredOperationKHR -> Ptr CopyMicromapInfoEXT -> IO Result) -> Ptr Device_T -> DeferredOperationKHR -> Ptr CopyMicromapInfoEXT -> IO Result
+
+-- | vkCopyMicromapEXT - Copy a micromap on the host
+--
+-- = Description
+--
+-- This command fulfills the same task as 'cmdCopyMicromapEXT' but is
+-- executed by the host.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCopyMicromapEXT-deferredOperation-03678# Any previous
+--     deferred operation that was associated with @deferredOperation@
+--     /must/ be complete
+--
+-- -   #VUID-vkCopyMicromapEXT-buffer-07558# The @buffer@ used to create
+--     @pInfo->src@ /must/ be bound to host-visible device memory
+--
+-- -   #VUID-vkCopyMicromapEXT-buffer-07559# The @buffer@ used to create
+--     @pInfo->dst@ /must/ be bound to host-visible device memory
+--
+-- -   #VUID-vkCopyMicromapEXT-micromapHostCommands-07560# The
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-micromapHostCommandsEXT ::micromapHostCommands>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCopyMicromapEXT-buffer-07561# The @buffer@ used to create
+--     @pInfo->src@ /must/ be bound to memory that was not allocated with
+--     multiple instances
+--
+-- -   #VUID-vkCopyMicromapEXT-buffer-07562# The @buffer@ used to create
+--     @pInfo->dst@ /must/ be bound to memory that was not allocated with
+--     multiple instances
+--
+-- -   #VUID-vkCopyMicromapEXT-src-11670# The source micromap @src@ /must/
+--     have been constructed prior to the execution of this command
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCopyMicromapEXT-device-parameter# @device@ /must/ be a valid
+--     'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkCopyMicromapEXT-deferredOperation-parameter# If
+--     @deferredOperation@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
+--     @deferredOperation@ /must/ be a valid
+--     'Vulkan.Extensions.Handles.DeferredOperationKHR' handle
+--
+-- -   #VUID-vkCopyMicromapEXT-pInfo-parameter# @pInfo@ /must/ be a valid
+--     pointer to a valid 'CopyMicromapInfoEXT' structure
+--
+-- -   #VUID-vkCopyMicromapEXT-deferredOperation-parent# If
+--     @deferredOperation@ is a valid handle, it /must/ have been created,
+--     allocated, or retrieved from @device@
+--
+-- == Return Codes
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
+--
+--     -   'Vulkan.Core10.Enums.Result.OPERATION_DEFERRED_KHR'
+--
+--     -   'Vulkan.Core10.Enums.Result.OPERATION_NOT_DEFERRED_KHR'
+--
+--     -   '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_DEVICE_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_opacity_micromap VK_EXT_opacity_micromap>,
+-- 'CopyMicromapInfoEXT', 'Vulkan.Extensions.Handles.DeferredOperationKHR',
+-- 'Vulkan.Core10.Handles.Device'
+copyMicromapEXT :: forall io
+                 . (MonadIO io)
+                => -- | @device@ is the device which owns the micromaps.
+                   Device
+                -> -- | @deferredOperation@ is an optional
+                   -- 'Vulkan.Extensions.Handles.DeferredOperationKHR' to
+                   -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#deferred-host-operations-requesting request deferral>
+                   -- for this command.
+                   DeferredOperationKHR
+                -> -- | @pInfo@ is a pointer to a 'CopyMicromapInfoEXT' structure defining the
+                   -- copy operation.
+                   CopyMicromapInfoEXT
+                -> io (Result)
+copyMicromapEXT device deferredOperation info = liftIO . evalContT $ do
+  let vkCopyMicromapEXTPtr = pVkCopyMicromapEXT (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCopyMicromapEXTPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCopyMicromapEXT is null" Nothing Nothing
+  let vkCopyMicromapEXT' = mkVkCopyMicromapEXT vkCopyMicromapEXTPtr
+  pInfo <- ContT $ withCStruct (info)
+  r <- lift $ traceAroundEvent "vkCopyMicromapEXT" (vkCopyMicromapEXT'
+                                                      (deviceHandle (device))
+                                                      (deferredOperation)
+                                                      pInfo)
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+  pure $ (r)
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdCopyMicromapToMemoryEXT
+  :: FunPtr (Ptr CommandBuffer_T -> Ptr CopyMicromapToMemoryInfoEXT -> IO ()) -> Ptr CommandBuffer_T -> Ptr CopyMicromapToMemoryInfoEXT -> IO ()
+
+-- | vkCmdCopyMicromapToMemoryEXT - Copy a micromap to device memory
+--
+-- = Description
+--
+-- Accesses to @pInfo->src@ /must/ be
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies synchronized>
+-- with the
+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT'
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-pipeline-stages pipeline stage>
+-- and an
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-access-types access type>
+-- of 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_MICROMAP_READ_BIT_EXT'.
+-- Accesses to the buffer indicated by @pInfo->dst@ /must/ be synchronized
+-- with the
+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT'
+-- pipeline stage and an access type of
+-- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_TRANSFER_WRITE_BIT'.
+--
+-- This command produces the same results as 'copyMicromapToMemoryEXT', but
+-- writes its result to a device address, and is executed on the device
+-- rather than the host. The output /may/ not necessarily be bit-for-bit
+-- identical, but is equally compatible for use with either
+-- 'cmdCopyMemoryToMicromapEXT' or 'copyMemoryToMicromapEXT'.
+--
+-- The defined header structure for the serialized data consists of:
+--
+-- -   'Vulkan.Core10.APIConstants.UUID_SIZE' bytes of data matching
+--     'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceIDProperties'::@driverUUID@
+--
+-- -   'Vulkan.Core10.APIConstants.UUID_SIZE' bytes of data identifying the
+--     compatibility for comparison using
+--     'getDeviceMicromapCompatibilityEXT'
+--
+-- The serialized data is written to the buffer (or read from the buffer)
+-- according to the host endianness.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdCopyMicromapToMemoryEXT-pInfo-07536#
+--     @pInfo->dst.deviceAddress@ /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdCopyMicromapToMemoryEXT-pInfo-07537#
+--     @pInfo->dst.deviceAddress@ /must/ be aligned to @256@ bytes
+--
+-- -   #VUID-vkCmdCopyMicromapToMemoryEXT-buffer-07539# The @buffer@ used
+--     to create @pInfo->src@ /must/ be bound to device memory
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdCopyMicromapToMemoryEXT-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdCopyMicromapToMemoryEXT-pInfo-parameter# @pInfo@ /must/
+--     be a valid pointer to a valid 'CopyMicromapToMemoryInfoEXT'
+--     structure
+--
+-- -   #VUID-vkCmdCopyMicromapToMemoryEXT-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-vkCmdCopyMicromapToMemoryEXT-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT' operations
+--
+-- -   #VUID-vkCmdCopyMicromapToMemoryEXT-renderpass# This command /must/
+--     only be called outside of a render pass instance
+--
+-- -   #VUID-vkCmdCopyMicromapToMemoryEXT-suspended# This command /must/
+--     not be called between suspended render pass instances
+--
+-- -   #VUID-vkCmdCopyMicromapToMemoryEXT-videocoding# This command /must/
+--     only be called outside of a video coding scope
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdCopyMicromapToMemoryEXT is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_opacity_micromap VK_EXT_opacity_micromap>,
+-- 'Vulkan.Core10.Handles.CommandBuffer', 'CopyMicromapToMemoryInfoEXT'
+cmdCopyMicromapToMemoryEXT :: forall io
+                            . (MonadIO io)
+                           => -- | @commandBuffer@ is the command buffer into which the command will be
+                              -- recorded.
+                              CommandBuffer
+                           -> -- | @pInfo@ is an a pointer to a 'CopyMicromapToMemoryInfoEXT' structure
+                              -- defining the copy operation.
+                              CopyMicromapToMemoryInfoEXT
+                           -> io ()
+cmdCopyMicromapToMemoryEXT commandBuffer info = liftIO . evalContT $ do
+  let vkCmdCopyMicromapToMemoryEXTPtr = pVkCmdCopyMicromapToMemoryEXT (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdCopyMicromapToMemoryEXTPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdCopyMicromapToMemoryEXT is null" Nothing Nothing
+  let vkCmdCopyMicromapToMemoryEXT' = mkVkCmdCopyMicromapToMemoryEXT vkCmdCopyMicromapToMemoryEXTPtr
+  pInfo <- ContT $ withCStruct (info)
+  lift $ traceAroundEvent "vkCmdCopyMicromapToMemoryEXT" (vkCmdCopyMicromapToMemoryEXT'
+                                                            (commandBufferHandle (commandBuffer))
+                                                            pInfo)
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCopyMicromapToMemoryEXT
+  :: FunPtr (Ptr Device_T -> DeferredOperationKHR -> Ptr CopyMicromapToMemoryInfoEXT -> IO Result) -> Ptr Device_T -> DeferredOperationKHR -> Ptr CopyMicromapToMemoryInfoEXT -> IO Result
+
+-- | vkCopyMicromapToMemoryEXT - Serialize a micromap on the host
+--
+-- = Description
+--
+-- This command fulfills the same task as 'cmdCopyMicromapToMemoryEXT' but
+-- is executed by the host.
+--
+-- This command produces the same results as 'cmdCopyMicromapToMemoryEXT',
+-- but writes its result directly to a host pointer, and is executed on the
+-- host rather than the device. The output /may/ not necessarily be
+-- bit-for-bit identical, but is compatible for use with either
+-- 'cmdCopyMemoryToMicromapEXT' or 'copyMemoryToMicromapEXT'.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCopyMicromapToMemoryEXT-deferredOperation-03678# Any
+--     previous deferred operation that was associated with
+--     @deferredOperation@ /must/ be complete
+--
+-- -   #VUID-vkCopyMicromapToMemoryEXT-buffer-07568# The @buffer@ used to
+--     create @pInfo->src@ /must/ be bound to host-visible device memory
+--
+-- -   #VUID-vkCopyMicromapToMemoryEXT-pInfo-07569#
+--     @pInfo->dst.hostAddress@ /must/ be a valid host pointer
+--
+-- -   #VUID-vkCopyMicromapToMemoryEXT-pInfo-07570#
+--     @pInfo->dst.hostAddress@ /must/ be aligned to 16 bytes
+--
+-- -   #VUID-vkCopyMicromapToMemoryEXT-micromapHostCommands-07571# The
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-micromapHostCommandsEXT ::micromapHostCommands>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCopyMicromapToMemoryEXT-buffer-07572# The @buffer@ used to
+--     create @pInfo->src@ /must/ be bound to memory that was not allocated
+--     with multiple instances
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCopyMicromapToMemoryEXT-device-parameter# @device@ /must/ be
+--     a valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkCopyMicromapToMemoryEXT-deferredOperation-parameter# If
+--     @deferredOperation@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
+--     @deferredOperation@ /must/ be a valid
+--     'Vulkan.Extensions.Handles.DeferredOperationKHR' handle
+--
+-- -   #VUID-vkCopyMicromapToMemoryEXT-pInfo-parameter# @pInfo@ /must/ be a
+--     valid pointer to a valid 'CopyMicromapToMemoryInfoEXT' structure
+--
+-- -   #VUID-vkCopyMicromapToMemoryEXT-deferredOperation-parent# If
+--     @deferredOperation@ is a valid handle, it /must/ have been created,
+--     allocated, or retrieved from @device@
+--
+-- == Return Codes
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
+--
+--     -   'Vulkan.Core10.Enums.Result.OPERATION_DEFERRED_KHR'
+--
+--     -   'Vulkan.Core10.Enums.Result.OPERATION_NOT_DEFERRED_KHR'
+--
+--     -   '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_DEVICE_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_opacity_micromap VK_EXT_opacity_micromap>,
+-- 'CopyMicromapToMemoryInfoEXT',
+-- 'Vulkan.Extensions.Handles.DeferredOperationKHR',
+-- 'Vulkan.Core10.Handles.Device'
+copyMicromapToMemoryEXT :: forall io
+                         . (MonadIO io)
+                        => -- | @device@ is the device which owns @pInfo->src@.
+                           Device
+                        -> -- | @deferredOperation@ is an optional
+                           -- 'Vulkan.Extensions.Handles.DeferredOperationKHR' to
+                           -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#deferred-host-operations-requesting request deferral>
+                           -- for this command.
+                           DeferredOperationKHR
+                        -> -- | @pInfo@ is a pointer to a 'CopyMicromapToMemoryInfoEXT' structure
+                           -- defining the copy operation.
+                           CopyMicromapToMemoryInfoEXT
+                        -> io (Result)
+copyMicromapToMemoryEXT device deferredOperation info = liftIO . evalContT $ do
+  let vkCopyMicromapToMemoryEXTPtr = pVkCopyMicromapToMemoryEXT (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCopyMicromapToMemoryEXTPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCopyMicromapToMemoryEXT is null" Nothing Nothing
+  let vkCopyMicromapToMemoryEXT' = mkVkCopyMicromapToMemoryEXT vkCopyMicromapToMemoryEXTPtr
+  pInfo <- ContT $ withCStruct (info)
+  r <- lift $ traceAroundEvent "vkCopyMicromapToMemoryEXT" (vkCopyMicromapToMemoryEXT'
+                                                              (deviceHandle (device))
+                                                              (deferredOperation)
+                                                              pInfo)
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+  pure $ (r)
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdCopyMemoryToMicromapEXT
+  :: FunPtr (Ptr CommandBuffer_T -> Ptr CopyMemoryToMicromapInfoEXT -> IO ()) -> Ptr CommandBuffer_T -> Ptr CopyMemoryToMicromapInfoEXT -> IO ()
+
+-- | vkCmdCopyMemoryToMicromapEXT - Copy device memory to a micromap
+--
+-- = Description
+--
+-- Accesses to @pInfo->dst@ /must/ be
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies synchronized>
+-- with the
+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT'
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-pipeline-stages pipeline stage>
+-- and an
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-access-types access type>
+-- of 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_MICROMAP_WRITE_BIT_EXT'.
+-- Accesses to the buffer indicated by @pInfo->src@ /must/ be synchronized
+-- with the
+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT'
+-- pipeline stage and an access type of
+-- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_TRANSFER_READ_BIT'.
+--
+-- This command /can/ accept micromaps produced by either
+-- 'copyMicromapToMemoryEXT' or 'cmdCopyMicromapToMemoryEXT'.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdCopyMemoryToMicromapEXT-pInfo-07543#
+--     @pInfo->src.deviceAddress@ /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdCopyMemoryToMicromapEXT-pInfo-07544#
+--     @pInfo->src.deviceAddress@ /must/ be aligned to @256@ bytes
+--
+-- -   #VUID-vkCmdCopyMemoryToMicromapEXT-buffer-07546# The @buffer@ used
+--     to create @pInfo->dst@ /must/ be bound to device memory
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdCopyMemoryToMicromapEXT-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdCopyMemoryToMicromapEXT-pInfo-parameter# @pInfo@ /must/
+--     be a valid pointer to a valid 'CopyMemoryToMicromapInfoEXT'
+--     structure
+--
+-- -   #VUID-vkCmdCopyMemoryToMicromapEXT-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-vkCmdCopyMemoryToMicromapEXT-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT' operations
+--
+-- -   #VUID-vkCmdCopyMemoryToMicromapEXT-renderpass# This command /must/
+--     only be called outside of a render pass instance
+--
+-- -   #VUID-vkCmdCopyMemoryToMicromapEXT-suspended# This command /must/
+--     not be called between suspended render pass instances
+--
+-- -   #VUID-vkCmdCopyMemoryToMicromapEXT-videocoding# This command /must/
+--     only be called outside of a video coding scope
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdCopyMemoryToMicromapEXT is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_opacity_micromap VK_EXT_opacity_micromap>,
+-- 'Vulkan.Core10.Handles.CommandBuffer', 'CopyMemoryToMicromapInfoEXT'
+cmdCopyMemoryToMicromapEXT :: forall io
+                            . (MonadIO io)
+                           => -- | @commandBuffer@ is the command buffer into which the command will be
+                              -- recorded.
+                              CommandBuffer
+                           -> -- | @pInfo@ is a pointer to a 'CopyMemoryToMicromapInfoEXT' structure
+                              -- defining the copy operation.
+                              CopyMemoryToMicromapInfoEXT
+                           -> io ()
+cmdCopyMemoryToMicromapEXT commandBuffer info = liftIO . evalContT $ do
+  let vkCmdCopyMemoryToMicromapEXTPtr = pVkCmdCopyMemoryToMicromapEXT (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdCopyMemoryToMicromapEXTPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdCopyMemoryToMicromapEXT is null" Nothing Nothing
+  let vkCmdCopyMemoryToMicromapEXT' = mkVkCmdCopyMemoryToMicromapEXT vkCmdCopyMemoryToMicromapEXTPtr
+  pInfo <- ContT $ withCStruct (info)
+  lift $ traceAroundEvent "vkCmdCopyMemoryToMicromapEXT" (vkCmdCopyMemoryToMicromapEXT'
+                                                            (commandBufferHandle (commandBuffer))
+                                                            pInfo)
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCopyMemoryToMicromapEXT
+  :: FunPtr (Ptr Device_T -> DeferredOperationKHR -> Ptr CopyMemoryToMicromapInfoEXT -> IO Result) -> Ptr Device_T -> DeferredOperationKHR -> Ptr CopyMemoryToMicromapInfoEXT -> IO Result
+
+-- | vkCopyMemoryToMicromapEXT - Deserialize a micromap on the host
+--
+-- = Description
+--
+-- This command fulfills the same task as 'cmdCopyMemoryToMicromapEXT' but
+-- is executed by the host.
+--
+-- This command /can/ accept micromaps produced by either
+-- 'cmdCopyMicromapToMemoryEXT' or 'copyMicromapToMemoryEXT'.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCopyMemoryToMicromapEXT-deferredOperation-03678# Any
+--     previous deferred operation that was associated with
+--     @deferredOperation@ /must/ be complete
+--
+-- -   #VUID-vkCopyMemoryToMicromapEXT-pInfo-07563#
+--     @pInfo->src.hostAddress@ /must/ be a valid host pointer
+--
+-- -   #VUID-vkCopyMemoryToMicromapEXT-pInfo-07564#
+--     @pInfo->src.hostAddress@ /must/ be aligned to 16 bytes
+--
+-- -   #VUID-vkCopyMemoryToMicromapEXT-buffer-07565# The @buffer@ used to
+--     create @pInfo->dst@ /must/ be bound to host-visible device memory
+--
+-- -   #VUID-vkCopyMemoryToMicromapEXT-micromapHostCommands-07566# The
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-micromapHostCommandsEXT ::micromapHostCommands>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCopyMemoryToMicromapEXT-buffer-07567# The @buffer@ used to
+--     create @pInfo->dst@ /must/ be bound to memory that was not allocated
+--     with multiple instances
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCopyMemoryToMicromapEXT-device-parameter# @device@ /must/ be
+--     a valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkCopyMemoryToMicromapEXT-deferredOperation-parameter# If
+--     @deferredOperation@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
+--     @deferredOperation@ /must/ be a valid
+--     'Vulkan.Extensions.Handles.DeferredOperationKHR' handle
+--
+-- -   #VUID-vkCopyMemoryToMicromapEXT-pInfo-parameter# @pInfo@ /must/ be a
+--     valid pointer to a valid 'CopyMemoryToMicromapInfoEXT' structure
+--
+-- -   #VUID-vkCopyMemoryToMicromapEXT-deferredOperation-parent# If
+--     @deferredOperation@ is a valid handle, it /must/ have been created,
+--     allocated, or retrieved from @device@
+--
+-- == Return Codes
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
+--
+--     -   'Vulkan.Core10.Enums.Result.OPERATION_DEFERRED_KHR'
+--
+--     -   'Vulkan.Core10.Enums.Result.OPERATION_NOT_DEFERRED_KHR'
+--
+--     -   '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_DEVICE_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_opacity_micromap VK_EXT_opacity_micromap>,
+-- 'CopyMemoryToMicromapInfoEXT',
+-- 'Vulkan.Extensions.Handles.DeferredOperationKHR',
+-- 'Vulkan.Core10.Handles.Device'
+copyMemoryToMicromapEXT :: forall io
+                         . (MonadIO io)
+                        => -- | @device@ is the device which owns @pInfo->dst@.
+                           Device
+                        -> -- | @deferredOperation@ is an optional
+                           -- 'Vulkan.Extensions.Handles.DeferredOperationKHR' to
+                           -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#deferred-host-operations-requesting request deferral>
+                           -- for this command.
+                           DeferredOperationKHR
+                        -> -- | @pInfo@ is a pointer to a 'CopyMemoryToMicromapInfoEXT' structure
+                           -- defining the copy operation.
+                           CopyMemoryToMicromapInfoEXT
+                        -> io (Result)
+copyMemoryToMicromapEXT device deferredOperation info = liftIO . evalContT $ do
+  let vkCopyMemoryToMicromapEXTPtr = pVkCopyMemoryToMicromapEXT (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCopyMemoryToMicromapEXTPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCopyMemoryToMicromapEXT is null" Nothing Nothing
+  let vkCopyMemoryToMicromapEXT' = mkVkCopyMemoryToMicromapEXT vkCopyMemoryToMicromapEXTPtr
+  pInfo <- ContT $ withCStruct (info)
+  r <- lift $ traceAroundEvent "vkCopyMemoryToMicromapEXT" (vkCopyMemoryToMicromapEXT'
+                                                              (deviceHandle (device))
+                                                              (deferredOperation)
+                                                              pInfo)
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+  pure $ (r)
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdWriteMicromapsPropertiesEXT
+  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Ptr MicromapEXT -> QueryType -> QueryPool -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Ptr MicromapEXT -> QueryType -> QueryPool -> Word32 -> IO ()
+
+-- | vkCmdWriteMicromapsPropertiesEXT - Write micromap result parameters to
+-- query results.
+--
+-- = Description
+--
+-- Accesses to any of the micromaps listed in @pMicromaps@ /must/ be
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies synchronized>
+-- with the
+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT'
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-pipeline-stages pipeline stage>
+-- and an
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-access-types access type>
+-- of 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_MICROMAP_READ_BIT_EXT'.
+--
+-- -   If @queryType@ is
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_MICROMAP_SERIALIZATION_SIZE_EXT',
+--     then the value written out is the number of bytes required by a
+--     serialized micromap.
+--
+-- -   If @queryType@ is
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_MICROMAP_COMPACTED_SIZE_EXT',
+--     then the value written out is the number of bytes required by a
+--     compacted micromap.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdWriteMicromapsPropertiesEXT-queryPool-07525# @queryPool@
+--     /must/ have been created with a @queryType@ matching @queryType@
+--
+-- -   #VUID-vkCmdWriteMicromapsPropertiesEXT-None-12417# All queries used
+--     by this command /must/ be /unavailable/
+--
+-- -   #VUID-vkCmdWriteMicromapsPropertiesEXT-buffer-07527# The @buffer@
+--     used to create each micromap in @pMicromaps@ /must/ be bound to
+--     device memory
+--
+-- -   #VUID-vkCmdWriteMicromapsPropertiesEXT-query-07528# The sum of
+--     @query@ plus @micromapCount@ /must/ be less than or equal to the
+--     number of queries in @queryPool@
+--
+-- -   #VUID-vkCmdWriteMicromapsPropertiesEXT-pMicromaps-11662# All
+--     micromaps in @pMicromaps@ /must/ have been constructed prior to the
+--     execution of this command on the device
+--
+-- -   #VUID-vkCmdWriteMicromapsPropertiesEXT-pMicromaps-07502# All
+--     micromaps in @pMicromaps@ /must/ have been constructed with
+--     'BUILD_MICROMAP_ALLOW_COMPACTION_BIT_EXT' if @queryType@ is
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_MICROMAP_COMPACTED_SIZE_EXT'
+--
+-- -   #VUID-vkCmdWriteMicromapsPropertiesEXT-queryType-07503# @queryType@
+--     /must/ be
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_MICROMAP_COMPACTED_SIZE_EXT',
+--     or
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_MICROMAP_SERIALIZATION_SIZE_EXT'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdWriteMicromapsPropertiesEXT-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdWriteMicromapsPropertiesEXT-pMicromaps-parameter#
+--     @pMicromaps@ /must/ be a valid pointer to an array of
+--     @micromapCount@ valid 'Vulkan.Extensions.Handles.MicromapEXT'
+--     handles
+--
+-- -   #VUID-vkCmdWriteMicromapsPropertiesEXT-queryPool-parameter#
+--     @queryPool@ /must/ be a valid 'Vulkan.Core10.Handles.QueryPool'
+--     handle
+--
+-- -   #VUID-vkCmdWriteMicromapsPropertiesEXT-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-vkCmdWriteMicromapsPropertiesEXT-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT' operations
+--
+-- -   #VUID-vkCmdWriteMicromapsPropertiesEXT-renderpass# This command
+--     /must/ only be called outside of a render pass instance
+--
+-- -   #VUID-vkCmdWriteMicromapsPropertiesEXT-suspended# This command
+--     /must/ not be called between suspended render pass instances
+--
+-- -   #VUID-vkCmdWriteMicromapsPropertiesEXT-videocoding# This command
+--     /must/ only be called outside of a video coding scope
+--
+-- -   #VUID-vkCmdWriteMicromapsPropertiesEXT-micromapCount-arraylength#
+--     @micromapCount@ /must/ be greater than @0@
+--
+-- -   #VUID-vkCmdWriteMicromapsPropertiesEXT-commonparent# Each of
+--     @commandBuffer@, @queryPool@, and the elements of @pMicromaps@
+--     /must/ have been created, allocated, or retrieved from the same
+--     'Vulkan.Core10.Handles.Device'
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdWriteMicromapsPropertiesEXT is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_opacity_micromap VK_EXT_opacity_micromap>,
+-- 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'Vulkan.Extensions.Handles.MicromapEXT',
+-- 'Vulkan.Core10.Handles.QueryPool',
+-- 'Vulkan.Core10.Enums.QueryType.QueryType'
+cmdWriteMicromapsPropertiesEXT :: forall io
+                                . (MonadIO io)
+                               => -- | @commandBuffer@ is the command buffer into which the command will be
+                                  -- recorded.
+                                  CommandBuffer
+                               -> -- | @pMicromaps@ is a pointer to an array of existing previously built
+                                  -- micromaps.
+                                  ("micromaps" ::: Vector MicromapEXT)
+                               -> -- | @queryType@ is a 'Vulkan.Core10.Enums.QueryType.QueryType' value
+                                  -- specifying the type of queries managed by the pool.
+                                  QueryType
+                               -> -- | @queryPool@ is the query pool that will manage the results of the query.
+                                  QueryPool
+                               -> -- | @firstQuery@ is the first query index within the query pool that will
+                                  -- contain the @micromapCount@ number of results.
+                                  ("firstQuery" ::: Word32)
+                               -> io ()
+cmdWriteMicromapsPropertiesEXT commandBuffer
+                                 micromaps
+                                 queryType
+                                 queryPool
+                                 firstQuery = liftIO . evalContT $ do
+  let vkCmdWriteMicromapsPropertiesEXTPtr = pVkCmdWriteMicromapsPropertiesEXT (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdWriteMicromapsPropertiesEXTPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdWriteMicromapsPropertiesEXT is null" Nothing Nothing
+  let vkCmdWriteMicromapsPropertiesEXT' = mkVkCmdWriteMicromapsPropertiesEXT vkCmdWriteMicromapsPropertiesEXTPtr
+  pPMicromaps <- ContT $ allocaBytes @MicromapEXT ((Data.Vector.length (micromaps)) * 8)
+  lift $ Data.Vector.imapM_ (\i e -> poke (pPMicromaps `plusPtr` (8 * (i)) :: Ptr MicromapEXT) (e)) (micromaps)
+  lift $ traceAroundEvent "vkCmdWriteMicromapsPropertiesEXT" (vkCmdWriteMicromapsPropertiesEXT'
+                                                                (commandBufferHandle (commandBuffer))
+                                                                ((fromIntegral (Data.Vector.length $ (micromaps)) :: Word32))
+                                                                (pPMicromaps)
+                                                                (queryType)
+                                                                (queryPool)
+                                                                (firstQuery))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkWriteMicromapsPropertiesEXT
+  :: FunPtr (Ptr Device_T -> Word32 -> Ptr MicromapEXT -> QueryType -> CSize -> Ptr () -> CSize -> IO Result) -> Ptr Device_T -> Word32 -> Ptr MicromapEXT -> QueryType -> CSize -> Ptr () -> CSize -> IO Result
+
+-- | vkWriteMicromapsPropertiesEXT - Query micromap meta-data on the host
+--
+-- = Description
+--
+-- This command fulfills the same task as 'cmdWriteMicromapsPropertiesEXT'
+-- but is executed by the host.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkWriteMicromapsPropertiesEXT-pMicromaps-07502# All micromaps
+--     in @pMicromaps@ /must/ have been constructed with
+--     'BUILD_MICROMAP_ALLOW_COMPACTION_BIT_EXT' if @queryType@ is
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_MICROMAP_COMPACTED_SIZE_EXT'
+--
+-- -   #VUID-vkWriteMicromapsPropertiesEXT-queryType-07503# @queryType@
+--     /must/ be
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_MICROMAP_COMPACTED_SIZE_EXT',
+--     or
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_MICROMAP_SERIALIZATION_SIZE_EXT'
+--
+-- -   #VUID-vkWriteMicromapsPropertiesEXT-queryType-10071# If @queryType@
+--     is
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_MICROMAP_SERIALIZATION_SIZE_EXT'
+--     or
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_MICROMAP_COMPACTED_SIZE_EXT'
+--     then @stride@ /must/ be a multiple of the size of
+--     'Vulkan.Core10.FundamentalTypes.DeviceSize'
+--
+-- -   #VUID-vkWriteMicromapsPropertiesEXT-queryType-10072# If @queryType@
+--     is
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_MICROMAP_SERIALIZATION_SIZE_EXT'
+--     or
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_MICROMAP_COMPACTED_SIZE_EXT'
+--     then @pData@ /must/ point to a
+--     'Vulkan.Core10.FundamentalTypes.DeviceSize'
+--
+-- -   #VUID-vkWriteMicromapsPropertiesEXT-dataSize-07576# @dataSize@
+--     /must/ be greater than or equal to @micromapCount@*@stride@
+--
+-- -   #VUID-vkWriteMicromapsPropertiesEXT-buffer-07577# The @buffer@ used
+--     to create each micromap in @pMicromaps@ /must/ be bound to
+--     host-visible device memory
+--
+-- -   #VUID-vkWriteMicromapsPropertiesEXT-micromapHostCommands-07578# The
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-micromapHostCommandsEXT ::micromapHostCommands>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkWriteMicromapsPropertiesEXT-buffer-07579# The @buffer@ used
+--     to create each micromap in @pMicromaps@ /must/ be bound to memory
+--     that was not allocated with multiple instances
+--
+-- -   #VUID-vkWriteMicromapsPropertiesEXT-pMicromaps-11671# All micromaps
+--     in @pMicromaps@ /must/ have been constructed prior to the execution
+--     of this command
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkWriteMicromapsPropertiesEXT-device-parameter# @device@
+--     /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkWriteMicromapsPropertiesEXT-pMicromaps-parameter#
+--     @pMicromaps@ /must/ be a valid pointer to an array of
+--     @micromapCount@ valid 'Vulkan.Extensions.Handles.MicromapEXT'
+--     handles
+--
+-- -   #VUID-vkWriteMicromapsPropertiesEXT-queryType-parameter# @queryType@
+--     /must/ be a valid 'Vulkan.Core10.Enums.QueryType.QueryType' value
+--
+-- -   #VUID-vkWriteMicromapsPropertiesEXT-pData-parameter# @pData@ /must/
+--     be a valid pointer to an array of @dataSize@ bytes
+--
+-- -   #VUID-vkWriteMicromapsPropertiesEXT-micromapCount-arraylength#
+--     @micromapCount@ /must/ be greater than @0@
+--
+-- -   #VUID-vkWriteMicromapsPropertiesEXT-dataSize-arraylength# @dataSize@
+--     /must/ be greater than @0@
+--
+-- -   #VUID-vkWriteMicromapsPropertiesEXT-pMicromaps-parent# Each element
+--     of @pMicromaps@ /must/ have been created, allocated, or retrieved
+--     from @device@
+--
+-- == 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_DEVICE_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_opacity_micromap VK_EXT_opacity_micromap>,
+-- 'Vulkan.Core10.Handles.Device', 'Vulkan.Extensions.Handles.MicromapEXT',
+-- 'Vulkan.Core10.Enums.QueryType.QueryType'
+writeMicromapsPropertiesEXT :: forall io
+                             . (MonadIO io)
+                            => -- | @device@ is the device which owns the micromaps in @pMicromaps@.
+                               Device
+                            -> -- | @pMicromaps@ is a pointer to an array of existing previously built
+                               -- micromaps.
+                               ("micromaps" ::: Vector MicromapEXT)
+                            -> -- | @queryType@ is a 'Vulkan.Core10.Enums.QueryType.QueryType' value
+                               -- specifying the property to be queried.
+                               QueryType
+                            -> -- | @dataSize@ is the size in bytes of the buffer pointed to by @pData@.
+                               ("dataSize" ::: Word64)
+                            -> -- | @pData@ is a pointer to an application-allocated buffer where the
+                               -- results will be written.
+                               ("data" ::: Ptr ())
+                            -> -- | @stride@ is the stride in bytes between results for individual queries
+                               -- within @pData@.
+                               ("stride" ::: Word64)
+                            -> io ()
+writeMicromapsPropertiesEXT device
+                              micromaps
+                              queryType
+                              dataSize
+                              data'
+                              stride = liftIO . evalContT $ do
+  let vkWriteMicromapsPropertiesEXTPtr = pVkWriteMicromapsPropertiesEXT (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkWriteMicromapsPropertiesEXTPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkWriteMicromapsPropertiesEXT is null" Nothing Nothing
+  let vkWriteMicromapsPropertiesEXT' = mkVkWriteMicromapsPropertiesEXT vkWriteMicromapsPropertiesEXTPtr
+  pPMicromaps <- ContT $ allocaBytes @MicromapEXT ((Data.Vector.length (micromaps)) * 8)
+  lift $ Data.Vector.imapM_ (\i e -> poke (pPMicromaps `plusPtr` (8 * (i)) :: Ptr MicromapEXT) (e)) (micromaps)
+  r <- lift $ traceAroundEvent "vkWriteMicromapsPropertiesEXT" (vkWriteMicromapsPropertiesEXT'
+                                                                  (deviceHandle (device))
+                                                                  ((fromIntegral (Data.Vector.length $ (micromaps)) :: Word32))
+                                                                  (pPMicromaps)
+                                                                  (queryType)
+                                                                  (CSize (dataSize))
+                                                                  (data')
+                                                                  (CSize (stride)))
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetDeviceMicromapCompatibilityEXT
+  :: FunPtr (Ptr Device_T -> Ptr MicromapVersionInfoEXT -> Ptr AccelerationStructureCompatibilityKHR -> IO ()) -> Ptr Device_T -> Ptr MicromapVersionInfoEXT -> Ptr AccelerationStructureCompatibilityKHR -> IO ()
+
+-- | vkGetDeviceMicromapCompatibilityEXT - Check if a serialized micromap is
+-- compatible with the current device
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkGetDeviceMicromapCompatibilityEXT-micromap-11666# The
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-micromapEXT ::micromap>
+--     feature /must/ be enabled
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkGetDeviceMicromapCompatibilityEXT-device-parameter# @device@
+--     /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkGetDeviceMicromapCompatibilityEXT-pVersionInfo-parameter#
+--     @pVersionInfo@ /must/ be a valid pointer to a valid
+--     'MicromapVersionInfoEXT' structure
+--
+-- -   #VUID-vkGetDeviceMicromapCompatibilityEXT-pCompatibility-parameter#
+--     @pCompatibility@ /must/ be a valid pointer to a
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureCompatibilityKHR'
+--     value
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_opacity_micromap VK_EXT_opacity_micromap>,
+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureCompatibilityKHR',
+-- 'Vulkan.Core10.Handles.Device', 'MicromapVersionInfoEXT'
+getDeviceMicromapCompatibilityEXT :: forall io
+                                   . (MonadIO io)
+                                  => -- | @device@ is the device to check the version against.
+                                     Device
+                                  -> -- | @pVersionInfo@ is a pointer to a 'MicromapVersionInfoEXT' structure
+                                     -- specifying version information to check against the device.
+                                     MicromapVersionInfoEXT
+                                  -> io (AccelerationStructureCompatibilityKHR)
+getDeviceMicromapCompatibilityEXT device versionInfo = liftIO . evalContT $ do
+  let vkGetDeviceMicromapCompatibilityEXTPtr = pVkGetDeviceMicromapCompatibilityEXT (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkGetDeviceMicromapCompatibilityEXTPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetDeviceMicromapCompatibilityEXT is null" Nothing Nothing
+  let vkGetDeviceMicromapCompatibilityEXT' = mkVkGetDeviceMicromapCompatibilityEXT vkGetDeviceMicromapCompatibilityEXTPtr
+  pVersionInfo <- ContT $ withCStruct (versionInfo)
+  pPCompatibility <- ContT $ bracket (callocBytes @AccelerationStructureCompatibilityKHR 4) free
+  lift $ traceAroundEvent "vkGetDeviceMicromapCompatibilityEXT" (vkGetDeviceMicromapCompatibilityEXT'
+                                                                   (deviceHandle (device))
+                                                                   pVersionInfo
+                                                                   (pPCompatibility))
+  pCompatibility <- lift $ peek @AccelerationStructureCompatibilityKHR pPCompatibility
+  pure $ (pCompatibility)
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetMicromapBuildSizesEXT
+  :: FunPtr (Ptr Device_T -> AccelerationStructureBuildTypeKHR -> Ptr MicromapBuildInfoEXT -> Ptr MicromapBuildSizesInfoEXT -> IO ()) -> Ptr Device_T -> AccelerationStructureBuildTypeKHR -> Ptr MicromapBuildInfoEXT -> Ptr MicromapBuildSizesInfoEXT -> IO ()
+
+-- | vkGetMicromapBuildSizesEXT - Retrieve the required size for a micromap
+--
+-- = Description
+--
+-- The @dstMicromap@, @mode@, @data@, @scratchData@, and @triangleArray@
+-- members of @pBuildInfo@ are ignored by this command.
+--
+-- A micromap created with the @micromapSize@ returned by this command
+-- supports any build with a 'MicromapBuildInfoEXT' structure subject to
+-- the following properties:
+--
+-- -   The build command is a host build command, and @buildType@ is
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR'
+--     or
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR'
+--
+-- -   The build command is a device build command, and @buildType@ is
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR'
+--     or
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR'
+--
+-- -   For 'MicromapBuildInfoEXT':
+--
+--     -   Its @type@, and @flags@ members are equal to @pBuildInfo->type@
+--         and @pBuildInfo->flags@, respectively.
+--
+--     -   The sum of usage information in either @pUsageCounts@ or
+--         @ppUsageCounts@ is equal to the sum of usage information in
+--         either @pBuildInfo->pUsageCounts@ or
+--         @pBuildInfo->ppUsageCounts@.
+--
+-- Similarly, the @buildScratchSize@ value will support any build command
+-- specifying the 'BUILD_MICROMAP_MODE_BUILD_EXT' @mode@ under the above
+-- conditions.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkGetMicromapBuildSizesEXT-micromap-11618# The
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-micromapEXT ::micromap>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkGetMicromapBuildSizesEXT-device-07440# If @device@ was
+--     created with multiple physical devices, the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-bufferDeviceAddressMultiDevice bufferDeviceAddressMultiDevice>
+--     feature /must/ be enabled
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkGetMicromapBuildSizesEXT-device-parameter# @device@ /must/
+--     be a valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkGetMicromapBuildSizesEXT-buildType-parameter# @buildType@
+--     /must/ be a valid
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureBuildTypeKHR'
+--     value
+--
+-- -   #VUID-vkGetMicromapBuildSizesEXT-pBuildInfo-parameter# @pBuildInfo@
+--     /must/ be a valid pointer to a valid 'MicromapBuildInfoEXT'
+--     structure
+--
+-- -   #VUID-vkGetMicromapBuildSizesEXT-pSizeInfo-parameter# @pSizeInfo@
+--     /must/ be a valid pointer to a 'MicromapBuildSizesInfoEXT' structure
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_opacity_micromap VK_EXT_opacity_micromap>,
+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureBuildTypeKHR',
+-- 'Vulkan.Core10.Handles.Device', 'MicromapBuildInfoEXT',
+-- 'MicromapBuildSizesInfoEXT'
+getMicromapBuildSizesEXT :: forall io
+                          . (MonadIO io)
+                         => -- | @device@ is the logical device that will be used for creating the
+                            -- micromap.
+                            Device
+                         -> -- | @buildType@ defines whether host or device operations (or both) are
+                            -- being queried for.
+                            AccelerationStructureBuildTypeKHR
+                         -> -- | @pBuildInfo@ is a pointer to a 'MicromapBuildInfoEXT' structure
+                            -- describing parameters of a build operation.
+                            MicromapBuildInfoEXT
+                         -> io (("sizeInfo" ::: MicromapBuildSizesInfoEXT))
+getMicromapBuildSizesEXT device buildType buildInfo = liftIO . evalContT $ do
+  let vkGetMicromapBuildSizesEXTPtr = pVkGetMicromapBuildSizesEXT (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkGetMicromapBuildSizesEXTPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetMicromapBuildSizesEXT is null" Nothing Nothing
+  let vkGetMicromapBuildSizesEXT' = mkVkGetMicromapBuildSizesEXT vkGetMicromapBuildSizesEXTPtr
+  pBuildInfo <- ContT $ withCStruct (buildInfo)
+  pPSizeInfo <- ContT (withZeroCStruct @MicromapBuildSizesInfoEXT)
+  lift $ traceAroundEvent "vkGetMicromapBuildSizesEXT" (vkGetMicromapBuildSizesEXT'
+                                                          (deviceHandle (device))
+                                                          (buildType)
+                                                          pBuildInfo
+                                                          (pPSizeInfo))
+  pSizeInfo <- lift $ peekCStruct @MicromapBuildSizesInfoEXT pPSizeInfo
+  pure $ (pSizeInfo)
+
+
+-- No documentation found for TopLevel "VK_PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT"
+pattern PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT = PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_KHR
+
+
+-- No documentation found for TopLevel "VK_GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_BIT_EXT"
+pattern GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_BIT_EXT = GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_BIT_KHR
+
+
+-- No documentation found for TopLevel "VK_GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_EXT"
+pattern GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_EXT = GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_BIT_EXT
+
+
+-- No documentation found for TopLevel "VK_GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_BIT_EXT"
+pattern GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_BIT_EXT = GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_BIT_KHR
+
+
+-- No documentation found for TopLevel "VK_GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_EXT"
+pattern GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_EXT = GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_BIT_EXT
+
+
+-- No documentation found for TopLevel "VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_BIT_EXT"
+pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_BIT_EXT = BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_BIT_KHR
+
+
+-- No documentation found for TopLevel "VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_EXT"
+pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_EXT = BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_BIT_EXT
+
+
+-- No documentation found for TopLevel "VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_BIT_EXT"
+pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_BIT_EXT = BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_BIT_KHR
+
+
+-- No documentation found for TopLevel "VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_EXT"
+pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_EXT = BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_BIT_EXT
+
+
+-- No documentation found for TopLevel "VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_EXT"
+pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_EXT = BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_BIT_EXT
+
+
+-- No documentation found for TopLevel "VK_OPACITY_MICROMAP_FORMAT_2_STATE_EXT"
+pattern OPACITY_MICROMAP_FORMAT_2_STATE_EXT = OPACITY_MICROMAP_FORMAT_2_STATE_KHR
+
+
+-- No documentation found for TopLevel "VK_OPACITY_MICROMAP_FORMAT_4_STATE_EXT"
+pattern OPACITY_MICROMAP_FORMAT_4_STATE_EXT = OPACITY_MICROMAP_FORMAT_4_STATE_KHR
+
+
+-- No documentation found for TopLevel "VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_TRANSPARENT_EXT"
+pattern OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_TRANSPARENT_EXT = OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_TRANSPARENT_KHR
+
+
+-- No documentation found for TopLevel "VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_OPAQUE_EXT"
+pattern OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_OPAQUE_EXT = OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_OPAQUE_KHR
+
+
+-- No documentation found for TopLevel "VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_TRANSPARENT_EXT"
+pattern OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_TRANSPARENT_EXT = OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_TRANSPARENT_KHR
+
+
+-- No documentation found for TopLevel "VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_OPAQUE_EXT"
+pattern OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_OPAQUE_EXT = OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_OPAQUE_KHR
+
+
+-- | VkMicromapBuildInfoEXT - Structure specifying the data used to build a
+-- micromap
+--
+-- = Description
+--
+-- Only one of @pUsageCounts@ or @ppUsageCounts@ /can/ be a valid pointer,
+-- the other /must/ be @NULL@. The elements of the non-@NULL@ array
+-- describe the total counts used to build each micromap. Each element
+-- contains a @count@ which is the number of micromap triangles of that
+-- @format@ and @subdivisionLevel@ contained in the micromap. Multiple
+-- elements with the same @format@ and @subdivisionLevel@ are allowed and
+-- the total count for that @format@ and @subdivisionLevel@ is the sum of
+-- the @count@ for each element.
+--
+-- Each micromap triangle refers to one element in @triangleArray@ which
+-- contains the @format@ and @subdivisionLevel@ for that particular
+-- triangle as well as a @dataOffset@ in bytes which is the location
+-- relative to @data@ where that triangle’s micromap data begins. The data
+-- at @triangleArray@ is laid out as a 4 byte unsigned integer for the
+-- @dataOffset@ followed by a 2 byte unsigned integer for the subdivision
+-- level then a 2 byte unsigned integer for the format. In practice,
+-- compilers compile 'MicromapTriangleEXT' to match this pattern.
+--
+-- For opacity micromaps, the data at @data@ is packed as either one bit
+-- per element for 'OPACITY_MICROMAP_FORMAT_2_STATE_EXT' or two bits per
+-- element for 'OPACITY_MICROMAP_FORMAT_4_STATE_EXT' and is packed from LSB
+-- to MSB in each byte. The data at each index in those bytes is
+-- interpreted as discussed in
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#ray-opacity-micromap Ray Opacity Micromap>.
+--
+-- For displacement micromaps, the data at @data@ is interpreted as
+-- discussed in
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#displacement-micromap-encoding Displacement Micromap Encoding>.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkMicromapBuildInfoEXT-pUsageCounts-07516# Only one of
+--     @pUsageCounts@ or @ppUsageCounts@ /can/ be a valid pointer, the
+--     other /must/ be @NULL@
+--
+-- -   #VUID-VkMicromapBuildInfoEXT-format-11652# If @type@ is
+--     'MICROMAP_TYPE_OPACITY_MICROMAP_EXT', for each member of
+--     @pUsageCounts@ or @ppUsageCounts@, @format@ /must/ be a valid value
+--     from 'OpacityMicromapFormatEXT'
+--
+-- -   #VUID-VkMicromapBuildInfoEXT-format-11653# If @type@ is
+--     'MICROMAP_TYPE_DISPLACEMENT_MICROMAP_NV', for each member of
+--     @pUsageCounts@ or @ppUsageCounts@, @format@ /must/ be a valid value
+--     from
+--     'Vulkan.Extensions.VK_NV_displacement_micromap.DisplacementMicromapFormatNV'
+--
+-- -   #VUID-VkMicromapBuildInfoEXT-subdivisionLevel-11654# If @type@ is
+--     'MICROMAP_TYPE_OPACITY_MICROMAP_EXT', for each member of
+--     @pUsageCounts@ or @ppUsageCounts@, if @format@ is
+--     'OPACITY_MICROMAP_FORMAT_2_STATE_EXT', @subdivisionLevel@ /must/ be
+--     less than or equal to
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxOpacity2StateSubdivisionLevelEXT ::maxOpacity2StateSubdivisionLevel>
+--
+-- -   #VUID-VkMicromapBuildInfoEXT-subdivisionLevel-11655# If @type@ is
+--     'MICROMAP_TYPE_OPACITY_MICROMAP_EXT', for each member of
+--     @pUsageCounts@ or @ppUsageCounts@, if @format@ is
+--     'OPACITY_MICROMAP_FORMAT_4_STATE_EXT', @subdivisionLevel@ /must/ be
+--     less than or equal to
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxOpacity4StateSubdivisionLevelEXT ::maxOpacity4StateSubdivisionLevel>
+--
+-- -   #VUID-VkMicromapBuildInfoEXT-subdivisionLevel-11656# If @type@ is
+--     'MICROMAP_TYPE_DISPLACEMENT_MICROMAP_NV', for each member of
+--     @pUsageCounts@ or @ppUsageCounts@, @subdivisionLevel@ /must/ be less
+--     than or equal to
+--     'Vulkan.Extensions.VK_NV_displacement_micromap.PhysicalDeviceDisplacementMicromapPropertiesNV'::@maxDisplacementMicromapSubdivisionLevel@
+--
+-- -   #VUID-VkMicromapBuildInfoEXT-format-11657# If @type@ is
+--     'MICROMAP_TYPE_OPACITY_MICROMAP_EXT', for each member of
+--     @triangleArray@, @format@ /must/ be a valid value from
+--     'OpacityMicromapFormatEXT'
+--
+-- -   #VUID-VkMicromapBuildInfoEXT-format-11658# If @type@ is
+--     'MICROMAP_TYPE_DISPLACEMENT_MICROMAP_NV', for each member of
+--     @triangleArray@, @format@ /must/ be a valid value from
+--     'Vulkan.Extensions.VK_NV_displacement_micromap.DisplacementMicromapFormatNV'
+--
+-- -   #VUID-VkMicromapBuildInfoEXT-subdivisionLevel-11659# If @type@ is
+--     'MICROMAP_TYPE_OPACITY_MICROMAP_EXT', for each member of
+--     @triangleArray@, if @format@ is
+--     'OPACITY_MICROMAP_FORMAT_2_STATE_EXT', @subdivisionLevel@ /must/ be
+--     less than or equal to
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxOpacity2StateSubdivisionLevelEXT ::maxOpacity2StateSubdivisionLevel>
+--
+-- -   #VUID-VkMicromapBuildInfoEXT-subdivisionLevel-11660# If @type@ is
+--     'MICROMAP_TYPE_OPACITY_MICROMAP_EXT', for each member of
+--     @triangleArray@, if @format@ is
+--     'OPACITY_MICROMAP_FORMAT_4_STATE_EXT', @subdivisionLevel@ /must/ be
+--     less than or equal to
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxOpacity4StateSubdivisionLevelEXT ::maxOpacity4StateSubdivisionLevel>
+--
+-- -   #VUID-VkMicromapBuildInfoEXT-subdivisionLevel-11661# If @type@ is
+--     'MICROMAP_TYPE_DISPLACEMENT_MICROMAP_NV', for each member of
+--     @triangleArray@, @subdivisionLevel@ /must/ be less than or equal to
+--     'Vulkan.Extensions.VK_NV_displacement_micromap.PhysicalDeviceDisplacementMicromapPropertiesNV'::@maxDisplacementMicromapSubdivisionLevel@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkMicromapBuildInfoEXT-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MICROMAP_BUILD_INFO_EXT'
+--
+-- -   #VUID-VkMicromapBuildInfoEXT-pNext-pNext# @pNext@ /must/ be @NULL@
+--
+-- -   #VUID-VkMicromapBuildInfoEXT-type-parameter# @type@ /must/ be a
+--     valid 'MicromapTypeEXT' value
+--
+-- -   #VUID-VkMicromapBuildInfoEXT-flags-parameter# @flags@ /must/ be a
+--     valid combination of 'BuildMicromapFlagBitsEXT' values
+--
+-- -   #VUID-VkMicromapBuildInfoEXT-pUsageCounts-parameter# If
+--     @usageCountsCount@ is not @0@, and @pUsageCounts@ is not @NULL@,
+--     @pUsageCounts@ /must/ be a valid pointer to an array of
+--     @usageCountsCount@ 'MicromapUsageEXT' structures
+--
+-- -   #VUID-VkMicromapBuildInfoEXT-ppUsageCounts-parameter# If
+--     @usageCountsCount@ is not @0@, and @ppUsageCounts@ is not @NULL@,
+--     @ppUsageCounts@ /must/ be a valid pointer to an array of
+--     @usageCountsCount@ valid pointers to 'MicromapUsageEXT' structures
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_opacity_micromap VK_EXT_opacity_micromap>,
+-- 'BuildMicromapFlagsEXT', 'BuildMicromapModeEXT',
+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.DeviceOrHostAddressConstKHR',
+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.DeviceOrHostAddressKHR',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
+-- 'Vulkan.Extensions.Handles.MicromapEXT', 'MicromapTypeEXT',
+-- 'MicromapUsageEXT', 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'buildMicromapsEXT', 'cmdBuildMicromapsEXT', 'getMicromapBuildSizesEXT'
+data MicromapBuildInfoEXT = MicromapBuildInfoEXT
+  { -- | @type@ is a 'MicromapTypeEXT' value specifying the type of micromap
+    -- being built.
+    type' :: MicromapTypeEXT
+  , -- | @flags@ is a bitmask of 'BuildMicromapFlagBitsEXT' specifying additional
+    -- parameters of the micromap.
+    flags :: BuildMicromapFlagsEXT
+  , -- | @mode@ is a 'BuildMicromapModeEXT' value specifying the type of
+    -- operation to perform.
+    mode :: BuildMicromapModeEXT
+  , -- | @dstMicromap@ is a pointer to the target micromap for the build.
+    dstMicromap :: MicromapEXT
+  , -- | @pUsageCounts@ is a pointer to an array of 'MicromapUsageEXT'
+    -- structures.
+    usageCounts :: Vector MicromapUsageEXT
+  , -- | @data@ is the device or host address of memory which contains the data
+    -- for the micromap.
+    data' :: DeviceOrHostAddressConstKHR
+  , -- | @scratchData@ is the device or host address of memory that will be used
+    -- as scratch memory for the build.
+    scratchData :: DeviceOrHostAddressKHR
+  , -- | @triangleArray@ is the device or host address of memory containing the
+    -- 'MicromapTriangleEXT' data
+    triangleArray :: DeviceOrHostAddressConstKHR
+  , -- | @triangleArrayStride@ is the stride in bytes between each element of
+    -- @triangleArray@
+    triangleArrayStride :: DeviceSize
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (MicromapBuildInfoEXT)
+#endif
+deriving instance Show MicromapBuildInfoEXT
+
+instance ToCStruct MicromapBuildInfoEXT where
+  withCStruct x f = allocaBytes 96 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p MicromapBuildInfoEXT{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MICROMAP_BUILD_INFO_EXT)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr MicromapTypeEXT)) (type')
+    lift $ poke ((p `plusPtr` 20 :: Ptr BuildMicromapFlagsEXT)) (flags)
+    lift $ poke ((p `plusPtr` 24 :: Ptr BuildMicromapModeEXT)) (mode)
+    lift $ poke ((p `plusPtr` 32 :: Ptr MicromapEXT)) (dstMicromap)
+    lift $ poke ((p `plusPtr` 40 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (usageCounts)) :: Word32))
+    pPUsageCounts' <- ContT $ allocaBytes @MicromapUsageEXT ((Data.Vector.length (usageCounts)) * 12)
+    lift $ Data.Vector.imapM_ (\i e -> poke (pPUsageCounts' `plusPtr` (12 * (i)) :: Ptr MicromapUsageEXT) (e)) (usageCounts)
+    lift $ poke ((p `plusPtr` 48 :: Ptr (Ptr MicromapUsageEXT))) (pPUsageCounts')
+    lift $ poke ((p `plusPtr` 56 :: Ptr (Ptr (Ptr MicromapUsageEXT)))) (nullPtr)
+    ContT $ pokeCStruct ((p `plusPtr` 64 :: Ptr DeviceOrHostAddressConstKHR)) (data') . ($ ())
+    ContT $ pokeCStruct ((p `plusPtr` 72 :: Ptr DeviceOrHostAddressKHR)) (scratchData) . ($ ())
+    ContT $ pokeCStruct ((p `plusPtr` 80 :: Ptr DeviceOrHostAddressConstKHR)) (triangleArray) . ($ ())
+    lift $ poke ((p `plusPtr` 88 :: Ptr DeviceSize)) (triangleArrayStride)
+    lift $ f
+  cStructSize = 96
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MICROMAP_BUILD_INFO_EXT)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr MicromapTypeEXT)) (zero)
+    lift $ poke ((p `plusPtr` 24 :: Ptr BuildMicromapModeEXT)) (zero)
+    lift $ poke ((p `plusPtr` 56 :: Ptr (Ptr (Ptr MicromapUsageEXT)))) (nullPtr)
+    ContT $ pokeCStruct ((p `plusPtr` 64 :: Ptr DeviceOrHostAddressConstKHR)) (zero) . ($ ())
+    ContT $ pokeCStruct ((p `plusPtr` 72 :: Ptr DeviceOrHostAddressKHR)) (zero) . ($ ())
+    ContT $ pokeCStruct ((p `plusPtr` 80 :: Ptr DeviceOrHostAddressConstKHR)) (zero) . ($ ())
+    lift $ poke ((p `plusPtr` 88 :: Ptr DeviceSize)) (zero)
+    lift $ f
+
+instance Zero MicromapBuildInfoEXT where
+  zero = MicromapBuildInfoEXT
+           zero
+           zero
+           zero
+           zero
+           mempty
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkMicromapCreateInfoEXT - Structure specifying the parameters of a newly
+-- created micromap object
+--
+-- = Description
+--
+-- If @deviceAddress@ is zero, no specific address is requested.
+--
+-- If @deviceAddress@ is not zero, @deviceAddress@ /must/ be an address
+-- retrieved from an identically created micromap on the same
+-- implementation. The micromap /must/ also be placed on an identically
+-- created @buffer@ and at the same @offset@.
+--
+-- Applications /should/ avoid creating micromaps with application-provided
+-- addresses and implementation-provided addresses in the same process, to
+-- reduce the likelihood of
+-- 'Vulkan.Extensions.VK_KHR_buffer_device_address.ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR'
+-- errors.
+--
+-- The expected usage for this is that a trace capture\/replay tool will
+-- add the
+-- 'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT'
+-- flag and
+-- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT'
+-- to all buffers used as storage for a micromap with
+-- 'MICROMAP_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT' included in
+-- @createFlags@. This also means that the tool will need to add
+-- 'Vulkan.Core11.Enums.MemoryAllocateFlagBits.MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT'
+-- to memory allocations to allow the
+-- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT'
+-- flag to be set where the application may not have otherwise required it.
+-- During capture the tool will save the queried opaque device addresses in
+-- the trace. During replay, the buffers will be created specifying the
+-- original address so any address values stored in the trace data will
+-- remain valid.
+--
+-- Implementations are expected to separate such buffers in the GPU address
+-- space so normal allocations will avoid using these addresses.
+-- Applications and tools should avoid mixing application-provided and
+-- implementation-provided addresses for buffers created with
+-- 'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT',
+-- to avoid address space allocation conflicts.
+--
+-- If the micromap will be the target of a build operation, the required
+-- size for a micromap /can/ be queried with 'getMicromapBuildSizesEXT'.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkMicromapCreateInfoEXT-deviceAddress-07433# If
+--     @deviceAddress@ is not zero, @createFlags@ /must/ include
+--     'MICROMAP_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT'
+--
+-- -   #VUID-VkMicromapCreateInfoEXT-micromapCaptureReplay-11616# If
+--     @createFlags@ includes
+--     'MICROMAP_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT',
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-micromapCaptureReplayEXT ::micromapCaptureReplay>
+--     /must/ be 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-VkMicromapCreateInfoEXT-bufferDeviceAddressMultiDevice-11617#
+--     If @createFlags@ includes
+--     'MICROMAP_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT' and @device@
+--     was created with multiple physical devices, the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-bufferDeviceAddressMultiDevice bufferDeviceAddressMultiDevice>
+--     feature /must/ be enabled
+--
+-- -   #VUID-VkMicromapCreateInfoEXT-buffer-07435# @buffer@ /must/ have
+--     been created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_MICROMAP_STORAGE_BIT_EXT'
+--     usage flag set
+--
+-- -   #VUID-VkMicromapCreateInfoEXT-buffer-07436# @buffer@ /must/ not have
+--     been created with
+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_SPARSE_RESIDENCY_BIT'
+--
+-- -   #VUID-VkMicromapCreateInfoEXT-offset-07437# The sum of @offset@ and
+--     @size@ /must/ be less than or equal to the size of @buffer@
+--
+-- -   #VUID-VkMicromapCreateInfoEXT-offset-07438# @offset@ /must/ be a
+--     multiple of @256@ bytes
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkMicromapCreateInfoEXT-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MICROMAP_CREATE_INFO_EXT'
+--
+-- -   #VUID-VkMicromapCreateInfoEXT-pNext-pNext# @pNext@ /must/ be @NULL@
+--
+-- -   #VUID-VkMicromapCreateInfoEXT-createFlags-parameter# @createFlags@
+--     /must/ be a valid combination of 'MicromapCreateFlagBitsEXT' values
+--
+-- -   #VUID-VkMicromapCreateInfoEXT-buffer-parameter# @buffer@ /must/ be a
+--     valid 'Vulkan.Core10.Handles.Buffer' handle
+--
+-- -   #VUID-VkMicromapCreateInfoEXT-type-parameter# @type@ /must/ be a
+--     valid 'MicromapTypeEXT' value
+--
+-- -   #VUID-VkMicromapCreateInfoEXT-deviceAddress-parameter# If
+--     @deviceAddress@ is not @0@, @deviceAddress@ /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' value
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_opacity_micromap VK_EXT_opacity_micromap>,
+-- 'Vulkan.Core10.Handles.Buffer',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceAddress',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize', 'MicromapCreateFlagsEXT',
+-- 'MicromapTypeEXT', 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'createMicromapEXT'
+data MicromapCreateInfoEXT = MicromapCreateInfoEXT
+  { -- | @createFlags@ is a bitmask of 'MicromapCreateFlagBitsEXT' specifying
+    -- additional creation parameters of the micromap.
+    createFlags :: MicromapCreateFlagsEXT
+  , -- | @buffer@ is the buffer on which the micromap will be stored.
+    buffer :: Buffer
+  , -- | @offset@ is an offset in bytes from the base address of the buffer at
+    -- which the micromap will be stored, and /must/ be a multiple of @256@.
+    offset :: DeviceSize
+  , -- | @size@ is the size required for the micromap.
+    size :: DeviceSize
+  , -- | @type@ is a 'MicromapTypeEXT' value specifying the type of micromap that
+    -- will be created.
+    type' :: MicromapTypeEXT
+  , -- | @deviceAddress@ is the device address requested for the micromap if the
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-micromapCaptureReplayEXT ::micromapCaptureReplay>
+    -- feature is being used.
+    deviceAddress :: DeviceAddress
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (MicromapCreateInfoEXT)
+#endif
+deriving instance Show MicromapCreateInfoEXT
+
+instance ToCStruct MicromapCreateInfoEXT where
+  withCStruct x f = allocaBytes 64 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p MicromapCreateInfoEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MICROMAP_CREATE_INFO_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr MicromapCreateFlagsEXT)) (createFlags)
+    poke ((p `plusPtr` 24 :: Ptr Buffer)) (buffer)
+    poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (offset)
+    poke ((p `plusPtr` 40 :: Ptr DeviceSize)) (size)
+    poke ((p `plusPtr` 48 :: Ptr MicromapTypeEXT)) (type')
+    poke ((p `plusPtr` 56 :: Ptr DeviceAddress)) (deviceAddress)
+    f
+  cStructSize = 64
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MICROMAP_CREATE_INFO_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 24 :: Ptr Buffer)) (zero)
+    poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (zero)
+    poke ((p `plusPtr` 40 :: Ptr DeviceSize)) (zero)
+    poke ((p `plusPtr` 48 :: Ptr MicromapTypeEXT)) (zero)
+    f
+
+instance FromCStruct MicromapCreateInfoEXT where
+  peekCStruct p = do
+    createFlags <- peek @MicromapCreateFlagsEXT ((p `plusPtr` 16 :: Ptr MicromapCreateFlagsEXT))
+    buffer <- peek @Buffer ((p `plusPtr` 24 :: Ptr Buffer))
+    offset <- peek @DeviceSize ((p `plusPtr` 32 :: Ptr DeviceSize))
+    size <- peek @DeviceSize ((p `plusPtr` 40 :: Ptr DeviceSize))
+    type' <- peek @MicromapTypeEXT ((p `plusPtr` 48 :: Ptr MicromapTypeEXT))
+    deviceAddress <- peek @DeviceAddress ((p `plusPtr` 56 :: Ptr DeviceAddress))
+    pure $ MicromapCreateInfoEXT
+             createFlags buffer offset size type' deviceAddress
+
+instance Storable MicromapCreateInfoEXT where
+  sizeOf ~_ = 64
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero MicromapCreateInfoEXT where
+  zero = MicromapCreateInfoEXT
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkMicromapVersionInfoEXT - Micromap version information
+--
+-- = Description
+--
+-- @pVersionData@ is a /pointer/ to an array of
+-- 2×'Vulkan.Core10.APIConstants.UUID_SIZE' @uint8_t@ values instead of two
+-- 'Vulkan.Core10.APIConstants.UUID_SIZE' arrays as the expected use case
+-- for this member is to be pointed at the header of a previously
+-- serialized micromap that is loaded in memory. Using arrays would
+-- necessitate extra memory copies of the UUIDs.
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_opacity_micromap VK_EXT_opacity_micromap>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'getDeviceMicromapCompatibilityEXT'
+data MicromapVersionInfoEXT = MicromapVersionInfoEXT
+  { -- | @pVersionData@ is a pointer to the version header of a micromap as
+    -- defined in 'cmdCopyMicromapToMemoryEXT'
+    --
+    -- #VUID-VkMicromapVersionInfoEXT-pVersionData-parameter# @pVersionData@
+    -- /must/ be a valid pointer to an array of
+    -- \(2 \times \mathtt{VK\_UUID\_SIZE}\) @uint8_t@ values
+    versionData :: ByteString }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (MicromapVersionInfoEXT)
+#endif
+deriving instance Show MicromapVersionInfoEXT
+
+instance ToCStruct MicromapVersionInfoEXT where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p MicromapVersionInfoEXT{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MICROMAP_VERSION_INFO_EXT)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ unless (Data.ByteString.length (versionData) == 2 * UUID_SIZE) $
+      throwIO $ IOError Nothing InvalidArgument "" "VkMicromapVersionInfoEXT::versionData must be 2*VK_UUID_SIZE bytes" Nothing Nothing
+    versionData' <- fmap (castPtr @CChar @Word8) . ContT $ unsafeUseAsCString (versionData)
+    lift $ poke ((p `plusPtr` 16 :: Ptr (Ptr Word8))) versionData'
+    lift $ f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MICROMAP_VERSION_INFO_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    f
+
+instance FromCStruct MicromapVersionInfoEXT where
+  peekCStruct p = do
+    versionData <- peek @(Ptr Word8) ((p `plusPtr` 16 :: Ptr (Ptr Word8)))
+    versionData' <- packCStringLen ( castPtr @Word8 @CChar versionData
+                                   , 2 * UUID_SIZE )
+    pure $ MicromapVersionInfoEXT
+             versionData'
+
+instance Zero MicromapVersionInfoEXT where
+  zero = MicromapVersionInfoEXT
+           mempty
+
+
+-- | VkCopyMicromapInfoEXT - Parameters for copying a micromap
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkCopyMicromapInfoEXT-mode-07531# @mode@ /must/ be
+--     'COPY_MICROMAP_MODE_COMPACT_EXT' or 'COPY_MICROMAP_MODE_CLONE_EXT'
+--
+-- -   #VUID-VkCopyMicromapInfoEXT-mode-07533# If @mode@ is
+--     'COPY_MICROMAP_MODE_COMPACT_EXT', @src@ /must/ have been constructed
+--     with 'BUILD_MICROMAP_ALLOW_COMPACTION_BIT_EXT' in the build
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkCopyMicromapInfoEXT-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_MICROMAP_INFO_EXT'
+--
+-- -   #VUID-VkCopyMicromapInfoEXT-pNext-pNext# @pNext@ /must/ be @NULL@
+--
+-- -   #VUID-VkCopyMicromapInfoEXT-src-parameter# @src@ /must/ be a valid
+--     'Vulkan.Extensions.Handles.MicromapEXT' handle
+--
+-- -   #VUID-VkCopyMicromapInfoEXT-dst-parameter# @dst@ /must/ be a valid
+--     'Vulkan.Extensions.Handles.MicromapEXT' handle
+--
+-- -   #VUID-VkCopyMicromapInfoEXT-commonparent# Both of @dst@, and @src@
+--     /must/ have been created, allocated, or retrieved from the same
+--     'Vulkan.Core10.Handles.Device'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_opacity_micromap VK_EXT_opacity_micromap>,
+-- 'CopyMicromapModeEXT', 'Vulkan.Extensions.Handles.MicromapEXT',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType', 'cmdCopyMicromapEXT',
+-- 'copyMicromapEXT'
+data CopyMicromapInfoEXT = CopyMicromapInfoEXT
+  { -- | @src@ is the source micromap for the copy.
+    src :: MicromapEXT
+  , -- | @dst@ is the target micromap for the copy.
+    dst :: MicromapEXT
+  , -- | @mode@ is a 'CopyMicromapModeEXT' value specifying additional operations
+    -- to perform during the copy.
+    mode :: CopyMicromapModeEXT
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (CopyMicromapInfoEXT)
+#endif
+deriving instance Show CopyMicromapInfoEXT
+
+instance ToCStruct CopyMicromapInfoEXT where
+  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p CopyMicromapInfoEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_MICROMAP_INFO_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr MicromapEXT)) (src)
+    poke ((p `plusPtr` 24 :: Ptr MicromapEXT)) (dst)
+    poke ((p `plusPtr` 32 :: Ptr CopyMicromapModeEXT)) (mode)
+    f
+  cStructSize = 40
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_MICROMAP_INFO_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr MicromapEXT)) (zero)
+    poke ((p `plusPtr` 24 :: Ptr MicromapEXT)) (zero)
+    poke ((p `plusPtr` 32 :: Ptr CopyMicromapModeEXT)) (zero)
+    f
+
+instance FromCStruct CopyMicromapInfoEXT where
+  peekCStruct p = do
+    src <- peek @MicromapEXT ((p `plusPtr` 16 :: Ptr MicromapEXT))
+    dst <- peek @MicromapEXT ((p `plusPtr` 24 :: Ptr MicromapEXT))
+    mode <- peek @CopyMicromapModeEXT ((p `plusPtr` 32 :: Ptr CopyMicromapModeEXT))
+    pure $ CopyMicromapInfoEXT
+             src dst mode
+
+instance Storable CopyMicromapInfoEXT where
+  sizeOf ~_ = 40
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero CopyMicromapInfoEXT where
+  zero = CopyMicromapInfoEXT
+           zero
+           zero
+           zero
+
+
+-- | VkCopyMicromapToMemoryInfoEXT - Parameters for serializing a micromap
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkCopyMicromapToMemoryInfoEXT-src-07540# The source micromap
+--     @src@ /must/ have been constructed prior to the execution of this
+--     command
+--
+-- -   #VUID-VkCopyMicromapToMemoryInfoEXT-dst-07541# The memory pointed to
+--     by @dst@ /must/ be at least as large as the serialization size of
+--     @src@, as reported by 'writeMicromapsPropertiesEXT' or
+--     'cmdWriteMicromapsPropertiesEXT' with a query type of
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_MICROMAP_SERIALIZATION_SIZE_EXT'
+--
+-- -   #VUID-VkCopyMicromapToMemoryInfoEXT-mode-07542# @mode@ /must/ be
+--     'COPY_MICROMAP_MODE_SERIALIZE_EXT'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkCopyMicromapToMemoryInfoEXT-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_MICROMAP_TO_MEMORY_INFO_EXT'
+--
+-- -   #VUID-VkCopyMicromapToMemoryInfoEXT-pNext-pNext# @pNext@ /must/ be
+--     @NULL@
+--
+-- -   #VUID-VkCopyMicromapToMemoryInfoEXT-src-parameter# @src@ /must/ be a
+--     valid 'Vulkan.Extensions.Handles.MicromapEXT' handle
+--
+-- -   #VUID-VkCopyMicromapToMemoryInfoEXT-mode-parameter# @mode@ /must/ be
+--     a valid 'CopyMicromapModeEXT' value
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_opacity_micromap VK_EXT_opacity_micromap>,
+-- 'CopyMicromapModeEXT',
+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.DeviceOrHostAddressKHR',
+-- 'Vulkan.Extensions.Handles.MicromapEXT',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'cmdCopyMicromapToMemoryEXT', 'copyMicromapToMemoryEXT'
+data CopyMicromapToMemoryInfoEXT = CopyMicromapToMemoryInfoEXT
+  { -- | @src@ is the source micromap for the copy
+    src :: MicromapEXT
+  , -- | @dst@ is the device or host address of memory which is the target for
+    -- the copy
+    dst :: DeviceOrHostAddressKHR
+  , -- | @mode@ is a 'CopyMicromapModeEXT' value specifying additional operations
+    -- to perform during the copy.
+    mode :: CopyMicromapModeEXT
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (CopyMicromapToMemoryInfoEXT)
+#endif
+deriving instance Show CopyMicromapToMemoryInfoEXT
+
+instance ToCStruct CopyMicromapToMemoryInfoEXT where
+  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p CopyMicromapToMemoryInfoEXT{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_MICROMAP_TO_MEMORY_INFO_EXT)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr MicromapEXT)) (src)
+    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr DeviceOrHostAddressKHR)) (dst) . ($ ())
+    lift $ poke ((p `plusPtr` 32 :: Ptr CopyMicromapModeEXT)) (mode)
+    lift $ f
+  cStructSize = 40
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_MICROMAP_TO_MEMORY_INFO_EXT)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr MicromapEXT)) (zero)
+    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr DeviceOrHostAddressKHR)) (zero) . ($ ())
+    lift $ poke ((p `plusPtr` 32 :: Ptr CopyMicromapModeEXT)) (zero)
+    lift $ f
+
+instance Zero CopyMicromapToMemoryInfoEXT where
+  zero = CopyMicromapToMemoryInfoEXT
+           zero
+           zero
+           zero
+
+
+-- | VkCopyMemoryToMicromapInfoEXT - Parameters for deserializing a micromap
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkCopyMemoryToMicromapInfoEXT-src-07547# The source memory
+--     pointed to by @src@ /must/ contain data previously serialized using
+--     'cmdCopyMicromapToMemoryEXT'
+--
+-- -   #VUID-VkCopyMemoryToMicromapInfoEXT-mode-07548# @mode@ /must/ be
+--     'COPY_MICROMAP_MODE_DESERIALIZE_EXT'
+--
+-- -   #VUID-VkCopyMemoryToMicromapInfoEXT-src-07549# The data in @src@
+--     /must/ have a format compatible with the destination physical device
+--     as returned by 'getDeviceMicromapCompatibilityEXT'
+--
+-- -   #VUID-VkCopyMemoryToMicromapInfoEXT-dst-07550# @dst@ /must/ have
+--     been created with a @size@ greater than or equal to that used to
+--     serialize the data in @src@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkCopyMemoryToMicromapInfoEXT-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_MEMORY_TO_MICROMAP_INFO_EXT'
+--
+-- -   #VUID-VkCopyMemoryToMicromapInfoEXT-pNext-pNext# @pNext@ /must/ be
+--     @NULL@
+--
+-- -   #VUID-VkCopyMemoryToMicromapInfoEXT-dst-parameter# @dst@ /must/ be a
+--     valid 'Vulkan.Extensions.Handles.MicromapEXT' handle
+--
+-- -   #VUID-VkCopyMemoryToMicromapInfoEXT-mode-parameter# @mode@ /must/ be
+--     a valid 'CopyMicromapModeEXT' value
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_opacity_micromap VK_EXT_opacity_micromap>,
+-- 'CopyMicromapModeEXT',
+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.DeviceOrHostAddressConstKHR',
+-- 'Vulkan.Extensions.Handles.MicromapEXT',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'cmdCopyMemoryToMicromapEXT', 'copyMemoryToMicromapEXT'
+data CopyMemoryToMicromapInfoEXT = CopyMemoryToMicromapInfoEXT
+  { -- | @src@ is the device or host address of memory containing the source data
+    -- for the copy.
+    src :: DeviceOrHostAddressConstKHR
+  , -- | @dst@ is the target micromap for the copy.
+    dst :: MicromapEXT
+  , -- | @mode@ is a 'CopyMicromapModeEXT' value specifying additional operations
+    -- to perform during the copy.
+    mode :: CopyMicromapModeEXT
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (CopyMemoryToMicromapInfoEXT)
+#endif
+deriving instance Show CopyMemoryToMicromapInfoEXT
+
+instance ToCStruct CopyMemoryToMicromapInfoEXT where
+  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p CopyMemoryToMicromapInfoEXT{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_MEMORY_TO_MICROMAP_INFO_EXT)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr DeviceOrHostAddressConstKHR)) (src) . ($ ())
+    lift $ poke ((p `plusPtr` 24 :: Ptr MicromapEXT)) (dst)
+    lift $ poke ((p `plusPtr` 32 :: Ptr CopyMicromapModeEXT)) (mode)
+    lift $ f
+  cStructSize = 40
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_MEMORY_TO_MICROMAP_INFO_EXT)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr DeviceOrHostAddressConstKHR)) (zero) . ($ ())
+    lift $ poke ((p `plusPtr` 24 :: Ptr MicromapEXT)) (zero)
+    lift $ poke ((p `plusPtr` 32 :: Ptr CopyMicromapModeEXT)) (zero)
+    lift $ f
+
+instance Zero CopyMemoryToMicromapInfoEXT where
+  zero = CopyMemoryToMicromapInfoEXT
+           zero
+           zero
+           zero
+
+
+-- | VkMicromapBuildSizesInfoEXT - Structure specifying build sizes for a
+-- micromap
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_opacity_micromap VK_EXT_opacity_micromap>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'getMicromapBuildSizesEXT'
+data MicromapBuildSizesInfoEXT = MicromapBuildSizesInfoEXT
+  { -- | @micromapSize@ is the size in bytes required in a
+    -- 'Vulkan.Extensions.Handles.MicromapEXT' for a build or update operation.
+    micromapSize :: DeviceSize
+  , -- | @buildScratchSize@ is the size in bytes required in a scratch buffer for
+    -- a build operation.
+    buildScratchSize :: DeviceSize
+  , -- | @discardable@ indicates whether or not the micromap object may be
+    -- destroyed after an acceleration structure build or update. A false value
+    -- means that acceleration structures built with this micromap /may/
+    -- contain references to the data contained therein, and the application
+    -- /must/ not destroy the micromap until ray traversal has concluded. A
+    -- true value means that the information in the micromap will be copied by
+    -- value into the acceleration structure, and the micromap /can/ be
+    -- destroyed after the acceleration structure build concludes.
+    discardable :: Bool
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (MicromapBuildSizesInfoEXT)
+#endif
+deriving instance Show MicromapBuildSizesInfoEXT
+
+instance ToCStruct MicromapBuildSizesInfoEXT where
+  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p MicromapBuildSizesInfoEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MICROMAP_BUILD_SIZES_INFO_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (micromapSize)
+    poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (buildScratchSize)
+    poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (discardable))
+    f
+  cStructSize = 40
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MICROMAP_BUILD_SIZES_INFO_EXT)
+    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 Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct MicromapBuildSizesInfoEXT where
+  peekCStruct p = do
+    micromapSize <- peek @DeviceSize ((p `plusPtr` 16 :: Ptr DeviceSize))
+    buildScratchSize <- peek @DeviceSize ((p `plusPtr` 24 :: Ptr DeviceSize))
+    discardable <- peek @Bool32 ((p `plusPtr` 32 :: Ptr Bool32))
+    pure $ MicromapBuildSizesInfoEXT
+             micromapSize buildScratchSize (bool32ToBool discardable)
+
+instance Storable MicromapBuildSizesInfoEXT where
+  sizeOf ~_ = 40
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero MicromapBuildSizesInfoEXT where
+  zero = MicromapBuildSizesInfoEXT
+           zero
+           zero
+           zero
+
+
+-- | VkMicromapUsageEXT - Structure specifying the usage information used to
+-- build a micromap
+--
+-- = Description
+--
+-- The @format@ is interpreted based on the @type@ of the micromap using
+-- it.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_opacity_micromap VK_EXT_opacity_micromap>,
+-- 'Vulkan.Extensions.VK_NV_displacement_micromap.AccelerationStructureTrianglesDisplacementMicromapNV',
+-- 'AccelerationStructureTrianglesOpacityMicromapEXT',
+-- 'MicromapBuildInfoEXT'
+data MicromapUsageEXT = MicromapUsageEXT
+  { -- | @count@ is the number of triangles in the usage format defined by the
+    -- @subdivisionLevel@ and @format@ below in the micromap
+    count :: Word32
+  , -- | @subdivisionLevel@ is the subdivision level of this usage format
+    subdivisionLevel :: Word32
+  , -- | @format@ is the format of this usage format
+    format :: Word32
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (MicromapUsageEXT)
+#endif
+deriving instance Show MicromapUsageEXT
+
+instance ToCStruct MicromapUsageEXT where
+  withCStruct x f = allocaBytes 12 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p MicromapUsageEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr Word32)) (count)
+    poke ((p `plusPtr` 4 :: Ptr Word32)) (subdivisionLevel)
+    poke ((p `plusPtr` 8 :: Ptr Word32)) (format)
+    f
+  cStructSize = 12
+  cStructAlignment = 4
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct MicromapUsageEXT where
+  peekCStruct p = do
+    count <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))
+    subdivisionLevel <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))
+    format <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))
+    pure $ MicromapUsageEXT
+             count subdivisionLevel format
+
+instance Storable MicromapUsageEXT where
+  sizeOf ~_ = 12
+  alignment ~_ = 4
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero MicromapUsageEXT where
+  zero = MicromapUsageEXT
+           zero
+           zero
+           zero
+
+
+-- | VkPhysicalDeviceOpacityMicromapFeaturesEXT - Structure describing the
+-- ray tracing opacity micromap features that can be supported by an
+-- implementation
+--
+-- = Members
+--
+-- This structure describes the following feature:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceOpacityMicromapFeaturesEXT' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceOpacityMicromapFeaturesEXT', it /must/ add an instance of
+-- the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_opacity_micromap VK_EXT_opacity_micromap>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceOpacityMicromapFeaturesEXT = PhysicalDeviceOpacityMicromapFeaturesEXT
+  { -- | #features-micromapEXT# @micromap@ indicates whether the implementation
+    -- supports the micromap array feature.
+    micromap :: Bool
+  , -- | #features-micromapCaptureReplayEXT# @micromapCaptureReplay@ indicates
+    -- whether the implementation supports capture and replay of addresses for
+    -- micromap arrays.
+    micromapCaptureReplay :: Bool
+  , -- | #features-micromapHostCommandsEXT# @micromapHostCommands@ indicates
+    -- whether the implementation supports host side micromap array commands.
+    micromapHostCommands :: Bool
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceOpacityMicromapFeaturesEXT)
+#endif
+deriving instance Show PhysicalDeviceOpacityMicromapFeaturesEXT
+
+instance ToCStruct PhysicalDeviceOpacityMicromapFeaturesEXT where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceOpacityMicromapFeaturesEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (micromap))
+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (micromapCaptureReplay))
+    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (micromapHostCommands))
+    f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceOpacityMicromapFeaturesEXT where
+  peekCStruct p = do
+    micromap <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    micromapCaptureReplay <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
+    micromapHostCommands <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))
+    pure $ PhysicalDeviceOpacityMicromapFeaturesEXT
+             (bool32ToBool micromap)
+             (bool32ToBool micromapCaptureReplay)
+             (bool32ToBool micromapHostCommands)
+
+instance Storable PhysicalDeviceOpacityMicromapFeaturesEXT where
+  sizeOf ~_ = 32
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceOpacityMicromapFeaturesEXT where
+  zero = PhysicalDeviceOpacityMicromapFeaturesEXT
+           zero
+           zero
+           zero
+
+
+-- | VkPhysicalDeviceOpacityMicromapPropertiesEXT - Structure describing the
+-- opacity micromap properties of a physical device
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceOpacityMicromapPropertiesEXT' 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.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_opacity_micromap VK_EXT_opacity_micromap>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceOpacityMicromapPropertiesEXT = PhysicalDeviceOpacityMicromapPropertiesEXT
+  { -- | #limits-maxOpacity2StateSubdivisionLevelEXT#
+    -- @maxOpacity2StateSubdivisionLevel@ is the maximum allowed
+    -- @subdivisionLevel@ when @format@ is
+    -- 'Vulkan.Extensions.VK_KHR_opacity_micromap.OPACITY_MICROMAP_FORMAT_2_STATE_KHR'
+    maxOpacity2StateSubdivisionLevel :: Word32
+  , -- | #limits-maxOpacity4StateSubdivisionLevelEXT#
+    -- @maxOpacity4StateSubdivisionLevel@ is the maximum allowed
+    -- @subdivisionLevel@ when @format@ is
+    -- 'Vulkan.Extensions.VK_KHR_opacity_micromap.OPACITY_MICROMAP_FORMAT_4_STATE_KHR'
+    maxOpacity4StateSubdivisionLevel :: Word32
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceOpacityMicromapPropertiesEXT)
+#endif
+deriving instance Show PhysicalDeviceOpacityMicromapPropertiesEXT
+
+instance ToCStruct PhysicalDeviceOpacityMicromapPropertiesEXT where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceOpacityMicromapPropertiesEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_PROPERTIES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (maxOpacity2StateSubdivisionLevel)
+    poke ((p `plusPtr` 20 :: Ptr Word32)) (maxOpacity4StateSubdivisionLevel)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_PROPERTIES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct PhysicalDeviceOpacityMicromapPropertiesEXT where
+  peekCStruct p = do
+    maxOpacity2StateSubdivisionLevel <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    maxOpacity4StateSubdivisionLevel <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
+    pure $ PhysicalDeviceOpacityMicromapPropertiesEXT
+             maxOpacity2StateSubdivisionLevel maxOpacity4StateSubdivisionLevel
+
+instance Storable PhysicalDeviceOpacityMicromapPropertiesEXT where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceOpacityMicromapPropertiesEXT where
+  zero = PhysicalDeviceOpacityMicromapPropertiesEXT
+           zero
+           zero
+
+
+-- | VkAccelerationStructureTrianglesOpacityMicromapEXT - Structure
+-- specifying an opacity micromap in a bottom-level acceleration structure
+--
+-- = Description
+--
+-- If 'AccelerationStructureTrianglesOpacityMicromapEXT' is included in the
+-- @pNext@ chain of a
+-- 'Vulkan.Extensions.VK_AMDX_dense_geometry_format.AccelerationStructureDenseGeometryFormatTrianglesDataAMDX'
+-- or
+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureGeometryTrianglesDataKHR'
+-- structure, that geometry will reference that micromap.
+--
+-- For each triangle in the geometry, the acceleration structure build
+-- fetches an index from @indexBuffer@ using @indexType@ and @indexStride@
+-- if present. If @indexType@ is
+-- 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR', then the index used
+-- is the index of the triangle in the geometry.
+--
+-- If that value is the unsigned cast of one of the values from
+-- 'OpacityMicromapSpecialIndexEXT' then that triangle behaves as described
+-- for that special value in
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#ray-opacity-micromap Ray Opacity Micromap>.
+--
+-- Otherwise that triangle uses the opacity micromap information from
+-- micromap at that index plus @baseTriangle@.
+--
+-- Only one of @pUsageCounts@ or @ppUsageCounts@ /can/ be a valid pointer,
+-- the other /must/ be @NULL@. The elements of the non-@NULL@ array
+-- describe the total count used to build this geometry. For a given
+-- @format@ and @subdivisionLevel@ the number of triangles in this geometry
+-- matching those values after indirection and special index handling
+-- /must/ be equal to the sum of matching @count@ provided.
+--
+-- If @micromap@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', then every
+-- value read from @indexBuffer@ /must/ be one of the values in
+-- 'OpacityMicromapSpecialIndexEXT'.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkAccelerationStructureTrianglesOpacityMicromapEXT-pUsageCounts-07335#
+--     Only one of @pUsageCounts@ or @ppUsageCounts@ /can/ be a valid
+--     pointer, the other /must/ be @NULL@
+--
+-- -   #VUID-VkAccelerationStructureTrianglesOpacityMicromapEXT-indexType-10719#
+--     @indexType@ /must/ be
+--     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT16',
+--     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT32', or
+--     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR'
+--
+-- -   #VUID-VkAccelerationStructureTrianglesOpacityMicromapEXT-indexType-10722#
+--     If @indexType@ is not
+--     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR', then
+--     @indexStride@ /must/ be a multiple of the size in bytes of
+--     @indexType@
+--
+-- -   #VUID-VkAccelerationStructureTrianglesOpacityMicromapEXT-indexType-10723#
+--     If @indexType@ is not
+--     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR', then
+--     @indexStride@ /must/ be less than or equal to 232-1
+--
+-- -   #VUID-VkAccelerationStructureTrianglesOpacityMicromapEXT-format-11679#
+--     If @micromap@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the
+--     @type@ used to construct @micromap@ is
+--     'MICROMAP_TYPE_OPACITY_MICROMAP_EXT', the @format@ member of each
+--     element of @pUsageCounts@ or @ppUsageCounts@ /must/ be a valid value
+--     from 'OpacityMicromapFormatEXT'
+--
+-- -   #VUID-VkAccelerationStructureTrianglesOpacityMicromapEXT-subdivisionLevel-11680#
+--     If @micromap@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the
+--     @type@ used to build @micromap@ is
+--     'MICROMAP_TYPE_OPACITY_MICROMAP_EXT', for each member of
+--     @pUsageCounts@ or @ppUsageCounts@ with @format@ equal to
+--     'OPACITY_MICROMAP_FORMAT_2_STATE_EXT', @subdivisionLevel@ /must/ be
+--     less than or equal to
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxOpacity2StateSubdivisionLevelEXT ::maxOpacity2StateSubdivisionLevel>
+--
+-- -   #VUID-VkAccelerationStructureTrianglesOpacityMicromapEXT-subdivisionLevel-11681#
+--     If @micromap@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the
+--     @type@ used to build @micromap@ is
+--     'MICROMAP_TYPE_OPACITY_MICROMAP_EXT', for each member of
+--     @pUsageCounts@ or @ppUsageCounts@ with @format@ equal to
+--     'OPACITY_MICROMAP_FORMAT_4_STATE_EXT', @subdivisionLevel@ /must/ be
+--     less than or equal to
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxOpacity4StateSubdivisionLevelEXT ::maxOpacity4StateSubdivisionLevel>
+--
+-- -   #VUID-VkAccelerationStructureTrianglesOpacityMicromapEXT-format-11682#
+--     If @micromap@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the
+--     @type@ used to construct @micromap@ is
+--     'MICROMAP_TYPE_DISPLACEMENT_MICROMAP_NV', the @format@ member of
+--     each element of @pUsageCounts@ or @ppUsageCounts@ /must/ be a valid
+--     value from
+--     'Vulkan.Extensions.VK_NV_displacement_micromap.DisplacementMicromapFormatNV'
+--
+-- -   #VUID-VkAccelerationStructureTrianglesOpacityMicromapEXT-subdivisionLevel-11683#
+--     If @micromap@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the
+--     @type@ used to construct @micromap@ is
+--     'MICROMAP_TYPE_DISPLACEMENT_MICROMAP_NV', for each member of
+--     @pUsageCounts@ or @ppUsageCounts@ @subdivisionLevel@ /must/ be less
+--     than or equal to
+--     'Vulkan.Extensions.VK_NV_displacement_micromap.PhysicalDeviceDisplacementMicromapPropertiesNV'::@maxDisplacementMicromapSubdivisionLevel@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkAccelerationStructureTrianglesOpacityMicromapEXT-sType-sType#
+--     @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT'
+--
+-- -   #VUID-VkAccelerationStructureTrianglesOpacityMicromapEXT-indexType-parameter#
+--     @indexType@ /must/ be a valid
+--     'Vulkan.Core10.Enums.IndexType.IndexType' value
+--
+-- -   #VUID-VkAccelerationStructureTrianglesOpacityMicromapEXT-pUsageCounts-parameter#
+--     If @usageCountsCount@ is not @0@, and @pUsageCounts@ is not @NULL@,
+--     @pUsageCounts@ /must/ be a valid pointer to an array of
+--     @usageCountsCount@ 'MicromapUsageEXT' structures
+--
+-- -   #VUID-VkAccelerationStructureTrianglesOpacityMicromapEXT-ppUsageCounts-parameter#
+--     If @usageCountsCount@ is not @0@, and @ppUsageCounts@ is not @NULL@,
+--     @ppUsageCounts@ /must/ be a valid pointer to an array of
+--     @usageCountsCount@ valid pointers to 'MicromapUsageEXT' structures
+--
+-- -   #VUID-VkAccelerationStructureTrianglesOpacityMicromapEXT-micromap-parameter#
+--     If @micromap@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
+--     @micromap@ /must/ be a valid 'Vulkan.Extensions.Handles.MicromapEXT'
+--     handle
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Extensions.VK_AMDX_dense_geometry_format.AccelerationStructureDenseGeometryFormatTrianglesDataAMDX'
+--
+--     -   'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureGeometryTrianglesDataKHR'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_opacity_micromap VK_EXT_opacity_micromap>,
+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.DeviceOrHostAddressConstKHR',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
+-- 'Vulkan.Core10.Enums.IndexType.IndexType',
+-- 'Vulkan.Extensions.Handles.MicromapEXT', 'MicromapUsageEXT',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data AccelerationStructureTrianglesOpacityMicromapEXT = AccelerationStructureTrianglesOpacityMicromapEXT
+  { -- | @indexType@ is the type of triangle indices used when indexing this
+    -- micromap.
+    indexType :: IndexType
+  , -- | @indexBuffer@ is a device or host address of memory containing the
+    -- triangle indices. When @indexType@ is
+    -- 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR' it /must/ be @NULL@.
+    indexBuffer :: DeviceOrHostAddressConstKHR
+  , -- | @indexStride@ is the byte stride between triangle indices.
+    indexStride :: DeviceSize
+  , -- | @baseTriangle@ is the base value added to the non-negative triangle
+    -- indices.
+    baseTriangle :: Word32
+  , -- | @pUsageCounts@ is a pointer to an array of 'MicromapUsageEXT'
+    -- structures.
+    usageCounts :: Vector MicromapUsageEXT
+  , -- | @micromap@ is the handle to the micromap object to include in this
+    -- geometry.
+    micromap :: MicromapEXT
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (AccelerationStructureTrianglesOpacityMicromapEXT)
+#endif
+deriving instance Show AccelerationStructureTrianglesOpacityMicromapEXT
+
+instance ToCStruct AccelerationStructureTrianglesOpacityMicromapEXT where
+  withCStruct x f = allocaBytes 72 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p AccelerationStructureTrianglesOpacityMicromapEXT{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr IndexType)) (indexType)
+    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr DeviceOrHostAddressConstKHR)) (indexBuffer) . ($ ())
+    lift $ poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (indexStride)
+    lift $ poke ((p `plusPtr` 40 :: Ptr Word32)) (baseTriangle)
+    lift $ poke ((p `plusPtr` 44 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (usageCounts)) :: Word32))
+    pPUsageCounts' <- ContT $ allocaBytes @MicromapUsageEXT ((Data.Vector.length (usageCounts)) * 12)
+    lift $ Data.Vector.imapM_ (\i e -> poke (pPUsageCounts' `plusPtr` (12 * (i)) :: Ptr MicromapUsageEXT) (e)) (usageCounts)
+    lift $ poke ((p `plusPtr` 48 :: Ptr (Ptr MicromapUsageEXT))) (pPUsageCounts')
+    lift $ poke ((p `plusPtr` 56 :: Ptr (Ptr (Ptr MicromapUsageEXT)))) (nullPtr)
+    lift $ poke ((p `plusPtr` 64 :: Ptr MicromapEXT)) (micromap)
+    lift $ f
+  cStructSize = 72
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr IndexType)) (zero)
+    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr DeviceOrHostAddressConstKHR)) (zero) . ($ ())
+    lift $ poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (zero)
+    lift $ poke ((p `plusPtr` 40 :: Ptr Word32)) (zero)
+    lift $ poke ((p `plusPtr` 56 :: Ptr (Ptr (Ptr MicromapUsageEXT)))) (nullPtr)
+    lift $ f
+
+instance Zero AccelerationStructureTrianglesOpacityMicromapEXT where
+  zero = AccelerationStructureTrianglesOpacityMicromapEXT
+           zero
+           zero
+           zero
+           zero
+           mempty
+           zero
+
+
+-- | VkMicromapTypeEXT - Type of micromap
+--
+-- = Description
+--
+-- -   'MICROMAP_TYPE_OPACITY_MICROMAP_EXT' is a micromap containing data
+--     to control the opacity of a triangle.
+--
+-- -   'MICROMAP_TYPE_DISPLACEMENT_MICROMAP_NV' is a micromap containing
+--     data to control the displacement of subtriangles within a triangle.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_opacity_micromap VK_EXT_opacity_micromap>,
+-- 'MicromapBuildInfoEXT', 'MicromapCreateInfoEXT'
+newtype MicromapTypeEXT = MicromapTypeEXT Int32
+  deriving newtype (Eq, Ord, Storable, Zero)
+
+-- No documentation found for Nested "VkMicromapTypeEXT" "VK_MICROMAP_TYPE_OPACITY_MICROMAP_EXT"
+pattern MICROMAP_TYPE_OPACITY_MICROMAP_EXT = MicromapTypeEXT 0
+
+-- No documentation found for Nested "VkMicromapTypeEXT" "VK_MICROMAP_TYPE_DISPLACEMENT_MICROMAP_NV"
+pattern MICROMAP_TYPE_DISPLACEMENT_MICROMAP_NV = MicromapTypeEXT 1000397000
+
+{-# COMPLETE
+  MICROMAP_TYPE_OPACITY_MICROMAP_EXT
+  , MICROMAP_TYPE_DISPLACEMENT_MICROMAP_NV ::
+    MicromapTypeEXT
+  #-}
+
+conNameMicromapTypeEXT :: String
+conNameMicromapTypeEXT = "MicromapTypeEXT"
+
+enumPrefixMicromapTypeEXT :: String
+enumPrefixMicromapTypeEXT = "MICROMAP_TYPE_"
+
+showTableMicromapTypeEXT :: [(MicromapTypeEXT, String)]
+showTableMicromapTypeEXT =
+  [
+    ( MICROMAP_TYPE_OPACITY_MICROMAP_EXT
+    , "OPACITY_MICROMAP_EXT"
+    )
+  ,
+    ( MICROMAP_TYPE_DISPLACEMENT_MICROMAP_NV
+    , "DISPLACEMENT_MICROMAP_NV"
+    )
+  ]
+
+instance Show MicromapTypeEXT where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixMicromapTypeEXT
+      showTableMicromapTypeEXT
+      conNameMicromapTypeEXT
+      (\(MicromapTypeEXT x) -> x)
+      (showsPrec 11)
+
+instance Read MicromapTypeEXT where
+  readPrec =
+    enumReadPrec
+      enumPrefixMicromapTypeEXT
+      showTableMicromapTypeEXT
+      conNameMicromapTypeEXT
+      MicromapTypeEXT
+
+type BuildMicromapFlagsEXT = BuildMicromapFlagBitsEXT
+
+-- | VkBuildMicromapFlagBitsEXT - Bitmask specifying additional parameters
+-- for micromap builds
+--
+-- = Description
+--
+-- -   'BUILD_MICROMAP_PREFER_FAST_TRACE_BIT_EXT' specifies that the given
+--     micromap build /should/ prioritize trace performance over build
+--     time.
+--
+-- -   'BUILD_MICROMAP_PREFER_FAST_BUILD_BIT_EXT' specifies that the given
+--     micromap build /should/ prioritize build time over trace
+--     performance.
+--
+-- -   'BUILD_MICROMAP_ALLOW_COMPACTION_BIT_EXT' specifies that the
+--     micromap /can/ act as the source for a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#micromap-copying copy micromap command>
+--     with @mode@ of 'COPY_MICROMAP_MODE_COMPACT_EXT' to produce a
+--     compacted micromap.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_opacity_micromap VK_EXT_opacity_micromap>,
+-- 'BuildMicromapFlagsEXT'
+newtype BuildMicromapFlagBitsEXT = BuildMicromapFlagBitsEXT Flags
+  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
+
+-- No documentation found for Nested "VkBuildMicromapFlagBitsEXT" "VK_BUILD_MICROMAP_PREFER_FAST_TRACE_BIT_EXT"
+pattern BUILD_MICROMAP_PREFER_FAST_TRACE_BIT_EXT = BuildMicromapFlagBitsEXT 0x00000001
+
+-- No documentation found for Nested "VkBuildMicromapFlagBitsEXT" "VK_BUILD_MICROMAP_PREFER_FAST_BUILD_BIT_EXT"
+pattern BUILD_MICROMAP_PREFER_FAST_BUILD_BIT_EXT = BuildMicromapFlagBitsEXT 0x00000002
+
+-- No documentation found for Nested "VkBuildMicromapFlagBitsEXT" "VK_BUILD_MICROMAP_ALLOW_COMPACTION_BIT_EXT"
+pattern BUILD_MICROMAP_ALLOW_COMPACTION_BIT_EXT = BuildMicromapFlagBitsEXT 0x00000004
+
+conNameBuildMicromapFlagBitsEXT :: String
+conNameBuildMicromapFlagBitsEXT = "BuildMicromapFlagBitsEXT"
+
+enumPrefixBuildMicromapFlagBitsEXT :: String
+enumPrefixBuildMicromapFlagBitsEXT = "BUILD_MICROMAP_"
+
+showTableBuildMicromapFlagBitsEXT :: [(BuildMicromapFlagBitsEXT, String)]
+showTableBuildMicromapFlagBitsEXT =
+  [
+    ( BUILD_MICROMAP_PREFER_FAST_TRACE_BIT_EXT
+    , "PREFER_FAST_TRACE_BIT_EXT"
+    )
+  ,
+    ( BUILD_MICROMAP_PREFER_FAST_BUILD_BIT_EXT
+    , "PREFER_FAST_BUILD_BIT_EXT"
+    )
+  ,
+    ( BUILD_MICROMAP_ALLOW_COMPACTION_BIT_EXT
+    , "ALLOW_COMPACTION_BIT_EXT"
+    )
+  ]
+
+instance Show BuildMicromapFlagBitsEXT where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixBuildMicromapFlagBitsEXT
+      showTableBuildMicromapFlagBitsEXT
+      conNameBuildMicromapFlagBitsEXT
+      (\(BuildMicromapFlagBitsEXT x) -> x)
+      (\x -> showString "0x" . showHex x)
+
+instance Read BuildMicromapFlagBitsEXT where
+  readPrec =
+    enumReadPrec
+      enumPrefixBuildMicromapFlagBitsEXT
+      showTableBuildMicromapFlagBitsEXT
+      conNameBuildMicromapFlagBitsEXT
+      BuildMicromapFlagBitsEXT
+
+type MicromapCreateFlagsEXT = MicromapCreateFlagBitsEXT
+
+-- | VkMicromapCreateFlagBitsEXT - Bitmask specifying additional creation
+-- parameters for micromap
+--
+-- = Description
+--
+-- -   'MICROMAP_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT' specifies
+--     that the micromap’s address /can/ be saved and reused on a
+--     subsequent run.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_opacity_micromap VK_EXT_opacity_micromap>,
+-- 'MicromapCreateFlagsEXT'
+newtype MicromapCreateFlagBitsEXT = MicromapCreateFlagBitsEXT Flags
+  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
+
+-- No documentation found for Nested "VkMicromapCreateFlagBitsEXT" "VK_MICROMAP_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT"
+pattern MICROMAP_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = MicromapCreateFlagBitsEXT 0x00000001
+
+conNameMicromapCreateFlagBitsEXT :: String
+conNameMicromapCreateFlagBitsEXT = "MicromapCreateFlagBitsEXT"
+
+enumPrefixMicromapCreateFlagBitsEXT :: String
+enumPrefixMicromapCreateFlagBitsEXT = "MICROMAP_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT"
+
+showTableMicromapCreateFlagBitsEXT :: [(MicromapCreateFlagBitsEXT, String)]
+showTableMicromapCreateFlagBitsEXT =
+  [
+    ( MICROMAP_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT
+    , ""
+    )
+  ]
+
+instance Show MicromapCreateFlagBitsEXT where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixMicromapCreateFlagBitsEXT
+      showTableMicromapCreateFlagBitsEXT
+      conNameMicromapCreateFlagBitsEXT
+      (\(MicromapCreateFlagBitsEXT x) -> x)
+      (\x -> showString "0x" . showHex x)
+
+instance Read MicromapCreateFlagBitsEXT where
+  readPrec =
+    enumReadPrec
+      enumPrefixMicromapCreateFlagBitsEXT
+      showTableMicromapCreateFlagBitsEXT
+      conNameMicromapCreateFlagBitsEXT
+      MicromapCreateFlagBitsEXT
+
+-- | VkCopyMicromapModeEXT - Micromap copy mode
+--
+-- = Description
+--
+-- -   'COPY_MICROMAP_MODE_CLONE_EXT' creates a direct copy of the micromap
+--     specified in @src@ into the one specified by @dst@. The @dst@
+--     micromap /must/ have been created with the same parameters as @src@.
+--
+-- -   'COPY_MICROMAP_MODE_SERIALIZE_EXT' serializes the micromap to a
+--     semi-opaque format which can be reloaded on a compatible
+--     implementation.
+--
+-- -   'COPY_MICROMAP_MODE_DESERIALIZE_EXT' deserializes the semi-opaque
+--     serialization format in the buffer to the micromap.
+--
+-- -   'COPY_MICROMAP_MODE_COMPACT_EXT' creates a more compact version of a
+--     micromap @src@ into @dst@. The micromap @dst@ /must/ have been
+--     created with a size at least as large as that returned by
+--     'cmdWriteMicromapsPropertiesEXT' after the build of the micromap
+--     specified by @src@.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_opacity_micromap VK_EXT_opacity_micromap>,
+-- 'CopyMemoryToMicromapInfoEXT', 'CopyMicromapInfoEXT',
+-- 'CopyMicromapToMemoryInfoEXT'
+newtype CopyMicromapModeEXT = CopyMicromapModeEXT Int32
+  deriving newtype (Eq, Ord, Storable, Zero)
+
+-- No documentation found for Nested "VkCopyMicromapModeEXT" "VK_COPY_MICROMAP_MODE_CLONE_EXT"
+pattern COPY_MICROMAP_MODE_CLONE_EXT = CopyMicromapModeEXT 0
+
+-- No documentation found for Nested "VkCopyMicromapModeEXT" "VK_COPY_MICROMAP_MODE_SERIALIZE_EXT"
+pattern COPY_MICROMAP_MODE_SERIALIZE_EXT = CopyMicromapModeEXT 1
+
+-- No documentation found for Nested "VkCopyMicromapModeEXT" "VK_COPY_MICROMAP_MODE_DESERIALIZE_EXT"
+pattern COPY_MICROMAP_MODE_DESERIALIZE_EXT = CopyMicromapModeEXT 2
+
+-- No documentation found for Nested "VkCopyMicromapModeEXT" "VK_COPY_MICROMAP_MODE_COMPACT_EXT"
+pattern COPY_MICROMAP_MODE_COMPACT_EXT = CopyMicromapModeEXT 3
+
+{-# COMPLETE
+  COPY_MICROMAP_MODE_CLONE_EXT
+  , COPY_MICROMAP_MODE_SERIALIZE_EXT
+  , COPY_MICROMAP_MODE_DESERIALIZE_EXT
+  , COPY_MICROMAP_MODE_COMPACT_EXT ::
+    CopyMicromapModeEXT
+  #-}
+
+conNameCopyMicromapModeEXT :: String
+conNameCopyMicromapModeEXT = "CopyMicromapModeEXT"
+
+enumPrefixCopyMicromapModeEXT :: String
+enumPrefixCopyMicromapModeEXT = "COPY_MICROMAP_MODE_"
+
+showTableCopyMicromapModeEXT :: [(CopyMicromapModeEXT, String)]
+showTableCopyMicromapModeEXT =
+  [ (COPY_MICROMAP_MODE_CLONE_EXT, "CLONE_EXT")
+  ,
+    ( COPY_MICROMAP_MODE_SERIALIZE_EXT
+    , "SERIALIZE_EXT"
+    )
+  ,
+    ( COPY_MICROMAP_MODE_DESERIALIZE_EXT
+    , "DESERIALIZE_EXT"
+    )
+  ,
+    ( COPY_MICROMAP_MODE_COMPACT_EXT
+    , "COMPACT_EXT"
+    )
+  ]
+
+instance Show CopyMicromapModeEXT where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixCopyMicromapModeEXT
+      showTableCopyMicromapModeEXT
+      conNameCopyMicromapModeEXT
+      (\(CopyMicromapModeEXT x) -> x)
+      (showsPrec 11)
+
+instance Read CopyMicromapModeEXT where
+  readPrec =
+    enumReadPrec
+      enumPrefixCopyMicromapModeEXT
+      showTableCopyMicromapModeEXT
+      conNameCopyMicromapModeEXT
+      CopyMicromapModeEXT
+
+-- | VkBuildMicromapModeEXT - Enum specifying the type of build operation to
+-- perform
+--
+-- = Description
+--
+-- -   'BUILD_MICROMAP_MODE_BUILD_EXT' specifies that the destination
+--     micromap will be built using the specified data.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_opacity_micromap VK_EXT_opacity_micromap>,
+-- 'MicromapBuildInfoEXT'
+newtype BuildMicromapModeEXT = BuildMicromapModeEXT Int32
+  deriving newtype (Eq, Ord, Storable, Zero)
+
+-- No documentation found for Nested "VkBuildMicromapModeEXT" "VK_BUILD_MICROMAP_MODE_BUILD_EXT"
+pattern BUILD_MICROMAP_MODE_BUILD_EXT = BuildMicromapModeEXT 0
+
+{-# COMPLETE BUILD_MICROMAP_MODE_BUILD_EXT :: BuildMicromapModeEXT #-}
+
+conNameBuildMicromapModeEXT :: String
+conNameBuildMicromapModeEXT = "BuildMicromapModeEXT"
+
+enumPrefixBuildMicromapModeEXT :: String
+enumPrefixBuildMicromapModeEXT = "BUILD_MICROMAP_MODE_BUILD_EXT"
+
+showTableBuildMicromapModeEXT :: [(BuildMicromapModeEXT, String)]
+showTableBuildMicromapModeEXT = [(BUILD_MICROMAP_MODE_BUILD_EXT, "")]
+
+instance Show BuildMicromapModeEXT where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixBuildMicromapModeEXT
+      showTableBuildMicromapModeEXT
+      conNameBuildMicromapModeEXT
+      (\(BuildMicromapModeEXT x) -> x)
+      (showsPrec 11)
+
+instance Read BuildMicromapModeEXT where
+  readPrec =
+    enumReadPrec
+      enumPrefixBuildMicromapModeEXT
+      showTableBuildMicromapModeEXT
+      conNameBuildMicromapModeEXT
+      BuildMicromapModeEXT
+
+-- No documentation found for TopLevel "VkOpacityMicromapFormatEXT"
+type OpacityMicromapFormatEXT = OpacityMicromapFormatKHR
+
+
+-- No documentation found for TopLevel "VkOpacityMicromapSpecialIndexEXT"
+type OpacityMicromapSpecialIndexEXT = OpacityMicromapSpecialIndexKHR
+
+
+-- No documentation found for TopLevel "VkMicromapTriangleEXT"
+type MicromapTriangleEXT = MicromapTriangleKHR
+
 
 type EXT_OPACITY_MICROMAP_SPEC_VERSION = 2
 
diff --git a/src/Vulkan/Extensions/VK_EXT_opacity_micromap.hs-boot b/src/Vulkan/Extensions/VK_EXT_opacity_micromap.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_opacity_micromap.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_opacity_micromap.hs-boot
@@ -29,10 +29,22 @@
 --         
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3 Vulkan Version 1.3>
 --
+-- [__API Interactions__]
+--
+--     -   Interacts with VK_VERSION_1_4
+--
+--     -   Interacts with VK_KHR_maintenance5
+--
 -- [__SPIR-V Dependencies__]
 --
 --     -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/EXT/SPV_EXT_opacity_micromap.html SPV_EXT_opacity_micromap>
 --
+-- [__Deprecation State__]
+--
+--     -   /Promoted/ to
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_opacity_micromap VK_KHR_opacity_micromap>
+--         extension
+--
 -- [__Contact__]
 --
 --     -   Christoph Kubisch
@@ -83,7 +95,7 @@
 -- values. These opacity values can control if a ray hitting that
 -- subtriangle is treated as an opaque hit, complete miss, or possible hit,
 -- depending on the controls described in
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#ray-opacity-micromap Ray Opacity Micromap>.
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#ray-opacity-micromap Ray Opacity Micromap>.
 --
 -- This extension provides:
 --
@@ -152,7 +164,8 @@
 -- -   'MicromapVersionInfoEXT'
 --
 -- -   Extending
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureGeometryTrianglesDataKHR':
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureGeometryTrianglesDataKHR',
+--     'Vulkan.Extensions.VK_AMDX_dense_geometry_format.AccelerationStructureDenseGeometryFormatTrianglesDataAMDX':
 --
 --     -   'AccelerationStructureTrianglesOpacityMicromapEXT'
 --
@@ -211,27 +224,55 @@
 -- -   Extending
 --     'Vulkan.Extensions.VK_KHR_acceleration_structure.BuildAccelerationStructureFlagBitsKHR':
 --
---     -   'Vulkan.Extensions.VK_KHR_acceleration_structure.BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_EXT'
+--     -   'BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_BIT_EXT'
 --
---     -   'Vulkan.Extensions.VK_KHR_acceleration_structure.BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_EXT'
+--     -   'BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_EXT'
 --
---     -   'Vulkan.Extensions.VK_KHR_acceleration_structure.BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_EXT'
+--     -   'Vulkan.Extensions.VK_KHR_acceleration_structure.BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_BIT_EXT'
 --
+--     -   'BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_EXT'
+--
+--     -   'BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_BIT_EXT'
+--
+--     -   'BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_EXT'
+--
 -- -   Extending
 --     'Vulkan.Extensions.VK_KHR_acceleration_structure.GeometryInstanceFlagBitsKHR':
 --
---     -   'Vulkan.Extensions.VK_KHR_acceleration_structure.GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_EXT'
+--     -   'GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_BIT_EXT'
 --
---     -   'Vulkan.Extensions.VK_KHR_acceleration_structure.GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_EXT'
+--     -   'GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_EXT'
 --
+--     -   'GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_BIT_EXT'
+--
+--     -   'GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_EXT'
+--
 -- -   Extending 'Vulkan.Core10.Enums.ObjectType.ObjectType':
 --
 --     -   'Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_MICROMAP_EXT'
 --
 -- -   Extending
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.OpacityMicromapFormatKHR':
+--
+--     -   'OPACITY_MICROMAP_FORMAT_2_STATE_EXT'
+--
+--     -   'OPACITY_MICROMAP_FORMAT_4_STATE_EXT'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.OpacityMicromapSpecialIndexKHR':
+--
+--     -   'OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_OPAQUE_EXT'
+--
+--     -   'OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_TRANSPARENT_EXT'
+--
+--     -   'OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_OPAQUE_EXT'
+--
+--     -   'OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_TRANSPARENT_EXT'
+--
+-- -   Extending
 --     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits':
 --
---     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT'
+--     -   'PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT'
 --
 -- -   Extending
 --     'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlagBits2':
@@ -266,6 +307,32 @@
 --
 --     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_PROPERTIES_EXT'
 --
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance5 VK_KHR_maintenance5>
+-- or
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.4 Vulkan Version 1.4>
+-- is supported:
+--
+-- -   Extending
+--     'Vulkan.Core14.Enums.BufferUsageFlags2.BufferUsageFlagBits2':
+--
+--     -   'Vulkan.Core14.Enums.BufferUsageFlags2.BUFFER_USAGE_2_MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXT'
+--
+--     -   'Vulkan.Core14.Enums.BufferUsageFlags2.BUFFER_USAGE_2_MICROMAP_STORAGE_BIT_EXT'
+--
+-- -   Extending
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PipelineCreateFlagBits2':
+--
+--     -   'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT'
+--
+-- == Promotion to VK_KHR_opacity_micromap
+--
+-- Functionality in this extension is included in VK_KHR_opacity_micromap.
+-- The type, enum and command names are still aliases of the KHR
+-- functionality with some exceptions.
+--
+-- See the VK_KHR_opacity_micromap proposal for details on the differences.
+--
 -- == Reference Code
 --
 -- > uint32_t BarycentricsToSpaceFillingCurveIndex(float u, float v, uint32_t level)
@@ -380,7 +447,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_opacity_micromap Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_opacity_micromap Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -391,7 +458,6 @@
                                                   , MicromapBuildInfoEXT
                                                   , MicromapBuildSizesInfoEXT
                                                   , MicromapCreateInfoEXT
-                                                  , MicromapTriangleEXT
                                                   , MicromapUsageEXT
                                                   , MicromapVersionInfoEXT
                                                   , PhysicalDeviceOpacityMicromapFeaturesEXT
@@ -448,14 +514,6 @@
 instance Show MicromapCreateInfoEXT
 
 instance FromCStruct MicromapCreateInfoEXT
-
-
-data MicromapTriangleEXT
-
-instance ToCStruct MicromapTriangleEXT
-instance Show MicromapTriangleEXT
-
-instance FromCStruct MicromapTriangleEXT
 
 
 data MicromapUsageEXT
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
@@ -18,7 +18,7 @@
 --     1
 --
 -- [__Ratification Status__]
---     Not ratified
+--     Ratified
 --
 -- [__Extension and Version Dependencies__]
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_memory_priority VK_EXT_memory_priority>
@@ -130,7 +130,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_pageable_device_local_memory Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -257,12 +257,21 @@
 -- 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. 'PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT' /can/
--- also be used in the @pNext@ chain of
--- 'Vulkan.Core10.Device.DeviceCreateInfo' to selectively enable these
--- features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
 --
 -- = See Also
 --
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
@@ -18,7 +18,7 @@
 --     1
 --
 -- [__Ratification Status__]
---     Not ratified
+--     Ratified
 --
 -- [__Extension and Version Dependencies__]
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_memory_priority VK_EXT_memory_priority>
@@ -130,7 +130,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_pageable_device_local_memory Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -95,7 +95,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_pci_bus_info Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -141,7 +141,11 @@
 --
 -- These are properties of the PCI bus information of a physical device.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
 --
 -- = See Also
 --
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
@@ -95,7 +95,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_pci_bus_info Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -49,7 +49,7 @@
 -- DRM nodes on Linux.
 --
 -- Its functionality closely overlaps with
--- @EGL_EXT_device_drm@<https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_physical_device_drm-fn1 1>^.
+-- @EGL_EXT_device_drm@<https://registry.khronos.org/vulkan/specs/latest/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.
@@ -100,7 +100,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_physical_device_drm Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -149,7 +149,11 @@
 --
 -- These are properties of the DRM information of a physical device.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
 --
 -- = See Also
 --
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
@@ -49,7 +49,7 @@
 -- DRM nodes on Linux.
 --
 -- Its functionality closely overlaps with
--- @EGL_EXT_device_drm@<https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_physical_device_drm-fn1 1>^.
+-- @EGL_EXT_device_drm@<https://registry.khronos.org/vulkan/specs/latest/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.
@@ -100,7 +100,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_physical_device_drm Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -138,7 +138,7 @@
 -- object. 'PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT' can be
 -- set when calling 'Vulkan.Core10.PipelineCache.createPipelineCache' to
 -- state the cache is
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#fundamentals-threadingbehavior externally synchronized>.
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -216,7 +216,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_pipeline_creation_cache_control Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
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
@@ -78,11 +78,13 @@
 --
 -- -   'PipelineCreationFeedbackEXT'
 --
--- -   Extending 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo',
---     'Vulkan.Core10.Pipeline.ComputePipelineCreateInfo',
+-- -   Extending
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo',
+--     'Vulkan.Core10.ComputePipeline.ComputePipelineCreateInfo',
 --     'Vulkan.Extensions.VK_NV_ray_tracing.RayTracingPipelineCreateInfoNV',
 --     'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingPipelineCreateInfoKHR',
---     'Vulkan.Extensions.VK_AMDX_shader_enqueue.ExecutionGraphPipelineCreateInfoAMDX':
+--     'Vulkan.Extensions.VK_AMDX_shader_enqueue.ExecutionGraphPipelineCreateInfoAMDX',
+--     'Vulkan.Extensions.VK_ARM_data_graph.DataGraphPipelineCreateInfoARM':
 --
 --     -   'PipelineCreationFeedbackCreateInfoEXT'
 --
@@ -100,6 +102,15 @@
 --
 -- -   'EXT_PIPELINE_CREATION_FEEDBACK_SPEC_VERSION'
 --
+-- -   Extending
+--     'Vulkan.Core13.Enums.PipelineCreationFeedbackFlagBits.PipelineCreationFeedbackFlagBits':
+--
+--     -   'PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT'
+--
+--     -   'PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT'
+--
+--     -   'PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT'
+--
 -- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
 --
 --     -   'STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT'
@@ -125,11 +136,14 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_pipeline_creation_feedback Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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  ( pattern STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT
+                                                            , 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
                                                             , PipelineCreationFeedbackFlagsEXT
                                                             , PipelineCreationFeedbackFlagBitsEXT
                                                             , PipelineCreationFeedbackEXT
@@ -145,9 +159,27 @@
 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.Core13.Enums.PipelineCreationFeedbackFlagBits (PipelineCreationFeedbackFlags)
+import Vulkan.Core13.Enums.PipelineCreationFeedbackFlagBits (PipelineCreationFeedbackFlagBits(PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT))
+import Vulkan.Core13.Enums.PipelineCreationFeedbackFlagBits (PipelineCreationFeedbackFlags)
+import Vulkan.Core13.Enums.PipelineCreationFeedbackFlagBits (PipelineCreationFeedbackFlagBits(PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT))
+import Vulkan.Core13.Enums.PipelineCreationFeedbackFlagBits (PipelineCreationFeedbackFlags)
+import Vulkan.Core13.Enums.PipelineCreationFeedbackFlagBits (PipelineCreationFeedbackFlagBits(PIPELINE_CREATION_FEEDBACK_VALID_BIT))
 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
+
+
+-- 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
 
 
 -- No documentation found for TopLevel "VkPipelineCreationFeedbackFlagsEXT"
diff --git a/src/Vulkan/Extensions/VK_EXT_pipeline_library_group_handles.hs b/src/Vulkan/Extensions/VK_EXT_pipeline_library_group_handles.hs
--- a/src/Vulkan/Extensions/VK_EXT_pipeline_library_group_handles.hs
+++ b/src/Vulkan/Extensions/VK_EXT_pipeline_library_group_handles.hs
@@ -18,7 +18,7 @@
 --     1
 --
 -- [__Ratification Status__]
---     Not ratified
+--     Ratified
 --
 -- [__Extension and Version Dependencies__]
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_ray_tracing_pipeline VK_KHR_ray_tracing_pipeline>
@@ -109,7 +109,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_pipeline_library_group_handles Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_pipeline_library_group_handles Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -158,12 +158,21 @@
 -- 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. 'PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT' /can/
--- also be used in the @pNext@ chain of
--- 'Vulkan.Core10.Device.DeviceCreateInfo' to selectively enable these
--- features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Extensions/VK_EXT_pipeline_library_group_handles.hs-boot b/src/Vulkan/Extensions/VK_EXT_pipeline_library_group_handles.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_pipeline_library_group_handles.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_pipeline_library_group_handles.hs-boot
@@ -18,7 +18,7 @@
 --     1
 --
 -- [__Ratification Status__]
---     Not ratified
+--     Ratified
 --
 -- [__Extension and Version Dependencies__]
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_ray_tracing_pipeline VK_KHR_ray_tracing_pipeline>
@@ -109,7 +109,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_pipeline_library_group_handles Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_pipeline_library_group_handles Vulkan Specification>.
 --
 -- This 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_properties.hs b/src/Vulkan/Extensions/VK_EXT_pipeline_properties.hs
--- a/src/Vulkan/Extensions/VK_EXT_pipeline_properties.hs
+++ b/src/Vulkan/Extensions/VK_EXT_pipeline_properties.hs
@@ -18,7 +18,7 @@
 --     1
 --
 -- [__Ratification Status__]
---     Not ratified
+--     Ratified
 --
 -- [__Extension and Version Dependencies__]
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
@@ -143,7 +143,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_pipeline_properties Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_pipeline_properties Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -220,7 +220,7 @@
   unsafe
 #endif
   "dynamic" mkVkGetPipelinePropertiesEXT
-  :: FunPtr (Ptr Device_T -> Ptr PipelineInfoEXT -> Ptr BaseOutStructure -> IO Result) -> Ptr Device_T -> Ptr PipelineInfoEXT -> Ptr BaseOutStructure -> IO Result
+  :: FunPtr (Ptr Device_T -> Ptr PipelineInfoKHR -> Ptr BaseOutStructure -> IO Result) -> Ptr Device_T -> Ptr PipelineInfoKHR -> Ptr BaseOutStructure -> IO Result
 
 -- | vkGetPipelinePropertiesEXT - Query pipeline properties
 --
@@ -241,7 +241,7 @@
 --     'PipelinePropertiesIdentifierEXT' structure
 --
 -- -   #VUID-vkGetPipelinePropertiesEXT-None-06766# The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-pipelinePropertiesIdentifier pipelinePropertiesIdentifier>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-pipelinePropertiesIdentifier pipelinePropertiesIdentifier>
 --     feature /must/ be enabled
 --
 -- == Valid Usage (Implicit)
@@ -251,7 +251,8 @@
 --
 -- -   #VUID-vkGetPipelinePropertiesEXT-pPipelineInfo-parameter#
 --     @pPipelineInfo@ /must/ be a valid pointer to a valid
---     'PipelineInfoEXT' structure
+--     'Vulkan.Extensions.VK_KHR_pipeline_executable_properties.PipelineInfoKHR'
+--     structure
 --
 -- == Return Codes
 --
@@ -263,18 +264,23 @@
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_pipeline_properties VK_EXT_pipeline_properties>,
 -- 'Vulkan.CStruct.Extends.BaseOutStructure',
--- 'Vulkan.Core10.Handles.Device', 'PipelineInfoEXT'
+-- 'Vulkan.Core10.Handles.Device',
+-- 'Vulkan.Extensions.VK_KHR_pipeline_executable_properties.PipelineInfoKHR'
 getPipelinePropertiesEXT :: forall io
                           . (MonadIO io)
                          => -- | @device@ is the logical device that created the pipeline.
                             Device
                          -> -- | @pPipelineInfo@ is a pointer to a 'PipelineInfoEXT' structure which
                             -- describes the pipeline being queried.
-                            PipelineInfoEXT
+                            PipelineInfoKHR
                          -> -- | @pPipelineProperties@ is a pointer to a
                             -- 'Vulkan.CStruct.Extends.BaseOutStructure' structure in which the
                             -- pipeline properties will be written.
@@ -366,11 +372,21 @@
 -- 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. 'PhysicalDevicePipelinePropertiesFeaturesEXT' /can/ also be
--- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDevicePipelinePropertiesFeaturesEXT', it /must/ add an instance
+-- of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Extensions/VK_EXT_pipeline_properties.hs-boot b/src/Vulkan/Extensions/VK_EXT_pipeline_properties.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_pipeline_properties.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_pipeline_properties.hs-boot
@@ -18,7 +18,7 @@
 --     1
 --
 -- [__Ratification Status__]
---     Not ratified
+--     Ratified
 --
 -- [__Extension and Version Dependencies__]
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
@@ -143,19 +143,18 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_pipeline_properties Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_pipeline_properties 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_properties  ( PhysicalDevicePipelinePropertiesFeaturesEXT
                                                      , PipelinePropertiesIdentifierEXT
-                                                     , PipelineInfoEXT
                                                      ) where
 
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (ToCStruct)
 import Data.Kind (Type)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_pipeline_executable_properties (PipelineInfoKHR)
+
 data PhysicalDevicePipelinePropertiesFeaturesEXT
 
 instance ToCStruct PhysicalDevicePipelinePropertiesFeaturesEXT
@@ -170,8 +169,4 @@
 instance Show PipelinePropertiesIdentifierEXT
 
 instance FromCStruct PipelinePropertiesIdentifierEXT
-
-
--- No documentation found for TopLevel "VkPipelineInfoEXT"
-type PipelineInfoEXT = PipelineInfoKHR
 
diff --git a/src/Vulkan/Extensions/VK_EXT_pipeline_protected_access.hs b/src/Vulkan/Extensions/VK_EXT_pipeline_protected_access.hs
--- a/src/Vulkan/Extensions/VK_EXT_pipeline_protected_access.hs
+++ b/src/Vulkan/Extensions/VK_EXT_pipeline_protected_access.hs
@@ -18,13 +18,18 @@
 --     1
 --
 -- [__Ratification Status__]
---     Not ratified
+--     Ratified
 --
 -- [__Extension and Version Dependencies__]
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
 --     or
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
 --
+-- [__Deprecation State__]
+--
+--     -   /Promoted/ to
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.4-promotions Vulkan 1.4>
+--
 -- [__Contact__]
 --
 --     -   Shahbaz Youssefi
@@ -72,14 +77,20 @@
 -- -   Extending
 --     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits':
 --
---     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT'
+--     -   'PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT'
 --
---     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT'
+--     -   'PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT'
 --
 -- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT'
+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT'
 --
+-- == Promotion to Vulkan 1.4
+--
+-- Functionality in this extension is included in core Vulkan 1.4 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, 2022-07-28 (Shahbaz Youssefi)
@@ -93,107 +104,41 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_pipeline_protected_access Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_pipeline_protected_access 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_protected_access  ( PhysicalDevicePipelineProtectedAccessFeaturesEXT(..)
+module Vulkan.Extensions.VK_EXT_pipeline_protected_access  ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT
+                                                           , pattern PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT
+                                                           , pattern PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT
+                                                           , PhysicalDevicePipelineProtectedAccessFeaturesEXT
                                                            , EXT_PIPELINE_PROTECTED_ACCESS_SPEC_VERSION
                                                            , pattern EXT_PIPELINE_PROTECTED_ACCESS_SPEC_VERSION
                                                            , EXT_PIPELINE_PROTECTED_ACCESS_EXTENSION_NAME
                                                            , pattern EXT_PIPELINE_PROTECTED_ACCESS_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_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT))
--- | VkPhysicalDevicePipelineProtectedAccessFeaturesEXT - Structure
--- describing support for specifying protected access on individual
--- pipelines
---
--- = Members
---
--- This structure describes the following feature:
---
--- = Description
---
--- If the 'PhysicalDevicePipelineProtectedAccessFeaturesEXT' 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. 'PhysicalDevicePipelineProtectedAccessFeaturesEXT' /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_protected_access VK_EXT_pipeline_protected_access>,
--- 'Vulkan.Core10.FundamentalTypes.Bool32',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PhysicalDevicePipelineProtectedAccessFeaturesEXT = PhysicalDevicePipelineProtectedAccessFeaturesEXT
-  { -- | #features-pipelineProtectedAccess# @pipelineProtectedAccess@ indicates
-    -- whether the implementation supports specifying protected access on
-    -- individual pipelines.
-    pipelineProtectedAccess :: Bool }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PhysicalDevicePipelineProtectedAccessFeaturesEXT)
-#endif
-deriving instance Show PhysicalDevicePipelineProtectedAccessFeaturesEXT
+import Vulkan.Core14.Promoted_From_VK_EXT_pipeline_protected_access (PhysicalDevicePipelineProtectedAccessFeatures)
+import Vulkan.Core10.Enums.PipelineCreateFlagBits (PipelineCreateFlags)
+import Vulkan.Core10.Enums.PipelineCreateFlagBits (PipelineCreateFlagBits(PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT))
+import Vulkan.Core10.Enums.PipelineCreateFlagBits (PipelineCreateFlags)
+import Vulkan.Core10.Enums.PipelineCreateFlagBits (PipelineCreateFlagBits(PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES))
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT = STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES
 
-instance ToCStruct PhysicalDevicePipelineProtectedAccessFeaturesEXT where
-  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PhysicalDevicePipelineProtectedAccessFeaturesEXT{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (pipelineProtectedAccess))
-    f
-  cStructSize = 24
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
-    f
 
-instance FromCStruct PhysicalDevicePipelineProtectedAccessFeaturesEXT where
-  peekCStruct p = do
-    pipelineProtectedAccess <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
-    pure $ PhysicalDevicePipelineProtectedAccessFeaturesEXT
-             (bool32ToBool pipelineProtectedAccess)
+-- No documentation found for TopLevel "VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT"
+pattern PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT = PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT
 
-instance Storable PhysicalDevicePipelineProtectedAccessFeaturesEXT where
-  sizeOf ~_ = 24
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
 
-instance Zero PhysicalDevicePipelineProtectedAccessFeaturesEXT where
-  zero = PhysicalDevicePipelineProtectedAccessFeaturesEXT
-           zero
+-- No documentation found for TopLevel "VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT"
+pattern PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT = PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT
+
+
+-- No documentation found for TopLevel "VkPhysicalDevicePipelineProtectedAccessFeaturesEXT"
+type PhysicalDevicePipelineProtectedAccessFeaturesEXT = PhysicalDevicePipelineProtectedAccessFeatures
 
 
 type EXT_PIPELINE_PROTECTED_ACCESS_SPEC_VERSION = 1
diff --git a/src/Vulkan/Extensions/VK_EXT_pipeline_protected_access.hs-boot b/src/Vulkan/Extensions/VK_EXT_pipeline_protected_access.hs-boot
deleted file mode 100644
--- a/src/Vulkan/Extensions/VK_EXT_pipeline_protected_access.hs-boot
+++ /dev/null
@@ -1,112 +0,0 @@
-{-# language CPP #-}
--- | = Name
---
--- VK_EXT_pipeline_protected_access - device extension
---
--- = VK_EXT_pipeline_protected_access
---
--- [__Name String__]
---     @VK_EXT_pipeline_protected_access@
---
--- [__Extension Type__]
---     Device extension
---
--- [__Registered Extension Number__]
---     467
---
--- [__Revision__]
---     1
---
--- [__Ratification Status__]
---     Not ratified
---
--- [__Extension and Version Dependencies__]
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
---
--- [__Contact__]
---
---     -   Shahbaz Youssefi
---         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_pipeline_protected_access] @syoussefi%0A*Here describe the issue or question you have about the VK_EXT_pipeline_protected_access extension* >
---
--- [__Extension Proposal__]
---     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_EXT_pipeline_protected_access.adoc VK_EXT_pipeline_protected_access>
---
--- == Other Extension Metadata
---
--- [__Last Modified Date__]
---     2022-07-28
---
--- [__Contributors__]
---
---     -   Shahbaz Youssefi, Google
---
---     -   Jörg Wagner, Arm
---
---     -   Ralph Potter, Samsung
---
---     -   Daniel Koch, NVIDIA
---
--- == Description
---
--- This extension allows protected memory access to be specified per
--- pipeline as opposed to per device. Through the usage of this extension,
--- any performance penalty paid due to access to protected memory will be
--- limited to the specific pipelines that make such accesses.
---
--- == New Structures
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
---     'Vulkan.Core10.Device.DeviceCreateInfo':
---
---     -   'PhysicalDevicePipelineProtectedAccessFeaturesEXT'
---
--- == New Enum Constants
---
--- -   'EXT_PIPELINE_PROTECTED_ACCESS_EXTENSION_NAME'
---
--- -   'EXT_PIPELINE_PROTECTED_ACCESS_SPEC_VERSION'
---
--- -   Extending
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits':
---
---     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT'
---
---     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT'
---
--- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT'
---
--- == Version History
---
--- -   Revision 1, 2022-07-28 (Shahbaz Youssefi)
---
---     -   Internal revisions
---
--- == See Also
---
--- No cross-references are available
---
--- == Document Notes
---
--- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_pipeline_protected_access 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_protected_access  (PhysicalDevicePipelineProtectedAccessFeaturesEXT) where
-
-import Vulkan.CStruct (FromCStruct)
-import Vulkan.CStruct (ToCStruct)
-import Data.Kind (Type)
-
-data PhysicalDevicePipelineProtectedAccessFeaturesEXT
-
-instance ToCStruct PhysicalDevicePipelineProtectedAccessFeaturesEXT
-instance Show PhysicalDevicePipelineProtectedAccessFeaturesEXT
-
-instance FromCStruct PhysicalDevicePipelineProtectedAccessFeaturesEXT
-
diff --git a/src/Vulkan/Extensions/VK_EXT_pipeline_robustness.hs b/src/Vulkan/Extensions/VK_EXT_pipeline_robustness.hs
--- a/src/Vulkan/Extensions/VK_EXT_pipeline_robustness.hs
+++ b/src/Vulkan/Extensions/VK_EXT_pipeline_robustness.hs
@@ -18,13 +18,18 @@
 --     1
 --
 -- [__Ratification Status__]
---     Not ratified
+--     Ratified
 --
 -- [__Extension and Version Dependencies__]
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
 --     or
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
 --
+-- [__Deprecation State__]
+--
+--     -   /Promoted/ to
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.4-promotions Vulkan 1.4>
+--
 -- [__Contact__]
 --
 --     -   Jarred Davies
@@ -66,16 +71,17 @@
 -- stage basis.
 --
 -- As
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
 -- and other robustness features may have an adverse effect on performance,
 -- this extension is designed to allow users to request robust behavior
 -- only where it may be needed.
 --
 -- == New Structures
 --
--- -   Extending 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo',
---     'Vulkan.Core10.Pipeline.ComputePipelineCreateInfo',
---     'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo',
+-- -   Extending
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo',
+--     'Vulkan.Core10.ComputePipeline.ComputePipelineCreateInfo',
+--     'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo',
 --     'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingPipelineCreateInfoKHR':
 --
 --     -   'PipelineRobustnessCreateInfoEXT'
@@ -103,14 +109,42 @@
 --
 -- -   'EXT_PIPELINE_ROBUSTNESS_SPEC_VERSION'
 --
+-- -   Extending
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PipelineRobustnessBufferBehavior':
+--
+--     -   'PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT'
+--
+--     -   'PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED_EXT'
+--
+--     -   'PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT'
+--
+--     -   'PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT'
+--
+-- -   Extending
+--     'Vulkan.Core14.Enums.PipelineRobustnessImageBehavior.PipelineRobustnessImageBehavior':
+--
+--     -   'PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT_EXT'
+--
+--     -   'PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED_EXT'
+--
+--     -   'PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2_EXT'
+--
+--     -   'PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_EXT'
+--
 -- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT'
+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT'
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES_EXT'
+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES_EXT'
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT'
+--     -   'STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT'
 --
+-- == Promotion to Vulkan 1.4
+--
+-- Functionality in this extension is included in core Vulkan 1.4 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, 2022-07-12 (Jarred Davies)
@@ -124,614 +158,112 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_pipeline_robustness Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_pipeline_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_pipeline_robustness  ( PhysicalDevicePipelineRobustnessFeaturesEXT(..)
-                                                     , PipelineRobustnessCreateInfoEXT(..)
-                                                     , PhysicalDevicePipelineRobustnessPropertiesEXT(..)
-                                                     , PipelineRobustnessBufferBehaviorEXT( PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT
-                                                                                          , PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED_EXT
-                                                                                          , PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT
-                                                                                          , PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT
-                                                                                          , ..
-                                                                                          )
-                                                     , PipelineRobustnessImageBehaviorEXT( PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT_EXT
-                                                                                         , PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED_EXT
-                                                                                         , PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_EXT
-                                                                                         , PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2_EXT
-                                                                                         , ..
-                                                                                         )
+module Vulkan.Extensions.VK_EXT_pipeline_robustness  ( pattern STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT
+                                                     , pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT
+                                                     , pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES_EXT
+                                                     , pattern PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT
+                                                     , pattern PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED_EXT
+                                                     , pattern PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT
+                                                     , pattern PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT
+                                                     , pattern PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT_EXT
+                                                     , pattern PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED_EXT
+                                                     , pattern PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_EXT
+                                                     , pattern PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2_EXT
+                                                     , PipelineRobustnessBufferBehaviorEXT
+                                                     , PipelineRobustnessImageBehaviorEXT
+                                                     , PhysicalDevicePipelineRobustnessFeaturesEXT
+                                                     , PipelineRobustnessCreateInfoEXT
+                                                     , PhysicalDevicePipelineRobustnessPropertiesEXT
                                                      , EXT_PIPELINE_ROBUSTNESS_SPEC_VERSION
                                                      , pattern EXT_PIPELINE_ROBUSTNESS_SPEC_VERSION
                                                      , EXT_PIPELINE_ROBUSTNESS_EXTENSION_NAME
                                                      , pattern EXT_PIPELINE_ROBUSTNESS_EXTENSION_NAME
                                                      ) where
 
-import Vulkan.Internal.Utils (enumReadPrec)
-import Vulkan.Internal.Utils (enumShowsPrec)
-import Foreign.Marshal.Alloc (allocaBytes)
-import Foreign.Ptr (nullPtr)
-import Foreign.Ptr (plusPtr)
-import GHC.Show (showsPrec)
-import Vulkan.CStruct (FromCStruct)
-import Vulkan.CStruct (FromCStruct(..))
-import Vulkan.CStruct (ToCStruct)
-import Vulkan.CStruct (ToCStruct(..))
-import Vulkan.Zero (Zero)
-import Vulkan.Zero (Zero(..))
 import Data.String (IsString)
-import Data.Typeable (Typeable)
-import Foreign.Storable (Storable)
-import Foreign.Storable (Storable(peek))
-import Foreign.Storable (Storable(poke))
-import qualified Foreign.Storable (Storable(..))
-import GHC.Generics (Generic)
-import Data.Int (Int32)
-import Foreign.Ptr (Ptr)
-import GHC.Read (Read(readPrec))
-import GHC.Show (Show(showsPrec))
-import Data.Kind (Type)
-import Vulkan.Core10.FundamentalTypes (bool32ToBool)
-import Vulkan.Core10.FundamentalTypes (boolToBool32)
-import Vulkan.Core10.FundamentalTypes (Bool32)
-import Vulkan.Core10.Enums.StructureType (StructureType)
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES_EXT))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT))
--- | VkPhysicalDevicePipelineRobustnessFeaturesEXT - Structure describing
--- whether an implementation supports robustness requests on a per-pipeline
--- stage granularity
---
--- = Members
---
--- This structure describes the following feature:
---
--- = Description
---
--- Enabling the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-pipelineRobustness pipelineRobustness>
--- feature may, on some platforms, incur a minor performance cost when the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
--- feature is not enabled, even for pipelines which do not make use of any
--- robustness features. If robustness is not needed, the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-pipelineRobustness pipelineRobustness>
--- feature should not be enabled by an application.
---
--- If the 'PhysicalDevicePipelineRobustnessFeaturesEXT' 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. 'PhysicalDevicePipelineRobustnessFeaturesEXT' /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_robustness VK_EXT_pipeline_robustness>,
--- 'Vulkan.Core10.FundamentalTypes.Bool32',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PhysicalDevicePipelineRobustnessFeaturesEXT = PhysicalDevicePipelineRobustnessFeaturesEXT
-  { -- | #features-pipelineRobustness# @pipelineRobustness@ indicates that
-    -- robustness /can/ be requested on a per-pipeline-stage granularity.
-    pipelineRobustness :: Bool }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PhysicalDevicePipelineRobustnessFeaturesEXT)
-#endif
-deriving instance Show PhysicalDevicePipelineRobustnessFeaturesEXT
+import Vulkan.Core14.Promoted_From_VK_EXT_pipeline_robustness (PhysicalDevicePipelineRobustnessFeatures)
+import Vulkan.Core14.Promoted_From_VK_EXT_pipeline_robustness (PhysicalDevicePipelineRobustnessProperties)
+import Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior (PipelineRobustnessBufferBehavior)
+import Vulkan.Core14.Promoted_From_VK_EXT_pipeline_robustness (PipelineRobustnessCreateInfo)
+import Vulkan.Core14.Enums.PipelineRobustnessImageBehavior (PipelineRobustnessImageBehavior)
+import Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior (PipelineRobustnessBufferBehavior(PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT))
+import Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior (PipelineRobustnessBufferBehavior(PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED))
+import Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior (PipelineRobustnessBufferBehavior(PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS))
+import Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior (PipelineRobustnessBufferBehavior(PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2))
+import Vulkan.Core14.Enums.PipelineRobustnessImageBehavior (PipelineRobustnessImageBehavior(PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT))
+import Vulkan.Core14.Enums.PipelineRobustnessImageBehavior (PipelineRobustnessImageBehavior(PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED))
+import Vulkan.Core14.Enums.PipelineRobustnessImageBehavior (PipelineRobustnessImageBehavior(PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS))
+import Vulkan.Core14.Enums.PipelineRobustnessImageBehavior (PipelineRobustnessImageBehavior(PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO))
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT"
+pattern STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT = STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO
 
-instance ToCStruct PhysicalDevicePipelineRobustnessFeaturesEXT where
-  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PhysicalDevicePipelineRobustnessFeaturesEXT{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (pipelineRobustness))
-    f
-  cStructSize = 24
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
-    f
 
-instance FromCStruct PhysicalDevicePipelineRobustnessFeaturesEXT where
-  peekCStruct p = do
-    pipelineRobustness <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
-    pure $ PhysicalDevicePipelineRobustnessFeaturesEXT
-             (bool32ToBool pipelineRobustness)
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT = STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES
 
-instance Storable PhysicalDevicePipelineRobustnessFeaturesEXT where
-  sizeOf ~_ = 24
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
 
-instance Zero PhysicalDevicePipelineRobustnessFeaturesEXT where
-  zero = PhysicalDevicePipelineRobustnessFeaturesEXT
-           zero
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES_EXT = STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES
 
 
--- | VkPipelineRobustnessCreateInfoEXT - Structure controlling the robustness
--- of a newly created pipeline shader stage
---
--- = Description
---
--- Resources bound as
--- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_MUTABLE_EXT' will
--- have the robustness behavior that covers its active descriptor type.
---
--- The scope of the effect of 'PipelineRobustnessCreateInfoEXT' depends on
--- which structure’s @pNext@ chain it is included in.
---
--- -   'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo',
---     'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingPipelineCreateInfoKHR',
---     'Vulkan.Core10.Pipeline.ComputePipelineCreateInfo':
---     The robustness behavior described by
---     'PipelineRobustnessCreateInfoEXT' applies to all accesses through
---     this pipeline
---
--- -   'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo':
---     The robustness behavior described by
---     'PipelineRobustnessCreateInfoEXT' applies to all accesses emanating
---     from the shader code of this shader stage
---
--- If 'PipelineRobustnessCreateInfoEXT' is specified for both a pipeline
--- and a pipeline stage, the 'PipelineRobustnessCreateInfoEXT' specified
--- for the pipeline stage will take precedence.
---
--- When 'PipelineRobustnessCreateInfoEXT' is specified for a pipeline, it
--- only affects the subset of the pipeline that is specified by the create
--- info, as opposed to subsets linked from pipeline libraries. For
--- 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo', that subset is
--- specified by
--- 'Vulkan.Extensions.VK_EXT_graphics_pipeline_library.GraphicsPipelineLibraryCreateInfoEXT'::@flags@.
--- For
--- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingPipelineCreateInfoKHR',
--- that subset is specified by the specific stages in
--- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingPipelineCreateInfoKHR'::@pStages@.
---
--- == Valid Usage
---
--- -   #VUID-VkPipelineRobustnessCreateInfoEXT-pipelineRobustness-06926# If
---     the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-pipelineRobustness pipelineRobustness>
---     feature is not enabled, @storageBuffers@ /must/ be
---     'PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT'
---
--- -   #VUID-VkPipelineRobustnessCreateInfoEXT-pipelineRobustness-06927# If
---     the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-pipelineRobustness pipelineRobustness>
---     feature is not enabled, @uniformBuffers@ /must/ be
---     'PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT'
---
--- -   #VUID-VkPipelineRobustnessCreateInfoEXT-pipelineRobustness-06928# If
---     the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-pipelineRobustness pipelineRobustness>
---     feature is not enabled, @vertexInputs@ /must/ be
---     'PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT'
---
--- -   #VUID-VkPipelineRobustnessCreateInfoEXT-pipelineRobustness-06929# If
---     the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-pipelineRobustness pipelineRobustness>
---     feature is not enabled, @images@ /must/ be
---     'PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT_EXT'
---
--- -   #VUID-VkPipelineRobustnessCreateInfoEXT-robustImageAccess-06930# If
---     the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-robustImageAccess robustImageAccess>
---     feature is not supported, @images@ /must/ not be
---     'PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_EXT'
---
--- -   #VUID-VkPipelineRobustnessCreateInfoEXT-robustBufferAccess2-06931#
---     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
---     feature is not supported, @storageBuffers@ /must/ not be
---     'PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT'
---
--- -   #VUID-VkPipelineRobustnessCreateInfoEXT-robustBufferAccess2-06932#
---     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
---     feature is not supported, @uniformBuffers@ /must/ not be
---     'PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT'
---
--- -   #VUID-VkPipelineRobustnessCreateInfoEXT-robustBufferAccess2-06933#
---     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
---     feature is not supported, @vertexInputs@ /must/ not be
---     'PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT'
---
--- -   #VUID-VkPipelineRobustnessCreateInfoEXT-robustImageAccess2-06934# If
---     the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-robustImageAccess2 robustImageAccess2>
---     feature is not supported, @images@ /must/ not be
---     'PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2_EXT'
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkPipelineRobustnessCreateInfoEXT-sType-sType# @sType@ /must/
---     be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT'
---
--- -   #VUID-VkPipelineRobustnessCreateInfoEXT-storageBuffers-parameter#
---     @storageBuffers@ /must/ be a valid
---     'PipelineRobustnessBufferBehaviorEXT' value
---
--- -   #VUID-VkPipelineRobustnessCreateInfoEXT-uniformBuffers-parameter#
---     @uniformBuffers@ /must/ be a valid
---     'PipelineRobustnessBufferBehaviorEXT' value
---
--- -   #VUID-VkPipelineRobustnessCreateInfoEXT-vertexInputs-parameter#
---     @vertexInputs@ /must/ be a valid
---     'PipelineRobustnessBufferBehaviorEXT' value
---
--- -   #VUID-VkPipelineRobustnessCreateInfoEXT-images-parameter# @images@
---     /must/ be a valid 'PipelineRobustnessImageBehaviorEXT' value
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_pipeline_robustness VK_EXT_pipeline_robustness>,
--- 'PipelineRobustnessBufferBehaviorEXT',
--- 'PipelineRobustnessImageBehaviorEXT',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PipelineRobustnessCreateInfoEXT = PipelineRobustnessCreateInfoEXT
-  { -- | @storageBuffers@ sets the behavior of out of bounds accesses made to
-    -- resources bound as:
-    --
-    -- -   'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER'
-    --
-    -- -   'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'
-    --
-    -- -   'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC'
-    storageBuffers :: PipelineRobustnessBufferBehaviorEXT
-  , -- | @uniformBuffers@ describes the behavior of out of bounds accesses made
-    -- to resources bound as:
-    --
-    -- -   'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER'
-    --
-    -- -   'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER'
-    --
-    -- -   'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC'
-    --
-    -- -   'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK'
-    uniformBuffers :: PipelineRobustnessBufferBehaviorEXT
-  , -- | @vertexInputs@ describes the behavior of out of bounds accesses made to
-    -- vertex input attributes
-    vertexInputs :: PipelineRobustnessBufferBehaviorEXT
-  , -- | @images@ describes the behavior of out of bounds accesses made to
-    -- resources bound as:
-    --
-    -- -   'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE'
-    --
-    -- -   'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE'
-    images :: PipelineRobustnessImageBehaviorEXT
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PipelineRobustnessCreateInfoEXT)
-#endif
-deriving instance Show PipelineRobustnessCreateInfoEXT
+-- No documentation found for TopLevel "VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT"
+pattern PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT = PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT
 
-instance ToCStruct PipelineRobustnessCreateInfoEXT where
-  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PipelineRobustnessCreateInfoEXT{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr PipelineRobustnessBufferBehaviorEXT)) (storageBuffers)
-    poke ((p `plusPtr` 20 :: Ptr PipelineRobustnessBufferBehaviorEXT)) (uniformBuffers)
-    poke ((p `plusPtr` 24 :: Ptr PipelineRobustnessBufferBehaviorEXT)) (vertexInputs)
-    poke ((p `plusPtr` 28 :: Ptr PipelineRobustnessImageBehaviorEXT)) (images)
-    f
-  cStructSize = 32
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr PipelineRobustnessBufferBehaviorEXT)) (zero)
-    poke ((p `plusPtr` 20 :: Ptr PipelineRobustnessBufferBehaviorEXT)) (zero)
-    poke ((p `plusPtr` 24 :: Ptr PipelineRobustnessBufferBehaviorEXT)) (zero)
-    poke ((p `plusPtr` 28 :: Ptr PipelineRobustnessImageBehaviorEXT)) (zero)
-    f
 
-instance FromCStruct PipelineRobustnessCreateInfoEXT where
-  peekCStruct p = do
-    storageBuffers <- peek @PipelineRobustnessBufferBehaviorEXT ((p `plusPtr` 16 :: Ptr PipelineRobustnessBufferBehaviorEXT))
-    uniformBuffers <- peek @PipelineRobustnessBufferBehaviorEXT ((p `plusPtr` 20 :: Ptr PipelineRobustnessBufferBehaviorEXT))
-    vertexInputs <- peek @PipelineRobustnessBufferBehaviorEXT ((p `plusPtr` 24 :: Ptr PipelineRobustnessBufferBehaviorEXT))
-    images <- peek @PipelineRobustnessImageBehaviorEXT ((p `plusPtr` 28 :: Ptr PipelineRobustnessImageBehaviorEXT))
-    pure $ PipelineRobustnessCreateInfoEXT
-             storageBuffers uniformBuffers vertexInputs images
+-- No documentation found for TopLevel "VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED_EXT"
+pattern PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED_EXT = PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED
 
-instance Storable PipelineRobustnessCreateInfoEXT where
-  sizeOf ~_ = 32
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
 
-instance Zero PipelineRobustnessCreateInfoEXT where
-  zero = PipelineRobustnessCreateInfoEXT
-           zero
-           zero
-           zero
-           zero
+-- No documentation found for TopLevel "VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT"
+pattern PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT = PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS
 
 
--- | VkPhysicalDevicePipelineRobustnessPropertiesEXT - Structure describing
--- the default robustness behavior of a physical device
---
--- = Description
---
--- Some implementations of Vulkan may be able to guarantee that certain
--- types of accesses are always performed with robustness even when the
--- Vulkan API’s robustness features are not explicitly enabled.
---
--- Even when an implementation reports that accesses to a given resource
--- type are robust by default, it remains invalid to make an out of bounds
--- access without requesting the appropriate robustness feature.
---
--- If the 'PhysicalDevicePipelineRobustnessPropertiesEXT' 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_pipeline_robustness VK_EXT_pipeline_robustness>,
--- 'PipelineRobustnessBufferBehaviorEXT',
--- 'PipelineRobustnessImageBehaviorEXT',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PhysicalDevicePipelineRobustnessPropertiesEXT = PhysicalDevicePipelineRobustnessPropertiesEXT
-  { -- | @defaultRobustnessStorageBuffers@ describes the behavior of out of
-    -- bounds accesses made to storage buffers when no robustness features are
-    -- enabled
-    defaultRobustnessStorageBuffers :: PipelineRobustnessBufferBehaviorEXT
-  , -- | @defaultRobustnessUniformBuffers@ describes the behavior of out of
-    -- bounds accesses made to uniform buffers when no robustness features are
-    -- enabled
-    defaultRobustnessUniformBuffers :: PipelineRobustnessBufferBehaviorEXT
-  , -- | @defaultRobustnessVertexInputs@ describes the behavior of out of bounds
-    -- accesses made to vertex input attributes when no robustness features are
-    -- enabled
-    defaultRobustnessVertexInputs :: PipelineRobustnessBufferBehaviorEXT
-  , -- | @defaultRobustnessImages@ describes the behavior of out of bounds
-    -- accesses made to images when no robustness features are enabled
-    defaultRobustnessImages :: PipelineRobustnessImageBehaviorEXT
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PhysicalDevicePipelineRobustnessPropertiesEXT)
-#endif
-deriving instance Show PhysicalDevicePipelineRobustnessPropertiesEXT
+-- No documentation found for TopLevel "VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT"
+pattern PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT = PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2
 
-instance ToCStruct PhysicalDevicePipelineRobustnessPropertiesEXT where
-  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PhysicalDevicePipelineRobustnessPropertiesEXT{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr PipelineRobustnessBufferBehaviorEXT)) (defaultRobustnessStorageBuffers)
-    poke ((p `plusPtr` 20 :: Ptr PipelineRobustnessBufferBehaviorEXT)) (defaultRobustnessUniformBuffers)
-    poke ((p `plusPtr` 24 :: Ptr PipelineRobustnessBufferBehaviorEXT)) (defaultRobustnessVertexInputs)
-    poke ((p `plusPtr` 28 :: Ptr PipelineRobustnessImageBehaviorEXT)) (defaultRobustnessImages)
-    f
-  cStructSize = 32
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr PipelineRobustnessBufferBehaviorEXT)) (zero)
-    poke ((p `plusPtr` 20 :: Ptr PipelineRobustnessBufferBehaviorEXT)) (zero)
-    poke ((p `plusPtr` 24 :: Ptr PipelineRobustnessBufferBehaviorEXT)) (zero)
-    poke ((p `plusPtr` 28 :: Ptr PipelineRobustnessImageBehaviorEXT)) (zero)
-    f
 
-instance FromCStruct PhysicalDevicePipelineRobustnessPropertiesEXT where
-  peekCStruct p = do
-    defaultRobustnessStorageBuffers <- peek @PipelineRobustnessBufferBehaviorEXT ((p `plusPtr` 16 :: Ptr PipelineRobustnessBufferBehaviorEXT))
-    defaultRobustnessUniformBuffers <- peek @PipelineRobustnessBufferBehaviorEXT ((p `plusPtr` 20 :: Ptr PipelineRobustnessBufferBehaviorEXT))
-    defaultRobustnessVertexInputs <- peek @PipelineRobustnessBufferBehaviorEXT ((p `plusPtr` 24 :: Ptr PipelineRobustnessBufferBehaviorEXT))
-    defaultRobustnessImages <- peek @PipelineRobustnessImageBehaviorEXT ((p `plusPtr` 28 :: Ptr PipelineRobustnessImageBehaviorEXT))
-    pure $ PhysicalDevicePipelineRobustnessPropertiesEXT
-             defaultRobustnessStorageBuffers
-             defaultRobustnessUniformBuffers
-             defaultRobustnessVertexInputs
-             defaultRobustnessImages
+-- No documentation found for TopLevel "VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT_EXT"
+pattern PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT_EXT = PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT
 
-instance Storable PhysicalDevicePipelineRobustnessPropertiesEXT where
-  sizeOf ~_ = 32
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
 
-instance Zero PhysicalDevicePipelineRobustnessPropertiesEXT where
-  zero = PhysicalDevicePipelineRobustnessPropertiesEXT
-           zero
-           zero
-           zero
-           zero
+-- No documentation found for TopLevel "VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED_EXT"
+pattern PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED_EXT = PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED
 
 
--- | VkPipelineRobustnessBufferBehaviorEXT - Enum controlling the robustness
--- of buffer accesses in a pipeline stage
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_pipeline_robustness VK_EXT_pipeline_robustness>,
--- 'PhysicalDevicePipelineRobustnessPropertiesEXT',
--- 'PipelineRobustnessCreateInfoEXT'
-newtype PipelineRobustnessBufferBehaviorEXT = PipelineRobustnessBufferBehaviorEXT Int32
-  deriving newtype (Eq, Ord, Storable, Zero)
+-- No documentation found for TopLevel "VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_EXT"
+pattern PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_EXT = PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS
 
--- | 'PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT' specifies that
--- this pipeline stage follows the behavior of robustness features that are
--- enabled that created this pipeline
-pattern PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT = PipelineRobustnessBufferBehaviorEXT 0
 
--- | 'PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED_EXT' specifies that buffer
--- accesses by this pipeline stage to the relevant resource types /must/
--- not be out of bounds
-pattern PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED_EXT = PipelineRobustnessBufferBehaviorEXT 1
+-- No documentation found for TopLevel "VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2_EXT"
+pattern PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2_EXT = PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2
 
--- | 'PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT' specifies
--- that out of bounds accesses by this pipeline stage to the relevant
--- resource types behave as if the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
--- feature is enabled
-pattern PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT = PipelineRobustnessBufferBehaviorEXT 2
 
--- | 'PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT'
--- specifies that out of bounds accesses by this pipeline stage to the
--- relevant resource types behave as if the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
--- feature is enabled
-pattern PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT = PipelineRobustnessBufferBehaviorEXT 3
+-- No documentation found for TopLevel "VkPipelineRobustnessBufferBehaviorEXT"
+type PipelineRobustnessBufferBehaviorEXT = PipelineRobustnessBufferBehavior
 
-{-# COMPLETE
-  PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT
-  , PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED_EXT
-  , PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT
-  , PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT ::
-    PipelineRobustnessBufferBehaviorEXT
-  #-}
 
-conNamePipelineRobustnessBufferBehaviorEXT :: String
-conNamePipelineRobustnessBufferBehaviorEXT = "PipelineRobustnessBufferBehaviorEXT"
+-- No documentation found for TopLevel "VkPipelineRobustnessImageBehaviorEXT"
+type PipelineRobustnessImageBehaviorEXT = PipelineRobustnessImageBehavior
 
-enumPrefixPipelineRobustnessBufferBehaviorEXT :: String
-enumPrefixPipelineRobustnessBufferBehaviorEXT = "PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_"
 
-showTablePipelineRobustnessBufferBehaviorEXT :: [(PipelineRobustnessBufferBehaviorEXT, String)]
-showTablePipelineRobustnessBufferBehaviorEXT =
-  [
-    ( PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT
-    , "DEVICE_DEFAULT_EXT"
-    )
-  ,
-    ( PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED_EXT
-    , "DISABLED_EXT"
-    )
-  ,
-    ( PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT
-    , "ROBUST_BUFFER_ACCESS_EXT"
-    )
-  ,
-    ( PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT
-    , "ROBUST_BUFFER_ACCESS_2_EXT"
-    )
-  ]
+-- No documentation found for TopLevel "VkPhysicalDevicePipelineRobustnessFeaturesEXT"
+type PhysicalDevicePipelineRobustnessFeaturesEXT = PhysicalDevicePipelineRobustnessFeatures
 
-instance Show PipelineRobustnessBufferBehaviorEXT where
-  showsPrec =
-    enumShowsPrec
-      enumPrefixPipelineRobustnessBufferBehaviorEXT
-      showTablePipelineRobustnessBufferBehaviorEXT
-      conNamePipelineRobustnessBufferBehaviorEXT
-      (\(PipelineRobustnessBufferBehaviorEXT x) -> x)
-      (showsPrec 11)
 
-instance Read PipelineRobustnessBufferBehaviorEXT where
-  readPrec =
-    enumReadPrec
-      enumPrefixPipelineRobustnessBufferBehaviorEXT
-      showTablePipelineRobustnessBufferBehaviorEXT
-      conNamePipelineRobustnessBufferBehaviorEXT
-      PipelineRobustnessBufferBehaviorEXT
+-- No documentation found for TopLevel "VkPipelineRobustnessCreateInfoEXT"
+type PipelineRobustnessCreateInfoEXT = PipelineRobustnessCreateInfo
 
--- | VkPipelineRobustnessImageBehaviorEXT - Enum controlling the robustness
--- of image accesses in a pipeline stage
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_pipeline_robustness VK_EXT_pipeline_robustness>,
--- 'PhysicalDevicePipelineRobustnessPropertiesEXT',
--- 'PipelineRobustnessCreateInfoEXT'
-newtype PipelineRobustnessImageBehaviorEXT = PipelineRobustnessImageBehaviorEXT Int32
-  deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT_EXT' specifies that
--- this pipeline stage follows the behavior of robustness features that are
--- enabled on the device that created this pipeline
-pattern PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT_EXT = PipelineRobustnessImageBehaviorEXT 0
-
--- | 'PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED_EXT' specifies that image
--- accesses by this pipeline stage to the relevant resource types /must/
--- not be out of bounds
-pattern PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED_EXT = PipelineRobustnessImageBehaviorEXT 1
-
--- | 'PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_EXT' specifies
--- that out of bounds accesses by this pipeline stage to images behave as
--- if the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-robustImageAccess robustImageAccess>
--- feature is enabled
-pattern PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_EXT = PipelineRobustnessImageBehaviorEXT 2
-
--- | 'PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2_EXT' specifies
--- that out of bounds accesses by this pipeline stage to images behave as
--- if the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-robustImageAccess2 robustImageAccess2>
--- feature is enabled
-pattern PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2_EXT = PipelineRobustnessImageBehaviorEXT 3
-
-{-# COMPLETE
-  PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT_EXT
-  , PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED_EXT
-  , PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_EXT
-  , PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2_EXT ::
-    PipelineRobustnessImageBehaviorEXT
-  #-}
-
-conNamePipelineRobustnessImageBehaviorEXT :: String
-conNamePipelineRobustnessImageBehaviorEXT = "PipelineRobustnessImageBehaviorEXT"
-
-enumPrefixPipelineRobustnessImageBehaviorEXT :: String
-enumPrefixPipelineRobustnessImageBehaviorEXT = "PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_"
-
-showTablePipelineRobustnessImageBehaviorEXT :: [(PipelineRobustnessImageBehaviorEXT, String)]
-showTablePipelineRobustnessImageBehaviorEXT =
-  [
-    ( PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT_EXT
-    , "DEVICE_DEFAULT_EXT"
-    )
-  ,
-    ( PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED_EXT
-    , "DISABLED_EXT"
-    )
-  ,
-    ( PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_EXT
-    , "ROBUST_IMAGE_ACCESS_EXT"
-    )
-  ,
-    ( PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2_EXT
-    , "ROBUST_IMAGE_ACCESS_2_EXT"
-    )
-  ]
-
-instance Show PipelineRobustnessImageBehaviorEXT where
-  showsPrec =
-    enumShowsPrec
-      enumPrefixPipelineRobustnessImageBehaviorEXT
-      showTablePipelineRobustnessImageBehaviorEXT
-      conNamePipelineRobustnessImageBehaviorEXT
-      (\(PipelineRobustnessImageBehaviorEXT x) -> x)
-      (showsPrec 11)
+-- No documentation found for TopLevel "VkPhysicalDevicePipelineRobustnessPropertiesEXT"
+type PhysicalDevicePipelineRobustnessPropertiesEXT = PhysicalDevicePipelineRobustnessProperties
 
-instance Read PipelineRobustnessImageBehaviorEXT where
-  readPrec =
-    enumReadPrec
-      enumPrefixPipelineRobustnessImageBehaviorEXT
-      showTablePipelineRobustnessImageBehaviorEXT
-      conNamePipelineRobustnessImageBehaviorEXT
-      PipelineRobustnessImageBehaviorEXT
 
 type EXT_PIPELINE_ROBUSTNESS_SPEC_VERSION = 1
 
diff --git a/src/Vulkan/Extensions/VK_EXT_pipeline_robustness.hs-boot b/src/Vulkan/Extensions/VK_EXT_pipeline_robustness.hs-boot
deleted file mode 100644
--- a/src/Vulkan/Extensions/VK_EXT_pipeline_robustness.hs-boot
+++ /dev/null
@@ -1,162 +0,0 @@
-{-# language CPP #-}
--- | = Name
---
--- VK_EXT_pipeline_robustness - device extension
---
--- = VK_EXT_pipeline_robustness
---
--- [__Name String__]
---     @VK_EXT_pipeline_robustness@
---
--- [__Extension Type__]
---     Device extension
---
--- [__Registered Extension Number__]
---     69
---
--- [__Revision__]
---     1
---
--- [__Ratification Status__]
---     Not ratified
---
--- [__Extension and Version Dependencies__]
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
---
--- [__Contact__]
---
---     -   Jarred Davies
---
--- == Other Extension Metadata
---
--- [__Last Modified Date__]
---     2022-07-12
---
--- [__Interactions and External Dependencies__]
---
---     -   Interacts with @VK_EXT_robustness2@
---
---     -   Interacts with @VK_EXT_image_robustness@
---
---     -   Interacts with @VK_KHR_ray_tracing_pipeline@
---
--- [__Contributors__]
---
---     -   Jarred Davies, Imagination Technologies
---
---     -   Alex Walters, Imagination Technologies
---
---     -   Piers Daniell, NVIDIA
---
---     -   Graeme Leese, Broadcom Corporation
---
---     -   Jeff Leger, Qualcomm Technologies, Inc.
---
---     -   Faith Ekstrand, Intel
---
---     -   Lionel Landwerlin, Intel
---
---     -   Shahbaz Youssefi, Google, Inc.
---
--- == Description
---
--- This extension allows users to request robustness on a per-pipeline
--- stage basis.
---
--- As
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
--- and other robustness features may have an adverse effect on performance,
--- this extension is designed to allow users to request robust behavior
--- only where it may be needed.
---
--- == New Structures
---
--- -   Extending 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo',
---     'Vulkan.Core10.Pipeline.ComputePipelineCreateInfo',
---     'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo',
---     'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingPipelineCreateInfoKHR':
---
---     -   'PipelineRobustnessCreateInfoEXT'
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
---     'Vulkan.Core10.Device.DeviceCreateInfo':
---
---     -   'PhysicalDevicePipelineRobustnessFeaturesEXT'
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
---
---     -   'PhysicalDevicePipelineRobustnessPropertiesEXT'
---
--- == New Enums
---
--- -   'PipelineRobustnessBufferBehaviorEXT'
---
--- -   'PipelineRobustnessImageBehaviorEXT'
---
--- == New Enum Constants
---
--- -   'EXT_PIPELINE_ROBUSTNESS_EXTENSION_NAME'
---
--- -   'EXT_PIPELINE_ROBUSTNESS_SPEC_VERSION'
---
--- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES_EXT'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT'
---
--- == Version History
---
--- -   Revision 1, 2022-07-12 (Jarred Davies)
---
---     -   Initial version
---
--- == See Also
---
--- No cross-references are available
---
--- == Document Notes
---
--- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_pipeline_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_pipeline_robustness  ( PhysicalDevicePipelineRobustnessFeaturesEXT
-                                                     , PhysicalDevicePipelineRobustnessPropertiesEXT
-                                                     , PipelineRobustnessCreateInfoEXT
-                                                     ) where
-
-import Vulkan.CStruct (FromCStruct)
-import Vulkan.CStruct (ToCStruct)
-import Data.Kind (Type)
-
-data PhysicalDevicePipelineRobustnessFeaturesEXT
-
-instance ToCStruct PhysicalDevicePipelineRobustnessFeaturesEXT
-instance Show PhysicalDevicePipelineRobustnessFeaturesEXT
-
-instance FromCStruct PhysicalDevicePipelineRobustnessFeaturesEXT
-
-
-data PhysicalDevicePipelineRobustnessPropertiesEXT
-
-instance ToCStruct PhysicalDevicePipelineRobustnessPropertiesEXT
-instance Show PhysicalDevicePipelineRobustnessPropertiesEXT
-
-instance FromCStruct PhysicalDevicePipelineRobustnessPropertiesEXT
-
-
-data PipelineRobustnessCreateInfoEXT
-
-instance ToCStruct PipelineRobustnessCreateInfoEXT
-instance Show PipelineRobustnessCreateInfoEXT
-
-instance FromCStruct PipelineRobustnessCreateInfoEXT
-
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
@@ -58,16 +58,16 @@
 -- 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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-depth depth>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#fragops-depth depth>
 -- and
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-stencil stencil>
+-- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-samplemask >
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-samplemask >
 -- built-in reflects the coverage after the early fragment tests are
 -- applied. Otherwise, it reflects the coverage before the depth and
 -- stencil tests.
@@ -85,7 +85,7 @@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-SampleMaskPostDepthCoverage SampleMaskPostDepthCoverage>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-SampleMaskPostDepthCoverage SampleMaskPostDepthCoverage>
 --
 -- == Version History
 --
@@ -100,7 +100,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_post_depth_coverage Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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_present_mode_fifo_latest_ready.hs b/src/Vulkan/Extensions/VK_EXT_present_mode_fifo_latest_ready.hs
--- a/src/Vulkan/Extensions/VK_EXT_present_mode_fifo_latest_ready.hs
+++ b/src/Vulkan/Extensions/VK_EXT_present_mode_fifo_latest_ready.hs
@@ -23,6 +23,12 @@
 -- [__Extension and Version Dependencies__]
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_swapchain VK_KHR_swapchain>
 --
+-- [__Deprecation State__]
+--
+--     -   /Promoted/ to
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_present_mode_fifo_latest_ready VK_KHR_present_mode_fifo_latest_ready>
+--         extension
+--
 -- [__Contact__]
 --
 --     -   Lionel Duc
@@ -48,7 +54,7 @@
 -- == Description
 --
 -- This device extension adds a new present mode,
--- 'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_FIFO_LATEST_READY_EXT'.
+-- 'PRESENT_MODE_FIFO_LATEST_READY_EXT'.
 --
 -- This tear-free present mode behaves much like
 -- 'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_FIFO_KHR', except that
@@ -67,6 +73,13 @@
 -- This additional present mode is useful when using a time-based present
 -- API.
 --
+-- == Promotion to @VK_KHR_present_mode_fifo_latest_ready@
+--
+-- All functionality in this extension is included in
+-- @VK_KHR_present_mode_fifo_latest_ready@, with the suffix changed to KHR.
+-- The original type and enum names are still available as aliases of the
+-- KHR names.
+--
 -- == New Structures
 --
 -- -   Extending
@@ -83,11 +96,11 @@
 --
 -- -   Extending 'Vulkan.Extensions.VK_KHR_surface.PresentModeKHR':
 --
---     -   'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_FIFO_LATEST_READY_EXT'
+--     -   'PRESENT_MODE_FIFO_LATEST_READY_EXT'
 --
 -- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_EXT'
+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_EXT'
 --
 -- == Version History
 --
@@ -102,106 +115,37 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_present_mode_fifo_latest_ready Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_present_mode_fifo_latest_ready 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_present_mode_fifo_latest_ready  ( PhysicalDevicePresentModeFifoLatestReadyFeaturesEXT(..)
+module Vulkan.Extensions.VK_EXT_present_mode_fifo_latest_ready  ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_EXT
+                                                                , pattern PRESENT_MODE_FIFO_LATEST_READY_EXT
+                                                                , PhysicalDevicePresentModeFifoLatestReadyFeaturesEXT
                                                                 , EXT_PRESENT_MODE_FIFO_LATEST_READY_SPEC_VERSION
                                                                 , pattern EXT_PRESENT_MODE_FIFO_LATEST_READY_SPEC_VERSION
                                                                 , EXT_PRESENT_MODE_FIFO_LATEST_READY_EXTENSION_NAME
                                                                 , pattern EXT_PRESENT_MODE_FIFO_LATEST_READY_EXTENSION_NAME
+                                                                , PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR(..)
                                                                 , PresentModeKHR(..)
                                                                 ) 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_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_EXT))
+import Vulkan.Extensions.VK_KHR_present_mode_fifo_latest_ready (PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR)
+import Vulkan.Extensions.VK_KHR_surface (PresentModeKHR(PRESENT_MODE_FIFO_LATEST_READY_KHR))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_KHR))
+import Vulkan.Extensions.VK_KHR_present_mode_fifo_latest_ready (PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR(..))
 import Vulkan.Extensions.VK_KHR_surface (PresentModeKHR(..))
--- | VkPhysicalDevicePresentModeFifoLatestReadyFeaturesEXT - Structure
--- describing support for VK_PRESENT_MODE_FIFO_LATEST_READY_EXT
---
--- = Description
---
--- If the 'PhysicalDevicePresentModeFifoLatestReadyFeaturesEXT' 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. 'PhysicalDevicePresentModeFifoLatestReadyFeaturesEXT' /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_present_mode_fifo_latest_ready VK_EXT_present_mode_fifo_latest_ready>,
--- 'Vulkan.Core10.FundamentalTypes.Bool32',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PhysicalDevicePresentModeFifoLatestReadyFeaturesEXT = PhysicalDevicePresentModeFifoLatestReadyFeaturesEXT
-  { -- | #features-presentModeFifoLatestReady# @presentModeFifoLatestReady@
-    -- specifies whether the implementation supports the
-    -- 'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_FIFO_LATEST_READY_EXT'
-    -- present mode.
-    presentModeFifoLatestReady :: Bool }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PhysicalDevicePresentModeFifoLatestReadyFeaturesEXT)
-#endif
-deriving instance Show PhysicalDevicePresentModeFifoLatestReadyFeaturesEXT
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_EXT = STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_KHR
 
-instance ToCStruct PhysicalDevicePresentModeFifoLatestReadyFeaturesEXT where
-  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PhysicalDevicePresentModeFifoLatestReadyFeaturesEXT{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (presentModeFifoLatestReady))
-    f
-  cStructSize = 24
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
-    f
 
-instance FromCStruct PhysicalDevicePresentModeFifoLatestReadyFeaturesEXT where
-  peekCStruct p = do
-    presentModeFifoLatestReady <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
-    pure $ PhysicalDevicePresentModeFifoLatestReadyFeaturesEXT
-             (bool32ToBool presentModeFifoLatestReady)
+-- No documentation found for TopLevel "VK_PRESENT_MODE_FIFO_LATEST_READY_EXT"
+pattern PRESENT_MODE_FIFO_LATEST_READY_EXT = PRESENT_MODE_FIFO_LATEST_READY_KHR
 
-instance Storable PhysicalDevicePresentModeFifoLatestReadyFeaturesEXT where
-  sizeOf ~_ = 24
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
 
-instance Zero PhysicalDevicePresentModeFifoLatestReadyFeaturesEXT where
-  zero = PhysicalDevicePresentModeFifoLatestReadyFeaturesEXT
-           zero
+-- No documentation found for TopLevel "VkPhysicalDevicePresentModeFifoLatestReadyFeaturesEXT"
+type PhysicalDevicePresentModeFifoLatestReadyFeaturesEXT = PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR
 
 
 type EXT_PRESENT_MODE_FIFO_LATEST_READY_SPEC_VERSION = 1
diff --git a/src/Vulkan/Extensions/VK_EXT_present_mode_fifo_latest_ready.hs-boot b/src/Vulkan/Extensions/VK_EXT_present_mode_fifo_latest_ready.hs-boot
deleted file mode 100644
--- a/src/Vulkan/Extensions/VK_EXT_present_mode_fifo_latest_ready.hs-boot
+++ /dev/null
@@ -1,121 +0,0 @@
-{-# language CPP #-}
--- | = Name
---
--- VK_EXT_present_mode_fifo_latest_ready - device extension
---
--- = VK_EXT_present_mode_fifo_latest_ready
---
--- [__Name String__]
---     @VK_EXT_present_mode_fifo_latest_ready@
---
--- [__Extension Type__]
---     Device extension
---
--- [__Registered Extension Number__]
---     362
---
--- [__Revision__]
---     1
---
--- [__Ratification Status__]
---     Ratified
---
--- [__Extension and Version Dependencies__]
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_swapchain VK_KHR_swapchain>
---
--- [__Contact__]
---
---     -   Lionel Duc
---         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_present_mode_fifo_latest_ready] @nvlduc%0A*Here describe the issue or question you have about the VK_EXT_present_mode_fifo_latest_ready extension* >
---
--- [__Extension Proposal__]
---     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_EXT_present_mode_fifo_latest_ready.adoc VK_EXT_present_mode_fifo_latest_ready>
---
--- == Other Extension Metadata
---
--- [__Last Modified Date__]
---     2024-05-28
---
--- [__IP Status__]
---     No known IP claims.
---
--- [__Contributors__]
---
---     -   James Jones, NVIDIA
---
---     -   Lionel Duc, NVIDIA
---
--- == Description
---
--- This device extension adds a new present mode,
--- 'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_FIFO_LATEST_READY_EXT'.
---
--- This tear-free present mode behaves much like
--- 'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_FIFO_KHR', except that
--- each vertical blanking period dequeues consecutive present requests
--- until the latest ready is found to update the current image.
---
--- While this seems similar in concept to
--- 'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_MAILBOX_KHR', the
--- fundamental difference is that the processing of the present requests is
--- done during vblank. From the application perspective, this means for
--- example, that in a flip-based model, a single vblank /may/ cause
--- multiple swapchain images to be released at once, while
--- 'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_MAILBOX_KHR' /may/
--- continuously be releasing images as new requests become ready.
---
--- This additional present mode is useful when using a time-based present
--- API.
---
--- == New Structures
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
---     'Vulkan.Core10.Device.DeviceCreateInfo':
---
---     -   'PhysicalDevicePresentModeFifoLatestReadyFeaturesEXT'
---
--- == New Enum Constants
---
--- -   'EXT_PRESENT_MODE_FIFO_LATEST_READY_EXTENSION_NAME'
---
--- -   'EXT_PRESENT_MODE_FIFO_LATEST_READY_SPEC_VERSION'
---
--- -   Extending 'Vulkan.Extensions.VK_KHR_surface.PresentModeKHR':
---
---     -   'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_FIFO_LATEST_READY_EXT'
---
--- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_EXT'
---
--- == Version History
---
--- -   Revision 1, 2024-05-28 (Lionel Duc)
---
---     -   Internal revisions
---
--- == See Also
---
--- No cross-references are available
---
--- == Document Notes
---
--- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_present_mode_fifo_latest_ready 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_present_mode_fifo_latest_ready  (PhysicalDevicePresentModeFifoLatestReadyFeaturesEXT) where
-
-import Vulkan.CStruct (FromCStruct)
-import Vulkan.CStruct (ToCStruct)
-import Data.Kind (Type)
-
-data PhysicalDevicePresentModeFifoLatestReadyFeaturesEXT
-
-instance ToCStruct PhysicalDevicePresentModeFifoLatestReadyFeaturesEXT
-instance Show PhysicalDevicePresentModeFifoLatestReadyFeaturesEXT
-
-instance FromCStruct PhysicalDevicePresentModeFifoLatestReadyFeaturesEXT
-
diff --git a/src/Vulkan/Extensions/VK_EXT_present_timing.hs b/src/Vulkan/Extensions/VK_EXT_present_timing.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_EXT_present_timing.hs
@@ -0,0 +1,2458 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_EXT_present_timing - device extension
+--
+-- = VK_EXT_present_timing
+--
+-- [__Name String__]
+--     @VK_EXT_present_timing@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     209
+--
+-- [__Revision__]
+--     3
+--
+-- [__Ratification Status__]
+--     Ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_swapchain VK_KHR_swapchain>
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_present_id2 VK_KHR_present_id2>
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_surface_capabilities2 VK_KHR_get_surface_capabilities2>
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_calibrated_timestamps VK_KHR_calibrated_timestamps>
+--
+-- [__Contact__]
+--
+--     -   Lionel Duc
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_present_timing] @nvlduc%0A*Here describe the issue or question you have about the VK_EXT_present_timing extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_EXT_present_timing.adoc VK_EXT_present_timing>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2024-10-09
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Contributors__]
+--
+--     -   Ian Elliott, Google
+--
+--     -   James Jones, NVIDIA
+--
+--     -   Jeff Juliano, NVIDIA
+--
+--     -   Daniel Rakos, AMD
+--
+--     -   Daniel Stone, Collabora
+--
+--     -   Daniel Vetter, Intel
+--
+--     -   Aric Cyr, AMD
+--
+--     -   Faith Ekstrand, Intel
+--
+--     -   Nicolai Hähnle, AMD
+--
+--     -   Alon Or-Bach, Samsung
+--
+--     -   Niklas Smedberg, Unity Technologies
+--
+--     -   Tobias Hector, AMD
+--
+--     -   Lionel Duc, NVIDIA
+--
+--     -   Lina Versace, Google
+--
+--     -   Sebastian Wick, Red Hat
+--
+--     -   Jakob Bornecrantz, Collabora
+--
+--     -   David Kvasnica, NVIDIA
+--
+-- == Description
+--
+-- This device extension allows an application that uses the
+-- @VK_KHR_swapchain@ extension to obtain information about the
+-- presentation engine’s display, to obtain timing information about each
+-- present, and to schedule a present to happen no earlier than a desired
+-- time. An application can use this to minimize various visual anomalies
+-- (e.g. stuttering).
+--
+-- Traditional game and real-time animation applications need to correctly
+-- position their geometry for when the presentable image will be presented
+-- to the user. To accomplish this, applications need various timing
+-- information about the presentation engine’s display. They need to know
+-- when presentable images were actually presented, and when they could
+-- have been presented. Applications also need to tell the presentation
+-- engine to display an image no sooner than a given time. This allows the
+-- application to avoid stuttering, so the animation looks smooth to the
+-- user.
+--
+-- == New Commands
+--
+-- -   'getPastPresentationTimingEXT'
+--
+-- -   'getSwapchainTimeDomainPropertiesEXT'
+--
+-- -   'getSwapchainTimingPropertiesEXT'
+--
+-- -   'setSwapchainPresentTimingQueueSizeEXT'
+--
+-- == New Structures
+--
+-- -   'PastPresentationTimingEXT'
+--
+-- -   'PastPresentationTimingInfoEXT'
+--
+-- -   'PastPresentationTimingPropertiesEXT'
+--
+-- -   'PresentStageTimeEXT'
+--
+-- -   'PresentTimingInfoEXT'
+--
+-- -   'SwapchainTimeDomainPropertiesEXT'
+--
+-- -   'SwapchainTimingPropertiesEXT'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_KHR_calibrated_timestamps.CalibratedTimestampInfoKHR':
+--
+--     -   'SwapchainCalibratedTimestampInfoEXT'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDevicePresentTimingFeaturesEXT'
+--
+-- -   Extending 'Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR':
+--
+--     -   'PresentTimingsInfoEXT'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.SurfaceCapabilities2KHR':
+--
+--     -   'PresentTimingSurfaceCapabilitiesEXT'
+--
+-- == New Enums
+--
+-- -   'PastPresentationTimingFlagBitsEXT'
+--
+-- -   'PresentStageFlagBitsEXT'
+--
+-- -   'PresentTimingInfoFlagBitsEXT'
+--
+-- == New Bitmasks
+--
+-- -   'PastPresentationTimingFlagsEXT'
+--
+-- -   'PresentStageFlagsEXT'
+--
+-- -   'PresentTimingInfoFlagsEXT'
+--
+-- == New Enum Constants
+--
+-- -   'EXT_PRESENT_TIMING_EXTENSION_NAME'
+--
+-- -   'EXT_PRESENT_TIMING_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.Result.Result':
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_PRESENT_TIMING_QUEUE_FULL_EXT'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PAST_PRESENTATION_TIMING_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PAST_PRESENTATION_TIMING_INFO_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PAST_PRESENTATION_TIMING_PROPERTIES_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_TIMING_FEATURES_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PRESENT_TIMINGS_INFO_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PRESENT_TIMING_INFO_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PRESENT_TIMING_SURFACE_CAPABILITIES_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SWAPCHAIN_CALIBRATED_TIMESTAMP_INFO_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SWAPCHAIN_TIME_DOMAIN_PROPERTIES_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SWAPCHAIN_TIMING_PROPERTIES_EXT'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateFlagBitsKHR':
+--
+--     -   'Vulkan.Extensions.VK_KHR_swapchain.SWAPCHAIN_CREATE_PRESENT_TIMING_BIT_EXT'
+--
+-- -   Extending 'TimeDomainKHR':
+--
+--     -   'TIME_DOMAIN_PRESENT_STAGE_LOCAL_EXT'
+--
+--     -   'TIME_DOMAIN_SWAPCHAIN_LOCAL_EXT'
+--
+-- == Issues
+--
+-- 1) How does the application determine refresh duration, quanta for
+-- change, whether FRR vs. VRR, etc.
+--
+-- The query returns two values: 1) a refresh-cycle duration
+-- (@refreshDuration@), and 2) an indication whether the timing is
+-- currently fixed (FRR) or variable (VRR). If @refreshDuration@ is zero,
+-- the platform cannot supply these values until after at least one
+-- 'Vulkan.Extensions.VK_KHR_swapchain.queuePresentKHR' has been done, from
+-- this time (e.g. if 'Vulkan.Extensions.VK_KHR_swapchain.queuePresentKHR'
+-- has been previously called for this swapchain, at least one additional
+-- call must be made). After calling
+-- 'Vulkan.Extensions.VK_KHR_swapchain.queuePresentKHR', the query can be
+-- repeated until @refreshDuration@ is non-zero, at which point the FRR vs.
+-- VRR indication will also be valid.
+--
+-- If the presentation engine’s @refreshDuration@ is a fixed value, the
+-- application’s image present duration (IPD) should be a multiple of
+-- @refreshDuration@. That is, the quanta for changing the IPD is
+-- @refreshDuration@. For example, if @refreshDuration@ is 16.67ms, the IPD
+-- can be 16.67ms, 33.33ms, 50.0ms, etc.
+--
+-- If the presentation engine’s @refreshDuration@ is variable,
+-- @refreshDuration@ is the minimum value of the application’s IPD, and the
+-- IPD can be larger by any quanta that is meaningful to the application.
+-- For example, if the @refreshDuration@ is 10ms (i.e. the maximum refresh
+-- rate is 100Hz), the application can choose an IPD of 11ms, 13.33ms,
+-- 13.5ms, or 66.0ms; any value greater than or equal to 10ms is valid.
+-- There may be negative consequences for choosing an IPD that is too high,
+-- as the presentation engine may actually have a practical maximum
+-- @refreshDuration@, where it needs to display the previous image again,
+-- and during this time the presentation engine might delay displaying a
+-- newly-presented image.
+--
+-- FRR displays on at least one platform (Wayland) are not necessarily
+-- fixed; but can change over time. For example, if a full-screen video
+-- player application is visible, the display may operate at a 24Hz refresh
+-- cycle; and then later switch to 60Hz when multiple windows are visible.
+--
+-- VRR displays on some platforms can also be seen as having different
+-- characteristics over time. For example, if an application’s window is
+-- full-screen-exclusive (i.e. no other window or window system component
+-- is visible), the display can look like a VRR display (however that is
+-- defined). If the application’s window is not full-screen-exclusive (e.g.
+-- a normal multi-window case), the display can look like an FRR display
+-- (i.e. because the compositor is trying to treat all windows in a
+-- consistent manner). A different issue will deal with how the timing
+-- characteristics can change over time.
+--
+-- 2) Do we return min\/max values for refresh duration for VRR?
+--
+-- Return only the minimum value of refreshDuration for a VRR.
+--
+-- VRR displays have a minimum and maximum refresh rate, and therefore a
+-- minimum and maximum refreshDuration. It has been asserted that the
+-- display effectively does not have a minimum refresh rate. That is
+-- because if an application does not present soon enough, the display
+-- hardware will automatically re-display the previous image. However, when
+-- the display does that, an application cannot present a new image for a
+-- certain period of time. It is unclear about whether that period is large
+-- enough to cause visual artifacts.
+--
+-- 3) How to deal with changes in timing properties?
+--
+-- __RESOLVED__: The 'PastPresentationTimingPropertiesEXT' structure that
+-- is returned by 'getPastPresentationTimingEXT' contains
+-- @timeDomainsCounter@, which is incremented if the time domain enabled
+-- for the swapchain is not currently available.
+--
+-- An example of why display timing properties can change is if a surface
+-- changes from being a window that’s a subset of the display size, to
+-- becoming full-screen-exclusive. While the surface was a subset of the
+-- display, a compositor might enforce fixed timings on the surface (e.g.
+-- FRR of 60Hz), where the presentation engine might be free to allow VRR
+-- behavior of a full-screen-exclusive surface.
+--
+-- It is possible that a full-screen-exclusive window can become
+-- temporarily obscured (e.g. when a short-term dialog pops up). In this
+-- case, the surface might use FRR timings while the dialog is visible and
+-- VRR otherwise.
+--
+-- 4) One Query for all Timing info vs. an initial query to determine FRR
+-- vs. VRR, and then FRR-specific vs VRR-specific queries?
+--
+-- __RESOLVED__: Have one query, as described in issue 1, that can be
+-- called whenever the application needs to obtain the timing properties of
+-- the surface.
+--
+-- 5) Query to determine time domain?
+--
+-- __RESOLVED__: Have a query to determine the time domain. This extension
+-- defines a basic swapchain-local time domain. Other extensions can add
+-- other platform-specific time domains.
+--
+-- 6) What time to use for targetPresentTime for early images?
+--
+-- __RESOLVED__: Have no query for determining the current time in the PE’s
+-- time domain; and do allow the special value of zero for
+-- targetPresentTime, meaning that there is no target.
+--
+-- On some platforms, there is no way to determine the current time, nor to
+-- determine surface timing properties until after at least one image has
+-- been presented.
+--
+-- In such cases, the special value of zero allows the application to
+-- indicate that timing feedback is desired, but that no targetPresentTime
+-- is requested. Later, once the application has obtained feedback, it can
+-- specify targetPresentTime by using the result’s actualPresentTime.
+--
+-- 7) How long before an application’s request for new image duration is
+-- honored?
+--
+-- Apparently, changes to some vendors\' display hardware settings do not
+-- take effect immediately. It is not clear what settings, and therefore,
+-- it is not clear how to address this issue.
+--
+-- 8) Do we have a query for the anticipated latency from present to
+-- feedback?
+--
+-- __RESOLVED__: Do not provide a query for the feedback latency.
+--
+-- There is some amount of latency from when an application calls
+-- vkQueuePresentKHR to when the image is displayed to the user, to when
+-- feedback is available to the application on when the image was actually
+-- displayed to the user. The first time (from the call till the image is
+-- presented) generally doesn’t matter, because the application will likely
+-- be providing a targetPresentTime (i.e. the application may have some
+-- indication for how long this will be). However, the latency between
+-- targetPresentTime until feedback is available may be much longer. For
+-- example, on Android on the 1st-generation Pixel phone (60Hz FRR
+-- display), the latency was approximately 5 refresh cycles (83.33ms). For
+-- higher-frequency displays, the latency may have a larger number of
+-- refresh cycles.
+--
+-- 9) Do we have a query(s) about the number of VkPastPresentationTimingEXT
+-- structs to keep?
+--
+-- __RESOLVED__: Do not provide a query for the number of results the
+-- swapchain is allowed to store before querying them with
+-- vkGetPastPresentationTimingEXT. Let the application specify that value
+-- with a dedicated API.
+--
+-- 10) How is the SWAPCHAIN_LOCAL and STAGE_LOCAL time domain used with the
+-- calibrated timestamps extension?
+--
+-- __RESOLVED__: Define a struct to chain into
+-- VkCalibratedTimestampInfoEXT::pNext that specifies a swapchain and
+-- present stage.
+--
+-- 11) Should VK_PRESENT_MODE_FIFO_LATEST_READY_EXT be part of this
+-- extension, or split out into its own extension?
+--
+-- __RESOLVED__: It is only tangentially related. Split it out into its own
+-- extension and define the interaction here.
+--
+-- == Version History
+--
+-- -   Revision 1, 2018-05-11 (Ian Elliott)
+--
+--     -   Internal revisions.
+--
+-- -   Revision 2, 2022-11-30 (Lionel Duc)
+--
+--     -   Rebase for public discussions.
+--
+-- -   Revision 3, 2024-10-09 (Lionel Duc)
+--
+--     -   Public revisions.
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_present_timing 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_present_timing  ( setSwapchainPresentTimingQueueSizeEXT
+                                                , getSwapchainTimingPropertiesEXT
+                                                , getSwapchainTimeDomainPropertiesEXT
+                                                , getPastPresentationTimingEXT
+                                                , PhysicalDevicePresentTimingFeaturesEXT(..)
+                                                , PresentTimingSurfaceCapabilitiesEXT(..)
+                                                , SwapchainTimingPropertiesEXT(..)
+                                                , SwapchainTimeDomainPropertiesEXT(..)
+                                                , PresentStageTimeEXT(..)
+                                                , PastPresentationTimingInfoEXT(..)
+                                                , PastPresentationTimingPropertiesEXT(..)
+                                                , PastPresentationTimingEXT(..)
+                                                , PresentTimingsInfoEXT(..)
+                                                , PresentTimingInfoEXT(..)
+                                                , SwapchainCalibratedTimestampInfoEXT(..)
+                                                , TimeDomainKHR( TIME_DOMAIN_DEVICE_KHR
+                                                               , TIME_DOMAIN_CLOCK_MONOTONIC_KHR
+                                                               , TIME_DOMAIN_CLOCK_MONOTONIC_RAW_KHR
+                                                               , TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_KHR
+                                                               , TIME_DOMAIN_SWAPCHAIN_LOCAL_EXT
+                                                               , TIME_DOMAIN_PRESENT_STAGE_LOCAL_EXT
+                                                               , ..
+                                                               )
+                                                , PresentStageFlagsEXT
+                                                , PresentStageFlagBitsEXT( PRESENT_STAGE_QUEUE_OPERATIONS_END_BIT_EXT
+                                                                         , PRESENT_STAGE_REQUEST_DEQUEUED_BIT_EXT
+                                                                         , PRESENT_STAGE_IMAGE_FIRST_PIXEL_OUT_BIT_EXT
+                                                                         , PRESENT_STAGE_IMAGE_FIRST_PIXEL_VISIBLE_BIT_EXT
+                                                                         , ..
+                                                                         )
+                                                , PastPresentationTimingFlagsEXT
+                                                , PastPresentationTimingFlagBitsEXT( PAST_PRESENTATION_TIMING_ALLOW_PARTIAL_RESULTS_BIT_EXT
+                                                                                   , PAST_PRESENTATION_TIMING_ALLOW_OUT_OF_ORDER_RESULTS_BIT_EXT
+                                                                                   , ..
+                                                                                   )
+                                                , PresentTimingInfoFlagsEXT
+                                                , PresentTimingInfoFlagBitsEXT( PRESENT_TIMING_INFO_PRESENT_AT_RELATIVE_TIME_BIT_EXT
+                                                                              , PRESENT_TIMING_INFO_PRESENT_AT_NEAREST_REFRESH_CYCLE_BIT_EXT
+                                                                              , ..
+                                                                              )
+                                                , EXT_PRESENT_TIMING_SPEC_VERSION
+                                                , pattern EXT_PRESENT_TIMING_SPEC_VERSION
+                                                , EXT_PRESENT_TIMING_EXTENSION_NAME
+                                                , pattern EXT_PRESENT_TIMING_EXTENSION_NAME
+                                                , SwapchainKHR(..)
+                                                , SwapchainCreateFlagBitsKHR(..)
+                                                , SwapchainCreateFlagsKHR
+                                                ) where
+
+import Data.Bits (Bits)
+import Data.Bits (FiniteBits)
+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 GHC.Show (showsPrec)
+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 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 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 Data.Int (Int32)
+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.NamedType ((:::))
+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(pVkGetPastPresentationTimingEXT))
+import Vulkan.Dynamic (DeviceCmds(pVkGetSwapchainTimeDomainPropertiesEXT))
+import Vulkan.Dynamic (DeviceCmds(pVkGetSwapchainTimingPropertiesEXT))
+import Vulkan.Dynamic (DeviceCmds(pVkSetSwapchainPresentTimingQueueSizeEXT))
+import Vulkan.Core10.Handles (Device_T)
+import Vulkan.Core10.FundamentalTypes (Flags)
+import Vulkan.Core10.Enums.Result (Result)
+import Vulkan.Core10.Enums.Result (Result(..))
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Extensions.Handles (SwapchainKHR)
+import Vulkan.Extensions.Handles (SwapchainKHR(..))
+import Vulkan.Exception (VulkanException(..))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PAST_PRESENTATION_TIMING_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PAST_PRESENTATION_TIMING_INFO_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PAST_PRESENTATION_TIMING_PROPERTIES_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_TIMING_FEATURES_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PRESENT_TIMINGS_INFO_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PRESENT_TIMING_INFO_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PRESENT_TIMING_SURFACE_CAPABILITIES_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SWAPCHAIN_CALIBRATED_TIMESTAMP_INFO_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SWAPCHAIN_TIME_DOMAIN_PROPERTIES_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SWAPCHAIN_TIMING_PROPERTIES_EXT))
+import Vulkan.Core10.Enums.Result (Result(SUCCESS))
+import Vulkan.Extensions.VK_KHR_swapchain (SwapchainCreateFlagBitsKHR(..))
+import Vulkan.Extensions.VK_KHR_swapchain (SwapchainCreateFlagsKHR)
+import Vulkan.Extensions.Handles (SwapchainKHR(..))
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkSetSwapchainPresentTimingQueueSizeEXT
+  :: FunPtr (Ptr Device_T -> SwapchainKHR -> Word32 -> IO Result) -> Ptr Device_T -> SwapchainKHR -> Word32 -> IO Result
+
+-- | vkSetSwapchainPresentTimingQueueSizeEXT - Allocate memory for the
+-- swapchain-internal timing results queue
+--
+-- = Description
+--
+-- If this function is called multiple times, the internal queue is
+-- reallocated to fit the new @size@. If the new @size@ is less than the
+-- current number of outstanding results,
+-- 'Vulkan.Core10.Enums.Result.NOT_READY' is returned and no allocation is
+-- performed.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkSetSwapchainPresentTimingQueueSizeEXT-swapchain-12229#
+--     @swapchain@ /must/ have been created with
+--     'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR'::@flags@
+--     containing
+--     'Vulkan.Extensions.VK_KHR_swapchain.SWAPCHAIN_CREATE_PRESENT_TIMING_BIT_EXT'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkSetSwapchainPresentTimingQueueSizeEXT-device-parameter#
+--     @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkSetSwapchainPresentTimingQueueSizeEXT-swapchain-parameter#
+--     @swapchain@ /must/ be a valid
+--     'Vulkan.Extensions.Handles.SwapchainKHR' handle
+--
+-- -   #VUID-vkSetSwapchainPresentTimingQueueSizeEXT-swapchain-parent#
+--     @swapchain@ /must/ have been created, allocated, or retrieved from
+--     @device@
+--
+-- == Host Synchronization
+--
+-- -   Host access to @swapchain@ /must/ be externally synchronized
+--
+-- == Return Codes
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
+--
+--     -   'Vulkan.Core10.Enums.Result.NOT_READY'
+--
+--     -   '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_DEVICE_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_present_timing VK_EXT_present_timing>,
+-- 'Vulkan.Core10.Handles.Device', 'Vulkan.Extensions.Handles.SwapchainKHR'
+setSwapchainPresentTimingQueueSizeEXT :: forall io
+                                       . (MonadIO io)
+                                      => -- | @device@ is the device associated with @swapchain@.
+                                         Device
+                                      -> -- | @swapchain@ is the swapchain to allocate a results queue for.
+                                         SwapchainKHR
+                                      -> -- | @size@ is the requested number of slots in the internal results queue.
+                                         ("size" ::: Word32)
+                                      -> io (Result)
+setSwapchainPresentTimingQueueSizeEXT device swapchain size = liftIO $ do
+  let vkSetSwapchainPresentTimingQueueSizeEXTPtr = pVkSetSwapchainPresentTimingQueueSizeEXT (case device of Device{deviceCmds} -> deviceCmds)
+  unless (vkSetSwapchainPresentTimingQueueSizeEXTPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkSetSwapchainPresentTimingQueueSizeEXT is null" Nothing Nothing
+  let vkSetSwapchainPresentTimingQueueSizeEXT' = mkVkSetSwapchainPresentTimingQueueSizeEXT vkSetSwapchainPresentTimingQueueSizeEXTPtr
+  r <- traceAroundEvent "vkSetSwapchainPresentTimingQueueSizeEXT" (vkSetSwapchainPresentTimingQueueSizeEXT'
+                                                                     (deviceHandle (device))
+                                                                     (swapchain)
+                                                                     (size))
+  when (r < SUCCESS) (throwIO (VulkanException r))
+  pure $ (r)
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetSwapchainTimingPropertiesEXT
+  :: FunPtr (Ptr Device_T -> SwapchainKHR -> Ptr SwapchainTimingPropertiesEXT -> Ptr Word64 -> IO Result) -> Ptr Device_T -> SwapchainKHR -> Ptr SwapchainTimingPropertiesEXT -> Ptr Word64 -> IO Result
+
+-- | vkGetSwapchainTimingPropertiesEXT - Obtain the display timing properties
+-- of the PE’s display
+--
+-- = Description
+--
+-- If 'getSwapchainTimingPropertiesEXT' returns
+-- 'Vulkan.Core10.Enums.Result.NOT_READY', the implementation was not able
+-- to determine the current refresh cycle duration. Some platforms /may/
+-- not provide timing properties until after at least one image has been
+-- presented to the @swapchain@. If timing properties change for the
+-- @swapchain@, these platforms /may/ not provide updated results until
+-- after at least one additional image has been presented to the
+-- @swapchain@.
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkGetSwapchainTimingPropertiesEXT-device-parameter# @device@
+--     /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkGetSwapchainTimingPropertiesEXT-swapchain-parameter#
+--     @swapchain@ /must/ be a valid
+--     'Vulkan.Extensions.Handles.SwapchainKHR' handle
+--
+-- -   #VUID-vkGetSwapchainTimingPropertiesEXT-pSwapchainTimingProperties-parameter#
+--     @pSwapchainTimingProperties@ /must/ be a valid pointer to a
+--     'SwapchainTimingPropertiesEXT' structure
+--
+-- -   #VUID-vkGetSwapchainTimingPropertiesEXT-pSwapchainTimingPropertiesCounter-parameter#
+--     If @pSwapchainTimingPropertiesCounter@ is not @NULL@,
+--     @pSwapchainTimingPropertiesCounter@ /must/ be a valid pointer to a
+--     @uint64_t@ value
+--
+-- -   #VUID-vkGetSwapchainTimingPropertiesEXT-swapchain-parent#
+--     @swapchain@ /must/ have been created, allocated, or retrieved from
+--     @device@
+--
+-- == Host Synchronization
+--
+-- -   Host access to @swapchain@ /must/ be externally synchronized
+--
+-- == Return Codes
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
+--
+--     -   'Vulkan.Core10.Enums.Result.NOT_READY'
+--
+--     -   '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_DEVICE_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_SURFACE_LOST_KHR'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_present_timing VK_EXT_present_timing>,
+-- 'Vulkan.Core10.Handles.Device',
+-- 'Vulkan.Extensions.Handles.SwapchainKHR', 'SwapchainTimingPropertiesEXT'
+getSwapchainTimingPropertiesEXT :: forall io
+                                 . (MonadIO io)
+                                => -- | @device@ is the device associated with @swapchain@.
+                                   Device
+                                -> -- | @swapchain@ is the swapchain to obtain timing properties for.
+                                   SwapchainKHR
+                                -> io (Result, SwapchainTimingPropertiesEXT, ("swapchainTimingPropertiesCounter" ::: Word64))
+getSwapchainTimingPropertiesEXT device swapchain = liftIO . evalContT $ do
+  let vkGetSwapchainTimingPropertiesEXTPtr = pVkGetSwapchainTimingPropertiesEXT (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkGetSwapchainTimingPropertiesEXTPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetSwapchainTimingPropertiesEXT is null" Nothing Nothing
+  let vkGetSwapchainTimingPropertiesEXT' = mkVkGetSwapchainTimingPropertiesEXT vkGetSwapchainTimingPropertiesEXTPtr
+  pPSwapchainTimingProperties <- ContT (withZeroCStruct @SwapchainTimingPropertiesEXT)
+  pPSwapchainTimingPropertiesCounter <- ContT $ bracket (callocBytes @Word64 8) free
+  r <- lift $ traceAroundEvent "vkGetSwapchainTimingPropertiesEXT" (vkGetSwapchainTimingPropertiesEXT'
+                                                                      (deviceHandle (device))
+                                                                      (swapchain)
+                                                                      (pPSwapchainTimingProperties)
+                                                                      (pPSwapchainTimingPropertiesCounter))
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+  pSwapchainTimingProperties <- lift $ peekCStruct @SwapchainTimingPropertiesEXT pPSwapchainTimingProperties
+  pSwapchainTimingPropertiesCounter <- lift $ peek @Word64 pPSwapchainTimingPropertiesCounter
+  pure $ (r, pSwapchainTimingProperties, pSwapchainTimingPropertiesCounter)
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetSwapchainTimeDomainPropertiesEXT
+  :: FunPtr (Ptr Device_T -> SwapchainKHR -> Ptr SwapchainTimeDomainPropertiesEXT -> Ptr Word64 -> IO Result) -> Ptr Device_T -> SwapchainKHR -> Ptr SwapchainTimeDomainPropertiesEXT -> Ptr Word64 -> IO Result
+
+-- | vkGetSwapchainTimeDomainPropertiesEXT - Obtain the time domains
+-- supported by the PE for the swapchain
+--
+-- = Description
+--
+-- If upon return 'SwapchainTimeDomainPropertiesEXT'::@timeDomainCount@ is
+-- smaller than the number of time domains supported for the given
+-- @swapchain@, 'Vulkan.Core10.Enums.Result.INCOMPLETE' will be returned
+-- instead of 'Vulkan.Core10.Enums.Result.SUCCESS' to indicate that not all
+-- the available values were returned.
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkGetSwapchainTimeDomainPropertiesEXT-device-parameter#
+--     @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkGetSwapchainTimeDomainPropertiesEXT-swapchain-parameter#
+--     @swapchain@ /must/ be a valid
+--     'Vulkan.Extensions.Handles.SwapchainKHR' handle
+--
+-- -   #VUID-vkGetSwapchainTimeDomainPropertiesEXT-pSwapchainTimeDomainProperties-parameter#
+--     @pSwapchainTimeDomainProperties@ /must/ be a valid pointer to a
+--     'SwapchainTimeDomainPropertiesEXT' structure
+--
+-- -   #VUID-vkGetSwapchainTimeDomainPropertiesEXT-pTimeDomainsCounter-parameter#
+--     If @pTimeDomainsCounter@ is not @NULL@, @pTimeDomainsCounter@ /must/
+--     be a valid pointer to a @uint64_t@ value
+--
+-- -   #VUID-vkGetSwapchainTimeDomainPropertiesEXT-swapchain-parent#
+--     @swapchain@ /must/ have been created, allocated, or retrieved from
+--     @device@
+--
+-- == Host Synchronization
+--
+-- -   Host access to @swapchain@ /must/ be externally synchronized
+--
+-- == Return Codes
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
+--
+--     -   'Vulkan.Core10.Enums.Result.INCOMPLETE'
+--
+--     -   '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_DEVICE_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_SURFACE_LOST_KHR'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_present_timing VK_EXT_present_timing>,
+-- 'Vulkan.Core10.Handles.Device',
+-- 'Vulkan.Extensions.Handles.SwapchainKHR',
+-- 'SwapchainTimeDomainPropertiesEXT'
+getSwapchainTimeDomainPropertiesEXT :: forall io
+                                     . (MonadIO io)
+                                    => -- | @device@ is the device associated with @swapchain@.
+                                       Device
+                                    -> -- | @swapchain@ is the swapchain to obtain time domain properties for.
+                                       SwapchainKHR
+                                    -> io (Result, SwapchainTimeDomainPropertiesEXT, ("timeDomainsCounter" ::: Word64))
+getSwapchainTimeDomainPropertiesEXT device swapchain = liftIO . evalContT $ do
+  let vkGetSwapchainTimeDomainPropertiesEXTPtr = pVkGetSwapchainTimeDomainPropertiesEXT (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkGetSwapchainTimeDomainPropertiesEXTPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetSwapchainTimeDomainPropertiesEXT is null" Nothing Nothing
+  let vkGetSwapchainTimeDomainPropertiesEXT' = mkVkGetSwapchainTimeDomainPropertiesEXT vkGetSwapchainTimeDomainPropertiesEXTPtr
+  pPSwapchainTimeDomainProperties <- ContT (withZeroCStruct @SwapchainTimeDomainPropertiesEXT)
+  pPTimeDomainsCounter <- ContT $ bracket (callocBytes @Word64 8) free
+  r <- lift $ traceAroundEvent "vkGetSwapchainTimeDomainPropertiesEXT" (vkGetSwapchainTimeDomainPropertiesEXT'
+                                                                          (deviceHandle (device))
+                                                                          (swapchain)
+                                                                          (pPSwapchainTimeDomainProperties)
+                                                                          (pPTimeDomainsCounter))
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+  pSwapchainTimeDomainProperties <- lift $ peekCStruct @SwapchainTimeDomainPropertiesEXT pPSwapchainTimeDomainProperties
+  pTimeDomainsCounter <- lift $ peek @Word64 pPTimeDomainsCounter
+  pure $ (r, pSwapchainTimeDomainProperties, pTimeDomainsCounter)
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetPastPresentationTimingEXT
+  :: FunPtr (Ptr Device_T -> Ptr PastPresentationTimingInfoEXT -> Ptr PastPresentationTimingPropertiesEXT -> IO Result) -> Ptr Device_T -> Ptr PastPresentationTimingInfoEXT -> Ptr PastPresentationTimingPropertiesEXT -> IO Result
+
+-- | vkGetPastPresentationTimingEXT - Obtain timing of previously-presented
+-- images
+--
+-- = Description
+--
+-- If upon return the value of
+-- 'PastPresentationTimingPropertiesEXT'::@presentationTimingCount@ is less
+-- than the number of available timing records for the given
+-- 'PastPresentationTimingInfoEXT'::@swapchain@,
+-- 'Vulkan.Core10.Enums.Result.INCOMPLETE' is returned instead of
+-- 'Vulkan.Core10.Enums.Result.SUCCESS' to indicate that not all the
+-- available values were returned.
+--
+-- Upon return, zero or more slots of the @swapchain@ internal timing
+-- results queue, equal to the number of entries written to
+-- 'PastPresentationTimingPropertiesEXT'::@pPresentationTimings@ for which
+-- @reportComplete@ is 'Vulkan.Core10.FundamentalTypes.TRUE', are made
+-- available for future
+-- 'Vulkan.Extensions.VK_KHR_swapchain.queuePresentKHR' calls. Elements of
+-- @pPresentationTimings@ are arranged in ascending order of present ids.
+--
+-- Timing information /may/ become available out of order with regards to
+-- their associated 'Vulkan.Extensions.VK_KHR_swapchain.queuePresentKHR'
+-- order. 'PAST_PRESENTATION_TIMING_ALLOW_OUT_OF_ORDER_RESULTS_BIT_EXT'
+-- /can/ be set in 'PastPresentationTimingInfoEXT'::@flags@ to allow
+-- 'getPastPresentationTimingEXT' to return results in that same order.
+-- Otherwise, results are returned in the order of their associated
+-- 'Vulkan.Extensions.VK_KHR_swapchain.queuePresentKHR' calls.
+--
+-- There is no requirement for any precise timing relationship between the
+-- completion of a present stage and the availability of any associated
+-- timing information. However, results /must/ be made available in finite
+-- time.
+--
+-- As an exception to the normal rules for objects which are externally
+-- synchronized, @swapchain@ /may/ be simultaneously used by other threads
+-- in calls to functions other than
+-- 'Vulkan.Extensions.VK_KHR_swapchain.destroySwapchainKHR' and
+-- 'Vulkan.Extensions.VK_KHR_swapchain.createSwapchainKHR' with @swapchain@
+-- used as an @oldSwapchain@. Access to the swapchain timing information
+-- /must/ be atomic within the implementation.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkGetPastPresentationTimingEXT-flags-12230# If
+--     'PAST_PRESENTATION_TIMING_ALLOW_OUT_OF_ORDER_RESULTS_BIT_EXT' is set
+--     in 'PastPresentationTimingInfoEXT'::@flags@, the @presentStageCount@
+--     value of each element of
+--     'PastPresentationTimingPropertiesEXT'::@pPresentationTimings@ /must/
+--     be at least the maximum number of present stages set in
+--     'PresentTimingInfoEXT'::@presentStageQueries@ among all
+--     'Vulkan.Extensions.VK_KHR_swapchain.queuePresentKHR' calls, with a
+--     non-zero @presentStageQueries@, for which complete results have not
+--     been returned yet by a previous call
+--
+-- -   #VUID-vkGetPastPresentationTimingEXT-flags-12231# If
+--     'PAST_PRESENTATION_TIMING_ALLOW_OUT_OF_ORDER_RESULTS_BIT_EXT' is not
+--     set in 'PastPresentationTimingInfoEXT'::@flags@, the
+--     @presentStageCount@ value of each element of
+--     'PastPresentationTimingPropertiesEXT'::@pPresentationTimings@ /must/
+--     be at least the number of present stages set in
+--     'PresentTimingInfoEXT'::@presentStageQueries@ for the earliest call
+--     to 'Vulkan.Extensions.VK_KHR_swapchain.queuePresentKHR', with a
+--     non-zero @presentStageQueries@, that corresponds to that element’s
+--     index and for which complete results have not been returned yet by a
+--     previous call
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkGetPastPresentationTimingEXT-device-parameter# @device@
+--     /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkGetPastPresentationTimingEXT-pPastPresentationTimingInfo-parameter#
+--     @pPastPresentationTimingInfo@ /must/ be a valid pointer to a valid
+--     'PastPresentationTimingInfoEXT' structure
+--
+-- -   #VUID-vkGetPastPresentationTimingEXT-pPastPresentationTimingProperties-parameter#
+--     @pPastPresentationTimingProperties@ /must/ be a valid pointer to a
+--     'PastPresentationTimingPropertiesEXT' structure
+--
+-- == Return Codes
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
+--
+--     -   'Vulkan.Core10.Enums.Result.INCOMPLETE'
+--
+--     -   '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_DEVICE_LOST'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DATE_KHR'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_SURFACE_LOST_KHR'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_present_timing VK_EXT_present_timing>,
+-- 'Vulkan.Core10.Handles.Device', 'PastPresentationTimingInfoEXT',
+-- 'PastPresentationTimingPropertiesEXT'
+getPastPresentationTimingEXT :: forall io
+                              . (MonadIO io)
+                             => -- | @device@ is the device associated with @swapchain@.
+                                Device
+                             -> -- | @pPastPresentationTimingInfo@ is a pointer to an instance of the
+                                -- 'PastPresentationTimingInfoEXT' structure.
+                                PastPresentationTimingInfoEXT
+                             -> io (Result, PastPresentationTimingPropertiesEXT)
+getPastPresentationTimingEXT device
+                               pastPresentationTimingInfo = liftIO . evalContT $ do
+  let vkGetPastPresentationTimingEXTPtr = pVkGetPastPresentationTimingEXT (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkGetPastPresentationTimingEXTPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetPastPresentationTimingEXT is null" Nothing Nothing
+  let vkGetPastPresentationTimingEXT' = mkVkGetPastPresentationTimingEXT vkGetPastPresentationTimingEXTPtr
+  pPastPresentationTimingInfo <- ContT $ withCStruct (pastPresentationTimingInfo)
+  pPPastPresentationTimingProperties <- ContT (withZeroCStruct @PastPresentationTimingPropertiesEXT)
+  r <- lift $ traceAroundEvent "vkGetPastPresentationTimingEXT" (vkGetPastPresentationTimingEXT'
+                                                                   (deviceHandle (device))
+                                                                   pPastPresentationTimingInfo
+                                                                   (pPPastPresentationTimingProperties))
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+  pPastPresentationTimingProperties <- lift $ peekCStruct @PastPresentationTimingPropertiesEXT pPPastPresentationTimingProperties
+  pure $ (r, pPastPresentationTimingProperties)
+
+
+-- | VkPhysicalDevicePresentTimingFeaturesEXT - Structure indicating support
+-- for present timing
+--
+-- = Members
+--
+-- This structure describes the following feature:
+--
+-- = Description
+--
+-- If the 'PhysicalDevicePresentTimingFeaturesEXT' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDevicePresentTimingFeaturesEXT', it /must/ add an instance of
+-- the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_present_timing VK_EXT_present_timing>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDevicePresentTimingFeaturesEXT = PhysicalDevicePresentTimingFeaturesEXT
+  { -- | #features-presentTiming# @presentTiming@ indicates that the
+    -- implementation supports 'getPastPresentationTimingEXT'.
+    presentTiming :: Bool
+  , -- | #features-presentAtAbsoluteTime# @presentAtAbsoluteTime@ indicates that
+    -- the implementation supports specifying absolute target present times.
+    presentAtAbsoluteTime :: Bool
+  , -- | #features-presentAtRelativeTime# @presentAtRelativeTime@ indicates that
+    -- the implementation supports specifying relative target present times.
+    presentAtRelativeTime :: Bool
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDevicePresentTimingFeaturesEXT)
+#endif
+deriving instance Show PhysicalDevicePresentTimingFeaturesEXT
+
+instance ToCStruct PhysicalDevicePresentTimingFeaturesEXT where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDevicePresentTimingFeaturesEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_TIMING_FEATURES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (presentTiming))
+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (presentAtAbsoluteTime))
+    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (presentAtRelativeTime))
+    f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_TIMING_FEATURES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDevicePresentTimingFeaturesEXT where
+  peekCStruct p = do
+    presentTiming <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    presentAtAbsoluteTime <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
+    presentAtRelativeTime <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))
+    pure $ PhysicalDevicePresentTimingFeaturesEXT
+             (bool32ToBool presentTiming)
+             (bool32ToBool presentAtAbsoluteTime)
+             (bool32ToBool presentAtRelativeTime)
+
+instance Storable PhysicalDevicePresentTimingFeaturesEXT where
+  sizeOf ~_ = 32
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDevicePresentTimingFeaturesEXT where
+  zero = PhysicalDevicePresentTimingFeaturesEXT
+           zero
+           zero
+           zero
+
+
+-- | VkPresentTimingSurfaceCapabilitiesEXT - Structure describing present
+-- timing capabilities of a surface
+--
+-- = Description
+--
+-- If @presentTimingSupported@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+-- the implementation /must/ also advertise support for at least the
+-- 'PRESENT_STAGE_QUEUE_OPERATIONS_END_BIT_EXT' present stage in pname
+-- @presentStageQueries@.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.SurfaceCapabilities2KHR'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_present_timing VK_EXT_present_timing>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32', 'PresentStageFlagsEXT',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PresentTimingSurfaceCapabilitiesEXT = PresentTimingSurfaceCapabilitiesEXT
+  { -- | @presentTimingSupported@ indicates whether querying presentation
+    -- timestamps is supported for a swapchain created from
+    -- 'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.PhysicalDeviceSurfaceInfo2KHR'::@surface@.
+    presentTimingSupported :: Bool
+  , -- | @presentAtAbsoluteTimeSupported@ indicates whether a swapchain created
+    -- from
+    -- 'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.PhysicalDeviceSurfaceInfo2KHR'::@surface@
+    -- supports presenting images with absolute times.
+    presentAtAbsoluteTimeSupported :: Bool
+  , -- | @presentAtRelativeTimeSupported@ indicates whether a swapchain created
+    -- from
+    -- 'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.PhysicalDeviceSurfaceInfo2KHR'::@surface@
+    -- supports presenting images with relative times.
+    presentAtRelativeTimeSupported :: Bool
+  , -- | @presentStageQueries@ is a bitmask of 'PresentStageFlagBitsEXT'
+    -- indicating which present stages a swapchain created from
+    -- 'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.PhysicalDeviceSurfaceInfo2KHR'::@surface@
+    -- is able to provide timing information for.
+    presentStageQueries :: PresentStageFlagsEXT
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PresentTimingSurfaceCapabilitiesEXT)
+#endif
+deriving instance Show PresentTimingSurfaceCapabilitiesEXT
+
+instance ToCStruct PresentTimingSurfaceCapabilitiesEXT where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PresentTimingSurfaceCapabilitiesEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PRESENT_TIMING_SURFACE_CAPABILITIES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (presentTimingSupported))
+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (presentAtAbsoluteTimeSupported))
+    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (presentAtRelativeTimeSupported))
+    poke ((p `plusPtr` 28 :: Ptr PresentStageFlagsEXT)) (presentStageQueries)
+    f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PRESENT_TIMING_SURFACE_CAPABILITIES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 28 :: Ptr PresentStageFlagsEXT)) (zero)
+    f
+
+instance FromCStruct PresentTimingSurfaceCapabilitiesEXT where
+  peekCStruct p = do
+    presentTimingSupported <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    presentAtAbsoluteTimeSupported <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
+    presentAtRelativeTimeSupported <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))
+    presentStageQueries <- peek @PresentStageFlagsEXT ((p `plusPtr` 28 :: Ptr PresentStageFlagsEXT))
+    pure $ PresentTimingSurfaceCapabilitiesEXT
+             (bool32ToBool presentTimingSupported)
+             (bool32ToBool presentAtAbsoluteTimeSupported)
+             (bool32ToBool presentAtRelativeTimeSupported)
+             presentStageQueries
+
+instance Storable PresentTimingSurfaceCapabilitiesEXT where
+  sizeOf ~_ = 32
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PresentTimingSurfaceCapabilitiesEXT where
+  zero = PresentTimingSurfaceCapabilitiesEXT
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkSwapchainTimingPropertiesEXT - Structure containing the RC duration of
+-- a display
+--
+-- = Description
+--
+-- If @refreshDuration@ is zero, the presentation engine is not able to
+-- determine the duration of the refresh cycle. Similarly, if
+-- @refreshInterval@ is zero, the presentation engine is not able to
+-- determine whether it is operating in VRR mode.
+--
+-- Otherwise, if @refreshInterval@ is the same as @refreshDuration@, the
+-- presentation engine is operating in FRR mode. In this case,
+-- @refreshDuration@ is the number of nanoseconds from the start of one
+-- refresh cycle to the start of the next refresh cycle.
+--
+-- If @refreshInterval@ is @UINT64_MAX@, the presentation engine is
+-- operating in VRR mode, and @refreshDuration@ is the minimum number of
+-- nanoseconds from the start of one refresh cycle to the start of the next
+-- refresh cycle.
+--
+-- If @refreshDuration@ and @refreshInterval@ are not zero,
+-- @refreshInterval@ is a factor of @refreshDuration@.
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_present_timing VK_EXT_present_timing>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'getSwapchainTimingPropertiesEXT'
+data SwapchainTimingPropertiesEXT = SwapchainTimingPropertiesEXT
+  { -- | @refreshDuration@ is zero or an indication of the duration of a refresh
+    -- cycle.
+    refreshDuration :: Word64
+  , -- | @refreshInterval@ is zero or a duration in nanoseconds indicating the
+    -- interval between refresh cycle durations.
+    refreshInterval :: Word64
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (SwapchainTimingPropertiesEXT)
+#endif
+deriving instance Show SwapchainTimingPropertiesEXT
+
+instance ToCStruct SwapchainTimingPropertiesEXT where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p SwapchainTimingPropertiesEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SWAPCHAIN_TIMING_PROPERTIES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word64)) (refreshDuration)
+    poke ((p `plusPtr` 24 :: Ptr Word64)) (refreshInterval)
+    f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SWAPCHAIN_TIMING_PROPERTIES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word64)) (zero)
+    poke ((p `plusPtr` 24 :: Ptr Word64)) (zero)
+    f
+
+instance FromCStruct SwapchainTimingPropertiesEXT where
+  peekCStruct p = do
+    refreshDuration <- peek @Word64 ((p `plusPtr` 16 :: Ptr Word64))
+    refreshInterval <- peek @Word64 ((p `plusPtr` 24 :: Ptr Word64))
+    pure $ SwapchainTimingPropertiesEXT
+             refreshDuration refreshInterval
+
+instance Storable SwapchainTimingPropertiesEXT where
+  sizeOf ~_ = 32
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero SwapchainTimingPropertiesEXT where
+  zero = SwapchainTimingPropertiesEXT
+           zero
+           zero
+
+
+-- | VkSwapchainTimeDomainPropertiesEXT - List of available time domains for
+-- a swapchain
+--
+-- = Description
+--
+-- When calling 'getSwapchainTimeDomainPropertiesEXT', if @pTimeDomains@ is
+-- @NULL@ and @pTimeDomainIds@ is @NULL@, then the number of time domains
+-- supported for the given @swapchain@ is returned in @timeDomainCount@.
+-- Otherwise, @timeDomainCount@ /must/ specify the number of elements in
+-- @pTimeDomains@ and @pTimeDomainIds@, and on return is overwritten with
+-- the number of values actually written to each array.
+--
+-- Implementations /must/ advertise support for at least one time domain of
+-- 'TIME_DOMAIN_PRESENT_STAGE_LOCAL_EXT'.
+--
+-- Due to the dynamic nature of their underlying
+-- 'Vulkan.Extensions.Handles.SurfaceKHR' properties, swapchains may need
+-- to expose multiple swapchain-local opaque time domains using the same
+-- 'TimeDomainKHR' value over time, for example when a surface is moved
+-- from one display hardware to another. Arbitrary identifiers, provided in
+-- @timeDomainIds@, are used by the implementation to differentiate opaque
+-- time domains of identical scopes.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkSwapchainTimeDomainPropertiesEXT-pTimeDomains-12370#
+--     @pTimeDomains@ and @pTimeDomainIds@ /must/ both be @NULL@ or both
+--     not be @NULL@
+--
+-- -   #VUID-VkSwapchainTimeDomainPropertiesEXT-pTimeDomains-12371# If
+--     @pTimeDomains@ and @pTimeDomainIds@ are not @NULL@, then
+--     @timeDomainCount@ /must/ not be zero
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkSwapchainTimeDomainPropertiesEXT-sType-sType# @sType@ /must/
+--     be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SWAPCHAIN_TIME_DOMAIN_PROPERTIES_EXT'
+--
+-- -   #VUID-VkSwapchainTimeDomainPropertiesEXT-pNext-pNext# @pNext@ /must/
+--     be @NULL@
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_present_timing VK_EXT_present_timing>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType', 'TimeDomainKHR',
+-- 'getSwapchainTimeDomainPropertiesEXT'
+data SwapchainTimeDomainPropertiesEXT = SwapchainTimeDomainPropertiesEXT
+  { -- | @timeDomainCount@ is an integer related to the number of time domains
+    -- available or queried, as described below.
+    timeDomainCount :: Word32
+  , -- | @pTimeDomains@ is a pointer to an array of 'TimeDomainKHR' values
+    -- representing time domains that are available for the swapchain.
+    timeDomains :: Ptr TimeDomainKHR
+  , -- | @pTimeDomainIds@ is a pointer to an array of unique identifiers for each
+    -- time domain.
+    timeDomainIds :: Ptr Word64
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (SwapchainTimeDomainPropertiesEXT)
+#endif
+deriving instance Show SwapchainTimeDomainPropertiesEXT
+
+instance ToCStruct SwapchainTimeDomainPropertiesEXT where
+  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p SwapchainTimeDomainPropertiesEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SWAPCHAIN_TIME_DOMAIN_PROPERTIES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (timeDomainCount)
+    poke ((p `plusPtr` 24 :: Ptr (Ptr TimeDomainKHR))) (timeDomains)
+    poke ((p `plusPtr` 32 :: Ptr (Ptr Word64))) (timeDomainIds)
+    f
+  cStructSize = 40
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SWAPCHAIN_TIME_DOMAIN_PROPERTIES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct SwapchainTimeDomainPropertiesEXT where
+  peekCStruct p = do
+    timeDomainCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    pTimeDomains <- peek @(Ptr TimeDomainKHR) ((p `plusPtr` 24 :: Ptr (Ptr TimeDomainKHR)))
+    pTimeDomainIds <- peek @(Ptr Word64) ((p `plusPtr` 32 :: Ptr (Ptr Word64)))
+    pure $ SwapchainTimeDomainPropertiesEXT
+             timeDomainCount pTimeDomains pTimeDomainIds
+
+instance Storable SwapchainTimeDomainPropertiesEXT where
+  sizeOf ~_ = 40
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero SwapchainTimeDomainPropertiesEXT where
+  zero = SwapchainTimeDomainPropertiesEXT
+           zero
+           zero
+           zero
+
+
+-- | VkPresentStageTimeEXT - Associate a present stage with a timestamp
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_present_timing VK_EXT_present_timing>,
+-- 'PastPresentationTimingEXT', 'PresentStageFlagsEXT'
+data PresentStageTimeEXT = PresentStageTimeEXT
+  { -- | @stage@ is a 'PresentStageFlagsEXT' value specifying a present stage.
+    stage :: PresentStageFlagsEXT
+  , -- | @time@ is a time in nanoseconds associated with the @stage@.
+    time :: Word64
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PresentStageTimeEXT)
+#endif
+deriving instance Show PresentStageTimeEXT
+
+instance ToCStruct PresentStageTimeEXT where
+  withCStruct x f = allocaBytes 16 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PresentStageTimeEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr PresentStageFlagsEXT)) (stage)
+    poke ((p `plusPtr` 8 :: Ptr Word64)) (time)
+    f
+  cStructSize = 16
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr PresentStageFlagsEXT)) (zero)
+    poke ((p `plusPtr` 8 :: Ptr Word64)) (zero)
+    f
+
+instance FromCStruct PresentStageTimeEXT where
+  peekCStruct p = do
+    stage <- peek @PresentStageFlagsEXT ((p `plusPtr` 0 :: Ptr PresentStageFlagsEXT))
+    time <- peek @Word64 ((p `plusPtr` 8 :: Ptr Word64))
+    pure $ PresentStageTimeEXT
+             stage time
+
+instance Storable PresentStageTimeEXT where
+  sizeOf ~_ = 16
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PresentStageTimeEXT where
+  zero = PresentStageTimeEXT
+           zero
+           zero
+
+
+-- | VkPastPresentationTimingInfoEXT - Structure specifying swapchain present
+-- timing query parameters
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkPastPresentationTimingInfoEXT-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PAST_PRESENTATION_TIMING_INFO_EXT'
+--
+-- -   #VUID-VkPastPresentationTimingInfoEXT-pNext-pNext# @pNext@ /must/ be
+--     @NULL@
+--
+-- -   #VUID-VkPastPresentationTimingInfoEXT-flags-parameter# @flags@
+--     /must/ be a valid combination of 'PastPresentationTimingFlagBitsEXT'
+--     values
+--
+-- -   #VUID-VkPastPresentationTimingInfoEXT-swapchain-parameter#
+--     @swapchain@ /must/ be a valid
+--     'Vulkan.Extensions.Handles.SwapchainKHR' handle
+--
+-- == Host Synchronization
+--
+-- -   Host access to @swapchain@ /must/ be externally synchronized
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_present_timing VK_EXT_present_timing>,
+-- 'PastPresentationTimingFlagsEXT',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'Vulkan.Extensions.Handles.SwapchainKHR', 'getPastPresentationTimingEXT'
+data PastPresentationTimingInfoEXT = PastPresentationTimingInfoEXT
+  { -- | @flags@ is a bitmask of 'PastPresentationTimingFlagBitsEXT' specifying
+    -- options for queries of past presentation timing information.
+    flags :: PastPresentationTimingFlagsEXT
+  , -- | @swapchain@ is the swapchain to obtain presentation timing information
+    -- for.
+    swapchain :: SwapchainKHR
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PastPresentationTimingInfoEXT)
+#endif
+deriving instance Show PastPresentationTimingInfoEXT
+
+instance ToCStruct PastPresentationTimingInfoEXT where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PastPresentationTimingInfoEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PAST_PRESENTATION_TIMING_INFO_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr PastPresentationTimingFlagsEXT)) (flags)
+    poke ((p `plusPtr` 24 :: Ptr SwapchainKHR)) (swapchain)
+    f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PAST_PRESENTATION_TIMING_INFO_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 24 :: Ptr SwapchainKHR)) (zero)
+    f
+
+instance FromCStruct PastPresentationTimingInfoEXT where
+  peekCStruct p = do
+    flags <- peek @PastPresentationTimingFlagsEXT ((p `plusPtr` 16 :: Ptr PastPresentationTimingFlagsEXT))
+    swapchain <- peek @SwapchainKHR ((p `plusPtr` 24 :: Ptr SwapchainKHR))
+    pure $ PastPresentationTimingInfoEXT
+             flags swapchain
+
+instance Storable PastPresentationTimingInfoEXT where
+  sizeOf ~_ = 32
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PastPresentationTimingInfoEXT where
+  zero = PastPresentationTimingInfoEXT
+           zero
+           zero
+
+
+-- | VkPastPresentationTimingPropertiesEXT - Structure containing details
+-- about a swapchain past presentation activity
+--
+-- = Description
+--
+-- When calling 'getPastPresentationTimingEXT', if @pPresentationTimings@
+-- is @NULL@, then the number of available timing records for the given
+-- @swapchain@ is returned in @presentationTimingCount@. Otherwise,
+-- @presentationTimingCount@ /must/ specify the number of elements in the
+-- @pPresentationTimings@ array, and on return is overwritten with the
+-- number of structures actually written to @pPresentationTimings@.
+--
+-- if 'PAST_PRESENTATION_TIMING_ALLOW_PARTIAL_RESULTS_BIT_EXT' is specified
+-- in 'PastPresentationTimingInfoEXT'::@flags@,
+-- 'getPastPresentationTimingEXT' /may/ return incomplete results,
+-- containing only information for a subset of the requested present
+-- stages. Further calls to 'getPastPresentationTimingEXT' will keep
+-- providing all available results for a previously incomplete entry until
+-- it is complete.
+--
+-- The implementation /must/ return a 'PastPresentationTimingEXT' for every
+-- 'Vulkan.Extensions.VK_KHR_swapchain.queuePresentKHR' referencing
+-- @swapchain@ where a non-zero
+-- 'PresentTimingInfoEXT'::@presentStageQueries@ was specified and at least
+-- one present stage has available results.
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_present_timing VK_EXT_present_timing>,
+-- 'PastPresentationTimingEXT',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'getPastPresentationTimingEXT'
+data PastPresentationTimingPropertiesEXT = PastPresentationTimingPropertiesEXT
+  { -- | @timingPropertiesCounter@ is a 64-bit unsigned integer set by the
+    -- implementation to the current value of the swapchain’s internal timing
+    -- properties counter.
+    timingPropertiesCounter :: Word64
+  , -- | @timeDomainsCounter@ is a 64-bit unsigned integer set by the
+    -- implementation to the current value of the swapchain’s internal time
+    -- domains list counter.
+    timeDomainsCounter :: Word64
+  , -- | @presentationTimingCount@ is an integer related to the number of
+    -- 'PastPresentationTimingEXT' structures available or queried, as
+    -- described below.
+    presentationTimingCount :: Word32
+  , -- | @pPresentationTimings@ is @NULL@ or a pointer to an array of
+    -- 'PastPresentationTimingEXT' structures.
+    presentationTimings :: Ptr PastPresentationTimingEXT
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PastPresentationTimingPropertiesEXT)
+#endif
+deriving instance Show PastPresentationTimingPropertiesEXT
+
+instance ToCStruct PastPresentationTimingPropertiesEXT where
+  withCStruct x f = allocaBytes 48 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PastPresentationTimingPropertiesEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PAST_PRESENTATION_TIMING_PROPERTIES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word64)) (timingPropertiesCounter)
+    poke ((p `plusPtr` 24 :: Ptr Word64)) (timeDomainsCounter)
+    poke ((p `plusPtr` 32 :: Ptr Word32)) (presentationTimingCount)
+    poke ((p `plusPtr` 40 :: Ptr (Ptr PastPresentationTimingEXT))) (presentationTimings)
+    f
+  cStructSize = 48
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PAST_PRESENTATION_TIMING_PROPERTIES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word64)) (zero)
+    poke ((p `plusPtr` 24 :: Ptr Word64)) (zero)
+    poke ((p `plusPtr` 32 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 40 :: Ptr (Ptr PastPresentationTimingEXT))) (zero)
+    f
+
+instance FromCStruct PastPresentationTimingPropertiesEXT where
+  peekCStruct p = do
+    timingPropertiesCounter <- peek @Word64 ((p `plusPtr` 16 :: Ptr Word64))
+    timeDomainsCounter <- peek @Word64 ((p `plusPtr` 24 :: Ptr Word64))
+    presentationTimingCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))
+    pPresentationTimings <- peek @(Ptr PastPresentationTimingEXT) ((p `plusPtr` 40 :: Ptr (Ptr PastPresentationTimingEXT)))
+    pure $ PastPresentationTimingPropertiesEXT
+             timingPropertiesCounter
+             timeDomainsCounter
+             presentationTimingCount
+             pPresentationTimings
+
+instance Storable PastPresentationTimingPropertiesEXT where
+  sizeOf ~_ = 48
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PastPresentationTimingPropertiesEXT where
+  zero = PastPresentationTimingPropertiesEXT
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkPastPresentationTimingEXT - Structure containing timing information
+-- about a previously-presented image
+--
+-- = Description
+--
+-- When calling 'getPastPresentationTimingEXT', the implementation sets
+-- @presentStageCount@ to the number of present stages it has written
+-- results for. If 'PAST_PRESENTATION_TIMING_ALLOW_PARTIAL_RESULTS_BIT_EXT'
+-- was specified in 'PastPresentationTimingInfoEXT'::@flags@, the
+-- implementation /may/ return an incomplete report containing fewer
+-- present stage results than were queried by the associated presentation
+-- request. Otherwise, results for all the present stages queried by the
+-- presentation request are written by the implementation.
+--
+-- Timing information for some present stages /may/ have a time value of 0,
+-- indicating that results for that present stage are not available.
+--
+-- For systems with multiple entities operating within the presentation
+-- engine, such as multiple displays, @pPresentStages@ will return timing
+-- results for one entity which has been affected by the presentation.
+--
+-- @timeDomainId@ /may/ be different than the time domain that was
+-- specified in 'PresentTimingInfoEXT'::@timeDomainId@ if the requirements
+-- for using this time domain could not be met at the time the presentation
+-- engine processed the presentation request. In such a case, the
+-- presentation engine /may/ pick a time domain to fall back to, if one is
+-- available, and report results in that domain. Applications /can/
+-- continue to use this fallback time domain in future
+-- 'Vulkan.Extensions.VK_KHR_swapchain.queuePresentKHR' calls, or they
+-- /can/ call 'getSwapchainTimeDomainPropertiesEXT' to choose from the
+-- currently supported time domains.
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_present_timing VK_EXT_present_timing>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'PastPresentationTimingPropertiesEXT', 'PresentStageTimeEXT',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType', 'TimeDomainKHR'
+data PastPresentationTimingEXT = PastPresentationTimingEXT
+  { -- | @presentId@ is zero or a value that was given to a previous
+    -- 'Vulkan.Extensions.VK_KHR_swapchain.queuePresentKHR' command via
+    -- 'Vulkan.Extensions.VK_KHR_present_id2.PresentId2KHR'::@pPresentIds@.
+    presentId :: Word64
+  , -- | @targetTime@ is the application-provided target absolute time or
+    -- duration of the associated presentation request in
+    -- 'PresentTimingInfoEXT'::@targetTime@.
+    targetTime :: Word64
+  , -- | @presentStageCount@ is a count of items contained in @pPresentStages@.
+    presentStageCount :: Word32
+  , -- | @pPresentStages@ a pointer to an array of 'PresentStageTimeEXT'
+    -- providing timing information for the presentation request associated
+    -- with @presentId@.
+    presentStages :: Ptr PresentStageTimeEXT
+  , -- | @timeDomain@ is the time domain used by the presentation engine to
+    -- report times in @pPresentStages@.
+    timeDomain :: TimeDomainKHR
+  , -- | @timeDomainId@ is the id associated with @timeDomain@.
+    timeDomainId :: Word64
+  , -- | @reportComplete@ is 'Vulkan.Core10.FundamentalTypes.TRUE' if the
+    -- presentation engine has reported all the requested results in
+    -- @pPresentStages@.
+    reportComplete :: Bool
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PastPresentationTimingEXT)
+#endif
+deriving instance Show PastPresentationTimingEXT
+
+instance ToCStruct PastPresentationTimingEXT where
+  withCStruct x f = allocaBytes 72 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PastPresentationTimingEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PAST_PRESENTATION_TIMING_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word64)) (presentId)
+    poke ((p `plusPtr` 24 :: Ptr Word64)) (targetTime)
+    poke ((p `plusPtr` 32 :: Ptr Word32)) (presentStageCount)
+    poke ((p `plusPtr` 40 :: Ptr (Ptr PresentStageTimeEXT))) (presentStages)
+    poke ((p `plusPtr` 48 :: Ptr TimeDomainKHR)) (timeDomain)
+    poke ((p `plusPtr` 56 :: Ptr Word64)) (timeDomainId)
+    poke ((p `plusPtr` 64 :: Ptr Bool32)) (boolToBool32 (reportComplete))
+    f
+  cStructSize = 72
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PAST_PRESENTATION_TIMING_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word64)) (zero)
+    poke ((p `plusPtr` 24 :: Ptr Word64)) (zero)
+    poke ((p `plusPtr` 32 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 40 :: Ptr (Ptr PresentStageTimeEXT))) (zero)
+    poke ((p `plusPtr` 48 :: Ptr TimeDomainKHR)) (zero)
+    poke ((p `plusPtr` 56 :: Ptr Word64)) (zero)
+    poke ((p `plusPtr` 64 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PastPresentationTimingEXT where
+  peekCStruct p = do
+    presentId <- peek @Word64 ((p `plusPtr` 16 :: Ptr Word64))
+    targetTime <- peek @Word64 ((p `plusPtr` 24 :: Ptr Word64))
+    presentStageCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))
+    pPresentStages <- peek @(Ptr PresentStageTimeEXT) ((p `plusPtr` 40 :: Ptr (Ptr PresentStageTimeEXT)))
+    timeDomain <- peek @TimeDomainKHR ((p `plusPtr` 48 :: Ptr TimeDomainKHR))
+    timeDomainId <- peek @Word64 ((p `plusPtr` 56 :: Ptr Word64))
+    reportComplete <- peek @Bool32 ((p `plusPtr` 64 :: Ptr Bool32))
+    pure $ PastPresentationTimingEXT
+             presentId
+             targetTime
+             presentStageCount
+             pPresentStages
+             timeDomain
+             timeDomainId
+             (bool32ToBool reportComplete)
+
+instance Storable PastPresentationTimingEXT where
+  sizeOf ~_ = 72
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PastPresentationTimingEXT where
+  zero = PastPresentationTimingEXT
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkPresentTimingsInfoEXT - Array of VkPresentTimingInfoEXT to chain with
+-- VkPresentInfoKHR
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkPresentTimingsInfoEXT-swapchainCount-12233# @swapchainCount@
+--     /must/ be equal to
+--     'Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR'::@swapchainCount@
+--
+-- -   #VUID-VkPresentTimingsInfoEXT-pSwapchains-12234# All swapchains in
+--     'Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR'::@pSwapchains@
+--     /must/ have been created with the
+--     'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR'::@flags@
+--     field containing
+--     'Vulkan.Extensions.VK_KHR_swapchain.SWAPCHAIN_CREATE_PRESENT_TIMING_BIT_EXT'
+--
+-- -   #VUID-VkPresentTimingsInfoEXT-pSwapchains-12235# For each member of
+--     'Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR'::@pSwapchains@,
+--     if the associated 'PresentTimingInfoEXT'::@targetTime@ is not zero,
+--     the swapchain’s current present mode /must/ be
+--     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_FIFO_LATEST_READY_KHR',
+--     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_FIFO_KHR' or
+--     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_FIFO_RELAXED_KHR'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkPresentTimingsInfoEXT-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PRESENT_TIMINGS_INFO_EXT'
+--
+-- -   #VUID-VkPresentTimingsInfoEXT-pTimingInfos-parameter# If
+--     @pTimingInfos@ is not @NULL@, @pTimingInfos@ /must/ be a valid
+--     pointer to an array of @swapchainCount@ valid 'PresentTimingInfoEXT'
+--     structures
+--
+-- -   #VUID-VkPresentTimingsInfoEXT-swapchainCount-arraylength#
+--     @swapchainCount@ /must/ be greater than @0@
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_present_timing VK_EXT_present_timing>,
+-- 'PresentTimingInfoEXT',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PresentTimingsInfoEXT = PresentTimingsInfoEXT
+  { -- | @swapchainCount@ is the number of swapchains being presented to by this
+    -- command.
+    swapchainCount :: Word32
+  , -- | @pTimingInfos@ is @NULL@ or a pointer to an array of
+    -- 'PresentTimingInfoEXT' elements with @swapchainCount@ entries. If not
+    -- @NULL@, each element of @pTimingInfos@ contains timing information for
+    -- the presentation of the image corresponding to the entry in the
+    -- 'Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR'::@pImageIndices@
+    -- array.
+    timingInfos :: Vector PresentTimingInfoEXT
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PresentTimingsInfoEXT)
+#endif
+deriving instance Show PresentTimingsInfoEXT
+
+instance ToCStruct PresentTimingsInfoEXT where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PresentTimingsInfoEXT{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PRESENT_TIMINGS_INFO_EXT)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    let pTimingInfosLength = Data.Vector.length $ (timingInfos)
+    swapchainCount'' <- lift $ if (swapchainCount) == 0
+      then pure $ fromIntegral pTimingInfosLength
+      else do
+        unless (fromIntegral pTimingInfosLength == (swapchainCount) || pTimingInfosLength == 0) $
+          throwIO $ IOError Nothing InvalidArgument "" "pTimingInfos must be empty or have 'swapchainCount' elements" Nothing Nothing
+        pure (swapchainCount)
+    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) (swapchainCount'')
+    pTimingInfos'' <- if Data.Vector.null (timingInfos)
+      then pure nullPtr
+      else do
+        pPTimingInfos <- ContT $ allocaBytes @PresentTimingInfoEXT (((Data.Vector.length (timingInfos))) * 48)
+        lift $ Data.Vector.imapM_ (\i e -> poke (pPTimingInfos `plusPtr` (48 * (i)) :: Ptr PresentTimingInfoEXT) (e)) ((timingInfos))
+        pure $ pPTimingInfos
+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr PresentTimingInfoEXT))) pTimingInfos''
+    lift $ f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PRESENT_TIMINGS_INFO_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    f
+
+instance FromCStruct PresentTimingsInfoEXT where
+  peekCStruct p = do
+    swapchainCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    pTimingInfos <- peek @(Ptr PresentTimingInfoEXT) ((p `plusPtr` 24 :: Ptr (Ptr PresentTimingInfoEXT)))
+    let pTimingInfosLength = if pTimingInfos == nullPtr then 0 else (fromIntegral swapchainCount)
+    pTimingInfos' <- generateM pTimingInfosLength (\i -> peekCStruct @PresentTimingInfoEXT ((pTimingInfos `advancePtrBytes` (48 * (i)) :: Ptr PresentTimingInfoEXT)))
+    pure $ PresentTimingsInfoEXT
+             swapchainCount pTimingInfos'
+
+instance Zero PresentTimingsInfoEXT where
+  zero = PresentTimingsInfoEXT
+           zero
+           mempty
+
+
+-- | VkPresentTimingInfoEXT - Specifies per-present timing information
+--
+-- = Description
+--
+-- If @targetTime@ is not zero, the implementation attempts to align the
+-- 'PRESENT_STAGE_IMAGE_FIRST_PIXEL_VISIBLE_BIT_EXT' present stage of that
+-- presentation request with the time specified in @targetTime@ according
+-- to the time domain used. If
+-- 'PRESENT_TIMING_INFO_PRESENT_AT_NEAREST_REFRESH_CYCLE_BIT_EXT' is not
+-- set in @flags@, it indicates that the application would strictly prefer
+-- the image to not be visible before @targetTime@ has lapsed.
+--
+-- If @targetTime@ is not zero and @timeDomainId@ is associated with a
+-- 'TIME_DOMAIN_PRESENT_STAGE_LOCAL_EXT' time domain,
+-- @targetTimeDomainPresentStage@ is used to specify which present stage’s
+-- time domain @targetTime@ is specified for. Otherwise,
+-- @targetTimeDomainPresentStage@ is ignored.
+--
+-- If @presentStageQueries@ is not zero, a slot in the swapchain’s internal
+-- results queue is reserved to hold the requested present timing data
+-- until the application retrieves them. If no slots are available,
+-- presentation fails and returns
+-- 'Vulkan.Core10.Enums.Result.ERROR_PRESENT_TIMING_QUEUE_FULL_EXT'.
+--
+-- Some platforms, due to hardware or system limitations, /may/ not be able
+-- to accurately time @targetTime@ with the actual physical event of the
+-- image becoming visible on the display. However, those timing
+-- capabilities /may/ still be useful and result in improved animation
+-- quality.
+--
+-- As such, the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-presentAtAbsoluteTime presentAtAbsoluteTime>
+-- and
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-presentAtRelativeTime presentAtRelativeTime>
+-- features do not provide a strict guarantee regarding the completion of
+-- the 'PRESENT_STAGE_IMAGE_FIRST_PIXEL_VISIBLE_BIT_EXT' present stage
+-- relative to the @targetTime@, and implementations /must/ strive to make
+-- it as consistent and accurate as possible.
+--
+-- Applications that specify an absolute present time /should/ regularly
+-- rebase their calculations for their next target time on the feedback
+-- from 'getPastPresentationTimingEXT' to compensate for accumulated
+-- precision errors or potential clock drift. It is recommended that when
+-- targeting the time of a vertical blanking period, applications set
+-- 'PRESENT_TIMING_INFO_PRESENT_AT_NEAREST_REFRESH_CYCLE_BIT_EXT' to allow
+-- the implementation to compensate for small precision errors that may
+-- cause an image to be displayed one refresh cycle later than intended.
+--
+-- Some implementations /may/ not provide timing data for the
+-- 'PRESENT_STAGE_IMAGE_FIRST_PIXEL_VISIBLE_BIT_EXT' present stage.
+-- Applications /should/ use the supported present stage nearest to it to
+-- compute a desired target presentation time.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkPresentTimingInfoEXT-targetTime-12236# If @targetTime@ is
+--     not zero and @flags@ does not contain
+--     'PRESENT_TIMING_INFO_PRESENT_AT_RELATIVE_TIME_BIT_EXT', the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-presentAtAbsoluteTime presentAtAbsoluteTime>
+--     feature /must/ be enabled and the @presentAtAbsoluteTimeSupported@
+--     member of the 'PresentTimingSurfaceCapabilitiesEXT' returned by
+--     'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.getPhysicalDeviceSurfaceCapabilities2KHR'
+--     for the surface associated with the swapchain /must/ be
+--     'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-VkPresentTimingInfoEXT-targetTime-12237# If @targetTime@ is
+--     not zero and @flags@ contains
+--     'PRESENT_TIMING_INFO_PRESENT_AT_RELATIVE_TIME_BIT_EXT', the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-presentAtRelativeTime presentAtRelativeTime>
+--     feature /must/ be enabled and the @presentAtRelativeTimeSupported@
+--     member of the 'PresentTimingSurfaceCapabilitiesEXT' returned by
+--     'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.getPhysicalDeviceSurfaceCapabilities2KHR'
+--     for the surface associated with the swapchain /must/ be
+--     'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-VkPresentTimingInfoEXT-timeDomainId-12238# If @timeDomainId@
+--     is associated with a 'TIME_DOMAIN_PRESENT_STAGE_LOCAL_EXT' time
+--     domain, and @targetTime@ is not zero, @targetTimeDomainPresentStage@
+--     /must/ be a single 'PresentStageFlagsEXT' value
+--
+-- -   #VUID-VkPresentTimingInfoEXT-timeDomainId-12400# @timeDomainId@
+--     /must/ be an id previously returned by
+--     'getSwapchainTimeDomainPropertiesEXT'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkPresentTimingInfoEXT-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PRESENT_TIMING_INFO_EXT'
+--
+-- -   #VUID-VkPresentTimingInfoEXT-pNext-pNext# @pNext@ /must/ be @NULL@
+--
+-- -   #VUID-VkPresentTimingInfoEXT-flags-parameter# @flags@ /must/ be a
+--     valid combination of 'PresentTimingInfoFlagBitsEXT' values
+--
+-- -   #VUID-VkPresentTimingInfoEXT-presentStageQueries-parameter#
+--     @presentStageQueries@ /must/ be a valid combination of
+--     'PresentStageFlagBitsEXT' values
+--
+-- -   #VUID-VkPresentTimingInfoEXT-targetTimeDomainPresentStage-parameter#
+--     @targetTimeDomainPresentStage@ /must/ be a valid combination of
+--     'PresentStageFlagBitsEXT' values
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_present_timing VK_EXT_present_timing>,
+-- 'PresentStageFlagsEXT', 'PresentTimingInfoFlagsEXT',
+-- 'PresentTimingsInfoEXT',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PresentTimingInfoEXT = PresentTimingInfoEXT
+  { -- | @flags@ is a bitmask of 'PresentTimingInfoFlagBitsEXT' specifying
+    -- options for how to interpret the timing information.
+    flags :: PresentTimingInfoFlagsEXT
+  , -- | @targetTime@ is zero or a value specifying the target present time or
+    -- duration, in nanoseconds, of the presentation request.
+    targetTime :: Word64
+  , -- | @timeDomainId@ is the id of the time domain used to specify the absolute
+    -- target present time and the timing results obtained in a subsequent
+    -- 'getPastPresentationTimingEXT' call for the current presentation
+    -- request.
+    timeDomainId :: Word64
+  , -- | @presentStageQueries@ is zero or a valid 'PresentStageFlagsEXT' value
+    -- indicating which present stages the presentation engine will collect
+    -- timing information for.
+    presentStageQueries :: PresentStageFlagsEXT
+  , -- | @targetTimeDomainPresentStage@ is a valid 'PresentStageFlagsEXT'
+    -- specifying a single present stage used to interpret @targetTime@.
+    targetTimeDomainPresentStage :: PresentStageFlagsEXT
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PresentTimingInfoEXT)
+#endif
+deriving instance Show PresentTimingInfoEXT
+
+instance ToCStruct PresentTimingInfoEXT where
+  withCStruct x f = allocaBytes 48 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PresentTimingInfoEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PRESENT_TIMING_INFO_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr PresentTimingInfoFlagsEXT)) (flags)
+    poke ((p `plusPtr` 24 :: Ptr Word64)) (targetTime)
+    poke ((p `plusPtr` 32 :: Ptr Word64)) (timeDomainId)
+    poke ((p `plusPtr` 40 :: Ptr PresentStageFlagsEXT)) (presentStageQueries)
+    poke ((p `plusPtr` 44 :: Ptr PresentStageFlagsEXT)) (targetTimeDomainPresentStage)
+    f
+  cStructSize = 48
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PRESENT_TIMING_INFO_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 24 :: Ptr Word64)) (zero)
+    poke ((p `plusPtr` 32 :: Ptr Word64)) (zero)
+    f
+
+instance FromCStruct PresentTimingInfoEXT where
+  peekCStruct p = do
+    flags <- peek @PresentTimingInfoFlagsEXT ((p `plusPtr` 16 :: Ptr PresentTimingInfoFlagsEXT))
+    targetTime <- peek @Word64 ((p `plusPtr` 24 :: Ptr Word64))
+    timeDomainId <- peek @Word64 ((p `plusPtr` 32 :: Ptr Word64))
+    presentStageQueries <- peek @PresentStageFlagsEXT ((p `plusPtr` 40 :: Ptr PresentStageFlagsEXT))
+    targetTimeDomainPresentStage <- peek @PresentStageFlagsEXT ((p `plusPtr` 44 :: Ptr PresentStageFlagsEXT))
+    pure $ PresentTimingInfoEXT
+             flags
+             targetTime
+             timeDomainId
+             presentStageQueries
+             targetTimeDomainPresentStage
+
+instance Storable PresentTimingInfoEXT where
+  sizeOf ~_ = 48
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PresentTimingInfoEXT where
+  zero = PresentTimingInfoEXT
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkSwapchainCalibratedTimestampInfoEXT - Structure specifying the
+-- swapchain to calibrate a swapchain-local timestamp query
+--
+-- = Description
+--
+-- @timeDomainId@ /must/ be an id previously reported by
+-- 'getSwapchainTimeDomainPropertiesEXT' for @swapchain@. If the
+-- @timeDomainId@ is no longer supported by the @swapchain@,
+-- implementations /may/ report zero as the calibrated timestamp value.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkSwapchainCalibratedTimestampInfoEXT-timeDomain-12228# If the
+--     @timeDomain@ member of the
+--     'Vulkan.Extensions.VK_KHR_calibrated_timestamps.CalibratedTimestampInfoKHR'
+--     structure in this structure’s @pNext@ chain is
+--     'TIME_DOMAIN_PRESENT_STAGE_LOCAL_EXT', @presentStage@ /must/ specify
+--     one and only one present stage
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkSwapchainCalibratedTimestampInfoEXT-sType-sType# @sType@
+--     /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SWAPCHAIN_CALIBRATED_TIMESTAMP_INFO_EXT'
+--
+-- -   #VUID-VkSwapchainCalibratedTimestampInfoEXT-swapchain-parameter#
+--     @swapchain@ /must/ be a valid
+--     'Vulkan.Extensions.Handles.SwapchainKHR' handle
+--
+-- -   #VUID-VkSwapchainCalibratedTimestampInfoEXT-presentStage-parameter#
+--     @presentStage@ /must/ be a valid combination of
+--     'PresentStageFlagBitsEXT' values
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Extensions.VK_KHR_calibrated_timestamps.CalibratedTimestampInfoKHR'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_present_timing VK_EXT_present_timing>,
+-- 'PresentStageFlagsEXT',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'Vulkan.Extensions.Handles.SwapchainKHR'
+data SwapchainCalibratedTimestampInfoEXT = SwapchainCalibratedTimestampInfoEXT
+  { -- | @swapchain@ is the swapchain to retrieve the swapchain-local timestamp
+    -- from.
+    swapchain :: SwapchainKHR
+  , -- | @presentStage@ is zero or a 'PresentStageFlagsEXT' value used to
+    -- identify a single present stage when calibrating a timestamp in the
+    -- 'TIME_DOMAIN_PRESENT_STAGE_LOCAL_EXT' time domain.
+    presentStage :: PresentStageFlagsEXT
+  , -- | @timeDomainId@ is the id for the opaque time domain being calibrated.
+    timeDomainId :: Word64
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (SwapchainCalibratedTimestampInfoEXT)
+#endif
+deriving instance Show SwapchainCalibratedTimestampInfoEXT
+
+instance ToCStruct SwapchainCalibratedTimestampInfoEXT where
+  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p SwapchainCalibratedTimestampInfoEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SWAPCHAIN_CALIBRATED_TIMESTAMP_INFO_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr SwapchainKHR)) (swapchain)
+    poke ((p `plusPtr` 24 :: Ptr PresentStageFlagsEXT)) (presentStage)
+    poke ((p `plusPtr` 32 :: Ptr Word64)) (timeDomainId)
+    f
+  cStructSize = 40
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SWAPCHAIN_CALIBRATED_TIMESTAMP_INFO_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr SwapchainKHR)) (zero)
+    poke ((p `plusPtr` 32 :: Ptr Word64)) (zero)
+    f
+
+instance FromCStruct SwapchainCalibratedTimestampInfoEXT where
+  peekCStruct p = do
+    swapchain <- peek @SwapchainKHR ((p `plusPtr` 16 :: Ptr SwapchainKHR))
+    presentStage <- peek @PresentStageFlagsEXT ((p `plusPtr` 24 :: Ptr PresentStageFlagsEXT))
+    timeDomainId <- peek @Word64 ((p `plusPtr` 32 :: Ptr Word64))
+    pure $ SwapchainCalibratedTimestampInfoEXT
+             swapchain presentStage timeDomainId
+
+instance Storable SwapchainCalibratedTimestampInfoEXT where
+  sizeOf ~_ = 40
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero SwapchainCalibratedTimestampInfoEXT where
+  zero = SwapchainCalibratedTimestampInfoEXT
+           zero
+           zero
+           zero
+
+
+-- | VkTimeDomainKHR - Supported time domains
+--
+-- = Description
+--
+-- -   'TIME_DOMAIN_DEVICE_KHR' specifies the device time domain. Timestamp
+--     values in this time domain use the same units and are comparable
+--     with device timestamp values captured using
+--     'Vulkan.Core10.CommandBufferBuilding.cmdWriteTimestamp' or
+--     'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.cmdWriteTimestamp2'
+--     and are defined to be incrementing according to the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-timestampPeriod timestampPeriod>
+--     of the device.
+--
+-- -   'TIME_DOMAIN_PRESENT_STAGE_LOCAL_EXT' specifies a time domain unique
+--     to a particular swapchain and a specific present stage. Timestamp
+--     values in this time domain are in units of nanosecond and are
+--     comparable only with other values from the same swapchain and
+--     present stage.
+--
+-- -   'TIME_DOMAIN_SWAPCHAIN_LOCAL_EXT' specifies a time domain unique to
+--     a particular swapchain. Timestamp values in this time domain are in
+--     units of nanosecond and are comparable only with other values from
+--     the same swapchain.
+--
+-- -   'TIME_DOMAIN_CLOCK_MONOTONIC_KHR' specifies the CLOCK_MONOTONIC time
+--     domain available on POSIX platforms. Timestamp values in this time
+--     domain are in units of nanoseconds and are comparable with platform
+--     timestamp values captured using the POSIX clock_gettime API as
+--     computed by this example:
+--
+-- An implementation supporting @VK_KHR_calibrated_timestamps@ or
+-- @VK_EXT_calibrated_timestamps@ will use the same time domain for all its
+-- 'Vulkan.Core10.Handles.Queue' so that timestamp values reported for
+-- 'TIME_DOMAIN_DEVICE_KHR' can be matched to any timestamp captured
+-- through 'Vulkan.Core10.CommandBufferBuilding.cmdWriteTimestamp' or
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.cmdWriteTimestamp2'
+-- .
+--
+-- > struct timespec tv;
+-- > clock_gettime(CLOCK_MONOTONIC, &tv);
+-- > return tv.tv_nsec + tv.tv_sec*1000000000ull;
+--
+-- -   'TIME_DOMAIN_CLOCK_MONOTONIC_RAW_KHR' specifies the
+--     CLOCK_MONOTONIC_RAW time domain available on POSIX platforms.
+--     Timestamp values in this time domain are in units of nanoseconds and
+--     are comparable with platform timestamp values captured using the
+--     POSIX clock_gettime API as computed by this example:
+--
+-- > struct timespec tv;
+-- > clock_gettime(CLOCK_MONOTONIC_RAW, &tv);
+-- > return tv.tv_nsec + tv.tv_sec*1000000000ull;
+--
+-- -   'TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_KHR' specifies the
+--     performance counter (QPC) time domain available on Windows.
+--     Timestamp values in this time domain are in the same units as those
+--     provided by the Windows QueryPerformanceCounter API and are
+--     comparable with platform timestamp values captured using that API as
+--     computed by this example:
+--
+-- > LARGE_INTEGER counter;
+-- > QueryPerformanceCounter(&counter);
+-- > return counter.QuadPart;
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_calibrated_timestamps VK_EXT_calibrated_timestamps>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_calibrated_timestamps VK_KHR_calibrated_timestamps>,
+-- 'Vulkan.Extensions.VK_KHR_calibrated_timestamps.CalibratedTimestampInfoKHR',
+-- 'PastPresentationTimingEXT', 'SwapchainTimeDomainPropertiesEXT',
+-- 'Vulkan.Extensions.VK_KHR_calibrated_timestamps.getPhysicalDeviceCalibrateableTimeDomainsKHR',
+-- 'Vulkan.Extensions.VK_KHR_calibrated_timestamps.getPhysicalDeviceCalibrateableTimeDomainsKHR'
+newtype TimeDomainKHR = TimeDomainKHR Int32
+  deriving newtype (Eq, Ord, Storable, Zero)
+
+-- No documentation found for Nested "VkTimeDomainKHR" "VK_TIME_DOMAIN_DEVICE_KHR"
+pattern TIME_DOMAIN_DEVICE_KHR = TimeDomainKHR 0
+
+-- No documentation found for Nested "VkTimeDomainKHR" "VK_TIME_DOMAIN_CLOCK_MONOTONIC_KHR"
+pattern TIME_DOMAIN_CLOCK_MONOTONIC_KHR = TimeDomainKHR 1
+
+-- No documentation found for Nested "VkTimeDomainKHR" "VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_KHR"
+pattern TIME_DOMAIN_CLOCK_MONOTONIC_RAW_KHR = TimeDomainKHR 2
+
+-- No documentation found for Nested "VkTimeDomainKHR" "VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_KHR"
+pattern TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_KHR = TimeDomainKHR 3
+
+-- No documentation found for Nested "VkTimeDomainKHR" "VK_TIME_DOMAIN_SWAPCHAIN_LOCAL_EXT"
+pattern TIME_DOMAIN_SWAPCHAIN_LOCAL_EXT = TimeDomainKHR 1000208001
+
+-- No documentation found for Nested "VkTimeDomainKHR" "VK_TIME_DOMAIN_PRESENT_STAGE_LOCAL_EXT"
+pattern TIME_DOMAIN_PRESENT_STAGE_LOCAL_EXT = TimeDomainKHR 1000208000
+
+{-# COMPLETE
+  TIME_DOMAIN_DEVICE_KHR
+  , TIME_DOMAIN_CLOCK_MONOTONIC_KHR
+  , TIME_DOMAIN_CLOCK_MONOTONIC_RAW_KHR
+  , TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_KHR
+  , TIME_DOMAIN_SWAPCHAIN_LOCAL_EXT
+  , TIME_DOMAIN_PRESENT_STAGE_LOCAL_EXT ::
+    TimeDomainKHR
+  #-}
+
+conNameTimeDomainKHR :: String
+conNameTimeDomainKHR = "TimeDomainKHR"
+
+enumPrefixTimeDomainKHR :: String
+enumPrefixTimeDomainKHR = "TIME_DOMAIN_"
+
+showTableTimeDomainKHR :: [(TimeDomainKHR, String)]
+showTableTimeDomainKHR =
+  [ (TIME_DOMAIN_DEVICE_KHR, "DEVICE_KHR")
+  ,
+    ( TIME_DOMAIN_CLOCK_MONOTONIC_KHR
+    , "CLOCK_MONOTONIC_KHR"
+    )
+  ,
+    ( TIME_DOMAIN_CLOCK_MONOTONIC_RAW_KHR
+    , "CLOCK_MONOTONIC_RAW_KHR"
+    )
+  ,
+    ( TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_KHR
+    , "QUERY_PERFORMANCE_COUNTER_KHR"
+    )
+  ,
+    ( TIME_DOMAIN_SWAPCHAIN_LOCAL_EXT
+    , "SWAPCHAIN_LOCAL_EXT"
+    )
+  ,
+    ( TIME_DOMAIN_PRESENT_STAGE_LOCAL_EXT
+    , "PRESENT_STAGE_LOCAL_EXT"
+    )
+  ]
+
+instance Show TimeDomainKHR where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixTimeDomainKHR
+      showTableTimeDomainKHR
+      conNameTimeDomainKHR
+      (\(TimeDomainKHR x) -> x)
+      (showsPrec 11)
+
+instance Read TimeDomainKHR where
+  readPrec =
+    enumReadPrec
+      enumPrefixTimeDomainKHR
+      showTableTimeDomainKHR
+      conNameTimeDomainKHR
+      TimeDomainKHR
+
+type PresentStageFlagsEXT = PresentStageFlagBitsEXT
+
+-- | VkPresentStageFlagBitsEXT - Bitmask specifying stages of the image
+-- presentation process
+--
+-- = Description
+--
+-- -   'PRESENT_STAGE_QUEUE_OPERATIONS_END_BIT_EXT' marks the end of the
+--     set of queue operations enqueued by
+--     'Vulkan.Extensions.VK_KHR_swapchain.queuePresentKHR' on the provided
+--     'Vulkan.Core10.Handles.Queue' for a presentation request.
+--
+-- -   'PRESENT_STAGE_REQUEST_DEQUEUED_BIT_EXT' is the stage after which
+--     the presentation request has been dequeued from the swapchain’s
+--     internal presentation request queue, if any, as specified by the
+--     present mode associated with that request.
+--
+-- -   'PRESENT_STAGE_IMAGE_FIRST_PIXEL_OUT_BIT_EXT' is the stage after
+--     which data for the first pixel of the presentation request
+--     associated with the image has left the presentation engine for a
+--     display hardware.
+--
+-- -   'PRESENT_STAGE_IMAGE_FIRST_PIXEL_VISIBLE_BIT_EXT' is the stage after
+--     which a display hardware has made the first pixel visible for the
+--     presentation request associated with the image to be presented.
+--
+-- The set of queue operations delimited by
+-- 'PRESENT_STAGE_QUEUE_OPERATIONS_END_BIT_EXT' includes the wait for the
+-- semaphores specified in
+-- 'Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR'::@pWaitSemaphores@,
+-- if any, and any work implicitly enqueued by the implementation.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_present_timing VK_EXT_present_timing>,
+-- 'PresentStageFlagsEXT'
+newtype PresentStageFlagBitsEXT = PresentStageFlagBitsEXT Flags
+  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
+
+-- No documentation found for Nested "VkPresentStageFlagBitsEXT" "VK_PRESENT_STAGE_QUEUE_OPERATIONS_END_BIT_EXT"
+pattern PRESENT_STAGE_QUEUE_OPERATIONS_END_BIT_EXT = PresentStageFlagBitsEXT 0x00000001
+
+-- No documentation found for Nested "VkPresentStageFlagBitsEXT" "VK_PRESENT_STAGE_REQUEST_DEQUEUED_BIT_EXT"
+pattern PRESENT_STAGE_REQUEST_DEQUEUED_BIT_EXT = PresentStageFlagBitsEXT 0x00000002
+
+-- No documentation found for Nested "VkPresentStageFlagBitsEXT" "VK_PRESENT_STAGE_IMAGE_FIRST_PIXEL_OUT_BIT_EXT"
+pattern PRESENT_STAGE_IMAGE_FIRST_PIXEL_OUT_BIT_EXT = PresentStageFlagBitsEXT 0x00000004
+
+-- No documentation found for Nested "VkPresentStageFlagBitsEXT" "VK_PRESENT_STAGE_IMAGE_FIRST_PIXEL_VISIBLE_BIT_EXT"
+pattern PRESENT_STAGE_IMAGE_FIRST_PIXEL_VISIBLE_BIT_EXT = PresentStageFlagBitsEXT 0x00000008
+
+conNamePresentStageFlagBitsEXT :: String
+conNamePresentStageFlagBitsEXT = "PresentStageFlagBitsEXT"
+
+enumPrefixPresentStageFlagBitsEXT :: String
+enumPrefixPresentStageFlagBitsEXT = "PRESENT_STAGE_"
+
+showTablePresentStageFlagBitsEXT :: [(PresentStageFlagBitsEXT, String)]
+showTablePresentStageFlagBitsEXT =
+  [
+    ( PRESENT_STAGE_QUEUE_OPERATIONS_END_BIT_EXT
+    , "QUEUE_OPERATIONS_END_BIT_EXT"
+    )
+  ,
+    ( PRESENT_STAGE_REQUEST_DEQUEUED_BIT_EXT
+    , "REQUEST_DEQUEUED_BIT_EXT"
+    )
+  ,
+    ( PRESENT_STAGE_IMAGE_FIRST_PIXEL_OUT_BIT_EXT
+    , "IMAGE_FIRST_PIXEL_OUT_BIT_EXT"
+    )
+  ,
+    ( PRESENT_STAGE_IMAGE_FIRST_PIXEL_VISIBLE_BIT_EXT
+    , "IMAGE_FIRST_PIXEL_VISIBLE_BIT_EXT"
+    )
+  ]
+
+instance Show PresentStageFlagBitsEXT where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixPresentStageFlagBitsEXT
+      showTablePresentStageFlagBitsEXT
+      conNamePresentStageFlagBitsEXT
+      (\(PresentStageFlagBitsEXT x) -> x)
+      (\x -> showString "0x" . showHex x)
+
+instance Read PresentStageFlagBitsEXT where
+  readPrec =
+    enumReadPrec
+      enumPrefixPresentStageFlagBitsEXT
+      showTablePresentStageFlagBitsEXT
+      conNamePresentStageFlagBitsEXT
+      PresentStageFlagBitsEXT
+
+type PastPresentationTimingFlagsEXT = PastPresentationTimingFlagBitsEXT
+
+-- | VkPastPresentationTimingFlagBitsEXT - Bitmask specifying past
+-- presentation timing query flags
+--
+-- = Description
+--
+-- -   'PAST_PRESENTATION_TIMING_ALLOW_PARTIAL_RESULTS_BIT_EXT' specifies
+--     that 'getPastPresentationTimingEXT' /may/ return partial results for
+--     presentation requests that have not completed all requested present
+--     stages.
+--
+-- -   'PAST_PRESENTATION_TIMING_ALLOW_OUT_OF_ORDER_RESULTS_BIT_EXT'
+--     specifies that 'getPastPresentationTimingEXT' /may/ return results
+--     out of order with respect to the presentation order.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_present_timing VK_EXT_present_timing>,
+-- 'PastPresentationTimingFlagsEXT'
+newtype PastPresentationTimingFlagBitsEXT = PastPresentationTimingFlagBitsEXT Flags
+  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
+
+-- No documentation found for Nested "VkPastPresentationTimingFlagBitsEXT" "VK_PAST_PRESENTATION_TIMING_ALLOW_PARTIAL_RESULTS_BIT_EXT"
+pattern PAST_PRESENTATION_TIMING_ALLOW_PARTIAL_RESULTS_BIT_EXT = PastPresentationTimingFlagBitsEXT 0x00000001
+
+-- No documentation found for Nested "VkPastPresentationTimingFlagBitsEXT" "VK_PAST_PRESENTATION_TIMING_ALLOW_OUT_OF_ORDER_RESULTS_BIT_EXT"
+pattern PAST_PRESENTATION_TIMING_ALLOW_OUT_OF_ORDER_RESULTS_BIT_EXT = PastPresentationTimingFlagBitsEXT 0x00000002
+
+conNamePastPresentationTimingFlagBitsEXT :: String
+conNamePastPresentationTimingFlagBitsEXT = "PastPresentationTimingFlagBitsEXT"
+
+enumPrefixPastPresentationTimingFlagBitsEXT :: String
+enumPrefixPastPresentationTimingFlagBitsEXT = "PAST_PRESENTATION_TIMING_ALLOW_"
+
+showTablePastPresentationTimingFlagBitsEXT :: [(PastPresentationTimingFlagBitsEXT, String)]
+showTablePastPresentationTimingFlagBitsEXT =
+  [
+    ( PAST_PRESENTATION_TIMING_ALLOW_PARTIAL_RESULTS_BIT_EXT
+    , "PARTIAL_RESULTS_BIT_EXT"
+    )
+  ,
+    ( PAST_PRESENTATION_TIMING_ALLOW_OUT_OF_ORDER_RESULTS_BIT_EXT
+    , "OUT_OF_ORDER_RESULTS_BIT_EXT"
+    )
+  ]
+
+instance Show PastPresentationTimingFlagBitsEXT where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixPastPresentationTimingFlagBitsEXT
+      showTablePastPresentationTimingFlagBitsEXT
+      conNamePastPresentationTimingFlagBitsEXT
+      (\(PastPresentationTimingFlagBitsEXT x) -> x)
+      (\x -> showString "0x" . showHex x)
+
+instance Read PastPresentationTimingFlagBitsEXT where
+  readPrec =
+    enumReadPrec
+      enumPrefixPastPresentationTimingFlagBitsEXT
+      showTablePastPresentationTimingFlagBitsEXT
+      conNamePastPresentationTimingFlagBitsEXT
+      PastPresentationTimingFlagBitsEXT
+
+type PresentTimingInfoFlagsEXT = PresentTimingInfoFlagBitsEXT
+
+-- | VkPresentTimingInfoFlagBitsEXT - Bitmask specifying present timing info
+-- flags
+--
+-- = Description
+--
+-- -   'PRESENT_TIMING_INFO_PRESENT_AT_RELATIVE_TIME_BIT_EXT' specifies
+--     that 'PresentTimingInfoEXT'::@targetTime@ is to be interpreted as a
+--     relative time from the previous presentation’s
+--     'PRESENT_STAGE_IMAGE_FIRST_PIXEL_VISIBLE_BIT_EXT' stage. If the
+--     @swapchain@ has never been used to present an image, the provided
+--     @targetTime@ is ignored.
+--
+-- -   'PRESENT_TIMING_INFO_PRESENT_AT_NEAREST_REFRESH_CYCLE_BIT_EXT'
+--     specifies that the application would prefer the image to be
+--     presented earlier than the time specified in
+--     'PresentTimingInfoEXT'::@targetTime@ if that time falls within the
+--     first half of a refresh cycle. In that case, the presentation engine
+--     /may/ choose to display the image at the start of that refresh
+--     cycle.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_present_timing VK_EXT_present_timing>,
+-- 'PresentTimingInfoFlagsEXT'
+newtype PresentTimingInfoFlagBitsEXT = PresentTimingInfoFlagBitsEXT Flags
+  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
+
+-- No documentation found for Nested "VkPresentTimingInfoFlagBitsEXT" "VK_PRESENT_TIMING_INFO_PRESENT_AT_RELATIVE_TIME_BIT_EXT"
+pattern PRESENT_TIMING_INFO_PRESENT_AT_RELATIVE_TIME_BIT_EXT = PresentTimingInfoFlagBitsEXT 0x00000001
+
+-- No documentation found for Nested "VkPresentTimingInfoFlagBitsEXT" "VK_PRESENT_TIMING_INFO_PRESENT_AT_NEAREST_REFRESH_CYCLE_BIT_EXT"
+pattern PRESENT_TIMING_INFO_PRESENT_AT_NEAREST_REFRESH_CYCLE_BIT_EXT = PresentTimingInfoFlagBitsEXT 0x00000002
+
+conNamePresentTimingInfoFlagBitsEXT :: String
+conNamePresentTimingInfoFlagBitsEXT = "PresentTimingInfoFlagBitsEXT"
+
+enumPrefixPresentTimingInfoFlagBitsEXT :: String
+enumPrefixPresentTimingInfoFlagBitsEXT = "PRESENT_TIMING_INFO_PRESENT_AT_"
+
+showTablePresentTimingInfoFlagBitsEXT :: [(PresentTimingInfoFlagBitsEXT, String)]
+showTablePresentTimingInfoFlagBitsEXT =
+  [
+    ( PRESENT_TIMING_INFO_PRESENT_AT_RELATIVE_TIME_BIT_EXT
+    , "RELATIVE_TIME_BIT_EXT"
+    )
+  ,
+    ( PRESENT_TIMING_INFO_PRESENT_AT_NEAREST_REFRESH_CYCLE_BIT_EXT
+    , "NEAREST_REFRESH_CYCLE_BIT_EXT"
+    )
+  ]
+
+instance Show PresentTimingInfoFlagBitsEXT where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixPresentTimingInfoFlagBitsEXT
+      showTablePresentTimingInfoFlagBitsEXT
+      conNamePresentTimingInfoFlagBitsEXT
+      (\(PresentTimingInfoFlagBitsEXT x) -> x)
+      (\x -> showString "0x" . showHex x)
+
+instance Read PresentTimingInfoFlagBitsEXT where
+  readPrec =
+    enumReadPrec
+      enumPrefixPresentTimingInfoFlagBitsEXT
+      showTablePresentTimingInfoFlagBitsEXT
+      conNamePresentTimingInfoFlagBitsEXT
+      PresentTimingInfoFlagBitsEXT
+
+type EXT_PRESENT_TIMING_SPEC_VERSION = 3
+
+-- No documentation found for TopLevel "VK_EXT_PRESENT_TIMING_SPEC_VERSION"
+pattern EXT_PRESENT_TIMING_SPEC_VERSION :: forall a . Integral a => a
+pattern EXT_PRESENT_TIMING_SPEC_VERSION = 3
+
+
+type EXT_PRESENT_TIMING_EXTENSION_NAME = "VK_EXT_present_timing"
+
+-- No documentation found for TopLevel "VK_EXT_PRESENT_TIMING_EXTENSION_NAME"
+pattern EXT_PRESENT_TIMING_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern EXT_PRESENT_TIMING_EXTENSION_NAME = "VK_EXT_present_timing"
+
diff --git a/src/Vulkan/Extensions/VK_EXT_present_timing.hs-boot b/src/Vulkan/Extensions/VK_EXT_present_timing.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_EXT_present_timing.hs-boot
@@ -0,0 +1,496 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_EXT_present_timing - device extension
+--
+-- = VK_EXT_present_timing
+--
+-- [__Name String__]
+--     @VK_EXT_present_timing@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     209
+--
+-- [__Revision__]
+--     3
+--
+-- [__Ratification Status__]
+--     Ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_swapchain VK_KHR_swapchain>
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_present_id2 VK_KHR_present_id2>
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_surface_capabilities2 VK_KHR_get_surface_capabilities2>
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_calibrated_timestamps VK_KHR_calibrated_timestamps>
+--
+-- [__Contact__]
+--
+--     -   Lionel Duc
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_present_timing] @nvlduc%0A*Here describe the issue or question you have about the VK_EXT_present_timing extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_EXT_present_timing.adoc VK_EXT_present_timing>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2024-10-09
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Contributors__]
+--
+--     -   Ian Elliott, Google
+--
+--     -   James Jones, NVIDIA
+--
+--     -   Jeff Juliano, NVIDIA
+--
+--     -   Daniel Rakos, AMD
+--
+--     -   Daniel Stone, Collabora
+--
+--     -   Daniel Vetter, Intel
+--
+--     -   Aric Cyr, AMD
+--
+--     -   Faith Ekstrand, Intel
+--
+--     -   Nicolai Hähnle, AMD
+--
+--     -   Alon Or-Bach, Samsung
+--
+--     -   Niklas Smedberg, Unity Technologies
+--
+--     -   Tobias Hector, AMD
+--
+--     -   Lionel Duc, NVIDIA
+--
+--     -   Lina Versace, Google
+--
+--     -   Sebastian Wick, Red Hat
+--
+--     -   Jakob Bornecrantz, Collabora
+--
+--     -   David Kvasnica, NVIDIA
+--
+-- == Description
+--
+-- This device extension allows an application that uses the
+-- @VK_KHR_swapchain@ extension to obtain information about the
+-- presentation engine’s display, to obtain timing information about each
+-- present, and to schedule a present to happen no earlier than a desired
+-- time. An application can use this to minimize various visual anomalies
+-- (e.g. stuttering).
+--
+-- Traditional game and real-time animation applications need to correctly
+-- position their geometry for when the presentable image will be presented
+-- to the user. To accomplish this, applications need various timing
+-- information about the presentation engine’s display. They need to know
+-- when presentable images were actually presented, and when they could
+-- have been presented. Applications also need to tell the presentation
+-- engine to display an image no sooner than a given time. This allows the
+-- application to avoid stuttering, so the animation looks smooth to the
+-- user.
+--
+-- == New Commands
+--
+-- -   'getPastPresentationTimingEXT'
+--
+-- -   'getSwapchainTimeDomainPropertiesEXT'
+--
+-- -   'getSwapchainTimingPropertiesEXT'
+--
+-- -   'setSwapchainPresentTimingQueueSizeEXT'
+--
+-- == New Structures
+--
+-- -   'PastPresentationTimingEXT'
+--
+-- -   'PastPresentationTimingInfoEXT'
+--
+-- -   'PastPresentationTimingPropertiesEXT'
+--
+-- -   'PresentStageTimeEXT'
+--
+-- -   'PresentTimingInfoEXT'
+--
+-- -   'SwapchainTimeDomainPropertiesEXT'
+--
+-- -   'SwapchainTimingPropertiesEXT'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_KHR_calibrated_timestamps.CalibratedTimestampInfoKHR':
+--
+--     -   'SwapchainCalibratedTimestampInfoEXT'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDevicePresentTimingFeaturesEXT'
+--
+-- -   Extending 'Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR':
+--
+--     -   'PresentTimingsInfoEXT'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.SurfaceCapabilities2KHR':
+--
+--     -   'PresentTimingSurfaceCapabilitiesEXT'
+--
+-- == New Enums
+--
+-- -   'PastPresentationTimingFlagBitsEXT'
+--
+-- -   'PresentStageFlagBitsEXT'
+--
+-- -   'PresentTimingInfoFlagBitsEXT'
+--
+-- == New Bitmasks
+--
+-- -   'PastPresentationTimingFlagsEXT'
+--
+-- -   'PresentStageFlagsEXT'
+--
+-- -   'PresentTimingInfoFlagsEXT'
+--
+-- == New Enum Constants
+--
+-- -   'EXT_PRESENT_TIMING_EXTENSION_NAME'
+--
+-- -   'EXT_PRESENT_TIMING_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.Result.Result':
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_PRESENT_TIMING_QUEUE_FULL_EXT'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PAST_PRESENTATION_TIMING_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PAST_PRESENTATION_TIMING_INFO_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PAST_PRESENTATION_TIMING_PROPERTIES_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_TIMING_FEATURES_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PRESENT_TIMINGS_INFO_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PRESENT_TIMING_INFO_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PRESENT_TIMING_SURFACE_CAPABILITIES_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SWAPCHAIN_CALIBRATED_TIMESTAMP_INFO_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SWAPCHAIN_TIME_DOMAIN_PROPERTIES_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SWAPCHAIN_TIMING_PROPERTIES_EXT'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateFlagBitsKHR':
+--
+--     -   'Vulkan.Extensions.VK_KHR_swapchain.SWAPCHAIN_CREATE_PRESENT_TIMING_BIT_EXT'
+--
+-- -   Extending 'TimeDomainKHR':
+--
+--     -   'TIME_DOMAIN_PRESENT_STAGE_LOCAL_EXT'
+--
+--     -   'TIME_DOMAIN_SWAPCHAIN_LOCAL_EXT'
+--
+-- == Issues
+--
+-- 1) How does the application determine refresh duration, quanta for
+-- change, whether FRR vs. VRR, etc.
+--
+-- The query returns two values: 1) a refresh-cycle duration
+-- (@refreshDuration@), and 2) an indication whether the timing is
+-- currently fixed (FRR) or variable (VRR). If @refreshDuration@ is zero,
+-- the platform cannot supply these values until after at least one
+-- 'Vulkan.Extensions.VK_KHR_swapchain.queuePresentKHR' has been done, from
+-- this time (e.g. if 'Vulkan.Extensions.VK_KHR_swapchain.queuePresentKHR'
+-- has been previously called for this swapchain, at least one additional
+-- call must be made). After calling
+-- 'Vulkan.Extensions.VK_KHR_swapchain.queuePresentKHR', the query can be
+-- repeated until @refreshDuration@ is non-zero, at which point the FRR vs.
+-- VRR indication will also be valid.
+--
+-- If the presentation engine’s @refreshDuration@ is a fixed value, the
+-- application’s image present duration (IPD) should be a multiple of
+-- @refreshDuration@. That is, the quanta for changing the IPD is
+-- @refreshDuration@. For example, if @refreshDuration@ is 16.67ms, the IPD
+-- can be 16.67ms, 33.33ms, 50.0ms, etc.
+--
+-- If the presentation engine’s @refreshDuration@ is variable,
+-- @refreshDuration@ is the minimum value of the application’s IPD, and the
+-- IPD can be larger by any quanta that is meaningful to the application.
+-- For example, if the @refreshDuration@ is 10ms (i.e. the maximum refresh
+-- rate is 100Hz), the application can choose an IPD of 11ms, 13.33ms,
+-- 13.5ms, or 66.0ms; any value greater than or equal to 10ms is valid.
+-- There may be negative consequences for choosing an IPD that is too high,
+-- as the presentation engine may actually have a practical maximum
+-- @refreshDuration@, where it needs to display the previous image again,
+-- and during this time the presentation engine might delay displaying a
+-- newly-presented image.
+--
+-- FRR displays on at least one platform (Wayland) are not necessarily
+-- fixed; but can change over time. For example, if a full-screen video
+-- player application is visible, the display may operate at a 24Hz refresh
+-- cycle; and then later switch to 60Hz when multiple windows are visible.
+--
+-- VRR displays on some platforms can also be seen as having different
+-- characteristics over time. For example, if an application’s window is
+-- full-screen-exclusive (i.e. no other window or window system component
+-- is visible), the display can look like a VRR display (however that is
+-- defined). If the application’s window is not full-screen-exclusive (e.g.
+-- a normal multi-window case), the display can look like an FRR display
+-- (i.e. because the compositor is trying to treat all windows in a
+-- consistent manner). A different issue will deal with how the timing
+-- characteristics can change over time.
+--
+-- 2) Do we return min\/max values for refresh duration for VRR?
+--
+-- Return only the minimum value of refreshDuration for a VRR.
+--
+-- VRR displays have a minimum and maximum refresh rate, and therefore a
+-- minimum and maximum refreshDuration. It has been asserted that the
+-- display effectively does not have a minimum refresh rate. That is
+-- because if an application does not present soon enough, the display
+-- hardware will automatically re-display the previous image. However, when
+-- the display does that, an application cannot present a new image for a
+-- certain period of time. It is unclear about whether that period is large
+-- enough to cause visual artifacts.
+--
+-- 3) How to deal with changes in timing properties?
+--
+-- __RESOLVED__: The 'PastPresentationTimingPropertiesEXT' structure that
+-- is returned by 'getPastPresentationTimingEXT' contains
+-- @timeDomainsCounter@, which is incremented if the time domain enabled
+-- for the swapchain is not currently available.
+--
+-- An example of why display timing properties can change is if a surface
+-- changes from being a window that’s a subset of the display size, to
+-- becoming full-screen-exclusive. While the surface was a subset of the
+-- display, a compositor might enforce fixed timings on the surface (e.g.
+-- FRR of 60Hz), where the presentation engine might be free to allow VRR
+-- behavior of a full-screen-exclusive surface.
+--
+-- It is possible that a full-screen-exclusive window can become
+-- temporarily obscured (e.g. when a short-term dialog pops up). In this
+-- case, the surface might use FRR timings while the dialog is visible and
+-- VRR otherwise.
+--
+-- 4) One Query for all Timing info vs. an initial query to determine FRR
+-- vs. VRR, and then FRR-specific vs VRR-specific queries?
+--
+-- __RESOLVED__: Have one query, as described in issue 1, that can be
+-- called whenever the application needs to obtain the timing properties of
+-- the surface.
+--
+-- 5) Query to determine time domain?
+--
+-- __RESOLVED__: Have a query to determine the time domain. This extension
+-- defines a basic swapchain-local time domain. Other extensions can add
+-- other platform-specific time domains.
+--
+-- 6) What time to use for targetPresentTime for early images?
+--
+-- __RESOLVED__: Have no query for determining the current time in the PE’s
+-- time domain; and do allow the special value of zero for
+-- targetPresentTime, meaning that there is no target.
+--
+-- On some platforms, there is no way to determine the current time, nor to
+-- determine surface timing properties until after at least one image has
+-- been presented.
+--
+-- In such cases, the special value of zero allows the application to
+-- indicate that timing feedback is desired, but that no targetPresentTime
+-- is requested. Later, once the application has obtained feedback, it can
+-- specify targetPresentTime by using the result’s actualPresentTime.
+--
+-- 7) How long before an application’s request for new image duration is
+-- honored?
+--
+-- Apparently, changes to some vendors\' display hardware settings do not
+-- take effect immediately. It is not clear what settings, and therefore,
+-- it is not clear how to address this issue.
+--
+-- 8) Do we have a query for the anticipated latency from present to
+-- feedback?
+--
+-- __RESOLVED__: Do not provide a query for the feedback latency.
+--
+-- There is some amount of latency from when an application calls
+-- vkQueuePresentKHR to when the image is displayed to the user, to when
+-- feedback is available to the application on when the image was actually
+-- displayed to the user. The first time (from the call till the image is
+-- presented) generally doesn’t matter, because the application will likely
+-- be providing a targetPresentTime (i.e. the application may have some
+-- indication for how long this will be). However, the latency between
+-- targetPresentTime until feedback is available may be much longer. For
+-- example, on Android on the 1st-generation Pixel phone (60Hz FRR
+-- display), the latency was approximately 5 refresh cycles (83.33ms). For
+-- higher-frequency displays, the latency may have a larger number of
+-- refresh cycles.
+--
+-- 9) Do we have a query(s) about the number of VkPastPresentationTimingEXT
+-- structs to keep?
+--
+-- __RESOLVED__: Do not provide a query for the number of results the
+-- swapchain is allowed to store before querying them with
+-- vkGetPastPresentationTimingEXT. Let the application specify that value
+-- with a dedicated API.
+--
+-- 10) How is the SWAPCHAIN_LOCAL and STAGE_LOCAL time domain used with the
+-- calibrated timestamps extension?
+--
+-- __RESOLVED__: Define a struct to chain into
+-- VkCalibratedTimestampInfoEXT::pNext that specifies a swapchain and
+-- present stage.
+--
+-- 11) Should VK_PRESENT_MODE_FIFO_LATEST_READY_EXT be part of this
+-- extension, or split out into its own extension?
+--
+-- __RESOLVED__: It is only tangentially related. Split it out into its own
+-- extension and define the interaction here.
+--
+-- == Version History
+--
+-- -   Revision 1, 2018-05-11 (Ian Elliott)
+--
+--     -   Internal revisions.
+--
+-- -   Revision 2, 2022-11-30 (Lionel Duc)
+--
+--     -   Rebase for public discussions.
+--
+-- -   Revision 3, 2024-10-09 (Lionel Duc)
+--
+--     -   Public revisions.
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_present_timing 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_present_timing  ( PastPresentationTimingEXT
+                                                , PastPresentationTimingInfoEXT
+                                                , PastPresentationTimingPropertiesEXT
+                                                , PhysicalDevicePresentTimingFeaturesEXT
+                                                , PresentStageTimeEXT
+                                                , PresentTimingInfoEXT
+                                                , PresentTimingSurfaceCapabilitiesEXT
+                                                , PresentTimingsInfoEXT
+                                                , SwapchainCalibratedTimestampInfoEXT
+                                                , SwapchainTimeDomainPropertiesEXT
+                                                , SwapchainTimingPropertiesEXT
+                                                , TimeDomainKHR
+                                                ) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data PastPresentationTimingEXT
+
+instance ToCStruct PastPresentationTimingEXT
+instance Show PastPresentationTimingEXT
+
+instance FromCStruct PastPresentationTimingEXT
+
+
+data PastPresentationTimingInfoEXT
+
+instance ToCStruct PastPresentationTimingInfoEXT
+instance Show PastPresentationTimingInfoEXT
+
+instance FromCStruct PastPresentationTimingInfoEXT
+
+
+data PastPresentationTimingPropertiesEXT
+
+instance ToCStruct PastPresentationTimingPropertiesEXT
+instance Show PastPresentationTimingPropertiesEXT
+
+instance FromCStruct PastPresentationTimingPropertiesEXT
+
+
+data PhysicalDevicePresentTimingFeaturesEXT
+
+instance ToCStruct PhysicalDevicePresentTimingFeaturesEXT
+instance Show PhysicalDevicePresentTimingFeaturesEXT
+
+instance FromCStruct PhysicalDevicePresentTimingFeaturesEXT
+
+
+data PresentStageTimeEXT
+
+instance ToCStruct PresentStageTimeEXT
+instance Show PresentStageTimeEXT
+
+instance FromCStruct PresentStageTimeEXT
+
+
+data PresentTimingInfoEXT
+
+instance ToCStruct PresentTimingInfoEXT
+instance Show PresentTimingInfoEXT
+
+instance FromCStruct PresentTimingInfoEXT
+
+
+data PresentTimingSurfaceCapabilitiesEXT
+
+instance ToCStruct PresentTimingSurfaceCapabilitiesEXT
+instance Show PresentTimingSurfaceCapabilitiesEXT
+
+instance FromCStruct PresentTimingSurfaceCapabilitiesEXT
+
+
+data PresentTimingsInfoEXT
+
+instance ToCStruct PresentTimingsInfoEXT
+instance Show PresentTimingsInfoEXT
+
+instance FromCStruct PresentTimingsInfoEXT
+
+
+data SwapchainCalibratedTimestampInfoEXT
+
+instance ToCStruct SwapchainCalibratedTimestampInfoEXT
+instance Show SwapchainCalibratedTimestampInfoEXT
+
+instance FromCStruct SwapchainCalibratedTimestampInfoEXT
+
+
+data SwapchainTimeDomainPropertiesEXT
+
+instance ToCStruct SwapchainTimeDomainPropertiesEXT
+instance Show SwapchainTimeDomainPropertiesEXT
+
+instance FromCStruct SwapchainTimeDomainPropertiesEXT
+
+
+data SwapchainTimingPropertiesEXT
+
+instance ToCStruct SwapchainTimingPropertiesEXT
+instance Show SwapchainTimingPropertiesEXT
+
+instance FromCStruct SwapchainTimingPropertiesEXT
+
+
+data TimeDomainKHR
+
diff --git a/src/Vulkan/Extensions/VK_EXT_primitive_restart_index.hs b/src/Vulkan/Extensions/VK_EXT_primitive_restart_index.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_EXT_primitive_restart_index.hs
@@ -0,0 +1,324 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_EXT_primitive_restart_index - device extension
+--
+-- = VK_EXT_primitive_restart_index
+--
+-- [__Name String__]
+--     @VK_EXT_primitive_restart_index@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     679
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Not ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
+--
+-- [__Special Use__]
+--
+--     -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-compatibility-specialuse OpenGL \/ ES support>
+--
+-- [__Contact__]
+--
+--     -   Mike Blumenkrantz
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_primitive_restart_index] @zmike%0A*Here describe the issue or question you have about the VK_EXT_primitive_restart_index extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_EXT_primitive_restart_index.adoc VK_EXT_primitive_restart_index>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2026-03-10
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Contributors__]
+--
+--     -   Mike Blumenkrantz, Valve
+--
+--     -   Spencer Fricke, LunarG
+--
+--     -   Ricardo Garcia, Igalia
+--
+--     -   Piers Daniell, NVIDIA
+--
+-- == Description
+--
+-- This extension allows setting a custom primitive restart index. It is
+-- primarily intended to support GL emulation.
+--
+-- == New Commands
+--
+-- -   'cmdSetPrimitiveRestartIndexEXT'
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDevicePrimitiveRestartIndexFeaturesEXT'
+--
+-- == New Enum Constants
+--
+-- -   'EXT_PRIMITIVE_RESTART_INDEX_EXTENSION_NAME'
+--
+-- -   'EXT_PRIMITIVE_RESTART_INDEX_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_RESTART_INDEX_FEATURES_EXT'
+--
+-- == Version History
+--
+-- -   Revision 1, 2026-03-10 (Mike Blumenkrantz)
+--
+--     -   Internal revisions
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_primitive_restart_index 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_primitive_restart_index  ( cmdSetPrimitiveRestartIndexEXT
+                                                         , PhysicalDevicePrimitiveRestartIndexFeaturesEXT(..)
+                                                         , EXT_PRIMITIVE_RESTART_INDEX_SPEC_VERSION
+                                                         , pattern EXT_PRIMITIVE_RESTART_INDEX_SPEC_VERSION
+                                                         , EXT_PRIMITIVE_RESTART_INDEX_EXTENSION_NAME
+                                                         , pattern EXT_PRIMITIVE_RESTART_INDEX_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 Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (FromCStruct(..))
+import Vulkan.CStruct (ToCStruct)
+import Vulkan.CStruct (ToCStruct(..))
+import Vulkan.Zero (Zero(..))
+import Control.Monad.IO.Class (MonadIO)
+import Data.String (IsString)
+import Data.Typeable (Typeable)
+import Foreign.Storable (Storable)
+import Foreign.Storable (Storable(peek))
+import Foreign.Storable (Storable(poke))
+import qualified Foreign.Storable (Storable(..))
+import GHC.Generics (Generic)
+import GHC.IO.Exception (IOErrorType(..))
+import GHC.IO.Exception (IOException(..))
+import Foreign.Ptr (FunPtr)
+import Foreign.Ptr (Ptr)
+import Data.Word (Word32)
+import Data.Kind (Type)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.NamedType ((:::))
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.Core10.Handles (CommandBuffer)
+import Vulkan.Core10.Handles (CommandBuffer(..))
+import Vulkan.Core10.Handles (CommandBuffer(CommandBuffer))
+import Vulkan.Core10.Handles (CommandBuffer_T)
+import Vulkan.Dynamic (DeviceCmds(pVkCmdSetPrimitiveRestartIndexEXT))
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_RESTART_INDEX_FEATURES_EXT))
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdSetPrimitiveRestartIndexEXT
+  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> IO ()
+
+-- | vkCmdSetPrimitiveRestartIndexEXT - Set primitive assembly restart index
+-- dynamically for a command buffer
+--
+-- = Description
+--
+-- This command sets a custom primitive restart index for subsequent
+-- drawing commands. Binding an index buffer invalidates the custom index
+-- value.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdSetPrimitiveRestartIndexEXT-primitiveRestartIndex-12395#
+--     The
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-primitiveRestartIndex primitiveRestartIndex>
+--     feature /must/ be enabled
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdSetPrimitiveRestartIndexEXT-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdSetPrimitiveRestartIndexEXT-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-vkCmdSetPrimitiveRestartIndexEXT-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
+--
+-- -   #VUID-vkCmdSetPrimitiveRestartIndexEXT-videocoding# This command
+--     /must/ only be called outside of a video coding scope
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdSetPrimitiveRestartIndexEXT is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_primitive_restart_index VK_EXT_primitive_restart_index>,
+-- 'Vulkan.Core10.Handles.CommandBuffer'
+cmdSetPrimitiveRestartIndexEXT :: forall io
+                                . (MonadIO io)
+                               => -- | @commandBuffer@ is the command buffer into which the command will be
+                                  -- recorded.
+                                  CommandBuffer
+                               -> -- | @primitiveRestartIndex@ controls which special vertex index value is
+                                  -- treated as restarting the assembly of primitives. This overrides the
+                                  -- default values specified in
+                                  -- 'Vulkan.Core10.GraphicsPipeline.PipelineInputAssemblyStateCreateInfo'::@primitiveRestartEnable@.
+                                  ("primitiveRestartIndex" ::: Word32)
+                               -> io ()
+cmdSetPrimitiveRestartIndexEXT commandBuffer primitiveRestartIndex = liftIO $ do
+  let vkCmdSetPrimitiveRestartIndexEXTPtr = pVkCmdSetPrimitiveRestartIndexEXT (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  unless (vkCmdSetPrimitiveRestartIndexEXTPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetPrimitiveRestartIndexEXT is null" Nothing Nothing
+  let vkCmdSetPrimitiveRestartIndexEXT' = mkVkCmdSetPrimitiveRestartIndexEXT vkCmdSetPrimitiveRestartIndexEXTPtr
+  traceAroundEvent "vkCmdSetPrimitiveRestartIndexEXT" (vkCmdSetPrimitiveRestartIndexEXT'
+                                                         (commandBufferHandle (commandBuffer))
+                                                         (primitiveRestartIndex))
+  pure $ ()
+
+
+-- | VkPhysicalDevicePrimitiveRestartIndexFeaturesEXT - Structure describing
+-- features to configure primitive restart index
+--
+-- = Description
+--
+-- If the 'PhysicalDevicePrimitiveRestartIndexFeaturesEXT' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDevicePrimitiveRestartIndexFeaturesEXT', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_primitive_restart_index VK_EXT_primitive_restart_index>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDevicePrimitiveRestartIndexFeaturesEXT = PhysicalDevicePrimitiveRestartIndexFeaturesEXT
+  { -- | #features-primitiveRestartIndex# @primitiveRestartIndex@ specifies
+    -- whether the index for primitive restart can be set
+    primitiveRestartIndex :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDevicePrimitiveRestartIndexFeaturesEXT)
+#endif
+deriving instance Show PhysicalDevicePrimitiveRestartIndexFeaturesEXT
+
+instance ToCStruct PhysicalDevicePrimitiveRestartIndexFeaturesEXT where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDevicePrimitiveRestartIndexFeaturesEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_RESTART_INDEX_FEATURES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (primitiveRestartIndex))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_RESTART_INDEX_FEATURES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDevicePrimitiveRestartIndexFeaturesEXT where
+  peekCStruct p = do
+    primitiveRestartIndex <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDevicePrimitiveRestartIndexFeaturesEXT
+             (bool32ToBool primitiveRestartIndex)
+
+instance Storable PhysicalDevicePrimitiveRestartIndexFeaturesEXT where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDevicePrimitiveRestartIndexFeaturesEXT where
+  zero = PhysicalDevicePrimitiveRestartIndexFeaturesEXT
+           zero
+
+
+type EXT_PRIMITIVE_RESTART_INDEX_SPEC_VERSION = 1
+
+-- No documentation found for TopLevel "VK_EXT_PRIMITIVE_RESTART_INDEX_SPEC_VERSION"
+pattern EXT_PRIMITIVE_RESTART_INDEX_SPEC_VERSION :: forall a . Integral a => a
+pattern EXT_PRIMITIVE_RESTART_INDEX_SPEC_VERSION = 1
+
+
+type EXT_PRIMITIVE_RESTART_INDEX_EXTENSION_NAME = "VK_EXT_primitive_restart_index"
+
+-- No documentation found for TopLevel "VK_EXT_PRIMITIVE_RESTART_INDEX_EXTENSION_NAME"
+pattern EXT_PRIMITIVE_RESTART_INDEX_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern EXT_PRIMITIVE_RESTART_INDEX_EXTENSION_NAME = "VK_EXT_primitive_restart_index"
+
diff --git a/src/Vulkan/Extensions/VK_EXT_primitive_restart_index.hs-boot b/src/Vulkan/Extensions/VK_EXT_primitive_restart_index.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_EXT_primitive_restart_index.hs-boot
@@ -0,0 +1,114 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_EXT_primitive_restart_index - device extension
+--
+-- = VK_EXT_primitive_restart_index
+--
+-- [__Name String__]
+--     @VK_EXT_primitive_restart_index@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     679
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Not ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
+--
+-- [__Special Use__]
+--
+--     -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-compatibility-specialuse OpenGL \/ ES support>
+--
+-- [__Contact__]
+--
+--     -   Mike Blumenkrantz
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_primitive_restart_index] @zmike%0A*Here describe the issue or question you have about the VK_EXT_primitive_restart_index extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_EXT_primitive_restart_index.adoc VK_EXT_primitive_restart_index>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2026-03-10
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Contributors__]
+--
+--     -   Mike Blumenkrantz, Valve
+--
+--     -   Spencer Fricke, LunarG
+--
+--     -   Ricardo Garcia, Igalia
+--
+--     -   Piers Daniell, NVIDIA
+--
+-- == Description
+--
+-- This extension allows setting a custom primitive restart index. It is
+-- primarily intended to support GL emulation.
+--
+-- == New Commands
+--
+-- -   'cmdSetPrimitiveRestartIndexEXT'
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDevicePrimitiveRestartIndexFeaturesEXT'
+--
+-- == New Enum Constants
+--
+-- -   'EXT_PRIMITIVE_RESTART_INDEX_EXTENSION_NAME'
+--
+-- -   'EXT_PRIMITIVE_RESTART_INDEX_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_RESTART_INDEX_FEATURES_EXT'
+--
+-- == Version History
+--
+-- -   Revision 1, 2026-03-10 (Mike Blumenkrantz)
+--
+--     -   Internal revisions
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_primitive_restart_index 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_primitive_restart_index  (PhysicalDevicePrimitiveRestartIndexFeaturesEXT) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data PhysicalDevicePrimitiveRestartIndexFeaturesEXT
+
+instance ToCStruct PhysicalDevicePrimitiveRestartIndexFeaturesEXT
+instance Show PhysicalDevicePrimitiveRestartIndexFeaturesEXT
+
+instance FromCStruct PhysicalDevicePrimitiveRestartIndexFeaturesEXT
+
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
@@ -92,7 +92,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_primitive_topology_list_restart Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -140,12 +140,21 @@
 -- 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. 'PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT' /can/
--- also be used in the @pNext@ chain of
--- 'Vulkan.Core10.Device.DeviceCreateInfo' to selectively enable these
--- features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT', it /must/ add
+-- an instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
 --
 -- = See Also
 --
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
@@ -92,7 +92,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_primitive_topology_list_restart Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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_primitives_generated_query.hs b/src/Vulkan/Extensions/VK_EXT_primitives_generated_query.hs
--- a/src/Vulkan/Extensions/VK_EXT_primitives_generated_query.hs
+++ b/src/Vulkan/Extensions/VK_EXT_primitives_generated_query.hs
@@ -99,7 +99,7 @@
 -- is inconvenient.
 --
 -- 3) On some hardware, this query cannot be implemented if
--- 'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo'::@rasterizerDiscardEnable@
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineRasterizationStateCreateInfo'::@rasterizerDiscardEnable@
 -- is enabled. How will this be handled?
 --
 -- __RESOLVED__: A feature flag is exposed by this extension for this. On
@@ -135,7 +135,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_primitives_generated_query Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_primitives_generated_query Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -183,13 +183,22 @@
 -- 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. 'PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT' /can/
--- also be used in the @pNext@ chain of
--- 'Vulkan.Core10.Device.DeviceCreateInfo' to selectively enable these
--- features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_primitives_generated_query VK_EXT_primitives_generated_query>,
@@ -204,7 +213,7 @@
   , -- | #features-primitivesGeneratedQueryWithRasterizerDiscard#
     -- @primitivesGeneratedQueryWithRasterizerDiscard@ indicates whether the
     -- implementation supports this query when
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-discard rasterization discard>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-discard rasterization discard>
     -- is enabled.
     primitivesGeneratedQueryWithRasterizerDiscard :: Bool
   , -- | #features-primitivesGeneratedQueryWithNonZeroStreams#
diff --git a/src/Vulkan/Extensions/VK_EXT_primitives_generated_query.hs-boot b/src/Vulkan/Extensions/VK_EXT_primitives_generated_query.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_primitives_generated_query.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_primitives_generated_query.hs-boot
@@ -99,7 +99,7 @@
 -- is inconvenient.
 --
 -- 3) On some hardware, this query cannot be implemented if
--- 'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo'::@rasterizerDiscardEnable@
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineRasterizationStateCreateInfo'::@rasterizerDiscardEnable@
 -- is enabled. How will this be handled?
 --
 -- __RESOLVED__: A feature flag is exposed by this extension for this. On
@@ -135,7 +135,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_primitives_generated_query Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_primitives_generated_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_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
@@ -133,20 +133,20 @@
 -- mapping with each object, and if I am doing that, I might as well just
 -- store the original data!
 --
--- __RESOLVED:__ The 'Vulkan.Core13.Handles.PrivateDataSlot' can be thought
--- of as an opaque index into storage that is reserved in each object. That
--- is, you can use the same 'Vulkan.Core13.Handles.PrivateDataSlot' with
--- each object for a specific piece of information. For example, if a layer
+-- The 'Vulkan.Core13.Handles.PrivateDataSlot' can be thought of as an
+-- opaque index into storage that is reserved in each object. That is, you
+-- can use the same 'Vulkan.Core13.Handles.PrivateDataSlot' with each
+-- object for a specific piece of information. For example, if a layer
 -- wishes to track per-object information, the layer only needs to allocate
 -- one 'Vulkan.Core13.Handles.PrivateDataSlot' per device and it can use
 -- that private data slot for all of the device’s child objects. This
 -- allows multiple layers to store private data without conflicting with
 -- each other’s and\/or the application’s private data.
 --
--- (2) What if I need to store more than 64-bits of information per object?
+-- 2) What if I need to store more than 64-bits of information per object?
 --
--- __RESOLVED:__ The data that you store per object could be a pointer to
--- another object or structure of your own allocation.
+-- The data that you store per object could be a pointer to another object
+-- or structure of your own allocation.
 --
 -- == Version History
 --
@@ -161,7 +161,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_private_data Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
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
@@ -97,7 +97,7 @@
 --     -   'PhysicalDeviceProvokingVertexPropertiesEXT'
 --
 -- -   Extending
---     'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo':
+--     'Vulkan.Core10.GraphicsPipeline.PipelineRasterizationStateCreateInfo':
 --
 --     -   'PipelineRasterizationProvokingVertexStateCreateInfoEXT'
 --
@@ -175,7 +175,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_provoking_vertex Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -238,18 +238,28 @@
 -- structure passed to
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
 -- it is filled in to indicate whether each corresponding feature is
--- supported. 'PhysicalDeviceProvokingVertexFeaturesEXT' /can/ also be used
--- in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceProvokingVertexFeaturesEXT', it /must/ add an instance of
+-- the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
 -- When 'PhysicalDeviceProvokingVertexFeaturesEXT' is in the @pNext@ chain
 -- of 'Vulkan.Core10.Device.DeviceCreateInfo' but the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-transformFeedback transformFeedback>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-transformFeedback transformFeedback>
 -- feature is not enabled, the value of
 -- @transformFeedbackPreservesProvokingVertex@ is ignored.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_provoking_vertex VK_EXT_provoking_vertex>,
@@ -265,7 +275,7 @@
     -- vertices within each primitive written by transform feedback will
     -- preserve the provoking vertex. This does not apply to triangle fan
     -- primitives when
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-transformFeedbackPreservesTriangleFanProvokingVertex transformFeedbackPreservesTriangleFanProvokingVertex>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-transformFeedbackPreservesTriangleFanProvokingVertex transformFeedbackPreservesTriangleFanProvokingVertex>
     -- is 'Vulkan.Core10.FundamentalTypes.FALSE'.
     -- @transformFeedbackPreservesProvokingVertex@ /must/ be
     -- 'Vulkan.Core10.FundamentalTypes.FALSE' when the
@@ -328,8 +338,12 @@
 -- it is filled in with each corresponding implementation-dependent
 -- property.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_provoking_vertex VK_EXT_provoking_vertex>,
@@ -394,11 +408,11 @@
 --
 -- = Description
 --
--- If this struct is not provided when creating the pipeline, the pipeline
--- will use the 'PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT' mode.
+-- If this structure is not provided when creating the pipeline, the
+-- pipeline will use the 'PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT' mode.
 --
 -- If the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-provokingVertexModePerPipeline provokingVertexModePerPipeline>
+-- <https://registry.khronos.org/vulkan/specs/latest/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 +422,7 @@
 -- -   #VUID-VkPipelineRasterizationProvokingVertexStateCreateInfoEXT-provokingVertexMode-04883#
 --     If @provokingVertexMode@ is 'PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT',
 --     then the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-provokingVertexLast provokingVertexLast>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-provokingVertexLast provokingVertexLast>
 --     feature /must/ be enabled
 --
 -- == Valid Usage (Implicit)
@@ -421,6 +435,12 @@
 --     @provokingVertexMode@ /must/ be a valid 'ProvokingVertexModeEXT'
 --     value
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.GraphicsPipeline.PipelineRasterizationStateCreateInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_provoking_vertex VK_EXT_provoking_vertex>,
@@ -473,8 +493,16 @@
 --
 -- = Description
 --
+-- -   'PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT' specifies that the
+--     provoking vertex is the first non-adjacency vertex in the list of
+--     vertices used by a primitive.
+--
+-- -   'PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT' specifies that the provoking
+--     vertex is the last non-adjacency vertex in the list of vertices used
+--     by a primitive.
+--
 -- These modes are described more precisely in
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#drawing-primitive-topologies Primitive Topologies>.
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#drawing-primitive-topologies Primitive Topologies>.
 --
 -- = See Also
 --
@@ -484,14 +512,10 @@
 newtype ProvokingVertexModeEXT = ProvokingVertexModeEXT Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT' specifies that the provoking
--- vertex is the first non-adjacency vertex in the list of vertices used by
--- a primitive.
+-- No documentation found for Nested "VkProvokingVertexModeEXT" "VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT"
 pattern PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT = ProvokingVertexModeEXT 0
 
--- | 'PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT' specifies that the provoking
--- vertex is the last non-adjacency vertex in the list of vertices used by
--- a primitive.
+-- No documentation found for Nested "VkProvokingVertexModeEXT" "VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT"
 pattern PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT = ProvokingVertexModeEXT 1
 
 {-# COMPLETE
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
@@ -97,7 +97,7 @@
 --     -   'PhysicalDeviceProvokingVertexPropertiesEXT'
 --
 -- -   Extending
---     'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo':
+--     'Vulkan.Core10.GraphicsPipeline.PipelineRasterizationStateCreateInfo':
 --
 --     -   'PipelineRasterizationProvokingVertexStateCreateInfoEXT'
 --
@@ -175,7 +175,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_provoking_vertex Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -27,8 +27,8 @@
 --
 -- [__Contact__]
 --
---     -   Lina Versace
---         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_queue_family_foreign] @linyaa-kiwi%0A*Here describe the issue or question you have about the VK_EXT_queue_family_foreign extension* >
+--     -   James Jones
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_queue_family_foreign] @cubanismo%0A*Here describe the issue or question you have about the VK_EXT_queue_family_foreign extension* >
 --
 -- == Other Extension Metadata
 --
@@ -58,26 +58,27 @@
 -- 'Vulkan.Core10.APIConstants.QUEUE_FAMILY_FOREIGN_EXT', which can be used
 -- to transfer ownership of resources backed by external memory to foreign,
 -- external queues. This is similar to
--- 'Vulkan.Core10.APIConstants.QUEUE_FAMILY_EXTERNAL_KHR', defined in
--- @VK_KHR_external_memory@. The key differences between the two are:
+-- 'Vulkan.Extensions.VK_KHR_external_memory.QUEUE_FAMILY_EXTERNAL_KHR',
+-- defined in @VK_KHR_external_memory@. The key differences between the two
+-- are:
 --
 -- -   The queues represented by
---     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_EXTERNAL_KHR' must share
---     the same physical device and the same driver version as the current
---     'Vulkan.Core10.Handles.Instance'.
+--     'Vulkan.Extensions.VK_KHR_external_memory.QUEUE_FAMILY_EXTERNAL_KHR'
+--     must share the same physical device and the same driver version as
+--     the current 'Vulkan.Core10.Handles.Instance'.
 --     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_FOREIGN_EXT' has no such
 --     restrictions. It can represent devices and drivers from other
 --     vendors, and can even represent non-Vulkan-capable devices.
 --
 -- -   All resources backed by external memory support
---     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_EXTERNAL_KHR'. Support for
---     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_FOREIGN_EXT' is more
---     restrictive.
+--     'Vulkan.Extensions.VK_KHR_external_memory.QUEUE_FAMILY_EXTERNAL_KHR'.
+--     Support for 'Vulkan.Core10.APIConstants.QUEUE_FAMILY_FOREIGN_EXT' is
+--     more restrictive.
 --
 -- -   Applications should expect transitions to\/from
 --     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_FOREIGN_EXT' to be more
 --     expensive than transitions to\/from
---     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_EXTERNAL_KHR'.
+--     'Vulkan.Extensions.VK_KHR_external_memory.QUEUE_FAMILY_EXTERNAL_KHR'.
 --
 -- == New Enum Constants
 --
@@ -100,7 +101,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_queue_family_foreign Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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_rasterization_order_attachment_access.hs b/src/Vulkan/Extensions/VK_EXT_rasterization_order_attachment_access.hs
--- a/src/Vulkan/Extensions/VK_EXT_rasterization_order_attachment_access.hs
+++ b/src/Vulkan/Extensions/VK_EXT_rasterization_order_attachment_access.hs
@@ -18,7 +18,7 @@
 --     1
 --
 -- [__Ratification Status__]
---     Not ratified
+--     Ratified
 --
 -- [__Extension and Version Dependencies__]
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
@@ -36,7 +36,7 @@
 -- == Other Extension Metadata
 --
 -- [__Last Modified Date__]
---     2022-07-04
+--     2026-01-16
 --
 -- [__IP Status__]
 --     No known IP claims.
@@ -109,6 +109,8 @@
 --
 --     -   Initial draft
 --
+--     -   Updated Issues section 2026-01-16
+--
 -- == See Also
 --
 -- No cross-references are available
@@ -116,7 +118,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_rasterization_order_attachment_access Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_rasterization_order_attachment_access Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -165,15 +167,25 @@
 -- 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. 'PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT'
--- /can/ also be used in the @pNext@ chain of
--- 'Vulkan.Core10.Device.DeviceCreateInfo' to selectively enable these
--- features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT', it /must/
+-- add an instance of the structure, with the desired feature members set
+-- to 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_rasterization_order_attachment_access VK_ARM_rasterization_order_attachment_access>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_rasterization_order_attachment_access VK_EXT_rasterization_order_attachment_access>,
 -- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
diff --git a/src/Vulkan/Extensions/VK_EXT_rasterization_order_attachment_access.hs-boot b/src/Vulkan/Extensions/VK_EXT_rasterization_order_attachment_access.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_rasterization_order_attachment_access.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_rasterization_order_attachment_access.hs-boot
@@ -18,7 +18,7 @@
 --     1
 --
 -- [__Ratification Status__]
---     Not ratified
+--     Ratified
 --
 -- [__Extension and Version Dependencies__]
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
@@ -36,7 +36,7 @@
 -- == Other Extension Metadata
 --
 -- [__Last Modified Date__]
---     2022-07-04
+--     2026-01-16
 --
 -- [__IP Status__]
 --     No known IP claims.
@@ -109,6 +109,8 @@
 --
 --     -   Initial draft
 --
+--     -   Updated Issues section 2026-01-16
+--
 -- == See Also
 --
 -- No cross-references are available
@@ -116,7 +118,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_rasterization_order_attachment_access Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_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_ray_tracing_invocation_reorder.hs b/src/Vulkan/Extensions/VK_EXT_ray_tracing_invocation_reorder.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_EXT_ray_tracing_invocation_reorder.hs
@@ -0,0 +1,436 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_EXT_ray_tracing_invocation_reorder - device extension
+--
+-- = VK_EXT_ray_tracing_invocation_reorder
+--
+-- [__Name String__]
+--     @VK_EXT_ray_tracing_invocation_reorder@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     582
+--
+-- [__Revision__]
+--     2
+--
+-- [__Ratification Status__]
+--     Ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_ray_tracing_pipeline VK_KHR_ray_tracing_pipeline>
+--
+-- [__SPIR-V Dependencies__]
+--
+--     -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/EXT/SPV_EXT_shader_invocation_reorder.html SPV_EXT_shader_invocation_reorder>
+--
+-- [__Contact__]
+--
+--     -   Eric Werness
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_ray_tracing_invocation_reorder] @ewerness-nv%0A*Here describe the issue or question you have about the VK_EXT_ray_tracing_invocation_reorder extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_EXT_ray_tracing_invocation_reorder.adoc VK_EXT_ray_tracing_invocation_reorder>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2026-04-02
+--
+-- [__Interactions and External Dependencies__]
+--
+--     -   This extension provides API support for
+--         <https://github.com/KhronosGroup/GLSL/blob/main/extensions/ext/GLSL_EXT_shader_invocation_reorder.txt GL_EXT_shader_invocation_reorder>
+--
+-- [__Contributors__]
+--
+--     -   Eric Werness, NVIDIA
+--
+--     -   Ashwin Lele, NVIDIA
+--
+--     -   Daniel Koch, NVIDIA
+--
+--     -   Vikram Kushwaha, NVIDIA
+--
+--     -   Piers Daniell, NVIDIA
+--
+--     -   Stu Smith, AMD
+--
+--     -   Aaron Hagan, AMD
+--
+--     -   Tyler Nowicki, AMD
+--
+--     -   Sebastian Neubauer, AMD
+--
+--     -   Radoslaw Drabinski, Intel
+--
+--     -   Sven Woop, Intel
+--
+--     -   Aleksandra Krstic, QUALCOMM
+--
+--     -   Andrew Garrard, Imagination Technologies
+--
+--     -   Mathieu Robart, Arm Limited
+--
+--     -   Tom Olson, Khronos
+--
+--     -   Ralph Potter, Samsung Electronics
+--
+--     -   Antonio Caggiano, LunarG
+--
+-- == Description
+--
+-- The ray tracing pipeline API provides some ability to reorder for
+-- locality, but it is useful to have more control over how the reordering
+-- happens and what information is included in the reordering. The shader
+-- API provides a hit object to contain result information from the hit
+-- which can be used as part of the explicit sorting plus options that
+-- contain an integer for hint bits to use to add more coherency.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceRayTracingInvocationReorderFeaturesEXT'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDeviceRayTracingInvocationReorderPropertiesEXT'
+--
+-- == New Enums
+--
+-- -   'RayTracingInvocationReorderModeEXT'
+--
+-- == New Enum Constants
+--
+-- -   'EXT_RAY_TRACING_INVOCATION_REORDER_EXTENSION_NAME'
+--
+-- -   'EXT_RAY_TRACING_INVOCATION_REORDER_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_EXT'
+--
+-- == Version History
+--
+-- -   Revision 2, 2026-04-02 (Vikram Kushwaha)
+--
+--     -   Add @hitKind@ overload for @hitObjectRecordFromQueryEXT@ in
+--         @GL_EXT_shader_invocation_reorder@, and fix for
+--         <https://github.com/KhronosGroup/SPIRV-Registry/issues/373>
+--
+-- -   Revision 1, 2025-11-12 (Eric Werness)
+--
+--     -   Internal development - forked from NV
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_ray_tracing_invocation_reorder Vulkan Specification>.
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_EXT_ray_tracing_invocation_reorder  ( PhysicalDeviceRayTracingInvocationReorderFeaturesEXT(..)
+                                                                , PhysicalDeviceRayTracingInvocationReorderPropertiesEXT(..)
+                                                                , RayTracingInvocationReorderModeEXT( RAY_TRACING_INVOCATION_REORDER_MODE_NONE_EXT
+                                                                                                    , RAY_TRACING_INVOCATION_REORDER_MODE_REORDER_EXT
+                                                                                                    , ..
+                                                                                                    )
+                                                                , EXT_RAY_TRACING_INVOCATION_REORDER_SPEC_VERSION
+                                                                , pattern EXT_RAY_TRACING_INVOCATION_REORDER_SPEC_VERSION
+                                                                , EXT_RAY_TRACING_INVOCATION_REORDER_EXTENSION_NAME
+                                                                , pattern EXT_RAY_TRACING_INVOCATION_REORDER_EXTENSION_NAME
+                                                                ) where
+
+import Vulkan.Internal.Utils (enumReadPrec)
+import Vulkan.Internal.Utils (enumShowsPrec)
+import Foreign.Marshal.Alloc (allocaBytes)
+import Foreign.Ptr (nullPtr)
+import Foreign.Ptr (plusPtr)
+import GHC.Show (showsPrec)
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (FromCStruct(..))
+import Vulkan.CStruct (ToCStruct)
+import Vulkan.CStruct (ToCStruct(..))
+import Vulkan.Zero (Zero)
+import Vulkan.Zero (Zero(..))
+import Data.String (IsString)
+import Data.Typeable (Typeable)
+import Foreign.Storable (Storable)
+import Foreign.Storable (Storable(peek))
+import Foreign.Storable (Storable(poke))
+import qualified Foreign.Storable (Storable(..))
+import GHC.Generics (Generic)
+import Data.Int (Int32)
+import Foreign.Ptr (Ptr)
+import GHC.Read (Read(readPrec))
+import GHC.Show (Show(showsPrec))
+import Data.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_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_EXT))
+-- | VkPhysicalDeviceRayTracingInvocationReorderFeaturesEXT - Structure
+-- describing feature to control ray tracing invocation reordering
+--
+-- = Members
+--
+-- This structure describes the following feature:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceRayTracingInvocationReorderFeaturesEXT' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceRayTracingInvocationReorderFeaturesEXT', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_ray_tracing_invocation_reorder VK_EXT_ray_tracing_invocation_reorder>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceRayTracingInvocationReorderFeaturesEXT = PhysicalDeviceRayTracingInvocationReorderFeaturesEXT
+  { -- | #features-rayTracingInvocationReorder# @rayTracingInvocationReorder@
+    -- indicates that the implementation supports
+    -- @SPV_EXT_shader_invocation_reorder@.
+    rayTracingInvocationReorder :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceRayTracingInvocationReorderFeaturesEXT)
+#endif
+deriving instance Show PhysicalDeviceRayTracingInvocationReorderFeaturesEXT
+
+instance ToCStruct PhysicalDeviceRayTracingInvocationReorderFeaturesEXT where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceRayTracingInvocationReorderFeaturesEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (rayTracingInvocationReorder))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceRayTracingInvocationReorderFeaturesEXT where
+  peekCStruct p = do
+    rayTracingInvocationReorder <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDeviceRayTracingInvocationReorderFeaturesEXT
+             (bool32ToBool rayTracingInvocationReorder)
+
+instance Storable PhysicalDeviceRayTracingInvocationReorderFeaturesEXT where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceRayTracingInvocationReorderFeaturesEXT where
+  zero = PhysicalDeviceRayTracingInvocationReorderFeaturesEXT
+           zero
+
+
+-- | VkPhysicalDeviceRayTracingInvocationReorderPropertiesEXT - Structure
+-- describing shader module identifier properties of an implementation
+--
+-- = Description
+--
+-- If @rayTracingInvocationReorderReorderingHint@ is
+-- 'RAY_TRACING_INVOCATION_REORDER_MODE_REORDER_EXT' there /must/ exist
+-- conditions under which the ordered set of invocations before a reorder
+-- instruction is different than the ordered set of invocations after the
+-- reorder instruction. The ordering of a set of invocations is determined
+-- by the @SubgroupId@ of an invocation’s subgroup and the
+-- @SubGroupInvocationId@ of an invocation within that subgroup.
+--
+-- The reorder instructions are:
+--
+-- Because the extension changes how hits are managed there is a
+-- compatibility reason to expose the extension even when an implementation
+-- does not have sorting active.
+--
+-- If the 'PhysicalDeviceRayTracingInvocationReorderPropertiesEXT'
+-- 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.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_ray_tracing_invocation_reorder VK_EXT_ray_tracing_invocation_reorder>,
+-- 'RayTracingInvocationReorderModeEXT',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceRayTracingInvocationReorderPropertiesEXT = PhysicalDeviceRayTracingInvocationReorderPropertiesEXT
+  { -- | @rayTracingInvocationReorderReorderingHint@ is a hint indicating if the
+    -- implementation /may/ reorder at the reorder calls.
+    rayTracingInvocationReorderReorderingHint :: RayTracingInvocationReorderModeEXT
+  , -- | @maxShaderBindingTableRecordIndex@ is the maximum shader binding table
+    -- record index allowed to be passed in to
+    -- @OpHitObjectSetShaderBindingTableRecordIndexEXT@
+    maxShaderBindingTableRecordIndex :: Word32
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceRayTracingInvocationReorderPropertiesEXT)
+#endif
+deriving instance Show PhysicalDeviceRayTracingInvocationReorderPropertiesEXT
+
+instance ToCStruct PhysicalDeviceRayTracingInvocationReorderPropertiesEXT where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceRayTracingInvocationReorderPropertiesEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr RayTracingInvocationReorderModeEXT)) (rayTracingInvocationReorderReorderingHint)
+    poke ((p `plusPtr` 20 :: Ptr Word32)) (maxShaderBindingTableRecordIndex)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr RayTracingInvocationReorderModeEXT)) (zero)
+    poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct PhysicalDeviceRayTracingInvocationReorderPropertiesEXT where
+  peekCStruct p = do
+    rayTracingInvocationReorderReorderingHint <- peek @RayTracingInvocationReorderModeEXT ((p `plusPtr` 16 :: Ptr RayTracingInvocationReorderModeEXT))
+    maxShaderBindingTableRecordIndex <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
+    pure $ PhysicalDeviceRayTracingInvocationReorderPropertiesEXT
+             rayTracingInvocationReorderReorderingHint
+             maxShaderBindingTableRecordIndex
+
+instance Storable PhysicalDeviceRayTracingInvocationReorderPropertiesEXT where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceRayTracingInvocationReorderPropertiesEXT where
+  zero = PhysicalDeviceRayTracingInvocationReorderPropertiesEXT
+           zero
+           zero
+
+
+-- | VkRayTracingInvocationReorderModeEXT - Enum providing a hint on how the
+-- application /may/ reorder
+--
+-- = Description
+--
+-- -   'RAY_TRACING_INVOCATION_REORDER_MODE_NONE_EXT' specifies that the
+--     implementation does not reorder at reorder calls.
+--
+-- -   'RAY_TRACING_INVOCATION_REORDER_MODE_REORDER_EXT' specifies that the
+--     implementation /may/ reorder at reorder calls.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_ray_tracing_invocation_reorder VK_EXT_ray_tracing_invocation_reorder>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing_invocation_reorder VK_NV_ray_tracing_invocation_reorder>,
+-- 'PhysicalDeviceRayTracingInvocationReorderPropertiesEXT',
+-- 'Vulkan.Extensions.VK_NV_ray_tracing_invocation_reorder.PhysicalDeviceRayTracingInvocationReorderPropertiesNV'
+newtype RayTracingInvocationReorderModeEXT = RayTracingInvocationReorderModeEXT Int32
+  deriving newtype (Eq, Ord, Storable, Zero)
+
+-- No documentation found for Nested "VkRayTracingInvocationReorderModeEXT" "VK_RAY_TRACING_INVOCATION_REORDER_MODE_NONE_EXT"
+pattern RAY_TRACING_INVOCATION_REORDER_MODE_NONE_EXT = RayTracingInvocationReorderModeEXT 0
+
+-- No documentation found for Nested "VkRayTracingInvocationReorderModeEXT" "VK_RAY_TRACING_INVOCATION_REORDER_MODE_REORDER_EXT"
+pattern RAY_TRACING_INVOCATION_REORDER_MODE_REORDER_EXT = RayTracingInvocationReorderModeEXT 1
+
+{-# COMPLETE
+  RAY_TRACING_INVOCATION_REORDER_MODE_NONE_EXT
+  , RAY_TRACING_INVOCATION_REORDER_MODE_REORDER_EXT ::
+    RayTracingInvocationReorderModeEXT
+  #-}
+
+conNameRayTracingInvocationReorderModeEXT :: String
+conNameRayTracingInvocationReorderModeEXT = "RayTracingInvocationReorderModeEXT"
+
+enumPrefixRayTracingInvocationReorderModeEXT :: String
+enumPrefixRayTracingInvocationReorderModeEXT = "RAY_TRACING_INVOCATION_REORDER_MODE_"
+
+showTableRayTracingInvocationReorderModeEXT :: [(RayTracingInvocationReorderModeEXT, String)]
+showTableRayTracingInvocationReorderModeEXT =
+  [
+    ( RAY_TRACING_INVOCATION_REORDER_MODE_NONE_EXT
+    , "NONE_EXT"
+    )
+  ,
+    ( RAY_TRACING_INVOCATION_REORDER_MODE_REORDER_EXT
+    , "REORDER_EXT"
+    )
+  ]
+
+instance Show RayTracingInvocationReorderModeEXT where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixRayTracingInvocationReorderModeEXT
+      showTableRayTracingInvocationReorderModeEXT
+      conNameRayTracingInvocationReorderModeEXT
+      (\(RayTracingInvocationReorderModeEXT x) -> x)
+      (showsPrec 11)
+
+instance Read RayTracingInvocationReorderModeEXT where
+  readPrec =
+    enumReadPrec
+      enumPrefixRayTracingInvocationReorderModeEXT
+      showTableRayTracingInvocationReorderModeEXT
+      conNameRayTracingInvocationReorderModeEXT
+      RayTracingInvocationReorderModeEXT
+
+type EXT_RAY_TRACING_INVOCATION_REORDER_SPEC_VERSION = 2
+
+-- No documentation found for TopLevel "VK_EXT_RAY_TRACING_INVOCATION_REORDER_SPEC_VERSION"
+pattern EXT_RAY_TRACING_INVOCATION_REORDER_SPEC_VERSION :: forall a . Integral a => a
+pattern EXT_RAY_TRACING_INVOCATION_REORDER_SPEC_VERSION = 2
+
+
+type EXT_RAY_TRACING_INVOCATION_REORDER_EXTENSION_NAME = "VK_EXT_ray_tracing_invocation_reorder"
+
+-- No documentation found for TopLevel "VK_EXT_RAY_TRACING_INVOCATION_REORDER_EXTENSION_NAME"
+pattern EXT_RAY_TRACING_INVOCATION_REORDER_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern EXT_RAY_TRACING_INVOCATION_REORDER_EXTENSION_NAME = "VK_EXT_ray_tracing_invocation_reorder"
+
diff --git a/src/Vulkan/Extensions/VK_EXT_ray_tracing_invocation_reorder.hs-boot b/src/Vulkan/Extensions/VK_EXT_ray_tracing_invocation_reorder.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_EXT_ray_tracing_invocation_reorder.hs-boot
@@ -0,0 +1,171 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_EXT_ray_tracing_invocation_reorder - device extension
+--
+-- = VK_EXT_ray_tracing_invocation_reorder
+--
+-- [__Name String__]
+--     @VK_EXT_ray_tracing_invocation_reorder@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     582
+--
+-- [__Revision__]
+--     2
+--
+-- [__Ratification Status__]
+--     Ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_ray_tracing_pipeline VK_KHR_ray_tracing_pipeline>
+--
+-- [__SPIR-V Dependencies__]
+--
+--     -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/EXT/SPV_EXT_shader_invocation_reorder.html SPV_EXT_shader_invocation_reorder>
+--
+-- [__Contact__]
+--
+--     -   Eric Werness
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_ray_tracing_invocation_reorder] @ewerness-nv%0A*Here describe the issue or question you have about the VK_EXT_ray_tracing_invocation_reorder extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_EXT_ray_tracing_invocation_reorder.adoc VK_EXT_ray_tracing_invocation_reorder>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2026-04-02
+--
+-- [__Interactions and External Dependencies__]
+--
+--     -   This extension provides API support for
+--         <https://github.com/KhronosGroup/GLSL/blob/main/extensions/ext/GLSL_EXT_shader_invocation_reorder.txt GL_EXT_shader_invocation_reorder>
+--
+-- [__Contributors__]
+--
+--     -   Eric Werness, NVIDIA
+--
+--     -   Ashwin Lele, NVIDIA
+--
+--     -   Daniel Koch, NVIDIA
+--
+--     -   Vikram Kushwaha, NVIDIA
+--
+--     -   Piers Daniell, NVIDIA
+--
+--     -   Stu Smith, AMD
+--
+--     -   Aaron Hagan, AMD
+--
+--     -   Tyler Nowicki, AMD
+--
+--     -   Sebastian Neubauer, AMD
+--
+--     -   Radoslaw Drabinski, Intel
+--
+--     -   Sven Woop, Intel
+--
+--     -   Aleksandra Krstic, QUALCOMM
+--
+--     -   Andrew Garrard, Imagination Technologies
+--
+--     -   Mathieu Robart, Arm Limited
+--
+--     -   Tom Olson, Khronos
+--
+--     -   Ralph Potter, Samsung Electronics
+--
+--     -   Antonio Caggiano, LunarG
+--
+-- == Description
+--
+-- The ray tracing pipeline API provides some ability to reorder for
+-- locality, but it is useful to have more control over how the reordering
+-- happens and what information is included in the reordering. The shader
+-- API provides a hit object to contain result information from the hit
+-- which can be used as part of the explicit sorting plus options that
+-- contain an integer for hint bits to use to add more coherency.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceRayTracingInvocationReorderFeaturesEXT'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDeviceRayTracingInvocationReorderPropertiesEXT'
+--
+-- == New Enums
+--
+-- -   'RayTracingInvocationReorderModeEXT'
+--
+-- == New Enum Constants
+--
+-- -   'EXT_RAY_TRACING_INVOCATION_REORDER_EXTENSION_NAME'
+--
+-- -   'EXT_RAY_TRACING_INVOCATION_REORDER_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_EXT'
+--
+-- == Version History
+--
+-- -   Revision 2, 2026-04-02 (Vikram Kushwaha)
+--
+--     -   Add @hitKind@ overload for @hitObjectRecordFromQueryEXT@ in
+--         @GL_EXT_shader_invocation_reorder@, and fix for
+--         <https://github.com/KhronosGroup/SPIRV-Registry/issues/373>
+--
+-- -   Revision 1, 2025-11-12 (Eric Werness)
+--
+--     -   Internal development - forked from NV
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_ray_tracing_invocation_reorder Vulkan Specification>.
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_EXT_ray_tracing_invocation_reorder  ( PhysicalDeviceRayTracingInvocationReorderFeaturesEXT
+                                                                , PhysicalDeviceRayTracingInvocationReorderPropertiesEXT
+                                                                , RayTracingInvocationReorderModeEXT
+                                                                ) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data PhysicalDeviceRayTracingInvocationReorderFeaturesEXT
+
+instance ToCStruct PhysicalDeviceRayTracingInvocationReorderFeaturesEXT
+instance Show PhysicalDeviceRayTracingInvocationReorderFeaturesEXT
+
+instance FromCStruct PhysicalDeviceRayTracingInvocationReorderFeaturesEXT
+
+
+data PhysicalDeviceRayTracingInvocationReorderPropertiesEXT
+
+instance ToCStruct PhysicalDeviceRayTracingInvocationReorderPropertiesEXT
+instance Show PhysicalDeviceRayTracingInvocationReorderPropertiesEXT
+
+instance FromCStruct PhysicalDeviceRayTracingInvocationReorderPropertiesEXT
+
+
+data RayTracingInvocationReorderModeEXT
+
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
@@ -18,7 +18,7 @@
 --     1
 --
 -- [__Ratification Status__]
---     Not ratified
+--     Ratified
 --
 -- [__Extension and Version Dependencies__]
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_sampler_ycbcr_conversion VK_KHR_sampler_ycbcr_conversion>
@@ -51,7 +51,7 @@
 -- This extension enables the
 -- 'Vulkan.Core10.Enums.Format.FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16'
 -- format to be used without a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
 -- enabled.
 --
 -- == New Structures
@@ -105,7 +105,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_rgba10x6_formats Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -154,12 +154,22 @@
 -- 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. 'PhysicalDeviceRGBA10X6FormatsFeaturesEXT' /can/ also be used
--- in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceRGBA10X6FormatsFeaturesEXT', it /must/ add an instance of
+-- the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_rgba10x6_formats VK_EXT_rgba10x6_formats>,
@@ -173,7 +183,7 @@
     -- @subresourceRange.aspectMask@ equal to
     -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT' without
     -- a
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
+    -- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -18,7 +18,7 @@
 --     1
 --
 -- [__Ratification Status__]
---     Not ratified
+--     Ratified
 --
 -- [__Extension and Version Dependencies__]
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_sampler_ycbcr_conversion VK_KHR_sampler_ycbcr_conversion>
@@ -51,7 +51,7 @@
 -- This extension enables the
 -- 'Vulkan.Core10.Enums.Format.FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16'
 -- format to be used without a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
 -- enabled.
 --
 -- == New Structures
@@ -105,7 +105,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_rgba10x6_formats Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -25,6 +25,12 @@
 --     or
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
 --
+-- [__Deprecation State__]
+--
+--     -   /Promoted/ to
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_robustness2 VK_KHR_robustness2>
+--         extension
+--
 -- [__Contact__]
 --
 --     -   Liam Middlebrook
@@ -52,9 +58,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#textures-conversion-to-rgba Conversion to RGBA>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#images-component-substitution>
 -- and
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#fxvertex-input-extraction vertex input attribute extraction>.
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -64,6 +70,12 @@
 -- valid handle. Accesses to null descriptors have well-defined behavior,
 -- and do not rely on robustness.
 --
+-- == Promotion to @VK_KHR_robustness2@
+--
+-- All functionality in this extension is included in @VK_KHR_robustness2@,
+-- with the suffix changed to KHR. The original type, enum, and command
+-- names are still available as aliases of the core functionality.
+--
 -- == New Structures
 --
 -- -   Extending
@@ -85,9 +97,9 @@
 --
 -- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT'
+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT'
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT'
+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT'
 --
 -- == Issues
 --
@@ -123,234 +135,43 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_robustness2 Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
-module Vulkan.Extensions.VK_EXT_robustness2  ( PhysicalDeviceRobustness2FeaturesEXT(..)
-                                             , PhysicalDeviceRobustness2PropertiesEXT(..)
+module Vulkan.Extensions.VK_EXT_robustness2  ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT
+                                             , pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT
+                                             , PhysicalDeviceRobustness2FeaturesEXT
+                                             , PhysicalDeviceRobustness2PropertiesEXT
                                              , EXT_ROBUSTNESS_2_SPEC_VERSION
                                              , pattern EXT_ROBUSTNESS_2_SPEC_VERSION
                                              , EXT_ROBUSTNESS_2_EXTENSION_NAME
                                              , pattern EXT_ROBUSTNESS_2_EXTENSION_NAME
+                                             , PhysicalDeviceRobustness2FeaturesKHR(..)
+                                             , PhysicalDeviceRobustness2PropertiesKHR(..)
                                              ) 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.FundamentalTypes (DeviceSize)
-import Vulkan.Core10.Enums.StructureType (StructureType)
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT))
--- | VkPhysicalDeviceRobustness2FeaturesEXT - Structure describing the
--- out-of-bounds behavior for an implementation
---
--- = Members
---
--- This structure describes the following features:
---
--- = Description
---
--- If the 'PhysicalDeviceRobustness2FeaturesEXT' 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. 'PhysicalDeviceRobustness2FeaturesEXT' /can/ also be used in
--- the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
---
--- == Valid Usage
---
--- -   #VUID-VkPhysicalDeviceRobustness2FeaturesEXT-robustBufferAccess2-04000#
---     If @robustBufferAccess2@ is enabled then
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     /must/ also be enabled
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkPhysicalDeviceRobustness2FeaturesEXT-sType-sType# @sType@
---     /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT'
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_robustness2 VK_EXT_robustness2>,
--- 'Vulkan.Core10.FundamentalTypes.Bool32',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PhysicalDeviceRobustness2FeaturesEXT = PhysicalDeviceRobustness2FeaturesEXT
-  { -- | #features-robustBufferAccess2# @robustBufferAccess2@ indicates whether
-    -- buffer accesses are tightly bounds-checked against the range of the
-    -- descriptor. Uniform buffers /must/ be bounds-checked to the range of the
-    -- descriptor, where the range is rounded up to a multiple of
-    -- <https://registry.khronos.org/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-robustStorageBufferAccessSizeAlignment robustStorageBufferAccessSizeAlignment>.
-    -- Out of bounds buffer loads will return zero values, and
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures image load, sample, and atomic operations>
-    -- from texel buffers will have (0,0,1) values
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-conversion-to-rgba inserted for missing G, B, or A components>
-    -- based on the format.
-    robustBufferAccess2 :: Bool
-  , -- | #features-robustImageAccess2# @robustImageAccess2@ indicates whether
-    -- image accesses are tightly bounds-checked against the dimensions of the
-    -- image view. Out of bounds
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures image load, sample, and atomic operations>
-    -- from images will return zero values, with (0,0,1) values
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-conversion-to-rgba inserted for missing G, B, or A components>
-    -- based on the format.
-    robustImageAccess2 :: Bool
-  , -- | #features-nullDescriptor# @nullDescriptor@ indicates whether descriptors
-    -- /can/ be written with a 'Vulkan.Core10.APIConstants.NULL_HANDLE'
-    -- resource or view, which are considered valid to access and act as if the
-    -- descriptor were bound to nothing.
-    nullDescriptor :: Bool
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PhysicalDeviceRobustness2FeaturesEXT)
-#endif
-deriving instance Show PhysicalDeviceRobustness2FeaturesEXT
+import Vulkan.Extensions.VK_KHR_robustness2 (PhysicalDeviceRobustness2FeaturesKHR)
+import Vulkan.Extensions.VK_KHR_robustness2 (PhysicalDeviceRobustness2PropertiesKHR)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_KHR))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_KHR))
+import Vulkan.Extensions.VK_KHR_robustness2 (PhysicalDeviceRobustness2FeaturesKHR(..))
+import Vulkan.Extensions.VK_KHR_robustness2 (PhysicalDeviceRobustness2PropertiesKHR(..))
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT = STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_KHR
 
-instance ToCStruct PhysicalDeviceRobustness2FeaturesEXT where
-  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PhysicalDeviceRobustness2FeaturesEXT{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (robustBufferAccess2))
-    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (robustImageAccess2))
-    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (nullDescriptor))
-    f
-  cStructSize = 32
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
-    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))
-    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (zero))
-    f
 
-instance FromCStruct PhysicalDeviceRobustness2FeaturesEXT where
-  peekCStruct p = do
-    robustBufferAccess2 <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
-    robustImageAccess2 <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
-    nullDescriptor <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))
-    pure $ PhysicalDeviceRobustness2FeaturesEXT
-             (bool32ToBool robustBufferAccess2)
-             (bool32ToBool robustImageAccess2)
-             (bool32ToBool nullDescriptor)
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT = STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_KHR
 
-instance Storable PhysicalDeviceRobustness2FeaturesEXT where
-  sizeOf ~_ = 32
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
 
-instance Zero PhysicalDeviceRobustness2FeaturesEXT where
-  zero = PhysicalDeviceRobustness2FeaturesEXT
-           zero
-           zero
-           zero
+-- No documentation found for TopLevel "VkPhysicalDeviceRobustness2FeaturesEXT"
+type PhysicalDeviceRobustness2FeaturesEXT = PhysicalDeviceRobustness2FeaturesKHR
 
 
--- | VkPhysicalDeviceRobustness2PropertiesEXT - Structure describing robust
--- buffer access properties supported by an implementation
---
--- = Description
---
--- If the 'PhysicalDeviceRobustness2PropertiesEXT' 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_robustness2 VK_EXT_robustness2>,
--- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PhysicalDeviceRobustness2PropertiesEXT = PhysicalDeviceRobustness2PropertiesEXT
-  { -- | #limits-robustStorageBufferAccessSizeAlignment#
-    -- @robustStorageBufferAccessSizeAlignment@ is the number of bytes that the
-    -- range of a storage buffer descriptor is rounded up to when used for
-    -- bounds-checking when the
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
-    -- feature 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 the
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
-    -- feature is enabled. This value /must/ be a power of two in the range [1,
-    -- 256].
-    robustUniformBufferAccessSizeAlignment :: DeviceSize
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PhysicalDeviceRobustness2PropertiesEXT)
-#endif
-deriving instance Show PhysicalDeviceRobustness2PropertiesEXT
-
-instance ToCStruct PhysicalDeviceRobustness2PropertiesEXT where
-  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PhysicalDeviceRobustness2PropertiesEXT{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (robustStorageBufferAccessSizeAlignment)
-    poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (robustUniformBufferAccessSizeAlignment)
-    f
-  cStructSize = 32
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (zero)
-    poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (zero)
-    f
-
-instance FromCStruct PhysicalDeviceRobustness2PropertiesEXT where
-  peekCStruct p = do
-    robustStorageBufferAccessSizeAlignment <- peek @DeviceSize ((p `plusPtr` 16 :: Ptr DeviceSize))
-    robustUniformBufferAccessSizeAlignment <- peek @DeviceSize ((p `plusPtr` 24 :: Ptr DeviceSize))
-    pure $ PhysicalDeviceRobustness2PropertiesEXT
-             robustStorageBufferAccessSizeAlignment
-             robustUniformBufferAccessSizeAlignment
-
-instance Storable PhysicalDeviceRobustness2PropertiesEXT where
-  sizeOf ~_ = 32
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero PhysicalDeviceRobustness2PropertiesEXT where
-  zero = PhysicalDeviceRobustness2PropertiesEXT
-           zero
-           zero
+-- No documentation found for TopLevel "VkPhysicalDeviceRobustness2PropertiesEXT"
+type PhysicalDeviceRobustness2PropertiesEXT = PhysicalDeviceRobustness2PropertiesKHR
 
 
 type EXT_ROBUSTNESS_2_SPEC_VERSION = 1
diff --git a/src/Vulkan/Extensions/VK_EXT_robustness2.hs-boot b/src/Vulkan/Extensions/VK_EXT_robustness2.hs-boot
deleted file mode 100644
--- a/src/Vulkan/Extensions/VK_EXT_robustness2.hs-boot
+++ /dev/null
@@ -1,152 +0,0 @@
-{-# language CPP #-}
--- | = Name
---
--- VK_EXT_robustness2 - device extension
---
--- = VK_EXT_robustness2
---
--- [__Name String__]
---     @VK_EXT_robustness2@
---
--- [__Extension Type__]
---     Device extension
---
--- [__Registered Extension Number__]
---     287
---
--- [__Revision__]
---     1
---
--- [__Ratification Status__]
---     Ratified
---
--- [__Extension and Version Dependencies__]
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
---
--- [__Contact__]
---
---     -   Liam Middlebrook
---         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_robustness2] @liam-middlebrook%0A*Here describe the issue or question you have about the VK_EXT_robustness2 extension* >
---
--- == Other Extension Metadata
---
--- [__Last Modified Date__]
---     2020-01-29
---
--- [__IP Status__]
---     No known IP claims.
---
--- [__Contributors__]
---
---     -   Liam Middlebrook, NVIDIA
---
---     -   Jeff Bolz, NVIDIA
---
--- == Description
---
--- This extension adds stricter requirements for how out of bounds reads
--- and writes are handled. Most accesses /must/ be tightly bounds-checked,
--- out of bounds writes /must/ be discarded, out of bound reads /must/
--- 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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#textures-conversion-to-rgba Conversion to RGBA>
--- and
--- <https://registry.khronos.org/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.
---
--- This extension also adds support for “null descriptors”, where
--- 'Vulkan.Core10.APIConstants.NULL_HANDLE' /can/ be used instead of a
--- valid handle. Accesses to null descriptors have well-defined behavior,
--- and do not rely on robustness.
---
--- == New Structures
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
---     'Vulkan.Core10.Device.DeviceCreateInfo':
---
---     -   'PhysicalDeviceRobustness2FeaturesEXT'
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
---
---     -   'PhysicalDeviceRobustness2PropertiesEXT'
---
--- == New Enum Constants
---
--- -   'EXT_ROBUSTNESS_2_EXTENSION_NAME'
---
--- -   'EXT_ROBUSTNESS_2_SPEC_VERSION'
---
--- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT'
---
--- == Issues
---
--- 1.  Why do
---     'PhysicalDeviceRobustness2PropertiesEXT'::@robustUniformBufferAccessSizeAlignment@
---     and
---     'PhysicalDeviceRobustness2PropertiesEXT'::@robustStorageBufferAccessSizeAlignment@
---     exist?
---
--- __RESOLVED__: Some implementations cannot efficiently tightly
--- bounds-check all buffer accesses. Rather, the size of the bound range is
--- padded to some power of two multiple, up to 256 bytes for uniform
--- buffers and up to 4 bytes for storage buffers, and that padded size is
--- bounds-checked. This is sufficient to implement D3D-like behavior,
--- because D3D only allows binding whole uniform buffers or ranges that are
--- a multiple of 256 bytes, and D3D raw and structured buffers only support
--- 32-bit accesses.
---
--- == Examples
---
--- None.
---
--- == Version History
---
--- -   Revision 1, 2019-11-01 (Jeff Bolz, Liam Middlebrook)
---
---     -   Initial draft
---
--- == See Also
---
--- No cross-references are available
---
--- == Document Notes
---
--- For more information, see the
--- <https://registry.khronos.org/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.
-module Vulkan.Extensions.VK_EXT_robustness2  ( PhysicalDeviceRobustness2FeaturesEXT
-                                             , PhysicalDeviceRobustness2PropertiesEXT
-                                             ) where
-
-import Vulkan.CStruct (FromCStruct)
-import Vulkan.CStruct (ToCStruct)
-import Data.Kind (Type)
-
-data PhysicalDeviceRobustness2FeaturesEXT
-
-instance ToCStruct PhysicalDeviceRobustness2FeaturesEXT
-instance Show PhysicalDeviceRobustness2FeaturesEXT
-
-instance FromCStruct PhysicalDeviceRobustness2FeaturesEXT
-
-
-data PhysicalDeviceRobustness2PropertiesEXT
-
-instance ToCStruct PhysicalDeviceRobustness2PropertiesEXT
-instance Show PhysicalDeviceRobustness2PropertiesEXT
-
-instance FromCStruct PhysicalDeviceRobustness2PropertiesEXT
-
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
@@ -76,8 +76,8 @@
 -- the 'SampleLocationsInfoEXT' structure /can/ be specified for each
 -- situation where an explicit or automatic layout transition has to take
 -- place. 'SampleLocationsInfoEXT' /can/ be chained from
--- 'Vulkan.Core10.OtherTypes.ImageMemoryBarrier' structures to provide
--- sample locations for layout transitions performed by
+-- 'Vulkan.Core10.CommandBufferBuilding.ImageMemoryBarrier' structures to
+-- provide sample locations for layout transitions performed by
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdWaitEvents' and
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdPipelineBarrier' calls, and
 -- 'RenderPassSampleLocationsBeginInfoEXT' /can/ be chained from
@@ -101,7 +101,7 @@
 --
 -- -   'SubpassSampleLocationsEXT'
 --
--- -   Extending 'Vulkan.Core10.OtherTypes.ImageMemoryBarrier',
+-- -   Extending 'Vulkan.Core10.CommandBufferBuilding.ImageMemoryBarrier',
 --     'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.ImageMemoryBarrier2':
 --
 --     -   'SampleLocationsInfoEXT'
@@ -112,7 +112,7 @@
 --     -   'PhysicalDeviceSampleLocationsPropertiesEXT'
 --
 -- -   Extending
---     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo':
+--     'Vulkan.Core10.GraphicsPipeline.PipelineMultisampleStateCreateInfo':
 --
 --     -   'PipelineSampleLocationsStateCreateInfoEXT'
 --
@@ -147,6 +147,14 @@
 --
 --     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT'
 --
+-- == Issues
+--
+-- 1) When using with Dynamic Rendering, is there a
+-- VkRenderPassSampleLocationsBeginInfoEXT equivalent struct
+--
+-- __RESOLVED__: No, there are no subpasses that need to have a sample
+-- location set.
+--
 -- == Version History
 --
 -- -   Revision 1, 2017-08-02 (Daniel Rakos)
@@ -160,7 +168,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_sample_locations Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -259,11 +267,11 @@
 --
 -- This command sets the custom sample locations for subsequent drawing
 -- commands when drawing using
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-objects shader objects>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader objects>,
 -- or when the graphics pipeline is created with
 -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
 -- set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@,
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@,
 -- and when the
 -- 'PipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@
 -- property of the bound graphics pipeline is
@@ -300,7 +308,8 @@
 --
 -- -   #VUID-vkCmdSetSampleLocationsEXT-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdSetSampleLocationsEXT-videocoding# This command /must/
 --     only be called outside of a video coding scope
@@ -319,10 +328,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
 -- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdSetSampleLocationsEXT is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_sample_locations VK_EXT_sample_locations>,
@@ -504,6 +518,14 @@
 --     valid pointer to an array of @sampleLocationsCount@
 --     'SampleLocationEXT' structures
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.CommandBufferBuilding.ImageMemoryBarrier'
+--
+--     -   'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.ImageMemoryBarrier2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_sample_locations VK_EXT_sample_locations>,
@@ -731,6 +753,12 @@
 --     of @postSubpassSampleLocationsCount@ valid
 --     'SubpassSampleLocationsEXT' structures
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.CommandBufferBuilding.RenderPassBeginInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_sample_locations VK_EXT_sample_locations>,
@@ -814,8 +842,12 @@
 -- | VkPipelineSampleLocationsStateCreateInfoEXT - Structure specifying
 -- sample locations for a pipeline
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.GraphicsPipeline.PipelineMultisampleStateCreateInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_sample_locations VK_EXT_sample_locations>,
@@ -887,7 +919,11 @@
 -- it is filled in with each corresponding implementation-dependent
 -- property.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
 --
 -- = See Also
 --
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
@@ -76,8 +76,8 @@
 -- the 'SampleLocationsInfoEXT' structure /can/ be specified for each
 -- situation where an explicit or automatic layout transition has to take
 -- place. 'SampleLocationsInfoEXT' /can/ be chained from
--- 'Vulkan.Core10.OtherTypes.ImageMemoryBarrier' structures to provide
--- sample locations for layout transitions performed by
+-- 'Vulkan.Core10.CommandBufferBuilding.ImageMemoryBarrier' structures to
+-- provide sample locations for layout transitions performed by
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdWaitEvents' and
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdPipelineBarrier' calls, and
 -- 'RenderPassSampleLocationsBeginInfoEXT' /can/ be chained from
@@ -101,7 +101,7 @@
 --
 -- -   'SubpassSampleLocationsEXT'
 --
--- -   Extending 'Vulkan.Core10.OtherTypes.ImageMemoryBarrier',
+-- -   Extending 'Vulkan.Core10.CommandBufferBuilding.ImageMemoryBarrier',
 --     'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.ImageMemoryBarrier2':
 --
 --     -   'SampleLocationsInfoEXT'
@@ -112,7 +112,7 @@
 --     -   'PhysicalDeviceSampleLocationsPropertiesEXT'
 --
 -- -   Extending
---     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo':
+--     'Vulkan.Core10.GraphicsPipeline.PipelineMultisampleStateCreateInfo':
 --
 --     -   'PipelineSampleLocationsStateCreateInfoEXT'
 --
@@ -147,6 +147,14 @@
 --
 --     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT'
 --
+-- == Issues
+--
+-- 1) When using with Dynamic Rendering, is there a
+-- VkRenderPassSampleLocationsBeginInfoEXT equivalent struct
+--
+-- __RESOLVED__: No, there are no subpasses that need to have a sample
+-- location set.
+--
 -- == Version History
 --
 -- -   Revision 1, 2017-08-02 (Daniel Rakos)
@@ -160,7 +168,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_sample_locations Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -128,7 +128,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_sampler_filter_minmax Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -68,6 +68,11 @@
 -- names, retain their original names. The original Vulkan API names are
 -- still available as aliases of the core functionality.
 --
+-- == Promotion to Vulkan 1.4
+--
+-- If Vulkan 1.4 is supported, support for the @scalarBlockLayout@
+-- capability is required.
+--
 -- == New Structures
 --
 -- -   Extending
@@ -99,7 +104,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_scalar_block_layout Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -88,7 +88,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_separate_stencil_usage Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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_64bit_indexing.hs b/src/Vulkan/Extensions/VK_EXT_shader_64bit_indexing.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_EXT_shader_64bit_indexing.hs
@@ -0,0 +1,234 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_EXT_shader_64bit_indexing - device extension
+--
+-- = VK_EXT_shader_64bit_indexing
+--
+-- [__Name String__]
+--     @VK_EXT_shader_64bit_indexing@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     628
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
+--
+-- [__SPIR-V Dependencies__]
+--
+--     -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/EXT/SPV_EXT_shader_64bit_indexing.html SPV_EXT_shader_64bit_indexing>
+--
+-- [__Contact__]
+--
+--     -   Jeff Bolz
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_shader_64bit_indexing] @jeffbolznv%0A*Here describe the issue or question you have about the VK_EXT_shader_64bit_indexing extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_EXT_shader_64bit_indexing.adoc VK_EXT_shader_64bit_indexing>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2025-05-02
+--
+-- [__Interactions and External Dependencies__]
+--
+--     -   This extension provides API support for
+--         <https://github.com/KhronosGroup/GLSL/blob/main/extensions/ext/GL_EXT_shader_64bit_indexing.txt GL_EXT_shader_64bit_indexing>
+--
+-- [__Contributors__]
+--
+--     -   Jeff Bolz, NVIDIA
+--
+-- == Description
+--
+-- This extension relaxes the maxStorageBufferRange limit, allowing more
+-- than 4GB to be accessed through a buffer binding (or through a buffer
+-- device address). It adds pipeline and shader creation flags that request
+-- 64-bit addressing support, and
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-64bindexing defines>
+-- which addressing calculations use 64 bits of range.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceShader64BitIndexingFeaturesEXT'
+--
+-- == New Enum Constants
+--
+-- -   'EXT_SHADER_64BIT_INDEXING_EXTENSION_NAME'
+--
+-- -   'EXT_SHADER_64BIT_INDEXING_SPEC_VERSION'
+--
+-- -   Extending
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PipelineCreateFlagBits2':
+--
+--     -   'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_64_BIT_INDEXING_BIT_EXT'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_EXT_shader_object.ShaderCreateFlagBitsEXT':
+--
+--     -   'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_64_BIT_INDEXING_BIT_EXT'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_64_BIT_INDEXING_FEATURES_EXT'
+--
+-- == Version History
+--
+-- -   Revision 1, 2025-05-02 (Jeff Bolz)
+--
+--     -   Initial revisions
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_shader_64bit_indexing 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_64bit_indexing  ( PhysicalDeviceShader64BitIndexingFeaturesEXT(..)
+                                                       , EXT_SHADER_64BIT_INDEXING_SPEC_VERSION
+                                                       , pattern EXT_SHADER_64BIT_INDEXING_SPEC_VERSION
+                                                       , EXT_SHADER_64BIT_INDEXING_EXTENSION_NAME
+                                                       , pattern EXT_SHADER_64BIT_INDEXING_EXTENSION_NAME
+                                                       , ShaderCreateFlagBitsEXT(..)
+                                                       , ShaderCreateFlagsEXT
+                                                       ) 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_64_BIT_INDEXING_FEATURES_EXT))
+import Vulkan.Extensions.VK_EXT_shader_object (ShaderCreateFlagBitsEXT(..))
+import Vulkan.Extensions.VK_EXT_shader_object (ShaderCreateFlagsEXT)
+-- | VkPhysicalDeviceShader64BitIndexingFeaturesEXT - Structure describing
+-- 64-bit indexing features that can be supported by an implementation
+--
+-- = Members
+--
+-- This structure describes the following features:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceShader64BitIndexingFeaturesEXT' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceShader64BitIndexingFeaturesEXT', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_shader_64bit_indexing VK_EXT_shader_64bit_indexing>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceShader64BitIndexingFeaturesEXT = PhysicalDeviceShader64BitIndexingFeaturesEXT
+  { -- | #features-shader64BitIndexing# @shader64BitIndexing@ indicates that the
+    -- implementation supports
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-64bindexing using 64-bit address calculations>
+    -- for indexing cooperative matrices, cooperative vectors, storage buffers,
+    -- and physical storage buffers.
+    shader64BitIndexing :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceShader64BitIndexingFeaturesEXT)
+#endif
+deriving instance Show PhysicalDeviceShader64BitIndexingFeaturesEXT
+
+instance ToCStruct PhysicalDeviceShader64BitIndexingFeaturesEXT where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceShader64BitIndexingFeaturesEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_64_BIT_INDEXING_FEATURES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (shader64BitIndexing))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_64_BIT_INDEXING_FEATURES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceShader64BitIndexingFeaturesEXT where
+  peekCStruct p = do
+    shader64BitIndexing <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDeviceShader64BitIndexingFeaturesEXT
+             (bool32ToBool shader64BitIndexing)
+
+instance Storable PhysicalDeviceShader64BitIndexingFeaturesEXT where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceShader64BitIndexingFeaturesEXT where
+  zero = PhysicalDeviceShader64BitIndexingFeaturesEXT
+           zero
+
+
+type EXT_SHADER_64BIT_INDEXING_SPEC_VERSION = 1
+
+-- No documentation found for TopLevel "VK_EXT_SHADER_64BIT_INDEXING_SPEC_VERSION"
+pattern EXT_SHADER_64BIT_INDEXING_SPEC_VERSION :: forall a . Integral a => a
+pattern EXT_SHADER_64BIT_INDEXING_SPEC_VERSION = 1
+
+
+type EXT_SHADER_64BIT_INDEXING_EXTENSION_NAME = "VK_EXT_shader_64bit_indexing"
+
+-- No documentation found for TopLevel "VK_EXT_SHADER_64BIT_INDEXING_EXTENSION_NAME"
+pattern EXT_SHADER_64BIT_INDEXING_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern EXT_SHADER_64BIT_INDEXING_EXTENSION_NAME = "VK_EXT_shader_64bit_indexing"
+
diff --git a/src/Vulkan/Extensions/VK_EXT_shader_64bit_indexing.hs-boot b/src/Vulkan/Extensions/VK_EXT_shader_64bit_indexing.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_EXT_shader_64bit_indexing.hs-boot
@@ -0,0 +1,120 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_EXT_shader_64bit_indexing - device extension
+--
+-- = VK_EXT_shader_64bit_indexing
+--
+-- [__Name String__]
+--     @VK_EXT_shader_64bit_indexing@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     628
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
+--
+-- [__SPIR-V Dependencies__]
+--
+--     -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/EXT/SPV_EXT_shader_64bit_indexing.html SPV_EXT_shader_64bit_indexing>
+--
+-- [__Contact__]
+--
+--     -   Jeff Bolz
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_shader_64bit_indexing] @jeffbolznv%0A*Here describe the issue or question you have about the VK_EXT_shader_64bit_indexing extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_EXT_shader_64bit_indexing.adoc VK_EXT_shader_64bit_indexing>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2025-05-02
+--
+-- [__Interactions and External Dependencies__]
+--
+--     -   This extension provides API support for
+--         <https://github.com/KhronosGroup/GLSL/blob/main/extensions/ext/GL_EXT_shader_64bit_indexing.txt GL_EXT_shader_64bit_indexing>
+--
+-- [__Contributors__]
+--
+--     -   Jeff Bolz, NVIDIA
+--
+-- == Description
+--
+-- This extension relaxes the maxStorageBufferRange limit, allowing more
+-- than 4GB to be accessed through a buffer binding (or through a buffer
+-- device address). It adds pipeline and shader creation flags that request
+-- 64-bit addressing support, and
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-64bindexing defines>
+-- which addressing calculations use 64 bits of range.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceShader64BitIndexingFeaturesEXT'
+--
+-- == New Enum Constants
+--
+-- -   'EXT_SHADER_64BIT_INDEXING_EXTENSION_NAME'
+--
+-- -   'EXT_SHADER_64BIT_INDEXING_SPEC_VERSION'
+--
+-- -   Extending
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PipelineCreateFlagBits2':
+--
+--     -   'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_64_BIT_INDEXING_BIT_EXT'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_EXT_shader_object.ShaderCreateFlagBitsEXT':
+--
+--     -   'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_64_BIT_INDEXING_BIT_EXT'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_64_BIT_INDEXING_FEATURES_EXT'
+--
+-- == Version History
+--
+-- -   Revision 1, 2025-05-02 (Jeff Bolz)
+--
+--     -   Initial revisions
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_shader_64bit_indexing 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_64bit_indexing  (PhysicalDeviceShader64BitIndexingFeaturesEXT) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data PhysicalDeviceShader64BitIndexingFeaturesEXT
+
+instance ToCStruct PhysicalDeviceShader64BitIndexingFeaturesEXT
+instance Show PhysicalDeviceShader64BitIndexingFeaturesEXT
+
+instance FromCStruct PhysicalDeviceShader64BitIndexingFeaturesEXT
+
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
@@ -90,9 +90,9 @@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-AtomicFloat32AddEXT AtomicFloat32AddEXT>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-AtomicFloat32AddEXT AtomicFloat32AddEXT>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-AtomicFloat64AddEXT AtomicFloat64AddEXT>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-AtomicFloat64AddEXT AtomicFloat64AddEXT>
 --
 -- == Version History
 --
@@ -107,7 +107,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_shader_atomic_float Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -155,12 +155,22 @@
 -- structure passed to
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
 -- it is filled in to indicate whether each corresponding feature is
--- supported. 'PhysicalDeviceShaderAtomicFloatFeaturesEXT' /can/ also be
--- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceShaderAtomicFloatFeaturesEXT', it /must/ add an instance
+-- of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_shader_atomic_float VK_EXT_shader_atomic_float>,
@@ -169,7 +179,7 @@
 data PhysicalDeviceShaderAtomicFloatFeaturesEXT = PhysicalDeviceShaderAtomicFloatFeaturesEXT
   { -- | #features-shaderBufferFloat32Atomics# @shaderBufferFloat32Atomics@
     -- indicates whether shaders /can/ perform 32-bit floating-point load,
-    -- store and exchange atomic operations on storage buffers.
+    -- store, and exchange atomic operations on storage buffers.
     shaderBufferFloat32Atomics :: Bool
   , -- | #features-shaderBufferFloat32AtomicAdd# @shaderBufferFloat32AtomicAdd@
     -- indicates whether shaders /can/ perform 32-bit floating-point add atomic
@@ -177,7 +187,7 @@
     shaderBufferFloat32AtomicAdd :: Bool
   , -- | #features-shaderBufferFloat64Atomics# @shaderBufferFloat64Atomics@
     -- indicates whether shaders /can/ perform 64-bit floating-point load,
-    -- store and exchange atomic operations on storage buffers.
+    -- store, and exchange atomic operations on storage buffers.
     shaderBufferFloat64Atomics :: Bool
   , -- | #features-shaderBufferFloat64AtomicAdd# @shaderBufferFloat64AtomicAdd@
     -- indicates whether shaders /can/ perform 64-bit floating-point add atomic
@@ -185,7 +195,7 @@
     shaderBufferFloat64AtomicAdd :: Bool
   , -- | #features-shaderSharedFloat32Atomics# @shaderSharedFloat32Atomics@
     -- indicates whether shaders /can/ perform 32-bit floating-point load,
-    -- store and exchange atomic operations on shared and payload memory.
+    -- store, and exchange atomic operations on shared and payload memory.
     shaderSharedFloat32Atomics :: Bool
   , -- | #features-shaderSharedFloat32AtomicAdd# @shaderSharedFloat32AtomicAdd@
     -- indicates whether shaders /can/ perform 32-bit floating-point add atomic
@@ -193,7 +203,7 @@
     shaderSharedFloat32AtomicAdd :: Bool
   , -- | #features-shaderSharedFloat64Atomics# @shaderSharedFloat64Atomics@
     -- indicates whether shaders /can/ perform 64-bit floating-point load,
-    -- store and exchange atomic operations on shared and payload memory.
+    -- store, and exchange atomic operations on shared and payload memory.
     shaderSharedFloat64Atomics :: Bool
   , -- | #features-shaderSharedFloat64AtomicAdd# @shaderSharedFloat64AtomicAdd@
     -- indicates whether shaders /can/ perform 64-bit floating-point add atomic
@@ -201,14 +211,14 @@
     shaderSharedFloat64AtomicAdd :: Bool
   , -- | #features-shaderImageFloat32Atomics# @shaderImageFloat32Atomics@
     -- indicates whether shaders /can/ perform 32-bit floating-point load,
-    -- store and exchange atomic image operations.
+    -- store, and exchange atomic image operations.
     shaderImageFloat32Atomics :: Bool
   , -- | #features-shaderImageFloat32AtomicAdd# @shaderImageFloat32AtomicAdd@
     -- indicates whether shaders /can/ perform 32-bit floating-point add atomic
     -- image operations.
     shaderImageFloat32AtomicAdd :: Bool
   , -- | #features-sparseImageFloat32Atomics# @sparseImageFloat32Atomics@
-    -- indicates whether 32-bit floating-point load, store and exchange atomic
+    -- indicates whether 32-bit floating-point load, store, and exchange atomic
     -- operations /can/ be used on sparse images.
     sparseImageFloat32Atomics :: Bool
   , -- | #features-sparseImageFloat32AtomicAdd# @sparseImageFloat32AtomicAdd@
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
@@ -90,9 +90,9 @@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-AtomicFloat32AddEXT AtomicFloat32AddEXT>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-AtomicFloat32AddEXT AtomicFloat32AddEXT>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-AtomicFloat64AddEXT AtomicFloat64AddEXT>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-AtomicFloat64AddEXT AtomicFloat64AddEXT>
 --
 -- == Version History
 --
@@ -107,7 +107,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_shader_atomic_float Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -100,13 +100,13 @@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-AtomicFloat16AddEXT AtomicFloat32MinMaxEXT>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-AtomicFloat16AddEXT AtomicFloat32MinMaxEXT>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-AtomicFloat16MinMaxEXT AtomicFloat32MinMaxEXT>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-AtomicFloat16MinMaxEXT AtomicFloat32MinMaxEXT>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-AtomicFloat32MinMaxEXT AtomicFloat32MinMaxEXT>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-AtomicFloat32MinMaxEXT AtomicFloat32MinMaxEXT>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-AtomicFloat64MinMaxEXT AtomicFloat64MinMaxEXT>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-AtomicFloat64MinMaxEXT AtomicFloat64MinMaxEXT>
 --
 -- == Version History
 --
@@ -121,7 +121,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_shader_atomic_float2 Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -169,12 +169,22 @@
 -- 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. 'PhysicalDeviceShaderAtomicFloat2FeaturesEXT' /can/ also be
--- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceShaderAtomicFloat2FeaturesEXT', it /must/ add an instance
+-- of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_shader_atomic_float2 VK_EXT_shader_atomic_float2>,
@@ -206,7 +216,7 @@
     shaderBufferFloat64AtomicMinMax :: Bool
   , -- | #features-shaderSharedFloat16Atomics# @shaderSharedFloat16Atomics@
     -- indicates whether shaders /can/ perform 16-bit floating-point load,
-    -- store and exchange atomic operations on shared and payload memory.
+    -- store, and exchange atomic operations on shared and payload memory.
     shaderSharedFloat16Atomics :: Bool
   , -- | #features-shaderSharedFloat16AtomicAdd# @shaderSharedFloat16AtomicAdd@
     -- indicates whether shaders /can/ perform 16-bit floating-point add atomic
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
@@ -100,13 +100,13 @@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-AtomicFloat16AddEXT AtomicFloat32MinMaxEXT>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-AtomicFloat16AddEXT AtomicFloat32MinMaxEXT>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-AtomicFloat16MinMaxEXT AtomicFloat32MinMaxEXT>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-AtomicFloat16MinMaxEXT AtomicFloat32MinMaxEXT>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-AtomicFloat32MinMaxEXT AtomicFloat32MinMaxEXT>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-AtomicFloat32MinMaxEXT AtomicFloat32MinMaxEXT>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-AtomicFloat64MinMaxEXT AtomicFloat64MinMaxEXT>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-AtomicFloat64MinMaxEXT AtomicFloat64MinMaxEXT>
 --
 -- == Version History
 --
@@ -121,7 +121,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_shader_atomic_float2 Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -66,7 +66,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-group-operations group operations>.
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-group-operations group operations>.
 -- This is a better match for the “discard” instruction in HLSL.
 --
 -- == New Structures
@@ -89,7 +89,7 @@
 --
 -- == New SPIR-V Capability
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-DemoteToHelperInvocation DemoteToHelperInvocationEXT>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-DemoteToHelperInvocation DemoteToHelperInvocationEXT>
 --
 -- == Promotion to Vulkan 1.3
 --
@@ -112,7 +112,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_shader_demote_to_helper_invocation Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
diff --git a/src/Vulkan/Extensions/VK_EXT_shader_float8.hs b/src/Vulkan/Extensions/VK_EXT_shader_float8.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_EXT_shader_float8.hs
@@ -0,0 +1,262 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_EXT_shader_float8 - device extension
+--
+-- = VK_EXT_shader_float8
+--
+-- [__Name String__]
+--     @VK_EXT_shader_float8@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     568
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
+--
+-- [__API Interactions__]
+--
+--     -   Interacts with VK_KHR_cooperative_matrix
+--
+-- [__SPIR-V Dependencies__]
+--
+--     -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/EXT/SPV_EXT_float8.html SPV_EXT_float8>
+--
+-- [__Contact__]
+--
+--     -   Kevin Petit
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_shader_float8] @kpet%0A*Here describe the issue or question you have about the VK_EXT_shader_float8 extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_EXT_shader_float8.adoc VK_EXT_shader_float8>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2025-04-16
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Contributors__]
+--
+--     -   Kévin Petit, Arm Ltd.
+--
+--     -   Stu Smith, AMD
+--
+--     -   Jeff Bolz, NVIDIA
+--
+--     -   Craig Graham, Samsung
+--
+-- == Description
+--
+-- This extension enables support for 8-bit floating-point data types as
+-- defined in SPV_EXT_float8.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceShaderFloat8FeaturesEXT'
+--
+-- == New Enum Constants
+--
+-- -   'EXT_SHADER_FLOAT8_EXTENSION_NAME'
+--
+-- -   'EXT_SHADER_FLOAT8_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT8_FEATURES_EXT'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_cooperative_matrix VK_KHR_cooperative_matrix>
+-- is supported:
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_NV_cooperative_vector.ComponentTypeKHR':
+--
+--     -   'Vulkan.Extensions.VK_NV_cooperative_vector.COMPONENT_TYPE_FLOAT8_E4M3_EXT'
+--
+--     -   'Vulkan.Extensions.VK_NV_cooperative_vector.COMPONENT_TYPE_FLOAT8_E5M2_EXT'
+--
+-- == New SPIR-V Capabilities
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-Float8EXT Float8EXT>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-Float8CooperativeMatrixEXT Float8CooperativeMatrixEXT>
+--
+-- == Issues
+--
+-- 1) Resolve interactions with the changes VK_KHR_shader_float16 makes to
+-- rules for denorm flushing (always allowed by default for all FP
+-- formats). How to describe the requirement to preserve subnormals?
+--
+-- + __RESOLVED__: Subnormals are always preserved when converting FP8
+-- values to IEEE 754 binary 16. In all other cases, subnormals may be
+-- flushed to zero.
+--
+-- +
+--
+-- == Version History
+--
+-- -   Revision 1, 2025-04-16 (Kévin Petit)
+--
+--     -   Initial draft
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_shader_float8 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_float8  ( PhysicalDeviceShaderFloat8FeaturesEXT(..)
+                                               , EXT_SHADER_FLOAT8_SPEC_VERSION
+                                               , pattern EXT_SHADER_FLOAT8_SPEC_VERSION
+                                               , EXT_SHADER_FLOAT8_EXTENSION_NAME
+                                               , pattern EXT_SHADER_FLOAT8_EXTENSION_NAME
+                                               , ComponentTypeKHR(..)
+                                               ) 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_FLOAT8_FEATURES_EXT))
+import Vulkan.Extensions.VK_NV_cooperative_vector (ComponentTypeKHR(..))
+-- | VkPhysicalDeviceShaderFloat8FeaturesEXT - Structure describing float8
+-- features that can be supported by the implementation
+--
+-- = Members
+--
+-- This structure describes the following features:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceShaderFloat8FeaturesEXT' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceShaderFloat8FeaturesEXT', it /must/ add an instance of
+-- the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_shader_float8 VK_EXT_shader_float8>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceShaderFloat8FeaturesEXT = PhysicalDeviceShaderFloat8FeaturesEXT
+  { -- | #features-shaderFloat8# @shaderFloat8@ indicates whether the
+    -- implementation supports shaders with the @Float8EXT@ capability.
+    shaderFloat8 :: Bool
+  , -- | #features-shaderFloat8CooperativeMatrix# @shaderFloat8CooperativeMatrix@
+    -- indicates whether the implementation supports shaders with the
+    -- @Float8CooperativeMatrixEXT@ capability.
+    shaderFloat8CooperativeMatrix :: Bool
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceShaderFloat8FeaturesEXT)
+#endif
+deriving instance Show PhysicalDeviceShaderFloat8FeaturesEXT
+
+instance ToCStruct PhysicalDeviceShaderFloat8FeaturesEXT where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceShaderFloat8FeaturesEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT8_FEATURES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (shaderFloat8))
+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (shaderFloat8CooperativeMatrix))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT8_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 PhysicalDeviceShaderFloat8FeaturesEXT where
+  peekCStruct p = do
+    shaderFloat8 <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    shaderFloat8CooperativeMatrix <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
+    pure $ PhysicalDeviceShaderFloat8FeaturesEXT
+             (bool32ToBool shaderFloat8)
+             (bool32ToBool shaderFloat8CooperativeMatrix)
+
+instance Storable PhysicalDeviceShaderFloat8FeaturesEXT where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceShaderFloat8FeaturesEXT where
+  zero = PhysicalDeviceShaderFloat8FeaturesEXT
+           zero
+           zero
+
+
+type EXT_SHADER_FLOAT8_SPEC_VERSION = 1
+
+-- No documentation found for TopLevel "VK_EXT_SHADER_FLOAT8_SPEC_VERSION"
+pattern EXT_SHADER_FLOAT8_SPEC_VERSION :: forall a . Integral a => a
+pattern EXT_SHADER_FLOAT8_SPEC_VERSION = 1
+
+
+type EXT_SHADER_FLOAT8_EXTENSION_NAME = "VK_EXT_shader_float8"
+
+-- No documentation found for TopLevel "VK_EXT_SHADER_FLOAT8_EXTENSION_NAME"
+pattern EXT_SHADER_FLOAT8_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern EXT_SHADER_FLOAT8_EXTENSION_NAME = "VK_EXT_shader_float8"
+
diff --git a/src/Vulkan/Extensions/VK_EXT_shader_float8.hs-boot b/src/Vulkan/Extensions/VK_EXT_shader_float8.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_EXT_shader_float8.hs-boot
@@ -0,0 +1,143 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_EXT_shader_float8 - device extension
+--
+-- = VK_EXT_shader_float8
+--
+-- [__Name String__]
+--     @VK_EXT_shader_float8@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     568
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
+--
+-- [__API Interactions__]
+--
+--     -   Interacts with VK_KHR_cooperative_matrix
+--
+-- [__SPIR-V Dependencies__]
+--
+--     -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/EXT/SPV_EXT_float8.html SPV_EXT_float8>
+--
+-- [__Contact__]
+--
+--     -   Kevin Petit
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_shader_float8] @kpet%0A*Here describe the issue or question you have about the VK_EXT_shader_float8 extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_EXT_shader_float8.adoc VK_EXT_shader_float8>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2025-04-16
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Contributors__]
+--
+--     -   Kévin Petit, Arm Ltd.
+--
+--     -   Stu Smith, AMD
+--
+--     -   Jeff Bolz, NVIDIA
+--
+--     -   Craig Graham, Samsung
+--
+-- == Description
+--
+-- This extension enables support for 8-bit floating-point data types as
+-- defined in SPV_EXT_float8.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceShaderFloat8FeaturesEXT'
+--
+-- == New Enum Constants
+--
+-- -   'EXT_SHADER_FLOAT8_EXTENSION_NAME'
+--
+-- -   'EXT_SHADER_FLOAT8_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT8_FEATURES_EXT'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_cooperative_matrix VK_KHR_cooperative_matrix>
+-- is supported:
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_NV_cooperative_vector.ComponentTypeKHR':
+--
+--     -   'Vulkan.Extensions.VK_NV_cooperative_vector.COMPONENT_TYPE_FLOAT8_E4M3_EXT'
+--
+--     -   'Vulkan.Extensions.VK_NV_cooperative_vector.COMPONENT_TYPE_FLOAT8_E5M2_EXT'
+--
+-- == New SPIR-V Capabilities
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-Float8EXT Float8EXT>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-Float8CooperativeMatrixEXT Float8CooperativeMatrixEXT>
+--
+-- == Issues
+--
+-- 1) Resolve interactions with the changes VK_KHR_shader_float16 makes to
+-- rules for denorm flushing (always allowed by default for all FP
+-- formats). How to describe the requirement to preserve subnormals?
+--
+-- + __RESOLVED__: Subnormals are always preserved when converting FP8
+-- values to IEEE 754 binary 16. In all other cases, subnormals may be
+-- flushed to zero.
+--
+-- +
+--
+-- == Version History
+--
+-- -   Revision 1, 2025-04-16 (Kévin Petit)
+--
+--     -   Initial draft
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_shader_float8 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_float8  (PhysicalDeviceShaderFloat8FeaturesEXT) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data PhysicalDeviceShaderFloat8FeaturesEXT
+
+instance ToCStruct PhysicalDeviceShaderFloat8FeaturesEXT
+instance Show PhysicalDeviceShaderFloat8FeaturesEXT
+
+instance FromCStruct PhysicalDeviceShaderFloat8FeaturesEXT
+
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
@@ -105,7 +105,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_shader_image_atomic_int64 Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -153,11 +153,21 @@
 -- structure passed to
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
 -- it is filled in to indicate whether each corresponding feature is
--- supported. @VkPhysicalDeviceShaderAtomicInt64FeaturesEXT@ /can/ also be
--- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- @VkPhysicalDeviceShaderAtomicInt64FeaturesEXT@, it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
 --
 -- = See Also
 --
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
@@ -105,7 +105,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_shader_image_atomic_int64 Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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_long_vector.hs b/src/Vulkan/Extensions/VK_EXT_shader_long_vector.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_EXT_shader_long_vector.hs
@@ -0,0 +1,305 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_EXT_shader_long_vector - device extension
+--
+-- = VK_EXT_shader_long_vector
+--
+-- [__Name String__]
+--     @VK_EXT_shader_long_vector@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     636
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.2 Vulkan Version 1.2>
+--
+-- [__API Interactions__]
+--
+--     -   Interacts with VK_KHR_workgroup_memory_explicit_layout
+--
+-- [__SPIR-V Dependencies__]
+--
+--     -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/EXT/SPV_EXT_long_vector.html SPV_EXT_long_vector>
+--
+-- [__Contact__]
+--
+--     -   Jeff Bolz
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_shader_long_vector] @jeffbolznv%0A*Here describe the issue or question you have about the VK_EXT_shader_long_vector extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_EXT_shader_long_vector.adoc VK_EXT_shader_long_vector>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2025-06-24
+--
+-- [__Interactions and External Dependencies__]
+--
+--     -   This extension requires
+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/EXT/SPV_EXT_long_vector.html SPV_EXT_long_vector>
+--
+--     -   This extension provides API support for
+--         <https://github.com/KhronosGroup/GLSL/blob/main/extensions/ext/GLSL_EXT_long_vector.txt GL_EXT_long_vector>
+--
+-- [__Contributors__]
+--
+--     -   Jeff Bolz, NVIDIA
+--
+--     -   Spencer Fricke, LunarG
+--
+-- == Description
+--
+-- This extension adds support for using vector types with more than four
+-- components in SPIR-V.
+--
+-- Long vector types are defined by the
+-- <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/EXT/SPV_EXT_long_vector.html SPV_EXT_long_vector>
+-- SPIR-V extension and can be used with the
+-- <https://github.com/KhronosGroup/GLSL/blob/main/extensions/ext/GLSL_EXT_long_vector.txt GL_EXT_long_vector>
+-- GLSL extension.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceShaderLongVectorFeaturesEXT'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDeviceShaderLongVectorPropertiesEXT'
+--
+-- == New Enum Constants
+--
+-- -   'EXT_SHADER_LONG_VECTOR_EXTENSION_NAME'
+--
+-- -   'EXT_SHADER_LONG_VECTOR_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_LONG_VECTOR_FEATURES_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_LONG_VECTOR_PROPERTIES_EXT'
+--
+-- == New SPIR-V Capabilities
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-LongVectorEXT LongVectorEXT>
+--
+-- == Version History
+--
+-- -   Revision 1, 2025-06-24 (Jeff Bolz)
+--
+--     -   Initial revisions
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_shader_long_vector 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_long_vector  ( PhysicalDeviceShaderLongVectorFeaturesEXT(..)
+                                                    , PhysicalDeviceShaderLongVectorPropertiesEXT(..)
+                                                    , EXT_SHADER_LONG_VECTOR_SPEC_VERSION
+                                                    , pattern EXT_SHADER_LONG_VECTOR_SPEC_VERSION
+                                                    , EXT_SHADER_LONG_VECTOR_EXTENSION_NAME
+                                                    , pattern EXT_SHADER_LONG_VECTOR_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_PHYSICAL_DEVICE_SHADER_LONG_VECTOR_FEATURES_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_LONG_VECTOR_PROPERTIES_EXT))
+-- | VkPhysicalDeviceShaderLongVectorFeaturesEXT - Structure describing long
+-- vector features that can be supported by an implementation
+--
+-- = Members
+--
+-- This structure describes the following features:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceShaderLongVectorFeaturesEXT' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceShaderLongVectorFeaturesEXT', it /must/ add an instance
+-- of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_shader_long_vector VK_EXT_shader_long_vector>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceShaderLongVectorFeaturesEXT = PhysicalDeviceShaderLongVectorFeaturesEXT
+  { -- | #features-longVector# @longVector@ indicates that the implementation
+    -- supports the @LongVectorEXT@ SPIR-V capability.
+    longVector :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceShaderLongVectorFeaturesEXT)
+#endif
+deriving instance Show PhysicalDeviceShaderLongVectorFeaturesEXT
+
+instance ToCStruct PhysicalDeviceShaderLongVectorFeaturesEXT where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceShaderLongVectorFeaturesEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_LONG_VECTOR_FEATURES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (longVector))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_LONG_VECTOR_FEATURES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceShaderLongVectorFeaturesEXT where
+  peekCStruct p = do
+    longVector <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDeviceShaderLongVectorFeaturesEXT
+             (bool32ToBool longVector)
+
+instance Storable PhysicalDeviceShaderLongVectorFeaturesEXT where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceShaderLongVectorFeaturesEXT where
+  zero = PhysicalDeviceShaderLongVectorFeaturesEXT
+           zero
+
+
+-- | VkPhysicalDeviceShaderLongVectorPropertiesEXT - Structure describing
+-- long vector properties supported by an implementation
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceShaderLongVectorPropertiesEXT' 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.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_shader_long_vector VK_EXT_shader_long_vector>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceShaderLongVectorPropertiesEXT = PhysicalDeviceShaderLongVectorPropertiesEXT
+  { -- | #limits-maxVectorComponents# @maxVectorComponents@ indicates the maximum
+    -- number of components that /can/ be in a vector type.
+    maxVectorComponents :: Word32 }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceShaderLongVectorPropertiesEXT)
+#endif
+deriving instance Show PhysicalDeviceShaderLongVectorPropertiesEXT
+
+instance ToCStruct PhysicalDeviceShaderLongVectorPropertiesEXT where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceShaderLongVectorPropertiesEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_LONG_VECTOR_PROPERTIES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (maxVectorComponents)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_LONG_VECTOR_PROPERTIES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct PhysicalDeviceShaderLongVectorPropertiesEXT where
+  peekCStruct p = do
+    maxVectorComponents <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    pure $ PhysicalDeviceShaderLongVectorPropertiesEXT
+             maxVectorComponents
+
+instance Storable PhysicalDeviceShaderLongVectorPropertiesEXT where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceShaderLongVectorPropertiesEXT where
+  zero = PhysicalDeviceShaderLongVectorPropertiesEXT
+           zero
+
+
+type EXT_SHADER_LONG_VECTOR_SPEC_VERSION = 1
+
+-- No documentation found for TopLevel "VK_EXT_SHADER_LONG_VECTOR_SPEC_VERSION"
+pattern EXT_SHADER_LONG_VECTOR_SPEC_VERSION :: forall a . Integral a => a
+pattern EXT_SHADER_LONG_VECTOR_SPEC_VERSION = 1
+
+
+type EXT_SHADER_LONG_VECTOR_EXTENSION_NAME = "VK_EXT_shader_long_vector"
+
+-- No documentation found for TopLevel "VK_EXT_SHADER_LONG_VECTOR_EXTENSION_NAME"
+pattern EXT_SHADER_LONG_VECTOR_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern EXT_SHADER_LONG_VECTOR_EXTENSION_NAME = "VK_EXT_shader_long_vector"
+
diff --git a/src/Vulkan/Extensions/VK_EXT_shader_long_vector.hs-boot b/src/Vulkan/Extensions/VK_EXT_shader_long_vector.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_EXT_shader_long_vector.hs-boot
@@ -0,0 +1,140 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_EXT_shader_long_vector - device extension
+--
+-- = VK_EXT_shader_long_vector
+--
+-- [__Name String__]
+--     @VK_EXT_shader_long_vector@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     636
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.2 Vulkan Version 1.2>
+--
+-- [__API Interactions__]
+--
+--     -   Interacts with VK_KHR_workgroup_memory_explicit_layout
+--
+-- [__SPIR-V Dependencies__]
+--
+--     -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/EXT/SPV_EXT_long_vector.html SPV_EXT_long_vector>
+--
+-- [__Contact__]
+--
+--     -   Jeff Bolz
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_shader_long_vector] @jeffbolznv%0A*Here describe the issue or question you have about the VK_EXT_shader_long_vector extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_EXT_shader_long_vector.adoc VK_EXT_shader_long_vector>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2025-06-24
+--
+-- [__Interactions and External Dependencies__]
+--
+--     -   This extension requires
+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/EXT/SPV_EXT_long_vector.html SPV_EXT_long_vector>
+--
+--     -   This extension provides API support for
+--         <https://github.com/KhronosGroup/GLSL/blob/main/extensions/ext/GLSL_EXT_long_vector.txt GL_EXT_long_vector>
+--
+-- [__Contributors__]
+--
+--     -   Jeff Bolz, NVIDIA
+--
+--     -   Spencer Fricke, LunarG
+--
+-- == Description
+--
+-- This extension adds support for using vector types with more than four
+-- components in SPIR-V.
+--
+-- Long vector types are defined by the
+-- <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/EXT/SPV_EXT_long_vector.html SPV_EXT_long_vector>
+-- SPIR-V extension and can be used with the
+-- <https://github.com/KhronosGroup/GLSL/blob/main/extensions/ext/GLSL_EXT_long_vector.txt GL_EXT_long_vector>
+-- GLSL extension.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceShaderLongVectorFeaturesEXT'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDeviceShaderLongVectorPropertiesEXT'
+--
+-- == New Enum Constants
+--
+-- -   'EXT_SHADER_LONG_VECTOR_EXTENSION_NAME'
+--
+-- -   'EXT_SHADER_LONG_VECTOR_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_LONG_VECTOR_FEATURES_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_LONG_VECTOR_PROPERTIES_EXT'
+--
+-- == New SPIR-V Capabilities
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-LongVectorEXT LongVectorEXT>
+--
+-- == Version History
+--
+-- -   Revision 1, 2025-06-24 (Jeff Bolz)
+--
+--     -   Initial revisions
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_shader_long_vector 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_long_vector  ( PhysicalDeviceShaderLongVectorFeaturesEXT
+                                                    , PhysicalDeviceShaderLongVectorPropertiesEXT
+                                                    ) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data PhysicalDeviceShaderLongVectorFeaturesEXT
+
+instance ToCStruct PhysicalDeviceShaderLongVectorFeaturesEXT
+instance Show PhysicalDeviceShaderLongVectorFeaturesEXT
+
+instance FromCStruct PhysicalDeviceShaderLongVectorFeaturesEXT
+
+
+data PhysicalDeviceShaderLongVectorPropertiesEXT
+
+instance ToCStruct PhysicalDeviceShaderLongVectorPropertiesEXT
+instance Show PhysicalDeviceShaderLongVectorPropertiesEXT
+
+instance FromCStruct PhysicalDeviceShaderLongVectorPropertiesEXT
+
diff --git a/src/Vulkan/Extensions/VK_EXT_shader_module_identifier.hs b/src/Vulkan/Extensions/VK_EXT_shader_module_identifier.hs
--- a/src/Vulkan/Extensions/VK_EXT_shader_module_identifier.hs
+++ b/src/Vulkan/Extensions/VK_EXT_shader_module_identifier.hs
@@ -113,7 +113,8 @@
 --
 --     -   'PhysicalDeviceShaderModuleIdentifierPropertiesEXT'
 --
--- -   Extending 'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo':
+-- -   Extending
+--     'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo':
 --
 --     -   'PipelineShaderStageModuleIdentifierCreateInfoEXT'
 --
@@ -148,7 +149,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_shader_module_identifier Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_shader_module_identifier Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -251,13 +252,13 @@
 -- if the difference does not affect pipeline compilation. Identifiers are
 -- only meaningful on different 'Vulkan.Core10.Handles.Device' objects if
 -- the device the identifier was queried from had the same
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-shaderModuleIdentifierAlgorithmUUID shaderModuleIdentifierAlgorithmUUID>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-shaderModuleIdentifierAlgorithmUUID shaderModuleIdentifierAlgorithmUUID>
 -- as the device consuming the identifier.
 --
 -- == Valid Usage
 --
 -- -   #VUID-vkGetShaderModuleIdentifierEXT-shaderModuleIdentifier-06884#
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-shaderModuleIdentifier shaderModuleIdentifier>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-shaderModuleIdentifier shaderModuleIdentifier>
 --     feature /must/ be enabled
 --
 -- == Valid Usage (Implicit)
@@ -323,7 +324,7 @@
 -- difference does not affect pipeline compilation. Identifiers are only
 -- meaningful on different 'Vulkan.Core10.Handles.Device' objects if the
 -- device the identifier was queried from had the same
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-shaderModuleIdentifierAlgorithmUUID shaderModuleIdentifierAlgorithmUUID>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-shaderModuleIdentifierAlgorithmUUID shaderModuleIdentifierAlgorithmUUID>
 -- as the device consuming the identifier.
 --
 -- The identifier returned by the implementation in
@@ -335,7 +336,7 @@
 -- == Valid Usage
 --
 -- -   #VUID-vkGetShaderModuleCreateInfoIdentifierEXT-shaderModuleIdentifier-06885#
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-shaderModuleIdentifier shaderModuleIdentifier>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-shaderModuleIdentifier shaderModuleIdentifier>
 --     feature /must/ be enabled
 --
 -- == Valid Usage (Implicit)
@@ -400,12 +401,22 @@
 -- 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. 'PhysicalDeviceShaderModuleIdentifierFeaturesEXT' /can/ also
--- be used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo'
--- to selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceShaderModuleIdentifierFeaturesEXT', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_shader_module_identifier VK_EXT_shader_module_identifier>,
@@ -487,8 +498,12 @@
 -- it is filled in with each corresponding implementation-dependent
 -- property.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_shader_module_identifier VK_EXT_shader_module_identifier>,
@@ -559,12 +574,12 @@
 -- -   #VUID-VkPipelineShaderStageModuleIdentifierCreateInfoEXT-pNext-06850#
 --     If this structure is included in a @pNext@ chain and
 --     @identifierSize@ is not equal to 0, the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-shaderModuleIdentifier shaderModuleIdentifier>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-shaderModuleIdentifier shaderModuleIdentifier>
 --     feature /must/ be enabled
 --
 -- -   #VUID-VkPipelineShaderStageModuleIdentifierCreateInfoEXT-pNext-06851#
---     If this struct is included in a @pNext@ chain of
---     'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo' and
+--     If this structure is included in a @pNext@ chain of
+--     'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo' and
 --     @identifierSize@ is not equal to 0, the pipeline /must/ be created
 --     with the
 --     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT'
@@ -583,6 +598,12 @@
 -- -   #VUID-VkPipelineShaderStageModuleIdentifierCreateInfoEXT-pIdentifier-parameter#
 --     If @identifierSize@ is not @0@, @pIdentifier@ /must/ be a valid
 --     pointer to an array of @identifierSize@ @uint8_t@ values
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo'
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Extensions/VK_EXT_shader_module_identifier.hs-boot b/src/Vulkan/Extensions/VK_EXT_shader_module_identifier.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_shader_module_identifier.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_shader_module_identifier.hs-boot
@@ -113,7 +113,8 @@
 --
 --     -   'PhysicalDeviceShaderModuleIdentifierPropertiesEXT'
 --
--- -   Extending 'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo':
+-- -   Extending
+--     'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo':
 --
 --     -   'PipelineShaderStageModuleIdentifierCreateInfoEXT'
 --
@@ -148,7 +149,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_shader_module_identifier Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_shader_module_identifier Vulkan Specification>.
 --
 -- This 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_object.hs b/src/Vulkan/Extensions/VK_EXT_shader_object.hs
--- a/src/Vulkan/Extensions/VK_EXT_shader_object.hs
+++ b/src/Vulkan/Extensions/VK_EXT_shader_object.hs
@@ -144,7 +144,7 @@
 --
 --     -   Timur Kristóf, Valve
 --
---     -   Constantine Shablya, Collabora
+--     -   Caterina Shablia, Collabora
 --
 --     -   Daniel Koch, NVIDIA
 --
@@ -369,7 +369,8 @@
 --
 --     -   'PhysicalDeviceShaderObjectPropertiesEXT'
 --
--- -   Extending 'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo',
+-- -   Extending
+--     'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo',
 --     'ShaderCreateInfoEXT':
 --
 --     -   'ShaderRequiredSubgroupSizeCreateInfoEXT'
@@ -760,7 +761,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_shader_object Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_shader_object Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -776,6 +777,10 @@
                                                , ShaderCreateInfoEXT(..)
                                                , ShaderCreateFlagsEXT
                                                , ShaderCreateFlagBitsEXT( SHADER_CREATE_LINK_STAGE_BIT_EXT
+                                                                        , SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR
+                                                                        , SHADER_CREATE_64_BIT_INDEXING_BIT_EXT
+                                                                        , SHADER_CREATE_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_EXT
+                                                                        , SHADER_CREATE_INSTRUMENT_SHADER_BIT_ARM
                                                                         , SHADER_CREATE_INDIRECT_BINDABLE_BIT_EXT
                                                                         , SHADER_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT
                                                                         , SHADER_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_EXT
@@ -783,6 +788,7 @@
                                                                         , SHADER_CREATE_NO_TASK_SHADER_BIT_EXT
                                                                         , SHADER_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT
                                                                         , SHADER_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT
+                                                                        , SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT
                                                                         , ..
                                                                         )
                                                , ShaderCodeTypeEXT( SHADER_CODE_TYPE_BINARY_EXT
@@ -841,7 +847,6 @@
                                                , CoverageModulationModeNV(..)
                                                , CoverageReductionModeNV(..)
                                                , ConservativeRasterizationModeEXT(..)
-                                               , LineRasterizationModeKHR(..)
                                                , ProvokingVertexModeEXT(..)
                                                , DepthClampModeEXT(..)
                                                , LineRasterizationModeEXT
@@ -945,6 +950,7 @@
 import Vulkan.Core10.Handles (CommandBuffer(..))
 import Vulkan.Core10.Handles (CommandBuffer(CommandBuffer))
 import Vulkan.Core10.Handles (CommandBuffer_T)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_custom_resolve (CustomResolveCreateInfoEXT)
 import Vulkan.Core10.Handles (DescriptorSetLayout)
 import Vulkan.Core10.Handles (Device)
 import Vulkan.Core10.Handles (Device(..))
@@ -967,13 +973,14 @@
 import Vulkan.Core10.PipelineLayout (PushConstantRange)
 import Vulkan.Core10.Enums.Result (Result)
 import Vulkan.Core10.Enums.Result (Result(..))
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_heap (ShaderDescriptorSetAndBindingMappingInfoEXT)
 import Vulkan.Extensions.Handles (ShaderEXT)
 import Vulkan.Extensions.Handles (ShaderEXT(..))
 import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlagBits)
 import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlagBits(..))
 import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)
 import Vulkan.CStruct.Extends (SomeStruct)
-import Vulkan.Core10.Pipeline (SpecializationInfo)
+import Vulkan.Core10.ComputePipeline (SpecializationInfo)
 import Vulkan.Core10.Enums.StructureType (StructureType)
 import Vulkan.Core10.APIConstants (UUID_SIZE)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_validation_features (ValidationFeaturesEXT)
@@ -1043,7 +1050,6 @@
 import Vulkan.Extensions.VK_EXT_depth_clamp_control (DepthClampModeEXT(..))
 import Vulkan.Extensions.VK_EXT_depth_clamp_control (DepthClampRangeEXT(..))
 import Vulkan.Extensions.VK_EXT_line_rasterization (LineRasterizationModeEXT)
-import Vulkan.Extensions.VK_KHR_line_rasterization (LineRasterizationModeKHR(..))
 import Vulkan.Extensions.VK_EXT_provoking_vertex (ProvokingVertexModeEXT(..))
 import Vulkan.Extensions.Handles (ShaderEXT(..))
 import Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state (VertexInputAttributeDescription2EXT(..))
@@ -1095,7 +1101,7 @@
 --     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' capability
 --
 -- -   #VUID-vkCreateShadersEXT-None-08400# The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-shaderObject shaderObject>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-shaderObject shaderObject>
 --     feature /must/ be enabled
 --
 -- -   #VUID-vkCreateShadersEXT-pCreateInfos-08402# If the @flags@ member
@@ -1125,9 +1131,13 @@
 --     or
 --     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
 --     includes 'SHADER_CREATE_LINK_STAGE_BIT_EXT', there /must/ be no
---     member of @pCreateInfos@ whose @stage@ is
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     and whose @flags@ member includes 'SHADER_CREATE_LINK_STAGE_BIT_EXT'
+--     member of @pCreateInfos@ whose @flags@ member includes
+--     'SHADER_CREATE_LINK_STAGE_BIT_EXT' and whose @stage@ is any of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
 --
 -- -   #VUID-vkCreateShadersEXT-pCreateInfos-08405# If there is any element
 --     of @pCreateInfos@ whose @stage@ is
@@ -1157,47 +1167,45 @@
 --     of all elements of @pCreateInfos@ whose @flags@ member includes
 --     'SHADER_CREATE_LINK_STAGE_BIT_EXT' /must/ be the same
 --
--- -   #VUID-vkCreateShadersEXT-pCreateInfos-08867# If @pCreateInfos@
+-- -   #VUID-vkCreateShadersEXT-pCreateInfos-12224# If @pCreateInfos@
 --     contains elements with both
 --     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
 --     and
 --     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT',
 --     both elements\' @flags@ include 'SHADER_CREATE_LINK_STAGE_BIT_EXT',
---     both elements\' @codeType@ is 'SHADER_CODE_TYPE_SPIRV_EXT', and the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
---     stage’s @pCode@ contains an @OpExecutionMode@ instruction specifying
---     the type of subdivision, it /must/ match the subdivision type
---     specified in the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     stage
+--     both elements\' @codeType@ is 'SHADER_CODE_TYPE_SPIRV_EXT', at least
+--     one /must/ contain an @OpExecutionMode@ instruction specifying the
+--     orientation of triangles generated by the tessellator
 --
--- -   #VUID-vkCreateShadersEXT-pCreateInfos-08868# If @pCreateInfos@
+-- -   #VUID-vkCreateShadersEXT-pCreateInfos-12225# If @pCreateInfos@
 --     contains elements with both
 --     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
 --     and
 --     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT',
 --     both elements\' @flags@ include 'SHADER_CREATE_LINK_STAGE_BIT_EXT',
---     both elements\' @codeType@ is 'SHADER_CODE_TYPE_SPIRV_EXT', and the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
---     stage’s @pCode@ contains an @OpExecutionMode@ instruction specifying
---     the orientation of triangles, it /must/ match the triangle
---     orientation specified in the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     stage
+--     both elements\' @codeType@ is 'SHADER_CODE_TYPE_SPIRV_EXT', at least
+--     one /must/ contain an @OpExecutionMode@ instruction specifying the
+--     spacing of segments on the edges of tessellated primitives
 --
--- -   #VUID-vkCreateShadersEXT-pCreateInfos-08869# If @pCreateInfos@
+-- -   #VUID-vkCreateShadersEXT-pCreateInfos-08867# If @pCreateInfos@
 --     contains elements with both
 --     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
 --     and
 --     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT',
 --     both elements\' @flags@ include 'SHADER_CREATE_LINK_STAGE_BIT_EXT',
---     both elements\' @codeType@ is 'SHADER_CODE_TYPE_SPIRV_EXT', and the
+--     both elements\' @codeType@ is 'SHADER_CODE_TYPE_SPIRV_EXT', and both
+--     stages contains an @OpExecutionMode@ instruction specifying the type
+--     of subdivision, they /must/ be the same
+--
+-- -   #VUID-vkCreateShadersEXT-pCreateInfos-08868# If @pCreateInfos@
+--     contains elements with both
 --     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
---     stage’s @pCode@ contains an @OpExecutionMode@ instruction specifying
---     @PointMode@, the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     stage /must/ also contain an @OpExecutionMode@ instruction
---     specifying @PointMode@
+--     and
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT',
+--     both elements\' @flags@ include 'SHADER_CREATE_LINK_STAGE_BIT_EXT',
+--     both elements\' @codeType@ is 'SHADER_CODE_TYPE_SPIRV_EXT', and both
+--     stages contains an @OpExecutionMode@ instruction specifying the
+--     orientation of triangles, they /must/ be the same
 --
 -- -   #VUID-vkCreateShadersEXT-pCreateInfos-08870# If @pCreateInfos@
 --     contains elements with both
@@ -1205,13 +1213,10 @@
 --     and
 --     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT',
 --     both elements\' @flags@ include 'SHADER_CREATE_LINK_STAGE_BIT_EXT',
---     both elements\' @codeType@ is 'SHADER_CODE_TYPE_SPIRV_EXT', and the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
---     stage’s @pCode@ contains an @OpExecutionMode@ instruction specifying
---     the spacing of segments on the edges of tessellated primitives, it
---     /must/ match the segment spacing specified in the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     stage
+--     both elements\' @codeType@ is 'SHADER_CODE_TYPE_SPIRV_EXT', and both
+--     stages contains an @OpExecutionMode@ instruction specifying the
+--     spacing of segments on the edges of tessellated primitives, they
+--     /must/ be the same
 --
 -- -   #VUID-vkCreateShadersEXT-pCreateInfos-08871# If @pCreateInfos@
 --     contains elements with both
@@ -1219,13 +1224,9 @@
 --     and
 --     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT',
 --     both elements\' @flags@ include 'SHADER_CREATE_LINK_STAGE_BIT_EXT',
---     both elements\' @codeType@ is 'SHADER_CODE_TYPE_SPIRV_EXT', and the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
---     stage’s @pCode@ contains an @OpExecutionMode@ instruction specifying
---     the output patch size, it /must/ match the output patch size
---     specified in the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     stage
+--     both elements\' @codeType@ is 'SHADER_CODE_TYPE_SPIRV_EXT', and both
+--     stages contains an @OpExecutionMode@ instruction specifying the
+--     output patch size, they /must/ be the same
 --
 -- -   #VUID-vkCreateShadersEXT-pCreateInfos-09632# If @pCreateInfos@
 --     contains a
@@ -1235,6 +1236,39 @@
 --     shader’s entry point /must/ not declare a variable with a
 --     @DrawIndex@ @BuiltIn@ decoration
 --
+-- -   #VUID-vkCreateShadersEXT-pCreateInfos-11413# If any element of
+--     @pCreateInfos@ sets 'SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT' and
+--     includes embedded sampler mappings, there /must/ be less than
+--     (<https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxSamplerAllocationCount maxSamplerAllocationCount>
+--     -
+--     (<https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-minSamplerHeapReservedRangeWithEmbedded minSamplerHeapReservedRangeWithEmbedded>
+--     \/
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-samplerDescriptorSize samplerDescriptorSize>))
+--     'Vulkan.Core10.Handles.Sampler' objects currently created on the
+--     device
+--
+-- -   #VUID-vkCreateShadersEXT-pCreateInfos-11428# If any element of
+--     @pCreateInfos@ sets 'SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT' and
+--     includes embedded sampler mappings, this command /must/ not cause
+--     the total number of unique embedded samplers in pipelines and
+--     shaders on this device to exceed
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxDescriptorHeapEmbeddedSamplers maxDescriptorHeapEmbeddedSamplers>
+--
+-- -   #VUID-vkCreateShadersEXT-flags-11472# If the @flags@ member of any
+--     element of @pCreateInfos@ includes
+--     'SHADER_CREATE_LINK_STAGE_BIT_EXT' and
+--     'SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT', the @flags@ member of all
+--     other elements of @pCreateInfos@ whose @stage@ is
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT',
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     /must/ also include 'SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT'
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-vkCreateShadersEXT-device-parameter# @device@ /must/ be a
@@ -1259,18 +1293,22 @@
 --
 -- [<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.INCOMPATIBLE_SHADER_BINARY_EXT'
 --
+--     -   '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_INITIALIZATION_FAILED'
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_INITIALIZATION_FAILED'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_shader_object VK_EXT_shader_object>,
@@ -1285,7 +1323,7 @@
                     -- structures.
                     ("createInfos" ::: Vector (SomeStruct ShaderCreateInfoEXT))
                  -> -- | @pAllocator@ controls host memory allocation as described in the
-                    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
                     -- chapter.
                     ("allocator" ::: Maybe AllocationCallbacks)
                  -> io (Result, ("shaders" ::: Vector ShaderEXT))
@@ -1338,13 +1376,13 @@
 -- = Description
 --
 -- Destroying a shader object used by one or more command buffers in the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle recording or executable state>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#commandbuffers-lifecycle recording or executable state>
 -- causes those command buffers to move into the /invalid state/.
 --
 -- == Valid Usage
 --
 -- -   #VUID-vkDestroyShaderEXT-None-08481# The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-shaderObject shaderObject>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-shaderObject shaderObject>
 --     feature /must/ be enabled
 --
 -- -   #VUID-vkDestroyShaderEXT-shader-08482# All submitted commands that
@@ -1392,7 +1430,7 @@
                  -> -- | @shader@ is the handle of the shader object to destroy.
                     ShaderEXT
                  -> -- | @pAllocator@ controls host memory allocation as described in the
-                    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
                     -- chapter.
                     ("allocator" ::: Maybe AllocationCallbacks)
                  -> io ()
@@ -1440,6 +1478,15 @@
 -- written to @pData@ unless @pDataSize@ is large enough to fit the data in
 -- its entirety.
 --
+-- This behavior is not consistent with the behavior described in
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#fundamentals-binaryresults Opaque Binary Data Results>,
+-- for historical reasons.
+--
+-- If the amount of data available is larger than the passed @pDataSize@,
+-- the query returns a 'Vulkan.Core10.Enums.Result.INCOMPLETE' success
+-- status instead of a
+-- 'Vulkan.Core10.Enums.Result.ERROR_NOT_ENOUGH_SPACE_KHR' error status.
+--
 -- Binary shader code retrieved using 'getShaderBinaryDataEXT' /can/ be
 -- passed to a subsequent call to 'createShadersEXT' on a compatible
 -- physical device by specifying 'SHADER_CODE_TYPE_BINARY_EXT' in the
@@ -1452,7 +1499,7 @@
 -- == Valid Usage
 --
 -- -   #VUID-vkGetShaderBinaryDataEXT-None-08461# The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-shaderObject shaderObject>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-shaderObject shaderObject>
 --     feature /must/ be enabled
 --
 -- -   #VUID-vkGetShaderBinaryDataEXT-None-08499# If @pData@ is not @NULL@,
@@ -1480,16 +1527,20 @@
 --
 -- [<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'
 --
+--     -   '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_DEVICE_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_shader_object VK_EXT_shader_object>,
@@ -1554,7 +1605,7 @@
 -- == Valid Usage
 --
 -- -   #VUID-vkCmdBindShadersEXT-None-08462# The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-shaderObject shaderObject>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-shaderObject shaderObject>
 --     feature /must/ be enabled
 --
 -- -   #VUID-vkCmdBindShadersEXT-pStages-08463# Every element of @pStages@
@@ -1612,36 +1663,6 @@
 --     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' in
 --     @pStages@ /must/ be 'Vulkan.Core10.APIConstants.NULL_HANDLE'
 --
--- -   #VUID-vkCmdBindShadersEXT-pShaders-08474# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-tessellationShader tessellationShader>
---     feature is not enabled, and @pStages@ contains
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT',
---     and @pShaders@ is not @NULL@, the same index or indices in
---     @pShaders@ /must/ be 'Vulkan.Core10.APIConstants.NULL_HANDLE'
---
--- -   #VUID-vkCmdBindShadersEXT-pShaders-08475# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-geometryShader geometryShader>
---     feature is not enabled, and @pStages@ contains
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT',
---     and @pShaders@ is not @NULL@, the same index in @pShaders@ /must/ be
---     'Vulkan.Core10.APIConstants.NULL_HANDLE'
---
--- -   #VUID-vkCmdBindShadersEXT-pShaders-08490# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-taskShader taskShader>
---     feature is not enabled, and @pStages@ contains
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT',
---     and @pShaders@ is not @NULL@, the same index in @pShaders@ /must/ be
---     'Vulkan.Core10.APIConstants.NULL_HANDLE'
---
--- -   #VUID-vkCmdBindShadersEXT-pShaders-08491# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-meshShader meshShader>
---     feature is not enabled, and @pStages@ contains
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT',
---     and @pShaders@ is not @NULL@, the same index in @pShaders@ /must/ be
---     'Vulkan.Core10.APIConstants.NULL_HANDLE'
---
 -- -   #VUID-vkCmdBindShadersEXT-pShaders-08476# If @pStages@ contains
 --     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT',
 --     the 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
@@ -1684,7 +1705,9 @@
 --
 -- -   #VUID-vkCmdBindShadersEXT-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics, or compute operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', or
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdBindShadersEXT-videocoding# This command /must/ only be
 --     called outside of a video coding scope
@@ -1711,10 +1734,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | Compute                                                                                                               |                                                                                                                                        |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | State                                                                                                                                  |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | VK_QUEUE_GRAPHICS_BIT                                                                                                 |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdBindShadersEXT is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_shader_object VK_EXT_shader_object>,
@@ -1785,12 +1813,22 @@
 -- 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. 'PhysicalDeviceShaderObjectFeaturesEXT' /can/ also be used in
--- the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceShaderObjectFeaturesEXT', it /must/ add an instance of
+-- the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_shader_object VK_EXT_shader_object>,
@@ -1799,7 +1837,7 @@
 data PhysicalDeviceShaderObjectFeaturesEXT = PhysicalDeviceShaderObjectFeaturesEXT
   { -- | #features-shaderObject# @shaderObject@ indicates whether the
     -- implementation supports
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-objects shader objects>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader objects>.
     shaderObject :: Bool }
   deriving (Typeable, Eq)
 #if defined(GENERIC_INSTANCES)
@@ -1846,7 +1884,7 @@
 --
 -- The purpose and usage of the values of this structure are described in
 -- greater detail in
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-objects-binary-compatibility Binary Shader Compatibility>.
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects-binary-compatibility Binary Shader Compatibility>.
 --
 -- If the 'PhysicalDeviceShaderObjectPropertiesEXT' structure is included
 -- in the @pNext@ chain of the
@@ -1856,8 +1894,12 @@
 -- it is filled in with each corresponding implementation-dependent
 -- property.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_shader_object VK_EXT_shader_object>,
@@ -1918,6 +1960,39 @@
 -- | VkShaderCreateInfoEXT - Structure specifying parameters of a newly
 -- created shader
 --
+-- = Description
+--
+-- When determining
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-compatibility pipeline layout compatibility>,
+-- compatibility is determined as if a the shader was created with a
+-- pipeline layout object that was created with identical values of
+-- @setLayoutCount@, @pSetLayouts@, @pushConstantRangeCount@, and
+-- @pPushConstantRanges@, and with
+-- 'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo'::@flags@ set to
+-- 0. If @flags@ includes 'SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT', the
+-- shader is not considered created with a pipeline layout.
+--
+-- When specifying descriptor heap mappings, only mappings corresponding to
+-- bindings that are actually present in the SPIR-V shader affect
+-- compilation. Mappings are ignored when @codeType@ is
+-- 'SHADER_CODE_TYPE_BINARY_EXT'. The resulting compiled binary from two
+-- different SPIR-V shaders which would have identical bit patterns /must/
+-- remain identical even if the mapping entries vary in any of the
+-- following ways:
+--
+-- -   Different numbers of unused mapping structures
+--
+-- -   Different binding counts for unused bindings
+--
+-- -   Unused parameters in mapping structures (e.g. sampler offsets)
+--
+-- -   Ignored parameters in mapping structures
+--
+-- -   Different order of mapping structures, used or unused
+--
+-- Calculating the same offset in a mapping via different parameter values
+-- is not guaranteed to provide identical results.
+--
 -- == Valid Usage
 --
 -- -   #VUID-VkShaderCreateInfoEXT-codeSize-08735# If @codeType@ is
@@ -1968,6 +2043,89 @@
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-extensions-table SPIR-V Environment>
 --     appendix, one of the corresponding requirements /must/ be satisfied
 --
+-- -   #VUID-VkShaderCreateInfoEXT-descriptorHeap-11314# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-descriptorHeap descriptorHeap>
+--     feature is not enabled,
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.ShaderDescriptorSetAndBindingMappingInfoEXT'::@mappingCount@
+--     /must/ be 0
+--
+-- -   #VUID-VkShaderCreateInfoEXT-pNext-11315# If the @pNext@ chain
+--     specifies a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_DATA_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_DATA_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_RESOURCE_HEAP_DATA_EXT',
+--     the mapped resource in the shader /must/ be a variable with a
+--     structure type decorated with @Block@ in the @Uniform@ @Storage@
+--     @Class@
+--
+-- -   #VUID-VkShaderCreateInfoEXT-pNext-11316# If the @pNext@ chain
+--     specifies a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_DATA_EXT',
+--     the mapped structure /must/ not be larger than the sum of
+--     @pushDataOffset@ used in the mapping and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxPushDataSize maxPushDataSize>
+--
+-- -   #VUID-VkShaderCreateInfoEXT-pNext-11317# If the @pNext@ chain
+--     specifies a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_DATA_EXT',
+--     the sum of mapped structure size and @shaderRecordDataOffset@ used
+--     in the mapping /must/ not be larger than
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxShaderGroupStride maxShaderGroupStride>
+--
+-- -   #VUID-VkShaderCreateInfoEXT-pNext-11318# If the @pNext@ chain
+--     specifies a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     the mapped resource in the shader /must/ be one of:
+--
+--     -   A variable with a structure type decorated with @Block@ in the
+--         @Uniform@ @Storage@ @Class@
+--
+--     -   A variable with a structure type decorated with @BufferBlock@ in
+--         the @Uniform@ @Storage@ @Class@
+--
+--     -   A variable with a structure type decorated with @Block@ in the
+--         @StorageBuffer@ @Storage@ @Class@
+--
+--     -   A @OpTypeAccelerationStructureKHR@ variable
+--
+--     -   A @OpTypeAccelerationStructureNV@ variable
+--
+-- -   #VUID-VkShaderCreateInfoEXT-pNext-11378# If the @pNext@ chain
+--     specifies a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     the @OpArrayLength@ or @OpUntypedArrayLengthKHR@ instruction /must/
+--     not be used on that resource
+--
+-- -   #VUID-VkShaderCreateInfoEXT-pNext-11399# If the @pNext@ chain
+--     specifies a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_CONSTANT_OFFSET_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     and the mapped resource declaration is an array, the
+--     @pEmbeddedSampler@ member of the corresponding mapping structure
+--     /must/ be @NULL@
+--
 -- -   #VUID-VkShaderCreateInfoEXT-flags-08412# If @stage@ is not
 --     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT',
 --     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT',
@@ -1985,7 +2143,7 @@
 --     'SHADER_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_EXT'
 --
 -- -   #VUID-VkShaderCreateInfoEXT-flags-08487# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate>
 --     feature is not enabled, @flags@ /must/ not include
 --     'SHADER_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_EXT'
 --
@@ -1995,23 +2153,29 @@
 --     'SHADER_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT'
 --
 -- -   #VUID-VkShaderCreateInfoEXT-flags-08489# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-fragmentDensityMap fragmentDensityMap>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-fragmentDensityMap fragmentDensityMap>
 --     feature is not enabled, @flags@ /must/ not include
 --     'SHADER_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT'
 --
+-- -   #VUID-VkShaderCreateInfoEXT-micromap-11623# If @flags@ includes
+--     'SHADER_CREATE_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_EXT',
+--     the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-micromap ::micromap>
+--     feature /must/ be enabled
+--
 -- -   #VUID-VkShaderCreateInfoEXT-flags-09404# If @flags@ includes
 --     'SHADER_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT', the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-subgroupSizeControl subgroupSizeControl>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-subgroupSizeControl subgroupSizeControl>
 --     feature /must/ be enabled
 --
 -- -   #VUID-VkShaderCreateInfoEXT-flags-09405# If @flags@ includes
 --     'SHADER_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT', the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-computeFullSubgroups computeFullSubgroups>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-computeFullSubgroups computeFullSubgroups>
 --     feature /must/ be enabled
 --
 -- -   #VUID-VkShaderCreateInfoEXT-flags-11005# If @flags@ includes
 --     'SHADER_CREATE_INDIRECT_BINDABLE_BIT_EXT', then the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-deviceGeneratedCommands ::deviceGeneratedCommands>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-deviceGeneratedCommands ::deviceGeneratedCommands>
 --     feature /must/ be enabled
 --
 -- -   #VUID-VkShaderCreateInfoEXT-flags-11006# If @flags@ includes
@@ -2038,7 +2202,7 @@
 --     'SHADER_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT' and
 --     'SHADER_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT', the local workgroup
 --     size in the X dimension of the shader /must/ be a multiple of
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxSubgroupSize maxSubgroupSize>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxSubgroupSize maxSubgroupSize>
 --
 -- -   #VUID-VkShaderCreateInfoEXT-flags-08417# If @flags@ includes
 --     'SHADER_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT' but not
@@ -2046,31 +2210,31 @@
 --     'ShaderRequiredSubgroupSizeCreateInfoEXT' structure is included in
 --     the @pNext@ chain, the local workgroup size in the X dimension of
 --     the shader /must/ be a multiple of
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-subgroupSize subgroupSize>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-subgroupSize subgroupSize>
 --
 -- -   #VUID-VkShaderCreateInfoEXT-stage-08418# @stage@ /must/ not be
 --     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_ALL_GRAPHICS'
 --     or 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_ALL'
 --
 -- -   #VUID-VkShaderCreateInfoEXT-stage-08419# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-tessellationShader tessellationShader>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-tessellationShader tessellationShader>
 --     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-VkShaderCreateInfoEXT-stage-08420# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-geometryShader geometryShader>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-geometryShader geometryShader>
 --     feature is not enabled, @stage@ /must/ not be
 --     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
 --
 -- -   #VUID-VkShaderCreateInfoEXT-stage-08421# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-taskShader taskShader>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-taskShader taskShader>
 --     feature is not enabled, @stage@ /must/ not be
 --     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
 --
 -- -   #VUID-VkShaderCreateInfoEXT-stage-08422# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-meshShader meshShader>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-meshShader meshShader>
 --     feature is not enabled, @stage@ /must/ not be
 --     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
 --
@@ -2089,14 +2253,14 @@
 --     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
 --
 -- -   #VUID-VkShaderCreateInfoEXT-nextStage-08428# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-tessellationShader tessellationShader>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-tessellationShader tessellationShader>
 --     feature is not enabled, @nextStage@ /must/ not include
 --     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
 --     or
 --     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
 --
 -- -   #VUID-VkShaderCreateInfoEXT-nextStage-08429# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-geometryShader geometryShader>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-geometryShader geometryShader>
 --     feature is not enabled, @nextStage@ /must/ not include
 --     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
 --
@@ -2174,12 +2338,6 @@
 --     that variable /must/ not have an array size greater than
 --     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxSampleMaskWords@
 --
--- -   #VUID-VkShaderCreateInfoEXT-pCode-08452# If @codeType@ is
---     'SHADER_CODE_TYPE_SPIRV_EXT', and @stage@ is
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
---     the identified entry point /must/ not include any input variable in
---     its interface that is decorated with @CullDistance@
---
 -- -   #VUID-VkShaderCreateInfoEXT-pCode-08453# If @codeType@ is
 --     'SHADER_CODE_TYPE_SPIRV_EXT', and @stage@ is
 --     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
@@ -2208,24 +2366,18 @@
 --
 -- -   #VUID-VkShaderCreateInfoEXT-pCode-08456# If @codeType@ is
 --     'SHADER_CODE_TYPE_SPIRV_EXT', and @stage@ is a
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader stage>,
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-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-VkShaderCreateInfoEXT-pCode-08457# If @codeType@ is
 --     'SHADER_CODE_TYPE_SPIRV_EXT', and @stage@ is a
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader stage>,
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader stage>,
 --     and the identified entry point writes to @ViewportIndex@ for any
 --     primitive, it /must/ write the same value to @ViewportIndex@ for all
 --     vertices of a given primitive
 --
--- -   #VUID-VkShaderCreateInfoEXT-pCode-08458# If @codeType@ is
---     'SHADER_CODE_TYPE_SPIRV_EXT', and @stage@ is
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT',
---     the identified entry point /must/ not include any output variables
---     in its interface decorated with @CullDistance@
---
 -- -   #VUID-VkShaderCreateInfoEXT-pCode-08459# If @codeType@ is
 --     'SHADER_CODE_TYPE_SPIRV_EXT', and @stage@ is
 --     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT',
@@ -2237,7 +2389,7 @@
 -- -   #VUID-VkShaderCreateInfoEXT-pCode-08460# If @codeType@ is
 --     'SHADER_CODE_TYPE_SPIRV_EXT', the shader code in @pCode@ /must/ be
 --     valid as described by the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirv-spec Khronos SPIR-V Specification>
+--     <https://registry.khronos.org/vulkan/specs/latest/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
@@ -2248,21 +2400,9 @@
 --     @pCode@ /must/ contain an @OpExecutionMode@ instruction specifying
 --     the type of subdivision
 --
--- -   #VUID-VkShaderCreateInfoEXT-codeType-08873# If @codeType@ is
---     'SHADER_CODE_TYPE_SPIRV_EXT', and @stage@ is
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT',
---     @pCode@ /must/ contain an @OpExecutionMode@ instruction specifying
---     the orientation of triangles generated by the tessellator
---
--- -   #VUID-VkShaderCreateInfoEXT-codeType-08874# If @codeType@ is
---     'SHADER_CODE_TYPE_SPIRV_EXT', and @stage@ is
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT',
---     @pCode@ /must/ contain an @OpExecutionMode@ instruction specifying
---     the spacing of segments on the edges of tessellated primitives
---
--- -   #VUID-VkShaderCreateInfoEXT-codeType-08875# If @codeType@ is
+-- -   #VUID-VkShaderCreateInfoEXT-codeType-12226# If @codeType@ is
 --     'SHADER_CODE_TYPE_SPIRV_EXT', and @stage@ is
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
 --     @pCode@ /must/ contain an @OpExecutionMode@ instruction specifying
 --     the output patch size
 --
@@ -2271,15 +2411,95 @@
 --     in @stageFlags@
 --
 -- -   #VUID-VkShaderCreateInfoEXT-codeType-10064# If @codeType@ is
---     'SHADER_CODE_TYPE_SPIRV_EXT', and if a push constant block is
---     declared in a shader, then an element of
---     @pPushConstantRanges@::@stageFlags@ /must/ match @stage@
+--     'SHADER_CODE_TYPE_SPIRV_EXT', @flags@ does not include
+--     'SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT' and if a push constant block
+--     is declared in a shader, then an element of
+--     @pPushConstantRanges->stageFlags@ /must/ match @stage@
 --
 -- -   #VUID-VkShaderCreateInfoEXT-codeType-10065# If @codeType@ is
---     'SHADER_CODE_TYPE_SPIRV_EXT', and if a push constant block is
---     declared in a shader, the block must be contained inside the element
---     of @pPushConstantRanges@ that matches the stage
+--     'SHADER_CODE_TYPE_SPIRV_EXT', @flags@ does not include
+--     'SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT' and if a push constant block
+--     is declared in a shader, the block must be contained inside the
+--     element of @pPushConstantRanges@ that matches the stage
 --
+-- -   #VUID-VkShaderCreateInfoEXT-codeType-10383# If @codeType@ is
+--     'SHADER_CODE_TYPE_SPIRV_EXT', @flags@ does not include
+--     'SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT' and a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-resources resource variable>
+--     is declared in a shader, the corresponding descriptor set in
+--     @pSetLayouts@ /must/ match the shader stage
+--
+-- -   #VUID-VkShaderCreateInfoEXT-codeType-10384# If @codeType@ is
+--     'SHADER_CODE_TYPE_SPIRV_EXT', @flags@ does not include
+--     'SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT' and a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-resources resource variable>
+--     is declared in a shader, and the descriptor type is not
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_MUTABLE_EXT',
+--     the corresponding descriptor set in @pSetLayouts@ /must/ match the
+--     descriptor type
+--
+-- -   #VUID-VkShaderCreateInfoEXT-codeType-10385# If @codeType@ is
+--     'SHADER_CODE_TYPE_SPIRV_EXT', @flags@ does not include
+--     'SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT' and a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-resources resource variable>
+--     is declared in a shader as an array, the corresponding descriptor
+--     set in @pSetLayouts@ /must/ match the descriptor count
+--
+-- -   #VUID-VkShaderCreateInfoEXT-setLayoutCount-13359# If
+--     @setLayoutCount@ is not 0, pSetLayouts is not @NULL@, and @flags@
+--     does not include 'SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR', then
+--     @pSetLayouts@ must be a valid pointer to an array of
+--     @setLayoutCount@ valid 'Vulkan.Core10.Handles.DescriptorSetLayout'
+--     handles
+--
+-- -   #VUID-VkShaderCreateInfoEXT-setLayoutCount-13360# If
+--     @setLayoutCount@ is not 0, pSetLayouts is not @NULL@, and @flags@
+--     includes 'SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR', then
+--     @pSetLayouts@ must be a valid pointer to an array of
+--     @setLayoutCount@ 'Vulkan.Core10.Handles.DescriptorSetLayout' or
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' handles
+--
+-- -   #VUID-VkShaderCreateInfoEXT-codeType-10386# If @codeType@ is
+--     'SHADER_CODE_TYPE_SPIRV_EXT', @flags@ does not include
+--     'SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT' and a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-resources resource variable>
+--     is declared in a shader as an array of descriptors, then the
+--     descriptor type of that variable /must/ not be
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK'
+--
+-- -   #VUID-VkShaderCreateInfoEXT-flags-11758# If
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-shader64BitIndexing shader64BitIndexing>
+--     feature is not enabled, @flags@ /must/ not contain
+--     'SHADER_CREATE_64_BIT_INDEXING_BIT_EXT'
+--
+-- -   #VUID-VkShaderCreateInfoEXT-setLayoutCount-12257# @setLayoutCount@
+--     /must/ be less than or equal to
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxBoundDescriptorSets@
+--
+-- -   #VUID-VkShaderCreateInfoEXT-flags-11290# If @flags@ includes
+--     'SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT', @setLayoutCount@ /must/ be
+--     0
+--
+-- -   #VUID-VkShaderCreateInfoEXT-flags-11291# If @flags@ includes
+--     'SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT', @pSetLayouts@ /must/ be
+--     @NULL@
+--
+-- -   #VUID-VkShaderCreateInfoEXT-flags-11370# If @flags@ includes
+--     'SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT', @pushConstantRangeCount@
+--     /must/ be 0
+--
+-- -   #VUID-VkShaderCreateInfoEXT-flags-11371# If @flags@ includes
+--     'SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT', @pPushConstantRanges@
+--     /must/ be @NULL@
+--
+-- -   #VUID-VkShaderCreateInfoEXT-flags-11292# If @flags@ includes
+--     'SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT', and @codeType@ is
+--     'SHADER_CODE_TYPE_SPIRV_EXT', all shader variables in the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-resources shader resource interface>
+--     with a 'Vulkan.Core10.Handles.DescriptorSet' and @Binding@
+--     decoration /must/ have a mapping declared in
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.ShaderDescriptorSetAndBindingMappingInfoEXT'::@pMappings@
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-VkShaderCreateInfoEXT-sType-sType# @sType@ /must/ be
@@ -2288,12 +2508,14 @@
 -- -   #VUID-VkShaderCreateInfoEXT-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.Core13.Promoted_From_VK_EXT_subgroup_size_control.PipelineShaderStageRequiredSubgroupSizeCreateInfo'
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT',
+--     'Vulkan.Core13.Promoted_From_VK_EXT_subgroup_size_control.PipelineShaderStageRequiredSubgroupSizeCreateInfo',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.ShaderDescriptorSetAndBindingMappingInfoEXT',
 --     or
 --     'Vulkan.Extensions.VK_EXT_validation_features.ValidationFeaturesEXT'
 --
 -- -   #VUID-VkShaderCreateInfoEXT-sType-unique# The @sType@ value of each
---     struct in the @pNext@ chain /must/ be unique
+--     structure in the @pNext@ chain /must/ be unique
 --
 -- -   #VUID-VkShaderCreateInfoEXT-flags-parameter# @flags@ /must/ be a
 --     valid combination of 'ShaderCreateFlagBitsEXT' values
@@ -2315,12 +2537,6 @@
 -- -   #VUID-VkShaderCreateInfoEXT-pName-parameter# If @pName@ is not
 --     @NULL@, @pName@ /must/ be a null-terminated UTF-8 string
 --
--- -   #VUID-VkShaderCreateInfoEXT-pSetLayouts-parameter# If
---     @setLayoutCount@ is not @0@, and @pSetLayouts@ is not @NULL@,
---     @pSetLayouts@ /must/ be a valid pointer to an array of
---     @setLayoutCount@ valid 'Vulkan.Core10.Handles.DescriptorSetLayout'
---     handles
---
 -- -   #VUID-VkShaderCreateInfoEXT-pPushConstantRanges-parameter# If
 --     @pushConstantRangeCount@ is not @0@, and @pPushConstantRanges@ is
 --     not @NULL@, @pPushConstantRanges@ /must/ be a valid pointer to an
@@ -2330,7 +2546,7 @@
 -- -   #VUID-VkShaderCreateInfoEXT-pSpecializationInfo-parameter# If
 --     @pSpecializationInfo@ is not @NULL@, @pSpecializationInfo@ /must/ be
 --     a valid pointer to a valid
---     'Vulkan.Core10.Pipeline.SpecializationInfo' structure
+--     'Vulkan.Core10.ComputePipeline.SpecializationInfo' structure
 --
 -- -   #VUID-VkShaderCreateInfoEXT-codeSize-arraylength# @codeSize@ /must/
 --     be greater than @0@
@@ -2343,7 +2559,7 @@
 -- 'ShaderCreateFlagsEXT',
 -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits',
 -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlags',
--- 'Vulkan.Core10.Pipeline.SpecializationInfo',
+-- 'Vulkan.Core10.ComputePipeline.SpecializationInfo',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType', 'createShadersEXT'
 data ShaderCreateInfoEXT (es :: [Type]) = ShaderCreateInfoEXT
   { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
@@ -2357,8 +2573,9 @@
     stage :: ShaderStageFlagBits
   , -- | @nextStage@ is a bitmask of
     -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits' specifying
-    -- zero or stages which /may/ be used as a logically next bound stage when
-    -- drawing with the shader bound.
+    -- which stages /can/ be used as a logically next bound stage when drawing
+    -- with the shader bound. A value of zero indicates this shader stage
+    -- /must/ be the last one.
     nextStage :: ShaderStageFlags
   , -- | @codeType@ is a 'ShaderCodeTypeEXT' value specifying the type of the
     -- shader code pointed to be @pCode@.
@@ -2376,7 +2593,8 @@
     setLayoutCount :: Word32
   , -- | @pSetLayouts@ is a pointer to an array of
     -- 'Vulkan.Core10.Handles.DescriptorSetLayout' objects used by the shader
-    -- stage.
+    -- stage. The implementation /must/ not access these objects outside of the
+    -- duration of the command this structure is passed to.
     setLayouts :: Vector DescriptorSetLayout
   , -- | @pushConstantRangeCount@ is the number of push constant ranges pointed
     -- to by @pPushConstantRanges@.
@@ -2386,8 +2604,9 @@
     -- shader stage.
     pushConstantRanges :: Vector PushConstantRange
   , -- | @pSpecializationInfo@ is a pointer to a
-    -- 'Vulkan.Core10.Pipeline.SpecializationInfo' structure, as described in
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-specialization-constants Specialization Constants>,
+    -- 'Vulkan.Core10.ComputePipeline.SpecializationInfo' structure, as
+    -- described in
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-specialization-constants Specialization Constants>,
     -- or @NULL@.
     specializationInfo :: Maybe SpecializationInfo
   }
@@ -2403,6 +2622,8 @@
   getNext ShaderCreateInfoEXT{..} = next
   extends :: forall e b proxy. Typeable e => proxy e -> (Extends ShaderCreateInfoEXT e => b) -> Maybe b
   extends _ f
+    | Just Refl <- eqT @e @ShaderDescriptorSetAndBindingMappingInfoEXT = Just f
+    | Just Refl <- eqT @e @CustomResolveCreateInfoEXT = Just f
     | Just Refl <- eqT @e @PipelineShaderStageRequiredSubgroupSizeCreateInfo = Just f
     | Just Refl <- eqT @e @ValidationFeaturesEXT = Just f
     | otherwise = Nothing
@@ -2531,6 +2752,64 @@
 -- | VkShaderCreateFlagBitsEXT - Bitmask controlling how a shader object is
 -- created
 --
+-- = Description
+--
+-- -   'SHADER_CREATE_LINK_STAGE_BIT_EXT' specifies that a shader is linked
+--     to all other shaders created in the same 'createShadersEXT' call
+--     whose 'ShaderCreateInfoEXT' structures\' @flags@ include
+--     'SHADER_CREATE_LINK_STAGE_BIT_EXT'.
+--
+-- -   'SHADER_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT' specifies that
+--     the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-sgs SubgroupSize>
+--     /may/ vary in a task, mesh, or compute shader.
+--
+-- -   'SHADER_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT' specifies that the
+--     subgroup sizes /must/ be launched with all invocations active in a
+--     task, mesh, or compute shader.
+--
+-- -   'SHADER_CREATE_NO_TASK_SHADER_BIT_EXT' specifies that a mesh shader
+--     /must/ only be used without a task shader. Otherwise, the mesh
+--     shader /must/ only be used with a task shader.
+--
+-- -   'SHADER_CREATE_DISPATCH_BASE_BIT_EXT' specifies that a compute
+--     shader /can/ be used with
+--     'Vulkan.Core11.Promoted_From_VK_KHR_device_group.cmdDispatchBase'
+--     with a non-zero base workgroup.
+--
+-- -   'SHADER_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_EXT' specifies
+--     that a fragment shader /can/ be used with a fragment shading rate
+--     attachment.
+--
+-- -   'SHADER_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT' specifies
+--     that a fragment shader /can/ be used with a fragment density map
+--     attachment.
+--
+-- -   'SHADER_CREATE_INDIRECT_BINDABLE_BIT_EXT' specifies that the shader
+--     /can/ be used in combination with
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#device-generated-commands>.
+--
+-- -   'SHADER_CREATE_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_EXT'
+--     specifies that shader objects /cannot/ be used with acceleration
+--     structures which are built with geometry that have an index buffer
+--     including both special indices and indices pointing to an associated
+--     micromap array. Geometry which has an index buffer using only
+--     special indices without an associated micromap array /can/ be used
+--     with this flag.
+--
+-- -   'SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR' specifies that
+--     implementations /must/ ensure that the properties and\/or absence of
+--     a particular descriptor set do not influence any other descriptor
+--     sets for the shader. This allows shader objects to be created with a
+--     subset of the total descriptor sets.
+--
+-- -   'SHADER_CREATE_64_BIT_INDEXING_BIT_EXT' specifies that the shader
+--     enables
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-64bindexing 64-bit indexing>.
+--
+-- -   'SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT' specifies that the shader
+--     will use descriptor heap mappings instead of descriptor set layouts.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_shader_object VK_EXT_shader_object>,
@@ -2538,46 +2817,45 @@
 newtype ShaderCreateFlagBitsEXT = ShaderCreateFlagBitsEXT Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'SHADER_CREATE_LINK_STAGE_BIT_EXT' specifies that a shader is linked to
--- all other shaders created in the same 'createShadersEXT' call whose
--- 'ShaderCreateInfoEXT' structures\' @flags@ include
--- 'SHADER_CREATE_LINK_STAGE_BIT_EXT'.
+-- No documentation found for Nested "VkShaderCreateFlagBitsEXT" "VK_SHADER_CREATE_LINK_STAGE_BIT_EXT"
 pattern SHADER_CREATE_LINK_STAGE_BIT_EXT = ShaderCreateFlagBitsEXT 0x00000001
 
--- | 'SHADER_CREATE_INDIRECT_BINDABLE_BIT_EXT' specifies that the shader
--- /can/ be used in combination with
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#device-generated-commands>.
+-- No documentation found for Nested "VkShaderCreateFlagBitsEXT" "VK_SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR"
+pattern SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR = ShaderCreateFlagBitsEXT 0x00040000
+
+-- No documentation found for Nested "VkShaderCreateFlagBitsEXT" "VK_SHADER_CREATE_64_BIT_INDEXING_BIT_EXT"
+pattern SHADER_CREATE_64_BIT_INDEXING_BIT_EXT = ShaderCreateFlagBitsEXT 0x00008000
+
+-- No documentation found for Nested "VkShaderCreateFlagBitsEXT" "VK_SHADER_CREATE_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_EXT"
+pattern SHADER_CREATE_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_EXT = ShaderCreateFlagBitsEXT 0x00001000
+
+-- No documentation found for Nested "VkShaderCreateFlagBitsEXT" "VK_SHADER_CREATE_INSTRUMENT_SHADER_BIT_ARM"
+pattern SHADER_CREATE_INSTRUMENT_SHADER_BIT_ARM = ShaderCreateFlagBitsEXT 0x00000800
+
+-- No documentation found for Nested "VkShaderCreateFlagBitsEXT" "VK_SHADER_CREATE_INDIRECT_BINDABLE_BIT_EXT"
 pattern SHADER_CREATE_INDIRECT_BINDABLE_BIT_EXT = ShaderCreateFlagBitsEXT 0x00000080
 
--- | 'SHADER_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT' specifies that a
--- fragment shader /can/ be used with a fragment density map attachment.
+-- No documentation found for Nested "VkShaderCreateFlagBitsEXT" "VK_SHADER_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT"
 pattern SHADER_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = ShaderCreateFlagBitsEXT 0x00000040
 
--- | 'SHADER_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_EXT' specifies that
--- a fragment shader /can/ be used with a fragment shading rate attachment.
+-- No documentation found for Nested "VkShaderCreateFlagBitsEXT" "VK_SHADER_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_EXT"
 pattern SHADER_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_EXT = ShaderCreateFlagBitsEXT 0x00000020
 
--- | 'SHADER_CREATE_DISPATCH_BASE_BIT_EXT' specifies that a compute shader
--- /can/ be used with
--- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group.cmdDispatchBase' with a
--- non-zero base workgroup.
+-- No documentation found for Nested "VkShaderCreateFlagBitsEXT" "VK_SHADER_CREATE_DISPATCH_BASE_BIT_EXT"
 pattern SHADER_CREATE_DISPATCH_BASE_BIT_EXT = ShaderCreateFlagBitsEXT 0x00000010
 
--- | 'SHADER_CREATE_NO_TASK_SHADER_BIT_EXT' specifies that a mesh shader
--- /must/ only be used without a task shader. Otherwise, the mesh shader
--- /must/ only be used with a task shader.
+-- No documentation found for Nested "VkShaderCreateFlagBitsEXT" "VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT"
 pattern SHADER_CREATE_NO_TASK_SHADER_BIT_EXT = ShaderCreateFlagBitsEXT 0x00000008
 
--- | 'SHADER_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT' specifies that the
--- subgroup sizes /must/ be launched with all invocations active in a task,
--- mesh, or compute shader.
+-- No documentation found for Nested "VkShaderCreateFlagBitsEXT" "VK_SHADER_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT"
 pattern SHADER_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT = ShaderCreateFlagBitsEXT 0x00000004
 
--- | 'SHADER_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT' specifies that the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-sgs SubgroupSize>
--- /may/ vary in a task, mesh, or compute shader.
+-- No documentation found for Nested "VkShaderCreateFlagBitsEXT" "VK_SHADER_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT"
 pattern SHADER_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT = ShaderCreateFlagBitsEXT 0x00000002
 
+-- No documentation found for Nested "VkShaderCreateFlagBitsEXT" "VK_SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT"
+pattern SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT = ShaderCreateFlagBitsEXT 0x00000400
+
 conNameShaderCreateFlagBitsEXT :: String
 conNameShaderCreateFlagBitsEXT = "ShaderCreateFlagBitsEXT"
 
@@ -2591,6 +2869,22 @@
     , "LINK_STAGE_BIT_EXT"
     )
   ,
+    ( SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR
+    , "INDEPENDENT_SETS_BIT_KHR"
+    )
+  ,
+    ( SHADER_CREATE_64_BIT_INDEXING_BIT_EXT
+    , "64_BIT_INDEXING_BIT_EXT"
+    )
+  ,
+    ( SHADER_CREATE_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_EXT
+    , "OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_EXT"
+    )
+  ,
+    ( SHADER_CREATE_INSTRUMENT_SHADER_BIT_ARM
+    , "INSTRUMENT_SHADER_BIT_ARM"
+    )
+  ,
     ( SHADER_CREATE_INDIRECT_BINDABLE_BIT_EXT
     , "INDIRECT_BINDABLE_BIT_EXT"
     )
@@ -2618,6 +2912,10 @@
     ( SHADER_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT
     , "ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT"
     )
+  ,
+    ( SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT
+    , "DESCRIPTOR_HEAP_BIT_EXT"
+    )
   ]
 
 instance Show ShaderCreateFlagBitsEXT where
@@ -2639,6 +2937,14 @@
 
 -- | VkShaderCodeTypeEXT - Indicate a shader code type
 --
+-- = Description
+--
+-- -   'SHADER_CODE_TYPE_BINARY_EXT' specifies shader code in an opaque,
+--     implementation-defined binary format specific to the physical
+--     device.
+--
+-- -   'SHADER_CODE_TYPE_SPIRV_EXT' specifies shader code in SPIR-V format.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_shader_object VK_EXT_shader_object>,
@@ -2646,11 +2952,10 @@
 newtype ShaderCodeTypeEXT = ShaderCodeTypeEXT Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'SHADER_CODE_TYPE_BINARY_EXT' specifies shader code in an opaque,
--- implementation-defined binary format specific to the physical device.
+-- No documentation found for Nested "VkShaderCodeTypeEXT" "VK_SHADER_CODE_TYPE_BINARY_EXT"
 pattern SHADER_CODE_TYPE_BINARY_EXT = ShaderCodeTypeEXT 0
 
--- | 'SHADER_CODE_TYPE_SPIRV_EXT' specifies shader code in SPIR-V format.
+-- No documentation found for Nested "VkShaderCodeTypeEXT" "VK_SHADER_CODE_TYPE_SPIRV_EXT"
 pattern SHADER_CODE_TYPE_SPIRV_EXT = ShaderCodeTypeEXT 1
 
 {-# COMPLETE
diff --git a/src/Vulkan/Extensions/VK_EXT_shader_object.hs-boot b/src/Vulkan/Extensions/VK_EXT_shader_object.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_shader_object.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_shader_object.hs-boot
@@ -144,7 +144,7 @@
 --
 --     -   Timur Kristóf, Valve
 --
---     -   Constantine Shablya, Collabora
+--     -   Caterina Shablia, Collabora
 --
 --     -   Daniel Koch, NVIDIA
 --
@@ -369,7 +369,8 @@
 --
 --     -   'PhysicalDeviceShaderObjectPropertiesEXT'
 --
--- -   Extending 'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo',
+-- -   Extending
+--     'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo',
 --     'ShaderCreateInfoEXT':
 --
 --     -   'ShaderRequiredSubgroupSizeCreateInfoEXT'
@@ -760,7 +761,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_shader_object Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_shader_object Vulkan Specification>.
 --
 -- This 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_replicated_composites.hs b/src/Vulkan/Extensions/VK_EXT_shader_replicated_composites.hs
--- a/src/Vulkan/Extensions/VK_EXT_shader_replicated_composites.hs
+++ b/src/Vulkan/Extensions/VK_EXT_shader_replicated_composites.hs
@@ -21,7 +21,9 @@
 --     Ratified
 --
 -- [__Extension and Version Dependencies__]
---     None
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
 --
 -- [__SPIR-V Dependencies__]
 --
@@ -72,7 +74,7 @@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-ReplicatedCompositesEXT ReplicatedCompositesEXT>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-ReplicatedCompositesEXT ReplicatedCompositesEXT>
 --
 -- == Version History
 --
@@ -87,7 +89,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_shader_replicated_composites Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_shader_replicated_composites Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -132,12 +134,21 @@
 -- 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. 'PhysicalDeviceShaderReplicatedCompositesFeaturesEXT' /can/
--- also be used in the @pNext@ chain of
--- 'Vulkan.Core10.Device.DeviceCreateInfo' to selectively enable these
--- features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceShaderReplicatedCompositesFeaturesEXT', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Extensions/VK_EXT_shader_replicated_composites.hs-boot b/src/Vulkan/Extensions/VK_EXT_shader_replicated_composites.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_shader_replicated_composites.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_shader_replicated_composites.hs-boot
@@ -21,7 +21,9 @@
 --     Ratified
 --
 -- [__Extension and Version Dependencies__]
---     None
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
 --
 -- [__SPIR-V Dependencies__]
 --
@@ -72,7 +74,7 @@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-ReplicatedCompositesEXT ReplicatedCompositesEXT>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-ReplicatedCompositesEXT ReplicatedCompositesEXT>
 --
 -- == Version History
 --
@@ -87,7 +89,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_shader_replicated_composites Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_shader_replicated_composites Vulkan Specification>.
 --
 -- This 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_split_barrier.hs b/src/Vulkan/Extensions/VK_EXT_shader_split_barrier.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_EXT_shader_split_barrier.hs
@@ -0,0 +1,313 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_EXT_shader_split_barrier - device extension
+--
+-- = VK_EXT_shader_split_barrier
+--
+-- [__Name String__]
+--     @VK_EXT_shader_split_barrier@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     306
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Not ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
+--
+-- [__SPIR-V Dependencies__]
+--
+--     -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/EXT/SPV_EXT_split_barrier.html SPV_EXT_split_barrier>
+--
+-- [__Contact__]
+--
+--     -   Matthew Netsch
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_shader_split_barrier] @mnetsch%0A*Here describe the issue or question you have about the VK_EXT_shader_split_barrier extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_EXT_shader_split_barrier.adoc VK_EXT_shader_split_barrier>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2026-05-08
+--
+-- [__Interactions and External Dependencies__]
+--
+--     -   This extension provides API support for
+--         <https://github.com/KhronosGroup/GLSL/blob/main/extensions/ext/GLSL_EXT_split_barrier.txt GLSL_EXT_split_barrier>
+--
+-- [__Contributors__]
+--
+--     -   Matthew Netsch, Qualcomm Technologies, Inc.
+--
+--     -   Elina Kamenetskaya, Qualcomm Technologies, Inc.
+--
+--     -   Wooyoung Kim, Qualcomm Technologies, Inc.
+--
+--     -   John Li, Qualcomm Technologies, Inc.
+--
+--     -   Jeff Bolz, Nvidia
+--
+--     -   Ben Ashbaugh, Intel
+--
+-- == Description
+--
+-- This extension splits @OpControlBarrier@ by exposing two new barrier
+-- operations with
+-- <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/EXT/SPV_EXT_split_barrier.html SPV_EXT_split_barrier>:
+--
+-- -   @OpControlBarrierArriveEXT@ - notifies that invocation has arrived
+--     here
+--
+-- -   @OpControlBarrierWaitEXT@ - waits on all invocations before
+--     proceeding execution
+--
+-- In the Vulkan context, this allows apps to synchronize Subgroup
+-- execution flow within a Workgroup without requiring all Subgroups to
+-- wait at the arrival condition before proceeding to execute independent
+-- work. It also permits synchronizing memory access like other control
+-- barriers.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceShaderSplitBarrierFeaturesEXT'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDeviceShaderSplitBarrierPropertiesEXT'
+--
+-- == New Enum Constants
+--
+-- -   'EXT_SHADER_SPLIT_BARRIER_EXTENSION_NAME'
+--
+-- -   'EXT_SHADER_SPLIT_BARRIER_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SPLIT_BARRIER_FEATURES_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SPLIT_BARRIER_PROPERTIES_EXT'
+--
+-- == Version History
+--
+-- -   Revision 1, 2026-05-08 (Matthew Netsch)
+--
+--     -   Initial version
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_shader_split_barrier 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_split_barrier  ( PhysicalDeviceShaderSplitBarrierFeaturesEXT(..)
+                                                      , PhysicalDeviceShaderSplitBarrierPropertiesEXT(..)
+                                                      , EXT_SHADER_SPLIT_BARRIER_SPEC_VERSION
+                                                      , pattern EXT_SHADER_SPLIT_BARRIER_SPEC_VERSION
+                                                      , EXT_SHADER_SPLIT_BARRIER_EXTENSION_NAME
+                                                      , pattern EXT_SHADER_SPLIT_BARRIER_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_PHYSICAL_DEVICE_SHADER_SPLIT_BARRIER_FEATURES_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SPLIT_BARRIER_PROPERTIES_EXT))
+-- | VkPhysicalDeviceShaderSplitBarrierFeaturesEXT - Structure describing the
+-- shader split barrier features that can be supported by an implementation
+--
+-- = Members
+--
+-- This structure describes the following feature:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceShaderSplitBarrierFeaturesEXT' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceShaderSplitBarrierFeaturesEXT', it /must/ add an instance
+-- of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_shader_split_barrier VK_EXT_shader_split_barrier>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceShaderSplitBarrierFeaturesEXT = PhysicalDeviceShaderSplitBarrierFeaturesEXT
+  { -- | #features-shaderSplitBarrier# @shaderSplitBarrier@ indicates that the
+    -- implementation supports the @SplitBarrierEXT@ SPIR-V capability.
+    shaderSplitBarrier :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceShaderSplitBarrierFeaturesEXT)
+#endif
+deriving instance Show PhysicalDeviceShaderSplitBarrierFeaturesEXT
+
+instance ToCStruct PhysicalDeviceShaderSplitBarrierFeaturesEXT where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceShaderSplitBarrierFeaturesEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SPLIT_BARRIER_FEATURES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (shaderSplitBarrier))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SPLIT_BARRIER_FEATURES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceShaderSplitBarrierFeaturesEXT where
+  peekCStruct p = do
+    shaderSplitBarrier <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDeviceShaderSplitBarrierFeaturesEXT
+             (bool32ToBool shaderSplitBarrier)
+
+instance Storable PhysicalDeviceShaderSplitBarrierFeaturesEXT where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceShaderSplitBarrierFeaturesEXT where
+  zero = PhysicalDeviceShaderSplitBarrierFeaturesEXT
+           zero
+
+
+-- | VkPhysicalDeviceShaderSplitBarrierPropertiesEXT - Structure describing
+-- split barrier properties supported by an implementation
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceShaderSplitBarrierPropertiesEXT' 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.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_shader_split_barrier VK_EXT_shader_split_barrier>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceShaderSplitBarrierPropertiesEXT = PhysicalDeviceShaderSplitBarrierPropertiesEXT
+  { -- | #limits-splitBarrierReservedSharedMemory#
+    -- @splitBarrierReservedSharedMemory@ is the number of bytes of shared
+    -- memory reserved for the implementation when the module executes
+    -- @OpControlBarrierArriveEXT@ or @OpControlBarrierWaitEXT@ instructions
+    splitBarrierReservedSharedMemory :: Word32 }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceShaderSplitBarrierPropertiesEXT)
+#endif
+deriving instance Show PhysicalDeviceShaderSplitBarrierPropertiesEXT
+
+instance ToCStruct PhysicalDeviceShaderSplitBarrierPropertiesEXT where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceShaderSplitBarrierPropertiesEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SPLIT_BARRIER_PROPERTIES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (splitBarrierReservedSharedMemory)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SPLIT_BARRIER_PROPERTIES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct PhysicalDeviceShaderSplitBarrierPropertiesEXT where
+  peekCStruct p = do
+    splitBarrierReservedSharedMemory <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    pure $ PhysicalDeviceShaderSplitBarrierPropertiesEXT
+             splitBarrierReservedSharedMemory
+
+instance Storable PhysicalDeviceShaderSplitBarrierPropertiesEXT where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceShaderSplitBarrierPropertiesEXT where
+  zero = PhysicalDeviceShaderSplitBarrierPropertiesEXT
+           zero
+
+
+type EXT_SHADER_SPLIT_BARRIER_SPEC_VERSION = 1
+
+-- No documentation found for TopLevel "VK_EXT_SHADER_SPLIT_BARRIER_SPEC_VERSION"
+pattern EXT_SHADER_SPLIT_BARRIER_SPEC_VERSION :: forall a . Integral a => a
+pattern EXT_SHADER_SPLIT_BARRIER_SPEC_VERSION = 1
+
+
+type EXT_SHADER_SPLIT_BARRIER_EXTENSION_NAME = "VK_EXT_shader_split_barrier"
+
+-- No documentation found for TopLevel "VK_EXT_SHADER_SPLIT_BARRIER_EXTENSION_NAME"
+pattern EXT_SHADER_SPLIT_BARRIER_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern EXT_SHADER_SPLIT_BARRIER_EXTENSION_NAME = "VK_EXT_shader_split_barrier"
+
diff --git a/src/Vulkan/Extensions/VK_EXT_shader_split_barrier.hs-boot b/src/Vulkan/Extensions/VK_EXT_shader_split_barrier.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_EXT_shader_split_barrier.hs-boot
@@ -0,0 +1,146 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_EXT_shader_split_barrier - device extension
+--
+-- = VK_EXT_shader_split_barrier
+--
+-- [__Name String__]
+--     @VK_EXT_shader_split_barrier@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     306
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Not ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
+--
+-- [__SPIR-V Dependencies__]
+--
+--     -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/EXT/SPV_EXT_split_barrier.html SPV_EXT_split_barrier>
+--
+-- [__Contact__]
+--
+--     -   Matthew Netsch
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_shader_split_barrier] @mnetsch%0A*Here describe the issue or question you have about the VK_EXT_shader_split_barrier extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_EXT_shader_split_barrier.adoc VK_EXT_shader_split_barrier>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2026-05-08
+--
+-- [__Interactions and External Dependencies__]
+--
+--     -   This extension provides API support for
+--         <https://github.com/KhronosGroup/GLSL/blob/main/extensions/ext/GLSL_EXT_split_barrier.txt GLSL_EXT_split_barrier>
+--
+-- [__Contributors__]
+--
+--     -   Matthew Netsch, Qualcomm Technologies, Inc.
+--
+--     -   Elina Kamenetskaya, Qualcomm Technologies, Inc.
+--
+--     -   Wooyoung Kim, Qualcomm Technologies, Inc.
+--
+--     -   John Li, Qualcomm Technologies, Inc.
+--
+--     -   Jeff Bolz, Nvidia
+--
+--     -   Ben Ashbaugh, Intel
+--
+-- == Description
+--
+-- This extension splits @OpControlBarrier@ by exposing two new barrier
+-- operations with
+-- <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/EXT/SPV_EXT_split_barrier.html SPV_EXT_split_barrier>:
+--
+-- -   @OpControlBarrierArriveEXT@ - notifies that invocation has arrived
+--     here
+--
+-- -   @OpControlBarrierWaitEXT@ - waits on all invocations before
+--     proceeding execution
+--
+-- In the Vulkan context, this allows apps to synchronize Subgroup
+-- execution flow within a Workgroup without requiring all Subgroups to
+-- wait at the arrival condition before proceeding to execute independent
+-- work. It also permits synchronizing memory access like other control
+-- barriers.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceShaderSplitBarrierFeaturesEXT'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDeviceShaderSplitBarrierPropertiesEXT'
+--
+-- == New Enum Constants
+--
+-- -   'EXT_SHADER_SPLIT_BARRIER_EXTENSION_NAME'
+--
+-- -   'EXT_SHADER_SPLIT_BARRIER_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SPLIT_BARRIER_FEATURES_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SPLIT_BARRIER_PROPERTIES_EXT'
+--
+-- == Version History
+--
+-- -   Revision 1, 2026-05-08 (Matthew Netsch)
+--
+--     -   Initial version
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_shader_split_barrier 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_split_barrier  ( PhysicalDeviceShaderSplitBarrierFeaturesEXT
+                                                      , PhysicalDeviceShaderSplitBarrierPropertiesEXT
+                                                      ) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data PhysicalDeviceShaderSplitBarrierFeaturesEXT
+
+instance ToCStruct PhysicalDeviceShaderSplitBarrierFeaturesEXT
+instance Show PhysicalDeviceShaderSplitBarrierFeaturesEXT
+
+instance FromCStruct PhysicalDeviceShaderSplitBarrierFeaturesEXT
+
+
+data PhysicalDeviceShaderSplitBarrierPropertiesEXT
+
+instance ToCStruct PhysicalDeviceShaderSplitBarrierPropertiesEXT
+instance Show PhysicalDeviceShaderSplitBarrierPropertiesEXT
+
+instance FromCStruct PhysicalDeviceShaderSplitBarrierPropertiesEXT
+
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
@@ -80,7 +80,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_shader_stencil_export Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -136,7 +136,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-subgroupBroadcastDynamicId subgroupBroadcastDynamicId>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-subgroupBroadcastDynamicId subgroupBroadcastDynamicId>
 -- feature.
 --
 -- == New Enum Constants
@@ -147,23 +147,23 @@
 --
 -- == New Built-In Variables
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-sgeq SubgroupEqMaskKHR>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-sgeq SubgroupEqMaskKHR>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-sgge SubgroupGeMaskKHR>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-sgge SubgroupGeMaskKHR>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-sggt SubgroupGtMaskKHR>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-sggt SubgroupGtMaskKHR>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-sgle SubgroupLeMaskKHR>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-sgle SubgroupLeMaskKHR>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-sglt SubgroupLtMaskKHR>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-sglt SubgroupLtMaskKHR>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-sgli SubgroupLocalInvocationId>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-sgli SubgroupLocalInvocationId>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-sgs SubgroupSize>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-sgs SubgroupSize>
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-SubgroupBallotKHR SubgroupBallotKHR>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-SubgroupBallotKHR SubgroupBallotKHR>
 --
 -- == Version History
 --
@@ -178,7 +178,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_shader_subgroup_ballot Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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_partitioned.hs b/src/Vulkan/Extensions/VK_EXT_shader_subgroup_partitioned.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_EXT_shader_subgroup_partitioned.hs
@@ -0,0 +1,233 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_EXT_shader_subgroup_partitioned - device extension
+--
+-- = VK_EXT_shader_subgroup_partitioned
+--
+-- [__Name String__]
+--     @VK_EXT_shader_subgroup_partitioned@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     663
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
+--
+-- [__SPIR-V Dependencies__]
+--
+--     -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/EXT/SPV_EXT_shader_subgroup_partitioned.html SPV_EXT_shader_subgroup_partitioned>
+--
+--     -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/NV/SPV_NV_shader_subgroup_partitioned.html SPV_NV_shader_subgroup_partitioned>
+--
+-- [__Contact__]
+--
+--     -   Jeff Bolz
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_shader_subgroup_partitioned] @jeffbolznv%0A*Here describe the issue or question you have about the VK_EXT_shader_subgroup_partitioned extension* >
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2025-11-12
+--
+-- [__Interactions and External Dependencies__]
+--
+--     -   This extension provides API support for
+--         <https://github.com/KhronosGroup/GLSL/blob/main/extensions/nv/GL_NV_shader_subgroup_partitioned.txt GL_NV_shader_subgroup_partitioned>
+--
+-- [__Contributors__]
+--
+--     -   Jeff Bolz, NVIDIA
+--
+-- == Description
+--
+-- This extension enables support for a new class of
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-group-operations group operations>
+-- on
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-scope-subgroup subgroups>
+-- via the
+-- <https://github.com/KhronosGroup/GLSL/blob/main/extensions/nv/GL_NV_shader_subgroup_partitioned.txt GL_NV_shader_subgroup_partitioned>
+-- GLSL extension and
+-- <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/EXT/SPV_EXT_shader_subgroup_partitioned.html SPV_EXT_shader_subgroup_partitioned>
+-- SPIR-V extension. Support for these new operations is advertised via the
+-- 'Vulkan.Core11.Enums.SubgroupFeatureFlagBits.SUBGROUP_FEATURE_PARTITIONED_BIT_EXT'
+-- bit. Note that there is not a new GLSL extension since
+-- @SPV_EXT_shader_subgroup_partitioned@ is compatible with
+-- @SPV_NV_shader_subgroup_partitioned@, so the
+-- @GL_NV_shader_subgroup_partitioned@ GLSL extension can still be used.
+--
+-- This extension requires Vulkan 1.1, for general subgroup support.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceShaderSubgroupPartitionedFeaturesEXT'
+--
+-- == New Enum Constants
+--
+-- -   'EXT_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME'
+--
+-- -   'EXT_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_PARTITIONED_FEATURES_EXT'
+--
+-- -   Extending
+--     'Vulkan.Core11.Enums.SubgroupFeatureFlagBits.SubgroupFeatureFlagBits':
+--
+--     -   'Vulkan.Core11.Enums.SubgroupFeatureFlagBits.SUBGROUP_FEATURE_PARTITIONED_BIT_EXT'
+--
+-- == Version History
+--
+-- -   Revision 1, 2025-11-12 (Jeff Bolz)
+--
+--     -   Promoted from @VK_NV_shader_subgroup_partitioned@
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_shader_subgroup_partitioned 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_subgroup_partitioned  ( PhysicalDeviceShaderSubgroupPartitionedFeaturesEXT(..)
+                                                             , EXT_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION
+                                                             , pattern EXT_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION
+                                                             , EXT_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME
+                                                             , pattern EXT_SHADER_SUBGROUP_PARTITIONED_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_SUBGROUP_PARTITIONED_FEATURES_EXT))
+-- | VkPhysicalDeviceShaderSubgroupPartitionedFeaturesEXT - Structure
+-- describing shader subgroup partitioned features that can be supported by
+-- an implementation
+--
+-- = Members
+--
+-- This structure describes the following features:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceShaderSubgroupPartitionedFeaturesEXT' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceShaderSubgroupPartitionedFeaturesEXT', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_shader_subgroup_partitioned VK_EXT_shader_subgroup_partitioned>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceShaderSubgroupPartitionedFeaturesEXT = PhysicalDeviceShaderSubgroupPartitionedFeaturesEXT
+  { -- | #features-shaderSubgroupPartitioned# @shaderSubgroupPartitioned@
+    -- indicates that the implementation supports
+    -- 'Vulkan.Core11.Enums.SubgroupFeatureFlagBits.SUBGROUP_FEATURE_PARTITIONED_BIT_EXT'.
+    shaderSubgroupPartitioned :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceShaderSubgroupPartitionedFeaturesEXT)
+#endif
+deriving instance Show PhysicalDeviceShaderSubgroupPartitionedFeaturesEXT
+
+instance ToCStruct PhysicalDeviceShaderSubgroupPartitionedFeaturesEXT where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceShaderSubgroupPartitionedFeaturesEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_PARTITIONED_FEATURES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (shaderSubgroupPartitioned))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_PARTITIONED_FEATURES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceShaderSubgroupPartitionedFeaturesEXT where
+  peekCStruct p = do
+    shaderSubgroupPartitioned <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDeviceShaderSubgroupPartitionedFeaturesEXT
+             (bool32ToBool shaderSubgroupPartitioned)
+
+instance Storable PhysicalDeviceShaderSubgroupPartitionedFeaturesEXT where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceShaderSubgroupPartitionedFeaturesEXT where
+  zero = PhysicalDeviceShaderSubgroupPartitionedFeaturesEXT
+           zero
+
+
+type EXT_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION = 1
+
+-- No documentation found for TopLevel "VK_EXT_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION"
+pattern EXT_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION :: forall a . Integral a => a
+pattern EXT_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION = 1
+
+
+type EXT_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME = "VK_EXT_shader_subgroup_partitioned"
+
+-- No documentation found for TopLevel "VK_EXT_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME"
+pattern EXT_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern EXT_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME = "VK_EXT_shader_subgroup_partitioned"
+
diff --git a/src/Vulkan/Extensions/VK_EXT_shader_subgroup_partitioned.hs-boot b/src/Vulkan/Extensions/VK_EXT_shader_subgroup_partitioned.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_EXT_shader_subgroup_partitioned.hs-boot
@@ -0,0 +1,124 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_EXT_shader_subgroup_partitioned - device extension
+--
+-- = VK_EXT_shader_subgroup_partitioned
+--
+-- [__Name String__]
+--     @VK_EXT_shader_subgroup_partitioned@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     663
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
+--
+-- [__SPIR-V Dependencies__]
+--
+--     -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/EXT/SPV_EXT_shader_subgroup_partitioned.html SPV_EXT_shader_subgroup_partitioned>
+--
+--     -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/NV/SPV_NV_shader_subgroup_partitioned.html SPV_NV_shader_subgroup_partitioned>
+--
+-- [__Contact__]
+--
+--     -   Jeff Bolz
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_shader_subgroup_partitioned] @jeffbolznv%0A*Here describe the issue or question you have about the VK_EXT_shader_subgroup_partitioned extension* >
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2025-11-12
+--
+-- [__Interactions and External Dependencies__]
+--
+--     -   This extension provides API support for
+--         <https://github.com/KhronosGroup/GLSL/blob/main/extensions/nv/GL_NV_shader_subgroup_partitioned.txt GL_NV_shader_subgroup_partitioned>
+--
+-- [__Contributors__]
+--
+--     -   Jeff Bolz, NVIDIA
+--
+-- == Description
+--
+-- This extension enables support for a new class of
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-group-operations group operations>
+-- on
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-scope-subgroup subgroups>
+-- via the
+-- <https://github.com/KhronosGroup/GLSL/blob/main/extensions/nv/GL_NV_shader_subgroup_partitioned.txt GL_NV_shader_subgroup_partitioned>
+-- GLSL extension and
+-- <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/EXT/SPV_EXT_shader_subgroup_partitioned.html SPV_EXT_shader_subgroup_partitioned>
+-- SPIR-V extension. Support for these new operations is advertised via the
+-- 'Vulkan.Core11.Enums.SubgroupFeatureFlagBits.SUBGROUP_FEATURE_PARTITIONED_BIT_EXT'
+-- bit. Note that there is not a new GLSL extension since
+-- @SPV_EXT_shader_subgroup_partitioned@ is compatible with
+-- @SPV_NV_shader_subgroup_partitioned@, so the
+-- @GL_NV_shader_subgroup_partitioned@ GLSL extension can still be used.
+--
+-- This extension requires Vulkan 1.1, for general subgroup support.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceShaderSubgroupPartitionedFeaturesEXT'
+--
+-- == New Enum Constants
+--
+-- -   'EXT_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME'
+--
+-- -   'EXT_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_PARTITIONED_FEATURES_EXT'
+--
+-- -   Extending
+--     'Vulkan.Core11.Enums.SubgroupFeatureFlagBits.SubgroupFeatureFlagBits':
+--
+--     -   'Vulkan.Core11.Enums.SubgroupFeatureFlagBits.SUBGROUP_FEATURE_PARTITIONED_BIT_EXT'
+--
+-- == Version History
+--
+-- -   Revision 1, 2025-11-12 (Jeff Bolz)
+--
+--     -   Promoted from @VK_NV_shader_subgroup_partitioned@
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_shader_subgroup_partitioned 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_subgroup_partitioned  (PhysicalDeviceShaderSubgroupPartitionedFeaturesEXT) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data PhysicalDeviceShaderSubgroupPartitionedFeaturesEXT
+
+instance ToCStruct PhysicalDeviceShaderSubgroupPartitionedFeaturesEXT
+instance Show PhysicalDeviceShaderSubgroupPartitionedFeaturesEXT
+
+instance FromCStruct PhysicalDeviceShaderSubgroupPartitionedFeaturesEXT
+
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
@@ -147,7 +147,7 @@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-SubgroupVoteKHR SubgroupVoteKHR>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-SubgroupVoteKHR SubgroupVoteKHR>
 --
 -- == Version History
 --
@@ -162,7 +162,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_shader_subgroup_vote Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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_tile_image.hs b/src/Vulkan/Extensions/VK_EXT_shader_tile_image.hs
--- a/src/Vulkan/Extensions/VK_EXT_shader_tile_image.hs
+++ b/src/Vulkan/Extensions/VK_EXT_shader_tile_image.hs
@@ -74,14 +74,14 @@
 --
 -- == Description
 --
--- This extension allows fragment shader invocations to read color, depth
+-- This extension allows fragment shader invocations to read color, depth,
 -- and stencil values at their pixel location in rasterization order. The
 -- functionality is only available when using dynamic render passes
 -- introduced by VK_KHR_dynamic_rendering. Example use cases are
 -- programmable blending and deferred shading.
 --
 -- See
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-shader-tileimage-reads fragment shader tile image reads>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#fragops-shader-tileimage-reads fragment shader tile image reads>
 -- for more information.
 --
 -- == New Structures
@@ -152,7 +152,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_shader_tile_image Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_shader_tile_image Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -203,12 +203,22 @@
 -- 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. 'PhysicalDeviceShaderTileImageFeaturesEXT' /can/ also be used
--- in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceShaderTileImageFeaturesEXT', it /must/ add an instance of
+-- the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_shader_tile_image VK_EXT_shader_tile_image>,
@@ -291,8 +301,12 @@
 --
 -- These are properties of the tile image information of a physical device.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_shader_tile_image VK_EXT_shader_tile_image>,
@@ -306,7 +320,7 @@
   , -- | @shaderTileImageReadSampleFromPixelRateInvocation@ is a boolean that
     -- will be 'Vulkan.Core10.FundamentalTypes.TRUE' if reading from samples
     -- from a pixel rate fragment invocation is supported when
-    -- 'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
+    -- 'Vulkan.Core10.GraphicsPipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
     -- > 1.
     shaderTileImageReadSampleFromPixelRateInvocation :: Bool
   , -- | @shaderTileImageReadFromHelperInvocation@ is a boolean that will be
diff --git a/src/Vulkan/Extensions/VK_EXT_shader_tile_image.hs-boot b/src/Vulkan/Extensions/VK_EXT_shader_tile_image.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_shader_tile_image.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_shader_tile_image.hs-boot
@@ -74,14 +74,14 @@
 --
 -- == Description
 --
--- This extension allows fragment shader invocations to read color, depth
+-- This extension allows fragment shader invocations to read color, depth,
 -- and stencil values at their pixel location in rasterization order. The
 -- functionality is only available when using dynamic render passes
 -- introduced by VK_KHR_dynamic_rendering. Example use cases are
 -- programmable blending and deferred shading.
 --
 -- See
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-shader-tileimage-reads fragment shader tile image reads>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#fragops-shader-tileimage-reads fragment shader tile image reads>
 -- for more information.
 --
 -- == New Structures
@@ -152,7 +152,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_shader_tile_image Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_shader_tile_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_EXT_shader_uniform_buffer_unsized_array.hs b/src/Vulkan/Extensions/VK_EXT_shader_uniform_buffer_unsized_array.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_EXT_shader_uniform_buffer_unsized_array.hs
@@ -0,0 +1,236 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_EXT_shader_uniform_buffer_unsized_array - device extension
+--
+-- = VK_EXT_shader_uniform_buffer_unsized_array
+--
+-- [__Name String__]
+--     @VK_EXT_shader_uniform_buffer_unsized_array@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     643
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
+--
+-- [__Contact__]
+--
+--     -   Piers Daniell
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_shader_uniform_buffer_unsized_array] @pdaniell-nv%0A*Here describe the issue or question you have about the VK_EXT_shader_uniform_buffer_unsized_array extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_EXT_shader_uniform_buffer_unsized_array.adoc VK_EXT_shader_uniform_buffer_unsized_array>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2025-05-28
+--
+-- [__Contributors__]
+--
+--     -   Pat Brown, NVIDIA
+--
+--     -   Jeff Bolz, NVIDIA
+--
+--     -   Pranjal Dubey, NVIDIA
+--
+-- == Description
+--
+-- This extension allows the last member of a uniform buffer block to be
+-- declared as an unsized array. This capability enables applications to
+-- create flexible buffer layouts where the array size can vary based on
+-- runtime requirements.
+--
+-- When the last member of a uniform buffer block is declared as an unsized
+-- array, the effective array size is inferred at runtime from the size of
+-- the buffer object backing the uniform buffer block. Such unsized arrays
+-- can be indexed with general integer expressions, but may not be passed
+-- as arguments to functions or indexed with negative constant expressions.
+--
+-- This extension leverages existing SPIR-V capabilities, allowing use of
+-- @OpTypeRuntimeArray@ as the last member of a uniform buffer block
+-- structure while prohibiting @OpArrayLength@.
+--
+-- Applications needing to know array sizes at runtime should calculate the
+-- length and pass it to shaders via a separate uniform. This calculation
+-- can be performed using the formula: max((buffer_object_size -
+-- offset_of_array) \/ stride_of_array, 0), where buffer_object_size is the
+-- size of the bound buffer, offset_of_array is the byte offset of the
+-- array in the block, and stride_of_array is the byte stride between
+-- consecutive array elements.
+--
+-- Uniform buffers have traditionally required explicit sizes for all
+-- arrays which limits flexibility. With this extension, developers can
+-- create a single shader that adapts to different data set sizes at
+-- runtime by binding differently sized buffers.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT'
+--
+-- == New Enum Constants
+--
+-- -   'EXT_SHADER_UNIFORM_BUFFER_UNSIZED_ARRAY_EXTENSION_NAME'
+--
+-- -   'EXT_SHADER_UNIFORM_BUFFER_UNSIZED_ARRAY_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_UNIFORM_BUFFER_UNSIZED_ARRAY_FEATURES_EXT'
+--
+-- == Version History
+--
+-- -   Revision 1, 2025-05-28 (Pranjal Dubey)
+--
+--     -   Initial draft
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_shader_uniform_buffer_unsized_array 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_uniform_buffer_unsized_array  ( PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT(..)
+                                                                     , EXT_SHADER_UNIFORM_BUFFER_UNSIZED_ARRAY_SPEC_VERSION
+                                                                     , pattern EXT_SHADER_UNIFORM_BUFFER_UNSIZED_ARRAY_SPEC_VERSION
+                                                                     , EXT_SHADER_UNIFORM_BUFFER_UNSIZED_ARRAY_EXTENSION_NAME
+                                                                     , pattern EXT_SHADER_UNIFORM_BUFFER_UNSIZED_ARRAY_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_UNIFORM_BUFFER_UNSIZED_ARRAY_FEATURES_EXT))
+-- | VkPhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT - Structure
+-- describing uniform buffer unsized array features that can be supported
+-- by an implementation
+--
+-- = Members
+--
+-- This structure describes the following feature:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT'
+-- 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT', it /must/
+-- add an instance of the structure, with the desired feature members set
+-- to 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_shader_uniform_buffer_unsized_array VK_EXT_shader_uniform_buffer_unsized_array>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT = PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT
+  { -- | #features-shaderUniformBufferUnsizedArray#
+    -- @shaderUniformBufferUnsizedArray@ indicates that the implementation
+    -- supports declaring the last member of a uniform buffer block as an
+    -- unsized array.
+    shaderUniformBufferUnsizedArray :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT)
+#endif
+deriving instance Show PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT
+
+instance ToCStruct PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_UNIFORM_BUFFER_UNSIZED_ARRAY_FEATURES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (shaderUniformBufferUnsizedArray))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_UNIFORM_BUFFER_UNSIZED_ARRAY_FEATURES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT where
+  peekCStruct p = do
+    shaderUniformBufferUnsizedArray <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT
+             (bool32ToBool shaderUniformBufferUnsizedArray)
+
+instance Storable PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT where
+  zero = PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT
+           zero
+
+
+type EXT_SHADER_UNIFORM_BUFFER_UNSIZED_ARRAY_SPEC_VERSION = 1
+
+-- No documentation found for TopLevel "VK_EXT_SHADER_UNIFORM_BUFFER_UNSIZED_ARRAY_SPEC_VERSION"
+pattern EXT_SHADER_UNIFORM_BUFFER_UNSIZED_ARRAY_SPEC_VERSION :: forall a . Integral a => a
+pattern EXT_SHADER_UNIFORM_BUFFER_UNSIZED_ARRAY_SPEC_VERSION = 1
+
+
+type EXT_SHADER_UNIFORM_BUFFER_UNSIZED_ARRAY_EXTENSION_NAME = "VK_EXT_shader_uniform_buffer_unsized_array"
+
+-- No documentation found for TopLevel "VK_EXT_SHADER_UNIFORM_BUFFER_UNSIZED_ARRAY_EXTENSION_NAME"
+pattern EXT_SHADER_UNIFORM_BUFFER_UNSIZED_ARRAY_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern EXT_SHADER_UNIFORM_BUFFER_UNSIZED_ARRAY_EXTENSION_NAME = "VK_EXT_shader_uniform_buffer_unsized_array"
+
diff --git a/src/Vulkan/Extensions/VK_EXT_shader_uniform_buffer_unsized_array.hs-boot b/src/Vulkan/Extensions/VK_EXT_shader_uniform_buffer_unsized_array.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_EXT_shader_uniform_buffer_unsized_array.hs-boot
@@ -0,0 +1,126 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_EXT_shader_uniform_buffer_unsized_array - device extension
+--
+-- = VK_EXT_shader_uniform_buffer_unsized_array
+--
+-- [__Name String__]
+--     @VK_EXT_shader_uniform_buffer_unsized_array@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     643
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
+--
+-- [__Contact__]
+--
+--     -   Piers Daniell
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_shader_uniform_buffer_unsized_array] @pdaniell-nv%0A*Here describe the issue or question you have about the VK_EXT_shader_uniform_buffer_unsized_array extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_EXT_shader_uniform_buffer_unsized_array.adoc VK_EXT_shader_uniform_buffer_unsized_array>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2025-05-28
+--
+-- [__Contributors__]
+--
+--     -   Pat Brown, NVIDIA
+--
+--     -   Jeff Bolz, NVIDIA
+--
+--     -   Pranjal Dubey, NVIDIA
+--
+-- == Description
+--
+-- This extension allows the last member of a uniform buffer block to be
+-- declared as an unsized array. This capability enables applications to
+-- create flexible buffer layouts where the array size can vary based on
+-- runtime requirements.
+--
+-- When the last member of a uniform buffer block is declared as an unsized
+-- array, the effective array size is inferred at runtime from the size of
+-- the buffer object backing the uniform buffer block. Such unsized arrays
+-- can be indexed with general integer expressions, but may not be passed
+-- as arguments to functions or indexed with negative constant expressions.
+--
+-- This extension leverages existing SPIR-V capabilities, allowing use of
+-- @OpTypeRuntimeArray@ as the last member of a uniform buffer block
+-- structure while prohibiting @OpArrayLength@.
+--
+-- Applications needing to know array sizes at runtime should calculate the
+-- length and pass it to shaders via a separate uniform. This calculation
+-- can be performed using the formula: max((buffer_object_size -
+-- offset_of_array) \/ stride_of_array, 0), where buffer_object_size is the
+-- size of the bound buffer, offset_of_array is the byte offset of the
+-- array in the block, and stride_of_array is the byte stride between
+-- consecutive array elements.
+--
+-- Uniform buffers have traditionally required explicit sizes for all
+-- arrays which limits flexibility. With this extension, developers can
+-- create a single shader that adapts to different data set sizes at
+-- runtime by binding differently sized buffers.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT'
+--
+-- == New Enum Constants
+--
+-- -   'EXT_SHADER_UNIFORM_BUFFER_UNSIZED_ARRAY_EXTENSION_NAME'
+--
+-- -   'EXT_SHADER_UNIFORM_BUFFER_UNSIZED_ARRAY_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_UNIFORM_BUFFER_UNSIZED_ARRAY_FEATURES_EXT'
+--
+-- == Version History
+--
+-- -   Revision 1, 2025-05-28 (Pranjal Dubey)
+--
+--     -   Initial draft
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_shader_uniform_buffer_unsized_array 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_uniform_buffer_unsized_array  (PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT
+
+instance ToCStruct PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT
+instance Show PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT
+
+instance FromCStruct PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT
+
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
@@ -52,11 +52,11 @@
 --         <https://registry.khronos.org/OpenGL/extensions/NV/NV_viewport_array2.txt GL_NV_viewport_array2>
 --
 --     -   This extension requires the
---         <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-multiViewport multiViewport>
+--         <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-multiViewport multiViewport>
 --         feature.
 --
 --     -   This extension interacts with the
---         <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-tessellationShader tessellationShader>
+--         <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-tessellationShader tessellationShader>
 --         feature.
 --
 -- [__Contributors__]
@@ -99,13 +99,13 @@
 --
 -- The single @ShaderViewportIndexLayerEXT@ capability from the
 -- @SPV_EXT_shader_viewport_index_layer@ extension is replaced by the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-ShaderViewportIndex ShaderViewportIndex>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-ShaderViewportIndex ShaderViewportIndex>
 -- and
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-ShaderLayer ShaderLayer>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-ShaderLayer ShaderLayer>
 -- capabilities from SPIR-V 1.5 which are enabled by the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-shaderOutputViewportIndex shaderOutputViewportIndex>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-shaderOutputViewportIndex shaderOutputViewportIndex>
 -- and
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-shaderOutputLayer shaderOutputLayer>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-shaderOutputLayer shaderOutputLayer>
 -- features, respectively. Additionally, if Vulkan 1.2 is supported but
 -- this extension is not, these capabilities are optional.
 --
@@ -121,14 +121,14 @@
 -- == New or Modified Built-In Variables
 --
 -- -   (modified)
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-layer Layer>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-layer Layer>
 --
 -- -   (modified)
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-viewportindex ViewportIndex>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-viewportindex ViewportIndex>
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-ShaderViewportIndexLayerEXT ShaderViewportIndexLayerEXT>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-ShaderViewportIndexLayerEXT ShaderViewportIndexLayerEXT>
 --
 -- == Version History
 --
@@ -143,7 +143,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_shader_viewport_index_layer Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -83,20 +83,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-minSubgroupSize minimum>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-minSubgroupSize minimum>
 -- and
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxSubgroupSize maximum>
+-- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-requiredSubgroupSizeStages stages support a required subgroup size>,
+-- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxComputeWorkgroupSubgroups maxComputeWorkgroupSubgroups>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxComputeWorkgroupSubgroups maxComputeWorkgroupSubgroups>
 -- and ensure that:
 --
 -- \[s = { WorkGroupSize.x \times WorkGroupSize.y \times WorkgroupSize.z \leq SubgroupSize \times maxComputeWorkgroupSubgroups }\]
@@ -119,7 +119,8 @@
 --
 --     -   'PhysicalDeviceSubgroupSizeControlPropertiesEXT'
 --
--- -   Extending 'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo',
+-- -   Extending
+--     'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo',
 --     'Vulkan.Extensions.VK_EXT_shader_object.ShaderCreateInfoEXT':
 --
 --     -   'PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT'
@@ -171,7 +172,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_subgroup_size_control Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
diff --git a/src/Vulkan/Extensions/VK_EXT_subpass_merge_feedback.hs b/src/Vulkan/Extensions/VK_EXT_subpass_merge_feedback.hs
--- a/src/Vulkan/Extensions/VK_EXT_subpass_merge_feedback.hs
+++ b/src/Vulkan/Extensions/VK_EXT_subpass_merge_feedback.hs
@@ -18,7 +18,7 @@
 --     2
 --
 -- [__Ratification Status__]
---     Not ratified
+--     Ratified
 --
 -- [__Extension and Version Dependencies__]
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
@@ -121,7 +121,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_subpass_merge_feedback Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_subpass_merge_feedback Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -212,8 +212,14 @@
 -- merging the described subpass with previous subpasses in the render
 -- pass.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.RenderPassCreateInfo2'
+--
+--     -   'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.SubpassDescription2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_subpass_merge_feedback VK_EXT_subpass_merge_feedback>,
@@ -311,8 +317,12 @@
 -- | VkRenderPassCreationFeedbackCreateInfoEXT - Request feedback about the
 -- creation of render pass
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.RenderPassCreateInfo2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_subpass_merge_feedback VK_EXT_subpass_merge_feedback>,
@@ -431,8 +441,12 @@
 -- | VkRenderPassSubpassFeedbackCreateInfoEXT - Request for feedback about
 -- the creation of subpass
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.SubpassDescription2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_subpass_merge_feedback VK_EXT_subpass_merge_feedback>,
@@ -502,12 +516,22 @@
 -- 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. 'PhysicalDeviceSubpassMergeFeedbackFeaturesEXT' /can/ also be
--- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceSubpassMergeFeedbackFeaturesEXT', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_subpass_merge_feedback VK_EXT_subpass_merge_feedback>,
@@ -557,6 +581,64 @@
 
 -- | VkSubpassMergeStatusEXT - Specify a subpass merging status
 --
+-- = Description
+--
+-- -   'SUBPASS_MERGE_STATUS_MERGED_EXT' specifies that the subpass is
+--     merged with a previous subpass.
+--
+-- -   'SUBPASS_MERGE_STATUS_DISALLOWED_EXT' specifies that the subpass is
+--     not merged because merging was disabled using
+--     'RenderPassCreationControlEXT'. If the render pass does not allow
+--     subpass merging, then all subpass statuses are set to this value. If
+--     a subpass description does not allow subpass merging, then only that
+--     subpass’s status is set to this value.
+--
+-- -   'SUBPASS_MERGE_STATUS_NOT_MERGED_SIDE_EFFECTS_EXT' specifies that
+--     the subpass is not merged because it contains side effects.
+--
+-- -   'SUBPASS_MERGE_STATUS_NOT_MERGED_SAMPLES_MISMATCH_EXT' specifies
+--     that the subpass is not merged because sample count is not
+--     compatible with the previous subpass.
+--
+-- -   'SUBPASS_MERGE_STATUS_NOT_MERGED_VIEWS_MISMATCH_EXT' specifies that
+--     the subpass is not merged because view masks do not match with
+--     previous subpass.
+--
+-- -   'SUBPASS_MERGE_STATUS_NOT_MERGED_ALIASING_EXT' specifies that the
+--     subpass is not merged because of attachments aliasing between them.
+--
+-- -   'SUBPASS_MERGE_STATUS_NOT_MERGED_DEPENDENCIES_EXT' specifies that
+--     the subpass is not merged because subpass dependencies do not allow
+--     merging.
+--
+-- -   'SUBPASS_MERGE_STATUS_NOT_MERGED_INCOMPATIBLE_INPUT_ATTACHMENT_EXT'
+--     specifies that the subpass is not merged because input attachment is
+--     not a color attachment from previous subpass or the formats are
+--     incompatible.
+--
+-- -   'SUBPASS_MERGE_STATUS_NOT_MERGED_TOO_MANY_ATTACHMENTS_EXT' specifies
+--     that the subpass is not merged because of too many attachments.
+--
+-- -   'SUBPASS_MERGE_STATUS_NOT_MERGED_INSUFFICIENT_STORAGE_EXT' specifies
+--     that the subpass is not merged because of insufficient memory.
+--
+-- -   'SUBPASS_MERGE_STATUS_NOT_MERGED_DEPTH_STENCIL_COUNT_EXT' specifies
+--     that the subpass is not merged because of too many depth\/stencil
+--     attachments.
+--
+-- -   'SUBPASS_MERGE_STATUS_NOT_MERGED_RESOLVE_ATTACHMENT_REUSE_EXT'
+--     specifies that the subpass is not merged because a resolve
+--     attachment is reused as an input attachment in a subsequent subpass.
+--
+-- -   'SUBPASS_MERGE_STATUS_NOT_MERGED_SINGLE_SUBPASS_EXT' specifies that
+--     the subpass is not merged because the render pass has only one
+--     subpass.
+--
+-- -   'SUBPASS_MERGE_STATUS_NOT_MERGED_UNSPECIFIED_EXT' specifies that the
+--     subpass is not merged for unspecified reasons. Implementations
+--     /should/ return this value when no other 'SubpassMergeStatusEXT'
+--     value is appropriate.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_subpass_merge_feedback VK_EXT_subpass_merge_feedback>,
@@ -564,72 +646,46 @@
 newtype SubpassMergeStatusEXT = SubpassMergeStatusEXT Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'SUBPASS_MERGE_STATUS_MERGED_EXT' specifies that the subpass is merged
--- with a previous subpass.
+-- No documentation found for Nested "VkSubpassMergeStatusEXT" "VK_SUBPASS_MERGE_STATUS_MERGED_EXT"
 pattern SUBPASS_MERGE_STATUS_MERGED_EXT = SubpassMergeStatusEXT 0
 
--- | 'SUBPASS_MERGE_STATUS_DISALLOWED_EXT' specifies that the subpass is not
--- merged because merging was disabled using
--- 'RenderPassCreationControlEXT'. If the render pass does not allow
--- subpass merging, then all subpass statuses are set to this value. If a
--- subpass description does not allow subpass merging, then only that
--- subpass’s status is set to this value.
+-- No documentation found for Nested "VkSubpassMergeStatusEXT" "VK_SUBPASS_MERGE_STATUS_DISALLOWED_EXT"
 pattern SUBPASS_MERGE_STATUS_DISALLOWED_EXT = SubpassMergeStatusEXT 1
 
--- | 'SUBPASS_MERGE_STATUS_NOT_MERGED_SIDE_EFFECTS_EXT' specifies that the
--- subpass is not merged because it contains side effects.
+-- No documentation found for Nested "VkSubpassMergeStatusEXT" "VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SIDE_EFFECTS_EXT"
 pattern SUBPASS_MERGE_STATUS_NOT_MERGED_SIDE_EFFECTS_EXT = SubpassMergeStatusEXT 2
 
--- | 'SUBPASS_MERGE_STATUS_NOT_MERGED_SAMPLES_MISMATCH_EXT' specifies that
--- the subpass is not merged because sample count is not compatible with
--- the previous subpass.
+-- No documentation found for Nested "VkSubpassMergeStatusEXT" "VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SAMPLES_MISMATCH_EXT"
 pattern SUBPASS_MERGE_STATUS_NOT_MERGED_SAMPLES_MISMATCH_EXT = SubpassMergeStatusEXT 3
 
--- | 'SUBPASS_MERGE_STATUS_NOT_MERGED_VIEWS_MISMATCH_EXT' specifies that the
--- subpass is not merged because view masks do not match with previous
--- subpass.
+-- No documentation found for Nested "VkSubpassMergeStatusEXT" "VK_SUBPASS_MERGE_STATUS_NOT_MERGED_VIEWS_MISMATCH_EXT"
 pattern SUBPASS_MERGE_STATUS_NOT_MERGED_VIEWS_MISMATCH_EXT = SubpassMergeStatusEXT 4
 
--- | 'SUBPASS_MERGE_STATUS_NOT_MERGED_ALIASING_EXT' specifies that the
--- subpass is not merged because of attachments aliasing between them.
+-- No documentation found for Nested "VkSubpassMergeStatusEXT" "VK_SUBPASS_MERGE_STATUS_NOT_MERGED_ALIASING_EXT"
 pattern SUBPASS_MERGE_STATUS_NOT_MERGED_ALIASING_EXT = SubpassMergeStatusEXT 5
 
--- | 'SUBPASS_MERGE_STATUS_NOT_MERGED_DEPENDENCIES_EXT' specifies that the
--- subpass is not merged because subpass dependencies do not allow merging.
+-- No documentation found for Nested "VkSubpassMergeStatusEXT" "VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPENDENCIES_EXT"
 pattern SUBPASS_MERGE_STATUS_NOT_MERGED_DEPENDENCIES_EXT = SubpassMergeStatusEXT 6
 
--- | 'SUBPASS_MERGE_STATUS_NOT_MERGED_INCOMPATIBLE_INPUT_ATTACHMENT_EXT'
--- specifies that the subpass is not merged because input attachment is not
--- a color attachment from previous subpass or the formats are
--- incompatible.
+-- No documentation found for Nested "VkSubpassMergeStatusEXT" "VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INCOMPATIBLE_INPUT_ATTACHMENT_EXT"
 pattern SUBPASS_MERGE_STATUS_NOT_MERGED_INCOMPATIBLE_INPUT_ATTACHMENT_EXT = SubpassMergeStatusEXT 7
 
--- | 'SUBPASS_MERGE_STATUS_NOT_MERGED_TOO_MANY_ATTACHMENTS_EXT' specifies
--- that the subpass is not merged because of too many attachments.
+-- No documentation found for Nested "VkSubpassMergeStatusEXT" "VK_SUBPASS_MERGE_STATUS_NOT_MERGED_TOO_MANY_ATTACHMENTS_EXT"
 pattern SUBPASS_MERGE_STATUS_NOT_MERGED_TOO_MANY_ATTACHMENTS_EXT = SubpassMergeStatusEXT 8
 
--- | 'SUBPASS_MERGE_STATUS_NOT_MERGED_INSUFFICIENT_STORAGE_EXT' specifies
--- that the subpass is not merged because of insufficient memory.
+-- No documentation found for Nested "VkSubpassMergeStatusEXT" "VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INSUFFICIENT_STORAGE_EXT"
 pattern SUBPASS_MERGE_STATUS_NOT_MERGED_INSUFFICIENT_STORAGE_EXT = SubpassMergeStatusEXT 9
 
--- | 'SUBPASS_MERGE_STATUS_NOT_MERGED_DEPTH_STENCIL_COUNT_EXT' specifies that
--- the subpass is not merged because of too many depth\/stencil
--- attachments.
+-- No documentation found for Nested "VkSubpassMergeStatusEXT" "VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPTH_STENCIL_COUNT_EXT"
 pattern SUBPASS_MERGE_STATUS_NOT_MERGED_DEPTH_STENCIL_COUNT_EXT = SubpassMergeStatusEXT 10
 
--- | 'SUBPASS_MERGE_STATUS_NOT_MERGED_RESOLVE_ATTACHMENT_REUSE_EXT' specifies
--- that the subpass is not merged because a resolve attachment is reused as
--- an input attachment in a subsequent subpass.
+-- No documentation found for Nested "VkSubpassMergeStatusEXT" "VK_SUBPASS_MERGE_STATUS_NOT_MERGED_RESOLVE_ATTACHMENT_REUSE_EXT"
 pattern SUBPASS_MERGE_STATUS_NOT_MERGED_RESOLVE_ATTACHMENT_REUSE_EXT = SubpassMergeStatusEXT 11
 
--- | 'SUBPASS_MERGE_STATUS_NOT_MERGED_SINGLE_SUBPASS_EXT' specifies that the
--- subpass is not merged because the render pass has only one subpass.
+-- No documentation found for Nested "VkSubpassMergeStatusEXT" "VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SINGLE_SUBPASS_EXT"
 pattern SUBPASS_MERGE_STATUS_NOT_MERGED_SINGLE_SUBPASS_EXT = SubpassMergeStatusEXT 12
 
--- | 'SUBPASS_MERGE_STATUS_NOT_MERGED_UNSPECIFIED_EXT' specifies that the
--- subpass is not merged for unspecified reasons. Implementations /should/
--- return this value when no other 'SubpassMergeStatusEXT' value is
--- appropriate.
+-- No documentation found for Nested "VkSubpassMergeStatusEXT" "VK_SUBPASS_MERGE_STATUS_NOT_MERGED_UNSPECIFIED_EXT"
 pattern SUBPASS_MERGE_STATUS_NOT_MERGED_UNSPECIFIED_EXT = SubpassMergeStatusEXT 13
 
 {-# COMPLETE
diff --git a/src/Vulkan/Extensions/VK_EXT_subpass_merge_feedback.hs-boot b/src/Vulkan/Extensions/VK_EXT_subpass_merge_feedback.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_subpass_merge_feedback.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_subpass_merge_feedback.hs-boot
@@ -18,7 +18,7 @@
 --     2
 --
 -- [__Ratification Status__]
---     Not ratified
+--     Ratified
 --
 -- [__Extension and Version Dependencies__]
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
@@ -121,7 +121,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_subpass_merge_feedback Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_subpass_merge_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_surface_maintenance1.hs b/src/Vulkan/Extensions/VK_EXT_surface_maintenance1.hs
--- a/src/Vulkan/Extensions/VK_EXT_surface_maintenance1.hs
+++ b/src/Vulkan/Extensions/VK_EXT_surface_maintenance1.hs
@@ -18,13 +18,19 @@
 --     1
 --
 -- [__Ratification Status__]
---     Not ratified
+--     Ratified
 --
 -- [__Extension and Version Dependencies__]
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_surface VK_KHR_surface>
 --     and
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_surface_capabilities2 VK_KHR_get_surface_capabilities2>
 --
+-- [__Deprecation State__]
+--
+--     -   /Promoted/ to
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_surface_maintenance1 VK_KHR_surface_maintenance1>
+--         extension
+--
 -- [__Contact__]
 --
 --     -   Shahbaz Youssefi
@@ -36,10 +42,16 @@
 -- == Other Extension Metadata
 --
 -- [__Last Modified Date__]
---     2022-11-09
+--     2022-12-16
 --
+-- [__Interactions and External Dependencies__]
+--
+--     -   Promoted to @VK_KHR_surface_maintenance1@
+--
 -- [__Contributors__]
 --
+--     -   James Jones, NVIDIA
+--
 --     -   Jeff Juliano, NVIDIA
 --
 --     -   Lionel Landwerlin, Intel
@@ -70,6 +82,13 @@
 -- -   Allow querying a surface for the set of presentation modes which can
 --     be easily switched between without requiring swapchain recreation.
 --
+-- == Promotion to @VK_KHR_surface_maintenance1@
+--
+-- All functionality in this extension is included in
+-- @VK_KHR_surface_maintenance1@, with the suffix changed to KHR. The
+-- original type, enum, and command names are still available as aliases of
+-- the KHR functionality.
+--
 -- == New Structures
 --
 -- -   Extending
@@ -104,11 +123,11 @@
 --
 -- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_EXT'
+--     -   'STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_EXT'
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SURFACE_PRESENT_MODE_EXT'
+--     -   'STRUCTURE_TYPE_SURFACE_PRESENT_MODE_EXT'
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_EXT'
+--     -   'STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_EXT'
 --
 -- == Version History
 --
@@ -116,6 +135,10 @@
 --
 --     -   Internal revisions
 --
+-- -   Revision 0, 2020-06-15 (James Jones)
+--
+--     -   Internal revisions
+--
 -- -   Revision 1, 2022-11-09 (Shahbaz Youssefi)
 --
 --     -   Add functionality and complete spec
@@ -127,509 +150,92 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_surface_maintenance1 Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_surface_maintenance1 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_surface_maintenance1  ( SurfacePresentModeEXT(..)
-                                                      , SurfacePresentScalingCapabilitiesEXT(..)
-                                                      , SurfacePresentModeCompatibilityEXT(..)
+module Vulkan.Extensions.VK_EXT_surface_maintenance1  ( pattern STRUCTURE_TYPE_SURFACE_PRESENT_MODE_EXT
+                                                      , pattern STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_EXT
+                                                      , pattern STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_EXT
                                                       , PresentScalingFlagsEXT
-                                                      , PresentScalingFlagBitsEXT( PRESENT_SCALING_ONE_TO_ONE_BIT_EXT
-                                                                                 , PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_EXT
-                                                                                 , PRESENT_SCALING_STRETCH_BIT_EXT
-                                                                                 , ..
-                                                                                 )
                                                       , PresentGravityFlagsEXT
-                                                      , PresentGravityFlagBitsEXT( PRESENT_GRAVITY_MIN_BIT_EXT
-                                                                                 , PRESENT_GRAVITY_MAX_BIT_EXT
-                                                                                 , PRESENT_GRAVITY_CENTERED_BIT_EXT
-                                                                                 , ..
-                                                                                 )
+                                                      , PresentScalingFlagBitsEXT
+                                                      , PresentGravityFlagBitsEXT
+                                                      , SurfacePresentModeEXT
+                                                      , SurfacePresentScalingCapabilitiesEXT
+                                                      , SurfacePresentModeCompatibilityEXT
                                                       , EXT_SURFACE_MAINTENANCE_1_SPEC_VERSION
                                                       , pattern EXT_SURFACE_MAINTENANCE_1_SPEC_VERSION
                                                       , EXT_SURFACE_MAINTENANCE_1_EXTENSION_NAME
                                                       , pattern EXT_SURFACE_MAINTENANCE_1_EXTENSION_NAME
+                                                      , SurfacePresentModeKHR(..)
+                                                      , SurfacePresentScalingCapabilitiesKHR(..)
+                                                      , SurfacePresentModeCompatibilityKHR(..)
                                                       , PresentModeKHR(..)
+                                                      , PresentScalingFlagBitsKHR(..)
+                                                      , PresentScalingFlagsKHR
+                                                      , PresentGravityFlagBitsKHR(..)
+                                                      , PresentGravityFlagsKHR
                                                       ) where
 
-import Data.Bits (Bits)
-import Data.Bits (FiniteBits)
-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.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.Kind (Type)
-import Vulkan.Core10.FundamentalTypes (Extent2D)
-import Vulkan.Core10.FundamentalTypes (Flags)
-import Vulkan.Extensions.VK_KHR_surface (PresentModeKHR)
-import Vulkan.Core10.Enums.StructureType (StructureType)
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_EXT))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SURFACE_PRESENT_MODE_EXT))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_EXT))
+import Vulkan.Extensions.VK_KHR_surface_maintenance1 (PresentGravityFlagBitsKHR)
+import Vulkan.Extensions.VK_KHR_surface_maintenance1 (PresentGravityFlagsKHR)
+import Vulkan.Extensions.VK_KHR_surface_maintenance1 (PresentScalingFlagBitsKHR)
+import Vulkan.Extensions.VK_KHR_surface_maintenance1 (PresentScalingFlagsKHR)
+import Vulkan.Extensions.VK_KHR_surface_maintenance1 (SurfacePresentModeCompatibilityKHR)
+import Vulkan.Extensions.VK_KHR_surface_maintenance1 (SurfacePresentModeKHR)
+import Vulkan.Extensions.VK_KHR_surface_maintenance1 (SurfacePresentScalingCapabilitiesKHR)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_KHR))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SURFACE_PRESENT_MODE_KHR))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_KHR))
+import Vulkan.Extensions.VK_KHR_surface_maintenance1 (PresentGravityFlagBitsKHR(..))
+import Vulkan.Extensions.VK_KHR_surface_maintenance1 (PresentGravityFlagsKHR)
 import Vulkan.Extensions.VK_KHR_surface (PresentModeKHR(..))
--- | VkSurfacePresentModeEXT - Structure describing present mode of a surface
---
--- = Description
---
--- If the 'SurfacePresentModeEXT' structure is included in the @pNext@
--- chain of
--- 'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.PhysicalDeviceSurfaceInfo2KHR',
--- the values returned in
--- 'Vulkan.Extensions.VK_KHR_surface.SurfaceCapabilitiesKHR'::@minImageCount@,
--- 'Vulkan.Extensions.VK_KHR_surface.SurfaceCapabilitiesKHR'::@maxImageCount@,
--- 'SurfacePresentScalingCapabilitiesEXT'::@minScaledImageExtent@, and
--- 'SurfacePresentScalingCapabilitiesEXT'::@maxScaledImageExtent@ are valid
--- only for the specified @presentMode@. If @presentMode@ is
--- 'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR'
--- or
--- 'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR',
--- the per-present mode image counts /must/ both be one. The per-present
--- mode image counts /may/ be less-than or greater-than the image counts
--- returned when 'SurfacePresentModeEXT' is not provided.
---
--- If
--- 'Vulkan.Extensions.VK_EXT_swapchain_maintenance1.SwapchainPresentModesCreateInfoEXT'
--- is provided to swapchain creation, the requirements for forward progress
--- may be less strict. For example, a FIFO swapchain might only require 2
--- images to guarantee forward progress, but a MAILBOX one might require 4.
--- Without the per-present image counts, such an implementation would have
--- to return 4 in
--- 'Vulkan.Extensions.VK_KHR_surface.SurfaceCapabilitiesKHR'::@minImageCount@,
--- which pessimizes FIFO. Conversely, an implementation may return a low
--- number for minImageCount, but internally bump the image count when
--- application queries
--- 'Vulkan.Extensions.VK_KHR_swapchain.getSwapchainImagesKHR', which can
--- surprise applications, and is not discoverable until swapchain creation.
--- Using 'SurfacePresentModeEXT' and
--- 'Vulkan.Extensions.VK_EXT_swapchain_maintenance1.SwapchainPresentModesCreateInfoEXT'
--- together effectively removes this problem.
---
--- 'Vulkan.Extensions.VK_EXT_swapchain_maintenance1.SwapchainPresentModesCreateInfoEXT'
--- is required for the specification to be backwards compatible with
--- applications that do not know about, or make use of this feature.
---
--- == Valid Usage (Implicit)
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_surface_maintenance1 VK_EXT_surface_maintenance1>,
--- 'Vulkan.Extensions.VK_KHR_surface.PresentModeKHR',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data SurfacePresentModeEXT = SurfacePresentModeEXT
-  { -- | @presentMode@ is the presentation mode the swapchain will use.
-    --
-    -- #VUID-VkSurfacePresentModeEXT-presentMode-07780# @presentMode@ /must/ be
-    -- a value reported by
-    -- 'Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfacePresentModesKHR'
-    -- for the specified surface
-    --
-    -- #VUID-VkSurfacePresentModeEXT-presentMode-parameter# @presentMode@
-    -- /must/ be a valid 'Vulkan.Extensions.VK_KHR_surface.PresentModeKHR'
-    -- value
-    presentMode :: PresentModeKHR }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (SurfacePresentModeEXT)
-#endif
-deriving instance Show SurfacePresentModeEXT
+import Vulkan.Extensions.VK_KHR_surface_maintenance1 (PresentScalingFlagBitsKHR(..))
+import Vulkan.Extensions.VK_KHR_surface_maintenance1 (PresentScalingFlagsKHR)
+import Vulkan.Extensions.VK_KHR_surface_maintenance1 (SurfacePresentModeCompatibilityKHR(..))
+import Vulkan.Extensions.VK_KHR_surface_maintenance1 (SurfacePresentModeKHR(..))
+import Vulkan.Extensions.VK_KHR_surface_maintenance1 (SurfacePresentScalingCapabilitiesKHR(..))
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_EXT"
+pattern STRUCTURE_TYPE_SURFACE_PRESENT_MODE_EXT = STRUCTURE_TYPE_SURFACE_PRESENT_MODE_KHR
 
-instance ToCStruct SurfacePresentModeEXT where
-  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p SurfacePresentModeEXT{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SURFACE_PRESENT_MODE_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr PresentModeKHR)) (presentMode)
-    f
-  cStructSize = 24
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SURFACE_PRESENT_MODE_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr PresentModeKHR)) (zero)
-    f
 
-instance FromCStruct SurfacePresentModeEXT where
-  peekCStruct p = do
-    presentMode <- peek @PresentModeKHR ((p `plusPtr` 16 :: Ptr PresentModeKHR))
-    pure $ SurfacePresentModeEXT
-             presentMode
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_EXT"
+pattern STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_EXT = STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_KHR
 
-instance Storable SurfacePresentModeEXT where
-  sizeOf ~_ = 24
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
 
-instance Zero SurfacePresentModeEXT where
-  zero = SurfacePresentModeEXT
-           zero
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_EXT"
+pattern STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_EXT = STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_KHR
 
 
--- | VkSurfacePresentScalingCapabilitiesEXT - Structure describing the
--- presentation scaling capabilities of the surface
---
--- = Description
---
--- Before creating a swapchain whose scaling mode /can/ be specified
--- through the use of
--- 'Vulkan.Extensions.VK_EXT_swapchain_maintenance1.SwapchainPresentScalingCreateInfoEXT',
--- obtain the set of supported scaling modes by including a
--- 'SurfacePresentModeEXT' structure in the @pNext@ chain of
--- 'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.PhysicalDeviceSurfaceInfo2KHR'
--- when calling
--- 'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.getPhysicalDeviceSurfaceCapabilities2KHR'.
--- The implementation /must/ return the same values in
--- 'SurfacePresentScalingCapabilitiesEXT' for any of the compatible present
--- modes as obtained through 'SurfacePresentModeCompatibilityEXT'.
---
--- == Valid Usage (Implicit)
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_surface_maintenance1 VK_EXT_surface_maintenance1>,
--- 'Vulkan.Core10.FundamentalTypes.Extent2D', 'PresentGravityFlagsEXT',
--- 'PresentScalingFlagsEXT',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data SurfacePresentScalingCapabilitiesEXT = SurfacePresentScalingCapabilitiesEXT
-  { -- | @supportedPresentScaling@ is a bitmask of 'PresentScalingFlagBitsEXT'
-    -- representing the scaling methods supported by the surface, or @0@ if
-    -- application-defined scaling is not supported.
-    supportedPresentScaling :: PresentScalingFlagsEXT
-  , -- | @supportedPresentGravityX@ is a bitmask of 'PresentGravityFlagBitsEXT'
-    -- representing the X-axis pixel gravity supported by the surface, or @0@
-    -- if Vulkan-defined pixel gravity is not supported for the X axis.
-    supportedPresentGravityX :: PresentGravityFlagsEXT
-  , -- | @supportedPresentGravityY@ is a bitmask of 'PresentGravityFlagBitsEXT'
-    -- representing the Y-axis pixel gravity supported by the surface, or @0@
-    -- if Vulkan-defined pixel gravity is not supported for the Y axis.
-    supportedPresentGravityY :: PresentGravityFlagsEXT
-  , -- | @minScaledImageExtent@ contains the smallest valid swapchain extent for
-    -- the surface on the specified device when one of the scaling methods
-    -- specified in @supportedPresentScaling@ is used, or the special value
-    -- (0xFFFFFFFF, 0xFFFFFFFF) indicating that the surface size will be
-    -- determined by the extent of a swapchain targeting the surface. The
-    -- @width@ and @height@ of the extent will each be smaller than or equal to
-    -- the corresponding @width@ and @height@ of
-    -- 'Vulkan.Extensions.VK_KHR_surface.SurfaceCapabilitiesKHR'::@minImageExtent@.
-    minScaledImageExtent :: Extent2D
-  , -- | @maxScaledImageExtent@ contains the largest valid swapchain extent for
-    -- the surface on the specified device when one of the scaling methods
-    -- specified in @supportedPresentScaling@ is used, or the special value
-    -- described above for @minScaledImageExtent@. The @width@ and @height@ of
-    -- the extent will each be greater than or equal to the corresponding
-    -- @width@ and @height@ of
-    -- 'Vulkan.Extensions.VK_KHR_surface.SurfaceCapabilitiesKHR'::@maxImageExtent@.
-    maxScaledImageExtent :: Extent2D
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (SurfacePresentScalingCapabilitiesEXT)
-#endif
-deriving instance Show SurfacePresentScalingCapabilitiesEXT
+-- No documentation found for TopLevel "VkPresentScalingFlagsEXT"
+type PresentScalingFlagsEXT = PresentScalingFlagsKHR
 
-instance ToCStruct SurfacePresentScalingCapabilitiesEXT where
-  withCStruct x f = allocaBytes 48 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p SurfacePresentScalingCapabilitiesEXT{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr PresentScalingFlagsEXT)) (supportedPresentScaling)
-    poke ((p `plusPtr` 20 :: Ptr PresentGravityFlagsEXT)) (supportedPresentGravityX)
-    poke ((p `plusPtr` 24 :: Ptr PresentGravityFlagsEXT)) (supportedPresentGravityY)
-    poke ((p `plusPtr` 28 :: Ptr Extent2D)) (minScaledImageExtent)
-    poke ((p `plusPtr` 36 :: Ptr Extent2D)) (maxScaledImageExtent)
-    f
-  cStructSize = 48
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    f
 
-instance FromCStruct SurfacePresentScalingCapabilitiesEXT where
-  peekCStruct p = do
-    supportedPresentScaling <- peek @PresentScalingFlagsEXT ((p `plusPtr` 16 :: Ptr PresentScalingFlagsEXT))
-    supportedPresentGravityX <- peek @PresentGravityFlagsEXT ((p `plusPtr` 20 :: Ptr PresentGravityFlagsEXT))
-    supportedPresentGravityY <- peek @PresentGravityFlagsEXT ((p `plusPtr` 24 :: Ptr PresentGravityFlagsEXT))
-    minScaledImageExtent <- peekCStruct @Extent2D ((p `plusPtr` 28 :: Ptr Extent2D))
-    maxScaledImageExtent <- peekCStruct @Extent2D ((p `plusPtr` 36 :: Ptr Extent2D))
-    pure $ SurfacePresentScalingCapabilitiesEXT
-             supportedPresentScaling
-             supportedPresentGravityX
-             supportedPresentGravityY
-             minScaledImageExtent
-             maxScaledImageExtent
+-- No documentation found for TopLevel "VkPresentGravityFlagsEXT"
+type PresentGravityFlagsEXT = PresentGravityFlagsKHR
 
-instance Storable SurfacePresentScalingCapabilitiesEXT where
-  sizeOf ~_ = 48
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
 
-instance Zero SurfacePresentScalingCapabilitiesEXT where
-  zero = SurfacePresentScalingCapabilitiesEXT
-           zero
-           zero
-           zero
-           zero
-           zero
+-- No documentation found for TopLevel "VkPresentScalingFlagBitsEXT"
+type PresentScalingFlagBitsEXT = PresentScalingFlagBitsKHR
 
 
--- | VkSurfacePresentModeCompatibilityEXT - Structure describing the subset
--- of compatible presentation modes for the purposes of switching without
--- swapchain recreation
---
--- = Description
---
--- If @pPresentModes@ is @NULL@, then the number of present modes that are
--- compatible with the one specified in 'SurfacePresentModeEXT' is returned
--- in @presentModeCount@. Otherwise, @presentModeCount@ /must/ point to a
--- variable set by the application to the number of elements in the
--- @pPresentModes@ array, and on return the variable is overwritten with
--- the number of values actually written to @pPresentModes@. If the value
--- of @presentModeCount@ is less than the number of compatible present
--- modes that are supported, at most @presentModeCount@ values will be
--- written to @pPresentModes@. The implementation /must/ include the
--- present mode passed to 'SurfacePresentModeEXT' in @pPresentModes@,
--- unless @presentModeCount@ is zero.
---
--- Before creating a swapchain whose present modes /can/ be modified
--- through the use of
--- 'Vulkan.Extensions.VK_EXT_swapchain_maintenance1.SwapchainPresentModesCreateInfoEXT',
--- obtain the set of present modes compatible with a given initial present
--- mode by including a 'SurfacePresentModeEXT' structure in the @pNext@
--- chain of
--- 'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.PhysicalDeviceSurfaceInfo2KHR'
--- when calling
--- 'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.getPhysicalDeviceSurfaceCapabilities2KHR'.
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkSurfacePresentModeCompatibilityEXT-sType-sType# @sType@
---     /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_EXT'
---
--- -   #VUID-VkSurfacePresentModeCompatibilityEXT-pPresentModes-parameter#
---     If @presentModeCount@ is not @0@, and @pPresentModes@ is not @NULL@,
---     @pPresentModes@ /must/ be a valid pointer to an array of
---     @presentModeCount@ 'Vulkan.Extensions.VK_KHR_surface.PresentModeKHR'
---     values
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_surface_maintenance1 VK_EXT_surface_maintenance1>,
--- 'Vulkan.Extensions.VK_KHR_surface.PresentModeKHR',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data SurfacePresentModeCompatibilityEXT = SurfacePresentModeCompatibilityEXT
-  { -- | @presentModeCount@ is an integer related to the number of present modes
-    -- available or queried, as described below.
-    presentModeCount :: Word32
-  , -- | @pPresentModes@ is a pointer to an array of
-    -- 'Vulkan.Extensions.VK_KHR_surface.PresentModeKHR' in which present modes
-    -- compatible with a given present mode are returned.
-    presentModes :: Ptr PresentModeKHR
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (SurfacePresentModeCompatibilityEXT)
-#endif
-deriving instance Show SurfacePresentModeCompatibilityEXT
+-- No documentation found for TopLevel "VkPresentGravityFlagBitsEXT"
+type PresentGravityFlagBitsEXT = PresentGravityFlagBitsKHR
 
-instance ToCStruct SurfacePresentModeCompatibilityEXT where
-  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p SurfacePresentModeCompatibilityEXT{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Word32)) (presentModeCount)
-    poke ((p `plusPtr` 24 :: Ptr (Ptr PresentModeKHR))) (presentModes)
-    f
-  cStructSize = 32
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    f
 
-instance FromCStruct SurfacePresentModeCompatibilityEXT where
-  peekCStruct p = do
-    presentModeCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
-    pPresentModes <- peek @(Ptr PresentModeKHR) ((p `plusPtr` 24 :: Ptr (Ptr PresentModeKHR)))
-    pure $ SurfacePresentModeCompatibilityEXT
-             presentModeCount pPresentModes
+-- No documentation found for TopLevel "VkSurfacePresentModeEXT"
+type SurfacePresentModeEXT = SurfacePresentModeKHR
 
-instance Storable SurfacePresentModeCompatibilityEXT where
-  sizeOf ~_ = 32
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
 
-instance Zero SurfacePresentModeCompatibilityEXT where
-  zero = SurfacePresentModeCompatibilityEXT
-           zero
-           zero
+-- No documentation found for TopLevel "VkSurfacePresentScalingCapabilitiesEXT"
+type SurfacePresentScalingCapabilitiesEXT = SurfacePresentScalingCapabilitiesKHR
 
 
-type PresentScalingFlagsEXT = PresentScalingFlagBitsEXT
-
--- | VkPresentScalingFlagBitsEXT - Bitmask specifying presentation scaling
--- methods
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_surface_maintenance1 VK_EXT_surface_maintenance1>,
--- 'PresentScalingFlagsEXT'
-newtype PresentScalingFlagBitsEXT = PresentScalingFlagBitsEXT Flags
-  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
-
--- | 'PRESENT_SCALING_ONE_TO_ONE_BIT_EXT' specifies that no scaling occurs,
--- and pixels in the swapchain image are mapped to one and only one pixel
--- in the surface. The mapping between pixels is defined by the chosen
--- presentation gravity.
-pattern PRESENT_SCALING_ONE_TO_ONE_BIT_EXT = PresentScalingFlagBitsEXT 0x00000001
-
--- | 'PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_EXT' specifies that the
--- swapchain image will be minified or magnified such that at least one of
--- the resulting width or height is equal to the corresponding surface
--- dimension, and the other resulting dimension is less than or equal to
--- the corresponding surface dimension, with the aspect ratio of the
--- resulting image being identical to that of the original swapchain image.
-pattern PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_EXT = PresentScalingFlagBitsEXT 0x00000002
-
--- | 'PRESENT_SCALING_STRETCH_BIT_EXT' specifies that the swapchain image
--- will be minified or magnified such that the resulting image dimensions
--- are equal to those of the surface.
-pattern PRESENT_SCALING_STRETCH_BIT_EXT = PresentScalingFlagBitsEXT 0x00000004
-
-conNamePresentScalingFlagBitsEXT :: String
-conNamePresentScalingFlagBitsEXT = "PresentScalingFlagBitsEXT"
-
-enumPrefixPresentScalingFlagBitsEXT :: String
-enumPrefixPresentScalingFlagBitsEXT = "PRESENT_SCALING_"
-
-showTablePresentScalingFlagBitsEXT :: [(PresentScalingFlagBitsEXT, String)]
-showTablePresentScalingFlagBitsEXT =
-  [
-    ( PRESENT_SCALING_ONE_TO_ONE_BIT_EXT
-    , "ONE_TO_ONE_BIT_EXT"
-    )
-  ,
-    ( PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_EXT
-    , "ASPECT_RATIO_STRETCH_BIT_EXT"
-    )
-  ,
-    ( PRESENT_SCALING_STRETCH_BIT_EXT
-    , "STRETCH_BIT_EXT"
-    )
-  ]
-
-instance Show PresentScalingFlagBitsEXT where
-  showsPrec =
-    enumShowsPrec
-      enumPrefixPresentScalingFlagBitsEXT
-      showTablePresentScalingFlagBitsEXT
-      conNamePresentScalingFlagBitsEXT
-      (\(PresentScalingFlagBitsEXT x) -> x)
-      (\x -> showString "0x" . showHex x)
-
-instance Read PresentScalingFlagBitsEXT where
-  readPrec =
-    enumReadPrec
-      enumPrefixPresentScalingFlagBitsEXT
-      showTablePresentScalingFlagBitsEXT
-      conNamePresentScalingFlagBitsEXT
-      PresentScalingFlagBitsEXT
-
-type PresentGravityFlagsEXT = PresentGravityFlagBitsEXT
-
--- | VkPresentGravityFlagBitsEXT - Bitmask specifying presentation pixel
--- gravity on either the x or y axis
---
--- = Description
---
--- If the value in
--- 'Vulkan.Extensions.VK_KHR_surface.SurfaceCapabilitiesKHR'::@currentTransform@
--- is not
--- 'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_IDENTITY_BIT_KHR',
--- it is implementation-defined whether the gravity configuration applies
--- to the presented image before or after transformation.
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_surface_maintenance1 VK_EXT_surface_maintenance1>,
--- 'PresentGravityFlagsEXT'
-newtype PresentGravityFlagBitsEXT = PresentGravityFlagBitsEXT Flags
-  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
-
--- | 'PRESENT_GRAVITY_MIN_BIT_EXT' means that the pixels will gravitate
--- towards the top or left side of the surface.
-pattern PRESENT_GRAVITY_MIN_BIT_EXT = PresentGravityFlagBitsEXT 0x00000001
-
--- | 'PRESENT_GRAVITY_MAX_BIT_EXT' means that the pixels will gravitate
--- towards the bottom or right side of the surface.
-pattern PRESENT_GRAVITY_MAX_BIT_EXT = PresentGravityFlagBitsEXT 0x00000002
-
--- | 'PRESENT_GRAVITY_CENTERED_BIT_EXT' means that the pixels will be
--- centered in the surface.
-pattern PRESENT_GRAVITY_CENTERED_BIT_EXT = PresentGravityFlagBitsEXT 0x00000004
-
-conNamePresentGravityFlagBitsEXT :: String
-conNamePresentGravityFlagBitsEXT = "PresentGravityFlagBitsEXT"
-
-enumPrefixPresentGravityFlagBitsEXT :: String
-enumPrefixPresentGravityFlagBitsEXT = "PRESENT_GRAVITY_"
-
-showTablePresentGravityFlagBitsEXT :: [(PresentGravityFlagBitsEXT, String)]
-showTablePresentGravityFlagBitsEXT =
-  [
-    ( PRESENT_GRAVITY_MIN_BIT_EXT
-    , "MIN_BIT_EXT"
-    )
-  ,
-    ( PRESENT_GRAVITY_MAX_BIT_EXT
-    , "MAX_BIT_EXT"
-    )
-  ,
-    ( PRESENT_GRAVITY_CENTERED_BIT_EXT
-    , "CENTERED_BIT_EXT"
-    )
-  ]
-
-instance Show PresentGravityFlagBitsEXT where
-  showsPrec =
-    enumShowsPrec
-      enumPrefixPresentGravityFlagBitsEXT
-      showTablePresentGravityFlagBitsEXT
-      conNamePresentGravityFlagBitsEXT
-      (\(PresentGravityFlagBitsEXT x) -> x)
-      (\x -> showString "0x" . showHex x)
+-- No documentation found for TopLevel "VkSurfacePresentModeCompatibilityEXT"
+type SurfacePresentModeCompatibilityEXT = SurfacePresentModeCompatibilityKHR
 
-instance Read PresentGravityFlagBitsEXT where
-  readPrec =
-    enumReadPrec
-      enumPrefixPresentGravityFlagBitsEXT
-      showTablePresentGravityFlagBitsEXT
-      conNamePresentGravityFlagBitsEXT
-      PresentGravityFlagBitsEXT
 
 type EXT_SURFACE_MAINTENANCE_1_SPEC_VERSION = 1
 
diff --git a/src/Vulkan/Extensions/VK_EXT_surface_maintenance1.hs-boot b/src/Vulkan/Extensions/VK_EXT_surface_maintenance1.hs-boot
deleted file mode 100644
--- a/src/Vulkan/Extensions/VK_EXT_surface_maintenance1.hs-boot
+++ /dev/null
@@ -1,165 +0,0 @@
-{-# language CPP #-}
--- | = Name
---
--- VK_EXT_surface_maintenance1 - instance extension
---
--- = VK_EXT_surface_maintenance1
---
--- [__Name String__]
---     @VK_EXT_surface_maintenance1@
---
--- [__Extension Type__]
---     Instance extension
---
--- [__Registered Extension Number__]
---     275
---
--- [__Revision__]
---     1
---
--- [__Ratification Status__]
---     Not ratified
---
--- [__Extension and Version Dependencies__]
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_surface VK_KHR_surface>
---     and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_surface_capabilities2 VK_KHR_get_surface_capabilities2>
---
--- [__Contact__]
---
---     -   Shahbaz Youssefi
---         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_surface_maintenance1] @syoussefi%0A*Here describe the issue or question you have about the VK_EXT_surface_maintenance1 extension* >
---
--- [__Extension Proposal__]
---     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_EXT_surface_maintenance1.adoc VK_EXT_surface_maintenance1>
---
--- == Other Extension Metadata
---
--- [__Last Modified Date__]
---     2022-11-09
---
--- [__Contributors__]
---
---     -   Jeff Juliano, NVIDIA
---
---     -   Lionel Landwerlin, Intel
---
---     -   Shahbaz Youssefi, Google
---
---     -   Chris Forbes, Google
---
---     -   Ian Elliott, Google
---
---     -   Hans-Kristian Arntzen, Valve
---
---     -   Daniel Stone, Collabora
---
--- == Description
---
--- @VK_EXT_surface_maintenance1@ adds a collection of window system
--- integration features that were intentionally left out or overlooked in
--- the original @VK_KHR_surface@ extension.
---
--- The new features are as follows:
---
--- -   Allow querying number of min\/max images from a surface for a
---     particular presentation mode.
---
--- -   Allow querying a surface’s scaled presentation capabilities.
---
--- -   Allow querying a surface for the set of presentation modes which can
---     be easily switched between without requiring swapchain recreation.
---
--- == New Structures
---
--- -   Extending
---     'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.PhysicalDeviceSurfaceInfo2KHR':
---
---     -   'SurfacePresentModeEXT'
---
--- -   Extending
---     'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.SurfaceCapabilities2KHR':
---
---     -   'SurfacePresentModeCompatibilityEXT'
---
---     -   'SurfacePresentScalingCapabilitiesEXT'
---
--- == New Enums
---
--- -   'PresentGravityFlagBitsEXT'
---
--- -   'PresentScalingFlagBitsEXT'
---
--- == New Bitmasks
---
--- -   'PresentGravityFlagsEXT'
---
--- -   'PresentScalingFlagsEXT'
---
--- == New Enum Constants
---
--- -   'EXT_SURFACE_MAINTENANCE_1_EXTENSION_NAME'
---
--- -   'EXT_SURFACE_MAINTENANCE_1_SPEC_VERSION'
---
--- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_EXT'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SURFACE_PRESENT_MODE_EXT'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_EXT'
---
--- == Version History
---
--- -   Revision 0, 2019-02-27 (Lionel Landwerlin)
---
---     -   Internal revisions
---
--- -   Revision 1, 2022-11-09 (Shahbaz Youssefi)
---
---     -   Add functionality and complete spec
---
--- == See Also
---
--- No cross-references are available
---
--- == Document Notes
---
--- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_surface_maintenance1 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_surface_maintenance1  ( SurfacePresentModeCompatibilityEXT
-                                                      , SurfacePresentModeEXT
-                                                      , SurfacePresentScalingCapabilitiesEXT
-                                                      ) where
-
-import Vulkan.CStruct (FromCStruct)
-import Vulkan.CStruct (ToCStruct)
-import Data.Kind (Type)
-
-data SurfacePresentModeCompatibilityEXT
-
-instance ToCStruct SurfacePresentModeCompatibilityEXT
-instance Show SurfacePresentModeCompatibilityEXT
-
-instance FromCStruct SurfacePresentModeCompatibilityEXT
-
-
-data SurfacePresentModeEXT
-
-instance ToCStruct SurfacePresentModeEXT
-instance Show SurfacePresentModeEXT
-
-instance FromCStruct SurfacePresentModeEXT
-
-
-data SurfacePresentScalingCapabilitiesEXT
-
-instance ToCStruct SurfacePresentScalingCapabilitiesEXT
-instance Show SurfacePresentScalingCapabilitiesEXT
-
-instance FromCStruct SurfacePresentScalingCapabilitiesEXT
-
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
@@ -146,7 +146,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_swapchain_colorspace Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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_swapchain_maintenance1.hs b/src/Vulkan/Extensions/VK_EXT_swapchain_maintenance1.hs
--- a/src/Vulkan/Extensions/VK_EXT_swapchain_maintenance1.hs
+++ b/src/Vulkan/Extensions/VK_EXT_swapchain_maintenance1.hs
@@ -18,7 +18,7 @@
 --     1
 --
 -- [__Ratification Status__]
---     Not ratified
+--     Ratified
 --
 -- [__Extension and Version Dependencies__]
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_swapchain VK_KHR_swapchain>
@@ -31,6 +31,12 @@
 --         
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
 --
+-- [__Deprecation State__]
+--
+--     -   /Promoted/ to
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_swapchain_maintenance1 VK_KHR_swapchain_maintenance1>
+--         extension
+--
 -- [__Contact__]
 --
 --     -   Shahbaz Youssefi
@@ -42,10 +48,16 @@
 -- == Other Extension Metadata
 --
 -- [__Last Modified Date__]
---     2022-10-28
+--     2022-12-16
 --
+-- [__Interactions and External Dependencies__]
+--
+--     -   Promoted to @VK_KHR_swapchain_maintenance1@
+--
 -- [__Contributors__]
 --
+--     -   James Jones, NVIDIA
+--
 --     -   Jeff Juliano, NVIDIA
 --
 --     -   Shahbaz Youssefi, Google
@@ -106,6 +118,13 @@
 -- -   Allow applications to release previously acquired images without
 --     presenting them.
 --
+-- == Promotion to @VK_KHR_swapchain_maintenance1@
+--
+-- All functionality in this extension is included in
+-- @VK_KHR_swapchain_maintenance1@, with the suffix changed to KHR. The
+-- original type, enum, and command names are still available as aliases of
+-- the KHR functionality.
+--
 -- == New Commands
 --
 -- -   'releaseSwapchainImagesEXT'
@@ -141,26 +160,26 @@
 --
 -- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT'
+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT'
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_EXT'
+--     -   'STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_EXT'
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT'
+--     -   'STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT'
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT'
+--     -   'STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT'
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_EXT'
+--     -   'STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_EXT'
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT'
+--     -   'STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT'
 --
 -- -   Extending
 --     'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateFlagBitsKHR':
 --
---     -   'Vulkan.Extensions.VK_KHR_swapchain.SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_EXT'
+--     -   'SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_EXT'
 --
 -- == Version History
 --
--- -   Revision 0, 2019-05-28
+-- -   Revision 0, 2019-05-28 (James Jones)
 --
 --     -   Initial revisions
 --
@@ -175,886 +194,130 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_swapchain_maintenance1 Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_swapchain_maintenance1 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_swapchain_maintenance1  ( releaseSwapchainImagesEXT
-                                                        , PhysicalDeviceSwapchainMaintenance1FeaturesEXT(..)
-                                                        , SwapchainPresentFenceInfoEXT(..)
-                                                        , SwapchainPresentModesCreateInfoEXT(..)
-                                                        , SwapchainPresentModeInfoEXT(..)
-                                                        , SwapchainPresentScalingCreateInfoEXT(..)
-                                                        , ReleaseSwapchainImagesInfoEXT(..)
+module Vulkan.Extensions.VK_EXT_swapchain_maintenance1  ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT
+                                                        , pattern STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT
+                                                        , pattern STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT
+                                                        , pattern STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_EXT
+                                                        , pattern STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT
+                                                        , pattern STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_EXT
+                                                        , pattern SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_EXT
+                                                        , releaseSwapchainImagesEXT
+                                                        , PhysicalDeviceSwapchainMaintenance1FeaturesEXT
+                                                        , SwapchainPresentFenceInfoEXT
+                                                        , SwapchainPresentModesCreateInfoEXT
+                                                        , SwapchainPresentModeInfoEXT
+                                                        , SwapchainPresentScalingCreateInfoEXT
+                                                        , ReleaseSwapchainImagesInfoEXT
                                                         , EXT_SWAPCHAIN_MAINTENANCE_1_SPEC_VERSION
                                                         , pattern EXT_SWAPCHAIN_MAINTENANCE_1_SPEC_VERSION
                                                         , EXT_SWAPCHAIN_MAINTENANCE_1_EXTENSION_NAME
                                                         , pattern EXT_SWAPCHAIN_MAINTENANCE_1_EXTENSION_NAME
                                                         , SwapchainKHR(..)
+                                                        , PhysicalDeviceSwapchainMaintenance1FeaturesKHR(..)
+                                                        , SwapchainPresentFenceInfoKHR(..)
+                                                        , SwapchainPresentModesCreateInfoKHR(..)
+                                                        , SwapchainPresentModeInfoKHR(..)
+                                                        , SwapchainPresentScalingCreateInfoKHR(..)
+                                                        , ReleaseSwapchainImagesInfoKHR(..)
+                                                        , releaseSwapchainImagesKHR
                                                         , PresentModeKHR(..)
                                                         , SwapchainCreateFlagBitsKHR(..)
                                                         , SwapchainCreateFlagsKHR
-                                                        , PresentScalingFlagBitsEXT(..)
-                                                        , PresentScalingFlagsEXT
-                                                        , PresentGravityFlagBitsEXT(..)
-                                                        , PresentGravityFlagsEXT
+                                                        , PresentScalingFlagBitsKHR(..)
+                                                        , PresentScalingFlagsKHR
+                                                        , PresentGravityFlagBitsKHR(..)
+                                                        , PresentGravityFlagsKHR
                                                         ) where
 
-import Vulkan.Internal.Utils (traceAroundEvent)
-import Control.Monad (unless)
-import Control.Monad.IO.Class (liftIO)
-import Foreign.Marshal.Alloc (allocaBytes)
-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 Data.Vector (generateM)
-import qualified Data.Vector (imapM_)
-import qualified Data.Vector (length)
-import Vulkan.CStruct (FromCStruct)
-import Vulkan.CStruct (FromCStruct(..))
-import Vulkan.CStruct (ToCStruct)
-import Vulkan.CStruct (ToCStruct(..))
-import Vulkan.Zero (Zero(..))
-import Control.Monad.IO.Class (MonadIO)
 import Data.String (IsString)
-import Data.Typeable (Typeable)
-import Foreign.Storable (Storable)
-import Foreign.Storable (Storable(peek))
-import Foreign.Storable (Storable(poke))
-import qualified Foreign.Storable (Storable(..))
-import GHC.Generics (Generic)
-import GHC.IO.Exception (IOErrorType(..))
-import GHC.IO.Exception (IOException(..))
-import Foreign.Ptr (FunPtr)
-import Foreign.Ptr (Ptr)
-import Data.Word (Word32)
-import Data.Kind (Type)
-import Control.Monad.Trans.Cont (ContT(..))
-import Data.Vector (Vector)
-import Vulkan.CStruct.Utils (advancePtrBytes)
-import Vulkan.Core10.FundamentalTypes (bool32ToBool)
-import Vulkan.Core10.FundamentalTypes (boolToBool32)
-import Vulkan.NamedType ((:::))
-import Vulkan.Core10.FundamentalTypes (Bool32)
-import Vulkan.Core10.Handles (Device)
-import Vulkan.Core10.Handles (Device(..))
-import Vulkan.Core10.Handles (Device(Device))
-import Vulkan.Dynamic (DeviceCmds(pVkReleaseSwapchainImagesEXT))
-import Vulkan.Core10.Handles (Device_T)
-import Vulkan.Core10.Handles (Fence)
-import Vulkan.Extensions.VK_EXT_surface_maintenance1 (PresentGravityFlagsEXT)
-import Vulkan.Extensions.VK_KHR_surface (PresentModeKHR)
-import Vulkan.Extensions.VK_EXT_surface_maintenance1 (PresentScalingFlagsEXT)
-import Vulkan.Core10.Enums.Result (Result)
-import Vulkan.Core10.Enums.Result (Result(..))
-import Vulkan.Core10.Enums.StructureType (StructureType)
-import Vulkan.Extensions.Handles (SwapchainKHR)
-import Vulkan.Exception (VulkanException(..))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_EXT))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_EXT))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT))
-import Vulkan.Core10.Enums.Result (Result(SUCCESS))
-import Vulkan.Extensions.VK_EXT_surface_maintenance1 (PresentGravityFlagBitsEXT(..))
-import Vulkan.Extensions.VK_EXT_surface_maintenance1 (PresentGravityFlagsEXT)
+import Vulkan.Extensions.VK_KHR_swapchain_maintenance1 (releaseSwapchainImagesKHR)
+import Vulkan.Extensions.VK_KHR_swapchain_maintenance1 (PhysicalDeviceSwapchainMaintenance1FeaturesKHR)
+import Vulkan.Extensions.VK_KHR_swapchain_maintenance1 (ReleaseSwapchainImagesInfoKHR)
+import Vulkan.Extensions.VK_KHR_swapchain_maintenance1 (SwapchainPresentFenceInfoKHR)
+import Vulkan.Extensions.VK_KHR_swapchain_maintenance1 (SwapchainPresentModeInfoKHR)
+import Vulkan.Extensions.VK_KHR_swapchain_maintenance1 (SwapchainPresentModesCreateInfoKHR)
+import Vulkan.Extensions.VK_KHR_swapchain_maintenance1 (SwapchainPresentScalingCreateInfoKHR)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_KHR))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_KHR))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_KHR))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_KHR))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_KHR))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_KHR))
+import Vulkan.Extensions.VK_KHR_swapchain (SwapchainCreateFlagsKHR)
+import Vulkan.Extensions.VK_KHR_swapchain (SwapchainCreateFlagBitsKHR(SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_KHR))
+import Vulkan.Extensions.VK_KHR_swapchain_maintenance1 (releaseSwapchainImagesKHR)
+import Vulkan.Extensions.VK_KHR_swapchain_maintenance1 (PhysicalDeviceSwapchainMaintenance1FeaturesKHR(..))
+import Vulkan.Extensions.VK_KHR_surface_maintenance1 (PresentGravityFlagBitsKHR(..))
+import Vulkan.Extensions.VK_KHR_surface_maintenance1 (PresentGravityFlagsKHR)
 import Vulkan.Extensions.VK_KHR_surface (PresentModeKHR(..))
-import Vulkan.Extensions.VK_EXT_surface_maintenance1 (PresentScalingFlagBitsEXT(..))
-import Vulkan.Extensions.VK_EXT_surface_maintenance1 (PresentScalingFlagsEXT)
+import Vulkan.Extensions.VK_KHR_surface_maintenance1 (PresentScalingFlagBitsKHR(..))
+import Vulkan.Extensions.VK_KHR_surface_maintenance1 (PresentScalingFlagsKHR)
+import Vulkan.Extensions.VK_KHR_swapchain_maintenance1 (ReleaseSwapchainImagesInfoKHR(..))
 import Vulkan.Extensions.VK_KHR_swapchain (SwapchainCreateFlagBitsKHR(..))
 import Vulkan.Extensions.VK_KHR_swapchain (SwapchainCreateFlagsKHR)
 import Vulkan.Extensions.Handles (SwapchainKHR(..))
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkReleaseSwapchainImagesEXT
-  :: FunPtr (Ptr Device_T -> Ptr ReleaseSwapchainImagesInfoEXT -> IO Result) -> Ptr Device_T -> Ptr ReleaseSwapchainImagesInfoEXT -> IO Result
+import Vulkan.Extensions.VK_KHR_swapchain_maintenance1 (SwapchainPresentFenceInfoKHR(..))
+import Vulkan.Extensions.VK_KHR_swapchain_maintenance1 (SwapchainPresentModeInfoKHR(..))
+import Vulkan.Extensions.VK_KHR_swapchain_maintenance1 (SwapchainPresentModesCreateInfoKHR(..))
+import Vulkan.Extensions.VK_KHR_swapchain_maintenance1 (SwapchainPresentScalingCreateInfoKHR(..))
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT = STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_KHR
 
--- | vkReleaseSwapchainImagesEXT - Release previously acquired but unused
--- images
---
--- = Description
---
--- Only images that are not in use by the device /can/ be released.
---
--- Releasing images is a read-only operation that will not affect the
--- content of the released images. Upon reacquiring the image, the image
--- contents and its layout will be the same as they were prior to releasing
--- it. However, if a mechanism other than Vulkan is used to modify the
--- platform window associated with the swapchain, the content of all
--- presentable images in the swapchain becomes undefined.
---
--- This functionality is useful during swapchain recreation, where acquired
--- images from the old swapchain can be released instead of presented.
---
--- == Valid Usage
---
--- -   #VUID-vkReleaseSwapchainImagesEXT-swapchainMaintenance1-10159#
---     Feature
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-swapchainMaintenance1 swapchainMaintenance1>
---     /must/ be enabled
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkReleaseSwapchainImagesEXT-device-parameter# @device@ /must/
---     be a valid 'Vulkan.Core10.Handles.Device' handle
---
--- -   #VUID-vkReleaseSwapchainImagesEXT-pReleaseInfo-parameter#
---     @pReleaseInfo@ /must/ be a valid pointer to a valid
---     'ReleaseSwapchainImagesInfoEXT' structure
---
--- == 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_SURFACE_LOST_KHR'
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_swapchain_maintenance1 VK_EXT_swapchain_maintenance1>,
--- 'Vulkan.Core10.Handles.Device', 'ReleaseSwapchainImagesInfoEXT'
-releaseSwapchainImagesEXT :: forall io
-                           . (MonadIO io)
-                          => -- | @device@ is the device associated with
-                             -- 'ReleaseSwapchainImagesInfoEXT'::@swapchain@.
-                             Device
-                          -> -- | @pReleaseInfo@ is a pointer to a 'ReleaseSwapchainImagesInfoEXT'
-                             -- structure containing parameters of the release.
-                             ("releaseInfo" ::: ReleaseSwapchainImagesInfoEXT)
-                          -> io ()
-releaseSwapchainImagesEXT device releaseInfo = liftIO . evalContT $ do
-  let vkReleaseSwapchainImagesEXTPtr = pVkReleaseSwapchainImagesEXT (case device of Device{deviceCmds} -> deviceCmds)
-  lift $ unless (vkReleaseSwapchainImagesEXTPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkReleaseSwapchainImagesEXT is null" Nothing Nothing
-  let vkReleaseSwapchainImagesEXT' = mkVkReleaseSwapchainImagesEXT vkReleaseSwapchainImagesEXTPtr
-  pReleaseInfo <- ContT $ withCStruct (releaseInfo)
-  r <- lift $ traceAroundEvent "vkReleaseSwapchainImagesEXT" (vkReleaseSwapchainImagesEXT'
-                                                                (deviceHandle (device))
-                                                                pReleaseInfo)
-  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
 
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT"
+pattern STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT = STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_KHR
 
--- | VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT - Structure describing
--- whether implementation supports swapchain maintenance1 functionality
---
--- = Members
---
--- This structure describes the following feature:
---
--- = Description
---
--- If the 'PhysicalDeviceSwapchainMaintenance1FeaturesEXT' 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. 'PhysicalDeviceSwapchainMaintenance1FeaturesEXT' /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_swapchain_maintenance1 VK_EXT_swapchain_maintenance1>,
--- 'Vulkan.Core10.FundamentalTypes.Bool32',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PhysicalDeviceSwapchainMaintenance1FeaturesEXT = PhysicalDeviceSwapchainMaintenance1FeaturesEXT
-  { -- | #features-swapchainMaintenance1# @swapchainMaintenance1@ indicates that
-    -- the implementation supports the following:
-    --
-    -- -   'SwapchainPresentFenceInfoEXT', specifying a fence that is signaled
-    --     when the resources associated with a present operation /can/ be
-    --     safely destroyed.
-    --
-    -- -   'SwapchainPresentModesCreateInfoEXT' and
-    --     'SwapchainPresentModeInfoEXT', allowing the swapchain to switch
-    --     present modes without a need for recreation.
-    --
-    -- -   'SwapchainPresentScalingCreateInfoEXT', specifying the scaling
-    --     behavior of the swapchain in presence of window resizing.
-    --
-    -- -   The
-    --     'Vulkan.Extensions.VK_KHR_swapchain.SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_EXT'
-    --     flag, allowing the implementation to defer the allocation of
-    --     swapchain image memory until first acquisition.
-    --
-    -- -   'releaseSwapchainImagesEXT', allowing acquired swapchain images to
-    --     be released without presenting them.
-    swapchainMaintenance1 :: Bool }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PhysicalDeviceSwapchainMaintenance1FeaturesEXT)
-#endif
-deriving instance Show PhysicalDeviceSwapchainMaintenance1FeaturesEXT
 
-instance ToCStruct PhysicalDeviceSwapchainMaintenance1FeaturesEXT where
-  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PhysicalDeviceSwapchainMaintenance1FeaturesEXT{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (swapchainMaintenance1))
-    f
-  cStructSize = 24
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
-    f
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT"
+pattern STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT = STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_KHR
 
-instance FromCStruct PhysicalDeviceSwapchainMaintenance1FeaturesEXT where
-  peekCStruct p = do
-    swapchainMaintenance1 <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
-    pure $ PhysicalDeviceSwapchainMaintenance1FeaturesEXT
-             (bool32ToBool swapchainMaintenance1)
 
-instance Storable PhysicalDeviceSwapchainMaintenance1FeaturesEXT where
-  sizeOf ~_ = 24
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_EXT"
+pattern STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_EXT = STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_KHR
 
-instance Zero PhysicalDeviceSwapchainMaintenance1FeaturesEXT where
-  zero = PhysicalDeviceSwapchainMaintenance1FeaturesEXT
-           zero
 
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT"
+pattern STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT = STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_KHR
 
--- | VkSwapchainPresentFenceInfoEXT - Fences associated with a
--- vkQueuePresentKHR operation
---
--- = Description
---
--- The set of /queue operations/ defined by queuing an image for
--- presentation, as well as operations performed by the presentation engine
--- access the payloads of objects associated with the presentation
--- operation. The associated objects include:
---
--- -   The swapchain image, its implicitly bound memory, and any other
---     resources bound to that memory.
---
--- -   The wait semaphores specified when queuing the image for
---     presentation.
---
--- The application /can/ provide a fence that the implementation will
--- signal when all such queue operations have completed and the
--- presentation engine has taken a reference to the payload of any objects
--- it accesses as part of the present operation. For all binary wait
--- semaphores imported by the presentation engine using the equivalent of
--- reference transference, as described in
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-semaphores-importing Importing Semaphore Payloads>,
--- this fence /must/ not signal until all such semaphore payloads have been
--- reset by the presentation engine.
---
--- The application /can/ destroy the wait semaphores associated with a
--- given presentation operation when at least one of the associated fences
--- is signaled, and /can/ destroy the swapchain when the fences associated
--- with all past presentation requests referring to that swapchain have
--- signaled.
---
--- Fences associated with presentations to the same swapchain on the same
--- 'Vulkan.Core10.Handles.Queue' /must/ be signaled in the same order as
--- the present operations.
---
--- To specify a fence for each swapchain in a present operation, include
--- the 'SwapchainPresentFenceInfoEXT' structure in the @pNext@ chain of the
--- 'Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR' structure.
---
--- == Valid Usage
---
--- -   #VUID-VkSwapchainPresentFenceInfoEXT-swapchainCount-07757#
---     @swapchainCount@ /must/ be equal to
---     'Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR'::@swapchainCount@
---
--- -   #VUID-VkSwapchainPresentFenceInfoEXT-pFences-07758# Each element of
---     @pFences@ that is not 'Vulkan.Core10.APIConstants.NULL_HANDLE'
---     /must/ be unsignaled
---
--- -   #VUID-VkSwapchainPresentFenceInfoEXT-pFences-07759# Each element of
---     @pFences@ that is not 'Vulkan.Core10.APIConstants.NULL_HANDLE'
---     /must/ not be associated with any other queue command that has not
---     yet completed execution on that queue
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkSwapchainPresentFenceInfoEXT-sType-sType# @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT'
---
--- -   #VUID-VkSwapchainPresentFenceInfoEXT-pFences-parameter# @pFences@
---     /must/ be a valid pointer to an array of @swapchainCount@ valid or
---     'Vulkan.Core10.APIConstants.NULL_HANDLE'
---     'Vulkan.Core10.Handles.Fence' handles
---
--- -   #VUID-VkSwapchainPresentFenceInfoEXT-swapchainCount-arraylength#
---     @swapchainCount@ /must/ be greater than @0@
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_swapchain_maintenance1 VK_EXT_swapchain_maintenance1>,
--- 'Vulkan.Core10.Handles.Fence',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data SwapchainPresentFenceInfoEXT = SwapchainPresentFenceInfoEXT
-  { -- | @pFences@ is a list of fences with @swapchainCount@ entries. Each entry
-    -- /must/ be 'Vulkan.Core10.APIConstants.NULL_HANDLE' or the handle of a
-    -- fence to signal when the relevant operations on the associated swapchain
-    -- have completed.
-    fences :: Vector Fence }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (SwapchainPresentFenceInfoEXT)
-#endif
-deriving instance Show SwapchainPresentFenceInfoEXT
 
-instance ToCStruct SwapchainPresentFenceInfoEXT where
-  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p SwapchainPresentFenceInfoEXT{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (fences)) :: Word32))
-    pPFences' <- ContT $ allocaBytes @Fence ((Data.Vector.length (fences)) * 8)
-    lift $ Data.Vector.imapM_ (\i e -> poke (pPFences' `plusPtr` (8 * (i)) :: Ptr Fence) (e)) (fences)
-    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Fence))) (pPFences')
-    lift $ f
-  cStructSize = 32
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    f
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_EXT"
+pattern STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_EXT = STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_KHR
 
-instance FromCStruct SwapchainPresentFenceInfoEXT where
-  peekCStruct p = do
-    swapchainCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
-    pFences <- peek @(Ptr Fence) ((p `plusPtr` 24 :: Ptr (Ptr Fence)))
-    pFences' <- generateM (fromIntegral swapchainCount) (\i -> peek @Fence ((pFences `advancePtrBytes` (8 * (i)) :: Ptr Fence)))
-    pure $ SwapchainPresentFenceInfoEXT
-             pFences'
 
-instance Zero SwapchainPresentFenceInfoEXT where
-  zero = SwapchainPresentFenceInfoEXT
-           mempty
+-- No documentation found for TopLevel "VK_SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_EXT"
+pattern SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_EXT = SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_KHR
 
 
--- | VkSwapchainPresentModesCreateInfoEXT - All presentation modes usable by
--- the swapchain
---
--- == Valid Usage
---
--- -   #VUID-VkSwapchainPresentModesCreateInfoEXT-None-07762# Each entry in
---     pPresentModes /must/ be one of the
---     'Vulkan.Extensions.VK_KHR_surface.PresentModeKHR' values returned by
---     'Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfacePresentModesKHR'
---     for the surface
---
--- -   #VUID-VkSwapchainPresentModesCreateInfoEXT-presentModeFifoLatestReady-10160#
---     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-presentModeFifoLatestReady presentModeFifoLatestReady>
---     feature is not enabled, pPresentModes /must/ not contain
---     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_FIFO_LATEST_READY_EXT'
---
--- -   #VUID-VkSwapchainPresentModesCreateInfoEXT-pPresentModes-07763# The
---     entries in pPresentModes /must/ be a subset of the present modes
---     returned in
---     'Vulkan.Extensions.VK_EXT_surface_maintenance1.SurfacePresentModeCompatibilityEXT'::@pPresentModes@,
---     given
---     'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR'::@presentMode@
---     in
---     'Vulkan.Extensions.VK_EXT_surface_maintenance1.SurfacePresentModeEXT'
---
--- -   #VUID-VkSwapchainPresentModesCreateInfoEXT-presentMode-07764#
---     'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR'::@presentMode@
---     /must/ be included in @pPresentModes@
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkSwapchainPresentModesCreateInfoEXT-sType-sType# @sType@
---     /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT'
---
--- -   #VUID-VkSwapchainPresentModesCreateInfoEXT-pPresentModes-parameter#
---     @pPresentModes@ /must/ be a valid pointer to an array of
---     @presentModeCount@ valid
---     'Vulkan.Extensions.VK_KHR_surface.PresentModeKHR' values
---
--- -   #VUID-VkSwapchainPresentModesCreateInfoEXT-presentModeCount-arraylength#
---     @presentModeCount@ /must/ be greater than @0@
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_swapchain_maintenance1 VK_EXT_swapchain_maintenance1>,
--- 'Vulkan.Extensions.VK_KHR_surface.PresentModeKHR',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data SwapchainPresentModesCreateInfoEXT = SwapchainPresentModesCreateInfoEXT
-  { -- | @pPresentModes@ is a list of presentation modes with @presentModeCount@
-    -- entries
-    presentModes :: Vector PresentModeKHR }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (SwapchainPresentModesCreateInfoEXT)
-#endif
-deriving instance Show SwapchainPresentModesCreateInfoEXT
+-- No documentation found for TopLevel "vkReleaseSwapchainImagesEXT"
+releaseSwapchainImagesEXT = releaseSwapchainImagesKHR
 
-instance ToCStruct SwapchainPresentModesCreateInfoEXT where
-  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p SwapchainPresentModesCreateInfoEXT{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (presentModes)) :: Word32))
-    pPPresentModes' <- ContT $ allocaBytes @PresentModeKHR ((Data.Vector.length (presentModes)) * 4)
-    lift $ Data.Vector.imapM_ (\i e -> poke (pPPresentModes' `plusPtr` (4 * (i)) :: Ptr PresentModeKHR) (e)) (presentModes)
-    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr PresentModeKHR))) (pPPresentModes')
-    lift $ f
-  cStructSize = 32
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    f
 
-instance FromCStruct SwapchainPresentModesCreateInfoEXT where
-  peekCStruct p = do
-    presentModeCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
-    pPresentModes <- peek @(Ptr PresentModeKHR) ((p `plusPtr` 24 :: Ptr (Ptr PresentModeKHR)))
-    pPresentModes' <- generateM (fromIntegral presentModeCount) (\i -> peek @PresentModeKHR ((pPresentModes `advancePtrBytes` (4 * (i)) :: Ptr PresentModeKHR)))
-    pure $ SwapchainPresentModesCreateInfoEXT
-             pPresentModes'
+-- No documentation found for TopLevel "VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT"
+type PhysicalDeviceSwapchainMaintenance1FeaturesEXT = PhysicalDeviceSwapchainMaintenance1FeaturesKHR
 
-instance Zero SwapchainPresentModesCreateInfoEXT where
-  zero = SwapchainPresentModesCreateInfoEXT
-           mempty
 
+-- No documentation found for TopLevel "VkSwapchainPresentFenceInfoEXT"
+type SwapchainPresentFenceInfoEXT = SwapchainPresentFenceInfoKHR
 
--- | VkSwapchainPresentModeInfoEXT - Presentation modes for a
--- vkQueuePresentKHR operation
---
--- = Description
---
--- If the @pNext@ chain of
--- 'Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR' includes a
--- 'SwapchainPresentModeInfoEXT' structure, then that structure defines the
--- presentation modes used for the current and subsequent presentation
--- operations.
---
--- When the application changes present modes with
--- 'SwapchainPresentModeInfoEXT', images that have already been queued for
--- presentation will continue to be presented according to the previous
--- present mode. The current image being queued for presentation and
--- subsequent images will be presented according to the new present mode.
--- The behavior during the transition between the two modes is defined as
--- follows.
---
--- -   Transition from
---     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR'
---     to
---     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR':
---     the presentation engine updates the shared presentable image
---     according to the behavior of
---     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR'.
---
--- -   Transition from
---     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR'
---     to
---     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR':
---     the presentation engine /may/ update the shared presentable image or
---     defer that to its regular refresh cycle, according to the behavior
---     of
---     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR'.
---
--- -   Transition between
---     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_FIFO_KHR' and
---     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_FIFO_RELAXED_KHR':
---     Images continue to be appended to the same FIFO queue, and the
---     behavior with respect to waiting for vertical blanking period will
---     follow the new mode for current and subsequent images.
---
--- -   Transition from
---     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_IMMEDIATE_KHR' to
---     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_FIFO_KHR' or
---     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_FIFO_RELAXED_KHR' or
---     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_FIFO_LATEST_READY_EXT'
---     : As all prior present requests in the
---     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_IMMEDIATE_KHR' mode
---     are applied immediately, there are no outstanding present operations
---     in this mode, and current and subsequent images are appended to the
---     FIFO queue and presented according to the new mode.
---
--- -   Transition from
---     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_MAILBOX_KHR' to
---     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_FIFO_KHR' or
---     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_FIFO_RELAXED_KHR' or
---     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_FIFO_LATEST_READY_EXT'
---     : Presentation in FIFO modes require waiting for the next vertical
---     blanking period, with
---     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_MAILBOX_KHR' allowing
---     the pending present operation to be replaced by a new one. In this
---     case, the current present operation will replace the pending present
---     operation and is applied according to the new mode.
---
--- -   Transition from
---     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_FIFO_KHR' or
---     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_FIFO_RELAXED_KHR' or
---     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_FIFO_LATEST_READY_EXT'
---     to 'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_IMMEDIATE_KHR' or
---     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_MAILBOX_KHR': If the
---     FIFO queue is empty, presentation is done according to the behavior
---     of the new mode. If there are present operations in the FIFO queue,
---     once the last present operation is performed based on the respective
---     vertical blanking period, the current and subsequent updates are
---     applied according to the new mode.
---
--- -   Transition between
---     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_FIFO_KHR' or
---     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_FIFO_RELAXED_KHR',
---     and
---     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_FIFO_LATEST_READY_EXT':
---     Images continue to be appended to the same FIFO queue, and the
---     behavior with respect to waiting for vertical blanking period and
---     dequeuing requests will follow the new mode for current and
---     subsequent images.
---
--- -   The behavior during transition between any other present modes, if
---     possible, is implementation defined.
---
--- == Valid Usage
---
--- -   #VUID-VkSwapchainPresentModeInfoEXT-swapchainCount-07760#
---     @swapchainCount@ /must/ be equal to
---     'Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR'::@swapchainCount@
---
--- -   #VUID-VkSwapchainPresentModeInfoEXT-pPresentModes-07761# Each entry
---     in @pPresentModes@ /must/ be a presentation mode specified in
---     'SwapchainPresentModesCreateInfoEXT'::@pPresentModes@ when creating
---     the entry’s corresponding swapchain
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkSwapchainPresentModeInfoEXT-sType-sType# @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_EXT'
---
--- -   #VUID-VkSwapchainPresentModeInfoEXT-pPresentModes-parameter#
---     @pPresentModes@ /must/ be a valid pointer to an array of
---     @swapchainCount@ valid
---     'Vulkan.Extensions.VK_KHR_surface.PresentModeKHR' values
---
--- -   #VUID-VkSwapchainPresentModeInfoEXT-swapchainCount-arraylength#
---     @swapchainCount@ /must/ be greater than @0@
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_swapchain_maintenance1 VK_EXT_swapchain_maintenance1>,
--- 'Vulkan.Extensions.VK_KHR_surface.PresentModeKHR',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data SwapchainPresentModeInfoEXT = SwapchainPresentModeInfoEXT
-  { -- | @pPresentModes@ is a list of presentation modes with @swapchainCount@
-    -- entries.
-    presentModes :: Vector PresentModeKHR }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (SwapchainPresentModeInfoEXT)
-#endif
-deriving instance Show SwapchainPresentModeInfoEXT
 
-instance ToCStruct SwapchainPresentModeInfoEXT where
-  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p SwapchainPresentModeInfoEXT{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_EXT)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (presentModes)) :: Word32))
-    pPPresentModes' <- ContT $ allocaBytes @PresentModeKHR ((Data.Vector.length (presentModes)) * 4)
-    lift $ Data.Vector.imapM_ (\i e -> poke (pPPresentModes' `plusPtr` (4 * (i)) :: Ptr PresentModeKHR) (e)) (presentModes)
-    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr PresentModeKHR))) (pPPresentModes')
-    lift $ f
-  cStructSize = 32
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    f
+-- No documentation found for TopLevel "VkSwapchainPresentModesCreateInfoEXT"
+type SwapchainPresentModesCreateInfoEXT = SwapchainPresentModesCreateInfoKHR
 
-instance FromCStruct SwapchainPresentModeInfoEXT where
-  peekCStruct p = do
-    swapchainCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
-    pPresentModes <- peek @(Ptr PresentModeKHR) ((p `plusPtr` 24 :: Ptr (Ptr PresentModeKHR)))
-    pPresentModes' <- generateM (fromIntegral swapchainCount) (\i -> peek @PresentModeKHR ((pPresentModes `advancePtrBytes` (4 * (i)) :: Ptr PresentModeKHR)))
-    pure $ SwapchainPresentModeInfoEXT
-             pPresentModes'
 
-instance Zero SwapchainPresentModeInfoEXT where
-  zero = SwapchainPresentModeInfoEXT
-           mempty
+-- No documentation found for TopLevel "VkSwapchainPresentModeInfoEXT"
+type SwapchainPresentModeInfoEXT = SwapchainPresentModeInfoKHR
 
 
--- | VkSwapchainPresentScalingCreateInfoEXT - Scaling behavior when
--- presenting to the surface
---
--- = Description
---
--- If @scalingBehavior@ is @0@, the result of presenting a swapchain image
--- with dimensions that do not match the surface dimensions is
--- implementation and platform-dependent. If @presentGravityX@ or
--- @presentGravityY@ are @0@, the presentation gravity /must/ match that
--- defined by the native platform surface on platforms which define surface
--- gravity.
---
--- == Valid Usage
---
--- -   #VUID-VkSwapchainPresentScalingCreateInfoEXT-presentGravityX-07765#
---     If @presentGravityX@ is @0@, @presentGravityY@ /must/ be @0@
---
--- -   #VUID-VkSwapchainPresentScalingCreateInfoEXT-presentGravityX-07766#
---     If @presentGravityX@ is not @0@, @presentGravityY@ /must/ not be @0@
---
--- -   #VUID-VkSwapchainPresentScalingCreateInfoEXT-scalingBehavior-07767#
---     @scalingBehavior@ /must/ not have more than one bit set
---
--- -   #VUID-VkSwapchainPresentScalingCreateInfoEXT-presentGravityX-07768#
---     @presentGravityX@ /must/ not have more than one bit set
---
--- -   #VUID-VkSwapchainPresentScalingCreateInfoEXT-presentGravityY-07769#
---     @presentGravityY@ /must/ not have more than one bit set
---
--- -   #VUID-VkSwapchainPresentScalingCreateInfoEXT-scalingBehavior-07770#
---     @scalingBehavior@ /must/ be @0@ or a valid scaling method for the
---     surface as returned in
---     'Vulkan.Extensions.VK_EXT_surface_maintenance1.SurfacePresentScalingCapabilitiesEXT'::@supportedPresentScaling@,
---     given
---     'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR'::@presentMode@
---     in
---     'Vulkan.Extensions.VK_EXT_surface_maintenance1.SurfacePresentModeEXT'
---
--- -   #VUID-VkSwapchainPresentScalingCreateInfoEXT-scalingBehavior-07771#
---     If the swapchain is created with
---     'SwapchainPresentModesCreateInfoEXT', @scalingBehavior@ /must/ be
---     @0@ or a valid scaling method for the surface as returned in
---     'Vulkan.Extensions.VK_EXT_surface_maintenance1.SurfacePresentScalingCapabilitiesEXT'::@supportedPresentScaling@,
---     given each present mode in
---     'SwapchainPresentModesCreateInfoEXT'::@pPresentModes@ in
---     'Vulkan.Extensions.VK_EXT_surface_maintenance1.SurfacePresentModeEXT'
---
--- -   #VUID-VkSwapchainPresentScalingCreateInfoEXT-presentGravityX-07772#
---     @presentGravityX@ /must/ be @0@ or a valid x-axis present gravity
---     for the surface as returned in
---     'Vulkan.Extensions.VK_EXT_surface_maintenance1.SurfacePresentScalingCapabilitiesEXT'::@supportedPresentGravityX@,
---     given
---     'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR'::@presentMode@
---     in
---     'Vulkan.Extensions.VK_EXT_surface_maintenance1.SurfacePresentModeEXT'
---
--- -   #VUID-VkSwapchainPresentScalingCreateInfoEXT-presentGravityX-07773#
---     If the swapchain is created with
---     'SwapchainPresentModesCreateInfoEXT', @presentGravityX@ /must/ be
---     @0@ or a valid x-axis present gravity for the surface as returned in
---     'Vulkan.Extensions.VK_EXT_surface_maintenance1.SurfacePresentScalingCapabilitiesEXT'::@supportedPresentGravityX@,
---     given each present mode in
---     'SwapchainPresentModesCreateInfoEXT'::@pPresentModes@ in
---     'Vulkan.Extensions.VK_EXT_surface_maintenance1.SurfacePresentModeEXT'
---
--- -   #VUID-VkSwapchainPresentScalingCreateInfoEXT-presentGravityY-07774#
---     @presentGravityY@ /must/ be @0@ or a valid y-axis present gravity
---     for the surface as returned in
---     'Vulkan.Extensions.VK_EXT_surface_maintenance1.SurfacePresentScalingCapabilitiesEXT'::@supportedPresentGravityY@,
---     given
---     'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR'::@presentMode@
---     in
---     'Vulkan.Extensions.VK_EXT_surface_maintenance1.SurfacePresentModeEXT'
---
--- -   #VUID-VkSwapchainPresentScalingCreateInfoEXT-presentGravityY-07775#
---     If the swapchain is created with
---     'SwapchainPresentModesCreateInfoEXT', @presentGravityY@ /must/ be
---     @0@ or a valid y-axis present gravity for the surface as returned in
---     'Vulkan.Extensions.VK_EXT_surface_maintenance1.SurfacePresentScalingCapabilitiesEXT'::@supportedPresentGravityY@,
---     given each present mode in
---     'SwapchainPresentModesCreateInfoEXT'::@pPresentModes@ in
---     'Vulkan.Extensions.VK_EXT_surface_maintenance1.SurfacePresentModeEXT'
---
--- -   #VUID-VkSwapchainPresentScalingCreateInfoEXT-swapchainMaintenance1-10154#
---     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-swapchainMaintenance1 swapchainMaintenance1>
---     feature is not enabled, then @presentScaling@, @presentGravityX@,
---     and @presentGravityY@ /must/ be @0@
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkSwapchainPresentScalingCreateInfoEXT-sType-sType# @sType@
---     /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT'
---
--- -   #VUID-VkSwapchainPresentScalingCreateInfoEXT-scalingBehavior-parameter#
---     @scalingBehavior@ /must/ be a valid combination of
---     'Vulkan.Extensions.VK_EXT_surface_maintenance1.PresentScalingFlagBitsEXT'
---     values
---
--- -   #VUID-VkSwapchainPresentScalingCreateInfoEXT-presentGravityX-parameter#
---     @presentGravityX@ /must/ be a valid combination of
---     'Vulkan.Extensions.VK_EXT_surface_maintenance1.PresentGravityFlagBitsEXT'
---     values
---
--- -   #VUID-VkSwapchainPresentScalingCreateInfoEXT-presentGravityY-parameter#
---     @presentGravityY@ /must/ be a valid combination of
---     'Vulkan.Extensions.VK_EXT_surface_maintenance1.PresentGravityFlagBitsEXT'
---     values
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_swapchain_maintenance1 VK_EXT_swapchain_maintenance1>,
--- 'Vulkan.Extensions.VK_EXT_surface_maintenance1.PresentGravityFlagsEXT',
--- 'Vulkan.Extensions.VK_EXT_surface_maintenance1.PresentScalingFlagsEXT',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data SwapchainPresentScalingCreateInfoEXT = SwapchainPresentScalingCreateInfoEXT
-  { -- | @scalingBehavior@ is @0@ or the scaling method to use when the
-    -- dimensions of the surface and swapchain images differ.
-    scalingBehavior :: PresentScalingFlagsEXT
-  , -- | @presentGravityX@ is @0@ or the x-axis direction in which swapchain
-    -- image pixels gravitate relative to the surface when @scalingBehavior@
-    -- does not result in a one-to-one pixel mapping between the scaled
-    -- swapchain image and the surface.
-    presentGravityX :: PresentGravityFlagsEXT
-  , -- | @presentGravityY@ is @0@ or the y-axis direction in which swapchain
-    -- image pixels gravitate relative to the surface when @scalingBehavior@
-    -- does not result in a one-to-one pixel mapping between the scaled
-    -- swapchain image and the surface.
-    presentGravityY :: PresentGravityFlagsEXT
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (SwapchainPresentScalingCreateInfoEXT)
-#endif
-deriving instance Show SwapchainPresentScalingCreateInfoEXT
-
-instance ToCStruct SwapchainPresentScalingCreateInfoEXT where
-  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p SwapchainPresentScalingCreateInfoEXT{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr PresentScalingFlagsEXT)) (scalingBehavior)
-    poke ((p `plusPtr` 20 :: Ptr PresentGravityFlagsEXT)) (presentGravityX)
-    poke ((p `plusPtr` 24 :: Ptr PresentGravityFlagsEXT)) (presentGravityY)
-    f
-  cStructSize = 32
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    f
-
-instance FromCStruct SwapchainPresentScalingCreateInfoEXT where
-  peekCStruct p = do
-    scalingBehavior <- peek @PresentScalingFlagsEXT ((p `plusPtr` 16 :: Ptr PresentScalingFlagsEXT))
-    presentGravityX <- peek @PresentGravityFlagsEXT ((p `plusPtr` 20 :: Ptr PresentGravityFlagsEXT))
-    presentGravityY <- peek @PresentGravityFlagsEXT ((p `plusPtr` 24 :: Ptr PresentGravityFlagsEXT))
-    pure $ SwapchainPresentScalingCreateInfoEXT
-             scalingBehavior presentGravityX presentGravityY
-
-instance Storable SwapchainPresentScalingCreateInfoEXT where
-  sizeOf ~_ = 32
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero SwapchainPresentScalingCreateInfoEXT where
-  zero = SwapchainPresentScalingCreateInfoEXT
-           zero
-           zero
-           zero
+-- No documentation found for TopLevel "VkSwapchainPresentScalingCreateInfoEXT"
+type SwapchainPresentScalingCreateInfoEXT = SwapchainPresentScalingCreateInfoKHR
 
 
--- | VkReleaseSwapchainImagesInfoEXT - Structure describing a list of
--- swapchain image indices to be released
---
--- == Valid Usage
---
--- -   #VUID-VkReleaseSwapchainImagesInfoEXT-pImageIndices-07785# Each
---     element of @pImageIndices@ /must/ be the index of a presentable
---     image acquired from the swapchain specified by @swapchain@
---
--- -   #VUID-VkReleaseSwapchainImagesInfoEXT-pImageIndices-07786# All uses
---     of presentable images identified by elements of @pImageIndices@
---     /must/ have completed execution
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkReleaseSwapchainImagesInfoEXT-sType-sType# @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_EXT'
---
--- -   #VUID-VkReleaseSwapchainImagesInfoEXT-pNext-pNext# @pNext@ /must/ be
---     @NULL@
---
--- -   #VUID-VkReleaseSwapchainImagesInfoEXT-swapchain-parameter#
---     @swapchain@ /must/ be a valid
---     'Vulkan.Extensions.Handles.SwapchainKHR' handle
---
--- -   #VUID-VkReleaseSwapchainImagesInfoEXT-pImageIndices-parameter#
---     @pImageIndices@ /must/ be a valid pointer to an array of
---     @imageIndexCount@ @uint32_t@ values
---
--- -   #VUID-VkReleaseSwapchainImagesInfoEXT-imageIndexCount-arraylength#
---     @imageIndexCount@ /must/ be greater than @0@
---
--- == Host Synchronization
---
--- -   Host access to @swapchain@ /must/ be externally synchronized
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_swapchain_maintenance1 VK_EXT_swapchain_maintenance1>,
--- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'Vulkan.Extensions.Handles.SwapchainKHR', 'releaseSwapchainImagesEXT'
-data ReleaseSwapchainImagesInfoEXT = ReleaseSwapchainImagesInfoEXT
-  { -- | @swapchain@ is a swapchain to which images are being released.
-    swapchain :: SwapchainKHR
-  , -- | @pImageIndices@ is a pointer to an array of indices into the array of
-    -- @swapchain@’s presentable images, with @imageIndexCount@ entries.
-    imageIndices :: Vector Word32
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (ReleaseSwapchainImagesInfoEXT)
-#endif
-deriving instance Show ReleaseSwapchainImagesInfoEXT
-
-instance ToCStruct ReleaseSwapchainImagesInfoEXT where
-  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p ReleaseSwapchainImagesInfoEXT{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_EXT)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    lift $ poke ((p `plusPtr` 16 :: Ptr SwapchainKHR)) (swapchain)
-    lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (imageIndices)) :: Word32))
-    pPImageIndices' <- ContT $ allocaBytes @Word32 ((Data.Vector.length (imageIndices)) * 4)
-    lift $ Data.Vector.imapM_ (\i e -> poke (pPImageIndices' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (imageIndices)
-    lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr Word32))) (pPImageIndices')
-    lift $ f
-  cStructSize = 40
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr SwapchainKHR)) (zero)
-    f
-
-instance FromCStruct ReleaseSwapchainImagesInfoEXT where
-  peekCStruct p = do
-    swapchain <- peek @SwapchainKHR ((p `plusPtr` 16 :: Ptr SwapchainKHR))
-    imageIndexCount <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))
-    pImageIndices <- peek @(Ptr Word32) ((p `plusPtr` 32 :: Ptr (Ptr Word32)))
-    pImageIndices' <- generateM (fromIntegral imageIndexCount) (\i -> peek @Word32 ((pImageIndices `advancePtrBytes` (4 * (i)) :: Ptr Word32)))
-    pure $ ReleaseSwapchainImagesInfoEXT
-             swapchain pImageIndices'
-
-instance Zero ReleaseSwapchainImagesInfoEXT where
-  zero = ReleaseSwapchainImagesInfoEXT
-           zero
-           mempty
+-- No documentation found for TopLevel "VkReleaseSwapchainImagesInfoEXT"
+type ReleaseSwapchainImagesInfoEXT = ReleaseSwapchainImagesInfoKHR
 
 
 type EXT_SWAPCHAIN_MAINTENANCE_1_SPEC_VERSION = 1
diff --git a/src/Vulkan/Extensions/VK_EXT_swapchain_maintenance1.hs-boot b/src/Vulkan/Extensions/VK_EXT_swapchain_maintenance1.hs-boot
deleted file mode 100644
--- a/src/Vulkan/Extensions/VK_EXT_swapchain_maintenance1.hs-boot
+++ /dev/null
@@ -1,240 +0,0 @@
-{-# language CPP #-}
--- | = Name
---
--- VK_EXT_swapchain_maintenance1 - device extension
---
--- = VK_EXT_swapchain_maintenance1
---
--- [__Name String__]
---     @VK_EXT_swapchain_maintenance1@
---
--- [__Extension Type__]
---     Device extension
---
--- [__Registered Extension Number__]
---     276
---
--- [__Revision__]
---     1
---
--- [__Ratification Status__]
---     Not ratified
---
--- [__Extension and Version Dependencies__]
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_swapchain VK_KHR_swapchain>
---     and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_surface_maintenance1 VK_EXT_surface_maintenance1>
---     and
---         
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
---          or
---         
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
---
--- [__Contact__]
---
---     -   Shahbaz Youssefi
---         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_swapchain_maintenance1] @syoussefi%0A*Here describe the issue or question you have about the VK_EXT_swapchain_maintenance1 extension* >
---
--- [__Extension Proposal__]
---     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_EXT_swapchain_maintenance1.adoc VK_EXT_swapchain_maintenance1>
---
--- == Other Extension Metadata
---
--- [__Last Modified Date__]
---     2022-10-28
---
--- [__Contributors__]
---
---     -   Jeff Juliano, NVIDIA
---
---     -   Shahbaz Youssefi, Google
---
---     -   Chris Forbes, Google
---
---     -   Ian Elliott, Google
---
---     -   Yiwei Zhang, Google
---
---     -   Charlie Lao, Google
---
---     -   Lina Versace, Google
---
---     -   Ralph Potter, Samsung
---
---     -   Igor Nazarov, Samsung
---
---     -   Hyunchang Kim, Samsung
---
---     -   Suenghwan Lee, Samsung
---
---     -   Munseong Kang, Samsung
---
---     -   Joonyong Park, Samsung
---
---     -   Hans-Kristian Arntzen, Valve
---
---     -   Lisa Wu, Arm
---
---     -   Daniel Stone, Collabora
---
---     -   Pan Gao, Huawei
---
--- == Description
---
--- @VK_EXT_swapchain_maintenance1@ adds a collection of window system
--- integration features that were intentionally left out or overlooked in
--- the original @VK_KHR_swapchain@ extension.
---
--- The new features are as follows:
---
--- -   Specify a fence that will be signaled when the resources associated
---     with a present operation /can/ be safely destroyed.
---
--- -   Allow changing the present mode a swapchain is using at per-present
---     granularity.
---
--- -   Allow applications to define the behavior when presenting a
---     swapchain image to a surface with different dimensions than the
---     image. Using this feature /may/ allow implementations to avoid
---     returning 'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DATE_KHR' in this
---     situation.
---
--- -   Allow applications to defer swapchain memory allocation for improved
---     startup time and memory footprint.
---
--- -   Allow applications to release previously acquired images without
---     presenting them.
---
--- == New Commands
---
--- -   'releaseSwapchainImagesEXT'
---
--- == New Structures
---
--- -   'ReleaseSwapchainImagesInfoEXT'
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
---     'Vulkan.Core10.Device.DeviceCreateInfo':
---
---     -   'PhysicalDeviceSwapchainMaintenance1FeaturesEXT'
---
--- -   Extending 'Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR':
---
---     -   'SwapchainPresentFenceInfoEXT'
---
---     -   'SwapchainPresentModeInfoEXT'
---
--- -   Extending
---     'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR':
---
---     -   'SwapchainPresentModesCreateInfoEXT'
---
---     -   'SwapchainPresentScalingCreateInfoEXT'
---
--- == New Enum Constants
---
--- -   'EXT_SWAPCHAIN_MAINTENANCE_1_EXTENSION_NAME'
---
--- -   'EXT_SWAPCHAIN_MAINTENANCE_1_SPEC_VERSION'
---
--- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_EXT'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_EXT'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT'
---
--- -   Extending
---     'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateFlagBitsKHR':
---
---     -   'Vulkan.Extensions.VK_KHR_swapchain.SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_EXT'
---
--- == Version History
---
--- -   Revision 0, 2019-05-28
---
---     -   Initial revisions
---
--- -   Revision 1, 2022-08-21 (Shahbaz Youssefi)
---
---     -   Add functionality and complete spec
---
--- == See Also
---
--- No cross-references are available
---
--- == Document Notes
---
--- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_swapchain_maintenance1 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_swapchain_maintenance1  ( PhysicalDeviceSwapchainMaintenance1FeaturesEXT
-                                                        , ReleaseSwapchainImagesInfoEXT
-                                                        , SwapchainPresentFenceInfoEXT
-                                                        , SwapchainPresentModeInfoEXT
-                                                        , SwapchainPresentModesCreateInfoEXT
-                                                        , SwapchainPresentScalingCreateInfoEXT
-                                                        ) where
-
-import Vulkan.CStruct (FromCStruct)
-import Vulkan.CStruct (ToCStruct)
-import Data.Kind (Type)
-
-data PhysicalDeviceSwapchainMaintenance1FeaturesEXT
-
-instance ToCStruct PhysicalDeviceSwapchainMaintenance1FeaturesEXT
-instance Show PhysicalDeviceSwapchainMaintenance1FeaturesEXT
-
-instance FromCStruct PhysicalDeviceSwapchainMaintenance1FeaturesEXT
-
-
-data ReleaseSwapchainImagesInfoEXT
-
-instance ToCStruct ReleaseSwapchainImagesInfoEXT
-instance Show ReleaseSwapchainImagesInfoEXT
-
-instance FromCStruct ReleaseSwapchainImagesInfoEXT
-
-
-data SwapchainPresentFenceInfoEXT
-
-instance ToCStruct SwapchainPresentFenceInfoEXT
-instance Show SwapchainPresentFenceInfoEXT
-
-instance FromCStruct SwapchainPresentFenceInfoEXT
-
-
-data SwapchainPresentModeInfoEXT
-
-instance ToCStruct SwapchainPresentModeInfoEXT
-instance Show SwapchainPresentModeInfoEXT
-
-instance FromCStruct SwapchainPresentModeInfoEXT
-
-
-data SwapchainPresentModesCreateInfoEXT
-
-instance ToCStruct SwapchainPresentModesCreateInfoEXT
-instance Show SwapchainPresentModesCreateInfoEXT
-
-instance FromCStruct SwapchainPresentModesCreateInfoEXT
-
-
-data SwapchainPresentScalingCreateInfoEXT
-
-instance ToCStruct SwapchainPresentScalingCreateInfoEXT
-instance Show SwapchainPresentScalingCreateInfoEXT
-
-instance FromCStruct SwapchainPresentScalingCreateInfoEXT
-
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
@@ -102,7 +102,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_texel_buffer_alignment Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -159,11 +159,21 @@
 -- structure passed to
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
 -- it is filled in to indicate whether each corresponding feature is
--- supported. 'PhysicalDeviceTexelBufferAlignmentFeaturesEXT' /can/ also be
--- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceTexelBufferAlignmentFeaturesEXT', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
 --
 -- = See Also
 --
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
@@ -102,7 +102,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_texel_buffer_alignment Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
diff --git a/src/Vulkan/Extensions/VK_EXT_texture_compression_astc_3d.hs b/src/Vulkan/Extensions/VK_EXT_texture_compression_astc_3d.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_EXT_texture_compression_astc_3d.hs
@@ -0,0 +1,344 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_EXT_texture_compression_astc_3d - device extension
+--
+-- = VK_EXT_texture_compression_astc_3d
+--
+-- [__Name String__]
+--     @VK_EXT_texture_compression_astc_3d@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     289
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
+--
+-- [__Contact__]
+--
+--     -   Jan-Harald Fredriksen
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_texture_compression_astc_3d] @janharaldfredriksen-arm%0A*Here describe the issue or question you have about the VK_EXT_texture_compression_astc_3d extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_EXT_texture_compression_astc_3d.adoc VK_EXT_texture_compression_astc_3d>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2025-06-09
+--
+-- [__IP Status__]
+--     No known issues.
+--
+-- [__Contributors__]
+--
+--     -   Jan-Harald Fredriksen, Arm
+--
+-- == Description
+--
+-- This extension adds support for 3D textures compressed using the
+-- Adaptive Scalable Texture Compression (ASTC) format.
+--
+-- These formats are compressed in 3D. As such, each slice will contain
+-- data for a Width x Height x Depth block of the texture. All transfer
+-- operations are done at the granularity of block dimensions.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceTextureCompressionASTC3DFeaturesEXT'
+--
+-- == New Enum Constants
+--
+-- -   'EXT_TEXTURE_COMPRESSION_ASTC_3D_EXTENSION_NAME'
+--
+-- -   'EXT_TEXTURE_COMPRESSION_ASTC_3D_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.Format.Format':
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_3x3x3_SFLOAT_BLOCK_EXT'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_3x3x3_SRGB_BLOCK_EXT'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_3x3x3_UNORM_BLOCK_EXT'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_4x3x3_SFLOAT_BLOCK_EXT'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_4x3x3_SRGB_BLOCK_EXT'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_4x3x3_UNORM_BLOCK_EXT'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_4x4x3_SFLOAT_BLOCK_EXT'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_4x4x3_SRGB_BLOCK_EXT'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_4x4x3_UNORM_BLOCK_EXT'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_4x4x4_SFLOAT_BLOCK_EXT'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_4x4x4_SRGB_BLOCK_EXT'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_4x4x4_UNORM_BLOCK_EXT'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_5x4x4_SFLOAT_BLOCK_EXT'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_5x4x4_SRGB_BLOCK_EXT'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_5x4x4_UNORM_BLOCK_EXT'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_5x5x4_SFLOAT_BLOCK_EXT'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_5x5x4_SRGB_BLOCK_EXT'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_5x5x4_UNORM_BLOCK_EXT'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_5x5x5_SFLOAT_BLOCK_EXT'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_5x5x5_SRGB_BLOCK_EXT'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_5x5x5_UNORM_BLOCK_EXT'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_6x5x5_SFLOAT_BLOCK_EXT'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_6x5x5_SRGB_BLOCK_EXT'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_6x5x5_UNORM_BLOCK_EXT'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_6x6x5_SFLOAT_BLOCK_EXT'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_6x6x5_SRGB_BLOCK_EXT'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_6x6x5_UNORM_BLOCK_EXT'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_6x6x6_SFLOAT_BLOCK_EXT'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_6x6x6_SRGB_BLOCK_EXT'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_6x6x6_UNORM_BLOCK_EXT'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_3D_FEATURES_EXT'
+--
+-- == Issues
+--
+-- None.
+--
+-- == Version History
+--
+-- -   Revision 1, 2025-06-09 (Jan-Harald Fredriksen)
+--
+--     -   Initial version
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_texture_compression_astc_3d 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_3d  ( PhysicalDeviceTextureCompressionASTC3DFeaturesEXT(..)
+                                                             , EXT_TEXTURE_COMPRESSION_ASTC_3D_SPEC_VERSION
+                                                             , pattern EXT_TEXTURE_COMPRESSION_ASTC_3D_SPEC_VERSION
+                                                             , EXT_TEXTURE_COMPRESSION_ASTC_3D_EXTENSION_NAME
+                                                             , pattern EXT_TEXTURE_COMPRESSION_ASTC_3D_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_3D_FEATURES_EXT))
+-- | VkPhysicalDeviceTextureCompressionASTC3DFeaturesEXT - Structure
+-- describing ASTC 3D features that can be supported by an implementation
+--
+-- = Members
+--
+-- This structure describes the following feature:
+--
+-- = Description
+--
+-- If the @VkPhysicalDeviceTextureCompressionASTC3DFeatures@ 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- @VkPhysicalDeviceTextureCompressionASTC3DFeatures@, it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_texture_compression_astc_3d VK_EXT_texture_compression_astc_3d>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceTextureCompressionASTC3DFeaturesEXT = PhysicalDeviceTextureCompressionASTC3DFeaturesEXT
+  { -- | #features-textureCompressionASTC_3D# @textureCompressionASTC_3D@
+    -- indicates whether all of the ASTC 3D 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_3x3x3_UNORM_BLOCK_EXT'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_3x3x3_SRGB_BLOCK_EXT'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_3x3x3_SFLOAT_BLOCK_EXT'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_4x3x3_UNORM_BLOCK_EXT'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_4x3x3_SRGB_BLOCK_EXT'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_4x3x3_SFLOAT_BLOCK_EXT'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_4x4x3_UNORM_BLOCK_EXT'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_4x4x3_SRGB_BLOCK_EXT'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_4x4x3_SFLOAT_BLOCK_EXT'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_4x4x4_UNORM_BLOCK_EXT'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_4x4x4_SRGB_BLOCK_EXT'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_4x4x4_SFLOAT_BLOCK_EXT'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_5x4x4_UNORM_BLOCK_EXT'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_5x4x4_SRGB_BLOCK_EXT'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_5x4x4_SFLOAT_BLOCK_EXT'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_5x5x4_UNORM_BLOCK_EXT'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_5x5x4_SRGB_BLOCK_EXT'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_5x5x4_SFLOAT_BLOCK_EXT'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_5x5x5_UNORM_BLOCK_EXT'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_5x5x5_SRGB_BLOCK_EXT'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_5x5x5_SFLOAT_BLOCK_EXT'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_6x5x5_UNORM_BLOCK_EXT'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_6x5x5_SRGB_BLOCK_EXT'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_6x5x5_SFLOAT_BLOCK_EXT'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_6x6x5_UNORM_BLOCK_EXT'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_6x6x5_SRGB_BLOCK_EXT'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_6x6x5_SFLOAT_BLOCK_EXT'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_6x6x6_UNORM_BLOCK_EXT'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_6x6x6_SRGB_BLOCK_EXT'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_6x6x6_SFLOAT_BLOCK_EXT'
+    textureCompressionASTC_3D :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceTextureCompressionASTC3DFeaturesEXT)
+#endif
+deriving instance Show PhysicalDeviceTextureCompressionASTC3DFeaturesEXT
+
+instance ToCStruct PhysicalDeviceTextureCompressionASTC3DFeaturesEXT where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceTextureCompressionASTC3DFeaturesEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_3D_FEATURES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (textureCompressionASTC_3D))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_3D_FEATURES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceTextureCompressionASTC3DFeaturesEXT where
+  peekCStruct p = do
+    textureCompressionASTC_3D <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDeviceTextureCompressionASTC3DFeaturesEXT
+             (bool32ToBool textureCompressionASTC_3D)
+
+instance Storable PhysicalDeviceTextureCompressionASTC3DFeaturesEXT where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceTextureCompressionASTC3DFeaturesEXT where
+  zero = PhysicalDeviceTextureCompressionASTC3DFeaturesEXT
+           zero
+
+
+type EXT_TEXTURE_COMPRESSION_ASTC_3D_SPEC_VERSION = 1
+
+-- No documentation found for TopLevel "VK_EXT_TEXTURE_COMPRESSION_ASTC_3D_SPEC_VERSION"
+pattern EXT_TEXTURE_COMPRESSION_ASTC_3D_SPEC_VERSION :: forall a . Integral a => a
+pattern EXT_TEXTURE_COMPRESSION_ASTC_3D_SPEC_VERSION = 1
+
+
+type EXT_TEXTURE_COMPRESSION_ASTC_3D_EXTENSION_NAME = "VK_EXT_texture_compression_astc_3d"
+
+-- No documentation found for TopLevel "VK_EXT_TEXTURE_COMPRESSION_ASTC_3D_EXTENSION_NAME"
+pattern EXT_TEXTURE_COMPRESSION_ASTC_3D_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern EXT_TEXTURE_COMPRESSION_ASTC_3D_EXTENSION_NAME = "VK_EXT_texture_compression_astc_3d"
+
diff --git a/src/Vulkan/Extensions/VK_EXT_texture_compression_astc_3d.hs-boot b/src/Vulkan/Extensions/VK_EXT_texture_compression_astc_3d.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_EXT_texture_compression_astc_3d.hs-boot
@@ -0,0 +1,170 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_EXT_texture_compression_astc_3d - device extension
+--
+-- = VK_EXT_texture_compression_astc_3d
+--
+-- [__Name String__]
+--     @VK_EXT_texture_compression_astc_3d@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     289
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
+--
+-- [__Contact__]
+--
+--     -   Jan-Harald Fredriksen
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_texture_compression_astc_3d] @janharaldfredriksen-arm%0A*Here describe the issue or question you have about the VK_EXT_texture_compression_astc_3d extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_EXT_texture_compression_astc_3d.adoc VK_EXT_texture_compression_astc_3d>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2025-06-09
+--
+-- [__IP Status__]
+--     No known issues.
+--
+-- [__Contributors__]
+--
+--     -   Jan-Harald Fredriksen, Arm
+--
+-- == Description
+--
+-- This extension adds support for 3D textures compressed using the
+-- Adaptive Scalable Texture Compression (ASTC) format.
+--
+-- These formats are compressed in 3D. As such, each slice will contain
+-- data for a Width x Height x Depth block of the texture. All transfer
+-- operations are done at the granularity of block dimensions.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceTextureCompressionASTC3DFeaturesEXT'
+--
+-- == New Enum Constants
+--
+-- -   'EXT_TEXTURE_COMPRESSION_ASTC_3D_EXTENSION_NAME'
+--
+-- -   'EXT_TEXTURE_COMPRESSION_ASTC_3D_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.Format.Format':
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_3x3x3_SFLOAT_BLOCK_EXT'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_3x3x3_SRGB_BLOCK_EXT'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_3x3x3_UNORM_BLOCK_EXT'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_4x3x3_SFLOAT_BLOCK_EXT'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_4x3x3_SRGB_BLOCK_EXT'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_4x3x3_UNORM_BLOCK_EXT'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_4x4x3_SFLOAT_BLOCK_EXT'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_4x4x3_SRGB_BLOCK_EXT'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_4x4x3_UNORM_BLOCK_EXT'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_4x4x4_SFLOAT_BLOCK_EXT'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_4x4x4_SRGB_BLOCK_EXT'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_4x4x4_UNORM_BLOCK_EXT'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_5x4x4_SFLOAT_BLOCK_EXT'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_5x4x4_SRGB_BLOCK_EXT'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_5x4x4_UNORM_BLOCK_EXT'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_5x5x4_SFLOAT_BLOCK_EXT'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_5x5x4_SRGB_BLOCK_EXT'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_5x5x4_UNORM_BLOCK_EXT'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_5x5x5_SFLOAT_BLOCK_EXT'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_5x5x5_SRGB_BLOCK_EXT'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_5x5x5_UNORM_BLOCK_EXT'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_6x5x5_SFLOAT_BLOCK_EXT'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_6x5x5_SRGB_BLOCK_EXT'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_6x5x5_UNORM_BLOCK_EXT'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_6x6x5_SFLOAT_BLOCK_EXT'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_6x6x5_SRGB_BLOCK_EXT'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_6x6x5_UNORM_BLOCK_EXT'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_6x6x6_SFLOAT_BLOCK_EXT'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_6x6x6_SRGB_BLOCK_EXT'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_6x6x6_UNORM_BLOCK_EXT'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_3D_FEATURES_EXT'
+--
+-- == Issues
+--
+-- None.
+--
+-- == Version History
+--
+-- -   Revision 1, 2025-06-09 (Jan-Harald Fredriksen)
+--
+--     -   Initial version
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_texture_compression_astc_3d 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_3d  (PhysicalDeviceTextureCompressionASTC3DFeaturesEXT) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data PhysicalDeviceTextureCompressionASTC3DFeaturesEXT
+
+instance ToCStruct PhysicalDeviceTextureCompressionASTC3DFeaturesEXT
+instance Show PhysicalDeviceTextureCompressionASTC3DFeaturesEXT
+
+instance FromCStruct PhysicalDeviceTextureCompressionASTC3DFeaturesEXT
+
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
@@ -54,7 +54,7 @@
 --
 -- When this extension is enabled, the HDR profile is supported for all
 -- ASTC formats listed in
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#appendix-compressedtex-astc ASTC Compressed Image Formats>.
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#appendix-compressedtex-astc ASTC Compressed Image Formats>.
 --
 -- == New Structures
 --
@@ -106,12 +106,11 @@
 --
 -- == Promotion to Vulkan 1.3
 --
--- This extension has been partially promoted. Vulkan APIs in this
--- extension are included in core Vulkan 1.3, with the EXT suffix omitted.
--- However, the feature is made optional in Vulkan 1.3. External
--- interactions defined by this extension, such as SPIR-V token names,
--- retain their original names. The original Vulkan API names are still
--- available as aliases of the core functionality.
+-- Vulkan APIs in this extension are included in core Vulkan 1.3, with the
+-- EXT suffix omitted. However, the feature is made optional in Vulkan 1.3.
+-- External interactions defined by this extension, such as SPIR-V token
+-- names, retain their original names. The original Vulkan API names are
+-- still available as aliases of the core functionality.
 --
 -- == Issues
 --
@@ -152,7 +151,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_texture_compression_astc_hdr Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
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
@@ -104,6 +104,19 @@
 --
 --     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT'
 --
+-- -   Extending
+--     'Vulkan.Core13.Enums.ToolPurposeFlagBits.ToolPurposeFlagBits':
+--
+--     -   'TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT'
+--
+--     -   'TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT'
+--
+--     -   'TOOL_PURPOSE_PROFILING_BIT_EXT'
+--
+--     -   'TOOL_PURPOSE_TRACING_BIT_EXT'
+--
+--     -   'TOOL_PURPOSE_VALIDATION_BIT_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:
@@ -188,11 +201,16 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_tooling_info Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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  ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT
+                                              , 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
                                               , getPhysicalDeviceToolPropertiesEXT
                                               , ToolPurposeFlagsEXT
                                               , ToolPurposeFlagBitsEXT
@@ -209,8 +227,38 @@
 import Vulkan.Core13.Enums.ToolPurposeFlagBits (ToolPurposeFlagBits)
 import Vulkan.Core13.Enums.ToolPurposeFlagBits (ToolPurposeFlags)
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES))
+import Vulkan.Core13.Enums.ToolPurposeFlagBits (ToolPurposeFlags)
+import Vulkan.Core13.Enums.ToolPurposeFlagBits (ToolPurposeFlagBits(TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT))
+import Vulkan.Core13.Enums.ToolPurposeFlagBits (ToolPurposeFlags)
+import Vulkan.Core13.Enums.ToolPurposeFlagBits (ToolPurposeFlagBits(TOOL_PURPOSE_MODIFYING_FEATURES_BIT))
+import Vulkan.Core13.Enums.ToolPurposeFlagBits (ToolPurposeFlags)
+import Vulkan.Core13.Enums.ToolPurposeFlagBits (ToolPurposeFlagBits(TOOL_PURPOSE_PROFILING_BIT))
+import Vulkan.Core13.Enums.ToolPurposeFlagBits (ToolPurposeFlags)
+import Vulkan.Core13.Enums.ToolPurposeFlagBits (ToolPurposeFlagBits(TOOL_PURPOSE_TRACING_BIT))
+import Vulkan.Core13.Enums.ToolPurposeFlagBits (ToolPurposeFlags)
+import Vulkan.Core13.Enums.ToolPurposeFlagBits (ToolPurposeFlagBits(TOOL_PURPOSE_VALIDATION_BIT))
 -- 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
+
+
+-- 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
 
 
 -- No documentation found for TopLevel "vkGetPhysicalDeviceToolPropertiesEXT"
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
@@ -81,5428 +81,6259 @@
 --
 -- This extension adds transform feedback to the Vulkan API by exposing the
 -- SPIR-V @TransformFeedback@ and @GeometryStreams@ capabilities to capture
--- vertex, tessellation or geometry shader outputs to one or more buffers.
--- It adds API functionality to bind transform feedback buffers to capture
--- the primitives emitted by the graphics pipeline from SPIR-V outputs
--- decorated for transform feedback. The transform feedback capture can be
--- paused and resumed by way of storing and retrieving a byte counter. The
--- captured data can be drawn again where the vertex count is derived from
--- the byte counter without CPU intervention. If the implementation is
--- capable, a vertex stream other than zero can be rasterized.
---
--- All these features are designed to match the full capabilities of OpenGL
--- core transform feedback functionality and beyond. Many of the features
--- are optional to allow base OpenGL ES GPUs to also implement this
--- extension.
---
--- The primary purpose of the functionality exposed by this extension is to
--- support translation layers from other 3D APIs. This functionality is not
--- considered forward looking, and is not expected to be promoted to a KHR
--- extension or to core Vulkan. Unless this is needed for translation, it
--- is recommended that developers use alternative techniques of using the
--- GPU to process and capture vertex data.
---
--- == New Commands
---
--- -   'cmdBeginQueryIndexedEXT'
---
--- -   'cmdBeginTransformFeedbackEXT'
---
--- -   'cmdBindTransformFeedbackBuffersEXT'
---
--- -   'cmdDrawIndirectByteCountEXT'
---
--- -   'cmdEndQueryIndexedEXT'
---
--- -   'cmdEndTransformFeedbackEXT'
---
--- == New Structures
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
---     'Vulkan.Core10.Device.DeviceCreateInfo':
---
---     -   'PhysicalDeviceTransformFeedbackFeaturesEXT'
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
---
---     -   'PhysicalDeviceTransformFeedbackPropertiesEXT'
---
--- -   Extending
---     'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo':
---
---     -   'PipelineRasterizationStateStreamCreateInfoEXT'
---
--- == New Bitmasks
---
--- -   'PipelineRasterizationStateStreamCreateFlagsEXT'
---
--- == New Enum Constants
---
--- -   'EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME'
---
--- -   'EXT_TRANSFORM_FEEDBACK_SPEC_VERSION'
---
--- -   Extending 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits':
---
---     -   'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT'
---
---     -   'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT'
---
---     -   'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT'
---
--- -   Extending
---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BufferUsageFlagBits':
---
---     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT'
---
---     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT'
---
--- -   Extending
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits':
---
---     -   'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT'
---
--- -   Extending 'Vulkan.Core10.Enums.QueryType.QueryType':
---
---     -   'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT'
---
--- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT'
---
--- == Issues
---
--- 1) Should we include pause\/resume functionality?
---
--- __RESOLVED__: Yes, this is needed to ease layering other APIs which have
--- this functionality. To pause use 'cmdEndTransformFeedbackEXT' and
--- provide valid buffer handles in the @pCounterBuffers@ array and offsets
--- in the @pCounterBufferOffsets@ array for the implementation to save the
--- resume points. Then to resume use 'cmdBeginTransformFeedbackEXT' with
--- the previous @pCounterBuffers@ and @pCounterBufferOffsets@ values.
--- Between the pause and resume there needs to be a memory barrier for the
--- counter buffers with a source access of
--- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT'
--- at pipeline stage
--- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT'
--- to a destination access of
--- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT'
--- at pipeline stage
--- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT'.
---
--- 2) How does this interact with multiview?
---
--- __RESOLVED__: Transform feedback cannot be made active in a render pass
--- with multiview enabled.
---
--- 3) How should queries be done?
---
--- __RESOLVED__: There is a new query type
--- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT'.
--- A query pool created with this type will capture 2 integers -
--- numPrimitivesWritten and numPrimitivesNeeded - for the specified vertex
--- stream output from the last
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader stage>.
--- The vertex stream output queried is zero by default, but can be
--- specified with the new 'cmdBeginQueryIndexedEXT' and
--- 'cmdEndQueryIndexedEXT' commands.
---
--- == Version History
---
--- -   Revision 1, 2018-10-09 (Piers Daniell)
---
---     -   Internal revisions
---
--- == See Also
---
--- No cross-references are available
---
--- == Document Notes
---
--- For more information, see the
--- <https://registry.khronos.org/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.
-module Vulkan.Extensions.VK_EXT_transform_feedback  ( cmdBindTransformFeedbackBuffersEXT
-                                                    , cmdBeginTransformFeedbackEXT
-                                                    , cmdUseTransformFeedbackEXT
-                                                    , cmdEndTransformFeedbackEXT
-                                                    , cmdBeginQueryIndexedEXT
-                                                    , cmdUseQueryIndexedEXT
-                                                    , cmdEndQueryIndexedEXT
-                                                    , cmdDrawIndirectByteCountEXT
-                                                    , PhysicalDeviceTransformFeedbackFeaturesEXT(..)
-                                                    , PhysicalDeviceTransformFeedbackPropertiesEXT(..)
-                                                    , PipelineRasterizationStateStreamCreateInfoEXT(..)
-                                                    , PipelineRasterizationStateStreamCreateFlagsEXT(..)
-                                                    , EXT_TRANSFORM_FEEDBACK_SPEC_VERSION
-                                                    , pattern EXT_TRANSFORM_FEEDBACK_SPEC_VERSION
-                                                    , EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME
-                                                    , pattern EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME
-                                                    ) where
-
-import Data.Bits (Bits)
-import Data.Bits (FiniteBits)
-import Vulkan.Internal.Utils (enumReadPrec)
-import Vulkan.Internal.Utils (enumShowsPrec)
-import Vulkan.Internal.Utils (traceAroundEvent)
-import Control.Monad (unless)
-import Control.Monad.IO.Class (liftIO)
-import Foreign.Marshal.Alloc (allocaBytes)
-import GHC.IO (throwIO)
-import GHC.Ptr (nullFunPtr)
-import Foreign.Ptr (nullPtr)
-import Foreign.Ptr (plusPtr)
-import GHC.Show (showString)
-import Numeric (showHex)
-import Control.Monad.Trans.Class (lift)
-import Control.Monad.Trans.Cont (evalContT)
-import qualified Data.Vector (imapM_)
-import qualified Data.Vector (length)
-import 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 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 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.Core10.FundamentalTypes (bool32ToBool)
-import Vulkan.Core10.FundamentalTypes (boolToBool32)
-import Vulkan.NamedType ((:::))
-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.Dynamic (DeviceCmds(pVkCmdBeginQueryIndexedEXT))
-import Vulkan.Dynamic (DeviceCmds(pVkCmdBeginTransformFeedbackEXT))
-import Vulkan.Dynamic (DeviceCmds(pVkCmdBindTransformFeedbackBuffersEXT))
-import Vulkan.Dynamic (DeviceCmds(pVkCmdDrawIndirectByteCountEXT))
-import Vulkan.Dynamic (DeviceCmds(pVkCmdEndQueryIndexedEXT))
-import Vulkan.Dynamic (DeviceCmds(pVkCmdEndTransformFeedbackEXT))
-import Vulkan.Core10.FundamentalTypes (DeviceSize)
-import Vulkan.Core10.FundamentalTypes (Flags)
-import Vulkan.Core10.Enums.QueryControlFlagBits (QueryControlFlagBits(..))
-import Vulkan.Core10.Enums.QueryControlFlagBits (QueryControlFlags)
-import Vulkan.Core10.Handles (QueryPool)
-import Vulkan.Core10.Handles (QueryPool(..))
-import Vulkan.Core10.Enums.StructureType (StructureType)
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT))
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdBindTransformFeedbackBuffersEXT
-  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Word32 -> Ptr Buffer -> Ptr DeviceSize -> Ptr DeviceSize -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Word32 -> Ptr Buffer -> Ptr DeviceSize -> Ptr DeviceSize -> IO ()
-
--- | vkCmdBindTransformFeedbackBuffersEXT - Bind transform feedback buffers
--- to a command buffer
---
--- = Description
---
--- The values taken from elements i of @pBuffers@, @pOffsets@ and @pSizes@
--- replace the current state for the transform feedback binding
--- @firstBinding@ + i, for i in [0, @bindingCount@). The transform feedback
--- binding is updated to start at the offset indicated by @pOffsets@[i]
--- from the start of the buffer @pBuffers@[i].
---
--- == Valid Usage
---
--- -   #VUID-vkCmdBindTransformFeedbackBuffersEXT-transformFeedback-02355#
---     'PhysicalDeviceTransformFeedbackFeaturesEXT'::@transformFeedback@
---     /must/ be enabled
---
--- -   #VUID-vkCmdBindTransformFeedbackBuffersEXT-firstBinding-02356#
---     @firstBinding@ /must/ be less than
---     'PhysicalDeviceTransformFeedbackPropertiesEXT'::@maxTransformFeedbackBuffers@
---
--- -   #VUID-vkCmdBindTransformFeedbackBuffersEXT-firstBinding-02357# The
---     sum of @firstBinding@ and @bindingCount@ /must/ be less than or
---     equal to
---     'PhysicalDeviceTransformFeedbackPropertiesEXT'::@maxTransformFeedbackBuffers@
---
--- -   #VUID-vkCmdBindTransformFeedbackBuffersEXT-pOffsets-02358# All
---     elements of @pOffsets@ /must/ be less than the size of the
---     corresponding element in @pBuffers@
---
--- -   #VUID-vkCmdBindTransformFeedbackBuffersEXT-pOffsets-02359# All
---     elements of @pOffsets@ /must/ be a multiple of 4
---
--- -   #VUID-vkCmdBindTransformFeedbackBuffersEXT-pBuffers-02360# All
---     elements of @pBuffers@ /must/ have been created with the
---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT'
---     flag
---
--- -   #VUID-vkCmdBindTransformFeedbackBuffersEXT-pSize-02361# If the
---     optional @pSize@ array is specified, each element of @pSizes@ /must/
---     either be 'Vulkan.Core10.APIConstants.WHOLE_SIZE', or be less than
---     or equal to
---     'PhysicalDeviceTransformFeedbackPropertiesEXT'::@maxTransformFeedbackBufferSize@
---
--- -   #VUID-vkCmdBindTransformFeedbackBuffersEXT-pSizes-02362# All
---     elements of @pSizes@ /must/ be either
---     'Vulkan.Core10.APIConstants.WHOLE_SIZE', or less than or equal to
---     the size of the corresponding buffer in @pBuffers@
---
--- -   #VUID-vkCmdBindTransformFeedbackBuffersEXT-pOffsets-02363# All
---     elements of @pOffsets@ plus @pSizes@, where the @pSizes@, element is
---     not 'Vulkan.Core10.APIConstants.WHOLE_SIZE', /must/ be less than or
---     equal to the size of the corresponding buffer in @pBuffers@
---
--- -   #VUID-vkCmdBindTransformFeedbackBuffersEXT-pBuffers-02364# Each
---     element of @pBuffers@ that is non-sparse /must/ be bound completely
---     and contiguously to a single 'Vulkan.Core10.Handles.DeviceMemory'
---     object
---
--- -   #VUID-vkCmdBindTransformFeedbackBuffersEXT-None-02365# Transform
---     feedback /must/ not be active when the
---     'cmdBindTransformFeedbackBuffersEXT' command is recorded
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdBindTransformFeedbackBuffersEXT-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdBindTransformFeedbackBuffersEXT-pBuffers-parameter#
---     @pBuffers@ /must/ be a valid pointer to an array of @bindingCount@
---     valid 'Vulkan.Core10.Handles.Buffer' handles
---
--- -   #VUID-vkCmdBindTransformFeedbackBuffersEXT-pOffsets-parameter#
---     @pOffsets@ /must/ be a valid pointer to an array of @bindingCount@
---     'Vulkan.Core10.FundamentalTypes.DeviceSize' values
---
--- -   #VUID-vkCmdBindTransformFeedbackBuffersEXT-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-vkCmdBindTransformFeedbackBuffersEXT-commandBuffer-cmdpool#
---     The 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
---
--- -   #VUID-vkCmdBindTransformFeedbackBuffersEXT-videocoding# This command
---     /must/ only be called outside of a video coding scope
---
--- -   #VUID-vkCmdBindTransformFeedbackBuffersEXT-bindingCount-arraylength#
---     @bindingCount@ /must/ be greater than @0@
---
--- -   #VUID-vkCmdBindTransformFeedbackBuffersEXT-commonparent# Both of
---     @commandBuffer@, and the elements of @pBuffers@ /must/ have been
---     created, allocated, or retrieved from the same
---     'Vulkan.Core10.Handles.Device'
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
--- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_transform_feedback VK_EXT_transform_feedback>,
--- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.FundamentalTypes.DeviceSize'
-cmdBindTransformFeedbackBuffersEXT :: forall io
-                                    . (MonadIO io)
-                                   => -- | @commandBuffer@ is the command buffer into which the command is
-                                      -- recorded.
-                                      CommandBuffer
-                                   -> -- | @firstBinding@ is the index of the first transform feedback 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
-                                      -- 'Vulkan.Core10.FundamentalTypes.DeviceSize' buffer sizes, specifying the
-                                      -- maximum number of bytes to capture to the corresponding transform
-                                      -- feedback buffer. If @pSizes@ is @NULL@, or the value of the @pSizes@
-                                      -- array element is 'Vulkan.Core10.APIConstants.WHOLE_SIZE', then the
-                                      -- maximum number of bytes captured will be the size of the corresponding
-                                      -- buffer minus the buffer offset.
-                                      ("sizes" ::: Vector DeviceSize)
-                                   -> io ()
-cmdBindTransformFeedbackBuffersEXT commandBuffer
-                                     firstBinding
-                                     buffers
-                                     offsets
-                                     sizes = liftIO . evalContT $ do
-  let vkCmdBindTransformFeedbackBuffersEXTPtr = pVkCmdBindTransformFeedbackBuffersEXT (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCmdBindTransformFeedbackBuffersEXTPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdBindTransformFeedbackBuffersEXT is null" Nothing Nothing
-  let vkCmdBindTransformFeedbackBuffersEXT' = mkVkCmdBindTransformFeedbackBuffersEXT vkCmdBindTransformFeedbackBuffersEXTPtr
-  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
-  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
-  lift $ traceAroundEvent "vkCmdBindTransformFeedbackBuffersEXT" (vkCmdBindTransformFeedbackBuffersEXT'
-                                                                    (commandBufferHandle (commandBuffer))
-                                                                    (firstBinding)
-                                                                    ((fromIntegral pBuffersLength :: Word32))
-                                                                    (pPBuffers)
-                                                                    (pPOffsets)
-                                                                    pSizes)
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdBeginTransformFeedbackEXT
-  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Word32 -> Ptr Buffer -> Ptr DeviceSize -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Word32 -> Ptr Buffer -> Ptr DeviceSize -> IO ()
-
--- | vkCmdBeginTransformFeedbackEXT - Make transform feedback active in the
--- command buffer
---
--- = Description
---
--- The active transform feedback buffers will capture primitives emitted
--- from the corresponding @XfbBuffer@ in the bound graphics pipeline. Any
--- @XfbBuffer@ emitted that does not output to an active transform feedback
--- buffer will not be captured.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdBeginTransformFeedbackEXT-transformFeedback-02366#
---     'PhysicalDeviceTransformFeedbackFeaturesEXT'::@transformFeedback@
---     /must/ be enabled
---
--- -   #VUID-vkCmdBeginTransformFeedbackEXT-None-02367# Transform feedback
---     /must/ not be active
---
--- -   #VUID-vkCmdBeginTransformFeedbackEXT-firstCounterBuffer-02368#
---     @firstCounterBuffer@ /must/ be less than
---     'PhysicalDeviceTransformFeedbackPropertiesEXT'::@maxTransformFeedbackBuffers@
---
--- -   #VUID-vkCmdBeginTransformFeedbackEXT-firstCounterBuffer-02369# The
---     sum of @firstCounterBuffer@ and @counterBufferCount@ /must/ be less
---     than or equal to
---     'PhysicalDeviceTransformFeedbackPropertiesEXT'::@maxTransformFeedbackBuffers@
---
--- -   #VUID-vkCmdBeginTransformFeedbackEXT-counterBufferCount-02607# If
---     @counterBufferCount@ is not @0@, and @pCounterBuffers@ is not
---     @NULL@, @pCounterBuffers@ /must/ be a valid pointer to an array of
---     @counterBufferCount@ 'Vulkan.Core10.Handles.Buffer' handles that are
---     either valid or 'Vulkan.Core10.APIConstants.NULL_HANDLE'
---
--- -   #VUID-vkCmdBeginTransformFeedbackEXT-pCounterBufferOffsets-02370#
---     For each buffer handle in the array, if it is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE' it /must/ reference a
---     buffer large enough to hold 4 bytes at the corresponding offset from
---     the @pCounterBufferOffsets@ array
---
--- -   #VUID-vkCmdBeginTransformFeedbackEXT-pCounterBuffer-02371# If
---     @pCounterBuffer@ is @NULL@, then @pCounterBufferOffsets@ /must/ also
---     be @NULL@
---
--- -   #VUID-vkCmdBeginTransformFeedbackEXT-pCounterBuffers-02372# For each
---     buffer handle in the @pCounterBuffers@ array that is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE' it /must/ have been created
---     with a @usage@ value containing
---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdBeginTransformFeedbackEXT-firstCounterBuffer-09630# The
---     sum of @firstCounterBuffer@ and @counterBufferCount@ /must/ be less
---     than or equal to the number of transform feedback buffers bound by
---     'cmdBindTransformFeedbackBuffersEXT'
---
--- -   #VUID-vkCmdBeginTransformFeedbackEXT-None-06233# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-shaderObject shaderObject>
---     feature is not enabled, a valid graphics pipeline /must/ be bound to
---     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
---
--- -   #VUID-vkCmdBeginTransformFeedbackEXT-None-04128# The last
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader stage>
---     of the bound graphics pipeline /must/ have been declared with the
---     @Xfb@ execution mode
---
--- -   #VUID-vkCmdBeginTransformFeedbackEXT-None-02373# Transform feedback
---     /must/ not be made active in a render pass instance with multiview
---     enabled
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdBeginTransformFeedbackEXT-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdBeginTransformFeedbackEXT-pCounterBufferOffsets-parameter#
---     If @counterBufferCount@ is not @0@, and @pCounterBufferOffsets@ is
---     not @NULL@, @pCounterBufferOffsets@ /must/ be a valid pointer to an
---     array of @counterBufferCount@
---     'Vulkan.Core10.FundamentalTypes.DeviceSize' values
---
--- -   #VUID-vkCmdBeginTransformFeedbackEXT-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-vkCmdBeginTransformFeedbackEXT-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
---
--- -   #VUID-vkCmdBeginTransformFeedbackEXT-renderpass# This command /must/
---     only be called inside of a render pass instance
---
--- -   #VUID-vkCmdBeginTransformFeedbackEXT-videocoding# This command
---     /must/ only be called outside of a video coding scope
---
--- -   #VUID-vkCmdBeginTransformFeedbackEXT-commonparent# Both of
---     @commandBuffer@, and the elements of @pCounterBuffers@ 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#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
--- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Inside                                                                                                                 | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_transform_feedback VK_EXT_transform_feedback>,
--- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.FundamentalTypes.DeviceSize'
-cmdBeginTransformFeedbackEXT :: forall io
-                              . (MonadIO io)
-                             => -- | @commandBuffer@ is the command buffer into which the command is
-                                -- recorded.
-                                CommandBuffer
-                             -> -- | @firstCounterBuffer@ is the index of the first transform feedback buffer
-                                -- corresponding to @pCounterBuffers@[0] and @pCounterBufferOffsets@[0].
-                                ("firstCounterBuffer" ::: Word32)
-                             -> -- | @pCounterBuffers@ is @NULL@ or a pointer to an array of
-                                -- 'Vulkan.Core10.Handles.Buffer' handles to counter buffers. Each buffer
-                                -- contains a 4 byte integer value representing the byte offset from the
-                                -- start of the corresponding transform feedback buffer from where to start
-                                -- capturing vertex data. If the byte offset stored to the counter buffer
-                                -- location was done using 'cmdEndTransformFeedbackEXT' it can be used to
-                                -- resume transform feedback from the previous location. If
-                                -- @pCounterBuffers@ is @NULL@, then transform feedback will start
-                                -- capturing vertex data to byte offset zero in all bound transform
-                                -- feedback buffers. For each element of @pCounterBuffers@ that is
-                                -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', transform feedback will start
-                                -- capturing vertex data to byte zero in the corresponding bound transform
-                                -- feedback buffer.
-                                ("counterBuffers" ::: Vector Buffer)
-                             -> -- | @pCounterBufferOffsets@ is @NULL@ or a pointer to an array of
-                                -- 'Vulkan.Core10.FundamentalTypes.DeviceSize' values specifying offsets
-                                -- within each of the @pCounterBuffers@ where the counter values were
-                                -- previously written. The location in each counter buffer at these offsets
-                                -- /must/ be large enough to contain 4 bytes of data. This data is the
-                                -- number of bytes captured by the previous transform feedback to this
-                                -- buffer. If @pCounterBufferOffsets@ is @NULL@, then it is assumed the
-                                -- offsets are zero.
-                                ("counterBufferOffsets" ::: Vector DeviceSize)
-                             -> io ()
-cmdBeginTransformFeedbackEXT commandBuffer
-                               firstCounterBuffer
-                               counterBuffers
-                               counterBufferOffsets = liftIO . evalContT $ do
-  let vkCmdBeginTransformFeedbackEXTPtr = pVkCmdBeginTransformFeedbackEXT (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCmdBeginTransformFeedbackEXTPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdBeginTransformFeedbackEXT is null" Nothing Nothing
-  let vkCmdBeginTransformFeedbackEXT' = mkVkCmdBeginTransformFeedbackEXT vkCmdBeginTransformFeedbackEXTPtr
-  let pCounterBuffersLength = Data.Vector.length $ (counterBuffers)
-  let pCounterBufferOffsetsLength = Data.Vector.length $ (counterBufferOffsets)
-  lift $ unless (fromIntegral pCounterBufferOffsetsLength == pCounterBuffersLength || pCounterBufferOffsetsLength == 0) $
-    throwIO $ IOError Nothing InvalidArgument "" "pCounterBufferOffsets and pCounterBuffers must have the same length" Nothing Nothing
-  pPCounterBuffers <- ContT $ allocaBytes @Buffer ((Data.Vector.length (counterBuffers)) * 8)
-  lift $ Data.Vector.imapM_ (\i e -> poke (pPCounterBuffers `plusPtr` (8 * (i)) :: Ptr Buffer) (e)) (counterBuffers)
-  pCounterBufferOffsets <- if Data.Vector.null (counterBufferOffsets)
-    then pure nullPtr
-    else do
-      pPCounterBufferOffsets <- ContT $ allocaBytes @DeviceSize (((Data.Vector.length (counterBufferOffsets))) * 8)
-      lift $ Data.Vector.imapM_ (\i e -> poke (pPCounterBufferOffsets `plusPtr` (8 * (i)) :: Ptr DeviceSize) (e)) ((counterBufferOffsets))
-      pure $ pPCounterBufferOffsets
-  lift $ traceAroundEvent "vkCmdBeginTransformFeedbackEXT" (vkCmdBeginTransformFeedbackEXT'
-                                                              (commandBufferHandle (commandBuffer))
-                                                              (firstCounterBuffer)
-                                                              ((fromIntegral pCounterBuffersLength :: Word32))
-                                                              (pPCounterBuffers)
-                                                              pCounterBufferOffsets)
-  pure $ ()
-
--- | This function will call the supplied action between calls to
--- 'cmdBeginTransformFeedbackEXT' and 'cmdEndTransformFeedbackEXT'
---
--- Note that 'cmdEndTransformFeedbackEXT' is *not* called if an exception
--- is thrown by the inner action.
-cmdUseTransformFeedbackEXT :: forall io r . MonadIO io => CommandBuffer -> Word32 -> Vector Buffer -> Vector DeviceSize -> io r -> io r
-cmdUseTransformFeedbackEXT commandBuffer
-                             firstCounterBuffer
-                             pCounterBuffers
-                             pCounterBufferOffsets
-                             a =
-  (cmdBeginTransformFeedbackEXT commandBuffer
-                                  firstCounterBuffer
-                                  pCounterBuffers
-                                  pCounterBufferOffsets) *> a <* (cmdEndTransformFeedbackEXT commandBuffer
-                                                                                               firstCounterBuffer
-                                                                                               pCounterBuffers
-                                                                                               pCounterBufferOffsets)
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdEndTransformFeedbackEXT
-  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Word32 -> Ptr Buffer -> Ptr DeviceSize -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Word32 -> Ptr Buffer -> Ptr DeviceSize -> IO ()
-
--- | vkCmdEndTransformFeedbackEXT - Make transform feedback inactive in the
--- command buffer
---
--- == Valid Usage
---
--- -   #VUID-vkCmdEndTransformFeedbackEXT-transformFeedback-02374#
---     'PhysicalDeviceTransformFeedbackFeaturesEXT'::@transformFeedback@
---     /must/ be enabled
---
--- -   #VUID-vkCmdEndTransformFeedbackEXT-None-02375# Transform feedback
---     /must/ be active
---
--- -   #VUID-vkCmdEndTransformFeedbackEXT-firstCounterBuffer-02376#
---     @firstCounterBuffer@ /must/ be less than
---     'PhysicalDeviceTransformFeedbackPropertiesEXT'::@maxTransformFeedbackBuffers@
---
--- -   #VUID-vkCmdEndTransformFeedbackEXT-firstCounterBuffer-02377# The sum
---     of @firstCounterBuffer@ and @counterBufferCount@ /must/ be less than
---     or equal to
---     'PhysicalDeviceTransformFeedbackPropertiesEXT'::@maxTransformFeedbackBuffers@
---
--- -   #VUID-vkCmdEndTransformFeedbackEXT-counterBufferCount-02608# If
---     @counterBufferCount@ is not @0@, and @pCounterBuffers@ is not
---     @NULL@, @pCounterBuffers@ /must/ be a valid pointer to an array of
---     @counterBufferCount@ 'Vulkan.Core10.Handles.Buffer' handles that are
---     either valid or 'Vulkan.Core10.APIConstants.NULL_HANDLE'
---
--- -   #VUID-vkCmdEndTransformFeedbackEXT-pCounterBufferOffsets-02378# For
---     each buffer handle in the array, if it is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE' it /must/ reference a
---     buffer large enough to hold 4 bytes at the corresponding offset from
---     the @pCounterBufferOffsets@ array
---
--- -   #VUID-vkCmdEndTransformFeedbackEXT-pCounterBuffer-02379# If
---     @pCounterBuffer@ is @NULL@, then @pCounterBufferOffsets@ /must/ also
---     be @NULL@
---
--- -   #VUID-vkCmdEndTransformFeedbackEXT-pCounterBuffers-02380# For each
---     buffer handle in the @pCounterBuffers@ array that is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE' it /must/ have been created
---     with a @usage@ value containing
---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT'
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdEndTransformFeedbackEXT-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdEndTransformFeedbackEXT-pCounterBufferOffsets-parameter#
---     If @counterBufferCount@ is not @0@, and @pCounterBufferOffsets@ is
---     not @NULL@, @pCounterBufferOffsets@ /must/ be a valid pointer to an
---     array of @counterBufferCount@
---     'Vulkan.Core10.FundamentalTypes.DeviceSize' values
---
--- -   #VUID-vkCmdEndTransformFeedbackEXT-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-vkCmdEndTransformFeedbackEXT-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
---
--- -   #VUID-vkCmdEndTransformFeedbackEXT-renderpass# This command /must/
---     only be called inside of a render pass instance
---
--- -   #VUID-vkCmdEndTransformFeedbackEXT-videocoding# This command /must/
---     only be called outside of a video coding scope
---
--- -   #VUID-vkCmdEndTransformFeedbackEXT-commonparent# Both of
---     @commandBuffer@, and the elements of @pCounterBuffers@ 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#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
--- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Inside                                                                                                                 | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_transform_feedback VK_EXT_transform_feedback>,
--- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.FundamentalTypes.DeviceSize'
-cmdEndTransformFeedbackEXT :: forall io
-                            . (MonadIO io)
-                           => -- | @commandBuffer@ is the command buffer into which the command is
-                              -- recorded.
-                              CommandBuffer
-                           -> -- | @firstCounterBuffer@ is the index of the first transform feedback buffer
-                              -- corresponding to @pCounterBuffers@[0] and @pCounterBufferOffsets@[0].
-                              ("firstCounterBuffer" ::: Word32)
-                           -> -- | @pCounterBuffers@ is @NULL@ or a pointer to an array of
-                              -- 'Vulkan.Core10.Handles.Buffer' handles to counter buffers. The counter
-                              -- buffers are used to record the current byte positions of each transform
-                              -- feedback buffer where the next vertex output data would be captured.
-                              -- This /can/ be used by a subsequent 'cmdBeginTransformFeedbackEXT' call
-                              -- to resume transform feedback capture from this position. It can also be
-                              -- used by 'cmdDrawIndirectByteCountEXT' to determine the vertex count of
-                              -- the draw call.
-                              ("counterBuffers" ::: Vector Buffer)
-                           -> -- | @pCounterBufferOffsets@ is @NULL@ or a pointer to an array of
-                              -- 'Vulkan.Core10.FundamentalTypes.DeviceSize' values specifying offsets
-                              -- within each of the @pCounterBuffers@ where the counter values can be
-                              -- written. The location in each counter buffer at these offsets /must/ be
-                              -- large enough to contain 4 bytes of data. The data stored at this
-                              -- location is the byte offset from the start of the transform feedback
-                              -- buffer binding where the next vertex data would be written. If
-                              -- @pCounterBufferOffsets@ is @NULL@, then it is assumed the offsets are
-                              -- zero.
-                              ("counterBufferOffsets" ::: Vector DeviceSize)
-                           -> io ()
-cmdEndTransformFeedbackEXT commandBuffer
-                             firstCounterBuffer
-                             counterBuffers
-                             counterBufferOffsets = liftIO . evalContT $ do
-  let vkCmdEndTransformFeedbackEXTPtr = pVkCmdEndTransformFeedbackEXT (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCmdEndTransformFeedbackEXTPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdEndTransformFeedbackEXT is null" Nothing Nothing
-  let vkCmdEndTransformFeedbackEXT' = mkVkCmdEndTransformFeedbackEXT vkCmdEndTransformFeedbackEXTPtr
-  let pCounterBuffersLength = Data.Vector.length $ (counterBuffers)
-  let pCounterBufferOffsetsLength = Data.Vector.length $ (counterBufferOffsets)
-  lift $ unless (fromIntegral pCounterBufferOffsetsLength == pCounterBuffersLength || pCounterBufferOffsetsLength == 0) $
-    throwIO $ IOError Nothing InvalidArgument "" "pCounterBufferOffsets and pCounterBuffers must have the same length" Nothing Nothing
-  pPCounterBuffers <- ContT $ allocaBytes @Buffer ((Data.Vector.length (counterBuffers)) * 8)
-  lift $ Data.Vector.imapM_ (\i e -> poke (pPCounterBuffers `plusPtr` (8 * (i)) :: Ptr Buffer) (e)) (counterBuffers)
-  pCounterBufferOffsets <- if Data.Vector.null (counterBufferOffsets)
-    then pure nullPtr
-    else do
-      pPCounterBufferOffsets <- ContT $ allocaBytes @DeviceSize (((Data.Vector.length (counterBufferOffsets))) * 8)
-      lift $ Data.Vector.imapM_ (\i e -> poke (pPCounterBufferOffsets `plusPtr` (8 * (i)) :: Ptr DeviceSize) (e)) ((counterBufferOffsets))
-      pure $ pPCounterBufferOffsets
-  lift $ traceAroundEvent "vkCmdEndTransformFeedbackEXT" (vkCmdEndTransformFeedbackEXT'
-                                                            (commandBufferHandle (commandBuffer))
-                                                            (firstCounterBuffer)
-                                                            ((fromIntegral pCounterBuffersLength :: Word32))
-                                                            (pPCounterBuffers)
-                                                            pCounterBufferOffsets)
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdBeginQueryIndexedEXT
-  :: FunPtr (Ptr CommandBuffer_T -> QueryPool -> Word32 -> QueryControlFlags -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> QueryPool -> Word32 -> QueryControlFlags -> Word32 -> IO ()
-
--- | vkCmdBeginQueryIndexedEXT - Begin an indexed query
---
--- = Description
---
--- The 'cmdBeginQueryIndexedEXT' command operates the same as the
--- 'Vulkan.Core10.CommandBufferBuilding.cmdBeginQuery' command, except that
--- it also accepts a query type specific @index@ parameter.
---
--- This command defines an execution dependency between other query
--- commands that reference the same query index.
---
--- The first
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
--- includes all commands which reference the queries in @queryPool@
--- indicated by @query@ and @index@ that occur earlier in
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-submission-order submission order>.
---
--- The second
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
--- includes all commands which reference the queries in @queryPool@
--- indicated by @query@ and @index@ that occur later in
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-submission-order submission order>.
---
--- The operation of this command happens after the first scope and happens
--- before the second scope.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdBeginQueryIndexedEXT-None-00807# All queries used by the
---     command /must/ be /unavailable/
---
--- -   #VUID-vkCmdBeginQueryIndexedEXT-queryType-02804# The @queryType@
---     used to create @queryPool@ /must/ not be
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TIMESTAMP'
---
--- -   #VUID-vkCmdBeginQueryIndexedEXT-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-vkCmdBeginQueryIndexedEXT-queryType-06741# The @queryType@
---     used to create @queryPool@ /must/ not be
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_SIZE_KHR'
---     or
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR'
---
--- -   #VUID-vkCmdBeginQueryIndexedEXT-queryType-04729# The @queryType@
---     used to create @queryPool@ /must/ not be
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV'
---
--- -   #VUID-vkCmdBeginQueryIndexedEXT-queryType-00800# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-occlusionQueryPrecise occlusionQueryPrecise>
---     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-vkCmdBeginQueryIndexedEXT-query-00802# @query@ /must/ be less
---     than the number of queries in @queryPool@
---
--- -   #VUID-vkCmdBeginQueryIndexedEXT-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-vkCmdBeginQueryIndexedEXT-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-vkCmdBeginQueryIndexedEXT-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-vkCmdBeginQueryIndexedEXT-commandBuffer-01885# @commandBuffer@
---     /must/ not be a protected command buffer
---
--- -   #VUID-vkCmdBeginQueryIndexedEXT-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-vkCmdBeginQueryIndexedEXT-queryType-07126# If the @queryType@
---     used to create @queryPool@ was
---     @VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR@, then the
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ have been created with a queue family index
---     that supports
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-result-status-only result status queries>,
---     as indicated by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFamilyQueryResultStatusPropertiesKHR VkQueueFamilyQueryResultStatusPropertiesKHR>::@queryResultStatusSupport@
---
--- -   #VUID-vkCmdBeginQueryIndexedEXT-None-07127# If there is a bound
---     video session, then there /must/ be no
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-active active>
---     queries
---
--- -   #VUID-vkCmdBeginQueryIndexedEXT-None-08370# If there is a bound
---     video session, then it /must/ not have been created with
---     @VK_VIDEO_SESSION_CREATE_INLINE_QUERIES_BIT_KHR@
---
--- -   #VUID-vkCmdBeginQueryIndexedEXT-queryType-07128# If the @queryType@
---     used to create @queryPool@ was
---     @VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR@ and there is a bound video
---     session, then @queryPool@ /must/ have been created with a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoProfileInfoKHR VkVideoProfileInfoKHR>
---     structure included in the @pNext@ chain of
---     'Vulkan.Core10.Query.QueryPoolCreateInfo' identical to the one
---     specified in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoSessionCreateInfoKHR VkVideoSessionCreateInfoKHR>::@pVideoProfile@
---     the bound video session was created with
---
--- -   #VUID-vkCmdBeginQueryIndexedEXT-queryType-07129# If the @queryType@
---     used to create @queryPool@ was
---     @VK_QUERY_TYPE_VIDEO_ENCODE_FEEDBACK_KHR@, then there /must/ be a
---     bound video session
---
--- -   #VUID-vkCmdBeginQueryIndexedEXT-queryType-07130# If the @queryType@
---     used to create @queryPool@ was
---     @VK_QUERY_TYPE_VIDEO_ENCODE_FEEDBACK_KHR@ and there is a bound video
---     session, then @queryPool@ /must/ have been created with a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoProfileInfoKHR VkVideoProfileInfoKHR>
---     structure included in the @pNext@ chain of
---     'Vulkan.Core10.Query.QueryPoolCreateInfo' identical to the one
---     specified in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoSessionCreateInfoKHR VkVideoSessionCreateInfoKHR>::@pVideoProfile@
---     the bound video session was created with
---
--- -   #VUID-vkCmdBeginQueryIndexedEXT-queryType-07131# If the @queryType@
---     used to create @queryPool@ was not
---     @VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR@ or
---     @VK_QUERY_TYPE_VIDEO_ENCODE_FEEDBACK_KHR@, then there /must/ be no
---     bound video session
---
--- -   #VUID-vkCmdBeginQueryIndexedEXT-queryPool-04753# If the @queryPool@
---     was created with the same @queryType@ as that of another
---     <https://registry.khronos.org/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
---
--- -   #VUID-vkCmdBeginQueryIndexedEXT-queryType-02338# 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-vkCmdBeginQueryIndexedEXT-queryType-02339# If the @queryType@
---     used to create @queryPool@ was
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT'
---     the @index@ parameter /must/ be less than
---     'PhysicalDeviceTransformFeedbackPropertiesEXT'::@maxTransformFeedbackStreams@
---
--- -   #VUID-vkCmdBeginQueryIndexedEXT-queryType-06692# If the @queryType@
---     used to create @queryPool@ was not
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT'
---     and not
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT',
---     the @index@ /must/ be zero
---
--- -   #VUID-vkCmdBeginQueryIndexedEXT-queryType-06689# If the @queryType@
---     used to create @queryPool@ was
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
---     the 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
---
--- -   #VUID-vkCmdBeginQueryIndexedEXT-queryType-06690# If the @queryType@
---     used to create @queryPool@ was
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
---     the @index@ parameter /must/ be less than
---     'PhysicalDeviceTransformFeedbackPropertiesEXT'::@maxTransformFeedbackStreams@
---
--- -   #VUID-vkCmdBeginQueryIndexedEXT-queryType-06691# If the @queryType@
---     used to create @queryPool@ was
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
---     and the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>
---     feature is not enabled, the @index@ parameter /must/ be zero
---
--- -   #VUID-vkCmdBeginQueryIndexedEXT-queryType-06693# If the @queryType@
---     used to create @queryPool@ was
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
---     then
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-primitivesGeneratedQuery primitivesGeneratedQuery>
---     /must/ be enabled
---
--- -   #VUID-vkCmdBeginQueryIndexedEXT-queryType-02341# If the @queryType@
---     used to create @queryPool@ was
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT'
---     then
---     'PhysicalDeviceTransformFeedbackPropertiesEXT'::@transformFeedbackQueries@
---     /must/ be supported
---
--- -   #VUID-vkCmdBeginQueryIndexedEXT-queryType-07071# The @queryType@
---     used to create @queryPool@ /must/ not be
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_MESH_PRIMITIVES_GENERATED_EXT'
---
--- -   #VUID-vkCmdBeginQueryIndexedEXT-queryPool-07289# If @queryPool@ was
---     created with a @queryType@ of
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR',
---     then the
---     'Vulkan.Extensions.VK_KHR_performance_query.QueryPoolPerformanceCreateInfoKHR'::@queueFamilyIndex@
---     @queryPool@ was created with /must/ equal the queue family index of
---     the 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from
---
--- -   #VUID-vkCmdBeginQueryIndexedEXT-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-vkCmdBeginQueryIndexedEXT-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-vkCmdBeginQueryIndexedEXT-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-vkCmdBeginQueryIndexedEXT-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-vkCmdBeginQueryIndexedEXT-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
---     'Vulkan.Core10.CommandBufferBuilding.cmdResetQueryPool' command
---     affecting the same query
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdBeginQueryIndexedEXT-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdBeginQueryIndexedEXT-queryPool-parameter# @queryPool@
---     /must/ be a valid 'Vulkan.Core10.Handles.QueryPool' handle
---
--- -   #VUID-vkCmdBeginQueryIndexedEXT-flags-parameter# @flags@ /must/ be a
---     valid combination of
---     'Vulkan.Core10.Enums.QueryControlFlagBits.QueryControlFlagBits'
---     values
---
--- -   #VUID-vkCmdBeginQueryIndexedEXT-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-vkCmdBeginQueryIndexedEXT-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics, compute, decode, or encode
---     operations
---
--- -   #VUID-vkCmdBeginQueryIndexedEXT-videocoding# This command /must/
---     only be called outside of a video coding scope
---
--- -   #VUID-vkCmdBeginQueryIndexedEXT-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#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
--- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | Action                                                                                                                                 |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | Compute                                                                                                               | State                                                                                                                                  |
--- |                                                                                                                            |                                                                                                                        |                                                                                                                             | Decode                                                                                                                |                                                                                                                                        |
--- |                                                                                                                            |                                                                                                                        |                                                                                                                             | Encode                                                                                                                |                                                                                                                                        |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_transform_feedback VK_EXT_transform_feedback>,
--- 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.Enums.QueryControlFlagBits.QueryControlFlags',
--- 'Vulkan.Core10.Handles.QueryPool',
--- 'Vulkan.Core10.CommandBufferBuilding.cmdBeginQuery',
--- 'Vulkan.Core10.CommandBufferBuilding.cmdEndQuery',
--- 'cmdEndQueryIndexedEXT'
-cmdBeginQueryIndexedEXT :: 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
-                        -> -- | @index@ is the query type specific index. When the query type is
-                           -- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT'
-                           -- or 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT',
-                           -- the index represents the vertex stream.
-                           ("index" ::: Word32)
-                        -> io ()
-cmdBeginQueryIndexedEXT commandBuffer queryPool query flags index = liftIO $ do
-  let vkCmdBeginQueryIndexedEXTPtr = pVkCmdBeginQueryIndexedEXT (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  unless (vkCmdBeginQueryIndexedEXTPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdBeginQueryIndexedEXT is null" Nothing Nothing
-  let vkCmdBeginQueryIndexedEXT' = mkVkCmdBeginQueryIndexedEXT vkCmdBeginQueryIndexedEXTPtr
-  traceAroundEvent "vkCmdBeginQueryIndexedEXT" (vkCmdBeginQueryIndexedEXT'
-                                                  (commandBufferHandle (commandBuffer))
-                                                  (queryPool)
-                                                  (query)
-                                                  (flags)
-                                                  (index))
-  pure $ ()
-
--- | This function will call the supplied action between calls to
--- 'cmdBeginQueryIndexedEXT' and 'cmdEndQueryIndexedEXT'
---
--- Note that 'cmdEndQueryIndexedEXT' is *not* called if an exception is
--- thrown by the inner action.
-cmdUseQueryIndexedEXT :: forall io r . MonadIO io => CommandBuffer -> QueryPool -> Word32 -> QueryControlFlags -> Word32 -> io r -> io r
-cmdUseQueryIndexedEXT commandBuffer queryPool query flags index a =
-  (cmdBeginQueryIndexedEXT commandBuffer
-                             queryPool
-                             query
-                             flags
-                             index) *> a <* (cmdEndQueryIndexedEXT commandBuffer
-                                                                     queryPool
-                                                                     query
-                                                                     index)
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdEndQueryIndexedEXT
-  :: FunPtr (Ptr CommandBuffer_T -> QueryPool -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> QueryPool -> Word32 -> Word32 -> IO ()
-
--- | vkCmdEndQueryIndexedEXT - Ends a query
---
--- = Description
---
--- The command completes the query in @queryPool@ identified by @query@ and
--- @index@, and marks it as available.
---
--- The 'cmdEndQueryIndexedEXT' command operates the same as the
--- 'Vulkan.Core10.CommandBufferBuilding.cmdEndQuery' command, except that
--- it also accepts a query type specific @index@ parameter.
---
--- This command defines an execution dependency between other query
--- commands that reference the same query index.
---
--- The first
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
--- includes all commands which reference the queries in @queryPool@
--- indicated by @query@ that occur earlier in
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-submission-order submission order>.
---
--- The second
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
--- includes only the operation of this command.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdEndQueryIndexedEXT-None-02342# All queries used by the
---     command /must/ be
---     <https://registry.khronos.org/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@
---
--- -   #VUID-vkCmdEndQueryIndexedEXT-commandBuffer-02344# @commandBuffer@
---     /must/ not be a protected command buffer
---
--- -   #VUID-vkCmdEndQueryIndexedEXT-query-02345# If
---     'cmdEndQueryIndexedEXT' 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-vkCmdEndQueryIndexedEXT-queryType-06694# If the @queryType@
---     used to create @queryPool@ was
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT'
---     or
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT',
---     the @index@ parameter /must/ be less than
---     'PhysicalDeviceTransformFeedbackPropertiesEXT'::@maxTransformFeedbackStreams@
---
--- -   #VUID-vkCmdEndQueryIndexedEXT-queryType-06695# If the @queryType@
---     used to create @queryPool@ was not
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT'
---     and not
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT',
---     the @index@ /must/ be zero
---
--- -   #VUID-vkCmdEndQueryIndexedEXT-queryType-06696# If the @queryType@
---     used to create @queryPool@ was
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT'
---     or
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT',
---     @index@ /must/ equal the @index@ used to begin the query
---
--- -   #VUID-vkCmdEndQueryIndexedEXT-None-07007# If called within a subpass
---     of a render pass instance, the corresponding
---     'Vulkan.Core10.CommandBufferBuilding.cmdBeginQuery'* command /must/
---     have been called previously within the same subpass
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdEndQueryIndexedEXT-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdEndQueryIndexedEXT-queryPool-parameter# @queryPool@
---     /must/ be a valid 'Vulkan.Core10.Handles.QueryPool' handle
---
--- -   #VUID-vkCmdEndQueryIndexedEXT-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-vkCmdEndQueryIndexedEXT-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics, compute, decode, or encode
---     operations
---
--- -   #VUID-vkCmdEndQueryIndexedEXT-videocoding# This command /must/ only
---     be called outside of a video coding scope
---
--- -   #VUID-vkCmdEndQueryIndexedEXT-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#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
--- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | Action                                                                                                                                 |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | Compute                                                                                                               | State                                                                                                                                  |
--- |                                                                                                                            |                                                                                                                        |                                                                                                                             | Decode                                                                                                                |                                                                                                                                        |
--- |                                                                                                                            |                                                                                                                        |                                                                                                                             | Encode                                                                                                                |                                                                                                                                        |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_transform_feedback VK_EXT_transform_feedback>,
--- 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.Handles.QueryPool',
--- 'Vulkan.Core10.CommandBufferBuilding.cmdBeginQuery',
--- 'cmdBeginQueryIndexedEXT',
--- 'Vulkan.Core10.CommandBufferBuilding.cmdEndQuery'
-cmdEndQueryIndexedEXT :: 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)
-                      -> -- | @index@ is the query type specific index.
-                         ("index" ::: Word32)
-                      -> io ()
-cmdEndQueryIndexedEXT commandBuffer queryPool query index = liftIO $ do
-  let vkCmdEndQueryIndexedEXTPtr = pVkCmdEndQueryIndexedEXT (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  unless (vkCmdEndQueryIndexedEXTPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdEndQueryIndexedEXT is null" Nothing Nothing
-  let vkCmdEndQueryIndexedEXT' = mkVkCmdEndQueryIndexedEXT vkCmdEndQueryIndexedEXTPtr
-  traceAroundEvent "vkCmdEndQueryIndexedEXT" (vkCmdEndQueryIndexedEXT'
-                                                (commandBufferHandle (commandBuffer))
-                                                (queryPool)
-                                                (query)
-                                                (index))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdDrawIndirectByteCountEXT
-  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Word32 -> Buffer -> DeviceSize -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Word32 -> Buffer -> DeviceSize -> Word32 -> Word32 -> IO ()
-
--- | vkCmdDrawIndirectByteCountEXT - Draw primitives with indirect parameters
--- where the vertex count is derived from the counter byte value in the
--- counter buffer
---
--- = Description
---
--- When the command is executed, primitives are assembled in the same way
--- as done with 'Vulkan.Core10.CommandBufferBuilding.cmdDraw' except the
--- @vertexCount@ is calculated based on the byte count read from
--- @counterBuffer@ at offset @counterBufferOffset@. The assembled
--- primitives execute the bound graphics pipeline.
---
--- The effective @vertexCount@ is calculated as follows:
---
--- > const uint32_t * counterBufferPtr = (const uint8_t *)counterBuffer.address + counterBufferOffset;
--- > vertexCount = floor(max(0, (*counterBufferPtr - counterOffset)) / vertexStride);
---
--- The effective @firstVertex@ is zero.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-magFilter-04553# If a
---     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
---     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR',
---     @reductionMode@ equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
---     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-vkCmdDrawIndirectByteCountEXT-magFilter-09598# If a
---     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
---     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR' and
---     @reductionMode@ equal to either
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
---     or
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
---     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_MINMAX_BIT'
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-mipmapMode-04770# If a
---     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
---     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR',
---     @reductionMode@ equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
---     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-vkCmdDrawIndirectByteCountEXT-mipmapMode-09599# If a
---     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
---     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'
---     and @reductionMode@ equal to either
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
---     or
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
---     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_MINMAX_BIT'
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-unnormalizedCoordinates-09635#
---     If a 'Vulkan.Core10.Handles.Sampler' created with
---     @unnormalizedCoordinates@ equal to
---     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
---     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
---     the image view’s @levelCount@ and @layerCount@ /must/ be 1
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-unnormalizedCoordinates-09636#
---     If a 'Vulkan.Core10.Handles.Sampler' created with
---     @unnormalizedCoordinates@ equal to
---     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
---     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
---     the image view’s @viewType@ /must/ be
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D' or
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D'
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-None-07888# If a
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'
---     descriptor is accessed using atomic operations as a result of this
---     command, then the storage texel buffer’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-buffer-view-format-features format features>
---     /must/ contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT'
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-02692# If a
---     'Vulkan.Core10.Handles.ImageView' is sampled with
---     'Vulkan.Core10.Enums.Filter.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.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-02693# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_filter_cubic VK_EXT_filter_cubic>
---     extension is not enabled and any 'Vulkan.Core10.Handles.ImageView'
---     is sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as a
---     result of this command, it /must/ not have a
---     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' of
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE', or
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY'
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-filterCubic-02694# Any
---     'Vulkan.Core10.Handles.ImageView' being sampled with
---     'Vulkan.Core10.Enums.Filter.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-vkCmdDrawIndirectByteCountEXT-filterCubicMinmax-02695# Any
---     'Vulkan.Core10.Handles.ImageView' being sampled with
---     'Vulkan.Core10.Enums.Filter.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-vkCmdDrawIndirectByteCountEXT-cubicRangeClamp-09212# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-cubicRangeClamp cubicRangeClamp>
---     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
---     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
---     a result of this command /must/ not have a
---     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
---     equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-reductionMode-09213# Any
---     'Vulkan.Core10.Handles.ImageView' being sampled with a
---     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
---     equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
---     as a result of this command /must/ sample with
---     'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT'
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-selectableCubicWeights-09214# If
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-selectableCubicWeights selectableCubicWeights>
---     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
---     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
---     a result of this command /must/ have
---     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.SamplerCubicWeightsCreateInfoQCOM'::@cubicWeights@
---     equal to
---     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM'
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-OpTypeImage-07027# For any
---     'Vulkan.Core10.Handles.ImageView' being written as a storage image
---     where the image format field of the @OpTypeImage@ is @Unknown@, the
---     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_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-OpTypeImage-07028# For any
---     'Vulkan.Core10.Handles.ImageView' being read as a storage image
---     where the image format field of the @OpTypeImage@ is @Unknown@, the
---     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_STORAGE_READ_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-OpTypeImage-07029# For any
---     'Vulkan.Core10.Handles.BufferView' being written as a storage texel
---     buffer where the image format field of the @OpTypeImage@ is
---     @Unknown@, the view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
---     /must/ contain
---     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-OpTypeImage-07030# Any
---     'Vulkan.Core10.Handles.BufferView' being read as a storage texel
---     buffer where the image format field of the @OpTypeImage@ is
---     @Unknown@ then the view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
---     /must/ contain
---     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08600# For each set /n/
---     that is statically used by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     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' or the
---     'Vulkan.Core10.Handles.DescriptorSetLayout' array used to create the
---     current 'Vulkan.Extensions.Handles.ShaderEXT' , as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08601# For each push
---     constant that is statically used by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     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' or the
---     'Vulkan.Core10.Handles.DescriptorSetLayout' array used to create the
---     current 'Vulkan.Extensions.Handles.ShaderEXT' , as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-10068# For each array of
---     resources that is used by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     the indices used to access members of the array /must/ be less than
---     the descriptor count for the identified binding in the descriptor
---     sets used by this command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-maintenance4-08602# 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
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     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' or the
---     'Vulkan.Core10.Handles.DescriptorSetLayout' and
---     'Vulkan.Core10.PipelineLayout.PushConstantRange' arrays used to
---     create the current 'Vulkan.Extensions.Handles.ShaderEXT' , as
---     described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08114# Descriptors in each
---     bound descriptor set, specified via
---     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
---     be valid as described by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
---     if they are statically used by the 'Vulkan.Core10.Handles.Pipeline'
---     bound to the pipeline bind point used by this command and the bound
---     'Vulkan.Core10.Handles.Pipeline' was not created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08115# If the descriptors
---     used by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline
---     bind point were specified via
---     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', the
---     bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
---     without
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08116# Descriptors in bound
---     descriptor buffers, specified via
---     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
---     /must/ be valid if they are dynamically used by the
---     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
---     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
---     was created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08604# Descriptors in bound
---     descriptor buffers, specified via
---     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
---     /must/ be valid if they are dynamically used by any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     to the pipeline bind point used by this command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08117# If the descriptors
---     used by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline
---     bind point were specified via
---     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
---     the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
---     with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08119# If a descriptor is
---     dynamically used with a 'Vulkan.Core10.Handles.Pipeline' created
---     with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
---     the descriptor memory /must/ be resident
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08605# If a descriptor is
---     dynamically used with a 'Vulkan.Extensions.Handles.ShaderEXT'
---     created with a 'Vulkan.Core10.Handles.DescriptorSetLayout' that was
---     created with
---     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
---     the descriptor memory /must/ be resident
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08606# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject>
---     feature is not enabled, a valid pipeline /must/ be bound to the
---     pipeline bind point used by this command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08608# If a pipeline is
---     bound to the pipeline bind point used by this command, there /must/
---     not have been any calls to dynamic state setting commands for any
---     state specified statically in the 'Vulkan.Core10.Handles.Pipeline'
---     object bound to the pipeline bind point used by this command, since
---     that pipeline was bound
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08609# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command or any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDrawIndirectByteCountEXT-None-08610# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command or any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDrawIndirectByteCountEXT-None-08611# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command or any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDrawIndirectByteCountEXT-None-08607# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject>
---     feature is enabled, either a valid pipeline /must/ be bound to the
---     pipeline bind point used by this command, or a valid combination of
---     valid and 'Vulkan.Core10.APIConstants.NULL_HANDLE' shader objects
---     /must/ be bound to every supported shader stage corresponding to the
---     pipeline bind point used by this command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-uniformBuffers-06935# If any
---     stage of the 'Vulkan.Core10.Handles.Pipeline' object bound to the
---     pipeline bind point used by this command accesses a uniform buffer,
---     and that stage was created without enabling either
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT'
---     or
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT'
---     for @uniformBuffers@, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, that stage /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-vkCmdDrawIndirectByteCountEXT-None-08612# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, and any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDrawIndirectByteCountEXT-storageBuffers-06936# If any
---     stage of the 'Vulkan.Core10.Handles.Pipeline' object bound to the
---     pipeline bind point used by this command accesses a storage buffer,
---     and that stage was created without enabling either
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT'
---     or
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT'
---     for @storageBuffers@, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, that stage /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-vkCmdDrawIndirectByteCountEXT-None-08613# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, and any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDrawIndirectByteCountEXT-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
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shaders>
---     /must/ not be a protected resource
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-06550# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
---     accesses a 'Vulkan.Core10.Handles.Sampler' or
---     'Vulkan.Core10.Handles.ImageView' object that enables
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,
---     that object /must/ only be used with @OpImageSample*@ or
---     @OpImageSparseSample*@ instructions
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-ConstOffset-06551# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
---     accesses a 'Vulkan.Core10.Handles.Sampler' or
---     'Vulkan.Core10.Handles.ImageView' object that enables
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,
---     that object /must/ not use the @ConstOffset@ and @Offset@ operands
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-viewType-07752# If a
---     'Vulkan.Core10.Handles.ImageView' is accessed as a result of this
---     command, then the image view’s @viewType@ /must/ match the @Dim@
---     operand of the @OpTypeImage@ as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-image-dimensions ???>
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-format-07753# If a
---     'Vulkan.Core10.Handles.ImageView' is accessed as a result of this
---     command, then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-numericformat numeric type>
---     of the image view’s @format@ and the @Sampled@ @Type@ operand of the
---     @OpTypeImage@ /must/ match
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-OpImageWrite-08795# If a
---     'Vulkan.Core10.Handles.ImageView' created with a format other than
---     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM_KHR' 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-vkCmdDrawIndirectByteCountEXT-OpImageWrite-08796# If a
---     'Vulkan.Core10.Handles.ImageView' created with the format
---     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM_KHR' is accessed using
---     @OpImageWrite@ as a result of this command, then the @Type@ of the
---     @Texel@ operand of that instruction /must/ have four components
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-OpImageWeightedSampleQCOM-06971#
---     If @OpImageWeightedSampleQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-OpImageWeightedSampleQCOM-06972#
---     If @OpImageWeightedSampleQCOM@ uses a
---     'Vulkan.Core10.Handles.ImageView' as a sample weight image 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-OpImageBoxFilterQCOM-06973# If
---     @OpImageBoxFilterQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-OpImageBlockMatchSSDQCOM-06974#
---     If @OpImageBlockMatchSSDQCOM@ is used to read from an
---     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-OpImageBlockMatchSADQCOM-06975#
---     If @OpImageBlockMatchSADQCOM@ is used to read from an
---     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-OpImageBlockMatchSADQCOM-06976#
---     If @OpImageBlockMatchSADQCOM@ or OpImageBlockMatchSSDQCOM is used to
---     read from a reference image as result of this command, then the
---     specified reference coordinates /must/ not fail
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-OpImageWeightedSampleQCOM-06977#
---     If @OpImageWeightedSampleQCOM@, @OpImageBoxFilterQCOM@,
---     @OpImageBlockMatchWindowSSDQCOM@, @OpImageBlockMatchWindowSADQCOM@,
---     @OpImageBlockMatchGatherSSDQCOM@, @OpImageBlockMatchGatherSADQCOM@,
---     @OpImageBlockMatchSSDQCOM@, or @OpImageBlockMatchSADQCOM@ uses a
---     'Vulkan.Core10.Handles.Sampler' as a result of this command, then
---     the sampler /must/ have been created with
---     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-OpImageWeightedSampleQCOM-06978#
---     If any command other than @OpImageWeightedSampleQCOM@,
---     @OpImageBoxFilterQCOM@, @OpImageBlockMatchWindowSSDQCOM@,
---     @OpImageBlockMatchWindowSADQCOM@, @OpImageBlockMatchGatherSSDQCOM@,
---     @OpImageBlockMatchGatherSADQCOM@, @OpImageBlockMatchSSDQCOM@, or
---     @OpImageBlockMatchSADQCOM@ uses a 'Vulkan.Core10.Handles.Sampler' as
---     a result of this command, then the sampler /must/ not have been
---     created with
---     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-OpImageBlockMatchWindow-09215#
---     If a @OpImageBlockMatchWindow*QCOM@ or
---     @OpImageBlockMatchGather*QCOM@ instruction is used to read from an
---     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-OpImageBlockMatchWindow-09216#
---     If a @OpImageBlockMatchWindow*QCOM@ or
---     @OpImageBlockMatchGather*QCOM@ instruction is used to read from an
---     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
---     the image view’s format /must/ be a single-component format
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-OpImageBlockMatchWindow-09217#
---     If a @OpImageBlockMatchWindow*QCOM@ or
---     @OpImageBlockMatchGather*QCOM@ read from a reference image as result
---     of this command, then the specified reference coordinates /must/ not
---     fail
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07288# Any shader
---     invocation executed by this command /must/
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-termination terminate>
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-09600# If a descriptor with
---     type equal to any of
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM',
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM',
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',
---     or
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'
---     is accessed as a result of this command, the image subresource
---     identified by that descriptor /must/ be in the image layout
---     identified when the descriptor was written
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-None-07748# If any shader
---     statically accesses an input attachment, a valid descriptor /must/
---     be bound to the pipeline via a descriptor set
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-OpTypeImage-07468# If any shader
---     executed by this pipeline accesses an @OpTypeImage@ variable with a
---     @Dim@ operand of @SubpassData@, it /must/ be decorated with an
---     @InputAttachmentIndex@ that corresponds to a valid input attachment
---     in the current subpass
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07469# Input attachment
---     views accessed in a subpass /must/ be created with the same
---     'Vulkan.Core10.Enums.Format.Format' as the corresponding subpass
---     definition, and be created with a 'Vulkan.Core10.Handles.ImageView'
---     that is compatible with the attachment referenced by the subpass\'
---     @pInputAttachments@[@InputAttachmentIndex@] in the bound
---     'Vulkan.Core10.Handles.Framebuffer' as specified by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#compatibility-inputattachment Fragment Input Attachment Compatibility>
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-pDepthInputAttachmentIndex-09595#
---     Input attachment views accessed in a dynamic render pass with a
---     @InputAttachmentIndex@ referenced by
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR',
---     or no @InputAttachmentIndex@ if
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR':@pDepthInputAttachmentIndex@
---     or
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR':@pStencilInputAttachmentIndex@
---     are @NULL@, /must/ be created with a
---     'Vulkan.Core10.Handles.ImageView' that is compatible with the
---     corresponding color, depth, or stencil attachment in
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-pDepthInputAttachmentIndex-09596#
---     Input attachment views accessed in a dynamic render pass via a
---     shader object /must/ have an @InputAttachmentIndex@ if both
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR':@pDepthInputAttachmentIndex@
---     and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR':@pStencilInputAttachmentIndex@
---     are non-@NULL@
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-InputAttachmentIndex-09597# If
---     an input attachment view accessed in a dynamic render pass via a
---     shader object has an @InputAttachmentIndex@, the
---     @InputAttachmentIndex@ /must/ match an index in
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR'
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-06537# Memory backing image
---     subresources used as attachments in the current render pass /must/
---     not be written in any way other than as an attachment by this
---     command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-09000# If a color
---     attachment is written by any prior command in this subpass or by the
---     load, store, or resolve operations for this subpass, it is not in
---     the
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
---     image layout, and either:
---
---     -   the
---         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT'
---         is set on the bound pipeline or
---
---     -   the last call to
---         'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
---         included
---         'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'
---         and
---
---         -   there is no bound graphics pipeline or
---
---         -   the bound graphics pipeline was created with
---             'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
---
---     it /must/ not be accessed in any way other than as an attachment by
---     this command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-09001# If a depth
---     attachment is written by any prior command in this subpass or by the
---     load, store, or resolve operations for this subpass, it is not in
---     the
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
---     image layout, and either:
---
---     -   the
---         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT'
---         is set on the bound pipeline or
---
---     -   the last call to
---         'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
---         included
---         'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT'
---         and
---
---         -   there is no bound graphics pipeline or
---
---         -   the bound graphics pipeline was created with
---             'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
---
---     it /must/ not be accessed in any way other than as an attachment by
---     this command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-09002# If a stencil
---     attachment is written by any prior command in this subpass or by the
---     load, store, or resolve operations for this subpass, it is not in
---     the
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
---     image layout, and either:
---
---     -   the
---         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT'
---         is set on the bound pipeline or
---
---     -   the last call to
---         'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
---         included
---         'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
---         and
---
---         -   there is no bound graphics pipeline or
---
---         -   the bound graphics pipeline was created with
---             'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
---
---     it /must/ not be accessed in any way other than as an attachment by
---     this command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-09003# If an attachment is
---     written by any prior command in this subpass or by the load, store,
---     or resolve operations for this subpass, it /must/ not be accessed in
---     any way other than as an attachment, storage image, or sampled image
---     by this command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-06539# If any previously
---     recorded command in the current subpass accessed an image
---     subresource used as an attachment in this subpass in any way other
---     than as an attachment, this command /must/ not write to that image
---     subresource as an attachment
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-06886# If the current
---     render pass instance uses a depth\/stencil attachment with a
---     read-only layout for the depth aspect,
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-depth-write depth writes>
---     /must/ be disabled
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-06887# If the current
---     render pass instance uses a depth\/stencil attachment with a
---     read-only layout for the stencil aspect, both front and back
---     @writeMask@ are not zero, and stencil test is enabled,
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-stencil all stencil ops>
---     /must/ be 'Vulkan.Core10.Enums.StencilOp.STENCIL_OP_KEEP'
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07831# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT' dynamic
---     state enabled then
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetViewport' /must/ have
---     been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07832# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR' dynamic
---     state enabled then
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetScissor' /must/ have been
---     called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07833# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_WIDTH' dynamic
---     state enabled then
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth' /must/ have
---     been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08617# If a shader object
---     is bound to any graphics stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
---     in the current command buffer set @polygonMode@ to
---     'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_LINE',
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth' /must/ have
---     been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08618# If a shader object
---     is bound to any graphics stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
---     in the current command buffer set @primitiveTopology@ to any line
---     topology, 'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08619# If a shader object
---     that outputs line primitives is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE',
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth' /must/ have
---     been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07834# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS' dynamic
---     state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @depthBiasEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBounds' or
---     'Vulkan.Extensions.VK_EXT_depth_bias_control.cmdSetDepthBias2EXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07835# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_BLEND_CONSTANTS'
---     dynamic state enabled then
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetBlendConstants' /must/
---     have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08621# If a shader object
---     is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     in the current command buffer set any element of
---     @pColorBlendEnables@ to 'Vulkan.Core10.FundamentalTypes.TRUE', and
---     the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     in the current command buffer set the same element of
---     @pColorBlendEquations@ to a
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.ColorBlendEquationEXT'
---     structure with any 'Vulkan.Core10.Enums.BlendFactor.BlendFactor'
---     member with a value of
---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_COLOR',
---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR',
---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_ALPHA', or
---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA',
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetBlendConstants' /must/
---     have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07836# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @depthBoundsTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBounds' /must/
---     have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07837# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_COMPARE_MASK'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilCompareMask'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07838# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_WRITE_MASK'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilWriteMask'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07839# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_REFERENCE'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of and @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilReference'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-None-07634# If the
---     @VK_EXT_sample_locations@ extension is enabled, a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-06666# If the
---     @VK_EXT_sample_locations@ extension is enabled, a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then
---     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07840# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CULL_MODE' dynamic
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetCullMode'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07841# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRONT_FACE' dynamic
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetFrontFace'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07843# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_TEST_ENABLE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE',
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthTestEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07844# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthWriteEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07845# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_COMPARE_OP'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @depthTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthCompareOp'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07846# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthBounds depthBounds>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthBoundsTestEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07847# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_TEST_ENABLE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilTestEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07848# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_OP' dynamic
---     state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilOp'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-viewportCount-03417# If a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
---     dynamic state enabled, and the state is not inherited, then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-scissorCount-03418# If a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
---     dynamic state enabled, and the state is not inherited, then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-viewportCount-03419# If a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which 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, and the state is not inherited, then 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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-viewportCount-04138# If the
---     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which 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 state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @viewportWScalingEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.cmdSetViewportWScalingNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08636# If the
---     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which 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 state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @viewportWScalingEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', 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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-shadingRateImage-09233# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV'
---     and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetCoarseSampleOrderNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-shadingRateImage-09234# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which 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 state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @shadingRateImageEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetViewportShadingRatePaletteNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08637# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which 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 state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @shadingRateImageEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', 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-vkCmdDrawIndirectByteCountEXT-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
---     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo', 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-vkCmdDrawIndirectByteCountEXT-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
---     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo', 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-vkCmdDrawIndirectByteCountEXT-None-07878# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-exclusiveScissor exclusiveScissor>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07879# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-exclusiveScissor exclusiveScissor>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV'
---     dynamic state enabled, and the most recent call to
---     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorEnableNV'
---     in the current command buffer set any element of
---     @pExclusiveScissorEnables@ to 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then
---     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-04876# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     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 and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-04877# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-logicOp-04878# If a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_EXT'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @logicOpEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetLogicOpEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-primitiveFragmentShadingRateWithMultipleViewports-04552#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
---     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-vkCmdDrawIndirectByteCountEXT-primitiveFragmentShadingRateWithMultipleViewports-08642#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
---     limit is not supported, and any shader object bound to a graphics
---     stage writes 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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-None-08643# If a shader object
---     is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then for each color
---     attachment in the render pass, 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 corresponding member of @pColorBlendEnables@ in the most
---     recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     in the current command buffer that affected that attachment index
---     /must/ have been 'Vulkan.Core10.FundamentalTypes.FALSE'
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-multisampledRenderToSingleSampled-07284#
---     If rasterization is not disabled in the bound graphics pipeline, and
---     none of the following is enabled:
---
---     -   the @VK_AMD_mixed_attachment_samples@ extension
---
---     -   the @VK_NV_framebuffer_mixed_samples@ extension
---
---     -   the
---         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---         feature
---
---     then @rasterizationSamples@ for the bound graphics pipeline /must/
---     be the same as the current subpass color and\/or depth\/stencil
---     attachments
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08644# If a shader object
---     is bound to any graphics stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and none of the following is
---     enabled:
---
---     -   the @VK_AMD_mixed_attachment_samples@ extension
---
---     -   the @VK_NV_framebuffer_mixed_samples@ extension
---
---     -   the
---         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---         feature
---
---     then the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     in the current command buffer /must/ have set @rasterizationSamples@
---     to be the same as the number of samples for the current render pass
---     color and\/or depth\/stencil attachments
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08876# If a shader object
---     is bound to any graphics stage, the current render pass instance
---     /must/ have been begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-viewMask-06178# If the current
---     render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the 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-vkCmdDrawIndirectByteCountEXT-colorAttachmentCount-06179# If
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled and the current render pass instance was
---     begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the 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-vkCmdDrawIndirectByteCountEXT-dynamicRenderingUnusedAttachments-08910#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and 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 an @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 bound graphics pipeline
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-dynamicRenderingUnusedAttachments-08912#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and 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 an @imageView@ equal to
---     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have the
---     corresponding element of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
---     used to create the bound pipeline equal to
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-dynamicRenderingUnusedAttachments-08911#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is enabled, and 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 an @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 bound graphics pipeline, or the corresponding
---     element of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@,
---     if it exists, /must/ be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-colorAttachmentCount-09362# If
---     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@
---     equal to @1@, there is no shader object bound to any graphics stage,
---     and a color attachment with a resolve mode of
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID',
---     each element of the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
---     array with a @resolveImageView@ not equal to
---     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
---     with an image created with a
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value equal to the
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value used to create the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-09363# If there is no
---     shader object bound to any graphics stage, the current render pass
---     instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     and a
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
---     equal to @1@, and a color attachment with a resolve mode of
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID',
---     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 an image created with a
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value equal to the
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value used to create the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-09364# If the current
---     render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is no shader object bound to any graphics stage, and the bound
---     graphics pipeline was created with a non-zero
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value and with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have set the blend enable to
---     'Vulkan.Core10.FundamentalTypes.FALSE' prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-09365# If the current
---     render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is no shader object bound to any graphics stage, and the bound
---     graphics pipeline was created with a non-zero
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value and with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ have set @rasterizationSamples@ to
---     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' prior
---     to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-09366# If there is a shader
---     object bound to any graphics stage, and the current render pass
---     includes a color attachment that uses the
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID'
---     resolve mode, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have set blend enable to
---     'Vulkan.Core10.FundamentalTypes.FALSE' prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-rasterizationSamples-09367# If
---     there is a shader object bound to any graphics stage, and the
---     current render pass includes a color attachment that uses the
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID'
---     resolve mode, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ have set @rasterizationSamples@ to
---     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' prior
---     to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-09368# If the current
---     render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is no shader object bound to any graphics stage, and the bound
---     graphics pipeline was created with a non-zero
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value and with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
---     /must/ have set @pFragmentSize->width@ to @1@ prior to this drawing
---     command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-09369# If the current
---     render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is no shader object bound to any graphics stage, and the bound
---     graphics pipeline was created with a non-zero
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value and with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
---     /must/ have set @pFragmentSize->height@ to @1@ prior to this drawing
---     command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-pFragmentSize-09370# If there is
---     a shader object bound to any graphics stage, and the current render
---     pass includes a color attachment that uses the
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID'
---     resolve mode, then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
---     /must/ have set @pFragmentSize->width@ to @1@ prior to this drawing
---     command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-pFragmentSize-09371# If there is
---     a shader object bound to any graphics stage, and the current render
---     pass includes a color attachment that uses the
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID'
---     resolve mode, then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
---     /must/ have set @pFragmentSize->height@ to @1@ prior to this drawing
---     command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07749# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08646# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
---     feature is enabled, and a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-attachmentCount-07750# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'
---     dynamic state enabled then the @attachmentCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
---     /must/ be greater than or equal to the
---     'Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo'::@attachmentCount@
---     of the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08647# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
---     feature is enabled, and a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then the @attachmentCount@
---     parameter of most recent call to
---     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
---     in the current command buffer /must/ be greater than or equal to the
---     number of color attachments in the current render pass instance
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07751# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command for each
---     discard rectangle in
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'::@discardRectangleCount@
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07880# If the
---     @VK_EXT_discard_rectangles@ extension is enabled, a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07881# If the
---     @VK_EXT_discard_rectangles@ extension is enabled, a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @discardRectangleEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-rasterizerDiscardEnable-09236#
---     If the @VK_EXT_discard_rectangles@ extension is enabled, and a
---     shader object is bound to any graphics stage, and the most recent
---     call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEnableEXT'
---     in the current command buffer set @discardRectangleEnable@ to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-dynamicRenderingUnusedAttachments-08913#
---     If the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
---     used to create the bound graphics pipeline /must/ be equal to
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-dynamicRenderingUnusedAttachments-08914#
---     If current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->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 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->imageView@
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-dynamicRenderingUnusedAttachments-08915#
---     If the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is enabled,
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
---     used to create the bound graphics pipeline was not equal to the
---     'Vulkan.Core10.Enums.Format.Format' used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@,
---     the value of the format /must/ be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-dynamicRenderingUnusedAttachments-08916#
---     If the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
---     used to create the bound graphics pipeline /must/ be equal to
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-dynamicRenderingUnusedAttachments-08917#
---     If current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->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 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->imageView@
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-dynamicRenderingUnusedAttachments-08918#
---     If the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is enabled,
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
---     used to create the bound graphics pipeline was not equal to the
---     'Vulkan.Core10.Enums.Format.Format' used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@,
---     the value of the format /must/ be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-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_fragment_shading_rate.RenderingFragmentShadingRateAttachmentInfoKHR'::@imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the bound graphics
---     pipeline /must/ have been created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-imageView-06184# If the current
---     render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     and
---     'Vulkan.Extensions.VK_EXT_fragment_density_map.RenderingFragmentDensityMapAttachmentInfoEXT'::@imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the bound graphics
---     pipeline /must/ have been created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT'
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-colorAttachmentCount-06185# If
---     the bound pipeline was created with a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.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_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     used to create the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-pDepthAttachment-06186# If the
---     current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the bound pipeline was created with a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     structure, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
---     @depthStencilAttachmentSamples@ member of
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     used to create the bound graphics pipeline /must/ be equal to the
---     sample count used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-pStencilAttachment-06187# If the
---     current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the bound pipeline was created with a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     structure, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
---     @depthStencilAttachmentSamples@ member of
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     used to create the bound graphics pipeline /must/ be equal to the
---     sample count used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-multisampledRenderToSingleSampled-07285#
---     If the bound pipeline was created without a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     structure, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---     feature is not enabled, 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 @rasterizationSamples@ for
---     the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-multisampledRenderToSingleSampled-07286#
---     If the bound pipeline was created without a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     structure, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     @rasterizationSamples@ for the bound graphics pipeline /must/ be
---     equal to the sample count used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-multisampledRenderToSingleSampled-07287#
---     If the bound pipeline was created without a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     structure, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     @rasterizationSamples@ for the bound graphics pipeline /must/ be
---     equal to the sample count used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-pNext-07935# If this command has
---     been called inside a render pass instance started with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     and the @pNext@ chain of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'
---     includes a
---     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'
---     structure with @multisampledRenderToSingleSampledEnable@ equal to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the value of
---     @rasterizationSamples@ for the bound graphics pipeline /must/ be
---     equal to
---     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'::@rasterizationSamples@
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-renderPass-06198# If the current
---     render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the bound pipeline /must/ have been created with a
---     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@renderPass@
---     equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE'
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-pColorAttachments-08963# If the
---     current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is a graphics pipeline bound with a fragment shader that
---     statically writes to a color attachment, the color write mask is not
---     zero, color writes are enabled, and the corresponding element of the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
---     corresponding element of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
---     used to create the pipeline /must/ not be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-pDepthAttachment-08964# If the
---     current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is a graphics pipeline bound, depth test is enabled, depth
---     write is enabled, and the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
---     used to create the pipeline /must/ not be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-pStencilAttachment-08965# If the
---     current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is a graphics pipeline bound, stencil test is enabled and the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
---     used to create the pipeline /must/ not be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-primitivesGeneratedQueryWithRasterizerDiscard-06708#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithRasterizerDiscard primitivesGeneratedQueryWithRasterizerDiscard>
---     feature is not enabled and the
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
---     query is active,
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-discard rasterization discard>
---     /must/ not be enabled
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-primitivesGeneratedQueryWithNonZeroStreams-06709#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>
---     feature is not enabled and the
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
---     query is active, the bound graphics pipeline /must/ not have been
---     created with a non-zero value in
---     'PipelineRasterizationStateStreamCreateInfoEXT'::@rasterizationStream@
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07619# If a shader object
---     is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetTessellationDomainOriginEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07620# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClamp depthClamp>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClampEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07621# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_POLYGON_MODE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07622# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07623# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-alphaToCoverageEnable-08919# If
---     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT'
---     dynamic state enabled, and @alphaToCoverageEnable@ was
---     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-fragmentoutput Fragment Output Interface>
---     /must/ contain a variable for the alpha @Component@ word in
---     @Location@ 0 at @Index@ 0
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-alphaToCoverageEnable-08920# If
---     a shader object is bound to any graphics stage, and the most recent
---     call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT'
---     in the current command buffer set @alphaToCoverageEnable@ to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-fragmentoutput Fragment Output Interface>
---     /must/ contain a variable for the alpha @Component@ word in
---     @Location@ 0 at @Index@ 0
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07624# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07625# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-alphaToOne alphaToOne>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToOneEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07626# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-logicOp logicOp>
---     feature is enabled, a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLogicOpEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07627# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08657# If a shader object
---     is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and both the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE' and there are color
---     attachments bound, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07628# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08658# If a shader object
---     is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     for any attachment set that attachment’s value in
---     @pColorBlendEnables@ to 'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07629# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08659# If a shader object
---     is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and both the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE' and there are color
---     attachments bound, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07630# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryStreams geometryStreams>
---     feature is enabled, and a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_STREAM_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationStreamEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07631# If the
---     @VK_EXT_conservative_rasterization@ extension is enabled, a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetConservativeRasterizationModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07632# If the
---     @VK_EXT_conservative_rasterization@ extension is enabled, a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @conservativeRasterizationMode@ is
---     'Vulkan.Extensions.VK_EXT_conservative_rasterization.CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT',
---     then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetExtraPrimitiveOverestimationSizeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07633# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClipEnable depthClipEnable>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT'
---     dynamic state, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07635# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-rasterizerDiscardEnable-09416#
---     If the @VK_EXT_blend_operation_advanced@ extension is enabled, and a
---     shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then at least one of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     and
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07636# If the
---     @VK_EXT_provoking_vertex@ extension is enabled, a shader object is
---     bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetProvokingVertexModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07637# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08666# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object is bound to any graphics
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
---     in the current command buffer set @polygonMode@ to
---     'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_LINE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08667# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
---     in the current command buffer set @primitiveTopology@ to any line
---     topology, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08668# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object that outputs line
---     primitives is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07638# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08669# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object is bound to any graphics
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
---     in the current command buffer set @polygonMode@ to
---     'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_LINE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08670# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
---     in the current command buffer set @primitiveTopology@ to any line
---     topology, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08671# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object that outputs line
---     primitives is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07849# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled and a shader object is bound to any graphics
---     stage, or a bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_KHR'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @stippledLineEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then
---     'Vulkan.Extensions.VK_KHR_line_rasterization.cmdSetLineStippleKHR'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07639# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClipControl depthClipControl>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipNegativeOneToOneEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-09650# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClampControl depthClampControl>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @depthClampEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_depth_clamp_control.cmdSetDepthClampRangeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07640# If the
---     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportWScalingEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07641# If the
---     @VK_NV_viewport_swizzle@ extension is enabled, and a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07642# If the
---     @VK_NV_fragment_coverage_to_color@ extension is enabled, a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07643# If the
---     @VK_NV_fragment_coverage_to_color@ extension is enabled, a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @coverageToColorEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07644# If the
---     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationModeNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07645# If the
---     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @coverageModulationMode@ is any value other than
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.COVERAGE_MODULATION_MODE_NONE_NV',
---     then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07646# If the
---     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @coverageModulationTableEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07647# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetShadingRateImageEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-pipelineFragmentShadingRate-09238#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate>
---     feature is enabled, a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07648# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-representativeFragmentTest representativeFragmentTest>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRepresentativeFragmentTestEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07649# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-coverageReductionMode coverageReductionMode>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageReductionModeNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-pColorBlendEnables-07470# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---     state enabled and the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     set @pColorBlendEnables@ for any attachment to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then for those attachments in
---     the subpass 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>
---     /must/ contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT'
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-rasterizationSamples-07471# If
---     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the current subpass does not use any color
---     and\/or depth\/stencil attachments, then the @rasterizationSamples@
---     in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ follow the rules for a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-noattachments zero-attachment subpass>
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-samples-07472# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
---     state enabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state disabled, then the @samples@ parameter in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
---     /must/ be greater or equal to the
---     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
---     parameter used to create the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-samples-07473# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
---     state and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     states enabled, then the @samples@ parameter in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
---     /must/ be greater or equal to the @rasterizationSamples@ parameter
---     in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-rasterizationSamples-07474# If
---     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---     feature is not enabled, and neither the
---     @VK_AMD_mixed_attachment_samples@ nor the
---     @VK_NV_framebuffer_mixed_samples@ extensions are enabled, then the
---     @rasterizationSamples@ in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ be the same as the current subpass color and\/or
---     depth\/stencil attachments
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-09211# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, or a shader object is bound to any graphics stage,
---     and the current render pass instance includes a
---     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'
---     structure with @multisampledRenderToSingleSampledEnable@ equal to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the
---     @rasterizationSamples@ in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ be the same as the @rasterizationSamples@ member of that
---     structure
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-firstAttachment-07476# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     calls /must/ specify an enable for all active color attachments in
---     the current subpass
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-rasterizerDiscardEnable-09417#
---     If a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     calls /must/ specify an enable for all active color attachments in
---     the current subpass
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-firstAttachment-07477# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     calls /must/ specify the blend equations for all active color
---     attachments in the current subpass where blending is enabled
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-rasterizerDiscardEnable-09418#
---     If a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and both the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE' and there are color
---     attachments bound, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     calls /must/ specify the blend equations for all active color
---     attachments in the current subpass where blending is enabled
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-firstAttachment-07478# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     calls /must/ specify the color write mask for all active color
---     attachments in the current subpass
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-rasterizerDiscardEnable-09419#
---     If a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     calls /must/ specify the color write mask for all active color
---     attachments in the current subpass
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-firstAttachment-07479# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
---     calls /must/ specify the advanced blend equations for all active
---     color attachments in the current subpass where blending is enabled
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-advancedBlendMaxColorAttachments-07480#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
---     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---     dynamic states enabled and the last calls to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     and
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
---     have enabled advanced blending, then the number of active color
---     attachments in the current subpass /must/ not exceed
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-advancedBlendMaxColorAttachments advancedBlendMaxColorAttachments>
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-primitivesGeneratedQueryWithNonZeroStreams-07481#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>
---     feature is not enabled and the
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
---     query is active, and the bound graphics pipeline was created with
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_STREAM_EXT'
---     state enabled, the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationStreamEXT'
---     /must/ have set the @rasterizationStream@ to zero
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-sampleLocationsPerPixel-07482#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state enabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state disabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then the @sampleLocationsPerPixel@ member of @pSampleLocationsInfo@
---     in the last call to
---     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
---     /must/ equal the @rasterizationSamples@ member of the
---     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'
---     structure the bound graphics pipeline has been created with
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-sampleLocationsPerPixel-07483#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state enabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then the @sampleLocationsPerPixel@ member of @pSampleLocationsInfo@
---     in the last call to
---     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
---     /must/ equal the @rasterizationSamples@ parameter of the last call
---     to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-sampleLocationsEnable-07484# If
---     a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, or the bound graphics pipeline was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     state enabled, and @sampleLocationsEnable@ was
---     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
---     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-vkCmdDrawIndirectByteCountEXT-sampleLocationsEnable-07485# If
---     a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state enabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     state enabled, and if @sampleLocationsEnable@ was
---     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
---     then the @sampleLocationsInfo.sampleLocationGridSize.width@ in the
---     last call to
---     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
---     /must/ evenly divide
---     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@sampleLocationGridSize.width@
---     as returned by
---     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
---     with a @samples@ parameter equaling @rasterizationSamples@
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-sampleLocationsEnable-07486# If
---     a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state enabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     state enabled, and if @sampleLocationsEnable@ was
---     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
---     then the @sampleLocationsInfo.sampleLocationGridSize.height@ in the
---     last call to
---     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
---     /must/ evenly divide
---     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@sampleLocationGridSize.height@
---     as returned by
---     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
---     with a @samples@ parameter equaling @rasterizationSamples@
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-sampleLocationsEnable-07487# If
---     a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     state enabled, and if @sampleLocationsEnable@ was
---     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
---     the fragment shader code /must/ not statically use the extended
---     instruction @InterpolateAtSample@
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-sampleLocationsEnable-07936# If
---     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state disabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then @sampleLocationsInfo.sampleLocationGridSize.width@ /must/
---     evenly divide
---     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@sampleLocationGridSize.width@
---     as returned by
---     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
---     with a @samples@ parameter equaling the value of
---     @rasterizationSamples@ in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-sampleLocationsEnable-07937# If
---     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state disabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then @sampleLocationsInfo.sampleLocationGridSize.height@ /must/
---     evenly divide
---     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@sampleLocationGridSize.height@
---     as returned by
---     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
---     with a @samples@ parameter equaling the value of
---     @rasterizationSamples@ in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-sampleLocationsEnable-07938# If
---     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state disabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then @sampleLocationsInfo.sampleLocationsPerPixel@ /must/ equal
---     @rasterizationSamples@ in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-coverageModulationTableEnable-07488#
---     If a shader object is bound to any graphics stage or the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV'
---     state enabled, and the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV'
---     set @coverageModulationTableEnable@ to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the
---     @coverageModulationTableCount@ parameter in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableNV'
---     /must/ equal the current @rasterizationSamples@ divided by the
---     number of color samples in the current subpass
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-rasterizationSamples-07489# If
---     the @VK_NV_framebuffer_mixed_samples@ extension is enabled, and if
---     current subpass has a depth\/stencil attachment and depth test,
---     stencil test, or depth bounds test are enabled in the bound
---     pipeline, then the current @rasterizationSamples@ /must/ be the same
---     as the sample count of the depth\/stencil attachment
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-coverageToColorEnable-07490# If
---     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
---     state enabled and the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
---     set the @coverageToColorEnable@ to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the current subpass
---     /must/ have a color attachment at the location selected by the last
---     call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
---     @coverageToColorLocation@, with a
---     'Vulkan.Core10.Enums.Format.Format' of
---     'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R8_SINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R16_UINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R16_SINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R32_UINT', or
---     'Vulkan.Core10.Enums.Format.FORMAT_R32_SINT'
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-rasterizerDiscardEnable-09420#
---     If the @VK_NV_fragment_coverage_to_color@ extension is enabled, and
---     a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
---     set the @coverageToColorEnable@ to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the current subpass
---     /must/ have a color attachment at the location selected by the last
---     call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
---     @coverageToColorLocation@, with a
---     'Vulkan.Core10.Enums.Format.Format' of
---     'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R8_SINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R16_UINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R16_SINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R32_UINT', or
---     'Vulkan.Core10.Enums.Format.FORMAT_R32_SINT'
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-coverageReductionMode-07491# If
---     this @VK_NV_coverage_reduction_mode@ extension is enabled, the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
---     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     states enabled, the current coverage reduction mode
---     @coverageReductionMode@, then the current @rasterizationSamples@,
---     and the sample counts for the color and depth\/stencil attachments
---     (if the subpass has them) /must/ be a valid combination returned by
---     'Vulkan.Extensions.VK_NV_coverage_reduction_mode.getPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV'
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-viewportCount-07492# 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_SWIZZLE_NV'
---     dynamic state enabled, 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-vkCmdDrawIndirectByteCountEXT-viewportCount-07493# 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_SWIZZLE_NV'
---     dynamic states enabled then the @viewportCount@ parameter in the
---     last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
---     /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-vkCmdDrawIndirectByteCountEXT-viewportCount-09421# If the
---     @VK_NV_viewport_swizzle@ extension is enabled, and a shader object
---     is bound to any graphics stage, then the @viewportCount@ parameter
---     in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
---     /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-vkCmdDrawIndirectByteCountEXT-rasterizationSamples-07494# If
---     the @VK_NV_framebuffer_mixed_samples@ extension is enabled, and if
---     the current subpass has any color attachments and
---     @rasterizationSamples@ of the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     is greater than the number of color samples, then the pipeline
---     @sampleShadingEnable@ /must/ be
---     'Vulkan.Core10.FundamentalTypes.FALSE'
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-stippledLineEnable-07495# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---     or
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---     dynamic states enabled, and if the current @stippledLineEnable@
---     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
---     @lineRasterizationMode@ state is
---     'Vulkan.Extensions.VK_KHR_line_rasterization.LINE_RASTERIZATION_MODE_RECTANGULAR_KHR',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>
---     feature /must/ be enabled
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-stippledLineEnable-07496# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---     or
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---     dynamic states enabled, and if the current @stippledLineEnable@
---     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
---     @lineRasterizationMode@ state is
---     'Vulkan.Extensions.VK_KHR_line_rasterization.LINE_RASTERIZATION_MODE_BRESENHAM_KHR',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     feature /must/ be enabled
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-stippledLineEnable-07497# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---     or
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---     dynamic states enabled, and if the current @stippledLineEnable@
---     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
---     @lineRasterizationMode@ state is
---     'Vulkan.Extensions.VK_KHR_line_rasterization.LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     feature /must/ be enabled
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-stippledLineEnable-07498# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---     or
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---     dynamic states enabled, and if the current @stippledLineEnable@
---     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
---     @lineRasterizationMode@ state is
---     'Vulkan.Extensions.VK_KHR_line_rasterization.LINE_RASTERIZATION_MODE_DEFAULT_KHR',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>
---     feature /must/ be enabled and
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@strictLines@
---     /must/ be 'Vulkan.Core10.FundamentalTypes.TRUE'
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-conservativePointAndLineRasterization-07499#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT'
---     dynamic state enabled,
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-conservativePointAndLineRasterization conservativePointAndLineRasterization>
---     is not supported, and the effective primitive topology output by the
---     last pre-rasterization shader stage is a line or point, then the
---     @conservativeRasterizationMode@ set by the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetConservativeRasterizationModeEXT'
---     /must/ be
---     'Vulkan.Extensions.VK_EXT_conservative_rasterization.CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT'
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-stage-07073# If the bound
---     pipeline was 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_VERTEX_BIT',
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT',
---     then
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-mesh-shader Mesh Shader Queries>
---     /must/ not be active
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08877# If a shader object
---     is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07850# If dynamic state was
---     inherited from
---     'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV',
---     it /must/ be set in the current command buffer prior to this drawing
---     command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08684# If there is no bound
---     graphics pipeline,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08685# If there is no bound
---     graphics pipeline, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellationShader>
---     feature is enabled,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08686# If there is no bound
---     graphics pipeline, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellationShader>
---     feature is enabled,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08687# If there is no bound
---     graphics pipeline, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometryShader>
---     feature is enabled,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08688# If there is no bound
---     graphics pipeline,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08689# If there is no bound
---     graphics pipeline, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
---     feature is enabled,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08690# If there is no bound
---     graphics pipeline, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
---     feature is enabled,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08693# If there is no bound
---     graphics pipeline, and at least one of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
---     and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
---     features is enabled, one of the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---     stages /must/ have a valid 'Vulkan.Extensions.Handles.ShaderEXT'
---     bound, and the other /must/ have no
---     'Vulkan.Extensions.Handles.ShaderEXT' bound
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08694# If there is no bound
---     graphics pipeline, and both the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
---     and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
---     features are enabled, and a valid
---     'Vulkan.Extensions.Handles.ShaderEXT' is bound the to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---     stage, and that 'Vulkan.Extensions.Handles.ShaderEXT' was created
---     without the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
---     flag, a valid 'Vulkan.Extensions.Handles.ShaderEXT' /must/ be bound
---     to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---     stage
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08695# If there is no bound
---     graphics pipeline, and both the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
---     and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
---     features are enabled, and a valid
---     'Vulkan.Extensions.Handles.ShaderEXT' is bound the to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---     stage, and that 'Vulkan.Extensions.Handles.ShaderEXT' was created
---     with the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
---     flag, there /must/ be no 'Vulkan.Extensions.Handles.ShaderEXT' bound
---     to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---     stage
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08696# If there is no bound
---     graphics pipeline, and a valid 'Vulkan.Extensions.Handles.ShaderEXT'
---     is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage, there /must/ be no 'Vulkan.Extensions.Handles.ShaderEXT'
---     bound to either the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---     stage or the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---     stage
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08698# If any graphics
---     shader is bound which was created with the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
---     flag, then all shaders created with the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
---     flag in the same
---     'Vulkan.Extensions.VK_EXT_shader_object.createShadersEXT' call
---     /must/ also be bound
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08699# If any graphics
---     shader is bound which was created with the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
---     flag, any stages in between stages whose shaders which did not
---     create a shader with the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
---     flag as part of the same
---     'Vulkan.Extensions.VK_EXT_shader_object.createShadersEXT' call
---     /must/ not have any 'Vulkan.Extensions.Handles.ShaderEXT' bound
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08878# All bound graphics
---     shader objects /must/ have been created with identical or
---     identically defined push constant ranges
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08879# All bound graphics
---     shader objects /must/ have been created with identical or
---     identically defined arrays of descriptor set layouts
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-colorAttachmentCount-09372# If
---     the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     and a
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
---     equal to @1@, a color attachment with a resolve mode of
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID',
---     and a fragment shader is bound, it /must/ not declare the
---     @DepthReplacing@ or @StencilRefReplacingEXT@ execution modes
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-pDynamicStates-08715# If the
---     bound graphics pipeline state includes a fragment shader stage, was
---     created with
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE'
---     set in
---     'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@,
---     and the fragment shader declares the @EarlyFragmentTests@ execution
---     mode and uses @OpDepthAttachmentReadEXT@, the @depthWriteEnable@
---     parameter in the last call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthWriteEnable'
---     /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-pDynamicStates-08716# If the
---     bound graphics pipeline state includes a fragment shader stage, was
---     created with
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_WRITE_MASK'
---     set in
---     'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@,
---     and the fragment shader declares the @EarlyFragmentTests@ execution
---     mode and uses @OpStencilAttachmentReadEXT@, the @writeMask@
---     parameter in the last call to
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilWriteMask' /must/
---     be @0@
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-09116# If a shader object
---     is bound to any graphics stage or the bound graphics pipeline was
---     created with
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT',
---     and the format of any color attachment is
---     'Vulkan.Core10.Enums.Format.FORMAT_E5B9G9R9_UFLOAT_PACK32', the
---     corresponding element of the @pColorWriteMasks@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     /must/ either include all of
---     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_R_BIT',
---     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_G_BIT',
---     and
---     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_B_BIT',
---     or none of them
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-maxFragmentDualSrcAttachments-09239#
---     If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blending blending>
---     is enabled for any attachment where either the source or destination
---     blend factors for that attachment
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-dsb use the secondary color input>,
---     the maximum value of @Location@ for any output attachment
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-staticuse statically used>
---     in the @Fragment@ @Execution@ @Model@ executed by this command
---     /must/ be less than
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFragmentDualSrcAttachments maxFragmentDualSrcAttachments>
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-09548# If the current
---     render pass was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     and there is no shader object bound to any graphics stage, the value
---     of each element of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingAttachmentLocationInfoKHR'::@pColorAttachmentLocations@
---     set by
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.cmdSetRenderingAttachmentLocationsKHR'
---     /must/ match the value set for the corresponding element in the
---     bound pipeline
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-09549# If the current
---     render pass was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     and there is no shader object bound to any graphics stage, input
---     attachment index mappings in the bound pipeline /must/ match those
---     set for the current render pass instance via
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR'
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-09642# If the current
---     render pass was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     with the
---     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT'
---     flag, the bound graphics pipeline /must/ have been created with
---     'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT'
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-09643# If the bound
---     graphics pipeline was created with
---     'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT',
---     the current render pass /must/ have begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     with the
---     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT'
---     flag
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-04007# All vertex input
---     bindings accessed via vertex input variables declared in the vertex
---     shader entry point’s interface /must/ have either valid or
---     'Vulkan.Core10.APIConstants.NULL_HANDLE' buffers bound
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-None-02721# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, and that pipeline was created without
---     enabling
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT'
---     for @vertexInputs@, then 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-vkCmdDrawIndirectByteCountEXT-None-07842# If there is a shader
---     object bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY'
---     dynamic state enabled then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-dynamicPrimitiveTopologyUnrestricted-07500#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY'
---     dynamic state enabled and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-dynamicPrimitiveTopologyUnrestricted dynamicPrimitiveTopologyUnrestricted>
---     is 'Vulkan.Core10.FundamentalTypes.FALSE', then the
---     @primitiveTopology@ parameter of
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
---     /must/ be of the same
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-class topology class>
---     as the pipeline
---     'Vulkan.Core10.Pipeline.PipelineInputAssemblyStateCreateInfo'::@topology@
---     state
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-primitiveTopology-10286# If
---     there is a shader object bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
---     stage, then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
---     /must/ have set @primitiveTopology@ to
---     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST'
---     prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-pStrides-04913# If the bound
---     graphics pipeline was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE'
---     dynamic state enabled, but without the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
---     dynamic state enabled, then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this draw command, and the
---     @pStrides@ parameter of
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2'
---     /must/ not be @NULL@
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-04914# If there is a shader
---     object bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage or 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 and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this draw command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-Input-07939# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-vertexAttributeRobustness vertexAttributeRobustness>
---     is not enabled and there is a shader object bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
---     dynamic state enabled then all variables with the @Input@ storage
---     class decorated with @Location@ in the @Vertex@ @Execution@ @Model@
---     @OpEntryPoint@ /must/ contain a location in
---     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@location@
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-Input-08734# If there is a
---     shader object bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
---     dynamic state enabled and either the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-legacyVertexAttributes legacyVertexAttributes>
---     feature is not enabled or the SPIR-V Type associated with a given
---     @Input@ variable of the corresponding @Location@ in the @Vertex@
---     @Execution@ @Model@ @OpEntryPoint@ is 64-bit, then the numeric type
---     associated with all @Input@ variables of the corresponding
---     @Location@ in the @Vertex@ @Execution@ @Model@ @OpEntryPoint@ /must/
---     be the same as
---     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-format-08936# If there is a
---     shader object bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
---     dynamic state enabled and
---     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@
---     has a 64-bit component, then the scalar width associated with all
---     @Input@ variables of the corresponding @Location@ in the @Vertex@
---     @Execution@ @Model@ @OpEntryPoint@ /must/ be 64-bit
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-format-08937# If there is a
---     shader object bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
---     dynamic state enabled and the scalar width associated with a
---     @Location@ decorated @Input@ variable in the @Vertex@ @Execution@
---     @Model@ @OpEntryPoint@ is 64-bit, then the corresponding
---     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@
---     /must/ have a 64-bit component
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-09203# If there is a shader
---     object bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
---     dynamic state enabled and
---     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@
---     has a 64-bit component, then all @Input@ variables at the
---     corresponding @Location@ in the @Vertex@ @Execution@ @Model@
---     @OpEntryPoint@ /must/ not use components that are not present in the
---     format
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-04875# If there is a shader
---     object bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
---     stage or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @primitiveTopology@ is
---     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST',
---     then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPatchControlPointsEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-04879# If there is a shader
---     object bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE'
---     dynamic state enabled then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-09637# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitiveTopologyListRestart primitiveTopologyListRestart>
---     feature is not enabled, the topology is
---     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_POINT_LIST',
---     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_LINE_LIST',
---     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_TRIANGLE_LIST',
---     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY',
---     or
---     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY',
---     there is a shader object bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE'
---     dynamic state enabled then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnable'
---     /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-stage-06481# The bound graphics
---     pipeline /must/ not have been created with the
---     'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo'::@stage@
---     member of any element of
---     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@pStages@ set
---     to
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08885# There /must/ be no
---     shader object bound to either of the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---     stages
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-pNext-09461# If the bound
---     graphics pipeline state was created with
---     'Vulkan.Extensions.VK_KHR_vertex_attribute_divisor.PipelineVertexInputDivisorStateCreateInfoKHR'
---     in the @pNext@ chain of
---     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@pVertexInputState@,
---     any member of
---     'Vulkan.Extensions.VK_KHR_vertex_attribute_divisor.PipelineVertexInputDivisorStateCreateInfoKHR'::@pVertexBindingDivisors@
---     has a value other than @1@ in @divisor@, and
---     'Vulkan.Extensions.VK_KHR_vertex_attribute_divisor.PhysicalDeviceVertexAttributeDivisorPropertiesKHR'::@supportsNonZeroFirstInstance@
---     is 'Vulkan.Core10.FundamentalTypes.FALSE', then @firstInstance@
---     /must/ be @0@
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-09462# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-objects shader objects>
---     are used for drawing or the bound graphics pipeline state was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
---     dynamic state enabled, any member of the
---     @pVertexBindingDescriptions@ parameter to the
---     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.cmdSetVertexInputEXT'
---     call that sets this dynamic state has a value other than @1@ in
---     @divisor@, and
---     'Vulkan.Extensions.VK_KHR_vertex_attribute_divisor.PhysicalDeviceVertexAttributeDivisorPropertiesKHR'::@supportsNonZeroFirstInstance@
---     is 'Vulkan.Core10.FundamentalTypes.FALSE', then @firstInstance@
---     /must/ be @0@
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-transformFeedback-02287#
---     'PhysicalDeviceTransformFeedbackFeaturesEXT'::@transformFeedback@
---     /must/ be enabled
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-transformFeedbackDraw-02288# The
---     implementation /must/ support
---     'PhysicalDeviceTransformFeedbackPropertiesEXT'::@transformFeedbackDraw@
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-vertexStride-02289#
---     @vertexStride@ /must/ be greater than 0 and less than or equal to
---     'PhysicalDeviceTransformFeedbackPropertiesEXT'::@maxTransformFeedbackBufferDataStride@
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-counterBuffer-04567# If
---     @counterBuffer@ is non-sparse then it /must/ be bound completely and
---     contiguously to a single 'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-counterBuffer-02290#
---     @counterBuffer@ /must/ have been created with the
---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'
---     bit set
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-counterBufferOffset-04568#
---     @counterBufferOffset@ /must/ be a multiple of @4@
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-counterOffset-09474#
---     @counterOffset@ /must/ be a multiple of @4@
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-vertexStride-09475#
---     @vertexStride@ /must/ be a multiple of @4@
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-02646#
---     @commandBuffer@ /must/ not be a protected command buffer
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-counterBuffer-parameter#
---     @counterBuffer@ /must/ be a valid 'Vulkan.Core10.Handles.Buffer'
---     handle
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-renderpass# This command /must/
---     only be called inside of a render pass instance
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-videocoding# This command /must/
---     only be called outside of a video coding scope
---
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-commonparent# Both of
---     @commandBuffer@, and @counterBuffer@ /must/ have been created,
---     allocated, or retrieved from the same 'Vulkan.Core10.Handles.Device'
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
--- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Inside                                                                                                                 | Outside                                                                                                                     | Graphics                                                                                                              | Action                                                                                                                                 |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_transform_feedback VK_EXT_transform_feedback>,
--- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.FundamentalTypes.DeviceSize'
-cmdDrawIndirectByteCountEXT :: forall io
-                             . (MonadIO io)
-                            => -- | @commandBuffer@ is the command buffer into which the command is
-                               -- recorded.
-                               CommandBuffer
-                            -> -- | @instanceCount@ is the number of instances to draw.
-                               ("instanceCount" ::: Word32)
-                            -> -- | @firstInstance@ is the instance ID of the first instance to draw.
-                               ("firstInstance" ::: Word32)
-                            -> -- | @counterBuffer@ is the buffer handle from where the byte count is read.
-                               ("counterBuffer" ::: Buffer)
-                            -> -- | @counterBufferOffset@ is the offset into the buffer used to read the
-                               -- byte count, which is used to calculate the vertex count for this draw
-                               -- call.
-                               ("counterBufferOffset" ::: DeviceSize)
-                            -> -- | @counterOffset@ is subtracted from the byte count read from the
-                               -- @counterBuffer@ at the @counterBufferOffset@
-                               ("counterOffset" ::: Word32)
-                            -> -- | @vertexStride@ is the stride in bytes between each element of the vertex
-                               -- data that is used to calculate the vertex count from the counter value.
-                               -- This value is typically the same value that was used in the graphics
-                               -- pipeline state when the transform feedback was captured as the
-                               -- @XfbStride@.
-                               ("vertexStride" ::: Word32)
-                            -> io ()
-cmdDrawIndirectByteCountEXT commandBuffer
-                              instanceCount
-                              firstInstance
-                              counterBuffer
-                              counterBufferOffset
-                              counterOffset
-                              vertexStride = liftIO $ do
-  let vkCmdDrawIndirectByteCountEXTPtr = pVkCmdDrawIndirectByteCountEXT (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  unless (vkCmdDrawIndirectByteCountEXTPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdDrawIndirectByteCountEXT is null" Nothing Nothing
-  let vkCmdDrawIndirectByteCountEXT' = mkVkCmdDrawIndirectByteCountEXT vkCmdDrawIndirectByteCountEXTPtr
-  traceAroundEvent "vkCmdDrawIndirectByteCountEXT" (vkCmdDrawIndirectByteCountEXT'
-                                                      (commandBufferHandle (commandBuffer))
-                                                      (instanceCount)
-                                                      (firstInstance)
-                                                      (counterBuffer)
-                                                      (counterBufferOffset)
-                                                      (counterOffset)
-                                                      (vertexStride))
-  pure $ ()
-
-
--- | VkPhysicalDeviceTransformFeedbackFeaturesEXT - Structure describing
--- transform feedback features that can be supported by an implementation
---
--- = Members
---
--- This structure describes the following features:
---
--- = Description
---
--- If the 'PhysicalDeviceTransformFeedbackFeaturesEXT' 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. 'PhysicalDeviceTransformFeedbackFeaturesEXT' /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_transform_feedback VK_EXT_transform_feedback>,
--- 'Vulkan.Core10.FundamentalTypes.Bool32',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PhysicalDeviceTransformFeedbackFeaturesEXT = PhysicalDeviceTransformFeedbackFeaturesEXT
-  { -- | #features-transformFeedback# @transformFeedback@ indicates whether the
-    -- implementation supports transform feedback and shader modules /can/
-    -- declare the @TransformFeedback@ capability.
-    transformFeedback :: Bool
-  , -- | #features-geometryStreams# @geometryStreams@ indicates whether the
-    -- implementation supports the @GeometryStreams@ SPIR-V capability.
-    geometryStreams :: Bool
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PhysicalDeviceTransformFeedbackFeaturesEXT)
-#endif
-deriving instance Show PhysicalDeviceTransformFeedbackFeaturesEXT
-
-instance ToCStruct PhysicalDeviceTransformFeedbackFeaturesEXT where
-  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PhysicalDeviceTransformFeedbackFeaturesEXT{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (transformFeedback))
-    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (geometryStreams))
-    f
-  cStructSize = 24
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_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 PhysicalDeviceTransformFeedbackFeaturesEXT where
-  peekCStruct p = do
-    transformFeedback <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
-    geometryStreams <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
-    pure $ PhysicalDeviceTransformFeedbackFeaturesEXT
-             (bool32ToBool transformFeedback) (bool32ToBool geometryStreams)
-
-instance Storable PhysicalDeviceTransformFeedbackFeaturesEXT where
-  sizeOf ~_ = 24
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero PhysicalDeviceTransformFeedbackFeaturesEXT where
-  zero = PhysicalDeviceTransformFeedbackFeaturesEXT
-           zero
-           zero
-
-
--- | VkPhysicalDeviceTransformFeedbackPropertiesEXT - Structure describing
--- transform feedback properties that can be supported by an implementation
---
--- = Description
---
--- If the 'PhysicalDeviceTransformFeedbackPropertiesEXT' 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_transform_feedback VK_EXT_transform_feedback>,
--- 'Vulkan.Core10.FundamentalTypes.Bool32',
--- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PhysicalDeviceTransformFeedbackPropertiesEXT = PhysicalDeviceTransformFeedbackPropertiesEXT
-  { -- | #limits-maxTransformFeedbackStreams# @maxTransformFeedbackStreams@ is
-    -- the maximum number of vertex streams that can be output from geometry
-    -- shaders declared with the @GeometryStreams@ capability. If the
-    -- implementation does not support
-    -- 'PhysicalDeviceTransformFeedbackFeaturesEXT'::@geometryStreams@ then
-    -- @maxTransformFeedbackStreams@ /must/ be @1@.
-    maxTransformFeedbackStreams :: Word32
-  , -- | #limits-maxTransformFeedbackBuffers# @maxTransformFeedbackBuffers@ is
-    -- the maximum number of transform feedback buffers that can be bound for
-    -- capturing shader outputs from the last
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-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
-    -- transform feedback in 'cmdBindTransformFeedbackBuffersEXT'.
-    maxTransformFeedbackBufferSize :: DeviceSize
-  , -- | #limits-maxTransformFeedbackStreamDataSize#
-    -- @maxTransformFeedbackStreamDataSize@ is the maximum amount of data in
-    -- bytes for each vertex that captured to one or more transform feedback
-    -- buffers associated with a specific vertex stream.
-    maxTransformFeedbackStreamDataSize :: Word32
-  , -- | #limits-maxTransformFeedbackBufferDataSize#
-    -- @maxTransformFeedbackBufferDataSize@ is the maximum amount of data in
-    -- bytes for each vertex that can be captured to a specific transform
-    -- feedback buffer.
-    maxTransformFeedbackBufferDataSize :: Word32
-  , -- | #limits-maxTransformFeedbackBufferDataStride#
-    -- @maxTransformFeedbackBufferDataStride@ is the maximum stride between
-    -- each capture of vertex data to the buffer.
-    maxTransformFeedbackBufferDataStride :: Word32
-  , -- | #limits-transformFeedbackQueries# @transformFeedbackQueries@ is
-    -- 'Vulkan.Core10.FundamentalTypes.TRUE' if the implementation supports the
-    -- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT'
-    -- query type. @transformFeedbackQueries@ is
-    -- 'Vulkan.Core10.FundamentalTypes.FALSE' if queries of this type /cannot/
-    -- be created.
-    transformFeedbackQueries :: Bool
-  , -- | #limits-transformFeedbackStreamsLinesTriangles#
-    -- @transformFeedbackStreamsLinesTriangles@ is
-    -- 'Vulkan.Core10.FundamentalTypes.TRUE' if the implementation supports the
-    -- geometry shader @OpExecutionMode@ of @OutputLineStrip@ and
-    -- @OutputTriangleStrip@ in addition to @OutputPoints@ when more than one
-    -- vertex stream is output. If @transformFeedbackStreamsLinesTriangles@ is
-    -- 'Vulkan.Core10.FundamentalTypes.FALSE' the implementation only supports
-    -- an @OpExecutionMode@ of @OutputPoints@ when more than one vertex stream
-    -- is output from the geometry shader.
-    transformFeedbackStreamsLinesTriangles :: Bool
-  , -- | #limits-transformFeedbackRasterizationStreamSelect#
-    -- @transformFeedbackRasterizationStreamSelect@ is
-    -- 'Vulkan.Core10.FundamentalTypes.TRUE' if the implementation supports the
-    -- @GeometryStreams@ SPIR-V capability and the application can use
-    -- 'PipelineRasterizationStateStreamCreateInfoEXT' to modify which vertex
-    -- stream output is used for rasterization. Otherwise vertex stream @0@
-    -- /must/ always be used for rasterization.
-    transformFeedbackRasterizationStreamSelect :: Bool
-  , -- | #limits-transformFeedbackDraw# @transformFeedbackDraw@ is
-    -- 'Vulkan.Core10.FundamentalTypes.TRUE' if the implementation supports the
-    -- 'cmdDrawIndirectByteCountEXT' function otherwise the function /must/ not
-    -- be called.
-    transformFeedbackDraw :: Bool
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PhysicalDeviceTransformFeedbackPropertiesEXT)
-#endif
-deriving instance Show PhysicalDeviceTransformFeedbackPropertiesEXT
-
-instance ToCStruct PhysicalDeviceTransformFeedbackPropertiesEXT where
-  withCStruct x f = allocaBytes 64 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PhysicalDeviceTransformFeedbackPropertiesEXT{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Word32)) (maxTransformFeedbackStreams)
-    poke ((p `plusPtr` 20 :: Ptr Word32)) (maxTransformFeedbackBuffers)
-    poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (maxTransformFeedbackBufferSize)
-    poke ((p `plusPtr` 32 :: Ptr Word32)) (maxTransformFeedbackStreamDataSize)
-    poke ((p `plusPtr` 36 :: Ptr Word32)) (maxTransformFeedbackBufferDataSize)
-    poke ((p `plusPtr` 40 :: Ptr Word32)) (maxTransformFeedbackBufferDataStride)
-    poke ((p `plusPtr` 44 :: Ptr Bool32)) (boolToBool32 (transformFeedbackQueries))
-    poke ((p `plusPtr` 48 :: Ptr Bool32)) (boolToBool32 (transformFeedbackStreamsLinesTriangles))
-    poke ((p `plusPtr` 52 :: Ptr Bool32)) (boolToBool32 (transformFeedbackRasterizationStreamSelect))
-    poke ((p `plusPtr` 56 :: Ptr Bool32)) (boolToBool32 (transformFeedbackDraw))
-    f
-  cStructSize = 64
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_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 DeviceSize)) (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 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))
-    f
-
-instance FromCStruct PhysicalDeviceTransformFeedbackPropertiesEXT where
-  peekCStruct p = do
-    maxTransformFeedbackStreams <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
-    maxTransformFeedbackBuffers <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
-    maxTransformFeedbackBufferSize <- peek @DeviceSize ((p `plusPtr` 24 :: Ptr DeviceSize))
-    maxTransformFeedbackStreamDataSize <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))
-    maxTransformFeedbackBufferDataSize <- peek @Word32 ((p `plusPtr` 36 :: Ptr Word32))
-    maxTransformFeedbackBufferDataStride <- peek @Word32 ((p `plusPtr` 40 :: Ptr Word32))
-    transformFeedbackQueries <- peek @Bool32 ((p `plusPtr` 44 :: Ptr Bool32))
-    transformFeedbackStreamsLinesTriangles <- peek @Bool32 ((p `plusPtr` 48 :: Ptr Bool32))
-    transformFeedbackRasterizationStreamSelect <- peek @Bool32 ((p `plusPtr` 52 :: Ptr Bool32))
-    transformFeedbackDraw <- peek @Bool32 ((p `plusPtr` 56 :: Ptr Bool32))
-    pure $ PhysicalDeviceTransformFeedbackPropertiesEXT
-             maxTransformFeedbackStreams
-             maxTransformFeedbackBuffers
-             maxTransformFeedbackBufferSize
-             maxTransformFeedbackStreamDataSize
-             maxTransformFeedbackBufferDataSize
-             maxTransformFeedbackBufferDataStride
-             (bool32ToBool transformFeedbackQueries)
-             (bool32ToBool transformFeedbackStreamsLinesTriangles)
-             (bool32ToBool transformFeedbackRasterizationStreamSelect)
-             (bool32ToBool transformFeedbackDraw)
-
-instance Storable PhysicalDeviceTransformFeedbackPropertiesEXT where
-  sizeOf ~_ = 64
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero PhysicalDeviceTransformFeedbackPropertiesEXT where
-  zero = PhysicalDeviceTransformFeedbackPropertiesEXT
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-
-
--- | VkPipelineRasterizationStateStreamCreateInfoEXT - Structure defining the
--- geometry stream used for rasterization
---
--- = Description
---
--- If this structure is not present, @rasterizationStream@ is assumed to be
--- zero.
---
--- == Valid Usage (Implicit)
+-- vertex, tessellation, or geometry shader outputs to one or more buffers.
+-- It adds API functionality to bind transform feedback buffers to capture
+-- the primitives emitted by the graphics pipeline from SPIR-V outputs
+-- decorated for transform feedback. The transform feedback capture can be
+-- paused and resumed by way of storing and retrieving a byte counter. The
+-- captured data can be drawn again where the vertex count is derived from
+-- the byte counter without CPU intervention. If the implementation is
+-- capable, a vertex stream other than zero can be rasterized.
+--
+-- All these features are designed to match the full capabilities of OpenGL
+-- core transform feedback functionality and beyond. Many of the features
+-- are optional to allow base OpenGL ES GPUs to also implement this
+-- extension.
+--
+-- The primary purpose of the functionality exposed by this extension is to
+-- support translation layers from other 3D APIs. This functionality is not
+-- considered forward looking, and is not expected to be promoted to a KHR
+-- extension or to core Vulkan. Unless this is needed for translation, it
+-- is recommended that developers use alternative techniques of using the
+-- GPU to process and capture vertex data.
+--
+-- == New Commands
+--
+-- -   'cmdBeginQueryIndexedEXT'
+--
+-- -   'cmdBeginTransformFeedbackEXT'
+--
+-- -   'cmdBindTransformFeedbackBuffersEXT'
+--
+-- -   'cmdDrawIndirectByteCountEXT'
+--
+-- -   'cmdEndQueryIndexedEXT'
+--
+-- -   'cmdEndTransformFeedbackEXT'
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceTransformFeedbackFeaturesEXT'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDeviceTransformFeedbackPropertiesEXT'
+--
+-- -   Extending
+--     'Vulkan.Core10.GraphicsPipeline.PipelineRasterizationStateCreateInfo':
+--
+--     -   'PipelineRasterizationStateStreamCreateInfoEXT'
+--
+-- == New Bitmasks
+--
+-- -   'PipelineRasterizationStateStreamCreateFlagsEXT'
+--
+-- == New Enum Constants
+--
+-- -   'EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME'
+--
+-- -   'EXT_TRANSFORM_FEEDBACK_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits':
+--
+--     -   'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT'
+--
+--     -   'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT'
+--
+--     -   'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BufferUsageFlagBits':
+--
+--     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT'
+--
+--     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits':
+--
+--     -   'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT'
+--
+-- -   Extending 'Vulkan.Core10.Enums.QueryType.QueryType':
+--
+--     -   'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT'
+--
+-- == Issues
+--
+-- 1) Should we include pause\/resume functionality?
+--
+-- __RESOLVED__: Yes, this is needed to ease layering other APIs which have
+-- this functionality. To pause use 'cmdEndTransformFeedbackEXT' and
+-- provide valid buffer handles in the @pCounterBuffers@ array and offsets
+-- in the @pCounterBufferOffsets@ array for the implementation to save the
+-- resume points. Then to resume use 'cmdBeginTransformFeedbackEXT' with
+-- the previous @pCounterBuffers@ and @pCounterBufferOffsets@ values.
+-- Between the pause and resume there needs to be a memory barrier for the
+-- counter buffers with a source access of
+-- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT'
+-- at pipeline stage
+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT'
+-- to a destination access of
+-- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT'
+-- at pipeline stage
+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT'.
+--
+-- 2) How does this interact with multiview?
+--
+-- __RESOLVED__: Transform feedback cannot be made active in a render pass
+-- with multiview enabled.
+--
+-- 3) How should queries be done?
+--
+-- __RESOLVED__: There is a new query type
+-- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT'.
+-- A query pool created with this type will capture 2 integers -
+-- numPrimitivesWritten and numPrimitivesNeeded - for the specified vertex
+-- stream output from the last
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader stage>.
+-- The vertex stream output queried is zero by default, but can be
+-- specified with the new 'cmdBeginQueryIndexedEXT' and
+-- 'cmdEndQueryIndexedEXT' commands.
+--
+-- == Version History
+--
+-- -   Revision 1, 2018-10-09 (Piers Daniell)
+--
+--     -   Internal revisions
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
+module Vulkan.Extensions.VK_EXT_transform_feedback  ( cmdBindTransformFeedbackBuffersEXT
+                                                    , cmdBeginTransformFeedbackEXT
+                                                    , cmdUseTransformFeedbackEXT
+                                                    , cmdEndTransformFeedbackEXT
+                                                    , cmdBeginQueryIndexedEXT
+                                                    , cmdUseQueryIndexedEXT
+                                                    , cmdEndQueryIndexedEXT
+                                                    , cmdDrawIndirectByteCountEXT
+                                                    , PhysicalDeviceTransformFeedbackFeaturesEXT(..)
+                                                    , PhysicalDeviceTransformFeedbackPropertiesEXT(..)
+                                                    , PipelineRasterizationStateStreamCreateInfoEXT(..)
+                                                    , PipelineRasterizationStateStreamCreateFlagsEXT(..)
+                                                    , EXT_TRANSFORM_FEEDBACK_SPEC_VERSION
+                                                    , pattern EXT_TRANSFORM_FEEDBACK_SPEC_VERSION
+                                                    , EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME
+                                                    , pattern EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME
+                                                    ) where
+
+import Data.Bits (Bits)
+import Data.Bits (FiniteBits)
+import Vulkan.Internal.Utils (enumReadPrec)
+import Vulkan.Internal.Utils (enumShowsPrec)
+import Vulkan.Internal.Utils (traceAroundEvent)
+import Control.Monad (unless)
+import Control.Monad.IO.Class (liftIO)
+import Foreign.Marshal.Alloc (allocaBytes)
+import GHC.IO (throwIO)
+import GHC.Ptr (nullFunPtr)
+import Foreign.Ptr (nullPtr)
+import Foreign.Ptr (plusPtr)
+import GHC.Show (showString)
+import Numeric (showHex)
+import Control.Monad.Trans.Class (lift)
+import Control.Monad.Trans.Cont (evalContT)
+import qualified Data.Vector (imapM_)
+import qualified Data.Vector (length)
+import 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 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 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.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.NamedType ((:::))
+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.Dynamic (DeviceCmds(pVkCmdBeginQueryIndexedEXT))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdBeginTransformFeedbackEXT))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdBindTransformFeedbackBuffersEXT))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdDrawIndirectByteCountEXT))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdEndQueryIndexedEXT))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdEndTransformFeedbackEXT))
+import Vulkan.Core10.FundamentalTypes (DeviceSize)
+import Vulkan.Core10.FundamentalTypes (Flags)
+import Vulkan.Core10.Enums.QueryControlFlagBits (QueryControlFlagBits(..))
+import Vulkan.Core10.Enums.QueryControlFlagBits (QueryControlFlags)
+import Vulkan.Core10.Handles (QueryPool)
+import Vulkan.Core10.Handles (QueryPool(..))
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT))
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdBindTransformFeedbackBuffersEXT
+  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Word32 -> Ptr Buffer -> Ptr DeviceSize -> Ptr DeviceSize -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Word32 -> Ptr Buffer -> Ptr DeviceSize -> Ptr DeviceSize -> IO ()
+
+-- | vkCmdBindTransformFeedbackBuffersEXT - Bind transform feedback buffers
+-- to a command buffer
+--
+-- = Description
+--
+-- The values taken from elements i of @pBuffers@, @pOffsets@ and @pSizes@
+-- replace the current state for the transform feedback binding
+-- @firstBinding@ + i, for i in [0, @bindingCount@). The transform feedback
+-- binding is updated to start at the offset indicated by @pOffsets@[i]
+-- from the start of the buffer @pBuffers@[i].
+--
+-- When an element of @pSizes@[i] is
+-- 'Vulkan.Core10.APIConstants.WHOLE_SIZE', or @pSizes@ is @NULL@, the
+-- effective range is calculated by taking the size of @pBuffers@[i] minus
+-- @pOffsets@[i]. Otherwise, the effective range is equal to the element in
+-- @pSizes@[i].
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdBindTransformFeedbackBuffersEXT-transformFeedback-02355#
+--     'PhysicalDeviceTransformFeedbackFeaturesEXT'::@transformFeedback@
+--     /must/ be enabled
+--
+-- -   #VUID-vkCmdBindTransformFeedbackBuffersEXT-firstBinding-02356#
+--     @firstBinding@ /must/ be less than
+--     'PhysicalDeviceTransformFeedbackPropertiesEXT'::@maxTransformFeedbackBuffers@
+--
+-- -   #VUID-vkCmdBindTransformFeedbackBuffersEXT-firstBinding-02357# The
+--     sum of @firstBinding@ and @bindingCount@ /must/ be less than or
+--     equal to
+--     'PhysicalDeviceTransformFeedbackPropertiesEXT'::@maxTransformFeedbackBuffers@
+--
+-- -   #VUID-vkCmdBindTransformFeedbackBuffersEXT-None-02365# Transform
+--     feedback /must/ not be active when the
+--     'cmdBindTransformFeedbackBuffersEXT' command is recorded
+--
+-- -   #VUID-vkCmdBindTransformFeedbackBuffersEXT-pOffsets-02358# All
+--     elements of @pOffsets@ /must/ be less than the size of the
+--     corresponding element in @pBuffers@
+--
+-- -   #VUID-vkCmdBindTransformFeedbackBuffersEXT-pOffsets-02359# All
+--     elements of @pOffsets@ /must/ be a multiple of 4
+--
+-- -   #VUID-vkCmdBindTransformFeedbackBuffersEXT-pBuffers-02360# All
+--     elements of @pBuffers@ /must/ have been created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdBindTransformFeedbackBuffersEXT-pOffsets-02363# All
+--     elements of @pOffsets@ plus the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#transform-feedback-effective-size effective size>
+--     of the element, /must/ be less than or equal to the size of the
+--     corresponding buffer in @pBuffers@
+--
+-- -   #VUID-vkCmdBindTransformFeedbackBuffersEXT-pBuffers-02364# Each
+--     element of @pBuffers@ that is non-sparse /must/ be bound completely
+--     and contiguously to a single 'Vulkan.Core10.Handles.DeviceMemory'
+--     object
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdBindTransformFeedbackBuffersEXT-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdBindTransformFeedbackBuffersEXT-pBuffers-parameter#
+--     @pBuffers@ /must/ be a valid pointer to an array of @bindingCount@
+--     valid 'Vulkan.Core10.Handles.Buffer' handles
+--
+-- -   #VUID-vkCmdBindTransformFeedbackBuffersEXT-pOffsets-parameter#
+--     @pOffsets@ /must/ be a valid pointer to an array of @bindingCount@
+--     'Vulkan.Core10.FundamentalTypes.DeviceSize' values
+--
+-- -   #VUID-vkCmdBindTransformFeedbackBuffersEXT-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-vkCmdBindTransformFeedbackBuffersEXT-commandBuffer-cmdpool#
+--     The 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
+--
+-- -   #VUID-vkCmdBindTransformFeedbackBuffersEXT-videocoding# This command
+--     /must/ only be called outside of a video coding scope
+--
+-- -   #VUID-vkCmdBindTransformFeedbackBuffersEXT-bindingCount-arraylength#
+--     @bindingCount@ /must/ be greater than @0@
+--
+-- -   #VUID-vkCmdBindTransformFeedbackBuffersEXT-commonparent# Both of
+--     @commandBuffer@, and the elements of @pBuffers@ /must/ have been
+--     created, allocated, or retrieved from the same
+--     'Vulkan.Core10.Handles.Device'
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdBindTransformFeedbackBuffersEXT is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_transform_feedback VK_EXT_transform_feedback>,
+-- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize'
+cmdBindTransformFeedbackBuffersEXT :: forall io
+                                    . (MonadIO io)
+                                   => -- | @commandBuffer@ is the command buffer into which the command is
+                                      -- recorded.
+                                      CommandBuffer
+                                   -> -- | @firstBinding@ is the index of the first transform feedback 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
+                                      -- 'Vulkan.Core10.FundamentalTypes.DeviceSize' buffer sizes, specifying the
+                                      -- maximum number of bytes to capture to the corresponding transform
+                                      -- feedback buffer. If @pSizes@ is @NULL@, it is equivalent to setting a
+                                      -- @pSizes@ array where every element is
+                                      -- 'Vulkan.Core10.APIConstants.WHOLE_SIZE'.
+                                      ("sizes" ::: Vector DeviceSize)
+                                   -> io ()
+cmdBindTransformFeedbackBuffersEXT commandBuffer
+                                     firstBinding
+                                     buffers
+                                     offsets
+                                     sizes = liftIO . evalContT $ do
+  let vkCmdBindTransformFeedbackBuffersEXTPtr = pVkCmdBindTransformFeedbackBuffersEXT (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdBindTransformFeedbackBuffersEXTPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdBindTransformFeedbackBuffersEXT is null" Nothing Nothing
+  let vkCmdBindTransformFeedbackBuffersEXT' = mkVkCmdBindTransformFeedbackBuffersEXT vkCmdBindTransformFeedbackBuffersEXTPtr
+  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
+  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
+  lift $ traceAroundEvent "vkCmdBindTransformFeedbackBuffersEXT" (vkCmdBindTransformFeedbackBuffersEXT'
+                                                                    (commandBufferHandle (commandBuffer))
+                                                                    (firstBinding)
+                                                                    ((fromIntegral pBuffersLength :: Word32))
+                                                                    (pPBuffers)
+                                                                    (pPOffsets)
+                                                                    pSizes)
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdBeginTransformFeedbackEXT
+  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Word32 -> Ptr Buffer -> Ptr DeviceSize -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Word32 -> Ptr Buffer -> Ptr DeviceSize -> IO ()
+
+-- | vkCmdBeginTransformFeedbackEXT - Make transform feedback active in the
+-- command buffer
+--
+-- = Description
+--
+-- The active transform feedback buffers will capture primitives emitted
+-- from the corresponding @XfbBuffer@ in the bound graphics pipeline. Any
+-- @XfbBuffer@ emitted that does not output to an active transform feedback
+-- buffer will not be captured.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdBeginTransformFeedbackEXT-transformFeedback-02366#
+--     'PhysicalDeviceTransformFeedbackFeaturesEXT'::@transformFeedback@
+--     /must/ be enabled
+--
+-- -   #VUID-vkCmdBeginTransformFeedbackEXT-None-02367# Transform feedback
+--     /must/ not be active
+--
+-- -   #VUID-vkCmdBeginTransformFeedbackEXT-firstCounter-02368#
+--     @firstCounterBuffer@ /must/ be less than
+--     'PhysicalDeviceTransformFeedbackPropertiesEXT'::@maxTransformFeedbackBuffers@
+--
+-- -   #VUID-vkCmdBeginTransformFeedbackEXT-firstCounter-02369# The sum of
+--     @firstCounterBuffer@ and @counterBufferCount@ /must/ be less than or
+--     equal to
+--     'PhysicalDeviceTransformFeedbackPropertiesEXT'::@maxTransformFeedbackBuffers@
+--
+-- -   #VUID-vkCmdBeginTransformFeedbackEXT-firstCounter-09630# The sum of
+--     @firstCounterBuffer@ and @counterBufferCount@ /must/ be less than or
+--     equal to the number of transform feedback buffers bound by
+--     'cmdBindTransformFeedbackBuffersEXT'
+--
+-- -   #VUID-vkCmdBeginTransformFeedbackEXT-None-06233# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject>
+--     feature is not enabled, a valid graphics pipeline /must/ be bound to
+--     '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#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader stage>
+--     of the bound graphics pipeline /must/ have been declared with the
+--     @Xfb@ execution mode
+--
+-- -   #VUID-vkCmdBeginTransformFeedbackEXT-None-02373# Transform feedback
+--     /must/ not be made active in a render pass instance with multiview
+--     enabled
+--
+-- -   #VUID-vkCmdBeginTransformFeedbackEXT-None-10656# This command /must/
+--     not be recorded when
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model>
+--     is enabled
+--
+-- -   #VUID-vkCmdBeginTransformFeedbackEXT-counterBufferCount-02607# If
+--     @counterBufferCount@ is not @0@, and @pCounterBuffers@ is not
+--     @NULL@, @pCounterBuffers@ /must/ be a valid pointer to an array of
+--     @counterBufferCount@ 'Vulkan.Core10.Handles.Buffer' handles that are
+--     either valid or 'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-vkCmdBeginTransformFeedbackEXT-pCounterBufferOffsets-02370#
+--     For each buffer handle in the array, if it is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' it /must/ reference a
+--     buffer large enough to hold 4 bytes at the corresponding offset from
+--     the @pCounterBufferOffsets@ array
+--
+-- -   #VUID-vkCmdBeginTransformFeedbackEXT-pCounterBuffer-02371# If
+--     @pCounterBuffer@ is @NULL@, then @pCounterBufferOffsets@ /must/ also
+--     be @NULL@
+--
+-- -   #VUID-vkCmdBeginTransformFeedbackEXT-pCounterBuffers-02372# For each
+--     buffer handle in the @pCounterBuffers@ array that is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' it /must/ have been with
+--     the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT'
+--     usage flag set
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdBeginTransformFeedbackEXT-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdBeginTransformFeedbackEXT-pCounterBufferOffsets-parameter#
+--     If @counterBufferCount@ is not @0@, and @pCounterBufferOffsets@ is
+--     not @NULL@, @pCounterBufferOffsets@ /must/ be a valid pointer to an
+--     array of @counterBufferCount@
+--     'Vulkan.Core10.FundamentalTypes.DeviceSize' values
+--
+-- -   #VUID-vkCmdBeginTransformFeedbackEXT-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-vkCmdBeginTransformFeedbackEXT-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
+--
+-- -   #VUID-vkCmdBeginTransformFeedbackEXT-renderpass# This command /must/
+--     only be called inside of a render pass instance
+--
+-- -   #VUID-vkCmdBeginTransformFeedbackEXT-videocoding# This command
+--     /must/ only be called outside of a video coding scope
+--
+-- -   #VUID-vkCmdBeginTransformFeedbackEXT-commonparent# Both of
+--     @commandBuffer@, and the elements of @pCounterBuffers@ 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#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Inside                                                                                                                 | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdBeginTransformFeedbackEXT is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_transform_feedback VK_EXT_transform_feedback>,
+-- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize'
+cmdBeginTransformFeedbackEXT :: forall io
+                              . (MonadIO io)
+                             => -- | @commandBuffer@ is the command buffer into which the command is
+                                -- recorded.
+                                CommandBuffer
+                             -> -- | @firstCounterBuffer@ is the index of the first transform feedback buffer
+                                -- corresponding to @pCounterBuffers@[0] and @pCounterBufferOffsets@[0].
+                                ("firstCounterBuffer" ::: Word32)
+                             -> -- | @pCounterBuffers@ is @NULL@ or a pointer to an array of
+                                -- 'Vulkan.Core10.Handles.Buffer' handles to counter buffers. Each buffer
+                                -- contains a 4 byte integer value representing the byte offset from the
+                                -- start of the corresponding transform feedback buffer from where to start
+                                -- capturing vertex data. If the byte offset stored to the counter buffer
+                                -- location was done using 'cmdEndTransformFeedbackEXT' it can be used to
+                                -- resume transform feedback from the previous location. In that case, a
+                                -- pipeline barrier is required between the calls to
+                                -- 'cmdEndTransformFeedbackEXT' and 'cmdBeginTransformFeedbackEXT', with
+                                -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT'
+                                -- as the source and destination stages,
+                                -- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT'
+                                -- as the source access and
+                                -- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT'
+                                -- as the destination access. If @pCounterBuffers@ is @NULL@, then
+                                -- transform feedback will start capturing vertex data to byte offset zero
+                                -- in all bound transform feedback buffers. For each element of
+                                -- @pCounterBuffers@ that is 'Vulkan.Core10.APIConstants.NULL_HANDLE',
+                                -- transform feedback will start capturing vertex data to byte zero in the
+                                -- corresponding bound transform feedback buffer.
+                                ("counterBuffers" ::: Vector Buffer)
+                             -> -- | @pCounterBufferOffsets@ is @NULL@ or a pointer to an array of
+                                -- 'Vulkan.Core10.FundamentalTypes.DeviceSize' values specifying offsets
+                                -- within each of the @pCounterBuffers@ where the counter values were
+                                -- previously written. The location in each counter buffer at these offsets
+                                -- /must/ be large enough to contain 4 bytes of data. This data is the
+                                -- number of bytes captured by the previous transform feedback to this
+                                -- buffer. If @pCounterBufferOffsets@ is @NULL@, then it is assumed the
+                                -- offsets are zero.
+                                ("counterBufferOffsets" ::: Vector DeviceSize)
+                             -> io ()
+cmdBeginTransformFeedbackEXT commandBuffer
+                               firstCounterBuffer
+                               counterBuffers
+                               counterBufferOffsets = liftIO . evalContT $ do
+  let vkCmdBeginTransformFeedbackEXTPtr = pVkCmdBeginTransformFeedbackEXT (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdBeginTransformFeedbackEXTPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdBeginTransformFeedbackEXT is null" Nothing Nothing
+  let vkCmdBeginTransformFeedbackEXT' = mkVkCmdBeginTransformFeedbackEXT vkCmdBeginTransformFeedbackEXTPtr
+  let pCounterBuffersLength = Data.Vector.length $ (counterBuffers)
+  let pCounterBufferOffsetsLength = Data.Vector.length $ (counterBufferOffsets)
+  lift $ unless (fromIntegral pCounterBufferOffsetsLength == pCounterBuffersLength || pCounterBufferOffsetsLength == 0) $
+    throwIO $ IOError Nothing InvalidArgument "" "pCounterBufferOffsets and pCounterBuffers must have the same length" Nothing Nothing
+  pPCounterBuffers <- ContT $ allocaBytes @Buffer ((Data.Vector.length (counterBuffers)) * 8)
+  lift $ Data.Vector.imapM_ (\i e -> poke (pPCounterBuffers `plusPtr` (8 * (i)) :: Ptr Buffer) (e)) (counterBuffers)
+  pCounterBufferOffsets <- if Data.Vector.null (counterBufferOffsets)
+    then pure nullPtr
+    else do
+      pPCounterBufferOffsets <- ContT $ allocaBytes @DeviceSize (((Data.Vector.length (counterBufferOffsets))) * 8)
+      lift $ Data.Vector.imapM_ (\i e -> poke (pPCounterBufferOffsets `plusPtr` (8 * (i)) :: Ptr DeviceSize) (e)) ((counterBufferOffsets))
+      pure $ pPCounterBufferOffsets
+  lift $ traceAroundEvent "vkCmdBeginTransformFeedbackEXT" (vkCmdBeginTransformFeedbackEXT'
+                                                              (commandBufferHandle (commandBuffer))
+                                                              (firstCounterBuffer)
+                                                              ((fromIntegral pCounterBuffersLength :: Word32))
+                                                              (pPCounterBuffers)
+                                                              pCounterBufferOffsets)
+  pure $ ()
+
+-- | This function will call the supplied action between calls to
+-- 'cmdBeginTransformFeedbackEXT' and 'cmdEndTransformFeedbackEXT'
+--
+-- Note that 'cmdEndTransformFeedbackEXT' is *not* called if an exception
+-- is thrown by the inner action.
+cmdUseTransformFeedbackEXT :: forall io r . MonadIO io => CommandBuffer -> Word32 -> Vector Buffer -> Vector DeviceSize -> io r -> io r
+cmdUseTransformFeedbackEXT commandBuffer
+                             firstCounterBuffer
+                             pCounterBuffers
+                             pCounterBufferOffsets
+                             a =
+  (cmdBeginTransformFeedbackEXT commandBuffer
+                                  firstCounterBuffer
+                                  pCounterBuffers
+                                  pCounterBufferOffsets) *> a <* (cmdEndTransformFeedbackEXT commandBuffer
+                                                                                               firstCounterBuffer
+                                                                                               pCounterBuffers
+                                                                                               pCounterBufferOffsets)
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdEndTransformFeedbackEXT
+  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Word32 -> Ptr Buffer -> Ptr DeviceSize -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Word32 -> Ptr Buffer -> Ptr DeviceSize -> IO ()
+
+-- | vkCmdEndTransformFeedbackEXT - Make transform feedback inactive in the
+-- command buffer
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdEndTransformFeedbackEXT-transformFeedback-02374#
+--     'PhysicalDeviceTransformFeedbackFeaturesEXT'::@transformFeedback@
+--     /must/ be enabled
+--
+-- -   #VUID-vkCmdEndTransformFeedbackEXT-None-02375# Transform feedback
+--     /must/ be active
+--
+-- -   #VUID-vkCmdEndTransformFeedbackEXT-firstCounterBuffer-02376#
+--     @firstCounterBuffer@ /must/ be less than
+--     'PhysicalDeviceTransformFeedbackPropertiesEXT'::@maxTransformFeedbackBuffers@
+--
+-- -   #VUID-vkCmdEndTransformFeedbackEXT-firstCounterBuffer-02377# The sum
+--     of @firstCounterBuffer@ and @counterBufferCount@ /must/ be less than
+--     or equal to
+--     'PhysicalDeviceTransformFeedbackPropertiesEXT'::@maxTransformFeedbackBuffers@
+--
+-- -   #VUID-vkCmdEndTransformFeedbackEXT-None-10657# This command /must/
+--     not be recorded when
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model>
+--     is enabled
+--
+-- -   #VUID-vkCmdEndTransformFeedbackEXT-counterBufferCount-02608# If
+--     @counterBufferCount@ is not @0@, and @pCounterBuffers@ is not
+--     @NULL@, @pCounterBuffers@ /must/ be a valid pointer to an array of
+--     @counterBufferCount@ 'Vulkan.Core10.Handles.Buffer' handles that are
+--     either valid or 'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-vkCmdEndTransformFeedbackEXT-pCounterBufferOffsets-02378# For
+--     each buffer handle in the array, if it is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' it /must/ reference a
+--     buffer large enough to hold 4 bytes at the corresponding offset from
+--     the @pCounterBufferOffsets@ array
+--
+-- -   #VUID-vkCmdEndTransformFeedbackEXT-pCounterBuffer-02379# If
+--     @pCounterBuffer@ is @NULL@, then @pCounterBufferOffsets@ /must/ also
+--     be @NULL@
+--
+-- -   #VUID-vkCmdEndTransformFeedbackEXT-pCounterBuffers-02380# For each
+--     buffer handle in the @pCounterBuffers@ array that is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' it /must/ have been created
+--     with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT'
+--     usage flag set
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdEndTransformFeedbackEXT-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdEndTransformFeedbackEXT-pCounterBufferOffsets-parameter#
+--     If @counterBufferCount@ is not @0@, and @pCounterBufferOffsets@ is
+--     not @NULL@, @pCounterBufferOffsets@ /must/ be a valid pointer to an
+--     array of @counterBufferCount@
+--     'Vulkan.Core10.FundamentalTypes.DeviceSize' values
+--
+-- -   #VUID-vkCmdEndTransformFeedbackEXT-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-vkCmdEndTransformFeedbackEXT-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
+--
+-- -   #VUID-vkCmdEndTransformFeedbackEXT-renderpass# This command /must/
+--     only be called inside of a render pass instance
+--
+-- -   #VUID-vkCmdEndTransformFeedbackEXT-videocoding# This command /must/
+--     only be called outside of a video coding scope
+--
+-- -   #VUID-vkCmdEndTransformFeedbackEXT-commonparent# Both of
+--     @commandBuffer@, and the elements of @pCounterBuffers@ 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#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Inside                                                                                                                 | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdEndTransformFeedbackEXT is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_transform_feedback VK_EXT_transform_feedback>,
+-- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize'
+cmdEndTransformFeedbackEXT :: forall io
+                            . (MonadIO io)
+                           => -- | @commandBuffer@ is the command buffer into which the command is
+                              -- recorded.
+                              CommandBuffer
+                           -> -- | @firstCounterBuffer@ is the index of the first transform feedback buffer
+                              -- corresponding to @pCounterBuffers@[0] and @pCounterBufferOffsets@[0].
+                              ("firstCounterBuffer" ::: Word32)
+                           -> -- | @pCounterBuffers@ is @NULL@ or a pointer to an array of
+                              -- 'Vulkan.Core10.Handles.Buffer' handles to counter buffers. The counter
+                              -- buffers are used to record the current byte positions of each transform
+                              -- feedback buffer where the next vertex output data would be captured.
+                              -- This /can/ be used by a subsequent 'cmdBeginTransformFeedbackEXT' call
+                              -- to resume transform feedback capture from this position. It can also be
+                              -- used by 'cmdDrawIndirectByteCountEXT' to determine the vertex count of
+                              -- the draw call.
+                              ("counterBuffers" ::: Vector Buffer)
+                           -> -- | @pCounterBufferOffsets@ is @NULL@ or a pointer to an array of
+                              -- 'Vulkan.Core10.FundamentalTypes.DeviceSize' values specifying offsets
+                              -- within each of the @pCounterBuffers@ where the counter values can be
+                              -- written. The location in each counter buffer at these offsets /must/ be
+                              -- large enough to contain 4 bytes of data. The data stored at this
+                              -- location is the byte offset from the start of the transform feedback
+                              -- buffer binding where the next vertex data would be written. If
+                              -- @pCounterBufferOffsets@ is @NULL@, then it is assumed the offsets are
+                              -- zero.
+                              ("counterBufferOffsets" ::: Vector DeviceSize)
+                           -> io ()
+cmdEndTransformFeedbackEXT commandBuffer
+                             firstCounterBuffer
+                             counterBuffers
+                             counterBufferOffsets = liftIO . evalContT $ do
+  let vkCmdEndTransformFeedbackEXTPtr = pVkCmdEndTransformFeedbackEXT (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdEndTransformFeedbackEXTPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdEndTransformFeedbackEXT is null" Nothing Nothing
+  let vkCmdEndTransformFeedbackEXT' = mkVkCmdEndTransformFeedbackEXT vkCmdEndTransformFeedbackEXTPtr
+  let pCounterBuffersLength = Data.Vector.length $ (counterBuffers)
+  let pCounterBufferOffsetsLength = Data.Vector.length $ (counterBufferOffsets)
+  lift $ unless (fromIntegral pCounterBufferOffsetsLength == pCounterBuffersLength || pCounterBufferOffsetsLength == 0) $
+    throwIO $ IOError Nothing InvalidArgument "" "pCounterBufferOffsets and pCounterBuffers must have the same length" Nothing Nothing
+  pPCounterBuffers <- ContT $ allocaBytes @Buffer ((Data.Vector.length (counterBuffers)) * 8)
+  lift $ Data.Vector.imapM_ (\i e -> poke (pPCounterBuffers `plusPtr` (8 * (i)) :: Ptr Buffer) (e)) (counterBuffers)
+  pCounterBufferOffsets <- if Data.Vector.null (counterBufferOffsets)
+    then pure nullPtr
+    else do
+      pPCounterBufferOffsets <- ContT $ allocaBytes @DeviceSize (((Data.Vector.length (counterBufferOffsets))) * 8)
+      lift $ Data.Vector.imapM_ (\i e -> poke (pPCounterBufferOffsets `plusPtr` (8 * (i)) :: Ptr DeviceSize) (e)) ((counterBufferOffsets))
+      pure $ pPCounterBufferOffsets
+  lift $ traceAroundEvent "vkCmdEndTransformFeedbackEXT" (vkCmdEndTransformFeedbackEXT'
+                                                            (commandBufferHandle (commandBuffer))
+                                                            (firstCounterBuffer)
+                                                            ((fromIntegral pCounterBuffersLength :: Word32))
+                                                            (pPCounterBuffers)
+                                                            pCounterBufferOffsets)
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdBeginQueryIndexedEXT
+  :: FunPtr (Ptr CommandBuffer_T -> QueryPool -> Word32 -> QueryControlFlags -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> QueryPool -> Word32 -> QueryControlFlags -> Word32 -> IO ()
+
+-- | vkCmdBeginQueryIndexedEXT - Begin an indexed query
+--
+-- = Description
+--
+-- The 'cmdBeginQueryIndexedEXT' command operates the same as the
+-- 'Vulkan.Core10.CommandBufferBuilding.cmdBeginQuery' command, except that
+-- it also accepts a query type specific @index@ parameter.
+--
+-- This command defines an execution dependency between other query
+-- commands that reference the same query index.
+--
+-- The first
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+-- includes all commands which reference the queries in @queryPool@
+-- indicated by @query@ and @index@ that occur earlier in
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-submission-order submission order>.
+--
+-- The second
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+-- includes all commands which reference the queries in @queryPool@
+-- indicated by @query@ and @index@ that occur later in
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-submission-order submission order>.
+--
+-- The operation of this command happens after the first scope and happens
+-- before the second scope.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdBeginQueryIndexedEXT-None-00807# All queries used by the
+--     command /must/ be /unavailable/
+--
+-- -   #VUID-vkCmdBeginQueryIndexedEXT-queryType-02804# The @queryType@
+--     used to create @queryPool@ /must/ not be
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TIMESTAMP'
+--
+-- -   #VUID-vkCmdBeginQueryIndexedEXT-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-vkCmdBeginQueryIndexedEXT-queryType-06741# The @queryType@
+--     used to create @queryPool@ /must/ not be
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_SIZE_KHR'
+--     or
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR'
+--
+-- -   #VUID-vkCmdBeginQueryIndexedEXT-queryType-04729# The @queryType@
+--     used to create @queryPool@ /must/ not be
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV'
+--
+-- -   #VUID-vkCmdBeginQueryIndexedEXT-queryType-08972# The @queryType@
+--     used to create @queryPool@ /must/ not be
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_MICROMAP_SERIALIZATION_SIZE_EXT',
+--     or
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_MICROMAP_COMPACTED_SIZE_EXT'
+--
+-- -   #VUID-vkCmdBeginQueryIndexedEXT-queryType-00800# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-occlusionQueryPrecise occlusionQueryPrecise>
+--     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-vkCmdBeginQueryIndexedEXT-query-00802# @query@ /must/ be less
+--     than the number of queries in @queryPool@
+--
+-- -   #VUID-vkCmdBeginQueryIndexedEXT-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-vkCmdBeginQueryIndexedEXT-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-vkCmdBeginQueryIndexedEXT-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-vkCmdBeginQueryIndexedEXT-commandBuffer-01885# @commandBuffer@
+--     /must/ not be a protected command buffer
+--
+-- -   #VUID-vkCmdBeginQueryIndexedEXT-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-vkCmdBeginQueryIndexedEXT-queryType-07126# If the @queryType@
+--     used to create @queryPool@ was
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueryType VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR>,
+--     then the 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@
+--     was allocated from /must/ have been created with a queue family
+--     index that supports
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-result-status-only result status queries>,
+--     as indicated by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFamilyQueryResultStatusPropertiesKHR VkQueueFamilyQueryResultStatusPropertiesKHR>::@queryResultStatusSupport@
+--
+-- -   #VUID-vkCmdBeginQueryIndexedEXT-None-07127# If there is a bound
+--     video session, then there /must/ be no
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-active active>
+--     queries
+--
+-- -   #VUID-vkCmdBeginQueryIndexedEXT-None-08370# If there is a bound
+--     video session, then it /must/ not have been created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoSessionCreateFlagBitsKHR VK_VIDEO_SESSION_CREATE_INLINE_QUERIES_BIT_KHR>
+--
+-- -   #VUID-vkCmdBeginQueryIndexedEXT-queryType-07128# If the @queryType@
+--     used to create @queryPool@ was
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueryType VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR>
+--     and there is a bound video session, then @queryPool@ /must/ have
+--     been created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoProfileInfoKHR VkVideoProfileInfoKHR>
+--     structure included in the @pNext@ chain of
+--     'Vulkan.Core10.Query.QueryPoolCreateInfo' identical to the one
+--     specified in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoSessionCreateInfoKHR VkVideoSessionCreateInfoKHR>::@pVideoProfile@
+--     the bound video session was created with
+--
+-- -   #VUID-vkCmdBeginQueryIndexedEXT-queryType-07129# If the @queryType@
+--     used to create @queryPool@ was
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueryType VK_QUERY_TYPE_VIDEO_ENCODE_FEEDBACK_KHR>,
+--     then there /must/ be a bound video session
+--
+-- -   #VUID-vkCmdBeginQueryIndexedEXT-queryType-07130# If the @queryType@
+--     used to create @queryPool@ was
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueryType VK_QUERY_TYPE_VIDEO_ENCODE_FEEDBACK_KHR>
+--     and there is a bound video session, then @queryPool@ /must/ have
+--     been created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoProfileInfoKHR VkVideoProfileInfoKHR>
+--     structure included in the @pNext@ chain of
+--     'Vulkan.Core10.Query.QueryPoolCreateInfo' identical to the one
+--     specified in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoSessionCreateInfoKHR VkVideoSessionCreateInfoKHR>::@pVideoProfile@
+--     the bound video session was created with
+--
+-- -   #VUID-vkCmdBeginQueryIndexedEXT-queryType-07131# If the @queryType@
+--     used to create @queryPool@ was not
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueryType VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueryType VK_QUERY_TYPE_VIDEO_ENCODE_FEEDBACK_KHR>,
+--     then there /must/ be no bound video session
+--
+-- -   #VUID-vkCmdBeginQueryIndexedEXT-None-10681# This command /must/ not
+--     be recorded when
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model>
+--     is enabled
+--
+-- -   #VUID-vkCmdBeginQueryIndexedEXT-queryType-12423# If the @queryType@
+--     used to create @queryPool@ was
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TIME_ELAPSED_QCOM', the
+--     command pool’s queue family /must/ support a non-zero
+--     @timestampValidBits@
+--
+-- -   #VUID-vkCmdBeginQueryIndexedEXT-queryPool-04753# If the @queryPool@
+--     was created with the same @queryType@ as that of another
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#queries-operation-active active>
+--     query within @commandBuffer@, then @index@ /must/ not match the
+--     index used for the active query
+--
+-- -   #VUID-vkCmdBeginQueryIndexedEXT-queryType-02338# 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-vkCmdBeginQueryIndexedEXT-queryType-02339# If the @queryType@
+--     used to create @queryPool@ was
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT'
+--     the @index@ parameter /must/ be less than
+--     'PhysicalDeviceTransformFeedbackPropertiesEXT'::@maxTransformFeedbackStreams@
+--
+-- -   #VUID-vkCmdBeginQueryIndexedEXT-queryType-06692# If the @queryType@
+--     used to create @queryPool@ was not
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT'
+--     and not
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT',
+--     the @index@ /must/ be zero
+--
+-- -   #VUID-vkCmdBeginQueryIndexedEXT-queryType-06689# If the @queryType@
+--     used to create @queryPool@ was
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
+--     the 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support graphics operations
+--
+-- -   #VUID-vkCmdBeginQueryIndexedEXT-queryType-06690# If the @queryType@
+--     used to create @queryPool@ was
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
+--     the @index@ parameter /must/ be less than
+--     'PhysicalDeviceTransformFeedbackPropertiesEXT'::@maxTransformFeedbackStreams@
+--
+-- -   #VUID-vkCmdBeginQueryIndexedEXT-queryType-06691# If the @queryType@
+--     used to create @queryPool@ was
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
+--     and the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>
+--     feature is not enabled, the @index@ parameter /must/ be zero
+--
+-- -   #VUID-vkCmdBeginQueryIndexedEXT-queryType-06693# If the @queryType@
+--     used to create @queryPool@ was
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
+--     then
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-primitivesGeneratedQuery primitivesGeneratedQuery>
+--     /must/ be enabled
+--
+-- -   #VUID-vkCmdBeginQueryIndexedEXT-queryType-02341# If the @queryType@
+--     used to create @queryPool@ was
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT'
+--     then
+--     'PhysicalDeviceTransformFeedbackPropertiesEXT'::@transformFeedbackQueries@
+--     /must/ be supported
+--
+-- -   #VUID-vkCmdBeginQueryIndexedEXT-queryType-07071# The @queryType@
+--     used to create @queryPool@ /must/ not be
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_MESH_PRIMITIVES_GENERATED_EXT'
+--
+-- -   #VUID-vkCmdBeginQueryIndexedEXT-queryPool-07289# If @queryPool@ was
+--     created with a @queryType@ of
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR',
+--     then the
+--     'Vulkan.Extensions.VK_KHR_performance_query.QueryPoolPerformanceCreateInfoKHR'::@queueFamilyIndex@
+--     @queryPool@ was created with /must/ equal the queue family index of
+--     the 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from
+--
+-- -   #VUID-vkCmdBeginQueryIndexedEXT-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-vkCmdBeginQueryIndexedEXT-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-vkCmdBeginQueryIndexedEXT-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-vkCmdBeginQueryIndexedEXT-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-vkCmdBeginQueryIndexedEXT-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
+--     'Vulkan.Core10.CommandBufferBuilding.cmdResetQueryPool' command
+--     affecting the same query
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdBeginQueryIndexedEXT-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdBeginQueryIndexedEXT-queryPool-parameter# @queryPool@
+--     /must/ be a valid 'Vulkan.Core10.Handles.QueryPool' handle
+--
+-- -   #VUID-vkCmdBeginQueryIndexedEXT-flags-parameter# @flags@ /must/ be a
+--     valid combination of
+--     'Vulkan.Core10.Enums.QueryControlFlagBits.QueryControlFlagBits'
+--     values
+--
+-- -   #VUID-vkCmdBeginQueryIndexedEXT-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-vkCmdBeginQueryIndexedEXT-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT',
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT',
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits VK_QUEUE_VIDEO_DECODE_BIT_KHR>,
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits VK_QUEUE_VIDEO_ENCODE_BIT_KHR>
+--     operations
+--
+-- -   #VUID-vkCmdBeginQueryIndexedEXT-suspended# This command /must/ not
+--     be called between suspended render pass instances
+--
+-- -   #VUID-vkCmdBeginQueryIndexedEXT-videocoding# This command /must/
+--     only be called outside of a video coding scope
+--
+-- -   #VUID-vkCmdBeginQueryIndexedEXT-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#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
+-- |                                                                                                                            |                                                                                                                        |                                                                                                                             | VK_QUEUE_VIDEO_DECODE_BIT_KHR                                                                                         |                                                                                                                                        |
+-- |                                                                                                                            |                                                                                                                        |                                                                                                                             | VK_QUEUE_VIDEO_ENCODE_BIT_KHR                                                                                         |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdBeginQueryIndexedEXT is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_transform_feedback VK_EXT_transform_feedback>,
+-- 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'Vulkan.Core10.Enums.QueryControlFlagBits.QueryControlFlags',
+-- 'Vulkan.Core10.Handles.QueryPool',
+-- 'Vulkan.Core10.CommandBufferBuilding.cmdBeginQuery',
+-- 'Vulkan.Core10.CommandBufferBuilding.cmdEndQuery',
+-- 'cmdEndQueryIndexedEXT'
+cmdBeginQueryIndexedEXT :: 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
+                        -> -- | @index@ is the query type specific index. When the query type is
+                           -- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT'
+                           -- or 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT',
+                           -- the index represents the vertex stream.
+                           ("index" ::: Word32)
+                        -> io ()
+cmdBeginQueryIndexedEXT commandBuffer queryPool query flags index = liftIO $ do
+  let vkCmdBeginQueryIndexedEXTPtr = pVkCmdBeginQueryIndexedEXT (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  unless (vkCmdBeginQueryIndexedEXTPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdBeginQueryIndexedEXT is null" Nothing Nothing
+  let vkCmdBeginQueryIndexedEXT' = mkVkCmdBeginQueryIndexedEXT vkCmdBeginQueryIndexedEXTPtr
+  traceAroundEvent "vkCmdBeginQueryIndexedEXT" (vkCmdBeginQueryIndexedEXT'
+                                                  (commandBufferHandle (commandBuffer))
+                                                  (queryPool)
+                                                  (query)
+                                                  (flags)
+                                                  (index))
+  pure $ ()
+
+-- | This function will call the supplied action between calls to
+-- 'cmdBeginQueryIndexedEXT' and 'cmdEndQueryIndexedEXT'
+--
+-- Note that 'cmdEndQueryIndexedEXT' is *not* called if an exception is
+-- thrown by the inner action.
+cmdUseQueryIndexedEXT :: forall io r . MonadIO io => CommandBuffer -> QueryPool -> Word32 -> QueryControlFlags -> Word32 -> io r -> io r
+cmdUseQueryIndexedEXT commandBuffer queryPool query flags index a =
+  (cmdBeginQueryIndexedEXT commandBuffer
+                             queryPool
+                             query
+                             flags
+                             index) *> a <* (cmdEndQueryIndexedEXT commandBuffer
+                                                                     queryPool
+                                                                     query
+                                                                     index)
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdEndQueryIndexedEXT
+  :: FunPtr (Ptr CommandBuffer_T -> QueryPool -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> QueryPool -> Word32 -> Word32 -> IO ()
+
+-- | vkCmdEndQueryIndexedEXT - Ends a query
+--
+-- = Description
+--
+-- The command completes the query in @queryPool@ identified by @query@ and
+-- @index@, and marks it as available.
+--
+-- The 'cmdEndQueryIndexedEXT' command operates the same as the
+-- 'Vulkan.Core10.CommandBufferBuilding.cmdEndQuery' command, except that
+-- it also accepts a query type specific @index@ parameter.
+--
+-- This command defines an execution dependency between other query
+-- commands that reference the same query index.
+--
+-- The first
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+-- includes all commands which reference the queries in @queryPool@
+-- indicated by @query@ that occur earlier in
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-submission-order submission order>.
+--
+-- The second
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+-- includes only the operation of this command.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdEndQueryIndexedEXT-None-02342# All queries used by the
+--     command /must/ be
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#queries-operation-active active>
+--
+-- -   #VUID-vkCmdEndQueryIndexedEXT-query-02343# @query@ /must/ be less
+--     than the number of queries in @queryPool@
+--
+-- -   #VUID-vkCmdEndQueryIndexedEXT-commandBuffer-02344# @commandBuffer@
+--     /must/ not be a protected command buffer
+--
+-- -   #VUID-vkCmdEndQueryIndexedEXT-query-02345# If
+--     'cmdEndQueryIndexedEXT' 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-vkCmdEndQueryIndexedEXT-queryType-06694# If the @queryType@
+--     used to create @queryPool@ was
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT'
+--     or
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT',
+--     the @index@ parameter /must/ be less than
+--     'PhysicalDeviceTransformFeedbackPropertiesEXT'::@maxTransformFeedbackStreams@
+--
+-- -   #VUID-vkCmdEndQueryIndexedEXT-queryType-06695# If the @queryType@
+--     used to create @queryPool@ was not
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT'
+--     and not
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT',
+--     the @index@ /must/ be zero
+--
+-- -   #VUID-vkCmdEndQueryIndexedEXT-queryType-06696# If the @queryType@
+--     used to create @queryPool@ was
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT'
+--     or
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT',
+--     @index@ /must/ equal the @index@ used to begin the query
+--
+-- -   #VUID-vkCmdEndQueryIndexedEXT-None-07007# If called within a subpass
+--     of a render pass instance, the corresponding
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBeginQuery'* command /must/
+--     have been called previously within the same subpass
+--
+-- -   #VUID-vkCmdEndQueryIndexedEXT-None-10682# This command /must/ not be
+--     recorded when
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model>
+--     is enabled
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdEndQueryIndexedEXT-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdEndQueryIndexedEXT-queryPool-parameter# @queryPool@
+--     /must/ be a valid 'Vulkan.Core10.Handles.QueryPool' handle
+--
+-- -   #VUID-vkCmdEndQueryIndexedEXT-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-vkCmdEndQueryIndexedEXT-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT',
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT',
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits VK_QUEUE_VIDEO_DECODE_BIT_KHR>,
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits VK_QUEUE_VIDEO_ENCODE_BIT_KHR>
+--     operations
+--
+-- -   #VUID-vkCmdEndQueryIndexedEXT-suspended# This command /must/ not be
+--     called between suspended render pass instances
+--
+-- -   #VUID-vkCmdEndQueryIndexedEXT-videocoding# This command /must/ only
+--     be called outside of a video coding scope
+--
+-- -   #VUID-vkCmdEndQueryIndexedEXT-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#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
+-- |                                                                                                                            |                                                                                                                        |                                                                                                                             | VK_QUEUE_VIDEO_DECODE_BIT_KHR                                                                                         |                                                                                                                                        |
+-- |                                                                                                                            |                                                                                                                        |                                                                                                                             | VK_QUEUE_VIDEO_ENCODE_BIT_KHR                                                                                         |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdEndQueryIndexedEXT is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_transform_feedback VK_EXT_transform_feedback>,
+-- 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'Vulkan.Core10.Handles.QueryPool',
+-- 'Vulkan.Core10.CommandBufferBuilding.cmdBeginQuery',
+-- 'cmdBeginQueryIndexedEXT',
+-- 'Vulkan.Core10.CommandBufferBuilding.cmdEndQuery'
+cmdEndQueryIndexedEXT :: 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)
+                      -> -- | @index@ is the query type specific index.
+                         ("index" ::: Word32)
+                      -> io ()
+cmdEndQueryIndexedEXT commandBuffer queryPool query index = liftIO $ do
+  let vkCmdEndQueryIndexedEXTPtr = pVkCmdEndQueryIndexedEXT (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  unless (vkCmdEndQueryIndexedEXTPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdEndQueryIndexedEXT is null" Nothing Nothing
+  let vkCmdEndQueryIndexedEXT' = mkVkCmdEndQueryIndexedEXT vkCmdEndQueryIndexedEXTPtr
+  traceAroundEvent "vkCmdEndQueryIndexedEXT" (vkCmdEndQueryIndexedEXT'
+                                                (commandBufferHandle (commandBuffer))
+                                                (queryPool)
+                                                (query)
+                                                (index))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdDrawIndirectByteCountEXT
+  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Word32 -> Buffer -> DeviceSize -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Word32 -> Buffer -> DeviceSize -> Word32 -> Word32 -> IO ()
+
+-- | vkCmdDrawIndirectByteCountEXT - Draw primitives with indirect parameters
+-- where the vertex count is derived from the counter byte value in the
+-- counter buffer
+--
+-- = Description
+--
+-- When the command is executed, primitives are assembled in the same way
+-- as done with 'Vulkan.Core10.CommandBufferBuilding.cmdDraw' except the
+-- @vertexCount@ is calculated based on the byte count read from
+-- @counterBuffer@ at offset @counterBufferOffset@. The assembled
+-- primitives execute the bound graphics pipeline.
+--
+-- The effective @vertexCount@ is calculated as follows:
+--
+-- > const uint32_t * counterBufferPtr = (const uint8_t *)counterBuffer.address + counterBufferOffset;
+-- > vertexCount = floor(max(0, (*counterBufferPtr - counterOffset)) / vertexStride);
+--
+-- The effective @firstVertex@ is zero.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-magFilter-04553# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
+--     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR',
+--     @reductionMode@ equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
+--     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-vkCmdDrawIndirectByteCountEXT-magFilter-09598# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
+--     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR' and
+--     @reductionMode@ equal to either
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
+--     or
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
+--     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_MINMAX_BIT'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-mipmapMode-04770# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
+--     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR',
+--     @reductionMode@ equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
+--     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-vkCmdDrawIndirectByteCountEXT-mipmapMode-09599# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
+--     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'
+--     and @reductionMode@ equal to either
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
+--     or
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
+--     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_MINMAX_BIT'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-unnormalizedCoordinates-09635#
+--     If a 'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the image view’s @levelCount@ and @layerCount@ /must/ be 1
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08609# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the image view’s @viewType@ /must/ be
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D' or
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08610# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the sampler /must/ not be used with any of the SPIR-V
+--     @OpImageSample*@ or @OpImageSparseSample*@ instructions with
+--     @ImplicitLod@, @Dref@ or @Proj@ in their name
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08611# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the sampler /must/ not be used with any of the SPIR-V
+--     @OpImageSample*@ or @OpImageSparseSample*@ instructions that
+--     includes a LOD bias or any offset values
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-None-07888# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'
+--     descriptor is accessed using atomic operations as a result of this
+--     command, then the storage texel buffer’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-buffer-view-format-features format features>
+--     /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-02692# If a
+--     'Vulkan.Core10.Handles.ImageView' is sampled with
+--     'Vulkan.Core10.Enums.Filter.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.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-02693# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_filter_cubic VK_EXT_filter_cubic>
+--     extension is not enabled and any 'Vulkan.Core10.Handles.ImageView'
+--     is sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as a
+--     result of this command, it /must/ not have a
+--     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' of
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE', or
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-filterCubic-02694# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with
+--     'Vulkan.Core10.Enums.Filter.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-vkCmdDrawIndirectByteCountEXT-filterCubicMinmax-02695# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with
+--     'Vulkan.Core10.Enums.Filter.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-vkCmdDrawIndirectByteCountEXT-cubicRangeClamp-09212# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-cubicRangeClamp cubicRangeClamp>
+--     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
+--     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
+--     a result of this command /must/ not have a
+--     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
+--     equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-reductionMode-09213# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with a
+--     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
+--     equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
+--     as a result of this command /must/ sample with
+--     'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-selectableCubicWeights-09214# If
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-selectableCubicWeights selectableCubicWeights>
+--     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
+--     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
+--     a result of this command /must/ have
+--     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.SamplerCubicWeightsCreateInfoQCOM'::@cubicWeights@
+--     equal to
+--     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-OpTypeImage-07027# For any
+--     'Vulkan.Core10.Handles.ImageView' being written as a storage image
+--     where the image format field of the @OpTypeImage@ is @Unknown@, the
+--     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_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-OpTypeImage-07028# For any
+--     'Vulkan.Core10.Handles.ImageView' being read as a storage image
+--     where the image format field of the @OpTypeImage@ is @Unknown@, the
+--     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_STORAGE_READ_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-OpTypeImage-07029# For any
+--     'Vulkan.Core10.Handles.BufferView' being written as a storage texel
+--     buffer where the image format field of the @OpTypeImage@ is
+--     @Unknown@, the view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
+--     /must/ contain
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-OpTypeImage-07030# Any
+--     'Vulkan.Core10.Handles.BufferView' being read as a storage texel
+--     buffer where the image format field of the @OpTypeImage@ is
+--     @Unknown@ then the view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
+--     /must/ contain
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08600# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
+--     was created with a pipeline layout and statically uses a set /n/, a
+--     descriptor set /must/ have been bound to /n/ at the same pipeline
+--     bind point, with layouts compatible for set /n/ with the layout(s)
+--     used to create the shader, as described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptors-compatibility ???>
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08601# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
+--     was created with a pipeline layout or specified push constant ranges
+--     and statically uses a push constant value, that value /must/ have
+--     been set for the same pipeline bind point, with push constant ranges
+--     that are
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptors-compatibility compatible>
+--     with the push constant range used to create the shader
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-10068# For each array of
+--     resources that is used by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
+--     the indices used to access members of the array /must/ be less than
+--     the descriptor count for the identified binding in the descriptor
+--     sets used by this command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08114# Descriptors in each
+--     bound descriptor set, specified via
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
+--     be valid if they are accessed as described by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
+--     by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
+--     point used by this command and the bound
+--     'Vulkan.Core10.Handles.Pipeline' was not created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-imageLayout-00344# If an image
+--     descriptor is accessed by a shader, the
+--     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' /must/ match the
+--     subresource accessible from the 'Vulkan.Core10.Handles.ImageView' 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>
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08115# If the descriptors
+--     used by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline
+--     bind point were specified via
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', the
+--     bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     without
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08116# Descriptors in bound
+--     descriptor buffers, specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     /must/ be valid if they are dynamically used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
+--     was created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08604# Descriptors in bound
+--     descriptor buffers, specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     /must/ be valid if they are dynamically used by any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     to the pipeline bind point used by this command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08117# If the descriptors
+--     used by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline
+--     bind point were specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08119# If a descriptor is
+--     dynamically used with a 'Vulkan.Core10.Handles.Pipeline' created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     the descriptor memory /must/ be resident
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08605# If a descriptor is
+--     dynamically used with a 'Vulkan.Extensions.Handles.ShaderEXT'
+--     created with a 'Vulkan.Core10.Handles.DescriptorSetLayout' that was
+--     created with
+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     the descriptor memory /must/ be resident
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08606# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject>
+--     feature is not enabled, a valid pipeline /must/ be bound to the
+--     pipeline bind point used by this command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08608# If a pipeline is
+--     bound to the pipeline bind point used by this command, there /must/
+--     not have been any calls to dynamic state setting commands for any
+--     state specified statically in the 'Vulkan.Core10.Handles.Pipeline'
+--     object bound to the pipeline bind point used by this command, since
+--     that pipeline was bound
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-uniformBuffers-06935# If any
+--     stage of the 'Vulkan.Core10.Handles.Pipeline' object bound to the
+--     pipeline bind point used by this command accesses a uniform buffer,
+--     and that stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @uniformBuffers@, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /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-vkCmdDrawIndirectByteCountEXT-None-08612# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, and any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     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-vkCmdDrawIndirectByteCountEXT-storageBuffers-06936# If any
+--     stage of the 'Vulkan.Core10.Handles.Pipeline' object bound to the
+--     pipeline bind point used by this command accesses a storage buffer,
+--     and that stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @storageBuffers@, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /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-vkCmdDrawIndirectByteCountEXT-None-08613# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, and any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     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-vkCmdDrawIndirectByteCountEXT-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
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shaders>
+--     /must/ not be a protected resource
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-viewType-07752# If a
+--     'Vulkan.Core10.Handles.ImageView' is accessed as a result of this
+--     command, then the image view’s @viewType@ /must/ match the @Dim@
+--     operand of the @OpTypeImage@ as described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-image-dimensions ???>
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-format-07753# If a
+--     'Vulkan.Core10.Handles.ImageView' or
+--     'Vulkan.Core10.Handles.BufferView' is accessed as a result of this
+--     command, then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-numericformat numeric type>
+--     of the view’s @format@ and the @Sampled@ @Type@ operand of the
+--     @OpTypeImage@ /must/ match
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-OpImageWrite-08795# If a
+--     'Vulkan.Core10.Handles.ImageView' created with a format other than
+--     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM' 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-vkCmdDrawIndirectByteCountEXT-OpImageWrite-08796# If a
+--     'Vulkan.Core10.Handles.ImageView' created with the format
+--     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM' is accessed using
+--     @OpImageWrite@ as a result of this command, then the @Type@ of the
+--     @Texel@ operand of that instruction /must/ have four components
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-OpImageSampleWeightedQCOM-06971#
+--     If @OpImageSampleWeightedQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-OpImageSampleWeightedQCOM-06972#
+--     If @OpImageSampleWeightedQCOM@ uses a
+--     'Vulkan.Core10.Handles.ImageView' as a sample weight image 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-OpImageBoxFilterQCOM-06973# If
+--     @OpImageBoxFilterQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-OpImageBlockMatchSSDQCOM-06974#
+--     If @OpImageBlockMatchSSDQCOM@ is used to read from an
+--     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
+--     or
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_SXD_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-OpImageBlockMatchSADQCOM-12420#
+--     If @OpImageBlockMatchSADQCOM@ is used to read from an
+--     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
+--     or
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_SXD_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-OpImageBlockMatchSADQCOM-06976#
+--     If @OpImageBlockMatchSADQCOM@ or OpImageBlockMatchSSDQCOM is used to
+--     read from a reference image as result of this command, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-blockMatchExtendedClampToEdge blockMatchExtendedClampToEdge>
+--     feature is not enabled or the /input/ sampler was not created with
+--     both @addressModeU@ and @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--     then the specified reference coordinates /must/ not fail
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-OpImageSampleWeightedQCOM-06977#
+--     If @OpImageSampleWeightedQCOM@, @OpImageBoxFilterQCOM@,
+--     @OpImageBlockMatchWindowSSDQCOM@, @OpImageBlockMatchWindowSADQCOM@,
+--     @OpImageBlockMatchGatherSSDQCOM@, @OpImageBlockMatchGatherSADQCOM@,
+--     @OpImageBlockMatchSSDQCOM@, or @OpImageBlockMatchSADQCOM@ uses a
+--     'Vulkan.Core10.Handles.Sampler' as a result of this command, then
+--     the sampler /must/ have been created with
+--     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-OpImageSampleWeightedQCOM-06978#
+--     If any command other than @OpImageSampleWeightedQCOM@,
+--     @OpImageBoxFilterQCOM@, @OpImageBlockMatchWindowSSDQCOM@,
+--     @OpImageBlockMatchWindowSADQCOM@, @OpImageBlockMatchGatherSSDQCOM@,
+--     @OpImageBlockMatchGatherSADQCOM@, @OpImageBlockMatchSSDQCOM@, or
+--     @OpImageBlockMatchSADQCOM@ uses a 'Vulkan.Core10.Handles.Sampler' as
+--     a result of this command, then the sampler /must/ not have been
+--     created with
+--     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-OpImageBlockMatchWindow-09215#
+--     If a @OpImageBlockMatchWindow*QCOM@ or
+--     @OpImageBlockMatchGather*QCOM@ instruction is used to read from an
+--     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-OpImageBlockMatchWindow-09216#
+--     If a @OpImageBlockMatchWindow*QCOM@ or
+--     @OpImageBlockMatchGather*QCOM@ instruction is used to read from an
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the image view’s format /must/ be a single-component format
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-OpImageBlockMatchWindow-09217#
+--     If a @OpImageBlockMatchWindow*QCOM@ or
+--     @OpImageBlockMatchGather*QCOM@ read from a reference image as result
+--     of this command, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-blockMatchExtendedClampToEdge blockMatchExtendedClampToEdge>
+--     feature is not enabled or the /input/ sampler was not created with
+--     both @addressModeU@ and @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--     then the specified reference coordinates /must/ not fail
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-OpImageBlockMatchWindow-12421#
+--     If a @OpImageBlockMatchWindow*QCOM@ or
+--     @OpImageBlockMatchGather*QCOM@ instruction uses a
+--     'Vulkan.Core10.Handles.Sampler' as a result of this command, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-blockMatchExtendedClampToEdge blockMatchExtendedClampToEdge>
+--     is not enabled, the /input/ sampler /must/ not have been created
+--     with either @addressModeU@ or @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-addressModeU-12422# If a
+--     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     instruction uses a 'Vulkan.Core10.Handles.Sampler' as a result of
+--     this command, and the /input/ sampler was created with either
+--     @addressModeU@ or @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE',
+--     then the sampler /must/ have been created with both @addressModeU@
+--     and @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07288# Any shader
+--     invocation executed by this command /must/
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-termination terminate>
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-09600# If a descriptor with
+--     type equal to any of
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',
+--     or
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'
+--     is accessed as a result of this command, all image subresources
+--     identified by that descriptor /must/ be in the image layout
+--     identified when the descriptor was written
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-micromap-11636# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command through an
+--     @OpRayQueryProceedKHR@ operation , the @VK_EXT_opacity_micromap@
+--     extension is not enabled, and the acceleration structure is built
+--     using geometry with a
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapKHR'
+--     structure included in its @pNext@ chain, the shader /must/ have
+--     specified a @OpacityMicromapIdKHR@ execution mode with its
+--     specialization constant operand equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-micromap-11637# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command and the
+--     acceleration structure was constructed through deserialization, all
+--     micromap arrays referenced by the acceleration structure that were
+--     not replaced by an acceleration structure update command /must/ have
+--     been deserialized using the serialized data of the corresponding
+--     micromaps used to originally build the acceleration structure prior
+--     to the execution of this command on the device
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-micromap-11638# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command and the
+--     acceleration structure is built using geometry with an @indexBuffer@
+--     containing both
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.OpacityMicromapSpecialIndexKHR'
+--     values and indices into an associated micromap array, any
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command /must/ not have been created with @flags@ that
+--     includes
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_KHR'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-micromap-11639# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command and the
+--     acceleration structure is built using geometry with an @indexBuffer@
+--     containing both
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.OpacityMicromapSpecialIndexKHR'
+--     values and indices into an associated micromap array, any
+--     'Vulkan.Extensions.Handles.ShaderEXT' that accessed the descriptor
+--     /must/ not have been created with @flags@ that includes
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-10746# The
+--     'Vulkan.Core10.Handles.DeviceMemory' object allocated from a
+--     'Vulkan.Core10.DeviceInitialization.MemoryHeap' with the
+--     'Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_TILE_MEMORY_BIT_QCOM'
+--     property that is bound to a resource accessed as a result of this
+--     command /must/ be the active
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-bind-tile-memory bound tile memory object>
+--     in @commandBuffer@
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-10678# If this command is
+--     recorded inside a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-tile-shading tile shading render pass>
+--     instance, the stages corresponding to the pipeline bind point used
+--     by this command /must/ only include
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT',
+--     and\/or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-10679# If this command is
+--     recorded where
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model>
+--     is enabled, there /must/ be no access to any image while the image
+--     was be transitioned to the
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
+--     layout
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-pDescription-09900# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the
+--     underlying 'Vulkan.Extensions.Handles.TensorARM' object /must/ have
+--     been created with the
+--     'Vulkan.Extensions.VK_ARM_tensors.TENSOR_USAGE_SHADER_BIT_ARM' usage
+--     flag set
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-dimensionCount-09905# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the @Rank@
+--     of the @OpTypeTensorARM@ of the tensor resource variable /must/ be
+--     equal to the @dimensionCount@ provided via
+--     'Vulkan.Extensions.VK_ARM_tensors.TensorCreateInfoARM'::@pDescription@
+--     when creating the underlying 'Vulkan.Extensions.Handles.TensorARM'
+--     object
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-OpTypeTensorARM-09906# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the element
+--     type of the @OpTypeTensorARM@ of the tensor resource variable /must/
+--     be
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-tensor-formats compatible>
+--     with the 'Vulkan.Core10.Enums.Format.Format' of the
+--     'Vulkan.Extensions.Handles.TensorViewARM' used for the access
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-11297# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses a @OpTypeStruct@ decorated with @Block@ or
+--     @BufferBlock@ using that mapping, the calculated offset for the
+--     resource heap /must/ be a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-bufferDescriptorAlignment bufferDescriptorAlignment>
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-11298# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses an @OpTypeImage@ or @OpTypeSampledImage@ using
+--     that mapping, the calculated offset for the resource heap /must/ be
+--     a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-imageDescriptorAlignment imageDescriptorAlignment>
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-11299# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses an @OpTypeSampler@ or @OpTypeSampledImage@
+--     using that mapping, the calculated offset for the sampler heap
+--     /must/ be a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-samplerDescriptorAlignment samplerDescriptorAlignment>
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-11397# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses an @OpTypeTensorARM@ using that mapping, the
+--     calculated offset for the resource heap /must/ be a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-tensorDescriptorAlignment tensorDescriptorAlignment>
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-11300# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a
+--     multiple of 4
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-11301# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' backed by physical
+--     memory at every offset specified by each mapping
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-11302# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-11304# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a
+--     multiple of 8
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-11305# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' backed by physical
+--     memory at every offset specified by each mapping
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-11306# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address pointed to by the address in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-11308# For each
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps descriptor heap>
+--     that is statically used by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
+--     either directly or via a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>,
+--     a valid descriptor heap /must/ be bound
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-11309# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     was created as a 'Vulkan.Extensions.Handles.ShaderEXT' with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag or as part of a pipeline with the
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag, execution of this command /must/ not result in any descriptor
+--     read accessing data outside of the user range of the respective heap
+--     bound by @vkCmdBind*HeapEXT@ commands
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-11372# If any stage of the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command accesses a uniform buffer or uniform
+--     texel buffer through a descriptor in the bound resource heap, that
+--     stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @uniformBuffers@, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /must/ not access values outside
+--     of the range of the descriptor specified via
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+--     when the descriptor was written
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-11373# If any stage of the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command accesses a storage buffer or storage
+--     texel buffer through a descriptor in the bound resource heap, that
+--     stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @storageBuffers@, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /must/ not access values outside
+--     of the range of the descriptor specified by
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+--     when the descriptor was written
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-11374# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, and any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     to the pipeline bind point used by this command accesses a uniform
+--     buffer, uniform texel buffer, storage buffer, or storage texel
+--     buffer, that shader /must/ not access values outside of the range of
+--     the buffer as specified by
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+--     when the descriptor was written
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-pBindInfo-11375# If any
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     uses an embedded sampler via a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>,
+--     the value of @pBindInfo->reservedRangeSize@ set for
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.cmdBindSamplerHeapEXT'
+--     /must/ be greater than or equal to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minSamplerHeapReservedRangeWithEmbedded minSamplerHeapReservedRangeWithEmbedded>
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-11376# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     was created as a 'Vulkan.Extensions.Handles.ShaderEXT' with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag or as part of a pipeline with the
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag, and that shader statically uses a push constant value, that
+--     value /must/ have been set by
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.cmdPushDataEXT'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-11398# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_DATA_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_DATA_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_RESOURCE_HEAP_DATA_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the access
+--     /must/ not be
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-execution-memory-access-bounds out of bounds>
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-11437# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the buffer from
+--     which the address in push data was queried /must/ have been created
+--     with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-11438# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a uniform buffer using that mapping, the
+--     address that the uniform buffer is mapped to /must/ have been
+--     queried from a buffer created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-11441# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a uniform buffer using that mapping, the
+--     address that the uniform buffer is mapped to /must/ be aligned to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minUniformBufferOffsetAlignment minUniformBufferOffsetAlignment>
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-11439# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a storage buffer using that mapping, the
+--     address that the storage buffer is mapped to /must/ have been
+--     queried from a buffer created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_STORAGE_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-11442# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a storage buffer using that mapping, the
+--     address that the storage buffer is mapped to /must/ be aligned to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minStorageBufferOffsetAlignment minStorageBufferOffsetAlignment>
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-11485# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses an acceleration structure using that mapping,
+--     the address that the acceleration structure is mapped to /must/ be
+--     an acceleration structure address retrieved from a
+--     'Vulkan.Extensions.Handles.AccelerationStructureKHR' object via
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.getAccelerationStructureDeviceAddressKHR'
+--     or handle retrieved from a
+--     'Vulkan.Extensions.Handles.AccelerationStructureNV' object via
+--     'Vulkan.Extensions.VK_NV_ray_tracing.getAccelerationStructureHandleNV'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-index-11450# If a shader uses a
+--     sampler descriptor to sample an image as a result of this command,
+--     and that sampler descriptor uses a custom border color with an index
+--     defined by
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.SamplerCustomBorderColorIndexCreateInfoEXT',
+--     the value of
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.SamplerCustomBorderColorIndexCreateInfoEXT'::@index@
+--     /must/ have been registered before this command was recorded, and
+--     still be registered during the sampling operation, with an
+--     identically defined color
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-protectedNoFault-11455# If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, a pipeline is bound to the pipeline bind point
+--     used by this command, or a shader is bound to a shader stage used by
+--     this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     the address that the resource is mapped to /must/ have been queried
+--     from a buffer created without the
+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT'
+--     create flag set
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-protectedNoFault-11456# If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, a pipeline is bound to the pipeline bind point
+--     used by this command, or a shader is bound to a shader stage used by
+--     this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     the address of the indirect memory /must/ have been queried from a
+--     buffer created without the
+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT'
+--     create flag set
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-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.GraphicsPipeline.GraphicsPipelineCreateInfo'
+--     structure specified when creating the
+--     'Vulkan.Core10.Handles.Pipeline' bound to
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-subpass-02685# The subpass index
+--     of the current render pass /must/ be equal to the @subpass@ member
+--     of the 'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'
+--     structure specified when creating the
+--     'Vulkan.Core10.Handles.Pipeline' bound to
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-OpTypeImage-07468# If any shader
+--     executed by this pipeline accesses an @OpTypeImage@ variable with a
+--     @Dim@ operand of @SubpassData@, it /must/ be decorated with an
+--     @InputAttachmentIndex@ that corresponds to a valid input attachment
+--     in the current subpass
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07469# Input attachment
+--     views accessed in a subpass /must/ be created with the same
+--     'Vulkan.Core10.Enums.Format.Format' as the corresponding subpass
+--     definition, and be created with a 'Vulkan.Core10.Handles.ImageView'
+--     that is compatible with the attachment referenced by the subpass\'
+--     @pInputAttachments@[@InputAttachmentIndex@] in the bound
+--     'Vulkan.Core10.Handles.Framebuffer' as specified by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#compatibility-inputattachment Fragment Input Attachment Compatibility>
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-pDepthInputAttachmentIndex-09595#
+--     Input attachment views accessed in a dynamic render pass with a
+--     @InputAttachmentIndex@ referenced by
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo',
+--     or no @InputAttachmentIndex@ if
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pDepthInputAttachmentIndex@
+--     or
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pStencilInputAttachmentIndex@
+--     are @NULL@, /must/ be created with a
+--     'Vulkan.Core10.Handles.ImageView' that is compatible with the
+--     corresponding color, depth, or stencil attachment in
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-pDepthInputAttachmentIndex-09596#
+--     Input attachment views accessed in a dynamic render pass via a
+--     shader object /must/ have an @InputAttachmentIndex@ if both
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pDepthInputAttachmentIndex@
+--     and
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pStencilInputAttachmentIndex@
+--     are non-@NULL@
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-InputAttachmentIndex-09597# If
+--     an input attachment view accessed in a dynamic render pass via a
+--     shader object has an @InputAttachmentIndex@, the
+--     @InputAttachmentIndex@ /must/ match an index in
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-06537# Memory backing image
+--     subresources used as attachments in the current render pass /must/
+--     not be written in any way other than as an attachment by this
+--     command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-10795# If a color
+--     attachment is written by any prior command in this subpass or by the
+--     load, store, or resolve operations for this subpass, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT' on
+--     that attachment, it /must/ not be accessed in any way other than as
+--     an attachment by this command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-10796# If a depth
+--     attachment is written by any prior command in this subpass or by the
+--     load, store, or resolve operations for this subpass, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' on
+--     that attachment, it /must/ not be accessed in any way other than as
+--     an attachment by this command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-10797# If a stencil
+--     attachment is written by any prior command in this subpass or by the
+--     load, store, or resolve operations for this subpass, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
+--     on that attachment, it /must/ not be accessed in any way other than
+--     as an attachment by this command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-12338# If a color
+--     attachment is read in this command in any way other than as an
+--     attachment, or has been read by any prior command in this subpass as
+--     a non-attachment, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT' on
+--     that attachment, the color attachment /must/ not be written to by
+--     this command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-12339# If a depth
+--     attachment is read in this command in any way other than as an
+--     attachment, or has been read by any prior command in this subpass as
+--     a non-attachment, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' on
+--     that attachment, the depth attachment /must/ not be written to by
+--     this command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-12340# If a stencil
+--     attachment is read in this command in any way other than as an
+--     attachment, or has been read by any prior command in this subpass as
+--     a non-attachment, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
+--     on that attachment, the stencil attachment /must/ not be written to
+--     by this command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-09003# If an attachment is
+--     written by any prior command in this subpass or by the load, store,
+--     or resolve operations for this subpass, it /must/ not be accessed in
+--     any way other than as an attachment, storage image, or sampled image
+--     by this command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-06886# If the current
+--     render pass instance uses a depth\/stencil attachment with a
+--     read-only layout for the depth aspect,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-depth-write depth writes>
+--     /must/ be disabled
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-06887# If the current
+--     render pass instance uses a depth\/stencil attachment with a
+--     read-only layout for the stencil aspect, both front and back
+--     @writeMask@ are not zero, and stencil test is enabled,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-stencil all stencil ops>
+--     /must/ be 'Vulkan.Core10.Enums.StencilOp.STENCIL_OP_KEEP'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07831# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT' dynamic
+--     state enabled then
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetViewport' /must/ have
+--     been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07832# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR' dynamic
+--     state enabled then
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetScissor' /must/ have been
+--     called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08617# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_WIDTH' dynamic
+--     state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line topology class, then
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth' /must/ have
+--     been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07834# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS' dynamic
+--     state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @depthBiasEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBias' or
+--     'Vulkan.Extensions.VK_EXT_depth_bias_control.cmdSetDepthBias2EXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07835# If a shader object
+--     is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_BLEND_CONSTANTS'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and an active color
+--     attachment
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @blendEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE' with a
+--     blend equations where any
+--     'Vulkan.Core10.Enums.BlendFactor.BlendFactor' member is
+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_COLOR',
+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR',
+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_ALPHA', or
+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA',
+--     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetBlendConstants'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07836# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @depthBoundsTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBounds' /must/
+--     have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07837# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_COMPARE_MASK'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilCompareMask'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07838# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_WRITE_MASK'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilWriteMask'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07839# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_REFERENCE'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of and @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilReference'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-sampleLocationsEnable-02689# If
+--     the bound graphics pipeline was created with
+--     'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@
+--     set to 'Vulkan.Core10.FundamentalTypes.TRUE', then the active depth
+--     attachment /must/ have been created with the
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'
+--     bit set
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07634# If the
+--     @VK_EXT_sample_locations@ extension is enabled, a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-06666# If the
+--     @VK_EXT_sample_locations@ extension is enabled, a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07840# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CULL_MODE' dynamic
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetCullMode'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07841# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRONT_FACE' dynamic
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetFrontFace'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07843# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_TEST_ENABLE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE',
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthTestEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07844# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @depthTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthWriteEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07845# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_COMPARE_OP'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @depthTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthCompareOp'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07846# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthBounds depthBounds>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthBoundsTestEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07847# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_TEST_ENABLE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilTestEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07848# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_OP' dynamic
+--     state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilOp'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-viewportCount-03417# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
+--     dynamic state enabled, and the state is not inherited, then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-scissorCount-03418# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
+--     dynamic state enabled, and the state is not inherited, then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-viewportCount-03419# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which 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, and the state is not inherited, then 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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-viewportCount-04138# If the
+--     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which 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 state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @viewportWScalingEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.cmdSetViewportWScalingNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08636# If the
+--     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which 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 state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @viewportWScalingEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', 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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-shadingRateImage-09233# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV'
+--     and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetCoarseSampleOrderNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-shadingRateImage-09234# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which 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 state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @shadingRateImageEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetViewportShadingRatePaletteNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08637# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which 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 state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @shadingRateImageEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', 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-vkCmdDrawIndirectByteCountEXT-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
+--     'Vulkan.Core10.GraphicsPipeline.PipelineViewportStateCreateInfo',
+--     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-vkCmdDrawIndirectByteCountEXT-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
+--     'Vulkan.Core10.GraphicsPipeline.PipelineViewportStateCreateInfo',
+--     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-vkCmdDrawIndirectByteCountEXT-None-07878# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-exclusiveScissor exclusiveScissor>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07879# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-exclusiveScissor exclusiveScissor>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV'
+--     dynamic state enabled, and the most recent call to
+--     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorEnableNV'
+--     in the current command buffer set any element of
+--     @pExclusiveScissorEnables@ to 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then
+--     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-04876# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     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 and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-04877# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-logicOp-04878# If a shader
+--     object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @logicOpEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetLogicOpEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-primitiveFragmentShadingRateWithMultipleViewports-04552#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
+--     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-vkCmdDrawIndirectByteCountEXT-primitiveFragmentShadingRateWithMultipleViewports-08642#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
+--     limit is not supported, and any shader object bound to a graphics
+--     stage writes 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-vkCmdDrawIndirectByteCountEXT-blendEnable-04727# If a shader
+--     object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then for each color
+--     attachment, 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 corresponding
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @blendEnable@ /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08644# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and none of the following is
+--     enabled:
+--
+--     -   the @VK_AMD_mixed_attachment_samples@ extension
+--
+--     -   the @VK_NV_framebuffer_mixed_samples@ extension
+--
+--     -   the
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
+--         feature
+--
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizationSamples@ /must/ be the same as the current color
+--     and\/or depth\/stencil attachments
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08876# If a shader object
+--     is bound to any graphics stage, the current render pass instance
+--     /must/ have been begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-viewMask-06178# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the 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-vkCmdDrawIndirectByteCountEXT-colorAttachmentCount-06179# If
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled and the current render pass instance was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the 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-vkCmdDrawIndirectByteCountEXT-dynamicRenderingUnusedAttachments-08910#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and 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 an @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 bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-dynamicRenderingUnusedAttachments-08912#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and 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 an @imageView@ equal to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have the
+--     corresponding element of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
+--     used to create the bound pipeline equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-dynamicRenderingUnusedAttachments-08911#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled, and 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 an @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 bound graphics pipeline, or the corresponding
+--     element of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@,
+--     if it exists, /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-colorAttachmentCount-09362# If
+--     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@
+--     equal to @1@, there is no shader object bound to any graphics stage,
+--     and a color attachment with a resolve mode of
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID',
+--     each element of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
+--     array with a @resolveImageView@ not equal to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
+--     with an image created with a
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value equal to the
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value used to create the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-09363# If there is no
+--     shader object bound to any graphics stage, the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and a
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
+--     equal to @1@, and a color attachment with a resolve mode of
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID',
+--     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 an image created with a
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value equal to the
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value used to create the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-09364# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there is no shader object bound to any graphics stage, and the bound
+--     graphics pipeline was created with a non-zero
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value and with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
+--     /must/ have set the blend enable to
+--     'Vulkan.Core10.FundamentalTypes.FALSE' prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-09365# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there is no shader object bound to any graphics stage, and the bound
+--     graphics pipeline was created with a non-zero
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value and with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     /must/ have set @rasterizationSamples@ to
+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' prior
+--     to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-09366# If there is a shader
+--     object bound to any graphics stage, and the current render pass
+--     includes a color attachment that uses the
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID'
+--     resolve mode, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
+--     /must/ have set blend enable to
+--     'Vulkan.Core10.FundamentalTypes.FALSE' prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-rasterizationSamples-09367# If
+--     there is a shader object bound to any graphics stage, and the
+--     current render pass includes a color attachment that uses the
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID'
+--     resolve mode, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     /must/ have set @rasterizationSamples@ to
+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' prior
+--     to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-09368# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there is no shader object bound to any graphics stage, and the bound
+--     graphics pipeline was created with a non-zero
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value and with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     /must/ have set @pFragmentSize->width@ to @1@ prior to this drawing
+--     command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-09369# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there is no shader object bound to any graphics stage, and the bound
+--     graphics pipeline was created with a non-zero
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value and with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     /must/ have set @pFragmentSize->height@ to @1@ prior to this drawing
+--     command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-pFragmentSize-09370# If there is
+--     a shader object bound to any graphics stage, and the current render
+--     pass includes a color attachment that uses the
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID'
+--     resolve mode, then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     /must/ have set @pFragmentSize->width@ to @1@ prior to this drawing
+--     command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-pFragmentSize-09371# If there is
+--     a shader object bound to any graphics stage, and the current render
+--     pass includes a color attachment that uses the
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID'
+--     resolve mode, then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     /must/ have set @pFragmentSize->height@ to @1@ prior to this drawing
+--     command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07749# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
+--     feature is enabled, a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-attachmentCount-07750# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
+--     feature is enabled, a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then the @attachmentCount@
+--     parameter of most recent call to
+--     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
+--     in the current command buffer /must/ be greater than or equal to the
+--     number of active color attachments
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07751# If the
+--     @VK_EXT_discard_rectangles@ extension is enabled, a graphics
+--     pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_EXT'
+--     dynamic state enabled and the @pNext@ chain of
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo' included
+--     a
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'
+--     structure, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @discardRectangleEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command for each
+--     discard rectangle in
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'::@discardRectangleCount@
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-rasterizerDiscardEnable-09236#
+--     If the @VK_EXT_discard_rectangles@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_EXT'
+--     dynamic state enabled and the @pNext@ chain of
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo' did not
+--     include a
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'
+--     structure, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @discardRectangleEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command for each
+--     discard rectangle in
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.PhysicalDeviceDiscardRectanglePropertiesEXT'::@maxDiscardRectangles@
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07880# If the
+--     @VK_EXT_discard_rectangles@ extension is enabled, a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07881# If the
+--     @VK_EXT_discard_rectangles@ extension is enabled, a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @discardRectangleEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleModeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-dynamicRenderingUnusedAttachments-08913#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
+--     used to create the bound graphics pipeline /must/ be equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-dynamicRenderingUnusedAttachments-08914#
+--     If current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->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 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->imageView@
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-dynamicRenderingUnusedAttachments-08915#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
+--     used to create the bound graphics pipeline was not equal to the
+--     'Vulkan.Core10.Enums.Format.Format' used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@,
+--     the value of the format /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-dynamicRenderingUnusedAttachments-08916#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
+--     used to create the bound graphics pipeline /must/ be equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-dynamicRenderingUnusedAttachments-08917#
+--     If current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->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 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->imageView@
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-dynamicRenderingUnusedAttachments-08918#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
+--     used to create the bound graphics pipeline was not equal to the
+--     'Vulkan.Core10.Enums.Format.Format' used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@,
+--     the value of the format /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-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_fragment_shading_rate.RenderingFragmentShadingRateAttachmentInfoKHR'::@imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the bound graphics
+--     pipeline /must/ have been created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-dynamicRenderingLocalRead-11797#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingLocalRead dynamicRenderingLocalRead>
+--     feature is enabled, the
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_LOCAL_READ_CONCURRENT_ACCESS_CONTROL_BIT_KHR'
+--     flag is specified, and an attachment is being used as a feedback
+--     loop as specified by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#rendering-attachment-input-attachment-feedback >,
+--     'Vulkan.Extensions.VK_KHR_maintenance10.RenderingAttachmentFlagsInfoKHR'::@flags@
+--     for that attachment /must/ include
+--     'Vulkan.Extensions.VK_KHR_maintenance10.RENDERING_ATTACHMENT_INPUT_ATTACHMENT_FEEDBACK_BIT_KHR'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-imageView-06184# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and
+--     'Vulkan.Extensions.VK_EXT_fragment_density_map.RenderingFragmentDensityMapAttachmentInfoEXT'::@imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the bound graphics
+--     pipeline /must/ have been created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-layers-10831# If the current
+--     render pass instance was created with
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE'
+--     or
+--     'Vulkan.Core10.Enums.RenderPassCreateFlagBits.RENDER_PASS_CREATE_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE',
+--     and the bound graphics pipeline was created with
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE',
+--     then the current render pass instance /must/ have a @layers@ value
+--     less than or equal to
+--     'Vulkan.Extensions.VK_VALVE_fragment_density_map_layered.PipelineFragmentDensityMapLayeredCreateInfoVALVE'::@maxFragmentDensityMapLayers@
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-colorAttachmentCount-06185# If
+--     the bound pipeline was created with a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.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_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     used to create the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-pDepthAttachment-06186# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the bound pipeline was created with a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     structure, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
+--     @depthStencilAttachmentSamples@ member of
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     used to create the bound graphics pipeline /must/ be equal to the
+--     sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-pStencilAttachment-06187# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the bound pipeline was created with a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     structure, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
+--     @depthStencilAttachmentSamples@ member of
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     used to create the bound graphics pipeline /must/ be equal to the
+--     sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-multisampledRenderToSingleSampled-07285#
+--     If the bound pipeline was created without a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     structure, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
+--     feature is not enabled, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, 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 @rasterizationSamples@ for
+--     the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-multisampledRenderToSingleSampled-07286#
+--     If the bound pipeline was created without a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     structure, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
+--     feature is not enabled, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     @rasterizationSamples@ for the bound graphics pipeline /must/ be
+--     equal to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-multisampledRenderToSingleSampled-07287#
+--     If the bound pipeline was created without a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     structure, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
+--     feature is not enabled, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     @rasterizationSamples@ for the bound graphics pipeline /must/ be
+--     equal to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-pNext-07935# If this command is
+--     called inside a render pass instance started with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     and the @pNext@ chain of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'
+--     includes a
+--     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'
+--     structure with @multisampledRenderToSingleSampledEnable@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then the value of
+--     @rasterizationSamples@ for the bound graphics pipeline /must/ be
+--     equal to
+--     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'::@rasterizationSamples@
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-renderPass-06198# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the bound pipeline /must/ have been created with a
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'::@renderPass@
+--     equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-pColorAttachments-08963# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, there is a
+--     graphics pipeline bound with a fragment shader that statically
+--     writes to a color attachment, the color write mask is not zero,
+--     color writes are enabled, and the corresponding element of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     corresponding element of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-pColorAttachments-11539# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, there is a graphics
+--     pipeline bound with a fragment shader that statically writes to a
+--     color attachment, the color write mask is not zero, color writes are
+--     enabled, and the corresponding element of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     corresponding element of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-pDepthAttachment-08964# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, there is a
+--     graphics pipeline bound, depth test is enabled, and the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-pDepthAttachment-11540# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, there is a graphics
+--     pipeline bound, depth test is enabled, and the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-pStencilAttachment-08965# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, there is a
+--     graphics pipeline bound, stencil test is enabled and the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-pStencilAttachment-11860# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, there is a graphics
+--     pipeline bound, stencil test is enabled and the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-flags-10582# If the current
+--     render pass instance was begun with a
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     call in @commandBuffer@, its
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@flags@
+--     parameter /must/ not have
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT'
+--     set unless
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_CONTENTS_INLINE_BIT_KHR'
+--     is also set
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-primitivesGeneratedQueryWithRasterizerDiscard-06708#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithRasterizerDiscard primitivesGeneratedQueryWithRasterizerDiscard>
+--     feature is not enabled and the
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
+--     query is active,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-discard rasterization discard>
+--     /must/ not be enabled
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-primitivesGeneratedQueryWithNonZeroStreams-06709#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>
+--     feature is not enabled and the
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
+--     query is active, the bound graphics pipeline /must/ not have been
+--     created with a non-zero value in
+--     'PipelineRasterizationStateStreamCreateInfoEXT'::@rasterizationStream@
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07620# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClamp depthClamp>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClampEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07621# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_POLYGON_MODE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07622# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07623# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-alphaToCoverageEnable-08919# If
+--     the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT'
+--     dynamic state enabled, and @alphaToCoverageEnable@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-fragmentoutput Fragment Output Interface>
+--     /must/ contain a variable for the alpha @Component@ word in
+--     @Location@ 0 at @Index@ 0
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-alphaToCoverageEnable-08920# If
+--     a shader object is bound to any graphics stage, and the most recent
+--     call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT'
+--     in the current command buffer set @alphaToCoverageEnable@ to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-fragmentoutput Fragment Output Interface>
+--     /must/ contain a variable for the alpha @Component@ word in
+--     @Location@ 0 at @Index@ 0
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07624# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07625# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-alphaToOne alphaToOne>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToOneEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07626# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-logicOp logicOp>
+--     feature is enabled, a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLogicOpEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07627# If a shader object
+--     is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and there are color
+--     attachments bound, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07629# If a shader object
+--     is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and there are color
+--     attachments bound, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07630# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryStreams geometryStreams>
+--     feature is enabled, and a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
+--     stage or a graphics pipeline is bound which was created with both a
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
+--     stage and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_STREAM_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationStreamEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07631# If the
+--     @VK_EXT_conservative_rasterization@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetConservativeRasterizationModeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07632# If the
+--     @VK_EXT_conservative_rasterization@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @conservativeRasterizationMode@ is
+--     'Vulkan.Extensions.VK_EXT_conservative_rasterization.CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT',
+--     then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetExtraPrimitiveOverestimationSizeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-conservativePointAndLineRasterization-07499#
+--     If the @VK_EXT_conservative_rasterization@ extension is enabled,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-conservativePointAndLineRasterization conservativePointAndLineRasterization>
+--     is not supported, a shader object is bound to any graphics stage or
+--     a graphics pipeline is bound, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line or point topology class, then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @conservativeRasterizationMode@ /must/ be
+--     'Vulkan.Extensions.VK_EXT_conservative_rasterization.CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07633# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClipEnable depthClipEnable>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT'
+--     dynamic state, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07636# If the
+--     @VK_EXT_provoking_vertex@ extension is enabled, a shader object is
+--     bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetProvokingVertexModeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08666# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
+--     features are enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line topology class, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08669# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
+--     features are enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line topology class, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07849# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
+--     features are enabled and a shader object is bound to any graphics
+--     stage, or a bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @stippledLineEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then
+--     'Vulkan.Core14.Promoted_From_VK_KHR_line_rasterization.cmdSetLineStipple'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-10608# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line topology class, and the current @lineRasterizationMode@
+--     is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_BRESENHAM'
+--     or
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH',
+--     then the current @alphaToCoverageEnable@, @alphaToOneEnable@ and
+--     @sampleShadingEnable@ states /must/ all be
+--     'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07639# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClipControl depthClipControl>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipNegativeOneToOneEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-09650# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClampControl depthClampControl>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @depthClampEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_depth_clamp_control.cmdSetDepthClampRangeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07640# If the
+--     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportWScalingEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07641# If the
+--     @VK_NV_viewport_swizzle@ extension is enabled, and a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07642# If the
+--     @VK_NV_fragment_coverage_to_color@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07643# If the
+--     @VK_NV_fragment_coverage_to_color@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @coverageToColorEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07644# If the
+--     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationModeNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07645# If the
+--     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @coverageModulationMode@ is any value other than
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.COVERAGE_MODULATION_MODE_NONE_NV',
+--     then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07646# If the
+--     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @coverageModulationTableEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07647# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetShadingRateImageEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-pipelineFragmentShadingRate-09238#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07648# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-representativeFragmentTest representativeFragmentTest>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRepresentativeFragmentTestEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07649# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-coverageReductionMode coverageReductionMode>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageReductionModeNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-rasterizationSamples-07471# If
+--     the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, and the current subpass does not use any color
+--     and\/or depth\/stencil attachments, then the @rasterizationSamples@
+--     in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     /must/ follow the rules for a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-noattachments zero-attachment subpass>
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-samples-07472# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
+--     state enabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state disabled, then the @samples@ parameter in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
+--     /must/ be greater or equal to the
+--     'Vulkan.Core10.GraphicsPipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
+--     parameter used to create the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-samples-07473# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
+--     state and
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     states enabled, then the @samples@ parameter in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
+--     /must/ be greater or equal to the @rasterizationSamples@ parameter
+--     in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-09211# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, or a shader object is bound to any graphics stage,
+--     and the current render pass instance includes a
+--     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'
+--     structure with @multisampledRenderToSingleSampledEnable@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then the
+--     @rasterizationSamples@ in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     /must/ be the same as the @rasterizationSamples@ member of that
+--     structure
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-firstAttachment-07476# If a
+--     shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--     dynamic states enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
+--     in the current command buffer prior to this drawing command /must/
+--     have set a value for all active color attachments
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-firstAttachment-07478# If a
+--     shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT'
+--     dynamic states enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
+--     in the current command buffer prior to this drawing command /must/
+--     have set a value for all active color attachments
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-advancedBlendMaxColorAttachments-07480#
+--     If a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
+--     and
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--     dynamic states enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and an active color
+--     attachment
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @blendEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then the
+--     number of active color attachments /must/ not exceed
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-advancedBlendMaxColorAttachments advancedBlendMaxColorAttachments>
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-10862# If a graphics
+--     pipeline is bound was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
+--     , but not the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command for all
+--     active color attachments with the @blendEnable@
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-rasterizerDiscardEnable-10863#
+--     If a graphics pipeline is bound was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT',
+--     but not the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command for all
+--     active color attachments with the @blendEnable@
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-10864# If a shader object
+--     is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
+--     and
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then either
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command for all
+--     active color attachments with the @blendEnable@
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-primitivesGeneratedQueryWithNonZeroStreams-07481#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>
+--     feature is not enabled and the
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
+--     query is active, and the bound graphics pipeline was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_STREAM_EXT'
+--     state enabled, the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationStreamEXT'
+--     /must/ have set the @rasterizationStream@ to zero
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-sampleLocationsPerPixel-07482#
+--     If the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state enabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state disabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then the @sampleLocationsPerPixel@ member of @pSampleLocationsInfo@
+--     in the last call to
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     /must/ equal the @rasterizationSamples@ member of the
+--     'Vulkan.Core10.GraphicsPipeline.PipelineMultisampleStateCreateInfo'
+--     structure the bound graphics pipeline has been created with
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-sampleLocationsPerPixel-07483#
+--     If the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state enabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then the @sampleLocationsPerPixel@ member of @pSampleLocationsInfo@
+--     in the last call to
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     /must/ equal the @rasterizationSamples@ parameter of the last call
+--     to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-sampleLocationsEnable-07484# If
+--     a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage, or the bound graphics pipeline was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     state enabled, and @sampleLocationsEnable@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT'
+--     then the current active depth attachment /must/ have been created
+--     with the
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'
+--     bit set
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-sampleLocationsEnable-07485# If
+--     a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage, or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state enabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     state enabled, and if @sampleLocationsEnable@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
+--     then the @sampleLocationsInfo.maxSampleLocationGridSize.width@ in
+--     the last call to
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     /must/ evenly divide
+--     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.width@
+--     as returned by
+--     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
+--     with a @samples@ parameter equaling @rasterizationSamples@
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-sampleLocationsEnable-07486# If
+--     a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage, or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state enabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     state enabled, and if @sampleLocationsEnable@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
+--     then the @sampleLocationsInfo.maxSampleLocationGridSize.height@ in
+--     the last call to
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     /must/ evenly divide
+--     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.height@
+--     as returned by
+--     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
+--     with a @samples@ parameter equaling @rasterizationSamples@
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-sampleLocationsEnable-07487# If
+--     a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage, or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     state enabled, and if @sampleLocationsEnable@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
+--     the fragment shader code /must/ not statically use the extended
+--     instruction @InterpolateAtSample@
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-sampleLocationsEnable-07936# If
+--     the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state disabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then @sampleLocationsInfo.sampleLocationGridSize.width@ /must/
+--     evenly divide
+--     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.width@
+--     as returned by
+--     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
+--     with a @samples@ parameter equaling the value of
+--     @rasterizationSamples@ in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-sampleLocationsEnable-07937# If
+--     the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state disabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then @sampleLocationsInfo.sampleLocationGridSize.height@ /must/
+--     evenly divide
+--     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.height@
+--     as returned by
+--     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
+--     with a @samples@ parameter equaling the value of
+--     @rasterizationSamples@ in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-sampleLocationsEnable-07938# If
+--     the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state disabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then @sampleLocationsInfo.sampleLocationsPerPixel@ /must/ equal
+--     @rasterizationSamples@ in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-coverageModulationTableEnable-07488#
+--     If a shader object is bound to any graphics stage or the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV'
+--     state enabled, and the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV'
+--     set @coverageModulationTableEnable@ to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then the
+--     @coverageModulationTableCount@ parameter in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableNV'
+--     /must/ equal the current @rasterizationSamples@ divided by the
+--     number of color samples in the current active color attachment
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-rasterizationSamples-07489# If
+--     the @VK_NV_framebuffer_mixed_samples@ extension is enabled, and if
+--     current subpass has a depth\/stencil attachment and depth test,
+--     stencil test, or depth bounds test are enabled in the bound
+--     pipeline, then the current @rasterizationSamples@ /must/ be the same
+--     as the sample count of the depth\/stencil attachment
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-coverageToColorEnable-07490# If
+--     the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
+--     state enabled and the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
+--     set the @coverageToColorEnable@ to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then there /must/ be an
+--     active color attachment at the location selected by the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
+--     @coverageToColorLocation@, with a
+--     'Vulkan.Core10.Enums.Format.Format' of
+--     'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R8_SINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R16_UINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R16_SINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R32_UINT', or
+--     'Vulkan.Core10.Enums.Format.FORMAT_R32_SINT'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-rasterizerDiscardEnable-09420#
+--     If the @VK_NV_fragment_coverage_to_color@ extension is enabled, and
+--     a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage, and the most recent call to
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
+--     in the current command buffer set @rasterizerDiscardEnable@ to
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
+--     set the @coverageToColorEnable@ to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then there /must/ be an
+--     active color attachment at the location selected by the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
+--     @coverageToColorLocation@, with a
+--     'Vulkan.Core10.Enums.Format.Format' of
+--     'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R8_SINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R16_UINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R16_SINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R32_UINT', or
+--     'Vulkan.Core10.Enums.Format.FORMAT_R32_SINT'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-coverageReductionMode-07491# If
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-coverageReductionMode coverageReductionMode>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV'
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     dynamic states enabled, then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current values>
+--     of @coverageReductionMode@, @rasterizationSamples@, the sample
+--     counts for the color and depth\/stencil attachments (if the subpass
+--     has them) /must/ be a valid combination returned by
+--     'Vulkan.Extensions.VK_NV_coverage_reduction_mode.getPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-viewportCount-07492# 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_SWIZZLE_NV'
+--     dynamic state enabled, 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-vkCmdDrawIndirectByteCountEXT-viewportCount-07493# 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_SWIZZLE_NV'
+--     dynamic states enabled then the @viewportCount@ parameter in the
+--     last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
+--     /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-vkCmdDrawIndirectByteCountEXT-viewportCount-09421# If the
+--     @VK_NV_viewport_swizzle@ extension is enabled, and a shader object
+--     is bound to any graphics stage, then the @viewportCount@ parameter
+--     in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
+--     /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-vkCmdDrawIndirectByteCountEXT-rasterizationSamples-07494# If
+--     the @VK_NV_framebuffer_mixed_samples@ extension is enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-coverageReductionMode coverageReductionMode>
+--     feature is not enabled, or the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @coverageReductionMode@ is not
+--     'Vulkan.Extensions.VK_NV_coverage_reduction_mode.COVERAGE_REDUCTION_MODE_TRUNCATE_NV',
+--     and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizationSamples@ is greater than sample count of the color
+--     attachment, then
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-sampleshading sample shading>
+--     /must/ be disabled
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-stippledLineEnable-07495# If the
+--     bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic states enabled, and if the current @stippledLineEnable@
+--     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
+--     @lineRasterizationMode@ state is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_RECTANGULAR',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-stippledLineEnable-07496# If the
+--     bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic states enabled, and if the current @stippledLineEnable@
+--     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
+--     @lineRasterizationMode@ state is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_BRESENHAM',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-stippledLineEnable-07497# If the
+--     bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic states enabled, and if the current @stippledLineEnable@
+--     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
+--     @lineRasterizationMode@ state is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-stippledLineEnable-07498# If the
+--     bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic states enabled, and if the current @stippledLineEnable@
+--     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
+--     @lineRasterizationMode@ state is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_DEFAULT',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>
+--     feature /must/ be enabled and
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@strictLines@
+--     /must/ be 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-stage-07073# If the bound
+--     pipeline was created with the
+--     'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo'::@stage@
+--     member of an element of
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'::@pStages@
+--     set to
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT',
+--     then
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-mesh-shader Mesh Shader Queries>
+--     /must/ not be active
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08877# If a shader object
+--     is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07850# If dynamic state was
+--     inherited from
+--     'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV',
+--     it /must/ be set in the current command buffer prior to this drawing
+--     command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-nextStage-10745# For each shader
+--     object bound to a graphics stage, except for shader object bound to
+--     the last graphics stage in the logical pipeline, it /must/ have been
+--     created with a @nextStage@ including the corresponding bit to the
+--     shader object bound to the following graphics stage in the logical
+--     pipeline
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08684# If there is no bound
+--     graphics pipeline,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08685# If there is no bound
+--     graphics pipeline, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellationShader>
+--     feature is enabled,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08686# If there is no bound
+--     graphics pipeline, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellationShader>
+--     feature is enabled,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08687# If there is no bound
+--     graphics pipeline, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometryShader>
+--     feature is enabled,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08688# If there is no bound
+--     graphics pipeline,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08689# If there is no bound
+--     graphics pipeline, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
+--     feature is enabled,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08690# If there is no bound
+--     graphics pipeline, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
+--     feature is enabled,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08693# If there is no bound
+--     graphics pipeline, and at least one of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
+--     features is enabled, one of the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--     stages /must/ have a valid 'Vulkan.Extensions.Handles.ShaderEXT'
+--     bound, and the other /must/ have no
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08696# If there is no bound
+--     graphics pipeline, and a valid 'Vulkan.Extensions.Handles.ShaderEXT'
+--     is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage, there /must/ be no 'Vulkan.Extensions.Handles.ShaderEXT'
+--     bound to either the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--     stage or the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--     stage
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08698# If any graphics
+--     shader is bound which was created with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
+--     flag, then all shaders created with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
+--     flag in the same
+--     'Vulkan.Extensions.VK_EXT_shader_object.createShadersEXT' call
+--     /must/ also be bound
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08699# If any graphics
+--     shader is bound which was created with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
+--     flag, any stages in between stages whose shaders which did not
+--     create a shader with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
+--     flag as part of the same
+--     'Vulkan.Extensions.VK_EXT_shader_object.createShadersEXT' call
+--     /must/ not have any 'Vulkan.Extensions.Handles.ShaderEXT' bound
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08878# All bound graphics
+--     shader objects /must/ have been created with identical or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-identically-defined identically defined>
+--     push constant ranges
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08879# All bound graphics
+--     shader objects /must/ have either been created with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag set, or with identical or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-identically-defined identically defined>
+--     arrays of descriptor set layouts
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-colorAttachmentCount-09372# If
+--     the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and a
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
+--     equal to @1@, a color attachment with a resolve mode of
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID',
+--     and a fragment shader is bound, it /must/ not declare the
+--     @DepthReplacing@ or @StencilRefReplacingEXT@ execution modes
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-pDynamicStates-08715# If the
+--     bound graphics pipeline state includes a fragment shader stage, was
+--     created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE'
+--     set in
+--     'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@,
+--     and the fragment shader declares the @EarlyFragmentTests@ execution
+--     mode and uses @OpDepthAttachmentReadEXT@, the @depthWriteEnable@
+--     parameter in the last call to
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthWriteEnable'
+--     /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-pDynamicStates-08716# If the
+--     bound graphics pipeline state includes a fragment shader stage, was
+--     created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_WRITE_MASK'
+--     set in
+--     'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@,
+--     and the fragment shader declares the @EarlyFragmentTests@ execution
+--     mode and uses @OpStencilAttachmentReadEXT@, the @writeMask@
+--     parameter in the last call to
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilWriteMask' /must/
+--     be @0@
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-09116# If a shader object
+--     is bound to any graphics stage or the bound graphics pipeline was
+--     created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT',
+--     and the format of any color attachment is
+--     'Vulkan.Core10.Enums.Format.FORMAT_E5B9G9R9_UFLOAT_PACK32', the
+--     corresponding element of the @pColorWriteMasks@ parameter of
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
+--     /must/ either include all of
+--     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_R_BIT',
+--     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_G_BIT',
+--     and
+--     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_B_BIT',
+--     or none of them
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-maxFragmentDualSrcAttachments-09239#
+--     If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blending blending>
+--     is enabled for any attachment where either the source or destination
+--     blend factors for that attachment
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-dsb use the secondary color input>,
+--     the maximum value of @Location@ for any output attachment
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-staticuse statically used>
+--     in the @Fragment@ @Execution@ @Model@ executed by this command
+--     /must/ be less than
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFragmentDualSrcAttachments maxFragmentDualSrcAttachments>
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-09548# If the current
+--     render pass was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there is no shader object bound to any graphics stage, the value of
+--     each element of
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingAttachmentLocationInfo'::@pColorAttachmentLocations@
+--     in the bound pipeline /must/ match the value for the corresponding
+--     locations set currently in the current render pass instance
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-09549# If the current
+--     render pass was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     and there is no shader object bound to any graphics stage, the value
+--     of each element of
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pColorAttachmentInputIndices@
+--     in the bound pipeline /must/ match the value for the corresponding
+--     index set currently in the current render pass instance
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-10927# If the current
+--     render pass was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     and there is no shader object bound to any graphics stage, the value
+--     of
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pDepthInputAttachmentIndex@
+--     in the bound pipeline /must/ match the value set currently in the
+--     current render pass instance
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-10928# If the current
+--     render pass was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     and there is no shader object bound to any graphics stage, the value
+--     of
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pStencilInputAttachmentIndex@
+--     in the bound pipeline /must/ match the value set currently in the
+--     current render pass instance
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-09642# If the current
+--     render pass was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     with the
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT'
+--     flag, the bound graphics pipeline /must/ have been created with
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-09643# If the bound
+--     graphics pipeline was created with
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT',
+--     the current render pass /must/ have begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     with the
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT'
+--     flag
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-10677# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model>
+--     is enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tileShadingPerTileDraw tileShadingPerTileDraw>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-10772# If a shader object
+--     is bound to any graphics stage, /multiview/ functionality /must/ not
+--     be enabled in the current render pass
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-multiviewPerViewViewports-12262#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiviewPerViewViewports multiviewPerViewViewports>
+--     feature is enabled, then the index of the most significant bit in
+--     current render pass instance @viewMask@ /must/ be less than the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @viewportCount@
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-multiviewPerViewViewports-12263#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiviewPerViewViewports multiviewPerViewViewports>
+--     feature is enabled, then the index of the most significant bit in
+--     current render pass instance @viewMask@ /must/ be less than the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @scissorCount@
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-flags-11521# If current render
+--     pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@flags@
+--     which includes
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_FRAGMENT_REGION_BIT_EXT',
+--     and if
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-sampleshading sample shading>
+--     is enabled (explicitly or implicitly), then the minimum fraction for
+--     sample shading /must/ equal 0.0
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-11522# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and contains a custom resolve, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, the graphics pipeline bound /must/ have been
+--     created with a
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-11523# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and does not contain a custom resolve, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, the graphics pipeline bound /must/ not have
+--     been created with a
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-customResolve-11524# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, the graphics pipeline
+--     bound /must/ have been created with
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@
+--     as 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-customResolve-11525# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and contains a custom resolve, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not been recorded in the render pass instance, the graphics
+--     pipeline bound /must/ have been created with
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@
+--     as 'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-11861# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled and the current render pass instance was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and contains a custom resolve, the bound graphics pipeline /must/
+--     have been created with a
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@colorAttachmentCount@
+--     equal to
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-11862# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and the current render pass instance was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, 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 an @resolveImageView@ 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_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@
+--     used to create the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-11863# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and the current render pass instance was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, 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 an @resolveImageView@ equal to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have the
+--     corresponding element of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@
+--     used to create the bound pipeline equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-dynamicRenderingUnusedAttachments-11864#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled, the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, 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 an @resolveImageView@ 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_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@
+--     used to create the bound graphics pipeline, or the corresponding
+--     element of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@,
+--     if it exists, /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-11865# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@
+--     used to create the bound graphics pipeline /must/ be equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-11866# If current render
+--     pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@
+--     used to create the 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->resolveImageView@
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-dynamicRenderingUnusedAttachments-11867#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@
+--     used to create the bound graphics pipeline was not equal to the
+--     'Vulkan.Core10.Enums.Format.Format' used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@,
+--     the value of the format /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-11868# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@
+--     used to create the bound graphics pipeline /must/ be equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-11869# If current render
+--     pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@
+--     used to create the 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->resolveImageView@
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-dynamicRenderingUnusedAttachments-11870#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@
+--     used to create the bound graphics pipeline was not equal to the
+--     'Vulkan.Core10.Enums.Format.Format' used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@,
+--     the value of the format /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-colorAttachmentCount-11871# If
+--     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@ and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, then for each element
+--     of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
+--     array with a @resolveImageView@ not equal to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', the @resolveImageView@
+--     /must/ have been created with a sample count equal to the value of
+--     @rasterizationSamples@ for the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-pDepthAttachment-11872# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     @rasterizationSamples@ for the bound graphics pipeline /must/ be
+--     equal to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-pStencilAttachment-11873# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     @rasterizationSamples@ for the bound graphics pipeline /must/ be
+--     equal to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-customResolve-11529# If a shader
+--     object is bound to the fragment stage, the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     a fragment density map attachment is active, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been called, then the fragment shader object bound /must/ have
+--     been created with
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@
+--     as 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-customResolve-11530# If a shader
+--     object is bound to the fragment stage, the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and contains a custom resolve, a fragment density map attachment is
+--     active, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been called, then the fragment shader object bound
+--     /must/ have been created with
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@
+--     as 'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-flags-13361# If there are any
+--     shader objects bound that were created with @flags@ that includes
+--     the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     bit, then all bound shader objects /must/ have been created with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     bit
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-flags-13362# If there are any
+--     shader objects bound that were created with @flags@ that includes
+--     the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     bit, then the pipeline layout of the bound descriptor sets /must/
+--     have been created with
+--     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT'
+--     set
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-flags-13363# If there are any
+--     shader objects bound that were created with @flags@ that includes
+--     the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     bit, and any of the descriptor set layouts used to create the
+--     pipeline layout of the bound descriptor sets were created with any
+--     binding’s
+--     'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutBinding'::@stageFlags@
+--     set with
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT',
+--     then there /must/ be no binding with
+--     'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutBinding'::@stageFlags@
+--     set with
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-flags-13364# If there are any
+--     shader objects bound that were created with @flags@ that includes
+--     both the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     and
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
+--     bits, the pipeline layout of the bound descriptor sets /must/ have
+--     been created with
+--     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_NO_TASK_SHADER_BIT_KHR'
+--     set
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-flags-13365# If there are any
+--     shader objects bound that were created with @flags@ that includes
+--     both the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     and
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
+--     bits, there /must/ be no shader object bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--     stage
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-04007# All vertex input
+--     bindings accessed via vertex input variables declared in the vertex
+--     shader entry point’s interface /must/ have either valid or
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' buffers bound
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-None-02721# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, and that pipeline was created without
+--     enabling
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     for @vertexInputs@, then 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-vkCmdDrawIndirectByteCountEXT-format-10389# For each vertex
+--     attribute accessed by this command, if its
+--     'Vulkan.Core10.GraphicsPipeline.VertexInputAttributeDescription'::@format@
+--     or
+--     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@
+--     is a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-packed packed format>,
+--     and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-legacyVertexAttributes legacyVertexAttributes>
+--     feature is not enabled, the value of @attribAddress@, calculated as
+--     described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input-address-calculation Vertex Input Calculation>,
+--     /must/ be a multiple of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats size of the format>
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-format-10390# For each vertex
+--     attribute accessed by this command, if its
+--     'Vulkan.Core10.GraphicsPipeline.VertexInputAttributeDescription'::@format@
+--     or
+--     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@
+--     is not a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-packed packed format>,
+--     and either the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-legacyVertexAttributes legacyVertexAttributes>
+--     feature is not enabled or @format@ has 64-bit components, the value
+--     of @attribAddress@, calculated as described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input-address-calculation Vertex Input Calculation>,
+--     /must/ be a multiple of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats component size of the format>
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07842# If there is a shader
+--     object bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY'
+--     dynamic state enabled then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-dynamicPrimitiveTopologyUnrestricted-07500#
+--     If the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY'
+--     dynamic state enabled and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-dynamicPrimitiveTopologyUnrestricted dynamicPrimitiveTopologyUnrestricted>
+--     is 'Vulkan.Core10.FundamentalTypes.FALSE', then the
+--     @primitiveTopology@ parameter of
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
+--     /must/ be of the same
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-class topology class>
+--     as the pipeline
+--     'Vulkan.Core10.GraphicsPipeline.PipelineInputAssemblyStateCreateInfo'::@topology@
+--     state
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-primitiveTopology-10286# If a
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
+--     stage is bound, then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @primitiveTopology@ /must/ be
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST'
+--     prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-primitiveTopology-10747# If
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
+--     set @primitiveTopology@ to
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST'
+--     prior to this drawing command, then a
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
+--     stage /must/ be bound
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-primitiveTopology-10748# If
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
+--     set @primitiveTopology@ to
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_POINT_LIST'
+--     prior to this drawing command, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance5 maintenance5>
+--     feature is not enabled, both a
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     and
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
+--     stage are not bound, then the @Vertex@ @Execution@ @Model@ /must/
+--     have a @PointSize@ decorated variable that is statically written to
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-pStrides-04913# If the bound
+--     graphics pipeline was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE'
+--     dynamic state enabled, but without the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2'
+--     with a non-@NULL@ @pStrides@ parameter or
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.cmdBindVertexBuffers3KHR'
+--     with @setStride@ set to 'Vulkan.Core10.FundamentalTypes.TRUE' /must/
+--     have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this draw command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-13118# If the bound
+--     graphics pipeline was created without the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE'
+--     dynamic state enabled, without the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
+--     dynamic state enabled, and
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.cmdBindVertexBuffers3KHR'
+--     was called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this draw command, the value
+--     of @setStride@ in each of its @pBindInfos@ elements must have been
+--     'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-04914# If there is a shader
+--     object bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage or 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 and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this draw command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-Input-07939# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-vertexAttributeRobustness vertexAttributeRobustness>
+--     feature is not enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance9 maintenance9>
+--     feature is not enabled, and there is a shader object bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
+--     dynamic state enabled then all variables with the @Input@ storage
+--     class decorated with @Location@ in the @Vertex@ @Execution@ @Model@
+--     @OpEntryPoint@ /must/ contain a location in
+--     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@location@
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-Input-08734# If there is a
+--     shader object bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
+--     dynamic state enabled and either the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-legacyVertexAttributes legacyVertexAttributes>
+--     feature is not enabled or the SPIR-V Type associated with a given
+--     @Input@ variable of the corresponding @Location@ in the @Vertex@
+--     @Execution@ @Model@ @OpEntryPoint@ is 64-bit, then the numeric type
+--     associated with all @Input@ variables of the corresponding
+--     @Location@ in the @Vertex@ @Execution@ @Model@ @OpEntryPoint@ /must/
+--     be the same as
+--     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-format-08936# If there is a
+--     shader object bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
+--     dynamic state enabled and
+--     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@
+--     has a 64-bit component, then the scalar width associated with all
+--     @Input@ variables of the corresponding @Location@ in the @Vertex@
+--     @Execution@ @Model@ @OpEntryPoint@ /must/ be 64-bit
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-format-08937# If there is a
+--     shader object bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
+--     dynamic state enabled and the scalar width associated with a
+--     @Location@ decorated @Input@ variable in the @Vertex@ @Execution@
+--     @Model@ @OpEntryPoint@ is 64-bit, then the corresponding
+--     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@
+--     /must/ have a 64-bit component
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-09203# If there is a shader
+--     object bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
+--     dynamic state enabled and
+--     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@
+--     has a 64-bit component, then all @Input@ variables at the
+--     corresponding @Location@ in the @Vertex@ @Execution@ @Model@
+--     @OpEntryPoint@ /must/ not use components that are not present in the
+--     format
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-04875# If there is a shader
+--     object bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
+--     stage or the bound graphics pipeline state was created with both a
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
+--     stage and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @primitiveTopology@ is
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST',
+--     then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPatchControlPointsEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-04879# If there is a shader
+--     object bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE'
+--     dynamic state enabled then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-09637# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitiveTopologyListRestart primitiveTopologyListRestart>
+--     feature is not enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-vertex-input-assembler-topology input assembly>
+--     is
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_POINT_LIST',
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_LINE_LIST',
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_TRIANGLE_LIST',
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY',
+--     or
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY',
+--     there is a shader object bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE'
+--     dynamic state enabled, then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnable'
+--     /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-10909# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitiveTopologyPatchListRestart primitiveTopologyPatchListRestart>
+--     feature is not enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-vertex-input-assembler-topology input assembly>
+--     is
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST',
+--     there is a shader object bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
+--     stage or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE'
+--     dynamic state enabled then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnable'
+--     /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-stage-06481# The bound graphics
+--     pipeline /must/ not have been created with the
+--     'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo'::@stage@
+--     member of any element of
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'::@pStages@
+--     set to
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08885# There /must/ be no
+--     shader object bound to either of the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--     stages
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-07619# If a shader object
+--     is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     stage or a graphics pipeline is bound which was created with both a
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     stage and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetTessellationDomainOriginEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-OpExecutionMode-12239# If a
+--     shader is bound to both the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
+--     and
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     stages, and if both stages contain an @OpExecutionMode@ instruction
+--     specifying the type of subdivision, they /must/ be the same
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-OpExecutionMode-12240# If a
+--     shader is bound to both the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
+--     and
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     stages, and if both stages contain an @OpExecutionMode@ instruction
+--     specifying the orientation of triangles, they /must/ be the same
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-OpExecutionMode-12241# If a
+--     shader is bound to both the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
+--     and
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     stages, and if both stages contain an @OpExecutionMode@ instruction
+--     specifying the segment spacing, they /must/ be the same
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-OpExecutionMode-12242# If a
+--     shader is bound to both the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
+--     and
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     stages, and if both stages contain an @OpExecutionMode@ instruction
+--     specifying the output patch size, they /must/ be the same
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-pNext-09461# If the bound
+--     graphics pipeline state was created with
+--     'Vulkan.Core14.Promoted_From_VK_KHR_vertex_attribute_divisor.PipelineVertexInputDivisorStateCreateInfo'
+--     in the @pNext@ chain of
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'::@pVertexInputState@,
+--     any member of
+--     'Vulkan.Core14.Promoted_From_VK_KHR_vertex_attribute_divisor.PipelineVertexInputDivisorStateCreateInfo'::@pVertexBindingDivisors@
+--     has a value other than @1@ in @divisor@, and
+--     'Vulkan.Core14.Promoted_From_VK_KHR_vertex_attribute_divisor.PhysicalDeviceVertexAttributeDivisorProperties'::@supportsNonZeroFirstInstance@
+--     is 'Vulkan.Core10.FundamentalTypes.FALSE', then @firstInstance@
+--     /must/ be @0@
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-09462# If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-objects shader objects>
+--     are used for drawing or the bound graphics pipeline state was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
+--     dynamic state enabled, any member of the
+--     @pVertexBindingDescriptions@ parameter to the
+--     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.cmdSetVertexInputEXT'
+--     call that sets this dynamic state has a value other than @1@ in
+--     @divisor@, and
+--     'Vulkan.Core14.Promoted_From_VK_KHR_vertex_attribute_divisor.PhysicalDeviceVertexAttributeDivisorProperties'::@supportsNonZeroFirstInstance@
+--     is 'Vulkan.Core10.FundamentalTypes.FALSE', then @firstInstance@
+--     /must/ be @0@
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-counterOffset-09474#
+--     @counterOffset@ /must/ be a multiple of @4@
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-transformFeedback-02287#
+--     'PhysicalDeviceTransformFeedbackFeaturesEXT'::@transformFeedback@
+--     /must/ be enabled
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-transformFeedbackDraw-02288# The
+--     implementation /must/ support
+--     'PhysicalDeviceTransformFeedbackPropertiesEXT'::@transformFeedbackDraw@
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-vertexStride-02289#
+--     @vertexStride@ /must/ be greater than 0 and less than or equal to
+--     'PhysicalDeviceTransformFeedbackPropertiesEXT'::@maxTransformFeedbackBufferDataStride@
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-vertexStride-09475#
+--     @vertexStride@ /must/ be a multiple of @4@
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-02646#
+--     @commandBuffer@ /must/ not be a protected command buffer
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-counterBuffer-04567# If
+--     @counterBuffer@ is non-sparse then it /must/ be bound completely and
+--     contiguously to a single 'Vulkan.Core10.Handles.DeviceMemory' object
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-counterBuffer-02290#
+--     @counterBuffer@ /must/ have been created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-counterBufferOffset-04568#
+--     @counterBufferOffset@ /must/ be a multiple of @4@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-counterBuffer-parameter#
+--     @counterBuffer@ /must/ be a valid 'Vulkan.Core10.Handles.Buffer'
+--     handle
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-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-vkCmdDrawIndirectByteCountEXT-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-renderpass# This command /must/
+--     only be called inside of a render pass instance
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-suspended# This command /must/
+--     not be called between suspended render pass instances
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-videocoding# This command /must/
+--     only be called outside of a video coding scope
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-commonparent# Both of
+--     @commandBuffer@, and @counterBuffer@ /must/ have been created,
+--     allocated, or retrieved from the same 'Vulkan.Core10.Handles.Device'
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Inside                                                                                                                 | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdDrawIndirectByteCountEXT is affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_transform_feedback VK_EXT_transform_feedback>,
+-- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize'
+cmdDrawIndirectByteCountEXT :: forall io
+                             . (MonadIO io)
+                            => -- | @commandBuffer@ is the command buffer into which the command is
+                               -- recorded.
+                               CommandBuffer
+                            -> -- | @instanceCount@ is the number of instances to draw.
+                               ("instanceCount" ::: Word32)
+                            -> -- | @firstInstance@ is the instance ID of the first instance to draw.
+                               ("firstInstance" ::: Word32)
+                            -> -- | @counterBuffer@ is the buffer handle from where the byte count is read.
+                               ("counterBuffer" ::: Buffer)
+                            -> -- | @counterBufferOffset@ is the offset into the buffer used to read the
+                               -- byte count, which is used to calculate the vertex count for this draw
+                               -- call.
+                               ("counterBufferOffset" ::: DeviceSize)
+                            -> -- | @counterOffset@ is subtracted from the byte count read from the
+                               -- @counterBuffer@ at the @counterBufferOffset@
+                               ("counterOffset" ::: Word32)
+                            -> -- | @vertexStride@ is the stride in bytes between each element of the vertex
+                               -- data that is used to calculate the vertex count from the counter value.
+                               -- This value is typically the same value that was used in the graphics
+                               -- pipeline state when the transform feedback was captured as the
+                               -- @XfbStride@.
+                               ("vertexStride" ::: Word32)
+                            -> io ()
+cmdDrawIndirectByteCountEXT commandBuffer
+                              instanceCount
+                              firstInstance
+                              counterBuffer
+                              counterBufferOffset
+                              counterOffset
+                              vertexStride = liftIO $ do
+  let vkCmdDrawIndirectByteCountEXTPtr = pVkCmdDrawIndirectByteCountEXT (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  unless (vkCmdDrawIndirectByteCountEXTPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdDrawIndirectByteCountEXT is null" Nothing Nothing
+  let vkCmdDrawIndirectByteCountEXT' = mkVkCmdDrawIndirectByteCountEXT vkCmdDrawIndirectByteCountEXTPtr
+  traceAroundEvent "vkCmdDrawIndirectByteCountEXT" (vkCmdDrawIndirectByteCountEXT'
+                                                      (commandBufferHandle (commandBuffer))
+                                                      (instanceCount)
+                                                      (firstInstance)
+                                                      (counterBuffer)
+                                                      (counterBufferOffset)
+                                                      (counterOffset)
+                                                      (vertexStride))
+  pure $ ()
+
+
+-- | VkPhysicalDeviceTransformFeedbackFeaturesEXT - Structure describing
+-- transform feedback features that can be supported by an implementation
+--
+-- = Members
+--
+-- This structure describes the following features:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceTransformFeedbackFeaturesEXT' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceTransformFeedbackFeaturesEXT', it /must/ add an instance
+-- of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_transform_feedback VK_EXT_transform_feedback>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceTransformFeedbackFeaturesEXT = PhysicalDeviceTransformFeedbackFeaturesEXT
+  { -- | #features-transformFeedback# @transformFeedback@ indicates whether the
+    -- implementation supports transform feedback and shader modules /can/
+    -- declare the @TransformFeedback@ capability.
+    transformFeedback :: Bool
+  , -- | #features-geometryStreams# @geometryStreams@ indicates whether the
+    -- implementation supports the @GeometryStreams@ SPIR-V capability.
+    geometryStreams :: Bool
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceTransformFeedbackFeaturesEXT)
+#endif
+deriving instance Show PhysicalDeviceTransformFeedbackFeaturesEXT
+
+instance ToCStruct PhysicalDeviceTransformFeedbackFeaturesEXT where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceTransformFeedbackFeaturesEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (transformFeedback))
+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (geometryStreams))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_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 PhysicalDeviceTransformFeedbackFeaturesEXT where
+  peekCStruct p = do
+    transformFeedback <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    geometryStreams <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
+    pure $ PhysicalDeviceTransformFeedbackFeaturesEXT
+             (bool32ToBool transformFeedback) (bool32ToBool geometryStreams)
+
+instance Storable PhysicalDeviceTransformFeedbackFeaturesEXT where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceTransformFeedbackFeaturesEXT where
+  zero = PhysicalDeviceTransformFeedbackFeaturesEXT
+           zero
+           zero
+
+
+-- | VkPhysicalDeviceTransformFeedbackPropertiesEXT - Structure describing
+-- transform feedback properties that can be supported by an implementation
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceTransformFeedbackPropertiesEXT' 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.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_transform_feedback VK_EXT_transform_feedback>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceTransformFeedbackPropertiesEXT = PhysicalDeviceTransformFeedbackPropertiesEXT
+  { -- | #limits-maxTransformFeedbackStreams# @maxTransformFeedbackStreams@ is
+    -- the maximum number of vertex streams that can be output from geometry
+    -- shaders declared with the @GeometryStreams@ capability. If the
+    -- implementation does not support
+    -- 'PhysicalDeviceTransformFeedbackFeaturesEXT'::@geometryStreams@ then
+    -- @maxTransformFeedbackStreams@ /must/ be @1@.
+    maxTransformFeedbackStreams :: Word32
+  , -- | #limits-maxTransformFeedbackBuffers# @maxTransformFeedbackBuffers@ is
+    -- the maximum number of transform feedback buffers that can be bound for
+    -- capturing shader outputs from the last
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-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
+    -- transform feedback in 'cmdBindTransformFeedbackBuffersEXT'.
+    maxTransformFeedbackBufferSize :: DeviceSize
+  , -- | #limits-maxTransformFeedbackStreamDataSize#
+    -- @maxTransformFeedbackStreamDataSize@ is the maximum amount of data in
+    -- bytes for each vertex that captured to one or more transform feedback
+    -- buffers associated with a specific vertex stream.
+    maxTransformFeedbackStreamDataSize :: Word32
+  , -- | #limits-maxTransformFeedbackBufferDataSize#
+    -- @maxTransformFeedbackBufferDataSize@ is the maximum amount of data in
+    -- bytes for each vertex that can be captured to a specific transform
+    -- feedback buffer.
+    maxTransformFeedbackBufferDataSize :: Word32
+  , -- | #limits-maxTransformFeedbackBufferDataStride#
+    -- @maxTransformFeedbackBufferDataStride@ is the maximum stride between
+    -- each capture of vertex data to the buffer.
+    maxTransformFeedbackBufferDataStride :: Word32
+  , -- | #limits-transformFeedbackQueries# @transformFeedbackQueries@ is
+    -- 'Vulkan.Core10.FundamentalTypes.TRUE' if the implementation supports the
+    -- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT'
+    -- query type. @transformFeedbackQueries@ is
+    -- 'Vulkan.Core10.FundamentalTypes.FALSE' if queries of this type /cannot/
+    -- be created.
+    transformFeedbackQueries :: Bool
+  , -- | #limits-transformFeedbackStreamsLinesTriangles#
+    -- @transformFeedbackStreamsLinesTriangles@ is
+    -- 'Vulkan.Core10.FundamentalTypes.TRUE' if the implementation supports the
+    -- geometry shader @OpExecutionMode@ of @OutputLineStrip@ and
+    -- @OutputTriangleStrip@ in addition to @OutputPoints@ when more than one
+    -- vertex stream is output. If @transformFeedbackStreamsLinesTriangles@ is
+    -- 'Vulkan.Core10.FundamentalTypes.FALSE' the implementation only supports
+    -- an @OpExecutionMode@ of @OutputPoints@ when more than one vertex stream
+    -- is output from the geometry shader.
+    transformFeedbackStreamsLinesTriangles :: Bool
+  , -- | #limits-transformFeedbackRasterizationStreamSelect#
+    -- @transformFeedbackRasterizationStreamSelect@ is
+    -- 'Vulkan.Core10.FundamentalTypes.TRUE' if the implementation supports the
+    -- @GeometryStreams@ SPIR-V capability and the application can use
+    -- 'PipelineRasterizationStateStreamCreateInfoEXT' to modify which vertex
+    -- stream output is used for rasterization. Otherwise vertex stream @0@
+    -- /must/ always be used for rasterization.
+    transformFeedbackRasterizationStreamSelect :: Bool
+  , -- | #limits-transformFeedbackDraw# @transformFeedbackDraw@ is
+    -- 'Vulkan.Core10.FundamentalTypes.TRUE' if the implementation supports the
+    -- 'cmdDrawIndirectByteCountEXT' function otherwise the function /must/ not
+    -- be called.
+    transformFeedbackDraw :: Bool
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceTransformFeedbackPropertiesEXT)
+#endif
+deriving instance Show PhysicalDeviceTransformFeedbackPropertiesEXT
+
+instance ToCStruct PhysicalDeviceTransformFeedbackPropertiesEXT where
+  withCStruct x f = allocaBytes 64 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceTransformFeedbackPropertiesEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (maxTransformFeedbackStreams)
+    poke ((p `plusPtr` 20 :: Ptr Word32)) (maxTransformFeedbackBuffers)
+    poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (maxTransformFeedbackBufferSize)
+    poke ((p `plusPtr` 32 :: Ptr Word32)) (maxTransformFeedbackStreamDataSize)
+    poke ((p `plusPtr` 36 :: Ptr Word32)) (maxTransformFeedbackBufferDataSize)
+    poke ((p `plusPtr` 40 :: Ptr Word32)) (maxTransformFeedbackBufferDataStride)
+    poke ((p `plusPtr` 44 :: Ptr Bool32)) (boolToBool32 (transformFeedbackQueries))
+    poke ((p `plusPtr` 48 :: Ptr Bool32)) (boolToBool32 (transformFeedbackStreamsLinesTriangles))
+    poke ((p `plusPtr` 52 :: Ptr Bool32)) (boolToBool32 (transformFeedbackRasterizationStreamSelect))
+    poke ((p `plusPtr` 56 :: Ptr Bool32)) (boolToBool32 (transformFeedbackDraw))
+    f
+  cStructSize = 64
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_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 DeviceSize)) (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 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))
+    f
+
+instance FromCStruct PhysicalDeviceTransformFeedbackPropertiesEXT where
+  peekCStruct p = do
+    maxTransformFeedbackStreams <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    maxTransformFeedbackBuffers <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
+    maxTransformFeedbackBufferSize <- peek @DeviceSize ((p `plusPtr` 24 :: Ptr DeviceSize))
+    maxTransformFeedbackStreamDataSize <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))
+    maxTransformFeedbackBufferDataSize <- peek @Word32 ((p `plusPtr` 36 :: Ptr Word32))
+    maxTransformFeedbackBufferDataStride <- peek @Word32 ((p `plusPtr` 40 :: Ptr Word32))
+    transformFeedbackQueries <- peek @Bool32 ((p `plusPtr` 44 :: Ptr Bool32))
+    transformFeedbackStreamsLinesTriangles <- peek @Bool32 ((p `plusPtr` 48 :: Ptr Bool32))
+    transformFeedbackRasterizationStreamSelect <- peek @Bool32 ((p `plusPtr` 52 :: Ptr Bool32))
+    transformFeedbackDraw <- peek @Bool32 ((p `plusPtr` 56 :: Ptr Bool32))
+    pure $ PhysicalDeviceTransformFeedbackPropertiesEXT
+             maxTransformFeedbackStreams
+             maxTransformFeedbackBuffers
+             maxTransformFeedbackBufferSize
+             maxTransformFeedbackStreamDataSize
+             maxTransformFeedbackBufferDataSize
+             maxTransformFeedbackBufferDataStride
+             (bool32ToBool transformFeedbackQueries)
+             (bool32ToBool transformFeedbackStreamsLinesTriangles)
+             (bool32ToBool transformFeedbackRasterizationStreamSelect)
+             (bool32ToBool transformFeedbackDraw)
+
+instance Storable PhysicalDeviceTransformFeedbackPropertiesEXT where
+  sizeOf ~_ = 64
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceTransformFeedbackPropertiesEXT where
+  zero = PhysicalDeviceTransformFeedbackPropertiesEXT
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkPipelineRasterizationStateStreamCreateInfoEXT - Structure defining the
+-- geometry stream used for rasterization
+--
+-- = Description
+--
+-- If this structure is not present, @rasterizationStream@ is assumed to be
+-- zero.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.GraphicsPipeline.PipelineRasterizationStateCreateInfo'
 --
 -- = See Also
 --
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
@@ -81,7 +81,7 @@
 --
 -- This extension adds transform feedback to the Vulkan API by exposing the
 -- SPIR-V @TransformFeedback@ and @GeometryStreams@ capabilities to capture
--- vertex, tessellation or geometry shader outputs to one or more buffers.
+-- vertex, tessellation, or geometry shader outputs to one or more buffers.
 -- It adds API functionality to bind transform feedback buffers to capture
 -- the primitives emitted by the graphics pipeline from SPIR-V outputs
 -- decorated for transform feedback. The transform feedback capture can be
@@ -130,7 +130,7 @@
 --     -   'PhysicalDeviceTransformFeedbackPropertiesEXT'
 --
 -- -   Extending
---     'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo':
+--     'Vulkan.Core10.GraphicsPipeline.PipelineRasterizationStateCreateInfo':
 --
 --     -   'PipelineRasterizationStateStreamCreateInfoEXT'
 --
@@ -208,7 +208,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader stage>.
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-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.
@@ -226,7 +226,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_transform_feedback Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -50,7 +50,7 @@
 -- 'Vulkan.Extensions.Handles.ValidationCacheEXT' object type, which is
 -- managed similarly to the existing 'Vulkan.Core10.Handles.PipelineCache'.
 --
--- The new struct 'ShaderModuleValidationCacheCreateInfoEXT' can be
+-- The new structure 'ShaderModuleValidationCacheCreateInfoEXT' can be
 -- included in the @pNext@ chain at
 -- 'Vulkan.Core10.Shader.createShaderModule' time. It contains a
 -- 'Vulkan.Extensions.Handles.ValidationCacheEXT' to use when validating
@@ -75,7 +75,7 @@
 -- -   'ValidationCacheCreateInfoEXT'
 --
 -- -   Extending 'Vulkan.Core10.Shader.ShaderModuleCreateInfo',
---     'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo':
+--     'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo':
 --
 --     -   'ShaderModuleValidationCacheCreateInfoEXT'
 --
@@ -116,7 +116,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_validation_cache Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -270,6 +270,9 @@
 --     @pValidationCache@ /must/ be a valid pointer to a
 --     'Vulkan.Extensions.Handles.ValidationCacheEXT' handle
 --
+-- -   #VUID-vkCreateValidationCacheEXT-device-queuecount# The device
+--     /must/ have been created with at least @1@ queue
+--
 -- == Return Codes
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
@@ -280,6 +283,10 @@
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_validation_cache VK_EXT_validation_cache>,
@@ -294,7 +301,7 @@
                             -- containing the initial parameters for the validation cache object.
                             ValidationCacheCreateInfoEXT
                          -> -- | @pAllocator@ controls host memory allocation as described in the
-                            -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                            -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
                             -- chapter.
                             ("allocator" ::: Maybe AllocationCallbacks)
                          -> io (ValidationCacheEXT)
@@ -389,7 +396,7 @@
                           -> -- | @validationCache@ is the handle of the validation cache to destroy.
                              ValidationCacheEXT
                           -> -- | @pAllocator@ controls host memory allocation as described in the
-                             -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                             -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
                              -- chapter.
                              ("allocator" ::: Maybe AllocationCallbacks)
                           -> io ()
@@ -485,6 +492,16 @@
 -- nothing will be written to @pData@ and zero will be written to
 -- @pDataSize@.
 --
+-- This query does not behave consistently with the behavior described in
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#fundamentals-binaryresults Opaque Binary Data Results>,
+-- for historical reasons.
+--
+-- If the amount of data available is larger than the passed @pDataSize@,
+-- the query returns up to the size of the passed buffer, and signals
+-- overflow with a 'Vulkan.Core10.Enums.Result.INCOMPLETE' success status
+-- instead of returning a
+-- 'Vulkan.Core10.Enums.Result.ERROR_NOT_ENOUGH_SPACE_KHR' error status.
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-vkGetValidationCacheDataEXT-device-parameter# @device@ /must/
@@ -509,16 +526,20 @@
 --
 -- [<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'
 --
+--     -   '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_DEVICE_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_validation_cache VK_EXT_validation_cache>,
@@ -614,10 +635,14 @@
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_validation_cache VK_EXT_validation_cache>,
@@ -742,8 +767,14 @@
 -- | VkShaderModuleValidationCacheCreateInfoEXT - Specify validation cache to
 -- use during shader module creation
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo'
+--
+--     -   'Vulkan.Core10.Shader.ShaderModuleCreateInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_validation_cache VK_EXT_validation_cache>,
@@ -753,7 +784,9 @@
   { -- | @validationCache@ is the validation cache object from which the results
     -- of prior validation attempts will be written, and to which new
     -- validation results for this 'Vulkan.Core10.Handles.ShaderModule' will be
-    -- written (if not already present).
+    -- written (if not already present). The implementation /must/ not access
+    -- this object outside of the duration of the command this structure is
+    -- passed to.
     --
     -- #VUID-VkShaderModuleValidationCacheCreateInfoEXT-validationCache-parameter#
     -- @validationCache@ /must/ be a valid
@@ -839,6 +872,11 @@
 
 -- | VkValidationCacheHeaderVersionEXT - Encode validation cache version
 --
+-- = Description
+--
+-- -   'VALIDATION_CACHE_HEADER_VERSION_ONE_EXT' specifies version one of
+--     the validation cache.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_validation_cache VK_EXT_validation_cache>,
@@ -848,8 +886,7 @@
 
 -- Note that the zero instance does not produce a valid value, passing 'zero' to Vulkan will result in an error
 
--- | 'VALIDATION_CACHE_HEADER_VERSION_ONE_EXT' specifies version one of the
--- validation cache.
+-- No documentation found for Nested "VkValidationCacheHeaderVersionEXT" "VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT"
 pattern VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = ValidationCacheHeaderVersionEXT 1
 
 {-# COMPLETE VALIDATION_CACHE_HEADER_VERSION_ONE_EXT :: ValidationCacheHeaderVersionEXT #-}
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
@@ -50,7 +50,7 @@
 -- 'Vulkan.Extensions.Handles.ValidationCacheEXT' object type, which is
 -- managed similarly to the existing 'Vulkan.Core10.Handles.PipelineCache'.
 --
--- The new struct 'ShaderModuleValidationCacheCreateInfoEXT' can be
+-- The new structure 'ShaderModuleValidationCacheCreateInfoEXT' can be
 -- included in the @pNext@ chain at
 -- 'Vulkan.Core10.Shader.createShaderModule' time. It contains a
 -- 'Vulkan.Extensions.Handles.ValidationCacheEXT' to use when validating
@@ -75,7 +75,7 @@
 -- -   'ValidationCacheCreateInfoEXT'
 --
 -- -   Extending 'Vulkan.Core10.Shader.ShaderModuleCreateInfo',
---     'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo':
+--     'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo':
 --
 --     -   'ShaderModuleValidationCacheCreateInfoEXT'
 --
@@ -116,7 +116,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_validation_cache Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -18,7 +18,7 @@
 --     6
 --
 -- [__Ratification Status__]
---     Not ratified
+--     Ratified
 --
 -- [__Extension and Version Dependencies__]
 --     None
@@ -62,8 +62,8 @@
 --
 -- == Description
 --
--- This extension provides the 'ValidationFeaturesEXT' struct that can be
--- included in the @pNext@ chain of the
+-- This extension provides the 'ValidationFeaturesEXT' structure that can
+-- be included in the @pNext@ chain of the
 -- 'Vulkan.Core10.DeviceInitialization.InstanceCreateInfo' structure passed
 -- as the @pCreateInfo@ parameter of
 -- 'Vulkan.Core10.DeviceInitialization.createInstance'. The structure
@@ -135,7 +135,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_validation_features Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -226,6 +226,16 @@
 --     of @disabledValidationFeatureCount@ valid
 --     'ValidationFeatureDisableEXT' values
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.DeviceInitialization.InstanceCreateInfo'
+--
+--     -   'Vulkan.Extensions.VK_EXT_shader_object.ShaderCreateInfoEXT'
+--
+--     -   'Vulkan.Core10.Shader.ShaderModuleCreateInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_validation_features VK_EXT_validation_features>,
@@ -287,6 +297,40 @@
 
 -- | VkValidationFeatureEnableEXT - Specify validation features to enable
 --
+-- = Description
+--
+-- -   'VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT' specifies that
+--     GPU-assisted validation is enabled. Activating this feature
+--     instruments shader programs to generate additional diagnostic data.
+--     This feature is disabled by default.
+--
+-- -   'VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT'
+--     specifies that the validation layers reserve a descriptor set
+--     binding slot for their own use. The layer reports a value for
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxBoundDescriptorSets@
+--     that is one less than the value reported by the device. If the
+--     device supports the binding of only one descriptor set, the
+--     validation layer does not perform GPU-assisted validation. This
+--     feature is disabled by default.
+--
+-- -   'VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT' specifies that Vulkan
+--     best-practices validation is enabled. Activating this feature
+--     enables the output of warnings related to common misuse of the API,
+--     but which are not explicitly prohibited by the specification. This
+--     feature is disabled by default.
+--
+-- -   'VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT' specifies that the
+--     layers will process @debugPrintfEXT@ operations in shaders and send
+--     the resulting output to the debug callback. This feature is disabled
+--     by default.
+--
+-- -   'VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT' specifies
+--     that Vulkan synchronization validation is enabled. This feature
+--     reports resource access conflicts due to missing or incorrect
+--     synchronization operations between actions (Draw, Copy, Dispatch,
+--     Blit) reading or writing the same regions of memory. This feature is
+--     disabled by default.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_validation_features VK_EXT_validation_features>,
@@ -294,40 +338,19 @@
 newtype ValidationFeatureEnableEXT = ValidationFeatureEnableEXT Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT' specifies that GPU-assisted
--- validation is enabled. Activating this feature instruments shader
--- programs to generate additional diagnostic data. This feature is
--- disabled by default.
+-- No documentation found for Nested "VkValidationFeatureEnableEXT" "VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT"
 pattern VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT = ValidationFeatureEnableEXT 0
 
--- | 'VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT'
--- specifies that the validation layers reserve a descriptor set binding
--- slot for their own use. The layer reports a value for
--- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxBoundDescriptorSets@
--- that is one less than the value reported by the device. If the device
--- supports the binding of only one descriptor set, the validation layer
--- does not perform GPU-assisted validation. This feature is disabled by
--- default.
+-- No documentation found for Nested "VkValidationFeatureEnableEXT" "VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT"
 pattern VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT = ValidationFeatureEnableEXT 1
 
--- | 'VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT' specifies that Vulkan
--- best-practices validation is enabled. Activating this feature enables
--- the output of warnings related to common misuse of the API, but which
--- are not explicitly prohibited by the specification. This feature is
--- disabled by default.
+-- No documentation found for Nested "VkValidationFeatureEnableEXT" "VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT"
 pattern VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT = ValidationFeatureEnableEXT 2
 
--- | 'VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT' specifies that the layers
--- will process @debugPrintfEXT@ operations in shaders and send the
--- resulting output to the debug callback. This feature is disabled by
--- default.
+-- No documentation found for Nested "VkValidationFeatureEnableEXT" "VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT"
 pattern VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT = ValidationFeatureEnableEXT 3
 
--- | 'VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT' specifies
--- that Vulkan synchronization validation is enabled. This feature reports
--- resource access conflicts due to missing or incorrect synchronization
--- operations between actions (Draw, Copy, Dispatch, Blit) reading or
--- writing the same regions of memory. This feature is disabled by default.
+-- No documentation found for Nested "VkValidationFeatureEnableEXT" "VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT"
 pattern VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT = ValidationFeatureEnableEXT 4
 
 {-# COMPLETE
@@ -388,6 +411,43 @@
 
 -- | VkValidationFeatureDisableEXT - Specify validation features to disable
 --
+-- = Description
+--
+-- -   'VALIDATION_FEATURE_DISABLE_ALL_EXT' specifies that all validation
+--     checks are disabled.
+--
+-- -   'VALIDATION_FEATURE_DISABLE_SHADERS_EXT' specifies that shader
+--     validation, both runtime and standalone, is disabled. This
+--     validation occurs inside
+--     'Vulkan.Extensions.VK_EXT_shader_object.ShaderCreateInfoEXT' and
+--     'Vulkan.Core10.Shader.ShaderModuleCreateInfo'. This feature is
+--     enabled by default.
+--
+-- -   'VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT' specifies that thread
+--     safety validation is disabled. This feature is enabled by default.
+--
+-- -   'VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT' specifies that
+--     stateless parameter validation is disabled. This feature is enabled
+--     by default.
+--
+-- -   'VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT' specifies that
+--     object lifetime validation is disabled. This feature is enabled by
+--     default.
+--
+-- -   'VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT' specifies that core
+--     validation checks are disabled. This feature is enabled by default.
+--     If this feature is disabled,
+--     'VALIDATION_FEATURE_DISABLE_SHADERS_EXT' is implied.
+--
+-- -   'VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT' specifies that
+--     protection against duplicate non-dispatchable object handles is
+--     disabled. This feature is enabled by default.
+--
+-- -   'VALIDATION_FEATURE_DISABLE_SHADER_VALIDATION_CACHE_EXT' specifies
+--     that there will be no caching of shader validation results and every
+--     shader will be validated on every application execution. Shader
+--     validation caching is enabled by default.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_validation_features VK_EXT_validation_features>,
@@ -395,45 +455,28 @@
 newtype ValidationFeatureDisableEXT = ValidationFeatureDisableEXT Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'VALIDATION_FEATURE_DISABLE_ALL_EXT' specifies that all validation
--- checks are disabled.
+-- No documentation found for Nested "VkValidationFeatureDisableEXT" "VK_VALIDATION_FEATURE_DISABLE_ALL_EXT"
 pattern VALIDATION_FEATURE_DISABLE_ALL_EXT = ValidationFeatureDisableEXT 0
 
--- | 'VALIDATION_FEATURE_DISABLE_SHADERS_EXT' specifies that shader
--- validation, both runtime and standalone, is disabled. This validation
--- occurs inside
--- 'Vulkan.Extensions.VK_EXT_shader_object.ShaderCreateInfoEXT' and
--- 'Vulkan.Core10.Shader.ShaderModuleCreateInfo'. This feature is enabled
--- by default.
+-- No documentation found for Nested "VkValidationFeatureDisableEXT" "VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT"
 pattern VALIDATION_FEATURE_DISABLE_SHADERS_EXT = ValidationFeatureDisableEXT 1
 
--- | 'VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT' specifies that thread
--- safety validation is disabled. This feature is enabled by default.
+-- No documentation found for Nested "VkValidationFeatureDisableEXT" "VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT"
 pattern VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT = ValidationFeatureDisableEXT 2
 
--- | 'VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT' specifies that stateless
--- parameter validation is disabled. This feature is enabled by default.
+-- No documentation found for Nested "VkValidationFeatureDisableEXT" "VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT"
 pattern VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT = ValidationFeatureDisableEXT 3
 
--- | 'VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT' specifies that object
--- lifetime validation is disabled. This feature is enabled by default.
+-- No documentation found for Nested "VkValidationFeatureDisableEXT" "VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT"
 pattern VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT = ValidationFeatureDisableEXT 4
 
--- | 'VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT' specifies that core
--- validation checks are disabled. This feature is enabled by default. If
--- this feature is disabled, 'VALIDATION_FEATURE_DISABLE_SHADERS_EXT' is
--- implied.
+-- No documentation found for Nested "VkValidationFeatureDisableEXT" "VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT"
 pattern VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT = ValidationFeatureDisableEXT 5
 
--- | 'VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT' specifies that
--- protection against duplicate non-dispatchable object handles is
--- disabled. This feature is enabled by default.
+-- No documentation found for Nested "VkValidationFeatureDisableEXT" "VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT"
 pattern VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT = ValidationFeatureDisableEXT 6
 
--- | 'VALIDATION_FEATURE_DISABLE_SHADER_VALIDATION_CACHE_EXT' specifies that
--- there will be no caching of shader validation results and every shader
--- will be validated on every application execution. Shader validation
--- caching is enabled by default.
+-- No documentation found for Nested "VkValidationFeatureDisableEXT" "VK_VALIDATION_FEATURE_DISABLE_SHADER_VALIDATION_CACHE_EXT"
 pattern VALIDATION_FEATURE_DISABLE_SHADER_VALIDATION_CACHE_EXT = ValidationFeatureDisableEXT 7
 
 {-# COMPLETE
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
@@ -18,7 +18,7 @@
 --     6
 --
 -- [__Ratification Status__]
---     Not ratified
+--     Ratified
 --
 -- [__Extension and Version Dependencies__]
 --     None
@@ -62,8 +62,8 @@
 --
 -- == Description
 --
--- This extension provides the 'ValidationFeaturesEXT' struct that can be
--- included in the @pNext@ chain of the
+-- This extension provides the 'ValidationFeaturesEXT' structure that can
+-- be included in the @pNext@ chain of the
 -- 'Vulkan.Core10.DeviceInitialization.InstanceCreateInfo' structure passed
 -- as the @pCreateInfo@ parameter of
 -- 'Vulkan.Core10.DeviceInitialization.createInstance'. The structure
@@ -135,7 +135,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_validation_features Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -54,7 +54,7 @@
 --
 -- == Description
 --
--- This extension provides the 'ValidationFlagsEXT' struct that can be
+-- This extension provides the 'ValidationFlagsEXT' structure that can be
 -- included in the @pNext@ chain of the
 -- 'Vulkan.Core10.DeviceInitialization.InstanceCreateInfo' structure passed
 -- as the @pCreateInfo@ parameter of
@@ -108,7 +108,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_validation_flags Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -160,8 +160,12 @@
 -- | VkValidationFlagsEXT - Specify validation checks to disable for a Vulkan
 -- instance
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.DeviceInitialization.InstanceCreateInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_validation_flags VK_EXT_validation_flags>,
@@ -213,6 +217,14 @@
 
 -- | VkValidationCheckEXT - Specify validation checks to disable
 --
+-- = Description
+--
+-- -   'VALIDATION_CHECK_ALL_EXT' specifies that all validation checks are
+--     disabled.
+--
+-- -   'VALIDATION_CHECK_SHADERS_EXT' specifies that shader validation is
+--     disabled.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_validation_flags VK_EXT_validation_flags>,
@@ -220,12 +232,10 @@
 newtype ValidationCheckEXT = ValidationCheckEXT Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'VALIDATION_CHECK_ALL_EXT' specifies that all validation checks are
--- disabled.
+-- No documentation found for Nested "VkValidationCheckEXT" "VK_VALIDATION_CHECK_ALL_EXT"
 pattern VALIDATION_CHECK_ALL_EXT = ValidationCheckEXT 0
 
--- | 'VALIDATION_CHECK_SHADERS_EXT' specifies that shader validation is
--- disabled.
+-- No documentation found for Nested "VkValidationCheckEXT" "VK_VALIDATION_CHECK_SHADERS_EXT"
 pattern VALIDATION_CHECK_SHADERS_EXT = ValidationCheckEXT 1
 
 {-# COMPLETE
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
@@ -54,7 +54,7 @@
 --
 -- == Description
 --
--- This extension provides the 'ValidationFlagsEXT' struct that can be
+-- This extension provides the 'ValidationFlagsEXT' structure that can be
 -- included in the @pNext@ chain of the
 -- 'Vulkan.Core10.DeviceInitialization.InstanceCreateInfo' structure passed
 -- as the @pCreateInfo@ parameter of
@@ -108,7 +108,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_validation_flags Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -31,6 +31,9 @@
 --         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_vertex_attribute_divisor VK_KHR_vertex_attribute_divisor>
 --         extension
 --
+--         -   Which in turn was /promoted/ to
+--             <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.4-promotions Vulkan 1.4>
+--
 -- [__Contact__]
 --
 --     -   Vikram Kushwaha
@@ -72,7 +75,7 @@
 --     -   'PhysicalDeviceVertexAttributeDivisorPropertiesEXT'
 --
 -- -   Extending
---     'Vulkan.Core10.Pipeline.PipelineVertexInputStateCreateInfo':
+--     'Vulkan.Core10.GraphicsPipeline.PipelineVertexInputStateCreateInfo':
 --
 --     -   'PipelineVertexInputDivisorStateCreateInfoEXT'
 --
@@ -165,7 +168,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_vertex_attribute_divisor Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -179,9 +182,6 @@
                                                           , pattern EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION
                                                           , EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME
                                                           , pattern EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME
-                                                          , VertexInputBindingDivisorDescriptionKHR(..)
-                                                          , PipelineVertexInputDivisorStateCreateInfoKHR(..)
-                                                          , PhysicalDeviceVertexAttributeDivisorFeaturesKHR(..)
                                                           ) where
 
 import Foreign.Marshal.Alloc (allocaBytes)
@@ -202,22 +202,19 @@
 import Foreign.Ptr (Ptr)
 import Data.Word (Word32)
 import Data.Kind (Type)
-import Vulkan.Extensions.VK_KHR_vertex_attribute_divisor (PhysicalDeviceVertexAttributeDivisorFeaturesKHR)
-import Vulkan.Extensions.VK_KHR_vertex_attribute_divisor (PipelineVertexInputDivisorStateCreateInfoKHR)
+import Vulkan.Core14.Promoted_From_VK_KHR_vertex_attribute_divisor (PhysicalDeviceVertexAttributeDivisorFeatures)
+import Vulkan.Core14.Promoted_From_VK_KHR_vertex_attribute_divisor (PipelineVertexInputDivisorStateCreateInfo)
 import Vulkan.Core10.Enums.StructureType (StructureType)
-import Vulkan.Extensions.VK_KHR_vertex_attribute_divisor (VertexInputBindingDivisorDescriptionKHR)
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_KHR))
+import Vulkan.Core14.Promoted_From_VK_KHR_vertex_attribute_divisor (VertexInputBindingDivisorDescription)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_KHR))
-import Vulkan.Extensions.VK_KHR_vertex_attribute_divisor (PhysicalDeviceVertexAttributeDivisorFeaturesKHR(..))
-import Vulkan.Extensions.VK_KHR_vertex_attribute_divisor (PipelineVertexInputDivisorStateCreateInfoKHR(..))
-import Vulkan.Extensions.VK_KHR_vertex_attribute_divisor (VertexInputBindingDivisorDescriptionKHR(..))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO))
 -- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT"
-pattern STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT = STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_KHR
+pattern STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT = STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO
 
 
 -- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT = STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_KHR
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT = STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES
 
 
 -- | VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT - Structure
@@ -234,8 +231,12 @@
 -- it is filled in with each corresponding implementation-dependent
 -- property.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_vertex_attribute_divisor VK_EXT_vertex_attribute_divisor>,
@@ -284,15 +285,15 @@
 
 
 -- No documentation found for TopLevel "VkVertexInputBindingDivisorDescriptionEXT"
-type VertexInputBindingDivisorDescriptionEXT = VertexInputBindingDivisorDescriptionKHR
+type VertexInputBindingDivisorDescriptionEXT = VertexInputBindingDivisorDescription
 
 
 -- No documentation found for TopLevel "VkPipelineVertexInputDivisorStateCreateInfoEXT"
-type PipelineVertexInputDivisorStateCreateInfoEXT = PipelineVertexInputDivisorStateCreateInfoKHR
+type PipelineVertexInputDivisorStateCreateInfoEXT = PipelineVertexInputDivisorStateCreateInfo
 
 
 -- No documentation found for TopLevel "VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT"
-type PhysicalDeviceVertexAttributeDivisorFeaturesEXT = PhysicalDeviceVertexAttributeDivisorFeaturesKHR
+type PhysicalDeviceVertexAttributeDivisorFeaturesEXT = PhysicalDeviceVertexAttributeDivisorFeatures
 
 
 type EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION = 3
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
@@ -31,6 +31,9 @@
 --         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_vertex_attribute_divisor VK_KHR_vertex_attribute_divisor>
 --         extension
 --
+--         -   Which in turn was /promoted/ to
+--             <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.4-promotions Vulkan 1.4>
+--
 -- [__Contact__]
 --
 --     -   Vikram Kushwaha
@@ -72,7 +75,7 @@
 --     -   'PhysicalDeviceVertexAttributeDivisorPropertiesEXT'
 --
 -- -   Extending
---     'Vulkan.Core10.Pipeline.PipelineVertexInputStateCreateInfo':
+--     'Vulkan.Core10.GraphicsPipeline.PipelineVertexInputStateCreateInfo':
 --
 --     -   'PipelineVertexInputDivisorStateCreateInfoEXT'
 --
@@ -165,7 +168,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_vertex_attribute_divisor Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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_attribute_robustness.hs b/src/Vulkan/Extensions/VK_EXT_vertex_attribute_robustness.hs
--- a/src/Vulkan/Extensions/VK_EXT_vertex_attribute_robustness.hs
+++ b/src/Vulkan/Extensions/VK_EXT_vertex_attribute_robustness.hs
@@ -21,8 +21,16 @@
 --     Not ratified
 --
 -- [__Extension and Version Dependencies__]
---     None
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
 --
+-- [__Deprecation State__]
+--
+--     -   /Promoted/ to
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance9 VK_KHR_maintenance9>
+--         extension
+--
 -- [__Contact__]
 --
 --     -   Piers Daniell
@@ -51,6 +59,16 @@
 -- attribute locations, and if the vertex shader reads those attributes it
 -- will read (0,0,0,0) or (0,0,0,1).
 --
+-- == Promotion to @VK_KHR_maintenance9@
+--
+-- The same functionality is provided by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance9 VK_KHR_maintenance9>,
+-- but enabled by the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance9 maintenance9>
+-- feature instead. The
+-- 'PhysicalDeviceVertexAttributeRobustnessFeaturesEXT' structure was not
+-- included in the maintenance extension.
+--
 -- == New Structures
 --
 -- -   Extending
@@ -86,7 +104,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_vertex_attribute_robustness Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_vertex_attribute_robustness Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -135,12 +153,21 @@
 -- 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. 'PhysicalDeviceVertexAttributeRobustnessFeaturesEXT' /can/
--- also be used in the @pNext@ chain of
--- 'Vulkan.Core10.Device.DeviceCreateInfo' to selectively enable these
--- features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceVertexAttributeRobustnessFeaturesEXT', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Extensions/VK_EXT_vertex_attribute_robustness.hs-boot b/src/Vulkan/Extensions/VK_EXT_vertex_attribute_robustness.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_vertex_attribute_robustness.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_vertex_attribute_robustness.hs-boot
@@ -21,8 +21,16 @@
 --     Not ratified
 --
 -- [__Extension and Version Dependencies__]
---     None
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
 --
+-- [__Deprecation State__]
+--
+--     -   /Promoted/ to
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance9 VK_KHR_maintenance9>
+--         extension
+--
 -- [__Contact__]
 --
 --     -   Piers Daniell
@@ -51,6 +59,16 @@
 -- attribute locations, and if the vertex shader reads those attributes it
 -- will read (0,0,0,0) or (0,0,0,1).
 --
+-- == Promotion to @VK_KHR_maintenance9@
+--
+-- The same functionality is provided by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance9 VK_KHR_maintenance9>,
+-- but enabled by the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance9 maintenance9>
+-- feature instead. The
+-- 'PhysicalDeviceVertexAttributeRobustnessFeaturesEXT' structure was not
+-- included in the maintenance extension.
+--
 -- == New Structures
 --
 -- -   Extending
@@ -86,7 +104,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_vertex_attribute_robustness Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_vertex_attribute_robustness Vulkan Specification>.
 --
 -- This 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
@@ -55,7 +55,8 @@
 -- create.
 --
 -- This extension adds dynamic state support for what is normally static
--- state in 'Vulkan.Core10.Pipeline.PipelineVertexInputStateCreateInfo'.
+-- state in
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineVertexInputStateCreateInfo'.
 --
 -- == New Commands
 --
@@ -97,7 +98,7 @@
 --
 --     -   Make 'VertexInputBindingDescription2EXT' extensible
 --
---     -   Add new 'VertexInputAttributeDescription2EXT' struct for the
+--     -   Add new 'VertexInputAttributeDescription2EXT' structure for the
 --         @pVertexAttributeDescriptions@ parameter to
 --         'cmdSetVertexInputEXT' so it is also extensible
 --
@@ -112,7 +113,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_vertex_input_dynamic_state Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -188,16 +189,16 @@
 --
 -- This command sets the vertex input attribute and vertex input binding
 -- descriptions state for subsequent drawing commands when drawing using
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-objects shader objects>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader objects>,
 -- or when the graphics pipeline is created with
 -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT' set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
 -- Otherwise, this state is specified by the
--- 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@pVertexInputState@
+-- 'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'::@pVertexInputState@
 -- values used to create the currently active pipeline.
 --
 -- If drawing using
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-objects shader objects>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader objects>,
 -- or if the bound pipeline state object was also created with the
 -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE'
 -- dynamic state enabled, then
@@ -213,9 +214,9 @@
 -- == Valid Usage
 --
 -- -   #VUID-vkCmdSetVertexInputEXT-None-08546# Either the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-vertexInputDynamicState vertexInputDynamicState>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-vertexInputDynamicState vertexInputDynamicState>
 --     feature or the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-shaderObject shaderObject>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-shaderObject shaderObject>
 --     feature or both /must/ be enabled
 --
 -- -   #VUID-vkCmdSetVertexInputEXT-vertexBindingDescriptionCount-04791#
@@ -263,7 +264,8 @@
 --
 -- -   #VUID-vkCmdSetVertexInputEXT-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdSetVertexInputEXT-videocoding# This command /must/ only
 --     be called outside of a video coding scope
@@ -282,10 +284,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
 -- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdSetVertexInputEXT is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_shader_object VK_EXT_shader_object>,
@@ -340,12 +347,22 @@
 -- structure passed to
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
 -- it is filled in to indicate whether each corresponding feature is
--- supported. 'PhysicalDeviceVertexInputDynamicStateFeaturesEXT' /can/ also
--- be used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo'
--- to selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceVertexInputDynamicStateFeaturesEXT', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_vertex_input_dynamic_state VK_EXT_vertex_input_dynamic_state>,
@@ -409,11 +426,11 @@
 --     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxVertexInputBindingStride@
 --
 -- -   #VUID-VkVertexInputBindingDescription2EXT-divisor-04798# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-vertexAttributeInstanceRateZeroDivisor vertexAttributeInstanceRateZeroDivisor>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-vertexAttributeInstanceRateZeroDivisor vertexAttributeInstanceRateZeroDivisor>
 --     feature is not enabled, @divisor@ /must/ not be @0@
 --
 -- -   #VUID-VkVertexInputBindingDescription2EXT-divisor-04799# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-vertexAttributeInstanceRateDivisor vertexAttributeInstanceRateDivisor>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-vertexAttributeInstanceRateDivisor vertexAttributeInstanceRateDivisor>
 --     feature is not enabled, @divisor@ /must/ be @1@
 --
 -- -   #VUID-VkVertexInputBindingDescription2EXT-divisor-06226# @divisor@
@@ -455,14 +472,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 a value other than @1@ if the
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-vertexAttributeInstanceRateDivisor vertexAttributeInstanceRateDivisor>
+    -- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-vertexAttributeInstanceRateZeroDivisor vertexAttributeInstanceRateZeroDivisor>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-vertexAttributeInstanceRateZeroDivisor vertexAttributeInstanceRateZeroDivisor>
     -- feature is enabled. In this case, the same vertex attribute will be
     -- applied to all instances.
     divisor :: Word32
@@ -535,7 +552,7 @@
 --     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxVertexInputAttributeOffset@
 --
 -- -   #VUID-VkVertexInputAttributeDescription2EXT-format-04805# The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-buffer-view-format-features format features>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-buffer-view-format-features format features>
 --     of @format@ /must/ contain
 --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_VERTEX_BUFFER_BIT'
 --
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
@@ -55,7 +55,8 @@
 -- create.
 --
 -- This extension adds dynamic state support for what is normally static
--- state in 'Vulkan.Core10.Pipeline.PipelineVertexInputStateCreateInfo'.
+-- state in
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineVertexInputStateCreateInfo'.
 --
 -- == New Commands
 --
@@ -97,7 +98,7 @@
 --
 --     -   Make 'VertexInputBindingDescription2EXT' extensible
 --
---     -   Add new 'VertexInputAttributeDescription2EXT' struct for the
+--     -   Add new 'VertexInputAttributeDescription2EXT' structure for the
 --         @pVertexAttributeDescriptions@ parameter to
 --         'cmdSetVertexInputEXT' so it is also extensible
 --
@@ -112,7 +113,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_vertex_input_dynamic_state Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -85,13 +85,12 @@
 --
 -- == 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.
+-- 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
 --
@@ -106,7 +105,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_ycbcr_2plane_444_formats Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -179,12 +178,22 @@
 -- structure passed to
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
 -- it is filled in to indicate whether each corresponding feature is
--- supported. 'PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT' /can/ also
--- be used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo'
--- to selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- 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
@@ -197,7 +206,8 @@
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT = PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT
   { -- | #features-ycbcr2plane444Formats# @ycbcr2plane444Formats@ indicates that
-    -- the implementation supports the following 2-plane 444 Y′CBCR formats:
+    -- the implementation supports querying format features for, and using, the
+    -- following 2-plane 444 Y′CBCR formats:
     --
     -- -   'Vulkan.Core10.Enums.Format.FORMAT_G8_B8R8_2PLANE_444_UNORM'
     --
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
@@ -85,13 +85,12 @@
 --
 -- == 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.
+-- 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
 --
@@ -106,7 +105,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_ycbcr_2plane_444_formats Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -42,7 +42,7 @@
 -- == Description
 --
 -- This extension allows images of a format that requires
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion Y′CBCR conversion>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion Y′CBCR conversion>
 -- to be created with multiple array layers, which is otherwise restricted.
 --
 -- == New Structures
@@ -76,7 +76,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_ycbcr_image_arrays Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -125,12 +125,22 @@
 -- structure passed to
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
 -- it is filled in to indicate whether each corresponding feature is
--- supported. 'PhysicalDeviceYcbcrImageArraysFeaturesEXT' /can/ also be
--- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceYcbcrImageArraysFeaturesEXT', it /must/ add an instance
+-- of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_ycbcr_image_arrays VK_EXT_ycbcr_image_arrays>,
@@ -139,7 +149,7 @@
 data PhysicalDeviceYcbcrImageArraysFeaturesEXT = PhysicalDeviceYcbcrImageArraysFeaturesEXT
   { -- | #features-ycbcrImageArrays# @ycbcrImageArrays@ indicates that the
     -- implementation supports creating images with a format that requires
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion Y′CBCR conversion>
+    -- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -42,7 +42,7 @@
 -- == Description
 --
 -- This extension allows images of a format that requires
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion Y′CBCR conversion>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion Y′CBCR conversion>
 -- to be created with multiple array layers, which is otherwise restricted.
 --
 -- == New Structures
@@ -76,7 +76,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_ycbcr_image_arrays Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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_EXT_zero_initialize_device_memory.hs b/src/Vulkan/Extensions/VK_EXT_zero_initialize_device_memory.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_EXT_zero_initialize_device_memory.hs
@@ -0,0 +1,254 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_EXT_zero_initialize_device_memory - device extension
+--
+-- = VK_EXT_zero_initialize_device_memory
+--
+-- [__Name String__]
+--     @VK_EXT_zero_initialize_device_memory@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     621
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
+--
+-- [__Contact__]
+--
+--     -   Mike Blumenkrantz
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_zero_initialize_device_memory] @zmike%0A*Here describe the issue or question you have about the VK_EXT_zero_initialize_device_memory extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_EXT_zero_initialize_device_memory.adoc VK_EXT_zero_initialize_device_memory>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2025-04-09
+--
+-- [__Interactions and External Dependencies__]
+--
+--     -   Interacts with Vulkan 1.1.
+--
+--     -   Interacts with @VK_KHR_get_physical_device_properties2@.
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Contributors__]
+--
+--     -   Hans-Kristian Arntzen, VALVE
+--
+--     -   Mike Blumenkrantz, VALVE
+--
+--     -   Tobias Hector, AMD
+--
+--     -   Faith Ekstrand, Collabora
+--
+--     -   Ricardo Garcia, Igalia
+--
+--     -   Jan-Harald Fredriksen, ARM
+--
+--     -   Spencer Fricke, LunarG
+--
+-- == Description
+--
+-- By default, Vulkan provides no guarantees that device memory allocated
+-- through vkAllocateMemory is cleared to zero. This means that
+-- applications wanting resources to be zero-initialized must execute a
+-- command such as vkCmdFillBuffer or vkCmdClearColorImage on the device to
+-- ensure a deterministic result. This can be wasteful if the underlying
+-- platform either:
+--
+-- -   Already performs that zero clear anyway, due to e.g. security
+--     concerns.
+--
+-- -   Can be performed more efficiently in implementation, by e.g.
+--     clearing pages to zero in the background after device memory is
+--     freed.
+--
+-- This extension also has uses in API layering and porting efforts, where
+-- zero memory behavior may be more strict than Vulkan. Different OS
+-- platforms also have wildly different behaviors here, which leads to
+-- implementations needing to apply workarounds to paper over these issues
+-- in the wild. If an extension exists to make allocation behavior
+-- explicit, we hopefully achieve a more robust ecosystem for Vulkan.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT'
+--
+-- == New Enum Constants
+--
+-- -   'EXT_ZERO_INITIALIZE_DEVICE_MEMORY_EXTENSION_NAME'
+--
+-- -   'EXT_ZERO_INITIALIZE_DEVICE_MEMORY_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.ImageLayout.ImageLayout':
+--
+--     -   'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ZERO_INITIALIZED_EXT'
+--
+-- -   Extending
+--     'Vulkan.Core11.Enums.MemoryAllocateFlagBits.MemoryAllocateFlagBits':
+--
+--     -   'Vulkan.Core11.Enums.MemoryAllocateFlagBits.MEMORY_ALLOCATE_ZERO_INITIALIZE_BIT_EXT'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_DEVICE_MEMORY_FEATURES_EXT'
+--
+-- == Version History
+--
+-- -   Revision 1, 2025-03-10 (Mike Blumenkrantz)
+--
+--     -   Initial version
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_zero_initialize_device_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_EXT_zero_initialize_device_memory  ( PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT(..)
+                                                               , EXT_ZERO_INITIALIZE_DEVICE_MEMORY_SPEC_VERSION
+                                                               , pattern EXT_ZERO_INITIALIZE_DEVICE_MEMORY_SPEC_VERSION
+                                                               , EXT_ZERO_INITIALIZE_DEVICE_MEMORY_EXTENSION_NAME
+                                                               , pattern EXT_ZERO_INITIALIZE_DEVICE_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_DEVICE_MEMORY_FEATURES_EXT))
+-- | VkPhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT - Structure
+-- describing whether the implementation supports cleared allocation
+-- functionality
+--
+-- = Members
+--
+-- This structure describes the following features:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_zero_initialize_device_memory VK_EXT_zero_initialize_device_memory>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT = PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT
+  { -- | #features-zeroInitializeDeviceMemory# @zeroInitializeDeviceMemory@
+    -- indicates that the implementation supports zeroing memory allocations
+    -- using a user-specified flag.
+    zeroInitializeDeviceMemory :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT)
+#endif
+deriving instance Show PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT
+
+instance ToCStruct PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_DEVICE_MEMORY_FEATURES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zeroInitializeDeviceMemory))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_DEVICE_MEMORY_FEATURES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT where
+  peekCStruct p = do
+    zeroInitializeDeviceMemory <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT
+             (bool32ToBool zeroInitializeDeviceMemory)
+
+instance Storable PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT where
+  zero = PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT
+           zero
+
+
+type EXT_ZERO_INITIALIZE_DEVICE_MEMORY_SPEC_VERSION = 1
+
+-- No documentation found for TopLevel "VK_EXT_ZERO_INITIALIZE_DEVICE_MEMORY_SPEC_VERSION"
+pattern EXT_ZERO_INITIALIZE_DEVICE_MEMORY_SPEC_VERSION :: forall a . Integral a => a
+pattern EXT_ZERO_INITIALIZE_DEVICE_MEMORY_SPEC_VERSION = 1
+
+
+type EXT_ZERO_INITIALIZE_DEVICE_MEMORY_EXTENSION_NAME = "VK_EXT_zero_initialize_device_memory"
+
+-- No documentation found for TopLevel "VK_EXT_ZERO_INITIALIZE_DEVICE_MEMORY_EXTENSION_NAME"
+pattern EXT_ZERO_INITIALIZE_DEVICE_MEMORY_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern EXT_ZERO_INITIALIZE_DEVICE_MEMORY_EXTENSION_NAME = "VK_EXT_zero_initialize_device_memory"
+
diff --git a/src/Vulkan/Extensions/VK_EXT_zero_initialize_device_memory.hs-boot b/src/Vulkan/Extensions/VK_EXT_zero_initialize_device_memory.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_EXT_zero_initialize_device_memory.hs-boot
@@ -0,0 +1,145 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_EXT_zero_initialize_device_memory - device extension
+--
+-- = VK_EXT_zero_initialize_device_memory
+--
+-- [__Name String__]
+--     @VK_EXT_zero_initialize_device_memory@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     621
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
+--
+-- [__Contact__]
+--
+--     -   Mike Blumenkrantz
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_zero_initialize_device_memory] @zmike%0A*Here describe the issue or question you have about the VK_EXT_zero_initialize_device_memory extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_EXT_zero_initialize_device_memory.adoc VK_EXT_zero_initialize_device_memory>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2025-04-09
+--
+-- [__Interactions and External Dependencies__]
+--
+--     -   Interacts with Vulkan 1.1.
+--
+--     -   Interacts with @VK_KHR_get_physical_device_properties2@.
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Contributors__]
+--
+--     -   Hans-Kristian Arntzen, VALVE
+--
+--     -   Mike Blumenkrantz, VALVE
+--
+--     -   Tobias Hector, AMD
+--
+--     -   Faith Ekstrand, Collabora
+--
+--     -   Ricardo Garcia, Igalia
+--
+--     -   Jan-Harald Fredriksen, ARM
+--
+--     -   Spencer Fricke, LunarG
+--
+-- == Description
+--
+-- By default, Vulkan provides no guarantees that device memory allocated
+-- through vkAllocateMemory is cleared to zero. This means that
+-- applications wanting resources to be zero-initialized must execute a
+-- command such as vkCmdFillBuffer or vkCmdClearColorImage on the device to
+-- ensure a deterministic result. This can be wasteful if the underlying
+-- platform either:
+--
+-- -   Already performs that zero clear anyway, due to e.g. security
+--     concerns.
+--
+-- -   Can be performed more efficiently in implementation, by e.g.
+--     clearing pages to zero in the background after device memory is
+--     freed.
+--
+-- This extension also has uses in API layering and porting efforts, where
+-- zero memory behavior may be more strict than Vulkan. Different OS
+-- platforms also have wildly different behaviors here, which leads to
+-- implementations needing to apply workarounds to paper over these issues
+-- in the wild. If an extension exists to make allocation behavior
+-- explicit, we hopefully achieve a more robust ecosystem for Vulkan.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT'
+--
+-- == New Enum Constants
+--
+-- -   'EXT_ZERO_INITIALIZE_DEVICE_MEMORY_EXTENSION_NAME'
+--
+-- -   'EXT_ZERO_INITIALIZE_DEVICE_MEMORY_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.ImageLayout.ImageLayout':
+--
+--     -   'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ZERO_INITIALIZED_EXT'
+--
+-- -   Extending
+--     'Vulkan.Core11.Enums.MemoryAllocateFlagBits.MemoryAllocateFlagBits':
+--
+--     -   'Vulkan.Core11.Enums.MemoryAllocateFlagBits.MEMORY_ALLOCATE_ZERO_INITIALIZE_BIT_EXT'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_DEVICE_MEMORY_FEATURES_EXT'
+--
+-- == Version History
+--
+-- -   Revision 1, 2025-03-10 (Mike Blumenkrantz)
+--
+--     -   Initial version
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_zero_initialize_device_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_EXT_zero_initialize_device_memory  (PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT
+
+instance ToCStruct PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT
+instance Show PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT
+
+instance FromCStruct PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT
+
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
@@ -202,7 +202,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_FUCHSIA_buffer_collection Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -361,6 +361,9 @@
 --     @pCollection@ /must/ be a valid pointer to a
 --     'Vulkan.Extensions.Handles.BufferCollectionFUCHSIA' handle
 --
+-- -   #VUID-vkCreateBufferCollectionFUCHSIA-device-queuecount# The device
+--     /must/ have been created with at least @1@ queue
+--
 -- == Return Codes
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
@@ -369,12 +372,16 @@
 --
 -- [<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_INITIALIZATION_FAILED'
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_INVALID_EXTERNAL_HANDLE'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_INITIALIZATION_FAILED'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- == Host Access
 --
 -- All functions referencing a
@@ -400,7 +407,7 @@
                               -> -- | @pAllocator@ is a pointer to a
                                  -- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' structure
                                  -- controlling host memory allocation as described in the
-                                 -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                                 -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
                                  -- chapter
                                  ("allocator" ::: Maybe AllocationCallbacks)
                               -> io (BufferCollectionFUCHSIA)
@@ -465,12 +472,16 @@
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_FORMAT_NOT_SUPPORTED'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_INITIALIZATION_FAILED'
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_FORMAT_NOT_SUPPORTED'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_FUCHSIA_buffer_collection VK_FUCHSIA_buffer_collection>,
@@ -549,12 +560,16 @@
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_FORMAT_NOT_SUPPORTED'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_INITIALIZATION_FAILED'
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_FORMAT_NOT_SUPPORTED'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_FUCHSIA_buffer_collection VK_FUCHSIA_buffer_collection>,
@@ -656,7 +671,7 @@
                                -> -- | @pAllocator@ is a pointer to a
                                   -- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' structure
                                   -- controlling host memory allocation as described in the
-                                  -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                                  -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
                                   -- chapter
                                   ("allocator" ::: Maybe AllocationCallbacks)
                                -> io ()
@@ -740,10 +755,14 @@
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_INITIALIZATION_FAILED'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_INITIALIZATION_FAILED'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_FUCHSIA_buffer_collection VK_FUCHSIA_buffer_collection>,
@@ -775,8 +794,12 @@
 -- | VkImportMemoryBufferCollectionFUCHSIA - Structure to specify the Sysmem
 -- buffer to import
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.Memory.MemoryAllocateInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_FUCHSIA_buffer_collection VK_FUCHSIA_buffer_collection>,
@@ -790,11 +813,11 @@
     -- @collection@ /must/ be a valid
     -- 'Vulkan.Extensions.Handles.BufferCollectionFUCHSIA' handle
     collection :: BufferCollectionFUCHSIA
-  , -- | @index@ the index of the buffer to import from @collection@
+  , -- | @index@ is the index of the buffer to import from @collection@
     --
     -- #VUID-VkImportMemoryBufferCollectionFUCHSIA-index-06406# @index@ /must/
     -- be less than the value retrieved as
-    -- 'BufferCollectionPropertiesFUCHSIA':bufferCount
+    -- 'BufferCollectionPropertiesFUCHSIA'::@bufferCount@
     index :: Word32
   }
   deriving (Typeable, Eq)
@@ -842,8 +865,12 @@
 -- | VkBufferCollectionImageCreateInfoFUCHSIA - Create a
 -- VkBufferCollectionFUCHSIA-compatible VkImage
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.Image.ImageCreateInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_FUCHSIA_buffer_collection VK_FUCHSIA_buffer_collection>,
@@ -909,8 +936,12 @@
 -- | VkBufferCollectionBufferCreateInfoFUCHSIA - Create a
 -- VkBufferCollectionFUCHSIA-compatible VkBuffer
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.Buffer.BufferCreateInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_FUCHSIA_buffer_collection VK_FUCHSIA_buffer_collection>,
@@ -1073,7 +1104,7 @@
   , -- | @bufferCount@ is the number of buffers in the collection
     bufferCount :: Word32
   , -- | @createInfoIndex@ as described in
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#sysmem-chosen-create-infos Sysmem chosen create infos>
+    -- <https://registry.khronos.org/vulkan/specs/latest/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@
@@ -1086,7 +1117,7 @@
     -- the color space
     sysmemColorSpaceIndex :: SysmemColorSpaceFUCHSIA
   , -- | @samplerYcbcrConversionComponents@ is a
-    -- 'Vulkan.Core10.ImageView.ComponentMapping' struct specifying the
+    -- 'Vulkan.Core10.ImageView.ComponentMapping' structure specifying the
     -- component mapping
     samplerYcbcrConversionComponents :: ComponentMapping
   , -- | @suggestedYcbcrModel@ is a
@@ -1204,7 +1235,7 @@
 --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FormatFeatureFlagBits'
 --     /must/ be chosen from among the buffer compatible format features
 --     listed in
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#buffer-compatible-format-features buffer compatible format features>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#buffer-compatible-format-features buffer compatible format features>
 --
 -- == Valid Usage (Implicit)
 --
@@ -1236,9 +1267,10 @@
 -- 'Vulkan.Core10.Enums.StructureType.StructureType',
 -- 'setBufferCollectionBufferConstraintsFUCHSIA'
 data BufferConstraintsInfoFUCHSIA = BufferConstraintsInfoFUCHSIA
-  { -- No documentation found for Nested "VkBufferConstraintsInfoFUCHSIA" "createInfo"
+  { -- | @createInfo@ is a pointer to a 'Vulkan.Core10.Buffer.BufferCreateInfo'
+    -- struct describing the buffer attributes for the buffer collection
     createInfo :: SomeStruct BufferCreateInfo
-  , -- | @requiredFormatFeatures@ bitmask of
+  , -- | @requiredFormatFeatures@ is a bitmask of
     -- 'Vulkan.Core10.Enums.FormatFeatureFlagBits.FormatFeatureFlagBits'
     -- required features of the buffers in the buffer collection
     requiredFormatFeatures :: FormatFeatureFlags
@@ -1487,7 +1519,7 @@
 --
 -- -   #VUID-VkImageConstraintsInfoFUCHSIA-attachmentFragmentShadingRate-06401#
 --     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate>
+--     <https://registry.khronos.org/vulkan/specs/latest/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',
@@ -1739,8 +1771,19 @@
 -- Sysmem based on the expected usage of the images in the buffer
 -- collection include:
 --
+-- -   'IMAGE_CONSTRAINTS_INFO_CPU_READ_RARELY_FUCHSIA'
+--
+-- -   'IMAGE_CONSTRAINTS_INFO_CPU_READ_OFTEN_FUCHSIA'
+--
+-- -   'IMAGE_CONSTRAINTS_INFO_CPU_WRITE_RARELY_FUCHSIA'
+--
+-- -   'IMAGE_CONSTRAINTS_INFO_CPU_WRITE_OFTEN_FUCHSIA'
+--
 -- For protected memory:
 --
+-- -   'IMAGE_CONSTRAINTS_INFO_PROTECTED_OPTIONAL_FUCHSIA' specifies that
+--     protected memory is optional for the buffer collection.
+--
 -- Note that if all participants in the buffer collection (Vulkan or
 -- otherwise) specify that protected memory is optional, Sysmem will not
 -- allocate protected memory.
@@ -1752,20 +1795,19 @@
 newtype ImageConstraintsInfoFlagBitsFUCHSIA = ImageConstraintsInfoFlagBitsFUCHSIA Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'IMAGE_CONSTRAINTS_INFO_CPU_READ_RARELY_FUCHSIA'
+-- No documentation found for Nested "VkImageConstraintsInfoFlagBitsFUCHSIA" "VK_IMAGE_CONSTRAINTS_INFO_CPU_READ_RARELY_FUCHSIA"
 pattern IMAGE_CONSTRAINTS_INFO_CPU_READ_RARELY_FUCHSIA = ImageConstraintsInfoFlagBitsFUCHSIA 0x00000001
 
--- | 'IMAGE_CONSTRAINTS_INFO_CPU_READ_OFTEN_FUCHSIA'
+-- No documentation found for Nested "VkImageConstraintsInfoFlagBitsFUCHSIA" "VK_IMAGE_CONSTRAINTS_INFO_CPU_READ_OFTEN_FUCHSIA"
 pattern IMAGE_CONSTRAINTS_INFO_CPU_READ_OFTEN_FUCHSIA = ImageConstraintsInfoFlagBitsFUCHSIA 0x00000002
 
--- | 'IMAGE_CONSTRAINTS_INFO_CPU_WRITE_RARELY_FUCHSIA'
+-- No documentation found for Nested "VkImageConstraintsInfoFlagBitsFUCHSIA" "VK_IMAGE_CONSTRAINTS_INFO_CPU_WRITE_RARELY_FUCHSIA"
 pattern IMAGE_CONSTRAINTS_INFO_CPU_WRITE_RARELY_FUCHSIA = ImageConstraintsInfoFlagBitsFUCHSIA 0x00000004
 
--- | 'IMAGE_CONSTRAINTS_INFO_CPU_WRITE_OFTEN_FUCHSIA'
+-- No documentation found for Nested "VkImageConstraintsInfoFlagBitsFUCHSIA" "VK_IMAGE_CONSTRAINTS_INFO_CPU_WRITE_OFTEN_FUCHSIA"
 pattern IMAGE_CONSTRAINTS_INFO_CPU_WRITE_OFTEN_FUCHSIA = ImageConstraintsInfoFlagBitsFUCHSIA 0x00000008
 
--- | 'IMAGE_CONSTRAINTS_INFO_PROTECTED_OPTIONAL_FUCHSIA' specifies that
--- protected memory is optional for the buffer collection.
+-- No documentation found for Nested "VkImageConstraintsInfoFlagBitsFUCHSIA" "VK_IMAGE_CONSTRAINTS_INFO_PROTECTED_OPTIONAL_FUCHSIA"
 pattern IMAGE_CONSTRAINTS_INFO_PROTECTED_OPTIONAL_FUCHSIA = ImageConstraintsInfoFlagBitsFUCHSIA 0x00000010
 
 conNameImageConstraintsInfoFlagBitsFUCHSIA :: String
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
@@ -202,7 +202,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_FUCHSIA_buffer_collection Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -53,7 +53,7 @@
 -- == Description
 --
 -- Vulkan apps may wish to export or import device memory handles to or
--- from other logical devices, instances or APIs.
+-- from other logical devices, instances, or APIs.
 --
 -- This memory sharing can eliminate copies of memory buffers when
 -- different subsystems need to interoperate on them. Sharing memory
@@ -112,7 +112,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_FUCHSIA_external_memory Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -200,10 +200,14 @@
 --
 -- [<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_TOO_MANY_OBJECTS'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_FUCHSIA_external_memory VK_FUCHSIA_external_memory>,
@@ -260,6 +264,10 @@
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_INVALID_EXTERNAL_HANDLE'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_FUCHSIA_external_memory VK_FUCHSIA_external_memory>,
@@ -333,6 +341,12 @@
 --     @handleType@ is not @0@, @handleType@ /must/ be a valid
 --     'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits'
 --     value
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.Memory.MemoryAllocateInfo'
 --
 -- = See Also
 --
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
@@ -53,7 +53,7 @@
 -- == Description
 --
 -- Vulkan apps may wish to export or import device memory handles to or
--- from other logical devices, instances or APIs.
+-- from other logical devices, instances, or APIs.
 --
 -- This memory sharing can eliminate copies of memory buffers when
 -- different subsystems need to interoperate on them. Sharing memory
@@ -112,7 +112,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_FUCHSIA_external_memory Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -107,7 +107,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_FUCHSIA_external_semaphore Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -199,7 +199,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-semaphores-importing Importing Semaphore State>.
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-semaphores-importing Importing Semaphore State>.
 --
 -- == Return Codes
 --
@@ -209,10 +209,14 @@
 --
 -- [<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_TOO_MANY_OBJECTS'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_FUCHSIA_external_semaphore VK_FUCHSIA_external_semaphore>,
@@ -280,10 +284,14 @@
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_INVALID_EXTERNAL_HANDLE'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_INVALID_EXTERNAL_HANDLE'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_FUCHSIA_external_semaphore VK_FUCHSIA_external_semaphore>,
@@ -337,13 +345,13 @@
 --
 -- -   #VUID-VkImportSemaphoreZirconHandleInfoFUCHSIA-handleType-04765#
 --     @handleType@ /must/ be a value included in the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-semaphore-handletypes-fuchsia Handle Types Supported by >
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#external-semaphore-handle-types-compatibility external semaphore handle types compatibility>
+--     <https://registry.khronos.org/vulkan/specs/latest/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@
@@ -475,7 +483,7 @@
 -- -   #VUID-VkSemaphoreGetZirconHandleInfoFUCHSIA-semaphore-04759#
 --     @semaphore@ /must/ not currently have its payload replaced by an
 --     imported payload as described below in
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-semaphores-importing Importing Semaphore Payloads>
+--     <https://registry.khronos.org/vulkan/specs/latest/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@
@@ -483,13 +491,13 @@
 -- -   #VUID-VkSemaphoreGetZirconHandleInfoFUCHSIA-handleType-04760# If
 --     @handleType@ refers to a handle type with copy payload transference
 --     semantics, as defined below in
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-semaphores-importing Importing Semaphore Payloads>,
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operation>
+--     <https://registry.khronos.org/vulkan/specs/latest/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
@@ -107,7 +107,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_FUCHSIA_external_semaphore Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -86,7 +86,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_FUCHSIA_imagepipe_surface Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -197,10 +197,14 @@
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_FUCHSIA_imagepipe_surface VK_FUCHSIA_imagepipe_surface>,
@@ -217,7 +221,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>).
+                                 -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>).
                                  ("allocator" ::: Maybe AllocationCallbacks)
                               -> io (SurfaceKHR)
 createImagePipeSurfaceFUCHSIA instance'
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
@@ -86,7 +86,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_FUCHSIA_imagepipe_surface Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_GGP_frame_token Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -114,7 +114,11 @@
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP))
 -- | VkPresentFrameTokenGGP - The Google Games Platform frame token
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR'
 --
 -- = See Also
 --
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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_GGP_frame_token Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -111,7 +111,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_GGP_stream_descriptor_surface Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -223,12 +223,16 @@
 --
 -- [<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_NATIVE_WINDOW_IN_USE_KHR'
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_NATIVE_WINDOW_IN_USE_KHR'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_GGP_stream_descriptor_surface VK_GGP_stream_descriptor_surface>,
@@ -246,7 +250,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>).
+                                    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>).
                                     ("allocator" ::: Maybe AllocationCallbacks)
                                  -> io (SurfaceKHR)
 createStreamDescriptorSurfaceGGP instance'
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
@@ -111,7 +111,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_GGP_stream_descriptor_surface Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -70,7 +70,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_GOOGLE_decorate_string Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -113,7 +113,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_GOOGLE_display_timing Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -225,12 +225,16 @@
 --
 -- [<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_DEVICE_LOST'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_SURFACE_LOST_KHR'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_GOOGLE_display_timing VK_GOOGLE_display_timing>,
@@ -314,20 +318,24 @@
 --
 -- [<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.SUCCESS'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST'
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DATE_KHR'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_SURFACE_LOST_KHR'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_GOOGLE_display_timing VK_GOOGLE_display_timing>,
@@ -547,6 +555,12 @@
 --
 -- -   #VUID-VkPresentTimesInfoGOOGLE-swapchainCount-arraylength#
 --     @swapchainCount@ /must/ be greater than @0@
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR'
 --
 -- = See Also
 --
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
@@ -113,7 +113,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_GOOGLE_display_timing Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -74,7 +74,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_GOOGLE_hlsl_functionality1 Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -95,7 +95,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_GOOGLE_surfaceless_query Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -70,7 +70,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_GOOGLE_user_type Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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_cluster_culling_shader.hs b/src/Vulkan/Extensions/VK_HUAWEI_cluster_culling_shader.hs
--- a/src/Vulkan/Extensions/VK_HUAWEI_cluster_culling_shader.hs
+++ b/src/Vulkan/Extensions/VK_HUAWEI_cluster_culling_shader.hs
@@ -84,7793 +84,9085 @@
 -- A set of new built-in output variables are used to express a visible
 -- cluster, including per-cluster shading rate. In addition, a new built-in
 -- function is used to emit these variables from CCS to the IA stage. The
--- IA stage can use these variables to fetches vertices of a visible
--- cluster and drive vertex shaders to shading these vertices.
---
--- Note that CCS do not work with geometry or tessellation shaders, but
--- both IA and vertex shaders are preserved. Vertex shaders are still used
--- for vertex position shading, instead of directly outputting transformed
--- vertices from the compute shader. This makes CCS more suitable for
--- mobile GPUs.
---
--- == New Commands
---
--- -   'cmdDrawClusterHUAWEI'
---
--- -   'cmdDrawClusterIndirectHUAWEI'
---
--- == New Structures
---
--- -   Extending 'PhysicalDeviceClusterCullingShaderFeaturesHUAWEI':
---
---     -   'PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI'
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
---     'Vulkan.Core10.Device.DeviceCreateInfo':
---
---     -   'PhysicalDeviceClusterCullingShaderFeaturesHUAWEI'
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
---
---     -   'PhysicalDeviceClusterCullingShaderPropertiesHUAWEI'
---
--- == New Enum Constants
---
--- -   'HUAWEI_CLUSTER_CULLING_SHADER_EXTENSION_NAME'
---
--- -   'HUAWEI_CLUSTER_CULLING_SHADER_SPEC_VERSION'
---
--- -   Extending
---     'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlagBits2':
---
---     -   'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI'
---
--- -   Extending
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QueryPipelineStatisticFlagBits':
---
---     -   'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_CLUSTER_CULLING_SHADER_INVOCATIONS_BIT_HUAWEI'
---
--- -   Extending
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits':
---
---     -   'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_CLUSTER_CULLING_BIT_HUAWEI'
---
--- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_VRS_FEATURES_HUAWEI'
---
--- == New Built-In Variables
---
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-indexcounthuawei IndexCountHUAWEI>
---
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-vertexcounthuawei VertexCountHUAWEI>
---
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-instancecounthuawei InstanceCountHUAWEI>
---
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-firstindexhuawei FirstIndexHUAWEI>
---
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-firstvertexhuawei FirstVertexHUAWEI>
---
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-vertexoffsethuawei VertexOffsetHUAWEI>
---
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-firstinstancehuawei FirstInstanceHUAWEI>
---
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-clusteridhuawei ClusterIDHUAWEI>
---
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-clustershadingratehuawei ClusterShadingRateHUAWEI>
---
--- == New SPIR-V Capability
---
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-ClusterCullingShadingHUAWEI ClusterCullingShadingHUAWEI>
---
--- == Sample Code
---
--- Example of cluster culling in a GLSL shader
---
--- > #extension GL_HUAWEI_cluster_culling_shader: enable
--- >
--- > #define GPU_WARP_SIZE                   32
--- > #define GPU_GROUP_SIZE                  GPU_WARP_SIZE
--- >
--- > #define GPU_CLUSTER_PER_INVOCATION      1
--- > #define GPU_CLUSTER_PER_WORKGROUP       (GPU_GROUP_SIZE * GPU_CLUSTER_PER_INVOCATION)
--- >
--- > // Number of threads per workgroup
--- > // - 1D only
--- > // - warpsize = 32
--- > layout(local_size_x=GPU_GROUP_SIZE, local_size_y=1, local_size_z=1) in;
--- >
--- > #define GPU_DRAW_BUFFER_BINDING             0
--- > #define GPU_INSTANCE_DESCRIPTOR_BINDING     1
--- >
--- > struct BoundingSphere
--- > {
--- >   vec3 center;
--- >   float radius;
--- > };
--- >
--- > struct InstanceData
--- > {
--- >   mat4 mvp_matrix;                      // mvp matrix.
--- >   vec4 frustum_planes[6];               // six frustum planes
--- >   mat4 model_matrix_transpose_inverse;  // inverse transpose of model matrix.
--- >   vec3 view_origin;                     // view original
--- > };
--- >
--- > struct InstanceDescriptor
--- > {
--- >   uint begin;
--- >   uint end;
--- >   uint cluster_count;
--- >   uint debug;
--- >   BoundingSphere sphere;
--- >   InstanceData instance_data;
--- > };
--- >
--- > struct DrawElementsCommand{
--- >   uint indexcount;
--- >   uint instanceCount;
--- >   uint firstIndex;
--- >   int  vertexoffset;
--- >   uint firstInstance;
--- >   uint cluster_id;
--- > };
--- >
--- > // indexed mode
--- > out gl_PerClusterHUAWEI{
--- >   uint gl_IndexCountHUAWEI;
--- >   uint gl_InstanceCountHUAWEI;
--- >   uint gl_FirstIndexHUAWEI;
--- >   int  gl_VertexOffsetHUAWEI;
--- >   uint gl_FirstInstanceHUAWEI;
--- >   uint gl_ClusterIDHUAWEI;
--- >   uint gl_ClusterShadingRateHUAWEI;
--- > };
--- >
--- > layout(binding = GPU_DRAW_BUFFER_BINDING, std430) buffer draw_indirect_ssbo
--- > {
--- >         DrawElementsCommand draw_commands[];
--- > };
--- >
--- > layout(binding = GPU_INSTANCE_DESCRIPTOR_BINDING, std430) buffer instance_descriptor_ssbo
--- > {
--- >         InstanceDescriptor instance_descriptors[];
--- > };
--- >
--- >
--- > float Distance(uint instance_id)
--- > {
--- >     vec3 v = normalize(instance_descriptor[instance_id].sphere.center -
--- >                      instance_descriptor[instance_id].instance_data.view_origin);
--- >     float dist = sqrt(dot(v,v));
--- >
--- >     return dist;
--- > }
--- >
--- > bool isSphereOutsideFrustum( vec3 sphere_center, float sphere_radius )
--- > {
--- >   bool isInside = false;
--- >
--- >   for(int i = 0; i < 6; i++)
--- >   {
--- >       isInside = isInside ||
--- >       (dot(instance_descriptors[instance_id].instance_data.frustum_planes[i].xyz,
--- >       sphere_center) + instance_descriptors[instance_id].instance_data.frustum_planes[i].w <
--- >       sphere_radius);
--- >   }
--- >   return isInside;
--- > }
--- >
--- >
--- > void main()
--- > {
--- >     // get instance description
--- >     instance_id = gl_GlobalInvocationID.x;
--- >     InstanceDescriptor inst_desc = instance_descriptors[instance_id];
--- >
--- >     //instance based culling
--- >     bool render = !isSphereOutsideFrustum(inst_desc.sphere.center, inst_desc.sphere.radius);
--- >
--- >     if (render)
--- >     {
--- >         // calculate distance
--- >         float distance = Distance(instance_id);
--- >
--- >         // update shading rate built-in variable
--- >         if(distance > 0.7)
--- >             gl_ClusterShadingRateHUAWEI =
--- >                 gl_ShadingRateFlag4VerticalPixelsEXT | gl_ShadingRateFlag4HorizontalPixelsEXT;
--- >         else if(distance > 0.3)
--- >             gl_ClusterShadingRateHUAWEI =
--- >                 gl_ShadingRateFlag2VerticalPixelsEXT | gl_ShadingRateFlag2HorizontalPixelsEXT;
--- >         else
--- >             gl_ClusterShadingRateHUAWEI = 0;
--- >
--- >         // this is a visible cluster, update built-in output variable.
--- >         // in case of indexed mode:
--- >         gl_IndexCountHUAWEI     = draw_commands[cluster_id].indexcount;
--- >         gl_InstanceCountHUAWEI  = draw_commands[cluster_id].instanceCount;
--- >         gl_FirstIndexHUAWEI     = draw_commands[cluster_id].firstIndex;
--- >         gl_VertexOffsetHUAWEI   = draw_commands[cluster_id].vertexoffset;
--- >         gl_FirstInstanceHUAWEI  = draw_commands[cluster_id].firstInstance;
--- >         gl_ClusterIDHUAWEI      = draw_commands[cluster_id].cluster_id;
--- >
--- >         // emit built-in output variables as a drawing command to subsequent
--- >         // rendering pipeline.
--- >         dispatchClusterHUAWEI();
--- >     }
--- > }
---
--- Example of graphics pipeline creation with cluster culling shader
---
--- > // create a cluster culling shader stage info structure.
--- > VkPipelineShaderStageCreateInfo ccsStageInfo{};
--- > ccsStageInfo.sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO;
--- > ccsStageInfo.stage = VK_SHADER_STAGE_CLUSTER_CULLING_BIT_HUAWEI;
--- > ccsStageInfo.module = clustercullingshaderModule;
--- > ccsStageInfo.pName =  "main";
--- >
--- > // pipeline shader stage creation
--- > VkPipelineShaderStageCreateInfo shaderStages[] = { ccsStageInfo, vertexShaderStageInfo, fragmentShaderStageInfo };
--- >
--- > // create graphics pipeline
--- > VkGraphicsPipelineCreateInfo pipelineInfo{};
--- > pipelineInfo.sType = VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO;
--- > pipelineInfo.stageCount = 3;
--- > pipelineInfo.pStage = shaderStages;
--- > pipelineInfo.pVertexInputState = &vertexInputInfo;
--- > // ...
--- > VkPipeline graphicsPipeline;
--- > VkCreateGraphicsPipelines(device, VK_NULL_HANDLE, 1, &pipelineInfo, nullptr, &graphicsPipeline);
---
--- Example of launching the execution of cluster culling shader
---
--- > vkCmdBindPipeline(commandBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, graphicsPipeline);
--- > vkCmdDrawClusterHUAWEI(commandBuffer, groupCountX, 1, 1);
--- > vkCmdEndRenderPass(commandBuffer);
---
--- == Version History
---
--- -   Revision 1, 2022-11-18 (YuChang Wang)
---
---     -   Internal revisions
---
--- -   Revision 2, 2023-04-02 (Jon Leech)
---
---     -   Grammar edits.
---
--- -   Revision 3, 2023-08-21 (YuChang Wang)
---
---     -   Add per-cluster shading rate.
---
--- == See Also
---
--- No cross-references are available
---
--- == Document Notes
---
--- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_HUAWEI_cluster_culling_shader Vulkan Specification>
---
--- This page is a generated document. Fixes and changes should be made to
--- the generator scripts, not directly.
-module Vulkan.Extensions.VK_HUAWEI_cluster_culling_shader  ( cmdDrawClusterHUAWEI
-                                                           , cmdDrawClusterIndirectHUAWEI
-                                                           , PhysicalDeviceClusterCullingShaderPropertiesHUAWEI(..)
-                                                           , PhysicalDeviceClusterCullingShaderFeaturesHUAWEI(..)
-                                                           , PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI(..)
-                                                           , HUAWEI_CLUSTER_CULLING_SHADER_SPEC_VERSION
-                                                           , pattern HUAWEI_CLUSTER_CULLING_SHADER_SPEC_VERSION
-                                                           , HUAWEI_CLUSTER_CULLING_SHADER_EXTENSION_NAME
-                                                           , pattern HUAWEI_CLUSTER_CULLING_SHADER_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 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 Vulkan.CStruct.Utils (advancePtrBytes)
-import Vulkan.Core10.FundamentalTypes (bool32ToBool)
-import Vulkan.Core10.FundamentalTypes (boolToBool32)
-import Vulkan.CStruct.Utils (lowerArrayPtr)
-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.Dynamic (DeviceCmds(pVkCmdDrawClusterHUAWEI))
-import Vulkan.Dynamic (DeviceCmds(pVkCmdDrawClusterIndirectHUAWEI))
-import Vulkan.Core10.FundamentalTypes (DeviceSize)
-import Vulkan.CStruct.Extends (Extends)
-import Vulkan.CStruct.Extends (Extendss)
-import Vulkan.CStruct.Extends (Extensible(..))
-import Vulkan.CStruct.Extends (PeekChain)
-import Vulkan.CStruct.Extends (PeekChain(..))
-import Vulkan.CStruct.Extends (PokeChain)
-import Vulkan.CStruct.Extends (PokeChain(..))
-import Vulkan.Core10.Enums.StructureType (StructureType)
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_VRS_FEATURES_HUAWEI))
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdDrawClusterHUAWEI
-  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Word32 -> Word32 -> IO ()
-
--- | vkCmdDrawClusterHUAWEI - Draw cluster culling work items
---
--- = Description
---
--- When the command is executed,a global workgroup consisting of
--- groupCountX*groupCountY*groupCountZ local workgroup is assembled. Note
--- that the cluster culling shader pipeline only accepts
--- 'cmdDrawClusterHUAWEI' and 'cmdDrawClusterIndirectHUAWEI' as drawing
--- commands.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-magFilter-04553# If a
---     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
---     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR',
---     @reductionMode@ equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
---     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-vkCmdDrawClusterHUAWEI-magFilter-09598# If a
---     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
---     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR' and
---     @reductionMode@ equal to either
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
---     or
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
---     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_MINMAX_BIT'
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-mipmapMode-04770# If a
---     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
---     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR',
---     @reductionMode@ equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
---     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-vkCmdDrawClusterHUAWEI-mipmapMode-09599# If a
---     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
---     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'
---     and @reductionMode@ equal to either
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
---     or
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
---     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_MINMAX_BIT'
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-unnormalizedCoordinates-09635# If a
---     'Vulkan.Core10.Handles.Sampler' created with
---     @unnormalizedCoordinates@ equal to
---     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
---     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
---     the image view’s @levelCount@ and @layerCount@ /must/ be 1
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-unnormalizedCoordinates-09636# If a
---     'Vulkan.Core10.Handles.Sampler' created with
---     @unnormalizedCoordinates@ equal to
---     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
---     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
---     the image view’s @viewType@ /must/ be
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D' or
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D'
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-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-vkCmdDrawClusterHUAWEI-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-vkCmdDrawClusterHUAWEI-None-07888# If a
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'
---     descriptor is accessed using atomic operations as a result of this
---     command, then the storage texel buffer’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-buffer-view-format-features format features>
---     /must/ contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT'
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-02692# If a
---     'Vulkan.Core10.Handles.ImageView' is sampled with
---     'Vulkan.Core10.Enums.Filter.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.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-02693# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_filter_cubic VK_EXT_filter_cubic>
---     extension is not enabled and any 'Vulkan.Core10.Handles.ImageView'
---     is sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as a
---     result of this command, it /must/ not have a
---     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' of
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE', or
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY'
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-filterCubic-02694# Any
---     'Vulkan.Core10.Handles.ImageView' being sampled with
---     'Vulkan.Core10.Enums.Filter.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-vkCmdDrawClusterHUAWEI-filterCubicMinmax-02695# Any
---     'Vulkan.Core10.Handles.ImageView' being sampled with
---     'Vulkan.Core10.Enums.Filter.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-vkCmdDrawClusterHUAWEI-cubicRangeClamp-09212# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-cubicRangeClamp cubicRangeClamp>
---     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
---     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
---     a result of this command /must/ not have a
---     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
---     equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-reductionMode-09213# Any
---     'Vulkan.Core10.Handles.ImageView' being sampled with a
---     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
---     equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
---     as a result of this command /must/ sample with
---     'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT'
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-selectableCubicWeights-09214# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-selectableCubicWeights selectableCubicWeights>
---     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
---     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
---     a result of this command /must/ have
---     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.SamplerCubicWeightsCreateInfoQCOM'::@cubicWeights@
---     equal to
---     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM'
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-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-vkCmdDrawClusterHUAWEI-OpTypeImage-07027# For any
---     'Vulkan.Core10.Handles.ImageView' being written as a storage image
---     where the image format field of the @OpTypeImage@ is @Unknown@, the
---     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_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-OpTypeImage-07028# For any
---     'Vulkan.Core10.Handles.ImageView' being read as a storage image
---     where the image format field of the @OpTypeImage@ is @Unknown@, the
---     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_STORAGE_READ_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-OpTypeImage-07029# For any
---     'Vulkan.Core10.Handles.BufferView' being written as a storage texel
---     buffer where the image format field of the @OpTypeImage@ is
---     @Unknown@, the view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
---     /must/ contain
---     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-OpTypeImage-07030# Any
---     'Vulkan.Core10.Handles.BufferView' being read as a storage texel
---     buffer where the image format field of the @OpTypeImage@ is
---     @Unknown@ then the view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
---     /must/ contain
---     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-08600# For each set /n/ that is
---     statically used by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     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' or the
---     'Vulkan.Core10.Handles.DescriptorSetLayout' array used to create the
---     current 'Vulkan.Extensions.Handles.ShaderEXT' , as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-08601# For each push constant that
---     is statically used by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     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' or the
---     'Vulkan.Core10.Handles.DescriptorSetLayout' array used to create the
---     current 'Vulkan.Extensions.Handles.ShaderEXT' , as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-10068# For each array of resources
---     that is used by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     the indices used to access members of the array /must/ be less than
---     the descriptor count for the identified binding in the descriptor
---     sets used by this command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-maintenance4-08602# 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
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     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' or the
---     'Vulkan.Core10.Handles.DescriptorSetLayout' and
---     'Vulkan.Core10.PipelineLayout.PushConstantRange' arrays used to
---     create the current 'Vulkan.Extensions.Handles.ShaderEXT' , as
---     described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-08114# Descriptors in each bound
---     descriptor set, specified via
---     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
---     be valid as described by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
---     if they are statically used by the 'Vulkan.Core10.Handles.Pipeline'
---     bound to the pipeline bind point used by this command and the bound
---     'Vulkan.Core10.Handles.Pipeline' was not created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-08115# If the descriptors used by
---     the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
---     point were specified via
---     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', the
---     bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
---     without
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-08116# Descriptors in bound
---     descriptor buffers, specified via
---     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
---     /must/ be valid if they are dynamically used by the
---     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
---     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
---     was created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-08604# Descriptors in bound
---     descriptor buffers, specified via
---     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
---     /must/ be valid if they are dynamically used by any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     to the pipeline bind point used by this command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-08117# If the descriptors used by
---     the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
---     point were specified via
---     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
---     the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
---     with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-08119# If a descriptor is
---     dynamically used with a 'Vulkan.Core10.Handles.Pipeline' created
---     with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
---     the descriptor memory /must/ be resident
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-08605# If a descriptor is
---     dynamically used with a 'Vulkan.Extensions.Handles.ShaderEXT'
---     created with a 'Vulkan.Core10.Handles.DescriptorSetLayout' that was
---     created with
---     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
---     the descriptor memory /must/ be resident
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-08606# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject>
---     feature is not enabled, a valid pipeline /must/ be bound to the
---     pipeline bind point used by this command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-08608# If a pipeline is bound to
---     the pipeline bind point used by this command, there /must/ not have
---     been any calls to dynamic state setting commands for any state
---     specified statically in the 'Vulkan.Core10.Handles.Pipeline' object
---     bound to the pipeline bind point used by this command, since that
---     pipeline was bound
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-08609# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command or any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDrawClusterHUAWEI-None-08610# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command or any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDrawClusterHUAWEI-None-08611# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command or any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDrawClusterHUAWEI-None-08607# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject>
---     feature is enabled, either a valid pipeline /must/ be bound to the
---     pipeline bind point used by this command, or a valid combination of
---     valid and 'Vulkan.Core10.APIConstants.NULL_HANDLE' shader objects
---     /must/ be bound to every supported shader stage corresponding to the
---     pipeline bind point used by this command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-uniformBuffers-06935# If any stage of
---     the 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline
---     bind point used by this command accesses a uniform buffer, and that
---     stage was created without enabling either
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT'
---     or
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT'
---     for @uniformBuffers@, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, that stage /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-vkCmdDrawClusterHUAWEI-None-08612# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, and any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDrawClusterHUAWEI-storageBuffers-06936# If any stage of
---     the 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline
---     bind point used by this command accesses a storage buffer, and that
---     stage was created without enabling either
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT'
---     or
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT'
---     for @storageBuffers@, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, that stage /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-vkCmdDrawClusterHUAWEI-None-08613# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, and any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDrawClusterHUAWEI-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
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shaders>
---     /must/ not be a protected resource
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-06550# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
---     accesses a 'Vulkan.Core10.Handles.Sampler' or
---     'Vulkan.Core10.Handles.ImageView' object that enables
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,
---     that object /must/ only be used with @OpImageSample*@ or
---     @OpImageSparseSample*@ instructions
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-ConstOffset-06551# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
---     accesses a 'Vulkan.Core10.Handles.Sampler' or
---     'Vulkan.Core10.Handles.ImageView' object that enables
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,
---     that object /must/ not use the @ConstOffset@ and @Offset@ operands
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-viewType-07752# If a
---     'Vulkan.Core10.Handles.ImageView' is accessed as a result of this
---     command, then the image view’s @viewType@ /must/ match the @Dim@
---     operand of the @OpTypeImage@ as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-image-dimensions ???>
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-format-07753# If a
---     'Vulkan.Core10.Handles.ImageView' is accessed as a result of this
---     command, then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-numericformat numeric type>
---     of the image view’s @format@ and the @Sampled@ @Type@ operand of the
---     @OpTypeImage@ /must/ match
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-OpImageWrite-08795# If a
---     'Vulkan.Core10.Handles.ImageView' created with a format other than
---     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM_KHR' 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-vkCmdDrawClusterHUAWEI-OpImageWrite-08796# If a
---     'Vulkan.Core10.Handles.ImageView' created with the format
---     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM_KHR' is accessed using
---     @OpImageWrite@ as a result of this command, then the @Type@ of the
---     @Texel@ operand of that instruction /must/ have four components
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-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-vkCmdDrawClusterHUAWEI-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-vkCmdDrawClusterHUAWEI-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-vkCmdDrawClusterHUAWEI-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-vkCmdDrawClusterHUAWEI-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-vkCmdDrawClusterHUAWEI-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-vkCmdDrawClusterHUAWEI-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-vkCmdDrawClusterHUAWEI-OpImageWeightedSampleQCOM-06971# If
---     @OpImageWeightedSampleQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-OpImageWeightedSampleQCOM-06972# If
---     @OpImageWeightedSampleQCOM@ uses a 'Vulkan.Core10.Handles.ImageView'
---     as a sample weight image 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-OpImageBoxFilterQCOM-06973# If
---     @OpImageBoxFilterQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-OpImageBlockMatchSSDQCOM-06974# If
---     @OpImageBlockMatchSSDQCOM@ is used to read from an
---     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-OpImageBlockMatchSADQCOM-06975# If
---     @OpImageBlockMatchSADQCOM@ is used to read from an
---     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-OpImageBlockMatchSADQCOM-06976# If
---     @OpImageBlockMatchSADQCOM@ or OpImageBlockMatchSSDQCOM is used to
---     read from a reference image as result of this command, then the
---     specified reference coordinates /must/ not fail
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-OpImageWeightedSampleQCOM-06977# If
---     @OpImageWeightedSampleQCOM@, @OpImageBoxFilterQCOM@,
---     @OpImageBlockMatchWindowSSDQCOM@, @OpImageBlockMatchWindowSADQCOM@,
---     @OpImageBlockMatchGatherSSDQCOM@, @OpImageBlockMatchGatherSADQCOM@,
---     @OpImageBlockMatchSSDQCOM@, or @OpImageBlockMatchSADQCOM@ uses a
---     'Vulkan.Core10.Handles.Sampler' as a result of this command, then
---     the sampler /must/ have been created with
---     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-OpImageWeightedSampleQCOM-06978# If any
---     command other than @OpImageWeightedSampleQCOM@,
---     @OpImageBoxFilterQCOM@, @OpImageBlockMatchWindowSSDQCOM@,
---     @OpImageBlockMatchWindowSADQCOM@, @OpImageBlockMatchGatherSSDQCOM@,
---     @OpImageBlockMatchGatherSADQCOM@, @OpImageBlockMatchSSDQCOM@, or
---     @OpImageBlockMatchSADQCOM@ uses a 'Vulkan.Core10.Handles.Sampler' as
---     a result of this command, then the sampler /must/ not have been
---     created with
---     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-OpImageBlockMatchWindow-09215# If a
---     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
---     instruction is used to read from an
---     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-OpImageBlockMatchWindow-09216# If a
---     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
---     instruction is used to read from an
---     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
---     the image view’s format /must/ be a single-component format
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-OpImageBlockMatchWindow-09217# If a
---     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
---     read from a reference image as result of this command, then the
---     specified reference coordinates /must/ not fail
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-07288# Any shader invocation
---     executed by this command /must/
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-termination terminate>
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-09600# If a descriptor with type
---     equal to any of
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM',
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM',
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',
---     or
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'
---     is accessed as a result of this command, the image subresource
---     identified by that descriptor /must/ be in the image layout
---     identified when the descriptor was written
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-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-vkCmdDrawClusterHUAWEI-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-vkCmdDrawClusterHUAWEI-None-07748# If any shader statically
---     accesses an input attachment, a valid descriptor /must/ be bound to
---     the pipeline via a descriptor set
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-OpTypeImage-07468# If any shader
---     executed by this pipeline accesses an @OpTypeImage@ variable with a
---     @Dim@ operand of @SubpassData@, it /must/ be decorated with an
---     @InputAttachmentIndex@ that corresponds to a valid input attachment
---     in the current subpass
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-07469# Input attachment views
---     accessed in a subpass /must/ be created with the same
---     'Vulkan.Core10.Enums.Format.Format' as the corresponding subpass
---     definition, and be created with a 'Vulkan.Core10.Handles.ImageView'
---     that is compatible with the attachment referenced by the subpass\'
---     @pInputAttachments@[@InputAttachmentIndex@] in the bound
---     'Vulkan.Core10.Handles.Framebuffer' as specified by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#compatibility-inputattachment Fragment Input Attachment Compatibility>
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-pDepthInputAttachmentIndex-09595# Input
---     attachment views accessed in a dynamic render pass with a
---     @InputAttachmentIndex@ referenced by
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR',
---     or no @InputAttachmentIndex@ if
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR':@pDepthInputAttachmentIndex@
---     or
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR':@pStencilInputAttachmentIndex@
---     are @NULL@, /must/ be created with a
---     'Vulkan.Core10.Handles.ImageView' that is compatible with the
---     corresponding color, depth, or stencil attachment in
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-pDepthInputAttachmentIndex-09596# Input
---     attachment views accessed in a dynamic render pass via a shader
---     object /must/ have an @InputAttachmentIndex@ if both
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR':@pDepthInputAttachmentIndex@
---     and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR':@pStencilInputAttachmentIndex@
---     are non-@NULL@
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-InputAttachmentIndex-09597# If an input
---     attachment view accessed in a dynamic render pass via a shader
---     object has an @InputAttachmentIndex@, the @InputAttachmentIndex@
---     /must/ match an index in
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR'
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-06537# Memory backing image
---     subresources used as attachments in the current render pass /must/
---     not be written in any way other than as an attachment by this
---     command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-09000# If a color attachment is
---     written by any prior command in this subpass or by the load, store,
---     or resolve operations for this subpass, it is not in the
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
---     image layout, and either:
---
---     -   the
---         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT'
---         is set on the bound pipeline or
---
---     -   the last call to
---         'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
---         included
---         'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'
---         and
---
---         -   there is no bound graphics pipeline or
---
---         -   the bound graphics pipeline was created with
---             'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
---
---     it /must/ not be accessed in any way other than as an attachment by
---     this command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-09001# If a depth attachment is
---     written by any prior command in this subpass or by the load, store,
---     or resolve operations for this subpass, it is not in the
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
---     image layout, and either:
---
---     -   the
---         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT'
---         is set on the bound pipeline or
---
---     -   the last call to
---         'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
---         included
---         'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT'
---         and
---
---         -   there is no bound graphics pipeline or
---
---         -   the bound graphics pipeline was created with
---             'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
---
---     it /must/ not be accessed in any way other than as an attachment by
---     this command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-09002# If a stencil attachment is
---     written by any prior command in this subpass or by the load, store,
---     or resolve operations for this subpass, it is not in the
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
---     image layout, and either:
---
---     -   the
---         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT'
---         is set on the bound pipeline or
---
---     -   the last call to
---         'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
---         included
---         'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
---         and
---
---         -   there is no bound graphics pipeline or
---
---         -   the bound graphics pipeline was created with
---             'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
---
---     it /must/ not be accessed in any way other than as an attachment by
---     this command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-09003# If an attachment is written
---     by any prior command in this subpass or by the load, store, or
---     resolve operations for this subpass, it /must/ not be accessed in
---     any way other than as an attachment, storage image, or sampled image
---     by this command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-06539# If any previously recorded
---     command in the current subpass accessed an image subresource used as
---     an attachment in this subpass in any way other than as an
---     attachment, this command /must/ not write to that image subresource
---     as an attachment
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-06886# If the current render pass
---     instance uses a depth\/stencil attachment with a read-only layout
---     for the depth aspect,
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-depth-write depth writes>
---     /must/ be disabled
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-06887# If the current render pass
---     instance uses a depth\/stencil attachment with a read-only layout
---     for the stencil aspect, both front and back @writeMask@ are not
---     zero, and stencil test is enabled,
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-stencil all stencil ops>
---     /must/ be 'Vulkan.Core10.Enums.StencilOp.STENCIL_OP_KEEP'
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-07831# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT' dynamic
---     state enabled then
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetViewport' /must/ have
---     been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-07832# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR' dynamic
---     state enabled then
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetScissor' /must/ have been
---     called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-07833# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_WIDTH' dynamic
---     state enabled then
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth' /must/ have
---     been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-08617# If a shader object is bound
---     to any graphics stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
---     in the current command buffer set @polygonMode@ to
---     'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_LINE',
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth' /must/ have
---     been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-08618# If a shader object is bound
---     to any graphics stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
---     in the current command buffer set @primitiveTopology@ to any line
---     topology, 'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-08619# If a shader object that
---     outputs line primitives is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE',
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth' /must/ have
---     been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-07834# If a shader object is bound
---     to any graphics stage or a graphics pipeline is bound which was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS' dynamic
---     state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @depthBiasEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBounds' or
---     'Vulkan.Extensions.VK_EXT_depth_bias_control.cmdSetDepthBias2EXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-07835# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_BLEND_CONSTANTS'
---     dynamic state enabled then
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetBlendConstants' /must/
---     have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-08621# If a shader object is bound
---     to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     in the current command buffer set any element of
---     @pColorBlendEnables@ to 'Vulkan.Core10.FundamentalTypes.TRUE', and
---     the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     in the current command buffer set the same element of
---     @pColorBlendEquations@ to a
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.ColorBlendEquationEXT'
---     structure with any 'Vulkan.Core10.Enums.BlendFactor.BlendFactor'
---     member with a value of
---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_COLOR',
---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR',
---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_ALPHA', or
---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA',
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetBlendConstants' /must/
---     have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-07836# If a shader object is bound
---     to any graphics stage or a graphics pipeline is bound which was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @depthBoundsTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBounds' /must/
---     have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-07837# If a shader object is bound
---     to any graphics stage or a graphics pipeline is bound which was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_COMPARE_MASK'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilCompareMask'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-07838# If a shader object is bound
---     to any graphics stage or a graphics pipeline is bound which was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_WRITE_MASK'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilWriteMask'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-07839# If a shader object is bound
---     to any graphics stage or a graphics pipeline is bound which was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_REFERENCE'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of and @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilReference'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-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-vkCmdDrawClusterHUAWEI-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-vkCmdDrawClusterHUAWEI-None-07634# If the
---     @VK_EXT_sample_locations@ extension is enabled, a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-06666# If the
---     @VK_EXT_sample_locations@ extension is enabled, a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then
---     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-07840# If a shader object is bound
---     to any graphics stage or a graphics pipeline is bound which was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CULL_MODE' dynamic
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetCullMode'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-07841# If a shader object is bound
---     to any graphics stage or a graphics pipeline is bound which was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRONT_FACE' dynamic
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetFrontFace'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-07843# If a shader object is bound
---     to any graphics stage or a graphics pipeline is bound which was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_TEST_ENABLE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE',
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthTestEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-07844# If a shader object is bound
---     to any graphics stage or a graphics pipeline is bound which was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthWriteEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-07845# If a shader object is bound
---     to any graphics stage or a graphics pipeline is bound which was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_COMPARE_OP'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @depthTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthCompareOp'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-07846# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthBounds depthBounds>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthBoundsTestEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-07847# If a shader object is bound
---     to any graphics stage or a graphics pipeline is bound which was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_TEST_ENABLE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilTestEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-07848# If a shader object is bound
---     to any graphics stage or a graphics pipeline is bound which was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_OP' dynamic
---     state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilOp'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-viewportCount-03417# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
---     dynamic state enabled, and the state is not inherited, then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-scissorCount-03418# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
---     dynamic state enabled, and the state is not inherited, then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-viewportCount-03419# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     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, and the state is not inherited, then 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-vkCmdDrawClusterHUAWEI-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-vkCmdDrawClusterHUAWEI-viewportCount-04138# If the
---     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which 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 state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @viewportWScalingEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.cmdSetViewportWScalingNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-08636# If the
---     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which 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 state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @viewportWScalingEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', 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-vkCmdDrawClusterHUAWEI-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-vkCmdDrawClusterHUAWEI-shadingRateImage-09233# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV'
---     and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetCoarseSampleOrderNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-shadingRateImage-09234# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which 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 state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @shadingRateImageEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetViewportShadingRatePaletteNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-08637# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which 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 state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @shadingRateImageEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', 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-vkCmdDrawClusterHUAWEI-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
---     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo', 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-vkCmdDrawClusterHUAWEI-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
---     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo', 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-vkCmdDrawClusterHUAWEI-None-07878# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-exclusiveScissor exclusiveScissor>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-07879# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-exclusiveScissor exclusiveScissor>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV'
---     dynamic state enabled, and the most recent call to
---     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorEnableNV'
---     in the current command buffer set any element of
---     @pExclusiveScissorEnables@ to 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then
---     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-04876# If a shader object is bound
---     to any graphics stage or a graphics pipeline is bound which 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 and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-04877# If a shader object is bound
---     to any graphics stage or a graphics pipeline is bound which was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-logicOp-04878# If a shader object is
---     bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_EXT'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @logicOpEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetLogicOpEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-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-vkCmdDrawClusterHUAWEI-primitiveFragmentShadingRateWithMultipleViewports-08642#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
---     limit is not supported, and any shader object bound to a graphics
---     stage writes 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-vkCmdDrawClusterHUAWEI-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-vkCmdDrawClusterHUAWEI-None-08643# If a shader object is bound
---     to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then for each color
---     attachment in the render pass, 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 corresponding member of @pColorBlendEnables@ in the most
---     recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     in the current command buffer that affected that attachment index
---     /must/ have been 'Vulkan.Core10.FundamentalTypes.FALSE'
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-multisampledRenderToSingleSampled-07284#
---     If rasterization is not disabled in the bound graphics pipeline, and
---     none of the following is enabled:
---
---     -   the @VK_AMD_mixed_attachment_samples@ extension
---
---     -   the @VK_NV_framebuffer_mixed_samples@ extension
---
---     -   the
---         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---         feature
---
---     then @rasterizationSamples@ for the bound graphics pipeline /must/
---     be the same as the current subpass color and\/or depth\/stencil
---     attachments
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-08644# If a shader object is bound
---     to any graphics stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and none of the following is
---     enabled:
---
---     -   the @VK_AMD_mixed_attachment_samples@ extension
---
---     -   the @VK_NV_framebuffer_mixed_samples@ extension
---
---     -   the
---         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---         feature
---
---     then the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     in the current command buffer /must/ have set @rasterizationSamples@
---     to be the same as the number of samples for the current render pass
---     color and\/or depth\/stencil attachments
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-08876# If a shader object is bound
---     to any graphics stage, the current render pass instance /must/ have
---     been begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-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-vkCmdDrawClusterHUAWEI-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-vkCmdDrawClusterHUAWEI-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-vkCmdDrawClusterHUAWEI-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-vkCmdDrawClusterHUAWEI-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-vkCmdDrawClusterHUAWEI-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-vkCmdDrawClusterHUAWEI-viewMask-06178# If the current render
---     pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the 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-vkCmdDrawClusterHUAWEI-colorAttachmentCount-06179# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled and the current render pass instance was
---     begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the 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-vkCmdDrawClusterHUAWEI-dynamicRenderingUnusedAttachments-08910#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and 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 an @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 bound graphics pipeline
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-dynamicRenderingUnusedAttachments-08912#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and 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 an @imageView@ equal to
---     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have the
---     corresponding element of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
---     used to create the bound pipeline equal to
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-dynamicRenderingUnusedAttachments-08911#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is enabled, and 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 an @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 bound graphics pipeline, or the corresponding
---     element of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@,
---     if it exists, /must/ be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-colorAttachmentCount-09362# If 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@
---     equal to @1@, there is no shader object bound to any graphics stage,
---     and a color attachment with a resolve mode of
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID',
---     each element of the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
---     array with a @resolveImageView@ not equal to
---     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
---     with an image created with a
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value equal to the
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value used to create the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-09363# If there is no shader
---     object bound to any graphics stage, the current render pass instance
---     was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     and a
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
---     equal to @1@, and a color attachment with a resolve mode of
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID',
---     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 an image created with a
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value equal to the
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value used to create the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-09364# If the current render pass
---     instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is no shader object bound to any graphics stage, and the bound
---     graphics pipeline was created with a non-zero
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value and with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have set the blend enable to
---     'Vulkan.Core10.FundamentalTypes.FALSE' prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-09365# If the current render pass
---     instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is no shader object bound to any graphics stage, and the bound
---     graphics pipeline was created with a non-zero
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value and with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ have set @rasterizationSamples@ to
---     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' prior
---     to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-09366# If there is a shader object
---     bound to any graphics stage, and the current render pass includes a
---     color attachment that uses the
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID'
---     resolve mode, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have set blend enable to
---     'Vulkan.Core10.FundamentalTypes.FALSE' prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-rasterizationSamples-09367# If there is
---     a shader object bound to any graphics stage, and the current render
---     pass includes a color attachment that uses the
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID'
---     resolve mode, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ have set @rasterizationSamples@ to
---     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' prior
---     to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-09368# If the current render pass
---     instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is no shader object bound to any graphics stage, and the bound
---     graphics pipeline was created with a non-zero
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value and with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
---     /must/ have set @pFragmentSize->width@ to @1@ prior to this drawing
---     command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-09369# If the current render pass
---     instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is no shader object bound to any graphics stage, and the bound
---     graphics pipeline was created with a non-zero
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value and with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
---     /must/ have set @pFragmentSize->height@ to @1@ prior to this drawing
---     command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-pFragmentSize-09370# If there is a
---     shader object bound to any graphics stage, and the current render
---     pass includes a color attachment that uses the
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID'
---     resolve mode, then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
---     /must/ have set @pFragmentSize->width@ to @1@ prior to this drawing
---     command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-pFragmentSize-09371# If there is a
---     shader object bound to any graphics stage, and the current render
---     pass includes a color attachment that uses the
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID'
---     resolve mode, then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
---     /must/ have set @pFragmentSize->height@ to @1@ prior to this drawing
---     command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-07749# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-08646# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
---     feature is enabled, and a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-attachmentCount-07750# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'
---     dynamic state enabled then the @attachmentCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
---     /must/ be greater than or equal to the
---     'Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo'::@attachmentCount@
---     of the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-08647# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
---     feature is enabled, and a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then the @attachmentCount@
---     parameter of most recent call to
---     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
---     in the current command buffer /must/ be greater than or equal to the
---     number of color attachments in the current render pass instance
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-07751# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command for each
---     discard rectangle in
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'::@discardRectangleCount@
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-07880# If the
---     @VK_EXT_discard_rectangles@ extension is enabled, a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-07881# If the
---     @VK_EXT_discard_rectangles@ extension is enabled, a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @discardRectangleEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-rasterizerDiscardEnable-09236# If the
---     @VK_EXT_discard_rectangles@ extension is enabled, and a shader
---     object is bound to any graphics stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEnableEXT'
---     in the current command buffer set @discardRectangleEnable@ to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-dynamicRenderingUnusedAttachments-08913#
---     If the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
---     used to create the bound graphics pipeline /must/ be equal to
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-dynamicRenderingUnusedAttachments-08914#
---     If current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->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 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->imageView@
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-dynamicRenderingUnusedAttachments-08915#
---     If the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is enabled,
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
---     used to create the bound graphics pipeline was not equal to the
---     'Vulkan.Core10.Enums.Format.Format' used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@,
---     the value of the format /must/ be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-dynamicRenderingUnusedAttachments-08916#
---     If the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
---     used to create the bound graphics pipeline /must/ be equal to
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-dynamicRenderingUnusedAttachments-08917#
---     If current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->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 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->imageView@
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-dynamicRenderingUnusedAttachments-08918#
---     If the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is enabled,
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
---     used to create the bound graphics pipeline was not equal to the
---     'Vulkan.Core10.Enums.Format.Format' used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@,
---     the value of the format /must/ be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-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_fragment_shading_rate.RenderingFragmentShadingRateAttachmentInfoKHR'::@imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the bound graphics
---     pipeline /must/ have been created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-imageView-06184# If the current render
---     pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     and
---     'Vulkan.Extensions.VK_EXT_fragment_density_map.RenderingFragmentDensityMapAttachmentInfoEXT'::@imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the bound graphics
---     pipeline /must/ have been created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT'
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-colorAttachmentCount-06185# If the
---     bound pipeline was created with a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.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_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     used to create the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-pDepthAttachment-06186# If the current
---     render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the bound pipeline was created with a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     structure, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
---     @depthStencilAttachmentSamples@ member of
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     used to create the bound graphics pipeline /must/ be equal to the
---     sample count used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-pStencilAttachment-06187# If the
---     current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the bound pipeline was created with a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     structure, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
---     @depthStencilAttachmentSamples@ member of
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     used to create the bound graphics pipeline /must/ be equal to the
---     sample count used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-multisampledRenderToSingleSampled-07285#
---     If the bound pipeline was created without a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     structure, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---     feature is not enabled, 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 @rasterizationSamples@ for
---     the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-multisampledRenderToSingleSampled-07286#
---     If the bound pipeline was created without a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     structure, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     @rasterizationSamples@ for the bound graphics pipeline /must/ be
---     equal to the sample count used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-multisampledRenderToSingleSampled-07287#
---     If the bound pipeline was created without a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     structure, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     @rasterizationSamples@ for the bound graphics pipeline /must/ be
---     equal to the sample count used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-pNext-07935# If this command has been
---     called inside a render pass instance started with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     and the @pNext@ chain of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'
---     includes a
---     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'
---     structure with @multisampledRenderToSingleSampledEnable@ equal to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the value of
---     @rasterizationSamples@ for the bound graphics pipeline /must/ be
---     equal to
---     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'::@rasterizationSamples@
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-renderPass-06198# If the current render
---     pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the bound pipeline /must/ have been created with a
---     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@renderPass@
---     equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE'
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-pColorAttachments-08963# If the current
---     render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is a graphics pipeline bound with a fragment shader that
---     statically writes to a color attachment, the color write mask is not
---     zero, color writes are enabled, and the corresponding element of the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
---     corresponding element of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
---     used to create the pipeline /must/ not be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-pDepthAttachment-08964# If the current
---     render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is a graphics pipeline bound, depth test is enabled, depth
---     write is enabled, and the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
---     used to create the pipeline /must/ not be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-pStencilAttachment-08965# If the
---     current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is a graphics pipeline bound, stencil test is enabled and the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
---     used to create the pipeline /must/ not be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-primitivesGeneratedQueryWithRasterizerDiscard-06708#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithRasterizerDiscard primitivesGeneratedQueryWithRasterizerDiscard>
---     feature is not enabled and the
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
---     query is active,
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-discard rasterization discard>
---     /must/ not be enabled
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-primitivesGeneratedQueryWithNonZeroStreams-06709#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>
---     feature is not enabled and the
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
---     query is active, the bound graphics pipeline /must/ not have been
---     created with a non-zero value in
---     'Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT'::@rasterizationStream@
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-07619# If a shader object is bound
---     to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetTessellationDomainOriginEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-07620# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClamp depthClamp>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClampEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-07621# If a shader object is bound
---     to any graphics stage or a graphics pipeline is bound which was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_POLYGON_MODE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-07622# If a shader object is bound
---     to any graphics stage or a graphics pipeline is bound which was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-07623# If a shader object is bound
---     to any graphics stage or a graphics pipeline is bound which was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-alphaToCoverageEnable-08919# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT'
---     dynamic state enabled, and @alphaToCoverageEnable@ was
---     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-fragmentoutput Fragment Output Interface>
---     /must/ contain a variable for the alpha @Component@ word in
---     @Location@ 0 at @Index@ 0
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-alphaToCoverageEnable-08920# If a
---     shader object is bound to any graphics stage, and the most recent
---     call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT'
---     in the current command buffer set @alphaToCoverageEnable@ to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-fragmentoutput Fragment Output Interface>
---     /must/ contain a variable for the alpha @Component@ word in
---     @Location@ 0 at @Index@ 0
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-07624# If a shader object is bound
---     to any graphics stage or a graphics pipeline is bound which was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-07625# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-alphaToOne alphaToOne>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToOneEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-07626# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-logicOp logicOp>
---     feature is enabled, a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLogicOpEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-07627# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-08657# If a shader object is bound
---     to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and both the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE' and there are color
---     attachments bound, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-07628# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-08658# If a shader object is bound
---     to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     for any attachment set that attachment’s value in
---     @pColorBlendEnables@ to 'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-07629# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-08659# If a shader object is bound
---     to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and both the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE' and there are color
---     attachments bound, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-07630# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryStreams geometryStreams>
---     feature is enabled, and a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_STREAM_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationStreamEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-07631# If the
---     @VK_EXT_conservative_rasterization@ extension is enabled, a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetConservativeRasterizationModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-07632# If the
---     @VK_EXT_conservative_rasterization@ extension is enabled, a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @conservativeRasterizationMode@ is
---     'Vulkan.Extensions.VK_EXT_conservative_rasterization.CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT',
---     then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetExtraPrimitiveOverestimationSizeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-07633# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClipEnable depthClipEnable>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT'
---     dynamic state, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-07635# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-rasterizerDiscardEnable-09416# If the
---     @VK_EXT_blend_operation_advanced@ extension is enabled, and a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then at least one of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     and
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-07636# If the
---     @VK_EXT_provoking_vertex@ extension is enabled, a shader object is
---     bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetProvokingVertexModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-07637# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-08666# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object is bound to any graphics
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
---     in the current command buffer set @polygonMode@ to
---     'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_LINE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-08667# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
---     in the current command buffer set @primitiveTopology@ to any line
---     topology, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-08668# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object that outputs line
---     primitives is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-07638# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-08669# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object is bound to any graphics
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
---     in the current command buffer set @polygonMode@ to
---     'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_LINE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-08670# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
---     in the current command buffer set @primitiveTopology@ to any line
---     topology, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-08671# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object that outputs line
---     primitives is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-07849# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled and a shader object is bound to any graphics
---     stage, or a bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_KHR'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @stippledLineEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then
---     'Vulkan.Extensions.VK_KHR_line_rasterization.cmdSetLineStippleKHR'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-07639# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClipControl depthClipControl>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipNegativeOneToOneEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-09650# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClampControl depthClampControl>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @depthClampEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_depth_clamp_control.cmdSetDepthClampRangeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-07640# If the
---     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportWScalingEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-07641# If the
---     @VK_NV_viewport_swizzle@ extension is enabled, and a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-07642# If the
---     @VK_NV_fragment_coverage_to_color@ extension is enabled, a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-07643# If the
---     @VK_NV_fragment_coverage_to_color@ extension is enabled, a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @coverageToColorEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-07644# If the
---     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationModeNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-07645# If the
---     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @coverageModulationMode@ is any value other than
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.COVERAGE_MODULATION_MODE_NONE_NV',
---     then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-07646# If the
---     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @coverageModulationTableEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-07647# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetShadingRateImageEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-pipelineFragmentShadingRate-09238# If
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate>
---     feature is enabled, a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-07648# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-representativeFragmentTest representativeFragmentTest>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRepresentativeFragmentTestEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-07649# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-coverageReductionMode coverageReductionMode>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageReductionModeNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-pColorBlendEnables-07470# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---     state enabled and the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     set @pColorBlendEnables@ for any attachment to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then for those attachments in
---     the subpass 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>
---     /must/ contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT'
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-rasterizationSamples-07471# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the current subpass does not use any color
---     and\/or depth\/stencil attachments, then the @rasterizationSamples@
---     in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ follow the rules for a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-noattachments zero-attachment subpass>
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-samples-07472# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
---     state enabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state disabled, then the @samples@ parameter in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
---     /must/ be greater or equal to the
---     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
---     parameter used to create the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-samples-07473# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
---     state and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     states enabled, then the @samples@ parameter in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
---     /must/ be greater or equal to the @rasterizationSamples@ parameter
---     in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-rasterizationSamples-07474# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---     feature is not enabled, and neither the
---     @VK_AMD_mixed_attachment_samples@ nor the
---     @VK_NV_framebuffer_mixed_samples@ extensions are enabled, then the
---     @rasterizationSamples@ in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ be the same as the current subpass color and\/or
---     depth\/stencil attachments
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-09211# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, or a shader object is bound to any graphics stage,
---     and the current render pass instance includes a
---     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'
---     structure with @multisampledRenderToSingleSampledEnable@ equal to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the
---     @rasterizationSamples@ in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ be the same as the @rasterizationSamples@ member of that
---     structure
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-firstAttachment-07476# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     calls /must/ specify an enable for all active color attachments in
---     the current subpass
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-rasterizerDiscardEnable-09417# If a
---     shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     calls /must/ specify an enable for all active color attachments in
---     the current subpass
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-firstAttachment-07477# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     calls /must/ specify the blend equations for all active color
---     attachments in the current subpass where blending is enabled
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-rasterizerDiscardEnable-09418# If a
---     shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and both the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE' and there are color
---     attachments bound, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     calls /must/ specify the blend equations for all active color
---     attachments in the current subpass where blending is enabled
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-firstAttachment-07478# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     calls /must/ specify the color write mask for all active color
---     attachments in the current subpass
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-rasterizerDiscardEnable-09419# If a
---     shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     calls /must/ specify the color write mask for all active color
---     attachments in the current subpass
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-firstAttachment-07479# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
---     calls /must/ specify the advanced blend equations for all active
---     color attachments in the current subpass where blending is enabled
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-advancedBlendMaxColorAttachments-07480#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
---     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---     dynamic states enabled and the last calls to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     and
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
---     have enabled advanced blending, then the number of active color
---     attachments in the current subpass /must/ not exceed
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-advancedBlendMaxColorAttachments advancedBlendMaxColorAttachments>
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-primitivesGeneratedQueryWithNonZeroStreams-07481#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>
---     feature is not enabled and the
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
---     query is active, and the bound graphics pipeline was created with
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_STREAM_EXT'
---     state enabled, the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationStreamEXT'
---     /must/ have set the @rasterizationStream@ to zero
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-sampleLocationsPerPixel-07482# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state enabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state disabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then the @sampleLocationsPerPixel@ member of @pSampleLocationsInfo@
---     in the last call to
---     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
---     /must/ equal the @rasterizationSamples@ member of the
---     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'
---     structure the bound graphics pipeline has been created with
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-sampleLocationsPerPixel-07483# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state enabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then the @sampleLocationsPerPixel@ member of @pSampleLocationsInfo@
---     in the last call to
---     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
---     /must/ equal the @rasterizationSamples@ parameter of the last call
---     to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-sampleLocationsEnable-07484# If a
---     shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, or the bound graphics pipeline was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     state enabled, and @sampleLocationsEnable@ was
---     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
---     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-vkCmdDrawClusterHUAWEI-sampleLocationsEnable-07485# If a
---     shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state enabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     state enabled, and if @sampleLocationsEnable@ was
---     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
---     then the @sampleLocationsInfo.sampleLocationGridSize.width@ in the
---     last call to
---     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
---     /must/ evenly divide
---     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@sampleLocationGridSize.width@
---     as returned by
---     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
---     with a @samples@ parameter equaling @rasterizationSamples@
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-sampleLocationsEnable-07486# If a
---     shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state enabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     state enabled, and if @sampleLocationsEnable@ was
---     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
---     then the @sampleLocationsInfo.sampleLocationGridSize.height@ in the
---     last call to
---     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
---     /must/ evenly divide
---     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@sampleLocationGridSize.height@
---     as returned by
---     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
---     with a @samples@ parameter equaling @rasterizationSamples@
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-sampleLocationsEnable-07487# If a
---     shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     state enabled, and if @sampleLocationsEnable@ was
---     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
---     the fragment shader code /must/ not statically use the extended
---     instruction @InterpolateAtSample@
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-sampleLocationsEnable-07936# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state disabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then @sampleLocationsInfo.sampleLocationGridSize.width@ /must/
---     evenly divide
---     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@sampleLocationGridSize.width@
---     as returned by
---     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
---     with a @samples@ parameter equaling the value of
---     @rasterizationSamples@ in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-sampleLocationsEnable-07937# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state disabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then @sampleLocationsInfo.sampleLocationGridSize.height@ /must/
---     evenly divide
---     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@sampleLocationGridSize.height@
---     as returned by
---     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
---     with a @samples@ parameter equaling the value of
---     @rasterizationSamples@ in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-sampleLocationsEnable-07938# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state disabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then @sampleLocationsInfo.sampleLocationsPerPixel@ /must/ equal
---     @rasterizationSamples@ in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-coverageModulationTableEnable-07488# If
---     a shader object is bound to any graphics stage or the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV'
---     state enabled, and the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV'
---     set @coverageModulationTableEnable@ to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the
---     @coverageModulationTableCount@ parameter in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableNV'
---     /must/ equal the current @rasterizationSamples@ divided by the
---     number of color samples in the current subpass
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-rasterizationSamples-07489# If the
---     @VK_NV_framebuffer_mixed_samples@ extension is enabled, and if
---     current subpass has a depth\/stencil attachment and depth test,
---     stencil test, or depth bounds test are enabled in the bound
---     pipeline, then the current @rasterizationSamples@ /must/ be the same
---     as the sample count of the depth\/stencil attachment
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-coverageToColorEnable-07490# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
---     state enabled and the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
---     set the @coverageToColorEnable@ to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the current subpass
---     /must/ have a color attachment at the location selected by the last
---     call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
---     @coverageToColorLocation@, with a
---     'Vulkan.Core10.Enums.Format.Format' of
---     'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R8_SINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R16_UINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R16_SINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R32_UINT', or
---     'Vulkan.Core10.Enums.Format.FORMAT_R32_SINT'
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-rasterizerDiscardEnable-09420# If the
---     @VK_NV_fragment_coverage_to_color@ extension is enabled, and a
---     shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
---     set the @coverageToColorEnable@ to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the current subpass
---     /must/ have a color attachment at the location selected by the last
---     call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
---     @coverageToColorLocation@, with a
---     'Vulkan.Core10.Enums.Format.Format' of
---     'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R8_SINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R16_UINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R16_SINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R32_UINT', or
---     'Vulkan.Core10.Enums.Format.FORMAT_R32_SINT'
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-coverageReductionMode-07491# If this
---     @VK_NV_coverage_reduction_mode@ extension is enabled, the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
---     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     states enabled, the current coverage reduction mode
---     @coverageReductionMode@, then the current @rasterizationSamples@,
---     and the sample counts for the color and depth\/stencil attachments
---     (if the subpass has them) /must/ be a valid combination returned by
---     'Vulkan.Extensions.VK_NV_coverage_reduction_mode.getPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV'
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-viewportCount-07492# 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_SWIZZLE_NV'
---     dynamic state enabled, 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-vkCmdDrawClusterHUAWEI-viewportCount-07493# 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_SWIZZLE_NV'
---     dynamic states enabled then the @viewportCount@ parameter in the
---     last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
---     /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-vkCmdDrawClusterHUAWEI-viewportCount-09421# If the
---     @VK_NV_viewport_swizzle@ extension is enabled, and a shader object
---     is bound to any graphics stage, then the @viewportCount@ parameter
---     in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
---     /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-vkCmdDrawClusterHUAWEI-rasterizationSamples-07494# If the
---     @VK_NV_framebuffer_mixed_samples@ extension is enabled, and if the
---     current subpass has any color attachments and @rasterizationSamples@
---     of the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     is greater than the number of color samples, then the pipeline
---     @sampleShadingEnable@ /must/ be
---     'Vulkan.Core10.FundamentalTypes.FALSE'
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-stippledLineEnable-07495# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---     or
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---     dynamic states enabled, and if the current @stippledLineEnable@
---     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
---     @lineRasterizationMode@ state is
---     'Vulkan.Extensions.VK_KHR_line_rasterization.LINE_RASTERIZATION_MODE_RECTANGULAR_KHR',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>
---     feature /must/ be enabled
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-stippledLineEnable-07496# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---     or
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---     dynamic states enabled, and if the current @stippledLineEnable@
---     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
---     @lineRasterizationMode@ state is
---     'Vulkan.Extensions.VK_KHR_line_rasterization.LINE_RASTERIZATION_MODE_BRESENHAM_KHR',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     feature /must/ be enabled
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-stippledLineEnable-07497# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---     or
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---     dynamic states enabled, and if the current @stippledLineEnable@
---     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
---     @lineRasterizationMode@ state is
---     'Vulkan.Extensions.VK_KHR_line_rasterization.LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     feature /must/ be enabled
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-stippledLineEnable-07498# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---     or
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---     dynamic states enabled, and if the current @stippledLineEnable@
---     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
---     @lineRasterizationMode@ state is
---     'Vulkan.Extensions.VK_KHR_line_rasterization.LINE_RASTERIZATION_MODE_DEFAULT_KHR',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>
---     feature /must/ be enabled and
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@strictLines@
---     /must/ be 'Vulkan.Core10.FundamentalTypes.TRUE'
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-conservativePointAndLineRasterization-07499#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT'
---     dynamic state enabled,
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-conservativePointAndLineRasterization conservativePointAndLineRasterization>
---     is not supported, and the effective primitive topology output by the
---     last pre-rasterization shader stage is a line or point, then the
---     @conservativeRasterizationMode@ set by the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetConservativeRasterizationModeEXT'
---     /must/ be
---     'Vulkan.Extensions.VK_EXT_conservative_rasterization.CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT'
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-stage-07073# If the bound pipeline was
---     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_VERTEX_BIT',
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT',
---     then
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-mesh-shader Mesh Shader Queries>
---     /must/ not be active
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-08877# If a shader object is bound
---     to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-07850# If dynamic state was
---     inherited from
---     'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV',
---     it /must/ be set in the current command buffer prior to this drawing
---     command
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-08684# If there is no bound
---     graphics pipeline,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-08685# If there is no bound
---     graphics pipeline, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellationShader>
---     feature is enabled,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-08686# If there is no bound
---     graphics pipeline, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellationShader>
---     feature is enabled,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-08687# If there is no bound
---     graphics pipeline, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometryShader>
---     feature is enabled,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-08688# If there is no bound
---     graphics pipeline,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-08689# If there is no bound
---     graphics pipeline, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
---     feature is enabled,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-08690# If there is no bound
---     graphics pipeline, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
---     feature is enabled,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-08693# If there is no bound
---     graphics pipeline, and at least one of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
---     and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
---     features is enabled, one of the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---     stages /must/ have a valid 'Vulkan.Extensions.Handles.ShaderEXT'
---     bound, and the other /must/ have no
---     'Vulkan.Extensions.Handles.ShaderEXT' bound
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-08694# If there is no bound
---     graphics pipeline, and both the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
---     and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
---     features are enabled, and a valid
---     'Vulkan.Extensions.Handles.ShaderEXT' is bound the to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---     stage, and that 'Vulkan.Extensions.Handles.ShaderEXT' was created
---     without the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
---     flag, a valid 'Vulkan.Extensions.Handles.ShaderEXT' /must/ be bound
---     to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---     stage
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-08695# If there is no bound
---     graphics pipeline, and both the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
---     and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
---     features are enabled, and a valid
---     'Vulkan.Extensions.Handles.ShaderEXT' is bound the to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---     stage, and that 'Vulkan.Extensions.Handles.ShaderEXT' was created
---     with the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
---     flag, there /must/ be no 'Vulkan.Extensions.Handles.ShaderEXT' bound
---     to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---     stage
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-08696# If there is no bound
---     graphics pipeline, and a valid 'Vulkan.Extensions.Handles.ShaderEXT'
---     is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage, there /must/ be no 'Vulkan.Extensions.Handles.ShaderEXT'
---     bound to either the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---     stage or the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---     stage
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-08698# If any graphics shader is
---     bound which was created with the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
---     flag, then all shaders created with the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
---     flag in the same
---     'Vulkan.Extensions.VK_EXT_shader_object.createShadersEXT' call
---     /must/ also be bound
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-08699# If any graphics shader is
---     bound which was created with the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
---     flag, any stages in between stages whose shaders which did not
---     create a shader with the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
---     flag as part of the same
---     'Vulkan.Extensions.VK_EXT_shader_object.createShadersEXT' call
---     /must/ not have any 'Vulkan.Extensions.Handles.ShaderEXT' bound
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-08878# All bound graphics shader
---     objects /must/ have been created with identical or identically
---     defined push constant ranges
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-08879# All bound graphics shader
---     objects /must/ have been created with identical or identically
---     defined arrays of descriptor set layouts
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-colorAttachmentCount-09372# If the
---     current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     and a
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
---     equal to @1@, a color attachment with a resolve mode of
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID',
---     and a fragment shader is bound, it /must/ not declare the
---     @DepthReplacing@ or @StencilRefReplacingEXT@ execution modes
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-pDynamicStates-08715# If the bound
---     graphics pipeline state includes a fragment shader stage, was
---     created with
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE'
---     set in
---     'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@,
---     and the fragment shader declares the @EarlyFragmentTests@ execution
---     mode and uses @OpDepthAttachmentReadEXT@, the @depthWriteEnable@
---     parameter in the last call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthWriteEnable'
---     /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-pDynamicStates-08716# If the bound
---     graphics pipeline state includes a fragment shader stage, was
---     created with
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_WRITE_MASK'
---     set in
---     'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@,
---     and the fragment shader declares the @EarlyFragmentTests@ execution
---     mode and uses @OpStencilAttachmentReadEXT@, the @writeMask@
---     parameter in the last call to
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilWriteMask' /must/
---     be @0@
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-09116# If a shader object is bound
---     to any graphics stage or the bound graphics pipeline was created
---     with
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT',
---     and the format of any color attachment is
---     'Vulkan.Core10.Enums.Format.FORMAT_E5B9G9R9_UFLOAT_PACK32', the
---     corresponding element of the @pColorWriteMasks@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     /must/ either include all of
---     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_R_BIT',
---     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_G_BIT',
---     and
---     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_B_BIT',
---     or none of them
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-maxFragmentDualSrcAttachments-09239# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blending blending>
---     is enabled for any attachment where either the source or destination
---     blend factors for that attachment
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-dsb use the secondary color input>,
---     the maximum value of @Location@ for any output attachment
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-staticuse statically used>
---     in the @Fragment@ @Execution@ @Model@ executed by this command
---     /must/ be less than
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFragmentDualSrcAttachments maxFragmentDualSrcAttachments>
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-09548# If the current render pass
---     was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     and there is no shader object bound to any graphics stage, the value
---     of each element of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingAttachmentLocationInfoKHR'::@pColorAttachmentLocations@
---     set by
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.cmdSetRenderingAttachmentLocationsKHR'
---     /must/ match the value set for the corresponding element in the
---     bound pipeline
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-09549# If the current render pass
---     was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     and there is no shader object bound to any graphics stage, input
---     attachment index mappings in the bound pipeline /must/ match those
---     set for the current render pass instance via
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR'
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-09642# If the current render pass
---     was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     with the
---     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT'
---     flag, the bound graphics pipeline /must/ have been created with
---     'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT'
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-09643# If the bound graphics
---     pipeline was created with
---     'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT',
---     the current render pass /must/ have begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     with the
---     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT'
---     flag
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-stage-06480# The bound graphics
---     pipeline /must/ not have been created with the
---     'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo'::@stage@
---     member of any element of
---     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@pStages@ set
---     to
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-07074#
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-transform-feedback Transform Feedback Queries>
---     /must/ not be active
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-07075#
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-primitives-generated Primitives Generated Queries>
---     /must/ not be active
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-pipelineStatistics-07076# The
---     @pipelineStatistics@ member used to create any active
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-pipestats Pipeline Statistics Query>
---     /must/ not contain
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT',
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT',
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT',
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT',
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT',
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT',
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT',
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT',
---     or
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT'
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-None-07819# The @pipelineStatistics@
---     member used to create any active
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#queries-pipestats Pipeline Statistics Query>
---     /must/ not contain
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_TASK_SHADER_INVOCATIONS_BIT_EXT',
---     or
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_MESH_SHADER_INVOCATIONS_BIT_EXT'
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-groupCountX-07820# @groupCountX@ /must/
---     be less than or equal to
---     'PhysicalDeviceClusterCullingShaderPropertiesHUAWEI'::@maxWorkGroupCount@[0]
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-groupCountY-07821# @groupCountY@ /must/
---     be less than or equal to
---     'PhysicalDeviceClusterCullingShaderPropertiesHUAWEI'::@maxWorkGroupCount@[1]
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-groupCountZ-07822# @groupCountZ@ /must/
---     be less than or equal to
---     'PhysicalDeviceClusterCullingShaderPropertiesHUAWEI'::@maxWorkGroupCount@[2]
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-ClusterCullingHUAWEI-07823# The current
---     pipeline bound to
---     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
---     /must/ contain a shader stage using the @ClusterCullingHUAWEI@
---     @Execution@ @Model@
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-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-vkCmdDrawClusterHUAWEI-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-renderpass# This command /must/ only be
---     called inside of a render pass instance
---
--- -   #VUID-vkCmdDrawClusterHUAWEI-videocoding# This command /must/ only
---     be called outside of a video coding scope
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
--- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Inside                                                                                                                 | Outside                                                                                                                     | Graphics                                                                                                              | Action                                                                                                                                 |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_HUAWEI_cluster_culling_shader VK_HUAWEI_cluster_culling_shader>,
--- 'Vulkan.Core10.Handles.CommandBuffer'
-cmdDrawClusterHUAWEI :: 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 ()
-cmdDrawClusterHUAWEI commandBuffer
-                       groupCountX
-                       groupCountY
-                       groupCountZ = liftIO $ do
-  let vkCmdDrawClusterHUAWEIPtr = pVkCmdDrawClusterHUAWEI (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  unless (vkCmdDrawClusterHUAWEIPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdDrawClusterHUAWEI is null" Nothing Nothing
-  let vkCmdDrawClusterHUAWEI' = mkVkCmdDrawClusterHUAWEI vkCmdDrawClusterHUAWEIPtr
-  traceAroundEvent "vkCmdDrawClusterHUAWEI" (vkCmdDrawClusterHUAWEI'
-                                               (commandBufferHandle (commandBuffer))
-                                               (groupCountX)
-                                               (groupCountY)
-                                               (groupCountZ))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdDrawClusterIndirectHUAWEI
-  :: FunPtr (Ptr CommandBuffer_T -> Buffer -> DeviceSize -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> DeviceSize -> IO ()
-
--- | vkCmdDrawClusterIndirectHUAWEI - Issue an indirect cluster culling draw
--- into a command buffer
---
--- = Description
---
--- 'cmdDrawClusterIndirectHUAWEI' behaves similarly to
--- 'cmdDrawClusterHUAWEI' 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. Note the cluster culling
--- shader pipeline only accepts 'cmdDrawClusterHUAWEI' and
--- 'cmdDrawClusterIndirectHUAWEI' as drawing commands.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-magFilter-04553# If a
---     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
---     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR',
---     @reductionMode@ equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
---     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-vkCmdDrawClusterIndirectHUAWEI-magFilter-09598# If a
---     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
---     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR' and
---     @reductionMode@ equal to either
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
---     or
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
---     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_MINMAX_BIT'
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-mipmapMode-04770# If a
---     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
---     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR',
---     @reductionMode@ equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
---     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-vkCmdDrawClusterIndirectHUAWEI-mipmapMode-09599# If a
---     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
---     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'
---     and @reductionMode@ equal to either
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
---     or
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
---     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_MINMAX_BIT'
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-unnormalizedCoordinates-09635#
---     If a 'Vulkan.Core10.Handles.Sampler' created with
---     @unnormalizedCoordinates@ equal to
---     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
---     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
---     the image view’s @levelCount@ and @layerCount@ /must/ be 1
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-unnormalizedCoordinates-09636#
---     If a 'Vulkan.Core10.Handles.Sampler' created with
---     @unnormalizedCoordinates@ equal to
---     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
---     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
---     the image view’s @viewType@ /must/ be
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D' or
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D'
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-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-vkCmdDrawClusterIndirectHUAWEI-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-vkCmdDrawClusterIndirectHUAWEI-None-07888# If a
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'
---     descriptor is accessed using atomic operations as a result of this
---     command, then the storage texel buffer’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-buffer-view-format-features format features>
---     /must/ contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT'
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-02692# If a
---     'Vulkan.Core10.Handles.ImageView' is sampled with
---     'Vulkan.Core10.Enums.Filter.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.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-02693# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_filter_cubic VK_EXT_filter_cubic>
---     extension is not enabled and any 'Vulkan.Core10.Handles.ImageView'
---     is sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as a
---     result of this command, it /must/ not have a
---     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' of
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE', or
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY'
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-filterCubic-02694# Any
---     'Vulkan.Core10.Handles.ImageView' being sampled with
---     'Vulkan.Core10.Enums.Filter.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-vkCmdDrawClusterIndirectHUAWEI-filterCubicMinmax-02695# Any
---     'Vulkan.Core10.Handles.ImageView' being sampled with
---     'Vulkan.Core10.Enums.Filter.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-vkCmdDrawClusterIndirectHUAWEI-cubicRangeClamp-09212# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-cubicRangeClamp cubicRangeClamp>
---     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
---     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
---     a result of this command /must/ not have a
---     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
---     equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-reductionMode-09213# Any
---     'Vulkan.Core10.Handles.ImageView' being sampled with a
---     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
---     equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
---     as a result of this command /must/ sample with
---     'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT'
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-selectableCubicWeights-09214#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-selectableCubicWeights selectableCubicWeights>
---     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
---     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
---     a result of this command /must/ have
---     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.SamplerCubicWeightsCreateInfoQCOM'::@cubicWeights@
---     equal to
---     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM'
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-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-vkCmdDrawClusterIndirectHUAWEI-OpTypeImage-07027# For any
---     'Vulkan.Core10.Handles.ImageView' being written as a storage image
---     where the image format field of the @OpTypeImage@ is @Unknown@, the
---     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_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-OpTypeImage-07028# For any
---     'Vulkan.Core10.Handles.ImageView' being read as a storage image
---     where the image format field of the @OpTypeImage@ is @Unknown@, the
---     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_STORAGE_READ_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-OpTypeImage-07029# For any
---     'Vulkan.Core10.Handles.BufferView' being written as a storage texel
---     buffer where the image format field of the @OpTypeImage@ is
---     @Unknown@, the view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
---     /must/ contain
---     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-OpTypeImage-07030# Any
---     'Vulkan.Core10.Handles.BufferView' being read as a storage texel
---     buffer where the image format field of the @OpTypeImage@ is
---     @Unknown@ then the view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
---     /must/ contain
---     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08600# For each set /n/
---     that is statically used by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     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' or the
---     'Vulkan.Core10.Handles.DescriptorSetLayout' array used to create the
---     current 'Vulkan.Extensions.Handles.ShaderEXT' , as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08601# For each push
---     constant that is statically used by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     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' or the
---     'Vulkan.Core10.Handles.DescriptorSetLayout' array used to create the
---     current 'Vulkan.Extensions.Handles.ShaderEXT' , as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-10068# For each array of
---     resources that is used by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     the indices used to access members of the array /must/ be less than
---     the descriptor count for the identified binding in the descriptor
---     sets used by this command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-maintenance4-08602# 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
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     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' or the
---     'Vulkan.Core10.Handles.DescriptorSetLayout' and
---     'Vulkan.Core10.PipelineLayout.PushConstantRange' arrays used to
---     create the current 'Vulkan.Extensions.Handles.ShaderEXT' , as
---     described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08114# Descriptors in each
---     bound descriptor set, specified via
---     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
---     be valid as described by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
---     if they are statically used by the 'Vulkan.Core10.Handles.Pipeline'
---     bound to the pipeline bind point used by this command and the bound
---     'Vulkan.Core10.Handles.Pipeline' was not created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08115# If the descriptors
---     used by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline
---     bind point were specified via
---     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', the
---     bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
---     without
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08116# Descriptors in
---     bound descriptor buffers, specified via
---     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
---     /must/ be valid if they are dynamically used by the
---     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
---     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
---     was created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08604# Descriptors in
---     bound descriptor buffers, specified via
---     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
---     /must/ be valid if they are dynamically used by any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     to the pipeline bind point used by this command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08117# If the descriptors
---     used by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline
---     bind point were specified via
---     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
---     the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
---     with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08119# If a descriptor is
---     dynamically used with a 'Vulkan.Core10.Handles.Pipeline' created
---     with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
---     the descriptor memory /must/ be resident
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08605# If a descriptor is
---     dynamically used with a 'Vulkan.Extensions.Handles.ShaderEXT'
---     created with a 'Vulkan.Core10.Handles.DescriptorSetLayout' that was
---     created with
---     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
---     the descriptor memory /must/ be resident
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08606# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject>
---     feature is not enabled, a valid pipeline /must/ be bound to the
---     pipeline bind point used by this command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08608# If a pipeline is
---     bound to the pipeline bind point used by this command, there /must/
---     not have been any calls to dynamic state setting commands for any
---     state specified statically in the 'Vulkan.Core10.Handles.Pipeline'
---     object bound to the pipeline bind point used by this command, since
---     that pipeline was bound
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08609# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command or any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDrawClusterIndirectHUAWEI-None-08610# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command or any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDrawClusterIndirectHUAWEI-None-08611# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command or any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDrawClusterIndirectHUAWEI-None-08607# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject>
---     feature is enabled, either a valid pipeline /must/ be bound to the
---     pipeline bind point used by this command, or a valid combination of
---     valid and 'Vulkan.Core10.APIConstants.NULL_HANDLE' shader objects
---     /must/ be bound to every supported shader stage corresponding to the
---     pipeline bind point used by this command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-uniformBuffers-06935# If any
---     stage of the 'Vulkan.Core10.Handles.Pipeline' object bound to the
---     pipeline bind point used by this command accesses a uniform buffer,
---     and that stage was created without enabling either
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT'
---     or
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT'
---     for @uniformBuffers@, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, that stage /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-vkCmdDrawClusterIndirectHUAWEI-None-08612# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, and any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDrawClusterIndirectHUAWEI-storageBuffers-06936# If any
---     stage of the 'Vulkan.Core10.Handles.Pipeline' object bound to the
---     pipeline bind point used by this command accesses a storage buffer,
---     and that stage was created without enabling either
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT'
---     or
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT'
---     for @storageBuffers@, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, that stage /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-vkCmdDrawClusterIndirectHUAWEI-None-08613# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, and any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDrawClusterIndirectHUAWEI-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
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shaders>
---     /must/ not be a protected resource
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-06550# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
---     accesses a 'Vulkan.Core10.Handles.Sampler' or
---     'Vulkan.Core10.Handles.ImageView' object that enables
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,
---     that object /must/ only be used with @OpImageSample*@ or
---     @OpImageSparseSample*@ instructions
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-ConstOffset-06551# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
---     accesses a 'Vulkan.Core10.Handles.Sampler' or
---     'Vulkan.Core10.Handles.ImageView' object that enables
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,
---     that object /must/ not use the @ConstOffset@ and @Offset@ operands
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-viewType-07752# If a
---     'Vulkan.Core10.Handles.ImageView' is accessed as a result of this
---     command, then the image view’s @viewType@ /must/ match the @Dim@
---     operand of the @OpTypeImage@ as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-image-dimensions ???>
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-format-07753# If a
---     'Vulkan.Core10.Handles.ImageView' is accessed as a result of this
---     command, then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-numericformat numeric type>
---     of the image view’s @format@ and the @Sampled@ @Type@ operand of the
---     @OpTypeImage@ /must/ match
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-OpImageWrite-08795# If a
---     'Vulkan.Core10.Handles.ImageView' created with a format other than
---     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM_KHR' 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-vkCmdDrawClusterIndirectHUAWEI-OpImageWrite-08796# If a
---     'Vulkan.Core10.Handles.ImageView' created with the format
---     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM_KHR' is accessed using
---     @OpImageWrite@ as a result of this command, then the @Type@ of the
---     @Texel@ operand of that instruction /must/ have four components
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-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-vkCmdDrawClusterIndirectHUAWEI-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-vkCmdDrawClusterIndirectHUAWEI-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-vkCmdDrawClusterIndirectHUAWEI-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-vkCmdDrawClusterIndirectHUAWEI-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-vkCmdDrawClusterIndirectHUAWEI-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-vkCmdDrawClusterIndirectHUAWEI-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-vkCmdDrawClusterIndirectHUAWEI-OpImageWeightedSampleQCOM-06971#
---     If @OpImageWeightedSampleQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-OpImageWeightedSampleQCOM-06972#
---     If @OpImageWeightedSampleQCOM@ uses a
---     'Vulkan.Core10.Handles.ImageView' as a sample weight image 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-OpImageBoxFilterQCOM-06973# If
---     @OpImageBoxFilterQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-OpImageBlockMatchSSDQCOM-06974#
---     If @OpImageBlockMatchSSDQCOM@ is used to read from an
---     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-OpImageBlockMatchSADQCOM-06975#
---     If @OpImageBlockMatchSADQCOM@ is used to read from an
---     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-OpImageBlockMatchSADQCOM-06976#
---     If @OpImageBlockMatchSADQCOM@ or OpImageBlockMatchSSDQCOM is used to
---     read from a reference image as result of this command, then the
---     specified reference coordinates /must/ not fail
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-OpImageWeightedSampleQCOM-06977#
---     If @OpImageWeightedSampleQCOM@, @OpImageBoxFilterQCOM@,
---     @OpImageBlockMatchWindowSSDQCOM@, @OpImageBlockMatchWindowSADQCOM@,
---     @OpImageBlockMatchGatherSSDQCOM@, @OpImageBlockMatchGatherSADQCOM@,
---     @OpImageBlockMatchSSDQCOM@, or @OpImageBlockMatchSADQCOM@ uses a
---     'Vulkan.Core10.Handles.Sampler' as a result of this command, then
---     the sampler /must/ have been created with
---     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-OpImageWeightedSampleQCOM-06978#
---     If any command other than @OpImageWeightedSampleQCOM@,
---     @OpImageBoxFilterQCOM@, @OpImageBlockMatchWindowSSDQCOM@,
---     @OpImageBlockMatchWindowSADQCOM@, @OpImageBlockMatchGatherSSDQCOM@,
---     @OpImageBlockMatchGatherSADQCOM@, @OpImageBlockMatchSSDQCOM@, or
---     @OpImageBlockMatchSADQCOM@ uses a 'Vulkan.Core10.Handles.Sampler' as
---     a result of this command, then the sampler /must/ not have been
---     created with
---     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-OpImageBlockMatchWindow-09215#
---     If a @OpImageBlockMatchWindow*QCOM@ or
---     @OpImageBlockMatchGather*QCOM@ instruction is used to read from an
---     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-OpImageBlockMatchWindow-09216#
---     If a @OpImageBlockMatchWindow*QCOM@ or
---     @OpImageBlockMatchGather*QCOM@ instruction is used to read from an
---     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
---     the image view’s format /must/ be a single-component format
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-OpImageBlockMatchWindow-09217#
---     If a @OpImageBlockMatchWindow*QCOM@ or
---     @OpImageBlockMatchGather*QCOM@ read from a reference image as result
---     of this command, then the specified reference coordinates /must/ not
---     fail
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07288# Any shader
---     invocation executed by this command /must/
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-termination terminate>
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-09600# If a descriptor
---     with type equal to any of
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM',
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM',
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',
---     or
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'
---     is accessed as a result of this command, the image subresource
---     identified by that descriptor /must/ be in the image layout
---     identified when the descriptor was written
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-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-vkCmdDrawClusterIndirectHUAWEI-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-vkCmdDrawClusterIndirectHUAWEI-None-07748# If any shader
---     statically accesses an input attachment, a valid descriptor /must/
---     be bound to the pipeline via a descriptor set
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-OpTypeImage-07468# If any
---     shader executed by this pipeline accesses an @OpTypeImage@ variable
---     with a @Dim@ operand of @SubpassData@, it /must/ be decorated with
---     an @InputAttachmentIndex@ that corresponds to a valid input
---     attachment in the current subpass
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07469# Input attachment
---     views accessed in a subpass /must/ be created with the same
---     'Vulkan.Core10.Enums.Format.Format' as the corresponding subpass
---     definition, and be created with a 'Vulkan.Core10.Handles.ImageView'
---     that is compatible with the attachment referenced by the subpass\'
---     @pInputAttachments@[@InputAttachmentIndex@] in the bound
---     'Vulkan.Core10.Handles.Framebuffer' as specified by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#compatibility-inputattachment Fragment Input Attachment Compatibility>
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-pDepthInputAttachmentIndex-09595#
---     Input attachment views accessed in a dynamic render pass with a
---     @InputAttachmentIndex@ referenced by
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR',
---     or no @InputAttachmentIndex@ if
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR':@pDepthInputAttachmentIndex@
---     or
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR':@pStencilInputAttachmentIndex@
---     are @NULL@, /must/ be created with a
---     'Vulkan.Core10.Handles.ImageView' that is compatible with the
---     corresponding color, depth, or stencil attachment in
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-pDepthInputAttachmentIndex-09596#
---     Input attachment views accessed in a dynamic render pass via a
---     shader object /must/ have an @InputAttachmentIndex@ if both
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR':@pDepthInputAttachmentIndex@
---     and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR':@pStencilInputAttachmentIndex@
---     are non-@NULL@
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-InputAttachmentIndex-09597# If
---     an input attachment view accessed in a dynamic render pass via a
---     shader object has an @InputAttachmentIndex@, the
---     @InputAttachmentIndex@ /must/ match an index in
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR'
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-06537# Memory backing
---     image subresources used as attachments in the current render pass
---     /must/ not be written in any way other than as an attachment by this
---     command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-09000# If a color
---     attachment is written by any prior command in this subpass or by the
---     load, store, or resolve operations for this subpass, it is not in
---     the
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
---     image layout, and either:
---
---     -   the
---         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT'
---         is set on the bound pipeline or
---
---     -   the last call to
---         'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
---         included
---         'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'
---         and
---
---         -   there is no bound graphics pipeline or
---
---         -   the bound graphics pipeline was created with
---             'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
---
---     it /must/ not be accessed in any way other than as an attachment by
---     this command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-09001# If a depth
---     attachment is written by any prior command in this subpass or by the
---     load, store, or resolve operations for this subpass, it is not in
---     the
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
---     image layout, and either:
---
---     -   the
---         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT'
---         is set on the bound pipeline or
---
---     -   the last call to
---         'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
---         included
---         'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT'
---         and
---
---         -   there is no bound graphics pipeline or
---
---         -   the bound graphics pipeline was created with
---             'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
---
---     it /must/ not be accessed in any way other than as an attachment by
---     this command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-09002# If a stencil
---     attachment is written by any prior command in this subpass or by the
---     load, store, or resolve operations for this subpass, it is not in
---     the
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
---     image layout, and either:
---
---     -   the
---         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT'
---         is set on the bound pipeline or
---
---     -   the last call to
---         'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
---         included
---         'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
---         and
---
---         -   there is no bound graphics pipeline or
---
---         -   the bound graphics pipeline was created with
---             'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
---
---     it /must/ not be accessed in any way other than as an attachment by
---     this command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-09003# If an attachment is
---     written by any prior command in this subpass or by the load, store,
---     or resolve operations for this subpass, it /must/ not be accessed in
---     any way other than as an attachment, storage image, or sampled image
---     by this command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-06539# If any previously
---     recorded command in the current subpass accessed an image
---     subresource used as an attachment in this subpass in any way other
---     than as an attachment, this command /must/ not write to that image
---     subresource as an attachment
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-06886# If the current
---     render pass instance uses a depth\/stencil attachment with a
---     read-only layout for the depth aspect,
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-depth-write depth writes>
---     /must/ be disabled
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-06887# If the current
---     render pass instance uses a depth\/stencil attachment with a
---     read-only layout for the stencil aspect, both front and back
---     @writeMask@ are not zero, and stencil test is enabled,
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-stencil all stencil ops>
---     /must/ be 'Vulkan.Core10.Enums.StencilOp.STENCIL_OP_KEEP'
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07831# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT' dynamic
---     state enabled then
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetViewport' /must/ have
---     been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07832# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR' dynamic
---     state enabled then
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetScissor' /must/ have been
---     called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07833# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_WIDTH' dynamic
---     state enabled then
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth' /must/ have
---     been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08617# If a shader object
---     is bound to any graphics stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
---     in the current command buffer set @polygonMode@ to
---     'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_LINE',
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth' /must/ have
---     been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08618# If a shader object
---     is bound to any graphics stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
---     in the current command buffer set @primitiveTopology@ to any line
---     topology, 'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08619# If a shader object
---     that outputs line primitives is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE',
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth' /must/ have
---     been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07834# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS' dynamic
---     state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @depthBiasEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBounds' or
---     'Vulkan.Extensions.VK_EXT_depth_bias_control.cmdSetDepthBias2EXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07835# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_BLEND_CONSTANTS'
---     dynamic state enabled then
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetBlendConstants' /must/
---     have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08621# If a shader object
---     is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     in the current command buffer set any element of
---     @pColorBlendEnables@ to 'Vulkan.Core10.FundamentalTypes.TRUE', and
---     the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     in the current command buffer set the same element of
---     @pColorBlendEquations@ to a
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.ColorBlendEquationEXT'
---     structure with any 'Vulkan.Core10.Enums.BlendFactor.BlendFactor'
---     member with a value of
---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_COLOR',
---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR',
---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_ALPHA', or
---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA',
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetBlendConstants' /must/
---     have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07836# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @depthBoundsTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBounds' /must/
---     have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07837# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_COMPARE_MASK'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilCompareMask'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07838# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_WRITE_MASK'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilWriteMask'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07839# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_REFERENCE'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of and @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilReference'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-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-vkCmdDrawClusterIndirectHUAWEI-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-vkCmdDrawClusterIndirectHUAWEI-None-07634# If the
---     @VK_EXT_sample_locations@ extension is enabled, a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-06666# If the
---     @VK_EXT_sample_locations@ extension is enabled, a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then
---     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07840# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CULL_MODE' dynamic
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetCullMode'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07841# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRONT_FACE' dynamic
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetFrontFace'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07843# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_TEST_ENABLE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE',
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthTestEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07844# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthWriteEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07845# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_COMPARE_OP'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @depthTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthCompareOp'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07846# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthBounds depthBounds>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthBoundsTestEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07847# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_TEST_ENABLE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilTestEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07848# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_OP' dynamic
---     state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilOp'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-viewportCount-03417# If a
---     shader object is bound to any graphics stage or a graphics pipeline
---     is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
---     dynamic state enabled, and the state is not inherited, then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-scissorCount-03418# If a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
---     dynamic state enabled, and the state is not inherited, then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-viewportCount-03419# If a
---     shader object is bound to any graphics stage or a graphics pipeline
---     is bound which 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, and the state is not inherited, then 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-vkCmdDrawClusterIndirectHUAWEI-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-vkCmdDrawClusterIndirectHUAWEI-viewportCount-04138# If the
---     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which 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 state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @viewportWScalingEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.cmdSetViewportWScalingNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08636# If the
---     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which 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 state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @viewportWScalingEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', 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-vkCmdDrawClusterIndirectHUAWEI-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-vkCmdDrawClusterIndirectHUAWEI-shadingRateImage-09233# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV'
---     and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetCoarseSampleOrderNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-shadingRateImage-09234# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which 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 state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @shadingRateImageEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetViewportShadingRatePaletteNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08637# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which 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 state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @shadingRateImageEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', 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-vkCmdDrawClusterIndirectHUAWEI-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
---     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo', 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-vkCmdDrawClusterIndirectHUAWEI-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
---     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo', 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-vkCmdDrawClusterIndirectHUAWEI-None-07878# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-exclusiveScissor exclusiveScissor>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07879# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-exclusiveScissor exclusiveScissor>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV'
---     dynamic state enabled, and the most recent call to
---     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorEnableNV'
---     in the current command buffer set any element of
---     @pExclusiveScissorEnables@ to 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then
---     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-04876# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     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 and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-04877# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-logicOp-04878# If a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_EXT'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @logicOpEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetLogicOpEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-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-vkCmdDrawClusterIndirectHUAWEI-primitiveFragmentShadingRateWithMultipleViewports-08642#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
---     limit is not supported, and any shader object bound to a graphics
---     stage writes 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-vkCmdDrawClusterIndirectHUAWEI-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-vkCmdDrawClusterIndirectHUAWEI-None-08643# If a shader object
---     is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then for each color
---     attachment in the render pass, 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 corresponding member of @pColorBlendEnables@ in the most
---     recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     in the current command buffer that affected that attachment index
---     /must/ have been 'Vulkan.Core10.FundamentalTypes.FALSE'
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-multisampledRenderToSingleSampled-07284#
---     If rasterization is not disabled in the bound graphics pipeline, and
---     none of the following is enabled:
---
---     -   the @VK_AMD_mixed_attachment_samples@ extension
---
---     -   the @VK_NV_framebuffer_mixed_samples@ extension
---
---     -   the
---         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---         feature
---
---     then @rasterizationSamples@ for the bound graphics pipeline /must/
---     be the same as the current subpass color and\/or depth\/stencil
---     attachments
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08644# If a shader object
---     is bound to any graphics stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and none of the following is
---     enabled:
---
---     -   the @VK_AMD_mixed_attachment_samples@ extension
---
---     -   the @VK_NV_framebuffer_mixed_samples@ extension
---
---     -   the
---         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---         feature
---
---     then the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     in the current command buffer /must/ have set @rasterizationSamples@
---     to be the same as the number of samples for the current render pass
---     color and\/or depth\/stencil attachments
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08876# If a shader object
---     is bound to any graphics stage, the current render pass instance
---     /must/ have been begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-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-vkCmdDrawClusterIndirectHUAWEI-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-vkCmdDrawClusterIndirectHUAWEI-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-vkCmdDrawClusterIndirectHUAWEI-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-vkCmdDrawClusterIndirectHUAWEI-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-vkCmdDrawClusterIndirectHUAWEI-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-vkCmdDrawClusterIndirectHUAWEI-viewMask-06178# If the current
---     render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the 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-vkCmdDrawClusterIndirectHUAWEI-colorAttachmentCount-06179# If
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled and the current render pass instance was
---     begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the 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-vkCmdDrawClusterIndirectHUAWEI-dynamicRenderingUnusedAttachments-08910#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and 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 an @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 bound graphics pipeline
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-dynamicRenderingUnusedAttachments-08912#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and 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 an @imageView@ equal to
---     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have the
---     corresponding element of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
---     used to create the bound pipeline equal to
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-dynamicRenderingUnusedAttachments-08911#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is enabled, and 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 an @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 bound graphics pipeline, or the corresponding
---     element of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@,
---     if it exists, /must/ be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-colorAttachmentCount-09362# If
---     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@
---     equal to @1@, there is no shader object bound to any graphics stage,
---     and a color attachment with a resolve mode of
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID',
---     each element of the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
---     array with a @resolveImageView@ not equal to
---     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
---     with an image created with a
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value equal to the
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value used to create the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-09363# If there is no
---     shader object bound to any graphics stage, the current render pass
---     instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     and a
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
---     equal to @1@, and a color attachment with a resolve mode of
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID',
---     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 an image created with a
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value equal to the
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value used to create the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-09364# If the current
---     render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is no shader object bound to any graphics stage, and the bound
---     graphics pipeline was created with a non-zero
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value and with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have set the blend enable to
---     'Vulkan.Core10.FundamentalTypes.FALSE' prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-09365# If the current
---     render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is no shader object bound to any graphics stage, and the bound
---     graphics pipeline was created with a non-zero
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value and with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ have set @rasterizationSamples@ to
---     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' prior
---     to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-09366# If there is a
---     shader object bound to any graphics stage, and the current render
---     pass includes a color attachment that uses the
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID'
---     resolve mode, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have set blend enable to
---     'Vulkan.Core10.FundamentalTypes.FALSE' prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-rasterizationSamples-09367# If
---     there is a shader object bound to any graphics stage, and the
---     current render pass includes a color attachment that uses the
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID'
---     resolve mode, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ have set @rasterizationSamples@ to
---     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' prior
---     to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-09368# If the current
---     render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is no shader object bound to any graphics stage, and the bound
---     graphics pipeline was created with a non-zero
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value and with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
---     /must/ have set @pFragmentSize->width@ to @1@ prior to this drawing
---     command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-09369# If the current
---     render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is no shader object bound to any graphics stage, and the bound
---     graphics pipeline was created with a non-zero
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value and with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
---     /must/ have set @pFragmentSize->height@ to @1@ prior to this drawing
---     command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-pFragmentSize-09370# If there
---     is a shader object bound to any graphics stage, and the current
---     render pass includes a color attachment that uses the
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID'
---     resolve mode, then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
---     /must/ have set @pFragmentSize->width@ to @1@ prior to this drawing
---     command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-pFragmentSize-09371# If there
---     is a shader object bound to any graphics stage, and the current
---     render pass includes a color attachment that uses the
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID'
---     resolve mode, then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
---     /must/ have set @pFragmentSize->height@ to @1@ prior to this drawing
---     command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07749# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08646# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
---     feature is enabled, and a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-attachmentCount-07750# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'
---     dynamic state enabled then the @attachmentCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
---     /must/ be greater than or equal to the
---     'Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo'::@attachmentCount@
---     of the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08647# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
---     feature is enabled, and a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then the @attachmentCount@
---     parameter of most recent call to
---     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
---     in the current command buffer /must/ be greater than or equal to the
---     number of color attachments in the current render pass instance
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07751# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command for each
---     discard rectangle in
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'::@discardRectangleCount@
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07880# If the
---     @VK_EXT_discard_rectangles@ extension is enabled, a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07881# If the
---     @VK_EXT_discard_rectangles@ extension is enabled, a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @discardRectangleEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-rasterizerDiscardEnable-09236#
---     If the @VK_EXT_discard_rectangles@ extension is enabled, and a
---     shader object is bound to any graphics stage, and the most recent
---     call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEnableEXT'
---     in the current command buffer set @discardRectangleEnable@ to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-dynamicRenderingUnusedAttachments-08913#
---     If the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
---     used to create the bound graphics pipeline /must/ be equal to
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-dynamicRenderingUnusedAttachments-08914#
---     If current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->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 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->imageView@
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-dynamicRenderingUnusedAttachments-08915#
---     If the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is enabled,
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
---     used to create the bound graphics pipeline was not equal to the
---     'Vulkan.Core10.Enums.Format.Format' used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@,
---     the value of the format /must/ be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-dynamicRenderingUnusedAttachments-08916#
---     If the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
---     used to create the bound graphics pipeline /must/ be equal to
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-dynamicRenderingUnusedAttachments-08917#
---     If current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->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 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->imageView@
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-dynamicRenderingUnusedAttachments-08918#
---     If the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is enabled,
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
---     used to create the bound graphics pipeline was not equal to the
---     'Vulkan.Core10.Enums.Format.Format' used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@,
---     the value of the format /must/ be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-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_fragment_shading_rate.RenderingFragmentShadingRateAttachmentInfoKHR'::@imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the bound graphics
---     pipeline /must/ have been created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-imageView-06184# If the current
---     render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     and
---     'Vulkan.Extensions.VK_EXT_fragment_density_map.RenderingFragmentDensityMapAttachmentInfoEXT'::@imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the bound graphics
---     pipeline /must/ have been created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT'
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-colorAttachmentCount-06185# If
---     the bound pipeline was created with a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.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_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     used to create the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-pDepthAttachment-06186# If the
---     current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the bound pipeline was created with a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     structure, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
---     @depthStencilAttachmentSamples@ member of
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     used to create the bound graphics pipeline /must/ be equal to the
---     sample count used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-pStencilAttachment-06187# If
---     the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the bound pipeline was created with a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     structure, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
---     @depthStencilAttachmentSamples@ member of
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     used to create the bound graphics pipeline /must/ be equal to the
---     sample count used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-multisampledRenderToSingleSampled-07285#
---     If the bound pipeline was created without a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     structure, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---     feature is not enabled, 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 @rasterizationSamples@ for
---     the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-multisampledRenderToSingleSampled-07286#
---     If the bound pipeline was created without a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     structure, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     @rasterizationSamples@ for the bound graphics pipeline /must/ be
---     equal to the sample count used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-multisampledRenderToSingleSampled-07287#
---     If the bound pipeline was created without a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     structure, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     @rasterizationSamples@ for the bound graphics pipeline /must/ be
---     equal to the sample count used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-pNext-07935# If this command
---     has been called inside a render pass instance started with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     and the @pNext@ chain of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'
---     includes a
---     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'
---     structure with @multisampledRenderToSingleSampledEnable@ equal to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the value of
---     @rasterizationSamples@ for the bound graphics pipeline /must/ be
---     equal to
---     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'::@rasterizationSamples@
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-renderPass-06198# If the
---     current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the bound pipeline /must/ have been created with a
---     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@renderPass@
---     equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE'
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-pColorAttachments-08963# If the
---     current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is a graphics pipeline bound with a fragment shader that
---     statically writes to a color attachment, the color write mask is not
---     zero, color writes are enabled, and the corresponding element of the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
---     corresponding element of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
---     used to create the pipeline /must/ not be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-pDepthAttachment-08964# If the
---     current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is a graphics pipeline bound, depth test is enabled, depth
---     write is enabled, and the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
---     used to create the pipeline /must/ not be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-pStencilAttachment-08965# If
---     the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is a graphics pipeline bound, stencil test is enabled and the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
---     used to create the pipeline /must/ not be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-primitivesGeneratedQueryWithRasterizerDiscard-06708#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithRasterizerDiscard primitivesGeneratedQueryWithRasterizerDiscard>
---     feature is not enabled and the
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
---     query is active,
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-discard rasterization discard>
---     /must/ not be enabled
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-primitivesGeneratedQueryWithNonZeroStreams-06709#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>
---     feature is not enabled and the
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
---     query is active, the bound graphics pipeline /must/ not have been
---     created with a non-zero value in
---     'Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT'::@rasterizationStream@
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07619# If a shader object
---     is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetTessellationDomainOriginEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07620# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClamp depthClamp>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClampEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07621# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_POLYGON_MODE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07622# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07623# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-alphaToCoverageEnable-08919# If
---     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT'
---     dynamic state enabled, and @alphaToCoverageEnable@ was
---     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-fragmentoutput Fragment Output Interface>
---     /must/ contain a variable for the alpha @Component@ word in
---     @Location@ 0 at @Index@ 0
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-alphaToCoverageEnable-08920# If
---     a shader object is bound to any graphics stage, and the most recent
---     call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT'
---     in the current command buffer set @alphaToCoverageEnable@ to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-fragmentoutput Fragment Output Interface>
---     /must/ contain a variable for the alpha @Component@ word in
---     @Location@ 0 at @Index@ 0
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07624# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07625# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-alphaToOne alphaToOne>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToOneEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07626# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-logicOp logicOp>
---     feature is enabled, a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLogicOpEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07627# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08657# If a shader object
---     is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and both the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE' and there are color
---     attachments bound, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07628# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08658# If a shader object
---     is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     for any attachment set that attachment’s value in
---     @pColorBlendEnables@ to 'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07629# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08659# If a shader object
---     is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and both the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE' and there are color
---     attachments bound, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07630# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryStreams geometryStreams>
---     feature is enabled, and a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_STREAM_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationStreamEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07631# If the
---     @VK_EXT_conservative_rasterization@ extension is enabled, a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetConservativeRasterizationModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07632# If the
---     @VK_EXT_conservative_rasterization@ extension is enabled, a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @conservativeRasterizationMode@ is
---     'Vulkan.Extensions.VK_EXT_conservative_rasterization.CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT',
---     then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetExtraPrimitiveOverestimationSizeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07633# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClipEnable depthClipEnable>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT'
---     dynamic state, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07635# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-rasterizerDiscardEnable-09416#
---     If the @VK_EXT_blend_operation_advanced@ extension is enabled, and a
---     shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then at least one of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     and
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07636# If the
---     @VK_EXT_provoking_vertex@ extension is enabled, a shader object is
---     bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetProvokingVertexModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07637# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08666# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object is bound to any graphics
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
---     in the current command buffer set @polygonMode@ to
---     'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_LINE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08667# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
---     in the current command buffer set @primitiveTopology@ to any line
---     topology, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08668# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object that outputs line
---     primitives is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07638# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08669# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object is bound to any graphics
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
---     in the current command buffer set @polygonMode@ to
---     'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_LINE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08670# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
---     in the current command buffer set @primitiveTopology@ to any line
---     topology, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08671# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object that outputs line
---     primitives is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07849# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled and a shader object is bound to any graphics
---     stage, or a bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_KHR'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @stippledLineEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then
---     'Vulkan.Extensions.VK_KHR_line_rasterization.cmdSetLineStippleKHR'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07639# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClipControl depthClipControl>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipNegativeOneToOneEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-09650# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClampControl depthClampControl>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @depthClampEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_depth_clamp_control.cmdSetDepthClampRangeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07640# If the
---     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportWScalingEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07641# If the
---     @VK_NV_viewport_swizzle@ extension is enabled, and a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07642# If the
---     @VK_NV_fragment_coverage_to_color@ extension is enabled, a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07643# If the
---     @VK_NV_fragment_coverage_to_color@ extension is enabled, a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @coverageToColorEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07644# If the
---     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationModeNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07645# If the
---     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @coverageModulationMode@ is any value other than
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.COVERAGE_MODULATION_MODE_NONE_NV',
---     then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07646# If the
---     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @coverageModulationTableEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07647# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetShadingRateImageEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-pipelineFragmentShadingRate-09238#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate>
---     feature is enabled, a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07648# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-representativeFragmentTest representativeFragmentTest>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRepresentativeFragmentTestEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07649# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-coverageReductionMode coverageReductionMode>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageReductionModeNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-pColorBlendEnables-07470# If
---     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---     state enabled and the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     set @pColorBlendEnables@ for any attachment to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then for those attachments in
---     the subpass 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>
---     /must/ contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT'
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-rasterizationSamples-07471# If
---     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the current subpass does not use any color
---     and\/or depth\/stencil attachments, then the @rasterizationSamples@
---     in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ follow the rules for a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-noattachments zero-attachment subpass>
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-samples-07472# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
---     state enabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state disabled, then the @samples@ parameter in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
---     /must/ be greater or equal to the
---     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
---     parameter used to create the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-samples-07473# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
---     state and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     states enabled, then the @samples@ parameter in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
---     /must/ be greater or equal to the @rasterizationSamples@ parameter
---     in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-rasterizationSamples-07474# If
---     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---     feature is not enabled, and neither the
---     @VK_AMD_mixed_attachment_samples@ nor the
---     @VK_NV_framebuffer_mixed_samples@ extensions are enabled, then the
---     @rasterizationSamples@ in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ be the same as the current subpass color and\/or
---     depth\/stencil attachments
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-09211# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, or a shader object is bound to any graphics stage,
---     and the current render pass instance includes a
---     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'
---     structure with @multisampledRenderToSingleSampledEnable@ equal to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the
---     @rasterizationSamples@ in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ be the same as the @rasterizationSamples@ member of that
---     structure
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-firstAttachment-07476# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     calls /must/ specify an enable for all active color attachments in
---     the current subpass
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-rasterizerDiscardEnable-09417#
---     If a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     calls /must/ specify an enable for all active color attachments in
---     the current subpass
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-firstAttachment-07477# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     calls /must/ specify the blend equations for all active color
---     attachments in the current subpass where blending is enabled
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-rasterizerDiscardEnable-09418#
---     If a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and both the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE' and there are color
---     attachments bound, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     calls /must/ specify the blend equations for all active color
---     attachments in the current subpass where blending is enabled
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-firstAttachment-07478# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     calls /must/ specify the color write mask for all active color
---     attachments in the current subpass
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-rasterizerDiscardEnable-09419#
---     If a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     calls /must/ specify the color write mask for all active color
---     attachments in the current subpass
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-firstAttachment-07479# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
---     calls /must/ specify the advanced blend equations for all active
---     color attachments in the current subpass where blending is enabled
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-advancedBlendMaxColorAttachments-07480#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
---     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---     dynamic states enabled and the last calls to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     and
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
---     have enabled advanced blending, then the number of active color
---     attachments in the current subpass /must/ not exceed
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-advancedBlendMaxColorAttachments advancedBlendMaxColorAttachments>
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-primitivesGeneratedQueryWithNonZeroStreams-07481#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>
---     feature is not enabled and the
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
---     query is active, and the bound graphics pipeline was created with
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_STREAM_EXT'
---     state enabled, the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationStreamEXT'
---     /must/ have set the @rasterizationStream@ to zero
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-sampleLocationsPerPixel-07482#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state enabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state disabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then the @sampleLocationsPerPixel@ member of @pSampleLocationsInfo@
---     in the last call to
---     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
---     /must/ equal the @rasterizationSamples@ member of the
---     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'
---     structure the bound graphics pipeline has been created with
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-sampleLocationsPerPixel-07483#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state enabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then the @sampleLocationsPerPixel@ member of @pSampleLocationsInfo@
---     in the last call to
---     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
---     /must/ equal the @rasterizationSamples@ parameter of the last call
---     to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-sampleLocationsEnable-07484# If
---     a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, or the bound graphics pipeline was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     state enabled, and @sampleLocationsEnable@ was
---     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
---     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-vkCmdDrawClusterIndirectHUAWEI-sampleLocationsEnable-07485# If
---     a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state enabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     state enabled, and if @sampleLocationsEnable@ was
---     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
---     then the @sampleLocationsInfo.sampleLocationGridSize.width@ in the
---     last call to
---     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
---     /must/ evenly divide
---     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@sampleLocationGridSize.width@
---     as returned by
---     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
---     with a @samples@ parameter equaling @rasterizationSamples@
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-sampleLocationsEnable-07486# If
---     a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state enabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     state enabled, and if @sampleLocationsEnable@ was
---     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
---     then the @sampleLocationsInfo.sampleLocationGridSize.height@ in the
---     last call to
---     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
---     /must/ evenly divide
---     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@sampleLocationGridSize.height@
---     as returned by
---     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
---     with a @samples@ parameter equaling @rasterizationSamples@
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-sampleLocationsEnable-07487# If
---     a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     state enabled, and if @sampleLocationsEnable@ was
---     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
---     the fragment shader code /must/ not statically use the extended
---     instruction @InterpolateAtSample@
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-sampleLocationsEnable-07936# If
---     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state disabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then @sampleLocationsInfo.sampleLocationGridSize.width@ /must/
---     evenly divide
---     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@sampleLocationGridSize.width@
---     as returned by
---     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
---     with a @samples@ parameter equaling the value of
---     @rasterizationSamples@ in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-sampleLocationsEnable-07937# If
---     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state disabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then @sampleLocationsInfo.sampleLocationGridSize.height@ /must/
---     evenly divide
---     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@sampleLocationGridSize.height@
---     as returned by
---     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
---     with a @samples@ parameter equaling the value of
---     @rasterizationSamples@ in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-sampleLocationsEnable-07938# If
---     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state disabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then @sampleLocationsInfo.sampleLocationsPerPixel@ /must/ equal
---     @rasterizationSamples@ in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-coverageModulationTableEnable-07488#
---     If a shader object is bound to any graphics stage or the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV'
---     state enabled, and the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV'
---     set @coverageModulationTableEnable@ to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the
---     @coverageModulationTableCount@ parameter in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableNV'
---     /must/ equal the current @rasterizationSamples@ divided by the
---     number of color samples in the current subpass
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-rasterizationSamples-07489# If
---     the @VK_NV_framebuffer_mixed_samples@ extension is enabled, and if
---     current subpass has a depth\/stencil attachment and depth test,
---     stencil test, or depth bounds test are enabled in the bound
---     pipeline, then the current @rasterizationSamples@ /must/ be the same
---     as the sample count of the depth\/stencil attachment
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-coverageToColorEnable-07490# If
---     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
---     state enabled and the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
---     set the @coverageToColorEnable@ to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the current subpass
---     /must/ have a color attachment at the location selected by the last
---     call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
---     @coverageToColorLocation@, with a
---     'Vulkan.Core10.Enums.Format.Format' of
---     'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R8_SINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R16_UINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R16_SINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R32_UINT', or
---     'Vulkan.Core10.Enums.Format.FORMAT_R32_SINT'
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-rasterizerDiscardEnable-09420#
---     If the @VK_NV_fragment_coverage_to_color@ extension is enabled, and
---     a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
---     set the @coverageToColorEnable@ to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the current subpass
---     /must/ have a color attachment at the location selected by the last
---     call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
---     @coverageToColorLocation@, with a
---     'Vulkan.Core10.Enums.Format.Format' of
---     'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R8_SINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R16_UINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R16_SINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R32_UINT', or
---     'Vulkan.Core10.Enums.Format.FORMAT_R32_SINT'
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-coverageReductionMode-07491# If
---     this @VK_NV_coverage_reduction_mode@ extension is enabled, the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
---     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     states enabled, the current coverage reduction mode
---     @coverageReductionMode@, then the current @rasterizationSamples@,
---     and the sample counts for the color and depth\/stencil attachments
---     (if the subpass has them) /must/ be a valid combination returned by
---     'Vulkan.Extensions.VK_NV_coverage_reduction_mode.getPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV'
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-viewportCount-07492# 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_SWIZZLE_NV'
---     dynamic state enabled, 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-vkCmdDrawClusterIndirectHUAWEI-viewportCount-07493# 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_SWIZZLE_NV'
---     dynamic states enabled then the @viewportCount@ parameter in the
---     last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
---     /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-vkCmdDrawClusterIndirectHUAWEI-viewportCount-09421# If the
---     @VK_NV_viewport_swizzle@ extension is enabled, and a shader object
---     is bound to any graphics stage, then the @viewportCount@ parameter
---     in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
---     /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-vkCmdDrawClusterIndirectHUAWEI-rasterizationSamples-07494# If
---     the @VK_NV_framebuffer_mixed_samples@ extension is enabled, and if
---     the current subpass has any color attachments and
---     @rasterizationSamples@ of the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     is greater than the number of color samples, then the pipeline
---     @sampleShadingEnable@ /must/ be
---     'Vulkan.Core10.FundamentalTypes.FALSE'
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-stippledLineEnable-07495# If
---     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---     or
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---     dynamic states enabled, and if the current @stippledLineEnable@
---     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
---     @lineRasterizationMode@ state is
---     'Vulkan.Extensions.VK_KHR_line_rasterization.LINE_RASTERIZATION_MODE_RECTANGULAR_KHR',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>
---     feature /must/ be enabled
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-stippledLineEnable-07496# If
---     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---     or
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---     dynamic states enabled, and if the current @stippledLineEnable@
---     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
---     @lineRasterizationMode@ state is
---     'Vulkan.Extensions.VK_KHR_line_rasterization.LINE_RASTERIZATION_MODE_BRESENHAM_KHR',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     feature /must/ be enabled
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-stippledLineEnable-07497# If
---     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---     or
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---     dynamic states enabled, and if the current @stippledLineEnable@
---     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
---     @lineRasterizationMode@ state is
---     'Vulkan.Extensions.VK_KHR_line_rasterization.LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     feature /must/ be enabled
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-stippledLineEnable-07498# If
---     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---     or
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---     dynamic states enabled, and if the current @stippledLineEnable@
---     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
---     @lineRasterizationMode@ state is
---     'Vulkan.Extensions.VK_KHR_line_rasterization.LINE_RASTERIZATION_MODE_DEFAULT_KHR',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>
---     feature /must/ be enabled and
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@strictLines@
---     /must/ be 'Vulkan.Core10.FundamentalTypes.TRUE'
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-conservativePointAndLineRasterization-07499#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT'
---     dynamic state enabled,
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-conservativePointAndLineRasterization conservativePointAndLineRasterization>
---     is not supported, and the effective primitive topology output by the
---     last pre-rasterization shader stage is a line or point, then the
---     @conservativeRasterizationMode@ set by the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetConservativeRasterizationModeEXT'
---     /must/ be
---     'Vulkan.Extensions.VK_EXT_conservative_rasterization.CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT'
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-stage-07073# If the bound
---     pipeline was 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_VERTEX_BIT',
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT',
---     then
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-mesh-shader Mesh Shader Queries>
---     /must/ not be active
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08877# If a shader object
---     is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07850# If dynamic state
---     was inherited from
---     'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV',
---     it /must/ be set in the current command buffer prior to this drawing
---     command
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08684# If there is no
---     bound graphics pipeline,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08685# If there is no
---     bound graphics pipeline, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellationShader>
---     feature is enabled,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08686# If there is no
---     bound graphics pipeline, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellationShader>
---     feature is enabled,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08687# If there is no
---     bound graphics pipeline, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometryShader>
---     feature is enabled,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08688# If there is no
---     bound graphics pipeline,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08689# If there is no
---     bound graphics pipeline, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
---     feature is enabled,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08690# If there is no
---     bound graphics pipeline, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
---     feature is enabled,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08693# If there is no
---     bound graphics pipeline, and at least one of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
---     and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
---     features is enabled, one of the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---     stages /must/ have a valid 'Vulkan.Extensions.Handles.ShaderEXT'
---     bound, and the other /must/ have no
---     'Vulkan.Extensions.Handles.ShaderEXT' bound
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08694# If there is no
---     bound graphics pipeline, and both the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
---     and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
---     features are enabled, and a valid
---     'Vulkan.Extensions.Handles.ShaderEXT' is bound the to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---     stage, and that 'Vulkan.Extensions.Handles.ShaderEXT' was created
---     without the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
---     flag, a valid 'Vulkan.Extensions.Handles.ShaderEXT' /must/ be bound
---     to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---     stage
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08695# If there is no
---     bound graphics pipeline, and both the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
---     and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
---     features are enabled, and a valid
---     'Vulkan.Extensions.Handles.ShaderEXT' is bound the to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---     stage, and that 'Vulkan.Extensions.Handles.ShaderEXT' was created
---     with the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
---     flag, there /must/ be no 'Vulkan.Extensions.Handles.ShaderEXT' bound
---     to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---     stage
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08696# If there is no
---     bound graphics pipeline, and a valid
---     'Vulkan.Extensions.Handles.ShaderEXT' is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage, there /must/ be no 'Vulkan.Extensions.Handles.ShaderEXT'
---     bound to either the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---     stage or the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---     stage
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08698# If any graphics
---     shader is bound which was created with the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
---     flag, then all shaders created with the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
---     flag in the same
---     'Vulkan.Extensions.VK_EXT_shader_object.createShadersEXT' call
---     /must/ also be bound
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08699# If any graphics
---     shader is bound which was created with the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
---     flag, any stages in between stages whose shaders which did not
---     create a shader with the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
---     flag as part of the same
---     'Vulkan.Extensions.VK_EXT_shader_object.createShadersEXT' call
---     /must/ not have any 'Vulkan.Extensions.Handles.ShaderEXT' bound
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08878# All bound graphics
---     shader objects /must/ have been created with identical or
---     identically defined push constant ranges
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08879# All bound graphics
---     shader objects /must/ have been created with identical or
---     identically defined arrays of descriptor set layouts
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-colorAttachmentCount-09372# If
---     the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     and a
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
---     equal to @1@, a color attachment with a resolve mode of
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID',
---     and a fragment shader is bound, it /must/ not declare the
---     @DepthReplacing@ or @StencilRefReplacingEXT@ execution modes
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-pDynamicStates-08715# If the
---     bound graphics pipeline state includes a fragment shader stage, was
---     created with
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE'
---     set in
---     'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@,
---     and the fragment shader declares the @EarlyFragmentTests@ execution
---     mode and uses @OpDepthAttachmentReadEXT@, the @depthWriteEnable@
---     parameter in the last call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthWriteEnable'
---     /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-pDynamicStates-08716# If the
---     bound graphics pipeline state includes a fragment shader stage, was
---     created with
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_WRITE_MASK'
---     set in
---     'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@,
---     and the fragment shader declares the @EarlyFragmentTests@ execution
---     mode and uses @OpStencilAttachmentReadEXT@, the @writeMask@
---     parameter in the last call to
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilWriteMask' /must/
---     be @0@
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-09116# If a shader object
---     is bound to any graphics stage or the bound graphics pipeline was
---     created with
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT',
---     and the format of any color attachment is
---     'Vulkan.Core10.Enums.Format.FORMAT_E5B9G9R9_UFLOAT_PACK32', the
---     corresponding element of the @pColorWriteMasks@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     /must/ either include all of
---     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_R_BIT',
---     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_G_BIT',
---     and
---     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_B_BIT',
---     or none of them
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-maxFragmentDualSrcAttachments-09239#
---     If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blending blending>
---     is enabled for any attachment where either the source or destination
---     blend factors for that attachment
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-dsb use the secondary color input>,
---     the maximum value of @Location@ for any output attachment
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-staticuse statically used>
---     in the @Fragment@ @Execution@ @Model@ executed by this command
---     /must/ be less than
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFragmentDualSrcAttachments maxFragmentDualSrcAttachments>
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-09548# If the current
---     render pass was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     and there is no shader object bound to any graphics stage, the value
---     of each element of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingAttachmentLocationInfoKHR'::@pColorAttachmentLocations@
---     set by
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.cmdSetRenderingAttachmentLocationsKHR'
---     /must/ match the value set for the corresponding element in the
---     bound pipeline
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-09549# If the current
---     render pass was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     and there is no shader object bound to any graphics stage, input
---     attachment index mappings in the bound pipeline /must/ match those
---     set for the current render pass instance via
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR'
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-09642# If the current
---     render pass was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     with the
---     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT'
---     flag, the bound graphics pipeline /must/ have been created with
---     'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT'
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-09643# If the bound
---     graphics pipeline was created with
---     'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT',
---     the current render pass /must/ have begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     with the
---     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT'
---     flag
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-stage-06480# The bound graphics
---     pipeline /must/ not have been created with the
---     'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo'::@stage@
---     member of any element of
---     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@pStages@ set
---     to
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07074#
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-transform-feedback Transform Feedback Queries>
---     /must/ not be active
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07075#
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-primitives-generated Primitives Generated Queries>
---     /must/ not be active
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-pipelineStatistics-07076# The
---     @pipelineStatistics@ member used to create any active
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-pipestats Pipeline Statistics Query>
---     /must/ not contain
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT',
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT',
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT',
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT',
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT',
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT',
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT',
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT',
---     or
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT'
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-drawCount-02718# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiDrawIndirect multiDrawIndirect>
---     feature is not enabled, @drawCount@ /must/ be @0@ or @1@
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-drawCount-02719# @drawCount@
---     /must/ be less than or equal to
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxDrawIndirectCount@
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-ClusterCullingHUAWEI-07824# The
---     current pipeline bound to
---     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
---     /must/ contain a shader stage using the @ClusterCullingHUAWEI@
---     @Execution@ @Model@
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-offset-07918# @offset@ /must/
---     be a multiple of
---     'PhysicalDeviceClusterCullingShaderPropertiesHUAWEI'::@indirectBufferOffsetAlignment@
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-buffer-parameter# @buffer@
---     /must/ be a valid 'Vulkan.Core10.Handles.Buffer' handle
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-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-vkCmdDrawClusterIndirectHUAWEI-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-renderpass# This command /must/
---     only be called inside of a render pass instance
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-videocoding# This command
---     /must/ only be called outside of a video coding scope
---
--- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-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#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
--- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Inside                                                                                                                 | Outside                                                                                                                     | Graphics                                                                                                              | Action                                                                                                                                 |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_HUAWEI_cluster_culling_shader VK_HUAWEI_cluster_culling_shader>,
--- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.FundamentalTypes.DeviceSize'
-cmdDrawClusterIndirectHUAWEI :: 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)
-                             -> io ()
-cmdDrawClusterIndirectHUAWEI commandBuffer buffer offset = liftIO $ do
-  let vkCmdDrawClusterIndirectHUAWEIPtr = pVkCmdDrawClusterIndirectHUAWEI (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  unless (vkCmdDrawClusterIndirectHUAWEIPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdDrawClusterIndirectHUAWEI is null" Nothing Nothing
-  let vkCmdDrawClusterIndirectHUAWEI' = mkVkCmdDrawClusterIndirectHUAWEI vkCmdDrawClusterIndirectHUAWEIPtr
-  traceAroundEvent "vkCmdDrawClusterIndirectHUAWEI" (vkCmdDrawClusterIndirectHUAWEI'
-                                                       (commandBufferHandle (commandBuffer))
-                                                       (buffer)
-                                                       (offset))
-  pure $ ()
-
-
--- | VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI - Structure
--- describing cluster culling shader properties supported by an
--- implementation
---
--- = Description
---
--- If the 'PhysicalDeviceClusterCullingShaderPropertiesHUAWEI' 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_HUAWEI_cluster_culling_shader VK_HUAWEI_cluster_culling_shader>,
--- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PhysicalDeviceClusterCullingShaderPropertiesHUAWEI = PhysicalDeviceClusterCullingShaderPropertiesHUAWEI
-  { -- | @maxWorkGroupCount@[3] is the maximum number of local workgroups that
-    -- can be launched by a single command. These three value represent the
-    -- maximum local workgroup count in the X, Y and Z dimensions,
-    -- respectively. In the current implementation, the values of Y and Z are
-    -- both implicitly set as one. groupCountX of DrawCluster command /must/ be
-    -- less than or equal to maxWorkGroupCount[0].
-    maxWorkGroupCount :: (Word32, Word32, Word32)
-  , -- | @maxWorkGroupSize@[3] is the maximum size of a local workgroup. These
-    -- three value represent the maximum local workgroup size in the X, Y and Z
-    -- dimensions, respectively. The x, y and z sizes, as specified by the
-    -- @LocalSize@ or @LocalSizeId@ execution mode or by the object decorated
-    -- by the WorkgroupSize decoration in shader modules, /must/ be less than
-    -- or equal to the corresponding limit. In the current implementation, the
-    -- maximum workgroup size of the X dimension is 32, the others are 1.
-    maxWorkGroupSize :: (Word32, Word32, Word32)
-  , -- | @maxOutputClusterCount@ is the maximum number of output cluster a single
-    -- cluster culling shader workgroup can emit.
-    maxOutputClusterCount :: Word32
-  , -- | @indirectBufferOffsetAlignment@ indicates the alignment for cluster
-    -- drawing command buffer stride. 'cmdDrawClusterIndirectHUAWEI'::@offset@
-    -- /must/ be a multiple of this value.
-    indirectBufferOffsetAlignment :: DeviceSize
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PhysicalDeviceClusterCullingShaderPropertiesHUAWEI)
-#endif
-deriving instance Show PhysicalDeviceClusterCullingShaderPropertiesHUAWEI
-
-instance ToCStruct PhysicalDeviceClusterCullingShaderPropertiesHUAWEI where
-  withCStruct x f = allocaBytes 56 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PhysicalDeviceClusterCullingShaderPropertiesHUAWEI{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    let pMaxWorkGroupCount' = lowerArrayPtr ((p `plusPtr` 16 :: Ptr (FixedArray 3 Word32)))
-    case (maxWorkGroupCount) of
-      (e0, e1, e2) -> do
-        poke (pMaxWorkGroupCount' :: Ptr Word32) (e0)
-        poke (pMaxWorkGroupCount' `plusPtr` 4 :: Ptr Word32) (e1)
-        poke (pMaxWorkGroupCount' `plusPtr` 8 :: Ptr Word32) (e2)
-    let pMaxWorkGroupSize' = lowerArrayPtr ((p `plusPtr` 28 :: Ptr (FixedArray 3 Word32)))
-    case (maxWorkGroupSize) of
-      (e0, e1, e2) -> do
-        poke (pMaxWorkGroupSize' :: Ptr Word32) (e0)
-        poke (pMaxWorkGroupSize' `plusPtr` 4 :: Ptr Word32) (e1)
-        poke (pMaxWorkGroupSize' `plusPtr` 8 :: Ptr Word32) (e2)
-    poke ((p `plusPtr` 40 :: Ptr Word32)) (maxOutputClusterCount)
-    poke ((p `plusPtr` 48 :: Ptr DeviceSize)) (indirectBufferOffsetAlignment)
-    f
-  cStructSize = 56
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    let pMaxWorkGroupCount' = lowerArrayPtr ((p `plusPtr` 16 :: Ptr (FixedArray 3 Word32)))
-    case ((zero, zero, zero)) of
-      (e0, e1, e2) -> do
-        poke (pMaxWorkGroupCount' :: Ptr Word32) (e0)
-        poke (pMaxWorkGroupCount' `plusPtr` 4 :: Ptr Word32) (e1)
-        poke (pMaxWorkGroupCount' `plusPtr` 8 :: Ptr Word32) (e2)
-    let pMaxWorkGroupSize' = lowerArrayPtr ((p `plusPtr` 28 :: Ptr (FixedArray 3 Word32)))
-    case ((zero, zero, zero)) of
-      (e0, e1, e2) -> do
-        poke (pMaxWorkGroupSize' :: Ptr Word32) (e0)
-        poke (pMaxWorkGroupSize' `plusPtr` 4 :: Ptr Word32) (e1)
-        poke (pMaxWorkGroupSize' `plusPtr` 8 :: Ptr Word32) (e2)
-    poke ((p `plusPtr` 40 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 48 :: Ptr DeviceSize)) (zero)
-    f
-
-instance FromCStruct PhysicalDeviceClusterCullingShaderPropertiesHUAWEI where
-  peekCStruct p = do
-    let pmaxWorkGroupCount = lowerArrayPtr @Word32 ((p `plusPtr` 16 :: Ptr (FixedArray 3 Word32)))
-    maxWorkGroupCount0 <- peek @Word32 ((pmaxWorkGroupCount `advancePtrBytes` 0 :: Ptr Word32))
-    maxWorkGroupCount1 <- peek @Word32 ((pmaxWorkGroupCount `advancePtrBytes` 4 :: Ptr Word32))
-    maxWorkGroupCount2 <- peek @Word32 ((pmaxWorkGroupCount `advancePtrBytes` 8 :: Ptr Word32))
-    let pmaxWorkGroupSize = lowerArrayPtr @Word32 ((p `plusPtr` 28 :: Ptr (FixedArray 3 Word32)))
-    maxWorkGroupSize0 <- peek @Word32 ((pmaxWorkGroupSize `advancePtrBytes` 0 :: Ptr Word32))
-    maxWorkGroupSize1 <- peek @Word32 ((pmaxWorkGroupSize `advancePtrBytes` 4 :: Ptr Word32))
-    maxWorkGroupSize2 <- peek @Word32 ((pmaxWorkGroupSize `advancePtrBytes` 8 :: Ptr Word32))
-    maxOutputClusterCount <- peek @Word32 ((p `plusPtr` 40 :: Ptr Word32))
-    indirectBufferOffsetAlignment <- peek @DeviceSize ((p `plusPtr` 48 :: Ptr DeviceSize))
-    pure $ PhysicalDeviceClusterCullingShaderPropertiesHUAWEI
-             ((maxWorkGroupCount0, maxWorkGroupCount1, maxWorkGroupCount2))
-             ((maxWorkGroupSize0, maxWorkGroupSize1, maxWorkGroupSize2))
-             maxOutputClusterCount
-             indirectBufferOffsetAlignment
-
-instance Storable PhysicalDeviceClusterCullingShaderPropertiesHUAWEI where
-  sizeOf ~_ = 56
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero PhysicalDeviceClusterCullingShaderPropertiesHUAWEI where
-  zero = PhysicalDeviceClusterCullingShaderPropertiesHUAWEI
-           (zero, zero, zero)
-           (zero, zero, zero)
-           zero
-           zero
-
-
--- | VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI - Structure
--- describing whether cluster culling shader is enabled
---
--- = Description
---
--- If the 'PhysicalDeviceClusterCullingShaderFeaturesHUAWEI' 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. 'PhysicalDeviceClusterCullingShaderFeaturesHUAWEI' /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_HUAWEI_cluster_culling_shader VK_HUAWEI_cluster_culling_shader>,
--- 'Vulkan.Core10.FundamentalTypes.Bool32',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PhysicalDeviceClusterCullingShaderFeaturesHUAWEI (es :: [Type]) = PhysicalDeviceClusterCullingShaderFeaturesHUAWEI
-  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
-    next :: Chain es
-  , -- | #features-clustercullingShader# @clustercullingShader@ specifies whether
-    -- cluster culling shader is supported.
-    clustercullingShader :: Bool
-  , -- | #features-multiviewClusterCullingShader# @multiviewClusterCullingShader@
-    -- specifies whether multiview is supported.
-    multiviewClusterCullingShader :: Bool
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PhysicalDeviceClusterCullingShaderFeaturesHUAWEI (es :: [Type]))
-#endif
-deriving instance Show (Chain es) => Show (PhysicalDeviceClusterCullingShaderFeaturesHUAWEI es)
-
-instance Extensible PhysicalDeviceClusterCullingShaderFeaturesHUAWEI where
-  extensibleTypeName = "PhysicalDeviceClusterCullingShaderFeaturesHUAWEI"
-  setNext PhysicalDeviceClusterCullingShaderFeaturesHUAWEI{..} next' = PhysicalDeviceClusterCullingShaderFeaturesHUAWEI{next = next', ..}
-  getNext PhysicalDeviceClusterCullingShaderFeaturesHUAWEI{..} = next
-  extends :: forall e b proxy. Typeable e => proxy e -> (Extends PhysicalDeviceClusterCullingShaderFeaturesHUAWEI e => b) -> Maybe b
-  extends _ f
-    | Just Refl <- eqT @e @PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI = Just f
-    | otherwise = Nothing
-
-instance ( Extendss PhysicalDeviceClusterCullingShaderFeaturesHUAWEI es
-         , PokeChain es ) => ToCStruct (PhysicalDeviceClusterCullingShaderFeaturesHUAWEI es) where
-  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PhysicalDeviceClusterCullingShaderFeaturesHUAWEI{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI)
-    pNext'' <- fmap castPtr . ContT $ withChain (next)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
-    lift $ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (clustercullingShader))
-    lift $ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (multiviewClusterCullingShader))
-    lift $ f
-  cStructSize = 24
-  cStructAlignment = 8
-  pokeZeroCStruct p f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI)
-    pNext' <- fmap castPtr . ContT $ withZeroChain @es
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
-    lift $ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
-    lift $ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))
-    lift $ f
-
-instance ( Extendss PhysicalDeviceClusterCullingShaderFeaturesHUAWEI es
-         , PeekChain es ) => FromCStruct (PhysicalDeviceClusterCullingShaderFeaturesHUAWEI es) where
-  peekCStruct p = do
-    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
-    next <- peekChain (castPtr pNext)
-    clustercullingShader <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
-    multiviewClusterCullingShader <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
-    pure $ PhysicalDeviceClusterCullingShaderFeaturesHUAWEI
-             next
-             (bool32ToBool clustercullingShader)
-             (bool32ToBool multiviewClusterCullingShader)
-
-instance es ~ '[] => Zero (PhysicalDeviceClusterCullingShaderFeaturesHUAWEI es) where
-  zero = PhysicalDeviceClusterCullingShaderFeaturesHUAWEI
-           ()
-           zero
-           zero
-
-
--- | VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI - Structure
--- describing whether cluster culling shader support VRS
---
--- == Valid Usage (Implicit)
+-- IA stage can use these variables to fetch vertices of a visible cluster
+-- and drive vertex shaders to shading these vertices.
+--
+-- Note that CCS do not work with geometry or tessellation shaders, but
+-- both IA and vertex shaders are preserved. Vertex shaders are still used
+-- for vertex position shading, instead of directly outputting transformed
+-- vertices from the compute shader. This makes CCS more suitable for
+-- mobile GPUs.
+--
+-- == New Commands
+--
+-- -   'cmdDrawClusterHUAWEI'
+--
+-- -   'cmdDrawClusterIndirectHUAWEI'
+--
+-- == New Structures
+--
+-- -   Extending 'PhysicalDeviceClusterCullingShaderFeaturesHUAWEI':
+--
+--     -   'PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceClusterCullingShaderFeaturesHUAWEI'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDeviceClusterCullingShaderPropertiesHUAWEI'
+--
+-- == New Enum Constants
+--
+-- -   'HUAWEI_CLUSTER_CULLING_SHADER_EXTENSION_NAME'
+--
+-- -   'HUAWEI_CLUSTER_CULLING_SHADER_SPEC_VERSION'
+--
+-- -   Extending
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlagBits2':
+--
+--     -   'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QueryPipelineStatisticFlagBits':
+--
+--     -   'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_CLUSTER_CULLING_SHADER_INVOCATIONS_BIT_HUAWEI'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits':
+--
+--     -   'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_CLUSTER_CULLING_BIT_HUAWEI'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_VRS_FEATURES_HUAWEI'
+--
+-- == New Built-In Variables
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-indexcounthuawei IndexCountHUAWEI>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-vertexcounthuawei VertexCountHUAWEI>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-instancecounthuawei InstanceCountHUAWEI>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-firstindexhuawei FirstIndexHUAWEI>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-firstvertexhuawei FirstVertexHUAWEI>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-vertexoffsethuawei VertexOffsetHUAWEI>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-firstinstancehuawei FirstInstanceHUAWEI>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-clusteridhuawei ClusterIDHUAWEI>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-clustershadingratehuawei ClusterShadingRateHUAWEI>
+--
+-- == New SPIR-V Capability
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-ClusterCullingShadingHUAWEI ClusterCullingShadingHUAWEI>
+--
+-- == Sample Code
+--
+-- Example of cluster culling in a GLSL shader
+--
+-- > #extension GL_HUAWEI_cluster_culling_shader: enable
+-- >
+-- > #define GPU_WARP_SIZE                   32
+-- > #define GPU_GROUP_SIZE                  GPU_WARP_SIZE
+-- >
+-- > #define GPU_CLUSTER_PER_INVOCATION      1
+-- > #define GPU_CLUSTER_PER_WORKGROUP       (GPU_GROUP_SIZE * GPU_CLUSTER_PER_INVOCATION)
+-- >
+-- > // Number of threads per workgroup
+-- > // - 1D only
+-- > // - warpsize = 32
+-- > layout(local_size_x=GPU_GROUP_SIZE, local_size_y=1, local_size_z=1) in;
+-- >
+-- > #define GPU_DRAW_BUFFER_BINDING             0
+-- > #define GPU_INSTANCE_DESCRIPTOR_BINDING     1
+-- >
+-- > struct BoundingSphere
+-- > {
+-- >   vec3 center;
+-- >   float radius;
+-- > };
+-- >
+-- > struct InstanceData
+-- > {
+-- >   mat4 mvp_matrix;                      // mvp matrix.
+-- >   vec4 frustum_planes[6];               // six frustum planes
+-- >   mat4 model_matrix_transpose_inverse;  // inverse transpose of model matrix.
+-- >   vec3 view_origin;                     // view original
+-- > };
+-- >
+-- > struct InstanceDescriptor
+-- > {
+-- >   uint begin;
+-- >   uint end;
+-- >   uint cluster_count;
+-- >   uint debug;
+-- >   BoundingSphere sphere;
+-- >   InstanceData instance_data;
+-- > };
+-- >
+-- > struct DrawElementsCommand{
+-- >   uint indexcount;
+-- >   uint instanceCount;
+-- >   uint firstIndex;
+-- >   int  vertexoffset;
+-- >   uint firstInstance;
+-- >   uint cluster_id;
+-- > };
+-- >
+-- > // indexed mode
+-- > out gl_PerClusterHUAWEI{
+-- >   uint gl_IndexCountHUAWEI;
+-- >   uint gl_InstanceCountHUAWEI;
+-- >   uint gl_FirstIndexHUAWEI;
+-- >   int  gl_VertexOffsetHUAWEI;
+-- >   uint gl_FirstInstanceHUAWEI;
+-- >   uint gl_ClusterIDHUAWEI;
+-- >   uint gl_ClusterShadingRateHUAWEI;
+-- > };
+-- >
+-- > layout(binding = GPU_DRAW_BUFFER_BINDING, std430) buffer draw_indirect_ssbo
+-- > {
+-- >         DrawElementsCommand draw_commands[];
+-- > };
+-- >
+-- > layout(binding = GPU_INSTANCE_DESCRIPTOR_BINDING, std430) buffer instance_descriptor_ssbo
+-- > {
+-- >         InstanceDescriptor instance_descriptors[];
+-- > };
+-- >
+-- >
+-- > float Distance(uint instance_id)
+-- > {
+-- >     vec3 v = normalize(instance_descriptor[instance_id].sphere.center -
+-- >                      instance_descriptor[instance_id].instance_data.view_origin);
+-- >     float dist = sqrt(dot(v,v));
+-- >
+-- >     return dist;
+-- > }
+-- >
+-- > bool isSphereOutsideFrustum( vec3 sphere_center, float sphere_radius )
+-- > {
+-- >   bool isInside = false;
+-- >
+-- >   for(int i = 0; i < 6; i++)
+-- >   {
+-- >       isInside = isInside ||
+-- >       (dot(instance_descriptors[instance_id].instance_data.frustum_planes[i].xyz,
+-- >       sphere_center) + instance_descriptors[instance_id].instance_data.frustum_planes[i].w <
+-- >       sphere_radius);
+-- >   }
+-- >   return isInside;
+-- > }
+-- >
+-- >
+-- > void main()
+-- > {
+-- >     // get instance description
+-- >     instance_id = gl_GlobalInvocationID.x;
+-- >     InstanceDescriptor inst_desc = instance_descriptors[instance_id];
+-- >
+-- >     //instance based culling
+-- >     bool render = !isSphereOutsideFrustum(inst_desc.sphere.center, inst_desc.sphere.radius);
+-- >
+-- >     if (render)
+-- >     {
+-- >         // calculate distance
+-- >         float distance = Distance(instance_id);
+-- >
+-- >         // update shading rate built-in variable
+-- >         if(distance > 0.7)
+-- >             gl_ClusterShadingRateHUAWEI =
+-- >                 gl_ShadingRateFlag4VerticalPixelsEXT | gl_ShadingRateFlag4HorizontalPixelsEXT;
+-- >         else if(distance > 0.3)
+-- >             gl_ClusterShadingRateHUAWEI =
+-- >                 gl_ShadingRateFlag2VerticalPixelsEXT | gl_ShadingRateFlag2HorizontalPixelsEXT;
+-- >         else
+-- >             gl_ClusterShadingRateHUAWEI = 0;
+-- >
+-- >         // this is a visible cluster, update built-in output variable.
+-- >         // in case of indexed mode:
+-- >         gl_IndexCountHUAWEI     = draw_commands[cluster_id].indexcount;
+-- >         gl_InstanceCountHUAWEI  = draw_commands[cluster_id].instanceCount;
+-- >         gl_FirstIndexHUAWEI     = draw_commands[cluster_id].firstIndex;
+-- >         gl_VertexOffsetHUAWEI   = draw_commands[cluster_id].vertexoffset;
+-- >         gl_FirstInstanceHUAWEI  = draw_commands[cluster_id].firstInstance;
+-- >         gl_ClusterIDHUAWEI      = draw_commands[cluster_id].cluster_id;
+-- >
+-- >         // emit built-in output variables as a drawing command to subsequent
+-- >         // rendering pipeline.
+-- >         dispatchClusterHUAWEI();
+-- >     }
+-- > }
+--
+-- Example of graphics pipeline creation with cluster culling shader
+--
+-- > // create a cluster culling shader stage info structure.
+-- > VkPipelineShaderStageCreateInfo ccsStageInfo{};
+-- > ccsStageInfo.sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO;
+-- > ccsStageInfo.stage = VK_SHADER_STAGE_CLUSTER_CULLING_BIT_HUAWEI;
+-- > ccsStageInfo.module = clustercullingshaderModule;
+-- > ccsStageInfo.pName =  "main";
+-- >
+-- > // pipeline shader stage creation
+-- > VkPipelineShaderStageCreateInfo shaderStages[] = { ccsStageInfo, vertexShaderStageInfo, fragmentShaderStageInfo };
+-- >
+-- > // create graphics pipeline
+-- > VkGraphicsPipelineCreateInfo pipelineInfo{};
+-- > pipelineInfo.sType = VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO;
+-- > pipelineInfo.stageCount = 3;
+-- > pipelineInfo.pStage = shaderStages;
+-- > pipelineInfo.pVertexInputState = &vertexInputInfo;
+-- > // ...
+-- > VkPipeline graphicsPipeline;
+-- > VkCreateGraphicsPipelines(device, VK_NULL_HANDLE, 1, &pipelineInfo, nullptr, &graphicsPipeline);
+--
+-- Example of launching the execution of cluster culling shader
+--
+-- > vkCmdBindPipeline(commandBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, graphicsPipeline);
+-- > vkCmdDrawClusterHUAWEI(commandBuffer, groupCountX, 1, 1);
+-- > vkCmdEndRenderPass(commandBuffer);
+--
+-- == Version History
+--
+-- -   Revision 1, 2022-11-18 (YuChang Wang)
+--
+--     -   Internal revisions
+--
+-- -   Revision 2, 2023-04-02 (Jon Leech)
+--
+--     -   Grammar edits.
+--
+-- -   Revision 3, 2023-08-21 (YuChang Wang)
+--
+--     -   Add per-cluster shading rate.
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_HUAWEI_cluster_culling_shader Vulkan Specification>.
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_HUAWEI_cluster_culling_shader  ( cmdDrawClusterHUAWEI
+                                                           , cmdDrawClusterIndirectHUAWEI
+                                                           , PhysicalDeviceClusterCullingShaderPropertiesHUAWEI(..)
+                                                           , PhysicalDeviceClusterCullingShaderFeaturesHUAWEI(..)
+                                                           , PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI(..)
+                                                           , HUAWEI_CLUSTER_CULLING_SHADER_SPEC_VERSION
+                                                           , pattern HUAWEI_CLUSTER_CULLING_SHADER_SPEC_VERSION
+                                                           , HUAWEI_CLUSTER_CULLING_SHADER_EXTENSION_NAME
+                                                           , pattern HUAWEI_CLUSTER_CULLING_SHADER_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 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 Vulkan.CStruct.Utils (advancePtrBytes)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.CStruct.Utils (lowerArrayPtr)
+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.Dynamic (DeviceCmds(pVkCmdDrawClusterHUAWEI))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdDrawClusterIndirectHUAWEI))
+import Vulkan.Core10.FundamentalTypes (DeviceSize)
+import Vulkan.CStruct.Extends (Extends)
+import Vulkan.CStruct.Extends (Extendss)
+import Vulkan.CStruct.Extends (Extensible(..))
+import Vulkan.CStruct.Extends (PeekChain)
+import Vulkan.CStruct.Extends (PeekChain(..))
+import Vulkan.CStruct.Extends (PokeChain)
+import Vulkan.CStruct.Extends (PokeChain(..))
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_VRS_FEATURES_HUAWEI))
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdDrawClusterHUAWEI
+  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Word32 -> Word32 -> IO ()
+
+-- | vkCmdDrawClusterHUAWEI - Draw cluster culling work items
+--
+-- = Description
+--
+-- When the command is executed,a global workgroup consisting of
+-- groupCountX*groupCountY*groupCountZ local workgroup is assembled. Note
+-- that the cluster culling shader pipeline only accepts
+-- 'cmdDrawClusterHUAWEI' and 'cmdDrawClusterIndirectHUAWEI' as drawing
+-- commands.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-magFilter-04553# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
+--     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR',
+--     @reductionMode@ equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
+--     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-vkCmdDrawClusterHUAWEI-magFilter-09598# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
+--     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR' and
+--     @reductionMode@ equal to either
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
+--     or
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
+--     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_MINMAX_BIT'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-mipmapMode-04770# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
+--     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR',
+--     @reductionMode@ equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
+--     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-vkCmdDrawClusterHUAWEI-mipmapMode-09599# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
+--     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'
+--     and @reductionMode@ equal to either
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
+--     or
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
+--     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_MINMAX_BIT'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-unnormalizedCoordinates-09635# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the image view’s @levelCount@ and @layerCount@ /must/ be 1
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-08609# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the image view’s @viewType@ /must/ be
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D' or
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-08610# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the sampler /must/ not be used with any of the SPIR-V
+--     @OpImageSample*@ or @OpImageSparseSample*@ instructions with
+--     @ImplicitLod@, @Dref@ or @Proj@ in their name
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-08611# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the sampler /must/ not be used with any of the SPIR-V
+--     @OpImageSample*@ or @OpImageSparseSample*@ instructions that
+--     includes a LOD bias or any offset values
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-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-vkCmdDrawClusterHUAWEI-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-vkCmdDrawClusterHUAWEI-None-07888# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'
+--     descriptor is accessed using atomic operations as a result of this
+--     command, then the storage texel buffer’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-buffer-view-format-features format features>
+--     /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-02692# If a
+--     'Vulkan.Core10.Handles.ImageView' is sampled with
+--     'Vulkan.Core10.Enums.Filter.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.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-02693# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_filter_cubic VK_EXT_filter_cubic>
+--     extension is not enabled and any 'Vulkan.Core10.Handles.ImageView'
+--     is sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as a
+--     result of this command, it /must/ not have a
+--     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' of
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE', or
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-filterCubic-02694# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with
+--     'Vulkan.Core10.Enums.Filter.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-vkCmdDrawClusterHUAWEI-filterCubicMinmax-02695# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with
+--     'Vulkan.Core10.Enums.Filter.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-vkCmdDrawClusterHUAWEI-cubicRangeClamp-09212# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-cubicRangeClamp cubicRangeClamp>
+--     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
+--     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
+--     a result of this command /must/ not have a
+--     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
+--     equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-reductionMode-09213# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with a
+--     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
+--     equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
+--     as a result of this command /must/ sample with
+--     'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-selectableCubicWeights-09214# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-selectableCubicWeights selectableCubicWeights>
+--     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
+--     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
+--     a result of this command /must/ have
+--     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.SamplerCubicWeightsCreateInfoQCOM'::@cubicWeights@
+--     equal to
+--     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-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-vkCmdDrawClusterHUAWEI-OpTypeImage-07027# For any
+--     'Vulkan.Core10.Handles.ImageView' being written as a storage image
+--     where the image format field of the @OpTypeImage@ is @Unknown@, the
+--     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_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-OpTypeImage-07028# For any
+--     'Vulkan.Core10.Handles.ImageView' being read as a storage image
+--     where the image format field of the @OpTypeImage@ is @Unknown@, the
+--     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_STORAGE_READ_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-OpTypeImage-07029# For any
+--     'Vulkan.Core10.Handles.BufferView' being written as a storage texel
+--     buffer where the image format field of the @OpTypeImage@ is
+--     @Unknown@, the view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
+--     /must/ contain
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-OpTypeImage-07030# Any
+--     'Vulkan.Core10.Handles.BufferView' being read as a storage texel
+--     buffer where the image format field of the @OpTypeImage@ is
+--     @Unknown@ then the view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
+--     /must/ contain
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-08600# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
+--     was created with a pipeline layout and statically uses a set /n/, a
+--     descriptor set /must/ have been bound to /n/ at the same pipeline
+--     bind point, with layouts compatible for set /n/ with the layout(s)
+--     used to create the shader, as described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptors-compatibility ???>
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-08601# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
+--     was created with a pipeline layout or specified push constant ranges
+--     and statically uses a push constant value, that value /must/ have
+--     been set for the same pipeline bind point, with push constant ranges
+--     that are
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptors-compatibility compatible>
+--     with the push constant range used to create the shader
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-10068# For each array of resources
+--     that is used by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
+--     the indices used to access members of the array /must/ be less than
+--     the descriptor count for the identified binding in the descriptor
+--     sets used by this command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-08114# Descriptors in each bound
+--     descriptor set, specified via
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
+--     be valid if they are accessed as described by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
+--     by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
+--     point used by this command and the bound
+--     'Vulkan.Core10.Handles.Pipeline' was not created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-imageLayout-00344# If an image
+--     descriptor is accessed by a shader, the
+--     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' /must/ match the
+--     subresource accessible from the 'Vulkan.Core10.Handles.ImageView' 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>
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-08115# If the descriptors used by
+--     the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
+--     point were specified via
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', the
+--     bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     without
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-08116# Descriptors in bound
+--     descriptor buffers, specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     /must/ be valid if they are dynamically used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
+--     was created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-08604# Descriptors in bound
+--     descriptor buffers, specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     /must/ be valid if they are dynamically used by any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     to the pipeline bind point used by this command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-08117# If the descriptors used by
+--     the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
+--     point were specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-08119# If a descriptor is
+--     dynamically used with a 'Vulkan.Core10.Handles.Pipeline' created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     the descriptor memory /must/ be resident
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-08605# If a descriptor is
+--     dynamically used with a 'Vulkan.Extensions.Handles.ShaderEXT'
+--     created with a 'Vulkan.Core10.Handles.DescriptorSetLayout' that was
+--     created with
+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     the descriptor memory /must/ be resident
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-08606# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject>
+--     feature is not enabled, a valid pipeline /must/ be bound to the
+--     pipeline bind point used by this command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-08608# If a pipeline is bound to
+--     the pipeline bind point used by this command, there /must/ not have
+--     been any calls to dynamic state setting commands for any state
+--     specified statically in the 'Vulkan.Core10.Handles.Pipeline' object
+--     bound to the pipeline bind point used by this command, since that
+--     pipeline was bound
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-uniformBuffers-06935# If any stage of
+--     the 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline
+--     bind point used by this command accesses a uniform buffer, and that
+--     stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @uniformBuffers@, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /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-vkCmdDrawClusterHUAWEI-None-08612# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, and any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     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-vkCmdDrawClusterHUAWEI-storageBuffers-06936# If any stage of
+--     the 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline
+--     bind point used by this command accesses a storage buffer, and that
+--     stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @storageBuffers@, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /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-vkCmdDrawClusterHUAWEI-None-08613# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, and any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     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-vkCmdDrawClusterHUAWEI-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
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shaders>
+--     /must/ not be a protected resource
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-viewType-07752# If a
+--     'Vulkan.Core10.Handles.ImageView' is accessed as a result of this
+--     command, then the image view’s @viewType@ /must/ match the @Dim@
+--     operand of the @OpTypeImage@ as described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-image-dimensions ???>
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-format-07753# If a
+--     'Vulkan.Core10.Handles.ImageView' or
+--     'Vulkan.Core10.Handles.BufferView' is accessed as a result of this
+--     command, then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-numericformat numeric type>
+--     of the view’s @format@ and the @Sampled@ @Type@ operand of the
+--     @OpTypeImage@ /must/ match
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-OpImageWrite-08795# If a
+--     'Vulkan.Core10.Handles.ImageView' created with a format other than
+--     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM' 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-vkCmdDrawClusterHUAWEI-OpImageWrite-08796# If a
+--     'Vulkan.Core10.Handles.ImageView' created with the format
+--     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM' is accessed using
+--     @OpImageWrite@ as a result of this command, then the @Type@ of the
+--     @Texel@ operand of that instruction /must/ have four components
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-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-vkCmdDrawClusterHUAWEI-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-vkCmdDrawClusterHUAWEI-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-vkCmdDrawClusterHUAWEI-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-vkCmdDrawClusterHUAWEI-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-vkCmdDrawClusterHUAWEI-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-vkCmdDrawClusterHUAWEI-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-vkCmdDrawClusterHUAWEI-OpImageSampleWeightedQCOM-06971# If
+--     @OpImageSampleWeightedQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-OpImageSampleWeightedQCOM-06972# If
+--     @OpImageSampleWeightedQCOM@ uses a 'Vulkan.Core10.Handles.ImageView'
+--     as a sample weight image 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-OpImageBoxFilterQCOM-06973# If
+--     @OpImageBoxFilterQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-OpImageBlockMatchSSDQCOM-06974# If
+--     @OpImageBlockMatchSSDQCOM@ is used to read from an
+--     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
+--     or
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_SXD_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-OpImageBlockMatchSADQCOM-12420# If
+--     @OpImageBlockMatchSADQCOM@ is used to read from an
+--     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
+--     or
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_SXD_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-OpImageBlockMatchSADQCOM-06976# If
+--     @OpImageBlockMatchSADQCOM@ or OpImageBlockMatchSSDQCOM is used to
+--     read from a reference image as result of this command, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-blockMatchExtendedClampToEdge blockMatchExtendedClampToEdge>
+--     feature is not enabled or the /input/ sampler was not created with
+--     both @addressModeU@ and @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--     then the specified reference coordinates /must/ not fail
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-OpImageSampleWeightedQCOM-06977# If
+--     @OpImageSampleWeightedQCOM@, @OpImageBoxFilterQCOM@,
+--     @OpImageBlockMatchWindowSSDQCOM@, @OpImageBlockMatchWindowSADQCOM@,
+--     @OpImageBlockMatchGatherSSDQCOM@, @OpImageBlockMatchGatherSADQCOM@,
+--     @OpImageBlockMatchSSDQCOM@, or @OpImageBlockMatchSADQCOM@ uses a
+--     'Vulkan.Core10.Handles.Sampler' as a result of this command, then
+--     the sampler /must/ have been created with
+--     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-OpImageSampleWeightedQCOM-06978# If any
+--     command other than @OpImageSampleWeightedQCOM@,
+--     @OpImageBoxFilterQCOM@, @OpImageBlockMatchWindowSSDQCOM@,
+--     @OpImageBlockMatchWindowSADQCOM@, @OpImageBlockMatchGatherSSDQCOM@,
+--     @OpImageBlockMatchGatherSADQCOM@, @OpImageBlockMatchSSDQCOM@, or
+--     @OpImageBlockMatchSADQCOM@ uses a 'Vulkan.Core10.Handles.Sampler' as
+--     a result of this command, then the sampler /must/ not have been
+--     created with
+--     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-OpImageBlockMatchWindow-09215# If a
+--     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     instruction is used to read from an
+--     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-OpImageBlockMatchWindow-09216# If a
+--     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     instruction is used to read from an
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the image view’s format /must/ be a single-component format
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-OpImageBlockMatchWindow-09217# If a
+--     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     read from a reference image as result of this command, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-blockMatchExtendedClampToEdge blockMatchExtendedClampToEdge>
+--     feature is not enabled or the /input/ sampler was not created with
+--     both @addressModeU@ and @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--     then the specified reference coordinates /must/ not fail
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-OpImageBlockMatchWindow-12421# If a
+--     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     instruction uses a 'Vulkan.Core10.Handles.Sampler' as a result of
+--     this command, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-blockMatchExtendedClampToEdge blockMatchExtendedClampToEdge>
+--     is not enabled, the /input/ sampler /must/ not have been created
+--     with either @addressModeU@ or @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-addressModeU-12422# If a
+--     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     instruction uses a 'Vulkan.Core10.Handles.Sampler' as a result of
+--     this command, and the /input/ sampler was created with either
+--     @addressModeU@ or @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE',
+--     then the sampler /must/ have been created with both @addressModeU@
+--     and @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-07288# Any shader invocation
+--     executed by this command /must/
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-termination terminate>
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-09600# If a descriptor with type
+--     equal to any of
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',
+--     or
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'
+--     is accessed as a result of this command, all image subresources
+--     identified by that descriptor /must/ be in the image layout
+--     identified when the descriptor was written
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-micromap-11636# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command through an
+--     @OpRayQueryProceedKHR@ operation , the @VK_EXT_opacity_micromap@
+--     extension is not enabled, and the acceleration structure is built
+--     using geometry with a
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapKHR'
+--     structure included in its @pNext@ chain, the shader /must/ have
+--     specified a @OpacityMicromapIdKHR@ execution mode with its
+--     specialization constant operand equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-micromap-11637# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command and the
+--     acceleration structure was constructed through deserialization, all
+--     micromap arrays referenced by the acceleration structure that were
+--     not replaced by an acceleration structure update command /must/ have
+--     been deserialized using the serialized data of the corresponding
+--     micromaps used to originally build the acceleration structure prior
+--     to the execution of this command on the device
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-micromap-11638# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command and the
+--     acceleration structure is built using geometry with an @indexBuffer@
+--     containing both
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.OpacityMicromapSpecialIndexKHR'
+--     values and indices into an associated micromap array, any
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command /must/ not have been created with @flags@ that
+--     includes
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_KHR'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-micromap-11639# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command and the
+--     acceleration structure is built using geometry with an @indexBuffer@
+--     containing both
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.OpacityMicromapSpecialIndexKHR'
+--     values and indices into an associated micromap array, any
+--     'Vulkan.Extensions.Handles.ShaderEXT' that accessed the descriptor
+--     /must/ not have been created with @flags@ that includes
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-commandBuffer-10746# The
+--     'Vulkan.Core10.Handles.DeviceMemory' object allocated from a
+--     'Vulkan.Core10.DeviceInitialization.MemoryHeap' with the
+--     'Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_TILE_MEMORY_BIT_QCOM'
+--     property that is bound to a resource accessed as a result of this
+--     command /must/ be the active
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-bind-tile-memory bound tile memory object>
+--     in @commandBuffer@
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-10678# If this command is recorded
+--     inside a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-tile-shading tile shading render pass>
+--     instance, the stages corresponding to the pipeline bind point used
+--     by this command /must/ only include
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT',
+--     and\/or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-10679# If this command is recorded
+--     where
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model>
+--     is enabled, there /must/ be no access to any image while the image
+--     was be transitioned to the
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
+--     layout
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-pDescription-09900# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the
+--     underlying 'Vulkan.Extensions.Handles.TensorARM' object /must/ have
+--     been created with the
+--     'Vulkan.Extensions.VK_ARM_tensors.TENSOR_USAGE_SHADER_BIT_ARM' usage
+--     flag set
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-dimensionCount-09905# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the @Rank@
+--     of the @OpTypeTensorARM@ of the tensor resource variable /must/ be
+--     equal to the @dimensionCount@ provided via
+--     'Vulkan.Extensions.VK_ARM_tensors.TensorCreateInfoARM'::@pDescription@
+--     when creating the underlying 'Vulkan.Extensions.Handles.TensorARM'
+--     object
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-OpTypeTensorARM-09906# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the element
+--     type of the @OpTypeTensorARM@ of the tensor resource variable /must/
+--     be
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-tensor-formats compatible>
+--     with the 'Vulkan.Core10.Enums.Format.Format' of the
+--     'Vulkan.Extensions.Handles.TensorViewARM' used for the access
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-11297# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses a @OpTypeStruct@ decorated with @Block@ or
+--     @BufferBlock@ using that mapping, the calculated offset for the
+--     resource heap /must/ be a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-bufferDescriptorAlignment bufferDescriptorAlignment>
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-11298# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses an @OpTypeImage@ or @OpTypeSampledImage@ using
+--     that mapping, the calculated offset for the resource heap /must/ be
+--     a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-imageDescriptorAlignment imageDescriptorAlignment>
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-11299# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses an @OpTypeSampler@ or @OpTypeSampledImage@
+--     using that mapping, the calculated offset for the sampler heap
+--     /must/ be a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-samplerDescriptorAlignment samplerDescriptorAlignment>
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-11397# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses an @OpTypeTensorARM@ using that mapping, the
+--     calculated offset for the resource heap /must/ be a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-tensorDescriptorAlignment tensorDescriptorAlignment>
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-11300# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a
+--     multiple of 4
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-11301# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' backed by physical
+--     memory at every offset specified by each mapping
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-11302# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-11304# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a
+--     multiple of 8
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-11305# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' backed by physical
+--     memory at every offset specified by each mapping
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-11306# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address pointed to by the address in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-11308# For each
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps descriptor heap>
+--     that is statically used by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
+--     either directly or via a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>,
+--     a valid descriptor heap /must/ be bound
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-11309# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     was created as a 'Vulkan.Extensions.Handles.ShaderEXT' with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag or as part of a pipeline with the
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag, execution of this command /must/ not result in any descriptor
+--     read accessing data outside of the user range of the respective heap
+--     bound by @vkCmdBind*HeapEXT@ commands
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-11372# If any stage of the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command accesses a uniform buffer or uniform
+--     texel buffer through a descriptor in the bound resource heap, that
+--     stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @uniformBuffers@, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /must/ not access values outside
+--     of the range of the descriptor specified via
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+--     when the descriptor was written
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-11373# If any stage of the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command accesses a storage buffer or storage
+--     texel buffer through a descriptor in the bound resource heap, that
+--     stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @storageBuffers@, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /must/ not access values outside
+--     of the range of the descriptor specified by
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+--     when the descriptor was written
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-11374# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, and any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     to the pipeline bind point used by this command accesses a uniform
+--     buffer, uniform texel buffer, storage buffer, or storage texel
+--     buffer, that shader /must/ not access values outside of the range of
+--     the buffer as specified by
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+--     when the descriptor was written
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-pBindInfo-11375# If any
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     uses an embedded sampler via a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>,
+--     the value of @pBindInfo->reservedRangeSize@ set for
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.cmdBindSamplerHeapEXT'
+--     /must/ be greater than or equal to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minSamplerHeapReservedRangeWithEmbedded minSamplerHeapReservedRangeWithEmbedded>
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-11376# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     was created as a 'Vulkan.Extensions.Handles.ShaderEXT' with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag or as part of a pipeline with the
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag, and that shader statically uses a push constant value, that
+--     value /must/ have been set by
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.cmdPushDataEXT'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-11398# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_DATA_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_DATA_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_RESOURCE_HEAP_DATA_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the access
+--     /must/ not be
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-execution-memory-access-bounds out of bounds>
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-11437# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the buffer from
+--     which the address in push data was queried /must/ have been created
+--     with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-11438# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a uniform buffer using that mapping, the
+--     address that the uniform buffer is mapped to /must/ have been
+--     queried from a buffer created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-11441# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a uniform buffer using that mapping, the
+--     address that the uniform buffer is mapped to /must/ be aligned to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minUniformBufferOffsetAlignment minUniformBufferOffsetAlignment>
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-11439# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a storage buffer using that mapping, the
+--     address that the storage buffer is mapped to /must/ have been
+--     queried from a buffer created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_STORAGE_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-11442# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a storage buffer using that mapping, the
+--     address that the storage buffer is mapped to /must/ be aligned to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minStorageBufferOffsetAlignment minStorageBufferOffsetAlignment>
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-11485# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses an acceleration structure using that mapping,
+--     the address that the acceleration structure is mapped to /must/ be
+--     an acceleration structure address retrieved from a
+--     'Vulkan.Extensions.Handles.AccelerationStructureKHR' object via
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.getAccelerationStructureDeviceAddressKHR'
+--     or handle retrieved from a
+--     'Vulkan.Extensions.Handles.AccelerationStructureNV' object via
+--     'Vulkan.Extensions.VK_NV_ray_tracing.getAccelerationStructureHandleNV'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-index-11450# If a shader uses a sampler
+--     descriptor to sample an image as a result of this command, and that
+--     sampler descriptor uses a custom border color with an index defined
+--     by
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.SamplerCustomBorderColorIndexCreateInfoEXT',
+--     the value of
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.SamplerCustomBorderColorIndexCreateInfoEXT'::@index@
+--     /must/ have been registered before this command was recorded, and
+--     still be registered during the sampling operation, with an
+--     identically defined color
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-protectedNoFault-11455# If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, a pipeline is bound to the pipeline bind point
+--     used by this command, or a shader is bound to a shader stage used by
+--     this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     the address that the resource is mapped to /must/ have been queried
+--     from a buffer created without the
+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT'
+--     create flag set
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-protectedNoFault-11456# If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, a pipeline is bound to the pipeline bind point
+--     used by this command, or a shader is bound to a shader stage used by
+--     this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     the address of the indirect memory /must/ have been queried from a
+--     buffer created without the
+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT'
+--     create flag set
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-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.GraphicsPipeline.GraphicsPipelineCreateInfo'
+--     structure specified when creating the
+--     'Vulkan.Core10.Handles.Pipeline' bound to
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-subpass-02685# The subpass index of the
+--     current render pass /must/ be equal to the @subpass@ member of the
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'
+--     structure specified when creating the
+--     'Vulkan.Core10.Handles.Pipeline' bound to
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-OpTypeImage-07468# If any shader
+--     executed by this pipeline accesses an @OpTypeImage@ variable with a
+--     @Dim@ operand of @SubpassData@, it /must/ be decorated with an
+--     @InputAttachmentIndex@ that corresponds to a valid input attachment
+--     in the current subpass
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-07469# Input attachment views
+--     accessed in a subpass /must/ be created with the same
+--     'Vulkan.Core10.Enums.Format.Format' as the corresponding subpass
+--     definition, and be created with a 'Vulkan.Core10.Handles.ImageView'
+--     that is compatible with the attachment referenced by the subpass\'
+--     @pInputAttachments@[@InputAttachmentIndex@] in the bound
+--     'Vulkan.Core10.Handles.Framebuffer' as specified by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#compatibility-inputattachment Fragment Input Attachment Compatibility>
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-pDepthInputAttachmentIndex-09595# Input
+--     attachment views accessed in a dynamic render pass with a
+--     @InputAttachmentIndex@ referenced by
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo',
+--     or no @InputAttachmentIndex@ if
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pDepthInputAttachmentIndex@
+--     or
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pStencilInputAttachmentIndex@
+--     are @NULL@, /must/ be created with a
+--     'Vulkan.Core10.Handles.ImageView' that is compatible with the
+--     corresponding color, depth, or stencil attachment in
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-pDepthInputAttachmentIndex-09596# Input
+--     attachment views accessed in a dynamic render pass via a shader
+--     object /must/ have an @InputAttachmentIndex@ if both
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pDepthInputAttachmentIndex@
+--     and
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pStencilInputAttachmentIndex@
+--     are non-@NULL@
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-InputAttachmentIndex-09597# If an input
+--     attachment view accessed in a dynamic render pass via a shader
+--     object has an @InputAttachmentIndex@, the @InputAttachmentIndex@
+--     /must/ match an index in
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-06537# Memory backing image
+--     subresources used as attachments in the current render pass /must/
+--     not be written in any way other than as an attachment by this
+--     command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-10795# If a color attachment is
+--     written by any prior command in this subpass or by the load, store,
+--     or resolve operations for this subpass, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT' on
+--     that attachment, it /must/ not be accessed in any way other than as
+--     an attachment by this command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-10796# If a depth attachment is
+--     written by any prior command in this subpass or by the load, store,
+--     or resolve operations for this subpass, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' on
+--     that attachment, it /must/ not be accessed in any way other than as
+--     an attachment by this command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-10797# If a stencil attachment is
+--     written by any prior command in this subpass or by the load, store,
+--     or resolve operations for this subpass, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
+--     on that attachment, it /must/ not be accessed in any way other than
+--     as an attachment by this command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-12338# If a color attachment is
+--     read in this command in any way other than as an attachment, or has
+--     been read by any prior command in this subpass as a non-attachment,
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT' on
+--     that attachment, the color attachment /must/ not be written to by
+--     this command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-12339# If a depth attachment is
+--     read in this command in any way other than as an attachment, or has
+--     been read by any prior command in this subpass as a non-attachment,
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' on
+--     that attachment, the depth attachment /must/ not be written to by
+--     this command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-12340# If a stencil attachment is
+--     read in this command in any way other than as an attachment, or has
+--     been read by any prior command in this subpass as a non-attachment,
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
+--     on that attachment, the stencil attachment /must/ not be written to
+--     by this command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-09003# If an attachment is written
+--     by any prior command in this subpass or by the load, store, or
+--     resolve operations for this subpass, it /must/ not be accessed in
+--     any way other than as an attachment, storage image, or sampled image
+--     by this command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-06886# If the current render pass
+--     instance uses a depth\/stencil attachment with a read-only layout
+--     for the depth aspect,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-depth-write depth writes>
+--     /must/ be disabled
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-06887# If the current render pass
+--     instance uses a depth\/stencil attachment with a read-only layout
+--     for the stencil aspect, both front and back @writeMask@ are not
+--     zero, and stencil test is enabled,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-stencil all stencil ops>
+--     /must/ be 'Vulkan.Core10.Enums.StencilOp.STENCIL_OP_KEEP'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-07831# If the bound graphics
+--     pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT' dynamic
+--     state enabled then
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetViewport' /must/ have
+--     been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-07832# If the bound graphics
+--     pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR' dynamic
+--     state enabled then
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetScissor' /must/ have been
+--     called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-08617# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_WIDTH' dynamic
+--     state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line topology class, then
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth' /must/ have
+--     been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-07834# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS' dynamic
+--     state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @depthBiasEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBias' or
+--     'Vulkan.Extensions.VK_EXT_depth_bias_control.cmdSetDepthBias2EXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-07835# If a shader object is bound
+--     to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_BLEND_CONSTANTS'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and an active color
+--     attachment
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @blendEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE' with a
+--     blend equations where any
+--     'Vulkan.Core10.Enums.BlendFactor.BlendFactor' member is
+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_COLOR',
+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR',
+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_ALPHA', or
+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA',
+--     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetBlendConstants'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-07836# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @depthBoundsTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBounds' /must/
+--     have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-07837# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_COMPARE_MASK'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilCompareMask'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-07838# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_WRITE_MASK'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilWriteMask'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-07839# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_REFERENCE'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of and @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilReference'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-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-vkCmdDrawClusterHUAWEI-sampleLocationsEnable-02689# If the
+--     bound graphics pipeline was created with
+--     'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@
+--     set to 'Vulkan.Core10.FundamentalTypes.TRUE', then the active depth
+--     attachment /must/ have been created with the
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'
+--     bit set
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-07634# If the
+--     @VK_EXT_sample_locations@ extension is enabled, a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-06666# If the
+--     @VK_EXT_sample_locations@ extension is enabled, a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-07840# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CULL_MODE' dynamic
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetCullMode'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-07841# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRONT_FACE' dynamic
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetFrontFace'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-07843# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_TEST_ENABLE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE',
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthTestEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-07844# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @depthTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthWriteEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-07845# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_COMPARE_OP'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @depthTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthCompareOp'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-07846# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthBounds depthBounds>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthBoundsTestEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-07847# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_TEST_ENABLE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilTestEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-07848# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_OP' dynamic
+--     state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilOp'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-viewportCount-03417# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
+--     dynamic state enabled, and the state is not inherited, then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-scissorCount-03418# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
+--     dynamic state enabled, and the state is not inherited, then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-viewportCount-03419# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     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, and the state is not inherited, then 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-vkCmdDrawClusterHUAWEI-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-vkCmdDrawClusterHUAWEI-viewportCount-04138# If the
+--     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which 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 state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @viewportWScalingEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.cmdSetViewportWScalingNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-08636# If the
+--     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which 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 state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @viewportWScalingEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', 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-vkCmdDrawClusterHUAWEI-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-vkCmdDrawClusterHUAWEI-shadingRateImage-09233# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV'
+--     and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetCoarseSampleOrderNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-shadingRateImage-09234# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which 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 state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @shadingRateImageEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetViewportShadingRatePaletteNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-08637# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which 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 state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @shadingRateImageEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', 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-vkCmdDrawClusterHUAWEI-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
+--     'Vulkan.Core10.GraphicsPipeline.PipelineViewportStateCreateInfo',
+--     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-vkCmdDrawClusterHUAWEI-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
+--     'Vulkan.Core10.GraphicsPipeline.PipelineViewportStateCreateInfo',
+--     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-vkCmdDrawClusterHUAWEI-None-07878# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-exclusiveScissor exclusiveScissor>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-07879# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-exclusiveScissor exclusiveScissor>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV'
+--     dynamic state enabled, and the most recent call to
+--     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorEnableNV'
+--     in the current command buffer set any element of
+--     @pExclusiveScissorEnables@ to 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then
+--     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-04876# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which 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 and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-04877# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-logicOp-04878# If a shader object is
+--     bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @logicOpEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetLogicOpEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-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-vkCmdDrawClusterHUAWEI-primitiveFragmentShadingRateWithMultipleViewports-08642#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
+--     limit is not supported, and any shader object bound to a graphics
+--     stage writes 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-vkCmdDrawClusterHUAWEI-blendEnable-04727# If a shader object
+--     is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then for each color
+--     attachment, 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 corresponding
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @blendEnable@ /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-08644# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and none of the following is
+--     enabled:
+--
+--     -   the @VK_AMD_mixed_attachment_samples@ extension
+--
+--     -   the @VK_NV_framebuffer_mixed_samples@ extension
+--
+--     -   the
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
+--         feature
+--
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizationSamples@ /must/ be the same as the current color
+--     and\/or depth\/stencil attachments
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-08876# If a shader object is bound
+--     to any graphics stage, the current render pass instance /must/ have
+--     been begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-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-vkCmdDrawClusterHUAWEI-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-vkCmdDrawClusterHUAWEI-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-vkCmdDrawClusterHUAWEI-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-vkCmdDrawClusterHUAWEI-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-vkCmdDrawClusterHUAWEI-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-vkCmdDrawClusterHUAWEI-viewMask-06178# If the current render
+--     pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the 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-vkCmdDrawClusterHUAWEI-colorAttachmentCount-06179# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled and the current render pass instance was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the 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-vkCmdDrawClusterHUAWEI-dynamicRenderingUnusedAttachments-08910#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and 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 an @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 bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-dynamicRenderingUnusedAttachments-08912#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and 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 an @imageView@ equal to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have the
+--     corresponding element of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
+--     used to create the bound pipeline equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-dynamicRenderingUnusedAttachments-08911#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled, and 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 an @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 bound graphics pipeline, or the corresponding
+--     element of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@,
+--     if it exists, /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-colorAttachmentCount-09362# If 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@
+--     equal to @1@, there is no shader object bound to any graphics stage,
+--     and a color attachment with a resolve mode of
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID',
+--     each element of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
+--     array with a @resolveImageView@ not equal to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
+--     with an image created with a
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value equal to the
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value used to create the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-09363# If there is no shader
+--     object bound to any graphics stage, the current render pass instance
+--     was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and a
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
+--     equal to @1@, and a color attachment with a resolve mode of
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID',
+--     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 an image created with a
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value equal to the
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value used to create the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-09364# If the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there is no shader object bound to any graphics stage, and the bound
+--     graphics pipeline was created with a non-zero
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value and with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
+--     /must/ have set the blend enable to
+--     'Vulkan.Core10.FundamentalTypes.FALSE' prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-09365# If the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there is no shader object bound to any graphics stage, and the bound
+--     graphics pipeline was created with a non-zero
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value and with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     /must/ have set @rasterizationSamples@ to
+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' prior
+--     to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-09366# If there is a shader object
+--     bound to any graphics stage, and the current render pass includes a
+--     color attachment that uses the
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID'
+--     resolve mode, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
+--     /must/ have set blend enable to
+--     'Vulkan.Core10.FundamentalTypes.FALSE' prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-rasterizationSamples-09367# If there is
+--     a shader object bound to any graphics stage, and the current render
+--     pass includes a color attachment that uses the
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID'
+--     resolve mode, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     /must/ have set @rasterizationSamples@ to
+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' prior
+--     to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-09368# If the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there is no shader object bound to any graphics stage, and the bound
+--     graphics pipeline was created with a non-zero
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value and with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     /must/ have set @pFragmentSize->width@ to @1@ prior to this drawing
+--     command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-09369# If the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there is no shader object bound to any graphics stage, and the bound
+--     graphics pipeline was created with a non-zero
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value and with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     /must/ have set @pFragmentSize->height@ to @1@ prior to this drawing
+--     command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-pFragmentSize-09370# If there is a
+--     shader object bound to any graphics stage, and the current render
+--     pass includes a color attachment that uses the
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID'
+--     resolve mode, then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     /must/ have set @pFragmentSize->width@ to @1@ prior to this drawing
+--     command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-pFragmentSize-09371# If there is a
+--     shader object bound to any graphics stage, and the current render
+--     pass includes a color attachment that uses the
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID'
+--     resolve mode, then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     /must/ have set @pFragmentSize->height@ to @1@ prior to this drawing
+--     command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-07749# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
+--     feature is enabled, a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-attachmentCount-07750# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
+--     feature is enabled, a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then the @attachmentCount@
+--     parameter of most recent call to
+--     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
+--     in the current command buffer /must/ be greater than or equal to the
+--     number of active color attachments
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-07751# If the
+--     @VK_EXT_discard_rectangles@ extension is enabled, a graphics
+--     pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_EXT'
+--     dynamic state enabled and the @pNext@ chain of
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo' included
+--     a
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'
+--     structure, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @discardRectangleEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command for each
+--     discard rectangle in
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'::@discardRectangleCount@
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-rasterizerDiscardEnable-09236# If the
+--     @VK_EXT_discard_rectangles@ extension is enabled, a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_EXT'
+--     dynamic state enabled and the @pNext@ chain of
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo' did not
+--     include a
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'
+--     structure, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @discardRectangleEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command for each
+--     discard rectangle in
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.PhysicalDeviceDiscardRectanglePropertiesEXT'::@maxDiscardRectangles@
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-07880# If the
+--     @VK_EXT_discard_rectangles@ extension is enabled, a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-07881# If the
+--     @VK_EXT_discard_rectangles@ extension is enabled, a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @discardRectangleEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleModeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-dynamicRenderingUnusedAttachments-08913#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
+--     used to create the bound graphics pipeline /must/ be equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-dynamicRenderingUnusedAttachments-08914#
+--     If current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->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 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->imageView@
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-dynamicRenderingUnusedAttachments-08915#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
+--     used to create the bound graphics pipeline was not equal to the
+--     'Vulkan.Core10.Enums.Format.Format' used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@,
+--     the value of the format /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-dynamicRenderingUnusedAttachments-08916#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
+--     used to create the bound graphics pipeline /must/ be equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-dynamicRenderingUnusedAttachments-08917#
+--     If current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->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 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->imageView@
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-dynamicRenderingUnusedAttachments-08918#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
+--     used to create the bound graphics pipeline was not equal to the
+--     'Vulkan.Core10.Enums.Format.Format' used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@,
+--     the value of the format /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-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_fragment_shading_rate.RenderingFragmentShadingRateAttachmentInfoKHR'::@imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the bound graphics
+--     pipeline /must/ have been created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-dynamicRenderingLocalRead-11797# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingLocalRead dynamicRenderingLocalRead>
+--     feature is enabled, the
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_LOCAL_READ_CONCURRENT_ACCESS_CONTROL_BIT_KHR'
+--     flag is specified, and an attachment is being used as a feedback
+--     loop as specified by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#rendering-attachment-input-attachment-feedback >,
+--     'Vulkan.Extensions.VK_KHR_maintenance10.RenderingAttachmentFlagsInfoKHR'::@flags@
+--     for that attachment /must/ include
+--     'Vulkan.Extensions.VK_KHR_maintenance10.RENDERING_ATTACHMENT_INPUT_ATTACHMENT_FEEDBACK_BIT_KHR'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-imageView-06184# If the current render
+--     pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and
+--     'Vulkan.Extensions.VK_EXT_fragment_density_map.RenderingFragmentDensityMapAttachmentInfoEXT'::@imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the bound graphics
+--     pipeline /must/ have been created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-layers-10831# If the current render
+--     pass instance was created with
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE'
+--     or
+--     'Vulkan.Core10.Enums.RenderPassCreateFlagBits.RENDER_PASS_CREATE_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE',
+--     and the bound graphics pipeline was created with
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE',
+--     then the current render pass instance /must/ have a @layers@ value
+--     less than or equal to
+--     'Vulkan.Extensions.VK_VALVE_fragment_density_map_layered.PipelineFragmentDensityMapLayeredCreateInfoVALVE'::@maxFragmentDensityMapLayers@
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-colorAttachmentCount-06185# If the
+--     bound pipeline was created with a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.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_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     used to create the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-pDepthAttachment-06186# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the bound pipeline was created with a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     structure, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
+--     @depthStencilAttachmentSamples@ member of
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     used to create the bound graphics pipeline /must/ be equal to the
+--     sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-pStencilAttachment-06187# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the bound pipeline was created with a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     structure, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
+--     @depthStencilAttachmentSamples@ member of
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     used to create the bound graphics pipeline /must/ be equal to the
+--     sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-multisampledRenderToSingleSampled-07285#
+--     If the bound pipeline was created without a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     structure, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
+--     feature is not enabled, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, 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 @rasterizationSamples@ for
+--     the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-multisampledRenderToSingleSampled-07286#
+--     If the bound pipeline was created without a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     structure, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
+--     feature is not enabled, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     @rasterizationSamples@ for the bound graphics pipeline /must/ be
+--     equal to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-multisampledRenderToSingleSampled-07287#
+--     If the bound pipeline was created without a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     structure, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
+--     feature is not enabled, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     @rasterizationSamples@ for the bound graphics pipeline /must/ be
+--     equal to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-pNext-07935# If this command is called
+--     inside a render pass instance started with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     and the @pNext@ chain of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'
+--     includes a
+--     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'
+--     structure with @multisampledRenderToSingleSampledEnable@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then the value of
+--     @rasterizationSamples@ for the bound graphics pipeline /must/ be
+--     equal to
+--     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'::@rasterizationSamples@
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-renderPass-06198# If the current render
+--     pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the bound pipeline /must/ have been created with a
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'::@renderPass@
+--     equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-pColorAttachments-08963# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, there is a
+--     graphics pipeline bound with a fragment shader that statically
+--     writes to a color attachment, the color write mask is not zero,
+--     color writes are enabled, and the corresponding element of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     corresponding element of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-pColorAttachments-11539# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, there is a graphics
+--     pipeline bound with a fragment shader that statically writes to a
+--     color attachment, the color write mask is not zero, color writes are
+--     enabled, and the corresponding element of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     corresponding element of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-pDepthAttachment-08964# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, there is a
+--     graphics pipeline bound, depth test is enabled, and the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-pDepthAttachment-11540# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, there is a graphics
+--     pipeline bound, depth test is enabled, and the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-pStencilAttachment-08965# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, there is a
+--     graphics pipeline bound, stencil test is enabled and the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-pStencilAttachment-11860# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, there is a graphics
+--     pipeline bound, stencil test is enabled and the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-flags-10582# If the current render pass
+--     instance was begun with a
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     call in @commandBuffer@, its
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@flags@
+--     parameter /must/ not have
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT'
+--     set unless
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_CONTENTS_INLINE_BIT_KHR'
+--     is also set
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-primitivesGeneratedQueryWithRasterizerDiscard-06708#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithRasterizerDiscard primitivesGeneratedQueryWithRasterizerDiscard>
+--     feature is not enabled and the
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
+--     query is active,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-discard rasterization discard>
+--     /must/ not be enabled
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-primitivesGeneratedQueryWithNonZeroStreams-06709#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>
+--     feature is not enabled and the
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
+--     query is active, the bound graphics pipeline /must/ not have been
+--     created with a non-zero value in
+--     'Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT'::@rasterizationStream@
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-07620# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClamp depthClamp>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClampEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-07621# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_POLYGON_MODE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-07622# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-07623# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-alphaToCoverageEnable-08919# If the
+--     bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT'
+--     dynamic state enabled, and @alphaToCoverageEnable@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-fragmentoutput Fragment Output Interface>
+--     /must/ contain a variable for the alpha @Component@ word in
+--     @Location@ 0 at @Index@ 0
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-alphaToCoverageEnable-08920# If a
+--     shader object is bound to any graphics stage, and the most recent
+--     call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT'
+--     in the current command buffer set @alphaToCoverageEnable@ to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-fragmentoutput Fragment Output Interface>
+--     /must/ contain a variable for the alpha @Component@ word in
+--     @Location@ 0 at @Index@ 0
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-07624# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-07625# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-alphaToOne alphaToOne>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToOneEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-07626# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-logicOp logicOp>
+--     feature is enabled, a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLogicOpEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-07627# If a shader object is bound
+--     to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and there are color
+--     attachments bound, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-07629# If a shader object is bound
+--     to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and there are color
+--     attachments bound, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-07630# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryStreams geometryStreams>
+--     feature is enabled, and a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
+--     stage or a graphics pipeline is bound which was created with both a
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
+--     stage and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_STREAM_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationStreamEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-07631# If the
+--     @VK_EXT_conservative_rasterization@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetConservativeRasterizationModeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-07632# If the
+--     @VK_EXT_conservative_rasterization@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @conservativeRasterizationMode@ is
+--     'Vulkan.Extensions.VK_EXT_conservative_rasterization.CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT',
+--     then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetExtraPrimitiveOverestimationSizeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-conservativePointAndLineRasterization-07499#
+--     If the @VK_EXT_conservative_rasterization@ extension is enabled,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-conservativePointAndLineRasterization conservativePointAndLineRasterization>
+--     is not supported, a shader object is bound to any graphics stage or
+--     a graphics pipeline is bound, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line or point topology class, then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @conservativeRasterizationMode@ /must/ be
+--     'Vulkan.Extensions.VK_EXT_conservative_rasterization.CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-07633# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClipEnable depthClipEnable>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT'
+--     dynamic state, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-07636# If the
+--     @VK_EXT_provoking_vertex@ extension is enabled, a shader object is
+--     bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetProvokingVertexModeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-08666# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
+--     features are enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line topology class, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-08669# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
+--     features are enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line topology class, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-07849# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
+--     features are enabled and a shader object is bound to any graphics
+--     stage, or a bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @stippledLineEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then
+--     'Vulkan.Core14.Promoted_From_VK_KHR_line_rasterization.cmdSetLineStipple'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-10608# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line topology class, and the current @lineRasterizationMode@
+--     is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_BRESENHAM'
+--     or
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH',
+--     then the current @alphaToCoverageEnable@, @alphaToOneEnable@ and
+--     @sampleShadingEnable@ states /must/ all be
+--     'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-07639# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClipControl depthClipControl>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipNegativeOneToOneEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-09650# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClampControl depthClampControl>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @depthClampEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_depth_clamp_control.cmdSetDepthClampRangeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-07640# If the
+--     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportWScalingEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-07641# If the
+--     @VK_NV_viewport_swizzle@ extension is enabled, and a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-07642# If the
+--     @VK_NV_fragment_coverage_to_color@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-07643# If the
+--     @VK_NV_fragment_coverage_to_color@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @coverageToColorEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-07644# If the
+--     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationModeNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-07645# If the
+--     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @coverageModulationMode@ is any value other than
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.COVERAGE_MODULATION_MODE_NONE_NV',
+--     then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-07646# If the
+--     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @coverageModulationTableEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-07647# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetShadingRateImageEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-pipelineFragmentShadingRate-09238# If
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-07648# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-representativeFragmentTest representativeFragmentTest>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRepresentativeFragmentTestEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-07649# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-coverageReductionMode coverageReductionMode>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageReductionModeNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-rasterizationSamples-07471# If the
+--     bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, and the current subpass does not use any color
+--     and\/or depth\/stencil attachments, then the @rasterizationSamples@
+--     in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     /must/ follow the rules for a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-noattachments zero-attachment subpass>
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-samples-07472# If the bound graphics
+--     pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
+--     state enabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state disabled, then the @samples@ parameter in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
+--     /must/ be greater or equal to the
+--     'Vulkan.Core10.GraphicsPipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
+--     parameter used to create the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-samples-07473# If the bound graphics
+--     pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
+--     state and
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     states enabled, then the @samples@ parameter in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
+--     /must/ be greater or equal to the @rasterizationSamples@ parameter
+--     in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-09211# If the bound graphics
+--     pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, or a shader object is bound to any graphics stage,
+--     and the current render pass instance includes a
+--     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'
+--     structure with @multisampledRenderToSingleSampledEnable@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then the
+--     @rasterizationSamples@ in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     /must/ be the same as the @rasterizationSamples@ member of that
+--     structure
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-firstAttachment-07476# If a shader
+--     object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--     dynamic states enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
+--     in the current command buffer prior to this drawing command /must/
+--     have set a value for all active color attachments
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-firstAttachment-07478# If a shader
+--     object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT'
+--     dynamic states enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
+--     in the current command buffer prior to this drawing command /must/
+--     have set a value for all active color attachments
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-advancedBlendMaxColorAttachments-07480#
+--     If a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
+--     and
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--     dynamic states enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and an active color
+--     attachment
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @blendEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then the
+--     number of active color attachments /must/ not exceed
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-advancedBlendMaxColorAttachments advancedBlendMaxColorAttachments>
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-10862# If a graphics pipeline is
+--     bound was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
+--     , but not the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command for all
+--     active color attachments with the @blendEnable@
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-rasterizerDiscardEnable-10863# If a
+--     graphics pipeline is bound was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT',
+--     but not the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command for all
+--     active color attachments with the @blendEnable@
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-10864# If a shader object is bound
+--     to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
+--     and
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then either
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command for all
+--     active color attachments with the @blendEnable@
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-primitivesGeneratedQueryWithNonZeroStreams-07481#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>
+--     feature is not enabled and the
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
+--     query is active, and the bound graphics pipeline was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_STREAM_EXT'
+--     state enabled, the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationStreamEXT'
+--     /must/ have set the @rasterizationStream@ to zero
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-sampleLocationsPerPixel-07482# If the
+--     bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state enabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state disabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then the @sampleLocationsPerPixel@ member of @pSampleLocationsInfo@
+--     in the last call to
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     /must/ equal the @rasterizationSamples@ member of the
+--     'Vulkan.Core10.GraphicsPipeline.PipelineMultisampleStateCreateInfo'
+--     structure the bound graphics pipeline has been created with
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-sampleLocationsPerPixel-07483# If the
+--     bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state enabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then the @sampleLocationsPerPixel@ member of @pSampleLocationsInfo@
+--     in the last call to
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     /must/ equal the @rasterizationSamples@ parameter of the last call
+--     to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-sampleLocationsEnable-07484# If a
+--     shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage, or the bound graphics pipeline was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     state enabled, and @sampleLocationsEnable@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT'
+--     then the current active depth attachment /must/ have been created
+--     with the
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'
+--     bit set
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-sampleLocationsEnable-07485# If a
+--     shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage, or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state enabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     state enabled, and if @sampleLocationsEnable@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
+--     then the @sampleLocationsInfo.maxSampleLocationGridSize.width@ in
+--     the last call to
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     /must/ evenly divide
+--     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.width@
+--     as returned by
+--     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
+--     with a @samples@ parameter equaling @rasterizationSamples@
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-sampleLocationsEnable-07486# If a
+--     shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage, or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state enabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     state enabled, and if @sampleLocationsEnable@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
+--     then the @sampleLocationsInfo.maxSampleLocationGridSize.height@ in
+--     the last call to
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     /must/ evenly divide
+--     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.height@
+--     as returned by
+--     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
+--     with a @samples@ parameter equaling @rasterizationSamples@
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-sampleLocationsEnable-07487# If a
+--     shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage, or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     state enabled, and if @sampleLocationsEnable@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
+--     the fragment shader code /must/ not statically use the extended
+--     instruction @InterpolateAtSample@
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-sampleLocationsEnable-07936# If the
+--     bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state disabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then @sampleLocationsInfo.sampleLocationGridSize.width@ /must/
+--     evenly divide
+--     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.width@
+--     as returned by
+--     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
+--     with a @samples@ parameter equaling the value of
+--     @rasterizationSamples@ in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-sampleLocationsEnable-07937# If the
+--     bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state disabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then @sampleLocationsInfo.sampleLocationGridSize.height@ /must/
+--     evenly divide
+--     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.height@
+--     as returned by
+--     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
+--     with a @samples@ parameter equaling the value of
+--     @rasterizationSamples@ in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-sampleLocationsEnable-07938# If the
+--     bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state disabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then @sampleLocationsInfo.sampleLocationsPerPixel@ /must/ equal
+--     @rasterizationSamples@ in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-coverageModulationTableEnable-07488# If
+--     a shader object is bound to any graphics stage or the bound graphics
+--     pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV'
+--     state enabled, and the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV'
+--     set @coverageModulationTableEnable@ to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then the
+--     @coverageModulationTableCount@ parameter in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableNV'
+--     /must/ equal the current @rasterizationSamples@ divided by the
+--     number of color samples in the current active color attachment
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-rasterizationSamples-07489# If the
+--     @VK_NV_framebuffer_mixed_samples@ extension is enabled, and if
+--     current subpass has a depth\/stencil attachment and depth test,
+--     stencil test, or depth bounds test are enabled in the bound
+--     pipeline, then the current @rasterizationSamples@ /must/ be the same
+--     as the sample count of the depth\/stencil attachment
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-coverageToColorEnable-07490# If the
+--     bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
+--     state enabled and the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
+--     set the @coverageToColorEnable@ to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then there /must/ be an
+--     active color attachment at the location selected by the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
+--     @coverageToColorLocation@, with a
+--     'Vulkan.Core10.Enums.Format.Format' of
+--     'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R8_SINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R16_UINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R16_SINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R32_UINT', or
+--     'Vulkan.Core10.Enums.Format.FORMAT_R32_SINT'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-rasterizerDiscardEnable-09420# If the
+--     @VK_NV_fragment_coverage_to_color@ extension is enabled, and a
+--     shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage, and the most recent call to
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
+--     in the current command buffer set @rasterizerDiscardEnable@ to
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
+--     set the @coverageToColorEnable@ to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then there /must/ be an
+--     active color attachment at the location selected by the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
+--     @coverageToColorLocation@, with a
+--     'Vulkan.Core10.Enums.Format.Format' of
+--     'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R8_SINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R16_UINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R16_SINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R32_UINT', or
+--     'Vulkan.Core10.Enums.Format.FORMAT_R32_SINT'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-coverageReductionMode-07491# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-coverageReductionMode coverageReductionMode>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV'
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     dynamic states enabled, then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current values>
+--     of @coverageReductionMode@, @rasterizationSamples@, the sample
+--     counts for the color and depth\/stencil attachments (if the subpass
+--     has them) /must/ be a valid combination returned by
+--     'Vulkan.Extensions.VK_NV_coverage_reduction_mode.getPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-viewportCount-07492# 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_SWIZZLE_NV'
+--     dynamic state enabled, 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-vkCmdDrawClusterHUAWEI-viewportCount-07493# 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_SWIZZLE_NV'
+--     dynamic states enabled then the @viewportCount@ parameter in the
+--     last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
+--     /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-vkCmdDrawClusterHUAWEI-viewportCount-09421# If the
+--     @VK_NV_viewport_swizzle@ extension is enabled, and a shader object
+--     is bound to any graphics stage, then the @viewportCount@ parameter
+--     in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
+--     /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-vkCmdDrawClusterHUAWEI-rasterizationSamples-07494# If the
+--     @VK_NV_framebuffer_mixed_samples@ extension is enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-coverageReductionMode coverageReductionMode>
+--     feature is not enabled, or the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @coverageReductionMode@ is not
+--     'Vulkan.Extensions.VK_NV_coverage_reduction_mode.COVERAGE_REDUCTION_MODE_TRUNCATE_NV',
+--     and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizationSamples@ is greater than sample count of the color
+--     attachment, then
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-sampleshading sample shading>
+--     /must/ be disabled
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-stippledLineEnable-07495# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic states enabled, and if the current @stippledLineEnable@
+--     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
+--     @lineRasterizationMode@ state is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_RECTANGULAR',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-stippledLineEnable-07496# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic states enabled, and if the current @stippledLineEnable@
+--     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
+--     @lineRasterizationMode@ state is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_BRESENHAM',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-stippledLineEnable-07497# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic states enabled, and if the current @stippledLineEnable@
+--     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
+--     @lineRasterizationMode@ state is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-stippledLineEnable-07498# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic states enabled, and if the current @stippledLineEnable@
+--     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
+--     @lineRasterizationMode@ state is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_DEFAULT',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>
+--     feature /must/ be enabled and
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@strictLines@
+--     /must/ be 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-stage-07073# If the bound pipeline was
+--     created with the
+--     'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo'::@stage@
+--     member of an element of
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'::@pStages@
+--     set to
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT',
+--     then
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-mesh-shader Mesh Shader Queries>
+--     /must/ not be active
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-08877# If a shader object is bound
+--     to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-07850# If dynamic state was
+--     inherited from
+--     'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV',
+--     it /must/ be set in the current command buffer prior to this drawing
+--     command
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-nextStage-10745# For each shader object
+--     bound to a graphics stage, except for shader object bound to the
+--     last graphics stage in the logical pipeline, it /must/ have been
+--     created with a @nextStage@ including the corresponding bit to the
+--     shader object bound to the following graphics stage in the logical
+--     pipeline
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-08684# If there is no bound
+--     graphics pipeline,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-08685# If there is no bound
+--     graphics pipeline, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellationShader>
+--     feature is enabled,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-08686# If there is no bound
+--     graphics pipeline, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellationShader>
+--     feature is enabled,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-08687# If there is no bound
+--     graphics pipeline, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometryShader>
+--     feature is enabled,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-08688# If there is no bound
+--     graphics pipeline,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-08689# If there is no bound
+--     graphics pipeline, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
+--     feature is enabled,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-08690# If there is no bound
+--     graphics pipeline, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
+--     feature is enabled,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-08693# If there is no bound
+--     graphics pipeline, and at least one of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
+--     features is enabled, one of the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--     stages /must/ have a valid 'Vulkan.Extensions.Handles.ShaderEXT'
+--     bound, and the other /must/ have no
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-08696# If there is no bound
+--     graphics pipeline, and a valid 'Vulkan.Extensions.Handles.ShaderEXT'
+--     is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage, there /must/ be no 'Vulkan.Extensions.Handles.ShaderEXT'
+--     bound to either the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--     stage or the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--     stage
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-08698# If any graphics shader is
+--     bound which was created with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
+--     flag, then all shaders created with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
+--     flag in the same
+--     'Vulkan.Extensions.VK_EXT_shader_object.createShadersEXT' call
+--     /must/ also be bound
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-08699# If any graphics shader is
+--     bound which was created with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
+--     flag, any stages in between stages whose shaders which did not
+--     create a shader with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
+--     flag as part of the same
+--     'Vulkan.Extensions.VK_EXT_shader_object.createShadersEXT' call
+--     /must/ not have any 'Vulkan.Extensions.Handles.ShaderEXT' bound
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-08878# All bound graphics shader
+--     objects /must/ have been created with identical or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-identically-defined identically defined>
+--     push constant ranges
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-08879# All bound graphics shader
+--     objects /must/ have either been created with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag set, or with identical or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-identically-defined identically defined>
+--     arrays of descriptor set layouts
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-colorAttachmentCount-09372# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and a
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
+--     equal to @1@, a color attachment with a resolve mode of
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID',
+--     and a fragment shader is bound, it /must/ not declare the
+--     @DepthReplacing@ or @StencilRefReplacingEXT@ execution modes
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-pDynamicStates-08715# If the bound
+--     graphics pipeline state includes a fragment shader stage, was
+--     created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE'
+--     set in
+--     'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@,
+--     and the fragment shader declares the @EarlyFragmentTests@ execution
+--     mode and uses @OpDepthAttachmentReadEXT@, the @depthWriteEnable@
+--     parameter in the last call to
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthWriteEnable'
+--     /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-pDynamicStates-08716# If the bound
+--     graphics pipeline state includes a fragment shader stage, was
+--     created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_WRITE_MASK'
+--     set in
+--     'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@,
+--     and the fragment shader declares the @EarlyFragmentTests@ execution
+--     mode and uses @OpStencilAttachmentReadEXT@, the @writeMask@
+--     parameter in the last call to
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilWriteMask' /must/
+--     be @0@
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-09116# If a shader object is bound
+--     to any graphics stage or the bound graphics pipeline was created
+--     with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT',
+--     and the format of any color attachment is
+--     'Vulkan.Core10.Enums.Format.FORMAT_E5B9G9R9_UFLOAT_PACK32', the
+--     corresponding element of the @pColorWriteMasks@ parameter of
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
+--     /must/ either include all of
+--     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_R_BIT',
+--     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_G_BIT',
+--     and
+--     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_B_BIT',
+--     or none of them
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-maxFragmentDualSrcAttachments-09239# If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blending blending>
+--     is enabled for any attachment where either the source or destination
+--     blend factors for that attachment
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-dsb use the secondary color input>,
+--     the maximum value of @Location@ for any output attachment
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-staticuse statically used>
+--     in the @Fragment@ @Execution@ @Model@ executed by this command
+--     /must/ be less than
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFragmentDualSrcAttachments maxFragmentDualSrcAttachments>
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-09548# If the current render pass
+--     was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there is no shader object bound to any graphics stage, the value of
+--     each element of
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingAttachmentLocationInfo'::@pColorAttachmentLocations@
+--     in the bound pipeline /must/ match the value for the corresponding
+--     locations set currently in the current render pass instance
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-09549# If the current render pass
+--     was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     and there is no shader object bound to any graphics stage, the value
+--     of each element of
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pColorAttachmentInputIndices@
+--     in the bound pipeline /must/ match the value for the corresponding
+--     index set currently in the current render pass instance
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-10927# If the current render pass
+--     was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     and there is no shader object bound to any graphics stage, the value
+--     of
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pDepthInputAttachmentIndex@
+--     in the bound pipeline /must/ match the value set currently in the
+--     current render pass instance
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-10928# If the current render pass
+--     was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     and there is no shader object bound to any graphics stage, the value
+--     of
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pStencilInputAttachmentIndex@
+--     in the bound pipeline /must/ match the value set currently in the
+--     current render pass instance
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-09642# If the current render pass
+--     was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     with the
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT'
+--     flag, the bound graphics pipeline /must/ have been created with
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-09643# If the bound graphics
+--     pipeline was created with
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT',
+--     the current render pass /must/ have begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     with the
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT'
+--     flag
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-10677# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model>
+--     is enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tileShadingPerTileDraw tileShadingPerTileDraw>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-10772# If a shader object is bound
+--     to any graphics stage, /multiview/ functionality /must/ not be
+--     enabled in the current render pass
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-multiviewPerViewViewports-12262# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiviewPerViewViewports multiviewPerViewViewports>
+--     feature is enabled, then the index of the most significant bit in
+--     current render pass instance @viewMask@ /must/ be less than the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @viewportCount@
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-multiviewPerViewViewports-12263# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiviewPerViewViewports multiviewPerViewViewports>
+--     feature is enabled, then the index of the most significant bit in
+--     current render pass instance @viewMask@ /must/ be less than the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @scissorCount@
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-flags-11521# If current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@flags@
+--     which includes
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_FRAGMENT_REGION_BIT_EXT',
+--     and if
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-sampleshading sample shading>
+--     is enabled (explicitly or implicitly), then the minimum fraction for
+--     sample shading /must/ equal 0.0
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-11522# If the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and contains a custom resolve, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, the graphics pipeline bound /must/ have been
+--     created with a
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-11523# If the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and does not contain a custom resolve, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, the graphics pipeline bound /must/ not have
+--     been created with a
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-customResolve-11524# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, the graphics pipeline
+--     bound /must/ have been created with
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@
+--     as 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-customResolve-11525# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and contains a custom resolve, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not been recorded in the render pass instance, the graphics
+--     pipeline bound /must/ have been created with
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@
+--     as 'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-11861# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled and the current render pass instance was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and contains a custom resolve, the bound graphics pipeline /must/
+--     have been created with a
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@colorAttachmentCount@
+--     equal to
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-11862# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and the current render pass instance was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, 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 an @resolveImageView@ 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_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@
+--     used to create the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-11863# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and the current render pass instance was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, 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 an @resolveImageView@ equal to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have the
+--     corresponding element of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@
+--     used to create the bound pipeline equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-dynamicRenderingUnusedAttachments-11864#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled, the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, 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 an @resolveImageView@ 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_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@
+--     used to create the bound graphics pipeline, or the corresponding
+--     element of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@,
+--     if it exists, /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-11865# If the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@
+--     used to create the bound graphics pipeline /must/ be equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-11866# If current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@
+--     used to create the 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->resolveImageView@
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-dynamicRenderingUnusedAttachments-11867#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@
+--     used to create the bound graphics pipeline was not equal to the
+--     'Vulkan.Core10.Enums.Format.Format' used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@,
+--     the value of the format /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-11868# If the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@
+--     used to create the bound graphics pipeline /must/ be equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-11869# If current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@
+--     used to create the 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->resolveImageView@
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-dynamicRenderingUnusedAttachments-11870#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@
+--     used to create the bound graphics pipeline was not equal to the
+--     'Vulkan.Core10.Enums.Format.Format' used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@,
+--     the value of the format /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-colorAttachmentCount-11871# If 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@ and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, then for each element
+--     of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
+--     array with a @resolveImageView@ not equal to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', the @resolveImageView@
+--     /must/ have been created with a sample count equal to the value of
+--     @rasterizationSamples@ for the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-pDepthAttachment-11872# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     @rasterizationSamples@ for the bound graphics pipeline /must/ be
+--     equal to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-pStencilAttachment-11873# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     @rasterizationSamples@ for the bound graphics pipeline /must/ be
+--     equal to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-customResolve-11529# If a shader object
+--     is bound to the fragment stage, the current render pass instance was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     a fragment density map attachment is active, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been called, then the fragment shader object bound /must/ have
+--     been created with
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@
+--     as 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-customResolve-11530# If a shader object
+--     is bound to the fragment stage, the current render pass instance was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and contains a custom resolve, a fragment density map attachment is
+--     active, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been called, then the fragment shader object bound
+--     /must/ have been created with
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@
+--     as 'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-flags-13361# If there are any shader
+--     objects bound that were created with @flags@ that includes the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     bit, then all bound shader objects /must/ have been created with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     bit
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-flags-13362# If there are any shader
+--     objects bound that were created with @flags@ that includes the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     bit, then the pipeline layout of the bound descriptor sets /must/
+--     have been created with
+--     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT'
+--     set
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-flags-13363# If there are any shader
+--     objects bound that were created with @flags@ that includes the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     bit, and any of the descriptor set layouts used to create the
+--     pipeline layout of the bound descriptor sets were created with any
+--     binding’s
+--     'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutBinding'::@stageFlags@
+--     set with
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT',
+--     then there /must/ be no binding with
+--     'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutBinding'::@stageFlags@
+--     set with
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-flags-13364# If there are any shader
+--     objects bound that were created with @flags@ that includes both the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     and
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
+--     bits, the pipeline layout of the bound descriptor sets /must/ have
+--     been created with
+--     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_NO_TASK_SHADER_BIT_KHR'
+--     set
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-flags-13365# If there are any shader
+--     objects bound that were created with @flags@ that includes both the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     and
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
+--     bits, there /must/ be no shader object bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--     stage
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-stage-06480# The bound graphics
+--     pipeline /must/ not have been created with the
+--     'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo'::@stage@
+--     member of any element of
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'::@pStages@
+--     set to
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-pStages-10680# If there is no bound
+--     graphics pipeline,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     not have last bound the @pStages@ element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
+--     with a valid shader object other than
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-07074#
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-transform-feedback Transform Feedback Queries>
+--     /must/ not be active
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-07075#
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-primitives-generated Primitives Generated Queries>
+--     /must/ not be active
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-pipelineStatistics-07076# The
+--     @pipelineStatistics@ member used to create any active
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-pipestats Pipeline Statistics Query>
+--     /must/ not contain
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT',
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT',
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT',
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT',
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT',
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT',
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT',
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT',
+--     or
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-08694# If there is no bound
+--     graphics pipeline, and both the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
+--     features are enabled, and a valid
+--     'Vulkan.Extensions.Handles.ShaderEXT' is bound the to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--     stage, and that 'Vulkan.Extensions.Handles.ShaderEXT' was created
+--     without the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
+--     flag, a valid 'Vulkan.Extensions.Handles.ShaderEXT' /must/ be bound
+--     to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--     stage
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-08695# If there is no bound
+--     graphics pipeline, and both the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
+--     features are enabled, and a valid
+--     'Vulkan.Extensions.Handles.ShaderEXT' is bound the to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--     stage, and that 'Vulkan.Extensions.Handles.ShaderEXT' was created
+--     with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
+--     flag, there /must/ be no 'Vulkan.Extensions.Handles.ShaderEXT' bound
+--     to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--     stage
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-None-07819# The @pipelineStatistics@
+--     member used to create any active
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#queries-pipestats Pipeline Statistics Query>
+--     /must/ not contain
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_TASK_SHADER_INVOCATIONS_BIT_EXT',
+--     or
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_MESH_SHADER_INVOCATIONS_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-groupCountX-07820# @groupCountX@ /must/
+--     be less than or equal to
+--     'PhysicalDeviceClusterCullingShaderPropertiesHUAWEI'::@maxWorkGroupCount@[0]
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-groupCountY-07821# @groupCountY@ /must/
+--     be less than or equal to
+--     'PhysicalDeviceClusterCullingShaderPropertiesHUAWEI'::@maxWorkGroupCount@[1]
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-groupCountZ-07822# @groupCountZ@ /must/
+--     be less than or equal to
+--     'PhysicalDeviceClusterCullingShaderPropertiesHUAWEI'::@maxWorkGroupCount@[2]
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-ClusterCullingHUAWEI-07823# The current
+--     pipeline bound to
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
+--     /must/ contain a shader stage using the @ClusterCullingHUAWEI@
+--     @Execution@ @Model@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-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-vkCmdDrawClusterHUAWEI-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-renderpass# This command /must/ only be
+--     called inside of a render pass instance
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-suspended# This command /must/ not be
+--     called between suspended render pass instances
+--
+-- -   #VUID-vkCmdDrawClusterHUAWEI-videocoding# This command /must/ only
+--     be called outside of a video coding scope
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Inside                                                                                                                 | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdDrawClusterHUAWEI is affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_HUAWEI_cluster_culling_shader VK_HUAWEI_cluster_culling_shader>,
+-- 'Vulkan.Core10.Handles.CommandBuffer'
+cmdDrawClusterHUAWEI :: 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 ()
+cmdDrawClusterHUAWEI commandBuffer
+                       groupCountX
+                       groupCountY
+                       groupCountZ = liftIO $ do
+  let vkCmdDrawClusterHUAWEIPtr = pVkCmdDrawClusterHUAWEI (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  unless (vkCmdDrawClusterHUAWEIPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdDrawClusterHUAWEI is null" Nothing Nothing
+  let vkCmdDrawClusterHUAWEI' = mkVkCmdDrawClusterHUAWEI vkCmdDrawClusterHUAWEIPtr
+  traceAroundEvent "vkCmdDrawClusterHUAWEI" (vkCmdDrawClusterHUAWEI'
+                                               (commandBufferHandle (commandBuffer))
+                                               (groupCountX)
+                                               (groupCountY)
+                                               (groupCountZ))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdDrawClusterIndirectHUAWEI
+  :: FunPtr (Ptr CommandBuffer_T -> Buffer -> DeviceSize -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> DeviceSize -> IO ()
+
+-- | vkCmdDrawClusterIndirectHUAWEI - Issue an indirect cluster culling draw
+-- into a command buffer
+--
+-- = Description
+--
+-- 'cmdDrawClusterIndirectHUAWEI' behaves similarly to
+-- 'cmdDrawClusterHUAWEI' 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. Note the cluster culling
+-- shader pipeline only accepts 'cmdDrawClusterHUAWEI' and
+-- 'cmdDrawClusterIndirectHUAWEI' as drawing commands.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-magFilter-04553# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
+--     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR',
+--     @reductionMode@ equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
+--     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-vkCmdDrawClusterIndirectHUAWEI-magFilter-09598# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
+--     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR' and
+--     @reductionMode@ equal to either
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
+--     or
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
+--     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_MINMAX_BIT'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-mipmapMode-04770# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
+--     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR',
+--     @reductionMode@ equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
+--     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-vkCmdDrawClusterIndirectHUAWEI-mipmapMode-09599# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
+--     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'
+--     and @reductionMode@ equal to either
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
+--     or
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
+--     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_MINMAX_BIT'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-unnormalizedCoordinates-09635#
+--     If a 'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the image view’s @levelCount@ and @layerCount@ /must/ be 1
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08609# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the image view’s @viewType@ /must/ be
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D' or
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08610# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the sampler /must/ not be used with any of the SPIR-V
+--     @OpImageSample*@ or @OpImageSparseSample*@ instructions with
+--     @ImplicitLod@, @Dref@ or @Proj@ in their name
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08611# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the sampler /must/ not be used with any of the SPIR-V
+--     @OpImageSample*@ or @OpImageSparseSample*@ instructions that
+--     includes a LOD bias or any offset values
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-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-vkCmdDrawClusterIndirectHUAWEI-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-vkCmdDrawClusterIndirectHUAWEI-None-07888# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'
+--     descriptor is accessed using atomic operations as a result of this
+--     command, then the storage texel buffer’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-buffer-view-format-features format features>
+--     /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-02692# If a
+--     'Vulkan.Core10.Handles.ImageView' is sampled with
+--     'Vulkan.Core10.Enums.Filter.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.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-02693# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_filter_cubic VK_EXT_filter_cubic>
+--     extension is not enabled and any 'Vulkan.Core10.Handles.ImageView'
+--     is sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as a
+--     result of this command, it /must/ not have a
+--     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' of
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE', or
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-filterCubic-02694# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with
+--     'Vulkan.Core10.Enums.Filter.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-vkCmdDrawClusterIndirectHUAWEI-filterCubicMinmax-02695# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with
+--     'Vulkan.Core10.Enums.Filter.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-vkCmdDrawClusterIndirectHUAWEI-cubicRangeClamp-09212# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-cubicRangeClamp cubicRangeClamp>
+--     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
+--     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
+--     a result of this command /must/ not have a
+--     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
+--     equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-reductionMode-09213# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with a
+--     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
+--     equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
+--     as a result of this command /must/ sample with
+--     'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-selectableCubicWeights-09214#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-selectableCubicWeights selectableCubicWeights>
+--     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
+--     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
+--     a result of this command /must/ have
+--     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.SamplerCubicWeightsCreateInfoQCOM'::@cubicWeights@
+--     equal to
+--     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-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-vkCmdDrawClusterIndirectHUAWEI-OpTypeImage-07027# For any
+--     'Vulkan.Core10.Handles.ImageView' being written as a storage image
+--     where the image format field of the @OpTypeImage@ is @Unknown@, the
+--     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_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-OpTypeImage-07028# For any
+--     'Vulkan.Core10.Handles.ImageView' being read as a storage image
+--     where the image format field of the @OpTypeImage@ is @Unknown@, the
+--     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_STORAGE_READ_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-OpTypeImage-07029# For any
+--     'Vulkan.Core10.Handles.BufferView' being written as a storage texel
+--     buffer where the image format field of the @OpTypeImage@ is
+--     @Unknown@, the view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
+--     /must/ contain
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-OpTypeImage-07030# Any
+--     'Vulkan.Core10.Handles.BufferView' being read as a storage texel
+--     buffer where the image format field of the @OpTypeImage@ is
+--     @Unknown@ then the view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
+--     /must/ contain
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08600# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
+--     was created with a pipeline layout and statically uses a set /n/, a
+--     descriptor set /must/ have been bound to /n/ at the same pipeline
+--     bind point, with layouts compatible for set /n/ with the layout(s)
+--     used to create the shader, as described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptors-compatibility ???>
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08601# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
+--     was created with a pipeline layout or specified push constant ranges
+--     and statically uses a push constant value, that value /must/ have
+--     been set for the same pipeline bind point, with push constant ranges
+--     that are
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptors-compatibility compatible>
+--     with the push constant range used to create the shader
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-10068# For each array of
+--     resources that is used by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
+--     the indices used to access members of the array /must/ be less than
+--     the descriptor count for the identified binding in the descriptor
+--     sets used by this command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08114# Descriptors in each
+--     bound descriptor set, specified via
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
+--     be valid if they are accessed as described by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
+--     by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
+--     point used by this command and the bound
+--     'Vulkan.Core10.Handles.Pipeline' was not created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-imageLayout-00344# If an image
+--     descriptor is accessed by a shader, the
+--     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' /must/ match the
+--     subresource accessible from the 'Vulkan.Core10.Handles.ImageView' 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>
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08115# If the descriptors
+--     used by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline
+--     bind point were specified via
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', the
+--     bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     without
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08116# Descriptors in
+--     bound descriptor buffers, specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     /must/ be valid if they are dynamically used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
+--     was created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08604# Descriptors in
+--     bound descriptor buffers, specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     /must/ be valid if they are dynamically used by any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     to the pipeline bind point used by this command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08117# If the descriptors
+--     used by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline
+--     bind point were specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08119# If a descriptor is
+--     dynamically used with a 'Vulkan.Core10.Handles.Pipeline' created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     the descriptor memory /must/ be resident
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08605# If a descriptor is
+--     dynamically used with a 'Vulkan.Extensions.Handles.ShaderEXT'
+--     created with a 'Vulkan.Core10.Handles.DescriptorSetLayout' that was
+--     created with
+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     the descriptor memory /must/ be resident
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08606# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject>
+--     feature is not enabled, a valid pipeline /must/ be bound to the
+--     pipeline bind point used by this command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08608# If a pipeline is
+--     bound to the pipeline bind point used by this command, there /must/
+--     not have been any calls to dynamic state setting commands for any
+--     state specified statically in the 'Vulkan.Core10.Handles.Pipeline'
+--     object bound to the pipeline bind point used by this command, since
+--     that pipeline was bound
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-uniformBuffers-06935# If any
+--     stage of the 'Vulkan.Core10.Handles.Pipeline' object bound to the
+--     pipeline bind point used by this command accesses a uniform buffer,
+--     and that stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @uniformBuffers@, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /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-vkCmdDrawClusterIndirectHUAWEI-None-08612# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, and any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     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-vkCmdDrawClusterIndirectHUAWEI-storageBuffers-06936# If any
+--     stage of the 'Vulkan.Core10.Handles.Pipeline' object bound to the
+--     pipeline bind point used by this command accesses a storage buffer,
+--     and that stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @storageBuffers@, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /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-vkCmdDrawClusterIndirectHUAWEI-None-08613# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, and any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     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-vkCmdDrawClusterIndirectHUAWEI-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
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shaders>
+--     /must/ not be a protected resource
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-viewType-07752# If a
+--     'Vulkan.Core10.Handles.ImageView' is accessed as a result of this
+--     command, then the image view’s @viewType@ /must/ match the @Dim@
+--     operand of the @OpTypeImage@ as described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-image-dimensions ???>
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-format-07753# If a
+--     'Vulkan.Core10.Handles.ImageView' or
+--     'Vulkan.Core10.Handles.BufferView' is accessed as a result of this
+--     command, then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-numericformat numeric type>
+--     of the view’s @format@ and the @Sampled@ @Type@ operand of the
+--     @OpTypeImage@ /must/ match
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-OpImageWrite-08795# If a
+--     'Vulkan.Core10.Handles.ImageView' created with a format other than
+--     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM' 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-vkCmdDrawClusterIndirectHUAWEI-OpImageWrite-08796# If a
+--     'Vulkan.Core10.Handles.ImageView' created with the format
+--     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM' is accessed using
+--     @OpImageWrite@ as a result of this command, then the @Type@ of the
+--     @Texel@ operand of that instruction /must/ have four components
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-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-vkCmdDrawClusterIndirectHUAWEI-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-vkCmdDrawClusterIndirectHUAWEI-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-vkCmdDrawClusterIndirectHUAWEI-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-vkCmdDrawClusterIndirectHUAWEI-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-vkCmdDrawClusterIndirectHUAWEI-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-vkCmdDrawClusterIndirectHUAWEI-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-vkCmdDrawClusterIndirectHUAWEI-OpImageSampleWeightedQCOM-06971#
+--     If @OpImageSampleWeightedQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-OpImageSampleWeightedQCOM-06972#
+--     If @OpImageSampleWeightedQCOM@ uses a
+--     'Vulkan.Core10.Handles.ImageView' as a sample weight image 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-OpImageBoxFilterQCOM-06973# If
+--     @OpImageBoxFilterQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-OpImageBlockMatchSSDQCOM-06974#
+--     If @OpImageBlockMatchSSDQCOM@ is used to read from an
+--     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
+--     or
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_SXD_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-OpImageBlockMatchSADQCOM-12420#
+--     If @OpImageBlockMatchSADQCOM@ is used to read from an
+--     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
+--     or
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_SXD_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-OpImageBlockMatchSADQCOM-06976#
+--     If @OpImageBlockMatchSADQCOM@ or OpImageBlockMatchSSDQCOM is used to
+--     read from a reference image as result of this command, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-blockMatchExtendedClampToEdge blockMatchExtendedClampToEdge>
+--     feature is not enabled or the /input/ sampler was not created with
+--     both @addressModeU@ and @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--     then the specified reference coordinates /must/ not fail
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-OpImageSampleWeightedQCOM-06977#
+--     If @OpImageSampleWeightedQCOM@, @OpImageBoxFilterQCOM@,
+--     @OpImageBlockMatchWindowSSDQCOM@, @OpImageBlockMatchWindowSADQCOM@,
+--     @OpImageBlockMatchGatherSSDQCOM@, @OpImageBlockMatchGatherSADQCOM@,
+--     @OpImageBlockMatchSSDQCOM@, or @OpImageBlockMatchSADQCOM@ uses a
+--     'Vulkan.Core10.Handles.Sampler' as a result of this command, then
+--     the sampler /must/ have been created with
+--     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-OpImageSampleWeightedQCOM-06978#
+--     If any command other than @OpImageSampleWeightedQCOM@,
+--     @OpImageBoxFilterQCOM@, @OpImageBlockMatchWindowSSDQCOM@,
+--     @OpImageBlockMatchWindowSADQCOM@, @OpImageBlockMatchGatherSSDQCOM@,
+--     @OpImageBlockMatchGatherSADQCOM@, @OpImageBlockMatchSSDQCOM@, or
+--     @OpImageBlockMatchSADQCOM@ uses a 'Vulkan.Core10.Handles.Sampler' as
+--     a result of this command, then the sampler /must/ not have been
+--     created with
+--     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-OpImageBlockMatchWindow-09215#
+--     If a @OpImageBlockMatchWindow*QCOM@ or
+--     @OpImageBlockMatchGather*QCOM@ instruction is used to read from an
+--     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-OpImageBlockMatchWindow-09216#
+--     If a @OpImageBlockMatchWindow*QCOM@ or
+--     @OpImageBlockMatchGather*QCOM@ instruction is used to read from an
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the image view’s format /must/ be a single-component format
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-OpImageBlockMatchWindow-09217#
+--     If a @OpImageBlockMatchWindow*QCOM@ or
+--     @OpImageBlockMatchGather*QCOM@ read from a reference image as result
+--     of this command, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-blockMatchExtendedClampToEdge blockMatchExtendedClampToEdge>
+--     feature is not enabled or the /input/ sampler was not created with
+--     both @addressModeU@ and @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--     then the specified reference coordinates /must/ not fail
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-OpImageBlockMatchWindow-12421#
+--     If a @OpImageBlockMatchWindow*QCOM@ or
+--     @OpImageBlockMatchGather*QCOM@ instruction uses a
+--     'Vulkan.Core10.Handles.Sampler' as a result of this command, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-blockMatchExtendedClampToEdge blockMatchExtendedClampToEdge>
+--     is not enabled, the /input/ sampler /must/ not have been created
+--     with either @addressModeU@ or @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-addressModeU-12422# If a
+--     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     instruction uses a 'Vulkan.Core10.Handles.Sampler' as a result of
+--     this command, and the /input/ sampler was created with either
+--     @addressModeU@ or @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE',
+--     then the sampler /must/ have been created with both @addressModeU@
+--     and @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07288# Any shader
+--     invocation executed by this command /must/
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-termination terminate>
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-09600# If a descriptor
+--     with type equal to any of
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',
+--     or
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'
+--     is accessed as a result of this command, all image subresources
+--     identified by that descriptor /must/ be in the image layout
+--     identified when the descriptor was written
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-micromap-11636# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command through an
+--     @OpRayQueryProceedKHR@ operation , the @VK_EXT_opacity_micromap@
+--     extension is not enabled, and the acceleration structure is built
+--     using geometry with a
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapKHR'
+--     structure included in its @pNext@ chain, the shader /must/ have
+--     specified a @OpacityMicromapIdKHR@ execution mode with its
+--     specialization constant operand equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-micromap-11637# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command and the
+--     acceleration structure was constructed through deserialization, all
+--     micromap arrays referenced by the acceleration structure that were
+--     not replaced by an acceleration structure update command /must/ have
+--     been deserialized using the serialized data of the corresponding
+--     micromaps used to originally build the acceleration structure prior
+--     to the execution of this command on the device
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-micromap-11638# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command and the
+--     acceleration structure is built using geometry with an @indexBuffer@
+--     containing both
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.OpacityMicromapSpecialIndexKHR'
+--     values and indices into an associated micromap array, any
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command /must/ not have been created with @flags@ that
+--     includes
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_KHR'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-micromap-11639# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command and the
+--     acceleration structure is built using geometry with an @indexBuffer@
+--     containing both
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.OpacityMicromapSpecialIndexKHR'
+--     values and indices into an associated micromap array, any
+--     'Vulkan.Extensions.Handles.ShaderEXT' that accessed the descriptor
+--     /must/ not have been created with @flags@ that includes
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-commandBuffer-10746# The
+--     'Vulkan.Core10.Handles.DeviceMemory' object allocated from a
+--     'Vulkan.Core10.DeviceInitialization.MemoryHeap' with the
+--     'Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_TILE_MEMORY_BIT_QCOM'
+--     property that is bound to a resource accessed as a result of this
+--     command /must/ be the active
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-bind-tile-memory bound tile memory object>
+--     in @commandBuffer@
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-10678# If this command is
+--     recorded inside a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-tile-shading tile shading render pass>
+--     instance, the stages corresponding to the pipeline bind point used
+--     by this command /must/ only include
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT',
+--     and\/or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-10679# If this command is
+--     recorded where
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model>
+--     is enabled, there /must/ be no access to any image while the image
+--     was be transitioned to the
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
+--     layout
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-pDescription-09900# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the
+--     underlying 'Vulkan.Extensions.Handles.TensorARM' object /must/ have
+--     been created with the
+--     'Vulkan.Extensions.VK_ARM_tensors.TENSOR_USAGE_SHADER_BIT_ARM' usage
+--     flag set
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-dimensionCount-09905# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the @Rank@
+--     of the @OpTypeTensorARM@ of the tensor resource variable /must/ be
+--     equal to the @dimensionCount@ provided via
+--     'Vulkan.Extensions.VK_ARM_tensors.TensorCreateInfoARM'::@pDescription@
+--     when creating the underlying 'Vulkan.Extensions.Handles.TensorARM'
+--     object
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-OpTypeTensorARM-09906# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the element
+--     type of the @OpTypeTensorARM@ of the tensor resource variable /must/
+--     be
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-tensor-formats compatible>
+--     with the 'Vulkan.Core10.Enums.Format.Format' of the
+--     'Vulkan.Extensions.Handles.TensorViewARM' used for the access
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-11297# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses a @OpTypeStruct@ decorated with @Block@ or
+--     @BufferBlock@ using that mapping, the calculated offset for the
+--     resource heap /must/ be a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-bufferDescriptorAlignment bufferDescriptorAlignment>
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-11298# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses an @OpTypeImage@ or @OpTypeSampledImage@ using
+--     that mapping, the calculated offset for the resource heap /must/ be
+--     a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-imageDescriptorAlignment imageDescriptorAlignment>
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-11299# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses an @OpTypeSampler@ or @OpTypeSampledImage@
+--     using that mapping, the calculated offset for the sampler heap
+--     /must/ be a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-samplerDescriptorAlignment samplerDescriptorAlignment>
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-11397# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses an @OpTypeTensorARM@ using that mapping, the
+--     calculated offset for the resource heap /must/ be a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-tensorDescriptorAlignment tensorDescriptorAlignment>
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-11300# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a
+--     multiple of 4
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-11301# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' backed by physical
+--     memory at every offset specified by each mapping
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-11302# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-11304# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a
+--     multiple of 8
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-11305# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' backed by physical
+--     memory at every offset specified by each mapping
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-11306# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address pointed to by the address in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-11308# For each
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps descriptor heap>
+--     that is statically used by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
+--     either directly or via a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>,
+--     a valid descriptor heap /must/ be bound
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-11309# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     was created as a 'Vulkan.Extensions.Handles.ShaderEXT' with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag or as part of a pipeline with the
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag, execution of this command /must/ not result in any descriptor
+--     read accessing data outside of the user range of the respective heap
+--     bound by @vkCmdBind*HeapEXT@ commands
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-11372# If any stage of the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command accesses a uniform buffer or uniform
+--     texel buffer through a descriptor in the bound resource heap, that
+--     stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @uniformBuffers@, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /must/ not access values outside
+--     of the range of the descriptor specified via
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+--     when the descriptor was written
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-11373# If any stage of the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command accesses a storage buffer or storage
+--     texel buffer through a descriptor in the bound resource heap, that
+--     stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @storageBuffers@, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /must/ not access values outside
+--     of the range of the descriptor specified by
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+--     when the descriptor was written
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-11374# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, and any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     to the pipeline bind point used by this command accesses a uniform
+--     buffer, uniform texel buffer, storage buffer, or storage texel
+--     buffer, that shader /must/ not access values outside of the range of
+--     the buffer as specified by
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+--     when the descriptor was written
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-pBindInfo-11375# If any
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     uses an embedded sampler via a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>,
+--     the value of @pBindInfo->reservedRangeSize@ set for
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.cmdBindSamplerHeapEXT'
+--     /must/ be greater than or equal to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minSamplerHeapReservedRangeWithEmbedded minSamplerHeapReservedRangeWithEmbedded>
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-11376# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     was created as a 'Vulkan.Extensions.Handles.ShaderEXT' with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag or as part of a pipeline with the
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag, and that shader statically uses a push constant value, that
+--     value /must/ have been set by
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.cmdPushDataEXT'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-11398# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_DATA_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_DATA_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_RESOURCE_HEAP_DATA_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the access
+--     /must/ not be
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-execution-memory-access-bounds out of bounds>
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-11437# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the buffer from
+--     which the address in push data was queried /must/ have been created
+--     with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-11438# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a uniform buffer using that mapping, the
+--     address that the uniform buffer is mapped to /must/ have been
+--     queried from a buffer created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-11441# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a uniform buffer using that mapping, the
+--     address that the uniform buffer is mapped to /must/ be aligned to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minUniformBufferOffsetAlignment minUniformBufferOffsetAlignment>
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-11439# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a storage buffer using that mapping, the
+--     address that the storage buffer is mapped to /must/ have been
+--     queried from a buffer created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_STORAGE_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-11442# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a storage buffer using that mapping, the
+--     address that the storage buffer is mapped to /must/ be aligned to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minStorageBufferOffsetAlignment minStorageBufferOffsetAlignment>
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-11485# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses an acceleration structure using that mapping,
+--     the address that the acceleration structure is mapped to /must/ be
+--     an acceleration structure address retrieved from a
+--     'Vulkan.Extensions.Handles.AccelerationStructureKHR' object via
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.getAccelerationStructureDeviceAddressKHR'
+--     or handle retrieved from a
+--     'Vulkan.Extensions.Handles.AccelerationStructureNV' object via
+--     'Vulkan.Extensions.VK_NV_ray_tracing.getAccelerationStructureHandleNV'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-index-11450# If a shader uses a
+--     sampler descriptor to sample an image as a result of this command,
+--     and that sampler descriptor uses a custom border color with an index
+--     defined by
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.SamplerCustomBorderColorIndexCreateInfoEXT',
+--     the value of
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.SamplerCustomBorderColorIndexCreateInfoEXT'::@index@
+--     /must/ have been registered before this command was recorded, and
+--     still be registered during the sampling operation, with an
+--     identically defined color
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-protectedNoFault-11455# If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, a pipeline is bound to the pipeline bind point
+--     used by this command, or a shader is bound to a shader stage used by
+--     this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     the address that the resource is mapped to /must/ have been queried
+--     from a buffer created without the
+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT'
+--     create flag set
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-protectedNoFault-11456# If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, a pipeline is bound to the pipeline bind point
+--     used by this command, or a shader is bound to a shader stage used by
+--     this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     the address of the indirect memory /must/ have been queried from a
+--     buffer created without the
+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT'
+--     create flag set
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-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.GraphicsPipeline.GraphicsPipelineCreateInfo'
+--     structure specified when creating the
+--     'Vulkan.Core10.Handles.Pipeline' bound to
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-subpass-02685# The subpass
+--     index of the current render pass /must/ be equal to the @subpass@
+--     member of the
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'
+--     structure specified when creating the
+--     'Vulkan.Core10.Handles.Pipeline' bound to
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-OpTypeImage-07468# If any
+--     shader executed by this pipeline accesses an @OpTypeImage@ variable
+--     with a @Dim@ operand of @SubpassData@, it /must/ be decorated with
+--     an @InputAttachmentIndex@ that corresponds to a valid input
+--     attachment in the current subpass
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07469# Input attachment
+--     views accessed in a subpass /must/ be created with the same
+--     'Vulkan.Core10.Enums.Format.Format' as the corresponding subpass
+--     definition, and be created with a 'Vulkan.Core10.Handles.ImageView'
+--     that is compatible with the attachment referenced by the subpass\'
+--     @pInputAttachments@[@InputAttachmentIndex@] in the bound
+--     'Vulkan.Core10.Handles.Framebuffer' as specified by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#compatibility-inputattachment Fragment Input Attachment Compatibility>
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-pDepthInputAttachmentIndex-09595#
+--     Input attachment views accessed in a dynamic render pass with a
+--     @InputAttachmentIndex@ referenced by
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo',
+--     or no @InputAttachmentIndex@ if
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pDepthInputAttachmentIndex@
+--     or
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pStencilInputAttachmentIndex@
+--     are @NULL@, /must/ be created with a
+--     'Vulkan.Core10.Handles.ImageView' that is compatible with the
+--     corresponding color, depth, or stencil attachment in
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-pDepthInputAttachmentIndex-09596#
+--     Input attachment views accessed in a dynamic render pass via a
+--     shader object /must/ have an @InputAttachmentIndex@ if both
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pDepthInputAttachmentIndex@
+--     and
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pStencilInputAttachmentIndex@
+--     are non-@NULL@
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-InputAttachmentIndex-09597# If
+--     an input attachment view accessed in a dynamic render pass via a
+--     shader object has an @InputAttachmentIndex@, the
+--     @InputAttachmentIndex@ /must/ match an index in
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-06537# Memory backing
+--     image subresources used as attachments in the current render pass
+--     /must/ not be written in any way other than as an attachment by this
+--     command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-10795# If a color
+--     attachment is written by any prior command in this subpass or by the
+--     load, store, or resolve operations for this subpass, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT' on
+--     that attachment, it /must/ not be accessed in any way other than as
+--     an attachment by this command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-10796# If a depth
+--     attachment is written by any prior command in this subpass or by the
+--     load, store, or resolve operations for this subpass, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' on
+--     that attachment, it /must/ not be accessed in any way other than as
+--     an attachment by this command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-10797# If a stencil
+--     attachment is written by any prior command in this subpass or by the
+--     load, store, or resolve operations for this subpass, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
+--     on that attachment, it /must/ not be accessed in any way other than
+--     as an attachment by this command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-12338# If a color
+--     attachment is read in this command in any way other than as an
+--     attachment, or has been read by any prior command in this subpass as
+--     a non-attachment, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT' on
+--     that attachment, the color attachment /must/ not be written to by
+--     this command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-12339# If a depth
+--     attachment is read in this command in any way other than as an
+--     attachment, or has been read by any prior command in this subpass as
+--     a non-attachment, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' on
+--     that attachment, the depth attachment /must/ not be written to by
+--     this command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-12340# If a stencil
+--     attachment is read in this command in any way other than as an
+--     attachment, or has been read by any prior command in this subpass as
+--     a non-attachment, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
+--     on that attachment, the stencil attachment /must/ not be written to
+--     by this command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-09003# If an attachment is
+--     written by any prior command in this subpass or by the load, store,
+--     or resolve operations for this subpass, it /must/ not be accessed in
+--     any way other than as an attachment, storage image, or sampled image
+--     by this command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-06886# If the current
+--     render pass instance uses a depth\/stencil attachment with a
+--     read-only layout for the depth aspect,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-depth-write depth writes>
+--     /must/ be disabled
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-06887# If the current
+--     render pass instance uses a depth\/stencil attachment with a
+--     read-only layout for the stencil aspect, both front and back
+--     @writeMask@ are not zero, and stencil test is enabled,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-stencil all stencil ops>
+--     /must/ be 'Vulkan.Core10.Enums.StencilOp.STENCIL_OP_KEEP'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07831# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT' dynamic
+--     state enabled then
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetViewport' /must/ have
+--     been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07832# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR' dynamic
+--     state enabled then
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetScissor' /must/ have been
+--     called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08617# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_WIDTH' dynamic
+--     state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line topology class, then
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth' /must/ have
+--     been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07834# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS' dynamic
+--     state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @depthBiasEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBias' or
+--     'Vulkan.Extensions.VK_EXT_depth_bias_control.cmdSetDepthBias2EXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07835# If a shader object
+--     is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_BLEND_CONSTANTS'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and an active color
+--     attachment
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @blendEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE' with a
+--     blend equations where any
+--     'Vulkan.Core10.Enums.BlendFactor.BlendFactor' member is
+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_COLOR',
+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR',
+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_ALPHA', or
+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA',
+--     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetBlendConstants'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07836# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @depthBoundsTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBounds' /must/
+--     have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07837# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_COMPARE_MASK'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilCompareMask'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07838# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_WRITE_MASK'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilWriteMask'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07839# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_REFERENCE'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of and @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilReference'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-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-vkCmdDrawClusterIndirectHUAWEI-sampleLocationsEnable-02689# If
+--     the bound graphics pipeline was created with
+--     'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@
+--     set to 'Vulkan.Core10.FundamentalTypes.TRUE', then the active depth
+--     attachment /must/ have been created with the
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'
+--     bit set
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07634# If the
+--     @VK_EXT_sample_locations@ extension is enabled, a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-06666# If the
+--     @VK_EXT_sample_locations@ extension is enabled, a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07840# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CULL_MODE' dynamic
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetCullMode'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07841# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRONT_FACE' dynamic
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetFrontFace'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07843# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_TEST_ENABLE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE',
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthTestEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07844# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @depthTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthWriteEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07845# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_COMPARE_OP'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @depthTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthCompareOp'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07846# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthBounds depthBounds>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthBoundsTestEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07847# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_TEST_ENABLE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilTestEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07848# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_OP' dynamic
+--     state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilOp'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-viewportCount-03417# If a
+--     shader object is bound to any graphics stage or a graphics pipeline
+--     is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
+--     dynamic state enabled, and the state is not inherited, then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-scissorCount-03418# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
+--     dynamic state enabled, and the state is not inherited, then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-viewportCount-03419# If a
+--     shader object is bound to any graphics stage or a graphics pipeline
+--     is bound which 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, and the state is not inherited, then 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-vkCmdDrawClusterIndirectHUAWEI-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-vkCmdDrawClusterIndirectHUAWEI-viewportCount-04138# If the
+--     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which 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 state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @viewportWScalingEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.cmdSetViewportWScalingNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08636# If the
+--     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which 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 state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @viewportWScalingEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', 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-vkCmdDrawClusterIndirectHUAWEI-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-vkCmdDrawClusterIndirectHUAWEI-shadingRateImage-09233# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV'
+--     and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetCoarseSampleOrderNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-shadingRateImage-09234# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which 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 state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @shadingRateImageEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetViewportShadingRatePaletteNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08637# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which 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 state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @shadingRateImageEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', 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-vkCmdDrawClusterIndirectHUAWEI-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
+--     'Vulkan.Core10.GraphicsPipeline.PipelineViewportStateCreateInfo',
+--     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-vkCmdDrawClusterIndirectHUAWEI-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
+--     'Vulkan.Core10.GraphicsPipeline.PipelineViewportStateCreateInfo',
+--     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-vkCmdDrawClusterIndirectHUAWEI-None-07878# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-exclusiveScissor exclusiveScissor>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07879# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-exclusiveScissor exclusiveScissor>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV'
+--     dynamic state enabled, and the most recent call to
+--     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorEnableNV'
+--     in the current command buffer set any element of
+--     @pExclusiveScissorEnables@ to 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then
+--     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-04876# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     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 and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-04877# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-logicOp-04878# If a shader
+--     object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @logicOpEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetLogicOpEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-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-vkCmdDrawClusterIndirectHUAWEI-primitiveFragmentShadingRateWithMultipleViewports-08642#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
+--     limit is not supported, and any shader object bound to a graphics
+--     stage writes 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-vkCmdDrawClusterIndirectHUAWEI-blendEnable-04727# If a shader
+--     object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then for each color
+--     attachment, 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 corresponding
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @blendEnable@ /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08644# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and none of the following is
+--     enabled:
+--
+--     -   the @VK_AMD_mixed_attachment_samples@ extension
+--
+--     -   the @VK_NV_framebuffer_mixed_samples@ extension
+--
+--     -   the
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
+--         feature
+--
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizationSamples@ /must/ be the same as the current color
+--     and\/or depth\/stencil attachments
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08876# If a shader object
+--     is bound to any graphics stage, the current render pass instance
+--     /must/ have been begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-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-vkCmdDrawClusterIndirectHUAWEI-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-vkCmdDrawClusterIndirectHUAWEI-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-vkCmdDrawClusterIndirectHUAWEI-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-vkCmdDrawClusterIndirectHUAWEI-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-vkCmdDrawClusterIndirectHUAWEI-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-vkCmdDrawClusterIndirectHUAWEI-viewMask-06178# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the 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-vkCmdDrawClusterIndirectHUAWEI-colorAttachmentCount-06179# If
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled and the current render pass instance was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the 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-vkCmdDrawClusterIndirectHUAWEI-dynamicRenderingUnusedAttachments-08910#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and 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 an @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 bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-dynamicRenderingUnusedAttachments-08912#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and 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 an @imageView@ equal to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have the
+--     corresponding element of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
+--     used to create the bound pipeline equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-dynamicRenderingUnusedAttachments-08911#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled, and 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 an @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 bound graphics pipeline, or the corresponding
+--     element of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@,
+--     if it exists, /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-colorAttachmentCount-09362# If
+--     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@
+--     equal to @1@, there is no shader object bound to any graphics stage,
+--     and a color attachment with a resolve mode of
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID',
+--     each element of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
+--     array with a @resolveImageView@ not equal to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
+--     with an image created with a
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value equal to the
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value used to create the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-09363# If there is no
+--     shader object bound to any graphics stage, the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and a
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
+--     equal to @1@, and a color attachment with a resolve mode of
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID',
+--     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 an image created with a
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value equal to the
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value used to create the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-09364# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there is no shader object bound to any graphics stage, and the bound
+--     graphics pipeline was created with a non-zero
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value and with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
+--     /must/ have set the blend enable to
+--     'Vulkan.Core10.FundamentalTypes.FALSE' prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-09365# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there is no shader object bound to any graphics stage, and the bound
+--     graphics pipeline was created with a non-zero
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value and with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     /must/ have set @rasterizationSamples@ to
+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' prior
+--     to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-09366# If there is a
+--     shader object bound to any graphics stage, and the current render
+--     pass includes a color attachment that uses the
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID'
+--     resolve mode, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
+--     /must/ have set blend enable to
+--     'Vulkan.Core10.FundamentalTypes.FALSE' prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-rasterizationSamples-09367# If
+--     there is a shader object bound to any graphics stage, and the
+--     current render pass includes a color attachment that uses the
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID'
+--     resolve mode, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     /must/ have set @rasterizationSamples@ to
+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' prior
+--     to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-09368# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there is no shader object bound to any graphics stage, and the bound
+--     graphics pipeline was created with a non-zero
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value and with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     /must/ have set @pFragmentSize->width@ to @1@ prior to this drawing
+--     command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-09369# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there is no shader object bound to any graphics stage, and the bound
+--     graphics pipeline was created with a non-zero
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value and with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     /must/ have set @pFragmentSize->height@ to @1@ prior to this drawing
+--     command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-pFragmentSize-09370# If there
+--     is a shader object bound to any graphics stage, and the current
+--     render pass includes a color attachment that uses the
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID'
+--     resolve mode, then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     /must/ have set @pFragmentSize->width@ to @1@ prior to this drawing
+--     command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-pFragmentSize-09371# If there
+--     is a shader object bound to any graphics stage, and the current
+--     render pass includes a color attachment that uses the
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID'
+--     resolve mode, then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     /must/ have set @pFragmentSize->height@ to @1@ prior to this drawing
+--     command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07749# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
+--     feature is enabled, a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-attachmentCount-07750# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
+--     feature is enabled, a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then the @attachmentCount@
+--     parameter of most recent call to
+--     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
+--     in the current command buffer /must/ be greater than or equal to the
+--     number of active color attachments
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07751# If the
+--     @VK_EXT_discard_rectangles@ extension is enabled, a graphics
+--     pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_EXT'
+--     dynamic state enabled and the @pNext@ chain of
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo' included
+--     a
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'
+--     structure, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @discardRectangleEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command for each
+--     discard rectangle in
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'::@discardRectangleCount@
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-rasterizerDiscardEnable-09236#
+--     If the @VK_EXT_discard_rectangles@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_EXT'
+--     dynamic state enabled and the @pNext@ chain of
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo' did not
+--     include a
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'
+--     structure, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @discardRectangleEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command for each
+--     discard rectangle in
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.PhysicalDeviceDiscardRectanglePropertiesEXT'::@maxDiscardRectangles@
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07880# If the
+--     @VK_EXT_discard_rectangles@ extension is enabled, a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07881# If the
+--     @VK_EXT_discard_rectangles@ extension is enabled, a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @discardRectangleEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleModeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-dynamicRenderingUnusedAttachments-08913#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
+--     used to create the bound graphics pipeline /must/ be equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-dynamicRenderingUnusedAttachments-08914#
+--     If current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->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 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->imageView@
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-dynamicRenderingUnusedAttachments-08915#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
+--     used to create the bound graphics pipeline was not equal to the
+--     'Vulkan.Core10.Enums.Format.Format' used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@,
+--     the value of the format /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-dynamicRenderingUnusedAttachments-08916#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
+--     used to create the bound graphics pipeline /must/ be equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-dynamicRenderingUnusedAttachments-08917#
+--     If current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->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 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->imageView@
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-dynamicRenderingUnusedAttachments-08918#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
+--     used to create the bound graphics pipeline was not equal to the
+--     'Vulkan.Core10.Enums.Format.Format' used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@,
+--     the value of the format /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-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_fragment_shading_rate.RenderingFragmentShadingRateAttachmentInfoKHR'::@imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the bound graphics
+--     pipeline /must/ have been created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-dynamicRenderingLocalRead-11797#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingLocalRead dynamicRenderingLocalRead>
+--     feature is enabled, the
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_LOCAL_READ_CONCURRENT_ACCESS_CONTROL_BIT_KHR'
+--     flag is specified, and an attachment is being used as a feedback
+--     loop as specified by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#rendering-attachment-input-attachment-feedback >,
+--     'Vulkan.Extensions.VK_KHR_maintenance10.RenderingAttachmentFlagsInfoKHR'::@flags@
+--     for that attachment /must/ include
+--     'Vulkan.Extensions.VK_KHR_maintenance10.RENDERING_ATTACHMENT_INPUT_ATTACHMENT_FEEDBACK_BIT_KHR'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-imageView-06184# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and
+--     'Vulkan.Extensions.VK_EXT_fragment_density_map.RenderingFragmentDensityMapAttachmentInfoEXT'::@imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the bound graphics
+--     pipeline /must/ have been created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-layers-10831# If the current
+--     render pass instance was created with
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE'
+--     or
+--     'Vulkan.Core10.Enums.RenderPassCreateFlagBits.RENDER_PASS_CREATE_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE',
+--     and the bound graphics pipeline was created with
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE',
+--     then the current render pass instance /must/ have a @layers@ value
+--     less than or equal to
+--     'Vulkan.Extensions.VK_VALVE_fragment_density_map_layered.PipelineFragmentDensityMapLayeredCreateInfoVALVE'::@maxFragmentDensityMapLayers@
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-colorAttachmentCount-06185# If
+--     the bound pipeline was created with a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.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_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     used to create the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-pDepthAttachment-06186# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the bound pipeline was created with a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     structure, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
+--     @depthStencilAttachmentSamples@ member of
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     used to create the bound graphics pipeline /must/ be equal to the
+--     sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-pStencilAttachment-06187# If
+--     the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the bound pipeline was created with a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     structure, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
+--     @depthStencilAttachmentSamples@ member of
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     used to create the bound graphics pipeline /must/ be equal to the
+--     sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-multisampledRenderToSingleSampled-07285#
+--     If the bound pipeline was created without a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     structure, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
+--     feature is not enabled, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, 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 @rasterizationSamples@ for
+--     the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-multisampledRenderToSingleSampled-07286#
+--     If the bound pipeline was created without a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     structure, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
+--     feature is not enabled, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     @rasterizationSamples@ for the bound graphics pipeline /must/ be
+--     equal to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-multisampledRenderToSingleSampled-07287#
+--     If the bound pipeline was created without a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     structure, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
+--     feature is not enabled, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     @rasterizationSamples@ for the bound graphics pipeline /must/ be
+--     equal to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-pNext-07935# If this command is
+--     called inside a render pass instance started with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     and the @pNext@ chain of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'
+--     includes a
+--     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'
+--     structure with @multisampledRenderToSingleSampledEnable@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then the value of
+--     @rasterizationSamples@ for the bound graphics pipeline /must/ be
+--     equal to
+--     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'::@rasterizationSamples@
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-renderPass-06198# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the bound pipeline /must/ have been created with a
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'::@renderPass@
+--     equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-pColorAttachments-08963# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, there is a
+--     graphics pipeline bound with a fragment shader that statically
+--     writes to a color attachment, the color write mask is not zero,
+--     color writes are enabled, and the corresponding element of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     corresponding element of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-pColorAttachments-11539# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, there is a graphics
+--     pipeline bound with a fragment shader that statically writes to a
+--     color attachment, the color write mask is not zero, color writes are
+--     enabled, and the corresponding element of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     corresponding element of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-pDepthAttachment-08964# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, there is a
+--     graphics pipeline bound, depth test is enabled, and the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-pDepthAttachment-11540# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, there is a graphics
+--     pipeline bound, depth test is enabled, and the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-pStencilAttachment-08965# If
+--     the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, there is a
+--     graphics pipeline bound, stencil test is enabled and the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-pStencilAttachment-11860# If
+--     the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, there is a graphics
+--     pipeline bound, stencil test is enabled and the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-flags-10582# If the current
+--     render pass instance was begun with a
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     call in @commandBuffer@, its
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@flags@
+--     parameter /must/ not have
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT'
+--     set unless
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_CONTENTS_INLINE_BIT_KHR'
+--     is also set
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-primitivesGeneratedQueryWithRasterizerDiscard-06708#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithRasterizerDiscard primitivesGeneratedQueryWithRasterizerDiscard>
+--     feature is not enabled and the
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
+--     query is active,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-discard rasterization discard>
+--     /must/ not be enabled
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-primitivesGeneratedQueryWithNonZeroStreams-06709#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>
+--     feature is not enabled and the
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
+--     query is active, the bound graphics pipeline /must/ not have been
+--     created with a non-zero value in
+--     'Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT'::@rasterizationStream@
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07620# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClamp depthClamp>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClampEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07621# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_POLYGON_MODE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07622# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07623# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-alphaToCoverageEnable-08919# If
+--     the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT'
+--     dynamic state enabled, and @alphaToCoverageEnable@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-fragmentoutput Fragment Output Interface>
+--     /must/ contain a variable for the alpha @Component@ word in
+--     @Location@ 0 at @Index@ 0
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-alphaToCoverageEnable-08920# If
+--     a shader object is bound to any graphics stage, and the most recent
+--     call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT'
+--     in the current command buffer set @alphaToCoverageEnable@ to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-fragmentoutput Fragment Output Interface>
+--     /must/ contain a variable for the alpha @Component@ word in
+--     @Location@ 0 at @Index@ 0
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07624# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07625# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-alphaToOne alphaToOne>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToOneEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07626# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-logicOp logicOp>
+--     feature is enabled, a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLogicOpEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07627# If a shader object
+--     is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and there are color
+--     attachments bound, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07629# If a shader object
+--     is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and there are color
+--     attachments bound, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07630# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryStreams geometryStreams>
+--     feature is enabled, and a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
+--     stage or a graphics pipeline is bound which was created with both a
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
+--     stage and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_STREAM_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationStreamEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07631# If the
+--     @VK_EXT_conservative_rasterization@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetConservativeRasterizationModeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07632# If the
+--     @VK_EXT_conservative_rasterization@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @conservativeRasterizationMode@ is
+--     'Vulkan.Extensions.VK_EXT_conservative_rasterization.CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT',
+--     then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetExtraPrimitiveOverestimationSizeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-conservativePointAndLineRasterization-07499#
+--     If the @VK_EXT_conservative_rasterization@ extension is enabled,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-conservativePointAndLineRasterization conservativePointAndLineRasterization>
+--     is not supported, a shader object is bound to any graphics stage or
+--     a graphics pipeline is bound, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line or point topology class, then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @conservativeRasterizationMode@ /must/ be
+--     'Vulkan.Extensions.VK_EXT_conservative_rasterization.CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07633# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClipEnable depthClipEnable>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT'
+--     dynamic state, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07636# If the
+--     @VK_EXT_provoking_vertex@ extension is enabled, a shader object is
+--     bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetProvokingVertexModeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08666# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
+--     features are enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line topology class, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08669# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
+--     features are enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line topology class, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07849# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
+--     features are enabled and a shader object is bound to any graphics
+--     stage, or a bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @stippledLineEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then
+--     'Vulkan.Core14.Promoted_From_VK_KHR_line_rasterization.cmdSetLineStipple'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-10608# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line topology class, and the current @lineRasterizationMode@
+--     is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_BRESENHAM'
+--     or
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH',
+--     then the current @alphaToCoverageEnable@, @alphaToOneEnable@ and
+--     @sampleShadingEnable@ states /must/ all be
+--     'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07639# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClipControl depthClipControl>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipNegativeOneToOneEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-09650# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClampControl depthClampControl>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @depthClampEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_depth_clamp_control.cmdSetDepthClampRangeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07640# If the
+--     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportWScalingEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07641# If the
+--     @VK_NV_viewport_swizzle@ extension is enabled, and a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07642# If the
+--     @VK_NV_fragment_coverage_to_color@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07643# If the
+--     @VK_NV_fragment_coverage_to_color@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @coverageToColorEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07644# If the
+--     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationModeNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07645# If the
+--     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @coverageModulationMode@ is any value other than
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.COVERAGE_MODULATION_MODE_NONE_NV',
+--     then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07646# If the
+--     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @coverageModulationTableEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07647# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetShadingRateImageEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-pipelineFragmentShadingRate-09238#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07648# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-representativeFragmentTest representativeFragmentTest>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRepresentativeFragmentTestEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07649# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-coverageReductionMode coverageReductionMode>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageReductionModeNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-rasterizationSamples-07471# If
+--     the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, and the current subpass does not use any color
+--     and\/or depth\/stencil attachments, then the @rasterizationSamples@
+--     in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     /must/ follow the rules for a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-noattachments zero-attachment subpass>
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-samples-07472# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
+--     state enabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state disabled, then the @samples@ parameter in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
+--     /must/ be greater or equal to the
+--     'Vulkan.Core10.GraphicsPipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
+--     parameter used to create the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-samples-07473# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
+--     state and
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     states enabled, then the @samples@ parameter in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
+--     /must/ be greater or equal to the @rasterizationSamples@ parameter
+--     in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-09211# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, or a shader object is bound to any graphics stage,
+--     and the current render pass instance includes a
+--     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'
+--     structure with @multisampledRenderToSingleSampledEnable@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then the
+--     @rasterizationSamples@ in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     /must/ be the same as the @rasterizationSamples@ member of that
+--     structure
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-firstAttachment-07476# If a
+--     shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--     dynamic states enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
+--     in the current command buffer prior to this drawing command /must/
+--     have set a value for all active color attachments
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-firstAttachment-07478# If a
+--     shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT'
+--     dynamic states enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
+--     in the current command buffer prior to this drawing command /must/
+--     have set a value for all active color attachments
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-advancedBlendMaxColorAttachments-07480#
+--     If a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
+--     and
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--     dynamic states enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and an active color
+--     attachment
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @blendEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then the
+--     number of active color attachments /must/ not exceed
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-advancedBlendMaxColorAttachments advancedBlendMaxColorAttachments>
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-10862# If a graphics
+--     pipeline is bound was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
+--     , but not the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command for all
+--     active color attachments with the @blendEnable@
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-rasterizerDiscardEnable-10863#
+--     If a graphics pipeline is bound was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT',
+--     but not the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command for all
+--     active color attachments with the @blendEnable@
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-10864# If a shader object
+--     is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
+--     and
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then either
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command for all
+--     active color attachments with the @blendEnable@
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-primitivesGeneratedQueryWithNonZeroStreams-07481#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>
+--     feature is not enabled and the
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
+--     query is active, and the bound graphics pipeline was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_STREAM_EXT'
+--     state enabled, the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationStreamEXT'
+--     /must/ have set the @rasterizationStream@ to zero
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-sampleLocationsPerPixel-07482#
+--     If the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state enabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state disabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then the @sampleLocationsPerPixel@ member of @pSampleLocationsInfo@
+--     in the last call to
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     /must/ equal the @rasterizationSamples@ member of the
+--     'Vulkan.Core10.GraphicsPipeline.PipelineMultisampleStateCreateInfo'
+--     structure the bound graphics pipeline has been created with
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-sampleLocationsPerPixel-07483#
+--     If the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state enabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then the @sampleLocationsPerPixel@ member of @pSampleLocationsInfo@
+--     in the last call to
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     /must/ equal the @rasterizationSamples@ parameter of the last call
+--     to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-sampleLocationsEnable-07484# If
+--     a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage, or the bound graphics pipeline was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     state enabled, and @sampleLocationsEnable@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT'
+--     then the current active depth attachment /must/ have been created
+--     with the
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'
+--     bit set
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-sampleLocationsEnable-07485# If
+--     a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage, or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state enabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     state enabled, and if @sampleLocationsEnable@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
+--     then the @sampleLocationsInfo.maxSampleLocationGridSize.width@ in
+--     the last call to
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     /must/ evenly divide
+--     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.width@
+--     as returned by
+--     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
+--     with a @samples@ parameter equaling @rasterizationSamples@
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-sampleLocationsEnable-07486# If
+--     a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage, or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state enabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     state enabled, and if @sampleLocationsEnable@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
+--     then the @sampleLocationsInfo.maxSampleLocationGridSize.height@ in
+--     the last call to
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     /must/ evenly divide
+--     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.height@
+--     as returned by
+--     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
+--     with a @samples@ parameter equaling @rasterizationSamples@
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-sampleLocationsEnable-07487# If
+--     a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage, or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     state enabled, and if @sampleLocationsEnable@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
+--     the fragment shader code /must/ not statically use the extended
+--     instruction @InterpolateAtSample@
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-sampleLocationsEnable-07936# If
+--     the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state disabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then @sampleLocationsInfo.sampleLocationGridSize.width@ /must/
+--     evenly divide
+--     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.width@
+--     as returned by
+--     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
+--     with a @samples@ parameter equaling the value of
+--     @rasterizationSamples@ in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-sampleLocationsEnable-07937# If
+--     the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state disabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then @sampleLocationsInfo.sampleLocationGridSize.height@ /must/
+--     evenly divide
+--     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.height@
+--     as returned by
+--     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
+--     with a @samples@ parameter equaling the value of
+--     @rasterizationSamples@ in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-sampleLocationsEnable-07938# If
+--     the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state disabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then @sampleLocationsInfo.sampleLocationsPerPixel@ /must/ equal
+--     @rasterizationSamples@ in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-coverageModulationTableEnable-07488#
+--     If a shader object is bound to any graphics stage or the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV'
+--     state enabled, and the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV'
+--     set @coverageModulationTableEnable@ to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then the
+--     @coverageModulationTableCount@ parameter in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableNV'
+--     /must/ equal the current @rasterizationSamples@ divided by the
+--     number of color samples in the current active color attachment
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-rasterizationSamples-07489# If
+--     the @VK_NV_framebuffer_mixed_samples@ extension is enabled, and if
+--     current subpass has a depth\/stencil attachment and depth test,
+--     stencil test, or depth bounds test are enabled in the bound
+--     pipeline, then the current @rasterizationSamples@ /must/ be the same
+--     as the sample count of the depth\/stencil attachment
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-coverageToColorEnable-07490# If
+--     the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
+--     state enabled and the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
+--     set the @coverageToColorEnable@ to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then there /must/ be an
+--     active color attachment at the location selected by the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
+--     @coverageToColorLocation@, with a
+--     'Vulkan.Core10.Enums.Format.Format' of
+--     'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R8_SINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R16_UINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R16_SINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R32_UINT', or
+--     'Vulkan.Core10.Enums.Format.FORMAT_R32_SINT'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-rasterizerDiscardEnable-09420#
+--     If the @VK_NV_fragment_coverage_to_color@ extension is enabled, and
+--     a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage, and the most recent call to
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
+--     in the current command buffer set @rasterizerDiscardEnable@ to
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
+--     set the @coverageToColorEnable@ to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then there /must/ be an
+--     active color attachment at the location selected by the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
+--     @coverageToColorLocation@, with a
+--     'Vulkan.Core10.Enums.Format.Format' of
+--     'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R8_SINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R16_UINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R16_SINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R32_UINT', or
+--     'Vulkan.Core10.Enums.Format.FORMAT_R32_SINT'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-coverageReductionMode-07491# If
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-coverageReductionMode coverageReductionMode>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV'
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     dynamic states enabled, then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current values>
+--     of @coverageReductionMode@, @rasterizationSamples@, the sample
+--     counts for the color and depth\/stencil attachments (if the subpass
+--     has them) /must/ be a valid combination returned by
+--     'Vulkan.Extensions.VK_NV_coverage_reduction_mode.getPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-viewportCount-07492# 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_SWIZZLE_NV'
+--     dynamic state enabled, 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-vkCmdDrawClusterIndirectHUAWEI-viewportCount-07493# 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_SWIZZLE_NV'
+--     dynamic states enabled then the @viewportCount@ parameter in the
+--     last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
+--     /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-vkCmdDrawClusterIndirectHUAWEI-viewportCount-09421# If the
+--     @VK_NV_viewport_swizzle@ extension is enabled, and a shader object
+--     is bound to any graphics stage, then the @viewportCount@ parameter
+--     in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
+--     /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-vkCmdDrawClusterIndirectHUAWEI-rasterizationSamples-07494# If
+--     the @VK_NV_framebuffer_mixed_samples@ extension is enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-coverageReductionMode coverageReductionMode>
+--     feature is not enabled, or the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @coverageReductionMode@ is not
+--     'Vulkan.Extensions.VK_NV_coverage_reduction_mode.COVERAGE_REDUCTION_MODE_TRUNCATE_NV',
+--     and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizationSamples@ is greater than sample count of the color
+--     attachment, then
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-sampleshading sample shading>
+--     /must/ be disabled
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-stippledLineEnable-07495# If
+--     the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic states enabled, and if the current @stippledLineEnable@
+--     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
+--     @lineRasterizationMode@ state is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_RECTANGULAR',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-stippledLineEnable-07496# If
+--     the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic states enabled, and if the current @stippledLineEnable@
+--     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
+--     @lineRasterizationMode@ state is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_BRESENHAM',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-stippledLineEnable-07497# If
+--     the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic states enabled, and if the current @stippledLineEnable@
+--     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
+--     @lineRasterizationMode@ state is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-stippledLineEnable-07498# If
+--     the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic states enabled, and if the current @stippledLineEnable@
+--     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
+--     @lineRasterizationMode@ state is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_DEFAULT',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>
+--     feature /must/ be enabled and
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@strictLines@
+--     /must/ be 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-stage-07073# If the bound
+--     pipeline was created with the
+--     'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo'::@stage@
+--     member of an element of
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'::@pStages@
+--     set to
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT',
+--     then
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-mesh-shader Mesh Shader Queries>
+--     /must/ not be active
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08877# If a shader object
+--     is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07850# If dynamic state
+--     was inherited from
+--     'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV',
+--     it /must/ be set in the current command buffer prior to this drawing
+--     command
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-nextStage-10745# For each
+--     shader object bound to a graphics stage, except for shader object
+--     bound to the last graphics stage in the logical pipeline, it /must/
+--     have been created with a @nextStage@ including the corresponding bit
+--     to the shader object bound to the following graphics stage in the
+--     logical pipeline
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08684# If there is no
+--     bound graphics pipeline,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08685# If there is no
+--     bound graphics pipeline, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellationShader>
+--     feature is enabled,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08686# If there is no
+--     bound graphics pipeline, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellationShader>
+--     feature is enabled,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08687# If there is no
+--     bound graphics pipeline, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometryShader>
+--     feature is enabled,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08688# If there is no
+--     bound graphics pipeline,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08689# If there is no
+--     bound graphics pipeline, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
+--     feature is enabled,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08690# If there is no
+--     bound graphics pipeline, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
+--     feature is enabled,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08693# If there is no
+--     bound graphics pipeline, and at least one of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
+--     features is enabled, one of the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--     stages /must/ have a valid 'Vulkan.Extensions.Handles.ShaderEXT'
+--     bound, and the other /must/ have no
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08696# If there is no
+--     bound graphics pipeline, and a valid
+--     'Vulkan.Extensions.Handles.ShaderEXT' is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage, there /must/ be no 'Vulkan.Extensions.Handles.ShaderEXT'
+--     bound to either the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--     stage or the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--     stage
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08698# If any graphics
+--     shader is bound which was created with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
+--     flag, then all shaders created with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
+--     flag in the same
+--     'Vulkan.Extensions.VK_EXT_shader_object.createShadersEXT' call
+--     /must/ also be bound
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08699# If any graphics
+--     shader is bound which was created with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
+--     flag, any stages in between stages whose shaders which did not
+--     create a shader with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
+--     flag as part of the same
+--     'Vulkan.Extensions.VK_EXT_shader_object.createShadersEXT' call
+--     /must/ not have any 'Vulkan.Extensions.Handles.ShaderEXT' bound
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08878# All bound graphics
+--     shader objects /must/ have been created with identical or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-identically-defined identically defined>
+--     push constant ranges
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08879# All bound graphics
+--     shader objects /must/ have either been created with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag set, or with identical or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-identically-defined identically defined>
+--     arrays of descriptor set layouts
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-colorAttachmentCount-09372# If
+--     the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and a
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
+--     equal to @1@, a color attachment with a resolve mode of
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID',
+--     and a fragment shader is bound, it /must/ not declare the
+--     @DepthReplacing@ or @StencilRefReplacingEXT@ execution modes
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-pDynamicStates-08715# If the
+--     bound graphics pipeline state includes a fragment shader stage, was
+--     created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE'
+--     set in
+--     'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@,
+--     and the fragment shader declares the @EarlyFragmentTests@ execution
+--     mode and uses @OpDepthAttachmentReadEXT@, the @depthWriteEnable@
+--     parameter in the last call to
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthWriteEnable'
+--     /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-pDynamicStates-08716# If the
+--     bound graphics pipeline state includes a fragment shader stage, was
+--     created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_WRITE_MASK'
+--     set in
+--     'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@,
+--     and the fragment shader declares the @EarlyFragmentTests@ execution
+--     mode and uses @OpStencilAttachmentReadEXT@, the @writeMask@
+--     parameter in the last call to
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilWriteMask' /must/
+--     be @0@
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-09116# If a shader object
+--     is bound to any graphics stage or the bound graphics pipeline was
+--     created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT',
+--     and the format of any color attachment is
+--     'Vulkan.Core10.Enums.Format.FORMAT_E5B9G9R9_UFLOAT_PACK32', the
+--     corresponding element of the @pColorWriteMasks@ parameter of
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
+--     /must/ either include all of
+--     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_R_BIT',
+--     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_G_BIT',
+--     and
+--     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_B_BIT',
+--     or none of them
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-maxFragmentDualSrcAttachments-09239#
+--     If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blending blending>
+--     is enabled for any attachment where either the source or destination
+--     blend factors for that attachment
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-dsb use the secondary color input>,
+--     the maximum value of @Location@ for any output attachment
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-staticuse statically used>
+--     in the @Fragment@ @Execution@ @Model@ executed by this command
+--     /must/ be less than
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFragmentDualSrcAttachments maxFragmentDualSrcAttachments>
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-09548# If the current
+--     render pass was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there is no shader object bound to any graphics stage, the value of
+--     each element of
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingAttachmentLocationInfo'::@pColorAttachmentLocations@
+--     in the bound pipeline /must/ match the value for the corresponding
+--     locations set currently in the current render pass instance
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-09549# If the current
+--     render pass was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     and there is no shader object bound to any graphics stage, the value
+--     of each element of
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pColorAttachmentInputIndices@
+--     in the bound pipeline /must/ match the value for the corresponding
+--     index set currently in the current render pass instance
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-10927# If the current
+--     render pass was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     and there is no shader object bound to any graphics stage, the value
+--     of
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pDepthInputAttachmentIndex@
+--     in the bound pipeline /must/ match the value set currently in the
+--     current render pass instance
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-10928# If the current
+--     render pass was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     and there is no shader object bound to any graphics stage, the value
+--     of
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pStencilInputAttachmentIndex@
+--     in the bound pipeline /must/ match the value set currently in the
+--     current render pass instance
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-09642# If the current
+--     render pass was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     with the
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT'
+--     flag, the bound graphics pipeline /must/ have been created with
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-09643# If the bound
+--     graphics pipeline was created with
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT',
+--     the current render pass /must/ have begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     with the
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT'
+--     flag
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-10677# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model>
+--     is enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tileShadingPerTileDraw tileShadingPerTileDraw>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-10772# If a shader object
+--     is bound to any graphics stage, /multiview/ functionality /must/ not
+--     be enabled in the current render pass
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-multiviewPerViewViewports-12262#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiviewPerViewViewports multiviewPerViewViewports>
+--     feature is enabled, then the index of the most significant bit in
+--     current render pass instance @viewMask@ /must/ be less than the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @viewportCount@
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-multiviewPerViewViewports-12263#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiviewPerViewViewports multiviewPerViewViewports>
+--     feature is enabled, then the index of the most significant bit in
+--     current render pass instance @viewMask@ /must/ be less than the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @scissorCount@
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-flags-11521# If current render
+--     pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@flags@
+--     which includes
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_FRAGMENT_REGION_BIT_EXT',
+--     and if
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-sampleshading sample shading>
+--     is enabled (explicitly or implicitly), then the minimum fraction for
+--     sample shading /must/ equal 0.0
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-11522# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and contains a custom resolve, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, the graphics pipeline bound /must/ have been
+--     created with a
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-11523# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and does not contain a custom resolve, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, the graphics pipeline bound /must/ not have
+--     been created with a
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-customResolve-11524# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, the graphics pipeline
+--     bound /must/ have been created with
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@
+--     as 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-customResolve-11525# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and contains a custom resolve, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not been recorded in the render pass instance, the graphics
+--     pipeline bound /must/ have been created with
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@
+--     as 'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-11861# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled and the current render pass instance was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and contains a custom resolve, the bound graphics pipeline /must/
+--     have been created with a
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@colorAttachmentCount@
+--     equal to
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-11862# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and the current render pass instance was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, 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 an @resolveImageView@ 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_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@
+--     used to create the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-11863# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and the current render pass instance was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, 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 an @resolveImageView@ equal to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have the
+--     corresponding element of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@
+--     used to create the bound pipeline equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-dynamicRenderingUnusedAttachments-11864#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled, the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, 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 an @resolveImageView@ 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_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@
+--     used to create the bound graphics pipeline, or the corresponding
+--     element of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@,
+--     if it exists, /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-11865# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@
+--     used to create the bound graphics pipeline /must/ be equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-11866# If current render
+--     pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@
+--     used to create the 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->resolveImageView@
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-dynamicRenderingUnusedAttachments-11867#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@
+--     used to create the bound graphics pipeline was not equal to the
+--     'Vulkan.Core10.Enums.Format.Format' used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@,
+--     the value of the format /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-11868# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@
+--     used to create the bound graphics pipeline /must/ be equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-11869# If current render
+--     pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@
+--     used to create the 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->resolveImageView@
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-dynamicRenderingUnusedAttachments-11870#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@
+--     used to create the bound graphics pipeline was not equal to the
+--     'Vulkan.Core10.Enums.Format.Format' used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@,
+--     the value of the format /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-colorAttachmentCount-11871# If
+--     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@ and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, then for each element
+--     of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
+--     array with a @resolveImageView@ not equal to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', the @resolveImageView@
+--     /must/ have been created with a sample count equal to the value of
+--     @rasterizationSamples@ for the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-pDepthAttachment-11872# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     @rasterizationSamples@ for the bound graphics pipeline /must/ be
+--     equal to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-pStencilAttachment-11873# If
+--     the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     @rasterizationSamples@ for the bound graphics pipeline /must/ be
+--     equal to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-customResolve-11529# If a
+--     shader object is bound to the fragment stage, the current render
+--     pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     a fragment density map attachment is active, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been called, then the fragment shader object bound /must/ have
+--     been created with
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@
+--     as 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-customResolve-11530# If a
+--     shader object is bound to the fragment stage, the current render
+--     pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and contains a custom resolve, a fragment density map attachment is
+--     active, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been called, then the fragment shader object bound
+--     /must/ have been created with
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@
+--     as 'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-flags-13361# If there are any
+--     shader objects bound that were created with @flags@ that includes
+--     the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     bit, then all bound shader objects /must/ have been created with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     bit
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-flags-13362# If there are any
+--     shader objects bound that were created with @flags@ that includes
+--     the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     bit, then the pipeline layout of the bound descriptor sets /must/
+--     have been created with
+--     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT'
+--     set
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-flags-13363# If there are any
+--     shader objects bound that were created with @flags@ that includes
+--     the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     bit, and any of the descriptor set layouts used to create the
+--     pipeline layout of the bound descriptor sets were created with any
+--     binding’s
+--     'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutBinding'::@stageFlags@
+--     set with
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT',
+--     then there /must/ be no binding with
+--     'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutBinding'::@stageFlags@
+--     set with
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-flags-13364# If there are any
+--     shader objects bound that were created with @flags@ that includes
+--     both the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     and
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
+--     bits, the pipeline layout of the bound descriptor sets /must/ have
+--     been created with
+--     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_NO_TASK_SHADER_BIT_KHR'
+--     set
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-flags-13365# If there are any
+--     shader objects bound that were created with @flags@ that includes
+--     both the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     and
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
+--     bits, there /must/ be no shader object bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--     stage
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-stage-06480# The bound graphics
+--     pipeline /must/ not have been created with the
+--     'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo'::@stage@
+--     member of any element of
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'::@pStages@
+--     set to
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-pStages-10680# If there is no
+--     bound graphics pipeline,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     not have last bound the @pStages@ element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
+--     with a valid shader object other than
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07074#
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-transform-feedback Transform Feedback Queries>
+--     /must/ not be active
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-07075#
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-primitives-generated Primitives Generated Queries>
+--     /must/ not be active
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-pipelineStatistics-07076# The
+--     @pipelineStatistics@ member used to create any active
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-pipestats Pipeline Statistics Query>
+--     /must/ not contain
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT',
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT',
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT',
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT',
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT',
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT',
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT',
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT',
+--     or
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT'
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08694# If there is no
+--     bound graphics pipeline, and both the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
+--     features are enabled, and a valid
+--     'Vulkan.Extensions.Handles.ShaderEXT' is bound the to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--     stage, and that 'Vulkan.Extensions.Handles.ShaderEXT' was created
+--     without the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
+--     flag, a valid 'Vulkan.Extensions.Handles.ShaderEXT' /must/ be bound
+--     to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--     stage
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-None-08695# If there is no
+--     bound graphics pipeline, and both the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
+--     features are enabled, and a valid
+--     'Vulkan.Extensions.Handles.ShaderEXT' is bound the to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--     stage, and that 'Vulkan.Extensions.Handles.ShaderEXT' was created
+--     with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
+--     flag, there /must/ be no 'Vulkan.Extensions.Handles.ShaderEXT' bound
+--     to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--     stage
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-drawCount-02718# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiDrawIndirect multiDrawIndirect>
+--     feature is not enabled, @drawCount@ /must/ be @0@ or @1@
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-drawCount-02719# @drawCount@
+--     /must/ be less than or equal to
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxDrawIndirectCount@
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-ClusterCullingHUAWEI-07824# The
+--     current pipeline bound to
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
+--     /must/ contain a shader stage using the @ClusterCullingHUAWEI@
+--     @Execution@ @Model@
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-offset-07918# @offset@ /must/
+--     be a multiple of
+--     'PhysicalDeviceClusterCullingShaderPropertiesHUAWEI'::@indirectBufferOffsetAlignment@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-buffer-parameter# @buffer@
+--     /must/ be a valid 'Vulkan.Core10.Handles.Buffer' handle
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-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-vkCmdDrawClusterIndirectHUAWEI-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-renderpass# This command /must/
+--     only be called inside of a render pass instance
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-suspended# This command /must/
+--     not be called between suspended render pass instances
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-videocoding# This command
+--     /must/ only be called outside of a video coding scope
+--
+-- -   #VUID-vkCmdDrawClusterIndirectHUAWEI-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#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Inside                                                                                                                 | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdDrawClusterIndirectHUAWEI is affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_HUAWEI_cluster_culling_shader VK_HUAWEI_cluster_culling_shader>,
+-- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize'
+cmdDrawClusterIndirectHUAWEI :: 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)
+                             -> io ()
+cmdDrawClusterIndirectHUAWEI commandBuffer buffer offset = liftIO $ do
+  let vkCmdDrawClusterIndirectHUAWEIPtr = pVkCmdDrawClusterIndirectHUAWEI (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  unless (vkCmdDrawClusterIndirectHUAWEIPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdDrawClusterIndirectHUAWEI is null" Nothing Nothing
+  let vkCmdDrawClusterIndirectHUAWEI' = mkVkCmdDrawClusterIndirectHUAWEI vkCmdDrawClusterIndirectHUAWEIPtr
+  traceAroundEvent "vkCmdDrawClusterIndirectHUAWEI" (vkCmdDrawClusterIndirectHUAWEI'
+                                                       (commandBufferHandle (commandBuffer))
+                                                       (buffer)
+                                                       (offset))
+  pure $ ()
+
+
+-- | VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI - Structure
+-- describing cluster culling shader properties supported by an
+-- implementation
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceClusterCullingShaderPropertiesHUAWEI' 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.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_HUAWEI_cluster_culling_shader VK_HUAWEI_cluster_culling_shader>,
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceClusterCullingShaderPropertiesHUAWEI = PhysicalDeviceClusterCullingShaderPropertiesHUAWEI
+  { -- | @maxWorkGroupCount@[3] is the maximum number of local workgroups that
+    -- can be launched by a single command. These three value represent the
+    -- maximum local workgroup count in the X, Y, and Z dimensions,
+    -- respectively. In the current implementation, the values of Y and Z are
+    -- both implicitly set as one. groupCountX of DrawCluster command /must/ be
+    -- less than or equal to maxWorkGroupCount[0].
+    maxWorkGroupCount :: (Word32, Word32, Word32)
+  , -- | @maxWorkGroupSize@[3] is the maximum size of a local workgroup. These
+    -- three value represent the maximum local workgroup size in the X, Y, and
+    -- Z dimensions, respectively. The x, y, and z sizes, as specified by the
+    -- @LocalSize@ or @LocalSizeId@ execution mode or by the object decorated
+    -- by the WorkgroupSize decoration in shader modules, /must/ be less than
+    -- or equal to the corresponding limit. In the current implementation, the
+    -- maximum workgroup size of the X dimension is 32, the others are 1.
+    maxWorkGroupSize :: (Word32, Word32, Word32)
+  , -- | @maxOutputClusterCount@ is the maximum number of output cluster a single
+    -- cluster culling shader workgroup can emit.
+    maxOutputClusterCount :: Word32
+  , -- | @indirectBufferOffsetAlignment@ indicates the alignment for cluster
+    -- drawing command buffer stride. 'cmdDrawClusterIndirectHUAWEI'::@offset@
+    -- /must/ be a multiple of this value.
+    indirectBufferOffsetAlignment :: DeviceSize
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceClusterCullingShaderPropertiesHUAWEI)
+#endif
+deriving instance Show PhysicalDeviceClusterCullingShaderPropertiesHUAWEI
+
+instance ToCStruct PhysicalDeviceClusterCullingShaderPropertiesHUAWEI where
+  withCStruct x f = allocaBytes 56 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceClusterCullingShaderPropertiesHUAWEI{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    let pMaxWorkGroupCount' = lowerArrayPtr ((p `plusPtr` 16 :: Ptr (FixedArray 3 Word32)))
+    case (maxWorkGroupCount) of
+      (e0, e1, e2) -> do
+        poke (pMaxWorkGroupCount' :: Ptr Word32) (e0)
+        poke (pMaxWorkGroupCount' `plusPtr` 4 :: Ptr Word32) (e1)
+        poke (pMaxWorkGroupCount' `plusPtr` 8 :: Ptr Word32) (e2)
+    let pMaxWorkGroupSize' = lowerArrayPtr ((p `plusPtr` 28 :: Ptr (FixedArray 3 Word32)))
+    case (maxWorkGroupSize) of
+      (e0, e1, e2) -> do
+        poke (pMaxWorkGroupSize' :: Ptr Word32) (e0)
+        poke (pMaxWorkGroupSize' `plusPtr` 4 :: Ptr Word32) (e1)
+        poke (pMaxWorkGroupSize' `plusPtr` 8 :: Ptr Word32) (e2)
+    poke ((p `plusPtr` 40 :: Ptr Word32)) (maxOutputClusterCount)
+    poke ((p `plusPtr` 48 :: Ptr DeviceSize)) (indirectBufferOffsetAlignment)
+    f
+  cStructSize = 56
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    let pMaxWorkGroupCount' = lowerArrayPtr ((p `plusPtr` 16 :: Ptr (FixedArray 3 Word32)))
+    case ((zero, zero, zero)) of
+      (e0, e1, e2) -> do
+        poke (pMaxWorkGroupCount' :: Ptr Word32) (e0)
+        poke (pMaxWorkGroupCount' `plusPtr` 4 :: Ptr Word32) (e1)
+        poke (pMaxWorkGroupCount' `plusPtr` 8 :: Ptr Word32) (e2)
+    let pMaxWorkGroupSize' = lowerArrayPtr ((p `plusPtr` 28 :: Ptr (FixedArray 3 Word32)))
+    case ((zero, zero, zero)) of
+      (e0, e1, e2) -> do
+        poke (pMaxWorkGroupSize' :: Ptr Word32) (e0)
+        poke (pMaxWorkGroupSize' `plusPtr` 4 :: Ptr Word32) (e1)
+        poke (pMaxWorkGroupSize' `plusPtr` 8 :: Ptr Word32) (e2)
+    poke ((p `plusPtr` 40 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 48 :: Ptr DeviceSize)) (zero)
+    f
+
+instance FromCStruct PhysicalDeviceClusterCullingShaderPropertiesHUAWEI where
+  peekCStruct p = do
+    let pmaxWorkGroupCount = lowerArrayPtr @Word32 ((p `plusPtr` 16 :: Ptr (FixedArray 3 Word32)))
+    maxWorkGroupCount0 <- peek @Word32 ((pmaxWorkGroupCount `advancePtrBytes` 0 :: Ptr Word32))
+    maxWorkGroupCount1 <- peek @Word32 ((pmaxWorkGroupCount `advancePtrBytes` 4 :: Ptr Word32))
+    maxWorkGroupCount2 <- peek @Word32 ((pmaxWorkGroupCount `advancePtrBytes` 8 :: Ptr Word32))
+    let pmaxWorkGroupSize = lowerArrayPtr @Word32 ((p `plusPtr` 28 :: Ptr (FixedArray 3 Word32)))
+    maxWorkGroupSize0 <- peek @Word32 ((pmaxWorkGroupSize `advancePtrBytes` 0 :: Ptr Word32))
+    maxWorkGroupSize1 <- peek @Word32 ((pmaxWorkGroupSize `advancePtrBytes` 4 :: Ptr Word32))
+    maxWorkGroupSize2 <- peek @Word32 ((pmaxWorkGroupSize `advancePtrBytes` 8 :: Ptr Word32))
+    maxOutputClusterCount <- peek @Word32 ((p `plusPtr` 40 :: Ptr Word32))
+    indirectBufferOffsetAlignment <- peek @DeviceSize ((p `plusPtr` 48 :: Ptr DeviceSize))
+    pure $ PhysicalDeviceClusterCullingShaderPropertiesHUAWEI
+             ((maxWorkGroupCount0, maxWorkGroupCount1, maxWorkGroupCount2))
+             ((maxWorkGroupSize0, maxWorkGroupSize1, maxWorkGroupSize2))
+             maxOutputClusterCount
+             indirectBufferOffsetAlignment
+
+instance Storable PhysicalDeviceClusterCullingShaderPropertiesHUAWEI where
+  sizeOf ~_ = 56
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceClusterCullingShaderPropertiesHUAWEI where
+  zero = PhysicalDeviceClusterCullingShaderPropertiesHUAWEI
+           (zero, zero, zero)
+           (zero, zero, zero)
+           zero
+           zero
+
+
+-- | VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI - Structure
+-- describing whether cluster culling shader is enabled
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceClusterCullingShaderFeaturesHUAWEI' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceClusterCullingShaderFeaturesHUAWEI', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_HUAWEI_cluster_culling_shader VK_HUAWEI_cluster_culling_shader>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceClusterCullingShaderFeaturesHUAWEI (es :: [Type]) = PhysicalDeviceClusterCullingShaderFeaturesHUAWEI
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
+    next :: Chain es
+  , -- | #features-clustercullingShader# @clustercullingShader@ specifies whether
+    -- cluster culling shader is supported.
+    clustercullingShader :: Bool
+  , -- | #features-multiviewClusterCullingShader# @multiviewClusterCullingShader@
+    -- specifies whether multiview is supported.
+    multiviewClusterCullingShader :: Bool
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceClusterCullingShaderFeaturesHUAWEI (es :: [Type]))
+#endif
+deriving instance Show (Chain es) => Show (PhysicalDeviceClusterCullingShaderFeaturesHUAWEI es)
+
+instance Extensible PhysicalDeviceClusterCullingShaderFeaturesHUAWEI where
+  extensibleTypeName = "PhysicalDeviceClusterCullingShaderFeaturesHUAWEI"
+  setNext PhysicalDeviceClusterCullingShaderFeaturesHUAWEI{..} next' = PhysicalDeviceClusterCullingShaderFeaturesHUAWEI{next = next', ..}
+  getNext PhysicalDeviceClusterCullingShaderFeaturesHUAWEI{..} = next
+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends PhysicalDeviceClusterCullingShaderFeaturesHUAWEI e => b) -> Maybe b
+  extends _ f
+    | Just Refl <- eqT @e @PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI = Just f
+    | otherwise = Nothing
+
+instance ( Extendss PhysicalDeviceClusterCullingShaderFeaturesHUAWEI es
+         , PokeChain es ) => ToCStruct (PhysicalDeviceClusterCullingShaderFeaturesHUAWEI es) where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceClusterCullingShaderFeaturesHUAWEI{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI)
+    pNext'' <- fmap castPtr . ContT $ withChain (next)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
+    lift $ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (clustercullingShader))
+    lift $ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (multiviewClusterCullingShader))
+    lift $ f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI)
+    pNext' <- fmap castPtr . ContT $ withZeroChain @es
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
+    lift $ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    lift $ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))
+    lift $ f
+
+instance ( Extendss PhysicalDeviceClusterCullingShaderFeaturesHUAWEI es
+         , PeekChain es ) => FromCStruct (PhysicalDeviceClusterCullingShaderFeaturesHUAWEI es) where
+  peekCStruct p = do
+    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
+    next <- peekChain (castPtr pNext)
+    clustercullingShader <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    multiviewClusterCullingShader <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
+    pure $ PhysicalDeviceClusterCullingShaderFeaturesHUAWEI
+             next
+             (bool32ToBool clustercullingShader)
+             (bool32ToBool multiviewClusterCullingShader)
+
+instance es ~ '[] => Zero (PhysicalDeviceClusterCullingShaderFeaturesHUAWEI es) where
+  zero = PhysicalDeviceClusterCullingShaderFeaturesHUAWEI
+           ()
+           zero
+           zero
+
+
+-- | VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI - Structure
+-- describing whether cluster culling shader support VRS
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'PhysicalDeviceClusterCullingShaderFeaturesHUAWEI'
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Extensions/VK_HUAWEI_cluster_culling_shader.hs-boot b/src/Vulkan/Extensions/VK_HUAWEI_cluster_culling_shader.hs-boot
--- a/src/Vulkan/Extensions/VK_HUAWEI_cluster_culling_shader.hs-boot
+++ b/src/Vulkan/Extensions/VK_HUAWEI_cluster_culling_shader.hs-boot
@@ -84,8 +84,8 @@
 -- A set of new built-in output variables are used to express a visible
 -- cluster, including per-cluster shading rate. In addition, a new built-in
 -- function is used to emit these variables from CCS to the IA stage. The
--- IA stage can use these variables to fetches vertices of a visible
--- cluster and drive vertex shaders to shading these vertices.
+-- IA stage can use these variables to fetch vertices of a visible cluster
+-- and drive vertex shaders to shading these vertices.
 --
 -- Note that CCS do not work with geometry or tessellation shaders, but
 -- both IA and vertex shaders are preserved. Vertex shaders are still used
@@ -147,27 +147,27 @@
 --
 -- == New Built-In Variables
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-indexcounthuawei IndexCountHUAWEI>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-indexcounthuawei IndexCountHUAWEI>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-vertexcounthuawei VertexCountHUAWEI>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-vertexcounthuawei VertexCountHUAWEI>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-instancecounthuawei InstanceCountHUAWEI>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-instancecounthuawei InstanceCountHUAWEI>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-firstindexhuawei FirstIndexHUAWEI>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-firstindexhuawei FirstIndexHUAWEI>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-firstvertexhuawei FirstVertexHUAWEI>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-firstvertexhuawei FirstVertexHUAWEI>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-vertexoffsethuawei VertexOffsetHUAWEI>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-vertexoffsethuawei VertexOffsetHUAWEI>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-firstinstancehuawei FirstInstanceHUAWEI>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-firstinstancehuawei FirstInstanceHUAWEI>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-clusteridhuawei ClusterIDHUAWEI>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-clusteridhuawei ClusterIDHUAWEI>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-clustershadingratehuawei ClusterShadingRateHUAWEI>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-clustershadingratehuawei ClusterShadingRateHUAWEI>
 --
 -- == New SPIR-V Capability
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-ClusterCullingShadingHUAWEI ClusterCullingShadingHUAWEI>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-ClusterCullingShadingHUAWEI ClusterCullingShadingHUAWEI>
 --
 -- == Sample Code
 --
@@ -356,7 +356,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_HUAWEI_cluster_culling_shader Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_HUAWEI_cluster_culling_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_HUAWEI_hdr_vivid.hs b/src/Vulkan/Extensions/VK_HUAWEI_hdr_vivid.hs
--- a/src/Vulkan/Extensions/VK_HUAWEI_hdr_vivid.hs
+++ b/src/Vulkan/Extensions/VK_HUAWEI_hdr_vivid.hs
@@ -101,7 +101,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_HUAWEI_hdr_vivid Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_HUAWEI_hdr_vivid Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -149,8 +149,12 @@
 -- 005.1-2022 specification. The validity and use of this data is outside
 -- the scope of Vulkan.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Extensions.VK_EXT_hdr_metadata.HdrMetadataEXT'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_HUAWEI_hdr_vivid VK_HUAWEI_hdr_vivid>,
@@ -221,11 +225,21 @@
 -- 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. 'PhysicalDeviceHdrVividFeaturesHUAWEI' /can/ also be used in
--- the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceHdrVividFeaturesHUAWEI', it /must/ add an instance of the
+-- structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Extensions/VK_HUAWEI_hdr_vivid.hs-boot b/src/Vulkan/Extensions/VK_HUAWEI_hdr_vivid.hs-boot
--- a/src/Vulkan/Extensions/VK_HUAWEI_hdr_vivid.hs-boot
+++ b/src/Vulkan/Extensions/VK_HUAWEI_hdr_vivid.hs-boot
@@ -101,7 +101,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_HUAWEI_hdr_vivid Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_HUAWEI_hdr_vivid Vulkan Specification>.
 --
 -- This 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
@@ -151,7 +151,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_HUAWEI_invocation_mask Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -216,7 +216,7 @@
 -- == Valid Usage
 --
 -- -   #VUID-vkCmdBindInvocationMaskHUAWEI-None-04976# The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-invocationMask invocationMask>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-invocationMask invocationMask>
 --     feature /must/ be enabled
 --
 -- -   #VUID-vkCmdBindInvocationMaskHUAWEI-imageView-04977# If @imageView@
@@ -230,9 +230,9 @@
 --
 -- -   #VUID-vkCmdBindInvocationMaskHUAWEI-imageView-04979# If @imageView@
 --     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', it /must/ have been
---     created with
+--     created with the
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INVOCATION_MASK_BIT_HUAWEI'
---     set
+--     usage flag set
 --
 -- -   #VUID-vkCmdBindInvocationMaskHUAWEI-imageView-04980# If @imageView@
 --     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @imageLayout@
@@ -271,7 +271,8 @@
 --
 -- -   #VUID-vkCmdBindInvocationMaskHUAWEI-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support compute operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT' operations
 --
 -- -   #VUID-vkCmdBindInvocationMaskHUAWEI-renderpass# This command /must/
 --     only be called outside of a render pass instance
@@ -298,10 +299,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | Compute                                                                                                               | State                                                                                                                                  |
+-- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | State                                                                                                                                  |
 -- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdBindInvocationMaskHUAWEI is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_HUAWEI_invocation_mask VK_HUAWEI_invocation_mask>,
@@ -348,11 +354,21 @@
 -- 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. 'PhysicalDeviceInvocationMaskFeaturesHUAWEI' /can/ also be
--- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceInvocationMaskFeaturesHUAWEI', it /must/ add an instance
+-- of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
 --
 -- = See Also
 --
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
@@ -151,7 +151,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_HUAWEI_invocation_mask Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -96,7 +96,7 @@
 --
 -- == New Structures
 --
--- -   Extending 'Vulkan.Core10.Pipeline.ComputePipelineCreateInfo':
+-- -   Extending 'Vulkan.Core10.ComputePipeline.ComputePipelineCreateInfo':
 --
 --     -   'SubpassShadingPipelineCreateInfoHUAWEI'
 --
@@ -354,7 +354,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_HUAWEI_subpass_shading Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -446,12 +446,16 @@
 --
 -- [<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_OUT_OF_HOST_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_SURFACE_LOST_KHR'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_HUAWEI_subpass_shading VK_HUAWEI_subpass_shading>,
@@ -466,7 +470,14 @@
                                                  -- #VUID-vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI-device-parameter#
                                                  -- @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
                                                  Device
-                                              -> -- | #VUID-vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI-renderpass-parameter#
+                                              -> -- | @renderpass@ is a handle to a render pass object describing the
+                                                 -- 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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-compatibility Render Pass Compatibility>
+                                                 -- for more information.
+                                                 --
+                                                 -- #VUID-vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI-renderpass-parameter#
                                                  -- @renderpass@ /must/ be a valid 'Vulkan.Core10.Handles.RenderPass' handle
                                                  --
                                                  -- #VUID-vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI-renderpass-parent#
@@ -564,7 +575,7 @@
 --     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
 --     the image view’s @levelCount@ and @layerCount@ /must/ be 1
 --
--- -   #VUID-vkCmdSubpassShadingHUAWEI-unnormalizedCoordinates-09636# If a
+-- -   #VUID-vkCmdSubpassShadingHUAWEI-None-08609# If a
 --     'Vulkan.Core10.Handles.Sampler' created with
 --     @unnormalizedCoordinates@ equal to
 --     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
@@ -573,6 +584,24 @@
 --     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D' or
 --     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D'
 --
+-- -   #VUID-vkCmdSubpassShadingHUAWEI-None-08610# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the sampler /must/ not be used with any of the SPIR-V
+--     @OpImageSample*@ or @OpImageSparseSample*@ instructions with
+--     @ImplicitLod@, @Dref@ or @Proj@ in their name
+--
+-- -   #VUID-vkCmdSubpassShadingHUAWEI-None-08611# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the sampler /must/ not be used with any of the SPIR-V
+--     @OpImageSample*@ or @OpImageSparseSample*@ instructions that
+--     includes a LOD bias or any offset values
+--
 -- -   #VUID-vkCmdSubpassShadingHUAWEI-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>,
@@ -705,29 +734,22 @@
 --     /must/ contain
 --     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT'
 --
--- -   #VUID-vkCmdSubpassShadingHUAWEI-None-08600# For each set /n/ that is
---     statically used by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     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' or the
---     'Vulkan.Core10.Handles.DescriptorSetLayout' array used to create the
---     current 'Vulkan.Extensions.Handles.ShaderEXT' , as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
+-- -   #VUID-vkCmdSubpassShadingHUAWEI-None-08600# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
+--     was created with a pipeline layout and statically uses a set /n/, a
+--     descriptor set /must/ have been bound to /n/ at the same pipeline
+--     bind point, with layouts compatible for set /n/ with the layout(s)
+--     used to create the shader, as described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptors-compatibility ???>
 --
--- -   #VUID-vkCmdSubpassShadingHUAWEI-None-08601# For each push constant
---     that is statically used by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     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' or the
---     'Vulkan.Core10.Handles.DescriptorSetLayout' array used to create the
---     current 'Vulkan.Extensions.Handles.ShaderEXT' , as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
+-- -   #VUID-vkCmdSubpassShadingHUAWEI-None-08601# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
+--     was created with a pipeline layout or specified push constant ranges
+--     and statically uses a push constant value, that value /must/ have
+--     been set for the same pipeline bind point, with push constant ranges
+--     that are
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptors-compatibility compatible>
+--     with the push constant range used to create the shader
 --
 -- -   #VUID-vkCmdSubpassShadingHUAWEI-None-10068# For each array of
 --     resources that is used by
@@ -736,32 +758,23 @@
 --     the descriptor count for the identified binding in the descriptor
 --     sets used by this command
 --
--- -   #VUID-vkCmdSubpassShadingHUAWEI-maintenance4-08602# 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
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     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' or the
---     'Vulkan.Core10.Handles.DescriptorSetLayout' and
---     'Vulkan.Core10.PipelineLayout.PushConstantRange' arrays used to
---     create the current 'Vulkan.Extensions.Handles.ShaderEXT' , as
---     described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
---
 -- -   #VUID-vkCmdSubpassShadingHUAWEI-None-08114# Descriptors in each
 --     bound descriptor set, specified via
 --     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
---     be valid as described by
+--     be valid if they are accessed as described by
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
---     if they are statically used by the 'Vulkan.Core10.Handles.Pipeline'
---     bound to the pipeline bind point used by this command and the bound
+--     by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
+--     point used by this command and the bound
 --     'Vulkan.Core10.Handles.Pipeline' was not created with
 --     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
 --
+-- -   #VUID-vkCmdSubpassShadingHUAWEI-imageLayout-00344# If an image
+--     descriptor is accessed by a shader, the
+--     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' /must/ match the
+--     subresource accessible from the 'Vulkan.Core10.Handles.ImageView' 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>
+--
 -- -   #VUID-vkCmdSubpassShadingHUAWEI-None-08115# If the descriptors used
 --     by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
 --     point were specified via
@@ -819,57 +832,13 @@
 --     bound to the pipeline bind point used by this command, since that
 --     pipeline was bound
 --
--- -   #VUID-vkCmdSubpassShadingHUAWEI-None-08609# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command or any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdSubpassShadingHUAWEI-None-08610# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command or any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdSubpassShadingHUAWEI-None-08611# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command or any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdSubpassShadingHUAWEI-None-08607# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject>
---     feature is enabled, either a valid pipeline /must/ be bound to the
---     pipeline bind point used by this command, or a valid combination of
---     valid and 'Vulkan.Core10.APIConstants.NULL_HANDLE' shader objects
---     /must/ be bound to every supported shader stage corresponding to the
---     pipeline bind point used by this command
---
 -- -   #VUID-vkCmdSubpassShadingHUAWEI-uniformBuffers-06935# If any stage
 --     of the 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline
 --     bind point used by this command accesses a uniform buffer, and that
 --     stage was created without enabling either
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT'
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
 --     or
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT'
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
 --     for @uniformBuffers@, and the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
 --     feature is not enabled, that stage /must/ not access values outside
@@ -889,9 +858,9 @@
 --     of the 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline
 --     bind point used by this command accesses a storage buffer, and that
 --     stage was created without enabling either
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT'
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
 --     or
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT'
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
 --     for @storageBuffers@, and the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
 --     feature is not enabled, that stage /must/ not access values outside
@@ -914,21 +883,6 @@
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shaders>
 --     /must/ not be a protected resource
 --
--- -   #VUID-vkCmdSubpassShadingHUAWEI-None-06550# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
---     accesses a 'Vulkan.Core10.Handles.Sampler' or
---     'Vulkan.Core10.Handles.ImageView' object that enables
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,
---     that object /must/ only be used with @OpImageSample*@ or
---     @OpImageSparseSample*@ instructions
---
--- -   #VUID-vkCmdSubpassShadingHUAWEI-ConstOffset-06551# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
---     accesses a 'Vulkan.Core10.Handles.Sampler' or
---     'Vulkan.Core10.Handles.ImageView' object that enables
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,
---     that object /must/ not use the @ConstOffset@ and @Offset@ operands
---
 -- -   #VUID-vkCmdSubpassShadingHUAWEI-viewType-07752# If a
 --     'Vulkan.Core10.Handles.ImageView' is accessed as a result of this
 --     command, then the image view’s @viewType@ /must/ match the @Dim@
@@ -936,22 +890,23 @@
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-image-dimensions ???>
 --
 -- -   #VUID-vkCmdSubpassShadingHUAWEI-format-07753# If a
---     'Vulkan.Core10.Handles.ImageView' is accessed as a result of this
+--     'Vulkan.Core10.Handles.ImageView' or
+--     'Vulkan.Core10.Handles.BufferView' is accessed as a result of this
 --     command, then the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-numericformat numeric type>
---     of the image view’s @format@ and the @Sampled@ @Type@ operand of the
+--     of the view’s @format@ and the @Sampled@ @Type@ operand of the
 --     @OpTypeImage@ /must/ match
 --
 -- -   #VUID-vkCmdSubpassShadingHUAWEI-OpImageWrite-08795# If a
 --     'Vulkan.Core10.Handles.ImageView' created with a format other than
---     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM_KHR' is accessed using
+--     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM' 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-vkCmdSubpassShadingHUAWEI-OpImageWrite-08796# If a
 --     'Vulkan.Core10.Handles.ImageView' created with the format
---     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM_KHR' is accessed using
+--     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM' is accessed using
 --     @OpImageWrite@ as a result of this command, then the @Type@ of the
 --     @Texel@ operand of that instruction /must/ have four components
 --
@@ -1009,16 +964,16 @@
 --     @OpTypeImage@ with a @SampledType@ with a @Width@ of 64 by this
 --     command
 --
--- -   #VUID-vkCmdSubpassShadingHUAWEI-OpImageWeightedSampleQCOM-06971# If
---     @OpImageWeightedSampleQCOM@ is used to sample a
+-- -   #VUID-vkCmdSubpassShadingHUAWEI-OpImageSampleWeightedQCOM-06971# If
+--     @OpImageSampleWeightedQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM'
 --
--- -   #VUID-vkCmdSubpassShadingHUAWEI-OpImageWeightedSampleQCOM-06972# If
---     @OpImageWeightedSampleQCOM@ uses a 'Vulkan.Core10.Handles.ImageView'
+-- -   #VUID-vkCmdSubpassShadingHUAWEI-OpImageSampleWeightedQCOM-06972# If
+--     @OpImageSampleWeightedQCOM@ uses a 'Vulkan.Core10.Handles.ImageView'
 --     as a sample weight image 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>
@@ -1040,23 +995,31 @@
 --     <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_BLOCK_MATCHING_BIT_QCOM'
+--     or
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_SXD_BIT_QCOM'
 --
--- -   #VUID-vkCmdSubpassShadingHUAWEI-OpImageBlockMatchSADQCOM-06975# If
+-- -   #VUID-vkCmdSubpassShadingHUAWEI-OpImageBlockMatchSADQCOM-12420# If
 --     @OpImageBlockMatchSADQCOM@ is used to read from an
 --     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
+--     or
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_SXD_BIT_QCOM'
 --
 -- -   #VUID-vkCmdSubpassShadingHUAWEI-OpImageBlockMatchSADQCOM-06976# If
 --     @OpImageBlockMatchSADQCOM@ or OpImageBlockMatchSSDQCOM is used to
---     read from a reference image as result of this command, then the
---     specified reference coordinates /must/ not fail
+--     read from a reference image as result of this command, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-blockMatchExtendedClampToEdge blockMatchExtendedClampToEdge>
+--     feature is not enabled or the /input/ sampler was not created with
+--     both @addressModeU@ and @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--     then the specified reference coordinates /must/ not fail
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
 --
--- -   #VUID-vkCmdSubpassShadingHUAWEI-OpImageWeightedSampleQCOM-06977# If
---     @OpImageWeightedSampleQCOM@, @OpImageBoxFilterQCOM@,
+-- -   #VUID-vkCmdSubpassShadingHUAWEI-OpImageSampleWeightedQCOM-06977# If
+--     @OpImageSampleWeightedQCOM@, @OpImageBoxFilterQCOM@,
 --     @OpImageBlockMatchWindowSSDQCOM@, @OpImageBlockMatchWindowSADQCOM@,
 --     @OpImageBlockMatchGatherSSDQCOM@, @OpImageBlockMatchGatherSADQCOM@,
 --     @OpImageBlockMatchSSDQCOM@, or @OpImageBlockMatchSADQCOM@ uses a
@@ -1064,8 +1027,8 @@
 --     the sampler /must/ have been created with
 --     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
 --
--- -   #VUID-vkCmdSubpassShadingHUAWEI-OpImageWeightedSampleQCOM-06978# If
---     any command other than @OpImageWeightedSampleQCOM@,
+-- -   #VUID-vkCmdSubpassShadingHUAWEI-OpImageSampleWeightedQCOM-06978# If
+--     any command other than @OpImageSampleWeightedQCOM@,
 --     @OpImageBoxFilterQCOM@, @OpImageBlockMatchWindowSSDQCOM@,
 --     @OpImageBlockMatchWindowSADQCOM@, @OpImageBlockMatchGatherSSDQCOM@,
 --     @OpImageBlockMatchGatherSADQCOM@, @OpImageBlockMatchSSDQCOM@, or
@@ -1091,10 +1054,33 @@
 --
 -- -   #VUID-vkCmdSubpassShadingHUAWEI-OpImageBlockMatchWindow-09217# If a
 --     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
---     read from a reference image as result of this command, then the
---     specified reference coordinates /must/ not fail
+--     read from a reference image as result of this command, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-blockMatchExtendedClampToEdge blockMatchExtendedClampToEdge>
+--     feature is not enabled or the /input/ sampler was not created with
+--     both @addressModeU@ and @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--     then the specified reference coordinates /must/ not fail
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
 --
+-- -   #VUID-vkCmdSubpassShadingHUAWEI-OpImageBlockMatchWindow-12421# If a
+--     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     instruction uses a 'Vulkan.Core10.Handles.Sampler' as a result of
+--     this command, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-blockMatchExtendedClampToEdge blockMatchExtendedClampToEdge>
+--     is not enabled, the /input/ sampler /must/ not have been created
+--     with either @addressModeU@ or @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--
+-- -   #VUID-vkCmdSubpassShadingHUAWEI-addressModeU-12422# If a
+--     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     instruction uses a 'Vulkan.Core10.Handles.Sampler' as a result of
+--     this command, and the /input/ sampler was created with either
+--     @addressModeU@ or @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE',
+--     then the sampler /must/ have been created with both @addressModeU@
+--     and @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--
 -- -   #VUID-vkCmdSubpassShadingHUAWEI-None-07288# Any shader invocation
 --     executed by this command /must/
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-termination terminate>
@@ -1107,10 +1093,464 @@
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',
 --     or
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'
---     is accessed as a result of this command, the image subresource
+--     is accessed as a result of this command, all image subresources
 --     identified by that descriptor /must/ be in the image layout
 --     identified when the descriptor was written
 --
+-- -   #VUID-vkCmdSubpassShadingHUAWEI-micromap-11636# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command through an
+--     @OpRayQueryProceedKHR@ operation , the @VK_EXT_opacity_micromap@
+--     extension is not enabled, and the acceleration structure is built
+--     using geometry with a
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapKHR'
+--     structure included in its @pNext@ chain, the shader /must/ have
+--     specified a @OpacityMicromapIdKHR@ execution mode with its
+--     specialization constant operand equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdSubpassShadingHUAWEI-micromap-11637# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command and the
+--     acceleration structure was constructed through deserialization, all
+--     micromap arrays referenced by the acceleration structure that were
+--     not replaced by an acceleration structure update command /must/ have
+--     been deserialized using the serialized data of the corresponding
+--     micromaps used to originally build the acceleration structure prior
+--     to the execution of this command on the device
+--
+-- -   #VUID-vkCmdSubpassShadingHUAWEI-micromap-11638# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command and the
+--     acceleration structure is built using geometry with an @indexBuffer@
+--     containing both
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.OpacityMicromapSpecialIndexKHR'
+--     values and indices into an associated micromap array, any
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command /must/ not have been created with @flags@ that
+--     includes
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_KHR'
+--
+-- -   #VUID-vkCmdSubpassShadingHUAWEI-micromap-11639# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command and the
+--     acceleration structure is built using geometry with an @indexBuffer@
+--     containing both
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.OpacityMicromapSpecialIndexKHR'
+--     values and indices into an associated micromap array, any
+--     'Vulkan.Extensions.Handles.ShaderEXT' that accessed the descriptor
+--     /must/ not have been created with @flags@ that includes
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_EXT'
+--
+-- -   #VUID-vkCmdSubpassShadingHUAWEI-commandBuffer-10746# The
+--     'Vulkan.Core10.Handles.DeviceMemory' object allocated from a
+--     'Vulkan.Core10.DeviceInitialization.MemoryHeap' with the
+--     'Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_TILE_MEMORY_BIT_QCOM'
+--     property that is bound to a resource accessed as a result of this
+--     command /must/ be the active
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-bind-tile-memory bound tile memory object>
+--     in @commandBuffer@
+--
+-- -   #VUID-vkCmdSubpassShadingHUAWEI-None-10678# If this command is
+--     recorded inside a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-tile-shading tile shading render pass>
+--     instance, the stages corresponding to the pipeline bind point used
+--     by this command /must/ only include
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT',
+--     and\/or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT'
+--
+-- -   #VUID-vkCmdSubpassShadingHUAWEI-None-10679# If this command is
+--     recorded where
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model>
+--     is enabled, there /must/ be no access to any image while the image
+--     was be transitioned to the
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
+--     layout
+--
+-- -   #VUID-vkCmdSubpassShadingHUAWEI-pDescription-09900# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the
+--     underlying 'Vulkan.Extensions.Handles.TensorARM' object /must/ have
+--     been created with the
+--     'Vulkan.Extensions.VK_ARM_tensors.TENSOR_USAGE_SHADER_BIT_ARM' usage
+--     flag set
+--
+-- -   #VUID-vkCmdSubpassShadingHUAWEI-dimensionCount-09905# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the @Rank@
+--     of the @OpTypeTensorARM@ of the tensor resource variable /must/ be
+--     equal to the @dimensionCount@ provided via
+--     'Vulkan.Extensions.VK_ARM_tensors.TensorCreateInfoARM'::@pDescription@
+--     when creating the underlying 'Vulkan.Extensions.Handles.TensorARM'
+--     object
+--
+-- -   #VUID-vkCmdSubpassShadingHUAWEI-OpTypeTensorARM-09906# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the element
+--     type of the @OpTypeTensorARM@ of the tensor resource variable /must/
+--     be
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-tensor-formats compatible>
+--     with the 'Vulkan.Core10.Enums.Format.Format' of the
+--     'Vulkan.Extensions.Handles.TensorViewARM' used for the access
+--
+-- -   #VUID-vkCmdSubpassShadingHUAWEI-None-11297# If a pipeline is bound
+--     to the pipeline bind point used by this command, or shader is bound
+--     to a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses a @OpTypeStruct@ decorated with @Block@ or
+--     @BufferBlock@ using that mapping, the calculated offset for the
+--     resource heap /must/ be a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-bufferDescriptorAlignment bufferDescriptorAlignment>
+--
+-- -   #VUID-vkCmdSubpassShadingHUAWEI-None-11298# If a pipeline is bound
+--     to the pipeline bind point used by this command, or shader is bound
+--     to a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses an @OpTypeImage@ or @OpTypeSampledImage@ using
+--     that mapping, the calculated offset for the resource heap /must/ be
+--     a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-imageDescriptorAlignment imageDescriptorAlignment>
+--
+-- -   #VUID-vkCmdSubpassShadingHUAWEI-None-11299# If a pipeline is bound
+--     to the pipeline bind point used by this command, or shader is bound
+--     to a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses an @OpTypeSampler@ or @OpTypeSampledImage@
+--     using that mapping, the calculated offset for the sampler heap
+--     /must/ be a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-samplerDescriptorAlignment samplerDescriptorAlignment>
+--
+-- -   #VUID-vkCmdSubpassShadingHUAWEI-None-11397# If a pipeline is bound
+--     to the pipeline bind point used by this command, or shader is bound
+--     to a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses an @OpTypeTensorARM@ using that mapping, the
+--     calculated offset for the resource heap /must/ be a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-tensorDescriptorAlignment tensorDescriptorAlignment>
+--
+-- -   #VUID-vkCmdSubpassShadingHUAWEI-None-11300# If a pipeline is bound
+--     to the pipeline bind point used by this command, or shader is bound
+--     to a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a
+--     multiple of 4
+--
+-- -   #VUID-vkCmdSubpassShadingHUAWEI-None-11301# If a pipeline is bound
+--     to the pipeline bind point used by this command, or shader is bound
+--     to a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' backed by physical
+--     memory at every offset specified by each mapping
+--
+-- -   #VUID-vkCmdSubpassShadingHUAWEI-None-11302# If a pipeline is bound
+--     to the pipeline bind point used by this command, or shader is bound
+--     to a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdSubpassShadingHUAWEI-None-11304# If a pipeline is bound
+--     to the pipeline bind point used by this command, or shader is bound
+--     to a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a
+--     multiple of 8
+--
+-- -   #VUID-vkCmdSubpassShadingHUAWEI-None-11305# If a pipeline is bound
+--     to the pipeline bind point used by this command, or shader is bound
+--     to a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' backed by physical
+--     memory at every offset specified by each mapping
+--
+-- -   #VUID-vkCmdSubpassShadingHUAWEI-None-11306# If a pipeline is bound
+--     to the pipeline bind point used by this command, or shader is bound
+--     to a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address pointed to by the address in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdSubpassShadingHUAWEI-None-11308# For each
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps descriptor heap>
+--     that is statically used by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
+--     either directly or via a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>,
+--     a valid descriptor heap /must/ be bound
+--
+-- -   #VUID-vkCmdSubpassShadingHUAWEI-None-11309# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     was created as a 'Vulkan.Extensions.Handles.ShaderEXT' with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag or as part of a pipeline with the
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag, execution of this command /must/ not result in any descriptor
+--     read accessing data outside of the user range of the respective heap
+--     bound by @vkCmdBind*HeapEXT@ commands
+--
+-- -   #VUID-vkCmdSubpassShadingHUAWEI-None-11372# If any stage of the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command accesses a uniform buffer or uniform
+--     texel buffer through a descriptor in the bound resource heap, that
+--     stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @uniformBuffers@, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /must/ not access values outside
+--     of the range of the descriptor specified via
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+--     when the descriptor was written
+--
+-- -   #VUID-vkCmdSubpassShadingHUAWEI-None-11373# If any stage of the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command accesses a storage buffer or storage
+--     texel buffer through a descriptor in the bound resource heap, that
+--     stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @storageBuffers@, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /must/ not access values outside
+--     of the range of the descriptor specified by
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+--     when the descriptor was written
+--
+-- -   #VUID-vkCmdSubpassShadingHUAWEI-None-11374# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, and any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     to the pipeline bind point used by this command accesses a uniform
+--     buffer, uniform texel buffer, storage buffer, or storage texel
+--     buffer, that shader /must/ not access values outside of the range of
+--     the buffer as specified by
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+--     when the descriptor was written
+--
+-- -   #VUID-vkCmdSubpassShadingHUAWEI-pBindInfo-11375# If any
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     uses an embedded sampler via a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>,
+--     the value of @pBindInfo->reservedRangeSize@ set for
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.cmdBindSamplerHeapEXT'
+--     /must/ be greater than or equal to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minSamplerHeapReservedRangeWithEmbedded minSamplerHeapReservedRangeWithEmbedded>
+--
+-- -   #VUID-vkCmdSubpassShadingHUAWEI-None-11376# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     was created as a 'Vulkan.Extensions.Handles.ShaderEXT' with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag or as part of a pipeline with the
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag, and that shader statically uses a push constant value, that
+--     value /must/ have been set by
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.cmdPushDataEXT'
+--
+-- -   #VUID-vkCmdSubpassShadingHUAWEI-None-11398# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_DATA_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_DATA_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_RESOURCE_HEAP_DATA_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the access
+--     /must/ not be
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-execution-memory-access-bounds out of bounds>
+--
+-- -   #VUID-vkCmdSubpassShadingHUAWEI-None-11437# If a pipeline is bound
+--     to the pipeline bind point used by this command, or shader is bound
+--     to a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the buffer from
+--     which the address in push data was queried /must/ have been created
+--     with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdSubpassShadingHUAWEI-None-11438# If a pipeline is bound
+--     to the pipeline bind point used by this command, or shader is bound
+--     to a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a uniform buffer using that mapping, the
+--     address that the uniform buffer is mapped to /must/ have been
+--     queried from a buffer created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdSubpassShadingHUAWEI-None-11441# If a pipeline is bound
+--     to the pipeline bind point used by this command, or shader is bound
+--     to a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a uniform buffer using that mapping, the
+--     address that the uniform buffer is mapped to /must/ be aligned to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minUniformBufferOffsetAlignment minUniformBufferOffsetAlignment>
+--
+-- -   #VUID-vkCmdSubpassShadingHUAWEI-None-11439# If a pipeline is bound
+--     to the pipeline bind point used by this command, or shader is bound
+--     to a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a storage buffer using that mapping, the
+--     address that the storage buffer is mapped to /must/ have been
+--     queried from a buffer created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_STORAGE_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdSubpassShadingHUAWEI-None-11442# If a pipeline is bound
+--     to the pipeline bind point used by this command, or shader is bound
+--     to a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a storage buffer using that mapping, the
+--     address that the storage buffer is mapped to /must/ be aligned to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minStorageBufferOffsetAlignment minStorageBufferOffsetAlignment>
+--
+-- -   #VUID-vkCmdSubpassShadingHUAWEI-None-11485# If a pipeline is bound
+--     to the pipeline bind point used by this command, or shader is bound
+--     to a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses an acceleration structure using that mapping,
+--     the address that the acceleration structure is mapped to /must/ be
+--     an acceleration structure address retrieved from a
+--     'Vulkan.Extensions.Handles.AccelerationStructureKHR' object via
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.getAccelerationStructureDeviceAddressKHR'
+--     or handle retrieved from a
+--     'Vulkan.Extensions.Handles.AccelerationStructureNV' object via
+--     'Vulkan.Extensions.VK_NV_ray_tracing.getAccelerationStructureHandleNV'
+--
+-- -   #VUID-vkCmdSubpassShadingHUAWEI-index-11450# If a shader uses a
+--     sampler descriptor to sample an image as a result of this command,
+--     and that sampler descriptor uses a custom border color with an index
+--     defined by
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.SamplerCustomBorderColorIndexCreateInfoEXT',
+--     the value of
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.SamplerCustomBorderColorIndexCreateInfoEXT'::@index@
+--     /must/ have been registered before this command was recorded, and
+--     still be registered during the sampling operation, with an
+--     identically defined color
+--
+-- -   #VUID-vkCmdSubpassShadingHUAWEI-protectedNoFault-11455# If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, a pipeline is bound to the pipeline bind point
+--     used by this command, or a shader is bound to a shader stage used by
+--     this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     the address that the resource is mapped to /must/ have been queried
+--     from a buffer created without the
+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT'
+--     create flag set
+--
+-- -   #VUID-vkCmdSubpassShadingHUAWEI-protectedNoFault-11456# If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, a pipeline is bound to the pipeline bind point
+--     used by this command, or a shader is bound to a shader stage used by
+--     this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     the address of the indirect memory /must/ have been queried from a
+--     buffer created without the
+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT'
+--     create flag set
+--
 -- -   #VUID-vkCmdSubpassShadingHUAWEI-None-04931# This command /must/ be
 --     called in a subpass with bind point
 --     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI'.
@@ -1129,11 +1569,15 @@
 --
 -- -   #VUID-vkCmdSubpassShadingHUAWEI-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdSubpassShadingHUAWEI-renderpass# This command /must/ only
 --     be called inside of a render pass instance
 --
+-- -   #VUID-vkCmdSubpassShadingHUAWEI-suspended# This command /must/ not
+--     be called between suspended render pass instances
+--
 -- -   #VUID-vkCmdSubpassShadingHUAWEI-videocoding# This command /must/
 --     only be called outside of a video coding scope
 --
@@ -1151,10 +1595,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Inside                                                                                                                 | Outside                                                                                                                     | Graphics                                                                                                              | Action                                                                                                                                 |
+-- | Primary                                                                                                                    | Inside                                                                                                                 | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | Action                                                                                                                                 |
 -- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdSubpassShadingHUAWEI is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_HUAWEI_subpass_shading VK_HUAWEI_subpass_shading>,
@@ -1182,8 +1631,12 @@
 -- | VkSubpassShadingPipelineCreateInfoHUAWEI - Structure specifying
 -- parameters of a newly created subpass shading pipeline
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.ComputePipeline.ComputePipelineCreateInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_HUAWEI_subpass_shading VK_HUAWEI_subpass_shading>,
@@ -1194,8 +1647,9 @@
     -- 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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-compatibility Render Pass Compatibility>
-    -- for more information.
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-compatibility Render Pass Compatibility>
+    -- for more information. The implementation /must/ not access this object
+    -- outside of the duration of the command this structure is passed to.
     --
     -- #VUID-VkSubpassShadingPipelineCreateInfoHUAWEI-renderPass-parameter#
     -- @renderPass@ /must/ be a valid 'Vulkan.Core10.Handles.RenderPass' handle
@@ -1264,8 +1718,12 @@
 -- it is filled in with each corresponding implementation-dependent
 -- property.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_HUAWEI_subpass_shading VK_HUAWEI_subpass_shading>,
@@ -1332,11 +1790,21 @@
 -- 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. 'PhysicalDeviceSubpassShadingFeaturesHUAWEI' /can/ also be
--- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceSubpassShadingFeaturesHUAWEI', it /must/ add an instance
+-- of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
 --
 -- = See Also
 --
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
@@ -96,7 +96,7 @@
 --
 -- == New Structures
 --
--- -   Extending 'Vulkan.Core10.Pipeline.ComputePipelineCreateInfo':
+-- -   Extending 'Vulkan.Core10.ComputePipeline.ComputePipelineCreateInfo':
 --
 --     -   'SubpassShadingPipelineCreateInfoHUAWEI'
 --
@@ -354,7 +354,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_HUAWEI_subpass_shading Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -94,7 +94,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_IMG_filter_cubic Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -50,7 +50,7 @@
 -- compression format (called PVRTC).
 --
 -- As also noted in the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#data-format Khronos Data Format Specification>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#data-format Khronos Data Format Specification>,
 -- PVRTC1 images must have dimensions that are a power of two.
 --
 -- == Deprecation
@@ -95,7 +95,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_IMG_format_pvrtc Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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_IMG_relaxed_line_rasterization.hs b/src/Vulkan/Extensions/VK_IMG_relaxed_line_rasterization.hs
--- a/src/Vulkan/Extensions/VK_IMG_relaxed_line_rasterization.hs
+++ b/src/Vulkan/Extensions/VK_IMG_relaxed_line_rasterization.hs
@@ -96,7 +96,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_IMG_relaxed_line_rasterization Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_IMG_relaxed_line_rasterization Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -145,12 +145,21 @@
 -- 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. 'PhysicalDeviceRelaxedLineRasterizationFeaturesIMG' /can/
--- also be used in the @pNext@ chain of
--- 'Vulkan.Core10.Device.DeviceCreateInfo' to selectively enable these
--- features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceRelaxedLineRasterizationFeaturesIMG', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Extensions/VK_IMG_relaxed_line_rasterization.hs-boot b/src/Vulkan/Extensions/VK_IMG_relaxed_line_rasterization.hs-boot
--- a/src/Vulkan/Extensions/VK_IMG_relaxed_line_rasterization.hs-boot
+++ b/src/Vulkan/Extensions/VK_IMG_relaxed_line_rasterization.hs-boot
@@ -96,7 +96,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_IMG_relaxed_line_rasterization Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_IMG_relaxed_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_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
@@ -300,7 +300,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_INTEL_performance_query Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -461,10 +461,14 @@
 --
 -- [<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_TOO_MANY_OBJECTS'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_INTEL_performance_query VK_INTEL_performance_query>,
@@ -560,9 +564,14 @@
 --
 -- -   #VUID-vkCmdSetPerformanceMarkerINTEL-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics, compute, or transfer
---     operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT',
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT', or
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_TRANSFER_BIT' operations
 --
+-- -   #VUID-vkCmdSetPerformanceMarkerINTEL-suspended# This command /must/
+--     not be called between suspended render pass instances
+--
 -- -   #VUID-vkCmdSetPerformanceMarkerINTEL-videocoding# This command
 --     /must/ only be called outside of a video coding scope
 --
@@ -580,11 +589,16 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | Action                                                                                                                                 |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | Compute                                                                                                               | State                                                                                                                                  |
--- |                                                                                                                            |                                                                                                                        |                                                                                                                             | Transfer                                                                                                              |                                                                                                                                        |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
+-- |                                                                                                                            |                                                                                                                        |                                                                                                                             | VK_QUEUE_TRANSFER_BIT                                                                                                 |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdSetPerformanceMarkerINTEL is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- == Return Codes
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
@@ -593,10 +607,14 @@
 --
 -- [<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_TOO_MANY_OBJECTS'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_INTEL_performance_query VK_INTEL_performance_query>,
@@ -645,9 +663,14 @@
 --
 -- -   #VUID-vkCmdSetPerformanceStreamMarkerINTEL-commandBuffer-cmdpool#
 --     The 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics, compute, or transfer
---     operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT',
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT', or
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_TRANSFER_BIT' operations
 --
+-- -   #VUID-vkCmdSetPerformanceStreamMarkerINTEL-suspended# This command
+--     /must/ not be called between suspended render pass instances
+--
 -- -   #VUID-vkCmdSetPerformanceStreamMarkerINTEL-videocoding# This command
 --     /must/ only be called outside of a video coding scope
 --
@@ -665,11 +688,16 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | Action                                                                                                                                 |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | Compute                                                                                                               | State                                                                                                                                  |
--- |                                                                                                                            |                                                                                                                        |                                                                                                                             | Transfer                                                                                                              |                                                                                                                                        |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
+-- |                                                                                                                            |                                                                                                                        |                                                                                                                             | VK_QUEUE_TRANSFER_BIT                                                                                                 |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdSetPerformanceStreamMarkerINTEL is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- == Return Codes
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
@@ -678,10 +706,14 @@
 --
 -- [<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_TOO_MANY_OBJECTS'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_INTEL_performance_query VK_INTEL_performance_query>,
@@ -741,8 +773,10 @@
 --
 -- -   #VUID-vkCmdSetPerformanceOverrideINTEL-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics, compute, or transfer
---     operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT',
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT', or
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_TRANSFER_BIT' operations
 --
 -- -   #VUID-vkCmdSetPerformanceOverrideINTEL-videocoding# This command
 --     /must/ only be called outside of a video coding scope
@@ -761,11 +795,16 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | Compute                                                                                                               |                                                                                                                                        |
--- |                                                                                                                            |                                                                                                                        |                                                                                                                             | Transfer                                                                                                              |                                                                                                                                        |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | State                                                                                                                                  |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | VK_QUEUE_GRAPHICS_BIT                                                                                                 |                                                                                                                                        |
+-- |                                                                                                                            |                                                                                                                        |                                                                                                                             | VK_QUEUE_TRANSFER_BIT                                                                                                 |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdSetPerformanceOverrideINTEL is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- == Return Codes
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
@@ -774,10 +813,14 @@
 --
 -- [<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_TOO_MANY_OBJECTS'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_INTEL_performance_query VK_INTEL_performance_query>,
@@ -821,10 +864,14 @@
 --
 -- [<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_TOO_MANY_OBJECTS'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_INTEL_performance_query VK_INTEL_performance_query>,
@@ -880,7 +927,7 @@
 -- -   #VUID-vkReleasePerformanceConfigurationINTEL-configuration-02737#
 --     @configuration@ /must/ not be released before all command buffers
 --     submitted while the configuration was set are in
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle pending state>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#commandbuffers-lifecycle pending state>
 --
 -- == Valid Usage (Implicit)
 --
@@ -908,10 +955,14 @@
 --
 -- [<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_TOO_MANY_OBJECTS'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_INTEL_performance_query VK_INTEL_performance_query>,
@@ -958,6 +1009,12 @@
 --     @configuration@, and @queue@ /must/ have been created, allocated, or
 --     retrieved from the same 'Vulkan.Core10.Handles.Device'
 --
+-- == Host Synchronization
+--
+-- -   Host access to @queue@ /must/ be externally synchronized if it was
+--     not created with
+--     'Vulkan.Core10.Enums.DeviceQueueCreateFlagBits.DEVICE_QUEUE_CREATE_INTERNALLY_SYNCHRONIZED_BIT_KHR'
+--
 -- == Command Properties
 --
 -- \'
@@ -976,10 +1033,14 @@
 --
 -- [<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_TOO_MANY_OBJECTS'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_INTEL_performance_query VK_INTEL_performance_query>,
@@ -1021,10 +1082,14 @@
 --
 -- [<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_TOO_MANY_OBJECTS'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_INTEL_performance_query VK_INTEL_performance_query>,
@@ -1121,7 +1186,7 @@
 -- 'Vulkan.Core10.Enums.StructureType.StructureType',
 -- 'initializePerformanceApiINTEL'
 data InitializePerformanceApiInfoINTEL = InitializePerformanceApiInfoINTEL
-  { -- | @pUserData@ is a pointer for application data.
+  { -- | @pUserData@ is NULL or a pointer for application data.
     userData :: Ptr () }
   deriving (Typeable)
 #if defined(GENERIC_INSTANCES)
@@ -1172,8 +1237,12 @@
 -- @pNext@ chain of the 'Vulkan.Core10.Query.QueryPoolCreateInfo'
 -- structure.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.Query.QueryPoolCreateInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_INTEL_performance_query VK_INTEL_performance_query>,
@@ -1553,6 +1622,14 @@
 -- | VkQueryPoolSamplingModeINTEL - Enum specifying how performance queries
 -- should be captured
 --
+-- = Description
+--
+-- -   'QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL' is the default mode in which
+--     the application calls
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBeginQuery' and
+--     'Vulkan.Core10.CommandBufferBuilding.cmdEndQuery' to record
+--     performance data.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_INTEL_performance_query VK_INTEL_performance_query>,
@@ -1560,10 +1637,7 @@
 newtype QueryPoolSamplingModeINTEL = QueryPoolSamplingModeINTEL Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL' is the default mode in which the
--- application calls 'Vulkan.Core10.CommandBufferBuilding.cmdBeginQuery'
--- and 'Vulkan.Core10.CommandBufferBuilding.cmdEndQuery' to record
--- performance data.
+-- No documentation found for Nested "VkQueryPoolSamplingModeINTEL" "VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL"
 pattern QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL = QueryPoolSamplingModeINTEL 0
 
 {-# COMPLETE QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL :: QueryPoolSamplingModeINTEL #-}
@@ -1601,6 +1675,15 @@
 
 -- | VkPerformanceOverrideTypeINTEL - Performance override type
 --
+-- = Description
+--
+-- -   'PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL' turns all rendering
+--     operations into noop.
+--
+-- -   'PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL' stalls the stream
+--     of commands until all previously emitted commands have completed and
+--     all caches been flushed and invalidated.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_INTEL_performance_query VK_INTEL_performance_query>,
@@ -1608,13 +1691,10 @@
 newtype PerformanceOverrideTypeINTEL = PerformanceOverrideTypeINTEL Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL' turns all rendering
--- operations into noop.
+-- No documentation found for Nested "VkPerformanceOverrideTypeINTEL" "VK_PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL"
 pattern PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL = PerformanceOverrideTypeINTEL 0
 
--- | 'PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL' stalls the stream of
--- commands until all previously emitted commands have completed and all
--- caches been flushed and invalidated.
+-- No documentation found for Nested "VkPerformanceOverrideTypeINTEL" "VK_PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL"
 pattern PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL = PerformanceOverrideTypeINTEL 1
 
 {-# COMPLETE
@@ -1660,6 +1740,16 @@
 
 -- | VkPerformanceParameterTypeINTEL - Parameters that can be queried
 --
+-- = Description
+--
+-- -   'PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL' has a
+--     boolean result which tells whether hardware counters can be
+--     captured.
+--
+-- -   'PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL' has a 32
+--     bits integer result which tells how many bits can be written into
+--     the 'PerformanceValueINTEL' value.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_INTEL_performance_query VK_INTEL_performance_query>,
@@ -1667,13 +1757,10 @@
 newtype PerformanceParameterTypeINTEL = PerformanceParameterTypeINTEL Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL' has a boolean
--- result which tells whether hardware counters can be captured.
+-- No documentation found for Nested "VkPerformanceParameterTypeINTEL" "VK_PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL"
 pattern PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL = PerformanceParameterTypeINTEL 0
 
--- | 'PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL' has a 32
--- bits integer result which tells how many bits can be written into the
--- 'PerformanceValueINTEL' value.
+-- No documentation found for Nested "VkPerformanceParameterTypeINTEL" "VK_PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL"
 pattern PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL = PerformanceParameterTypeINTEL 1
 
 {-# COMPLETE
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
@@ -300,7 +300,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_INTEL_performance_query Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -84,7 +84,7 @@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-IntegerFunctions2INTEL IntegerFunctions2INTEL>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-IntegerFunctions2INTEL IntegerFunctions2INTEL>
 --
 -- == Version History
 --
@@ -99,7 +99,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_INTEL_shader_integer_functions2 Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -148,13 +148,21 @@
 -- structure passed to
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
 -- it is filled in to indicate whether each corresponding feature is
--- supported.
--- @VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTELfeatures@. /can/
--- also be used in the @pNext@ chain of
--- 'Vulkan.Core10.Device.DeviceCreateInfo' to selectively enable these
--- features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- @VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTELfeatures@., it
+-- /must/ add an instance of the structure, with the desired feature
+-- members set to 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@
+-- chain of 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
 --
 -- = See Also
 --
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
@@ -84,7 +84,7 @@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-IntegerFunctions2INTEL IntegerFunctions2INTEL>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-IntegerFunctions2INTEL IntegerFunctions2INTEL>
 --
 -- == Version History
 --
@@ -99,7 +99,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_INTEL_shader_integer_functions2 Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -94,6 +94,11 @@
 -- The original type, enum, and command names are still available as
 -- aliases of the core functionality.
 --
+-- == Promotion to Vulkan 1.4
+--
+-- If Vulkan 1.4 is supported, support for the @storageBuffer16BitAccess@
+-- capability is required.
+--
 -- == New Structures
 --
 -- -   Extending
@@ -114,13 +119,13 @@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-StorageBuffer16BitAccess StorageBuffer16BitAccess>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-StorageBuffer16BitAccess StorageBuffer16BitAccess>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-UniformAndStorageBuffer16BitAccess UniformAndStorageBuffer16BitAccess>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-UniformAndStorageBuffer16BitAccess UniformAndStorageBuffer16BitAccess>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-StoragePushConstant16 StoragePushConstant16>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-StoragePushConstant16 StoragePushConstant16>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-StorageInputOutput16 StorageInputOutput16>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-StorageInputOutput16 StorageInputOutput16>
 --
 -- == Version History
 --
@@ -135,7 +140,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_16bit_storage Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -81,6 +81,11 @@
 -- names, retain their original names. The original Vulkan API names are
 -- still available as aliases of the core functionality.
 --
+-- == Promotion to Vulkan 1.4
+--
+-- If Vulkan 1.4 is supported, support for the @storageBuffer8BitAccess@
+-- capability is required.
+--
 -- == New Structures
 --
 -- -   Extending
@@ -101,11 +106,11 @@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-StorageBuffer8BitAccess StorageBuffer8BitAccess>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-StorageBuffer8BitAccess StorageBuffer8BitAccess>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-UniformAndStorageBuffer8BitAccess UniformAndStorageBuffer8BitAccess>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-UniformAndStorageBuffer8BitAccess UniformAndStorageBuffer8BitAccess>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-StoragePushConstant8 StoragePushConstant8>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-StoragePushConstant8 StoragePushConstant8>
 --
 -- == Version History
 --
@@ -120,7 +125,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_8bit_storage Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -406,7488 +406,9172 @@
 --     'cmdCopyMemoryToAccelerationStructureKHR')
 --
 -- -   document
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#acceleration-structure-inactive-prims inactive primitives and instances>
---
--- -   added 'PhysicalDeviceAccelerationStructureFeaturesKHR' structure
---
--- -   added indirect and batched acceleration structure builds
---     ('cmdBuildAccelerationStructuresIndirectKHR')
---
--- -   added
---     <https://registry.khronos.org/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
---     device, host, and indirect builds
---
--- -   explicitly made 'Vulkan.Extensions.Handles.AccelerationStructureKHR'
---     use device addresses
---
--- -   added acceleration structure compatibility check function
---     ('getDeviceAccelerationStructureCompatibilityKHR')
---
--- -   add parameter for requesting memory requirements for host and\/or
---     device build
---
--- -   added format feature for acceleration structure build vertex formats
---     ('Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR')
---
--- (2) Can you give a more detailed comparison of differences and
--- similarities between VK_NV_ray_tracing and
--- VK_KHR_acceleration_structure?
---
--- __DISCUSSION__:
---
--- The following is a more detailed comparison of which commands,
--- structures, and enums are aliased, changed, or removed.
---
--- -   Aliased functionality — enums, structures, and commands that are
---     considered equivalent:
---
---     -   'Vulkan.Extensions.VK_NV_ray_tracing.GeometryTypeNV' ↔
---         'GeometryTypeKHR'
---
---     -   'Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureTypeNV'
---         ↔ 'AccelerationStructureTypeKHR'
---
---     -   'Vulkan.Extensions.VK_NV_ray_tracing.CopyAccelerationStructureModeNV'
---         ↔ 'CopyAccelerationStructureModeKHR'
---
---     -   'Vulkan.Extensions.VK_NV_ray_tracing.GeometryFlagsNV' ↔
---         'GeometryFlagsKHR'
---
---     -   'Vulkan.Extensions.VK_NV_ray_tracing.GeometryFlagBitsNV' ↔
---         'GeometryFlagBitsKHR'
---
---     -   'Vulkan.Extensions.VK_NV_ray_tracing.GeometryInstanceFlagsNV' ↔
---         'GeometryInstanceFlagsKHR'
---
---     -   'Vulkan.Extensions.VK_NV_ray_tracing.GeometryInstanceFlagBitsNV'
---         ↔ 'GeometryInstanceFlagBitsKHR'
---
---     -   'Vulkan.Extensions.VK_NV_ray_tracing.BuildAccelerationStructureFlagsNV'
---         ↔ 'BuildAccelerationStructureFlagsKHR'
---
---     -   'Vulkan.Extensions.VK_NV_ray_tracing.BuildAccelerationStructureFlagBitsNV'
---         ↔ 'BuildAccelerationStructureFlagBitsKHR'
---
---     -   'Vulkan.Extensions.VK_NV_ray_tracing.TransformMatrixNV' ↔
---         'TransformMatrixKHR' (added to VK_NV_ray_tracing for descriptive
---         purposes)
---
---     -   'Vulkan.Extensions.VK_NV_ray_tracing.AabbPositionsNV' ↔
---         'AabbPositionsKHR' (added to VK_NV_ray_tracing for descriptive
---         purposes)
---
---     -   'Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureInstanceNV'
---         ↔ 'AccelerationStructureInstanceKHR' (added to VK_NV_ray_tracing
---         for descriptive purposes)
---
--- -   Changed enums, structures, and commands:
---
---     -   renamed
---         'Vulkan.Extensions.VK_NV_ray_tracing.GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV'
---         → 'GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR' in
---         'GeometryInstanceFlagBitsKHR'
---
---     -   'Vulkan.Extensions.VK_NV_ray_tracing.GeometryTrianglesNV' →
---         'AccelerationStructureGeometryTrianglesDataKHR' (device or host
---         address instead of buffer+offset)
---
---     -   'Vulkan.Extensions.VK_NV_ray_tracing.GeometryAABBNV' →
---         'AccelerationStructureGeometryAabbsDataKHR' (device or host
---         address instead of buffer+offset)
---
---     -   'Vulkan.Extensions.VK_NV_ray_tracing.GeometryDataNV' →
---         'AccelerationStructureGeometryDataKHR' (union of
---         triangle\/aabbs\/instances)
---
---     -   'Vulkan.Extensions.VK_NV_ray_tracing.GeometryNV' →
---         'AccelerationStructureGeometryKHR' (changed type of geometry)
---
---     -   'Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureCreateInfoNV'
---         → 'AccelerationStructureCreateInfoKHR' (reshuffle geometry
---         layout\/information)
---
---     -   'Vulkan.Extensions.VK_NV_ray_tracing.PhysicalDeviceRayTracingPropertiesNV'
---         → 'PhysicalDeviceAccelerationStructurePropertiesKHR' (for
---         acceleration structure properties, renamed @maxTriangleCount@ to
---         @maxPrimitiveCount@, added per stage and update after bind
---         limits) and
---         'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.PhysicalDeviceRayTracingPipelinePropertiesKHR'
---         (for ray tracing pipeline properties)
---
---     -   'Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureMemoryRequirementsInfoNV'
---         (deleted - replaced by allocating on top of
---         'Vulkan.Core10.Handles.Buffer')
---
---     -   'Vulkan.Extensions.VK_NV_ray_tracing.WriteDescriptorSetAccelerationStructureNV'
---         → 'WriteDescriptorSetAccelerationStructureKHR' (different
---         acceleration structure type)
---
---     -   'Vulkan.Extensions.VK_NV_ray_tracing.createAccelerationStructureNV'
---         → 'createAccelerationStructureKHR' (device address, different
---         geometry layout\/information)
---
---     -   'Vulkan.Extensions.VK_NV_ray_tracing.getAccelerationStructureMemoryRequirementsNV'
---         (deleted - replaced by allocating on top of
---         'Vulkan.Core10.Handles.Buffer')
---
---     -   'Vulkan.Extensions.VK_NV_ray_tracing.cmdBuildAccelerationStructureNV'
---         → 'cmdBuildAccelerationStructuresKHR' (params moved to structs,
---         layout differences)
---
---     -   'Vulkan.Extensions.VK_NV_ray_tracing.cmdCopyAccelerationStructureNV'
---         → 'cmdCopyAccelerationStructureKHR' (params to struct,
---         extendable)
---
---     -   'Vulkan.Extensions.VK_NV_ray_tracing.getAccelerationStructureHandleNV'
---         → 'getAccelerationStructureDeviceAddressKHR' (device address
---         instead of handle)
---
---     -   'Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureMemoryRequirementsTypeNV'
---         → size queries for scratch space moved to
---         'getAccelerationStructureBuildSizesKHR'
---
---     -   'Vulkan.Extensions.VK_NV_ray_tracing.destroyAccelerationStructureNV'
---         → 'destroyAccelerationStructureKHR' (different acceleration
---         structure types)
---
---     -   'Vulkan.Extensions.VK_NV_ray_tracing.cmdWriteAccelerationStructuresPropertiesNV'
---         → 'cmdWriteAccelerationStructuresPropertiesKHR' (different
---         acceleration structure types)
---
--- -   Added enums, structures and commands:
---
---     -   'GEOMETRY_TYPE_INSTANCES_KHR' to 'GeometryTypeKHR' enum
---
---     -   'COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR',
---         'COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR' to
---         'CopyAccelerationStructureModeKHR' enum
---
---     -   'PhysicalDeviceAccelerationStructureFeaturesKHR' structure
---
---     -   'AccelerationStructureBuildTypeKHR' enum
---
---     -   'BuildAccelerationStructureModeKHR' enum
---
---     -   'DeviceOrHostAddressKHR' and 'DeviceOrHostAddressConstKHR'
---         unions
---
---     -   'AccelerationStructureBuildRangeInfoKHR' struct
---
---     -   'AccelerationStructureGeometryInstancesDataKHR' struct
---
---     -   'AccelerationStructureDeviceAddressInfoKHR' struct
---
---     -   'AccelerationStructureVersionInfoKHR' struct
---
---     -   'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.StridedDeviceAddressRegionKHR'
---         struct
---
---     -   'CopyAccelerationStructureToMemoryInfoKHR' struct
---
---     -   'CopyMemoryToAccelerationStructureInfoKHR' struct
---
---     -   'CopyAccelerationStructureInfoKHR' struct
---
---     -   'buildAccelerationStructuresKHR' command (host build)
---
---     -   'copyAccelerationStructureKHR' command (host copy)
---
---     -   'copyAccelerationStructureToMemoryKHR' (host serialize)
---
---     -   'copyMemoryToAccelerationStructureKHR' (host deserialize)
---
---     -   'writeAccelerationStructuresPropertiesKHR' (host properties)
---
---     -   'cmdCopyAccelerationStructureToMemoryKHR' (device serialize)
---
---     -   'cmdCopyMemoryToAccelerationStructureKHR' (device deserialize)
---
---     -   'getDeviceAccelerationStructureCompatibilityKHR' (serialization)
---
--- (3) What are the changes between the public provisional
--- (VK_KHR_ray_tracing v8) release and the internal provisional
--- (VK_KHR_ray_tracing v9) release?
---
--- -   added @geometryFlags@ to
---     @VkAccelerationStructureCreateGeometryTypeInfoKHR@ (later reworked
---     to obsolete this)
---
--- -   added @minAccelerationStructureScratchOffsetAlignment@ property to
---     VkPhysicalDeviceRayTracingPropertiesKHR
---
--- -   fix naming and return enum from
---     'getDeviceAccelerationStructureCompatibilityKHR'
---
---     -   renamed @VkAccelerationStructureVersionKHR@ to
---         'AccelerationStructureVersionInfoKHR'
---
---     -   renamed @VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_KHR@
---         to
---         'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR'
---
---     -   removed @VK_ERROR_INCOMPATIBLE_VERSION_KHR@
---
---     -   added 'AccelerationStructureCompatibilityKHR' enum
---
---     -   remove return value from
---         'getDeviceAccelerationStructureCompatibilityKHR' and added
---         return enum parameter
---
--- -   Require Vulkan 1.1
---
--- -   added creation time capture and replay flags
---
---     -   added 'AccelerationStructureCreateFlagBitsKHR' and
---         'AccelerationStructureCreateFlagsKHR'
---
---     -   renamed the @flags@ member of
---         'AccelerationStructureCreateInfoKHR' to @buildFlags@ (later
---         removed) and added the @createFlags@ member
---
--- -   change 'cmdBuildAccelerationStructuresIndirectKHR' to use buffer
---     device address for indirect parameter
---
--- -   make @VK_KHR_deferred_host_operations@ an interaction instead of a
---     required extension (later went back on this)
---
--- -   renamed @VkAccelerationStructureBuildOffsetInfoKHR@ to
---     'AccelerationStructureBuildRangeInfoKHR'
---
---     -   renamed the @ppOffsetInfos@ parameter of
---         'cmdBuildAccelerationStructuresKHR' to @ppBuildRangeInfos@
---
--- -   Re-unify geometry description between build and create
---
---     -   remove @VkAccelerationStructureCreateGeometryTypeInfoKHR@ and
---         @VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_GEOMETRY_TYPE_INFO_KHR@
---
---     -   added @VkAccelerationStructureCreateSizeInfoKHR@ structure
---         (later removed)
---
---     -   change type of the @pGeometryInfos@ member of
---         'AccelerationStructureCreateInfoKHR' from
---         @VkAccelerationStructureCreateGeometryTypeInfoKHR@ to
---         'AccelerationStructureGeometryKHR' (later removed)
---
---     -   added @pCreateSizeInfos@ member to
---         'AccelerationStructureCreateInfoKHR' (later removed)
---
--- -   Fix ppGeometries ambiguity, add pGeometries
---
---     -   remove @geometryArrayOfPointers@ member of
---         VkAccelerationStructureBuildGeometryInfoKHR
---
---     -   disambiguate two meanings of @ppGeometries@ by explicitly adding
---         @pGeometries@ to the 'AccelerationStructureBuildGeometryInfoKHR'
---         structure and require one of them be @NULL@
---
--- -   added
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>
---     support for acceleration structures
---
--- -   changed the @update@ member of
---     'AccelerationStructureBuildGeometryInfoKHR' from a bool to the
---     @mode@ 'BuildAccelerationStructureModeKHR' enum which allows future
---     extensibility in update types
---
--- -   Clarify deferred host ops for pipeline creation
---
---     -   'Vulkan.Extensions.Handles.DeferredOperationKHR' is now a
---         top-level parameter for 'buildAccelerationStructuresKHR',
---         'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.createRayTracingPipelinesKHR',
---         'copyAccelerationStructureToMemoryKHR',
---         'copyAccelerationStructureKHR', and
---         'copyMemoryToAccelerationStructureKHR'
---
---     -   removed @VkDeferredOperationInfoKHR@ structure
---
---     -   change deferred host creation\/return parameter behavior such
---         that the implementation can modify such parameters until the
---         deferred host operation completes
---
---     -   @VK_KHR_deferred_host_operations@ is required again
---
--- -   Change acceleration structure build to always be sized
---
---     -   de-alias
---         'Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureMemoryRequirementsTypeNV'
---         and @VkAccelerationStructureMemoryRequirementsTypeKHR@, and
---         remove @VkAccelerationStructureMemoryRequirementsTypeKHR@
---
---     -   add 'getAccelerationStructureBuildSizesKHR' command and
---         'AccelerationStructureBuildSizesInfoKHR' structure and
---         'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR'
---         enum to query sizes for acceleration structures and scratch
---         storage
---
---     -   move size queries for scratch space to
---         'getAccelerationStructureBuildSizesKHR'
---
---     -   remove @compactedSize@, @buildFlags@, @maxGeometryCount@,
---         @pGeometryInfos@, @pCreateSizeInfos@ members of
---         'AccelerationStructureCreateInfoKHR' and add the @size@ member
---
---     -   add @maxVertex@ member to
---         'AccelerationStructureGeometryTrianglesDataKHR' structure
---
---     -   remove @VkAccelerationStructureCreateSizeInfoKHR@ structure
---
--- (4) What are the changes between the internal provisional
--- (VK_KHR_ray_tracing v9) release and the final
--- (VK_KHR_acceleration_structure v11) release?
---
--- -   refactor VK_KHR_ray_tracing into 3 extensions, enabling
---     implementation flexibility and decoupling ray query support from ray
---     pipelines:
---
---     -   @VK_KHR_acceleration_structure@ (for acceleration structure
---         operations)
---
---     -   @VK_KHR_ray_tracing_pipeline@ (for ray tracing pipeline and
---         shader stages)
---
---     -   @VK_KHR_ray_query@ (for ray queries in existing shader stages)
---
--- -   clarify buffer usage flags for ray tracing
---
---     -   'Vulkan.Extensions.VK_NV_ray_tracing.BUFFER_USAGE_RAY_TRACING_BIT_NV'
---         is left alone in @VK_NV_ray_tracing@ (required on @scratch@ and
---         @instanceData@)
---
---     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR'
---         is added as an alias of
---         'Vulkan.Extensions.VK_NV_ray_tracing.BUFFER_USAGE_RAY_TRACING_BIT_NV'
---         in @VK_KHR_ray_tracing_pipeline@ and is required on shader
---         binding table buffers
---
---     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR'
---         is added in @VK_KHR_acceleration_structure@ for all vertex,
---         index, transform, aabb, and instance buffer data referenced by
---         device build commands
---
---     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_STORAGE_BUFFER_BIT'
---         is used for @scratchData@
---
--- -   add max primitive counts (@ppMaxPrimitiveCounts@) to
---     'cmdBuildAccelerationStructuresIndirectKHR'
---
--- -   Allocate acceleration structures from @VkBuffers@ and add a mode to
---     constrain the device address
---
---     -   de-alias
---         'Vulkan.Extensions.VK_NV_ray_tracing.BindAccelerationStructureMemoryInfoNV'
---         and
---         'Vulkan.Extensions.VK_NV_ray_tracing.bindAccelerationStructureMemoryNV',
---         and remove @VkBindAccelerationStructureMemoryInfoKHR@,
---         @VkAccelerationStructureMemoryRequirementsInfoKHR@, and
---         @vkGetAccelerationStructureMemoryRequirementsKHR@
---
---     -   acceleration structures now take a
---         'Vulkan.Core10.Handles.Buffer' and offset at creation time for
---         memory placement
---
---     -   add a new
---         'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR'
---         buffer usage for such buffers
---
---     -   add a new 'ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR' acceleration
---         structure type for layering
---
--- -   move 'GEOMETRY_TYPE_INSTANCES_KHR' to main enum instead of being
---     added via extension
---
--- -   make build commands more consistent - all now build multiple
---     acceleration structures and are named plurally
---     ('cmdBuildAccelerationStructuresIndirectKHR',
---     'cmdBuildAccelerationStructuresKHR',
---     'buildAccelerationStructuresKHR')
---
--- -   add interactions with
---     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'
---     for acceleration structures, including a new feature
---     (@descriptorBindingAccelerationStructureUpdateAfterBind@) and 3 new
---     properties (@maxPerStageDescriptorAccelerationStructures@,
---     @maxPerStageDescriptorUpdateAfterBindAccelerationStructures@,
---     @maxDescriptorSetUpdateAfterBindAccelerationStructures@)
---
--- -   extension is no longer provisional
---
--- -   define synchronization requirements for builds, traces, and copies
---
--- -   define synchronization requirements for AS build inputs and indirect
---     build buffer
---
--- (5) What is 'ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR' for?
---
--- __RESOLVED__: It is primarily intended for API layering. In DXR, the
--- acceleration structure is basically just a buffer in a special layout,
--- and you do not know at creation time whether it will be used as a top or
--- bottom level acceleration structure. We thus added a generic
--- acceleration structure type whose type is unknown at creation time, but
--- is specified at build time instead. Applications which are written
--- directly for Vulkan should not use it.
---
--- == Version History
---
--- -   Revision 1, 2019-12-05 (Members of the Vulkan Ray Tracing TSG)
---
---     -   Internal revisions (forked from VK_NV_ray_tracing)
---
--- -   Revision 2, 2019-12-20 (Daniel Koch, Eric Werness)
---
---     -   Add const version of DeviceOrHostAddress (!3515)
---
---     -   Add VU to clarify that only handles in the current pipeline are
---         valid (!3518)
---
---     -   Restore some missing VUs and add in-place update language
---         (#1902, !3522)
---
---     -   rename VkAccelerationStructureInstanceKHR member from
---         accelerationStructure to accelerationStructureReference to
---         better match its type (!3523)
---
---     -   Allow VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS for pipeline
---         creation if shader group handles cannot be reused (!3523)
---
---     -   update documentation for the
---         VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS error code and add
---         missing documentation for new return codes from
---         VK_KHR_deferred_host_operations (!3523)
---
---     -   list new query types for VK_KHR_ray_tracing (!3523)
---
---     -   Fix VU statements for VkAccelerationStructureGeometryKHR
---         referring to correct union members and update to use more
---         current wording (!3523)
---
--- -   Revision 3, 2020-01-10 (Daniel Koch, Jon Leech, Christoph Kubisch)
---
---     -   Fix \'instance of\' and \'that\/which contains\/defines\' markup
---         issues (!3528)
---
---     -   factor out VK_KHR_pipeline_library as stand-alone extension
---         (!3540)
---
---     -   Resolve Vulkan-hpp issues (!3543)
---
---         -   add missing require for VkGeometryInstanceFlagsKHR
---
---         -   de-alias
---             VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV
---             since the KHR structure is no longer equivalent
---
---         -   add len to pDataSize attribute for
---             vkWriteAccelerationStructuresPropertiesKHR
---
--- -   Revision 4, 2020-01-23 (Daniel Koch, Eric Werness)
---
---     -   Improve vkWriteAccelerationStructuresPropertiesKHR, add return
---         value and VUs (#1947)
---
---     -   Clarify language to allow multiple raygen shaders (#1959)
---
---     -   Various editorial feedback (!3556)
---
---     -   Add language to help deal with looped self-intersecting fans
---         (#1901)
---
---     -   Change vkCmdTraceRays{,Indirect}KHR args to pointers (!3559)
---
---     -   Add scratch address validation language (#1941, !3551)
---
---     -   Fix definition and add hierarchy information for shader call
---         scope (#1977, !3571)
---
--- -   Revision 5, 2020-02-04 (Eric Werness, Jeff Bolz, Daniel Koch)
---
---     -   remove vestigial accelerationStructureUUID (!3582)
---
---     -   update definition of repack instructions and improve memory
---         model interactions (#1910, #1913, !3584)
---
---     -   Fix wrong sType for VkPhysicalDeviceRayTracingFeaturesKHR
---         (#1988)
---
---     -   Use provisional SPIR-V capabilities (#1987)
---
---     -   require rayTraversalPrimitiveCulling if rayQuery is supported
---         (#1927)
---
---     -   Miss shaders do not have object parameters (!3592)
---
---     -   Fix missing required types in XML (!3592)
---
---     -   clarify matching conditions for update (!3592)
---
---     -   add goal that host and device builds be similar (!3592)
---
---     -   clarify that @maxPrimitiveCount@ limit should apply to triangles
---         and AABBs (!3592)
---
---     -   Require alignment for instance arrayOfPointers (!3592)
---
---     -   Zero is a valid value for instance flags (!3592)
---
---     -   Add some alignment VUs that got lost in refactoring (!3592)
---
---     -   Recommend TMin epsilon rather than culling (!3592)
---
---     -   Get angle from dot product not cross product (!3592)
---
---     -   Clarify that AH can access the payload and attributes (!3592)
---
---     -   Match DXR behavior for inactive primitive definition (!3592)
---
---     -   Use a more generic term than degenerate for inactive to avoid
---         confusion (!3592)
---
--- -   Revision 6, 2020-02-20 (Daniel Koch)
---
---     -   fix some dangling NV references (#1996)
---
---     -   rename VkCmdTraceRaysIndirectCommandKHR to
---         VkTraceRaysIndirectCommandKHR (!3607)
---
---     -   update contributor list (!3611)
---
---     -   use uint64_t instead of VkAccelerationStructureReferenceKHR in
---         VkAccelerationStructureInstanceKHR (#2004)
---
--- -   Revision 7, 2020-02-28 (Tobias Hector)
---
---     -   remove HitTKHR SPIR-V builtin (spirv\/spirv-extensions#7)
---
--- -   Revision 8, 2020-03-06 (Tobias Hector, Dae Kim, Daniel Koch, Jeff
---     Bolz, Eric Werness)
---
---     -   explicitly state that Tmax is updated when new closest
---         intersection is accepted (#2020,!3536)
---
---     -   Made references to min and max t values consistent (!3644)
---
---     -   finish enumerating differences relative to VK_NV_ray_tracing in
---         issues (1) and (2) (#1974,!3642)
---
---     -   fix formatting in some math equations (!3642)
---
---     -   Restrict the Hit Kind operand of @OpReportIntersectionKHR@ to
---         7-bits (spirv\/spirv-extensions#8,!3646)
---
---     -   Say ray tracing \'/should/\' be watertight (#2008,!3631)
---
---     -   Clarify memory requirements for ray tracing buffers
---         (#2005,!3649)
---
---     -   Add callable size limits (#1997,!3652)
---
--- -   Revision 9, 2020-04-15 (Eric Werness, Daniel Koch, Tobias Hector,
---     Joshua Barczak)
---
---     -   Add geometry flags to acceleration structure creation (!3672)
---
---     -   add build scratch memory alignment
---         (minAccelerationStructureScratchOffsetAlignment) (#2065,!3725)
---
---     -   fix naming and return enum from
---         vkGetDeviceAccelerationStructureCompatibilityKHR (#2051,!3726)
---
---     -   require SPIR-V 1.4 (#2096,!3777)
---
---     -   added creation time capture\/replay flags (#2104,!3774)
---
---     -   require Vulkan 1.1 (#2133,!3806)
---
---     -   use device addresses instead of VkBuffers for ray tracing
---         commands (#2074,!3815)
---
---     -   add interactions with Vulkan 1.2 and VK_KHR_vulkan_memory_model
---         (#2133,!3830)
---
---     -   make VK_KHR_pipeline_library an interaction instead of required
---         (#2045,#2108,!3830)
---
---     -   make VK_KHR_deferred_host_operations an interaction instead of
---         required (#2045,!3830)
---
---     -   removed maxCallableSize and added explicit stack size management
---         for ray pipelines (#1997,!3817,!3772,!3844)
---
---     -   improved documentation for VkAccelerationStructureVersionInfoKHR
---         (#2135,3835)
---
---     -   rename VkAccelerationStructureBuildOffsetInfoKHR to
---         VkAccelerationStructureBuildRangeInfoKHR (#2058,!3754)
---
---     -   Re-unify geometry description between build and create (!3754)
---
---     -   Fix ppGeometries ambiguity, add pGeometries (#2032,!3811)
---
---     -   add interactions with VK_EXT_robustness2 and allow
---         nullDescriptor support for acceleration structures (#1920,!3848)
---
---     -   added future extensibility for AS updates (#2114,!3849)
---
---     -   Fix VU for dispatchrays and add a limit on the size of the full
---         grid (#2160,!3851)
---
---     -   Add shaderGroupHandleAlignment property (#2180,!3875)
---
---     -   Clarify deferred host ops for pipeline creation (#2067,!3813)
---
---     -   Change acceleration structure build to always be sized
---         (#2131,#2197,#2198,!3854,!3883,!3880)
---
--- -   Revision 10, 2020-07-03 (Mathieu Robart, Daniel Koch, Eric Werness,
---     Tobias Hector)
---
---     -   Decomposition of the specification, from VK_KHR_ray_tracing to
---         VK_KHR_acceleration_structure (#1918,!3912)
---
---     -   clarify buffer usage flags for ray tracing (#2181,!3939)
---
---     -   add max primitive counts to build indirect command (#2233,!3944)
---
---     -   Allocate acceleration structures from VkBuffers and add a mode
---         to constrain the device address (#2131,!3936)
---
---     -   Move VK_GEOMETRY_TYPE_INSTANCES_KHR to main enum (#2243,!3952)
---
---     -   make build commands more consistent (#2247,!3958)
---
---     -   add interactions with UPDATE_AFTER_BIND (#2128,!3986)
---
---     -   correct and expand build command VUs (!4020)
---
---     -   fix copy command VUs (!4018)
---
---     -   added various alignment requirements (#2229,!3943)
---
---     -   fix valid usage for arrays of geometryCount items (#2198,!4010)
---
---     -   define what is allowed to change on RTAS updates and relevant
---         VUs (#2177,!3961)
---
--- -   Revision 11, 2020-11-12 (Eric Werness, Josh Barczak, Daniel Koch,
---     Tobias Hector)
---
---     -   de-alias NV and KHR acceleration structure types and associated
---         commands (#2271,!4035)
---
---     -   specify alignment for host copy commands (#2273,!4037)
---
---     -   document
---         'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR'
---
---     -   specify that acceleration structures are non-linear
---         (#2289,!4068)
---
---     -   add several missing VUs for strides, vertexFormat, and indexType
---         (#2315,!4069)
---
---     -   restore VUs for VkAccelerationStructureBuildGeometryInfoKHR
---         (#2337,!4098)
---
---     -   ban multi-instance memory for host operations (#2324,!4102)
---
---     -   allow dstAccelerationStructure to be null for
---         vkGetAccelerationStructureBuildSizesKHR (#2330,!4111)
---
---     -   more build VU cleanup (#2138,#4130)
---
---     -   specify host endianness for AS serialization (#2261,!4136)
---
---     -   add invertible transform matrix VU (#1710,!4140)
---
---     -   require geometryCount to be 1 for TLAS builds (!4145)
---
---     -   improved validity conditions for build addresses (#4142)
---
---     -   add single statement SPIR-V VUs, build limit VUs (!4158)
---
---     -   document limits for vertex and aabb strides (#2390,!4184)
---
---     -   specify that
---         'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
---         applies to AS copies (#2382,#4173)
---
---     -   define sync for AS build inputs and indirect buffer
---         (#2407,!4208)
---
--- -   Revision 12, 2021-08-06 (Samuel Bourasseau)
---
---     -   rename
---         VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR to
---         VK_GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR (keep previous
---         as alias).
---
---     -   Clarify description and add note.
---
--- -   Revision 13, 2021-09-30 (Jon Leech)
---
---     -   Add interaction with @VK_KHR_format_feature_flags2@ to @vk.xml@
---
--- == See Also
---
--- No cross-references are available
---
--- == Document Notes
---
--- For more information, see the
--- <https://registry.khronos.org/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.
-module Vulkan.Extensions.VK_KHR_acceleration_structure  ( destroyAccelerationStructureKHR
-                                                        , cmdCopyAccelerationStructureKHR
-                                                        , copyAccelerationStructureKHR
-                                                        , cmdCopyAccelerationStructureToMemoryKHR
-                                                        , copyAccelerationStructureToMemoryKHR
-                                                        , cmdCopyMemoryToAccelerationStructureKHR
-                                                        , copyMemoryToAccelerationStructureKHR
-                                                        , cmdWriteAccelerationStructuresPropertiesKHR
-                                                        , writeAccelerationStructuresPropertiesKHR
-                                                        , getDeviceAccelerationStructureCompatibilityKHR
-                                                        , createAccelerationStructureKHR
-                                                        , withAccelerationStructureKHR
-                                                        , cmdBuildAccelerationStructuresKHR
-                                                        , cmdBuildAccelerationStructuresIndirectKHR
-                                                        , buildAccelerationStructuresKHR
-                                                        , getAccelerationStructureDeviceAddressKHR
-                                                        , getAccelerationStructureBuildSizesKHR
-                                                        , pattern GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR
-                                                        , WriteDescriptorSetAccelerationStructureKHR(..)
-                                                        , PhysicalDeviceAccelerationStructureFeaturesKHR(..)
-                                                        , PhysicalDeviceAccelerationStructurePropertiesKHR(..)
-                                                        , AccelerationStructureGeometryTrianglesDataKHR(..)
-                                                        , AccelerationStructureGeometryAabbsDataKHR(..)
-                                                        , AccelerationStructureGeometryInstancesDataKHR(..)
-                                                        , AccelerationStructureGeometryKHR(..)
-                                                        , AccelerationStructureBuildGeometryInfoKHR(..)
-                                                        , AccelerationStructureBuildRangeInfoKHR(..)
-                                                        , AccelerationStructureCreateInfoKHR(..)
-                                                        , AabbPositionsKHR(..)
-                                                        , TransformMatrixKHR(..)
-                                                        , AccelerationStructureInstanceKHR(..)
-                                                        , AccelerationStructureDeviceAddressInfoKHR(..)
-                                                        , AccelerationStructureVersionInfoKHR(..)
-                                                        , CopyAccelerationStructureInfoKHR(..)
-                                                        , CopyAccelerationStructureToMemoryInfoKHR(..)
-                                                        , CopyMemoryToAccelerationStructureInfoKHR(..)
-                                                        , AccelerationStructureBuildSizesInfoKHR(..)
-                                                        , DeviceOrHostAddressKHR(..)
-                                                        , DeviceOrHostAddressConstKHR(..)
-                                                        , AccelerationStructureGeometryDataKHR(..)
-                                                        , GeometryInstanceFlagsKHR
-                                                        , GeometryInstanceFlagBitsKHR( GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR
-                                                                                     , GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR
-                                                                                     , GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR
-                                                                                     , GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR
-                                                                                     , GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_EXT
-                                                                                     , GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_EXT
-                                                                                     , ..
-                                                                                     )
-                                                        , GeometryFlagsKHR
-                                                        , GeometryFlagBitsKHR( GEOMETRY_OPAQUE_BIT_KHR
-                                                                             , GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR
-                                                                             , ..
-                                                                             )
-                                                        , BuildAccelerationStructureFlagsKHR
-                                                        , BuildAccelerationStructureFlagBitsKHR( BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR
-                                                                                               , BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR
-                                                                                               , BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR
-                                                                                               , BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR
-                                                                                               , BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR
-                                                                                               , BUILD_ACCELERATION_STRUCTURE_ALLOW_DATA_ACCESS_KHR
-                                                                                               , BUILD_ACCELERATION_STRUCTURE_ALLOW_DISPLACEMENT_MICROMAP_UPDATE_NV
-                                                                                               , BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_EXT
-                                                                                               , BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_EXT
-                                                                                               , BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_EXT
-                                                                                               , BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV
-                                                                                               , ..
-                                                                                               )
-                                                        , AccelerationStructureCreateFlagsKHR
-                                                        , AccelerationStructureCreateFlagBitsKHR( ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR
-                                                                                                , ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV
-                                                                                                , ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT
-                                                                                                , ..
-                                                                                                )
-                                                        , CopyAccelerationStructureModeKHR( COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR
-                                                                                          , COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR
-                                                                                          , COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR
-                                                                                          , COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR
-                                                                                          , ..
-                                                                                          )
-                                                        , BuildAccelerationStructureModeKHR( BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR
-                                                                                           , BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR
-                                                                                           , ..
-                                                                                           )
-                                                        , AccelerationStructureTypeKHR( ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR
-                                                                                      , ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR
-                                                                                      , ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR
-                                                                                      , ..
-                                                                                      )
-                                                        , GeometryTypeKHR( GEOMETRY_TYPE_TRIANGLES_KHR
-                                                                         , GEOMETRY_TYPE_AABBS_KHR
-                                                                         , GEOMETRY_TYPE_INSTANCES_KHR
-                                                                         , ..
-                                                                         )
-                                                        , AccelerationStructureBuildTypeKHR( ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR
-                                                                                           , ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR
-                                                                                           , ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR
-                                                                                           , ..
-                                                                                           )
-                                                        , AccelerationStructureCompatibilityKHR( ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR
-                                                                                               , ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR
-                                                                                               , ..
-                                                                                               )
-                                                        , KHR_ACCELERATION_STRUCTURE_SPEC_VERSION
-                                                        , pattern KHR_ACCELERATION_STRUCTURE_SPEC_VERSION
-                                                        , KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME
-                                                        , pattern KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME
-                                                        , AccelerationStructureKHR(..)
-                                                        , DeferredOperationKHR(..)
-                                                        , DebugReportObjectTypeEXT(..)
-                                                        ) where
-
-import Data.Bits (Bits)
-import Data.Bits (FiniteBits)
-import Data.Bits (shiftL)
-import Data.Bits (shiftR)
-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 Data.Bits ((.&.))
-import Data.Bits ((.|.))
-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 GHC.Show (showsPrec)
-import Numeric (showHex)
-import qualified Data.ByteString (length)
-import Data.ByteString (packCStringLen)
-import Data.ByteString.Unsafe (unsafeUseAsCString)
-import Data.Coerce (coerce)
-import Control.Monad.Trans.Class (lift)
-import Control.Monad.Trans.Cont (evalContT)
-import Control.Monad.Trans.Cont (runContT)
-import Data.Vector (generateM)
-import qualified Data.Vector (imapM_)
-import qualified Data.Vector (length)
-import qualified Data.Vector (null)
-import Foreign.C.Types (CSize(..))
-import Vulkan.CStruct (FromCStruct)
-import Vulkan.CStruct (FromCStruct(..))
-import Vulkan.CStruct (ToCStruct)
-import Vulkan.CStruct (ToCStruct(..))
-import Vulkan.Zero (Zero)
-import Vulkan.Zero (Zero(..))
-import Control.Monad.IO.Class (MonadIO)
-import Data.String (IsString)
-import Data.Type.Equality ((:~:)(Refl))
-import Data.Typeable (Typeable)
-import Foreign.C.Types (CChar)
-import Foreign.C.Types (CFloat)
-import Foreign.C.Types (CFloat(..))
-import Foreign.C.Types (CFloat(CFloat))
-import Foreign.C.Types (CSize)
-import Foreign.C.Types (CSize(CSize))
-import Foreign.Storable (Storable)
-import Foreign.Storable (Storable(peek))
-import Foreign.Storable (Storable(poke))
-import qualified Foreign.Storable (Storable(..))
-import GHC.Generics (Generic)
-import GHC.IO.Exception (IOErrorType(..))
-import GHC.IO.Exception (IOException(..))
-import Data.Int (Int32)
-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.Word (Word8)
-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.Core10.FundamentalTypes (bool32ToBool)
-import Vulkan.Core10.FundamentalTypes (boolToBool32)
-import Vulkan.CStruct.Extends (forgetExtensions)
-import Vulkan.CStruct.Utils (lowerArrayPtr)
-import Vulkan.CStruct.Extends (pokeSomeCStruct)
-import Vulkan.NamedType ((:::))
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing_motion_blur (AccelerationStructureGeometryMotionTrianglesDataNV)
-import Vulkan.Extensions.Handles (AccelerationStructureKHR)
-import Vulkan.Extensions.Handles (AccelerationStructureKHR(..))
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing_motion_blur (AccelerationStructureMotionInfoNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_displacement_micromap (AccelerationStructureTrianglesDisplacementMicromapNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_opacity_micromap (AccelerationStructureTrianglesOpacityMicromapEXT)
-import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)
-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.Extensions.Handles (DeferredOperationKHR)
-import Vulkan.Extensions.Handles (DeferredOperationKHR(..))
-import Vulkan.Core10.Handles (Device)
-import Vulkan.Core10.Handles (Device(..))
-import Vulkan.Core10.Handles (Device(Device))
-import Vulkan.Core10.FundamentalTypes (DeviceAddress)
-import Vulkan.Dynamic (DeviceCmds(pVkBuildAccelerationStructuresKHR))
-import Vulkan.Dynamic (DeviceCmds(pVkCmdBuildAccelerationStructuresIndirectKHR))
-import Vulkan.Dynamic (DeviceCmds(pVkCmdBuildAccelerationStructuresKHR))
-import Vulkan.Dynamic (DeviceCmds(pVkCmdCopyAccelerationStructureKHR))
-import Vulkan.Dynamic (DeviceCmds(pVkCmdCopyAccelerationStructureToMemoryKHR))
-import Vulkan.Dynamic (DeviceCmds(pVkCmdCopyMemoryToAccelerationStructureKHR))
-import Vulkan.Dynamic (DeviceCmds(pVkCmdWriteAccelerationStructuresPropertiesKHR))
-import Vulkan.Dynamic (DeviceCmds(pVkCopyAccelerationStructureKHR))
-import Vulkan.Dynamic (DeviceCmds(pVkCopyAccelerationStructureToMemoryKHR))
-import Vulkan.Dynamic (DeviceCmds(pVkCopyMemoryToAccelerationStructureKHR))
-import Vulkan.Dynamic (DeviceCmds(pVkCreateAccelerationStructureKHR))
-import Vulkan.Dynamic (DeviceCmds(pVkDestroyAccelerationStructureKHR))
-import Vulkan.Dynamic (DeviceCmds(pVkGetAccelerationStructureBuildSizesKHR))
-import Vulkan.Dynamic (DeviceCmds(pVkGetAccelerationStructureDeviceAddressKHR))
-import Vulkan.Dynamic (DeviceCmds(pVkGetDeviceAccelerationStructureCompatibilityKHR))
-import Vulkan.Dynamic (DeviceCmds(pVkWriteAccelerationStructuresPropertiesKHR))
-import Vulkan.Core10.FundamentalTypes (DeviceSize)
-import Vulkan.Core10.Handles (Device_T)
-import Vulkan.CStruct.Extends (Extends)
-import Vulkan.CStruct.Extends (Extendss)
-import Vulkan.CStruct.Extends (Extensible(..))
-import Vulkan.Core10.FundamentalTypes (Flags)
-import Vulkan.Core10.Enums.Format (Format)
-import Vulkan.Core10.Enums.IndexType (IndexType)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_buffer (OpaqueCaptureDescriptorDataCreateInfoEXT)
-import Vulkan.CStruct.Extends (PeekChain)
-import Vulkan.CStruct.Extends (PeekChain(..))
-import Vulkan.CStruct.Extends (PokeChain)
-import Vulkan.CStruct.Extends (PokeChain(..))
-import Vulkan.Core10.Handles (QueryPool)
-import Vulkan.Core10.Handles (QueryPool(..))
-import Vulkan.Core10.Enums.QueryType (QueryType)
-import Vulkan.Core10.Enums.QueryType (QueryType(..))
-import Vulkan.Core10.Enums.Result (Result)
-import Vulkan.Core10.Enums.Result (Result(..))
-import Vulkan.CStruct.Extends (SomeStruct)
-import Vulkan.CStruct.Extends (SomeStruct(..))
-import Vulkan.Core10.Enums.StructureType (StructureType)
-import Vulkan.Exception (VulkanException(..))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR))
-import Vulkan.Core10.Enums.Result (Result(SUCCESS))
-import Vulkan.Core10.APIConstants (pattern UUID_SIZE)
-import Vulkan.Extensions.Handles (AccelerationStructureKHR(..))
-import Vulkan.Extensions.VK_EXT_debug_report (DebugReportObjectTypeEXT(..))
-import Vulkan.Extensions.Handles (DeferredOperationKHR(..))
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkDestroyAccelerationStructureKHR
-  :: FunPtr (Ptr Device_T -> AccelerationStructureKHR -> Ptr AllocationCallbacks -> IO ()) -> Ptr Device_T -> AccelerationStructureKHR -> Ptr AllocationCallbacks -> IO ()
-
--- | vkDestroyAccelerationStructureKHR - Destroy an acceleration structure
--- object
---
--- == Valid Usage
---
--- -   #VUID-vkDestroyAccelerationStructureKHR-accelerationStructure-08934#
---     The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-accelerationStructure ::accelerationStructure>
---     feature /must/ be enabled
---
--- -   #VUID-vkDestroyAccelerationStructureKHR-accelerationStructure-02442#
---     All submitted commands that refer to @accelerationStructure@ /must/
---     have completed execution
---
--- -   #VUID-vkDestroyAccelerationStructureKHR-accelerationStructure-02443#
---     If 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' were
---     provided when @accelerationStructure@ was created, a compatible set
---     of callbacks /must/ be provided here
---
--- -   #VUID-vkDestroyAccelerationStructureKHR-accelerationStructure-02444#
---     If no 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' were
---     provided when @accelerationStructure@ was created, @pAllocator@
---     /must/ be @NULL@
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkDestroyAccelerationStructureKHR-device-parameter# @device@
---     /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
---
--- -   #VUID-vkDestroyAccelerationStructureKHR-accelerationStructure-parameter#
---     If @accelerationStructure@ is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', @accelerationStructure@
---     /must/ be a valid
---     'Vulkan.Extensions.Handles.AccelerationStructureKHR' handle
---
--- -   #VUID-vkDestroyAccelerationStructureKHR-pAllocator-parameter# If
---     @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid pointer
---     to a valid 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'
---     structure
---
--- -   #VUID-vkDestroyAccelerationStructureKHR-accelerationStructure-parent#
---     If @accelerationStructure@ is a valid handle, it /must/ have been
---     created, allocated, or retrieved from @device@
---
--- == Host Synchronization
---
--- -   Host access to @accelerationStructure@ /must/ be externally
---     synchronized
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
--- 'Vulkan.Extensions.Handles.AccelerationStructureKHR',
--- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',
--- 'Vulkan.Core10.Handles.Device'
-destroyAccelerationStructureKHR :: forall io
-                                 . (MonadIO io)
-                                => -- | @device@ is the logical device that destroys the acceleration structure.
-                                   Device
-                                -> -- | @accelerationStructure@ is the acceleration structure to destroy.
-                                   AccelerationStructureKHR
-                                -> -- | @pAllocator@ controls host memory allocation as described in the
-                                   -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
-                                   -- chapter.
-                                   ("allocator" ::: Maybe AllocationCallbacks)
-                                -> io ()
-destroyAccelerationStructureKHR device
-                                  accelerationStructure
-                                  allocator = liftIO . evalContT $ do
-  let vkDestroyAccelerationStructureKHRPtr = pVkDestroyAccelerationStructureKHR (case device of Device{deviceCmds} -> deviceCmds)
-  lift $ unless (vkDestroyAccelerationStructureKHRPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkDestroyAccelerationStructureKHR is null" Nothing Nothing
-  let vkDestroyAccelerationStructureKHR' = mkVkDestroyAccelerationStructureKHR vkDestroyAccelerationStructureKHRPtr
-  pAllocator <- case (allocator) of
-    Nothing -> pure nullPtr
-    Just j -> ContT $ withCStruct (j)
-  lift $ traceAroundEvent "vkDestroyAccelerationStructureKHR" (vkDestroyAccelerationStructureKHR'
-                                                                 (deviceHandle (device))
-                                                                 (accelerationStructure)
-                                                                 pAllocator)
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdCopyAccelerationStructureKHR
-  :: FunPtr (Ptr CommandBuffer_T -> Ptr CopyAccelerationStructureInfoKHR -> IO ()) -> Ptr CommandBuffer_T -> Ptr CopyAccelerationStructureInfoKHR -> IO ()
-
--- | vkCmdCopyAccelerationStructureKHR - Copy an acceleration structure
---
--- = Description
---
--- This command copies the @pInfo->src@ acceleration structure to the
--- @pInfo->dst@ acceleration structure in the manner specified by
--- @pInfo->mode@.
---
--- Accesses to @pInfo->src@ and @pInfo->dst@ /must/ be
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies synchronized>
--- with the
--- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR'
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages pipeline stage>
--- or the
--- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages pipeline stage>,
--- and an
--- <https://registry.khronos.org/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
--- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR'
--- as appropriate.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdCopyAccelerationStructureKHR-accelerationStructure-08925#
---     The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-accelerationStructure ::accelerationStructure>
---     feature /must/ be enabled
---
--- -   #VUID-vkCmdCopyAccelerationStructureKHR-buffer-03737# The @buffer@
---     used to create @pInfo->src@ /must/ be bound to device memory
---
--- -   #VUID-vkCmdCopyAccelerationStructureKHR-buffer-03738# The @buffer@
---     used to create @pInfo->dst@ /must/ be bound to device memory
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdCopyAccelerationStructureKHR-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdCopyAccelerationStructureKHR-pInfo-parameter# @pInfo@
---     /must/ be a valid pointer to a valid
---     'CopyAccelerationStructureInfoKHR' structure
---
--- -   #VUID-vkCmdCopyAccelerationStructureKHR-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-vkCmdCopyAccelerationStructureKHR-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support compute operations
---
--- -   #VUID-vkCmdCopyAccelerationStructureKHR-renderpass# This command
---     /must/ only be called outside of a render pass instance
---
--- -   #VUID-vkCmdCopyAccelerationStructureKHR-videocoding# This command
---     /must/ only be called outside of a video coding scope
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
--- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | Compute                                                                                                               | Action                                                                                                                                 |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
--- 'Vulkan.Core10.Handles.CommandBuffer',
--- 'CopyAccelerationStructureInfoKHR'
-cmdCopyAccelerationStructureKHR :: forall io
-                                 . (MonadIO io)
-                                => -- | @commandBuffer@ is the command buffer into which the command will be
-                                   -- recorded.
-                                   CommandBuffer
-                                -> -- | @pInfo@ is a pointer to a 'CopyAccelerationStructureInfoKHR' structure
-                                   -- defining the copy operation.
-                                   CopyAccelerationStructureInfoKHR
-                                -> io ()
-cmdCopyAccelerationStructureKHR commandBuffer info = liftIO . evalContT $ do
-  let vkCmdCopyAccelerationStructureKHRPtr = pVkCmdCopyAccelerationStructureKHR (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCmdCopyAccelerationStructureKHRPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdCopyAccelerationStructureKHR is null" Nothing Nothing
-  let vkCmdCopyAccelerationStructureKHR' = mkVkCmdCopyAccelerationStructureKHR vkCmdCopyAccelerationStructureKHRPtr
-  pInfo <- ContT $ withCStruct (info)
-  lift $ traceAroundEvent "vkCmdCopyAccelerationStructureKHR" (vkCmdCopyAccelerationStructureKHR'
-                                                                 (commandBufferHandle (commandBuffer))
-                                                                 pInfo)
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCopyAccelerationStructureKHR
-  :: FunPtr (Ptr Device_T -> DeferredOperationKHR -> Ptr CopyAccelerationStructureInfoKHR -> IO Result) -> Ptr Device_T -> DeferredOperationKHR -> Ptr CopyAccelerationStructureInfoKHR -> IO Result
-
--- | vkCopyAccelerationStructureKHR - Copy an acceleration structure on the
--- host
---
--- = Description
---
--- This command fulfills the same task as 'cmdCopyAccelerationStructureKHR'
--- but is executed by the host.
---
--- == Valid Usage
---
--- -   #VUID-vkCopyAccelerationStructureKHR-accelerationStructureHostCommands-03582#
---     The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-accelerationStructureHostCommands ::accelerationStructureHostCommands>
---     feature /must/ be enabled
---
--- -   #VUID-vkCopyAccelerationStructureKHR-deferredOperation-03678# Any
---     previous deferred operation that was associated with
---     @deferredOperation@ /must/ be complete
---
--- -   #VUID-vkCopyAccelerationStructureKHR-buffer-03727# The @buffer@ used
---     to create @pInfo->src@ /must/ be bound to host-visible device memory
---
--- -   #VUID-vkCopyAccelerationStructureKHR-buffer-03728# The @buffer@ used
---     to create @pInfo->dst@ /must/ be bound to host-visible device memory
---
--- -   #VUID-vkCopyAccelerationStructureKHR-buffer-03780# The @buffer@ used
---     to create @pInfo->src@ /must/ be bound to memory that was not
---     allocated with multiple instances
---
--- -   #VUID-vkCopyAccelerationStructureKHR-buffer-03781# The @buffer@ used
---     to create @pInfo->dst@ /must/ be bound to memory that was not
---     allocated with multiple instances
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCopyAccelerationStructureKHR-device-parameter# @device@
---     /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
---
--- -   #VUID-vkCopyAccelerationStructureKHR-deferredOperation-parameter# If
---     @deferredOperation@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
---     @deferredOperation@ /must/ be a valid
---     'Vulkan.Extensions.Handles.DeferredOperationKHR' handle
---
--- -   #VUID-vkCopyAccelerationStructureKHR-pInfo-parameter# @pInfo@ /must/
---     be a valid pointer to a valid 'CopyAccelerationStructureInfoKHR'
---     structure
---
--- -   #VUID-vkCopyAccelerationStructureKHR-deferredOperation-parent# If
---     @deferredOperation@ is a valid handle, it /must/ have been created,
---     allocated, or retrieved from @device@
---
--- == 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.OPERATION_DEFERRED_KHR'
---
---     -   'Vulkan.Core10.Enums.Result.OPERATION_NOT_DEFERRED_KHR'
---
--- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
---
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
---
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
--- 'CopyAccelerationStructureInfoKHR',
--- 'Vulkan.Extensions.Handles.DeferredOperationKHR',
--- 'Vulkan.Core10.Handles.Device'
-copyAccelerationStructureKHR :: forall io
-                              . (MonadIO io)
-                             => -- | @device@ is the device which owns the acceleration structures.
-                                Device
-                             -> -- | @deferredOperation@ is an optional
-                                -- 'Vulkan.Extensions.Handles.DeferredOperationKHR' to
-                                -- <https://registry.khronos.org/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
-                                -- defining the copy operation.
-                                CopyAccelerationStructureInfoKHR
-                             -> io (Result)
-copyAccelerationStructureKHR device
-                               deferredOperation
-                               info = liftIO . evalContT $ do
-  let vkCopyAccelerationStructureKHRPtr = pVkCopyAccelerationStructureKHR (case device of Device{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCopyAccelerationStructureKHRPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCopyAccelerationStructureKHR is null" Nothing Nothing
-  let vkCopyAccelerationStructureKHR' = mkVkCopyAccelerationStructureKHR vkCopyAccelerationStructureKHRPtr
-  pInfo <- ContT $ withCStruct (info)
-  r <- lift $ traceAroundEvent "vkCopyAccelerationStructureKHR" (vkCopyAccelerationStructureKHR'
-                                                                   (deviceHandle (device))
-                                                                   (deferredOperation)
-                                                                   pInfo)
-  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
-  pure $ (r)
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdCopyAccelerationStructureToMemoryKHR
-  :: FunPtr (Ptr CommandBuffer_T -> Ptr CopyAccelerationStructureToMemoryInfoKHR -> IO ()) -> Ptr CommandBuffer_T -> Ptr CopyAccelerationStructureToMemoryInfoKHR -> IO ()
-
--- | vkCmdCopyAccelerationStructureToMemoryKHR - Copy an acceleration
--- structure to device memory
---
--- = Description
---
--- Accesses to @pInfo->src@ /must/ be
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies synchronized>
--- with the
--- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR'
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages pipeline stage>
--- or the
--- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages pipeline stage>,
--- and an
--- <https://registry.khronos.org/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
--- synchronized with the
--- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR'
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages pipeline stage>
--- or the
--- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages pipeline stage>,
--- and an and an access type of
--- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_TRANSFER_WRITE_BIT'.
---
--- This command produces the same results as
--- 'copyAccelerationStructureToMemoryKHR', but writes its result to a
--- device address, and is executed on the device rather than the host. The
--- output /may/ not necessarily be bit-for-bit identical, but it can be
--- equally used by either 'cmdCopyMemoryToAccelerationStructureKHR' or
--- 'copyMemoryToAccelerationStructureKHR'.
---
--- The defined header structure for the serialized data consists of:
---
--- -   'Vulkan.Core10.APIConstants.UUID_SIZE' bytes of data matching
---     'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceIDProperties'::@driverUUID@
---
--- -   'Vulkan.Core10.APIConstants.UUID_SIZE' bytes of data identifying the
---     compatibility for comparison using
---     'getDeviceAccelerationStructureCompatibilityKHR'
---
--- -   A 64-bit integer of the total size matching the value queried using
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR'
---
--- -   A 64-bit integer of the deserialized size to be passed in to
---     'AccelerationStructureCreateInfoKHR'::@size@
---
--- -   A 64-bit integer of the count of the number of acceleration
---     structure handles following. This value matches the value queried
---     using
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR'.
---     This will be zero for a bottom-level acceleration structure. For
---     top-level acceleration structures this number is
---     implementation-dependent; the number of and ordering of the handles
---     may not match the instance descriptions which were used to build the
---     acceleration structure.
---
--- The corresponding handles matching the values returned by
--- 'getAccelerationStructureDeviceAddressKHR' or
--- 'Vulkan.Extensions.VK_NV_ray_tracing.getAccelerationStructureHandleNV'
--- are tightly packed in the buffer following the count. The application is
--- expected to store a mapping between those handles and the original
--- application-generated bottom-level acceleration structures to provide
--- when deserializing. The serialized data is written to the buffer (or
--- read from the buffer) according to the host endianness.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdCopyAccelerationStructureToMemoryKHR-accelerationStructure-08926#
---     The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-accelerationStructure ::accelerationStructure>
---     feature /must/ be enabled
---
--- -   #VUID-vkCmdCopyAccelerationStructureToMemoryKHR-pInfo-03739#
---     @pInfo->dst.deviceAddress@ /must/ be a valid device address for a
---     buffer bound to device memory
---
--- -   #VUID-vkCmdCopyAccelerationStructureToMemoryKHR-pInfo-03740#
---     @pInfo->dst.deviceAddress@ /must/ be aligned to @256@ bytes
---
--- -   #VUID-vkCmdCopyAccelerationStructureToMemoryKHR-pInfo-03741# If the
---     buffer pointed to by @pInfo->dst.deviceAddress@ is non-sparse then
---     it /must/ be bound completely and contiguously to a single
---     'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-vkCmdCopyAccelerationStructureToMemoryKHR-None-03559# The
---     @buffer@ used to create @pInfo->src@ /must/ be bound to device
---     memory
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdCopyAccelerationStructureToMemoryKHR-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdCopyAccelerationStructureToMemoryKHR-pInfo-parameter#
---     @pInfo@ /must/ be a valid pointer to a valid
---     'CopyAccelerationStructureToMemoryInfoKHR' structure
---
--- -   #VUID-vkCmdCopyAccelerationStructureToMemoryKHR-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-vkCmdCopyAccelerationStructureToMemoryKHR-commandBuffer-cmdpool#
---     The 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support compute operations
---
--- -   #VUID-vkCmdCopyAccelerationStructureToMemoryKHR-renderpass# This
---     command /must/ only be called outside of a render pass instance
---
--- -   #VUID-vkCmdCopyAccelerationStructureToMemoryKHR-videocoding# This
---     command /must/ only be called outside of a video coding scope
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
--- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | Compute                                                                                                               | Action                                                                                                                                 |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
--- 'Vulkan.Core10.Handles.CommandBuffer',
--- 'CopyAccelerationStructureToMemoryInfoKHR'
-cmdCopyAccelerationStructureToMemoryKHR :: forall io
-                                         . (MonadIO io)
-                                        => -- | @commandBuffer@ is the command buffer into which the command will be
-                                           -- recorded.
-                                           CommandBuffer
-                                        -> -- | @pInfo@ is an a pointer to a 'CopyAccelerationStructureToMemoryInfoKHR'
-                                           -- structure defining the copy operation.
-                                           CopyAccelerationStructureToMemoryInfoKHR
-                                        -> io ()
-cmdCopyAccelerationStructureToMemoryKHR commandBuffer
-                                          info = liftIO . evalContT $ do
-  let vkCmdCopyAccelerationStructureToMemoryKHRPtr = pVkCmdCopyAccelerationStructureToMemoryKHR (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCmdCopyAccelerationStructureToMemoryKHRPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdCopyAccelerationStructureToMemoryKHR is null" Nothing Nothing
-  let vkCmdCopyAccelerationStructureToMemoryKHR' = mkVkCmdCopyAccelerationStructureToMemoryKHR vkCmdCopyAccelerationStructureToMemoryKHRPtr
-  pInfo <- ContT $ withCStruct (info)
-  lift $ traceAroundEvent "vkCmdCopyAccelerationStructureToMemoryKHR" (vkCmdCopyAccelerationStructureToMemoryKHR'
-                                                                         (commandBufferHandle (commandBuffer))
-                                                                         pInfo)
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCopyAccelerationStructureToMemoryKHR
-  :: FunPtr (Ptr Device_T -> DeferredOperationKHR -> Ptr CopyAccelerationStructureToMemoryInfoKHR -> IO Result) -> Ptr Device_T -> DeferredOperationKHR -> Ptr CopyAccelerationStructureToMemoryInfoKHR -> IO Result
-
--- | vkCopyAccelerationStructureToMemoryKHR - Serialize an acceleration
--- structure on the host
---
--- = Description
---
--- This command fulfills the same task as
--- 'cmdCopyAccelerationStructureToMemoryKHR' but is executed by the host.
---
--- This command produces the same results as
--- 'cmdCopyAccelerationStructureToMemoryKHR', but writes its result
--- directly to a host pointer, and is executed on the host rather than the
--- device. The output /may/ not necessarily be bit-for-bit identical, but
--- it can be equally used by either
--- 'cmdCopyMemoryToAccelerationStructureKHR' or
--- 'copyMemoryToAccelerationStructureKHR'.
---
--- == Valid Usage
---
--- -   #VUID-vkCopyAccelerationStructureToMemoryKHR-accelerationStructureHostCommands-03584#
---     The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-accelerationStructureHostCommands ::accelerationStructureHostCommands>
---     feature /must/ be enabled
---
--- -   #VUID-vkCopyAccelerationStructureToMemoryKHR-deferredOperation-03678#
---     Any previous deferred operation that was associated with
---     @deferredOperation@ /must/ be complete
---
--- -   #VUID-vkCopyAccelerationStructureToMemoryKHR-buffer-03731# The
---     @buffer@ used to create @pInfo->src@ /must/ be bound to host-visible
---     device memory
---
--- -   #VUID-vkCopyAccelerationStructureToMemoryKHR-pInfo-03732#
---     @pInfo->dst.hostAddress@ /must/ be a valid host pointer
---
--- -   #VUID-vkCopyAccelerationStructureToMemoryKHR-pInfo-03751#
---     @pInfo->dst.hostAddress@ /must/ be aligned to 16 bytes
---
--- -   #VUID-vkCopyAccelerationStructureToMemoryKHR-buffer-03783# The
---     @buffer@ used to create @pInfo->src@ /must/ be bound to memory that
---     was not allocated with multiple instances
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCopyAccelerationStructureToMemoryKHR-device-parameter#
---     @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
---
--- -   #VUID-vkCopyAccelerationStructureToMemoryKHR-deferredOperation-parameter#
---     If @deferredOperation@ is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', @deferredOperation@ /must/
---     be a valid 'Vulkan.Extensions.Handles.DeferredOperationKHR' handle
---
--- -   #VUID-vkCopyAccelerationStructureToMemoryKHR-pInfo-parameter#
---     @pInfo@ /must/ be a valid pointer to a valid
---     'CopyAccelerationStructureToMemoryInfoKHR' structure
---
--- -   #VUID-vkCopyAccelerationStructureToMemoryKHR-deferredOperation-parent#
---     If @deferredOperation@ is a valid handle, it /must/ have been
---     created, allocated, or retrieved from @device@
---
--- == 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.OPERATION_DEFERRED_KHR'
---
---     -   'Vulkan.Core10.Enums.Result.OPERATION_NOT_DEFERRED_KHR'
---
--- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
---
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
---
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
--- 'CopyAccelerationStructureToMemoryInfoKHR',
--- 'Vulkan.Extensions.Handles.DeferredOperationKHR',
--- 'Vulkan.Core10.Handles.Device'
-copyAccelerationStructureToMemoryKHR :: forall io
-                                      . (MonadIO io)
-                                     => -- | @device@ is the device which owns @pInfo->src@.
-                                        Device
-                                     -> -- | @deferredOperation@ is an optional
-                                        -- 'Vulkan.Extensions.Handles.DeferredOperationKHR' to
-                                        -- <https://registry.khronos.org/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'
-                                        -- structure defining the copy operation.
-                                        CopyAccelerationStructureToMemoryInfoKHR
-                                     -> io (Result)
-copyAccelerationStructureToMemoryKHR device
-                                       deferredOperation
-                                       info = liftIO . evalContT $ do
-  let vkCopyAccelerationStructureToMemoryKHRPtr = pVkCopyAccelerationStructureToMemoryKHR (case device of Device{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCopyAccelerationStructureToMemoryKHRPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCopyAccelerationStructureToMemoryKHR is null" Nothing Nothing
-  let vkCopyAccelerationStructureToMemoryKHR' = mkVkCopyAccelerationStructureToMemoryKHR vkCopyAccelerationStructureToMemoryKHRPtr
-  pInfo <- ContT $ withCStruct (info)
-  r <- lift $ traceAroundEvent "vkCopyAccelerationStructureToMemoryKHR" (vkCopyAccelerationStructureToMemoryKHR'
-                                                                           (deviceHandle (device))
-                                                                           (deferredOperation)
-                                                                           pInfo)
-  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
-  pure $ (r)
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdCopyMemoryToAccelerationStructureKHR
-  :: FunPtr (Ptr CommandBuffer_T -> Ptr CopyMemoryToAccelerationStructureInfoKHR -> IO ()) -> Ptr CommandBuffer_T -> Ptr CopyMemoryToAccelerationStructureInfoKHR -> IO ()
-
--- | vkCmdCopyMemoryToAccelerationStructureKHR - Copy device memory to an
--- acceleration structure
---
--- = Description
---
--- Accesses to @pInfo->dst@ /must/ be
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies synchronized>
--- with the
--- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR'
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages pipeline stage>
--- or the
--- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages pipeline stage>,
--- and an
--- <https://registry.khronos.org/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
--- synchronized with the
--- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR'
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages pipeline stage>
--- or the
--- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages pipeline stage>,
--- and an access type of
--- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_TRANSFER_READ_BIT'.
---
--- This command can accept acceleration structures produced by either
--- 'cmdCopyAccelerationStructureToMemoryKHR' or
--- 'copyAccelerationStructureToMemoryKHR'.
---
--- The structure provided as input to deserialize is as described in
--- 'cmdCopyAccelerationStructureToMemoryKHR', with any acceleration
--- structure handles filled in with the newly-queried handles to bottom
--- level acceleration structures created before deserialization. These do
--- not need to be built at deserialize time, but /must/ be created.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdCopyMemoryToAccelerationStructureKHR-accelerationStructure-08927#
---     The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-accelerationStructure ::accelerationStructure>
---     feature /must/ be enabled
---
--- -   #VUID-vkCmdCopyMemoryToAccelerationStructureKHR-pInfo-03742#
---     @pInfo->src.deviceAddress@ /must/ be a valid device address for a
---     buffer bound to device memory
---
--- -   #VUID-vkCmdCopyMemoryToAccelerationStructureKHR-pInfo-03743#
---     @pInfo->src.deviceAddress@ /must/ be aligned to @256@ bytes
---
--- -   #VUID-vkCmdCopyMemoryToAccelerationStructureKHR-pInfo-03744# If the
---     buffer pointed to by @pInfo->src.deviceAddress@ is non-sparse then
---     it /must/ be bound completely and contiguously to a single
---     'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-vkCmdCopyMemoryToAccelerationStructureKHR-buffer-03745# The
---     @buffer@ used to create @pInfo->dst@ /must/ be bound to device
---     memory
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdCopyMemoryToAccelerationStructureKHR-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdCopyMemoryToAccelerationStructureKHR-pInfo-parameter#
---     @pInfo@ /must/ be a valid pointer to a valid
---     'CopyMemoryToAccelerationStructureInfoKHR' structure
---
--- -   #VUID-vkCmdCopyMemoryToAccelerationStructureKHR-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-vkCmdCopyMemoryToAccelerationStructureKHR-commandBuffer-cmdpool#
---     The 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support compute operations
---
--- -   #VUID-vkCmdCopyMemoryToAccelerationStructureKHR-renderpass# This
---     command /must/ only be called outside of a render pass instance
---
--- -   #VUID-vkCmdCopyMemoryToAccelerationStructureKHR-videocoding# This
---     command /must/ only be called outside of a video coding scope
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
--- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | Compute                                                                                                               | Action                                                                                                                                 |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
--- 'Vulkan.Core10.Handles.CommandBuffer',
--- 'CopyMemoryToAccelerationStructureInfoKHR'
-cmdCopyMemoryToAccelerationStructureKHR :: forall io
-                                         . (MonadIO io)
-                                        => -- | @commandBuffer@ is the command buffer into which the command will be
-                                           -- recorded.
-                                           CommandBuffer
-                                        -> -- | @pInfo@ is a pointer to a 'CopyMemoryToAccelerationStructureInfoKHR'
-                                           -- structure defining the copy operation.
-                                           CopyMemoryToAccelerationStructureInfoKHR
-                                        -> io ()
-cmdCopyMemoryToAccelerationStructureKHR commandBuffer
-                                          info = liftIO . evalContT $ do
-  let vkCmdCopyMemoryToAccelerationStructureKHRPtr = pVkCmdCopyMemoryToAccelerationStructureKHR (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCmdCopyMemoryToAccelerationStructureKHRPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdCopyMemoryToAccelerationStructureKHR is null" Nothing Nothing
-  let vkCmdCopyMemoryToAccelerationStructureKHR' = mkVkCmdCopyMemoryToAccelerationStructureKHR vkCmdCopyMemoryToAccelerationStructureKHRPtr
-  pInfo <- ContT $ withCStruct (info)
-  lift $ traceAroundEvent "vkCmdCopyMemoryToAccelerationStructureKHR" (vkCmdCopyMemoryToAccelerationStructureKHR'
-                                                                         (commandBufferHandle (commandBuffer))
-                                                                         pInfo)
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCopyMemoryToAccelerationStructureKHR
-  :: FunPtr (Ptr Device_T -> DeferredOperationKHR -> Ptr CopyMemoryToAccelerationStructureInfoKHR -> IO Result) -> Ptr Device_T -> DeferredOperationKHR -> Ptr CopyMemoryToAccelerationStructureInfoKHR -> IO Result
-
--- | vkCopyMemoryToAccelerationStructureKHR - Deserialize an acceleration
--- structure on the host
---
--- = Description
---
--- This command fulfills the same task as
--- 'cmdCopyMemoryToAccelerationStructureKHR' but is executed by the host.
---
--- This command can accept acceleration structures produced by either
--- 'cmdCopyAccelerationStructureToMemoryKHR' or
--- 'copyAccelerationStructureToMemoryKHR'.
---
--- == Valid Usage
---
--- -   #VUID-vkCopyMemoryToAccelerationStructureKHR-accelerationStructureHostCommands-03583#
---     The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-accelerationStructureHostCommands ::accelerationStructureHostCommands>
---     feature /must/ be enabled
---
--- -   #VUID-vkCopyMemoryToAccelerationStructureKHR-deferredOperation-03678#
---     Any previous deferred operation that was associated with
---     @deferredOperation@ /must/ be complete
---
--- -   #VUID-vkCopyMemoryToAccelerationStructureKHR-pInfo-03729#
---     @pInfo->src.hostAddress@ /must/ be a valid host pointer
---
--- -   #VUID-vkCopyMemoryToAccelerationStructureKHR-pInfo-03750#
---     @pInfo->src.hostAddress@ /must/ be aligned to 16 bytes
---
--- -   #VUID-vkCopyMemoryToAccelerationStructureKHR-buffer-03730# The
---     @buffer@ used to create @pInfo->dst@ /must/ be bound to host-visible
---     device memory
---
--- -   #VUID-vkCopyMemoryToAccelerationStructureKHR-buffer-03782# The
---     @buffer@ used to create @pInfo->dst@ /must/ be bound to memory that
---     was not allocated with multiple instances
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCopyMemoryToAccelerationStructureKHR-device-parameter#
---     @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
---
--- -   #VUID-vkCopyMemoryToAccelerationStructureKHR-deferredOperation-parameter#
---     If @deferredOperation@ is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', @deferredOperation@ /must/
---     be a valid 'Vulkan.Extensions.Handles.DeferredOperationKHR' handle
---
--- -   #VUID-vkCopyMemoryToAccelerationStructureKHR-pInfo-parameter#
---     @pInfo@ /must/ be a valid pointer to a valid
---     'CopyMemoryToAccelerationStructureInfoKHR' structure
---
--- -   #VUID-vkCopyMemoryToAccelerationStructureKHR-deferredOperation-parent#
---     If @deferredOperation@ is a valid handle, it /must/ have been
---     created, allocated, or retrieved from @device@
---
--- == 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.OPERATION_DEFERRED_KHR'
---
---     -   'Vulkan.Core10.Enums.Result.OPERATION_NOT_DEFERRED_KHR'
---
--- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
---
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
---
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
--- 'CopyMemoryToAccelerationStructureInfoKHR',
--- 'Vulkan.Extensions.Handles.DeferredOperationKHR',
--- 'Vulkan.Core10.Handles.Device'
-copyMemoryToAccelerationStructureKHR :: forall io
-                                      . (MonadIO io)
-                                     => -- | @device@ is the device which owns @pInfo->dst@.
-                                        Device
-                                     -> -- | @deferredOperation@ is an optional
-                                        -- 'Vulkan.Extensions.Handles.DeferredOperationKHR' to
-                                        -- <https://registry.khronos.org/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'
-                                        -- structure defining the copy operation.
-                                        CopyMemoryToAccelerationStructureInfoKHR
-                                     -> io (Result)
-copyMemoryToAccelerationStructureKHR device
-                                       deferredOperation
-                                       info = liftIO . evalContT $ do
-  let vkCopyMemoryToAccelerationStructureKHRPtr = pVkCopyMemoryToAccelerationStructureKHR (case device of Device{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCopyMemoryToAccelerationStructureKHRPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCopyMemoryToAccelerationStructureKHR is null" Nothing Nothing
-  let vkCopyMemoryToAccelerationStructureKHR' = mkVkCopyMemoryToAccelerationStructureKHR vkCopyMemoryToAccelerationStructureKHRPtr
-  pInfo <- ContT $ withCStruct (info)
-  r <- lift $ traceAroundEvent "vkCopyMemoryToAccelerationStructureKHR" (vkCopyMemoryToAccelerationStructureKHR'
-                                                                           (deviceHandle (device))
-                                                                           (deferredOperation)
-                                                                           pInfo)
-  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
-  pure $ (r)
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdWriteAccelerationStructuresPropertiesKHR
-  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Ptr AccelerationStructureKHR -> QueryType -> QueryPool -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Ptr AccelerationStructureKHR -> QueryType -> QueryPool -> Word32 -> IO ()
-
--- | vkCmdWriteAccelerationStructuresPropertiesKHR - Write acceleration
--- structure result parameters to query results.
---
--- = Description
---
--- Accesses to any of the acceleration structures listed in
--- @pAccelerationStructures@ /must/ be
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies synchronized>
--- with the
--- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR'
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages pipeline stage>
--- or the
--- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages pipeline stage>,
--- and an
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-access-types access type>
--- of
--- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR'.
---
--- -   If @queryType@ is
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR',
---     then the value written out is the number of bytes required by a
---     compacted acceleration structure.
---
--- -   If @queryType@ is
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR',
---     then the value written out is the number of bytes required by a
---     serialized acceleration structure.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-accelerationStructure-08924#
---     The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-accelerationStructure ::accelerationStructure>
---     feature /must/ be enabled
---
--- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-queryPool-02493#
---     @queryPool@ /must/ have been created with a @queryType@ matching
---     @queryType@
---
--- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-queryPool-02494#
---     The queries identified by @queryPool@ and @firstQuery@ /must/ be
---     /unavailable/
---
--- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-buffer-03736#
---     The @buffer@ used to create each acceleration structure in
---     @pAccelerationStructures@ /must/ be bound to device memory
---
--- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-query-04880# The
---     sum of @firstQuery@ plus @accelerationStructureCount@ /must/ be less
---     than or equal to the number of queries in @queryPool@
---
--- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-pAccelerationStructures-04964#
---     All acceleration structures in @pAccelerationStructures@ /must/ have
---     been built prior to the execution of this command
---
--- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-accelerationStructures-03431#
---     All acceleration structures in @pAccelerationStructures@ /must/ have
---     been built with
---     'BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR' if
---     @queryType@ is
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR'
---
--- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-queryType-06742#
---     @queryType@ /must/ be
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_SIZE_KHR',
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR',
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR',
---     or
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR'
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-pAccelerationStructures-parameter#
---     @pAccelerationStructures@ /must/ be a valid pointer to an array of
---     @accelerationStructureCount@ valid
---     'Vulkan.Extensions.Handles.AccelerationStructureKHR' handles
---
--- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-queryType-parameter#
---     @queryType@ /must/ be a valid
---     'Vulkan.Core10.Enums.QueryType.QueryType' value
---
--- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-queryPool-parameter#
---     @queryPool@ /must/ be a valid 'Vulkan.Core10.Handles.QueryPool'
---     handle
---
--- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-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-vkCmdWriteAccelerationStructuresPropertiesKHR-commandBuffer-cmdpool#
---     The 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support compute operations
---
--- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-renderpass# This
---     command /must/ only be called outside of a render pass instance
---
--- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-videocoding#
---     This command /must/ only be called outside of a video coding scope
---
--- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-accelerationStructureCount-arraylength#
---     @accelerationStructureCount@ /must/ be greater than @0@
---
--- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-commonparent#
---     Each of @commandBuffer@, @queryPool@, and the elements of
---     @pAccelerationStructures@ /must/ have been created, allocated, or
---     retrieved from the same 'Vulkan.Core10.Handles.Device'
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
--- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | Compute                                                                                                               | Action                                                                                                                                 |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
--- 'Vulkan.Extensions.Handles.AccelerationStructureKHR',
--- 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.Handles.QueryPool',
--- 'Vulkan.Core10.Enums.QueryType.QueryType'
-cmdWriteAccelerationStructuresPropertiesKHR :: forall io
-                                             . (MonadIO io)
-                                            => -- | @commandBuffer@ is the command buffer into which the command will be
-                                               -- recorded.
-                                               CommandBuffer
-                                            -> -- | @pAccelerationStructures@ is a pointer to an array of existing
-                                               -- previously built acceleration structures.
-                                               ("accelerationStructures" ::: Vector AccelerationStructureKHR)
-                                            -> -- | @queryType@ is a 'Vulkan.Core10.Enums.QueryType.QueryType' value
-                                               -- specifying the type of queries managed by the pool.
-                                               QueryType
-                                            -> -- | @queryPool@ is the query pool that will manage the results of the query.
-                                               QueryPool
-                                            -> -- | @firstQuery@ is the first query index within the query pool that will
-                                               -- contain the @accelerationStructureCount@ number of results.
-                                               ("firstQuery" ::: Word32)
-                                            -> io ()
-cmdWriteAccelerationStructuresPropertiesKHR commandBuffer
-                                              accelerationStructures
-                                              queryType
-                                              queryPool
-                                              firstQuery = liftIO . evalContT $ do
-  let vkCmdWriteAccelerationStructuresPropertiesKHRPtr = pVkCmdWriteAccelerationStructuresPropertiesKHR (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCmdWriteAccelerationStructuresPropertiesKHRPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdWriteAccelerationStructuresPropertiesKHR is null" Nothing Nothing
-  let vkCmdWriteAccelerationStructuresPropertiesKHR' = mkVkCmdWriteAccelerationStructuresPropertiesKHR vkCmdWriteAccelerationStructuresPropertiesKHRPtr
-  pPAccelerationStructures <- ContT $ allocaBytes @AccelerationStructureKHR ((Data.Vector.length (accelerationStructures)) * 8)
-  lift $ Data.Vector.imapM_ (\i e -> poke (pPAccelerationStructures `plusPtr` (8 * (i)) :: Ptr AccelerationStructureKHR) (e)) (accelerationStructures)
-  lift $ traceAroundEvent "vkCmdWriteAccelerationStructuresPropertiesKHR" (vkCmdWriteAccelerationStructuresPropertiesKHR'
-                                                                             (commandBufferHandle (commandBuffer))
-                                                                             ((fromIntegral (Data.Vector.length $ (accelerationStructures)) :: Word32))
-                                                                             (pPAccelerationStructures)
-                                                                             (queryType)
-                                                                             (queryPool)
-                                                                             (firstQuery))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkWriteAccelerationStructuresPropertiesKHR
-  :: FunPtr (Ptr Device_T -> Word32 -> Ptr AccelerationStructureKHR -> QueryType -> CSize -> Ptr () -> CSize -> IO Result) -> Ptr Device_T -> Word32 -> Ptr AccelerationStructureKHR -> QueryType -> CSize -> Ptr () -> CSize -> IO Result
-
--- | vkWriteAccelerationStructuresPropertiesKHR - Query acceleration
--- structure meta-data on the host
---
--- = Description
---
--- This command fulfills the same task as
--- 'cmdWriteAccelerationStructuresPropertiesKHR' but is executed by the
--- host.
---
--- == Valid Usage
---
--- -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-accelerationStructureHostCommands-03585#
---     The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-accelerationStructureHostCommands ::accelerationStructureHostCommands>
---     feature /must/ be enabled
---
--- -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-pAccelerationStructures-04964#
---     All acceleration structures in @pAccelerationStructures@ /must/ have
---     been built prior to the execution of this command
---
--- -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-accelerationStructures-03431#
---     All acceleration structures in @pAccelerationStructures@ /must/ have
---     been built with
---     'BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR' if
---     @queryType@ is
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR'
---
--- -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-06742#
---     @queryType@ /must/ be
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_SIZE_KHR',
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR',
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR',
---     or
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR'
---
--- -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-03448# If
---     @queryType@ is
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR',
---     then @stride@ /must/ be a multiple of the size of
---     'Vulkan.Core10.FundamentalTypes.DeviceSize'
---
--- -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-03449# If
---     @queryType@ is
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR',
---     then @pData@ /must/ point to a
---     'Vulkan.Core10.FundamentalTypes.DeviceSize'
---
--- -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-03450# If
---     @queryType@ is
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR',
---     then @stride@ /must/ be a multiple of the size of
---     'Vulkan.Core10.FundamentalTypes.DeviceSize'
---
--- -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-03451# If
---     @queryType@ is
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR',
---     then @pData@ /must/ point to a
---     'Vulkan.Core10.FundamentalTypes.DeviceSize'
---
--- -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-06731# If
---     @queryType@ is
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_SIZE_KHR',
---     then @stride@ /must/ be a multiple of the size of
---     'Vulkan.Core10.FundamentalTypes.DeviceSize'
---
--- -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-06732# If
---     @queryType@ is
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_SIZE_KHR',
---     then @pData@ /must/ point to a
---     'Vulkan.Core10.FundamentalTypes.DeviceSize'
---
--- -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-06733# If
---     @queryType@ is
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR',
---     then @stride@ /must/ be a multiple of the size of
---     'Vulkan.Core10.FundamentalTypes.DeviceSize'
---
--- -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-06734# If
---     @queryType@ is
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR',
---     then @pData@ /must/ point to a
---     'Vulkan.Core10.FundamentalTypes.DeviceSize'
---
--- -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-dataSize-03452#
---     @dataSize@ /must/ be greater than or equal to
---     @accelerationStructureCount@*@stride@
---
--- -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-buffer-03733# The
---     @buffer@ used to create each acceleration structure in
---     @pAccelerationStructures@ /must/ be bound to host-visible device
---     memory
---
--- -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-buffer-03784# The
---     @buffer@ used to create each acceleration structure in
---     @pAccelerationStructures@ /must/ be bound to memory that was not
---     allocated with multiple instances
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-device-parameter#
---     @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
---
--- -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-pAccelerationStructures-parameter#
---     @pAccelerationStructures@ /must/ be a valid pointer to an array of
---     @accelerationStructureCount@ valid
---     'Vulkan.Extensions.Handles.AccelerationStructureKHR' handles
---
--- -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-parameter#
---     @queryType@ /must/ be a valid
---     'Vulkan.Core10.Enums.QueryType.QueryType' value
---
--- -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-pData-parameter#
---     @pData@ /must/ be a valid pointer to an array of @dataSize@ bytes
---
--- -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-accelerationStructureCount-arraylength#
---     @accelerationStructureCount@ /must/ be greater than @0@
---
--- -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-dataSize-arraylength#
---     @dataSize@ /must/ be greater than @0@
---
--- -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-pAccelerationStructures-parent#
---     Each element of @pAccelerationStructures@ /must/ have been created,
---     allocated, or retrieved from @device@
---
--- == Return Codes
---
--- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
---
---     -   'Vulkan.Core10.Enums.Result.SUCCESS'
---
--- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
---
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
---
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
--- 'Vulkan.Extensions.Handles.AccelerationStructureKHR',
--- 'Vulkan.Core10.Handles.Device',
--- 'Vulkan.Core10.Enums.QueryType.QueryType'
-writeAccelerationStructuresPropertiesKHR :: forall io
-                                          . (MonadIO io)
-                                         => -- | @device@ is the device which owns the acceleration structures in
-                                            -- @pAccelerationStructures@.
-                                            Device
-                                         -> -- | @pAccelerationStructures@ is a pointer to an array of existing
-                                            -- previously built acceleration structures.
-                                            ("accelerationStructures" ::: Vector AccelerationStructureKHR)
-                                         -> -- | @queryType@ is a 'Vulkan.Core10.Enums.QueryType.QueryType' value
-                                            -- specifying the property to be queried.
-                                            QueryType
-                                         -> -- | @dataSize@ is the size in bytes of the buffer pointed to by @pData@.
-                                            ("dataSize" ::: Word64)
-                                         -> -- | @pData@ is a pointer to an application-allocated buffer where the
-                                            -- results will be written.
-                                            ("data" ::: Ptr ())
-                                         -> -- | @stride@ is the stride in bytes between results for individual queries
-                                            -- within @pData@.
-                                            ("stride" ::: Word64)
-                                         -> io ()
-writeAccelerationStructuresPropertiesKHR device
-                                           accelerationStructures
-                                           queryType
-                                           dataSize
-                                           data'
-                                           stride = liftIO . evalContT $ do
-  let vkWriteAccelerationStructuresPropertiesKHRPtr = pVkWriteAccelerationStructuresPropertiesKHR (case device of Device{deviceCmds} -> deviceCmds)
-  lift $ unless (vkWriteAccelerationStructuresPropertiesKHRPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkWriteAccelerationStructuresPropertiesKHR is null" Nothing Nothing
-  let vkWriteAccelerationStructuresPropertiesKHR' = mkVkWriteAccelerationStructuresPropertiesKHR vkWriteAccelerationStructuresPropertiesKHRPtr
-  pPAccelerationStructures <- ContT $ allocaBytes @AccelerationStructureKHR ((Data.Vector.length (accelerationStructures)) * 8)
-  lift $ Data.Vector.imapM_ (\i e -> poke (pPAccelerationStructures `plusPtr` (8 * (i)) :: Ptr AccelerationStructureKHR) (e)) (accelerationStructures)
-  r <- lift $ traceAroundEvent "vkWriteAccelerationStructuresPropertiesKHR" (vkWriteAccelerationStructuresPropertiesKHR'
-                                                                               (deviceHandle (device))
-                                                                               ((fromIntegral (Data.Vector.length $ (accelerationStructures)) :: Word32))
-                                                                               (pPAccelerationStructures)
-                                                                               (queryType)
-                                                                               (CSize (dataSize))
-                                                                               (data')
-                                                                               (CSize (stride)))
-  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkGetDeviceAccelerationStructureCompatibilityKHR
-  :: FunPtr (Ptr Device_T -> Ptr AccelerationStructureVersionInfoKHR -> Ptr AccelerationStructureCompatibilityKHR -> IO ()) -> Ptr Device_T -> Ptr AccelerationStructureVersionInfoKHR -> Ptr AccelerationStructureCompatibilityKHR -> IO ()
-
--- | vkGetDeviceAccelerationStructureCompatibilityKHR - Check if a serialized
--- acceleration structure is compatible with the current device
---
--- == Valid Usage
---
--- -   #VUID-vkGetDeviceAccelerationStructureCompatibilityKHR-accelerationStructure-08928#
---     The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-accelerationStructure ::accelerationStructure>
---     feature /must/ be enabled
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkGetDeviceAccelerationStructureCompatibilityKHR-device-parameter#
---     @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
---
--- -   #VUID-vkGetDeviceAccelerationStructureCompatibilityKHR-pVersionInfo-parameter#
---     @pVersionInfo@ /must/ be a valid pointer to a valid
---     'AccelerationStructureVersionInfoKHR' structure
---
--- -   #VUID-vkGetDeviceAccelerationStructureCompatibilityKHR-pCompatibility-parameter#
---     @pCompatibility@ /must/ be a valid pointer to a
---     'AccelerationStructureCompatibilityKHR' value
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
--- 'AccelerationStructureCompatibilityKHR',
--- 'AccelerationStructureVersionInfoKHR', 'Vulkan.Core10.Handles.Device'
-getDeviceAccelerationStructureCompatibilityKHR :: forall io
-                                                . (MonadIO io)
-                                               => -- | @device@ is the device to check the version against.
-                                                  Device
-                                               -> -- | @pVersionInfo@ is a pointer to a 'AccelerationStructureVersionInfoKHR'
-                                                  -- structure specifying version information to check against the device.
-                                                  AccelerationStructureVersionInfoKHR
-                                               -> io (AccelerationStructureCompatibilityKHR)
-getDeviceAccelerationStructureCompatibilityKHR device
-                                                 versionInfo = liftIO . evalContT $ do
-  let vkGetDeviceAccelerationStructureCompatibilityKHRPtr = pVkGetDeviceAccelerationStructureCompatibilityKHR (case device of Device{deviceCmds} -> deviceCmds)
-  lift $ unless (vkGetDeviceAccelerationStructureCompatibilityKHRPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetDeviceAccelerationStructureCompatibilityKHR is null" Nothing Nothing
-  let vkGetDeviceAccelerationStructureCompatibilityKHR' = mkVkGetDeviceAccelerationStructureCompatibilityKHR vkGetDeviceAccelerationStructureCompatibilityKHRPtr
-  pVersionInfo <- ContT $ withCStruct (versionInfo)
-  pPCompatibility <- ContT $ bracket (callocBytes @AccelerationStructureCompatibilityKHR 4) free
-  lift $ traceAroundEvent "vkGetDeviceAccelerationStructureCompatibilityKHR" (vkGetDeviceAccelerationStructureCompatibilityKHR'
-                                                                                (deviceHandle (device))
-                                                                                pVersionInfo
-                                                                                (pPCompatibility))
-  pCompatibility <- lift $ peek @AccelerationStructureCompatibilityKHR pPCompatibility
-  pure $ (pCompatibility)
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCreateAccelerationStructureKHR
-  :: FunPtr (Ptr Device_T -> Ptr (SomeStruct AccelerationStructureCreateInfoKHR) -> Ptr AllocationCallbacks -> Ptr AccelerationStructureKHR -> IO Result) -> Ptr Device_T -> Ptr (SomeStruct AccelerationStructureCreateInfoKHR) -> Ptr AllocationCallbacks -> Ptr AccelerationStructureKHR -> IO Result
-
--- | vkCreateAccelerationStructureKHR - Create a new acceleration structure
--- object
---
--- = Description
---
--- Similar to other objects in Vulkan, the acceleration structure creation
--- merely creates an object with a specific “shape”. The type and quantity
--- of geometry that can be built into an acceleration structure is
--- determined by the parameters of 'AccelerationStructureCreateInfoKHR'.
---
--- The acceleration structure data is stored in the object referred to by
--- 'AccelerationStructureCreateInfoKHR'::@buffer@. Once memory has been
--- bound to that buffer, it /must/ be populated by acceleration structure
--- build or acceleration structure copy commands such as
--- 'cmdBuildAccelerationStructuresKHR', 'buildAccelerationStructuresKHR',
--- 'cmdCopyAccelerationStructureKHR', and 'copyAccelerationStructureKHR'.
---
--- The expected usage for a trace capture\/replay tool is that it will
--- serialize and later deserialize the acceleration structure data using
--- acceleration structure copy commands. During capture the tool will use
--- 'copyAccelerationStructureToMemoryKHR' or
--- 'cmdCopyAccelerationStructureToMemoryKHR' with a @mode@ of
--- 'COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR', and
--- 'copyMemoryToAccelerationStructureKHR' or
--- 'cmdCopyMemoryToAccelerationStructureKHR' with a @mode@ of
--- 'COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR' during replay.
---
--- Memory does not need to be bound to the underlying buffer when
--- 'createAccelerationStructureKHR' is called.
---
--- The input buffers passed to acceleration structure build commands will
--- be referenced by the implementation for the duration of the command.
--- After the command completes, the acceleration structure /may/ hold a
--- reference to any acceleration structure specified by an active instance
--- contained therein. Apart from this referencing, acceleration structures
--- /must/ be fully self-contained. The application /can/ reuse or free any
--- memory which was used by the command as an input or as scratch without
--- affecting the results of ray traversal.
---
--- == Valid Usage
---
--- -   #VUID-vkCreateAccelerationStructureKHR-accelerationStructure-03611#
---     The
---     <https://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-bufferDeviceAddressMultiDevice bufferDeviceAddressMultiDevice>
---     feature /must/ be enabled
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCreateAccelerationStructureKHR-device-parameter# @device@
---     /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
---
--- -   #VUID-vkCreateAccelerationStructureKHR-pCreateInfo-parameter#
---     @pCreateInfo@ /must/ be a valid pointer to a valid
---     'AccelerationStructureCreateInfoKHR' structure
---
--- -   #VUID-vkCreateAccelerationStructureKHR-pAllocator-parameter# If
---     @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid pointer
---     to a valid 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'
---     structure
---
--- -   #VUID-vkCreateAccelerationStructureKHR-pAccelerationStructure-parameter#
---     @pAccelerationStructure@ /must/ be a valid pointer to a
---     'Vulkan.Extensions.Handles.AccelerationStructureKHR' 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'
---
---     -   'Vulkan.Extensions.VK_KHR_buffer_device_address.ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR'
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
--- 'AccelerationStructureCreateInfoKHR',
--- 'Vulkan.Extensions.Handles.AccelerationStructureKHR',
--- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',
--- 'Vulkan.Core10.Handles.Device'
-createAccelerationStructureKHR :: forall a io
-                                . ( Extendss AccelerationStructureCreateInfoKHR a
-                                  , PokeChain a
-                                  , MonadIO io )
-                               => -- | @device@ is the logical device that creates the acceleration structure
-                                  -- object.
-                                  Device
-                               -> -- | @pCreateInfo@ is a pointer to a 'AccelerationStructureCreateInfoKHR'
-                                  -- structure containing parameters affecting creation of the acceleration
-                                  -- structure.
-                                  (AccelerationStructureCreateInfoKHR a)
-                               -> -- | @pAllocator@ controls host memory allocation as described in the
-                                  -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
-                                  -- chapter.
-                                  ("allocator" ::: Maybe AllocationCallbacks)
-                               -> io (AccelerationStructureKHR)
-createAccelerationStructureKHR device
-                                 createInfo
-                                 allocator = liftIO . evalContT $ do
-  let vkCreateAccelerationStructureKHRPtr = pVkCreateAccelerationStructureKHR (case device of Device{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCreateAccelerationStructureKHRPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCreateAccelerationStructureKHR is null" Nothing Nothing
-  let vkCreateAccelerationStructureKHR' = mkVkCreateAccelerationStructureKHR vkCreateAccelerationStructureKHRPtr
-  pCreateInfo <- ContT $ withCStruct (createInfo)
-  pAllocator <- case (allocator) of
-    Nothing -> pure nullPtr
-    Just j -> ContT $ withCStruct (j)
-  pPAccelerationStructure <- ContT $ bracket (callocBytes @AccelerationStructureKHR 8) free
-  r <- lift $ traceAroundEvent "vkCreateAccelerationStructureKHR" (vkCreateAccelerationStructureKHR'
-                                                                     (deviceHandle (device))
-                                                                     (forgetExtensions pCreateInfo)
-                                                                     pAllocator
-                                                                     (pPAccelerationStructure))
-  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
-  pAccelerationStructure <- lift $ peek @AccelerationStructureKHR pPAccelerationStructure
-  pure $ (pAccelerationStructure)
-
--- | A convenience wrapper to make a compatible pair of calls to
--- 'createAccelerationStructureKHR' and 'destroyAccelerationStructureKHR'
---
--- To ensure that 'destroyAccelerationStructureKHR' 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.
---
-withAccelerationStructureKHR :: forall a io r . (Extendss AccelerationStructureCreateInfoKHR a, PokeChain a, MonadIO io) => Device -> AccelerationStructureCreateInfoKHR a -> Maybe AllocationCallbacks -> (io AccelerationStructureKHR -> (AccelerationStructureKHR -> io ()) -> r) -> r
-withAccelerationStructureKHR device pCreateInfo pAllocator b =
-  b (createAccelerationStructureKHR device pCreateInfo pAllocator)
-    (\(o0) -> destroyAccelerationStructureKHR device o0 pAllocator)
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdBuildAccelerationStructuresKHR
-  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Ptr AccelerationStructureBuildGeometryInfoKHR -> Ptr (Ptr AccelerationStructureBuildRangeInfoKHR) -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Ptr AccelerationStructureBuildGeometryInfoKHR -> Ptr (Ptr AccelerationStructureBuildRangeInfoKHR) -> IO ()
-
--- | vkCmdBuildAccelerationStructuresKHR - Build an acceleration structure
---
--- = Description
---
--- The 'cmdBuildAccelerationStructuresKHR' command provides the ability to
--- initiate multiple acceleration structures builds, however there is no
--- ordering or synchronization implied between any of the individual
--- acceleration structure builds.
---
--- This means that an application /cannot/ build a top-level acceleration
--- structure in the same 'cmdBuildAccelerationStructuresKHR' call as the
--- associated bottom-level or instance acceleration structures are being
--- built. There also /cannot/ be any memory aliasing between any
--- acceleration structure memories or scratch memories being used by any of
--- the builds.
---
--- Accesses to the acceleration structure scratch buffers as identified by
--- the 'AccelerationStructureBuildGeometryInfoKHR'::@scratchData@ buffer
--- device addresses /must/ be
--- <https://registry.khronos.org/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages pipeline stage>
--- and an
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-access-types access type>
--- of
--- ('Vulkan.Core10.Enums.AccessFlagBits.ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR'
--- |
--- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR').
--- Accesses to each
--- 'AccelerationStructureBuildGeometryInfoKHR'::@srcAccelerationStructure@
--- and
--- 'AccelerationStructureBuildGeometryInfoKHR'::@dstAccelerationStructure@
--- /must/ be
--- <https://registry.khronos.org/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages pipeline stage>
--- and an
--- <https://registry.khronos.org/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
--- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR',
--- as appropriate.
---
--- Accesses to other input buffers as identified by any used values of
--- 'Vulkan.Extensions.VK_NV_ray_tracing_motion_blur.AccelerationStructureGeometryMotionTrianglesDataNV'::@vertexData@,
--- 'AccelerationStructureGeometryTrianglesDataKHR'::@vertexData@,
--- 'AccelerationStructureGeometryTrianglesDataKHR'::@indexData@,
--- 'AccelerationStructureGeometryTrianglesDataKHR'::@transformData@,
--- 'AccelerationStructureGeometryAabbsDataKHR'::@data@, and
--- 'AccelerationStructureGeometryInstancesDataKHR'::@data@ /must/ be
--- <https://registry.khronos.org/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages pipeline stage>
--- and an
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-access-types access type>
--- of 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_SHADER_READ_BIT'.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdBuildAccelerationStructuresKHR-accelerationStructure-08923#
---     The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-accelerationStructure ::accelerationStructure>
---     feature /must/ be enabled
---
--- -   #VUID-vkCmdBuildAccelerationStructuresKHR-mode-04628# The @mode@
---     member of each element of @pInfos@ /must/ be a valid
---     'BuildAccelerationStructureModeKHR' value
---
--- -   #VUID-vkCmdBuildAccelerationStructuresKHR-srcAccelerationStructure-04629#
---     If the @srcAccelerationStructure@ member of any element of @pInfos@
---     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the
---     @srcAccelerationStructure@ member /must/ be a valid
---     'Vulkan.Extensions.Handles.AccelerationStructureKHR' handle
---
--- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-04630# For each
---     element of @pInfos@, if its @mode@ member is
---     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', its
---     @srcAccelerationStructure@ member /must/ not be
---     'Vulkan.Core10.APIConstants.NULL_HANDLE'
---
--- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03403# The
---     @srcAccelerationStructure@ member of any element of @pInfos@ /must/
---     not be the same acceleration structure as the
---     @dstAccelerationStructure@ member of any other element of @pInfos@
---
--- -   #VUID-vkCmdBuildAccelerationStructuresKHR-dstAccelerationStructure-03698#
---     The @dstAccelerationStructure@ member of any element of @pInfos@
---     /must/ not be the same acceleration structure as the
---     @dstAccelerationStructure@ member of any other element of @pInfos@
---
--- -   #VUID-vkCmdBuildAccelerationStructuresKHR-dstAccelerationStructure-03800#
---     The @dstAccelerationStructure@ member of any element of @pInfos@
---     /must/ be a valid
---     'Vulkan.Extensions.Handles.AccelerationStructureKHR' handle
---
--- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03699# For each
---     element of @pInfos@, if its @type@ member is
---     'ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR', its
---     @dstAccelerationStructure@ member /must/ have been created with a
---     value of 'AccelerationStructureCreateInfoKHR'::@type@ equal to
---     either 'ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR' or
---     'ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR'
---
--- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03700# For each
---     element of @pInfos@, if its @type@ member is
---     'ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR', its
---     @dstAccelerationStructure@ member /must/ have been created with a
---     value of 'AccelerationStructureCreateInfoKHR'::@type@ equal to
---     either 'ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR' or
---     'ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR'
---
--- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03663# For each
---     element of @pInfos@, if its @mode@ member is
---     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR',
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-inactive-prims inactive primitives>
---     in its @srcAccelerationStructure@ member /must/ not be made active
---
--- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03664# For each
---     element of @pInfos@, if its @mode@ member is
---     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', active primitives in
---     its @srcAccelerationStructure@ member /must/ not be made
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-inactive-prims inactive>
---
--- -   #VUID-vkCmdBuildAccelerationStructuresKHR-None-03407# The
---     @dstAccelerationStructure@ member of any element of @pInfos@ /must/
---     not be referenced by the @geometry.instances.data@ member of any
---     element of @pGeometries@ or @ppGeometries@ with a @geometryType@ of
---     'GEOMETRY_TYPE_INSTANCES_KHR' in any other element of @pInfos@
---
--- -   #VUID-vkCmdBuildAccelerationStructuresKHR-dstAccelerationStructure-03701#
---     The range of memory backing the @dstAccelerationStructure@ member of
---     any element of @pInfos@ that is accessed by this command /must/ not
---     overlap the memory backing the @srcAccelerationStructure@ member of
---     any other element of @pInfos@ with a @mode@ equal to
---     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', which is accessed by
---     this command
---
--- -   #VUID-vkCmdBuildAccelerationStructuresKHR-dstAccelerationStructure-03702#
---     The range of memory backing the @dstAccelerationStructure@ member of
---     any element of @pInfos@ that is accessed by this command /must/ not
---     overlap the memory backing the @dstAccelerationStructure@ member of
---     any other element of @pInfos@, which is accessed by this command
---
--- -   #VUID-vkCmdBuildAccelerationStructuresKHR-dstAccelerationStructure-03703#
---     The range of memory backing the @dstAccelerationStructure@ member of
---     any element of @pInfos@ that is accessed by this command /must/ not
---     overlap the memory backing the @scratchData@ member of any element
---     of @pInfos@ (including the same element), which is accessed by this
---     command
---
--- -   #VUID-vkCmdBuildAccelerationStructuresKHR-scratchData-03704# The
---     range of memory backing the @scratchData@ member of any element of
---     @pInfos@ that is accessed by this command /must/ not overlap the
---     memory backing the @scratchData@ member of any other element of
---     @pInfos@, which is accessed by this command
---
--- -   #VUID-vkCmdBuildAccelerationStructuresKHR-scratchData-03705# The
---     range of memory backing the @scratchData@ member of any element of
---     @pInfos@ that is accessed by this command /must/ not overlap the
---     memory backing the @srcAccelerationStructure@ member of any element
---     of @pInfos@ with a @mode@ equal to
---     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR' (including the same
---     element), which is accessed by this command
---
--- -   #VUID-vkCmdBuildAccelerationStructuresKHR-dstAccelerationStructure-03706#
---     The range of memory backing the @dstAccelerationStructure@ member of
---     any element of @pInfos@ that is accessed by this command /must/ not
---     overlap the memory backing any acceleration structure referenced by
---     the @geometry.instances.data@ member of any element of @pGeometries@
---     or @ppGeometries@ with a @geometryType@ of
---     'GEOMETRY_TYPE_INSTANCES_KHR' in any other element of @pInfos@,
---     which is accessed by this command
---
--- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03667# For each
---     element of @pInfos@, if its @mode@ member is
---     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', its
---     @srcAccelerationStructure@ member /must/ have previously been
---     constructed with 'BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR'
---     set in 'AccelerationStructureBuildGeometryInfoKHR'::@flags@ in the
---     build
---
--- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03668# For each
---     element of @pInfos@, if its @mode@ member is
---     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', its
---     @srcAccelerationStructure@ and @dstAccelerationStructure@ members
---     /must/ either be the same
---     'Vulkan.Extensions.Handles.AccelerationStructureKHR', or not have
---     any
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-memory-aliasing memory aliasing>
---
--- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03758# For each
---     element of @pInfos@, if its @mode@ member is
---     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', its @geometryCount@
---     member /must/ have the same value which was specified when
---     @srcAccelerationStructure@ was last built
---
--- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03759# For each
---     element of @pInfos@, if its @mode@ member is
---     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', its @flags@ member
---     /must/ have the same value which was specified when
---     @srcAccelerationStructure@ was last built
---
--- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03760# For each
---     element of @pInfos@, if its @mode@ member is
---     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', its @type@ member
---     /must/ have the same value which was specified when
---     @srcAccelerationStructure@ was last built
---
--- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03761# For each
---     element of @pInfos@, if its @mode@ member is
---     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
---     'AccelerationStructureGeometryKHR' structure referred to by its
---     @pGeometries@ or @ppGeometries@ members, its @geometryType@ member
---     /must/ have the same value which was specified when
---     @srcAccelerationStructure@ was last built
---
--- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03762# For each
---     element of @pInfos@, if its @mode@ member is
---     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
---     'AccelerationStructureGeometryKHR' structure referred to by its
---     @pGeometries@ or @ppGeometries@ members, its @flags@ member /must/
---     have the same value which was specified when
---     @srcAccelerationStructure@ was last built
---
--- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03763# For each
---     element of @pInfos@, if its @mode@ member is
---     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
---     'AccelerationStructureGeometryKHR' structure referred to by its
---     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
---     'GEOMETRY_TYPE_TRIANGLES_KHR', its @geometry.triangles.vertexFormat@
---     member /must/ have the same value which was specified when
---     @srcAccelerationStructure@ was last built
---
--- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03764# For each
---     element of @pInfos@, if its @mode@ member is
---     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
---     'AccelerationStructureGeometryKHR' structure referred to by its
---     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
---     'GEOMETRY_TYPE_TRIANGLES_KHR', its @geometry.triangles.maxVertex@
---     member /must/ have the same value which was specified when
---     @srcAccelerationStructure@ was last built
---
--- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03765# For each
---     element of @pInfos@, if its @mode@ member is
---     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
---     'AccelerationStructureGeometryKHR' structure referred to by its
---     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
---     'GEOMETRY_TYPE_TRIANGLES_KHR', its @geometry.triangles.indexType@
---     member /must/ have the same value which was specified when
---     @srcAccelerationStructure@ was last built
---
--- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03766# For each
---     element of @pInfos@, if its @mode@ member is
---     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
---     'AccelerationStructureGeometryKHR' structure referred to by its
---     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
---     'GEOMETRY_TYPE_TRIANGLES_KHR', if its
---     @geometry.triangles.transformData@ address was @NULL@ when
---     @srcAccelerationStructure@ was last built, then it /must/ be @NULL@
---
--- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03767# For each
---     element of @pInfos@, if its @mode@ member is
---     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
---     'AccelerationStructureGeometryKHR' structure referred to by its
---     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
---     'GEOMETRY_TYPE_TRIANGLES_KHR', if its
---     @geometry.triangles.transformData@ address was not @NULL@ when
---     @srcAccelerationStructure@ was last built, then it /must/ not be
---     @NULL@
---
--- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03768# For each
---     element of @pInfos@, if its @mode@ member is
---     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
---     'AccelerationStructureGeometryKHR' structure referred to by its
---     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
---     'GEOMETRY_TYPE_TRIANGLES_KHR', and @geometry.triangles.indexType@ is
---     not 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR', then the
---     value of each index referenced /must/ be the same as the
---     corresponding index value when @srcAccelerationStructure@ was last
---     built
---
--- -   #VUID-vkCmdBuildAccelerationStructuresKHR-primitiveCount-03769# For
---     each element of @pInfos@, if its @mode@ member is
---     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
---     'AccelerationStructureGeometryKHR' structure referred to by its
---     @pGeometries@ or @ppGeometries@ members, the @primitiveCount@ member
---     of its corresponding 'AccelerationStructureBuildRangeInfoKHR'
---     structure /must/ have the same value which was specified when
---     @srcAccelerationStructure@ was last built
---
--- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03801# For each
---     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@
---     with a @geometryType@ of 'GEOMETRY_TYPE_INSTANCES_KHR', the
---     corresponding @ppBuildRangeInfos@[i][j].@primitiveCount@ /must/ be
---     less than or equal to
---     'PhysicalDeviceAccelerationStructurePropertiesKHR'::@maxInstanceCount@
---
--- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03707# For each
---     element of @pInfos@, the @buffer@ used to create its
---     @dstAccelerationStructure@ member /must/ be bound to device memory
---
--- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03708# For each
---     element of @pInfos@, if its @mode@ member is
---     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR' the @buffer@ used to
---     create its @srcAccelerationStructure@ member /must/ be bound to
---     device memory
---
--- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03709# For each
---     element of @pInfos@, the @buffer@ used to create each acceleration
---     structure referenced by the @geometry.instances.data@ member of any
---     element of @pGeometries@ or @ppGeometries@ with a @geometryType@ of
---     'GEOMETRY_TYPE_INSTANCES_KHR' /must/ be bound to device memory
---
--- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03671# If
---     @pInfos@[i].@mode@ is 'BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR',
---     all addresses between @pInfos@[i].@scratchData.deviceAddress@ and
---     @pInfos@[i].@scratchData.deviceAddress@ + N - 1 /must/ be in the
---     buffer device address range of the same buffer, where N is given by
---     the @buildScratchSize@ member of the
---     'AccelerationStructureBuildSizesInfoKHR' structure returned from a
---     call to 'getAccelerationStructureBuildSizesKHR' with an identical
---     'AccelerationStructureBuildGeometryInfoKHR' structure and primitive
---     count
---
--- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03672# If
---     @pInfos@[i].@mode@ is
---     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', all addresses
---     between @pInfos@[i].@scratchData.deviceAddress@ and
---     @pInfos@[i].@scratchData.deviceAddress@ + N - 1 /must/ be in the
---     buffer device address range of the same buffer, where N is given by
---     the @updateScratchSize@ member of the
---     'AccelerationStructureBuildSizesInfoKHR' structure returned from a
---     call to 'getAccelerationStructureBuildSizesKHR' with an identical
---     'AccelerationStructureBuildGeometryInfoKHR' structure and primitive
---     count
---
--- -   #VUID-vkCmdBuildAccelerationStructuresKHR-geometry-03673# The
---     buffers from which the buffer device addresses for all of the
---     @geometry.triangles.vertexData@, @geometry.triangles.indexData@,
---     @geometry.triangles.transformData@, @geometry.aabbs.data@, and
---     @geometry.instances.data@ members of all @pInfos@[i].@pGeometries@
---     and @pInfos@[i].@ppGeometries@ are queried /must/ have been created
---     with the
---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR'
---     usage flag
---
--- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03674# The buffer
---     from which the buffer device address
---     @pInfos@[i].@scratchData.deviceAddress@ is queried /must/ have been
---     created with
---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_STORAGE_BUFFER_BIT'
---     usage flag
---
--- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03802# For each
---     element of @pInfos@, its @scratchData.deviceAddress@ member /must/
---     be a valid device address obtained from
---     'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.getBufferDeviceAddress'
---
--- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03803# For each
---     element of @pInfos@, if @scratchData.deviceAddress@ is the address
---     of a non-sparse buffer then it /must/ be bound completely and
---     contiguously to a single 'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03710# For each
---     element of @pInfos@, its @scratchData.deviceAddress@ member /must/
---     be a multiple of
---     'PhysicalDeviceAccelerationStructurePropertiesKHR'::@minAccelerationStructureScratchOffsetAlignment@
---
--- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03804# For any
---     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@
---     with a @geometryType@ of 'GEOMETRY_TYPE_TRIANGLES_KHR',
---     @geometry.triangles.vertexData.deviceAddress@ /must/ be a valid
---     device address obtained from
---     'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.getBufferDeviceAddress'
---
--- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03805# For any
---     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@
---     with a @geometryType@ of 'GEOMETRY_TYPE_TRIANGLES_KHR', if
---     @geometry.triangles.vertexData.deviceAddress@ is the address of a
---     non-sparse buffer then it /must/ be bound completely and
---     contiguously to a single 'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03711# For any
---     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@
---     with a @geometryType@ of 'GEOMETRY_TYPE_TRIANGLES_KHR',
---     @geometry.triangles.vertexData.deviceAddress@ /must/ be aligned to
---     the size in bytes of the smallest component of the format in
---     @vertexFormat@
---
--- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03806# For any
---     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@
---     with a @geometryType@ of 'GEOMETRY_TYPE_TRIANGLES_KHR', if
---     @geometry.triangles.indexType@ is not
---     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR',
---     @geometry.triangles.indexData.deviceAddress@ /must/ be a valid
---     device address obtained from
---     'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.getBufferDeviceAddress'
---
--- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03807# For any
---     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@
---     with a @geometryType@ of 'GEOMETRY_TYPE_TRIANGLES_KHR', if
---     @geometry.triangles.indexType@ is not
---     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR', if
---     @geometry.triangles.indexData.deviceAddress@ is the address of a
---     non-sparse buffer then it /must/ be bound completely and
---     contiguously to a single 'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03712# For any
---     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@
---     with a @geometryType@ of 'GEOMETRY_TYPE_TRIANGLES_KHR', and with
---     @geometry.triangles.indexType@ not equal to
---     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR',
---     @geometry.triangles.indexData.deviceAddress@ /must/ be aligned to
---     the size in bytes of the type in @indexType@
---
--- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03808# For any
---     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@
---     with a @geometryType@ of 'GEOMETRY_TYPE_TRIANGLES_KHR', if
---     @geometry.triangles.transformData.deviceAddress@ is not @0@, it
---     /must/ be a valid device address obtained from
---     'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.getBufferDeviceAddress'
---
--- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03809# For any
---     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@
---     with a @geometryType@ of 'GEOMETRY_TYPE_TRIANGLES_KHR', if
---     @geometry.triangles.transformData.deviceAddress@ is the address of a
---     non-sparse buffer then it /must/ be bound completely and
---     contiguously to a single 'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03810# For any
---     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@
---     with a @geometryType@ of 'GEOMETRY_TYPE_TRIANGLES_KHR', if
---     @geometry.triangles.transformData.deviceAddress@ is not @0@, it
---     /must/ be aligned to @16@ bytes
---
--- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03811# For any
---     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@
---     with a @geometryType@ of 'GEOMETRY_TYPE_AABBS_KHR',
---     @geometry.aabbs.data.deviceAddress@ /must/ be a valid device address
---     obtained from
---     'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.getBufferDeviceAddress'
---
--- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03812# For any
---     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@
---     with a @geometryType@ of 'GEOMETRY_TYPE_AABBS_KHR', if
---     @geometry.aabbs.data.deviceAddress@ is the address of a non-sparse
---     buffer then it /must/ be bound completely and contiguously to a
---     single 'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03714# For any
---     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@
---     with a @geometryType@ of 'GEOMETRY_TYPE_AABBS_KHR',
---     @geometry.aabbs.data.deviceAddress@ /must/ be aligned to @8@ bytes
---
--- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03715# For any
---     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@
---     with a @geometryType@ of 'GEOMETRY_TYPE_INSTANCES_KHR', if
---     @geometry.arrayOfPointers@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE',
---     @geometry.instances.data.deviceAddress@ /must/ be aligned to @16@
---     bytes
---
--- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03716# For any
---     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@
---     with a @geometryType@ of 'GEOMETRY_TYPE_INSTANCES_KHR', if
---     @geometry.arrayOfPointers@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     @geometry.instances.data.deviceAddress@ /must/ be aligned to @8@
---     bytes
---
--- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03717# For any
---     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@
---     with a @geometryType@ of 'GEOMETRY_TYPE_INSTANCES_KHR', if
---     @geometry.arrayOfPointers@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     each element of @geometry.instances.data.deviceAddress@ in device
---     memory /must/ be aligned to @16@ bytes
---
--- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03813# For any
---     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@
---     with a @geometryType@ of 'GEOMETRY_TYPE_INSTANCES_KHR',
---     @geometry.instances.data.deviceAddress@ /must/ be a valid device
---     address obtained from
---     'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.getBufferDeviceAddress'
---
--- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03814# For any
---     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@
---     with a @geometryType@ of 'GEOMETRY_TYPE_INSTANCES_KHR', if
---     @geometry.instances.data.deviceAddress@ is the address of a
---     non-sparse buffer then it /must/ be bound completely and
---     contiguously to a single 'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-06707# For any
---     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@
---     with a @geometryType@ of 'GEOMETRY_TYPE_INSTANCES_KHR', each
---     'AccelerationStructureInstanceKHR'::@accelerationStructureReference@
---     value in @geometry.instances.data.deviceAddress@ /must/ be a valid
---     device address containing a value obtained from
---     'getAccelerationStructureDeviceAddressKHR' or @0@
---
--- -   #VUID-vkCmdBuildAccelerationStructuresKHR-commandBuffer-09547#
---     @commandBuffer@ /must/ not be a protected command buffer
---
--- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-10126# For each
---     @pInfos@[i], @dstAccelerationStructure@ /must/ have been created
---     with a value of 'AccelerationStructureCreateInfoKHR'::@size@ greater
---     than or equal to either:
---
---     -   the memory size required by the build operation, as returned by
---         'getAccelerationStructureBuildSizesKHR' with @pBuildInfo@ =
---         @pInfos@[i] and with each element of the @pMaxPrimitiveCounts@
---         array greater than or equal to the equivalent
---         @ppBuildRangeInfos@[i][j].@primitiveCount@ values for @j@ in
---         [0,@pInfos@[i].@geometryCount@) or,
---
---     -   the result of querying the corresponding
---         'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR',
---         if updating a compacted acceleration structure
---
--- -   #VUID-vkCmdBuildAccelerationStructuresKHR-ppBuildRangeInfos-03676#
---     Each element of @ppBuildRangeInfos@[i] /must/ be a valid pointer to
---     an array of @pInfos@[i].@geometryCount@
---     'AccelerationStructureBuildRangeInfoKHR' structures
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdBuildAccelerationStructuresKHR-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-parameter# @pInfos@
---     /must/ be a valid pointer to an array of @infoCount@ valid
---     'AccelerationStructureBuildGeometryInfoKHR' structures
---
--- -   #VUID-vkCmdBuildAccelerationStructuresKHR-ppBuildRangeInfos-parameter#
---     @ppBuildRangeInfos@ /must/ be a valid pointer to an array of
---     @infoCount@ 'AccelerationStructureBuildRangeInfoKHR' structures
---
--- -   #VUID-vkCmdBuildAccelerationStructuresKHR-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-vkCmdBuildAccelerationStructuresKHR-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support compute operations
---
--- -   #VUID-vkCmdBuildAccelerationStructuresKHR-renderpass# This command
---     /must/ only be called outside of a render pass instance
---
--- -   #VUID-vkCmdBuildAccelerationStructuresKHR-videocoding# This command
---     /must/ only be called outside of a video coding scope
---
--- -   #VUID-vkCmdBuildAccelerationStructuresKHR-infoCount-arraylength#
---     @infoCount@ /must/ be greater than @0@
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
--- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | Compute                                                                                                               | Action                                                                                                                                 |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
--- 'AccelerationStructureBuildGeometryInfoKHR',
--- 'AccelerationStructureBuildRangeInfoKHR',
--- 'Vulkan.Core10.Handles.CommandBuffer'
-cmdBuildAccelerationStructuresKHR :: forall io
-                                   . (MonadIO io)
-                                  => -- | @commandBuffer@ is the command buffer into which the command will be
-                                     -- recorded.
-                                     CommandBuffer
-                                  -> -- | @pInfos@ is a pointer to an array of @infoCount@
-                                     -- 'AccelerationStructureBuildGeometryInfoKHR' structures defining the
-                                     -- geometry used to build each acceleration structure.
-                                     ("infos" ::: Vector AccelerationStructureBuildGeometryInfoKHR)
-                                  -> -- | @ppBuildRangeInfos@ is a pointer to an array of @infoCount@ pointers to
-                                     -- arrays of 'AccelerationStructureBuildRangeInfoKHR' structures. Each
-                                     -- @ppBuildRangeInfos@[i] is a pointer to an array of
-                                     -- @pInfos@[i].@geometryCount@ 'AccelerationStructureBuildRangeInfoKHR'
-                                     -- structures defining dynamic offsets to the addresses where geometry data
-                                     -- is stored, as defined by @pInfos@[i].
-                                     ("buildRangeInfos" ::: Vector (Vector AccelerationStructureBuildRangeInfoKHR))
-                                  -> io ()
-cmdBuildAccelerationStructuresKHR commandBuffer
-                                    infos
-                                    buildRangeInfos = liftIO . evalContT $ do
-  let vkCmdBuildAccelerationStructuresKHRPtr = pVkCmdBuildAccelerationStructuresKHR (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCmdBuildAccelerationStructuresKHRPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdBuildAccelerationStructuresKHR is null" Nothing Nothing
-  let vkCmdBuildAccelerationStructuresKHR' = mkVkCmdBuildAccelerationStructuresKHR vkCmdBuildAccelerationStructuresKHRPtr
-  let pInfosLength = Data.Vector.length $ (infos)
-  lift $ unless ((Data.Vector.length $ (buildRangeInfos)) == pInfosLength) $
-    throwIO $ IOError Nothing InvalidArgument "" "ppBuildRangeInfos and pInfos must have the same length" Nothing Nothing
-  pPInfos <- ContT $ allocaBytes @AccelerationStructureBuildGeometryInfoKHR ((Data.Vector.length (infos)) * 80)
-  Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPInfos `plusPtr` (80 * (i)) :: Ptr AccelerationStructureBuildGeometryInfoKHR) (e) . ($ ())) (infos)
-  pPpBuildRangeInfos <- ContT $ allocaBytes @(Ptr AccelerationStructureBuildRangeInfoKHR) ((Data.Vector.length (buildRangeInfos)) * 8)
-  Data.Vector.imapM_ (\i e -> do
-    pPpBuildRangeInfos' <- ContT $ allocaBytes @AccelerationStructureBuildRangeInfoKHR ((Data.Vector.length (e)) * 16)
-    lift $ Data.Vector.imapM_ (\i' e' -> poke (pPpBuildRangeInfos' `plusPtr` (16 * (i')) :: Ptr AccelerationStructureBuildRangeInfoKHR) (e')) (e)
-    lift $ poke (pPpBuildRangeInfos `plusPtr` (8 * (i)) :: Ptr (Ptr AccelerationStructureBuildRangeInfoKHR)) (pPpBuildRangeInfos')) (buildRangeInfos)
-  lift $ traceAroundEvent "vkCmdBuildAccelerationStructuresKHR" (vkCmdBuildAccelerationStructuresKHR'
-                                                                   (commandBufferHandle (commandBuffer))
-                                                                   ((fromIntegral pInfosLength :: Word32))
-                                                                   (pPInfos)
-                                                                   (pPpBuildRangeInfos))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdBuildAccelerationStructuresIndirectKHR
-  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Ptr AccelerationStructureBuildGeometryInfoKHR -> Ptr DeviceAddress -> Ptr Word32 -> Ptr (Ptr Word32) -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Ptr AccelerationStructureBuildGeometryInfoKHR -> Ptr DeviceAddress -> Ptr Word32 -> Ptr (Ptr Word32) -> IO ()
-
--- | vkCmdBuildAccelerationStructuresIndirectKHR - Build an acceleration
--- structure with some parameters provided on the device
---
--- = Description
---
--- Accesses to acceleration structures, scratch buffers, vertex buffers,
--- index buffers, and instance buffers /must/ be synchronized as with
--- 'cmdBuildAccelerationStructuresKHR'.
---
--- Accesses to any element of @pIndirectDeviceAddresses@ /must/ be
--- <https://registry.khronos.org/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages pipeline stage>
--- and an
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-access-types access type>
--- of
--- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_INDIRECT_COMMAND_READ_BIT'.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-accelerationStructureIndirectBuild-03650#
---     The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-accelerationStructureIndirectBuild ::accelerationStructureIndirectBuild>
---     feature /must/ be enabled
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-mode-04628# The
---     @mode@ member of each element of @pInfos@ /must/ be a valid
---     'BuildAccelerationStructureModeKHR' value
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-srcAccelerationStructure-04629#
---     If the @srcAccelerationStructure@ member of any element of @pInfos@
---     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the
---     @srcAccelerationStructure@ member /must/ be a valid
---     'Vulkan.Extensions.Handles.AccelerationStructureKHR' handle
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-04630# For
---     each element of @pInfos@, if its @mode@ member is
---     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', its
---     @srcAccelerationStructure@ member /must/ not be
---     'Vulkan.Core10.APIConstants.NULL_HANDLE'
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03403# The
---     @srcAccelerationStructure@ member of any element of @pInfos@ /must/
---     not be the same acceleration structure as the
---     @dstAccelerationStructure@ member of any other element of @pInfos@
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-dstAccelerationStructure-03698#
---     The @dstAccelerationStructure@ member of any element of @pInfos@
---     /must/ not be the same acceleration structure as the
---     @dstAccelerationStructure@ member of any other element of @pInfos@
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-dstAccelerationStructure-03800#
---     The @dstAccelerationStructure@ member of any element of @pInfos@
---     /must/ be a valid
---     'Vulkan.Extensions.Handles.AccelerationStructureKHR' handle
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03699# For
---     each element of @pInfos@, if its @type@ member is
---     'ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR', its
---     @dstAccelerationStructure@ member /must/ have been created with a
---     value of 'AccelerationStructureCreateInfoKHR'::@type@ equal to
---     either 'ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR' or
---     'ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR'
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03700# For
---     each element of @pInfos@, if its @type@ member is
---     'ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR', its
---     @dstAccelerationStructure@ member /must/ have been created with a
---     value of 'AccelerationStructureCreateInfoKHR'::@type@ equal to
---     either 'ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR' or
---     'ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR'
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03663# For
---     each element of @pInfos@, if its @mode@ member is
---     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR',
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-inactive-prims inactive primitives>
---     in its @srcAccelerationStructure@ member /must/ not be made active
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03664# For
---     each element of @pInfos@, if its @mode@ member is
---     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', active primitives in
---     its @srcAccelerationStructure@ member /must/ not be made
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-inactive-prims inactive>
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-None-03407# The
---     @dstAccelerationStructure@ member of any element of @pInfos@ /must/
---     not be referenced by the @geometry.instances.data@ member of any
---     element of @pGeometries@ or @ppGeometries@ with a @geometryType@ of
---     'GEOMETRY_TYPE_INSTANCES_KHR' in any other element of @pInfos@
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-dstAccelerationStructure-03701#
---     The range of memory backing the @dstAccelerationStructure@ member of
---     any element of @pInfos@ that is accessed by this command /must/ not
---     overlap the memory backing the @srcAccelerationStructure@ member of
---     any other element of @pInfos@ with a @mode@ equal to
---     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', which is accessed by
---     this command
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-dstAccelerationStructure-03702#
---     The range of memory backing the @dstAccelerationStructure@ member of
---     any element of @pInfos@ that is accessed by this command /must/ not
---     overlap the memory backing the @dstAccelerationStructure@ member of
---     any other element of @pInfos@, which is accessed by this command
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-dstAccelerationStructure-03703#
---     The range of memory backing the @dstAccelerationStructure@ member of
---     any element of @pInfos@ that is accessed by this command /must/ not
---     overlap the memory backing the @scratchData@ member of any element
---     of @pInfos@ (including the same element), which is accessed by this
---     command
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-scratchData-03704#
---     The range of memory backing the @scratchData@ member of any element
---     of @pInfos@ that is accessed by this command /must/ not overlap the
---     memory backing the @scratchData@ member of any other element of
---     @pInfos@, which is accessed by this command
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-scratchData-03705#
---     The range of memory backing the @scratchData@ member of any element
---     of @pInfos@ that is accessed by this command /must/ not overlap the
---     memory backing the @srcAccelerationStructure@ member of any element
---     of @pInfos@ with a @mode@ equal to
---     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR' (including the same
---     element), which is accessed by this command
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-dstAccelerationStructure-03706#
---     The range of memory backing the @dstAccelerationStructure@ member of
---     any element of @pInfos@ that is accessed by this command /must/ not
---     overlap the memory backing any acceleration structure referenced by
---     the @geometry.instances.data@ member of any element of @pGeometries@
---     or @ppGeometries@ with a @geometryType@ of
---     'GEOMETRY_TYPE_INSTANCES_KHR' in any other element of @pInfos@,
---     which is accessed by this command
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03667# For
---     each element of @pInfos@, if its @mode@ member is
---     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', its
---     @srcAccelerationStructure@ member /must/ have previously been
---     constructed with 'BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR'
---     set in 'AccelerationStructureBuildGeometryInfoKHR'::@flags@ in the
---     build
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03668# For
---     each element of @pInfos@, if its @mode@ member is
---     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', its
---     @srcAccelerationStructure@ and @dstAccelerationStructure@ members
---     /must/ either be the same
---     'Vulkan.Extensions.Handles.AccelerationStructureKHR', or not have
---     any
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-memory-aliasing memory aliasing>
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03758# For
---     each element of @pInfos@, if its @mode@ member is
---     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', its @geometryCount@
---     member /must/ have the same value which was specified when
---     @srcAccelerationStructure@ was last built
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03759# For
---     each element of @pInfos@, if its @mode@ member is
---     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', its @flags@ member
---     /must/ have the same value which was specified when
---     @srcAccelerationStructure@ was last built
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03760# For
---     each element of @pInfos@, if its @mode@ member is
---     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', its @type@ member
---     /must/ have the same value which was specified when
---     @srcAccelerationStructure@ was last built
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03761# For
---     each element of @pInfos@, if its @mode@ member is
---     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
---     'AccelerationStructureGeometryKHR' structure referred to by its
---     @pGeometries@ or @ppGeometries@ members, its @geometryType@ member
---     /must/ have the same value which was specified when
---     @srcAccelerationStructure@ was last built
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03762# For
---     each element of @pInfos@, if its @mode@ member is
---     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
---     'AccelerationStructureGeometryKHR' structure referred to by its
---     @pGeometries@ or @ppGeometries@ members, its @flags@ member /must/
---     have the same value which was specified when
---     @srcAccelerationStructure@ was last built
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03763# For
---     each element of @pInfos@, if its @mode@ member is
---     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
---     'AccelerationStructureGeometryKHR' structure referred to by its
---     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
---     'GEOMETRY_TYPE_TRIANGLES_KHR', its @geometry.triangles.vertexFormat@
---     member /must/ have the same value which was specified when
---     @srcAccelerationStructure@ was last built
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03764# For
---     each element of @pInfos@, if its @mode@ member is
---     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
---     'AccelerationStructureGeometryKHR' structure referred to by its
---     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
---     'GEOMETRY_TYPE_TRIANGLES_KHR', its @geometry.triangles.maxVertex@
---     member /must/ have the same value which was specified when
---     @srcAccelerationStructure@ was last built
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03765# For
---     each element of @pInfos@, if its @mode@ member is
---     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
---     'AccelerationStructureGeometryKHR' structure referred to by its
---     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
---     'GEOMETRY_TYPE_TRIANGLES_KHR', its @geometry.triangles.indexType@
---     member /must/ have the same value which was specified when
---     @srcAccelerationStructure@ was last built
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03766# For
---     each element of @pInfos@, if its @mode@ member is
---     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
---     'AccelerationStructureGeometryKHR' structure referred to by its
---     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
---     'GEOMETRY_TYPE_TRIANGLES_KHR', if its
---     @geometry.triangles.transformData@ address was @NULL@ when
---     @srcAccelerationStructure@ was last built, then it /must/ be @NULL@
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03767# For
---     each element of @pInfos@, if its @mode@ member is
---     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
---     'AccelerationStructureGeometryKHR' structure referred to by its
---     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
---     'GEOMETRY_TYPE_TRIANGLES_KHR', if its
---     @geometry.triangles.transformData@ address was not @NULL@ when
---     @srcAccelerationStructure@ was last built, then it /must/ not be
---     @NULL@
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03768# For
---     each element of @pInfos@, if its @mode@ member is
---     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
---     'AccelerationStructureGeometryKHR' structure referred to by its
---     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
---     'GEOMETRY_TYPE_TRIANGLES_KHR', and @geometry.triangles.indexType@ is
---     not 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR', then the
---     value of each index referenced /must/ be the same as the
---     corresponding index value when @srcAccelerationStructure@ was last
---     built
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-primitiveCount-03769#
---     For each element of @pInfos@, if its @mode@ member is
---     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
---     'AccelerationStructureGeometryKHR' structure referred to by its
---     @pGeometries@ or @ppGeometries@ members, the @primitiveCount@ member
---     of its corresponding 'AccelerationStructureBuildRangeInfoKHR'
---     structure /must/ have the same value which was specified when
---     @srcAccelerationStructure@ was last built
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03801# For
---     each element of @pInfos@[i].@pGeometries@ or
---     @pInfos@[i].@ppGeometries@ with a @geometryType@ of
---     'GEOMETRY_TYPE_INSTANCES_KHR', the corresponding
---     @ppMaxPrimitiveCounts@[i][j] /must/ be less than or equal to
---     'PhysicalDeviceAccelerationStructurePropertiesKHR'::@maxInstanceCount@
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03707# For
---     each element of @pInfos@, the @buffer@ used to create its
---     @dstAccelerationStructure@ member /must/ be bound to device memory
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03708# For
---     each element of @pInfos@, if its @mode@ member is
---     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR' the @buffer@ used to
---     create its @srcAccelerationStructure@ member /must/ be bound to
---     device memory
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03709# For
---     each element of @pInfos@, the @buffer@ used to create each
---     acceleration structure referenced by the @geometry.instances.data@
---     member of any element of @pGeometries@ or @ppGeometries@ with a
---     @geometryType@ of 'GEOMETRY_TYPE_INSTANCES_KHR' /must/ be bound to
---     device memory
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03671# If
---     @pInfos@[i].@mode@ is 'BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR',
---     all addresses between @pInfos@[i].@scratchData.deviceAddress@ and
---     @pInfos@[i].@scratchData.deviceAddress@ + N - 1 /must/ be in the
---     buffer device address range of the same buffer, where N is given by
---     the @buildScratchSize@ member of the
---     'AccelerationStructureBuildSizesInfoKHR' structure returned from a
---     call to 'getAccelerationStructureBuildSizesKHR' with an identical
---     'AccelerationStructureBuildGeometryInfoKHR' structure and primitive
---     count
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03672# If
---     @pInfos@[i].@mode@ is
---     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', all addresses
---     between @pInfos@[i].@scratchData.deviceAddress@ and
---     @pInfos@[i].@scratchData.deviceAddress@ + N - 1 /must/ be in the
---     buffer device address range of the same buffer, where N is given by
---     the @updateScratchSize@ member of the
---     'AccelerationStructureBuildSizesInfoKHR' structure returned from a
---     call to 'getAccelerationStructureBuildSizesKHR' with an identical
---     'AccelerationStructureBuildGeometryInfoKHR' structure and primitive
---     count
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-geometry-03673#
---     The buffers from which the buffer device addresses for all of the
---     @geometry.triangles.vertexData@, @geometry.triangles.indexData@,
---     @geometry.triangles.transformData@, @geometry.aabbs.data@, and
---     @geometry.instances.data@ members of all @pInfos@[i].@pGeometries@
---     and @pInfos@[i].@ppGeometries@ are queried /must/ have been created
---     with the
---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR'
---     usage flag
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03674# The
---     buffer from which the buffer device address
---     @pInfos@[i].@scratchData.deviceAddress@ is queried /must/ have been
---     created with
---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_STORAGE_BUFFER_BIT'
---     usage flag
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03802# For
---     each element of @pInfos@, its @scratchData.deviceAddress@ member
---     /must/ be a valid device address obtained from
---     'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.getBufferDeviceAddress'
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03803# For
---     each element of @pInfos@, if @scratchData.deviceAddress@ is the
---     address of a non-sparse buffer then it /must/ be bound completely
---     and contiguously to a single 'Vulkan.Core10.Handles.DeviceMemory'
---     object
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03710# For
---     each element of @pInfos@, its @scratchData.deviceAddress@ member
---     /must/ be a multiple of
---     'PhysicalDeviceAccelerationStructurePropertiesKHR'::@minAccelerationStructureScratchOffsetAlignment@
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03804# For
---     any element of @pInfos@[i].@pGeometries@ or
---     @pInfos@[i].@ppGeometries@ with a @geometryType@ of
---     'GEOMETRY_TYPE_TRIANGLES_KHR',
---     @geometry.triangles.vertexData.deviceAddress@ /must/ be a valid
---     device address obtained from
---     'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.getBufferDeviceAddress'
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03805# For
---     any element of @pInfos@[i].@pGeometries@ or
---     @pInfos@[i].@ppGeometries@ with a @geometryType@ of
---     'GEOMETRY_TYPE_TRIANGLES_KHR', if
---     @geometry.triangles.vertexData.deviceAddress@ is the address of a
---     non-sparse buffer then it /must/ be bound completely and
---     contiguously to a single 'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03711# For
---     any element of @pInfos@[i].@pGeometries@ or
---     @pInfos@[i].@ppGeometries@ with a @geometryType@ of
---     'GEOMETRY_TYPE_TRIANGLES_KHR',
---     @geometry.triangles.vertexData.deviceAddress@ /must/ be aligned to
---     the size in bytes of the smallest component of the format in
---     @vertexFormat@
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03806# For
---     any element of @pInfos@[i].@pGeometries@ or
---     @pInfos@[i].@ppGeometries@ with a @geometryType@ of
---     'GEOMETRY_TYPE_TRIANGLES_KHR', if @geometry.triangles.indexType@ is
---     not 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR',
---     @geometry.triangles.indexData.deviceAddress@ /must/ be a valid
---     device address obtained from
---     'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.getBufferDeviceAddress'
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03807# For
---     any element of @pInfos@[i].@pGeometries@ or
---     @pInfos@[i].@ppGeometries@ with a @geometryType@ of
---     'GEOMETRY_TYPE_TRIANGLES_KHR', if @geometry.triangles.indexType@ is
---     not 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR', if
---     @geometry.triangles.indexData.deviceAddress@ is the address of a
---     non-sparse buffer then it /must/ be bound completely and
---     contiguously to a single 'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03712# For
---     any element of @pInfos@[i].@pGeometries@ or
---     @pInfos@[i].@ppGeometries@ with a @geometryType@ of
---     'GEOMETRY_TYPE_TRIANGLES_KHR', and with
---     @geometry.triangles.indexType@ not equal to
---     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR',
---     @geometry.triangles.indexData.deviceAddress@ /must/ be aligned to
---     the size in bytes of the type in @indexType@
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03808# For
---     any element of @pInfos@[i].@pGeometries@ or
---     @pInfos@[i].@ppGeometries@ with a @geometryType@ of
---     'GEOMETRY_TYPE_TRIANGLES_KHR', if
---     @geometry.triangles.transformData.deviceAddress@ is not @0@, it
---     /must/ be a valid device address obtained from
---     'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.getBufferDeviceAddress'
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03809# For
---     any element of @pInfos@[i].@pGeometries@ or
---     @pInfos@[i].@ppGeometries@ with a @geometryType@ of
---     'GEOMETRY_TYPE_TRIANGLES_KHR', if
---     @geometry.triangles.transformData.deviceAddress@ is the address of a
---     non-sparse buffer then it /must/ be bound completely and
---     contiguously to a single 'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03810# For
---     any element of @pInfos@[i].@pGeometries@ or
---     @pInfos@[i].@ppGeometries@ with a @geometryType@ of
---     'GEOMETRY_TYPE_TRIANGLES_KHR', if
---     @geometry.triangles.transformData.deviceAddress@ is not @0@, it
---     /must/ be aligned to @16@ bytes
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03811# For
---     any element of @pInfos@[i].@pGeometries@ or
---     @pInfos@[i].@ppGeometries@ with a @geometryType@ of
---     'GEOMETRY_TYPE_AABBS_KHR', @geometry.aabbs.data.deviceAddress@
---     /must/ be a valid device address obtained from
---     'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.getBufferDeviceAddress'
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03812# For
---     any element of @pInfos@[i].@pGeometries@ or
---     @pInfos@[i].@ppGeometries@ with a @geometryType@ of
---     'GEOMETRY_TYPE_AABBS_KHR', if @geometry.aabbs.data.deviceAddress@ is
---     the address of a non-sparse buffer then it /must/ be bound
---     completely and contiguously to a single
---     'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03714# For
---     any element of @pInfos@[i].@pGeometries@ or
---     @pInfos@[i].@ppGeometries@ with a @geometryType@ of
---     'GEOMETRY_TYPE_AABBS_KHR', @geometry.aabbs.data.deviceAddress@
---     /must/ be aligned to @8@ bytes
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03715# For
---     any element of @pInfos@[i].@pGeometries@ or
---     @pInfos@[i].@ppGeometries@ with a @geometryType@ of
---     'GEOMETRY_TYPE_INSTANCES_KHR', if @geometry.arrayOfPointers@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE',
---     @geometry.instances.data.deviceAddress@ /must/ be aligned to @16@
---     bytes
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03716# For
---     any element of @pInfos@[i].@pGeometries@ or
---     @pInfos@[i].@ppGeometries@ with a @geometryType@ of
---     'GEOMETRY_TYPE_INSTANCES_KHR', if @geometry.arrayOfPointers@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE',
---     @geometry.instances.data.deviceAddress@ /must/ be aligned to @8@
---     bytes
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03717# For
---     any element of @pInfos@[i].@pGeometries@ or
---     @pInfos@[i].@ppGeometries@ with a @geometryType@ of
---     'GEOMETRY_TYPE_INSTANCES_KHR', if @geometry.arrayOfPointers@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', each element of
---     @geometry.instances.data.deviceAddress@ in device memory /must/ be
---     aligned to @16@ bytes
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03813# For
---     any element of @pInfos@[i].@pGeometries@ or
---     @pInfos@[i].@ppGeometries@ with a @geometryType@ of
---     'GEOMETRY_TYPE_INSTANCES_KHR',
---     @geometry.instances.data.deviceAddress@ /must/ be a valid device
---     address obtained from
---     'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.getBufferDeviceAddress'
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03814# For
---     any element of @pInfos@[i].@pGeometries@ or
---     @pInfos@[i].@ppGeometries@ with a @geometryType@ of
---     'GEOMETRY_TYPE_INSTANCES_KHR', if
---     @geometry.instances.data.deviceAddress@ is the address of a
---     non-sparse buffer then it /must/ be bound completely and
---     contiguously to a single 'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-06707# For
---     any element of @pInfos@[i].@pGeometries@ or
---     @pInfos@[i].@ppGeometries@ with a @geometryType@ of
---     'GEOMETRY_TYPE_INSTANCES_KHR', each
---     'AccelerationStructureInstanceKHR'::@accelerationStructureReference@
---     value in @geometry.instances.data.deviceAddress@ /must/ be a valid
---     device address containing a value obtained from
---     'getAccelerationStructureDeviceAddressKHR' or @0@
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-commandBuffer-09547#
---     @commandBuffer@ /must/ not be a protected command buffer
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pIndirectDeviceAddresses-03645#
---     For any element of @pIndirectDeviceAddresses@, if the buffer from
---     which it was queried is non-sparse then it /must/ be bound
---     completely and contiguously to a single
---     'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pIndirectDeviceAddresses-03646#
---     For any element of @pIndirectDeviceAddresses@[i], all device
---     addresses between @pIndirectDeviceAddresses@[i] and
---     @pIndirectDeviceAddresses@[i] + (@pInfos@[i].@geometryCount@ ×
---     @pIndirectStrides@[i]) - 1 /must/ be in the buffer device address
---     range of the same buffer
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pIndirectDeviceAddresses-03647#
---     For any element of @pIndirectDeviceAddresses@, the buffer from which
---     it was queried /must/ have been created with the
---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'
---     bit set
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pIndirectDeviceAddresses-03648#
---     Each element of @pIndirectDeviceAddresses@ /must/ be a multiple of
---     @4@
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pIndirectStrides-03787#
---     Each element of @pIndirectStrides@ /must/ be a multiple of @4@
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pIndirectDeviceAddresses-03651#
---     Each 'AccelerationStructureBuildRangeInfoKHR' structure referenced
---     by any element of @pIndirectDeviceAddresses@ /must/ be a valid
---     'AccelerationStructureBuildRangeInfoKHR' structure
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03652#
---     @pInfos@[i].@dstAccelerationStructure@ /must/ have been created with
---     a value of 'AccelerationStructureCreateInfoKHR'::@size@ greater than
---     or equal to the memory size required by the build operation, as
---     returned by 'getAccelerationStructureBuildSizesKHR' with
---     @pBuildInfo@ = @pInfos@[i] and @pMaxPrimitiveCounts@ =
---     @ppMaxPrimitiveCounts@[i]
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-ppMaxPrimitiveCounts-03653#
---     Each @ppMaxPrimitiveCounts@[i][j] /must/ be greater than or equal to
---     the @primitiveCount@ value specified by the
---     'AccelerationStructureBuildRangeInfoKHR' structure located at
---     @pIndirectDeviceAddresses@[i] + (@j@ × @pIndirectStrides@[i])
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-parameter#
---     @pInfos@ /must/ be a valid pointer to an array of @infoCount@ valid
---     'AccelerationStructureBuildGeometryInfoKHR' structures
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pIndirectDeviceAddresses-parameter#
---     @pIndirectDeviceAddresses@ /must/ be a valid pointer to an array of
---     @infoCount@ 'Vulkan.Core10.FundamentalTypes.DeviceAddress' values
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pIndirectStrides-parameter#
---     @pIndirectStrides@ /must/ be a valid pointer to an array of
---     @infoCount@ @uint32_t@ values
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-ppMaxPrimitiveCounts-parameter#
---     @ppMaxPrimitiveCounts@ /must/ be a valid pointer to an array of
---     @infoCount@ @uint32_t@ values
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-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-vkCmdBuildAccelerationStructuresIndirectKHR-commandBuffer-cmdpool#
---     The 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support compute operations
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-renderpass# This
---     command /must/ only be called outside of a render pass instance
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-videocoding# This
---     command /must/ only be called outside of a video coding scope
---
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-infoCount-arraylength#
---     @infoCount@ /must/ be greater than @0@
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
--- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | Compute                                                                                                               | Action                                                                                                                                 |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
--- 'AccelerationStructureBuildGeometryInfoKHR',
--- 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.FundamentalTypes.DeviceAddress'
-cmdBuildAccelerationStructuresIndirectKHR :: forall io
-                                           . (MonadIO io)
-                                          => -- | @commandBuffer@ is the command buffer into which the command will be
-                                             -- recorded.
-                                             CommandBuffer
-                                          -> -- | @pInfos@ is a pointer to an array of @infoCount@
-                                             -- 'AccelerationStructureBuildGeometryInfoKHR' structures defining the
-                                             -- geometry used to build each acceleration structure.
-                                             ("infos" ::: Vector AccelerationStructureBuildGeometryInfoKHR)
-                                          -> -- | @pIndirectDeviceAddresses@ is a pointer to an array of @infoCount@
-                                             -- buffer device addresses which point to @pInfos@[i].@geometryCount@
-                                             -- 'AccelerationStructureBuildRangeInfoKHR' structures defining dynamic
-                                             -- offsets to the addresses where geometry data is stored, as defined by
-                                             -- @pInfos@[i].
-                                             ("indirectDeviceAddresses" ::: Vector DeviceAddress)
-                                          -> -- | @pIndirectStrides@ is a pointer to an array of @infoCount@ byte strides
-                                             -- between elements of @pIndirectDeviceAddresses@.
-                                             ("indirectStrides" ::: Vector Word32)
-                                          -> -- | @ppMaxPrimitiveCounts@ is a pointer to an array of @infoCount@ pointers
-                                             -- to arrays of @pInfos@[i].@geometryCount@ values indicating the maximum
-                                             -- number of primitives that will be built by this command for each
-                                             -- geometry.
-                                             ("maxPrimitiveCounts" ::: Vector (Vector Word32))
-                                          -> io ()
-cmdBuildAccelerationStructuresIndirectKHR commandBuffer
-                                            infos
-                                            indirectDeviceAddresses
-                                            indirectStrides
-                                            maxPrimitiveCounts = liftIO . evalContT $ do
-  let vkCmdBuildAccelerationStructuresIndirectKHRPtr = pVkCmdBuildAccelerationStructuresIndirectKHR (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCmdBuildAccelerationStructuresIndirectKHRPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdBuildAccelerationStructuresIndirectKHR is null" Nothing Nothing
-  let vkCmdBuildAccelerationStructuresIndirectKHR' = mkVkCmdBuildAccelerationStructuresIndirectKHR vkCmdBuildAccelerationStructuresIndirectKHRPtr
-  let pInfosLength = Data.Vector.length $ (infos)
-  lift $ unless ((Data.Vector.length $ (indirectDeviceAddresses)) == pInfosLength) $
-    throwIO $ IOError Nothing InvalidArgument "" "pIndirectDeviceAddresses and pInfos must have the same length" Nothing Nothing
-  lift $ unless ((Data.Vector.length $ (indirectStrides)) == pInfosLength) $
-    throwIO $ IOError Nothing InvalidArgument "" "pIndirectStrides and pInfos must have the same length" Nothing Nothing
-  lift $ unless ((Data.Vector.length $ (maxPrimitiveCounts)) == pInfosLength) $
-    throwIO $ IOError Nothing InvalidArgument "" "ppMaxPrimitiveCounts and pInfos must have the same length" Nothing Nothing
-  pPInfos <- ContT $ allocaBytes @AccelerationStructureBuildGeometryInfoKHR ((Data.Vector.length (infos)) * 80)
-  Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPInfos `plusPtr` (80 * (i)) :: Ptr AccelerationStructureBuildGeometryInfoKHR) (e) . ($ ())) (infos)
-  pPIndirectDeviceAddresses <- ContT $ allocaBytes @DeviceAddress ((Data.Vector.length (indirectDeviceAddresses)) * 8)
-  lift $ Data.Vector.imapM_ (\i e -> poke (pPIndirectDeviceAddresses `plusPtr` (8 * (i)) :: Ptr DeviceAddress) (e)) (indirectDeviceAddresses)
-  pPIndirectStrides <- ContT $ allocaBytes @Word32 ((Data.Vector.length (indirectStrides)) * 4)
-  lift $ Data.Vector.imapM_ (\i e -> poke (pPIndirectStrides `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (indirectStrides)
-  pPpMaxPrimitiveCounts <- ContT $ allocaBytes @(Ptr Word32) ((Data.Vector.length (maxPrimitiveCounts)) * 8)
-  Data.Vector.imapM_ (\i e -> do
-    pPpMaxPrimitiveCounts' <- ContT $ allocaBytes @Word32 ((Data.Vector.length (e)) * 4)
-    lift $ Data.Vector.imapM_ (\i' e' -> poke (pPpMaxPrimitiveCounts' `plusPtr` (4 * (i')) :: Ptr Word32) (e')) (e)
-    lift $ poke (pPpMaxPrimitiveCounts `plusPtr` (8 * (i)) :: Ptr (Ptr Word32)) (pPpMaxPrimitiveCounts')) (maxPrimitiveCounts)
-  lift $ traceAroundEvent "vkCmdBuildAccelerationStructuresIndirectKHR" (vkCmdBuildAccelerationStructuresIndirectKHR'
-                                                                           (commandBufferHandle (commandBuffer))
-                                                                           ((fromIntegral pInfosLength :: Word32))
-                                                                           (pPInfos)
-                                                                           (pPIndirectDeviceAddresses)
-                                                                           (pPIndirectStrides)
-                                                                           (pPpMaxPrimitiveCounts))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkBuildAccelerationStructuresKHR
-  :: FunPtr (Ptr Device_T -> DeferredOperationKHR -> Word32 -> Ptr AccelerationStructureBuildGeometryInfoKHR -> Ptr (Ptr AccelerationStructureBuildRangeInfoKHR) -> IO Result) -> Ptr Device_T -> DeferredOperationKHR -> Word32 -> Ptr AccelerationStructureBuildGeometryInfoKHR -> Ptr (Ptr AccelerationStructureBuildRangeInfoKHR) -> IO Result
-
--- | vkBuildAccelerationStructuresKHR - Build an acceleration structure on
--- the host
---
--- = Description
---
--- This command fulfills the same task as
--- 'cmdBuildAccelerationStructuresKHR' but is executed by the host.
---
--- The 'buildAccelerationStructuresKHR' command provides the ability to
--- initiate multiple acceleration structures builds, however there is no
--- ordering or synchronization implied between any of the individual
--- acceleration structure builds.
---
--- This means that an application /cannot/ build a top-level acceleration
--- structure in the same 'buildAccelerationStructuresKHR' call as the
--- associated bottom-level or instance acceleration structures are being
--- built. There also /cannot/ be any memory aliasing between any
--- acceleration structure memories or scratch memories being used by any of
--- the builds.
---
--- == Valid Usage
---
--- -   #VUID-vkBuildAccelerationStructuresKHR-accelerationStructureHostCommands-03581#
---     The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-accelerationStructureHostCommands ::accelerationStructureHostCommands>
---     feature /must/ be enabled
---
--- -   #VUID-vkBuildAccelerationStructuresKHR-mode-04628# The @mode@ member
---     of each element of @pInfos@ /must/ be a valid
---     'BuildAccelerationStructureModeKHR' value
---
--- -   #VUID-vkBuildAccelerationStructuresKHR-srcAccelerationStructure-04629#
---     If the @srcAccelerationStructure@ member of any element of @pInfos@
---     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the
---     @srcAccelerationStructure@ member /must/ be a valid
---     'Vulkan.Extensions.Handles.AccelerationStructureKHR' handle
---
--- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-04630# For each
---     element of @pInfos@, if its @mode@ member is
---     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', its
---     @srcAccelerationStructure@ member /must/ not be
---     'Vulkan.Core10.APIConstants.NULL_HANDLE'
---
--- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03403# The
---     @srcAccelerationStructure@ member of any element of @pInfos@ /must/
---     not be the same acceleration structure as the
---     @dstAccelerationStructure@ member of any other element of @pInfos@
---
--- -   #VUID-vkBuildAccelerationStructuresKHR-dstAccelerationStructure-03698#
---     The @dstAccelerationStructure@ member of any element of @pInfos@
---     /must/ not be the same acceleration structure as the
---     @dstAccelerationStructure@ member of any other element of @pInfos@
---
--- -   #VUID-vkBuildAccelerationStructuresKHR-dstAccelerationStructure-03800#
---     The @dstAccelerationStructure@ member of any element of @pInfos@
---     /must/ be a valid
---     'Vulkan.Extensions.Handles.AccelerationStructureKHR' handle
---
--- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03699# For each
---     element of @pInfos@, if its @type@ member is
---     'ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR', its
---     @dstAccelerationStructure@ member /must/ have been created with a
---     value of 'AccelerationStructureCreateInfoKHR'::@type@ equal to
---     either 'ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR' or
---     'ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR'
---
--- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03700# For each
---     element of @pInfos@, if its @type@ member is
---     'ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR', its
---     @dstAccelerationStructure@ member /must/ have been created with a
---     value of 'AccelerationStructureCreateInfoKHR'::@type@ equal to
---     either 'ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR' or
---     'ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR'
---
--- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03663# For each
---     element of @pInfos@, if its @mode@ member is
---     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR',
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-inactive-prims inactive primitives>
---     in its @srcAccelerationStructure@ member /must/ not be made active
---
--- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03664# For each
---     element of @pInfos@, if its @mode@ member is
---     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', active primitives in
---     its @srcAccelerationStructure@ member /must/ not be made
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-inactive-prims inactive>
---
--- -   #VUID-vkBuildAccelerationStructuresKHR-None-03407# The
---     @dstAccelerationStructure@ member of any element of @pInfos@ /must/
---     not be referenced by the @geometry.instances.data@ member of any
---     element of @pGeometries@ or @ppGeometries@ with a @geometryType@ of
---     'GEOMETRY_TYPE_INSTANCES_KHR' in any other element of @pInfos@
---
--- -   #VUID-vkBuildAccelerationStructuresKHR-dstAccelerationStructure-03701#
---     The range of memory backing the @dstAccelerationStructure@ member of
---     any element of @pInfos@ that is accessed by this command /must/ not
---     overlap the memory backing the @srcAccelerationStructure@ member of
---     any other element of @pInfos@ with a @mode@ equal to
---     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', which is accessed by
---     this command
---
--- -   #VUID-vkBuildAccelerationStructuresKHR-dstAccelerationStructure-03702#
---     The range of memory backing the @dstAccelerationStructure@ member of
---     any element of @pInfos@ that is accessed by this command /must/ not
---     overlap the memory backing the @dstAccelerationStructure@ member of
---     any other element of @pInfos@, which is accessed by this command
---
--- -   #VUID-vkBuildAccelerationStructuresKHR-dstAccelerationStructure-03703#
---     The range of memory backing the @dstAccelerationStructure@ member of
---     any element of @pInfos@ that is accessed by this command /must/ not
---     overlap the memory backing the @scratchData@ member of any element
---     of @pInfos@ (including the same element), which is accessed by this
---     command
---
--- -   #VUID-vkBuildAccelerationStructuresKHR-scratchData-03704# The range
---     of memory backing the @scratchData@ member of any element of
---     @pInfos@ that is accessed by this command /must/ not overlap the
---     memory backing the @scratchData@ member of any other element of
---     @pInfos@, which is accessed by this command
---
--- -   #VUID-vkBuildAccelerationStructuresKHR-scratchData-03705# The range
---     of memory backing the @scratchData@ member of any element of
---     @pInfos@ that is accessed by this command /must/ not overlap the
---     memory backing the @srcAccelerationStructure@ member of any element
---     of @pInfos@ with a @mode@ equal to
---     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR' (including the same
---     element), which is accessed by this command
---
--- -   #VUID-vkBuildAccelerationStructuresKHR-dstAccelerationStructure-03706#
---     The range of memory backing the @dstAccelerationStructure@ member of
---     any element of @pInfos@ that is accessed by this command /must/ not
---     overlap the memory backing any acceleration structure referenced by
---     the @geometry.instances.data@ member of any element of @pGeometries@
---     or @ppGeometries@ with a @geometryType@ of
---     'GEOMETRY_TYPE_INSTANCES_KHR' in any other element of @pInfos@,
---     which is accessed by this command
---
--- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03667# For each
---     element of @pInfos@, if its @mode@ member is
---     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', its
---     @srcAccelerationStructure@ member /must/ have previously been
---     constructed with 'BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR'
---     set in 'AccelerationStructureBuildGeometryInfoKHR'::@flags@ in the
---     build
---
--- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03668# For each
---     element of @pInfos@, if its @mode@ member is
---     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', its
---     @srcAccelerationStructure@ and @dstAccelerationStructure@ members
---     /must/ either be the same
---     'Vulkan.Extensions.Handles.AccelerationStructureKHR', or not have
---     any
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-memory-aliasing memory aliasing>
---
--- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03758# For each
---     element of @pInfos@, if its @mode@ member is
---     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', its @geometryCount@
---     member /must/ have the same value which was specified when
---     @srcAccelerationStructure@ was last built
---
--- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03759# For each
---     element of @pInfos@, if its @mode@ member is
---     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', its @flags@ member
---     /must/ have the same value which was specified when
---     @srcAccelerationStructure@ was last built
---
--- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03760# For each
---     element of @pInfos@, if its @mode@ member is
---     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', its @type@ member
---     /must/ have the same value which was specified when
---     @srcAccelerationStructure@ was last built
---
--- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03761# For each
---     element of @pInfos@, if its @mode@ member is
---     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
---     'AccelerationStructureGeometryKHR' structure referred to by its
---     @pGeometries@ or @ppGeometries@ members, its @geometryType@ member
---     /must/ have the same value which was specified when
---     @srcAccelerationStructure@ was last built
---
--- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03762# For each
---     element of @pInfos@, if its @mode@ member is
---     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
---     'AccelerationStructureGeometryKHR' structure referred to by its
---     @pGeometries@ or @ppGeometries@ members, its @flags@ member /must/
---     have the same value which was specified when
---     @srcAccelerationStructure@ was last built
---
--- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03763# For each
---     element of @pInfos@, if its @mode@ member is
---     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
---     'AccelerationStructureGeometryKHR' structure referred to by its
---     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
---     'GEOMETRY_TYPE_TRIANGLES_KHR', its @geometry.triangles.vertexFormat@
---     member /must/ have the same value which was specified when
---     @srcAccelerationStructure@ was last built
---
--- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03764# For each
---     element of @pInfos@, if its @mode@ member is
---     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
---     'AccelerationStructureGeometryKHR' structure referred to by its
---     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
---     'GEOMETRY_TYPE_TRIANGLES_KHR', its @geometry.triangles.maxVertex@
---     member /must/ have the same value which was specified when
---     @srcAccelerationStructure@ was last built
---
--- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03765# For each
---     element of @pInfos@, if its @mode@ member is
---     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
---     'AccelerationStructureGeometryKHR' structure referred to by its
---     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
---     'GEOMETRY_TYPE_TRIANGLES_KHR', its @geometry.triangles.indexType@
---     member /must/ have the same value which was specified when
---     @srcAccelerationStructure@ was last built
---
--- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03766# For each
---     element of @pInfos@, if its @mode@ member is
---     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
---     'AccelerationStructureGeometryKHR' structure referred to by its
---     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
---     'GEOMETRY_TYPE_TRIANGLES_KHR', if its
---     @geometry.triangles.transformData@ address was @NULL@ when
---     @srcAccelerationStructure@ was last built, then it /must/ be @NULL@
---
--- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03767# For each
---     element of @pInfos@, if its @mode@ member is
---     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
---     'AccelerationStructureGeometryKHR' structure referred to by its
---     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
---     'GEOMETRY_TYPE_TRIANGLES_KHR', if its
---     @geometry.triangles.transformData@ address was not @NULL@ when
---     @srcAccelerationStructure@ was last built, then it /must/ not be
---     @NULL@
---
--- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03768# For each
---     element of @pInfos@, if its @mode@ member is
---     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
---     'AccelerationStructureGeometryKHR' structure referred to by its
---     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
---     'GEOMETRY_TYPE_TRIANGLES_KHR', and @geometry.triangles.indexType@ is
---     not 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR', then the
---     value of each index referenced /must/ be the same as the
---     corresponding index value when @srcAccelerationStructure@ was last
---     built
---
--- -   #VUID-vkBuildAccelerationStructuresKHR-primitiveCount-03769# For
---     each element of @pInfos@, if its @mode@ member is
---     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
---     'AccelerationStructureGeometryKHR' structure referred to by its
---     @pGeometries@ or @ppGeometries@ members, the @primitiveCount@ member
---     of its corresponding 'AccelerationStructureBuildRangeInfoKHR'
---     structure /must/ have the same value which was specified when
---     @srcAccelerationStructure@ was last built
---
--- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03801# For each
---     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@
---     with a @geometryType@ of 'GEOMETRY_TYPE_INSTANCES_KHR', the
---     corresponding @ppBuildRangeInfos@[i][j].@primitiveCount@ /must/ be
---     less than or equal to
---     'PhysicalDeviceAccelerationStructurePropertiesKHR'::@maxInstanceCount@
---
--- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-10126# For each
---     @pInfos@[i], @dstAccelerationStructure@ /must/ have been created
---     with a value of 'AccelerationStructureCreateInfoKHR'::@size@ greater
---     than or equal to either:
---
---     -   the memory size required by the build operation, as returned by
---         'getAccelerationStructureBuildSizesKHR' with @pBuildInfo@ =
---         @pInfos@[i] and with each element of the @pMaxPrimitiveCounts@
---         array greater than or equal to the equivalent
---         @ppBuildRangeInfos@[i][j].@primitiveCount@ values for @j@ in
---         [0,@pInfos@[i].@geometryCount@) or,
---
---     -   the result of querying the corresponding
---         'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR',
---         if updating a compacted acceleration structure
---
--- -   #VUID-vkBuildAccelerationStructuresKHR-ppBuildRangeInfos-03676# Each
---     element of @ppBuildRangeInfos@[i] /must/ be a valid pointer to an
---     array of @pInfos@[i].@geometryCount@
---     'AccelerationStructureBuildRangeInfoKHR' structures
---
--- -   #VUID-vkBuildAccelerationStructuresKHR-deferredOperation-03678# Any
---     previous deferred operation that was associated with
---     @deferredOperation@ /must/ be complete
---
--- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03722# For each
---     element of @pInfos@, the @buffer@ used to create its
---     @dstAccelerationStructure@ member /must/ be bound to host-visible
---     device memory
---
--- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03723# For each
---     element of @pInfos@, if its @mode@ member is
---     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR' the @buffer@ used to
---     create its @srcAccelerationStructure@ member /must/ be bound to
---     host-visible device memory
---
--- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03724# For each
---     element of @pInfos@, the @buffer@ used to create each acceleration
---     structure referenced by the @geometry.instances.data@ member of any
---     element of @pGeometries@ or @ppGeometries@ with a @geometryType@ of
---     'GEOMETRY_TYPE_INSTANCES_KHR' /must/ be bound to host-visible device
---     memory
---
--- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03725# If
---     @pInfos@[i].@mode@ is 'BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR',
---     all addresses between @pInfos@[i].@scratchData.hostAddress@ and
---     @pInfos@[i].@scratchData.hostAddress@ + N - 1 /must/ be valid host
---     memory, where N is given by the @buildScratchSize@ member of the
---     'AccelerationStructureBuildSizesInfoKHR' structure returned from a
---     call to 'getAccelerationStructureBuildSizesKHR' with an identical
---     'AccelerationStructureBuildGeometryInfoKHR' structure and primitive
---     count
---
--- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03726# If
---     @pInfos@[i].@mode@ is
---     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', all addresses
---     between @pInfos@[i].@scratchData.hostAddress@ and
---     @pInfos@[i].@scratchData.hostAddress@ + N - 1 /must/ be valid host
---     memory, where N is given by the @updateScratchSize@ member of the
---     'AccelerationStructureBuildSizesInfoKHR' structure returned from a
---     call to 'getAccelerationStructureBuildSizesKHR' with an identical
---     'AccelerationStructureBuildGeometryInfoKHR' structure and primitive
---     count
---
--- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03771# For any element
---     of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@ with a
---     @geometryType@ of 'GEOMETRY_TYPE_TRIANGLES_KHR',
---     @geometry.triangles.vertexData.hostAddress@ /must/ be a valid host
---     address
---
--- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03772# For any element
---     of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@ with a
---     @geometryType@ of 'GEOMETRY_TYPE_TRIANGLES_KHR', if
---     @geometry.triangles.indexType@ is not
---     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR',
---     @geometry.triangles.indexData.hostAddress@ /must/ be a valid host
---     address
---
--- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03773# For any element
---     of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@ with a
---     @geometryType@ of 'GEOMETRY_TYPE_TRIANGLES_KHR', if
---     @geometry.triangles.transformData.hostAddress@ is not @0@, it /must/
---     be a valid host address
---
--- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03774# For any element
---     of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@ with a
---     @geometryType@ of 'GEOMETRY_TYPE_AABBS_KHR',
---     @geometry.aabbs.data.hostAddress@ /must/ be a valid host address
---
--- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03775# For each
---     element of @pInfos@, the @buffer@ used to create its
---     @dstAccelerationStructure@ member /must/ be bound to memory that was
---     not allocated with multiple instances
---
--- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03776# For each
---     element of @pInfos@, if its @mode@ member is
---     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR' the @buffer@ used to
---     create its @srcAccelerationStructure@ member /must/ be bound to
---     memory that was not allocated with multiple instances
---
--- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03777# For each
---     element of @pInfos@, the @buffer@ used to create each acceleration
---     structure referenced by the @geometry.instances.data@ member of any
---     element of @pGeometries@ or @ppGeometries@ with a @geometryType@ of
---     'GEOMETRY_TYPE_INSTANCES_KHR' /must/ be bound to memory that was not
---     allocated with multiple instances
---
--- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03778# For any element
---     of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@ with a
---     @geometryType@ of 'GEOMETRY_TYPE_INSTANCES_KHR',
---     @geometry.instances.data.hostAddress@ /must/ be a valid host address
---
--- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03779# For any element
---     of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@ with a
---     @geometryType@ of 'GEOMETRY_TYPE_INSTANCES_KHR', each
---     'AccelerationStructureInstanceKHR'::@accelerationStructureReference@
---     value in @geometry.instances.data.hostAddress@ /must/ be a valid
---     'Vulkan.Extensions.Handles.AccelerationStructureKHR' object
---
--- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-04930# For any element
---     of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@ with a
---     @geometryType@ of 'GEOMETRY_TYPE_INSTANCES_KHR' with
---     'BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV' set, each
---     @accelerationStructureReference@ in any structure in
---     'Vulkan.Extensions.VK_NV_ray_tracing_motion_blur.AccelerationStructureMotionInstanceNV'
---     value in @geometry.instances.data.hostAddress@ /must/ be a valid
---     'Vulkan.Extensions.Handles.AccelerationStructureKHR' object
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkBuildAccelerationStructuresKHR-device-parameter# @device@
---     /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
---
--- -   #VUID-vkBuildAccelerationStructuresKHR-deferredOperation-parameter#
---     If @deferredOperation@ is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', @deferredOperation@ /must/
---     be a valid 'Vulkan.Extensions.Handles.DeferredOperationKHR' handle
---
--- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-parameter# @pInfos@
---     /must/ be a valid pointer to an array of @infoCount@ valid
---     'AccelerationStructureBuildGeometryInfoKHR' structures
---
--- -   #VUID-vkBuildAccelerationStructuresKHR-ppBuildRangeInfos-parameter#
---     @ppBuildRangeInfos@ /must/ be a valid pointer to an array of
---     @infoCount@ 'AccelerationStructureBuildRangeInfoKHR' structures
---
--- -   #VUID-vkBuildAccelerationStructuresKHR-infoCount-arraylength#
---     @infoCount@ /must/ be greater than @0@
---
--- -   #VUID-vkBuildAccelerationStructuresKHR-deferredOperation-parent# If
---     @deferredOperation@ is a valid handle, it /must/ have been created,
---     allocated, or retrieved from @device@
---
--- == 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.OPERATION_DEFERRED_KHR'
---
---     -   'Vulkan.Core10.Enums.Result.OPERATION_NOT_DEFERRED_KHR'
---
--- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
---
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
---
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
--- 'AccelerationStructureBuildGeometryInfoKHR',
--- 'AccelerationStructureBuildRangeInfoKHR',
--- 'Vulkan.Extensions.Handles.DeferredOperationKHR',
--- 'Vulkan.Core10.Handles.Device'
-buildAccelerationStructuresKHR :: forall io
-                                . (MonadIO io)
-                               => -- | @device@ is the 'Vulkan.Core10.Handles.Device' for which the
-                                  -- acceleration structures are being built.
-                                  Device
-                               -> -- | @deferredOperation@ is an optional
-                                  -- 'Vulkan.Extensions.Handles.DeferredOperationKHR' to
-                                  -- <https://registry.khronos.org/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@
-                                  -- 'AccelerationStructureBuildGeometryInfoKHR' structures defining the
-                                  -- geometry used to build each acceleration structure.
-                                  ("infos" ::: Vector AccelerationStructureBuildGeometryInfoKHR)
-                               -> -- | @ppBuildRangeInfos@ is a pointer to an array of @infoCount@ pointers to
-                                  -- arrays of 'AccelerationStructureBuildRangeInfoKHR' structures. Each
-                                  -- @ppBuildRangeInfos@[i] is a pointer to an array of
-                                  -- @pInfos@[i].@geometryCount@ 'AccelerationStructureBuildRangeInfoKHR'
-                                  -- structures defining dynamic offsets to the addresses where geometry data
-                                  -- is stored, as defined by @pInfos@[i].
-                                  ("buildRangeInfos" ::: Vector (Vector AccelerationStructureBuildRangeInfoKHR))
-                               -> io (Result)
-buildAccelerationStructuresKHR device
-                                 deferredOperation
-                                 infos
-                                 buildRangeInfos = liftIO . evalContT $ do
-  let vkBuildAccelerationStructuresKHRPtr = pVkBuildAccelerationStructuresKHR (case device of Device{deviceCmds} -> deviceCmds)
-  lift $ unless (vkBuildAccelerationStructuresKHRPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkBuildAccelerationStructuresKHR is null" Nothing Nothing
-  let vkBuildAccelerationStructuresKHR' = mkVkBuildAccelerationStructuresKHR vkBuildAccelerationStructuresKHRPtr
-  let pInfosLength = Data.Vector.length $ (infos)
-  lift $ unless ((Data.Vector.length $ (buildRangeInfos)) == pInfosLength) $
-    throwIO $ IOError Nothing InvalidArgument "" "ppBuildRangeInfos and pInfos must have the same length" Nothing Nothing
-  pPInfos <- ContT $ allocaBytes @AccelerationStructureBuildGeometryInfoKHR ((Data.Vector.length (infos)) * 80)
-  Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPInfos `plusPtr` (80 * (i)) :: Ptr AccelerationStructureBuildGeometryInfoKHR) (e) . ($ ())) (infos)
-  pPpBuildRangeInfos <- ContT $ allocaBytes @(Ptr AccelerationStructureBuildRangeInfoKHR) ((Data.Vector.length (buildRangeInfos)) * 8)
-  Data.Vector.imapM_ (\i e -> do
-    pPpBuildRangeInfos' <- ContT $ allocaBytes @AccelerationStructureBuildRangeInfoKHR ((Data.Vector.length (e)) * 16)
-    lift $ Data.Vector.imapM_ (\i' e' -> poke (pPpBuildRangeInfos' `plusPtr` (16 * (i')) :: Ptr AccelerationStructureBuildRangeInfoKHR) (e')) (e)
-    lift $ poke (pPpBuildRangeInfos `plusPtr` (8 * (i)) :: Ptr (Ptr AccelerationStructureBuildRangeInfoKHR)) (pPpBuildRangeInfos')) (buildRangeInfos)
-  r <- lift $ traceAroundEvent "vkBuildAccelerationStructuresKHR" (vkBuildAccelerationStructuresKHR'
-                                                                     (deviceHandle (device))
-                                                                     (deferredOperation)
-                                                                     ((fromIntegral pInfosLength :: Word32))
-                                                                     (pPInfos)
-                                                                     (pPpBuildRangeInfos))
-  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
-  pure $ (r)
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkGetAccelerationStructureDeviceAddressKHR
-  :: FunPtr (Ptr Device_T -> Ptr AccelerationStructureDeviceAddressInfoKHR -> IO DeviceAddress) -> Ptr Device_T -> Ptr AccelerationStructureDeviceAddressInfoKHR -> IO DeviceAddress
-
--- | vkGetAccelerationStructureDeviceAddressKHR - Query an address of an
--- acceleration structure
---
--- = Description
---
--- The 64-bit return value is an address of the acceleration structure,
--- which can be used for device and shader operations that involve
--- acceleration structures, such as ray traversal and acceleration
--- structure building.
---
--- If the acceleration structure was created with a non-zero value of
--- 'AccelerationStructureCreateInfoKHR'::@deviceAddress@, the return value
--- will be the same address.
---
--- If the acceleration structure was created with a @type@ of
--- 'ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR', the returned address /must/
--- be consistent with the relative offset to other acceleration structures
--- with @type@ 'ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR' allocated with the
--- same 'Vulkan.Core10.Handles.Buffer'. That is, the difference in returned
--- addresses between the two /must/ be the same as the difference in
--- offsets provided at acceleration structure creation.
---
--- The returned address /must/ be aligned to 256 bytes.
---
--- The acceleration structure device address /may/ be different from the
--- buffer device address corresponding to the acceleration structure’s
--- start offset in its storage buffer for acceleration structure types
--- other than 'ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR'.
---
--- == Valid Usage
---
--- -   #VUID-vkGetAccelerationStructureDeviceAddressKHR-accelerationStructure-08935#
---     The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-accelerationStructure ::accelerationStructure>
---     feature /must/ be enabled
---
--- -   #VUID-vkGetAccelerationStructureDeviceAddressKHR-device-03504# If
---     @device@ was created with multiple physical devices, then the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-bufferDeviceAddressMultiDevice bufferDeviceAddressMultiDevice>
---     feature /must/ be enabled
---
--- -   #VUID-vkGetAccelerationStructureDeviceAddressKHR-pInfo-09541# If the
---     buffer on which @pInfo->accelerationStructure@ was placed is
---     non-sparse then it /must/ be bound completely and contiguously to a
---     single 'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-vkGetAccelerationStructureDeviceAddressKHR-pInfo-09542# The
---     buffer on which @pInfo->accelerationStructure@ was placed /must/
---     have been created with the
---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT'
---     usage flag
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkGetAccelerationStructureDeviceAddressKHR-device-parameter#
---     @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
---
--- -   #VUID-vkGetAccelerationStructureDeviceAddressKHR-pInfo-parameter#
---     @pInfo@ /must/ be a valid pointer to a valid
---     'AccelerationStructureDeviceAddressInfoKHR' structure
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
--- 'AccelerationStructureDeviceAddressInfoKHR',
--- 'Vulkan.Core10.Handles.Device'
-getAccelerationStructureDeviceAddressKHR :: forall io
-                                          . (MonadIO io)
-                                         => -- | @device@ is the logical device that the acceleration structure was
-                                            -- created on.
-                                            Device
-                                         -> -- | @pInfo@ is a pointer to a 'AccelerationStructureDeviceAddressInfoKHR'
-                                            -- structure specifying the acceleration structure to retrieve an address
-                                            -- for.
-                                            AccelerationStructureDeviceAddressInfoKHR
-                                         -> io (DeviceAddress)
-getAccelerationStructureDeviceAddressKHR device info = liftIO . evalContT $ do
-  let vkGetAccelerationStructureDeviceAddressKHRPtr = pVkGetAccelerationStructureDeviceAddressKHR (case device of Device{deviceCmds} -> deviceCmds)
-  lift $ unless (vkGetAccelerationStructureDeviceAddressKHRPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetAccelerationStructureDeviceAddressKHR is null" Nothing Nothing
-  let vkGetAccelerationStructureDeviceAddressKHR' = mkVkGetAccelerationStructureDeviceAddressKHR vkGetAccelerationStructureDeviceAddressKHRPtr
-  pInfo <- ContT $ withCStruct (info)
-  r <- lift $ traceAroundEvent "vkGetAccelerationStructureDeviceAddressKHR" (vkGetAccelerationStructureDeviceAddressKHR'
-                                                                               (deviceHandle (device))
-                                                                               pInfo)
-  pure $ (r)
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkGetAccelerationStructureBuildSizesKHR
-  :: FunPtr (Ptr Device_T -> AccelerationStructureBuildTypeKHR -> Ptr AccelerationStructureBuildGeometryInfoKHR -> Ptr Word32 -> Ptr AccelerationStructureBuildSizesInfoKHR -> IO ()) -> Ptr Device_T -> AccelerationStructureBuildTypeKHR -> Ptr AccelerationStructureBuildGeometryInfoKHR -> Ptr Word32 -> Ptr AccelerationStructureBuildSizesInfoKHR -> IO ()
-
--- | vkGetAccelerationStructureBuildSizesKHR - Retrieve the required size for
--- an acceleration structure
---
--- = Description
---
--- The @srcAccelerationStructure@, @dstAccelerationStructure@, and @mode@
--- members of @pBuildInfo@ are ignored. Any 'DeviceOrHostAddressKHR' or
--- 'DeviceOrHostAddressConstKHR' members of @pBuildInfo@ are ignored by
--- this command, except that the @hostAddress@ member of
--- 'AccelerationStructureGeometryTrianglesDataKHR'::@transformData@ will be
--- examined to check if it is @NULL@.
---
--- An acceleration structure created with the @accelerationStructureSize@
--- returned by this command supports any build or update with a
--- 'AccelerationStructureBuildGeometryInfoKHR' structure and array of
--- 'AccelerationStructureBuildRangeInfoKHR' structures subject to the
--- following properties:
---
--- -   The build command is a host build command, and @buildType@ is
---     'ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR' or
---     'ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR'
---
--- -   The build command is a device build command, and @buildType@ is
---     'ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR' or
---     'ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR'
---
--- -   For 'AccelerationStructureBuildGeometryInfoKHR':
---
---     -   Its @type@, and @flags@ members are equal to @pBuildInfo->type@
---         and @pBuildInfo->flags@, respectively.
---
---     -   @geometryCount@ is less than or equal to
---         @pBuildInfo->geometryCount@.
---
---     -   For each element of either @pGeometries@ or @ppGeometries@ at a
---         given index, its @geometryType@ member is equal to
---         @pBuildInfo->geometryType@.
---
---     -   For each element of either @pGeometries@ or @ppGeometries@ at a
---         given index, its @flags@ member is equal to the corresponding
---         member of the same element in @pBuildInfo@.
---
---     -   For each element of either @pGeometries@ or @ppGeometries@ at a
---         given index, with a @geometryType@ member equal to
---         'GEOMETRY_TYPE_TRIANGLES_KHR', the @vertexFormat@ and
---         @indexType@ members of @geometry.triangles@ are equal to the
---         corresponding members of the same element in @pBuildInfo@.
---
---     -   For each element of either @pGeometries@ or @ppGeometries@ at a
---         given index, with a @geometryType@ member equal to
---         'GEOMETRY_TYPE_TRIANGLES_KHR', the @maxVertex@ member of
---         @geometry.triangles@ is less than or equal to the corresponding
---         member of the same element in @pBuildInfo@.
---
---     -   For each element of either @pGeometries@ or @ppGeometries@ at a
---         given index, with a @geometryType@ member equal to
---         'GEOMETRY_TYPE_TRIANGLES_KHR', if the applicable address in the
---         @transformData@ member of @geometry.triangles@ is not @NULL@,
---         the corresponding @transformData.hostAddress@ parameter in
---         @pBuildInfo@ is not @NULL@.
---
--- -   For each 'AccelerationStructureBuildRangeInfoKHR' corresponding to
---     the 'AccelerationStructureBuildGeometryInfoKHR':
---
---     -   Its @primitiveCount@ member is less than or equal to the
---         corresponding element of @pMaxPrimitiveCounts@.
---
---     -   For each element of either @pGeometries@ or @ppGeometries@ at a
---         given index, with a @geometryType@ member equal to
---         'GEOMETRY_TYPE_TRIANGLES_KHR', if the @pNext@ chain contains
---         'Vulkan.Extensions.VK_EXT_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapEXT'
---         the corresponding member of @pBuildInfo@ also contains
---         'Vulkan.Extensions.VK_EXT_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapEXT'
---         and with an equivalent @micromap@.
---
---     -   For each element of either @pGeometries@ or @ppGeometries@ at a
---         given index, with a @geometryType@ member equal to
---         'GEOMETRY_TYPE_TRIANGLES_KHR', if the @pNext@ chain contains
---         'Vulkan.Extensions.VK_NV_displacement_micromap.AccelerationStructureTrianglesDisplacementMicromapNV'
---         the corresponding member of @pBuildInfo@ also contains
---         'Vulkan.Extensions.VK_NV_displacement_micromap.AccelerationStructureTrianglesDisplacementMicromapNV'
---         and with an equivalent @micromap@.
---
--- Similarly, the @updateScratchSize@ value will support any build command
--- specifying the 'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR' @mode@
--- under the above conditions, and the @buildScratchSize@ value will
--- support any build command specifying the
--- 'BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR' @mode@ under the above
--- conditions.
---
--- == Valid Usage
---
--- -   #VUID-vkGetAccelerationStructureBuildSizesKHR-accelerationStructure-08933#
---     The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-accelerationStructure ::accelerationStructure>
---     feature /must/ be enabled
---
--- -   #VUID-vkGetAccelerationStructureBuildSizesKHR-device-03618# If
---     @device@ was created with multiple physical devices, then the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-bufferDeviceAddressMultiDevice bufferDeviceAddressMultiDevice>
---     feature /must/ be enabled
---
--- -   #VUID-vkGetAccelerationStructureBuildSizesKHR-pBuildInfo-03619# If
---     @pBuildInfo->geometryCount@ is not @0@, @pMaxPrimitiveCounts@ /must/
---     be a valid pointer to an array of @pBuildInfo->geometryCount@
---     @uint32_t@ values
---
--- -   #VUID-vkGetAccelerationStructureBuildSizesKHR-pBuildInfo-03785# If
---     @pBuildInfo->pGeometries@ or @pBuildInfo->ppGeometries@ has a
---     @geometryType@ of 'GEOMETRY_TYPE_INSTANCES_KHR', each
---     @pMaxPrimitiveCounts@[i] /must/ be less than or equal to
---     'PhysicalDeviceAccelerationStructurePropertiesKHR'::@maxInstanceCount@
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkGetAccelerationStructureBuildSizesKHR-device-parameter#
---     @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
---
--- -   #VUID-vkGetAccelerationStructureBuildSizesKHR-buildType-parameter#
---     @buildType@ /must/ be a valid 'AccelerationStructureBuildTypeKHR'
---     value
---
--- -   #VUID-vkGetAccelerationStructureBuildSizesKHR-pBuildInfo-parameter#
---     @pBuildInfo@ /must/ be a valid pointer to a valid
---     'AccelerationStructureBuildGeometryInfoKHR' structure
---
--- -   #VUID-vkGetAccelerationStructureBuildSizesKHR-pMaxPrimitiveCounts-parameter#
---     If @pMaxPrimitiveCounts@ is not @NULL@, @pMaxPrimitiveCounts@ /must/
---     be a valid pointer to an array of @pBuildInfo->geometryCount@
---     @uint32_t@ values
---
--- -   #VUID-vkGetAccelerationStructureBuildSizesKHR-pSizeInfo-parameter#
---     @pSizeInfo@ /must/ be a valid pointer to a
---     'AccelerationStructureBuildSizesInfoKHR' structure
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
--- 'AccelerationStructureBuildGeometryInfoKHR',
--- 'AccelerationStructureBuildSizesInfoKHR',
--- 'AccelerationStructureBuildTypeKHR', 'Vulkan.Core10.Handles.Device'
-getAccelerationStructureBuildSizesKHR :: forall io
-                                       . (MonadIO io)
-                                      => -- | @device@ is the logical device that will be used for creating the
-                                         -- acceleration structure.
-                                         Device
-                                      -> -- | @buildType@ defines whether host or device operations (or both) are
-                                         -- being queried for.
-                                         AccelerationStructureBuildTypeKHR
-                                      -> -- | @pBuildInfo@ is a pointer to a
-                                         -- 'AccelerationStructureBuildGeometryInfoKHR' structure describing
-                                         -- parameters of a build operation.
-                                         ("buildInfo" ::: AccelerationStructureBuildGeometryInfoKHR)
-                                      -> -- | @pMaxPrimitiveCounts@ is a pointer to an array of
-                                         -- @pBuildInfo->geometryCount@ @uint32_t@ values defining the number of
-                                         -- primitives built into each geometry.
-                                         ("maxPrimitiveCounts" ::: Vector Word32)
-                                      -> io (("sizeInfo" ::: AccelerationStructureBuildSizesInfoKHR))
-getAccelerationStructureBuildSizesKHR device
-                                        buildType
-                                        buildInfo
-                                        maxPrimitiveCounts = liftIO . evalContT $ do
-  let vkGetAccelerationStructureBuildSizesKHRPtr = pVkGetAccelerationStructureBuildSizesKHR (case device of Device{deviceCmds} -> deviceCmds)
-  lift $ unless (vkGetAccelerationStructureBuildSizesKHRPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetAccelerationStructureBuildSizesKHR is null" Nothing Nothing
-  let vkGetAccelerationStructureBuildSizesKHR' = mkVkGetAccelerationStructureBuildSizesKHR vkGetAccelerationStructureBuildSizesKHRPtr
-  pBuildInfo <- ContT $ withCStruct (buildInfo)
-  pMaxPrimitiveCounts <- if Data.Vector.null (maxPrimitiveCounts)
-    then pure nullPtr
-    else do
-      pPMaxPrimitiveCounts <- ContT $ allocaBytes @Word32 (((Data.Vector.length (maxPrimitiveCounts))) * 4)
-      lift $ Data.Vector.imapM_ (\i e -> poke (pPMaxPrimitiveCounts `plusPtr` (4 * (i)) :: Ptr Word32) (e)) ((maxPrimitiveCounts))
-      pure $ pPMaxPrimitiveCounts
-  pPSizeInfo <- ContT (withZeroCStruct @AccelerationStructureBuildSizesInfoKHR)
-  lift $ traceAroundEvent "vkGetAccelerationStructureBuildSizesKHR" (vkGetAccelerationStructureBuildSizesKHR'
-                                                                       (deviceHandle (device))
-                                                                       (buildType)
-                                                                       pBuildInfo
-                                                                       pMaxPrimitiveCounts
-                                                                       (pPSizeInfo))
-  pSizeInfo <- lift $ peekCStruct @AccelerationStructureBuildSizesInfoKHR pPSizeInfo
-  pure $ (pSizeInfo)
-
-
--- No documentation found for TopLevel "VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR"
-pattern GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR = GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR
-
-
--- | VkWriteDescriptorSetAccelerationStructureKHR - Structure specifying
--- acceleration structure descriptor information
---
--- == Valid Usage
---
--- -   #VUID-VkWriteDescriptorSetAccelerationStructureKHR-accelerationStructureCount-02236#
---     @accelerationStructureCount@ /must/ be equal to @descriptorCount@ in
---     the extended structure
---
--- -   #VUID-VkWriteDescriptorSetAccelerationStructureKHR-pAccelerationStructures-03579#
---     Each acceleration structure in @pAccelerationStructures@ /must/ have
---     been created with a @type@ of
---     'ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR' or
---     'ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR'
---
--- -   #VUID-VkWriteDescriptorSetAccelerationStructureKHR-pAccelerationStructures-03580#
---     If the
---     <https://registry.khronos.org/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'
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkWriteDescriptorSetAccelerationStructureKHR-sType-sType#
---     @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR'
---
--- -   #VUID-VkWriteDescriptorSetAccelerationStructureKHR-pAccelerationStructures-parameter#
---     @pAccelerationStructures@ /must/ be a valid pointer to an array of
---     @accelerationStructureCount@ valid or
---     'Vulkan.Core10.APIConstants.NULL_HANDLE'
---     'Vulkan.Extensions.Handles.AccelerationStructureKHR' handles
---
--- -   #VUID-VkWriteDescriptorSetAccelerationStructureKHR-accelerationStructureCount-arraylength#
---     @accelerationStructureCount@ /must/ be greater than @0@
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
--- 'Vulkan.Extensions.Handles.AccelerationStructureKHR',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data WriteDescriptorSetAccelerationStructureKHR = WriteDescriptorSetAccelerationStructureKHR
-  { -- | @pAccelerationStructures@ is a pointer to an array of
-    -- 'Vulkan.Extensions.Handles.AccelerationStructureKHR' structures
-    -- specifying the acceleration structures to update.
-    accelerationStructures :: Vector AccelerationStructureKHR }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (WriteDescriptorSetAccelerationStructureKHR)
-#endif
-deriving instance Show WriteDescriptorSetAccelerationStructureKHR
-
-instance ToCStruct WriteDescriptorSetAccelerationStructureKHR where
-  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p WriteDescriptorSetAccelerationStructureKHR{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (accelerationStructures)) :: Word32))
-    pPAccelerationStructures' <- ContT $ allocaBytes @AccelerationStructureKHR ((Data.Vector.length (accelerationStructures)) * 8)
-    lift $ Data.Vector.imapM_ (\i e -> poke (pPAccelerationStructures' `plusPtr` (8 * (i)) :: Ptr AccelerationStructureKHR) (e)) (accelerationStructures)
-    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr AccelerationStructureKHR))) (pPAccelerationStructures')
-    lift $ f
-  cStructSize = 32
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    f
-
-instance FromCStruct WriteDescriptorSetAccelerationStructureKHR where
-  peekCStruct p = do
-    accelerationStructureCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
-    pAccelerationStructures <- peek @(Ptr AccelerationStructureKHR) ((p `plusPtr` 24 :: Ptr (Ptr AccelerationStructureKHR)))
-    pAccelerationStructures' <- generateM (fromIntegral accelerationStructureCount) (\i -> peek @AccelerationStructureKHR ((pAccelerationStructures `advancePtrBytes` (8 * (i)) :: Ptr AccelerationStructureKHR)))
-    pure $ WriteDescriptorSetAccelerationStructureKHR
-             pAccelerationStructures'
-
-instance Zero WriteDescriptorSetAccelerationStructureKHR where
-  zero = WriteDescriptorSetAccelerationStructureKHR
-           mempty
-
-
--- | VkPhysicalDeviceAccelerationStructureFeaturesKHR - Structure describing
--- the acceleration structure features that can be supported by an
--- implementation
---
--- = Members
---
--- This structure describes the following features:
---
--- = Description
---
--- If the 'PhysicalDeviceAccelerationStructureFeaturesKHR' 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. 'PhysicalDeviceAccelerationStructureFeaturesKHR' /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_acceleration_structure VK_KHR_acceleration_structure>,
--- 'Vulkan.Core10.FundamentalTypes.Bool32',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PhysicalDeviceAccelerationStructureFeaturesKHR = PhysicalDeviceAccelerationStructureFeaturesKHR
-  { -- | #features-accelerationStructure# @accelerationStructure@ indicates
-    -- whether the implementation supports the acceleration structure
-    -- functionality. See
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#acceleration-structure Acceleration Structures>.
-    accelerationStructure :: Bool
-  , -- | #features-accelerationStructureCaptureReplay#
-    -- @accelerationStructureCaptureReplay@ indicates whether the
-    -- implementation supports saving and reusing acceleration structure device
-    -- addresses, e.g. for trace capture and replay.
-    accelerationStructureCaptureReplay :: Bool
-  , -- | #features-accelerationStructureIndirectBuild#
-    -- @accelerationStructureIndirectBuild@ indicates whether the
-    -- implementation supports indirect acceleration structure build commands,
-    -- e.g. 'cmdBuildAccelerationStructuresIndirectKHR'.
-    accelerationStructureIndirectBuild :: Bool
-  , -- | #features-accelerationStructureHostCommands#
-    -- @accelerationStructureHostCommands@ indicates whether the implementation
-    -- supports host side acceleration structure commands, e.g.
-    -- 'buildAccelerationStructuresKHR', 'copyAccelerationStructureKHR',
-    -- 'copyAccelerationStructureToMemoryKHR',
-    -- 'copyMemoryToAccelerationStructureKHR',
-    -- 'writeAccelerationStructuresPropertiesKHR'.
-    accelerationStructureHostCommands :: Bool
-  , -- | #features-descriptorBindingAccelerationStructureUpdateAfterBind#
-    -- @descriptorBindingAccelerationStructureUpdateAfterBind@ indicates
-    -- whether the implementation supports updating acceleration structure
-    -- 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_ACCELERATION_STRUCTURE_KHR'.
-    descriptorBindingAccelerationStructureUpdateAfterBind :: Bool
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PhysicalDeviceAccelerationStructureFeaturesKHR)
-#endif
-deriving instance Show PhysicalDeviceAccelerationStructureFeaturesKHR
-
-instance ToCStruct PhysicalDeviceAccelerationStructureFeaturesKHR where
-  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PhysicalDeviceAccelerationStructureFeaturesKHR{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (accelerationStructure))
-    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (accelerationStructureCaptureReplay))
-    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (accelerationStructureIndirectBuild))
-    poke ((p `plusPtr` 28 :: Ptr Bool32)) (boolToBool32 (accelerationStructureHostCommands))
-    poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (descriptorBindingAccelerationStructureUpdateAfterBind))
-    f
-  cStructSize = 40
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_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))
-    f
-
-instance FromCStruct PhysicalDeviceAccelerationStructureFeaturesKHR where
-  peekCStruct p = do
-    accelerationStructure <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
-    accelerationStructureCaptureReplay <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
-    accelerationStructureIndirectBuild <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))
-    accelerationStructureHostCommands <- peek @Bool32 ((p `plusPtr` 28 :: Ptr Bool32))
-    descriptorBindingAccelerationStructureUpdateAfterBind <- peek @Bool32 ((p `plusPtr` 32 :: Ptr Bool32))
-    pure $ PhysicalDeviceAccelerationStructureFeaturesKHR
-             (bool32ToBool accelerationStructure)
-             (bool32ToBool accelerationStructureCaptureReplay)
-             (bool32ToBool accelerationStructureIndirectBuild)
-             (bool32ToBool accelerationStructureHostCommands)
-             (bool32ToBool descriptorBindingAccelerationStructureUpdateAfterBind)
-
-instance Storable PhysicalDeviceAccelerationStructureFeaturesKHR where
-  sizeOf ~_ = 40
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero PhysicalDeviceAccelerationStructureFeaturesKHR where
-  zero = PhysicalDeviceAccelerationStructureFeaturesKHR
-           zero
-           zero
-           zero
-           zero
-           zero
-
-
--- | VkPhysicalDeviceAccelerationStructurePropertiesKHR - Properties of the
--- physical device for acceleration structure
---
--- = Description
---
--- Due to the fact that the geometry, instance, and primitive counts are
--- specified at acceleration structure creation as 32-bit values,
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxGeometryCount maxGeometryCount>,
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxInstanceCount maxInstanceCount>,
--- and
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxPrimitiveCount maxPrimitiveCount>
--- /must/ not exceed 232-1.
---
--- If the 'PhysicalDeviceAccelerationStructurePropertiesKHR' 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.
---
--- Limits specified by this structure /must/ match those specified with the
--- same name in
--- 'Vulkan.Extensions.VK_NV_ray_tracing.PhysicalDeviceRayTracingPropertiesNV'.
---
--- == Valid Usage (Implicit)
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PhysicalDeviceAccelerationStructurePropertiesKHR = PhysicalDeviceAccelerationStructurePropertiesKHR
-  { -- | #limits-maxGeometryCount# @maxGeometryCount@ is the maximum number of
-    -- geometries in the bottom level acceleration structure.
-    maxGeometryCount :: Word64
-  , -- | #limits-maxInstanceCount# @maxInstanceCount@ is the maximum number of
-    -- instances in the top level acceleration structure.
-    maxInstanceCount :: Word64
-  , -- | #limits-maxPrimitiveCount# @maxPrimitiveCount@ is the maximum number of
-    -- triangles or AABBs in all geometries in the bottom level acceleration
-    -- structure.
-    maxPrimitiveCount :: Word64
-  , -- | #limits-maxPerStageDescriptorAccelerationStructures#
-    -- @maxPerStageDescriptorAccelerationStructures@ is the maximum number of
-    -- acceleration structure bindings that /can/ be accessible to a single
-    -- shader stage in a pipeline layout. Descriptor bindings with a descriptor
-    -- type of
-    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
-    -- 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.
-    maxPerStageDescriptorAccelerationStructures :: Word32
-  , -- | #limits-maxPerStageDescriptorUpdateAfterBindAccelerationStructures#
-    -- @maxPerStageDescriptorUpdateAfterBindAccelerationStructures@ is similar
-    -- to @maxPerStageDescriptorAccelerationStructures@ 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.
-    maxPerStageDescriptorUpdateAfterBindAccelerationStructures :: Word32
-  , -- | #limits-maxDescriptorSetAccelerationStructures#
-    -- @maxDescriptorSetAccelerationStructures@ is the maximum number of
-    -- acceleration structure descriptors 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_ACCELERATION_STRUCTURE_KHR'
-    -- 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.
-    maxDescriptorSetAccelerationStructures :: Word32
-  , -- | #limits-maxDescriptorSetUpdateAfterBindAccelerationStructures#
-    -- @maxDescriptorSetUpdateAfterBindAccelerationStructures@ is similar to
-    -- @maxDescriptorSetAccelerationStructures@ 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.
-    maxDescriptorSetUpdateAfterBindAccelerationStructures :: Word32
-  , -- | #limits-minAccelerationStructureScratchOffsetAlignment#
-    -- @minAccelerationStructureScratchOffsetAlignment@ is the minimum
-    -- /required/ alignment, in bytes, for scratch data passed in to an
-    -- acceleration structure build command. The value /must/ be a power of
-    -- two.
-    minAccelerationStructureScratchOffsetAlignment :: Word32
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PhysicalDeviceAccelerationStructurePropertiesKHR)
-#endif
-deriving instance Show PhysicalDeviceAccelerationStructurePropertiesKHR
-
-instance ToCStruct PhysicalDeviceAccelerationStructurePropertiesKHR where
-  withCStruct x f = allocaBytes 64 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PhysicalDeviceAccelerationStructurePropertiesKHR{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Word64)) (maxGeometryCount)
-    poke ((p `plusPtr` 24 :: Ptr Word64)) (maxInstanceCount)
-    poke ((p `plusPtr` 32 :: Ptr Word64)) (maxPrimitiveCount)
-    poke ((p `plusPtr` 40 :: Ptr Word32)) (maxPerStageDescriptorAccelerationStructures)
-    poke ((p `plusPtr` 44 :: Ptr Word32)) (maxPerStageDescriptorUpdateAfterBindAccelerationStructures)
-    poke ((p `plusPtr` 48 :: Ptr Word32)) (maxDescriptorSetAccelerationStructures)
-    poke ((p `plusPtr` 52 :: Ptr Word32)) (maxDescriptorSetUpdateAfterBindAccelerationStructures)
-    poke ((p `plusPtr` 56 :: Ptr Word32)) (minAccelerationStructureScratchOffsetAlignment)
-    f
-  cStructSize = 64
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Word64)) (zero)
-    poke ((p `plusPtr` 24 :: Ptr Word64)) (zero)
-    poke ((p `plusPtr` 32 :: Ptr Word64)) (zero)
-    poke ((p `plusPtr` 40 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 44 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 48 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 52 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 56 :: Ptr Word32)) (zero)
-    f
-
-instance FromCStruct PhysicalDeviceAccelerationStructurePropertiesKHR where
-  peekCStruct p = do
-    maxGeometryCount <- peek @Word64 ((p `plusPtr` 16 :: Ptr Word64))
-    maxInstanceCount <- peek @Word64 ((p `plusPtr` 24 :: Ptr Word64))
-    maxPrimitiveCount <- peek @Word64 ((p `plusPtr` 32 :: Ptr Word64))
-    maxPerStageDescriptorAccelerationStructures <- peek @Word32 ((p `plusPtr` 40 :: Ptr Word32))
-    maxPerStageDescriptorUpdateAfterBindAccelerationStructures <- peek @Word32 ((p `plusPtr` 44 :: Ptr Word32))
-    maxDescriptorSetAccelerationStructures <- peek @Word32 ((p `plusPtr` 48 :: Ptr Word32))
-    maxDescriptorSetUpdateAfterBindAccelerationStructures <- peek @Word32 ((p `plusPtr` 52 :: Ptr Word32))
-    minAccelerationStructureScratchOffsetAlignment <- peek @Word32 ((p `plusPtr` 56 :: Ptr Word32))
-    pure $ PhysicalDeviceAccelerationStructurePropertiesKHR
-             maxGeometryCount
-             maxInstanceCount
-             maxPrimitiveCount
-             maxPerStageDescriptorAccelerationStructures
-             maxPerStageDescriptorUpdateAfterBindAccelerationStructures
-             maxDescriptorSetAccelerationStructures
-             maxDescriptorSetUpdateAfterBindAccelerationStructures
-             minAccelerationStructureScratchOffsetAlignment
-
-instance Storable PhysicalDeviceAccelerationStructurePropertiesKHR where
-  sizeOf ~_ = 64
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero PhysicalDeviceAccelerationStructurePropertiesKHR where
-  zero = PhysicalDeviceAccelerationStructurePropertiesKHR
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-
-
--- | VkAccelerationStructureGeometryTrianglesDataKHR - Structure specifying a
--- triangle geometry in a bottom-level acceleration structure
---
--- = Description
---
--- Unlike the stride for vertex buffers in
--- 'Vulkan.Core10.Pipeline.VertexInputBindingDescription' for graphics
--- pipelines which must not exceed @maxVertexInputBindingStride@,
--- @vertexStride@ for acceleration structure geometry is instead restricted
--- to being a 32-bit value.
---
--- == Valid Usage
---
--- -   #VUID-VkAccelerationStructureGeometryTrianglesDataKHR-vertexStride-03735#
---     @vertexStride@ /must/ be a multiple of the size in bytes of the
---     smallest component of @vertexFormat@
---
--- -   #VUID-VkAccelerationStructureGeometryTrianglesDataKHR-vertexStride-03819#
---     @vertexStride@ /must/ be less than or equal to 232-1
---
--- -   #VUID-VkAccelerationStructureGeometryTrianglesDataKHR-vertexFormat-03797#
---     The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-buffer-view-format-features format features>
---     of @vertexFormat@ /must/ contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR'
---
--- -   #VUID-VkAccelerationStructureGeometryTrianglesDataKHR-indexType-03798#
---     @indexType@ /must/ be
---     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT16',
---     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT32', or
---     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR'
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkAccelerationStructureGeometryTrianglesDataKHR-sType-sType#
---     @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR'
---
--- -   #VUID-VkAccelerationStructureGeometryTrianglesDataKHR-pNext-pNext#
---     Each @pNext@ member of any structure (including this one) in the
---     @pNext@ chain /must/ be either @NULL@ or a pointer to a valid
---     instance of
---     'Vulkan.Extensions.VK_NV_ray_tracing_motion_blur.AccelerationStructureGeometryMotionTrianglesDataNV',
---     'Vulkan.Extensions.VK_NV_displacement_micromap.AccelerationStructureTrianglesDisplacementMicromapNV',
---     or
---     'Vulkan.Extensions.VK_EXT_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapEXT'
---
--- -   #VUID-VkAccelerationStructureGeometryTrianglesDataKHR-sType-unique#
---     The @sType@ value of each struct in the @pNext@ chain /must/ be
---     unique
---
--- -   #VUID-VkAccelerationStructureGeometryTrianglesDataKHR-vertexFormat-parameter#
---     @vertexFormat@ /must/ be a valid 'Vulkan.Core10.Enums.Format.Format'
---     value
---
--- -   #VUID-VkAccelerationStructureGeometryTrianglesDataKHR-indexType-parameter#
---     @indexType@ /must/ be a valid
---     'Vulkan.Core10.Enums.IndexType.IndexType' value
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
--- 'AccelerationStructureGeometryDataKHR', 'DeviceOrHostAddressConstKHR',
--- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
--- 'Vulkan.Core10.Enums.Format.Format',
--- 'Vulkan.Core10.Enums.IndexType.IndexType',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data AccelerationStructureGeometryTrianglesDataKHR (es :: [Type]) = AccelerationStructureGeometryTrianglesDataKHR
-  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
-    next :: Chain es
-  , -- | @vertexFormat@ is the 'Vulkan.Core10.Enums.Format.Format' of each vertex
-    -- element.
-    vertexFormat :: Format
-  , -- | @vertexData@ is a device or host address to memory containing vertex
-    -- data for this geometry.
-    vertexData :: DeviceOrHostAddressConstKHR
-  , -- | @vertexStride@ is the stride in bytes between each vertex.
-    vertexStride :: DeviceSize
-  , -- | @maxVertex@ is the number of vertices in @vertexData@ minus one.
-    maxVertex :: Word32
-  , -- | @indexType@ is the 'Vulkan.Core10.Enums.IndexType.IndexType' of each
-    -- index element.
-    indexType :: IndexType
-  , -- | @indexData@ is a device or host address to memory containing index data
-    -- for this geometry.
-    indexData :: DeviceOrHostAddressConstKHR
-  , -- | @transformData@ is a device or host address to memory containing an
-    -- optional reference to a 'TransformMatrixKHR' structure describing a
-    -- transformation from the space in which the vertices in this geometry are
-    -- described to the space in which the acceleration structure is defined.
-    transformData :: DeviceOrHostAddressConstKHR
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (AccelerationStructureGeometryTrianglesDataKHR (es :: [Type]))
-#endif
-deriving instance Show (Chain es) => Show (AccelerationStructureGeometryTrianglesDataKHR es)
-
-instance Extensible AccelerationStructureGeometryTrianglesDataKHR where
-  extensibleTypeName = "AccelerationStructureGeometryTrianglesDataKHR"
-  setNext AccelerationStructureGeometryTrianglesDataKHR{..} next' = AccelerationStructureGeometryTrianglesDataKHR{next = next', ..}
-  getNext AccelerationStructureGeometryTrianglesDataKHR{..} = next
-  extends :: forall e b proxy. Typeable e => proxy e -> (Extends AccelerationStructureGeometryTrianglesDataKHR e => b) -> Maybe b
-  extends _ f
-    | Just Refl <- eqT @e @AccelerationStructureTrianglesDisplacementMicromapNV = Just f
-    | Just Refl <- eqT @e @AccelerationStructureTrianglesOpacityMicromapEXT = Just f
-    | Just Refl <- eqT @e @AccelerationStructureGeometryMotionTrianglesDataNV = Just f
-    | otherwise = Nothing
-
-instance ( Extendss AccelerationStructureGeometryTrianglesDataKHR es
-         , PokeChain es ) => ToCStruct (AccelerationStructureGeometryTrianglesDataKHR es) where
-  withCStruct x f = allocaBytes 64 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p AccelerationStructureGeometryTrianglesDataKHR{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR)
-    pNext'' <- fmap castPtr . ContT $ withChain (next)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
-    lift $ poke ((p `plusPtr` 16 :: Ptr Format)) (vertexFormat)
-    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr DeviceOrHostAddressConstKHR)) (vertexData) . ($ ())
-    lift $ poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (vertexStride)
-    lift $ poke ((p `plusPtr` 40 :: Ptr Word32)) (maxVertex)
-    lift $ poke ((p `plusPtr` 44 :: Ptr IndexType)) (indexType)
-    ContT $ pokeCStruct ((p `plusPtr` 48 :: Ptr DeviceOrHostAddressConstKHR)) (indexData) . ($ ())
-    ContT $ pokeCStruct ((p `plusPtr` 56 :: Ptr DeviceOrHostAddressConstKHR)) (transformData) . ($ ())
-    lift $ f
-  cStructSize = 64
-  cStructAlignment = 8
-  pokeZeroCStruct p f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR)
-    pNext' <- fmap castPtr . ContT $ withZeroChain @es
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
-    lift $ poke ((p `plusPtr` 16 :: Ptr Format)) (zero)
-    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr DeviceOrHostAddressConstKHR)) (zero) . ($ ())
-    lift $ poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (zero)
-    lift $ poke ((p `plusPtr` 40 :: Ptr Word32)) (zero)
-    lift $ poke ((p `plusPtr` 44 :: Ptr IndexType)) (zero)
-    ContT $ pokeCStruct ((p `plusPtr` 48 :: Ptr DeviceOrHostAddressConstKHR)) (zero) . ($ ())
-    ContT $ pokeCStruct ((p `plusPtr` 56 :: Ptr DeviceOrHostAddressConstKHR)) (zero) . ($ ())
-    lift $ f
-
-instance es ~ '[] => Zero (AccelerationStructureGeometryTrianglesDataKHR es) where
-  zero = AccelerationStructureGeometryTrianglesDataKHR
-           ()
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-
-
--- | VkAccelerationStructureGeometryAabbsDataKHR - Structure specifying
--- axis-aligned bounding box geometry in a bottom-level acceleration
--- structure
---
--- == Valid Usage (Implicit)
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
--- 'AccelerationStructureGeometryDataKHR', 'DeviceOrHostAddressConstKHR',
--- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data AccelerationStructureGeometryAabbsDataKHR = AccelerationStructureGeometryAabbsDataKHR
-  { -- | @data@ is a device or host address to memory containing
-    -- 'AabbPositionsKHR' structures containing position data for each
-    -- axis-aligned bounding box in the geometry.
-    data' :: DeviceOrHostAddressConstKHR
-  , -- | @stride@ is the stride in bytes between each entry in @data@. The stride
-    -- /must/ be a multiple of @8@.
-    --
-    -- #VUID-VkAccelerationStructureGeometryAabbsDataKHR-stride-03545# @stride@
-    -- /must/ be a multiple of @8@
-    --
-    -- #VUID-VkAccelerationStructureGeometryAabbsDataKHR-stride-03820# @stride@
-    -- /must/ be less than or equal to 232-1
-    stride :: DeviceSize
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (AccelerationStructureGeometryAabbsDataKHR)
-#endif
-deriving instance Show AccelerationStructureGeometryAabbsDataKHR
-
-instance ToCStruct AccelerationStructureGeometryAabbsDataKHR where
-  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p AccelerationStructureGeometryAabbsDataKHR{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr DeviceOrHostAddressConstKHR)) (data') . ($ ())
-    lift $ poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (stride)
-    lift $ f
-  cStructSize = 32
-  cStructAlignment = 8
-  pokeZeroCStruct p f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr DeviceOrHostAddressConstKHR)) (zero) . ($ ())
-    lift $ poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (zero)
-    lift $ f
-
-instance Zero AccelerationStructureGeometryAabbsDataKHR where
-  zero = AccelerationStructureGeometryAabbsDataKHR
-           zero
-           zero
-
-
--- | VkAccelerationStructureGeometryInstancesDataKHR - Structure specifying a
--- geometry consisting of instances of other acceleration structures
---
--- == Valid Usage (Implicit)
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
--- 'AccelerationStructureGeometryDataKHR',
--- 'Vulkan.Core10.FundamentalTypes.Bool32', 'DeviceOrHostAddressConstKHR',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data AccelerationStructureGeometryInstancesDataKHR = AccelerationStructureGeometryInstancesDataKHR
-  { -- | @arrayOfPointers@ specifies whether @data@ is used as an array of
-    -- addresses or just an array.
-    arrayOfPointers :: Bool
-  , -- | @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://registry.khronos.org/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'
-    -- structures. Addresses and 'AccelerationStructureInstanceKHR' structures
-    -- are tightly packed.
-    -- 'Vulkan.Extensions.VK_NV_ray_tracing_motion_blur.AccelerationStructureMotionInstanceNV'
-    -- structures have a stride of 160 bytes.
-    data' :: DeviceOrHostAddressConstKHR
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (AccelerationStructureGeometryInstancesDataKHR)
-#endif
-deriving instance Show AccelerationStructureGeometryInstancesDataKHR
-
-instance ToCStruct AccelerationStructureGeometryInstancesDataKHR where
-  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p AccelerationStructureGeometryInstancesDataKHR{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    lift $ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (arrayOfPointers))
-    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr DeviceOrHostAddressConstKHR)) (data') . ($ ())
-    lift $ f
-  cStructSize = 32
-  cStructAlignment = 8
-  pokeZeroCStruct p f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    lift $ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
-    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr DeviceOrHostAddressConstKHR)) (zero) . ($ ())
-    lift $ f
-
-instance Zero AccelerationStructureGeometryInstancesDataKHR where
-  zero = AccelerationStructureGeometryInstancesDataKHR
-           zero
-           zero
-
-
--- | VkAccelerationStructureGeometryKHR - Structure specifying geometries to
--- be built into an acceleration structure
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkAccelerationStructureGeometryKHR-sType-sType# @sType@ /must/
---     be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR'
---
--- -   #VUID-VkAccelerationStructureGeometryKHR-pNext-pNext# @pNext@ /must/
---     be @NULL@
---
--- -   #VUID-VkAccelerationStructureGeometryKHR-geometryType-parameter#
---     @geometryType@ /must/ be a valid 'GeometryTypeKHR' value
---
--- -   #VUID-VkAccelerationStructureGeometryKHR-triangles-parameter# If
---     @geometryType@ is 'GEOMETRY_TYPE_TRIANGLES_KHR', the @triangles@
---     member of @geometry@ /must/ be a valid
---     'AccelerationStructureGeometryTrianglesDataKHR' structure
---
--- -   #VUID-VkAccelerationStructureGeometryKHR-aabbs-parameter# If
---     @geometryType@ is 'GEOMETRY_TYPE_AABBS_KHR', the @aabbs@ member of
---     @geometry@ /must/ be a valid
---     'AccelerationStructureGeometryAabbsDataKHR' structure
---
--- -   #VUID-VkAccelerationStructureGeometryKHR-instances-parameter# If
---     @geometryType@ is 'GEOMETRY_TYPE_INSTANCES_KHR', the @instances@
---     member of @geometry@ /must/ be a valid
---     'AccelerationStructureGeometryInstancesDataKHR' structure
---
--- -   #VUID-VkAccelerationStructureGeometryKHR-flags-parameter# @flags@
---     /must/ be a valid combination of 'GeometryFlagBitsKHR' values
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
--- 'AccelerationStructureBuildGeometryInfoKHR',
--- 'AccelerationStructureGeometryDataKHR', 'GeometryFlagsKHR',
--- 'GeometryTypeKHR', 'Vulkan.Core10.Enums.StructureType.StructureType'
-data AccelerationStructureGeometryKHR = AccelerationStructureGeometryKHR
-  { -- | @geometryType@ describes which type of geometry this
-    -- 'AccelerationStructureGeometryKHR' refers to.
-    geometryType :: GeometryTypeKHR
-  , -- | @geometry@ is a 'AccelerationStructureGeometryDataKHR' union describing
-    -- the geometry data for the relevant geometry type.
-    geometry :: AccelerationStructureGeometryDataKHR
-  , -- | @flags@ is a bitmask of 'GeometryFlagBitsKHR' values describing
-    -- additional properties of how the geometry should be built.
-    flags :: GeometryFlagsKHR
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (AccelerationStructureGeometryKHR)
-#endif
-deriving instance Show AccelerationStructureGeometryKHR
-
-instance ToCStruct AccelerationStructureGeometryKHR where
-  withCStruct x f = allocaBytes 96 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p AccelerationStructureGeometryKHR{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    lift $ poke ((p `plusPtr` 16 :: Ptr GeometryTypeKHR)) (geometryType)
-    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr AccelerationStructureGeometryDataKHR)) (geometry) . ($ ())
-    lift $ poke ((p `plusPtr` 88 :: Ptr GeometryFlagsKHR)) (flags)
-    lift $ f
-  cStructSize = 96
-  cStructAlignment = 8
-  pokeZeroCStruct p f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    lift $ poke ((p `plusPtr` 16 :: Ptr GeometryTypeKHR)) (zero)
-    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr AccelerationStructureGeometryDataKHR)) (zero) . ($ ())
-    lift $ f
-
-instance Zero AccelerationStructureGeometryKHR where
-  zero = AccelerationStructureGeometryKHR
-           zero
-           zero
-           zero
-
-
--- | VkAccelerationStructureBuildGeometryInfoKHR - Structure specifying the
--- geometry data used to build an acceleration structure
---
--- = Description
---
--- Only one of @pGeometries@ or @ppGeometries@ /can/ be a valid pointer,
--- the other /must/ be @NULL@. Each element of the non-@NULL@ array
--- describes the data used to build each acceleration structure geometry.
---
--- The index of each element of the @pGeometries@ or @ppGeometries@ members
--- of 'AccelerationStructureBuildGeometryInfoKHR' is used as the /geometry
--- index/ during ray traversal. The geometry index is available in ray
--- shaders via the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-raygeometryindex RayGeometryIndexKHR built-in>,
--- and is
--- <https://registry.khronos.org/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.
---
--- Setting 'BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV' in @flags@
--- indicates that this build is a motion top level acceleration structure.
--- A motion top level uses instances of format
--- 'Vulkan.Extensions.VK_NV_ray_tracing_motion_blur.AccelerationStructureMotionInstanceNV'
--- if 'AccelerationStructureGeometryInstancesDataKHR'::@arrayOfPointers@ is
--- 'Vulkan.Core10.FundamentalTypes.FALSE'.
---
--- If 'AccelerationStructureGeometryInstancesDataKHR'::@arrayOfPointers@ is
--- 'Vulkan.Core10.FundamentalTypes.TRUE', the pointer for each element of
--- the array of instance pointers consists of 4 bits of
--- 'Vulkan.Extensions.VK_NV_ray_tracing_motion_blur.AccelerationStructureMotionInstanceTypeNV'
--- in the low 4 bits of the pointer identifying the type of structure at
--- the pointer. The device address accessed is the value in the array with
--- the low 4 bits set to zero. The structure at the pointer is one of
--- 'AccelerationStructureInstanceKHR',
--- 'Vulkan.Extensions.VK_NV_ray_tracing_motion_blur.AccelerationStructureMatrixMotionInstanceNV'
--- or
--- 'Vulkan.Extensions.VK_NV_ray_tracing_motion_blur.AccelerationStructureSRTMotionInstanceNV',
--- depending on the type value encoded in the low 4 bits.
---
--- A top level acceleration structure with either motion instances or
--- vertex motion in its instances /must/ set
--- 'BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV' in @flags@.
---
--- Members @srcAccelerationStructure@ and @dstAccelerationStructure@ /may/
--- be the same or different for an update operation (when @mode@ is
--- 'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR'). If they are the same,
--- the update happens in-place. Otherwise, the target acceleration
--- structure is updated and the source is not modified.
---
--- == Valid Usage
---
--- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-03654# @type@
---     /must/ not be 'ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR'
---
--- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-pGeometries-03788#
---     If @geometryCount@ is not @0@, exactly one of @pGeometries@ or
---     @ppGeometries@ /must/ be a valid pointer, the other /must/ be @NULL@
---
--- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-03789# If
---     @type@ is 'ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR', the
---     @geometryType@ member of elements of either @pGeometries@ or
---     @ppGeometries@ /must/ be 'GEOMETRY_TYPE_INSTANCES_KHR'
---
--- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-03790# If
---     @type@ is 'ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR',
---     @geometryCount@ /must/ be @1@
---
--- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-03791# If
---     @type@ is 'ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR' the
---     @geometryType@ member of elements of either @pGeometries@ or
---     @ppGeometries@ /must/ not be 'GEOMETRY_TYPE_INSTANCES_KHR'
---
--- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-03792# If
---     @type@ is 'ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR' then the
---     @geometryType@ member of each geometry in either @pGeometries@ or
---     @ppGeometries@ /must/ be the same
---
--- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-03793# If
---     @type@ is 'ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR' then
---     @geometryCount@ /must/ be less than or equal to
---     'PhysicalDeviceAccelerationStructurePropertiesKHR'::@maxGeometryCount@
---
--- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-03794# If
---     @type@ is 'ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR' and the
---     @geometryType@ member of either @pGeometries@ or @ppGeometries@ is
---     'GEOMETRY_TYPE_AABBS_KHR', the total number of AABBs in all
---     geometries /must/ be less than or equal to
---     'PhysicalDeviceAccelerationStructurePropertiesKHR'::@maxPrimitiveCount@
---
--- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-03795# If
---     @type@ is 'ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR' and the
---     @geometryType@ member of either @pGeometries@ or @ppGeometries@ is
---     'GEOMETRY_TYPE_TRIANGLES_KHR', the total number of triangles in all
---     geometries /must/ be less than or equal to
---     'PhysicalDeviceAccelerationStructurePropertiesKHR'::@maxPrimitiveCount@
---
--- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-flags-03796# If
---     @flags@ has the
---     'BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR' bit set,
---     then it /must/ not have the
---     'BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR' bit set
---
--- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-dstAccelerationStructure-04927#
---     If @dstAccelerationStructure@ was created with
---     'ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV' set in
---     'AccelerationStructureCreateInfoKHR'::@flags@,
---     'BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV' /must/ be set in
---     @flags@
---
--- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-flags-04928# If
---     'BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV' is set in @flags@,
---     @dstAccelerationStructure@ /must/ have been created with
---     'ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV' set in
---     'AccelerationStructureCreateInfoKHR'::@flags@
---
--- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-flags-04929# If
---     'BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV' is set in @flags@,
---     @type@ /must/ not be 'ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR'
---
--- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-flags-07334# If
---     @flags@ has the
---     'BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_EXT' bit
---     set then it /must/ not have the
---     'BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_EXT'
---     bit set
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-sType-sType#
---     @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR'
---
--- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-pNext-pNext#
---     @pNext@ /must/ be @NULL@
---
--- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-parameter#
---     @type@ /must/ be a valid 'AccelerationStructureTypeKHR' value
---
--- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-flags-parameter#
---     @flags@ /must/ be a valid combination of
---     'BuildAccelerationStructureFlagBitsKHR' values
---
--- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-pGeometries-parameter#
---     If @geometryCount@ is not @0@, and @pGeometries@ is not @NULL@,
---     @pGeometries@ /must/ be a valid pointer to an array of
---     @geometryCount@ valid 'AccelerationStructureGeometryKHR' structures
---
--- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-ppGeometries-parameter#
---     If @geometryCount@ is not @0@, and @ppGeometries@ is not @NULL@,
---     @ppGeometries@ /must/ be a valid pointer to an array of
---     @geometryCount@ valid pointers to valid
---     'AccelerationStructureGeometryKHR' structures
---
--- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-commonparent# Both
---     of @dstAccelerationStructure@, and @srcAccelerationStructure@ 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_acceleration_structure VK_KHR_acceleration_structure>,
--- 'AccelerationStructureGeometryKHR',
--- 'Vulkan.Extensions.Handles.AccelerationStructureKHR',
--- 'AccelerationStructureTypeKHR', 'BuildAccelerationStructureFlagsKHR',
--- 'BuildAccelerationStructureModeKHR', 'DeviceOrHostAddressKHR',
--- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'buildAccelerationStructuresKHR',
--- 'cmdBuildAccelerationStructuresIndirectKHR',
--- 'cmdBuildAccelerationStructuresKHR',
--- 'getAccelerationStructureBuildSizesKHR'
-data AccelerationStructureBuildGeometryInfoKHR = AccelerationStructureBuildGeometryInfoKHR
-  { -- | @type@ is a 'AccelerationStructureTypeKHR' value specifying the type of
-    -- acceleration structure being built.
-    type' :: AccelerationStructureTypeKHR
-  , -- | @flags@ is a bitmask of 'BuildAccelerationStructureFlagBitsKHR'
-    -- specifying additional parameters of the acceleration structure.
-    flags :: BuildAccelerationStructureFlagsKHR
-  , -- | @mode@ is a 'BuildAccelerationStructureModeKHR' value specifying the
-    -- type of operation to perform.
-    mode :: BuildAccelerationStructureModeKHR
-  , -- | @srcAccelerationStructure@ is a pointer to an existing acceleration
-    -- structure that is to be used to update the @dstAccelerationStructure@
-    -- acceleration structure when @mode@ is
-    -- 'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR'.
-    srcAccelerationStructure :: AccelerationStructureKHR
-  , -- | @dstAccelerationStructure@ is a pointer to the target acceleration
-    -- structure for the build.
-    dstAccelerationStructure :: AccelerationStructureKHR
-  , -- | @pGeometries@ is a pointer to an array of
-    -- 'AccelerationStructureGeometryKHR' structures.
-    geometries :: Vector AccelerationStructureGeometryKHR
-  , -- | @scratchData@ is the device or host address to memory that will be used
-    -- as scratch memory for the build.
-    scratchData :: DeviceOrHostAddressKHR
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (AccelerationStructureBuildGeometryInfoKHR)
-#endif
-deriving instance Show AccelerationStructureBuildGeometryInfoKHR
-
-instance ToCStruct AccelerationStructureBuildGeometryInfoKHR where
-  withCStruct x f = allocaBytes 80 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p AccelerationStructureBuildGeometryInfoKHR{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    lift $ poke ((p `plusPtr` 16 :: Ptr AccelerationStructureTypeKHR)) (type')
-    lift $ poke ((p `plusPtr` 20 :: Ptr BuildAccelerationStructureFlagsKHR)) (flags)
-    lift $ poke ((p `plusPtr` 24 :: Ptr BuildAccelerationStructureModeKHR)) (mode)
-    lift $ poke ((p `plusPtr` 32 :: Ptr AccelerationStructureKHR)) (srcAccelerationStructure)
-    lift $ poke ((p `plusPtr` 40 :: Ptr AccelerationStructureKHR)) (dstAccelerationStructure)
-    lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (geometries)) :: Word32))
-    pPGeometries' <- ContT $ allocaBytes @AccelerationStructureGeometryKHR ((Data.Vector.length (geometries)) * 96)
-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPGeometries' `plusPtr` (96 * (i)) :: Ptr AccelerationStructureGeometryKHR) (e) . ($ ())) (geometries)
-    lift $ poke ((p `plusPtr` 56 :: Ptr (Ptr AccelerationStructureGeometryKHR))) (pPGeometries')
-    lift $ poke ((p `plusPtr` 64 :: Ptr (Ptr (Ptr AccelerationStructureGeometryKHR)))) (nullPtr)
-    ContT $ pokeCStruct ((p `plusPtr` 72 :: Ptr DeviceOrHostAddressKHR)) (scratchData) . ($ ())
-    lift $ f
-  cStructSize = 80
-  cStructAlignment = 8
-  pokeZeroCStruct p f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    lift $ poke ((p `plusPtr` 16 :: Ptr AccelerationStructureTypeKHR)) (zero)
-    lift $ poke ((p `plusPtr` 24 :: Ptr BuildAccelerationStructureModeKHR)) (zero)
-    lift $ poke ((p `plusPtr` 64 :: Ptr (Ptr (Ptr AccelerationStructureGeometryKHR)))) (nullPtr)
-    ContT $ pokeCStruct ((p `plusPtr` 72 :: Ptr DeviceOrHostAddressKHR)) (zero) . ($ ())
-    lift $ f
-
-instance Zero AccelerationStructureBuildGeometryInfoKHR where
-  zero = AccelerationStructureBuildGeometryInfoKHR
-           zero
-           zero
-           zero
-           zero
-           zero
-           mempty
-           zero
-
-
--- | VkAccelerationStructureBuildRangeInfoKHR - Structure specifying build
--- offsets and counts for acceleration structure builds
---
--- = Description
---
--- The primitive count and primitive offset are interpreted differently
--- depending on the 'GeometryTypeKHR' used:
---
--- -   For geometries of type 'GEOMETRY_TYPE_TRIANGLES_KHR',
---     @primitiveCount@ is the number of triangles to be built, where each
---     triangle is treated as 3 vertices.
---
---     -   If the geometry uses indices, @primitiveCount@ × 3 indices are
---         consumed from
---         'AccelerationStructureGeometryTrianglesDataKHR'::@indexData@,
---         starting at an offset of @primitiveOffset@. The value of
---         @firstVertex@ is added to the index values before fetching
---         vertices.
---
---     -   If the geometry does not use indices, @primitiveCount@ × 3
---         vertices are consumed from
---         'AccelerationStructureGeometryTrianglesDataKHR'::@vertexData@,
---         starting at an offset of @primitiveOffset@ +
---         'AccelerationStructureGeometryTrianglesDataKHR'::@vertexStride@
---         × @firstVertex@.
---
---     -   If
---         'AccelerationStructureGeometryTrianglesDataKHR'::@transformData@
---         is not @NULL@, a single 'TransformMatrixKHR' structure is
---         consumed from
---         'AccelerationStructureGeometryTrianglesDataKHR'::@transformData@,
---         at an offset of @transformOffset@. This matrix describes a
---         transformation from the space in which the vertices for all
---         triangles in this geometry are described to the space in which
---         the acceleration structure is defined.
---
--- -   For geometries of type 'GEOMETRY_TYPE_AABBS_KHR', @primitiveCount@
---     is the number of axis-aligned bounding boxes. @primitiveCount@
---     'AabbPositionsKHR' structures are consumed from
---     'AccelerationStructureGeometryAabbsDataKHR'::@data@, starting at an
---     offset of @primitiveOffset@.
---
--- -   For geometries of type 'GEOMETRY_TYPE_INSTANCES_KHR',
---     @primitiveCount@ is the number of acceleration structures.
---     @primitiveCount@ 'AccelerationStructureInstanceKHR' or
---     'Vulkan.Extensions.VK_NV_ray_tracing_motion_blur.AccelerationStructureMotionInstanceNV'
---     structures are consumed from
---     'AccelerationStructureGeometryInstancesDataKHR'::@data@, starting at
---     an offset of @primitiveOffset@.
---
--- == Valid Usage
---
--- -   #VUID-VkAccelerationStructureBuildRangeInfoKHR-primitiveOffset-03656#
---     For geometries of type 'GEOMETRY_TYPE_TRIANGLES_KHR', if the
---     geometry uses indices, the offset @primitiveOffset@ from
---     'AccelerationStructureGeometryTrianglesDataKHR'::@indexData@ /must/
---     be a multiple of the element size of
---     'AccelerationStructureGeometryTrianglesDataKHR'::@indexType@
---
--- -   #VUID-VkAccelerationStructureBuildRangeInfoKHR-primitiveOffset-03657#
---     For geometries of type 'GEOMETRY_TYPE_TRIANGLES_KHR', if the
---     geometry does not use indices, the offset @primitiveOffset@ from
---     'AccelerationStructureGeometryTrianglesDataKHR'::@vertexData@ /must/
---     be a multiple of the component size of
---     'AccelerationStructureGeometryTrianglesDataKHR'::@vertexFormat@
---
--- -   #VUID-VkAccelerationStructureBuildRangeInfoKHR-transformOffset-03658#
---     For geometries of type 'GEOMETRY_TYPE_TRIANGLES_KHR', the offset
---     @transformOffset@ from
---     'AccelerationStructureGeometryTrianglesDataKHR'::@transformData@
---     /must/ be a multiple of 16
---
--- -   #VUID-VkAccelerationStructureBuildRangeInfoKHR-primitiveOffset-03659#
---     For geometries of type 'GEOMETRY_TYPE_AABBS_KHR', the offset
---     @primitiveOffset@ from
---     'AccelerationStructureGeometryAabbsDataKHR'::@data@ /must/ be a
---     multiple of 8
---
--- -   #VUID-VkAccelerationStructureBuildRangeInfoKHR-primitiveOffset-03660#
---     For geometries of type 'GEOMETRY_TYPE_INSTANCES_KHR', the offset
---     @primitiveOffset@ from
---     'AccelerationStructureGeometryInstancesDataKHR'::@data@ /must/ be a
---     multiple of 16
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
--- 'buildAccelerationStructuresKHR', 'cmdBuildAccelerationStructuresKHR'
-data AccelerationStructureBuildRangeInfoKHR = AccelerationStructureBuildRangeInfoKHR
-  { -- | @primitiveCount@ defines the number of primitives for a corresponding
-    -- acceleration structure geometry.
-    primitiveCount :: Word32
-  , -- | @primitiveOffset@ defines an offset in bytes into the memory where
-    -- primitive data is defined.
-    primitiveOffset :: Word32
-  , -- | @firstVertex@ is the index of the first vertex to build from for
-    -- triangle geometry.
-    firstVertex :: Word32
-  , -- | @transformOffset@ defines an offset in bytes into the memory where a
-    -- transform matrix is defined.
-    transformOffset :: Word32
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (AccelerationStructureBuildRangeInfoKHR)
-#endif
-deriving instance Show AccelerationStructureBuildRangeInfoKHR
-
-instance ToCStruct AccelerationStructureBuildRangeInfoKHR where
-  withCStruct x f = allocaBytes 16 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p AccelerationStructureBuildRangeInfoKHR{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr Word32)) (primitiveCount)
-    poke ((p `plusPtr` 4 :: Ptr Word32)) (primitiveOffset)
-    poke ((p `plusPtr` 8 :: Ptr Word32)) (firstVertex)
-    poke ((p `plusPtr` 12 :: Ptr Word32)) (transformOffset)
-    f
-  cStructSize = 16
-  cStructAlignment = 4
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr Word32)) (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 AccelerationStructureBuildRangeInfoKHR where
-  peekCStruct p = do
-    primitiveCount <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))
-    primitiveOffset <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))
-    firstVertex <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))
-    transformOffset <- peek @Word32 ((p `plusPtr` 12 :: Ptr Word32))
-    pure $ AccelerationStructureBuildRangeInfoKHR
-             primitiveCount primitiveOffset firstVertex transformOffset
-
-instance Storable AccelerationStructureBuildRangeInfoKHR where
-  sizeOf ~_ = 16
-  alignment ~_ = 4
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero AccelerationStructureBuildRangeInfoKHR where
-  zero = AccelerationStructureBuildRangeInfoKHR
-           zero
-           zero
-           zero
-           zero
-
-
--- | VkAccelerationStructureCreateInfoKHR - Structure specifying the
--- parameters of a newly created acceleration structure object
---
--- = Description
---
--- Applications /should/ avoid creating acceleration structures with
--- application-provided addresses and implementation-provided addresses in
--- the same process, to reduce the likelihood of
--- 'Vulkan.Extensions.VK_KHR_buffer_device_address.ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR'
--- errors.
---
--- The expected usage for this is that a trace capture\/replay tool will
--- add the
--- 'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT'
--- flag to all buffers that use
--- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT',
--- and will add
--- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT'
--- to all buffers used as storage for an acceleration structure where
--- @deviceAddress@ is not zero. This also means that the tool will need to
--- add
--- 'Vulkan.Core11.Enums.MemoryAllocateFlagBits.MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT'
--- to memory allocations to allow the flag to be set where the application
--- may not have otherwise required it. During capture the tool will save
--- the queried opaque device addresses in the trace. During replay, the
--- buffers will be created specifying the original address so any address
--- values stored in the trace data will remain valid.
---
--- Implementations are expected to separate such buffers in the GPU address
--- space so normal allocations will avoid using these addresses.
--- Apps\/tools should avoid mixing app-provided and implementation-provided
--- addresses for buffers created with
--- 'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT',
--- to avoid address space allocation conflicts.
---
--- Applications /should/ create an acceleration structure with a specific
--- 'AccelerationStructureTypeKHR' other than
--- 'ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR'.
---
--- 'ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR' is intended to be used by API
--- translation layers. This can be used at acceleration structure creation
--- time in cases where the actual acceleration structure type (top or
--- bottom) is not yet known. The actual acceleration structure type must be
--- specified as 'ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR' or
--- 'ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR' when the build is
--- performed.
---
--- If the acceleration structure will be the target of a build operation,
--- the required size for an acceleration structure /can/ be queried with
--- 'getAccelerationStructureBuildSizesKHR'. If the acceleration structure
--- is going to be the target of a compacting copy,
--- 'cmdWriteAccelerationStructuresPropertiesKHR' or
--- 'writeAccelerationStructuresPropertiesKHR' /can/ be used to obtain the
--- compacted size required.
---
--- If the acceleration structure will be the target of a build operation
--- with 'BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV' it /must/ include
--- 'ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV' in @createFlags@ and
--- include
--- 'Vulkan.Extensions.VK_NV_ray_tracing_motion_blur.AccelerationStructureMotionInfoNV'
--- as an extension structure in @pNext@ with the number of instances as
--- metadata for the object.
---
--- == Valid Usage
---
--- -   #VUID-VkAccelerationStructureCreateInfoKHR-deviceAddress-03612# If
---     @deviceAddress@ is not zero, @createFlags@ /must/ include
---     'ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR'
---
--- -   #VUID-VkAccelerationStructureCreateInfoKHR-deviceAddress-09488# If
---     @deviceAddress@ is not zero, it /must/ have been retrieved from an
---     identically created acceleration structure, except for @buffer@ and
---     @deviceAddress@
---
--- -   #VUID-VkAccelerationStructureCreateInfoKHR-deviceAddress-09489# If
---     @deviceAddress@ is not zero, @buffer@ /must/ have been created
---     identically to the @buffer@ used to create the acceleration
---     structure from which @deviceAddress@ was retrieved, except for
---     'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.BufferOpaqueCaptureAddressCreateInfo'::@opaqueCaptureAddress@
---
--- -   #VUID-VkAccelerationStructureCreateInfoKHR-deviceAddress-09490# If
---     @deviceAddress@ is not zero, @buffer@ /must/ have been created with
---     a
---     'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.BufferOpaqueCaptureAddressCreateInfo'::@opaqueCaptureAddress@
---     that was retrieved from
---     'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.getBufferOpaqueCaptureAddress'
---     for the @buffer@ that was used to create the acceleration structure
---     from which @deviceAddress@ was retrieved
---
--- -   #VUID-VkAccelerationStructureCreateInfoKHR-createFlags-03613# If
---     @createFlags@ includes
---     'ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR',
---     'PhysicalDeviceAccelerationStructureFeaturesKHR'::@accelerationStructureCaptureReplay@
---     /must/ be 'Vulkan.Core10.FundamentalTypes.TRUE'
---
--- -   #VUID-VkAccelerationStructureCreateInfoKHR-buffer-03614# @buffer@
---     /must/ have been created with a @usage@ value containing
---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR'
---
--- -   #VUID-VkAccelerationStructureCreateInfoKHR-buffer-03615# @buffer@
---     /must/ not have been created with
---     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_SPARSE_RESIDENCY_BIT'
---
--- -   #VUID-VkAccelerationStructureCreateInfoKHR-offset-03616# The sum of
---     @offset@ and @size@ /must/ be less than the size of @buffer@
---
--- -   #VUID-VkAccelerationStructureCreateInfoKHR-offset-03734# @offset@
---     /must/ be a multiple of @256@ bytes
---
--- -   #VUID-VkAccelerationStructureCreateInfoKHR-createFlags-04954# If
---     'ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV' is set in
---     @createFlags@ and @type@ is
---     'ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR', one member of the
---     @pNext@ chain /must/ be a pointer to a valid instance of
---     'Vulkan.Extensions.VK_NV_ray_tracing_motion_blur.AccelerationStructureMotionInfoNV'
---
--- -   #VUID-VkAccelerationStructureCreateInfoKHR-createFlags-04955# If any
---     geometry includes
---     'Vulkan.Extensions.VK_NV_ray_tracing_motion_blur.AccelerationStructureGeometryMotionTrianglesDataNV'
---     then @createFlags@ /must/ contain
---     'ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV'
---
--- -   #VUID-VkAccelerationStructureCreateInfoKHR-createFlags-08108# If
---     @createFlags@ includes
---     'ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT',
---     the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-descriptorBufferCaptureReplay descriptorBufferCaptureReplay>
---     feature /must/ be enabled
---
--- -   #VUID-VkAccelerationStructureCreateInfoKHR-pNext-08109# If the
---     @pNext@ chain includes a
---     'Vulkan.Extensions.VK_EXT_descriptor_buffer.OpaqueCaptureDescriptorDataCreateInfoEXT'
---     structure, @createFlags@ /must/ contain
---     'ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT'
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkAccelerationStructureCreateInfoKHR-sType-sType# @sType@
---     /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR'
---
--- -   #VUID-VkAccelerationStructureCreateInfoKHR-pNext-pNext# Each @pNext@
---     member of any structure (including this one) in the @pNext@ chain
---     /must/ be either @NULL@ or a pointer to a valid instance of
---     'Vulkan.Extensions.VK_NV_ray_tracing_motion_blur.AccelerationStructureMotionInfoNV'
---     or
---     'Vulkan.Extensions.VK_EXT_descriptor_buffer.OpaqueCaptureDescriptorDataCreateInfoEXT'
---
--- -   #VUID-VkAccelerationStructureCreateInfoKHR-sType-unique# The @sType@
---     value of each struct in the @pNext@ chain /must/ be unique
---
--- -   #VUID-VkAccelerationStructureCreateInfoKHR-createFlags-parameter#
---     @createFlags@ /must/ be a valid combination of
---     'AccelerationStructureCreateFlagBitsKHR' values
---
--- -   #VUID-VkAccelerationStructureCreateInfoKHR-buffer-parameter#
---     @buffer@ /must/ be a valid 'Vulkan.Core10.Handles.Buffer' handle
---
--- -   #VUID-VkAccelerationStructureCreateInfoKHR-type-parameter# @type@
---     /must/ be a valid 'AccelerationStructureTypeKHR' value
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
--- 'AccelerationStructureCreateFlagsKHR', 'AccelerationStructureTypeKHR',
--- 'Vulkan.Core10.Handles.Buffer',
--- 'Vulkan.Core10.FundamentalTypes.DeviceAddress',
--- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
--- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'createAccelerationStructureKHR'
-data AccelerationStructureCreateInfoKHR (es :: [Type]) = AccelerationStructureCreateInfoKHR
-  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
-    next :: Chain es
-  , -- | @createFlags@ is a bitmask of 'AccelerationStructureCreateFlagBitsKHR'
-    -- specifying additional creation parameters of the acceleration structure.
-    createFlags :: AccelerationStructureCreateFlagsKHR
-  , -- | @buffer@ is the buffer on which the acceleration structure will be
-    -- stored.
-    buffer :: Buffer
-  , -- | @offset@ is an offset in bytes from the base address of the buffer at
-    -- which the acceleration structure will be stored, and /must/ be a
-    -- multiple of @256@.
-    offset :: DeviceSize
-  , -- | @size@ is the size required for the acceleration structure.
-    size :: DeviceSize
-  , -- | @type@ is a 'AccelerationStructureTypeKHR' value specifying the type of
-    -- acceleration structure that will be created.
-    type' :: AccelerationStructureTypeKHR
-  , -- | @deviceAddress@ is the device address requested for the acceleration
-    -- structure if the
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-accelerationStructureCaptureReplay accelerationStructureCaptureReplay>
-    -- feature is being used. If @deviceAddress@ is zero, no specific address
-    -- is requested.
-    deviceAddress :: DeviceAddress
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (AccelerationStructureCreateInfoKHR (es :: [Type]))
-#endif
-deriving instance Show (Chain es) => Show (AccelerationStructureCreateInfoKHR es)
-
-instance Extensible AccelerationStructureCreateInfoKHR where
-  extensibleTypeName = "AccelerationStructureCreateInfoKHR"
-  setNext AccelerationStructureCreateInfoKHR{..} next' = AccelerationStructureCreateInfoKHR{next = next', ..}
-  getNext AccelerationStructureCreateInfoKHR{..} = next
-  extends :: forall e b proxy. Typeable e => proxy e -> (Extends AccelerationStructureCreateInfoKHR e => b) -> Maybe b
-  extends _ f
-    | Just Refl <- eqT @e @AccelerationStructureMotionInfoNV = Just f
-    | Just Refl <- eqT @e @OpaqueCaptureDescriptorDataCreateInfoEXT = Just f
-    | otherwise = Nothing
-
-instance ( Extendss AccelerationStructureCreateInfoKHR es
-         , PokeChain es ) => ToCStruct (AccelerationStructureCreateInfoKHR es) where
-  withCStruct x f = allocaBytes 64 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p AccelerationStructureCreateInfoKHR{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR)
-    pNext'' <- fmap castPtr . ContT $ withChain (next)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
-    lift $ poke ((p `plusPtr` 16 :: Ptr AccelerationStructureCreateFlagsKHR)) (createFlags)
-    lift $ poke ((p `plusPtr` 24 :: Ptr Buffer)) (buffer)
-    lift $ poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (offset)
-    lift $ poke ((p `plusPtr` 40 :: Ptr DeviceSize)) (size)
-    lift $ poke ((p `plusPtr` 48 :: Ptr AccelerationStructureTypeKHR)) (type')
-    lift $ poke ((p `plusPtr` 56 :: Ptr DeviceAddress)) (deviceAddress)
-    lift $ f
-  cStructSize = 64
-  cStructAlignment = 8
-  pokeZeroCStruct p f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR)
-    pNext' <- fmap castPtr . ContT $ withZeroChain @es
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
-    lift $ poke ((p `plusPtr` 24 :: Ptr Buffer)) (zero)
-    lift $ poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (zero)
-    lift $ poke ((p `plusPtr` 40 :: Ptr DeviceSize)) (zero)
-    lift $ poke ((p `plusPtr` 48 :: Ptr AccelerationStructureTypeKHR)) (zero)
-    lift $ f
-
-instance ( Extendss AccelerationStructureCreateInfoKHR es
-         , PeekChain es ) => FromCStruct (AccelerationStructureCreateInfoKHR es) where
-  peekCStruct p = do
-    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
-    next <- peekChain (castPtr pNext)
-    createFlags <- peek @AccelerationStructureCreateFlagsKHR ((p `plusPtr` 16 :: Ptr AccelerationStructureCreateFlagsKHR))
-    buffer <- peek @Buffer ((p `plusPtr` 24 :: Ptr Buffer))
-    offset <- peek @DeviceSize ((p `plusPtr` 32 :: Ptr DeviceSize))
-    size <- peek @DeviceSize ((p `plusPtr` 40 :: Ptr DeviceSize))
-    type' <- peek @AccelerationStructureTypeKHR ((p `plusPtr` 48 :: Ptr AccelerationStructureTypeKHR))
-    deviceAddress <- peek @DeviceAddress ((p `plusPtr` 56 :: Ptr DeviceAddress))
-    pure $ AccelerationStructureCreateInfoKHR
-             next createFlags buffer offset size type' deviceAddress
-
-instance es ~ '[] => Zero (AccelerationStructureCreateInfoKHR es) where
-  zero = AccelerationStructureCreateInfoKHR
-           ()
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-
-
--- | VkAabbPositionsKHR - Structure specifying two opposing corners of an
--- axis-aligned bounding box
---
--- == Valid Usage
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>
-data AabbPositionsKHR = AabbPositionsKHR
-  { -- | @minX@ is the x position of one opposing corner of a bounding box.
-    --
-    -- #VUID-VkAabbPositionsKHR-minX-03546# @minX@ /must/ be less than or equal
-    -- to @maxX@
-    minX :: Float
-  , -- | @minY@ is the y position of one opposing corner of a bounding box.
-    --
-    -- #VUID-VkAabbPositionsKHR-minY-03547# @minY@ /must/ be less than or equal
-    -- to @maxY@
-    minY :: Float
-  , -- | @minZ@ is the z position of one opposing corner of a bounding box.
-    --
-    -- #VUID-VkAabbPositionsKHR-minZ-03548# @minZ@ /must/ be less than or equal
-    -- to @maxZ@
-    minZ :: Float
-  , -- | @maxX@ is the x position of the other opposing corner of a bounding box.
-    maxX :: Float
-  , -- | @maxY@ is the y position of the other opposing corner of a bounding box.
-    maxY :: Float
-  , -- | @maxZ@ is the z position of the other opposing corner of a bounding box.
-    maxZ :: Float
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (AabbPositionsKHR)
-#endif
-deriving instance Show AabbPositionsKHR
-
-instance ToCStruct AabbPositionsKHR where
-  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p AabbPositionsKHR{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr CFloat)) (CFloat (minX))
-    poke ((p `plusPtr` 4 :: Ptr CFloat)) (CFloat (minY))
-    poke ((p `plusPtr` 8 :: Ptr CFloat)) (CFloat (minZ))
-    poke ((p `plusPtr` 12 :: Ptr CFloat)) (CFloat (maxX))
-    poke ((p `plusPtr` 16 :: Ptr CFloat)) (CFloat (maxY))
-    poke ((p `plusPtr` 20 :: Ptr CFloat)) (CFloat (maxZ))
-    f
-  cStructSize = 24
-  cStructAlignment = 4
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr CFloat)) (CFloat (zero))
-    poke ((p `plusPtr` 4 :: Ptr CFloat)) (CFloat (zero))
-    poke ((p `plusPtr` 8 :: Ptr CFloat)) (CFloat (zero))
-    poke ((p `plusPtr` 12 :: Ptr CFloat)) (CFloat (zero))
-    poke ((p `plusPtr` 16 :: Ptr CFloat)) (CFloat (zero))
-    poke ((p `plusPtr` 20 :: Ptr CFloat)) (CFloat (zero))
-    f
-
-instance FromCStruct AabbPositionsKHR where
-  peekCStruct p = do
-    minX <- peek @CFloat ((p `plusPtr` 0 :: Ptr CFloat))
-    minY <- peek @CFloat ((p `plusPtr` 4 :: Ptr CFloat))
-    minZ <- peek @CFloat ((p `plusPtr` 8 :: Ptr CFloat))
-    maxX <- peek @CFloat ((p `plusPtr` 12 :: Ptr CFloat))
-    maxY <- peek @CFloat ((p `plusPtr` 16 :: Ptr CFloat))
-    maxZ <- peek @CFloat ((p `plusPtr` 20 :: Ptr CFloat))
-    pure $ AabbPositionsKHR
-             (coerce @CFloat @Float minX)
-             (coerce @CFloat @Float minY)
-             (coerce @CFloat @Float minZ)
-             (coerce @CFloat @Float maxX)
-             (coerce @CFloat @Float maxY)
-             (coerce @CFloat @Float maxZ)
-
-instance Storable AabbPositionsKHR where
-  sizeOf ~_ = 24
-  alignment ~_ = 4
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero AabbPositionsKHR where
-  zero = AabbPositionsKHR
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-
-
--- | VkTransformMatrixKHR - Structure specifying a 3x4 affine transformation
--- matrix
---
--- == Valid Usage
---
--- -   #VUID-VkTransformMatrixKHR-matrix-03799# The first three columns of
---     @matrix@ /must/ define an invertible 3x3 matrix
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>,
--- 'AccelerationStructureInstanceKHR',
--- 'Vulkan.Extensions.VK_NV_ray_tracing_motion_blur.AccelerationStructureMatrixMotionInstanceNV'
-data TransformMatrixKHR = TransformMatrixKHR
-  { -- No documentation found for Nested "VkTransformMatrixKHR" "matrixRow0"
-    matrixRow0 :: (Float, Float, Float, Float)
-  , -- No documentation found for Nested "VkTransformMatrixKHR" "matrixRow1"
-    matrixRow1 :: (Float, Float, Float, Float)
-  , -- No documentation found for Nested "VkTransformMatrixKHR" "matrixRow2"
-    matrixRow2 :: (Float, Float, Float, Float)
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (TransformMatrixKHR)
-#endif
-deriving instance Show TransformMatrixKHR
-
-instance ToCStruct TransformMatrixKHR where
-  withCStruct x f = allocaBytes 48 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p TransformMatrixKHR{..} f = do
-    let pMatrixRow0' = lowerArrayPtr ((p `plusPtr` 0 :: Ptr (FixedArray 4 CFloat)))
-    case (matrixRow0) of
-      (e0, e1, e2, e3) -> do
-        poke (pMatrixRow0' :: Ptr CFloat) (CFloat (e0))
-        poke (pMatrixRow0' `plusPtr` 4 :: Ptr CFloat) (CFloat (e1))
-        poke (pMatrixRow0' `plusPtr` 8 :: Ptr CFloat) (CFloat (e2))
-        poke (pMatrixRow0' `plusPtr` 12 :: Ptr CFloat) (CFloat (e3))
-    let pMatrixRow1' = lowerArrayPtr ((p `plusPtr` 16 :: Ptr (FixedArray 4 CFloat)))
-    case (matrixRow1) of
-      (e0, e1, e2, e3) -> do
-        poke (pMatrixRow1' :: Ptr CFloat) (CFloat (e0))
-        poke (pMatrixRow1' `plusPtr` 4 :: Ptr CFloat) (CFloat (e1))
-        poke (pMatrixRow1' `plusPtr` 8 :: Ptr CFloat) (CFloat (e2))
-        poke (pMatrixRow1' `plusPtr` 12 :: Ptr CFloat) (CFloat (e3))
-    let pMatrixRow2' = lowerArrayPtr ((p `plusPtr` 32 :: Ptr (FixedArray 4 CFloat)))
-    case (matrixRow2) of
-      (e0, e1, e2, e3) -> do
-        poke (pMatrixRow2' :: Ptr CFloat) (CFloat (e0))
-        poke (pMatrixRow2' `plusPtr` 4 :: Ptr CFloat) (CFloat (e1))
-        poke (pMatrixRow2' `plusPtr` 8 :: Ptr CFloat) (CFloat (e2))
-        poke (pMatrixRow2' `plusPtr` 12 :: Ptr CFloat) (CFloat (e3))
-    f
-  cStructSize = 48
-  cStructAlignment = 4
-  pokeZeroCStruct p f = do
-    poke (p `plusPtr` 0) (CFloat 1)
-    poke (p `plusPtr` 20) (CFloat 1)
-    poke (p `plusPtr` 40) (CFloat 1)
-    f
-
-instance FromCStruct TransformMatrixKHR where
-  peekCStruct p = do
-    let pmatrixRow0 = lowerArrayPtr @CFloat ((p `plusPtr` 0 :: Ptr (FixedArray 4 CFloat)))
-    matrixRow00 <- peek @CFloat ((pmatrixRow0 `advancePtrBytes` 0 :: Ptr CFloat))
-    matrixRow01 <- peek @CFloat ((pmatrixRow0 `advancePtrBytes` 4 :: Ptr CFloat))
-    matrixRow02 <- peek @CFloat ((pmatrixRow0 `advancePtrBytes` 8 :: Ptr CFloat))
-    matrixRow03 <- peek @CFloat ((pmatrixRow0 `advancePtrBytes` 12 :: Ptr CFloat))
-    let pmatrixRow1 = lowerArrayPtr @CFloat ((p `plusPtr` 16 :: Ptr (FixedArray 4 CFloat)))
-    matrixRow10 <- peek @CFloat ((pmatrixRow1 `advancePtrBytes` 0 :: Ptr CFloat))
-    matrixRow11 <- peek @CFloat ((pmatrixRow1 `advancePtrBytes` 4 :: Ptr CFloat))
-    matrixRow12 <- peek @CFloat ((pmatrixRow1 `advancePtrBytes` 8 :: Ptr CFloat))
-    matrixRow13 <- peek @CFloat ((pmatrixRow1 `advancePtrBytes` 12 :: Ptr CFloat))
-    let pmatrixRow2 = lowerArrayPtr @CFloat ((p `plusPtr` 32 :: Ptr (FixedArray 4 CFloat)))
-    matrixRow20 <- peek @CFloat ((pmatrixRow2 `advancePtrBytes` 0 :: Ptr CFloat))
-    matrixRow21 <- peek @CFloat ((pmatrixRow2 `advancePtrBytes` 4 :: Ptr CFloat))
-    matrixRow22 <- peek @CFloat ((pmatrixRow2 `advancePtrBytes` 8 :: Ptr CFloat))
-    matrixRow23 <- peek @CFloat ((pmatrixRow2 `advancePtrBytes` 12 :: Ptr CFloat))
-    pure $ TransformMatrixKHR
-             (( (coerce @CFloat @Float matrixRow00)
-              , (coerce @CFloat @Float matrixRow01)
-              , (coerce @CFloat @Float matrixRow02)
-              , (coerce @CFloat @Float matrixRow03) ))
-             (( (coerce @CFloat @Float matrixRow10)
-              , (coerce @CFloat @Float matrixRow11)
-              , (coerce @CFloat @Float matrixRow12)
-              , (coerce @CFloat @Float matrixRow13) ))
-             (( (coerce @CFloat @Float matrixRow20)
-              , (coerce @CFloat @Float matrixRow21)
-              , (coerce @CFloat @Float matrixRow22)
-              , (coerce @CFloat @Float matrixRow23) ))
-
-instance Storable TransformMatrixKHR where
-  sizeOf ~_ = 48
-  alignment ~_ = 4
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
--- | The Identity Matrix
-instance Zero TransformMatrixKHR where
- zero = TransformMatrixKHR
-          (1,0,0,0)
-          (0,1,0,0)
-          (0,0,1,0)
-
-
--- | VkAccelerationStructureInstanceKHR - Structure specifying a single
--- acceleration structure instance for building into an acceleration
--- structure geometry
---
--- = Description
---
--- The C language specification does not define the ordering of bit-fields,
--- but in practice, this struct produces the correct layout with existing
--- compilers. The intended bit pattern is for the following:
---
--- If a compiler produces code that diverges from that pattern,
--- applications /must/ employ another method to set values according to the
--- correct bit pattern.
---
--- == Valid Usage (Implicit)
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>,
--- 'Vulkan.Extensions.VK_NV_ray_tracing_motion_blur.AccelerationStructureMotionInstanceDataNV',
--- 'GeometryInstanceFlagsKHR', 'TransformMatrixKHR'
-data AccelerationStructureInstanceKHR = AccelerationStructureInstanceKHR
-  { -- | @transform@ is a 'TransformMatrixKHR' structure describing a
-    -- transformation to be applied to the acceleration structure.
-    transform :: TransformMatrixKHR
-  , -- | @instanceCustomIndex@ is a 24-bit application-specified index value
-    -- accessible to ray shaders in the @InstanceCustomIndexKHR@ built-in.
-    --
-    -- @instanceCustomIndex@ and @mask@ occupy the same memory as if a single
-    -- @uint32_t@ was specified in their place
-    --
-    -- -   @instanceCustomIndex@ occupies the 24 least significant bits of that
-    --     memory
-    --
-    -- -   @mask@ occupies the 8 most significant bits of that memory
-    instanceCustomIndex :: Word32
-  , -- | @mask@ is an 8-bit visibility mask for the geometry. The instance /may/
-    -- only be hit if @Cull Mask & instance.mask != 0@
-    mask :: Word32
-  , -- | @instanceShaderBindingTableRecordOffset@ is a 24-bit offset used in
-    -- calculating the hit shader binding table index.
-    --
-    -- @instanceShaderBindingTableRecordOffset@ and @flags@ occupy the same
-    -- memory as if a single @uint32_t@ was specified in their place
-    --
-    -- -   @instanceShaderBindingTableRecordOffset@ occupies the 24 least
-    --     significant bits of that memory
-    --
-    -- -   @flags@ occupies the 8 most significant bits of that memory
-    instanceShaderBindingTableRecordOffset :: Word32
-  , -- | @flags@ is an 8-bit mask of 'GeometryInstanceFlagBitsKHR' values to
-    -- apply to this instance.
-    --
-    -- #VUID-VkAccelerationStructureInstanceKHR-flags-parameter# @flags@ /must/
-    -- be a valid combination of 'GeometryInstanceFlagBitsKHR' values
-    flags :: GeometryInstanceFlagsKHR
-  , -- | @accelerationStructureReference@ is either :
-    --
-    -- -   a device address containing the value obtained from
-    --     'getAccelerationStructureDeviceAddressKHR' or
-    --     'Vulkan.Extensions.VK_NV_ray_tracing.getAccelerationStructureHandleNV'
-    --     (used by device operations which reference acceleration structures)
-    --     or,
-    --
-    -- -   a 'Vulkan.Extensions.Handles.AccelerationStructureKHR' object (used
-    --     by host operations which reference acceleration structures).
-    accelerationStructureReference :: Word64
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (AccelerationStructureInstanceKHR)
-#endif
-deriving instance Show AccelerationStructureInstanceKHR
-
-instance ToCStruct AccelerationStructureInstanceKHR where
-  withCStruct x f = allocaBytes 64 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p AccelerationStructureInstanceKHR{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr TransformMatrixKHR)) (transform)
-    poke ((p `plusPtr` 48 :: Ptr Word32)) (((coerce @_ @Word32 (mask)) `shiftL` 24) .|. (instanceCustomIndex))
-    poke ((p `plusPtr` 52 :: Ptr Word32)) (((coerce @_ @Word32 (flags)) `shiftL` 24) .|. (instanceShaderBindingTableRecordOffset))
-    poke ((p `plusPtr` 56 :: Ptr Word64)) (accelerationStructureReference)
-    f
-  cStructSize = 64
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr TransformMatrixKHR)) (zero)
-    poke ((p `plusPtr` 56 :: Ptr Word64)) (zero)
-    f
-
-instance FromCStruct AccelerationStructureInstanceKHR where
-  peekCStruct p = do
-    transform <- peekCStruct @TransformMatrixKHR ((p `plusPtr` 0 :: Ptr TransformMatrixKHR))
-    instanceCustomIndex <- peek @Word32 ((p `plusPtr` 48 :: Ptr Word32))
-    let instanceCustomIndex' = ((instanceCustomIndex .&. coerce @Word32 0xffffff))
-    mask <- peek @Word32 ((p `plusPtr` 48 :: Ptr Word32))
-    let mask' = ((((mask `shiftR` 24)) .&. coerce @Word32 0xff))
-    instanceShaderBindingTableRecordOffset <- peek @Word32 ((p `plusPtr` 52 :: Ptr Word32))
-    let instanceShaderBindingTableRecordOffset' = ((instanceShaderBindingTableRecordOffset .&. coerce @Word32 0xffffff))
-    flags <- peek @GeometryInstanceFlagsKHR ((p `plusPtr` 52 :: Ptr GeometryInstanceFlagsKHR))
-    let flags' = ((((flags `shiftR` 24)) .&. coerce @Word32 0xff))
-    accelerationStructureReference <- peek @Word64 ((p `plusPtr` 56 :: Ptr Word64))
-    pure $ AccelerationStructureInstanceKHR
-             transform
-             instanceCustomIndex'
-             mask'
-             instanceShaderBindingTableRecordOffset'
-             flags'
-             accelerationStructureReference
-
-instance Storable AccelerationStructureInstanceKHR where
-  sizeOf ~_ = 64
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero AccelerationStructureInstanceKHR where
-  zero = AccelerationStructureInstanceKHR
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-
-
--- | VkAccelerationStructureDeviceAddressInfoKHR - Structure specifying the
--- acceleration structure to query an address for
---
--- == Valid Usage (Implicit)
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
--- 'Vulkan.Extensions.Handles.AccelerationStructureKHR',
--- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'getAccelerationStructureDeviceAddressKHR'
-data AccelerationStructureDeviceAddressInfoKHR = AccelerationStructureDeviceAddressInfoKHR
-  { -- | @accelerationStructure@ specifies the acceleration structure whose
-    -- address is being queried.
-    --
-    -- #VUID-VkAccelerationStructureDeviceAddressInfoKHR-accelerationStructure-parameter#
-    -- @accelerationStructure@ /must/ be a valid
-    -- 'Vulkan.Extensions.Handles.AccelerationStructureKHR' handle
-    accelerationStructure :: AccelerationStructureKHR }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (AccelerationStructureDeviceAddressInfoKHR)
-#endif
-deriving instance Show AccelerationStructureDeviceAddressInfoKHR
-
-instance ToCStruct AccelerationStructureDeviceAddressInfoKHR where
-  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p AccelerationStructureDeviceAddressInfoKHR{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr AccelerationStructureKHR)) (accelerationStructure)
-    f
-  cStructSize = 24
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr AccelerationStructureKHR)) (zero)
-    f
-
-instance FromCStruct AccelerationStructureDeviceAddressInfoKHR where
-  peekCStruct p = do
-    accelerationStructure <- peek @AccelerationStructureKHR ((p `plusPtr` 16 :: Ptr AccelerationStructureKHR))
-    pure $ AccelerationStructureDeviceAddressInfoKHR
-             accelerationStructure
-
-instance Storable AccelerationStructureDeviceAddressInfoKHR where
-  sizeOf ~_ = 24
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero AccelerationStructureDeviceAddressInfoKHR where
-  zero = AccelerationStructureDeviceAddressInfoKHR
-           zero
-
-
--- | VkAccelerationStructureVersionInfoKHR - Acceleration structure version
--- information
---
--- = Description
---
--- @pVersionData@ is a /pointer/ to an array of
--- 2×'Vulkan.Core10.APIConstants.UUID_SIZE' @uint8_t@ values instead of two
--- 'Vulkan.Core10.APIConstants.UUID_SIZE' arrays as the expected use case
--- for this member is to be pointed at the header of a previously
--- serialized acceleration structure (via
--- 'cmdCopyAccelerationStructureToMemoryKHR' or
--- 'copyAccelerationStructureToMemoryKHR') that is loaded in memory. Using
--- arrays would necessitate extra memory copies of the UUIDs.
---
--- == Valid Usage (Implicit)
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
--- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'getDeviceAccelerationStructureCompatibilityKHR'
-data AccelerationStructureVersionInfoKHR = AccelerationStructureVersionInfoKHR
-  { -- | @pVersionData@ is a pointer to the version header of an acceleration
-    -- structure as defined in 'cmdCopyAccelerationStructureToMemoryKHR'
-    --
-    -- #VUID-VkAccelerationStructureVersionInfoKHR-pVersionData-parameter#
-    -- @pVersionData@ /must/ be a valid pointer to an array of
-    -- \(2 \times \mathtt{VK\_UUID\_SIZE}\) @uint8_t@ values
-    versionData :: ByteString }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (AccelerationStructureVersionInfoKHR)
-#endif
-deriving instance Show AccelerationStructureVersionInfoKHR
-
-instance ToCStruct AccelerationStructureVersionInfoKHR where
-  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p AccelerationStructureVersionInfoKHR{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    lift $ unless (Data.ByteString.length (versionData) == 2 * UUID_SIZE) $
-      throwIO $ IOError Nothing InvalidArgument "" "VkAccelerationStructureVersionInfoKHR::versionData must be 2*VK_UUID_SIZE bytes" Nothing Nothing
-    versionData' <- fmap (castPtr @CChar @Word8) . ContT $ unsafeUseAsCString (versionData)
-    lift $ poke ((p `plusPtr` 16 :: Ptr (Ptr Word8))) versionData'
-    lift $ f
-  cStructSize = 24
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    f
-
-instance FromCStruct AccelerationStructureVersionInfoKHR where
-  peekCStruct p = do
-    versionData <- peek @(Ptr Word8) ((p `plusPtr` 16 :: Ptr (Ptr Word8)))
-    versionData' <- packCStringLen ( castPtr @Word8 @CChar versionData
-                                   , 2 * UUID_SIZE )
-    pure $ AccelerationStructureVersionInfoKHR
-             versionData'
-
-instance Zero AccelerationStructureVersionInfoKHR where
-  zero = AccelerationStructureVersionInfoKHR
-           mempty
-
-
--- | VkCopyAccelerationStructureInfoKHR - Parameters for copying an
--- acceleration structure
---
--- == Valid Usage
---
--- -   #VUID-VkCopyAccelerationStructureInfoKHR-mode-03410# @mode@ /must/
---     be 'COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR' or
---     'COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR'
---
--- -   #VUID-VkCopyAccelerationStructureInfoKHR-src-04963# The source
---     acceleration structure @src@ /must/ have been constructed prior to
---     the execution of this command
---
--- -   #VUID-VkCopyAccelerationStructureInfoKHR-src-03411# If @mode@ is
---     'COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR', @src@ /must/ have
---     been constructed with
---     'BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR' in the build
---
--- -   #VUID-VkCopyAccelerationStructureInfoKHR-buffer-03718# The @buffer@
---     used to create @src@ /must/ be bound to device memory
---
--- -   #VUID-VkCopyAccelerationStructureInfoKHR-buffer-03719# The @buffer@
---     used to create @dst@ /must/ be bound to device memory
---
--- -   #VUID-VkCopyAccelerationStructureInfoKHR-dst-07791# The range of
---     memory backing @dst@ that is accessed by this command /must/ not
---     overlap the memory backing @src@ that is accessed by this command
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkCopyAccelerationStructureInfoKHR-sType-sType# @sType@ /must/
---     be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR'
---
--- -   #VUID-VkCopyAccelerationStructureInfoKHR-pNext-pNext# @pNext@ /must/
---     be @NULL@
---
--- -   #VUID-VkCopyAccelerationStructureInfoKHR-src-parameter# @src@ /must/
---     be a valid 'Vulkan.Extensions.Handles.AccelerationStructureKHR'
---     handle
---
--- -   #VUID-VkCopyAccelerationStructureInfoKHR-dst-parameter# @dst@ /must/
---     be a valid 'Vulkan.Extensions.Handles.AccelerationStructureKHR'
---     handle
---
--- -   #VUID-VkCopyAccelerationStructureInfoKHR-mode-parameter# @mode@
---     /must/ be a valid 'CopyAccelerationStructureModeKHR' value
---
--- -   #VUID-VkCopyAccelerationStructureInfoKHR-commonparent# Both of
---     @dst@, and @src@ /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_acceleration_structure VK_KHR_acceleration_structure>,
--- 'Vulkan.Extensions.Handles.AccelerationStructureKHR',
--- 'CopyAccelerationStructureModeKHR',
--- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'cmdCopyAccelerationStructureKHR', 'copyAccelerationStructureKHR'
-data CopyAccelerationStructureInfoKHR = CopyAccelerationStructureInfoKHR
-  { -- | @src@ is the source acceleration structure for the copy.
-    src :: AccelerationStructureKHR
-  , -- | @dst@ is the target acceleration structure for the copy.
-    dst :: AccelerationStructureKHR
-  , -- | @mode@ is a 'CopyAccelerationStructureModeKHR' value specifying
-    -- additional operations to perform during the copy.
-    mode :: CopyAccelerationStructureModeKHR
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (CopyAccelerationStructureInfoKHR)
-#endif
-deriving instance Show CopyAccelerationStructureInfoKHR
-
-instance ToCStruct CopyAccelerationStructureInfoKHR where
-  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p CopyAccelerationStructureInfoKHR{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr AccelerationStructureKHR)) (src)
-    poke ((p `plusPtr` 24 :: Ptr AccelerationStructureKHR)) (dst)
-    poke ((p `plusPtr` 32 :: Ptr CopyAccelerationStructureModeKHR)) (mode)
-    f
-  cStructSize = 40
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr AccelerationStructureKHR)) (zero)
-    poke ((p `plusPtr` 24 :: Ptr AccelerationStructureKHR)) (zero)
-    poke ((p `plusPtr` 32 :: Ptr CopyAccelerationStructureModeKHR)) (zero)
-    f
-
-instance FromCStruct CopyAccelerationStructureInfoKHR where
-  peekCStruct p = do
-    src <- peek @AccelerationStructureKHR ((p `plusPtr` 16 :: Ptr AccelerationStructureKHR))
-    dst <- peek @AccelerationStructureKHR ((p `plusPtr` 24 :: Ptr AccelerationStructureKHR))
-    mode <- peek @CopyAccelerationStructureModeKHR ((p `plusPtr` 32 :: Ptr CopyAccelerationStructureModeKHR))
-    pure $ CopyAccelerationStructureInfoKHR
-             src dst mode
-
-instance Storable CopyAccelerationStructureInfoKHR where
-  sizeOf ~_ = 40
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero CopyAccelerationStructureInfoKHR where
-  zero = CopyAccelerationStructureInfoKHR
-           zero
-           zero
-           zero
-
-
--- | VkCopyAccelerationStructureToMemoryInfoKHR - Parameters for serializing
--- an acceleration structure
---
--- == Valid Usage
---
--- -   #VUID-VkCopyAccelerationStructureToMemoryInfoKHR-src-04959# The
---     source acceleration structure @src@ /must/ have been constructed
---     prior to the execution of this command
---
--- -   #VUID-VkCopyAccelerationStructureToMemoryInfoKHR-dst-03561# The
---     memory pointed to by @dst@ /must/ be at least as large as the
---     serialization size of @src@, as reported by
---     'writeAccelerationStructuresPropertiesKHR' or
---     'cmdWriteAccelerationStructuresPropertiesKHR' with a query type of
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR'
---
--- -   #VUID-VkCopyAccelerationStructureToMemoryInfoKHR-mode-03412# @mode@
---     /must/ be 'COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR'
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkCopyAccelerationStructureToMemoryInfoKHR-sType-sType#
---     @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR'
---
--- -   #VUID-VkCopyAccelerationStructureToMemoryInfoKHR-pNext-pNext#
---     @pNext@ /must/ be @NULL@
---
--- -   #VUID-VkCopyAccelerationStructureToMemoryInfoKHR-src-parameter#
---     @src@ /must/ be a valid
---     'Vulkan.Extensions.Handles.AccelerationStructureKHR' handle
---
--- -   #VUID-VkCopyAccelerationStructureToMemoryInfoKHR-mode-parameter#
---     @mode@ /must/ be a valid 'CopyAccelerationStructureModeKHR' value
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
--- 'Vulkan.Extensions.Handles.AccelerationStructureKHR',
--- 'CopyAccelerationStructureModeKHR', 'DeviceOrHostAddressKHR',
--- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'cmdCopyAccelerationStructureToMemoryKHR',
--- 'copyAccelerationStructureToMemoryKHR'
-data CopyAccelerationStructureToMemoryInfoKHR = CopyAccelerationStructureToMemoryInfoKHR
-  { -- | @src@ is the source acceleration structure for the copy
-    src :: AccelerationStructureKHR
-  , -- | @dst@ is the device or host address to memory which is the target for
-    -- the copy
-    dst :: DeviceOrHostAddressKHR
-  , -- | @mode@ is a 'CopyAccelerationStructureModeKHR' value specifying
-    -- additional operations to perform during the copy.
-    mode :: CopyAccelerationStructureModeKHR
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (CopyAccelerationStructureToMemoryInfoKHR)
-#endif
-deriving instance Show CopyAccelerationStructureToMemoryInfoKHR
-
-instance ToCStruct CopyAccelerationStructureToMemoryInfoKHR where
-  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p CopyAccelerationStructureToMemoryInfoKHR{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    lift $ poke ((p `plusPtr` 16 :: Ptr AccelerationStructureKHR)) (src)
-    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr DeviceOrHostAddressKHR)) (dst) . ($ ())
-    lift $ poke ((p `plusPtr` 32 :: Ptr CopyAccelerationStructureModeKHR)) (mode)
-    lift $ f
-  cStructSize = 40
-  cStructAlignment = 8
-  pokeZeroCStruct p f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    lift $ poke ((p `plusPtr` 16 :: Ptr AccelerationStructureKHR)) (zero)
-    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr DeviceOrHostAddressKHR)) (zero) . ($ ())
-    lift $ poke ((p `plusPtr` 32 :: Ptr CopyAccelerationStructureModeKHR)) (zero)
-    lift $ f
-
-instance Zero CopyAccelerationStructureToMemoryInfoKHR where
-  zero = CopyAccelerationStructureToMemoryInfoKHR
-           zero
-           zero
-           zero
-
-
--- | VkCopyMemoryToAccelerationStructureInfoKHR - Parameters for
--- deserializing an acceleration structure
---
--- == Valid Usage
---
--- -   #VUID-VkCopyMemoryToAccelerationStructureInfoKHR-src-04960# The
---     source memory pointed to by @src@ /must/ contain data previously
---     serialized using 'cmdCopyAccelerationStructureToMemoryKHR',
---     potentially modified to relocate acceleration structure references
---     as described in that command
---
--- -   #VUID-VkCopyMemoryToAccelerationStructureInfoKHR-mode-03413# @mode@
---     /must/ be 'COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR'
---
--- -   #VUID-VkCopyMemoryToAccelerationStructureInfoKHR-pInfo-03414# The
---     data in @src@ /must/ have a format compatible with the destination
---     physical device as returned by
---     'getDeviceAccelerationStructureCompatibilityKHR'
---
--- -   #VUID-VkCopyMemoryToAccelerationStructureInfoKHR-dst-03746# @dst@
---     /must/ have been created with a @size@ greater than or equal to that
---     used to serialize the data in @src@
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkCopyMemoryToAccelerationStructureInfoKHR-sType-sType#
---     @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR'
---
--- -   #VUID-VkCopyMemoryToAccelerationStructureInfoKHR-pNext-pNext#
---     @pNext@ /must/ be @NULL@
---
--- -   #VUID-VkCopyMemoryToAccelerationStructureInfoKHR-dst-parameter#
---     @dst@ /must/ be a valid
---     'Vulkan.Extensions.Handles.AccelerationStructureKHR' handle
---
--- -   #VUID-VkCopyMemoryToAccelerationStructureInfoKHR-mode-parameter#
---     @mode@ /must/ be a valid 'CopyAccelerationStructureModeKHR' value
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
--- 'Vulkan.Extensions.Handles.AccelerationStructureKHR',
--- 'CopyAccelerationStructureModeKHR', 'DeviceOrHostAddressConstKHR',
--- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'cmdCopyMemoryToAccelerationStructureKHR',
--- 'copyMemoryToAccelerationStructureKHR'
-data CopyMemoryToAccelerationStructureInfoKHR = CopyMemoryToAccelerationStructureInfoKHR
-  { -- | @src@ is the device or host address to memory containing the source data
-    -- for the copy.
-    src :: DeviceOrHostAddressConstKHR
-  , -- | @dst@ is the target acceleration structure for the copy.
-    dst :: AccelerationStructureKHR
-  , -- | @mode@ is a 'CopyAccelerationStructureModeKHR' value specifying
-    -- additional operations to perform during the copy.
-    mode :: CopyAccelerationStructureModeKHR
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (CopyMemoryToAccelerationStructureInfoKHR)
-#endif
-deriving instance Show CopyMemoryToAccelerationStructureInfoKHR
-
-instance ToCStruct CopyMemoryToAccelerationStructureInfoKHR where
-  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p CopyMemoryToAccelerationStructureInfoKHR{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr DeviceOrHostAddressConstKHR)) (src) . ($ ())
-    lift $ poke ((p `plusPtr` 24 :: Ptr AccelerationStructureKHR)) (dst)
-    lift $ poke ((p `plusPtr` 32 :: Ptr CopyAccelerationStructureModeKHR)) (mode)
-    lift $ f
-  cStructSize = 40
-  cStructAlignment = 8
-  pokeZeroCStruct p f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr DeviceOrHostAddressConstKHR)) (zero) . ($ ())
-    lift $ poke ((p `plusPtr` 24 :: Ptr AccelerationStructureKHR)) (zero)
-    lift $ poke ((p `plusPtr` 32 :: Ptr CopyAccelerationStructureModeKHR)) (zero)
-    lift $ f
-
-instance Zero CopyMemoryToAccelerationStructureInfoKHR where
-  zero = CopyMemoryToAccelerationStructureInfoKHR
-           zero
-           zero
-           zero
-
-
--- | VkAccelerationStructureBuildSizesInfoKHR - Structure specifying build
--- sizes for an acceleration structure
---
--- == Valid Usage (Implicit)
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
--- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
--- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'getAccelerationStructureBuildSizesKHR'
-data AccelerationStructureBuildSizesInfoKHR = AccelerationStructureBuildSizesInfoKHR
-  { -- | @accelerationStructureSize@ is the size in bytes required in a
-    -- 'Vulkan.Extensions.Handles.AccelerationStructureKHR' for a build or
-    -- update operation.
-    accelerationStructureSize :: DeviceSize
-  , -- | @updateScratchSize@ is the size in bytes required in a scratch buffer
-    -- for an update operation.
-    updateScratchSize :: DeviceSize
-  , -- | @buildScratchSize@ is the size in bytes required in a scratch buffer for
-    -- a build operation.
-    buildScratchSize :: DeviceSize
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (AccelerationStructureBuildSizesInfoKHR)
-#endif
-deriving instance Show AccelerationStructureBuildSizesInfoKHR
-
-instance ToCStruct AccelerationStructureBuildSizesInfoKHR where
-  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p AccelerationStructureBuildSizesInfoKHR{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (accelerationStructureSize)
-    poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (updateScratchSize)
-    poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (buildScratchSize)
-    f
-  cStructSize = 40
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_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 AccelerationStructureBuildSizesInfoKHR where
-  peekCStruct p = do
-    accelerationStructureSize <- peek @DeviceSize ((p `plusPtr` 16 :: Ptr DeviceSize))
-    updateScratchSize <- peek @DeviceSize ((p `plusPtr` 24 :: Ptr DeviceSize))
-    buildScratchSize <- peek @DeviceSize ((p `plusPtr` 32 :: Ptr DeviceSize))
-    pure $ AccelerationStructureBuildSizesInfoKHR
-             accelerationStructureSize updateScratchSize buildScratchSize
-
-instance Storable AccelerationStructureBuildSizesInfoKHR where
-  sizeOf ~_ = 40
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero AccelerationStructureBuildSizesInfoKHR where
-  zero = AccelerationStructureBuildSizesInfoKHR
-           zero
-           zero
-           zero
-
-
-data DeviceOrHostAddressKHR
-  = DeviceAddress DeviceAddress
-  | HostAddress (Ptr ())
-  deriving (Show)
-
-instance ToCStruct DeviceOrHostAddressKHR where
-  withCStruct x f = allocaBytes 8 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct :: Ptr DeviceOrHostAddressKHR -> DeviceOrHostAddressKHR -> IO a -> IO a
-  pokeCStruct p = (. const) . runContT .  \case
-    DeviceAddress v -> lift $ poke (castPtr @_ @DeviceAddress p) (v)
-    HostAddress v -> lift $ poke (castPtr @_ @(Ptr ()) p) (v)
-  pokeZeroCStruct :: Ptr DeviceOrHostAddressKHR -> IO b -> IO b
-  pokeZeroCStruct _ f = f
-  cStructSize = 8
-  cStructAlignment = 8
-
-instance Zero DeviceOrHostAddressKHR where
-  zero = DeviceAddress zero
-
-
-data DeviceOrHostAddressConstKHR
-  = DeviceAddressConst DeviceAddress
-  | HostAddressConst (Ptr ())
-  deriving (Show)
-
-instance ToCStruct DeviceOrHostAddressConstKHR where
-  withCStruct x f = allocaBytes 8 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct :: Ptr DeviceOrHostAddressConstKHR -> DeviceOrHostAddressConstKHR -> IO a -> IO a
-  pokeCStruct p = (. const) . runContT .  \case
-    DeviceAddressConst v -> lift $ poke (castPtr @_ @DeviceAddress p) (v)
-    HostAddressConst v -> lift $ poke (castPtr @_ @(Ptr ()) p) (v)
-  pokeZeroCStruct :: Ptr DeviceOrHostAddressConstKHR -> IO b -> IO b
-  pokeZeroCStruct _ f = f
-  cStructSize = 8
-  cStructAlignment = 8
-
-instance Zero DeviceOrHostAddressConstKHR where
-  zero = DeviceAddressConst zero
-
-
-data AccelerationStructureGeometryDataKHR
-  = Triangles (SomeStruct AccelerationStructureGeometryTrianglesDataKHR)
-  | Aabbs AccelerationStructureGeometryAabbsDataKHR
-  | Instances AccelerationStructureGeometryInstancesDataKHR
-  deriving (Show)
-
-instance ToCStruct AccelerationStructureGeometryDataKHR where
-  withCStruct x f = allocaBytes 64 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct :: Ptr AccelerationStructureGeometryDataKHR -> AccelerationStructureGeometryDataKHR -> IO a -> IO a
-  pokeCStruct p = (. const) . runContT .  \case
-    Triangles v -> ContT $ pokeSomeCStruct (forgetExtensions (castPtr @_ @(AccelerationStructureGeometryTrianglesDataKHR _) p)) (v) . ($ ())
-    Aabbs v -> ContT $ pokeCStruct (castPtr @_ @AccelerationStructureGeometryAabbsDataKHR p) (v) . ($ ())
-    Instances v -> ContT $ pokeCStruct (castPtr @_ @AccelerationStructureGeometryInstancesDataKHR p) (v) . ($ ())
-  pokeZeroCStruct :: Ptr AccelerationStructureGeometryDataKHR -> IO b -> IO b
-  pokeZeroCStruct _ f = f
-  cStructSize = 64
-  cStructAlignment = 8
-
-instance Zero AccelerationStructureGeometryDataKHR where
-  zero = Triangles (SomeStruct zero)
-
-
-type GeometryInstanceFlagsKHR = GeometryInstanceFlagBitsKHR
-
--- | VkGeometryInstanceFlagBitsKHR - Instance flag bits
---
--- = Description
---
--- 'GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR' and
--- 'GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR' /must/ not be used in the same
--- flag.
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>,
--- 'GeometryInstanceFlagsKHR'
-newtype GeometryInstanceFlagBitsKHR = GeometryInstanceFlagBitsKHR Flags
-  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
-
--- | 'GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR' disables face
--- culling for this instance.
-pattern GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR = GeometryInstanceFlagBitsKHR 0x00000001
-
--- | 'GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR' specifies that the
--- <https://registry.khronos.org/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.
-pattern GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR = GeometryInstanceFlagBitsKHR 0x00000002
-
--- | 'GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR' causes this instance to act as
--- though 'GEOMETRY_OPAQUE_BIT_KHR' were specified on all geometries
--- referenced by this instance. This behavior /can/ be overridden by the
--- SPIR-V @NoOpaqueKHR@ ray flag.
-pattern GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = GeometryInstanceFlagBitsKHR 0x00000004
-
--- | 'GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR' causes this instance to act
--- as though 'GEOMETRY_OPAQUE_BIT_KHR' were not specified on all geometries
--- referenced by this instance. This behavior /can/ be overridden by the
--- SPIR-V @OpaqueKHR@ ray flag.
-pattern GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = GeometryInstanceFlagBitsKHR 0x00000008
-
--- No documentation found for Nested "VkGeometryInstanceFlagBitsKHR" "VK_GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_EXT"
-pattern GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_EXT = GeometryInstanceFlagBitsKHR 0x00000020
-
--- No documentation found for Nested "VkGeometryInstanceFlagBitsKHR" "VK_GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_EXT"
-pattern GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_EXT = GeometryInstanceFlagBitsKHR 0x00000010
-
-conNameGeometryInstanceFlagBitsKHR :: String
-conNameGeometryInstanceFlagBitsKHR = "GeometryInstanceFlagBitsKHR"
-
-enumPrefixGeometryInstanceFlagBitsKHR :: String
-enumPrefixGeometryInstanceFlagBitsKHR = "GEOMETRY_INSTANCE_"
-
-showTableGeometryInstanceFlagBitsKHR :: [(GeometryInstanceFlagBitsKHR, String)]
-showTableGeometryInstanceFlagBitsKHR =
-  [
-    ( GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR
-    , "TRIANGLE_FACING_CULL_DISABLE_BIT_KHR"
-    )
-  ,
-    ( GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR
-    , "TRIANGLE_FLIP_FACING_BIT_KHR"
-    )
-  ,
-    ( GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR
-    , "FORCE_OPAQUE_BIT_KHR"
-    )
-  ,
-    ( GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR
-    , "FORCE_NO_OPAQUE_BIT_KHR"
-    )
-  ,
-    ( GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_EXT
-    , "DISABLE_OPACITY_MICROMAPS_EXT"
-    )
-  ,
-    ( GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_EXT
-    , "FORCE_OPACITY_MICROMAP_2_STATE_EXT"
-    )
-  ]
-
-instance Show GeometryInstanceFlagBitsKHR where
-  showsPrec =
-    enumShowsPrec
-      enumPrefixGeometryInstanceFlagBitsKHR
-      showTableGeometryInstanceFlagBitsKHR
-      conNameGeometryInstanceFlagBitsKHR
-      (\(GeometryInstanceFlagBitsKHR x) -> x)
-      (\x -> showString "0x" . showHex x)
-
-instance Read GeometryInstanceFlagBitsKHR where
-  readPrec =
-    enumReadPrec
-      enumPrefixGeometryInstanceFlagBitsKHR
-      showTableGeometryInstanceFlagBitsKHR
-      conNameGeometryInstanceFlagBitsKHR
-      GeometryInstanceFlagBitsKHR
-
-type GeometryFlagsKHR = GeometryFlagBitsKHR
-
--- | VkGeometryFlagBitsKHR - Bitmask specifying additional parameters for a
--- geometry
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>,
--- 'GeometryFlagsKHR'
-newtype GeometryFlagBitsKHR = GeometryFlagBitsKHR Flags
-  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
-
--- | 'GEOMETRY_OPAQUE_BIT_KHR' specifies that this geometry does not invoke
--- the any-hit shaders even if present in a hit group.
-pattern GEOMETRY_OPAQUE_BIT_KHR = GeometryFlagBitsKHR 0x00000001
-
--- | 'GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR' specifies that the
--- implementation /must/ only call the any-hit shader a single time for
--- each primitive in this geometry. If this bit is absent an implementation
--- /may/ invoke the any-hit shader more than once for this geometry.
-pattern GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR = GeometryFlagBitsKHR 0x00000002
-
-conNameGeometryFlagBitsKHR :: String
-conNameGeometryFlagBitsKHR = "GeometryFlagBitsKHR"
-
-enumPrefixGeometryFlagBitsKHR :: String
-enumPrefixGeometryFlagBitsKHR = "GEOMETRY_"
-
-showTableGeometryFlagBitsKHR :: [(GeometryFlagBitsKHR, String)]
-showTableGeometryFlagBitsKHR =
-  [ (GEOMETRY_OPAQUE_BIT_KHR, "OPAQUE_BIT_KHR")
-  ,
-    ( GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR
-    , "NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR"
-    )
-  ]
-
-instance Show GeometryFlagBitsKHR where
-  showsPrec =
-    enumShowsPrec
-      enumPrefixGeometryFlagBitsKHR
-      showTableGeometryFlagBitsKHR
-      conNameGeometryFlagBitsKHR
-      (\(GeometryFlagBitsKHR x) -> x)
-      (\x -> showString "0x" . showHex x)
-
-instance Read GeometryFlagBitsKHR where
-  readPrec =
-    enumReadPrec
-      enumPrefixGeometryFlagBitsKHR
-      showTableGeometryFlagBitsKHR
-      conNameGeometryFlagBitsKHR
-      GeometryFlagBitsKHR
-
-type BuildAccelerationStructureFlagsKHR = BuildAccelerationStructureFlagBitsKHR
-
--- | VkBuildAccelerationStructureFlagBitsKHR - Bitmask specifying additional
--- parameters for acceleration structure builds
---
--- = Description
---
--- 'BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR' and
--- 'BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR' /may/ take more
--- time and memory than a normal build, and so /should/ only be used when
--- those features are needed.
---
--- 'BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR' and
--- 'BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR' are allowed to
--- be used together. In that case, the result of the compaction copy is
--- used as the source of a build with @mode@ of
--- 'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR' to perform the compacted
--- update.
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>,
--- 'BuildAccelerationStructureFlagsKHR'
-newtype BuildAccelerationStructureFlagBitsKHR = BuildAccelerationStructureFlagBitsKHR Flags
-  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
-
--- | 'BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR' specifies that the
--- specified acceleration structure /can/ be updated with a @mode@ of
--- 'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR' in
--- 'AccelerationStructureBuildGeometryInfoKHR' or an @update@ of
--- 'Vulkan.Core10.FundamentalTypes.TRUE' in
--- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdBuildAccelerationStructureNV' .
-pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR = BuildAccelerationStructureFlagBitsKHR 0x00000001
-
--- | 'BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR' specifies that
--- the specified acceleration structure /can/ act as the source for a copy
--- acceleration structure command with @mode@ of
--- 'COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR' to produce a compacted
--- acceleration structure.
-pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR = BuildAccelerationStructureFlagBitsKHR 0x00000002
-
--- | 'BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR' specifies that
--- the given acceleration structure build /should/ prioritize trace
--- performance over build time.
-pattern BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR = BuildAccelerationStructureFlagBitsKHR 0x00000004
-
--- | 'BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR' specifies that
--- the given acceleration structure build /should/ prioritize build time
--- over trace performance.
-pattern BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR = BuildAccelerationStructureFlagBitsKHR 0x00000008
-
--- | 'BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR' specifies that this
--- acceleration structure /should/ minimize the size of the scratch memory
--- and the final result acceleration structure, potentially at the expense
--- of build time or trace performance.
-pattern BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR = BuildAccelerationStructureFlagBitsKHR 0x00000010
-
--- | 'BUILD_ACCELERATION_STRUCTURE_ALLOW_DATA_ACCESS_KHR' specifies that the
--- specified acceleration structure /can/ be used when fetching the vertex
--- positions of a hit triangle.
-pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_DATA_ACCESS_KHR = BuildAccelerationStructureFlagBitsKHR 0x00000800
-
--- | 'BUILD_ACCELERATION_STRUCTURE_ALLOW_DISPLACEMENT_MICROMAP_UPDATE_NV'
--- specifies that the displacement micromaps associated with the specified
--- acceleration structure /may/ change with an acceleration structure
--- update.
-pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_DISPLACEMENT_MICROMAP_UPDATE_NV = BuildAccelerationStructureFlagBitsKHR 0x00000200
-
--- | 'BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_EXT'
--- specifies that the data of the opacity micromaps associated with the
--- specified acceleration structure /may/ change with an acceleration
--- structure update.
-pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_EXT = BuildAccelerationStructureFlagBitsKHR 0x00000100
-
--- | 'BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_EXT'
--- specifies that the specified acceleration structure /may/ be referenced
--- in an instance with 'GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_EXT'
--- set.
-pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_EXT = BuildAccelerationStructureFlagBitsKHR 0x00000080
-
--- | 'BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_EXT'
--- specifies that the opacity micromaps associated with the specified
--- acceleration structure /may/ change with an acceleration structure
--- update.
-pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_EXT = BuildAccelerationStructureFlagBitsKHR 0x00000040
-
--- No documentation found for Nested "VkBuildAccelerationStructureFlagBitsKHR" "VK_BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV"
-pattern BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV = BuildAccelerationStructureFlagBitsKHR 0x00000020
-
-conNameBuildAccelerationStructureFlagBitsKHR :: String
-conNameBuildAccelerationStructureFlagBitsKHR = "BuildAccelerationStructureFlagBitsKHR"
-
-enumPrefixBuildAccelerationStructureFlagBitsKHR :: String
-enumPrefixBuildAccelerationStructureFlagBitsKHR = "BUILD_ACCELERATION_STRUCTURE_"
-
-showTableBuildAccelerationStructureFlagBitsKHR :: [(BuildAccelerationStructureFlagBitsKHR, String)]
-showTableBuildAccelerationStructureFlagBitsKHR =
-  [
-    ( BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR
-    , "ALLOW_UPDATE_BIT_KHR"
-    )
-  ,
-    ( BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR
-    , "ALLOW_COMPACTION_BIT_KHR"
-    )
-  ,
-    ( BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR
-    , "PREFER_FAST_TRACE_BIT_KHR"
-    )
-  ,
-    ( BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR
-    , "PREFER_FAST_BUILD_BIT_KHR"
-    )
-  ,
-    ( BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR
-    , "LOW_MEMORY_BIT_KHR"
-    )
-  ,
-    ( BUILD_ACCELERATION_STRUCTURE_ALLOW_DATA_ACCESS_KHR
-    , "ALLOW_DATA_ACCESS_KHR"
-    )
-  ,
-    ( BUILD_ACCELERATION_STRUCTURE_ALLOW_DISPLACEMENT_MICROMAP_UPDATE_NV
-    , "ALLOW_DISPLACEMENT_MICROMAP_UPDATE_NV"
-    )
-  ,
-    ( BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_EXT
-    , "ALLOW_OPACITY_MICROMAP_DATA_UPDATE_EXT"
-    )
-  ,
-    ( BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_EXT
-    , "ALLOW_DISABLE_OPACITY_MICROMAPS_EXT"
-    )
-  ,
-    ( BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_EXT
-    , "ALLOW_OPACITY_MICROMAP_UPDATE_EXT"
-    )
-  ,
-    ( BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV
-    , "MOTION_BIT_NV"
-    )
-  ]
-
-instance Show BuildAccelerationStructureFlagBitsKHR where
-  showsPrec =
-    enumShowsPrec
-      enumPrefixBuildAccelerationStructureFlagBitsKHR
-      showTableBuildAccelerationStructureFlagBitsKHR
-      conNameBuildAccelerationStructureFlagBitsKHR
-      (\(BuildAccelerationStructureFlagBitsKHR x) -> x)
-      (\x -> showString "0x" . showHex x)
-
-instance Read BuildAccelerationStructureFlagBitsKHR where
-  readPrec =
-    enumReadPrec
-      enumPrefixBuildAccelerationStructureFlagBitsKHR
-      showTableBuildAccelerationStructureFlagBitsKHR
-      conNameBuildAccelerationStructureFlagBitsKHR
-      BuildAccelerationStructureFlagBitsKHR
-
-type AccelerationStructureCreateFlagsKHR = AccelerationStructureCreateFlagBitsKHR
-
--- | VkAccelerationStructureCreateFlagBitsKHR - Bitmask specifying additional
--- creation parameters for acceleration structure
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
--- 'AccelerationStructureCreateFlagsKHR'
-newtype AccelerationStructureCreateFlagBitsKHR = AccelerationStructureCreateFlagBitsKHR Flags
-  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
-
--- | 'ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR'
--- specifies that the acceleration structure’s address /can/ be saved and
--- reused on a subsequent run.
-pattern ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = AccelerationStructureCreateFlagBitsKHR 0x00000001
-
--- | 'ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV' specifies that the
--- acceleration structure will be used with motion information, see
--- 'Vulkan.Extensions.VK_NV_ray_tracing_motion_blur.AccelerationStructureMotionInfoNV'
--- for more detail.
-pattern ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV = AccelerationStructureCreateFlagBitsKHR 0x00000004
-
--- | 'ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT'
--- specifies that the acceleration structure /can/ be used with descriptor
--- buffers when capturing and replaying (e.g. for trace capture and
--- replay), see
--- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.OpaqueCaptureDescriptorDataCreateInfoEXT'
--- for more detail.
-pattern ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = AccelerationStructureCreateFlagBitsKHR 0x00000008
-
-conNameAccelerationStructureCreateFlagBitsKHR :: String
-conNameAccelerationStructureCreateFlagBitsKHR = "AccelerationStructureCreateFlagBitsKHR"
-
-enumPrefixAccelerationStructureCreateFlagBitsKHR :: String
-enumPrefixAccelerationStructureCreateFlagBitsKHR = "ACCELERATION_STRUCTURE_CREATE_"
-
-showTableAccelerationStructureCreateFlagBitsKHR :: [(AccelerationStructureCreateFlagBitsKHR, String)]
-showTableAccelerationStructureCreateFlagBitsKHR =
-  [
-    ( ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR
-    , "DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR"
-    )
-  ,
-    ( ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV
-    , "MOTION_BIT_NV"
-    )
-  ,
-    ( ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT
-    , "DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT"
-    )
-  ]
-
-instance Show AccelerationStructureCreateFlagBitsKHR where
-  showsPrec =
-    enumShowsPrec
-      enumPrefixAccelerationStructureCreateFlagBitsKHR
-      showTableAccelerationStructureCreateFlagBitsKHR
-      conNameAccelerationStructureCreateFlagBitsKHR
-      (\(AccelerationStructureCreateFlagBitsKHR x) -> x)
-      (\x -> showString "0x" . showHex x)
-
-instance Read AccelerationStructureCreateFlagBitsKHR where
-  readPrec =
-    enumReadPrec
-      enumPrefixAccelerationStructureCreateFlagBitsKHR
-      showTableAccelerationStructureCreateFlagBitsKHR
-      conNameAccelerationStructureCreateFlagBitsKHR
-      AccelerationStructureCreateFlagBitsKHR
-
--- | VkCopyAccelerationStructureModeKHR - Acceleration structure copy mode
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>,
--- 'CopyAccelerationStructureInfoKHR',
--- 'CopyAccelerationStructureToMemoryInfoKHR',
--- 'CopyMemoryToAccelerationStructureInfoKHR',
--- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdCopyAccelerationStructureNV'
-newtype CopyAccelerationStructureModeKHR = CopyAccelerationStructureModeKHR Int32
-  deriving newtype (Eq, Ord, Storable, Zero)
-
--- | 'COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR' creates a direct copy of
--- the acceleration structure specified in @src@ into the one specified by
--- @dst@. The @dst@ acceleration structure /must/ have been created with
--- the same parameters as @src@. If @src@ contains references to other
--- acceleration structures, @dst@ will reference the same acceleration
--- structures.
-pattern COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR = CopyAccelerationStructureModeKHR 0
-
--- | 'COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR' creates a more compact
--- version of an acceleration structure @src@ into @dst@. The acceleration
--- structure @dst@ /must/ have been created with a size at least as large
--- as that returned by
--- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdWriteAccelerationStructuresPropertiesNV'
--- , 'cmdWriteAccelerationStructuresPropertiesKHR', or
--- 'writeAccelerationStructuresPropertiesKHR' after the build of the
--- acceleration structure specified by @src@. If @src@ contains references
--- to other acceleration structures, @dst@ will reference the same
--- acceleration structures.
-pattern COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR = CopyAccelerationStructureModeKHR 1
-
--- | 'COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR' deserializes the
--- semi-opaque serialization format in the buffer to the acceleration
--- structure.
-pattern COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR = CopyAccelerationStructureModeKHR 3
-
--- | 'COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR' serializes the
--- acceleration structure to a semi-opaque format which can be reloaded on
--- a compatible implementation.
-pattern COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR = CopyAccelerationStructureModeKHR 2
-
-{-# COMPLETE
-  COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR
-  , COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR
-  , COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR
-  , COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR ::
-    CopyAccelerationStructureModeKHR
-  #-}
-
-conNameCopyAccelerationStructureModeKHR :: String
-conNameCopyAccelerationStructureModeKHR = "CopyAccelerationStructureModeKHR"
-
-enumPrefixCopyAccelerationStructureModeKHR :: String
-enumPrefixCopyAccelerationStructureModeKHR = "COPY_ACCELERATION_STRUCTURE_MODE_"
-
-showTableCopyAccelerationStructureModeKHR :: [(CopyAccelerationStructureModeKHR, String)]
-showTableCopyAccelerationStructureModeKHR =
-  [
-    ( COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR
-    , "CLONE_KHR"
-    )
-  ,
-    ( COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR
-    , "COMPACT_KHR"
-    )
-  ,
-    ( COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR
-    , "DESERIALIZE_KHR"
-    )
-  ,
-    ( COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR
-    , "SERIALIZE_KHR"
-    )
-  ]
-
-instance Show CopyAccelerationStructureModeKHR where
-  showsPrec =
-    enumShowsPrec
-      enumPrefixCopyAccelerationStructureModeKHR
-      showTableCopyAccelerationStructureModeKHR
-      conNameCopyAccelerationStructureModeKHR
-      (\(CopyAccelerationStructureModeKHR x) -> x)
-      (showsPrec 11)
-
-instance Read CopyAccelerationStructureModeKHR where
-  readPrec =
-    enumReadPrec
-      enumPrefixCopyAccelerationStructureModeKHR
-      showTableCopyAccelerationStructureModeKHR
-      conNameCopyAccelerationStructureModeKHR
-      CopyAccelerationStructureModeKHR
-
--- | VkBuildAccelerationStructureModeKHR - Enum specifying the type of build
--- operation to perform
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
--- 'AccelerationStructureBuildGeometryInfoKHR'
-newtype BuildAccelerationStructureModeKHR = BuildAccelerationStructureModeKHR Int32
-  deriving newtype (Eq, Ord, Storable, Zero)
-
--- | 'BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR' specifies that the
--- destination acceleration structure will be built using the specified
--- geometries.
-pattern BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR = BuildAccelerationStructureModeKHR 0
-
--- | 'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR' specifies that the
--- destination acceleration structure will be built using data in a source
--- acceleration structure, updated by the specified geometries.
-pattern BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR = BuildAccelerationStructureModeKHR 1
-
-{-# COMPLETE
-  BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR
-  , BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR ::
-    BuildAccelerationStructureModeKHR
-  #-}
-
-conNameBuildAccelerationStructureModeKHR :: String
-conNameBuildAccelerationStructureModeKHR = "BuildAccelerationStructureModeKHR"
-
-enumPrefixBuildAccelerationStructureModeKHR :: String
-enumPrefixBuildAccelerationStructureModeKHR = "BUILD_ACCELERATION_STRUCTURE_MODE_"
-
-showTableBuildAccelerationStructureModeKHR :: [(BuildAccelerationStructureModeKHR, String)]
-showTableBuildAccelerationStructureModeKHR =
-  [
-    ( BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR
-    , "BUILD_KHR"
-    )
-  ,
-    ( BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR
-    , "UPDATE_KHR"
-    )
-  ]
-
-instance Show BuildAccelerationStructureModeKHR where
-  showsPrec =
-    enumShowsPrec
-      enumPrefixBuildAccelerationStructureModeKHR
-      showTableBuildAccelerationStructureModeKHR
-      conNameBuildAccelerationStructureModeKHR
-      (\(BuildAccelerationStructureModeKHR x) -> x)
-      (showsPrec 11)
-
-instance Read BuildAccelerationStructureModeKHR where
-  readPrec =
-    enumReadPrec
-      enumPrefixBuildAccelerationStructureModeKHR
-      showTableBuildAccelerationStructureModeKHR
-      conNameBuildAccelerationStructureModeKHR
-      BuildAccelerationStructureModeKHR
-
--- | VkAccelerationStructureTypeKHR - Type of acceleration structure
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>,
--- 'AccelerationStructureBuildGeometryInfoKHR',
--- 'AccelerationStructureCreateInfoKHR',
--- 'Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureInfoNV'
-newtype AccelerationStructureTypeKHR = AccelerationStructureTypeKHR Int32
-  deriving newtype (Eq, Ord, Storable, Zero)
-
--- | 'ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR' is a top-level acceleration
--- structure containing instance data referring to bottom-level
--- acceleration structures.
-pattern ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR = AccelerationStructureTypeKHR 0
-
--- | 'ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR' is a bottom-level
--- acceleration structure containing the AABBs or geometry to be
--- intersected.
-pattern ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR = AccelerationStructureTypeKHR 1
-
--- | 'ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR' is an acceleration structure
--- whose type is determined at build time used for special circumstances.
--- In these cases, the acceleration structure type is not known at creation
--- time, but /must/ be specified at build time as either top or bottom.
-pattern ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR = AccelerationStructureTypeKHR 2
-
-{-# COMPLETE
-  ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR
-  , ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR
-  , ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR ::
-    AccelerationStructureTypeKHR
-  #-}
-
-conNameAccelerationStructureTypeKHR :: String
-conNameAccelerationStructureTypeKHR = "AccelerationStructureTypeKHR"
-
-enumPrefixAccelerationStructureTypeKHR :: String
-enumPrefixAccelerationStructureTypeKHR = "ACCELERATION_STRUCTURE_TYPE_"
-
-showTableAccelerationStructureTypeKHR :: [(AccelerationStructureTypeKHR, String)]
-showTableAccelerationStructureTypeKHR =
-  [
-    ( ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR
-    , "TOP_LEVEL_KHR"
-    )
-  ,
-    ( ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR
-    , "BOTTOM_LEVEL_KHR"
-    )
-  ,
-    ( ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR
-    , "GENERIC_KHR"
-    )
-  ]
-
-instance Show AccelerationStructureTypeKHR where
-  showsPrec =
-    enumShowsPrec
-      enumPrefixAccelerationStructureTypeKHR
-      showTableAccelerationStructureTypeKHR
-      conNameAccelerationStructureTypeKHR
-      (\(AccelerationStructureTypeKHR x) -> x)
-      (showsPrec 11)
-
-instance Read AccelerationStructureTypeKHR where
-  readPrec =
-    enumReadPrec
-      enumPrefixAccelerationStructureTypeKHR
-      showTableAccelerationStructureTypeKHR
-      conNameAccelerationStructureTypeKHR
-      AccelerationStructureTypeKHR
-
--- | VkGeometryTypeKHR - Enum specifying which type of geometry is provided
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>,
--- 'AccelerationStructureGeometryKHR',
--- 'Vulkan.Extensions.VK_NV_ray_tracing.GeometryNV'
-newtype GeometryTypeKHR = GeometryTypeKHR Int32
-  deriving newtype (Eq, Ord, Storable, Zero)
-
--- | 'GEOMETRY_TYPE_TRIANGLES_KHR' specifies a geometry type consisting of
--- triangles.
-pattern GEOMETRY_TYPE_TRIANGLES_KHR = GeometryTypeKHR 0
-
--- | 'GEOMETRY_TYPE_AABBS_KHR' specifies a geometry type consisting of
--- axis-aligned bounding boxes.
-pattern GEOMETRY_TYPE_AABBS_KHR = GeometryTypeKHR 1
-
--- | 'GEOMETRY_TYPE_INSTANCES_KHR' specifies a geometry type consisting of
--- acceleration structure instances.
-pattern GEOMETRY_TYPE_INSTANCES_KHR = GeometryTypeKHR 2
-
-{-# COMPLETE
-  GEOMETRY_TYPE_TRIANGLES_KHR
-  , GEOMETRY_TYPE_AABBS_KHR
-  , GEOMETRY_TYPE_INSTANCES_KHR ::
-    GeometryTypeKHR
-  #-}
-
-conNameGeometryTypeKHR :: String
-conNameGeometryTypeKHR = "GeometryTypeKHR"
-
-enumPrefixGeometryTypeKHR :: String
-enumPrefixGeometryTypeKHR = "GEOMETRY_TYPE_"
-
-showTableGeometryTypeKHR :: [(GeometryTypeKHR, String)]
-showTableGeometryTypeKHR =
-  [ (GEOMETRY_TYPE_TRIANGLES_KHR, "TRIANGLES_KHR")
-  , (GEOMETRY_TYPE_AABBS_KHR, "AABBS_KHR")
-  , (GEOMETRY_TYPE_INSTANCES_KHR, "INSTANCES_KHR")
-  ]
-
-instance Show GeometryTypeKHR where
-  showsPrec =
-    enumShowsPrec
-      enumPrefixGeometryTypeKHR
-      showTableGeometryTypeKHR
-      conNameGeometryTypeKHR
-      (\(GeometryTypeKHR x) -> x)
-      (showsPrec 11)
-
-instance Read GeometryTypeKHR where
-  readPrec =
-    enumReadPrec
-      enumPrefixGeometryTypeKHR
-      showTableGeometryTypeKHR
-      conNameGeometryTypeKHR
-      GeometryTypeKHR
-
--- | VkAccelerationStructureBuildTypeKHR - Acceleration structure build type
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
--- 'getAccelerationStructureBuildSizesKHR',
--- 'Vulkan.Extensions.VK_EXT_opacity_micromap.getMicromapBuildSizesEXT'
-newtype AccelerationStructureBuildTypeKHR = AccelerationStructureBuildTypeKHR Int32
-  deriving newtype (Eq, Ord, Storable, Zero)
-
--- | 'ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR' requests the memory
--- requirement for operations performed by the host.
-pattern ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR = AccelerationStructureBuildTypeKHR 0
-
--- | 'ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR' requests the memory
--- requirement for operations performed by the device.
-pattern ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR = AccelerationStructureBuildTypeKHR 1
-
--- | 'ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR' requests the
--- memory requirement for operations performed by either the host, or the
--- device.
-pattern ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR = AccelerationStructureBuildTypeKHR 2
-
-{-# COMPLETE
-  ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR
-  , ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR
-  , ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR ::
-    AccelerationStructureBuildTypeKHR
-  #-}
-
-conNameAccelerationStructureBuildTypeKHR :: String
-conNameAccelerationStructureBuildTypeKHR = "AccelerationStructureBuildTypeKHR"
-
-enumPrefixAccelerationStructureBuildTypeKHR :: String
-enumPrefixAccelerationStructureBuildTypeKHR = "ACCELERATION_STRUCTURE_BUILD_TYPE_"
-
-showTableAccelerationStructureBuildTypeKHR :: [(AccelerationStructureBuildTypeKHR, String)]
-showTableAccelerationStructureBuildTypeKHR =
-  [
-    ( ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR
-    , "HOST_KHR"
-    )
-  ,
-    ( ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR
-    , "DEVICE_KHR"
-    )
-  ,
-    ( ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR
-    , "HOST_OR_DEVICE_KHR"
-    )
-  ]
-
-instance Show AccelerationStructureBuildTypeKHR where
-  showsPrec =
-    enumShowsPrec
-      enumPrefixAccelerationStructureBuildTypeKHR
-      showTableAccelerationStructureBuildTypeKHR
-      conNameAccelerationStructureBuildTypeKHR
-      (\(AccelerationStructureBuildTypeKHR x) -> x)
-      (showsPrec 11)
-
-instance Read AccelerationStructureBuildTypeKHR where
-  readPrec =
-    enumReadPrec
-      enumPrefixAccelerationStructureBuildTypeKHR
-      showTableAccelerationStructureBuildTypeKHR
-      conNameAccelerationStructureBuildTypeKHR
-      AccelerationStructureBuildTypeKHR
-
--- | VkAccelerationStructureCompatibilityKHR - Acceleration structure
--- compatibility
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
--- 'getDeviceAccelerationStructureCompatibilityKHR',
--- 'Vulkan.Extensions.VK_EXT_opacity_micromap.getDeviceMicromapCompatibilityEXT'
-newtype AccelerationStructureCompatibilityKHR = AccelerationStructureCompatibilityKHR Int32
-  deriving newtype (Eq, Ord, Storable, Zero)
-
--- | 'ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR' if the
--- @pVersionData@ version acceleration structure is compatible with
--- @device@.
-pattern ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR = AccelerationStructureCompatibilityKHR 0
-
--- | 'ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR' if the
--- @pVersionData@ version acceleration structure is not compatible with
--- @device@.
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#acceleration-structure-inactive-prims inactive primitives and instances>
+--
+-- -   added 'PhysicalDeviceAccelerationStructureFeaturesKHR' structure
+--
+-- -   added indirect and batched acceleration structure builds
+--     ('cmdBuildAccelerationStructuresIndirectKHR')
+--
+-- -   added
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#host-acceleration-structure host acceleration structure>
+--     commands
+--
+-- -   reworked geometry structures so they could be better shared between
+--     device, host, and indirect builds
+--
+-- -   explicitly made 'Vulkan.Extensions.Handles.AccelerationStructureKHR'
+--     use device addresses
+--
+-- -   added acceleration structure compatibility check function
+--     ('getDeviceAccelerationStructureCompatibilityKHR')
+--
+-- -   add parameter for requesting memory requirements for host and\/or
+--     device build
+--
+-- -   added format feature for acceleration structure build vertex formats
+--     ('Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR')
+--
+-- (2) Can you give a more detailed comparison of differences and
+-- similarities between VK_NV_ray_tracing and
+-- VK_KHR_acceleration_structure?
+--
+-- __DISCUSSION__:
+--
+-- The following is a more detailed comparison of which commands,
+-- structures, and enums are aliased, changed, or removed.
+--
+-- -   Aliased functionality — enums, structures, and commands that are
+--     considered equivalent:
+--
+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.GeometryTypeNV' ↔
+--         'GeometryTypeKHR'
+--
+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureTypeNV'
+--         ↔ 'AccelerationStructureTypeKHR'
+--
+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.CopyAccelerationStructureModeNV'
+--         ↔ 'CopyAccelerationStructureModeKHR'
+--
+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.GeometryFlagsNV' ↔
+--         'GeometryFlagsKHR'
+--
+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.GeometryFlagBitsNV' ↔
+--         'GeometryFlagBitsKHR'
+--
+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.GeometryInstanceFlagsNV' ↔
+--         'GeometryInstanceFlagsKHR'
+--
+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.GeometryInstanceFlagBitsNV'
+--         ↔ 'GeometryInstanceFlagBitsKHR'
+--
+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.BuildAccelerationStructureFlagsNV'
+--         ↔ 'BuildAccelerationStructureFlagsKHR'
+--
+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.BuildAccelerationStructureFlagBitsNV'
+--         ↔ 'BuildAccelerationStructureFlagBitsKHR'
+--
+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.TransformMatrixNV' ↔
+--         'TransformMatrixKHR' (added to VK_NV_ray_tracing for descriptive
+--         purposes)
+--
+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.AabbPositionsNV' ↔
+--         'AabbPositionsKHR' (added to VK_NV_ray_tracing for descriptive
+--         purposes)
+--
+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureInstanceNV'
+--         ↔ 'AccelerationStructureInstanceKHR' (added to VK_NV_ray_tracing
+--         for descriptive purposes)
+--
+-- -   Changed enums, structures, and commands:
+--
+--     -   renamed
+--         'Vulkan.Extensions.VK_NV_ray_tracing.GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV'
+--         → 'GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR' in
+--         'GeometryInstanceFlagBitsKHR'
+--
+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.GeometryTrianglesNV' →
+--         'AccelerationStructureGeometryTrianglesDataKHR' (device or host
+--         address instead of buffer+offset)
+--
+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.GeometryAABBNV' →
+--         'AccelerationStructureGeometryAabbsDataKHR' (device or host
+--         address instead of buffer+offset)
+--
+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.GeometryDataNV' →
+--         'AccelerationStructureGeometryDataKHR' (union of
+--         triangle\/aabbs\/instances)
+--
+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.GeometryNV' →
+--         'AccelerationStructureGeometryKHR' (changed type of geometry)
+--
+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureCreateInfoNV'
+--         → 'AccelerationStructureCreateInfoKHR' (reshuffle geometry
+--         layout\/information)
+--
+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.PhysicalDeviceRayTracingPropertiesNV'
+--         → 'PhysicalDeviceAccelerationStructurePropertiesKHR' (for
+--         acceleration structure properties, renamed @maxTriangleCount@ to
+--         @maxPrimitiveCount@, added per stage and update after bind
+--         limits) and
+--         'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.PhysicalDeviceRayTracingPipelinePropertiesKHR'
+--         (for ray tracing pipeline properties)
+--
+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureMemoryRequirementsInfoNV'
+--         (deleted - replaced by allocating on top of
+--         'Vulkan.Core10.Handles.Buffer')
+--
+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.WriteDescriptorSetAccelerationStructureNV'
+--         → 'WriteDescriptorSetAccelerationStructureKHR' (different
+--         acceleration structure type)
+--
+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.createAccelerationStructureNV'
+--         → 'createAccelerationStructureKHR' (device address, different
+--         geometry layout\/information)
+--
+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.getAccelerationStructureMemoryRequirementsNV'
+--         (deleted - replaced by allocating on top of
+--         'Vulkan.Core10.Handles.Buffer')
+--
+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.cmdBuildAccelerationStructureNV'
+--         → 'cmdBuildAccelerationStructuresKHR' (params moved to structs,
+--         layout differences)
+--
+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.cmdCopyAccelerationStructureNV'
+--         → 'cmdCopyAccelerationStructureKHR' (params to struct,
+--         extendable)
+--
+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.getAccelerationStructureHandleNV'
+--         → 'getAccelerationStructureDeviceAddressKHR' (device address
+--         instead of handle)
+--
+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureMemoryRequirementsTypeNV'
+--         → size queries for scratch space moved to
+--         'getAccelerationStructureBuildSizesKHR'
+--
+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.destroyAccelerationStructureNV'
+--         → 'destroyAccelerationStructureKHR' (different acceleration
+--         structure types)
+--
+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.cmdWriteAccelerationStructuresPropertiesNV'
+--         → 'cmdWriteAccelerationStructuresPropertiesKHR' (different
+--         acceleration structure types)
+--
+-- -   Added enums, structures, and commands:
+--
+--     -   'GEOMETRY_TYPE_INSTANCES_KHR' to 'GeometryTypeKHR' enum
+--
+--     -   'COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR',
+--         'COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR' to
+--         'CopyAccelerationStructureModeKHR' enum
+--
+--     -   'PhysicalDeviceAccelerationStructureFeaturesKHR' structure
+--
+--     -   'AccelerationStructureBuildTypeKHR' enum
+--
+--     -   'BuildAccelerationStructureModeKHR' enum
+--
+--     -   'DeviceOrHostAddressKHR' and 'DeviceOrHostAddressConstKHR'
+--         unions
+--
+--     -   'AccelerationStructureBuildRangeInfoKHR' struct
+--
+--     -   'AccelerationStructureGeometryInstancesDataKHR' struct
+--
+--     -   'AccelerationStructureDeviceAddressInfoKHR' struct
+--
+--     -   'AccelerationStructureVersionInfoKHR' struct
+--
+--     -   'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.StridedDeviceAddressRegionKHR'
+--         struct
+--
+--     -   'CopyAccelerationStructureToMemoryInfoKHR' struct
+--
+--     -   'CopyMemoryToAccelerationStructureInfoKHR' struct
+--
+--     -   'CopyAccelerationStructureInfoKHR' struct
+--
+--     -   'buildAccelerationStructuresKHR' command (host build)
+--
+--     -   'copyAccelerationStructureKHR' command (host copy)
+--
+--     -   'copyAccelerationStructureToMemoryKHR' (host serialize)
+--
+--     -   'copyMemoryToAccelerationStructureKHR' (host deserialize)
+--
+--     -   'writeAccelerationStructuresPropertiesKHR' (host properties)
+--
+--     -   'cmdCopyAccelerationStructureToMemoryKHR' (device serialize)
+--
+--     -   'cmdCopyMemoryToAccelerationStructureKHR' (device deserialize)
+--
+--     -   'getDeviceAccelerationStructureCompatibilityKHR' (serialization)
+--
+-- (3) What are the changes between the public provisional
+-- (VK_KHR_ray_tracing v8) release and the internal provisional
+-- (VK_KHR_ray_tracing v9) release?
+--
+-- -   added @geometryFlags@ to
+--     @VkAccelerationStructureCreateGeometryTypeInfoKHR@ (later reworked
+--     to obsolete this)
+--
+-- -   added @minAccelerationStructureScratchOffsetAlignment@ property to
+--     VkPhysicalDeviceRayTracingPropertiesKHR
+--
+-- -   fix naming and return enum from
+--     'getDeviceAccelerationStructureCompatibilityKHR'
+--
+--     -   renamed @VkAccelerationStructureVersionKHR@ to
+--         'AccelerationStructureVersionInfoKHR'
+--
+--     -   renamed @VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_KHR@
+--         to
+--         'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR'
+--
+--     -   removed @VK_ERROR_INCOMPATIBLE_VERSION_KHR@
+--
+--     -   added 'AccelerationStructureCompatibilityKHR' enum
+--
+--     -   remove return value from
+--         'getDeviceAccelerationStructureCompatibilityKHR' and added
+--         return enum parameter
+--
+-- -   Require Vulkan 1.1
+--
+-- -   added creation time capture and replay flags
+--
+--     -   added 'AccelerationStructureCreateFlagBitsKHR' and
+--         'AccelerationStructureCreateFlagsKHR'
+--
+--     -   renamed the @flags@ member of
+--         'AccelerationStructureCreateInfoKHR' to @buildFlags@ (later
+--         removed) and added the @createFlags@ member
+--
+-- -   change 'cmdBuildAccelerationStructuresIndirectKHR' to use buffer
+--     device address for indirect parameter
+--
+-- -   make @VK_KHR_deferred_host_operations@ an interaction instead of a
+--     required extension (later went back on this)
+--
+-- -   renamed @VkAccelerationStructureBuildOffsetInfoKHR@ to
+--     'AccelerationStructureBuildRangeInfoKHR'
+--
+--     -   renamed the @ppOffsetInfos@ parameter of
+--         'cmdBuildAccelerationStructuresKHR' to @ppBuildRangeInfos@
+--
+-- -   Re-unify geometry description between build and create
+--
+--     -   remove @VkAccelerationStructureCreateGeometryTypeInfoKHR@ and
+--         @VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_GEOMETRY_TYPE_INFO_KHR@
+--
+--     -   added @VkAccelerationStructureCreateSizeInfoKHR@ structure
+--         (later removed)
+--
+--     -   change type of the @pGeometryInfos@ member of
+--         'AccelerationStructureCreateInfoKHR' from
+--         @VkAccelerationStructureCreateGeometryTypeInfoKHR@ to
+--         'AccelerationStructureGeometryKHR' (later removed)
+--
+--     -   added @pCreateSizeInfos@ member to
+--         'AccelerationStructureCreateInfoKHR' (later removed)
+--
+-- -   Fix ppGeometries ambiguity, add pGeometries
+--
+--     -   remove @geometryArrayOfPointers@ member of
+--         VkAccelerationStructureBuildGeometryInfoKHR
+--
+--     -   disambiguate two meanings of @ppGeometries@ by explicitly adding
+--         @pGeometries@ to the 'AccelerationStructureBuildGeometryInfoKHR'
+--         structure and require one of them be @NULL@
+--
+-- -   added
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-nullDescriptor nullDescriptor>
+--     support for acceleration structures
+--
+-- -   changed the @update@ member of
+--     'AccelerationStructureBuildGeometryInfoKHR' from a bool to the
+--     @mode@ 'BuildAccelerationStructureModeKHR' enum which allows future
+--     extensibility in update types
+--
+-- -   Clarify deferred host ops for pipeline creation
+--
+--     -   'Vulkan.Extensions.Handles.DeferredOperationKHR' is now a
+--         top-level parameter for 'buildAccelerationStructuresKHR',
+--         'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.createRayTracingPipelinesKHR',
+--         'copyAccelerationStructureToMemoryKHR',
+--         'copyAccelerationStructureKHR', and
+--         'copyMemoryToAccelerationStructureKHR'
+--
+--     -   removed @VkDeferredOperationInfoKHR@ structure
+--
+--     -   change deferred host creation\/return parameter behavior such
+--         that the implementation can modify such parameters until the
+--         deferred host operation completes
+--
+--     -   @VK_KHR_deferred_host_operations@ is required again
+--
+-- -   Change acceleration structure build to always be sized
+--
+--     -   de-alias
+--         'Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureMemoryRequirementsTypeNV'
+--         and @VkAccelerationStructureMemoryRequirementsTypeKHR@, and
+--         remove @VkAccelerationStructureMemoryRequirementsTypeKHR@
+--
+--     -   add 'getAccelerationStructureBuildSizesKHR' command and
+--         'AccelerationStructureBuildSizesInfoKHR' structure and
+--         'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR'
+--         enum to query sizes for acceleration structures and scratch
+--         storage
+--
+--     -   move size queries for scratch space to
+--         'getAccelerationStructureBuildSizesKHR'
+--
+--     -   remove @compactedSize@, @buildFlags@, @maxGeometryCount@,
+--         @pGeometryInfos@, @pCreateSizeInfos@ members of
+--         'AccelerationStructureCreateInfoKHR' and add the @size@ member
+--
+--     -   add @maxVertex@ member to
+--         'AccelerationStructureGeometryTrianglesDataKHR' structure
+--
+--     -   remove @VkAccelerationStructureCreateSizeInfoKHR@ structure
+--
+-- (4) What are the changes between the internal provisional
+-- (VK_KHR_ray_tracing v9) release and the final
+-- (VK_KHR_acceleration_structure v11) release?
+--
+-- -   refactor VK_KHR_ray_tracing into 3 extensions, enabling
+--     implementation flexibility and decoupling ray query support from ray
+--     pipelines:
+--
+--     -   @VK_KHR_acceleration_structure@ (for acceleration structure
+--         operations)
+--
+--     -   @VK_KHR_ray_tracing_pipeline@ (for ray tracing pipeline and
+--         shader stages)
+--
+--     -   @VK_KHR_ray_query@ (for ray queries in existing shader stages)
+--
+-- -   clarify buffer usage flags for ray tracing
+--
+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.BUFFER_USAGE_RAY_TRACING_BIT_NV'
+--         is left alone in @VK_NV_ray_tracing@ (required on @scratch@ and
+--         @instanceData@)
+--
+--     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR'
+--         is added as an alias of
+--         'Vulkan.Extensions.VK_NV_ray_tracing.BUFFER_USAGE_RAY_TRACING_BIT_NV'
+--         in @VK_KHR_ray_tracing_pipeline@ and is required on shader
+--         binding table buffers
+--
+--     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR'
+--         is added in @VK_KHR_acceleration_structure@ for all vertex,
+--         index, transform, aabb, and instance buffer data referenced by
+--         device build commands
+--
+--     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_STORAGE_BUFFER_BIT'
+--         is used for @scratchData@
+--
+-- -   add max primitive counts (@ppMaxPrimitiveCounts@) to
+--     'cmdBuildAccelerationStructuresIndirectKHR'
+--
+-- -   Allocate acceleration structures from @VkBuffers@ and add a mode to
+--     constrain the device address
+--
+--     -   de-alias
+--         'Vulkan.Extensions.VK_NV_ray_tracing.BindAccelerationStructureMemoryInfoNV'
+--         and
+--         'Vulkan.Extensions.VK_NV_ray_tracing.bindAccelerationStructureMemoryNV',
+--         and remove @VkBindAccelerationStructureMemoryInfoKHR@,
+--         @VkAccelerationStructureMemoryRequirementsInfoKHR@, and
+--         @vkGetAccelerationStructureMemoryRequirementsKHR@
+--
+--     -   acceleration structures now take a
+--         'Vulkan.Core10.Handles.Buffer' and offset at creation time for
+--         memory placement
+--
+--     -   add a new
+--         'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR'
+--         buffer usage for such buffers
+--
+--     -   add a new 'ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR' acceleration
+--         structure type for layering
+--
+-- -   move 'GEOMETRY_TYPE_INSTANCES_KHR' to main enum instead of being
+--     added via extension
+--
+-- -   make build commands more consistent - all now build multiple
+--     acceleration structures and are named plurally
+--     ('cmdBuildAccelerationStructuresIndirectKHR',
+--     'cmdBuildAccelerationStructuresKHR',
+--     'buildAccelerationStructuresKHR')
+--
+-- -   add interactions with
+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'
+--     for acceleration structures, including a new feature
+--     (@descriptorBindingAccelerationStructureUpdateAfterBind@) and 3 new
+--     properties (@maxPerStageDescriptorAccelerationStructures@,
+--     @maxPerStageDescriptorUpdateAfterBindAccelerationStructures@,
+--     @maxDescriptorSetUpdateAfterBindAccelerationStructures@)
+--
+-- -   extension is no longer provisional
+--
+-- -   define synchronization requirements for builds, traces, and copies
+--
+-- -   define synchronization requirements for AS build inputs and indirect
+--     build buffer
+--
+-- (5) What is 'ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR' for?
+--
+-- __RESOLVED__: It is primarily intended for API layering. In DXR, the
+-- acceleration structure is basically just a buffer in a special layout,
+-- and you do not know at creation time whether it will be used as a top or
+-- bottom level acceleration structure. We thus added a generic
+-- acceleration structure type whose type is unknown at creation time, but
+-- is specified at build time instead. Applications which are written
+-- directly for Vulkan should not use it.
+--
+-- == Version History
+--
+-- -   Revision 1, 2019-12-05 (Members of the Vulkan Ray Tracing TSG)
+--
+--     -   Internal revisions (forked from VK_NV_ray_tracing)
+--
+-- -   Revision 2, 2019-12-20 (Daniel Koch, Eric Werness)
+--
+--     -   Add const version of DeviceOrHostAddress (!3515)
+--
+--     -   Add VU to clarify that only handles in the current pipeline are
+--         valid (!3518)
+--
+--     -   Restore some missing VUs and add in-place update language
+--         (#1902, !3522)
+--
+--     -   rename VkAccelerationStructureInstanceKHR member from
+--         accelerationStructure to accelerationStructureReference to
+--         better match its type (!3523)
+--
+--     -   Allow VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS for pipeline
+--         creation if shader group handles cannot be reused (!3523)
+--
+--     -   update documentation for the
+--         VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS error code and add
+--         missing documentation for new return codes from
+--         VK_KHR_deferred_host_operations (!3523)
+--
+--     -   list new query types for VK_KHR_ray_tracing (!3523)
+--
+--     -   Fix VU statements for VkAccelerationStructureGeometryKHR
+--         referring to correct union members and update to use more
+--         current wording (!3523)
+--
+-- -   Revision 3, 2020-01-10 (Daniel Koch, Jon Leech, Christoph Kubisch)
+--
+--     -   Fix \'instance of\' and \'that\/which contains\/defines\' markup
+--         issues (!3528)
+--
+--     -   factor out VK_KHR_pipeline_library as stand-alone extension
+--         (!3540)
+--
+--     -   Resolve Vulkan-hpp issues (!3543)
+--
+--         -   add missing require for VkGeometryInstanceFlagsKHR
+--
+--         -   de-alias
+--             VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV
+--             since the KHR structure is no longer equivalent
+--
+--         -   add len to pDataSize attribute for
+--             vkWriteAccelerationStructuresPropertiesKHR
+--
+-- -   Revision 4, 2020-01-23 (Daniel Koch, Eric Werness)
+--
+--     -   Improve vkWriteAccelerationStructuresPropertiesKHR, add return
+--         value and VUs (#1947)
+--
+--     -   Clarify language to allow multiple raygen shaders (#1959)
+--
+--     -   Various editorial feedback (!3556)
+--
+--     -   Add language to help deal with looped self-intersecting fans
+--         (#1901)
+--
+--     -   Change vkCmdTraceRays{,Indirect}KHR args to pointers (!3559)
+--
+--     -   Add scratch address validation language (#1941, !3551)
+--
+--     -   Fix definition and add hierarchy information for shader call
+--         scope (#1977, !3571)
+--
+-- -   Revision 5, 2020-02-04 (Eric Werness, Jeff Bolz, Daniel Koch)
+--
+--     -   remove vestigial accelerationStructureUUID (!3582)
+--
+--     -   update definition of repack instructions and improve memory
+--         model interactions (#1910, #1913, !3584)
+--
+--     -   Fix wrong sType for VkPhysicalDeviceRayTracingFeaturesKHR
+--         (#1988)
+--
+--     -   Use provisional SPIR-V capabilities (#1987)
+--
+--     -   require rayTraversalPrimitiveCulling if rayQuery is supported
+--         (#1927)
+--
+--     -   Miss shaders do not have object parameters (!3592)
+--
+--     -   Fix missing required types in XML (!3592)
+--
+--     -   clarify matching conditions for update (!3592)
+--
+--     -   add goal that host and device builds be similar (!3592)
+--
+--     -   clarify that @maxPrimitiveCount@ limit should apply to triangles
+--         and AABBs (!3592)
+--
+--     -   Require alignment for instance arrayOfPointers (!3592)
+--
+--     -   Zero is a valid value for instance flags (!3592)
+--
+--     -   Add some alignment VUs that got lost in refactoring (!3592)
+--
+--     -   Recommend TMin epsilon rather than culling (!3592)
+--
+--     -   Get angle from dot product not cross product (!3592)
+--
+--     -   Clarify that AH can access the payload and attributes (!3592)
+--
+--     -   Match DXR behavior for inactive primitive definition (!3592)
+--
+--     -   Use a more generic term than degenerate for inactive to avoid
+--         confusion (!3592)
+--
+-- -   Revision 6, 2020-02-20 (Daniel Koch)
+--
+--     -   fix some dangling NV references (#1996)
+--
+--     -   rename VkCmdTraceRaysIndirectCommandKHR to
+--         VkTraceRaysIndirectCommandKHR (!3607)
+--
+--     -   update contributor list (!3611)
+--
+--     -   use uint64_t instead of VkAccelerationStructureReferenceKHR in
+--         VkAccelerationStructureInstanceKHR (#2004)
+--
+-- -   Revision 7, 2020-02-28 (Tobias Hector)
+--
+--     -   remove HitTKHR SPIR-V builtin (spirv\/spirv-extensions#7)
+--
+-- -   Revision 8, 2020-03-06 (Tobias Hector, Dae Kim, Daniel Koch, Jeff
+--     Bolz, Eric Werness)
+--
+--     -   explicitly state that Tmax is updated when new closest
+--         intersection is accepted (#2020,!3536)
+--
+--     -   Made references to min and max t values consistent (!3644)
+--
+--     -   finish enumerating differences relative to VK_NV_ray_tracing in
+--         issues (1) and (2) (#1974,!3642)
+--
+--     -   fix formatting in some math equations (!3642)
+--
+--     -   Restrict the Hit Kind operand of @OpReportIntersectionKHR@ to
+--         7-bits (spirv\/spirv-extensions#8,!3646)
+--
+--     -   Say ray tracing \'/should/\' be watertight (#2008,!3631)
+--
+--     -   Clarify memory requirements for ray tracing buffers
+--         (#2005,!3649)
+--
+--     -   Add callable size limits (#1997,!3652)
+--
+-- -   Revision 9, 2020-04-15 (Eric Werness, Daniel Koch, Tobias Hector,
+--     Joshua Barczak)
+--
+--     -   Add geometry flags to acceleration structure creation (!3672)
+--
+--     -   add build scratch memory alignment
+--         (minAccelerationStructureScratchOffsetAlignment) (#2065,!3725)
+--
+--     -   fix naming and return enum from
+--         vkGetDeviceAccelerationStructureCompatibilityKHR (#2051,!3726)
+--
+--     -   require SPIR-V 1.4 (#2096,!3777)
+--
+--     -   added creation time capture\/replay flags (#2104,!3774)
+--
+--     -   require Vulkan 1.1 (#2133,!3806)
+--
+--     -   use device addresses instead of VkBuffers for ray tracing
+--         commands (#2074,!3815)
+--
+--     -   add interactions with Vulkan 1.2 and VK_KHR_vulkan_memory_model
+--         (#2133,!3830)
+--
+--     -   make VK_KHR_pipeline_library an interaction instead of required
+--         (#2045,#2108,!3830)
+--
+--     -   make VK_KHR_deferred_host_operations an interaction instead of
+--         required (#2045,!3830)
+--
+--     -   removed maxCallableSize and added explicit stack size management
+--         for ray pipelines (#1997,!3817,!3772,!3844)
+--
+--     -   improved documentation for VkAccelerationStructureVersionInfoKHR
+--         (#2135,3835)
+--
+--     -   rename VkAccelerationStructureBuildOffsetInfoKHR to
+--         VkAccelerationStructureBuildRangeInfoKHR (#2058,!3754)
+--
+--     -   Re-unify geometry description between build and create (!3754)
+--
+--     -   Fix ppGeometries ambiguity, add pGeometries (#2032,!3811)
+--
+--     -   add interactions with VK_EXT_robustness2 and allow
+--         nullDescriptor support for acceleration structures (#1920,!3848)
+--
+--     -   added future extensibility for AS updates (#2114,!3849)
+--
+--     -   Fix VU for dispatchrays and add a limit on the size of the full
+--         grid (#2160,!3851)
+--
+--     -   Add shaderGroupHandleAlignment property (#2180,!3875)
+--
+--     -   Clarify deferred host ops for pipeline creation (#2067,!3813)
+--
+--     -   Change acceleration structure build to always be sized
+--         (#2131,#2197,#2198,!3854,!3883,!3880)
+--
+-- -   Revision 10, 2020-07-03 (Mathieu Robart, Daniel Koch, Eric Werness,
+--     Tobias Hector)
+--
+--     -   Decomposition of the specification, from VK_KHR_ray_tracing to
+--         VK_KHR_acceleration_structure (#1918,!3912)
+--
+--     -   clarify buffer usage flags for ray tracing (#2181,!3939)
+--
+--     -   add max primitive counts to build indirect command (#2233,!3944)
+--
+--     -   Allocate acceleration structures from VkBuffers and add a mode
+--         to constrain the device address (#2131,!3936)
+--
+--     -   Move VK_GEOMETRY_TYPE_INSTANCES_KHR to main enum (#2243,!3952)
+--
+--     -   make build commands more consistent (#2247,!3958)
+--
+--     -   add interactions with UPDATE_AFTER_BIND (#2128,!3986)
+--
+--     -   correct and expand build command VUs (!4020)
+--
+--     -   fix copy command VUs (!4018)
+--
+--     -   added various alignment requirements (#2229,!3943)
+--
+--     -   fix valid usage for arrays of geometryCount items (#2198,!4010)
+--
+--     -   define what is allowed to change on RTAS updates and relevant
+--         VUs (#2177,!3961)
+--
+-- -   Revision 11, 2020-11-12 (Eric Werness, Josh Barczak, Daniel Koch,
+--     Tobias Hector)
+--
+--     -   de-alias NV and KHR acceleration structure types and associated
+--         commands (#2271,!4035)
+--
+--     -   specify alignment for host copy commands (#2273,!4037)
+--
+--     -   document
+--         'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR'
+--
+--     -   specify that acceleration structures are non-linear
+--         (#2289,!4068)
+--
+--     -   add several missing VUs for strides, vertexFormat, and indexType
+--         (#2315,!4069)
+--
+--     -   restore VUs for VkAccelerationStructureBuildGeometryInfoKHR
+--         (#2337,!4098)
+--
+--     -   ban multi-instance memory for host operations (#2324,!4102)
+--
+--     -   allow dstAccelerationStructure to be null for
+--         vkGetAccelerationStructureBuildSizesKHR (#2330,!4111)
+--
+--     -   more build VU cleanup (#2138,#4130)
+--
+--     -   specify host endianness for AS serialization (#2261,!4136)
+--
+--     -   add invertible transform matrix VU (#1710,!4140)
+--
+--     -   require geometryCount to be 1 for TLAS builds (!4145)
+--
+--     -   improved validity conditions for build addresses (#4142)
+--
+--     -   add single statement SPIR-V VUs, build limit VUs (!4158)
+--
+--     -   document limits for vertex and aabb strides (#2390,!4184)
+--
+--     -   specify that
+--         'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
+--         applies to AS copies (#2382,#4173)
+--
+--     -   define sync for AS build inputs and indirect buffer
+--         (#2407,!4208)
+--
+-- -   Revision 12, 2021-08-06 (Samuel Bourasseau)
+--
+--     -   rename
+--         VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR to
+--         VK_GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR (keep previous
+--         as alias).
+--
+--     -   Clarify description and add note.
+--
+-- -   Revision 13, 2021-09-30 (Jon Leech)
+--
+--     -   Add interaction with @VK_KHR_format_feature_flags2@ to @vk.xml@
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
+module Vulkan.Extensions.VK_KHR_acceleration_structure  ( destroyAccelerationStructureKHR
+                                                        , cmdCopyAccelerationStructureKHR
+                                                        , copyAccelerationStructureKHR
+                                                        , cmdCopyAccelerationStructureToMemoryKHR
+                                                        , copyAccelerationStructureToMemoryKHR
+                                                        , cmdCopyMemoryToAccelerationStructureKHR
+                                                        , copyMemoryToAccelerationStructureKHR
+                                                        , cmdWriteAccelerationStructuresPropertiesKHR
+                                                        , writeAccelerationStructuresPropertiesKHR
+                                                        , getDeviceAccelerationStructureCompatibilityKHR
+                                                        , createAccelerationStructureKHR
+                                                        , withAccelerationStructureKHR
+                                                        , cmdBuildAccelerationStructuresKHR
+                                                        , cmdBuildAccelerationStructuresIndirectKHR
+                                                        , buildAccelerationStructuresKHR
+                                                        , getAccelerationStructureDeviceAddressKHR
+                                                        , getAccelerationStructureBuildSizesKHR
+                                                        , pattern GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR
+                                                        , WriteDescriptorSetAccelerationStructureKHR(..)
+                                                        , PhysicalDeviceAccelerationStructureFeaturesKHR(..)
+                                                        , PhysicalDeviceAccelerationStructurePropertiesKHR(..)
+                                                        , AccelerationStructureGeometryTrianglesDataKHR(..)
+                                                        , AccelerationStructureGeometryAabbsDataKHR(..)
+                                                        , AccelerationStructureGeometryInstancesDataKHR(..)
+                                                        , AccelerationStructureGeometryKHR(..)
+                                                        , AccelerationStructureBuildGeometryInfoKHR(..)
+                                                        , AccelerationStructureBuildRangeInfoKHR(..)
+                                                        , AccelerationStructureCreateInfoKHR(..)
+                                                        , AabbPositionsKHR(..)
+                                                        , TransformMatrixKHR(..)
+                                                        , AccelerationStructureInstanceKHR(..)
+                                                        , AccelerationStructureDeviceAddressInfoKHR(..)
+                                                        , AccelerationStructureVersionInfoKHR(..)
+                                                        , CopyAccelerationStructureInfoKHR(..)
+                                                        , CopyAccelerationStructureToMemoryInfoKHR(..)
+                                                        , CopyMemoryToAccelerationStructureInfoKHR(..)
+                                                        , AccelerationStructureBuildSizesInfoKHR(..)
+                                                        , DeviceOrHostAddressKHR(..)
+                                                        , DeviceOrHostAddressConstKHR(..)
+                                                        , AccelerationStructureGeometryDataKHR(..)
+                                                        , GeometryInstanceFlagsKHR
+                                                        , GeometryInstanceFlagBitsKHR( GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR
+                                                                                     , GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR
+                                                                                     , GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR
+                                                                                     , GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR
+                                                                                     , GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_BIT_KHR
+                                                                                     , GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_BIT_KHR
+                                                                                     , ..
+                                                                                     )
+                                                        , GeometryFlagsKHR
+                                                        , GeometryFlagBitsKHR( GEOMETRY_OPAQUE_BIT_KHR
+                                                                             , GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR
+                                                                             , ..
+                                                                             )
+                                                        , BuildAccelerationStructureFlagsKHR
+                                                        , BuildAccelerationStructureFlagBitsKHR( BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR
+                                                                                               , BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR
+                                                                                               , BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR
+                                                                                               , BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR
+                                                                                               , BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR
+                                                                                               , BUILD_ACCELERATION_STRUCTURE_MICROMAP_LOSSY_BIT_KHR
+                                                                                               , BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_BIT_KHR
+                                                                                               , BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_BIT_KHR
+                                                                                               , BUILD_ACCELERATION_STRUCTURE_ALLOW_DATA_ACCESS_BIT_KHR
+                                                                                               , BUILD_ACCELERATION_STRUCTURE_ALLOW_DISPLACEMENT_MICROMAP_UPDATE_BIT_NV
+                                                                                               , BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_BIT_EXT
+                                                                                               , BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV
+                                                                                               , ..
+                                                                                               )
+                                                        , AccelerationStructureCreateFlagsKHR
+                                                        , AccelerationStructureCreateFlagBitsKHR( ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR
+                                                                                                , ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV
+                                                                                                , ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT
+                                                                                                , ..
+                                                                                                )
+                                                        , CopyAccelerationStructureModeKHR( COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR
+                                                                                          , COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR
+                                                                                          , COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR
+                                                                                          , COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR
+                                                                                          , ..
+                                                                                          )
+                                                        , BuildAccelerationStructureModeKHR( BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR
+                                                                                           , BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR
+                                                                                           , ..
+                                                                                           )
+                                                        , AccelerationStructureTypeKHR( ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR
+                                                                                      , ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR
+                                                                                      , ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR
+                                                                                      , ACCELERATION_STRUCTURE_TYPE_OPACITY_MICROMAP_KHR
+                                                                                      , ..
+                                                                                      )
+                                                        , GeometryTypeKHR( GEOMETRY_TYPE_TRIANGLES_KHR
+                                                                         , GEOMETRY_TYPE_AABBS_KHR
+                                                                         , GEOMETRY_TYPE_INSTANCES_KHR
+                                                                         , GEOMETRY_TYPE_MICROMAP_KHR
+                                                                         , GEOMETRY_TYPE_DENSE_GEOMETRY_FORMAT_TRIANGLES_AMDX
+                                                                         , GEOMETRY_TYPE_LINEAR_SWEPT_SPHERES_NV
+                                                                         , GEOMETRY_TYPE_SPHERES_NV
+                                                                         , ..
+                                                                         )
+                                                        , AccelerationStructureBuildTypeKHR( ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR
+                                                                                           , ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR
+                                                                                           , ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR
+                                                                                           , ..
+                                                                                           )
+                                                        , AccelerationStructureCompatibilityKHR( ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR
+                                                                                               , ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR
+                                                                                               , ..
+                                                                                               )
+                                                        , KHR_ACCELERATION_STRUCTURE_SPEC_VERSION
+                                                        , pattern KHR_ACCELERATION_STRUCTURE_SPEC_VERSION
+                                                        , KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME
+                                                        , pattern KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME
+                                                        , AccelerationStructureKHR(..)
+                                                        , DeferredOperationKHR(..)
+                                                        , DebugReportObjectTypeEXT(..)
+                                                        ) where
+
+import Data.Bits (Bits)
+import Data.Bits (FiniteBits)
+import Data.Bits (shiftL)
+import Data.Bits (shiftR)
+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 Data.Bits ((.&.))
+import Data.Bits ((.|.))
+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 GHC.Show (showsPrec)
+import Numeric (showHex)
+import qualified Data.ByteString (length)
+import Data.ByteString (packCStringLen)
+import Data.ByteString.Unsafe (unsafeUseAsCString)
+import Data.Coerce (coerce)
+import Control.Monad.Trans.Class (lift)
+import Control.Monad.Trans.Cont (evalContT)
+import Control.Monad.Trans.Cont (runContT)
+import Data.Vector (generateM)
+import qualified Data.Vector (imapM_)
+import qualified Data.Vector (length)
+import qualified Data.Vector (null)
+import Foreign.C.Types (CSize(..))
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (FromCStruct(..))
+import Vulkan.CStruct (ToCStruct)
+import Vulkan.CStruct (ToCStruct(..))
+import Vulkan.Zero (Zero)
+import Vulkan.Zero (Zero(..))
+import Control.Monad.IO.Class (MonadIO)
+import Data.String (IsString)
+import Data.Type.Equality ((:~:)(Refl))
+import Data.Typeable (Typeable)
+import Foreign.C.Types (CChar)
+import Foreign.C.Types (CFloat)
+import Foreign.C.Types (CFloat(..))
+import Foreign.C.Types (CFloat(CFloat))
+import Foreign.C.Types (CSize)
+import Foreign.C.Types (CSize(CSize))
+import Foreign.Storable (Storable)
+import Foreign.Storable (Storable(peek))
+import Foreign.Storable (Storable(poke))
+import qualified Foreign.Storable (Storable(..))
+import GHC.Generics (Generic)
+import GHC.IO.Exception (IOErrorType(..))
+import GHC.IO.Exception (IOException(..))
+import Data.Int (Int32)
+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.Word (Word8)
+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.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.CStruct.Extends (forgetExtensions)
+import Vulkan.CStruct.Utils (lowerArrayPtr)
+import Vulkan.CStruct.Extends (pokeSomeCStruct)
+import Vulkan.NamedType ((:::))
+import {-# SOURCE #-} Vulkan.Extensions.VK_AMDX_dense_geometry_format (AccelerationStructureDenseGeometryFormatTrianglesDataAMDX)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing_linear_swept_spheres (AccelerationStructureGeometryLinearSweptSpheresDataNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_opacity_micromap (AccelerationStructureGeometryMicromapDataKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing_motion_blur (AccelerationStructureGeometryMotionTrianglesDataNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing_linear_swept_spheres (AccelerationStructureGeometrySpheresDataNV)
+import Vulkan.Extensions.Handles (AccelerationStructureKHR)
+import Vulkan.Extensions.Handles (AccelerationStructureKHR(..))
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing_motion_blur (AccelerationStructureMotionInfoNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_displacement_micromap (AccelerationStructureTrianglesDisplacementMicromapNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_opacity_micromap (AccelerationStructureTrianglesOpacityMicromapEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_opacity_micromap (AccelerationStructureTrianglesOpacityMicromapKHR)
+import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)
+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.Extensions.Handles (DeferredOperationKHR)
+import Vulkan.Extensions.Handles (DeferredOperationKHR(..))
+import Vulkan.Core10.Handles (Device)
+import Vulkan.Core10.Handles (Device(..))
+import Vulkan.Core10.Handles (Device(Device))
+import Vulkan.Core10.FundamentalTypes (DeviceAddress)
+import Vulkan.Dynamic (DeviceCmds(pVkBuildAccelerationStructuresKHR))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdBuildAccelerationStructuresIndirectKHR))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdBuildAccelerationStructuresKHR))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdCopyAccelerationStructureKHR))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdCopyAccelerationStructureToMemoryKHR))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdCopyMemoryToAccelerationStructureKHR))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdWriteAccelerationStructuresPropertiesKHR))
+import Vulkan.Dynamic (DeviceCmds(pVkCopyAccelerationStructureKHR))
+import Vulkan.Dynamic (DeviceCmds(pVkCopyAccelerationStructureToMemoryKHR))
+import Vulkan.Dynamic (DeviceCmds(pVkCopyMemoryToAccelerationStructureKHR))
+import Vulkan.Dynamic (DeviceCmds(pVkCreateAccelerationStructureKHR))
+import Vulkan.Dynamic (DeviceCmds(pVkDestroyAccelerationStructureKHR))
+import Vulkan.Dynamic (DeviceCmds(pVkGetAccelerationStructureBuildSizesKHR))
+import Vulkan.Dynamic (DeviceCmds(pVkGetAccelerationStructureDeviceAddressKHR))
+import Vulkan.Dynamic (DeviceCmds(pVkGetDeviceAccelerationStructureCompatibilityKHR))
+import Vulkan.Dynamic (DeviceCmds(pVkWriteAccelerationStructuresPropertiesKHR))
+import Vulkan.Core10.FundamentalTypes (DeviceSize)
+import Vulkan.Core10.Handles (Device_T)
+import Vulkan.CStruct.Extends (Extends)
+import Vulkan.CStruct.Extends (Extendss)
+import Vulkan.CStruct.Extends (Extensible(..))
+import Vulkan.Core10.FundamentalTypes (Flags)
+import Vulkan.Core10.Enums.Format (Format)
+import Vulkan.Core10.Enums.IndexType (IndexType)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_buffer (OpaqueCaptureDescriptorDataCreateInfoEXT)
+import Vulkan.CStruct.Extends (PeekChain)
+import Vulkan.CStruct.Extends (PeekChain(..))
+import Vulkan.CStruct.Extends (PokeChain)
+import Vulkan.CStruct.Extends (PokeChain(..))
+import Vulkan.Core10.Handles (QueryPool)
+import Vulkan.Core10.Handles (QueryPool(..))
+import Vulkan.Core10.Enums.QueryType (QueryType)
+import Vulkan.Core10.Enums.QueryType (QueryType(..))
+import Vulkan.Core10.Enums.Result (Result)
+import Vulkan.Core10.Enums.Result (Result(..))
+import Vulkan.CStruct.Extends (SomeStruct)
+import Vulkan.CStruct.Extends (SomeStruct(..))
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Exception (VulkanException(..))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR))
+import Vulkan.Core10.Enums.Result (Result(SUCCESS))
+import Vulkan.Core10.APIConstants (pattern UUID_SIZE)
+import Vulkan.Extensions.Handles (AccelerationStructureKHR(..))
+import Vulkan.Extensions.VK_EXT_debug_report (DebugReportObjectTypeEXT(..))
+import Vulkan.Extensions.Handles (DeferredOperationKHR(..))
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkDestroyAccelerationStructureKHR
+  :: FunPtr (Ptr Device_T -> AccelerationStructureKHR -> Ptr AllocationCallbacks -> IO ()) -> Ptr Device_T -> AccelerationStructureKHR -> Ptr AllocationCallbacks -> IO ()
+
+-- | vkDestroyAccelerationStructureKHR - Destroy an acceleration structure
+-- object
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkDestroyAccelerationStructureKHR-accelerationStructure-08934#
+--     The
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-accelerationStructure ::accelerationStructure>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkDestroyAccelerationStructureKHR-accelerationStructure-02442#
+--     All submitted commands that refer to @accelerationStructure@ /must/
+--     have completed execution
+--
+-- -   #VUID-vkDestroyAccelerationStructureKHR-accelerationStructure-02443#
+--     If 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' were
+--     provided when @accelerationStructure@ was created, a compatible set
+--     of callbacks /must/ be provided here
+--
+-- -   #VUID-vkDestroyAccelerationStructureKHR-accelerationStructure-02444#
+--     If no 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' were
+--     provided when @accelerationStructure@ was created, @pAllocator@
+--     /must/ be @NULL@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkDestroyAccelerationStructureKHR-device-parameter# @device@
+--     /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkDestroyAccelerationStructureKHR-accelerationStructure-parameter#
+--     If @accelerationStructure@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', @accelerationStructure@
+--     /must/ be a valid
+--     'Vulkan.Extensions.Handles.AccelerationStructureKHR' handle
+--
+-- -   #VUID-vkDestroyAccelerationStructureKHR-pAllocator-parameter# If
+--     @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid pointer
+--     to a valid 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'
+--     structure
+--
+-- -   #VUID-vkDestroyAccelerationStructureKHR-accelerationStructure-parent#
+--     If @accelerationStructure@ is a valid handle, it /must/ have been
+--     created, allocated, or retrieved from @device@
+--
+-- == Host Synchronization
+--
+-- -   Host access to @accelerationStructure@ /must/ be externally
+--     synchronized
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
+-- 'Vulkan.Extensions.Handles.AccelerationStructureKHR',
+-- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',
+-- 'Vulkan.Core10.Handles.Device'
+destroyAccelerationStructureKHR :: forall io
+                                 . (MonadIO io)
+                                => -- | @device@ is the logical device that destroys the acceleration structure.
+                                   Device
+                                -> -- | @accelerationStructure@ is the acceleration structure to destroy.
+                                   AccelerationStructureKHR
+                                -> -- | @pAllocator@ controls host memory allocation as described in the
+                                   -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
+                                   -- chapter.
+                                   ("allocator" ::: Maybe AllocationCallbacks)
+                                -> io ()
+destroyAccelerationStructureKHR device
+                                  accelerationStructure
+                                  allocator = liftIO . evalContT $ do
+  let vkDestroyAccelerationStructureKHRPtr = pVkDestroyAccelerationStructureKHR (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkDestroyAccelerationStructureKHRPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkDestroyAccelerationStructureKHR is null" Nothing Nothing
+  let vkDestroyAccelerationStructureKHR' = mkVkDestroyAccelerationStructureKHR vkDestroyAccelerationStructureKHRPtr
+  pAllocator <- case (allocator) of
+    Nothing -> pure nullPtr
+    Just j -> ContT $ withCStruct (j)
+  lift $ traceAroundEvent "vkDestroyAccelerationStructureKHR" (vkDestroyAccelerationStructureKHR'
+                                                                 (deviceHandle (device))
+                                                                 (accelerationStructure)
+                                                                 pAllocator)
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdCopyAccelerationStructureKHR
+  :: FunPtr (Ptr CommandBuffer_T -> Ptr CopyAccelerationStructureInfoKHR -> IO ()) -> Ptr CommandBuffer_T -> Ptr CopyAccelerationStructureInfoKHR -> IO ()
+
+-- | vkCmdCopyAccelerationStructureKHR - Copy an acceleration structure
+--
+-- = Description
+--
+-- This command copies the @pInfo->src@ acceleration structure to the
+-- @pInfo->dst@ acceleration structure in the manner specified by
+-- @pInfo->mode@.
+--
+-- Accesses to @pInfo->src@ and @pInfo->dst@ /must/ be
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies synchronized>
+-- with the
+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR'
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-pipeline-stages pipeline stage>
+-- or the
+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-pipeline-stages pipeline stage>,
+-- and an
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-access-types access type>
+-- of
+-- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR'
+-- or
+-- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR'
+-- as appropriate.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdCopyAccelerationStructureKHR-accelerationStructure-08925#
+--     The
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-accelerationStructure ::accelerationStructure>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdCopyAccelerationStructureKHR-src-11633# The source
+--     acceleration structure @pInfo->src@ /must/ have been constructed
+--     prior to the execution of this command on the device
+--
+-- -   #VUID-vkCmdCopyAccelerationStructureKHR-src-11634# If the source
+--     acceleration structure @pInfo->src@ was constructed through
+--     deserialization, all micromap arrays the acceleration structure
+--     references that were not replaced by an acceleration structure
+--     update command /must/ have been deserialized using the serialized
+--     data of the corresponding micromaps used to originally build the
+--     acceleration structure prior to the execution of this command on the
+--     device
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdCopyAccelerationStructureKHR-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdCopyAccelerationStructureKHR-pInfo-parameter# @pInfo@
+--     /must/ be a valid pointer to a valid
+--     'CopyAccelerationStructureInfoKHR' structure
+--
+-- -   #VUID-vkCmdCopyAccelerationStructureKHR-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-vkCmdCopyAccelerationStructureKHR-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT' operations
+--
+-- -   #VUID-vkCmdCopyAccelerationStructureKHR-renderpass# This command
+--     /must/ only be called outside of a render pass instance
+--
+-- -   #VUID-vkCmdCopyAccelerationStructureKHR-suspended# This command
+--     /must/ not be called between suspended render pass instances
+--
+-- -   #VUID-vkCmdCopyAccelerationStructureKHR-videocoding# This command
+--     /must/ only be called outside of a video coding scope
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdCopyAccelerationStructureKHR is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
+-- 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'CopyAccelerationStructureInfoKHR'
+cmdCopyAccelerationStructureKHR :: forall io
+                                 . (MonadIO io)
+                                => -- | @commandBuffer@ is the command buffer into which the command will be
+                                   -- recorded.
+                                   CommandBuffer
+                                -> -- | @pInfo@ is a pointer to a 'CopyAccelerationStructureInfoKHR' structure
+                                   -- defining the copy operation.
+                                   CopyAccelerationStructureInfoKHR
+                                -> io ()
+cmdCopyAccelerationStructureKHR commandBuffer info = liftIO . evalContT $ do
+  let vkCmdCopyAccelerationStructureKHRPtr = pVkCmdCopyAccelerationStructureKHR (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdCopyAccelerationStructureKHRPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdCopyAccelerationStructureKHR is null" Nothing Nothing
+  let vkCmdCopyAccelerationStructureKHR' = mkVkCmdCopyAccelerationStructureKHR vkCmdCopyAccelerationStructureKHRPtr
+  pInfo <- ContT $ withCStruct (info)
+  lift $ traceAroundEvent "vkCmdCopyAccelerationStructureKHR" (vkCmdCopyAccelerationStructureKHR'
+                                                                 (commandBufferHandle (commandBuffer))
+                                                                 pInfo)
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCopyAccelerationStructureKHR
+  :: FunPtr (Ptr Device_T -> DeferredOperationKHR -> Ptr CopyAccelerationStructureInfoKHR -> IO Result) -> Ptr Device_T -> DeferredOperationKHR -> Ptr CopyAccelerationStructureInfoKHR -> IO Result
+
+-- | vkCopyAccelerationStructureKHR - Copy an acceleration structure on the
+-- host
+--
+-- = Description
+--
+-- This command fulfills the same task as 'cmdCopyAccelerationStructureKHR'
+-- but is executed by the host.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCopyAccelerationStructureKHR-accelerationStructureHostCommands-03582#
+--     The
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-accelerationStructureHostCommands ::accelerationStructureHostCommands>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCopyAccelerationStructureKHR-deferredOperation-03678# Any
+--     previous deferred operation that was associated with
+--     @deferredOperation@ /must/ be complete
+--
+-- -   #VUID-vkCopyAccelerationStructureKHR-buffer-03727# @pInfo->src@
+--     /must/ be bound to host-visible device memory
+--
+-- -   #VUID-vkCopyAccelerationStructureKHR-buffer-03728# @pInfo->dst@
+--     /must/ be bound to host-visible device memory
+--
+-- -   #VUID-vkCopyAccelerationStructureKHR-buffer-03780# @pInfo->src@
+--     /must/ be bound to memory that was not allocated with multiple
+--     instances
+--
+-- -   #VUID-vkCopyAccelerationStructureKHR-buffer-03781# @pInfo->dst@
+--     /must/ be bound to memory that was not allocated with multiple
+--     instances
+--
+-- -   #VUID-vkCopyAccelerationStructureKHR-src-11586# The source
+--     acceleration structure @pInfo->src@ /must/ have been constructed
+--     prior to the execution of this command
+--
+-- -   #VUID-vkCopyAccelerationStructureKHR-src-11587# If the source
+--     acceleration structure @pInfo->src@ was constructed through
+--     deserialization, all micromap arrays the acceleration structure
+--     references that were not replaced by an acceleration structure
+--     update command /must/ have been deserialized using the serialized
+--     data of the corresponding micromaps used to originally build the
+--     acceleration structure prior to the execution of this command
+--
+-- -   #VUID-vkCopyAccelerationStructureKHR-src-11588# @pInfo->src@ /must/
+--     have been created with 'createAccelerationStructureKHR'
+--
+-- -   #VUID-vkCopyAccelerationStructureKHR-dst-11589# @pInfo->dst@ /must/
+--     have been created with 'createAccelerationStructureKHR'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCopyAccelerationStructureKHR-device-parameter# @device@
+--     /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkCopyAccelerationStructureKHR-deferredOperation-parameter# If
+--     @deferredOperation@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
+--     @deferredOperation@ /must/ be a valid
+--     'Vulkan.Extensions.Handles.DeferredOperationKHR' handle
+--
+-- -   #VUID-vkCopyAccelerationStructureKHR-pInfo-parameter# @pInfo@ /must/
+--     be a valid pointer to a valid 'CopyAccelerationStructureInfoKHR'
+--     structure
+--
+-- -   #VUID-vkCopyAccelerationStructureKHR-deferredOperation-parent# If
+--     @deferredOperation@ is a valid handle, it /must/ have been created,
+--     allocated, or retrieved from @device@
+--
+-- == Return Codes
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
+--
+--     -   'Vulkan.Core10.Enums.Result.OPERATION_DEFERRED_KHR'
+--
+--     -   'Vulkan.Core10.Enums.Result.OPERATION_NOT_DEFERRED_KHR'
+--
+--     -   '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_DEVICE_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
+-- 'CopyAccelerationStructureInfoKHR',
+-- 'Vulkan.Extensions.Handles.DeferredOperationKHR',
+-- 'Vulkan.Core10.Handles.Device'
+copyAccelerationStructureKHR :: forall io
+                              . (MonadIO io)
+                             => -- | @device@ is the device which owns the acceleration structures.
+                                Device
+                             -> -- | @deferredOperation@ is an optional
+                                -- 'Vulkan.Extensions.Handles.DeferredOperationKHR' to
+                                -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#deferred-host-operations-requesting request deferral>
+                                -- for this command.
+                                DeferredOperationKHR
+                             -> -- | @pInfo@ is a pointer to a 'CopyAccelerationStructureInfoKHR' structure
+                                -- defining the copy operation.
+                                CopyAccelerationStructureInfoKHR
+                             -> io (Result)
+copyAccelerationStructureKHR device
+                               deferredOperation
+                               info = liftIO . evalContT $ do
+  let vkCopyAccelerationStructureKHRPtr = pVkCopyAccelerationStructureKHR (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCopyAccelerationStructureKHRPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCopyAccelerationStructureKHR is null" Nothing Nothing
+  let vkCopyAccelerationStructureKHR' = mkVkCopyAccelerationStructureKHR vkCopyAccelerationStructureKHRPtr
+  pInfo <- ContT $ withCStruct (info)
+  r <- lift $ traceAroundEvent "vkCopyAccelerationStructureKHR" (vkCopyAccelerationStructureKHR'
+                                                                   (deviceHandle (device))
+                                                                   (deferredOperation)
+                                                                   pInfo)
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+  pure $ (r)
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdCopyAccelerationStructureToMemoryKHR
+  :: FunPtr (Ptr CommandBuffer_T -> Ptr CopyAccelerationStructureToMemoryInfoKHR -> IO ()) -> Ptr CommandBuffer_T -> Ptr CopyAccelerationStructureToMemoryInfoKHR -> IO ()
+
+-- | vkCmdCopyAccelerationStructureToMemoryKHR - Copy an acceleration
+-- structure to device memory
+--
+-- = Description
+--
+-- Accesses to @pInfo->src@ /must/ be
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies synchronized>
+-- with the
+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR'
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-pipeline-stages pipeline stage>
+-- or the
+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-pipeline-stages pipeline stage>,
+-- and an
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-access-types access type>
+-- of
+-- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR'.
+-- Accesses to the buffer indicated by @pInfo->dst.deviceAddress@ /must/ be
+-- synchronized with the
+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR'
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-pipeline-stages pipeline stage>
+-- or the
+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-pipeline-stages pipeline stage>,
+-- and an access type of
+-- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_TRANSFER_WRITE_BIT'.
+--
+-- This command produces the same results as
+-- 'copyAccelerationStructureToMemoryKHR', but writes its result to a
+-- device address, and is executed on the device rather than the host. The
+-- output /may/ not necessarily be bit-for-bit identical, but it can be
+-- equally used by either 'cmdCopyMemoryToAccelerationStructureKHR' or
+-- 'copyMemoryToAccelerationStructureKHR'.
+--
+-- The defined header structure for the serialized data consists of:
+--
+-- -   'Vulkan.Core10.APIConstants.UUID_SIZE' bytes of data matching
+--     'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceIDProperties'::@driverUUID@
+--
+-- -   'Vulkan.Core10.APIConstants.UUID_SIZE' bytes of data identifying the
+--     compatibility for comparison using
+--     'getDeviceAccelerationStructureCompatibilityKHR'
+--
+-- For a top-level or bottom-level acceleration structure, this is followed
+-- by: * A 64-bit integer of the total size matching the value queried
+-- using
+-- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR'
+-- * A 64-bit integer of the deserialized size to be passed in to
+-- 'AccelerationStructureCreateInfoKHR'::@size@
+--
+-- For a top-level acceleration structure, the remainder of the serialized
+-- header consists of:
+--
+-- -   A 64-bit integer of the count of the number of acceleration
+--     structure handles following. This value matches the value queried
+--     using
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR'.
+--     For top-level acceleration structures this number is
+--     implementation-dependent; the number of and ordering of the handles
+--     may not match the instance descriptions which were used to build the
+--     acceleration structure.
+--
+-- The corresponding handles matching the values returned by
+-- 'getAccelerationStructureDeviceAddressKHR' or
+-- 'Vulkan.Extensions.VK_NV_ray_tracing.getAccelerationStructureHandleNV'
+-- are tightly packed in the buffer following the count. The application is
+-- expected to store a mapping between those handles and the original
+-- application-generated bottom-level acceleration structures to provide
+-- when deserializing.
+--
+-- For a bottom-level acceleration structure, the remainder of the
+-- serialized header consists of:
+--
+-- -   A 64-bit integer consisting of two packed 32 bit values. The high 32
+--     bits are 0xFFFFFFFF to indicate a block-based format, and the low 32
+--     bits contain the number of serialized blocks that follow
+--
+-- -   For each block:
+--
+--     -   A 32-bit unsigned integer indicating the block type
+--         corresponding to values in the
+--         'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureSerializedBlockTypeKHR'
+--         enumeration
+--
+--     -   A 32-bit reserved value for alignment
+--
+--     -   A 64-bit unsigned integer indicating the number of block buffer
+--         device addresses that follow the block header
+--
+--     -   An array of 64-bit buffer device addresses, with the count
+--         matching the previous value
+--
+-- If the block type is
+-- 'Vulkan.Extensions.VK_KHR_opacity_micromap.ACCELERATION_STRUCTURE_SERIALIZED_BLOCK_TYPE_OPACITY_MICROMAP_KHR',
+-- the corresponding buffer device addresses are tightly packed in the
+-- buffer and match the values returned by
+-- 'Vulkan.Extensions.VK_KHR_buffer_device_address.getBufferDeviceAddressKHR'
+-- for the underlying buffer objects for the opacity micromaps. An
+-- implementation /may/ either return @NULL@ for a geometry with no opacity
+-- micromap or only return valid device address entries in the array.
+-- Similar to the above, the application /must/ provide a mapping between
+-- the valid buffer device addresses and the original application-generated
+-- opacity micromaps when deserializing. If the implementation returned
+-- @NULL@ addresses for geometry without micromaps, the application /must/
+-- provide @NULL@ device addresses mapped to those when deserializing.
+--
+-- The addresses of micromaps provided to deserializing /must/ be
+-- compatible with the micromaps that were used for building the
+-- acceleration structure that was serialized. They /must/ be created
+-- before deserializing with identical @type@ and @createFlags@ except for
+-- the
+-- 'ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR'
+-- flag set.
+--
+-- Before using the deserialized acceleration structure, the micromaps
+-- /must/ be deserialized using the serialized output of the micromap that
+-- was originally referenced by the serialized acceleration structure, or,
+-- if the acceleration structure was originally built with the
+-- 'BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_BIT_KHR',
+-- the application /may/ replace the micromap with a newly constructed
+-- micromap, using the normal update rules.
+--
+-- The serialized data is written to the buffer (or read from the buffer)
+-- according to the host endianness.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdCopyAccelerationStructureToMemoryKHR-accelerationStructure-08926#
+--     The
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-accelerationStructure ::accelerationStructure>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdCopyAccelerationStructureToMemoryKHR-pInfo-03739#
+--     @pInfo->dst.deviceAddress@ /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdCopyAccelerationStructureToMemoryKHR-pInfo-03740#
+--     @pInfo->dst.deviceAddress@ /must/ be aligned to @256@ bytes
+--
+-- -   #VUID-vkCmdCopyAccelerationStructureToMemoryKHR-pInfo-11699# If
+--     @pInfo->src@ was built with a @type@ of
+--     'ACCELERATION_STRUCTURE_TYPE_OPACITY_MICROMAP_KHR',
+--     @pInfo->dst.deviceAddress@ /must/ be aligned to @128@ bytes
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdCopyAccelerationStructureToMemoryKHR-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdCopyAccelerationStructureToMemoryKHR-pInfo-parameter#
+--     @pInfo@ /must/ be a valid pointer to a valid
+--     'CopyAccelerationStructureToMemoryInfoKHR' structure
+--
+-- -   #VUID-vkCmdCopyAccelerationStructureToMemoryKHR-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-vkCmdCopyAccelerationStructureToMemoryKHR-commandBuffer-cmdpool#
+--     The 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT' operations
+--
+-- -   #VUID-vkCmdCopyAccelerationStructureToMemoryKHR-renderpass# This
+--     command /must/ only be called outside of a render pass instance
+--
+-- -   #VUID-vkCmdCopyAccelerationStructureToMemoryKHR-suspended# This
+--     command /must/ not be called between suspended render pass instances
+--
+-- -   #VUID-vkCmdCopyAccelerationStructureToMemoryKHR-videocoding# This
+--     command /must/ only be called outside of a video coding scope
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdCopyAccelerationStructureToMemoryKHR is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
+-- 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'CopyAccelerationStructureToMemoryInfoKHR'
+cmdCopyAccelerationStructureToMemoryKHR :: forall io
+                                         . (MonadIO io)
+                                        => -- | @commandBuffer@ is the command buffer into which the command will be
+                                           -- recorded.
+                                           CommandBuffer
+                                        -> -- | @pInfo@ is a pointer to a 'CopyAccelerationStructureToMemoryInfoKHR'
+                                           -- structure defining the copy operation.
+                                           CopyAccelerationStructureToMemoryInfoKHR
+                                        -> io ()
+cmdCopyAccelerationStructureToMemoryKHR commandBuffer
+                                          info = liftIO . evalContT $ do
+  let vkCmdCopyAccelerationStructureToMemoryKHRPtr = pVkCmdCopyAccelerationStructureToMemoryKHR (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdCopyAccelerationStructureToMemoryKHRPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdCopyAccelerationStructureToMemoryKHR is null" Nothing Nothing
+  let vkCmdCopyAccelerationStructureToMemoryKHR' = mkVkCmdCopyAccelerationStructureToMemoryKHR vkCmdCopyAccelerationStructureToMemoryKHRPtr
+  pInfo <- ContT $ withCStruct (info)
+  lift $ traceAroundEvent "vkCmdCopyAccelerationStructureToMemoryKHR" (vkCmdCopyAccelerationStructureToMemoryKHR'
+                                                                         (commandBufferHandle (commandBuffer))
+                                                                         pInfo)
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCopyAccelerationStructureToMemoryKHR
+  :: FunPtr (Ptr Device_T -> DeferredOperationKHR -> Ptr CopyAccelerationStructureToMemoryInfoKHR -> IO Result) -> Ptr Device_T -> DeferredOperationKHR -> Ptr CopyAccelerationStructureToMemoryInfoKHR -> IO Result
+
+-- | vkCopyAccelerationStructureToMemoryKHR - Serialize an acceleration
+-- structure on the host
+--
+-- = Description
+--
+-- This command fulfills the same task as
+-- 'cmdCopyAccelerationStructureToMemoryKHR' but is executed by the host.
+--
+-- This command produces the same results as
+-- 'cmdCopyAccelerationStructureToMemoryKHR', but writes its result
+-- directly to a host pointer, and is executed on the host rather than the
+-- device. The output /may/ not necessarily be bit-for-bit identical, but
+-- it can be equally used by either
+-- 'cmdCopyMemoryToAccelerationStructureKHR' or
+-- 'copyMemoryToAccelerationStructureKHR'.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCopyAccelerationStructureToMemoryKHR-accelerationStructureHostCommands-03584#
+--     The
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-accelerationStructureHostCommands ::accelerationStructureHostCommands>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCopyAccelerationStructureToMemoryKHR-deferredOperation-03678#
+--     Any previous deferred operation that was associated with
+--     @deferredOperation@ /must/ be complete
+--
+-- -   #VUID-vkCopyAccelerationStructureToMemoryKHR-pInfo-03731#
+--     @pInfo->src@ /must/ be bound to host-visible device memory
+--
+-- -   #VUID-vkCopyAccelerationStructureToMemoryKHR-pInfo-03732#
+--     @pInfo->dst.hostAddress@ /must/ be a valid host pointer
+--
+-- -   #VUID-vkCopyAccelerationStructureToMemoryKHR-pInfo-03751#
+--     @pInfo->dst.hostAddress@ /must/ be aligned to 16 bytes
+--
+-- -   #VUID-vkCopyAccelerationStructureToMemoryKHR-buffer-03783#
+--     @pInfo->src@ /must/ not be bound to memory that was allocated with
+--     multiple instances
+--
+-- -   #VUID-vkCopyAccelerationStructureToMemoryKHR-src-11678# @pInfo->src@
+--     /must/ have been created with 'createAccelerationStructureKHR'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCopyAccelerationStructureToMemoryKHR-device-parameter#
+--     @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkCopyAccelerationStructureToMemoryKHR-deferredOperation-parameter#
+--     If @deferredOperation@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', @deferredOperation@ /must/
+--     be a valid 'Vulkan.Extensions.Handles.DeferredOperationKHR' handle
+--
+-- -   #VUID-vkCopyAccelerationStructureToMemoryKHR-pInfo-parameter#
+--     @pInfo@ /must/ be a valid pointer to a valid
+--     'CopyAccelerationStructureToMemoryInfoKHR' structure
+--
+-- -   #VUID-vkCopyAccelerationStructureToMemoryKHR-deferredOperation-parent#
+--     If @deferredOperation@ is a valid handle, it /must/ have been
+--     created, allocated, or retrieved from @device@
+--
+-- == Return Codes
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
+--
+--     -   'Vulkan.Core10.Enums.Result.OPERATION_DEFERRED_KHR'
+--
+--     -   'Vulkan.Core10.Enums.Result.OPERATION_NOT_DEFERRED_KHR'
+--
+--     -   '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_DEVICE_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
+-- 'CopyAccelerationStructureToMemoryInfoKHR',
+-- 'Vulkan.Extensions.Handles.DeferredOperationKHR',
+-- 'Vulkan.Core10.Handles.Device'
+copyAccelerationStructureToMemoryKHR :: forall io
+                                      . (MonadIO io)
+                                     => -- | @device@ is the device which owns @pInfo->src@.
+                                        Device
+                                     -> -- | @deferredOperation@ is an optional
+                                        -- 'Vulkan.Extensions.Handles.DeferredOperationKHR' to
+                                        -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#deferred-host-operations-requesting request deferral>
+                                        -- for this command.
+                                        DeferredOperationKHR
+                                     -> -- | @pInfo@ is a pointer to a 'CopyAccelerationStructureToMemoryInfoKHR'
+                                        -- structure defining the copy operation.
+                                        CopyAccelerationStructureToMemoryInfoKHR
+                                     -> io (Result)
+copyAccelerationStructureToMemoryKHR device
+                                       deferredOperation
+                                       info = liftIO . evalContT $ do
+  let vkCopyAccelerationStructureToMemoryKHRPtr = pVkCopyAccelerationStructureToMemoryKHR (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCopyAccelerationStructureToMemoryKHRPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCopyAccelerationStructureToMemoryKHR is null" Nothing Nothing
+  let vkCopyAccelerationStructureToMemoryKHR' = mkVkCopyAccelerationStructureToMemoryKHR vkCopyAccelerationStructureToMemoryKHRPtr
+  pInfo <- ContT $ withCStruct (info)
+  r <- lift $ traceAroundEvent "vkCopyAccelerationStructureToMemoryKHR" (vkCopyAccelerationStructureToMemoryKHR'
+                                                                           (deviceHandle (device))
+                                                                           (deferredOperation)
+                                                                           pInfo)
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+  pure $ (r)
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdCopyMemoryToAccelerationStructureKHR
+  :: FunPtr (Ptr CommandBuffer_T -> Ptr CopyMemoryToAccelerationStructureInfoKHR -> IO ()) -> Ptr CommandBuffer_T -> Ptr CopyMemoryToAccelerationStructureInfoKHR -> IO ()
+
+-- | vkCmdCopyMemoryToAccelerationStructureKHR - Copy device memory to an
+-- acceleration structure
+--
+-- = Description
+--
+-- Accesses to @pInfo->dst@ /must/ be
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies synchronized>
+-- with the
+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR'
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-pipeline-stages pipeline stage>
+-- or the
+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-pipeline-stages pipeline stage>,
+-- and an
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-access-types access type>
+-- of
+-- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR'.
+-- Accesses to the buffer indicated by @pInfo->src.deviceAddress@ /must/ be
+-- synchronized with the
+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR'
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-pipeline-stages pipeline stage>
+-- or the
+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-pipeline-stages pipeline stage>,
+-- and an access type of
+-- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_TRANSFER_READ_BIT'.
+--
+-- This command can accept acceleration structures produced by either
+-- 'cmdCopyAccelerationStructureToMemoryKHR' or
+-- 'copyAccelerationStructureToMemoryKHR'.
+--
+-- The structure provided as input to deserialize is as described in
+-- 'cmdCopyAccelerationStructureToMemoryKHR', with any acceleration
+-- structure handles filled in with the newly-queried handles to bottom
+-- level acceleration structures created before deserialization. These do
+-- not need to be built at deserialize time, but /must/ be created.
+--
+-- The application /must/ also provide any required micromap addresses in
+-- the header as described in
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#serialized-as-header >.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdCopyMemoryToAccelerationStructureKHR-accelerationStructure-08927#
+--     The
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-accelerationStructure ::accelerationStructure>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdCopyMemoryToAccelerationStructureKHR-pInfo-03742#
+--     @pInfo->src.deviceAddress@ /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdCopyMemoryToAccelerationStructureKHR-pInfo-03743#
+--     @pInfo->src.deviceAddress@ /must/ be aligned to @256@ bytes
+--
+-- -   #VUID-vkCmdCopyAccelerationStructureToMemoryKHR-pInfo-11700# If the
+--     serialized acceleration structure in @pInfo->src@ was originally
+--     built with a @type@ of
+--     'ACCELERATION_STRUCTURE_TYPE_OPACITY_MICROMAP_KHR',
+--     @pInfo->src.deviceAddress@ /must/ be aligned to @128@ bytes
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdCopyMemoryToAccelerationStructureKHR-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdCopyMemoryToAccelerationStructureKHR-pInfo-parameter#
+--     @pInfo@ /must/ be a valid pointer to a valid
+--     'CopyMemoryToAccelerationStructureInfoKHR' structure
+--
+-- -   #VUID-vkCmdCopyMemoryToAccelerationStructureKHR-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-vkCmdCopyMemoryToAccelerationStructureKHR-commandBuffer-cmdpool#
+--     The 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT' operations
+--
+-- -   #VUID-vkCmdCopyMemoryToAccelerationStructureKHR-renderpass# This
+--     command /must/ only be called outside of a render pass instance
+--
+-- -   #VUID-vkCmdCopyMemoryToAccelerationStructureKHR-suspended# This
+--     command /must/ not be called between suspended render pass instances
+--
+-- -   #VUID-vkCmdCopyMemoryToAccelerationStructureKHR-videocoding# This
+--     command /must/ only be called outside of a video coding scope
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdCopyMemoryToAccelerationStructureKHR is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
+-- 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'CopyMemoryToAccelerationStructureInfoKHR'
+cmdCopyMemoryToAccelerationStructureKHR :: forall io
+                                         . (MonadIO io)
+                                        => -- | @commandBuffer@ is the command buffer into which the command will be
+                                           -- recorded.
+                                           CommandBuffer
+                                        -> -- | @pInfo@ is a pointer to a 'CopyMemoryToAccelerationStructureInfoKHR'
+                                           -- structure defining the copy operation.
+                                           CopyMemoryToAccelerationStructureInfoKHR
+                                        -> io ()
+cmdCopyMemoryToAccelerationStructureKHR commandBuffer
+                                          info = liftIO . evalContT $ do
+  let vkCmdCopyMemoryToAccelerationStructureKHRPtr = pVkCmdCopyMemoryToAccelerationStructureKHR (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdCopyMemoryToAccelerationStructureKHRPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdCopyMemoryToAccelerationStructureKHR is null" Nothing Nothing
+  let vkCmdCopyMemoryToAccelerationStructureKHR' = mkVkCmdCopyMemoryToAccelerationStructureKHR vkCmdCopyMemoryToAccelerationStructureKHRPtr
+  pInfo <- ContT $ withCStruct (info)
+  lift $ traceAroundEvent "vkCmdCopyMemoryToAccelerationStructureKHR" (vkCmdCopyMemoryToAccelerationStructureKHR'
+                                                                         (commandBufferHandle (commandBuffer))
+                                                                         pInfo)
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCopyMemoryToAccelerationStructureKHR
+  :: FunPtr (Ptr Device_T -> DeferredOperationKHR -> Ptr CopyMemoryToAccelerationStructureInfoKHR -> IO Result) -> Ptr Device_T -> DeferredOperationKHR -> Ptr CopyMemoryToAccelerationStructureInfoKHR -> IO Result
+
+-- | vkCopyMemoryToAccelerationStructureKHR - Deserialize an acceleration
+-- structure on the host
+--
+-- = Description
+--
+-- This command fulfills the same task as
+-- 'cmdCopyMemoryToAccelerationStructureKHR' but is executed by the host.
+--
+-- This command can accept acceleration structures produced by either
+-- 'cmdCopyAccelerationStructureToMemoryKHR' or
+-- 'copyAccelerationStructureToMemoryKHR'.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCopyMemoryToAccelerationStructureKHR-accelerationStructureHostCommands-03583#
+--     The
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-accelerationStructureHostCommands ::accelerationStructureHostCommands>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCopyMemoryToAccelerationStructureKHR-deferredOperation-03678#
+--     Any previous deferred operation that was associated with
+--     @deferredOperation@ /must/ be complete
+--
+-- -   #VUID-vkCopyMemoryToAccelerationStructureKHR-pInfo-03729#
+--     @pInfo->src.hostAddress@ /must/ be a valid host pointer
+--
+-- -   #VUID-vkCopyMemoryToAccelerationStructureKHR-pInfo-03750#
+--     @pInfo->src.hostAddress@ /must/ be aligned to 16 bytes
+--
+-- -   #VUID-vkCopyMemoryToAccelerationStructureKHR-buffer-03730#
+--     @pInfo->dst@ /must/ be bound to host-visible device memory
+--
+-- -   #VUID-vkCopyMemoryToAccelerationStructureKHR-buffer-03782#
+--     @pInfo->dst@ /must/ be bound to memory that was not allocated with
+--     multiple instances
+--
+-- -   #VUID-vkCopyMemoryToAccelerationStructureKHR-dst-11677# @pInfo->dst@
+--     /must/ have been created with 'createAccelerationStructureKHR'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCopyMemoryToAccelerationStructureKHR-device-parameter#
+--     @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkCopyMemoryToAccelerationStructureKHR-deferredOperation-parameter#
+--     If @deferredOperation@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', @deferredOperation@ /must/
+--     be a valid 'Vulkan.Extensions.Handles.DeferredOperationKHR' handle
+--
+-- -   #VUID-vkCopyMemoryToAccelerationStructureKHR-pInfo-parameter#
+--     @pInfo@ /must/ be a valid pointer to a valid
+--     'CopyMemoryToAccelerationStructureInfoKHR' structure
+--
+-- -   #VUID-vkCopyMemoryToAccelerationStructureKHR-deferredOperation-parent#
+--     If @deferredOperation@ is a valid handle, it /must/ have been
+--     created, allocated, or retrieved from @device@
+--
+-- == Return Codes
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
+--
+--     -   'Vulkan.Core10.Enums.Result.OPERATION_DEFERRED_KHR'
+--
+--     -   'Vulkan.Core10.Enums.Result.OPERATION_NOT_DEFERRED_KHR'
+--
+--     -   '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_DEVICE_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
+-- 'CopyMemoryToAccelerationStructureInfoKHR',
+-- 'Vulkan.Extensions.Handles.DeferredOperationKHR',
+-- 'Vulkan.Core10.Handles.Device'
+copyMemoryToAccelerationStructureKHR :: forall io
+                                      . (MonadIO io)
+                                     => -- | @device@ is the device which owns @pInfo->dst@.
+                                        Device
+                                     -> -- | @deferredOperation@ is an optional
+                                        -- 'Vulkan.Extensions.Handles.DeferredOperationKHR' to
+                                        -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#deferred-host-operations-requesting request deferral>
+                                        -- for this command.
+                                        DeferredOperationKHR
+                                     -> -- | @pInfo@ is a pointer to a 'CopyMemoryToAccelerationStructureInfoKHR'
+                                        -- structure defining the copy operation.
+                                        CopyMemoryToAccelerationStructureInfoKHR
+                                     -> io (Result)
+copyMemoryToAccelerationStructureKHR device
+                                       deferredOperation
+                                       info = liftIO . evalContT $ do
+  let vkCopyMemoryToAccelerationStructureKHRPtr = pVkCopyMemoryToAccelerationStructureKHR (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCopyMemoryToAccelerationStructureKHRPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCopyMemoryToAccelerationStructureKHR is null" Nothing Nothing
+  let vkCopyMemoryToAccelerationStructureKHR' = mkVkCopyMemoryToAccelerationStructureKHR vkCopyMemoryToAccelerationStructureKHRPtr
+  pInfo <- ContT $ withCStruct (info)
+  r <- lift $ traceAroundEvent "vkCopyMemoryToAccelerationStructureKHR" (vkCopyMemoryToAccelerationStructureKHR'
+                                                                           (deviceHandle (device))
+                                                                           (deferredOperation)
+                                                                           pInfo)
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+  pure $ (r)
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdWriteAccelerationStructuresPropertiesKHR
+  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Ptr AccelerationStructureKHR -> QueryType -> QueryPool -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Ptr AccelerationStructureKHR -> QueryType -> QueryPool -> Word32 -> IO ()
+
+-- | vkCmdWriteAccelerationStructuresPropertiesKHR - Write acceleration
+-- structure result parameters to query results.
+--
+-- = Description
+--
+-- Accesses to any of the acceleration structures listed in
+-- @pAccelerationStructures@ /must/ be
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies synchronized>
+-- with the
+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR'
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-pipeline-stages pipeline stage>
+-- or the
+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-pipeline-stages pipeline stage>,
+-- and an
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-access-types access type>
+-- of
+-- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR'.
+--
+-- -   If @queryType@ is
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR',
+--     then the value written out is the number of bytes required by a
+--     compacted acceleration structure.
+--
+-- -   If @queryType@ is
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR',
+--     then the value written out is the number of bytes required by a
+--     serialized acceleration structure.
+--
+-- -   If @queryType@ is
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_SIZE_KHR',
+--     then the value written out is the number of bytes required by the
+--     acceleration structure.
+--
+-- -   'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR'
+--     specifies a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#serialized-as-header serialization acceleration structure pointer count query>.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-accelerationStructure-08924#
+--     The
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-accelerationStructure ::accelerationStructure>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-queryPool-02493#
+--     @queryPool@ /must/ have been created with a @queryType@ matching
+--     @queryType@
+--
+-- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-queryPool-02494#
+--     The queries identified by @queryPool@ and @firstQuery@ /must/ be
+--     /unavailable/
+--
+-- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-query-04880# The
+--     sum of @firstQuery@ plus @accelerationStructureCount@ /must/ be less
+--     than or equal to the number of queries in @queryPool@
+--
+-- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-pAccelerationStructures-11684#
+--     All acceleration structures in @pAccelerationStructures@ /must/ have
+--     been constructed prior to the execution of this command on the
+--     device
+--
+-- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-accelerationStructures-03431#
+--     All acceleration structures in @pAccelerationStructures@ /must/ have
+--     been built with
+--     'BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR' if
+--     @queryType@ is
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR'
+--
+-- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-queryType-06742#
+--     @queryType@ /must/ be
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_SIZE_KHR',
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR',
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR',
+--     or
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR'
+--
+-- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-pAccelerationStructures-12425#
+--     All acceleration structures in @pAccelerationStructures@ /must/ have
+--     been built with 'ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR' if
+--     @queryType@ is
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR'
+--
+-- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-buffer-03736#
+--     Each element of @pAccelerationStructures@ /must/ be fully backed by
+--     physical memory
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-pAccelerationStructures-parameter#
+--     @pAccelerationStructures@ /must/ be a valid pointer to an array of
+--     @accelerationStructureCount@ valid
+--     'Vulkan.Extensions.Handles.AccelerationStructureKHR' handles
+--
+-- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-queryType-parameter#
+--     @queryType@ /must/ be a valid
+--     'Vulkan.Core10.Enums.QueryType.QueryType' value
+--
+-- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-queryPool-parameter#
+--     @queryPool@ /must/ be a valid 'Vulkan.Core10.Handles.QueryPool'
+--     handle
+--
+-- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-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-vkCmdWriteAccelerationStructuresPropertiesKHR-commandBuffer-cmdpool#
+--     The 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT' operations
+--
+-- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-renderpass# This
+--     command /must/ only be called outside of a render pass instance
+--
+-- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-suspended# This
+--     command /must/ not be called between suspended render pass instances
+--
+-- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-videocoding#
+--     This command /must/ only be called outside of a video coding scope
+--
+-- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-accelerationStructureCount-arraylength#
+--     @accelerationStructureCount@ /must/ be greater than @0@
+--
+-- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-commonparent#
+--     Each of @commandBuffer@, @queryPool@, and the elements of
+--     @pAccelerationStructures@ /must/ have been created, allocated, or
+--     retrieved from the same 'Vulkan.Core10.Handles.Device'
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdWriteAccelerationStructuresPropertiesKHR is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
+-- 'Vulkan.Extensions.Handles.AccelerationStructureKHR',
+-- 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'Vulkan.Core10.Handles.QueryPool',
+-- 'Vulkan.Core10.Enums.QueryType.QueryType'
+cmdWriteAccelerationStructuresPropertiesKHR :: forall io
+                                             . (MonadIO io)
+                                            => -- | @commandBuffer@ is the command buffer into which the command will be
+                                               -- recorded.
+                                               CommandBuffer
+                                            -> -- | @pAccelerationStructures@ is a pointer to an array of existing
+                                               -- previously built acceleration structures.
+                                               ("accelerationStructures" ::: Vector AccelerationStructureKHR)
+                                            -> -- | @queryType@ is a 'Vulkan.Core10.Enums.QueryType.QueryType' value
+                                               -- specifying the type of queries managed by the pool.
+                                               QueryType
+                                            -> -- | @queryPool@ is the query pool that will manage the results of the query.
+                                               QueryPool
+                                            -> -- | @firstQuery@ is the first query index within the query pool that will
+                                               -- contain the @accelerationStructureCount@ number of results.
+                                               ("firstQuery" ::: Word32)
+                                            -> io ()
+cmdWriteAccelerationStructuresPropertiesKHR commandBuffer
+                                              accelerationStructures
+                                              queryType
+                                              queryPool
+                                              firstQuery = liftIO . evalContT $ do
+  let vkCmdWriteAccelerationStructuresPropertiesKHRPtr = pVkCmdWriteAccelerationStructuresPropertiesKHR (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdWriteAccelerationStructuresPropertiesKHRPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdWriteAccelerationStructuresPropertiesKHR is null" Nothing Nothing
+  let vkCmdWriteAccelerationStructuresPropertiesKHR' = mkVkCmdWriteAccelerationStructuresPropertiesKHR vkCmdWriteAccelerationStructuresPropertiesKHRPtr
+  pPAccelerationStructures <- ContT $ allocaBytes @AccelerationStructureKHR ((Data.Vector.length (accelerationStructures)) * 8)
+  lift $ Data.Vector.imapM_ (\i e -> poke (pPAccelerationStructures `plusPtr` (8 * (i)) :: Ptr AccelerationStructureKHR) (e)) (accelerationStructures)
+  lift $ traceAroundEvent "vkCmdWriteAccelerationStructuresPropertiesKHR" (vkCmdWriteAccelerationStructuresPropertiesKHR'
+                                                                             (commandBufferHandle (commandBuffer))
+                                                                             ((fromIntegral (Data.Vector.length $ (accelerationStructures)) :: Word32))
+                                                                             (pPAccelerationStructures)
+                                                                             (queryType)
+                                                                             (queryPool)
+                                                                             (firstQuery))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkWriteAccelerationStructuresPropertiesKHR
+  :: FunPtr (Ptr Device_T -> Word32 -> Ptr AccelerationStructureKHR -> QueryType -> CSize -> Ptr () -> CSize -> IO Result) -> Ptr Device_T -> Word32 -> Ptr AccelerationStructureKHR -> QueryType -> CSize -> Ptr () -> CSize -> IO Result
+
+-- | vkWriteAccelerationStructuresPropertiesKHR - Query acceleration
+-- structure meta-data on the host
+--
+-- = Description
+--
+-- This command fulfills the same task as
+-- 'cmdWriteAccelerationStructuresPropertiesKHR' but is executed by the
+-- host.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-accelerationStructureHostCommands-03585#
+--     The
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-accelerationStructureHostCommands ::accelerationStructureHostCommands>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-accelerationStructures-03431#
+--     All acceleration structures in @pAccelerationStructures@ /must/ have
+--     been built with
+--     'BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR' if
+--     @queryType@ is
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR'
+--
+-- -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-06742#
+--     @queryType@ /must/ be
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_SIZE_KHR',
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR',
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR',
+--     or
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR'
+--
+-- -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-pAccelerationStructures-12425#
+--     All acceleration structures in @pAccelerationStructures@ /must/ have
+--     been built with 'ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR' if
+--     @queryType@ is
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR'
+--
+-- -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-buffer-03736# Each
+--     element of @pAccelerationStructures@ /must/ be fully backed by
+--     physical memory
+--
+-- -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-03448# If
+--     @queryType@ is
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR',
+--     then @stride@ /must/ be a multiple of the size of
+--     'Vulkan.Core10.FundamentalTypes.DeviceSize'
+--
+-- -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-03449# If
+--     @queryType@ is
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR',
+--     then @pData@ /must/ point to a
+--     'Vulkan.Core10.FundamentalTypes.DeviceSize'
+--
+-- -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-03450# If
+--     @queryType@ is
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR',
+--     then @stride@ /must/ be a multiple of the size of
+--     'Vulkan.Core10.FundamentalTypes.DeviceSize'
+--
+-- -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-03451# If
+--     @queryType@ is
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR',
+--     then @pData@ /must/ point to a
+--     'Vulkan.Core10.FundamentalTypes.DeviceSize'
+--
+-- -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-06731# If
+--     @queryType@ is
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_SIZE_KHR',
+--     then @stride@ /must/ be a multiple of the size of
+--     'Vulkan.Core10.FundamentalTypes.DeviceSize'
+--
+-- -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-06732# If
+--     @queryType@ is
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_SIZE_KHR',
+--     then @pData@ /must/ point to a
+--     'Vulkan.Core10.FundamentalTypes.DeviceSize'
+--
+-- -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-06733# If
+--     @queryType@ is
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR',
+--     then @stride@ /must/ be a multiple of the size of
+--     'Vulkan.Core10.FundamentalTypes.DeviceSize'
+--
+-- -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-06734# If
+--     @queryType@ is
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR',
+--     then @pData@ /must/ point to a
+--     'Vulkan.Core10.FundamentalTypes.DeviceSize'
+--
+-- -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-dataSize-03452#
+--     @dataSize@ /must/ be greater than or equal to
+--     @accelerationStructureCount@*@stride@
+--
+-- -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-buffer-03733# Each
+--     element of @pAccelerationStructures@ /must/ be bound to host-visible
+--     device memory
+--
+-- -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-pAccelerationStructures-11592#
+--     Each acceleration structure in @pAccelerationStructures@ /must/ have
+--     been created with 'createAccelerationStructureKHR'
+--
+-- -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-buffer-03784# Each
+--     element of @pAccelerationStructures@ /must/ be bound to memory that
+--     was not allocated with multiple instances
+--
+-- -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-pAccelerationStructures-11591#
+--     All acceleration structures in @pAccelerationStructures@ /must/ have
+--     been constructed prior to the execution of this command
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-device-parameter#
+--     @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-pAccelerationStructures-parameter#
+--     @pAccelerationStructures@ /must/ be a valid pointer to an array of
+--     @accelerationStructureCount@ valid
+--     'Vulkan.Extensions.Handles.AccelerationStructureKHR' handles
+--
+-- -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-parameter#
+--     @queryType@ /must/ be a valid
+--     'Vulkan.Core10.Enums.QueryType.QueryType' value
+--
+-- -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-pData-parameter#
+--     @pData@ /must/ be a valid pointer to an array of @dataSize@ bytes
+--
+-- -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-accelerationStructureCount-arraylength#
+--     @accelerationStructureCount@ /must/ be greater than @0@
+--
+-- -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-dataSize-arraylength#
+--     @dataSize@ /must/ be greater than @0@
+--
+-- -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-pAccelerationStructures-parent#
+--     Each element of @pAccelerationStructures@ /must/ have been created,
+--     allocated, or retrieved from @device@
+--
+-- == 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_DEVICE_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
+-- 'Vulkan.Extensions.Handles.AccelerationStructureKHR',
+-- 'Vulkan.Core10.Handles.Device',
+-- 'Vulkan.Core10.Enums.QueryType.QueryType'
+writeAccelerationStructuresPropertiesKHR :: forall io
+                                          . (MonadIO io)
+                                         => -- | @device@ is the device which owns the acceleration structures in
+                                            -- @pAccelerationStructures@.
+                                            Device
+                                         -> -- | @pAccelerationStructures@ is a pointer to an array of existing
+                                            -- previously built acceleration structures.
+                                            ("accelerationStructures" ::: Vector AccelerationStructureKHR)
+                                         -> -- | @queryType@ is a 'Vulkan.Core10.Enums.QueryType.QueryType' value
+                                            -- specifying the property to be queried.
+                                            QueryType
+                                         -> -- | @dataSize@ is the size in bytes of the buffer pointed to by @pData@.
+                                            ("dataSize" ::: Word64)
+                                         -> -- | @pData@ is a pointer to an application-allocated buffer where the
+                                            -- results will be written.
+                                            ("data" ::: Ptr ())
+                                         -> -- | @stride@ is the stride in bytes between results for individual queries
+                                            -- within @pData@.
+                                            ("stride" ::: Word64)
+                                         -> io ()
+writeAccelerationStructuresPropertiesKHR device
+                                           accelerationStructures
+                                           queryType
+                                           dataSize
+                                           data'
+                                           stride = liftIO . evalContT $ do
+  let vkWriteAccelerationStructuresPropertiesKHRPtr = pVkWriteAccelerationStructuresPropertiesKHR (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkWriteAccelerationStructuresPropertiesKHRPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkWriteAccelerationStructuresPropertiesKHR is null" Nothing Nothing
+  let vkWriteAccelerationStructuresPropertiesKHR' = mkVkWriteAccelerationStructuresPropertiesKHR vkWriteAccelerationStructuresPropertiesKHRPtr
+  pPAccelerationStructures <- ContT $ allocaBytes @AccelerationStructureKHR ((Data.Vector.length (accelerationStructures)) * 8)
+  lift $ Data.Vector.imapM_ (\i e -> poke (pPAccelerationStructures `plusPtr` (8 * (i)) :: Ptr AccelerationStructureKHR) (e)) (accelerationStructures)
+  r <- lift $ traceAroundEvent "vkWriteAccelerationStructuresPropertiesKHR" (vkWriteAccelerationStructuresPropertiesKHR'
+                                                                               (deviceHandle (device))
+                                                                               ((fromIntegral (Data.Vector.length $ (accelerationStructures)) :: Word32))
+                                                                               (pPAccelerationStructures)
+                                                                               (queryType)
+                                                                               (CSize (dataSize))
+                                                                               (data')
+                                                                               (CSize (stride)))
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetDeviceAccelerationStructureCompatibilityKHR
+  :: FunPtr (Ptr Device_T -> Ptr AccelerationStructureVersionInfoKHR -> Ptr AccelerationStructureCompatibilityKHR -> IO ()) -> Ptr Device_T -> Ptr AccelerationStructureVersionInfoKHR -> Ptr AccelerationStructureCompatibilityKHR -> IO ()
+
+-- | vkGetDeviceAccelerationStructureCompatibilityKHR - Check if a serialized
+-- acceleration structure is compatible with the current device
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkGetDeviceAccelerationStructureCompatibilityKHR-accelerationStructure-08928#
+--     The
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-accelerationStructure ::accelerationStructure>
+--     feature /must/ be enabled
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkGetDeviceAccelerationStructureCompatibilityKHR-device-parameter#
+--     @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkGetDeviceAccelerationStructureCompatibilityKHR-pVersionInfo-parameter#
+--     @pVersionInfo@ /must/ be a valid pointer to a valid
+--     'AccelerationStructureVersionInfoKHR' structure
+--
+-- -   #VUID-vkGetDeviceAccelerationStructureCompatibilityKHR-pCompatibility-parameter#
+--     @pCompatibility@ /must/ be a valid pointer to a
+--     'AccelerationStructureCompatibilityKHR' value
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
+-- 'AccelerationStructureCompatibilityKHR',
+-- 'AccelerationStructureVersionInfoKHR', 'Vulkan.Core10.Handles.Device'
+getDeviceAccelerationStructureCompatibilityKHR :: forall io
+                                                . (MonadIO io)
+                                               => -- | @device@ is the device to check the version against.
+                                                  Device
+                                               -> -- | @pVersionInfo@ is a pointer to a 'AccelerationStructureVersionInfoKHR'
+                                                  -- structure specifying version information to check against the device.
+                                                  AccelerationStructureVersionInfoKHR
+                                               -> io (AccelerationStructureCompatibilityKHR)
+getDeviceAccelerationStructureCompatibilityKHR device
+                                                 versionInfo = liftIO . evalContT $ do
+  let vkGetDeviceAccelerationStructureCompatibilityKHRPtr = pVkGetDeviceAccelerationStructureCompatibilityKHR (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkGetDeviceAccelerationStructureCompatibilityKHRPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetDeviceAccelerationStructureCompatibilityKHR is null" Nothing Nothing
+  let vkGetDeviceAccelerationStructureCompatibilityKHR' = mkVkGetDeviceAccelerationStructureCompatibilityKHR vkGetDeviceAccelerationStructureCompatibilityKHRPtr
+  pVersionInfo <- ContT $ withCStruct (versionInfo)
+  pPCompatibility <- ContT $ bracket (callocBytes @AccelerationStructureCompatibilityKHR 4) free
+  lift $ traceAroundEvent "vkGetDeviceAccelerationStructureCompatibilityKHR" (vkGetDeviceAccelerationStructureCompatibilityKHR'
+                                                                                (deviceHandle (device))
+                                                                                pVersionInfo
+                                                                                (pPCompatibility))
+  pCompatibility <- lift $ peek @AccelerationStructureCompatibilityKHR pPCompatibility
+  pure $ (pCompatibility)
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCreateAccelerationStructureKHR
+  :: FunPtr (Ptr Device_T -> Ptr (SomeStruct AccelerationStructureCreateInfoKHR) -> Ptr AllocationCallbacks -> Ptr AccelerationStructureKHR -> IO Result) -> Ptr Device_T -> Ptr (SomeStruct AccelerationStructureCreateInfoKHR) -> Ptr AllocationCallbacks -> Ptr AccelerationStructureKHR -> IO Result
+
+-- | vkCreateAccelerationStructureKHR - Create a new acceleration structure
+-- object
+--
+-- = Description
+--
+-- Similar to other objects in Vulkan, the acceleration structure creation
+-- merely creates an object with a specific “shape”. The type and quantity
+-- of geometry that can be built into an acceleration structure is
+-- determined by the parameters of 'AccelerationStructureCreateInfoKHR'.
+--
+-- The acceleration structure data is stored in the object referred to by
+-- 'AccelerationStructureCreateInfoKHR'::@buffer@. Once memory has been
+-- bound to that buffer, it /must/ be populated by acceleration structure
+-- build or acceleration structure copy commands such as
+-- 'cmdBuildAccelerationStructuresKHR', 'buildAccelerationStructuresKHR',
+-- 'cmdCopyAccelerationStructureKHR', and 'copyAccelerationStructureKHR'.
+--
+-- The expected usage for a trace capture\/replay tool is that it will
+-- serialize and later deserialize the acceleration structure data using
+-- acceleration structure copy commands. During capture the tool will use
+-- 'copyAccelerationStructureToMemoryKHR' or
+-- 'cmdCopyAccelerationStructureToMemoryKHR' with a @mode@ of
+-- 'COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR', and
+-- 'copyMemoryToAccelerationStructureKHR' or
+-- 'cmdCopyMemoryToAccelerationStructureKHR' with a @mode@ of
+-- 'COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR' during replay.
+--
+-- Memory does not need to be bound to the underlying buffer when
+-- 'createAccelerationStructureKHR' is called.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCreateAccelerationStructureKHR-accelerationStructure-03611#
+--     The
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-accelerationStructure ::accelerationStructure>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCreateAccelerationStructureKHR-deviceAddress-03488# If
+--     'AccelerationStructureCreateInfoKHR'::@deviceAddress@ is not zero,
+--     the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-accelerationStructureCaptureReplay accelerationStructureCaptureReplay>
+--     feature /must/ be enabled
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCreateAccelerationStructureKHR-device-parameter# @device@
+--     /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkCreateAccelerationStructureKHR-pCreateInfo-parameter#
+--     @pCreateInfo@ /must/ be a valid pointer to a valid
+--     'AccelerationStructureCreateInfoKHR' structure
+--
+-- -   #VUID-vkCreateAccelerationStructureKHR-pAllocator-parameter# If
+--     @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid pointer
+--     to a valid 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'
+--     structure
+--
+-- -   #VUID-vkCreateAccelerationStructureKHR-pAccelerationStructure-parameter#
+--     @pAccelerationStructure@ /must/ be a valid pointer to a
+--     'Vulkan.Extensions.Handles.AccelerationStructureKHR' handle
+--
+-- -   #VUID-vkCreateAccelerationStructureKHR-device-queuecount# The device
+--     /must/ have been created with at least @1@ queue
+--
+-- == 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.Extensions.VK_KHR_buffer_device_address.ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
+-- 'AccelerationStructureCreateInfoKHR',
+-- 'Vulkan.Extensions.Handles.AccelerationStructureKHR',
+-- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',
+-- 'Vulkan.Core10.Handles.Device'
+createAccelerationStructureKHR :: forall a io
+                                . ( Extendss AccelerationStructureCreateInfoKHR a
+                                  , PokeChain a
+                                  , MonadIO io )
+                               => -- | @device@ is the logical device that creates the acceleration structure
+                                  -- object.
+                                  Device
+                               -> -- | @pCreateInfo@ is a pointer to a 'AccelerationStructureCreateInfoKHR'
+                                  -- structure containing parameters affecting creation of the acceleration
+                                  -- structure.
+                                  (AccelerationStructureCreateInfoKHR a)
+                               -> -- | @pAllocator@ controls host memory allocation as described in the
+                                  -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
+                                  -- chapter.
+                                  ("allocator" ::: Maybe AllocationCallbacks)
+                               -> io (AccelerationStructureKHR)
+createAccelerationStructureKHR device
+                                 createInfo
+                                 allocator = liftIO . evalContT $ do
+  let vkCreateAccelerationStructureKHRPtr = pVkCreateAccelerationStructureKHR (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCreateAccelerationStructureKHRPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCreateAccelerationStructureKHR is null" Nothing Nothing
+  let vkCreateAccelerationStructureKHR' = mkVkCreateAccelerationStructureKHR vkCreateAccelerationStructureKHRPtr
+  pCreateInfo <- ContT $ withCStruct (createInfo)
+  pAllocator <- case (allocator) of
+    Nothing -> pure nullPtr
+    Just j -> ContT $ withCStruct (j)
+  pPAccelerationStructure <- ContT $ bracket (callocBytes @AccelerationStructureKHR 8) free
+  r <- lift $ traceAroundEvent "vkCreateAccelerationStructureKHR" (vkCreateAccelerationStructureKHR'
+                                                                     (deviceHandle (device))
+                                                                     (forgetExtensions pCreateInfo)
+                                                                     pAllocator
+                                                                     (pPAccelerationStructure))
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+  pAccelerationStructure <- lift $ peek @AccelerationStructureKHR pPAccelerationStructure
+  pure $ (pAccelerationStructure)
+
+-- | A convenience wrapper to make a compatible pair of calls to
+-- 'createAccelerationStructureKHR' and 'destroyAccelerationStructureKHR'
+--
+-- To ensure that 'destroyAccelerationStructureKHR' 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.
+--
+withAccelerationStructureKHR :: forall a io r . (Extendss AccelerationStructureCreateInfoKHR a, PokeChain a, MonadIO io) => Device -> AccelerationStructureCreateInfoKHR a -> Maybe AllocationCallbacks -> (io AccelerationStructureKHR -> (AccelerationStructureKHR -> io ()) -> r) -> r
+withAccelerationStructureKHR device pCreateInfo pAllocator b =
+  b (createAccelerationStructureKHR device pCreateInfo pAllocator)
+    (\(o0) -> destroyAccelerationStructureKHR device o0 pAllocator)
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdBuildAccelerationStructuresKHR
+  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Ptr AccelerationStructureBuildGeometryInfoKHR -> Ptr (Ptr AccelerationStructureBuildRangeInfoKHR) -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Ptr AccelerationStructureBuildGeometryInfoKHR -> Ptr (Ptr AccelerationStructureBuildRangeInfoKHR) -> IO ()
+
+-- | vkCmdBuildAccelerationStructuresKHR - Build an acceleration structure
+--
+-- = Description
+--
+-- The 'cmdBuildAccelerationStructuresKHR' command provides the ability to
+-- initiate multiple acceleration structures builds, however there is no
+-- ordering or synchronization implied between any of the individual
+-- acceleration structure builds.
+--
+-- This means that an application /cannot/ build a top-level acceleration
+-- structure in the same 'cmdBuildAccelerationStructuresKHR' call as the
+-- associated bottom-level or instance acceleration structures are being
+-- built. Similarly, the application /cannot/ build a bottom-level
+-- acceleration structure in the same 'cmdBuildAccelerationStructuresKHR'
+-- call as the associated micromaps are being built. There also /cannot/ be
+-- any memory aliasing between any acceleration structure memories or
+-- scratch memories being used by any of the builds.
+--
+-- The input buffers passed to this commands will be referenced by the
+-- implementation for the duration of this command’s execution on the
+-- device.
+--
+-- After the command completes, the acceleration structure /may/ hold a
+-- reference to any acceleration structure specified by an active instance
+-- contained therein. Apart from this referencing, acceleration structures
+-- /must/ be fully self-contained. Micromaps /must/ always be
+-- fully-self-contained.
+--
+-- The application /can/ reuse or free any memory which was used by the
+-- command as an input or as scratch without affecting the results of
+-- future commands, provided proper synchronization is used as described
+-- below.
+--
+-- A 'AccelerationStructureBuildRangeInfoKHR' structure is not used when
+-- building an acceleration structure with any of the following geometry
+-- types, and /must/ be NULL:
+-- __'GEOMETRY_TYPE_DENSE_GEOMETRY_FORMAT_TRIANGLES_AMDX'__
+-- 'GEOMETRY_TYPE_MICROMAP_KHR'
+--
+-- The required alignment of the device addresses passed in to parameters
+-- below might not be provided by the base address of a
+-- 'Vulkan.Core10.Handles.Buffer' created with the correct usage flags and
+-- must still be manually aligned by the application code.
+--
+-- Accesses to the acceleration structure scratch buffers as identified by
+-- the 'AccelerationStructureBuildGeometryInfoKHR'::@scratchData@ buffer
+-- device addresses /must/ be
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies synchronized>
+-- with the
+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-pipeline-stages pipeline stage>
+-- and an
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-access-types access type>
+-- of
+-- ('Vulkan.Core10.Enums.AccessFlagBits.ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR'
+-- |
+-- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR').
+-- Accesses to each
+-- 'AccelerationStructureBuildGeometryInfoKHR'::@srcAccelerationStructure@
+-- and
+-- 'AccelerationStructureBuildGeometryInfoKHR'::@dstAccelerationStructure@
+-- /must/ be
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies synchronized>
+-- with the
+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-pipeline-stages pipeline stage>
+-- and an
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-access-types access type>
+-- of
+-- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR'
+-- or
+-- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR',
+-- as appropriate.
+--
+-- Accesses to other input buffers as identified by any used values of
+-- 'Vulkan.Extensions.VK_NV_ray_tracing_motion_blur.AccelerationStructureGeometryMotionTrianglesDataNV'::@vertexData@,
+-- 'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureGeometryMicromapDataKHR'::@data@,
+-- 'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureGeometryMicromapDataKHR'::@triangleArray@,
+-- 'Vulkan.Extensions.VK_AMDX_dense_geometry_format.AccelerationStructureDenseGeometryFormatTrianglesDataAMDX'::@compressedData@,
+-- 'AccelerationStructureGeometryTrianglesDataKHR'::@vertexData@,
+-- 'AccelerationStructureGeometryTrianglesDataKHR'::@indexData@,
+-- 'AccelerationStructureGeometryTrianglesDataKHR'::@transformData@,
+-- 'AccelerationStructureGeometryAabbsDataKHR'::@data@, and
+-- 'AccelerationStructureGeometryInstancesDataKHR'::@data@ /must/ be
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies synchronized>
+-- with the
+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-pipeline-stages pipeline stage>
+-- and an
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-access-types access type>
+-- of 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_SHADER_READ_BIT'.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-accelerationStructure-08923#
+--     The
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-accelerationStructure ::accelerationStructure>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-ppBuildRangeInfos-11543#
+--     Each element of @ppBuildRangeInfos@[i] /must/ be a valid pointer to
+--     an array of @pInfos@[i].@geometryCount@
+--     'AccelerationStructureBuildRangeInfoKHR' structures if the
+--     @pInfos@[i].type is not one of:
+--
+--     -   'GEOMETRY_TYPE_DENSE_GEOMETRY_FORMAT_TRIANGLES_AMDX'
+--
+--     -   'ACCELERATION_STRUCTURE_TYPE_OPACITY_MICROMAP_KHR'
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-10906# For each
+--     element of @pInfos@[i] whose @pGeometries@ or @ppGeometries@ members
+--     have a @geometryType@ of
+--     'GEOMETRY_TYPE_DENSE_GEOMETRY_FORMAT_TRIANGLES_AMDX',
+--     @ppBuildRangeInfos@[i] /must/ be @NULL@
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-ppBuildRangeInfos-11544#
+--     For each element of @pInfos@[i] whose @pGeometries@ or
+--     @ppGeometries@ members have a @geometryType@ of
+--     'GEOMETRY_TYPE_MICROMAP_KHR', @ppBuildRangeInfos@[i] /must/ be
+--     @NULL@
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-mode-11545# For each
+--     element of @pInfos@, if its @type@ member is
+--     'ACCELERATION_STRUCTURE_TYPE_OPACITY_MICROMAP_KHR', its @mode@
+--     /must/ equal 'BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR'
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-srcAccelerationStructure-11546#
+--     For each element of @pInfos@, if its @type@ member is
+--     'ACCELERATION_STRUCTURE_TYPE_OPACITY_MICROMAP_KHR', its
+--     @srcAccelerationStructure@ /must/ be
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-dstAccelerationStructure-11547#
+--     For each element of @pInfos@, if its @type@ member is
+--     'ACCELERATION_STRUCTURE_TYPE_OPACITY_MICROMAP_KHR', its
+--     @dstAccelerationStructure@ member /must/ have been created with a
+--     value of 'AccelerationStructureCreateInfoKHR'::@type@ equal to
+--     either 'ACCELERATION_STRUCTURE_TYPE_OPACITY_MICROMAP_KHR' or
+--     'ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR'
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-dstAccelerationStructure-11548#
+--     The @dstAccelerationStructure@ member of any element of @pInfos@
+--     /must/ not be referenced by any
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapKHR'::@micromap@
+--     member included in the @pNext@ chain of any @geometry.triangles@
+--     member of any element of @pGeometries@ or @ppGeometries@ in any
+--     other element of @pInfos@
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-dstAccelerationStructure-11549#
+--     The range of memory backing the @dstAccelerationStructure@ member of
+--     any element of @pInfos@ that is accessed by this command /must/ not
+--     overlap the memory backing any
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapKHR'::@micromap@
+--     member included in the @pNext@ chain of any @geometry.triangles@
+--     member of any element of @pGeometries@ or @ppGeometries@ in any
+--     other element of @pInfos@, which is accessed by this command
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-micromap-11550# For each
+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@,
+--     if it includes a
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureGeometryMicromapDataKHR'
+--     structure in its @pNext@ chain, its @data@ and @triangleArray@
+--     members /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-micromap-11551# For each
+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@,
+--     if it includes a
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureGeometryMicromapDataKHR'
+--     structure in its @pNext@ chain, the buffers from which the buffer
+--     device addresses for its @data@ and @triangleArray@ members are
+--     queried /must/ have been created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR'
+--     usage flag
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-micromap-11552# For each
+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@,
+--     if it includes a
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureGeometryMicromapDataKHR'
+--     structure in its @pNext@ chain, its @data@ and @triangleArray@
+--     members /must/ be a multiple of @128@
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-micromap-11553# For each
+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@,
+--     if it includes a
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureGeometryMicromapDataKHR'
+--     structure in its @pNext@ chain, each element of its @triangleArray@
+--     member /must/ specify an access within the range of the
+--     'Vulkan.Core10.Handles.Buffer' that @data@ was retrieved from, given
+--     by [@dataOffset@, @dataOffset@
+--     triangleSize] where triangleSize is calculated using its @format@
+--     and @subdivisionLevel@ members rounded up to the nearest byte
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-micromap-11554# For each
+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@,
+--     if it includes a
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureGeometryMicromapDataKHR'
+--     structure in its @pNext@ chain, the range of [@triangleArray@,
+--     @triangleArray@ + (@triangleArrayStride@ * numTriangles)] /must/ be
+--     within the range of the 'Vulkan.Core10.Handles.Buffer' from which
+--     the @triangleArray@ member was retrieved from, where /numTriangles/
+--     is the sum of @count@ of all elements of @pUsageCounts@ or
+--     @ppUsageCounts@
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-micromap-11555# For each
+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@,
+--     if it includes a
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureGeometryMicromapDataKHR'
+--     structure in its @pNext@ chain, each element of its
+--     @geometry.triangleArray@ member /must/ have a @format@ with a valid
+--     value from
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.OpacityMicromapFormatKHR'
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-micromap-11556# For each
+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@,
+--     if it includes a
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureGeometryMicromapDataKHR'
+--     structure in its @pNext@ chain, for each element of its
+--     @triangleArray@ member with a @format@ equal to
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.OPACITY_MICROMAP_FORMAT_2_STATE_KHR',
+--     @subdivisionLevel@ /must/ be less than or equal to
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxOpacity2StateSubdivisionLevel maxOpacity2StateSubdivisionLevel>
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-indexBuffer-11575# For
+--     each element of @pInfos@[i].@pGeometries@ or
+--     @pInfos@[i].@ppGeometries@ with a @geometryType@ equal to
+--     'GEOMETRY_TYPE_TRIANGLES_KHR', if its @geometry.triangles@ member
+--     includes a
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapKHR'
+--     structure in its @pNext@ chain, the micromap’s @indexType@ member is
+--     not 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR', and
+--     @micromap@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', for each
+--     /index/ in @indexBuffer@[/j/] greater than zero where /j/ is within
+--     the range [0, numTrianglesInGeometry - 1] where
+--     /numTrianglesInGeometry/ is equal to
+--     @ppBuildRangeInfos@[i]→primitiveCount, /index/ plus @baseTriangle@
+--     /must/ be less than or equal to /numTriangles/, where /numTriangles/
+--     is given by the sum of all @count@ parameters in the @pUsageCounts@
+--     or @ppUsageCounts@ provided to the micromap’s build command
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-indexBuffer-11577# For
+--     each element of @pInfos@[i].@pGeometries@ or
+--     @pInfos@[i].@ppGeometries@ with a @geometryType@ equal to
+--     'GEOMETRY_TYPE_TRIANGLES_KHR', if its @geometry.triangles@ member
+--     includes a
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapKHR'
+--     structure in its @pNext@ chain, and the micromap’s @indexType@
+--     member is not 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR',
+--     @indexBuffer@
+--     (@indexStride@ * numTrianglesInGeometry) /must/ be within the range
+--     of the 'Vulkan.Core10.Handles.Buffer' from which the @indexBuffer@
+--     device address was obtained from where /numTrianglesInGeometry/ is
+--     equal to @ppBuildRangeInfos@[i]→primitiveCount
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-indexBuffer-11578# For
+--     each element of @pInfos@[i].@pGeometries@ or
+--     @pInfos@[i].@ppGeometries@ with a @geometryType@ equal to
+--     'GEOMETRY_TYPE_TRIANGLES_KHR', if its @geometry.triangles@ member
+--     includes a
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapKHR'
+--     structure in its @pNext@ chain, the micromap’s @indexType@ member is
+--     not 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR', and
+--     @micromap@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', for each
+--     /index/ in @indexBuffer@[/j/] where /j/ is within the range from [0,
+--     numTrianglesInGeometry - 1], /index/ /must/ be a valid
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.OpacityMicromapSpecialIndexKHR'
+--     value where /numTrianglesInGeometry/ is equal to
+--     @ppBuildRangeInfos@[i]→primitiveCount
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-mode-04628# The @mode@
+--     member of each element of @pInfos@ /must/ be a valid
+--     'BuildAccelerationStructureModeKHR' value
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-srcAccelerationStructure-04629#
+--     If the @srcAccelerationStructure@ member of any element of @pInfos@
+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the
+--     @srcAccelerationStructure@ member /must/ be a valid
+--     'Vulkan.Extensions.Handles.AccelerationStructureKHR' handle
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-04630# For each
+--     element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', its
+--     @srcAccelerationStructure@ member /must/ not be
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03708# For each
+--     element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR',
+--     @srcAccelerationStructure@ /must/ be fully backed by physical memory
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03403# The
+--     @srcAccelerationStructure@ member of any element of @pInfos@ /must/
+--     not be the same acceleration structure as the
+--     @dstAccelerationStructure@ member of any other element of @pInfos@
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-dstAccelerationStructure-03698#
+--     The @dstAccelerationStructure@ member of any element of @pInfos@
+--     /must/ not be the same acceleration structure as the
+--     @dstAccelerationStructure@ member of any other element of @pInfos@
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-dstAccelerationStructure-03800#
+--     The @dstAccelerationStructure@ member of any element of @pInfos@
+--     /must/ be a valid
+--     'Vulkan.Extensions.Handles.AccelerationStructureKHR' handle
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03707# For each
+--     element of @pInfos@, its @dstAccelerationStructure@ member /must/ be
+--     fully backed by physical memory
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03699# For each
+--     element of @pInfos@, if its @type@ member is
+--     'ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR', its
+--     @dstAccelerationStructure@ member /must/ have been created with a
+--     value of 'AccelerationStructureCreateInfoKHR'::@type@ equal to
+--     either 'ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR' or
+--     'ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR'
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03700# For each
+--     element of @pInfos@, if its @type@ member is
+--     'ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR', its
+--     @dstAccelerationStructure@ member /must/ have been created with a
+--     value of 'AccelerationStructureCreateInfoKHR'::@type@ equal to
+--     either 'ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR' or
+--     'ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR'
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03663# For each
+--     element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR',
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-inactive-prims inactive primitives>
+--     in its @srcAccelerationStructure@ member /must/ not be made active
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03664# For each
+--     element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', active primitives in
+--     its @srcAccelerationStructure@ member /must/ not be made
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-inactive-prims inactive>
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03709# For each
+--     element of @pInfos@, if an acceleration structure is referenced by
+--     the @geometry.instances.data@ member of any element of @pGeometries@
+--     or @ppGeometries@ with a @geometryType@ of
+--     'GEOMETRY_TYPE_INSTANCES_KHR', it /must/ be fully backed by physical
+--     memory
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-None-03407# The
+--     @dstAccelerationStructure@ member of any element of @pInfos@ /must/
+--     not be referenced by the @geometry.instances.data@ member of any
+--     element of @pGeometries@ or @ppGeometries@ with a @geometryType@ of
+--     'GEOMETRY_TYPE_INSTANCES_KHR' in any other element of @pInfos@
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-dstAccelerationStructure-03701#
+--     The range of memory backing the @dstAccelerationStructure@ member of
+--     any element of @pInfos@ that is accessed by this command /must/ not
+--     overlap the memory backing the @srcAccelerationStructure@ member of
+--     any other element of @pInfos@ with a @mode@ equal to
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', which is accessed by
+--     this command
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-dstAccelerationStructure-03702#
+--     The range of memory backing the @dstAccelerationStructure@ member of
+--     any element of @pInfos@ that is accessed by this command /must/ not
+--     overlap the memory backing the @dstAccelerationStructure@ member of
+--     any other element of @pInfos@, which is accessed by this command
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-dstAccelerationStructure-03703#
+--     The range of memory backing the @dstAccelerationStructure@ member of
+--     any element of @pInfos@ that is accessed by this command /must/ not
+--     overlap the memory backing the @scratchData@ member of any element
+--     of @pInfos@ (including the same element), which is accessed by this
+--     command
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-scratchData-03704# The
+--     range of memory backing the @scratchData@ member of any element of
+--     @pInfos@ that is accessed by this command /must/ not overlap the
+--     memory backing the @scratchData@ member of any other element of
+--     @pInfos@, which is accessed by this command
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-scratchData-03705# The
+--     range of memory backing the @scratchData@ member of any element of
+--     @pInfos@ that is accessed by this command /must/ not overlap the
+--     memory backing the @srcAccelerationStructure@ member of any element
+--     of @pInfos@ with a @mode@ equal to
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR' (including the same
+--     element), which is accessed by this command
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-dstAccelerationStructure-03706#
+--     The range of memory backing the @dstAccelerationStructure@ member of
+--     any element of @pInfos@ that is accessed by this command /must/ not
+--     overlap the memory backing any acceleration structure referenced by
+--     the @geometry.instances.data@ member of any element of @pGeometries@
+--     or @ppGeometries@ with a @geometryType@ of
+--     'GEOMETRY_TYPE_INSTANCES_KHR' in any other element of @pInfos@,
+--     which is accessed by this command
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03667# For each
+--     element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', its
+--     @srcAccelerationStructure@ member /must/ have previously been
+--     constructed with 'BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR'
+--     set in 'AccelerationStructureBuildGeometryInfoKHR'::@flags@ in the
+--     build
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03668# For each
+--     element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', its
+--     @srcAccelerationStructure@ and @dstAccelerationStructure@ members
+--     /must/ either be the same
+--     'Vulkan.Extensions.Handles.AccelerationStructureKHR', or not have
+--     any
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-memory-aliasing memory aliasing>
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03758# For each
+--     element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', its @geometryCount@
+--     member /must/ have the same value which was specified when
+--     @srcAccelerationStructure@ was last built
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03759# For each
+--     element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', its @flags@ member
+--     /must/ have the same value which was specified when
+--     @srcAccelerationStructure@ was last built
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03760# For each
+--     element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', its @type@ member
+--     /must/ have the same value which was specified when
+--     @srcAccelerationStructure@ was last built
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03761# For each
+--     element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
+--     'AccelerationStructureGeometryKHR' structure referred to by its
+--     @pGeometries@ or @ppGeometries@ members, its @geometryType@ member
+--     /must/ have the same value which was specified when
+--     @srcAccelerationStructure@ was last built
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03762# For each
+--     element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
+--     'AccelerationStructureGeometryKHR' structure referred to by its
+--     @pGeometries@ or @ppGeometries@ members, its @flags@ member /must/
+--     have the same value which was specified when
+--     @srcAccelerationStructure@ was last built
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03763# For each
+--     element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
+--     'AccelerationStructureGeometryKHR' structure referred to by its
+--     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
+--     'GEOMETRY_TYPE_TRIANGLES_KHR', its @geometry.triangles.vertexFormat@
+--     member /must/ have the same value which was specified when
+--     @srcAccelerationStructure@ was last built
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03764# For each
+--     element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
+--     'AccelerationStructureGeometryKHR' structure referred to by its
+--     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
+--     'GEOMETRY_TYPE_TRIANGLES_KHR', its @geometry.triangles.maxVertex@
+--     member /must/ have the same value which was specified when
+--     @srcAccelerationStructure@ was last built
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03765# For each
+--     element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
+--     'AccelerationStructureGeometryKHR' structure referred to by its
+--     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
+--     'GEOMETRY_TYPE_TRIANGLES_KHR', its @geometry.triangles.indexType@
+--     member /must/ have the same value which was specified when
+--     @srcAccelerationStructure@ was last built
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03766# For each
+--     element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
+--     'AccelerationStructureGeometryKHR' structure referred to by its
+--     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
+--     'GEOMETRY_TYPE_TRIANGLES_KHR', if its
+--     @geometry.triangles.transformData@ address was @NULL@ when
+--     @srcAccelerationStructure@ was last built, then it /must/ be @NULL@
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03767# For each
+--     element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
+--     'AccelerationStructureGeometryKHR' structure referred to by its
+--     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
+--     'GEOMETRY_TYPE_TRIANGLES_KHR', if its
+--     @geometry.triangles.transformData@ address was not @NULL@ when
+--     @srcAccelerationStructure@ was last built, then it /must/ not be
+--     @NULL@
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-10898# For each
+--     element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
+--     'AccelerationStructureGeometryKHR' structure referred to by its
+--     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
+--     'GEOMETRY_TYPE_DENSE_GEOMETRY_FORMAT_TRIANGLES_AMDX', the
+--     @numTriangles@ member of the
+--     'Vulkan.Extensions.VK_AMDX_dense_geometry_format.AccelerationStructureDenseGeometryFormatTrianglesDataAMDX'
+--     structure in the @pNext@ chain /must/ have the same value which was
+--     specified when @srcAccelerationStructure@ was last built
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-10899# For each
+--     element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
+--     'AccelerationStructureGeometryKHR' structure referred to by its
+--     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
+--     'GEOMETRY_TYPE_DENSE_GEOMETRY_FORMAT_TRIANGLES_AMDX', the
+--     @numVertices@ member of the
+--     'Vulkan.Extensions.VK_AMDX_dense_geometry_format.AccelerationStructureDenseGeometryFormatTrianglesDataAMDX'
+--     structure in the @pNext@ chain /must/ have the same value which was
+--     specified when @srcAccelerationStructure@ was last built
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-10900# For each
+--     element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
+--     'AccelerationStructureGeometryKHR' structure referred to by its
+--     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
+--     'GEOMETRY_TYPE_DENSE_GEOMETRY_FORMAT_TRIANGLES_AMDX', the
+--     @maxPrimitiveIndex@ member of the
+--     'Vulkan.Extensions.VK_AMDX_dense_geometry_format.AccelerationStructureDenseGeometryFormatTrianglesDataAMDX'
+--     structure in the @pNext@ chain /must/ have the same value which was
+--     specified when @srcAccelerationStructure@ was last built
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-10901# For each
+--     element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
+--     'AccelerationStructureGeometryKHR' structure referred to by its
+--     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
+--     'GEOMETRY_TYPE_DENSE_GEOMETRY_FORMAT_TRIANGLES_AMDX', the
+--     @maxGeometryIndex@ member of the
+--     'Vulkan.Extensions.VK_AMDX_dense_geometry_format.AccelerationStructureDenseGeometryFormatTrianglesDataAMDX'
+--     structure in the @pNext@ chain /must/ have the same value which was
+--     specified when @srcAccelerationStructure@ was last built
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-10902# For each
+--     element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
+--     'AccelerationStructureGeometryKHR' structure referred to by its
+--     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
+--     'GEOMETRY_TYPE_DENSE_GEOMETRY_FORMAT_TRIANGLES_AMDX', the @format@
+--     member of the
+--     'Vulkan.Extensions.VK_AMDX_dense_geometry_format.AccelerationStructureDenseGeometryFormatTrianglesDataAMDX'
+--     structure in the @pNext@ chain /must/ have the same value which was
+--     specified when @srcAccelerationStructure@ was last built
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-10903# For each
+--     element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
+--     'AccelerationStructureGeometryKHR' structure referred to by its
+--     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
+--     'GEOMETRY_TYPE_DENSE_GEOMETRY_FORMAT_TRIANGLES_AMDX', the @dataSize@
+--     member of the
+--     'Vulkan.Extensions.VK_AMDX_dense_geometry_format.AccelerationStructureDenseGeometryFormatTrianglesDataAMDX'
+--     structure in the @pNext@ chain /must/ have the same value which was
+--     specified when @srcAccelerationStructure@ was last built
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03768# For each
+--     element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
+--     'AccelerationStructureGeometryKHR' structure referred to by its
+--     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
+--     'GEOMETRY_TYPE_TRIANGLES_KHR', and @geometry.triangles.indexType@ is
+--     not 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR', then the
+--     value of each index referenced /must/ be the same as the
+--     corresponding index value when @srcAccelerationStructure@ was last
+--     built
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-primitiveCount-03769# For
+--     each element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
+--     'AccelerationStructureGeometryKHR' structure referred to by its
+--     @pGeometries@ or @ppGeometries@ members, the @primitiveCount@ member
+--     of its corresponding 'AccelerationStructureBuildRangeInfoKHR'
+--     structure /must/ have the same value which was specified when
+--     @srcAccelerationStructure@ was last built
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03801# For each
+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@
+--     with a @geometryType@ of 'GEOMETRY_TYPE_INSTANCES_KHR', the
+--     corresponding @ppBuildRangeInfos@[i][j].@primitiveCount@ /must/ be
+--     less than or equal to
+--     'PhysicalDeviceAccelerationStructurePropertiesKHR'::@maxInstanceCount@
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-12258# If
+--     @pInfos@[i].@mode@ is 'BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR',
+--     and N is not @0@, all addresses between
+--     @pInfos@[i].@scratchData.deviceAddress@ and
+--     @pInfos@[i].@scratchData.deviceAddress@ + N - 1 /must/ be in the
+--     buffer device address range of the same buffer, where N is given by
+--     the @buildScratchSize@ member of the
+--     'AccelerationStructureBuildSizesInfoKHR' structure returned from a
+--     call to 'getAccelerationStructureBuildSizesKHR' with an identical
+--     'AccelerationStructureBuildGeometryInfoKHR' structure and primitive
+--     count
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-12259# If
+--     @pInfos@[i].@mode@ is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', and N is not @0@,
+--     all addresses between @pInfos@[i].@scratchData.deviceAddress@ and
+--     @pInfos@[i].@scratchData.deviceAddress@ + N - 1 /must/ be in the
+--     buffer device address range of the same buffer, where N is given by
+--     the @updateScratchSize@ member of the
+--     'AccelerationStructureBuildSizesInfoKHR' structure returned from a
+--     call to 'getAccelerationStructureBuildSizesKHR' with an identical
+--     'AccelerationStructureBuildGeometryInfoKHR' structure and primitive
+--     count
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-geometry-03673# The
+--     buffers from which the buffer device addresses for all of the
+--     @geometry.triangles.vertexData@, @geometry.triangles.indexData@,
+--     @geometry.triangles.transformData@, @geometry.aabbs.data@, and
+--     @geometry.instances.data@ members of all @pInfos@[i].@pGeometries@
+--     and @pInfos@[i].@ppGeometries@ are queried /must/ have been created
+--     with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR'
+--     usage flag set
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-12260# If
+--     @pInfos@[i].@mode@ is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', and the size
+--     reported by @updateScratchSize@ member of the
+--     'AccelerationStructureBuildSizesInfoKHR' structure returned from a
+--     call to 'getAccelerationStructureBuildSizesKHR' with an identical
+--     'AccelerationStructureBuildGeometryInfoKHR' structure and primitive
+--     count is non-zero, @pInfos@[i].@scratchData.deviceAddress@ /must/ be
+--     a device address allocated to the application from a buffer created
+--     with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_STORAGE_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-12261# If
+--     @pInfos@[i].@mode@ is 'BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR',
+--     and the size reported by @buildScratchSize@ member of the
+--     'AccelerationStructureBuildSizesInfoKHR' structure returned from a
+--     call to 'getAccelerationStructureBuildSizesKHR' with an identical
+--     'AccelerationStructureBuildGeometryInfoKHR' structure and primitive
+--     count is non-zero, @pInfos@[i].@scratchData.deviceAddress@ /must/ be
+--     a device address allocated to the application from a buffer created
+--     with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_STORAGE_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03710# For each
+--     element of @pInfos@, its @scratchData.deviceAddress@ member /must/
+--     be a multiple of
+--     'PhysicalDeviceAccelerationStructurePropertiesKHR'::@minAccelerationStructureScratchOffsetAlignment@
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03804# For each
+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@
+--     with a @geometryType@ of 'GEOMETRY_TYPE_TRIANGLES_KHR',
+--     @geometry.triangles.vertexData.deviceAddress@ /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03711# For each
+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@
+--     with a @geometryType@ of 'GEOMETRY_TYPE_TRIANGLES_KHR',
+--     @geometry.triangles.vertexData.deviceAddress@ /must/ be aligned to:
+--
+--     -   the
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats size of the format>
+--         specified in @vertexFormat@, in bytes, if that format is a
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-packed packed format>
+--
+--     -   the
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats component size>
+--         of the format specified in @vertexFormat@, in bytes, if that
+--         format is not a
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-packed packed format>
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03806# For each
+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@
+--     with a @geometryType@ of 'GEOMETRY_TYPE_TRIANGLES_KHR', if
+--     @geometry.triangles.indexType@ is not
+--     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR',
+--     @geometry.triangles.indexData.deviceAddress@ /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03712# For each
+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@
+--     with a @geometryType@ of 'GEOMETRY_TYPE_TRIANGLES_KHR', and with
+--     @geometry.triangles.indexType@ not equal to
+--     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR',
+--     @geometry.triangles.indexData.deviceAddress@ /must/ be aligned to
+--     the size in bytes of the type in @indexType@
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03808# For each
+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@
+--     with a @geometryType@ of 'GEOMETRY_TYPE_TRIANGLES_KHR', if
+--     @geometry.triangles.transformData.deviceAddress@ is not @0@, it
+--     /must/ be a valid 'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03810# For each
+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@
+--     with a @geometryType@ of 'GEOMETRY_TYPE_TRIANGLES_KHR', if
+--     @geometry.triangles.transformData.deviceAddress@ is not @0@, it
+--     /must/ be aligned to @16@ bytes
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03811# For each
+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@
+--     with a @geometryType@ of 'GEOMETRY_TYPE_AABBS_KHR',
+--     @geometry.aabbs.data.deviceAddress@ /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03714# For each
+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@
+--     with a @geometryType@ of 'GEOMETRY_TYPE_AABBS_KHR',
+--     @geometry.aabbs.data.deviceAddress@ /must/ be aligned to @8@ bytes
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03715# For each
+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@
+--     with a @geometryType@ of 'GEOMETRY_TYPE_INSTANCES_KHR', if
+--     @geometry.arrayOfPointers@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE',
+--     @geometry.instances.data.deviceAddress@ /must/ be aligned to @16@
+--     bytes
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03716# For each
+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@
+--     with a @geometryType@ of 'GEOMETRY_TYPE_INSTANCES_KHR', if
+--     @geometry.arrayOfPointers@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     @geometry.instances.data.deviceAddress@ /must/ be aligned to @8@
+--     bytes
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03717# For each
+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@
+--     with a @geometryType@ of 'GEOMETRY_TYPE_INSTANCES_KHR', if
+--     @geometry.arrayOfPointers@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     each element of @geometry.instances.data.deviceAddress@ in device
+--     memory /must/ be aligned to @16@ bytes
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03813# For each
+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@
+--     with a @geometryType@ of 'GEOMETRY_TYPE_INSTANCES_KHR',
+--     @geometry.instances.data.deviceAddress@ /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-12281# For each
+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@
+--     with a @geometryType@ of 'GEOMETRY_TYPE_INSTANCES_KHR', each
+--     'AccelerationStructureInstanceKHR'::@accelerationStructureReference@
+--     value in @geometry.instances.data.deviceAddress@ /must/ be @0@ or a
+--     value obtained from 'getAccelerationStructureDeviceAddressKHR' for a
+--     valid bottom level acceleration structure
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-10607# For each
+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@
+--     with a @geometryType@ of 'GEOMETRY_TYPE_INSTANCES_KHR', if
+--     'GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_BIT_KHR' is set in
+--     'AccelerationStructureInstanceKHR'::@flags@ then
+--     @geometry.instances.data.deviceAddress@ /must/ refer to an
+--     acceleration structure that was built with
+--     'BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_BIT_KHR'
+--     set in 'AccelerationStructureBuildGeometryInfoKHR'::@flags@
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-commandBuffer-09547#
+--     @commandBuffer@ /must/ not be a protected command buffer
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-micromap-11701# For any
+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@
+--     with a @geometryType@ of 'GEOMETRY_TYPE_TRIANGLES_KHR', if there is
+--     an instance of
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapKHR'
+--     in the @geometry.triangles.pNext@ chain with a valid @micromap@
+--     member, then the @micromap@ member /must/ have been constructed
+--     prior to this command’s execution on the device
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-micromap-11624# For any
+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@
+--     with a @geometryType@ of 'GEOMETRY_TYPE_TRIANGLES_KHR', if there is
+--     an instance of
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapKHR'
+--     in the @geometry.triangles.pNext@ chain with a valid @micromap@
+--     member, then the @micromap@ member /must/ have been built with a
+--     @type@ of 'ACCELERATION_STRUCTURE_TYPE_OPACITY_MICROMAP_KHR'
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-micromap-11625# For each
+--     element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
+--     'AccelerationStructureGeometryKHR' structure referred to by its
+--     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
+--     'GEOMETRY_TYPE_TRIANGLES_KHR', and the same geometry in the original
+--     build of @srcAccelerationStructure@ was built with an instance of
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapKHR'
+--     in its @geometry.triangles.pNext@ chain with a valid @micromap@
+--     member, then an instance of
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapKHR'
+--     /must/ be included in the in the @geometry.triangles.pNext@ chain
+--     with a valid @micromap@ member
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-micromap-11626# For each
+--     element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
+--     'AccelerationStructureGeometryKHR' structure referred to by its
+--     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
+--     'GEOMETRY_TYPE_TRIANGLES_KHR', and the same geometry in the original
+--     build of @srcAccelerationStructure@ was built with an instance of
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapKHR'
+--     in its @geometry.triangles.pNext@ chain with its @micromap@ member
+--     equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE', then an instance
+--     of
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapKHR'
+--     /must/ be included in the in the @geometry.triangles.pNext@ chain
+--     with its @micromap@ member equal to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-micromap-11627# For each
+--     element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
+--     'AccelerationStructureGeometryKHR' structure referred to by its
+--     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
+--     'GEOMETRY_TYPE_TRIANGLES_KHR', and the same geometry in the original
+--     build of @srcAccelerationStructure@ was not built with an instance
+--     of
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapKHR'
+--     in its @geometry.triangles.pNext@ chain, then an instance of
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapKHR'
+--     /must/ not be included in the in the @geometry.triangles.pNext@
+--     chain
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-micromap-11628# For each
+--     element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', its
+--     @srcAccelerationStructure@ was originally built without the
+--     'BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_BIT_KHR'
+--     flag, and @srcAccelerationStructure@ was constructed by
+--     deserialization with 'cmdCopyMemoryToAccelerationStructureKHR', then
+--     for each 'AccelerationStructureGeometryKHR' structure referred to by
+--     its @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
+--     'GEOMETRY_TYPE_TRIANGLES_KHR', and the same geometry in the original
+--     build of @srcAccelerationStructure@ was built with an instance of
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapKHR'
+--     in its @geometry.triangles.pNext@ chain with a valid @micromap@
+--     member, then an instance of
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapKHR'
+--     /must/ be included in the in the @geometry.triangles.pNext@ chain
+--     with a @micromap@ that was deserialized from the serialized data of
+--     the @micromap@ in the original build of @srcAccelerationStructure@
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-micromap-11629# For each
+--     element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', its
+--     @srcAccelerationStructure@ was originally built without either the
+--     'BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_BIT_EXT'
+--     or the
+--     'BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_BIT_KHR'
+--     flags, and @srcAccelerationStructure@ was not constructed by
+--     deserialization with 'cmdCopyMemoryToAccelerationStructureKHR', then
+--     for each 'AccelerationStructureGeometryKHR' structure referred to by
+--     its @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
+--     'GEOMETRY_TYPE_TRIANGLES_KHR', and the same geometry in the original
+--     build of @srcAccelerationStructure@ was built with an instance of
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapKHR'
+--     in its @geometry.triangles.pNext@ chain with a valid @micromap@
+--     member, then an instance of
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapKHR'
+--     /must/ be included in the in the @geometry.triangles.pNext@ chain
+--     with the same @micromap@ handle as the original build
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-micromap-11632# For any
+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@
+--     with a @geometryType@ of 'GEOMETRY_TYPE_TRIANGLES_KHR', if there is
+--     an instance of
+--     'Vulkan.Extensions.VK_EXT_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapEXT'
+--     in the @geometry.triangles.pNext@ chain, then its @micromap@ member
+--     /must/ have been constructed prior to this command’s execution on
+--     the device
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-10904# For each
+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@
+--     with a @geometryType@ of 'GEOMETRY_TYPE_TRIANGLES_KHR', if there is
+--     an instance of
+--     'Vulkan.Extensions.VK_EXT_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapEXT'
+--     in the @geometry.triangles.pNext@ chain, and its @indexType@ is
+--     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR', then its
+--     @indexBuffer.deviceAddress@ /must/ be 0
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-10905# For each
+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@
+--     with a @geometryType@ of 'GEOMETRY_TYPE_TRIANGLES_KHR', if there is
+--     an instance of
+--     'Vulkan.Extensions.VK_EXT_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapEXT'
+--     in the @geometry.triangles.pNext@ chain, and its @indexType@ is not
+--     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR', then its
+--     @indexBuffer.deviceAddress@ /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-11846# For each
+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@
+--     with a @geometryType@ of 'GEOMETRY_TYPE_SPHERES_NV', if
+--     'Vulkan.Extensions.VK_NV_ray_tracing_linear_swept_spheres.AccelerationStructureGeometrySpheresDataNV'::@indexType@
+--     is 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR', then its
+--     @indexData.deviceAddress@ /must/ be 0
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-11847# For each
+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@
+--     with a @geometryType@ of 'GEOMETRY_TYPE_SPHERES_NV', if
+--     'Vulkan.Extensions.VK_NV_ray_tracing_linear_swept_spheres.AccelerationStructureGeometrySpheresDataNV'::@indexType@
+--     is not 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR', then its
+--     @indexData.deviceAddress@ /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-11848# For each
+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@
+--     with a @geometryType@ of 'GEOMETRY_TYPE_SPHERES_NV',
+--     'Vulkan.Extensions.VK_NV_ray_tracing_linear_swept_spheres.AccelerationStructureGeometrySpheresDataNV'::@vertexData.deviceAddress@
+--     /must/ be a valid 'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-11849# For each
+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@
+--     with a @geometryType@ of 'GEOMETRY_TYPE_SPHERES_NV',
+--     'Vulkan.Extensions.VK_NV_ray_tracing_linear_swept_spheres.AccelerationStructureGeometrySpheresDataNV'::@radiusData.deviceAddress@
+--     /must/ be a valid 'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-11850# For each
+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@
+--     with a @geometryType@ of 'GEOMETRY_TYPE_LINEAR_SWEPT_SPHERES_NV', if
+--     'Vulkan.Extensions.VK_NV_ray_tracing_linear_swept_spheres.AccelerationStructureGeometryLinearSweptSpheresDataNV'::@indexType@
+--     is 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR', then its
+--     @indexData.deviceAddress@ /must/ be 0
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-11851# For each
+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@
+--     with a @geometryType@ of 'GEOMETRY_TYPE_LINEAR_SWEPT_SPHERES_NV', if
+--     'Vulkan.Extensions.VK_NV_ray_tracing_linear_swept_spheres.AccelerationStructureGeometryLinearSweptSpheresDataNV'::@indexType@
+--     is not 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR', then its
+--     @indexData.deviceAddress@ /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-11852# For each
+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@
+--     with a @geometryType@ of 'GEOMETRY_TYPE_LINEAR_SWEPT_SPHERES_NV',
+--     'Vulkan.Extensions.VK_NV_ray_tracing_linear_swept_spheres.AccelerationStructureGeometryLinearSweptSpheresDataNV'::@vertexData.deviceAddress@
+--     /must/ be a valid 'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-11853# For each
+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@
+--     with a @geometryType@ of 'GEOMETRY_TYPE_LINEAR_SWEPT_SPHERES_NV',
+--     'Vulkan.Extensions.VK_NV_ray_tracing_linear_swept_spheres.AccelerationStructureGeometryLinearSweptSpheresDataNV'::@radiusData.deviceAddress@
+--     /must/ be a valid 'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-10126# For each
+--     @pInfos@[i], @dstAccelerationStructure@ /must/ have been created
+--     with a value of 'AccelerationStructureCreateInfoKHR'::@size@ greater
+--     than or equal to either:
+--
+--     -   the memory size required by the build operation, as returned by
+--         'getAccelerationStructureBuildSizesKHR' with @pBuildInfo@ =
+--         @pInfos@[i] and with each element of the @pMaxPrimitiveCounts@
+--         array greater than or equal to the equivalent
+--         @ppBuildRangeInfos@[i][j].@primitiveCount@ values for @j@ in
+--         [0,@pInfos@[i].@geometryCount@) or,
+--
+--     -   the result of querying the corresponding
+--         'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR',
+--         if updating a compacted acceleration structure
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-11845# For each
+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@
+--     with a @geometryType@ of 'GEOMETRY_TYPE_TRIANGLES_KHR', if there is
+--     an instance of
+--     'Vulkan.Extensions.VK_NV_ray_tracing_motion_blur.AccelerationStructureGeometryMotionTrianglesDataNV'
+--     in the @geometry.triangles.pNext@ chain, then its
+--     @vertexData.deviceAddress@ /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-parameter# @pInfos@
+--     /must/ be a valid pointer to an array of @infoCount@ valid
+--     'AccelerationStructureBuildGeometryInfoKHR' structures
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-ppBuildRangeInfos-parameter#
+--     @ppBuildRangeInfos@ /must/ be a valid pointer to an array of
+--     @infoCount@ 'AccelerationStructureBuildRangeInfoKHR' structures
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-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-vkCmdBuildAccelerationStructuresKHR-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT' operations
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-renderpass# This command
+--     /must/ only be called outside of a render pass instance
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-suspended# This command
+--     /must/ not be called between suspended render pass instances
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-videocoding# This command
+--     /must/ only be called outside of a video coding scope
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-infoCount-arraylength#
+--     @infoCount@ /must/ be greater than @0@
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdBuildAccelerationStructuresKHR is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
+-- 'AccelerationStructureBuildGeometryInfoKHR',
+-- 'AccelerationStructureBuildRangeInfoKHR',
+-- 'Vulkan.Core10.Handles.CommandBuffer'
+cmdBuildAccelerationStructuresKHR :: forall io
+                                   . (MonadIO io)
+                                  => -- | @commandBuffer@ is the command buffer into which the command will be
+                                     -- recorded.
+                                     CommandBuffer
+                                  -> -- | @pInfos@ is a pointer to an array of @infoCount@
+                                     -- 'AccelerationStructureBuildGeometryInfoKHR' structures defining the
+                                     -- geometry used to build each acceleration structure.
+                                     ("infos" ::: Vector AccelerationStructureBuildGeometryInfoKHR)
+                                  -> -- | @ppBuildRangeInfos@ is a pointer to an array of @infoCount@ pointers to
+                                     -- arrays of 'AccelerationStructureBuildRangeInfoKHR' structures. Each
+                                     -- @ppBuildRangeInfos@[i] is a pointer to an array of
+                                     -- @pInfos@[i].@geometryCount@ 'AccelerationStructureBuildRangeInfoKHR'
+                                     -- structures defining dynamic offsets to the addresses where geometry data
+                                     -- is stored, as defined by @pInfos@[i].
+                                     ("buildRangeInfos" ::: Vector (Vector AccelerationStructureBuildRangeInfoKHR))
+                                  -> io ()
+cmdBuildAccelerationStructuresKHR commandBuffer
+                                    infos
+                                    buildRangeInfos = liftIO . evalContT $ do
+  let vkCmdBuildAccelerationStructuresKHRPtr = pVkCmdBuildAccelerationStructuresKHR (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdBuildAccelerationStructuresKHRPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdBuildAccelerationStructuresKHR is null" Nothing Nothing
+  let vkCmdBuildAccelerationStructuresKHR' = mkVkCmdBuildAccelerationStructuresKHR vkCmdBuildAccelerationStructuresKHRPtr
+  let pInfosLength = Data.Vector.length $ (infos)
+  lift $ unless ((Data.Vector.length $ (buildRangeInfos)) == pInfosLength) $
+    throwIO $ IOError Nothing InvalidArgument "" "ppBuildRangeInfos and pInfos must have the same length" Nothing Nothing
+  pPInfos <- ContT $ allocaBytes @AccelerationStructureBuildGeometryInfoKHR ((Data.Vector.length (infos)) * 80)
+  Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPInfos `plusPtr` (80 * (i)) :: Ptr AccelerationStructureBuildGeometryInfoKHR) (e) . ($ ())) (infos)
+  pPpBuildRangeInfos <- ContT $ allocaBytes @(Ptr AccelerationStructureBuildRangeInfoKHR) ((Data.Vector.length (buildRangeInfos)) * 8)
+  Data.Vector.imapM_ (\i e -> do
+    pPpBuildRangeInfos' <- ContT $ allocaBytes @AccelerationStructureBuildRangeInfoKHR ((Data.Vector.length (e)) * 16)
+    lift $ Data.Vector.imapM_ (\i' e' -> poke (pPpBuildRangeInfos' `plusPtr` (16 * (i')) :: Ptr AccelerationStructureBuildRangeInfoKHR) (e')) (e)
+    lift $ poke (pPpBuildRangeInfos `plusPtr` (8 * (i)) :: Ptr (Ptr AccelerationStructureBuildRangeInfoKHR)) (pPpBuildRangeInfos')) (buildRangeInfos)
+  lift $ traceAroundEvent "vkCmdBuildAccelerationStructuresKHR" (vkCmdBuildAccelerationStructuresKHR'
+                                                                   (commandBufferHandle (commandBuffer))
+                                                                   ((fromIntegral pInfosLength :: Word32))
+                                                                   (pPInfos)
+                                                                   (pPpBuildRangeInfos))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdBuildAccelerationStructuresIndirectKHR
+  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Ptr AccelerationStructureBuildGeometryInfoKHR -> Ptr DeviceAddress -> Ptr Word32 -> Ptr (Ptr Word32) -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Ptr AccelerationStructureBuildGeometryInfoKHR -> Ptr DeviceAddress -> Ptr Word32 -> Ptr (Ptr Word32) -> IO ()
+
+-- | vkCmdBuildAccelerationStructuresIndirectKHR - Build an acceleration
+-- structure with some parameters provided on the device
+--
+-- = Description
+--
+-- Accesses to any device memory referenced by this command /must/ be
+-- synchronized as with 'cmdBuildAccelerationStructuresKHR'.
+--
+-- Accesses to any element of @pIndirectDeviceAddresses@ /must/ be
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies synchronized>
+-- with the
+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-pipeline-stages pipeline stage>
+-- and an
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-access-types access type>
+-- of
+-- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_INDIRECT_COMMAND_READ_BIT'.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-accelerationStructureIndirectBuild-03650#
+--     The
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-accelerationStructureIndirectBuild ::accelerationStructureIndirectBuild>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-mode-04628# The
+--     @mode@ member of each element of @pInfos@ /must/ be a valid
+--     'BuildAccelerationStructureModeKHR' value
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-srcAccelerationStructure-04629#
+--     If the @srcAccelerationStructure@ member of any element of @pInfos@
+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the
+--     @srcAccelerationStructure@ member /must/ be a valid
+--     'Vulkan.Extensions.Handles.AccelerationStructureKHR' handle
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-04630# For
+--     each element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', its
+--     @srcAccelerationStructure@ member /must/ not be
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03708# For
+--     each element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR',
+--     @srcAccelerationStructure@ /must/ be fully backed by physical memory
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03403# The
+--     @srcAccelerationStructure@ member of any element of @pInfos@ /must/
+--     not be the same acceleration structure as the
+--     @dstAccelerationStructure@ member of any other element of @pInfos@
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-dstAccelerationStructure-03698#
+--     The @dstAccelerationStructure@ member of any element of @pInfos@
+--     /must/ not be the same acceleration structure as the
+--     @dstAccelerationStructure@ member of any other element of @pInfos@
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-dstAccelerationStructure-03800#
+--     The @dstAccelerationStructure@ member of any element of @pInfos@
+--     /must/ be a valid
+--     'Vulkan.Extensions.Handles.AccelerationStructureKHR' handle
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03707# For
+--     each element of @pInfos@, its @dstAccelerationStructure@ member
+--     /must/ be fully backed by physical memory
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03699# For
+--     each element of @pInfos@, if its @type@ member is
+--     'ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR', its
+--     @dstAccelerationStructure@ member /must/ have been created with a
+--     value of 'AccelerationStructureCreateInfoKHR'::@type@ equal to
+--     either 'ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR' or
+--     'ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR'
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03700# For
+--     each element of @pInfos@, if its @type@ member is
+--     'ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR', its
+--     @dstAccelerationStructure@ member /must/ have been created with a
+--     value of 'AccelerationStructureCreateInfoKHR'::@type@ equal to
+--     either 'ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR' or
+--     'ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR'
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03663# For
+--     each element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR',
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-inactive-prims inactive primitives>
+--     in its @srcAccelerationStructure@ member /must/ not be made active
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03664# For
+--     each element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', active primitives in
+--     its @srcAccelerationStructure@ member /must/ not be made
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-inactive-prims inactive>
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03709# For
+--     each element of @pInfos@, if an acceleration structure is referenced
+--     by the @geometry.instances.data@ member of any element of
+--     @pGeometries@ or @ppGeometries@ with a @geometryType@ of
+--     'GEOMETRY_TYPE_INSTANCES_KHR', it /must/ be fully backed by physical
+--     memory
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-None-03407# The
+--     @dstAccelerationStructure@ member of any element of @pInfos@ /must/
+--     not be referenced by the @geometry.instances.data@ member of any
+--     element of @pGeometries@ or @ppGeometries@ with a @geometryType@ of
+--     'GEOMETRY_TYPE_INSTANCES_KHR' in any other element of @pInfos@
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-dstAccelerationStructure-03701#
+--     The range of memory backing the @dstAccelerationStructure@ member of
+--     any element of @pInfos@ that is accessed by this command /must/ not
+--     overlap the memory backing the @srcAccelerationStructure@ member of
+--     any other element of @pInfos@ with a @mode@ equal to
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', which is accessed by
+--     this command
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-dstAccelerationStructure-03702#
+--     The range of memory backing the @dstAccelerationStructure@ member of
+--     any element of @pInfos@ that is accessed by this command /must/ not
+--     overlap the memory backing the @dstAccelerationStructure@ member of
+--     any other element of @pInfos@, which is accessed by this command
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-dstAccelerationStructure-03703#
+--     The range of memory backing the @dstAccelerationStructure@ member of
+--     any element of @pInfos@ that is accessed by this command /must/ not
+--     overlap the memory backing the @scratchData@ member of any element
+--     of @pInfos@ (including the same element), which is accessed by this
+--     command
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-scratchData-03704#
+--     The range of memory backing the @scratchData@ member of any element
+--     of @pInfos@ that is accessed by this command /must/ not overlap the
+--     memory backing the @scratchData@ member of any other element of
+--     @pInfos@, which is accessed by this command
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-scratchData-03705#
+--     The range of memory backing the @scratchData@ member of any element
+--     of @pInfos@ that is accessed by this command /must/ not overlap the
+--     memory backing the @srcAccelerationStructure@ member of any element
+--     of @pInfos@ with a @mode@ equal to
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR' (including the same
+--     element), which is accessed by this command
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-dstAccelerationStructure-03706#
+--     The range of memory backing the @dstAccelerationStructure@ member of
+--     any element of @pInfos@ that is accessed by this command /must/ not
+--     overlap the memory backing any acceleration structure referenced by
+--     the @geometry.instances.data@ member of any element of @pGeometries@
+--     or @ppGeometries@ with a @geometryType@ of
+--     'GEOMETRY_TYPE_INSTANCES_KHR' in any other element of @pInfos@,
+--     which is accessed by this command
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03667# For
+--     each element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', its
+--     @srcAccelerationStructure@ member /must/ have previously been
+--     constructed with 'BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR'
+--     set in 'AccelerationStructureBuildGeometryInfoKHR'::@flags@ in the
+--     build
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03668# For
+--     each element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', its
+--     @srcAccelerationStructure@ and @dstAccelerationStructure@ members
+--     /must/ either be the same
+--     'Vulkan.Extensions.Handles.AccelerationStructureKHR', or not have
+--     any
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-memory-aliasing memory aliasing>
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03758# For
+--     each element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', its @geometryCount@
+--     member /must/ have the same value which was specified when
+--     @srcAccelerationStructure@ was last built
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03759# For
+--     each element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', its @flags@ member
+--     /must/ have the same value which was specified when
+--     @srcAccelerationStructure@ was last built
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03760# For
+--     each element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', its @type@ member
+--     /must/ have the same value which was specified when
+--     @srcAccelerationStructure@ was last built
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03761# For
+--     each element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
+--     'AccelerationStructureGeometryKHR' structure referred to by its
+--     @pGeometries@ or @ppGeometries@ members, its @geometryType@ member
+--     /must/ have the same value which was specified when
+--     @srcAccelerationStructure@ was last built
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03762# For
+--     each element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
+--     'AccelerationStructureGeometryKHR' structure referred to by its
+--     @pGeometries@ or @ppGeometries@ members, its @flags@ member /must/
+--     have the same value which was specified when
+--     @srcAccelerationStructure@ was last built
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03763# For
+--     each element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
+--     'AccelerationStructureGeometryKHR' structure referred to by its
+--     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
+--     'GEOMETRY_TYPE_TRIANGLES_KHR', its @geometry.triangles.vertexFormat@
+--     member /must/ have the same value which was specified when
+--     @srcAccelerationStructure@ was last built
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03764# For
+--     each element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
+--     'AccelerationStructureGeometryKHR' structure referred to by its
+--     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
+--     'GEOMETRY_TYPE_TRIANGLES_KHR', its @geometry.triangles.maxVertex@
+--     member /must/ have the same value which was specified when
+--     @srcAccelerationStructure@ was last built
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03765# For
+--     each element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
+--     'AccelerationStructureGeometryKHR' structure referred to by its
+--     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
+--     'GEOMETRY_TYPE_TRIANGLES_KHR', its @geometry.triangles.indexType@
+--     member /must/ have the same value which was specified when
+--     @srcAccelerationStructure@ was last built
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03766# For
+--     each element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
+--     'AccelerationStructureGeometryKHR' structure referred to by its
+--     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
+--     'GEOMETRY_TYPE_TRIANGLES_KHR', if its
+--     @geometry.triangles.transformData@ address was @NULL@ when
+--     @srcAccelerationStructure@ was last built, then it /must/ be @NULL@
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03767# For
+--     each element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
+--     'AccelerationStructureGeometryKHR' structure referred to by its
+--     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
+--     'GEOMETRY_TYPE_TRIANGLES_KHR', if its
+--     @geometry.triangles.transformData@ address was not @NULL@ when
+--     @srcAccelerationStructure@ was last built, then it /must/ not be
+--     @NULL@
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-10898# For
+--     each element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
+--     'AccelerationStructureGeometryKHR' structure referred to by its
+--     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
+--     'GEOMETRY_TYPE_DENSE_GEOMETRY_FORMAT_TRIANGLES_AMDX', the
+--     @numTriangles@ member of the
+--     'Vulkan.Extensions.VK_AMDX_dense_geometry_format.AccelerationStructureDenseGeometryFormatTrianglesDataAMDX'
+--     structure in the @pNext@ chain /must/ have the same value which was
+--     specified when @srcAccelerationStructure@ was last built
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-10899# For
+--     each element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
+--     'AccelerationStructureGeometryKHR' structure referred to by its
+--     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
+--     'GEOMETRY_TYPE_DENSE_GEOMETRY_FORMAT_TRIANGLES_AMDX', the
+--     @numVertices@ member of the
+--     'Vulkan.Extensions.VK_AMDX_dense_geometry_format.AccelerationStructureDenseGeometryFormatTrianglesDataAMDX'
+--     structure in the @pNext@ chain /must/ have the same value which was
+--     specified when @srcAccelerationStructure@ was last built
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-10900# For
+--     each element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
+--     'AccelerationStructureGeometryKHR' structure referred to by its
+--     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
+--     'GEOMETRY_TYPE_DENSE_GEOMETRY_FORMAT_TRIANGLES_AMDX', the
+--     @maxPrimitiveIndex@ member of the
+--     'Vulkan.Extensions.VK_AMDX_dense_geometry_format.AccelerationStructureDenseGeometryFormatTrianglesDataAMDX'
+--     structure in the @pNext@ chain /must/ have the same value which was
+--     specified when @srcAccelerationStructure@ was last built
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-10901# For
+--     each element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
+--     'AccelerationStructureGeometryKHR' structure referred to by its
+--     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
+--     'GEOMETRY_TYPE_DENSE_GEOMETRY_FORMAT_TRIANGLES_AMDX', the
+--     @maxGeometryIndex@ member of the
+--     'Vulkan.Extensions.VK_AMDX_dense_geometry_format.AccelerationStructureDenseGeometryFormatTrianglesDataAMDX'
+--     structure in the @pNext@ chain /must/ have the same value which was
+--     specified when @srcAccelerationStructure@ was last built
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-10902# For
+--     each element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
+--     'AccelerationStructureGeometryKHR' structure referred to by its
+--     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
+--     'GEOMETRY_TYPE_DENSE_GEOMETRY_FORMAT_TRIANGLES_AMDX', the @format@
+--     member of the
+--     'Vulkan.Extensions.VK_AMDX_dense_geometry_format.AccelerationStructureDenseGeometryFormatTrianglesDataAMDX'
+--     structure in the @pNext@ chain /must/ have the same value which was
+--     specified when @srcAccelerationStructure@ was last built
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-10903# For
+--     each element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
+--     'AccelerationStructureGeometryKHR' structure referred to by its
+--     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
+--     'GEOMETRY_TYPE_DENSE_GEOMETRY_FORMAT_TRIANGLES_AMDX', the @dataSize@
+--     member of the
+--     'Vulkan.Extensions.VK_AMDX_dense_geometry_format.AccelerationStructureDenseGeometryFormatTrianglesDataAMDX'
+--     structure in the @pNext@ chain /must/ have the same value which was
+--     specified when @srcAccelerationStructure@ was last built
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03768# For
+--     each element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
+--     'AccelerationStructureGeometryKHR' structure referred to by its
+--     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
+--     'GEOMETRY_TYPE_TRIANGLES_KHR', and @geometry.triangles.indexType@ is
+--     not 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR', then the
+--     value of each index referenced /must/ be the same as the
+--     corresponding index value when @srcAccelerationStructure@ was last
+--     built
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-primitiveCount-03769#
+--     For each element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
+--     'AccelerationStructureGeometryKHR' structure referred to by its
+--     @pGeometries@ or @ppGeometries@ members, the @primitiveCount@ member
+--     of its corresponding 'AccelerationStructureBuildRangeInfoKHR'
+--     structure /must/ have the same value which was specified when
+--     @srcAccelerationStructure@ was last built
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03801# For
+--     each element of @pInfos@[i].@pGeometries@ or
+--     @pInfos@[i].@ppGeometries@ with a @geometryType@ of
+--     'GEOMETRY_TYPE_INSTANCES_KHR', the corresponding
+--     @ppMaxPrimitiveCounts@[i][j] /must/ be less than or equal to
+--     'PhysicalDeviceAccelerationStructurePropertiesKHR'::@maxInstanceCount@
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-12258# If
+--     @pInfos@[i].@mode@ is 'BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR',
+--     and N is not @0@, all addresses between
+--     @pInfos@[i].@scratchData.deviceAddress@ and
+--     @pInfos@[i].@scratchData.deviceAddress@ + N - 1 /must/ be in the
+--     buffer device address range of the same buffer, where N is given by
+--     the @buildScratchSize@ member of the
+--     'AccelerationStructureBuildSizesInfoKHR' structure returned from a
+--     call to 'getAccelerationStructureBuildSizesKHR' with an identical
+--     'AccelerationStructureBuildGeometryInfoKHR' structure and primitive
+--     count
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-12259# If
+--     @pInfos@[i].@mode@ is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', and N is not @0@,
+--     all addresses between @pInfos@[i].@scratchData.deviceAddress@ and
+--     @pInfos@[i].@scratchData.deviceAddress@ + N - 1 /must/ be in the
+--     buffer device address range of the same buffer, where N is given by
+--     the @updateScratchSize@ member of the
+--     'AccelerationStructureBuildSizesInfoKHR' structure returned from a
+--     call to 'getAccelerationStructureBuildSizesKHR' with an identical
+--     'AccelerationStructureBuildGeometryInfoKHR' structure and primitive
+--     count
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-geometry-03673#
+--     The buffers from which the buffer device addresses for all of the
+--     @geometry.triangles.vertexData@, @geometry.triangles.indexData@,
+--     @geometry.triangles.transformData@, @geometry.aabbs.data@, and
+--     @geometry.instances.data@ members of all @pInfos@[i].@pGeometries@
+--     and @pInfos@[i].@ppGeometries@ are queried /must/ have been created
+--     with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR'
+--     usage flag set
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-12260# If
+--     @pInfos@[i].@mode@ is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', and the size
+--     reported by @updateScratchSize@ member of the
+--     'AccelerationStructureBuildSizesInfoKHR' structure returned from a
+--     call to 'getAccelerationStructureBuildSizesKHR' with an identical
+--     'AccelerationStructureBuildGeometryInfoKHR' structure and primitive
+--     count is non-zero, @pInfos@[i].@scratchData.deviceAddress@ /must/ be
+--     a device address allocated to the application from a buffer created
+--     with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_STORAGE_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-12261# If
+--     @pInfos@[i].@mode@ is 'BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR',
+--     and the size reported by @buildScratchSize@ member of the
+--     'AccelerationStructureBuildSizesInfoKHR' structure returned from a
+--     call to 'getAccelerationStructureBuildSizesKHR' with an identical
+--     'AccelerationStructureBuildGeometryInfoKHR' structure and primitive
+--     count is non-zero, @pInfos@[i].@scratchData.deviceAddress@ /must/ be
+--     a device address allocated to the application from a buffer created
+--     with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_STORAGE_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03710# For
+--     each element of @pInfos@, its @scratchData.deviceAddress@ member
+--     /must/ be a multiple of
+--     'PhysicalDeviceAccelerationStructurePropertiesKHR'::@minAccelerationStructureScratchOffsetAlignment@
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03804# For
+--     each element of @pInfos@[i].@pGeometries@ or
+--     @pInfos@[i].@ppGeometries@ with a @geometryType@ of
+--     'GEOMETRY_TYPE_TRIANGLES_KHR',
+--     @geometry.triangles.vertexData.deviceAddress@ /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03711# For
+--     each element of @pInfos@[i].@pGeometries@ or
+--     @pInfos@[i].@ppGeometries@ with a @geometryType@ of
+--     'GEOMETRY_TYPE_TRIANGLES_KHR',
+--     @geometry.triangles.vertexData.deviceAddress@ /must/ be aligned to:
+--
+--     -   the
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats size of the format>
+--         specified in @vertexFormat@, in bytes, if that format is a
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-packed packed format>
+--
+--     -   the
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats component size>
+--         of the format specified in @vertexFormat@, in bytes, if that
+--         format is not a
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-packed packed format>
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03806# For
+--     each element of @pInfos@[i].@pGeometries@ or
+--     @pInfos@[i].@ppGeometries@ with a @geometryType@ of
+--     'GEOMETRY_TYPE_TRIANGLES_KHR', if @geometry.triangles.indexType@ is
+--     not 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR',
+--     @geometry.triangles.indexData.deviceAddress@ /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03712# For
+--     each element of @pInfos@[i].@pGeometries@ or
+--     @pInfos@[i].@ppGeometries@ with a @geometryType@ of
+--     'GEOMETRY_TYPE_TRIANGLES_KHR', and with
+--     @geometry.triangles.indexType@ not equal to
+--     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR',
+--     @geometry.triangles.indexData.deviceAddress@ /must/ be aligned to
+--     the size in bytes of the type in @indexType@
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03808# For
+--     each element of @pInfos@[i].@pGeometries@ or
+--     @pInfos@[i].@ppGeometries@ with a @geometryType@ of
+--     'GEOMETRY_TYPE_TRIANGLES_KHR', if
+--     @geometry.triangles.transformData.deviceAddress@ is not @0@, it
+--     /must/ be a valid 'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03810# For
+--     each element of @pInfos@[i].@pGeometries@ or
+--     @pInfos@[i].@ppGeometries@ with a @geometryType@ of
+--     'GEOMETRY_TYPE_TRIANGLES_KHR', if
+--     @geometry.triangles.transformData.deviceAddress@ is not @0@, it
+--     /must/ be aligned to @16@ bytes
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03811# For
+--     each element of @pInfos@[i].@pGeometries@ or
+--     @pInfos@[i].@ppGeometries@ with a @geometryType@ of
+--     'GEOMETRY_TYPE_AABBS_KHR', @geometry.aabbs.data.deviceAddress@
+--     /must/ be a valid 'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03714# For
+--     each element of @pInfos@[i].@pGeometries@ or
+--     @pInfos@[i].@ppGeometries@ with a @geometryType@ of
+--     'GEOMETRY_TYPE_AABBS_KHR', @geometry.aabbs.data.deviceAddress@
+--     /must/ be aligned to @8@ bytes
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03715# For
+--     each element of @pInfos@[i].@pGeometries@ or
+--     @pInfos@[i].@ppGeometries@ with a @geometryType@ of
+--     'GEOMETRY_TYPE_INSTANCES_KHR', if @geometry.arrayOfPointers@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE',
+--     @geometry.instances.data.deviceAddress@ /must/ be aligned to @16@
+--     bytes
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03716# For
+--     each element of @pInfos@[i].@pGeometries@ or
+--     @pInfos@[i].@ppGeometries@ with a @geometryType@ of
+--     'GEOMETRY_TYPE_INSTANCES_KHR', if @geometry.arrayOfPointers@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE',
+--     @geometry.instances.data.deviceAddress@ /must/ be aligned to @8@
+--     bytes
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03717# For
+--     each element of @pInfos@[i].@pGeometries@ or
+--     @pInfos@[i].@ppGeometries@ with a @geometryType@ of
+--     'GEOMETRY_TYPE_INSTANCES_KHR', if @geometry.arrayOfPointers@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', each element of
+--     @geometry.instances.data.deviceAddress@ in device memory /must/ be
+--     aligned to @16@ bytes
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03813# For
+--     each element of @pInfos@[i].@pGeometries@ or
+--     @pInfos@[i].@ppGeometries@ with a @geometryType@ of
+--     'GEOMETRY_TYPE_INSTANCES_KHR',
+--     @geometry.instances.data.deviceAddress@ /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-12281# For
+--     each element of @pInfos@[i].@pGeometries@ or
+--     @pInfos@[i].@ppGeometries@ with a @geometryType@ of
+--     'GEOMETRY_TYPE_INSTANCES_KHR', each
+--     'AccelerationStructureInstanceKHR'::@accelerationStructureReference@
+--     value in @geometry.instances.data.deviceAddress@ /must/ be @0@ or a
+--     value obtained from 'getAccelerationStructureDeviceAddressKHR' for a
+--     valid bottom level acceleration structure
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-10607# For
+--     each element of @pInfos@[i].@pGeometries@ or
+--     @pInfos@[i].@ppGeometries@ with a @geometryType@ of
+--     'GEOMETRY_TYPE_INSTANCES_KHR', if
+--     'GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_BIT_KHR' is set in
+--     'AccelerationStructureInstanceKHR'::@flags@ then
+--     @geometry.instances.data.deviceAddress@ /must/ refer to an
+--     acceleration structure that was built with
+--     'BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_BIT_KHR'
+--     set in 'AccelerationStructureBuildGeometryInfoKHR'::@flags@
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-commandBuffer-09547#
+--     @commandBuffer@ /must/ not be a protected command buffer
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-micromap-11701#
+--     For any element of @pInfos@[i].@pGeometries@ or
+--     @pInfos@[i].@ppGeometries@ with a @geometryType@ of
+--     'GEOMETRY_TYPE_TRIANGLES_KHR', if there is an instance of
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapKHR'
+--     in the @geometry.triangles.pNext@ chain with a valid @micromap@
+--     member, then the @micromap@ member /must/ have been constructed
+--     prior to this command’s execution on the device
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-micromap-11624#
+--     For any element of @pInfos@[i].@pGeometries@ or
+--     @pInfos@[i].@ppGeometries@ with a @geometryType@ of
+--     'GEOMETRY_TYPE_TRIANGLES_KHR', if there is an instance of
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapKHR'
+--     in the @geometry.triangles.pNext@ chain with a valid @micromap@
+--     member, then the @micromap@ member /must/ have been built with a
+--     @type@ of 'ACCELERATION_STRUCTURE_TYPE_OPACITY_MICROMAP_KHR'
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-micromap-11625#
+--     For each element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
+--     'AccelerationStructureGeometryKHR' structure referred to by its
+--     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
+--     'GEOMETRY_TYPE_TRIANGLES_KHR', and the same geometry in the original
+--     build of @srcAccelerationStructure@ was built with an instance of
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapKHR'
+--     in its @geometry.triangles.pNext@ chain with a valid @micromap@
+--     member, then an instance of
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapKHR'
+--     /must/ be included in the in the @geometry.triangles.pNext@ chain
+--     with a valid @micromap@ member
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-micromap-11626#
+--     For each element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
+--     'AccelerationStructureGeometryKHR' structure referred to by its
+--     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
+--     'GEOMETRY_TYPE_TRIANGLES_KHR', and the same geometry in the original
+--     build of @srcAccelerationStructure@ was built with an instance of
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapKHR'
+--     in its @geometry.triangles.pNext@ chain with its @micromap@ member
+--     equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE', then an instance
+--     of
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapKHR'
+--     /must/ be included in the in the @geometry.triangles.pNext@ chain
+--     with its @micromap@ member equal to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-micromap-11627#
+--     For each element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
+--     'AccelerationStructureGeometryKHR' structure referred to by its
+--     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
+--     'GEOMETRY_TYPE_TRIANGLES_KHR', and the same geometry in the original
+--     build of @srcAccelerationStructure@ was not built with an instance
+--     of
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapKHR'
+--     in its @geometry.triangles.pNext@ chain, then an instance of
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapKHR'
+--     /must/ not be included in the in the @geometry.triangles.pNext@
+--     chain
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-micromap-11628#
+--     For each element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', its
+--     @srcAccelerationStructure@ was originally built without the
+--     'BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_BIT_KHR'
+--     flag, and @srcAccelerationStructure@ was constructed by
+--     deserialization with 'cmdCopyMemoryToAccelerationStructureKHR', then
+--     for each 'AccelerationStructureGeometryKHR' structure referred to by
+--     its @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
+--     'GEOMETRY_TYPE_TRIANGLES_KHR', and the same geometry in the original
+--     build of @srcAccelerationStructure@ was built with an instance of
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapKHR'
+--     in its @geometry.triangles.pNext@ chain with a valid @micromap@
+--     member, then an instance of
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapKHR'
+--     /must/ be included in the in the @geometry.triangles.pNext@ chain
+--     with a @micromap@ that was deserialized from the serialized data of
+--     the @micromap@ in the original build of @srcAccelerationStructure@
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-micromap-11629#
+--     For each element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', its
+--     @srcAccelerationStructure@ was originally built without either the
+--     'BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_BIT_EXT'
+--     or the
+--     'BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_BIT_KHR'
+--     flags, and @srcAccelerationStructure@ was not constructed by
+--     deserialization with 'cmdCopyMemoryToAccelerationStructureKHR', then
+--     for each 'AccelerationStructureGeometryKHR' structure referred to by
+--     its @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
+--     'GEOMETRY_TYPE_TRIANGLES_KHR', and the same geometry in the original
+--     build of @srcAccelerationStructure@ was built with an instance of
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapKHR'
+--     in its @geometry.triangles.pNext@ chain with a valid @micromap@
+--     member, then an instance of
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapKHR'
+--     /must/ be included in the in the @geometry.triangles.pNext@ chain
+--     with the same @micromap@ handle as the original build
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-micromap-11632#
+--     For any element of @pInfos@[i].@pGeometries@ or
+--     @pInfos@[i].@ppGeometries@ with a @geometryType@ of
+--     'GEOMETRY_TYPE_TRIANGLES_KHR', if there is an instance of
+--     'Vulkan.Extensions.VK_EXT_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapEXT'
+--     in the @geometry.triangles.pNext@ chain, then its @micromap@ member
+--     /must/ have been constructed prior to this command’s execution on
+--     the device
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-10904# For
+--     each element of @pInfos@[i].@pGeometries@ or
+--     @pInfos@[i].@ppGeometries@ with a @geometryType@ of
+--     'GEOMETRY_TYPE_TRIANGLES_KHR', if there is an instance of
+--     'Vulkan.Extensions.VK_EXT_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapEXT'
+--     in the @geometry.triangles.pNext@ chain, and its @indexType@ is
+--     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR', then its
+--     @indexBuffer.deviceAddress@ /must/ be 0
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-10905# For
+--     each element of @pInfos@[i].@pGeometries@ or
+--     @pInfos@[i].@ppGeometries@ with a @geometryType@ of
+--     'GEOMETRY_TYPE_TRIANGLES_KHR', if there is an instance of
+--     'Vulkan.Extensions.VK_EXT_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapEXT'
+--     in the @geometry.triangles.pNext@ chain, and its @indexType@ is not
+--     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR', then its
+--     @indexBuffer.deviceAddress@ /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-11846# For
+--     each element of @pInfos@[i].@pGeometries@ or
+--     @pInfos@[i].@ppGeometries@ with a @geometryType@ of
+--     'GEOMETRY_TYPE_SPHERES_NV', if
+--     'Vulkan.Extensions.VK_NV_ray_tracing_linear_swept_spheres.AccelerationStructureGeometrySpheresDataNV'::@indexType@
+--     is 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR', then its
+--     @indexData.deviceAddress@ /must/ be 0
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-11847# For
+--     each element of @pInfos@[i].@pGeometries@ or
+--     @pInfos@[i].@ppGeometries@ with a @geometryType@ of
+--     'GEOMETRY_TYPE_SPHERES_NV', if
+--     'Vulkan.Extensions.VK_NV_ray_tracing_linear_swept_spheres.AccelerationStructureGeometrySpheresDataNV'::@indexType@
+--     is not 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR', then its
+--     @indexData.deviceAddress@ /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-11848# For
+--     each element of @pInfos@[i].@pGeometries@ or
+--     @pInfos@[i].@ppGeometries@ with a @geometryType@ of
+--     'GEOMETRY_TYPE_SPHERES_NV',
+--     'Vulkan.Extensions.VK_NV_ray_tracing_linear_swept_spheres.AccelerationStructureGeometrySpheresDataNV'::@vertexData.deviceAddress@
+--     /must/ be a valid 'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-11849# For
+--     each element of @pInfos@[i].@pGeometries@ or
+--     @pInfos@[i].@ppGeometries@ with a @geometryType@ of
+--     'GEOMETRY_TYPE_SPHERES_NV',
+--     'Vulkan.Extensions.VK_NV_ray_tracing_linear_swept_spheres.AccelerationStructureGeometrySpheresDataNV'::@radiusData.deviceAddress@
+--     /must/ be a valid 'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-11850# For
+--     each element of @pInfos@[i].@pGeometries@ or
+--     @pInfos@[i].@ppGeometries@ with a @geometryType@ of
+--     'GEOMETRY_TYPE_LINEAR_SWEPT_SPHERES_NV', if
+--     'Vulkan.Extensions.VK_NV_ray_tracing_linear_swept_spheres.AccelerationStructureGeometryLinearSweptSpheresDataNV'::@indexType@
+--     is 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR', then its
+--     @indexData.deviceAddress@ /must/ be 0
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-11851# For
+--     each element of @pInfos@[i].@pGeometries@ or
+--     @pInfos@[i].@ppGeometries@ with a @geometryType@ of
+--     'GEOMETRY_TYPE_LINEAR_SWEPT_SPHERES_NV', if
+--     'Vulkan.Extensions.VK_NV_ray_tracing_linear_swept_spheres.AccelerationStructureGeometryLinearSweptSpheresDataNV'::@indexType@
+--     is not 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR', then its
+--     @indexData.deviceAddress@ /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-11852# For
+--     each element of @pInfos@[i].@pGeometries@ or
+--     @pInfos@[i].@ppGeometries@ with a @geometryType@ of
+--     'GEOMETRY_TYPE_LINEAR_SWEPT_SPHERES_NV',
+--     'Vulkan.Extensions.VK_NV_ray_tracing_linear_swept_spheres.AccelerationStructureGeometryLinearSweptSpheresDataNV'::@vertexData.deviceAddress@
+--     /must/ be a valid 'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-11853# For
+--     each element of @pInfos@[i].@pGeometries@ or
+--     @pInfos@[i].@ppGeometries@ with a @geometryType@ of
+--     'GEOMETRY_TYPE_LINEAR_SWEPT_SPHERES_NV',
+--     'Vulkan.Extensions.VK_NV_ray_tracing_linear_swept_spheres.AccelerationStructureGeometryLinearSweptSpheresDataNV'::@radiusData.deviceAddress@
+--     /must/ be a valid 'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pIndirectDeviceAddresses-03646#
+--     For each element of @pIndirectDeviceAddresses@[i], all device
+--     addresses between @pIndirectDeviceAddresses@[i] and
+--     @pIndirectDeviceAddresses@[i] + (@pInfos@[i].@geometryCount@ ×
+--     @pIndirectStrides@[i]) - 1 /must/ be in the buffer device address
+--     range of the same buffer
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pIndirectDeviceAddresses-03647#
+--     For each element of @pIndirectDeviceAddresses@, the buffer from
+--     which it was queried /must/ have been created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pIndirectDeviceAddresses-03648#
+--     Each element of @pIndirectDeviceAddresses@ /must/ be a multiple of
+--     @4@
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pIndirectStrides-03787#
+--     Each element of @pIndirectStrides@ /must/ be a multiple of @4@
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pIndirectDeviceAddresses-03651#
+--     Each 'AccelerationStructureBuildRangeInfoKHR' structure referenced
+--     by any element of @pIndirectDeviceAddresses@ /must/ be a valid
+--     'AccelerationStructureBuildRangeInfoKHR' structure
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03652#
+--     @pInfos@[i].@dstAccelerationStructure@ /must/ have been created with
+--     a value of 'AccelerationStructureCreateInfoKHR'::@size@ greater than
+--     or equal to the memory size required by the build operation, as
+--     returned by 'getAccelerationStructureBuildSizesKHR' with
+--     @pBuildInfo@ = @pInfos@[i] and @pMaxPrimitiveCounts@ =
+--     @ppMaxPrimitiveCounts@[i]
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-ppMaxPrimitiveCounts-03653#
+--     Each @ppMaxPrimitiveCounts@[i][j] /must/ be greater than or equal to
+--     the @primitiveCount@ value specified by the
+--     'AccelerationStructureBuildRangeInfoKHR' structure located at
+--     @pIndirectDeviceAddresses@[i] + (@j@ × @pIndirectStrides@[i])
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-type-11557# For
+--     any element of @pInfos@, its @type@ member /must/ not be
+--     'ACCELERATION_STRUCTURE_TYPE_OPACITY_MICROMAP_KHR'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-parameter#
+--     @pInfos@ /must/ be a valid pointer to an array of @infoCount@ valid
+--     'AccelerationStructureBuildGeometryInfoKHR' structures
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pIndirectDeviceAddresses-parameter#
+--     @pIndirectDeviceAddresses@ /must/ be a valid pointer to an array of
+--     @infoCount@ 'Vulkan.Core10.FundamentalTypes.DeviceAddress' values
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pIndirectStrides-parameter#
+--     @pIndirectStrides@ /must/ be a valid pointer to an array of
+--     @infoCount@ @uint32_t@ values
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-ppMaxPrimitiveCounts-parameter#
+--     @ppMaxPrimitiveCounts@ /must/ be a valid pointer to an array of
+--     @infoCount@ @uint32_t@ values
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-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-vkCmdBuildAccelerationStructuresIndirectKHR-commandBuffer-cmdpool#
+--     The 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT' operations
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-renderpass# This
+--     command /must/ only be called outside of a render pass instance
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-suspended# This
+--     command /must/ not be called between suspended render pass instances
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-videocoding# This
+--     command /must/ only be called outside of a video coding scope
+--
+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-infoCount-arraylength#
+--     @infoCount@ /must/ be greater than @0@
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdBuildAccelerationStructuresIndirectKHR is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
+-- 'AccelerationStructureBuildGeometryInfoKHR',
+-- 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+cmdBuildAccelerationStructuresIndirectKHR :: forall io
+                                           . (MonadIO io)
+                                          => -- | @commandBuffer@ is the command buffer into which the command will be
+                                             -- recorded.
+                                             CommandBuffer
+                                          -> -- | @pInfos@ is a pointer to an array of @infoCount@
+                                             -- 'AccelerationStructureBuildGeometryInfoKHR' structures defining the
+                                             -- geometry used to build each acceleration structure.
+                                             ("infos" ::: Vector AccelerationStructureBuildGeometryInfoKHR)
+                                          -> -- | @pIndirectDeviceAddresses@ is a pointer to an array of @infoCount@
+                                             -- buffer device addresses which point to @pInfos@[i].@geometryCount@
+                                             -- 'AccelerationStructureBuildRangeInfoKHR' structures defining dynamic
+                                             -- offsets to the addresses where geometry data is stored, as defined by
+                                             -- @pInfos@[i].
+                                             ("indirectDeviceAddresses" ::: Vector DeviceAddress)
+                                          -> -- | @pIndirectStrides@ is a pointer to an array of @infoCount@ byte strides
+                                             -- between elements of @pIndirectDeviceAddresses@.
+                                             ("indirectStrides" ::: Vector Word32)
+                                          -> -- | @ppMaxPrimitiveCounts@ is a pointer to an array of @infoCount@ pointers
+                                             -- to arrays of @pInfos@[i].@geometryCount@ values indicating the maximum
+                                             -- number of primitives that will be built by this command for each
+                                             -- geometry.
+                                             ("maxPrimitiveCounts" ::: Vector (Vector Word32))
+                                          -> io ()
+cmdBuildAccelerationStructuresIndirectKHR commandBuffer
+                                            infos
+                                            indirectDeviceAddresses
+                                            indirectStrides
+                                            maxPrimitiveCounts = liftIO . evalContT $ do
+  let vkCmdBuildAccelerationStructuresIndirectKHRPtr = pVkCmdBuildAccelerationStructuresIndirectKHR (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdBuildAccelerationStructuresIndirectKHRPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdBuildAccelerationStructuresIndirectKHR is null" Nothing Nothing
+  let vkCmdBuildAccelerationStructuresIndirectKHR' = mkVkCmdBuildAccelerationStructuresIndirectKHR vkCmdBuildAccelerationStructuresIndirectKHRPtr
+  let pInfosLength = Data.Vector.length $ (infos)
+  lift $ unless ((Data.Vector.length $ (indirectDeviceAddresses)) == pInfosLength) $
+    throwIO $ IOError Nothing InvalidArgument "" "pIndirectDeviceAddresses and pInfos must have the same length" Nothing Nothing
+  lift $ unless ((Data.Vector.length $ (indirectStrides)) == pInfosLength) $
+    throwIO $ IOError Nothing InvalidArgument "" "pIndirectStrides and pInfos must have the same length" Nothing Nothing
+  lift $ unless ((Data.Vector.length $ (maxPrimitiveCounts)) == pInfosLength) $
+    throwIO $ IOError Nothing InvalidArgument "" "ppMaxPrimitiveCounts and pInfos must have the same length" Nothing Nothing
+  pPInfos <- ContT $ allocaBytes @AccelerationStructureBuildGeometryInfoKHR ((Data.Vector.length (infos)) * 80)
+  Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPInfos `plusPtr` (80 * (i)) :: Ptr AccelerationStructureBuildGeometryInfoKHR) (e) . ($ ())) (infos)
+  pPIndirectDeviceAddresses <- ContT $ allocaBytes @DeviceAddress ((Data.Vector.length (indirectDeviceAddresses)) * 8)
+  lift $ Data.Vector.imapM_ (\i e -> poke (pPIndirectDeviceAddresses `plusPtr` (8 * (i)) :: Ptr DeviceAddress) (e)) (indirectDeviceAddresses)
+  pPIndirectStrides <- ContT $ allocaBytes @Word32 ((Data.Vector.length (indirectStrides)) * 4)
+  lift $ Data.Vector.imapM_ (\i e -> poke (pPIndirectStrides `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (indirectStrides)
+  pPpMaxPrimitiveCounts <- ContT $ allocaBytes @(Ptr Word32) ((Data.Vector.length (maxPrimitiveCounts)) * 8)
+  Data.Vector.imapM_ (\i e -> do
+    pPpMaxPrimitiveCounts' <- ContT $ allocaBytes @Word32 ((Data.Vector.length (e)) * 4)
+    lift $ Data.Vector.imapM_ (\i' e' -> poke (pPpMaxPrimitiveCounts' `plusPtr` (4 * (i')) :: Ptr Word32) (e')) (e)
+    lift $ poke (pPpMaxPrimitiveCounts `plusPtr` (8 * (i)) :: Ptr (Ptr Word32)) (pPpMaxPrimitiveCounts')) (maxPrimitiveCounts)
+  lift $ traceAroundEvent "vkCmdBuildAccelerationStructuresIndirectKHR" (vkCmdBuildAccelerationStructuresIndirectKHR'
+                                                                           (commandBufferHandle (commandBuffer))
+                                                                           ((fromIntegral pInfosLength :: Word32))
+                                                                           (pPInfos)
+                                                                           (pPIndirectDeviceAddresses)
+                                                                           (pPIndirectStrides)
+                                                                           (pPpMaxPrimitiveCounts))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkBuildAccelerationStructuresKHR
+  :: FunPtr (Ptr Device_T -> DeferredOperationKHR -> Word32 -> Ptr AccelerationStructureBuildGeometryInfoKHR -> Ptr (Ptr AccelerationStructureBuildRangeInfoKHR) -> IO Result) -> Ptr Device_T -> DeferredOperationKHR -> Word32 -> Ptr AccelerationStructureBuildGeometryInfoKHR -> Ptr (Ptr AccelerationStructureBuildRangeInfoKHR) -> IO Result
+
+-- | vkBuildAccelerationStructuresKHR - Build an acceleration structure on
+-- the host
+--
+-- = Description
+--
+-- This command fulfills the same task as
+-- 'cmdBuildAccelerationStructuresKHR' but is executed by the host.
+--
+-- The 'buildAccelerationStructuresKHR' command provides the ability to
+-- initiate multiple acceleration structures builds, however there is no
+-- ordering or synchronization implied between any of the individual
+-- acceleration structure builds.
+--
+-- This means that an application /cannot/ build a top-level acceleration
+-- structure in the same 'buildAccelerationStructuresKHR' call as the
+-- associated bottom-level or instance acceleration structures are being
+-- built. There also /cannot/ be any memory aliasing between any
+-- acceleration structure memories or scratch memories being used by any of
+-- the builds.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-accelerationStructureHostCommands-03581#
+--     The
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-accelerationStructureHostCommands ::accelerationStructureHostCommands>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-mode-04628# The @mode@ member
+--     of each element of @pInfos@ /must/ be a valid
+--     'BuildAccelerationStructureModeKHR' value
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-srcAccelerationStructure-04629#
+--     If the @srcAccelerationStructure@ member of any element of @pInfos@
+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the
+--     @srcAccelerationStructure@ member /must/ be a valid
+--     'Vulkan.Extensions.Handles.AccelerationStructureKHR' handle
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-04630# For each
+--     element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', its
+--     @srcAccelerationStructure@ member /must/ not be
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03708# For each
+--     element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR',
+--     @srcAccelerationStructure@ /must/ be fully backed by physical memory
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03403# The
+--     @srcAccelerationStructure@ member of any element of @pInfos@ /must/
+--     not be the same acceleration structure as the
+--     @dstAccelerationStructure@ member of any other element of @pInfos@
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-dstAccelerationStructure-03698#
+--     The @dstAccelerationStructure@ member of any element of @pInfos@
+--     /must/ not be the same acceleration structure as the
+--     @dstAccelerationStructure@ member of any other element of @pInfos@
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-dstAccelerationStructure-03800#
+--     The @dstAccelerationStructure@ member of any element of @pInfos@
+--     /must/ be a valid
+--     'Vulkan.Extensions.Handles.AccelerationStructureKHR' handle
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03707# For each
+--     element of @pInfos@, its @dstAccelerationStructure@ member /must/ be
+--     fully backed by physical memory
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03699# For each
+--     element of @pInfos@, if its @type@ member is
+--     'ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR', its
+--     @dstAccelerationStructure@ member /must/ have been created with a
+--     value of 'AccelerationStructureCreateInfoKHR'::@type@ equal to
+--     either 'ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR' or
+--     'ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR'
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03700# For each
+--     element of @pInfos@, if its @type@ member is
+--     'ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR', its
+--     @dstAccelerationStructure@ member /must/ have been created with a
+--     value of 'AccelerationStructureCreateInfoKHR'::@type@ equal to
+--     either 'ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR' or
+--     'ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR'
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03663# For each
+--     element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR',
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-inactive-prims inactive primitives>
+--     in its @srcAccelerationStructure@ member /must/ not be made active
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03664# For each
+--     element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', active primitives in
+--     its @srcAccelerationStructure@ member /must/ not be made
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-inactive-prims inactive>
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03709# For each
+--     element of @pInfos@, if an acceleration structure is referenced by
+--     the @geometry.instances.data@ member of any element of @pGeometries@
+--     or @ppGeometries@ with a @geometryType@ of
+--     'GEOMETRY_TYPE_INSTANCES_KHR', it /must/ be fully backed by physical
+--     memory
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-None-03407# The
+--     @dstAccelerationStructure@ member of any element of @pInfos@ /must/
+--     not be referenced by the @geometry.instances.data@ member of any
+--     element of @pGeometries@ or @ppGeometries@ with a @geometryType@ of
+--     'GEOMETRY_TYPE_INSTANCES_KHR' in any other element of @pInfos@
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-dstAccelerationStructure-03701#
+--     The range of memory backing the @dstAccelerationStructure@ member of
+--     any element of @pInfos@ that is accessed by this command /must/ not
+--     overlap the memory backing the @srcAccelerationStructure@ member of
+--     any other element of @pInfos@ with a @mode@ equal to
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', which is accessed by
+--     this command
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-dstAccelerationStructure-03702#
+--     The range of memory backing the @dstAccelerationStructure@ member of
+--     any element of @pInfos@ that is accessed by this command /must/ not
+--     overlap the memory backing the @dstAccelerationStructure@ member of
+--     any other element of @pInfos@, which is accessed by this command
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-dstAccelerationStructure-03703#
+--     The range of memory backing the @dstAccelerationStructure@ member of
+--     any element of @pInfos@ that is accessed by this command /must/ not
+--     overlap the memory backing the @scratchData@ member of any element
+--     of @pInfos@ (including the same element), which is accessed by this
+--     command
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-scratchData-03704# The range
+--     of memory backing the @scratchData@ member of any element of
+--     @pInfos@ that is accessed by this command /must/ not overlap the
+--     memory backing the @scratchData@ member of any other element of
+--     @pInfos@, which is accessed by this command
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-scratchData-03705# The range
+--     of memory backing the @scratchData@ member of any element of
+--     @pInfos@ that is accessed by this command /must/ not overlap the
+--     memory backing the @srcAccelerationStructure@ member of any element
+--     of @pInfos@ with a @mode@ equal to
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR' (including the same
+--     element), which is accessed by this command
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-dstAccelerationStructure-03706#
+--     The range of memory backing the @dstAccelerationStructure@ member of
+--     any element of @pInfos@ that is accessed by this command /must/ not
+--     overlap the memory backing any acceleration structure referenced by
+--     the @geometry.instances.data@ member of any element of @pGeometries@
+--     or @ppGeometries@ with a @geometryType@ of
+--     'GEOMETRY_TYPE_INSTANCES_KHR' in any other element of @pInfos@,
+--     which is accessed by this command
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03667# For each
+--     element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', its
+--     @srcAccelerationStructure@ member /must/ have previously been
+--     constructed with 'BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR'
+--     set in 'AccelerationStructureBuildGeometryInfoKHR'::@flags@ in the
+--     build
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03668# For each
+--     element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', its
+--     @srcAccelerationStructure@ and @dstAccelerationStructure@ members
+--     /must/ either be the same
+--     'Vulkan.Extensions.Handles.AccelerationStructureKHR', or not have
+--     any
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-memory-aliasing memory aliasing>
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03758# For each
+--     element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', its @geometryCount@
+--     member /must/ have the same value which was specified when
+--     @srcAccelerationStructure@ was last built
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03759# For each
+--     element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', its @flags@ member
+--     /must/ have the same value which was specified when
+--     @srcAccelerationStructure@ was last built
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03760# For each
+--     element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', its @type@ member
+--     /must/ have the same value which was specified when
+--     @srcAccelerationStructure@ was last built
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03761# For each
+--     element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
+--     'AccelerationStructureGeometryKHR' structure referred to by its
+--     @pGeometries@ or @ppGeometries@ members, its @geometryType@ member
+--     /must/ have the same value which was specified when
+--     @srcAccelerationStructure@ was last built
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03762# For each
+--     element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
+--     'AccelerationStructureGeometryKHR' structure referred to by its
+--     @pGeometries@ or @ppGeometries@ members, its @flags@ member /must/
+--     have the same value which was specified when
+--     @srcAccelerationStructure@ was last built
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03763# For each
+--     element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
+--     'AccelerationStructureGeometryKHR' structure referred to by its
+--     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
+--     'GEOMETRY_TYPE_TRIANGLES_KHR', its @geometry.triangles.vertexFormat@
+--     member /must/ have the same value which was specified when
+--     @srcAccelerationStructure@ was last built
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03764# For each
+--     element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
+--     'AccelerationStructureGeometryKHR' structure referred to by its
+--     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
+--     'GEOMETRY_TYPE_TRIANGLES_KHR', its @geometry.triangles.maxVertex@
+--     member /must/ have the same value which was specified when
+--     @srcAccelerationStructure@ was last built
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03765# For each
+--     element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
+--     'AccelerationStructureGeometryKHR' structure referred to by its
+--     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
+--     'GEOMETRY_TYPE_TRIANGLES_KHR', its @geometry.triangles.indexType@
+--     member /must/ have the same value which was specified when
+--     @srcAccelerationStructure@ was last built
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03766# For each
+--     element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
+--     'AccelerationStructureGeometryKHR' structure referred to by its
+--     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
+--     'GEOMETRY_TYPE_TRIANGLES_KHR', if its
+--     @geometry.triangles.transformData@ address was @NULL@ when
+--     @srcAccelerationStructure@ was last built, then it /must/ be @NULL@
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03767# For each
+--     element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
+--     'AccelerationStructureGeometryKHR' structure referred to by its
+--     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
+--     'GEOMETRY_TYPE_TRIANGLES_KHR', if its
+--     @geometry.triangles.transformData@ address was not @NULL@ when
+--     @srcAccelerationStructure@ was last built, then it /must/ not be
+--     @NULL@
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-10898# For each
+--     element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
+--     'AccelerationStructureGeometryKHR' structure referred to by its
+--     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
+--     'GEOMETRY_TYPE_DENSE_GEOMETRY_FORMAT_TRIANGLES_AMDX', the
+--     @numTriangles@ member of the
+--     'Vulkan.Extensions.VK_AMDX_dense_geometry_format.AccelerationStructureDenseGeometryFormatTrianglesDataAMDX'
+--     structure in the @pNext@ chain /must/ have the same value which was
+--     specified when @srcAccelerationStructure@ was last built
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-10899# For each
+--     element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
+--     'AccelerationStructureGeometryKHR' structure referred to by its
+--     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
+--     'GEOMETRY_TYPE_DENSE_GEOMETRY_FORMAT_TRIANGLES_AMDX', the
+--     @numVertices@ member of the
+--     'Vulkan.Extensions.VK_AMDX_dense_geometry_format.AccelerationStructureDenseGeometryFormatTrianglesDataAMDX'
+--     structure in the @pNext@ chain /must/ have the same value which was
+--     specified when @srcAccelerationStructure@ was last built
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-10900# For each
+--     element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
+--     'AccelerationStructureGeometryKHR' structure referred to by its
+--     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
+--     'GEOMETRY_TYPE_DENSE_GEOMETRY_FORMAT_TRIANGLES_AMDX', the
+--     @maxPrimitiveIndex@ member of the
+--     'Vulkan.Extensions.VK_AMDX_dense_geometry_format.AccelerationStructureDenseGeometryFormatTrianglesDataAMDX'
+--     structure in the @pNext@ chain /must/ have the same value which was
+--     specified when @srcAccelerationStructure@ was last built
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-10901# For each
+--     element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
+--     'AccelerationStructureGeometryKHR' structure referred to by its
+--     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
+--     'GEOMETRY_TYPE_DENSE_GEOMETRY_FORMAT_TRIANGLES_AMDX', the
+--     @maxGeometryIndex@ member of the
+--     'Vulkan.Extensions.VK_AMDX_dense_geometry_format.AccelerationStructureDenseGeometryFormatTrianglesDataAMDX'
+--     structure in the @pNext@ chain /must/ have the same value which was
+--     specified when @srcAccelerationStructure@ was last built
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-10902# For each
+--     element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
+--     'AccelerationStructureGeometryKHR' structure referred to by its
+--     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
+--     'GEOMETRY_TYPE_DENSE_GEOMETRY_FORMAT_TRIANGLES_AMDX', the @format@
+--     member of the
+--     'Vulkan.Extensions.VK_AMDX_dense_geometry_format.AccelerationStructureDenseGeometryFormatTrianglesDataAMDX'
+--     structure in the @pNext@ chain /must/ have the same value which was
+--     specified when @srcAccelerationStructure@ was last built
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-10903# For each
+--     element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
+--     'AccelerationStructureGeometryKHR' structure referred to by its
+--     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
+--     'GEOMETRY_TYPE_DENSE_GEOMETRY_FORMAT_TRIANGLES_AMDX', the @dataSize@
+--     member of the
+--     'Vulkan.Extensions.VK_AMDX_dense_geometry_format.AccelerationStructureDenseGeometryFormatTrianglesDataAMDX'
+--     structure in the @pNext@ chain /must/ have the same value which was
+--     specified when @srcAccelerationStructure@ was last built
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03768# For each
+--     element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
+--     'AccelerationStructureGeometryKHR' structure referred to by its
+--     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
+--     'GEOMETRY_TYPE_TRIANGLES_KHR', and @geometry.triangles.indexType@ is
+--     not 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR', then the
+--     value of each index referenced /must/ be the same as the
+--     corresponding index value when @srcAccelerationStructure@ was last
+--     built
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-primitiveCount-03769# For
+--     each element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each
+--     'AccelerationStructureGeometryKHR' structure referred to by its
+--     @pGeometries@ or @ppGeometries@ members, the @primitiveCount@ member
+--     of its corresponding 'AccelerationStructureBuildRangeInfoKHR'
+--     structure /must/ have the same value which was specified when
+--     @srcAccelerationStructure@ was last built
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03801# For each
+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@
+--     with a @geometryType@ of 'GEOMETRY_TYPE_INSTANCES_KHR', the
+--     corresponding @ppBuildRangeInfos@[i][j].@primitiveCount@ /must/ be
+--     less than or equal to
+--     'PhysicalDeviceAccelerationStructurePropertiesKHR'::@maxInstanceCount@
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-10126# For each
+--     @pInfos@[i], @dstAccelerationStructure@ /must/ have been created
+--     with a value of 'AccelerationStructureCreateInfoKHR'::@size@ greater
+--     than or equal to either:
+--
+--     -   the memory size required by the build operation, as returned by
+--         'getAccelerationStructureBuildSizesKHR' with @pBuildInfo@ =
+--         @pInfos@[i] and with each element of the @pMaxPrimitiveCounts@
+--         array greater than or equal to the equivalent
+--         @ppBuildRangeInfos@[i][j].@primitiveCount@ values for @j@ in
+--         [0,@pInfos@[i].@geometryCount@) or,
+--
+--     -   the result of querying the corresponding
+--         'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR',
+--         if updating a compacted acceleration structure
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-deferredOperation-03678# Any
+--     previous deferred operation that was associated with
+--     @deferredOperation@ /must/ be complete
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-11702# Each element of
+--     @ppBuildRangeInfos@[i] /must/ be a valid pointer to an array of
+--     @pInfos@[i].@geometryCount@ 'AccelerationStructureBuildRangeInfoKHR'
+--     structures
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-11703# For each
+--     element of @pInfos@, its @dstAccelerationStructure@ member /must/
+--     have been created with 'createAccelerationStructureKHR'
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03722# For each
+--     element of @pInfos@, its @dstAccelerationStructure@ member /must/ be
+--     bound to host-visible device memory
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-11706# For each
+--     element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', its
+--     @srcAccelerationStructure@ member /must/ have been created with
+--     'createAccelerationStructureKHR'
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03723# For each
+--     element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR' the @buffer@ used to
+--     create its @srcAccelerationStructure@ member /must/ be bound to
+--     host-visible device memory
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-11704# For each
+--     element of @pInfos@, the acceleration structure referenced by the
+--     @geometry.instances.data@ member of any element of @pGeometries@ or
+--     @ppGeometries@ with a @geometryType@ of
+--     'GEOMETRY_TYPE_INSTANCES_KHR' /must/ have been created with
+--     'createAccelerationStructureKHR'
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03724# For each
+--     element of @pInfos@, each acceleration structure referenced by the
+--     @geometry.instances.data@ member of any element of @pGeometries@ or
+--     @ppGeometries@ with a @geometryType@ of
+--     'GEOMETRY_TYPE_INSTANCES_KHR' /must/ be bound to host-visible device
+--     memory
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-12244# If
+--     @pInfos@[i].@mode@ is 'BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR',
+--     and N is not @0@, all addresses between
+--     @pInfos@[i].@scratchData.hostAddress@ and
+--     @pInfos@[i].@scratchData.hostAddress@ + N - 1 /must/ be valid host
+--     memory, where N is given by the @buildScratchSize@ member of the
+--     'AccelerationStructureBuildSizesInfoKHR' structure returned from a
+--     call to 'getAccelerationStructureBuildSizesKHR' with an identical
+--     'AccelerationStructureBuildGeometryInfoKHR' structure and primitive
+--     count
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-12245# If
+--     @pInfos@[i].@mode@ is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', and N is not @0@,
+--     all addresses between @pInfos@[i].@scratchData.hostAddress@ and
+--     @pInfos@[i].@scratchData.hostAddress@ + N - 1 /must/ be valid host
+--     memory, where N is given by the @updateScratchSize@ member of the
+--     'AccelerationStructureBuildSizesInfoKHR' structure returned from a
+--     call to 'getAccelerationStructureBuildSizesKHR' with an identical
+--     'AccelerationStructureBuildGeometryInfoKHR' structure and primitive
+--     count
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03771# For each
+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@
+--     with a @geometryType@ of 'GEOMETRY_TYPE_TRIANGLES_KHR',
+--     @geometry.triangles.vertexData.hostAddress@ /must/ be a valid host
+--     address
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03772# For each
+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@
+--     with a @geometryType@ of 'GEOMETRY_TYPE_TRIANGLES_KHR', if
+--     @geometry.triangles.indexType@ is not
+--     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR',
+--     @geometry.triangles.indexData.hostAddress@ /must/ be a valid host
+--     address
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03773# For each
+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@
+--     with a @geometryType@ of 'GEOMETRY_TYPE_TRIANGLES_KHR', if
+--     @geometry.triangles.transformData.hostAddress@ is not @0@, it /must/
+--     be a valid host address
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03774# For each
+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@
+--     with a @geometryType@ of 'GEOMETRY_TYPE_AABBS_KHR',
+--     @geometry.aabbs.data.hostAddress@ /must/ be a valid host address
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03775# For each
+--     element of @pInfos@, its @dstAccelerationStructure@ member /must/ be
+--     bound to memory that was not allocated with multiple instances
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03776# For each
+--     element of @pInfos@, if its @mode@ member is
+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR' the @buffer@ used to
+--     create its @srcAccelerationStructure@ member /must/ be bound to
+--     memory that was not allocated with multiple instances
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03777# For each
+--     element of @pInfos@, each acceleration structure referenced by the
+--     @geometry.instances.data@ member of any element of @pGeometries@ or
+--     @ppGeometries@ with a @geometryType@ of
+--     'GEOMETRY_TYPE_INSTANCES_KHR' /must/ be bound to memory that was not
+--     allocated with multiple instances
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03778# For each
+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@
+--     with a @geometryType@ of 'GEOMETRY_TYPE_INSTANCES_KHR',
+--     @geometry.instances.data.hostAddress@ /must/ be a valid host address
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03779# For each
+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@
+--     with a @geometryType@ of 'GEOMETRY_TYPE_INSTANCES_KHR', each
+--     'AccelerationStructureInstanceKHR'::@accelerationStructureReference@
+--     value in @geometry.instances.data.hostAddress@ /must/ be a valid
+--     'Vulkan.Extensions.Handles.AccelerationStructureKHR' object
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-04930# For each
+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@
+--     with a @geometryType@ of 'GEOMETRY_TYPE_INSTANCES_KHR' with
+--     'BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV' set, each
+--     @accelerationStructureReference@ in any structure in
+--     'Vulkan.Extensions.VK_NV_ray_tracing_motion_blur.AccelerationStructureMotionInstanceNV'
+--     value in @geometry.instances.data.hostAddress@ /must/ be a valid
+--     'Vulkan.Extensions.Handles.AccelerationStructureKHR' object
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-11820# For each
+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@
+--     with a @geometryType@ of 'GEOMETRY_TYPE_TRIANGLES_KHR', if there is
+--     an instance of
+--     'Vulkan.Extensions.VK_NV_ray_tracing_motion_blur.AccelerationStructureGeometryMotionTrianglesDataNV'
+--     in the @geometry.triangles.pNext@ chain, then its
+--     @vertexData.hostAddress@ /must/ not be 0
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-10892# For each
+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@
+--     with a @geometryType@ of 'GEOMETRY_TYPE_TRIANGLES_KHR', if there is
+--     an instance of
+--     'Vulkan.Extensions.VK_EXT_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapEXT'
+--     in the @geometry.triangles.pNext@ chain, and its @indexType@ is
+--     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR', then its
+--     @indexBuffer.hostAddress@ /must/ be 0
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-11821# For each
+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@
+--     with a @geometryType@ of 'GEOMETRY_TYPE_TRIANGLES_KHR', if there is
+--     an instance of
+--     'Vulkan.Extensions.VK_EXT_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapEXT'
+--     in the @geometry.triangles.pNext@ chain, and its @indexType@ is not
+--     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR', then its
+--     @indexBuffer.hostAddress@ /must/ not be 0
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-11705# For any element
+--     of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@ with a
+--     @geometryType@ of 'GEOMETRY_TYPE_TRIANGLES_KHR', if there is an
+--     instance of
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapKHR'
+--     in the @geometry.triangles.pNext@ chain its @micromap@ member /must/
+--     be 'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-11822# For each
+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@
+--     with a @geometryType@ of 'GEOMETRY_TYPE_SPHERES_NV',
+--     'Vulkan.Extensions.VK_NV_ray_tracing_linear_swept_spheres.AccelerationStructureGeometrySpheresDataNV'::@indexType@
+--     is 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR', then its
+--     @indexData.hostAddress@ /must/ be 0
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-11823# For each
+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@
+--     with a @geometryType@ of 'GEOMETRY_TYPE_SPHERES_NV',
+--     'Vulkan.Extensions.VK_NV_ray_tracing_linear_swept_spheres.AccelerationStructureGeometrySpheresDataNV'::@indexType@
+--     is not 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR', then its
+--     @indexData.hostAddress@ /must/ not be 0
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-11824# For each
+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@
+--     with a @geometryType@ of 'GEOMETRY_TYPE_SPHERES_NV',
+--     'Vulkan.Extensions.VK_NV_ray_tracing_linear_swept_spheres.AccelerationStructureGeometrySpheresDataNV'::@vertexData.hostAddress@
+--     /must/ not be 0
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-11825# For each
+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@
+--     with a @geometryType@ of 'GEOMETRY_TYPE_SPHERES_NV',
+--     'Vulkan.Extensions.VK_NV_ray_tracing_linear_swept_spheres.AccelerationStructureGeometrySpheresDataNV'::@radiusData.hostAddress@
+--     /must/ not be 0
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-11826# For each
+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@
+--     with a @geometryType@ of 'GEOMETRY_TYPE_LINEAR_SWEPT_SPHERES_NV',
+--     'Vulkan.Extensions.VK_NV_ray_tracing_linear_swept_spheres.AccelerationStructureGeometryLinearSweptSpheresDataNV'::@indexType@
+--     is 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR', then its
+--     @indexData.hostAddress@ /must/ be 0
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-11827# For each
+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@
+--     with a @geometryType@ of 'GEOMETRY_TYPE_LINEAR_SWEPT_SPHERES_NV',
+--     'Vulkan.Extensions.VK_NV_ray_tracing_linear_swept_spheres.AccelerationStructureGeometryLinearSweptSpheresDataNV'::@indexType@
+--     is not 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR', then its
+--     @indexData.hostAddress@ /must/ not be 0
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-11828# For each
+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@
+--     with a @geometryType@ of 'GEOMETRY_TYPE_LINEAR_SWEPT_SPHERES_NV',
+--     'Vulkan.Extensions.VK_NV_ray_tracing_linear_swept_spheres.AccelerationStructureGeometryLinearSweptSpheresDataNV'::@vertexData.hostAddress@
+--     /must/ not be 0
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-11829# For each
+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@
+--     with a @geometryType@ of 'GEOMETRY_TYPE_LINEAR_SWEPT_SPHERES_NV',
+--     'Vulkan.Extensions.VK_NV_ray_tracing_linear_swept_spheres.AccelerationStructureGeometryLinearSweptSpheresDataNV'::@radiusData.hostAddress@
+--     /must/ not be 0
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-10893# For each
+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@,
+--     @geometryType@ /must/ not be
+--     'GEOMETRY_TYPE_DENSE_GEOMETRY_FORMAT_TRIANGLES_AMDX'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-device-parameter# @device@
+--     /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-deferredOperation-parameter#
+--     If @deferredOperation@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', @deferredOperation@ /must/
+--     be a valid 'Vulkan.Extensions.Handles.DeferredOperationKHR' handle
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-parameter# @pInfos@
+--     /must/ be a valid pointer to an array of @infoCount@ valid
+--     'AccelerationStructureBuildGeometryInfoKHR' structures
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-ppBuildRangeInfos-parameter#
+--     @ppBuildRangeInfos@ /must/ be a valid pointer to an array of
+--     @infoCount@ 'AccelerationStructureBuildRangeInfoKHR' structures
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-infoCount-arraylength#
+--     @infoCount@ /must/ be greater than @0@
+--
+-- -   #VUID-vkBuildAccelerationStructuresKHR-deferredOperation-parent# If
+--     @deferredOperation@ is a valid handle, it /must/ have been created,
+--     allocated, or retrieved from @device@
+--
+-- == Return Codes
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
+--
+--     -   'Vulkan.Core10.Enums.Result.OPERATION_DEFERRED_KHR'
+--
+--     -   'Vulkan.Core10.Enums.Result.OPERATION_NOT_DEFERRED_KHR'
+--
+--     -   '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_DEVICE_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
+-- 'AccelerationStructureBuildGeometryInfoKHR',
+-- 'AccelerationStructureBuildRangeInfoKHR',
+-- 'Vulkan.Extensions.Handles.DeferredOperationKHR',
+-- 'Vulkan.Core10.Handles.Device'
+buildAccelerationStructuresKHR :: forall io
+                                . (MonadIO io)
+                               => -- | @device@ is the 'Vulkan.Core10.Handles.Device' for which the
+                                  -- acceleration structures are being built.
+                                  Device
+                               -> -- | @deferredOperation@ is an optional
+                                  -- 'Vulkan.Extensions.Handles.DeferredOperationKHR' to
+                                  -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#deferred-host-operations-requesting request deferral>
+                                  -- for this command.
+                                  DeferredOperationKHR
+                               -> -- | @pInfos@ is a pointer to an array of @infoCount@
+                                  -- 'AccelerationStructureBuildGeometryInfoKHR' structures defining the
+                                  -- geometry used to build each acceleration structure.
+                                  ("infos" ::: Vector AccelerationStructureBuildGeometryInfoKHR)
+                               -> -- | @ppBuildRangeInfos@ is a pointer to an array of @infoCount@ pointers to
+                                  -- arrays of 'AccelerationStructureBuildRangeInfoKHR' structures. Each
+                                  -- @ppBuildRangeInfos@[i] is a pointer to an array of
+                                  -- @pInfos@[i].@geometryCount@ 'AccelerationStructureBuildRangeInfoKHR'
+                                  -- structures defining dynamic offsets to the addresses where geometry data
+                                  -- is stored, as defined by @pInfos@[i].
+                                  ("buildRangeInfos" ::: Vector (Vector AccelerationStructureBuildRangeInfoKHR))
+                               -> io (Result)
+buildAccelerationStructuresKHR device
+                                 deferredOperation
+                                 infos
+                                 buildRangeInfos = liftIO . evalContT $ do
+  let vkBuildAccelerationStructuresKHRPtr = pVkBuildAccelerationStructuresKHR (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkBuildAccelerationStructuresKHRPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkBuildAccelerationStructuresKHR is null" Nothing Nothing
+  let vkBuildAccelerationStructuresKHR' = mkVkBuildAccelerationStructuresKHR vkBuildAccelerationStructuresKHRPtr
+  let pInfosLength = Data.Vector.length $ (infos)
+  lift $ unless ((Data.Vector.length $ (buildRangeInfos)) == pInfosLength) $
+    throwIO $ IOError Nothing InvalidArgument "" "ppBuildRangeInfos and pInfos must have the same length" Nothing Nothing
+  pPInfos <- ContT $ allocaBytes @AccelerationStructureBuildGeometryInfoKHR ((Data.Vector.length (infos)) * 80)
+  Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPInfos `plusPtr` (80 * (i)) :: Ptr AccelerationStructureBuildGeometryInfoKHR) (e) . ($ ())) (infos)
+  pPpBuildRangeInfos <- ContT $ allocaBytes @(Ptr AccelerationStructureBuildRangeInfoKHR) ((Data.Vector.length (buildRangeInfos)) * 8)
+  Data.Vector.imapM_ (\i e -> do
+    pPpBuildRangeInfos' <- ContT $ allocaBytes @AccelerationStructureBuildRangeInfoKHR ((Data.Vector.length (e)) * 16)
+    lift $ Data.Vector.imapM_ (\i' e' -> poke (pPpBuildRangeInfos' `plusPtr` (16 * (i')) :: Ptr AccelerationStructureBuildRangeInfoKHR) (e')) (e)
+    lift $ poke (pPpBuildRangeInfos `plusPtr` (8 * (i)) :: Ptr (Ptr AccelerationStructureBuildRangeInfoKHR)) (pPpBuildRangeInfos')) (buildRangeInfos)
+  r <- lift $ traceAroundEvent "vkBuildAccelerationStructuresKHR" (vkBuildAccelerationStructuresKHR'
+                                                                     (deviceHandle (device))
+                                                                     (deferredOperation)
+                                                                     ((fromIntegral pInfosLength :: Word32))
+                                                                     (pPInfos)
+                                                                     (pPpBuildRangeInfos))
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+  pure $ (r)
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetAccelerationStructureDeviceAddressKHR
+  :: FunPtr (Ptr Device_T -> Ptr AccelerationStructureDeviceAddressInfoKHR -> IO DeviceAddress) -> Ptr Device_T -> Ptr AccelerationStructureDeviceAddressInfoKHR -> IO DeviceAddress
+
+-- | vkGetAccelerationStructureDeviceAddressKHR - Query an address of an
+-- acceleration structure
+--
+-- = Description
+--
+-- The 64-bit return value is an address of the acceleration structure,
+-- which can be used for device and shader operations that involve
+-- acceleration structures, such as ray traversal and acceleration
+-- structure building.
+--
+-- If the acceleration structure was created with
+-- 'Vulkan.Extensions.VK_KHR_device_address_commands.createAccelerationStructure2KHR',
+-- the return value will be the same address as @addressRange.address@.
+--
+-- If the acceleration structure was created with
+-- 'createAccelerationStructureKHR' with a non-zero value of
+-- 'AccelerationStructureCreateInfoKHR'::@deviceAddress@, the return value
+-- will be the same address.
+--
+-- Otherwise, if the acceleration structure was created with a @type@ of
+-- 'ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR', the returned address /must/
+-- be consistent with the relative offset to other acceleration structures
+-- with @type@ 'ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR' allocated with the
+-- same 'Vulkan.Core10.Handles.Buffer'. That is, the difference in returned
+-- addresses between the two /must/ be the same as the difference in
+-- offsets provided at acceleration structure creation.
+--
+-- The returned address /must/ be aligned to 256 bytes.
+--
+-- For acceleration structures created with
+-- 'createAccelerationStructureKHR', their device address /may/ be
+-- different from the buffer device address corresponding to the
+-- acceleration structure’s start offset in its storage buffer for
+-- acceleration structure types other than
+-- 'ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR'.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkGetAccelerationStructureDeviceAddressKHR-accelerationStructure-08935#
+--     The
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-accelerationStructure ::accelerationStructure>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkGetAccelerationStructureDeviceAddressKHR-device-03504# If
+--     @device@ was created with multiple physical devices, then the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-bufferDeviceAddressMultiDevice bufferDeviceAddressMultiDevice>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkGetAccelerationStructureDeviceAddressKHR-pInfo-09541# If the
+--     buffer on which @pInfo->accelerationStructure@ was placed is
+--     non-sparse then it /must/ be bound completely and contiguously to a
+--     single 'Vulkan.Core10.Handles.DeviceMemory' object
+--
+-- -   #VUID-vkGetAccelerationStructureDeviceAddressKHR-pInfo-09542# The
+--     buffer on which @pInfo->accelerationStructure@ was placed /must/
+--     have been created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT'
+--     usage flag set
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkGetAccelerationStructureDeviceAddressKHR-device-parameter#
+--     @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkGetAccelerationStructureDeviceAddressKHR-pInfo-parameter#
+--     @pInfo@ /must/ be a valid pointer to a valid
+--     'AccelerationStructureDeviceAddressInfoKHR' structure
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
+-- 'AccelerationStructureDeviceAddressInfoKHR',
+-- 'Vulkan.Core10.Handles.Device'
+getAccelerationStructureDeviceAddressKHR :: forall io
+                                          . (MonadIO io)
+                                         => -- | @device@ is the logical device that the acceleration structure was
+                                            -- created on.
+                                            Device
+                                         -> -- | @pInfo@ is a pointer to a 'AccelerationStructureDeviceAddressInfoKHR'
+                                            -- structure specifying the acceleration structure to retrieve an address
+                                            -- for.
+                                            AccelerationStructureDeviceAddressInfoKHR
+                                         -> io (DeviceAddress)
+getAccelerationStructureDeviceAddressKHR device info = liftIO . evalContT $ do
+  let vkGetAccelerationStructureDeviceAddressKHRPtr = pVkGetAccelerationStructureDeviceAddressKHR (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkGetAccelerationStructureDeviceAddressKHRPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetAccelerationStructureDeviceAddressKHR is null" Nothing Nothing
+  let vkGetAccelerationStructureDeviceAddressKHR' = mkVkGetAccelerationStructureDeviceAddressKHR vkGetAccelerationStructureDeviceAddressKHRPtr
+  pInfo <- ContT $ withCStruct (info)
+  r <- lift $ traceAroundEvent "vkGetAccelerationStructureDeviceAddressKHR" (vkGetAccelerationStructureDeviceAddressKHR'
+                                                                               (deviceHandle (device))
+                                                                               pInfo)
+  pure $ (r)
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetAccelerationStructureBuildSizesKHR
+  :: FunPtr (Ptr Device_T -> AccelerationStructureBuildTypeKHR -> Ptr AccelerationStructureBuildGeometryInfoKHR -> Ptr Word32 -> Ptr AccelerationStructureBuildSizesInfoKHR -> IO ()) -> Ptr Device_T -> AccelerationStructureBuildTypeKHR -> Ptr AccelerationStructureBuildGeometryInfoKHR -> Ptr Word32 -> Ptr AccelerationStructureBuildSizesInfoKHR -> IO ()
+
+-- | vkGetAccelerationStructureBuildSizesKHR - Retrieve the required size for
+-- an acceleration structure
+--
+-- = Description
+--
+-- The @srcAccelerationStructure@, @dstAccelerationStructure@, and @mode@
+-- members of @pBuildInfo@ are ignored. Any 'DeviceOrHostAddressKHR',
+-- 'DeviceOrHostAddressConstKHR', or
+-- 'Vulkan.Core10.FundamentalTypes.DeviceAddress' members of @pBuildInfo@
+-- are ignored by this command, except that the @hostAddress@ member of
+-- 'AccelerationStructureGeometryTrianglesDataKHR'::@transformData@ will be
+-- examined to check if it is @NULL@.
+--
+-- An acceleration structure created with the @accelerationStructureSize@
+-- returned by this command supports any build or update with a
+-- 'AccelerationStructureBuildGeometryInfoKHR' structure and array of
+-- 'AccelerationStructureBuildRangeInfoKHR' structures subject to the
+-- following properties:
+--
+-- -   The build command is a host build command, and @buildType@ is
+--     'ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR' or
+--     'ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR'
+--
+-- -   The build command is a device build command, and @buildType@ is
+--     'ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR' or
+--     'ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR'
+--
+-- -   For 'AccelerationStructureBuildGeometryInfoKHR':
+--
+--     -   Its @type@, and @flags@ members are equal to @pBuildInfo->type@
+--         and @pBuildInfo->flags@, respectively.
+--
+--     -   @geometryCount@ is less than or equal to
+--         @pBuildInfo->geometryCount@.
+--
+--     -   For each element of either @pGeometries@ or @ppGeometries@ at a
+--         given index, its @geometryType@ member is equal to
+--         @pBuildInfo->geometryType@.
+--
+--     -   For each element of either @pGeometries@ or @ppGeometries@ at a
+--         given index, its @flags@ member is equal to the corresponding
+--         member of the same element in @pBuildInfo@.
+--
+--     -   For each element of either @pGeometries@ or @ppGeometries@ at a
+--         given index, with a @geometryType@ member equal to
+--         'GEOMETRY_TYPE_TRIANGLES_KHR', the @vertexFormat@ and
+--         @indexType@ members of @geometry.triangles@ are equal to the
+--         corresponding members of the same element in @pBuildInfo@.
+--
+--     -   For each element of either @pGeometries@ or @ppGeometries@ at a
+--         given index, with a @geometryType@ member equal to
+--         'GEOMETRY_TYPE_TRIANGLES_KHR', the @maxVertex@ member of
+--         @geometry.triangles@ is less than or equal to the corresponding
+--         member of the same element in @pBuildInfo@.
+--
+--     -   For each element of either @pGeometries@ or @ppGeometries@ at a
+--         given index, with a @geometryType@ member equal to
+--         'GEOMETRY_TYPE_TRIANGLES_KHR', if the applicable address in the
+--         @transformData@ member of @geometry.triangles@ is not @NULL@,
+--         the corresponding @transformData.hostAddress@ parameter in
+--         @pBuildInfo@ is not @NULL@.
+--
+--     -   For each element of either @pGeometries@ or @ppGeometries@ at a
+--         given index, with a @geometryType@ member equal to
+--         'GEOMETRY_TYPE_MICROMAP_KHR', the sum of usage information in
+--         either the @pUsageCounts@ or @ppUsageCounts@ members of the
+--         'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureGeometryMicromapDataKHR'
+--         structure in its @pNext@ chain is equal to the sum of usage
+--         information in the corresponding members of @pBuild@ info.
+--
+--     -   For each element of either @pGeometries@ or @ppGeometries@ at a
+--         given index, with a @geometryType@ member equal to
+--         'GEOMETRY_TYPE_TRIANGLES_KHR', if the @pNext@ chain contains
+--         'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapKHR'
+--         the corresponding member of @pBuildInfo@ also contains
+--         'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapKHR'
+--         and with an equivalent @micromap@.
+--
+--     -   For each element of either @pGeometries@ or @ppGeometries@ at a
+--         given index, with a @geometryType@ member equal to
+--         'GEOMETRY_TYPE_DENSE_GEOMETRY_FORMAT_TRIANGLES_AMDX', the
+--         @numTriangles@ member of the
+--         'Vulkan.Extensions.VK_AMDX_dense_geometry_format.AccelerationStructureDenseGeometryFormatTrianglesDataAMDX'
+--         structure in the @pNext@ chain is less than or equal to the
+--         corresponding member of the same element in @pBuildInfo@
+--
+--     -   For each element of either @pGeometries@ or @ppGeometries@ at a
+--         given index, with a @geometryType@ member equal to
+--         'GEOMETRY_TYPE_DENSE_GEOMETRY_FORMAT_TRIANGLES_AMDX', the
+--         @numVertices@ member of the
+--         'Vulkan.Extensions.VK_AMDX_dense_geometry_format.AccelerationStructureDenseGeometryFormatTrianglesDataAMDX'
+--         structure in the @pNext@ chain is less than or equal to the
+--         corresponding member of the same element in @pBuildInfo@
+--
+--     -   For each element of either @pGeometries@ or @ppGeometries@ at a
+--         given index, with a @geometryType@ member equal to
+--         'GEOMETRY_TYPE_DENSE_GEOMETRY_FORMAT_TRIANGLES_AMDX', the
+--         @maxPrimitiveIndex@ member of the
+--         'Vulkan.Extensions.VK_AMDX_dense_geometry_format.AccelerationStructureDenseGeometryFormatTrianglesDataAMDX'
+--         structure in the @pNext@ chain is less than or equal to the
+--         corresponding member of the same element in @pBuildInfo@
+--
+--     -   For each element of either @pGeometries@ or @ppGeometries@ at a
+--         given index, with a @geometryType@ member equal to
+--         'GEOMETRY_TYPE_DENSE_GEOMETRY_FORMAT_TRIANGLES_AMDX', the
+--         @maxGeometryIndex@ member of the
+--         'Vulkan.Extensions.VK_AMDX_dense_geometry_format.AccelerationStructureDenseGeometryFormatTrianglesDataAMDX'
+--         structure in the @pNext@ chain is less than or equal to the
+--         corresponding member of the same element in @pBuildInfo@
+--
+--     -   For each element of either @pGeometries@ or @ppGeometries@ at a
+--         given index, with a @geometryType@ member equal to
+--         'GEOMETRY_TYPE_DENSE_GEOMETRY_FORMAT_TRIANGLES_AMDX', the
+--         @format@ member of the
+--         'Vulkan.Extensions.VK_AMDX_dense_geometry_format.AccelerationStructureDenseGeometryFormatTrianglesDataAMDX'
+--         structure in the @pNext@ chain is equal to the corresponding
+--         member of the same element in @pBuildInfo@
+--
+-- -   For each 'AccelerationStructureBuildRangeInfoKHR' corresponding to
+--     the 'AccelerationStructureBuildGeometryInfoKHR':
+--
+--     -   Its @primitiveCount@ member is less than or equal to the
+--         corresponding element of @pMaxPrimitiveCounts@.
+--
+--     -   For each element of either @pGeometries@ or @ppGeometries@ at a
+--         given index, with a @geometryType@ member equal to
+--         'GEOMETRY_TYPE_TRIANGLES_KHR', if the @pNext@ chain contains
+--         'Vulkan.Extensions.VK_EXT_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapEXT'
+--         the corresponding member of @pBuildInfo@ also contains
+--         'Vulkan.Extensions.VK_EXT_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapEXT'
+--         and with an equivalent @micromap@.
+--
+--     -   For each element of either @pGeometries@ or @ppGeometries@ at a
+--         given index, with a @geometryType@ member equal to
+--         'GEOMETRY_TYPE_TRIANGLES_KHR', if the @pNext@ chain contains
+--         'Vulkan.Extensions.VK_NV_displacement_micromap.AccelerationStructureTrianglesDisplacementMicromapNV'
+--         the corresponding member of @pBuildInfo@ also contains
+--         'Vulkan.Extensions.VK_NV_displacement_micromap.AccelerationStructureTrianglesDisplacementMicromapNV'
+--         and with an equivalent @micromap@.
+--
+-- -   For each 'AccelerationStructureBuildRangeInfoKHR' corresponding to
+--     the 'AccelerationStructureBuildGeometryInfoKHR':
+--
+--     -   Its @primitiveCount@ member is less than or equal to the
+--         corresponding element of @pMaxPrimitiveCounts@.
+--
+-- Similarly, the @updateScratchSize@ value will support any build command
+-- specifying the 'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR' @mode@
+-- under the above conditions, and the @buildScratchSize@ value will
+-- support any build command specifying the
+-- 'BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR' @mode@ under the above
+-- conditions.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkGetAccelerationStructureBuildSizesKHR-accelerationStructure-08933#
+--     The
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-accelerationStructure ::accelerationStructure>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkGetAccelerationStructureBuildSizesKHR-device-03618# If
+--     @device@ was created with multiple physical devices, then the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-bufferDeviceAddressMultiDevice bufferDeviceAddressMultiDevice>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkGetAccelerationStructureBuildSizesKHR-pMaxPrimitiveCounts-11612#
+--     If @pBuildInfo->geometryCount@ is not @0@ and @pBuildInfo->type@ is
+--     not 'ACCELERATION_STRUCTURE_TYPE_OPACITY_MICROMAP_KHR' ,
+--     @pMaxPrimitiveCounts@ /must/ be a valid pointer to an array of
+--     @pBuildInfo->geometryCount@ @uint32_t@ values
+--
+-- -   #VUID-vkGetAccelerationStructureBuildSizesKHR-pMaxPrimitiveCounts-11613#
+--     If @pBuildInfo->type@ is
+--     'ACCELERATION_STRUCTURE_TYPE_OPACITY_MICROMAP_KHR',
+--     @pMaxPrimitiveCounts@ /must/ equal @NULL@
+--
+-- -   #VUID-vkGetAccelerationStructureBuildSizesKHR-buildType-11614# If
+--     @pBuildInfo->type@ is
+--     'ACCELERATION_STRUCTURE_TYPE_OPACITY_MICROMAP_KHR', @buildType@
+--     /must/ equal 'ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR'
+--
+-- -   #VUID-vkGetAccelerationStructureBuildSizesKHR-pBuildInfo-03785# If
+--     @pBuildInfo->pGeometries@ or @pBuildInfo->ppGeometries@ has a
+--     @geometryType@ of 'GEOMETRY_TYPE_INSTANCES_KHR', each
+--     @pMaxPrimitiveCounts@[i] /must/ be less than or equal to
+--     'PhysicalDeviceAccelerationStructurePropertiesKHR'::@maxInstanceCount@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkGetAccelerationStructureBuildSizesKHR-device-parameter#
+--     @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkGetAccelerationStructureBuildSizesKHR-buildType-parameter#
+--     @buildType@ /must/ be a valid 'AccelerationStructureBuildTypeKHR'
+--     value
+--
+-- -   #VUID-vkGetAccelerationStructureBuildSizesKHR-pBuildInfo-parameter#
+--     @pBuildInfo@ /must/ be a valid pointer to a valid
+--     'AccelerationStructureBuildGeometryInfoKHR' structure
+--
+-- -   #VUID-vkGetAccelerationStructureBuildSizesKHR-pMaxPrimitiveCounts-parameter#
+--     If @pMaxPrimitiveCounts@ is not @NULL@, @pMaxPrimitiveCounts@ /must/
+--     be a valid pointer to an array of @pBuildInfo->geometryCount@
+--     @uint32_t@ values
+--
+-- -   #VUID-vkGetAccelerationStructureBuildSizesKHR-pSizeInfo-parameter#
+--     @pSizeInfo@ /must/ be a valid pointer to a
+--     'AccelerationStructureBuildSizesInfoKHR' structure
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
+-- 'AccelerationStructureBuildGeometryInfoKHR',
+-- 'AccelerationStructureBuildSizesInfoKHR',
+-- 'AccelerationStructureBuildTypeKHR', 'Vulkan.Core10.Handles.Device'
+getAccelerationStructureBuildSizesKHR :: forall io
+                                       . (MonadIO io)
+                                      => -- | @device@ is the logical device that will be used for creating the
+                                         -- acceleration structure.
+                                         Device
+                                      -> -- | @buildType@ defines whether host or device operations (or both) are
+                                         -- being queried for.
+                                         AccelerationStructureBuildTypeKHR
+                                      -> -- | @pBuildInfo@ is a pointer to a
+                                         -- 'AccelerationStructureBuildGeometryInfoKHR' structure describing
+                                         -- parameters of a build operation.
+                                         ("buildInfo" ::: AccelerationStructureBuildGeometryInfoKHR)
+                                      -> -- | @pMaxPrimitiveCounts@ is a pointer to an array of
+                                         -- @pBuildInfo->geometryCount@ @uint32_t@ values defining the number of
+                                         -- primitives built into each geometry.
+                                         ("maxPrimitiveCounts" ::: Vector Word32)
+                                      -> io (("sizeInfo" ::: AccelerationStructureBuildSizesInfoKHR))
+getAccelerationStructureBuildSizesKHR device
+                                        buildType
+                                        buildInfo
+                                        maxPrimitiveCounts = liftIO . evalContT $ do
+  let vkGetAccelerationStructureBuildSizesKHRPtr = pVkGetAccelerationStructureBuildSizesKHR (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkGetAccelerationStructureBuildSizesKHRPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetAccelerationStructureBuildSizesKHR is null" Nothing Nothing
+  let vkGetAccelerationStructureBuildSizesKHR' = mkVkGetAccelerationStructureBuildSizesKHR vkGetAccelerationStructureBuildSizesKHRPtr
+  pBuildInfo <- ContT $ withCStruct (buildInfo)
+  pMaxPrimitiveCounts <- if Data.Vector.null (maxPrimitiveCounts)
+    then pure nullPtr
+    else do
+      pPMaxPrimitiveCounts <- ContT $ allocaBytes @Word32 (((Data.Vector.length (maxPrimitiveCounts))) * 4)
+      lift $ Data.Vector.imapM_ (\i e -> poke (pPMaxPrimitiveCounts `plusPtr` (4 * (i)) :: Ptr Word32) (e)) ((maxPrimitiveCounts))
+      pure $ pPMaxPrimitiveCounts
+  pPSizeInfo <- ContT (withZeroCStruct @AccelerationStructureBuildSizesInfoKHR)
+  lift $ traceAroundEvent "vkGetAccelerationStructureBuildSizesKHR" (vkGetAccelerationStructureBuildSizesKHR'
+                                                                       (deviceHandle (device))
+                                                                       (buildType)
+                                                                       pBuildInfo
+                                                                       pMaxPrimitiveCounts
+                                                                       (pPSizeInfo))
+  pSizeInfo <- lift $ peekCStruct @AccelerationStructureBuildSizesInfoKHR pPSizeInfo
+  pure $ (pSizeInfo)
+
+
+-- No documentation found for TopLevel "VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR"
+pattern GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR = GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR
+
+
+-- | VkWriteDescriptorSetAccelerationStructureKHR - Structure specifying
+-- acceleration structure descriptor information
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkWriteDescriptorSetAccelerationStructureKHR-pAccelerationStructures-03579#
+--     Each acceleration structure in @pAccelerationStructures@ /must/ have
+--     been created with a @type@ of
+--     'ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR' or
+--     'ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR'
+--
+-- -   #VUID-VkWriteDescriptorSetAccelerationStructureKHR-pAccelerationStructures-03580#
+--     If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-nullDescriptor nullDescriptor>
+--     feature is not enabled, each element of @pAccelerationStructures@
+--     /must/ not be 'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkWriteDescriptorSetAccelerationStructureKHR-sType-sType#
+--     @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR'
+--
+-- -   #VUID-VkWriteDescriptorSetAccelerationStructureKHR-pAccelerationStructures-parameter#
+--     @pAccelerationStructures@ /must/ be a valid pointer to an array of
+--     @accelerationStructureCount@ valid or
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--     'Vulkan.Extensions.Handles.AccelerationStructureKHR' handles
+--
+-- -   #VUID-VkWriteDescriptorSetAccelerationStructureKHR-accelerationStructureCount-arraylength#
+--     @accelerationStructureCount@ /must/ be greater than @0@
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.DescriptorSet.WriteDescriptorSet'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
+-- 'Vulkan.Extensions.Handles.AccelerationStructureKHR',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data WriteDescriptorSetAccelerationStructureKHR = WriteDescriptorSetAccelerationStructureKHR
+  { -- | @pAccelerationStructures@ is a pointer to an array of
+    -- 'Vulkan.Extensions.Handles.AccelerationStructureKHR' structures
+    -- specifying the acceleration structures to update.
+    accelerationStructures :: Vector AccelerationStructureKHR }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (WriteDescriptorSetAccelerationStructureKHR)
+#endif
+deriving instance Show WriteDescriptorSetAccelerationStructureKHR
+
+instance ToCStruct WriteDescriptorSetAccelerationStructureKHR where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p WriteDescriptorSetAccelerationStructureKHR{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (accelerationStructures)) :: Word32))
+    pPAccelerationStructures' <- ContT $ allocaBytes @AccelerationStructureKHR ((Data.Vector.length (accelerationStructures)) * 8)
+    lift $ Data.Vector.imapM_ (\i e -> poke (pPAccelerationStructures' `plusPtr` (8 * (i)) :: Ptr AccelerationStructureKHR) (e)) (accelerationStructures)
+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr AccelerationStructureKHR))) (pPAccelerationStructures')
+    lift $ f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    f
+
+instance FromCStruct WriteDescriptorSetAccelerationStructureKHR where
+  peekCStruct p = do
+    accelerationStructureCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    pAccelerationStructures <- peek @(Ptr AccelerationStructureKHR) ((p `plusPtr` 24 :: Ptr (Ptr AccelerationStructureKHR)))
+    pAccelerationStructures' <- generateM (fromIntegral accelerationStructureCount) (\i -> peek @AccelerationStructureKHR ((pAccelerationStructures `advancePtrBytes` (8 * (i)) :: Ptr AccelerationStructureKHR)))
+    pure $ WriteDescriptorSetAccelerationStructureKHR
+             pAccelerationStructures'
+
+instance Zero WriteDescriptorSetAccelerationStructureKHR where
+  zero = WriteDescriptorSetAccelerationStructureKHR
+           mempty
+
+
+-- | VkPhysicalDeviceAccelerationStructureFeaturesKHR - Structure describing
+-- the acceleration structure features that can be supported by an
+-- implementation
+--
+-- = Members
+--
+-- This structure describes the following features:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceAccelerationStructureFeaturesKHR' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceAccelerationStructureFeaturesKHR', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceAccelerationStructureFeaturesKHR = PhysicalDeviceAccelerationStructureFeaturesKHR
+  { -- | #features-accelerationStructure# @accelerationStructure@ indicates
+    -- whether the implementation supports the acceleration structure
+    -- functionality. See
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#acceleration-structure Acceleration Structures>.
+    accelerationStructure :: Bool
+  , -- | #features-accelerationStructureCaptureReplay#
+    -- @accelerationStructureCaptureReplay@ indicates whether the
+    -- implementation supports saving and reusing acceleration structure device
+    -- addresses, e.g. for trace capture and replay.
+    accelerationStructureCaptureReplay :: Bool
+  , -- | #features-accelerationStructureIndirectBuild#
+    -- @accelerationStructureIndirectBuild@ indicates whether the
+    -- implementation supports indirect acceleration structure build commands,
+    -- e.g. 'cmdBuildAccelerationStructuresIndirectKHR'.
+    accelerationStructureIndirectBuild :: Bool
+  , -- | #features-accelerationStructureHostCommands#
+    -- @accelerationStructureHostCommands@ indicates whether the implementation
+    -- supports host side acceleration structure commands, e.g.
+    -- 'buildAccelerationStructuresKHR', 'copyAccelerationStructureKHR',
+    -- 'copyAccelerationStructureToMemoryKHR',
+    -- 'copyMemoryToAccelerationStructureKHR',
+    -- 'writeAccelerationStructuresPropertiesKHR'.
+    accelerationStructureHostCommands :: Bool
+  , -- | #features-descriptorBindingAccelerationStructureUpdateAfterBind#
+    -- @descriptorBindingAccelerationStructureUpdateAfterBind@ indicates
+    -- whether the implementation supports updating acceleration structure
+    -- 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_ACCELERATION_STRUCTURE_KHR'.
+    descriptorBindingAccelerationStructureUpdateAfterBind :: Bool
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceAccelerationStructureFeaturesKHR)
+#endif
+deriving instance Show PhysicalDeviceAccelerationStructureFeaturesKHR
+
+instance ToCStruct PhysicalDeviceAccelerationStructureFeaturesKHR where
+  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceAccelerationStructureFeaturesKHR{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (accelerationStructure))
+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (accelerationStructureCaptureReplay))
+    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (accelerationStructureIndirectBuild))
+    poke ((p `plusPtr` 28 :: Ptr Bool32)) (boolToBool32 (accelerationStructureHostCommands))
+    poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (descriptorBindingAccelerationStructureUpdateAfterBind))
+    f
+  cStructSize = 40
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_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))
+    f
+
+instance FromCStruct PhysicalDeviceAccelerationStructureFeaturesKHR where
+  peekCStruct p = do
+    accelerationStructure <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    accelerationStructureCaptureReplay <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
+    accelerationStructureIndirectBuild <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))
+    accelerationStructureHostCommands <- peek @Bool32 ((p `plusPtr` 28 :: Ptr Bool32))
+    descriptorBindingAccelerationStructureUpdateAfterBind <- peek @Bool32 ((p `plusPtr` 32 :: Ptr Bool32))
+    pure $ PhysicalDeviceAccelerationStructureFeaturesKHR
+             (bool32ToBool accelerationStructure)
+             (bool32ToBool accelerationStructureCaptureReplay)
+             (bool32ToBool accelerationStructureIndirectBuild)
+             (bool32ToBool accelerationStructureHostCommands)
+             (bool32ToBool descriptorBindingAccelerationStructureUpdateAfterBind)
+
+instance Storable PhysicalDeviceAccelerationStructureFeaturesKHR where
+  sizeOf ~_ = 40
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceAccelerationStructureFeaturesKHR where
+  zero = PhysicalDeviceAccelerationStructureFeaturesKHR
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkPhysicalDeviceAccelerationStructurePropertiesKHR - Properties of the
+-- physical device for acceleration structure
+--
+-- = Description
+--
+-- Due to the fact that the geometry, instance, and primitive counts are
+-- specified at acceleration structure creation as 32-bit values,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxGeometryCount maxGeometryCount>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxInstanceCount maxInstanceCount>,
+-- and
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxPrimitiveCount maxPrimitiveCount>
+-- /must/ not exceed 232-1.
+--
+-- If the 'PhysicalDeviceAccelerationStructurePropertiesKHR' 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.
+--
+-- Limits specified by this structure /must/ match those specified with the
+-- same name in
+-- 'Vulkan.Extensions.VK_NV_ray_tracing.PhysicalDeviceRayTracingPropertiesNV'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceAccelerationStructurePropertiesKHR = PhysicalDeviceAccelerationStructurePropertiesKHR
+  { -- | #limits-maxGeometryCount# @maxGeometryCount@ is the maximum number of
+    -- geometries in the bottom level acceleration structure.
+    maxGeometryCount :: Word64
+  , -- | #limits-maxInstanceCount# @maxInstanceCount@ is the maximum number of
+    -- instances in the top level acceleration structure.
+    maxInstanceCount :: Word64
+  , -- | #limits-maxPrimitiveCount# @maxPrimitiveCount@ is the maximum number of
+    -- triangles or AABBs in all geometries in the bottom level acceleration
+    -- structure.
+    maxPrimitiveCount :: Word64
+  , -- | #limits-maxPerStageDescriptorAccelerationStructures#
+    -- @maxPerStageDescriptorAccelerationStructures@ is the maximum number of
+    -- acceleration structure bindings that /can/ be accessible to a single
+    -- shader stage in a pipeline layout. Descriptor bindings with a descriptor
+    -- type of
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+    -- 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.
+    maxPerStageDescriptorAccelerationStructures :: Word32
+  , -- | #limits-maxPerStageDescriptorUpdateAfterBindAccelerationStructures#
+    -- @maxPerStageDescriptorUpdateAfterBindAccelerationStructures@ is similar
+    -- to @maxPerStageDescriptorAccelerationStructures@ 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.
+    maxPerStageDescriptorUpdateAfterBindAccelerationStructures :: Word32
+  , -- | #limits-maxDescriptorSetAccelerationStructures#
+    -- @maxDescriptorSetAccelerationStructures@ is the maximum number of
+    -- acceleration structure descriptors 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_ACCELERATION_STRUCTURE_KHR'
+    -- 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.
+    maxDescriptorSetAccelerationStructures :: Word32
+  , -- | #limits-maxDescriptorSetUpdateAfterBindAccelerationStructures#
+    -- @maxDescriptorSetUpdateAfterBindAccelerationStructures@ is similar to
+    -- @maxDescriptorSetAccelerationStructures@ 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.
+    maxDescriptorSetUpdateAfterBindAccelerationStructures :: Word32
+  , -- | #limits-minAccelerationStructureScratchOffsetAlignment#
+    -- @minAccelerationStructureScratchOffsetAlignment@ is the minimum
+    -- /required/ alignment, in bytes, for scratch data passed in to an
+    -- acceleration structure build command. The value /must/ be a power of
+    -- two.
+    minAccelerationStructureScratchOffsetAlignment :: Word32
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceAccelerationStructurePropertiesKHR)
+#endif
+deriving instance Show PhysicalDeviceAccelerationStructurePropertiesKHR
+
+instance ToCStruct PhysicalDeviceAccelerationStructurePropertiesKHR where
+  withCStruct x f = allocaBytes 64 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceAccelerationStructurePropertiesKHR{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word64)) (maxGeometryCount)
+    poke ((p `plusPtr` 24 :: Ptr Word64)) (maxInstanceCount)
+    poke ((p `plusPtr` 32 :: Ptr Word64)) (maxPrimitiveCount)
+    poke ((p `plusPtr` 40 :: Ptr Word32)) (maxPerStageDescriptorAccelerationStructures)
+    poke ((p `plusPtr` 44 :: Ptr Word32)) (maxPerStageDescriptorUpdateAfterBindAccelerationStructures)
+    poke ((p `plusPtr` 48 :: Ptr Word32)) (maxDescriptorSetAccelerationStructures)
+    poke ((p `plusPtr` 52 :: Ptr Word32)) (maxDescriptorSetUpdateAfterBindAccelerationStructures)
+    poke ((p `plusPtr` 56 :: Ptr Word32)) (minAccelerationStructureScratchOffsetAlignment)
+    f
+  cStructSize = 64
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word64)) (zero)
+    poke ((p `plusPtr` 24 :: Ptr Word64)) (zero)
+    poke ((p `plusPtr` 32 :: Ptr Word64)) (zero)
+    poke ((p `plusPtr` 40 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 44 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 48 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 52 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 56 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct PhysicalDeviceAccelerationStructurePropertiesKHR where
+  peekCStruct p = do
+    maxGeometryCount <- peek @Word64 ((p `plusPtr` 16 :: Ptr Word64))
+    maxInstanceCount <- peek @Word64 ((p `plusPtr` 24 :: Ptr Word64))
+    maxPrimitiveCount <- peek @Word64 ((p `plusPtr` 32 :: Ptr Word64))
+    maxPerStageDescriptorAccelerationStructures <- peek @Word32 ((p `plusPtr` 40 :: Ptr Word32))
+    maxPerStageDescriptorUpdateAfterBindAccelerationStructures <- peek @Word32 ((p `plusPtr` 44 :: Ptr Word32))
+    maxDescriptorSetAccelerationStructures <- peek @Word32 ((p `plusPtr` 48 :: Ptr Word32))
+    maxDescriptorSetUpdateAfterBindAccelerationStructures <- peek @Word32 ((p `plusPtr` 52 :: Ptr Word32))
+    minAccelerationStructureScratchOffsetAlignment <- peek @Word32 ((p `plusPtr` 56 :: Ptr Word32))
+    pure $ PhysicalDeviceAccelerationStructurePropertiesKHR
+             maxGeometryCount
+             maxInstanceCount
+             maxPrimitiveCount
+             maxPerStageDescriptorAccelerationStructures
+             maxPerStageDescriptorUpdateAfterBindAccelerationStructures
+             maxDescriptorSetAccelerationStructures
+             maxDescriptorSetUpdateAfterBindAccelerationStructures
+             minAccelerationStructureScratchOffsetAlignment
+
+instance Storable PhysicalDeviceAccelerationStructurePropertiesKHR where
+  sizeOf ~_ = 64
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceAccelerationStructurePropertiesKHR where
+  zero = PhysicalDeviceAccelerationStructurePropertiesKHR
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkAccelerationStructureGeometryTrianglesDataKHR - Structure specifying a
+-- triangle geometry in a bottom-level acceleration structure
+--
+-- = Description
+--
+-- Unlike the stride for vertex buffers in
+-- 'Vulkan.Core10.GraphicsPipeline.VertexInputBindingDescription' for
+-- graphics pipelines which must not exceed @maxVertexInputBindingStride@,
+-- @vertexStride@ for acceleration structure geometry is instead restricted
+-- to being a 32-bit value.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkAccelerationStructureGeometryTrianglesDataKHR-vertexStride-03735#
+--     @vertexStride@ /must/ be a multiple of the size in bytes of the
+--     smallest component of @vertexFormat@
+--
+-- -   #VUID-VkAccelerationStructureGeometryTrianglesDataKHR-vertexStride-03819#
+--     @vertexStride@ /must/ be less than or equal to 232-1
+--
+-- -   #VUID-VkAccelerationStructureGeometryTrianglesDataKHR-vertexFormat-03797#
+--     The
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-buffer-view-format-features format features>
+--     of @vertexFormat@ /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR'
+--
+-- -   #VUID-VkAccelerationStructureGeometryTrianglesDataKHR-indexType-03798#
+--     @indexType@ /must/ be
+--     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT16',
+--     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT32', or
+--     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkAccelerationStructureGeometryTrianglesDataKHR-sType-sType#
+--     @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR'
+--
+-- -   #VUID-VkAccelerationStructureGeometryTrianglesDataKHR-pNext-pNext#
+--     Each @pNext@ member of any structure (including this one) in the
+--     @pNext@ chain /must/ be either @NULL@ or a pointer to a valid
+--     instance of
+--     'Vulkan.Extensions.VK_NV_ray_tracing_motion_blur.AccelerationStructureGeometryMotionTrianglesDataNV',
+--     'Vulkan.Extensions.VK_NV_displacement_micromap.AccelerationStructureTrianglesDisplacementMicromapNV',
+--     'Vulkan.Extensions.VK_EXT_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapEXT',
+--     or
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapKHR'
+--
+-- -   #VUID-VkAccelerationStructureGeometryTrianglesDataKHR-sType-unique#
+--     The @sType@ value of each structure in the @pNext@ chain /must/ be
+--     unique
+--
+-- -   #VUID-VkAccelerationStructureGeometryTrianglesDataKHR-vertexFormat-parameter#
+--     @vertexFormat@ /must/ be a valid 'Vulkan.Core10.Enums.Format.Format'
+--     value
+--
+-- -   #VUID-VkAccelerationStructureGeometryTrianglesDataKHR-indexType-parameter#
+--     @indexType@ /must/ be a valid
+--     'Vulkan.Core10.Enums.IndexType.IndexType' value
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
+-- 'AccelerationStructureGeometryDataKHR', 'DeviceOrHostAddressConstKHR',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
+-- 'Vulkan.Core10.Enums.Format.Format',
+-- 'Vulkan.Core10.Enums.IndexType.IndexType',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data AccelerationStructureGeometryTrianglesDataKHR (es :: [Type]) = AccelerationStructureGeometryTrianglesDataKHR
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
+    next :: Chain es
+  , -- | @vertexFormat@ is the 'Vulkan.Core10.Enums.Format.Format' of each vertex
+    -- element.
+    vertexFormat :: Format
+  , -- | @vertexData@ is a device or host address of memory containing vertex
+    -- data for this geometry.
+    vertexData :: DeviceOrHostAddressConstKHR
+  , -- | @vertexStride@ is the stride in bytes between each vertex.
+    vertexStride :: DeviceSize
+  , -- | @maxVertex@ is the number of vertices in @vertexData@ minus one.
+    maxVertex :: Word32
+  , -- | @indexType@ is the 'Vulkan.Core10.Enums.IndexType.IndexType' of each
+    -- index element.
+    indexType :: IndexType
+  , -- | @indexData@ is a device or host address of memory containing index data
+    -- for this geometry. When @indexType@ is
+    -- 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR' it /must/ be @NULL@.
+    indexData :: DeviceOrHostAddressConstKHR
+  , -- | @transformData@ is a device or host address to memory containing an
+    -- optional reference to a 'TransformMatrixKHR' structure describing a
+    -- transformation from the space in which the vertices in this geometry are
+    -- described to the space in which the acceleration structure is defined.
+    transformData :: DeviceOrHostAddressConstKHR
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (AccelerationStructureGeometryTrianglesDataKHR (es :: [Type]))
+#endif
+deriving instance Show (Chain es) => Show (AccelerationStructureGeometryTrianglesDataKHR es)
+
+instance Extensible AccelerationStructureGeometryTrianglesDataKHR where
+  extensibleTypeName = "AccelerationStructureGeometryTrianglesDataKHR"
+  setNext AccelerationStructureGeometryTrianglesDataKHR{..} next' = AccelerationStructureGeometryTrianglesDataKHR{next = next', ..}
+  getNext AccelerationStructureGeometryTrianglesDataKHR{..} = next
+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends AccelerationStructureGeometryTrianglesDataKHR e => b) -> Maybe b
+  extends _ f
+    | Just Refl <- eqT @e @AccelerationStructureTrianglesDisplacementMicromapNV = Just f
+    | Just Refl <- eqT @e @AccelerationStructureTrianglesOpacityMicromapEXT = Just f
+    | Just Refl <- eqT @e @AccelerationStructureTrianglesOpacityMicromapKHR = Just f
+    | Just Refl <- eqT @e @AccelerationStructureGeometryMotionTrianglesDataNV = Just f
+    | otherwise = Nothing
+
+instance ( Extendss AccelerationStructureGeometryTrianglesDataKHR es
+         , PokeChain es ) => ToCStruct (AccelerationStructureGeometryTrianglesDataKHR es) where
+  withCStruct x f = allocaBytes 64 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p AccelerationStructureGeometryTrianglesDataKHR{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR)
+    pNext'' <- fmap castPtr . ContT $ withChain (next)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
+    lift $ poke ((p `plusPtr` 16 :: Ptr Format)) (vertexFormat)
+    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr DeviceOrHostAddressConstKHR)) (vertexData) . ($ ())
+    lift $ poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (vertexStride)
+    lift $ poke ((p `plusPtr` 40 :: Ptr Word32)) (maxVertex)
+    lift $ poke ((p `plusPtr` 44 :: Ptr IndexType)) (indexType)
+    ContT $ pokeCStruct ((p `plusPtr` 48 :: Ptr DeviceOrHostAddressConstKHR)) (indexData) . ($ ())
+    ContT $ pokeCStruct ((p `plusPtr` 56 :: Ptr DeviceOrHostAddressConstKHR)) (transformData) . ($ ())
+    lift $ f
+  cStructSize = 64
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR)
+    pNext' <- fmap castPtr . ContT $ withZeroChain @es
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
+    lift $ poke ((p `plusPtr` 16 :: Ptr Format)) (zero)
+    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr DeviceOrHostAddressConstKHR)) (zero) . ($ ())
+    lift $ poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (zero)
+    lift $ poke ((p `plusPtr` 40 :: Ptr Word32)) (zero)
+    lift $ poke ((p `plusPtr` 44 :: Ptr IndexType)) (zero)
+    ContT $ pokeCStruct ((p `plusPtr` 48 :: Ptr DeviceOrHostAddressConstKHR)) (zero) . ($ ())
+    ContT $ pokeCStruct ((p `plusPtr` 56 :: Ptr DeviceOrHostAddressConstKHR)) (zero) . ($ ())
+    lift $ f
+
+instance es ~ '[] => Zero (AccelerationStructureGeometryTrianglesDataKHR es) where
+  zero = AccelerationStructureGeometryTrianglesDataKHR
+           ()
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkAccelerationStructureGeometryAabbsDataKHR - Structure specifying
+-- axis-aligned bounding box geometry in a bottom-level acceleration
+-- structure
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
+-- 'AccelerationStructureGeometryDataKHR', 'DeviceOrHostAddressConstKHR',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data AccelerationStructureGeometryAabbsDataKHR = AccelerationStructureGeometryAabbsDataKHR
+  { -- | @data@ is a device or host address of memory containing
+    -- 'AabbPositionsKHR' structures containing position data for each
+    -- axis-aligned bounding box in the geometry.
+    data' :: DeviceOrHostAddressConstKHR
+  , -- | @stride@ is the stride in bytes between each entry in @data@. The stride
+    -- /must/ be a multiple of @8@.
+    --
+    -- #VUID-VkAccelerationStructureGeometryAabbsDataKHR-stride-03545# @stride@
+    -- /must/ be a multiple of @8@
+    --
+    -- #VUID-VkAccelerationStructureGeometryAabbsDataKHR-stride-03820# @stride@
+    -- /must/ be less than or equal to 232-1
+    stride :: DeviceSize
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (AccelerationStructureGeometryAabbsDataKHR)
+#endif
+deriving instance Show AccelerationStructureGeometryAabbsDataKHR
+
+instance ToCStruct AccelerationStructureGeometryAabbsDataKHR where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p AccelerationStructureGeometryAabbsDataKHR{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr DeviceOrHostAddressConstKHR)) (data') . ($ ())
+    lift $ poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (stride)
+    lift $ f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr DeviceOrHostAddressConstKHR)) (zero) . ($ ())
+    lift $ poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (zero)
+    lift $ f
+
+instance Zero AccelerationStructureGeometryAabbsDataKHR where
+  zero = AccelerationStructureGeometryAabbsDataKHR
+           zero
+           zero
+
+
+-- | VkAccelerationStructureGeometryInstancesDataKHR - Structure specifying a
+-- geometry consisting of instances of other acceleration structures
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
+-- 'AccelerationStructureGeometryDataKHR',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32', 'DeviceOrHostAddressConstKHR',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data AccelerationStructureGeometryInstancesDataKHR = AccelerationStructureGeometryInstancesDataKHR
+  { -- | @arrayOfPointers@ specifies whether @data@ is used as an array of
+    -- addresses or just an array.
+    arrayOfPointers :: Bool
+  , -- | @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://registry.khronos.org/vulkan/specs/latest/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'
+    -- structures. Addresses and 'AccelerationStructureInstanceKHR' structures
+    -- are tightly packed.
+    -- 'Vulkan.Extensions.VK_NV_ray_tracing_motion_blur.AccelerationStructureMotionInstanceNV'
+    -- structures have a stride of 160 bytes.
+    data' :: DeviceOrHostAddressConstKHR
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (AccelerationStructureGeometryInstancesDataKHR)
+#endif
+deriving instance Show AccelerationStructureGeometryInstancesDataKHR
+
+instance ToCStruct AccelerationStructureGeometryInstancesDataKHR where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p AccelerationStructureGeometryInstancesDataKHR{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (arrayOfPointers))
+    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr DeviceOrHostAddressConstKHR)) (data') . ($ ())
+    lift $ f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr DeviceOrHostAddressConstKHR)) (zero) . ($ ())
+    lift $ f
+
+instance Zero AccelerationStructureGeometryInstancesDataKHR where
+  zero = AccelerationStructureGeometryInstancesDataKHR
+           zero
+           zero
+
+
+-- | VkAccelerationStructureGeometryKHR - Structure specifying geometries to
+-- be built into an acceleration structure
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkAccelerationStructureGeometryKHR-micromap-11568# If
+--     @geometryType@ is 'GEOMETRY_TYPE_MICROMAP_KHR', @pNext@ chain /must/
+--     include a single
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureGeometryMicromapDataKHR'
+--     structure
+--
+-- -   #VUID-VkAccelerationStructureGeometryKHR-flags-11569# If
+--     @geometryType@ is 'GEOMETRY_TYPE_MICROMAP_KHR', @flags@ /must/ be
+--     @0@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkAccelerationStructureGeometryKHR-sType-sType# @sType@ /must/
+--     be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR'
+--
+-- -   #VUID-VkAccelerationStructureGeometryKHR-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_AMDX_dense_geometry_format.AccelerationStructureDenseGeometryFormatTrianglesDataAMDX',
+--     'Vulkan.Extensions.VK_NV_ray_tracing_linear_swept_spheres.AccelerationStructureGeometryLinearSweptSpheresDataNV',
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureGeometryMicromapDataKHR',
+--     or
+--     'Vulkan.Extensions.VK_NV_ray_tracing_linear_swept_spheres.AccelerationStructureGeometrySpheresDataNV'
+--
+-- -   #VUID-VkAccelerationStructureGeometryKHR-sType-unique# The @sType@
+--     value of each structure in the @pNext@ chain /must/ be unique
+--
+-- -   #VUID-VkAccelerationStructureGeometryKHR-geometryType-parameter#
+--     @geometryType@ /must/ be a valid 'GeometryTypeKHR' value
+--
+-- -   #VUID-VkAccelerationStructureGeometryKHR-triangles-parameter# If
+--     @geometryType@ is 'GEOMETRY_TYPE_TRIANGLES_KHR', the @triangles@
+--     member of @geometry@ /must/ be a valid
+--     'AccelerationStructureGeometryTrianglesDataKHR' structure
+--
+-- -   #VUID-VkAccelerationStructureGeometryKHR-aabbs-parameter# If
+--     @geometryType@ is 'GEOMETRY_TYPE_AABBS_KHR', the @aabbs@ member of
+--     @geometry@ /must/ be a valid
+--     'AccelerationStructureGeometryAabbsDataKHR' structure
+--
+-- -   #VUID-VkAccelerationStructureGeometryKHR-instances-parameter# If
+--     @geometryType@ is 'GEOMETRY_TYPE_INSTANCES_KHR', the @instances@
+--     member of @geometry@ /must/ be a valid
+--     'AccelerationStructureGeometryInstancesDataKHR' structure
+--
+-- -   #VUID-VkAccelerationStructureGeometryKHR-flags-parameter# @flags@
+--     /must/ be a valid combination of 'GeometryFlagBitsKHR' values
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
+-- 'AccelerationStructureBuildGeometryInfoKHR',
+-- 'AccelerationStructureGeometryDataKHR', 'GeometryFlagsKHR',
+-- 'GeometryTypeKHR', 'Vulkan.Core10.Enums.StructureType.StructureType'
+data AccelerationStructureGeometryKHR (es :: [Type]) = AccelerationStructureGeometryKHR
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
+    next :: Chain es
+  , -- | @geometryType@ describes which type of geometry this
+    -- 'AccelerationStructureGeometryKHR' refers to.
+    geometryType :: GeometryTypeKHR
+  , -- | @geometry@ is a 'AccelerationStructureGeometryDataKHR' union describing
+    -- the geometry data for the relevant geometry type.
+    geometry :: AccelerationStructureGeometryDataKHR
+  , -- | @flags@ is a bitmask of 'GeometryFlagBitsKHR' values describing
+    -- additional properties of how the geometry should be built.
+    flags :: GeometryFlagsKHR
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (AccelerationStructureGeometryKHR (es :: [Type]))
+#endif
+deriving instance Show (Chain es) => Show (AccelerationStructureGeometryKHR es)
+
+instance Extensible AccelerationStructureGeometryKHR where
+  extensibleTypeName = "AccelerationStructureGeometryKHR"
+  setNext AccelerationStructureGeometryKHR{..} next' = AccelerationStructureGeometryKHR{next = next', ..}
+  getNext AccelerationStructureGeometryKHR{..} = next
+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends AccelerationStructureGeometryKHR e => b) -> Maybe b
+  extends _ f
+    | Just Refl <- eqT @e @(AccelerationStructureDenseGeometryFormatTrianglesDataAMDX '[]) = Just f
+    | Just Refl <- eqT @e @AccelerationStructureGeometryMicromapDataKHR = Just f
+    | Just Refl <- eqT @e @AccelerationStructureGeometrySpheresDataNV = Just f
+    | Just Refl <- eqT @e @AccelerationStructureGeometryLinearSweptSpheresDataNV = Just f
+    | otherwise = Nothing
+
+instance ( Extendss AccelerationStructureGeometryKHR es
+         , PokeChain es ) => ToCStruct (AccelerationStructureGeometryKHR es) where
+  withCStruct x f = allocaBytes 96 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p AccelerationStructureGeometryKHR{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR)
+    pNext'' <- fmap castPtr . ContT $ withChain (next)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
+    lift $ poke ((p `plusPtr` 16 :: Ptr GeometryTypeKHR)) (geometryType)
+    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr AccelerationStructureGeometryDataKHR)) (geometry) . ($ ())
+    lift $ poke ((p `plusPtr` 88 :: Ptr GeometryFlagsKHR)) (flags)
+    lift $ f
+  cStructSize = 96
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR)
+    pNext' <- fmap castPtr . ContT $ withZeroChain @es
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
+    lift $ poke ((p `plusPtr` 16 :: Ptr GeometryTypeKHR)) (zero)
+    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr AccelerationStructureGeometryDataKHR)) (zero) . ($ ())
+    lift $ f
+
+instance es ~ '[] => Zero (AccelerationStructureGeometryKHR es) where
+  zero = AccelerationStructureGeometryKHR
+           ()
+           zero
+           zero
+           zero
+
+
+-- | VkAccelerationStructureBuildGeometryInfoKHR - Structure specifying the
+-- geometry data used to build an acceleration structure
+--
+-- = Description
+--
+-- Only one of @pGeometries@ or @ppGeometries@ /can/ be a valid pointer,
+-- the other /must/ be @NULL@. Each element of the non-@NULL@ array
+-- describes the data used to build each acceleration structure geometry.
+--
+-- For bottom-level acceleration structures, the index of each element of
+-- the @pGeometries@ or @ppGeometries@ members of
+-- 'AccelerationStructureBuildGeometryInfoKHR' is used as the /geometry
+-- index/ during ray traversal. The geometry index is available in ray
+-- shaders via the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-raygeometryindex RayGeometryIndexKHR built-in>,
+-- and is
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
+--
+-- Setting 'BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV' in @flags@
+-- indicates that this build is a motion top level acceleration structure.
+-- A motion top level uses instances of format
+-- 'Vulkan.Extensions.VK_NV_ray_tracing_motion_blur.AccelerationStructureMotionInstanceNV'
+-- if 'AccelerationStructureGeometryInstancesDataKHR'::@arrayOfPointers@ is
+-- 'Vulkan.Core10.FundamentalTypes.FALSE'.
+--
+-- If 'AccelerationStructureGeometryInstancesDataKHR'::@arrayOfPointers@ is
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', the pointer for each element of
+-- the array of instance pointers consists of 4 bits of
+-- 'Vulkan.Extensions.VK_NV_ray_tracing_motion_blur.AccelerationStructureMotionInstanceTypeNV'
+-- in the low 4 bits of the pointer identifying the type of structure at
+-- the pointer. The device address accessed is the value in the array with
+-- the low 4 bits set to zero. The structure at the pointer is one of
+-- 'AccelerationStructureInstanceKHR',
+-- 'Vulkan.Extensions.VK_NV_ray_tracing_motion_blur.AccelerationStructureMatrixMotionInstanceNV'
+-- or
+-- 'Vulkan.Extensions.VK_NV_ray_tracing_motion_blur.AccelerationStructureSRTMotionInstanceNV',
+-- depending on the type value encoded in the low 4 bits.
+--
+-- A top level acceleration structure with either motion instances or
+-- vertex motion in its instances /must/ set
+-- 'BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV' in @flags@.
+--
+-- Members @srcAccelerationStructure@ and @dstAccelerationStructure@ /may/
+-- be the same or different for an update operation (when @mode@ is
+-- 'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR'). If they are the same,
+-- the update happens in-place. Otherwise, the target acceleration
+-- structure is updated and the source is not modified.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-03654# @type@
+--     /must/ not be 'ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR'
+--
+-- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-pGeometries-03788#
+--     If @geometryCount@ is not @0@, exactly one of @pGeometries@ or
+--     @ppGeometries@ /must/ be a valid pointer, the other /must/ be @NULL@
+--
+-- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-03789# If
+--     @type@ is 'ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR', the
+--     @geometryType@ member of elements of either @pGeometries@ or
+--     @ppGeometries@ /must/ be 'GEOMETRY_TYPE_INSTANCES_KHR'
+--
+-- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-03790# If
+--     @type@ is 'ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR',
+--     @geometryCount@ /must/ be @1@
+--
+-- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-03791# If
+--     @type@ is 'ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR' the
+--     @geometryType@ member of elements of either @pGeometries@ or
+--     @ppGeometries@ /must/ not be 'GEOMETRY_TYPE_INSTANCES_KHR'
+--
+-- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-03792# If
+--     @type@ is 'ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR' then the
+--     @geometryType@ member of each geometry in either @pGeometries@ or
+--     @ppGeometries@ /must/ be the same
+--
+-- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-03793# If
+--     @type@ is 'ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR' then
+--     @geometryCount@ /must/ be less than or equal to
+--     'PhysicalDeviceAccelerationStructurePropertiesKHR'::@maxGeometryCount@
+--
+-- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-10884# If
+--     @type@ is 'ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR' and the
+--     @geometryType@ member of either @pGeometries@ or @ppGeometries@ is
+--     'GEOMETRY_TYPE_DENSE_GEOMETRY_FORMAT_TRIANGLES_AMDX', then
+--     @geometryCount@ /must/ be @1@
+--
+-- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-03794# If
+--     @type@ is 'ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR' and the
+--     @geometryType@ member of either @pGeometries@ or @ppGeometries@ is
+--     'GEOMETRY_TYPE_AABBS_KHR', the total number of AABBs in all
+--     geometries /must/ be less than or equal to
+--     'PhysicalDeviceAccelerationStructurePropertiesKHR'::@maxPrimitiveCount@
+--
+-- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-03795# If
+--     @type@ is 'ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR' and the
+--     @geometryType@ member of either @pGeometries@ or @ppGeometries@ is
+--     'GEOMETRY_TYPE_TRIANGLES_KHR', the total number of triangles in all
+--     geometries /must/ be less than or equal to
+--     'PhysicalDeviceAccelerationStructurePropertiesKHR'::@maxPrimitiveCount@
+--
+-- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-flags-03796# If
+--     @flags@ has the
+--     'BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR' bit set,
+--     then it /must/ not have the
+--     'BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR' bit set
+--
+-- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-dstAccelerationStructure-04927#
+--     If @dstAccelerationStructure@ was created with
+--     'ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV' set in
+--     'AccelerationStructureCreateInfoKHR'::@createFlags@,
+--     'BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV' /must/ be set in
+--     @flags@
+--
+-- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-flags-04928# If
+--     'BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV' is set in @flags@,
+--     @dstAccelerationStructure@ /must/ have been created with
+--     'ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV' set in
+--     'AccelerationStructureCreateInfoKHR'::@createFlags@
+--
+-- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-flags-04929# If
+--     'BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV' is set in @flags@,
+--     @type@ /must/ not be 'ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR'
+--
+-- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-flags-11558# If
+--     @flags@ has the
+--     'BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_BIT_KHR'
+--     bit set then it /must/ not have the
+--     'BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_BIT_EXT'
+--     bit set
+--
+-- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-flags-11709# If
+--     @flags@ has the
+--     'BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_BIT_EXT'
+--     bit set, the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-micromapEXT ::micromap>
+--     feature /must/ be enabled
+--
+-- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-flags-11710# If
+--     @flags@ has the
+--     'BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_BIT_KHR'
+--     bit set, the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-micromap ::micromap>
+--     or
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-micromapEXT ::micromap>
+--     feature /must/ be enabled
+--
+-- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-flags-11711# If
+--     @flags@ has the
+--     'BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_BIT_KHR'
+--     bit set, the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-micromap ::micromap>
+--     or
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-micromapEXT ::micromap>
+--     feature /must/ be enabled
+--
+-- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-micromap-11559# If
+--     @type@ is 'ACCELERATION_STRUCTURE_TYPE_OPACITY_MICROMAP_KHR', the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-micromap ::micromap>
+--     feature /must/ be enabled
+--
+-- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-geometryCount-11560#
+--     If @type@ is 'ACCELERATION_STRUCTURE_TYPE_OPACITY_MICROMAP_KHR',
+--     @geometryCount@ /must/ be @1@
+--
+-- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-geometryType-11561#
+--     If @type@ is 'ACCELERATION_STRUCTURE_TYPE_OPACITY_MICROMAP_KHR', the
+--     @geometryType@ member of elements of either @pGeometries@ or
+--     @ppGeometries@ /must/ be 'GEOMETRY_TYPE_MICROMAP_KHR'
+--
+-- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-geometryType-11707#
+--     If @type@ is not 'ACCELERATION_STRUCTURE_TYPE_OPACITY_MICROMAP_KHR',
+--     the @geometryType@ member of elements of either @pGeometries@ or
+--     @ppGeometries@ /must/ not be 'GEOMETRY_TYPE_MICROMAP_KHR'
+--
+-- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-flags-11562# If
+--     @type@ is 'ACCELERATION_STRUCTURE_TYPE_OPACITY_MICROMAP_KHR',
+--     @flags@ /must/ only include the following bits:
+--
+--     -   'BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR'
+--
+--     -   'BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR'
+--
+--     -   'BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR'
+--
+--     -   'BUILD_ACCELERATION_STRUCTURE_MICROMAP_LOSSY_BIT_KHR'
+--
+-- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-11563# If
+--     @flags@ includes
+--     'BUILD_ACCELERATION_STRUCTURE_MICROMAP_LOSSY_BIT_KHR', @type@ /must/
+--     be 'ACCELERATION_STRUCTURE_TYPE_OPACITY_MICROMAP_KHR'
+--
+-- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-format-11712# If
+--     @flags@ includes
+--     'BUILD_ACCELERATION_STRUCTURE_MICROMAP_LOSSY_BIT_KHR', for each
+--     element of @pGeometries@ or @ppGeometries@, if it includes a
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureGeometryMicromapDataKHR'
+--     structure in its @pNext@ chain, each element of its @pUsageCounts@
+--     or @ppUsageCounts@ members /must/ have its @format@ member equal to
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.OPACITY_MICROMAP_FORMAT_4_STATE_KHR'
+--
+-- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-subdivisionLevel-11564#
+--     If @flags@ does not include
+--     'BUILD_ACCELERATION_STRUCTURE_MICROMAP_LOSSY_BIT_KHR', for each
+--     element of @pGeometries@ or @ppGeometries@, if it includes a
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureGeometryMicromapDataKHR'
+--     structure in its @pNext@ chain, for each element of its
+--     @pUsageCounts@ or @ppUsageCounts@ members, if its @format@ member is
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.OPACITY_MICROMAP_FORMAT_4_STATE_KHR',
+--     its @subdivisionLevel@ member /must/ be less than or equal to
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxOpacity4StateSubdivisionLevel maxOpacity4StateSubdivisionLevel>
+--
+-- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-subdivisionLevel-11565#
+--     If @flags@ includes
+--     'BUILD_ACCELERATION_STRUCTURE_MICROMAP_LOSSY_BIT_KHR', for each
+--     element of @pGeometries@ or @ppGeometries@, if it includes a
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureGeometryMicromapDataKHR'
+--     structure in its @pNext@ chain, for each element of its
+--     @pUsageCounts@ or @ppUsageCounts@ members, its @subdivisionLevel@
+--     member /must/ be less than or equal to
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxOpacity4StateSubdivisionLevel maxOpacityLossy4StateSubdivisionLevel>
+--
+-- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-format-11713# If
+--     @flags@ includes
+--     'BUILD_ACCELERATION_STRUCTURE_MICROMAP_LOSSY_BIT_KHR', for each
+--     element of @pGeometries@ or @ppGeometries@, if it includes a
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureGeometryMicromapDataKHR'
+--     structure in its @pNext@ chain, each element of its @triangleArray@
+--     member /must/ have its @format@ member equal to
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.OPACITY_MICROMAP_FORMAT_4_STATE_KHR'
+--
+-- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-subdivisionLevel-11566#
+--     If @flags@ does not include
+--     'BUILD_ACCELERATION_STRUCTURE_MICROMAP_LOSSY_BIT_KHR', for each
+--     element of @pGeometries@ or @ppGeometries@, if it includes a
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureGeometryMicromapDataKHR'
+--     structure in its @pNext@ chain, for each element of its
+--     @triangleArray@ member, if its @format@ member is
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.OPACITY_MICROMAP_FORMAT_4_STATE_KHR',
+--     its @subdivisionLevel@ member /must/ be less than or equal to
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxOpacity4StateSubdivisionLevel maxOpacity4StateSubdivisionLevel>
+--
+-- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-subdivisionLevel-11567#
+--     If @flags@ includes
+--     'BUILD_ACCELERATION_STRUCTURE_MICROMAP_LOSSY_BIT_KHR', for each
+--     element of @pGeometries@ or @ppGeometries@, if it includes a
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureGeometryMicromapDataKHR'
+--     structure in its @pNext@ chain, for each element of its
+--     @triangleArray@ member, its @subdivisionLevel@ member /must/ be less
+--     than or equal to
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxOpacity4StateSubdivisionLevel maxOpacityLossy4StateSubdivisionLevel>
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-sType-sType#
+--     @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR'
+--
+-- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-pNext-pNext#
+--     @pNext@ /must/ be @NULL@
+--
+-- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-parameter#
+--     @type@ /must/ be a valid 'AccelerationStructureTypeKHR' value
+--
+-- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-flags-parameter#
+--     @flags@ /must/ be a valid combination of
+--     'BuildAccelerationStructureFlagBitsKHR' values
+--
+-- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-pGeometries-parameter#
+--     If @geometryCount@ is not @0@, and @pGeometries@ is not @NULL@,
+--     @pGeometries@ /must/ be a valid pointer to an array of
+--     @geometryCount@ valid 'AccelerationStructureGeometryKHR' structures
+--
+-- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-ppGeometries-parameter#
+--     If @geometryCount@ is not @0@, and @ppGeometries@ is not @NULL@,
+--     @ppGeometries@ /must/ be a valid pointer to an array of
+--     @geometryCount@ valid pointers to valid
+--     'AccelerationStructureGeometryKHR' structures
+--
+-- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-commonparent# Both
+--     of @dstAccelerationStructure@, and @srcAccelerationStructure@ 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_acceleration_structure VK_KHR_acceleration_structure>,
+-- 'AccelerationStructureGeometryKHR',
+-- 'Vulkan.Extensions.Handles.AccelerationStructureKHR',
+-- 'AccelerationStructureTypeKHR', 'BuildAccelerationStructureFlagsKHR',
+-- 'BuildAccelerationStructureModeKHR', 'DeviceOrHostAddressKHR',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'buildAccelerationStructuresKHR',
+-- 'cmdBuildAccelerationStructuresIndirectKHR',
+-- 'cmdBuildAccelerationStructuresKHR',
+-- 'getAccelerationStructureBuildSizesKHR'
+data AccelerationStructureBuildGeometryInfoKHR = AccelerationStructureBuildGeometryInfoKHR
+  { -- | @type@ is a 'AccelerationStructureTypeKHR' value specifying the type of
+    -- acceleration structure being built.
+    type' :: AccelerationStructureTypeKHR
+  , -- | @flags@ is a bitmask of 'BuildAccelerationStructureFlagBitsKHR'
+    -- specifying additional parameters of the acceleration structure.
+    flags :: BuildAccelerationStructureFlagsKHR
+  , -- | @mode@ is a 'BuildAccelerationStructureModeKHR' value specifying the
+    -- type of operation to perform.
+    mode :: BuildAccelerationStructureModeKHR
+  , -- | @srcAccelerationStructure@ is a pointer to an existing acceleration
+    -- structure that is to be used to update the @dstAccelerationStructure@
+    -- acceleration structure when @mode@ is
+    -- 'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR'.
+    srcAccelerationStructure :: AccelerationStructureKHR
+  , -- | @dstAccelerationStructure@ is a pointer to the target acceleration
+    -- structure for the build.
+    dstAccelerationStructure :: AccelerationStructureKHR
+  , -- | @pGeometries@ is a pointer to an array of
+    -- 'AccelerationStructureGeometryKHR' structures.
+    geometries :: Vector (SomeStruct AccelerationStructureGeometryKHR)
+  , -- | @scratchData@ is the device or host address of memory that will be used
+    -- as scratch memory for the build.
+    scratchData :: DeviceOrHostAddressKHR
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (AccelerationStructureBuildGeometryInfoKHR)
+#endif
+deriving instance Show AccelerationStructureBuildGeometryInfoKHR
+
+instance ToCStruct AccelerationStructureBuildGeometryInfoKHR where
+  withCStruct x f = allocaBytes 80 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p AccelerationStructureBuildGeometryInfoKHR{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr AccelerationStructureTypeKHR)) (type')
+    lift $ poke ((p `plusPtr` 20 :: Ptr BuildAccelerationStructureFlagsKHR)) (flags)
+    lift $ poke ((p `plusPtr` 24 :: Ptr BuildAccelerationStructureModeKHR)) (mode)
+    lift $ poke ((p `plusPtr` 32 :: Ptr AccelerationStructureKHR)) (srcAccelerationStructure)
+    lift $ poke ((p `plusPtr` 40 :: Ptr AccelerationStructureKHR)) (dstAccelerationStructure)
+    lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (geometries)) :: Word32))
+    pPGeometries' <- ContT $ allocaBytes @(AccelerationStructureGeometryKHR _) ((Data.Vector.length (geometries)) * 96)
+    Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPGeometries' `plusPtr` (96 * (i)) :: Ptr (AccelerationStructureGeometryKHR _))) (e) . ($ ())) (geometries)
+    lift $ poke ((p `plusPtr` 56 :: Ptr (Ptr (AccelerationStructureGeometryKHR _)))) (pPGeometries')
+    lift $ poke ((p `plusPtr` 64 :: Ptr (Ptr (Ptr (AccelerationStructureGeometryKHR _))))) (nullPtr)
+    ContT $ pokeCStruct ((p `plusPtr` 72 :: Ptr DeviceOrHostAddressKHR)) (scratchData) . ($ ())
+    lift $ f
+  cStructSize = 80
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr AccelerationStructureTypeKHR)) (zero)
+    lift $ poke ((p `plusPtr` 24 :: Ptr BuildAccelerationStructureModeKHR)) (zero)
+    lift $ poke ((p `plusPtr` 64 :: Ptr (Ptr (Ptr (AccelerationStructureGeometryKHR _))))) (nullPtr)
+    ContT $ pokeCStruct ((p `plusPtr` 72 :: Ptr DeviceOrHostAddressKHR)) (zero) . ($ ())
+    lift $ f
+
+instance Zero AccelerationStructureBuildGeometryInfoKHR where
+  zero = AccelerationStructureBuildGeometryInfoKHR
+           zero
+           zero
+           zero
+           zero
+           zero
+           mempty
+           zero
+
+
+-- | VkAccelerationStructureBuildRangeInfoKHR - Structure specifying build
+-- offsets and counts for acceleration structure builds
+--
+-- = Description
+--
+-- The primitive count and primitive offset are interpreted differently
+-- depending on the 'GeometryTypeKHR' used:
+--
+-- -   For geometries of type 'GEOMETRY_TYPE_TRIANGLES_KHR',
+--     @primitiveCount@ is the number of triangles to be built, where each
+--     triangle is treated as 3 vertices.
+--
+--     -   If the geometry uses indices, @primitiveCount@ × 3 indices are
+--         consumed from
+--         'AccelerationStructureGeometryTrianglesDataKHR'::@indexData@,
+--         starting at an offset of @primitiveOffset@. The value of
+--         @firstVertex@ is added to the index values before fetching
+--         vertices.
+--
+--     -   If the geometry does not use indices, @primitiveCount@ × 3
+--         vertices are consumed from
+--         'AccelerationStructureGeometryTrianglesDataKHR'::@vertexData@,
+--         starting at an offset of @primitiveOffset@ +
+--         'AccelerationStructureGeometryTrianglesDataKHR'::@vertexStride@
+--         × @firstVertex@.
+--
+--     -   If
+--         'AccelerationStructureGeometryTrianglesDataKHR'::@transformData@
+--         is not @NULL@, a single 'TransformMatrixKHR' structure is
+--         consumed from
+--         'AccelerationStructureGeometryTrianglesDataKHR'::@transformData@,
+--         at an offset of @transformOffset@. This matrix describes a
+--         transformation from the space in which the vertices for all
+--         triangles in this geometry are described to the space in which
+--         the acceleration structure is defined.
+--
+-- -   For geometries of type 'GEOMETRY_TYPE_AABBS_KHR', @primitiveCount@
+--     is the number of axis-aligned bounding boxes. @primitiveCount@
+--     'AabbPositionsKHR' structures are consumed from
+--     'AccelerationStructureGeometryAabbsDataKHR'::@data@, starting at an
+--     offset of @primitiveOffset@.
+--
+-- -   For geometries of type 'GEOMETRY_TYPE_SPHERES_NV', @primitiveCount@
+--     is the number of spheres to be built, where each sphere is treated
+--     as 1 vertex.
+--
+--     -   If the geometry uses indices, @primitiveCount@ indices are
+--         consumed from
+--         'Vulkan.Extensions.VK_NV_ray_tracing_linear_swept_spheres.AccelerationStructureGeometrySpheresDataNV'::@indexData@,
+--         starting at an offset of @primitiveOffset@. The value of
+--         @firstVertex@ is added to the index values before fetching
+--         vertices and radii.
+--
+--     -   If the geometry does not use indices, @primitiveCount@ vertices
+--         and radii are consumed from
+--         'Vulkan.Extensions.VK_NV_ray_tracing_linear_swept_spheres.AccelerationStructureGeometrySpheresDataNV'::@vertexData@,
+--         starting at an offset of @primitiveOffset@ +
+--         'Vulkan.Extensions.VK_NV_ray_tracing_linear_swept_spheres.AccelerationStructureGeometrySpheresDataNV'::@vertexStride@
+--         × @firstVertex@ and
+--         'Vulkan.Extensions.VK_NV_ray_tracing_linear_swept_spheres.AccelerationStructureGeometrySpheresDataNV'::@radiusData@,
+--         starting at an offset of @primitiveOffset@ +
+--         'Vulkan.Extensions.VK_NV_ray_tracing_linear_swept_spheres.AccelerationStructureGeometrySpheresDataNV'::@radiusStride@
+--         × @firstVertex@ respectively.
+--
+-- -   For geometries of type 'GEOMETRY_TYPE_LINEAR_SWEPT_SPHERES_NV',
+--     @primitiveCount@ is the number of LSS primitives to be built, where
+--     each LSS primitive is treated as 2 vertices.
+--
+--     -   If the geometry uses indices, @primitiveCount@ × 2 indices are
+--         consumed from
+--         'Vulkan.Extensions.VK_NV_ray_tracing_linear_swept_spheres.AccelerationStructureGeometryLinearSweptSpheresDataNV'::@indexData@,
+--         starting at an offset of @primitiveOffset@. The value of
+--         @firstVertex@ is added to the index values before fetching
+--         vertices and radii.
+--
+--     -   If the geometry does not use indices, @primitiveCount@ × 2
+--         vertices and radii are consumed from
+--         'Vulkan.Extensions.VK_NV_ray_tracing_linear_swept_spheres.AccelerationStructureGeometryLinearSweptSpheresDataNV'::@vertexData@,
+--         starting at an offset of @primitiveOffset@ +
+--         'Vulkan.Extensions.VK_NV_ray_tracing_linear_swept_spheres.AccelerationStructureGeometryLinearSweptSpheresDataNV'::@vertexStride@
+--         × @firstVertex@ and
+--         'Vulkan.Extensions.VK_NV_ray_tracing_linear_swept_spheres.AccelerationStructureGeometryLinearSweptSpheresDataNV'::@radiusData@,
+--         starting at an offset of @primitiveOffset@ +
+--         'Vulkan.Extensions.VK_NV_ray_tracing_linear_swept_spheres.AccelerationStructureGeometryLinearSweptSpheresDataNV'::@radiusStride@
+--         × @firstVertex@ respectively.
+--
+-- -   For geometries of type 'GEOMETRY_TYPE_INSTANCES_KHR',
+--     @primitiveCount@ is the number of acceleration structures.
+--     @primitiveCount@ 'AccelerationStructureInstanceKHR' or
+--     'Vulkan.Extensions.VK_NV_ray_tracing_motion_blur.AccelerationStructureMotionInstanceNV'
+--     structures are consumed from
+--     'AccelerationStructureGeometryInstancesDataKHR'::@data@, starting at
+--     an offset of @primitiveOffset@.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkAccelerationStructureBuildRangeInfoKHR-vertexData-10418# The
+--     number of vertices consumed from
+--     'AccelerationStructureGeometryTrianglesDataKHR'::@vertexData@ /must/
+--     be less than or equal to
+--     'AccelerationStructureGeometryTrianglesDataKHR'::@maxVertex@ + 1
+--
+-- -   #VUID-VkAccelerationStructureBuildRangeInfoKHR-primitiveOffset-03656#
+--     For geometries of type 'GEOMETRY_TYPE_TRIANGLES_KHR', if the
+--     geometry uses indices, the offset @primitiveOffset@ from
+--     'AccelerationStructureGeometryTrianglesDataKHR'::@indexData@ /must/
+--     be a multiple of the element size of
+--     'AccelerationStructureGeometryTrianglesDataKHR'::@indexType@
+--
+-- -   #VUID-VkAccelerationStructureBuildRangeInfoKHR-primitiveOffset-03657#
+--     For geometries of type 'GEOMETRY_TYPE_TRIANGLES_KHR', if the
+--     geometry does not use indices, the offset @primitiveOffset@ from
+--     'AccelerationStructureGeometryTrianglesDataKHR'::@vertexData@ /must/
+--     be a multiple of:
+--
+--     -   the
+--         <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats size of the format>
+--         specified in
+--         'AccelerationStructureGeometryTrianglesDataKHR'::@vertexFormat@,
+--         if that format is a
+--         <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-packed packed format>
+--
+--     -   the
+--         <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats component size>
+--         of the
+--         'AccelerationStructureGeometryTrianglesDataKHR'::@vertexFormat@,
+--         if that format is not a
+--         <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-packed packed format>
+--
+-- -   #VUID-VkAccelerationStructureBuildRangeInfoKHR-maxVertex-10774# For
+--     geometries of type 'GEOMETRY_TYPE_TRIANGLES_KHR', if the geometry
+--     uses indices, then
+--     'AccelerationStructureGeometryTrianglesDataKHR'::@maxVertex@ /must/
+--     be greater than or equal to @firstVertex@ plus the maximum index
+--     value found in the
+--     'AccelerationStructureGeometryTrianglesDataKHR'::@indexData@ in the
+--     range [@primitiveOffset@, @primitiveOffset@
+--     @primitiveCount@ x 3]
+--
+-- -   #VUID-VkAccelerationStructureBuildRangeInfoKHR-None-10775# For
+--     geometries of type 'GEOMETRY_TYPE_TRIANGLES_KHR', if the geometry
+--     does not use indices, then
+--     'AccelerationStructureGeometryTrianglesDataKHR'::@maxVertex@ /must/
+--     be greater than or equal to firstVertex + primitiveCount x 3 - 1
+--
+-- -   #VUID-VkAccelerationStructureBuildRangeInfoKHR-transformOffset-03658#
+--     For geometries of type 'GEOMETRY_TYPE_TRIANGLES_KHR', the offset
+--     @transformOffset@ from
+--     'AccelerationStructureGeometryTrianglesDataKHR'::@transformData@
+--     /must/ be a multiple of 16
+--
+-- -   #VUID-VkAccelerationStructureBuildRangeInfoKHR-primitiveOffset-03659#
+--     For geometries of type 'GEOMETRY_TYPE_AABBS_KHR', the offset
+--     @primitiveOffset@ from
+--     'AccelerationStructureGeometryAabbsDataKHR'::@data@ /must/ be a
+--     multiple of 8
+--
+-- -   #VUID-VkAccelerationStructureBuildRangeInfoKHR-primitiveOffset-03660#
+--     For geometries of type 'GEOMETRY_TYPE_INSTANCES_KHR', the offset
+--     @primitiveOffset@ from
+--     'AccelerationStructureGeometryInstancesDataKHR'::@data@ /must/ be a
+--     multiple of 16
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
+-- 'buildAccelerationStructuresKHR', 'cmdBuildAccelerationStructuresKHR'
+data AccelerationStructureBuildRangeInfoKHR = AccelerationStructureBuildRangeInfoKHR
+  { -- | @primitiveCount@ defines the number of primitives for a corresponding
+    -- acceleration structure geometry.
+    primitiveCount :: Word32
+  , -- | @primitiveOffset@ defines an offset in bytes into the memory where
+    -- primitive data is defined.
+    primitiveOffset :: Word32
+  , -- | @firstVertex@ is the index of the first vertex to build from for
+    -- triangle geometry.
+    firstVertex :: Word32
+  , -- | @transformOffset@ defines an offset in bytes into the memory where a
+    -- transform matrix is defined.
+    transformOffset :: Word32
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (AccelerationStructureBuildRangeInfoKHR)
+#endif
+deriving instance Show AccelerationStructureBuildRangeInfoKHR
+
+instance ToCStruct AccelerationStructureBuildRangeInfoKHR where
+  withCStruct x f = allocaBytes 16 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p AccelerationStructureBuildRangeInfoKHR{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr Word32)) (primitiveCount)
+    poke ((p `plusPtr` 4 :: Ptr Word32)) (primitiveOffset)
+    poke ((p `plusPtr` 8 :: Ptr Word32)) (firstVertex)
+    poke ((p `plusPtr` 12 :: Ptr Word32)) (transformOffset)
+    f
+  cStructSize = 16
+  cStructAlignment = 4
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr Word32)) (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 AccelerationStructureBuildRangeInfoKHR where
+  peekCStruct p = do
+    primitiveCount <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))
+    primitiveOffset <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))
+    firstVertex <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))
+    transformOffset <- peek @Word32 ((p `plusPtr` 12 :: Ptr Word32))
+    pure $ AccelerationStructureBuildRangeInfoKHR
+             primitiveCount primitiveOffset firstVertex transformOffset
+
+instance Storable AccelerationStructureBuildRangeInfoKHR where
+  sizeOf ~_ = 16
+  alignment ~_ = 4
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero AccelerationStructureBuildRangeInfoKHR where
+  zero = AccelerationStructureBuildRangeInfoKHR
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkAccelerationStructureCreateInfoKHR - Structure specifying the
+-- parameters of a newly created acceleration structure object
+--
+-- = Description
+--
+-- Applications /should/ avoid creating acceleration structures with
+-- application-provided addresses and implementation-provided addresses in
+-- the same process, to reduce the likelihood of
+-- 'Vulkan.Extensions.VK_KHR_buffer_device_address.ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR'
+-- errors.
+--
+-- The expected usage for this is that a trace capture\/replay tool will
+-- add the
+-- 'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT'
+-- flag to all buffers that use
+-- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT',
+-- and will add
+-- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT'
+-- to all buffers used as storage for an acceleration structure where
+-- @deviceAddress@ is not zero. This also means that the tool will need to
+-- add
+-- 'Vulkan.Core11.Enums.MemoryAllocateFlagBits.MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT'
+-- to memory allocations to allow the flag to be set where the application
+-- may not have otherwise required it. During capture the tool will save
+-- the queried opaque device addresses in the trace. During replay, the
+-- buffers will be created specifying the original address so any address
+-- values stored in the trace data will remain valid.
+--
+-- Implementations are expected to separate such buffers in the GPU address
+-- space so normal allocations will avoid using these addresses.
+-- Applications and tools should avoid mixing application-provided and
+-- implementation-provided addresses for buffers created with
+-- 'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT',
+-- to avoid address space allocation conflicts.
+--
+-- Applications /should/ create an acceleration structure with a specific
+-- 'AccelerationStructureTypeKHR' other than
+-- 'ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR'.
+--
+-- 'ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR' is intended to be used by API
+-- translation layers. This can be used at acceleration structure creation
+-- time in cases where the actual acceleration structure type (top or
+-- bottom) is not yet known. The actual acceleration structure type must be
+-- specified as 'ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR', or
+-- 'ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR' when the build is
+-- performed.
+--
+-- If the acceleration structure will be the target of a build operation,
+-- the required size for an acceleration structure /can/ be queried with
+-- 'getAccelerationStructureBuildSizesKHR'. If the acceleration structure
+-- is going to be the target of a compacting copy,
+-- 'cmdWriteAccelerationStructuresPropertiesKHR' or
+-- 'writeAccelerationStructuresPropertiesKHR' /can/ be used to obtain the
+-- compacted size required.
+--
+-- If the acceleration structure will be the target of a build operation
+-- with 'BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV' it /must/ include
+-- 'ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV' in @createFlags@ and
+-- include
+-- 'Vulkan.Extensions.VK_NV_ray_tracing_motion_blur.AccelerationStructureMotionInfoNV'
+-- as an extension structure in @pNext@ with the number of instances as
+-- metadata for the object.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkAccelerationStructureCreateInfoKHR-deviceAddress-03612# If
+--     @deviceAddress@ is not zero, @createFlags@ /must/ include
+--     'ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR'
+--
+-- -   #VUID-VkAccelerationStructureCreateInfoKHR-deviceAddress-09488# If
+--     @deviceAddress@ is not zero, it /must/ have been retrieved from an
+--     identically created acceleration structure, except for @buffer@ and
+--     @deviceAddress@
+--
+-- -   #VUID-VkAccelerationStructureCreateInfoKHR-deviceAddress-09489# If
+--     @deviceAddress@ is not zero, @buffer@ /must/ have been created
+--     identically to the @buffer@ used to create the acceleration
+--     structure from which @deviceAddress@ was retrieved, except for
+--     'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.BufferOpaqueCaptureAddressCreateInfo'::@opaqueCaptureAddress@
+--
+-- -   #VUID-VkAccelerationStructureCreateInfoKHR-deviceAddress-09490# If
+--     @deviceAddress@ is not zero, @buffer@ /must/ have been created with
+--     a
+--     'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.BufferOpaqueCaptureAddressCreateInfo'::@opaqueCaptureAddress@
+--     that was retrieved from
+--     'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.getBufferOpaqueCaptureAddress'
+--     for the @buffer@ that was used to create the acceleration structure
+--     from which @deviceAddress@ was retrieved
+--
+-- -   #VUID-VkAccelerationStructureCreateInfoKHR-buffer-03614# @buffer@
+--     /must/ have been created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR'
+--     usage flag set
+--
+-- -   #VUID-VkAccelerationStructureCreateInfoKHR-buffer-03615# @buffer@
+--     /must/ not have been created with
+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_SPARSE_RESIDENCY_BIT'
+--
+-- -   #VUID-VkAccelerationStructureCreateInfoKHR-offset-03616# The sum of
+--     @offset@ and @size@ /must/ be less than or equal to the size of
+--     @buffer@
+--
+-- -   #VUID-VkAccelerationStructureCreateInfoKHR-offset-03734# @offset@
+--     /must/ be a multiple of @256@ bytes
+--
+-- -   #VUID-VkAccelerationStructureCreateInfoKHR-type-11600# @type@ /must/
+--     not equal 'ACCELERATION_STRUCTURE_TYPE_OPACITY_MICROMAP_KHR'
+--
+-- -   #VUID-VkAccelerationStructureCreateInfoKHR-createFlags-03613# If
+--     @createFlags@ includes
+--     'ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR',
+--     'PhysicalDeviceAccelerationStructureFeaturesKHR'::@accelerationStructureCaptureReplay@
+--     /must/ be 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-VkAccelerationStructureCreateInfoKHR-createFlags-11673# If
+--     @createFlags@ includes
+--     'ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR'
+--     and @device@ was created with multiple physical devices, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddressMultiDevice bufferDeviceAddressMultiDevice>
+--     feature /must/ be enabled
+--
+-- -   #VUID-VkAccelerationStructureCreateInfoKHR-createFlags-04954# If
+--     'ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV' is set in
+--     @createFlags@ and @type@ is
+--     'ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR', one member of the
+--     @pNext@ chain /must/ be a pointer to a valid instance of
+--     'Vulkan.Extensions.VK_NV_ray_tracing_motion_blur.AccelerationStructureMotionInfoNV'
+--
+-- -   #VUID-VkAccelerationStructureCreateInfoKHR-createFlags-04955# If any
+--     geometry includes
+--     'Vulkan.Extensions.VK_NV_ray_tracing_motion_blur.AccelerationStructureGeometryMotionTrianglesDataNV'
+--     then @createFlags@ /must/ contain
+--     'ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV'
+--
+-- -   #VUID-VkAccelerationStructureCreateInfoKHR-createFlags-08108# If
+--     @createFlags@ includes
+--     'ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-descriptorBufferCaptureReplay descriptorBufferCaptureReplay>
+--     feature /must/ be enabled
+--
+-- -   #VUID-VkAccelerationStructureCreateInfoKHR-pNext-08109# If the
+--     @pNext@ chain includes a
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.OpaqueCaptureDescriptorDataCreateInfoEXT'
+--     structure, @createFlags@ /must/ contain
+--     'ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkAccelerationStructureCreateInfoKHR-sType-sType# @sType@
+--     /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR'
+--
+-- -   #VUID-VkAccelerationStructureCreateInfoKHR-pNext-pNext# Each @pNext@
+--     member of any structure (including this one) in the @pNext@ chain
+--     /must/ be either @NULL@ or a pointer to a valid instance of
+--     'Vulkan.Extensions.VK_NV_ray_tracing_motion_blur.AccelerationStructureMotionInfoNV'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.OpaqueCaptureDescriptorDataCreateInfoEXT'
+--
+-- -   #VUID-VkAccelerationStructureCreateInfoKHR-sType-unique# The @sType@
+--     value of each structure in the @pNext@ chain /must/ be unique
+--
+-- -   #VUID-VkAccelerationStructureCreateInfoKHR-createFlags-parameter#
+--     @createFlags@ /must/ be a valid combination of
+--     'AccelerationStructureCreateFlagBitsKHR' values
+--
+-- -   #VUID-VkAccelerationStructureCreateInfoKHR-buffer-parameter#
+--     @buffer@ /must/ be a valid 'Vulkan.Core10.Handles.Buffer' handle
+--
+-- -   #VUID-VkAccelerationStructureCreateInfoKHR-type-parameter# @type@
+--     /must/ be a valid 'AccelerationStructureTypeKHR' value
+--
+-- -   #VUID-VkAccelerationStructureCreateInfoKHR-deviceAddress-parameter#
+--     If @deviceAddress@ is not @0@, @deviceAddress@ /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' value
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
+-- 'AccelerationStructureCreateFlagsKHR', 'AccelerationStructureTypeKHR',
+-- 'Vulkan.Core10.Handles.Buffer',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceAddress',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'createAccelerationStructureKHR'
+data AccelerationStructureCreateInfoKHR (es :: [Type]) = AccelerationStructureCreateInfoKHR
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
+    next :: Chain es
+  , -- | @createFlags@ is a bitmask of 'AccelerationStructureCreateFlagBitsKHR'
+    -- specifying additional creation parameters of the acceleration structure.
+    createFlags :: AccelerationStructureCreateFlagsKHR
+  , -- | @buffer@ is the buffer on which the acceleration structure will be
+    -- stored.
+    buffer :: Buffer
+  , -- | @offset@ is an offset in bytes from the base address of the buffer at
+    -- which the acceleration structure will be stored, and /must/ be a
+    -- multiple of @256@.
+    offset :: DeviceSize
+  , -- | @size@ is the size required for the acceleration structure.
+    size :: DeviceSize
+  , -- | @type@ is a 'AccelerationStructureTypeKHR' value specifying the type of
+    -- acceleration structure that will be created.
+    type' :: AccelerationStructureTypeKHR
+  , -- | @deviceAddress@ is the device address requested for the acceleration
+    -- structure, obtained from 'getAccelerationStructureDeviceAddressKHR', if
+    -- the
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-accelerationStructureCaptureReplay accelerationStructureCaptureReplay>
+    -- feature is being used. If @deviceAddress@ is zero, no specific address
+    -- is requested.
+    deviceAddress :: DeviceAddress
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (AccelerationStructureCreateInfoKHR (es :: [Type]))
+#endif
+deriving instance Show (Chain es) => Show (AccelerationStructureCreateInfoKHR es)
+
+instance Extensible AccelerationStructureCreateInfoKHR where
+  extensibleTypeName = "AccelerationStructureCreateInfoKHR"
+  setNext AccelerationStructureCreateInfoKHR{..} next' = AccelerationStructureCreateInfoKHR{next = next', ..}
+  getNext AccelerationStructureCreateInfoKHR{..} = next
+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends AccelerationStructureCreateInfoKHR e => b) -> Maybe b
+  extends _ f
+    | Just Refl <- eqT @e @AccelerationStructureMotionInfoNV = Just f
+    | Just Refl <- eqT @e @OpaqueCaptureDescriptorDataCreateInfoEXT = Just f
+    | otherwise = Nothing
+
+instance ( Extendss AccelerationStructureCreateInfoKHR es
+         , PokeChain es ) => ToCStruct (AccelerationStructureCreateInfoKHR es) where
+  withCStruct x f = allocaBytes 64 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p AccelerationStructureCreateInfoKHR{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR)
+    pNext'' <- fmap castPtr . ContT $ withChain (next)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
+    lift $ poke ((p `plusPtr` 16 :: Ptr AccelerationStructureCreateFlagsKHR)) (createFlags)
+    lift $ poke ((p `plusPtr` 24 :: Ptr Buffer)) (buffer)
+    lift $ poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (offset)
+    lift $ poke ((p `plusPtr` 40 :: Ptr DeviceSize)) (size)
+    lift $ poke ((p `plusPtr` 48 :: Ptr AccelerationStructureTypeKHR)) (type')
+    lift $ poke ((p `plusPtr` 56 :: Ptr DeviceAddress)) (deviceAddress)
+    lift $ f
+  cStructSize = 64
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR)
+    pNext' <- fmap castPtr . ContT $ withZeroChain @es
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
+    lift $ poke ((p `plusPtr` 24 :: Ptr Buffer)) (zero)
+    lift $ poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (zero)
+    lift $ poke ((p `plusPtr` 40 :: Ptr DeviceSize)) (zero)
+    lift $ poke ((p `plusPtr` 48 :: Ptr AccelerationStructureTypeKHR)) (zero)
+    lift $ f
+
+instance ( Extendss AccelerationStructureCreateInfoKHR es
+         , PeekChain es ) => FromCStruct (AccelerationStructureCreateInfoKHR es) where
+  peekCStruct p = do
+    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
+    next <- peekChain (castPtr pNext)
+    createFlags <- peek @AccelerationStructureCreateFlagsKHR ((p `plusPtr` 16 :: Ptr AccelerationStructureCreateFlagsKHR))
+    buffer <- peek @Buffer ((p `plusPtr` 24 :: Ptr Buffer))
+    offset <- peek @DeviceSize ((p `plusPtr` 32 :: Ptr DeviceSize))
+    size <- peek @DeviceSize ((p `plusPtr` 40 :: Ptr DeviceSize))
+    type' <- peek @AccelerationStructureTypeKHR ((p `plusPtr` 48 :: Ptr AccelerationStructureTypeKHR))
+    deviceAddress <- peek @DeviceAddress ((p `plusPtr` 56 :: Ptr DeviceAddress))
+    pure $ AccelerationStructureCreateInfoKHR
+             next createFlags buffer offset size type' deviceAddress
+
+instance es ~ '[] => Zero (AccelerationStructureCreateInfoKHR es) where
+  zero = AccelerationStructureCreateInfoKHR
+           ()
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkAabbPositionsKHR - Structure specifying two opposing corners of an
+-- axis-aligned bounding box
+--
+-- == Valid Usage
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>
+data AabbPositionsKHR = AabbPositionsKHR
+  { -- | @minX@ is the x position of one opposing corner of a bounding box.
+    --
+    -- #VUID-VkAabbPositionsKHR-minX-03546# @minX@ /must/ be less than or equal
+    -- to @maxX@
+    minX :: Float
+  , -- | @minY@ is the y position of one opposing corner of a bounding box.
+    --
+    -- #VUID-VkAabbPositionsKHR-minY-03547# @minY@ /must/ be less than or equal
+    -- to @maxY@
+    minY :: Float
+  , -- | @minZ@ is the z position of one opposing corner of a bounding box.
+    --
+    -- #VUID-VkAabbPositionsKHR-minZ-03548# @minZ@ /must/ be less than or equal
+    -- to @maxZ@
+    minZ :: Float
+  , -- | @maxX@ is the x position of the other opposing corner of a bounding box.
+    maxX :: Float
+  , -- | @maxY@ is the y position of the other opposing corner of a bounding box.
+    maxY :: Float
+  , -- | @maxZ@ is the z position of the other opposing corner of a bounding box.
+    maxZ :: Float
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (AabbPositionsKHR)
+#endif
+deriving instance Show AabbPositionsKHR
+
+instance ToCStruct AabbPositionsKHR where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p AabbPositionsKHR{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr CFloat)) (CFloat (minX))
+    poke ((p `plusPtr` 4 :: Ptr CFloat)) (CFloat (minY))
+    poke ((p `plusPtr` 8 :: Ptr CFloat)) (CFloat (minZ))
+    poke ((p `plusPtr` 12 :: Ptr CFloat)) (CFloat (maxX))
+    poke ((p `plusPtr` 16 :: Ptr CFloat)) (CFloat (maxY))
+    poke ((p `plusPtr` 20 :: Ptr CFloat)) (CFloat (maxZ))
+    f
+  cStructSize = 24
+  cStructAlignment = 4
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr CFloat)) (CFloat (zero))
+    poke ((p `plusPtr` 4 :: Ptr CFloat)) (CFloat (zero))
+    poke ((p `plusPtr` 8 :: Ptr CFloat)) (CFloat (zero))
+    poke ((p `plusPtr` 12 :: Ptr CFloat)) (CFloat (zero))
+    poke ((p `plusPtr` 16 :: Ptr CFloat)) (CFloat (zero))
+    poke ((p `plusPtr` 20 :: Ptr CFloat)) (CFloat (zero))
+    f
+
+instance FromCStruct AabbPositionsKHR where
+  peekCStruct p = do
+    minX <- peek @CFloat ((p `plusPtr` 0 :: Ptr CFloat))
+    minY <- peek @CFloat ((p `plusPtr` 4 :: Ptr CFloat))
+    minZ <- peek @CFloat ((p `plusPtr` 8 :: Ptr CFloat))
+    maxX <- peek @CFloat ((p `plusPtr` 12 :: Ptr CFloat))
+    maxY <- peek @CFloat ((p `plusPtr` 16 :: Ptr CFloat))
+    maxZ <- peek @CFloat ((p `plusPtr` 20 :: Ptr CFloat))
+    pure $ AabbPositionsKHR
+             (coerce @CFloat @Float minX)
+             (coerce @CFloat @Float minY)
+             (coerce @CFloat @Float minZ)
+             (coerce @CFloat @Float maxX)
+             (coerce @CFloat @Float maxY)
+             (coerce @CFloat @Float maxZ)
+
+instance Storable AabbPositionsKHR where
+  sizeOf ~_ = 24
+  alignment ~_ = 4
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero AabbPositionsKHR where
+  zero = AabbPositionsKHR
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkTransformMatrixKHR - Structure specifying a 3x4 affine transformation
+-- matrix
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkTransformMatrixKHR-matrix-03799# The first three columns of
+--     @matrix@ /must/ define an invertible 3x3 matrix
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>,
+-- 'AccelerationStructureInstanceKHR',
+-- 'Vulkan.Extensions.VK_NV_ray_tracing_motion_blur.AccelerationStructureMatrixMotionInstanceNV',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPartitionedAccelerationStructureWriteInstanceDataNV VkPartitionedAccelerationStructureWriteInstanceDataNV>
+data TransformMatrixKHR = TransformMatrixKHR
+  { -- No documentation found for Nested "VkTransformMatrixKHR" "matrixRow0"
+    matrixRow0 :: (Float, Float, Float, Float)
+  , -- No documentation found for Nested "VkTransformMatrixKHR" "matrixRow1"
+    matrixRow1 :: (Float, Float, Float, Float)
+  , -- No documentation found for Nested "VkTransformMatrixKHR" "matrixRow2"
+    matrixRow2 :: (Float, Float, Float, Float)
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (TransformMatrixKHR)
+#endif
+deriving instance Show TransformMatrixKHR
+
+instance ToCStruct TransformMatrixKHR where
+  withCStruct x f = allocaBytes 48 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p TransformMatrixKHR{..} f = do
+    let pMatrixRow0' = lowerArrayPtr ((p `plusPtr` 0 :: Ptr (FixedArray 4 CFloat)))
+    case (matrixRow0) of
+      (e0, e1, e2, e3) -> do
+        poke (pMatrixRow0' :: Ptr CFloat) (CFloat (e0))
+        poke (pMatrixRow0' `plusPtr` 4 :: Ptr CFloat) (CFloat (e1))
+        poke (pMatrixRow0' `plusPtr` 8 :: Ptr CFloat) (CFloat (e2))
+        poke (pMatrixRow0' `plusPtr` 12 :: Ptr CFloat) (CFloat (e3))
+    let pMatrixRow1' = lowerArrayPtr ((p `plusPtr` 16 :: Ptr (FixedArray 4 CFloat)))
+    case (matrixRow1) of
+      (e0, e1, e2, e3) -> do
+        poke (pMatrixRow1' :: Ptr CFloat) (CFloat (e0))
+        poke (pMatrixRow1' `plusPtr` 4 :: Ptr CFloat) (CFloat (e1))
+        poke (pMatrixRow1' `plusPtr` 8 :: Ptr CFloat) (CFloat (e2))
+        poke (pMatrixRow1' `plusPtr` 12 :: Ptr CFloat) (CFloat (e3))
+    let pMatrixRow2' = lowerArrayPtr ((p `plusPtr` 32 :: Ptr (FixedArray 4 CFloat)))
+    case (matrixRow2) of
+      (e0, e1, e2, e3) -> do
+        poke (pMatrixRow2' :: Ptr CFloat) (CFloat (e0))
+        poke (pMatrixRow2' `plusPtr` 4 :: Ptr CFloat) (CFloat (e1))
+        poke (pMatrixRow2' `plusPtr` 8 :: Ptr CFloat) (CFloat (e2))
+        poke (pMatrixRow2' `plusPtr` 12 :: Ptr CFloat) (CFloat (e3))
+    f
+  cStructSize = 48
+  cStructAlignment = 4
+  pokeZeroCStruct p f = do
+    poke (p `plusPtr` 0) (CFloat 1)
+    poke (p `plusPtr` 20) (CFloat 1)
+    poke (p `plusPtr` 40) (CFloat 1)
+    f
+
+instance FromCStruct TransformMatrixKHR where
+  peekCStruct p = do
+    let pmatrixRow0 = lowerArrayPtr @CFloat ((p `plusPtr` 0 :: Ptr (FixedArray 4 CFloat)))
+    matrixRow00 <- peek @CFloat ((pmatrixRow0 `advancePtrBytes` 0 :: Ptr CFloat))
+    matrixRow01 <- peek @CFloat ((pmatrixRow0 `advancePtrBytes` 4 :: Ptr CFloat))
+    matrixRow02 <- peek @CFloat ((pmatrixRow0 `advancePtrBytes` 8 :: Ptr CFloat))
+    matrixRow03 <- peek @CFloat ((pmatrixRow0 `advancePtrBytes` 12 :: Ptr CFloat))
+    let pmatrixRow1 = lowerArrayPtr @CFloat ((p `plusPtr` 16 :: Ptr (FixedArray 4 CFloat)))
+    matrixRow10 <- peek @CFloat ((pmatrixRow1 `advancePtrBytes` 0 :: Ptr CFloat))
+    matrixRow11 <- peek @CFloat ((pmatrixRow1 `advancePtrBytes` 4 :: Ptr CFloat))
+    matrixRow12 <- peek @CFloat ((pmatrixRow1 `advancePtrBytes` 8 :: Ptr CFloat))
+    matrixRow13 <- peek @CFloat ((pmatrixRow1 `advancePtrBytes` 12 :: Ptr CFloat))
+    let pmatrixRow2 = lowerArrayPtr @CFloat ((p `plusPtr` 32 :: Ptr (FixedArray 4 CFloat)))
+    matrixRow20 <- peek @CFloat ((pmatrixRow2 `advancePtrBytes` 0 :: Ptr CFloat))
+    matrixRow21 <- peek @CFloat ((pmatrixRow2 `advancePtrBytes` 4 :: Ptr CFloat))
+    matrixRow22 <- peek @CFloat ((pmatrixRow2 `advancePtrBytes` 8 :: Ptr CFloat))
+    matrixRow23 <- peek @CFloat ((pmatrixRow2 `advancePtrBytes` 12 :: Ptr CFloat))
+    pure $ TransformMatrixKHR
+             (( (coerce @CFloat @Float matrixRow00)
+              , (coerce @CFloat @Float matrixRow01)
+              , (coerce @CFloat @Float matrixRow02)
+              , (coerce @CFloat @Float matrixRow03) ))
+             (( (coerce @CFloat @Float matrixRow10)
+              , (coerce @CFloat @Float matrixRow11)
+              , (coerce @CFloat @Float matrixRow12)
+              , (coerce @CFloat @Float matrixRow13) ))
+             (( (coerce @CFloat @Float matrixRow20)
+              , (coerce @CFloat @Float matrixRow21)
+              , (coerce @CFloat @Float matrixRow22)
+              , (coerce @CFloat @Float matrixRow23) ))
+
+instance Storable TransformMatrixKHR where
+  sizeOf ~_ = 48
+  alignment ~_ = 4
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+-- | The Identity Matrix
+instance Zero TransformMatrixKHR where
+ zero = TransformMatrixKHR
+          (1,0,0,0)
+          (0,1,0,0)
+          (0,0,1,0)
+
+
+-- | VkAccelerationStructureInstanceKHR - Structure specifying a single
+-- acceleration structure instance for building into an acceleration
+-- structure geometry
+--
+-- = Description
+--
+-- The C language specification does not define the ordering of bit-fields,
+-- but in practice, this structure produces the correct layout with
+-- existing compilers. The intended bit pattern is for the following:
+--
+-- -   @instanceCustomIndex@ and @mask@ occupy the same memory as if a
+--     single @uint32_t@ was specified in their place
+--
+--     -   @instanceCustomIndex@ occupies the 24 least significant bits of
+--         that memory
+--
+--     -   @mask@ occupies the 8 most significant bits of that memory
+--
+-- -   @instanceShaderBindingTableRecordOffset@ and @flags@ occupy the same
+--     memory as if a single @uint32_t@ was specified in their place
+--
+--     -   @instanceShaderBindingTableRecordOffset@ occupies the 24 least
+--         significant bits of that memory
+--
+--     -   @flags@ occupies the 8 most significant bits of that memory
+--
+-- If a compiler produces code that diverges from that pattern,
+-- applications /must/ employ another method to set values according to the
+-- correct bit pattern.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkAccelerationStructureInstanceKHR-micromap-11580# If @flags@
+--     includes 'GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_BIT_KHR'
+--     or 'GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_BIT_KHR', the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-micromap ::micromap>
+--     or
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-micromapEXT ::micromap>
+--     feature /must/ be enabled
+--
+-- -   #VUID-VkAccelerationStructureInstanceKHR-flags-11581# If @flags@
+--     includes 'GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_BIT_KHR', the
+--     @flags@ used to build the acceleration structure referenced by
+--     @accelerationStructureReference@ /must/ have included
+--     'BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_BIT_KHR'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkAccelerationStructureInstanceKHR-flags-parameter# @flags@
+--     /must/ be a valid combination of 'GeometryInstanceFlagBitsKHR'
+--     values
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>,
+-- 'Vulkan.Extensions.VK_NV_ray_tracing_motion_blur.AccelerationStructureMotionInstanceDataNV',
+-- 'GeometryInstanceFlagsKHR', 'TransformMatrixKHR'
+data AccelerationStructureInstanceKHR = AccelerationStructureInstanceKHR
+  { -- | @transform@ is a 'TransformMatrixKHR' structure describing a
+    -- transformation to be applied to the acceleration structure.
+    transform :: TransformMatrixKHR
+  , -- | @instanceCustomIndex@ is a 24-bit application-specified index value
+    -- accessible to ray shaders in the @InstanceCustomIndexKHR@ built-in.
+    instanceCustomIndex :: Word32
+  , -- | @mask@ is an 8-bit visibility mask for the geometry. The instance /may/
+    -- only be hit if @Cull Mask & instance.mask != 0@
+    mask :: Word32
+  , -- | @instanceShaderBindingTableRecordOffset@ is a 24-bit offset used in
+    -- calculating the hit shader binding table index.
+    instanceShaderBindingTableRecordOffset :: Word32
+  , -- | @flags@ is an 8-bit mask of 'GeometryInstanceFlagBitsKHR' values to
+    -- apply to this instance.
+    flags :: GeometryInstanceFlagsKHR
+  , -- | @accelerationStructureReference@ is either :
+    --
+    -- -   a device address containing the value obtained from
+    --     'getAccelerationStructureDeviceAddressKHR' or
+    --     'Vulkan.Extensions.VK_NV_ray_tracing.getAccelerationStructureHandleNV'
+    --     for a bottom level acceleration structure (used by device operations
+    --     which reference acceleration structures) or,
+    --
+    -- -   a device address containing a bottom level cluster acceleration
+    --     structure built using
+    --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBuildClusterAccelerationStructureIndirectNV vkCmdBuildClusterAccelerationStructureIndirectNV>
+    --
+    -- -   a 'Vulkan.Extensions.Handles.AccelerationStructureKHR' object (used
+    --     by host operations which reference acceleration structures).
+    accelerationStructureReference :: Word64
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (AccelerationStructureInstanceKHR)
+#endif
+deriving instance Show AccelerationStructureInstanceKHR
+
+instance ToCStruct AccelerationStructureInstanceKHR where
+  withCStruct x f = allocaBytes 64 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p AccelerationStructureInstanceKHR{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr TransformMatrixKHR)) (transform)
+    poke ((p `plusPtr` 48 :: Ptr Word32)) (((coerce @_ @Word32 (mask)) `shiftL` 24) .|. (instanceCustomIndex))
+    poke ((p `plusPtr` 52 :: Ptr Word32)) (((coerce @_ @Word32 (flags)) `shiftL` 24) .|. (instanceShaderBindingTableRecordOffset))
+    poke ((p `plusPtr` 56 :: Ptr Word64)) (accelerationStructureReference)
+    f
+  cStructSize = 64
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr TransformMatrixKHR)) (zero)
+    poke ((p `plusPtr` 56 :: Ptr Word64)) (zero)
+    f
+
+instance FromCStruct AccelerationStructureInstanceKHR where
+  peekCStruct p = do
+    transform <- peekCStruct @TransformMatrixKHR ((p `plusPtr` 0 :: Ptr TransformMatrixKHR))
+    instanceCustomIndex <- peek @Word32 ((p `plusPtr` 48 :: Ptr Word32))
+    let instanceCustomIndex' = ((instanceCustomIndex .&. coerce @Word32 0xffffff))
+    mask <- peek @Word32 ((p `plusPtr` 48 :: Ptr Word32))
+    let mask' = ((((mask `shiftR` 24)) .&. coerce @Word32 0xff))
+    instanceShaderBindingTableRecordOffset <- peek @Word32 ((p `plusPtr` 52 :: Ptr Word32))
+    let instanceShaderBindingTableRecordOffset' = ((instanceShaderBindingTableRecordOffset .&. coerce @Word32 0xffffff))
+    flags <- peek @GeometryInstanceFlagsKHR ((p `plusPtr` 52 :: Ptr GeometryInstanceFlagsKHR))
+    let flags' = ((((flags `shiftR` 24)) .&. coerce @Word32 0xff))
+    accelerationStructureReference <- peek @Word64 ((p `plusPtr` 56 :: Ptr Word64))
+    pure $ AccelerationStructureInstanceKHR
+             transform
+             instanceCustomIndex'
+             mask'
+             instanceShaderBindingTableRecordOffset'
+             flags'
+             accelerationStructureReference
+
+instance Storable AccelerationStructureInstanceKHR where
+  sizeOf ~_ = 64
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero AccelerationStructureInstanceKHR where
+  zero = AccelerationStructureInstanceKHR
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkAccelerationStructureDeviceAddressInfoKHR - Structure specifying the
+-- acceleration structure to query an address for
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
+-- 'Vulkan.Extensions.Handles.AccelerationStructureKHR',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'getAccelerationStructureDeviceAddressKHR'
+data AccelerationStructureDeviceAddressInfoKHR = AccelerationStructureDeviceAddressInfoKHR
+  { -- | @accelerationStructure@ specifies the acceleration structure whose
+    -- address is being queried.
+    --
+    -- #VUID-VkAccelerationStructureDeviceAddressInfoKHR-accelerationStructure-parameter#
+    -- @accelerationStructure@ /must/ be a valid
+    -- 'Vulkan.Extensions.Handles.AccelerationStructureKHR' handle
+    accelerationStructure :: AccelerationStructureKHR }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (AccelerationStructureDeviceAddressInfoKHR)
+#endif
+deriving instance Show AccelerationStructureDeviceAddressInfoKHR
+
+instance ToCStruct AccelerationStructureDeviceAddressInfoKHR where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p AccelerationStructureDeviceAddressInfoKHR{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr AccelerationStructureKHR)) (accelerationStructure)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr AccelerationStructureKHR)) (zero)
+    f
+
+instance FromCStruct AccelerationStructureDeviceAddressInfoKHR where
+  peekCStruct p = do
+    accelerationStructure <- peek @AccelerationStructureKHR ((p `plusPtr` 16 :: Ptr AccelerationStructureKHR))
+    pure $ AccelerationStructureDeviceAddressInfoKHR
+             accelerationStructure
+
+instance Storable AccelerationStructureDeviceAddressInfoKHR where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero AccelerationStructureDeviceAddressInfoKHR where
+  zero = AccelerationStructureDeviceAddressInfoKHR
+           zero
+
+
+-- | VkAccelerationStructureVersionInfoKHR - Acceleration structure version
+-- information
+--
+-- = Description
+--
+-- @pVersionData@ is a /pointer/ to an array of
+-- 2×'Vulkan.Core10.APIConstants.UUID_SIZE' @uint8_t@ values instead of two
+-- 'Vulkan.Core10.APIConstants.UUID_SIZE' arrays as the expected use case
+-- for this member is to be pointed at the header of a previously
+-- serialized acceleration structure (via
+-- 'cmdCopyAccelerationStructureToMemoryKHR' or
+-- 'copyAccelerationStructureToMemoryKHR') that is loaded in memory. Using
+-- arrays would necessitate extra memory copies of the UUIDs.
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'getDeviceAccelerationStructureCompatibilityKHR'
+data AccelerationStructureVersionInfoKHR = AccelerationStructureVersionInfoKHR
+  { -- | @pVersionData@ is a pointer to the version header of an acceleration
+    -- structure as defined in 'cmdCopyAccelerationStructureToMemoryKHR'
+    --
+    -- #VUID-VkAccelerationStructureVersionInfoKHR-pVersionData-parameter#
+    -- @pVersionData@ /must/ be a valid pointer to an array of
+    -- \(2 \times \mathtt{VK\_UUID\_SIZE}\) @uint8_t@ values
+    versionData :: ByteString }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (AccelerationStructureVersionInfoKHR)
+#endif
+deriving instance Show AccelerationStructureVersionInfoKHR
+
+instance ToCStruct AccelerationStructureVersionInfoKHR where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p AccelerationStructureVersionInfoKHR{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ unless (Data.ByteString.length (versionData) == 2 * UUID_SIZE) $
+      throwIO $ IOError Nothing InvalidArgument "" "VkAccelerationStructureVersionInfoKHR::versionData must be 2*VK_UUID_SIZE bytes" Nothing Nothing
+    versionData' <- fmap (castPtr @CChar @Word8) . ContT $ unsafeUseAsCString (versionData)
+    lift $ poke ((p `plusPtr` 16 :: Ptr (Ptr Word8))) versionData'
+    lift $ f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    f
+
+instance FromCStruct AccelerationStructureVersionInfoKHR where
+  peekCStruct p = do
+    versionData <- peek @(Ptr Word8) ((p `plusPtr` 16 :: Ptr (Ptr Word8)))
+    versionData' <- packCStringLen ( castPtr @Word8 @CChar versionData
+                                   , 2 * UUID_SIZE )
+    pure $ AccelerationStructureVersionInfoKHR
+             versionData'
+
+instance Zero AccelerationStructureVersionInfoKHR where
+  zero = AccelerationStructureVersionInfoKHR
+           mempty
+
+
+-- | VkCopyAccelerationStructureInfoKHR - Parameters for copying an
+-- acceleration structure
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkCopyAccelerationStructureInfoKHR-mode-03410# @mode@ /must/
+--     be 'COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR' or
+--     'COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR'
+--
+-- -   #VUID-VkCopyAccelerationStructureInfoKHR-src-03411# If @mode@ is
+--     'COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR', @src@ /must/ have
+--     been constructed with
+--     'BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR' in the build
+--
+-- -   #VUID-VkCopyAccelerationStructureInfoKHR-buffer-03718# The range of
+--     @src@ accessed by this command /must/ be fully backed by physical
+--     memory
+--
+-- -   #VUID-VkCopyAccelerationStructureInfoKHR-buffer-03719# The range of
+--     @dst@ accessed by this command /must/ be fully backed by physical
+--     memory
+--
+-- -   #VUID-VkCopyAccelerationStructureInfoKHR-dst-07791# The range of
+--     memory backing @dst@ that is accessed by this command /must/ not
+--     overlap the memory backing @src@ that is accessed by this command
+--
+-- -   #VUID-VkCopyAccelerationStructureInfoKHR-mode-12418# If @mode@ is
+--     'COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR', the memory pointed to
+--     by @dst@ /must/ be at least as large as the size of @src@, as
+--     reported by 'writeAccelerationStructuresPropertiesKHR' or
+--     'cmdWriteAccelerationStructuresPropertiesKHR' with a query type of
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_SIZE_KHR'
+--
+-- -   #VUID-VkCopyAccelerationStructureInfoKHR-mode-12419# If @mode@ is
+--     'COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR', the memory pointed
+--     to by @dst@ /must/ be at least as large as the compacted size of
+--     @src@, as reported by 'writeAccelerationStructuresPropertiesKHR' or
+--     'cmdWriteAccelerationStructuresPropertiesKHR' with a query type of
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkCopyAccelerationStructureInfoKHR-sType-sType# @sType@ /must/
+--     be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR'
+--
+-- -   #VUID-VkCopyAccelerationStructureInfoKHR-pNext-pNext# @pNext@ /must/
+--     be @NULL@
+--
+-- -   #VUID-VkCopyAccelerationStructureInfoKHR-src-parameter# @src@ /must/
+--     be a valid 'Vulkan.Extensions.Handles.AccelerationStructureKHR'
+--     handle
+--
+-- -   #VUID-VkCopyAccelerationStructureInfoKHR-dst-parameter# @dst@ /must/
+--     be a valid 'Vulkan.Extensions.Handles.AccelerationStructureKHR'
+--     handle
+--
+-- -   #VUID-VkCopyAccelerationStructureInfoKHR-mode-parameter# @mode@
+--     /must/ be a valid 'CopyAccelerationStructureModeKHR' value
+--
+-- -   #VUID-VkCopyAccelerationStructureInfoKHR-commonparent# Both of
+--     @dst@, and @src@ /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_acceleration_structure VK_KHR_acceleration_structure>,
+-- 'Vulkan.Extensions.Handles.AccelerationStructureKHR',
+-- 'CopyAccelerationStructureModeKHR',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'cmdCopyAccelerationStructureKHR', 'copyAccelerationStructureKHR'
+data CopyAccelerationStructureInfoKHR = CopyAccelerationStructureInfoKHR
+  { -- | @src@ is the source acceleration structure for the copy.
+    src :: AccelerationStructureKHR
+  , -- | @dst@ is the target acceleration structure for the copy.
+    dst :: AccelerationStructureKHR
+  , -- | @mode@ is a 'CopyAccelerationStructureModeKHR' value specifying
+    -- additional operations to perform during the copy.
+    mode :: CopyAccelerationStructureModeKHR
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (CopyAccelerationStructureInfoKHR)
+#endif
+deriving instance Show CopyAccelerationStructureInfoKHR
+
+instance ToCStruct CopyAccelerationStructureInfoKHR where
+  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p CopyAccelerationStructureInfoKHR{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr AccelerationStructureKHR)) (src)
+    poke ((p `plusPtr` 24 :: Ptr AccelerationStructureKHR)) (dst)
+    poke ((p `plusPtr` 32 :: Ptr CopyAccelerationStructureModeKHR)) (mode)
+    f
+  cStructSize = 40
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr AccelerationStructureKHR)) (zero)
+    poke ((p `plusPtr` 24 :: Ptr AccelerationStructureKHR)) (zero)
+    poke ((p `plusPtr` 32 :: Ptr CopyAccelerationStructureModeKHR)) (zero)
+    f
+
+instance FromCStruct CopyAccelerationStructureInfoKHR where
+  peekCStruct p = do
+    src <- peek @AccelerationStructureKHR ((p `plusPtr` 16 :: Ptr AccelerationStructureKHR))
+    dst <- peek @AccelerationStructureKHR ((p `plusPtr` 24 :: Ptr AccelerationStructureKHR))
+    mode <- peek @CopyAccelerationStructureModeKHR ((p `plusPtr` 32 :: Ptr CopyAccelerationStructureModeKHR))
+    pure $ CopyAccelerationStructureInfoKHR
+             src dst mode
+
+instance Storable CopyAccelerationStructureInfoKHR where
+  sizeOf ~_ = 40
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero CopyAccelerationStructureInfoKHR where
+  zero = CopyAccelerationStructureInfoKHR
+           zero
+           zero
+           zero
+
+
+-- | VkCopyAccelerationStructureToMemoryInfoKHR - Parameters for serializing
+-- an acceleration structure
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkCopyAccelerationStructureToMemoryInfoKHR-src-04959# The
+--     source acceleration structure @src@ /must/ have been constructed
+--     prior to the execution of this command
+--
+-- -   #VUID-VkCopyAccelerationStructureToMemoryInfoKHR-src-11582# If the
+--     source acceleration structure @src@ was constructed through
+--     deserialization, all micromap arrays the acceleration structure
+--     references that were not replaced by an acceleration structure
+--     update command /must/ have been deserialized using the serialized
+--     data of the corresponding micromaps used to originally build the
+--     acceleration structure prior to the execution of this command
+--
+-- -   #VUID-VkCopyAccelerationStructureToMemoryInfoKHR-dst-03561# The
+--     memory pointed to by @dst@ /must/ be at least as large as the
+--     serialization size of @src@, as reported by
+--     'writeAccelerationStructuresPropertiesKHR' or
+--     'cmdWriteAccelerationStructuresPropertiesKHR' with a query type of
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR'
+--
+-- -   #VUID-VkCopyAccelerationStructureToMemoryInfoKHR-mode-03412# @mode@
+--     /must/ be 'COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR'
+--
+-- -   #VUID-VkCopyAccelerationStructureToMemoryInfoKHR-mode-11714# The
+--     range of @src@ accessed by this command /must/ be fully backed by
+--     physical memory
+--
+-- -   #VUID-VkCopyAccelerationStructureToMemoryInfoKHR-mode-11715# The
+--     range of @dst@ accessed by this command /must/ be fully backed by
+--     physical memory
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkCopyAccelerationStructureToMemoryInfoKHR-sType-sType#
+--     @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR'
+--
+-- -   #VUID-VkCopyAccelerationStructureToMemoryInfoKHR-pNext-pNext#
+--     @pNext@ /must/ be @NULL@
+--
+-- -   #VUID-VkCopyAccelerationStructureToMemoryInfoKHR-src-parameter#
+--     @src@ /must/ be a valid
+--     'Vulkan.Extensions.Handles.AccelerationStructureKHR' handle
+--
+-- -   #VUID-VkCopyAccelerationStructureToMemoryInfoKHR-mode-parameter#
+--     @mode@ /must/ be a valid 'CopyAccelerationStructureModeKHR' value
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
+-- 'Vulkan.Extensions.Handles.AccelerationStructureKHR',
+-- 'CopyAccelerationStructureModeKHR', 'DeviceOrHostAddressKHR',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'cmdCopyAccelerationStructureToMemoryKHR',
+-- 'copyAccelerationStructureToMemoryKHR'
+data CopyAccelerationStructureToMemoryInfoKHR = CopyAccelerationStructureToMemoryInfoKHR
+  { -- | @src@ is the source acceleration structure for the copy.
+    src :: AccelerationStructureKHR
+  , -- | @dst@ is the device or host address of memory which is the target for
+    -- the copy.
+    dst :: DeviceOrHostAddressKHR
+  , -- | @mode@ is a 'CopyAccelerationStructureModeKHR' value specifying
+    -- additional operations to perform during the copy.
+    mode :: CopyAccelerationStructureModeKHR
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (CopyAccelerationStructureToMemoryInfoKHR)
+#endif
+deriving instance Show CopyAccelerationStructureToMemoryInfoKHR
+
+instance ToCStruct CopyAccelerationStructureToMemoryInfoKHR where
+  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p CopyAccelerationStructureToMemoryInfoKHR{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr AccelerationStructureKHR)) (src)
+    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr DeviceOrHostAddressKHR)) (dst) . ($ ())
+    lift $ poke ((p `plusPtr` 32 :: Ptr CopyAccelerationStructureModeKHR)) (mode)
+    lift $ f
+  cStructSize = 40
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr AccelerationStructureKHR)) (zero)
+    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr DeviceOrHostAddressKHR)) (zero) . ($ ())
+    lift $ poke ((p `plusPtr` 32 :: Ptr CopyAccelerationStructureModeKHR)) (zero)
+    lift $ f
+
+instance Zero CopyAccelerationStructureToMemoryInfoKHR where
+  zero = CopyAccelerationStructureToMemoryInfoKHR
+           zero
+           zero
+           zero
+
+
+-- | VkCopyMemoryToAccelerationStructureInfoKHR - Parameters for
+-- deserializing an acceleration structure
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkCopyMemoryToAccelerationStructureInfoKHR-src-04960# The
+--     source memory pointed to by @src@ /must/ contain data previously
+--     serialized using 'cmdCopyAccelerationStructureToMemoryKHR',
+--     potentially modified to relocate acceleration structure references
+--     as described in that command
+--
+-- -   #VUID-VkCopyMemoryToAccelerationStructureInfoKHR-mode-03413# @mode@
+--     /must/ be 'COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR'
+--
+-- -   #VUID-VkCopyMemoryToAccelerationStructureInfoKHR-pInfo-03414# The
+--     data in @src@ /must/ have a format compatible with the destination
+--     physical device as returned by
+--     'getDeviceAccelerationStructureCompatibilityKHR'
+--
+-- -   #VUID-VkCopyMemoryToAccelerationStructureInfoKHR-dst-03746# @dst@
+--     /must/ have been created with a @size@ greater than or equal to that
+--     used to serialize the data in @src@
+--
+-- -   #VUID-VkCopyMemoryToAccelerationStructureInfoKHR-dst-11716# The
+--     range of @src@ accessed by this command /must/ be fully backed by
+--     physical memory
+--
+-- -   #VUID-VkCopyMemoryToAccelerationStructureInfoKHR-dst-11717# The
+--     range of @dst@ accessed by this command /must/ be fully backed by
+--     physical memory
+--
+-- -   #VUID-VkCopyMemoryToAccelerationStructureInfoKHR-src-11583# If the
+--     serialized acceleration structure in @src@ is bottom-level, each
+--     block in the header /must/ have a type that corresponds to a valid
+--     value in
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureSerializedBlockTypeKHR'
+--
+-- -   #VUID-VkCopyMemoryToAccelerationStructureInfoKHR-dst-11584# If the
+--     serialized acceleration structure in @src@ is bottom-level, and any
+--     block in the header has a type of
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.ACCELERATION_STRUCTURE_SERIALIZED_BLOCK_TYPE_OPACITY_MICROMAP_KHR'
+--     the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-micromap ::micromap>
+--     feature /must/ be enabled
+--
+-- -   #VUID-VkCopyMemoryToAccelerationStructureInfoKHR-dst-11585# If the
+--     serialized acceleration structure in @src@ is bottom-level, every
+--     device address in each block in the header with type
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.ACCELERATION_STRUCTURE_SERIALIZED_BLOCK_TYPE_OPACITY_MICROMAP_KHR'
+--     /must/ point to a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' that was retrieved by
+--     'Vulkan.Extensions.VK_KHR_buffer_device_address.getBufferDeviceAddressKHR'
+--     for the underlying buffer objects of
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#serialized-as-header compatible micromaps>
+--     constructed on the 'Vulkan.Core10.Handles.Device' when the command
+--     is executed
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkCopyMemoryToAccelerationStructureInfoKHR-sType-sType#
+--     @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR'
+--
+-- -   #VUID-VkCopyMemoryToAccelerationStructureInfoKHR-pNext-pNext#
+--     @pNext@ /must/ be @NULL@
+--
+-- -   #VUID-VkCopyMemoryToAccelerationStructureInfoKHR-dst-parameter#
+--     @dst@ /must/ be a valid
+--     'Vulkan.Extensions.Handles.AccelerationStructureKHR' handle
+--
+-- -   #VUID-VkCopyMemoryToAccelerationStructureInfoKHR-mode-parameter#
+--     @mode@ /must/ be a valid 'CopyAccelerationStructureModeKHR' value
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
+-- 'Vulkan.Extensions.Handles.AccelerationStructureKHR',
+-- 'CopyAccelerationStructureModeKHR', 'DeviceOrHostAddressConstKHR',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'cmdCopyMemoryToAccelerationStructureKHR',
+-- 'copyMemoryToAccelerationStructureKHR'
+data CopyMemoryToAccelerationStructureInfoKHR = CopyMemoryToAccelerationStructureInfoKHR
+  { -- | @src@ is the device or host address of memory containing the source data
+    -- for the copy.
+    src :: DeviceOrHostAddressConstKHR
+  , -- | @dst@ is the target acceleration structure for the copy.
+    dst :: AccelerationStructureKHR
+  , -- | @mode@ is a 'CopyAccelerationStructureModeKHR' value specifying
+    -- additional operations to perform during the copy.
+    mode :: CopyAccelerationStructureModeKHR
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (CopyMemoryToAccelerationStructureInfoKHR)
+#endif
+deriving instance Show CopyMemoryToAccelerationStructureInfoKHR
+
+instance ToCStruct CopyMemoryToAccelerationStructureInfoKHR where
+  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p CopyMemoryToAccelerationStructureInfoKHR{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr DeviceOrHostAddressConstKHR)) (src) . ($ ())
+    lift $ poke ((p `plusPtr` 24 :: Ptr AccelerationStructureKHR)) (dst)
+    lift $ poke ((p `plusPtr` 32 :: Ptr CopyAccelerationStructureModeKHR)) (mode)
+    lift $ f
+  cStructSize = 40
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr DeviceOrHostAddressConstKHR)) (zero) . ($ ())
+    lift $ poke ((p `plusPtr` 24 :: Ptr AccelerationStructureKHR)) (zero)
+    lift $ poke ((p `plusPtr` 32 :: Ptr CopyAccelerationStructureModeKHR)) (zero)
+    lift $ f
+
+instance Zero CopyMemoryToAccelerationStructureInfoKHR where
+  zero = CopyMemoryToAccelerationStructureInfoKHR
+           zero
+           zero
+           zero
+
+
+-- | VkAccelerationStructureBuildSizesInfoKHR - Structure specifying build
+-- sizes for an acceleration structure
+--
+-- = Description
+--
+-- Acceleration structure objects that represent micromaps /cannot/ be the
+-- target for update commands. Implementations /must/ set
+-- @updateScratchSize@ equal to @0@ if the @pBuildInfo->type@ is
+-- 'ACCELERATION_STRUCTURE_TYPE_OPACITY_MICROMAP_KHR'.
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'getAccelerationStructureBuildSizesKHR',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkGetClusterAccelerationStructureBuildSizesNV vkGetClusterAccelerationStructureBuildSizesNV>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkGetPartitionedAccelerationStructuresBuildSizesNV vkGetPartitionedAccelerationStructuresBuildSizesNV>
+data AccelerationStructureBuildSizesInfoKHR = AccelerationStructureBuildSizesInfoKHR
+  { -- | @accelerationStructureSize@ is the size in bytes required in a
+    -- 'Vulkan.Extensions.Handles.AccelerationStructureKHR' for a build or
+    -- update operation.
+    accelerationStructureSize :: DeviceSize
+  , -- | @updateScratchSize@ is the size in bytes required in a scratch buffer
+    -- for an update operation.
+    updateScratchSize :: DeviceSize
+  , -- | @buildScratchSize@ is the size in bytes required in a scratch buffer for
+    -- a build operation.
+    buildScratchSize :: DeviceSize
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (AccelerationStructureBuildSizesInfoKHR)
+#endif
+deriving instance Show AccelerationStructureBuildSizesInfoKHR
+
+instance ToCStruct AccelerationStructureBuildSizesInfoKHR where
+  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p AccelerationStructureBuildSizesInfoKHR{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (accelerationStructureSize)
+    poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (updateScratchSize)
+    poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (buildScratchSize)
+    f
+  cStructSize = 40
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_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 AccelerationStructureBuildSizesInfoKHR where
+  peekCStruct p = do
+    accelerationStructureSize <- peek @DeviceSize ((p `plusPtr` 16 :: Ptr DeviceSize))
+    updateScratchSize <- peek @DeviceSize ((p `plusPtr` 24 :: Ptr DeviceSize))
+    buildScratchSize <- peek @DeviceSize ((p `plusPtr` 32 :: Ptr DeviceSize))
+    pure $ AccelerationStructureBuildSizesInfoKHR
+             accelerationStructureSize updateScratchSize buildScratchSize
+
+instance Storable AccelerationStructureBuildSizesInfoKHR where
+  sizeOf ~_ = 40
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero AccelerationStructureBuildSizesInfoKHR where
+  zero = AccelerationStructureBuildSizesInfoKHR
+           zero
+           zero
+           zero
+
+
+data DeviceOrHostAddressKHR
+  = DeviceAddress DeviceAddress
+  | HostAddress (Ptr ())
+  deriving (Show)
+
+instance ToCStruct DeviceOrHostAddressKHR where
+  withCStruct x f = allocaBytes 8 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct :: Ptr DeviceOrHostAddressKHR -> DeviceOrHostAddressKHR -> IO a -> IO a
+  pokeCStruct p = (. const) . runContT .  \case
+    DeviceAddress v -> lift $ poke (castPtr @_ @DeviceAddress p) (v)
+    HostAddress v -> lift $ poke (castPtr @_ @(Ptr ()) p) (v)
+  pokeZeroCStruct :: Ptr DeviceOrHostAddressKHR -> IO b -> IO b
+  pokeZeroCStruct _ f = f
+  cStructSize = 8
+  cStructAlignment = 8
+
+instance Zero DeviceOrHostAddressKHR where
+  zero = DeviceAddress zero
+
+
+data DeviceOrHostAddressConstKHR
+  = DeviceAddressConst DeviceAddress
+  | HostAddressConst (Ptr ())
+  deriving (Show)
+
+instance ToCStruct DeviceOrHostAddressConstKHR where
+  withCStruct x f = allocaBytes 8 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct :: Ptr DeviceOrHostAddressConstKHR -> DeviceOrHostAddressConstKHR -> IO a -> IO a
+  pokeCStruct p = (. const) . runContT .  \case
+    DeviceAddressConst v -> lift $ poke (castPtr @_ @DeviceAddress p) (v)
+    HostAddressConst v -> lift $ poke (castPtr @_ @(Ptr ()) p) (v)
+  pokeZeroCStruct :: Ptr DeviceOrHostAddressConstKHR -> IO b -> IO b
+  pokeZeroCStruct _ f = f
+  cStructSize = 8
+  cStructAlignment = 8
+
+instance Zero DeviceOrHostAddressConstKHR where
+  zero = DeviceAddressConst zero
+
+
+data AccelerationStructureGeometryDataKHR
+  = Triangles (SomeStruct AccelerationStructureGeometryTrianglesDataKHR)
+  | Aabbs AccelerationStructureGeometryAabbsDataKHR
+  | Instances AccelerationStructureGeometryInstancesDataKHR
+  deriving (Show)
+
+instance ToCStruct AccelerationStructureGeometryDataKHR where
+  withCStruct x f = allocaBytes 64 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct :: Ptr AccelerationStructureGeometryDataKHR -> AccelerationStructureGeometryDataKHR -> IO a -> IO a
+  pokeCStruct p = (. const) . runContT .  \case
+    Triangles v -> ContT $ pokeSomeCStruct (forgetExtensions (castPtr @_ @(AccelerationStructureGeometryTrianglesDataKHR _) p)) (v) . ($ ())
+    Aabbs v -> ContT $ pokeCStruct (castPtr @_ @AccelerationStructureGeometryAabbsDataKHR p) (v) . ($ ())
+    Instances v -> ContT $ pokeCStruct (castPtr @_ @AccelerationStructureGeometryInstancesDataKHR p) (v) . ($ ())
+  pokeZeroCStruct :: Ptr AccelerationStructureGeometryDataKHR -> IO b -> IO b
+  pokeZeroCStruct _ f = f
+  cStructSize = 64
+  cStructAlignment = 8
+
+instance Zero AccelerationStructureGeometryDataKHR where
+  zero = Triangles (SomeStruct zero)
+
+
+type GeometryInstanceFlagsKHR = GeometryInstanceFlagBitsKHR
+
+-- | VkGeometryInstanceFlagBitsKHR - Instance flag bits
+--
+-- = Description
+--
+-- -   'GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR' disables
+--     face culling for this instance.
+--
+-- -   'GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR' specifies that the
+--     <https://registry.khronos.org/vulkan/specs/latest/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.
+--
+-- -   'GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR' causes this instance to act
+--     as though 'GEOMETRY_OPAQUE_BIT_KHR' were specified on all geometries
+--     referenced by this instance. This behavior /can/ be overridden by
+--     the SPIR-V @NoOpaqueKHR@ ray flag.
+--
+-- -   'GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR' causes this instance to
+--     act as though 'GEOMETRY_OPAQUE_BIT_KHR' were not specified on all
+--     geometries referenced by this instance. This behavior /can/ be
+--     overridden by the SPIR-V @OpaqueKHR@ ray flag.
+--
+-- -   'GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_BIT_KHR' forces
+--     the micromap format to 2 state mode as described in
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#ray-opacity-micromap traversal>.
+--
+-- -   'GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_BIT_KHR' disables any
+--     opacity micromaps referenced by acceleration structures referenced
+--     by this instance as described in
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#ray-opacity-micromap traversal>.
+--
+-- 'GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR' and
+-- 'GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR' /must/ not be used in the same
+-- flag.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>,
+-- 'GeometryInstanceFlagsKHR'
+newtype GeometryInstanceFlagBitsKHR = GeometryInstanceFlagBitsKHR Flags
+  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
+
+-- No documentation found for Nested "VkGeometryInstanceFlagBitsKHR" "VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR"
+pattern GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR = GeometryInstanceFlagBitsKHR 0x00000001
+
+-- No documentation found for Nested "VkGeometryInstanceFlagBitsKHR" "VK_GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR"
+pattern GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR = GeometryInstanceFlagBitsKHR 0x00000002
+
+-- No documentation found for Nested "VkGeometryInstanceFlagBitsKHR" "VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR"
+pattern GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = GeometryInstanceFlagBitsKHR 0x00000004
+
+-- No documentation found for Nested "VkGeometryInstanceFlagBitsKHR" "VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR"
+pattern GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = GeometryInstanceFlagBitsKHR 0x00000008
+
+-- No documentation found for Nested "VkGeometryInstanceFlagBitsKHR" "VK_GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_BIT_KHR"
+pattern GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_BIT_KHR = GeometryInstanceFlagBitsKHR 0x00000020
+
+-- No documentation found for Nested "VkGeometryInstanceFlagBitsKHR" "VK_GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_BIT_KHR"
+pattern GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_BIT_KHR = GeometryInstanceFlagBitsKHR 0x00000010
+
+conNameGeometryInstanceFlagBitsKHR :: String
+conNameGeometryInstanceFlagBitsKHR = "GeometryInstanceFlagBitsKHR"
+
+enumPrefixGeometryInstanceFlagBitsKHR :: String
+enumPrefixGeometryInstanceFlagBitsKHR = "GEOMETRY_INSTANCE_"
+
+showTableGeometryInstanceFlagBitsKHR :: [(GeometryInstanceFlagBitsKHR, String)]
+showTableGeometryInstanceFlagBitsKHR =
+  [
+    ( GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR
+    , "TRIANGLE_FACING_CULL_DISABLE_BIT_KHR"
+    )
+  ,
+    ( GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR
+    , "TRIANGLE_FLIP_FACING_BIT_KHR"
+    )
+  ,
+    ( GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR
+    , "FORCE_OPAQUE_BIT_KHR"
+    )
+  ,
+    ( GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR
+    , "FORCE_NO_OPAQUE_BIT_KHR"
+    )
+  ,
+    ( GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_BIT_KHR
+    , "DISABLE_OPACITY_MICROMAPS_BIT_KHR"
+    )
+  ,
+    ( GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_BIT_KHR
+    , "FORCE_OPACITY_MICROMAP_2_STATE_BIT_KHR"
+    )
+  ]
+
+instance Show GeometryInstanceFlagBitsKHR where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixGeometryInstanceFlagBitsKHR
+      showTableGeometryInstanceFlagBitsKHR
+      conNameGeometryInstanceFlagBitsKHR
+      (\(GeometryInstanceFlagBitsKHR x) -> x)
+      (\x -> showString "0x" . showHex x)
+
+instance Read GeometryInstanceFlagBitsKHR where
+  readPrec =
+    enumReadPrec
+      enumPrefixGeometryInstanceFlagBitsKHR
+      showTableGeometryInstanceFlagBitsKHR
+      conNameGeometryInstanceFlagBitsKHR
+      GeometryInstanceFlagBitsKHR
+
+type GeometryFlagsKHR = GeometryFlagBitsKHR
+
+-- | VkGeometryFlagBitsKHR - Bitmask specifying additional parameters for a
+-- geometry
+--
+-- = Description
+--
+-- -   'GEOMETRY_OPAQUE_BIT_KHR' specifies that this geometry does not
+--     invoke the any-hit shaders even if present in a hit group.
+--
+-- -   'GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR' specifies that
+--     the implementation /must/ only call the any-hit shader a single time
+--     for each primitive in this geometry. If this bit is absent an
+--     implementation /may/ invoke the any-hit shader more than once for
+--     this geometry.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>,
+-- 'GeometryFlagsKHR'
+newtype GeometryFlagBitsKHR = GeometryFlagBitsKHR Flags
+  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
+
+-- No documentation found for Nested "VkGeometryFlagBitsKHR" "VK_GEOMETRY_OPAQUE_BIT_KHR"
+pattern GEOMETRY_OPAQUE_BIT_KHR = GeometryFlagBitsKHR 0x00000001
+
+-- No documentation found for Nested "VkGeometryFlagBitsKHR" "VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR"
+pattern GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR = GeometryFlagBitsKHR 0x00000002
+
+conNameGeometryFlagBitsKHR :: String
+conNameGeometryFlagBitsKHR = "GeometryFlagBitsKHR"
+
+enumPrefixGeometryFlagBitsKHR :: String
+enumPrefixGeometryFlagBitsKHR = "GEOMETRY_"
+
+showTableGeometryFlagBitsKHR :: [(GeometryFlagBitsKHR, String)]
+showTableGeometryFlagBitsKHR =
+  [ (GEOMETRY_OPAQUE_BIT_KHR, "OPAQUE_BIT_KHR")
+  ,
+    ( GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR
+    , "NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR"
+    )
+  ]
+
+instance Show GeometryFlagBitsKHR where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixGeometryFlagBitsKHR
+      showTableGeometryFlagBitsKHR
+      conNameGeometryFlagBitsKHR
+      (\(GeometryFlagBitsKHR x) -> x)
+      (\x -> showString "0x" . showHex x)
+
+instance Read GeometryFlagBitsKHR where
+  readPrec =
+    enumReadPrec
+      enumPrefixGeometryFlagBitsKHR
+      showTableGeometryFlagBitsKHR
+      conNameGeometryFlagBitsKHR
+      GeometryFlagBitsKHR
+
+type BuildAccelerationStructureFlagsKHR = BuildAccelerationStructureFlagBitsKHR
+
+-- | VkBuildAccelerationStructureFlagBitsKHR - Bitmask specifying additional
+-- parameters for acceleration structure builds
+--
+-- = Description
+--
+-- -   'BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR' specifies that
+--     the specified acceleration structure /can/ be updated with a @mode@
+--     of 'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR' in
+--     'AccelerationStructureBuildGeometryInfoKHR' or an @update@ of
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in
+--     'Vulkan.Extensions.VK_NV_ray_tracing.cmdBuildAccelerationStructureNV'
+--     . For sphere and LSS primitives, only positions and radii may be
+--     updated, the provided index buffers and flags /must/ remain
+--     unchanged from the initial build.
+--
+-- -   'BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR' specifies
+--     that the specified acceleration structure /can/ act as the source
+--     for a copy acceleration structure command with @mode@ of
+--     'COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR' to produce a
+--     compacted acceleration structure.
+--
+-- -   'BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR' specifies
+--     that the given acceleration structure build /should/ prioritize
+--     trace performance over build time.
+--
+-- -   'BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR' specifies
+--     that the given acceleration structure build /should/ prioritize
+--     build time over trace performance.
+--
+-- -   'BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR' specifies that
+--     this acceleration structure /should/ minimize the size of the
+--     scratch memory and the final result acceleration structure,
+--     potentially at the expense of build time or trace performance.
+--
+-- -   'BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_BIT_KHR'
+--     specifies that the opacity micromaps associated with the specified
+--     acceleration structure /may/ change with an acceleration structure
+--     update.
+--
+-- -   'BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_BIT_EXT'
+--     specifies that the data of the opacity micromaps associated with the
+--     specified acceleration structure /may/ change with an acceleration
+--     structure update.
+--
+-- -   'BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_BIT_KHR'
+--     specifies that the specified acceleration structure /may/ be
+--     referenced in an instance with
+--     'GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_BIT_KHR' set.
+--
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkBuildAccelerationStructureFlagBitsNV VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_CLUSTER_OPACITY_MICROMAPS_BIT_NV>
+--     specifies that opacity micromaps /may/ be associated with the given
+--     cluster acceleration structure.
+--
+-- -   'BUILD_ACCELERATION_STRUCTURE_ALLOW_DATA_ACCESS_BIT_KHR' specifies
+--     that the specified acceleration structure /can/ be used when
+--     fetching the vertex and radius positions of a hit LSS or sphere
+--     primitive, or vertex positions of a hit triangle.
+--
+-- -   'BUILD_ACCELERATION_STRUCTURE_MICROMAP_LOSSY_BIT_KHR' specifies that
+--     micromaps /can/ be compressed with a lossy encoding as described in
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#ray-opacity-micromap Ray Opacity Micromap>,
+--     which /may/ support additional subdivision levels.
+--
+-- -   'BUILD_ACCELERATION_STRUCTURE_ALLOW_DISPLACEMENT_MICROMAP_UPDATE_BIT_NV'
+--     specifies that the displacement micromaps associated with the
+--     specified acceleration structure /may/ change with an acceleration
+--     structure update.
+--
+-- 'BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR' and
+-- 'BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR' /may/ take more
+-- time and memory than a normal build, and so /should/ only be used when
+-- those features are needed.
+--
+-- 'BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR' and
+-- 'BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR' are allowed to
+-- be used together. In that case, the result of the compaction copy is
+-- used as the source of a build with @mode@ of
+-- 'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR' to perform the compacted
+-- update.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>,
+-- 'BuildAccelerationStructureFlagsKHR'
+newtype BuildAccelerationStructureFlagBitsKHR = BuildAccelerationStructureFlagBitsKHR Flags
+  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
+
+-- No documentation found for Nested "VkBuildAccelerationStructureFlagBitsKHR" "VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR"
+pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR = BuildAccelerationStructureFlagBitsKHR 0x00000001
+
+-- No documentation found for Nested "VkBuildAccelerationStructureFlagBitsKHR" "VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR"
+pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR = BuildAccelerationStructureFlagBitsKHR 0x00000002
+
+-- No documentation found for Nested "VkBuildAccelerationStructureFlagBitsKHR" "VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR"
+pattern BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR = BuildAccelerationStructureFlagBitsKHR 0x00000004
+
+-- No documentation found for Nested "VkBuildAccelerationStructureFlagBitsKHR" "VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR"
+pattern BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR = BuildAccelerationStructureFlagBitsKHR 0x00000008
+
+-- No documentation found for Nested "VkBuildAccelerationStructureFlagBitsKHR" "VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR"
+pattern BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR = BuildAccelerationStructureFlagBitsKHR 0x00000010
+
+-- No documentation found for Nested "VkBuildAccelerationStructureFlagBitsKHR" "VK_BUILD_ACCELERATION_STRUCTURE_MICROMAP_LOSSY_BIT_KHR"
+pattern BUILD_ACCELERATION_STRUCTURE_MICROMAP_LOSSY_BIT_KHR = BuildAccelerationStructureFlagBitsKHR 0x00000400
+
+-- No documentation found for Nested "VkBuildAccelerationStructureFlagBitsKHR" "VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_BIT_KHR"
+pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_BIT_KHR = BuildAccelerationStructureFlagBitsKHR 0x00000080
+
+-- No documentation found for Nested "VkBuildAccelerationStructureFlagBitsKHR" "VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_BIT_KHR"
+pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_BIT_KHR = BuildAccelerationStructureFlagBitsKHR 0x00000040
+
+-- No documentation found for Nested "VkBuildAccelerationStructureFlagBitsKHR" "VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DATA_ACCESS_BIT_KHR"
+pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_DATA_ACCESS_BIT_KHR = BuildAccelerationStructureFlagBitsKHR 0x00000800
+
+-- No documentation found for Nested "VkBuildAccelerationStructureFlagBitsKHR" "VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISPLACEMENT_MICROMAP_UPDATE_BIT_NV"
+pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_DISPLACEMENT_MICROMAP_UPDATE_BIT_NV = BuildAccelerationStructureFlagBitsKHR 0x00000200
+
+-- No documentation found for Nested "VkBuildAccelerationStructureFlagBitsKHR" "VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_BIT_EXT"
+pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_BIT_EXT = BuildAccelerationStructureFlagBitsKHR 0x00000100
+
+-- No documentation found for Nested "VkBuildAccelerationStructureFlagBitsKHR" "VK_BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV"
+pattern BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV = BuildAccelerationStructureFlagBitsKHR 0x00000020
+
+conNameBuildAccelerationStructureFlagBitsKHR :: String
+conNameBuildAccelerationStructureFlagBitsKHR = "BuildAccelerationStructureFlagBitsKHR"
+
+enumPrefixBuildAccelerationStructureFlagBitsKHR :: String
+enumPrefixBuildAccelerationStructureFlagBitsKHR = "BUILD_ACCELERATION_STRUCTURE_"
+
+showTableBuildAccelerationStructureFlagBitsKHR :: [(BuildAccelerationStructureFlagBitsKHR, String)]
+showTableBuildAccelerationStructureFlagBitsKHR =
+  [
+    ( BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR
+    , "ALLOW_UPDATE_BIT_KHR"
+    )
+  ,
+    ( BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR
+    , "ALLOW_COMPACTION_BIT_KHR"
+    )
+  ,
+    ( BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR
+    , "PREFER_FAST_TRACE_BIT_KHR"
+    )
+  ,
+    ( BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR
+    , "PREFER_FAST_BUILD_BIT_KHR"
+    )
+  ,
+    ( BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR
+    , "LOW_MEMORY_BIT_KHR"
+    )
+  ,
+    ( BUILD_ACCELERATION_STRUCTURE_MICROMAP_LOSSY_BIT_KHR
+    , "MICROMAP_LOSSY_BIT_KHR"
+    )
+  ,
+    ( BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_BIT_KHR
+    , "ALLOW_DISABLE_OPACITY_MICROMAPS_BIT_KHR"
+    )
+  ,
+    ( BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_BIT_KHR
+    , "ALLOW_OPACITY_MICROMAP_UPDATE_BIT_KHR"
+    )
+  ,
+    ( BUILD_ACCELERATION_STRUCTURE_ALLOW_DATA_ACCESS_BIT_KHR
+    , "ALLOW_DATA_ACCESS_BIT_KHR"
+    )
+  ,
+    ( BUILD_ACCELERATION_STRUCTURE_ALLOW_DISPLACEMENT_MICROMAP_UPDATE_BIT_NV
+    , "ALLOW_DISPLACEMENT_MICROMAP_UPDATE_BIT_NV"
+    )
+  ,
+    ( BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_BIT_EXT
+    , "ALLOW_OPACITY_MICROMAP_DATA_UPDATE_BIT_EXT"
+    )
+  ,
+    ( BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV
+    , "MOTION_BIT_NV"
+    )
+  ]
+
+instance Show BuildAccelerationStructureFlagBitsKHR where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixBuildAccelerationStructureFlagBitsKHR
+      showTableBuildAccelerationStructureFlagBitsKHR
+      conNameBuildAccelerationStructureFlagBitsKHR
+      (\(BuildAccelerationStructureFlagBitsKHR x) -> x)
+      (\x -> showString "0x" . showHex x)
+
+instance Read BuildAccelerationStructureFlagBitsKHR where
+  readPrec =
+    enumReadPrec
+      enumPrefixBuildAccelerationStructureFlagBitsKHR
+      showTableBuildAccelerationStructureFlagBitsKHR
+      conNameBuildAccelerationStructureFlagBitsKHR
+      BuildAccelerationStructureFlagBitsKHR
+
+type AccelerationStructureCreateFlagsKHR = AccelerationStructureCreateFlagBitsKHR
+
+-- | VkAccelerationStructureCreateFlagBitsKHR - Bitmask specifying additional
+-- creation parameters for acceleration structure
+--
+-- = Description
+--
+-- -   'ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR'
+--     specifies that the acceleration structure’s address /can/ be saved
+--     and reused on a subsequent run.
+--
+-- -   'ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT'
+--     specifies that the acceleration structure /can/ be used with
+--     descriptor buffers when capturing and replaying (e.g. for trace
+--     capture and replay), see
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.OpaqueCaptureDescriptorDataCreateInfoEXT'
+--     for more detail.
+--
+-- -   'ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV' specifies that the
+--     acceleration structure will be used with motion information, see
+--     'Vulkan.Extensions.VK_NV_ray_tracing_motion_blur.AccelerationStructureMotionInfoNV'
+--     for more detail.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
+-- 'AccelerationStructureCreateFlagsKHR'
+newtype AccelerationStructureCreateFlagBitsKHR = AccelerationStructureCreateFlagBitsKHR Flags
+  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
+
+-- No documentation found for Nested "VkAccelerationStructureCreateFlagBitsKHR" "VK_ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR"
+pattern ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = AccelerationStructureCreateFlagBitsKHR 0x00000001
+
+-- No documentation found for Nested "VkAccelerationStructureCreateFlagBitsKHR" "VK_ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV"
+pattern ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV = AccelerationStructureCreateFlagBitsKHR 0x00000004
+
+-- No documentation found for Nested "VkAccelerationStructureCreateFlagBitsKHR" "VK_ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT"
+pattern ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = AccelerationStructureCreateFlagBitsKHR 0x00000008
+
+conNameAccelerationStructureCreateFlagBitsKHR :: String
+conNameAccelerationStructureCreateFlagBitsKHR = "AccelerationStructureCreateFlagBitsKHR"
+
+enumPrefixAccelerationStructureCreateFlagBitsKHR :: String
+enumPrefixAccelerationStructureCreateFlagBitsKHR = "ACCELERATION_STRUCTURE_CREATE_"
+
+showTableAccelerationStructureCreateFlagBitsKHR :: [(AccelerationStructureCreateFlagBitsKHR, String)]
+showTableAccelerationStructureCreateFlagBitsKHR =
+  [
+    ( ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR
+    , "DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR"
+    )
+  ,
+    ( ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV
+    , "MOTION_BIT_NV"
+    )
+  ,
+    ( ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT
+    , "DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT"
+    )
+  ]
+
+instance Show AccelerationStructureCreateFlagBitsKHR where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixAccelerationStructureCreateFlagBitsKHR
+      showTableAccelerationStructureCreateFlagBitsKHR
+      conNameAccelerationStructureCreateFlagBitsKHR
+      (\(AccelerationStructureCreateFlagBitsKHR x) -> x)
+      (\x -> showString "0x" . showHex x)
+
+instance Read AccelerationStructureCreateFlagBitsKHR where
+  readPrec =
+    enumReadPrec
+      enumPrefixAccelerationStructureCreateFlagBitsKHR
+      showTableAccelerationStructureCreateFlagBitsKHR
+      conNameAccelerationStructureCreateFlagBitsKHR
+      AccelerationStructureCreateFlagBitsKHR
+
+-- | VkCopyAccelerationStructureModeKHR - Acceleration structure copy mode
+--
+-- = Description
+--
+-- -   'COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR' creates a direct copy
+--     of the acceleration structure specified in @src@ into the one
+--     specified by @dst@. The @dst@ acceleration structure /must/ have
+--     been created with the same parameters as @src@ with the exception of
+--     @size@, which /must/ at least as large as the queried
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_SIZE_KHR'
+--     size . If @src@ contains references to other acceleration
+--     structures, @dst@ will reference the same acceleration structures.
+--
+-- -   'COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR' creates a more
+--     compact version of an acceleration structure @src@ into @dst@. The
+--     acceleration structure @dst@ /must/ have been created with a size at
+--     least as large as that returned by
+--     'Vulkan.Extensions.VK_NV_ray_tracing.cmdWriteAccelerationStructuresPropertiesNV'
+--     , 'cmdWriteAccelerationStructuresPropertiesKHR', or
+--     'writeAccelerationStructuresPropertiesKHR' after the build of the
+--     acceleration structure specified by @src@. If @src@ contains
+--     references to other acceleration structures, @dst@ will reference
+--     the same acceleration structures.
+--
+-- -   'COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR' serializes the
+--     acceleration structure to a semi-opaque format which can be reloaded
+--     on a compatible implementation.
+--
+-- -   'COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR' deserializes the
+--     semi-opaque serialization format in the buffer to the acceleration
+--     structure.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>,
+-- 'CopyAccelerationStructureInfoKHR',
+-- 'CopyAccelerationStructureToMemoryInfoKHR',
+-- 'CopyMemoryToAccelerationStructureInfoKHR',
+-- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdCopyAccelerationStructureNV'
+newtype CopyAccelerationStructureModeKHR = CopyAccelerationStructureModeKHR Int32
+  deriving newtype (Eq, Ord, Storable, Zero)
+
+-- No documentation found for Nested "VkCopyAccelerationStructureModeKHR" "VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR"
+pattern COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR = CopyAccelerationStructureModeKHR 0
+
+-- No documentation found for Nested "VkCopyAccelerationStructureModeKHR" "VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR"
+pattern COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR = CopyAccelerationStructureModeKHR 1
+
+-- No documentation found for Nested "VkCopyAccelerationStructureModeKHR" "VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR"
+pattern COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR = CopyAccelerationStructureModeKHR 3
+
+-- No documentation found for Nested "VkCopyAccelerationStructureModeKHR" "VK_COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR"
+pattern COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR = CopyAccelerationStructureModeKHR 2
+
+{-# COMPLETE
+  COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR
+  , COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR
+  , COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR
+  , COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR ::
+    CopyAccelerationStructureModeKHR
+  #-}
+
+conNameCopyAccelerationStructureModeKHR :: String
+conNameCopyAccelerationStructureModeKHR = "CopyAccelerationStructureModeKHR"
+
+enumPrefixCopyAccelerationStructureModeKHR :: String
+enumPrefixCopyAccelerationStructureModeKHR = "COPY_ACCELERATION_STRUCTURE_MODE_"
+
+showTableCopyAccelerationStructureModeKHR :: [(CopyAccelerationStructureModeKHR, String)]
+showTableCopyAccelerationStructureModeKHR =
+  [
+    ( COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR
+    , "CLONE_KHR"
+    )
+  ,
+    ( COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR
+    , "COMPACT_KHR"
+    )
+  ,
+    ( COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR
+    , "DESERIALIZE_KHR"
+    )
+  ,
+    ( COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR
+    , "SERIALIZE_KHR"
+    )
+  ]
+
+instance Show CopyAccelerationStructureModeKHR where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixCopyAccelerationStructureModeKHR
+      showTableCopyAccelerationStructureModeKHR
+      conNameCopyAccelerationStructureModeKHR
+      (\(CopyAccelerationStructureModeKHR x) -> x)
+      (showsPrec 11)
+
+instance Read CopyAccelerationStructureModeKHR where
+  readPrec =
+    enumReadPrec
+      enumPrefixCopyAccelerationStructureModeKHR
+      showTableCopyAccelerationStructureModeKHR
+      conNameCopyAccelerationStructureModeKHR
+      CopyAccelerationStructureModeKHR
+
+-- | VkBuildAccelerationStructureModeKHR - Enum specifying the type of build
+-- operation to perform
+--
+-- = Description
+--
+-- -   'BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR' specifies that the
+--     destination acceleration structure will be built using the specified
+--     geometries.
+--
+-- -   'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR' specifies that the
+--     destination acceleration structure will be built using data in a
+--     source acceleration structure, updated by the specified geometries.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
+-- 'AccelerationStructureBuildGeometryInfoKHR'
+newtype BuildAccelerationStructureModeKHR = BuildAccelerationStructureModeKHR Int32
+  deriving newtype (Eq, Ord, Storable, Zero)
+
+-- No documentation found for Nested "VkBuildAccelerationStructureModeKHR" "VK_BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR"
+pattern BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR = BuildAccelerationStructureModeKHR 0
+
+-- No documentation found for Nested "VkBuildAccelerationStructureModeKHR" "VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR"
+pattern BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR = BuildAccelerationStructureModeKHR 1
+
+{-# COMPLETE
+  BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR
+  , BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR ::
+    BuildAccelerationStructureModeKHR
+  #-}
+
+conNameBuildAccelerationStructureModeKHR :: String
+conNameBuildAccelerationStructureModeKHR = "BuildAccelerationStructureModeKHR"
+
+enumPrefixBuildAccelerationStructureModeKHR :: String
+enumPrefixBuildAccelerationStructureModeKHR = "BUILD_ACCELERATION_STRUCTURE_MODE_"
+
+showTableBuildAccelerationStructureModeKHR :: [(BuildAccelerationStructureModeKHR, String)]
+showTableBuildAccelerationStructureModeKHR =
+  [
+    ( BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR
+    , "BUILD_KHR"
+    )
+  ,
+    ( BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR
+    , "UPDATE_KHR"
+    )
+  ]
+
+instance Show BuildAccelerationStructureModeKHR where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixBuildAccelerationStructureModeKHR
+      showTableBuildAccelerationStructureModeKHR
+      conNameBuildAccelerationStructureModeKHR
+      (\(BuildAccelerationStructureModeKHR x) -> x)
+      (showsPrec 11)
+
+instance Read BuildAccelerationStructureModeKHR where
+  readPrec =
+    enumReadPrec
+      enumPrefixBuildAccelerationStructureModeKHR
+      showTableBuildAccelerationStructureModeKHR
+      conNameBuildAccelerationStructureModeKHR
+      BuildAccelerationStructureModeKHR
+
+-- | VkAccelerationStructureTypeKHR - Type of acceleration structure
+--
+-- = Description
+--
+-- -   'ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR' is a top-level
+--     acceleration structure containing instance data referring to
+--     bottom-level acceleration structures.
+--
+-- -   'ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR' is a bottom-level
+--     acceleration structure containing the AABBs or geometry to be
+--     intersected.
+--
+-- -   'ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR' is an acceleration
+--     structure whose type is determined at build time used for special
+--     circumstances. In these cases, the acceleration structure type is
+--     not known at creation time, but /must/ be specified at build time as
+--     micromap, top, or bottom.
+--
+-- -   'ACCELERATION_STRUCTURE_TYPE_OPACITY_MICROMAP_KHR' is a micromap
+--     containing opacity information, which /can/ be referenced by
+--     geometry in bottom-level acceleration structures.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>,
+-- 'AccelerationStructureBuildGeometryInfoKHR',
+-- 'Vulkan.Extensions.VK_KHR_device_address_commands.AccelerationStructureCreateInfo2KHR',
+-- 'AccelerationStructureCreateInfoKHR',
+-- 'Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureInfoNV'
+newtype AccelerationStructureTypeKHR = AccelerationStructureTypeKHR Int32
+  deriving newtype (Eq, Ord, Storable, Zero)
+
+-- No documentation found for Nested "VkAccelerationStructureTypeKHR" "VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR"
+pattern ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR = AccelerationStructureTypeKHR 0
+
+-- No documentation found for Nested "VkAccelerationStructureTypeKHR" "VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR"
+pattern ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR = AccelerationStructureTypeKHR 1
+
+-- No documentation found for Nested "VkAccelerationStructureTypeKHR" "VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR"
+pattern ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR = AccelerationStructureTypeKHR 2
+
+-- No documentation found for Nested "VkAccelerationStructureTypeKHR" "VK_ACCELERATION_STRUCTURE_TYPE_OPACITY_MICROMAP_KHR"
+pattern ACCELERATION_STRUCTURE_TYPE_OPACITY_MICROMAP_KHR = AccelerationStructureTypeKHR 1000623000
+
+{-# COMPLETE
+  ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR
+  , ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR
+  , ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR
+  , ACCELERATION_STRUCTURE_TYPE_OPACITY_MICROMAP_KHR ::
+    AccelerationStructureTypeKHR
+  #-}
+
+conNameAccelerationStructureTypeKHR :: String
+conNameAccelerationStructureTypeKHR = "AccelerationStructureTypeKHR"
+
+enumPrefixAccelerationStructureTypeKHR :: String
+enumPrefixAccelerationStructureTypeKHR = "ACCELERATION_STRUCTURE_TYPE_"
+
+showTableAccelerationStructureTypeKHR :: [(AccelerationStructureTypeKHR, String)]
+showTableAccelerationStructureTypeKHR =
+  [
+    ( ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR
+    , "TOP_LEVEL_KHR"
+    )
+  ,
+    ( ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR
+    , "BOTTOM_LEVEL_KHR"
+    )
+  ,
+    ( ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR
+    , "GENERIC_KHR"
+    )
+  ,
+    ( ACCELERATION_STRUCTURE_TYPE_OPACITY_MICROMAP_KHR
+    , "OPACITY_MICROMAP_KHR"
+    )
+  ]
+
+instance Show AccelerationStructureTypeKHR where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixAccelerationStructureTypeKHR
+      showTableAccelerationStructureTypeKHR
+      conNameAccelerationStructureTypeKHR
+      (\(AccelerationStructureTypeKHR x) -> x)
+      (showsPrec 11)
+
+instance Read AccelerationStructureTypeKHR where
+  readPrec =
+    enumReadPrec
+      enumPrefixAccelerationStructureTypeKHR
+      showTableAccelerationStructureTypeKHR
+      conNameAccelerationStructureTypeKHR
+      AccelerationStructureTypeKHR
+
+-- | VkGeometryTypeKHR - Enum specifying which type of geometry is provided
+--
+-- = Description
+--
+-- -   'GEOMETRY_TYPE_TRIANGLES_KHR' specifies a geometry type consisting
+--     of
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#ray-tracing-triangle-primitive triangles>.
+--
+-- -   'GEOMETRY_TYPE_AABBS_KHR' specifies a geometry type consisting of
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#aabb-primitive axis-aligned bounding boxes>.
+--
+-- -   'GEOMETRY_TYPE_INSTANCES_KHR' specifies a geometry type consisting
+--     of acceleration structure instances.
+--
+-- -   'GEOMETRY_TYPE_DENSE_GEOMETRY_FORMAT_TRIANGLES_AMDX' specifies a
+--     geometry type consisting of triangles from compressed data.
+--
+-- -   'GEOMETRY_TYPE_SPHERES_NV' specifies a geometry type consisting of
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#sphere-primitive spheres>.
+--
+-- -   'GEOMETRY_TYPE_LINEAR_SWEPT_SPHERES_NV' specifies a geometry type
+--     consisting of
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#linear-swept-sphere-primitive linear swept spheres>.
+--
+-- -   VK_GEOMETRY_TYPE_MICROMAP_KHR specifies a geometry type consisting
+--     of a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#micromap micromap array>.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>,
+-- 'AccelerationStructureGeometryKHR',
+-- 'Vulkan.Extensions.VK_NV_ray_tracing.GeometryNV'
+newtype GeometryTypeKHR = GeometryTypeKHR Int32
+  deriving newtype (Eq, Ord, Storable, Zero)
+
+-- No documentation found for Nested "VkGeometryTypeKHR" "VK_GEOMETRY_TYPE_TRIANGLES_KHR"
+pattern GEOMETRY_TYPE_TRIANGLES_KHR = GeometryTypeKHR 0
+
+-- No documentation found for Nested "VkGeometryTypeKHR" "VK_GEOMETRY_TYPE_AABBS_KHR"
+pattern GEOMETRY_TYPE_AABBS_KHR = GeometryTypeKHR 1
+
+-- No documentation found for Nested "VkGeometryTypeKHR" "VK_GEOMETRY_TYPE_INSTANCES_KHR"
+pattern GEOMETRY_TYPE_INSTANCES_KHR = GeometryTypeKHR 2
+
+-- No documentation found for Nested "VkGeometryTypeKHR" "VK_GEOMETRY_TYPE_MICROMAP_KHR"
+pattern GEOMETRY_TYPE_MICROMAP_KHR = GeometryTypeKHR 1000623000
+
+-- No documentation found for Nested "VkGeometryTypeKHR" "VK_GEOMETRY_TYPE_DENSE_GEOMETRY_FORMAT_TRIANGLES_AMDX"
+pattern GEOMETRY_TYPE_DENSE_GEOMETRY_FORMAT_TRIANGLES_AMDX = GeometryTypeKHR 1000478000
+
+-- No documentation found for Nested "VkGeometryTypeKHR" "VK_GEOMETRY_TYPE_LINEAR_SWEPT_SPHERES_NV"
+pattern GEOMETRY_TYPE_LINEAR_SWEPT_SPHERES_NV = GeometryTypeKHR 1000429005
+
+-- No documentation found for Nested "VkGeometryTypeKHR" "VK_GEOMETRY_TYPE_SPHERES_NV"
+pattern GEOMETRY_TYPE_SPHERES_NV = GeometryTypeKHR 1000429004
+
+{-# COMPLETE
+  GEOMETRY_TYPE_TRIANGLES_KHR
+  , GEOMETRY_TYPE_AABBS_KHR
+  , GEOMETRY_TYPE_INSTANCES_KHR
+  , GEOMETRY_TYPE_MICROMAP_KHR
+  , GEOMETRY_TYPE_DENSE_GEOMETRY_FORMAT_TRIANGLES_AMDX
+  , GEOMETRY_TYPE_LINEAR_SWEPT_SPHERES_NV
+  , GEOMETRY_TYPE_SPHERES_NV ::
+    GeometryTypeKHR
+  #-}
+
+conNameGeometryTypeKHR :: String
+conNameGeometryTypeKHR = "GeometryTypeKHR"
+
+enumPrefixGeometryTypeKHR :: String
+enumPrefixGeometryTypeKHR = "GEOMETRY_TYPE_"
+
+showTableGeometryTypeKHR :: [(GeometryTypeKHR, String)]
+showTableGeometryTypeKHR =
+  [ (GEOMETRY_TYPE_TRIANGLES_KHR, "TRIANGLES_KHR")
+  , (GEOMETRY_TYPE_AABBS_KHR, "AABBS_KHR")
+  , (GEOMETRY_TYPE_INSTANCES_KHR, "INSTANCES_KHR")
+  , (GEOMETRY_TYPE_MICROMAP_KHR, "MICROMAP_KHR")
+  ,
+    ( GEOMETRY_TYPE_DENSE_GEOMETRY_FORMAT_TRIANGLES_AMDX
+    , "DENSE_GEOMETRY_FORMAT_TRIANGLES_AMDX"
+    )
+  ,
+    ( GEOMETRY_TYPE_LINEAR_SWEPT_SPHERES_NV
+    , "LINEAR_SWEPT_SPHERES_NV"
+    )
+  , (GEOMETRY_TYPE_SPHERES_NV, "SPHERES_NV")
+  ]
+
+instance Show GeometryTypeKHR where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixGeometryTypeKHR
+      showTableGeometryTypeKHR
+      conNameGeometryTypeKHR
+      (\(GeometryTypeKHR x) -> x)
+      (showsPrec 11)
+
+instance Read GeometryTypeKHR where
+  readPrec =
+    enumReadPrec
+      enumPrefixGeometryTypeKHR
+      showTableGeometryTypeKHR
+      conNameGeometryTypeKHR
+      GeometryTypeKHR
+
+-- | VkAccelerationStructureBuildTypeKHR - Acceleration structure build type
+--
+-- = Description
+--
+-- -   'ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR' requests the memory
+--     requirement for operations performed by the host.
+--
+-- -   'ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR' requests the memory
+--     requirement for operations performed by the device.
+--
+-- -   'ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR' requests the
+--     memory requirement for operations performed by either the host, or
+--     the device.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
+-- 'getAccelerationStructureBuildSizesKHR',
+-- 'Vulkan.Extensions.VK_EXT_opacity_micromap.getMicromapBuildSizesEXT'
+newtype AccelerationStructureBuildTypeKHR = AccelerationStructureBuildTypeKHR Int32
+  deriving newtype (Eq, Ord, Storable, Zero)
+
+-- No documentation found for Nested "VkAccelerationStructureBuildTypeKHR" "VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR"
+pattern ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR = AccelerationStructureBuildTypeKHR 0
+
+-- No documentation found for Nested "VkAccelerationStructureBuildTypeKHR" "VK_ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR"
+pattern ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR = AccelerationStructureBuildTypeKHR 1
+
+-- No documentation found for Nested "VkAccelerationStructureBuildTypeKHR" "VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR"
+pattern ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR = AccelerationStructureBuildTypeKHR 2
+
+{-# COMPLETE
+  ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR
+  , ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR
+  , ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR ::
+    AccelerationStructureBuildTypeKHR
+  #-}
+
+conNameAccelerationStructureBuildTypeKHR :: String
+conNameAccelerationStructureBuildTypeKHR = "AccelerationStructureBuildTypeKHR"
+
+enumPrefixAccelerationStructureBuildTypeKHR :: String
+enumPrefixAccelerationStructureBuildTypeKHR = "ACCELERATION_STRUCTURE_BUILD_TYPE_"
+
+showTableAccelerationStructureBuildTypeKHR :: [(AccelerationStructureBuildTypeKHR, String)]
+showTableAccelerationStructureBuildTypeKHR =
+  [
+    ( ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR
+    , "HOST_KHR"
+    )
+  ,
+    ( ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR
+    , "DEVICE_KHR"
+    )
+  ,
+    ( ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR
+    , "HOST_OR_DEVICE_KHR"
+    )
+  ]
+
+instance Show AccelerationStructureBuildTypeKHR where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixAccelerationStructureBuildTypeKHR
+      showTableAccelerationStructureBuildTypeKHR
+      conNameAccelerationStructureBuildTypeKHR
+      (\(AccelerationStructureBuildTypeKHR x) -> x)
+      (showsPrec 11)
+
+instance Read AccelerationStructureBuildTypeKHR where
+  readPrec =
+    enumReadPrec
+      enumPrefixAccelerationStructureBuildTypeKHR
+      showTableAccelerationStructureBuildTypeKHR
+      conNameAccelerationStructureBuildTypeKHR
+      AccelerationStructureBuildTypeKHR
+
+-- | VkAccelerationStructureCompatibilityKHR - Acceleration structure
+-- compatibility
+--
+-- = Description
+--
+-- -   'ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR' if the
+--     @pVersionData@ version acceleration structure is compatible with
+--     @device@.
+--
+-- -   'ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR' if the
+--     @pVersionData@ version acceleration structure is not compatible with
+--     @device@.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
+-- 'getDeviceAccelerationStructureCompatibilityKHR',
+-- 'Vulkan.Extensions.VK_EXT_opacity_micromap.getDeviceMicromapCompatibilityEXT'
+newtype AccelerationStructureCompatibilityKHR = AccelerationStructureCompatibilityKHR Int32
+  deriving newtype (Eq, Ord, Storable, Zero)
+
+-- No documentation found for Nested "VkAccelerationStructureCompatibilityKHR" "VK_ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR"
+pattern ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR = AccelerationStructureCompatibilityKHR 0
+
+-- No documentation found for Nested "VkAccelerationStructureCompatibilityKHR" "VK_ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR"
 pattern ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR = AccelerationStructureCompatibilityKHR 1
 
 {-# COMPLETE
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
@@ -406,7 +406,7 @@
 --     'cmdCopyMemoryToAccelerationStructureKHR')
 --
 -- -   document
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#acceleration-structure-inactive-prims inactive primitives and instances>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#acceleration-structure-inactive-prims inactive primitives and instances>
 --
 -- -   added 'PhysicalDeviceAccelerationStructureFeaturesKHR' structure
 --
@@ -414,7 +414,7 @@
 --     ('cmdBuildAccelerationStructuresIndirectKHR')
 --
 -- -   added
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#host-acceleration-structure host acceleration structure>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#host-acceleration-structure host acceleration structure>
 --     commands
 --
 -- -   reworked geometry structures so they could be better shared between
@@ -557,7 +557,7 @@
 --         → 'cmdWriteAccelerationStructuresPropertiesKHR' (different
 --         acceleration structure types)
 --
--- -   Added enums, structures and commands:
+-- -   Added enums, structures, and commands:
 --
 --     -   'GEOMETRY_TYPE_INSTANCES_KHR' to 'GeometryTypeKHR' enum
 --
@@ -685,7 +685,7 @@
 --         structure and require one of them be @NULL@
 --
 -- -   added
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-nullDescriptor nullDescriptor>
 --     support for acceleration structures
 --
 -- -   changed the @update@ member of
@@ -1137,7 +1137,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_acceleration_structure Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -1241,10 +1241,12 @@
 instance Show AccelerationStructureGeometryInstancesDataKHR
 
 
-data AccelerationStructureGeometryKHR
+type role AccelerationStructureGeometryKHR nominal
+data AccelerationStructureGeometryKHR (es :: [Type])
 
-instance ToCStruct AccelerationStructureGeometryKHR
-instance Show AccelerationStructureGeometryKHR
+instance ( Extendss AccelerationStructureGeometryKHR es
+         , PokeChain es ) => ToCStruct (AccelerationStructureGeometryKHR es)
+instance Show (Chain es) => Show (AccelerationStructureGeometryKHR es)
 
 
 type role AccelerationStructureGeometryTrianglesDataKHR nominal
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
@@ -154,7 +154,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_android_surface Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -288,12 +288,16 @@
 --
 -- [<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_NATIVE_WINDOW_IN_USE_KHR'
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_NATIVE_WINDOW_IN_USE_KHR'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_android_surface VK_KHR_android_surface>,
@@ -309,7 +313,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>).
+                           -- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -154,7 +154,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_android_surface Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -106,7 +106,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_bind_memory2 Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -114,8 +114,8 @@
 --
 -- == Promotion to Vulkan 1.3
 --
--- Support for the @bufferDeviceAddress@ feature is mandatory in Vulkan
--- 1.3, regardless of whether this extension is supported.
+-- If Vulkan 1.3 is supported, support for the @bufferDeviceAddress@
+-- capability is required.
 --
 -- == New Commands
 --
@@ -186,7 +186,7 @@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-PhysicalStorageBufferAddresses PhysicalStorageBufferAddresses>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-PhysicalStorageBufferAddresses PhysicalStorageBufferAddresses>
 --
 -- == Version History
 --
@@ -201,7 +201,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_buffer_device_address Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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_calibrated_timestamps.hs b/src/Vulkan/Extensions/VK_KHR_calibrated_timestamps.hs
--- a/src/Vulkan/Extensions/VK_KHR_calibrated_timestamps.hs
+++ b/src/Vulkan/Extensions/VK_KHR_calibrated_timestamps.hs
@@ -72,7 +72,7 @@
 --
 -- == New Enums
 --
--- -   'TimeDomainKHR'
+-- -   'Vulkan.Extensions.VK_EXT_present_timing.TimeDomainKHR'
 --
 -- == New Enum Constants
 --
@@ -97,40 +97,34 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_calibrated_timestamps Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_calibrated_timestamps 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_calibrated_timestamps  ( getPhysicalDeviceCalibrateableTimeDomainsKHR
                                                        , getCalibratedTimestampsKHR
                                                        , CalibratedTimestampInfoKHR(..)
-                                                       , TimeDomainKHR( TIME_DOMAIN_DEVICE_KHR
-                                                                      , TIME_DOMAIN_CLOCK_MONOTONIC_KHR
-                                                                      , TIME_DOMAIN_CLOCK_MONOTONIC_RAW_KHR
-                                                                      , TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_KHR
-                                                                      , ..
-                                                                      )
                                                        , KHR_CALIBRATED_TIMESTAMPS_SPEC_VERSION
                                                        , pattern KHR_CALIBRATED_TIMESTAMPS_SPEC_VERSION
                                                        , KHR_CALIBRATED_TIMESTAMPS_EXTENSION_NAME
                                                        , pattern KHR_CALIBRATED_TIMESTAMPS_EXTENSION_NAME
+                                                       , TimeDomainKHR(..)
                                                        ) 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 (showsPrec)
 import Control.Monad.Trans.Class (lift)
 import Control.Monad.Trans.Cont (evalContT)
 import Data.Vector (generateM)
@@ -140,46 +134,56 @@
 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.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 Data.Int (Int32)
 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.CStruct.Extends (forgetExtensions)
+import Vulkan.CStruct.Extends (pokeSomeCStruct)
 import Vulkan.NamedType ((:::))
+import Vulkan.CStruct.Extends (Chain)
 import Vulkan.Core10.Handles (Device)
 import Vulkan.Core10.Handles (Device(..))
 import Vulkan.Core10.Handles (Device(Device))
 import Vulkan.Dynamic (DeviceCmds(pVkGetCalibratedTimestampsKHR))
 import Vulkan.Core10.Handles (Device_T)
+import Vulkan.CStruct.Extends (Extends)
+import Vulkan.CStruct.Extends (Extendss)
+import Vulkan.CStruct.Extends (Extensible(..))
 import Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceCalibrateableTimeDomainsKHR))
+import Vulkan.CStruct.Extends (PeekChain)
+import Vulkan.CStruct.Extends (PeekChain(..))
 import Vulkan.Core10.Handles (PhysicalDevice)
 import Vulkan.Core10.Handles (PhysicalDevice(..))
 import Vulkan.Core10.Handles (PhysicalDevice(PhysicalDevice))
 import Vulkan.Core10.Handles (PhysicalDevice_T)
+import Vulkan.CStruct.Extends (PokeChain)
+import Vulkan.CStruct.Extends (PokeChain(..))
 import Vulkan.Core10.Enums.Result (Result)
 import Vulkan.Core10.Enums.Result (Result(..))
+import Vulkan.CStruct.Extends (SomeStruct)
 import Vulkan.Core10.Enums.StructureType (StructureType)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_present_timing (SwapchainCalibratedTimestampInfoEXT)
+import Vulkan.Extensions.VK_EXT_present_timing (TimeDomainKHR)
+import Vulkan.Extensions.VK_EXT_present_timing (TimeDomainKHR(..))
 import Vulkan.Exception (VulkanException(..))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_KHR))
 import Vulkan.Core10.Enums.Result (Result(SUCCESS))
+import Vulkan.Extensions.VK_EXT_present_timing (TimeDomainKHR(..))
 foreign import ccall
 #if !defined(SAFE_FOREIGN_CALLS)
   unsafe
@@ -216,27 +220,33 @@
 -- -   #VUID-vkGetPhysicalDeviceCalibrateableTimeDomainsKHR-pTimeDomains-parameter#
 --     If the value referenced by @pTimeDomainCount@ is not @0@, and
 --     @pTimeDomains@ is not @NULL@, @pTimeDomains@ /must/ be a valid
---     pointer to an array of @pTimeDomainCount@ 'TimeDomainKHR' values
+--     pointer to an array of @pTimeDomainCount@
+--     'Vulkan.Extensions.VK_EXT_present_timing.TimeDomainKHR' values
 --
 -- == 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'
 --
+--     -   '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_DEVICE_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_calibrated_timestamps VK_EXT_calibrated_timestamps>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_calibrated_timestamps VK_KHR_calibrated_timestamps>,
--- 'Vulkan.Core10.Handles.PhysicalDevice', 'TimeDomainKHR'
+-- 'Vulkan.Core10.Handles.PhysicalDevice',
+-- 'Vulkan.Extensions.VK_EXT_present_timing.TimeDomainKHR'
 getPhysicalDeviceCalibrateableTimeDomainsKHR :: forall io
                                               . (MonadIO io)
                                              => -- | @physicalDevice@ is the physical device from which to query the set of
@@ -272,7 +282,7 @@
   unsafe
 #endif
   "dynamic" mkVkGetCalibratedTimestampsKHR
-  :: FunPtr (Ptr Device_T -> Word32 -> Ptr CalibratedTimestampInfoKHR -> Ptr Word64 -> Ptr Word64 -> IO Result) -> Ptr Device_T -> Word32 -> Ptr CalibratedTimestampInfoKHR -> Ptr Word64 -> Ptr Word64 -> IO Result
+  :: FunPtr (Ptr Device_T -> Word32 -> Ptr (SomeStruct CalibratedTimestampInfoKHR) -> Ptr Word64 -> Ptr Word64 -> IO Result) -> Ptr Device_T -> Word32 -> Ptr (SomeStruct CalibratedTimestampInfoKHR) -> Ptr Word64 -> Ptr Word64 -> IO Result
 
 -- | vkGetCalibratedTimestampsKHR - Query calibrated timestamps
 --
@@ -295,9 +305,10 @@
 --
 -- == Valid Usage
 --
--- -   #VUID-vkGetCalibratedTimestampsEXT-timeDomain-09246# The
+-- -   #VUID-vkGetCalibratedTimestampsKHR-timeDomain-09246# The
 --     @timeDomain@ value of each 'CalibratedTimestampInfoKHR' in
---     @pTimestampInfos@ /must/ be unique
+--     @pTimestampInfos@ /must/ be unique except for those with a value of
+--     'Vulkan.Extensions.VK_EXT_present_timing.TIME_DOMAIN_PRESENT_STAGE_LOCAL_EXT'
 --
 -- == Valid Usage (Implicit)
 --
@@ -326,10 +337,14 @@
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_calibrated_timestamps VK_EXT_calibrated_timestamps>,
@@ -342,21 +357,21 @@
                            -> -- | @pTimestampInfos@ is a pointer to an array of @timestampCount@
                               -- 'CalibratedTimestampInfoKHR' structures, describing the time domains the
                               -- calibrated timestamps should be captured from.
-                              ("timestampInfos" ::: Vector CalibratedTimestampInfoKHR)
+                              ("timestampInfos" ::: Vector (SomeStruct CalibratedTimestampInfoKHR))
                            -> io (("timestamps" ::: Vector Word64), ("maxDeviation" ::: Word64))
 getCalibratedTimestampsKHR device timestampInfos = liftIO . evalContT $ do
   let vkGetCalibratedTimestampsKHRPtr = pVkGetCalibratedTimestampsKHR (case device of Device{deviceCmds} -> deviceCmds)
   lift $ unless (vkGetCalibratedTimestampsKHRPtr /= nullFunPtr) $
     throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetCalibratedTimestampsKHR is null" Nothing Nothing
   let vkGetCalibratedTimestampsKHR' = mkVkGetCalibratedTimestampsKHR vkGetCalibratedTimestampsKHRPtr
-  pPTimestampInfos <- ContT $ allocaBytes @CalibratedTimestampInfoKHR ((Data.Vector.length (timestampInfos)) * 24)
-  lift $ Data.Vector.imapM_ (\i e -> poke (pPTimestampInfos `plusPtr` (24 * (i)) :: Ptr CalibratedTimestampInfoKHR) (e)) (timestampInfos)
+  pPTimestampInfos <- ContT $ allocaBytes @(CalibratedTimestampInfoKHR _) ((Data.Vector.length (timestampInfos)) * 24)
+  Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPTimestampInfos `plusPtr` (24 * (i)) :: Ptr (CalibratedTimestampInfoKHR _))) (e) . ($ ())) (timestampInfos)
   pPTimestamps <- ContT $ bracket (callocBytes @Word64 ((fromIntegral ((fromIntegral (Data.Vector.length $ (timestampInfos)) :: Word32))) * 8)) free
   pPMaxDeviation <- ContT $ bracket (callocBytes @Word64 8) free
   r <- lift $ traceAroundEvent "vkGetCalibratedTimestampsKHR" (vkGetCalibratedTimestampsKHR'
                                                                  (deviceHandle (device))
                                                                  ((fromIntegral (Data.Vector.length $ (timestampInfos)) :: Word32))
-                                                                 (pPTimestampInfos)
+                                                                 (forgetExtensions (pPTimestampInfos))
                                                                  (pPTimestamps)
                                                                  (pPMaxDeviation))
   lift $ when (r < SUCCESS) (throwIO (VulkanException r))
@@ -368,176 +383,101 @@
 -- | VkCalibratedTimestampInfoKHR - Structure specifying the input parameters
 -- of a calibrated timestamp query
 --
+-- == Valid Usage
+--
+-- -   #VUID-VkCalibratedTimestampInfoKHR-timeDomain-02354# @timeDomain@
+--     /must/ be one of the
+--     'Vulkan.Extensions.VK_EXT_present_timing.TimeDomainKHR' values
+--     returned by 'getPhysicalDeviceCalibrateableTimeDomainsKHR'
+--
+-- -   #VUID-VkCalibratedTimestampInfoKHR-timeDomain-12227# If @timeDomain@
+--     is
+--     'Vulkan.Extensions.VK_EXT_present_timing.TIME_DOMAIN_SWAPCHAIN_LOCAL_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_present_timing.TIME_DOMAIN_PRESENT_STAGE_LOCAL_EXT',
+--     the @pNext@ chain /must/ include a
+--     'Vulkan.Extensions.VK_EXT_present_timing.SwapchainCalibratedTimestampInfoEXT'
+--     structure
+--
 -- == Valid Usage (Implicit)
 --
+-- -   #VUID-VkCalibratedTimestampInfoKHR-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_KHR'
+--
+-- -   #VUID-VkCalibratedTimestampInfoKHR-pNext-pNext# @pNext@ /must/ be
+--     @NULL@ or a pointer to a valid instance of
+--     'Vulkan.Extensions.VK_EXT_present_timing.SwapchainCalibratedTimestampInfoEXT'
+--
+-- -   #VUID-VkCalibratedTimestampInfoKHR-sType-unique# The @sType@ value
+--     of each structure in the @pNext@ chain /must/ be unique
+--
+-- -   #VUID-VkCalibratedTimestampInfoKHR-timeDomain-parameter#
+--     @timeDomain@ /must/ be a valid
+--     'Vulkan.Extensions.VK_EXT_present_timing.TimeDomainKHR' value
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_calibrated_timestamps VK_EXT_calibrated_timestamps>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_calibrated_timestamps VK_KHR_calibrated_timestamps>,
--- 'Vulkan.Core10.Enums.StructureType.StructureType', 'TimeDomainKHR',
--- 'Vulkan.Extensions.VK_EXT_calibrated_timestamps.getCalibratedTimestampsEXT',
--- 'getCalibratedTimestampsKHR'
-data CalibratedTimestampInfoKHR = CalibratedTimestampInfoKHR
-  { -- | @timeDomain@ is a 'TimeDomainKHR' value specifying the time domain from
-    -- which the calibrated timestamp value should be returned.
-    --
-    -- #VUID-VkCalibratedTimestampInfoEXT-timeDomain-02354# @timeDomain@ /must/
-    -- be one of the 'TimeDomainKHR' values returned by
-    -- 'getPhysicalDeviceCalibrateableTimeDomainsKHR'
-    --
-    -- #VUID-VkCalibratedTimestampInfoKHR-timeDomain-parameter# @timeDomain@
-    -- /must/ be a valid 'TimeDomainKHR' value
-    timeDomain :: TimeDomainKHR }
-  deriving (Typeable, Eq)
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'Vulkan.Extensions.VK_EXT_present_timing.TimeDomainKHR',
+-- 'getCalibratedTimestampsKHR', 'getCalibratedTimestampsKHR'
+data CalibratedTimestampInfoKHR (es :: [Type]) = CalibratedTimestampInfoKHR
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
+    next :: Chain es
+  , -- | @timeDomain@ is a
+    -- 'Vulkan.Extensions.VK_EXT_present_timing.TimeDomainKHR' value specifying
+    -- the time domain from which the calibrated timestamp value should be
+    -- returned.
+    timeDomain :: TimeDomainKHR
+  }
+  deriving (Typeable)
 #if defined(GENERIC_INSTANCES)
-deriving instance Generic (CalibratedTimestampInfoKHR)
+deriving instance Generic (CalibratedTimestampInfoKHR (es :: [Type]))
 #endif
-deriving instance Show CalibratedTimestampInfoKHR
+deriving instance Show (Chain es) => Show (CalibratedTimestampInfoKHR es)
 
-instance ToCStruct CalibratedTimestampInfoKHR where
+instance Extensible CalibratedTimestampInfoKHR where
+  extensibleTypeName = "CalibratedTimestampInfoKHR"
+  setNext CalibratedTimestampInfoKHR{..} next' = CalibratedTimestampInfoKHR{next = next', ..}
+  getNext CalibratedTimestampInfoKHR{..} = next
+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends CalibratedTimestampInfoKHR e => b) -> Maybe b
+  extends _ f
+    | Just Refl <- eqT @e @SwapchainCalibratedTimestampInfoEXT = Just f
+    | otherwise = Nothing
+
+instance ( Extendss CalibratedTimestampInfoKHR es
+         , PokeChain es ) => ToCStruct (CalibratedTimestampInfoKHR es) where
   withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p CalibratedTimestampInfoKHR{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr TimeDomainKHR)) (timeDomain)
-    f
+  pokeCStruct p CalibratedTimestampInfoKHR{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_KHR)
+    pNext'' <- fmap castPtr . ContT $ withChain (next)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
+    lift $ poke ((p `plusPtr` 16 :: Ptr TimeDomainKHR)) (timeDomain)
+    lift $ f
   cStructSize = 24
   cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr TimeDomainKHR)) (zero)
-    f
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_KHR)
+    pNext' <- fmap castPtr . ContT $ withZeroChain @es
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
+    lift $ poke ((p `plusPtr` 16 :: Ptr TimeDomainKHR)) (zero)
+    lift $ f
 
-instance FromCStruct CalibratedTimestampInfoKHR where
+instance ( Extendss CalibratedTimestampInfoKHR es
+         , PeekChain es ) => FromCStruct (CalibratedTimestampInfoKHR es) where
   peekCStruct p = do
+    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
+    next <- peekChain (castPtr pNext)
     timeDomain <- peek @TimeDomainKHR ((p `plusPtr` 16 :: Ptr TimeDomainKHR))
     pure $ CalibratedTimestampInfoKHR
-             timeDomain
-
-instance Storable CalibratedTimestampInfoKHR where
-  sizeOf ~_ = 24
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
+             next timeDomain
 
-instance Zero CalibratedTimestampInfoKHR where
+instance es ~ '[] => Zero (CalibratedTimestampInfoKHR es) where
   zero = CalibratedTimestampInfoKHR
+           ()
            zero
 
-
--- | VkTimeDomainKHR - Supported time domains
---
--- = Description
---
--- An implementation supporting @VK_KHR_calibrated_timestamps@ or
--- @VK_EXT_calibrated_timestamps@ will use the same time domain for all its
--- 'Vulkan.Core10.Handles.Queue' so that timestamp values reported for
--- 'TIME_DOMAIN_DEVICE_KHR' can be matched to any timestamp captured
--- through 'Vulkan.Core10.CommandBufferBuilding.cmdWriteTimestamp' or
--- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.cmdWriteTimestamp2'
--- .
---
--- > struct timespec tv;
--- > clock_gettime(CLOCK_MONOTONIC, &tv);
--- > return tv.tv_nsec + tv.tv_sec*1000000000ull;
---
--- > struct timespec tv;
--- > clock_gettime(CLOCK_MONOTONIC_RAW, &tv);
--- > return tv.tv_nsec + tv.tv_sec*1000000000ull;
---
--- > LARGE_INTEGER counter;
--- > QueryPerformanceCounter(&counter);
--- > return counter.QuadPart;
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_calibrated_timestamps VK_EXT_calibrated_timestamps>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_calibrated_timestamps VK_KHR_calibrated_timestamps>,
--- 'CalibratedTimestampInfoKHR',
--- 'Vulkan.Extensions.VK_EXT_calibrated_timestamps.getPhysicalDeviceCalibrateableTimeDomainsEXT',
--- 'getPhysicalDeviceCalibrateableTimeDomainsKHR'
-newtype TimeDomainKHR = TimeDomainKHR Int32
-  deriving newtype (Eq, Ord, Storable, Zero)
-
--- | 'TIME_DOMAIN_DEVICE_KHR' specifies the device time domain. Timestamp
--- values in this time domain use the same units and are comparable with
--- device timestamp values captured using
--- 'Vulkan.Core10.CommandBufferBuilding.cmdWriteTimestamp' or
--- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.cmdWriteTimestamp2'
--- and are defined to be incrementing according to the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-timestampPeriod timestampPeriod>
--- of the device.
-pattern TIME_DOMAIN_DEVICE_KHR = TimeDomainKHR 0
-
--- | 'TIME_DOMAIN_CLOCK_MONOTONIC_KHR' specifies the CLOCK_MONOTONIC time
--- domain available on POSIX platforms. Timestamp values in this time
--- domain are in units of nanoseconds and are comparable with platform
--- timestamp values captured using the POSIX clock_gettime API as computed
--- by this example:
-pattern TIME_DOMAIN_CLOCK_MONOTONIC_KHR = TimeDomainKHR 1
-
--- | 'TIME_DOMAIN_CLOCK_MONOTONIC_RAW_KHR' specifies the CLOCK_MONOTONIC_RAW
--- time domain available on POSIX platforms. Timestamp values in this time
--- domain are in units of nanoseconds and are comparable with platform
--- timestamp values captured using the POSIX clock_gettime API as computed
--- by this example:
-pattern TIME_DOMAIN_CLOCK_MONOTONIC_RAW_KHR = TimeDomainKHR 2
-
--- | 'TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_KHR' specifies the performance
--- counter (QPC) time domain available on Windows. Timestamp values in this
--- time domain are in the same units as those provided by the Windows
--- QueryPerformanceCounter API and are comparable with platform timestamp
--- values captured using that API as computed by this example:
-pattern TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_KHR = TimeDomainKHR 3
-
-{-# COMPLETE
-  TIME_DOMAIN_DEVICE_KHR
-  , TIME_DOMAIN_CLOCK_MONOTONIC_KHR
-  , TIME_DOMAIN_CLOCK_MONOTONIC_RAW_KHR
-  , TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_KHR ::
-    TimeDomainKHR
-  #-}
-
-conNameTimeDomainKHR :: String
-conNameTimeDomainKHR = "TimeDomainKHR"
-
-enumPrefixTimeDomainKHR :: String
-enumPrefixTimeDomainKHR = "TIME_DOMAIN_"
-
-showTableTimeDomainKHR :: [(TimeDomainKHR, String)]
-showTableTimeDomainKHR =
-  [ (TIME_DOMAIN_DEVICE_KHR, "DEVICE_KHR")
-  ,
-    ( TIME_DOMAIN_CLOCK_MONOTONIC_KHR
-    , "CLOCK_MONOTONIC_KHR"
-    )
-  ,
-    ( TIME_DOMAIN_CLOCK_MONOTONIC_RAW_KHR
-    , "CLOCK_MONOTONIC_RAW_KHR"
-    )
-  ,
-    ( TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_KHR
-    , "QUERY_PERFORMANCE_COUNTER_KHR"
-    )
-  ]
-
-instance Show TimeDomainKHR where
-  showsPrec =
-    enumShowsPrec
-      enumPrefixTimeDomainKHR
-      showTableTimeDomainKHR
-      conNameTimeDomainKHR
-      (\(TimeDomainKHR x) -> x)
-      (showsPrec 11)
-
-instance Read TimeDomainKHR where
-  readPrec =
-    enumReadPrec
-      enumPrefixTimeDomainKHR
-      showTableTimeDomainKHR
-      conNameTimeDomainKHR
-      TimeDomainKHR
 
 type KHR_CALIBRATED_TIMESTAMPS_SPEC_VERSION = 1
 
diff --git a/src/Vulkan/Extensions/VK_KHR_calibrated_timestamps.hs-boot b/src/Vulkan/Extensions/VK_KHR_calibrated_timestamps.hs-boot
--- a/src/Vulkan/Extensions/VK_KHR_calibrated_timestamps.hs-boot
+++ b/src/Vulkan/Extensions/VK_KHR_calibrated_timestamps.hs-boot
@@ -72,7 +72,7 @@
 --
 -- == New Enums
 --
--- -   'TimeDomainKHR'
+-- -   'Vulkan.Extensions.VK_EXT_present_timing.TimeDomainKHR'
 --
 -- == New Enum Constants
 --
@@ -97,25 +97,26 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_calibrated_timestamps Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_calibrated_timestamps 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_calibrated_timestamps  ( CalibratedTimestampInfoKHR
-                                                       , TimeDomainKHR
-                                                       ) where
+module Vulkan.Extensions.VK_KHR_calibrated_timestamps  (CalibratedTimestampInfoKHR) where
 
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (ToCStruct)
 import Data.Kind (Type)
-
-data CalibratedTimestampInfoKHR
-
-instance ToCStruct CalibratedTimestampInfoKHR
-instance Show CalibratedTimestampInfoKHR
-
-instance FromCStruct CalibratedTimestampInfoKHR
+import {-# SOURCE #-} Vulkan.CStruct.Extends (Chain)
+import {-# SOURCE #-} Vulkan.CStruct.Extends (Extendss)
+import {-# SOURCE #-} Vulkan.CStruct.Extends (PeekChain)
+import {-# SOURCE #-} Vulkan.CStruct.Extends (PokeChain)
+type role CalibratedTimestampInfoKHR nominal
+data CalibratedTimestampInfoKHR (es :: [Type])
 
+instance ( Extendss CalibratedTimestampInfoKHR es
+         , PokeChain es ) => ToCStruct (CalibratedTimestampInfoKHR es)
+instance Show (Chain es) => Show (CalibratedTimestampInfoKHR es)
 
-data TimeDomainKHR
+instance ( Extendss CalibratedTimestampInfoKHR es
+         , PeekChain es ) => FromCStruct (CalibratedTimestampInfoKHR es)
 
diff --git a/src/Vulkan/Extensions/VK_KHR_compute_shader_derivatives.hs b/src/Vulkan/Extensions/VK_KHR_compute_shader_derivatives.hs
--- a/src/Vulkan/Extensions/VK_KHR_compute_shader_derivatives.hs
+++ b/src/Vulkan/Extensions/VK_KHR_compute_shader_derivatives.hs
@@ -22,6 +22,8 @@
 --
 -- [__Extension and Version Dependencies__]
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
 --
 -- [__SPIR-V Dependencies__]
 --
@@ -75,7 +77,7 @@
 --
 --     -   Hans-Kristian Arntzen, Valve
 --
---     -   Matthew Netsh, Qualcomm
+--     -   Matthew Netsch, Qualcomm
 --
 -- == Description
 --
@@ -96,7 +98,7 @@
 --
 -- The new execution modes are supported in compute shaders and optionally
 -- (see
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-meshAndTaskShaderDerivatives meshAndTaskShaderDerivatives>)
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-meshAndTaskShaderDerivatives meshAndTaskShaderDerivatives>)
 -- in mesh and task shaders.
 --
 -- == New Structures
@@ -126,9 +128,9 @@
 --
 -- == New SPIR-V Capability
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-ComputeDerivativeGroupQuadsKHR ComputeDerivativeGroupQuadsKHR>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-ComputeDerivativeGroupQuadsKHR ComputeDerivativeGroupQuadsKHR>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-ComputeDerivativeGroupLinearKHR ComputeDerivativeGroupLinearKHR>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-ComputeDerivativeGroupLinearKHR ComputeDerivativeGroupLinearKHR>
 --
 -- == Examples
 --
@@ -149,7 +151,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_compute_shader_derivatives Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_compute_shader_derivatives Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -195,7 +197,7 @@
 -- = Description
 --
 -- See
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-scope-quad Quad shader scope>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-scope-quad Quad shader scope>
 -- for more information.
 --
 -- If the 'PhysicalDeviceComputeShaderDerivativesFeaturesKHR'. structure is
@@ -204,16 +206,26 @@
 -- 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. 'PhysicalDeviceComputeShaderDerivativesFeaturesKHR'. /can/
--- also be used in the @pNext@ chain of
--- 'Vulkan.Core10.Device.DeviceCreateInfo' to selectively enable these
--- features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceComputeShaderDerivativesFeaturesKHR'., it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_compute_shader_derivatives VK_KHR_compute_shader_derivatives>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_compute_shader_derivatives VK_NV_compute_shader_derivatives>,
 -- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceComputeShaderDerivativesFeaturesKHR = PhysicalDeviceComputeShaderDerivativesFeaturesKHR
@@ -288,7 +300,11 @@
 -- it is filled in with each corresponding implementation-dependent
 -- property.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Extensions/VK_KHR_compute_shader_derivatives.hs-boot b/src/Vulkan/Extensions/VK_KHR_compute_shader_derivatives.hs-boot
--- a/src/Vulkan/Extensions/VK_KHR_compute_shader_derivatives.hs-boot
+++ b/src/Vulkan/Extensions/VK_KHR_compute_shader_derivatives.hs-boot
@@ -22,6 +22,8 @@
 --
 -- [__Extension and Version Dependencies__]
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
 --
 -- [__SPIR-V Dependencies__]
 --
@@ -75,7 +77,7 @@
 --
 --     -   Hans-Kristian Arntzen, Valve
 --
---     -   Matthew Netsh, Qualcomm
+--     -   Matthew Netsch, Qualcomm
 --
 -- == Description
 --
@@ -96,7 +98,7 @@
 --
 -- The new execution modes are supported in compute shaders and optionally
 -- (see
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-meshAndTaskShaderDerivatives meshAndTaskShaderDerivatives>)
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-meshAndTaskShaderDerivatives meshAndTaskShaderDerivatives>)
 -- in mesh and task shaders.
 --
 -- == New Structures
@@ -126,9 +128,9 @@
 --
 -- == New SPIR-V Capability
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-ComputeDerivativeGroupQuadsKHR ComputeDerivativeGroupQuadsKHR>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-ComputeDerivativeGroupQuadsKHR ComputeDerivativeGroupQuadsKHR>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-ComputeDerivativeGroupLinearKHR ComputeDerivativeGroupLinearKHR>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-ComputeDerivativeGroupLinearKHR ComputeDerivativeGroupLinearKHR>
 --
 -- == Examples
 --
@@ -149,7 +151,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_compute_shader_derivatives Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_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_KHR_cooperative_matrix.hs b/src/Vulkan/Extensions/VK_KHR_cooperative_matrix.hs
--- a/src/Vulkan/Extensions/VK_KHR_cooperative_matrix.hs
+++ b/src/Vulkan/Extensions/VK_KHR_cooperative_matrix.hs
@@ -97,7 +97,7 @@
 --
 -- == New Enums
 --
--- -   'ComponentTypeKHR'
+-- -   'Vulkan.Extensions.VK_NV_cooperative_vector.ComponentTypeKHR'
 --
 -- -   'ScopeKHR'
 --
@@ -117,8 +117,18 @@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-CooperativeMatrixKHR CooperativeMatrixKHR>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-CooperativeMatrixKHR CooperativeMatrixKHR>
 --
+-- == Issues
+--
+-- 1.) How does cooperativeMatrixRobustBufferAccess interact with
+-- nullDescriptor?
+--
+-- __RESOLVED__: nullDescriptor is not allowed here While drivers can
+-- handle going OOB into a buffer, if there is not buffer, via
+-- nullDescriptor, it is invalid to load\/store from the cooperative
+-- matrix.
+--
 -- == Version History
 --
 -- -   Revision 2, 2023-05-03 (Kevin Petit)
@@ -136,7 +146,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_cooperative_matrix Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_cooperative_matrix Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -150,23 +160,11 @@
                                                               , SCOPE_QUEUE_FAMILY_KHR
                                                               , ..
                                                               )
-                                                    , ComponentTypeKHR( COMPONENT_TYPE_FLOAT16_KHR
-                                                                      , COMPONENT_TYPE_FLOAT32_KHR
-                                                                      , COMPONENT_TYPE_FLOAT64_KHR
-                                                                      , COMPONENT_TYPE_SINT8_KHR
-                                                                      , COMPONENT_TYPE_SINT16_KHR
-                                                                      , COMPONENT_TYPE_SINT32_KHR
-                                                                      , COMPONENT_TYPE_SINT64_KHR
-                                                                      , COMPONENT_TYPE_UINT8_KHR
-                                                                      , COMPONENT_TYPE_UINT16_KHR
-                                                                      , COMPONENT_TYPE_UINT32_KHR
-                                                                      , COMPONENT_TYPE_UINT64_KHR
-                                                                      , ..
-                                                                      )
                                                     , KHR_COOPERATIVE_MATRIX_SPEC_VERSION
                                                     , pattern KHR_COOPERATIVE_MATRIX_SPEC_VERSION
                                                     , KHR_COOPERATIVE_MATRIX_EXTENSION_NAME
                                                     , pattern KHR_COOPERATIVE_MATRIX_EXTENSION_NAME
+                                                    , ComponentTypeKHR(..)
                                                     ) where
 
 import Vulkan.Internal.Utils (enumReadPrec)
@@ -217,6 +215,7 @@
 import Vulkan.Core10.FundamentalTypes (boolToBool32)
 import Vulkan.NamedType ((:::))
 import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.Extensions.VK_NV_cooperative_vector (ComponentTypeKHR)
 import Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceCooperativeMatrixPropertiesKHR))
 import Vulkan.Core10.Handles (PhysicalDevice)
 import Vulkan.Core10.Handles (PhysicalDevice(..))
@@ -231,6 +230,7 @@
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_KHR))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_KHR))
 import Vulkan.Core10.Enums.Result (Result(SUCCESS))
+import Vulkan.Extensions.VK_NV_cooperative_vector (ComponentTypeKHR(..))
 foreign import ccall
 #if !defined(SAFE_FOREIGN_CALLS)
   unsafe
@@ -274,16 +274,20 @@
 --
 -- [<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'
 --
+--     -   '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_DEVICE_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_cooperative_matrix VK_KHR_cooperative_matrix>,
@@ -333,12 +337,22 @@
 -- 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. 'PhysicalDeviceCooperativeMatrixFeaturesKHR' /can/ also be
--- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceCooperativeMatrixFeaturesKHR', it /must/ add an instance
+-- of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_cooperative_matrix VK_KHR_cooperative_matrix>,
@@ -350,8 +364,10 @@
     cooperativeMatrix :: Bool
   , -- | #features-cooperativeMatrixRobustBufferAccess#
     -- @cooperativeMatrixRobustBufferAccess@ indicates that the implementation
-    -- supports robust buffer access for SPIR-V @OpCooperativeMatrixLoadKHR@
-    -- and @OpCooperativeMatrixStoreKHR@ instructions.
+    -- supports
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-robust-buffer-access robust buffer access>
+    -- for SPIR-V @OpCooperativeMatrixLoadKHR@ and
+    -- @OpCooperativeMatrixStoreKHR@ instructions.
     cooperativeMatrixRobustBufferAccess :: Bool
   }
   deriving (Typeable, Eq)
@@ -410,7 +426,7 @@
 -- of @MSize@, @KSize@, and @NSize@.
 --
 -- If the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-cooperativeMatrixWorkgroupScope cooperativeMatrixWorkgroupScope>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-cooperativeMatrixWorkgroupScope cooperativeMatrixWorkgroupScope>
 -- feature is not supported, @scope@ /must/ be 'SCOPE_SUBGROUP_KHR'.
 --
 -- == Valid Usage (Implicit)
@@ -418,8 +434,9 @@
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_cooperative_matrix VK_KHR_cooperative_matrix>,
--- 'Vulkan.Core10.FundamentalTypes.Bool32', 'ComponentTypeKHR', 'ScopeKHR',
--- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Extensions.VK_NV_cooperative_vector.ComponentTypeKHR',
+-- 'ScopeKHR', 'Vulkan.Core10.Enums.StructureType.StructureType',
 -- 'getPhysicalDeviceCooperativeMatrixPropertiesKHR'
 data CooperativeMatrixPropertiesKHR = CooperativeMatrixPropertiesKHR
   { -- | @MSize@ is the number of rows in matrices @A@, @C@, and
@@ -430,14 +447,18 @@
     nSize :: Word32
   , -- | @KSize@ is the number of columns in matrix @A@ and rows in matrix @B@.
     kSize :: Word32
-  , -- | @AType@ is the component type of matrix @A@, of type 'ComponentTypeKHR'.
+  , -- | @AType@ is the component type of matrix @A@, of type
+    -- 'Vulkan.Extensions.VK_NV_cooperative_vector.ComponentTypeKHR'.
     aType :: ComponentTypeKHR
-  , -- | @BType@ is the component type of matrix @B@, of type 'ComponentTypeKHR'.
+  , -- | @BType@ is the component type of matrix @B@, of type
+    -- 'Vulkan.Extensions.VK_NV_cooperative_vector.ComponentTypeKHR'.
     bType :: ComponentTypeKHR
-  , -- | @CType@ is the component type of matrix @C@, of type 'ComponentTypeKHR'.
+  , -- | @CType@ is the component type of matrix @C@, of type
+    -- 'Vulkan.Extensions.VK_NV_cooperative_vector.ComponentTypeKHR'.
     cType :: ComponentTypeKHR
   , -- | @ResultType@ is the component type of matrix
-    -- 'Vulkan.Core10.Enums.Result.Result', of type 'ComponentTypeKHR'.
+    -- 'Vulkan.Core10.Enums.Result.Result', of type
+    -- 'Vulkan.Extensions.VK_NV_cooperative_vector.ComponentTypeKHR'.
     resultType :: ComponentTypeKHR
   , -- | @saturatingAccumulation@ indicates whether the @SaturatingAccumulation@
     -- operand to @OpCooperativeMatrixMulAddKHR@ /must/ be present or not. If
@@ -543,8 +564,12 @@
 -- it is filled in with each corresponding implementation-dependent
 -- property.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_cooperative_matrix VK_KHR_cooperative_matrix>,
@@ -602,29 +627,39 @@
 --
 -- = Description
 --
+-- -   'SCOPE_DEVICE_KHR' corresponds to SPIR-V
+--     'Vulkan.Core10.Handles.Device' scope.
+--
+-- -   'SCOPE_WORKGROUP_KHR' corresponds to SPIR-V @Workgroup@ scope.
+--
+-- -   'SCOPE_SUBGROUP_KHR' corresponds to SPIR-V @Subgroup@ scope.
+--
+-- -   'SCOPE_QUEUE_FAMILY_KHR' corresponds to SPIR-V @QueueFamily@ scope.
+--
 -- All enum values match the corresponding SPIR-V value.
 --
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_cooperative_matrix VK_KHR_cooperative_matrix>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_cooperative_matrix VK_NV_cooperative_matrix>,
 -- 'Vulkan.Extensions.VK_NV_cooperative_matrix2.CooperativeMatrixFlexibleDimensionsPropertiesNV',
--- 'CooperativeMatrixPropertiesKHR'
+-- 'CooperativeMatrixPropertiesKHR',
+-- 'Vulkan.Extensions.VK_NV_cooperative_matrix.CooperativeMatrixPropertiesNV'
 newtype ScopeKHR = ScopeKHR 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
 
--- | 'SCOPE_DEVICE_KHR' corresponds to SPIR-V 'Vulkan.Core10.Handles.Device'
--- scope.
+-- No documentation found for Nested "VkScopeKHR" "VK_SCOPE_DEVICE_KHR"
 pattern SCOPE_DEVICE_KHR = ScopeKHR 1
 
--- | 'SCOPE_WORKGROUP_KHR' corresponds to SPIR-V @Workgroup@ scope.
+-- No documentation found for Nested "VkScopeKHR" "VK_SCOPE_WORKGROUP_KHR"
 pattern SCOPE_WORKGROUP_KHR = ScopeKHR 2
 
--- | 'SCOPE_SUBGROUP_KHR' corresponds to SPIR-V @Subgroup@ scope.
+-- No documentation found for Nested "VkScopeKHR" "VK_SCOPE_SUBGROUP_KHR"
 pattern SCOPE_SUBGROUP_KHR = ScopeKHR 3
 
--- | 'SCOPE_QUEUE_FAMILY_KHR' corresponds to SPIR-V @QueueFamily@ scope.
+-- No documentation found for Nested "VkScopeKHR" "VK_SCOPE_QUEUE_FAMILY_KHR"
 pattern SCOPE_QUEUE_FAMILY_KHR = ScopeKHR 5
 
 {-# COMPLETE
@@ -665,102 +700,6 @@
       showTableScopeKHR
       conNameScopeKHR
       ScopeKHR
-
--- | VkComponentTypeKHR - Specify SPIR-V cooperative matrix component type
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_cooperative_matrix VK_KHR_cooperative_matrix>,
--- 'Vulkan.Extensions.VK_NV_cooperative_matrix2.CooperativeMatrixFlexibleDimensionsPropertiesNV',
--- 'CooperativeMatrixPropertiesKHR'
-newtype ComponentTypeKHR = ComponentTypeKHR Int32
-  deriving newtype (Eq, Ord, Storable, Zero)
-
--- | 'COMPONENT_TYPE_FLOAT16_KHR' corresponds to SPIR-V @OpTypeFloat@ 16.
-pattern COMPONENT_TYPE_FLOAT16_KHR = ComponentTypeKHR 0
-
--- | 'COMPONENT_TYPE_FLOAT32_KHR' corresponds to SPIR-V @OpTypeFloat@ 32.
-pattern COMPONENT_TYPE_FLOAT32_KHR = ComponentTypeKHR 1
-
--- | 'COMPONENT_TYPE_FLOAT64_KHR' corresponds to SPIR-V @OpTypeFloat@ 64.
-pattern COMPONENT_TYPE_FLOAT64_KHR = ComponentTypeKHR 2
-
--- | 'COMPONENT_TYPE_SINT8_KHR' corresponds to SPIR-V @OpTypeInt@ 8 0\/1.
-pattern COMPONENT_TYPE_SINT8_KHR = ComponentTypeKHR 3
-
--- | 'COMPONENT_TYPE_SINT16_KHR' corresponds to SPIR-V @OpTypeInt@ 16 0\/1.
-pattern COMPONENT_TYPE_SINT16_KHR = ComponentTypeKHR 4
-
--- | 'COMPONENT_TYPE_SINT32_KHR' corresponds to SPIR-V @OpTypeInt@ 32 0\/1.
-pattern COMPONENT_TYPE_SINT32_KHR = ComponentTypeKHR 5
-
--- | 'COMPONENT_TYPE_SINT64_KHR' corresponds to SPIR-V @OpTypeInt@ 64 0\/1.
-pattern COMPONENT_TYPE_SINT64_KHR = ComponentTypeKHR 6
-
--- | 'COMPONENT_TYPE_UINT8_KHR' corresponds to SPIR-V @OpTypeInt@ 8 0\/1.
-pattern COMPONENT_TYPE_UINT8_KHR = ComponentTypeKHR 7
-
--- | 'COMPONENT_TYPE_UINT16_KHR' corresponds to SPIR-V @OpTypeInt@ 16 0\/1.
-pattern COMPONENT_TYPE_UINT16_KHR = ComponentTypeKHR 8
-
--- | 'COMPONENT_TYPE_UINT32_KHR' corresponds to SPIR-V @OpTypeInt@ 32 0\/1.
-pattern COMPONENT_TYPE_UINT32_KHR = ComponentTypeKHR 9
-
--- | 'COMPONENT_TYPE_UINT64_KHR' corresponds to SPIR-V @OpTypeInt@ 64 0\/1.
-pattern COMPONENT_TYPE_UINT64_KHR = ComponentTypeKHR 10
-
-{-# COMPLETE
-  COMPONENT_TYPE_FLOAT16_KHR
-  , COMPONENT_TYPE_FLOAT32_KHR
-  , COMPONENT_TYPE_FLOAT64_KHR
-  , COMPONENT_TYPE_SINT8_KHR
-  , COMPONENT_TYPE_SINT16_KHR
-  , COMPONENT_TYPE_SINT32_KHR
-  , COMPONENT_TYPE_SINT64_KHR
-  , COMPONENT_TYPE_UINT8_KHR
-  , COMPONENT_TYPE_UINT16_KHR
-  , COMPONENT_TYPE_UINT32_KHR
-  , COMPONENT_TYPE_UINT64_KHR ::
-    ComponentTypeKHR
-  #-}
-
-conNameComponentTypeKHR :: String
-conNameComponentTypeKHR = "ComponentTypeKHR"
-
-enumPrefixComponentTypeKHR :: String
-enumPrefixComponentTypeKHR = "COMPONENT_TYPE_"
-
-showTableComponentTypeKHR :: [(ComponentTypeKHR, String)]
-showTableComponentTypeKHR =
-  [ (COMPONENT_TYPE_FLOAT16_KHR, "FLOAT16_KHR")
-  , (COMPONENT_TYPE_FLOAT32_KHR, "FLOAT32_KHR")
-  , (COMPONENT_TYPE_FLOAT64_KHR, "FLOAT64_KHR")
-  , (COMPONENT_TYPE_SINT8_KHR, "SINT8_KHR")
-  , (COMPONENT_TYPE_SINT16_KHR, "SINT16_KHR")
-  , (COMPONENT_TYPE_SINT32_KHR, "SINT32_KHR")
-  , (COMPONENT_TYPE_SINT64_KHR, "SINT64_KHR")
-  , (COMPONENT_TYPE_UINT8_KHR, "UINT8_KHR")
-  , (COMPONENT_TYPE_UINT16_KHR, "UINT16_KHR")
-  , (COMPONENT_TYPE_UINT32_KHR, "UINT32_KHR")
-  , (COMPONENT_TYPE_UINT64_KHR, "UINT64_KHR")
-  ]
-
-instance Show ComponentTypeKHR where
-  showsPrec =
-    enumShowsPrec
-      enumPrefixComponentTypeKHR
-      showTableComponentTypeKHR
-      conNameComponentTypeKHR
-      (\(ComponentTypeKHR x) -> x)
-      (showsPrec 11)
-
-instance Read ComponentTypeKHR where
-  readPrec =
-    enumReadPrec
-      enumPrefixComponentTypeKHR
-      showTableComponentTypeKHR
-      conNameComponentTypeKHR
-      ComponentTypeKHR
 
 type KHR_COOPERATIVE_MATRIX_SPEC_VERSION = 2
 
diff --git a/src/Vulkan/Extensions/VK_KHR_cooperative_matrix.hs-boot b/src/Vulkan/Extensions/VK_KHR_cooperative_matrix.hs-boot
--- a/src/Vulkan/Extensions/VK_KHR_cooperative_matrix.hs-boot
+++ b/src/Vulkan/Extensions/VK_KHR_cooperative_matrix.hs-boot
@@ -97,7 +97,7 @@
 --
 -- == New Enums
 --
--- -   'ComponentTypeKHR'
+-- -   'Vulkan.Extensions.VK_NV_cooperative_vector.ComponentTypeKHR'
 --
 -- -   'ScopeKHR'
 --
@@ -117,8 +117,18 @@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-CooperativeMatrixKHR CooperativeMatrixKHR>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-CooperativeMatrixKHR CooperativeMatrixKHR>
 --
+-- == Issues
+--
+-- 1.) How does cooperativeMatrixRobustBufferAccess interact with
+-- nullDescriptor?
+--
+-- __RESOLVED__: nullDescriptor is not allowed here While drivers can
+-- handle going OOB into a buffer, if there is not buffer, via
+-- nullDescriptor, it is invalid to load\/store from the cooperative
+-- matrix.
+--
 -- == Version History
 --
 -- -   Revision 2, 2023-05-03 (Kevin Petit)
@@ -136,7 +146,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_cooperative_matrix Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_cooperative_matrix Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -144,7 +154,6 @@
                                                     , PhysicalDeviceCooperativeMatrixFeaturesKHR
                                                     , PhysicalDeviceCooperativeMatrixPropertiesKHR
                                                     , ScopeKHR
-                                                    , ComponentTypeKHR
                                                     ) where
 
 import Vulkan.CStruct (FromCStruct)
@@ -176,7 +185,4 @@
 
 
 data ScopeKHR
-
-
-data ComponentTypeKHR
 
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
@@ -155,7 +155,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_copy_commands2 Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
diff --git a/src/Vulkan/Extensions/VK_KHR_copy_memory_indirect.hs b/src/Vulkan/Extensions/VK_KHR_copy_memory_indirect.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_KHR_copy_memory_indirect.hs
@@ -0,0 +1,1402 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_KHR_copy_memory_indirect - device extension
+--
+-- = VK_KHR_copy_memory_indirect
+--
+-- [__Name String__]
+--     @VK_KHR_copy_memory_indirect@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     550
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Ratified
+--
+-- [__Extension and Version Dependencies__]
+--         
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--          and
+--         
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_buffer_device_address VK_KHR_buffer_device_address>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.2 Vulkan Version 1.2>
+--
+-- [__Contact__]
+--
+--     -   Vikram Kushwaha
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_copy_memory_indirect] @vkushwaha-nv%0A*Here describe the issue or question you have about the VK_KHR_copy_memory_indirect extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_KHR_copy_memory_indirect.adoc VK_KHR_copy_memory_indirect>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2025-01-25
+--
+-- [__Contributors__]
+--
+--     -   Daniel Koch, NVIDIA
+--
+--     -   Vikram Kushwaha, NVIDIA
+--
+--     -   Jeff Bolz, NVIDIA
+--
+--     -   Christoph Kubisch, NVIDIA
+--
+--     -   Stuart Smith, AMD
+--
+--     -   Faith Ekstrand, Collabora
+--
+--     -   Caterina Shablia, Collabora
+--
+--     -   Spencer Fricke, LunarG
+--
+--     -   Matthew Netsch, Qualcomm Technologies, Inc
+--
+--     -   Mike Blumenkrantz, Valve
+--
+--     -   Alyssa Rosenzweig, Valve
+--
+-- == Description
+--
+-- This extension adds support for performing copies between memory and
+-- image regions using indirect parameters that are read by the device from
+-- a buffer during execution. This functionality may be useful for
+-- performing copies where the copy parameters are not known during the
+-- command buffer creation time.
+--
+-- == New Commands
+--
+-- -   'cmdCopyMemoryIndirectKHR'
+--
+-- -   'cmdCopyMemoryToImageIndirectKHR'
+--
+-- == New Structures
+--
+-- -   'CopyMemoryIndirectCommandKHR'
+--
+-- -   'CopyMemoryIndirectInfoKHR'
+--
+-- -   'CopyMemoryToImageIndirectCommandKHR'
+--
+-- -   'CopyMemoryToImageIndirectInfoKHR'
+--
+-- -   'Vulkan.Extensions.VK_KHR_device_address_commands.StridedDeviceAddressRangeKHR'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceCopyMemoryIndirectFeaturesKHR'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDeviceCopyMemoryIndirectPropertiesKHR'
+--
+-- == New Enums
+--
+-- -   'AddressCopyFlagBitsKHR'
+--
+-- == New Bitmasks
+--
+-- -   'AddressCopyFlagsKHR'
+--
+-- == New Enum Constants
+--
+-- -   'KHR_COPY_MEMORY_INDIRECT_EXTENSION_NAME'
+--
+-- -   'KHR_COPY_MEMORY_INDIRECT_SPEC_VERSION'
+--
+-- -   Extending
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FormatFeatureFlagBits2':
+--
+--     -   'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_COPY_IMAGE_INDIRECT_DST_BIT_KHR'
+--
+-- -   Extending
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlagBits2':
+--
+--     -   'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COPY_INDIRECT_BIT_KHR'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_MEMORY_INDIRECT_INFO_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INDIRECT_INFO_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_KHR'
+--
+-- == Version History
+--
+-- -   Revision 1, 2025-01-25 (Daniel Koch, Vikram Kushwaha)
+--
+--     -   Initial external release
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_copy_memory_indirect Vulkan Specification>.
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_KHR_copy_memory_indirect  ( cmdCopyMemoryIndirectKHR
+                                                      , cmdCopyMemoryToImageIndirectKHR
+                                                      , CopyMemoryIndirectCommandKHR(..)
+                                                      , CopyMemoryIndirectInfoKHR(..)
+                                                      , CopyMemoryToImageIndirectCommandKHR(..)
+                                                      , CopyMemoryToImageIndirectInfoKHR(..)
+                                                      , PhysicalDeviceCopyMemoryIndirectFeaturesKHR(..)
+                                                      , PhysicalDeviceCopyMemoryIndirectPropertiesKHR(..)
+                                                      , AddressCopyFlagsKHR
+                                                      , AddressCopyFlagBitsKHR( ADDRESS_COPY_DEVICE_LOCAL_BIT_KHR
+                                                                              , ADDRESS_COPY_SPARSE_BIT_KHR
+                                                                              , ADDRESS_COPY_PROTECTED_BIT_KHR
+                                                                              , ..
+                                                                              )
+                                                      , KHR_COPY_MEMORY_INDIRECT_SPEC_VERSION
+                                                      , pattern KHR_COPY_MEMORY_INDIRECT_SPEC_VERSION
+                                                      , KHR_COPY_MEMORY_INDIRECT_EXTENSION_NAME
+                                                      , pattern KHR_COPY_MEMORY_INDIRECT_EXTENSION_NAME
+                                                      , StridedDeviceAddressRangeKHR(..)
+                                                      ) where
+
+import Data.Bits (Bits)
+import Data.Bits (FiniteBits)
+import Vulkan.Internal.Utils (enumReadPrec)
+import Vulkan.Internal.Utils (enumShowsPrec)
+import Vulkan.Internal.Utils (traceAroundEvent)
+import Control.Monad (unless)
+import Control.Monad.IO.Class (liftIO)
+import Foreign.Marshal.Alloc (allocaBytes)
+import GHC.IO (throwIO)
+import GHC.Ptr (nullFunPtr)
+import Foreign.Ptr (nullPtr)
+import Foreign.Ptr (plusPtr)
+import GHC.Show (showString)
+import Numeric (showHex)
+import Control.Monad.Trans.Class (lift)
+import Control.Monad.Trans.Cont (evalContT)
+import 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.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.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.Core10.FundamentalTypes (Bool32)
+import Vulkan.Core10.Handles (CommandBuffer)
+import Vulkan.Core10.Handles (CommandBuffer(..))
+import Vulkan.Core10.Handles (CommandBuffer(CommandBuffer))
+import Vulkan.Core10.Handles (CommandBuffer_T)
+import Vulkan.Core10.FundamentalTypes (DeviceAddress)
+import Vulkan.Dynamic (DeviceCmds(pVkCmdCopyMemoryIndirectKHR))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdCopyMemoryToImageIndirectKHR))
+import Vulkan.Core10.FundamentalTypes (DeviceSize)
+import Vulkan.Core10.FundamentalTypes (Extent3D)
+import Vulkan.Core10.FundamentalTypes (Flags)
+import Vulkan.Core10.Handles (Image)
+import Vulkan.Core10.Enums.ImageLayout (ImageLayout)
+import Vulkan.Core10.CommandBufferBuilding (ImageSubresourceLayers)
+import Vulkan.Core10.FundamentalTypes (Offset3D)
+import Vulkan.Core10.Enums.QueueFlagBits (QueueFlags)
+import Vulkan.Extensions.VK_KHR_device_address_commands (StridedDeviceAddressRangeKHR)
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COPY_MEMORY_INDIRECT_INFO_KHR))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INDIRECT_INFO_KHR))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_KHR))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_KHR))
+import Vulkan.Extensions.VK_KHR_device_address_commands (StridedDeviceAddressRangeKHR(..))
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdCopyMemoryIndirectKHR
+  :: FunPtr (Ptr CommandBuffer_T -> Ptr CopyMemoryIndirectInfoKHR -> IO ()) -> Ptr CommandBuffer_T -> Ptr CopyMemoryIndirectInfoKHR -> IO ()
+
+-- | vkCmdCopyMemoryIndirectKHR - Copy data between memory regions
+--
+-- = Description
+--
+-- Each region specified in the memory referenced by
+-- @pCopyMemoryIndirectInfo->copyAddressRange@ is copied from the source
+-- region to the specified destination region. The results are undefined if
+-- any of the source and destination regions overlap in memory.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdCopyMemoryIndirectKHR-indirectMemoryCopy-10935# The
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-indirectMemoryCopy indirectMemoryCopy>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdCopyMemoryIndirectKHR-commandBuffer-10936# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support at least one of the queue types
+--     specified in
+--     'PhysicalDeviceCopyMemoryIndirectPropertiesKHR'::@supportedQueues@
+--
+-- -   #VUID-vkCmdCopyMemoryIndirectKHR-commandBuffer-10937#
+--     @commandBuffer@ must not be a protected command buffer
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdCopyMemoryIndirectKHR-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdCopyMemoryIndirectKHR-pCopyMemoryIndirectInfo-parameter#
+--     @pCopyMemoryIndirectInfo@ /must/ be a valid pointer to a valid
+--     'CopyMemoryIndirectInfoKHR' structure
+--
+-- -   #VUID-vkCmdCopyMemoryIndirectKHR-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-vkCmdCopyMemoryIndirectKHR-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT',
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT', or
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_TRANSFER_BIT' operations
+--
+-- -   #VUID-vkCmdCopyMemoryIndirectKHR-renderpass# This command /must/
+--     only be called outside of a render pass instance
+--
+-- -   #VUID-vkCmdCopyMemoryIndirectKHR-suspended# This command /must/ not
+--     be called between suspended render pass instances
+--
+-- -   #VUID-vkCmdCopyMemoryIndirectKHR-videocoding# This command /must/
+--     only be called outside of a video coding scope
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | VK_QUEUE_GRAPHICS_BIT                                                                                                 |                                                                                                                                        |
+-- |                                                                                                                            |                                                                                                                        |                                                                                                                             | VK_QUEUE_TRANSFER_BIT                                                                                                 |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdCopyMemoryIndirectKHR is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_copy_memory_indirect VK_KHR_copy_memory_indirect>,
+-- 'Vulkan.Core10.Handles.CommandBuffer', 'CopyMemoryIndirectInfoKHR'
+cmdCopyMemoryIndirectKHR :: forall io
+                          . (MonadIO io)
+                         => -- | @commandBuffer@ is the command buffer into which the command will be
+                            -- recorded.
+                            CommandBuffer
+                         -> -- | @pCopyMemoryIndirectInfo@ is a pointer to a 'CopyMemoryIndirectInfoKHR'
+                            -- structure containing the copy parameters, including the number of copies
+                            -- to execute and a strided array of 'CopyMemoryIndirectCommandKHR'
+                            -- structures.
+                            CopyMemoryIndirectInfoKHR
+                         -> io ()
+cmdCopyMemoryIndirectKHR commandBuffer
+                           copyMemoryIndirectInfo = liftIO . evalContT $ do
+  let vkCmdCopyMemoryIndirectKHRPtr = pVkCmdCopyMemoryIndirectKHR (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdCopyMemoryIndirectKHRPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdCopyMemoryIndirectKHR is null" Nothing Nothing
+  let vkCmdCopyMemoryIndirectKHR' = mkVkCmdCopyMemoryIndirectKHR vkCmdCopyMemoryIndirectKHRPtr
+  pCopyMemoryIndirectInfo <- ContT $ withCStruct (copyMemoryIndirectInfo)
+  lift $ traceAroundEvent "vkCmdCopyMemoryIndirectKHR" (vkCmdCopyMemoryIndirectKHR'
+                                                          (commandBufferHandle (commandBuffer))
+                                                          pCopyMemoryIndirectInfo)
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdCopyMemoryToImageIndirectKHR
+  :: FunPtr (Ptr CommandBuffer_T -> Ptr CopyMemoryToImageIndirectInfoKHR -> IO ()) -> Ptr CommandBuffer_T -> Ptr CopyMemoryToImageIndirectInfoKHR -> IO ()
+
+-- | vkCmdCopyMemoryToImageIndirectKHR - Copy data from a memory region to an
+-- image object
+--
+-- = Description
+--
+-- Each region specified in the memory referenced by
+-- @pCopyMemoryToImageIndirectInfo->copyAddressRange@ is copied from the
+-- source region to an image region in the destination image. If the
+-- destination image is of type
+-- 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', the starting slice and
+-- number of slices to copy are specified in
+-- @pImageSubresources->baseArrayLayer@ and
+-- @pImageSubresources->layerCount@ respectively as @imageOffset@ and
+-- @imageExtent@ from 'CopyMemoryToImageIndirectCommandKHR' are only
+-- available at device execution time. The results are undefined if any of
+-- the source and destination regions overlap in memory.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdCopyMemoryToImageIndirectKHR-indirectMemoryToImageCopy-10947#
+--     The
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-indirectMemoryToImageCopy indirectMemoryToImageCopy>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdCopyMemoryToImageIndirectKHR-commandBuffer-10948# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support at least one of the queue types
+--     specified in
+--     'PhysicalDeviceCopyMemoryIndirectPropertiesKHR'::@supportedQueues@
+--
+-- -   #VUID-vkCmdCopyMemoryToImageIndirectKHR-commandBuffer-10949#
+--     @commandBuffer@ must not be a protected command buffer
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdCopyMemoryToImageIndirectKHR-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdCopyMemoryToImageIndirectKHR-pCopyMemoryToImageIndirectInfo-parameter#
+--     @pCopyMemoryToImageIndirectInfo@ /must/ be a valid pointer to a
+--     valid 'CopyMemoryToImageIndirectInfoKHR' structure
+--
+-- -   #VUID-vkCmdCopyMemoryToImageIndirectKHR-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-vkCmdCopyMemoryToImageIndirectKHR-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT',
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT', or
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_TRANSFER_BIT' operations
+--
+-- -   #VUID-vkCmdCopyMemoryToImageIndirectKHR-renderpass# This command
+--     /must/ only be called outside of a render pass instance
+--
+-- -   #VUID-vkCmdCopyMemoryToImageIndirectKHR-suspended# This command
+--     /must/ not be called between suspended render pass instances
+--
+-- -   #VUID-vkCmdCopyMemoryToImageIndirectKHR-videocoding# This command
+--     /must/ only be called outside of a video coding scope
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | VK_QUEUE_GRAPHICS_BIT                                                                                                 |                                                                                                                                        |
+-- |                                                                                                                            |                                                                                                                        |                                                                                                                             | VK_QUEUE_TRANSFER_BIT                                                                                                 |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdCopyMemoryToImageIndirectKHR is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_copy_memory_indirect VK_KHR_copy_memory_indirect>,
+-- 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'CopyMemoryToImageIndirectInfoKHR'
+cmdCopyMemoryToImageIndirectKHR :: forall io
+                                 . (MonadIO io)
+                                => -- | @commandBuffer@ is the command buffer into which the command will be
+                                   -- recorded.
+                                   CommandBuffer
+                                -> -- | @pCopyMemoryToImageIndirectInfo@ is a pointer to a
+                                   -- 'CopyMemoryToImageIndirectInfoKHR' structure which contains the copy
+                                   -- parameters, including the number of copies to execute and a strided
+                                   -- array of 'CopyMemoryToImageIndirectCommandKHR' structures.
+                                   CopyMemoryToImageIndirectInfoKHR
+                                -> io ()
+cmdCopyMemoryToImageIndirectKHR commandBuffer
+                                  copyMemoryToImageIndirectInfo = liftIO . evalContT $ do
+  let vkCmdCopyMemoryToImageIndirectKHRPtr = pVkCmdCopyMemoryToImageIndirectKHR (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdCopyMemoryToImageIndirectKHRPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdCopyMemoryToImageIndirectKHR is null" Nothing Nothing
+  let vkCmdCopyMemoryToImageIndirectKHR' = mkVkCmdCopyMemoryToImageIndirectKHR vkCmdCopyMemoryToImageIndirectKHRPtr
+  pCopyMemoryToImageIndirectInfo <- ContT $ withCStruct (copyMemoryToImageIndirectInfo)
+  lift $ traceAroundEvent "vkCmdCopyMemoryToImageIndirectKHR" (vkCmdCopyMemoryToImageIndirectKHR'
+                                                                 (commandBufferHandle (commandBuffer))
+                                                                 pCopyMemoryToImageIndirectInfo)
+  pure $ ()
+
+
+-- | VkCopyMemoryIndirectCommandKHR - Structure specifying indirect memory
+-- region copy operation
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkCopyMemoryIndirectCommandKHR-srcAddress-10958# The
+--     @srcAddress@ /must/ be 4 byte aligned
+--
+-- -   #VUID-VkCopyMemoryIndirectCommandKHR-dstAddress-10959# The
+--     @dstAddress@ /must/ be 4 byte aligned
+--
+-- -   #VUID-VkCopyMemoryIndirectCommandKHR-size-10960# The @size@ /must/
+--     be 4 byte aligned
+--
+-- -   #VUID-VkCopyMemoryIndirectCommandKHR-srcAddress-10961# The memory in
+--     range [@srcAddress@, @srcAddress@ + @size@ - 1] /must/ be within the
+--     bounds of the memory allocation backing @srcAddress@
+--
+-- -   #VUID-VkCopyMemoryIndirectCommandKHR-dstAddress-10962# The memory in
+--     range [@dstAddress@, @dstAddress@ + @size@ - 1] /must/ be within the
+--     bounds of the memory allocation backing @dstAddress@
+--
+-- -   #VUID-VkCopyMemoryIndirectCommandKHR-srcAddress-12211# The range of
+--     memory defined by @srcAddress@ and @size@ /must/ be a device address
+--     range allocated to the application from a buffer created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_SRC_BIT'
+--     usage flag set
+--
+-- -   #VUID-VkCopyMemoryIndirectCommandKHR-dstAddress-12212# The range of
+--     memory defined by @dstAddress@ and @size@ /must/ be a device address
+--     range allocated to the application from a buffer created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_DST_BIT'
+--     usage flag set
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkCopyMemoryIndirectCommandKHR-srcAddress-parameter#
+--     @srcAddress@ /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' value
+--
+-- -   #VUID-VkCopyMemoryIndirectCommandKHR-dstAddress-parameter#
+--     @dstAddress@ /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' value
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_copy_memory_indirect VK_KHR_copy_memory_indirect>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_copy_memory_indirect VK_NV_copy_memory_indirect>,
+-- 'Vulkan.Core10.FundamentalTypes.DeviceAddress',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize'
+data CopyMemoryIndirectCommandKHR = CopyMemoryIndirectCommandKHR
+  { -- | @srcAddress@ is the starting address of the source device memory to copy
+    -- from.
+    srcAddress :: DeviceAddress
+  , -- | @dstAddress@ is the starting address of the destination device memory to
+    -- copy to.
+    dstAddress :: DeviceAddress
+  , -- | @size@ is the size of the copy in bytes.
+    size :: DeviceSize
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (CopyMemoryIndirectCommandKHR)
+#endif
+deriving instance Show CopyMemoryIndirectCommandKHR
+
+instance ToCStruct CopyMemoryIndirectCommandKHR where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p CopyMemoryIndirectCommandKHR{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr DeviceAddress)) (srcAddress)
+    poke ((p `plusPtr` 8 :: Ptr DeviceAddress)) (dstAddress)
+    poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (size)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr DeviceAddress)) (zero)
+    poke ((p `plusPtr` 8 :: Ptr DeviceAddress)) (zero)
+    poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (zero)
+    f
+
+instance FromCStruct CopyMemoryIndirectCommandKHR where
+  peekCStruct p = do
+    srcAddress <- peek @DeviceAddress ((p `plusPtr` 0 :: Ptr DeviceAddress))
+    dstAddress <- peek @DeviceAddress ((p `plusPtr` 8 :: Ptr DeviceAddress))
+    size <- peek @DeviceSize ((p `plusPtr` 16 :: Ptr DeviceSize))
+    pure $ CopyMemoryIndirectCommandKHR
+             srcAddress dstAddress size
+
+instance Storable CopyMemoryIndirectCommandKHR where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero CopyMemoryIndirectCommandKHR where
+  zero = CopyMemoryIndirectCommandKHR
+           zero
+           zero
+           zero
+
+
+-- | VkCopyMemoryIndirectInfoKHR - Parameters describing indirect copy
+-- parameters
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkCopyMemoryIndirectInfoKHR-srcCopyFlags-10938# If
+--     @srcCopyFlags@ contains 'ADDRESS_COPY_SPARSE_BIT_KHR', the source
+--     memory regions accessed /must/ be
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#sparsememory bound to memory>
+--
+-- -   #VUID-VkCopyMemoryIndirectInfoKHR-dstCopyFlags-10939# If
+--     @dstCopyFlags@ contains 'ADDRESS_COPY_SPARSE_BIT_KHR', the
+--     destination memory regions accessed /must/ be
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#sparsememory bound to memory>
+--
+-- -   #VUID-VkCopyMemoryIndirectInfoKHR-srcCopyFlags-10940# @srcCopyFlags@
+--     /must/ not contain 'ADDRESS_COPY_PROTECTED_BIT_KHR'
+--
+-- -   #VUID-VkCopyMemoryIndirectInfoKHR-dstCopyFlags-10941# @dstCopyFlags@
+--     /must/ not contain 'ADDRESS_COPY_PROTECTED_BIT_KHR'
+--
+-- -   #VUID-VkCopyMemoryIndirectInfoKHR-copyAddressRange-10942#
+--     @copyAddressRange.address@ /must/ be 4 byte aligned
+--
+-- -   #VUID-VkCopyMemoryIndirectInfoKHR-copyAddressRange-10943#
+--     @copyAddressRange.stride@ /must/ be a multiple of @4@ and /must/ be
+--     greater than or equal to sizeof('CopyMemoryIndirectCommandKHR')
+--
+-- -   #VUID-VkCopyMemoryIndirectInfoKHR-copyCount-10944# @copyCount@
+--     /must/ be less than or equal to @copyAddressRange.size@ \/
+--     @copyAddressRange.stride@
+--
+-- -   #VUID-VkCopyMemoryIndirectInfoKHR-copyAddressRange-10945# Any of the
+--     source or destination memory regions specified in @copyAddressRange@
+--     /must/ not overlap with any of the specified destination memory
+--     regions
+--
+-- -   #VUID-VkCopyMemoryIndirectInfoKHR-copyAddressRange-12210#
+--     @copyAddressRange@ /must/ be a device address range allocated to the
+--     application from a buffer created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'
+--     usage flag set
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkCopyMemoryIndirectInfoKHR-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_MEMORY_INDIRECT_INFO_KHR'
+--
+-- -   #VUID-VkCopyMemoryIndirectInfoKHR-pNext-pNext# @pNext@ /must/ be
+--     @NULL@
+--
+-- -   #VUID-VkCopyMemoryIndirectInfoKHR-srcCopyFlags-parameter#
+--     @srcCopyFlags@ /must/ be a valid combination of
+--     'AddressCopyFlagBitsKHR' values
+--
+-- -   #VUID-VkCopyMemoryIndirectInfoKHR-dstCopyFlags-parameter#
+--     @dstCopyFlags@ /must/ be a valid combination of
+--     'AddressCopyFlagBitsKHR' values
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_copy_memory_indirect VK_KHR_copy_memory_indirect>,
+-- 'AddressCopyFlagsKHR',
+-- 'Vulkan.Extensions.VK_KHR_device_address_commands.StridedDeviceAddressRangeKHR',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'cmdCopyMemoryIndirectKHR'
+data CopyMemoryIndirectInfoKHR = CopyMemoryIndirectInfoKHR
+  { -- | @srcCopyFlags@ is a 'AddressCopyFlagsKHR' value defining the copy flags
+    -- for the source address range.
+    srcCopyFlags :: AddressCopyFlagsKHR
+  , -- | @dstCopyFlags@ is a 'AddressCopyFlagsKHR' value defining the copy flags
+    -- for the destination address range.
+    dstCopyFlags :: AddressCopyFlagsKHR
+  , -- | @copyCount@ is the number of copies to execute, and /can/ be zero.
+    copyCount :: Word32
+  , -- | @copyAddressRange@ is a memory region specifying the copy parameters. It
+    -- is laid out as an array of 'CopyMemoryIndirectCommandKHR' structures.
+    copyAddressRange :: StridedDeviceAddressRangeKHR
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (CopyMemoryIndirectInfoKHR)
+#endif
+deriving instance Show CopyMemoryIndirectInfoKHR
+
+instance ToCStruct CopyMemoryIndirectInfoKHR where
+  withCStruct x f = allocaBytes 56 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p CopyMemoryIndirectInfoKHR{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_MEMORY_INDIRECT_INFO_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr AddressCopyFlagsKHR)) (srcCopyFlags)
+    poke ((p `plusPtr` 20 :: Ptr AddressCopyFlagsKHR)) (dstCopyFlags)
+    poke ((p `plusPtr` 24 :: Ptr Word32)) (copyCount)
+    poke ((p `plusPtr` 32 :: Ptr StridedDeviceAddressRangeKHR)) (copyAddressRange)
+    f
+  cStructSize = 56
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_MEMORY_INDIRECT_INFO_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 32 :: Ptr StridedDeviceAddressRangeKHR)) (zero)
+    f
+
+instance FromCStruct CopyMemoryIndirectInfoKHR where
+  peekCStruct p = do
+    srcCopyFlags <- peek @AddressCopyFlagsKHR ((p `plusPtr` 16 :: Ptr AddressCopyFlagsKHR))
+    dstCopyFlags <- peek @AddressCopyFlagsKHR ((p `plusPtr` 20 :: Ptr AddressCopyFlagsKHR))
+    copyCount <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))
+    copyAddressRange <- peekCStruct @StridedDeviceAddressRangeKHR ((p `plusPtr` 32 :: Ptr StridedDeviceAddressRangeKHR))
+    pure $ CopyMemoryIndirectInfoKHR
+             srcCopyFlags dstCopyFlags copyCount copyAddressRange
+
+instance Storable CopyMemoryIndirectInfoKHR where
+  sizeOf ~_ = 56
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero CopyMemoryIndirectInfoKHR where
+  zero = CopyMemoryIndirectInfoKHR
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkCopyMemoryToImageIndirectCommandKHR - Structure specifying indirect
+-- memory region to image copy operation
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkCopyMemoryToImageIndirectCommandKHR-srcAddress-10963# The
+--     @srcAddress@ /must/ be 4 byte aligned
+--
+-- -   #VUID-VkCopyMemoryToImageIndirectCommandKHR-dstImage-12282# If
+--     @dstImage@ does not have either a depth\/stencil format or a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>,
+--     @srcAddress@ /must/ be a multiple of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block size>
+--
+-- -   #VUID-VkCopyMemoryToImageIndirectCommandKHR-dstImage-12283# 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>,
+--     @srcAddress@ /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-VkCopyMemoryToImageIndirectCommandKHR-bufferRowLength-10964#
+--     @bufferRowLength@ /must/ be @0@, or greater than or equal to the
+--     @width@ member of @imageExtent@
+--
+-- -   #VUID-VkCopyMemoryToImageIndirectCommandKHR-bufferImageHeight-10965#
+--     @bufferImageHeight@ /must/ be @0@, or greater than or equal to the
+--     @height@ member of @imageExtent@
+--
+-- -   #VUID-VkCopyMemoryToImageIndirectCommandKHR-imageOffset-10966#
+--     @imageOffset@ /must/ specify a valid offset in the destination image
+--
+-- -   #VUID-VkCopyMemoryToImageIndirectCommandKHR-imageExtent-10967#
+--     @imageExtent@ /must/ specify a valid region in the destination image
+--     and /can/ be @0@
+--
+-- -   #VUID-VkCopyMemoryToImageIndirectCommandKHR-srcAddress-10968# The
+--     memory region starting at @srcAddress@ and described by
+--     @bufferRowLength@ and @bufferImageHeight@ /must/ not exceed the
+--     bounds of the memory allocation backing memory at @srcAddress@
+--
+-- -   #VUID-VkCopyMemoryToImageIndirectCommandKHR-imageOffset-10969# The
+--     @imageOffset@ and @imageExtent@ members of each region /must/
+--     respect the image transfer granularity requirements of
+--     @commandBuffer@’s command pool’s queue family, as described in
+--     'Vulkan.Core10.DeviceInitialization.QueueFamilyProperties'
+--
+-- -   #VUID-VkCopyMemoryToImageIndirectCommandKHR-imageOffset-10970# For
+--     each destination region, @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 subresource
+--
+-- -   #VUID-VkCopyMemoryToImageIndirectCommandKHR-imageOffset-10971# For
+--     each destination region, @imageOffset.y@ and (@imageExtent.height@ +
+--     @imageOffset.y@) /must/ both be greater than or equal to @0@ and
+--     less than or equal to the height of the specified subresource
+--
+-- -   #VUID-VkCopyMemoryToImageIndirectCommandKHR-imageSubresource-12284#
+--     The members of @imageSubresource@ /must/ be identical to the members
+--     of the 'Vulkan.Core10.CommandBufferBuilding.ImageSubresourceLayers'
+--     structure specified in the corresponding index of the
+--     @pCopyMemoryToImageIndirectInfo->pImageSubresources@ array of
+--     'cmdCopyMemoryToImageIndirectKHR' during command recording
+--
+-- -   #VUID-VkCopyMemoryToImageIndirectCommandKHR-dstImage-12285# If
+--     @dstImage@ is of type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D',
+--     @imageOffset.y@ /must/ be @0@ and @imageExtent.height@ /must/ be @1@
+--
+-- -   #VUID-VkCopyMemoryToImageIndirectCommandKHR-dstImage-12286# If
+--     @dstImage@ is of type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D'
+--     or 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', @imageOffset.z@
+--     /must/ be @0@ and @imageExtent.depth@ /must/ be @1@
+--
+-- -   #VUID-VkCopyMemoryToImageIndirectCommandKHR-srcAddress-12214#
+--     @srcAddress@ /must/ be a device address allocated to the application
+--     from a buffer created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_SRC_BIT'
+--     usage flag set
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkCopyMemoryToImageIndirectCommandKHR-srcAddress-parameter#
+--     @srcAddress@ /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' value
+--
+-- -   #VUID-VkCopyMemoryToImageIndirectCommandKHR-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_memory_indirect VK_KHR_copy_memory_indirect>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_copy_memory_indirect VK_NV_copy_memory_indirect>,
+-- 'Vulkan.Core10.FundamentalTypes.DeviceAddress',
+-- 'Vulkan.Core10.FundamentalTypes.Extent3D',
+-- 'Vulkan.Core10.CommandBufferBuilding.ImageSubresourceLayers',
+-- 'Vulkan.Core10.FundamentalTypes.Offset3D'
+data CopyMemoryToImageIndirectCommandKHR = CopyMemoryToImageIndirectCommandKHR
+  { -- | @srcAddress@ is the starting address of the source device memory to copy
+    -- from.
+    srcAddress :: DeviceAddress
+  , -- | @bufferRowLength@ and @bufferImageHeight@ specify in texels a subregion
+    -- of a larger two- or three-dimensional image in buffer memory, and
+    -- control the addressing calculations. If either of these values is zero,
+    -- that aspect of the buffer memory is considered to be tightly packed
+    -- according to the @imageExtent@.
+    bufferRowLength :: Word32
+  , -- No documentation found for Nested "VkCopyMemoryToImageIndirectCommandKHR" "bufferImageHeight"
+    bufferImageHeight :: Word32
+  , -- | @imageSubresource@ is a
+    -- 'Vulkan.Core10.CommandBufferBuilding.ImageSubresourceLayers' structure
+    -- used to specify the specific image subresources of the image used for
+    -- the destination image data, which /must/ match the value specified in
+    -- corresponding index of the
+    -- @pCopyMemoryToImageIndirectInfo->pImageSubresources@ array of
+    -- 'cmdCopyMemoryToImageIndirectKHR' during command recording.
+    imageSubresource :: ImageSubresourceLayers
+  , -- | @imageOffset@ selects the initial @x@, @y@, @z@ offsets in texels of the
+    -- sub-region of the destination image data.
+    imageOffset :: Offset3D
+  , -- | @imageExtent@ is the size in texels of the destination image in @width@,
+    -- @height@ and @depth@.
+    imageExtent :: Extent3D
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (CopyMemoryToImageIndirectCommandKHR)
+#endif
+deriving instance Show CopyMemoryToImageIndirectCommandKHR
+
+instance ToCStruct CopyMemoryToImageIndirectCommandKHR where
+  withCStruct x f = allocaBytes 56 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p CopyMemoryToImageIndirectCommandKHR{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr DeviceAddress)) (srcAddress)
+    poke ((p `plusPtr` 8 :: Ptr Word32)) (bufferRowLength)
+    poke ((p `plusPtr` 12 :: Ptr Word32)) (bufferImageHeight)
+    poke ((p `plusPtr` 16 :: Ptr ImageSubresourceLayers)) (imageSubresource)
+    poke ((p `plusPtr` 32 :: Ptr Offset3D)) (imageOffset)
+    poke ((p `plusPtr` 44 :: Ptr Extent3D)) (imageExtent)
+    f
+  cStructSize = 56
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr DeviceAddress)) (zero)
+    poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 12 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 16 :: Ptr ImageSubresourceLayers)) (zero)
+    poke ((p `plusPtr` 32 :: Ptr Offset3D)) (zero)
+    poke ((p `plusPtr` 44 :: Ptr Extent3D)) (zero)
+    f
+
+instance FromCStruct CopyMemoryToImageIndirectCommandKHR where
+  peekCStruct p = do
+    srcAddress <- peek @DeviceAddress ((p `plusPtr` 0 :: Ptr DeviceAddress))
+    bufferRowLength <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))
+    bufferImageHeight <- peek @Word32 ((p `plusPtr` 12 :: Ptr Word32))
+    imageSubresource <- peekCStruct @ImageSubresourceLayers ((p `plusPtr` 16 :: Ptr ImageSubresourceLayers))
+    imageOffset <- peekCStruct @Offset3D ((p `plusPtr` 32 :: Ptr Offset3D))
+    imageExtent <- peekCStruct @Extent3D ((p `plusPtr` 44 :: Ptr Extent3D))
+    pure $ CopyMemoryToImageIndirectCommandKHR
+             srcAddress
+             bufferRowLength
+             bufferImageHeight
+             imageSubresource
+             imageOffset
+             imageExtent
+
+instance Storable CopyMemoryToImageIndirectCommandKHR where
+  sizeOf ~_ = 56
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero CopyMemoryToImageIndirectCommandKHR where
+  zero = CopyMemoryToImageIndirectCommandKHR
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkCopyMemoryToImageIndirectInfoKHR - Parameters describing indirect
+-- image copy parameters
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkCopyMemoryToImageIndirectInfoKHR-srcCopyFlags-10950# If
+--     @srcCopyFlags@ contains 'ADDRESS_COPY_SPARSE_BIT_KHR', the source
+--     memory regions accessed /must/ be
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#sparsememory bound to memory>
+--
+-- -   #VUID-VkCopyMemoryToImageIndirectInfoKHR-copyCount-10951#
+--     @copyCount@ /must/ be less than or equal to @copyAddressRange.size@
+--     \/ @copyAddressRange.stride@
+--
+-- -   #VUID-VkCopyMemoryToImageIndirectInfoKHR-copyAddressRange-10952#
+--     @copyAddressRange.address@ /must/ be 4 byte aligned
+--
+-- -   #VUID-VkCopyMemoryToImageIndirectInfoKHR-copyAddressRange-10953#
+--     @copyAddressRange.stride@ /must/ be a multiple of @4@ and /must/ be
+--     greater than or equal to
+--     sizeof('CopyMemoryToImageIndirectCommandKHR')
+--
+-- -   #VUID-VkCopyMemoryToImageIndirectInfoKHR-dstImage-10955# The format
+--     features of @dstImage@ /must/ contain
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_COPY_IMAGE_INDIRECT_DST_BIT_KHR'
+--
+-- -   #VUID-VkCopyMemoryToImageIndirectInfoKHR-copyAddressRange-12213#
+--     @copyAddressRange@ /must/ be a device address range allocated to the
+--     application from a buffer created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-VkCopyMemoryToImageIndirectInfoKHR-dstImage-07661# @dstImage@
+--     /must/ not be a protected image
+--
+-- -   #VUID-VkCopyMemoryToImageIndirectInfoKHR-aspectMask-07662# The
+--     @aspectMask@ member for every subresource in @pImageSubresources@
+--     /must/ only have a single bit set
+--
+-- -   #VUID-VkCopyMemoryToImageIndirectInfoKHR-aspectMask-12287# The
+--     @aspectMask@ member for every subresource in @pImageSubresources@
+--     /must/ specify an aspect present in @dstImage@
+--
+-- -   #VUID-VkCopyMemoryToImageIndirectInfoKHR-dstImage-07664# @dstImage@
+--     /must/ have been created with the
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'
+--     usage flag set
+--
+-- -   #VUID-VkCopyMemoryToImageIndirectInfoKHR-dstImage-07665# If
+--     @dstImage@ is non-sparse then the image or each specified /disjoint/
+--     plane /must/ be bound completely and contiguously to a single
+--     'Vulkan.Core10.Handles.DeviceMemory' object
+--
+-- -   #VUID-VkCopyMemoryToImageIndirectInfoKHR-dstImage-07973# @dstImage@
+--     /must/ have a sample count equal to
+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'
+--
+-- -   #VUID-VkCopyMemoryToImageIndirectInfoKHR-dstImageLayout-07667#
+--     @dstImageLayout@ /must/ specify the layout of the image subresources
+--     of @dstImage@ at the time this command is executed on a
+--     'Vulkan.Core10.Handles.Device'
+--
+-- -   #VUID-VkCopyMemoryToImageIndirectInfoKHR-dstImageLayout-07669#
+--     @dstImageLayout@ /must/ be
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL',
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR',
+--     or 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL'
+--
+-- -   #VUID-VkCopyMemoryToImageIndirectInfoKHR-mipLevel-07670# The
+--     specified @mipLevel@ of each region in @pImageSubresources@ /must/
+--     be less than the @mipLevels@ specified in
+--     'Vulkan.Core10.Image.ImageCreateInfo' when @dstImage@ was created
+--
+-- -   #VUID-VkCopyMemoryToImageIndirectInfoKHR-dstImage-12288# If
+--     @dstImage@ is not of type
+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', and the specified
+--     @layerCount@ of each region in @pImageSubresources@ is not
+--     'Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS', the specified
+--     @baseArrayLayer@ + @layerCount@ of each region in
+--     @pImageSubresources@ /must/ be less than or equal to the
+--     @arrayLayers@ specified in 'Vulkan.Core10.Image.ImageCreateInfo'
+--     when @dstImage@ was created
+--
+-- -   #VUID-VkCopyMemoryToImageIndirectInfoKHR-dstImage-12289# If
+--     @dstImage@ is of type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D',
+--     and the specified @layerCount@ of each region in
+--     @pImageSubresources@ is not
+--     'Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS', for each
+--     destination region, (@imageSubresource.baseArrayLayer@ +
+--     @imageSubresource.layerCount@) /must/ be less than or equal to the
+--     depth of the specified subresource
+--
+-- -   #VUID-VkCopyMemoryToImageIndirectInfoKHR-dstImage-12290# If
+--     @dstImage@ is of type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D',
+--     and the specified @layerCount@ of each region in
+--     @pImageSubresources@ is not
+--     'Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS', for each
+--     destination region, if (@imageSubresource.baseArrayLayer@ +
+--     @imageSubresource.layerCount@) does not equal the depth of the
+--     specified subresource, @imageSubresource.layerCount@ /must/ be a
+--     multiple of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent depth>
+--     of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@
+--
+-- -   #VUID-VkCopyMemoryToImageIndirectInfoKHR-dstImage-12291# If
+--     @dstImage@ is of type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D',
+--     for each destination region, @imageSubresource.baseArrayLayer@
+--     /must/ be a multiple of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent depth>
+--     of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@
+--
+-- -   #VUID-VkCopyMemoryToImageIndirectInfoKHR-dstImage-12292# If
+--     @dstImage@ is of type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D',
+--     for each destination region, @imageSubresource.baseArrayLayer@
+--     /must/ be less than or equal to the depth of the specified
+--     subresource
+--
+-- -   #VUID-VkCopyMemoryToImageIndirectInfoKHR-dstImage-07673# @dstImage@
+--     /must/ not have been created with @flags@ containing
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT'
+--
+-- -   #VUID-VkCopyMemoryToImageIndirectInfoKHR-commandBuffer-07674# If the
+--     queue family used to create the 'Vulkan.Core10.Handles.CommandPool'
+--     which @commandBuffer@ was allocated from does not support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT', for each
+--     region, the @aspectMask@ member of @pImageSubresources@ /must/ not
+--     be 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT'
+--     or
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
+--
+-- -   #VUID-VkCopyMemoryToImageIndirectInfoKHR-dstImage-10974# The format
+--     features of @dstImage@ /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_TRANSFER_DST_BIT'
+--
+-- -   #VUID-VkCopyMemoryToImageIndirectInfoKHR-copyAddressRange-10975# Any
+--     of the source or destination memory regions specified in
+--     @copyAddressRange@ /must/ not overlap with any of the specified
+--     destination memory regions at the time this command is executed on
+--     device
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkCopyMemoryToImageIndirectInfoKHR-sType-sType# @sType@ /must/
+--     be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INDIRECT_INFO_KHR'
+--
+-- -   #VUID-VkCopyMemoryToImageIndirectInfoKHR-pNext-pNext# @pNext@ /must/
+--     be @NULL@
+--
+-- -   #VUID-VkCopyMemoryToImageIndirectInfoKHR-srcCopyFlags-parameter#
+--     @srcCopyFlags@ /must/ be a valid combination of
+--     'AddressCopyFlagBitsKHR' values
+--
+-- -   #VUID-VkCopyMemoryToImageIndirectInfoKHR-dstImage-parameter#
+--     @dstImage@ /must/ be a valid 'Vulkan.Core10.Handles.Image' handle
+--
+-- -   #VUID-VkCopyMemoryToImageIndirectInfoKHR-dstImageLayout-parameter#
+--     @dstImageLayout@ /must/ be a valid
+--     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' value
+--
+-- -   #VUID-VkCopyMemoryToImageIndirectInfoKHR-pImageSubresources-parameter#
+--     @pImageSubresources@ /must/ be a valid pointer to an array of
+--     @copyCount@ valid
+--     'Vulkan.Core10.CommandBufferBuilding.ImageSubresourceLayers'
+--     structures
+--
+-- -   #VUID-VkCopyMemoryToImageIndirectInfoKHR-copyCount-arraylength#
+--     @copyCount@ /must/ be greater than @0@
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_copy_memory_indirect VK_KHR_copy_memory_indirect>,
+-- 'AddressCopyFlagsKHR', 'Vulkan.Core10.Handles.Image',
+-- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout',
+-- 'Vulkan.Core10.CommandBufferBuilding.ImageSubresourceLayers',
+-- 'Vulkan.Extensions.VK_KHR_device_address_commands.StridedDeviceAddressRangeKHR',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'cmdCopyMemoryToImageIndirectKHR'
+data CopyMemoryToImageIndirectInfoKHR = CopyMemoryToImageIndirectInfoKHR
+  { -- | @srcCopyFlags@ is a 'AddressCopyFlagsKHR' value defining the copy flags
+    -- for the source address range.
+    srcCopyFlags :: AddressCopyFlagsKHR
+  , -- | @copyAddressRange@ is a memory region specifying the copy parameters. It
+    -- is laid out as an array of 'CopyMemoryToImageIndirectCommandKHR'
+    -- structures.
+    copyAddressRange :: StridedDeviceAddressRangeKHR
+  , -- | @dstImage@ is the destination image.
+    dstImage :: Image
+  , -- | @dstImageLayout@ is the layout of the destination image subresources for
+    -- the copy.
+    dstImageLayout :: ImageLayout
+  , -- | @pImageSubresources@ is a pointer to an array of @copyCount@
+    -- 'Vulkan.Core10.CommandBufferBuilding.ImageSubresourceLayers' structures,
+    -- specifying the image subresources of the destination image data for the
+    -- copy operation.
+    imageSubresources :: Vector ImageSubresourceLayers
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (CopyMemoryToImageIndirectInfoKHR)
+#endif
+deriving instance Show CopyMemoryToImageIndirectInfoKHR
+
+instance ToCStruct CopyMemoryToImageIndirectInfoKHR where
+  withCStruct x f = allocaBytes 72 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p CopyMemoryToImageIndirectInfoKHR{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INDIRECT_INFO_KHR)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr AddressCopyFlagsKHR)) (srcCopyFlags)
+    lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (imageSubresources)) :: Word32))
+    lift $ poke ((p `plusPtr` 24 :: Ptr StridedDeviceAddressRangeKHR)) (copyAddressRange)
+    lift $ poke ((p `plusPtr` 48 :: Ptr Image)) (dstImage)
+    lift $ poke ((p `plusPtr` 56 :: Ptr ImageLayout)) (dstImageLayout)
+    pPImageSubresources' <- ContT $ allocaBytes @ImageSubresourceLayers ((Data.Vector.length (imageSubresources)) * 16)
+    lift $ Data.Vector.imapM_ (\i e -> poke (pPImageSubresources' `plusPtr` (16 * (i)) :: Ptr ImageSubresourceLayers) (e)) (imageSubresources)
+    lift $ poke ((p `plusPtr` 64 :: Ptr (Ptr ImageSubresourceLayers))) (pPImageSubresources')
+    lift $ f
+  cStructSize = 72
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INDIRECT_INFO_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 24 :: Ptr StridedDeviceAddressRangeKHR)) (zero)
+    poke ((p `plusPtr` 48 :: Ptr Image)) (zero)
+    poke ((p `plusPtr` 56 :: Ptr ImageLayout)) (zero)
+    f
+
+instance FromCStruct CopyMemoryToImageIndirectInfoKHR where
+  peekCStruct p = do
+    srcCopyFlags <- peek @AddressCopyFlagsKHR ((p `plusPtr` 16 :: Ptr AddressCopyFlagsKHR))
+    copyAddressRange <- peekCStruct @StridedDeviceAddressRangeKHR ((p `plusPtr` 24 :: Ptr StridedDeviceAddressRangeKHR))
+    dstImage <- peek @Image ((p `plusPtr` 48 :: Ptr Image))
+    dstImageLayout <- peek @ImageLayout ((p `plusPtr` 56 :: Ptr ImageLayout))
+    copyCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
+    pImageSubresources <- peek @(Ptr ImageSubresourceLayers) ((p `plusPtr` 64 :: Ptr (Ptr ImageSubresourceLayers)))
+    pImageSubresources' <- generateM (fromIntegral copyCount) (\i -> peekCStruct @ImageSubresourceLayers ((pImageSubresources `advancePtrBytes` (16 * (i)) :: Ptr ImageSubresourceLayers)))
+    pure $ CopyMemoryToImageIndirectInfoKHR
+             srcCopyFlags
+             copyAddressRange
+             dstImage
+             dstImageLayout
+             pImageSubresources'
+
+instance Zero CopyMemoryToImageIndirectInfoKHR where
+  zero = CopyMemoryToImageIndirectInfoKHR
+           zero
+           zero
+           zero
+           zero
+           mempty
+
+
+-- | VkPhysicalDeviceCopyMemoryIndirectFeaturesKHR - Structure describing
+-- indirect copy features supported by an implementation
+--
+-- = Members
+--
+-- This structure describes the following features:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceCopyMemoryIndirectFeaturesKHR' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceCopyMemoryIndirectFeaturesKHR', it /must/ add an instance
+-- of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_copy_memory_indirect VK_KHR_copy_memory_indirect>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceCopyMemoryIndirectFeaturesKHR = PhysicalDeviceCopyMemoryIndirectFeaturesKHR
+  { -- | #features-indirectMemoryCopy# @indirectMemoryCopy@ indicates whether
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#indirect-copies indirect memory to memory copies>
+    -- are supported.
+    indirectMemoryCopy :: Bool
+  , -- | #features-indirectMemoryToImageCopy# @indirectMemoryToImageCopy@
+    -- indicates whether
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#indirect-copies indirect memory to image copies>
+    -- are supported.
+    indirectMemoryToImageCopy :: Bool
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceCopyMemoryIndirectFeaturesKHR)
+#endif
+deriving instance Show PhysicalDeviceCopyMemoryIndirectFeaturesKHR
+
+instance ToCStruct PhysicalDeviceCopyMemoryIndirectFeaturesKHR where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceCopyMemoryIndirectFeaturesKHR{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (indirectMemoryCopy))
+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (indirectMemoryToImageCopy))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_KHR)
+    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 PhysicalDeviceCopyMemoryIndirectFeaturesKHR where
+  peekCStruct p = do
+    indirectMemoryCopy <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    indirectMemoryToImageCopy <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
+    pure $ PhysicalDeviceCopyMemoryIndirectFeaturesKHR
+             (bool32ToBool indirectMemoryCopy)
+             (bool32ToBool indirectMemoryToImageCopy)
+
+instance Storable PhysicalDeviceCopyMemoryIndirectFeaturesKHR where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceCopyMemoryIndirectFeaturesKHR where
+  zero = PhysicalDeviceCopyMemoryIndirectFeaturesKHR
+           zero
+           zero
+
+
+-- | VkPhysicalDeviceCopyMemoryIndirectPropertiesKHR - Structure describing
+-- supported queues for indirect copy
+--
+-- = Description
+--
+-- If the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-indirectMemoryCopy indirectMemoryCopy>
+-- or
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-indirectMemoryToImageCopy indirectMemoryToImageCopy>
+-- feature is supported, @supportedQueues@ /must/ return at least one
+-- supported queue type.
+--
+-- If the 'PhysicalDeviceCopyMemoryIndirectPropertiesKHR' 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.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_copy_memory_indirect VK_KHR_copy_memory_indirect>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_copy_memory_indirect VK_NV_copy_memory_indirect>,
+-- 'Vulkan.Core10.Enums.QueueFlagBits.QueueFlags',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceCopyMemoryIndirectPropertiesKHR = PhysicalDeviceCopyMemoryIndirectPropertiesKHR
+  { -- | @supportedQueues@ is a bitmask of
+    -- 'Vulkan.Core10.Enums.QueueFlagBits.QueueFlagBits' indicating the types
+    -- of queues on which
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#indirect-copies indirect copy commands>
+    -- are supported. If a queue family supports any of the bits set in
+    -- @supportedQueues@, then it /must/ support at least one
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#indirect-copies indirect copy command>.
+    supportedQueues :: QueueFlags }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceCopyMemoryIndirectPropertiesKHR)
+#endif
+deriving instance Show PhysicalDeviceCopyMemoryIndirectPropertiesKHR
+
+instance ToCStruct PhysicalDeviceCopyMemoryIndirectPropertiesKHR where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceCopyMemoryIndirectPropertiesKHR{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr QueueFlags)) (supportedQueues)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr QueueFlags)) (zero)
+    f
+
+instance FromCStruct PhysicalDeviceCopyMemoryIndirectPropertiesKHR where
+  peekCStruct p = do
+    supportedQueues <- peek @QueueFlags ((p `plusPtr` 16 :: Ptr QueueFlags))
+    pure $ PhysicalDeviceCopyMemoryIndirectPropertiesKHR
+             supportedQueues
+
+instance Storable PhysicalDeviceCopyMemoryIndirectPropertiesKHR where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceCopyMemoryIndirectPropertiesKHR where
+  zero = PhysicalDeviceCopyMemoryIndirectPropertiesKHR
+           zero
+
+
+type AddressCopyFlagsKHR = AddressCopyFlagBitsKHR
+
+-- | VkAddressCopyFlagBitsKHR - Bitmask specifying address copy parameters
+--
+-- = Description
+--
+-- -   'ADDRESS_COPY_DEVICE_LOCAL_BIT_KHR' specifies that the address range
+--     is expected to be resident in device local memory. Specifying this
+--     value is optional, but /may/ lead to improved performance if set
+--     accurately.
+--
+-- -   'ADDRESS_COPY_PROTECTED_BIT_KHR' specifies that the address range is
+--     allocated from protected memory.
+--
+-- -   'ADDRESS_COPY_SPARSE_BIT_KHR' specifies that the address range may
+--     not be fully bound to physical memory when accessed.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_copy_memory_indirect VK_KHR_copy_memory_indirect>,
+-- 'AddressCopyFlagsKHR'
+newtype AddressCopyFlagBitsKHR = AddressCopyFlagBitsKHR Flags
+  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
+
+-- No documentation found for Nested "VkAddressCopyFlagBitsKHR" "VK_ADDRESS_COPY_DEVICE_LOCAL_BIT_KHR"
+pattern ADDRESS_COPY_DEVICE_LOCAL_BIT_KHR = AddressCopyFlagBitsKHR 0x00000001
+
+-- No documentation found for Nested "VkAddressCopyFlagBitsKHR" "VK_ADDRESS_COPY_SPARSE_BIT_KHR"
+pattern ADDRESS_COPY_SPARSE_BIT_KHR = AddressCopyFlagBitsKHR 0x00000002
+
+-- No documentation found for Nested "VkAddressCopyFlagBitsKHR" "VK_ADDRESS_COPY_PROTECTED_BIT_KHR"
+pattern ADDRESS_COPY_PROTECTED_BIT_KHR = AddressCopyFlagBitsKHR 0x00000004
+
+conNameAddressCopyFlagBitsKHR :: String
+conNameAddressCopyFlagBitsKHR = "AddressCopyFlagBitsKHR"
+
+enumPrefixAddressCopyFlagBitsKHR :: String
+enumPrefixAddressCopyFlagBitsKHR = "ADDRESS_COPY_"
+
+showTableAddressCopyFlagBitsKHR :: [(AddressCopyFlagBitsKHR, String)]
+showTableAddressCopyFlagBitsKHR =
+  [
+    ( ADDRESS_COPY_DEVICE_LOCAL_BIT_KHR
+    , "DEVICE_LOCAL_BIT_KHR"
+    )
+  ,
+    ( ADDRESS_COPY_SPARSE_BIT_KHR
+    , "SPARSE_BIT_KHR"
+    )
+  ,
+    ( ADDRESS_COPY_PROTECTED_BIT_KHR
+    , "PROTECTED_BIT_KHR"
+    )
+  ]
+
+instance Show AddressCopyFlagBitsKHR where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixAddressCopyFlagBitsKHR
+      showTableAddressCopyFlagBitsKHR
+      conNameAddressCopyFlagBitsKHR
+      (\(AddressCopyFlagBitsKHR x) -> x)
+      (\x -> showString "0x" . showHex x)
+
+instance Read AddressCopyFlagBitsKHR where
+  readPrec =
+    enumReadPrec
+      enumPrefixAddressCopyFlagBitsKHR
+      showTableAddressCopyFlagBitsKHR
+      conNameAddressCopyFlagBitsKHR
+      AddressCopyFlagBitsKHR
+
+type KHR_COPY_MEMORY_INDIRECT_SPEC_VERSION = 1
+
+-- No documentation found for TopLevel "VK_KHR_COPY_MEMORY_INDIRECT_SPEC_VERSION"
+pattern KHR_COPY_MEMORY_INDIRECT_SPEC_VERSION :: forall a . Integral a => a
+pattern KHR_COPY_MEMORY_INDIRECT_SPEC_VERSION = 1
+
+
+type KHR_COPY_MEMORY_INDIRECT_EXTENSION_NAME = "VK_KHR_copy_memory_indirect"
+
+-- No documentation found for TopLevel "VK_KHR_COPY_MEMORY_INDIRECT_EXTENSION_NAME"
+pattern KHR_COPY_MEMORY_INDIRECT_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern KHR_COPY_MEMORY_INDIRECT_EXTENSION_NAME = "VK_KHR_copy_memory_indirect"
+
diff --git a/src/Vulkan/Extensions/VK_KHR_copy_memory_indirect.hs-boot b/src/Vulkan/Extensions/VK_KHR_copy_memory_indirect.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_KHR_copy_memory_indirect.hs-boot
@@ -0,0 +1,215 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_KHR_copy_memory_indirect - device extension
+--
+-- = VK_KHR_copy_memory_indirect
+--
+-- [__Name String__]
+--     @VK_KHR_copy_memory_indirect@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     550
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Ratified
+--
+-- [__Extension and Version Dependencies__]
+--         
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--          and
+--         
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_buffer_device_address VK_KHR_buffer_device_address>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.2 Vulkan Version 1.2>
+--
+-- [__Contact__]
+--
+--     -   Vikram Kushwaha
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_copy_memory_indirect] @vkushwaha-nv%0A*Here describe the issue or question you have about the VK_KHR_copy_memory_indirect extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_KHR_copy_memory_indirect.adoc VK_KHR_copy_memory_indirect>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2025-01-25
+--
+-- [__Contributors__]
+--
+--     -   Daniel Koch, NVIDIA
+--
+--     -   Vikram Kushwaha, NVIDIA
+--
+--     -   Jeff Bolz, NVIDIA
+--
+--     -   Christoph Kubisch, NVIDIA
+--
+--     -   Stuart Smith, AMD
+--
+--     -   Faith Ekstrand, Collabora
+--
+--     -   Caterina Shablia, Collabora
+--
+--     -   Spencer Fricke, LunarG
+--
+--     -   Matthew Netsch, Qualcomm Technologies, Inc
+--
+--     -   Mike Blumenkrantz, Valve
+--
+--     -   Alyssa Rosenzweig, Valve
+--
+-- == Description
+--
+-- This extension adds support for performing copies between memory and
+-- image regions using indirect parameters that are read by the device from
+-- a buffer during execution. This functionality may be useful for
+-- performing copies where the copy parameters are not known during the
+-- command buffer creation time.
+--
+-- == New Commands
+--
+-- -   'cmdCopyMemoryIndirectKHR'
+--
+-- -   'cmdCopyMemoryToImageIndirectKHR'
+--
+-- == New Structures
+--
+-- -   'CopyMemoryIndirectCommandKHR'
+--
+-- -   'CopyMemoryIndirectInfoKHR'
+--
+-- -   'CopyMemoryToImageIndirectCommandKHR'
+--
+-- -   'CopyMemoryToImageIndirectInfoKHR'
+--
+-- -   'Vulkan.Extensions.VK_KHR_device_address_commands.StridedDeviceAddressRangeKHR'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceCopyMemoryIndirectFeaturesKHR'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDeviceCopyMemoryIndirectPropertiesKHR'
+--
+-- == New Enums
+--
+-- -   'AddressCopyFlagBitsKHR'
+--
+-- == New Bitmasks
+--
+-- -   'AddressCopyFlagsKHR'
+--
+-- == New Enum Constants
+--
+-- -   'KHR_COPY_MEMORY_INDIRECT_EXTENSION_NAME'
+--
+-- -   'KHR_COPY_MEMORY_INDIRECT_SPEC_VERSION'
+--
+-- -   Extending
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FormatFeatureFlagBits2':
+--
+--     -   'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_COPY_IMAGE_INDIRECT_DST_BIT_KHR'
+--
+-- -   Extending
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlagBits2':
+--
+--     -   'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COPY_INDIRECT_BIT_KHR'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_MEMORY_INDIRECT_INFO_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INDIRECT_INFO_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_KHR'
+--
+-- == Version History
+--
+-- -   Revision 1, 2025-01-25 (Daniel Koch, Vikram Kushwaha)
+--
+--     -   Initial external release
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_copy_memory_indirect Vulkan Specification>.
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_KHR_copy_memory_indirect  ( CopyMemoryIndirectCommandKHR
+                                                      , CopyMemoryIndirectInfoKHR
+                                                      , CopyMemoryToImageIndirectCommandKHR
+                                                      , CopyMemoryToImageIndirectInfoKHR
+                                                      , PhysicalDeviceCopyMemoryIndirectFeaturesKHR
+                                                      , PhysicalDeviceCopyMemoryIndirectPropertiesKHR
+                                                      ) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data CopyMemoryIndirectCommandKHR
+
+instance ToCStruct CopyMemoryIndirectCommandKHR
+instance Show CopyMemoryIndirectCommandKHR
+
+instance FromCStruct CopyMemoryIndirectCommandKHR
+
+
+data CopyMemoryIndirectInfoKHR
+
+instance ToCStruct CopyMemoryIndirectInfoKHR
+instance Show CopyMemoryIndirectInfoKHR
+
+instance FromCStruct CopyMemoryIndirectInfoKHR
+
+
+data CopyMemoryToImageIndirectCommandKHR
+
+instance ToCStruct CopyMemoryToImageIndirectCommandKHR
+instance Show CopyMemoryToImageIndirectCommandKHR
+
+instance FromCStruct CopyMemoryToImageIndirectCommandKHR
+
+
+data CopyMemoryToImageIndirectInfoKHR
+
+instance ToCStruct CopyMemoryToImageIndirectInfoKHR
+instance Show CopyMemoryToImageIndirectInfoKHR
+
+instance FromCStruct CopyMemoryToImageIndirectInfoKHR
+
+
+data PhysicalDeviceCopyMemoryIndirectFeaturesKHR
+
+instance ToCStruct PhysicalDeviceCopyMemoryIndirectFeaturesKHR
+instance Show PhysicalDeviceCopyMemoryIndirectFeaturesKHR
+
+instance FromCStruct PhysicalDeviceCopyMemoryIndirectFeaturesKHR
+
+
+data PhysicalDeviceCopyMemoryIndirectPropertiesKHR
+
+instance ToCStruct PhysicalDeviceCopyMemoryIndirectPropertiesKHR
+instance Show PhysicalDeviceCopyMemoryIndirectPropertiesKHR
+
+instance FromCStruct PhysicalDeviceCopyMemoryIndirectPropertiesKHR
+
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
@@ -155,7 +155,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_create_renderpass2 Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -209,7 +209,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_dedicated_allocation Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -261,7 +261,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_deferred_host_operations Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -341,6 +341,9 @@
 --     @pDeferredOperation@ /must/ be a valid pointer to a
 --     'Vulkan.Extensions.Handles.DeferredOperationKHR' handle
 --
+-- -   #VUID-vkCreateDeferredOperationKHR-device-queuecount# The device
+--     /must/ have been created with at least @1@ queue
+--
 -- == Return Codes
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
@@ -351,6 +354,10 @@
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_deferred_host_operations VK_KHR_deferred_host_operations>,
@@ -362,7 +369,7 @@
                            => -- | @device@ is the device which owns @operation@.
                               Device
                            -> -- | @pAllocator@ controls host memory allocation as described in the
-                              -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                              -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
                               -- chapter.
                               ("allocator" ::: Maybe AllocationCallbacks)
                            -> io (DeferredOperationKHR)
@@ -456,7 +463,7 @@
                             -> -- | @operation@ is the completed operation to be destroyed.
                                DeferredOperationKHR
                             -> -- | @pAllocator@ controls host memory allocation as described in the
-                               -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                               -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
                                -- chapter.
                                ("allocator" ::: Maybe AllocationCallbacks)
                             -> io ()
@@ -585,13 +592,16 @@
 --
 -- [<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.NOT_READY'
 --
+--     -   'Vulkan.Core10.Enums.Result.SUCCESS'
+--
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
---     None
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_deferred_host_operations VK_KHR_deferred_host_operations>,
@@ -622,6 +632,7 @@
   r <- traceAroundEvent "vkGetDeferredOperationResultKHR" (vkGetDeferredOperationResultKHR'
                                                              (deviceHandle (device))
                                                              (operation))
+  when (r < SUCCESS) (throwIO (VulkanException r))
   pure $ (r)
 
 
@@ -701,9 +712,13 @@
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Extensions/VK_KHR_depth_clamp_zero_one.hs b/src/Vulkan/Extensions/VK_KHR_depth_clamp_zero_one.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_KHR_depth_clamp_zero_one.hs
@@ -0,0 +1,205 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_KHR_depth_clamp_zero_one - device extension
+--
+-- = VK_KHR_depth_clamp_zero_one
+--
+-- [__Name String__]
+--     @VK_KHR_depth_clamp_zero_one@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     605
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
+--
+-- [__Contact__]
+--
+--     -   Graeme Leese
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_depth_clamp_zero_one] @gnl21%0A*Here describe the issue or question you have about the VK_KHR_depth_clamp_zero_one extension* >
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2024-09-10
+--
+-- [__Contributors__]
+--
+--     -   Graeme Leese, Broadcom
+--
+-- == Description
+--
+-- This extension is based on the @VK_EXT_depth_clamp_zero_one@ extension.
+-- This extension gives defined behavior to fragment depth values which end
+-- up outside the conventional [0, 1] range. It can be used to ensure
+-- portability in edge cases of features like depthBias. The particular
+-- behavior is chosen to match OpenGL to aid porting or emulation.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceDepthClampZeroOneFeaturesKHR'
+--
+-- == New Enum Constants
+--
+-- -   'KHR_DEPTH_CLAMP_ZERO_ONE_EXTENSION_NAME'
+--
+-- -   'KHR_DEPTH_CLAMP_ZERO_ONE_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_KHR'
+--
+-- == Version History
+--
+-- -   Revision 1, 2024-09-10 (Graeme Leese)
+--
+--     -   Internal revisions
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_depth_clamp_zero_one 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_depth_clamp_zero_one  ( PhysicalDeviceDepthClampZeroOneFeaturesKHR(..)
+                                                      , KHR_DEPTH_CLAMP_ZERO_ONE_SPEC_VERSION
+                                                      , pattern KHR_DEPTH_CLAMP_ZERO_ONE_SPEC_VERSION
+                                                      , KHR_DEPTH_CLAMP_ZERO_ONE_EXTENSION_NAME
+                                                      , pattern KHR_DEPTH_CLAMP_ZERO_ONE_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_DEPTH_CLAMP_ZERO_ONE_FEATURES_KHR))
+-- | VkPhysicalDeviceDepthClampZeroOneFeaturesKHR - Structure describing
+-- feature to control zero to one depth clamping
+--
+-- = Members
+--
+-- This structure describes the following feature:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceDepthClampZeroOneFeaturesKHR' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceDepthClampZeroOneFeaturesKHR', it /must/ add an instance
+-- of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_depth_clamp_zero_one VK_EXT_depth_clamp_zero_one>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_depth_clamp_zero_one VK_KHR_depth_clamp_zero_one>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceDepthClampZeroOneFeaturesKHR = PhysicalDeviceDepthClampZeroOneFeaturesKHR
+  { -- | #features-depthClampZeroOne# @depthClampZeroOne@ indicates that the
+    -- implementation supports clamping the depth to a range of @0@ to @1@.
+    depthClampZeroOne :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceDepthClampZeroOneFeaturesKHR)
+#endif
+deriving instance Show PhysicalDeviceDepthClampZeroOneFeaturesKHR
+
+instance ToCStruct PhysicalDeviceDepthClampZeroOneFeaturesKHR where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceDepthClampZeroOneFeaturesKHR{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (depthClampZeroOne))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceDepthClampZeroOneFeaturesKHR where
+  peekCStruct p = do
+    depthClampZeroOne <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDeviceDepthClampZeroOneFeaturesKHR
+             (bool32ToBool depthClampZeroOne)
+
+instance Storable PhysicalDeviceDepthClampZeroOneFeaturesKHR where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceDepthClampZeroOneFeaturesKHR where
+  zero = PhysicalDeviceDepthClampZeroOneFeaturesKHR
+           zero
+
+
+type KHR_DEPTH_CLAMP_ZERO_ONE_SPEC_VERSION = 1
+
+-- No documentation found for TopLevel "VK_KHR_DEPTH_CLAMP_ZERO_ONE_SPEC_VERSION"
+pattern KHR_DEPTH_CLAMP_ZERO_ONE_SPEC_VERSION :: forall a . Integral a => a
+pattern KHR_DEPTH_CLAMP_ZERO_ONE_SPEC_VERSION = 1
+
+
+type KHR_DEPTH_CLAMP_ZERO_ONE_EXTENSION_NAME = "VK_KHR_depth_clamp_zero_one"
+
+-- No documentation found for TopLevel "VK_KHR_DEPTH_CLAMP_ZERO_ONE_EXTENSION_NAME"
+pattern KHR_DEPTH_CLAMP_ZERO_ONE_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern KHR_DEPTH_CLAMP_ZERO_ONE_EXTENSION_NAME = "VK_KHR_depth_clamp_zero_one"
+
diff --git a/src/Vulkan/Extensions/VK_KHR_depth_clamp_zero_one.hs-boot b/src/Vulkan/Extensions/VK_KHR_depth_clamp_zero_one.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_KHR_depth_clamp_zero_one.hs-boot
@@ -0,0 +1,97 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_KHR_depth_clamp_zero_one - device extension
+--
+-- = VK_KHR_depth_clamp_zero_one
+--
+-- [__Name String__]
+--     @VK_KHR_depth_clamp_zero_one@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     605
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
+--
+-- [__Contact__]
+--
+--     -   Graeme Leese
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_depth_clamp_zero_one] @gnl21%0A*Here describe the issue or question you have about the VK_KHR_depth_clamp_zero_one extension* >
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2024-09-10
+--
+-- [__Contributors__]
+--
+--     -   Graeme Leese, Broadcom
+--
+-- == Description
+--
+-- This extension is based on the @VK_EXT_depth_clamp_zero_one@ extension.
+-- This extension gives defined behavior to fragment depth values which end
+-- up outside the conventional [0, 1] range. It can be used to ensure
+-- portability in edge cases of features like depthBias. The particular
+-- behavior is chosen to match OpenGL to aid porting or emulation.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceDepthClampZeroOneFeaturesKHR'
+--
+-- == New Enum Constants
+--
+-- -   'KHR_DEPTH_CLAMP_ZERO_ONE_EXTENSION_NAME'
+--
+-- -   'KHR_DEPTH_CLAMP_ZERO_ONE_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_KHR'
+--
+-- == Version History
+--
+-- -   Revision 1, 2024-09-10 (Graeme Leese)
+--
+--     -   Internal revisions
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_depth_clamp_zero_one 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_depth_clamp_zero_one  (PhysicalDeviceDepthClampZeroOneFeaturesKHR) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data PhysicalDeviceDepthClampZeroOneFeaturesKHR
+
+instance ToCStruct PhysicalDeviceDepthClampZeroOneFeaturesKHR
+instance Show PhysicalDeviceDepthClampZeroOneFeaturesKHR
+
+instance FromCStruct PhysicalDeviceDepthClampZeroOneFeaturesKHR
+
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
@@ -146,7 +146,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_depth_stencil_resolve Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -145,7 +145,7 @@
 -- -   Extending
 --     'Vulkan.Core11.Enums.DescriptorUpdateTemplateType.DescriptorUpdateTemplateType':
 --
---     -   'Vulkan.Core11.Enums.DescriptorUpdateTemplateType.DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR'
+--     -   'DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR'
 --
 -- == Version History
 --
@@ -160,11 +160,11 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_descriptor_update_template Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
-module Vulkan.Extensions.VK_KHR_descriptor_update_template  ( cmdPushDescriptorSetWithTemplateKHR
+module Vulkan.Extensions.VK_KHR_descriptor_update_template  ( pattern DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR
                                                             , pattern STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR
                                                             , pattern OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR
                                                             , pattern DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR
@@ -172,6 +172,7 @@
                                                             , createDescriptorUpdateTemplateKHR
                                                             , destroyDescriptorUpdateTemplateKHR
                                                             , updateDescriptorSetWithTemplateKHR
+                                                            , cmdPushDescriptorSetWithTemplateKHR
                                                             , DescriptorUpdateTemplateCreateFlagsKHR
                                                             , DescriptorUpdateTemplateKHR
                                                             , DescriptorUpdateTemplateTypeKHR
@@ -184,226 +185,24 @@
                                                             , DebugReportObjectTypeEXT(..)
                                                             ) 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 Data.String (IsString)
-import GHC.IO.Exception (IOErrorType(..))
-import GHC.IO.Exception (IOException(..))
-import Foreign.Ptr (FunPtr)
-import Foreign.Ptr (Ptr)
-import Data.Word (Word32)
+import Vulkan.Core14.Promoted_From_VK_KHR_push_descriptor (cmdPushDescriptorSetWithTemplate)
 import Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template (createDescriptorUpdateTemplate)
 import Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template (destroyDescriptorUpdateTemplate)
 import Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template (updateDescriptorSetWithTemplate)
-import Vulkan.NamedType ((:::))
-import Vulkan.Core10.Handles (CommandBuffer)
-import Vulkan.Core10.Handles (CommandBuffer(..))
-import Vulkan.Core10.Handles (CommandBuffer(CommandBuffer))
-import Vulkan.Core10.Handles (CommandBuffer_T)
 import Vulkan.Core11.Handles (DescriptorUpdateTemplate)
-import Vulkan.Core11.Handles (DescriptorUpdateTemplate(..))
 import Vulkan.Core11.Enums.DescriptorUpdateTemplateCreateFlags (DescriptorUpdateTemplateCreateFlags)
 import Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template (DescriptorUpdateTemplateCreateInfo)
 import Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template (DescriptorUpdateTemplateEntry)
 import Vulkan.Core11.Enums.DescriptorUpdateTemplateType (DescriptorUpdateTemplateType)
-import Vulkan.Dynamic (DeviceCmds(pVkCmdPushDescriptorSetWithTemplateKHR))
-import Vulkan.Core10.Handles (PipelineLayout)
-import Vulkan.Core10.Handles (PipelineLayout(..))
 import Vulkan.Extensions.VK_EXT_debug_report (DebugReportObjectTypeEXT(DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT))
 import Vulkan.Core11.Enums.DescriptorUpdateTemplateType (DescriptorUpdateTemplateType(DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET))
+import Vulkan.Core11.Enums.DescriptorUpdateTemplateType (DescriptorUpdateTemplateType(DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS))
 import Vulkan.Core10.Enums.ObjectType (ObjectType(OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO))
 import Vulkan.Extensions.VK_EXT_debug_report (DebugReportObjectTypeEXT(..))
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdPushDescriptorSetWithTemplateKHR
-  :: FunPtr (Ptr CommandBuffer_T -> DescriptorUpdateTemplate -> PipelineLayout -> Word32 -> Ptr () -> IO ()) -> Ptr CommandBuffer_T -> DescriptorUpdateTemplate -> PipelineLayout -> Word32 -> Ptr () -> IO ()
-
--- | vkCmdPushDescriptorSetWithTemplateKHR - Pushes descriptor updates into a
--- command buffer using a descriptor update template
---
--- == Valid Usage
---
--- -   #VUID-vkCmdPushDescriptorSetWithTemplateKHR-commandBuffer-00366# The
---     @pipelineBindPoint@ specified during the creation of the descriptor
---     update template /must/ be supported by the @commandBuffer@’s parent
---     'Vulkan.Core10.Handles.CommandPool'’s queue family
---
--- -   #VUID-vkCmdPushDescriptorSetWithTemplateKHR-pData-01686# @pData@
---     /must/ be a valid pointer to a memory containing one or more valid
---     instances of 'Vulkan.Core10.DescriptorSet.DescriptorImageInfo',
---     'Vulkan.Core10.DescriptorSet.DescriptorBufferInfo', or
---     'Vulkan.Core10.Handles.BufferView' in a layout defined by
---     @descriptorUpdateTemplate@ when it was created with
---     'Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template.createDescriptorUpdateTemplate'
---
--- -   #VUID-vkCmdPushDescriptorSetWithTemplateKHR-layout-07993# @layout@
---     /must/ be compatible with the layout used to create
---     @descriptorUpdateTemplate@
---
--- -   #VUID-vkCmdPushDescriptorSetWithTemplateKHR-descriptorUpdateTemplate-07994#
---     @descriptorUpdateTemplate@ /must/ have been created with a
---     @templateType@ of
---     'Vulkan.Core11.Enums.DescriptorUpdateTemplateType.DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR'
---
--- -   #VUID-vkCmdPushDescriptorSetWithTemplateKHR-set-07995# @set@ /must/
---     be the same value used to create @descriptorUpdateTemplate@
---
--- -   #VUID-vkCmdPushDescriptorSetWithTemplateKHR-set-07304# @set@ /must/
---     be less than
---     'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo'::@setLayoutCount@
---     provided when @layout@ was created
---
--- -   #VUID-vkCmdPushDescriptorSetWithTemplateKHR-set-07305# @set@ /must/
---     be the unique set number in the pipeline layout that uses a
---     descriptor set layout that was created with
---     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR'
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdPushDescriptorSetWithTemplateKHR-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdPushDescriptorSetWithTemplateKHR-descriptorUpdateTemplate-parameter#
---     @descriptorUpdateTemplate@ /must/ be a valid
---     'Vulkan.Core11.Handles.DescriptorUpdateTemplate' handle
---
--- -   #VUID-vkCmdPushDescriptorSetWithTemplateKHR-layout-parameter#
---     @layout@ /must/ be a valid 'Vulkan.Core10.Handles.PipelineLayout'
---     handle
---
--- -   #VUID-vkCmdPushDescriptorSetWithTemplateKHR-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-vkCmdPushDescriptorSetWithTemplateKHR-commandBuffer-cmdpool#
---     The 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics, or compute operations
---
--- -   #VUID-vkCmdPushDescriptorSetWithTemplateKHR-videocoding# This
---     command /must/ only be called outside of a video coding scope
---
--- -   #VUID-vkCmdPushDescriptorSetWithTemplateKHR-commonparent# Each of
---     @commandBuffer@, @descriptorUpdateTemplate@, and @layout@ /must/
---     have been created, allocated, or retrieved from the same
---     'Vulkan.Core10.Handles.Device'
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
--- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | Compute                                                                                                               |                                                                                                                                        |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
---
--- __API Example__
---
--- > struct AppDataStructure
--- > {
--- >     VkDescriptorImageInfo  imageInfo;          // a single image info
--- >     // ... some more application-related data
--- > };
--- >
--- > const VkDescriptorUpdateTemplateEntry descriptorUpdateTemplateEntries[] =
--- > {
--- >     // binding to a single image descriptor
--- >     {
--- >         .binding = 0,
--- >         .dstArrayElement = 0,
--- >         .descriptorCount = 1,
--- >         .descriptorType = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,
--- >         .offset = offsetof(AppDataStructure, imageInfo),
--- >         .stride = 0     // not required if descriptorCount is 1
--- >     }
--- > };
--- >
--- > // create a descriptor update template for push descriptor set updates
--- > const VkDescriptorUpdateTemplateCreateInfo createInfo =
--- > {
--- >     .sType = VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO,
--- >     .pNext = NULL,
--- >     .flags = 0,
--- >     .descriptorUpdateEntryCount = 1,
--- >     .pDescriptorUpdateEntries = descriptorUpdateTemplateEntries,
--- >     .templateType = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR,
--- >     .descriptorSetLayout = 0,   // ignored by given templateType
--- >     .pipelineBindPoint = VK_PIPELINE_BIND_POINT_GRAPHICS,
--- >     .pipelineLayout = myPipelineLayout,
--- >     .set = 0,
--- > };
--- >
--- > VkDescriptorUpdateTemplate myDescriptorUpdateTemplate;
--- > myResult = vkCreateDescriptorUpdateTemplate(
--- >     myDevice,
--- >     &createInfo,
--- >     NULL,
--- >     &myDescriptorUpdateTemplate);
--- >
--- > AppDataStructure appData;
--- > // fill appData here or cache it in your engine
--- > vkCmdPushDescriptorSetWithTemplateKHR(myCmdBuffer, myDescriptorUpdateTemplate, myPipelineLayout, 0,&appData);
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_descriptor_update_template VK_KHR_descriptor_update_template>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_push_descriptor VK_KHR_push_descriptor>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
--- 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core11.Handles.DescriptorUpdateTemplate',
--- 'Vulkan.Core10.Handles.PipelineLayout'
-cmdPushDescriptorSetWithTemplateKHR :: forall io
-                                     . (MonadIO io)
-                                    => -- | @commandBuffer@ is the command buffer that the descriptors will be
-                                       -- recorded in.
-                                       CommandBuffer
-                                    -> -- | @descriptorUpdateTemplate@ is a descriptor update template defining how
-                                       -- to interpret the descriptor information in @pData@.
-                                       DescriptorUpdateTemplate
-                                    -> -- | @layout@ is a 'Vulkan.Core10.Handles.PipelineLayout' object used to
-                                       -- program the bindings. It /must/ be compatible with the layout used to
-                                       -- create the @descriptorUpdateTemplate@ handle.
-                                       PipelineLayout
-                                    -> -- | @set@ is the set number of the descriptor set in the pipeline layout
-                                       -- that will be updated. This /must/ be the same number used to create the
-                                       -- @descriptorUpdateTemplate@ handle.
-                                       ("set" ::: Word32)
-                                    -> -- | @pData@ is a pointer to memory containing descriptors for the templated
-                                       -- update.
-                                       ("data" ::: Ptr ())
-                                    -> io ()
-cmdPushDescriptorSetWithTemplateKHR commandBuffer
-                                      descriptorUpdateTemplate
-                                      layout
-                                      set
-                                      data' = liftIO $ do
-  let vkCmdPushDescriptorSetWithTemplateKHRPtr = pVkCmdPushDescriptorSetWithTemplateKHR (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  unless (vkCmdPushDescriptorSetWithTemplateKHRPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdPushDescriptorSetWithTemplateKHR is null" Nothing Nothing
-  let vkCmdPushDescriptorSetWithTemplateKHR' = mkVkCmdPushDescriptorSetWithTemplateKHR vkCmdPushDescriptorSetWithTemplateKHRPtr
-  traceAroundEvent "vkCmdPushDescriptorSetWithTemplateKHR" (vkCmdPushDescriptorSetWithTemplateKHR'
-                                                              (commandBufferHandle (commandBuffer))
-                                                              (descriptorUpdateTemplate)
-                                                              (layout)
-                                                              (set)
-                                                              (data'))
-  pure $ ()
+-- No documentation found for TopLevel "VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR"
+pattern DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR = DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS
 
 
 -- No documentation found for TopLevel "VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR"
@@ -432,6 +231,10 @@
 
 -- No documentation found for TopLevel "vkUpdateDescriptorSetWithTemplateKHR"
 updateDescriptorSetWithTemplateKHR = updateDescriptorSetWithTemplate
+
+
+-- No documentation found for TopLevel "vkCmdPushDescriptorSetWithTemplateKHR"
+cmdPushDescriptorSetWithTemplateKHR = cmdPushDescriptorSetWithTemplate
 
 
 -- No documentation found for TopLevel "VkDescriptorUpdateTemplateCreateFlagsKHR"
diff --git a/src/Vulkan/Extensions/VK_KHR_device_address_commands.hs b/src/Vulkan/Extensions/VK_KHR_device_address_commands.hs
new file mode 100644
# file too large to diff: src/Vulkan/Extensions/VK_KHR_device_address_commands.hs
diff --git a/src/Vulkan/Extensions/VK_KHR_device_address_commands.hs-boot b/src/Vulkan/Extensions/VK_KHR_device_address_commands.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_KHR_device_address_commands.hs-boot
@@ -0,0 +1,559 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_KHR_device_address_commands - device extension
+--
+-- = VK_KHR_device_address_commands
+--
+-- [__Name String__]
+--     @VK_KHR_device_address_commands@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     319
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Ratified
+--
+-- [__Extension and Version Dependencies__]
+--                     
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--                      or
+--                     
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
+--                  and
+--                 
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_buffer_device_address VK_KHR_buffer_device_address>
+--              or
+--             
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.2 Vulkan Version 1.2>
+--          and
+--         
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_synchronization2 VK_KHR_synchronization2>
+--          and
+--         
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state VK_EXT_extended_dynamic_state>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3 Vulkan Version 1.3>
+--
+-- [__API Interactions__]
+--
+--     -   Interacts with VK_VERSION_1_2
+--
+--     -   Interacts with VK_AMD_buffer_marker
+--
+--     -   Interacts with VK_EXT_conditional_rendering
+--
+--     -   Interacts with VK_EXT_mesh_shader
+--
+--     -   Interacts with VK_EXT_transform_feedback
+--
+--     -   Interacts with VK_KHR_acceleration_structure
+--
+--     -   Interacts with VK_KHR_draw_indirect_count
+--
+-- [__Contact__]
+--
+--     -   Tobias Hector
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_device_address_commands] @tobski%0A*Here describe the issue or question you have about the VK_KHR_device_address_commands extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_KHR_device_address_commands.adoc VK_KHR_device_address_commands>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2026-03-10
+--
+-- [__Contributors__]
+--
+--     -   Tobias Hector, AMD
+--
+--     -   Matthew Netsch, Qualcomm Technologies, Inc
+--
+--     -   Jan-Harald Fredriksen, Arm
+--
+--     -   Mike Blumenkrantz, Valve
+--
+--     -   Allan MacKinnon, Google
+--
+--     -   Daniel Koch, NVIDIA
+--
+--     -   Autumn Ashton, Valve
+--
+--     -   Piers Daniell, NVIDIA
+--
+--     -   Stuart Smith, AMD
+--
+--     -   Caterina Shablia, Collabora
+--
+--     -   Piotr Byszewski, Cognizant
+--
+--     -   James Fitzpatrick, Imagination
+--
+--     -   Daniel Story, Nintendo
+--
+--     -   Baldur Karlsson, Valve
+--
+--     -   Jon Leech, Khronos
+--
+--     -   Samuel Pitoiset, Valve
+--
+--     -   Lionel Landwerlin, Intel
+--
+--     -   Hans-Kristian Arntzen, Valve
+--
+--     -   Žiga Markuš, LunarG
+--
+--     -   Spencer Fricke, Lunarg
+--
+--     -   Per Inge Mathisen, Arm
+--
+--     -   Vikram Kushwaha, NVIDIA
+--
+--     -   Ralph Potter, Samsung
+--
+--     -   Marijn Suijten, Traverse Research
+--
+--     -   Ricard Garcia, Igalia
+--
+--     -   Mengyang Liu, AMD
+--
+--     -   Artem Kharytoniuk, LunarG
+--
+--     -   Marty Johnson, Khronos
+--
+--     -   Alyssa Rosenzweig, Valve
+--
+-- == Description
+--
+-- This extension enables applications to use device addresses in place of
+-- buffer objects for most functionality.
+--
+-- == New Commands
+--
+-- -   'cmdBindIndexBuffer3KHR'
+--
+-- -   'cmdBindVertexBuffers3KHR'
+--
+-- -   'cmdCopyImageToMemoryKHR'
+--
+-- -   'cmdCopyMemoryKHR'
+--
+-- -   'cmdCopyMemoryToImageKHR'
+--
+-- -   'cmdCopyQueryPoolResultsToMemoryKHR'
+--
+-- -   'cmdDispatchIndirect2KHR'
+--
+-- -   'cmdDrawIndexedIndirect2KHR'
+--
+-- -   'cmdDrawIndirect2KHR'
+--
+-- -   'cmdFillMemoryKHR'
+--
+-- -   'cmdUpdateMemoryKHR'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_draw_indirect_count VK_KHR_draw_indirect_count>
+-- or
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.2 Vulkan Version 1.2>
+-- and
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_mesh_shader VK_EXT_mesh_shader>
+-- is supported:
+--
+-- -   'cmdDrawMeshTasksIndirectCount2EXT'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_buffer_marker VK_AMD_buffer_marker>
+-- is supported:
+--
+-- -   'cmdWriteMarkerToMemoryAMD'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_conditional_rendering VK_EXT_conditional_rendering>
+-- is supported:
+--
+-- -   'cmdBeginConditionalRendering2EXT'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_mesh_shader VK_EXT_mesh_shader>
+-- is supported:
+--
+-- -   'cmdDrawMeshTasksIndirect2EXT'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_transform_feedback VK_EXT_transform_feedback>
+-- is supported:
+--
+-- -   'cmdBeginTransformFeedback2EXT'
+--
+-- -   'cmdBindTransformFeedbackBuffers2EXT'
+--
+-- -   'cmdDrawIndirectByteCount2EXT'
+--
+-- -   'cmdEndTransformFeedback2EXT'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>
+-- is supported:
+--
+-- -   'createAccelerationStructure2KHR'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_draw_indirect_count VK_KHR_draw_indirect_count>
+-- or
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.2 Vulkan Version 1.2>
+-- is supported:
+--
+-- -   'cmdDrawIndexedIndirectCount2KHR'
+--
+-- -   'cmdDrawIndirectCount2KHR'
+--
+-- == New Structures
+--
+-- -   'BindIndexBuffer3InfoKHR'
+--
+-- -   'BindVertexBuffer3InfoKHR'
+--
+-- -   'CopyDeviceMemoryImageInfoKHR'
+--
+-- -   'CopyDeviceMemoryInfoKHR'
+--
+-- -   'DeviceAddressRangeKHR'
+--
+-- -   'DeviceMemoryCopyKHR'
+--
+-- -   'DeviceMemoryImageCopyKHR'
+--
+-- -   'DispatchIndirect2InfoKHR'
+--
+-- -   'DrawIndirect2InfoKHR'
+--
+-- -   'DrawIndirectCount2InfoKHR'
+--
+-- -   'MemoryRangeBarrierKHR'
+--
+-- -   'StridedDeviceAddressRangeKHR'
+--
+-- -   Extending
+--     'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.DependencyInfo':
+--
+--     -   'MemoryRangeBarriersInfoKHR'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceDeviceAddressCommandsFeaturesKHR'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_buffer_marker VK_AMD_buffer_marker>
+-- is supported:
+--
+-- -   'MemoryMarkerInfoAMD'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_conditional_rendering VK_EXT_conditional_rendering>
+-- is supported:
+--
+-- -   'ConditionalRenderingBeginInfo2EXT'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_transform_feedback VK_EXT_transform_feedback>
+-- is supported:
+--
+-- -   'BindTransformFeedbackBuffer2InfoEXT'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>
+-- is supported:
+--
+-- -   'AccelerationStructureCreateInfo2KHR'
+--
+-- == New Enums
+--
+-- -   'AddressCommandFlagBitsKHR'
+--
+-- == New Bitmasks
+--
+-- -   'AddressCommandFlagsKHR'
+--
+-- == New Enum Constants
+--
+-- -   'KHR_DEVICE_ADDRESS_COMMANDS_EXTENSION_NAME'
+--
+-- -   'KHR_DEVICE_ADDRESS_COMMANDS_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BIND_INDEX_BUFFER_3_INFO_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BIND_VERTEX_BUFFER_3_INFO_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_DEVICE_MEMORY_IMAGE_INFO_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_DEVICE_MEMORY_INFO_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEVICE_MEMORY_COPY_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEVICE_MEMORY_IMAGE_COPY_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DISPATCH_INDIRECT_2_INFO_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DRAW_INDIRECT_2_INFO_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DRAW_INDIRECT_COUNT_2_INFO_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MEMORY_RANGE_BARRIERS_INFO_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MEMORY_RANGE_BARRIER_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_ADDRESS_COMMANDS_FEATURES_KHR'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_buffer_marker VK_AMD_buffer_marker>
+-- is supported:
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MEMORY_MARKER_INFO_AMD'
+--
+-- 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.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_2_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 'AddressCommandFlagBitsKHR':
+--
+--     -   'ADDRESS_COMMAND_TRANSFORM_FEEDBACK_BUFFER_USAGE_BIT_KHR'
+--
+--     -   'ADDRESS_COMMAND_UNKNOWN_TRANSFORM_FEEDBACK_BUFFER_USAGE_BIT_KHR'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BIND_TRANSFORM_FEEDBACK_BUFFER_2_INFO_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.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_2_KHR'
+--
+-- == Version History
+--
+-- -   Revision 1, 2026-03-10 (Tobias Hector)
+--
+--     -   Initial revision
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_device_address_commands 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_device_address_commands  ( AccelerationStructureCreateInfo2KHR
+                                                         , BindIndexBuffer3InfoKHR
+                                                         , BindTransformFeedbackBuffer2InfoEXT
+                                                         , BindVertexBuffer3InfoKHR
+                                                         , ConditionalRenderingBeginInfo2EXT
+                                                         , CopyDeviceMemoryImageInfoKHR
+                                                         , CopyDeviceMemoryInfoKHR
+                                                         , DeviceAddressRangeKHR
+                                                         , DeviceMemoryCopyKHR
+                                                         , DeviceMemoryImageCopyKHR
+                                                         , DispatchIndirect2InfoKHR
+                                                         , DrawIndirect2InfoKHR
+                                                         , DrawIndirectCount2InfoKHR
+                                                         , MemoryMarkerInfoAMD
+                                                         , MemoryRangeBarrierKHR
+                                                         , MemoryRangeBarriersInfoKHR
+                                                         , PhysicalDeviceDeviceAddressCommandsFeaturesKHR
+                                                         , StridedDeviceAddressRangeKHR
+                                                         , AddressCommandFlagsKHR
+                                                         , AddressCommandFlagBitsKHR
+                                                         ) 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)
+type role AccelerationStructureCreateInfo2KHR nominal
+data AccelerationStructureCreateInfo2KHR (es :: [Type])
+
+instance ( Extendss AccelerationStructureCreateInfo2KHR es
+         , PokeChain es ) => ToCStruct (AccelerationStructureCreateInfo2KHR es)
+instance Show (Chain es) => Show (AccelerationStructureCreateInfo2KHR es)
+
+instance ( Extendss AccelerationStructureCreateInfo2KHR es
+         , PeekChain es ) => FromCStruct (AccelerationStructureCreateInfo2KHR es)
+
+
+data BindIndexBuffer3InfoKHR
+
+instance ToCStruct BindIndexBuffer3InfoKHR
+instance Show BindIndexBuffer3InfoKHR
+
+instance FromCStruct BindIndexBuffer3InfoKHR
+
+
+data BindTransformFeedbackBuffer2InfoEXT
+
+instance ToCStruct BindTransformFeedbackBuffer2InfoEXT
+instance Show BindTransformFeedbackBuffer2InfoEXT
+
+instance FromCStruct BindTransformFeedbackBuffer2InfoEXT
+
+
+data BindVertexBuffer3InfoKHR
+
+instance ToCStruct BindVertexBuffer3InfoKHR
+instance Show BindVertexBuffer3InfoKHR
+
+instance FromCStruct BindVertexBuffer3InfoKHR
+
+
+data ConditionalRenderingBeginInfo2EXT
+
+instance ToCStruct ConditionalRenderingBeginInfo2EXT
+instance Show ConditionalRenderingBeginInfo2EXT
+
+instance FromCStruct ConditionalRenderingBeginInfo2EXT
+
+
+data CopyDeviceMemoryImageInfoKHR
+
+instance ToCStruct CopyDeviceMemoryImageInfoKHR
+instance Show CopyDeviceMemoryImageInfoKHR
+
+instance FromCStruct CopyDeviceMemoryImageInfoKHR
+
+
+data CopyDeviceMemoryInfoKHR
+
+instance ToCStruct CopyDeviceMemoryInfoKHR
+instance Show CopyDeviceMemoryInfoKHR
+
+instance FromCStruct CopyDeviceMemoryInfoKHR
+
+
+data DeviceAddressRangeKHR
+
+instance ToCStruct DeviceAddressRangeKHR
+instance Show DeviceAddressRangeKHR
+
+instance FromCStruct DeviceAddressRangeKHR
+
+
+data DeviceMemoryCopyKHR
+
+instance ToCStruct DeviceMemoryCopyKHR
+instance Show DeviceMemoryCopyKHR
+
+instance FromCStruct DeviceMemoryCopyKHR
+
+
+type role DeviceMemoryImageCopyKHR nominal
+data DeviceMemoryImageCopyKHR (es :: [Type])
+
+instance ( Extendss DeviceMemoryImageCopyKHR es
+         , PokeChain es ) => ToCStruct (DeviceMemoryImageCopyKHR es)
+instance Show (Chain es) => Show (DeviceMemoryImageCopyKHR es)
+
+instance ( Extendss DeviceMemoryImageCopyKHR es
+         , PeekChain es ) => FromCStruct (DeviceMemoryImageCopyKHR es)
+
+
+data DispatchIndirect2InfoKHR
+
+instance ToCStruct DispatchIndirect2InfoKHR
+instance Show DispatchIndirect2InfoKHR
+
+instance FromCStruct DispatchIndirect2InfoKHR
+
+
+data DrawIndirect2InfoKHR
+
+instance ToCStruct DrawIndirect2InfoKHR
+instance Show DrawIndirect2InfoKHR
+
+instance FromCStruct DrawIndirect2InfoKHR
+
+
+data DrawIndirectCount2InfoKHR
+
+instance ToCStruct DrawIndirectCount2InfoKHR
+instance Show DrawIndirectCount2InfoKHR
+
+instance FromCStruct DrawIndirectCount2InfoKHR
+
+
+data MemoryMarkerInfoAMD
+
+instance ToCStruct MemoryMarkerInfoAMD
+instance Show MemoryMarkerInfoAMD
+
+instance FromCStruct MemoryMarkerInfoAMD
+
+
+data MemoryRangeBarrierKHR
+
+instance ToCStruct MemoryRangeBarrierKHR
+instance Show MemoryRangeBarrierKHR
+
+instance FromCStruct MemoryRangeBarrierKHR
+
+
+type role MemoryRangeBarriersInfoKHR nominal
+data MemoryRangeBarriersInfoKHR (es :: [Type])
+
+instance ( Extendss MemoryRangeBarriersInfoKHR es
+         , PokeChain es ) => ToCStruct (MemoryRangeBarriersInfoKHR es)
+instance Show (Chain es) => Show (MemoryRangeBarriersInfoKHR es)
+
+instance ( Extendss MemoryRangeBarriersInfoKHR es
+         , PeekChain es ) => FromCStruct (MemoryRangeBarriersInfoKHR es)
+
+
+data PhysicalDeviceDeviceAddressCommandsFeaturesKHR
+
+instance ToCStruct PhysicalDeviceDeviceAddressCommandsFeaturesKHR
+instance Show PhysicalDeviceDeviceAddressCommandsFeaturesKHR
+
+instance FromCStruct PhysicalDeviceDeviceAddressCommandsFeaturesKHR
+
+
+data StridedDeviceAddressRangeKHR
+
+instance ToCStruct StridedDeviceAddressRangeKHR
+instance Show StridedDeviceAddressRangeKHR
+
+instance FromCStruct StridedDeviceAddressRangeKHR
+
+
+type AddressCommandFlagsKHR = AddressCommandFlagBitsKHR
+
+data AddressCommandFlagBitsKHR
+
diff --git a/src/Vulkan/Extensions/VK_KHR_device_fault.hs b/src/Vulkan/Extensions/VK_KHR_device_fault.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_KHR_device_fault.hs
@@ -0,0 +1,1545 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_KHR_device_fault - device extension
+--
+-- = VK_KHR_device_fault
+--
+-- [__Name String__]
+--     @VK_KHR_device_fault@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     574
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
+--
+-- [__Contact__]
+--
+--     -   Ralph Potter <<data:image/png;base64, GitLab>>r_potter
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_KHR_device_fault.adoc VK_KHR_device_fault>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2026-03-18
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Contributors__]
+--
+--     -   Ralph Potter, Samsung
+--
+--     -   Craig Graham, Samsung
+--
+--     -   Stuart Smith, AMD
+--
+--     -   Jan-Harald Fredriksen, ARM
+--
+--     -   Mark Bellamy, ARM
+--
+--     -   Andrew Ellem, Google
+--
+--     -   Alex Walters, IMG
+--
+--     -   Jeff Bolz, NVIDIA
+--
+--     -   Baldur Karlsson, Valve
+--
+--     -   Adrian Ravai, Samsung
+--
+--     -   Peter Gal, Samsung
+--
+--     -   Matthew Netsch, QUALCOMM
+--
+--     -   Tobias Hector, AMD
+--
+--     -   Alan Harrison, AMD
+--
+--     -   Vikram Tarikere, IMG
+--
+--     -   Jon Leech, Khronos
+--
+--     -   Samuel Pitoiset, Valve
+--
+-- == Description
+--
+-- Device loss can be triggered by a variety of issues, including invalid
+-- API usage, implementation errors, or hardware failures. This extension
+-- introduces two new commands:
+--
+-- -   'getDeviceFaultReportsKHR'
+--
+-- -   'getDeviceFaultDebugInfoKHR'
+--
+-- 'getDeviceFaultReportsKHR' allows developers to query for additional
+-- information on GPU faults which may have caused device loss, and to
+-- generate binary crash dumps, which may be loaded into external tools for
+-- further diagnosis. Additionally this command allows developers to query
+-- for additional information on GPU faults which were internally recovered
+-- by the implementation.
+--
+-- 'getDeviceFaultReportsKHR' differs from
+-- 'Vulkan.Extensions.VK_EXT_device_fault.getDeviceFaultInfoEXT' in that it
+-- can be called at any time, is able to report faults which do not result
+-- in 'Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST' and allows the caller
+-- to wait for such an error to occur.
+--
+-- 'getDeviceFaultDebugInfoKHR' provides a separate interface which /must/
+-- only be called when a device loss has occurred to provide extended GPU
+-- vendor specific crash post-mortem information.
+--
+-- == New Commands
+--
+-- -   'getDeviceFaultDebugInfoKHR'
+--
+-- -   'getDeviceFaultReportsKHR'
+--
+-- == New Structures
+--
+-- -   'DeviceFaultAddressInfoKHR'
+--
+-- -   'DeviceFaultDebugInfoKHR'
+--
+-- -   'DeviceFaultInfoKHR'
+--
+-- -   'DeviceFaultVendorBinaryHeaderVersionOneKHR'
+--
+-- -   'DeviceFaultVendorInfoKHR'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceFaultFeaturesKHR'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDeviceFaultPropertiesKHR'
+--
+-- == New Enums
+--
+-- -   'DeviceFaultAddressTypeKHR'
+--
+-- -   'DeviceFaultFlagBitsKHR'
+--
+-- -   'DeviceFaultVendorBinaryHeaderVersionKHR'
+--
+-- == New Bitmasks
+--
+-- -   'DeviceFaultFlagsKHR'
+--
+-- == New Enum Constants
+--
+-- -   'KHR_DEVICE_FAULT_EXTENSION_NAME'
+--
+-- -   'KHR_DEVICE_FAULT_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEVICE_FAULT_DEBUG_INFO_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEVICE_FAULT_INFO_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_FEATURES_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_PROPERTIES_KHR'
+--
+-- == Version History
+--
+-- -   Revision 0, 2024-03-01 (Ralph Potter)
+--
+--     -   Internal Revision
+--
+-- -   Revision 1, 2025-06-10 (Craig Graham)
+--
+--     -   Revised API to support async fault queries.
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_device_fault 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_device_fault  ( getDeviceFaultReportsKHR
+                                              , getDeviceFaultDebugInfoKHR
+                                              , pattern DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_ONE_EXT
+                                              , DeviceFaultAddressInfoKHR(..)
+                                              , DeviceFaultVendorInfoKHR(..)
+                                              , DeviceFaultInfoKHR(..)
+                                              , DeviceFaultDebugInfoKHR(..)
+                                              , DeviceFaultVendorBinaryHeaderVersionOneKHR(..)
+                                              , PhysicalDeviceFaultFeaturesKHR(..)
+                                              , PhysicalDeviceFaultPropertiesKHR(..)
+                                              , DeviceFaultFlagsKHR
+                                              , DeviceFaultFlagBitsKHR( DEVICE_FAULT_FLAG_DEVICE_LOST_KHR
+                                                                      , DEVICE_FAULT_FLAG_MEMORY_ADDRESS_KHR
+                                                                      , DEVICE_FAULT_FLAG_INSTRUCTION_ADDRESS_KHR
+                                                                      , DEVICE_FAULT_FLAG_VENDOR_KHR
+                                                                      , DEVICE_FAULT_FLAG_WATCHDOG_TIMEOUT_KHR
+                                                                      , DEVICE_FAULT_FLAG_OVERFLOW_KHR
+                                                                      , ..
+                                                                      )
+                                              , DeviceFaultAddressTypeKHR( DEVICE_FAULT_ADDRESS_TYPE_NONE_KHR
+                                                                         , DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_KHR
+                                                                         , DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_KHR
+                                                                         , DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_KHR
+                                                                         , DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_KHR
+                                                                         , DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_KHR
+                                                                         , DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_KHR
+                                                                         , ..
+                                                                         )
+                                              , DeviceFaultVendorBinaryHeaderVersionKHR( DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_ONE_KHR
+                                                                                       , ..
+                                                                                       )
+                                              , KHR_DEVICE_FAULT_SPEC_VERSION
+                                              , pattern KHR_DEVICE_FAULT_SPEC_VERSION
+                                              , KHR_DEVICE_FAULT_EXTENSION_NAME
+                                              , pattern KHR_DEVICE_FAULT_EXTENSION_NAME
+                                              ) where
+
+import Data.Bits (Bits)
+import Data.Bits (FiniteBits)
+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 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 GHC.Show (showsPrec)
+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.String (IsString)
+import Data.Type.Equality ((:~:)(Refl))
+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 Data.Int (Int32)
+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.Word (Word8)
+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.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.CStruct.Extends (forgetExtensions)
+import Vulkan.CStruct.Utils (lowerArrayPtr)
+import Vulkan.CStruct.Utils (peekByteStringFromSizedVectorPtr)
+import Vulkan.CStruct.Utils (pokeFixedLengthByteString)
+import Vulkan.CStruct.Utils (pokeFixedLengthNullTerminatedByteString)
+import Vulkan.NamedType ((:::))
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.CStruct.Extends (Chain)
+import Vulkan.Core10.Handles (Device)
+import Vulkan.Core10.Handles (Device(..))
+import Vulkan.Core10.Handles (Device(Device))
+import Vulkan.Core10.FundamentalTypes (DeviceAddress)
+import Vulkan.Dynamic (DeviceCmds(pVkGetDeviceFaultDebugInfoKHR))
+import Vulkan.Dynamic (DeviceCmds(pVkGetDeviceFaultReportsKHR))
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_shader_abort (DeviceFaultShaderAbortMessageInfoKHR)
+import Vulkan.Core10.FundamentalTypes (DeviceSize)
+import Vulkan.Core10.Handles (Device_T)
+import Vulkan.CStruct.Extends (Extends)
+import Vulkan.CStruct.Extends (Extendss)
+import Vulkan.CStruct.Extends (Extensible(..))
+import Vulkan.Core10.FundamentalTypes (Flags)
+import Vulkan.Core10.APIConstants (MAX_DESCRIPTION_SIZE)
+import Vulkan.CStruct.Extends (PeekChain)
+import Vulkan.CStruct.Extends (PeekChain(..))
+import Vulkan.CStruct.Extends (PokeChain)
+import Vulkan.CStruct.Extends (PokeChain(..))
+import Vulkan.Core10.Enums.Result (Result)
+import Vulkan.Core10.Enums.Result (Result(..))
+import Vulkan.CStruct.Extends (SomeStruct)
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Core10.APIConstants (UUID_SIZE)
+import Vulkan.Exception (VulkanException(..))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEVICE_FAULT_DEBUG_INFO_KHR))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEVICE_FAULT_INFO_KHR))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_FEATURES_KHR))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_PROPERTIES_KHR))
+import Vulkan.Core10.Enums.Result (Result(SUCCESS))
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetDeviceFaultReportsKHR
+  :: FunPtr (Ptr Device_T -> Word64 -> Ptr Word32 -> Ptr DeviceFaultInfoKHR -> IO Result) -> Ptr Device_T -> Word64 -> Ptr Word32 -> Ptr DeviceFaultInfoKHR -> IO Result
+
+-- | vkGetDeviceFaultReportsKHR - Reports fault information for the specified
+-- device
+--
+-- = Description
+--
+-- If at least one fault report is available when
+-- 'getDeviceFaultReportsKHR' is called, then 'getDeviceFaultReportsKHR'
+-- returns immediately. If no faults have occurred at the time
+-- 'getDeviceFaultReportsKHR' is called, then 'getDeviceFaultReportsKHR'
+-- will block and wait until a fault occurs and a report becomes available
+-- or until the @timeout@ has expired, whichever is sooner.
+--
+-- If @timeout@ is zero, then 'getDeviceFaultReportsKHR' does not wait, but
+-- simply returns the current fault count and reports.
+-- 'Vulkan.Core10.Enums.Result.TIMEOUT' will be returned in this case if no
+-- faults have occurred, even though no actual wait was performed.
+--
+-- If a fault has occurred before the @timeout@ has expired,
+-- 'getDeviceFaultReportsKHR' returns 'Vulkan.Core10.Enums.Result.SUCCESS'.
+-- Otherwise, 'getDeviceFaultReportsKHR' returns
+-- 'Vulkan.Core10.Enums.Result.TIMEOUT' after the @timeout@ has expired.
+--
+-- If @pFaultInfo@ is @NULL@, then the number of fault reports available is
+-- returned in @pFaultCount@. Otherwise, @pFaultCount@ /must/ point to a
+-- variable set by the application to the number of elements in the
+-- @pFaultInfo@ array, and on return the variable is overwritten with the
+-- number of handles actually written to @pFaultInfo@. If @pFaultCount@ is
+-- less than the number of fault reports available, at most @pFaultCount@
+-- structures will be written, and 'Vulkan.Core10.Enums.Result.INCOMPLETE'
+-- will be returned instead of 'Vulkan.Core10.Enums.Result.SUCCESS', to
+-- indicate that not all the available fault reports were returned.
+--
+-- If more than one fault report is available, they will be returned in
+-- order of occurrence via @pFaultInfo@.
+--
+-- Each individual fault report is returned exactly once.
+--
+-- 'getDeviceFaultReportsKHR'() /may/ be invoked in parallel on different
+-- threads, in which case each invocation for a given @device@ will return
+-- a unique set of reports. No fault report being returned to more than one
+-- invocation.
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkGetDeviceFaultReportsKHR-device-parameter# @device@ /must/
+--     be a valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkGetDeviceFaultReportsKHR-pFaultCounts-parameter#
+--     @pFaultCounts@ /must/ be a valid pointer to a @uint32_t@ value
+--
+-- -   #VUID-vkGetDeviceFaultReportsKHR-pFaultInfo-parameter# If
+--     @pFaultInfo@ is not @NULL@, @pFaultInfo@ /must/ be a valid pointer
+--     to an array of @pFaultCounts@ 'DeviceFaultInfoKHR' structures
+--
+-- -   #VUID-vkGetDeviceFaultReportsKHR-pFaultCounts-arraylength# If
+--     @pFaultInfo@ is not @NULL@, the value referenced by @pFaultCounts@
+--     /must/ be greater than @0@
+--
+-- == Return Codes
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
+--
+--     -   'Vulkan.Core10.Enums.Result.INCOMPLETE'
+--
+--     -   'Vulkan.Core10.Enums.Result.SUCCESS'
+--
+--     -   'Vulkan.Core10.Enums.Result.TIMEOUT'
+--
+-- [<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_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_device_fault VK_KHR_device_fault>,
+-- 'Vulkan.Core10.Handles.Device', 'DeviceFaultInfoKHR'
+getDeviceFaultReportsKHR :: forall io
+                          . (MonadIO io)
+                         => -- | @device@ is the logical device from which to query the diagnostic fault
+                            -- information.
+                            Device
+                         -> -- | @timeout@ is the timeout period in units of nanoseconds. @timeout@ is
+                            -- adjusted to the closest value allowed by the implementation-dependent
+                            -- timeout accuracy, which /may/ be substantially longer than one
+                            -- nanosecond, and /may/ be longer than the requested period.
+                            ("timeout" ::: Word64)
+                         -> io (Result, ("faultInfo" ::: Vector DeviceFaultInfoKHR))
+getDeviceFaultReportsKHR device timeout = liftIO . evalContT $ do
+  let vkGetDeviceFaultReportsKHRPtr = pVkGetDeviceFaultReportsKHR (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkGetDeviceFaultReportsKHRPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetDeviceFaultReportsKHR is null" Nothing Nothing
+  let vkGetDeviceFaultReportsKHR' = mkVkGetDeviceFaultReportsKHR vkGetDeviceFaultReportsKHRPtr
+  let device' = deviceHandle (device)
+  pPFaultCounts <- ContT $ bracket (callocBytes @Word32 4) free
+  r <- lift $ traceAroundEvent "vkGetDeviceFaultReportsKHR" (vkGetDeviceFaultReportsKHR'
+                                                               device'
+                                                               (timeout)
+                                                               (pPFaultCounts)
+                                                               (nullPtr))
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+  pFaultCounts <- lift $ peek @Word32 pPFaultCounts
+  pPFaultInfo <- ContT $ bracket (callocBytes @DeviceFaultInfoKHR ((fromIntegral (pFaultCounts)) * 608)) free
+  _ <- traverse (\i -> ContT $ pokeZeroCStruct (pPFaultInfo `advancePtrBytes` (i * 608) :: Ptr DeviceFaultInfoKHR) . ($ ())) [0..(fromIntegral (pFaultCounts)) - 1]
+  r' <- lift $ traceAroundEvent "vkGetDeviceFaultReportsKHR" (vkGetDeviceFaultReportsKHR'
+                                                                device'
+                                                                (timeout)
+                                                                (pPFaultCounts)
+                                                                ((pPFaultInfo)))
+  lift $ when (r' < SUCCESS) (throwIO (VulkanException r'))
+  pFaultCounts' <- lift $ peek @Word32 pPFaultCounts
+  pFaultInfo' <- lift $ generateM (fromIntegral (pFaultCounts')) (\i -> peekCStruct @DeviceFaultInfoKHR (((pPFaultInfo) `advancePtrBytes` (608 * (i)) :: Ptr DeviceFaultInfoKHR)))
+  pure $ ((r'), pFaultInfo')
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetDeviceFaultDebugInfoKHR
+  :: FunPtr (Ptr Device_T -> Ptr (SomeStruct DeviceFaultDebugInfoKHR) -> IO Result) -> Ptr Device_T -> Ptr (SomeStruct DeviceFaultDebugInfoKHR) -> IO Result
+
+-- | vkGetDeviceFaultDebugInfoKHR - Retrieve vendor-specific crash dump data
+-- for the specified logical device
+--
+-- = Description
+--
+-- If @pDebugInfo->pVendorBinaryData@ is @NULL@, then the size of any
+-- vendor-specific binary crash dump is returned in
+-- @pDebugInfo->vendorBinarySize@.
+--
+-- If the @pDebugInfo->pVendorBinaryData@ is not @NULL@ then it /must/
+-- point to a buffer of size @pDebugInfo->vendorBinarySize@ bytes.
+--
+-- On return, @pDebugInfo->vendorBinarySize@ will be overwritten with the
+-- number of bytes actually written to the @pDebugInfo->pVendorBinaryData@.
+--
+-- If @pDebugInfo->vendorBinaryData@ is not @NULL@, then subsequent calls
+-- to 'getDeviceFaultDebugInfoKHR' for the same @device@ /must/ return
+-- identical binary values in the @pDebugInfo->pVendorBinaryData@ buffer up
+-- to the limit defined by @pDebugInfo->vendorBinarySize@.
+--
+-- If the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-deviceFaultVendorBinary vendor-specific crash dumps>
+-- feature is not enabled, then implementations /must/ set
+-- @pDebugInfo@->vendorBinarySize to zero and /must/ not modify
+-- @pDebugInfo@->pVendorBinaryData.
+--
+-- == Return Codes
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
+--
+--     -   'Vulkan.Core10.Enums.Result.INCOMPLETE'
+--
+--     -   '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_NOT_ENOUGH_SPACE_KHR'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_device_fault VK_KHR_device_fault>,
+-- 'Vulkan.Core10.Handles.Device', 'DeviceFaultDebugInfoKHR'
+getDeviceFaultDebugInfoKHR :: forall a io
+                            . ( Extendss DeviceFaultDebugInfoKHR a
+                              , PokeChain a
+                              , PeekChain a
+                              , MonadIO io )
+                           => -- | @device@ is the logical device from which to query the crash dump.
+                              --
+                              -- #VUID-vkGetDeviceFaultDebugInfoKHR-device-12383# @device@ /must/ be
+                              -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#devsandqueues-lost-device lost>
+                              --
+                              -- #VUID-vkGetDeviceFaultDebugInfoKHR-device-parameter# @device@ /must/ be
+                              -- a valid 'Vulkan.Core10.Handles.Device' handle
+                              Device
+                           -> io (Result, DeviceFaultDebugInfoKHR a)
+getDeviceFaultDebugInfoKHR device = liftIO . evalContT $ do
+  let vkGetDeviceFaultDebugInfoKHRPtr = pVkGetDeviceFaultDebugInfoKHR (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkGetDeviceFaultDebugInfoKHRPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetDeviceFaultDebugInfoKHR is null" Nothing Nothing
+  let vkGetDeviceFaultDebugInfoKHR' = mkVkGetDeviceFaultDebugInfoKHR vkGetDeviceFaultDebugInfoKHRPtr
+  pPDebugInfo <- ContT (withZeroCStruct @(DeviceFaultDebugInfoKHR _))
+  r <- lift $ traceAroundEvent "vkGetDeviceFaultDebugInfoKHR" (vkGetDeviceFaultDebugInfoKHR'
+                                                                 (deviceHandle (device))
+                                                                 (forgetExtensions (pPDebugInfo)))
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+  pDebugInfo <- lift $ peekCStruct @(DeviceFaultDebugInfoKHR _) pPDebugInfo
+  pure $ (r, pDebugInfo)
+
+
+-- No documentation found for TopLevel "VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_ONE_EXT"
+pattern DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_ONE_EXT = DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_ONE_KHR
+
+
+-- | VkDeviceFaultAddressInfoKHR - Structure specifying GPU virtual address
+-- information
+--
+-- = Description
+--
+-- The combination of @reportedAddress@ and @addressPrecision@ allow the
+-- possible range of addresses to be calculated, such that:
+--
+-- > lower_address = (pInfo->reportedAddress & ~(pInfo->addressPrecision-1))
+-- > upper_address = (pInfo->reportedAddress |  (pInfo->addressPrecision-1))
+--
+-- It is valid for the @reportedAddress@ to contain a more precise address
+-- than indicated by @addressPrecision@. In this case, the value of
+-- @reportedAddress@ should be treated as an additional hint as to the
+-- value of the address that triggered the page fault, or to the value of
+-- an instruction pointer.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_fault VK_EXT_device_fault>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_device_fault VK_KHR_device_fault>,
+-- 'Vulkan.Core10.FundamentalTypes.DeviceAddress',
+-- 'DeviceFaultAddressTypeKHR',
+-- 'Vulkan.Extensions.VK_EXT_device_fault.DeviceFaultInfoEXT',
+-- 'DeviceFaultInfoKHR', 'Vulkan.Core10.FundamentalTypes.DeviceSize'
+data DeviceFaultAddressInfoKHR = DeviceFaultAddressInfoKHR
+  { -- | @addressType@ is either the type of memory operation that triggered a
+    -- page fault, or the type of association between an instruction pointer
+    -- and a fault.
+    addressType :: DeviceFaultAddressTypeKHR
+  , -- | @reportedAddress@ is the GPU virtual address recorded by the device.
+    reportedAddress :: DeviceAddress
+  , -- | @addressPrecision@ is a power of two value that specifies how precisely
+    -- the device can report the address.
+    addressPrecision :: DeviceSize
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (DeviceFaultAddressInfoKHR)
+#endif
+deriving instance Show DeviceFaultAddressInfoKHR
+
+instance ToCStruct DeviceFaultAddressInfoKHR where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p DeviceFaultAddressInfoKHR{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr DeviceFaultAddressTypeKHR)) (addressType)
+    poke ((p `plusPtr` 8 :: Ptr DeviceAddress)) (reportedAddress)
+    poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (addressPrecision)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr DeviceFaultAddressTypeKHR)) (zero)
+    poke ((p `plusPtr` 8 :: Ptr DeviceAddress)) (zero)
+    poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (zero)
+    f
+
+instance FromCStruct DeviceFaultAddressInfoKHR where
+  peekCStruct p = do
+    addressType <- peek @DeviceFaultAddressTypeKHR ((p `plusPtr` 0 :: Ptr DeviceFaultAddressTypeKHR))
+    reportedAddress <- peek @DeviceAddress ((p `plusPtr` 8 :: Ptr DeviceAddress))
+    addressPrecision <- peek @DeviceSize ((p `plusPtr` 16 :: Ptr DeviceSize))
+    pure $ DeviceFaultAddressInfoKHR
+             addressType reportedAddress addressPrecision
+
+instance Storable DeviceFaultAddressInfoKHR where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero DeviceFaultAddressInfoKHR where
+  zero = DeviceFaultAddressInfoKHR
+           zero
+           zero
+           zero
+
+
+-- | VkDeviceFaultVendorInfoKHR - Structure specifying vendor-specific fault
+-- information
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_fault VK_EXT_device_fault>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_device_fault VK_KHR_device_fault>,
+-- 'Vulkan.Extensions.VK_EXT_device_fault.DeviceFaultInfoEXT',
+-- 'DeviceFaultInfoKHR'
+data DeviceFaultVendorInfoKHR = DeviceFaultVendorInfoKHR
+  { -- | @description@ is an array of
+    -- 'Vulkan.Core10.APIConstants.MAX_DESCRIPTION_SIZE' @char@ containing a
+    -- null-terminated UTF-8 string which is a human readable description of
+    -- the fault.
+    description :: ByteString
+  , -- | @vendorFaultCode@ is the vendor-specific fault code for this fault.
+    vendorFaultCode :: Word64
+  , -- | @vendorFaultData@ is the vendor-specific fault data associated with this
+    -- fault.
+    vendorFaultData :: Word64
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (DeviceFaultVendorInfoKHR)
+#endif
+deriving instance Show DeviceFaultVendorInfoKHR
+
+instance ToCStruct DeviceFaultVendorInfoKHR where
+  withCStruct x f = allocaBytes 272 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p DeviceFaultVendorInfoKHR{..} f = do
+    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 0 :: Ptr (FixedArray MAX_DESCRIPTION_SIZE CChar))) (description)
+    poke ((p `plusPtr` 256 :: Ptr Word64)) (vendorFaultCode)
+    poke ((p `plusPtr` 264 :: Ptr Word64)) (vendorFaultData)
+    f
+  cStructSize = 272
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 0 :: Ptr (FixedArray MAX_DESCRIPTION_SIZE CChar))) (mempty)
+    poke ((p `plusPtr` 256 :: Ptr Word64)) (zero)
+    poke ((p `plusPtr` 264 :: Ptr Word64)) (zero)
+    f
+
+instance FromCStruct DeviceFaultVendorInfoKHR where
+  peekCStruct p = do
+    description <- packCString (lowerArrayPtr ((p `plusPtr` 0 :: Ptr (FixedArray MAX_DESCRIPTION_SIZE CChar))))
+    vendorFaultCode <- peek @Word64 ((p `plusPtr` 256 :: Ptr Word64))
+    vendorFaultData <- peek @Word64 ((p `plusPtr` 264 :: Ptr Word64))
+    pure $ DeviceFaultVendorInfoKHR
+             description vendorFaultCode vendorFaultData
+
+instance Storable DeviceFaultVendorInfoKHR where
+  sizeOf ~_ = 272
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero DeviceFaultVendorInfoKHR where
+  zero = DeviceFaultVendorInfoKHR
+           mempty
+           zero
+           zero
+
+
+-- | VkDeviceFaultInfoKHR - Structure specifying device fault information
+--
+-- = Description
+--
+-- An implementation /should/ populate as many members of
+-- 'DeviceFaultInfoKHR' as possible, given the information available at the
+-- time of the fault and the constraints of the implementation itself.
+--
+-- A single error /may/ generate multiple instances of
+-- 'DeviceFaultInfoKHR'. For example, multiple page faults /may/ be
+-- generated, with the @faultAddress@ member of each instance identifying a
+-- different memory address. In this case, all instances of
+-- 'DeviceFaultInfoKHR' /should/ share the same @groupID@ where the
+-- implementation can reasonably ascertain this association.
+--
+-- Due to hardware limitations, @faultAddressInfo@ and
+-- @instructionAddressInfo@ describe ranges of GPU virtual address space,
+-- rather than precise addresses. The precise memory address accessed or
+-- the precise value of the instruction pointer /must/ lie within the
+-- region described.
+--
+-- Each 'DeviceFaultInfoKHR' reported may (depending on the @flags@ set)
+-- provide:
+--
+-- -   A memory access which may have triggered a page fault and may have
+--     contributed to device loss
+--
+-- -   The value of an active instruction pointer at the time a fault
+--     occurred. This value may be indicative of the active pipeline or
+--     shader at the time of device loss
+--
+-- Comparison of the GPU virtual addresses described by @faultAddressInfo@
+-- or @instructionAddressInfo@ to GPU virtual address ranges reported by
+-- the @VK_EXT_device_address_binding_report@ extension may allow
+-- applications to correlate between these addresses and Vulkan objects.
+-- Applications should be aware that these addresses may also correspond to
+-- resources internal to an implementation, which will not be reported via
+-- the @VK_EXT_device_address_binding_report@ extension.
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_device_fault VK_KHR_device_fault>,
+-- 'DeviceFaultAddressInfoKHR', 'DeviceFaultFlagsKHR',
+-- 'DeviceFaultVendorInfoKHR',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'getDeviceFaultReportsKHR'
+data DeviceFaultInfoKHR = DeviceFaultInfoKHR
+  { -- | @flags@ is a bitmask of 'DeviceFaultFlagBitsKHR' values giving
+    -- information as to the type of fault and which additional fields have
+    -- been populated by the driver provide further information.
+    flags :: DeviceFaultFlagsKHR
+  , -- No documentation found for Nested "VkDeviceFaultInfoKHR" "groupId"
+    groupId :: Word64
+  , -- | @description@ is an array of
+    -- 'Vulkan.Core10.APIConstants.MAX_DESCRIPTION_SIZE' @char@ containing a
+    -- null-terminated UTF-8 string which is a human readable description of
+    -- the fault.
+    description :: ByteString
+  , -- | @faultAddressInfo@ is a 'DeviceFaultAddressInfoKHR' structure providing
+    -- details of the memory access which caused a fault.
+    faultAddressInfo :: DeviceFaultAddressInfoKHR
+  , -- | @instructionAddressInfo@ is a 'DeviceFaultAddressInfoKHR' structure
+    -- providing details of the GPU instruction which cause a fault.
+    instructionAddressInfo :: DeviceFaultAddressInfoKHR
+  , -- | @vendorInfo@ is a 'DeviceFaultVendorInfoKHR' structure providing vendor
+    -- specific fault information.
+    vendorInfo :: DeviceFaultVendorInfoKHR
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (DeviceFaultInfoKHR)
+#endif
+deriving instance Show DeviceFaultInfoKHR
+
+instance ToCStruct DeviceFaultInfoKHR where
+  withCStruct x f = allocaBytes 608 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p DeviceFaultInfoKHR{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_FAULT_INFO_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr DeviceFaultFlagsKHR)) (flags)
+    poke ((p `plusPtr` 24 :: Ptr Word64)) (groupId)
+    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 32 :: Ptr (FixedArray MAX_DESCRIPTION_SIZE CChar))) (description)
+    poke ((p `plusPtr` 288 :: Ptr DeviceFaultAddressInfoKHR)) (faultAddressInfo)
+    poke ((p `plusPtr` 312 :: Ptr DeviceFaultAddressInfoKHR)) (instructionAddressInfo)
+    poke ((p `plusPtr` 336 :: Ptr DeviceFaultVendorInfoKHR)) (vendorInfo)
+    f
+  cStructSize = 608
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_FAULT_INFO_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr DeviceFaultFlagsKHR)) (zero)
+    poke ((p `plusPtr` 24 :: Ptr Word64)) (zero)
+    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 32 :: Ptr (FixedArray MAX_DESCRIPTION_SIZE CChar))) (mempty)
+    f
+
+instance FromCStruct DeviceFaultInfoKHR where
+  peekCStruct p = do
+    flags <- peek @DeviceFaultFlagsKHR ((p `plusPtr` 16 :: Ptr DeviceFaultFlagsKHR))
+    groupId <- peek @Word64 ((p `plusPtr` 24 :: Ptr Word64))
+    description <- packCString (lowerArrayPtr ((p `plusPtr` 32 :: Ptr (FixedArray MAX_DESCRIPTION_SIZE CChar))))
+    faultAddressInfo <- peekCStruct @DeviceFaultAddressInfoKHR ((p `plusPtr` 288 :: Ptr DeviceFaultAddressInfoKHR))
+    instructionAddressInfo <- peekCStruct @DeviceFaultAddressInfoKHR ((p `plusPtr` 312 :: Ptr DeviceFaultAddressInfoKHR))
+    vendorInfo <- peekCStruct @DeviceFaultVendorInfoKHR ((p `plusPtr` 336 :: Ptr DeviceFaultVendorInfoKHR))
+    pure $ DeviceFaultInfoKHR
+             flags
+             groupId
+             description
+             faultAddressInfo
+             instructionAddressInfo
+             vendorInfo
+
+instance Storable DeviceFaultInfoKHR where
+  sizeOf ~_ = 608
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero DeviceFaultInfoKHR where
+  zero = DeviceFaultInfoKHR
+           zero
+           zero
+           mempty
+           zero
+           zero
+           zero
+
+
+-- | VkDeviceFaultDebugInfoKHR - Structure allowing retrieval of the vendor
+-- binary crash dump
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkDeviceFaultDebugInfoKHR-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEVICE_FAULT_DEBUG_INFO_KHR'
+--
+-- -   #VUID-VkDeviceFaultDebugInfoKHR-pNext-pNext# @pNext@ /must/ be
+--     @NULL@ or a pointer to a valid instance of
+--     'Vulkan.Extensions.VK_KHR_shader_abort.DeviceFaultShaderAbortMessageInfoKHR'
+--
+-- -   #VUID-VkDeviceFaultDebugInfoKHR-sType-unique# The @sType@ value of
+--     each structure in the @pNext@ chain /must/ be unique
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_device_fault VK_KHR_device_fault>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'getDeviceFaultDebugInfoKHR'
+data DeviceFaultDebugInfoKHR (es :: [Type]) = DeviceFaultDebugInfoKHR
+  { -- No documentation found for Nested "VkDeviceFaultDebugInfoKHR" "pNext"
+    next :: Chain es
+  , -- No documentation found for Nested "VkDeviceFaultDebugInfoKHR" "vendorBinarySize"
+    vendorBinarySize :: Word32
+  , -- No documentation found for Nested "VkDeviceFaultDebugInfoKHR" "pVendorBinaryData"
+    vendorBinaryData :: Ptr ()
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (DeviceFaultDebugInfoKHR (es :: [Type]))
+#endif
+deriving instance Show (Chain es) => Show (DeviceFaultDebugInfoKHR es)
+
+instance Extensible DeviceFaultDebugInfoKHR where
+  extensibleTypeName = "DeviceFaultDebugInfoKHR"
+  setNext DeviceFaultDebugInfoKHR{..} next' = DeviceFaultDebugInfoKHR{next = next', ..}
+  getNext DeviceFaultDebugInfoKHR{..} = next
+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends DeviceFaultDebugInfoKHR e => b) -> Maybe b
+  extends _ f
+    | Just Refl <- eqT @e @DeviceFaultShaderAbortMessageInfoKHR = Just f
+    | otherwise = Nothing
+
+instance ( Extendss DeviceFaultDebugInfoKHR es
+         , PokeChain es ) => ToCStruct (DeviceFaultDebugInfoKHR es) where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p DeviceFaultDebugInfoKHR{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_FAULT_DEBUG_INFO_KHR)
+    pNext'' <- fmap castPtr . ContT $ withChain (next)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
+    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) (vendorBinarySize)
+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr ()))) (vendorBinaryData)
+    lift $ f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_FAULT_DEBUG_INFO_KHR)
+    pNext' <- fmap castPtr . ContT $ withZeroChain @es
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
+    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
+    lift $ f
+
+instance ( Extendss DeviceFaultDebugInfoKHR es
+         , PeekChain es ) => FromCStruct (DeviceFaultDebugInfoKHR es) where
+  peekCStruct p = do
+    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
+    next <- peekChain (castPtr pNext)
+    vendorBinarySize <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    pVendorBinaryData <- peek @(Ptr ()) ((p `plusPtr` 24 :: Ptr (Ptr ())))
+    pure $ DeviceFaultDebugInfoKHR
+             next vendorBinarySize pVendorBinaryData
+
+instance es ~ '[] => Zero (DeviceFaultDebugInfoKHR es) where
+  zero = DeviceFaultDebugInfoKHR
+           ()
+           zero
+           zero
+
+
+-- | VkDeviceFaultVendorBinaryHeaderVersionOneKHR - Structure describing the
+-- layout of the vendor binary crash dump header
+--
+-- = Description
+--
+-- Unlike most structures declared by the Vulkan API, all fields of this
+-- structure are written with the least significant byte first, regardless
+-- of host byte-order.
+--
+-- The C language specification does not define the packing of structure
+-- members. This layout assumes tight structure member packing, with
+-- members laid out in the order listed in the structure, and the intended
+-- size of the structure is 56 bytes. If a compiler produces code that
+-- diverges from that pattern, applications /must/ employ another method to
+-- set values at the correct offsets.
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_fault VK_EXT_device_fault>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_device_fault VK_KHR_device_fault>,
+-- 'DeviceFaultVendorBinaryHeaderVersionKHR'
+data DeviceFaultVendorBinaryHeaderVersionOneKHR = DeviceFaultVendorBinaryHeaderVersionOneKHR
+  { -- | @headerSize@ is the length in bytes of the crash dump header.
+    --
+    -- #VUID-VkDeviceFaultVendorBinaryHeaderVersionOneEXT-headerSize-07340#
+    -- @headerSize@ /must/ be 56
+    headerSize :: Word32
+  , -- | @headerVersion@ is a 'DeviceFaultVendorBinaryHeaderVersionKHR' enum
+    -- value specifying the version of the header. A consumer of the crash dump
+    -- /should/ use the header version to interpret the remainder of the
+    -- header. @headerVersion@ /must/ be written as exactly 4 bytes.
+    --
+    -- #VUID-VkDeviceFaultVendorBinaryHeaderVersionOneEXT-headerVersion-07341#
+    -- @headerVersion@ /must/ be
+    -- 'DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_ONE_KHR'
+    --
+    -- #VUID-VkDeviceFaultVendorBinaryHeaderVersionOneKHR-headerVersion-parameter#
+    -- @headerVersion@ /must/ be a valid
+    -- 'DeviceFaultVendorBinaryHeaderVersionKHR' value
+    headerVersion :: DeviceFaultVendorBinaryHeaderVersionKHR
+  , -- | @vendorID@ is the
+    -- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceProperties'::@vendorID@
+    -- of the implementation.
+    vendorID :: Word32
+  , -- | @deviceID@ is the
+    -- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceProperties'::@deviceID@
+    -- of the implementation.
+    deviceID :: Word32
+  , -- | @driverVersion@ is the
+    -- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceProperties'::@driverVersion@
+    -- of the implementation.
+    driverVersion :: Word32
+  , -- | @pipelineCacheUUID@ is an array of
+    -- 'Vulkan.Core10.APIConstants.UUID_SIZE' @uint8_t@ values matching the
+    -- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceProperties'::@pipelineCacheUUID@
+    -- property of the implementation.
+    pipelineCacheUUID :: ByteString
+  , -- | @applicationNameOffset@ is zero, or an offset from the base address of
+    -- the crash dump header to a null-terminated UTF-8 string containing the
+    -- name of the application. If @applicationNameOffset@ is non-zero, this
+    -- string /must/ match the application name specified via
+    -- 'Vulkan.Core10.DeviceInitialization.ApplicationInfo'::@pApplicationName@
+    -- during instance creation.
+    applicationNameOffset :: Word32
+  , -- | @applicationVersion@ /must/ be zero or the value specified by
+    -- 'Vulkan.Core10.DeviceInitialization.ApplicationInfo'::@applicationVersion@
+    -- during instance creation.
+    applicationVersion :: Word32
+  , -- | @engineNameOffset@ is zero, or an offset from the base address of the
+    -- crash dump header to a null-terminated UTF-8 string containing the name
+    -- of the engine (if any) used to create the application. If
+    -- @engineNameOffset@ is non-zero, this string /must/ match the engine name
+    -- specified via
+    -- 'Vulkan.Core10.DeviceInitialization.ApplicationInfo'::@pEngineName@
+    -- during instance creation.
+    engineNameOffset :: Word32
+  , -- | @engineVersion@ /must/ be zero or the value specified by
+    -- 'Vulkan.Core10.DeviceInitialization.ApplicationInfo'::@engineVersion@
+    -- during instance creation.
+    engineVersion :: Word32
+  , -- | @apiVersion@ /must/ be zero or the value specified by
+    -- 'Vulkan.Core10.DeviceInitialization.ApplicationInfo'::@apiVersion@
+    -- during instance creation.
+    apiVersion :: Word32
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (DeviceFaultVendorBinaryHeaderVersionOneKHR)
+#endif
+deriving instance Show DeviceFaultVendorBinaryHeaderVersionOneKHR
+
+instance ToCStruct DeviceFaultVendorBinaryHeaderVersionOneKHR where
+  withCStruct x f = allocaBytes 56 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p DeviceFaultVendorBinaryHeaderVersionOneKHR{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr Word32)) (headerSize)
+    poke ((p `plusPtr` 4 :: Ptr DeviceFaultVendorBinaryHeaderVersionKHR)) (headerVersion)
+    poke ((p `plusPtr` 8 :: Ptr Word32)) (vendorID)
+    poke ((p `plusPtr` 12 :: Ptr Word32)) (deviceID)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (driverVersion)
+    pokeFixedLengthByteString ((p `plusPtr` 20 :: Ptr (FixedArray UUID_SIZE Word8))) (pipelineCacheUUID)
+    poke ((p `plusPtr` 36 :: Ptr Word32)) (applicationNameOffset)
+    poke ((p `plusPtr` 40 :: Ptr Word32)) (applicationVersion)
+    poke ((p `plusPtr` 44 :: Ptr Word32)) (engineNameOffset)
+    poke ((p `plusPtr` 48 :: Ptr Word32)) (engineVersion)
+    poke ((p `plusPtr` 52 :: Ptr Word32)) (apiVersion)
+    f
+  cStructSize = 56
+  cStructAlignment = 4
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 4 :: Ptr DeviceFaultVendorBinaryHeaderVersionKHR)) (zero)
+    poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 12 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
+    pokeFixedLengthByteString ((p `plusPtr` 20 :: Ptr (FixedArray UUID_SIZE Word8))) (mempty)
+    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)
+    f
+
+instance FromCStruct DeviceFaultVendorBinaryHeaderVersionOneKHR where
+  peekCStruct p = do
+    headerSize <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))
+    headerVersion <- peek @DeviceFaultVendorBinaryHeaderVersionKHR ((p `plusPtr` 4 :: Ptr DeviceFaultVendorBinaryHeaderVersionKHR))
+    vendorID <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))
+    deviceID <- peek @Word32 ((p `plusPtr` 12 :: Ptr Word32))
+    driverVersion <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    pipelineCacheUUID <- peekByteStringFromSizedVectorPtr ((p `plusPtr` 20 :: Ptr (FixedArray UUID_SIZE Word8)))
+    applicationNameOffset <- peek @Word32 ((p `plusPtr` 36 :: Ptr Word32))
+    applicationVersion <- peek @Word32 ((p `plusPtr` 40 :: Ptr Word32))
+    engineNameOffset <- peek @Word32 ((p `plusPtr` 44 :: Ptr Word32))
+    engineVersion <- peek @Word32 ((p `plusPtr` 48 :: Ptr Word32))
+    apiVersion <- peek @Word32 ((p `plusPtr` 52 :: Ptr Word32))
+    pure $ DeviceFaultVendorBinaryHeaderVersionOneKHR
+             headerSize
+             headerVersion
+             vendorID
+             deviceID
+             driverVersion
+             pipelineCacheUUID
+             applicationNameOffset
+             applicationVersion
+             engineNameOffset
+             engineVersion
+             apiVersion
+
+instance Storable DeviceFaultVendorBinaryHeaderVersionOneKHR where
+  sizeOf ~_ = 56
+  alignment ~_ = 4
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero DeviceFaultVendorBinaryHeaderVersionOneKHR where
+  zero = DeviceFaultVendorBinaryHeaderVersionOneKHR
+           zero
+           zero
+           zero
+           zero
+           zero
+           mempty
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkPhysicalDeviceFaultFeaturesKHR - Structure indicating support for
+-- device fault reporting
+--
+-- = Members
+--
+-- This structure describes the following features:
+--
+-- = Description
+--
+-- In exceptional circumstances, some implementations /may/ mask faults and
+-- attempt to recover from an error. In such circumstances, the device is
+-- not lost and further work can be submitted to the device. When such
+-- faults occur, the contents of all resources being written to at the time
+-- of the fault are undefined.
+--
+-- If the 'PhysicalDeviceFaultFeaturesKHR' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceFaultFeaturesKHR', it /must/ add an instance of the
+-- structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_device_fault VK_KHR_device_fault>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceFaultFeaturesKHR = PhysicalDeviceFaultFeaturesKHR
+  { -- | #features-deviceFault# @deviceFault@ indicates that the implementation
+    -- supports the reporting of device fault information.
+    deviceFault :: Bool
+  , -- | #features-deviceFaultVendorBinary# @deviceFaultVendorBinary@ indicates
+    -- that the implementation supports the generation of vendor-specific
+    -- binary crash dumps. These /may/ provide additional information when
+    -- imported into vendor-specific external tools.
+    deviceFaultVendorBinary :: Bool
+  , -- | #features-deviceFaultReportMasked# @deviceFaultReportMasked@ indicates
+    -- that the implementation supports masked faults in normal operation (ie.
+    -- automatically recovered by the driver internally without the application
+    -- receiving a 'Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST' error) which
+    -- /may/ be reported via this extension even if they did not result in a
+    -- 'Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST' condition being returned
+    -- to the application.
+    deviceFaultReportMasked :: Bool
+  , -- | #features-deviceFaultDeviceLostOnMasked# @deviceFaultDeviceLostOnMasked@
+    -- indicates that the implementation supports returning
+    -- 'Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST' for faults that would be
+    -- normally be masked.
+    deviceFaultDeviceLostOnMasked :: Bool
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceFaultFeaturesKHR)
+#endif
+deriving instance Show PhysicalDeviceFaultFeaturesKHR
+
+instance ToCStruct PhysicalDeviceFaultFeaturesKHR where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceFaultFeaturesKHR{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_FEATURES_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (deviceFault))
+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (deviceFaultVendorBinary))
+    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (deviceFaultReportMasked))
+    poke ((p `plusPtr` 28 :: Ptr Bool32)) (boolToBool32 (deviceFaultDeviceLostOnMasked))
+    f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_FEATURES_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))
+    f
+
+instance FromCStruct PhysicalDeviceFaultFeaturesKHR where
+  peekCStruct p = do
+    deviceFault <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    deviceFaultVendorBinary <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
+    deviceFaultReportMasked <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))
+    deviceFaultDeviceLostOnMasked <- peek @Bool32 ((p `plusPtr` 28 :: Ptr Bool32))
+    pure $ PhysicalDeviceFaultFeaturesKHR
+             (bool32ToBool deviceFault)
+             (bool32ToBool deviceFaultVendorBinary)
+             (bool32ToBool deviceFaultReportMasked)
+             (bool32ToBool deviceFaultDeviceLostOnMasked)
+
+instance Storable PhysicalDeviceFaultFeaturesKHR where
+  sizeOf ~_ = 32
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceFaultFeaturesKHR where
+  zero = PhysicalDeviceFaultFeaturesKHR
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkPhysicalDeviceFaultPropertiesKHR - Structure describing fault
+-- reporting properties for the physical device
+--
+-- = Members
+--
+-- The members of the 'PhysicalDeviceFaultPropertiesKHR' structure describe
+-- the following:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceFaultPropertiesKHR' 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.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_device_fault VK_KHR_device_fault>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceFaultPropertiesKHR = PhysicalDeviceFaultPropertiesKHR
+  { -- | #limits-maxDeviceFaultCount# @maxDeviceFaultCount@ is the maximum number
+    -- of instances of 'DeviceFaultInfoKHR' that will be retained by the
+    -- implementation. This /must/ be greater than or equal to 1. If the
+    -- application does not retrieve fault reports and overflow occurs, the
+    -- oldest fault reports will be overwritten by the most recent record.
+    maxDeviceFaultCount :: Word32 }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceFaultPropertiesKHR)
+#endif
+deriving instance Show PhysicalDeviceFaultPropertiesKHR
+
+instance ToCStruct PhysicalDeviceFaultPropertiesKHR where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceFaultPropertiesKHR{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_PROPERTIES_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (maxDeviceFaultCount)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_PROPERTIES_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct PhysicalDeviceFaultPropertiesKHR where
+  peekCStruct p = do
+    maxDeviceFaultCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    pure $ PhysicalDeviceFaultPropertiesKHR
+             maxDeviceFaultCount
+
+instance Storable PhysicalDeviceFaultPropertiesKHR where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceFaultPropertiesKHR where
+  zero = PhysicalDeviceFaultPropertiesKHR
+           zero
+
+
+type DeviceFaultFlagsKHR = DeviceFaultFlagBitsKHR
+
+-- | VkDeviceFaultFlagBitsKHR - Bits which may be set in a
+-- VkDeviceFaultFlagsKHR bitmask
+--
+-- = Description
+--
+-- -   'DEVICE_FAULT_FLAG_DEVICE_LOST_KHR' specifies that the fault has
+--     resulted in a device lost condition. No subsequent entries will be
+--     returned for this device.
+--
+-- -   'DEVICE_FAULT_FLAG_MEMORY_ADDRESS_KHR' specifies that the fault has
+--     associated memory access address information which is stored in the
+--     faultAddressInfo field (see 'DeviceFaultAddressInfoKHR').
+--
+-- -   'DEVICE_FAULT_FLAG_INSTRUCTION_ADDRESS_KHR' specifies that the fault
+--     has an associated instruction address which is stored in the
+--     instructionAddressInfo field (see 'DeviceFaultAddressInfoKHR').
+--
+-- -   'DEVICE_FAULT_FLAG_VENDOR_KHR' specifies that the fault has
+--     associated vendor information stored in the vendorInfo field (see
+--     'DeviceFaultVendorInfoKHR').
+--
+-- -   'DEVICE_FAULT_FLAG_WATCHDOG_TIMEOUT_KHR' specifies that the fault
+--     was the result of a GPU timeout. Further information /may/ be made
+--     available using other platform specific extensions via the pNext
+--     chain of the 'DeviceFaultInfoKHR' structure.
+--
+-- -   'DEVICE_FAULT_FLAG_OVERFLOW_KHR' specifies that prior faults have
+--     occurred, but information about them is no longer available. This
+--     typically indicates that faults are occurring more rapidly than the
+--     calling application is able to read them back.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_device_fault VK_KHR_device_fault>,
+-- 'DeviceFaultFlagsKHR'
+newtype DeviceFaultFlagBitsKHR = DeviceFaultFlagBitsKHR Flags
+  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
+
+-- No documentation found for Nested "VkDeviceFaultFlagBitsKHR" "VK_DEVICE_FAULT_FLAG_DEVICE_LOST_KHR"
+pattern DEVICE_FAULT_FLAG_DEVICE_LOST_KHR = DeviceFaultFlagBitsKHR 0x00000001
+
+-- No documentation found for Nested "VkDeviceFaultFlagBitsKHR" "VK_DEVICE_FAULT_FLAG_MEMORY_ADDRESS_KHR"
+pattern DEVICE_FAULT_FLAG_MEMORY_ADDRESS_KHR = DeviceFaultFlagBitsKHR 0x00000002
+
+-- No documentation found for Nested "VkDeviceFaultFlagBitsKHR" "VK_DEVICE_FAULT_FLAG_INSTRUCTION_ADDRESS_KHR"
+pattern DEVICE_FAULT_FLAG_INSTRUCTION_ADDRESS_KHR = DeviceFaultFlagBitsKHR 0x00000004
+
+-- No documentation found for Nested "VkDeviceFaultFlagBitsKHR" "VK_DEVICE_FAULT_FLAG_VENDOR_KHR"
+pattern DEVICE_FAULT_FLAG_VENDOR_KHR = DeviceFaultFlagBitsKHR 0x00000008
+
+-- No documentation found for Nested "VkDeviceFaultFlagBitsKHR" "VK_DEVICE_FAULT_FLAG_WATCHDOG_TIMEOUT_KHR"
+pattern DEVICE_FAULT_FLAG_WATCHDOG_TIMEOUT_KHR = DeviceFaultFlagBitsKHR 0x00000010
+
+-- No documentation found for Nested "VkDeviceFaultFlagBitsKHR" "VK_DEVICE_FAULT_FLAG_OVERFLOW_KHR"
+pattern DEVICE_FAULT_FLAG_OVERFLOW_KHR = DeviceFaultFlagBitsKHR 0x00000020
+
+conNameDeviceFaultFlagBitsKHR :: String
+conNameDeviceFaultFlagBitsKHR = "DeviceFaultFlagBitsKHR"
+
+enumPrefixDeviceFaultFlagBitsKHR :: String
+enumPrefixDeviceFaultFlagBitsKHR = "DEVICE_FAULT_FLAG_"
+
+showTableDeviceFaultFlagBitsKHR :: [(DeviceFaultFlagBitsKHR, String)]
+showTableDeviceFaultFlagBitsKHR =
+  [
+    ( DEVICE_FAULT_FLAG_DEVICE_LOST_KHR
+    , "DEVICE_LOST_KHR"
+    )
+  ,
+    ( DEVICE_FAULT_FLAG_MEMORY_ADDRESS_KHR
+    , "MEMORY_ADDRESS_KHR"
+    )
+  ,
+    ( DEVICE_FAULT_FLAG_INSTRUCTION_ADDRESS_KHR
+    , "INSTRUCTION_ADDRESS_KHR"
+    )
+  , (DEVICE_FAULT_FLAG_VENDOR_KHR, "VENDOR_KHR")
+  ,
+    ( DEVICE_FAULT_FLAG_WATCHDOG_TIMEOUT_KHR
+    , "WATCHDOG_TIMEOUT_KHR"
+    )
+  ,
+    ( DEVICE_FAULT_FLAG_OVERFLOW_KHR
+    , "OVERFLOW_KHR"
+    )
+  ]
+
+instance Show DeviceFaultFlagBitsKHR where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixDeviceFaultFlagBitsKHR
+      showTableDeviceFaultFlagBitsKHR
+      conNameDeviceFaultFlagBitsKHR
+      (\(DeviceFaultFlagBitsKHR x) -> x)
+      (\x -> showString "0x" . showHex x)
+
+instance Read DeviceFaultFlagBitsKHR where
+  readPrec =
+    enumReadPrec
+      enumPrefixDeviceFaultFlagBitsKHR
+      showTableDeviceFaultFlagBitsKHR
+      conNameDeviceFaultFlagBitsKHR
+      DeviceFaultFlagBitsKHR
+
+-- | VkDeviceFaultAddressTypeKHR - Page fault access types
+--
+-- = Description
+--
+-- -   'DEVICE_FAULT_ADDRESS_TYPE_NONE_KHR' specifies that
+--     'DeviceFaultAddressInfoKHR' does not describe a page fault, or an
+--     instruction address.
+--
+-- -   'DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_KHR' specifies that
+--     'DeviceFaultAddressInfoKHR' describes a page fault triggered by an
+--     invalid read operation.
+--
+-- -   'DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_KHR' specifies that
+--     'DeviceFaultAddressInfoKHR' describes a page fault triggered by an
+--     invalid write operation.
+--
+-- -   'DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_KHR' specifies that
+--     'DeviceFaultAddressInfoKHR' describes a page fault triggered by an
+--     attempt to execute non-executable memory.
+--
+-- -   'DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_KHR'
+--     specifies an instruction pointer value at the time the fault
+--     occurred. This may or may not be related to a fault.
+--
+-- -   'DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_KHR'
+--     specifies an instruction pointer value associated with an invalid
+--     instruction fault.
+--
+-- -   'DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_KHR' specifies
+--     an instruction pointer value associated with a fault.
+--
+-- The instruction pointer values recorded may not identify the specific
+-- instruction(s) that triggered the fault. The relationship between the
+-- instruction pointer reported and triggering instruction will be
+-- vendor-specific.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_fault VK_EXT_device_fault>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_device_fault VK_KHR_device_fault>,
+-- 'DeviceFaultAddressInfoKHR'
+newtype DeviceFaultAddressTypeKHR = DeviceFaultAddressTypeKHR Int32
+  deriving newtype (Eq, Ord, Storable, Zero)
+
+-- No documentation found for Nested "VkDeviceFaultAddressTypeKHR" "VK_DEVICE_FAULT_ADDRESS_TYPE_NONE_KHR"
+pattern DEVICE_FAULT_ADDRESS_TYPE_NONE_KHR = DeviceFaultAddressTypeKHR 0
+
+-- No documentation found for Nested "VkDeviceFaultAddressTypeKHR" "VK_DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_KHR"
+pattern DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_KHR = DeviceFaultAddressTypeKHR 1
+
+-- No documentation found for Nested "VkDeviceFaultAddressTypeKHR" "VK_DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_KHR"
+pattern DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_KHR = DeviceFaultAddressTypeKHR 2
+
+-- No documentation found for Nested "VkDeviceFaultAddressTypeKHR" "VK_DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_KHR"
+pattern DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_KHR = DeviceFaultAddressTypeKHR 3
+
+-- No documentation found for Nested "VkDeviceFaultAddressTypeKHR" "VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_KHR"
+pattern DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_KHR = DeviceFaultAddressTypeKHR 4
+
+-- No documentation found for Nested "VkDeviceFaultAddressTypeKHR" "VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_KHR"
+pattern DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_KHR = DeviceFaultAddressTypeKHR 5
+
+-- No documentation found for Nested "VkDeviceFaultAddressTypeKHR" "VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_KHR"
+pattern DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_KHR = DeviceFaultAddressTypeKHR 6
+
+{-# COMPLETE
+  DEVICE_FAULT_ADDRESS_TYPE_NONE_KHR
+  , DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_KHR
+  , DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_KHR
+  , DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_KHR
+  , DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_KHR
+  , DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_KHR
+  , DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_KHR ::
+    DeviceFaultAddressTypeKHR
+  #-}
+
+conNameDeviceFaultAddressTypeKHR :: String
+conNameDeviceFaultAddressTypeKHR = "DeviceFaultAddressTypeKHR"
+
+enumPrefixDeviceFaultAddressTypeKHR :: String
+enumPrefixDeviceFaultAddressTypeKHR = "DEVICE_FAULT_ADDRESS_TYPE_"
+
+showTableDeviceFaultAddressTypeKHR :: [(DeviceFaultAddressTypeKHR, String)]
+showTableDeviceFaultAddressTypeKHR =
+  [
+    ( DEVICE_FAULT_ADDRESS_TYPE_NONE_KHR
+    , "NONE_KHR"
+    )
+  ,
+    ( DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_KHR
+    , "READ_INVALID_KHR"
+    )
+  ,
+    ( DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_KHR
+    , "WRITE_INVALID_KHR"
+    )
+  ,
+    ( DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_KHR
+    , "EXECUTE_INVALID_KHR"
+    )
+  ,
+    ( DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_KHR
+    , "INSTRUCTION_POINTER_UNKNOWN_KHR"
+    )
+  ,
+    ( DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_KHR
+    , "INSTRUCTION_POINTER_INVALID_KHR"
+    )
+  ,
+    ( DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_KHR
+    , "INSTRUCTION_POINTER_FAULT_KHR"
+    )
+  ]
+
+instance Show DeviceFaultAddressTypeKHR where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixDeviceFaultAddressTypeKHR
+      showTableDeviceFaultAddressTypeKHR
+      conNameDeviceFaultAddressTypeKHR
+      (\(DeviceFaultAddressTypeKHR x) -> x)
+      (showsPrec 11)
+
+instance Read DeviceFaultAddressTypeKHR where
+  readPrec =
+    enumReadPrec
+      enumPrefixDeviceFaultAddressTypeKHR
+      showTableDeviceFaultAddressTypeKHR
+      conNameDeviceFaultAddressTypeKHR
+      DeviceFaultAddressTypeKHR
+
+-- | VkDeviceFaultVendorBinaryHeaderVersionKHR - Encode vendor binary crash
+-- dump version
+--
+-- = Description
+--
+-- -   'DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_ONE_KHR' specifies
+--     version one of the binary crash dump header.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_fault VK_EXT_device_fault>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_device_fault VK_KHR_device_fault>,
+-- 'DeviceFaultVendorBinaryHeaderVersionOneKHR',
+-- 'Vulkan.Extensions.VK_EXT_device_fault.getDeviceFaultInfoEXT'
+newtype DeviceFaultVendorBinaryHeaderVersionKHR = DeviceFaultVendorBinaryHeaderVersionKHR 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
+
+-- No documentation found for Nested "VkDeviceFaultVendorBinaryHeaderVersionKHR" "VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_ONE_KHR"
+pattern DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_ONE_KHR = DeviceFaultVendorBinaryHeaderVersionKHR 1
+
+{-# COMPLETE DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_ONE_KHR :: DeviceFaultVendorBinaryHeaderVersionKHR #-}
+
+conNameDeviceFaultVendorBinaryHeaderVersionKHR :: String
+conNameDeviceFaultVendorBinaryHeaderVersionKHR = "DeviceFaultVendorBinaryHeaderVersionKHR"
+
+enumPrefixDeviceFaultVendorBinaryHeaderVersionKHR :: String
+enumPrefixDeviceFaultVendorBinaryHeaderVersionKHR = "DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_ONE_KHR"
+
+showTableDeviceFaultVendorBinaryHeaderVersionKHR :: [(DeviceFaultVendorBinaryHeaderVersionKHR, String)]
+showTableDeviceFaultVendorBinaryHeaderVersionKHR =
+  [
+    ( DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_ONE_KHR
+    , ""
+    )
+  ]
+
+instance Show DeviceFaultVendorBinaryHeaderVersionKHR where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixDeviceFaultVendorBinaryHeaderVersionKHR
+      showTableDeviceFaultVendorBinaryHeaderVersionKHR
+      conNameDeviceFaultVendorBinaryHeaderVersionKHR
+      (\(DeviceFaultVendorBinaryHeaderVersionKHR x) -> x)
+      (showsPrec 11)
+
+instance Read DeviceFaultVendorBinaryHeaderVersionKHR where
+  readPrec =
+    enumReadPrec
+      enumPrefixDeviceFaultVendorBinaryHeaderVersionKHR
+      showTableDeviceFaultVendorBinaryHeaderVersionKHR
+      conNameDeviceFaultVendorBinaryHeaderVersionKHR
+      DeviceFaultVendorBinaryHeaderVersionKHR
+
+type KHR_DEVICE_FAULT_SPEC_VERSION = 1
+
+-- No documentation found for TopLevel "VK_KHR_DEVICE_FAULT_SPEC_VERSION"
+pattern KHR_DEVICE_FAULT_SPEC_VERSION :: forall a . Integral a => a
+pattern KHR_DEVICE_FAULT_SPEC_VERSION = 1
+
+
+type KHR_DEVICE_FAULT_EXTENSION_NAME = "VK_KHR_device_fault"
+
+-- No documentation found for TopLevel "VK_KHR_DEVICE_FAULT_EXTENSION_NAME"
+pattern KHR_DEVICE_FAULT_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern KHR_DEVICE_FAULT_EXTENSION_NAME = "VK_KHR_device_fault"
+
diff --git a/src/Vulkan/Extensions/VK_KHR_device_fault.hs-boot b/src/Vulkan/Extensions/VK_KHR_device_fault.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_KHR_device_fault.hs-boot
@@ -0,0 +1,265 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_KHR_device_fault - device extension
+--
+-- = VK_KHR_device_fault
+--
+-- [__Name String__]
+--     @VK_KHR_device_fault@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     574
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
+--
+-- [__Contact__]
+--
+--     -   Ralph Potter <<data:image/png;base64, GitLab>>r_potter
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_KHR_device_fault.adoc VK_KHR_device_fault>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2026-03-18
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Contributors__]
+--
+--     -   Ralph Potter, Samsung
+--
+--     -   Craig Graham, Samsung
+--
+--     -   Stuart Smith, AMD
+--
+--     -   Jan-Harald Fredriksen, ARM
+--
+--     -   Mark Bellamy, ARM
+--
+--     -   Andrew Ellem, Google
+--
+--     -   Alex Walters, IMG
+--
+--     -   Jeff Bolz, NVIDIA
+--
+--     -   Baldur Karlsson, Valve
+--
+--     -   Adrian Ravai, Samsung
+--
+--     -   Peter Gal, Samsung
+--
+--     -   Matthew Netsch, QUALCOMM
+--
+--     -   Tobias Hector, AMD
+--
+--     -   Alan Harrison, AMD
+--
+--     -   Vikram Tarikere, IMG
+--
+--     -   Jon Leech, Khronos
+--
+--     -   Samuel Pitoiset, Valve
+--
+-- == Description
+--
+-- Device loss can be triggered by a variety of issues, including invalid
+-- API usage, implementation errors, or hardware failures. This extension
+-- introduces two new commands:
+--
+-- -   'getDeviceFaultReportsKHR'
+--
+-- -   'getDeviceFaultDebugInfoKHR'
+--
+-- 'getDeviceFaultReportsKHR' allows developers to query for additional
+-- information on GPU faults which may have caused device loss, and to
+-- generate binary crash dumps, which may be loaded into external tools for
+-- further diagnosis. Additionally this command allows developers to query
+-- for additional information on GPU faults which were internally recovered
+-- by the implementation.
+--
+-- 'getDeviceFaultReportsKHR' differs from
+-- 'Vulkan.Extensions.VK_EXT_device_fault.getDeviceFaultInfoEXT' in that it
+-- can be called at any time, is able to report faults which do not result
+-- in 'Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST' and allows the caller
+-- to wait for such an error to occur.
+--
+-- 'getDeviceFaultDebugInfoKHR' provides a separate interface which /must/
+-- only be called when a device loss has occurred to provide extended GPU
+-- vendor specific crash post-mortem information.
+--
+-- == New Commands
+--
+-- -   'getDeviceFaultDebugInfoKHR'
+--
+-- -   'getDeviceFaultReportsKHR'
+--
+-- == New Structures
+--
+-- -   'DeviceFaultAddressInfoKHR'
+--
+-- -   'DeviceFaultDebugInfoKHR'
+--
+-- -   'DeviceFaultInfoKHR'
+--
+-- -   'DeviceFaultVendorBinaryHeaderVersionOneKHR'
+--
+-- -   'DeviceFaultVendorInfoKHR'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceFaultFeaturesKHR'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDeviceFaultPropertiesKHR'
+--
+-- == New Enums
+--
+-- -   'DeviceFaultAddressTypeKHR'
+--
+-- -   'DeviceFaultFlagBitsKHR'
+--
+-- -   'DeviceFaultVendorBinaryHeaderVersionKHR'
+--
+-- == New Bitmasks
+--
+-- -   'DeviceFaultFlagsKHR'
+--
+-- == New Enum Constants
+--
+-- -   'KHR_DEVICE_FAULT_EXTENSION_NAME'
+--
+-- -   'KHR_DEVICE_FAULT_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEVICE_FAULT_DEBUG_INFO_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEVICE_FAULT_INFO_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_FEATURES_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_PROPERTIES_KHR'
+--
+-- == Version History
+--
+-- -   Revision 0, 2024-03-01 (Ralph Potter)
+--
+--     -   Internal Revision
+--
+-- -   Revision 1, 2025-06-10 (Craig Graham)
+--
+--     -   Revised API to support async fault queries.
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_device_fault 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_device_fault  ( DeviceFaultAddressInfoKHR
+                                              , DeviceFaultDebugInfoKHR
+                                              , DeviceFaultInfoKHR
+                                              , DeviceFaultVendorBinaryHeaderVersionOneKHR
+                                              , DeviceFaultVendorInfoKHR
+                                              , PhysicalDeviceFaultFeaturesKHR
+                                              , PhysicalDeviceFaultPropertiesKHR
+                                              , DeviceFaultVendorBinaryHeaderVersionKHR
+                                              , DeviceFaultAddressTypeKHR
+                                              ) 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 DeviceFaultAddressInfoKHR
+
+instance ToCStruct DeviceFaultAddressInfoKHR
+instance Show DeviceFaultAddressInfoKHR
+
+instance FromCStruct DeviceFaultAddressInfoKHR
+
+
+type role DeviceFaultDebugInfoKHR nominal
+data DeviceFaultDebugInfoKHR (es :: [Type])
+
+instance ( Extendss DeviceFaultDebugInfoKHR es
+         , PokeChain es ) => ToCStruct (DeviceFaultDebugInfoKHR es)
+instance Show (Chain es) => Show (DeviceFaultDebugInfoKHR es)
+
+instance ( Extendss DeviceFaultDebugInfoKHR es
+         , PeekChain es ) => FromCStruct (DeviceFaultDebugInfoKHR es)
+
+
+data DeviceFaultInfoKHR
+
+instance ToCStruct DeviceFaultInfoKHR
+instance Show DeviceFaultInfoKHR
+
+instance FromCStruct DeviceFaultInfoKHR
+
+
+data DeviceFaultVendorBinaryHeaderVersionOneKHR
+
+instance ToCStruct DeviceFaultVendorBinaryHeaderVersionOneKHR
+instance Show DeviceFaultVendorBinaryHeaderVersionOneKHR
+
+instance FromCStruct DeviceFaultVendorBinaryHeaderVersionOneKHR
+
+
+data DeviceFaultVendorInfoKHR
+
+instance ToCStruct DeviceFaultVendorInfoKHR
+instance Show DeviceFaultVendorInfoKHR
+
+instance FromCStruct DeviceFaultVendorInfoKHR
+
+
+data PhysicalDeviceFaultFeaturesKHR
+
+instance ToCStruct PhysicalDeviceFaultFeaturesKHR
+instance Show PhysicalDeviceFaultFeaturesKHR
+
+instance FromCStruct PhysicalDeviceFaultFeaturesKHR
+
+
+data PhysicalDeviceFaultPropertiesKHR
+
+instance ToCStruct PhysicalDeviceFaultPropertiesKHR
+instance Show PhysicalDeviceFaultPropertiesKHR
+
+instance FromCStruct PhysicalDeviceFaultPropertiesKHR
+
+
+data DeviceFaultVendorBinaryHeaderVersionKHR
+
+
+data DeviceFaultAddressTypeKHR
+
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
@@ -71,7 +71,7 @@
 --
 -- == Promotion to Vulkan 1.1
 --
--- The following enums, types and commands are included as interactions
+-- The following enums, types, and commands are included as interactions
 -- with @VK_KHR_swapchain@:
 --
 -- -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR'
@@ -263,6 +263,8 @@
 -- -   Extending
 --     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits':
 --
+--     -   'PIPELINE_CREATE_DISPATCH_BASE_BIT_KHR'
+--
 --     -   'PIPELINE_CREATE_DISPATCH_BASE_KHR'
 --
 --     -   'PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR'
@@ -325,11 +327,11 @@
 --
 -- == New Built-in Variables
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-deviceindex DeviceIndex>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-deviceindex DeviceIndex>
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-DeviceGroup DeviceGroup>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-DeviceGroup DeviceGroup>
 --
 -- == Version History
 --
@@ -361,7 +363,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_device_group Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -376,6 +378,7 @@
                                               , pattern PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHR
                                               , pattern MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR
                                               , pattern PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR
+                                              , pattern PIPELINE_CREATE_DISPATCH_BASE_BIT_KHR
                                               , pattern PIPELINE_CREATE_DISPATCH_BASE_KHR
                                               , pattern DEPENDENCY_DEVICE_GROUP_BIT_KHR
                                               , getDeviceGroupPeerMemoryFeaturesKHR
@@ -443,8 +446,9 @@
 import Vulkan.Core11.Enums.PeerMemoryFeatureFlagBits (PeerMemoryFeatureFlagBits(PEER_MEMORY_FEATURE_GENERIC_DST_BIT))
 import Vulkan.Core11.Enums.PeerMemoryFeatureFlagBits (PeerMemoryFeatureFlags)
 import Vulkan.Core11.Enums.PeerMemoryFeatureFlagBits (PeerMemoryFeatureFlagBits(PEER_MEMORY_FEATURE_GENERIC_SRC_BIT))
-import Vulkan.Core11.Promoted_From_VK_KHR_device_group (pattern PIPELINE_CREATE_DISPATCH_BASE)
 import Vulkan.Core10.Enums.PipelineCreateFlagBits (PipelineCreateFlags)
+import Vulkan.Core10.Enums.PipelineCreateFlagBits (PipelineCreateFlagBits(PIPELINE_CREATE_DISPATCH_BASE_BIT))
+import Vulkan.Core10.Enums.PipelineCreateFlagBits (PipelineCreateFlags)
 import Vulkan.Core10.Enums.PipelineCreateFlagBits (PipelineCreateFlagBits(PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO))
@@ -517,8 +521,12 @@
 pattern PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR = PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT
 
 
+-- No documentation found for TopLevel "VK_PIPELINE_CREATE_DISPATCH_BASE_BIT_KHR"
+pattern PIPELINE_CREATE_DISPATCH_BASE_BIT_KHR = PIPELINE_CREATE_DISPATCH_BASE_BIT
+
+
 -- No documentation found for TopLevel "VK_PIPELINE_CREATE_DISPATCH_BASE_KHR"
-pattern PIPELINE_CREATE_DISPATCH_BASE_KHR = PIPELINE_CREATE_DISPATCH_BASE
+pattern PIPELINE_CREATE_DISPATCH_BASE_KHR = PIPELINE_CREATE_DISPATCH_BASE_BIT
 
 
 -- No documentation found for TopLevel "VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR"
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
@@ -76,7 +76,7 @@
 --
 -- -   'KHR_DEVICE_GROUP_CREATION_SPEC_VERSION'
 --
--- -   'Vulkan.Core10.APIConstants.MAX_DEVICE_GROUP_SIZE_KHR'
+-- -   'MAX_DEVICE_GROUP_SIZE_KHR'
 --
 -- -   Extending
 --     'Vulkan.Core10.Enums.MemoryHeapFlagBits.MemoryHeapFlagBits':
@@ -132,14 +132,14 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_device_group_creation Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
 module Vulkan.Extensions.VK_KHR_device_group_creation  ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHR
                                                        , pattern STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHR
-                                                       , pattern MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR
                                                        , pattern MAX_DEVICE_GROUP_SIZE_KHR
+                                                       , pattern MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR
                                                        , enumeratePhysicalDeviceGroupsKHR
                                                        , PhysicalDeviceGroupPropertiesKHR
                                                        , DeviceGroupDeviceCreateInfoKHR
@@ -166,12 +166,12 @@
 pattern STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHR = STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO
 
 
--- No documentation found for TopLevel "VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR"
-pattern MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR = MEMORY_HEAP_MULTI_INSTANCE_BIT
-
-
 -- No documentation found for TopLevel "VK_MAX_DEVICE_GROUP_SIZE_KHR"
 pattern MAX_DEVICE_GROUP_SIZE_KHR = MAX_DEVICE_GROUP_SIZE
+
+
+-- No documentation found for TopLevel "VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR"
+pattern MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR = MEMORY_HEAP_MULTI_INSTANCE_BIT
 
 
 -- No documentation found for TopLevel "vkEnumeratePhysicalDeviceGroupsKHR"
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
@@ -237,7 +237,7 @@
 -- __RESOLVED__: Defer. This could be a separate extension on top of the
 -- base WSI specs.
 --
--- 13) How many display objects should be enumerated for \"tiled\" display
+-- 13) How many display objects should be enumerated for “tiled” display
 -- devices? There are ongoing design discussions among lower-level display
 -- API authors regarding how to expose displays if they are one physical
 -- display device to an end user, but may internally be implemented as two
@@ -309,7 +309,7 @@
 --
 --     -   Reordered and grouped functions.
 --
---     -   Added functions to query count of display, mode and overlay.
+--     -   Added functions to query count of display, mode, and overlay.
 --
 --     -   Added native display handle, which may be needed on some
 --         platforms to create a native Window.
@@ -495,7 +495,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_display Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -685,16 +685,20 @@
 --
 -- [<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'
 --
+--     -   '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_DEVICE_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_display VK_KHR_display>,
@@ -769,16 +773,20 @@
 --
 -- [<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'
 --
+--     -   '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_DEVICE_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_display VK_KHR_display>,
@@ -862,16 +870,20 @@
 --
 -- [<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'
 --
+--     -   '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_DEVICE_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_display VK_KHR_display>,
@@ -960,16 +972,20 @@
 --
 -- [<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'
 --
+--     -   '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_DEVICE_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_display VK_KHR_display>,
@@ -1053,12 +1069,16 @@
 --
 -- [<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_INITIALIZATION_FAILED'
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_INITIALIZATION_FAILED'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_display VK_KHR_display>,
@@ -1078,7 +1098,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>).
+                        -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>).
                         ("allocator" ::: Maybe AllocationCallbacks)
                      -> io (DisplayModeKHR)
 createDisplayModeKHR physicalDevice
@@ -1143,10 +1163,14 @@
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_display VK_KHR_display>,
@@ -1221,10 +1245,14 @@
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_display VK_KHR_display>,
@@ -1244,7 +1272,7 @@
                                 (DisplaySurfaceCreateInfoKHR a)
                              -> -- | @pAllocator@ is the allocator used for host memory allocated for the
                                 -- surface object when there is no more specific allocator available (see
-                                -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>).
+                                -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>).
                                 ("allocator" ::: Maybe AllocationCallbacks)
                              -> io (SurfaceKHR)
 createDisplayPlaneSurfaceKHR instance'
@@ -1850,7 +1878,7 @@
 --     'Vulkan.Extensions.VK_NV_display_stereo.DisplaySurfaceStereoCreateInfoNV'
 --
 -- -   #VUID-VkDisplaySurfaceCreateInfoKHR-sType-unique# The @sType@ value
---     of each struct in the @pNext@ chain /must/ be unique
+--     of each structure in the @pNext@ chain /must/ be unique
 --
 -- -   #VUID-VkDisplaySurfaceCreateInfoKHR-flags-zerobitmask# @flags@
 --     /must/ be @0@
@@ -2069,6 +2097,26 @@
 
 -- | VkDisplayPlaneAlphaFlagBitsKHR - Alpha blending type
 --
+-- = Description
+--
+-- -   'DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR' specifies that the source image
+--     will be treated as opaque.
+--
+-- -   'DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR' specifies that a global alpha
+--     value /must/ be specified that will be applied to all pixels in the
+--     source image.
+--
+-- -   'DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR' specifies that the alpha
+--     value will be determined by the alpha component of the source
+--     image’s pixels. If the source format contains no alpha values, no
+--     blending will be applied. The source alpha values are not
+--     premultiplied into the source image’s other color components.
+--
+-- -   'DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR' is equivalent
+--     to 'DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR', except the source alpha
+--     values are assumed to be premultiplied into the source image’s other
+--     color components.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_display VK_KHR_display>,
@@ -2076,26 +2124,16 @@
 newtype DisplayPlaneAlphaFlagBitsKHR = DisplayPlaneAlphaFlagBitsKHR Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR' specifies that the source image
--- will be treated as opaque.
+-- No documentation found for Nested "VkDisplayPlaneAlphaFlagBitsKHR" "VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR"
 pattern DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR = DisplayPlaneAlphaFlagBitsKHR 0x00000001
 
--- | 'DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR' specifies that a global alpha value
--- /must/ be specified that will be applied to all pixels in the source
--- image.
+-- No documentation found for Nested "VkDisplayPlaneAlphaFlagBitsKHR" "VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR"
 pattern DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR = DisplayPlaneAlphaFlagBitsKHR 0x00000002
 
--- | 'DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR' specifies that the alpha value
--- will be determined by the alpha component of the source image’s pixels.
--- If the source format contains no alpha values, no blending will be
--- applied. The source alpha values are not premultiplied into the source
--- image’s other color components.
+-- No documentation found for Nested "VkDisplayPlaneAlphaFlagBitsKHR" "VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR"
 pattern DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR = DisplayPlaneAlphaFlagBitsKHR 0x00000004
 
--- | 'DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR' is equivalent to
--- 'DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR', except the source alpha values
--- are assumed to be premultiplied into the source image’s other color
--- components.
+-- No documentation found for Nested "VkDisplayPlaneAlphaFlagBitsKHR" "VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR"
 pattern DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR = DisplayPlaneAlphaFlagBitsKHR 0x00000008
 
 conNameDisplayPlaneAlphaFlagBitsKHR :: String
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
@@ -237,7 +237,7 @@
 -- __RESOLVED__: Defer. This could be a separate extension on top of the
 -- base WSI specs.
 --
--- 13) How many display objects should be enumerated for \"tiled\" display
+-- 13) How many display objects should be enumerated for “tiled” display
 -- devices? There are ongoing design discussions among lower-level display
 -- API authors regarding how to expose displays if they are one physical
 -- display device to an end user, but may internally be implemented as two
@@ -309,7 +309,7 @@
 --
 --     -   Reordered and grouped functions.
 --
---     -   Added functions to query count of display, mode and overlay.
+--     -   Added functions to query count of display, mode, and overlay.
 --
 --     -   Added native display handle, which may be needed on some
 --         platforms to create a native Window.
@@ -495,7 +495,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_display Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -126,6 +126,15 @@
 -- on when determining which internal formats and layouts to use for that
 -- image.
 --
+-- 5) Can 'DisplayPresentInfoKHR' be used without calling
+-- 'createSharedSwapchainsKHR'?
+--
+-- __RESOLVED__: Yes.
+--
+-- The two bits of functionality were meant to be independent. If the
+-- extension was created today, there would likely be two feature bits for
+-- 'DisplayPresentInfoKHR' and 'createSharedSwapchainsKHR'.
+--
 -- == Examples
 --
 -- The example code for the @VK_KHR_display@ and @VK_KHR_display_swapchain@
@@ -197,7 +206,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_display_swapchain Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -342,17 +351,12 @@
 --     @pSwapchains@ /must/ be a valid pointer to an array of
 --     @swapchainCount@ 'Vulkan.Extensions.Handles.SwapchainKHR' handles
 --
+-- -   #VUID-vkCreateSharedSwapchainsKHR-device-queuecount# The device
+--     /must/ have been created with at least @1@ queue
+--
 -- -   #VUID-vkCreateSharedSwapchainsKHR-swapchainCount-arraylength#
 --     @swapchainCount@ /must/ be greater than @0@
 --
--- == Host Synchronization
---
--- -   Host access to @pCreateInfos@[].surface /must/ be externally
---     synchronized
---
--- -   Host access to @pCreateInfos@[].oldSwapchain /must/ be externally
---     synchronized
---
 -- == Return Codes
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
@@ -361,16 +365,20 @@
 --
 -- [<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'
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_INCOMPATIBLE_DISPLAY_KHR'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_SURFACE_LOST_KHR'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_display_swapchain VK_KHR_display_swapchain>,
@@ -389,7 +397,7 @@
                           -> -- | @pAllocator@ is the allocator used for host memory allocated for the
                              -- swapchain objects when there is no more specific allocator available
                              -- (see
-                             -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>).
+                             -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>).
                              ("allocator" ::: Maybe AllocationCallbacks)
                           -> io (("swapchains" ::: Vector SwapchainKHR))
 createSharedSwapchainsKHR device createInfos allocator = liftIO . evalContT $ do
@@ -445,6 +453,12 @@
 --
 -- -   #VUID-VkDisplayPresentInfoKHR-sType-sType# @sType@ /must/ be
 --     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR'
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR'
 --
 -- = See Also
 --
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
@@ -126,6 +126,15 @@
 -- on when determining which internal formats and layouts to use for that
 -- image.
 --
+-- 5) Can 'DisplayPresentInfoKHR' be used without calling
+-- 'createSharedSwapchainsKHR'?
+--
+-- __RESOLVED__: Yes.
+--
+-- The two bits of functionality were meant to be independent. If the
+-- extension was created today, there would likely be two feature bits for
+-- 'DisplayPresentInfoKHR' and 'createSharedSwapchainsKHR'.
+--
 -- == Examples
 --
 -- The example code for the @VK_KHR_display@ and @VK_KHR_display_swapchain@
@@ -197,7 +206,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_display_swapchain Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -101,7 +101,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_draw_indirect_count Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -90,9 +90,9 @@
 --
 -- -   'KHR_DRIVER_PROPERTIES_SPEC_VERSION'
 --
--- -   'Vulkan.Core10.APIConstants.MAX_DRIVER_INFO_SIZE_KHR'
+-- -   'MAX_DRIVER_INFO_SIZE_KHR'
 --
--- -   'Vulkan.Core10.APIConstants.MAX_DRIVER_NAME_SIZE_KHR'
+-- -   'MAX_DRIVER_NAME_SIZE_KHR'
 --
 -- -   Extending 'Vulkan.Core12.Enums.DriverId.DriverId':
 --
@@ -137,11 +137,13 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_driver_properties Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
 module Vulkan.Extensions.VK_KHR_driver_properties  ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR
+                                                   , pattern MAX_DRIVER_NAME_SIZE_KHR
+                                                   , pattern MAX_DRIVER_INFO_SIZE_KHR
                                                    , pattern DRIVER_ID_AMD_PROPRIETARY_KHR
                                                    , pattern DRIVER_ID_AMD_OPEN_SOURCE_KHR
                                                    , pattern DRIVER_ID_MESA_RADV_KHR
@@ -154,8 +156,6 @@
                                                    , pattern DRIVER_ID_GOOGLE_SWIFTSHADER_KHR
                                                    , pattern DRIVER_ID_GGP_PROPRIETARY_KHR
                                                    , pattern DRIVER_ID_BROADCOM_PROPRIETARY_KHR
-                                                   , pattern MAX_DRIVER_NAME_SIZE_KHR
-                                                   , pattern MAX_DRIVER_INFO_SIZE_KHR
                                                    , DriverIdKHR
                                                    , ConformanceVersionKHR
                                                    , PhysicalDeviceDriverPropertiesKHR
@@ -188,6 +188,14 @@
 pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES
 
 
+-- No documentation found for TopLevel "VK_MAX_DRIVER_NAME_SIZE_KHR"
+pattern MAX_DRIVER_NAME_SIZE_KHR = MAX_DRIVER_NAME_SIZE
+
+
+-- No documentation found for TopLevel "VK_MAX_DRIVER_INFO_SIZE_KHR"
+pattern MAX_DRIVER_INFO_SIZE_KHR = MAX_DRIVER_INFO_SIZE
+
+
 -- No documentation found for TopLevel "VK_DRIVER_ID_AMD_PROPRIETARY_KHR"
 pattern DRIVER_ID_AMD_PROPRIETARY_KHR = DRIVER_ID_AMD_PROPRIETARY
 
@@ -234,14 +242,6 @@
 
 -- No documentation found for TopLevel "VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR"
 pattern DRIVER_ID_BROADCOM_PROPRIETARY_KHR = DRIVER_ID_BROADCOM_PROPRIETARY
-
-
--- No documentation found for TopLevel "VK_MAX_DRIVER_NAME_SIZE_KHR"
-pattern MAX_DRIVER_NAME_SIZE_KHR = MAX_DRIVER_NAME_SIZE
-
-
--- No documentation found for TopLevel "VK_MAX_DRIVER_INFO_SIZE_KHR"
-pattern MAX_DRIVER_INFO_SIZE_KHR = MAX_DRIVER_INFO_SIZE
 
 
 -- No documentation found for TopLevel "VkDriverIdKHR"
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
@@ -107,7 +107,8 @@
 --
 --     -   'CommandBufferInheritanceRenderingInfoKHR'
 --
--- -   Extending 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo':
+-- -   Extending
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo':
 --
 --     -   'PipelineRenderingCreateInfoKHR'
 --
@@ -135,6 +136,14 @@
 --
 --     -   'ATTACHMENT_STORE_OP_NONE_KHR'
 --
+-- -   Extending 'Vulkan.Core13.Enums.RenderingFlagBits.RenderingFlagBits':
+--
+--     -   'RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT_KHR'
+--
+--     -   'RENDERING_RESUMING_BIT_KHR'
+--
+--     -   'RENDERING_SUSPENDING_BIT_KHR'
+--
 -- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
 --
 --     -   'STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO_KHR'
@@ -168,7 +177,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_dynamic_rendering Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -178,6 +187,9 @@
                                                    , 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 RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT_KHR
+                                                   , pattern RENDERING_SUSPENDING_BIT_KHR
+                                                   , pattern RENDERING_RESUMING_BIT_KHR
                                                    , cmdBeginRenderingKHR
                                                    , cmdEndRenderingKHR
                                                    , RenderingFlagsKHR
@@ -204,6 +216,12 @@
 import Vulkan.Core13.Enums.RenderingFlagBits (RenderingFlags)
 import Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering (RenderingInfo)
 import Vulkan.Core10.Enums.AttachmentStoreOp (AttachmentStoreOp(ATTACHMENT_STORE_OP_NONE))
+import Vulkan.Core13.Enums.RenderingFlagBits (RenderingFlags)
+import Vulkan.Core13.Enums.RenderingFlagBits (RenderingFlagBits(RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT))
+import Vulkan.Core13.Enums.RenderingFlagBits (RenderingFlags)
+import Vulkan.Core13.Enums.RenderingFlagBits (RenderingFlagBits(RENDERING_RESUMING_BIT))
+import Vulkan.Core13.Enums.RenderingFlagBits (RenderingFlags)
+import Vulkan.Core13.Enums.RenderingFlagBits (RenderingFlagBits(RENDERING_SUSPENDING_BIT))
 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))
@@ -231,6 +249,18 @@
 
 -- 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_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
 
 
 -- No documentation found for TopLevel "vkCmdBeginRenderingKHR"
diff --git a/src/Vulkan/Extensions/VK_KHR_dynamic_rendering_local_read.hs b/src/Vulkan/Extensions/VK_KHR_dynamic_rendering_local_read.hs
--- a/src/Vulkan/Extensions/VK_KHR_dynamic_rendering_local_read.hs
+++ b/src/Vulkan/Extensions/VK_KHR_dynamic_rendering_local_read.hs
@@ -25,6 +25,11 @@
 --     or
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3 Vulkan Version 1.3>
 --
+-- [__Deprecation State__]
+--
+--     -   /Promoted/ to
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.4-promotions Vulkan 1.4>
+--
 -- [__Contact__]
 --
 --     -   Tobias Hector
@@ -99,7 +104,8 @@
 --
 -- == New Structures
 --
--- -   Extending 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo',
+-- -   Extending
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo',
 --     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo':
 --
 --     -   'RenderingAttachmentLocationInfoKHR'
@@ -120,16 +126,34 @@
 --
 -- -   Extending 'Vulkan.Core10.Enums.ImageLayout.ImageLayout':
 --
---     -   'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_RENDERING_LOCAL_READ_KHR'
+--     -   'IMAGE_LAYOUT_RENDERING_LOCAL_READ_KHR'
 --
 -- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES_KHR'
+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES_KHR'
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDERING_ATTACHMENT_LOCATION_INFO_KHR'
+--     -   'STRUCTURE_TYPE_RENDERING_ATTACHMENT_LOCATION_INFO_KHR'
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDERING_INPUT_ATTACHMENT_INDEX_INFO_KHR'
+--     -   'STRUCTURE_TYPE_RENDERING_INPUT_ATTACHMENT_INDEX_INFO_KHR'
 --
+-- == Promotion to Vulkan 1.4
+--
+-- Functionality in this extension is included in core Vulkan 1.4, with the
+-- KHR suffix omitted. However, Vulkan 1.4 implementations only have to
+-- support local read for storage resources and single sampled color
+-- attachments.
+--
+-- Support for reading depth\/stencil attachments and multi-sampled
+-- attachments are respectively gated behind the new boolean
+-- @dynamicRenderingLocalReadDepthStencilAttachments@ and
+-- @dynamicRenderingLocalReadMultisampledAttachments@ properties, as
+-- described in the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#versions-1.4 Version 1.4>
+-- appendix.
+--
+-- The original type, enum, and command names are still available as
+-- aliases of the core functionality.
+--
 -- == Version History
 --
 -- -   Revision 1, 2023-11-03 (Tobias Hector)
@@ -143,704 +167,69 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_dynamic_rendering_local_read Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_dynamic_rendering_local_read 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_local_read  ( cmdSetRenderingAttachmentLocationsKHR
+module Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read  ( pattern IMAGE_LAYOUT_RENDERING_LOCAL_READ_KHR
+                                                              , pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES_KHR
+                                                              , pattern STRUCTURE_TYPE_RENDERING_ATTACHMENT_LOCATION_INFO_KHR
+                                                              , pattern STRUCTURE_TYPE_RENDERING_INPUT_ATTACHMENT_INDEX_INFO_KHR
+                                                              , cmdSetRenderingAttachmentLocationsKHR
                                                               , cmdSetRenderingInputAttachmentIndicesKHR
-                                                              , PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR(..)
-                                                              , RenderingAttachmentLocationInfoKHR(..)
-                                                              , RenderingInputAttachmentIndexInfoKHR(..)
+                                                              , PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR
+                                                              , RenderingAttachmentLocationInfoKHR
+                                                              , RenderingInputAttachmentIndexInfoKHR
                                                               , KHR_DYNAMIC_RENDERING_LOCAL_READ_SPEC_VERSION
                                                               , pattern KHR_DYNAMIC_RENDERING_LOCAL_READ_SPEC_VERSION
                                                               , KHR_DYNAMIC_RENDERING_LOCAL_READ_EXTENSION_NAME
                                                               , pattern KHR_DYNAMIC_RENDERING_LOCAL_READ_EXTENSION_NAME
                                                               ) where
 
-import Vulkan.Internal.Utils (traceAroundEvent)
-import Control.Monad (unless)
-import Control.Monad.IO.Class (liftIO)
-import Foreign.Marshal.Alloc (allocaBytes)
-import Foreign.Marshal.Utils (maybePeek)
-import Foreign.Marshal.Utils (with)
-import GHC.IO (throwIO)
-import GHC.Ptr (nullFunPtr)
-import Foreign.Ptr (nullPtr)
-import Foreign.Ptr (plusPtr)
-import Control.Monad.Trans.Class (lift)
-import Control.Monad.Trans.Cont (evalContT)
-import Data.Vector (generateM)
-import qualified Data.Vector (imapM_)
-import qualified Data.Vector (length)
-import 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.CStruct.Utils (advancePtrBytes)
-import Vulkan.Core10.FundamentalTypes (bool32ToBool)
-import Vulkan.Core10.FundamentalTypes (boolToBool32)
-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(pVkCmdSetRenderingAttachmentLocationsKHR))
-import Vulkan.Dynamic (DeviceCmds(pVkCmdSetRenderingInputAttachmentIndicesKHR))
-import Vulkan.Core10.Enums.StructureType (StructureType)
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES_KHR))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RENDERING_ATTACHMENT_LOCATION_INFO_KHR))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RENDERING_INPUT_ATTACHMENT_INDEX_INFO_KHR))
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdSetRenderingAttachmentLocationsKHR
-  :: FunPtr (Ptr CommandBuffer_T -> Ptr RenderingAttachmentLocationInfoKHR -> IO ()) -> Ptr CommandBuffer_T -> Ptr RenderingAttachmentLocationInfoKHR -> IO ()
+import Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read (cmdSetRenderingAttachmentLocations)
+import Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read (cmdSetRenderingInputAttachmentIndices)
+import Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read (PhysicalDeviceDynamicRenderingLocalReadFeatures)
+import Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read (RenderingAttachmentLocationInfo)
+import Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read (RenderingInputAttachmentIndexInfo)
+import Vulkan.Core10.Enums.ImageLayout (ImageLayout(IMAGE_LAYOUT_RENDERING_LOCAL_READ))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RENDERING_ATTACHMENT_LOCATION_INFO))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RENDERING_INPUT_ATTACHMENT_INDEX_INFO))
+-- No documentation found for TopLevel "VK_IMAGE_LAYOUT_RENDERING_LOCAL_READ_KHR"
+pattern IMAGE_LAYOUT_RENDERING_LOCAL_READ_KHR = IMAGE_LAYOUT_RENDERING_LOCAL_READ
 
--- | vkCmdSetRenderingAttachmentLocationsKHR - Set color attachment location
--- mappings for a command buffer
---
--- = Description
---
--- This command sets the attachment location mappings for subsequent
--- drawing commands, and /must/ match the mappings provided to the bound
--- pipeline, if one is bound, which /can/ be set by chaining
--- 'RenderingAttachmentLocationInfoKHR' to
--- 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'.
---
--- Until this command is called, mappings in the command buffer state are
--- treated as each color attachment specified in
--- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
--- having a location equal to its index in
--- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@.
--- This state is reset whenever
--- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
--- is called.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdSetRenderingAttachmentLocationsKHR-dynamicRenderingLocalRead-09509#
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-dynamicRenderingLocalRead dynamicRenderingLocalRead>
---     /must/ be enabled
---
--- -   #VUID-vkCmdSetRenderingAttachmentLocationsKHR-pLocationInfo-09510#
---     @pLocationInfo->colorAttachmentCount@ /must/ be equal to the value
---     of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
---     used to begin the current render pass instance
---
--- -   #VUID-vkCmdSetRenderingAttachmentLocationsKHR-commandBuffer-09511#
---     The current render pass instance /must/ have been started or resumed
---     by
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     in this @commandBuffer@
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdSetRenderingAttachmentLocationsKHR-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdSetRenderingAttachmentLocationsKHR-pLocationInfo-parameter#
---     @pLocationInfo@ /must/ be a valid pointer to a valid
---     'RenderingAttachmentLocationInfoKHR' structure
---
--- -   #VUID-vkCmdSetRenderingAttachmentLocationsKHR-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-vkCmdSetRenderingAttachmentLocationsKHR-commandBuffer-cmdpool#
---     The 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
---
--- -   #VUID-vkCmdSetRenderingAttachmentLocationsKHR-renderpass# This
---     command /must/ only be called inside of a render pass instance
---
--- -   #VUID-vkCmdSetRenderingAttachmentLocationsKHR-videocoding# This
---     command /must/ only be called outside of a video coding scope
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
--- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Inside                                                                                                                 | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering_local_read VK_KHR_dynamic_rendering_local_read>,
--- 'Vulkan.Core10.Handles.CommandBuffer',
--- 'RenderingAttachmentLocationInfoKHR'
-cmdSetRenderingAttachmentLocationsKHR :: forall io
-                                       . (MonadIO io)
-                                      => -- | @commandBuffer@ is the command buffer into which the command will be
-                                         -- recorded.
-                                         CommandBuffer
-                                      -> -- | @pLocationInfo@ is a 'RenderingAttachmentLocationInfoKHR' structure
-                                         -- indicating the new mappings.
-                                         RenderingAttachmentLocationInfoKHR
-                                      -> io ()
-cmdSetRenderingAttachmentLocationsKHR commandBuffer
-                                        locationInfo = liftIO . evalContT $ do
-  let vkCmdSetRenderingAttachmentLocationsKHRPtr = pVkCmdSetRenderingAttachmentLocationsKHR (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCmdSetRenderingAttachmentLocationsKHRPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetRenderingAttachmentLocationsKHR is null" Nothing Nothing
-  let vkCmdSetRenderingAttachmentLocationsKHR' = mkVkCmdSetRenderingAttachmentLocationsKHR vkCmdSetRenderingAttachmentLocationsKHRPtr
-  pLocationInfo <- ContT $ withCStruct (locationInfo)
-  lift $ traceAroundEvent "vkCmdSetRenderingAttachmentLocationsKHR" (vkCmdSetRenderingAttachmentLocationsKHR'
-                                                                       (commandBufferHandle (commandBuffer))
-                                                                       pLocationInfo)
-  pure $ ()
 
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES
 
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdSetRenderingInputAttachmentIndicesKHR
-  :: FunPtr (Ptr CommandBuffer_T -> Ptr RenderingInputAttachmentIndexInfoKHR -> IO ()) -> Ptr CommandBuffer_T -> Ptr RenderingInputAttachmentIndexInfoKHR -> IO ()
 
--- | vkCmdSetRenderingInputAttachmentIndicesKHR - Set input attachment index
--- mappings for a command buffer
---
--- = Description
---
--- This command sets the input attachment index mappings for subsequent
--- drawing commands, and /must/ match the mappings provided to the bound
--- pipeline, if one is bound, which /can/ be set by chaining
--- 'RenderingInputAttachmentIndexInfoKHR' to
--- 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'.
---
--- Until this command is called, mappings in the command buffer state are
--- treated as each color attachment specified in
--- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
--- mapping to subpass inputs with a @InputAttachmentIndex@ equal to its
--- index in
--- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@,
--- and depth\/stencil attachments mapping to input attachments without
--- these decorations. This state is reset whenever
--- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
--- is called.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdSetRenderingInputAttachmentIndicesKHR-dynamicRenderingLocalRead-09516#
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-dynamicRenderingLocalRead dynamicRenderingLocalRead>
---     /must/ be enabled
---
--- -   #VUID-vkCmdSetRenderingInputAttachmentIndicesKHR-pInputAttachmentIndexInfo-09517#
---     @pInputAttachmentIndexInfo->colorAttachmentCount@ /must/ be equal to
---     the value of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
---     used to begin the current render pass instance
---
--- -   #VUID-vkCmdSetRenderingInputAttachmentIndicesKHR-commandBuffer-09518#
---     The current render pass instance /must/ have been started or resumed
---     by
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     in this @commandBuffer@
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdSetRenderingInputAttachmentIndicesKHR-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdSetRenderingInputAttachmentIndicesKHR-pInputAttachmentIndexInfo-parameter#
---     @pInputAttachmentIndexInfo@ /must/ be a valid pointer to a valid
---     'RenderingInputAttachmentIndexInfoKHR' structure
---
--- -   #VUID-vkCmdSetRenderingInputAttachmentIndicesKHR-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-vkCmdSetRenderingInputAttachmentIndicesKHR-commandBuffer-cmdpool#
---     The 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
---
--- -   #VUID-vkCmdSetRenderingInputAttachmentIndicesKHR-renderpass# This
---     command /must/ only be called inside of a render pass instance
---
--- -   #VUID-vkCmdSetRenderingInputAttachmentIndicesKHR-videocoding# This
---     command /must/ only be called outside of a video coding scope
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
--- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Inside                                                                                                                 | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering_local_read VK_KHR_dynamic_rendering_local_read>,
--- 'Vulkan.Core10.Handles.CommandBuffer',
--- 'RenderingInputAttachmentIndexInfoKHR'
-cmdSetRenderingInputAttachmentIndicesKHR :: forall io
-                                          . (MonadIO io)
-                                         => -- | @commandBuffer@ is the command buffer into which the command will be
-                                            -- recorded.
-                                            CommandBuffer
-                                         -> -- | @pInputAttachmentIndexInfo@ is a 'RenderingInputAttachmentIndexInfoKHR'
-                                            -- structure indicating the new mappings.
-                                            RenderingInputAttachmentIndexInfoKHR
-                                         -> io ()
-cmdSetRenderingInputAttachmentIndicesKHR commandBuffer
-                                           inputAttachmentIndexInfo = liftIO . evalContT $ do
-  let vkCmdSetRenderingInputAttachmentIndicesKHRPtr = pVkCmdSetRenderingInputAttachmentIndicesKHR (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCmdSetRenderingInputAttachmentIndicesKHRPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetRenderingInputAttachmentIndicesKHR is null" Nothing Nothing
-  let vkCmdSetRenderingInputAttachmentIndicesKHR' = mkVkCmdSetRenderingInputAttachmentIndicesKHR vkCmdSetRenderingInputAttachmentIndicesKHRPtr
-  pInputAttachmentIndexInfo <- ContT $ withCStruct (inputAttachmentIndexInfo)
-  lift $ traceAroundEvent "vkCmdSetRenderingInputAttachmentIndicesKHR" (vkCmdSetRenderingInputAttachmentIndicesKHR'
-                                                                          (commandBufferHandle (commandBuffer))
-                                                                          pInputAttachmentIndexInfo)
-  pure $ ()
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_LOCATION_INFO_KHR"
+pattern STRUCTURE_TYPE_RENDERING_ATTACHMENT_LOCATION_INFO_KHR = STRUCTURE_TYPE_RENDERING_ATTACHMENT_LOCATION_INFO
 
 
--- | VkPhysicalDeviceDynamicRenderingLocalReadFeaturesKHR - Structure
--- indicating support for local reads in dynamic render pass instances
---
--- = Members
---
--- This structure describes the following feature:
---
--- = Description
---
--- If the 'PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR' 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. 'PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR' /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_local_read VK_KHR_dynamic_rendering_local_read>,
--- 'Vulkan.Core10.FundamentalTypes.Bool32',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR = PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR
-  { -- | #features-dynamicRenderingLocalRead# @dynamicRenderingLocalRead@
-    -- specifies that the implementation supports local reads inside dynamic
-    -- render pass instances using the
-    -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
-    -- command.
-    dynamicRenderingLocalRead :: Bool }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR)
-#endif
-deriving instance Show PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_RENDERING_INPUT_ATTACHMENT_INDEX_INFO_KHR"
+pattern STRUCTURE_TYPE_RENDERING_INPUT_ATTACHMENT_INDEX_INFO_KHR = STRUCTURE_TYPE_RENDERING_INPUT_ATTACHMENT_INDEX_INFO
 
-instance ToCStruct PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR where
-  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (dynamicRenderingLocalRead))
-    f
-  cStructSize = 24
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
-    f
 
-instance FromCStruct PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR where
-  peekCStruct p = do
-    dynamicRenderingLocalRead <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
-    pure $ PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR
-             (bool32ToBool dynamicRenderingLocalRead)
+-- No documentation found for TopLevel "vkCmdSetRenderingAttachmentLocationsKHR"
+cmdSetRenderingAttachmentLocationsKHR = cmdSetRenderingAttachmentLocations
 
-instance Storable PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR where
-  sizeOf ~_ = 24
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
 
-instance Zero PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR where
-  zero = PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR
-           zero
+-- No documentation found for TopLevel "vkCmdSetRenderingInputAttachmentIndicesKHR"
+cmdSetRenderingInputAttachmentIndicesKHR = cmdSetRenderingInputAttachmentIndices
 
 
--- | VkRenderingAttachmentLocationInfoKHR - Structure specifying attachment
--- locations
---
--- = Description
---
--- This structure allows applications to remap the locations of color
--- attachments to different fragment shader output locations.
---
--- Each element of @pColorAttachmentLocations@ set to
--- 'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' will be inaccessible to
--- this pipeline as a color attachment; no location will map to it. Each
--- element of @pColorAttachmentLocations@ set to any other value will map
--- the specified location value to the color attachment specified in the
--- render pass at the corresponding index in the
--- @pColorAttachmentLocations@ array. Any writes to a fragment output
--- location that is not mapped to an attachment /must/ be discarded.
---
--- If @pColorAttachmentLocations@ is @NULL@, it is equivalent to setting
--- each element to its index within the array.
---
--- This structure /can/ be included in the @pNext@ chain of a
--- 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo' structure to set
--- this state for a pipeline. If this structure is not included in the
--- @pNext@ chain of 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo', it
--- is equivalent to specifying this structure with the following
--- properties:
---
--- -   @colorAttachmentCount@ set to
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@colorAttachmentCount@.
---
--- -   @pColorAttachmentLocations@ set to @NULL@.
---
--- This structure /can/ be included in the @pNext@ chain of a
--- 'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo' structure to
--- specify inherited state from the primary command buffer. 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, members of
--- this structure are ignored. If this structure is not included in the
--- @pNext@ chain of
--- 'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo', it is
--- equivalent to specifying this structure with the following properties:
---
--- -   @colorAttachmentCount@ set to
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.CommandBufferInheritanceRenderingInfo'::@colorAttachmentCount@.
---
--- -   @pColorAttachmentLocations@ set to @NULL@.
---
--- == Valid Usage
---
--- -   #VUID-VkRenderingAttachmentLocationInfoKHR-dynamicRenderingLocalRead-09512#
---     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-dynamicRenderingLocalRead dynamicRenderingLocalRead>
---     feature is not enabled, and @pColorAttachmentLocations@ is not
---     @NULL@, each element /must/ be the value of its index within the
---     array
---
--- -   #VUID-VkRenderingAttachmentLocationInfoKHR-pColorAttachmentLocations-09513#
---     Elements of @pColorAttachmentLocations@ that are not
---     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' /must/ each be unique
---
--- -   #VUID-VkRenderingAttachmentLocationInfoKHR-colorAttachmentCount-09514#
---     @colorAttachmentCount@ /must/ be less than or equal to
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxColorAttachments maxColorAttachments>
---
--- -   #VUID-VkRenderingAttachmentLocationInfoKHR-pColorAttachmentLocations-09515#
---     Each element of @pColorAttachmentLocations@ /must/ be less than
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxColorAttachments maxColorAttachments>
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkRenderingAttachmentLocationInfoKHR-sType-sType# @sType@
---     /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDERING_ATTACHMENT_LOCATION_INFO_KHR'
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering_local_read VK_KHR_dynamic_rendering_local_read>,
--- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'cmdSetRenderingAttachmentLocationsKHR'
-data RenderingAttachmentLocationInfoKHR = RenderingAttachmentLocationInfoKHR
-  { -- | @pColorAttachmentLocations@ is a pointer to an array of
-    -- @colorAttachmentCount@ @uint32_t@ values defining remapped locations for
-    -- color attachments.
-    colorAttachmentLocations :: Vector Word32 }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (RenderingAttachmentLocationInfoKHR)
-#endif
-deriving instance Show RenderingAttachmentLocationInfoKHR
+-- No documentation found for TopLevel "VkPhysicalDeviceDynamicRenderingLocalReadFeaturesKHR"
+type PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR = PhysicalDeviceDynamicRenderingLocalReadFeatures
 
-instance ToCStruct RenderingAttachmentLocationInfoKHR where
-  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p RenderingAttachmentLocationInfoKHR{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RENDERING_ATTACHMENT_LOCATION_INFO_KHR)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (colorAttachmentLocations)) :: Word32))
-    pPColorAttachmentLocations' <- ContT $ allocaBytes @Word32 ((Data.Vector.length (colorAttachmentLocations)) * 4)
-    lift $ Data.Vector.imapM_ (\i e -> poke (pPColorAttachmentLocations' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (colorAttachmentLocations)
-    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Word32))) (pPColorAttachmentLocations')
-    lift $ f
-  cStructSize = 32
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RENDERING_ATTACHMENT_LOCATION_INFO_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    f
 
-instance FromCStruct RenderingAttachmentLocationInfoKHR where
-  peekCStruct p = do
-    colorAttachmentCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
-    pColorAttachmentLocations <- peek @(Ptr Word32) ((p `plusPtr` 24 :: Ptr (Ptr Word32)))
-    pColorAttachmentLocations' <- generateM (fromIntegral colorAttachmentCount) (\i -> peek @Word32 ((pColorAttachmentLocations `advancePtrBytes` (4 * (i)) :: Ptr Word32)))
-    pure $ RenderingAttachmentLocationInfoKHR
-             pColorAttachmentLocations'
-
-instance Zero RenderingAttachmentLocationInfoKHR where
-  zero = RenderingAttachmentLocationInfoKHR
-           mempty
+-- No documentation found for TopLevel "VkRenderingAttachmentLocationInfoKHR"
+type RenderingAttachmentLocationInfoKHR = RenderingAttachmentLocationInfo
 
 
--- | VkRenderingInputAttachmentIndexInfoKHR - Structure specifying input
--- attachment indices
---
--- = Description
---
--- This structure allows applications to remap attachments to different
--- input attachment indices.
---
--- Each element of @pColorAttachmentInputIndices@ set to a value of
--- 'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' indicates that the
--- corresponding attachment will not be used as an input attachment in this
--- pipeline. Any other value in each of those elements will map the
--- corresponding attachment to a @InputAttachmentIndex@ value defined in
--- shader code.
---
--- If @pColorAttachmentInputIndices@ is @NULL@, it is equivalent to setting
--- each element to its index within the array.
---
--- If @pDepthInputAttachmentIndex@ or @pStencilInputAttachmentIndex@ are
--- set to @NULL@, they map to input attachments without a
--- @InputAttachmentIndex@ decoration. If they point to a value of
--- 'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED', it indicates that the
--- corresponding attachment will not be used as an input attachment in this
--- pipeline. If they point to any other value it maps the corresponding
--- attachment to a @InputAttachmentIndex@ value defined in shader code.
---
--- This structure /can/ be included in the @pNext@ chain of a
--- 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo' structure to set
--- this state for a pipeline. If this structure is not included in the
--- @pNext@ chain of 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo', it
--- is equivalent to specifying this structure with the following
--- properties:
---
--- -   @colorAttachmentCount@ set to
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@colorAttachmentCount@.
---
--- -   @pColorAttachmentInputIndices@ set to @NULL@.
---
--- -   @pDepthInputAttachmentIndex@ set to @NULL@.
---
--- -   @pStencilInputAttachmentIndex@ set to @NULL@.
---
--- This structure /can/ be included in the @pNext@ chain of a
--- 'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo' structure to
--- specify inherited state from the primary command buffer. If this
--- structure is not included in the @pNext@ chain of
--- 'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo', it is
--- equivalent to specifying this structure with the following properties:
---
--- -   @colorAttachmentCount@ set to
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.CommandBufferInheritanceRenderingInfo'::@colorAttachmentCount@.
---
--- -   @pColorAttachmentInputIndices@ set to @NULL@.
---
--- -   @pDepthInputAttachmentIndex@ set to @NULL@.
---
--- -   @pStencilInputAttachmentIndex@ set to @NULL@.
---
--- == Valid Usage
---
--- -   #VUID-VkRenderingInputAttachmentIndexInfoKHR-dynamicRenderingLocalRead-09519#
---     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-dynamicRenderingLocalRead dynamicRenderingLocalRead>
---     feature is not enabled, and @pColorAttachmentInputIndices@ is not
---     @NULL@, each element /must/ be
---     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED'
---
--- -   #VUID-VkRenderingInputAttachmentIndexInfoKHR-dynamicRenderingLocalRead-09520#
---     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-dynamicRenderingLocalRead dynamicRenderingLocalRead>
---     feature is not enabled, @pDepthInputAttachmentIndex@ /must/ be a
---     valid pointer to a value of
---     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED'
---
--- -   #VUID-VkRenderingInputAttachmentIndexInfoKHR-dynamicRenderingLocalRead-09521#
---     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-dynamicRenderingLocalRead dynamicRenderingLocalRead>
---     feature is not enabled, @pStencilInputAttachmentIndex@ /must/ be a
---     valid pointer to a value of
---     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED'
---
--- -   #VUID-VkRenderingInputAttachmentIndexInfoKHR-pColorAttachmentInputIndices-09522#
---     Elements of @pColorAttachmentInputIndices@ that are not
---     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' /must/ each be unique
---
--- -   #VUID-VkRenderingInputAttachmentIndexInfoKHR-pColorAttachmentInputIndices-09523#
---     Elements of @pColorAttachmentInputIndices@ that are not
---     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' /must/ not take the
---     same value as the content of @pDepthInputAttachmentIndex@
---
--- -   #VUID-VkRenderingInputAttachmentIndexInfoKHR-pColorAttachmentInputIndices-09524#
---     Elements of @pColorAttachmentInputIndices@ that are not
---     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' /must/ not take the
---     same value as the content of @pStencilInputAttachmentIndex@
---
--- -   #VUID-VkRenderingInputAttachmentIndexInfoKHR-colorAttachmentCount-09525#
---     @colorAttachmentCount@ /must/ be less than or equal to
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxColorAttachments maxColorAttachments>
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkRenderingInputAttachmentIndexInfoKHR-sType-sType# @sType@
---     /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDERING_INPUT_ATTACHMENT_INDEX_INFO_KHR'
---
--- -   #VUID-VkRenderingInputAttachmentIndexInfoKHR-pColorAttachmentInputIndices-parameter#
---     If @colorAttachmentCount@ is not @0@, and
---     @pColorAttachmentInputIndices@ is not @NULL@,
---     @pColorAttachmentInputIndices@ /must/ be a valid pointer to an array
---     of @colorAttachmentCount@ @uint32_t@ values
---
--- -   #VUID-VkRenderingInputAttachmentIndexInfoKHR-pDepthInputAttachmentIndex-parameter#
---     If @pDepthInputAttachmentIndex@ is not @NULL@,
---     @pDepthInputAttachmentIndex@ /must/ be a valid pointer to a valid
---     @uint32_t@ value
---
--- -   #VUID-VkRenderingInputAttachmentIndexInfoKHR-pStencilInputAttachmentIndex-parameter#
---     If @pStencilInputAttachmentIndex@ is not @NULL@,
---     @pStencilInputAttachmentIndex@ /must/ be a valid pointer to a valid
---     @uint32_t@ value
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering_local_read VK_KHR_dynamic_rendering_local_read>,
--- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'cmdSetRenderingInputAttachmentIndicesKHR'
-data RenderingInputAttachmentIndexInfoKHR = RenderingInputAttachmentIndexInfoKHR
-  { -- | @colorAttachmentCount@ is the number of elements in
-    -- @pColorAttachmentInputIndices@.
-    colorAttachmentCount :: Word32
-  , -- | @pColorAttachmentInputIndices@ is a pointer to an array of
-    -- @colorAttachmentCount@ @uint32_t@ values defining indices for color
-    -- attachments to be used as input attachments.
-    colorAttachmentInputIndices :: Vector Word32
-  , -- | @pDepthInputAttachmentIndex@ is either @NULL@, or a pointer to a
-    -- @uint32_t@ value defining the index for the depth attachment to be used
-    -- as an input attachment.
-    depthInputAttachmentIndex :: Maybe Word32
-  , -- | @pStencilInputAttachmentIndex@ is either @NULL@, or a pointer to a
-    -- @uint32_t@ value defining the index for the stencil attachment to be
-    -- used as an input attachment.
-    stencilInputAttachmentIndex :: Maybe Word32
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (RenderingInputAttachmentIndexInfoKHR)
-#endif
-deriving instance Show RenderingInputAttachmentIndexInfoKHR
-
-instance ToCStruct RenderingInputAttachmentIndexInfoKHR where
-  withCStruct x f = allocaBytes 48 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p RenderingInputAttachmentIndexInfoKHR{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RENDERING_INPUT_ATTACHMENT_INDEX_INFO_KHR)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    let pColorAttachmentInputIndicesLength = Data.Vector.length $ (colorAttachmentInputIndices)
-    colorAttachmentCount'' <- lift $ if (colorAttachmentCount) == 0
-      then pure $ fromIntegral pColorAttachmentInputIndicesLength
-      else do
-        unless (fromIntegral pColorAttachmentInputIndicesLength == (colorAttachmentCount) || pColorAttachmentInputIndicesLength == 0) $
-          throwIO $ IOError Nothing InvalidArgument "" "pColorAttachmentInputIndices must be empty or have 'colorAttachmentCount' elements" Nothing Nothing
-        pure (colorAttachmentCount)
-    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) (colorAttachmentCount'')
-    pColorAttachmentInputIndices'' <- if Data.Vector.null (colorAttachmentInputIndices)
-      then pure nullPtr
-      else do
-        pPColorAttachmentInputIndices <- ContT $ allocaBytes @Word32 (((Data.Vector.length (colorAttachmentInputIndices))) * 4)
-        lift $ Data.Vector.imapM_ (\i e -> poke (pPColorAttachmentInputIndices `plusPtr` (4 * (i)) :: Ptr Word32) (e)) ((colorAttachmentInputIndices))
-        pure $ pPColorAttachmentInputIndices
-    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Word32))) pColorAttachmentInputIndices''
-    pDepthInputAttachmentIndex'' <- case (depthInputAttachmentIndex) of
-      Nothing -> pure nullPtr
-      Just j -> ContT $ with (j)
-    lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr Word32))) pDepthInputAttachmentIndex''
-    pStencilInputAttachmentIndex'' <- case (stencilInputAttachmentIndex) of
-      Nothing -> pure nullPtr
-      Just j -> ContT $ with (j)
-    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr Word32))) pStencilInputAttachmentIndex''
-    lift $ f
-  cStructSize = 48
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RENDERING_INPUT_ATTACHMENT_INDEX_INFO_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    f
-
-instance FromCStruct RenderingInputAttachmentIndexInfoKHR where
-  peekCStruct p = do
-    colorAttachmentCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
-    pColorAttachmentInputIndices <- peek @(Ptr Word32) ((p `plusPtr` 24 :: Ptr (Ptr Word32)))
-    let pColorAttachmentInputIndicesLength = if pColorAttachmentInputIndices == nullPtr then 0 else (fromIntegral colorAttachmentCount)
-    pColorAttachmentInputIndices' <- generateM pColorAttachmentInputIndicesLength (\i -> peek @Word32 ((pColorAttachmentInputIndices `advancePtrBytes` (4 * (i)) :: Ptr Word32)))
-    pDepthInputAttachmentIndex <- peek @(Ptr Word32) ((p `plusPtr` 32 :: Ptr (Ptr Word32)))
-    pDepthInputAttachmentIndex' <- maybePeek (\j -> peek @Word32 (j)) pDepthInputAttachmentIndex
-    pStencilInputAttachmentIndex <- peek @(Ptr Word32) ((p `plusPtr` 40 :: Ptr (Ptr Word32)))
-    pStencilInputAttachmentIndex' <- maybePeek (\j -> peek @Word32 (j)) pStencilInputAttachmentIndex
-    pure $ RenderingInputAttachmentIndexInfoKHR
-             colorAttachmentCount
-             pColorAttachmentInputIndices'
-             pDepthInputAttachmentIndex'
-             pStencilInputAttachmentIndex'
-
-instance Zero RenderingInputAttachmentIndexInfoKHR where
-  zero = RenderingInputAttachmentIndexInfoKHR
-           zero
-           mempty
-           Nothing
-           Nothing
+-- No documentation found for TopLevel "VkRenderingInputAttachmentIndexInfoKHR"
+type RenderingInputAttachmentIndexInfoKHR = RenderingInputAttachmentIndexInfo
 
 
 type KHR_DYNAMIC_RENDERING_LOCAL_READ_SPEC_VERSION = 1
diff --git a/src/Vulkan/Extensions/VK_KHR_dynamic_rendering_local_read.hs-boot b/src/Vulkan/Extensions/VK_KHR_dynamic_rendering_local_read.hs-boot
deleted file mode 100644
--- a/src/Vulkan/Extensions/VK_KHR_dynamic_rendering_local_read.hs-boot
+++ /dev/null
@@ -1,181 +0,0 @@
-{-# language CPP #-}
--- | = Name
---
--- VK_KHR_dynamic_rendering_local_read - device extension
---
--- = VK_KHR_dynamic_rendering_local_read
---
--- [__Name String__]
---     @VK_KHR_dynamic_rendering_local_read@
---
--- [__Extension Type__]
---     Device extension
---
--- [__Registered Extension Number__]
---     233
---
--- [__Revision__]
---     1
---
--- [__Ratification Status__]
---     Ratified
---
--- [__Extension and Version Dependencies__]
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering VK_KHR_dynamic_rendering>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3 Vulkan Version 1.3>
---
--- [__Contact__]
---
---     -   Tobias Hector
---         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_dynamic_rendering_local_read] @tobski%0A*Here describe the issue or question you have about the VK_KHR_dynamic_rendering_local_read extension* >
---
--- [__Extension Proposal__]
---     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_KHR_dynamic_rendering_local_read.adoc VK_KHR_dynamic_rendering_local_read>
---
--- == Other Extension Metadata
---
--- [__Last Modified Date__]
---     2023-11-03
---
--- [__Contributors__]
---
---     -   Tobias Hector, AMD
---
---     -   Hans-Kristian Arntzen, Valve
---
---     -   Connor Abbott, Valve
---
---     -   Pan Gao, Huawei
---
---     -   Lionel Landwerlin, Intel
---
---     -   Shahbaz Youssefi, Google
---
---     -   Alyssa Rosenzweig, Valve
---
---     -   Jan-Harald Fredriksen, Arm
---
---     -   Mike Blumenkrantz, Valve
---
---     -   Graeme Leese, Broadcom
---
---     -   Piers Daniell, Nvidia
---
---     -   Stuart Smith, AMD
---
---     -   Daniel Story, Nintendo
---
---     -   James Fitzpatrick, Imagination
---
---     -   Piotr Byszewski, Mobica
---
---     -   Spencer Fricke, LunarG
---
---     -   Tom Olson, Arm
---
---     -   Michal Pietrasiuk, Intel
---
---     -   Matthew Netsch, Qualcomm
---
---     -   Marty Johnson, Khronos
---
---     -   Wyvern Wang, Huawei
---
---     -   Jeff Bolz, Nvidia
---
---     -   Samuel (Sheng-Wen) Huang, MediaTek
---
--- == Description
---
--- This extension enables reads from attachments and resources written by
--- previous fragment shaders within a dynamic render pass.
---
--- == New Commands
---
--- -   'cmdSetRenderingAttachmentLocationsKHR'
---
--- -   'cmdSetRenderingInputAttachmentIndicesKHR'
---
--- == New Structures
---
--- -   Extending 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo',
---     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo':
---
---     -   'RenderingAttachmentLocationInfoKHR'
---
---     -   'RenderingInputAttachmentIndexInfoKHR'
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
---     'Vulkan.Core10.Device.DeviceCreateInfo':
---
---     -   'PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR'
---
--- == New Enum Constants
---
--- -   'KHR_DYNAMIC_RENDERING_LOCAL_READ_EXTENSION_NAME'
---
--- -   'KHR_DYNAMIC_RENDERING_LOCAL_READ_SPEC_VERSION'
---
--- -   Extending 'Vulkan.Core10.Enums.ImageLayout.ImageLayout':
---
---     -   'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_RENDERING_LOCAL_READ_KHR'
---
--- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES_KHR'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDERING_ATTACHMENT_LOCATION_INFO_KHR'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDERING_INPUT_ATTACHMENT_INDEX_INFO_KHR'
---
--- == Version History
---
--- -   Revision 1, 2023-11-03 (Tobias Hector)
---
---     -   Initial revision
---
--- == See Also
---
--- No cross-references are available
---
--- == Document Notes
---
--- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_dynamic_rendering_local_read 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_local_read  ( PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR
-                                                              , RenderingAttachmentLocationInfoKHR
-                                                              , RenderingInputAttachmentIndexInfoKHR
-                                                              ) where
-
-import Vulkan.CStruct (FromCStruct)
-import Vulkan.CStruct (ToCStruct)
-import Data.Kind (Type)
-
-data PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR
-
-instance ToCStruct PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR
-instance Show PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR
-
-instance FromCStruct PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR
-
-
-data RenderingAttachmentLocationInfoKHR
-
-instance ToCStruct RenderingAttachmentLocationInfoKHR
-instance Show RenderingAttachmentLocationInfoKHR
-
-instance FromCStruct RenderingAttachmentLocationInfoKHR
-
-
-data RenderingInputAttachmentIndexInfoKHR
-
-instance ToCStruct RenderingInputAttachmentIndexInfoKHR
-instance Show RenderingInputAttachmentIndexInfoKHR
-
-instance FromCStruct RenderingInputAttachmentIndexInfoKHR
-
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
@@ -114,7 +114,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_external_fence Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -103,7 +103,7 @@
 --
 -- -   'KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION'
 --
--- -   'Vulkan.Core10.APIConstants.LUID_SIZE_KHR'
+-- -   'Vulkan.Extensions.VK_KHR_external_memory_capabilities.LUID_SIZE_KHR'
 --
 -- -   Extending
 --     'Vulkan.Core11.Enums.ExternalFenceFeatureFlagBits.ExternalFenceFeatureFlagBits':
@@ -144,7 +144,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_external_fence_capabilities Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -100,7 +100,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_external_fence_fd Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -202,7 +202,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-fences-importing Importing Fence State>.
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-fences-importing Importing Fence State>.
 --
 -- == Return Codes
 --
@@ -212,10 +212,14 @@
 --
 -- [<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_TOO_MANY_OBJECTS'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_fence_fd VK_KHR_external_fence_fd>,
@@ -278,10 +282,14 @@
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_INVALID_EXTERNAL_HANDLE'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_INVALID_EXTERNAL_HANDLE'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_fence_fd VK_KHR_external_fence_fd>,
@@ -334,12 +342,12 @@
 --
 -- -   #VUID-VkImportFenceFdInfoKHR-handleType-01464# @handleType@ /must/
 --     be a value included in the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-fence-handletypes-fd Handle Types Supported by >
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#external-fence-handle-types-compatibility external fence handle types compatibility>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#external-fence-handle-types-compatibility external fence handle types compatibility>
 --
 -- -   #VUID-VkImportFenceFdInfoKHR-handleType-07306# If @handleType@
 --     refers to a handle type with copy payload transference semantics,
@@ -477,13 +485,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-fences-signaling fence signal operation>
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-fences-importing Importing Fence Payloads>
+--     <https://registry.khronos.org/vulkan/specs/latest/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
@@ -100,7 +100,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_external_fence_fd Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -116,7 +116,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_external_fence_win32 Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -212,7 +212,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-fences-importing Importing Fence Payloads>.
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-fences-importing Importing Fence Payloads>.
 --
 -- == Return Codes
 --
@@ -222,10 +222,14 @@
 --
 -- [<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_TOO_MANY_OBJECTS'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_fence_win32 VK_KHR_external_fence_win32>,
@@ -289,10 +293,14 @@
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_INVALID_EXTERNAL_HANDLE'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_INVALID_EXTERNAL_HANDLE'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_fence_win32 VK_KHR_external_fence_win32>,
@@ -347,7 +355,7 @@
 --
 -- -   #VUID-VkImportFenceWin32HandleInfoKHR-handleType-01457# @handleType@
 --     /must/ be a value included in the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-fence-handletypes-win32 Handle Types Supported by >
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-fence-handletypes-win32 Handle Types Supported by >
 --     table
 --
 -- -   #VUID-VkImportFenceWin32HandleInfoKHR-handleType-01459# If
@@ -369,11 +377,11 @@
 -- -   #VUID-VkImportFenceWin32HandleInfoKHR-handle-01539# If @handle@ is
 --     not @NULL@, it /must/ obey any requirements listed for @handleType@
 --     in
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#external-fence-handle-types-compatibility external fence handle types compatibility>
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#external-fence-handle-types-compatibility external fence handle types compatibility>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#external-fence-handle-types-compatibility external fence handle types compatibility>
 --
 -- == Valid Usage (Implicit)
 --
@@ -519,6 +527,12 @@
 --     'Vulkan.Extensions.VK_NV_external_memory_win32.SECURITY_ATTRIBUTES'
 --     value
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.Fence.FenceCreateInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_fence_win32 VK_KHR_external_fence_win32>,
@@ -607,7 +621,7 @@
 -- -   #VUID-VkFenceGetWin32HandleInfoKHR-fence-01450# @fence@ /must/ not
 --     currently have its payload replaced by an imported payload as
 --     described below in
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-fences-importing Importing Fence Payloads>
+--     <https://registry.khronos.org/vulkan/specs/latest/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@
@@ -615,7 +629,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-fences-signaling fence signal operation>
+--     <https://registry.khronos.org/vulkan/specs/latest/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
@@ -116,7 +116,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_external_fence_win32 Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -108,7 +108,7 @@
 --
 -- -   'KHR_EXTERNAL_MEMORY_SPEC_VERSION'
 --
--- -   'Vulkan.Core10.APIConstants.QUEUE_FAMILY_EXTERNAL_KHR'
+-- -   'QUEUE_FAMILY_EXTERNAL_KHR'
 --
 -- -   Extending 'Vulkan.Core10.Enums.Result.Result':
 --
@@ -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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-memory-aliasing Memory Aliasing>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-memory-aliasing Memory Aliasing>
 -- section?
 --
 -- __RESOLVED__: Yes. Applications must take care to obey all restrictions
@@ -179,9 +179,9 @@
 -- space. Options for defining this transition include:
 --
 -- -   A new structure that can be added to the @pNext@ list in
---     'Vulkan.Core10.OtherTypes.MemoryBarrier',
---     'Vulkan.Core10.OtherTypes.BufferMemoryBarrier', and
---     'Vulkan.Core10.OtherTypes.ImageMemoryBarrier'.
+--     'Vulkan.Core10.CommandBufferBuilding.MemoryBarrier',
+--     'Vulkan.Core10.CommandBufferBuilding.BufferMemoryBarrier', and
+--     'Vulkan.Core10.CommandBufferBuilding.ImageMemoryBarrier'.
 --
 -- -   A new bit in 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlags' that
 --     can be set to indicate an “external” access.
@@ -220,7 +220,7 @@
 -- separate Vulkan instance, in that both operations ideally include
 -- scheduling a barrier on both sides of the transition: Both the releasing
 -- and the acquiring queue or process. Using a special queue family
--- requires adding an additional reserved queue family index. Re-using
+-- requires adding an additional reserved queue family index. Reusing
 -- 'Vulkan.Core10.APIConstants.QUEUE_FAMILY_IGNORED' would have left it
 -- unclear how to transition a concurrent usage resource from one process
 -- to another, since the semantics would have likely been equivalent to the
@@ -331,7 +331,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_external_memory Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -117,7 +117,7 @@
 --
 -- -   'KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION'
 --
--- -   'Vulkan.Core10.APIConstants.LUID_SIZE_KHR'
+-- -   'LUID_SIZE_KHR'
 --
 -- -   Extending
 --     'Vulkan.Core11.Enums.ExternalMemoryFeatureFlagBits.ExternalMemoryFeatureFlagBits':
@@ -162,59 +162,58 @@
 -- 1) Why do so many external memory capabilities need to be queried on a
 -- per-memory-handle-type basis?
 --
--- __PROPOSED RESOLUTION__: This is because some handle types are based on
--- OS-native objects that have far more limited capabilities than the very
--- generic Vulkan memory objects. Not all memory handle types can name
--- memory objects that support 3D images, for example. Some handle types
--- cannot even support the deferred image and memory binding behavior of
--- Vulkan and require specifying the image when allocating or importing the
--- memory object.
+-- This is because some handle types are based on OS-native objects that
+-- have far more limited capabilities than the very generic Vulkan memory
+-- objects. Not all memory handle types can name memory objects that
+-- support 3D images, for example. Some handle types cannot even support
+-- the deferred image and memory binding behavior of Vulkan and require
+-- specifying the image when allocating or importing the memory object.
 --
 -- 2) Do the 'ExternalImageFormatPropertiesKHR' and
 -- 'ExternalBufferPropertiesKHR' structs need to include a list of memory
 -- type bits that support the given handle type?
 --
--- __PROPOSED RESOLUTION__: No. The memory types that do not support the
--- handle types will simply be filtered out of the results returned by
+-- No. The memory types that do not support the handle types will simply be
+-- filtered out of the results returned by
 -- 'Vulkan.Core10.MemoryManagement.getImageMemoryRequirements' and
 -- 'Vulkan.Core10.MemoryManagement.getBufferMemoryRequirements' when a set
 -- of handle types was specified at image or buffer creation time.
 --
 -- 3) Should the non-opaque handle types be moved to their own extension?
 --
--- __PROPOSED RESOLUTION__: Perhaps. However, defining the handle type bits
--- does very little and does not require any platform-specific types on its
--- own, and it is easier to maintain the bitfield values in a single
--- extension for now. Presumably more handle types could be added by
--- separate extensions though, and it would be midly weird to have some
--- platform-specific ones defined in the core spec and some in extensions
+-- Perhaps. However, defining the handle type bits does very little and
+-- does not require any platform-specific types on its own, and it is
+-- easier to maintain the bitfield values in a single extension for now.
+-- Presumably more handle types could be added by separate extensions
+-- though, and it would be midly weird to have some platform-specific ones
+-- defined in the core spec and some in extensions
 --
 -- 4) Do we need a @D3D11_TILEPOOL@ type?
 --
--- __PROPOSED RESOLUTION__: No. This is technically possible, but the
--- synchronization is awkward. D3D11 surfaces must be synchronized using
--- shared mutexes, and these synchronization primitives are shared by the
--- entire memory object, so D3D11 shared allocations divided among multiple
--- buffer and image bindings may be difficult to synchronize.
+-- No. This is technically possible, but the synchronization is awkward.
+-- D3D11 surfaces must be synchronized using shared mutexes, and these
+-- synchronization primitives are shared by the entire memory object, so
+-- D3D11 shared allocations divided among multiple buffer and image
+-- bindings may be difficult to synchronize.
 --
 -- 5) Should the Windows 7-compatible handle types be named “KMT” handles
 -- or “GLOBAL_SHARE” handles?
 --
--- __PROPOSED RESOLUTION__: KMT, simply because it is more concise.
+-- KMT, simply because it is more concise.
 --
 -- 6) How do applications identify compatible devices and drivers across
 -- instance, process, and API boundaries when sharing memory?
 --
--- __PROPOSED RESOLUTION__: New device properties are exposed that allow
--- applications to correctly correlate devices and drivers. A device and
--- driver UUID that must both match to ensure sharing compatibility between
--- two Vulkan instances, or a Vulkan instance and an extensible external
--- API are added. To allow correlating with Direct3D devices, a device LUID
--- is added that corresponds to a DXGI adapter LUID. A driver ID is not
--- needed for Direct3D because mismatched driver component versions are not
--- currently supported on the Windows OS. Should support for such
--- configurations be introduced at the OS level, further Vulkan extensions
--- would be needed to correlate userspace component builds.
+-- New device properties are exposed that allow applications to correctly
+-- correlate devices and drivers. A device and driver UUID that must both
+-- match to ensure sharing compatibility between two Vulkan instances, or a
+-- Vulkan instance and an extensible external API are added. To allow
+-- correlating with Direct3D devices, a device LUID is added that
+-- corresponds to a DXGI adapter LUID. A driver ID is not needed for
+-- Direct3D because mismatched driver component versions are not currently
+-- supported on the Windows OS. Should support for such configurations be
+-- introduced at the OS level, further Vulkan extensions would be needed to
+-- correlate userspace component builds.
 --
 -- == Version History
 --
@@ -229,7 +228,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_external_memory_capabilities Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -238,6 +237,7 @@
                                                               , pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR
                                                               , pattern STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHR
                                                               , pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR
+                                                              , pattern LUID_SIZE_KHR
                                                               , pattern EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR
                                                               , pattern EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR
                                                               , pattern EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR
@@ -248,7 +248,6 @@
                                                               , pattern EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR
                                                               , pattern EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR
                                                               , pattern EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR
-                                                              , pattern LUID_SIZE_KHR
                                                               , getPhysicalDeviceExternalBufferPropertiesKHR
                                                               , ExternalMemoryHandleTypeFlagsKHR
                                                               , ExternalMemoryFeatureFlagsKHR
@@ -324,6 +323,10 @@
 pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES
 
 
+-- No documentation found for TopLevel "VK_LUID_SIZE_KHR"
+pattern LUID_SIZE_KHR = LUID_SIZE
+
+
 -- No documentation found for TopLevel "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR"
 pattern EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT
 
@@ -362,10 +365,6 @@
 
 -- No documentation found for TopLevel "VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR"
 pattern EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR = EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT
-
-
--- No documentation found for TopLevel "VK_LUID_SIZE_KHR"
-pattern LUID_SIZE_KHR = LUID_SIZE
 
 
 -- No documentation found for TopLevel "vkGetPhysicalDeviceExternalBufferPropertiesKHR"
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
@@ -121,7 +121,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_external_memory_fd Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -222,10 +222,14 @@
 --
 -- [<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_TOO_MANY_OBJECTS'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_memory_fd VK_KHR_external_memory_fd>,
@@ -279,10 +283,14 @@
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_INVALID_EXTERNAL_HANDLE'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_INVALID_EXTERNAL_HANDLE'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_memory_fd VK_KHR_external_memory_fd>,
@@ -349,8 +357,9 @@
 --
 -- == Valid Usage
 --
--- -   #VUID-VkImportMemoryFdInfoKHR-handleType-00667# If @handleType@ is
+-- -   #VUID-VkImportMemoryFdInfoKHR-handleType-09862# If @handleType@ is
 --     not @0@, it /must/ be supported for import, as reported by
+--     'Vulkan.Extensions.VK_ARM_tensors.ExternalTensorPropertiesARM',
 --     'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.ExternalImageFormatProperties'
 --     or
 --     'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.ExternalBufferProperties'
@@ -372,11 +381,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#external-memory-handle-types-compatibility>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#external-memory-handle-types-compatibility external memory handle types compatibility>
 --
 -- -   #VUID-VkImportMemoryFdInfoKHR-fd-01520# @fd@ /must/ obey any
 --     requirements listed for @handleType@ in
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#external-memory-handle-types-compatibility external memory handle types compatibility>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#external-memory-handle-types-compatibility external memory handle types compatibility>
 --
 -- == Valid Usage (Implicit)
 --
@@ -387,6 +396,12 @@
 --     is not @0@, @handleType@ /must/ be a valid
 --     'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits'
 --     value
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.Memory.MemoryAllocateInfo'
 --
 -- = See Also
 --
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
@@ -121,7 +121,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_external_memory_fd Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_external_memory_win32 Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -239,10 +239,14 @@
 --
 -- [<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_TOO_MANY_OBJECTS'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_memory_win32 VK_KHR_external_memory_win32>,
@@ -297,10 +301,14 @@
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_INVALID_EXTERNAL_HANDLE'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_INVALID_EXTERNAL_HANDLE'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_memory_win32 VK_KHR_external_memory_win32>,
@@ -374,10 +382,11 @@
 --
 -- == Valid Usage
 --
--- -   #VUID-VkImportMemoryWin32HandleInfoKHR-handleType-00658# If
+-- -   #VUID-VkImportMemoryWin32HandleInfoKHR-handleType-09861# If
 --     @handleType@ is not @0@, it /must/ be supported for import, as
 --     reported by
---     'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.ExternalImageFormatProperties'
+--     'Vulkan.Extensions.VK_ARM_tensors.ExternalTensorPropertiesARM',
+--     'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.ExternalImageFormatProperties',
 --     or
 --     'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.ExternalBufferProperties'
 --
@@ -412,11 +421,11 @@
 -- -   #VUID-VkImportMemoryWin32HandleInfoKHR-handle-01518# If @handle@ is
 --     not @NULL@, it /must/ obey any requirements listed for @handleType@
 --     in
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#external-memory-handle-types-compatibility external memory handle types compatibility>
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#external-memory-handle-types-compatibility external memory handle types compatibility>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#external-memory-handle-types-compatibility external memory handle types compatibility>
 --
 -- == Valid Usage (Implicit)
 --
@@ -429,6 +438,12 @@
 --     'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits'
 --     value
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.Memory.MemoryAllocateInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_memory_win32 VK_KHR_external_memory_win32>,
@@ -539,6 +554,12 @@
 --     to a valid
 --     'Vulkan.Extensions.VK_NV_external_memory_win32.SECURITY_ATTRIBUTES'
 --     value
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.Memory.MemoryAllocateInfo'
 --
 -- = See Also
 --
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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_external_memory_win32 Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -135,7 +135,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_external_semaphore Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -99,7 +99,7 @@
 --
 -- -   'KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION'
 --
--- -   'Vulkan.Core10.APIConstants.LUID_SIZE_KHR'
+-- -   'Vulkan.Extensions.VK_KHR_external_memory_capabilities.LUID_SIZE_KHR'
 --
 -- -   Extending
 --     'Vulkan.Core11.Enums.ExternalSemaphoreFeatureFlagBits.ExternalSemaphoreFeatureFlagBits':
@@ -142,7 +142,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_external_semaphore_capabilities Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -104,7 +104,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_external_semaphore_fd Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -201,7 +201,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-semaphores-importing Importing Semaphore State>.
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-semaphores-importing Importing Semaphore State>.
 --
 -- == Return Codes
 --
@@ -211,10 +211,14 @@
 --
 -- [<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_TOO_MANY_OBJECTS'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_semaphore_fd VK_KHR_external_semaphore_fd>,
@@ -278,10 +282,14 @@
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_INVALID_EXTERNAL_HANDLE'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_INVALID_EXTERNAL_HANDLE'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_semaphore_fd VK_KHR_external_semaphore_fd>,
@@ -335,12 +343,12 @@
 --
 -- -   #VUID-VkImportSemaphoreFdInfoKHR-handleType-01143# @handleType@
 --     /must/ be a value included in the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-semaphore-handletypes-fd Handle Types Supported by >
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#external-semaphore-handle-types-compatibility external semaphore handle types compatibility>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#external-semaphore-handle-types-compatibility external semaphore handle types compatibility>
 --
 -- -   #VUID-VkImportSemaphoreFdInfoKHR-handleType-03263# If @handleType@
 --     is
@@ -504,7 +512,7 @@
 -- -   #VUID-VkSemaphoreGetFdInfoKHR-semaphore-01133# @semaphore@ /must/
 --     not currently have its payload replaced by an imported payload as
 --     described below in
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-semaphores-importing Importing Semaphore Payloads>
+--     <https://registry.khronos.org/vulkan/specs/latest/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@
@@ -512,13 +520,13 @@
 -- -   #VUID-VkSemaphoreGetFdInfoKHR-handleType-01134# If @handleType@
 --     refers to a handle type with copy payload transference semantics, as
 --     defined below in
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-semaphores-importing Importing Semaphore Payloads>,
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operation>
+--     <https://registry.khronos.org/vulkan/specs/latest/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
@@ -104,7 +104,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_external_semaphore_fd Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -141,7 +141,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_external_semaphore_win32 Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -247,7 +247,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-semaphores-importing Importing Semaphore Payloads>.
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-semaphores-importing Importing Semaphore Payloads>.
 --
 -- == Return Codes
 --
@@ -257,10 +257,14 @@
 --
 -- [<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_TOO_MANY_OBJECTS'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_semaphore_win32 VK_KHR_external_semaphore_win32>,
@@ -326,10 +330,14 @@
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_INVALID_EXTERNAL_HANDLE'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_INVALID_EXTERNAL_HANDLE'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_semaphore_win32 VK_KHR_external_semaphore_win32>,
@@ -387,7 +395,7 @@
 --
 -- -   #VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-01140#
 --     @handleType@ /must/ be a value included in the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-semaphore-handletypes-win32 Handle Types Supported by >
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-semaphore-handletypes-win32 Handle Types Supported by >
 --     table
 --
 -- -   #VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-01466# If
@@ -411,12 +419,12 @@
 -- -   #VUID-VkImportSemaphoreWin32HandleInfoKHR-handle-01542# If @handle@
 --     is not @NULL@, it /must/ obey any requirements listed for
 --     @handleType@ in
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#external-semaphore-handle-types-compatibility external semaphore handle types compatibility>
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#external-semaphore-handle-types-compatibility external semaphore handle types compatibility>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#external-semaphore-handle-types-compatibility external semaphore handle types compatibility>
 --
 -- -   #VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-03261# If
 --     @handleType@ is
@@ -607,6 +615,12 @@
 --     'Vulkan.Extensions.VK_NV_external_memory_win32.SECURITY_ATTRIBUTES'
 --     value
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.QueueSemaphore.SemaphoreCreateInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_semaphore_win32 VK_KHR_external_semaphore_win32>,
@@ -678,7 +692,7 @@
 -- or 'Vulkan.Core10.Queue.SubmitInfo'::@pSignalSemaphores@ corresponding
 -- to an entry in @pWaitSemaphoreValues@ or @pSignalSemaphoreValues@
 -- respectively does not currently have a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-semaphores-payloads payload>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
 --
@@ -727,6 +741,12 @@
 --     /must/ be a valid pointer to an array of
 --     @signalSemaphoreValuesCount@ @uint64_t@ values
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.Queue.SubmitInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_semaphore_win32 VK_KHR_external_semaphore_win32>,
@@ -847,7 +867,7 @@
 -- -   #VUID-VkSemaphoreGetWin32HandleInfoKHR-semaphore-01128# @semaphore@
 --     /must/ not currently have its payload replaced by an imported
 --     payload as described below in
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-semaphores-importing Importing Semaphore Payloads>
+--     <https://registry.khronos.org/vulkan/specs/latest/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@
@@ -855,13 +875,13 @@
 -- -   #VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-01129# If
 --     @handleType@ refers to a handle type with copy payload transference
 --     semantics, as defined below in
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-semaphores-importing Importing Semaphore Payloads>,
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operation>
+--     <https://registry.khronos.org/vulkan/specs/latest/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
@@ -141,7 +141,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_external_semaphore_win32 Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -25,6 +25,16 @@
 --     or
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
 --
+-- [__API Interactions__]
+--
+--     -   Interacts with VK_VERSION_1_2
+--
+--     -   Interacts with VK_EXT_filter_cubic
+--
+--     -   Interacts with VK_EXT_sampler_filter_minmax
+--
+--     -   Interacts with VK_IMG_filter_cubic
+--
 -- [__Deprecation State__]
 --
 --     -   /Promoted/ to
@@ -77,16 +87,15 @@
 -- 'Vulkan.Core10.Enums.FormatFeatureFlagBits.FormatFeatureFlagBits',
 -- 'FormatFeatureFlagBits2KHR' adds the following bits :
 --
--- -   'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR'
---     and
---     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR'
---     specify that an implementation supports reading and writing,
---     respectively, a given 'Vulkan.Core10.Enums.Format.Format' through
---     storage operations without specifying the format in the shader.
+-- -   'FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR' and
+--     'FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR' specify that
+--     an implementation supports reading and writing, respectively, a
+--     given 'Vulkan.Core10.Enums.Format.Format' through storage operations
+--     without specifying the format in the shader.
 --
--- -   'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT_KHR'
---     specifies that an implementation supports depth comparison performed
---     by @OpImage*Dref*@ instructions on a given
+-- -   'FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT_KHR' specifies
+--     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
@@ -94,14 +103,13 @@
 --     instructions can be used.
 --
 -- Prior to version 2 of this extension, implementations exposing the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-shaderStorageImageReadWithoutFormat shaderStorageImageReadWithoutFormat>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-shaderStorageImageReadWithoutFormat shaderStorageImageReadWithoutFormat>
 -- and
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-shaderStorageImageWriteWithoutFormat shaderStorageImageWriteWithoutFormat>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-shaderStorageImageWriteWithoutFormat shaderStorageImageWriteWithoutFormat>
 -- features may not report
--- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR'
--- and
--- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR'
--- in 'FormatProperties3KHR'::@bufferFeatures@. Despite this, buffer
+-- 'FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR' and
+-- 'FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR' in
+-- 'FormatProperties3KHR'::@bufferFeatures@. Despite this, buffer
 -- reads\/writes are supported as intended by the original features.
 --
 -- == New Structures
@@ -125,10 +133,85 @@
 --
 -- -   'KHR_FORMAT_FEATURE_FLAGS_2_SPEC_VERSION'
 --
+-- -   Extending
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FormatFeatureFlagBits2':
+--
+--     -   'FORMAT_FEATURE_2_BLIT_DST_BIT_KHR'
+--
+--     -   'FORMAT_FEATURE_2_BLIT_SRC_BIT_KHR'
+--
+--     -   'FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT_KHR'
+--
+--     -   'FORMAT_FEATURE_2_COLOR_ATTACHMENT_BLEND_BIT_KHR'
+--
+--     -   'FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT_KHR'
+--
+--     -   'FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT_BIT_KHR'
+--
+--     -   'FORMAT_FEATURE_2_DISJOINT_BIT_KHR'
+--
+--     -   'FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT_KHR'
+--
+--     -   'FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT_KHR'
+--
+--     -   'FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT_KHR'
+--
+--     -   'FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR_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_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR'
+--
+--     -   'FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR'
+--
+--     -   'FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT_KHR'
+--
+--     -   'FORMAT_FEATURE_2_STORAGE_IMAGE_BIT_KHR'
+--
+--     -   'FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR'
+--
+--     -   'FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_ATOMIC_BIT_KHR'
+--
+--     -   'FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_BIT_KHR'
+--
+--     -   'FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR'
+--
+--     -   'FORMAT_FEATURE_2_TRANSFER_DST_BIT_KHR'
+--
+--     -   'FORMAT_FEATURE_2_TRANSFER_SRC_BIT_KHR'
+--
+--     -   'FORMAT_FEATURE_2_UNIFORM_TEXEL_BUFFER_BIT_KHR'
+--
+--     -   'FORMAT_FEATURE_2_VERTEX_BUFFER_BIT_KHR'
+--
 -- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
 --
 --     -   'STRUCTURE_TYPE_FORMAT_PROPERTIES_3_KHR'
 --
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_filter_cubic VK_EXT_filter_cubic>
+-- or
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_IMG_filter_cubic VK_IMG_filter_cubic>
+-- is supported:
+--
+-- -   Extending
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FormatFeatureFlagBits2':
+--
+--     -   'FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.2 Vulkan Version 1.2>
+-- or
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_sampler_filter_minmax VK_EXT_sampler_filter_minmax>
+-- is supported:
+--
+-- -   Extending
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FormatFeatureFlagBits2':
+--
+--     -   'FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_MINMAX_BIT_KHR'
+--
 -- == Promotion to Vulkan 1.3
 --
 -- Vulkan APIs in this extension are included in core Vulkan 1.3, with the
@@ -156,11 +239,38 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_format_feature_flags2 Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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  ( pattern STRUCTURE_TYPE_FORMAT_PROPERTIES_3_KHR
+                                                       , 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_TRANSFER_SRC_BIT_KHR
+                                                       , pattern FORMAT_FEATURE_2_TRANSFER_DST_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
+                                                       , pattern FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_MINMAX_BIT_KHR
+                                                       , pattern FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT
                                                        , FormatFeatureFlags2KHR
                                                        , FormatFeatureFlagBits2KHR
                                                        , FormatProperties3KHR
@@ -174,9 +284,171 @@
 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.Core13.Enums.FormatFeatureFlags2 (FormatFeatureFlags2)
+import Vulkan.Core13.Enums.FormatFeatureFlags2 (FormatFeatureFlagBits2(FORMAT_FEATURE_2_BLIT_DST_BIT))
+import Vulkan.Core13.Enums.FormatFeatureFlags2 (FormatFeatureFlags2)
+import Vulkan.Core13.Enums.FormatFeatureFlags2 (FormatFeatureFlagBits2(FORMAT_FEATURE_2_BLIT_SRC_BIT))
+import Vulkan.Core13.Enums.FormatFeatureFlags2 (FormatFeatureFlags2)
+import Vulkan.Core13.Enums.FormatFeatureFlags2 (FormatFeatureFlagBits2(FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT))
+import Vulkan.Core13.Enums.FormatFeatureFlags2 (FormatFeatureFlags2)
+import Vulkan.Core13.Enums.FormatFeatureFlags2 (FormatFeatureFlagBits2(FORMAT_FEATURE_2_COLOR_ATTACHMENT_BLEND_BIT))
+import Vulkan.Core13.Enums.FormatFeatureFlags2 (FormatFeatureFlags2)
+import Vulkan.Core13.Enums.FormatFeatureFlags2 (FormatFeatureFlagBits2(FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT))
+import Vulkan.Core13.Enums.FormatFeatureFlags2 (FormatFeatureFlags2)
+import Vulkan.Core13.Enums.FormatFeatureFlags2 (FormatFeatureFlagBits2(FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT_BIT))
+import Vulkan.Core13.Enums.FormatFeatureFlags2 (FormatFeatureFlags2)
+import Vulkan.Core13.Enums.FormatFeatureFlags2 (FormatFeatureFlagBits2(FORMAT_FEATURE_2_DISJOINT_BIT))
+import Vulkan.Core13.Enums.FormatFeatureFlags2 (FormatFeatureFlags2)
+import Vulkan.Core13.Enums.FormatFeatureFlags2 (FormatFeatureFlagBits2(FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT))
+import Vulkan.Core13.Enums.FormatFeatureFlags2 (FormatFeatureFlags2)
+import Vulkan.Core13.Enums.FormatFeatureFlags2 (FormatFeatureFlagBits2(FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT))
+import Vulkan.Core13.Enums.FormatFeatureFlags2 (FormatFeatureFlags2)
+import Vulkan.Core13.Enums.FormatFeatureFlags2 (FormatFeatureFlagBits2(FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT))
+import Vulkan.Core13.Enums.FormatFeatureFlags2 (FormatFeatureFlags2)
+import Vulkan.Core13.Enums.FormatFeatureFlags2 (FormatFeatureFlagBits2(FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_CUBIC_BIT))
+import Vulkan.Core13.Enums.FormatFeatureFlags2 (FormatFeatureFlags2)
+import Vulkan.Core13.Enums.FormatFeatureFlags2 (FormatFeatureFlagBits2(FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR_BIT))
+import Vulkan.Core13.Enums.FormatFeatureFlags2 (FormatFeatureFlags2)
+import Vulkan.Core13.Enums.FormatFeatureFlags2 (FormatFeatureFlagBits2(FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_MINMAX_BIT))
+import Vulkan.Core13.Enums.FormatFeatureFlags2 (FormatFeatureFlags2)
+import Vulkan.Core13.Enums.FormatFeatureFlags2 (FormatFeatureFlagBits2(FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT))
+import Vulkan.Core13.Enums.FormatFeatureFlags2 (FormatFeatureFlags2)
+import Vulkan.Core13.Enums.FormatFeatureFlags2 (FormatFeatureFlagBits2(FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT))
+import Vulkan.Core13.Enums.FormatFeatureFlags2 (FormatFeatureFlags2)
+import Vulkan.Core13.Enums.FormatFeatureFlags2 (FormatFeatureFlagBits2(FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT))
+import Vulkan.Core13.Enums.FormatFeatureFlags2 (FormatFeatureFlags2)
+import Vulkan.Core13.Enums.FormatFeatureFlags2 (FormatFeatureFlagBits2(FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT))
+import Vulkan.Core13.Enums.FormatFeatureFlags2 (FormatFeatureFlags2)
+import Vulkan.Core13.Enums.FormatFeatureFlags2 (FormatFeatureFlagBits2(FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT))
+import Vulkan.Core13.Enums.FormatFeatureFlags2 (FormatFeatureFlags2)
+import Vulkan.Core13.Enums.FormatFeatureFlags2 (FormatFeatureFlagBits2(FORMAT_FEATURE_2_STORAGE_IMAGE_BIT))
+import Vulkan.Core13.Enums.FormatFeatureFlags2 (FormatFeatureFlags2)
+import Vulkan.Core13.Enums.FormatFeatureFlags2 (FormatFeatureFlagBits2(FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT))
+import Vulkan.Core13.Enums.FormatFeatureFlags2 (FormatFeatureFlags2)
+import Vulkan.Core13.Enums.FormatFeatureFlags2 (FormatFeatureFlagBits2(FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_ATOMIC_BIT))
+import Vulkan.Core13.Enums.FormatFeatureFlags2 (FormatFeatureFlags2)
+import Vulkan.Core13.Enums.FormatFeatureFlags2 (FormatFeatureFlagBits2(FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_BIT))
+import Vulkan.Core13.Enums.FormatFeatureFlags2 (FormatFeatureFlags2)
+import Vulkan.Core13.Enums.FormatFeatureFlags2 (FormatFeatureFlagBits2(FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT))
+import Vulkan.Core13.Enums.FormatFeatureFlags2 (FormatFeatureFlags2)
+import Vulkan.Core13.Enums.FormatFeatureFlags2 (FormatFeatureFlagBits2(FORMAT_FEATURE_2_TRANSFER_DST_BIT))
+import Vulkan.Core13.Enums.FormatFeatureFlags2 (FormatFeatureFlags2)
+import Vulkan.Core13.Enums.FormatFeatureFlags2 (FormatFeatureFlagBits2(FORMAT_FEATURE_2_TRANSFER_SRC_BIT))
+import Vulkan.Core13.Enums.FormatFeatureFlags2 (FormatFeatureFlags2)
+import Vulkan.Core13.Enums.FormatFeatureFlags2 (FormatFeatureFlagBits2(FORMAT_FEATURE_2_UNIFORM_TEXEL_BUFFER_BIT))
+import Vulkan.Core13.Enums.FormatFeatureFlags2 (FormatFeatureFlags2)
+import Vulkan.Core13.Enums.FormatFeatureFlags2 (FormatFeatureFlagBits2(FORMAT_FEATURE_2_VERTEX_BUFFER_BIT))
 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
+
+
+-- 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_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_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
+
+
+-- 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_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 "VkFormatFeatureFlags2KHR"
diff --git a/src/Vulkan/Extensions/VK_KHR_fragment_shader_barycentric.hs b/src/Vulkan/Extensions/VK_KHR_fragment_shader_barycentric.hs
--- a/src/Vulkan/Extensions/VK_KHR_fragment_shader_barycentric.hs
+++ b/src/Vulkan/Extensions/VK_KHR_fragment_shader_barycentric.hs
@@ -130,17 +130,17 @@
 --
 -- == New Built-In Variables
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-barycoordkhr BaryCoordKHR>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-barycoordkhr BaryCoordKHR>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-barycoordnoperspkhr BaryCoordNoPerspKHR>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-barycoordnoperspkhr BaryCoordNoPerspKHR>
 --
 -- == New SPIR-V Decorations
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-interpolation-decorations-pervertexkhr PerVertexKHR>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-interpolation-decorations-pervertexkhr PerVertexKHR>
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-FragmentBarycentricKHR FragmentBarycentricKHR>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-FragmentBarycentricKHR FragmentBarycentricKHR>
 --
 -- == Issues
 --
@@ -151,7 +151,7 @@
 -- @BaryCoordNoPerspKHR@ /may/ also be decorated with the @Centroid@ or
 -- @Sample@ qualifiers to specify interpolation, like any other fragment
 -- shader input. If the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-shaderSampleRateInterpolationFunctions shaderSampleRateInterpolationFunctions>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-shaderSampleRateInterpolationFunctions shaderSampleRateInterpolationFunctions>
 -- feature is enabled, the extended instructions InterpolateAtCentroid,
 -- InterpolateAtOffset, and InterpolateAtSample from the GLSL.std.450 /may/
 -- also be used with inputs decorated with @BaryCoordKHR@ or
@@ -170,7 +170,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_fragment_shader_barycentric Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_fragment_shader_barycentric Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -216,7 +216,7 @@
 -- = Description
 --
 -- See
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-barycentric Barycentric Interpolation>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-barycentric Barycentric Interpolation>
 -- for more information.
 --
 -- If the 'PhysicalDeviceFragmentShaderBarycentricFeaturesKHR' structure is
@@ -225,16 +225,26 @@
 -- 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. 'PhysicalDeviceFragmentShaderBarycentricFeaturesKHR' /can/
--- also be used in the @pNext@ chain of
--- 'Vulkan.Core10.Device.DeviceCreateInfo' to selectively enable these
--- features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceFragmentShaderBarycentricFeaturesKHR', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_fragment_shader_barycentric VK_KHR_fragment_shader_barycentric>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_fragment_shader_barycentric VK_NV_fragment_shader_barycentric>,
 -- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceFragmentShaderBarycentricFeaturesKHR = PhysicalDeviceFragmentShaderBarycentricFeaturesKHR
@@ -287,12 +297,12 @@
 -- = Members
 --
 -- -   #limits-triStripVertexOrderIndependentOfProvokingVertex# When the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#vertexpostproc-flatshading provoking vertex mode>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#vertexpostproc-flatshading provoking vertex mode>
 --     is
 --     'Vulkan.Extensions.VK_EXT_provoking_vertex.PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT',
 --     and the primitive order is odd in a triangle strip, the ordering of
 --     vertices is defined in
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-barycentric-order-table-last-vertex last vertex table>.
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-barycentric-order-table-last-vertex last vertex table>.
 --     @triStripVertexOrderIndependentOfProvokingVertex@ equal to
 --     'Vulkan.Core10.FundamentalTypes.TRUE' indicates that the
 --     implementation ignores this and uses the vertex order defined by
@@ -309,7 +319,11 @@
 -- it is filled in with each corresponding implementation-dependent
 -- property.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Extensions/VK_KHR_fragment_shader_barycentric.hs-boot b/src/Vulkan/Extensions/VK_KHR_fragment_shader_barycentric.hs-boot
--- a/src/Vulkan/Extensions/VK_KHR_fragment_shader_barycentric.hs-boot
+++ b/src/Vulkan/Extensions/VK_KHR_fragment_shader_barycentric.hs-boot
@@ -130,17 +130,17 @@
 --
 -- == New Built-In Variables
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-barycoordkhr BaryCoordKHR>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-barycoordkhr BaryCoordKHR>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-barycoordnoperspkhr BaryCoordNoPerspKHR>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-barycoordnoperspkhr BaryCoordNoPerspKHR>
 --
 -- == New SPIR-V Decorations
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-interpolation-decorations-pervertexkhr PerVertexKHR>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-interpolation-decorations-pervertexkhr PerVertexKHR>
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-FragmentBarycentricKHR FragmentBarycentricKHR>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-FragmentBarycentricKHR FragmentBarycentricKHR>
 --
 -- == Issues
 --
@@ -151,7 +151,7 @@
 -- @BaryCoordNoPerspKHR@ /may/ also be decorated with the @Centroid@ or
 -- @Sample@ qualifiers to specify interpolation, like any other fragment
 -- shader input. If the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-shaderSampleRateInterpolationFunctions shaderSampleRateInterpolationFunctions>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-shaderSampleRateInterpolationFunctions shaderSampleRateInterpolationFunctions>
 -- feature is enabled, the extended instructions InterpolateAtCentroid,
 -- InterpolateAtOffset, and InterpolateAtSample from the GLSL.std.450 /may/
 -- also be used with inputs decorated with @BaryCoordKHR@ or
@@ -170,7 +170,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_fragment_shader_barycentric Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_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_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
@@ -96,14 +96,14 @@
 -- Up to three methods are available to the application to change the
 -- fragment shading rate:
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-pipeline>,
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-fragment-shading-rate-pipeline>,
 --     which allows the specification of a rate per-draw.
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-primitive>,
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-fragment-shading-rate-primitive>,
 --     which allows the specification of a rate per primitive, specified
 --     during shading.
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment>,
+-- -   <https://registry.khronos.org/vulkan/specs/latest/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.
 --
@@ -117,7 +117,7 @@
 --
 -- This extension also adds support for the @SPV_KHR_fragment_shading_rate@
 -- extension which enables setting the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-primitive primitive fragment shading rate>,
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -130,7 +130,8 @@
 --
 -- -   'PhysicalDeviceFragmentShadingRateKHR'
 --
--- -   Extending 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo':
+-- -   Extending
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo':
 --
 --     -   'PipelineFragmentShadingRateStateCreateInfoKHR'
 --
@@ -255,7 +256,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_fragment_shading_rate Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -380,11 +381,11 @@
 --
 -- This command sets the pipeline fragment shading rate and combiner
 -- operation for subsequent drawing commands when drawing using
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-objects shader objects>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader objects>,
 -- or when the graphics pipeline is created with
 -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
 -- set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
 -- Otherwise, this state is specified by the
 -- 'PipelineFragmentShadingRateStateCreateInfoKHR' values used to create
 -- the currently active pipeline.
@@ -393,37 +394,37 @@
 --
 -- -   #VUID-vkCmdSetFragmentShadingRateKHR-pipelineFragmentShadingRate-04507#
 --     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate>
 --     feature is not enabled, @pFragmentSize->width@ /must/ be @1@
 --
 -- -   #VUID-vkCmdSetFragmentShadingRateKHR-pipelineFragmentShadingRate-04508#
 --     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate>
 --     feature is not enabled, @pFragmentSize->height@ /must/ be @1@
 --
 -- -   #VUID-vkCmdSetFragmentShadingRateKHR-pipelineFragmentShadingRate-04509#
 --     One of the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate>,
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-primitiveFragmentShadingRate primitiveFragmentShadingRate>,
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate>,
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-primitiveFragmentShadingRate primitiveFragmentShadingRate>,
 --     or
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate>
 --     features /must/ be enabled
 --
 -- -   #VUID-vkCmdSetFragmentShadingRateKHR-primitiveFragmentShadingRate-04510#
 --     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-primitiveFragmentShadingRate primitiveFragmentShadingRate>
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate>
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-fragmentShadingRateNonTrivialCombinerOps fragmentSizeNonTrivialCombinerOps>
+--     <https://registry.khronos.org/vulkan/specs/latest/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'
@@ -466,7 +467,8 @@
 --
 -- -   #VUID-vkCmdSetFragmentShadingRateKHR-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdSetFragmentShadingRateKHR-videocoding# This command
 --     /must/ only be called outside of a video coding scope
@@ -485,10 +487,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
 -- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdSetFragmentShadingRateKHR is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_fragment_shading_rate VK_KHR_fragment_shading_rate>,
@@ -505,12 +512,12 @@
                                 ("fragmentSize" ::: Extent2D)
                              -> -- | @combinerOps@ specifies a 'FragmentShadingRateCombinerOpKHR' determining
                                 -- how the
-                                -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-pipeline pipeline>,
-                                -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-primitive primitive>,
+                                -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-fragment-shading-rate-pipeline pipeline>,
+                                -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-fragment-shading-rate-primitive primitive>,
                                 -- and
-                                -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment attachment shading rates>
+                                -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-fragment-shading-rate-attachment attachment shading rates>
                                 -- are
-                                -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-combining combined>
+                                -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-fragment-shading-rate-combining combined>
                                 -- for fragments generated by subsequent drawing commands.
                                 ("combinerOps" ::: (FragmentShadingRateCombinerOpKHR, FragmentShadingRateCombinerOpKHR))
                              -> io ()
@@ -568,7 +575,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxFragmentSize maxFragmentSize.width>.
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxFragmentSize maxFragmentSize.width>.
 --
 -- -   The value of @fragmentSize.width@ /must/ be greater than or equal to
 --     @1@.
@@ -576,7 +583,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxFragmentSize maxFragmentSize.height>.
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxFragmentSize maxFragmentSize.height>.
 --
 -- -   The value of @fragmentSize.height@ /must/ be greater than or equal
 --     to @1@.
@@ -585,12 +592,12 @@
 --
 -- -   The highest sample count in @sampleCounts@ /must/ be less than or
 --     equal to
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxFragmentShadingRateRasterizationSamples maxFragmentShadingRateRasterizationSamples>.
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxFragmentShadingRateCoverageSamples maxFragmentShadingRateCoverageSamples>.
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxFragmentShadingRateCoverageSamples maxFragmentShadingRateCoverageSamples>.
 --
 -- Implementations /must/ support at least the following shading rates:
 --
@@ -609,7 +616,7 @@
 -- +--------------------------------------------------------------+-----------------------------------+
 --
 -- If
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-framebufferColorSampleCounts framebufferColorSampleCounts>,
+-- <https://registry.khronos.org/vulkan/specs/latest/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'.
@@ -655,14 +662,18 @@
 --
 -- [<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'
 --
+--     -   '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_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_fragment_shading_rate VK_KHR_fragment_shading_rate>,
@@ -736,7 +747,7 @@
 --     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED',
 --     @shadingRateAttachmentTexelSize.width@ /must/ be less than or equal
 --     to
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxFragmentShadingRateAttachmentTexelSize maxFragmentShadingRateAttachmentTexelSize.width>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxFragmentShadingRateAttachmentTexelSize maxFragmentShadingRateAttachmentTexelSize.width>
 --
 -- -   #VUID-VkFragmentShadingRateAttachmentInfoKHR-pFragmentShadingRateAttachment-04527#
 --     If @pFragmentShadingRateAttachment@ is not @NULL@ and its
@@ -744,7 +755,7 @@
 --     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED',
 --     @shadingRateAttachmentTexelSize.width@ /must/ be greater than or
 --     equal to
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-minFragmentShadingRateAttachmentTexelSize minFragmentShadingRateAttachmentTexelSize.width>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-minFragmentShadingRateAttachmentTexelSize minFragmentShadingRateAttachmentTexelSize.width>
 --
 -- -   #VUID-VkFragmentShadingRateAttachmentInfoKHR-pFragmentShadingRateAttachment-04528#
 --     If @pFragmentShadingRateAttachment@ is not @NULL@ and its
@@ -759,7 +770,7 @@
 --     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED',
 --     @shadingRateAttachmentTexelSize.height@ /must/ be less than or equal
 --     to
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxFragmentShadingRateAttachmentTexelSize maxFragmentShadingRateAttachmentTexelSize.height>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxFragmentShadingRateAttachmentTexelSize maxFragmentShadingRateAttachmentTexelSize.height>
 --
 -- -   #VUID-VkFragmentShadingRateAttachmentInfoKHR-pFragmentShadingRateAttachment-04530#
 --     If @pFragmentShadingRateAttachment@ is not @NULL@ and its
@@ -767,7 +778,7 @@
 --     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED',
 --     @shadingRateAttachmentTexelSize.height@ /must/ be greater than or
 --     equal to
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-minFragmentShadingRateAttachmentTexelSize minFragmentShadingRateAttachmentTexelSize.height>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-minFragmentShadingRateAttachmentTexelSize minFragmentShadingRateAttachmentTexelSize.height>
 --
 -- -   #VUID-VkFragmentShadingRateAttachmentInfoKHR-pFragmentShadingRateAttachment-04531#
 --     If @pFragmentShadingRateAttachment@ is not @NULL@ and its
@@ -776,7 +787,7 @@
 --     @shadingRateAttachmentTexelSize.width@ and
 --     @shadingRateAttachmentTexelSize.height@ /must/ be less than or equal
 --     to
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxFragmentShadingRateAttachmentTexelSizeAspectRatio maxFragmentShadingRateAttachmentTexelSizeAspectRatio>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxFragmentShadingRateAttachmentTexelSizeAspectRatio maxFragmentShadingRateAttachmentTexelSizeAspectRatio>
 --
 -- -   #VUID-VkFragmentShadingRateAttachmentInfoKHR-pFragmentShadingRateAttachment-04532#
 --     If @pFragmentShadingRateAttachment@ is not @NULL@ and its
@@ -785,7 +796,7 @@
 --     @shadingRateAttachmentTexelSize.height@ and
 --     @shadingRateAttachmentTexelSize.width@ /must/ be less than or equal
 --     to
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxFragmentShadingRateAttachmentTexelSizeAspectRatio maxFragmentShadingRateAttachmentTexelSizeAspectRatio>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxFragmentShadingRateAttachmentTexelSizeAspectRatio maxFragmentShadingRateAttachmentTexelSizeAspectRatio>
 --
 -- == Valid Usage (Implicit)
 --
@@ -800,6 +811,12 @@
 --     'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.AttachmentReference2'
 --     structure
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.SubpassDescription2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_fragment_shading_rate VK_KHR_fragment_shading_rate>,
@@ -862,7 +879,7 @@
 -- = Description
 --
 -- If the @pNext@ chain of
--- 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo' includes a
+-- 'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo' includes a
 -- 'PipelineFragmentShadingRateStateCreateInfoKHR' structure, then that
 -- structure includes parameters controlling the pipeline fragment shading
 -- rate.
@@ -871,8 +888,12 @@
 -- equal to (1,1), and both elements of @combinerOps@ are considered to be
 -- equal to 'FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_fragment_shading_rate VK_KHR_fragment_shading_rate>,
@@ -886,12 +907,12 @@
     fragmentSize :: Extent2D
   , -- | @combinerOps@ specifies a 'FragmentShadingRateCombinerOpKHR' value
     -- determining how the
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-pipeline pipeline>,
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-primitive primitive>,
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-fragment-shading-rate-pipeline pipeline>,
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-fragment-shading-rate-primitive primitive>,
     -- and
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment attachment shading rates>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-fragment-shading-rate-attachment attachment shading rates>
     -- are
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-combining combined>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-fragment-shading-rate-combining combined>
     -- for fragments generated by drawing commands using the created pipeline.
     combinerOps :: (FragmentShadingRateCombinerOpKHR, FragmentShadingRateCombinerOpKHR)
   }
@@ -962,12 +983,22 @@
 -- structure passed to
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
 -- it is filled in to indicate whether each corresponding feature is
--- supported. 'PhysicalDeviceFragmentShadingRateFeaturesKHR' /can/ also be
--- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceFragmentShadingRateFeaturesKHR', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_fragment_shading_rate VK_KHR_fragment_shading_rate>,
@@ -976,15 +1007,15 @@
 data PhysicalDeviceFragmentShadingRateFeaturesKHR = PhysicalDeviceFragmentShadingRateFeaturesKHR
   { -- | #features-pipelineFragmentShadingRate# @pipelineFragmentShadingRate@
     -- indicates that the implementation supports the
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-pipeline pipeline fragment shading rate>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-fragment-shading-rate-pipeline pipeline fragment shading rate>.
     pipelineFragmentShadingRate :: Bool
   , -- | #features-primitiveFragmentShadingRate# @primitiveFragmentShadingRate@
     -- indicates that the implementation supports the
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-primitive primitive fragment shading rate>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-fragment-shading-rate-primitive primitive fragment shading rate>.
     primitiveFragmentShadingRate :: Bool
   , -- | #features-attachmentFragmentShadingRate# @attachmentFragmentShadingRate@
     -- indicates that the implementation supports the
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment attachment fragment shading rate>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-fragment-shading-rate-attachment attachment fragment shading rate>.
     attachmentFragmentShadingRate :: Bool
   }
   deriving (Typeable, Eq)
@@ -1046,7 +1077,7 @@
 -- Some implementations inadvertently implemented an addition in linear
 -- space due to unclear requirements originating outside of this
 -- specification. This resulted in
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-fragmentShadingRateStrictMultiplyCombiner fragmentShadingRateStrictMultiplyCombiner>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -1063,10 +1094,14 @@
 -- property.
 --
 -- These properties are related to
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate fragment shading rates>.
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-fragment-shading-rate fragment shading rates>.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_fragment_shading_rate VK_KHR_fragment_shading_rate>,
@@ -1082,7 +1117,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate>
     -- feature is not supported.
     minFragmentShadingRateAttachmentTexelSize :: Extent2D
   , -- | #limits-maxFragmentShadingRateAttachmentTexelSize#
@@ -1092,7 +1127,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate>
     -- feature is not supported.
     maxFragmentShadingRateAttachmentTexelSize :: Extent2D
   , -- | #limits-maxFragmentShadingRateAttachmentTexelSizeAspectRatio#
@@ -1106,23 +1141,23 @@
     -- @maxFragmentShadingRateAttachmentTexelSize.height@ \/
     -- @minFragmentShadingRateAttachmentTexelSize.width@). It /must/ be 0 if
     -- the
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate>
     -- feature is not supported.
     maxFragmentShadingRateAttachmentTexelSizeAspectRatio :: Word32
   , -- | #limits-primitiveFragmentShadingRateWithMultipleViewports#
     -- @primitiveFragmentShadingRateWithMultipleViewports@ specifies whether
     -- the
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-primitive primitive fragment shading rate>
+    -- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-shaderOutputViewportIndex shaderOutputViewportIndex>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-shaderOutputViewportIndex shaderOutputViewportIndex>
     -- feature, the @VK_EXT_shader_viewport_index_layer@ extension, or the
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-geometryShader geometryShader>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-geometryShader geometryShader>
     -- feature is not supported, or if the
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-primitiveFragmentShadingRate primitiveFragmentShadingRate>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-primitiveFragmentShadingRate primitiveFragmentShadingRate>
     -- feature is not supported.
     primitiveFragmentShadingRateWithMultipleViewports :: Bool
   , -- | #limits-layeredShadingRateAttachments# @layeredShadingRateAttachments@
@@ -1133,13 +1168,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-multiview multiview>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-multiview multiview>
     -- feature, the
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-shaderOutputViewportIndex shaderOutputViewportIndex>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-shaderOutputViewportIndex shaderOutputViewportIndex>
     -- feature, the @VK_EXT_shader_viewport_index_layer@ extension, or the
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-geometryShader geometryShader>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-geometryShader geometryShader>
     -- feature is not supported, or if the
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate>
     -- feature is not supported.
     layeredShadingRateAttachments :: Bool
   , -- | #limits-fragmentShadingRateNonTrivialCombinerOps#
@@ -1148,9 +1183,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-primitiveFragmentShadingRate primitiveFragmentShadingRate>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-primitiveFragmentShadingRate primitiveFragmentShadingRate>
     -- or
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate>
     -- feature is supported.
     fragmentShadingRateNonTrivialCombinerOps :: Bool
   , -- | #limits-maxFragmentSize# @maxFragmentSize@ indicates the maximum
@@ -1193,7 +1228,7 @@
   , -- | #limits-fragmentShadingRateWithSampleMask#
     -- @fragmentShadingRateWithSampleMask@ specifies whether the implementation
     -- supports setting valid bits of
-    -- 'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@pSampleMask@
+    -- 'Vulkan.Core10.GraphicsPipeline.PipelineMultisampleStateCreateInfo'::@pSampleMask@
     -- to @0@ for multi-pixel fragments. If this value is
     -- 'Vulkan.Core10.FundamentalTypes.FALSE', zeroing valid bits in the sample
     -- mask will clamp the fragment shading rate to (1,1).
@@ -1207,32 +1242,32 @@
     fragmentShadingRateWithShaderSampleMask :: Bool
   , -- | #limits-fragmentShadingRateWithConservativeRasterization#
     -- @fragmentShadingRateWithConservativeRasterization@ specifies whether
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-conservativeraster conservative rasterization>
+    -- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-conservativeraster conservative rasterization>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-conservativeraster conservative rasterization>
     -- will clamp the fragment shading rate to (1,1).
     fragmentShadingRateWithConservativeRasterization :: Bool
   , -- | #limits-fragmentShadingRateWithFragmentShaderInterlock#
     -- @fragmentShadingRateWithFragmentShaderInterlock@ specifies whether
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-shader-interlock fragment shader interlock>
+    -- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-shader-interlock fragment shader interlock>
+    -- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-samplelocations custom sample locations>
+    -- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-samplelocations custom sample locations>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-samplelocations custom sample locations>
     -- will clamp the fragment shading rate to (1,1).
     fragmentShadingRateWithCustomSampleLocations :: Bool
   , -- | #limits-fragmentShadingRateStrictMultiplyCombiner#
@@ -1436,7 +1471,7 @@
 -- This structure can be included in the @pNext@ chain of
 -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo' to
 -- define a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment>.
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -1452,8 +1487,9 @@
 --
 -- -   #VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-imageView-06148#
 --     If @imageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', it
---     /must/ have been created with
+--     /must/ have been created with the
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
+--     usage flag set
 --
 -- -   #VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-imageView-06149#
 --     If @imageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
@@ -1464,13 +1500,13 @@
 --     If @imageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
 --     @shadingRateAttachmentTexelSize.width@ /must/ be less than or equal
 --     to
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxFragmentShadingRateAttachmentTexelSize maxFragmentShadingRateAttachmentTexelSize.width>
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-minFragmentShadingRateAttachmentTexelSize minFragmentShadingRateAttachmentTexelSize.width>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-minFragmentShadingRateAttachmentTexelSize minFragmentShadingRateAttachmentTexelSize.width>
 --
 -- -   #VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-imageView-06152#
 --     If @imageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
@@ -1481,27 +1517,27 @@
 --     If @imageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
 --     @shadingRateAttachmentTexelSize.height@ /must/ be less than or equal
 --     to
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxFragmentShadingRateAttachmentTexelSize maxFragmentShadingRateAttachmentTexelSize.height>
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-minFragmentShadingRateAttachmentTexelSize minFragmentShadingRateAttachmentTexelSize.height>
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxFragmentShadingRateAttachmentTexelSizeAspectRatio maxFragmentShadingRateAttachmentTexelSizeAspectRatio>
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxFragmentShadingRateAttachmentTexelSizeAspectRatio maxFragmentShadingRateAttachmentTexelSizeAspectRatio>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxFragmentShadingRateAttachmentTexelSizeAspectRatio maxFragmentShadingRateAttachmentTexelSizeAspectRatio>
 --
 -- == Valid Usage (Implicit)
 --
@@ -1518,6 +1554,12 @@
 --     @imageLayout@ /must/ be a valid
 --     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' value
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering VK_KHR_dynamic_rendering>,
@@ -1588,16 +1630,31 @@
 --
 -- = Description
 --
+-- -   'FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR' specifies a combiner
+--     operation of combine(Axy,Bxy) = Axy.
+--
+-- -   'FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR' specifies a combiner
+--     operation of combine(Axy,Bxy) = Bxy.
+--
+-- -   'FRAGMENT_SHADING_RATE_COMBINER_OP_MIN_KHR' specifies a combiner
+--     operation of combine(Axy,Bxy) = min(Axy,Bxy).
+--
+-- -   'FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_KHR' specifies a combiner
+--     operation of combine(Axy,Bxy) = max(Axy,Bxy).
+--
+-- -   'FRAGMENT_SHADING_RATE_COMBINER_OP_MUL_KHR' specifies a combiner
+--     operation of combine(Axy,Bxy) = Axy*Bxy.
+--
 -- where combine(Axy,Bxy) is the combine operation, and Axy and Bxy are the
 -- inputs to the operation.
 --
 -- If
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-fragmentShadingRateStrictMultiplyCombiner fragmentShadingRateStrictMultiplyCombiner>
+-- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-fragmentShadingRateStrictMultiplyCombiner fragmentShadingRateStrictMultiplyCombiner>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-fragmentShadingRateStrictMultiplyCombiner fragmentShadingRateStrictMultiplyCombiner>
 -- for more information.
 --
 -- These operations are performed in a component-wise fashion.
@@ -1612,24 +1669,19 @@
 newtype FragmentShadingRateCombinerOpKHR = FragmentShadingRateCombinerOpKHR Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR' specifies a combiner
--- operation of combine(Axy,Bxy) = Axy.
+-- No documentation found for Nested "VkFragmentShadingRateCombinerOpKHR" "VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR"
 pattern FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR = FragmentShadingRateCombinerOpKHR 0
 
--- | 'FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR' specifies a combiner
--- operation of combine(Axy,Bxy) = Bxy.
+-- No documentation found for Nested "VkFragmentShadingRateCombinerOpKHR" "VK_FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR"
 pattern FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR = FragmentShadingRateCombinerOpKHR 1
 
--- | 'FRAGMENT_SHADING_RATE_COMBINER_OP_MIN_KHR' specifies a combiner
--- operation of combine(Axy,Bxy) = min(Axy,Bxy).
+-- No documentation found for Nested "VkFragmentShadingRateCombinerOpKHR" "VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MIN_KHR"
 pattern FRAGMENT_SHADING_RATE_COMBINER_OP_MIN_KHR = FragmentShadingRateCombinerOpKHR 2
 
--- | 'FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_KHR' specifies a combiner
--- operation of combine(Axy,Bxy) = max(Axy,Bxy).
+-- No documentation found for Nested "VkFragmentShadingRateCombinerOpKHR" "VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_KHR"
 pattern FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_KHR = FragmentShadingRateCombinerOpKHR 3
 
--- | 'FRAGMENT_SHADING_RATE_COMBINER_OP_MUL_KHR' specifies a combiner
--- operation of combine(Axy,Bxy) = Axy*Bxy.
+-- No documentation found for Nested "VkFragmentShadingRateCombinerOpKHR" "VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MUL_KHR"
 pattern FRAGMENT_SHADING_RATE_COMBINER_OP_MUL_KHR = FragmentShadingRateCombinerOpKHR 4
 
 {-# COMPLETE
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
@@ -96,14 +96,14 @@
 -- Up to three methods are available to the application to change the
 -- fragment shading rate:
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-pipeline>,
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-fragment-shading-rate-pipeline>,
 --     which allows the specification of a rate per-draw.
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-primitive>,
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-fragment-shading-rate-primitive>,
 --     which allows the specification of a rate per primitive, specified
 --     during shading.
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment>,
+-- -   <https://registry.khronos.org/vulkan/specs/latest/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.
 --
@@ -117,7 +117,7 @@
 --
 -- This extension also adds support for the @SPV_KHR_fragment_shading_rate@
 -- extension which enables setting the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-primitive primitive fragment shading rate>,
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -130,7 +130,8 @@
 --
 -- -   'PhysicalDeviceFragmentShadingRateKHR'
 --
--- -   Extending 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo':
+-- -   Extending
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo':
 --
 --     -   'PipelineFragmentShadingRateStateCreateInfoKHR'
 --
@@ -255,7 +256,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_fragment_shading_rate Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -138,7 +138,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_get_display_properties2 Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -291,16 +291,20 @@
 --
 -- [<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'
 --
+--     -   '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_DEVICE_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_display_properties2 VK_KHR_get_display_properties2>,
@@ -371,16 +375,20 @@
 --
 -- [<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'
 --
+--     -   '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_DEVICE_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_display_properties2 VK_KHR_get_display_properties2>,
@@ -456,16 +464,20 @@
 --
 -- [<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'
 --
+--     -   '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_DEVICE_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_display_properties2 VK_KHR_get_display_properties2>,
@@ -533,10 +545,14 @@
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_display_properties2 VK_KHR_get_display_properties2>,
@@ -689,7 +705,7 @@
 --     'Vulkan.Extensions.VK_NV_display_stereo.DisplayModeStereoPropertiesNV'
 --
 -- -   #VUID-VkDisplayModeProperties2KHR-sType-unique# The @sType@ value of
---     each struct in the @pNext@ chain /must/ be unique
+--     each structure in the @pNext@ chain /must/ be unique
 --
 -- = See Also
 --
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
@@ -138,7 +138,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_get_display_properties2 Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -119,7 +119,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_get_memory_requirements2 Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
deleted file mode 100644
--- a/src/Vulkan/Extensions/VK_KHR_get_memory_requirements2.hs-boot
+++ /dev/null
@@ -1,132 +0,0 @@
-{-# language CPP #-}
--- | = Name
---
--- VK_KHR_get_memory_requirements2 - device extension
---
--- = VK_KHR_get_memory_requirements2
---
--- [__Name String__]
---     @VK_KHR_get_memory_requirements2@
---
--- [__Extension Type__]
---     Device extension
---
--- [__Registered Extension Number__]
---     147
---
--- [__Revision__]
---     1
---
--- [__Ratification Status__]
---     Ratified
---
--- [__Extension and Version Dependencies__]
---     None
---
--- [__Deprecation State__]
---
---     -   /Promoted/ to
---         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1-promotions Vulkan 1.1>
---
--- [__Contact__]
---
---     -   Faith Ekstrand
---         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_get_memory_requirements2] @gfxstrand%0A*Here describe the issue or question you have about the VK_KHR_get_memory_requirements2 extension* >
---
--- == Other Extension Metadata
---
--- [__Last Modified Date__]
---     2017-09-05
---
--- [__IP Status__]
---     No known IP claims.
---
--- [__Contributors__]
---
---     -   Faith Ekstrand, Intel
---
---     -   Jeff Bolz, NVIDIA
---
---     -   Jesse Hall, Google
---
--- == Description
---
--- This extension provides new queries for memory requirements of images
--- and buffers that can be easily extended by other extensions, without
--- introducing any additional commands. The Vulkan 1.0
--- 'Vulkan.Core10.MemoryManagement.MemoryRequirements' and
--- 'Vulkan.Core10.SparseResourceMemoryManagement.SparseImageMemoryRequirements'
--- structures do not include @sType@ and @pNext@ members. This extension
--- wraps them in new structures with these members, so an application can
--- query a chain of memory requirements structures by constructing the
--- chain and letting the implementation fill them in. A new command is
--- added for each @vkGet*MemoryRequrements@ command in core Vulkan 1.0.
---
--- == Promotion to Vulkan 1.1
---
--- All functionality in this extension is included in core Vulkan 1.1, with
--- the KHR suffix omitted. The original type, enum, and command names are
--- still available as aliases of the core functionality.
---
--- == New Commands
---
--- -   'getBufferMemoryRequirements2KHR'
---
--- -   'getImageMemoryRequirements2KHR'
---
--- -   'getImageSparseMemoryRequirements2KHR'
---
--- == New Structures
---
--- -   'BufferMemoryRequirementsInfo2KHR'
---
--- -   'ImageMemoryRequirementsInfo2KHR'
---
--- -   'ImageSparseMemoryRequirementsInfo2KHR'
---
--- -   'MemoryRequirements2KHR'
---
--- -   'SparseImageMemoryRequirements2KHR'
---
--- == New Enum Constants
---
--- -   'KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME'
---
--- -   'KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION'
---
--- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
---
---     -   'STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR'
---
---     -   'STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR'
---
---     -   'STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR'
---
---     -   'STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR'
---
---     -   'STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR'
---
--- == Version History
---
--- -   Revision 1, 2017-03-23 (Faith Ekstrand)
---
---     -   Internal revisions
---
--- == See Also
---
--- No cross-references are available
---
--- == Document Notes
---
--- For more information, see the
--- <https://registry.khronos.org/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.
-module Vulkan.Extensions.VK_KHR_get_memory_requirements2  (MemoryRequirements2KHR) where
-
-
-import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2 (MemoryRequirements2)
--- No documentation found for TopLevel "VkMemoryRequirements2KHR"
-type MemoryRequirements2KHR = MemoryRequirements2
-
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
@@ -200,7 +200,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -134,7 +134,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_get_surface_capabilities2 Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -214,6 +214,7 @@
 import Vulkan.Core10.Handles (PhysicalDevice_T)
 import Vulkan.CStruct.Extends (PokeChain)
 import Vulkan.CStruct.Extends (PokeChain(..))
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_present_timing (PresentTimingSurfaceCapabilitiesEXT)
 import Vulkan.Core10.Enums.Result (Result)
 import Vulkan.Core10.Enums.Result (Result(..))
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_shared_presentable_image (SharedPresentSurfaceCapabilitiesKHR)
@@ -222,13 +223,15 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_full_screen_exclusive (SurfaceCapabilitiesFullScreenExclusiveEXT)
 import Vulkan.Extensions.VK_KHR_surface (SurfaceCapabilitiesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_present_barrier (SurfaceCapabilitiesPresentBarrierNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_present_id2 (SurfaceCapabilitiesPresentId2KHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_present_wait2 (SurfaceCapabilitiesPresentWait2KHR)
 import Vulkan.Extensions.VK_KHR_surface (SurfaceFormatKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_full_screen_exclusive (SurfaceFullScreenExclusiveInfoEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_full_screen_exclusive (SurfaceFullScreenExclusiveWin32InfoEXT)
 import Vulkan.Extensions.Handles (SurfaceKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_surface_maintenance1 (SurfacePresentModeCompatibilityEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_surface_maintenance1 (SurfacePresentModeEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_surface_maintenance1 (SurfacePresentScalingCapabilitiesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_surface_maintenance1 (SurfacePresentModeCompatibilityKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_surface_maintenance1 (SurfacePresentModeKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_surface_maintenance1 (SurfacePresentScalingCapabilitiesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_surface_protected_capabilities (SurfaceProtectedCapabilitiesKHR)
 import Vulkan.Exception (VulkanException(..))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR))
@@ -283,27 +286,27 @@
 --     structure /must/ be included in the @pNext@ chain of @pSurfaceInfo@
 --
 -- -   #VUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-pNext-07776# If a
---     'Vulkan.Extensions.VK_EXT_surface_maintenance1.SurfacePresentModeCompatibilityEXT'
+--     'Vulkan.Extensions.VK_KHR_surface_maintenance1.SurfacePresentModeCompatibilityKHR'
 --     structure is included in the @pNext@ chain of
 --     @pSurfaceCapabilities@, a
---     'Vulkan.Extensions.VK_EXT_surface_maintenance1.SurfacePresentModeEXT'
+--     'Vulkan.Extensions.VK_KHR_surface_maintenance1.SurfacePresentModeKHR'
 --     structure /must/ be included in the @pNext@ chain of @pSurfaceInfo@
 --
 -- -   #VUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-pNext-07777# If a
---     'Vulkan.Extensions.VK_EXT_surface_maintenance1.SurfacePresentScalingCapabilitiesEXT'
+--     'Vulkan.Extensions.VK_KHR_surface_maintenance1.SurfacePresentScalingCapabilitiesKHR'
 --     structure is included in the @pNext@ chain of
 --     @pSurfaceCapabilities@, a
---     'Vulkan.Extensions.VK_EXT_surface_maintenance1.SurfacePresentModeEXT'
+--     'Vulkan.Extensions.VK_KHR_surface_maintenance1.SurfacePresentModeKHR'
 --     structure /must/ be included in the @pNext@ chain of @pSurfaceInfo@
 --
 -- -   #VUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-pNext-07778# If a
---     'Vulkan.Extensions.VK_EXT_surface_maintenance1.SurfacePresentModeCompatibilityEXT'
+--     'Vulkan.Extensions.VK_KHR_surface_maintenance1.SurfacePresentModeCompatibilityKHR'
 --     structure is included in the @pNext@ chain of
 --     @pSurfaceCapabilities@, @pSurfaceInfo->surface@ /must/ be a valid
 --     'Vulkan.Extensions.Handles.SurfaceKHR' handle
 --
 -- -   #VUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-pNext-07779# If a
---     'Vulkan.Extensions.VK_EXT_surface_maintenance1.SurfacePresentScalingCapabilitiesEXT'
+--     'Vulkan.Extensions.VK_KHR_surface_maintenance1.SurfacePresentScalingCapabilitiesKHR'
 --     structure is included in the @pNext@ chain of
 --     @pSurfaceCapabilities@, @pSurfaceInfo->surface@ /must/ be a valid
 --     'Vulkan.Extensions.Handles.SurfaceKHR' handle
@@ -330,12 +333,16 @@
 --
 -- [<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_OUT_OF_HOST_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_SURFACE_LOST_KHR'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_surface_capabilities2 VK_KHR_get_surface_capabilities2>,
@@ -440,18 +447,22 @@
 --
 -- [<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.SUCCESS'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_SURFACE_LOST_KHR'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_surface_capabilities2 VK_KHR_get_surface_capabilities2>,
@@ -555,10 +566,10 @@
 --     'Vulkan.Extensions.VK_EXT_full_screen_exclusive.SurfaceFullScreenExclusiveInfoEXT',
 --     'Vulkan.Extensions.VK_EXT_full_screen_exclusive.SurfaceFullScreenExclusiveWin32InfoEXT',
 --     or
---     'Vulkan.Extensions.VK_EXT_surface_maintenance1.SurfacePresentModeEXT'
+--     'Vulkan.Extensions.VK_KHR_surface_maintenance1.SurfacePresentModeKHR'
 --
 -- -   #VUID-VkPhysicalDeviceSurfaceInfo2KHR-sType-unique# The @sType@
---     value of each struct in the @pNext@ chain /must/ be unique
+--     value of each structure in the @pNext@ chain /must/ be unique
 --
 -- = See Also
 --
@@ -587,7 +598,7 @@
   getNext PhysicalDeviceSurfaceInfo2KHR{..} = next
   extends :: forall e b proxy. Typeable e => proxy e -> (Extends PhysicalDeviceSurfaceInfo2KHR e => b) -> Maybe b
   extends _ f
-    | Just Refl <- eqT @e @SurfacePresentModeEXT = Just f
+    | Just Refl <- eqT @e @SurfacePresentModeKHR = Just f
     | Just Refl <- eqT @e @SurfaceFullScreenExclusiveWin32InfoEXT = Just f
     | Just Refl <- eqT @e @SurfaceFullScreenExclusiveInfoEXT = Just f
     | otherwise = Nothing
@@ -654,16 +665,19 @@
 --     either @NULL@ or a pointer to a valid instance of
 --     'Vulkan.Extensions.VK_AMD_display_native_hdr.DisplayNativeHdrSurfaceCapabilitiesAMD',
 --     'Vulkan.Extensions.VK_NV_low_latency2.LatencySurfaceCapabilitiesNV',
+--     'Vulkan.Extensions.VK_EXT_present_timing.PresentTimingSurfaceCapabilitiesEXT',
 --     'Vulkan.Extensions.VK_KHR_shared_presentable_image.SharedPresentSurfaceCapabilitiesKHR',
 --     'Vulkan.Extensions.VK_EXT_full_screen_exclusive.SurfaceCapabilitiesFullScreenExclusiveEXT',
 --     'Vulkan.Extensions.VK_NV_present_barrier.SurfaceCapabilitiesPresentBarrierNV',
---     'Vulkan.Extensions.VK_EXT_surface_maintenance1.SurfacePresentModeCompatibilityEXT',
---     'Vulkan.Extensions.VK_EXT_surface_maintenance1.SurfacePresentScalingCapabilitiesEXT',
+--     'Vulkan.Extensions.VK_KHR_present_id2.SurfaceCapabilitiesPresentId2KHR',
+--     'Vulkan.Extensions.VK_KHR_present_wait2.SurfaceCapabilitiesPresentWait2KHR',
+--     'Vulkan.Extensions.VK_KHR_surface_maintenance1.SurfacePresentModeCompatibilityKHR',
+--     'Vulkan.Extensions.VK_KHR_surface_maintenance1.SurfacePresentScalingCapabilitiesKHR',
 --     or
 --     'Vulkan.Extensions.VK_KHR_surface_protected_capabilities.SurfaceProtectedCapabilitiesKHR'
 --
 -- -   #VUID-VkSurfaceCapabilities2KHR-sType-unique# The @sType@ value of
---     each struct in the @pNext@ chain /must/ be unique
+--     each structure in the @pNext@ chain /must/ be unique
 --
 -- = See Also
 --
@@ -692,13 +706,16 @@
   extends :: forall e b proxy. Typeable e => proxy e -> (Extends SurfaceCapabilities2KHR e => b) -> Maybe b
   extends _ f
     | Just Refl <- eqT @e @LatencySurfaceCapabilitiesNV = Just f
-    | Just Refl <- eqT @e @SurfacePresentModeCompatibilityEXT = Just f
-    | Just Refl <- eqT @e @SurfacePresentScalingCapabilitiesEXT = Just f
+    | Just Refl <- eqT @e @SurfacePresentModeCompatibilityKHR = Just f
+    | Just Refl <- eqT @e @SurfacePresentScalingCapabilitiesKHR = Just f
+    | Just Refl <- eqT @e @SurfaceCapabilitiesPresentWait2KHR = Just f
+    | Just Refl <- eqT @e @SurfaceCapabilitiesPresentId2KHR = Just f
     | Just Refl <- eqT @e @SurfaceCapabilitiesPresentBarrierNV = Just f
     | Just Refl <- eqT @e @SurfaceCapabilitiesFullScreenExclusiveEXT = Just f
     | Just Refl <- eqT @e @SurfaceProtectedCapabilitiesKHR = Just f
     | Just Refl <- eqT @e @SharedPresentSurfaceCapabilitiesKHR = Just f
     | Just Refl <- eqT @e @DisplayNativeHdrSurfaceCapabilitiesAMD = Just f
+    | Just Refl <- eqT @e @PresentTimingSurfaceCapabilitiesEXT = Just f
     | otherwise = Nothing
 
 instance ( Extendss SurfaceCapabilities2KHR es
@@ -740,7 +757,7 @@
 -- = Description
 --
 -- If the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-imageCompressionControlSwapchain imageCompressionControlSwapchain>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-imageCompressionControlSwapchain imageCompressionControlSwapchain>
 -- feature is supported and a
 -- 'Vulkan.Extensions.VK_EXT_image_compression_control.ImageCompressionPropertiesEXT'
 -- structure is included in the @pNext@ chain of this structure, then it
@@ -750,8 +767,8 @@
 -- == Valid Usage
 --
 -- -   #VUID-VkSurfaceFormat2KHR-pNext-06750# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-imageCompressionControlSwapchain imageCompressionControlSwapchain>
---     feature is not enabled, the @pNext@ chain /must/ not include an
+--     @VK_EXT_image_compression_control_swapchain@ extension is not
+--     supported, the @pNext@ chain /must/ not include an
 --     'Vulkan.Extensions.VK_EXT_image_compression_control.ImageCompressionPropertiesEXT'
 --     structure
 --
@@ -765,7 +782,7 @@
 --     'Vulkan.Extensions.VK_EXT_image_compression_control.ImageCompressionPropertiesEXT'
 --
 -- -   #VUID-VkSurfaceFormat2KHR-sType-unique# The @sType@ value of each
---     struct in the @pNext@ chain /must/ be unique
+--     structure in the @pNext@ chain /must/ be unique
 --
 -- = See Also
 --
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
@@ -134,7 +134,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_get_surface_capabilities2 Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
--- a/src/Vulkan/Extensions/VK_KHR_global_priority.hs
+++ b/src/Vulkan/Extensions/VK_KHR_global_priority.hs
@@ -25,6 +25,11 @@
 --     or
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
 --
+-- [__Deprecation State__]
+--
+--     -   /Promoted/ to
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.4-promotions Vulkan 1.4>
+--
 -- [__Contact__]
 --
 --     -   Tobias Hector
@@ -50,7 +55,7 @@
 -- 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'.
+-- 'Vulkan.Extensions.VK_EXT_global_priority.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
@@ -70,8 +75,8 @@
 -- 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.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.
 --
@@ -107,20 +112,37 @@
 --
 -- -   'KHR_GLOBAL_PRIORITY_SPEC_VERSION'
 --
--- -   'Vulkan.Core10.APIConstants.MAX_GLOBAL_PRIORITY_SIZE_KHR'
+-- -   'MAX_GLOBAL_PRIORITY_SIZE_KHR'
 --
+-- -   Extending
+--     'Vulkan.Core14.Enums.QueueGlobalPriority.QueueGlobalPriority':
+--
+--     -   'QUEUE_GLOBAL_PRIORITY_HIGH_KHR'
+--
+--     -   'QUEUE_GLOBAL_PRIORITY_LOW_KHR'
+--
+--     -   'QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR'
+--
+--     -   'QUEUE_GLOBAL_PRIORITY_REALTIME_KHR'
+--
 -- -   Extending 'Vulkan.Core10.Enums.Result.Result':
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_NOT_PERMITTED_KHR'
+--     -   'ERROR_NOT_PERMITTED_KHR'
 --
 -- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR'
+--     -   'STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR'
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR'
+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR'
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR'
+--     -   'STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR'
 --
+-- == Promotion to Vulkan 1.4
+--
+-- Functionality in this extension is included in core Vulkan 1.4 with the
+-- KHR suffix omitted. The original type, enum, and command names are still
+-- available as aliases of the core functionality.
+--
 -- == Issues
 --
 -- 1) Can we additionally query whether a caller is permitted to acquire a
@@ -154,386 +176,94 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_global_priority Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
-                                                                         , ..
-                                                                         )
+module Vulkan.Extensions.VK_KHR_global_priority  ( pattern STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR
+                                                 , pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR
+                                                 , pattern STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR
+                                                 , pattern ERROR_NOT_PERMITTED_KHR
+                                                 , pattern MAX_GLOBAL_PRIORITY_SIZE_KHR
+                                                 , pattern QUEUE_GLOBAL_PRIORITY_LOW_KHR
+                                                 , pattern QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR
+                                                 , pattern QUEUE_GLOBAL_PRIORITY_HIGH_KHR
+                                                 , pattern QUEUE_GLOBAL_PRIORITY_REALTIME_KHR
+                                                 , QueueGlobalPriorityKHR
+                                                 , DeviceQueueGlobalPriorityCreateInfoKHR
+                                                 , PhysicalDeviceGlobalPriorityQueryFeaturesKHR
+                                                 , QueueFamilyGlobalPriorityPropertiesKHR
                                                  , 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
+import Vulkan.Core14.Promoted_From_VK_KHR_global_priority (DeviceQueueGlobalPriorityCreateInfo)
+import Vulkan.Core14.Promoted_From_VK_KHR_global_priority (PhysicalDeviceGlobalPriorityQueryFeatures)
+import Vulkan.Core14.Promoted_From_VK_KHR_global_priority (QueueFamilyGlobalPriorityProperties)
+import Vulkan.Core14.Enums.QueueGlobalPriority (QueueGlobalPriority)
+import Vulkan.Core10.Enums.Result (Result(ERROR_NOT_PERMITTED))
+import Vulkan.Core10.APIConstants (pattern MAX_GLOBAL_PRIORITY_SIZE)
+import Vulkan.Core14.Enums.QueueGlobalPriority (QueueGlobalPriority(QUEUE_GLOBAL_PRIORITY_HIGH))
+import Vulkan.Core14.Enums.QueueGlobalPriority (QueueGlobalPriority(QUEUE_GLOBAL_PRIORITY_LOW))
+import Vulkan.Core14.Enums.QueueGlobalPriority (QueueGlobalPriority(QUEUE_GLOBAL_PRIORITY_MEDIUM))
+import Vulkan.Core14.Enums.QueueGlobalPriority (QueueGlobalPriority(QUEUE_GLOBAL_PRIORITY_REALTIME))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES))
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR"
+pattern STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR = STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO
 
 
--- 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_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES
 
 
--- 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_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR"
+pattern STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR = STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES
 
 
--- No documentation found for TopLevel "VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT"
-pattern QUEUE_GLOBAL_PRIORITY_REALTIME_EXT = QUEUE_GLOBAL_PRIORITY_REALTIME_KHR
+-- No documentation found for TopLevel "VK_ERROR_NOT_PERMITTED_KHR"
+pattern ERROR_NOT_PERMITTED_KHR = ERROR_NOT_PERMITTED
 
 
--- | VkDeviceQueueGlobalPriorityCreateInfoKHR - Specify a system wide
--- priority
---
--- = Description
---
--- Queues 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 these queues
-    -- as specified by 'QueueGlobalPriorityKHR'
-    --
-    -- #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
+-- No documentation found for TopLevel "VK_MAX_GLOBAL_PRIORITY_SIZE_KHR"
+pattern MAX_GLOBAL_PRIORITY_SIZE_KHR = MAX_GLOBAL_PRIORITY_SIZE
 
-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
+-- No documentation found for TopLevel "VK_QUEUE_GLOBAL_PRIORITY_LOW_KHR"
+pattern QUEUE_GLOBAL_PRIORITY_LOW_KHR = QUEUE_GLOBAL_PRIORITY_LOW
 
-instance Storable DeviceQueueGlobalPriorityCreateInfoKHR where
-  sizeOf ~_ = 24
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
 
-instance Zero DeviceQueueGlobalPriorityCreateInfoKHR where
-  zero = DeviceQueueGlobalPriorityCreateInfoKHR
-           zero
+-- No documentation found for TopLevel "VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR"
+pattern QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR = QUEUE_GLOBAL_PRIORITY_MEDIUM
 
 
--- | VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR - Structure describing
--- whether global priority query can be supported by an implementation
---
--- = Members
---
--- This structure describes the following feature:
---
--- = 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
+-- No documentation found for TopLevel "VK_QUEUE_GLOBAL_PRIORITY_HIGH_KHR"
+pattern QUEUE_GLOBAL_PRIORITY_HIGH_KHR = QUEUE_GLOBAL_PRIORITY_HIGH
 
-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)
+-- No documentation found for TopLevel "VK_QUEUE_GLOBAL_PRIORITY_REALTIME_KHR"
+pattern QUEUE_GLOBAL_PRIORITY_REALTIME_KHR = QUEUE_GLOBAL_PRIORITY_REALTIME
 
-instance Storable PhysicalDeviceGlobalPriorityQueryFeaturesKHR where
-  sizeOf ~_ = 24
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
 
-instance Zero PhysicalDeviceGlobalPriorityQueryFeaturesKHR where
-  zero = PhysicalDeviceGlobalPriorityQueryFeaturesKHR
-           zero
+-- No documentation found for TopLevel "VkQueueGlobalPriorityKHR"
+type QueueGlobalPriorityKHR = QueueGlobalPriority
 
 
--- | VkQueueFamilyGlobalPriorityPropertiesKHR - Return structure for queue
--- family global priority information query
---
--- = Description
---
--- If the 'QueueFamilyGlobalPriorityPropertiesKHR' structure is included in
--- the @pNext@ chain of the
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.QueueFamilyProperties2'
--- structure passed to
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceQueueFamilyProperties2',
--- it is filled in with the list of supported global queue priorities for
--- the indicated family.
---
--- 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.
---
--- 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)
---
--- = 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_KHR'
-    -- 'QueueGlobalPriorityKHR' 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
+-- No documentation found for TopLevel "VkDeviceQueueGlobalPriorityCreateInfoKHR"
+type DeviceQueueGlobalPriorityCreateInfoKHR = DeviceQueueGlobalPriorityCreateInfo
 
-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
+-- No documentation found for TopLevel "VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR"
+type PhysicalDeviceGlobalPriorityQueryFeaturesKHR = PhysicalDeviceGlobalPriorityQueryFeatures
 
 
--- | 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)
+-- No documentation found for TopLevel "VkQueueFamilyGlobalPriorityPropertiesKHR"
+type QueueFamilyGlobalPriorityPropertiesKHR = QueueFamilyGlobalPriorityProperties
 
-instance Read QueueGlobalPriorityKHR where
-  readPrec =
-    enumReadPrec
-      enumPrefixQueueGlobalPriorityKHR
-      showTableQueueGlobalPriorityKHR
-      conNameQueueGlobalPriorityKHR
-      QueueGlobalPriorityKHR
 
 type KHR_GLOBAL_PRIORITY_SPEC_VERSION = 1
 
diff --git a/src/Vulkan/Extensions/VK_KHR_global_priority.hs-boot b/src/Vulkan/Extensions/VK_KHR_global_priority.hs-boot
deleted file mode 100644
--- a/src/Vulkan/Extensions/VK_KHR_global_priority.hs-boot
+++ /dev/null
@@ -1,196 +0,0 @@
-{-# 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
---
--- [__Ratification Status__]
---     Ratified
---
--- [__Extension and Version Dependencies__]
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
---
--- [__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 @VK_EXT_global_priority@
---
---     -   Contributors to @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 favor 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
---
--- No cross-references are available
---
--- == Document Notes
---
--- For more information, see the
--- <https://registry.khronos.org/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
@@ -106,7 +106,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_image_format_list Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -126,7 +126,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_imageless_framebuffer Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -93,7 +93,7 @@
 -- == Issues
 --
 -- 1) How should we handle steroescopic-3D swapchains? We need to add a
--- layer for each rectangle. One approach is to create another struct
+-- layer for each rectangle. One approach is to create another structure
 -- containing the 'Vulkan.Core10.FundamentalTypes.Rect2D' plus layer, and
 -- have 'PresentRegionsKHR' point to an array of that struct. Another
 -- approach is to have two parallel arrays, @pRectangles@ and @pLayers@,
@@ -158,7 +158,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_incremental_present Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -228,6 +228,12 @@
 --
 -- -   #VUID-VkPresentRegionsKHR-swapchainCount-arraylength#
 --     @swapchainCount@ /must/ be greater than @0@
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR'
 --
 -- = See Also
 --
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
@@ -93,7 +93,7 @@
 -- == Issues
 --
 -- 1) How should we handle steroescopic-3D swapchains? We need to add a
--- layer for each rectangle. One approach is to create another struct
+-- layer for each rectangle. One approach is to create another structure
 -- containing the 'Vulkan.Core10.FundamentalTypes.Rect2D' plus layer, and
 -- have 'PresentRegionsKHR' point to an array of that struct. Another
 -- approach is to have two parallel arrays, @pRectangles@ and @pLayers@,
@@ -158,7 +158,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_incremental_present Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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_index_type_uint8.hs b/src/Vulkan/Extensions/VK_KHR_index_type_uint8.hs
--- a/src/Vulkan/Extensions/VK_KHR_index_type_uint8.hs
+++ b/src/Vulkan/Extensions/VK_KHR_index_type_uint8.hs
@@ -25,6 +25,11 @@
 --     or
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
 --
+-- [__Deprecation State__]
+--
+--     -   /Promoted/ to
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.4-promotions Vulkan 1.4>
+--
 -- [__Contact__]
 --
 --     -   Piers Daniell
@@ -63,12 +68,18 @@
 --
 -- -   Extending 'Vulkan.Core10.Enums.IndexType.IndexType':
 --
---     -   'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT8_KHR'
+--     -   'INDEX_TYPE_UINT8_KHR'
 --
 -- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_KHR'
+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_KHR'
 --
+-- == Promotion to Vulkan 1.4
+--
+-- Functionality in this extension is included in core Vulkan 1.4 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, 2023-06-06 (Piers Daniell)
@@ -82,108 +93,33 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_index_type_uint8 Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_index_type_uint8 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_index_type_uint8  ( PhysicalDeviceIndexTypeUint8FeaturesKHR(..)
+module Vulkan.Extensions.VK_KHR_index_type_uint8  ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_KHR
+                                                  , pattern INDEX_TYPE_UINT8_KHR
+                                                  , PhysicalDeviceIndexTypeUint8FeaturesKHR
                                                   , KHR_INDEX_TYPE_UINT8_SPEC_VERSION
                                                   , pattern KHR_INDEX_TYPE_UINT8_SPEC_VERSION
                                                   , KHR_INDEX_TYPE_UINT8_EXTENSION_NAME
                                                   , pattern KHR_INDEX_TYPE_UINT8_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_INDEX_TYPE_UINT8_FEATURES_KHR))
--- | VkPhysicalDeviceIndexTypeUint8FeaturesKHR - Structure describing whether
--- uint8 index type can be used
---
--- = Members
---
--- This structure describes the following feature:
---
--- = Description
---
--- If the 'PhysicalDeviceIndexTypeUint8FeaturesKHR' 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. 'PhysicalDeviceIndexTypeUint8FeaturesKHR' /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_index_type_uint8 VK_EXT_index_type_uint8>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_index_type_uint8 VK_KHR_index_type_uint8>,
--- 'Vulkan.Core10.FundamentalTypes.Bool32',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PhysicalDeviceIndexTypeUint8FeaturesKHR = PhysicalDeviceIndexTypeUint8FeaturesKHR
-  { -- | #features-indexTypeUint8# @indexTypeUint8@ indicates that
-    -- 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT8_KHR' can be used with
-    -- 'Vulkan.Extensions.VK_KHR_maintenance5.cmdBindIndexBuffer2KHR' and
-    -- 'Vulkan.Core10.CommandBufferBuilding.cmdBindIndexBuffer'.
-    indexTypeUint8 :: Bool }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PhysicalDeviceIndexTypeUint8FeaturesKHR)
-#endif
-deriving instance Show PhysicalDeviceIndexTypeUint8FeaturesKHR
+import Vulkan.Core14.Promoted_From_VK_KHR_index_type_uint8 (PhysicalDeviceIndexTypeUint8Features)
+import Vulkan.Core10.Enums.IndexType (IndexType(INDEX_TYPE_UINT8))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES))
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES
 
-instance ToCStruct PhysicalDeviceIndexTypeUint8FeaturesKHR where
-  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PhysicalDeviceIndexTypeUint8FeaturesKHR{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (indexTypeUint8))
-    f
-  cStructSize = 24
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
-    f
 
-instance FromCStruct PhysicalDeviceIndexTypeUint8FeaturesKHR where
-  peekCStruct p = do
-    indexTypeUint8 <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
-    pure $ PhysicalDeviceIndexTypeUint8FeaturesKHR
-             (bool32ToBool indexTypeUint8)
+-- No documentation found for TopLevel "VK_INDEX_TYPE_UINT8_KHR"
+pattern INDEX_TYPE_UINT8_KHR = INDEX_TYPE_UINT8
 
-instance Storable PhysicalDeviceIndexTypeUint8FeaturesKHR where
-  sizeOf ~_ = 24
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
 
-instance Zero PhysicalDeviceIndexTypeUint8FeaturesKHR where
-  zero = PhysicalDeviceIndexTypeUint8FeaturesKHR
-           zero
+-- No documentation found for TopLevel "VkPhysicalDeviceIndexTypeUint8FeaturesKHR"
+type PhysicalDeviceIndexTypeUint8FeaturesKHR = PhysicalDeviceIndexTypeUint8Features
 
 
 type KHR_INDEX_TYPE_UINT8_SPEC_VERSION = 1
diff --git a/src/Vulkan/Extensions/VK_KHR_index_type_uint8.hs-boot b/src/Vulkan/Extensions/VK_KHR_index_type_uint8.hs-boot
deleted file mode 100644
--- a/src/Vulkan/Extensions/VK_KHR_index_type_uint8.hs-boot
+++ /dev/null
@@ -1,101 +0,0 @@
-{-# language CPP #-}
--- | = Name
---
--- VK_KHR_index_type_uint8 - device extension
---
--- = VK_KHR_index_type_uint8
---
--- [__Name String__]
---     @VK_KHR_index_type_uint8@
---
--- [__Extension Type__]
---     Device extension
---
--- [__Registered Extension Number__]
---     534
---
--- [__Revision__]
---     1
---
--- [__Ratification Status__]
---     Ratified
---
--- [__Extension and Version Dependencies__]
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
---
--- [__Contact__]
---
---     -   Piers Daniell
---         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_index_type_uint8] @pdaniell-nv%0A*Here describe the issue or question you have about the VK_KHR_index_type_uint8 extension* >
---
--- == Other Extension Metadata
---
--- [__Last Modified Date__]
---     2023-06-06
---
--- [__IP Status__]
---     No known IP claims.
---
--- [__Contributors__]
---
---     -   Jeff Bolz, NVIDIA
---
--- == Description
---
--- This extension allows @uint8_t@ indices to be used with
--- 'Vulkan.Core10.CommandBufferBuilding.cmdBindIndexBuffer'.
---
--- == New Structures
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
---     'Vulkan.Core10.Device.DeviceCreateInfo':
---
---     -   'PhysicalDeviceIndexTypeUint8FeaturesKHR'
---
--- == New Enum Constants
---
--- -   'KHR_INDEX_TYPE_UINT8_EXTENSION_NAME'
---
--- -   'KHR_INDEX_TYPE_UINT8_SPEC_VERSION'
---
--- -   Extending 'Vulkan.Core10.Enums.IndexType.IndexType':
---
---     -   'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT8_KHR'
---
--- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_KHR'
---
--- == Version History
---
--- -   Revision 1, 2023-06-06 (Piers Daniell)
---
---     -   Internal revisions
---
--- == See Also
---
--- No cross-references are available
---
--- == Document Notes
---
--- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_index_type_uint8 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_index_type_uint8  (PhysicalDeviceIndexTypeUint8FeaturesKHR) where
-
-import Vulkan.CStruct (FromCStruct)
-import Vulkan.CStruct (ToCStruct)
-import Data.Kind (Type)
-
-data PhysicalDeviceIndexTypeUint8FeaturesKHR
-
-instance ToCStruct PhysicalDeviceIndexTypeUint8FeaturesKHR
-instance Show PhysicalDeviceIndexTypeUint8FeaturesKHR
-
-instance FromCStruct PhysicalDeviceIndexTypeUint8FeaturesKHR
-
diff --git a/src/Vulkan/Extensions/VK_KHR_internally_synchronized_queues.hs b/src/Vulkan/Extensions/VK_KHR_internally_synchronized_queues.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_KHR_internally_synchronized_queues.hs
@@ -0,0 +1,225 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_KHR_internally_synchronized_queues - device extension
+--
+-- = VK_KHR_internally_synchronized_queues
+--
+-- [__Name String__]
+--     @VK_KHR_internally_synchronized_queues@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     505
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
+--
+-- [__Contact__]
+--
+--     -   Shahbaz Youssefi
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_internally_synchronized_queues] @syoussefi%0A*Here describe the issue or question you have about the VK_KHR_internally_synchronized_queues extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_KHR_internally_synchronized_queues.adoc VK_KHR_internally_synchronized_queues>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2025-02-04
+--
+-- [__Contributors__]
+--
+--     -   Shahbaz Youssefi, Google
+--
+--     -   Daniel Rakos, RasterGrid
+--
+--     -   Jeff Bolz, Nvidia
+--
+--     -   Hans-Kristian Arntzen, Valve
+--
+-- == Description
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_internally_synchronized_queues VK_KHR_internally_synchronized_queues>
+-- allows queues to opt into being internally synchronized via the
+-- 'Vulkan.Core10.Enums.DeviceQueueCreateFlagBits.DEVICE_QUEUE_CREATE_INTERNALLY_SYNCHRONIZED_BIT_KHR'
+-- flag.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceInternallySynchronizedQueuesFeaturesKHR'
+--
+-- == New Enum Constants
+--
+-- -   'KHR_INTERNALLY_SYNCHRONIZED_QUEUES_EXTENSION_NAME'
+--
+-- -   'KHR_INTERNALLY_SYNCHRONIZED_QUEUES_SPEC_VERSION'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.DeviceQueueCreateFlagBits.DeviceQueueCreateFlagBits':
+--
+--     -   'Vulkan.Core10.Enums.DeviceQueueCreateFlagBits.DEVICE_QUEUE_CREATE_INTERNALLY_SYNCHRONIZED_BIT_KHR'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_INTERNALLY_SYNCHRONIZED_QUEUES_FEATURES_KHR'
+--
+-- == Issues
+--
+-- None.
+--
+-- == Version History
+--
+-- -   Revision 0, 2025-01-07 (Daniel Rakos)
+--
+--     -   Initial proposal
+--
+-- -   Revision 1, 2025-02-04 (Shahbaz Youssefi)
+--
+--     -   Initial revision
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_internally_synchronized_queues 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_internally_synchronized_queues  ( PhysicalDeviceInternallySynchronizedQueuesFeaturesKHR(..)
+                                                                , KHR_INTERNALLY_SYNCHRONIZED_QUEUES_SPEC_VERSION
+                                                                , pattern KHR_INTERNALLY_SYNCHRONIZED_QUEUES_SPEC_VERSION
+                                                                , KHR_INTERNALLY_SYNCHRONIZED_QUEUES_EXTENSION_NAME
+                                                                , pattern KHR_INTERNALLY_SYNCHRONIZED_QUEUES_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_INTERNALLY_SYNCHRONIZED_QUEUES_FEATURES_KHR))
+-- | VkPhysicalDeviceInternallySynchronizedQueuesFeaturesKHR - Structure
+-- indicating support for queues that are internally synchronized
+--
+-- = Members
+--
+-- This structure describes the following feature:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceInternallySynchronizedQueuesFeaturesKHR' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceInternallySynchronizedQueuesFeaturesKHR', it /must/ add
+-- an instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_internally_synchronized_queues VK_KHR_internally_synchronized_queues>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceInternallySynchronizedQueuesFeaturesKHR = PhysicalDeviceInternallySynchronizedQueuesFeaturesKHR
+  { -- | #features-internallySynchronizedQueues# @internallySynchronizedQueues@
+    -- indicates that
+    -- 'Vulkan.Core10.Enums.DeviceQueueCreateFlagBits.DEVICE_QUEUE_CREATE_INTERNALLY_SYNCHRONIZED_BIT_KHR'
+    -- can be used to make queues internally synchronized.
+    internallySynchronizedQueues :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceInternallySynchronizedQueuesFeaturesKHR)
+#endif
+deriving instance Show PhysicalDeviceInternallySynchronizedQueuesFeaturesKHR
+
+instance ToCStruct PhysicalDeviceInternallySynchronizedQueuesFeaturesKHR where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceInternallySynchronizedQueuesFeaturesKHR{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_INTERNALLY_SYNCHRONIZED_QUEUES_FEATURES_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (internallySynchronizedQueues))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_INTERNALLY_SYNCHRONIZED_QUEUES_FEATURES_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceInternallySynchronizedQueuesFeaturesKHR where
+  peekCStruct p = do
+    internallySynchronizedQueues <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDeviceInternallySynchronizedQueuesFeaturesKHR
+             (bool32ToBool internallySynchronizedQueues)
+
+instance Storable PhysicalDeviceInternallySynchronizedQueuesFeaturesKHR where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceInternallySynchronizedQueuesFeaturesKHR where
+  zero = PhysicalDeviceInternallySynchronizedQueuesFeaturesKHR
+           zero
+
+
+type KHR_INTERNALLY_SYNCHRONIZED_QUEUES_SPEC_VERSION = 1
+
+-- No documentation found for TopLevel "VK_KHR_INTERNALLY_SYNCHRONIZED_QUEUES_SPEC_VERSION"
+pattern KHR_INTERNALLY_SYNCHRONIZED_QUEUES_SPEC_VERSION :: forall a . Integral a => a
+pattern KHR_INTERNALLY_SYNCHRONIZED_QUEUES_SPEC_VERSION = 1
+
+
+type KHR_INTERNALLY_SYNCHRONIZED_QUEUES_EXTENSION_NAME = "VK_KHR_internally_synchronized_queues"
+
+-- No documentation found for TopLevel "VK_KHR_INTERNALLY_SYNCHRONIZED_QUEUES_EXTENSION_NAME"
+pattern KHR_INTERNALLY_SYNCHRONIZED_QUEUES_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern KHR_INTERNALLY_SYNCHRONIZED_QUEUES_EXTENSION_NAME = "VK_KHR_internally_synchronized_queues"
+
diff --git a/src/Vulkan/Extensions/VK_KHR_internally_synchronized_queues.hs-boot b/src/Vulkan/Extensions/VK_KHR_internally_synchronized_queues.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_KHR_internally_synchronized_queues.hs-boot
@@ -0,0 +1,116 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_KHR_internally_synchronized_queues - device extension
+--
+-- = VK_KHR_internally_synchronized_queues
+--
+-- [__Name String__]
+--     @VK_KHR_internally_synchronized_queues@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     505
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
+--
+-- [__Contact__]
+--
+--     -   Shahbaz Youssefi
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_internally_synchronized_queues] @syoussefi%0A*Here describe the issue or question you have about the VK_KHR_internally_synchronized_queues extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_KHR_internally_synchronized_queues.adoc VK_KHR_internally_synchronized_queues>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2025-02-04
+--
+-- [__Contributors__]
+--
+--     -   Shahbaz Youssefi, Google
+--
+--     -   Daniel Rakos, RasterGrid
+--
+--     -   Jeff Bolz, Nvidia
+--
+--     -   Hans-Kristian Arntzen, Valve
+--
+-- == Description
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_internally_synchronized_queues VK_KHR_internally_synchronized_queues>
+-- allows queues to opt into being internally synchronized via the
+-- 'Vulkan.Core10.Enums.DeviceQueueCreateFlagBits.DEVICE_QUEUE_CREATE_INTERNALLY_SYNCHRONIZED_BIT_KHR'
+-- flag.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceInternallySynchronizedQueuesFeaturesKHR'
+--
+-- == New Enum Constants
+--
+-- -   'KHR_INTERNALLY_SYNCHRONIZED_QUEUES_EXTENSION_NAME'
+--
+-- -   'KHR_INTERNALLY_SYNCHRONIZED_QUEUES_SPEC_VERSION'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.DeviceQueueCreateFlagBits.DeviceQueueCreateFlagBits':
+--
+--     -   'Vulkan.Core10.Enums.DeviceQueueCreateFlagBits.DEVICE_QUEUE_CREATE_INTERNALLY_SYNCHRONIZED_BIT_KHR'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_INTERNALLY_SYNCHRONIZED_QUEUES_FEATURES_KHR'
+--
+-- == Issues
+--
+-- None.
+--
+-- == Version History
+--
+-- -   Revision 0, 2025-01-07 (Daniel Rakos)
+--
+--     -   Initial proposal
+--
+-- -   Revision 1, 2025-02-04 (Shahbaz Youssefi)
+--
+--     -   Initial revision
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_internally_synchronized_queues 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_internally_synchronized_queues  (PhysicalDeviceInternallySynchronizedQueuesFeaturesKHR) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data PhysicalDeviceInternallySynchronizedQueuesFeaturesKHR
+
+instance ToCStruct PhysicalDeviceInternallySynchronizedQueuesFeaturesKHR
+instance Show PhysicalDeviceInternallySynchronizedQueuesFeaturesKHR
+
+instance FromCStruct PhysicalDeviceInternallySynchronizedQueuesFeaturesKHR
+
diff --git a/src/Vulkan/Extensions/VK_KHR_line_rasterization.hs b/src/Vulkan/Extensions/VK_KHR_line_rasterization.hs
--- a/src/Vulkan/Extensions/VK_KHR_line_rasterization.hs
+++ b/src/Vulkan/Extensions/VK_KHR_line_rasterization.hs
@@ -25,6 +25,11 @@
 --     or
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
 --
+-- [__Deprecation State__]
+--
+--     -   /Promoted/ to
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.4-promotions Vulkan 1.4>
+--
 -- [__Contact__]
 --
 --     -   Piers Daniell
@@ -72,7 +77,7 @@
 --     -   'PhysicalDeviceLineRasterizationPropertiesKHR'
 --
 -- -   Extending
---     'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo':
+--     'Vulkan.Core10.GraphicsPipeline.PipelineRasterizationStateCreateInfo':
 --
 --     -   'PipelineRasterizationLineStateCreateInfoKHR'
 --
@@ -88,16 +93,39 @@
 --
 -- -   Extending 'Vulkan.Core10.Enums.DynamicState.DynamicState':
 --
---     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_KHR'
+--     -   'DYNAMIC_STATE_LINE_STIPPLE_KHR'
 --
+-- -   Extending
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LineRasterizationMode':
+--
+--     -   'LINE_RASTERIZATION_MODE_BRESENHAM_KHR'
+--
+--     -   'LINE_RASTERIZATION_MODE_DEFAULT_KHR'
+--
+--     -   'LINE_RASTERIZATION_MODE_RECTANGULAR_KHR'
+--
+--     -   'LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR'
+--
 -- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_KHR'
+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_KHR'
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_KHR'
+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_KHR'
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_KHR'
+--     -   'STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_KHR'
 --
+-- == Promotion to Vulkan 1.4
+--
+-- Functionality in this extension is included in core Vulkan 1.4 with the
+-- KHR suffix omitted. The original type, enum, and command names are still
+-- available as aliases of the core functionality.
+--
+-- When
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#versions-1.4 Version 1.4>
+-- is supported, the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-bresenhamLines bresenhamLines>
+-- feature must be supported.
+--
 -- == Issues
 --
 -- 1) Do we need to support Bresenham-style and smooth lines with more than
@@ -122,597 +150,94 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_line_rasterization Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_line_rasterization 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_line_rasterization  ( cmdSetLineStippleKHR
-                                                    , pattern LINE_RASTERIZATION_MODE_DEFAULT_EXT
-                                                    , pattern LINE_RASTERIZATION_MODE_RECTANGULAR_EXT
-                                                    , pattern LINE_RASTERIZATION_MODE_BRESENHAM_EXT
-                                                    , pattern LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT
-                                                    , PhysicalDeviceLineRasterizationFeaturesKHR(..)
-                                                    , PhysicalDeviceLineRasterizationPropertiesKHR(..)
-                                                    , PipelineRasterizationLineStateCreateInfoKHR(..)
-                                                    , LineRasterizationModeKHR( LINE_RASTERIZATION_MODE_DEFAULT_KHR
-                                                                              , LINE_RASTERIZATION_MODE_RECTANGULAR_KHR
-                                                                              , LINE_RASTERIZATION_MODE_BRESENHAM_KHR
-                                                                              , LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR
-                                                                              , ..
-                                                                              )
+module Vulkan.Extensions.VK_KHR_line_rasterization  ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_KHR
+                                                    , pattern STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_KHR
+                                                    , pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_KHR
+                                                    , pattern DYNAMIC_STATE_LINE_STIPPLE_KHR
+                                                    , pattern LINE_RASTERIZATION_MODE_DEFAULT_KHR
+                                                    , pattern LINE_RASTERIZATION_MODE_RECTANGULAR_KHR
+                                                    , pattern LINE_RASTERIZATION_MODE_BRESENHAM_KHR
+                                                    , pattern LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR
+                                                    , cmdSetLineStippleKHR
+                                                    , LineRasterizationModeKHR
+                                                    , PhysicalDeviceLineRasterizationFeaturesKHR
+                                                    , PhysicalDeviceLineRasterizationPropertiesKHR
+                                                    , PipelineRasterizationLineStateCreateInfoKHR
                                                     , KHR_LINE_RASTERIZATION_SPEC_VERSION
                                                     , pattern KHR_LINE_RASTERIZATION_SPEC_VERSION
                                                     , KHR_LINE_RASTERIZATION_EXTENSION_NAME
                                                     , pattern KHR_LINE_RASTERIZATION_EXTENSION_NAME
                                                     ) where
 
-import Vulkan.Internal.Utils (enumReadPrec)
-import Vulkan.Internal.Utils (enumShowsPrec)
-import Vulkan.Internal.Utils (traceAroundEvent)
-import Control.Monad (unless)
-import Control.Monad.IO.Class (liftIO)
-import Foreign.Marshal.Alloc (allocaBytes)
-import GHC.IO (throwIO)
-import GHC.Ptr (nullFunPtr)
-import Foreign.Ptr (nullPtr)
-import Foreign.Ptr (plusPtr)
-import GHC.Show (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 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 Data.Int (Int32)
-import Foreign.Ptr (FunPtr)
-import Foreign.Ptr (Ptr)
-import GHC.Read (Read(readPrec))
-import GHC.Show (Show(showsPrec))
-import Data.Word (Word16)
-import Data.Word (Word32)
-import Data.Kind (Type)
-import Vulkan.Core10.FundamentalTypes (bool32ToBool)
-import Vulkan.Core10.FundamentalTypes (boolToBool32)
-import Vulkan.NamedType ((:::))
-import Vulkan.Core10.FundamentalTypes (Bool32)
-import Vulkan.Core10.Handles (CommandBuffer)
-import Vulkan.Core10.Handles (CommandBuffer(..))
-import Vulkan.Core10.Handles (CommandBuffer(CommandBuffer))
-import Vulkan.Core10.Handles (CommandBuffer_T)
-import Vulkan.Dynamic (DeviceCmds(pVkCmdSetLineStippleKHR))
-import Vulkan.Core10.Enums.StructureType (StructureType)
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_KHR))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_KHR))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_KHR))
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdSetLineStippleKHR
-  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Word16 -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Word16 -> IO ()
+import Vulkan.Core14.Promoted_From_VK_KHR_line_rasterization (cmdSetLineStipple)
+import Vulkan.Core14.Enums.LineRasterizationMode (LineRasterizationMode)
+import Vulkan.Core14.Promoted_From_VK_KHR_line_rasterization (PhysicalDeviceLineRasterizationFeatures)
+import Vulkan.Core14.Promoted_From_VK_KHR_line_rasterization (PhysicalDeviceLineRasterizationProperties)
+import Vulkan.Core14.Promoted_From_VK_KHR_line_rasterization (PipelineRasterizationLineStateCreateInfo)
+import Vulkan.Core10.Enums.DynamicState (DynamicState(DYNAMIC_STATE_LINE_STIPPLE))
+import Vulkan.Core14.Enums.LineRasterizationMode (LineRasterizationMode(LINE_RASTERIZATION_MODE_BRESENHAM))
+import Vulkan.Core14.Enums.LineRasterizationMode (LineRasterizationMode(LINE_RASTERIZATION_MODE_DEFAULT))
+import Vulkan.Core14.Enums.LineRasterizationMode (LineRasterizationMode(LINE_RASTERIZATION_MODE_RECTANGULAR))
+import Vulkan.Core14.Enums.LineRasterizationMode (LineRasterizationMode(LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO))
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES
 
--- | vkCmdSetLineStippleKHR - Set line stipple dynamically for a command
--- buffer
---
--- = Description
---
--- This command sets the line stipple state for subsequent drawing commands
--- when drawing using
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-objects shader objects>,
--- or when the graphics pipeline is created with
--- 'Vulkan.Extensions.VK_EXT_line_rasterization.DYNAMIC_STATE_LINE_STIPPLE_EXT'
--- set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
--- Otherwise, this state is specified by the
--- 'PipelineRasterizationLineStateCreateInfoKHR'::@lineStippleFactor@ and
--- 'PipelineRasterizationLineStateCreateInfoKHR'::@lineStipplePattern@
--- values used to create the currently active pipeline.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdSetLineStippleKHR-lineStippleFactor-02776#
---     @lineStippleFactor@ /must/ be in the range [1,256]
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdSetLineStippleKHR-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdSetLineStippleKHR-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-vkCmdSetLineStippleKHR-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
---
--- -   #VUID-vkCmdSetLineStippleKHR-videocoding# This command /must/ only
---     be called outside of a video coding scope
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
--- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_line_rasterization VK_EXT_line_rasterization>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_line_rasterization VK_KHR_line_rasterization>,
--- 'Vulkan.Core10.Handles.CommandBuffer'
-cmdSetLineStippleKHR :: forall io
-                      . (MonadIO io)
-                     => -- | @commandBuffer@ is the command buffer into which the command will be
-                        -- recorded.
-                        CommandBuffer
-                     -> -- | @lineStippleFactor@ is the repeat factor used in stippled line
-                        -- rasterization.
-                        ("lineStippleFactor" ::: Word32)
-                     -> -- | @lineStipplePattern@ is the bit pattern used in stippled line
-                        -- rasterization.
-                        ("lineStipplePattern" ::: Word16)
-                     -> io ()
-cmdSetLineStippleKHR commandBuffer
-                       lineStippleFactor
-                       lineStipplePattern = liftIO $ do
-  let vkCmdSetLineStippleKHRPtr = pVkCmdSetLineStippleKHR (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  unless (vkCmdSetLineStippleKHRPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetLineStippleKHR is null" Nothing Nothing
-  let vkCmdSetLineStippleKHR' = mkVkCmdSetLineStippleKHR vkCmdSetLineStippleKHRPtr
-  traceAroundEvent "vkCmdSetLineStippleKHR" (vkCmdSetLineStippleKHR'
-                                               (commandBufferHandle (commandBuffer))
-                                               (lineStippleFactor)
-                                               (lineStipplePattern))
-  pure $ ()
 
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_KHR"
+pattern STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_KHR = STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO
 
--- No documentation found for TopLevel "VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT"
-pattern LINE_RASTERIZATION_MODE_DEFAULT_EXT = LINE_RASTERIZATION_MODE_DEFAULT_KHR
 
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES
 
--- No documentation found for TopLevel "VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT"
-pattern LINE_RASTERIZATION_MODE_RECTANGULAR_EXT = LINE_RASTERIZATION_MODE_RECTANGULAR_KHR
 
+-- No documentation found for TopLevel "VK_DYNAMIC_STATE_LINE_STIPPLE_KHR"
+pattern DYNAMIC_STATE_LINE_STIPPLE_KHR = DYNAMIC_STATE_LINE_STIPPLE
 
--- No documentation found for TopLevel "VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT"
-pattern LINE_RASTERIZATION_MODE_BRESENHAM_EXT = LINE_RASTERIZATION_MODE_BRESENHAM_KHR
 
+-- No documentation found for TopLevel "VK_LINE_RASTERIZATION_MODE_DEFAULT_KHR"
+pattern LINE_RASTERIZATION_MODE_DEFAULT_KHR = LINE_RASTERIZATION_MODE_DEFAULT
 
--- No documentation found for TopLevel "VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT"
-pattern LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT = LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR
 
+-- No documentation found for TopLevel "VK_LINE_RASTERIZATION_MODE_RECTANGULAR_KHR"
+pattern LINE_RASTERIZATION_MODE_RECTANGULAR_KHR = LINE_RASTERIZATION_MODE_RECTANGULAR
 
--- | VkPhysicalDeviceLineRasterizationFeaturesKHR - Structure describing the
--- line rasterization features that can be supported by an implementation
---
--- = Members
---
--- This structure describes the following features:
---
--- = Description
---
--- If the 'PhysicalDeviceLineRasterizationFeaturesKHR' 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. 'PhysicalDeviceLineRasterizationFeaturesKHR' /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_line_rasterization VK_KHR_line_rasterization>,
--- 'Vulkan.Core10.FundamentalTypes.Bool32',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PhysicalDeviceLineRasterizationFeaturesKHR = PhysicalDeviceLineRasterizationFeaturesKHR
-  { -- | #features-rectangularLines# @rectangularLines@ indicates whether the
-    -- implementation supports
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-lines rectangular line rasterization>.
-    rectangularLines :: Bool
-  , -- | #features-bresenhamLines# @bresenhamLines@ indicates whether the
-    -- implementation supports
-    -- <https://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-lines-stipple stippled line rasterization>
-    -- with 'LINE_RASTERIZATION_MODE_RECTANGULAR_KHR' lines.
-    stippledRectangularLines :: Bool
-  , -- | #features-stippledBresenhamLines# @stippledBresenhamLines@ indicates
-    -- whether the implementation supports
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-lines-stipple stippled line rasterization>
-    -- with 'LINE_RASTERIZATION_MODE_BRESENHAM_KHR' lines.
-    stippledBresenhamLines :: Bool
-  , -- | #features-stippledSmoothLines# @stippledSmoothLines@ indicates whether
-    -- the implementation supports
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-lines-stipple stippled line rasterization>
-    -- with 'LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR' lines.
-    stippledSmoothLines :: Bool
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PhysicalDeviceLineRasterizationFeaturesKHR)
-#endif
-deriving instance Show PhysicalDeviceLineRasterizationFeaturesKHR
 
-instance ToCStruct PhysicalDeviceLineRasterizationFeaturesKHR where
-  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PhysicalDeviceLineRasterizationFeaturesKHR{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (rectangularLines))
-    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (bresenhamLines))
-    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (smoothLines))
-    poke ((p `plusPtr` 28 :: Ptr Bool32)) (boolToBool32 (stippledRectangularLines))
-    poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (stippledBresenhamLines))
-    poke ((p `plusPtr` 36 :: Ptr Bool32)) (boolToBool32 (stippledSmoothLines))
-    f
-  cStructSize = 40
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_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))
-    f
+-- No documentation found for TopLevel "VK_LINE_RASTERIZATION_MODE_BRESENHAM_KHR"
+pattern LINE_RASTERIZATION_MODE_BRESENHAM_KHR = LINE_RASTERIZATION_MODE_BRESENHAM
 
-instance FromCStruct PhysicalDeviceLineRasterizationFeaturesKHR where
-  peekCStruct p = do
-    rectangularLines <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
-    bresenhamLines <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
-    smoothLines <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))
-    stippledRectangularLines <- peek @Bool32 ((p `plusPtr` 28 :: Ptr Bool32))
-    stippledBresenhamLines <- peek @Bool32 ((p `plusPtr` 32 :: Ptr Bool32))
-    stippledSmoothLines <- peek @Bool32 ((p `plusPtr` 36 :: Ptr Bool32))
-    pure $ PhysicalDeviceLineRasterizationFeaturesKHR
-             (bool32ToBool rectangularLines)
-             (bool32ToBool bresenhamLines)
-             (bool32ToBool smoothLines)
-             (bool32ToBool stippledRectangularLines)
-             (bool32ToBool stippledBresenhamLines)
-             (bool32ToBool stippledSmoothLines)
 
-instance Storable PhysicalDeviceLineRasterizationFeaturesKHR where
-  sizeOf ~_ = 40
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
+-- No documentation found for TopLevel "VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR"
+pattern LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR = LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH
 
-instance Zero PhysicalDeviceLineRasterizationFeaturesKHR where
-  zero = PhysicalDeviceLineRasterizationFeaturesKHR
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
 
+-- No documentation found for TopLevel "vkCmdSetLineStippleKHR"
+cmdSetLineStippleKHR = cmdSetLineStipple
 
--- | VkPhysicalDeviceLineRasterizationPropertiesKHR - Structure describing
--- line rasterization properties supported by an implementation
---
--- = Description
---
--- If the 'PhysicalDeviceLineRasterizationPropertiesKHR' 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_line_rasterization VK_EXT_line_rasterization>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_line_rasterization VK_KHR_line_rasterization>,
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PhysicalDeviceLineRasterizationPropertiesKHR = PhysicalDeviceLineRasterizationPropertiesKHR
-  { -- | #limits-lineSubPixelPrecisionBits# @lineSubPixelPrecisionBits@ is the
-    -- number of bits of subpixel precision in framebuffer coordinates xf and
-    -- yf when rasterizing
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-lines line segments>.
-    lineSubPixelPrecisionBits :: Word32 }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PhysicalDeviceLineRasterizationPropertiesKHR)
-#endif
-deriving instance Show PhysicalDeviceLineRasterizationPropertiesKHR
 
-instance ToCStruct PhysicalDeviceLineRasterizationPropertiesKHR where
-  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PhysicalDeviceLineRasterizationPropertiesKHR{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Word32)) (lineSubPixelPrecisionBits)
-    f
-  cStructSize = 24
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
-    f
+-- No documentation found for TopLevel "VkLineRasterizationModeKHR"
+type LineRasterizationModeKHR = LineRasterizationMode
 
-instance FromCStruct PhysicalDeviceLineRasterizationPropertiesKHR where
-  peekCStruct p = do
-    lineSubPixelPrecisionBits <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
-    pure $ PhysicalDeviceLineRasterizationPropertiesKHR
-             lineSubPixelPrecisionBits
 
-instance Storable PhysicalDeviceLineRasterizationPropertiesKHR where
-  sizeOf ~_ = 24
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero PhysicalDeviceLineRasterizationPropertiesKHR where
-  zero = PhysicalDeviceLineRasterizationPropertiesKHR
-           zero
+-- No documentation found for TopLevel "VkPhysicalDeviceLineRasterizationFeaturesKHR"
+type PhysicalDeviceLineRasterizationFeaturesKHR = PhysicalDeviceLineRasterizationFeatures
 
 
--- | VkPipelineRasterizationLineStateCreateInfoKHR - Structure specifying
--- parameters of a newly created pipeline line rasterization state
---
--- = Description
---
--- If @stippledLineEnable@ is 'Vulkan.Core10.FundamentalTypes.FALSE', the
--- values of @lineStippleFactor@ and @lineStipplePattern@ are ignored.
---
--- == Valid Usage
---
--- -   #VUID-VkPipelineRasterizationLineStateCreateInfoKHR-lineRasterizationMode-02768#
---     If @lineRasterizationMode@ is
---     'LINE_RASTERIZATION_MODE_RECTANGULAR_KHR', then the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-rectangularLines rectangularLines>
---     feature /must/ be enabled
---
--- -   #VUID-VkPipelineRasterizationLineStateCreateInfoKHR-lineRasterizationMode-02769#
---     If @lineRasterizationMode@ is
---     'LINE_RASTERIZATION_MODE_BRESENHAM_KHR', then the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-bresenhamLines bresenhamLines>
---     feature /must/ be enabled
---
--- -   #VUID-VkPipelineRasterizationLineStateCreateInfoKHR-lineRasterizationMode-02770#
---     If @lineRasterizationMode@ is
---     'LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR', then the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-smoothLines smoothLines>
---     feature /must/ be enabled
---
--- -   #VUID-VkPipelineRasterizationLineStateCreateInfoKHR-stippledLineEnable-02771#
---     If @stippledLineEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE' and
---     @lineRasterizationMode@ is
---     'LINE_RASTERIZATION_MODE_RECTANGULAR_KHR', then the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>
---     feature /must/ be enabled
---
--- -   #VUID-VkPipelineRasterizationLineStateCreateInfoKHR-stippledLineEnable-02772#
---     If @stippledLineEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE' and
---     @lineRasterizationMode@ is 'LINE_RASTERIZATION_MODE_BRESENHAM_KHR',
---     then the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     feature /must/ be enabled
---
--- -   #VUID-VkPipelineRasterizationLineStateCreateInfoKHR-stippledLineEnable-02773#
---     If @stippledLineEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE' and
---     @lineRasterizationMode@ is
---     'LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR', then the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     feature /must/ be enabled
---
--- -   #VUID-VkPipelineRasterizationLineStateCreateInfoKHR-stippledLineEnable-02774#
---     If @stippledLineEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE' and
---     @lineRasterizationMode@ is 'LINE_RASTERIZATION_MODE_DEFAULT_KHR',
---     then the
---     <https://registry.khronos.org/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'
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkPipelineRasterizationLineStateCreateInfoKHR-sType-sType#
---     @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_KHR'
---
--- -   #VUID-VkPipelineRasterizationLineStateCreateInfoKHR-lineRasterizationMode-parameter#
---     @lineRasterizationMode@ /must/ be a valid 'LineRasterizationModeKHR'
---     value
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_line_rasterization VK_EXT_line_rasterization>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_line_rasterization VK_KHR_line_rasterization>,
--- 'Vulkan.Core10.FundamentalTypes.Bool32', 'LineRasterizationModeKHR',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PipelineRasterizationLineStateCreateInfoKHR = PipelineRasterizationLineStateCreateInfoKHR
-  { -- | @lineRasterizationMode@ is a 'LineRasterizationModeKHR' value selecting
-    -- the style of line rasterization.
-    lineRasterizationMode :: LineRasterizationModeKHR
-  , -- | @stippledLineEnable@ enables
-    -- <https://registry.khronos.org/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.
-    lineStippleFactor :: Word32
-  , -- | @lineStipplePattern@ is the bit pattern used in stippled line
-    -- rasterization.
-    lineStipplePattern :: Word16
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PipelineRasterizationLineStateCreateInfoKHR)
-#endif
-deriving instance Show PipelineRasterizationLineStateCreateInfoKHR
-
-instance ToCStruct PipelineRasterizationLineStateCreateInfoKHR where
-  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PipelineRasterizationLineStateCreateInfoKHR{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr LineRasterizationModeKHR)) (lineRasterizationMode)
-    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (stippledLineEnable))
-    poke ((p `plusPtr` 24 :: Ptr Word32)) (lineStippleFactor)
-    poke ((p `plusPtr` 28 :: Ptr Word16)) (lineStipplePattern)
-    f
-  cStructSize = 32
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr LineRasterizationModeKHR)) (zero)
-    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))
-    poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 28 :: Ptr Word16)) (zero)
-    f
-
-instance FromCStruct PipelineRasterizationLineStateCreateInfoKHR where
-  peekCStruct p = do
-    lineRasterizationMode <- peek @LineRasterizationModeKHR ((p `plusPtr` 16 :: Ptr LineRasterizationModeKHR))
-    stippledLineEnable <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
-    lineStippleFactor <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))
-    lineStipplePattern <- peek @Word16 ((p `plusPtr` 28 :: Ptr Word16))
-    pure $ PipelineRasterizationLineStateCreateInfoKHR
-             lineRasterizationMode
-             (bool32ToBool stippledLineEnable)
-             lineStippleFactor
-             lineStipplePattern
-
-instance Storable PipelineRasterizationLineStateCreateInfoKHR where
-  sizeOf ~_ = 32
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero PipelineRasterizationLineStateCreateInfoKHR where
-  zero = PipelineRasterizationLineStateCreateInfoKHR
-           zero
-           zero
-           zero
-           zero
+-- No documentation found for TopLevel "VkPhysicalDeviceLineRasterizationPropertiesKHR"
+type PhysicalDeviceLineRasterizationPropertiesKHR = PhysicalDeviceLineRasterizationProperties
 
 
--- | VkLineRasterizationModeKHR - Line rasterization modes
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_line_rasterization VK_EXT_line_rasterization>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_line_rasterization VK_KHR_line_rasterization>,
--- 'PipelineRasterizationLineStateCreateInfoKHR',
--- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
-newtype LineRasterizationModeKHR = LineRasterizationModeKHR Int32
-  deriving newtype (Eq, Ord, Storable, Zero)
-
--- | 'LINE_RASTERIZATION_MODE_DEFAULT_KHR' is equivalent to
--- 'LINE_RASTERIZATION_MODE_RECTANGULAR_KHR' if
--- '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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-lines-basic Basic Line Segment Rasterization>.
-pattern LINE_RASTERIZATION_MODE_DEFAULT_KHR = LineRasterizationModeKHR 0
-
--- | 'LINE_RASTERIZATION_MODE_RECTANGULAR_KHR' specifies lines drawn as if
--- they were rectangles extruded from the line
-pattern LINE_RASTERIZATION_MODE_RECTANGULAR_KHR = LineRasterizationModeKHR 1
-
--- | 'LINE_RASTERIZATION_MODE_BRESENHAM_KHR' specifies lines drawn by
--- determining which pixel diamonds the line intersects and exits, as
--- defined in
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-lines-bresenham Bresenham Line Segment Rasterization>.
-pattern LINE_RASTERIZATION_MODE_BRESENHAM_KHR = LineRasterizationModeKHR 2
-
--- | 'LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR' specifies lines drawn
--- if they were rectangles extruded from the line, with alpha falloff, as
--- defined in
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-lines-smooth Smooth Lines>.
-pattern LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR = LineRasterizationModeKHR 3
-
-{-# COMPLETE
-  LINE_RASTERIZATION_MODE_DEFAULT_KHR
-  , LINE_RASTERIZATION_MODE_RECTANGULAR_KHR
-  , LINE_RASTERIZATION_MODE_BRESENHAM_KHR
-  , LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR ::
-    LineRasterizationModeKHR
-  #-}
-
-conNameLineRasterizationModeKHR :: String
-conNameLineRasterizationModeKHR = "LineRasterizationModeKHR"
-
-enumPrefixLineRasterizationModeKHR :: String
-enumPrefixLineRasterizationModeKHR = "LINE_RASTERIZATION_MODE_"
-
-showTableLineRasterizationModeKHR :: [(LineRasterizationModeKHR, String)]
-showTableLineRasterizationModeKHR =
-  [
-    ( LINE_RASTERIZATION_MODE_DEFAULT_KHR
-    , "DEFAULT_KHR"
-    )
-  ,
-    ( LINE_RASTERIZATION_MODE_RECTANGULAR_KHR
-    , "RECTANGULAR_KHR"
-    )
-  ,
-    ( LINE_RASTERIZATION_MODE_BRESENHAM_KHR
-    , "BRESENHAM_KHR"
-    )
-  ,
-    ( LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR
-    , "RECTANGULAR_SMOOTH_KHR"
-    )
-  ]
-
-instance Show LineRasterizationModeKHR where
-  showsPrec =
-    enumShowsPrec
-      enumPrefixLineRasterizationModeKHR
-      showTableLineRasterizationModeKHR
-      conNameLineRasterizationModeKHR
-      (\(LineRasterizationModeKHR x) -> x)
-      (showsPrec 11)
+-- No documentation found for TopLevel "VkPipelineRasterizationLineStateCreateInfoKHR"
+type PipelineRasterizationLineStateCreateInfoKHR = PipelineRasterizationLineStateCreateInfo
 
-instance Read LineRasterizationModeKHR where
-  readPrec =
-    enumReadPrec
-      enumPrefixLineRasterizationModeKHR
-      showTableLineRasterizationModeKHR
-      conNameLineRasterizationModeKHR
-      LineRasterizationModeKHR
 
 type KHR_LINE_RASTERIZATION_SPEC_VERSION = 1
 
diff --git a/src/Vulkan/Extensions/VK_KHR_line_rasterization.hs-boot b/src/Vulkan/Extensions/VK_KHR_line_rasterization.hs-boot
deleted file mode 100644
--- a/src/Vulkan/Extensions/VK_KHR_line_rasterization.hs-boot
+++ /dev/null
@@ -1,164 +0,0 @@
-{-# language CPP #-}
--- | = Name
---
--- VK_KHR_line_rasterization - device extension
---
--- = VK_KHR_line_rasterization
---
--- [__Name String__]
---     @VK_KHR_line_rasterization@
---
--- [__Extension Type__]
---     Device extension
---
--- [__Registered Extension Number__]
---     535
---
--- [__Revision__]
---     1
---
--- [__Ratification Status__]
---     Ratified
---
--- [__Extension and Version Dependencies__]
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
---
--- [__Contact__]
---
---     -   Piers Daniell
---         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_line_rasterization] @pdaniell-nv%0A*Here describe the issue or question you have about the VK_KHR_line_rasterization extension* >
---
--- == Other Extension Metadata
---
--- [__Last Modified Date__]
---     2023-06-08
---
--- [__IP Status__]
---     No known IP claims.
---
--- [__Contributors__]
---
---     -   Jeff Bolz, NVIDIA
---
---     -   Allen Jensen, NVIDIA
---
---     -   Faith Ekstrand, Intel
---
--- == Description
---
--- This extension adds some line rasterization features that are commonly
--- used in CAD applications and supported in other APIs like OpenGL.
--- Bresenham-style line rasterization is supported, smooth rectangular
--- lines (coverage to alpha) are supported, and stippled lines are
--- supported for all three line rasterization modes.
---
--- == New Commands
---
--- -   'cmdSetLineStippleKHR'
---
--- == New Structures
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
---     'Vulkan.Core10.Device.DeviceCreateInfo':
---
---     -   'PhysicalDeviceLineRasterizationFeaturesKHR'
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
---
---     -   'PhysicalDeviceLineRasterizationPropertiesKHR'
---
--- -   Extending
---     'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo':
---
---     -   'PipelineRasterizationLineStateCreateInfoKHR'
---
--- == New Enums
---
--- -   'LineRasterizationModeKHR'
---
--- == New Enum Constants
---
--- -   'KHR_LINE_RASTERIZATION_EXTENSION_NAME'
---
--- -   'KHR_LINE_RASTERIZATION_SPEC_VERSION'
---
--- -   Extending 'Vulkan.Core10.Enums.DynamicState.DynamicState':
---
---     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_KHR'
---
--- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_KHR'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_KHR'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_KHR'
---
--- == Issues
---
--- 1) Do we need to support Bresenham-style and smooth lines with more than
--- one rasterization sample? i.e. the equivalent of
--- glDisable(GL_MULTISAMPLE) in OpenGL when the framebuffer has more than
--- one sample?
---
--- __RESOLVED__: Yes. For simplicity, Bresenham line rasterization carries
--- forward a few restrictions from OpenGL, such as not supporting
--- per-sample shading, alpha to coverage, or alpha to one.
---
--- == Version History
---
--- -   Revision 1, 2019-05-09 (Jeff Bolz)
---
---     -   Initial draft
---
--- == See Also
---
--- No cross-references are available
---
--- == Document Notes
---
--- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_line_rasterization 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_line_rasterization  ( PhysicalDeviceLineRasterizationFeaturesKHR
-                                                    , PhysicalDeviceLineRasterizationPropertiesKHR
-                                                    , PipelineRasterizationLineStateCreateInfoKHR
-                                                    , LineRasterizationModeKHR
-                                                    ) where
-
-import Vulkan.CStruct (FromCStruct)
-import Vulkan.CStruct (ToCStruct)
-import Data.Kind (Type)
-
-data PhysicalDeviceLineRasterizationFeaturesKHR
-
-instance ToCStruct PhysicalDeviceLineRasterizationFeaturesKHR
-instance Show PhysicalDeviceLineRasterizationFeaturesKHR
-
-instance FromCStruct PhysicalDeviceLineRasterizationFeaturesKHR
-
-
-data PhysicalDeviceLineRasterizationPropertiesKHR
-
-instance ToCStruct PhysicalDeviceLineRasterizationPropertiesKHR
-instance Show PhysicalDeviceLineRasterizationPropertiesKHR
-
-instance FromCStruct PhysicalDeviceLineRasterizationPropertiesKHR
-
-
-data PipelineRasterizationLineStateCreateInfoKHR
-
-instance ToCStruct PipelineRasterizationLineStateCreateInfoKHR
-instance Show PipelineRasterizationLineStateCreateInfoKHR
-
-instance FromCStruct PipelineRasterizationLineStateCreateInfoKHR
-
-
-data LineRasterizationModeKHR
-
diff --git a/src/Vulkan/Extensions/VK_KHR_load_store_op_none.hs b/src/Vulkan/Extensions/VK_KHR_load_store_op_none.hs
--- a/src/Vulkan/Extensions/VK_KHR_load_store_op_none.hs
+++ b/src/Vulkan/Extensions/VK_KHR_load_store_op_none.hs
@@ -23,6 +23,11 @@
 -- [__Extension and Version Dependencies__]
 --     None
 --
+-- [__Deprecation State__]
+--
+--     -   /Promoted/ to
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.4-promotions Vulkan 1.4>
+--
 -- [__Contact__]
 --
 --     -   Shahbaz Youssefi
@@ -46,8 +51,7 @@
 --
 -- == Description
 --
--- This extension provides
--- 'Vulkan.Core10.Enums.AttachmentLoadOp.ATTACHMENT_LOAD_OP_NONE_KHR' and
+-- This extension provides 'ATTACHMENT_LOAD_OP_NONE_KHR' and
 -- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.ATTACHMENT_STORE_OP_NONE_KHR',
 -- which are identically promoted from the @VK_EXT_load_store_op_none@
 -- extension.
@@ -60,15 +64,21 @@
 --
 -- -   Extending 'Vulkan.Core10.Enums.AttachmentLoadOp.AttachmentLoadOp':
 --
---     -   'Vulkan.Core10.Enums.AttachmentLoadOp.ATTACHMENT_LOAD_OP_NONE_KHR'
+--     -   'ATTACHMENT_LOAD_OP_NONE_KHR'
 --
 -- -   Extending 'Vulkan.Core10.Enums.AttachmentStoreOp.AttachmentStoreOp':
 --
 --     -   'Vulkan.Extensions.VK_KHR_dynamic_rendering.ATTACHMENT_STORE_OP_NONE_KHR'
 --
+-- == Promotion to Vulkan 1.4
+--
+-- Functionality in this extension is included in core Vulkan 1.4 with the
+-- KHR suffix omitted. The original type, enum, and command names are still
+-- available as aliases of the core functionality.
+--
 -- While 'Vulkan.Core10.Enums.AttachmentStoreOp.ATTACHMENT_STORE_OP_NONE'
--- is part of Vulkan 1.3, this extension was not promoted to core either in
--- whole or in part. This functionality was promoted from
+-- is part of Vulkan 1.3, this extension was not promoted to core Vulkan
+-- 1.3 either in whole or in part. This functionality was promoted from
 -- @VK_KHR_dynamic_rendering@.
 --
 -- == Version History
@@ -84,11 +94,12 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_load_store_op_none Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_load_store_op_none 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_load_store_op_none  ( KHR_LOAD_STORE_OP_NONE_SPEC_VERSION
+module Vulkan.Extensions.VK_KHR_load_store_op_none  ( pattern ATTACHMENT_LOAD_OP_NONE_KHR
+                                                    , KHR_LOAD_STORE_OP_NONE_SPEC_VERSION
                                                     , pattern KHR_LOAD_STORE_OP_NONE_SPEC_VERSION
                                                     , KHR_LOAD_STORE_OP_NONE_EXTENSION_NAME
                                                     , pattern KHR_LOAD_STORE_OP_NONE_EXTENSION_NAME
@@ -96,7 +107,12 @@
                                                     ) where
 
 import Data.String (IsString)
+import Vulkan.Core10.Enums.AttachmentLoadOp (AttachmentLoadOp(ATTACHMENT_LOAD_OP_NONE))
 import Vulkan.Extensions.VK_KHR_dynamic_rendering (pattern ATTACHMENT_STORE_OP_NONE_KHR)
+-- No documentation found for TopLevel "VK_ATTACHMENT_LOAD_OP_NONE_KHR"
+pattern ATTACHMENT_LOAD_OP_NONE_KHR = ATTACHMENT_LOAD_OP_NONE
+
+
 type KHR_LOAD_STORE_OP_NONE_SPEC_VERSION = 1
 
 -- No documentation found for TopLevel "VK_KHR_LOAD_STORE_OP_NONE_SPEC_VERSION"
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
@@ -85,7 +85,7 @@
 --     layers of a 2D array image to slices of a 3D image and vice versa.
 --
 -- -   Allow negative height to be specified in the
---     'Vulkan.Core10.Pipeline.Viewport'::@height@ field to perform
+--     'Vulkan.Core10.GraphicsPipeline.Viewport'::@height@ field to perform
 --     y-inversion of the clip-space to framebuffer-space transform. This
 --     allows apps to avoid having to use @gl_Position.y = -gl_Position.y@
 --     in shaders also targeting other APIs.
@@ -104,9 +104,9 @@
 --     just support transfer operations.
 --
 -- -   Fix the inconsistency of how error conditions are returned between
---     the 'Vulkan.Core10.Pipeline.createGraphicsPipelines' and
---     'Vulkan.Core10.Pipeline.createComputePipelines' functions and the
---     'Vulkan.Core10.DescriptorSet.allocateDescriptorSets' and
+--     the 'Vulkan.Core10.GraphicsPipeline.createGraphicsPipelines' and
+--     'Vulkan.Core10.ComputePipeline.createComputePipelines' functions and
+--     the 'Vulkan.Core10.DescriptorSet.allocateDescriptorSets' and
 --     'Vulkan.Core10.CommandBuffer.allocateCommandBuffers' functions.
 --
 -- -   Add new 'ERROR_OUT_OF_POOL_MEMORY_KHR' error so implementations can
@@ -180,7 +180,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_maintenance1 Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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_maintenance10.hs b/src/Vulkan/Extensions/VK_KHR_maintenance10.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_KHR_maintenance10.hs
@@ -0,0 +1,1144 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_KHR_maintenance10 - device extension
+--
+-- = VK_KHR_maintenance10
+--
+-- [__Name String__]
+--     @VK_KHR_maintenance10@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     631
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
+--
+-- [__API Interactions__]
+--
+--     -   Interacts with VK_VERSION_1_3
+--
+--     -   Interacts with VK_VERSION_1_4
+--
+--     -   Interacts with VK_KHR_copy_commands2
+--
+--     -   Interacts with VK_KHR_dynamic_rendering
+--
+--     -   Interacts with VK_KHR_dynamic_rendering_local_read
+--
+--     -   Interacts with VK_KHR_format_feature_flags2
+--
+-- [__Contact__]
+--
+--     -   Mike Blumenkrantz
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_maintenance10] @zmike%0A*Here describe the issue or question you have about the VK_KHR_maintenance10 extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_KHR_maintenance10.adoc VK_KHR_maintenance10>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2025-05-13
+--
+-- [__Interactions and External Dependencies__]
+--
+--     -   This extension interacts with @VK_KHR_format_feature_flags2@
+--
+--     -   This extension interacts with @VK_EXT_extended_dynamic_state3@
+--
+--     -   This extension interacts with
+--         @VK_KHR_dynamic_rendering_local_read@
+--
+--     -   This extension interacts with @VK_KHR_depth_stencil_resolve@
+--
+-- [__Contributors__]
+--
+--     -   Mike Blumenkrantz, Valve
+--
+--     -   Piers Daniell, NVIDIA
+--
+--     -   Hans-Kristian Arntzen, Valve
+--
+-- == Description
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance10 VK_KHR_maintenance10>
+-- adds a collection of minor features, none of which would warrant an
+-- entire extension of their own.
+--
+-- The new features are as follows:
+--
+-- -   New image format feature bits that indicate support for copying
+--     depth or stencil aspects using non-graphics queue families
+--
+-- -   If
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
+--     is called with @pSampleMask@ set to @NULL@, it is treated as if the
+--     mask has all bits set to @1@.
+--
+-- -   Add vkCmdEndRendering2KHR as an extensible version of
+--     vkCmdEndRendering
+--
+-- -   Add input attachment information to dynamic rendering
+--
+-- -   Require that vertex inputs follow sRGB encoding when those formats
+--     are used, instead of being underspecified.
+--
+-- -   Add a query to determine if sRGB images are resolved in nonlinear or
+--     linear space by default
+--
+-- -   Add an optional feature to allow applications to override the
+--     default sRGB resolve behavior
+--
+-- -   Add resolve mode and depth-stencil resolve support to
+--     'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.cmdResolveImage2'
+--     to bring it in-line with render pass attachment resolves
+--
+-- == New Commands
+--
+-- -   'cmdEndRendering2KHR'
+--
+-- == New Structures
+--
+-- -   'RenderingEndInfoKHR'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceMaintenance10FeaturesKHR'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDeviceMaintenance10PropertiesKHR'
+--
+-- -   Extending
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingAttachmentInfo':
+--
+--     -   'RenderingAttachmentFlagsInfoKHR'
+--
+-- -   Extending
+--     'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.ResolveImageInfo2':
+--
+--     -   'ResolveImageModeInfoKHR'
+--
+-- == New Enums
+--
+-- -   'RenderingAttachmentFlagBitsKHR'
+--
+-- -   'ResolveImageFlagBitsKHR'
+--
+-- == New Bitmasks
+--
+-- -   'RenderingAttachmentFlagsKHR'
+--
+-- -   'ResolveImageFlagsKHR'
+--
+-- == New Enum Constants
+--
+-- -   'KHR_MAINTENANCE_10_EXTENSION_NAME'
+--
+-- -   'KHR_MAINTENANCE_10_SPEC_VERSION'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.AttachmentDescriptionFlagBits.AttachmentDescriptionFlagBits':
+--
+--     -   'Vulkan.Core10.Enums.AttachmentDescriptionFlagBits.ATTACHMENT_DESCRIPTION_RESOLVE_ENABLE_TRANSFER_FUNCTION_BIT_KHR'
+--
+--     -   'Vulkan.Core10.Enums.AttachmentDescriptionFlagBits.ATTACHMENT_DESCRIPTION_RESOLVE_SKIP_TRANSFER_FUNCTION_BIT_KHR'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_10_FEATURES_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_10_PROPERTIES_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDERING_ATTACHMENT_FLAGS_INFO_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDERING_END_INFO_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RESOLVE_IMAGE_MODE_INFO_KHR'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.4 Vulkan Version 1.4>
+-- or
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering_local_read VK_KHR_dynamic_rendering_local_read>
+-- and
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3 Vulkan Version 1.3>
+-- or
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering VK_KHR_dynamic_rendering>
+-- is supported:
+--
+-- -   Extending 'RenderingAttachmentFlagBitsKHR':
+--
+--     -   'RENDERING_ATTACHMENT_INPUT_ATTACHMENT_FEEDBACK_BIT_KHR'
+--
+-- -   Extending 'Vulkan.Core13.Enums.RenderingFlagBits.RenderingFlagBits':
+--
+--     -   'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_LOCAL_READ_CONCURRENT_ACCESS_CONTROL_BIT_KHR'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_format_feature_flags2 VK_KHR_format_feature_flags2>
+-- or
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3 Vulkan Version 1.3>
+-- is supported:
+--
+-- -   Extending
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FormatFeatureFlagBits2':
+--
+--     -   'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_DEPTH_COPY_ON_COMPUTE_QUEUE_BIT_KHR'
+--
+--     -   'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_DEPTH_COPY_ON_TRANSFER_QUEUE_BIT_KHR'
+--
+--     -   'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STENCIL_COPY_ON_COMPUTE_QUEUE_BIT_KHR'
+--
+--     -   'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STENCIL_COPY_ON_TRANSFER_QUEUE_BIT_KHR'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3 Vulkan Version 1.3>
+-- or
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_copy_commands2 VK_KHR_copy_commands2>
+-- is supported:
+--
+-- -   Extending 'ResolveImageFlagBitsKHR':
+--
+--     -   'RESOLVE_IMAGE_ENABLE_TRANSFER_FUNCTION_BIT_KHR'
+--
+--     -   'RESOLVE_IMAGE_SKIP_TRANSFER_FUNCTION_BIT_KHR'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3 Vulkan Version 1.3>
+-- or
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering VK_KHR_dynamic_rendering>
+-- is supported:
+--
+-- -   Extending 'RenderingAttachmentFlagBitsKHR':
+--
+--     -   'RENDERING_ATTACHMENT_RESOLVE_ENABLE_TRANSFER_FUNCTION_BIT_KHR'
+--
+--     -   'RENDERING_ATTACHMENT_RESOLVE_SKIP_TRANSFER_FUNCTION_BIT_KHR'
+--
+-- == Issues
+--
+-- None.
+--
+-- == Version History
+--
+-- -   Revision 1, 2025-05-13 (Mike Blumenkrantz)
+--
+--     -   Initial revision
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_maintenance10 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_maintenance10  ( cmdEndRendering2KHR
+                                               , PhysicalDeviceMaintenance10PropertiesKHR(..)
+                                               , PhysicalDeviceMaintenance10FeaturesKHR(..)
+                                               , RenderingEndInfoKHR(..)
+                                               , RenderingAttachmentFlagsInfoKHR(..)
+                                               , ResolveImageModeInfoKHR(..)
+                                               , RenderingAttachmentFlagsKHR
+                                               , RenderingAttachmentFlagBitsKHR( RENDERING_ATTACHMENT_RESOLVE_ENABLE_TRANSFER_FUNCTION_BIT_KHR
+                                                                               , RENDERING_ATTACHMENT_RESOLVE_SKIP_TRANSFER_FUNCTION_BIT_KHR
+                                                                               , RENDERING_ATTACHMENT_INPUT_ATTACHMENT_FEEDBACK_BIT_KHR
+                                                                               , ..
+                                                                               )
+                                               , ResolveImageFlagsKHR
+                                               , ResolveImageFlagBitsKHR( RESOLVE_IMAGE_ENABLE_TRANSFER_FUNCTION_BIT_KHR
+                                                                        , RESOLVE_IMAGE_SKIP_TRANSFER_FUNCTION_BIT_KHR
+                                                                        , ..
+                                                                        )
+                                               , KHR_MAINTENANCE_10_SPEC_VERSION
+                                               , pattern KHR_MAINTENANCE_10_SPEC_VERSION
+                                               , KHR_MAINTENANCE_10_EXTENSION_NAME
+                                               , pattern KHR_MAINTENANCE_10_EXTENSION_NAME
+                                               ) where
+
+import Data.Bits (Bits)
+import Data.Bits (FiniteBits)
+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 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.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.Kind (Type)
+import Control.Monad.Trans.Cont (ContT(..))
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.CStruct.Extends (forgetExtensions)
+import Vulkan.NamedType ((:::))
+import Vulkan.Core10.FundamentalTypes (Bool32)
+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.Dynamic (DeviceCmds(pVkCmdEndRendering2KHR))
+import Vulkan.CStruct.Extends (Extends)
+import Vulkan.CStruct.Extends (Extendss)
+import Vulkan.CStruct.Extends (Extensible(..))
+import Vulkan.Core10.FundamentalTypes (Flags)
+import Vulkan.CStruct.Extends (PeekChain)
+import Vulkan.CStruct.Extends (PeekChain(..))
+import Vulkan.CStruct.Extends (PokeChain)
+import Vulkan.CStruct.Extends (PokeChain(..))
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_fragment_density_map_offset (RenderPassFragmentDensityMapOffsetEndInfoEXT)
+import Vulkan.Core12.Enums.ResolveModeFlagBits (ResolveModeFlagBits)
+import Vulkan.CStruct.Extends (SomeStruct)
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_10_FEATURES_KHR))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_10_PROPERTIES_KHR))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RENDERING_ATTACHMENT_FLAGS_INFO_KHR))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RENDERING_END_INFO_KHR))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RESOLVE_IMAGE_MODE_INFO_KHR))
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdEndRendering2KHR
+  :: FunPtr (Ptr CommandBuffer_T -> Ptr (SomeStruct RenderingEndInfoKHR) -> IO ()) -> Ptr CommandBuffer_T -> Ptr (SomeStruct RenderingEndInfoKHR) -> IO ()
+
+-- | vkCmdEndRendering2KHR - 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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-submission-order submission order>.
+--
+-- There is no implicit ordering between separate render passes, even in
+-- the same command buffer, and even when the attachments match. Some
+-- applications rely on the continuation of
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-order rasterization order>
+-- between multiple render passes with attachments defined in the same way,
+-- in order to perform non-rendering operations (such as copies or compute
+-- operations) between draw calls, but this has never been required by the
+-- specification. There is also no explicit barrier currently in the API
+-- that provides the guarantee that applications rely on without additional
+-- performance penalties.
+--
+-- New applications should avoid relying on this ordering until an
+-- appropriate barrier is added to the API.
+--
+-- Implementations where applications are performing this splitting are
+-- encouraged to continue supporting this guarantee until a suitable
+-- barrier is added to the API.
+--
+-- Existing applications relying on this ordering should expect that it
+-- will continue working on platforms where it currently does. Once a new
+-- extension adds support for a new barrier, developers are encouraged to
+-- adapt their applications to use this when available.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdEndRendering2KHR-None-10610# The current render pass
+--     instance /must/ have been begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--
+-- -   #VUID-vkCmdEndRendering2KHR-commandBuffer-10611# The current render
+--     pass instance /must/ have been begun in @commandBuffer@
+--
+-- -   #VUID-vkCmdEndRendering2KHR-None-10612# This command /must/ not be
+--     recorded when transform feedback is active
+--
+-- -   #VUID-vkCmdEndRendering2KHR-None-10613# If
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBeginQuery'* was called
+--     within the render pass, the corresponding
+--     'Vulkan.Core10.CommandBufferBuilding.cmdEndQuery'* /must/ have been
+--     called subsequently within the same subpass
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdEndRendering2KHR-commandBuffer-parameter# @commandBuffer@
+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdEndRendering2KHR-pRenderingEndInfo-parameter# If
+--     @pRenderingEndInfo@ is not @NULL@, @pRenderingEndInfo@ /must/ be a
+--     valid pointer to a valid 'RenderingEndInfoKHR' structure
+--
+-- -   #VUID-vkCmdEndRendering2KHR-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-vkCmdEndRendering2KHR-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
+--
+-- -   #VUID-vkCmdEndRendering2KHR-renderpass# This command /must/ only be
+--     called inside of a render pass instance
+--
+-- -   #VUID-vkCmdEndRendering2KHR-suspended# This command /must/ not be
+--     called between suspended render pass instances
+--
+-- -   #VUID-vkCmdEndRendering2KHR-videocoding# This command /must/ only be
+--     called outside of a video coding scope
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Inside                                                                                                                 | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       | State                                                                                                                                  |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdEndRendering2KHR is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_fragment_density_map_offset VK_EXT_fragment_density_map_offset>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance10 VK_KHR_maintenance10>,
+-- 'Vulkan.Core10.Handles.CommandBuffer', 'RenderingEndInfoKHR'
+cmdEndRendering2KHR :: forall a io
+                     . (Extendss RenderingEndInfoKHR a, PokeChain a, MonadIO io)
+                    => -- | @commandBuffer@ is the command buffer in which to record the command.
+                       CommandBuffer
+                    -> -- | @pRenderingEndInfo@ is @NULL@ or a pointer to a 'RenderingEndInfoKHR'
+                       -- structure containing information about how the render pass will be
+                       -- ended.
+                       ("renderingEndInfo" ::: Maybe (RenderingEndInfoKHR a))
+                    -> io ()
+cmdEndRendering2KHR commandBuffer renderingEndInfo = liftIO . evalContT $ do
+  let vkCmdEndRendering2KHRPtr = pVkCmdEndRendering2KHR (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdEndRendering2KHRPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdEndRendering2KHR is null" Nothing Nothing
+  let vkCmdEndRendering2KHR' = mkVkCmdEndRendering2KHR vkCmdEndRendering2KHRPtr
+  pRenderingEndInfo <- case (renderingEndInfo) of
+    Nothing -> pure nullPtr
+    Just j -> ContT $ withCStruct (j)
+  lift $ traceAroundEvent "vkCmdEndRendering2KHR" (vkCmdEndRendering2KHR'
+                                                     (commandBufferHandle (commandBuffer))
+                                                     (forgetExtensions pRenderingEndInfo))
+  pure $ ()
+
+
+-- | VkPhysicalDeviceMaintenance10PropertiesKHR - Structure describing
+-- various implementation-defined properties introduced with
+-- VK_KHR_maintenance10
+--
+-- = Description
+--
+-- Implementations supporting
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance10 maintenance10>
+-- /should/ set @resolveSrgbFormatAppliesTransferFunction@ to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE'.
+--
+-- If the 'PhysicalDeviceMaintenance10PropertiesKHR' 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.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance10 VK_KHR_maintenance10>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceMaintenance10PropertiesKHR = PhysicalDeviceMaintenance10PropertiesKHR
+  { -- | #limits-rgba4OpaqueBlackSwizzled# @rgba4OpaqueBlackSwizzled@ indicates
+    -- whether correct swizzling is applied to the opaque black border color
+    -- when using either the
+    -- 'Vulkan.Core10.Enums.Format.FORMAT_B4G4R4A4_UNORM_PACK16' or
+    -- 'Vulkan.Core10.Enums.Format.FORMAT_R4G4B4A4_UNORM_PACK16' format. If it
+    -- is 'Vulkan.Core10.FundamentalTypes.TRUE', the implementation will
+    -- correctly produce an opaque black border color with these formats. If it
+    -- is 'Vulkan.Core10.FundamentalTypes.FALSE', the implementation /may/ swap
+    -- the first channel with the alpha channel for the border color when
+    -- sampling.
+    rgba4OpaqueBlackSwizzled :: Bool
+  , -- | #limits-resolveSrgbFormatAppliesTransferFunction#
+    -- @resolveSrgbFormatAppliesTransferFunction@ indicates whether resolving a
+    -- multi-sampled sRGB format to single-sampled sRGB by a weighted average
+    -- converts the samples to linear before averaging. This applies to both
+    -- attachment resolves in a render pass and standalone resolve commands. If
+    -- 'Vulkan.Core10.FundamentalTypes.TRUE', implementation always converts to
+    -- linear before averaging unless overridden. If
+    -- 'Vulkan.Core10.FundamentalTypes.FALSE', implementation never converts to
+    -- linear before averaging unless overridden.
+    resolveSrgbFormatAppliesTransferFunction :: Bool
+  , -- | #limits-resolveSrgbFormatSupportsTransferFunctionControl#
+    -- @resolveSrgbFormatSupportsTransferFunctionControl@ indicates whether the
+    -- implementation supports overriding the default behavior in
+    -- @resolveSrgbFormatAppliesTransferFunction@ in render passes and
+    -- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.cmdResolveImage2'.
+    resolveSrgbFormatSupportsTransferFunctionControl :: Bool
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceMaintenance10PropertiesKHR)
+#endif
+deriving instance Show PhysicalDeviceMaintenance10PropertiesKHR
+
+instance ToCStruct PhysicalDeviceMaintenance10PropertiesKHR where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceMaintenance10PropertiesKHR{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_10_PROPERTIES_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (rgba4OpaqueBlackSwizzled))
+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (resolveSrgbFormatAppliesTransferFunction))
+    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (resolveSrgbFormatSupportsTransferFunctionControl))
+    f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_10_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))
+    f
+
+instance FromCStruct PhysicalDeviceMaintenance10PropertiesKHR where
+  peekCStruct p = do
+    rgba4OpaqueBlackSwizzled <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    resolveSrgbFormatAppliesTransferFunction <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
+    resolveSrgbFormatSupportsTransferFunctionControl <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))
+    pure $ PhysicalDeviceMaintenance10PropertiesKHR
+             (bool32ToBool rgba4OpaqueBlackSwizzled)
+             (bool32ToBool resolveSrgbFormatAppliesTransferFunction)
+             (bool32ToBool resolveSrgbFormatSupportsTransferFunctionControl)
+
+instance Storable PhysicalDeviceMaintenance10PropertiesKHR where
+  sizeOf ~_ = 32
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceMaintenance10PropertiesKHR where
+  zero = PhysicalDeviceMaintenance10PropertiesKHR
+           zero
+           zero
+           zero
+
+
+-- | VkPhysicalDeviceMaintenance10FeaturesKHR - Structure describing whether
+-- the implementation supports maintenance10 functionality
+--
+-- = Members
+--
+-- This structure describes the following feature:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceMaintenance10FeaturesKHR' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceMaintenance10FeaturesKHR', it /must/ add an instance of
+-- the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance10 VK_KHR_maintenance10>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceMaintenance10FeaturesKHR = PhysicalDeviceMaintenance10FeaturesKHR
+  { -- | #features-maintenance10# @maintenance10@ indicates that the
+    -- implementation supports the following:
+    --
+    -- -   New image format feature bits that indicate support for copying
+    --     depth or stencil aspects using non-graphics queue families
+    --
+    -- -   If
+    --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
+    --     is called with @pSampleMask@ set to @NULL@, it is treated as if the
+    --     mask has all bits set to @1@.
+    --
+    -- -   Add 'cmdEndRendering2KHR' as an extensible version of
+    --     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdEndRendering'
+    --
+    -- -   Add input attachment information to dynamic rendering
+    --
+    -- -   Require that vertex inputs follow sRGB encoding when those formats
+    --     are used, instead of being underspecified.
+    --
+    -- -   Add a query to determine if sRGB images are resolved in nonlinear or
+    --     linear space by default
+    --
+    -- -   Add an optional feature to allow applications to override the
+    --     default sRGB resolve behavior
+    --
+    -- -   Add resolve mode and depth-stencil resolve support to
+    --     'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.cmdResolveImage2'
+    --     to bring it in-line with render pass attachment resolves
+    maintenance10 :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceMaintenance10FeaturesKHR)
+#endif
+deriving instance Show PhysicalDeviceMaintenance10FeaturesKHR
+
+instance ToCStruct PhysicalDeviceMaintenance10FeaturesKHR where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceMaintenance10FeaturesKHR{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_10_FEATURES_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (maintenance10))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_10_FEATURES_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceMaintenance10FeaturesKHR where
+  peekCStruct p = do
+    maintenance10 <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDeviceMaintenance10FeaturesKHR
+             (bool32ToBool maintenance10)
+
+instance Storable PhysicalDeviceMaintenance10FeaturesKHR where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceMaintenance10FeaturesKHR where
+  zero = PhysicalDeviceMaintenance10FeaturesKHR
+           zero
+
+
+-- | VkRenderingEndInfoKHR - Structure specifying render pass end information
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkRenderingEndInfoKHR-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDERING_END_INFO_KHR'
+--
+-- -   #VUID-VkRenderingEndInfoKHR-pNext-pNext# @pNext@ /must/ be @NULL@ or
+--     a pointer to a valid instance of
+--     'Vulkan.Extensions.VK_EXT_fragment_density_map_offset.RenderPassFragmentDensityMapOffsetEndInfoEXT'
+--
+-- -   #VUID-VkRenderingEndInfoKHR-sType-unique# The @sType@ value of each
+--     structure in the @pNext@ chain /must/ be unique
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_fragment_density_map_offset VK_EXT_fragment_density_map_offset>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance10 VK_KHR_maintenance10>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'cmdEndRendering2KHR', 'cmdEndRendering2KHR'
+data RenderingEndInfoKHR (es :: [Type]) = RenderingEndInfoKHR
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
+    next :: Chain es }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (RenderingEndInfoKHR (es :: [Type]))
+#endif
+deriving instance Show (Chain es) => Show (RenderingEndInfoKHR es)
+
+instance Extensible RenderingEndInfoKHR where
+  extensibleTypeName = "RenderingEndInfoKHR"
+  setNext _ next' = RenderingEndInfoKHR{next = next'}
+  getNext RenderingEndInfoKHR{..} = next
+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends RenderingEndInfoKHR e => b) -> Maybe b
+  extends _ f
+    | Just Refl <- eqT @e @RenderPassFragmentDensityMapOffsetEndInfoEXT = Just f
+    | otherwise = Nothing
+
+instance ( Extendss RenderingEndInfoKHR es
+         , PokeChain es ) => ToCStruct (RenderingEndInfoKHR es) where
+  withCStruct x f = allocaBytes 16 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p RenderingEndInfoKHR{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RENDERING_END_INFO_KHR)
+    pNext'' <- fmap castPtr . ContT $ withChain (next)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
+    lift $ f
+  cStructSize = 16
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RENDERING_END_INFO_KHR)
+    pNext' <- fmap castPtr . ContT $ withZeroChain @es
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
+    lift $ f
+
+instance ( Extendss RenderingEndInfoKHR es
+         , PeekChain es ) => FromCStruct (RenderingEndInfoKHR es) where
+  peekCStruct p = do
+    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
+    next <- peekChain (castPtr pNext)
+    pure $ RenderingEndInfoKHR
+             next
+
+instance es ~ '[] => Zero (RenderingEndInfoKHR es) where
+  zero = RenderingEndInfoKHR
+           ()
+
+
+-- | VkRenderingAttachmentFlagsInfoKHR - Structure specifying flags extending
+-- a rendering attachment
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkRenderingAttachmentFlagsInfoKHR-flags-11755# @flags@ /must/
+--     not include 'RENDERING_ATTACHMENT_INPUT_ATTACHMENT_FEEDBACK_BIT_KHR'
+--     if the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-dynamicRenderingLocalRead dynamicRenderingLocalRead>
+--     feature is not enabled
+--
+-- -   #VUID-VkRenderingAttachmentFlagsInfoKHR-flags-11756# If @flags@
+--     includes
+--     'RENDERING_ATTACHMENT_RESOLVE_SKIP_TRANSFER_FUNCTION_BIT_KHR',
+--     @flags@ /must/ not include
+--     'RENDERING_ATTACHMENT_RESOLVE_ENABLE_TRANSFER_FUNCTION_BIT_KHR'
+--
+-- -   #VUID-VkRenderingAttachmentFlagsInfoKHR-flags-11757# If @flags@
+--     includes
+--     'RENDERING_ATTACHMENT_RESOLVE_SKIP_TRANSFER_FUNCTION_BIT_KHR' or
+--     'RENDERING_ATTACHMENT_RESOLVE_ENABLE_TRANSFER_FUNCTION_BIT_KHR',
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-resolveSrgbFormatSupportsTransferFunctionControl resolveSrgbFormatSupportsTransferFunctionControl>
+--     /must/ be 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkRenderingAttachmentFlagsInfoKHR-sType-sType# @sType@ /must/
+--     be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDERING_ATTACHMENT_FLAGS_INFO_KHR'
+--
+-- -   #VUID-VkRenderingAttachmentFlagsInfoKHR-flags-parameter# @flags@
+--     /must/ be a valid combination of 'RenderingAttachmentFlagBitsKHR'
+--     values
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingAttachmentInfo'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance10 VK_KHR_maintenance10>,
+-- 'RenderingAttachmentFlagsKHR',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data RenderingAttachmentFlagsInfoKHR = RenderingAttachmentFlagsInfoKHR
+  { -- | @flags@ is a bitmask of 'RenderingAttachmentFlagsKHR'
+    flags :: RenderingAttachmentFlagsKHR }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (RenderingAttachmentFlagsInfoKHR)
+#endif
+deriving instance Show RenderingAttachmentFlagsInfoKHR
+
+instance ToCStruct RenderingAttachmentFlagsInfoKHR where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p RenderingAttachmentFlagsInfoKHR{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RENDERING_ATTACHMENT_FLAGS_INFO_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr RenderingAttachmentFlagsKHR)) (flags)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RENDERING_ATTACHMENT_FLAGS_INFO_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    f
+
+instance FromCStruct RenderingAttachmentFlagsInfoKHR where
+  peekCStruct p = do
+    flags <- peek @RenderingAttachmentFlagsKHR ((p `plusPtr` 16 :: Ptr RenderingAttachmentFlagsKHR))
+    pure $ RenderingAttachmentFlagsInfoKHR
+             flags
+
+instance Storable RenderingAttachmentFlagsInfoKHR where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero RenderingAttachmentFlagsInfoKHR where
+  zero = RenderingAttachmentFlagsInfoKHR
+           zero
+
+
+-- | VkResolveImageModeInfoKHR - Structure specifying additional control for
+-- VkResolveImageInfo2
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkResolveImageModeInfoKHR-flags-10995# If @flags@ includes
+--     'RESOLVE_IMAGE_SKIP_TRANSFER_FUNCTION_BIT_KHR', @flags@ /must/ not
+--     include 'RESOLVE_IMAGE_ENABLE_TRANSFER_FUNCTION_BIT_KHR'
+--
+-- -   #VUID-VkResolveImageModeInfoKHR-flags-10996# If @flags@ includes
+--     'RESOLVE_IMAGE_SKIP_TRANSFER_FUNCTION_BIT_KHR' or
+--     'RESOLVE_IMAGE_ENABLE_TRANSFER_FUNCTION_BIT_KHR',
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-resolveSrgbFormatSupportsTransferFunctionControl resolveSrgbFormatSupportsTransferFunctionControl>
+--     /must/ be 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-VkResolveImageModeInfoKHR-flags-10997# If @flags@ includes
+--     'RESOLVE_IMAGE_SKIP_TRANSFER_FUNCTION_BIT_KHR' or
+--     'RESOLVE_IMAGE_ENABLE_TRANSFER_FUNCTION_BIT_KHR', @resolveMode@
+--     /must/ be equal to
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_AVERAGE_BIT'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkResolveImageModeInfoKHR-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RESOLVE_IMAGE_MODE_INFO_KHR'
+--
+-- -   #VUID-VkResolveImageModeInfoKHR-flags-parameter# @flags@ /must/ be a
+--     valid combination of 'ResolveImageFlagBitsKHR' values
+--
+-- -   #VUID-VkResolveImageModeInfoKHR-resolveMode-parameter# If
+--     @resolveMode@ is not @0@, @resolveMode@ /must/ be a valid
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.ResolveModeFlagBits' value
+--
+-- -   #VUID-VkResolveImageModeInfoKHR-stencilResolveMode-parameter# If
+--     @stencilResolveMode@ is not @0@, @stencilResolveMode@ /must/ be a
+--     valid 'Vulkan.Core12.Enums.ResolveModeFlagBits.ResolveModeFlagBits'
+--     value
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.ResolveImageInfo2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance10 VK_KHR_maintenance10>,
+-- 'ResolveImageFlagsKHR',
+-- 'Vulkan.Core12.Enums.ResolveModeFlagBits.ResolveModeFlagBits',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data ResolveImageModeInfoKHR = ResolveImageModeInfoKHR
+  { -- | @flags@ is a bitmask of 'ResolveImageFlagBitsKHR'.
+    flags :: ResolveImageFlagsKHR
+  , -- | @resolveMode@ is a
+    -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.ResolveModeFlagBits' value
+    -- defining how @srcImage@ will be resolved into @dstImage@ when resolving
+    -- non-stencil values.
+    resolveMode :: ResolveModeFlagBits
+  , -- | @stencilResolveMode@ is a
+    -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.ResolveModeFlagBits' value
+    -- defining how @srcImage@ will be resolved into @dstImage@ when resolving
+    -- stencil values.
+    stencilResolveMode :: ResolveModeFlagBits
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (ResolveImageModeInfoKHR)
+#endif
+deriving instance Show ResolveImageModeInfoKHR
+
+instance ToCStruct ResolveImageModeInfoKHR where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p ResolveImageModeInfoKHR{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RESOLVE_IMAGE_MODE_INFO_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr ResolveImageFlagsKHR)) (flags)
+    poke ((p `plusPtr` 20 :: Ptr ResolveModeFlagBits)) (resolveMode)
+    poke ((p `plusPtr` 24 :: Ptr ResolveModeFlagBits)) (stencilResolveMode)
+    f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RESOLVE_IMAGE_MODE_INFO_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    f
+
+instance FromCStruct ResolveImageModeInfoKHR where
+  peekCStruct p = do
+    flags <- peek @ResolveImageFlagsKHR ((p `plusPtr` 16 :: Ptr ResolveImageFlagsKHR))
+    resolveMode <- peek @ResolveModeFlagBits ((p `plusPtr` 20 :: Ptr ResolveModeFlagBits))
+    stencilResolveMode <- peek @ResolveModeFlagBits ((p `plusPtr` 24 :: Ptr ResolveModeFlagBits))
+    pure $ ResolveImageModeInfoKHR
+             flags resolveMode stencilResolveMode
+
+instance Storable ResolveImageModeInfoKHR where
+  sizeOf ~_ = 32
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero ResolveImageModeInfoKHR where
+  zero = ResolveImageModeInfoKHR
+           zero
+           zero
+           zero
+
+
+type RenderingAttachmentFlagsKHR = RenderingAttachmentFlagBitsKHR
+
+-- | VkRenderingAttachmentFlagBitsKHR - Bitmask specifying additional
+-- properties of a rendering attachment
+--
+-- = Description
+--
+-- -   'RENDERING_ATTACHMENT_INPUT_ATTACHMENT_FEEDBACK_BIT_KHR' specifies
+--     that the attachment /can/ be used concurrently as both an input
+--     attachment and a write-only attachment during the render pass,
+--     creating a feedback loop while processing a fragment, and without a
+--     'Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_BY_REGION_BIT'
+--     barrier separating the write attachment and input attachment usage.
+--     Using this flag does not remove the general requirement to use a
+--     'Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_BY_REGION_BIT'
+--     barrier to resolve hazards when two different fragments accesses a
+--     particular attachment region, where one of them performs an
+--     attachment write, and a subsequent fragment performs an input
+--     attachment read. If
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_LOCAL_READ_CONCURRENT_ACCESS_CONTROL_BIT_KHR'
+--     is specified in the rendering info, this flag /must/ be set for an
+--     attachment to be used concurrently as an input attachment and a
+--     write attachment in this manner. If
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_LOCAL_READ_CONCURRENT_ACCESS_CONTROL_BIT_KHR'
+--     is not specified in the rendering info, this flag is implied to be
+--     set for any attachment which has a combination of image layouts and
+--     image view usage flags which support input attachment usage.
+--
+-- -   'RENDERING_ATTACHMENT_RESOLVE_SKIP_TRANSFER_FUNCTION_BIT_KHR'
+--     specifies that resolve operations happening to an sRGB encoded
+--     attachment /must/ not convert samples from nonlinear to linear
+--     before averaging.
+--
+-- -   'RENDERING_ATTACHMENT_RESOLVE_ENABLE_TRANSFER_FUNCTION_BIT_KHR'
+--     specifies that resolve operations happening to an sRGB encoded
+--     attachment /must/ convert samples from nonlinear to linear before
+--     averaging.
+--
+-- 'RENDERING_ATTACHMENT_INPUT_ATTACHMENT_FEEDBACK_BIT_KHR' is intended to
+-- give implementations similar information as a subpass where an
+-- attachment could be used as both a color attachment and input
+-- attachment. Some implementations require extra work to make this
+-- scenario work beyond just considering the image layouts. Implementations
+-- which have no such considerations may treat this flag as a noop. The
+-- primary use case for this flag is to enable feedback loops inside a
+-- single shader.
+--
+-- Applications are encouraged to use
+-- 'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_LOCAL_READ_CONCURRENT_ACCESS_CONTROL_BIT_KHR'
+-- if
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance10 maintenance10>
+-- is available and they use feedback loops with
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering_local_read VK_KHR_dynamic_rendering_local_read>.
+-- Feedback loops are still allowed when not using the rendering flag, but
+-- the performance implication was an oversight in the original definition
+-- of
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering_local_read VK_KHR_dynamic_rendering_local_read>.
+--
+-- In some scenarios, resolving sRGB in nonlinear space instead of the
+-- expected linear space can improve perceptual aliasing at the cost of
+-- inaccurate color blending.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance10 VK_KHR_maintenance10>,
+-- 'RenderingAttachmentFlagsKHR'
+newtype RenderingAttachmentFlagBitsKHR = RenderingAttachmentFlagBitsKHR Flags
+  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
+
+-- No documentation found for Nested "VkRenderingAttachmentFlagBitsKHR" "VK_RENDERING_ATTACHMENT_RESOLVE_ENABLE_TRANSFER_FUNCTION_BIT_KHR"
+pattern RENDERING_ATTACHMENT_RESOLVE_ENABLE_TRANSFER_FUNCTION_BIT_KHR = RenderingAttachmentFlagBitsKHR 0x00000004
+
+-- No documentation found for Nested "VkRenderingAttachmentFlagBitsKHR" "VK_RENDERING_ATTACHMENT_RESOLVE_SKIP_TRANSFER_FUNCTION_BIT_KHR"
+pattern RENDERING_ATTACHMENT_RESOLVE_SKIP_TRANSFER_FUNCTION_BIT_KHR = RenderingAttachmentFlagBitsKHR 0x00000002
+
+-- No documentation found for Nested "VkRenderingAttachmentFlagBitsKHR" "VK_RENDERING_ATTACHMENT_INPUT_ATTACHMENT_FEEDBACK_BIT_KHR"
+pattern RENDERING_ATTACHMENT_INPUT_ATTACHMENT_FEEDBACK_BIT_KHR = RenderingAttachmentFlagBitsKHR 0x00000001
+
+conNameRenderingAttachmentFlagBitsKHR :: String
+conNameRenderingAttachmentFlagBitsKHR = "RenderingAttachmentFlagBitsKHR"
+
+enumPrefixRenderingAttachmentFlagBitsKHR :: String
+enumPrefixRenderingAttachmentFlagBitsKHR = "RENDERING_ATTACHMENT_"
+
+showTableRenderingAttachmentFlagBitsKHR :: [(RenderingAttachmentFlagBitsKHR, String)]
+showTableRenderingAttachmentFlagBitsKHR =
+  [
+    ( RENDERING_ATTACHMENT_RESOLVE_ENABLE_TRANSFER_FUNCTION_BIT_KHR
+    , "RESOLVE_ENABLE_TRANSFER_FUNCTION_BIT_KHR"
+    )
+  ,
+    ( RENDERING_ATTACHMENT_RESOLVE_SKIP_TRANSFER_FUNCTION_BIT_KHR
+    , "RESOLVE_SKIP_TRANSFER_FUNCTION_BIT_KHR"
+    )
+  ,
+    ( RENDERING_ATTACHMENT_INPUT_ATTACHMENT_FEEDBACK_BIT_KHR
+    , "INPUT_ATTACHMENT_FEEDBACK_BIT_KHR"
+    )
+  ]
+
+instance Show RenderingAttachmentFlagBitsKHR where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixRenderingAttachmentFlagBitsKHR
+      showTableRenderingAttachmentFlagBitsKHR
+      conNameRenderingAttachmentFlagBitsKHR
+      (\(RenderingAttachmentFlagBitsKHR x) -> x)
+      (\x -> showString "0x" . showHex x)
+
+instance Read RenderingAttachmentFlagBitsKHR where
+  readPrec =
+    enumReadPrec
+      enumPrefixRenderingAttachmentFlagBitsKHR
+      showTableRenderingAttachmentFlagBitsKHR
+      conNameRenderingAttachmentFlagBitsKHR
+      RenderingAttachmentFlagBitsKHR
+
+type ResolveImageFlagsKHR = ResolveImageFlagBitsKHR
+
+-- | VkResolveImageFlagBitsKHR - Bitmask specifying additional properties of
+-- a resolve image operation
+--
+-- = Description
+--
+-- -   'RESOLVE_IMAGE_SKIP_TRANSFER_FUNCTION_BIT_KHR' specifies that
+--     resolve operations happening to an sRGB encoded image /must/ not
+--     convert samples from nonlinear to linear before averaging.
+--
+-- -   'RESOLVE_IMAGE_ENABLE_TRANSFER_FUNCTION_BIT_KHR' specifies that
+--     resolve operations happening to an sRGB encoded image /must/ convert
+--     samples from nonlinear to linear before averaging.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance10 VK_KHR_maintenance10>,
+-- 'ResolveImageFlagsKHR'
+newtype ResolveImageFlagBitsKHR = ResolveImageFlagBitsKHR Flags
+  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
+
+-- No documentation found for Nested "VkResolveImageFlagBitsKHR" "VK_RESOLVE_IMAGE_ENABLE_TRANSFER_FUNCTION_BIT_KHR"
+pattern RESOLVE_IMAGE_ENABLE_TRANSFER_FUNCTION_BIT_KHR = ResolveImageFlagBitsKHR 0x00000002
+
+-- No documentation found for Nested "VkResolveImageFlagBitsKHR" "VK_RESOLVE_IMAGE_SKIP_TRANSFER_FUNCTION_BIT_KHR"
+pattern RESOLVE_IMAGE_SKIP_TRANSFER_FUNCTION_BIT_KHR = ResolveImageFlagBitsKHR 0x00000001
+
+conNameResolveImageFlagBitsKHR :: String
+conNameResolveImageFlagBitsKHR = "ResolveImageFlagBitsKHR"
+
+enumPrefixResolveImageFlagBitsKHR :: String
+enumPrefixResolveImageFlagBitsKHR = "RESOLVE_IMAGE_"
+
+showTableResolveImageFlagBitsKHR :: [(ResolveImageFlagBitsKHR, String)]
+showTableResolveImageFlagBitsKHR =
+  [
+    ( RESOLVE_IMAGE_ENABLE_TRANSFER_FUNCTION_BIT_KHR
+    , "ENABLE_TRANSFER_FUNCTION_BIT_KHR"
+    )
+  ,
+    ( RESOLVE_IMAGE_SKIP_TRANSFER_FUNCTION_BIT_KHR
+    , "SKIP_TRANSFER_FUNCTION_BIT_KHR"
+    )
+  ]
+
+instance Show ResolveImageFlagBitsKHR where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixResolveImageFlagBitsKHR
+      showTableResolveImageFlagBitsKHR
+      conNameResolveImageFlagBitsKHR
+      (\(ResolveImageFlagBitsKHR x) -> x)
+      (\x -> showString "0x" . showHex x)
+
+instance Read ResolveImageFlagBitsKHR where
+  readPrec =
+    enumReadPrec
+      enumPrefixResolveImageFlagBitsKHR
+      showTableResolveImageFlagBitsKHR
+      conNameResolveImageFlagBitsKHR
+      ResolveImageFlagBitsKHR
+
+type KHR_MAINTENANCE_10_SPEC_VERSION = 1
+
+-- No documentation found for TopLevel "VK_KHR_MAINTENANCE_10_SPEC_VERSION"
+pattern KHR_MAINTENANCE_10_SPEC_VERSION :: forall a . Integral a => a
+pattern KHR_MAINTENANCE_10_SPEC_VERSION = 1
+
+
+type KHR_MAINTENANCE_10_EXTENSION_NAME = "VK_KHR_maintenance10"
+
+-- No documentation found for TopLevel "VK_KHR_MAINTENANCE_10_EXTENSION_NAME"
+pattern KHR_MAINTENANCE_10_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern KHR_MAINTENANCE_10_EXTENSION_NAME = "VK_KHR_maintenance10"
+
diff --git a/src/Vulkan/Extensions/VK_KHR_maintenance10.hs-boot b/src/Vulkan/Extensions/VK_KHR_maintenance10.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_KHR_maintenance10.hs-boot
@@ -0,0 +1,309 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_KHR_maintenance10 - device extension
+--
+-- = VK_KHR_maintenance10
+--
+-- [__Name String__]
+--     @VK_KHR_maintenance10@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     631
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
+--
+-- [__API Interactions__]
+--
+--     -   Interacts with VK_VERSION_1_3
+--
+--     -   Interacts with VK_VERSION_1_4
+--
+--     -   Interacts with VK_KHR_copy_commands2
+--
+--     -   Interacts with VK_KHR_dynamic_rendering
+--
+--     -   Interacts with VK_KHR_dynamic_rendering_local_read
+--
+--     -   Interacts with VK_KHR_format_feature_flags2
+--
+-- [__Contact__]
+--
+--     -   Mike Blumenkrantz
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_maintenance10] @zmike%0A*Here describe the issue or question you have about the VK_KHR_maintenance10 extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_KHR_maintenance10.adoc VK_KHR_maintenance10>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2025-05-13
+--
+-- [__Interactions and External Dependencies__]
+--
+--     -   This extension interacts with @VK_KHR_format_feature_flags2@
+--
+--     -   This extension interacts with @VK_EXT_extended_dynamic_state3@
+--
+--     -   This extension interacts with
+--         @VK_KHR_dynamic_rendering_local_read@
+--
+--     -   This extension interacts with @VK_KHR_depth_stencil_resolve@
+--
+-- [__Contributors__]
+--
+--     -   Mike Blumenkrantz, Valve
+--
+--     -   Piers Daniell, NVIDIA
+--
+--     -   Hans-Kristian Arntzen, Valve
+--
+-- == Description
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance10 VK_KHR_maintenance10>
+-- adds a collection of minor features, none of which would warrant an
+-- entire extension of their own.
+--
+-- The new features are as follows:
+--
+-- -   New image format feature bits that indicate support for copying
+--     depth or stencil aspects using non-graphics queue families
+--
+-- -   If
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
+--     is called with @pSampleMask@ set to @NULL@, it is treated as if the
+--     mask has all bits set to @1@.
+--
+-- -   Add vkCmdEndRendering2KHR as an extensible version of
+--     vkCmdEndRendering
+--
+-- -   Add input attachment information to dynamic rendering
+--
+-- -   Require that vertex inputs follow sRGB encoding when those formats
+--     are used, instead of being underspecified.
+--
+-- -   Add a query to determine if sRGB images are resolved in nonlinear or
+--     linear space by default
+--
+-- -   Add an optional feature to allow applications to override the
+--     default sRGB resolve behavior
+--
+-- -   Add resolve mode and depth-stencil resolve support to
+--     'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.cmdResolveImage2'
+--     to bring it in-line with render pass attachment resolves
+--
+-- == New Commands
+--
+-- -   'cmdEndRendering2KHR'
+--
+-- == New Structures
+--
+-- -   'RenderingEndInfoKHR'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceMaintenance10FeaturesKHR'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDeviceMaintenance10PropertiesKHR'
+--
+-- -   Extending
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingAttachmentInfo':
+--
+--     -   'RenderingAttachmentFlagsInfoKHR'
+--
+-- -   Extending
+--     'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.ResolveImageInfo2':
+--
+--     -   'ResolveImageModeInfoKHR'
+--
+-- == New Enums
+--
+-- -   'RenderingAttachmentFlagBitsKHR'
+--
+-- -   'ResolveImageFlagBitsKHR'
+--
+-- == New Bitmasks
+--
+-- -   'RenderingAttachmentFlagsKHR'
+--
+-- -   'ResolveImageFlagsKHR'
+--
+-- == New Enum Constants
+--
+-- -   'KHR_MAINTENANCE_10_EXTENSION_NAME'
+--
+-- -   'KHR_MAINTENANCE_10_SPEC_VERSION'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.AttachmentDescriptionFlagBits.AttachmentDescriptionFlagBits':
+--
+--     -   'Vulkan.Core10.Enums.AttachmentDescriptionFlagBits.ATTACHMENT_DESCRIPTION_RESOLVE_ENABLE_TRANSFER_FUNCTION_BIT_KHR'
+--
+--     -   'Vulkan.Core10.Enums.AttachmentDescriptionFlagBits.ATTACHMENT_DESCRIPTION_RESOLVE_SKIP_TRANSFER_FUNCTION_BIT_KHR'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_10_FEATURES_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_10_PROPERTIES_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDERING_ATTACHMENT_FLAGS_INFO_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDERING_END_INFO_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RESOLVE_IMAGE_MODE_INFO_KHR'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.4 Vulkan Version 1.4>
+-- or
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering_local_read VK_KHR_dynamic_rendering_local_read>
+-- and
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3 Vulkan Version 1.3>
+-- or
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering VK_KHR_dynamic_rendering>
+-- is supported:
+--
+-- -   Extending 'RenderingAttachmentFlagBitsKHR':
+--
+--     -   'RENDERING_ATTACHMENT_INPUT_ATTACHMENT_FEEDBACK_BIT_KHR'
+--
+-- -   Extending 'Vulkan.Core13.Enums.RenderingFlagBits.RenderingFlagBits':
+--
+--     -   'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_LOCAL_READ_CONCURRENT_ACCESS_CONTROL_BIT_KHR'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_format_feature_flags2 VK_KHR_format_feature_flags2>
+-- or
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3 Vulkan Version 1.3>
+-- is supported:
+--
+-- -   Extending
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FormatFeatureFlagBits2':
+--
+--     -   'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_DEPTH_COPY_ON_COMPUTE_QUEUE_BIT_KHR'
+--
+--     -   'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_DEPTH_COPY_ON_TRANSFER_QUEUE_BIT_KHR'
+--
+--     -   'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STENCIL_COPY_ON_COMPUTE_QUEUE_BIT_KHR'
+--
+--     -   'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STENCIL_COPY_ON_TRANSFER_QUEUE_BIT_KHR'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3 Vulkan Version 1.3>
+-- or
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_copy_commands2 VK_KHR_copy_commands2>
+-- is supported:
+--
+-- -   Extending 'ResolveImageFlagBitsKHR':
+--
+--     -   'RESOLVE_IMAGE_ENABLE_TRANSFER_FUNCTION_BIT_KHR'
+--
+--     -   'RESOLVE_IMAGE_SKIP_TRANSFER_FUNCTION_BIT_KHR'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3 Vulkan Version 1.3>
+-- or
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering VK_KHR_dynamic_rendering>
+-- is supported:
+--
+-- -   Extending 'RenderingAttachmentFlagBitsKHR':
+--
+--     -   'RENDERING_ATTACHMENT_RESOLVE_ENABLE_TRANSFER_FUNCTION_BIT_KHR'
+--
+--     -   'RENDERING_ATTACHMENT_RESOLVE_SKIP_TRANSFER_FUNCTION_BIT_KHR'
+--
+-- == Issues
+--
+-- None.
+--
+-- == Version History
+--
+-- -   Revision 1, 2025-05-13 (Mike Blumenkrantz)
+--
+--     -   Initial revision
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_maintenance10 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_maintenance10  ( PhysicalDeviceMaintenance10FeaturesKHR
+                                               , PhysicalDeviceMaintenance10PropertiesKHR
+                                               , RenderingAttachmentFlagsInfoKHR
+                                               , RenderingEndInfoKHR
+                                               , ResolveImageModeInfoKHR
+                                               ) 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 PhysicalDeviceMaintenance10FeaturesKHR
+
+instance ToCStruct PhysicalDeviceMaintenance10FeaturesKHR
+instance Show PhysicalDeviceMaintenance10FeaturesKHR
+
+instance FromCStruct PhysicalDeviceMaintenance10FeaturesKHR
+
+
+data PhysicalDeviceMaintenance10PropertiesKHR
+
+instance ToCStruct PhysicalDeviceMaintenance10PropertiesKHR
+instance Show PhysicalDeviceMaintenance10PropertiesKHR
+
+instance FromCStruct PhysicalDeviceMaintenance10PropertiesKHR
+
+
+data RenderingAttachmentFlagsInfoKHR
+
+instance ToCStruct RenderingAttachmentFlagsInfoKHR
+instance Show RenderingAttachmentFlagsInfoKHR
+
+instance FromCStruct RenderingAttachmentFlagsInfoKHR
+
+
+type role RenderingEndInfoKHR nominal
+data RenderingEndInfoKHR (es :: [Type])
+
+instance ( Extendss RenderingEndInfoKHR es
+         , PokeChain es ) => ToCStruct (RenderingEndInfoKHR es)
+instance Show (Chain es) => Show (RenderingEndInfoKHR es)
+
+instance ( Extendss RenderingEndInfoKHR es
+         , PeekChain es ) => FromCStruct (RenderingEndInfoKHR es)
+
+
+data ResolveImageModeInfoKHR
+
+instance ToCStruct ResolveImageModeInfoKHR
+instance Show ResolveImageModeInfoKHR
+
+instance FromCStruct ResolveImageModeInfoKHR
+
diff --git a/src/Vulkan/Extensions/VK_KHR_maintenance11.hs b/src/Vulkan/Extensions/VK_KHR_maintenance11.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_KHR_maintenance11.hs
@@ -0,0 +1,447 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_KHR_maintenance11 - device extension
+--
+-- = VK_KHR_maintenance11
+--
+-- [__Name String__]
+--     @VK_KHR_maintenance11@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     658
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
+--
+-- [__API Interactions__]
+--
+--     -   Interacts with VK_EXT_mesh_shader
+--
+--     -   Interacts with VK_EXT_shader_object
+--
+--     -   Interacts with VK_NV_mesh_shader
+--
+-- [__Contact__]
+--
+--     -   Mike Blumenkrantz
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_maintenance11] @zmike%0A*Here describe the issue or question you have about the VK_KHR_maintenance11 extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_KHR_maintenance11.adoc VK_KHR_maintenance11>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2025-09-09
+--
+-- [__Interactions and External Dependencies__; __Contributors__]
+--
+--     -   Mike Blumenkrantz, Valve
+--
+--     -   Piers Daniell, NVIDIA
+--
+--     -   Hans-Kristian Arntzen, Valve
+--
+--     -   Caterina Shablia, Collabora
+--
+-- == Description
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance11 VK_KHR_maintenance11>
+-- adds a collection of minor features, none of which would warrant an
+-- entire extension of their own.
+--
+-- The new features are as follows:
+--
+-- -   Add D3D compatibility for mismatch between @Arrayed@ in shaders and
+--     the arrayness of the underlying descriptor when the descriptor
+--     contains a single array layer
+--
+-- -   Clarify the pipeline depth clipping state when the pipeline is
+--     created without
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT'
+--     being set and the
+--     'Vulkan.Extensions.VK_EXT_depth_clip_enable.PipelineRasterizationDepthClipStateCreateInfoEXT'
+--     struct is not present
+--
+-- -   Add
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     to enable shader object functionality to mimic
+--     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT'
+--     used for graphics pipeline libraries, including a new pipeline
+--     layout creation flag
+--     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_NO_TASK_SHADER_BIT_KHR'
+--     to ensure pipeline layouts used with shader objects also created
+--     with
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
+--     to be compatible
+--
+-- -   Allow @queueFamilyIndexCount@ of 1 in
+--     'Vulkan.Core10.Buffer.BufferCreateInfo',
+--     'Vulkan.Core10.Image.ImageCreateInfo',
+--     'Vulkan.Extensions.VK_EXT_image_drm_format_modifier.PhysicalDeviceImageDrmFormatModifierInfoEXT',
+--     'Vulkan.Extensions.VK_ARM_tensors.TensorCreateInfoARM' when
+--     @sharingMode@ is
+--     'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_CONCURRENT'.
+--
+-- -   Require @minImageTransferGranularity@ to be (1,1,1) even on
+--     transfer-only queues and add @optimalImageTransferGranularity@ queue
+--     family property to communicate the performance bump for copies not
+--     aligned to the optimal granularity.
+--
+-- -   When copying between a buffer and an image on a transfer-only queue,
+--     do not require @bufferOffset@ to be a multiple of 4.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceMaintenance11FeaturesKHR'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.QueueFamilyProperties2':
+--
+--     -   'QueueFamilyOptimalImageTransferGranularityPropertiesKHR'
+--
+-- == New Enum Constants
+--
+-- -   'KHR_MAINTENANCE_11_EXTENSION_NAME'
+--
+-- -   'KHR_MAINTENANCE_11_SPEC_VERSION'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.ImageCreateFlagBits':
+--
+--     -   'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_ALIAS_SINGLE_LAYER_DESCRIPTOR_BIT_KHR'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_11_FEATURES_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_QUEUE_FAMILY_OPTIMAL_IMAGE_TRANSFER_GRANULARITY_PROPERTIES_KHR'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_shader_object VK_EXT_shader_object>
+-- is supported:
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_EXT_shader_object.ShaderCreateFlagBitsEXT':
+--
+--     -   'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_shader_object VK_EXT_shader_object>
+-- and
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_mesh_shader VK_EXT_mesh_shader>
+-- or
+-- <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.Core10.Enums.PipelineLayoutCreateFlagBits.PipelineLayoutCreateFlagBits':
+--
+--     -   'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_NO_TASK_SHADER_BIT_KHR'
+--
+-- == Issues
+--
+-- None.
+--
+-- == Version History
+--
+-- -   Revision 1, 2025-09-09 (Mike Blumenkrantz)
+--
+--     -   Initial revision
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_maintenance11 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_maintenance11  ( PhysicalDeviceMaintenance11FeaturesKHR(..)
+                                               , QueueFamilyOptimalImageTransferGranularityPropertiesKHR(..)
+                                               , KHR_MAINTENANCE_11_SPEC_VERSION
+                                               , pattern KHR_MAINTENANCE_11_SPEC_VERSION
+                                               , KHR_MAINTENANCE_11_EXTENSION_NAME
+                                               , pattern KHR_MAINTENANCE_11_EXTENSION_NAME
+                                               , ShaderCreateFlagBitsEXT(..)
+                                               , ShaderCreateFlagsEXT
+                                               ) 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.FundamentalTypes (Extent3D)
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_11_FEATURES_KHR))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_QUEUE_FAMILY_OPTIMAL_IMAGE_TRANSFER_GRANULARITY_PROPERTIES_KHR))
+import Vulkan.Extensions.VK_EXT_shader_object (ShaderCreateFlagBitsEXT(..))
+import Vulkan.Extensions.VK_EXT_shader_object (ShaderCreateFlagsEXT)
+-- | VkPhysicalDeviceMaintenance11FeaturesKHR - Structure describing whether
+-- the implementation supports maintenance11 functionality
+--
+-- = Members
+--
+-- This structure describes the following feature:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceMaintenance11FeaturesKHR' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceMaintenance11FeaturesKHR', it /must/ add an instance of
+-- the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance11 VK_KHR_maintenance11>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceMaintenance11FeaturesKHR = PhysicalDeviceMaintenance11FeaturesKHR
+  { -- | #features-maintenance11# @maintenance11@ indicates that the
+    -- implementation supports the following:
+    --
+    -- -   'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_ALIAS_SINGLE_LAYER_DESCRIPTOR_BIT_KHR'
+    --
+    -- -   The depth clipping state of the pipeline is well defined when the
+    --     pipeline is created without
+    --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT'
+    --     being set and the
+    --     'Vulkan.Extensions.VK_EXT_depth_clip_enable.PipelineRasterizationDepthClipStateCreateInfoEXT'
+    --     structure is not present
+    --
+    -- -   'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+    --
+    -- -   Allow @queueFamilyIndexCount@ of 1 in
+    --     'Vulkan.Core10.Buffer.BufferCreateInfo',
+    --     'Vulkan.Core10.Image.ImageCreateInfo',
+    --     'Vulkan.Extensions.VK_EXT_image_drm_format_modifier.PhysicalDeviceImageDrmFormatModifierInfoEXT',
+    --     'Vulkan.Extensions.VK_ARM_tensors.TensorCreateInfoARM' when
+    --     @sharingMode@ is
+    --     'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_CONCURRENT'
+    --
+    -- -   Require @minImageTransferGranularity@ to be (1,1,1) even on
+    --     transfer-only queues and add @optimalImageTransferGranularity@ queue
+    --     family property to communicate the performance bump for copies not
+    --     aligned to the optimal granularity
+    --
+    -- -   When copying between a buffer and an image on a transfer-only queue,
+    --     do not require @bufferOffset@ to be a multiple of 4
+    maintenance11 :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceMaintenance11FeaturesKHR)
+#endif
+deriving instance Show PhysicalDeviceMaintenance11FeaturesKHR
+
+instance ToCStruct PhysicalDeviceMaintenance11FeaturesKHR where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceMaintenance11FeaturesKHR{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_11_FEATURES_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (maintenance11))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_11_FEATURES_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceMaintenance11FeaturesKHR where
+  peekCStruct p = do
+    maintenance11 <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDeviceMaintenance11FeaturesKHR
+             (bool32ToBool maintenance11)
+
+instance Storable PhysicalDeviceMaintenance11FeaturesKHR where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceMaintenance11FeaturesKHR where
+  zero = PhysicalDeviceMaintenance11FeaturesKHR
+           zero
+
+
+-- | VkQueueFamilyOptimalImageTransferGranularityPropertiesKHR - Structure
+-- specifying the optimal image transfer granularity for a queue family
+--
+-- = Description
+--
+-- If this structure is included in the @pNext@ chain of the
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.QueueFamilyProperties2'
+-- structure passed to
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceQueueFamilyProperties2',
+-- then it is filled with the optimal image transfer granularity for the
+-- specified queue family.
+--
+-- The value returned in @optimalImageTransferGranularity@ has a unit of
+-- compressed texel blocks for images having a block-compressed format, and
+-- a unit of texels otherwise.
+--
+-- Possible values of @optimalImageTransferGranularity@ are:
+--
+-- -   (0,0,0) specifies that an image copy operation is optimal only when
+--     copying whole mip levels, i.e. all of the following conditions are
+--     met:
+--
+--     -   The @x@, @y@, and @z@ members of a
+--         'Vulkan.Core10.FundamentalTypes.Offset3D' are zero.
+--
+--     -   The @width@, @height@, and @depth@ members of a
+--         'Vulkan.Core10.FundamentalTypes.Extent3D' parameter match the
+--         width, height, and depth of the image subresource corresponding
+--         to the parameter, respectively.
+--
+-- -   (Ax, Ay, Az) where Ax, Ay, and Az are all integer powers of two. An
+--     image copy operation is optimal when all of the following conditions
+--     are met:
+--
+--     -   @width@ of a 'Vulkan.Core10.FundamentalTypes.Extent3D' parameter
+--         is an integer multiple of Ax, or else @x@ + @width@ equals the
+--         width of the image subresource corresponding to the parameter.
+--
+--     -   @height@ of a 'Vulkan.Core10.FundamentalTypes.Extent3D'
+--         parameter is an integer multiple of Ay, or else @y@ + @height@
+--         equals the height of the image subresource corresponding to the
+--         parameter.
+--
+--     -   @depth@ of a 'Vulkan.Core10.FundamentalTypes.Extent3D' parameter
+--         is an integer multiple of Az, or else @z@ + @depth@ equals the
+--         depth of the image subresource corresponding to the parameter.
+--
+--     -   If the format of the image corresponding to the parameters is
+--         one of the block-compressed formats then for the purposes of the
+--         above calculations the granularity /must/ be scaled up by the
+--         compressed texel block dimensions.
+--
+-- While it is not required that copies are optimal, there may be a
+-- performance cost for copies not aligned to
+-- @optimalImageTransferGranularity@.
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkQueueFamilyOptimalImageTransferGranularityPropertiesKHR-sType-sType#
+--     @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_QUEUE_FAMILY_OPTIMAL_IMAGE_TRANSFER_GRANULARITY_PROPERTIES_KHR'
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.QueueFamilyProperties2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance11 VK_KHR_maintenance11>,
+-- 'Vulkan.Core10.FundamentalTypes.Extent3D',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data QueueFamilyOptimalImageTransferGranularityPropertiesKHR = QueueFamilyOptimalImageTransferGranularityPropertiesKHR
+  { -- | @optimalImageTransferGranularity@ is the optimal granularity for image
+    -- copy operations in this queue family.
+    optimalImageTransferGranularity :: Extent3D }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (QueueFamilyOptimalImageTransferGranularityPropertiesKHR)
+#endif
+deriving instance Show QueueFamilyOptimalImageTransferGranularityPropertiesKHR
+
+instance ToCStruct QueueFamilyOptimalImageTransferGranularityPropertiesKHR where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p QueueFamilyOptimalImageTransferGranularityPropertiesKHR{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_QUEUE_FAMILY_OPTIMAL_IMAGE_TRANSFER_GRANULARITY_PROPERTIES_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Extent3D)) (optimalImageTransferGranularity)
+    f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_QUEUE_FAMILY_OPTIMAL_IMAGE_TRANSFER_GRANULARITY_PROPERTIES_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Extent3D)) (zero)
+    f
+
+instance FromCStruct QueueFamilyOptimalImageTransferGranularityPropertiesKHR where
+  peekCStruct p = do
+    optimalImageTransferGranularity <- peekCStruct @Extent3D ((p `plusPtr` 16 :: Ptr Extent3D))
+    pure $ QueueFamilyOptimalImageTransferGranularityPropertiesKHR
+             optimalImageTransferGranularity
+
+instance Storable QueueFamilyOptimalImageTransferGranularityPropertiesKHR where
+  sizeOf ~_ = 32
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero QueueFamilyOptimalImageTransferGranularityPropertiesKHR where
+  zero = QueueFamilyOptimalImageTransferGranularityPropertiesKHR
+           zero
+
+
+type KHR_MAINTENANCE_11_SPEC_VERSION = 1
+
+-- No documentation found for TopLevel "VK_KHR_MAINTENANCE_11_SPEC_VERSION"
+pattern KHR_MAINTENANCE_11_SPEC_VERSION :: forall a . Integral a => a
+pattern KHR_MAINTENANCE_11_SPEC_VERSION = 1
+
+
+type KHR_MAINTENANCE_11_EXTENSION_NAME = "VK_KHR_maintenance11"
+
+-- No documentation found for TopLevel "VK_KHR_MAINTENANCE_11_EXTENSION_NAME"
+pattern KHR_MAINTENANCE_11_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern KHR_MAINTENANCE_11_EXTENSION_NAME = "VK_KHR_maintenance11"
+
diff --git a/src/Vulkan/Extensions/VK_KHR_maintenance11.hs-boot b/src/Vulkan/Extensions/VK_KHR_maintenance11.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_KHR_maintenance11.hs-boot
@@ -0,0 +1,201 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_KHR_maintenance11 - device extension
+--
+-- = VK_KHR_maintenance11
+--
+-- [__Name String__]
+--     @VK_KHR_maintenance11@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     658
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
+--
+-- [__API Interactions__]
+--
+--     -   Interacts with VK_EXT_mesh_shader
+--
+--     -   Interacts with VK_EXT_shader_object
+--
+--     -   Interacts with VK_NV_mesh_shader
+--
+-- [__Contact__]
+--
+--     -   Mike Blumenkrantz
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_maintenance11] @zmike%0A*Here describe the issue or question you have about the VK_KHR_maintenance11 extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_KHR_maintenance11.adoc VK_KHR_maintenance11>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2025-09-09
+--
+-- [__Interactions and External Dependencies__; __Contributors__]
+--
+--     -   Mike Blumenkrantz, Valve
+--
+--     -   Piers Daniell, NVIDIA
+--
+--     -   Hans-Kristian Arntzen, Valve
+--
+--     -   Caterina Shablia, Collabora
+--
+-- == Description
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance11 VK_KHR_maintenance11>
+-- adds a collection of minor features, none of which would warrant an
+-- entire extension of their own.
+--
+-- The new features are as follows:
+--
+-- -   Add D3D compatibility for mismatch between @Arrayed@ in shaders and
+--     the arrayness of the underlying descriptor when the descriptor
+--     contains a single array layer
+--
+-- -   Clarify the pipeline depth clipping state when the pipeline is
+--     created without
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT'
+--     being set and the
+--     'Vulkan.Extensions.VK_EXT_depth_clip_enable.PipelineRasterizationDepthClipStateCreateInfoEXT'
+--     struct is not present
+--
+-- -   Add
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     to enable shader object functionality to mimic
+--     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT'
+--     used for graphics pipeline libraries, including a new pipeline
+--     layout creation flag
+--     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_NO_TASK_SHADER_BIT_KHR'
+--     to ensure pipeline layouts used with shader objects also created
+--     with
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
+--     to be compatible
+--
+-- -   Allow @queueFamilyIndexCount@ of 1 in
+--     'Vulkan.Core10.Buffer.BufferCreateInfo',
+--     'Vulkan.Core10.Image.ImageCreateInfo',
+--     'Vulkan.Extensions.VK_EXT_image_drm_format_modifier.PhysicalDeviceImageDrmFormatModifierInfoEXT',
+--     'Vulkan.Extensions.VK_ARM_tensors.TensorCreateInfoARM' when
+--     @sharingMode@ is
+--     'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_CONCURRENT'.
+--
+-- -   Require @minImageTransferGranularity@ to be (1,1,1) even on
+--     transfer-only queues and add @optimalImageTransferGranularity@ queue
+--     family property to communicate the performance bump for copies not
+--     aligned to the optimal granularity.
+--
+-- -   When copying between a buffer and an image on a transfer-only queue,
+--     do not require @bufferOffset@ to be a multiple of 4.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceMaintenance11FeaturesKHR'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.QueueFamilyProperties2':
+--
+--     -   'QueueFamilyOptimalImageTransferGranularityPropertiesKHR'
+--
+-- == New Enum Constants
+--
+-- -   'KHR_MAINTENANCE_11_EXTENSION_NAME'
+--
+-- -   'KHR_MAINTENANCE_11_SPEC_VERSION'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.ImageCreateFlagBits':
+--
+--     -   'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_ALIAS_SINGLE_LAYER_DESCRIPTOR_BIT_KHR'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_11_FEATURES_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_QUEUE_FAMILY_OPTIMAL_IMAGE_TRANSFER_GRANULARITY_PROPERTIES_KHR'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_shader_object VK_EXT_shader_object>
+-- is supported:
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_EXT_shader_object.ShaderCreateFlagBitsEXT':
+--
+--     -   'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_shader_object VK_EXT_shader_object>
+-- and
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_mesh_shader VK_EXT_mesh_shader>
+-- or
+-- <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.Core10.Enums.PipelineLayoutCreateFlagBits.PipelineLayoutCreateFlagBits':
+--
+--     -   'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_NO_TASK_SHADER_BIT_KHR'
+--
+-- == Issues
+--
+-- None.
+--
+-- == Version History
+--
+-- -   Revision 1, 2025-09-09 (Mike Blumenkrantz)
+--
+--     -   Initial revision
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_maintenance11 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_maintenance11  ( PhysicalDeviceMaintenance11FeaturesKHR
+                                               , QueueFamilyOptimalImageTransferGranularityPropertiesKHR
+                                               ) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data PhysicalDeviceMaintenance11FeaturesKHR
+
+instance ToCStruct PhysicalDeviceMaintenance11FeaturesKHR
+instance Show PhysicalDeviceMaintenance11FeaturesKHR
+
+instance FromCStruct PhysicalDeviceMaintenance11FeaturesKHR
+
+
+data QueueFamilyOptimalImageTransferGranularityPropertiesKHR
+
+instance ToCStruct QueueFamilyOptimalImageTransferGranularityPropertiesKHR
+instance Show QueueFamilyOptimalImageTransferGranularityPropertiesKHR
+
+instance FromCStruct QueueFamilyOptimalImageTransferGranularityPropertiesKHR
+
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
@@ -113,7 +113,7 @@
 --     -   'PhysicalDevicePointClippingPropertiesKHR'
 --
 -- -   Extending
---     'Vulkan.Core10.Pipeline.PipelineTessellationStateCreateInfo':
+--     'Vulkan.Core10.GraphicsPipeline.PipelineTessellationStateCreateInfo':
 --
 --     -   'PipelineTessellationDomainOriginStateCreateInfoKHR'
 --
@@ -233,7 +233,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_maintenance2 Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -107,7 +107,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_maintenance3 Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -75,7 +75,7 @@
 --     its handle valid while the created object is in use.
 --
 -- -   Add a new
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxBufferSize maxBufferSize>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxBufferSize maxBufferSize>
 --     implementation-defined limit for the maximum size
 --     'Vulkan.Core10.Handles.Buffer' that /can/ be created.
 --
@@ -178,7 +178,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_maintenance4 Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
diff --git a/src/Vulkan/Extensions/VK_KHR_maintenance5.hs b/src/Vulkan/Extensions/VK_KHR_maintenance5.hs
--- a/src/Vulkan/Extensions/VK_KHR_maintenance5.hs
+++ b/src/Vulkan/Extensions/VK_KHR_maintenance5.hs
@@ -31,2679 +31,899 @@
 --
 -- [__API Interactions__]
 --
---     -   Interacts with VK_VERSION_1_1
---
---     -   Interacts with VK_VERSION_1_2
---
---     -   Interacts with VK_VERSION_1_3
---
---     -   Interacts with VK_EXT_attachment_feedback_loop_layout
---
---     -   Interacts with VK_EXT_buffer_device_address
---
---     -   Interacts with VK_EXT_conditional_rendering
---
---     -   Interacts with VK_EXT_descriptor_buffer
---
---     -   Interacts with VK_EXT_fragment_density_map
---
---     -   Interacts with VK_EXT_graphics_pipeline_library
---
---     -   Interacts with VK_EXT_opacity_micromap
---
---     -   Interacts with VK_EXT_pipeline_creation_cache_control
---
---     -   Interacts with VK_EXT_pipeline_protected_access
---
---     -   Interacts with VK_EXT_transform_feedback
---
---     -   Interacts with VK_KHR_acceleration_structure
---
---     -   Interacts with VK_KHR_buffer_device_address
---
---     -   Interacts with VK_KHR_device_group
---
---     -   Interacts with VK_KHR_dynamic_rendering
---
---     -   Interacts with VK_KHR_fragment_shading_rate
---
---     -   Interacts with VK_KHR_pipeline_executable_properties
---
---     -   Interacts with VK_KHR_pipeline_library
---
---     -   Interacts with VK_KHR_ray_tracing_pipeline
---
---     -   Interacts with VK_KHR_video_decode_queue
---
---     -   Interacts with VK_KHR_video_encode_queue
---
---     -   Interacts with VK_NV_device_generated_commands
---
---     -   Interacts with VK_NV_displacement_micromap
---
---     -   Interacts with VK_NV_ray_tracing
---
---     -   Interacts with VK_NV_ray_tracing_motion_blur
---
--- [__Contact__]
---
---     -   Stu Smith
---         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_maintenance5] @stu-s%0A*Here describe the issue or question you have about the VK_KHR_maintenance5 extension* >
---
--- [__Extension Proposal__]
---     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_KHR_maintenance5.adoc VK_KHR_maintenance5>
---
--- == Other Extension Metadata
---
--- [__Last Modified Date__]
---     2023-05-02
---
--- [__Interactions and External Dependencies__; __Contributors__]
---
---     -   Stu Smith, AMD
---
---     -   Tobias Hector, AMD
---
---     -   Shahbaz Youssefi, Google
---
---     -   Slawomir Cygan, Intel
---
---     -   Lionel Landwerlin, Intel
---
---     -   James Fitzpatrick, Imagination Technologies
---
---     -   Andrew Garrard, Imagination Technologies
---
---     -   Ralph Potter, Samsung
---
---     -   Pan Gao, Huawei
---
---     -   Jan-Harald Fredriksen, ARM
---
---     -   Jon Leech, Khronos
---
---     -   Mike Blumenkrantz, Valve
---
--- == Description
---
--- @VK_KHR_maintenance5@ adds a collection of minor features, none of which
--- would warrant an entire extension of their own.
---
--- The new features are as follows:
---
--- -   A new 'Vulkan.Core10.Enums.Format.FORMAT_A1B5G5R5_UNORM_PACK16_KHR'
---     format
---
--- -   A new 'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM_KHR' format
---
--- -   A property to indicate that multisample coverage operations are
---     performed after sample counting in EarlyFragmentTests mode
---
--- -   Relax VkBufferView creation requirements by allowing subsets of the
---     associated VkBuffer usage using 'BufferUsageFlags2CreateInfoKHR'
---
--- -   A new command 'cmdBindIndexBuffer2KHR', allowing a range of memory
---     to be bound as an index buffer
---
--- -   'Vulkan.Core10.DeviceInitialization.getDeviceProcAddr' must return
---     @NULL@ for supported core functions beyond the version requested by
---     the application.
---
--- -   A property to indicate that the sample mask test is performed after
---     sample counting in EarlyFragmentTests mode
---
--- -   'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2'
---     now supports using 'Vulkan.Core10.APIConstants.WHOLE_SIZE' in the
---     @pSizes@ parameter.
---
--- -   A default size of 1.0 is used if @PointSize@ is not written
---
--- -   Shader modules are deprecated - applications can now pass
---     'Vulkan.Core10.Shader.ShaderModuleCreateInfo' as a chained struct to
---     pipeline creation via
---     'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo'
---
--- -   A function 'getRenderingAreaGranularityKHR' to query the optimal
---     render area for a dynamic rendering instance.
---
--- -   A property to indicate that depth\/stencil texturing operations with
---     'Vulkan.Core10.Enums.ComponentSwizzle.COMPONENT_SWIZZLE_ONE' have
---     defined behavior
---
--- -   Add 'getImageSubresourceLayout2KHR' and a new function
---     'getDeviceImageSubresourceLayoutKHR' to allow the application to
---     query the image memory layout without having to create an image
---     object and query it.
---
--- -   Allow 'Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS' as the
---     @layerCount@ member of
---     'Vulkan.Core10.CommandBufferBuilding.ImageSubresourceLayers'
---
--- -   Adds stronger guarantees for propagation of
---     'Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST' return values
---
--- -   A property to indicate whether @PointSize@ controls the final
---     rasterization of polygons if
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-polygonmode polygon mode>
---     is 'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_POINT'
---
--- -   Two properties to indicate the non-strict line rasterization
---     algorithm used
---
--- -   Two new flags words 'PipelineCreateFlagBits2KHR' and
---     'BufferUsageFlagBits2KHR'
---
--- -   Physical-device-level functions can now be called with any value in
---     the valid range for a type beyond the defined enumerants, such that
---     applications can avoid checking individual features, extensions, or
---     versions before querying supported properties of a particular
---     enumerant.
---
--- -   Clarification that copies between images of any type are allowed,
---     treating 1D images as 2D images with a height of 1.
---
--- == New Commands
---
--- -   'cmdBindIndexBuffer2KHR'
---
--- -   'getDeviceImageSubresourceLayoutKHR'
---
--- -   'getImageSubresourceLayout2KHR'
---
--- -   'getRenderingAreaGranularityKHR'
---
--- == New Structures
---
--- -   'DeviceImageSubresourceInfoKHR'
---
--- -   'ImageSubresource2KHR'
---
--- -   'RenderingAreaInfoKHR'
---
--- -   'SubresourceLayout2KHR'
---
--- -   Extending 'Vulkan.Core10.BufferView.BufferViewCreateInfo',
---     'Vulkan.Core10.Buffer.BufferCreateInfo',
---     'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceExternalBufferInfo',
---     'Vulkan.Extensions.VK_EXT_descriptor_buffer.DescriptorBufferBindingInfoEXT':
---
---     -   'BufferUsageFlags2CreateInfoKHR'
---
--- -   Extending 'Vulkan.Core10.Pipeline.ComputePipelineCreateInfo',
---     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo',
---     'Vulkan.Extensions.VK_NV_ray_tracing.RayTracingPipelineCreateInfoNV',
---     'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingPipelineCreateInfoKHR':
---
---     -   'PipelineCreateFlags2CreateInfoKHR'
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
---     'Vulkan.Core10.Device.DeviceCreateInfo':
---
---     -   'PhysicalDeviceMaintenance5FeaturesKHR'
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
---
---     -   'PhysicalDeviceMaintenance5PropertiesKHR'
---
--- == New Enums
---
--- -   'BufferUsageFlagBits2KHR'
---
--- -   'PipelineCreateFlagBits2KHR'
---
--- == New Bitmasks
---
--- -   'BufferUsageFlags2KHR'
---
--- -   'PipelineCreateFlags2KHR'
---
--- == New Enum Constants
---
--- -   'KHR_MAINTENANCE_5_EXTENSION_NAME'
---
--- -   'KHR_MAINTENANCE_5_SPEC_VERSION'
---
--- -   Extending 'Vulkan.Core10.Enums.Format.Format':
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_A1B5G5R5_UNORM_PACK16_KHR'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM_KHR'
---
--- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO_KHR'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO_KHR'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_KHR'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES_KHR'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES_KHR'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO_KHR'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDERING_AREA_INFO_KHR'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_KHR'
---
--- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering VK_KHR_dynamic_rendering>
--- or
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3 Vulkan Version 1.3>
--- and
--- <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 'PipelineCreateFlagBits2KHR':
---
---     -   'PIPELINE_CREATE_2_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT'
---
--- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering VK_KHR_dynamic_rendering>
--- or
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3 Vulkan Version 1.3>
--- and
--- <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 'PipelineCreateFlagBits2KHR':
---
---     -   'PIPELINE_CREATE_2_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
---
--- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_attachment_feedback_loop_layout VK_EXT_attachment_feedback_loop_layout>
--- is supported:
---
--- -   Extending 'PipelineCreateFlagBits2KHR':
---
---     -   'PIPELINE_CREATE_2_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT'
---
---     -   'PIPELINE_CREATE_2_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_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 'BufferUsageFlagBits2KHR':
---
---     -   'BUFFER_USAGE_2_CONDITIONAL_RENDERING_BIT_EXT'
---
--- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_buffer VK_EXT_descriptor_buffer>
--- is supported:
---
--- -   Extending 'BufferUsageFlagBits2KHR':
---
---     -   'BUFFER_USAGE_2_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT'
---
---     -   'BUFFER_USAGE_2_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT'
---
---     -   'BUFFER_USAGE_2_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   Extending 'PipelineCreateFlagBits2KHR':
---
---     -   'PIPELINE_CREATE_2_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_graphics_pipeline_library VK_EXT_graphics_pipeline_library>
--- is supported:
---
--- -   Extending 'PipelineCreateFlagBits2KHR':
---
---     -   'PIPELINE_CREATE_2_LINK_TIME_OPTIMIZATION_BIT_EXT'
---
---     -   'PIPELINE_CREATE_2_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT'
---
--- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_opacity_micromap VK_EXT_opacity_micromap>
--- is supported:
---
--- -   Extending 'BufferUsageFlagBits2KHR':
---
---     -   'BUFFER_USAGE_2_MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXT'
---
---     -   'BUFFER_USAGE_2_MICROMAP_STORAGE_BIT_EXT'
---
--- -   Extending 'PipelineCreateFlagBits2KHR':
---
---     -   'PIPELINE_CREATE_2_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT'
---
--- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_pipeline_protected_access VK_EXT_pipeline_protected_access>
--- is supported:
---
--- -   Extending 'PipelineCreateFlagBits2KHR':
---
---     -   'PIPELINE_CREATE_2_NO_PROTECTED_ACCESS_BIT_EXT'
---
---     -   'PIPELINE_CREATE_2_PROTECTED_ACCESS_ONLY_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 'BufferUsageFlagBits2KHR':
---
---     -   'BUFFER_USAGE_2_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT'
---
---     -   'BUFFER_USAGE_2_TRANSFORM_FEEDBACK_COUNTER_BUFFER_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 'BufferUsageFlagBits2KHR':
---
---     -   'BUFFER_USAGE_2_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR'
---
---     -   'BUFFER_USAGE_2_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR'
---
--- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_pipeline_executable_properties VK_KHR_pipeline_executable_properties>
--- is supported:
---
--- -   Extending 'PipelineCreateFlagBits2KHR':
---
---     -   'PIPELINE_CREATE_2_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR'
---
---     -   'PIPELINE_CREATE_2_CAPTURE_STATISTICS_BIT_KHR'
---
--- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_pipeline_library VK_KHR_pipeline_library>
--- is supported:
---
--- -   Extending 'PipelineCreateFlagBits2KHR':
---
---     -   'PIPELINE_CREATE_2_LIBRARY_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 'BufferUsageFlagBits2KHR':
---
---     -   'BUFFER_USAGE_2_SHADER_BINDING_TABLE_BIT_KHR'
---
--- -   Extending 'PipelineCreateFlagBits2KHR':
---
---     -   'PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR'
---
---     -   'PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR'
---
---     -   'PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR'
---
---     -   'PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR'
---
---     -   'PIPELINE_CREATE_2_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR'
---
---     -   'PIPELINE_CREATE_2_RAY_TRACING_SKIP_AABBS_BIT_KHR'
---
---     -   'PIPELINE_CREATE_2_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR'
---
--- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_video_decode_queue VK_KHR_video_decode_queue>
--- is supported:
---
--- -   Extending 'BufferUsageFlagBits2KHR':
---
---     -   'BUFFER_USAGE_2_VIDEO_DECODE_DST_BIT_KHR'
---
---     -   'BUFFER_USAGE_2_VIDEO_DECODE_SRC_BIT_KHR'
---
--- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_video_encode_queue VK_KHR_video_encode_queue>
--- is supported:
---
--- -   Extending 'BufferUsageFlagBits2KHR':
---
---     -   'BUFFER_USAGE_2_VIDEO_ENCODE_DST_BIT_KHR'
---
---     -   'BUFFER_USAGE_2_VIDEO_ENCODE_SRC_BIT_KHR'
---
--- 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 'PipelineCreateFlagBits2KHR':
---
---     -   'PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_NV'
---
--- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_displacement_micromap VK_NV_displacement_micromap>
--- is supported:
---
--- -   Extending 'PipelineCreateFlagBits2KHR':
---
---     -   'PIPELINE_CREATE_2_RAY_TRACING_DISPLACEMENT_MICROMAP_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 'BufferUsageFlagBits2KHR':
---
---     -   'BUFFER_USAGE_2_RAY_TRACING_BIT_NV'
---
--- -   Extending 'PipelineCreateFlagBits2KHR':
---
---     -   'PIPELINE_CREATE_2_DEFER_COMPILE_BIT_NV'
---
--- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing_motion_blur VK_NV_ray_tracing_motion_blur>
--- is supported:
---
--- -   Extending 'PipelineCreateFlagBits2KHR':
---
---     -   'PIPELINE_CREATE_2_RAY_TRACING_ALLOW_MOTION_BIT_NV'
---
--- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
--- or
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_device_group VK_KHR_device_group>
--- is supported:
---
--- -   Extending 'PipelineCreateFlagBits2KHR':
---
---     -   'PIPELINE_CREATE_2_DISPATCH_BASE_BIT_KHR'
---
---     -   'PIPELINE_CREATE_2_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR'
---
--- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.2 Vulkan Version 1.2>
--- or
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_buffer_device_address VK_KHR_buffer_device_address>
--- or
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_buffer_device_address VK_EXT_buffer_device_address>
--- is supported:
---
--- -   Extending 'BufferUsageFlagBits2KHR':
---
---     -   'BUFFER_USAGE_2_SHADER_DEVICE_ADDRESS_BIT_KHR'
---
--- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3 Vulkan Version 1.3>
--- or
--- <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>
--- is supported:
---
--- -   Extending 'PipelineCreateFlagBits2KHR':
---
---     -   'PIPELINE_CREATE_2_EARLY_RETURN_ON_FAILURE_BIT_KHR'
---
---     -   'PIPELINE_CREATE_2_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_KHR'
---
--- == Issues
---
--- None.
---
--- == Version History
---
--- -   Revision 1, 2022-12-12 (Stu Smith)
---
---     -   Initial revision
---
--- == See Also
---
--- No cross-references are available
---
--- == Document Notes
---
--- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_maintenance5 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_maintenance5  ( getRenderingAreaGranularityKHR
-                                              , cmdBindIndexBuffer2KHR
-                                              , getImageSubresourceLayout2KHR
-                                              , getDeviceImageSubresourceLayoutKHR
-                                              , pattern BUFFER_USAGE_2_RAY_TRACING_BIT_NV
-                                              , BufferUsageFlags2CreateInfoKHR(..)
-                                              , PipelineCreateFlags2CreateInfoKHR(..)
-                                              , PhysicalDeviceMaintenance5FeaturesKHR(..)
-                                              , PhysicalDeviceMaintenance5PropertiesKHR(..)
-                                              , RenderingAreaInfoKHR(..)
-                                              , ImageSubresource2KHR(..)
-                                              , SubresourceLayout2KHR(..)
-                                              , DeviceImageSubresourceInfoKHR(..)
-                                              , BufferUsageFlags2KHR
-                                              , BufferUsageFlagBits2KHR( BUFFER_USAGE_2_TRANSFER_SRC_BIT_KHR
-                                                                       , BUFFER_USAGE_2_TRANSFER_DST_BIT_KHR
-                                                                       , BUFFER_USAGE_2_UNIFORM_TEXEL_BUFFER_BIT_KHR
-                                                                       , BUFFER_USAGE_2_STORAGE_TEXEL_BUFFER_BIT_KHR
-                                                                       , BUFFER_USAGE_2_UNIFORM_BUFFER_BIT_KHR
-                                                                       , BUFFER_USAGE_2_STORAGE_BUFFER_BIT_KHR
-                                                                       , BUFFER_USAGE_2_INDEX_BUFFER_BIT_KHR
-                                                                       , BUFFER_USAGE_2_VERTEX_BUFFER_BIT_KHR
-                                                                       , BUFFER_USAGE_2_INDIRECT_BUFFER_BIT_KHR
-                                                                       , BUFFER_USAGE_2_PREPROCESS_BUFFER_BIT_EXT
-                                                                       , BUFFER_USAGE_2_MICROMAP_STORAGE_BIT_EXT
-                                                                       , BUFFER_USAGE_2_MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXT
-                                                                       , BUFFER_USAGE_2_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT
-                                                                       , BUFFER_USAGE_2_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT
-                                                                       , BUFFER_USAGE_2_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT
-                                                                       , BUFFER_USAGE_2_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR
-                                                                       , BUFFER_USAGE_2_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR
-                                                                       , BUFFER_USAGE_2_SHADER_DEVICE_ADDRESS_BIT_KHR
-                                                                       , BUFFER_USAGE_2_VIDEO_ENCODE_SRC_BIT_KHR
-                                                                       , BUFFER_USAGE_2_VIDEO_ENCODE_DST_BIT_KHR
-                                                                       , BUFFER_USAGE_2_VIDEO_DECODE_DST_BIT_KHR
-                                                                       , BUFFER_USAGE_2_VIDEO_DECODE_SRC_BIT_KHR
-                                                                       , BUFFER_USAGE_2_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT
-                                                                       , BUFFER_USAGE_2_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT
-                                                                       , BUFFER_USAGE_2_SHADER_BINDING_TABLE_BIT_KHR
-                                                                       , BUFFER_USAGE_2_CONDITIONAL_RENDERING_BIT_EXT
-                                                                       , BUFFER_USAGE_2_EXECUTION_GRAPH_SCRATCH_BIT_AMDX
-                                                                       , ..
-                                                                       )
-                                              , PipelineCreateFlags2KHR
-                                              , PipelineCreateFlagBits2KHR( PIPELINE_CREATE_2_DISABLE_OPTIMIZATION_BIT_KHR
-                                                                          , PIPELINE_CREATE_2_ALLOW_DERIVATIVES_BIT_KHR
-                                                                          , PIPELINE_CREATE_2_DERIVATIVE_BIT_KHR
-                                                                          , PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXT
-                                                                          , PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR
-                                                                          , PIPELINE_CREATE_2_DESCRIPTOR_BUFFER_BIT_EXT
-                                                                          , PIPELINE_CREATE_2_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV
-                                                                          , PIPELINE_CREATE_2_PROTECTED_ACCESS_ONLY_BIT_EXT
-                                                                          , PIPELINE_CREATE_2_NO_PROTECTED_ACCESS_BIT_EXT
-                                                                          , PIPELINE_CREATE_2_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT
-                                                                          , PIPELINE_CREATE_2_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT
-                                                                          , PIPELINE_CREATE_2_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT
-                                                                          , PIPELINE_CREATE_2_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT
-                                                                          , PIPELINE_CREATE_2_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
-                                                                          , PIPELINE_CREATE_2_RAY_TRACING_ALLOW_MOTION_BIT_NV
-                                                                          , PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_NV
-                                                                          , PIPELINE_CREATE_2_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR
-                                                                          , PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR
-                                                                          , PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR
-                                                                          , PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR
-                                                                          , PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR
-                                                                          , PIPELINE_CREATE_2_RAY_TRACING_SKIP_AABBS_BIT_KHR
-                                                                          , PIPELINE_CREATE_2_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR
-                                                                          , PIPELINE_CREATE_2_LIBRARY_BIT_KHR
-                                                                          , PIPELINE_CREATE_2_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT
-                                                                          , PIPELINE_CREATE_2_LINK_TIME_OPTIMIZATION_BIT_EXT
-                                                                          , PIPELINE_CREATE_2_EARLY_RETURN_ON_FAILURE_BIT_KHR
-                                                                          , PIPELINE_CREATE_2_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_KHR
-                                                                          , PIPELINE_CREATE_2_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR
-                                                                          , PIPELINE_CREATE_2_CAPTURE_STATISTICS_BIT_KHR
-                                                                          , PIPELINE_CREATE_2_DEFER_COMPILE_BIT_NV
-                                                                          , PIPELINE_CREATE_2_DISPATCH_BASE_BIT_KHR
-                                                                          , PIPELINE_CREATE_2_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR
-                                                                          , PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT
-                                                                          , PIPELINE_CREATE_2_EXECUTION_GRAPH_BIT_AMDX
-                                                                          , ..
-                                                                          )
-                                              , KHR_MAINTENANCE_5_SPEC_VERSION
-                                              , pattern KHR_MAINTENANCE_5_SPEC_VERSION
-                                              , KHR_MAINTENANCE_5_EXTENSION_NAME
-                                              , pattern KHR_MAINTENANCE_5_EXTENSION_NAME
-                                              ) where
-
-import Data.Bits (Bits)
-import Data.Bits (FiniteBits)
-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.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.CStruct.Extends (peekSomeCStruct)
-import Vulkan.CStruct.Extends (withSomeCStruct)
-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.Handles (Device)
-import Vulkan.Core10.Handles (Device(..))
-import Vulkan.Core10.Handles (Device(Device))
-import Vulkan.Dynamic (DeviceCmds(pVkCmdBindIndexBuffer2KHR))
-import Vulkan.Dynamic (DeviceCmds(pVkGetDeviceImageSubresourceLayoutKHR))
-import Vulkan.Dynamic (DeviceCmds(pVkGetImageSubresourceLayout2KHR))
-import Vulkan.Dynamic (DeviceCmds(pVkGetRenderingAreaGranularityKHR))
-import Vulkan.Core10.FundamentalTypes (DeviceSize)
-import Vulkan.Core10.Handles (Device_T)
-import Vulkan.CStruct.Extends (Extends)
-import Vulkan.CStruct.Extends (Extendss)
-import Vulkan.CStruct.Extends (Extensible(..))
-import Vulkan.Core10.FundamentalTypes (Extent2D)
-import Vulkan.Core10.FundamentalTypes (Flags64)
-import Vulkan.Core10.Enums.Format (Format)
-import Vulkan.Core10.Handles (Image)
-import Vulkan.Core10.Handles (Image(..))
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_image_compression_control (ImageCompressionPropertiesEXT)
-import Vulkan.Core10.Image (ImageCreateInfo)
-import Vulkan.Core10.SparseResourceMemoryManagement (ImageSubresource)
-import Vulkan.Core10.Enums.IndexType (IndexType)
-import Vulkan.Core10.Enums.IndexType (IndexType(..))
-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.CStruct.Extends (SomeStruct(..))
-import Vulkan.Core10.Enums.StructureType (StructureType)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_host_image_copy (SubresourceHostMemcpySizeEXT)
-import Vulkan.Core10.Image (SubresourceLayout)
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO_KHR))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO_KHR))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_KHR))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES_KHR))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES_KHR))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO_KHR))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RENDERING_AREA_INFO_KHR))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_KHR))
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkGetRenderingAreaGranularityKHR
-  :: FunPtr (Ptr Device_T -> Ptr RenderingAreaInfoKHR -> Ptr Extent2D -> IO ()) -> Ptr Device_T -> Ptr RenderingAreaInfoKHR -> Ptr Extent2D -> IO ()
-
--- | vkGetRenderingAreaGranularityKHR - Returns the granularity for dynamic
--- rendering optimal render area
---
--- = Description
---
--- The conditions leading to an optimal @renderArea@ are:
---
--- -   the @offset.x@ member in @renderArea@ is a multiple of the @width@
---     member of the returned 'Vulkan.Core10.FundamentalTypes.Extent2D'
---     (the horizontal granularity).
---
--- -   the @offset.y@ member in @renderArea@ is a multiple of the @height@
---     member of the returned 'Vulkan.Core10.FundamentalTypes.Extent2D'
---     (the vertical granularity).
---
--- -   either the @extent.width@ member in @renderArea@ is a multiple of
---     the horizontal granularity or @offset.x@+@extent.width@ is equal to
---     the @width@ of each attachment used in the render pass instance.
---
--- -   either the @extent.height@ member in @renderArea@ is a multiple of
---     the vertical granularity or @offset.y@+@extent.height@ is equal to
---     the @height@ of each attachment used in the render pass instance.
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkGetRenderingAreaGranularityKHR-device-parameter# @device@
---     /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
---
--- -   #VUID-vkGetRenderingAreaGranularityKHR-pRenderingAreaInfo-parameter#
---     @pRenderingAreaInfo@ /must/ be a valid pointer to a valid
---     'RenderingAreaInfoKHR' structure
---
--- -   #VUID-vkGetRenderingAreaGranularityKHR-pGranularity-parameter#
---     @pGranularity@ /must/ be a valid pointer to a
---     'Vulkan.Core10.FundamentalTypes.Extent2D' structure
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance5 VK_KHR_maintenance5>,
--- 'Vulkan.Core10.Handles.Device',
--- 'Vulkan.Core10.FundamentalTypes.Extent2D', 'RenderingAreaInfoKHR'
-getRenderingAreaGranularityKHR :: forall io
-                                . (MonadIO io)
-                               => -- | @device@ is the logical device that owns the render pass instance.
-                                  Device
-                               -> -- | @pRenderingAreaInfo@ is a pointer to a 'RenderingAreaInfoKHR' structure
-                                  -- specifying details of the render pass instance to query the render area
-                                  -- granularity for.
-                                  RenderingAreaInfoKHR
-                               -> io (("granularity" ::: Extent2D))
-getRenderingAreaGranularityKHR device
-                                 renderingAreaInfo = liftIO . evalContT $ do
-  let vkGetRenderingAreaGranularityKHRPtr = pVkGetRenderingAreaGranularityKHR (case device of Device{deviceCmds} -> deviceCmds)
-  lift $ unless (vkGetRenderingAreaGranularityKHRPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetRenderingAreaGranularityKHR is null" Nothing Nothing
-  let vkGetRenderingAreaGranularityKHR' = mkVkGetRenderingAreaGranularityKHR vkGetRenderingAreaGranularityKHRPtr
-  pRenderingAreaInfo <- ContT $ withCStruct (renderingAreaInfo)
-  pPGranularity <- ContT (withZeroCStruct @Extent2D)
-  lift $ traceAroundEvent "vkGetRenderingAreaGranularityKHR" (vkGetRenderingAreaGranularityKHR'
-                                                                (deviceHandle (device))
-                                                                pRenderingAreaInfo
-                                                                (pPGranularity))
-  pGranularity <- lift $ peekCStruct @Extent2D pPGranularity
-  pure $ (pGranularity)
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdBindIndexBuffer2KHR
-  :: FunPtr (Ptr CommandBuffer_T -> Buffer -> DeviceSize -> DeviceSize -> IndexType -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> DeviceSize -> DeviceSize -> IndexType -> IO ()
-
--- | vkCmdBindIndexBuffer2KHR - Bind an index buffer to a command buffer
---
--- = Description
---
--- @size@ specifies the bound size of the index buffer starting from
--- @offset@. If @size@ is 'Vulkan.Core10.APIConstants.WHOLE_SIZE' then the
--- bound size is from @offset@ to the end of the @buffer@.
---
--- If the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-maintenance6 maintenance6>
--- feature is enabled, @buffer@ /can/ be
--- 'Vulkan.Core10.APIConstants.NULL_HANDLE'. If @buffer@ is
--- 'Vulkan.Core10.APIConstants.NULL_HANDLE' and the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>
--- feature is enabled, every index fetched results in a value of zero.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdBindIndexBuffer2KHR-offset-08782# @offset@ /must/ be less
---     than the size of @buffer@
---
--- -   #VUID-vkCmdBindIndexBuffer2KHR-offset-08783# The sum of @offset@ and
---     the base address of the range of
---     'Vulkan.Core10.Handles.DeviceMemory' object that is backing
---     @buffer@, /must/ be a multiple of the size of the type indicated by
---     @indexType@
---
--- -   #VUID-vkCmdBindIndexBuffer2KHR-buffer-08784# @buffer@ /must/ have
---     been created with the
---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDEX_BUFFER_BIT'
---     flag
---
--- -   #VUID-vkCmdBindIndexBuffer2KHR-buffer-08785# If @buffer@ is
---     non-sparse then it /must/ be bound completely and contiguously to a
---     single 'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-vkCmdBindIndexBuffer2KHR-indexType-08786# @indexType@ /must/
---     not be 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR'
---
--- -   #VUID-vkCmdBindIndexBuffer2KHR-indexType-08787# If @indexType@ is
---     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT8_KHR', the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-indexTypeUint8 indexTypeUint8>
---     feature /must/ be enabled
---
--- -   #VUID-vkCmdBindIndexBuffer2KHR-None-09493# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance6 maintenance6>
---     feature is not enabled, @buffer@ /must/ not be
---     'Vulkan.Core10.APIConstants.NULL_HANDLE'
---
--- -   #VUID-vkCmdBindIndexBuffer2KHR-buffer-09494# If @buffer@ is
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', offset /must/ be zero
---
--- -   #VUID-vkCmdBindIndexBuffer2KHR-size-08767# If @size@ is not
---     'Vulkan.Core10.APIConstants.WHOLE_SIZE', @size@ /must/ be a multiple
---     of the size of the type indicated by @indexType@
---
--- -   #VUID-vkCmdBindIndexBuffer2KHR-size-08768# If @size@ is not
---     'Vulkan.Core10.APIConstants.WHOLE_SIZE', the sum of @offset@ and
---     @size@ /must/ be less than or equal to the size of @buffer@
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdBindIndexBuffer2KHR-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdBindIndexBuffer2KHR-buffer-parameter# If @buffer@ is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', @buffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.Buffer' handle
---
--- -   #VUID-vkCmdBindIndexBuffer2KHR-indexType-parameter# @indexType@
---     /must/ be a valid 'Vulkan.Core10.Enums.IndexType.IndexType' value
---
--- -   #VUID-vkCmdBindIndexBuffer2KHR-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-vkCmdBindIndexBuffer2KHR-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
---
--- -   #VUID-vkCmdBindIndexBuffer2KHR-videocoding# This command /must/ only
---     be called outside of a video coding scope
---
--- -   #VUID-vkCmdBindIndexBuffer2KHR-commonparent# Both of @buffer@, and
---     @commandBuffer@ 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#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
--- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance5 VK_KHR_maintenance5>,
--- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
--- 'Vulkan.Core10.Enums.IndexType.IndexType'
-cmdBindIndexBuffer2KHR :: 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)
-                       -> -- | @size@ is the size in bytes of index data bound from @buffer@.
-                          DeviceSize
-                       -> -- | @indexType@ is a 'Vulkan.Core10.Enums.IndexType.IndexType' value
-                          -- specifying the size of the indices.
-                          IndexType
-                       -> io ()
-cmdBindIndexBuffer2KHR commandBuffer buffer offset size indexType = liftIO $ do
-  let vkCmdBindIndexBuffer2KHRPtr = pVkCmdBindIndexBuffer2KHR (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  unless (vkCmdBindIndexBuffer2KHRPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdBindIndexBuffer2KHR is null" Nothing Nothing
-  let vkCmdBindIndexBuffer2KHR' = mkVkCmdBindIndexBuffer2KHR vkCmdBindIndexBuffer2KHRPtr
-  traceAroundEvent "vkCmdBindIndexBuffer2KHR" (vkCmdBindIndexBuffer2KHR'
-                                                 (commandBufferHandle (commandBuffer))
-                                                 (buffer)
-                                                 (offset)
-                                                 (size)
-                                                 (indexType))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkGetImageSubresourceLayout2KHR
-  :: FunPtr (Ptr Device_T -> Image -> Ptr ImageSubresource2KHR -> Ptr (SomeStruct SubresourceLayout2KHR) -> IO ()) -> Ptr Device_T -> Image -> Ptr ImageSubresource2KHR -> Ptr (SomeStruct SubresourceLayout2KHR) -> IO ()
-
--- | vkGetImageSubresourceLayout2KHR - Retrieve information about an image
--- subresource
---
--- = Description
---
--- 'getImageSubresourceLayout2KHR' behaves similarly to
--- 'Vulkan.Core10.Image.getImageSubresourceLayout', with the ability to
--- specify extended inputs via chained input structures, and to return
--- extended information via chained output structures.
---
--- It is legal to call 'getImageSubresourceLayout2KHR' with an @image@
--- created with @tiling@ equal to
--- 'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL', but the members
--- of 'SubresourceLayout2KHR'::@subresourceLayout@ will have undefined
--- values in this case.
---
--- Structures chained from 'ImageSubresource2KHR'::@pNext@ will also be
--- updated when @tiling@ is equal to
--- 'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL'.
---
--- == Valid Usage
---
--- -   #VUID-vkGetImageSubresourceLayout2KHR-aspectMask-00997# The
---     @aspectMask@ member of @pSubresource@ /must/ only have a single bit
---     set
---
--- -   #VUID-vkGetImageSubresourceLayout2KHR-mipLevel-01716# The @mipLevel@
---     member of @pSubresource@ /must/ be less than the @mipLevels@
---     specified in @image@
---
--- -   #VUID-vkGetImageSubresourceLayout2KHR-arrayLayer-01717# The
---     @arrayLayer@ member of @pSubresource@ /must/ be less than the
---     @arrayLayers@ specified in @image@
---
--- -   #VUID-vkGetImageSubresourceLayout2KHR-format-08886# If @format@ of
---     the @image@ is a color format that is not a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar image format>,
---     and @tiling@ of the @image@ is
---     'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR' or
---     'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL', the
---     @aspectMask@ member of @pSubresource@ /must/ be
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'
---
--- -   #VUID-vkGetImageSubresourceLayout2KHR-format-04462# If @format@ of
---     the @image@ has a depth component, the @aspectMask@ member of
---     @pSubresource@ /must/ contain
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT'
---
--- -   #VUID-vkGetImageSubresourceLayout2KHR-format-04463# If @format@ of
---     the @image@ has a stencil component, the @aspectMask@ member of
---     @pSubresource@ /must/ contain
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
---
--- -   #VUID-vkGetImageSubresourceLayout2KHR-format-04464# If @format@ of
---     the @image@ does not contain a stencil or depth component, the
---     @aspectMask@ member of @pSubresource@ /must/ not contain
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' or
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
---
--- -   #VUID-vkGetImageSubresourceLayout2KHR-tiling-08717# If the @tiling@
---     of the @image@ is
---     'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR' and 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 the @aspectMask@ member of @pSubresource@ /must/ be a single
---     valid
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-planes-image-aspect multi-planar aspect mask>
---     bit
---
--- -   #VUID-vkGetImageSubresourceLayout2KHR-image-09434# If @image@ was
---     created with the
---     'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID'
---     external memory handle type, then @image@ /must/ be bound to memory
---
--- -   #VUID-vkGetImageSubresourceLayout2KHR-tiling-09435# If the @tiling@
---     of the @image@ is
---     'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT',
---     then the @aspectMask@ member of @pSubresource@ /must/ be
---     @VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT@ and the index /i/ /must/ be
---     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-vkGetImageSubresourceLayout2KHR-device-parameter# @device@
---     /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
---
--- -   #VUID-vkGetImageSubresourceLayout2KHR-image-parameter# @image@
---     /must/ be a valid 'Vulkan.Core10.Handles.Image' handle
---
--- -   #VUID-vkGetImageSubresourceLayout2KHR-pSubresource-parameter#
---     @pSubresource@ /must/ be a valid pointer to a valid
---     'ImageSubresource2KHR' structure
---
--- -   #VUID-vkGetImageSubresourceLayout2KHR-pLayout-parameter# @pLayout@
---     /must/ be a valid pointer to a 'SubresourceLayout2KHR' structure
---
--- -   #VUID-vkGetImageSubresourceLayout2KHR-image-parent# @image@ /must/
---     have been created, allocated, or retrieved from @device@
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance5 VK_KHR_maintenance5>,
--- 'Vulkan.Core10.Handles.Device', 'Vulkan.Core10.Handles.Image',
--- 'ImageSubresource2KHR', 'SubresourceLayout2KHR'
-getImageSubresourceLayout2KHR :: forall a io
-                               . ( Extendss SubresourceLayout2KHR a
-                                 , PokeChain a
-                                 , PeekChain a
-                                 , MonadIO io )
-                              => -- | @device@ is the logical device that owns the image.
-                                 Device
-                              -> -- | @image@ is the image whose layout is being queried.
-                                 Image
-                              -> -- | @pSubresource@ is a pointer to a 'ImageSubresource2KHR' structure
-                                 -- selecting a specific image for the image subresource.
-                                 ImageSubresource2KHR
-                              -> io (SubresourceLayout2KHR a)
-getImageSubresourceLayout2KHR device image subresource = liftIO . evalContT $ do
-  let vkGetImageSubresourceLayout2KHRPtr = pVkGetImageSubresourceLayout2KHR (case device of Device{deviceCmds} -> deviceCmds)
-  lift $ unless (vkGetImageSubresourceLayout2KHRPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetImageSubresourceLayout2KHR is null" Nothing Nothing
-  let vkGetImageSubresourceLayout2KHR' = mkVkGetImageSubresourceLayout2KHR vkGetImageSubresourceLayout2KHRPtr
-  pSubresource <- ContT $ withCStruct (subresource)
-  pPLayout <- ContT (withZeroCStruct @(SubresourceLayout2KHR _))
-  lift $ traceAroundEvent "vkGetImageSubresourceLayout2KHR" (vkGetImageSubresourceLayout2KHR'
-                                                               (deviceHandle (device))
-                                                               (image)
-                                                               pSubresource
-                                                               (forgetExtensions (pPLayout)))
-  pLayout <- lift $ peekCStruct @(SubresourceLayout2KHR _) pPLayout
-  pure $ (pLayout)
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkGetDeviceImageSubresourceLayoutKHR
-  :: FunPtr (Ptr Device_T -> Ptr DeviceImageSubresourceInfoKHR -> Ptr (SomeStruct SubresourceLayout2KHR) -> IO ()) -> Ptr Device_T -> Ptr DeviceImageSubresourceInfoKHR -> Ptr (SomeStruct SubresourceLayout2KHR) -> IO ()
-
--- | vkGetDeviceImageSubresourceLayoutKHR - Retrieve information about an
--- image subresource without an image object
---
--- = Description
---
--- 'getDeviceImageSubresourceLayoutKHR' behaves similarly to
--- 'getImageSubresourceLayout2KHR', but uses a
--- 'Vulkan.Core10.Image.ImageCreateInfo' structure to specify the image
--- rather than a 'Vulkan.Core10.Handles.Image' object.
---
--- == Valid Usage (Implicit)
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance5 VK_KHR_maintenance5>,
--- 'Vulkan.Core10.Handles.Device', 'DeviceImageSubresourceInfoKHR',
--- 'SubresourceLayout2KHR'
-getDeviceImageSubresourceLayoutKHR :: forall a io
-                                    . ( Extendss SubresourceLayout2KHR a
-                                      , PokeChain a
-                                      , PeekChain a
-                                      , MonadIO io )
-                                   => -- | @device@ is the logical device that owns the image.
-                                      --
-                                      -- #VUID-vkGetDeviceImageSubresourceLayoutKHR-device-parameter# @device@
-                                      -- /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
-                                      Device
-                                   -> -- | @pInfo@ is a pointer to a 'DeviceImageSubresourceInfoKHR' structure
-                                      -- containing parameters required for the subresource layout query.
-                                      --
-                                      -- #VUID-vkGetDeviceImageSubresourceLayoutKHR-pInfo-parameter# @pInfo@
-                                      -- /must/ be a valid pointer to a valid 'DeviceImageSubresourceInfoKHR'
-                                      -- structure
-                                      DeviceImageSubresourceInfoKHR
-                                   -> io (SubresourceLayout2KHR a)
-getDeviceImageSubresourceLayoutKHR device info = liftIO . evalContT $ do
-  let vkGetDeviceImageSubresourceLayoutKHRPtr = pVkGetDeviceImageSubresourceLayoutKHR (case device of Device{deviceCmds} -> deviceCmds)
-  lift $ unless (vkGetDeviceImageSubresourceLayoutKHRPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetDeviceImageSubresourceLayoutKHR is null" Nothing Nothing
-  let vkGetDeviceImageSubresourceLayoutKHR' = mkVkGetDeviceImageSubresourceLayoutKHR vkGetDeviceImageSubresourceLayoutKHRPtr
-  pInfo <- ContT $ withCStruct (info)
-  pPLayout <- ContT (withZeroCStruct @(SubresourceLayout2KHR _))
-  lift $ traceAroundEvent "vkGetDeviceImageSubresourceLayoutKHR" (vkGetDeviceImageSubresourceLayoutKHR'
-                                                                    (deviceHandle (device))
-                                                                    pInfo
-                                                                    (forgetExtensions (pPLayout)))
-  pLayout <- lift $ peekCStruct @(SubresourceLayout2KHR _) pPLayout
-  pure $ (pLayout)
-
-
--- No documentation found for TopLevel "VK_BUFFER_USAGE_2_RAY_TRACING_BIT_NV"
-pattern BUFFER_USAGE_2_RAY_TRACING_BIT_NV = BUFFER_USAGE_2_SHADER_BINDING_TABLE_BIT_KHR
-
-
--- | VkBufferUsageFlags2CreateInfoKHR - Extended buffer usage flags
---
--- = Description
---
--- If this structure is included in the @pNext@ chain of a buffer creation
--- structure, @usage@ is used instead of the corresponding @usage@ value
--- passed in that creation structure, allowing additional usage flags to be
--- specified. If this structure is included in the @pNext@ chain of a
--- buffer query structure, the usage flags of the buffer are returned in
--- @usage@ of this structure, and the usage flags representable in @usage@
--- of the buffer query structure are also returned in that field.
---
--- == Valid Usage (Implicit)
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance5 VK_KHR_maintenance5>,
--- 'BufferUsageFlags2KHR',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data BufferUsageFlags2CreateInfoKHR = BufferUsageFlags2CreateInfoKHR
-  { -- | @usage@ is a bitmask of 'BufferUsageFlagBits2KHR' specifying allowed
-    -- usages of the buffer.
-    --
-    -- #VUID-VkBufferUsageFlags2CreateInfoKHR-usage-parameter# @usage@ /must/
-    -- be a valid combination of 'BufferUsageFlagBits2KHR' values
-    --
-    -- #VUID-VkBufferUsageFlags2CreateInfoKHR-usage-requiredbitmask# @usage@
-    -- /must/ not be @0@
-    usage :: BufferUsageFlags2KHR }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (BufferUsageFlags2CreateInfoKHR)
-#endif
-deriving instance Show BufferUsageFlags2CreateInfoKHR
-
-instance ToCStruct BufferUsageFlags2CreateInfoKHR where
-  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p BufferUsageFlags2CreateInfoKHR{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr BufferUsageFlags2KHR)) (usage)
-    f
-  cStructSize = 24
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr BufferUsageFlags2KHR)) (zero)
-    f
-
-instance FromCStruct BufferUsageFlags2CreateInfoKHR where
-  peekCStruct p = do
-    usage <- peek @BufferUsageFlags2KHR ((p `plusPtr` 16 :: Ptr BufferUsageFlags2KHR))
-    pure $ BufferUsageFlags2CreateInfoKHR
-             usage
-
-instance Storable BufferUsageFlags2CreateInfoKHR where
-  sizeOf ~_ = 24
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero BufferUsageFlags2CreateInfoKHR where
-  zero = BufferUsageFlags2CreateInfoKHR
-           zero
-
-
--- | VkPipelineCreateFlags2CreateInfoKHR - Extended pipeline create flags
---
--- = Description
---
--- If this structure is included in the @pNext@ chain of a pipeline
--- creation structure, @flags@ is used instead of the corresponding @flags@
--- value passed in that creation structure, allowing additional creation
--- flags to be specified.
---
--- == Valid Usage (Implicit)
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance5 VK_KHR_maintenance5>,
--- 'PipelineCreateFlags2KHR',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PipelineCreateFlags2CreateInfoKHR = PipelineCreateFlags2CreateInfoKHR
-  { -- | @flags@ is a bitmask of 'PipelineCreateFlagBits2KHR' specifying how a
-    -- pipeline will be generated.
-    --
-    -- #VUID-VkPipelineCreateFlags2CreateInfoKHR-flags-parameter# @flags@
-    -- /must/ be a valid combination of 'PipelineCreateFlagBits2KHR' values
-    --
-    -- #VUID-VkPipelineCreateFlags2CreateInfoKHR-flags-requiredbitmask# @flags@
-    -- /must/ not be @0@
-    flags :: PipelineCreateFlags2KHR }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PipelineCreateFlags2CreateInfoKHR)
-#endif
-deriving instance Show PipelineCreateFlags2CreateInfoKHR
-
-instance ToCStruct PipelineCreateFlags2CreateInfoKHR where
-  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PipelineCreateFlags2CreateInfoKHR{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr PipelineCreateFlags2KHR)) (flags)
-    f
-  cStructSize = 24
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr PipelineCreateFlags2KHR)) (zero)
-    f
-
-instance FromCStruct PipelineCreateFlags2CreateInfoKHR where
-  peekCStruct p = do
-    flags <- peek @PipelineCreateFlags2KHR ((p `plusPtr` 16 :: Ptr PipelineCreateFlags2KHR))
-    pure $ PipelineCreateFlags2CreateInfoKHR
-             flags
-
-instance Storable PipelineCreateFlags2CreateInfoKHR where
-  sizeOf ~_ = 24
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero PipelineCreateFlags2CreateInfoKHR where
-  zero = PipelineCreateFlags2CreateInfoKHR
-           zero
-
-
--- | VkPhysicalDeviceMaintenance5FeaturesKHR - Structure describing whether
--- the implementation supports maintenance5 functionality
---
--- = Members
---
--- This structure describes the following feature:
---
--- = Description
---
--- If the 'PhysicalDeviceMaintenance5FeaturesKHR' 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. 'PhysicalDeviceMaintenance5FeaturesKHR' /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_maintenance5 VK_KHR_maintenance5>,
--- 'Vulkan.Core10.FundamentalTypes.Bool32',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PhysicalDeviceMaintenance5FeaturesKHR = PhysicalDeviceMaintenance5FeaturesKHR
-  { -- | #features-maintenance5# @maintenance5@ indicates that the implementation
-    -- supports the following:
-    --
-    -- -   The ability to expose support for the optional format
-    --     'Vulkan.Core10.Enums.Format.FORMAT_A1B5G5R5_UNORM_PACK16_KHR'.
-    --
-    -- -   The ability to expose support for the optional format
-    --     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM_KHR'.
-    --
-    -- -   A property to indicate that multisample coverage operations are
-    --     performed after sample counting in EarlyFragmentTests mode.
-    --
-    -- -   Creating a 'Vulkan.Core10.Handles.BufferView' with a subset of the
-    --     associated 'Vulkan.Core10.Handles.Buffer' usage using
-    --     'BufferUsageFlags2CreateInfoKHR'.
-    --
-    -- -   A new function 'cmdBindIndexBuffer2KHR', allowing a range of memory
-    --     to be bound as an index buffer.
-    --
-    -- -   'Vulkan.Core10.DeviceInitialization.getDeviceProcAddr' will return
-    --     @NULL@ for function pointers of core functions for versions higher
-    --     than the version requested by the application.
-    --
-    -- -   'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2'
-    --     supports using 'Vulkan.Core10.APIConstants.WHOLE_SIZE' in the
-    --     @pSizes@ parameter.
-    --
-    -- -   If @PointSize@ is not written, a default value of @1.0@ is used for
-    --     the size of points.
-    --
-    -- -   'Vulkan.Core10.Shader.ShaderModuleCreateInfo' /can/ be added as a
-    --     chained structure to pipeline creation via
-    --     'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo', rather than
-    --     having to create a shader module.
-    --
-    -- -   A function 'getRenderingAreaGranularityKHR' to query the optimal
-    --     render area for a dynamic rendering instance.
-    --
-    -- -   A property to indicate that depth\/stencil texturing operations with
-    --     'Vulkan.Core10.Enums.ComponentSwizzle.COMPONENT_SWIZZLE_ONE' have
-    --     defined behavior.
-    --
-    -- -   'getDeviceImageSubresourceLayoutKHR' allows an application to
-    --     perform a 'Vulkan.Core10.Image.getImageSubresourceLayout' query
-    --     without having to create an image.
-    --
-    -- -   'Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS' as the
-    --     @layerCount@ member of
-    --     'Vulkan.Core10.CommandBufferBuilding.ImageSubresourceLayers'.
-    --
-    -- -   A property to indicate whether @PointSize@ controls the final
-    --     rasterization of polygons if
-    --     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-polygonmode polygon mode>
-    --     is 'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_POINT'.
-    --
-    -- -   Two properties to indicate the non-strict line rasterization
-    --     algorithm used.
-    --
-    -- -   Two new flags words 'PipelineCreateFlagBits2KHR' and
-    --     'BufferUsageFlagBits2KHR'.
-    --
-    -- -   Physical-device-level functions /can/ now be called with any value
-    --     in the valid range for a type beyond the defined enumerants, such
-    --     that applications can avoid checking individual features,
-    --     extensions, or versions before querying supported properties of a
-    --     particular enumerant.
-    --
-    -- -   Copies between images of any type are allowed, with 1D images
-    --     treated as 2D images with a height of @1@.
-    maintenance5 :: Bool }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PhysicalDeviceMaintenance5FeaturesKHR)
-#endif
-deriving instance Show PhysicalDeviceMaintenance5FeaturesKHR
-
-instance ToCStruct PhysicalDeviceMaintenance5FeaturesKHR where
-  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PhysicalDeviceMaintenance5FeaturesKHR{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (maintenance5))
-    f
-  cStructSize = 24
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
-    f
-
-instance FromCStruct PhysicalDeviceMaintenance5FeaturesKHR where
-  peekCStruct p = do
-    maintenance5 <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
-    pure $ PhysicalDeviceMaintenance5FeaturesKHR
-             (bool32ToBool maintenance5)
-
-instance Storable PhysicalDeviceMaintenance5FeaturesKHR where
-  sizeOf ~_ = 24
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero PhysicalDeviceMaintenance5FeaturesKHR where
-  zero = PhysicalDeviceMaintenance5FeaturesKHR
-           zero
-
-
--- | VkPhysicalDeviceMaintenance5PropertiesKHR - Structure describing various
--- implementation-defined properties introduced with VK_KHR_maintenance5
---
--- = Description
---
--- If the 'PhysicalDeviceMaintenance5PropertiesKHR' 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_maintenance5 VK_KHR_maintenance5>,
--- 'Vulkan.Core10.FundamentalTypes.Bool32',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PhysicalDeviceMaintenance5PropertiesKHR = PhysicalDeviceMaintenance5PropertiesKHR
-  { -- | @earlyFragmentMultisampleCoverageAfterSampleCounting@ is a boolean value
-    -- indicating whether the
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-shader fragment shading>
-    -- and
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-covg multisample coverage>
-    -- operations are performed after
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-samplecount sample counting>
-    -- for
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-shader fragment shaders>
-    -- with @EarlyFragmentTests@ execution mode.
-    earlyFragmentMultisampleCoverageAfterSampleCounting :: Bool
-  , -- | @earlyFragmentSampleMaskTestBeforeSampleCounting@ is a boolean value
-    -- indicating whether the
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-samplemask sample mask test>
-    -- operation is performed before
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-samplecount sample counting>
-    -- for
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-shader fragment shaders>
-    -- using the @EarlyFragmentTests@ execution mode.
-    earlyFragmentSampleMaskTestBeforeSampleCounting :: Bool
-  , -- | @depthStencilSwizzleOneSupport@ is a boolean indicating that
-    -- depth\/stencil texturing operations with
-    -- 'Vulkan.Core10.Enums.ComponentSwizzle.COMPONENT_SWIZZLE_ONE' have
-    -- defined behavior.
-    depthStencilSwizzleOneSupport :: Bool
-  , -- | @polygonModePointSize@ is a boolean value indicating whether the point
-    -- size of the final rasterization of polygons with
-    -- 'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_POINT' is controlled by
-    -- @PointSize@.
-    polygonModePointSize :: Bool
-  , -- | @nonStrictSinglePixelWideLinesUseParallelogram@ is a boolean value
-    -- indicating whether non-strict lines with a width of 1.0 are rasterized
-    -- as parallelograms or using Bresenham’s algorithm.
-    nonStrictSinglePixelWideLinesUseParallelogram :: Bool
-  , -- | @nonStrictWideLinesUseParallelogram@ is a boolean value indicating
-    -- whether non-strict lines with a width greater than 1.0 are rasterized as
-    -- parallelograms or using Bresenham’s algorithm.
-    nonStrictWideLinesUseParallelogram :: Bool
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PhysicalDeviceMaintenance5PropertiesKHR)
-#endif
-deriving instance Show PhysicalDeviceMaintenance5PropertiesKHR
-
-instance ToCStruct PhysicalDeviceMaintenance5PropertiesKHR where
-  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PhysicalDeviceMaintenance5PropertiesKHR{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (earlyFragmentMultisampleCoverageAfterSampleCounting))
-    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (earlyFragmentSampleMaskTestBeforeSampleCounting))
-    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (depthStencilSwizzleOneSupport))
-    poke ((p `plusPtr` 28 :: Ptr Bool32)) (boolToBool32 (polygonModePointSize))
-    poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (nonStrictSinglePixelWideLinesUseParallelogram))
-    poke ((p `plusPtr` 36 :: Ptr Bool32)) (boolToBool32 (nonStrictWideLinesUseParallelogram))
-    f
-  cStructSize = 40
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_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))
-    f
-
-instance FromCStruct PhysicalDeviceMaintenance5PropertiesKHR where
-  peekCStruct p = do
-    earlyFragmentMultisampleCoverageAfterSampleCounting <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
-    earlyFragmentSampleMaskTestBeforeSampleCounting <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
-    depthStencilSwizzleOneSupport <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))
-    polygonModePointSize <- peek @Bool32 ((p `plusPtr` 28 :: Ptr Bool32))
-    nonStrictSinglePixelWideLinesUseParallelogram <- peek @Bool32 ((p `plusPtr` 32 :: Ptr Bool32))
-    nonStrictWideLinesUseParallelogram <- peek @Bool32 ((p `plusPtr` 36 :: Ptr Bool32))
-    pure $ PhysicalDeviceMaintenance5PropertiesKHR
-             (bool32ToBool earlyFragmentMultisampleCoverageAfterSampleCounting)
-             (bool32ToBool earlyFragmentSampleMaskTestBeforeSampleCounting)
-             (bool32ToBool depthStencilSwizzleOneSupport)
-             (bool32ToBool polygonModePointSize)
-             (bool32ToBool nonStrictSinglePixelWideLinesUseParallelogram)
-             (bool32ToBool nonStrictWideLinesUseParallelogram)
-
-instance Storable PhysicalDeviceMaintenance5PropertiesKHR where
-  sizeOf ~_ = 40
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero PhysicalDeviceMaintenance5PropertiesKHR where
-  zero = PhysicalDeviceMaintenance5PropertiesKHR
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-
-
--- | VkRenderingAreaInfoKHR - Structure describing rendering area granularity
--- query info
---
--- == Valid Usage (Implicit)
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance5 VK_KHR_maintenance5>,
--- 'Vulkan.Core10.Enums.Format.Format',
--- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'getRenderingAreaGranularityKHR'
-data RenderingAreaInfoKHR = RenderingAreaInfoKHR
-  { -- | @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 the render pass instance.
-    colorAttachmentFormats :: Vector Format
-  , -- | @depthAttachmentFormat@ is a 'Vulkan.Core10.Enums.Format.Format' value
-    -- defining the format of the depth attachment used in the render pass
-    -- instance.
-    depthAttachmentFormat :: Format
-  , -- | @stencilAttachmentFormat@ is a 'Vulkan.Core10.Enums.Format.Format' value
-    -- defining the format of the stencil attachment used in the render pass
-    -- instance.
-    stencilAttachmentFormat :: Format
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (RenderingAreaInfoKHR)
-#endif
-deriving instance Show RenderingAreaInfoKHR
-
-instance ToCStruct RenderingAreaInfoKHR where
-  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p RenderingAreaInfoKHR{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RENDERING_AREA_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_RENDERING_AREA_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 RenderingAreaInfoKHR 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 $ RenderingAreaInfoKHR
-             viewMask
-             pColorAttachmentFormats'
-             depthAttachmentFormat
-             stencilAttachmentFormat
-
-instance Zero RenderingAreaInfoKHR where
-  zero = RenderingAreaInfoKHR
-           zero
-           mempty
-           zero
-           zero
-
-
--- | VkImageSubresource2KHR - Structure specifying an image subresource
---
--- == Valid Usage (Implicit)
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_host_image_copy VK_EXT_host_image_copy>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_image_compression_control VK_EXT_image_compression_control>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance5 VK_KHR_maintenance5>,
--- 'DeviceImageSubresourceInfoKHR',
--- 'Vulkan.Core10.SparseResourceMemoryManagement.ImageSubresource',
--- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'Vulkan.Extensions.VK_EXT_host_image_copy.getImageSubresourceLayout2EXT',
--- 'getImageSubresourceLayout2KHR'
-data ImageSubresource2KHR = ImageSubresource2KHR
-  { -- | @imageSubresource@ is a
-    -- 'Vulkan.Core10.SparseResourceMemoryManagement.ImageSubresource'
-    -- structure.
-    --
-    -- #VUID-VkImageSubresource2KHR-imageSubresource-parameter#
-    -- @imageSubresource@ /must/ be a valid
-    -- 'Vulkan.Core10.SparseResourceMemoryManagement.ImageSubresource'
-    -- structure
-    imageSubresource :: ImageSubresource }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (ImageSubresource2KHR)
-#endif
-deriving instance Show ImageSubresource2KHR
-
-instance ToCStruct ImageSubresource2KHR where
-  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p ImageSubresource2KHR{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr ImageSubresource)) (imageSubresource)
-    f
-  cStructSize = 32
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr ImageSubresource)) (zero)
-    f
-
-instance FromCStruct ImageSubresource2KHR where
-  peekCStruct p = do
-    imageSubresource <- peekCStruct @ImageSubresource ((p `plusPtr` 16 :: Ptr ImageSubresource))
-    pure $ ImageSubresource2KHR
-             imageSubresource
-
-instance Storable ImageSubresource2KHR where
-  sizeOf ~_ = 32
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero ImageSubresource2KHR where
-  zero = ImageSubresource2KHR
-           zero
-
-
--- | VkSubresourceLayout2KHR - Structure specifying subresource layout
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkSubresourceLayout2KHR-sType-sType# @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_KHR'
---
--- -   #VUID-VkSubresourceLayout2KHR-pNext-pNext# Each @pNext@ member of
---     any structure (including this one) in the @pNext@ chain /must/ be
---     either @NULL@ or a pointer to a valid instance of
---     'Vulkan.Extensions.VK_EXT_image_compression_control.ImageCompressionPropertiesEXT'
---     or
---     'Vulkan.Extensions.VK_EXT_host_image_copy.SubresourceHostMemcpySizeEXT'
---
--- -   #VUID-VkSubresourceLayout2KHR-sType-unique# The @sType@ value of
---     each struct in the @pNext@ chain /must/ be unique
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_host_image_copy VK_EXT_host_image_copy>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_image_compression_control VK_EXT_image_compression_control>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance5 VK_KHR_maintenance5>,
--- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'Vulkan.Core10.Image.SubresourceLayout',
--- 'getDeviceImageSubresourceLayoutKHR',
--- 'Vulkan.Extensions.VK_EXT_host_image_copy.getImageSubresourceLayout2EXT',
--- 'getImageSubresourceLayout2KHR'
-data SubresourceLayout2KHR (es :: [Type]) = SubresourceLayout2KHR
-  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
-    next :: Chain es
-  , -- | @subresourceLayout@ is a 'Vulkan.Core10.Image.SubresourceLayout'
-    -- structure.
-    subresourceLayout :: SubresourceLayout
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (SubresourceLayout2KHR (es :: [Type]))
-#endif
-deriving instance Show (Chain es) => Show (SubresourceLayout2KHR es)
-
-instance Extensible SubresourceLayout2KHR where
-  extensibleTypeName = "SubresourceLayout2KHR"
-  setNext SubresourceLayout2KHR{..} next' = SubresourceLayout2KHR{next = next', ..}
-  getNext SubresourceLayout2KHR{..} = next
-  extends :: forall e b proxy. Typeable e => proxy e -> (Extends SubresourceLayout2KHR e => b) -> Maybe b
-  extends _ f
-    | Just Refl <- eqT @e @ImageCompressionPropertiesEXT = Just f
-    | Just Refl <- eqT @e @SubresourceHostMemcpySizeEXT = Just f
-    | otherwise = Nothing
-
-instance ( Extendss SubresourceLayout2KHR es
-         , PokeChain es ) => ToCStruct (SubresourceLayout2KHR es) where
-  withCStruct x f = allocaBytes 56 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p SubresourceLayout2KHR{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_KHR)
-    pNext'' <- fmap castPtr . ContT $ withChain (next)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
-    lift $ poke ((p `plusPtr` 16 :: Ptr SubresourceLayout)) (subresourceLayout)
-    lift $ f
-  cStructSize = 56
-  cStructAlignment = 8
-  pokeZeroCStruct p f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_KHR)
-    pNext' <- fmap castPtr . ContT $ withZeroChain @es
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
-    lift $ poke ((p `plusPtr` 16 :: Ptr SubresourceLayout)) (zero)
-    lift $ f
-
-instance ( Extendss SubresourceLayout2KHR es
-         , PeekChain es ) => FromCStruct (SubresourceLayout2KHR es) where
-  peekCStruct p = do
-    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
-    next <- peekChain (castPtr pNext)
-    subresourceLayout <- peekCStruct @SubresourceLayout ((p `plusPtr` 16 :: Ptr SubresourceLayout))
-    pure $ SubresourceLayout2KHR
-             next subresourceLayout
-
-instance es ~ '[] => Zero (SubresourceLayout2KHR es) where
-  zero = SubresourceLayout2KHR
-           ()
-           zero
-
-
--- | VkDeviceImageSubresourceInfoKHR - Image creation information for
--- querying subresource layout
---
--- == Valid Usage
---
--- -   #VUID-VkDeviceImageSubresourceInfoKHR-aspectMask-00997# The
---     @aspectMask@ member of @pSubresource@ /must/ only have a single bit
---     set
---
--- -   #VUID-VkDeviceImageSubresourceInfoKHR-mipLevel-01716# The @mipLevel@
---     member of @pSubresource@ /must/ be less than the @mipLevels@
---     specified in @pCreateInfo@
---
--- -   #VUID-VkDeviceImageSubresourceInfoKHR-arrayLayer-01717# The
---     @arrayLayer@ member of @pSubresource@ /must/ be less than the
---     @arrayLayers@ specified in @pCreateInfo@
---
--- -   #VUID-VkDeviceImageSubresourceInfoKHR-format-08886# If @format@ of
---     the @image@ is a color format that is not a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar image format>,
---     and @tiling@ of the @pCreateInfo@ is
---     'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR' or
---     'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL', the
---     @aspectMask@ member of @pSubresource@ /must/ be
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'
---
--- -   #VUID-VkDeviceImageSubresourceInfoKHR-format-04462# If @format@ of
---     the @pCreateInfo@ has a depth component, the @aspectMask@ member of
---     @pSubresource@ /must/ contain
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT'
---
--- -   #VUID-VkDeviceImageSubresourceInfoKHR-format-04463# If @format@ of
---     the @pCreateInfo@ has a stencil component, the @aspectMask@ member
---     of @pSubresource@ /must/ contain
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
---
--- -   #VUID-VkDeviceImageSubresourceInfoKHR-format-04464# If @format@ of
---     the @pCreateInfo@ does not contain a stencil or depth component, the
---     @aspectMask@ member of @pSubresource@ /must/ not contain
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' or
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
---
--- -   #VUID-VkDeviceImageSubresourceInfoKHR-tiling-08717# If the @tiling@
---     of the @pCreateInfo@ is
---     'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR' and 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 the @aspectMask@ member of @pSubresource@ /must/ be a single
---     valid
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-planes-image-aspect multi-planar aspect mask>
---     bit
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkDeviceImageSubresourceInfoKHR-sType-sType# @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO_KHR'
---
--- -   #VUID-VkDeviceImageSubresourceInfoKHR-pNext-pNext# @pNext@ /must/ be
---     @NULL@
---
--- -   #VUID-VkDeviceImageSubresourceInfoKHR-pCreateInfo-parameter#
---     @pCreateInfo@ /must/ be a valid pointer to a valid
---     'Vulkan.Core10.Image.ImageCreateInfo' structure
---
--- -   #VUID-VkDeviceImageSubresourceInfoKHR-pSubresource-parameter#
---     @pSubresource@ /must/ be a valid pointer to a valid
---     'ImageSubresource2KHR' structure
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance5 VK_KHR_maintenance5>,
--- 'Vulkan.Core10.Image.ImageCreateInfo', 'ImageSubresource2KHR',
--- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'getDeviceImageSubresourceLayoutKHR'
-data DeviceImageSubresourceInfoKHR = DeviceImageSubresourceInfoKHR
-  { -- | @pCreateInfo@ is a pointer to a 'Vulkan.Core10.Image.ImageCreateInfo'
-    -- structure containing parameters affecting creation of the image to
-    -- query.
-    createInfo :: SomeStruct ImageCreateInfo
-  , -- | @pSubresource@ pSubresource is a pointer to a 'ImageSubresource2KHR'
-    -- structure selecting a specific image subresource for the query.
-    subresource :: ImageSubresource2KHR
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (DeviceImageSubresourceInfoKHR)
-#endif
-deriving instance Show DeviceImageSubresourceInfoKHR
-
-instance ToCStruct DeviceImageSubresourceInfoKHR where
-  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p DeviceImageSubresourceInfoKHR{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO_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''
-    pSubresource'' <- ContT $ withCStruct (subresource)
-    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr ImageSubresource2KHR))) pSubresource''
-    lift $ f
-  cStructSize = 32
-  cStructAlignment = 8
-  pokeZeroCStruct p f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO_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''
-    pSubresource'' <- ContT $ withCStruct (zero)
-    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr ImageSubresource2KHR))) pSubresource''
-    lift $ f
-
-instance FromCStruct DeviceImageSubresourceInfoKHR where
-  peekCStruct p = do
-    pCreateInfo <- peekSomeCStruct . forgetExtensions =<< peek ((p `plusPtr` 16 :: Ptr (Ptr (ImageCreateInfo _))))
-    pSubresource <- peekCStruct @ImageSubresource2KHR =<< peek ((p `plusPtr` 24 :: Ptr (Ptr ImageSubresource2KHR)))
-    pure $ DeviceImageSubresourceInfoKHR
-             pCreateInfo pSubresource
-
-instance Zero DeviceImageSubresourceInfoKHR where
-  zero = DeviceImageSubresourceInfoKHR
-           (SomeStruct zero)
-           zero
-
-
-type BufferUsageFlags2KHR = BufferUsageFlagBits2KHR
-
--- | VkBufferUsageFlagBits2KHR - Bitmask controlling how a pipeline is
--- created
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance5 VK_KHR_maintenance5>,
--- 'BufferUsageFlags2KHR'
-newtype BufferUsageFlagBits2KHR = BufferUsageFlagBits2KHR Flags64
-  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
-
--- | 'BUFFER_USAGE_2_TRANSFER_SRC_BIT_KHR' specifies that the buffer /can/ be
--- used as the source of a /transfer command/ (see the definition of
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages-transfer >).
-pattern BUFFER_USAGE_2_TRANSFER_SRC_BIT_KHR = BufferUsageFlagBits2KHR 0x0000000000000001
-
--- | 'BUFFER_USAGE_2_TRANSFER_DST_BIT_KHR' specifies that the buffer /can/ be
--- used as the destination of a transfer command.
-pattern BUFFER_USAGE_2_TRANSFER_DST_BIT_KHR = BufferUsageFlagBits2KHR 0x0000000000000002
-
--- | 'BUFFER_USAGE_2_UNIFORM_TEXEL_BUFFER_BIT_KHR' specifies that the buffer
--- /can/ be used to create a 'Vulkan.Core10.Handles.BufferView' suitable
--- for occupying a 'Vulkan.Core10.Handles.DescriptorSet' slot of type
--- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER'.
-pattern BUFFER_USAGE_2_UNIFORM_TEXEL_BUFFER_BIT_KHR = BufferUsageFlagBits2KHR 0x0000000000000004
-
--- | 'BUFFER_USAGE_2_STORAGE_TEXEL_BUFFER_BIT_KHR' specifies that the buffer
--- /can/ be used to create a 'Vulkan.Core10.Handles.BufferView' suitable
--- for occupying a 'Vulkan.Core10.Handles.DescriptorSet' slot of type
--- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'.
-pattern BUFFER_USAGE_2_STORAGE_TEXEL_BUFFER_BIT_KHR = BufferUsageFlagBits2KHR 0x0000000000000008
-
--- | 'BUFFER_USAGE_2_UNIFORM_BUFFER_BIT_KHR' specifies that the buffer /can/
--- be used in a 'Vulkan.Core10.DescriptorSet.DescriptorBufferInfo' suitable
--- for occupying a 'Vulkan.Core10.Handles.DescriptorSet' slot either of
--- type 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER'
--- or
--- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC'.
-pattern BUFFER_USAGE_2_UNIFORM_BUFFER_BIT_KHR = BufferUsageFlagBits2KHR 0x0000000000000010
-
--- | 'BUFFER_USAGE_2_STORAGE_BUFFER_BIT_KHR' specifies that the buffer /can/
--- be used in a 'Vulkan.Core10.DescriptorSet.DescriptorBufferInfo' suitable
--- for occupying a 'Vulkan.Core10.Handles.DescriptorSet' slot either of
--- type 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER'
--- or
--- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC'.
-pattern BUFFER_USAGE_2_STORAGE_BUFFER_BIT_KHR = BufferUsageFlagBits2KHR 0x0000000000000020
-
--- | 'BUFFER_USAGE_2_INDEX_BUFFER_BIT_KHR' specifies that the buffer is
--- suitable for passing as the @buffer@ parameter to
--- 'cmdBindIndexBuffer2KHR' and
--- 'Vulkan.Core10.CommandBufferBuilding.cmdBindIndexBuffer'.
-pattern BUFFER_USAGE_2_INDEX_BUFFER_BIT_KHR = BufferUsageFlagBits2KHR 0x0000000000000040
-
--- | 'BUFFER_USAGE_2_VERTEX_BUFFER_BIT_KHR' specifies that the buffer is
--- suitable for passing as an element of the @pBuffers@ array to
--- 'Vulkan.Core10.CommandBufferBuilding.cmdBindVertexBuffers'.
-pattern BUFFER_USAGE_2_VERTEX_BUFFER_BIT_KHR = BufferUsageFlagBits2KHR 0x0000000000000080
-
--- | 'BUFFER_USAGE_2_INDIRECT_BUFFER_BIT_KHR' specifies that the buffer is
--- suitable for passing as the @buffer@ parameter to
--- 'Vulkan.Core10.CommandBufferBuilding.cmdDrawIndirect',
--- 'Vulkan.Core10.CommandBufferBuilding.cmdDrawIndexedIndirect',
--- 'Vulkan.Extensions.VK_NV_mesh_shader.cmdDrawMeshTasksIndirectNV',
--- 'Vulkan.Extensions.VK_NV_mesh_shader.cmdDrawMeshTasksIndirectCountNV',
--- 'Vulkan.Extensions.VK_EXT_mesh_shader.cmdDrawMeshTasksIndirectEXT',
--- 'Vulkan.Extensions.VK_EXT_mesh_shader.cmdDrawMeshTasksIndirectCountEXT',
--- 'Vulkan.Extensions.VK_HUAWEI_cluster_culling_shader.cmdDrawClusterIndirectHUAWEI',
--- or 'Vulkan.Core10.CommandBufferBuilding.cmdDispatchIndirect'. It is also
--- suitable for passing as the @buffer@ member of
--- 'Vulkan.Extensions.VK_NV_device_generated_commands.IndirectCommandsStreamNV',
--- or @sequencesCountBuffer@ or @sequencesIndexBuffer@ or
--- @preprocessedBuffer@ member of
--- 'Vulkan.Extensions.VK_NV_device_generated_commands.GeneratedCommandsInfoNV'.
--- It is also suitable for passing as the underlying buffer of either the
--- @preprocessAddress@ or @sequenceCountAddress@ members of
--- 'Vulkan.Extensions.VK_EXT_device_generated_commands.GeneratedCommandsInfoEXT'.
-pattern BUFFER_USAGE_2_INDIRECT_BUFFER_BIT_KHR = BufferUsageFlagBits2KHR 0x0000000000000100
-
--- | 'BUFFER_USAGE_2_PREPROCESS_BUFFER_BIT_EXT' specifies that the buffer
--- /can/ be used as a preprocess buffer for
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#device-generated-commands Device-Generated Commands>.
-pattern BUFFER_USAGE_2_PREPROCESS_BUFFER_BIT_EXT = BufferUsageFlagBits2KHR 0x0000000080000000
-
--- No documentation found for Nested "VkBufferUsageFlagBits2KHR" "VK_BUFFER_USAGE_2_MICROMAP_STORAGE_BIT_EXT"
-pattern BUFFER_USAGE_2_MICROMAP_STORAGE_BIT_EXT = BufferUsageFlagBits2KHR 0x0000000001000000
-
--- No documentation found for Nested "VkBufferUsageFlagBits2KHR" "VK_BUFFER_USAGE_2_MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXT"
-pattern BUFFER_USAGE_2_MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXT = BufferUsageFlagBits2KHR 0x0000000000800000
-
--- | 'BUFFER_USAGE_2_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT' specifies
--- that the buffer, when bound, /can/ be used by the implementation to
--- support push descriptors when using descriptor buffers.
-pattern BUFFER_USAGE_2_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT = BufferUsageFlagBits2KHR 0x0000000004000000
-
--- | 'BUFFER_USAGE_2_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT' specifies that the
--- buffer is suitable to contain resource descriptors when bound as a
--- descriptor buffer.
-pattern BUFFER_USAGE_2_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT = BufferUsageFlagBits2KHR 0x0000000000400000
-
--- | 'BUFFER_USAGE_2_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT' specifies that the
--- buffer is suitable to contain sampler and combined image sampler
--- descriptors when bound as a descriptor buffer. Buffers containing
--- combined image sampler descriptors /must/ also specify
--- 'BUFFER_USAGE_2_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT'.
-pattern BUFFER_USAGE_2_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT = BufferUsageFlagBits2KHR 0x0000000000200000
-
--- | 'BUFFER_USAGE_2_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR' specifies that
--- the buffer is suitable for storage space for a
--- 'Vulkan.Extensions.Handles.AccelerationStructureKHR'.
-pattern BUFFER_USAGE_2_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR = BufferUsageFlagBits2KHR 0x0000000000100000
-
--- | 'BUFFER_USAGE_2_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR'
--- specifies that the buffer is suitable for use as a read-only input to an
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#acceleration-structure-building acceleration structure build>.
-pattern BUFFER_USAGE_2_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR = BufferUsageFlagBits2KHR 0x0000000000080000
-
--- | 'BUFFER_USAGE_2_SHADER_DEVICE_ADDRESS_BIT_KHR' specifies that the buffer
--- /can/ be used to retrieve a buffer device address via
--- 'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.getBufferDeviceAddress'
--- and use that address to access the buffer’s memory from a shader.
-pattern BUFFER_USAGE_2_SHADER_DEVICE_ADDRESS_BIT_KHR = BufferUsageFlagBits2KHR 0x0000000000020000
-
--- | 'BUFFER_USAGE_2_VIDEO_ENCODE_SRC_BIT_KHR' is reserved for future use.
-pattern BUFFER_USAGE_2_VIDEO_ENCODE_SRC_BIT_KHR = BufferUsageFlagBits2KHR 0x0000000000010000
-
--- | 'BUFFER_USAGE_2_VIDEO_ENCODE_DST_BIT_KHR' specifies that the buffer
--- /can/ be used as the destination video bitstream buffer in a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#video-encode-operations video encode operation>.
-pattern BUFFER_USAGE_2_VIDEO_ENCODE_DST_BIT_KHR = BufferUsageFlagBits2KHR 0x0000000000008000
-
--- | 'BUFFER_USAGE_2_VIDEO_DECODE_DST_BIT_KHR' is reserved for future use.
-pattern BUFFER_USAGE_2_VIDEO_DECODE_DST_BIT_KHR = BufferUsageFlagBits2KHR 0x0000000000004000
-
--- | 'BUFFER_USAGE_2_VIDEO_DECODE_SRC_BIT_KHR' specifies that the buffer
--- /can/ be used as the source video bitstream buffer in a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#video-decode-operations video decode operation>.
-pattern BUFFER_USAGE_2_VIDEO_DECODE_SRC_BIT_KHR = BufferUsageFlagBits2KHR 0x0000000000002000
-
--- | 'BUFFER_USAGE_2_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT' specifies
--- that the buffer is suitable for using as a counter buffer with
--- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdBeginTransformFeedbackEXT'
--- and
--- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdEndTransformFeedbackEXT'.
-pattern BUFFER_USAGE_2_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT = BufferUsageFlagBits2KHR 0x0000000000001000
-
--- | 'BUFFER_USAGE_2_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT' specifies that the
--- buffer is suitable for using for binding as a transform feedback buffer
--- with
--- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdBindTransformFeedbackBuffersEXT'.
-pattern BUFFER_USAGE_2_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT = BufferUsageFlagBits2KHR 0x0000000000000800
-
--- | 'BUFFER_USAGE_2_SHADER_BINDING_TABLE_BIT_KHR' specifies that the buffer
--- is suitable for use as a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shader-binding-table Shader Binding Table>.
-pattern BUFFER_USAGE_2_SHADER_BINDING_TABLE_BIT_KHR = BufferUsageFlagBits2KHR 0x0000000000000400
-
--- | 'BUFFER_USAGE_2_CONDITIONAL_RENDERING_BIT_EXT' specifies that the buffer
--- is suitable for passing as the @buffer@ parameter to
--- 'Vulkan.Extensions.VK_EXT_conditional_rendering.cmdBeginConditionalRenderingEXT'.
-pattern BUFFER_USAGE_2_CONDITIONAL_RENDERING_BIT_EXT = BufferUsageFlagBits2KHR 0x0000000000000200
-
--- | 'BUFFER_USAGE_2_EXECUTION_GRAPH_SCRATCH_BIT_AMDX' specifies that the
--- buffer /can/ be used for as scratch memory for
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#executiongraphs execution graph dispatch>.
-pattern BUFFER_USAGE_2_EXECUTION_GRAPH_SCRATCH_BIT_AMDX = BufferUsageFlagBits2KHR 0x0000000002000000
-
-conNameBufferUsageFlagBits2KHR :: String
-conNameBufferUsageFlagBits2KHR = "BufferUsageFlagBits2KHR"
-
-enumPrefixBufferUsageFlagBits2KHR :: String
-enumPrefixBufferUsageFlagBits2KHR = "BUFFER_USAGE_2_"
-
-showTableBufferUsageFlagBits2KHR :: [(BufferUsageFlagBits2KHR, String)]
-showTableBufferUsageFlagBits2KHR =
-  [
-    ( BUFFER_USAGE_2_TRANSFER_SRC_BIT_KHR
-    , "TRANSFER_SRC_BIT_KHR"
-    )
-  ,
-    ( BUFFER_USAGE_2_TRANSFER_DST_BIT_KHR
-    , "TRANSFER_DST_BIT_KHR"
-    )
-  ,
-    ( BUFFER_USAGE_2_UNIFORM_TEXEL_BUFFER_BIT_KHR
-    , "UNIFORM_TEXEL_BUFFER_BIT_KHR"
-    )
-  ,
-    ( BUFFER_USAGE_2_STORAGE_TEXEL_BUFFER_BIT_KHR
-    , "STORAGE_TEXEL_BUFFER_BIT_KHR"
-    )
-  ,
-    ( BUFFER_USAGE_2_UNIFORM_BUFFER_BIT_KHR
-    , "UNIFORM_BUFFER_BIT_KHR"
-    )
-  ,
-    ( BUFFER_USAGE_2_STORAGE_BUFFER_BIT_KHR
-    , "STORAGE_BUFFER_BIT_KHR"
-    )
-  ,
-    ( BUFFER_USAGE_2_INDEX_BUFFER_BIT_KHR
-    , "INDEX_BUFFER_BIT_KHR"
-    )
-  ,
-    ( BUFFER_USAGE_2_VERTEX_BUFFER_BIT_KHR
-    , "VERTEX_BUFFER_BIT_KHR"
-    )
-  ,
-    ( BUFFER_USAGE_2_INDIRECT_BUFFER_BIT_KHR
-    , "INDIRECT_BUFFER_BIT_KHR"
-    )
-  ,
-    ( BUFFER_USAGE_2_PREPROCESS_BUFFER_BIT_EXT
-    , "PREPROCESS_BUFFER_BIT_EXT"
-    )
-  ,
-    ( BUFFER_USAGE_2_MICROMAP_STORAGE_BIT_EXT
-    , "MICROMAP_STORAGE_BIT_EXT"
-    )
-  ,
-    ( BUFFER_USAGE_2_MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXT
-    , "MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXT"
-    )
-  ,
-    ( BUFFER_USAGE_2_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT
-    , "PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT"
-    )
-  ,
-    ( BUFFER_USAGE_2_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT
-    , "RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT"
-    )
-  ,
-    ( BUFFER_USAGE_2_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT
-    , "SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT"
-    )
-  ,
-    ( BUFFER_USAGE_2_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR
-    , "ACCELERATION_STRUCTURE_STORAGE_BIT_KHR"
-    )
-  ,
-    ( BUFFER_USAGE_2_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR
-    , "ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR"
-    )
-  ,
-    ( BUFFER_USAGE_2_SHADER_DEVICE_ADDRESS_BIT_KHR
-    , "SHADER_DEVICE_ADDRESS_BIT_KHR"
-    )
-  ,
-    ( BUFFER_USAGE_2_VIDEO_ENCODE_SRC_BIT_KHR
-    , "VIDEO_ENCODE_SRC_BIT_KHR"
-    )
-  ,
-    ( BUFFER_USAGE_2_VIDEO_ENCODE_DST_BIT_KHR
-    , "VIDEO_ENCODE_DST_BIT_KHR"
-    )
-  ,
-    ( BUFFER_USAGE_2_VIDEO_DECODE_DST_BIT_KHR
-    , "VIDEO_DECODE_DST_BIT_KHR"
-    )
-  ,
-    ( BUFFER_USAGE_2_VIDEO_DECODE_SRC_BIT_KHR
-    , "VIDEO_DECODE_SRC_BIT_KHR"
-    )
-  ,
-    ( BUFFER_USAGE_2_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT
-    , "TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT"
-    )
-  ,
-    ( BUFFER_USAGE_2_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT
-    , "TRANSFORM_FEEDBACK_BUFFER_BIT_EXT"
-    )
-  ,
-    ( BUFFER_USAGE_2_SHADER_BINDING_TABLE_BIT_KHR
-    , "SHADER_BINDING_TABLE_BIT_KHR"
-    )
-  ,
-    ( BUFFER_USAGE_2_CONDITIONAL_RENDERING_BIT_EXT
-    , "CONDITIONAL_RENDERING_BIT_EXT"
-    )
-  ,
-    ( BUFFER_USAGE_2_EXECUTION_GRAPH_SCRATCH_BIT_AMDX
-    , "EXECUTION_GRAPH_SCRATCH_BIT_AMDX"
-    )
-  ]
-
-instance Show BufferUsageFlagBits2KHR where
-  showsPrec =
-    enumShowsPrec
-      enumPrefixBufferUsageFlagBits2KHR
-      showTableBufferUsageFlagBits2KHR
-      conNameBufferUsageFlagBits2KHR
-      (\(BufferUsageFlagBits2KHR x) -> x)
-      (\x -> showString "0x" . showHex x)
-
-instance Read BufferUsageFlagBits2KHR where
-  readPrec =
-    enumReadPrec
-      enumPrefixBufferUsageFlagBits2KHR
-      showTableBufferUsageFlagBits2KHR
-      conNameBufferUsageFlagBits2KHR
-      BufferUsageFlagBits2KHR
-
-type PipelineCreateFlags2KHR = PipelineCreateFlagBits2KHR
-
--- | VkPipelineCreateFlagBits2KHR - Bitmask controlling how a pipeline is
--- created
---
--- = Description
---
--- -   'PIPELINE_CREATE_2_DISABLE_OPTIMIZATION_BIT_KHR' specifies that the
---     created pipeline will not be optimized. Using this flag /may/ reduce
---     the time taken to create the pipeline.
---
--- -   'PIPELINE_CREATE_2_ALLOW_DERIVATIVES_BIT_KHR' specifies that the
---     pipeline to be created is allowed to be the parent of a pipeline
---     that will be created in a subsequent pipeline creation call.
---
--- -   'PIPELINE_CREATE_2_DERIVATIVE_BIT_KHR' specifies that the pipeline
---     to be created will be a child of a previously created parent
---     pipeline.
---
--- -   'PIPELINE_CREATE_2_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR' specifies
---     that any shader input variables decorated as @ViewIndex@ will be
---     assigned values as if they were decorated as @DeviceIndex@.
---
--- -   'PIPELINE_CREATE_2_DISPATCH_BASE_BIT_KHR' specifies that a compute
---     pipeline /can/ be used with
---     'Vulkan.Core11.Promoted_From_VK_KHR_device_group.cmdDispatchBase'
---     with a non-zero base workgroup.
---
--- -   'PIPELINE_CREATE_2_DEFER_COMPILE_BIT_NV' specifies that a pipeline
---     is created with all shaders in the deferred state. Before using the
---     pipeline the application /must/ call
---     'Vulkan.Extensions.VK_NV_ray_tracing.compileDeferredNV' exactly once
---     on each shader in the pipeline before using the pipeline.
---
--- -   'PIPELINE_CREATE_2_CAPTURE_STATISTICS_BIT_KHR' specifies that the
---     shader compiler should capture statistics for the pipeline
---     executables produced by the compile process which /can/ later be
---     retrieved by calling
---     'Vulkan.Extensions.VK_KHR_pipeline_executable_properties.getPipelineExecutableStatisticsKHR'.
---     Enabling this flag /must/ not affect the final compiled pipeline but
---     /may/ disable pipeline caching or otherwise affect pipeline creation
---     time.
---
--- -   'PIPELINE_CREATE_2_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR'
---     specifies that the shader compiler should capture the internal
---     representations of pipeline executables produced by the compile
---     process which /can/ later be retrieved by calling
---     'Vulkan.Extensions.VK_KHR_pipeline_executable_properties.getPipelineExecutableInternalRepresentationsKHR'.
---     Enabling this flag /must/ not affect the final compiled pipeline but
---     /may/ disable pipeline caching or otherwise affect pipeline creation
---     time. When capturing IR from pipelines created with pipeline
---     libraries, there is no guarantee that IR from libraries /can/ be
---     retrieved from the linked pipeline. Applications /should/ retrieve
---     IR from each library, and any linked pipelines, separately.
---
--- -   'PIPELINE_CREATE_2_LIBRARY_BIT_KHR' specifies that the pipeline
---     /cannot/ be used directly, and instead defines a /pipeline library/
---     that /can/ be combined with other pipelines using the
---     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'
---     structure. This is available in ray tracing and graphics pipelines.
---
--- -   'PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR'
---     specifies that an any-hit shader will always be present when an
---     any-hit shader would be executed. A NULL any-hit shader is an
---     any-hit shader which is effectively
---     'Vulkan.Core10.APIConstants.SHADER_UNUSED_KHR', such as from a
---     shader group consisting entirely of zeros.
---
--- -   'PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR'
---     specifies that a closest hit shader will always be present when a
---     closest hit shader would be executed. A NULL closest hit shader is a
---     closest hit shader which is effectively
---     'Vulkan.Core10.APIConstants.SHADER_UNUSED_KHR', such as from a
---     shader group consisting entirely of zeros.
---
--- -   'PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR'
---     specifies that a miss shader will always be present when a miss
---     shader would be executed. A NULL miss shader is a miss shader which
---     is effectively 'Vulkan.Core10.APIConstants.SHADER_UNUSED_KHR', such
---     as from a shader group consisting entirely of zeros.
---
--- -   'PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR'
---     specifies that an intersection shader will always be present when an
---     intersection shader would be executed. A NULL intersection shader is
---     an intersection shader which is effectively
---     'Vulkan.Core10.APIConstants.SHADER_UNUSED_KHR', such as from a
---     shader group consisting entirely of zeros.
---
--- -   'PIPELINE_CREATE_2_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR' specifies
---     that triangle primitives will be skipped during traversal using
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#glossary-pipeline-trace-ray pipeline trace ray>
---     instructions.
---
--- -   'PIPELINE_CREATE_2_RAY_TRACING_SKIP_AABBS_BIT_KHR' specifies that
---     AABB primitives will be skipped during traversal using
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#glossary-pipeline-trace-ray pipeline trace ray>
---     instructions.
---
--- -   'PIPELINE_CREATE_2_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR'
---     specifies that the shader group handles /can/ be saved and reused on
---     a subsequent run (e.g. for trace capture and replay).
---
--- -   'PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_NV' specifies that the
---     pipeline can be used in combination with
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#device-generated-commands>.
---
--- -   'PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXT' specifies that the
---     pipeline /can/ be used in a
---     'Vulkan.Extensions.Handles.IndirectExecutionSetEXT'.
---
--- -   'PIPELINE_CREATE_2_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_KHR'
---     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
---     'Vulkan.Core10.APIConstants.NULL_HANDLE'.
---
--- -   When creating multiple pipelines,
---     'PIPELINE_CREATE_2_EARLY_RETURN_ON_FAILURE_BIT_KHR' specifies that
---     control will be returned to the application if any individual
---     pipeline returns a result which is not
---     'Vulkan.Core10.Enums.Result.SUCCESS' rather than continuing to
---     create additional pipelines.
---
--- -   'PIPELINE_CREATE_2_RAY_TRACING_ALLOW_MOTION_BIT_NV' specifies that
---     the pipeline is allowed to use @OpTraceRayMotionNV@.
---
--- -   'PIPELINE_CREATE_2_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
---     specifies that the pipeline will be used with a fragment shading
---     rate attachment.
---
--- -   'PIPELINE_CREATE_2_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT'
---     specifies that the pipeline will be used with a fragment density map
---     attachment.
---
--- -   'PIPELINE_CREATE_2_LINK_TIME_OPTIMIZATION_BIT_EXT' specifies that
---     pipeline libraries being linked into this library /should/ have link
---     time optimizations applied. If this bit is omitted, implementations
---     /should/ instead perform linking as rapidly as possible.
---
--- -   'PIPELINE_CREATE_2_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT'
---     specifies that pipeline libraries should retain any information
---     necessary to later perform an optimal link with
---     'PIPELINE_CREATE_2_LINK_TIME_OPTIMIZATION_BIT_EXT'.
---
--- -   'PIPELINE_CREATE_2_DESCRIPTOR_BUFFER_BIT_EXT' specifies that a
---     pipeline will be used with
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorbuffers descriptor buffers>,
---     rather than
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets descriptor sets>.
---
--- -   'PIPELINE_CREATE_2_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT' specifies
---     that the pipeline /may/ be used with an attachment feedback loop
---     including color attachments.
---
--- -   'PIPELINE_CREATE_2_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT'
---     specifies that the pipeline /may/ be used with an attachment
---     feedback loop including depth-stencil attachments.
---
--- -   'PIPELINE_CREATE_2_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT' specifies
---     that the ray tracing pipeline /can/ be used with acceleration
---     structures which reference an opacity micromap array.
---
--- -   'PIPELINE_CREATE_2_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV'
---     specifies that the ray tracing pipeline /can/ be used with
---     acceleration structures which reference a displacement micromap
---     array.
---
--- -   'PIPELINE_CREATE_2_NO_PROTECTED_ACCESS_BIT_EXT' specifies that the
---     pipeline /must/ not be bound to a protected command buffer.
---
--- -   'PIPELINE_CREATE_2_PROTECTED_ACCESS_ONLY_BIT_EXT' specifies that the
---     pipeline /must/ not be bound to an unprotected command buffer.
---
--- -   'PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR' specifies that
---     'Vulkan.Extensions.Handles.PipelineBinaryKHR' objects /can/ be
---     created from the pipeline. If
---     'PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR' is used, implementations
---     /should/ not store pipeline data to an internal cache, if such a
---     cache exists as stated by
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-pipelineBinaryInternalCache pipelineBinaryInternalCache>.
---     If
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-pipelineBinaryPrefersInternalCache pipelineBinaryPrefersInternalCache>
---     is 'Vulkan.Core10.FundamentalTypes.TRUE', applications /should/ not
---     use 'PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR'.
---
--- -   'PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT' specifies that
---     the pipeline will be used in a render pass that is begun with
---     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT'.
---
--- -   'PIPELINE_CREATE_2_EXECUTION_GRAPH_BIT_AMDX' specifies that the
---     pipeline will be used in an
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#executiongraphs execution graph>
---
--- It is valid to set both 'PIPELINE_CREATE_2_ALLOW_DERIVATIVES_BIT_KHR'
--- and 'PIPELINE_CREATE_2_DERIVATIVE_BIT_KHR'. This allows a pipeline to be
--- both a parent and possibly a child in a pipeline hierarchy. See
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-pipeline-derivatives Pipeline Derivatives>
--- for more information.
---
--- When an implementation is looking up a pipeline in a
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-cache pipeline cache>,
--- if that pipeline is being created using linked libraries,
--- implementations /should/ always return an equivalent pipeline created
--- with 'PIPELINE_CREATE_2_LINK_TIME_OPTIMIZATION_BIT_EXT' if available,
--- whether or not that bit was specified.
---
--- Using 'PIPELINE_CREATE_2_LINK_TIME_OPTIMIZATION_BIT_EXT' (or not) when
--- linking pipeline libraries is intended as a performance tradeoff between
--- host and device. If the bit is omitted, linking should be faster and
--- produce a pipeline more rapidly, but performance of the pipeline on the
--- target device may be reduced. If the bit is included, linking may be
--- slower but should produce a pipeline with device performance comparable
--- to a monolithically created pipeline. Using both options can allow
--- latency-sensitive applications to generate a suboptimal but usable
--- pipeline quickly, and then perform an optimal link in the background,
--- substituting the result for the suboptimally linked pipeline as soon as
--- it is available.
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance5 VK_KHR_maintenance5>,
--- 'PipelineCreateFlags2KHR'
-newtype PipelineCreateFlagBits2KHR = PipelineCreateFlagBits2KHR Flags64
-  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
-
--- No documentation found for Nested "VkPipelineCreateFlagBits2KHR" "VK_PIPELINE_CREATE_2_DISABLE_OPTIMIZATION_BIT_KHR"
-pattern PIPELINE_CREATE_2_DISABLE_OPTIMIZATION_BIT_KHR = PipelineCreateFlagBits2KHR 0x0000000000000001
-
--- No documentation found for Nested "VkPipelineCreateFlagBits2KHR" "VK_PIPELINE_CREATE_2_ALLOW_DERIVATIVES_BIT_KHR"
-pattern PIPELINE_CREATE_2_ALLOW_DERIVATIVES_BIT_KHR = PipelineCreateFlagBits2KHR 0x0000000000000002
-
--- No documentation found for Nested "VkPipelineCreateFlagBits2KHR" "VK_PIPELINE_CREATE_2_DERIVATIVE_BIT_KHR"
-pattern PIPELINE_CREATE_2_DERIVATIVE_BIT_KHR = PipelineCreateFlagBits2KHR 0x0000000000000004
-
--- No documentation found for Nested "VkPipelineCreateFlagBits2KHR" "VK_PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXT"
-pattern PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXT = PipelineCreateFlagBits2KHR 0x0000004000000000
-
--- No documentation found for Nested "VkPipelineCreateFlagBits2KHR" "VK_PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR"
-pattern PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR = PipelineCreateFlagBits2KHR 0x0000000080000000
-
--- No documentation found for Nested "VkPipelineCreateFlagBits2KHR" "VK_PIPELINE_CREATE_2_DESCRIPTOR_BUFFER_BIT_EXT"
-pattern PIPELINE_CREATE_2_DESCRIPTOR_BUFFER_BIT_EXT = PipelineCreateFlagBits2KHR 0x0000000020000000
-
--- No documentation found for Nested "VkPipelineCreateFlagBits2KHR" "VK_PIPELINE_CREATE_2_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV"
-pattern PIPELINE_CREATE_2_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV = PipelineCreateFlagBits2KHR 0x0000000010000000
-
--- No documentation found for Nested "VkPipelineCreateFlagBits2KHR" "VK_PIPELINE_CREATE_2_PROTECTED_ACCESS_ONLY_BIT_EXT"
-pattern PIPELINE_CREATE_2_PROTECTED_ACCESS_ONLY_BIT_EXT = PipelineCreateFlagBits2KHR 0x0000000040000000
-
--- No documentation found for Nested "VkPipelineCreateFlagBits2KHR" "VK_PIPELINE_CREATE_2_NO_PROTECTED_ACCESS_BIT_EXT"
-pattern PIPELINE_CREATE_2_NO_PROTECTED_ACCESS_BIT_EXT = PipelineCreateFlagBits2KHR 0x0000000008000000
-
--- No documentation found for Nested "VkPipelineCreateFlagBits2KHR" "VK_PIPELINE_CREATE_2_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT"
-pattern PIPELINE_CREATE_2_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = PipelineCreateFlagBits2KHR 0x0000000004000000
-
--- No documentation found for Nested "VkPipelineCreateFlagBits2KHR" "VK_PIPELINE_CREATE_2_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT"
-pattern PIPELINE_CREATE_2_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = PipelineCreateFlagBits2KHR 0x0000000002000000
-
--- No documentation found for Nested "VkPipelineCreateFlagBits2KHR" "VK_PIPELINE_CREATE_2_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT"
-pattern PIPELINE_CREATE_2_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT = PipelineCreateFlagBits2KHR 0x0000000001000000
-
--- No documentation found for Nested "VkPipelineCreateFlagBits2KHR" "VK_PIPELINE_CREATE_2_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT"
-pattern PIPELINE_CREATE_2_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = PipelineCreateFlagBits2KHR 0x0000000000400000
-
--- No documentation found for Nested "VkPipelineCreateFlagBits2KHR" "VK_PIPELINE_CREATE_2_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"
-pattern PIPELINE_CREATE_2_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = PipelineCreateFlagBits2KHR 0x0000000000200000
-
--- No documentation found for Nested "VkPipelineCreateFlagBits2KHR" "VK_PIPELINE_CREATE_2_RAY_TRACING_ALLOW_MOTION_BIT_NV"
-pattern PIPELINE_CREATE_2_RAY_TRACING_ALLOW_MOTION_BIT_NV = PipelineCreateFlagBits2KHR 0x0000000000100000
-
--- No documentation found for Nested "VkPipelineCreateFlagBits2KHR" "VK_PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_NV"
-pattern PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_NV = PipelineCreateFlagBits2KHR 0x0000000000040000
-
--- No documentation found for Nested "VkPipelineCreateFlagBits2KHR" "VK_PIPELINE_CREATE_2_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR"
-pattern PIPELINE_CREATE_2_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR = PipelineCreateFlagBits2KHR 0x0000000000080000
-
--- No documentation found for Nested "VkPipelineCreateFlagBits2KHR" "VK_PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR"
-pattern PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR = PipelineCreateFlagBits2KHR 0x0000000000020000
-
--- No documentation found for Nested "VkPipelineCreateFlagBits2KHR" "VK_PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR"
-pattern PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR = PipelineCreateFlagBits2KHR 0x0000000000010000
-
--- No documentation found for Nested "VkPipelineCreateFlagBits2KHR" "VK_PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR"
-pattern PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR = PipelineCreateFlagBits2KHR 0x0000000000008000
-
--- No documentation found for Nested "VkPipelineCreateFlagBits2KHR" "VK_PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR"
-pattern PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR = PipelineCreateFlagBits2KHR 0x0000000000004000
-
--- No documentation found for Nested "VkPipelineCreateFlagBits2KHR" "VK_PIPELINE_CREATE_2_RAY_TRACING_SKIP_AABBS_BIT_KHR"
-pattern PIPELINE_CREATE_2_RAY_TRACING_SKIP_AABBS_BIT_KHR = PipelineCreateFlagBits2KHR 0x0000000000002000
-
--- No documentation found for Nested "VkPipelineCreateFlagBits2KHR" "VK_PIPELINE_CREATE_2_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR"
-pattern PIPELINE_CREATE_2_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR = PipelineCreateFlagBits2KHR 0x0000000000001000
-
--- No documentation found for Nested "VkPipelineCreateFlagBits2KHR" "VK_PIPELINE_CREATE_2_LIBRARY_BIT_KHR"
-pattern PIPELINE_CREATE_2_LIBRARY_BIT_KHR = PipelineCreateFlagBits2KHR 0x0000000000000800
-
--- No documentation found for Nested "VkPipelineCreateFlagBits2KHR" "VK_PIPELINE_CREATE_2_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT"
-pattern PIPELINE_CREATE_2_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT = PipelineCreateFlagBits2KHR 0x0000000000800000
-
--- No documentation found for Nested "VkPipelineCreateFlagBits2KHR" "VK_PIPELINE_CREATE_2_LINK_TIME_OPTIMIZATION_BIT_EXT"
-pattern PIPELINE_CREATE_2_LINK_TIME_OPTIMIZATION_BIT_EXT = PipelineCreateFlagBits2KHR 0x0000000000000400
-
--- No documentation found for Nested "VkPipelineCreateFlagBits2KHR" "VK_PIPELINE_CREATE_2_EARLY_RETURN_ON_FAILURE_BIT_KHR"
-pattern PIPELINE_CREATE_2_EARLY_RETURN_ON_FAILURE_BIT_KHR = PipelineCreateFlagBits2KHR 0x0000000000000200
-
--- No documentation found for Nested "VkPipelineCreateFlagBits2KHR" "VK_PIPELINE_CREATE_2_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_KHR"
-pattern PIPELINE_CREATE_2_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_KHR = PipelineCreateFlagBits2KHR 0x0000000000000100
-
--- No documentation found for Nested "VkPipelineCreateFlagBits2KHR" "VK_PIPELINE_CREATE_2_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR"
-pattern PIPELINE_CREATE_2_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR = PipelineCreateFlagBits2KHR 0x0000000000000080
-
--- No documentation found for Nested "VkPipelineCreateFlagBits2KHR" "VK_PIPELINE_CREATE_2_CAPTURE_STATISTICS_BIT_KHR"
-pattern PIPELINE_CREATE_2_CAPTURE_STATISTICS_BIT_KHR = PipelineCreateFlagBits2KHR 0x0000000000000040
-
--- No documentation found for Nested "VkPipelineCreateFlagBits2KHR" "VK_PIPELINE_CREATE_2_DEFER_COMPILE_BIT_NV"
-pattern PIPELINE_CREATE_2_DEFER_COMPILE_BIT_NV = PipelineCreateFlagBits2KHR 0x0000000000000020
-
--- No documentation found for Nested "VkPipelineCreateFlagBits2KHR" "VK_PIPELINE_CREATE_2_DISPATCH_BASE_BIT_KHR"
-pattern PIPELINE_CREATE_2_DISPATCH_BASE_BIT_KHR = PipelineCreateFlagBits2KHR 0x0000000000000010
-
--- No documentation found for Nested "VkPipelineCreateFlagBits2KHR" "VK_PIPELINE_CREATE_2_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR"
-pattern PIPELINE_CREATE_2_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR = PipelineCreateFlagBits2KHR 0x0000000000000008
-
--- No documentation found for Nested "VkPipelineCreateFlagBits2KHR" "VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT"
-pattern PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT = PipelineCreateFlagBits2KHR 0x0000000400000000
-
--- No documentation found for Nested "VkPipelineCreateFlagBits2KHR" "VK_PIPELINE_CREATE_2_EXECUTION_GRAPH_BIT_AMDX"
-pattern PIPELINE_CREATE_2_EXECUTION_GRAPH_BIT_AMDX = PipelineCreateFlagBits2KHR 0x0000000100000000
-
-conNamePipelineCreateFlagBits2KHR :: String
-conNamePipelineCreateFlagBits2KHR = "PipelineCreateFlagBits2KHR"
-
-enumPrefixPipelineCreateFlagBits2KHR :: String
-enumPrefixPipelineCreateFlagBits2KHR = "PIPELINE_CREATE_2_"
-
-showTablePipelineCreateFlagBits2KHR :: [(PipelineCreateFlagBits2KHR, String)]
-showTablePipelineCreateFlagBits2KHR =
-  [
-    ( PIPELINE_CREATE_2_DISABLE_OPTIMIZATION_BIT_KHR
-    , "DISABLE_OPTIMIZATION_BIT_KHR"
-    )
-  ,
-    ( PIPELINE_CREATE_2_ALLOW_DERIVATIVES_BIT_KHR
-    , "ALLOW_DERIVATIVES_BIT_KHR"
-    )
-  ,
-    ( PIPELINE_CREATE_2_DERIVATIVE_BIT_KHR
-    , "DERIVATIVE_BIT_KHR"
-    )
-  ,
-    ( PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXT
-    , "INDIRECT_BINDABLE_BIT_EXT"
-    )
-  ,
-    ( PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR
-    , "CAPTURE_DATA_BIT_KHR"
-    )
-  ,
-    ( PIPELINE_CREATE_2_DESCRIPTOR_BUFFER_BIT_EXT
-    , "DESCRIPTOR_BUFFER_BIT_EXT"
-    )
-  ,
-    ( PIPELINE_CREATE_2_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV
-    , "RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV"
-    )
-  ,
-    ( PIPELINE_CREATE_2_PROTECTED_ACCESS_ONLY_BIT_EXT
-    , "PROTECTED_ACCESS_ONLY_BIT_EXT"
-    )
-  ,
-    ( PIPELINE_CREATE_2_NO_PROTECTED_ACCESS_BIT_EXT
-    , "NO_PROTECTED_ACCESS_BIT_EXT"
-    )
-  ,
-    ( PIPELINE_CREATE_2_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT
-    , "DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT"
-    )
-  ,
-    ( PIPELINE_CREATE_2_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT
-    , "COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT"
-    )
-  ,
-    ( PIPELINE_CREATE_2_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT
-    , "RAY_TRACING_OPACITY_MICROMAP_BIT_EXT"
-    )
-  ,
-    ( PIPELINE_CREATE_2_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT
-    , "RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT"
-    )
-  ,
-    ( PIPELINE_CREATE_2_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
-    , "RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"
-    )
-  ,
-    ( PIPELINE_CREATE_2_RAY_TRACING_ALLOW_MOTION_BIT_NV
-    , "RAY_TRACING_ALLOW_MOTION_BIT_NV"
-    )
-  ,
-    ( PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_NV
-    , "INDIRECT_BINDABLE_BIT_NV"
-    )
-  ,
-    ( PIPELINE_CREATE_2_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR
-    , "RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR"
-    )
-  ,
-    ( PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR
-    , "RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR"
-    )
-  ,
-    ( PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR
-    , "RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR"
-    )
-  ,
-    ( PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR
-    , "RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR"
-    )
-  ,
-    ( PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR
-    , "RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR"
-    )
-  ,
-    ( PIPELINE_CREATE_2_RAY_TRACING_SKIP_AABBS_BIT_KHR
-    , "RAY_TRACING_SKIP_AABBS_BIT_KHR"
-    )
-  ,
-    ( PIPELINE_CREATE_2_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR
-    , "RAY_TRACING_SKIP_TRIANGLES_BIT_KHR"
-    )
-  ,
-    ( PIPELINE_CREATE_2_LIBRARY_BIT_KHR
-    , "LIBRARY_BIT_KHR"
-    )
-  ,
-    ( PIPELINE_CREATE_2_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT
-    , "RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT"
-    )
-  ,
-    ( PIPELINE_CREATE_2_LINK_TIME_OPTIMIZATION_BIT_EXT
-    , "LINK_TIME_OPTIMIZATION_BIT_EXT"
-    )
-  ,
-    ( PIPELINE_CREATE_2_EARLY_RETURN_ON_FAILURE_BIT_KHR
-    , "EARLY_RETURN_ON_FAILURE_BIT_KHR"
-    )
-  ,
-    ( PIPELINE_CREATE_2_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_KHR
-    , "FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_KHR"
-    )
-  ,
-    ( PIPELINE_CREATE_2_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR
-    , "CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR"
-    )
-  ,
-    ( PIPELINE_CREATE_2_CAPTURE_STATISTICS_BIT_KHR
-    , "CAPTURE_STATISTICS_BIT_KHR"
-    )
-  ,
-    ( PIPELINE_CREATE_2_DEFER_COMPILE_BIT_NV
-    , "DEFER_COMPILE_BIT_NV"
-    )
-  ,
-    ( PIPELINE_CREATE_2_DISPATCH_BASE_BIT_KHR
-    , "DISPATCH_BASE_BIT_KHR"
-    )
-  ,
-    ( PIPELINE_CREATE_2_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR
-    , "VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR"
-    )
-  ,
-    ( PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT
-    , "ENABLE_LEGACY_DITHERING_BIT_EXT"
-    )
-  ,
-    ( PIPELINE_CREATE_2_EXECUTION_GRAPH_BIT_AMDX
-    , "EXECUTION_GRAPH_BIT_AMDX"
-    )
-  ]
-
-instance Show PipelineCreateFlagBits2KHR where
-  showsPrec =
-    enumShowsPrec
-      enumPrefixPipelineCreateFlagBits2KHR
-      showTablePipelineCreateFlagBits2KHR
-      conNamePipelineCreateFlagBits2KHR
-      (\(PipelineCreateFlagBits2KHR x) -> x)
-      (\x -> showString "0x" . showHex x)
-
-instance Read PipelineCreateFlagBits2KHR where
-  readPrec =
-    enumReadPrec
-      enumPrefixPipelineCreateFlagBits2KHR
-      showTablePipelineCreateFlagBits2KHR
-      conNamePipelineCreateFlagBits2KHR
-      PipelineCreateFlagBits2KHR
+--     -   Interacts with VK_VERSION_1_2
+--
+--     -   Interacts with VK_VERSION_1_3
+--
+--     -   Interacts with VK_VERSION_1_4
+--
+--     -   Interacts with VK_ARM_pipeline_opacity_micromap
+--
+--     -   Interacts with VK_ARM_shader_instrumentation
+--
+--     -   Interacts with VK_EXT_attachment_feedback_loop_layout
+--
+--     -   Interacts with VK_EXT_buffer_device_address
+--
+--     -   Interacts with VK_EXT_conditional_rendering
+--
+--     -   Interacts with VK_EXT_descriptor_buffer
+--
+--     -   Interacts with VK_EXT_fragment_density_map
+--
+--     -   Interacts with VK_EXT_graphics_pipeline_library
+--
+--     -   Interacts with VK_EXT_pipeline_creation_cache_control
+--
+--     -   Interacts with VK_EXT_pipeline_protected_access
+--
+--     -   Interacts with VK_EXT_transform_feedback
+--
+--     -   Interacts with VK_KHR_acceleration_structure
+--
+--     -   Interacts with VK_KHR_buffer_device_address
+--
+--     -   Interacts with VK_KHR_dynamic_rendering
+--
+--     -   Interacts with VK_KHR_fragment_shading_rate
+--
+--     -   Interacts with VK_KHR_pipeline_executable_properties
+--
+--     -   Interacts with VK_KHR_pipeline_library
+--
+--     -   Interacts with VK_KHR_ray_tracing_pipeline
+--
+--     -   Interacts with VK_KHR_video_decode_queue
+--
+--     -   Interacts with VK_KHR_video_encode_queue
+--
+--     -   Interacts with VK_NV_device_generated_commands
+--
+--     -   Interacts with VK_NV_displacement_micromap
+--
+--     -   Interacts with VK_NV_ray_tracing
+--
+--     -   Interacts with VK_NV_ray_tracing_motion_blur
+--
+-- [__Deprecation State__]
+--
+--     -   /Promoted/ to
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.4-promotions Vulkan 1.4>
+--
+-- [__Contact__]
+--
+--     -   Stu Smith
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_maintenance5] @stu-s%0A*Here describe the issue or question you have about the VK_KHR_maintenance5 extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_KHR_maintenance5.adoc VK_KHR_maintenance5>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2023-05-02
+--
+-- [__Interactions and External Dependencies__; __Contributors__]
+--
+--     -   Stu Smith, AMD
+--
+--     -   Tobias Hector, AMD
+--
+--     -   Shahbaz Youssefi, Google
+--
+--     -   Slawomir Cygan, Intel
+--
+--     -   Lionel Landwerlin, Intel
+--
+--     -   James Fitzpatrick, Imagination Technologies
+--
+--     -   Andrew Garrard, Imagination Technologies
+--
+--     -   Ralph Potter, Samsung
+--
+--     -   Pan Gao, Huawei
+--
+--     -   Jan-Harald Fredriksen, ARM
+--
+--     -   Jon Leech, Khronos
+--
+--     -   Mike Blumenkrantz, Valve
+--
+-- == Description
+--
+-- @VK_KHR_maintenance5@ adds a collection of minor features, none of which
+-- would warrant an entire extension of their own.
+--
+-- The new features are as follows:
+--
+-- -   A new 'FORMAT_A1B5G5R5_UNORM_PACK16_KHR' format
+--
+-- -   A new 'FORMAT_A8_UNORM_KHR' format
+--
+-- -   A property to indicate that multisample coverage operations are
+--     performed after sample counting in EarlyFragmentTests mode
+--
+-- -   Relax VkBufferView creation requirements by allowing subsets of the
+--     associated VkBuffer usage using 'BufferUsageFlags2CreateInfoKHR'
+--
+-- -   A new command 'cmdBindIndexBuffer2KHR', allowing a range of memory
+--     to be bound as an index buffer
+--
+-- -   'Vulkan.Core10.DeviceInitialization.getDeviceProcAddr' must return
+--     @NULL@ for supported core functions beyond the version requested by
+--     the application.
+--
+-- -   A property to indicate that the sample mask test is performed after
+--     sample counting in EarlyFragmentTests mode
+--
+-- -   'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2'
+--     now supports using 'Vulkan.Core10.APIConstants.WHOLE_SIZE' in the
+--     @pSizes@ parameter.
+--
+-- -   A default size of 1.0 is used if @PointSize@ is not written
+--
+-- -   Shader modules are deprecated - applications can now pass
+--     'Vulkan.Core10.Shader.ShaderModuleCreateInfo' as a chained structure
+--     to pipeline creation via
+--     'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo'
+--
+-- -   A function 'getRenderingAreaGranularityKHR' to query the optimal
+--     render area for a dynamic rendering instance.
+--
+-- -   A property to indicate that depth\/stencil texturing operations with
+--     'Vulkan.Core10.Enums.ComponentSwizzle.COMPONENT_SWIZZLE_ONE' have
+--     defined behavior
+--
+-- -   Add 'getImageSubresourceLayout2KHR' and a new function
+--     'getDeviceImageSubresourceLayoutKHR' to allow the application to
+--     query the image memory layout without having to create an image
+--     object and query it.
+--
+-- -   Allow 'Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS' as the
+--     @layerCount@ member of
+--     'Vulkan.Core10.CommandBufferBuilding.ImageSubresourceLayers'
+--
+-- -   Adds stronger guarantees for propagation of
+--     'Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST' return values
+--
+-- -   A property to indicate whether @PointSize@ controls the final
+--     rasterization of polygons if
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-polygonmode polygon mode>
+--     is 'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_POINT'
+--
+-- -   Two properties to indicate the non-strict line rasterization
+--     algorithm used
+--
+-- -   Two new flags words 'PipelineCreateFlagBits2KHR' and
+--     'BufferUsageFlagBits2KHR'
+--
+-- -   Physical-device-level functions can now be called with any value in
+--     the valid range for a type beyond the defined enumerants, such that
+--     applications can avoid checking individual features, extensions, or
+--     versions before querying supported properties of a particular
+--     enumerant.
+--
+-- -   Clarification that copies between images of any type are allowed,
+--     treating 1D images as 2D images with a height of 1.
+--
+-- == New Commands
+--
+-- -   'cmdBindIndexBuffer2KHR'
+--
+-- -   'getDeviceImageSubresourceLayoutKHR'
+--
+-- -   'getImageSubresourceLayout2KHR'
+--
+-- -   'getRenderingAreaGranularityKHR'
+--
+-- == New Structures
+--
+-- -   'DeviceImageSubresourceInfoKHR'
+--
+-- -   'ImageSubresource2KHR'
+--
+-- -   'RenderingAreaInfoKHR'
+--
+-- -   'SubresourceLayout2KHR'
+--
+-- -   Extending 'Vulkan.Core10.BufferView.BufferViewCreateInfo',
+--     'Vulkan.Core10.Buffer.BufferCreateInfo',
+--     'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceExternalBufferInfo',
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.DescriptorBufferBindingInfoEXT':
+--
+--     -   'BufferUsageFlags2CreateInfoKHR'
+--
+-- -   Extending 'Vulkan.Core10.ComputePipeline.ComputePipelineCreateInfo',
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo',
+--     'Vulkan.Extensions.VK_NV_ray_tracing.RayTracingPipelineCreateInfoNV',
+--     'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingPipelineCreateInfoKHR':
+--
+--     -   'PipelineCreateFlags2CreateInfoKHR'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceMaintenance5FeaturesKHR'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDeviceMaintenance5PropertiesKHR'
+--
+-- == New Enums
+--
+-- -   'BufferUsageFlagBits2KHR'
+--
+-- -   'PipelineCreateFlagBits2KHR'
+--
+-- == New Bitmasks
+--
+-- -   'BufferUsageFlags2KHR'
+--
+-- -   'PipelineCreateFlags2KHR'
+--
+-- == New Enum Constants
+--
+-- -   'KHR_MAINTENANCE_5_EXTENSION_NAME'
+--
+-- -   'KHR_MAINTENANCE_5_SPEC_VERSION'
+--
+-- -   Extending
+--     'Vulkan.Core14.Enums.BufferUsageFlags2.BufferUsageFlagBits2':
+--
+--     -   'BUFFER_USAGE_2_INDEX_BUFFER_BIT_KHR'
+--
+--     -   'BUFFER_USAGE_2_INDIRECT_BUFFER_BIT_KHR'
+--
+--     -   'BUFFER_USAGE_2_STORAGE_BUFFER_BIT_KHR'
+--
+--     -   'BUFFER_USAGE_2_STORAGE_TEXEL_BUFFER_BIT_KHR'
+--
+--     -   'BUFFER_USAGE_2_TRANSFER_DST_BIT_KHR'
+--
+--     -   'BUFFER_USAGE_2_TRANSFER_SRC_BIT_KHR'
+--
+--     -   'BUFFER_USAGE_2_UNIFORM_BUFFER_BIT_KHR'
+--
+--     -   'BUFFER_USAGE_2_UNIFORM_TEXEL_BUFFER_BIT_KHR'
+--
+--     -   'BUFFER_USAGE_2_VERTEX_BUFFER_BIT_KHR'
+--
+-- -   Extending 'Vulkan.Core10.Enums.Format.Format':
+--
+--     -   'FORMAT_A1B5G5R5_UNORM_PACK16_KHR'
+--
+--     -   'FORMAT_A8_UNORM_KHR'
+--
+-- -   Extending
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PipelineCreateFlagBits2':
+--
+--     -   'PIPELINE_CREATE_2_ALLOW_DERIVATIVES_BIT_KHR'
+--
+--     -   'PIPELINE_CREATE_2_DERIVATIVE_BIT_KHR'
+--
+--     -   'PIPELINE_CREATE_2_DISABLE_OPTIMIZATION_BIT_KHR'
+--
+--     -   'PIPELINE_CREATE_2_DISPATCH_BASE_BIT_KHR'
+--
+--     -   'PIPELINE_CREATE_2_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO_KHR'
+--
+--     -   'STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO_KHR'
+--
+--     -   'STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_KHR'
+--
+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES_KHR'
+--
+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES_KHR'
+--
+--     -   'STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO_KHR'
+--
+--     -   'STRUCTURE_TYPE_RENDERING_AREA_INFO_KHR'
+--
+--     -   'STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_KHR'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering VK_KHR_dynamic_rendering>
+-- or
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3 Vulkan Version 1.3>
+-- and
+-- <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.Core14.Enums.PipelineCreateFlags2.PipelineCreateFlagBits2':
+--
+--     -   'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering VK_KHR_dynamic_rendering>
+-- or
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3 Vulkan Version 1.3>
+-- and
+-- <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.Core14.Enums.PipelineCreateFlags2.PipelineCreateFlagBits2':
+--
+--     -   'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_pipeline_opacity_micromap VK_ARM_pipeline_opacity_micromap>
+-- is supported:
+--
+-- -   Extending
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PipelineCreateFlagBits2':
+--
+--     -   'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DISALLOW_OPACITY_MICROMAP_BIT_ARM'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_shader_instrumentation VK_ARM_shader_instrumentation>
+-- is supported:
+--
+-- -   Extending
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PipelineCreateFlagBits2':
+--
+--     -   'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_INSTRUMENT_SHADERS_BIT_ARM'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_EXT_shader_object.ShaderCreateFlagBitsEXT':
+--
+--     -   'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INSTRUMENT_SHADER_BIT_ARM'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_attachment_feedback_loop_layout VK_EXT_attachment_feedback_loop_layout>
+-- is supported:
+--
+-- -   Extending
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PipelineCreateFlagBits2':
+--
+--     -   'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT'
+--
+--     -   'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_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.Core14.Enums.BufferUsageFlags2.BufferUsageFlagBits2':
+--
+--     -   'Vulkan.Core14.Enums.BufferUsageFlags2.BUFFER_USAGE_2_CONDITIONAL_RENDERING_BIT_EXT'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_buffer VK_EXT_descriptor_buffer>
+-- is supported:
+--
+-- -   Extending
+--     'Vulkan.Core14.Enums.BufferUsageFlags2.BufferUsageFlagBits2':
+--
+--     -   'Vulkan.Core14.Enums.BufferUsageFlags2.BUFFER_USAGE_2_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+--     -   'Vulkan.Core14.Enums.BufferUsageFlags2.BUFFER_USAGE_2_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+--     -   'Vulkan.Core14.Enums.BufferUsageFlags2.BUFFER_USAGE_2_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   Extending
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PipelineCreateFlagBits2':
+--
+--     -   'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_graphics_pipeline_library VK_EXT_graphics_pipeline_library>
+-- is supported:
+--
+-- -   Extending
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PipelineCreateFlagBits2':
+--
+--     -   'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_LINK_TIME_OPTIMIZATION_BIT_EXT'
+--
+--     -   'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_RETAIN_LINK_TIME_OPTIMIZATION_INFO_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.Core14.Enums.BufferUsageFlags2.BufferUsageFlagBits2':
+--
+--     -   'Vulkan.Core14.Enums.BufferUsageFlags2.BUFFER_USAGE_2_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT'
+--
+--     -   'Vulkan.Core14.Enums.BufferUsageFlags2.BUFFER_USAGE_2_TRANSFORM_FEEDBACK_COUNTER_BUFFER_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.Core14.Enums.BufferUsageFlags2.BufferUsageFlagBits2':
+--
+--     -   'Vulkan.Core14.Enums.BufferUsageFlags2.BUFFER_USAGE_2_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR'
+--
+--     -   'Vulkan.Core14.Enums.BufferUsageFlags2.BUFFER_USAGE_2_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_pipeline_executable_properties VK_KHR_pipeline_executable_properties>
+-- is supported:
+--
+-- -   Extending
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PipelineCreateFlagBits2':
+--
+--     -   'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR'
+--
+--     -   'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_CAPTURE_STATISTICS_BIT_KHR'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_pipeline_library VK_KHR_pipeline_library>
+-- is supported:
+--
+-- -   Extending
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PipelineCreateFlagBits2':
+--
+--     -   'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_LIBRARY_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.Core14.Enums.BufferUsageFlags2.BufferUsageFlagBits2':
+--
+--     -   'Vulkan.Core14.Enums.BufferUsageFlags2.BUFFER_USAGE_2_SHADER_BINDING_TABLE_BIT_KHR'
+--
+-- -   Extending
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PipelineCreateFlagBits2':
+--
+--     -   'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR'
+--
+--     -   'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR'
+--
+--     -   'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR'
+--
+--     -   'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR'
+--
+--     -   'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR'
+--
+--     -   'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_RAY_TRACING_SKIP_AABBS_BIT_KHR'
+--
+--     -   'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_video_decode_queue VK_KHR_video_decode_queue>
+-- is supported:
+--
+-- -   Extending
+--     'Vulkan.Core14.Enums.BufferUsageFlags2.BufferUsageFlagBits2':
+--
+--     -   'Vulkan.Core14.Enums.BufferUsageFlags2.BUFFER_USAGE_2_VIDEO_DECODE_DST_BIT_KHR'
+--
+--     -   'Vulkan.Core14.Enums.BufferUsageFlags2.BUFFER_USAGE_2_VIDEO_DECODE_SRC_BIT_KHR'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_video_encode_queue VK_KHR_video_encode_queue>
+-- is supported:
+--
+-- -   Extending
+--     'Vulkan.Core14.Enums.BufferUsageFlags2.BufferUsageFlagBits2':
+--
+--     -   'Vulkan.Core14.Enums.BufferUsageFlags2.BUFFER_USAGE_2_VIDEO_ENCODE_DST_BIT_KHR'
+--
+--     -   'Vulkan.Core14.Enums.BufferUsageFlags2.BUFFER_USAGE_2_VIDEO_ENCODE_SRC_BIT_KHR'
+--
+-- 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.Core14.Enums.PipelineCreateFlags2.PipelineCreateFlagBits2':
+--
+--     -   'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_NV'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_displacement_micromap VK_NV_displacement_micromap>
+-- is supported:
+--
+-- -   Extending
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PipelineCreateFlagBits2':
+--
+--     -   'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_RAY_TRACING_DISPLACEMENT_MICROMAP_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.Core14.Enums.BufferUsageFlags2.BufferUsageFlagBits2':
+--
+--     -   'BUFFER_USAGE_2_RAY_TRACING_BIT_NV'
+--
+-- -   Extending
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PipelineCreateFlagBits2':
+--
+--     -   'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DEFER_COMPILE_BIT_NV'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing_motion_blur VK_NV_ray_tracing_motion_blur>
+-- is supported:
+--
+-- -   Extending
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PipelineCreateFlagBits2':
+--
+--     -   'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_RAY_TRACING_ALLOW_MOTION_BIT_NV'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.2 Vulkan Version 1.2>
+-- or
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_buffer_device_address VK_KHR_buffer_device_address>
+-- or
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_buffer_device_address VK_EXT_buffer_device_address>
+-- is supported:
+--
+-- -   Extending
+--     'Vulkan.Core14.Enums.BufferUsageFlags2.BufferUsageFlagBits2':
+--
+--     -   'BUFFER_USAGE_2_SHADER_DEVICE_ADDRESS_BIT_KHR'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3 Vulkan Version 1.3>
+-- or
+-- <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>
+-- is supported:
+--
+-- -   Extending
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PipelineCreateFlagBits2':
+--
+--     -   'PIPELINE_CREATE_2_EARLY_RETURN_ON_FAILURE_BIT_KHR'
+--
+--     -   'PIPELINE_CREATE_2_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_KHR'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.4 Vulkan Version 1.4>
+-- or
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_pipeline_protected_access VK_EXT_pipeline_protected_access>
+-- is supported:
+--
+-- -   Extending
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PipelineCreateFlagBits2':
+--
+--     -   'PIPELINE_CREATE_2_NO_PROTECTED_ACCESS_BIT_EXT'
+--
+--     -   'PIPELINE_CREATE_2_PROTECTED_ACCESS_ONLY_BIT_EXT'
+--
+-- == Promotion to Vulkan 1.4
+--
+-- Functionality in this extension is included in core Vulkan 1.4 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, 2022-12-12 (Stu Smith)
+--
+--     -   Initial revision
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_maintenance5 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_maintenance5  ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES_KHR
+                                              , pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES_KHR
+                                              , pattern STRUCTURE_TYPE_RENDERING_AREA_INFO_KHR
+                                              , pattern STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO_KHR
+                                              , pattern FORMAT_A1B5G5R5_UNORM_PACK16_KHR
+                                              , pattern FORMAT_A8_UNORM_KHR
+                                              , pattern STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_KHR
+                                              , pattern STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_KHR
+                                              , pattern PIPELINE_CREATE_2_DISABLE_OPTIMIZATION_BIT_KHR
+                                              , pattern PIPELINE_CREATE_2_ALLOW_DERIVATIVES_BIT_KHR
+                                              , pattern PIPELINE_CREATE_2_DERIVATIVE_BIT_KHR
+                                              , pattern PIPELINE_CREATE_2_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR
+                                              , pattern PIPELINE_CREATE_2_DISPATCH_BASE_BIT_KHR
+                                              , pattern BUFFER_USAGE_2_TRANSFER_SRC_BIT_KHR
+                                              , pattern BUFFER_USAGE_2_TRANSFER_DST_BIT_KHR
+                                              , pattern BUFFER_USAGE_2_UNIFORM_TEXEL_BUFFER_BIT_KHR
+                                              , pattern BUFFER_USAGE_2_STORAGE_TEXEL_BUFFER_BIT_KHR
+                                              , pattern BUFFER_USAGE_2_UNIFORM_BUFFER_BIT_KHR
+                                              , pattern BUFFER_USAGE_2_STORAGE_BUFFER_BIT_KHR
+                                              , pattern BUFFER_USAGE_2_INDEX_BUFFER_BIT_KHR
+                                              , pattern BUFFER_USAGE_2_VERTEX_BUFFER_BIT_KHR
+                                              , pattern BUFFER_USAGE_2_INDIRECT_BUFFER_BIT_KHR
+                                              , pattern STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO_KHR
+                                              , pattern STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO_KHR
+                                              , pattern PIPELINE_CREATE_2_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_KHR
+                                              , pattern PIPELINE_CREATE_2_EARLY_RETURN_ON_FAILURE_BIT_KHR
+                                              , pattern PIPELINE_CREATE_2_NO_PROTECTED_ACCESS_BIT_EXT
+                                              , pattern PIPELINE_CREATE_2_PROTECTED_ACCESS_ONLY_BIT_EXT
+                                              , pattern BUFFER_USAGE_2_RAY_TRACING_BIT_NV
+                                              , pattern BUFFER_USAGE_2_SHADER_DEVICE_ADDRESS_BIT_KHR
+                                              , getRenderingAreaGranularityKHR
+                                              , cmdBindIndexBuffer2KHR
+                                              , getImageSubresourceLayout2KHR
+                                              , getDeviceImageSubresourceLayoutKHR
+                                              , PipelineCreateFlags2KHR
+                                              , BufferUsageFlags2KHR
+                                              , PipelineCreateFlagBits2KHR
+                                              , BufferUsageFlagBits2KHR
+                                              , BufferUsageFlags2CreateInfoKHR
+                                              , PipelineCreateFlags2CreateInfoKHR
+                                              , PhysicalDeviceMaintenance5FeaturesKHR
+                                              , PhysicalDeviceMaintenance5PropertiesKHR
+                                              , RenderingAreaInfoKHR
+                                              , ImageSubresource2KHR
+                                              , SubresourceLayout2KHR
+                                              , DeviceImageSubresourceInfoKHR
+                                              , KHR_MAINTENANCE_5_SPEC_VERSION
+                                              , pattern KHR_MAINTENANCE_5_SPEC_VERSION
+                                              , KHR_MAINTENANCE_5_EXTENSION_NAME
+                                              , pattern KHR_MAINTENANCE_5_EXTENSION_NAME
+                                              , ShaderCreateFlagBitsEXT(..)
+                                              , ShaderCreateFlagsEXT
+                                              ) where
+
+import Data.String (IsString)
+import Vulkan.Core14.Promoted_From_VK_KHR_maintenance5 (cmdBindIndexBuffer2)
+import Vulkan.Core14.Promoted_From_VK_KHR_maintenance5 (getDeviceImageSubresourceLayout)
+import Vulkan.Core14.Promoted_From_VK_KHR_maintenance5 (getImageSubresourceLayout2)
+import Vulkan.Core14.Promoted_From_VK_KHR_maintenance5 (getRenderingAreaGranularity)
+import Vulkan.Core14.Enums.BufferUsageFlags2 (BufferUsageFlagBits2)
+import Vulkan.Core14.Enums.BufferUsageFlags2 (BufferUsageFlags2)
+import Vulkan.Core14.Promoted_From_VK_KHR_maintenance5 (BufferUsageFlags2CreateInfo)
+import Vulkan.Core14.Promoted_From_VK_KHR_maintenance5 (DeviceImageSubresourceInfo)
+import Vulkan.Core14.Promoted_From_VK_KHR_maintenance5 (ImageSubresource2)
+import Vulkan.Core14.Promoted_From_VK_KHR_maintenance5 (PhysicalDeviceMaintenance5Features)
+import Vulkan.Core14.Promoted_From_VK_KHR_maintenance5 (PhysicalDeviceMaintenance5Properties)
+import Vulkan.Core14.Enums.PipelineCreateFlags2 (PipelineCreateFlagBits2)
+import Vulkan.Core14.Enums.PipelineCreateFlags2 (PipelineCreateFlags2)
+import Vulkan.Core14.Promoted_From_VK_KHR_maintenance5 (PipelineCreateFlags2CreateInfo)
+import Vulkan.Core14.Promoted_From_VK_KHR_maintenance5 (RenderingAreaInfo)
+import Vulkan.Core14.Promoted_From_VK_KHR_maintenance5 (SubresourceLayout2)
+import Vulkan.Core14.Enums.BufferUsageFlags2 (BufferUsageFlags2)
+import Vulkan.Core14.Enums.BufferUsageFlags2 (BufferUsageFlagBits2(BUFFER_USAGE_2_INDEX_BUFFER_BIT))
+import Vulkan.Core14.Enums.BufferUsageFlags2 (BufferUsageFlags2)
+import Vulkan.Core14.Enums.BufferUsageFlags2 (BufferUsageFlagBits2(BUFFER_USAGE_2_INDIRECT_BUFFER_BIT))
+import Vulkan.Core14.Enums.BufferUsageFlags2 (BufferUsageFlags2)
+import Vulkan.Core14.Enums.BufferUsageFlags2 (BufferUsageFlagBits2(BUFFER_USAGE_2_SHADER_BINDING_TABLE_BIT_KHR))
+import Vulkan.Core14.Enums.BufferUsageFlags2 (BufferUsageFlags2)
+import Vulkan.Core14.Enums.BufferUsageFlags2 (BufferUsageFlagBits2(BUFFER_USAGE_2_SHADER_DEVICE_ADDRESS_BIT))
+import Vulkan.Core14.Enums.BufferUsageFlags2 (BufferUsageFlags2)
+import Vulkan.Core14.Enums.BufferUsageFlags2 (BufferUsageFlagBits2(BUFFER_USAGE_2_STORAGE_BUFFER_BIT))
+import Vulkan.Core14.Enums.BufferUsageFlags2 (BufferUsageFlags2)
+import Vulkan.Core14.Enums.BufferUsageFlags2 (BufferUsageFlagBits2(BUFFER_USAGE_2_STORAGE_TEXEL_BUFFER_BIT))
+import Vulkan.Core14.Enums.BufferUsageFlags2 (BufferUsageFlags2)
+import Vulkan.Core14.Enums.BufferUsageFlags2 (BufferUsageFlagBits2(BUFFER_USAGE_2_TRANSFER_DST_BIT))
+import Vulkan.Core14.Enums.BufferUsageFlags2 (BufferUsageFlags2)
+import Vulkan.Core14.Enums.BufferUsageFlags2 (BufferUsageFlagBits2(BUFFER_USAGE_2_TRANSFER_SRC_BIT))
+import Vulkan.Core14.Enums.BufferUsageFlags2 (BufferUsageFlags2)
+import Vulkan.Core14.Enums.BufferUsageFlags2 (BufferUsageFlagBits2(BUFFER_USAGE_2_UNIFORM_BUFFER_BIT))
+import Vulkan.Core14.Enums.BufferUsageFlags2 (BufferUsageFlags2)
+import Vulkan.Core14.Enums.BufferUsageFlags2 (BufferUsageFlagBits2(BUFFER_USAGE_2_UNIFORM_TEXEL_BUFFER_BIT))
+import Vulkan.Core14.Enums.BufferUsageFlags2 (BufferUsageFlags2)
+import Vulkan.Core14.Enums.BufferUsageFlags2 (BufferUsageFlagBits2(BUFFER_USAGE_2_VERTEX_BUFFER_BIT))
+import Vulkan.Core10.Enums.Format (Format(FORMAT_A1B5G5R5_UNORM_PACK16))
+import Vulkan.Core10.Enums.Format (Format(FORMAT_A8_UNORM))
+import Vulkan.Core14.Enums.PipelineCreateFlags2 (PipelineCreateFlags2)
+import Vulkan.Core14.Enums.PipelineCreateFlags2 (PipelineCreateFlagBits2(PIPELINE_CREATE_2_ALLOW_DERIVATIVES_BIT))
+import Vulkan.Core14.Enums.PipelineCreateFlags2 (PipelineCreateFlags2)
+import Vulkan.Core14.Enums.PipelineCreateFlags2 (PipelineCreateFlagBits2(PIPELINE_CREATE_2_DERIVATIVE_BIT))
+import Vulkan.Core14.Enums.PipelineCreateFlags2 (PipelineCreateFlags2)
+import Vulkan.Core14.Enums.PipelineCreateFlags2 (PipelineCreateFlagBits2(PIPELINE_CREATE_2_DISABLE_OPTIMIZATION_BIT))
+import Vulkan.Core14.Enums.PipelineCreateFlags2 (PipelineCreateFlags2)
+import Vulkan.Core14.Enums.PipelineCreateFlags2 (PipelineCreateFlagBits2(PIPELINE_CREATE_2_DISPATCH_BASE_BIT))
+import Vulkan.Core14.Enums.PipelineCreateFlags2 (PipelineCreateFlags2)
+import Vulkan.Core14.Enums.PipelineCreateFlags2 (PipelineCreateFlagBits2(PIPELINE_CREATE_2_EARLY_RETURN_ON_FAILURE_BIT))
+import Vulkan.Core14.Enums.PipelineCreateFlags2 (PipelineCreateFlags2)
+import Vulkan.Core14.Enums.PipelineCreateFlags2 (PipelineCreateFlagBits2(PIPELINE_CREATE_2_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT))
+import Vulkan.Core14.Enums.PipelineCreateFlags2 (PipelineCreateFlags2)
+import Vulkan.Core14.Enums.PipelineCreateFlags2 (PipelineCreateFlagBits2(PIPELINE_CREATE_2_NO_PROTECTED_ACCESS_BIT))
+import Vulkan.Core14.Enums.PipelineCreateFlags2 (PipelineCreateFlags2)
+import Vulkan.Core14.Enums.PipelineCreateFlags2 (PipelineCreateFlagBits2(PIPELINE_CREATE_2_PROTECTED_ACCESS_ONLY_BIT))
+import Vulkan.Core14.Enums.PipelineCreateFlags2 (PipelineCreateFlags2)
+import Vulkan.Core14.Enums.PipelineCreateFlags2 (PipelineCreateFlagBits2(PIPELINE_CREATE_2_VIEW_INDEX_FROM_DEVICE_INDEX_BIT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RENDERING_AREA_INFO))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2))
+import Vulkan.Extensions.VK_EXT_shader_object (ShaderCreateFlagBitsEXT(..))
+import Vulkan.Extensions.VK_EXT_shader_object (ShaderCreateFlagsEXT)
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES
+
+
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES
+
+
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_RENDERING_AREA_INFO_KHR"
+pattern STRUCTURE_TYPE_RENDERING_AREA_INFO_KHR = STRUCTURE_TYPE_RENDERING_AREA_INFO
+
+
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO_KHR"
+pattern STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO_KHR = STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO
+
+
+-- No documentation found for TopLevel "VK_FORMAT_A1B5G5R5_UNORM_PACK16_KHR"
+pattern FORMAT_A1B5G5R5_UNORM_PACK16_KHR = FORMAT_A1B5G5R5_UNORM_PACK16
+
+
+-- No documentation found for TopLevel "VK_FORMAT_A8_UNORM_KHR"
+pattern FORMAT_A8_UNORM_KHR = FORMAT_A8_UNORM
+
+
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_KHR"
+pattern STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_KHR = STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2
+
+
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_KHR"
+pattern STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_KHR = STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2
+
+
+-- No documentation found for TopLevel "VK_PIPELINE_CREATE_2_DISABLE_OPTIMIZATION_BIT_KHR"
+pattern PIPELINE_CREATE_2_DISABLE_OPTIMIZATION_BIT_KHR = PIPELINE_CREATE_2_DISABLE_OPTIMIZATION_BIT
+
+
+-- No documentation found for TopLevel "VK_PIPELINE_CREATE_2_ALLOW_DERIVATIVES_BIT_KHR"
+pattern PIPELINE_CREATE_2_ALLOW_DERIVATIVES_BIT_KHR = PIPELINE_CREATE_2_ALLOW_DERIVATIVES_BIT
+
+
+-- No documentation found for TopLevel "VK_PIPELINE_CREATE_2_DERIVATIVE_BIT_KHR"
+pattern PIPELINE_CREATE_2_DERIVATIVE_BIT_KHR = PIPELINE_CREATE_2_DERIVATIVE_BIT
+
+
+-- No documentation found for TopLevel "VK_PIPELINE_CREATE_2_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR"
+pattern PIPELINE_CREATE_2_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR = PIPELINE_CREATE_2_VIEW_INDEX_FROM_DEVICE_INDEX_BIT
+
+
+-- No documentation found for TopLevel "VK_PIPELINE_CREATE_2_DISPATCH_BASE_BIT_KHR"
+pattern PIPELINE_CREATE_2_DISPATCH_BASE_BIT_KHR = PIPELINE_CREATE_2_DISPATCH_BASE_BIT
+
+
+-- No documentation found for TopLevel "VK_BUFFER_USAGE_2_TRANSFER_SRC_BIT_KHR"
+pattern BUFFER_USAGE_2_TRANSFER_SRC_BIT_KHR = BUFFER_USAGE_2_TRANSFER_SRC_BIT
+
+
+-- No documentation found for TopLevel "VK_BUFFER_USAGE_2_TRANSFER_DST_BIT_KHR"
+pattern BUFFER_USAGE_2_TRANSFER_DST_BIT_KHR = BUFFER_USAGE_2_TRANSFER_DST_BIT
+
+
+-- No documentation found for TopLevel "VK_BUFFER_USAGE_2_UNIFORM_TEXEL_BUFFER_BIT_KHR"
+pattern BUFFER_USAGE_2_UNIFORM_TEXEL_BUFFER_BIT_KHR = BUFFER_USAGE_2_UNIFORM_TEXEL_BUFFER_BIT
+
+
+-- No documentation found for TopLevel "VK_BUFFER_USAGE_2_STORAGE_TEXEL_BUFFER_BIT_KHR"
+pattern BUFFER_USAGE_2_STORAGE_TEXEL_BUFFER_BIT_KHR = BUFFER_USAGE_2_STORAGE_TEXEL_BUFFER_BIT
+
+
+-- No documentation found for TopLevel "VK_BUFFER_USAGE_2_UNIFORM_BUFFER_BIT_KHR"
+pattern BUFFER_USAGE_2_UNIFORM_BUFFER_BIT_KHR = BUFFER_USAGE_2_UNIFORM_BUFFER_BIT
+
+
+-- No documentation found for TopLevel "VK_BUFFER_USAGE_2_STORAGE_BUFFER_BIT_KHR"
+pattern BUFFER_USAGE_2_STORAGE_BUFFER_BIT_KHR = BUFFER_USAGE_2_STORAGE_BUFFER_BIT
+
+
+-- No documentation found for TopLevel "VK_BUFFER_USAGE_2_INDEX_BUFFER_BIT_KHR"
+pattern BUFFER_USAGE_2_INDEX_BUFFER_BIT_KHR = BUFFER_USAGE_2_INDEX_BUFFER_BIT
+
+
+-- No documentation found for TopLevel "VK_BUFFER_USAGE_2_VERTEX_BUFFER_BIT_KHR"
+pattern BUFFER_USAGE_2_VERTEX_BUFFER_BIT_KHR = BUFFER_USAGE_2_VERTEX_BUFFER_BIT
+
+
+-- No documentation found for TopLevel "VK_BUFFER_USAGE_2_INDIRECT_BUFFER_BIT_KHR"
+pattern BUFFER_USAGE_2_INDIRECT_BUFFER_BIT_KHR = BUFFER_USAGE_2_INDIRECT_BUFFER_BIT
+
+
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO_KHR"
+pattern STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO_KHR = STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO
+
+
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO_KHR"
+pattern STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO_KHR = STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO
+
+
+-- No documentation found for TopLevel "VK_PIPELINE_CREATE_2_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_KHR"
+pattern PIPELINE_CREATE_2_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_KHR = PIPELINE_CREATE_2_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT
+
+
+-- No documentation found for TopLevel "VK_PIPELINE_CREATE_2_EARLY_RETURN_ON_FAILURE_BIT_KHR"
+pattern PIPELINE_CREATE_2_EARLY_RETURN_ON_FAILURE_BIT_KHR = PIPELINE_CREATE_2_EARLY_RETURN_ON_FAILURE_BIT
+
+
+-- No documentation found for TopLevel "VK_PIPELINE_CREATE_2_NO_PROTECTED_ACCESS_BIT_EXT"
+pattern PIPELINE_CREATE_2_NO_PROTECTED_ACCESS_BIT_EXT = PIPELINE_CREATE_2_NO_PROTECTED_ACCESS_BIT
+
+
+-- No documentation found for TopLevel "VK_PIPELINE_CREATE_2_PROTECTED_ACCESS_ONLY_BIT_EXT"
+pattern PIPELINE_CREATE_2_PROTECTED_ACCESS_ONLY_BIT_EXT = PIPELINE_CREATE_2_PROTECTED_ACCESS_ONLY_BIT
+
+
+-- No documentation found for TopLevel "VK_BUFFER_USAGE_2_RAY_TRACING_BIT_NV"
+pattern BUFFER_USAGE_2_RAY_TRACING_BIT_NV = BUFFER_USAGE_2_SHADER_BINDING_TABLE_BIT_KHR
+
+
+-- No documentation found for TopLevel "VK_BUFFER_USAGE_2_SHADER_DEVICE_ADDRESS_BIT_KHR"
+pattern BUFFER_USAGE_2_SHADER_DEVICE_ADDRESS_BIT_KHR = BUFFER_USAGE_2_SHADER_DEVICE_ADDRESS_BIT
+
+
+-- No documentation found for TopLevel "vkGetRenderingAreaGranularityKHR"
+getRenderingAreaGranularityKHR = getRenderingAreaGranularity
+
+
+-- No documentation found for TopLevel "vkCmdBindIndexBuffer2KHR"
+cmdBindIndexBuffer2KHR = cmdBindIndexBuffer2
+
+
+-- No documentation found for TopLevel "vkGetImageSubresourceLayout2KHR"
+getImageSubresourceLayout2KHR = getImageSubresourceLayout2
+
+
+-- No documentation found for TopLevel "vkGetDeviceImageSubresourceLayoutKHR"
+getDeviceImageSubresourceLayoutKHR = getDeviceImageSubresourceLayout
+
+
+-- No documentation found for TopLevel "VkPipelineCreateFlags2KHR"
+type PipelineCreateFlags2KHR = PipelineCreateFlags2
+
+
+-- No documentation found for TopLevel "VkBufferUsageFlags2KHR"
+type BufferUsageFlags2KHR = BufferUsageFlags2
+
+
+-- No documentation found for TopLevel "VkPipelineCreateFlagBits2KHR"
+type PipelineCreateFlagBits2KHR = PipelineCreateFlagBits2
+
+
+-- No documentation found for TopLevel "VkBufferUsageFlagBits2KHR"
+type BufferUsageFlagBits2KHR = BufferUsageFlagBits2
+
+
+-- No documentation found for TopLevel "VkBufferUsageFlags2CreateInfoKHR"
+type BufferUsageFlags2CreateInfoKHR = BufferUsageFlags2CreateInfo
+
+
+-- No documentation found for TopLevel "VkPipelineCreateFlags2CreateInfoKHR"
+type PipelineCreateFlags2CreateInfoKHR = PipelineCreateFlags2CreateInfo
+
+
+-- No documentation found for TopLevel "VkPhysicalDeviceMaintenance5FeaturesKHR"
+type PhysicalDeviceMaintenance5FeaturesKHR = PhysicalDeviceMaintenance5Features
+
+
+-- No documentation found for TopLevel "VkPhysicalDeviceMaintenance5PropertiesKHR"
+type PhysicalDeviceMaintenance5PropertiesKHR = PhysicalDeviceMaintenance5Properties
+
+
+-- No documentation found for TopLevel "VkRenderingAreaInfoKHR"
+type RenderingAreaInfoKHR = RenderingAreaInfo
+
+
+-- No documentation found for TopLevel "VkImageSubresource2KHR"
+type ImageSubresource2KHR = ImageSubresource2
+
+
+-- No documentation found for TopLevel "VkSubresourceLayout2KHR"
+type SubresourceLayout2KHR = SubresourceLayout2
+
+
+-- No documentation found for TopLevel "VkDeviceImageSubresourceInfoKHR"
+type DeviceImageSubresourceInfoKHR = DeviceImageSubresourceInfo
+
 
 type KHR_MAINTENANCE_5_SPEC_VERSION = 1
 
diff --git a/src/Vulkan/Extensions/VK_KHR_maintenance5.hs-boot b/src/Vulkan/Extensions/VK_KHR_maintenance5.hs-boot
deleted file mode 100644
--- a/src/Vulkan/Extensions/VK_KHR_maintenance5.hs-boot
+++ /dev/null
@@ -1,641 +0,0 @@
-{-# language CPP #-}
--- | = Name
---
--- VK_KHR_maintenance5 - device extension
---
--- = VK_KHR_maintenance5
---
--- [__Name String__]
---     @VK_KHR_maintenance5@
---
--- [__Extension Type__]
---     Device extension
---
--- [__Registered Extension Number__]
---     471
---
--- [__Revision__]
---     1
---
--- [__Ratification Status__]
---     Ratified
---
--- [__Extension and Version Dependencies__]
---         
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
---          and
---         
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering VK_KHR_dynamic_rendering>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3 Vulkan Version 1.3>
---
--- [__API Interactions__]
---
---     -   Interacts with VK_VERSION_1_1
---
---     -   Interacts with VK_VERSION_1_2
---
---     -   Interacts with VK_VERSION_1_3
---
---     -   Interacts with VK_EXT_attachment_feedback_loop_layout
---
---     -   Interacts with VK_EXT_buffer_device_address
---
---     -   Interacts with VK_EXT_conditional_rendering
---
---     -   Interacts with VK_EXT_descriptor_buffer
---
---     -   Interacts with VK_EXT_fragment_density_map
---
---     -   Interacts with VK_EXT_graphics_pipeline_library
---
---     -   Interacts with VK_EXT_opacity_micromap
---
---     -   Interacts with VK_EXT_pipeline_creation_cache_control
---
---     -   Interacts with VK_EXT_pipeline_protected_access
---
---     -   Interacts with VK_EXT_transform_feedback
---
---     -   Interacts with VK_KHR_acceleration_structure
---
---     -   Interacts with VK_KHR_buffer_device_address
---
---     -   Interacts with VK_KHR_device_group
---
---     -   Interacts with VK_KHR_dynamic_rendering
---
---     -   Interacts with VK_KHR_fragment_shading_rate
---
---     -   Interacts with VK_KHR_pipeline_executable_properties
---
---     -   Interacts with VK_KHR_pipeline_library
---
---     -   Interacts with VK_KHR_ray_tracing_pipeline
---
---     -   Interacts with VK_KHR_video_decode_queue
---
---     -   Interacts with VK_KHR_video_encode_queue
---
---     -   Interacts with VK_NV_device_generated_commands
---
---     -   Interacts with VK_NV_displacement_micromap
---
---     -   Interacts with VK_NV_ray_tracing
---
---     -   Interacts with VK_NV_ray_tracing_motion_blur
---
--- [__Contact__]
---
---     -   Stu Smith
---         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_maintenance5] @stu-s%0A*Here describe the issue or question you have about the VK_KHR_maintenance5 extension* >
---
--- [__Extension Proposal__]
---     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_KHR_maintenance5.adoc VK_KHR_maintenance5>
---
--- == Other Extension Metadata
---
--- [__Last Modified Date__]
---     2023-05-02
---
--- [__Interactions and External Dependencies__; __Contributors__]
---
---     -   Stu Smith, AMD
---
---     -   Tobias Hector, AMD
---
---     -   Shahbaz Youssefi, Google
---
---     -   Slawomir Cygan, Intel
---
---     -   Lionel Landwerlin, Intel
---
---     -   James Fitzpatrick, Imagination Technologies
---
---     -   Andrew Garrard, Imagination Technologies
---
---     -   Ralph Potter, Samsung
---
---     -   Pan Gao, Huawei
---
---     -   Jan-Harald Fredriksen, ARM
---
---     -   Jon Leech, Khronos
---
---     -   Mike Blumenkrantz, Valve
---
--- == Description
---
--- @VK_KHR_maintenance5@ adds a collection of minor features, none of which
--- would warrant an entire extension of their own.
---
--- The new features are as follows:
---
--- -   A new 'Vulkan.Core10.Enums.Format.FORMAT_A1B5G5R5_UNORM_PACK16_KHR'
---     format
---
--- -   A new 'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM_KHR' format
---
--- -   A property to indicate that multisample coverage operations are
---     performed after sample counting in EarlyFragmentTests mode
---
--- -   Relax VkBufferView creation requirements by allowing subsets of the
---     associated VkBuffer usage using 'BufferUsageFlags2CreateInfoKHR'
---
--- -   A new command 'cmdBindIndexBuffer2KHR', allowing a range of memory
---     to be bound as an index buffer
---
--- -   'Vulkan.Core10.DeviceInitialization.getDeviceProcAddr' must return
---     @NULL@ for supported core functions beyond the version requested by
---     the application.
---
--- -   A property to indicate that the sample mask test is performed after
---     sample counting in EarlyFragmentTests mode
---
--- -   'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2'
---     now supports using 'Vulkan.Core10.APIConstants.WHOLE_SIZE' in the
---     @pSizes@ parameter.
---
--- -   A default size of 1.0 is used if @PointSize@ is not written
---
--- -   Shader modules are deprecated - applications can now pass
---     'Vulkan.Core10.Shader.ShaderModuleCreateInfo' as a chained struct to
---     pipeline creation via
---     'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo'
---
--- -   A function 'getRenderingAreaGranularityKHR' to query the optimal
---     render area for a dynamic rendering instance.
---
--- -   A property to indicate that depth\/stencil texturing operations with
---     'Vulkan.Core10.Enums.ComponentSwizzle.COMPONENT_SWIZZLE_ONE' have
---     defined behavior
---
--- -   Add 'getImageSubresourceLayout2KHR' and a new function
---     'getDeviceImageSubresourceLayoutKHR' to allow the application to
---     query the image memory layout without having to create an image
---     object and query it.
---
--- -   Allow 'Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS' as the
---     @layerCount@ member of
---     'Vulkan.Core10.CommandBufferBuilding.ImageSubresourceLayers'
---
--- -   Adds stronger guarantees for propagation of
---     'Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST' return values
---
--- -   A property to indicate whether @PointSize@ controls the final
---     rasterization of polygons if
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-polygonmode polygon mode>
---     is 'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_POINT'
---
--- -   Two properties to indicate the non-strict line rasterization
---     algorithm used
---
--- -   Two new flags words 'PipelineCreateFlagBits2KHR' and
---     'BufferUsageFlagBits2KHR'
---
--- -   Physical-device-level functions can now be called with any value in
---     the valid range for a type beyond the defined enumerants, such that
---     applications can avoid checking individual features, extensions, or
---     versions before querying supported properties of a particular
---     enumerant.
---
--- -   Clarification that copies between images of any type are allowed,
---     treating 1D images as 2D images with a height of 1.
---
--- == New Commands
---
--- -   'cmdBindIndexBuffer2KHR'
---
--- -   'getDeviceImageSubresourceLayoutKHR'
---
--- -   'getImageSubresourceLayout2KHR'
---
--- -   'getRenderingAreaGranularityKHR'
---
--- == New Structures
---
--- -   'DeviceImageSubresourceInfoKHR'
---
--- -   'ImageSubresource2KHR'
---
--- -   'RenderingAreaInfoKHR'
---
--- -   'SubresourceLayout2KHR'
---
--- -   Extending 'Vulkan.Core10.BufferView.BufferViewCreateInfo',
---     'Vulkan.Core10.Buffer.BufferCreateInfo',
---     'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceExternalBufferInfo',
---     'Vulkan.Extensions.VK_EXT_descriptor_buffer.DescriptorBufferBindingInfoEXT':
---
---     -   'BufferUsageFlags2CreateInfoKHR'
---
--- -   Extending 'Vulkan.Core10.Pipeline.ComputePipelineCreateInfo',
---     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo',
---     'Vulkan.Extensions.VK_NV_ray_tracing.RayTracingPipelineCreateInfoNV',
---     'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingPipelineCreateInfoKHR':
---
---     -   'PipelineCreateFlags2CreateInfoKHR'
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
---     'Vulkan.Core10.Device.DeviceCreateInfo':
---
---     -   'PhysicalDeviceMaintenance5FeaturesKHR'
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
---
---     -   'PhysicalDeviceMaintenance5PropertiesKHR'
---
--- == New Enums
---
--- -   'BufferUsageFlagBits2KHR'
---
--- -   'PipelineCreateFlagBits2KHR'
---
--- == New Bitmasks
---
--- -   'BufferUsageFlags2KHR'
---
--- -   'PipelineCreateFlags2KHR'
---
--- == New Enum Constants
---
--- -   'KHR_MAINTENANCE_5_EXTENSION_NAME'
---
--- -   'KHR_MAINTENANCE_5_SPEC_VERSION'
---
--- -   Extending 'Vulkan.Core10.Enums.Format.Format':
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_A1B5G5R5_UNORM_PACK16_KHR'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM_KHR'
---
--- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO_KHR'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO_KHR'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_KHR'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES_KHR'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES_KHR'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO_KHR'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDERING_AREA_INFO_KHR'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_KHR'
---
--- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering VK_KHR_dynamic_rendering>
--- or
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3 Vulkan Version 1.3>
--- and
--- <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 'PipelineCreateFlagBits2KHR':
---
---     -   'PIPELINE_CREATE_2_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT'
---
--- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering VK_KHR_dynamic_rendering>
--- or
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3 Vulkan Version 1.3>
--- and
--- <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 'PipelineCreateFlagBits2KHR':
---
---     -   'PIPELINE_CREATE_2_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
---
--- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_attachment_feedback_loop_layout VK_EXT_attachment_feedback_loop_layout>
--- is supported:
---
--- -   Extending 'PipelineCreateFlagBits2KHR':
---
---     -   'PIPELINE_CREATE_2_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT'
---
---     -   'PIPELINE_CREATE_2_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_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 'BufferUsageFlagBits2KHR':
---
---     -   'BUFFER_USAGE_2_CONDITIONAL_RENDERING_BIT_EXT'
---
--- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_buffer VK_EXT_descriptor_buffer>
--- is supported:
---
--- -   Extending 'BufferUsageFlagBits2KHR':
---
---     -   'BUFFER_USAGE_2_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT'
---
---     -   'BUFFER_USAGE_2_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT'
---
---     -   'BUFFER_USAGE_2_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   Extending 'PipelineCreateFlagBits2KHR':
---
---     -   'PIPELINE_CREATE_2_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_graphics_pipeline_library VK_EXT_graphics_pipeline_library>
--- is supported:
---
--- -   Extending 'PipelineCreateFlagBits2KHR':
---
---     -   'PIPELINE_CREATE_2_LINK_TIME_OPTIMIZATION_BIT_EXT'
---
---     -   'PIPELINE_CREATE_2_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT'
---
--- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_opacity_micromap VK_EXT_opacity_micromap>
--- is supported:
---
--- -   Extending 'BufferUsageFlagBits2KHR':
---
---     -   'BUFFER_USAGE_2_MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXT'
---
---     -   'BUFFER_USAGE_2_MICROMAP_STORAGE_BIT_EXT'
---
--- -   Extending 'PipelineCreateFlagBits2KHR':
---
---     -   'PIPELINE_CREATE_2_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT'
---
--- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_pipeline_protected_access VK_EXT_pipeline_protected_access>
--- is supported:
---
--- -   Extending 'PipelineCreateFlagBits2KHR':
---
---     -   'PIPELINE_CREATE_2_NO_PROTECTED_ACCESS_BIT_EXT'
---
---     -   'PIPELINE_CREATE_2_PROTECTED_ACCESS_ONLY_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 'BufferUsageFlagBits2KHR':
---
---     -   'BUFFER_USAGE_2_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT'
---
---     -   'BUFFER_USAGE_2_TRANSFORM_FEEDBACK_COUNTER_BUFFER_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 'BufferUsageFlagBits2KHR':
---
---     -   'BUFFER_USAGE_2_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR'
---
---     -   'BUFFER_USAGE_2_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR'
---
--- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_pipeline_executable_properties VK_KHR_pipeline_executable_properties>
--- is supported:
---
--- -   Extending 'PipelineCreateFlagBits2KHR':
---
---     -   'PIPELINE_CREATE_2_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR'
---
---     -   'PIPELINE_CREATE_2_CAPTURE_STATISTICS_BIT_KHR'
---
--- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_pipeline_library VK_KHR_pipeline_library>
--- is supported:
---
--- -   Extending 'PipelineCreateFlagBits2KHR':
---
---     -   'PIPELINE_CREATE_2_LIBRARY_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 'BufferUsageFlagBits2KHR':
---
---     -   'BUFFER_USAGE_2_SHADER_BINDING_TABLE_BIT_KHR'
---
--- -   Extending 'PipelineCreateFlagBits2KHR':
---
---     -   'PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR'
---
---     -   'PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR'
---
---     -   'PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR'
---
---     -   'PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR'
---
---     -   'PIPELINE_CREATE_2_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR'
---
---     -   'PIPELINE_CREATE_2_RAY_TRACING_SKIP_AABBS_BIT_KHR'
---
---     -   'PIPELINE_CREATE_2_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR'
---
--- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_video_decode_queue VK_KHR_video_decode_queue>
--- is supported:
---
--- -   Extending 'BufferUsageFlagBits2KHR':
---
---     -   'BUFFER_USAGE_2_VIDEO_DECODE_DST_BIT_KHR'
---
---     -   'BUFFER_USAGE_2_VIDEO_DECODE_SRC_BIT_KHR'
---
--- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_video_encode_queue VK_KHR_video_encode_queue>
--- is supported:
---
--- -   Extending 'BufferUsageFlagBits2KHR':
---
---     -   'BUFFER_USAGE_2_VIDEO_ENCODE_DST_BIT_KHR'
---
---     -   'BUFFER_USAGE_2_VIDEO_ENCODE_SRC_BIT_KHR'
---
--- 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 'PipelineCreateFlagBits2KHR':
---
---     -   'PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_NV'
---
--- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_displacement_micromap VK_NV_displacement_micromap>
--- is supported:
---
--- -   Extending 'PipelineCreateFlagBits2KHR':
---
---     -   'PIPELINE_CREATE_2_RAY_TRACING_DISPLACEMENT_MICROMAP_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 'BufferUsageFlagBits2KHR':
---
---     -   'BUFFER_USAGE_2_RAY_TRACING_BIT_NV'
---
--- -   Extending 'PipelineCreateFlagBits2KHR':
---
---     -   'PIPELINE_CREATE_2_DEFER_COMPILE_BIT_NV'
---
--- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing_motion_blur VK_NV_ray_tracing_motion_blur>
--- is supported:
---
--- -   Extending 'PipelineCreateFlagBits2KHR':
---
---     -   'PIPELINE_CREATE_2_RAY_TRACING_ALLOW_MOTION_BIT_NV'
---
--- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
--- or
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_device_group VK_KHR_device_group>
--- is supported:
---
--- -   Extending 'PipelineCreateFlagBits2KHR':
---
---     -   'PIPELINE_CREATE_2_DISPATCH_BASE_BIT_KHR'
---
---     -   'PIPELINE_CREATE_2_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR'
---
--- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.2 Vulkan Version 1.2>
--- or
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_buffer_device_address VK_KHR_buffer_device_address>
--- or
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_buffer_device_address VK_EXT_buffer_device_address>
--- is supported:
---
--- -   Extending 'BufferUsageFlagBits2KHR':
---
---     -   'BUFFER_USAGE_2_SHADER_DEVICE_ADDRESS_BIT_KHR'
---
--- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3 Vulkan Version 1.3>
--- or
--- <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>
--- is supported:
---
--- -   Extending 'PipelineCreateFlagBits2KHR':
---
---     -   'PIPELINE_CREATE_2_EARLY_RETURN_ON_FAILURE_BIT_KHR'
---
---     -   'PIPELINE_CREATE_2_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_KHR'
---
--- == Issues
---
--- None.
---
--- == Version History
---
--- -   Revision 1, 2022-12-12 (Stu Smith)
---
---     -   Initial revision
---
--- == See Also
---
--- No cross-references are available
---
--- == Document Notes
---
--- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_maintenance5 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_maintenance5  ( BufferUsageFlags2CreateInfoKHR
-                                              , DeviceImageSubresourceInfoKHR
-                                              , ImageSubresource2KHR
-                                              , PhysicalDeviceMaintenance5FeaturesKHR
-                                              , PhysicalDeviceMaintenance5PropertiesKHR
-                                              , PipelineCreateFlags2CreateInfoKHR
-                                              , RenderingAreaInfoKHR
-                                              , SubresourceLayout2KHR
-                                              ) 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 BufferUsageFlags2CreateInfoKHR
-
-instance ToCStruct BufferUsageFlags2CreateInfoKHR
-instance Show BufferUsageFlags2CreateInfoKHR
-
-instance FromCStruct BufferUsageFlags2CreateInfoKHR
-
-
-data DeviceImageSubresourceInfoKHR
-
-instance ToCStruct DeviceImageSubresourceInfoKHR
-instance Show DeviceImageSubresourceInfoKHR
-
-instance FromCStruct DeviceImageSubresourceInfoKHR
-
-
-data ImageSubresource2KHR
-
-instance ToCStruct ImageSubresource2KHR
-instance Show ImageSubresource2KHR
-
-instance FromCStruct ImageSubresource2KHR
-
-
-data PhysicalDeviceMaintenance5FeaturesKHR
-
-instance ToCStruct PhysicalDeviceMaintenance5FeaturesKHR
-instance Show PhysicalDeviceMaintenance5FeaturesKHR
-
-instance FromCStruct PhysicalDeviceMaintenance5FeaturesKHR
-
-
-data PhysicalDeviceMaintenance5PropertiesKHR
-
-instance ToCStruct PhysicalDeviceMaintenance5PropertiesKHR
-instance Show PhysicalDeviceMaintenance5PropertiesKHR
-
-instance FromCStruct PhysicalDeviceMaintenance5PropertiesKHR
-
-
-data PipelineCreateFlags2CreateInfoKHR
-
-instance ToCStruct PipelineCreateFlags2CreateInfoKHR
-instance Show PipelineCreateFlags2CreateInfoKHR
-
-instance FromCStruct PipelineCreateFlags2CreateInfoKHR
-
-
-data RenderingAreaInfoKHR
-
-instance ToCStruct RenderingAreaInfoKHR
-instance Show RenderingAreaInfoKHR
-
-instance FromCStruct RenderingAreaInfoKHR
-
-
-type role SubresourceLayout2KHR nominal
-data SubresourceLayout2KHR (es :: [Type])
-
-instance ( Extendss SubresourceLayout2KHR es
-         , PokeChain es ) => ToCStruct (SubresourceLayout2KHR es)
-instance Show (Chain es) => Show (SubresourceLayout2KHR es)
-
-instance ( Extendss SubresourceLayout2KHR es
-         , PeekChain es ) => FromCStruct (SubresourceLayout2KHR es)
-
diff --git a/src/Vulkan/Extensions/VK_KHR_maintenance6.hs b/src/Vulkan/Extensions/VK_KHR_maintenance6.hs
--- a/src/Vulkan/Extensions/VK_KHR_maintenance6.hs
+++ b/src/Vulkan/Extensions/VK_KHR_maintenance6.hs
@@ -29,2187 +29,983 @@
 --
 --     -   Interacts with VK_KHR_push_descriptor
 --
--- [__Contact__]
---
---     -   Jon Leech
---         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_maintenance6] @oddhack%0A*Here describe the issue or question you have about the VK_KHR_maintenance6 extension* >
---
--- [__Extension Proposal__]
---     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_KHR_maintenance6.adoc VK_KHR_maintenance6>
---
--- == Other Extension Metadata
---
--- [__Last Modified Date__]
---     2023-08-03
---
--- [__Interactions and External Dependencies__]
---
---     -   Interacts with @VK_EXT_robustness2@
---
--- [__Contributors__]
---
---     -   Jon Leech, Khronos
---
---     -   Stu Smith, AMD
---
---     -   Mike Blumenkrantz, Valve
---
---     -   Ralph Potter, Samsung
---
---     -   James Fitzpatrick, Imagination Technologies
---
---     -   Piers Daniell, NVIDIA
---
---     -   Daniel Story, Nintendo
---
--- == Description
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance6 VK_KHR_maintenance6>
--- adds a collection of minor features, none of which would warrant an
--- entire extension of their own.
---
--- The new features are as follows:
---
--- -   'BindMemoryStatusKHR' may be included in the @pNext@ chain of
---     'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindBufferMemoryInfo'
---     and
---     'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindImageMemoryInfo',
---     allowing applications to identify individual resources for which
---     memory binding failed during calls to
---     'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.bindBufferMemory2'
---     and
---     'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.bindImageMemory2'.
---
--- -   A new property @fragmentShadingRateClampCombinerInputs@ to indicate
---     if an implementation clamps the inputs to fragment shading rate
---     combiner operations.
---
--- -   'Vulkan.Core10.APIConstants.NULL_HANDLE' is allowed to be used when
---     binding an index buffer, instead of a valid
---     'Vulkan.Core10.Handles.Buffer' handle. When the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>
---     feature is enabled, every index fetched results in a value of zero.
---
--- -   A new property @maxCombinedImageSamplerDescriptorCount@ to indicate
---     the maximum number of descriptors needed for any of the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion formats that require a sampler Y′CBCR conversion>
---     supported by the implementation.
---
--- -   A new property @blockTexelViewCompatibleMultipleLayers@ indicating
---     whether
---     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT'
---     is allowed to be used with @layerCount@ > 1
---
--- -   @pNext@ extensible *2 versions of all descriptor binding commands.
---
--- == New Commands
---
--- -   'cmdBindDescriptorSets2KHR'
---
--- -   'cmdPushConstants2KHR'
---
--- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_buffer VK_EXT_descriptor_buffer>
--- is supported:
---
--- -   'cmdBindDescriptorBufferEmbeddedSamplers2EXT'
---
--- -   'cmdSetDescriptorBufferOffsets2EXT'
---
--- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_push_descriptor VK_KHR_push_descriptor>
--- is supported:
---
--- -   'cmdPushDescriptorSet2KHR'
---
--- -   'cmdPushDescriptorSetWithTemplate2KHR'
---
--- == New Structures
---
--- -   'BindDescriptorSetsInfoKHR'
---
--- -   'PushConstantsInfoKHR'
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindBufferMemoryInfo',
---     'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindImageMemoryInfo':
---
---     -   'BindMemoryStatusKHR'
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
---     'Vulkan.Core10.Device.DeviceCreateInfo':
---
---     -   'PhysicalDeviceMaintenance6FeaturesKHR'
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
---
---     -   'PhysicalDeviceMaintenance6PropertiesKHR'
---
--- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_buffer VK_EXT_descriptor_buffer>
--- is supported:
---
--- -   'BindDescriptorBufferEmbeddedSamplersInfoEXT'
---
--- -   'SetDescriptorBufferOffsetsInfoEXT'
---
--- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_push_descriptor VK_KHR_push_descriptor>
--- is supported:
---
--- -   'PushDescriptorSetInfoKHR'
---
--- -   'PushDescriptorSetWithTemplateInfoKHR'
---
--- == New Enum Constants
---
--- -   'KHR_MAINTENANCE_6_EXTENSION_NAME'
---
--- -   'KHR_MAINTENANCE_6_SPEC_VERSION'
---
--- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BIND_DESCRIPTOR_SETS_INFO_KHR'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BIND_MEMORY_STATUS_KHR'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES_KHR'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES_KHR'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PUSH_CONSTANTS_INFO_KHR'
---
--- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_buffer VK_EXT_descriptor_buffer>
--- is supported:
---
--- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BIND_DESCRIPTOR_BUFFER_EMBEDDED_SAMPLERS_INFO_EXT'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SET_DESCRIPTOR_BUFFER_OFFSETS_INFO_EXT'
---
--- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_push_descriptor VK_KHR_push_descriptor>
--- is supported:
---
--- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_INFO_KHR'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO_KHR'
---
--- == Issues
---
--- None.
---
--- == Version History
---
--- -   Revision 1, 2023-08-01 (Jon Leech)
---
---     -   Initial revision
---
--- == See Also
---
--- No cross-references are available
---
--- == Document Notes
---
--- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_maintenance6 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_maintenance6  ( cmdBindDescriptorSets2KHR
-                                              , cmdPushConstants2KHR
-                                              , cmdPushDescriptorSet2KHR
-                                              , cmdPushDescriptorSetWithTemplate2KHR
-                                              , cmdSetDescriptorBufferOffsets2EXT
-                                              , cmdBindDescriptorBufferEmbeddedSamplers2EXT
-                                              , PhysicalDeviceMaintenance6FeaturesKHR(..)
-                                              , PhysicalDeviceMaintenance6PropertiesKHR(..)
-                                              , BindMemoryStatusKHR(..)
-                                              , BindDescriptorSetsInfoKHR(..)
-                                              , PushConstantsInfoKHR(..)
-                                              , PushDescriptorSetInfoKHR(..)
-                                              , PushDescriptorSetWithTemplateInfoKHR(..)
-                                              , SetDescriptorBufferOffsetsInfoEXT(..)
-                                              , BindDescriptorBufferEmbeddedSamplersInfoEXT(..)
-                                              , KHR_MAINTENANCE_6_SPEC_VERSION
-                                              , pattern KHR_MAINTENANCE_6_SPEC_VERSION
-                                              , KHR_MAINTENANCE_6_EXTENSION_NAME
-                                              , pattern KHR_MAINTENANCE_6_EXTENSION_NAME
-                                              ) 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 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.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.CStruct.Extends (peekSomeCStruct)
-import Vulkan.CStruct.Extends (pokeSomeCStruct)
-import Vulkan.Core10.FundamentalTypes (Bool32)
-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.Handles (DescriptorSet)
-import Vulkan.Core11.Handles (DescriptorUpdateTemplate)
-import Vulkan.Dynamic (DeviceCmds(pVkCmdBindDescriptorBufferEmbeddedSamplers2EXT))
-import Vulkan.Dynamic (DeviceCmds(pVkCmdBindDescriptorSets2KHR))
-import Vulkan.Dynamic (DeviceCmds(pVkCmdPushConstants2KHR))
-import Vulkan.Dynamic (DeviceCmds(pVkCmdPushDescriptorSet2KHR))
-import Vulkan.Dynamic (DeviceCmds(pVkCmdPushDescriptorSetWithTemplate2KHR))
-import Vulkan.Dynamic (DeviceCmds(pVkCmdSetDescriptorBufferOffsets2EXT))
-import Vulkan.Core10.FundamentalTypes (DeviceSize)
-import Vulkan.CStruct.Extends (Extends)
-import Vulkan.CStruct.Extends (Extendss)
-import Vulkan.CStruct.Extends (Extensible(..))
-import Vulkan.CStruct.Extends (PeekChain)
-import Vulkan.CStruct.Extends (PeekChain(..))
-import Vulkan.Core10.Handles (PipelineLayout)
-import {-# SOURCE #-} Vulkan.Core10.PipelineLayout (PipelineLayoutCreateInfo)
-import Vulkan.CStruct.Extends (PokeChain)
-import Vulkan.CStruct.Extends (PokeChain(..))
-import Vulkan.Core10.Enums.Result (Result)
-import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)
-import Vulkan.CStruct.Extends (SomeStruct)
-import Vulkan.Core10.Enums.StructureType (StructureType)
-import Vulkan.Core10.DescriptorSet (WriteDescriptorSet)
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_BIND_DESCRIPTOR_BUFFER_EMBEDDED_SAMPLERS_INFO_EXT))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_BIND_DESCRIPTOR_SETS_INFO_KHR))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_BIND_MEMORY_STATUS_KHR))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES_KHR))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES_KHR))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PUSH_CONSTANTS_INFO_KHR))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_INFO_KHR))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO_KHR))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SET_DESCRIPTOR_BUFFER_OFFSETS_INFO_EXT))
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdBindDescriptorSets2KHR
-  :: FunPtr (Ptr CommandBuffer_T -> Ptr (SomeStruct BindDescriptorSetsInfoKHR) -> IO ()) -> Ptr CommandBuffer_T -> Ptr (SomeStruct BindDescriptorSetsInfoKHR) -> IO ()
-
--- | vkCmdBindDescriptorSets2KHR - Binds descriptor sets to a command buffer
---
--- == Valid Usage
---
--- -   #VUID-vkCmdBindDescriptorSets2KHR-pBindDescriptorSetsInfo-09467#
---     Each bit in @pBindDescriptorSetsInfo->stageFlags@ /must/ be a stage
---     supported by the @commandBuffer@’s parent
---     'Vulkan.Core10.Handles.CommandPool'’s queue family
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdBindDescriptorSets2KHR-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdBindDescriptorSets2KHR-pBindDescriptorSetsInfo-parameter#
---     @pBindDescriptorSetsInfo@ /must/ be a valid pointer to a valid
---     'BindDescriptorSetsInfoKHR' structure
---
--- -   #VUID-vkCmdBindDescriptorSets2KHR-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-vkCmdBindDescriptorSets2KHR-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics, or compute operations
---
--- -   #VUID-vkCmdBindDescriptorSets2KHR-videocoding# This command /must/
---     only be called outside of a video coding scope
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
--- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | Compute                                                                                                               |                                                                                                                                        |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance6 VK_KHR_maintenance6>,
--- 'BindDescriptorSetsInfoKHR', 'Vulkan.Core10.Handles.CommandBuffer'
-cmdBindDescriptorSets2KHR :: forall a io
-                           . ( Extendss BindDescriptorSetsInfoKHR a
-                             , PokeChain a
-                             , MonadIO io )
-                          => -- | @commandBuffer@ is the command buffer that the descriptor sets will be
-                             -- bound to.
-                             CommandBuffer
-                          -> -- | @pBindDescriptorSetsInfo@ is a pointer to a 'BindDescriptorSetsInfoKHR'
-                             -- structure.
-                             (BindDescriptorSetsInfoKHR a)
-                          -> io ()
-cmdBindDescriptorSets2KHR commandBuffer
-                            bindDescriptorSetsInfo = liftIO . evalContT $ do
-  let vkCmdBindDescriptorSets2KHRPtr = pVkCmdBindDescriptorSets2KHR (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCmdBindDescriptorSets2KHRPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdBindDescriptorSets2KHR is null" Nothing Nothing
-  let vkCmdBindDescriptorSets2KHR' = mkVkCmdBindDescriptorSets2KHR vkCmdBindDescriptorSets2KHRPtr
-  pBindDescriptorSetsInfo <- ContT $ withCStruct (bindDescriptorSetsInfo)
-  lift $ traceAroundEvent "vkCmdBindDescriptorSets2KHR" (vkCmdBindDescriptorSets2KHR'
-                                                           (commandBufferHandle (commandBuffer))
-                                                           (forgetExtensions pBindDescriptorSetsInfo))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdPushConstants2KHR
-  :: FunPtr (Ptr CommandBuffer_T -> Ptr (SomeStruct PushConstantsInfoKHR) -> IO ()) -> Ptr CommandBuffer_T -> Ptr (SomeStruct PushConstantsInfoKHR) -> IO ()
-
--- | vkCmdPushConstants2KHR - Update the values of push constants
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdPushConstants2KHR-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdPushConstants2KHR-pPushConstantsInfo-parameter#
---     @pPushConstantsInfo@ /must/ be a valid pointer to a valid
---     'PushConstantsInfoKHR' structure
---
--- -   #VUID-vkCmdPushConstants2KHR-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-vkCmdPushConstants2KHR-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics, or compute operations
---
--- -   #VUID-vkCmdPushConstants2KHR-videocoding# This command /must/ only
---     be called outside of a video coding scope
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
--- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | Compute                                                                                                               |                                                                                                                                        |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance6 VK_KHR_maintenance6>,
--- 'Vulkan.Core10.Handles.CommandBuffer', 'PushConstantsInfoKHR'
-cmdPushConstants2KHR :: forall a io
-                      . ( Extendss PushConstantsInfoKHR a
-                        , PokeChain a
-                        , MonadIO io )
-                     => -- | @commandBuffer@ is the command buffer in which the push constant update
-                        -- will be recorded.
-                        CommandBuffer
-                     -> -- | @pPushConstantsInfo@ is a pointer to a 'PushConstantsInfoKHR' structure.
-                        (PushConstantsInfoKHR a)
-                     -> io ()
-cmdPushConstants2KHR commandBuffer pushConstantsInfo = liftIO . evalContT $ do
-  let vkCmdPushConstants2KHRPtr = pVkCmdPushConstants2KHR (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCmdPushConstants2KHRPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdPushConstants2KHR is null" Nothing Nothing
-  let vkCmdPushConstants2KHR' = mkVkCmdPushConstants2KHR vkCmdPushConstants2KHRPtr
-  pPushConstantsInfo <- ContT $ withCStruct (pushConstantsInfo)
-  lift $ traceAroundEvent "vkCmdPushConstants2KHR" (vkCmdPushConstants2KHR'
-                                                      (commandBufferHandle (commandBuffer))
-                                                      (forgetExtensions pPushConstantsInfo))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdPushDescriptorSet2KHR
-  :: FunPtr (Ptr CommandBuffer_T -> Ptr (SomeStruct PushDescriptorSetInfoKHR) -> IO ()) -> Ptr CommandBuffer_T -> Ptr (SomeStruct PushDescriptorSetInfoKHR) -> IO ()
-
--- | vkCmdPushDescriptorSet2KHR - Pushes descriptor updates into a command
--- buffer
---
--- == Valid Usage
---
--- -   #VUID-vkCmdPushDescriptorSet2KHR-pPushDescriptorSetInfo-09468# Each
---     bit in @pPushDescriptorSetInfo->stageFlags@ /must/ be a stage
---     supported by the @commandBuffer@’s parent
---     'Vulkan.Core10.Handles.CommandPool'’s queue family
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdPushDescriptorSet2KHR-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdPushDescriptorSet2KHR-pPushDescriptorSetInfo-parameter#
---     @pPushDescriptorSetInfo@ /must/ be a valid pointer to a valid
---     'PushDescriptorSetInfoKHR' structure
---
--- -   #VUID-vkCmdPushDescriptorSet2KHR-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-vkCmdPushDescriptorSet2KHR-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics, or compute operations
---
--- -   #VUID-vkCmdPushDescriptorSet2KHR-videocoding# This command /must/
---     only be called outside of a video coding scope
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
--- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | Compute                                                                                                               |                                                                                                                                        |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance6 VK_KHR_maintenance6>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_push_descriptor VK_KHR_push_descriptor>,
--- 'Vulkan.Core10.Handles.CommandBuffer', 'PushDescriptorSetInfoKHR'
-cmdPushDescriptorSet2KHR :: forall a io
-                          . ( Extendss PushDescriptorSetInfoKHR a
-                            , PokeChain a
-                            , MonadIO io )
-                         => -- | @commandBuffer@ is the command buffer that the descriptors will be
-                            -- recorded in.
-                            CommandBuffer
-                         -> -- | @pPushDescriptorSetInfo@ is a pointer to a 'PushDescriptorSetInfoKHR'
-                            -- structure.
-                            (PushDescriptorSetInfoKHR a)
-                         -> io ()
-cmdPushDescriptorSet2KHR commandBuffer
-                           pushDescriptorSetInfo = liftIO . evalContT $ do
-  let vkCmdPushDescriptorSet2KHRPtr = pVkCmdPushDescriptorSet2KHR (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCmdPushDescriptorSet2KHRPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdPushDescriptorSet2KHR is null" Nothing Nothing
-  let vkCmdPushDescriptorSet2KHR' = mkVkCmdPushDescriptorSet2KHR vkCmdPushDescriptorSet2KHRPtr
-  pPushDescriptorSetInfo <- ContT $ withCStruct (pushDescriptorSetInfo)
-  lift $ traceAroundEvent "vkCmdPushDescriptorSet2KHR" (vkCmdPushDescriptorSet2KHR'
-                                                          (commandBufferHandle (commandBuffer))
-                                                          (forgetExtensions pPushDescriptorSetInfo))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdPushDescriptorSetWithTemplate2KHR
-  :: FunPtr (Ptr CommandBuffer_T -> Ptr (SomeStruct PushDescriptorSetWithTemplateInfoKHR) -> IO ()) -> Ptr CommandBuffer_T -> Ptr (SomeStruct PushDescriptorSetWithTemplateInfoKHR) -> IO ()
-
--- | vkCmdPushDescriptorSetWithTemplate2KHR - Pushes descriptor updates into
--- a command buffer using a descriptor update template
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdPushDescriptorSetWithTemplate2KHR-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdPushDescriptorSetWithTemplate2KHR-pPushDescriptorSetWithTemplateInfo-parameter#
---     @pPushDescriptorSetWithTemplateInfo@ /must/ be a valid pointer to a
---     valid 'PushDescriptorSetWithTemplateInfoKHR' structure
---
--- -   #VUID-vkCmdPushDescriptorSetWithTemplate2KHR-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-vkCmdPushDescriptorSetWithTemplate2KHR-commandBuffer-cmdpool#
---     The 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics, or compute operations
---
--- -   #VUID-vkCmdPushDescriptorSetWithTemplate2KHR-videocoding# This
---     command /must/ only be called outside of a video coding scope
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
--- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | Compute                                                                                                               |                                                                                                                                        |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance6 VK_KHR_maintenance6>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_push_descriptor VK_KHR_push_descriptor>,
--- 'Vulkan.Core10.Handles.CommandBuffer',
--- 'PushDescriptorSetWithTemplateInfoKHR'
-cmdPushDescriptorSetWithTemplate2KHR :: forall a io
-                                      . ( Extendss PushDescriptorSetWithTemplateInfoKHR a
-                                        , PokeChain a
-                                        , MonadIO io )
-                                     => -- | @commandBuffer@ is the command buffer that the descriptors will be
-                                        -- recorded in.
-                                        CommandBuffer
-                                     -> -- | @pPushDescriptorSetWithTemplateInfo@ is a pointer to a
-                                        -- 'PushDescriptorSetWithTemplateInfoKHR' structure.
-                                        (PushDescriptorSetWithTemplateInfoKHR a)
-                                     -> io ()
-cmdPushDescriptorSetWithTemplate2KHR commandBuffer
-                                       pushDescriptorSetWithTemplateInfo = liftIO . evalContT $ do
-  let vkCmdPushDescriptorSetWithTemplate2KHRPtr = pVkCmdPushDescriptorSetWithTemplate2KHR (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCmdPushDescriptorSetWithTemplate2KHRPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdPushDescriptorSetWithTemplate2KHR is null" Nothing Nothing
-  let vkCmdPushDescriptorSetWithTemplate2KHR' = mkVkCmdPushDescriptorSetWithTemplate2KHR vkCmdPushDescriptorSetWithTemplate2KHRPtr
-  pPushDescriptorSetWithTemplateInfo <- ContT $ withCStruct (pushDescriptorSetWithTemplateInfo)
-  lift $ traceAroundEvent "vkCmdPushDescriptorSetWithTemplate2KHR" (vkCmdPushDescriptorSetWithTemplate2KHR'
-                                                                      (commandBufferHandle (commandBuffer))
-                                                                      (forgetExtensions pPushDescriptorSetWithTemplateInfo))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdSetDescriptorBufferOffsets2EXT
-  :: FunPtr (Ptr CommandBuffer_T -> Ptr (SomeStruct SetDescriptorBufferOffsetsInfoEXT) -> IO ()) -> Ptr CommandBuffer_T -> Ptr (SomeStruct SetDescriptorBufferOffsetsInfoEXT) -> IO ()
-
--- | vkCmdSetDescriptorBufferOffsets2EXT - Setting descriptor buffer offsets
--- in a command buffer
---
--- == Valid Usage
---
--- -   #VUID-vkCmdSetDescriptorBufferOffsets2EXT-descriptorBuffer-09470#
---     The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-descriptorBuffer descriptorBuffer>
---     feature /must/ be enabled
---
--- -   #VUID-vkCmdSetDescriptorBufferOffsets2EXT-pSetDescriptorBufferOffsetsInfo-09471#
---     Each bit in @pSetDescriptorBufferOffsetsInfo->stageFlags@ /must/ be
---     a stage supported by the @commandBuffer@’s parent
---     'Vulkan.Core10.Handles.CommandPool'’s queue family
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdSetDescriptorBufferOffsets2EXT-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdSetDescriptorBufferOffsets2EXT-pSetDescriptorBufferOffsetsInfo-parameter#
---     @pSetDescriptorBufferOffsetsInfo@ /must/ be a valid pointer to a
---     valid 'SetDescriptorBufferOffsetsInfoEXT' structure
---
--- -   #VUID-vkCmdSetDescriptorBufferOffsets2EXT-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-vkCmdSetDescriptorBufferOffsets2EXT-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics, or compute operations
---
--- -   #VUID-vkCmdSetDescriptorBufferOffsets2EXT-videocoding# This command
---     /must/ only be called outside of a video coding scope
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
--- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | Compute                                                                                                               |                                                                                                                                        |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_buffer VK_EXT_descriptor_buffer>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance6 VK_KHR_maintenance6>,
--- 'Vulkan.Core10.Handles.CommandBuffer',
--- 'SetDescriptorBufferOffsetsInfoEXT'
-cmdSetDescriptorBufferOffsets2EXT :: forall a io
-                                   . ( Extendss SetDescriptorBufferOffsetsInfoEXT a
-                                     , PokeChain a
-                                     , MonadIO io )
-                                  => -- | @commandBuffer@ is the command buffer in which the descriptor buffer
-                                     -- offsets will be set.
-                                     CommandBuffer
-                                  -> -- | @pSetDescriptorBufferOffsetsInfo@ is a pointer to a
-                                     -- 'SetDescriptorBufferOffsetsInfoEXT' structure.
-                                     (SetDescriptorBufferOffsetsInfoEXT a)
-                                  -> io ()
-cmdSetDescriptorBufferOffsets2EXT commandBuffer
-                                    setDescriptorBufferOffsetsInfo = liftIO . evalContT $ do
-  let vkCmdSetDescriptorBufferOffsets2EXTPtr = pVkCmdSetDescriptorBufferOffsets2EXT (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCmdSetDescriptorBufferOffsets2EXTPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetDescriptorBufferOffsets2EXT is null" Nothing Nothing
-  let vkCmdSetDescriptorBufferOffsets2EXT' = mkVkCmdSetDescriptorBufferOffsets2EXT vkCmdSetDescriptorBufferOffsets2EXTPtr
-  pSetDescriptorBufferOffsetsInfo <- ContT $ withCStruct (setDescriptorBufferOffsetsInfo)
-  lift $ traceAroundEvent "vkCmdSetDescriptorBufferOffsets2EXT" (vkCmdSetDescriptorBufferOffsets2EXT'
-                                                                   (commandBufferHandle (commandBuffer))
-                                                                   (forgetExtensions pSetDescriptorBufferOffsetsInfo))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdBindDescriptorBufferEmbeddedSamplers2EXT
-  :: FunPtr (Ptr CommandBuffer_T -> Ptr (SomeStruct BindDescriptorBufferEmbeddedSamplersInfoEXT) -> IO ()) -> Ptr CommandBuffer_T -> Ptr (SomeStruct BindDescriptorBufferEmbeddedSamplersInfoEXT) -> IO ()
-
--- | vkCmdBindDescriptorBufferEmbeddedSamplers2EXT - Setting embedded
--- immutable samplers offsets in a command buffer
---
--- == Valid Usage
---
--- -   #VUID-vkCmdBindDescriptorBufferEmbeddedSamplers2EXT-descriptorBuffer-09472#
---     The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-descriptorBuffer descriptorBuffer>
---     feature /must/ be enabled
---
--- -   #VUID-vkCmdBindDescriptorBufferEmbeddedSamplers2EXT-pBindDescriptorBufferEmbeddedSamplersInfo-09473#
---     Each bit in @pBindDescriptorBufferEmbeddedSamplersInfo->stageFlags@
---     /must/ be a stage supported by the @commandBuffer@’s parent
---     'Vulkan.Core10.Handles.CommandPool'’s queue family
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdBindDescriptorBufferEmbeddedSamplers2EXT-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdBindDescriptorBufferEmbeddedSamplers2EXT-pBindDescriptorBufferEmbeddedSamplersInfo-parameter#
---     @pBindDescriptorBufferEmbeddedSamplersInfo@ /must/ be a valid
---     pointer to a valid 'BindDescriptorBufferEmbeddedSamplersInfoEXT'
---     structure
---
--- -   #VUID-vkCmdBindDescriptorBufferEmbeddedSamplers2EXT-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-vkCmdBindDescriptorBufferEmbeddedSamplers2EXT-commandBuffer-cmdpool#
---     The 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics, or compute operations
---
--- -   #VUID-vkCmdBindDescriptorBufferEmbeddedSamplers2EXT-videocoding#
---     This command /must/ only be called outside of a video coding scope
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
--- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | Compute                                                                                                               |                                                                                                                                        |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_buffer VK_EXT_descriptor_buffer>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance6 VK_KHR_maintenance6>,
--- 'BindDescriptorBufferEmbeddedSamplersInfoEXT',
--- 'Vulkan.Core10.Handles.CommandBuffer'
-cmdBindDescriptorBufferEmbeddedSamplers2EXT :: forall a io
-                                             . ( Extendss BindDescriptorBufferEmbeddedSamplersInfoEXT a
-                                               , PokeChain a
-                                               , MonadIO io )
-                                            => -- | @commandBuffer@ is the command buffer that the embedded immutable
-                                               -- samplers will be bound to.
-                                               CommandBuffer
-                                            -> -- | @pBindDescriptorBufferEmbeddedSamplersInfo@ is a pointer to a
-                                               -- 'BindDescriptorBufferEmbeddedSamplersInfoEXT' structure.
-                                               (BindDescriptorBufferEmbeddedSamplersInfoEXT a)
-                                            -> io ()
-cmdBindDescriptorBufferEmbeddedSamplers2EXT commandBuffer
-                                              bindDescriptorBufferEmbeddedSamplersInfo = liftIO . evalContT $ do
-  let vkCmdBindDescriptorBufferEmbeddedSamplers2EXTPtr = pVkCmdBindDescriptorBufferEmbeddedSamplers2EXT (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCmdBindDescriptorBufferEmbeddedSamplers2EXTPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdBindDescriptorBufferEmbeddedSamplers2EXT is null" Nothing Nothing
-  let vkCmdBindDescriptorBufferEmbeddedSamplers2EXT' = mkVkCmdBindDescriptorBufferEmbeddedSamplers2EXT vkCmdBindDescriptorBufferEmbeddedSamplers2EXTPtr
-  pBindDescriptorBufferEmbeddedSamplersInfo <- ContT $ withCStruct (bindDescriptorBufferEmbeddedSamplersInfo)
-  lift $ traceAroundEvent "vkCmdBindDescriptorBufferEmbeddedSamplers2EXT" (vkCmdBindDescriptorBufferEmbeddedSamplers2EXT'
-                                                                             (commandBufferHandle (commandBuffer))
-                                                                             (forgetExtensions pBindDescriptorBufferEmbeddedSamplersInfo))
-  pure $ ()
-
-
--- | VkPhysicalDeviceMaintenance6FeaturesKHR - Structure describing whether
--- the implementation supports maintenance6 functionality
---
--- = Members
---
--- This structure describes the following feature:
---
--- = Description
---
--- If the 'PhysicalDeviceMaintenance6FeaturesKHR' 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. 'PhysicalDeviceMaintenance6FeaturesKHR' /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_maintenance6 VK_KHR_maintenance6>,
--- 'Vulkan.Core10.FundamentalTypes.Bool32',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PhysicalDeviceMaintenance6FeaturesKHR = PhysicalDeviceMaintenance6FeaturesKHR
-  { -- | #features-maintenance6# @maintenance6@ indicates that the implementation
-    -- supports the following:
-    --
-    -- -   'Vulkan.Core10.APIConstants.NULL_HANDLE' /can/ be used when binding
-    --     an index buffer
-    --
-    -- -   'BindMemoryStatusKHR' /can/ be included in the @pNext@ chain of the
-    --     'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindBufferMemoryInfo'
-    --     and
-    --     'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindImageMemoryInfo'
-    --     structures, enabling applications to retrieve
-    --     'Vulkan.Core10.Enums.Result.Result' values for individual memory
-    --     binding operations.
-    --
-    -- -   'PhysicalDeviceMaintenance6PropertiesKHR'::@blockTexelViewCompatibleMultipleLayers@
-    --     property to indicate that the implementation supports creating image
-    --     views with
-    --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT'
-    --     where the @layerCount@ member of @subresourceRange@ is greater than
-    --     @1@.
-    --
-    -- -   'PhysicalDeviceMaintenance6PropertiesKHR'::@maxCombinedImageSamplerDescriptorCount@
-    --     property which indicates the maximum descriptor size required for
-    --     any
-    --     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion format that requires a sampler Y′CBCR conversion>
-    --     supported by the implementation.
-    --
-    -- -   A
-    --     'PhysicalDeviceMaintenance6PropertiesKHR'::@fragmentShadingRateClampCombinerInputs@
-    --     property which indicates whether the implementation clamps the
-    --     inputs to fragment shading rate combiner operations.
-    maintenance6 :: Bool }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PhysicalDeviceMaintenance6FeaturesKHR)
-#endif
-deriving instance Show PhysicalDeviceMaintenance6FeaturesKHR
-
-instance ToCStruct PhysicalDeviceMaintenance6FeaturesKHR where
-  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PhysicalDeviceMaintenance6FeaturesKHR{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (maintenance6))
-    f
-  cStructSize = 24
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
-    f
-
-instance FromCStruct PhysicalDeviceMaintenance6FeaturesKHR where
-  peekCStruct p = do
-    maintenance6 <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
-    pure $ PhysicalDeviceMaintenance6FeaturesKHR
-             (bool32ToBool maintenance6)
-
-instance Storable PhysicalDeviceMaintenance6FeaturesKHR where
-  sizeOf ~_ = 24
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero PhysicalDeviceMaintenance6FeaturesKHR where
-  zero = PhysicalDeviceMaintenance6FeaturesKHR
-           zero
-
-
--- | VkPhysicalDeviceMaintenance6PropertiesKHR - Structure describing various
--- implementation-defined properties introduced with VK_KHR_maintenance6
---
--- = Description
---
--- If the 'PhysicalDeviceMaintenance6PropertiesKHR' 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_maintenance6 VK_KHR_maintenance6>,
--- 'Vulkan.Core10.FundamentalTypes.Bool32',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PhysicalDeviceMaintenance6PropertiesKHR = PhysicalDeviceMaintenance6PropertiesKHR
-  { -- | @blockTexelViewCompatibleMultipleLayers@ is a boolean value indicating
-    -- that an implementation supports creating image views with
-    -- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT'
-    -- where the @layerCount@ member of @subresourceRange@ is greater than @1@.
-    blockTexelViewCompatibleMultipleLayers :: Bool
-  , -- | @maxCombinedImageSamplerDescriptorCount@ is the maximum number of
-    -- combined image sampler descriptors that the implementation uses to
-    -- access any of the
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion formats that require a sampler Y′CBCR conversion>
-    -- supported by the implementation.
-    maxCombinedImageSamplerDescriptorCount :: Word32
-  , -- | @fragmentShadingRateClampCombinerInputs@ is a boolean value indicating
-    -- that an implementation clamps the inputs to
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-combining combiner operations>.
-    fragmentShadingRateClampCombinerInputs :: Bool
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PhysicalDeviceMaintenance6PropertiesKHR)
-#endif
-deriving instance Show PhysicalDeviceMaintenance6PropertiesKHR
-
-instance ToCStruct PhysicalDeviceMaintenance6PropertiesKHR where
-  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PhysicalDeviceMaintenance6PropertiesKHR{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (blockTexelViewCompatibleMultipleLayers))
-    poke ((p `plusPtr` 20 :: Ptr Word32)) (maxCombinedImageSamplerDescriptorCount)
-    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (fragmentShadingRateClampCombinerInputs))
-    f
-  cStructSize = 32
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
-    poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (zero))
-    f
-
-instance FromCStruct PhysicalDeviceMaintenance6PropertiesKHR where
-  peekCStruct p = do
-    blockTexelViewCompatibleMultipleLayers <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
-    maxCombinedImageSamplerDescriptorCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
-    fragmentShadingRateClampCombinerInputs <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))
-    pure $ PhysicalDeviceMaintenance6PropertiesKHR
-             (bool32ToBool blockTexelViewCompatibleMultipleLayers)
-             maxCombinedImageSamplerDescriptorCount
-             (bool32ToBool fragmentShadingRateClampCombinerInputs)
-
-instance Storable PhysicalDeviceMaintenance6PropertiesKHR where
-  sizeOf ~_ = 32
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero PhysicalDeviceMaintenance6PropertiesKHR where
-  zero = PhysicalDeviceMaintenance6PropertiesKHR
-           zero
-           zero
-           zero
-
-
--- | VkBindMemoryStatusKHR - Structure specifying where to return memory
--- binding status
---
--- = Description
---
--- If the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindBufferMemoryInfo'
--- or 'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindImageMemoryInfo'
--- includes a 'BindMemoryStatusKHR' structure, then the
--- 'BindMemoryStatusKHR'::@pResult@ will be populated with a value
--- describing the result of the corresponding memory binding operation.
---
--- == Valid Usage (Implicit)
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance6 VK_KHR_maintenance6>,
--- 'Vulkan.Core10.Enums.Result.Result',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data BindMemoryStatusKHR = BindMemoryStatusKHR
-  { -- | @pResult@ is a pointer to a 'Vulkan.Core10.Enums.Result.Result' value.
-    --
-    -- #VUID-VkBindMemoryStatusKHR-pResult-parameter# @pResult@ /must/ be a
-    -- valid pointer to a 'Vulkan.Core10.Enums.Result.Result' value
-    result :: Ptr Result }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (BindMemoryStatusKHR)
-#endif
-deriving instance Show BindMemoryStatusKHR
-
-instance ToCStruct BindMemoryStatusKHR where
-  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p BindMemoryStatusKHR{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BIND_MEMORY_STATUS_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr (Ptr Result))) (result)
-    f
-  cStructSize = 24
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BIND_MEMORY_STATUS_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr (Ptr Result))) (zero)
-    f
-
-instance FromCStruct BindMemoryStatusKHR where
-  peekCStruct p = do
-    pResult <- peek @(Ptr Result) ((p `plusPtr` 16 :: Ptr (Ptr Result)))
-    pure $ BindMemoryStatusKHR
-             pResult
-
-instance Storable BindMemoryStatusKHR where
-  sizeOf ~_ = 24
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero BindMemoryStatusKHR where
-  zero = BindMemoryStatusKHR
-           zero
-
-
--- | VkBindDescriptorSetsInfoKHR - Structure specifying a descriptor set
--- binding operation
---
--- = Description
---
--- If @stageFlags@ specifies a subset of all stages corresponding to one or
--- more pipeline bind points, the binding operation still affects all
--- stages corresponding to the given pipeline bind point(s) as if the
--- equivalent original version of this command had been called with the
--- same parameters. For example, specifying a @stageFlags@ value of
--- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' |
--- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' |
--- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT' is
--- equivalent to calling the original version of this command once with
--- 'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS' and
--- once with
--- 'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_COMPUTE'.
---
--- == Valid Usage
---
--- -   #VUID-VkBindDescriptorSetsInfoKHR-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-VkBindDescriptorSetsInfoKHR-dynamicOffsetCount-00359#
---     @dynamicOffsetCount@ /must/ be equal to the total number of dynamic
---     descriptors in @pDescriptorSets@
---
--- -   #VUID-VkBindDescriptorSetsInfoKHR-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-VkBindDescriptorSetsInfoKHR-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-VkBindDescriptorSetsInfoKHR-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-VkBindDescriptorSetsInfoKHR-pDescriptorSets-01979# For each
---     dynamic uniform or storage buffer binding in @pDescriptorSets@, the
---     sum of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-effective-offset effective offset>
---     and the range of the binding /must/ be less than or equal to the
---     size of the buffer
---
--- -   #VUID-VkBindDescriptorSetsInfoKHR-pDescriptorSets-06715# For each
---     dynamic uniform or storage buffer binding in @pDescriptorSets@, if
---     the range was set with 'Vulkan.Core10.APIConstants.WHOLE_SIZE' then
---     @pDynamicOffsets@ which corresponds to the descriptor binding /must/
---     be 0
---
--- -   #VUID-VkBindDescriptorSetsInfoKHR-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_EXT'
---     flag set
---
--- -   #VUID-VkBindDescriptorSetsInfoKHR-pDescriptorSets-06563# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-graphicsPipelineLibrary graphicsPipelineLibrary>
---     feature is not enabled, each element of @pDescriptorSets@ /must/ be
---     a valid 'Vulkan.Core10.Handles.DescriptorSet'
---
--- -   #VUID-VkBindDescriptorSetsInfoKHR-pDescriptorSets-08010# Each
---     element of @pDescriptorSets@ /must/ have been allocated with a
---     'Vulkan.Core10.Handles.DescriptorSetLayout' which was not created
---     with
---     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-VkBindDescriptorSetsInfoKHR-None-09495# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicPipelineLayout dynamicPipelineLayout>
---     feature is not enabled, @layout@ /must/ be a valid
---     'Vulkan.Core10.Handles.PipelineLayout' handle
---
--- -   #VUID-VkBindDescriptorSetsInfoKHR-layout-09496# If @layout@ is
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', the @pNext@ chain /must/
---     include a valid
---     'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo' structure
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkBindDescriptorSetsInfoKHR-sType-sType# @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BIND_DESCRIPTOR_SETS_INFO_KHR'
---
--- -   #VUID-VkBindDescriptorSetsInfoKHR-pNext-pNext# @pNext@ /must/ be
---     @NULL@ or a pointer to a valid instance of
---     'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo'
---
--- -   #VUID-VkBindDescriptorSetsInfoKHR-sType-unique# The @sType@ value of
---     each struct in the @pNext@ chain /must/ be unique
---
--- -   #VUID-VkBindDescriptorSetsInfoKHR-stageFlags-parameter# @stageFlags@
---     /must/ be a valid combination of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits' values
---
--- -   #VUID-VkBindDescriptorSetsInfoKHR-stageFlags-requiredbitmask#
---     @stageFlags@ /must/ not be @0@
---
--- -   #VUID-VkBindDescriptorSetsInfoKHR-layout-parameter# If @layout@ is
---     not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @layout@ /must/ be a
---     valid 'Vulkan.Core10.Handles.PipelineLayout' handle
---
--- -   #VUID-VkBindDescriptorSetsInfoKHR-pDescriptorSets-parameter#
---     @pDescriptorSets@ /must/ be a valid pointer to an array of
---     @descriptorSetCount@ valid 'Vulkan.Core10.Handles.DescriptorSet'
---     handles
---
--- -   #VUID-VkBindDescriptorSetsInfoKHR-pDynamicOffsets-parameter# If
---     @dynamicOffsetCount@ is not @0@, and @pDynamicOffsets@ is not
---     @NULL@, @pDynamicOffsets@ /must/ be a valid pointer to an array of
---     @dynamicOffsetCount@ or 'Vulkan.Core10.APIConstants.NULL_HANDLE'
---     @uint32_t@ values
---
--- -   #VUID-VkBindDescriptorSetsInfoKHR-descriptorSetCount-arraylength#
---     @descriptorSetCount@ /must/ be greater than @0@
---
--- -   #VUID-VkBindDescriptorSetsInfoKHR-commonparent# Both of @layout@,
---     and the elements of @pDescriptorSets@ 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_maintenance6 VK_KHR_maintenance6>,
--- 'Vulkan.Core10.Handles.DescriptorSet',
--- 'Vulkan.Core10.Handles.PipelineLayout',
--- 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlags',
--- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'cmdBindDescriptorSets2KHR'
-data BindDescriptorSetsInfoKHR (es :: [Type]) = BindDescriptorSetsInfoKHR
-  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
-    next :: Chain es
-  , -- | @stageFlags@ is a bitmask of
-    -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits' specifying
-    -- the shader stages the descriptor sets will be bound to.
-    stageFlags :: ShaderStageFlags
-  , -- | @layout@ is a 'Vulkan.Core10.Handles.PipelineLayout' object used to
-    -- program the bindings. If the
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-dynamicPipelineLayout dynamicPipelineLayout>
-    -- feature is enabled, @layout@ /can/ be
-    -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' and the layout /must/ be
-    -- specified by chaining the
-    -- 'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo' structure off
-    -- the @pNext@
-    layout :: 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
-  , -- | @dynamicOffsetCount@ is the number of dynamic offsets in the
-    -- @pDynamicOffsets@ array.
-    dynamicOffsetCount :: Word32
-  , -- | @pDynamicOffsets@ is a pointer to an array of @uint32_t@ values
-    -- specifying dynamic offsets.
-    dynamicOffsets :: Vector Word32
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (BindDescriptorSetsInfoKHR (es :: [Type]))
-#endif
-deriving instance Show (Chain es) => Show (BindDescriptorSetsInfoKHR es)
-
-instance Extensible BindDescriptorSetsInfoKHR where
-  extensibleTypeName = "BindDescriptorSetsInfoKHR"
-  setNext BindDescriptorSetsInfoKHR{..} next' = BindDescriptorSetsInfoKHR{next = next', ..}
-  getNext BindDescriptorSetsInfoKHR{..} = next
-  extends :: forall e b proxy. Typeable e => proxy e -> (Extends BindDescriptorSetsInfoKHR e => b) -> Maybe b
-  extends _ f
-    | Just Refl <- eqT @e @PipelineLayoutCreateInfo = Just f
-    | otherwise = Nothing
-
-instance ( Extendss BindDescriptorSetsInfoKHR es
-         , PokeChain es ) => ToCStruct (BindDescriptorSetsInfoKHR es) where
-  withCStruct x f = allocaBytes 64 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p BindDescriptorSetsInfoKHR{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BIND_DESCRIPTOR_SETS_INFO_KHR)
-    pNext'' <- fmap castPtr . ContT $ withChain (next)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
-    lift $ poke ((p `plusPtr` 16 :: Ptr ShaderStageFlags)) (stageFlags)
-    lift $ poke ((p `plusPtr` 24 :: Ptr PipelineLayout)) (layout)
-    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) (firstSet)
-    lift $ poke ((p `plusPtr` 36 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (descriptorSets)) :: Word32))
-    pPDescriptorSets' <- ContT $ allocaBytes @DescriptorSet ((Data.Vector.length (descriptorSets)) * 8)
-    lift $ Data.Vector.imapM_ (\i e -> poke (pPDescriptorSets' `plusPtr` (8 * (i)) :: Ptr DescriptorSet) (e)) (descriptorSets)
-    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr DescriptorSet))) (pPDescriptorSets')
-    let pDynamicOffsetsLength = Data.Vector.length $ (dynamicOffsets)
-    dynamicOffsetCount'' <- lift $ if (dynamicOffsetCount) == 0
-      then pure $ fromIntegral pDynamicOffsetsLength
-      else do
-        unless (fromIntegral pDynamicOffsetsLength == (dynamicOffsetCount) || pDynamicOffsetsLength == 0) $
-          throwIO $ IOError Nothing InvalidArgument "" "pDynamicOffsets must be empty or have 'dynamicOffsetCount' elements" Nothing Nothing
-        pure (dynamicOffsetCount)
-    lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) (dynamicOffsetCount'')
-    pDynamicOffsets'' <- if Data.Vector.null (dynamicOffsets)
-      then pure nullPtr
-      else do
-        pPDynamicOffsets <- ContT $ allocaBytes @Word32 (((Data.Vector.length (dynamicOffsets))) * 4)
-        lift $ Data.Vector.imapM_ (\i e -> poke (pPDynamicOffsets `plusPtr` (4 * (i)) :: Ptr Word32) (e)) ((dynamicOffsets))
-        pure $ pPDynamicOffsets
-    lift $ poke ((p `plusPtr` 56 :: Ptr (Ptr Word32))) pDynamicOffsets''
-    lift $ f
-  cStructSize = 64
-  cStructAlignment = 8
-  pokeZeroCStruct p f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BIND_DESCRIPTOR_SETS_INFO_KHR)
-    pNext' <- fmap castPtr . ContT $ withZeroChain @es
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
-    lift $ poke ((p `plusPtr` 16 :: Ptr ShaderStageFlags)) (zero)
-    lift $ f
-
-instance ( Extendss BindDescriptorSetsInfoKHR es
-         , PeekChain es ) => FromCStruct (BindDescriptorSetsInfoKHR es) where
-  peekCStruct p = do
-    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
-    next <- peekChain (castPtr pNext)
-    stageFlags <- peek @ShaderStageFlags ((p `plusPtr` 16 :: Ptr ShaderStageFlags))
-    layout <- peek @PipelineLayout ((p `plusPtr` 24 :: Ptr PipelineLayout))
-    firstSet <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))
-    descriptorSetCount <- peek @Word32 ((p `plusPtr` 36 :: Ptr Word32))
-    pDescriptorSets <- peek @(Ptr DescriptorSet) ((p `plusPtr` 40 :: Ptr (Ptr DescriptorSet)))
-    pDescriptorSets' <- generateM (fromIntegral descriptorSetCount) (\i -> peek @DescriptorSet ((pDescriptorSets `advancePtrBytes` (8 * (i)) :: Ptr DescriptorSet)))
-    dynamicOffsetCount <- peek @Word32 ((p `plusPtr` 48 :: Ptr Word32))
-    pDynamicOffsets <- peek @(Ptr Word32) ((p `plusPtr` 56 :: Ptr (Ptr Word32)))
-    let pDynamicOffsetsLength = if pDynamicOffsets == nullPtr then 0 else (fromIntegral dynamicOffsetCount)
-    pDynamicOffsets' <- generateM pDynamicOffsetsLength (\i -> peek @Word32 ((pDynamicOffsets `advancePtrBytes` (4 * (i)) :: Ptr Word32)))
-    pure $ BindDescriptorSetsInfoKHR
-             next
-             stageFlags
-             layout
-             firstSet
-             pDescriptorSets'
-             dynamicOffsetCount
-             pDynamicOffsets'
-
-instance es ~ '[] => Zero (BindDescriptorSetsInfoKHR es) where
-  zero = BindDescriptorSetsInfoKHR
-           ()
-           zero
-           zero
-           zero
-           mempty
-           zero
-           mempty
-
-
--- | VkPushConstantsInfoKHR - Structure specifying a push constant update
--- operation
---
--- == Valid Usage
---
--- -   #VUID-VkPushConstantsInfoKHR-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-VkPushConstantsInfoKHR-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-VkPushConstantsInfoKHR-offset-00368# @offset@ /must/ be a
---     multiple of @4@
---
--- -   #VUID-VkPushConstantsInfoKHR-size-00369# @size@ /must/ be a multiple
---     of @4@
---
--- -   #VUID-VkPushConstantsInfoKHR-offset-00370# @offset@ /must/ be less
---     than
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxPushConstantsSize@
---
--- -   #VUID-VkPushConstantsInfoKHR-size-00371# @size@ /must/ be less than
---     or equal to
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxPushConstantsSize@
---     minus @offset@
---
--- -   #VUID-VkPushConstantsInfoKHR-None-09495# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicPipelineLayout dynamicPipelineLayout>
---     feature is not enabled, @layout@ /must/ be a valid
---     'Vulkan.Core10.Handles.PipelineLayout' handle
---
--- -   #VUID-VkPushConstantsInfoKHR-layout-09496# If @layout@ is
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', the @pNext@ chain /must/
---     include a valid
---     'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo' structure
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkPushConstantsInfoKHR-sType-sType# @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PUSH_CONSTANTS_INFO_KHR'
---
--- -   #VUID-VkPushConstantsInfoKHR-pNext-pNext# @pNext@ /must/ be @NULL@
---     or a pointer to a valid instance of
---     'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo'
---
--- -   #VUID-VkPushConstantsInfoKHR-sType-unique# The @sType@ value of each
---     struct in the @pNext@ chain /must/ be unique
---
--- -   #VUID-VkPushConstantsInfoKHR-layout-parameter# If @layout@ is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', @layout@ /must/ be a valid
---     'Vulkan.Core10.Handles.PipelineLayout' handle
---
--- -   #VUID-VkPushConstantsInfoKHR-stageFlags-parameter# @stageFlags@
---     /must/ be a valid combination of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits' values
---
--- -   #VUID-VkPushConstantsInfoKHR-stageFlags-requiredbitmask#
---     @stageFlags@ /must/ not be @0@
---
--- -   #VUID-VkPushConstantsInfoKHR-pValues-parameter# @pValues@ /must/ be
---     a valid pointer to an array of @size@ bytes
---
--- -   #VUID-VkPushConstantsInfoKHR-size-arraylength# @size@ /must/ be
---     greater than @0@
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance6 VK_KHR_maintenance6>,
--- 'Vulkan.Core10.Handles.PipelineLayout',
--- 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlags',
--- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'cmdPushConstants2KHR'
-data PushConstantsInfoKHR (es :: [Type]) = PushConstantsInfoKHR
-  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
-    next :: Chain es
-  , -- | @layout@ is the pipeline layout used to program the push constant
-    -- updates. If the
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-dynamicPipelineLayout dynamicPipelineLayout>
-    -- feature is enabled, @layout@ /can/ be
-    -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' and the layout /must/ be
-    -- specified by chaining
-    -- 'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo' structure off
-    -- the @pNext@
-    layout :: 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.
-    stageFlags :: 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 ()
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PushConstantsInfoKHR (es :: [Type]))
-#endif
-deriving instance Show (Chain es) => Show (PushConstantsInfoKHR es)
-
-instance Extensible PushConstantsInfoKHR where
-  extensibleTypeName = "PushConstantsInfoKHR"
-  setNext PushConstantsInfoKHR{..} next' = PushConstantsInfoKHR{next = next', ..}
-  getNext PushConstantsInfoKHR{..} = next
-  extends :: forall e b proxy. Typeable e => proxy e -> (Extends PushConstantsInfoKHR e => b) -> Maybe b
-  extends _ f
-    | Just Refl <- eqT @e @PipelineLayoutCreateInfo = Just f
-    | otherwise = Nothing
-
-instance ( Extendss PushConstantsInfoKHR es
-         , PokeChain es ) => ToCStruct (PushConstantsInfoKHR es) where
-  withCStruct x f = allocaBytes 48 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PushConstantsInfoKHR{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PUSH_CONSTANTS_INFO_KHR)
-    pNext'' <- fmap castPtr . ContT $ withChain (next)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
-    lift $ poke ((p `plusPtr` 16 :: Ptr PipelineLayout)) (layout)
-    lift $ poke ((p `plusPtr` 24 :: Ptr ShaderStageFlags)) (stageFlags)
-    lift $ poke ((p `plusPtr` 28 :: Ptr Word32)) (offset)
-    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) (size)
-    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr ()))) (values)
-    lift $ f
-  cStructSize = 48
-  cStructAlignment = 8
-  pokeZeroCStruct p f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PUSH_CONSTANTS_INFO_KHR)
-    pNext' <- fmap castPtr . ContT $ withZeroChain @es
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
-    lift $ poke ((p `plusPtr` 24 :: Ptr ShaderStageFlags)) (zero)
-    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) (zero)
-    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr ()))) (zero)
-    lift $ f
-
-instance ( Extendss PushConstantsInfoKHR es
-         , PeekChain es ) => FromCStruct (PushConstantsInfoKHR es) where
-  peekCStruct p = do
-    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
-    next <- peekChain (castPtr pNext)
-    layout <- peek @PipelineLayout ((p `plusPtr` 16 :: Ptr PipelineLayout))
-    stageFlags <- peek @ShaderStageFlags ((p `plusPtr` 24 :: Ptr ShaderStageFlags))
-    offset <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))
-    size <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))
-    pValues <- peek @(Ptr ()) ((p `plusPtr` 40 :: Ptr (Ptr ())))
-    pure $ PushConstantsInfoKHR
-             next layout stageFlags offset size pValues
-
-instance es ~ '[] => Zero (PushConstantsInfoKHR es) where
-  zero = PushConstantsInfoKHR
-           ()
-           zero
-           zero
-           zero
-           zero
-           zero
-
-
--- | VkPushDescriptorSetInfoKHR - Structure specifying a descriptor set push
--- operation
---
--- = Description
---
--- If @stageFlags@ specifies a subset of all stages corresponding to one or
--- more pipeline bind points, the binding operation still affects all
--- stages corresponding to the given pipeline bind point(s) as if the
--- equivalent original version of this command had been called with the
--- same parameters. For example, specifying a @stageFlags@ value of
--- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' |
--- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' |
--- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT' is
--- equivalent to calling the original version of this command once with
--- 'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS' and
--- once with
--- 'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_COMPUTE'.
---
--- == Valid Usage
---
--- -   #VUID-VkPushDescriptorSetInfoKHR-set-00364# @set@ /must/ be less
---     than
---     'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo'::@setLayoutCount@
---     provided when @layout@ was created
---
--- -   #VUID-VkPushDescriptorSetInfoKHR-set-00365# @set@ /must/ be the
---     unique set number in the pipeline layout that uses a descriptor set
---     layout that was created with
---     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR'
---
--- -   #VUID-VkPushDescriptorSetInfoKHR-pDescriptorWrites-06494# For each
---     element i where @pDescriptorWrites@[i].@descriptorType@ is
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLER',
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER',
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',
---     or
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT',
---     @pDescriptorWrites@[i].@pImageInfo@ /must/ be a valid pointer to an
---     array of @pDescriptorWrites@[i].@descriptorCount@ valid
---     'Vulkan.Core10.DescriptorSet.DescriptorImageInfo' structures
---
--- -   #VUID-VkPushDescriptorSetInfoKHR-None-09495# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicPipelineLayout dynamicPipelineLayout>
---     feature is not enabled, @layout@ /must/ be a valid
---     'Vulkan.Core10.Handles.PipelineLayout' handle
---
--- -   #VUID-VkPushDescriptorSetInfoKHR-layout-09496# If @layout@ is
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', the @pNext@ chain /must/
---     include a valid
---     'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo' structure
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkPushDescriptorSetInfoKHR-sType-sType# @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_INFO_KHR'
---
--- -   #VUID-VkPushDescriptorSetInfoKHR-pNext-pNext# @pNext@ /must/ be
---     @NULL@ or a pointer to a valid instance of
---     'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo'
---
--- -   #VUID-VkPushDescriptorSetInfoKHR-sType-unique# The @sType@ value of
---     each struct in the @pNext@ chain /must/ be unique
---
--- -   #VUID-VkPushDescriptorSetInfoKHR-stageFlags-parameter# @stageFlags@
---     /must/ be a valid combination of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits' values
---
--- -   #VUID-VkPushDescriptorSetInfoKHR-stageFlags-requiredbitmask#
---     @stageFlags@ /must/ not be @0@
---
--- -   #VUID-VkPushDescriptorSetInfoKHR-layout-parameter# If @layout@ is
---     not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @layout@ /must/ be a
---     valid 'Vulkan.Core10.Handles.PipelineLayout' handle
---
--- -   #VUID-VkPushDescriptorSetInfoKHR-pDescriptorWrites-parameter#
---     @pDescriptorWrites@ /must/ be a valid pointer to an array of
---     @descriptorWriteCount@ valid
---     'Vulkan.Core10.DescriptorSet.WriteDescriptorSet' structures
---
--- -   #VUID-VkPushDescriptorSetInfoKHR-descriptorWriteCount-arraylength#
---     @descriptorWriteCount@ /must/ be greater than @0@
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance6 VK_KHR_maintenance6>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_push_descriptor VK_KHR_push_descriptor>,
--- 'Vulkan.Core10.Handles.PipelineLayout',
--- 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlags',
--- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'Vulkan.Core10.DescriptorSet.WriteDescriptorSet',
--- 'cmdPushDescriptorSet2KHR'
-data PushDescriptorSetInfoKHR (es :: [Type]) = PushDescriptorSetInfoKHR
-  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
-    next :: Chain es
-  , -- | @stageFlags@ is a bitmask of
-    -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits' specifying
-    -- the shader stages that will use the descriptors.
-    stageFlags :: ShaderStageFlags
-  , -- | @layout@ is a 'Vulkan.Core10.Handles.PipelineLayout' object used to
-    -- program the bindings. If the
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-dynamicPipelineLayout dynamicPipelineLayout>
-    -- feature is enabled, @layout@ /can/ be
-    -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' and the layout /must/ be
-    -- specified by chaining
-    -- 'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo' structure off
-    -- the @pNext@
-    layout :: PipelineLayout
-  , -- | @set@ is the set number of the descriptor set in the pipeline layout
-    -- that will be updated.
-    set :: Word32
-  , -- | @pDescriptorWrites@ is a pointer to an array of
-    -- 'Vulkan.Core10.DescriptorSet.WriteDescriptorSet' structures describing
-    -- the descriptors to be updated.
-    descriptorWrites :: Vector (SomeStruct WriteDescriptorSet)
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PushDescriptorSetInfoKHR (es :: [Type]))
-#endif
-deriving instance Show (Chain es) => Show (PushDescriptorSetInfoKHR es)
-
-instance Extensible PushDescriptorSetInfoKHR where
-  extensibleTypeName = "PushDescriptorSetInfoKHR"
-  setNext PushDescriptorSetInfoKHR{..} next' = PushDescriptorSetInfoKHR{next = next', ..}
-  getNext PushDescriptorSetInfoKHR{..} = next
-  extends :: forall e b proxy. Typeable e => proxy e -> (Extends PushDescriptorSetInfoKHR e => b) -> Maybe b
-  extends _ f
-    | Just Refl <- eqT @e @PipelineLayoutCreateInfo = Just f
-    | otherwise = Nothing
-
-instance ( Extendss PushDescriptorSetInfoKHR es
-         , PokeChain es ) => ToCStruct (PushDescriptorSetInfoKHR es) where
-  withCStruct x f = allocaBytes 48 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PushDescriptorSetInfoKHR{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_INFO_KHR)
-    pNext'' <- fmap castPtr . ContT $ withChain (next)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
-    lift $ poke ((p `plusPtr` 16 :: Ptr ShaderStageFlags)) (stageFlags)
-    lift $ poke ((p `plusPtr` 24 :: Ptr PipelineLayout)) (layout)
-    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) (set)
-    lift $ poke ((p `plusPtr` 36 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (descriptorWrites)) :: Word32))
-    pPDescriptorWrites' <- ContT $ allocaBytes @(WriteDescriptorSet _) ((Data.Vector.length (descriptorWrites)) * 64)
-    Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPDescriptorWrites' `plusPtr` (64 * (i)) :: Ptr (WriteDescriptorSet _))) (e) . ($ ())) (descriptorWrites)
-    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr (WriteDescriptorSet _)))) (pPDescriptorWrites')
-    lift $ f
-  cStructSize = 48
-  cStructAlignment = 8
-  pokeZeroCStruct p f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_INFO_KHR)
-    pNext' <- fmap castPtr . ContT $ withZeroChain @es
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
-    lift $ poke ((p `plusPtr` 16 :: Ptr ShaderStageFlags)) (zero)
-    lift $ f
-
-instance ( Extendss PushDescriptorSetInfoKHR es
-         , PeekChain es ) => FromCStruct (PushDescriptorSetInfoKHR es) where
-  peekCStruct p = do
-    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
-    next <- peekChain (castPtr pNext)
-    stageFlags <- peek @ShaderStageFlags ((p `plusPtr` 16 :: Ptr ShaderStageFlags))
-    layout <- peek @PipelineLayout ((p `plusPtr` 24 :: Ptr PipelineLayout))
-    set <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))
-    descriptorWriteCount <- peek @Word32 ((p `plusPtr` 36 :: Ptr Word32))
-    pDescriptorWrites <- peek @(Ptr (WriteDescriptorSet _)) ((p `plusPtr` 40 :: Ptr (Ptr (WriteDescriptorSet _))))
-    pDescriptorWrites' <- generateM (fromIntegral descriptorWriteCount) (\i -> peekSomeCStruct (forgetExtensions ((pDescriptorWrites `advancePtrBytes` (64 * (i)) :: Ptr (WriteDescriptorSet _)))))
-    pure $ PushDescriptorSetInfoKHR
-             next stageFlags layout set pDescriptorWrites'
-
-instance es ~ '[] => Zero (PushDescriptorSetInfoKHR es) where
-  zero = PushDescriptorSetInfoKHR
-           ()
-           zero
-           zero
-           zero
-           mempty
-
-
--- | VkPushDescriptorSetWithTemplateInfoKHR - Structure specifying a
--- descriptor set push operation using a descriptor update template
---
--- == Valid Usage
---
--- -   #VUID-VkPushDescriptorSetWithTemplateInfoKHR-commandBuffer-00366#
---     The @pipelineBindPoint@ specified during the creation of the
---     descriptor update template /must/ be supported by the
---     @commandBuffer@’s parent 'Vulkan.Core10.Handles.CommandPool'’s queue
---     family
---
--- -   #VUID-VkPushDescriptorSetWithTemplateInfoKHR-pData-01686# @pData@
---     /must/ be a valid pointer to a memory containing one or more valid
---     instances of 'Vulkan.Core10.DescriptorSet.DescriptorImageInfo',
---     'Vulkan.Core10.DescriptorSet.DescriptorBufferInfo', or
---     'Vulkan.Core10.Handles.BufferView' in a layout defined by
---     @descriptorUpdateTemplate@ when it was created with
---     'Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template.createDescriptorUpdateTemplate'
---
--- -   #VUID-VkPushDescriptorSetWithTemplateInfoKHR-layout-07993# @layout@
---     /must/ be compatible with the layout used to create
---     @descriptorUpdateTemplate@
---
--- -   #VUID-VkPushDescriptorSetWithTemplateInfoKHR-descriptorUpdateTemplate-07994#
---     @descriptorUpdateTemplate@ /must/ have been created with a
---     @templateType@ of
---     'Vulkan.Core11.Enums.DescriptorUpdateTemplateType.DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR'
---
--- -   #VUID-VkPushDescriptorSetWithTemplateInfoKHR-set-07995# @set@ /must/
---     be the same value used to create @descriptorUpdateTemplate@
---
--- -   #VUID-VkPushDescriptorSetWithTemplateInfoKHR-set-07304# @set@ /must/
---     be less than
---     'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo'::@setLayoutCount@
---     provided when @layout@ was created
---
--- -   #VUID-VkPushDescriptorSetWithTemplateInfoKHR-set-07305# @set@ /must/
---     be the unique set number in the pipeline layout that uses a
---     descriptor set layout that was created with
---     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR'
---
--- -   #VUID-VkPushDescriptorSetWithTemplateInfoKHR-None-09495# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicPipelineLayout dynamicPipelineLayout>
---     feature is not enabled, @layout@ /must/ be a valid
---     'Vulkan.Core10.Handles.PipelineLayout' handle
---
--- -   #VUID-VkPushDescriptorSetWithTemplateInfoKHR-layout-09496# If
---     @layout@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', the @pNext@
---     chain /must/ include a valid
---     'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo' structure
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkPushDescriptorSetWithTemplateInfoKHR-sType-sType# @sType@
---     /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO_KHR'
---
--- -   #VUID-VkPushDescriptorSetWithTemplateInfoKHR-pNext-pNext# @pNext@
---     /must/ be @NULL@ or a pointer to a valid instance of
---     'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo'
---
--- -   #VUID-VkPushDescriptorSetWithTemplateInfoKHR-sType-unique# The
---     @sType@ value of each struct in the @pNext@ chain /must/ be unique
---
--- -   #VUID-VkPushDescriptorSetWithTemplateInfoKHR-descriptorUpdateTemplate-parameter#
---     @descriptorUpdateTemplate@ /must/ be a valid
---     'Vulkan.Core11.Handles.DescriptorUpdateTemplate' handle
---
--- -   #VUID-VkPushDescriptorSetWithTemplateInfoKHR-layout-parameter# If
---     @layout@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @layout@
---     /must/ be a valid 'Vulkan.Core10.Handles.PipelineLayout' handle
---
--- -   #VUID-VkPushDescriptorSetWithTemplateInfoKHR-pData-parameter#
---     @pData@ /must/ be a pointer value
---
--- -   #VUID-VkPushDescriptorSetWithTemplateInfoKHR-commonparent# Both of
---     @descriptorUpdateTemplate@, and @layout@ 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_maintenance6 VK_KHR_maintenance6>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_push_descriptor VK_KHR_push_descriptor>,
--- 'Vulkan.Core11.Handles.DescriptorUpdateTemplate',
--- 'Vulkan.Core10.Handles.PipelineLayout',
--- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'cmdPushDescriptorSetWithTemplate2KHR'
-data PushDescriptorSetWithTemplateInfoKHR (es :: [Type]) = PushDescriptorSetWithTemplateInfoKHR
-  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
-    next :: Chain es
-  , -- | @descriptorUpdateTemplate@ is a descriptor update template defining how
-    -- to interpret the descriptor information in @pData@.
-    descriptorUpdateTemplate :: DescriptorUpdateTemplate
-  , -- | @layout@ is a 'Vulkan.Core10.Handles.PipelineLayout' object used to
-    -- program the bindings. It /must/ be compatible with the layout used to
-    -- create the @descriptorUpdateTemplate@ handle. If the
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-dynamicPipelineLayout dynamicPipelineLayout>
-    -- feature is enabled, @layout@ /can/ be
-    -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' and the layout /must/ be
-    -- specified by chaining
-    -- 'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo' structure off
-    -- the @pNext@
-    layout :: PipelineLayout
-  , -- | @set@ is the set number of the descriptor set in the pipeline layout
-    -- that will be updated. This /must/ be the same number used to create the
-    -- @descriptorUpdateTemplate@ handle.
-    set :: Word32
-  , -- | @pData@ is a pointer to memory containing descriptors for the templated
-    -- update.
-    data' :: Ptr ()
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PushDescriptorSetWithTemplateInfoKHR (es :: [Type]))
-#endif
-deriving instance Show (Chain es) => Show (PushDescriptorSetWithTemplateInfoKHR es)
-
-instance Extensible PushDescriptorSetWithTemplateInfoKHR where
-  extensibleTypeName = "PushDescriptorSetWithTemplateInfoKHR"
-  setNext PushDescriptorSetWithTemplateInfoKHR{..} next' = PushDescriptorSetWithTemplateInfoKHR{next = next', ..}
-  getNext PushDescriptorSetWithTemplateInfoKHR{..} = next
-  extends :: forall e b proxy. Typeable e => proxy e -> (Extends PushDescriptorSetWithTemplateInfoKHR e => b) -> Maybe b
-  extends _ f
-    | Just Refl <- eqT @e @PipelineLayoutCreateInfo = Just f
-    | otherwise = Nothing
-
-instance ( Extendss PushDescriptorSetWithTemplateInfoKHR es
-         , PokeChain es ) => ToCStruct (PushDescriptorSetWithTemplateInfoKHR es) where
-  withCStruct x f = allocaBytes 48 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PushDescriptorSetWithTemplateInfoKHR{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO_KHR)
-    pNext'' <- fmap castPtr . ContT $ withChain (next)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
-    lift $ poke ((p `plusPtr` 16 :: Ptr DescriptorUpdateTemplate)) (descriptorUpdateTemplate)
-    lift $ poke ((p `plusPtr` 24 :: Ptr PipelineLayout)) (layout)
-    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) (set)
-    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr ()))) (data')
-    lift $ f
-  cStructSize = 48
-  cStructAlignment = 8
-  pokeZeroCStruct p f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO_KHR)
-    pNext' <- fmap castPtr . ContT $ withZeroChain @es
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
-    lift $ poke ((p `plusPtr` 16 :: Ptr DescriptorUpdateTemplate)) (zero)
-    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr ()))) (zero)
-    lift $ f
-
-instance ( Extendss PushDescriptorSetWithTemplateInfoKHR es
-         , PeekChain es ) => FromCStruct (PushDescriptorSetWithTemplateInfoKHR es) where
-  peekCStruct p = do
-    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
-    next <- peekChain (castPtr pNext)
-    descriptorUpdateTemplate <- peek @DescriptorUpdateTemplate ((p `plusPtr` 16 :: Ptr DescriptorUpdateTemplate))
-    layout <- peek @PipelineLayout ((p `plusPtr` 24 :: Ptr PipelineLayout))
-    set <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))
-    pData <- peek @(Ptr ()) ((p `plusPtr` 40 :: Ptr (Ptr ())))
-    pure $ PushDescriptorSetWithTemplateInfoKHR
-             next descriptorUpdateTemplate layout set pData
-
-instance es ~ '[] => Zero (PushDescriptorSetWithTemplateInfoKHR es) where
-  zero = PushDescriptorSetWithTemplateInfoKHR
-           ()
-           zero
-           zero
-           zero
-           zero
-
-
--- | VkSetDescriptorBufferOffsetsInfoEXT - Structure specifying descriptor
--- buffer offsets to set in a command buffer
---
--- = Description
---
--- If @stageFlags@ specifies a subset of all stages corresponding to one or
--- more pipeline bind points, the binding operation still affects all
--- stages corresponding to the given pipeline bind point(s) as if the
--- equivalent original version of this command had been called with the
--- same parameters. For example, specifying a @stageFlags@ value of
--- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' |
--- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' |
--- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT' is
--- equivalent to calling the original version of this command once with
--- 'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS' and
--- once with
--- 'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_COMPUTE'.
---
--- == Valid Usage
---
--- -   #VUID-VkSetDescriptorBufferOffsetsInfoEXT-pOffsets-08061# The
---     offsets in @pOffsets@ /must/ be aligned to
---     'Vulkan.Extensions.VK_EXT_descriptor_buffer.PhysicalDeviceDescriptorBufferPropertiesEXT'::@descriptorBufferOffsetAlignment@
---
--- -   #VUID-VkSetDescriptorBufferOffsetsInfoEXT-pOffsets-08063# The
---     offsets in @pOffsets@ /must/ be small enough such that any
---     descriptor binding referenced by @layout@ without the
---     'Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT'
---     flag computes a valid address inside the underlying
---     'Vulkan.Core10.Handles.Buffer'
---
--- -   #VUID-VkSetDescriptorBufferOffsetsInfoEXT-pOffsets-08126# The
---     offsets in @pOffsets@ /must/ be small enough such that any location
---     accessed by a shader as a sampler descriptor /must/ be within
---     'Vulkan.Extensions.VK_EXT_descriptor_buffer.PhysicalDeviceDescriptorBufferPropertiesEXT'::@maxSamplerDescriptorBufferRange@
---     of the sampler descriptor buffer binding
---
--- -   #VUID-VkSetDescriptorBufferOffsetsInfoEXT-pOffsets-08127# The
---     offsets in @pOffsets@ /must/ be small enough such that any location
---     accessed by a shader as a resource descriptor /must/ be within
---     'Vulkan.Extensions.VK_EXT_descriptor_buffer.PhysicalDeviceDescriptorBufferPropertiesEXT'::@maxResourceDescriptorBufferRange@
---     of the resource descriptor buffer binding
---
--- -   #VUID-VkSetDescriptorBufferOffsetsInfoEXT-pBufferIndices-08064# Each
---     element of @pBufferIndices@ /must/ be less than
---     'Vulkan.Extensions.VK_EXT_descriptor_buffer.PhysicalDeviceDescriptorBufferPropertiesEXT'::@maxDescriptorBufferBindings@
---
--- -   #VUID-VkSetDescriptorBufferOffsetsInfoEXT-pBufferIndices-08065# Each
---     element of @pBufferIndices@ /must/ reference a valid descriptor
---     buffer binding set by a previous call to
---     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdBindDescriptorBuffersEXT'
---     in @commandBuffer@
---
--- -   #VUID-VkSetDescriptorBufferOffsetsInfoEXT-firstSet-08066# The sum of
---     @firstSet@ and @setCount@ /must/ be less than or equal to
---     'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo'::@setLayoutCount@
---     provided when @layout@ was created
---
--- -   #VUID-VkSetDescriptorBufferOffsetsInfoEXT-firstSet-09006# The
---     'Vulkan.Core10.Handles.DescriptorSetLayout' for each set from
---     @firstSet@ to @firstSet@ + @setCount@ when @layout@ was created
---     /must/ have been created with the
---     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---     bit set
---
--- -   #VUID-VkSetDescriptorBufferOffsetsInfoEXT-None-09495# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicPipelineLayout dynamicPipelineLayout>
---     feature is not enabled, @layout@ /must/ be a valid
---     'Vulkan.Core10.Handles.PipelineLayout' handle
---
--- -   #VUID-VkSetDescriptorBufferOffsetsInfoEXT-layout-09496# If @layout@
---     is 'Vulkan.Core10.APIConstants.NULL_HANDLE', the @pNext@ chain
---     /must/ include a valid
---     'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo' structure
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkSetDescriptorBufferOffsetsInfoEXT-sType-sType# @sType@
---     /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SET_DESCRIPTOR_BUFFER_OFFSETS_INFO_EXT'
---
--- -   #VUID-VkSetDescriptorBufferOffsetsInfoEXT-pNext-pNext# @pNext@
---     /must/ be @NULL@ or a pointer to a valid instance of
---     'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo'
---
--- -   #VUID-VkSetDescriptorBufferOffsetsInfoEXT-sType-unique# The @sType@
---     value of each struct in the @pNext@ chain /must/ be unique
---
--- -   #VUID-VkSetDescriptorBufferOffsetsInfoEXT-stageFlags-parameter#
---     @stageFlags@ /must/ be a valid combination of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits' values
---
--- -   #VUID-VkSetDescriptorBufferOffsetsInfoEXT-stageFlags-requiredbitmask#
---     @stageFlags@ /must/ not be @0@
---
--- -   #VUID-VkSetDescriptorBufferOffsetsInfoEXT-layout-parameter# If
---     @layout@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @layout@
---     /must/ be a valid 'Vulkan.Core10.Handles.PipelineLayout' handle
---
--- -   #VUID-VkSetDescriptorBufferOffsetsInfoEXT-pBufferIndices-parameter#
---     @pBufferIndices@ /must/ be a valid pointer to an array of @setCount@
---     @uint32_t@ values
---
--- -   #VUID-VkSetDescriptorBufferOffsetsInfoEXT-pOffsets-parameter#
---     @pOffsets@ /must/ be a valid pointer to an array of @setCount@
---     'Vulkan.Core10.FundamentalTypes.DeviceSize' values
---
--- -   #VUID-VkSetDescriptorBufferOffsetsInfoEXT-setCount-arraylength#
---     @setCount@ /must/ be greater than @0@
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_buffer VK_EXT_descriptor_buffer>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance6 VK_KHR_maintenance6>,
--- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
--- 'Vulkan.Core10.Handles.PipelineLayout',
--- 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlags',
--- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'cmdSetDescriptorBufferOffsets2EXT'
-data SetDescriptorBufferOffsetsInfoEXT (es :: [Type]) = SetDescriptorBufferOffsetsInfoEXT
-  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
-    next :: Chain es
-  , -- | @stageFlags@ is a bitmask of
-    -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits' specifying
-    -- the shader stages the descriptor sets will be bound to
-    stageFlags :: ShaderStageFlags
-  , -- | @layout@ is a 'Vulkan.Core10.Handles.PipelineLayout' object used to
-    -- program the bindings. If the
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-dynamicPipelineLayout dynamicPipelineLayout>
-    -- feature is enabled, @layout@ /can/ be
-    -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' and the layout /must/ be
-    -- specified by chaining
-    -- 'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo' structure off
-    -- the @pNext@
-    layout :: PipelineLayout
-  , -- | @firstSet@ is the number of the first set to be bound.
-    firstSet :: Word32
-  , -- | @pBufferIndices@ is a pointer to an array of indices into the descriptor
-    -- buffer binding points set by
-    -- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdBindDescriptorBuffersEXT'.
-    bufferIndices :: Vector Word32
-  , -- | @pOffsets@ is a pointer to an array of
-    -- 'Vulkan.Core10.FundamentalTypes.DeviceSize' offsets to apply to the
-    -- bound descriptor buffers.
-    offsets :: Vector DeviceSize
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (SetDescriptorBufferOffsetsInfoEXT (es :: [Type]))
-#endif
-deriving instance Show (Chain es) => Show (SetDescriptorBufferOffsetsInfoEXT es)
-
-instance Extensible SetDescriptorBufferOffsetsInfoEXT where
-  extensibleTypeName = "SetDescriptorBufferOffsetsInfoEXT"
-  setNext SetDescriptorBufferOffsetsInfoEXT{..} next' = SetDescriptorBufferOffsetsInfoEXT{next = next', ..}
-  getNext SetDescriptorBufferOffsetsInfoEXT{..} = next
-  extends :: forall e b proxy. Typeable e => proxy e -> (Extends SetDescriptorBufferOffsetsInfoEXT e => b) -> Maybe b
-  extends _ f
-    | Just Refl <- eqT @e @PipelineLayoutCreateInfo = Just f
-    | otherwise = Nothing
-
-instance ( Extendss SetDescriptorBufferOffsetsInfoEXT es
-         , PokeChain es ) => ToCStruct (SetDescriptorBufferOffsetsInfoEXT es) where
-  withCStruct x f = allocaBytes 56 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p SetDescriptorBufferOffsetsInfoEXT{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SET_DESCRIPTOR_BUFFER_OFFSETS_INFO_EXT)
-    pNext'' <- fmap castPtr . ContT $ withChain (next)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
-    lift $ poke ((p `plusPtr` 16 :: Ptr ShaderStageFlags)) (stageFlags)
-    lift $ poke ((p `plusPtr` 24 :: Ptr PipelineLayout)) (layout)
-    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) (firstSet)
-    let pBufferIndicesLength = Data.Vector.length $ (bufferIndices)
-    lift $ unless ((Data.Vector.length $ (offsets)) == pBufferIndicesLength) $
-      throwIO $ IOError Nothing InvalidArgument "" "pOffsets and pBufferIndices must have the same length" Nothing Nothing
-    lift $ poke ((p `plusPtr` 36 :: Ptr Word32)) ((fromIntegral pBufferIndicesLength :: Word32))
-    pPBufferIndices' <- ContT $ allocaBytes @Word32 ((Data.Vector.length (bufferIndices)) * 4)
-    lift $ Data.Vector.imapM_ (\i e -> poke (pPBufferIndices' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (bufferIndices)
-    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr Word32))) (pPBufferIndices')
-    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 $ poke ((p `plusPtr` 48 :: Ptr (Ptr DeviceSize))) (pPOffsets')
-    lift $ f
-  cStructSize = 56
-  cStructAlignment = 8
-  pokeZeroCStruct p f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SET_DESCRIPTOR_BUFFER_OFFSETS_INFO_EXT)
-    pNext' <- fmap castPtr . ContT $ withZeroChain @es
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
-    lift $ poke ((p `plusPtr` 16 :: Ptr ShaderStageFlags)) (zero)
-    lift $ f
-
-instance ( Extendss SetDescriptorBufferOffsetsInfoEXT es
-         , PeekChain es ) => FromCStruct (SetDescriptorBufferOffsetsInfoEXT es) where
-  peekCStruct p = do
-    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
-    next <- peekChain (castPtr pNext)
-    stageFlags <- peek @ShaderStageFlags ((p `plusPtr` 16 :: Ptr ShaderStageFlags))
-    layout <- peek @PipelineLayout ((p `plusPtr` 24 :: Ptr PipelineLayout))
-    firstSet <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))
-    setCount <- peek @Word32 ((p `plusPtr` 36 :: Ptr Word32))
-    pBufferIndices <- peek @(Ptr Word32) ((p `plusPtr` 40 :: Ptr (Ptr Word32)))
-    pBufferIndices' <- generateM (fromIntegral setCount) (\i -> peek @Word32 ((pBufferIndices `advancePtrBytes` (4 * (i)) :: Ptr Word32)))
-    pOffsets <- peek @(Ptr DeviceSize) ((p `plusPtr` 48 :: Ptr (Ptr DeviceSize)))
-    pOffsets' <- generateM (fromIntegral setCount) (\i -> peek @DeviceSize ((pOffsets `advancePtrBytes` (8 * (i)) :: Ptr DeviceSize)))
-    pure $ SetDescriptorBufferOffsetsInfoEXT
-             next stageFlags layout firstSet pBufferIndices' pOffsets'
-
-instance es ~ '[] => Zero (SetDescriptorBufferOffsetsInfoEXT es) where
-  zero = SetDescriptorBufferOffsetsInfoEXT
-           ()
-           zero
-           zero
-           zero
-           mempty
-           mempty
-
-
--- | VkBindDescriptorBufferEmbeddedSamplersInfoEXT - Structure specifying
--- embedded immutable sampler offsets to set in a command buffer
---
--- = Description
---
--- If @stageFlags@ specifies a subset of all stages corresponding to one or
--- more pipeline bind points, the binding operation still affects all
--- stages corresponding to the given pipeline bind point(s) as if the
--- equivalent original version of this command had been called with the
--- same parameters. For example, specifying a @stageFlags@ value of
--- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' |
--- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' |
--- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT' is
--- equivalent to calling the original version of this command once with
--- 'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS' and
--- once with
--- 'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_COMPUTE'.
---
--- == Valid Usage
---
--- -   #VUID-VkBindDescriptorBufferEmbeddedSamplersInfoEXT-set-08070# The
---     'Vulkan.Core10.Handles.DescriptorSetLayout' at index @set@ when
---     @layout@ was created /must/ have been created with the
---     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_EMBEDDED_IMMUTABLE_SAMPLERS_BIT_EXT'
---     bit set
---
--- -   #VUID-VkBindDescriptorBufferEmbeddedSamplersInfoEXT-set-08071# @set@
---     /must/ be less than or equal to
---     'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo'::@setLayoutCount@
---     provided when @layout@ was created
---
--- -   #VUID-VkBindDescriptorBufferEmbeddedSamplersInfoEXT-None-09495# If
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicPipelineLayout dynamicPipelineLayout>
---     feature is not enabled, @layout@ /must/ be a valid
---     'Vulkan.Core10.Handles.PipelineLayout' handle
---
--- -   #VUID-VkBindDescriptorBufferEmbeddedSamplersInfoEXT-layout-09496# If
---     @layout@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', the @pNext@
---     chain /must/ include a valid
---     'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo' structure
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkBindDescriptorBufferEmbeddedSamplersInfoEXT-sType-sType#
---     @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BIND_DESCRIPTOR_BUFFER_EMBEDDED_SAMPLERS_INFO_EXT'
---
--- -   #VUID-VkBindDescriptorBufferEmbeddedSamplersInfoEXT-pNext-pNext#
---     @pNext@ /must/ be @NULL@ or a pointer to a valid instance of
---     'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo'
---
--- -   #VUID-VkBindDescriptorBufferEmbeddedSamplersInfoEXT-sType-unique#
---     The @sType@ value of each struct in the @pNext@ chain /must/ be
---     unique
---
--- -   #VUID-VkBindDescriptorBufferEmbeddedSamplersInfoEXT-stageFlags-parameter#
---     @stageFlags@ /must/ be a valid combination of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits' values
---
--- -   #VUID-VkBindDescriptorBufferEmbeddedSamplersInfoEXT-stageFlags-requiredbitmask#
---     @stageFlags@ /must/ not be @0@
---
--- -   #VUID-VkBindDescriptorBufferEmbeddedSamplersInfoEXT-layout-parameter#
---     If @layout@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
---     @layout@ /must/ be a valid 'Vulkan.Core10.Handles.PipelineLayout'
---     handle
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_buffer VK_EXT_descriptor_buffer>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance6 VK_KHR_maintenance6>,
--- 'Vulkan.Core10.Handles.PipelineLayout',
--- 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlags',
--- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'cmdBindDescriptorBufferEmbeddedSamplers2EXT'
-data BindDescriptorBufferEmbeddedSamplersInfoEXT (es :: [Type]) = BindDescriptorBufferEmbeddedSamplersInfoEXT
-  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
-    next :: Chain es
-  , -- | @stageFlags@ is a bitmask of
-    -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits' specifying
-    -- the shader stages that will use the embedded immutable samplers.
-    stageFlags :: ShaderStageFlags
-  , -- | @layout@ is a 'Vulkan.Core10.Handles.PipelineLayout' object used to
-    -- program the bindings. If the
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-dynamicPipelineLayout dynamicPipelineLayout>
-    -- feature is enabled, @layout@ /can/ be
-    -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' and the layout /must/ be
-    -- specified by chaining
-    -- 'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo' structure off
-    -- the @pNext@
-    layout :: PipelineLayout
-  , -- | @set@ is the number of the set to be bound.
-    set :: Word32
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (BindDescriptorBufferEmbeddedSamplersInfoEXT (es :: [Type]))
-#endif
-deriving instance Show (Chain es) => Show (BindDescriptorBufferEmbeddedSamplersInfoEXT es)
-
-instance Extensible BindDescriptorBufferEmbeddedSamplersInfoEXT where
-  extensibleTypeName = "BindDescriptorBufferEmbeddedSamplersInfoEXT"
-  setNext BindDescriptorBufferEmbeddedSamplersInfoEXT{..} next' = BindDescriptorBufferEmbeddedSamplersInfoEXT{next = next', ..}
-  getNext BindDescriptorBufferEmbeddedSamplersInfoEXT{..} = next
-  extends :: forall e b proxy. Typeable e => proxy e -> (Extends BindDescriptorBufferEmbeddedSamplersInfoEXT e => b) -> Maybe b
-  extends _ f
-    | Just Refl <- eqT @e @PipelineLayoutCreateInfo = Just f
-    | otherwise = Nothing
-
-instance ( Extendss BindDescriptorBufferEmbeddedSamplersInfoEXT es
-         , PokeChain es ) => ToCStruct (BindDescriptorBufferEmbeddedSamplersInfoEXT es) where
-  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p BindDescriptorBufferEmbeddedSamplersInfoEXT{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BIND_DESCRIPTOR_BUFFER_EMBEDDED_SAMPLERS_INFO_EXT)
-    pNext'' <- fmap castPtr . ContT $ withChain (next)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
-    lift $ poke ((p `plusPtr` 16 :: Ptr ShaderStageFlags)) (stageFlags)
-    lift $ poke ((p `plusPtr` 24 :: Ptr PipelineLayout)) (layout)
-    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) (set)
-    lift $ f
-  cStructSize = 40
-  cStructAlignment = 8
-  pokeZeroCStruct p f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BIND_DESCRIPTOR_BUFFER_EMBEDDED_SAMPLERS_INFO_EXT)
-    pNext' <- fmap castPtr . ContT $ withZeroChain @es
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
-    lift $ poke ((p `plusPtr` 16 :: Ptr ShaderStageFlags)) (zero)
-    lift $ f
-
-instance ( Extendss BindDescriptorBufferEmbeddedSamplersInfoEXT es
-         , PeekChain es ) => FromCStruct (BindDescriptorBufferEmbeddedSamplersInfoEXT es) where
-  peekCStruct p = do
-    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
-    next <- peekChain (castPtr pNext)
-    stageFlags <- peek @ShaderStageFlags ((p `plusPtr` 16 :: Ptr ShaderStageFlags))
-    layout <- peek @PipelineLayout ((p `plusPtr` 24 :: Ptr PipelineLayout))
-    set <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))
-    pure $ BindDescriptorBufferEmbeddedSamplersInfoEXT
-             next stageFlags layout set
-
-instance es ~ '[] => Zero (BindDescriptorBufferEmbeddedSamplersInfoEXT es) where
-  zero = BindDescriptorBufferEmbeddedSamplersInfoEXT
-           ()
-           zero
-           zero
-           zero
+-- [__Deprecation State__]
+--
+--     -   /Promoted/ to
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.4-promotions Vulkan 1.4>
+--
+-- [__Contact__]
+--
+--     -   Jon Leech
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_maintenance6] @oddhack%0A*Here describe the issue or question you have about the VK_KHR_maintenance6 extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_KHR_maintenance6.adoc VK_KHR_maintenance6>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2023-08-03
+--
+-- [__Interactions and External Dependencies__]
+--
+--     -   Interacts with @VK_EXT_robustness2@
+--
+-- [__Contributors__]
+--
+--     -   Jon Leech, Khronos
+--
+--     -   Stu Smith, AMD
+--
+--     -   Mike Blumenkrantz, Valve
+--
+--     -   Ralph Potter, Samsung
+--
+--     -   James Fitzpatrick, Imagination Technologies
+--
+--     -   Piers Daniell, NVIDIA
+--
+--     -   Daniel Story, Nintendo
+--
+-- == Description
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance6 VK_KHR_maintenance6>
+-- adds a collection of minor features, none of which would warrant an
+-- entire extension of their own.
+--
+-- The new features are as follows:
+--
+-- -   'BindMemoryStatusKHR' may be included in the @pNext@ chain of
+--     'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindBufferMemoryInfo'
+--     and
+--     'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindImageMemoryInfo',
+--     allowing applications to identify individual resources for which
+--     memory binding failed during calls to
+--     'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.bindBufferMemory2'
+--     and
+--     'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.bindImageMemory2'.
+--
+-- -   A new property @fragmentShadingRateClampCombinerInputs@ to indicate
+--     if an implementation clamps the inputs to fragment shading rate
+--     combiner operations.
+--
+-- -   'Vulkan.Core10.APIConstants.NULL_HANDLE' is allowed to be used when
+--     binding an index buffer, instead of a valid
+--     'Vulkan.Core10.Handles.Buffer' handle. When the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-nullDescriptor nullDescriptor>
+--     feature is enabled, every index fetched results in a value of zero.
+--
+-- -   A new property @maxCombinedImageSamplerDescriptorCount@ to indicate
+--     the maximum number of descriptors needed for any of the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion formats that require a sampler Y′CBCR conversion>
+--     supported by the implementation.
+--
+-- -   A new property @blockTexelViewCompatibleMultipleLayers@ indicating
+--     whether
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT'
+--     is allowed to be used with @layerCount@ > 1
+--
+-- -   @pNext@ extensible *2 versions of all descriptor binding commands.
+--
+-- == New Commands
+--
+-- -   'cmdBindDescriptorSets2KHR'
+--
+-- -   'cmdPushConstants2KHR'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_buffer VK_EXT_descriptor_buffer>
+-- is supported:
+--
+-- -   'cmdBindDescriptorBufferEmbeddedSamplers2EXT'
+--
+-- -   'cmdSetDescriptorBufferOffsets2EXT'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_push_descriptor VK_KHR_push_descriptor>
+-- is supported:
+--
+-- -   'cmdPushDescriptorSet2KHR'
+--
+-- -   'cmdPushDescriptorSetWithTemplate2KHR'
+--
+-- == New Structures
+--
+-- -   'BindDescriptorSetsInfoKHR'
+--
+-- -   'PushConstantsInfoKHR'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindBufferMemoryInfo',
+--     'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindImageMemoryInfo':
+--
+--     -   'BindMemoryStatusKHR'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceMaintenance6FeaturesKHR'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDeviceMaintenance6PropertiesKHR'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_buffer VK_EXT_descriptor_buffer>
+-- is supported:
+--
+-- -   'BindDescriptorBufferEmbeddedSamplersInfoEXT'
+--
+-- -   'SetDescriptorBufferOffsetsInfoEXT'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_push_descriptor VK_KHR_push_descriptor>
+-- is supported:
+--
+-- -   'PushDescriptorSetInfoKHR'
+--
+-- -   'PushDescriptorSetWithTemplateInfoKHR'
+--
+-- == New Enum Constants
+--
+-- -   'KHR_MAINTENANCE_6_EXTENSION_NAME'
+--
+-- -   'KHR_MAINTENANCE_6_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'STRUCTURE_TYPE_BIND_DESCRIPTOR_SETS_INFO_KHR'
+--
+--     -   'STRUCTURE_TYPE_BIND_MEMORY_STATUS_KHR'
+--
+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES_KHR'
+--
+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES_KHR'
+--
+--     -   'STRUCTURE_TYPE_PUSH_CONSTANTS_INFO_KHR'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_buffer VK_EXT_descriptor_buffer>
+-- is supported:
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BIND_DESCRIPTOR_BUFFER_EMBEDDED_SAMPLERS_INFO_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SET_DESCRIPTOR_BUFFER_OFFSETS_INFO_EXT'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_push_descriptor VK_KHR_push_descriptor>
+-- is supported:
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_INFO_KHR'
+--
+--     -   'STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO_KHR'
+--
+-- == Promotion to Vulkan 1.4
+--
+-- Functionality in this extension is included in core Vulkan 1.4 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, 2023-08-01 (Jon Leech)
+--
+--     -   Initial revision
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_maintenance6 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_maintenance6  ( cmdSetDescriptorBufferOffsets2EXT
+                                              , cmdBindDescriptorBufferEmbeddedSamplers2EXT
+                                              , pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES_KHR
+                                              , pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES_KHR
+                                              , pattern STRUCTURE_TYPE_BIND_MEMORY_STATUS_KHR
+                                              , pattern STRUCTURE_TYPE_BIND_DESCRIPTOR_SETS_INFO_KHR
+                                              , pattern STRUCTURE_TYPE_PUSH_CONSTANTS_INFO_KHR
+                                              , pattern STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_INFO_KHR
+                                              , pattern STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO_KHR
+                                              , cmdBindDescriptorSets2KHR
+                                              , cmdPushConstants2KHR
+                                              , cmdPushDescriptorSet2KHR
+                                              , cmdPushDescriptorSetWithTemplate2KHR
+                                              , SetDescriptorBufferOffsetsInfoEXT(..)
+                                              , BindDescriptorBufferEmbeddedSamplersInfoEXT(..)
+                                              , PhysicalDeviceMaintenance6FeaturesKHR
+                                              , PhysicalDeviceMaintenance6PropertiesKHR
+                                              , BindMemoryStatusKHR
+                                              , BindDescriptorSetsInfoKHR
+                                              , PushConstantsInfoKHR
+                                              , PushDescriptorSetInfoKHR
+                                              , PushDescriptorSetWithTemplateInfoKHR
+                                              , KHR_MAINTENANCE_6_SPEC_VERSION
+                                              , pattern KHR_MAINTENANCE_6_SPEC_VERSION
+                                              , KHR_MAINTENANCE_6_EXTENSION_NAME
+                                              , pattern KHR_MAINTENANCE_6_EXTENSION_NAME
+                                              ) 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 (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(peek))
+import Foreign.Storable (Storable(poke))
+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.Core14.Promoted_From_VK_KHR_maintenance6 (cmdBindDescriptorSets2)
+import Vulkan.Core14.Promoted_From_VK_KHR_maintenance6 (cmdPushConstants2)
+import Vulkan.Core14.Promoted_From_VK_KHR_maintenance6 (cmdPushDescriptorSet2)
+import Vulkan.Core14.Promoted_From_VK_KHR_maintenance6 (cmdPushDescriptorSetWithTemplate2)
+import Vulkan.CStruct.Extends (forgetExtensions)
+import Vulkan.Core14.Promoted_From_VK_KHR_maintenance6 (BindDescriptorSetsInfo)
+import Vulkan.Core14.Promoted_From_VK_KHR_maintenance6 (BindMemoryStatus)
+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.Dynamic (DeviceCmds(pVkCmdBindDescriptorBufferEmbeddedSamplers2EXT))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdSetDescriptorBufferOffsets2EXT))
+import Vulkan.Core10.FundamentalTypes (DeviceSize)
+import Vulkan.CStruct.Extends (Extends)
+import Vulkan.CStruct.Extends (Extendss)
+import Vulkan.CStruct.Extends (Extensible(..))
+import Vulkan.CStruct.Extends (PeekChain)
+import Vulkan.CStruct.Extends (PeekChain(..))
+import Vulkan.Core14.Promoted_From_VK_KHR_maintenance6 (PhysicalDeviceMaintenance6Features)
+import Vulkan.Core14.Promoted_From_VK_KHR_maintenance6 (PhysicalDeviceMaintenance6Properties)
+import Vulkan.Core10.Handles (PipelineLayout)
+import {-# SOURCE #-} Vulkan.Core10.PipelineLayout (PipelineLayoutCreateInfo)
+import Vulkan.CStruct.Extends (PokeChain)
+import Vulkan.CStruct.Extends (PokeChain(..))
+import Vulkan.Core14.Promoted_From_VK_KHR_maintenance6 (PushConstantsInfo)
+import Vulkan.Core14.Promoted_From_VK_KHR_maintenance6 (PushDescriptorSetInfo)
+import Vulkan.Core14.Promoted_From_VK_KHR_maintenance6 (PushDescriptorSetWithTemplateInfo)
+import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)
+import Vulkan.CStruct.Extends (SomeStruct)
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_BIND_DESCRIPTOR_BUFFER_EMBEDDED_SAMPLERS_INFO_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_BIND_DESCRIPTOR_SETS_INFO))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_BIND_MEMORY_STATUS))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PUSH_CONSTANTS_INFO))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_INFO))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SET_DESCRIPTOR_BUFFER_OFFSETS_INFO_EXT))
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdSetDescriptorBufferOffsets2EXT
+  :: FunPtr (Ptr CommandBuffer_T -> Ptr (SomeStruct SetDescriptorBufferOffsetsInfoEXT) -> IO ()) -> Ptr CommandBuffer_T -> Ptr (SomeStruct SetDescriptorBufferOffsetsInfoEXT) -> IO ()
+
+-- | vkCmdSetDescriptorBufferOffsets2EXT - Setting descriptor buffer offsets
+-- in a command buffer
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdSetDescriptorBufferOffsets2EXT-commandBuffer-11295# If
+--     @commandBuffer@ is a secondary command buffer, it /must/ have begun
+--     with
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.CommandBufferInheritanceDescriptorHeapInfoEXT'::@pSamplerHeapBindInfo@
+--     equal to @NULL@
+--
+-- -   #VUID-vkCmdSetDescriptorBufferOffsets2EXT-commandBuffer-11296# If
+--     @commandBuffer@ is a secondary command buffer, it /must/ have begun
+--     with
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.CommandBufferInheritanceDescriptorHeapInfoEXT'::@pResourceHeapBindInfo@
+--     equal to @NULL@
+--
+-- -   #VUID-vkCmdSetDescriptorBufferOffsets2EXT-descriptorBuffer-09470#
+--     The
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-descriptorBuffer descriptorBuffer>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdSetDescriptorBufferOffsets2EXT-pSetDescriptorBufferOffsetsInfo-09471#
+--     Each bit in @pSetDescriptorBufferOffsetsInfo->stageFlags@ /must/ be
+--     a stage supported by the @commandBuffer@’s parent
+--     'Vulkan.Core10.Handles.CommandPool'’s queue family
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdSetDescriptorBufferOffsets2EXT-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdSetDescriptorBufferOffsets2EXT-pSetDescriptorBufferOffsetsInfo-parameter#
+--     @pSetDescriptorBufferOffsetsInfo@ /must/ be a valid pointer to a
+--     valid 'SetDescriptorBufferOffsetsInfoEXT' structure
+--
+-- -   #VUID-vkCmdSetDescriptorBufferOffsets2EXT-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-vkCmdSetDescriptorBufferOffsets2EXT-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT',
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_DATA_GRAPH_BIT_ARM', or
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
+--
+-- -   #VUID-vkCmdSetDescriptorBufferOffsets2EXT-videocoding# This command
+--     /must/ only be called outside of a video coding scope
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | State                                                                                                                                  |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | VK_QUEUE_DATA_GRAPH_BIT_ARM                                                                                           |                                                                                                                                        |
+-- |                                                                                                                            |                                                                                                                        |                                                                                                                             | VK_QUEUE_GRAPHICS_BIT                                                                                                 |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdSetDescriptorBufferOffsets2EXT is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_buffer VK_EXT_descriptor_buffer>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance6 VK_KHR_maintenance6>,
+-- 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'SetDescriptorBufferOffsetsInfoEXT'
+cmdSetDescriptorBufferOffsets2EXT :: forall a io
+                                   . ( Extendss SetDescriptorBufferOffsetsInfoEXT a
+                                     , PokeChain a
+                                     , MonadIO io )
+                                  => -- | @commandBuffer@ is the command buffer in which the descriptor buffer
+                                     -- offsets will be set.
+                                     CommandBuffer
+                                  -> -- | @pSetDescriptorBufferOffsetsInfo@ is a pointer to a
+                                     -- 'SetDescriptorBufferOffsetsInfoEXT' structure.
+                                     (SetDescriptorBufferOffsetsInfoEXT a)
+                                  -> io ()
+cmdSetDescriptorBufferOffsets2EXT commandBuffer
+                                    setDescriptorBufferOffsetsInfo = liftIO . evalContT $ do
+  let vkCmdSetDescriptorBufferOffsets2EXTPtr = pVkCmdSetDescriptorBufferOffsets2EXT (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdSetDescriptorBufferOffsets2EXTPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetDescriptorBufferOffsets2EXT is null" Nothing Nothing
+  let vkCmdSetDescriptorBufferOffsets2EXT' = mkVkCmdSetDescriptorBufferOffsets2EXT vkCmdSetDescriptorBufferOffsets2EXTPtr
+  pSetDescriptorBufferOffsetsInfo <- ContT $ withCStruct (setDescriptorBufferOffsetsInfo)
+  lift $ traceAroundEvent "vkCmdSetDescriptorBufferOffsets2EXT" (vkCmdSetDescriptorBufferOffsets2EXT'
+                                                                   (commandBufferHandle (commandBuffer))
+                                                                   (forgetExtensions pSetDescriptorBufferOffsetsInfo))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdBindDescriptorBufferEmbeddedSamplers2EXT
+  :: FunPtr (Ptr CommandBuffer_T -> Ptr (SomeStruct BindDescriptorBufferEmbeddedSamplersInfoEXT) -> IO ()) -> Ptr CommandBuffer_T -> Ptr (SomeStruct BindDescriptorBufferEmbeddedSamplersInfoEXT) -> IO ()
+
+-- | vkCmdBindDescriptorBufferEmbeddedSamplers2EXT - Setting embedded
+-- immutable samplers offsets in a command buffer
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdBindDescriptorBufferEmbeddedSamplers2EXT-commandBuffer-11295#
+--     If @commandBuffer@ is a secondary command buffer, it /must/ have
+--     begun with
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.CommandBufferInheritanceDescriptorHeapInfoEXT'::@pSamplerHeapBindInfo@
+--     equal to @NULL@
+--
+-- -   #VUID-vkCmdBindDescriptorBufferEmbeddedSamplers2EXT-commandBuffer-11296#
+--     If @commandBuffer@ is a secondary command buffer, it /must/ have
+--     begun with
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.CommandBufferInheritanceDescriptorHeapInfoEXT'::@pResourceHeapBindInfo@
+--     equal to @NULL@
+--
+-- -   #VUID-vkCmdBindDescriptorBufferEmbeddedSamplers2EXT-descriptorBuffer-09472#
+--     The
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-descriptorBuffer descriptorBuffer>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdBindDescriptorBufferEmbeddedSamplers2EXT-pBindDescriptorBufferEmbeddedSamplersInfo-09473#
+--     Each bit in @pBindDescriptorBufferEmbeddedSamplersInfo->stageFlags@
+--     /must/ be a stage supported by the @commandBuffer@’s parent
+--     'Vulkan.Core10.Handles.CommandPool'’s queue family
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdBindDescriptorBufferEmbeddedSamplers2EXT-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdBindDescriptorBufferEmbeddedSamplers2EXT-pBindDescriptorBufferEmbeddedSamplersInfo-parameter#
+--     @pBindDescriptorBufferEmbeddedSamplersInfo@ /must/ be a valid
+--     pointer to a valid 'BindDescriptorBufferEmbeddedSamplersInfoEXT'
+--     structure
+--
+-- -   #VUID-vkCmdBindDescriptorBufferEmbeddedSamplers2EXT-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-vkCmdBindDescriptorBufferEmbeddedSamplers2EXT-commandBuffer-cmdpool#
+--     The 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', or
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
+--
+-- -   #VUID-vkCmdBindDescriptorBufferEmbeddedSamplers2EXT-videocoding#
+--     This command /must/ only be called outside of a video coding scope
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | State                                                                                                                                  |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | VK_QUEUE_GRAPHICS_BIT                                                                                                 |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdBindDescriptorBufferEmbeddedSamplers2EXT is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_buffer VK_EXT_descriptor_buffer>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance6 VK_KHR_maintenance6>,
+-- 'BindDescriptorBufferEmbeddedSamplersInfoEXT',
+-- 'Vulkan.Core10.Handles.CommandBuffer'
+cmdBindDescriptorBufferEmbeddedSamplers2EXT :: forall a io
+                                             . ( Extendss BindDescriptorBufferEmbeddedSamplersInfoEXT a
+                                               , PokeChain a
+                                               , MonadIO io )
+                                            => -- | @commandBuffer@ is the command buffer that the embedded immutable
+                                               -- samplers will be bound to.
+                                               CommandBuffer
+                                            -> -- | @pBindDescriptorBufferEmbeddedSamplersInfo@ is a pointer to a
+                                               -- 'BindDescriptorBufferEmbeddedSamplersInfoEXT' structure.
+                                               (BindDescriptorBufferEmbeddedSamplersInfoEXT a)
+                                            -> io ()
+cmdBindDescriptorBufferEmbeddedSamplers2EXT commandBuffer
+                                              bindDescriptorBufferEmbeddedSamplersInfo = liftIO . evalContT $ do
+  let vkCmdBindDescriptorBufferEmbeddedSamplers2EXTPtr = pVkCmdBindDescriptorBufferEmbeddedSamplers2EXT (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdBindDescriptorBufferEmbeddedSamplers2EXTPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdBindDescriptorBufferEmbeddedSamplers2EXT is null" Nothing Nothing
+  let vkCmdBindDescriptorBufferEmbeddedSamplers2EXT' = mkVkCmdBindDescriptorBufferEmbeddedSamplers2EXT vkCmdBindDescriptorBufferEmbeddedSamplers2EXTPtr
+  pBindDescriptorBufferEmbeddedSamplersInfo <- ContT $ withCStruct (bindDescriptorBufferEmbeddedSamplersInfo)
+  lift $ traceAroundEvent "vkCmdBindDescriptorBufferEmbeddedSamplers2EXT" (vkCmdBindDescriptorBufferEmbeddedSamplers2EXT'
+                                                                             (commandBufferHandle (commandBuffer))
+                                                                             (forgetExtensions pBindDescriptorBufferEmbeddedSamplersInfo))
+  pure $ ()
+
+
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES
+
+
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES
+
+
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_BIND_MEMORY_STATUS_KHR"
+pattern STRUCTURE_TYPE_BIND_MEMORY_STATUS_KHR = STRUCTURE_TYPE_BIND_MEMORY_STATUS
+
+
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_BIND_DESCRIPTOR_SETS_INFO_KHR"
+pattern STRUCTURE_TYPE_BIND_DESCRIPTOR_SETS_INFO_KHR = STRUCTURE_TYPE_BIND_DESCRIPTOR_SETS_INFO
+
+
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PUSH_CONSTANTS_INFO_KHR"
+pattern STRUCTURE_TYPE_PUSH_CONSTANTS_INFO_KHR = STRUCTURE_TYPE_PUSH_CONSTANTS_INFO
+
+
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_INFO_KHR"
+pattern STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_INFO_KHR = STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_INFO
+
+
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO_KHR"
+pattern STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO_KHR = STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO
+
+
+-- No documentation found for TopLevel "vkCmdBindDescriptorSets2KHR"
+cmdBindDescriptorSets2KHR = cmdBindDescriptorSets2
+
+
+-- No documentation found for TopLevel "vkCmdPushConstants2KHR"
+cmdPushConstants2KHR = cmdPushConstants2
+
+
+-- No documentation found for TopLevel "vkCmdPushDescriptorSet2KHR"
+cmdPushDescriptorSet2KHR = cmdPushDescriptorSet2
+
+
+-- No documentation found for TopLevel "vkCmdPushDescriptorSetWithTemplate2KHR"
+cmdPushDescriptorSetWithTemplate2KHR = cmdPushDescriptorSetWithTemplate2
+
+
+-- | VkSetDescriptorBufferOffsetsInfoEXT - Structure specifying descriptor
+-- buffer offsets to set in a command buffer
+--
+-- = Description
+--
+-- If @stageFlags@ specifies a subset of all stages corresponding to one or
+-- more pipeline bind points, the binding operation still affects all
+-- stages corresponding to the given pipeline bind point(s) as if the
+-- equivalent original version of this command had been called with the
+-- same parameters. For example, specifying a @stageFlags@ value of
+-- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' |
+-- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' |
+-- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT' is
+-- equivalent to calling the original version of this command once with
+-- 'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS' and
+-- once with
+-- 'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_COMPUTE'.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkSetDescriptorBufferOffsetsInfoEXT-pOffsets-08061# The
+--     offsets in @pOffsets@ /must/ be aligned to
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.PhysicalDeviceDescriptorBufferPropertiesEXT'::@descriptorBufferOffsetAlignment@
+--
+-- -   #VUID-VkSetDescriptorBufferOffsetsInfoEXT-pOffsets-08063# The
+--     offsets in @pOffsets@ /must/ be small enough such that any
+--     descriptor binding referenced by @layout@ without the
+--     'Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT'
+--     flag computes a valid address inside the underlying
+--     'Vulkan.Core10.Handles.Buffer'
+--
+-- -   #VUID-VkSetDescriptorBufferOffsetsInfoEXT-pOffsets-08126# The
+--     offsets in @pOffsets@ /must/ be small enough such that any location
+--     accessed by a shader as a sampler descriptor /must/ be within
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.PhysicalDeviceDescriptorBufferPropertiesEXT'::@maxSamplerDescriptorBufferRange@
+--     of the sampler descriptor buffer binding
+--
+-- -   #VUID-VkSetDescriptorBufferOffsetsInfoEXT-pOffsets-08127# The
+--     offsets in @pOffsets@ /must/ be small enough such that any location
+--     accessed by a shader as a resource descriptor /must/ be within
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.PhysicalDeviceDescriptorBufferPropertiesEXT'::@maxResourceDescriptorBufferRange@
+--     of the resource descriptor buffer binding
+--
+-- -   #VUID-VkSetDescriptorBufferOffsetsInfoEXT-pBufferIndices-08064# Each
+--     element of @pBufferIndices@ /must/ be less than
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.PhysicalDeviceDescriptorBufferPropertiesEXT'::@maxDescriptorBufferBindings@
+--
+-- -   #VUID-VkSetDescriptorBufferOffsetsInfoEXT-pBufferIndices-08065# Each
+--     element of @pBufferIndices@ /must/ reference a valid descriptor
+--     buffer binding set by a previous call to
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdBindDescriptorBuffersEXT'
+--     in @commandBuffer@
+--
+-- -   #VUID-VkSetDescriptorBufferOffsetsInfoEXT-firstSet-08066# The sum of
+--     @firstSet@ and @setCount@ /must/ be less than or equal to
+--     'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo'::@setLayoutCount@
+--     provided when @layout@ was created
+--
+-- -   #VUID-VkSetDescriptorBufferOffsetsInfoEXT-firstSet-09006# The
+--     'Vulkan.Core10.Handles.DescriptorSetLayout' for each set from
+--     @firstSet@ to @firstSet@ + @setCount@ when @layout@ was created
+--     /must/ have been created with the
+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--     bit set
+--
+-- -   #VUID-VkSetDescriptorBufferOffsetsInfoEXT-firstSet-11803# The
+--     'Vulkan.Core10.Handles.DescriptorSetLayout' for each set from
+--     @firstSet@ to @firstSet@ + @setCount@ when @layout@ was created
+--     /must/ not have been created with the
+--     'Vulkan.Extensions.VK_KHR_push_descriptor.DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR'
+--     bit set
+--
+-- -   #VUID-VkSetDescriptorBufferOffsetsInfoEXT-firstSet-11804# The
+--     'Vulkan.Core10.Handles.DescriptorSetLayout' for each set from
+--     @firstSet@ to @firstSet@ + @setCount@ when @layout@ was created
+--     /must/ not have been created with the
+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_EMBEDDED_IMMUTABLE_SAMPLERS_BIT_EXT'
+--     bit set
+--
+-- -   #VUID-VkSetDescriptorBufferOffsetsInfoEXT-None-09495# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicPipelineLayout dynamicPipelineLayout>
+--     feature is not enabled, @layout@ /must/ be a valid
+--     'Vulkan.Core10.Handles.PipelineLayout' handle
+--
+-- -   #VUID-VkSetDescriptorBufferOffsetsInfoEXT-layout-09496# If @layout@
+--     is 'Vulkan.Core10.APIConstants.NULL_HANDLE', the @pNext@ chain
+--     /must/ include a valid
+--     'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo' structure
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkSetDescriptorBufferOffsetsInfoEXT-sType-sType# @sType@
+--     /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SET_DESCRIPTOR_BUFFER_OFFSETS_INFO_EXT'
+--
+-- -   #VUID-VkSetDescriptorBufferOffsetsInfoEXT-pNext-pNext# @pNext@
+--     /must/ be @NULL@ or a pointer to a valid instance of
+--     'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo'
+--
+-- -   #VUID-VkSetDescriptorBufferOffsetsInfoEXT-sType-unique# The @sType@
+--     value of each structure in the @pNext@ chain /must/ be unique
+--
+-- -   #VUID-VkSetDescriptorBufferOffsetsInfoEXT-stageFlags-parameter#
+--     @stageFlags@ /must/ be a valid combination of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits' values
+--
+-- -   #VUID-VkSetDescriptorBufferOffsetsInfoEXT-stageFlags-requiredbitmask#
+--     @stageFlags@ /must/ not be @0@
+--
+-- -   #VUID-VkSetDescriptorBufferOffsetsInfoEXT-layout-parameter# If
+--     @layout@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @layout@
+--     /must/ be a valid 'Vulkan.Core10.Handles.PipelineLayout' handle
+--
+-- -   #VUID-VkSetDescriptorBufferOffsetsInfoEXT-pBufferIndices-parameter#
+--     @pBufferIndices@ /must/ be a valid pointer to an array of @setCount@
+--     @uint32_t@ values
+--
+-- -   #VUID-VkSetDescriptorBufferOffsetsInfoEXT-pOffsets-parameter#
+--     @pOffsets@ /must/ be a valid pointer to an array of @setCount@
+--     'Vulkan.Core10.FundamentalTypes.DeviceSize' values
+--
+-- -   #VUID-VkSetDescriptorBufferOffsetsInfoEXT-setCount-arraylength#
+--     @setCount@ /must/ be greater than @0@
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_buffer VK_EXT_descriptor_buffer>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance6 VK_KHR_maintenance6>,
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
+-- 'Vulkan.Core10.Handles.PipelineLayout',
+-- 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlags',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'cmdSetDescriptorBufferOffsets2EXT'
+data SetDescriptorBufferOffsetsInfoEXT (es :: [Type]) = SetDescriptorBufferOffsetsInfoEXT
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
+    next :: Chain es
+  , -- | @stageFlags@ is a bitmask of
+    -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits' specifying
+    -- the shader stages the descriptor sets will be bound to
+    stageFlags :: ShaderStageFlags
+  , -- | @layout@ is a 'Vulkan.Core10.Handles.PipelineLayout' object used to
+    -- program the bindings. If the
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-dynamicPipelineLayout dynamicPipelineLayout>
+    -- feature is enabled, @layout@ /can/ be
+    -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' and the layout /must/ be
+    -- specified by chaining
+    -- 'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo' structure off
+    -- the @pNext@
+    layout :: PipelineLayout
+  , -- | @firstSet@ is the number of the first set to be bound.
+    firstSet :: Word32
+  , -- | @pBufferIndices@ is a pointer to an array of indices into the descriptor
+    -- buffer binding points set by
+    -- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdBindDescriptorBuffersEXT'.
+    bufferIndices :: Vector Word32
+  , -- | @pOffsets@ is a pointer to an array of
+    -- 'Vulkan.Core10.FundamentalTypes.DeviceSize' offsets to apply to the
+    -- bound descriptor buffers.
+    offsets :: Vector DeviceSize
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (SetDescriptorBufferOffsetsInfoEXT (es :: [Type]))
+#endif
+deriving instance Show (Chain es) => Show (SetDescriptorBufferOffsetsInfoEXT es)
+
+instance Extensible SetDescriptorBufferOffsetsInfoEXT where
+  extensibleTypeName = "SetDescriptorBufferOffsetsInfoEXT"
+  setNext SetDescriptorBufferOffsetsInfoEXT{..} next' = SetDescriptorBufferOffsetsInfoEXT{next = next', ..}
+  getNext SetDescriptorBufferOffsetsInfoEXT{..} = next
+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends SetDescriptorBufferOffsetsInfoEXT e => b) -> Maybe b
+  extends _ f
+    | Just Refl <- eqT @e @PipelineLayoutCreateInfo = Just f
+    | otherwise = Nothing
+
+instance ( Extendss SetDescriptorBufferOffsetsInfoEXT es
+         , PokeChain es ) => ToCStruct (SetDescriptorBufferOffsetsInfoEXT es) where
+  withCStruct x f = allocaBytes 56 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p SetDescriptorBufferOffsetsInfoEXT{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SET_DESCRIPTOR_BUFFER_OFFSETS_INFO_EXT)
+    pNext'' <- fmap castPtr . ContT $ withChain (next)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
+    lift $ poke ((p `plusPtr` 16 :: Ptr ShaderStageFlags)) (stageFlags)
+    lift $ poke ((p `plusPtr` 24 :: Ptr PipelineLayout)) (layout)
+    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) (firstSet)
+    let pBufferIndicesLength = Data.Vector.length $ (bufferIndices)
+    lift $ unless ((Data.Vector.length $ (offsets)) == pBufferIndicesLength) $
+      throwIO $ IOError Nothing InvalidArgument "" "pOffsets and pBufferIndices must have the same length" Nothing Nothing
+    lift $ poke ((p `plusPtr` 36 :: Ptr Word32)) ((fromIntegral pBufferIndicesLength :: Word32))
+    pPBufferIndices' <- ContT $ allocaBytes @Word32 ((Data.Vector.length (bufferIndices)) * 4)
+    lift $ Data.Vector.imapM_ (\i e -> poke (pPBufferIndices' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (bufferIndices)
+    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr Word32))) (pPBufferIndices')
+    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 $ poke ((p `plusPtr` 48 :: Ptr (Ptr DeviceSize))) (pPOffsets')
+    lift $ f
+  cStructSize = 56
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SET_DESCRIPTOR_BUFFER_OFFSETS_INFO_EXT)
+    pNext' <- fmap castPtr . ContT $ withZeroChain @es
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
+    lift $ poke ((p `plusPtr` 16 :: Ptr ShaderStageFlags)) (zero)
+    lift $ f
+
+instance ( Extendss SetDescriptorBufferOffsetsInfoEXT es
+         , PeekChain es ) => FromCStruct (SetDescriptorBufferOffsetsInfoEXT es) where
+  peekCStruct p = do
+    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
+    next <- peekChain (castPtr pNext)
+    stageFlags <- peek @ShaderStageFlags ((p `plusPtr` 16 :: Ptr ShaderStageFlags))
+    layout <- peek @PipelineLayout ((p `plusPtr` 24 :: Ptr PipelineLayout))
+    firstSet <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))
+    setCount <- peek @Word32 ((p `plusPtr` 36 :: Ptr Word32))
+    pBufferIndices <- peek @(Ptr Word32) ((p `plusPtr` 40 :: Ptr (Ptr Word32)))
+    pBufferIndices' <- generateM (fromIntegral setCount) (\i -> peek @Word32 ((pBufferIndices `advancePtrBytes` (4 * (i)) :: Ptr Word32)))
+    pOffsets <- peek @(Ptr DeviceSize) ((p `plusPtr` 48 :: Ptr (Ptr DeviceSize)))
+    pOffsets' <- generateM (fromIntegral setCount) (\i -> peek @DeviceSize ((pOffsets `advancePtrBytes` (8 * (i)) :: Ptr DeviceSize)))
+    pure $ SetDescriptorBufferOffsetsInfoEXT
+             next stageFlags layout firstSet pBufferIndices' pOffsets'
+
+instance es ~ '[] => Zero (SetDescriptorBufferOffsetsInfoEXT es) where
+  zero = SetDescriptorBufferOffsetsInfoEXT
+           ()
+           zero
+           zero
+           zero
+           mempty
+           mempty
+
+
+-- | VkBindDescriptorBufferEmbeddedSamplersInfoEXT - Structure specifying
+-- embedded immutable sampler offsets to set in a command buffer
+--
+-- = Description
+--
+-- If @stageFlags@ specifies a subset of all stages corresponding to one or
+-- more pipeline bind points, the binding operation still affects all
+-- stages corresponding to the given pipeline bind point(s) as if the
+-- equivalent original version of this command had been called with the
+-- same parameters. For example, specifying a @stageFlags@ value of
+-- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' |
+-- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT' |
+-- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT' is
+-- equivalent to calling the original version of this command once with
+-- 'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS' and
+-- once with
+-- 'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_COMPUTE'.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkBindDescriptorBufferEmbeddedSamplersInfoEXT-set-08070# The
+--     'Vulkan.Core10.Handles.DescriptorSetLayout' at index @set@ when
+--     @layout@ was created /must/ have been created with the
+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_EMBEDDED_IMMUTABLE_SAMPLERS_BIT_EXT'
+--     bit set
+--
+-- -   #VUID-VkBindDescriptorBufferEmbeddedSamplersInfoEXT-set-08071# @set@
+--     /must/ be less than or equal to
+--     'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo'::@setLayoutCount@
+--     provided when @layout@ was created
+--
+-- -   #VUID-VkBindDescriptorBufferEmbeddedSamplersInfoEXT-None-09495# If
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicPipelineLayout dynamicPipelineLayout>
+--     feature is not enabled, @layout@ /must/ be a valid
+--     'Vulkan.Core10.Handles.PipelineLayout' handle
+--
+-- -   #VUID-VkBindDescriptorBufferEmbeddedSamplersInfoEXT-layout-09496# If
+--     @layout@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', the @pNext@
+--     chain /must/ include a valid
+--     'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo' structure
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkBindDescriptorBufferEmbeddedSamplersInfoEXT-sType-sType#
+--     @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BIND_DESCRIPTOR_BUFFER_EMBEDDED_SAMPLERS_INFO_EXT'
+--
+-- -   #VUID-VkBindDescriptorBufferEmbeddedSamplersInfoEXT-pNext-pNext#
+--     @pNext@ /must/ be @NULL@ or a pointer to a valid instance of
+--     'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo'
+--
+-- -   #VUID-VkBindDescriptorBufferEmbeddedSamplersInfoEXT-sType-unique#
+--     The @sType@ value of each structure in the @pNext@ chain /must/ be
+--     unique
+--
+-- -   #VUID-VkBindDescriptorBufferEmbeddedSamplersInfoEXT-stageFlags-parameter#
+--     @stageFlags@ /must/ be a valid combination of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits' values
+--
+-- -   #VUID-VkBindDescriptorBufferEmbeddedSamplersInfoEXT-stageFlags-requiredbitmask#
+--     @stageFlags@ /must/ not be @0@
+--
+-- -   #VUID-VkBindDescriptorBufferEmbeddedSamplersInfoEXT-layout-parameter#
+--     If @layout@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
+--     @layout@ /must/ be a valid 'Vulkan.Core10.Handles.PipelineLayout'
+--     handle
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_buffer VK_EXT_descriptor_buffer>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance6 VK_KHR_maintenance6>,
+-- 'Vulkan.Core10.Handles.PipelineLayout',
+-- 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlags',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'cmdBindDescriptorBufferEmbeddedSamplers2EXT'
+data BindDescriptorBufferEmbeddedSamplersInfoEXT (es :: [Type]) = BindDescriptorBufferEmbeddedSamplersInfoEXT
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
+    next :: Chain es
+  , -- | @stageFlags@ is a bitmask of
+    -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits' specifying
+    -- the shader stages that will use the embedded immutable samplers.
+    stageFlags :: ShaderStageFlags
+  , -- | @layout@ is a 'Vulkan.Core10.Handles.PipelineLayout' object used to
+    -- program the bindings. If the
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-dynamicPipelineLayout dynamicPipelineLayout>
+    -- feature is enabled, @layout@ /can/ be
+    -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' and the layout /must/ be
+    -- specified by chaining
+    -- 'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo' structure off
+    -- the @pNext@
+    layout :: PipelineLayout
+  , -- | @set@ is the number of the set to be bound.
+    set :: Word32
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (BindDescriptorBufferEmbeddedSamplersInfoEXT (es :: [Type]))
+#endif
+deriving instance Show (Chain es) => Show (BindDescriptorBufferEmbeddedSamplersInfoEXT es)
+
+instance Extensible BindDescriptorBufferEmbeddedSamplersInfoEXT where
+  extensibleTypeName = "BindDescriptorBufferEmbeddedSamplersInfoEXT"
+  setNext BindDescriptorBufferEmbeddedSamplersInfoEXT{..} next' = BindDescriptorBufferEmbeddedSamplersInfoEXT{next = next', ..}
+  getNext BindDescriptorBufferEmbeddedSamplersInfoEXT{..} = next
+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends BindDescriptorBufferEmbeddedSamplersInfoEXT e => b) -> Maybe b
+  extends _ f
+    | Just Refl <- eqT @e @PipelineLayoutCreateInfo = Just f
+    | otherwise = Nothing
+
+instance ( Extendss BindDescriptorBufferEmbeddedSamplersInfoEXT es
+         , PokeChain es ) => ToCStruct (BindDescriptorBufferEmbeddedSamplersInfoEXT es) where
+  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p BindDescriptorBufferEmbeddedSamplersInfoEXT{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BIND_DESCRIPTOR_BUFFER_EMBEDDED_SAMPLERS_INFO_EXT)
+    pNext'' <- fmap castPtr . ContT $ withChain (next)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
+    lift $ poke ((p `plusPtr` 16 :: Ptr ShaderStageFlags)) (stageFlags)
+    lift $ poke ((p `plusPtr` 24 :: Ptr PipelineLayout)) (layout)
+    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) (set)
+    lift $ f
+  cStructSize = 40
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BIND_DESCRIPTOR_BUFFER_EMBEDDED_SAMPLERS_INFO_EXT)
+    pNext' <- fmap castPtr . ContT $ withZeroChain @es
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
+    lift $ poke ((p `plusPtr` 16 :: Ptr ShaderStageFlags)) (zero)
+    lift $ f
+
+instance ( Extendss BindDescriptorBufferEmbeddedSamplersInfoEXT es
+         , PeekChain es ) => FromCStruct (BindDescriptorBufferEmbeddedSamplersInfoEXT es) where
+  peekCStruct p = do
+    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
+    next <- peekChain (castPtr pNext)
+    stageFlags <- peek @ShaderStageFlags ((p `plusPtr` 16 :: Ptr ShaderStageFlags))
+    layout <- peek @PipelineLayout ((p `plusPtr` 24 :: Ptr PipelineLayout))
+    set <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))
+    pure $ BindDescriptorBufferEmbeddedSamplersInfoEXT
+             next stageFlags layout set
+
+instance es ~ '[] => Zero (BindDescriptorBufferEmbeddedSamplersInfoEXT es) where
+  zero = BindDescriptorBufferEmbeddedSamplersInfoEXT
+           ()
+           zero
+           zero
+           zero
+
+
+-- No documentation found for TopLevel "VkPhysicalDeviceMaintenance6FeaturesKHR"
+type PhysicalDeviceMaintenance6FeaturesKHR = PhysicalDeviceMaintenance6Features
+
+
+-- No documentation found for TopLevel "VkPhysicalDeviceMaintenance6PropertiesKHR"
+type PhysicalDeviceMaintenance6PropertiesKHR = PhysicalDeviceMaintenance6Properties
+
+
+-- No documentation found for TopLevel "VkBindMemoryStatusKHR"
+type BindMemoryStatusKHR = BindMemoryStatus
+
+
+-- No documentation found for TopLevel "VkBindDescriptorSetsInfoKHR"
+type BindDescriptorSetsInfoKHR = BindDescriptorSetsInfo
+
+
+-- No documentation found for TopLevel "VkPushConstantsInfoKHR"
+type PushConstantsInfoKHR = PushConstantsInfo
+
+
+-- No documentation found for TopLevel "VkPushDescriptorSetInfoKHR"
+type PushDescriptorSetInfoKHR = PushDescriptorSetInfo
+
+
+-- No documentation found for TopLevel "VkPushDescriptorSetWithTemplateInfoKHR"
+type PushDescriptorSetWithTemplateInfoKHR = PushDescriptorSetWithTemplateInfo
 
 
 type KHR_MAINTENANCE_6_SPEC_VERSION = 1
diff --git a/src/Vulkan/Extensions/VK_KHR_maintenance6.hs-boot b/src/Vulkan/Extensions/VK_KHR_maintenance6.hs-boot
--- a/src/Vulkan/Extensions/VK_KHR_maintenance6.hs-boot
+++ b/src/Vulkan/Extensions/VK_KHR_maintenance6.hs-boot
@@ -29,6 +29,11 @@
 --
 --     -   Interacts with VK_KHR_push_descriptor
 --
+-- [__Deprecation State__]
+--
+--     -   /Promoted/ to
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.4-promotions Vulkan 1.4>
+--
 -- [__Contact__]
 --
 --     -   Jon Leech
@@ -87,12 +92,12 @@
 -- -   'Vulkan.Core10.APIConstants.NULL_HANDLE' is allowed to be used when
 --     binding an index buffer, instead of a valid
 --     'Vulkan.Core10.Handles.Buffer' handle. When the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-nullDescriptor nullDescriptor>
 --     feature is enabled, every index fetched results in a value of zero.
 --
 -- -   A new property @maxCombinedImageSamplerDescriptorCount@ to indicate
 --     the maximum number of descriptors needed for any of the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion formats that require a sampler Y′CBCR conversion>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion formats that require a sampler Y′CBCR conversion>
 --     supported by the implementation.
 --
 -- -   A new property @blockTexelViewCompatibleMultipleLayers@ indicating
@@ -171,15 +176,15 @@
 --
 -- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BIND_DESCRIPTOR_SETS_INFO_KHR'
+--     -   'STRUCTURE_TYPE_BIND_DESCRIPTOR_SETS_INFO_KHR'
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BIND_MEMORY_STATUS_KHR'
+--     -   'STRUCTURE_TYPE_BIND_MEMORY_STATUS_KHR'
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES_KHR'
+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES_KHR'
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES_KHR'
+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES_KHR'
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PUSH_CONSTANTS_INFO_KHR'
+--     -   'STRUCTURE_TYPE_PUSH_CONSTANTS_INFO_KHR'
 --
 -- If
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_buffer VK_EXT_descriptor_buffer>
@@ -197,13 +202,15 @@
 --
 -- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_INFO_KHR'
+--     -   'STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_INFO_KHR'
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO_KHR'
+--     -   'STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO_KHR'
 --
--- == Issues
+-- == Promotion to Vulkan 1.4
 --
--- None.
+-- Functionality in this extension is included in core Vulkan 1.4 with the
+-- KHR suffix omitted. The original type, enum, and command names are still
+-- available as aliases of the core functionality.
 --
 -- == Version History
 --
@@ -218,18 +225,11 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_maintenance6 Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_maintenance6 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_maintenance6  ( BindDescriptorBufferEmbeddedSamplersInfoEXT
-                                              , BindDescriptorSetsInfoKHR
-                                              , BindMemoryStatusKHR
-                                              , PhysicalDeviceMaintenance6FeaturesKHR
-                                              , PhysicalDeviceMaintenance6PropertiesKHR
-                                              , PushConstantsInfoKHR
-                                              , PushDescriptorSetInfoKHR
-                                              , PushDescriptorSetWithTemplateInfoKHR
                                               , SetDescriptorBufferOffsetsInfoEXT
                                               ) where
 
@@ -249,74 +249,6 @@
 
 instance ( Extendss BindDescriptorBufferEmbeddedSamplersInfoEXT es
          , PeekChain es ) => FromCStruct (BindDescriptorBufferEmbeddedSamplersInfoEXT es)
-
-
-type role BindDescriptorSetsInfoKHR nominal
-data BindDescriptorSetsInfoKHR (es :: [Type])
-
-instance ( Extendss BindDescriptorSetsInfoKHR es
-         , PokeChain es ) => ToCStruct (BindDescriptorSetsInfoKHR es)
-instance Show (Chain es) => Show (BindDescriptorSetsInfoKHR es)
-
-instance ( Extendss BindDescriptorSetsInfoKHR es
-         , PeekChain es ) => FromCStruct (BindDescriptorSetsInfoKHR es)
-
-
-data BindMemoryStatusKHR
-
-instance ToCStruct BindMemoryStatusKHR
-instance Show BindMemoryStatusKHR
-
-instance FromCStruct BindMemoryStatusKHR
-
-
-data PhysicalDeviceMaintenance6FeaturesKHR
-
-instance ToCStruct PhysicalDeviceMaintenance6FeaturesKHR
-instance Show PhysicalDeviceMaintenance6FeaturesKHR
-
-instance FromCStruct PhysicalDeviceMaintenance6FeaturesKHR
-
-
-data PhysicalDeviceMaintenance6PropertiesKHR
-
-instance ToCStruct PhysicalDeviceMaintenance6PropertiesKHR
-instance Show PhysicalDeviceMaintenance6PropertiesKHR
-
-instance FromCStruct PhysicalDeviceMaintenance6PropertiesKHR
-
-
-type role PushConstantsInfoKHR nominal
-data PushConstantsInfoKHR (es :: [Type])
-
-instance ( Extendss PushConstantsInfoKHR es
-         , PokeChain es ) => ToCStruct (PushConstantsInfoKHR es)
-instance Show (Chain es) => Show (PushConstantsInfoKHR es)
-
-instance ( Extendss PushConstantsInfoKHR es
-         , PeekChain es ) => FromCStruct (PushConstantsInfoKHR es)
-
-
-type role PushDescriptorSetInfoKHR nominal
-data PushDescriptorSetInfoKHR (es :: [Type])
-
-instance ( Extendss PushDescriptorSetInfoKHR es
-         , PokeChain es ) => ToCStruct (PushDescriptorSetInfoKHR es)
-instance Show (Chain es) => Show (PushDescriptorSetInfoKHR es)
-
-instance ( Extendss PushDescriptorSetInfoKHR es
-         , PeekChain es ) => FromCStruct (PushDescriptorSetInfoKHR es)
-
-
-type role PushDescriptorSetWithTemplateInfoKHR nominal
-data PushDescriptorSetWithTemplateInfoKHR (es :: [Type])
-
-instance ( Extendss PushDescriptorSetWithTemplateInfoKHR es
-         , PokeChain es ) => ToCStruct (PushDescriptorSetWithTemplateInfoKHR es)
-instance Show (Chain es) => Show (PushDescriptorSetWithTemplateInfoKHR es)
-
-instance ( Extendss PushDescriptorSetWithTemplateInfoKHR es
-         , PeekChain es ) => FromCStruct (PushDescriptorSetWithTemplateInfoKHR es)
 
 
 type role SetDescriptorBufferOffsetsInfoEXT nominal
diff --git a/src/Vulkan/Extensions/VK_KHR_maintenance7.hs b/src/Vulkan/Extensions/VK_KHR_maintenance7.hs
--- a/src/Vulkan/Extensions/VK_KHR_maintenance7.hs
+++ b/src/Vulkan/Extensions/VK_KHR_maintenance7.hs
@@ -165,7 +165,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_maintenance7 Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_maintenance7 Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -263,12 +263,22 @@
 -- 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. 'PhysicalDeviceMaintenance7FeaturesKHR' /can/ also be used in
--- the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceMaintenance7FeaturesKHR', it /must/ add an instance of
+-- the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance7 VK_KHR_maintenance7>,
@@ -357,8 +367,12 @@
 -- it is filled in with each corresponding implementation-dependent
 -- property.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance7 VK_KHR_maintenance7>,
@@ -374,9 +388,9 @@
     -- of the render area. If it is 'Vulkan.Core10.FundamentalTypes.TRUE' and
     -- the fragment shading rate attachment was created with
     -- 'Vulkan.Core10.ImageView.ImageSubresourceRange'::@baseMipLevel@ equal to
-    -- 0, the scaled size /can/ be smaller than the render area, and shading
-    -- rates for missing texels are defined by
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#textures-texel-replacement texel replacement for invalid texels>.
+    -- 0, the scaled size /can/ be smaller than the render area, with missing
+    -- shading rates defined by
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-execution-memory-access-bounds out of bounds behavior>.
     robustFragmentShadingRateAttachmentAccess :: Bool
   , -- | #limits-separateDepthStencilAttachmentAccess#
     -- @separateDepthStencilAttachmentAccess@ indicates support for writing to
@@ -386,10 +400,10 @@
     -- result in read-modify-write operations on the other aspect. If
     -- 'Vulkan.Core10.FundamentalTypes.FALSE', writes to one aspect /may/
     -- result in writes to the other aspect as defined by
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-load-operations render pass load operations>,
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-store-operations render pass store operations>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-load-operations render pass load operations>,
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-store-operations render pass store operations>
     -- and
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-resolve-operations render pass resolve operations>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-resolve-operations render pass resolve operations>.
     separateDepthStencilAttachmentAccess :: Bool
   , -- | #limits-maxDescriptorSetTotalUniformBuffersDynamic#
     -- @maxDescriptorSetTotalUniformBuffersDynamic@ is the maximum total count
@@ -400,7 +414,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-uniformbufferdynamic>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-uniformbufferdynamic>.
     maxDescriptorSetTotalUniformBuffersDynamic :: Word32
   , -- | #limits-maxDescriptorSetTotalStorageBuffersDynamic#
     -- @maxDescriptorSetTotalStorageBuffersDynamic@ is the maximum total count
@@ -411,7 +425,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storagebufferdynamic>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-storagebufferdynamic>.
     maxDescriptorSetTotalStorageBuffersDynamic :: Word32
   , -- | #limits-maxDescriptorSetTotalBuffersDynamic#
     -- @maxDescriptorSetTotalBuffersDynamic@ is the maximum total count of
@@ -536,12 +550,12 @@
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceProperties2')
 -- is returned in @layeredApiCount@. Otherwise, @layeredApiCount@ /must/ be
 -- set by the application to the number of elements in the @pLayeredApis@
--- array, and on return the variable is overwritten with the number of
--- values actually written to @pLayeredApis@. If the value of
--- @layeredApiCount@ is less than the number of layered implementations
--- underneath the Vulkan physical device, at most @layeredApiCount@ values
--- will be written to @pLayeredApis@. An implementation that is not a layer
--- will return 0 in @layeredApiCount@.
+-- array, and on return is overwritten with the number of values actually
+-- written to @pLayeredApis@. If the value of @layeredApiCount@ is less
+-- than the number of layered implementations underneath the Vulkan
+-- physical device, at most @layeredApiCount@ values will be written to
+-- @pLayeredApis@. An implementation that is not a layer will return 0 in
+-- @layeredApiCount@.
 --
 -- In the presence of multiple layered implementations, each element of
 -- @pLayeredApis@ corresponds to an API implementation that is implemented
@@ -568,6 +582,12 @@
 --     @pLayeredApis@ /must/ be a valid pointer to an array of
 --     @layeredApiCount@ 'PhysicalDeviceLayeredApiPropertiesKHR' structures
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance7 VK_KHR_maintenance7>,
@@ -646,7 +666,8 @@
 --     'PhysicalDeviceLayeredApiVulkanPropertiesKHR'
 --
 -- -   #VUID-VkPhysicalDeviceLayeredApiPropertiesKHR-sType-unique# The
---     @sType@ value of each struct in the @pNext@ chain /must/ be unique
+--     @sType@ value of each structure in the @pNext@ chain /must/ be
+--     unique
 --
 -- = See Also
 --
@@ -757,6 +778,12 @@
 --     @sType@ /must/ be
 --     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_VULKAN_PROPERTIES_KHR'
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'PhysicalDeviceLayeredApiPropertiesKHR'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance7 VK_KHR_maintenance7>,
@@ -803,6 +830,23 @@
 -- | VkPhysicalDeviceLayeredApiKHR - API implemented by the layered
 -- implementation
 --
+-- = Description
+--
+-- -   'PHYSICAL_DEVICE_LAYERED_API_VULKAN_KHR' - the device implements the
+--     Vulkan API.
+--
+-- -   'PHYSICAL_DEVICE_LAYERED_API_D3D12_KHR' - the device implements the
+--     D3D12 API.
+--
+-- -   'PHYSICAL_DEVICE_LAYERED_API_METAL_KHR' - the device implements the
+--     Metal API.
+--
+-- -   'PHYSICAL_DEVICE_LAYERED_API_OPENGL_KHR' - the device implements the
+--     OpenGL API.
+--
+-- -   'PHYSICAL_DEVICE_LAYERED_API_OPENGLES_KHR' - the device implements
+--     the OpenGL ES API.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance7 VK_KHR_maintenance7>,
@@ -810,24 +854,19 @@
 newtype PhysicalDeviceLayeredApiKHR = PhysicalDeviceLayeredApiKHR Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'PHYSICAL_DEVICE_LAYERED_API_VULKAN_KHR' - the device implements the
--- Vulkan API.
+-- No documentation found for Nested "VkPhysicalDeviceLayeredApiKHR" "VK_PHYSICAL_DEVICE_LAYERED_API_VULKAN_KHR"
 pattern PHYSICAL_DEVICE_LAYERED_API_VULKAN_KHR = PhysicalDeviceLayeredApiKHR 0
 
--- | 'PHYSICAL_DEVICE_LAYERED_API_D3D12_KHR' - the device implements the
--- D3D12 API.
+-- No documentation found for Nested "VkPhysicalDeviceLayeredApiKHR" "VK_PHYSICAL_DEVICE_LAYERED_API_D3D12_KHR"
 pattern PHYSICAL_DEVICE_LAYERED_API_D3D12_KHR = PhysicalDeviceLayeredApiKHR 1
 
--- | 'PHYSICAL_DEVICE_LAYERED_API_METAL_KHR' - the device implements the
--- Metal API.
+-- No documentation found for Nested "VkPhysicalDeviceLayeredApiKHR" "VK_PHYSICAL_DEVICE_LAYERED_API_METAL_KHR"
 pattern PHYSICAL_DEVICE_LAYERED_API_METAL_KHR = PhysicalDeviceLayeredApiKHR 2
 
--- | 'PHYSICAL_DEVICE_LAYERED_API_OPENGL_KHR' - the device implements the
--- OpenGL API.
+-- No documentation found for Nested "VkPhysicalDeviceLayeredApiKHR" "VK_PHYSICAL_DEVICE_LAYERED_API_OPENGL_KHR"
 pattern PHYSICAL_DEVICE_LAYERED_API_OPENGL_KHR = PhysicalDeviceLayeredApiKHR 3
 
--- | 'PHYSICAL_DEVICE_LAYERED_API_OPENGLES_KHR' - the device implements the
--- OpenGL ES API.
+-- No documentation found for Nested "VkPhysicalDeviceLayeredApiKHR" "VK_PHYSICAL_DEVICE_LAYERED_API_OPENGLES_KHR"
 pattern PHYSICAL_DEVICE_LAYERED_API_OPENGLES_KHR = PhysicalDeviceLayeredApiKHR 4
 
 {-# COMPLETE
diff --git a/src/Vulkan/Extensions/VK_KHR_maintenance7.hs-boot b/src/Vulkan/Extensions/VK_KHR_maintenance7.hs-boot
--- a/src/Vulkan/Extensions/VK_KHR_maintenance7.hs-boot
+++ b/src/Vulkan/Extensions/VK_KHR_maintenance7.hs-boot
@@ -165,7 +165,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_maintenance7 Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_maintenance7 Vulkan Specification>.
 --
 -- This 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_maintenance8.hs b/src/Vulkan/Extensions/VK_KHR_maintenance8.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_KHR_maintenance8.hs
@@ -0,0 +1,446 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_KHR_maintenance8 - device extension
+--
+-- = VK_KHR_maintenance8
+--
+-- [__Name String__]
+--     @VK_KHR_maintenance8@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     575
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
+--
+-- [__Contact__]
+--
+--     -   Mike Blumenkrantz
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_maintenance8] @zmike%0A*Here describe the issue or question you have about the VK_KHR_maintenance8 extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_KHR_maintenance8.adoc VK_KHR_maintenance8>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2025-01-07
+--
+-- [__Interactions and External Dependencies__; __Contributors__]
+--
+--     -   Jon Leech, Khronos
+--
+--     -   Mike Blumenkrantz, Valve
+--
+--     -   Spencer Fricke, LunarG
+--
+--     -   Jan-Harald Fredriksen, ARM
+--
+--     -   Piers Daniell, NVIDIA
+--
+--     -   Matthew Netsch, Qualcomm
+--
+--     -   Ricardo Garcia, Igalia
+--
+--     -   Lionel Landwerlin, Intel
+--
+--     -   Rick Hammerstone, Qualcomm
+--
+--     -   Daniel Story, Nintendo
+--
+--     -   Hans-Kristian Arntzen, Valve
+--
+--     -   Caterina Shablia, Collabora
+--
+--     -   Georg Lehmann, Valve
+--
+--     -   Shahbaz Youssefi, Google
+--
+--     -   Tobias Hector, AMD
+--
+-- == Description
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance8 VK_KHR_maintenance8>
+-- adds a collection of minor features, none of which would warrant an
+-- entire extension of their own.
+--
+-- The new features are as follows:
+--
+-- -   Allow copies between depth\/stencil and “matching” color attachments
+--
+-- -   Allow @dstCache@ in
+--     'Vulkan.Core10.PipelineCache.mergePipelineCaches' to be implicitly
+--     synchronized.
+--
+-- -   Require src\/dst sync scopes to work when doing queue family
+--     ownership transfers
+--
+-- -   Support @Offset@ (as an alternative to @ConstOffset@) image operand
+--     in texture sampling and fetch operations
+--
+-- -   Use the SPIR-V definition of @OpSRem@ and @OpSMod@, making these
+--     operations produce well-defined results for negative operands
+--
+-- -   Loosen layer restrictions when blitting from 3D images to other
+--     image types
+--
+-- -   Add space for an additional 64 access flags for use with
+--     VkMemoryBarrier2, VkBufferMemoryBarrier2, and VkImageMemoryBarrier2
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceMaintenance8FeaturesKHR'
+--
+-- -   Extending
+--     'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.SubpassDependency2',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.BufferMemoryBarrier2',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.ImageMemoryBarrier2',
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.MemoryRangeBarriersInfoKHR':
+--
+--     -   'MemoryBarrierAccessFlags3KHR'
+--
+-- == New Enums
+--
+-- -   'AccessFlagBits3KHR'
+--
+-- -   'Vulkan.Core10.Enums.PipelineCacheCreateFlagBits.PipelineCacheCreateFlagBits'
+--
+-- == New Bitmasks
+--
+-- -   'AccessFlags3KHR'
+--
+-- == New Enum Constants
+--
+-- -   'KHR_MAINTENANCE_8_EXTENSION_NAME'
+--
+-- -   'KHR_MAINTENANCE_8_SPEC_VERSION'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.DependencyFlagBits.DependencyFlagBits':
+--
+--     -   'Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_QUEUE_FAMILY_OWNERSHIP_TRANSFER_USE_ALL_STAGES_BIT_KHR'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.PipelineCacheCreateFlagBits.PipelineCacheCreateFlagBits':
+--
+--     -   'Vulkan.Core10.Enums.PipelineCacheCreateFlagBits.PIPELINE_CACHE_CREATE_INTERNALLY_SYNCHRONIZED_MERGE_BIT_KHR'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MEMORY_BARRIER_ACCESS_FLAGS_3_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_8_FEATURES_KHR'
+--
+-- == Issues
+--
+-- None.
+--
+-- == Version History
+--
+-- -   Revision 1, 2024-06-20 (Jon Leech)
+--
+--     -   Initial revision
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_maintenance8 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_maintenance8  ( PhysicalDeviceMaintenance8FeaturesKHR(..)
+                                              , MemoryBarrierAccessFlags3KHR(..)
+                                              , AccessFlags3KHR
+                                              , AccessFlagBits3KHR( ACCESS_3_NONE_KHR
+                                                                  , ..
+                                                                  )
+                                              , KHR_MAINTENANCE_8_SPEC_VERSION
+                                              , pattern KHR_MAINTENANCE_8_SPEC_VERSION
+                                              , KHR_MAINTENANCE_8_EXTENSION_NAME
+                                              , pattern KHR_MAINTENANCE_8_EXTENSION_NAME
+                                              ) where
+
+import Data.Bits (Bits)
+import Data.Bits (FiniteBits)
+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.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.Kind (Type)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.Core10.FundamentalTypes (Flags64)
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_MEMORY_BARRIER_ACCESS_FLAGS_3_KHR))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_8_FEATURES_KHR))
+-- | VkPhysicalDeviceMaintenance8FeaturesKHR - Structure describing whether
+-- the implementation supports maintenance8 functionality
+--
+-- = Members
+--
+-- This structure describes the following feature:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceMaintenance8FeaturesKHR' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceMaintenance8FeaturesKHR', it /must/ add an instance of
+-- the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance8 VK_KHR_maintenance8>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceMaintenance8FeaturesKHR = PhysicalDeviceMaintenance8FeaturesKHR
+  { -- | #features-maintenance8# @maintenance8@ indicates that the implementation
+    -- supports the following:
+    --
+    -- -   Allow copies between depth\/stencil and “matching” color attachments
+    --
+    -- -   Allow @dstCache@ in
+    --     'Vulkan.Core10.PipelineCache.mergePipelineCaches' to be implicitly
+    --     synchronized.
+    --
+    -- -   Require src\/dst sync scopes to work when doing queue family
+    --     ownership transfers
+    --
+    -- -   Support @Offset@ (as an alternative to @ConstOffset@) image operand
+    --     in texture sampling and fetch operations
+    --
+    -- -   Use the SPIR-V definition of OpSRem and OpSMod, making these
+    --     operations produce well-defined results for negative operands
+    --
+    -- -   Loosen layer restrictions when blitting from 3D images to other
+    --     image types
+    --
+    -- -   Add space for an additional 64 access flags for use with
+    --     VkMemoryBarrier2, VkBufferMemoryBarrier2, and VkImageMemoryBarrier2
+    maintenance8 :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceMaintenance8FeaturesKHR)
+#endif
+deriving instance Show PhysicalDeviceMaintenance8FeaturesKHR
+
+instance ToCStruct PhysicalDeviceMaintenance8FeaturesKHR where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceMaintenance8FeaturesKHR{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_8_FEATURES_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (maintenance8))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_8_FEATURES_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceMaintenance8FeaturesKHR where
+  peekCStruct p = do
+    maintenance8 <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDeviceMaintenance8FeaturesKHR
+             (bool32ToBool maintenance8)
+
+instance Storable PhysicalDeviceMaintenance8FeaturesKHR where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceMaintenance8FeaturesKHR where
+  zero = PhysicalDeviceMaintenance8FeaturesKHR
+           zero
+
+
+-- | VkMemoryBarrierAccessFlags3KHR - Structure specifying additional access
+-- flags
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.BufferMemoryBarrier2'
+--
+--     -   'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.ImageMemoryBarrier2'
+--
+--     -   'Vulkan.Extensions.VK_KHR_device_address_commands.MemoryRangeBarriersInfoKHR'
+--
+--     -   'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.SubpassDependency2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance8 VK_KHR_maintenance8>,
+-- 'AccessFlags3KHR', 'Vulkan.Core10.Enums.StructureType.StructureType'
+data MemoryBarrierAccessFlags3KHR = MemoryBarrierAccessFlags3KHR
+  { -- | @srcAccessMask3@ is a 'AccessFlags3KHR' mask of access flags to be
+    -- included in the
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-access-scopes first access scope>.
+    --
+    -- #VUID-VkMemoryBarrierAccessFlags3KHR-srcAccessMask3-parameter#
+    -- @srcAccessMask3@ /must/ be a valid combination of 'AccessFlagBits3KHR'
+    -- values
+    srcAccessMask3 :: AccessFlags3KHR
+  , -- | @dstAccessMask3@ is a 'AccessFlags3KHR' mask of access flags to be
+    -- included in the
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-access-scopes second access scope>.
+    --
+    -- #VUID-VkMemoryBarrierAccessFlags3KHR-dstAccessMask3-parameter#
+    -- @dstAccessMask3@ /must/ be a valid combination of 'AccessFlagBits3KHR'
+    -- values
+    dstAccessMask3 :: AccessFlags3KHR
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (MemoryBarrierAccessFlags3KHR)
+#endif
+deriving instance Show MemoryBarrierAccessFlags3KHR
+
+instance ToCStruct MemoryBarrierAccessFlags3KHR where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p MemoryBarrierAccessFlags3KHR{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MEMORY_BARRIER_ACCESS_FLAGS_3_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr AccessFlags3KHR)) (srcAccessMask3)
+    poke ((p `plusPtr` 24 :: Ptr AccessFlags3KHR)) (dstAccessMask3)
+    f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MEMORY_BARRIER_ACCESS_FLAGS_3_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    f
+
+instance FromCStruct MemoryBarrierAccessFlags3KHR where
+  peekCStruct p = do
+    srcAccessMask3 <- peek @AccessFlags3KHR ((p `plusPtr` 16 :: Ptr AccessFlags3KHR))
+    dstAccessMask3 <- peek @AccessFlags3KHR ((p `plusPtr` 24 :: Ptr AccessFlags3KHR))
+    pure $ MemoryBarrierAccessFlags3KHR
+             srcAccessMask3 dstAccessMask3
+
+instance Storable MemoryBarrierAccessFlags3KHR where
+  sizeOf ~_ = 32
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero MemoryBarrierAccessFlags3KHR where
+  zero = MemoryBarrierAccessFlags3KHR
+           zero
+           zero
+
+
+type AccessFlags3KHR = AccessFlagBits3KHR
+
+-- | VkAccessFlagBits3KHR - Access flags for VkAccessFlags3KHR
+--
+-- = Description
+--
+-- -   'ACCESS_3_NONE_KHR' specifies no additional accesses.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance8 VK_KHR_maintenance8>,
+-- 'AccessFlags3KHR'
+newtype AccessFlagBits3KHR = AccessFlagBits3KHR Flags64
+  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
+
+-- No documentation found for Nested "VkAccessFlagBits3KHR" "VK_ACCESS_3_NONE_KHR"
+pattern ACCESS_3_NONE_KHR = AccessFlagBits3KHR 0x0000000000000000
+
+conNameAccessFlagBits3KHR :: String
+conNameAccessFlagBits3KHR = "AccessFlagBits3KHR"
+
+enumPrefixAccessFlagBits3KHR :: String
+enumPrefixAccessFlagBits3KHR = "ACCESS_3_NONE_KHR"
+
+showTableAccessFlagBits3KHR :: [(AccessFlagBits3KHR, String)]
+showTableAccessFlagBits3KHR = [(ACCESS_3_NONE_KHR, "")]
+
+instance Show AccessFlagBits3KHR where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixAccessFlagBits3KHR
+      showTableAccessFlagBits3KHR
+      conNameAccessFlagBits3KHR
+      (\(AccessFlagBits3KHR x) -> x)
+      (\x -> showString "0x" . showHex x)
+
+instance Read AccessFlagBits3KHR where
+  readPrec =
+    enumReadPrec
+      enumPrefixAccessFlagBits3KHR
+      showTableAccessFlagBits3KHR
+      conNameAccessFlagBits3KHR
+      AccessFlagBits3KHR
+
+type KHR_MAINTENANCE_8_SPEC_VERSION = 1
+
+-- No documentation found for TopLevel "VK_KHR_MAINTENANCE_8_SPEC_VERSION"
+pattern KHR_MAINTENANCE_8_SPEC_VERSION :: forall a . Integral a => a
+pattern KHR_MAINTENANCE_8_SPEC_VERSION = 1
+
+
+type KHR_MAINTENANCE_8_EXTENSION_NAME = "VK_KHR_maintenance8"
+
+-- No documentation found for TopLevel "VK_KHR_MAINTENANCE_8_EXTENSION_NAME"
+pattern KHR_MAINTENANCE_8_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern KHR_MAINTENANCE_8_EXTENSION_NAME = "VK_KHR_maintenance8"
+
diff --git a/src/Vulkan/Extensions/VK_KHR_maintenance8.hs-boot b/src/Vulkan/Extensions/VK_KHR_maintenance8.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_KHR_maintenance8.hs-boot
@@ -0,0 +1,191 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_KHR_maintenance8 - device extension
+--
+-- = VK_KHR_maintenance8
+--
+-- [__Name String__]
+--     @VK_KHR_maintenance8@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     575
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
+--
+-- [__Contact__]
+--
+--     -   Mike Blumenkrantz
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_maintenance8] @zmike%0A*Here describe the issue or question you have about the VK_KHR_maintenance8 extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_KHR_maintenance8.adoc VK_KHR_maintenance8>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2025-01-07
+--
+-- [__Interactions and External Dependencies__; __Contributors__]
+--
+--     -   Jon Leech, Khronos
+--
+--     -   Mike Blumenkrantz, Valve
+--
+--     -   Spencer Fricke, LunarG
+--
+--     -   Jan-Harald Fredriksen, ARM
+--
+--     -   Piers Daniell, NVIDIA
+--
+--     -   Matthew Netsch, Qualcomm
+--
+--     -   Ricardo Garcia, Igalia
+--
+--     -   Lionel Landwerlin, Intel
+--
+--     -   Rick Hammerstone, Qualcomm
+--
+--     -   Daniel Story, Nintendo
+--
+--     -   Hans-Kristian Arntzen, Valve
+--
+--     -   Caterina Shablia, Collabora
+--
+--     -   Georg Lehmann, Valve
+--
+--     -   Shahbaz Youssefi, Google
+--
+--     -   Tobias Hector, AMD
+--
+-- == Description
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance8 VK_KHR_maintenance8>
+-- adds a collection of minor features, none of which would warrant an
+-- entire extension of their own.
+--
+-- The new features are as follows:
+--
+-- -   Allow copies between depth\/stencil and “matching” color attachments
+--
+-- -   Allow @dstCache@ in
+--     'Vulkan.Core10.PipelineCache.mergePipelineCaches' to be implicitly
+--     synchronized.
+--
+-- -   Require src\/dst sync scopes to work when doing queue family
+--     ownership transfers
+--
+-- -   Support @Offset@ (as an alternative to @ConstOffset@) image operand
+--     in texture sampling and fetch operations
+--
+-- -   Use the SPIR-V definition of @OpSRem@ and @OpSMod@, making these
+--     operations produce well-defined results for negative operands
+--
+-- -   Loosen layer restrictions when blitting from 3D images to other
+--     image types
+--
+-- -   Add space for an additional 64 access flags for use with
+--     VkMemoryBarrier2, VkBufferMemoryBarrier2, and VkImageMemoryBarrier2
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceMaintenance8FeaturesKHR'
+--
+-- -   Extending
+--     'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.SubpassDependency2',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.BufferMemoryBarrier2',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.ImageMemoryBarrier2',
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.MemoryRangeBarriersInfoKHR':
+--
+--     -   'MemoryBarrierAccessFlags3KHR'
+--
+-- == New Enums
+--
+-- -   'AccessFlagBits3KHR'
+--
+-- -   'Vulkan.Core10.Enums.PipelineCacheCreateFlagBits.PipelineCacheCreateFlagBits'
+--
+-- == New Bitmasks
+--
+-- -   'AccessFlags3KHR'
+--
+-- == New Enum Constants
+--
+-- -   'KHR_MAINTENANCE_8_EXTENSION_NAME'
+--
+-- -   'KHR_MAINTENANCE_8_SPEC_VERSION'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.DependencyFlagBits.DependencyFlagBits':
+--
+--     -   'Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_QUEUE_FAMILY_OWNERSHIP_TRANSFER_USE_ALL_STAGES_BIT_KHR'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.PipelineCacheCreateFlagBits.PipelineCacheCreateFlagBits':
+--
+--     -   'Vulkan.Core10.Enums.PipelineCacheCreateFlagBits.PIPELINE_CACHE_CREATE_INTERNALLY_SYNCHRONIZED_MERGE_BIT_KHR'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MEMORY_BARRIER_ACCESS_FLAGS_3_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_8_FEATURES_KHR'
+--
+-- == Issues
+--
+-- None.
+--
+-- == Version History
+--
+-- -   Revision 1, 2024-06-20 (Jon Leech)
+--
+--     -   Initial revision
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_maintenance8 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_maintenance8  ( MemoryBarrierAccessFlags3KHR
+                                              , PhysicalDeviceMaintenance8FeaturesKHR
+                                              ) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data MemoryBarrierAccessFlags3KHR
+
+instance ToCStruct MemoryBarrierAccessFlags3KHR
+instance Show MemoryBarrierAccessFlags3KHR
+
+instance FromCStruct MemoryBarrierAccessFlags3KHR
+
+
+data PhysicalDeviceMaintenance8FeaturesKHR
+
+instance ToCStruct PhysicalDeviceMaintenance8FeaturesKHR
+instance Show PhysicalDeviceMaintenance8FeaturesKHR
+
+instance FromCStruct PhysicalDeviceMaintenance8FeaturesKHR
+
diff --git a/src/Vulkan/Extensions/VK_KHR_maintenance9.hs b/src/Vulkan/Extensions/VK_KHR_maintenance9.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_KHR_maintenance9.hs
@@ -0,0 +1,564 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_KHR_maintenance9 - device extension
+--
+-- = VK_KHR_maintenance9
+--
+-- [__Name String__]
+--     @VK_KHR_maintenance9@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     585
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
+--
+-- [__Contact__]
+--
+--     -   Mike Blumenkrantz
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_maintenance9] @zmike%0A*Here describe the issue or question you have about the VK_KHR_maintenance9 extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_KHR_maintenance9.adoc VK_KHR_maintenance9>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2025-05-29
+--
+-- [__Interactions and External Dependencies__; __Contributors__]
+--
+--     -   Mike Blumenkrantz, Valve
+--
+--     -   Shahbaz Youssefi, Google
+--
+--     -   Hans-Kristian Arntzen, Valve
+--
+--     -   Piers Daniell, NVIDIA
+--
+--     -   Daniel Story, Nintendo
+--
+--     -   Jeff Bolz, NVIDIA
+--
+-- == Description
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance9 VK_KHR_maintenance9>
+-- adds a collection of minor features, none of which would warrant an
+-- entire extension of their own.
+--
+-- The new features are as follows:
+--
+-- -   Support VkDevice with no queues. These can be used as effectively an
+--     offline compiler to prepopulate pipeline caches, without expensive
+--     queue creation or internal memory allocations.
+--
+-- -   Allow
+--     'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.cmdSetEvent2'
+--     to not provide a dependency, providing
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetEvent'-style usage using
+--     enums from @VK_KHR_synchronization2@
+--
+-- -   Add a
+--     'Vulkan.Core10.Enums.QueryPoolCreateFlagBits.QueryPoolCreateFlagBits'::'Vulkan.Core10.Enums.QueryPoolCreateFlagBits.QUERY_POOL_CREATE_RESET_BIT_KHR'
+--     flag to create a query pool with all queries initialized to the
+--     reset state.
+--
+-- -   Allow any integer bit width for specific bit-wise operations.
+--
+-- -   Add a property to enable sparse support with
+--     @VK_EXT_image_2d_view_of_3d@.
+--
+-- -   Add a property to indicate the implementation will return (0,0,0,0)
+--     or (0,0,0,1) to vertex shaders that read unassigned attributes.
+--
+-- -   The effects of image memory barriers and image layout transitions on
+--     3D images created with VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT are
+--     scoped to the slices specified by the user-provided
+--     VkImageSubresourceRange.
+--
+-- -   Queue family ownership transfers are no longer required for buffers
+--     and linear images, and a new physical device queue family property
+--     is exposed to indicate whether queue family ownership transfers are
+--     required for optimal images.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceMaintenance9FeaturesKHR'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDeviceMaintenance9PropertiesKHR'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.QueueFamilyProperties2':
+--
+--     -   'QueueFamilyOwnershipTransferPropertiesKHR'
+--
+-- == New Enums
+--
+-- -   'DefaultVertexAttributeValueKHR'
+--
+-- == New Enum Constants
+--
+-- -   'KHR_MAINTENANCE_9_EXTENSION_NAME'
+--
+-- -   'KHR_MAINTENANCE_9_SPEC_VERSION'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.DependencyFlagBits.DependencyFlagBits':
+--
+--     -   'Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_ASYMMETRIC_EVENT_BIT_KHR'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.QueryPoolCreateFlagBits.QueryPoolCreateFlagBits':
+--
+--     -   'Vulkan.Core10.Enums.QueryPoolCreateFlagBits.QUERY_POOL_CREATE_RESET_BIT_KHR'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_FEATURES_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_PROPERTIES_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_QUEUE_FAMILY_OWNERSHIP_TRANSFER_PROPERTIES_KHR'
+--
+-- == Issues
+--
+-- None.
+--
+-- == Version History
+--
+-- -   Revision 1, 2025-05-29 (Contributors)
+--
+--     -   Internal revisions
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_maintenance9 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_maintenance9  ( PhysicalDeviceMaintenance9FeaturesKHR(..)
+                                              , PhysicalDeviceMaintenance9PropertiesKHR(..)
+                                              , QueueFamilyOwnershipTransferPropertiesKHR(..)
+                                              , DefaultVertexAttributeValueKHR( DEFAULT_VERTEX_ATTRIBUTE_VALUE_ZERO_ZERO_ZERO_ZERO_KHR
+                                                                              , DEFAULT_VERTEX_ATTRIBUTE_VALUE_ZERO_ZERO_ZERO_ONE_KHR
+                                                                              , ..
+                                                                              )
+                                              , KHR_MAINTENANCE_9_SPEC_VERSION
+                                              , pattern KHR_MAINTENANCE_9_SPEC_VERSION
+                                              , KHR_MAINTENANCE_9_EXTENSION_NAME
+                                              , pattern KHR_MAINTENANCE_9_EXTENSION_NAME
+                                              ) where
+
+import Vulkan.Internal.Utils (enumReadPrec)
+import Vulkan.Internal.Utils (enumShowsPrec)
+import Foreign.Marshal.Alloc (allocaBytes)
+import Foreign.Ptr (nullPtr)
+import Foreign.Ptr (plusPtr)
+import GHC.Show (showsPrec)
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (FromCStruct(..))
+import Vulkan.CStruct (ToCStruct)
+import Vulkan.CStruct (ToCStruct(..))
+import Vulkan.Zero (Zero)
+import Vulkan.Zero (Zero(..))
+import Data.String (IsString)
+import Data.Typeable (Typeable)
+import Foreign.Storable (Storable)
+import Foreign.Storable (Storable(peek))
+import Foreign.Storable (Storable(poke))
+import qualified Foreign.Storable (Storable(..))
+import GHC.Generics (Generic)
+import Data.Int (Int32)
+import Foreign.Ptr (Ptr)
+import GHC.Read (Read(readPrec))
+import GHC.Show (Show(showsPrec))
+import Data.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_PHYSICAL_DEVICE_MAINTENANCE_9_FEATURES_KHR))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_PROPERTIES_KHR))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_QUEUE_FAMILY_OWNERSHIP_TRANSFER_PROPERTIES_KHR))
+-- | VkPhysicalDeviceMaintenance9FeaturesKHR - Structure describing whether
+-- the implementation supports maintenance9 functionality
+--
+-- = Members
+--
+-- This structure describes the following feature:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceMaintenance9FeaturesKHR' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceMaintenance9FeaturesKHR', it /must/ add an instance of
+-- the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance9 VK_KHR_maintenance9>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceMaintenance9FeaturesKHR = PhysicalDeviceMaintenance9FeaturesKHR
+  { -- | #features-maintenance9# @maintenance9@ indicates that the implementation
+    -- supports the following:
+    --
+    -- -   The restriction that certain bitfield SPIR-V instructions only
+    --     operate on 32-bit integers is relaxed.
+    --
+    -- -   The value returned when a vertex shader reads an unbound vertex
+    --     attribute is defined by way of the
+    --     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-defaultVertexAttributeValue defaultVertexAttributeValue>
+    --     property.
+    --
+    -- -   A new
+    --     'Vulkan.Core10.Enums.QueryPoolCreateFlagBits.QueryPoolCreateFlagBits'::'Vulkan.Core10.Enums.QueryPoolCreateFlagBits.QUERY_POOL_CREATE_RESET_BIT_KHR'
+    --     flag /can/ be used to initialize all queries in query pool to the
+    --     reset state on creation.
+    --
+    -- -   'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.cmdSetEvent2'
+    --     /may/ not provide a dependency other than the event src stage mask.
+    --
+    -- -   The effects of image memory barriers and image layout transitions on
+    --     3D images created with
+    --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT'
+    --     are limited to only those slices specified in
+    --     'Vulkan.Core10.ImageView.ImageSubresourceRange'
+    --
+    -- -   A device /can/ be created with no queues. This can be used for
+    --     compiling pipelines or shaders for the purpose of filling pipeline
+    --     caches.
+    --
+    -- -   Queue family ownership transfers are no longer required for buffers
+    --     and linear images. For optimally tiled images, a new physical device
+    --     query is added to check if resources created with
+    --     'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_EXCLUSIVE' /can/
+    --     automatically transfer ownership between two queue families.
+    --
+    -- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-image2DViewOf3DSparse image2DViewOf3DSparse>
+    --     enables 2D views of 3D sparse images.
+    maintenance9 :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceMaintenance9FeaturesKHR)
+#endif
+deriving instance Show PhysicalDeviceMaintenance9FeaturesKHR
+
+instance ToCStruct PhysicalDeviceMaintenance9FeaturesKHR where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceMaintenance9FeaturesKHR{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_FEATURES_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (maintenance9))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_FEATURES_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceMaintenance9FeaturesKHR where
+  peekCStruct p = do
+    maintenance9 <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDeviceMaintenance9FeaturesKHR
+             (bool32ToBool maintenance9)
+
+instance Storable PhysicalDeviceMaintenance9FeaturesKHR where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceMaintenance9FeaturesKHR where
+  zero = PhysicalDeviceMaintenance9FeaturesKHR
+           zero
+
+
+-- | VkPhysicalDeviceMaintenance9PropertiesKHR - Structure describing various
+-- implementation-defined properties introduced with VK_KHR_maintenance9
+--
+-- = Members
+--
+-- -   @sType@ is a 'Vulkan.Core10.Enums.StructureType.StructureType' value
+--     identifying this structure.
+--
+-- -   @pNext@ is @NULL@ or a pointer to a structure extending this
+--     structure.
+--
+-- -   #limits-image2DViewOf3DSparse# If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-image2DViewOf3D image2DViewOf3D>
+--     feature is enabled, @image2DViewOf3DSparse@ indicates whether the
+--     implementation supports binding a slice of a sparse 3D image to a 2D
+--     image view.
+--
+-- -   #limits-defaultVertexAttributeValue# @defaultVertexAttributeValue@
+--     is a 'DefaultVertexAttributeValueKHR' that indicates what value the
+--     implementation will return when the vertex shader reads unbound
+--     vertex attributes. Unbound attributes are those that have no
+--     corresponding
+--     'Vulkan.Core10.GraphicsPipeline.VertexInputAttributeDescription'::@location@
+--     defined in the bound graphics pipeline or no corresponding
+--     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@location@
+--     set by the most recent call to
+--     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.cmdSetVertexInputEXT'
+--     when the state is dynamic .
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceMaintenance9PropertiesKHR' 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.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance9 VK_KHR_maintenance9>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'DefaultVertexAttributeValueKHR',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceMaintenance9PropertiesKHR = PhysicalDeviceMaintenance9PropertiesKHR
+  { -- No documentation found for Nested "VkPhysicalDeviceMaintenance9PropertiesKHR" "image2DViewOf3DSparse"
+    image2DViewOf3DSparse :: Bool
+  , -- No documentation found for Nested "VkPhysicalDeviceMaintenance9PropertiesKHR" "defaultVertexAttributeValue"
+    defaultVertexAttributeValue :: DefaultVertexAttributeValueKHR
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceMaintenance9PropertiesKHR)
+#endif
+deriving instance Show PhysicalDeviceMaintenance9PropertiesKHR
+
+instance ToCStruct PhysicalDeviceMaintenance9PropertiesKHR where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceMaintenance9PropertiesKHR{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_PROPERTIES_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (image2DViewOf3DSparse))
+    poke ((p `plusPtr` 20 :: Ptr DefaultVertexAttributeValueKHR)) (defaultVertexAttributeValue)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_PROPERTIES_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 20 :: Ptr DefaultVertexAttributeValueKHR)) (zero)
+    f
+
+instance FromCStruct PhysicalDeviceMaintenance9PropertiesKHR where
+  peekCStruct p = do
+    image2DViewOf3DSparse <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    defaultVertexAttributeValue <- peek @DefaultVertexAttributeValueKHR ((p `plusPtr` 20 :: Ptr DefaultVertexAttributeValueKHR))
+    pure $ PhysicalDeviceMaintenance9PropertiesKHR
+             (bool32ToBool image2DViewOf3DSparse) defaultVertexAttributeValue
+
+instance Storable PhysicalDeviceMaintenance9PropertiesKHR where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceMaintenance9PropertiesKHR where
+  zero = PhysicalDeviceMaintenance9PropertiesKHR
+           zero
+           zero
+
+
+-- | VkQueueFamilyOwnershipTransferPropertiesKHR - Structure describing queue
+-- family ownership transfer properties
+--
+-- = Description
+--
+-- If this structure is included in the @pNext@ chain of the
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.QueueFamilyProperties2'
+-- structure passed to
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceQueueFamilyProperties2',
+-- then it is filled with the queue family ownership properties for the
+-- specified queue family.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.QueueFamilyProperties2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance9 VK_KHR_maintenance9>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data QueueFamilyOwnershipTransferPropertiesKHR = QueueFamilyOwnershipTransferPropertiesKHR
+  { -- | @optimalImageTransferToQueueFamilies@ is a bitmask of queue family
+    -- indices that indicates which queue families belonging to the same
+    -- logical device support implicitly acquiring optimal image resources
+    -- owned by this queue family, without the resources\' contents becoming
+    -- undefined.
+    optimalImageTransferToQueueFamilies :: Word32 }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (QueueFamilyOwnershipTransferPropertiesKHR)
+#endif
+deriving instance Show QueueFamilyOwnershipTransferPropertiesKHR
+
+instance ToCStruct QueueFamilyOwnershipTransferPropertiesKHR where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p QueueFamilyOwnershipTransferPropertiesKHR{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_QUEUE_FAMILY_OWNERSHIP_TRANSFER_PROPERTIES_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (optimalImageTransferToQueueFamilies)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_QUEUE_FAMILY_OWNERSHIP_TRANSFER_PROPERTIES_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct QueueFamilyOwnershipTransferPropertiesKHR where
+  peekCStruct p = do
+    optimalImageTransferToQueueFamilies <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    pure $ QueueFamilyOwnershipTransferPropertiesKHR
+             optimalImageTransferToQueueFamilies
+
+instance Storable QueueFamilyOwnershipTransferPropertiesKHR where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero QueueFamilyOwnershipTransferPropertiesKHR where
+  zero = QueueFamilyOwnershipTransferPropertiesKHR
+           zero
+
+
+-- | VkDefaultVertexAttributeValueKHR - Values returned for unbound vertex
+-- attributes
+--
+-- = Description
+--
+-- -   'DEFAULT_VERTEX_ATTRIBUTE_VALUE_ZERO_ZERO_ZERO_ZERO_KHR' - the value
+--     read for an unbound vertex attribute is (0,0,0,0).
+--
+-- -   'DEFAULT_VERTEX_ATTRIBUTE_VALUE_ZERO_ZERO_ZERO_ONE_KHR' - the value
+--     read for an unbound vertex attribute is (0,0,0,1).
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance9 VK_KHR_maintenance9>,
+-- 'PhysicalDeviceMaintenance9PropertiesKHR'
+newtype DefaultVertexAttributeValueKHR = DefaultVertexAttributeValueKHR Int32
+  deriving newtype (Eq, Ord, Storable, Zero)
+
+-- No documentation found for Nested "VkDefaultVertexAttributeValueKHR" "VK_DEFAULT_VERTEX_ATTRIBUTE_VALUE_ZERO_ZERO_ZERO_ZERO_KHR"
+pattern DEFAULT_VERTEX_ATTRIBUTE_VALUE_ZERO_ZERO_ZERO_ZERO_KHR = DefaultVertexAttributeValueKHR 0
+
+-- No documentation found for Nested "VkDefaultVertexAttributeValueKHR" "VK_DEFAULT_VERTEX_ATTRIBUTE_VALUE_ZERO_ZERO_ZERO_ONE_KHR"
+pattern DEFAULT_VERTEX_ATTRIBUTE_VALUE_ZERO_ZERO_ZERO_ONE_KHR = DefaultVertexAttributeValueKHR 1
+
+{-# COMPLETE
+  DEFAULT_VERTEX_ATTRIBUTE_VALUE_ZERO_ZERO_ZERO_ZERO_KHR
+  , DEFAULT_VERTEX_ATTRIBUTE_VALUE_ZERO_ZERO_ZERO_ONE_KHR ::
+    DefaultVertexAttributeValueKHR
+  #-}
+
+conNameDefaultVertexAttributeValueKHR :: String
+conNameDefaultVertexAttributeValueKHR = "DefaultVertexAttributeValueKHR"
+
+enumPrefixDefaultVertexAttributeValueKHR :: String
+enumPrefixDefaultVertexAttributeValueKHR = "DEFAULT_VERTEX_ATTRIBUTE_VALUE_ZERO_ZERO_ZERO_"
+
+showTableDefaultVertexAttributeValueKHR :: [(DefaultVertexAttributeValueKHR, String)]
+showTableDefaultVertexAttributeValueKHR =
+  [
+    ( DEFAULT_VERTEX_ATTRIBUTE_VALUE_ZERO_ZERO_ZERO_ZERO_KHR
+    , "ZERO_KHR"
+    )
+  ,
+    ( DEFAULT_VERTEX_ATTRIBUTE_VALUE_ZERO_ZERO_ZERO_ONE_KHR
+    , "ONE_KHR"
+    )
+  ]
+
+instance Show DefaultVertexAttributeValueKHR where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixDefaultVertexAttributeValueKHR
+      showTableDefaultVertexAttributeValueKHR
+      conNameDefaultVertexAttributeValueKHR
+      (\(DefaultVertexAttributeValueKHR x) -> x)
+      (showsPrec 11)
+
+instance Read DefaultVertexAttributeValueKHR where
+  readPrec =
+    enumReadPrec
+      enumPrefixDefaultVertexAttributeValueKHR
+      showTableDefaultVertexAttributeValueKHR
+      conNameDefaultVertexAttributeValueKHR
+      DefaultVertexAttributeValueKHR
+
+type KHR_MAINTENANCE_9_SPEC_VERSION = 1
+
+-- No documentation found for TopLevel "VK_KHR_MAINTENANCE_9_SPEC_VERSION"
+pattern KHR_MAINTENANCE_9_SPEC_VERSION :: forall a . Integral a => a
+pattern KHR_MAINTENANCE_9_SPEC_VERSION = 1
+
+
+type KHR_MAINTENANCE_9_EXTENSION_NAME = "VK_KHR_maintenance9"
+
+-- No documentation found for TopLevel "VK_KHR_MAINTENANCE_9_EXTENSION_NAME"
+pattern KHR_MAINTENANCE_9_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern KHR_MAINTENANCE_9_EXTENSION_NAME = "VK_KHR_maintenance9"
+
diff --git a/src/Vulkan/Extensions/VK_KHR_maintenance9.hs-boot b/src/Vulkan/Extensions/VK_KHR_maintenance9.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_KHR_maintenance9.hs-boot
@@ -0,0 +1,194 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_KHR_maintenance9 - device extension
+--
+-- = VK_KHR_maintenance9
+--
+-- [__Name String__]
+--     @VK_KHR_maintenance9@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     585
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
+--
+-- [__Contact__]
+--
+--     -   Mike Blumenkrantz
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_maintenance9] @zmike%0A*Here describe the issue or question you have about the VK_KHR_maintenance9 extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_KHR_maintenance9.adoc VK_KHR_maintenance9>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2025-05-29
+--
+-- [__Interactions and External Dependencies__; __Contributors__]
+--
+--     -   Mike Blumenkrantz, Valve
+--
+--     -   Shahbaz Youssefi, Google
+--
+--     -   Hans-Kristian Arntzen, Valve
+--
+--     -   Piers Daniell, NVIDIA
+--
+--     -   Daniel Story, Nintendo
+--
+--     -   Jeff Bolz, NVIDIA
+--
+-- == Description
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance9 VK_KHR_maintenance9>
+-- adds a collection of minor features, none of which would warrant an
+-- entire extension of their own.
+--
+-- The new features are as follows:
+--
+-- -   Support VkDevice with no queues. These can be used as effectively an
+--     offline compiler to prepopulate pipeline caches, without expensive
+--     queue creation or internal memory allocations.
+--
+-- -   Allow
+--     'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.cmdSetEvent2'
+--     to not provide a dependency, providing
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetEvent'-style usage using
+--     enums from @VK_KHR_synchronization2@
+--
+-- -   Add a
+--     'Vulkan.Core10.Enums.QueryPoolCreateFlagBits.QueryPoolCreateFlagBits'::'Vulkan.Core10.Enums.QueryPoolCreateFlagBits.QUERY_POOL_CREATE_RESET_BIT_KHR'
+--     flag to create a query pool with all queries initialized to the
+--     reset state.
+--
+-- -   Allow any integer bit width for specific bit-wise operations.
+--
+-- -   Add a property to enable sparse support with
+--     @VK_EXT_image_2d_view_of_3d@.
+--
+-- -   Add a property to indicate the implementation will return (0,0,0,0)
+--     or (0,0,0,1) to vertex shaders that read unassigned attributes.
+--
+-- -   The effects of image memory barriers and image layout transitions on
+--     3D images created with VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT are
+--     scoped to the slices specified by the user-provided
+--     VkImageSubresourceRange.
+--
+-- -   Queue family ownership transfers are no longer required for buffers
+--     and linear images, and a new physical device queue family property
+--     is exposed to indicate whether queue family ownership transfers are
+--     required for optimal images.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceMaintenance9FeaturesKHR'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDeviceMaintenance9PropertiesKHR'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.QueueFamilyProperties2':
+--
+--     -   'QueueFamilyOwnershipTransferPropertiesKHR'
+--
+-- == New Enums
+--
+-- -   'DefaultVertexAttributeValueKHR'
+--
+-- == New Enum Constants
+--
+-- -   'KHR_MAINTENANCE_9_EXTENSION_NAME'
+--
+-- -   'KHR_MAINTENANCE_9_SPEC_VERSION'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.DependencyFlagBits.DependencyFlagBits':
+--
+--     -   'Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_ASYMMETRIC_EVENT_BIT_KHR'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.QueryPoolCreateFlagBits.QueryPoolCreateFlagBits':
+--
+--     -   'Vulkan.Core10.Enums.QueryPoolCreateFlagBits.QUERY_POOL_CREATE_RESET_BIT_KHR'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_FEATURES_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_PROPERTIES_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_QUEUE_FAMILY_OWNERSHIP_TRANSFER_PROPERTIES_KHR'
+--
+-- == Issues
+--
+-- None.
+--
+-- == Version History
+--
+-- -   Revision 1, 2025-05-29 (Contributors)
+--
+--     -   Internal revisions
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_maintenance9 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_maintenance9  ( PhysicalDeviceMaintenance9FeaturesKHR
+                                              , PhysicalDeviceMaintenance9PropertiesKHR
+                                              , QueueFamilyOwnershipTransferPropertiesKHR
+                                              ) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data PhysicalDeviceMaintenance9FeaturesKHR
+
+instance ToCStruct PhysicalDeviceMaintenance9FeaturesKHR
+instance Show PhysicalDeviceMaintenance9FeaturesKHR
+
+instance FromCStruct PhysicalDeviceMaintenance9FeaturesKHR
+
+
+data PhysicalDeviceMaintenance9PropertiesKHR
+
+instance ToCStruct PhysicalDeviceMaintenance9PropertiesKHR
+instance Show PhysicalDeviceMaintenance9PropertiesKHR
+
+instance FromCStruct PhysicalDeviceMaintenance9PropertiesKHR
+
+
+data QueueFamilyOwnershipTransferPropertiesKHR
+
+instance ToCStruct QueueFamilyOwnershipTransferPropertiesKHR
+instance Show QueueFamilyOwnershipTransferPropertiesKHR
+
+instance FromCStruct QueueFamilyOwnershipTransferPropertiesKHR
+
diff --git a/src/Vulkan/Extensions/VK_KHR_map_memory2.hs b/src/Vulkan/Extensions/VK_KHR_map_memory2.hs
--- a/src/Vulkan/Extensions/VK_KHR_map_memory2.hs
+++ b/src/Vulkan/Extensions/VK_KHR_map_memory2.hs
@@ -23,6 +23,11 @@
 -- [__Extension and Version Dependencies__]
 --     None
 --
+-- [__Deprecation State__]
+--
+--     -   /Promoted/ to
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.4-promotions Vulkan 1.4>
+--
 -- [__Contact__]
 --
 --     -   Faith Ekstrand
@@ -81,10 +86,16 @@
 --
 -- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MEMORY_MAP_INFO_KHR'
+--     -   'STRUCTURE_TYPE_MEMORY_MAP_INFO_KHR'
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MEMORY_UNMAP_INFO_KHR'
+--     -   'STRUCTURE_TYPE_MEMORY_UNMAP_INFO_KHR'
 --
+-- == Promotion to Vulkan 1.4
+--
+-- Functionality in this extension is included in core Vulkan 1.4 with the
+-- KHR suffix omitted. The original type, enum, and command names are still
+-- available as aliases of the core functionality.
+--
 -- == Version History
 --
 -- -   Revision 0, 2022-08-03 (Faith Ekstrand)
@@ -102,551 +113,64 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_map_memory2 Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_map_memory2 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_map_memory2  ( mapMemory2KHR
+module Vulkan.Extensions.VK_KHR_map_memory2  ( pattern STRUCTURE_TYPE_MEMORY_MAP_INFO_KHR
+                                             , pattern STRUCTURE_TYPE_MEMORY_UNMAP_INFO_KHR
+                                             , mapMemory2KHR
                                              , unmapMemory2KHR
-                                             , MemoryMapInfoKHR(..)
-                                             , MemoryUnmapInfoKHR(..)
                                              , MemoryUnmapFlagsKHR
-                                             , MemoryUnmapFlagBitsKHR( MEMORY_UNMAP_RESERVE_BIT_EXT
-                                                                     , ..
-                                                                     )
+                                             , MemoryUnmapFlagBitsKHR
+                                             , MemoryMapInfoKHR
+                                             , MemoryUnmapInfoKHR
                                              , KHR_MAP_MEMORY_2_SPEC_VERSION
                                              , pattern KHR_MAP_MEMORY_2_SPEC_VERSION
                                              , KHR_MAP_MEMORY_2_EXTENSION_NAME
                                              , pattern KHR_MAP_MEMORY_2_EXTENSION_NAME
                                              ) where
 
-import Data.Bits (Bits)
-import Data.Bits (FiniteBits)
-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 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.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.Kind (Type)
-import Control.Monad.Trans.Cont (ContT(..))
-import Vulkan.CStruct.Extends (forgetExtensions)
-import Vulkan.NamedType ((:::))
-import Vulkan.CStruct.Extends (Chain)
-import Vulkan.Core10.Handles (Device)
-import Vulkan.Core10.Handles (Device(..))
-import Vulkan.Core10.Handles (Device(Device))
-import Vulkan.Dynamic (DeviceCmds(pVkMapMemory2KHR))
-import Vulkan.Dynamic (DeviceCmds(pVkUnmapMemory2KHR))
-import Vulkan.Core10.Handles (DeviceMemory)
-import Vulkan.Core10.FundamentalTypes (DeviceSize)
-import Vulkan.Core10.Handles (Device_T)
-import Vulkan.CStruct.Extends (Extends)
-import Vulkan.CStruct.Extends (Extendss)
-import Vulkan.CStruct.Extends (Extensible(..))
-import Vulkan.Core10.FundamentalTypes (Flags)
-import Vulkan.Core10.Enums.MemoryMapFlagBits (MemoryMapFlags)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_map_memory_placed (MemoryMapPlacedInfoEXT)
-import Vulkan.CStruct.Extends (PeekChain)
-import Vulkan.CStruct.Extends (PeekChain(..))
-import Vulkan.CStruct.Extends (PokeChain)
-import Vulkan.CStruct.Extends (PokeChain(..))
-import Vulkan.Core10.Enums.Result (Result)
-import Vulkan.Core10.Enums.Result (Result(..))
-import Vulkan.CStruct.Extends (SomeStruct)
-import Vulkan.Core10.Enums.StructureType (StructureType)
-import Vulkan.Exception (VulkanException(..))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_MEMORY_MAP_INFO_KHR))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_MEMORY_UNMAP_INFO_KHR))
-import Vulkan.Core10.Enums.Result (Result(SUCCESS))
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkMapMemory2KHR
-  :: FunPtr (Ptr Device_T -> Ptr (SomeStruct MemoryMapInfoKHR) -> Ptr (Ptr ()) -> IO Result) -> Ptr Device_T -> Ptr (SomeStruct MemoryMapInfoKHR) -> Ptr (Ptr ()) -> IO Result
+import Vulkan.Core14.Promoted_From_VK_KHR_map_memory2 (mapMemory2)
+import Vulkan.Core14.Promoted_From_VK_KHR_map_memory2 (unmapMemory2)
+import Vulkan.Core14.Promoted_From_VK_KHR_map_memory2 (MemoryMapInfo)
+import Vulkan.Core14.Enums.MemoryUnmapFlagBits (MemoryUnmapFlagBits)
+import Vulkan.Core14.Enums.MemoryUnmapFlagBits (MemoryUnmapFlags)
+import Vulkan.Core14.Promoted_From_VK_KHR_map_memory2 (MemoryUnmapInfo)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_MEMORY_MAP_INFO))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_MEMORY_UNMAP_INFO))
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_MEMORY_MAP_INFO_KHR"
+pattern STRUCTURE_TYPE_MEMORY_MAP_INFO_KHR = STRUCTURE_TYPE_MEMORY_MAP_INFO
 
--- | vkMapMemory2KHR - Map a memory object into application address space
---
--- = Description
---
--- This function behaves identically to 'Vulkan.Core10.Memory.mapMemory'
--- except that it gets its parameters via an extensible structure pointer
--- rather than directly as function arguments.
---
--- == 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_MEMORY_MAP_FAILED'
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_map_memory2 VK_KHR_map_memory2>,
--- 'Vulkan.Core10.Handles.Device', 'MemoryMapInfoKHR'
-mapMemory2KHR :: forall a io
-               . (Extendss MemoryMapInfoKHR a, PokeChain a, MonadIO io)
-              => -- | @device@ is the logical device that owns the memory.
-                 --
-                 -- #VUID-vkMapMemory2KHR-device-parameter# @device@ /must/ be a valid
-                 -- 'Vulkan.Core10.Handles.Device' handle
-                 Device
-              -> -- | @pMemoryMapInfo@ is a pointer to a 'MemoryMapInfoKHR' structure
-                 -- describing parameters of the map.
-                 --
-                 -- #VUID-vkMapMemory2KHR-pMemoryMapInfo-parameter# @pMemoryMapInfo@ /must/
-                 -- be a valid pointer to a valid 'MemoryMapInfoKHR' structure
-                 (MemoryMapInfoKHR a)
-              -> io (("data" ::: Ptr ()))
-mapMemory2KHR device memoryMapInfo = liftIO . evalContT $ do
-  let vkMapMemory2KHRPtr = pVkMapMemory2KHR (case device of Device{deviceCmds} -> deviceCmds)
-  lift $ unless (vkMapMemory2KHRPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkMapMemory2KHR is null" Nothing Nothing
-  let vkMapMemory2KHR' = mkVkMapMemory2KHR vkMapMemory2KHRPtr
-  pMemoryMapInfo <- ContT $ withCStruct (memoryMapInfo)
-  pPpData <- ContT $ bracket (callocBytes @(Ptr ()) 8) free
-  r <- lift $ traceAroundEvent "vkMapMemory2KHR" (vkMapMemory2KHR'
-                                                    (deviceHandle (device))
-                                                    (forgetExtensions pMemoryMapInfo)
-                                                    (pPpData))
-  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
-  ppData <- lift $ peek @(Ptr ()) pPpData
-  pure $ (ppData)
 
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_MEMORY_UNMAP_INFO_KHR"
+pattern STRUCTURE_TYPE_MEMORY_UNMAP_INFO_KHR = STRUCTURE_TYPE_MEMORY_UNMAP_INFO
 
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkUnmapMemory2KHR
-  :: FunPtr (Ptr Device_T -> Ptr MemoryUnmapInfoKHR -> IO Result) -> Ptr Device_T -> Ptr MemoryUnmapInfoKHR -> IO Result
 
--- | vkUnmapMemory2KHR - Unmap a previously mapped memory object
---
--- = Description
---
--- This function behaves identically to 'Vulkan.Core10.Memory.unmapMemory'
--- except that it gets its parameters via an extensible structure pointer
--- rather than directly as function arguments.
---
--- == 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_MEMORY_MAP_FAILED'
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_map_memory2 VK_KHR_map_memory2>,
--- 'Vulkan.Core10.Handles.Device', 'MemoryUnmapInfoKHR'
-unmapMemory2KHR :: forall io
-                 . (MonadIO io)
-                => -- | @device@ is the logical device that owns the memory.
-                   --
-                   -- #VUID-vkUnmapMemory2KHR-device-parameter# @device@ /must/ be a valid
-                   -- 'Vulkan.Core10.Handles.Device' handle
-                   Device
-                -> -- | @pMemoryUnmapInfo@ is a pointer to a 'MemoryUnmapInfoKHR' structure
-                   -- describing parameters of the unmap.
-                   --
-                   -- #VUID-vkUnmapMemory2KHR-pMemoryUnmapInfo-parameter# @pMemoryUnmapInfo@
-                   -- /must/ be a valid pointer to a valid 'MemoryUnmapInfoKHR' structure
-                   MemoryUnmapInfoKHR
-                -> io ()
-unmapMemory2KHR device memoryUnmapInfo = liftIO . evalContT $ do
-  let vkUnmapMemory2KHRPtr = pVkUnmapMemory2KHR (case device of Device{deviceCmds} -> deviceCmds)
-  lift $ unless (vkUnmapMemory2KHRPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkUnmapMemory2KHR is null" Nothing Nothing
-  let vkUnmapMemory2KHR' = mkVkUnmapMemory2KHR vkUnmapMemory2KHRPtr
-  pMemoryUnmapInfo <- ContT $ withCStruct (memoryUnmapInfo)
-  r <- lift $ traceAroundEvent "vkUnmapMemory2KHR" (vkUnmapMemory2KHR'
-                                                      (deviceHandle (device))
-                                                      pMemoryUnmapInfo)
-  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+-- No documentation found for TopLevel "vkMapMemory2KHR"
+mapMemory2KHR = mapMemory2
 
 
--- | VkMemoryMapInfoKHR - Structure containing parameters of a memory map
--- operation
---
--- == Valid Usage
---
--- -   #VUID-VkMemoryMapInfoKHR-memory-07958# @memory@ /must/ not be
---     currently host mapped
---
--- -   #VUID-VkMemoryMapInfoKHR-offset-07959# @offset@ /must/ be less than
---     the size of @memory@
---
--- -   #VUID-VkMemoryMapInfoKHR-size-07960# If @size@ is not equal to
---     'Vulkan.Core10.APIConstants.WHOLE_SIZE', @size@ /must/ be greater
---     than @0@
---
--- -   #VUID-VkMemoryMapInfoKHR-size-07961# If @size@ is not equal to
---     'Vulkan.Core10.APIConstants.WHOLE_SIZE', @size@ /must/ be less than
---     or equal to the size of the @memory@ minus @offset@
---
--- -   #VUID-VkMemoryMapInfoKHR-memory-07962# @memory@ /must/ have been
---     created with a memory type that reports
---     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_VISIBLE_BIT'
---
--- -   #VUID-VkMemoryMapInfoKHR-memory-07963# @memory@ /must/ not have been
---     allocated with multiple instances
---
--- -   #VUID-VkMemoryMapInfoKHR-flags-09569# If
---     'Vulkan.Core10.Enums.MemoryMapFlagBits.MEMORY_MAP_PLACED_BIT_EXT' is
---     set in @flags@, the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-memoryMapPlaced memoryMapPlaced>
---     feature /must/ be enabled
---
--- -   #VUID-VkMemoryMapInfoKHR-flags-09570# If
---     'Vulkan.Core10.Enums.MemoryMapFlagBits.MEMORY_MAP_PLACED_BIT_EXT' is
---     set in @flags@, the @pNext@ chain /must/ include a
---     'Vulkan.Extensions.VK_EXT_map_memory_placed.MemoryMapPlacedInfoEXT'
---     structure and
---     'Vulkan.Extensions.VK_EXT_map_memory_placed.MemoryMapPlacedInfoEXT'::@pPlacedAddress@
---     /must/ not be @NULL@
---
--- -   #VUID-VkMemoryMapInfoKHR-flags-09571# If
---     'Vulkan.Core10.Enums.MemoryMapFlagBits.MEMORY_MAP_PLACED_BIT_EXT' is
---     set in @flags@ and the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-memoryMapRangePlaced memoryMapRangePlaced>
---     feature is not enabled, @offset@ /must/ be zero
---
--- -   #VUID-VkMemoryMapInfoKHR-flags-09572# If
---     'Vulkan.Core10.Enums.MemoryMapFlagBits.MEMORY_MAP_PLACED_BIT_EXT' is
---     set in @flags@ and the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-memoryMapRangePlaced memoryMapRangePlaced>
---     feature is not enabled, @size@ /must/ be
---     'Vulkan.Core10.APIConstants.WHOLE_SIZE' or
---     'Vulkan.Core10.Memory.MemoryAllocateInfo'::@allocationSize@
---
--- -   #VUID-VkMemoryMapInfoKHR-flags-09573# If
---     'Vulkan.Core10.Enums.MemoryMapFlagBits.MEMORY_MAP_PLACED_BIT_EXT' is
---     set in @flags@ and the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-memoryMapRangePlaced memoryMapRangePlaced>
---     feature is enabled, @offset@ /must/ be aligned to an integer
---     multiple of
---     'Vulkan.Extensions.VK_EXT_map_memory_placed.PhysicalDeviceMapMemoryPlacedPropertiesEXT'::@minPlacedMemoryMapAlignment@
---
--- -   #VUID-VkMemoryMapInfoKHR-flags-09574# If
---     'Vulkan.Core10.Enums.MemoryMapFlagBits.MEMORY_MAP_PLACED_BIT_EXT' is
---     set in @flags@ and @size@ is not
---     'Vulkan.Core10.APIConstants.WHOLE_SIZE', @size@ /must/ be aligned to
---     an integer multiple of
---     'Vulkan.Extensions.VK_EXT_map_memory_placed.PhysicalDeviceMapMemoryPlacedPropertiesEXT'::@minPlacedMemoryMapAlignment@
---
--- -   #VUID-VkMemoryMapInfoKHR-flags-09651# If
---     'Vulkan.Core10.Enums.MemoryMapFlagBits.MEMORY_MAP_PLACED_BIT_EXT' is
---     set in @flags@ and @size@ is
---     'Vulkan.Core10.APIConstants.WHOLE_SIZE',
---     'Vulkan.Core10.Memory.MemoryAllocateInfo'::@allocationSize@ /must/
---     be aligned to an integer multiple of
---     'Vulkan.Extensions.VK_EXT_map_memory_placed.PhysicalDeviceMapMemoryPlacedPropertiesEXT'::@minPlacedMemoryMapAlignment@
---
--- -   #VUID-VkMemoryMapInfoKHR-flags-09575# If
---     'Vulkan.Core10.Enums.MemoryMapFlagBits.MEMORY_MAP_PLACED_BIT_EXT' is
---     set in @flags@, the memory object /must/ not have been imported from
---     a handle type of
---     'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT'
---     or
---     'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT'
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkMemoryMapInfoKHR-sType-sType# @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MEMORY_MAP_INFO_KHR'
---
--- -   #VUID-VkMemoryMapInfoKHR-pNext-pNext# @pNext@ /must/ be @NULL@ or a
---     pointer to a valid instance of
---     'Vulkan.Extensions.VK_EXT_map_memory_placed.MemoryMapPlacedInfoEXT'
---
--- -   #VUID-VkMemoryMapInfoKHR-sType-unique# The @sType@ value of each
---     struct in the @pNext@ chain /must/ be unique
---
--- -   #VUID-VkMemoryMapInfoKHR-flags-parameter# @flags@ /must/ be a valid
---     combination of
---     'Vulkan.Core10.Enums.MemoryMapFlagBits.MemoryMapFlagBits' values
---
--- -   #VUID-VkMemoryMapInfoKHR-memory-parameter# @memory@ /must/ be a
---     valid 'Vulkan.Core10.Handles.DeviceMemory' handle
---
--- == Host Synchronization
---
--- -   Host access to @memory@ /must/ be externally synchronized
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_map_memory2 VK_KHR_map_memory2>,
--- 'Vulkan.Core10.Handles.DeviceMemory',
--- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
--- 'Vulkan.Core10.Enums.MemoryMapFlagBits.MemoryMapFlags',
--- 'Vulkan.Core10.Enums.StructureType.StructureType', 'mapMemory2KHR'
-data MemoryMapInfoKHR (es :: [Type]) = MemoryMapInfoKHR
-  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
-    next :: Chain es
-  , -- | @flags@ is a bitmask of
-    -- 'Vulkan.Core10.Enums.MemoryMapFlagBits.MemoryMapFlagBits' specifying
-    -- additional parameters of the memory map operation.
-    flags :: MemoryMapFlags
-  , -- | @memory@ is the 'Vulkan.Core10.Handles.DeviceMemory' object to be
-    -- mapped.
-    memory :: DeviceMemory
-  , -- | @offset@ is a zero-based byte offset from the beginning of the memory
-    -- object.
-    offset :: DeviceSize
-  , -- | @size@ is the size of the memory range to map, or
-    -- 'Vulkan.Core10.APIConstants.WHOLE_SIZE' to map from @offset@ to the end
-    -- of the allocation.
-    size :: DeviceSize
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (MemoryMapInfoKHR (es :: [Type]))
-#endif
-deriving instance Show (Chain es) => Show (MemoryMapInfoKHR es)
+-- No documentation found for TopLevel "vkUnmapMemory2KHR"
+unmapMemory2KHR = unmapMemory2
 
-instance Extensible MemoryMapInfoKHR where
-  extensibleTypeName = "MemoryMapInfoKHR"
-  setNext MemoryMapInfoKHR{..} next' = MemoryMapInfoKHR{next = next', ..}
-  getNext MemoryMapInfoKHR{..} = next
-  extends :: forall e b proxy. Typeable e => proxy e -> (Extends MemoryMapInfoKHR e => b) -> Maybe b
-  extends _ f
-    | Just Refl <- eqT @e @MemoryMapPlacedInfoEXT = Just f
-    | otherwise = Nothing
 
-instance ( Extendss MemoryMapInfoKHR es
-         , PokeChain es ) => ToCStruct (MemoryMapInfoKHR es) where
-  withCStruct x f = allocaBytes 48 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p MemoryMapInfoKHR{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MEMORY_MAP_INFO_KHR)
-    pNext'' <- fmap castPtr . ContT $ withChain (next)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
-    lift $ poke ((p `plusPtr` 16 :: Ptr MemoryMapFlags)) (flags)
-    lift $ poke ((p `plusPtr` 24 :: Ptr DeviceMemory)) (memory)
-    lift $ poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (offset)
-    lift $ poke ((p `plusPtr` 40 :: Ptr DeviceSize)) (size)
-    lift $ f
-  cStructSize = 48
-  cStructAlignment = 8
-  pokeZeroCStruct p f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MEMORY_MAP_INFO_KHR)
-    pNext' <- fmap castPtr . ContT $ withZeroChain @es
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
-    lift $ poke ((p `plusPtr` 24 :: Ptr DeviceMemory)) (zero)
-    lift $ poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (zero)
-    lift $ poke ((p `plusPtr` 40 :: Ptr DeviceSize)) (zero)
-    lift $ f
+-- No documentation found for TopLevel "VkMemoryUnmapFlagsKHR"
+type MemoryUnmapFlagsKHR = MemoryUnmapFlags
 
-instance ( Extendss MemoryMapInfoKHR es
-         , PeekChain es ) => FromCStruct (MemoryMapInfoKHR es) where
-  peekCStruct p = do
-    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
-    next <- peekChain (castPtr pNext)
-    flags <- peek @MemoryMapFlags ((p `plusPtr` 16 :: Ptr MemoryMapFlags))
-    memory <- peek @DeviceMemory ((p `plusPtr` 24 :: Ptr DeviceMemory))
-    offset <- peek @DeviceSize ((p `plusPtr` 32 :: Ptr DeviceSize))
-    size <- peek @DeviceSize ((p `plusPtr` 40 :: Ptr DeviceSize))
-    pure $ MemoryMapInfoKHR
-             next flags memory offset size
 
-instance es ~ '[] => Zero (MemoryMapInfoKHR es) where
-  zero = MemoryMapInfoKHR
-           ()
-           zero
-           zero
-           zero
-           zero
+-- No documentation found for TopLevel "VkMemoryUnmapFlagBitsKHR"
+type MemoryUnmapFlagBitsKHR = MemoryUnmapFlagBits
 
 
--- | VkMemoryUnmapInfoKHR - Structure containing parameters of a memory unmap
--- operation
---
--- == Valid Usage
---
--- -   #VUID-VkMemoryUnmapInfoKHR-memory-07964# @memory@ /must/ be
---     currently host mapped
---
--- -   #VUID-VkMemoryUnmapInfoKHR-flags-09579# If
---     'MEMORY_UNMAP_RESERVE_BIT_EXT' is set in @flags@, the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-memoryUnmapReserve memoryUnmapReserve>
---     /must/ be enabled
---
--- -   #VUID-VkMemoryUnmapInfoKHR-flags-09580# If
---     'MEMORY_UNMAP_RESERVE_BIT_EXT' is set in @flags@, the memory object
---     /must/ not have been imported from a handle type of
---     'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT'
---     or
---     'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT'
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkMemoryUnmapInfoKHR-sType-sType# @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MEMORY_UNMAP_INFO_KHR'
---
--- -   #VUID-VkMemoryUnmapInfoKHR-pNext-pNext# @pNext@ /must/ be @NULL@
---
--- -   #VUID-VkMemoryUnmapInfoKHR-flags-parameter# @flags@ /must/ be a
---     valid combination of 'MemoryUnmapFlagBitsKHR' values
---
--- -   #VUID-VkMemoryUnmapInfoKHR-memory-parameter# @memory@ /must/ be a
---     valid 'Vulkan.Core10.Handles.DeviceMemory' handle
---
--- == Host Synchronization
---
--- -   Host access to @memory@ /must/ be externally synchronized
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_map_memory2 VK_KHR_map_memory2>,
--- 'Vulkan.Core10.Handles.DeviceMemory', 'MemoryUnmapFlagsKHR',
--- 'Vulkan.Core10.Enums.StructureType.StructureType', 'unmapMemory2KHR'
-data MemoryUnmapInfoKHR = MemoryUnmapInfoKHR
-  { -- | @flags@ is a bitmask of 'MemoryUnmapFlagBitsKHR' specifying additional
-    -- parameters of the memory map operation.
-    flags :: MemoryUnmapFlagsKHR
-  , -- | @memory@ is the 'Vulkan.Core10.Handles.DeviceMemory' object to be
-    -- unmapped.
-    memory :: DeviceMemory
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (MemoryUnmapInfoKHR)
-#endif
-deriving instance Show MemoryUnmapInfoKHR
-
-instance ToCStruct MemoryUnmapInfoKHR where
-  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p MemoryUnmapInfoKHR{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MEMORY_UNMAP_INFO_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr MemoryUnmapFlagsKHR)) (flags)
-    poke ((p `plusPtr` 24 :: Ptr DeviceMemory)) (memory)
-    f
-  cStructSize = 32
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MEMORY_UNMAP_INFO_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 24 :: Ptr DeviceMemory)) (zero)
-    f
-
-instance FromCStruct MemoryUnmapInfoKHR where
-  peekCStruct p = do
-    flags <- peek @MemoryUnmapFlagsKHR ((p `plusPtr` 16 :: Ptr MemoryUnmapFlagsKHR))
-    memory <- peek @DeviceMemory ((p `plusPtr` 24 :: Ptr DeviceMemory))
-    pure $ MemoryUnmapInfoKHR
-             flags memory
-
-instance Storable MemoryUnmapInfoKHR where
-  sizeOf ~_ = 32
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero MemoryUnmapInfoKHR where
-  zero = MemoryUnmapInfoKHR
-           zero
-           zero
+-- No documentation found for TopLevel "VkMemoryMapInfoKHR"
+type MemoryMapInfoKHR = MemoryMapInfo
 
 
-type MemoryUnmapFlagsKHR = MemoryUnmapFlagBitsKHR
-
--- | VkMemoryUnmapFlagBitsKHR - Bitmask specifying additional parameters of a
--- memory unmap
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_map_memory2 VK_KHR_map_memory2>,
--- 'MemoryUnmapFlagsKHR'
-newtype MemoryUnmapFlagBitsKHR = MemoryUnmapFlagBitsKHR Flags
-  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
-
--- | 'MEMORY_UNMAP_RESERVE_BIT_EXT' requests that virtual address range
--- currently occupied by the memory map remain reserved after the
--- 'unmapMemory2KHR' call completes. Future system memory map operations or
--- calls to 'Vulkan.Core10.Memory.mapMemory' or 'mapMemory2KHR' will not
--- return addresses in that range unless the range has since been
--- unreserved by the application or the mapping is explicitly placed in
--- that range by calling 'mapMemory2KHR' with
--- 'Vulkan.Core10.Enums.MemoryMapFlagBits.MEMORY_MAP_PLACED_BIT_EXT', or
--- doing the system memory map equivalent. When
--- 'MEMORY_UNMAP_RESERVE_BIT_EXT' is set, the memory unmap operation /may/
--- fail, in which case the memory object will remain host mapped and
--- 'unmapMemory2KHR' will return
--- 'Vulkan.Core10.Enums.Result.ERROR_MEMORY_MAP_FAILED'.
-pattern MEMORY_UNMAP_RESERVE_BIT_EXT = MemoryUnmapFlagBitsKHR 0x00000001
-
-conNameMemoryUnmapFlagBitsKHR :: String
-conNameMemoryUnmapFlagBitsKHR = "MemoryUnmapFlagBitsKHR"
-
-enumPrefixMemoryUnmapFlagBitsKHR :: String
-enumPrefixMemoryUnmapFlagBitsKHR = "MEMORY_UNMAP_RESERVE_BIT_EXT"
-
-showTableMemoryUnmapFlagBitsKHR :: [(MemoryUnmapFlagBitsKHR, String)]
-showTableMemoryUnmapFlagBitsKHR = [(MEMORY_UNMAP_RESERVE_BIT_EXT, "")]
-
-instance Show MemoryUnmapFlagBitsKHR where
-  showsPrec =
-    enumShowsPrec
-      enumPrefixMemoryUnmapFlagBitsKHR
-      showTableMemoryUnmapFlagBitsKHR
-      conNameMemoryUnmapFlagBitsKHR
-      (\(MemoryUnmapFlagBitsKHR x) -> x)
-      (\x -> showString "0x" . showHex x)
+-- No documentation found for TopLevel "VkMemoryUnmapInfoKHR"
+type MemoryUnmapInfoKHR = MemoryUnmapInfo
 
-instance Read MemoryUnmapFlagBitsKHR where
-  readPrec =
-    enumReadPrec
-      enumPrefixMemoryUnmapFlagBitsKHR
-      showTableMemoryUnmapFlagBitsKHR
-      conNameMemoryUnmapFlagBitsKHR
-      MemoryUnmapFlagBitsKHR
 
 type KHR_MAP_MEMORY_2_SPEC_VERSION = 1
 
diff --git a/src/Vulkan/Extensions/VK_KHR_map_memory2.hs-boot b/src/Vulkan/Extensions/VK_KHR_map_memory2.hs-boot
deleted file mode 100644
--- a/src/Vulkan/Extensions/VK_KHR_map_memory2.hs-boot
+++ /dev/null
@@ -1,137 +0,0 @@
-{-# language CPP #-}
--- | = Name
---
--- VK_KHR_map_memory2 - device extension
---
--- = VK_KHR_map_memory2
---
--- [__Name String__]
---     @VK_KHR_map_memory2@
---
--- [__Extension Type__]
---     Device extension
---
--- [__Registered Extension Number__]
---     272
---
--- [__Revision__]
---     1
---
--- [__Ratification Status__]
---     Ratified
---
--- [__Extension and Version Dependencies__]
---     None
---
--- [__Contact__]
---
---     -   Faith Ekstrand
---         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_map_memory2] @gfxstrand%0A*Here describe the issue or question you have about the VK_KHR_map_memory2 extension* >
---
--- [__Extension Proposal__]
---     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_KHR_map_memory2.adoc VK_KHR_map_memory2>
---
--- == Other Extension Metadata
---
--- [__Last Modified Date__]
---     2023-03-14
---
--- [__Interactions and External Dependencies__]
---
---     -   None
---
--- [__Contributors__]
---
---     -   Faith Ekstrand, Collabora
---
---     -   Tobias Hector, AMD
---
--- == Description
---
--- This extension provides extensible versions of the Vulkan memory map and
--- unmap commands. The new commands are functionally identical to the core
--- commands, except that their parameters are specified using extensible
--- structures that can be used to pass extension-specific information.
---
--- == New Commands
---
--- -   'mapMemory2KHR'
---
--- -   'unmapMemory2KHR'
---
--- == New Structures
---
--- -   'MemoryMapInfoKHR'
---
--- -   'MemoryUnmapInfoKHR'
---
--- == New Enums
---
--- -   'MemoryUnmapFlagBitsKHR'
---
--- == New Bitmasks
---
--- -   'MemoryUnmapFlagsKHR'
---
--- == New Enum Constants
---
--- -   'KHR_MAP_MEMORY_2_EXTENSION_NAME'
---
--- -   'KHR_MAP_MEMORY_2_SPEC_VERSION'
---
--- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MEMORY_MAP_INFO_KHR'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MEMORY_UNMAP_INFO_KHR'
---
--- == Version History
---
--- -   Revision 0, 2022-08-03 (Faith Ekstrand)
---
---     -   Internal revisions
---
--- -   Revision 1, 2023-03-14
---
---     -   Public release
---
--- == See Also
---
--- No cross-references are available
---
--- == Document Notes
---
--- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_map_memory2 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_map_memory2  ( MemoryMapInfoKHR
-                                             , MemoryUnmapInfoKHR
-                                             ) 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)
-type role MemoryMapInfoKHR nominal
-data MemoryMapInfoKHR (es :: [Type])
-
-instance ( Extendss MemoryMapInfoKHR es
-         , PokeChain es ) => ToCStruct (MemoryMapInfoKHR es)
-instance Show (Chain es) => Show (MemoryMapInfoKHR es)
-
-instance ( Extendss MemoryMapInfoKHR es
-         , PeekChain es ) => FromCStruct (MemoryMapInfoKHR es)
-
-
-data MemoryUnmapInfoKHR
-
-instance ToCStruct MemoryUnmapInfoKHR
-instance Show MemoryUnmapInfoKHR
-
-instance FromCStruct MemoryUnmapInfoKHR
-
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
@@ -67,7 +67,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass render pass>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass render pass>
 -- creation with the
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_multiview.RenderPassMultiviewCreateInfo'
 -- passed into 'Vulkan.Core10.Pass.RenderPassCreateInfo'::@pNext@.
@@ -125,11 +125,11 @@
 --
 -- == New Built-In Variables
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-viewindex ViewIndex>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-viewindex ViewIndex>
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-MultiView MultiView>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-MultiView MultiView>
 --
 -- == Version History
 --
@@ -144,7 +144,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_multiview Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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_opacity_micromap.hs b/src/Vulkan/Extensions/VK_KHR_opacity_micromap.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_KHR_opacity_micromap.hs
@@ -0,0 +1,1350 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_KHR_opacity_micromap - device extension
+--
+-- = VK_KHR_opacity_micromap
+--
+-- [__Name String__]
+--     @VK_KHR_opacity_micromap@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     624
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_device_address_commands VK_KHR_device_address_commands>
+--
+-- [__API Interactions__]
+--
+--     -   Interacts with VK_VERSION_1_4
+--
+--     -   Interacts with VK_EXT_shader_object
+--
+--     -   Interacts with VK_KHR_maintenance5
+--
+-- [__SPIR-V Dependencies__]
+--
+--     -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/EXT/SPV_EXT_opacity_micromap.html SPV_EXT_opacity_micromap>
+--
+--     -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/KHR/SPV_KHR_opacity_micromap.html SPV_KHR_opacity_micromap>
+--
+-- [__Contact__]
+--
+--     -   Matthew Netsch
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_opacity_micromap] @mnetsch%0A*Here describe the issue or question you have about the VK_KHR_opacity_micromap extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_KHR_opacity_micromap.adoc VK_KHR_opacity_micromap>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2026-05-08
+--
+-- [__Interactions and External Dependencies__]
+--
+--     -   This extension provides API support for
+--         <https://github.com/KhronosGroup/GLSL/blob/main/extensions/ext/GLSL_EXT_opacity_micromap.txt GLSL_EXT_opacity_micromap>
+--
+--     -   This extension provides API support for
+--         <https://github.com/KhronosGroup/GLSL/blob/main/extensions/ext/GLSL_EXT_opacity_micromap_ray_query_mode.txt GLSL_EXT_opacity_micromap_ray_query_mode>
+--
+-- [__Contributors__]
+--
+--     -   Matthew Netsch, Qualcomm Technologies, Inc
+--
+--     -   Aleksandra Krstic, Qualcomm Technologies, Inc
+--
+--     -   Eric Werness, NVIDIA
+--
+--     -   Daniel Koch, NVIDIA
+--
+--     -   Stu Smith, AMD
+--
+--     -   Sven Woop, Intel
+--
+--     -   Anton Berko, MediaTek
+--
+--     -   Radoslaw Drabinski, Intel
+--
+--     -   Simon Fenney, Imagination Technologies
+--
+--     -   Andrew Garrard, Imagination Technologies
+--
+--     -   Dae Kim, Imagination Technologies
+--
+--     -   Fred Saucedo, Qualcomm Technologies, Inc
+--
+--     -   Ramesh babu Admimula, Qualcomm Technologies, Inc
+--
+--     -   Zedian Zhang, Qualcomm Technologies, Inc
+--
+--     -   Hans-Kristian Arntzen, Valve
+--
+--     -   Vikram Kushwaha, NVIDIA
+--
+--     -   Spencer Fricke, LunarG
+--
+--     -   Revanth Ponna, Qualcomm Technologies, Inc
+--
+--     -   Contributors to @VK_EXT_opacity_micromap@
+--
+-- == Description
+--
+-- When adding transparency to a ray traced scene, an application can
+-- choose between further tessellating the geometry or using an any-hit
+-- shader to allow the ray through specific parts of the geometry. These
+-- options have the downside of either significantly increasing memory
+-- consumption or adding runtime overhead to run shader code in the middle
+-- of traversal, respectively.
+--
+-- This extension adds the ability to add an /opacity micromap/ to geometry
+-- when building an acceleration structure. The opacity micromap compactly
+-- encodes opacity information which can be read by the implementation to
+-- mark parts of triangles as opaque or transparent. The format is
+-- externally visible to allow the application to compress its internal
+-- geometry and surface representations into the compressed format ahead of
+-- time. The compressed format subdivides each triangle into a set of
+-- subtriangles, each of which can be assigned either two or four opacity
+-- values. These opacity values can control if a ray hitting that
+-- subtriangle is treated as an opaque hit, complete miss, or possible hit,
+-- depending on the controls described in
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#ray-opacity-micromap Ray Opacity Micromap>.
+--
+-- This extension provides:
+--
+-- -   the ability to create micromaps as
+--     'Vulkan.Extensions.Handles.AccelerationStructureKHR' structures
+--
+-- -   the ability to build, copy, and query micromaps with the
+--     acceleration structure functions, and
+--
+-- -   a structure to extend
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureGeometryTrianglesDataKHR'
+--     to attach a micromap to the geometry of the acceleration structure.
+--
+-- == New Structures
+--
+-- -   'MicromapTriangleKHR'
+--
+-- -   'MicromapUsageKHR'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureGeometryKHR':
+--
+--     -   'AccelerationStructureGeometryMicromapDataKHR'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureGeometryTrianglesDataKHR',
+--     'Vulkan.Extensions.VK_AMDX_dense_geometry_format.AccelerationStructureDenseGeometryFormatTrianglesDataAMDX':
+--
+--     -   'AccelerationStructureTrianglesOpacityMicromapKHR'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceOpacityMicromapFeaturesKHR'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDeviceOpacityMicromapPropertiesKHR'
+--
+-- == New Enums
+--
+-- -   'AccelerationStructureSerializedBlockTypeKHR'
+--
+-- -   'OpacityMicromapFormatKHR'
+--
+-- -   'OpacityMicromapSpecialIndexKHR'
+--
+-- == New Enum Constants
+--
+-- -   'KHR_OPACITY_MICROMAP_EXTENSION_NAME'
+--
+-- -   'KHR_OPACITY_MICROMAP_SPEC_VERSION'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureTypeKHR':
+--
+--     -   'Vulkan.Extensions.VK_KHR_acceleration_structure.ACCELERATION_STRUCTURE_TYPE_OPACITY_MICROMAP_KHR'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.BuildAccelerationStructureFlagBitsKHR':
+--
+--     -   'Vulkan.Extensions.VK_KHR_acceleration_structure.BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_BIT_KHR'
+--
+--     -   'Vulkan.Extensions.VK_KHR_acceleration_structure.BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_BIT_KHR'
+--
+--     -   'Vulkan.Extensions.VK_KHR_acceleration_structure.BUILD_ACCELERATION_STRUCTURE_MICROMAP_LOSSY_BIT_KHR'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.GeometryInstanceFlagBitsKHR':
+--
+--     -   'Vulkan.Extensions.VK_KHR_acceleration_structure.GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_BIT_KHR'
+--
+--     -   'Vulkan.Extensions.VK_KHR_acceleration_structure.GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_BIT_KHR'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.GeometryTypeKHR':
+--
+--     -   'Vulkan.Extensions.VK_KHR_acceleration_structure.GEOMETRY_TYPE_MICROMAP_KHR'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits':
+--
+--     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_KHR'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MICROMAP_DATA_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_PROPERTIES_KHR'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_shader_object VK_EXT_shader_object>
+-- is supported:
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_EXT_shader_object.ShaderCreateFlagBitsEXT':
+--
+--     -   'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_EXT'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance5 VK_KHR_maintenance5>
+-- or
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.4 Vulkan Version 1.4>
+-- is supported:
+--
+-- -   Extending
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PipelineCreateFlagBits2':
+--
+--     -   'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_KHR'
+--
+--     -   'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_RAY_TRACING_OPACITY_MICROMAP_BIT_KHR'
+--
+-- == Reference Code
+--
+-- The following code illustrates an algorithm that converts the
+-- barycentric coordinates inside a triangle into an OMM array index:
+--
+-- > uint32_t BarycentricsToSpaceFillingCurveIndex(float u, float v, uint32_t level)
+-- > {
+-- >     u = clamp(u, 0.0f, 1.0f);
+-- >     v = clamp(v, 0.0f, 1.0f);
+-- >
+-- >     uint32_t iu, iv, iw;
+-- >
+-- >     // Quantize barycentric coordinates
+-- >     float fu = u * (1u << level);
+-- >     float fv = v * (1u << level);
+-- >
+-- >     iu = (uint32_t)fu;
+-- >     iv = (uint32_t)fv;
+-- >
+-- >     float uf = fu - float(iu);
+-- >     float vf = fv - float(iv);
+-- >
+-- >     if (iu >= (1u << level)) iu = (1u << level) - 1u;
+-- >     if (iv >= (1u << level)) iv = (1u << level) - 1u;
+-- >
+-- >     uint32_t iuv = iu + iv;
+-- >
+-- >     if (iuv >= (1u << level))
+-- >         iu -= iuv - (1u << level) + 1u;
+-- >
+-- >     iw = ~(iu + iv);
+-- >
+-- >     if (uf + vf >= 1.0f && iuv < (1u << level) - 1u) --iw;
+-- >
+-- >     uint32_t b0 = ~(iu ^ iw);
+-- >     b0 &= ((1u << level) - 1u);
+-- >     uint32_t t = (iu ^ iv) & b0;
+-- >
+-- >     uint32_t f = t;
+-- >     f ^= f >> 1u;
+-- >     f ^= f >> 2u;
+-- >     f ^= f >> 4u;
+-- >     f ^= f >> 8u;
+-- >     uint32_t b1 = ((f ^ iu) & ~b0) | t;
+-- >
+-- >     // Interleave bits
+-- >     b0 = (b0 | (b0 << 8u)) & 0x00ff00ffu;
+-- >     b0 = (b0 | (b0 << 4u)) & 0x0f0f0f0fu;
+-- >     b0 = (b0 | (b0 << 2u)) & 0x33333333u;
+-- >     b0 = (b0 | (b0 << 1u)) & 0x55555555u;
+-- >     b1 = (b1 | (b1 << 8u)) & 0x00ff00ffu;
+-- >     b1 = (b1 | (b1 << 4u)) & 0x0f0f0f0fu;
+-- >     b1 = (b1 | (b1 << 2u)) & 0x33333333u;
+-- >     b1 = (b1 | (b1 << 1u)) & 0x55555555u;
+-- >
+-- >     return b0 | (b1 << 1u);
+-- > }
+--
+-- == Issues
+--
+-- (1) Is the build actually similar to an acceleration structure build?
+--
+-- -   Resolved: The build should be much lighter-weight than an
+--     acceleration structure build
+--
+-- (2) Why does VkMicromapUsageKHR not have type\/pNext?
+--
+-- -   Resolved: There can be a very large number of these structures, so
+--     doubling the size of these can be significant memory consumption.
+--     Also, an application may be loading these directly from a file which
+--     is more compatible with it being a flat structure. The including
+--     structures are extensible and are probably a more suitable place to
+--     add extensibility.
+--
+-- (3) Why is there a SPIR-V extension?
+--
+-- -   Resolved: There is a ray flag and an execution mode. To be
+--     consistent with how the existing ray tracing extensions work that
+--     these needs its own extension.
+--
+-- (4) Should there be indirect micromap build?
+--
+-- -   Resolved: Not for now. There is more in-depth usage metadata
+--     required and it seems less likely that something like a GPU culling
+--     system would need to change the counts for a micromap.
+--
+-- (5) Should the feature struct be aliased with
+-- VkPhysicalDeviceOpacityMicromapFeaturesEXT?
+--
+-- -   Resolved: No. This extension is not an exact promotion of
+--     @VK_EXT_opacity_micromap@ and provides significantly different
+--     functionality.
+--
+-- (6) Should micromaps API be similar to the @VK_EXT_opacity_micromap@?
+--
+-- @VK_EXT_opacity_micromap@ introduced almost an identical set of
+-- functionality for micromaps as acceleration structures. Should this
+-- promotion fold in micromaps as an acceleration structure type?
+--
+-- -   Resolved: Yes. While this is significant API breakage from the EXT,
+--     it is a better design choice going forward and can eliminate
+--     significant API surface area if promoted in the future.
+--
+-- (7) Should micromaps support host commands?
+--
+-- -   Resolved: No. Host commands are deprecated and not widely supported.
+--
+-- (8) Should
+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.createAccelerationStructureKHR'
+-- be used to create micromaps?
+--
+-- This interface that uses 'Vulkan.Core10.Handles.Buffer' to back
+-- micromaps is deprecated, but is still available for acceleration
+-- structure object creation.
+--
+-- -   Resolved: No. Make a new entry point that uses a device address to
+--     back micromaps and other acceleration structures instead of a
+--     buffer. Eliminate the ability to provide a separate capture\/replay
+--     address as well. Top-level acceleration structures /must/ reference
+--     the device address that backs the bottom-level acceleration
+--     structures and implementations /must/ not expose an indirect handle.
+--
+-- (9) Should
+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_BIT_EXT'
+-- be promoted from @VK_EXT_opacity_micromap@ to this extension?
+--
+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_BIT_EXT'
+-- distinguished between replacing a micromap with one of a different shape
+-- ('Vulkan.Extensions.VK_EXT_opacity_micromap.BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_BIT_EXT')
+-- and replacing one where the shape is identical and only the opacity
+-- values have changed (DATA_UPDATE). The DATA_UPDATE flag was correlated
+-- with the discardable micromap feature, where an implementation might
+-- embed micromap state directly in the acceleration structure and exploit
+-- the tighter constraint to avoid a full rebuild. However, the spec never
+-- required DATA_UPDATE to be restricted to discardable micromaps, and it
+-- was already legal to treat DATA_UPDATE identically to UPDATE.
+--
+-- -   Resolved: No. The discardable micromap feature is not promoted to
+--     this extension, removing the primary motivation for DATA_UPDATE. No
+--     implementation identified a meaningful optimization from the
+--     stricter constraint beyond what UPDATE already provides, and no CTS
+--     coverage existed for either opacity micromap update flag in the EXT.
+--     Removing it is a pure API simplification with no functional loss.
+--     Applications must still perform a BLAS build update when opacity
+--     micromap data changes, even if only values and not structure have
+--     changed.
+--
+-- == Version History
+--
+-- -   Revision 1, 2026-05-08 (Matthew Netsch)
+--
+--     -   Initial draft
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_opacity_micromap 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_opacity_micromap  ( AccelerationStructureGeometryMicromapDataKHR(..)
+                                                  , MicromapUsageKHR(..)
+                                                  , MicromapTriangleKHR(..)
+                                                  , PhysicalDeviceOpacityMicromapFeaturesKHR(..)
+                                                  , PhysicalDeviceOpacityMicromapPropertiesKHR(..)
+                                                  , AccelerationStructureTrianglesOpacityMicromapKHR(..)
+                                                  , OpacityMicromapFormatKHR( OPACITY_MICROMAP_FORMAT_2_STATE_KHR
+                                                                            , OPACITY_MICROMAP_FORMAT_4_STATE_KHR
+                                                                            , ..
+                                                                            )
+                                                  , OpacityMicromapSpecialIndexKHR( OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_TRANSPARENT_KHR
+                                                                                  , OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_OPAQUE_KHR
+                                                                                  , OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_TRANSPARENT_KHR
+                                                                                  , OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_OPAQUE_KHR
+                                                                                  , ..
+                                                                                  )
+                                                  , AccelerationStructureSerializedBlockTypeKHR( ACCELERATION_STRUCTURE_SERIALIZED_BLOCK_TYPE_OPACITY_MICROMAP_KHR
+                                                                                               , ..
+                                                                                               )
+                                                  , KHR_OPACITY_MICROMAP_SPEC_VERSION
+                                                  , pattern KHR_OPACITY_MICROMAP_SPEC_VERSION
+                                                  , KHR_OPACITY_MICROMAP_EXTENSION_NAME
+                                                  , pattern KHR_OPACITY_MICROMAP_EXTENSION_NAME
+                                                  , AccelerationStructureKHR(..)
+                                                  , GeometryInstanceFlagBitsKHR(..)
+                                                  , GeometryInstanceFlagsKHR
+                                                  , BuildAccelerationStructureFlagBitsKHR(..)
+                                                  , BuildAccelerationStructureFlagsKHR
+                                                  , AccelerationStructureTypeKHR(..)
+                                                  , GeometryTypeKHR(..)
+                                                  , ShaderCreateFlagBitsEXT(..)
+                                                  , ShaderCreateFlagsEXT
+                                                  ) 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 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 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.Word (Word16)
+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.Extensions.Handles (AccelerationStructureKHR)
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.Core10.FundamentalTypes (DeviceAddress)
+import Vulkan.Core10.FundamentalTypes (DeviceSize)
+import Vulkan.Core10.Enums.IndexType (IndexType)
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MICROMAP_DATA_KHR))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_KHR))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_KHR))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_PROPERTIES_KHR))
+import Vulkan.Extensions.Handles (AccelerationStructureKHR(..))
+import Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureTypeKHR(..))
+import Vulkan.Extensions.VK_KHR_acceleration_structure (BuildAccelerationStructureFlagBitsKHR(..))
+import Vulkan.Extensions.VK_KHR_acceleration_structure (BuildAccelerationStructureFlagsKHR)
+import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryInstanceFlagBitsKHR(..))
+import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryInstanceFlagsKHR)
+import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryTypeKHR(..))
+import Vulkan.Extensions.VK_EXT_shader_object (ShaderCreateFlagBitsEXT(..))
+import Vulkan.Extensions.VK_EXT_shader_object (ShaderCreateFlagsEXT)
+-- | VkAccelerationStructureGeometryMicromapDataKHR - Structure specifying
+-- the data used to build a micromap
+--
+-- = Description
+--
+-- Only one of @pUsageCounts@ or @ppUsageCounts@ /can/ be a valid pointer,
+-- the other /must/ be @NULL@. The elements of the non-@NULL@ array
+-- describe the total counts used to build each micromap. Each element
+-- contains a @count@ which is the number of micromap triangles of that
+-- @format@ and @subdivisionLevel@ contained in the micromap. Multiple
+-- elements with the same @format@ and @subdivisionLevel@ are allowed and
+-- the total count for that @format@ and @subdivisionLevel@ is the sum of
+-- the @count@ for each element.
+--
+-- Each micromap triangle refers to one element in @triangleArray@ which
+-- contains the @format@ and @subdivisionLevel@ for that particular
+-- triangle as well as a @dataOffset@ in bytes which is the location
+-- relative to @data@ where that triangle’s micromap data begins. The data
+-- at @triangleArray@ is laid out as a 4 byte unsigned integer for the
+-- @dataOffset@ followed by a 2 byte unsigned integer for the subdivision
+-- level then a 2 byte unsigned integer for the format. In practice,
+-- compilers compile 'MicromapTriangleKHR' to match this pattern.
+--
+-- For opacity micromaps, the data at @data@ is packed as either one bit
+-- per element for 'OPACITY_MICROMAP_FORMAT_2_STATE_KHR' or two bits per
+-- element for 'OPACITY_MICROMAP_FORMAT_4_STATE_KHR' and is packed from LSB
+-- to MSB in each byte. The data at each index in those bytes is
+-- interpreted as discussed in
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#ray-opacity-micromap Ray Opacity Micromap>.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkAccelerationStructureGeometryMicromapDataKHR-pUsageCounts-11642#
+--     Only one of @pUsageCounts@ or @ppUsageCounts@ /can/ be a valid
+--     pointer, the other /must/ be @NULL@
+--
+-- -   #VUID-VkAccelerationStructureGeometryMicromapDataKHR-count-11643#
+--     The total sum of @count@ from all elements of @pUsageCounts@ and
+--     @ppUsageCounts@ /must/ be less than or equal to
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxMicromapTriangles maxMicromapTriangles>
+--
+-- -   #VUID-VkAccelerationStructureGeometryMicromapDataKHR-subdivisionLevel-11645#
+--     For each member of @pUsageCounts@ or @ppUsageCounts@, if @format@ is
+--     'OPACITY_MICROMAP_FORMAT_2_STATE_KHR', @subdivisionLevel@ /must/ be
+--     less than or equal to
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxOpacity2StateSubdivisionLevel maxOpacity2StateSubdivisionLevel>
+--
+-- -   #VUID-VkAccelerationStructureGeometryMicromapDataKHR-triangleArrayStride-11646#
+--     @triangleArrayStride@ /must/ be greater than or equal to @8@ bytes
+--
+-- -   #VUID-VkAccelerationStructureGeometryMicromapDataKHR-triangleArrayStride-11647#
+--     @triangleArrayStride@ /must/ be a multiple of @4@ bytes
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkAccelerationStructureGeometryMicromapDataKHR-sType-sType#
+--     @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MICROMAP_DATA_KHR'
+--
+-- -   #VUID-VkAccelerationStructureGeometryMicromapDataKHR-pUsageCounts-parameter#
+--     If @usageCountsCount@ is not @0@, and @pUsageCounts@ is not @NULL@,
+--     @pUsageCounts@ /must/ be a valid pointer to an array of
+--     @usageCountsCount@ valid 'MicromapUsageKHR' structures
+--
+-- -   #VUID-VkAccelerationStructureGeometryMicromapDataKHR-ppUsageCounts-parameter#
+--     If @usageCountsCount@ is not @0@, and @ppUsageCounts@ is not @NULL@,
+--     @ppUsageCounts@ /must/ be a valid pointer to an array of
+--     @usageCountsCount@ valid pointers to valid 'MicromapUsageKHR'
+--     structures
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureGeometryKHR'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_opacity_micromap VK_KHR_opacity_micromap>,
+-- 'Vulkan.Core10.FundamentalTypes.DeviceAddress',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize', 'MicromapUsageKHR',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data AccelerationStructureGeometryMicromapDataKHR = AccelerationStructureGeometryMicromapDataKHR
+  { -- | @pUsageCounts@ is a pointer to an array of 'MicromapUsageKHR'
+    -- structures.
+    usageCounts :: Vector MicromapUsageKHR
+  , -- | @data@ is the device address to memory which contains the data for the
+    -- micromap.
+    data' :: DeviceAddress
+  , -- | @triangleArray@ is the device address to memory containing the
+    -- 'MicromapTriangleKHR' data
+    triangleArray :: DeviceAddress
+  , -- | @triangleArrayStride@ is the stride in bytes between each element of
+    -- @triangleArray@
+    triangleArrayStride :: DeviceSize
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (AccelerationStructureGeometryMicromapDataKHR)
+#endif
+deriving instance Show AccelerationStructureGeometryMicromapDataKHR
+
+instance ToCStruct AccelerationStructureGeometryMicromapDataKHR where
+  withCStruct x f = allocaBytes 64 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p AccelerationStructureGeometryMicromapDataKHR{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MICROMAP_DATA_KHR)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (usageCounts)) :: Word32))
+    pPUsageCounts' <- ContT $ allocaBytes @MicromapUsageKHR ((Data.Vector.length (usageCounts)) * 12)
+    lift $ Data.Vector.imapM_ (\i e -> poke (pPUsageCounts' `plusPtr` (12 * (i)) :: Ptr MicromapUsageKHR) (e)) (usageCounts)
+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr MicromapUsageKHR))) (pPUsageCounts')
+    lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr (Ptr MicromapUsageKHR)))) (nullPtr)
+    lift $ poke ((p `plusPtr` 40 :: Ptr DeviceAddress)) (data')
+    lift $ poke ((p `plusPtr` 48 :: Ptr DeviceAddress)) (triangleArray)
+    lift $ poke ((p `plusPtr` 56 :: Ptr DeviceSize)) (triangleArrayStride)
+    lift $ f
+  cStructSize = 64
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MICROMAP_DATA_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 32 :: Ptr (Ptr (Ptr MicromapUsageKHR)))) (nullPtr)
+    poke ((p `plusPtr` 40 :: Ptr DeviceAddress)) (zero)
+    poke ((p `plusPtr` 48 :: Ptr DeviceAddress)) (zero)
+    poke ((p `plusPtr` 56 :: Ptr DeviceSize)) (zero)
+    f
+
+instance FromCStruct AccelerationStructureGeometryMicromapDataKHR where
+  peekCStruct p = do
+    usageCountsCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    pUsageCounts <- peek @(Ptr MicromapUsageKHR) ((p `plusPtr` 24 :: Ptr (Ptr MicromapUsageKHR)))
+    pUsageCounts' <- generateM (fromIntegral usageCountsCount) (\i -> peekCStruct @MicromapUsageKHR ((pUsageCounts `advancePtrBytes` (12 * (i)) :: Ptr MicromapUsageKHR)))
+    data' <- peek @DeviceAddress ((p `plusPtr` 40 :: Ptr DeviceAddress))
+    triangleArray <- peek @DeviceAddress ((p `plusPtr` 48 :: Ptr DeviceAddress))
+    triangleArrayStride <- peek @DeviceSize ((p `plusPtr` 56 :: Ptr DeviceSize))
+    pure $ AccelerationStructureGeometryMicromapDataKHR
+             pUsageCounts' data' triangleArray triangleArrayStride
+
+instance Zero AccelerationStructureGeometryMicromapDataKHR where
+  zero = AccelerationStructureGeometryMicromapDataKHR
+           mempty
+           zero
+           zero
+           zero
+
+
+-- | VkMicromapUsageKHR - Structure specifying the usage information used to
+-- build a micromap
+--
+-- = Description
+--
+-- The @format@ is interpreted based on the @type@ of the micromap using
+-- it.
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_opacity_micromap VK_KHR_opacity_micromap>,
+-- 'AccelerationStructureGeometryMicromapDataKHR',
+-- 'OpacityMicromapFormatKHR'
+data MicromapUsageKHR = MicromapUsageKHR
+  { -- | @count@ is the number of triangles in the usage format defined by the
+    -- @subdivisionLevel@ and @format@ below in the micromap
+    count :: Word32
+  , -- | @subdivisionLevel@ is the subdivision level of this usage format
+    subdivisionLevel :: Word32
+  , -- | @format@ is the format of this usage format
+    --
+    -- #VUID-VkMicromapUsageKHR-format-parameter# @format@ /must/ be a valid
+    -- 'OpacityMicromapFormatKHR' value
+    format :: OpacityMicromapFormatKHR
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (MicromapUsageKHR)
+#endif
+deriving instance Show MicromapUsageKHR
+
+instance ToCStruct MicromapUsageKHR where
+  withCStruct x f = allocaBytes 12 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p MicromapUsageKHR{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr Word32)) (count)
+    poke ((p `plusPtr` 4 :: Ptr Word32)) (subdivisionLevel)
+    poke ((p `plusPtr` 8 :: Ptr OpacityMicromapFormatKHR)) (format)
+    f
+  cStructSize = 12
+  cStructAlignment = 4
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 8 :: Ptr OpacityMicromapFormatKHR)) (zero)
+    f
+
+instance FromCStruct MicromapUsageKHR where
+  peekCStruct p = do
+    count <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))
+    subdivisionLevel <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))
+    format <- peek @OpacityMicromapFormatKHR ((p `plusPtr` 8 :: Ptr OpacityMicromapFormatKHR))
+    pure $ MicromapUsageKHR
+             count subdivisionLevel format
+
+instance Storable MicromapUsageKHR where
+  sizeOf ~_ = 12
+  alignment ~_ = 4
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero MicromapUsageKHR where
+  zero = MicromapUsageKHR
+           zero
+           zero
+           zero
+
+
+-- | VkMicromapTriangleKHR - Structure specifying the micromap format and
+-- data for a triangle
+--
+-- = Description
+--
+-- The @format@ is interpreted based on the @type@ of the micromap using
+-- it.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_opacity_micromap VK_EXT_opacity_micromap>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_opacity_micromap VK_KHR_opacity_micromap>
+data MicromapTriangleKHR = MicromapTriangleKHR
+  { -- | @dataOffset@ is the offset in bytes of the start of the data for this
+    -- triangle. This is a byte aligned value.
+    dataOffset :: Word32
+  , -- | @subdivisionLevel@ is the subdivision level of this triangle
+    subdivisionLevel :: Word16
+  , -- | @format@ is the format of this triangle
+    format :: Word16
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (MicromapTriangleKHR)
+#endif
+deriving instance Show MicromapTriangleKHR
+
+instance ToCStruct MicromapTriangleKHR where
+  withCStruct x f = allocaBytes 8 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p MicromapTriangleKHR{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr Word32)) (dataOffset)
+    poke ((p `plusPtr` 4 :: Ptr Word16)) (subdivisionLevel)
+    poke ((p `plusPtr` 6 :: Ptr Word16)) (format)
+    f
+  cStructSize = 8
+  cStructAlignment = 4
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 4 :: Ptr Word16)) (zero)
+    poke ((p `plusPtr` 6 :: Ptr Word16)) (zero)
+    f
+
+instance FromCStruct MicromapTriangleKHR where
+  peekCStruct p = do
+    dataOffset <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))
+    subdivisionLevel <- peek @Word16 ((p `plusPtr` 4 :: Ptr Word16))
+    format <- peek @Word16 ((p `plusPtr` 6 :: Ptr Word16))
+    pure $ MicromapTriangleKHR
+             dataOffset subdivisionLevel format
+
+instance Storable MicromapTriangleKHR where
+  sizeOf ~_ = 8
+  alignment ~_ = 4
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero MicromapTriangleKHR where
+  zero = MicromapTriangleKHR
+           zero
+           zero
+           zero
+
+
+-- | VkPhysicalDeviceOpacityMicromapFeaturesKHR - Structure describing the
+-- ray tracing opacity micromap features that can be supported by an
+-- implementation
+--
+-- = Members
+--
+-- This structure describes the following feature:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceOpacityMicromapFeaturesKHR' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceOpacityMicromapFeaturesKHR', it /must/ add an instance of
+-- the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_opacity_micromap VK_KHR_opacity_micromap>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceOpacityMicromapFeaturesKHR = PhysicalDeviceOpacityMicromapFeaturesKHR
+  { -- | #features-micromap# @micromap@ indicates whether the implementation
+    -- supports the micromap array feature.
+    micromap :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceOpacityMicromapFeaturesKHR)
+#endif
+deriving instance Show PhysicalDeviceOpacityMicromapFeaturesKHR
+
+instance ToCStruct PhysicalDeviceOpacityMicromapFeaturesKHR where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceOpacityMicromapFeaturesKHR{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (micromap))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceOpacityMicromapFeaturesKHR where
+  peekCStruct p = do
+    micromap <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDeviceOpacityMicromapFeaturesKHR
+             (bool32ToBool micromap)
+
+instance Storable PhysicalDeviceOpacityMicromapFeaturesKHR where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceOpacityMicromapFeaturesKHR where
+  zero = PhysicalDeviceOpacityMicromapFeaturesKHR
+           zero
+
+
+-- | VkPhysicalDeviceOpacityMicromapPropertiesKHR - Structure describing the
+-- opacity micromap properties of a physical device
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceOpacityMicromapPropertiesKHR' 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.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_opacity_micromap VK_KHR_opacity_micromap>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceOpacityMicromapPropertiesKHR = PhysicalDeviceOpacityMicromapPropertiesKHR
+  { -- | #limits-maxOpacity2StateSubdivisionLevel#
+    -- @maxOpacity2StateSubdivisionLevel@ is the maximum allowed
+    -- @subdivisionLevel@ when @format@ is
+    -- 'OPACITY_MICROMAP_FORMAT_2_STATE_KHR'.
+    maxOpacity2StateSubdivisionLevel :: Word32
+  , -- | #limits-maxOpacity4StateSubdivisionLevel#
+    -- @maxOpacity4StateSubdivisionLevel@ is the maximum allowed
+    -- @subdivisionLevel@ when @format@ is
+    -- 'OPACITY_MICROMAP_FORMAT_4_STATE_KHR' and the micromap is not built with
+    -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.BUILD_ACCELERATION_STRUCTURE_MICROMAP_LOSSY_BIT_KHR'.
+    maxOpacity4StateSubdivisionLevel :: Word32
+  , -- | #limits-maxOpacityLossy4StateSubdivisionLevel#
+    -- @maxOpacityLossy4StateSubdivisionLevel@ is the maximum allowed
+    -- @subdivisionLevel@ when @format@ is
+    -- 'OPACITY_MICROMAP_FORMAT_4_STATE_KHR' and the micromap is built with
+    -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.BUILD_ACCELERATION_STRUCTURE_MICROMAP_LOSSY_BIT_KHR'.
+    maxOpacityLossy4StateSubdivisionLevel :: Word32
+  , -- | #limits-maxMicromapTriangles# @maxMicromapTriangles@ limits the number
+    -- of triangles allowed to be specified when building a micromap
+    maxMicromapTriangles :: Word64
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceOpacityMicromapPropertiesKHR)
+#endif
+deriving instance Show PhysicalDeviceOpacityMicromapPropertiesKHR
+
+instance ToCStruct PhysicalDeviceOpacityMicromapPropertiesKHR where
+  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceOpacityMicromapPropertiesKHR{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_PROPERTIES_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (maxOpacity2StateSubdivisionLevel)
+    poke ((p `plusPtr` 20 :: Ptr Word32)) (maxOpacity4StateSubdivisionLevel)
+    poke ((p `plusPtr` 24 :: Ptr Word32)) (maxOpacityLossy4StateSubdivisionLevel)
+    poke ((p `plusPtr` 32 :: Ptr Word64)) (maxMicromapTriangles)
+    f
+  cStructSize = 40
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_PROPERTIES_KHR)
+    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` 32 :: Ptr Word64)) (zero)
+    f
+
+instance FromCStruct PhysicalDeviceOpacityMicromapPropertiesKHR where
+  peekCStruct p = do
+    maxOpacity2StateSubdivisionLevel <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    maxOpacity4StateSubdivisionLevel <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
+    maxOpacityLossy4StateSubdivisionLevel <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))
+    maxMicromapTriangles <- peek @Word64 ((p `plusPtr` 32 :: Ptr Word64))
+    pure $ PhysicalDeviceOpacityMicromapPropertiesKHR
+             maxOpacity2StateSubdivisionLevel
+             maxOpacity4StateSubdivisionLevel
+             maxOpacityLossy4StateSubdivisionLevel
+             maxMicromapTriangles
+
+instance Storable PhysicalDeviceOpacityMicromapPropertiesKHR where
+  sizeOf ~_ = 40
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceOpacityMicromapPropertiesKHR where
+  zero = PhysicalDeviceOpacityMicromapPropertiesKHR
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkAccelerationStructureTrianglesOpacityMicromapKHR - Structure
+-- specifying an opacity micromap in a bottom-level acceleration structure
+--
+-- = Description
+--
+-- If 'AccelerationStructureTrianglesOpacityMicromapKHR' is included in the
+-- @pNext@ chain of a
+-- 'Vulkan.Extensions.VK_AMDX_dense_geometry_format.AccelerationStructureDenseGeometryFormatTrianglesDataAMDX'
+-- or
+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureGeometryTrianglesDataKHR'
+-- structure, that geometry will reference that micromap.
+--
+-- For each triangle in the geometry, the acceleration structure build
+-- fetches an index from @indexBuffer@ using @indexType@ and @indexStride@
+-- if present. If @indexType@ is
+-- 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR', then the index used
+-- is the index of the triangle in the geometry.
+--
+-- If that value is the unsigned cast of one of the values from
+-- 'OpacityMicromapSpecialIndexKHR' then that triangle behaves as described
+-- for that special value in
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#ray-opacity-micromap Ray Opacity Micromap>.
+--
+-- Otherwise that triangle uses the opacity micromap information from
+-- @micromap@ at that index plus @baseTriangle@.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkAccelerationStructureTrianglesOpacityMicromapKHR-indexType-11570#
+--     @indexType@ /must/ be
+--     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT8',
+--     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT16',
+--     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT32', or
+--     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR'
+--
+-- -   #VUID-VkAccelerationStructureTrianglesOpacityMicromapKHR-indexBuffer-11571#
+--     If @indexType@ is
+--     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR', @indexBuffer@
+--     /must/ be 0
+--
+-- -   #VUID-VkAccelerationStructureTrianglesOpacityMicromapKHR-indexBuffer-11572#
+--     If @indexType@ is not
+--     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR', @indexBuffer@
+--     /must/ be a valid 'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-VkAccelerationStructureTrianglesOpacityMicromapKHR-indexStride-11573#
+--     If @indexType@ is not
+--     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR', @indexStride@
+--     /must/ be a multiple of the size in bytes of @indexType@
+--
+-- -   #VUID-VkAccelerationStructureTrianglesOpacityMicromapKHR-indexStride-11574#
+--     If @indexType@ is not
+--     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR', @indexStride@
+--     /must/ be less than or equal to 232-1
+--
+-- -   #VUID-VkAccelerationStructureTrianglesOpacityMicromapKHR-geometry-11576#
+--     If @indexType@ is
+--     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR', for each
+--     triangle index in the geometry, index plus @baseTriangle@ /must/ be
+--     less than or equal to /numTriangles/, where /numTriangles/ is given
+--     by the sum of all @count@ parameters in the @pUsageCounts@ or
+--     @ppUsageCounts@ provided to the micromap’s build command
+--
+-- -   #VUID-VkAccelerationStructureTrianglesOpacityMicromapKHR-micromap-11579#
+--     If @indexType@ is
+--     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR', @micromap@
+--     /must/ not be 'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkAccelerationStructureTrianglesOpacityMicromapKHR-sType-sType#
+--     @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_KHR'
+--
+-- -   #VUID-VkAccelerationStructureTrianglesOpacityMicromapKHR-indexType-parameter#
+--     @indexType@ /must/ be a valid
+--     'Vulkan.Core10.Enums.IndexType.IndexType' value
+--
+-- -   #VUID-VkAccelerationStructureTrianglesOpacityMicromapKHR-micromap-parameter#
+--     If @micromap@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
+--     @micromap@ /must/ be a valid
+--     'Vulkan.Extensions.Handles.AccelerationStructureKHR' handle
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Extensions.VK_AMDX_dense_geometry_format.AccelerationStructureDenseGeometryFormatTrianglesDataAMDX'
+--
+--     -   'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureGeometryTrianglesDataKHR'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_opacity_micromap VK_KHR_opacity_micromap>,
+-- 'Vulkan.Extensions.Handles.AccelerationStructureKHR',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceAddress',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
+-- 'Vulkan.Core10.Enums.IndexType.IndexType',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data AccelerationStructureTrianglesOpacityMicromapKHR = AccelerationStructureTrianglesOpacityMicromapKHR
+  { -- | @indexType@ is the type of triangle indices used when indexing this
+    -- micromap
+    indexType :: IndexType
+  , -- | @indexBuffer@ is the address containing the triangle indices
+    indexBuffer :: DeviceAddress
+  , -- | @indexStride@ is the byte stride between triangle indices
+    indexStride :: DeviceSize
+  , -- | @baseTriangle@ is the base value added to the non-negative triangle
+    -- indices
+    baseTriangle :: Word32
+  , -- | @micromap@ is the handle to the micromap object to include in this
+    -- geometry
+    micromap :: AccelerationStructureKHR
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (AccelerationStructureTrianglesOpacityMicromapKHR)
+#endif
+deriving instance Show AccelerationStructureTrianglesOpacityMicromapKHR
+
+instance ToCStruct AccelerationStructureTrianglesOpacityMicromapKHR where
+  withCStruct x f = allocaBytes 56 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p AccelerationStructureTrianglesOpacityMicromapKHR{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr IndexType)) (indexType)
+    poke ((p `plusPtr` 24 :: Ptr DeviceAddress)) (indexBuffer)
+    poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (indexStride)
+    poke ((p `plusPtr` 40 :: Ptr Word32)) (baseTriangle)
+    poke ((p `plusPtr` 48 :: Ptr AccelerationStructureKHR)) (micromap)
+    f
+  cStructSize = 56
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr IndexType)) (zero)
+    poke ((p `plusPtr` 24 :: Ptr DeviceAddress)) (zero)
+    poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (zero)
+    poke ((p `plusPtr` 40 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct AccelerationStructureTrianglesOpacityMicromapKHR where
+  peekCStruct p = do
+    indexType <- peek @IndexType ((p `plusPtr` 16 :: Ptr IndexType))
+    indexBuffer <- peek @DeviceAddress ((p `plusPtr` 24 :: Ptr DeviceAddress))
+    indexStride <- peek @DeviceSize ((p `plusPtr` 32 :: Ptr DeviceSize))
+    baseTriangle <- peek @Word32 ((p `plusPtr` 40 :: Ptr Word32))
+    micromap <- peek @AccelerationStructureKHR ((p `plusPtr` 48 :: Ptr AccelerationStructureKHR))
+    pure $ AccelerationStructureTrianglesOpacityMicromapKHR
+             indexType indexBuffer indexStride baseTriangle micromap
+
+instance Storable AccelerationStructureTrianglesOpacityMicromapKHR where
+  sizeOf ~_ = 56
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero AccelerationStructureTrianglesOpacityMicromapKHR where
+  zero = AccelerationStructureTrianglesOpacityMicromapKHR
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkOpacityMicromapFormatKHR - Format enum for opacity micromaps
+--
+-- = Description
+--
+-- -   'OPACITY_MICROMAP_FORMAT_2_STATE_KHR' specifies that the given
+--     micromap format has one bit per subtriangle encoding either fully
+--     opaque or fully transparent.
+--
+-- -   'OPACITY_MICROMAP_FORMAT_4_STATE_KHR' specifies that the given
+--     micromap format has two bits per subtriangle encoding four modes
+--     which can be interpreted as described in
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#ray-opacity-micromap Ray Opacity Micromap>.
+--
+-- For compactness, these values are stored as 16-bit in some structures.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_opacity_micromap VK_EXT_opacity_micromap>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_opacity_micromap VK_KHR_opacity_micromap>,
+-- 'MicromapUsageKHR'
+newtype OpacityMicromapFormatKHR = OpacityMicromapFormatKHR 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
+
+-- No documentation found for Nested "VkOpacityMicromapFormatKHR" "VK_OPACITY_MICROMAP_FORMAT_2_STATE_KHR"
+pattern OPACITY_MICROMAP_FORMAT_2_STATE_KHR = OpacityMicromapFormatKHR 1
+
+-- No documentation found for Nested "VkOpacityMicromapFormatKHR" "VK_OPACITY_MICROMAP_FORMAT_4_STATE_KHR"
+pattern OPACITY_MICROMAP_FORMAT_4_STATE_KHR = OpacityMicromapFormatKHR 2
+
+{-# COMPLETE
+  OPACITY_MICROMAP_FORMAT_2_STATE_KHR
+  , OPACITY_MICROMAP_FORMAT_4_STATE_KHR ::
+    OpacityMicromapFormatKHR
+  #-}
+
+conNameOpacityMicromapFormatKHR :: String
+conNameOpacityMicromapFormatKHR = "OpacityMicromapFormatKHR"
+
+enumPrefixOpacityMicromapFormatKHR :: String
+enumPrefixOpacityMicromapFormatKHR = "OPACITY_MICROMAP_FORMAT_"
+
+showTableOpacityMicromapFormatKHR :: [(OpacityMicromapFormatKHR, String)]
+showTableOpacityMicromapFormatKHR =
+  [
+    ( OPACITY_MICROMAP_FORMAT_2_STATE_KHR
+    , "2_STATE_KHR"
+    )
+  ,
+    ( OPACITY_MICROMAP_FORMAT_4_STATE_KHR
+    , "4_STATE_KHR"
+    )
+  ]
+
+instance Show OpacityMicromapFormatKHR where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixOpacityMicromapFormatKHR
+      showTableOpacityMicromapFormatKHR
+      conNameOpacityMicromapFormatKHR
+      (\(OpacityMicromapFormatKHR x) -> x)
+      (showsPrec 11)
+
+instance Read OpacityMicromapFormatKHR where
+  readPrec =
+    enumReadPrec
+      enumPrefixOpacityMicromapFormatKHR
+      showTableOpacityMicromapFormatKHR
+      conNameOpacityMicromapFormatKHR
+      OpacityMicromapFormatKHR
+
+-- | VkOpacityMicromapSpecialIndexKHR - Enum for special indices in the
+-- opacity micromap
+--
+-- = Description
+--
+-- -   'OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_TRANSPARENT_KHR' specifies
+--     that the entire triangle is fully transparent.
+--
+-- -   'OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_OPAQUE_KHR' specifies that the
+--     entire triangle is fully opaque.
+--
+-- -   'OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_TRANSPARENT_KHR'
+--     specifies that the entire triangle is unknown-transparent.
+--
+-- -   'OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_OPAQUE_KHR' specifies
+--     that the entire triangle is unknown-opaque.
+--
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkOpacityMicromapSpecialIndexEXT VK_OPACITY_MICROMAP_SPECIAL_INDEX_CLUSTER_GEOMETRY_DISABLE_OPACITY_MICROMAP_NV>
+--     specifies that
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#ray-opacity-micromap Opacity Micromap>
+--     will be disabled for this triangle and opacity value will be picked
+--     from
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkClusterAccelerationStructureBuildTriangleClusterInfoNV VkClusterAccelerationStructureBuildTriangleClusterInfoNV>::@baseGeometryIndexAndGeometryFlags@
+--     instead. Note that this special index is only valid for
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#cluster-geometry Cluster Geometry>.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_opacity_micromap VK_EXT_opacity_micromap>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_opacity_micromap VK_KHR_opacity_micromap>
+newtype OpacityMicromapSpecialIndexKHR = OpacityMicromapSpecialIndexKHR 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
+
+-- No documentation found for Nested "VkOpacityMicromapSpecialIndexKHR" "VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_TRANSPARENT_KHR"
+pattern OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_TRANSPARENT_KHR = OpacityMicromapSpecialIndexKHR (-1)
+
+-- No documentation found for Nested "VkOpacityMicromapSpecialIndexKHR" "VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_OPAQUE_KHR"
+pattern OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_OPAQUE_KHR = OpacityMicromapSpecialIndexKHR (-2)
+
+-- No documentation found for Nested "VkOpacityMicromapSpecialIndexKHR" "VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_TRANSPARENT_KHR"
+pattern OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_TRANSPARENT_KHR = OpacityMicromapSpecialIndexKHR (-3)
+
+-- No documentation found for Nested "VkOpacityMicromapSpecialIndexKHR" "VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_OPAQUE_KHR"
+pattern OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_OPAQUE_KHR = OpacityMicromapSpecialIndexKHR (-4)
+
+{-# COMPLETE
+  OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_TRANSPARENT_KHR
+  , OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_OPAQUE_KHR
+  , OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_TRANSPARENT_KHR
+  , OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_OPAQUE_KHR ::
+    OpacityMicromapSpecialIndexKHR
+  #-}
+
+conNameOpacityMicromapSpecialIndexKHR :: String
+conNameOpacityMicromapSpecialIndexKHR = "OpacityMicromapSpecialIndexKHR"
+
+enumPrefixOpacityMicromapSpecialIndexKHR :: String
+enumPrefixOpacityMicromapSpecialIndexKHR = "OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_"
+
+showTableOpacityMicromapSpecialIndexKHR :: [(OpacityMicromapSpecialIndexKHR, String)]
+showTableOpacityMicromapSpecialIndexKHR =
+  [
+    ( OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_TRANSPARENT_KHR
+    , "TRANSPARENT_KHR"
+    )
+  ,
+    ( OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_OPAQUE_KHR
+    , "OPAQUE_KHR"
+    )
+  ,
+    ( OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_TRANSPARENT_KHR
+    , "UNKNOWN_TRANSPARENT_KHR"
+    )
+  ,
+    ( OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_OPAQUE_KHR
+    , "UNKNOWN_OPAQUE_KHR"
+    )
+  ]
+
+instance Show OpacityMicromapSpecialIndexKHR where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixOpacityMicromapSpecialIndexKHR
+      showTableOpacityMicromapSpecialIndexKHR
+      conNameOpacityMicromapSpecialIndexKHR
+      (\(OpacityMicromapSpecialIndexKHR x) -> x)
+      (showsPrec 11)
+
+instance Read OpacityMicromapSpecialIndexKHR where
+  readPrec =
+    enumReadPrec
+      enumPrefixOpacityMicromapSpecialIndexKHR
+      showTableOpacityMicromapSpecialIndexKHR
+      conNameOpacityMicromapSpecialIndexKHR
+      OpacityMicromapSpecialIndexKHR
+
+-- | VkAccelerationStructureSerializedBlockTypeKHR - Enum for block types in
+-- a serialized acceleration structure
+--
+-- = Description
+--
+-- -   'ACCELERATION_STRUCTURE_SERIALIZED_BLOCK_TYPE_OPACITY_MICROMAP_KHR'
+--     specifies that the block contains opacity micromaps.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_opacity_micromap VK_KHR_opacity_micromap>
+newtype AccelerationStructureSerializedBlockTypeKHR = AccelerationStructureSerializedBlockTypeKHR Int32
+  deriving newtype (Eq, Ord, Storable, Zero)
+
+-- No documentation found for Nested "VkAccelerationStructureSerializedBlockTypeKHR" "VK_ACCELERATION_STRUCTURE_SERIALIZED_BLOCK_TYPE_OPACITY_MICROMAP_KHR"
+pattern ACCELERATION_STRUCTURE_SERIALIZED_BLOCK_TYPE_OPACITY_MICROMAP_KHR = AccelerationStructureSerializedBlockTypeKHR 0
+
+{-# COMPLETE ACCELERATION_STRUCTURE_SERIALIZED_BLOCK_TYPE_OPACITY_MICROMAP_KHR :: AccelerationStructureSerializedBlockTypeKHR #-}
+
+conNameAccelerationStructureSerializedBlockTypeKHR :: String
+conNameAccelerationStructureSerializedBlockTypeKHR = "AccelerationStructureSerializedBlockTypeKHR"
+
+enumPrefixAccelerationStructureSerializedBlockTypeKHR :: String
+enumPrefixAccelerationStructureSerializedBlockTypeKHR = "ACCELERATION_STRUCTURE_SERIALIZED_BLOCK_TYPE_OPACITY_MICROMAP_KHR"
+
+showTableAccelerationStructureSerializedBlockTypeKHR :: [(AccelerationStructureSerializedBlockTypeKHR, String)]
+showTableAccelerationStructureSerializedBlockTypeKHR =
+  [
+    ( ACCELERATION_STRUCTURE_SERIALIZED_BLOCK_TYPE_OPACITY_MICROMAP_KHR
+    , ""
+    )
+  ]
+
+instance Show AccelerationStructureSerializedBlockTypeKHR where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixAccelerationStructureSerializedBlockTypeKHR
+      showTableAccelerationStructureSerializedBlockTypeKHR
+      conNameAccelerationStructureSerializedBlockTypeKHR
+      (\(AccelerationStructureSerializedBlockTypeKHR x) -> x)
+      (showsPrec 11)
+
+instance Read AccelerationStructureSerializedBlockTypeKHR where
+  readPrec =
+    enumReadPrec
+      enumPrefixAccelerationStructureSerializedBlockTypeKHR
+      showTableAccelerationStructureSerializedBlockTypeKHR
+      conNameAccelerationStructureSerializedBlockTypeKHR
+      AccelerationStructureSerializedBlockTypeKHR
+
+type KHR_OPACITY_MICROMAP_SPEC_VERSION = 1
+
+-- No documentation found for TopLevel "VK_KHR_OPACITY_MICROMAP_SPEC_VERSION"
+pattern KHR_OPACITY_MICROMAP_SPEC_VERSION :: forall a . Integral a => a
+pattern KHR_OPACITY_MICROMAP_SPEC_VERSION = 1
+
+
+type KHR_OPACITY_MICROMAP_EXTENSION_NAME = "VK_KHR_opacity_micromap"
+
+-- No documentation found for TopLevel "VK_KHR_OPACITY_MICROMAP_EXTENSION_NAME"
+pattern KHR_OPACITY_MICROMAP_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern KHR_OPACITY_MICROMAP_EXTENSION_NAME = "VK_KHR_opacity_micromap"
+
diff --git a/src/Vulkan/Extensions/VK_KHR_opacity_micromap.hs-boot b/src/Vulkan/Extensions/VK_KHR_opacity_micromap.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_KHR_opacity_micromap.hs-boot
@@ -0,0 +1,472 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_KHR_opacity_micromap - device extension
+--
+-- = VK_KHR_opacity_micromap
+--
+-- [__Name String__]
+--     @VK_KHR_opacity_micromap@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     624
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_device_address_commands VK_KHR_device_address_commands>
+--
+-- [__API Interactions__]
+--
+--     -   Interacts with VK_VERSION_1_4
+--
+--     -   Interacts with VK_EXT_shader_object
+--
+--     -   Interacts with VK_KHR_maintenance5
+--
+-- [__SPIR-V Dependencies__]
+--
+--     -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/EXT/SPV_EXT_opacity_micromap.html SPV_EXT_opacity_micromap>
+--
+--     -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/KHR/SPV_KHR_opacity_micromap.html SPV_KHR_opacity_micromap>
+--
+-- [__Contact__]
+--
+--     -   Matthew Netsch
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_opacity_micromap] @mnetsch%0A*Here describe the issue or question you have about the VK_KHR_opacity_micromap extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_KHR_opacity_micromap.adoc VK_KHR_opacity_micromap>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2026-05-08
+--
+-- [__Interactions and External Dependencies__]
+--
+--     -   This extension provides API support for
+--         <https://github.com/KhronosGroup/GLSL/blob/main/extensions/ext/GLSL_EXT_opacity_micromap.txt GLSL_EXT_opacity_micromap>
+--
+--     -   This extension provides API support for
+--         <https://github.com/KhronosGroup/GLSL/blob/main/extensions/ext/GLSL_EXT_opacity_micromap_ray_query_mode.txt GLSL_EXT_opacity_micromap_ray_query_mode>
+--
+-- [__Contributors__]
+--
+--     -   Matthew Netsch, Qualcomm Technologies, Inc
+--
+--     -   Aleksandra Krstic, Qualcomm Technologies, Inc
+--
+--     -   Eric Werness, NVIDIA
+--
+--     -   Daniel Koch, NVIDIA
+--
+--     -   Stu Smith, AMD
+--
+--     -   Sven Woop, Intel
+--
+--     -   Anton Berko, MediaTek
+--
+--     -   Radoslaw Drabinski, Intel
+--
+--     -   Simon Fenney, Imagination Technologies
+--
+--     -   Andrew Garrard, Imagination Technologies
+--
+--     -   Dae Kim, Imagination Technologies
+--
+--     -   Fred Saucedo, Qualcomm Technologies, Inc
+--
+--     -   Ramesh babu Admimula, Qualcomm Technologies, Inc
+--
+--     -   Zedian Zhang, Qualcomm Technologies, Inc
+--
+--     -   Hans-Kristian Arntzen, Valve
+--
+--     -   Vikram Kushwaha, NVIDIA
+--
+--     -   Spencer Fricke, LunarG
+--
+--     -   Revanth Ponna, Qualcomm Technologies, Inc
+--
+--     -   Contributors to @VK_EXT_opacity_micromap@
+--
+-- == Description
+--
+-- When adding transparency to a ray traced scene, an application can
+-- choose between further tessellating the geometry or using an any-hit
+-- shader to allow the ray through specific parts of the geometry. These
+-- options have the downside of either significantly increasing memory
+-- consumption or adding runtime overhead to run shader code in the middle
+-- of traversal, respectively.
+--
+-- This extension adds the ability to add an /opacity micromap/ to geometry
+-- when building an acceleration structure. The opacity micromap compactly
+-- encodes opacity information which can be read by the implementation to
+-- mark parts of triangles as opaque or transparent. The format is
+-- externally visible to allow the application to compress its internal
+-- geometry and surface representations into the compressed format ahead of
+-- time. The compressed format subdivides each triangle into a set of
+-- subtriangles, each of which can be assigned either two or four opacity
+-- values. These opacity values can control if a ray hitting that
+-- subtriangle is treated as an opaque hit, complete miss, or possible hit,
+-- depending on the controls described in
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#ray-opacity-micromap Ray Opacity Micromap>.
+--
+-- This extension provides:
+--
+-- -   the ability to create micromaps as
+--     'Vulkan.Extensions.Handles.AccelerationStructureKHR' structures
+--
+-- -   the ability to build, copy, and query micromaps with the
+--     acceleration structure functions, and
+--
+-- -   a structure to extend
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureGeometryTrianglesDataKHR'
+--     to attach a micromap to the geometry of the acceleration structure.
+--
+-- == New Structures
+--
+-- -   'MicromapTriangleKHR'
+--
+-- -   'MicromapUsageKHR'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureGeometryKHR':
+--
+--     -   'AccelerationStructureGeometryMicromapDataKHR'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureGeometryTrianglesDataKHR',
+--     'Vulkan.Extensions.VK_AMDX_dense_geometry_format.AccelerationStructureDenseGeometryFormatTrianglesDataAMDX':
+--
+--     -   'AccelerationStructureTrianglesOpacityMicromapKHR'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceOpacityMicromapFeaturesKHR'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDeviceOpacityMicromapPropertiesKHR'
+--
+-- == New Enums
+--
+-- -   'AccelerationStructureSerializedBlockTypeKHR'
+--
+-- -   'OpacityMicromapFormatKHR'
+--
+-- -   'OpacityMicromapSpecialIndexKHR'
+--
+-- == New Enum Constants
+--
+-- -   'KHR_OPACITY_MICROMAP_EXTENSION_NAME'
+--
+-- -   'KHR_OPACITY_MICROMAP_SPEC_VERSION'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureTypeKHR':
+--
+--     -   'Vulkan.Extensions.VK_KHR_acceleration_structure.ACCELERATION_STRUCTURE_TYPE_OPACITY_MICROMAP_KHR'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.BuildAccelerationStructureFlagBitsKHR':
+--
+--     -   'Vulkan.Extensions.VK_KHR_acceleration_structure.BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_BIT_KHR'
+--
+--     -   'Vulkan.Extensions.VK_KHR_acceleration_structure.BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_BIT_KHR'
+--
+--     -   'Vulkan.Extensions.VK_KHR_acceleration_structure.BUILD_ACCELERATION_STRUCTURE_MICROMAP_LOSSY_BIT_KHR'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.GeometryInstanceFlagBitsKHR':
+--
+--     -   'Vulkan.Extensions.VK_KHR_acceleration_structure.GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_BIT_KHR'
+--
+--     -   'Vulkan.Extensions.VK_KHR_acceleration_structure.GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_BIT_KHR'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.GeometryTypeKHR':
+--
+--     -   'Vulkan.Extensions.VK_KHR_acceleration_structure.GEOMETRY_TYPE_MICROMAP_KHR'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits':
+--
+--     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_KHR'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MICROMAP_DATA_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_PROPERTIES_KHR'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_shader_object VK_EXT_shader_object>
+-- is supported:
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_EXT_shader_object.ShaderCreateFlagBitsEXT':
+--
+--     -   'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_EXT'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance5 VK_KHR_maintenance5>
+-- or
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.4 Vulkan Version 1.4>
+-- is supported:
+--
+-- -   Extending
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PipelineCreateFlagBits2':
+--
+--     -   'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_KHR'
+--
+--     -   'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_RAY_TRACING_OPACITY_MICROMAP_BIT_KHR'
+--
+-- == Reference Code
+--
+-- The following code illustrates an algorithm that converts the
+-- barycentric coordinates inside a triangle into an OMM array index:
+--
+-- > uint32_t BarycentricsToSpaceFillingCurveIndex(float u, float v, uint32_t level)
+-- > {
+-- >     u = clamp(u, 0.0f, 1.0f);
+-- >     v = clamp(v, 0.0f, 1.0f);
+-- >
+-- >     uint32_t iu, iv, iw;
+-- >
+-- >     // Quantize barycentric coordinates
+-- >     float fu = u * (1u << level);
+-- >     float fv = v * (1u << level);
+-- >
+-- >     iu = (uint32_t)fu;
+-- >     iv = (uint32_t)fv;
+-- >
+-- >     float uf = fu - float(iu);
+-- >     float vf = fv - float(iv);
+-- >
+-- >     if (iu >= (1u << level)) iu = (1u << level) - 1u;
+-- >     if (iv >= (1u << level)) iv = (1u << level) - 1u;
+-- >
+-- >     uint32_t iuv = iu + iv;
+-- >
+-- >     if (iuv >= (1u << level))
+-- >         iu -= iuv - (1u << level) + 1u;
+-- >
+-- >     iw = ~(iu + iv);
+-- >
+-- >     if (uf + vf >= 1.0f && iuv < (1u << level) - 1u) --iw;
+-- >
+-- >     uint32_t b0 = ~(iu ^ iw);
+-- >     b0 &= ((1u << level) - 1u);
+-- >     uint32_t t = (iu ^ iv) & b0;
+-- >
+-- >     uint32_t f = t;
+-- >     f ^= f >> 1u;
+-- >     f ^= f >> 2u;
+-- >     f ^= f >> 4u;
+-- >     f ^= f >> 8u;
+-- >     uint32_t b1 = ((f ^ iu) & ~b0) | t;
+-- >
+-- >     // Interleave bits
+-- >     b0 = (b0 | (b0 << 8u)) & 0x00ff00ffu;
+-- >     b0 = (b0 | (b0 << 4u)) & 0x0f0f0f0fu;
+-- >     b0 = (b0 | (b0 << 2u)) & 0x33333333u;
+-- >     b0 = (b0 | (b0 << 1u)) & 0x55555555u;
+-- >     b1 = (b1 | (b1 << 8u)) & 0x00ff00ffu;
+-- >     b1 = (b1 | (b1 << 4u)) & 0x0f0f0f0fu;
+-- >     b1 = (b1 | (b1 << 2u)) & 0x33333333u;
+-- >     b1 = (b1 | (b1 << 1u)) & 0x55555555u;
+-- >
+-- >     return b0 | (b1 << 1u);
+-- > }
+--
+-- == Issues
+--
+-- (1) Is the build actually similar to an acceleration structure build?
+--
+-- -   Resolved: The build should be much lighter-weight than an
+--     acceleration structure build
+--
+-- (2) Why does VkMicromapUsageKHR not have type\/pNext?
+--
+-- -   Resolved: There can be a very large number of these structures, so
+--     doubling the size of these can be significant memory consumption.
+--     Also, an application may be loading these directly from a file which
+--     is more compatible with it being a flat structure. The including
+--     structures are extensible and are probably a more suitable place to
+--     add extensibility.
+--
+-- (3) Why is there a SPIR-V extension?
+--
+-- -   Resolved: There is a ray flag and an execution mode. To be
+--     consistent with how the existing ray tracing extensions work that
+--     these needs its own extension.
+--
+-- (4) Should there be indirect micromap build?
+--
+-- -   Resolved: Not for now. There is more in-depth usage metadata
+--     required and it seems less likely that something like a GPU culling
+--     system would need to change the counts for a micromap.
+--
+-- (5) Should the feature struct be aliased with
+-- VkPhysicalDeviceOpacityMicromapFeaturesEXT?
+--
+-- -   Resolved: No. This extension is not an exact promotion of
+--     @VK_EXT_opacity_micromap@ and provides significantly different
+--     functionality.
+--
+-- (6) Should micromaps API be similar to the @VK_EXT_opacity_micromap@?
+--
+-- @VK_EXT_opacity_micromap@ introduced almost an identical set of
+-- functionality for micromaps as acceleration structures. Should this
+-- promotion fold in micromaps as an acceleration structure type?
+--
+-- -   Resolved: Yes. While this is significant API breakage from the EXT,
+--     it is a better design choice going forward and can eliminate
+--     significant API surface area if promoted in the future.
+--
+-- (7) Should micromaps support host commands?
+--
+-- -   Resolved: No. Host commands are deprecated and not widely supported.
+--
+-- (8) Should
+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.createAccelerationStructureKHR'
+-- be used to create micromaps?
+--
+-- This interface that uses 'Vulkan.Core10.Handles.Buffer' to back
+-- micromaps is deprecated, but is still available for acceleration
+-- structure object creation.
+--
+-- -   Resolved: No. Make a new entry point that uses a device address to
+--     back micromaps and other acceleration structures instead of a
+--     buffer. Eliminate the ability to provide a separate capture\/replay
+--     address as well. Top-level acceleration structures /must/ reference
+--     the device address that backs the bottom-level acceleration
+--     structures and implementations /must/ not expose an indirect handle.
+--
+-- (9) Should
+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_BIT_EXT'
+-- be promoted from @VK_EXT_opacity_micromap@ to this extension?
+--
+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_BIT_EXT'
+-- distinguished between replacing a micromap with one of a different shape
+-- ('Vulkan.Extensions.VK_EXT_opacity_micromap.BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_BIT_EXT')
+-- and replacing one where the shape is identical and only the opacity
+-- values have changed (DATA_UPDATE). The DATA_UPDATE flag was correlated
+-- with the discardable micromap feature, where an implementation might
+-- embed micromap state directly in the acceleration structure and exploit
+-- the tighter constraint to avoid a full rebuild. However, the spec never
+-- required DATA_UPDATE to be restricted to discardable micromaps, and it
+-- was already legal to treat DATA_UPDATE identically to UPDATE.
+--
+-- -   Resolved: No. The discardable micromap feature is not promoted to
+--     this extension, removing the primary motivation for DATA_UPDATE. No
+--     implementation identified a meaningful optimization from the
+--     stricter constraint beyond what UPDATE already provides, and no CTS
+--     coverage existed for either opacity micromap update flag in the EXT.
+--     Removing it is a pure API simplification with no functional loss.
+--     Applications must still perform a BLAS build update when opacity
+--     micromap data changes, even if only values and not structure have
+--     changed.
+--
+-- == Version History
+--
+-- -   Revision 1, 2026-05-08 (Matthew Netsch)
+--
+--     -   Initial draft
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_opacity_micromap 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_opacity_micromap  ( AccelerationStructureGeometryMicromapDataKHR
+                                                  , AccelerationStructureTrianglesOpacityMicromapKHR
+                                                  , MicromapTriangleKHR
+                                                  , MicromapUsageKHR
+                                                  , PhysicalDeviceOpacityMicromapFeaturesKHR
+                                                  , PhysicalDeviceOpacityMicromapPropertiesKHR
+                                                  , OpacityMicromapFormatKHR
+                                                  , OpacityMicromapSpecialIndexKHR
+                                                  ) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data AccelerationStructureGeometryMicromapDataKHR
+
+instance ToCStruct AccelerationStructureGeometryMicromapDataKHR
+instance Show AccelerationStructureGeometryMicromapDataKHR
+
+instance FromCStruct AccelerationStructureGeometryMicromapDataKHR
+
+
+data AccelerationStructureTrianglesOpacityMicromapKHR
+
+instance ToCStruct AccelerationStructureTrianglesOpacityMicromapKHR
+instance Show AccelerationStructureTrianglesOpacityMicromapKHR
+
+instance FromCStruct AccelerationStructureTrianglesOpacityMicromapKHR
+
+
+data MicromapTriangleKHR
+
+instance ToCStruct MicromapTriangleKHR
+instance Show MicromapTriangleKHR
+
+instance FromCStruct MicromapTriangleKHR
+
+
+data MicromapUsageKHR
+
+instance ToCStruct MicromapUsageKHR
+instance Show MicromapUsageKHR
+
+instance FromCStruct MicromapUsageKHR
+
+
+data PhysicalDeviceOpacityMicromapFeaturesKHR
+
+instance ToCStruct PhysicalDeviceOpacityMicromapFeaturesKHR
+instance Show PhysicalDeviceOpacityMicromapFeaturesKHR
+
+instance FromCStruct PhysicalDeviceOpacityMicromapFeaturesKHR
+
+
+data PhysicalDeviceOpacityMicromapPropertiesKHR
+
+instance ToCStruct PhysicalDeviceOpacityMicromapPropertiesKHR
+instance Show PhysicalDeviceOpacityMicromapPropertiesKHR
+
+instance FromCStruct PhysicalDeviceOpacityMicromapPropertiesKHR
+
+
+data OpacityMicromapFormatKHR
+
+
+data OpacityMicromapSpecialIndexKHR
+
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
@@ -459,7 +459,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_performance_query Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -665,18 +665,22 @@
 --
 -- [<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'
 --
+--     -   '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_INITIALIZATION_FAILED'
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_INITIALIZATION_FAILED'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_performance_query VK_KHR_performance_query>,
@@ -809,6 +813,10 @@
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 --     -   'Vulkan.Core10.Enums.Result.TIMEOUT'
 --
 -- = See Also
@@ -915,12 +923,22 @@
 -- structure passed to
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
 -- it is filled in to indicate whether each corresponding feature is
--- supported. 'PhysicalDevicePerformanceQueryFeaturesKHR' /can/ also be
--- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDevicePerformanceQueryFeaturesKHR', it /must/ add an instance
+-- of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_performance_query VK_KHR_performance_query>,
@@ -993,8 +1011,12 @@
 -- it is filled in with each corresponding implementation-dependent
 -- property.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_performance_query VK_KHR_performance_query>,
@@ -1208,7 +1230,7 @@
 --
 -- -   #VUID-VkQueryPoolPerformanceCreateInfoKHR-performanceCounterQueryPools-03237#
 --     The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-performanceCounterQueryPools performanceCounterQueryPools>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-performanceCounterQueryPools performanceCounterQueryPools>
 --     feature /must/ be enabled
 --
 -- -   #VUID-VkQueryPoolPerformanceCreateInfoKHR-pCounterIndices-03321#
@@ -1230,6 +1252,12 @@
 -- -   #VUID-VkQueryPoolPerformanceCreateInfoKHR-counterIndexCount-arraylength#
 --     @counterIndexCount@ /must/ be greater than @0@
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.Query.QueryPoolCreateInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_performance_query VK_KHR_performance_query>,
@@ -1358,8 +1386,14 @@
 -- If the 'Vulkan.Core10.Queue.SubmitInfo'::@pNext@ chain does not include
 -- this structure, the batch defaults to use counter pass index 0.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Queue.SubmitInfo'
+--
+--     -   'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.SubmitInfo2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_performance_query VK_KHR_performance_query>,
@@ -1441,6 +1475,19 @@
 
 -- | VkPerformanceCounterScopeKHR - Supported counter scope types
 --
+-- = Description
+--
+-- -   'PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR' - the performance
+--     counter scope is a single complete command buffer.
+--
+-- -   'PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR' - the performance
+--     counter scope is zero or more complete render passes. The
+--     performance query containing the performance counter /must/ begin
+--     and end outside a render pass instance.
+--
+-- -   'PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR' - the performance counter
+--     scope is zero or more commands.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_performance_query VK_KHR_performance_query>,
@@ -1448,18 +1495,13 @@
 newtype PerformanceCounterScopeKHR = PerformanceCounterScopeKHR Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR' - the performance counter
--- scope is a single complete command buffer.
+-- No documentation found for Nested "VkPerformanceCounterScopeKHR" "VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR"
 pattern PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR = PerformanceCounterScopeKHR 0
 
--- | 'PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR' - the performance counter
--- scope is zero or more complete render passes. The performance query
--- containing the performance counter /must/ begin and end outside a render
--- pass instance.
+-- No documentation found for Nested "VkPerformanceCounterScopeKHR" "VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR"
 pattern PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR = PerformanceCounterScopeKHR 1
 
--- | 'PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR' - the performance counter scope
--- is zero or more commands.
+-- No documentation found for Nested "VkPerformanceCounterScopeKHR" "VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR"
 pattern PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR = PerformanceCounterScopeKHR 2
 
 {-# COMPLETE
@@ -1510,6 +1552,41 @@
 
 -- | VkPerformanceCounterUnitKHR - Supported counter unit types
 --
+-- = Description
+--
+-- -   'PERFORMANCE_COUNTER_UNIT_GENERIC_KHR' - the performance counter
+--     unit is a generic data point.
+--
+-- -   'PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR' - the performance counter
+--     unit is a percentage (%).
+--
+-- -   'PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR' - the performance counter
+--     unit is a value of nanoseconds (ns).
+--
+-- -   'PERFORMANCE_COUNTER_UNIT_BYTES_KHR' - the performance counter unit
+--     is a value of bytes.
+--
+-- -   'PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR' - the performance
+--     counter unit is a value of bytes\/s.
+--
+-- -   'PERFORMANCE_COUNTER_UNIT_KELVIN_KHR' - the performance counter unit
+--     is a temperature reported in Kelvin.
+--
+-- -   'PERFORMANCE_COUNTER_UNIT_WATTS_KHR' - the performance counter unit
+--     is a value of watts (W).
+--
+-- -   'PERFORMANCE_COUNTER_UNIT_VOLTS_KHR' - the performance counter unit
+--     is a value of volts (V).
+--
+-- -   'PERFORMANCE_COUNTER_UNIT_AMPS_KHR' - the performance counter unit
+--     is a value of amps (A).
+--
+-- -   'PERFORMANCE_COUNTER_UNIT_HERTZ_KHR' - the performance counter unit
+--     is a value of hertz (Hz).
+--
+-- -   'PERFORMANCE_COUNTER_UNIT_CYCLES_KHR' - the performance counter unit
+--     is a value of cycles.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_performance_query VK_KHR_performance_query>,
@@ -1517,48 +1594,37 @@
 newtype PerformanceCounterUnitKHR = PerformanceCounterUnitKHR Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'PERFORMANCE_COUNTER_UNIT_GENERIC_KHR' - the performance counter unit is
--- a generic data point.
+-- No documentation found for Nested "VkPerformanceCounterUnitKHR" "VK_PERFORMANCE_COUNTER_UNIT_GENERIC_KHR"
 pattern PERFORMANCE_COUNTER_UNIT_GENERIC_KHR = PerformanceCounterUnitKHR 0
 
--- | 'PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR' - the performance counter unit
--- is a percentage (%).
+-- No documentation found for Nested "VkPerformanceCounterUnitKHR" "VK_PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR"
 pattern PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR = PerformanceCounterUnitKHR 1
 
--- | 'PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR' - the performance counter
--- unit is a value of nanoseconds (ns).
+-- No documentation found for Nested "VkPerformanceCounterUnitKHR" "VK_PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR"
 pattern PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR = PerformanceCounterUnitKHR 2
 
--- | 'PERFORMANCE_COUNTER_UNIT_BYTES_KHR' - the performance counter unit is a
--- value of bytes.
+-- No documentation found for Nested "VkPerformanceCounterUnitKHR" "VK_PERFORMANCE_COUNTER_UNIT_BYTES_KHR"
 pattern PERFORMANCE_COUNTER_UNIT_BYTES_KHR = PerformanceCounterUnitKHR 3
 
--- | 'PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR' - the performance
--- counter unit is a value of bytes\/s.
+-- No documentation found for Nested "VkPerformanceCounterUnitKHR" "VK_PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR"
 pattern PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR = PerformanceCounterUnitKHR 4
 
--- | 'PERFORMANCE_COUNTER_UNIT_KELVIN_KHR' - the performance counter unit is
--- a temperature reported in Kelvin.
+-- No documentation found for Nested "VkPerformanceCounterUnitKHR" "VK_PERFORMANCE_COUNTER_UNIT_KELVIN_KHR"
 pattern PERFORMANCE_COUNTER_UNIT_KELVIN_KHR = PerformanceCounterUnitKHR 5
 
--- | 'PERFORMANCE_COUNTER_UNIT_WATTS_KHR' - the performance counter unit is a
--- value of watts (W).
+-- No documentation found for Nested "VkPerformanceCounterUnitKHR" "VK_PERFORMANCE_COUNTER_UNIT_WATTS_KHR"
 pattern PERFORMANCE_COUNTER_UNIT_WATTS_KHR = PerformanceCounterUnitKHR 6
 
--- | 'PERFORMANCE_COUNTER_UNIT_VOLTS_KHR' - the performance counter unit is a
--- value of volts (V).
+-- No documentation found for Nested "VkPerformanceCounterUnitKHR" "VK_PERFORMANCE_COUNTER_UNIT_VOLTS_KHR"
 pattern PERFORMANCE_COUNTER_UNIT_VOLTS_KHR = PerformanceCounterUnitKHR 7
 
--- | 'PERFORMANCE_COUNTER_UNIT_AMPS_KHR' - the performance counter unit is a
--- value of amps (A).
+-- No documentation found for Nested "VkPerformanceCounterUnitKHR" "VK_PERFORMANCE_COUNTER_UNIT_AMPS_KHR"
 pattern PERFORMANCE_COUNTER_UNIT_AMPS_KHR = PerformanceCounterUnitKHR 8
 
--- | 'PERFORMANCE_COUNTER_UNIT_HERTZ_KHR' - the performance counter unit is a
--- value of hertz (Hz).
+-- No documentation found for Nested "VkPerformanceCounterUnitKHR" "VK_PERFORMANCE_COUNTER_UNIT_HERTZ_KHR"
 pattern PERFORMANCE_COUNTER_UNIT_HERTZ_KHR = PerformanceCounterUnitKHR 9
 
--- | 'PERFORMANCE_COUNTER_UNIT_CYCLES_KHR' - the performance counter unit is
--- a value of cycles.
+-- No documentation found for Nested "VkPerformanceCounterUnitKHR" "VK_PERFORMANCE_COUNTER_UNIT_CYCLES_KHR"
 pattern PERFORMANCE_COUNTER_UNIT_CYCLES_KHR = PerformanceCounterUnitKHR 10
 
 {-# COMPLETE
@@ -1649,6 +1715,26 @@
 
 -- | VkPerformanceCounterStorageKHR - Supported counter storage types
 --
+-- = Description
+--
+-- -   'PERFORMANCE_COUNTER_STORAGE_INT32_KHR' - the performance counter
+--     storage is a 32-bit signed integer.
+--
+-- -   'PERFORMANCE_COUNTER_STORAGE_INT64_KHR' - the performance counter
+--     storage is a 64-bit signed integer.
+--
+-- -   'PERFORMANCE_COUNTER_STORAGE_UINT32_KHR' - the performance counter
+--     storage is a 32-bit unsigned integer.
+--
+-- -   'PERFORMANCE_COUNTER_STORAGE_UINT64_KHR' - the performance counter
+--     storage is a 64-bit unsigned integer.
+--
+-- -   'PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR' - the performance counter
+--     storage is a 32-bit floating-point.
+--
+-- -   'PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR' - the performance counter
+--     storage is a 64-bit floating-point.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_performance_query VK_KHR_performance_query>,
@@ -1656,28 +1742,22 @@
 newtype PerformanceCounterStorageKHR = PerformanceCounterStorageKHR Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'PERFORMANCE_COUNTER_STORAGE_INT32_KHR' - the performance counter
--- storage is a 32-bit signed integer.
+-- No documentation found for Nested "VkPerformanceCounterStorageKHR" "VK_PERFORMANCE_COUNTER_STORAGE_INT32_KHR"
 pattern PERFORMANCE_COUNTER_STORAGE_INT32_KHR = PerformanceCounterStorageKHR 0
 
--- | 'PERFORMANCE_COUNTER_STORAGE_INT64_KHR' - the performance counter
--- storage is a 64-bit signed integer.
+-- No documentation found for Nested "VkPerformanceCounterStorageKHR" "VK_PERFORMANCE_COUNTER_STORAGE_INT64_KHR"
 pattern PERFORMANCE_COUNTER_STORAGE_INT64_KHR = PerformanceCounterStorageKHR 1
 
--- | 'PERFORMANCE_COUNTER_STORAGE_UINT32_KHR' - the performance counter
--- storage is a 32-bit unsigned integer.
+-- No documentation found for Nested "VkPerformanceCounterStorageKHR" "VK_PERFORMANCE_COUNTER_STORAGE_UINT32_KHR"
 pattern PERFORMANCE_COUNTER_STORAGE_UINT32_KHR = PerformanceCounterStorageKHR 2
 
--- | 'PERFORMANCE_COUNTER_STORAGE_UINT64_KHR' - the performance counter
--- storage is a 64-bit unsigned integer.
+-- No documentation found for Nested "VkPerformanceCounterStorageKHR" "VK_PERFORMANCE_COUNTER_STORAGE_UINT64_KHR"
 pattern PERFORMANCE_COUNTER_STORAGE_UINT64_KHR = PerformanceCounterStorageKHR 3
 
--- | 'PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR' - the performance counter
--- storage is a 32-bit floating-point.
+-- No documentation found for Nested "VkPerformanceCounterStorageKHR" "VK_PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR"
 pattern PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR = PerformanceCounterStorageKHR 4
 
--- | 'PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR' - the performance counter
--- storage is a 64-bit floating-point.
+-- No documentation found for Nested "VkPerformanceCounterStorageKHR" "VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR"
 pattern PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR = PerformanceCounterStorageKHR 5
 
 {-# COMPLETE
@@ -1746,6 +1826,17 @@
 -- | VkPerformanceCounterDescriptionFlagBitsKHR - Bitmask specifying usage
 -- behavior for a counter
 --
+-- = Description
+--
+-- -   'PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_BIT_KHR'
+--     specifies that recording the counter /may/ have a noticeable
+--     performance impact.
+--
+-- -   'PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_BIT_KHR'
+--     specifies that concurrently recording the counter while other
+--     submitted command buffers are running /may/ impact the accuracy of
+--     the recording.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_performance_query VK_KHR_performance_query>,
@@ -1753,14 +1844,10 @@
 newtype PerformanceCounterDescriptionFlagBitsKHR = PerformanceCounterDescriptionFlagBitsKHR Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_BIT_KHR'
--- specifies that recording the counter /may/ have a noticeable performance
--- impact.
+-- No documentation found for Nested "VkPerformanceCounterDescriptionFlagBitsKHR" "VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_BIT_KHR"
 pattern PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_BIT_KHR = PerformanceCounterDescriptionFlagBitsKHR 0x00000001
 
--- | 'PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_BIT_KHR'
--- specifies that concurrently recording the counter while other submitted
--- command buffers are running /may/ impact the accuracy of the recording.
+-- No documentation found for Nested "VkPerformanceCounterDescriptionFlagBitsKHR" "VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_BIT_KHR"
 pattern PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_BIT_KHR = PerformanceCounterDescriptionFlagBitsKHR 0x00000002
 
 conNamePerformanceCounterDescriptionFlagBitsKHR :: String
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
@@ -459,7 +459,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_performance_query Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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_binary.hs b/src/Vulkan/Extensions/VK_KHR_pipeline_binary.hs
--- a/src/Vulkan/Extensions/VK_KHR_pipeline_binary.hs
+++ b/src/Vulkan/Extensions/VK_KHR_pipeline_binary.hs
@@ -22,6 +22,8 @@
 --
 -- [__Extension and Version Dependencies__]
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance5 VK_KHR_maintenance5>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.4 Vulkan Version 1.4>
 --
 -- [__Contact__]
 --
@@ -116,8 +118,9 @@
 --
 --     -   'DevicePipelineBinaryInternalCacheControlKHR'
 --
--- -   Extending 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo',
---     'Vulkan.Core10.Pipeline.ComputePipelineCreateInfo',
+-- -   Extending
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo',
+--     'Vulkan.Core10.ComputePipeline.ComputePipelineCreateInfo',
 --     'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingPipelineCreateInfoKHR':
 --
 --     -   'PipelineBinaryInfoKHR'
@@ -146,9 +149,9 @@
 --     -   'Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_PIPELINE_BINARY_KHR'
 --
 -- -   Extending
---     'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlagBits2KHR':
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PipelineCreateFlagBits2':
 --
---     -   'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR'
+--     -   'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR'
 --
 -- -   Extending 'Vulkan.Core10.Enums.Result.Result':
 --
@@ -191,7 +194,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_pipeline_binary Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_pipeline_binary Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -217,8 +220,6 @@
                                                  , KHR_PIPELINE_BINARY_EXTENSION_NAME
                                                  , pattern KHR_PIPELINE_BINARY_EXTENSION_NAME
                                                  , PipelineBinaryKHR(..)
-                                                 , PipelineCreateFlagBits2KHR(..)
-                                                 , PipelineCreateFlags2KHR
                                                  , MAX_PIPELINE_BINARY_KEY_SIZE_KHR
                                                  , pattern MAX_PIPELINE_BINARY_KEY_SIZE_KHR
                                                  ) where
@@ -312,8 +313,6 @@
 import Vulkan.Core10.Enums.Result (Result(SUCCESS))
 import Vulkan.Core10.APIConstants (MAX_PIPELINE_BINARY_KEY_SIZE_KHR)
 import Vulkan.Extensions.Handles (PipelineBinaryKHR(..))
-import Vulkan.Extensions.VK_KHR_maintenance5 (PipelineCreateFlagBits2KHR(..))
-import Vulkan.Extensions.VK_KHR_maintenance5 (PipelineCreateFlags2KHR)
 import Vulkan.Core10.APIConstants (pattern MAX_PIPELINE_BINARY_KEY_SIZE_KHR)
 foreign import ccall
 #if !defined(SAFE_FOREIGN_CALLS)
@@ -360,20 +359,24 @@
 --
 -- [<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'
 --
 --     -   'Vulkan.Core10.Enums.Result.PIPELINE_BINARY_MISSING_KHR'
 --
+--     -   '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_INITIALIZATION_FAILED'
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_INITIALIZATION_FAILED'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_pipeline_binary VK_KHR_pipeline_binary>,
@@ -388,7 +391,7 @@
                              -- that contains the data to create the pipeline binaries from.
                              PipelineBinaryCreateInfoKHR
                           -> -- | @pAllocator@ controls host memory allocation as described in the
-                             -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                             -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
                              -- chapter.
                              ("allocator" ::: Maybe AllocationCallbacks)
                           -> io (Result, ("binaries" ::: PipelineBinaryHandlesInfoKHR))
@@ -469,7 +472,7 @@
                          -> -- | @pipelineBinary@ is the handle of the pipeline binary object to destroy.
                             PipelineBinaryKHR
                          -> -- | @pAllocator@ controls host memory allocation as described in the
-                            -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                            -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
                             -- chapter.
                             ("allocator" ::: Maybe AllocationCallbacks)
                          -> io ()
@@ -518,9 +521,9 @@
 -- used instead of a shader module, the @pPipelineKey@ generated /must/ be
 -- equal to the key generated when using the shader module from which the
 -- identifier was queried. If the content of two @pPipelineKey@ are equal,
--- pipelines created with the two @pPipelineCreateInfo->pname@:pNext create
--- infos /must/ produce the same
--- 'Vulkan.Extensions.Handles.PipelineBinaryKHR' contents.
+-- pipelines created with the two @pPipelineCreateInfo->pNext@ create infos
+-- /must/ produce the same 'Vulkan.Extensions.Handles.PipelineBinaryKHR'
+-- contents.
 --
 -- The pipeline key is distinct from pipeline binary key. Pipeline binary
 -- keys /can/ only be obtained after compilation. The pipeline key is
@@ -553,10 +556,14 @@
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_pipeline_binary VK_KHR_pipeline_binary>,
@@ -611,8 +618,12 @@
 -- 'Vulkan.Core10.Enums.Result.ERROR_NOT_ENOUGH_SPACE_KHR' will be
 -- returned, instead of 'Vulkan.Core10.Enums.Result.SUCCESS'.
 --
+-- If the call returns one of the success return codes, the pipeline binary
+-- key is written to @pPipelineBinaryKey@, regardless of whether
+-- @pPipelineBinaryData@ is @NULL@ or not.
+--
 -- If
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-pipelineBinaryCompressedData pipelineBinaryCompressedData>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-pipelineBinaryCompressedData pipelineBinaryCompressedData>
 -- is 'Vulkan.Core10.FundamentalTypes.FALSE', implementations /should/ not
 -- return compressed pipeline binary data to the application.
 --
@@ -645,12 +656,16 @@
 --
 -- [<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_NOT_ENOUGH_SPACE_KHR'
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_NOT_ENOUGH_SPACE_KHR'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_pipeline_binary VK_KHR_pipeline_binary>,
@@ -709,14 +724,14 @@
 --
 -- The implementation /may/ free any resources captured as a result of
 -- creating the pipeline with
--- 'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR'
+-- 'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR'
 -- and put the pipeline into a state as if
--- 'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR'
+-- 'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR'
 -- had not been provided at pipeline creation time.
 --
 -- Any resources captured as a result of creating the pipeline with
--- 'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR'
--- are implicitly freed by 'Vulkan.Core10.Pipeline.destroyPipeline'.
+-- 'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR'
+-- are implicitly freed by 'Vulkan.Core10.ComputePipeline.destroyPipeline'.
 --
 -- == Valid Usage
 --
@@ -743,10 +758,6 @@
 --     to a valid 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'
 --     structure
 --
--- == Host Synchronization
---
--- -   Host access to @pInfo->pipeline@ /must/ be externally synchronized
---
 -- == Return Codes
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
@@ -754,8 +765,11 @@
 --     -   'Vulkan.Core10.Enums.Result.SUCCESS'
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
---     None
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_pipeline_binary VK_KHR_pipeline_binary>,
@@ -769,7 +783,7 @@
                                   -- which describes the pipeline to release the data from.
                                   ReleaseCapturedPipelineDataInfoKHR
                                -> -- | @pAllocator@ controls host memory allocation as described in the
-                                  -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                                  -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
                                   -- chapter.
                                   ("allocator" ::: Maybe AllocationCallbacks)
                                -> io ()
@@ -782,11 +796,11 @@
   pAllocator <- case (allocator) of
     Nothing -> pure nullPtr
     Just j -> ContT $ withCStruct (j)
-  _ <- lift $ traceAroundEvent "vkReleaseCapturedPipelineDataKHR" (vkReleaseCapturedPipelineDataKHR'
+  r <- lift $ traceAroundEvent "vkReleaseCapturedPipelineDataKHR" (vkReleaseCapturedPipelineDataKHR'
                                                                      (deviceHandle (device))
                                                                      pInfo
                                                                      pAllocator)
-  pure $ ()
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
 
 
 -- | VkPipelineBinaryCreateInfoKHR - Structure specifying where to retrieve
@@ -797,7 +811,7 @@
 -- When @pPipelineCreateInfo@ is not @NULL@, an implementation will attempt
 -- to retrieve pipeline binary data from an internal cache external to the
 -- application if
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-pipelineBinaryInternalCache pipelineBinaryInternalCache>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-pipelineBinaryInternalCache pipelineBinaryInternalCache>
 -- is 'Vulkan.Core10.FundamentalTypes.TRUE'. Applications /can/ use this to
 -- determine if a pipeline /can/ be created without compilation. If the
 -- implementation fails to create a pipeline binary due to missing an
@@ -809,7 +823,7 @@
 -- pipeline binary with the same parameters that succeeded earlier.
 --
 -- If
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-pipelineBinaryPrecompiledInternalCache pipelineBinaryPrecompiledInternalCache>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-pipelineBinaryPrecompiledInternalCache pipelineBinaryPrecompiledInternalCache>
 -- is 'Vulkan.Core10.FundamentalTypes.TRUE', the implementation /may/ be
 -- able to create pipeline binaries even when @pPipelineCreateInfo@ has not
 -- been used to create binaries before by the application.
@@ -822,7 +836,7 @@
 -- -   #VUID-VkPipelineBinaryCreateInfoKHR-pipeline-09607# If @pipeline@ is
 --     not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @pipeline@ /must/ have
 --     been created with
---     'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR'
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR'
 --
 -- -   #VUID-VkPipelineBinaryCreateInfoKHR-pipeline-09608# If @pipeline@ is
 --     not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
@@ -831,7 +845,7 @@
 --
 -- -   #VUID-VkPipelineBinaryCreateInfoKHR-pipelineBinaryInternalCache-09609#
 --     If
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-pipelineBinaryInternalCache pipelineBinaryInternalCache>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-pipelineBinaryInternalCache pipelineBinaryInternalCache>
 --     is 'Vulkan.Core10.FundamentalTypes.FALSE' pPipelineCreateInfo /must/
 --     be @NULL@
 --
@@ -1234,9 +1248,14 @@
 -- 0 is included in the @pNext@ chain of any @Vk*PipelineCreateInfo@
 -- structure when creating a pipeline, implementations /must/ use the data
 -- in @pPipelineBinaries@ instead of recalculating it. Any shader module
--- identifiers or shader modules declared in
--- 'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo' instances are
--- ignored.
+-- identifiers, shader modules, or chained
+-- 'Vulkan.Core10.Shader.ShaderModuleCreateInfo' structures declared in
+-- 'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo' instances,
+-- are ignored. Any
+-- 'Vulkan.Extensions.VK_EXT_descriptor_heap.ShaderDescriptorSetAndBindingMappingInfoEXT'
+-- in the @pNext@ chains of
+-- 'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo' instances
+-- are ignored.
 --
 -- If this structure is not included in the @pNext@ chain, it is equivalent
 -- to specifying this structure with a @binaryCount@ of @0@.
@@ -1249,10 +1268,11 @@
 --     @Vk*PipelineCreateInfo@ structure and its @pNext@ chain, ignoring
 --     the presence of the 'PipelineBinaryInfoKHR' structure, the presence
 --     of the
---     'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR'
---     flag, and absence of any shader module identifiers or shader
---     modules, for the same
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#global-pipeline-key global pipeline key>,
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR'
+--     flag, and absence of any shader module identifiers, shader modules,
+--     or 'Vulkan.Core10.Shader.ShaderModuleCreateInfo' structures, for the
+--     same
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#global-pipeline-key global pipeline key>,
 --     from either:
 --
 --     -   'PipelineBinaryCreateInfoKHR'::@pPipelineCreateInfo@, or
@@ -1269,6 +1289,16 @@
 --     pointer to an array of @binaryCount@ valid
 --     'Vulkan.Extensions.Handles.PipelineBinaryKHR' handles
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.ComputePipeline.ComputePipelineCreateInfo'
+--
+--     -   'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'
+--
+--     -   'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingPipelineCreateInfoKHR'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_pipeline_binary VK_KHR_pipeline_binary>,
@@ -1317,8 +1347,32 @@
 -- | VkReleaseCapturedPipelineDataInfoKHR - Structure specifying a pipeline
 -- whose captured data is to be released
 --
+-- == Valid Usage
+--
+-- -   #VUID-VkReleaseCapturedPipelineDataInfoKHR-pipeline-09613#
+--     @pipeline@ /must/ have been created with
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR'
+--
+-- -   #VUID-VkReleaseCapturedPipelineDataInfoKHR-pipeline-09618#
+--     @pipeline@ /must/ not have been used in a previous call to
+--     'releaseCapturedPipelineDataKHR'
+--
 -- == Valid Usage (Implicit)
 --
+-- -   #VUID-VkReleaseCapturedPipelineDataInfoKHR-sType-sType# @sType@
+--     /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RELEASE_CAPTURED_PIPELINE_DATA_INFO_KHR'
+--
+-- -   #VUID-VkReleaseCapturedPipelineDataInfoKHR-pNext-pNext# @pNext@
+--     /must/ be @NULL@
+--
+-- -   #VUID-VkReleaseCapturedPipelineDataInfoKHR-pipeline-parameter#
+--     @pipeline@ /must/ be a valid 'Vulkan.Core10.Handles.Pipeline' handle
+--
+-- == Host Synchronization
+--
+-- -   Host access to @pipeline@ /must/ be externally synchronized
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_pipeline_binary VK_KHR_pipeline_binary>,
@@ -1327,17 +1381,6 @@
 -- 'releaseCapturedPipelineDataKHR'
 data ReleaseCapturedPipelineDataInfoKHR = ReleaseCapturedPipelineDataInfoKHR
   { -- | @pipeline@ the handle of the pipeline object to release the data from.
-    --
-    -- #VUID-VkReleaseCapturedPipelineDataInfoKHR-pipeline-09613# @pipeline@
-    -- /must/ have been created with
-    -- 'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR'
-    --
-    -- #VUID-VkReleaseCapturedPipelineDataInfoKHR-pipeline-09618# @pipeline@
-    -- /must/ not have been used in a previous call to
-    -- 'releaseCapturedPipelineDataKHR'
-    --
-    -- #VUID-VkReleaseCapturedPipelineDataInfoKHR-pipeline-parameter#
-    -- @pipeline@ /must/ be a valid 'Vulkan.Core10.Handles.Pipeline' handle
     pipeline :: Pipeline }
   deriving (Typeable, Eq)
 #if defined(GENERIC_INSTANCES)
@@ -1494,12 +1537,22 @@
 -- 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. 'PhysicalDevicePipelineBinaryFeaturesKHR' /can/ also be used
--- in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDevicePipelineBinaryFeaturesKHR', it /must/ add an instance of
+-- the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_pipeline_binary VK_KHR_pipeline_binary>,
@@ -1508,7 +1561,7 @@
 data PhysicalDevicePipelineBinaryFeaturesKHR = PhysicalDevicePipelineBinaryFeaturesKHR
   { -- | #features-pipelineBinaries# @pipelineBinaries@ indicates that the
     -- implementation supports
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-binaries>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-binaries>.
     pipelineBinaries :: Bool }
   deriving (Typeable, Eq)
 #if defined(GENERIC_INSTANCES)
@@ -1571,6 +1624,12 @@
 --     @sType@ /must/ be
 --     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEVICE_PIPELINE_BINARY_INTERNAL_CACHE_CONTROL_KHR'
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_pipeline_binary VK_KHR_pipeline_binary>,
@@ -1641,7 +1700,11 @@
 -- it is filled in with each corresponding implementation-dependent
 -- property.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Extensions/VK_KHR_pipeline_binary.hs-boot b/src/Vulkan/Extensions/VK_KHR_pipeline_binary.hs-boot
--- a/src/Vulkan/Extensions/VK_KHR_pipeline_binary.hs-boot
+++ b/src/Vulkan/Extensions/VK_KHR_pipeline_binary.hs-boot
@@ -22,6 +22,8 @@
 --
 -- [__Extension and Version Dependencies__]
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance5 VK_KHR_maintenance5>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.4 Vulkan Version 1.4>
 --
 -- [__Contact__]
 --
@@ -116,8 +118,9 @@
 --
 --     -   'DevicePipelineBinaryInternalCacheControlKHR'
 --
--- -   Extending 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo',
---     'Vulkan.Core10.Pipeline.ComputePipelineCreateInfo',
+-- -   Extending
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo',
+--     'Vulkan.Core10.ComputePipeline.ComputePipelineCreateInfo',
 --     'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingPipelineCreateInfoKHR':
 --
 --     -   'PipelineBinaryInfoKHR'
@@ -146,9 +149,9 @@
 --     -   'Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_PIPELINE_BINARY_KHR'
 --
 -- -   Extending
---     'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlagBits2KHR':
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PipelineCreateFlagBits2':
 --
---     -   'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR'
+--     -   'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR'
 --
 -- -   Extending 'Vulkan.Core10.Enums.Result.Result':
 --
@@ -191,7 +194,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_pipeline_binary Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_pipeline_binary Vulkan Specification>.
 --
 -- This 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
@@ -166,7 +166,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_pipeline_executable_properties Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -307,7 +307,7 @@
 --
 -- -   #VUID-vkGetPipelineExecutablePropertiesKHR-pipelineExecutableInfo-03270#
 --     The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-pipelineExecutableInfo pipelineExecutableInfo>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-pipelineExecutableInfo pipelineExecutableInfo>
 --     feature /must/ be enabled
 --
 -- -   #VUID-vkGetPipelineExecutablePropertiesKHR-pipeline-03271# The
@@ -336,16 +336,20 @@
 --
 -- [<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'
 --
+--     -   '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_DEVICE_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_pipeline_executable_properties VK_KHR_pipeline_executable_properties>,
@@ -414,7 +418,7 @@
 --
 -- -   #VUID-vkGetPipelineExecutableStatisticsKHR-pipelineExecutableInfo-03272#
 --     The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-pipelineExecutableInfo pipelineExecutableInfo>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-pipelineExecutableInfo pipelineExecutableInfo>
 --     feature /must/ be enabled
 --
 -- -   #VUID-vkGetPipelineExecutableStatisticsKHR-pipeline-03273# The
@@ -447,16 +451,20 @@
 --
 -- [<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'
 --
+--     -   '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_DEVICE_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_pipeline_executable_properties VK_KHR_pipeline_executable_properties>,
@@ -533,7 +541,7 @@
 --
 -- -   #VUID-vkGetPipelineExecutableInternalRepresentationsKHR-pipelineExecutableInfo-03276#
 --     The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-pipelineExecutableInfo pipelineExecutableInfo>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-pipelineExecutableInfo pipelineExecutableInfo>
 --     feature /must/ be enabled
 --
 -- -   #VUID-vkGetPipelineExecutableInternalRepresentationsKHR-pipeline-03277#
@@ -569,16 +577,20 @@
 --
 -- [<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'
 --
+--     -   '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_DEVICE_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_pipeline_executable_properties VK_KHR_pipeline_executable_properties>,
@@ -635,13 +647,22 @@
 -- structure passed to
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
 -- it is filled in to indicate whether each corresponding feature is
--- supported. 'PhysicalDevicePipelineExecutablePropertiesFeaturesKHR' /can/
--- also be used in the @pNext@ chain of
--- 'Vulkan.Core10.Device.DeviceCreateInfo' to selectively enable these
--- features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDevicePipelineExecutablePropertiesFeaturesKHR', it /must/ add
+-- an instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_pipeline_executable_properties VK_KHR_pipeline_executable_properties>,
@@ -1125,6 +1146,27 @@
 -- | VkPipelineExecutableStatisticFormatKHR - Enum describing a pipeline
 -- executable statistic
 --
+-- = Description
+--
+-- -   'PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR' specifies that the
+--     statistic is returned as a 32-bit boolean value which /must/ be
+--     either 'Vulkan.Core10.FundamentalTypes.TRUE' or
+--     'Vulkan.Core10.FundamentalTypes.FALSE' and /should/ be read from the
+--     @b32@ field of 'PipelineExecutableStatisticValueKHR'.
+--
+-- -   'PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR' specifies that the
+--     statistic is returned as a signed 64-bit integer and /should/ be
+--     read from the @i64@ field of 'PipelineExecutableStatisticValueKHR'.
+--
+-- -   'PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR' specifies that the
+--     statistic is returned as an unsigned 64-bit integer and /should/ be
+--     read from the @u64@ field of 'PipelineExecutableStatisticValueKHR'.
+--
+-- -   'PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR' specifies that
+--     the statistic is returned as a 64-bit floating-point value and
+--     /should/ be read from the @f64@ field of
+--     'PipelineExecutableStatisticValueKHR'.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_pipeline_executable_properties VK_KHR_pipeline_executable_properties>,
@@ -1132,26 +1174,16 @@
 newtype PipelineExecutableStatisticFormatKHR = PipelineExecutableStatisticFormatKHR Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR' specifies that the
--- statistic is returned as a 32-bit boolean value which /must/ be either
--- 'Vulkan.Core10.FundamentalTypes.TRUE' or
--- 'Vulkan.Core10.FundamentalTypes.FALSE' and /should/ be read from the
--- @b32@ field of 'PipelineExecutableStatisticValueKHR'.
+-- No documentation found for Nested "VkPipelineExecutableStatisticFormatKHR" "VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR"
 pattern PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR = PipelineExecutableStatisticFormatKHR 0
 
--- | 'PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR' specifies that the
--- statistic is returned as a signed 64-bit integer and /should/ be read
--- from the @i64@ field of 'PipelineExecutableStatisticValueKHR'.
+-- No documentation found for Nested "VkPipelineExecutableStatisticFormatKHR" "VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR"
 pattern PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR = PipelineExecutableStatisticFormatKHR 1
 
--- | 'PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR' specifies that the
--- statistic is returned as an unsigned 64-bit integer and /should/ be read
--- from the @u64@ field of 'PipelineExecutableStatisticValueKHR'.
+-- No documentation found for Nested "VkPipelineExecutableStatisticFormatKHR" "VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR"
 pattern PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR = PipelineExecutableStatisticFormatKHR 2
 
--- | 'PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR' specifies that the
--- statistic is returned as a 64-bit floating-point value and /should/ be
--- read from the @f64@ field of 'PipelineExecutableStatisticValueKHR'.
+-- No documentation found for Nested "VkPipelineExecutableStatisticFormatKHR" "VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR"
 pattern PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR = PipelineExecutableStatisticFormatKHR 3
 
 {-# COMPLETE
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
@@ -166,7 +166,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_pipeline_executable_properties Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -50,7 +50,8 @@
 --
 -- == New Structures
 --
--- -   Extending 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo':
+-- -   Extending
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo':
 --
 --     -   'PipelineLibraryCreateInfoKHR'
 --
@@ -82,7 +83,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_pipeline_library Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -137,36 +138,6 @@
 --     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT'
 --     flag set
 --
--- -   #VUID-VkPipelineLibraryCreateInfoKHR-pLibraries-08096# If any
---     element of @pLibraries@ was created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
---     all elements /must/ have been created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-VkPipelineLibraryCreateInfoKHR-pipeline-07404# If @pipeline@
---     is being created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT',
---     every element of @pLibraries@ /must/ have been created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT'
---
--- -   #VUID-VkPipelineLibraryCreateInfoKHR-pipeline-07405# If @pipeline@
---     is being created without
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT',
---     every element of @pLibraries@ /must/ have been created without
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT'
---
--- -   #VUID-VkPipelineLibraryCreateInfoKHR-pipeline-07406# If @pipeline@
---     is being created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT',
---     every element of @pLibraries@ /must/ have been created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT'
---
--- -   #VUID-VkPipelineLibraryCreateInfoKHR-pipeline-07407# If @pipeline@
---     is being created without
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT',
---     every element of @pLibraries@ /must/ have been created without
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT'
---
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-VkPipelineLibraryCreateInfoKHR-sType-sType# @sType@ /must/ be
@@ -176,6 +147,12 @@
 --     @libraryCount@ is not @0@, @pLibraries@ /must/ be a valid pointer to
 --     an array of @libraryCount@ valid 'Vulkan.Core10.Handles.Pipeline'
 --     handles
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'
 --
 -- = See Also
 --
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
@@ -50,7 +50,8 @@
 --
 -- == New Structures
 --
--- -   Extending 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo':
+-- -   Extending
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo':
 --
 --     -   'PipelineLibraryCreateInfoKHR'
 --
@@ -82,7 +83,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_pipeline_library Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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_enumeration.hs b/src/Vulkan/Extensions/VK_KHR_portability_enumeration.hs
--- a/src/Vulkan/Extensions/VK_KHR_portability_enumeration.hs
+++ b/src/Vulkan/Extensions/VK_KHR_portability_enumeration.hs
@@ -85,7 +85,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_portability_enumeration Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_portability_enumeration Vulkan Specification>.
 --
 -- This 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
@@ -137,7 +137,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_portability_subset Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -189,12 +189,22 @@
 -- structure passed to
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
 -- it is filled in to indicate whether each corresponding feature is
--- supported. 'PhysicalDevicePortabilitySubsetFeaturesKHR' /can/ also be
--- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDevicePortabilitySubsetFeaturesKHR', it /must/ add an instance
+-- of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_portability_subset VK_KHR_portability_subset>,
@@ -204,13 +214,13 @@
   { -- | #features-constantAlphaColorBlendFactors#
     -- @constantAlphaColorBlendFactors@ indicates whether this implementation
     -- supports constant /alpha/
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#framebuffer-blendfactors>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#framebuffer-blendfactors>
     -- used as source or destination /color/
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#framebuffer-blending>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#framebuffer-blending>.
     constantAlphaColorBlendFactors :: Bool
   , -- | #features-events# @events@ indicates whether this implementation
     -- supports synchronization using
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-events>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-events>.
     events :: Bool
   , -- | #features-imageViewFormatReinterpretation#
     -- @imageViewFormatReinterpretation@ indicates whether this implementation
@@ -237,56 +247,56 @@
   , -- | #features-mutableComparisonSamplers# @mutableComparisonSamplers@
     -- indicates whether this implementation allows descriptors with comparison
     -- samplers to be
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-updates updated>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptors-sets-updates updated>.
     mutableComparisonSamplers :: Bool
   , -- | #features-pointPolygons# @pointPolygons@ indicates whether this
     -- implementation supports
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast>
     -- using a /point/
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-polygonmode>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-polygonmode>.
     pointPolygons :: Bool
   , -- | #features-samplerMipLodBias# @samplerMipLodBias@ indicates whether this
     -- implementation supports setting a
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#samplers-mipLodBias mipmap LOD bias value>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#samplers-mipLodBias mipmap LOD bias value>
     -- when
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#samplers creating a sampler>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#samplers creating a sampler>.
     samplerMipLodBias :: Bool
   , -- | #features-separateStencilMaskRef# @separateStencilMaskRef@ indicates
     -- whether this implementation supports separate front and back
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-stencil>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#fragops-stencil>
     -- reference values.
     separateStencilMaskRef :: Bool
   , -- | #features-shaderSampleRateInterpolationFunctions#
     -- @shaderSampleRateInterpolationFunctions@ indicates whether this
     -- implementation supports fragment shaders which use the
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-InterpolationFunction InterpolationFunction>
+    -- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-sampleRateShading sampleRateShading>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-sampleRateShading sampleRateShading>
     -- feature is supported.
     shaderSampleRateInterpolationFunctions :: Bool
   , -- | #features-tessellationIsolines# @tessellationIsolines@ indicates whether
     -- this implementation supports
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#tessellation-isoline-tessellation isoline output>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#tessellation-isoline-tessellation isoline output>
     -- from the
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#tessellation>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#tessellation>
     -- stage of a graphics pipeline. This member is only meaningful if the
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-tessellationShader tessellationShader>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-tessellationShader tessellationShader>
     -- feature is supported.
     tessellationIsolines :: Bool
   , -- | #features-tessellationPointMode# @tessellationPointMode@ indicates
     -- whether this implementation supports
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#tessellation-point-mode point output>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#tessellation-point-mode point output>
     -- from the
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#tessellation>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#tessellation>
     -- stage of a graphics pipeline. This member is only meaningful if the
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-tessellationShader tessellationShader>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-tessellationShader tessellationShader>
     -- feature is supported.
     tessellationPointMode :: Bool
   , -- | #features-triangleFans# @triangleFans@ indicates whether this
     -- implementation supports
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#drawing-triangle-fans>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#drawing-triangle-fans>
     -- primitive topology.
     triangleFans :: Bool
   , -- | #features-vertexAttributeAccessBeyondStride#
@@ -416,8 +426,12 @@
 -- it is filled in with each corresponding implementation-dependent
 -- property.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_portability_subset VK_KHR_portability_subset>,
@@ -426,9 +440,9 @@
   { -- | #limits-minVertexInputBindingStrideAlignment#
     -- @minVertexInputBindingStrideAlignment@ indicates the minimum alignment
     -- for vertex input strides.
-    -- 'Vulkan.Core10.Pipeline.VertexInputBindingDescription'::@stride@ /must/
-    -- be a multiple of, and at least as large as, this value. The value /must/
-    -- be a power of two.
+    -- 'Vulkan.Core10.GraphicsPipeline.VertexInputBindingDescription'::@stride@
+    -- /must/ be a multiple of, and at least as large as, this value. The value
+    -- /must/ be a power of two.
     minVertexInputBindingStrideAlignment :: Word32 }
   deriving (Typeable, Eq)
 #if defined(GENERIC_INSTANCES)
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
@@ -137,7 +137,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_portability_subset Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -23,8 +23,10 @@
 -- [__Extension and Version Dependencies__]
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_swapchain VK_KHR_swapchain>
 --     and
+--         
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
---     or
+--          or
+--         
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
 --
 -- [__Contact__]
@@ -96,7 +98,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_present_id Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -161,12 +163,22 @@
 -- 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. 'PhysicalDevicePresentIdFeaturesKHR' /can/ also be used in
--- the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDevicePresentIdFeaturesKHR', it /must/ add an instance of the
+-- structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_present_id VK_KHR_present_id>,
@@ -223,7 +235,7 @@
 -- queued by a call to
 -- 'Vulkan.Extensions.VK_KHR_swapchain.queuePresentKHR', an identifier
 -- needs to be associated with them. When the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-presentId presentId>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -257,9 +269,10 @@
 --     where this 'PresentIdKHR' is in the @pNext@ chain of the
 --     'Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR' structure
 --
--- -   #VUID-VkPresentIdKHR-presentIds-04999# Each @presentIds@ entry
---     /must/ be greater than any previous @presentIds@ entry passed for
---     the associated @pSwapchains@ entry
+-- -   #VUID-VkPresentIdKHR-presentIds-04999# Each non-zero entry in
+--     @presentIds@ /must/ be greater than all previously submitted present
+--     ids for the associated swapchain in
+--     'Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR'::@pSwapchains@
 --
 -- == Valid Usage (Implicit)
 --
@@ -272,6 +285,12 @@
 --
 -- -   #VUID-VkPresentIdKHR-swapchainCount-arraylength# @swapchainCount@
 --     /must/ be greater than @0@
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR'
 --
 -- = See Also
 --
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
@@ -23,8 +23,10 @@
 -- [__Extension and Version Dependencies__]
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_swapchain VK_KHR_swapchain>
 --     and
+--         
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
---     or
+--          or
+--         
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
 --
 -- [__Contact__]
@@ -96,7 +98,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_present_id Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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_id2.hs b/src/Vulkan/Extensions/VK_KHR_present_id2.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_KHR_present_id2.hs
@@ -0,0 +1,475 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_KHR_present_id2 - device extension
+--
+-- = VK_KHR_present_id2
+--
+-- [__Name String__]
+--     @VK_KHR_present_id2@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     480
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_surface_capabilities2 VK_KHR_get_surface_capabilities2>
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_surface VK_KHR_surface>
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_swapchain VK_KHR_swapchain>
+--
+-- [__Contact__]
+--
+--     -   Daniel Stone
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_KHR_present_id2.adoc VK_KHR_present_id2>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2025-01-06
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Contributors__]
+--
+--     -   Hans-Kristian Arntzen, Valve
+--
+--     -   James Jones, NVIDIA
+--
+--     -   Daniel Stone, Collabora
+--
+--     -   Derek Foreman, Collabora
+--
+--     -   /contributors to
+--         \`<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_present_id VK_KHR_present_id>\`/
+--
+-- == Description
+--
+-- This device extension allows an application that uses the
+-- @VK_KHR_swapchain@ extension to provide an identifier for present
+-- operations on a swapchain. An application /can/ use this to reference
+-- specific present operations in other extensions.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDevicePresentId2FeaturesKHR'
+--
+-- -   Extending 'Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR':
+--
+--     -   'PresentId2KHR'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.SurfaceCapabilities2KHR':
+--
+--     -   'SurfaceCapabilitiesPresentId2KHR'
+--
+-- == New Enum Constants
+--
+-- -   'KHR_PRESENT_ID_2_EXTENSION_NAME'
+--
+-- -   'KHR_PRESENT_ID_2_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_2_FEATURES_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PRESENT_ID_2_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_ID_2_KHR'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateFlagBitsKHR':
+--
+--     -   'Vulkan.Extensions.VK_KHR_swapchain.SWAPCHAIN_CREATE_PRESENT_ID_2_BIT_KHR'
+--
+-- == Issues
+--
+-- None.
+--
+-- == Version History
+--
+-- -   Revision 1, 2022-05-10 (Daniel Stone)
+--
+--     -   Repurposed VK_KHR_present_id to be driven by surface
+--         capabilities
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_present_id2 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_present_id2  ( PhysicalDevicePresentId2FeaturesKHR(..)
+                                             , PresentId2KHR(..)
+                                             , SurfaceCapabilitiesPresentId2KHR(..)
+                                             , KHR_PRESENT_ID_2_SPEC_VERSION
+                                             , pattern KHR_PRESENT_ID_2_SPEC_VERSION
+                                             , KHR_PRESENT_ID_2_EXTENSION_NAME
+                                             , pattern KHR_PRESENT_ID_2_EXTENSION_NAME
+                                             , SwapchainCreateFlagBitsKHR(..)
+                                             , SwapchainCreateFlagsKHR
+                                             ) where
+
+import Control.Monad (unless)
+import Foreign.Marshal.Alloc (allocaBytes)
+import GHC.IO (throwIO)
+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 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 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.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.Core10.FundamentalTypes (Bool32)
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_2_FEATURES_KHR))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PRESENT_ID_2_KHR))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_ID_2_KHR))
+import Vulkan.Extensions.VK_KHR_swapchain (SwapchainCreateFlagBitsKHR(..))
+import Vulkan.Extensions.VK_KHR_swapchain (SwapchainCreateFlagsKHR)
+-- | VkPhysicalDevicePresentId2FeaturesKHR - Structure indicating support for
+-- present id 2
+--
+-- = Members
+--
+-- This structure describes the following feature:
+--
+-- = Description
+--
+-- If the 'PhysicalDevicePresentId2FeaturesKHR' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDevicePresentId2FeaturesKHR', it /must/ add an instance of the
+-- structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_present_id2 VK_KHR_present_id2>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDevicePresentId2FeaturesKHR = PhysicalDevicePresentId2FeaturesKHR
+  { -- | #features-presentId2# @presentId2@ indicates that the implementation
+    -- supports specifying present ID values in the 'PresentId2KHR' extension
+    -- to the 'Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR' struct.
+    presentId2 :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDevicePresentId2FeaturesKHR)
+#endif
+deriving instance Show PhysicalDevicePresentId2FeaturesKHR
+
+instance ToCStruct PhysicalDevicePresentId2FeaturesKHR where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDevicePresentId2FeaturesKHR{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_2_FEATURES_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (presentId2))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_2_FEATURES_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDevicePresentId2FeaturesKHR where
+  peekCStruct p = do
+    presentId2 <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDevicePresentId2FeaturesKHR
+             (bool32ToBool presentId2)
+
+instance Storable PhysicalDevicePresentId2FeaturesKHR where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDevicePresentId2FeaturesKHR where
+  zero = PhysicalDevicePresentId2FeaturesKHR
+           zero
+
+
+-- | VkPresentId2KHR - The list of presentation identifiers
+--
+-- = Description
+--
+-- For applications to be able to reference specific presentation events
+-- queued by a call to
+-- 'Vulkan.Extensions.VK_KHR_swapchain.queuePresentKHR', an identifier
+-- needs to be associated with them.
+--
+-- When the 'SurfaceCapabilitiesPresentId2KHR' surface capability is
+-- present for a surface, applications /can/ include the 'PresentId2KHR'
+-- structure in the @pNext@ chain of the
+-- 'Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR' structure to
+-- associate an identifier with each presentation request. The
+-- @pPresentIds@ provides an identifier for the swapchain present at the
+-- corresponding index in
+-- 'Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR'’s @pSwapchains@
+-- array.
+--
+-- If this presentId is non-zero, then the application /can/ later use this
+-- value to refer to that image presentation. A value of zero indicates
+-- that this presentation has no associated presentId. A non-zero presentId
+-- /must/ be greater than any non-zero presentId passed previously by the
+-- application for the same swapchain.
+--
+-- If a non-zero presentId was provided, this may be used with
+-- 'Vulkan.Extensions.VK_KHR_present_wait2.waitForPresent2KHR' for the
+-- application to synchronize against the presentation engine’s processing
+-- of the presentation request.
+--
+-- The ID namespace used by this extension /must/ be shared with other
+-- extensions that allow the application to provide a 64-bit monotonically
+-- increasing presentation ID, such as the original VK_KHR_present_id.
+--
+-- This is to allow existing extensions that depend on VK_KHR_present_id to
+-- use VK_KHR_present_id2 provided IDs without change, as well as to
+-- simplify writing future extensions that require application provided
+-- presentation IDs.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkPresentId2KHR-swapchainCount-10818# @swapchainCount@ /must/
+--     be the same value as
+--     'Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR'::@swapchainCount@,
+--     where this 'PresentId2KHR' is in the @pNext@ chain of the
+--     'Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR' structure
+--
+-- -   #VUID-VkPresentId2KHR-presentIds-10819# Each non-zero entry in
+--     @presentIds@ /must/ be greater than all previously submitted present
+--     ids for the associated swapchain in
+--     'Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR'::@pSwapchains@
+--
+-- -   #VUID-VkPresentId2KHR-None-10820# The swapchain must have been
+--     created with
+--     'Vulkan.Extensions.VK_KHR_swapchain.SWAPCHAIN_CREATE_PRESENT_ID_2_BIT_KHR'
+--     bit set in the
+--     'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateFlagBitsKHR'
+--     field
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkPresentId2KHR-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PRESENT_ID_2_KHR'
+--
+-- -   #VUID-VkPresentId2KHR-pPresentIds-parameter# If @pPresentIds@ is not
+--     @NULL@, @pPresentIds@ /must/ be a valid pointer to an array of
+--     @swapchainCount@ @uint64_t@ values
+--
+-- -   #VUID-VkPresentId2KHR-swapchainCount-arraylength# @swapchainCount@
+--     /must/ be greater than @0@
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_present_id2 VK_KHR_present_id2>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PresentId2KHR = PresentId2KHR
+  { -- | @swapchainCount@ is the number of swapchains being presented to the
+    -- 'Vulkan.Extensions.VK_KHR_swapchain.queuePresentKHR' command.
+    swapchainCount :: Word32
+  , -- | @pPresentIds@ is @NULL@ or a pointer to an array of uint64_t with
+    -- @swapchainCount@ entries. If not @NULL@, each non-zero value in
+    -- @pPresentIds@ specifies the present id to be associated with the
+    -- presentation of the swapchain with the same index in the
+    -- 'Vulkan.Extensions.VK_KHR_swapchain.queuePresentKHR' call.
+    presentIds :: Vector Word64
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PresentId2KHR)
+#endif
+deriving instance Show PresentId2KHR
+
+instance ToCStruct PresentId2KHR where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PresentId2KHR{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PRESENT_ID_2_KHR)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    let pPresentIdsLength = Data.Vector.length $ (presentIds)
+    swapchainCount'' <- lift $ if (swapchainCount) == 0
+      then pure $ fromIntegral pPresentIdsLength
+      else do
+        unless (fromIntegral pPresentIdsLength == (swapchainCount) || pPresentIdsLength == 0) $
+          throwIO $ IOError Nothing InvalidArgument "" "pPresentIds must be empty or have 'swapchainCount' elements" Nothing Nothing
+        pure (swapchainCount)
+    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) (swapchainCount'')
+    pPresentIds'' <- if Data.Vector.null (presentIds)
+      then pure nullPtr
+      else do
+        pPPresentIds <- ContT $ allocaBytes @Word64 (((Data.Vector.length (presentIds))) * 8)
+        lift $ Data.Vector.imapM_ (\i e -> poke (pPPresentIds `plusPtr` (8 * (i)) :: Ptr Word64) (e)) ((presentIds))
+        pure $ pPPresentIds
+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Word64))) pPresentIds''
+    lift $ f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PRESENT_ID_2_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    f
+
+instance FromCStruct PresentId2KHR where
+  peekCStruct p = do
+    swapchainCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    pPresentIds <- peek @(Ptr Word64) ((p `plusPtr` 24 :: Ptr (Ptr Word64)))
+    let pPresentIdsLength = if pPresentIds == nullPtr then 0 else (fromIntegral swapchainCount)
+    pPresentIds' <- generateM pPresentIdsLength (\i -> peek @Word64 ((pPresentIds `advancePtrBytes` (8 * (i)) :: Ptr Word64)))
+    pure $ PresentId2KHR
+             swapchainCount pPresentIds'
+
+instance Zero PresentId2KHR where
+  zero = PresentId2KHR
+           zero
+           mempty
+
+
+-- | VkSurfaceCapabilitiesPresentId2KHR - Structure describing
+-- presentation-ID capabilities of a surface
+--
+-- = Description
+--
+-- This structure /can/ be included in the @pNext@ chain of
+-- 'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.SurfaceCapabilities2KHR'
+-- to determine support for present-wait. If @presentId2Supported@ is
+-- 'Vulkan.Core10.FundamentalTypes.FALSE', it indicates that attaching an
+-- ID to presentation requests is not possible for this surface.
+--
+-- Applications /must/ not attempt to include 'PresentId2KHR' in the
+-- @pNext@ chain of a 'Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR'
+-- if @presentId2Supported@ is 'Vulkan.Core10.FundamentalTypes.FALSE'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.SurfaceCapabilities2KHR'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_present_id2 VK_KHR_present_id2>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data SurfaceCapabilitiesPresentId2KHR = SurfaceCapabilitiesPresentId2KHR
+  { -- | @presentId2Supported@ is a boolean describing whether the surface is
+    -- able to support the present-ID extension
+    presentId2Supported :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (SurfaceCapabilitiesPresentId2KHR)
+#endif
+deriving instance Show SurfaceCapabilitiesPresentId2KHR
+
+instance ToCStruct SurfaceCapabilitiesPresentId2KHR where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p SurfaceCapabilitiesPresentId2KHR{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_ID_2_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (presentId2Supported))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_ID_2_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct SurfaceCapabilitiesPresentId2KHR where
+  peekCStruct p = do
+    presentId2Supported <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ SurfaceCapabilitiesPresentId2KHR
+             (bool32ToBool presentId2Supported)
+
+instance Storable SurfaceCapabilitiesPresentId2KHR where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero SurfaceCapabilitiesPresentId2KHR where
+  zero = SurfaceCapabilitiesPresentId2KHR
+           zero
+
+
+type KHR_PRESENT_ID_2_SPEC_VERSION = 1
+
+-- No documentation found for TopLevel "VK_KHR_PRESENT_ID_2_SPEC_VERSION"
+pattern KHR_PRESENT_ID_2_SPEC_VERSION :: forall a . Integral a => a
+pattern KHR_PRESENT_ID_2_SPEC_VERSION = 1
+
+
+type KHR_PRESENT_ID_2_EXTENSION_NAME = "VK_KHR_present_id2"
+
+-- No documentation found for TopLevel "VK_KHR_PRESENT_ID_2_EXTENSION_NAME"
+pattern KHR_PRESENT_ID_2_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern KHR_PRESENT_ID_2_EXTENSION_NAME = "VK_KHR_present_id2"
+
diff --git a/src/Vulkan/Extensions/VK_KHR_present_id2.hs-boot b/src/Vulkan/Extensions/VK_KHR_present_id2.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_KHR_present_id2.hs-boot
@@ -0,0 +1,154 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_KHR_present_id2 - device extension
+--
+-- = VK_KHR_present_id2
+--
+-- [__Name String__]
+--     @VK_KHR_present_id2@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     480
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_surface_capabilities2 VK_KHR_get_surface_capabilities2>
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_surface VK_KHR_surface>
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_swapchain VK_KHR_swapchain>
+--
+-- [__Contact__]
+--
+--     -   Daniel Stone
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_KHR_present_id2.adoc VK_KHR_present_id2>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2025-01-06
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Contributors__]
+--
+--     -   Hans-Kristian Arntzen, Valve
+--
+--     -   James Jones, NVIDIA
+--
+--     -   Daniel Stone, Collabora
+--
+--     -   Derek Foreman, Collabora
+--
+--     -   /contributors to
+--         \`<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_present_id VK_KHR_present_id>\`/
+--
+-- == Description
+--
+-- This device extension allows an application that uses the
+-- @VK_KHR_swapchain@ extension to provide an identifier for present
+-- operations on a swapchain. An application /can/ use this to reference
+-- specific present operations in other extensions.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDevicePresentId2FeaturesKHR'
+--
+-- -   Extending 'Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR':
+--
+--     -   'PresentId2KHR'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.SurfaceCapabilities2KHR':
+--
+--     -   'SurfaceCapabilitiesPresentId2KHR'
+--
+-- == New Enum Constants
+--
+-- -   'KHR_PRESENT_ID_2_EXTENSION_NAME'
+--
+-- -   'KHR_PRESENT_ID_2_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_2_FEATURES_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PRESENT_ID_2_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_ID_2_KHR'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateFlagBitsKHR':
+--
+--     -   'Vulkan.Extensions.VK_KHR_swapchain.SWAPCHAIN_CREATE_PRESENT_ID_2_BIT_KHR'
+--
+-- == Issues
+--
+-- None.
+--
+-- == Version History
+--
+-- -   Revision 1, 2022-05-10 (Daniel Stone)
+--
+--     -   Repurposed VK_KHR_present_id to be driven by surface
+--         capabilities
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_present_id2 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_present_id2  ( PhysicalDevicePresentId2FeaturesKHR
+                                             , PresentId2KHR
+                                             , SurfaceCapabilitiesPresentId2KHR
+                                             ) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data PhysicalDevicePresentId2FeaturesKHR
+
+instance ToCStruct PhysicalDevicePresentId2FeaturesKHR
+instance Show PhysicalDevicePresentId2FeaturesKHR
+
+instance FromCStruct PhysicalDevicePresentId2FeaturesKHR
+
+
+data PresentId2KHR
+
+instance ToCStruct PresentId2KHR
+instance Show PresentId2KHR
+
+instance FromCStruct PresentId2KHR
+
+
+data SurfaceCapabilitiesPresentId2KHR
+
+instance ToCStruct SurfaceCapabilitiesPresentId2KHR
+instance Show SurfaceCapabilitiesPresentId2KHR
+
+instance FromCStruct SurfaceCapabilitiesPresentId2KHR
+
diff --git a/src/Vulkan/Extensions/VK_KHR_present_mode_fifo_latest_ready.hs b/src/Vulkan/Extensions/VK_KHR_present_mode_fifo_latest_ready.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_KHR_present_mode_fifo_latest_ready.hs
@@ -0,0 +1,234 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_KHR_present_mode_fifo_latest_ready - device extension
+--
+-- = VK_KHR_present_mode_fifo_latest_ready
+--
+-- [__Name String__]
+--     @VK_KHR_present_mode_fifo_latest_ready@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     622
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_swapchain VK_KHR_swapchain>
+--
+-- [__Contact__]
+--
+--     -   Lionel Duc
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_present_mode_fifo_latest_ready] @nvlduc%0A*Here describe the issue or question you have about the VK_KHR_present_mode_fifo_latest_ready extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_KHR_present_mode_fifo_latest_ready.adoc VK_KHR_present_mode_fifo_latest_ready>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2025-03-18
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Contributors__]
+--
+--     -   James Jones, NVIDIA
+--
+--     -   Lionel Duc, NVIDIA
+--
+--     -   Lina Versace, Google
+--
+-- == Description
+--
+-- This extension is based on @VK_EXT_present_mode_fifo_latest_ready@ and
+-- provides equivalent functionality.
+--
+-- This extension adds a new present mode,
+-- 'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_FIFO_LATEST_READY_KHR'.
+--
+-- This tear-free present mode behaves much like
+-- 'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_FIFO_KHR', except that
+-- each vertical blanking period dequeues consecutive present requests
+-- until the latest ready is found to update the current image.
+--
+-- While this seems similar in concept to
+-- 'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_MAILBOX_KHR', the
+-- fundamental difference is that the processing of the present requests is
+-- done during vblank. From the application perspective, this means for
+-- example, that in a flip-based model, a single vblank /may/ cause
+-- multiple swapchain images to be released at once, while
+-- 'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_MAILBOX_KHR' /may/
+-- continuously be releasing images as new requests become ready.
+--
+-- This additional present mode is useful when using a time-based present
+-- API.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR'
+--
+-- == New Enum Constants
+--
+-- -   'KHR_PRESENT_MODE_FIFO_LATEST_READY_EXTENSION_NAME'
+--
+-- -   'KHR_PRESENT_MODE_FIFO_LATEST_READY_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Extensions.VK_KHR_surface.PresentModeKHR':
+--
+--     -   'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_FIFO_LATEST_READY_KHR'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_KHR'
+--
+-- == Version History
+--
+-- -   Revision 1, 2025-03-18 (Lina Versace)
+--
+--     -   Internal revisions
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_present_mode_fifo_latest_ready 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_present_mode_fifo_latest_ready  ( PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR(..)
+                                                                , KHR_PRESENT_MODE_FIFO_LATEST_READY_SPEC_VERSION
+                                                                , pattern KHR_PRESENT_MODE_FIFO_LATEST_READY_SPEC_VERSION
+                                                                , KHR_PRESENT_MODE_FIFO_LATEST_READY_EXTENSION_NAME
+                                                                , pattern KHR_PRESENT_MODE_FIFO_LATEST_READY_EXTENSION_NAME
+                                                                , PresentModeKHR(..)
+                                                                ) 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_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_KHR))
+import Vulkan.Extensions.VK_KHR_surface (PresentModeKHR(..))
+-- | VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR - Structure
+-- describing support for VK_PRESENT_MODE_FIFO_LATEST_READY_KHR
+--
+-- = Description
+--
+-- If the 'PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_present_mode_fifo_latest_ready VK_EXT_present_mode_fifo_latest_ready>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_present_mode_fifo_latest_ready VK_KHR_present_mode_fifo_latest_ready>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR = PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR
+  { -- | #features-presentModeFifoLatestReady# @presentModeFifoLatestReady@
+    -- specifies whether the implementation supports the
+    -- 'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_FIFO_LATEST_READY_KHR'
+    -- present mode.
+    presentModeFifoLatestReady :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR)
+#endif
+deriving instance Show PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR
+
+instance ToCStruct PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (presentModeFifoLatestReady))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR where
+  peekCStruct p = do
+    presentModeFifoLatestReady <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR
+             (bool32ToBool presentModeFifoLatestReady)
+
+instance Storable PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR where
+  zero = PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR
+           zero
+
+
+type KHR_PRESENT_MODE_FIFO_LATEST_READY_SPEC_VERSION = 1
+
+-- No documentation found for TopLevel "VK_KHR_PRESENT_MODE_FIFO_LATEST_READY_SPEC_VERSION"
+pattern KHR_PRESENT_MODE_FIFO_LATEST_READY_SPEC_VERSION :: forall a . Integral a => a
+pattern KHR_PRESENT_MODE_FIFO_LATEST_READY_SPEC_VERSION = 1
+
+
+type KHR_PRESENT_MODE_FIFO_LATEST_READY_EXTENSION_NAME = "VK_KHR_present_mode_fifo_latest_ready"
+
+-- No documentation found for TopLevel "VK_KHR_PRESENT_MODE_FIFO_LATEST_READY_EXTENSION_NAME"
+pattern KHR_PRESENT_MODE_FIFO_LATEST_READY_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern KHR_PRESENT_MODE_FIFO_LATEST_READY_EXTENSION_NAME = "VK_KHR_present_mode_fifo_latest_ready"
+
diff --git a/src/Vulkan/Extensions/VK_KHR_present_mode_fifo_latest_ready.hs-boot b/src/Vulkan/Extensions/VK_KHR_present_mode_fifo_latest_ready.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_KHR_present_mode_fifo_latest_ready.hs-boot
@@ -0,0 +1,126 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_KHR_present_mode_fifo_latest_ready - device extension
+--
+-- = VK_KHR_present_mode_fifo_latest_ready
+--
+-- [__Name String__]
+--     @VK_KHR_present_mode_fifo_latest_ready@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     622
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_swapchain VK_KHR_swapchain>
+--
+-- [__Contact__]
+--
+--     -   Lionel Duc
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_present_mode_fifo_latest_ready] @nvlduc%0A*Here describe the issue or question you have about the VK_KHR_present_mode_fifo_latest_ready extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_KHR_present_mode_fifo_latest_ready.adoc VK_KHR_present_mode_fifo_latest_ready>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2025-03-18
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Contributors__]
+--
+--     -   James Jones, NVIDIA
+--
+--     -   Lionel Duc, NVIDIA
+--
+--     -   Lina Versace, Google
+--
+-- == Description
+--
+-- This extension is based on @VK_EXT_present_mode_fifo_latest_ready@ and
+-- provides equivalent functionality.
+--
+-- This extension adds a new present mode,
+-- 'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_FIFO_LATEST_READY_KHR'.
+--
+-- This tear-free present mode behaves much like
+-- 'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_FIFO_KHR', except that
+-- each vertical blanking period dequeues consecutive present requests
+-- until the latest ready is found to update the current image.
+--
+-- While this seems similar in concept to
+-- 'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_MAILBOX_KHR', the
+-- fundamental difference is that the processing of the present requests is
+-- done during vblank. From the application perspective, this means for
+-- example, that in a flip-based model, a single vblank /may/ cause
+-- multiple swapchain images to be released at once, while
+-- 'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_MAILBOX_KHR' /may/
+-- continuously be releasing images as new requests become ready.
+--
+-- This additional present mode is useful when using a time-based present
+-- API.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR'
+--
+-- == New Enum Constants
+--
+-- -   'KHR_PRESENT_MODE_FIFO_LATEST_READY_EXTENSION_NAME'
+--
+-- -   'KHR_PRESENT_MODE_FIFO_LATEST_READY_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Extensions.VK_KHR_surface.PresentModeKHR':
+--
+--     -   'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_FIFO_LATEST_READY_KHR'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_KHR'
+--
+-- == Version History
+--
+-- -   Revision 1, 2025-03-18 (Lina Versace)
+--
+--     -   Internal revisions
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_present_mode_fifo_latest_ready 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_present_mode_fifo_latest_ready  (PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR
+
+instance ToCStruct PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR
+instance Show PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR
+
+instance FromCStruct PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR
+
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
@@ -113,7 +113,7 @@
 -- presentation. This should be the easiest to implement as the driver need
 -- only track the largest present ID completed. This is also the
 -- \'natural\' consequence of interpreting the existing vkWaitForPresentKHR
--- specificationn.
+-- specification.
 --
 -- __OPTION C__: Finish both waits when both have completed. This will
 -- complete the earlier presentation later than the actual presentation
@@ -135,7 +135,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_present_wait Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -243,19 +243,14 @@
 --
 -- = Description
 --
--- 'waitForPresentKHR' waits for the presentId associated with @swapchain@
--- to be increased in value so that it is at least equal to @presentId@.
---
--- For 'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_MAILBOX_KHR' (or
--- other present mode where images may be replaced in the presentation
--- queue) any wait of this type associated with such an image /must/ be
--- signaled no later than a wait associated with the replacing image would
--- be signaled.
---
--- When the presentation has completed, the presentId associated with the
--- related @pSwapchains@ entry will be increased in value so that it is at
--- least equal to the value provided in the
--- 'Vulkan.Extensions.VK_KHR_present_id.PresentIdKHR' structure.
+-- The call to 'waitForPresentKHR' will block until either the presentId
+-- associated with @swapchain@ is greater than or equal to @presentId@, or
+-- @timeout@ nanoseconds passes. When the swapchain becomes OUT_OF_DATE,
+-- the call will either return 'Vulkan.Core10.Enums.Result.SUCCESS' (if the
+-- image was delivered to the presentation engine and may have been
+-- presented to the user) or will return early with status
+-- 'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DATE_KHR' (if the image could
+-- not be presented to the user).
 --
 -- There is no requirement for any precise timing relationship between the
 -- presentation of the image to the user and the update of the presentId
@@ -263,14 +258,11 @@
 -- the presentation of the first pixel in the next image being presented to
 -- the user.
 --
--- The call to 'waitForPresentKHR' will block until either the presentId
--- associated with @swapchain@ is greater than or equal to @presentId@, or
--- @timeout@ nanoseconds passes. When the swapchain becomes OUT_OF_DATE,
--- the call will either return 'Vulkan.Core10.Enums.Result.SUCCESS' (if the
--- image was delivered to the presentation engine and may have been
--- presented to the user) or will return early with status
--- 'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DATE_KHR' (if the image was not
--- presented to the user).
+-- For 'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_MAILBOX_KHR' (or
+-- other present mode where images may be replaced in the presentation
+-- queue) any wait of this type associated with such an image /must/ be
+-- signaled no later than a wait associated with the replacing image would
+-- be signaled.
 --
 -- As an exception to the normal rules for objects which are externally
 -- synchronized, the @swapchain@ passed to 'waitForPresentKHR' /may/ be
@@ -285,7 +277,7 @@
 --     in the retired state
 --
 -- -   #VUID-vkWaitForPresentKHR-presentWait-06234# The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-presentWait presentWait>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-presentWait presentWait>
 --     feature /must/ be enabled
 --
 -- == Valid Usage (Implicit)
@@ -307,26 +299,30 @@
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
 --
+--     -   'Vulkan.Core10.Enums.Result.SUBOPTIMAL_KHR'
+--
 --     -   'Vulkan.Core10.Enums.Result.SUCCESS'
 --
 --     -   'Vulkan.Core10.Enums.Result.TIMEOUT'
 --
---     -   'Vulkan.Core10.Enums.Result.SUBOPTIMAL_KHR'
---
 -- [<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'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DATE_KHR'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_SURFACE_LOST_KHR'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_present_wait VK_KHR_present_wait>,
@@ -382,11 +378,21 @@
 -- 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. 'PhysicalDevicePresentWaitFeaturesKHR' /can/ also be used in
--- the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDevicePresentWaitFeaturesKHR', it /must/ add an instance of the
+-- structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
 --
 -- = See Also
 --
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
@@ -113,7 +113,7 @@
 -- presentation. This should be the easiest to implement as the driver need
 -- only track the largest present ID completed. This is also the
 -- \'natural\' consequence of interpreting the existing vkWaitForPresentKHR
--- specificationn.
+-- specification.
 --
 -- __OPTION C__: Finish both waits when both have completed. This will
 -- complete the earlier presentation later than the actual presentation
@@ -135,7 +135,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_present_wait Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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_present_wait2.hs b/src/Vulkan/Extensions/VK_KHR_present_wait2.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_KHR_present_wait2.hs
@@ -0,0 +1,673 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_KHR_present_wait2 - device extension
+--
+-- = VK_KHR_present_wait2
+--
+-- [__Name String__]
+--     @VK_KHR_present_wait2@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     481
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_surface_capabilities2 VK_KHR_get_surface_capabilities2>
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_surface VK_KHR_surface>
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_swapchain VK_KHR_swapchain>
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_present_id2 VK_KHR_present_id2>
+--
+-- [__Contact__]
+--
+--     -   Daniel Stone
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_KHR_present_wait2.adoc VK_KHR_present_wait2>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2025-05-30
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Contributors__]
+--
+--     -   Hans-Kristian Arntzen, Valve
+--
+--     -   James Jones, NVIDIA
+--
+--     -   Daniel Stone, Collabora
+--
+--     -   Derek Foreman, Collabora
+--
+--     -   /contributors to
+--         \`<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_present_wait VK_KHR_present_wait>\`/
+--
+-- == Description
+--
+-- This device extension allows an application that uses the
+-- @VK_KHR_swapchain@ extension to wait for present operations to complete.
+-- An application can use this to monitor and control the pacing of the
+-- application by managing the number of outstanding images yet to be
+-- presented.
+--
+-- == New Commands
+--
+-- -   'waitForPresent2KHR'
+--
+-- == New Structures
+--
+-- -   'PresentWait2InfoKHR'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDevicePresentWait2FeaturesKHR'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.SurfaceCapabilities2KHR':
+--
+--     -   'SurfaceCapabilitiesPresentWait2KHR'
+--
+-- == New Enum Constants
+--
+-- -   'KHR_PRESENT_WAIT_2_EXTENSION_NAME'
+--
+-- -   'KHR_PRESENT_WAIT_2_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_2_FEATURES_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PRESENT_WAIT_2_INFO_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_WAIT_2_KHR'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateFlagBitsKHR':
+--
+--     -   'Vulkan.Extensions.VK_KHR_swapchain.SWAPCHAIN_CREATE_PRESENT_WAIT_2_BIT_KHR'
+--
+-- == Issues
+--
+-- 1) When does the wait finish?
+--
+-- __RESOLVED__. The wait request will complete when the timeout expires,
+-- or after the corresponding presentation request has either taken effect
+-- within the presentation engine or has been replaced without
+-- presentation. Additionally, a wait may complete immediately if the
+-- swapchain becomes out of date.
+--
+-- In circumstances outside the application’s control, this wait may be
+-- particularly long. For example, a user session may have the display
+-- locked and switched off for multiple days. During this time, the latest
+-- image presented through the WSI will never be presented to the user
+-- (because nothing is being presented), or replaced (because nothing newer
+-- has been queued by the application). Each operating system may have a
+-- separate mechanism to inform the application of states such as these,
+-- however it is out of scope of the Vulkan WSI.
+--
+-- There is no requirement for any precise timing relationship between the
+-- presentation of the image to the user and the end of the wait.
+--
+-- This extension is not intended for time-to-light estimation, which is
+-- better solved by a separate extension dedicated to present-timing
+-- feedback for audio\/visual\/input synchronization.
+--
+-- 2) Should this use fences or other existing synchronization mechanism?
+--
+-- __RESOLVED__. VkFence is a legacy primitive. Building a new API around a
+-- legacy primitive is undesirable.
+--
+-- Other existing synchronization mechanisms may lack a platform-provided
+-- framework for sharing synchronization objects between display and render
+-- drivers.
+--
+-- For these reasons, this extension will provide a separate
+-- synchronization API.
+--
+-- 3) Should this extension share present identification with other
+-- extensions?
+--
+-- __RESOLVED__. Yes. A new extension, @VK_KHR_present_id2@, should be
+-- created to provide a shared structure for presentation identifiers.
+--
+-- 4) What happens when presentations complete out of order with respect to
+-- calls to vkQueuePresent? This could happen if the semaphores for the
+-- presentations were ready out of order.
+--
+-- __OPTION A__: Require that when a PresentId is set that the driver
+-- ensure that images are always presented in the order of calls to
+-- vkQueuePresent.
+--
+-- __OPTION B__: Finish both waits when the earliest present completes.
+-- This will complete the later present wait earlier than the actual
+-- presentation. This should be the easiest to implement as the driver need
+-- only track the largest present ID completed. This is also the
+-- \'natural\' consequence of interpreting the existing vkWaitForPresentKHR
+-- specification.
+--
+-- __OPTION C__: Finish both waits when both have completed. This will
+-- complete the earlier presentation later than the actual presentation
+-- time. This is allowed by the current specification as there is no
+-- precise timing requirement for when the presentId value is updated. This
+-- requires slightly more complexity in the driver as it will need to track
+-- all outstanding presentId values.
+--
+-- __OPTION D__: The order of completion between outstanding
+-- 'waitForPresent2KHR' calls is always undefined. However, a
+-- 'Vulkan.Core10.Enums.Result.SUCCESS' return value in
+-- 'PresentWait2InfoKHR'::@presentId@ implies that future calls to
+-- 'waitForPresent2KHR' where 'PresentWait2InfoKHR'::@presentId@ is less
+-- than or equal to N will complete immediately.
+--
+-- __RESOLVED__. __OPTION D__: This option ensures implementations do not
+-- need to create complex internal queues to generate signals in the right
+-- order.
+--
+-- 5) Should this extension deviate from @VK_KHR_present_wait@ and require
+-- the presentation engine to provide the presentId values?
+--
+-- __RESOLVED__. No. This extension is intended to be a bugfix of
+-- @VK_KHR_present_wait@, and existing low-latency apis require an
+-- application provided id. At least on some platforms, a mapping mechanism
+-- would be required to translate between presentation engine and
+-- application ids. This exceeds the intended scope of this extension.
+--
+-- When needed in the future, we can introduce an independent presentation
+-- engine driven id and a mechanism for mapping presentation engine ids to
+-- application provided ids.
+--
+-- == Version History
+--
+-- -   Revision 1, 2022-10-05 (Daniel Stone)
+--
+--     -   Repurposed from VK_KHR_present_wait to be based on surface
+--         capabilities
+--
+--     -   Reworded wait finish section to avoid time-to-light
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_present_wait2 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_present_wait2  ( waitForPresent2KHR
+                                               , waitForPresent2KHRSafe
+                                               , PresentWait2InfoKHR(..)
+                                               , PhysicalDevicePresentWait2FeaturesKHR(..)
+                                               , SurfaceCapabilitiesPresentWait2KHR(..)
+                                               , KHR_PRESENT_WAIT_2_SPEC_VERSION
+                                               , pattern KHR_PRESENT_WAIT_2_SPEC_VERSION
+                                               , KHR_PRESENT_WAIT_2_EXTENSION_NAME
+                                               , pattern KHR_PRESENT_WAIT_2_EXTENSION_NAME
+                                               , SwapchainKHR(..)
+                                               , SwapchainCreateFlagBitsKHR(..)
+                                               , SwapchainCreateFlagsKHR
+                                               ) where
+
+import Vulkan.Internal.Utils (traceAroundEvent)
+import Control.Monad (unless)
+import Control.Monad.IO.Class (liftIO)
+import Foreign.Marshal.Alloc (allocaBytes)
+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.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 (Word64)
+import Data.Kind (Type)
+import Control.Monad.Trans.Cont (ContT(..))
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.Core10.Handles (Device)
+import Vulkan.Core10.Handles (Device(..))
+import Vulkan.Core10.Handles (Device(Device))
+import Vulkan.Dynamic (DeviceCmds(pVkWaitForPresent2KHR))
+import Vulkan.Core10.Handles (Device_T)
+import Vulkan.Core10.Enums.Result (Result)
+import Vulkan.Core10.Enums.Result (Result(..))
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Extensions.Handles (SwapchainKHR)
+import Vulkan.Extensions.Handles (SwapchainKHR(..))
+import Vulkan.Exception (VulkanException(..))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_2_FEATURES_KHR))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PRESENT_WAIT_2_INFO_KHR))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_WAIT_2_KHR))
+import Vulkan.Core10.Enums.Result (Result(SUCCESS))
+import Vulkan.Extensions.VK_KHR_swapchain (SwapchainCreateFlagBitsKHR(..))
+import Vulkan.Extensions.VK_KHR_swapchain (SwapchainCreateFlagsKHR)
+import Vulkan.Extensions.Handles (SwapchainKHR(..))
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkWaitForPresent2KHRUnsafe
+  :: FunPtr (Ptr Device_T -> SwapchainKHR -> Ptr PresentWait2InfoKHR -> IO Result) -> Ptr Device_T -> SwapchainKHR -> Ptr PresentWait2InfoKHR -> IO Result
+
+foreign import ccall
+  "dynamic" mkVkWaitForPresent2KHRSafe
+  :: FunPtr (Ptr Device_T -> SwapchainKHR -> Ptr PresentWait2InfoKHR -> IO Result) -> Ptr Device_T -> SwapchainKHR -> Ptr PresentWait2InfoKHR -> IO Result
+
+-- | waitForPresent2KHR with selectable safeness
+waitForPresent2KHRSafeOrUnsafe :: forall io
+                                . (MonadIO io)
+                               => (FunPtr (Ptr Device_T -> SwapchainKHR -> Ptr PresentWait2InfoKHR -> IO Result) -> Ptr Device_T -> SwapchainKHR -> Ptr PresentWait2InfoKHR -> IO Result)
+                               -> -- | @device@ is the device associated with @swapchain@.
+                                  Device
+                               -> -- | @swapchain@ is the non-retired swapchain on which an image was queued
+                                  -- for presentation.
+                                  SwapchainKHR
+                               -> -- | @pPresentWait2Info@ is a pointer to a 'PresentWait2InfoKHR' structure
+                                  -- specifying the parameters of the wait.
+                                  PresentWait2InfoKHR
+                               -> io (Result)
+waitForPresent2KHRSafeOrUnsafe mkVkWaitForPresent2KHR device
+                                                        swapchain
+                                                        presentWait2Info = liftIO . evalContT $ do
+  let vkWaitForPresent2KHRPtr = pVkWaitForPresent2KHR (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkWaitForPresent2KHRPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkWaitForPresent2KHR is null" Nothing Nothing
+  let vkWaitForPresent2KHR' = mkVkWaitForPresent2KHR vkWaitForPresent2KHRPtr
+  pPresentWait2Info <- ContT $ withCStruct (presentWait2Info)
+  r <- lift $ traceAroundEvent "vkWaitForPresent2KHR" (vkWaitForPresent2KHR'
+                                                         (deviceHandle (device))
+                                                         (swapchain)
+                                                         pPresentWait2Info)
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+  pure $ (r)
+
+-- | vkWaitForPresent2KHR - Wait for presentation
+--
+-- = Description
+--
+-- 'waitForPresent2KHR' waits for the presentation engine to have begun
+-- presentation of the presentation request associated with the
+-- 'PresentWait2InfoKHR'::@presentId@ on @swapchain@, or for
+-- 'PresentWait2InfoKHR'::@timeout@ to have expired.
+--
+-- The wait request will complete when the timeout expires, or after the
+-- corresponding presentation request has either taken effect within the
+-- presentation engine or has been replaced without presentation.
+--
+-- The timing relationship between the presentation of the image to the
+-- user and the wait request completing is implementation-dependent due to
+-- variations in window system implementations.
+--
+-- If the @swapchain@ becomes
+-- 'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DATE_KHR' either before or
+-- during this call, the call /may/ either return
+-- 'Vulkan.Core10.Enums.Result.SUCCESS' (if the image was delivered to the
+-- presentation engine and /may/ have been presented to the user) or return
+-- early with status 'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DATE_KHR' (if
+-- the image could not be presented to the user).
+--
+-- As an exception to the normal rules for objects which are externally
+-- synchronized, the @swapchain@ passed to 'waitForPresent2KHR' /may/ be
+-- simultaneously used by other threads in calls to functions other than
+-- 'Vulkan.Extensions.VK_KHR_swapchain.destroySwapchainKHR'. Access to the
+-- swapchain data associated with this extension /must/ be atomic within
+-- the implementation.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkWaitForPresent2KHR-presentWait2-10814# The
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-presentWait2 presentWait2>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkWaitForPresent2KHR-None-10815# The
+--     'SurfaceCapabilitiesPresentWait2KHR' surface capability /must/ be
+--     present for the underlying surface
+--
+-- -   #VUID-vkWaitForPresent2KHR-None-10816# The swapchain must have been
+--     created with
+--     'Vulkan.Extensions.VK_KHR_swapchain.SWAPCHAIN_CREATE_PRESENT_WAIT_2_BIT_KHR'
+--     bit set in the
+--     'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateFlagBitsKHR'
+--     field
+--
+-- -   #VUID-vkWaitForPresent2KHR-presentId-10817# The @presentId@ value
+--     /must/ have been associated with a
+--     'Vulkan.Extensions.VK_KHR_swapchain.queuePresentKHR' request on the
+--     @swapchain@ which returned a non-error value
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkWaitForPresent2KHR-device-parameter# @device@ /must/ be a
+--     valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkWaitForPresent2KHR-swapchain-parameter# @swapchain@ /must/
+--     be a valid 'Vulkan.Extensions.Handles.SwapchainKHR' handle
+--
+-- -   #VUID-vkWaitForPresent2KHR-pPresentWait2Info-parameter#
+--     @pPresentWait2Info@ /must/ be a valid pointer to a valid
+--     'PresentWait2InfoKHR' structure
+--
+-- -   #VUID-vkWaitForPresent2KHR-swapchain-parent# @swapchain@ /must/ have
+--     been created, allocated, or retrieved from @device@
+--
+-- == Host Synchronization
+--
+-- -   Host access to @swapchain@ /must/ be externally synchronized
+--
+-- == Return Codes
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
+--
+--     -   'Vulkan.Core10.Enums.Result.SUBOPTIMAL_KHR'
+--
+--     -   'Vulkan.Core10.Enums.Result.SUCCESS'
+--
+--     -   'Vulkan.Core10.Enums.Result.TIMEOUT'
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DATE_KHR'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_SURFACE_LOST_KHR'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_present_wait2 VK_KHR_present_wait2>,
+-- 'Vulkan.Core10.Handles.Device', 'PresentWait2InfoKHR',
+-- 'Vulkan.Extensions.Handles.SwapchainKHR'
+waitForPresent2KHR :: forall io
+                    . (MonadIO io)
+                   => -- | @device@ is the device associated with @swapchain@.
+                      Device
+                   -> -- | @swapchain@ is the non-retired swapchain on which an image was queued
+                      -- for presentation.
+                      SwapchainKHR
+                   -> -- | @pPresentWait2Info@ is a pointer to a 'PresentWait2InfoKHR' structure
+                      -- specifying the parameters of the wait.
+                      PresentWait2InfoKHR
+                   -> io (Result)
+waitForPresent2KHR = waitForPresent2KHRSafeOrUnsafe mkVkWaitForPresent2KHRUnsafe
+
+-- | A variant of 'waitForPresent2KHR' which makes a *safe* FFI call
+waitForPresent2KHRSafe :: forall io
+                        . (MonadIO io)
+                       => -- | @device@ is the device associated with @swapchain@.
+                          Device
+                       -> -- | @swapchain@ is the non-retired swapchain on which an image was queued
+                          -- for presentation.
+                          SwapchainKHR
+                       -> -- | @pPresentWait2Info@ is a pointer to a 'PresentWait2InfoKHR' structure
+                          -- specifying the parameters of the wait.
+                          PresentWait2InfoKHR
+                       -> io (Result)
+waitForPresent2KHRSafe = waitForPresent2KHRSafeOrUnsafe mkVkWaitForPresent2KHRSafe
+
+
+-- | VkPresentWait2InfoKHR - Structure describing parameters of a
+-- presentation wait
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_present_wait2 VK_KHR_present_wait2>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType', 'waitForPresent2KHR'
+data PresentWait2InfoKHR = PresentWait2InfoKHR
+  { -- | @presentId@ is the presentation presentId to wait for.
+    presentId :: Word64
+  , -- | @timeout@ is the timeout period in units of nanoseconds. @timeout@ is
+    -- adjusted to the closest value allowed by the implementation-dependent
+    -- timeout accuracy, which /may/ be substantially longer than one
+    -- nanosecond, and /may/ be longer than the requested period.
+    timeout :: Word64
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PresentWait2InfoKHR)
+#endif
+deriving instance Show PresentWait2InfoKHR
+
+instance ToCStruct PresentWait2InfoKHR where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PresentWait2InfoKHR{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PRESENT_WAIT_2_INFO_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word64)) (presentId)
+    poke ((p `plusPtr` 24 :: Ptr Word64)) (timeout)
+    f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PRESENT_WAIT_2_INFO_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word64)) (zero)
+    poke ((p `plusPtr` 24 :: Ptr Word64)) (zero)
+    f
+
+instance FromCStruct PresentWait2InfoKHR where
+  peekCStruct p = do
+    presentId <- peek @Word64 ((p `plusPtr` 16 :: Ptr Word64))
+    timeout <- peek @Word64 ((p `plusPtr` 24 :: Ptr Word64))
+    pure $ PresentWait2InfoKHR
+             presentId timeout
+
+instance Storable PresentWait2InfoKHR where
+  sizeOf ~_ = 32
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PresentWait2InfoKHR where
+  zero = PresentWait2InfoKHR
+           zero
+           zero
+
+
+-- | VkPhysicalDevicePresentWait2FeaturesKHR - Structure indicating support
+-- for present wait 2
+--
+-- = Members
+--
+-- This structure describes the following feature:
+--
+-- = Description
+--
+-- If the 'PhysicalDevicePresentWait2FeaturesKHR' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDevicePresentWait2FeaturesKHR', it /must/ add an instance of
+-- the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_present_wait2 VK_KHR_present_wait2>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDevicePresentWait2FeaturesKHR = PhysicalDevicePresentWait2FeaturesKHR
+  { -- | #features-presentWait2# @presentWait2@ indicates that the implementation
+    -- supports 'waitForPresent2KHR'.
+    presentWait2 :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDevicePresentWait2FeaturesKHR)
+#endif
+deriving instance Show PhysicalDevicePresentWait2FeaturesKHR
+
+instance ToCStruct PhysicalDevicePresentWait2FeaturesKHR where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDevicePresentWait2FeaturesKHR{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_2_FEATURES_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (presentWait2))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_2_FEATURES_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDevicePresentWait2FeaturesKHR where
+  peekCStruct p = do
+    presentWait2 <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDevicePresentWait2FeaturesKHR
+             (bool32ToBool presentWait2)
+
+instance Storable PhysicalDevicePresentWait2FeaturesKHR where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDevicePresentWait2FeaturesKHR where
+  zero = PhysicalDevicePresentWait2FeaturesKHR
+           zero
+
+
+-- | VkSurfaceCapabilitiesPresentWait2KHR - Structure describing
+-- presentation-wait capabilities of a surface
+--
+-- = Description
+--
+-- This structure /can/ be included in the @pNext@ chain of
+-- 'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.SurfaceCapabilities2KHR'
+-- to determine support for present-wait. If @presentWait2Supported@ is
+-- 'Vulkan.Core10.FundamentalTypes.FALSE', it indicates that waiting for
+-- presentation is not possible for this surface.
+--
+-- Applications /must/ not attempt to call 'waitForPresent2KHR' on a
+-- swapchain if @presentWait2Supported@ is
+-- 'Vulkan.Core10.FundamentalTypes.FALSE'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.SurfaceCapabilities2KHR'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_present_wait2 VK_KHR_present_wait2>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data SurfaceCapabilitiesPresentWait2KHR = SurfaceCapabilitiesPresentWait2KHR
+  { -- | @presentWait2Supported@ is a boolean describing whether the surface is
+    -- able to support the present-wait extension
+    presentWait2Supported :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (SurfaceCapabilitiesPresentWait2KHR)
+#endif
+deriving instance Show SurfaceCapabilitiesPresentWait2KHR
+
+instance ToCStruct SurfaceCapabilitiesPresentWait2KHR where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p SurfaceCapabilitiesPresentWait2KHR{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_WAIT_2_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (presentWait2Supported))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_WAIT_2_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct SurfaceCapabilitiesPresentWait2KHR where
+  peekCStruct p = do
+    presentWait2Supported <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ SurfaceCapabilitiesPresentWait2KHR
+             (bool32ToBool presentWait2Supported)
+
+instance Storable SurfaceCapabilitiesPresentWait2KHR where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero SurfaceCapabilitiesPresentWait2KHR where
+  zero = SurfaceCapabilitiesPresentWait2KHR
+           zero
+
+
+type KHR_PRESENT_WAIT_2_SPEC_VERSION = 1
+
+-- No documentation found for TopLevel "VK_KHR_PRESENT_WAIT_2_SPEC_VERSION"
+pattern KHR_PRESENT_WAIT_2_SPEC_VERSION :: forall a . Integral a => a
+pattern KHR_PRESENT_WAIT_2_SPEC_VERSION = 1
+
+
+type KHR_PRESENT_WAIT_2_EXTENSION_NAME = "VK_KHR_present_wait2"
+
+-- No documentation found for TopLevel "VK_KHR_PRESENT_WAIT_2_EXTENSION_NAME"
+pattern KHR_PRESENT_WAIT_2_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern KHR_PRESENT_WAIT_2_EXTENSION_NAME = "VK_KHR_present_wait2"
+
diff --git a/src/Vulkan/Extensions/VK_KHR_present_wait2.hs-boot b/src/Vulkan/Extensions/VK_KHR_present_wait2.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_KHR_present_wait2.hs-boot
@@ -0,0 +1,247 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_KHR_present_wait2 - device extension
+--
+-- = VK_KHR_present_wait2
+--
+-- [__Name String__]
+--     @VK_KHR_present_wait2@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     481
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_surface_capabilities2 VK_KHR_get_surface_capabilities2>
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_surface VK_KHR_surface>
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_swapchain VK_KHR_swapchain>
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_present_id2 VK_KHR_present_id2>
+--
+-- [__Contact__]
+--
+--     -   Daniel Stone
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_KHR_present_wait2.adoc VK_KHR_present_wait2>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2025-05-30
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Contributors__]
+--
+--     -   Hans-Kristian Arntzen, Valve
+--
+--     -   James Jones, NVIDIA
+--
+--     -   Daniel Stone, Collabora
+--
+--     -   Derek Foreman, Collabora
+--
+--     -   /contributors to
+--         \`<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_present_wait VK_KHR_present_wait>\`/
+--
+-- == Description
+--
+-- This device extension allows an application that uses the
+-- @VK_KHR_swapchain@ extension to wait for present operations to complete.
+-- An application can use this to monitor and control the pacing of the
+-- application by managing the number of outstanding images yet to be
+-- presented.
+--
+-- == New Commands
+--
+-- -   'waitForPresent2KHR'
+--
+-- == New Structures
+--
+-- -   'PresentWait2InfoKHR'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDevicePresentWait2FeaturesKHR'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.SurfaceCapabilities2KHR':
+--
+--     -   'SurfaceCapabilitiesPresentWait2KHR'
+--
+-- == New Enum Constants
+--
+-- -   'KHR_PRESENT_WAIT_2_EXTENSION_NAME'
+--
+-- -   'KHR_PRESENT_WAIT_2_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_2_FEATURES_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PRESENT_WAIT_2_INFO_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_WAIT_2_KHR'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateFlagBitsKHR':
+--
+--     -   'Vulkan.Extensions.VK_KHR_swapchain.SWAPCHAIN_CREATE_PRESENT_WAIT_2_BIT_KHR'
+--
+-- == Issues
+--
+-- 1) When does the wait finish?
+--
+-- __RESOLVED__. The wait request will complete when the timeout expires,
+-- or after the corresponding presentation request has either taken effect
+-- within the presentation engine or has been replaced without
+-- presentation. Additionally, a wait may complete immediately if the
+-- swapchain becomes out of date.
+--
+-- In circumstances outside the application’s control, this wait may be
+-- particularly long. For example, a user session may have the display
+-- locked and switched off for multiple days. During this time, the latest
+-- image presented through the WSI will never be presented to the user
+-- (because nothing is being presented), or replaced (because nothing newer
+-- has been queued by the application). Each operating system may have a
+-- separate mechanism to inform the application of states such as these,
+-- however it is out of scope of the Vulkan WSI.
+--
+-- There is no requirement for any precise timing relationship between the
+-- presentation of the image to the user and the end of the wait.
+--
+-- This extension is not intended for time-to-light estimation, which is
+-- better solved by a separate extension dedicated to present-timing
+-- feedback for audio\/visual\/input synchronization.
+--
+-- 2) Should this use fences or other existing synchronization mechanism?
+--
+-- __RESOLVED__. VkFence is a legacy primitive. Building a new API around a
+-- legacy primitive is undesirable.
+--
+-- Other existing synchronization mechanisms may lack a platform-provided
+-- framework for sharing synchronization objects between display and render
+-- drivers.
+--
+-- For these reasons, this extension will provide a separate
+-- synchronization API.
+--
+-- 3) Should this extension share present identification with other
+-- extensions?
+--
+-- __RESOLVED__. Yes. A new extension, @VK_KHR_present_id2@, should be
+-- created to provide a shared structure for presentation identifiers.
+--
+-- 4) What happens when presentations complete out of order with respect to
+-- calls to vkQueuePresent? This could happen if the semaphores for the
+-- presentations were ready out of order.
+--
+-- __OPTION A__: Require that when a PresentId is set that the driver
+-- ensure that images are always presented in the order of calls to
+-- vkQueuePresent.
+--
+-- __OPTION B__: Finish both waits when the earliest present completes.
+-- This will complete the later present wait earlier than the actual
+-- presentation. This should be the easiest to implement as the driver need
+-- only track the largest present ID completed. This is also the
+-- \'natural\' consequence of interpreting the existing vkWaitForPresentKHR
+-- specification.
+--
+-- __OPTION C__: Finish both waits when both have completed. This will
+-- complete the earlier presentation later than the actual presentation
+-- time. This is allowed by the current specification as there is no
+-- precise timing requirement for when the presentId value is updated. This
+-- requires slightly more complexity in the driver as it will need to track
+-- all outstanding presentId values.
+--
+-- __OPTION D__: The order of completion between outstanding
+-- 'waitForPresent2KHR' calls is always undefined. However, a
+-- 'Vulkan.Core10.Enums.Result.SUCCESS' return value in
+-- 'PresentWait2InfoKHR'::@presentId@ implies that future calls to
+-- 'waitForPresent2KHR' where 'PresentWait2InfoKHR'::@presentId@ is less
+-- than or equal to N will complete immediately.
+--
+-- __RESOLVED__. __OPTION D__: This option ensures implementations do not
+-- need to create complex internal queues to generate signals in the right
+-- order.
+--
+-- 5) Should this extension deviate from @VK_KHR_present_wait@ and require
+-- the presentation engine to provide the presentId values?
+--
+-- __RESOLVED__. No. This extension is intended to be a bugfix of
+-- @VK_KHR_present_wait@, and existing low-latency apis require an
+-- application provided id. At least on some platforms, a mapping mechanism
+-- would be required to translate between presentation engine and
+-- application ids. This exceeds the intended scope of this extension.
+--
+-- When needed in the future, we can introduce an independent presentation
+-- engine driven id and a mechanism for mapping presentation engine ids to
+-- application provided ids.
+--
+-- == Version History
+--
+-- -   Revision 1, 2022-10-05 (Daniel Stone)
+--
+--     -   Repurposed from VK_KHR_present_wait to be based on surface
+--         capabilities
+--
+--     -   Reworded wait finish section to avoid time-to-light
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_present_wait2 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_present_wait2  ( PhysicalDevicePresentWait2FeaturesKHR
+                                               , PresentWait2InfoKHR
+                                               , SurfaceCapabilitiesPresentWait2KHR
+                                               ) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data PhysicalDevicePresentWait2FeaturesKHR
+
+instance ToCStruct PhysicalDevicePresentWait2FeaturesKHR
+instance Show PhysicalDevicePresentWait2FeaturesKHR
+
+instance FromCStruct PhysicalDevicePresentWait2FeaturesKHR
+
+
+data PresentWait2InfoKHR
+
+instance ToCStruct PresentWait2InfoKHR
+instance Show PresentWait2InfoKHR
+
+instance FromCStruct PresentWait2InfoKHR
+
+
+data SurfaceCapabilitiesPresentWait2KHR
+
+instance ToCStruct SurfaceCapabilitiesPresentWait2KHR
+instance Show SurfaceCapabilitiesPresentWait2KHR
+
+instance FromCStruct SurfaceCapabilitiesPresentWait2KHR
+
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
@@ -31,6 +31,11 @@
 --
 --     -   Interacts with VK_KHR_descriptor_update_template
 --
+-- [__Deprecation State__]
+--
+--     -   /Promoted/ to
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.4-promotions Vulkan 1.4>
+--
 -- [__Contact__]
 --
 --     -   Jeff Bolz
@@ -85,11 +90,11 @@
 -- -   Extending
 --     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DescriptorSetLayoutCreateFlagBits':
 --
---     -   'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR'
+--     -   'DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR'
 --
 -- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR'
+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR'
 --
 -- If
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
@@ -100,8 +105,14 @@
 -- -   Extending
 --     'Vulkan.Core11.Enums.DescriptorUpdateTemplateType.DescriptorUpdateTemplateType':
 --
---     -   'Vulkan.Core11.Enums.DescriptorUpdateTemplateType.DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR'
+--     -   'Vulkan.Extensions.VK_KHR_descriptor_update_template.DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR'
 --
+-- == Promotion to Vulkan 1.4
+--
+-- Functionality in this extension is included in core Vulkan 1.4 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, 2016-10-15 (Jeff Bolz)
@@ -119,321 +130,44 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_push_descriptor Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
-module Vulkan.Extensions.VK_KHR_push_descriptor  ( cmdPushDescriptorSetKHR
-                                                 , PhysicalDevicePushDescriptorPropertiesKHR(..)
+module Vulkan.Extensions.VK_KHR_push_descriptor  ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR
+                                                 , pattern DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR
+                                                 , cmdPushDescriptorSetKHR
+                                                 , PhysicalDevicePushDescriptorPropertiesKHR
                                                  , KHR_PUSH_DESCRIPTOR_SPEC_VERSION
                                                  , pattern KHR_PUSH_DESCRIPTOR_SPEC_VERSION
                                                  , KHR_PUSH_DESCRIPTOR_EXTENSION_NAME
                                                  , pattern KHR_PUSH_DESCRIPTOR_EXTENSION_NAME
+                                                 , pattern DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR
                                                  , cmdPushDescriptorSetWithTemplateKHR
                                                  ) where
 
-import Vulkan.Internal.Utils (traceAroundEvent)
-import Control.Monad (unless)
-import Control.Monad.IO.Class (liftIO)
-import Foreign.Marshal.Alloc (allocaBytes)
-import GHC.IO (throwIO)
-import GHC.Ptr (nullFunPtr)
-import Foreign.Ptr (nullPtr)
-import Foreign.Ptr (plusPtr)
-import Control.Monad.Trans.Class (lift)
-import Control.Monad.Trans.Cont (evalContT)
-import qualified Data.Vector (imapM_)
-import qualified Data.Vector (length)
-import Vulkan.CStruct (FromCStruct)
-import Vulkan.CStruct (FromCStruct(..))
-import Vulkan.CStruct (ToCStruct)
-import Vulkan.CStruct (ToCStruct(..))
-import Vulkan.Zero (Zero(..))
-import Control.Monad.IO.Class (MonadIO)
 import Data.String (IsString)
-import Data.Typeable (Typeable)
-import Foreign.Storable (Storable)
-import Foreign.Storable (Storable(peek))
-import Foreign.Storable (Storable(poke))
-import qualified Foreign.Storable (Storable(..))
-import GHC.Generics (Generic)
-import GHC.IO.Exception (IOErrorType(..))
-import GHC.IO.Exception (IOException(..))
-import Foreign.Ptr (FunPtr)
-import Foreign.Ptr (Ptr)
-import Data.Word (Word32)
-import Data.Kind (Type)
-import Control.Monad.Trans.Cont (ContT(..))
-import Data.Vector (Vector)
-import Vulkan.CStruct.Extends (forgetExtensions)
-import Vulkan.CStruct.Extends (pokeSomeCStruct)
-import Vulkan.NamedType ((:::))
-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(pVkCmdPushDescriptorSetKHR))
-import Vulkan.Core10.Enums.PipelineBindPoint (PipelineBindPoint)
-import Vulkan.Core10.Enums.PipelineBindPoint (PipelineBindPoint(..))
-import Vulkan.Core10.Handles (PipelineLayout)
-import Vulkan.Core10.Handles (PipelineLayout(..))
-import Vulkan.CStruct.Extends (SomeStruct)
-import Vulkan.Core10.Enums.StructureType (StructureType)
-import Vulkan.Core10.DescriptorSet (WriteDescriptorSet)
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR))
+import Vulkan.Core14.Promoted_From_VK_KHR_push_descriptor (cmdPushDescriptorSet)
+import Vulkan.Core14.Promoted_From_VK_KHR_push_descriptor (PhysicalDevicePushDescriptorProperties)
+import Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits (DescriptorSetLayoutCreateFlags)
+import Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits (DescriptorSetLayoutCreateFlagBits(DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES))
 import Vulkan.Extensions.VK_KHR_descriptor_update_template (cmdPushDescriptorSetWithTemplateKHR)
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdPushDescriptorSetKHR
-  :: FunPtr (Ptr CommandBuffer_T -> PipelineBindPoint -> PipelineLayout -> Word32 -> Word32 -> Ptr (SomeStruct WriteDescriptorSet) -> IO ()) -> Ptr CommandBuffer_T -> PipelineBindPoint -> PipelineLayout -> Word32 -> Word32 -> Ptr (SomeStruct WriteDescriptorSet) -> IO ()
+import Vulkan.Extensions.VK_KHR_descriptor_update_template (pattern DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR)
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES
 
--- | vkCmdPushDescriptorSetKHR - Pushes descriptor updates into a command
--- buffer
---
--- = Description
---
--- /Push descriptors/ are a small bank of descriptors whose storage is
--- internally managed by the command buffer rather than being written into
--- a descriptor set and later bound to a command buffer. Push descriptors
--- allow for incremental updates of descriptors without managing the
--- lifetime of descriptor sets.
---
--- 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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-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://registry.khronos.org/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://registry.khronos.org/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
--- they are accessed by a pipeline (the immutable samplers are pushed,
--- rather than the samplers in @pDescriptorWrites@). Push descriptors that
--- are not statically used /can/ remain undefined.
---
--- Push descriptors do not use dynamic offsets. Instead, the corresponding
--- non-dynamic descriptor types /can/ be used and the @offset@ member of
--- 'Vulkan.Core10.DescriptorSet.DescriptorBufferInfo' /can/ be changed each
--- time the descriptor is written.
---
--- Each element of @pDescriptorWrites@ is interpreted as in
--- 'Vulkan.Core10.DescriptorSet.WriteDescriptorSet', except the @dstSet@
--- member is ignored.
---
--- To push an immutable sampler, use a
--- 'Vulkan.Core10.DescriptorSet.WriteDescriptorSet' with @dstBinding@ and
--- @dstArrayElement@ selecting the immutable sampler’s binding. If the
--- descriptor type is
--- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLER', the
--- @pImageInfo@ parameter is ignored and the immutable sampler is taken
--- from the push descriptor set layout in the pipeline layout. If the
--- descriptor type is
--- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER',
--- the @sampler@ member of the @pImageInfo@ parameter is ignored and the
--- immutable sampler is taken from the push descriptor set layout in the
--- pipeline layout.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdPushDescriptorSetKHR-set-00364# @set@ /must/ be less than
---     'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo'::@setLayoutCount@
---     provided when @layout@ was created
---
--- -   #VUID-vkCmdPushDescriptorSetKHR-set-00365# @set@ /must/ be the
---     unique set number in the pipeline layout that uses a descriptor set
---     layout that was created with
---     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR'
---
--- -   #VUID-vkCmdPushDescriptorSetKHR-pDescriptorWrites-06494# For each
---     element i where @pDescriptorWrites@[i].@descriptorType@ is
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLER',
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER',
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',
---     or
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT',
---     @pDescriptorWrites@[i].@pImageInfo@ /must/ be a valid pointer to an
---     array of @pDescriptorWrites@[i].@descriptorCount@ valid
---     'Vulkan.Core10.DescriptorSet.DescriptorImageInfo' structures
---
--- -   #VUID-vkCmdPushDescriptorSetKHR-pipelineBindPoint-00363#
---     @pipelineBindPoint@ /must/ be supported by the @commandBuffer@’s
---     parent 'Vulkan.Core10.Handles.CommandPool'’s queue family
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdPushDescriptorSetKHR-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdPushDescriptorSetKHR-pipelineBindPoint-parameter#
---     @pipelineBindPoint@ /must/ be a valid
---     'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint' value
---
--- -   #VUID-vkCmdPushDescriptorSetKHR-layout-parameter# @layout@ /must/ be
---     a valid 'Vulkan.Core10.Handles.PipelineLayout' handle
---
--- -   #VUID-vkCmdPushDescriptorSetKHR-pDescriptorWrites-parameter#
---     @pDescriptorWrites@ /must/ be a valid pointer to an array of
---     @descriptorWriteCount@ valid
---     'Vulkan.Core10.DescriptorSet.WriteDescriptorSet' structures
---
--- -   #VUID-vkCmdPushDescriptorSetKHR-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-vkCmdPushDescriptorSetKHR-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics, or compute operations
---
--- -   #VUID-vkCmdPushDescriptorSetKHR-videocoding# This command /must/
---     only be called outside of a video coding scope
---
--- -   #VUID-vkCmdPushDescriptorSetKHR-descriptorWriteCount-arraylength#
---     @descriptorWriteCount@ /must/ be greater than @0@
---
--- -   #VUID-vkCmdPushDescriptorSetKHR-commonparent# Both of
---     @commandBuffer@, and @layout@ /must/ have been created, allocated,
---     or retrieved from the same 'Vulkan.Core10.Handles.Device'
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
--- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | Compute                                                                                                               |                                                                                                                                        |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_push_descriptor VK_KHR_push_descriptor>,
--- 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint',
--- 'Vulkan.Core10.Handles.PipelineLayout',
--- 'Vulkan.Core10.DescriptorSet.WriteDescriptorSet'
-cmdPushDescriptorSetKHR :: forall io
-                         . (MonadIO io)
-                        => -- | @commandBuffer@ is the command buffer that the descriptors will be
-                           -- recorded in.
-                           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 push descriptor bindings 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
-                        -> -- | @set@ is the set number of the descriptor set in the pipeline layout
-                           -- that will be updated.
-                           ("set" ::: Word32)
-                        -> -- | @pDescriptorWrites@ is a pointer to an array of
-                           -- 'Vulkan.Core10.DescriptorSet.WriteDescriptorSet' structures describing
-                           -- the descriptors to be updated.
-                           ("descriptorWrites" ::: Vector (SomeStruct WriteDescriptorSet))
-                        -> io ()
-cmdPushDescriptorSetKHR commandBuffer
-                          pipelineBindPoint
-                          layout
-                          set
-                          descriptorWrites = liftIO . evalContT $ do
-  let vkCmdPushDescriptorSetKHRPtr = pVkCmdPushDescriptorSetKHR (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCmdPushDescriptorSetKHRPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdPushDescriptorSetKHR is null" Nothing Nothing
-  let vkCmdPushDescriptorSetKHR' = mkVkCmdPushDescriptorSetKHR vkCmdPushDescriptorSetKHRPtr
-  pPDescriptorWrites <- ContT $ allocaBytes @(WriteDescriptorSet _) ((Data.Vector.length (descriptorWrites)) * 64)
-  Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPDescriptorWrites `plusPtr` (64 * (i)) :: Ptr (WriteDescriptorSet _))) (e) . ($ ())) (descriptorWrites)
-  lift $ traceAroundEvent "vkCmdPushDescriptorSetKHR" (vkCmdPushDescriptorSetKHR'
-                                                         (commandBufferHandle (commandBuffer))
-                                                         (pipelineBindPoint)
-                                                         (layout)
-                                                         (set)
-                                                         ((fromIntegral (Data.Vector.length $ (descriptorWrites)) :: Word32))
-                                                         (forgetExtensions (pPDescriptorWrites)))
-  pure $ ()
 
+-- No documentation found for TopLevel "VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR"
+pattern DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR = DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT
 
--- | VkPhysicalDevicePushDescriptorPropertiesKHR - Structure describing push
--- descriptor limits that can be supported by an implementation
---
--- = Description
---
--- If the 'PhysicalDevicePushDescriptorPropertiesKHR' 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_push_descriptor VK_KHR_push_descriptor>,
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PhysicalDevicePushDescriptorPropertiesKHR = PhysicalDevicePushDescriptorPropertiesKHR
-  { -- | #limits-maxPushDescriptors# @maxPushDescriptors@ is the maximum number
-    -- of descriptors that /can/ be used in a descriptor set layout created
-    -- with
-    -- 'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR'
-    -- set.
-    maxPushDescriptors :: Word32 }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PhysicalDevicePushDescriptorPropertiesKHR)
-#endif
-deriving instance Show PhysicalDevicePushDescriptorPropertiesKHR
 
-instance ToCStruct PhysicalDevicePushDescriptorPropertiesKHR where
-  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PhysicalDevicePushDescriptorPropertiesKHR{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Word32)) (maxPushDescriptors)
-    f
-  cStructSize = 24
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
-    f
+-- No documentation found for TopLevel "vkCmdPushDescriptorSetKHR"
+cmdPushDescriptorSetKHR = cmdPushDescriptorSet
 
-instance FromCStruct PhysicalDevicePushDescriptorPropertiesKHR where
-  peekCStruct p = do
-    maxPushDescriptors <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
-    pure $ PhysicalDevicePushDescriptorPropertiesKHR
-             maxPushDescriptors
 
-instance Storable PhysicalDevicePushDescriptorPropertiesKHR where
-  sizeOf ~_ = 24
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero PhysicalDevicePushDescriptorPropertiesKHR where
-  zero = PhysicalDevicePushDescriptorPropertiesKHR
-           zero
+-- No documentation found for TopLevel "VkPhysicalDevicePushDescriptorPropertiesKHR"
+type PhysicalDevicePushDescriptorPropertiesKHR = PhysicalDevicePushDescriptorProperties
 
 
 type KHR_PUSH_DESCRIPTOR_SPEC_VERSION = 2
diff --git a/src/Vulkan/Extensions/VK_KHR_push_descriptor.hs-boot b/src/Vulkan/Extensions/VK_KHR_push_descriptor.hs-boot
deleted file mode 100644
--- a/src/Vulkan/Extensions/VK_KHR_push_descriptor.hs-boot
+++ /dev/null
@@ -1,138 +0,0 @@
-{-# language CPP #-}
--- | = Name
---
--- VK_KHR_push_descriptor - device extension
---
--- = VK_KHR_push_descriptor
---
--- [__Name String__]
---     @VK_KHR_push_descriptor@
---
--- [__Extension Type__]
---     Device extension
---
--- [__Registered Extension Number__]
---     81
---
--- [__Revision__]
---     2
---
--- [__Ratification Status__]
---     Ratified
---
--- [__Extension and Version Dependencies__]
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
---
--- [__API Interactions__]
---
---     -   Interacts with VK_VERSION_1_1
---
---     -   Interacts with VK_KHR_descriptor_update_template
---
--- [__Contact__]
---
---     -   Jeff Bolz
---         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_push_descriptor] @jeffbolznv%0A*Here describe the issue or question you have about the VK_KHR_push_descriptor extension* >
---
--- == Other Extension Metadata
---
--- [__Last Modified Date__]
---     2017-09-12
---
--- [__IP Status__]
---     No known IP claims.
---
--- [__Contributors__]
---
---     -   Jeff Bolz, NVIDIA
---
---     -   Michael Worcester, Imagination Technologies
---
--- == Description
---
--- This extension allows descriptors to be written into the command buffer,
--- while the implementation is responsible for managing their memory. Push
--- descriptors may enable easier porting from older APIs and in some cases
--- can be more efficient than writing descriptors into descriptor sets.
---
--- == New Commands
---
--- -   'cmdPushDescriptorSetKHR'
---
--- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
--- or
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_descriptor_update_template VK_KHR_descriptor_update_template>
--- is supported:
---
--- -   'Vulkan.Extensions.VK_KHR_descriptor_update_template.cmdPushDescriptorSetWithTemplateKHR'
---
--- == New Structures
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
---
---     -   'PhysicalDevicePushDescriptorPropertiesKHR'
---
--- == New Enum Constants
---
--- -   'KHR_PUSH_DESCRIPTOR_EXTENSION_NAME'
---
--- -   'KHR_PUSH_DESCRIPTOR_SPEC_VERSION'
---
--- -   Extending
---     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DescriptorSetLayoutCreateFlagBits':
---
---     -   'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR'
---
--- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR'
---
--- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
--- or
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_descriptor_update_template VK_KHR_descriptor_update_template>
--- is supported:
---
--- -   Extending
---     'Vulkan.Core11.Enums.DescriptorUpdateTemplateType.DescriptorUpdateTemplateType':
---
---     -   'Vulkan.Core11.Enums.DescriptorUpdateTemplateType.DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR'
---
--- == Version History
---
--- -   Revision 1, 2016-10-15 (Jeff Bolz)
---
---     -   Internal revisions
---
--- -   Revision 2, 2017-09-12 (Tobias Hector)
---
---     -   Added interactions with Vulkan 1.1
---
--- == See Also
---
--- No cross-references are available
---
--- == Document Notes
---
--- For more information, see the
--- <https://registry.khronos.org/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.
-module Vulkan.Extensions.VK_KHR_push_descriptor  (PhysicalDevicePushDescriptorPropertiesKHR) where
-
-import Vulkan.CStruct (FromCStruct)
-import Vulkan.CStruct (ToCStruct)
-import Data.Kind (Type)
-
-data PhysicalDevicePushDescriptorPropertiesKHR
-
-instance ToCStruct PhysicalDevicePushDescriptorPropertiesKHR
-instance Show PhysicalDevicePushDescriptorPropertiesKHR
-
-instance FromCStruct PhysicalDevicePushDescriptorPropertiesKHR
-
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
@@ -21,7 +21,11 @@
 --     Ratified
 --
 -- [__Extension and Version Dependencies__]
+--         
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_spirv_1_4 VK_KHR_spirv_1_4>
+--          or
+--         
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.2 Vulkan Version 1.2>
 --     and
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>
 --
@@ -139,7 +143,7 @@
 -- visibility and ray tracing for secondary queries.
 --
 -- Ray queries are available to all shader types, including graphics,
--- compute and ray tracing pipelines. Ray queries are not able to launch
+-- compute, and ray tracing pipelines. Ray queries are not able to launch
 -- additional shaders, instead returning traversal results to the calling
 -- shader.
 --
@@ -168,9 +172,9 @@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-RayQueryKHR RayQueryKHR>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-RayQueryKHR RayQueryKHR>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-RayTraversalPrimitiveCullingKHR RayTraversalPrimitiveCullingKHR>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-RayTraversalPrimitiveCullingKHR RayTraversalPrimitiveCullingKHR>
 --
 -- == Sample Code
 --
@@ -240,7 +244,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_ray_query Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -288,11 +292,21 @@
 -- structure passed to
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
 -- it is filled in to indicate whether each corresponding feature is
--- supported. 'PhysicalDeviceRayQueryFeaturesKHR' /can/ also be used in the
--- @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to selectively
--- enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceRayQueryFeaturesKHR', it /must/ add an instance of the
+-- structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
 --
 -- = See Also
 --
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
@@ -21,7 +21,11 @@
 --     Ratified
 --
 -- [__Extension and Version Dependencies__]
+--         
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_spirv_1_4 VK_KHR_spirv_1_4>
+--          or
+--         
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.2 Vulkan Version 1.2>
 --     and
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>
 --
@@ -139,7 +143,7 @@
 -- visibility and ray tracing for secondary queries.
 --
 -- Ray queries are available to all shader types, including graphics,
--- compute and ray tracing pipelines. Ray queries are not able to launch
+-- compute, and ray tracing pipelines. Ray queries are not able to launch
 -- additional shaders, instead returning traversal results to the calling
 -- shader.
 --
@@ -168,9 +172,9 @@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-RayQueryKHR RayQueryKHR>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-RayQueryKHR RayQueryKHR>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-RayTraversalPrimitiveCullingKHR RayTraversalPrimitiveCullingKHR>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-RayTraversalPrimitiveCullingKHR RayTraversalPrimitiveCullingKHR>
 --
 -- == Sample Code
 --
@@ -240,7 +244,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_ray_query Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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_maintenance1.hs b/src/Vulkan/Extensions/VK_KHR_ray_tracing_maintenance1.hs
--- a/src/Vulkan/Extensions/VK_KHR_ray_tracing_maintenance1.hs
+++ b/src/Vulkan/Extensions/VK_KHR_ray_tracing_maintenance1.hs
@@ -102,11 +102,11 @@
 --
 --     -   'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR'
 --         to specify execution of
---         <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#acceleration-structure-copying acceleration structure copy commands>
+--         <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#acceleration-structure-copying acceleration structure copy commands>
 --
 --     -   'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHR'
 --         to specify read access to a
---         <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shader-binding-table shader binding table>
+--         <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shader-binding-table shader binding table>
 --         in any shader pipeline stage
 --
 -- -   Adds two new acceleration structure query parameters:
@@ -121,7 +121,7 @@
 -- -   Adds an optional new indirect ray tracing dispatch command,
 --     'cmdTraceRaysIndirect2KHR', which sources the shader binding table
 --     parameters as well as the dispatch dimensions from the device. The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-rayTracingPipelineTraceRaysIndirect2 rayTracingPipelineTraceRaysIndirect2>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-rayTracingPipelineTraceRaysIndirect2 rayTracingPipelineTraceRaysIndirect2>
 --     feature indicates whether this functionality is supported.
 --
 -- == New Commands
@@ -196,11 +196,11 @@
 --
 -- == New Built-In Variables
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-cullmask CullMaskKHR>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-cullmask CullMaskKHR>
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-RayCullMaskKHR RayCullMaskKHR>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-RayCullMaskKHR RayCullMaskKHR>
 --
 -- == Issues
 --
@@ -219,7 +219,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_ray_tracing_maintenance1 Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_ray_tracing_maintenance1 Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -351,7 +351,7 @@
 --     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
 --     the image view’s @levelCount@ and @layerCount@ /must/ be 1
 --
--- -   #VUID-vkCmdTraceRaysIndirect2KHR-unnormalizedCoordinates-09636# If a
+-- -   #VUID-vkCmdTraceRaysIndirect2KHR-None-08609# If a
 --     'Vulkan.Core10.Handles.Sampler' created with
 --     @unnormalizedCoordinates@ equal to
 --     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
@@ -360,6 +360,24 @@
 --     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D' or
 --     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D'
 --
+-- -   #VUID-vkCmdTraceRaysIndirect2KHR-None-08610# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the sampler /must/ not be used with any of the SPIR-V
+--     @OpImageSample*@ or @OpImageSparseSample*@ instructions with
+--     @ImplicitLod@, @Dref@ or @Proj@ in their name
+--
+-- -   #VUID-vkCmdTraceRaysIndirect2KHR-None-08611# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the sampler /must/ not be used with any of the SPIR-V
+--     @OpImageSample*@ or @OpImageSparseSample*@ instructions that
+--     includes a LOD bias or any offset values
+--
 -- -   #VUID-vkCmdTraceRaysIndirect2KHR-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>,
@@ -493,29 +511,22 @@
 --     /must/ contain
 --     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT'
 --
--- -   #VUID-vkCmdTraceRaysIndirect2KHR-None-08600# For each set /n/ that
---     is statically used by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     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' or the
---     'Vulkan.Core10.Handles.DescriptorSetLayout' array used to create the
---     current 'Vulkan.Extensions.Handles.ShaderEXT' , as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
+-- -   #VUID-vkCmdTraceRaysIndirect2KHR-None-08600# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
+--     was created with a pipeline layout and statically uses a set /n/, a
+--     descriptor set /must/ have been bound to /n/ at the same pipeline
+--     bind point, with layouts compatible for set /n/ with the layout(s)
+--     used to create the shader, as described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptors-compatibility ???>
 --
--- -   #VUID-vkCmdTraceRaysIndirect2KHR-None-08601# For each push constant
---     that is statically used by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     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' or the
---     'Vulkan.Core10.Handles.DescriptorSetLayout' array used to create the
---     current 'Vulkan.Extensions.Handles.ShaderEXT' , as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
+-- -   #VUID-vkCmdTraceRaysIndirect2KHR-None-08601# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
+--     was created with a pipeline layout or specified push constant ranges
+--     and statically uses a push constant value, that value /must/ have
+--     been set for the same pipeline bind point, with push constant ranges
+--     that are
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptors-compatibility compatible>
+--     with the push constant range used to create the shader
 --
 -- -   #VUID-vkCmdTraceRaysIndirect2KHR-None-10068# For each array of
 --     resources that is used by
@@ -524,32 +535,23 @@
 --     the descriptor count for the identified binding in the descriptor
 --     sets used by this command
 --
--- -   #VUID-vkCmdTraceRaysIndirect2KHR-maintenance4-08602# 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
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     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' or the
---     'Vulkan.Core10.Handles.DescriptorSetLayout' and
---     'Vulkan.Core10.PipelineLayout.PushConstantRange' arrays used to
---     create the current 'Vulkan.Extensions.Handles.ShaderEXT' , as
---     described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
---
 -- -   #VUID-vkCmdTraceRaysIndirect2KHR-None-08114# Descriptors in each
 --     bound descriptor set, specified via
 --     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
---     be valid as described by
+--     be valid if they are accessed as described by
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
---     if they are statically used by the 'Vulkan.Core10.Handles.Pipeline'
---     bound to the pipeline bind point used by this command and the bound
+--     by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
+--     point used by this command and the bound
 --     'Vulkan.Core10.Handles.Pipeline' was not created with
 --     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
 --
+-- -   #VUID-vkCmdTraceRaysIndirect2KHR-imageLayout-00344# If an image
+--     descriptor is accessed by a shader, the
+--     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' /must/ match the
+--     subresource accessible from the 'Vulkan.Core10.Handles.ImageView' 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>
+--
 -- -   #VUID-vkCmdTraceRaysIndirect2KHR-None-08115# If the descriptors used
 --     by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
 --     point were specified via
@@ -607,57 +609,13 @@
 --     bound to the pipeline bind point used by this command, since that
 --     pipeline was bound
 --
--- -   #VUID-vkCmdTraceRaysIndirect2KHR-None-08609# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command or any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdTraceRaysIndirect2KHR-None-08610# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command or any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdTraceRaysIndirect2KHR-None-08611# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command or any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdTraceRaysIndirect2KHR-None-08607# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject>
---     feature is enabled, either a valid pipeline /must/ be bound to the
---     pipeline bind point used by this command, or a valid combination of
---     valid and 'Vulkan.Core10.APIConstants.NULL_HANDLE' shader objects
---     /must/ be bound to every supported shader stage corresponding to the
---     pipeline bind point used by this command
---
 -- -   #VUID-vkCmdTraceRaysIndirect2KHR-uniformBuffers-06935# If any stage
 --     of the 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline
 --     bind point used by this command accesses a uniform buffer, and that
 --     stage was created without enabling either
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT'
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
 --     or
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT'
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
 --     for @uniformBuffers@, and the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
 --     feature is not enabled, that stage /must/ not access values outside
@@ -677,9 +635,9 @@
 --     of the 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline
 --     bind point used by this command accesses a storage buffer, and that
 --     stage was created without enabling either
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT'
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
 --     or
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT'
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
 --     for @storageBuffers@, and the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
 --     feature is not enabled, that stage /must/ not access values outside
@@ -702,21 +660,6 @@
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shaders>
 --     /must/ not be a protected resource
 --
--- -   #VUID-vkCmdTraceRaysIndirect2KHR-None-06550# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
---     accesses a 'Vulkan.Core10.Handles.Sampler' or
---     'Vulkan.Core10.Handles.ImageView' object that enables
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,
---     that object /must/ only be used with @OpImageSample*@ or
---     @OpImageSparseSample*@ instructions
---
--- -   #VUID-vkCmdTraceRaysIndirect2KHR-ConstOffset-06551# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
---     accesses a 'Vulkan.Core10.Handles.Sampler' or
---     'Vulkan.Core10.Handles.ImageView' object that enables
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,
---     that object /must/ not use the @ConstOffset@ and @Offset@ operands
---
 -- -   #VUID-vkCmdTraceRaysIndirect2KHR-viewType-07752# If a
 --     'Vulkan.Core10.Handles.ImageView' is accessed as a result of this
 --     command, then the image view’s @viewType@ /must/ match the @Dim@
@@ -724,22 +667,23 @@
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-image-dimensions ???>
 --
 -- -   #VUID-vkCmdTraceRaysIndirect2KHR-format-07753# If a
---     'Vulkan.Core10.Handles.ImageView' is accessed as a result of this
+--     'Vulkan.Core10.Handles.ImageView' or
+--     'Vulkan.Core10.Handles.BufferView' is accessed as a result of this
 --     command, then the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-numericformat numeric type>
---     of the image view’s @format@ and the @Sampled@ @Type@ operand of the
+--     of the view’s @format@ and the @Sampled@ @Type@ operand of the
 --     @OpTypeImage@ /must/ match
 --
 -- -   #VUID-vkCmdTraceRaysIndirect2KHR-OpImageWrite-08795# If a
 --     'Vulkan.Core10.Handles.ImageView' created with a format other than
---     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM_KHR' is accessed using
+--     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM' 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-vkCmdTraceRaysIndirect2KHR-OpImageWrite-08796# If a
 --     'Vulkan.Core10.Handles.ImageView' created with the format
---     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM_KHR' is accessed using
+--     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM' is accessed using
 --     @OpImageWrite@ as a result of this command, then the @Type@ of the
 --     @Texel@ operand of that instruction /must/ have four components
 --
@@ -797,16 +741,16 @@
 --     @OpTypeImage@ with a @SampledType@ with a @Width@ of 64 by this
 --     command
 --
--- -   #VUID-vkCmdTraceRaysIndirect2KHR-OpImageWeightedSampleQCOM-06971# If
---     @OpImageWeightedSampleQCOM@ is used to sample a
+-- -   #VUID-vkCmdTraceRaysIndirect2KHR-OpImageSampleWeightedQCOM-06971# If
+--     @OpImageSampleWeightedQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM'
 --
--- -   #VUID-vkCmdTraceRaysIndirect2KHR-OpImageWeightedSampleQCOM-06972# If
---     @OpImageWeightedSampleQCOM@ uses a 'Vulkan.Core10.Handles.ImageView'
+-- -   #VUID-vkCmdTraceRaysIndirect2KHR-OpImageSampleWeightedQCOM-06972# If
+--     @OpImageSampleWeightedQCOM@ uses a 'Vulkan.Core10.Handles.ImageView'
 --     as a sample weight image 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>
@@ -828,23 +772,31 @@
 --     <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_BLOCK_MATCHING_BIT_QCOM'
+--     or
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_SXD_BIT_QCOM'
 --
--- -   #VUID-vkCmdTraceRaysIndirect2KHR-OpImageBlockMatchSADQCOM-06975# If
+-- -   #VUID-vkCmdTraceRaysIndirect2KHR-OpImageBlockMatchSADQCOM-12420# If
 --     @OpImageBlockMatchSADQCOM@ is used to read from an
 --     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
+--     or
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_SXD_BIT_QCOM'
 --
 -- -   #VUID-vkCmdTraceRaysIndirect2KHR-OpImageBlockMatchSADQCOM-06976# If
 --     @OpImageBlockMatchSADQCOM@ or OpImageBlockMatchSSDQCOM is used to
---     read from a reference image as result of this command, then the
---     specified reference coordinates /must/ not fail
+--     read from a reference image as result of this command, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-blockMatchExtendedClampToEdge blockMatchExtendedClampToEdge>
+--     feature is not enabled or the /input/ sampler was not created with
+--     both @addressModeU@ and @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--     then the specified reference coordinates /must/ not fail
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
 --
--- -   #VUID-vkCmdTraceRaysIndirect2KHR-OpImageWeightedSampleQCOM-06977# If
---     @OpImageWeightedSampleQCOM@, @OpImageBoxFilterQCOM@,
+-- -   #VUID-vkCmdTraceRaysIndirect2KHR-OpImageSampleWeightedQCOM-06977# If
+--     @OpImageSampleWeightedQCOM@, @OpImageBoxFilterQCOM@,
 --     @OpImageBlockMatchWindowSSDQCOM@, @OpImageBlockMatchWindowSADQCOM@,
 --     @OpImageBlockMatchGatherSSDQCOM@, @OpImageBlockMatchGatherSADQCOM@,
 --     @OpImageBlockMatchSSDQCOM@, or @OpImageBlockMatchSADQCOM@ uses a
@@ -852,8 +804,8 @@
 --     the sampler /must/ have been created with
 --     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
 --
--- -   #VUID-vkCmdTraceRaysIndirect2KHR-OpImageWeightedSampleQCOM-06978# If
---     any command other than @OpImageWeightedSampleQCOM@,
+-- -   #VUID-vkCmdTraceRaysIndirect2KHR-OpImageSampleWeightedQCOM-06978# If
+--     any command other than @OpImageSampleWeightedQCOM@,
 --     @OpImageBoxFilterQCOM@, @OpImageBlockMatchWindowSSDQCOM@,
 --     @OpImageBlockMatchWindowSADQCOM@, @OpImageBlockMatchGatherSSDQCOM@,
 --     @OpImageBlockMatchGatherSADQCOM@, @OpImageBlockMatchSSDQCOM@, or
@@ -879,10 +831,33 @@
 --
 -- -   #VUID-vkCmdTraceRaysIndirect2KHR-OpImageBlockMatchWindow-09217# If a
 --     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
---     read from a reference image as result of this command, then the
---     specified reference coordinates /must/ not fail
+--     read from a reference image as result of this command, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-blockMatchExtendedClampToEdge blockMatchExtendedClampToEdge>
+--     feature is not enabled or the /input/ sampler was not created with
+--     both @addressModeU@ and @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--     then the specified reference coordinates /must/ not fail
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
 --
+-- -   #VUID-vkCmdTraceRaysIndirect2KHR-OpImageBlockMatchWindow-12421# If a
+--     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     instruction uses a 'Vulkan.Core10.Handles.Sampler' as a result of
+--     this command, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-blockMatchExtendedClampToEdge blockMatchExtendedClampToEdge>
+--     is not enabled, the /input/ sampler /must/ not have been created
+--     with either @addressModeU@ or @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--
+-- -   #VUID-vkCmdTraceRaysIndirect2KHR-addressModeU-12422# If a
+--     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     instruction uses a 'Vulkan.Core10.Handles.Sampler' as a result of
+--     this command, and the /input/ sampler was created with either
+--     @addressModeU@ or @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE',
+--     then the sampler /must/ have been created with both @addressModeU@
+--     and @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--
 -- -   #VUID-vkCmdTraceRaysIndirect2KHR-None-07288# Any shader invocation
 --     executed by this command /must/
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-termination terminate>
@@ -895,10 +870,464 @@
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',
 --     or
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'
---     is accessed as a result of this command, the image subresource
+--     is accessed as a result of this command, all image subresources
 --     identified by that descriptor /must/ be in the image layout
 --     identified when the descriptor was written
 --
+-- -   #VUID-vkCmdTraceRaysIndirect2KHR-micromap-11636# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command through an
+--     @OpRayQueryProceedKHR@ operation , the @VK_EXT_opacity_micromap@
+--     extension is not enabled, and the acceleration structure is built
+--     using geometry with a
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapKHR'
+--     structure included in its @pNext@ chain, the shader /must/ have
+--     specified a @OpacityMicromapIdKHR@ execution mode with its
+--     specialization constant operand equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdTraceRaysIndirect2KHR-micromap-11637# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command and the
+--     acceleration structure was constructed through deserialization, all
+--     micromap arrays referenced by the acceleration structure that were
+--     not replaced by an acceleration structure update command /must/ have
+--     been deserialized using the serialized data of the corresponding
+--     micromaps used to originally build the acceleration structure prior
+--     to the execution of this command on the device
+--
+-- -   #VUID-vkCmdTraceRaysIndirect2KHR-micromap-11638# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command and the
+--     acceleration structure is built using geometry with an @indexBuffer@
+--     containing both
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.OpacityMicromapSpecialIndexKHR'
+--     values and indices into an associated micromap array, any
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command /must/ not have been created with @flags@ that
+--     includes
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_KHR'
+--
+-- -   #VUID-vkCmdTraceRaysIndirect2KHR-micromap-11639# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command and the
+--     acceleration structure is built using geometry with an @indexBuffer@
+--     containing both
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.OpacityMicromapSpecialIndexKHR'
+--     values and indices into an associated micromap array, any
+--     'Vulkan.Extensions.Handles.ShaderEXT' that accessed the descriptor
+--     /must/ not have been created with @flags@ that includes
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_EXT'
+--
+-- -   #VUID-vkCmdTraceRaysIndirect2KHR-commandBuffer-10746# The
+--     'Vulkan.Core10.Handles.DeviceMemory' object allocated from a
+--     'Vulkan.Core10.DeviceInitialization.MemoryHeap' with the
+--     'Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_TILE_MEMORY_BIT_QCOM'
+--     property that is bound to a resource accessed as a result of this
+--     command /must/ be the active
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-bind-tile-memory bound tile memory object>
+--     in @commandBuffer@
+--
+-- -   #VUID-vkCmdTraceRaysIndirect2KHR-None-10678# If this command is
+--     recorded inside a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-tile-shading tile shading render pass>
+--     instance, the stages corresponding to the pipeline bind point used
+--     by this command /must/ only include
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT',
+--     and\/or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT'
+--
+-- -   #VUID-vkCmdTraceRaysIndirect2KHR-None-10679# If this command is
+--     recorded where
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model>
+--     is enabled, there /must/ be no access to any image while the image
+--     was be transitioned to the
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
+--     layout
+--
+-- -   #VUID-vkCmdTraceRaysIndirect2KHR-pDescription-09900# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the
+--     underlying 'Vulkan.Extensions.Handles.TensorARM' object /must/ have
+--     been created with the
+--     'Vulkan.Extensions.VK_ARM_tensors.TENSOR_USAGE_SHADER_BIT_ARM' usage
+--     flag set
+--
+-- -   #VUID-vkCmdTraceRaysIndirect2KHR-dimensionCount-09905# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the @Rank@
+--     of the @OpTypeTensorARM@ of the tensor resource variable /must/ be
+--     equal to the @dimensionCount@ provided via
+--     'Vulkan.Extensions.VK_ARM_tensors.TensorCreateInfoARM'::@pDescription@
+--     when creating the underlying 'Vulkan.Extensions.Handles.TensorARM'
+--     object
+--
+-- -   #VUID-vkCmdTraceRaysIndirect2KHR-OpTypeTensorARM-09906# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the element
+--     type of the @OpTypeTensorARM@ of the tensor resource variable /must/
+--     be
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-tensor-formats compatible>
+--     with the 'Vulkan.Core10.Enums.Format.Format' of the
+--     'Vulkan.Extensions.Handles.TensorViewARM' used for the access
+--
+-- -   #VUID-vkCmdTraceRaysIndirect2KHR-None-11297# If a pipeline is bound
+--     to the pipeline bind point used by this command, or shader is bound
+--     to a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses a @OpTypeStruct@ decorated with @Block@ or
+--     @BufferBlock@ using that mapping, the calculated offset for the
+--     resource heap /must/ be a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-bufferDescriptorAlignment bufferDescriptorAlignment>
+--
+-- -   #VUID-vkCmdTraceRaysIndirect2KHR-None-11298# If a pipeline is bound
+--     to the pipeline bind point used by this command, or shader is bound
+--     to a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses an @OpTypeImage@ or @OpTypeSampledImage@ using
+--     that mapping, the calculated offset for the resource heap /must/ be
+--     a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-imageDescriptorAlignment imageDescriptorAlignment>
+--
+-- -   #VUID-vkCmdTraceRaysIndirect2KHR-None-11299# If a pipeline is bound
+--     to the pipeline bind point used by this command, or shader is bound
+--     to a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses an @OpTypeSampler@ or @OpTypeSampledImage@
+--     using that mapping, the calculated offset for the sampler heap
+--     /must/ be a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-samplerDescriptorAlignment samplerDescriptorAlignment>
+--
+-- -   #VUID-vkCmdTraceRaysIndirect2KHR-None-11397# If a pipeline is bound
+--     to the pipeline bind point used by this command, or shader is bound
+--     to a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses an @OpTypeTensorARM@ using that mapping, the
+--     calculated offset for the resource heap /must/ be a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-tensorDescriptorAlignment tensorDescriptorAlignment>
+--
+-- -   #VUID-vkCmdTraceRaysIndirect2KHR-None-11300# If a pipeline is bound
+--     to the pipeline bind point used by this command, or shader is bound
+--     to a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a
+--     multiple of 4
+--
+-- -   #VUID-vkCmdTraceRaysIndirect2KHR-None-11301# If a pipeline is bound
+--     to the pipeline bind point used by this command, or shader is bound
+--     to a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' backed by physical
+--     memory at every offset specified by each mapping
+--
+-- -   #VUID-vkCmdTraceRaysIndirect2KHR-None-11302# If a pipeline is bound
+--     to the pipeline bind point used by this command, or shader is bound
+--     to a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdTraceRaysIndirect2KHR-None-11304# If a pipeline is bound
+--     to the pipeline bind point used by this command, or shader is bound
+--     to a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a
+--     multiple of 8
+--
+-- -   #VUID-vkCmdTraceRaysIndirect2KHR-None-11305# If a pipeline is bound
+--     to the pipeline bind point used by this command, or shader is bound
+--     to a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' backed by physical
+--     memory at every offset specified by each mapping
+--
+-- -   #VUID-vkCmdTraceRaysIndirect2KHR-None-11306# If a pipeline is bound
+--     to the pipeline bind point used by this command, or shader is bound
+--     to a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address pointed to by the address in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdTraceRaysIndirect2KHR-None-11308# For each
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps descriptor heap>
+--     that is statically used by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
+--     either directly or via a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>,
+--     a valid descriptor heap /must/ be bound
+--
+-- -   #VUID-vkCmdTraceRaysIndirect2KHR-None-11309# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     was created as a 'Vulkan.Extensions.Handles.ShaderEXT' with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag or as part of a pipeline with the
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag, execution of this command /must/ not result in any descriptor
+--     read accessing data outside of the user range of the respective heap
+--     bound by @vkCmdBind*HeapEXT@ commands
+--
+-- -   #VUID-vkCmdTraceRaysIndirect2KHR-None-11372# If any stage of the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command accesses a uniform buffer or uniform
+--     texel buffer through a descriptor in the bound resource heap, that
+--     stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @uniformBuffers@, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /must/ not access values outside
+--     of the range of the descriptor specified via
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+--     when the descriptor was written
+--
+-- -   #VUID-vkCmdTraceRaysIndirect2KHR-None-11373# If any stage of the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command accesses a storage buffer or storage
+--     texel buffer through a descriptor in the bound resource heap, that
+--     stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @storageBuffers@, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /must/ not access values outside
+--     of the range of the descriptor specified by
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+--     when the descriptor was written
+--
+-- -   #VUID-vkCmdTraceRaysIndirect2KHR-None-11374# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, and any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     to the pipeline bind point used by this command accesses a uniform
+--     buffer, uniform texel buffer, storage buffer, or storage texel
+--     buffer, that shader /must/ not access values outside of the range of
+--     the buffer as specified by
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+--     when the descriptor was written
+--
+-- -   #VUID-vkCmdTraceRaysIndirect2KHR-pBindInfo-11375# If any
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     uses an embedded sampler via a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>,
+--     the value of @pBindInfo->reservedRangeSize@ set for
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.cmdBindSamplerHeapEXT'
+--     /must/ be greater than or equal to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minSamplerHeapReservedRangeWithEmbedded minSamplerHeapReservedRangeWithEmbedded>
+--
+-- -   #VUID-vkCmdTraceRaysIndirect2KHR-None-11376# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     was created as a 'Vulkan.Extensions.Handles.ShaderEXT' with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag or as part of a pipeline with the
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag, and that shader statically uses a push constant value, that
+--     value /must/ have been set by
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.cmdPushDataEXT'
+--
+-- -   #VUID-vkCmdTraceRaysIndirect2KHR-None-11398# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_DATA_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_DATA_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_RESOURCE_HEAP_DATA_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the access
+--     /must/ not be
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-execution-memory-access-bounds out of bounds>
+--
+-- -   #VUID-vkCmdTraceRaysIndirect2KHR-None-11437# If a pipeline is bound
+--     to the pipeline bind point used by this command, or shader is bound
+--     to a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the buffer from
+--     which the address in push data was queried /must/ have been created
+--     with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdTraceRaysIndirect2KHR-None-11438# If a pipeline is bound
+--     to the pipeline bind point used by this command, or shader is bound
+--     to a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a uniform buffer using that mapping, the
+--     address that the uniform buffer is mapped to /must/ have been
+--     queried from a buffer created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdTraceRaysIndirect2KHR-None-11441# If a pipeline is bound
+--     to the pipeline bind point used by this command, or shader is bound
+--     to a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a uniform buffer using that mapping, the
+--     address that the uniform buffer is mapped to /must/ be aligned to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minUniformBufferOffsetAlignment minUniformBufferOffsetAlignment>
+--
+-- -   #VUID-vkCmdTraceRaysIndirect2KHR-None-11439# If a pipeline is bound
+--     to the pipeline bind point used by this command, or shader is bound
+--     to a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a storage buffer using that mapping, the
+--     address that the storage buffer is mapped to /must/ have been
+--     queried from a buffer created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_STORAGE_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdTraceRaysIndirect2KHR-None-11442# If a pipeline is bound
+--     to the pipeline bind point used by this command, or shader is bound
+--     to a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a storage buffer using that mapping, the
+--     address that the storage buffer is mapped to /must/ be aligned to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minStorageBufferOffsetAlignment minStorageBufferOffsetAlignment>
+--
+-- -   #VUID-vkCmdTraceRaysIndirect2KHR-None-11485# If a pipeline is bound
+--     to the pipeline bind point used by this command, or shader is bound
+--     to a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses an acceleration structure using that mapping,
+--     the address that the acceleration structure is mapped to /must/ be
+--     an acceleration structure address retrieved from a
+--     'Vulkan.Extensions.Handles.AccelerationStructureKHR' object via
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.getAccelerationStructureDeviceAddressKHR'
+--     or handle retrieved from a
+--     'Vulkan.Extensions.Handles.AccelerationStructureNV' object via
+--     'Vulkan.Extensions.VK_NV_ray_tracing.getAccelerationStructureHandleNV'
+--
+-- -   #VUID-vkCmdTraceRaysIndirect2KHR-index-11450# If a shader uses a
+--     sampler descriptor to sample an image as a result of this command,
+--     and that sampler descriptor uses a custom border color with an index
+--     defined by
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.SamplerCustomBorderColorIndexCreateInfoEXT',
+--     the value of
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.SamplerCustomBorderColorIndexCreateInfoEXT'::@index@
+--     /must/ have been registered before this command was recorded, and
+--     still be registered during the sampling operation, with an
+--     identically defined color
+--
+-- -   #VUID-vkCmdTraceRaysIndirect2KHR-protectedNoFault-11455# If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, a pipeline is bound to the pipeline bind point
+--     used by this command, or a shader is bound to a shader stage used by
+--     this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     the address that the resource is mapped to /must/ have been queried
+--     from a buffer created without the
+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT'
+--     create flag set
+--
+-- -   #VUID-vkCmdTraceRaysIndirect2KHR-protectedNoFault-11456# If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, a pipeline is bound to the pipeline bind point
+--     used by this command, or a shader is bound to a shader stage used by
+--     this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     the address of the indirect memory /must/ have been queried from a
+--     buffer created without the
+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT'
+--     create flag set
+--
 -- -   #VUID-vkCmdTraceRaysIndirect2KHR-None-03429# Any shader group handle
 --     referenced by this call /must/ have been queried from the bound ray
 --     tracing pipeline
@@ -911,6 +1340,15 @@
 --     /must/ have been called in the current command buffer prior to this
 --     trace command
 --
+-- -   #VUID-vkCmdTraceRaysIndirect2KHR-None-11319# If a pipeline is bound
+--     to the pipeline bind point used by this command, or shader is bound
+--     to a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     the value of the address at the expected location in shader record
+--     data /must/ be a valid address
+--
 -- -   #VUID-vkCmdTraceRaysIndirect2KHR-maxPipelineRayRecursionDepth-03679#
 --     This command /must/ not cause a shader call instruction to be
 --     executed from a shader invocation with a
@@ -921,16 +1359,25 @@
 -- -   #VUID-vkCmdTraceRaysIndirect2KHR-commandBuffer-03635#
 --     @commandBuffer@ /must/ not be a protected command buffer
 --
--- -   #VUID-vkCmdTraceRaysIndirect2KHR-indirectDeviceAddress-03632# If the
---     buffer from which @indirectDeviceAddress@ was queried is non-sparse
---     then it /must/ be bound completely and contiguously to a single
---     'Vulkan.Core10.Handles.DeviceMemory' object
+-- -   #VUID-vkCmdTraceRaysIndirect2KHR-micromap-11640# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command, the access is
+--     not through an @OpRayQueryProceedKHR@ operation, and the
+--     acceleration structure is built using geometry with a
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapKHR'
+--     or
+--     'Vulkan.Extensions.VK_EXT_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapEXT'
+--     structure included in its @pNext@ chain, the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command /must/ have been created with @flags@ that
+--     includes
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_KHR'
 --
--- -   #VUID-vkCmdTraceRaysIndirect2KHR-indirectDeviceAddress-03633# The
---     buffer from which @indirectDeviceAddress@ was queried /must/ have
---     been created with the
+-- -   #VUID-vkCmdTraceRaysIndirect2KHR-indirectDeviceAddress-03633#
+--     @indirectDeviceAddress@ /must/ be a device address allocated to the
+--     application from a buffer created with the
 --     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'
---     bit set
+--     usage flag set
 --
 -- -   #VUID-vkCmdTraceRaysIndirect2KHR-indirectDeviceAddress-03634#
 --     @indirectDeviceAddress@ /must/ be a multiple of @4@
@@ -957,17 +1404,25 @@
 --     @commandBuffer@ /must/ be a valid
 --     'Vulkan.Core10.Handles.CommandBuffer' handle
 --
+-- -   #VUID-vkCmdTraceRaysIndirect2KHR-indirectDeviceAddress-parameter#
+--     @indirectDeviceAddress@ /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' value
+--
 -- -   #VUID-vkCmdTraceRaysIndirect2KHR-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-vkCmdTraceRaysIndirect2KHR-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support compute operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT' operations
 --
 -- -   #VUID-vkCmdTraceRaysIndirect2KHR-renderpass# This command /must/
 --     only be called outside of a render pass instance
 --
+-- -   #VUID-vkCmdTraceRaysIndirect2KHR-suspended# This command /must/ not
+--     be called between suspended render pass instances
+--
 -- -   #VUID-vkCmdTraceRaysIndirect2KHR-videocoding# This command /must/
 --     only be called outside of a video coding scope
 --
@@ -985,10 +1440,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | Compute                                                                                                               | Action                                                                                                                                 |
+-- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | Action                                                                                                                                 |
 -- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdTraceRaysIndirect2KHR is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_ray_tracing_maintenance1 VK_KHR_ray_tracing_maintenance1>,
@@ -1032,31 +1492,21 @@
 --
 -- == Valid Usage
 --
--- -   #VUID-VkTraceRaysIndirectCommand2KHR-pRayGenShaderBindingTable-03680#
---     If the buffer from which @raygenShaderRecordAddress@ was queried is
---     non-sparse then it /must/ be bound completely and contiguously to a
---     single 'Vulkan.Core10.Handles.DeviceMemory' object
---
 -- -   #VUID-VkTraceRaysIndirectCommand2KHR-pRayGenShaderBindingTable-03681#
---     The buffer from which the @raygenShaderRecordAddress@ is queried
---     /must/ have been created with the
+--     @raygenShaderRecordAddress@ /must/ be a device address allocated to
+--     the application from a buffer created with the
 --     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR'
---     usage flag
+--     usage flag set
 --
 -- -   #VUID-VkTraceRaysIndirectCommand2KHR-pRayGenShaderBindingTable-03682#
 --     @raygenShaderRecordAddress@ /must/ be a multiple of
 --     'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.PhysicalDeviceRayTracingPipelinePropertiesKHR'::@shaderGroupBaseAlignment@
 --
--- -   #VUID-VkTraceRaysIndirectCommand2KHR-pMissShaderBindingTable-03683#
---     If the buffer from which @missShaderBindingTableAddress@ was queried
---     is non-sparse then it /must/ be bound completely and contiguously to
---     a single 'Vulkan.Core10.Handles.DeviceMemory' object
---
 -- -   #VUID-VkTraceRaysIndirectCommand2KHR-pMissShaderBindingTable-03684#
---     The buffer from which the @missShaderBindingTableAddress@ is queried
---     /must/ have been created with the
+--     @missShaderBindingTableAddress@ /must/ be a device address allocated
+--     to the application from a buffer created with the
 --     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR'
---     usage flag
+--     usage flag set
 --
 -- -   #VUID-VkTraceRaysIndirectCommand2KHR-pMissShaderBindingTable-03685#
 --     @missShaderBindingTableAddress@ /must/ be a multiple of
@@ -1070,16 +1520,11 @@
 --     @missShaderBindingTableStride@ /must/ be less than or equal to
 --     'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.PhysicalDeviceRayTracingPipelinePropertiesKHR'::@maxShaderGroupStride@
 --
--- -   #VUID-VkTraceRaysIndirectCommand2KHR-pHitShaderBindingTable-03687#
---     If the buffer from which @hitShaderBindingTableAddress@ was queried
---     is non-sparse then it /must/ be bound completely and contiguously to
---     a single 'Vulkan.Core10.Handles.DeviceMemory' object
---
 -- -   #VUID-VkTraceRaysIndirectCommand2KHR-pHitShaderBindingTable-03688#
---     The buffer from which the @hitShaderBindingTableAddress@ is queried
---     /must/ have been created with the
+--     @hitShaderBindingTableAddress@ /must/ be a device address allocated
+--     to the application from a buffer created with the
 --     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR'
---     usage flag
+--     usage flag set
 --
 -- -   #VUID-VkTraceRaysIndirectCommand2KHR-pHitShaderBindingTable-03689#
 --     @hitShaderBindingTableAddress@ /must/ be a multiple of
@@ -1093,16 +1538,11 @@
 --     @hitShaderBindingTableStride@ /must/ be less than or equal to
 --     'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.PhysicalDeviceRayTracingPipelinePropertiesKHR'::@maxShaderGroupStride@
 --
--- -   #VUID-VkTraceRaysIndirectCommand2KHR-pCallableShaderBindingTable-03691#
---     If the buffer from which @callableShaderBindingTableAddress@ was
---     queried is non-sparse then it /must/ be bound completely and
---     contiguously to a single 'Vulkan.Core10.Handles.DeviceMemory' object
---
 -- -   #VUID-VkTraceRaysIndirectCommand2KHR-pCallableShaderBindingTable-03692#
---     The buffer from which the @callableShaderBindingTableAddress@ is
---     queried /must/ have been created with the
+--     @callableShaderBindingTableAddress@ /must/ be a device address
+--     allocated to the application from a buffer created with the
 --     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR'
---     usage flag
+--     usage flag set
 --
 -- -   #VUID-VkTraceRaysIndirectCommand2KHR-pCallableShaderBindingTable-03693#
 --     @callableShaderBindingTableAddress@ /must/ be a multiple of
@@ -1116,21 +1556,12 @@
 --     @callableShaderBindingTableStride@ /must/ be less than or equal to
 --     'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.PhysicalDeviceRayTracingPipelinePropertiesKHR'::@maxShaderGroupStride@
 --
--- -   #VUID-VkTraceRaysIndirectCommand2KHR-flags-03696# If the bound ray
---     tracing pipeline was created with @flags@ that included
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR',
---     @hitShaderBindingTableAddress@ /must/ not be zero
---
--- -   #VUID-VkTraceRaysIndirectCommand2KHR-flags-03697# If the bound ray
---     tracing pipeline was created with @flags@ that included
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR',
---     @hitShaderBindingTableAddress@ /must/ not be zero
---
 -- -   #VUID-VkTraceRaysIndirectCommand2KHR-flags-03511# If the bound ray
 --     tracing pipeline was created with @flags@ that included
 --     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR',
---     the shader group handle identified by
---     @missShaderBindingTableAddress@ /must/ not be zero
+--     the entries in the table identified by
+--     @missShaderBindingTableAddress@ accessed as a result of this command
+--     in order to execute a miss shader /must/ not be zero
 --
 -- -   #VUID-VkTraceRaysIndirectCommand2KHR-flags-03512# If the bound ray
 --     tracing pipeline was created with @flags@ that included
@@ -1191,6 +1622,24 @@
 --     × @depth@ /must/ be less than or equal to
 --     'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.PhysicalDeviceRayTracingPipelinePropertiesKHR'::@maxRayDispatchInvocationCount@
 --
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkTraceRaysIndirectCommand2KHR-raygenShaderRecordAddress-parameter#
+--     @raygenShaderRecordAddress@ /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' value
+--
+-- -   #VUID-VkTraceRaysIndirectCommand2KHR-missShaderBindingTableAddress-parameter#
+--     @missShaderBindingTableAddress@ /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' value
+--
+-- -   #VUID-VkTraceRaysIndirectCommand2KHR-hitShaderBindingTableAddress-parameter#
+--     @hitShaderBindingTableAddress@ /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' value
+--
+-- -   #VUID-VkTraceRaysIndirectCommand2KHR-callableShaderBindingTableAddress-parameter#
+--     @callableShaderBindingTableAddress@ /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' value
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_ray_tracing_maintenance1 VK_KHR_ray_tracing_maintenance1>,
@@ -1369,11 +1818,21 @@
 -- 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. 'PhysicalDeviceRayTracingMaintenance1FeaturesKHR' /can/ also
--- be used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo'
--- to selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceRayTracingMaintenance1FeaturesKHR', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Extensions/VK_KHR_ray_tracing_maintenance1.hs-boot b/src/Vulkan/Extensions/VK_KHR_ray_tracing_maintenance1.hs-boot
--- a/src/Vulkan/Extensions/VK_KHR_ray_tracing_maintenance1.hs-boot
+++ b/src/Vulkan/Extensions/VK_KHR_ray_tracing_maintenance1.hs-boot
@@ -102,11 +102,11 @@
 --
 --     -   'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR'
 --         to specify execution of
---         <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#acceleration-structure-copying acceleration structure copy commands>
+--         <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#acceleration-structure-copying acceleration structure copy commands>
 --
 --     -   'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHR'
 --         to specify read access to a
---         <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shader-binding-table shader binding table>
+--         <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shader-binding-table shader binding table>
 --         in any shader pipeline stage
 --
 -- -   Adds two new acceleration structure query parameters:
@@ -121,7 +121,7 @@
 -- -   Adds an optional new indirect ray tracing dispatch command,
 --     'cmdTraceRaysIndirect2KHR', which sources the shader binding table
 --     parameters as well as the dispatch dimensions from the device. The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-rayTracingPipelineTraceRaysIndirect2 rayTracingPipelineTraceRaysIndirect2>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-rayTracingPipelineTraceRaysIndirect2 rayTracingPipelineTraceRaysIndirect2>
 --     feature indicates whether this functionality is supported.
 --
 -- == New Commands
@@ -196,11 +196,11 @@
 --
 -- == New Built-In Variables
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-cullmask CullMaskKHR>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-cullmask CullMaskKHR>
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-RayCullMaskKHR RayCullMaskKHR>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-RayCullMaskKHR RayCullMaskKHR>
 --
 -- == Issues
 --
@@ -219,7 +219,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_ray_tracing_maintenance1 Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_ray_tracing_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_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
@@ -21,4660 +21,5768 @@
 --     Ratified
 --
 -- [__Extension and Version Dependencies__]
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_spirv_1_4 VK_KHR_spirv_1_4>
---     and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>
---
--- [__API Interactions__]
---
---     -   Interacts with VK_KHR_ray_query
---
--- [__SPIR-V Dependencies__]
---
---     -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/KHR/SPV_KHR_ray_tracing.html SPV_KHR_ray_tracing>
---
--- [__Contact__]
---
---     -   Daniel Koch
---         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_ray_tracing_pipeline] @dgkoch%0A*Here describe the issue or question you have about the VK_KHR_ray_tracing_pipeline extension* >
---
--- == Other Extension Metadata
---
--- [__Last Modified Date__]
---     2020-11-12
---
--- [__Interactions and External Dependencies__]
---
---     -   This extension provides API support for
---         <https://github.com/KhronosGroup/GLSL/blob/main/extensions/ext/GLSL_EXT_ray_tracing.txt GLSL_EXT_ray_tracing>
---
---     -   This extension interacts with
---         <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#versions-1.2 Vulkan 1.2>
---         and @VK_KHR_vulkan_memory_model@, adding the
---         <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shader-call-related shader-call-related>
---         relation of invocations,
---         <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shader-call-order shader-call-order>
---         partial order of dynamic instances of instructions, and the
---         <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-scope-shadercall ShaderCallKHR>
---         scope.
---
---     -   This extension interacts with @VK_KHR_pipeline_library@,
---         enabling pipeline libraries to be used with ray tracing
---         pipelines and enabling usage of
---         'RayTracingPipelineInterfaceCreateInfoKHR'.
---
--- [__Contributors__]
---
---     -   Matthäus Chajdas, AMD
---
---     -   Greg Grebe, AMD
---
---     -   Nicolai Hähnle, AMD
---
---     -   Tobias Hector, AMD
---
---     -   Dave Oldcorn, AMD
---
---     -   Skyler Saleh, AMD
---
---     -   Mathieu Robart, Arm
---
---     -   Marius Bjorge, Arm
---
---     -   Tom Olson, Arm
---
---     -   Sebastian Tafuri, EA
---
---     -   Henrik Rydgard, Embark
---
---     -   Juan Cañada, Epic Games
---
---     -   Patrick Kelly, Epic Games
---
---     -   Yuriy O’Donnell, Epic Games
---
---     -   Michael Doggett, Facebook\/Oculus
---
---     -   Andrew Garrard, Imagination
---
---     -   Don Scorgie, Imagination
---
---     -   Dae Kim, Imagination
---
---     -   Joshua Barczak, Intel
---
---     -   Slawek Grajewski, Intel
---
---     -   Jeff Bolz, NVIDIA
---
---     -   Pascal Gautron, NVIDIA
---
---     -   Daniel Koch, NVIDIA
---
---     -   Christoph Kubisch, NVIDIA
---
---     -   Ashwin Lele, NVIDIA
---
---     -   Robert Stepinski, NVIDIA
---
---     -   Martin Stich, NVIDIA
---
---     -   Nuno Subtil, NVIDIA
---
---     -   Eric Werness, NVIDIA
---
---     -   Jon Leech, Khronos
---
---     -   Jeroen van Schijndel, OTOY
---
---     -   Juul Joosten, OTOY
---
---     -   Alex Bourd, Qualcomm
---
---     -   Roman Larionov, Qualcomm
---
---     -   David McAllister, Qualcomm
---
---     -   Spencer Fricke, Samsung
---
---     -   Lewis Gordon, Samsung
---
---     -   Ralph Potter, Samsung
---
---     -   Jasper Bekkers, Traverse Research
---
---     -   Jesse Barker, Unity
---
---     -   Baldur Karlsson, Valve
---
--- == Description
---
--- Rasterization has been the dominant method to produce interactive
--- graphics, but increasing performance of graphics hardware has made ray
--- tracing a viable option for interactive rendering. Being able to
--- integrate ray tracing with traditional rasterization makes it easier for
--- applications to incrementally add ray traced effects to existing
--- applications or to do hybrid approaches with rasterization for primary
--- visibility and ray tracing for secondary queries.
---
--- To enable ray tracing, this extension adds a few different categories of
--- new functionality:
---
--- -   A new ray tracing pipeline type with new shader domains: ray
---     generation, intersection, any-hit, closest hit, miss, and callable
---
--- -   A shader binding indirection table to link shader groups with
---     acceleration structure items
---
--- -   Ray tracing commands which initiate the ray pipeline traversal and
---     invocation of the various new shader domains depending on which
---     traversal conditions are met
---
--- This extension adds support for the following SPIR-V extension in
--- Vulkan:
---
--- -   @SPV_KHR_ray_tracing@
---
--- == New Commands
---
--- -   'cmdSetRayTracingPipelineStackSizeKHR'
---
--- -   'cmdTraceRaysIndirectKHR'
---
--- -   'cmdTraceRaysKHR'
---
--- -   'createRayTracingPipelinesKHR'
---
--- -   'getRayTracingCaptureReplayShaderGroupHandlesKHR'
---
--- -   'getRayTracingShaderGroupHandlesKHR'
---
--- -   'getRayTracingShaderGroupStackSizeKHR'
---
--- == New Structures
---
--- -   'RayTracingPipelineCreateInfoKHR'
---
--- -   'RayTracingPipelineInterfaceCreateInfoKHR'
---
--- -   'RayTracingShaderGroupCreateInfoKHR'
---
--- -   'StridedDeviceAddressRegionKHR'
---
--- -   'TraceRaysIndirectCommandKHR'
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
---     'Vulkan.Core10.Device.DeviceCreateInfo':
---
---     -   'PhysicalDeviceRayTracingPipelineFeaturesKHR'
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
---
---     -   'PhysicalDeviceRayTracingPipelinePropertiesKHR'
---
--- == New Enums
---
--- -   'RayTracingShaderGroupTypeKHR'
---
--- -   'ShaderGroupShaderKHR'
---
--- == New Enum Constants
---
--- -   'KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME'
---
--- -   'KHR_RAY_TRACING_PIPELINE_SPEC_VERSION'
---
--- -   'Vulkan.Core10.APIConstants.SHADER_UNUSED_KHR'
---
--- -   Extending
---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BufferUsageFlagBits':
---
---     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR'
---
--- -   Extending 'Vulkan.Core10.Enums.DynamicState.DynamicState':
---
---     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR'
---
--- -   Extending 'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint':
---
---     -   'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_RAY_TRACING_KHR'
---
--- -   Extending
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits':
---
---     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR'
---
---     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR'
---
---     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR'
---
---     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR'
---
---     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR'
---
---     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR'
---
---     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR'
---
--- -   Extending
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits':
---
---     -   'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR'
---
--- -   Extending
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits':
---
---     -   'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_ANY_HIT_BIT_KHR'
---
---     -   'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_CALLABLE_BIT_KHR'
---
---     -   'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_CLOSEST_HIT_BIT_KHR'
---
---     -   'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_INTERSECTION_BIT_KHR'
---
---     -   'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MISS_BIT_KHR'
---
---     -   'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_RAYGEN_BIT_KHR'
---
--- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR'
---
--- == New or Modified Built-In Variables
---
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-launchid LaunchIdKHR>
---
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-launchsize LaunchSizeKHR>
---
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-worldrayorigin WorldRayOriginKHR>
---
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-worldraydirection WorldRayDirectionKHR>
---
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-objectrayorigin ObjectRayOriginKHR>
---
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-objectraydirection ObjectRayDirectionKHR>
---
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-raytmin RayTminKHR>
---
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-raytmax RayTmaxKHR>
---
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-instancecustomindex InstanceCustomIndexKHR>
---
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-instanceid InstanceId>
---
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-objecttoworld ObjectToWorldKHR>
---
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-worldtoobject WorldToObjectKHR>
---
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-hitkind HitKindKHR>
---
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-incomingrayflags IncomingRayFlagsKHR>
---
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-raygeometryindex RayGeometryIndexKHR>
---
--- -   (modified)@PrimitiveId@
---
--- == New SPIR-V Capabilities
---
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-RayTracingKHR RayTracingKHR>
---
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-RayTraversalPrimitiveCullingKHR RayTraversalPrimitiveCullingKHR>
---
--- == Issues
---
--- (1) How does this extension differ from VK_NV_ray_tracing?
---
--- __DISCUSSION__:
---
--- The following is a summary of the main functional differences between
--- VK_KHR_ray_tracing_pipeline and VK_NV_ray_tracing:
---
--- -   added support for indirect ray tracing ('cmdTraceRaysIndirectKHR')
---
--- -   uses SPV_KHR_ray_tracing instead of SPV_NV_ray_tracing
---
---     -   refer to KHR SPIR-V enums instead of NV SPIR-V enums (which are
---         functionally equivalent and aliased to the same values).
---
---     -   added @RayGeometryIndexKHR@ built-in
---
--- -   removed vkCompileDeferredNV compilation functionality and replaced
---     with
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#deferred-host-operations deferred host operations>
---     interactions for ray tracing
---
--- -   added 'PhysicalDeviceRayTracingPipelineFeaturesKHR' structure
---
--- -   extended 'PhysicalDeviceRayTracingPipelinePropertiesKHR' structure
---
---     -   renamed @maxRecursionDepth@ to @maxRayRecursionDepth@ and it has
---         a minimum of 1 instead of 31
---
---     -   require @shaderGroupHandleSize@ to be 32 bytes
---
---     -   added @maxRayDispatchInvocationCount@,
---         @shaderGroupHandleAlignment@ and @maxRayHitAttributeSize@
---
--- -   reworked geometry structures so they could be better shared between
---     device, host, and indirect builds
---
--- -   changed SBT parameters to a structure and added size
---     ('StridedDeviceAddressRegionKHR')
---
--- -   add parameter for requesting memory requirements for host and\/or
---     device build
---
--- -   added
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-library pipeline library>
---     support for ray tracing
---
--- -   added
---     <https://registry.khronos.org/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://registry.khronos.org/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 comparison of differences and
--- similarities between VK_NV_ray_tracing and VK_KHR_ray_tracing_pipeline?
---
--- __DISCUSSION__:
---
--- The following is a more detailed comparison of which commands,
--- structures, and enums are aliased, changed, or removed.
---
--- -   Aliased functionality — enums, structures, and commands that are
---     considered equivalent:
---
---     -   'Vulkan.Extensions.VK_NV_ray_tracing.RayTracingShaderGroupTypeNV'
---         ↔ 'RayTracingShaderGroupTypeKHR'
---
---     -   'Vulkan.Extensions.VK_NV_ray_tracing.getRayTracingShaderGroupHandlesNV'
---         ↔ 'getRayTracingShaderGroupHandlesKHR'
---
--- -   Changed enums, structures, and commands:
---
---     -   'Vulkan.Extensions.VK_NV_ray_tracing.RayTracingShaderGroupCreateInfoNV'
---         → 'RayTracingShaderGroupCreateInfoKHR' (added
---         @pShaderGroupCaptureReplayHandle@)
---
---     -   'Vulkan.Extensions.VK_NV_ray_tracing.RayTracingPipelineCreateInfoNV'
---         → 'RayTracingPipelineCreateInfoKHR' (changed type of @pGroups@,
---         added @libraries@, @pLibraryInterface@, and @pDynamicState@)
---
---     -   'Vulkan.Extensions.VK_NV_ray_tracing.PhysicalDeviceRayTracingPropertiesNV'
---         → VkPhysicalDeviceRayTracingPropertiesKHR (renamed
---         @maxTriangleCount@ to @maxPrimitiveCount@, added
---         @shaderGroupHandleCaptureReplaySize@)
---
---     -   'Vulkan.Extensions.VK_NV_ray_tracing.cmdTraceRaysNV' →
---         'cmdTraceRaysKHR' (params to struct)
---
---     -   'Vulkan.Extensions.VK_NV_ray_tracing.createRayTracingPipelinesNV'
---         → 'createRayTracingPipelinesKHR' (different struct, changed
---         functionality)
---
--- -   Added enums, structures and commands:
---
---     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR'
---         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR',
---         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR',
---         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR',
---         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR',
---         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR'
---         to
---         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits'
---
---     -   'PhysicalDeviceRayTracingPipelineFeaturesKHR' structure
---
---     -   'Vulkan.Extensions.VK_KHR_acceleration_structure.DeviceOrHostAddressKHR'
---         and
---         'Vulkan.Extensions.VK_KHR_acceleration_structure.DeviceOrHostAddressConstKHR'
---         unions
---
---     -   'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'
---         struct
---
---     -   'RayTracingPipelineInterfaceCreateInfoKHR' struct
---
---     -   'StridedDeviceAddressRegionKHR' struct
---
---     -   'cmdTraceRaysIndirectKHR' command and
---         'TraceRaysIndirectCommandKHR' struct
---
---     -   'getRayTracingCaptureReplayShaderGroupHandlesKHR' (shader group
---         capture\/replay)
---
---     -   'cmdSetRayTracingPipelineStackSizeKHR' and
---         'getRayTracingShaderGroupStackSizeKHR' commands for stack size
---         control
---
--- -   Functionality removed:
---
---     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DEFER_COMPILE_BIT_NV'
---
---     -   'Vulkan.Extensions.VK_NV_ray_tracing.compileDeferredNV' command
---         (replaced with @VK_KHR_deferred_host_operations@)
---
--- (3) What are the changes between the public provisional
--- (VK_KHR_ray_tracing v8) release and the internal provisional
--- (VK_KHR_ray_tracing v9) release?
---
--- -   Require Vulkan 1.1 and SPIR-V 1.4
---
--- -   Added interactions with Vulkan 1.2 and @VK_KHR_vulkan_memory_model@
---
--- -   added creation time capture and replay flags
---
---     -   added
---         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR'
---         to
---         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits'
---
--- -   replace @VkStridedBufferRegionKHR@ with
---     'StridedDeviceAddressRegionKHR' and change 'cmdTraceRaysKHR',
---     'cmdTraceRaysIndirectKHR', to take these for the shader binding
---     table and use device addresses instead of buffers.
---
--- -   require the shader binding table buffers to have the
---     @VK_BUFFER_USAGE_RAY_TRACING_BIT_KHR@ set
---
--- -   make @VK_KHR_pipeline_library@ an interaction instead of required
---     extension
---
--- -   rename the @libraries@ member of 'RayTracingPipelineCreateInfoKHR'
---     to @pLibraryInfo@ and make it a pointer
---
--- -   make @VK_KHR_deferred_host_operations@ an interaction instead of a
---     required extension (later went back on this)
---
--- -   added explicit stack size management for ray tracing pipelines
---
---     -   removed the @maxCallableSize@ member of
---         'RayTracingPipelineInterfaceCreateInfoKHR'
---
---     -   added the @pDynamicState@ member to
---         'RayTracingPipelineCreateInfoKHR'
---
---     -   added
---         'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR'
---         dynamic state for ray tracing pipelines
---
---     -   added 'getRayTracingShaderGroupStackSizeKHR' and
---         'cmdSetRayTracingPipelineStackSizeKHR' commands
---
---     -   added 'ShaderGroupShaderKHR' enum
---
--- -   Added @maxRayDispatchInvocationCount@ limit to
---     'PhysicalDeviceRayTracingPipelinePropertiesKHR'
---
--- -   Added @shaderGroupHandleAlignment@ property to
---     'PhysicalDeviceRayTracingPipelinePropertiesKHR'
---
--- -   Added @maxRayHitAttributeSize@ property to
---     'PhysicalDeviceRayTracingPipelinePropertiesKHR'
---
--- -   Clarify deferred host ops for pipeline creation
---
---     -   'Vulkan.Extensions.Handles.DeferredOperationKHR' is now a
---         top-level parameter for 'createRayTracingPipelinesKHR'
---
---     -   removed @VkDeferredOperationInfoKHR@ structure
---
---     -   change deferred host creation\/return parameter behavior such
---         that the implementation can modify such parameters until the
---         deferred host operation completes
---
---     -   @VK_KHR_deferred_host_operations@ is required again
---
--- (4) What are the changes between the internal provisional
--- (VK_KHR_ray_tracing v9) release and the final
--- (VK_KHR_acceleration_structure v11 \/ VK_KHR_ray_tracing_pipeline v1)
--- release?
---
--- -   refactor VK_KHR_ray_tracing into 3 extensions, enabling
---     implementation flexibility and decoupling ray query support from ray
---     pipelines:
---
---     -   @VK_KHR_acceleration_structure@ (for acceleration structure
---         operations)
---
---     -   @VK_KHR_ray_tracing_pipeline@ (for ray tracing pipeline and
---         shader stages)
---
---     -   @VK_KHR_ray_query@ (for ray queries in existing shader stages)
---
--- -   Require @Volatile@ for the following builtins in the ray generation,
---     closest hit, miss, intersection, and callable shader stages:
---
---     -   @SubgroupSize@, @SubgroupLocalInvocationId@, @SubgroupEqMask@,
---         @SubgroupGeMask@, @SubgroupGtMask@, @SubgroupLeMask@,
---         @SubgroupLtMask@
---
---     -   @SMIDNV@, @WarpIDNV@
---
--- -   clarify buffer usage flags for ray tracing
---
---     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR'
---         is added as an alias of
---         'Vulkan.Extensions.VK_NV_ray_tracing.BUFFER_USAGE_RAY_TRACING_BIT_NV'
---         and is required on shader binding table buffers
---
---     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_STORAGE_BUFFER_BIT'
---         is used in @VK_KHR_acceleration_structure@ for @scratchData@
---
--- -   rename @maxRecursionDepth@ to @maxRayPipelineRecursionDepth@
---     (pipeline creation) and @maxRayRecursionDepth@ (limit) to reduce
---     confusion
---
--- -   Add queryable @maxRayHitAttributeSize@ limit and rename members of
---     'RayTracingPipelineInterfaceCreateInfoKHR' to
---     @maxPipelineRayPayloadSize@ and @maxPipelineRayHitAttributeSize@ for
---     clarity
---
--- -   Update SPIRV capabilities to use @RayTracingKHR@
---
--- -   extension is no longer provisional
---
--- -   define synchronization requirements for indirect trace rays and
---     indirect buffer
---
--- (5) This extension adds gl_InstanceID for the intersection, any-hit, and
--- closest hit shaders, but in KHR_vulkan_glsl, gl_InstanceID is replaced
--- with gl_InstanceIndex. Which should be used for Vulkan in this
--- extension?
---
--- __RESOLVED__: This extension uses gl_InstanceID and maps it to
--- @InstanceId@ in SPIR-V. It is acknowledged that this is different than
--- other shader stages in Vulkan. There are two main reasons for the
--- difference here:
---
--- -   symmetry with gl_PrimitiveID which is also available in these
---     shaders
---
--- -   there is no “baseInstance” relevant for these shaders, and so ID
---     makes it more obvious that this is zero-based.
---
--- (6) Why is @VK_KHR_pipeline_library@ an interaction instead of a
--- required dependency, particularly when the “Feature Requirements”
--- section says it is required to be supported anyhow?
---
--- __RESOLVED__: If the @VK_KHR_pipeline_library@ extensino were a required
--- dependency, then every application would need to enable the extension
--- whether or not they actually want to use the pipeline library
--- functionality. Developers found this to be annoying and unfriendly
--- behavior. We do wish to require all __implementations__ to support it
--- though, and thus it is listed in the feature requirements section.
---
--- == Sample Code
---
--- Example ray generation GLSL shader
---
--- > #version 450 core
--- > #extension GL_EXT_ray_tracing : require
--- > layout(set = 0, binding = 0, rgba8) uniform image2D image;
--- > layout(set = 0, binding = 1) uniform accelerationStructureEXT as;
--- > layout(location = 0) rayPayloadEXT float payload;
--- >
--- > void main()
--- > {
--- >    vec4 col = vec4(0, 0, 0, 1);
--- >
--- >    vec3 origin = vec3(float(gl_LaunchIDEXT.x)/float(gl_LaunchSizeEXT.x), float(gl_LaunchIDEXT.y)/float(gl_LaunchSizeEXT.y), 1.0);
--- >    vec3 dir = vec3(0.0, 0.0, -1.0);
--- >
--- >    traceRayEXT(as, 0, 0xff, 0, 1, 0, origin, 0.0, dir, 1000.0, 0);
--- >
--- >    col.y = payload;
--- >
--- >    imageStore(image, ivec2(gl_LaunchIDEXT.xy), col);
--- > }
---
--- == Version History
---
--- -   Revision 1, 2020-11-12 (Mathieu Robart, Daniel Koch, Eric Werness,
---     Tobias Hector)
---
---     -   Decomposition of the specification, from VK_KHR_ray_tracing to
---         VK_KHR_ray_tracing_pipeline (#1918,!3912)
---
---     -   require certain subgroup and sm_shader_builtin shader builtins
---         to be decorated as volatile in the ray generation, closest hit,
---         miss, intersection, and callable stages (#1924,!3903,!3954)
---
---     -   clarify buffer usage flags for ray tracing (#2181,!3939)
---
---     -   rename maxRecursionDepth to maxRayPipelineRecursionDepth and
---         maxRayRecursionDepth (#2203,!3937)
---
---     -   add queryable maxRayHitAttributeSize and rename members of
---         VkRayTracingPipelineInterfaceCreateInfoKHR (#2102,!3966)
---
---     -   update to use @RayTracingKHR@ SPIR-V capability
---
---     -   add VUs for matching hit group type against geometry type
---         (#2245,!3994)
---
---     -   require @RayTMaxKHR@ be volatile in intersection shaders
---         (#2268,!4030)
---
---     -   add numerical limits for ray parameters (#2235,!3960)
---
---     -   fix SBT indexing rules for device addresses (#2308,!4079)
---
---     -   relax formula for ray intersection candidate determination
---         (#2322,!4080)
---
---     -   add more details on @ShaderRecordBufferKHR@ variables
---         (#2230,!4083)
---
---     -   clarify valid bits for @InstanceCustomIndexKHR@
---         (GLSL\/GLSL#19,!4128)
---
---     -   allow at most one @IncomingRayPayloadKHR@,
---         @IncomingCallableDataKHR@, and @HitAttributeKHR@ (!4129)
---
---     -   add minimum for maxShaderGroupStride (#2353,!4131)
---
---     -   require VK_KHR_pipeline_library extension to be supported
---         (#2348,!4135)
---
---     -   clarify meaning of \'geometry index\' (#2272,!4137)
---
---     -   restrict traces to TLAS (#2239,!4141)
---
---     -   add note about maxPipelineRayPayloadSize (#2383,!4172)
---
---     -   do not require raygen shader in pipeline libraries (!4185)
---
---     -   define sync for indirect trace rays and indirect buffer
---         (#2407,!4208)
---
--- == See Also
---
--- No cross-references are available
---
--- == Document Notes
---
--- For more information, see the
--- <https://registry.khronos.org/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.
-module Vulkan.Extensions.VK_KHR_ray_tracing_pipeline  ( cmdTraceRaysKHR
-                                                      , getRayTracingShaderGroupHandlesKHR
-                                                      , getRayTracingCaptureReplayShaderGroupHandlesKHR
-                                                      , createRayTracingPipelinesKHR
-                                                      , withRayTracingPipelinesKHR
-                                                      , cmdTraceRaysIndirectKHR
-                                                      , getRayTracingShaderGroupStackSizeKHR
-                                                      , cmdSetRayTracingPipelineStackSizeKHR
-                                                      , RayTracingShaderGroupCreateInfoKHR(..)
-                                                      , RayTracingPipelineCreateInfoKHR(..)
-                                                      , PhysicalDeviceRayTracingPipelineFeaturesKHR(..)
-                                                      , PhysicalDeviceRayTracingPipelinePropertiesKHR(..)
-                                                      , StridedDeviceAddressRegionKHR(..)
-                                                      , TraceRaysIndirectCommandKHR(..)
-                                                      , RayTracingPipelineInterfaceCreateInfoKHR(..)
-                                                      , RayTracingShaderGroupTypeKHR( RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR
-                                                                                    , RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR
-                                                                                    , RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR
-                                                                                    , ..
-                                                                                    )
-                                                      , ShaderGroupShaderKHR( SHADER_GROUP_SHADER_GENERAL_KHR
-                                                                            , SHADER_GROUP_SHADER_CLOSEST_HIT_KHR
-                                                                            , SHADER_GROUP_SHADER_ANY_HIT_KHR
-                                                                            , SHADER_GROUP_SHADER_INTERSECTION_KHR
-                                                                            , ..
-                                                                            )
-                                                      , KHR_RAY_TRACING_PIPELINE_SPEC_VERSION
-                                                      , pattern KHR_RAY_TRACING_PIPELINE_SPEC_VERSION
-                                                      , KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME
-                                                      , pattern KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME
-                                                      , DeferredOperationKHR(..)
-                                                      , PipelineLibraryCreateInfoKHR(..)
-                                                      , SHADER_UNUSED_KHR
-                                                      , pattern SHADER_UNUSED_KHR
-                                                      ) 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.Foldable (traverse_)
-import Data.Typeable (eqT)
-import Foreign.Marshal.Alloc (allocaBytes)
-import Foreign.Marshal.Alloc (callocBytes)
-import Foreign.Marshal.Alloc (free)
-import Foreign.Marshal.Utils (maybePeek)
-import 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 (showsPrec)
-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 Foreign.C.Types (CSize(..))
-import Vulkan.CStruct (FromCStruct)
-import Vulkan.CStruct (FromCStruct(..))
-import Vulkan.CStruct (ToCStruct)
-import Vulkan.CStruct (ToCStruct(..))
-import Vulkan.Zero (Zero)
-import Vulkan.Zero (Zero(..))
-import Control.Monad.IO.Class (MonadIO)
-import Data.String (IsString)
-import Data.Type.Equality ((:~:)(Refl))
-import Data.Typeable (Typeable)
-import Foreign.C.Types (CSize)
-import Foreign.C.Types (CSize(CSize))
-import Foreign.Storable (Storable)
-import Foreign.Storable (Storable(peek))
-import Foreign.Storable (Storable(poke))
-import qualified Foreign.Storable (Storable(..))
-import GHC.Generics (Generic)
-import GHC.IO.Exception (IOErrorType(..))
-import GHC.IO.Exception (IOException(..))
-import Data.Int (Int32)
-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.Core10.Pipeline (destroyPipeline)
-import Vulkan.CStruct.Extends (forgetExtensions)
-import Vulkan.CStruct.Extends (peekSomeCStruct)
-import Vulkan.CStruct.Extends (pokeSomeCStruct)
-import Vulkan.NamedType ((:::))
-import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)
-import Vulkan.Core10.FundamentalTypes (Bool32)
-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.Extensions.Handles (DeferredOperationKHR)
-import Vulkan.Extensions.Handles (DeferredOperationKHR(..))
-import Vulkan.Core10.Handles (Device)
-import Vulkan.Core10.Handles (Device(..))
-import Vulkan.Core10.Handles (Device(Device))
-import Vulkan.Core10.FundamentalTypes (DeviceAddress)
-import Vulkan.Dynamic (DeviceCmds(pVkCmdSetRayTracingPipelineStackSizeKHR))
-import Vulkan.Dynamic (DeviceCmds(pVkCmdTraceRaysIndirectKHR))
-import Vulkan.Dynamic (DeviceCmds(pVkCmdTraceRaysKHR))
-import Vulkan.Dynamic (DeviceCmds(pVkCreateRayTracingPipelinesKHR))
-import Vulkan.Dynamic (DeviceCmds(pVkGetRayTracingCaptureReplayShaderGroupHandlesKHR))
-import Vulkan.Dynamic (DeviceCmds(pVkGetRayTracingShaderGroupHandlesKHR))
-import Vulkan.Dynamic (DeviceCmds(pVkGetRayTracingShaderGroupStackSizeKHR))
-import Vulkan.Core10.FundamentalTypes (DeviceSize)
-import Vulkan.Core10.Handles (Device_T)
-import Vulkan.CStruct.Extends (Extends)
-import Vulkan.CStruct.Extends (Extendss)
-import Vulkan.CStruct.Extends (Extensible(..))
-import Vulkan.CStruct.Extends (PeekChain)
-import Vulkan.CStruct.Extends (PeekChain(..))
-import Vulkan.Core10.Handles (Pipeline)
-import Vulkan.Core10.Handles (Pipeline(..))
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_pipeline_binary (PipelineBinaryInfoKHR)
-import Vulkan.Core10.Handles (PipelineCache)
-import Vulkan.Core10.Handles (PipelineCache(..))
-import Vulkan.Core10.Enums.PipelineCreateFlagBits (PipelineCreateFlags)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance5 (PipelineCreateFlags2CreateInfoKHR)
-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)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_pipeline_robustness (PipelineRobustnessCreateInfoEXT)
-import Vulkan.Core10.Pipeline (PipelineShaderStageCreateInfo)
-import Vulkan.CStruct.Extends (PokeChain)
-import Vulkan.CStruct.Extends (PokeChain(..))
-import Vulkan.Core10.Enums.Result (Result)
-import Vulkan.Core10.Enums.Result (Result(..))
-import Vulkan.CStruct.Extends (SomeStruct)
-import Vulkan.Core10.Enums.StructureType (StructureType)
-import Vulkan.Exception (VulkanException(..))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR))
-import Vulkan.Core10.Enums.Result (Result(SUCCESS))
-import Vulkan.Extensions.Handles (DeferredOperationKHR(..))
-import Vulkan.Extensions.VK_KHR_pipeline_library (PipelineLibraryCreateInfoKHR(..))
-import Vulkan.Core10.APIConstants (SHADER_UNUSED_KHR)
-import Vulkan.Core10.APIConstants (pattern SHADER_UNUSED_KHR)
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdTraceRaysKHR
-  :: FunPtr (Ptr CommandBuffer_T -> Ptr StridedDeviceAddressRegionKHR -> Ptr StridedDeviceAddressRegionKHR -> Ptr StridedDeviceAddressRegionKHR -> Ptr StridedDeviceAddressRegionKHR -> Word32 -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Ptr StridedDeviceAddressRegionKHR -> Ptr StridedDeviceAddressRegionKHR -> Ptr StridedDeviceAddressRegionKHR -> Ptr StridedDeviceAddressRegionKHR -> Word32 -> Word32 -> Word32 -> IO ()
-
--- | vkCmdTraceRaysKHR - Initialize a ray tracing dispatch
---
--- = Description
---
--- When the command is executed, a ray generation group of @width@ ×
--- @height@ × @depth@ rays is assembled.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdTraceRaysKHR-magFilter-04553# If a
---     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
---     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR',
---     @reductionMode@ equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
---     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-vkCmdTraceRaysKHR-magFilter-09598# If a
---     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
---     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR' and
---     @reductionMode@ equal to either
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
---     or
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
---     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_MINMAX_BIT'
---
--- -   #VUID-vkCmdTraceRaysKHR-mipmapMode-04770# If a
---     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
---     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR',
---     @reductionMode@ equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
---     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-vkCmdTraceRaysKHR-mipmapMode-09599# If a
---     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
---     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'
---     and @reductionMode@ equal to either
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
---     or
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
---     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_MINMAX_BIT'
---
--- -   #VUID-vkCmdTraceRaysKHR-unnormalizedCoordinates-09635# If a
---     'Vulkan.Core10.Handles.Sampler' created with
---     @unnormalizedCoordinates@ equal to
---     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
---     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
---     the image view’s @levelCount@ and @layerCount@ /must/ be 1
---
--- -   #VUID-vkCmdTraceRaysKHR-unnormalizedCoordinates-09636# If a
---     'Vulkan.Core10.Handles.Sampler' created with
---     @unnormalizedCoordinates@ equal to
---     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
---     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
---     the image view’s @viewType@ /must/ be
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D' or
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D'
---
--- -   #VUID-vkCmdTraceRaysKHR-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-vkCmdTraceRaysKHR-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-vkCmdTraceRaysKHR-None-07888# If a
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'
---     descriptor is accessed using atomic operations as a result of this
---     command, then the storage texel buffer’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-buffer-view-format-features format features>
---     /must/ contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT'
---
--- -   #VUID-vkCmdTraceRaysKHR-None-02692# If a
---     'Vulkan.Core10.Handles.ImageView' is sampled with
---     'Vulkan.Core10.Enums.Filter.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.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'
---
--- -   #VUID-vkCmdTraceRaysKHR-None-02693# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_filter_cubic VK_EXT_filter_cubic>
---     extension is not enabled and any 'Vulkan.Core10.Handles.ImageView'
---     is sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as a
---     result of this command, it /must/ not have a
---     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' of
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE', or
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY'
---
--- -   #VUID-vkCmdTraceRaysKHR-filterCubic-02694# Any
---     'Vulkan.Core10.Handles.ImageView' being sampled with
---     'Vulkan.Core10.Enums.Filter.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-vkCmdTraceRaysKHR-filterCubicMinmax-02695# Any
---     'Vulkan.Core10.Handles.ImageView' being sampled with
---     'Vulkan.Core10.Enums.Filter.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-vkCmdTraceRaysKHR-cubicRangeClamp-09212# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-cubicRangeClamp cubicRangeClamp>
---     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
---     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
---     a result of this command /must/ not have a
---     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
---     equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
---
--- -   #VUID-vkCmdTraceRaysKHR-reductionMode-09213# Any
---     'Vulkan.Core10.Handles.ImageView' being sampled with a
---     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
---     equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
---     as a result of this command /must/ sample with
---     'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT'
---
--- -   #VUID-vkCmdTraceRaysKHR-selectableCubicWeights-09214# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-selectableCubicWeights selectableCubicWeights>
---     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
---     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
---     a result of this command /must/ have
---     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.SamplerCubicWeightsCreateInfoQCOM'::@cubicWeights@
---     equal to
---     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM'
---
--- -   #VUID-vkCmdTraceRaysKHR-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-vkCmdTraceRaysKHR-OpTypeImage-07027# For any
---     'Vulkan.Core10.Handles.ImageView' being written as a storage image
---     where the image format field of the @OpTypeImage@ is @Unknown@, the
---     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_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdTraceRaysKHR-OpTypeImage-07028# For any
---     'Vulkan.Core10.Handles.ImageView' being read as a storage image
---     where the image format field of the @OpTypeImage@ is @Unknown@, the
---     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_STORAGE_READ_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdTraceRaysKHR-OpTypeImage-07029# For any
---     'Vulkan.Core10.Handles.BufferView' being written as a storage texel
---     buffer where the image format field of the @OpTypeImage@ is
---     @Unknown@, the view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
---     /must/ contain
---     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdTraceRaysKHR-OpTypeImage-07030# Any
---     'Vulkan.Core10.Handles.BufferView' being read as a storage texel
---     buffer where the image format field of the @OpTypeImage@ is
---     @Unknown@ then the view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
---     /must/ contain
---     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdTraceRaysKHR-None-08600# For each set /n/ that is
---     statically used by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     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' or the
---     'Vulkan.Core10.Handles.DescriptorSetLayout' array used to create the
---     current 'Vulkan.Extensions.Handles.ShaderEXT' , as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
---
--- -   #VUID-vkCmdTraceRaysKHR-None-08601# For each push constant that is
---     statically used by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     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' or the
---     'Vulkan.Core10.Handles.DescriptorSetLayout' array used to create the
---     current 'Vulkan.Extensions.Handles.ShaderEXT' , as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
---
--- -   #VUID-vkCmdTraceRaysKHR-None-10068# For each array of resources that
---     is used by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     the indices used to access members of the array /must/ be less than
---     the descriptor count for the identified binding in the descriptor
---     sets used by this command
---
--- -   #VUID-vkCmdTraceRaysKHR-maintenance4-08602# 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
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     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' or the
---     'Vulkan.Core10.Handles.DescriptorSetLayout' and
---     'Vulkan.Core10.PipelineLayout.PushConstantRange' arrays used to
---     create the current 'Vulkan.Extensions.Handles.ShaderEXT' , as
---     described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
---
--- -   #VUID-vkCmdTraceRaysKHR-None-08114# Descriptors in each bound
---     descriptor set, specified via
---     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
---     be valid as described by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
---     if they are statically used by the 'Vulkan.Core10.Handles.Pipeline'
---     bound to the pipeline bind point used by this command and the bound
---     'Vulkan.Core10.Handles.Pipeline' was not created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdTraceRaysKHR-None-08115# If the descriptors used by the
---     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
---     were specified via
---     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', the
---     bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
---     without
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdTraceRaysKHR-None-08116# Descriptors in bound descriptor
---     buffers, specified via
---     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
---     /must/ be valid if they are dynamically used by the
---     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
---     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
---     was created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdTraceRaysKHR-None-08604# Descriptors in bound descriptor
---     buffers, specified via
---     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
---     /must/ be valid if they are dynamically used by any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     to the pipeline bind point used by this command
---
--- -   #VUID-vkCmdTraceRaysKHR-None-08117# If the descriptors used by the
---     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
---     were specified via
---     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
---     the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
---     with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdTraceRaysKHR-None-08119# If a descriptor is dynamically
---     used with a 'Vulkan.Core10.Handles.Pipeline' created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
---     the descriptor memory /must/ be resident
---
--- -   #VUID-vkCmdTraceRaysKHR-None-08605# If a descriptor is dynamically
---     used with a 'Vulkan.Extensions.Handles.ShaderEXT' created with a
---     'Vulkan.Core10.Handles.DescriptorSetLayout' that was created with
---     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
---     the descriptor memory /must/ be resident
---
--- -   #VUID-vkCmdTraceRaysKHR-None-08606# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject>
---     feature is not enabled, a valid pipeline /must/ be bound to the
---     pipeline bind point used by this command
---
--- -   #VUID-vkCmdTraceRaysKHR-None-08608# If a pipeline is bound to the
---     pipeline bind point used by this command, there /must/ not have been
---     any calls to dynamic state setting commands for any state specified
---     statically in the 'Vulkan.Core10.Handles.Pipeline' object bound to
---     the pipeline bind point used by this command, since that pipeline
---     was bound
---
--- -   #VUID-vkCmdTraceRaysKHR-None-08609# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command or any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdTraceRaysKHR-None-08610# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command or any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdTraceRaysKHR-None-08611# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command or any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdTraceRaysKHR-None-08607# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject>
---     feature is enabled, either a valid pipeline /must/ be bound to the
---     pipeline bind point used by this command, or a valid combination of
---     valid and 'Vulkan.Core10.APIConstants.NULL_HANDLE' shader objects
---     /must/ be bound to every supported shader stage corresponding to the
---     pipeline bind point used by this command
---
--- -   #VUID-vkCmdTraceRaysKHR-uniformBuffers-06935# If any stage of the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command accesses a uniform buffer, and that stage
---     was created without enabling either
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT'
---     or
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT'
---     for @uniformBuffers@, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, that stage /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-vkCmdTraceRaysKHR-None-08612# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, and any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdTraceRaysKHR-storageBuffers-06936# If any stage of the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command accesses a storage buffer, and that stage
---     was created without enabling either
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT'
---     or
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT'
---     for @storageBuffers@, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, that stage /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-vkCmdTraceRaysKHR-None-08613# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, and any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdTraceRaysKHR-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
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shaders>
---     /must/ not be a protected resource
---
--- -   #VUID-vkCmdTraceRaysKHR-None-06550# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
---     accesses a 'Vulkan.Core10.Handles.Sampler' or
---     'Vulkan.Core10.Handles.ImageView' object that enables
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,
---     that object /must/ only be used with @OpImageSample*@ or
---     @OpImageSparseSample*@ instructions
---
--- -   #VUID-vkCmdTraceRaysKHR-ConstOffset-06551# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
---     accesses a 'Vulkan.Core10.Handles.Sampler' or
---     'Vulkan.Core10.Handles.ImageView' object that enables
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,
---     that object /must/ not use the @ConstOffset@ and @Offset@ operands
---
--- -   #VUID-vkCmdTraceRaysKHR-viewType-07752# If a
---     'Vulkan.Core10.Handles.ImageView' is accessed as a result of this
---     command, then the image view’s @viewType@ /must/ match the @Dim@
---     operand of the @OpTypeImage@ as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-image-dimensions ???>
---
--- -   #VUID-vkCmdTraceRaysKHR-format-07753# If a
---     'Vulkan.Core10.Handles.ImageView' is accessed as a result of this
---     command, then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-numericformat numeric type>
---     of the image view’s @format@ and the @Sampled@ @Type@ operand of the
---     @OpTypeImage@ /must/ match
---
--- -   #VUID-vkCmdTraceRaysKHR-OpImageWrite-08795# If a
---     'Vulkan.Core10.Handles.ImageView' created with a format other than
---     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM_KHR' 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-vkCmdTraceRaysKHR-OpImageWrite-08796# If a
---     'Vulkan.Core10.Handles.ImageView' created with the format
---     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM_KHR' is accessed using
---     @OpImageWrite@ as a result of this command, then the @Type@ of the
---     @Texel@ operand of that instruction /must/ have four components
---
--- -   #VUID-vkCmdTraceRaysKHR-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-vkCmdTraceRaysKHR-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-vkCmdTraceRaysKHR-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-vkCmdTraceRaysKHR-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-vkCmdTraceRaysKHR-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-vkCmdTraceRaysKHR-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-vkCmdTraceRaysKHR-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-vkCmdTraceRaysKHR-OpImageWeightedSampleQCOM-06971# If
---     @OpImageWeightedSampleQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM'
---
--- -   #VUID-vkCmdTraceRaysKHR-OpImageWeightedSampleQCOM-06972# If
---     @OpImageWeightedSampleQCOM@ uses a 'Vulkan.Core10.Handles.ImageView'
---     as a sample weight image 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM'
---
--- -   #VUID-vkCmdTraceRaysKHR-OpImageBoxFilterQCOM-06973# If
---     @OpImageBoxFilterQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM'
---
--- -   #VUID-vkCmdTraceRaysKHR-OpImageBlockMatchSSDQCOM-06974# If
---     @OpImageBlockMatchSSDQCOM@ is used to read from an
---     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
---
--- -   #VUID-vkCmdTraceRaysKHR-OpImageBlockMatchSADQCOM-06975# If
---     @OpImageBlockMatchSADQCOM@ is used to read from an
---     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
---
--- -   #VUID-vkCmdTraceRaysKHR-OpImageBlockMatchSADQCOM-06976# If
---     @OpImageBlockMatchSADQCOM@ or OpImageBlockMatchSSDQCOM is used to
---     read from a reference image as result of this command, then the
---     specified reference coordinates /must/ not fail
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
---
--- -   #VUID-vkCmdTraceRaysKHR-OpImageWeightedSampleQCOM-06977# If
---     @OpImageWeightedSampleQCOM@, @OpImageBoxFilterQCOM@,
---     @OpImageBlockMatchWindowSSDQCOM@, @OpImageBlockMatchWindowSADQCOM@,
---     @OpImageBlockMatchGatherSSDQCOM@, @OpImageBlockMatchGatherSADQCOM@,
---     @OpImageBlockMatchSSDQCOM@, or @OpImageBlockMatchSADQCOM@ uses a
---     'Vulkan.Core10.Handles.Sampler' as a result of this command, then
---     the sampler /must/ have been created with
---     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
---
--- -   #VUID-vkCmdTraceRaysKHR-OpImageWeightedSampleQCOM-06978# If any
---     command other than @OpImageWeightedSampleQCOM@,
---     @OpImageBoxFilterQCOM@, @OpImageBlockMatchWindowSSDQCOM@,
---     @OpImageBlockMatchWindowSADQCOM@, @OpImageBlockMatchGatherSSDQCOM@,
---     @OpImageBlockMatchGatherSADQCOM@, @OpImageBlockMatchSSDQCOM@, or
---     @OpImageBlockMatchSADQCOM@ uses a 'Vulkan.Core10.Handles.Sampler' as
---     a result of this command, then the sampler /must/ not have been
---     created with
---     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
---
--- -   #VUID-vkCmdTraceRaysKHR-OpImageBlockMatchWindow-09215# If a
---     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
---     instruction is used to read from an
---     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
---
--- -   #VUID-vkCmdTraceRaysKHR-OpImageBlockMatchWindow-09216# If a
---     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
---     instruction is used to read from an
---     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
---     the image view’s format /must/ be a single-component format
---
--- -   #VUID-vkCmdTraceRaysKHR-OpImageBlockMatchWindow-09217# If a
---     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
---     read from a reference image as result of this command, then the
---     specified reference coordinates /must/ not fail
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
---
--- -   #VUID-vkCmdTraceRaysKHR-None-07288# Any shader invocation executed
---     by this command /must/
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-termination terminate>
---
--- -   #VUID-vkCmdTraceRaysKHR-None-09600# If a descriptor with type equal
---     to any of
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM',
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM',
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',
---     or
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'
---     is accessed as a result of this command, the image subresource
---     identified by that descriptor /must/ be in the image layout
---     identified when the descriptor was written
---
--- -   #VUID-vkCmdTraceRaysKHR-None-03429# Any shader group handle
---     referenced by this call /must/ have been queried from the bound ray
---     tracing pipeline
---
--- -   #VUID-vkCmdTraceRaysKHR-None-09458# If the bound ray tracing
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR'
---     dynamic state enabled then 'cmdSetRayTracingPipelineStackSizeKHR'
---     /must/ have been called in the current command buffer prior to this
---     trace command
---
--- -   #VUID-vkCmdTraceRaysKHR-maxPipelineRayRecursionDepth-03679# This
---     command /must/ not cause a shader call 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>
---     greater than the value of @maxPipelineRayRecursionDepth@ used to
---     create the bound ray tracing pipeline
---
--- -   #VUID-vkCmdTraceRaysKHR-commandBuffer-03635# @commandBuffer@ /must/
---     not be a protected command buffer
---
--- -   #VUID-vkCmdTraceRaysKHR-size-04023# The @size@ member of
---     @pRayGenShaderBindingTable@ /must/ be equal to its @stride@ member
---
--- -   #VUID-vkCmdTraceRaysKHR-pRayGenShaderBindingTable-03680# If the
---     buffer from which @pRayGenShaderBindingTable->deviceAddress@ was
---     queried is non-sparse then it /must/ be bound completely and
---     contiguously to a single 'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-vkCmdTraceRaysKHR-pRayGenShaderBindingTable-03681# The buffer
---     from which the @pRayGenShaderBindingTable->deviceAddress@ is queried
---     /must/ have been created with the
---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR'
---     usage flag
---
--- -   #VUID-vkCmdTraceRaysKHR-pRayGenShaderBindingTable-03682#
---     @pRayGenShaderBindingTable->deviceAddress@ /must/ be a multiple of
---     'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@shaderGroupBaseAlignment@
---
--- -   #VUID-vkCmdTraceRaysKHR-pMissShaderBindingTable-03683# If the buffer
---     from which @pMissShaderBindingTable->deviceAddress@ was queried is
---     non-sparse then it /must/ be bound completely and contiguously to a
---     single 'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-vkCmdTraceRaysKHR-pMissShaderBindingTable-03684# The buffer
---     from which the @pMissShaderBindingTable->deviceAddress@ is queried
---     /must/ have been created with the
---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR'
---     usage flag
---
--- -   #VUID-vkCmdTraceRaysKHR-pMissShaderBindingTable-03685#
---     @pMissShaderBindingTable->deviceAddress@ /must/ be a multiple of
---     'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@shaderGroupBaseAlignment@
---
--- -   #VUID-vkCmdTraceRaysKHR-stride-03686#
---     @pMissShaderBindingTable->stride@ /must/ be a multiple of
---     'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@shaderGroupHandleAlignment@
---
--- -   #VUID-vkCmdTraceRaysKHR-stride-04029#
---     @pMissShaderBindingTable->stride@ /must/ be less than or equal to
---     'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@maxShaderGroupStride@
---
--- -   #VUID-vkCmdTraceRaysKHR-pHitShaderBindingTable-03687# If the buffer
---     from which @pHitShaderBindingTable->deviceAddress@ was queried is
---     non-sparse then it /must/ be bound completely and contiguously to a
---     single 'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-vkCmdTraceRaysKHR-pHitShaderBindingTable-03688# The buffer
---     from which the @pHitShaderBindingTable->deviceAddress@ is queried
---     /must/ have been created with the
---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR'
---     usage flag
---
--- -   #VUID-vkCmdTraceRaysKHR-pHitShaderBindingTable-03689#
---     @pHitShaderBindingTable->deviceAddress@ /must/ be a multiple of
---     'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@shaderGroupBaseAlignment@
---
--- -   #VUID-vkCmdTraceRaysKHR-stride-03690#
---     @pHitShaderBindingTable->stride@ /must/ be a multiple of
---     'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@shaderGroupHandleAlignment@
---
--- -   #VUID-vkCmdTraceRaysKHR-stride-04035#
---     @pHitShaderBindingTable->stride@ /must/ be less than or equal to
---     'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@maxShaderGroupStride@
---
--- -   #VUID-vkCmdTraceRaysKHR-pCallableShaderBindingTable-03691# If the
---     buffer from which @pCallableShaderBindingTable->deviceAddress@ was
---     queried is non-sparse then it /must/ be bound completely and
---     contiguously to a single 'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-vkCmdTraceRaysKHR-pCallableShaderBindingTable-03692# The
---     buffer from which the @pCallableShaderBindingTable->deviceAddress@
---     is queried /must/ have been created with the
---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR'
---     usage flag
---
--- -   #VUID-vkCmdTraceRaysKHR-pCallableShaderBindingTable-03693#
---     @pCallableShaderBindingTable->deviceAddress@ /must/ be a multiple of
---     'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@shaderGroupBaseAlignment@
---
--- -   #VUID-vkCmdTraceRaysKHR-stride-03694#
---     @pCallableShaderBindingTable->stride@ /must/ be a multiple of
---     'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@shaderGroupHandleAlignment@
---
--- -   #VUID-vkCmdTraceRaysKHR-stride-04041#
---     @pCallableShaderBindingTable->stride@ /must/ be less than or equal
---     to
---     'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@maxShaderGroupStride@
---
--- -   #VUID-vkCmdTraceRaysKHR-flags-03696# If the bound ray tracing
---     pipeline was created with @flags@ that included
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR',
---     @pHitShaderBindingTable->deviceAddress@ /must/ not be zero
---
--- -   #VUID-vkCmdTraceRaysKHR-flags-03697# If the bound ray tracing
---     pipeline was created with @flags@ that included
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR',
---     @pHitShaderBindingTable->deviceAddress@ /must/ not be zero
---
--- -   #VUID-vkCmdTraceRaysKHR-flags-03511# If the bound ray tracing
---     pipeline was created with @flags@ that included
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR',
---     the shader group handle identified by
---     @pMissShaderBindingTable->deviceAddress@ /must/ not be zero
---
--- -   #VUID-vkCmdTraceRaysKHR-flags-03512# If the bound ray tracing
---     pipeline was created with @flags@ that included
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR',
---     entries in the table identified by
---     @pHitShaderBindingTable->deviceAddress@ accessed as a result of this
---     command in order to execute an any-hit shader /must/ not be zero
---
--- -   #VUID-vkCmdTraceRaysKHR-flags-03513# If the bound ray tracing
---     pipeline was created with @flags@ that included
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR',
---     entries in the table identified by
---     @pHitShaderBindingTable->deviceAddress@ accessed as a result of this
---     command in order to execute a closest hit shader /must/ not be zero
---
--- -   #VUID-vkCmdTraceRaysKHR-flags-03514# If the bound ray tracing
---     pipeline was created with @flags@ that included
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR',
---     entries in the table identified by
---     @pHitShaderBindingTable->deviceAddress@ accessed as a result of this
---     command in order to execute an intersection shader /must/ not be
---     zero
---
--- -   #VUID-vkCmdTraceRaysKHR-pHitShaderBindingTable-04735# Any non-zero
---     hit shader group entries in the table identified by
---     @pHitShaderBindingTable->deviceAddress@ accessed by this call from a
---     geometry with a @geometryType@ of
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.GEOMETRY_TYPE_TRIANGLES_KHR'
---     /must/ have been created with
---     'RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR'
---
--- -   #VUID-vkCmdTraceRaysKHR-pHitShaderBindingTable-04736# Any non-zero
---     hit shader group entries in the table identified by
---     @pHitShaderBindingTable->deviceAddress@ accessed by this call from a
---     geometry with a @geometryType@ of
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.GEOMETRY_TYPE_AABBS_KHR'
---     /must/ have been created with
---     'RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR'
---
--- -   #VUID-vkCmdTraceRaysKHR-width-03638# @width@ /must/ be less than or
---     equal to
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[0]
---     ×
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupSize@[0]
---
--- -   #VUID-vkCmdTraceRaysKHR-height-03639# @height@ /must/ be less than
---     or equal to
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[1]
---     ×
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupSize@[1]
---
--- -   #VUID-vkCmdTraceRaysKHR-depth-03640# @depth@ /must/ be less than or
---     equal to
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[2]
---     ×
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupSize@[2]
---
--- -   #VUID-vkCmdTraceRaysKHR-width-03641# @width@ × @height@ × @depth@
---     /must/ be less than or equal to
---     'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@maxRayDispatchInvocationCount@
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdTraceRaysKHR-commandBuffer-parameter# @commandBuffer@
---     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdTraceRaysKHR-pRaygenShaderBindingTable-parameter#
---     @pRaygenShaderBindingTable@ /must/ be a valid pointer to a valid
---     'StridedDeviceAddressRegionKHR' structure
---
--- -   #VUID-vkCmdTraceRaysKHR-pMissShaderBindingTable-parameter#
---     @pMissShaderBindingTable@ /must/ be a valid pointer to a valid
---     'StridedDeviceAddressRegionKHR' structure
---
--- -   #VUID-vkCmdTraceRaysKHR-pHitShaderBindingTable-parameter#
---     @pHitShaderBindingTable@ /must/ be a valid pointer to a valid
---     'StridedDeviceAddressRegionKHR' structure
---
--- -   #VUID-vkCmdTraceRaysKHR-pCallableShaderBindingTable-parameter#
---     @pCallableShaderBindingTable@ /must/ be a valid pointer to a valid
---     'StridedDeviceAddressRegionKHR' structure
---
--- -   #VUID-vkCmdTraceRaysKHR-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-vkCmdTraceRaysKHR-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support compute operations
---
--- -   #VUID-vkCmdTraceRaysKHR-renderpass# This command /must/ only be
---     called outside of a render pass instance
---
--- -   #VUID-vkCmdTraceRaysKHR-videocoding# This command /must/ only be
---     called outside of a video coding scope
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
--- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | Compute                                                                                                               | Action                                                                                                                                 |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_ray_tracing_pipeline VK_KHR_ray_tracing_pipeline>,
--- 'Vulkan.Core10.Handles.CommandBuffer', 'StridedDeviceAddressRegionKHR'
-cmdTraceRaysKHR :: forall io
-                 . (MonadIO io)
-                => -- | @commandBuffer@ is the command buffer into which the command will be
-                   -- recorded.
-                   CommandBuffer
-                -> -- | @pRaygenShaderBindingTable@ is a 'StridedDeviceAddressRegionKHR' that
-                   -- holds the shader binding table data for the ray generation shader stage.
-                   ("raygenShaderBindingTable" ::: StridedDeviceAddressRegionKHR)
-                -> -- | @pMissShaderBindingTable@ is a 'StridedDeviceAddressRegionKHR' that
-                   -- holds the shader binding table data for the miss shader stage.
-                   ("missShaderBindingTable" ::: StridedDeviceAddressRegionKHR)
-                -> -- | @pHitShaderBindingTable@ is a 'StridedDeviceAddressRegionKHR' that holds
-                   -- the shader binding table data for the hit shader stage.
-                   ("hitShaderBindingTable" ::: StridedDeviceAddressRegionKHR)
-                -> -- | @pCallableShaderBindingTable@ is a 'StridedDeviceAddressRegionKHR' that
-                   -- holds the shader binding table data for the callable shader stage.
-                   ("callableShaderBindingTable" ::: StridedDeviceAddressRegionKHR)
-                -> -- | @width@ is the width of the ray trace query dimensions.
-                   ("width" ::: Word32)
-                -> -- | @height@ is height of the ray trace query dimensions.
-                   ("height" ::: Word32)
-                -> -- | @depth@ is depth of the ray trace query dimensions.
-                   ("depth" ::: Word32)
-                -> io ()
-cmdTraceRaysKHR commandBuffer
-                  raygenShaderBindingTable
-                  missShaderBindingTable
-                  hitShaderBindingTable
-                  callableShaderBindingTable
-                  width
-                  height
-                  depth = liftIO . evalContT $ do
-  let vkCmdTraceRaysKHRPtr = pVkCmdTraceRaysKHR (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCmdTraceRaysKHRPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdTraceRaysKHR is null" Nothing Nothing
-  let vkCmdTraceRaysKHR' = mkVkCmdTraceRaysKHR vkCmdTraceRaysKHRPtr
-  pRaygenShaderBindingTable <- ContT $ withCStruct (raygenShaderBindingTable)
-  pMissShaderBindingTable <- ContT $ withCStruct (missShaderBindingTable)
-  pHitShaderBindingTable <- ContT $ withCStruct (hitShaderBindingTable)
-  pCallableShaderBindingTable <- ContT $ withCStruct (callableShaderBindingTable)
-  lift $ traceAroundEvent "vkCmdTraceRaysKHR" (vkCmdTraceRaysKHR'
-                                                 (commandBufferHandle (commandBuffer))
-                                                 pRaygenShaderBindingTable
-                                                 pMissShaderBindingTable
-                                                 pHitShaderBindingTable
-                                                 pCallableShaderBindingTable
-                                                 (width)
-                                                 (height)
-                                                 (depth))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkGetRayTracingShaderGroupHandlesKHR
-  :: FunPtr (Ptr Device_T -> Pipeline -> Word32 -> Word32 -> CSize -> Ptr () -> IO Result) -> Ptr Device_T -> Pipeline -> Word32 -> Word32 -> CSize -> Ptr () -> IO Result
-
--- | vkGetRayTracingShaderGroupHandlesKHR - Query ray tracing pipeline shader
--- group handles
---
--- = Description
---
--- On success, an array of @groupCount@ shader handles will be written to
--- @pData@, with each element being of size
--- 'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@shaderGroupHandleSize@.
---
--- If @pipeline@ was created with
--- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR'
--- and the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-pipelineLibraryGroupHandles pipelineLibraryGroupHandles>
--- feature is enabled applications /can/ query group handles from that
--- pipeline, even if the pipeline is a library and is never bound to a
--- command buffer. These group handles remain bitwise identical for any
--- @pipeline@ which references the pipeline library. Group indices are
--- assigned as-if the pipeline was created without
--- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR'.
---
--- == Valid Usage
---
--- -   #VUID-vkGetRayTracingShaderGroupHandlesKHR-pipeline-04619#
---     @pipeline@ /must/ be a ray tracing pipeline
---
--- -   #VUID-vkGetRayTracingShaderGroupHandlesKHR-firstGroup-04050#
---     @firstGroup@ /must/ be less than the number of shader groups in
---     @pipeline@
---
--- -   #VUID-vkGetRayTracingShaderGroupHandlesKHR-firstGroup-02419# The sum
---     of @firstGroup@ and @groupCount@ /must/ be less than or equal to the
---     number of shader groups in @pipeline@
---
--- -   #VUID-vkGetRayTracingShaderGroupHandlesKHR-dataSize-02420#
---     @dataSize@ /must/ be at least
---     'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@shaderGroupHandleSize@
---     × @groupCount@
---
--- -   #VUID-vkGetRayTracingShaderGroupHandlesKHR-pipeline-07828# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-pipelineLibraryGroupHandles pipelineLibraryGroupHandles>
---     feature is not enabled, @pipeline@ /must/ not have been created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR'
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkGetRayTracingShaderGroupHandlesKHR-device-parameter#
---     @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
---
--- -   #VUID-vkGetRayTracingShaderGroupHandlesKHR-pipeline-parameter#
---     @pipeline@ /must/ be a valid 'Vulkan.Core10.Handles.Pipeline' handle
---
--- -   #VUID-vkGetRayTracingShaderGroupHandlesKHR-pData-parameter# @pData@
---     /must/ be a valid pointer to an array of @dataSize@ bytes
---
--- -   #VUID-vkGetRayTracingShaderGroupHandlesKHR-dataSize-arraylength#
---     @dataSize@ /must/ be greater than @0@
---
--- -   #VUID-vkGetRayTracingShaderGroupHandlesKHR-pipeline-parent#
---     @pipeline@ /must/ have been created, allocated, or retrieved from
---     @device@
---
--- == Return Codes
---
--- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
---
---     -   'Vulkan.Core10.Enums.Result.SUCCESS'
---
--- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
---
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
---
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_ray_tracing_pipeline VK_KHR_ray_tracing_pipeline>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>,
--- 'Vulkan.Core10.Handles.Device', 'Vulkan.Core10.Handles.Pipeline'
-getRayTracingShaderGroupHandlesKHR :: forall io
-                                    . (MonadIO io)
-                                   => -- | @device@ is the logical device containing the ray tracing pipeline.
-                                      Device
-                                   -> -- | @pipeline@ is the ray tracing pipeline object containing the shaders.
-                                      Pipeline
-                                   -> -- | @firstGroup@ is the index of the first group to retrieve a handle for
-                                      -- from the 'RayTracingPipelineCreateInfoKHR'::@pGroups@ or
-                                      -- 'Vulkan.Extensions.VK_NV_ray_tracing.RayTracingPipelineCreateInfoNV'::@pGroups@
-                                      -- array.
-                                      ("firstGroup" ::: Word32)
-                                   -> -- | @groupCount@ is the number of shader handles to retrieve.
-                                      ("groupCount" ::: Word32)
-                                   -> -- | @dataSize@ is the size in bytes of the buffer pointed to by @pData@.
-                                      ("dataSize" ::: Word64)
-                                   -> -- | @pData@ is a pointer to an application-allocated buffer where the
-                                      -- results will be written.
-                                      ("data" ::: Ptr ())
-                                   -> io ()
-getRayTracingShaderGroupHandlesKHR device
-                                     pipeline
-                                     firstGroup
-                                     groupCount
-                                     dataSize
-                                     data' = liftIO $ do
-  let vkGetRayTracingShaderGroupHandlesKHRPtr = pVkGetRayTracingShaderGroupHandlesKHR (case device of Device{deviceCmds} -> deviceCmds)
-  unless (vkGetRayTracingShaderGroupHandlesKHRPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetRayTracingShaderGroupHandlesKHR is null" Nothing Nothing
-  let vkGetRayTracingShaderGroupHandlesKHR' = mkVkGetRayTracingShaderGroupHandlesKHR vkGetRayTracingShaderGroupHandlesKHRPtr
-  r <- traceAroundEvent "vkGetRayTracingShaderGroupHandlesKHR" (vkGetRayTracingShaderGroupHandlesKHR'
-                                                                  (deviceHandle (device))
-                                                                  (pipeline)
-                                                                  (firstGroup)
-                                                                  (groupCount)
-                                                                  (CSize (dataSize))
-                                                                  (data'))
-  when (r < SUCCESS) (throwIO (VulkanException r))
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkGetRayTracingCaptureReplayShaderGroupHandlesKHR
-  :: FunPtr (Ptr Device_T -> Pipeline -> Word32 -> Word32 -> CSize -> Ptr () -> IO Result) -> Ptr Device_T -> Pipeline -> Word32 -> Word32 -> CSize -> Ptr () -> IO Result
-
--- | vkGetRayTracingCaptureReplayShaderGroupHandlesKHR - Query opaque capture
--- replay data for pipeline shader group handles
---
--- = Description
---
--- On success, an array of @groupCount@ shader handles will be written to
--- @pData@, with each element being of size
--- 'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@shaderGroupHandleCaptureReplaySize@.
---
--- Once queried, this opaque data /can/ be provided at pipeline creation
--- time (in a subsequent execution), using
--- 'RayTracingShaderGroupCreateInfoKHR'::@pShaderGroupCaptureReplayHandle@,
--- as described in
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#ray-tracing-capture-replay Ray Tracing Capture Replay>.
---
--- If @pipeline@ was created with
--- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR'
--- and the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-pipelineLibraryGroupHandles pipelineLibraryGroupHandles>
--- feature is enabled applications /can/ query capture replay group handles
--- from that pipeline. The capture replay handle remains bitwise identical
--- for any @pipeline@ which references the pipeline library. Group indices
--- are assigned as-if the pipeline was created without
--- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR'.
---
--- == Valid Usage
---
--- -   #VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-pipeline-04620#
---     @pipeline@ /must/ be a ray tracing pipeline
---
--- -   #VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-firstGroup-04051#
---     @firstGroup@ /must/ be less than the number of shader groups in
---     @pipeline@
---
--- -   #VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-firstGroup-03483#
---     The sum of @firstGroup@ and @groupCount@ /must/ be less than or
---     equal to the number of shader groups in @pipeline@
---
--- -   #VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-dataSize-03484#
---     @dataSize@ /must/ be at least
---     'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@shaderGroupHandleCaptureReplaySize@
---     × @groupCount@
---
--- -   #VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-rayTracingPipelineShaderGroupHandleCaptureReplay-03606#
---     'PhysicalDeviceRayTracingPipelineFeaturesKHR'::@rayTracingPipelineShaderGroupHandleCaptureReplay@
---     /must/ be enabled to call this function
---
--- -   #VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-pipeline-03607#
---     @pipeline@ /must/ have been created with a @flags@ that included
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR'
---
--- -   #VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-pipeline-07829#
---     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-pipelineLibraryGroupHandles pipelineLibraryGroupHandles>
---     feature is not enabled, @pipeline@ /must/ not have been created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR'
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-device-parameter#
---     @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
---
--- -   #VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-pipeline-parameter#
---     @pipeline@ /must/ be a valid 'Vulkan.Core10.Handles.Pipeline' handle
---
--- -   #VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-pData-parameter#
---     @pData@ /must/ be a valid pointer to an array of @dataSize@ bytes
---
--- -   #VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-dataSize-arraylength#
---     @dataSize@ /must/ be greater than @0@
---
--- -   #VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-pipeline-parent#
---     @pipeline@ /must/ have been created, allocated, or retrieved from
---     @device@
---
--- == Return Codes
---
--- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
---
---     -   'Vulkan.Core10.Enums.Result.SUCCESS'
---
--- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
---
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
---
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_ray_tracing_pipeline VK_KHR_ray_tracing_pipeline>,
--- 'Vulkan.Core10.Handles.Device', 'Vulkan.Core10.Handles.Pipeline'
-getRayTracingCaptureReplayShaderGroupHandlesKHR :: forall io
-                                                 . (MonadIO io)
-                                                => -- | @device@ is the logical device containing the ray tracing pipeline.
-                                                   Device
-                                                -> -- | @pipeline@ is the ray tracing pipeline object containing the shaders.
-                                                   Pipeline
-                                                -> -- | @firstGroup@ is the index of the first group to retrieve a handle for
-                                                   -- from the 'RayTracingPipelineCreateInfoKHR'::@pGroups@ array.
-                                                   ("firstGroup" ::: Word32)
-                                                -> -- | @groupCount@ is the number of shader handles to retrieve.
-                                                   ("groupCount" ::: Word32)
-                                                -> -- | @dataSize@ is the size in bytes of the buffer pointed to by @pData@.
-                                                   ("dataSize" ::: Word64)
-                                                -> -- | @pData@ is a pointer to an application-allocated buffer where the
-                                                   -- results will be written.
-                                                   ("data" ::: Ptr ())
-                                                -> io ()
-getRayTracingCaptureReplayShaderGroupHandlesKHR device
-                                                  pipeline
-                                                  firstGroup
-                                                  groupCount
-                                                  dataSize
-                                                  data' = liftIO $ do
-  let vkGetRayTracingCaptureReplayShaderGroupHandlesKHRPtr = pVkGetRayTracingCaptureReplayShaderGroupHandlesKHR (case device of Device{deviceCmds} -> deviceCmds)
-  unless (vkGetRayTracingCaptureReplayShaderGroupHandlesKHRPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetRayTracingCaptureReplayShaderGroupHandlesKHR is null" Nothing Nothing
-  let vkGetRayTracingCaptureReplayShaderGroupHandlesKHR' = mkVkGetRayTracingCaptureReplayShaderGroupHandlesKHR vkGetRayTracingCaptureReplayShaderGroupHandlesKHRPtr
-  r <- traceAroundEvent "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR" (vkGetRayTracingCaptureReplayShaderGroupHandlesKHR'
-                                                                               (deviceHandle (device))
-                                                                               (pipeline)
-                                                                               (firstGroup)
-                                                                               (groupCount)
-                                                                               (CSize (dataSize))
-                                                                               (data'))
-  when (r < SUCCESS) (throwIO (VulkanException r))
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCreateRayTracingPipelinesKHR
-  :: FunPtr (Ptr Device_T -> DeferredOperationKHR -> PipelineCache -> Word32 -> Ptr (SomeStruct RayTracingPipelineCreateInfoKHR) -> Ptr AllocationCallbacks -> Ptr Pipeline -> IO Result) -> Ptr Device_T -> DeferredOperationKHR -> PipelineCache -> Word32 -> Ptr (SomeStruct RayTracingPipelineCreateInfoKHR) -> Ptr AllocationCallbacks -> Ptr Pipeline -> IO Result
-
--- | vkCreateRayTracingPipelinesKHR - Creates a new ray tracing pipeline
--- object
---
--- = Description
---
--- The 'Vulkan.Core10.Enums.Result.ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS'
--- error is returned if the implementation is unable to reuse the shader
--- group handles provided in
--- 'RayTracingShaderGroupCreateInfoKHR'::@pShaderGroupCaptureReplayHandle@
--- when
--- 'PhysicalDeviceRayTracingPipelineFeaturesKHR'::@rayTracingPipelineShaderGroupHandleCaptureReplay@
--- is enabled.
---
--- Pipelines are created and returned as described for
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-multiple Multiple Pipeline Creation>.
---
--- == Valid Usage
---
--- -   #VUID-vkCreateRayTracingPipelinesKHR-device-09677# @device@ /must/
---     support at least one queue family with the
---     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT' capability
---
--- -   #VUID-vkCreateRayTracingPipelinesKHR-flags-03415# If the @flags@
---     member of any element of @pCreateInfos@ contains the
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'
---     flag, and the @basePipelineIndex@ member of that same element is not
---     @-1@, @basePipelineIndex@ /must/ be less than the index into
---     @pCreateInfos@ that corresponds to that element
---
--- -   #VUID-vkCreateRayTracingPipelinesKHR-flags-03416# If the @flags@
---     member of any element of @pCreateInfos@ contains the
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'
---     flag, the base pipeline /must/ have been created with the
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT'
---     flag set
---
--- -   #VUID-vkCreateRayTracingPipelinesKHR-flags-03816# @flags@ /must/ not
---     contain the
---     'Vulkan.Core11.Promoted_From_VK_KHR_device_group.PIPELINE_CREATE_DISPATCH_BASE'
---     flag
---
--- -   #VUID-vkCreateRayTracingPipelinesKHR-pipelineCache-02903# If
---     @pipelineCache@ was created with
---     '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>
---
--- -   #VUID-vkCreateRayTracingPipelinesKHR-deferredOperation-03678# Any
---     previous deferred operation that was associated with
---     @deferredOperation@ /must/ be complete
---
--- -   #VUID-vkCreateRayTracingPipelinesKHR-pNext-09616# If
---     'Vulkan.Extensions.VK_KHR_pipeline_binary.PipelineBinaryInfoKHR'::@binaryCount@
---     is not @0@ for any element of @pCreateInfos@, @pipelineCache@ /must/
---     be 'Vulkan.Core10.APIConstants.NULL_HANDLE'
---
--- -   #VUID-vkCreateRayTracingPipelinesKHR-pNext-09617# If a
---     'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlags2CreateInfoKHR'
---     structure with the
---     'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR'
---     flag set is included in the @pNext@ chain of any element of
---     @pCreateInfos@, @pipelineCache@ /must/ be
---     'Vulkan.Core10.APIConstants.NULL_HANDLE'
---
--- -   #VUID-vkCreateRayTracingPipelinesKHR-binaryCount-09620# If
---     'Vulkan.Extensions.VK_KHR_pipeline_binary.PipelineBinaryInfoKHR'::@binaryCount@
---     is not @0@ for any element of @pCreateInfos@,
---     'Vulkan.Core13.Enums.PipelineCreationFeedbackFlagBits.PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT'
---     /must/ not be set in the @flags@ of that element
---
--- -   #VUID-vkCreateRayTracingPipelinesKHR-binaryCount-09621# If
---     'Vulkan.Extensions.VK_KHR_pipeline_binary.PipelineBinaryInfoKHR'::@binaryCount@
---     is not @0@ for any element of @pCreateInfos@,
---     'Vulkan.Core13.Enums.PipelineCreationFeedbackFlagBits.PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT'
---     /must/ not be set in the @flags@ of that element
---
--- -   #VUID-vkCreateRayTracingPipelinesKHR-binaryCount-09622# If
---     'Vulkan.Extensions.VK_KHR_pipeline_binary.PipelineBinaryInfoKHR'::@binaryCount@
---     is not @0@ for any element of @pCreateInfos@,
---     'Vulkan.Extensions.VK_EXT_pipeline_creation_cache_control.PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT'
---     /must/ not be set in the @flags@ of that element
---
--- -   #VUID-vkCreateRayTracingPipelinesKHR-rayTracingPipeline-03586# The
---     <https://registry.khronos.org/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'
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCreateRayTracingPipelinesKHR-device-parameter# @device@
---     /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
---
--- -   #VUID-vkCreateRayTracingPipelinesKHR-deferredOperation-parameter# If
---     @deferredOperation@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
---     @deferredOperation@ /must/ be a valid
---     'Vulkan.Extensions.Handles.DeferredOperationKHR' handle
---
--- -   #VUID-vkCreateRayTracingPipelinesKHR-pipelineCache-parameter# If
---     @pipelineCache@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
---     @pipelineCache@ /must/ be a valid
---     'Vulkan.Core10.Handles.PipelineCache' handle
---
--- -   #VUID-vkCreateRayTracingPipelinesKHR-pCreateInfos-parameter#
---     @pCreateInfos@ /must/ be a valid pointer to an array of
---     @createInfoCount@ valid 'RayTracingPipelineCreateInfoKHR' structures
---
--- -   #VUID-vkCreateRayTracingPipelinesKHR-pAllocator-parameter# If
---     @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid pointer
---     to a valid 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'
---     structure
---
--- -   #VUID-vkCreateRayTracingPipelinesKHR-pPipelines-parameter#
---     @pPipelines@ /must/ be a valid pointer to an array of
---     @createInfoCount@ 'Vulkan.Core10.Handles.Pipeline' handles
---
--- -   #VUID-vkCreateRayTracingPipelinesKHR-createInfoCount-arraylength#
---     @createInfoCount@ /must/ be greater than @0@
---
--- -   #VUID-vkCreateRayTracingPipelinesKHR-deferredOperation-parent# If
---     @deferredOperation@ is a valid handle, it /must/ have been created,
---     allocated, or retrieved from @device@
---
--- -   #VUID-vkCreateRayTracingPipelinesKHR-pipelineCache-parent# If
---     @pipelineCache@ is a valid handle, it /must/ have been created,
---     allocated, or retrieved from @device@
---
--- == 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.OPERATION_DEFERRED_KHR'
---
---     -   'Vulkan.Core10.Enums.Result.OPERATION_NOT_DEFERRED_KHR'
---
---     -   '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>]
---
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
---
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
---
---     -   'Vulkan.Core10.Enums.Result.ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS'
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_ray_tracing_pipeline VK_KHR_ray_tracing_pipeline>,
--- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',
--- 'Vulkan.Extensions.Handles.DeferredOperationKHR',
--- 'Vulkan.Core10.Handles.Device', 'Vulkan.Core10.Handles.Pipeline',
--- 'Vulkan.Core10.Handles.PipelineCache', 'RayTracingPipelineCreateInfoKHR'
-createRayTracingPipelinesKHR :: forall io
-                              . (MonadIO io)
-                             => -- | @device@ is the logical device that creates the ray tracing pipelines.
-                                Device
-                             -> -- | @deferredOperation@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE' or the
-                                -- handle of a valid 'Vulkan.Extensions.Handles.DeferredOperationKHR'
-                                -- <https://registry.khronos.org/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://registry.khronos.org/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
-                             -> -- | @pCreateInfos@ is a pointer to an array of
-                                -- 'RayTracingPipelineCreateInfoKHR' structures.
-                                ("createInfos" ::: Vector (SomeStruct RayTracingPipelineCreateInfoKHR))
-                             -> -- | @pAllocator@ controls host memory allocation as described in the
-                                -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
-                                -- chapter.
-                                ("allocator" ::: Maybe AllocationCallbacks)
-                             -> io (Result, ("pipelines" ::: Vector Pipeline))
-createRayTracingPipelinesKHR device
-                               deferredOperation
-                               pipelineCache
-                               createInfos
-                               allocator = liftIO . evalContT $ do
-  let vkCreateRayTracingPipelinesKHRPtr = pVkCreateRayTracingPipelinesKHR (case device of Device{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCreateRayTracingPipelinesKHRPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCreateRayTracingPipelinesKHR is null" Nothing Nothing
-  let vkCreateRayTracingPipelinesKHR' = mkVkCreateRayTracingPipelinesKHR vkCreateRayTracingPipelinesKHRPtr
-  pPCreateInfos <- ContT $ allocaBytes @(RayTracingPipelineCreateInfoKHR _) ((Data.Vector.length (createInfos)) * 104)
-  Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPCreateInfos `plusPtr` (104 * (i)) :: Ptr (RayTracingPipelineCreateInfoKHR _))) (e) . ($ ())) (createInfos)
-  pAllocator <- case (allocator) of
-    Nothing -> pure nullPtr
-    Just j -> ContT $ withCStruct (j)
-  pPPipelines <- ContT $ bracket (callocBytes @Pipeline ((fromIntegral ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32))) * 8)) free
-  r <- lift $ traceAroundEvent "vkCreateRayTracingPipelinesKHR" (vkCreateRayTracingPipelinesKHR'
-                                                                   (deviceHandle (device))
-                                                                   (deferredOperation)
-                                                                   (pipelineCache)
-                                                                   ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32))
-                                                                   (forgetExtensions (pPCreateInfos))
-                                                                   pAllocator
-                                                                   (pPPipelines))
-  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
-  pPipelines <- lift $ generateM (fromIntegral ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32))) (\i -> peek @Pipeline ((pPPipelines `advancePtrBytes` (8 * (i)) :: Ptr Pipeline)))
-  pure $ (r, pPipelines)
-
--- | A convenience wrapper to make a compatible pair of calls to
--- 'createRayTracingPipelinesKHR' and 'destroyPipeline'
---
--- To ensure that 'destroyPipeline' 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.
---
-withRayTracingPipelinesKHR :: forall io r . MonadIO io => Device -> DeferredOperationKHR -> PipelineCache -> Vector (SomeStruct RayTracingPipelineCreateInfoKHR) -> Maybe AllocationCallbacks -> (io (Result, Vector Pipeline) -> ((Result, Vector Pipeline) -> io ()) -> r) -> r
-withRayTracingPipelinesKHR device
-                             deferredOperation
-                             pipelineCache
-                             pCreateInfos
-                             pAllocator
-                             b =
-  b (createRayTracingPipelinesKHR device
-                                    deferredOperation
-                                    pipelineCache
-                                    pCreateInfos
-                                    pAllocator)
-    (\(_, o1) -> traverse_ (\o1Elem -> destroyPipeline device
-                                                         o1Elem
-                                                         pAllocator) o1)
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdTraceRaysIndirectKHR
-  :: FunPtr (Ptr CommandBuffer_T -> Ptr StridedDeviceAddressRegionKHR -> Ptr StridedDeviceAddressRegionKHR -> Ptr StridedDeviceAddressRegionKHR -> Ptr StridedDeviceAddressRegionKHR -> DeviceAddress -> IO ()) -> Ptr CommandBuffer_T -> Ptr StridedDeviceAddressRegionKHR -> Ptr StridedDeviceAddressRegionKHR -> Ptr StridedDeviceAddressRegionKHR -> Ptr StridedDeviceAddressRegionKHR -> DeviceAddress -> IO ()
-
--- | vkCmdTraceRaysIndirectKHR - Initialize an indirect ray tracing dispatch
---
--- = Description
---
--- 'cmdTraceRaysIndirectKHR' behaves similarly to 'cmdTraceRaysKHR' except
--- that the ray trace query dimensions are read by the device from
--- @indirectDeviceAddress@ during execution.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-magFilter-04553# If a
---     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
---     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR',
---     @reductionMode@ equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
---     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-vkCmdTraceRaysIndirectKHR-magFilter-09598# If a
---     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
---     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR' and
---     @reductionMode@ equal to either
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
---     or
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
---     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_MINMAX_BIT'
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-mipmapMode-04770# If a
---     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
---     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR',
---     @reductionMode@ equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
---     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-vkCmdTraceRaysIndirectKHR-mipmapMode-09599# If a
---     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
---     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'
---     and @reductionMode@ equal to either
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
---     or
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
---     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_MINMAX_BIT'
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-unnormalizedCoordinates-09635# If a
---     'Vulkan.Core10.Handles.Sampler' created with
---     @unnormalizedCoordinates@ equal to
---     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
---     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
---     the image view’s @levelCount@ and @layerCount@ /must/ be 1
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-unnormalizedCoordinates-09636# If a
---     'Vulkan.Core10.Handles.Sampler' created with
---     @unnormalizedCoordinates@ equal to
---     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
---     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
---     the image view’s @viewType@ /must/ be
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D' or
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D'
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-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-vkCmdTraceRaysIndirectKHR-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-vkCmdTraceRaysIndirectKHR-None-07888# If a
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'
---     descriptor is accessed using atomic operations as a result of this
---     command, then the storage texel buffer’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-buffer-view-format-features format features>
---     /must/ contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT'
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-None-02692# If a
---     'Vulkan.Core10.Handles.ImageView' is sampled with
---     'Vulkan.Core10.Enums.Filter.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.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-None-02693# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_filter_cubic VK_EXT_filter_cubic>
---     extension is not enabled and any 'Vulkan.Core10.Handles.ImageView'
---     is sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as a
---     result of this command, it /must/ not have a
---     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' of
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE', or
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY'
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-filterCubic-02694# Any
---     'Vulkan.Core10.Handles.ImageView' being sampled with
---     'Vulkan.Core10.Enums.Filter.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-vkCmdTraceRaysIndirectKHR-filterCubicMinmax-02695# Any
---     'Vulkan.Core10.Handles.ImageView' being sampled with
---     'Vulkan.Core10.Enums.Filter.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-vkCmdTraceRaysIndirectKHR-cubicRangeClamp-09212# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-cubicRangeClamp cubicRangeClamp>
---     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
---     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
---     a result of this command /must/ not have a
---     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
---     equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-reductionMode-09213# Any
---     'Vulkan.Core10.Handles.ImageView' being sampled with a
---     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
---     equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
---     as a result of this command /must/ sample with
---     'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT'
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-selectableCubicWeights-09214# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-selectableCubicWeights selectableCubicWeights>
---     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
---     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
---     a result of this command /must/ have
---     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.SamplerCubicWeightsCreateInfoQCOM'::@cubicWeights@
---     equal to
---     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM'
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-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-vkCmdTraceRaysIndirectKHR-OpTypeImage-07027# For any
---     'Vulkan.Core10.Handles.ImageView' being written as a storage image
---     where the image format field of the @OpTypeImage@ is @Unknown@, the
---     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_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-OpTypeImage-07028# For any
---     'Vulkan.Core10.Handles.ImageView' being read as a storage image
---     where the image format field of the @OpTypeImage@ is @Unknown@, the
---     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_STORAGE_READ_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-OpTypeImage-07029# For any
---     'Vulkan.Core10.Handles.BufferView' being written as a storage texel
---     buffer where the image format field of the @OpTypeImage@ is
---     @Unknown@, the view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
---     /must/ contain
---     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-OpTypeImage-07030# Any
---     'Vulkan.Core10.Handles.BufferView' being read as a storage texel
---     buffer where the image format field of the @OpTypeImage@ is
---     @Unknown@ then the view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
---     /must/ contain
---     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-None-08600# For each set /n/ that is
---     statically used by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     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' or the
---     'Vulkan.Core10.Handles.DescriptorSetLayout' array used to create the
---     current 'Vulkan.Extensions.Handles.ShaderEXT' , as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-None-08601# For each push constant
---     that is statically used by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     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' or the
---     'Vulkan.Core10.Handles.DescriptorSetLayout' array used to create the
---     current 'Vulkan.Extensions.Handles.ShaderEXT' , as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-None-10068# For each array of
---     resources that is used by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     the indices used to access members of the array /must/ be less than
---     the descriptor count for the identified binding in the descriptor
---     sets used by this command
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-maintenance4-08602# 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
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     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' or the
---     'Vulkan.Core10.Handles.DescriptorSetLayout' and
---     'Vulkan.Core10.PipelineLayout.PushConstantRange' arrays used to
---     create the current 'Vulkan.Extensions.Handles.ShaderEXT' , as
---     described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-None-08114# Descriptors in each
---     bound descriptor set, specified via
---     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
---     be valid as described by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
---     if they are statically used by the 'Vulkan.Core10.Handles.Pipeline'
---     bound to the pipeline bind point used by this command and the bound
---     'Vulkan.Core10.Handles.Pipeline' was not created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-None-08115# If the descriptors used
---     by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
---     point were specified via
---     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', the
---     bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
---     without
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-None-08116# Descriptors in bound
---     descriptor buffers, specified via
---     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
---     /must/ be valid if they are dynamically used by the
---     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
---     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
---     was created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-None-08604# Descriptors in bound
---     descriptor buffers, specified via
---     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
---     /must/ be valid if they are dynamically used by any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     to the pipeline bind point used by this command
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-None-08117# If the descriptors used
---     by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
---     point were specified via
---     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
---     the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
---     with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-None-08119# If a descriptor is
---     dynamically used with a 'Vulkan.Core10.Handles.Pipeline' created
---     with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
---     the descriptor memory /must/ be resident
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-None-08605# If a descriptor is
---     dynamically used with a 'Vulkan.Extensions.Handles.ShaderEXT'
---     created with a 'Vulkan.Core10.Handles.DescriptorSetLayout' that was
---     created with
---     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
---     the descriptor memory /must/ be resident
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-None-08606# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject>
---     feature is not enabled, a valid pipeline /must/ be bound to the
---     pipeline bind point used by this command
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-None-08608# If a pipeline is bound
---     to the pipeline bind point used by this command, there /must/ not
---     have been any calls to dynamic state setting commands for any state
---     specified statically in the 'Vulkan.Core10.Handles.Pipeline' object
---     bound to the pipeline bind point used by this command, since that
---     pipeline was bound
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-None-08609# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command or any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdTraceRaysIndirectKHR-None-08610# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command or any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdTraceRaysIndirectKHR-None-08611# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command or any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdTraceRaysIndirectKHR-None-08607# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject>
---     feature is enabled, either a valid pipeline /must/ be bound to the
---     pipeline bind point used by this command, or a valid combination of
---     valid and 'Vulkan.Core10.APIConstants.NULL_HANDLE' shader objects
---     /must/ be bound to every supported shader stage corresponding to the
---     pipeline bind point used by this command
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-uniformBuffers-06935# If any stage
---     of the 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline
---     bind point used by this command accesses a uniform buffer, and that
---     stage was created without enabling either
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT'
---     or
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT'
---     for @uniformBuffers@, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, that stage /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-vkCmdTraceRaysIndirectKHR-None-08612# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, and any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdTraceRaysIndirectKHR-storageBuffers-06936# If any stage
---     of the 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline
---     bind point used by this command accesses a storage buffer, and that
---     stage was created without enabling either
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT'
---     or
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT'
---     for @storageBuffers@, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, that stage /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-vkCmdTraceRaysIndirectKHR-None-08613# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, and any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdTraceRaysIndirectKHR-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
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shaders>
---     /must/ not be a protected resource
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-None-06550# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
---     accesses a 'Vulkan.Core10.Handles.Sampler' or
---     'Vulkan.Core10.Handles.ImageView' object that enables
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,
---     that object /must/ only be used with @OpImageSample*@ or
---     @OpImageSparseSample*@ instructions
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-ConstOffset-06551# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
---     accesses a 'Vulkan.Core10.Handles.Sampler' or
---     'Vulkan.Core10.Handles.ImageView' object that enables
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,
---     that object /must/ not use the @ConstOffset@ and @Offset@ operands
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-viewType-07752# If a
---     'Vulkan.Core10.Handles.ImageView' is accessed as a result of this
---     command, then the image view’s @viewType@ /must/ match the @Dim@
---     operand of the @OpTypeImage@ as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-image-dimensions ???>
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-format-07753# If a
---     'Vulkan.Core10.Handles.ImageView' is accessed as a result of this
---     command, then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-numericformat numeric type>
---     of the image view’s @format@ and the @Sampled@ @Type@ operand of the
---     @OpTypeImage@ /must/ match
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-OpImageWrite-08795# If a
---     'Vulkan.Core10.Handles.ImageView' created with a format other than
---     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM_KHR' 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-vkCmdTraceRaysIndirectKHR-OpImageWrite-08796# If a
---     'Vulkan.Core10.Handles.ImageView' created with the format
---     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM_KHR' is accessed using
---     @OpImageWrite@ as a result of this command, then the @Type@ of the
---     @Texel@ operand of that instruction /must/ have four components
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-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-vkCmdTraceRaysIndirectKHR-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-vkCmdTraceRaysIndirectKHR-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-vkCmdTraceRaysIndirectKHR-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-vkCmdTraceRaysIndirectKHR-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-vkCmdTraceRaysIndirectKHR-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-vkCmdTraceRaysIndirectKHR-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-vkCmdTraceRaysIndirectKHR-OpImageWeightedSampleQCOM-06971# If
---     @OpImageWeightedSampleQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM'
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-OpImageWeightedSampleQCOM-06972# If
---     @OpImageWeightedSampleQCOM@ uses a 'Vulkan.Core10.Handles.ImageView'
---     as a sample weight image 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM'
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-OpImageBoxFilterQCOM-06973# If
---     @OpImageBoxFilterQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM'
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-OpImageBlockMatchSSDQCOM-06974# If
---     @OpImageBlockMatchSSDQCOM@ is used to read from an
---     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-OpImageBlockMatchSADQCOM-06975# If
---     @OpImageBlockMatchSADQCOM@ is used to read from an
---     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-OpImageBlockMatchSADQCOM-06976# If
---     @OpImageBlockMatchSADQCOM@ or OpImageBlockMatchSSDQCOM is used to
---     read from a reference image as result of this command, then the
---     specified reference coordinates /must/ not fail
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-OpImageWeightedSampleQCOM-06977# If
---     @OpImageWeightedSampleQCOM@, @OpImageBoxFilterQCOM@,
---     @OpImageBlockMatchWindowSSDQCOM@, @OpImageBlockMatchWindowSADQCOM@,
---     @OpImageBlockMatchGatherSSDQCOM@, @OpImageBlockMatchGatherSADQCOM@,
---     @OpImageBlockMatchSSDQCOM@, or @OpImageBlockMatchSADQCOM@ uses a
---     'Vulkan.Core10.Handles.Sampler' as a result of this command, then
---     the sampler /must/ have been created with
---     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-OpImageWeightedSampleQCOM-06978# If
---     any command other than @OpImageWeightedSampleQCOM@,
---     @OpImageBoxFilterQCOM@, @OpImageBlockMatchWindowSSDQCOM@,
---     @OpImageBlockMatchWindowSADQCOM@, @OpImageBlockMatchGatherSSDQCOM@,
---     @OpImageBlockMatchGatherSADQCOM@, @OpImageBlockMatchSSDQCOM@, or
---     @OpImageBlockMatchSADQCOM@ uses a 'Vulkan.Core10.Handles.Sampler' as
---     a result of this command, then the sampler /must/ not have been
---     created with
---     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-OpImageBlockMatchWindow-09215# If a
---     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
---     instruction is used to read from an
---     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-OpImageBlockMatchWindow-09216# If a
---     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
---     instruction is used to read from an
---     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
---     the image view’s format /must/ be a single-component format
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-OpImageBlockMatchWindow-09217# If a
---     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
---     read from a reference image as result of this command, then the
---     specified reference coordinates /must/ not fail
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-None-07288# Any shader invocation
---     executed by this command /must/
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-termination terminate>
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-None-09600# If a descriptor with
---     type equal to any of
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM',
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM',
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',
---     or
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'
---     is accessed as a result of this command, the image subresource
---     identified by that descriptor /must/ be in the image layout
---     identified when the descriptor was written
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-None-03429# Any shader group handle
---     referenced by this call /must/ have been queried from the bound ray
---     tracing pipeline
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-None-09458# If the bound ray tracing
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR'
---     dynamic state enabled then 'cmdSetRayTracingPipelineStackSizeKHR'
---     /must/ have been called in the current command buffer prior to this
---     trace command
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-maxPipelineRayRecursionDepth-03679#
---     This command /must/ not cause a shader call 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>
---     greater than the value of @maxPipelineRayRecursionDepth@ used to
---     create the bound ray tracing pipeline
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-03635# @commandBuffer@
---     /must/ not be a protected command buffer
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-size-04023# The @size@ member of
---     @pRayGenShaderBindingTable@ /must/ be equal to its @stride@ member
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-pRayGenShaderBindingTable-03680# If
---     the buffer from which @pRayGenShaderBindingTable->deviceAddress@ was
---     queried is non-sparse then it /must/ be bound completely and
---     contiguously to a single 'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-pRayGenShaderBindingTable-03681# The
---     buffer from which the @pRayGenShaderBindingTable->deviceAddress@ is
---     queried /must/ have been created with the
---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR'
---     usage flag
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-pRayGenShaderBindingTable-03682#
---     @pRayGenShaderBindingTable->deviceAddress@ /must/ be a multiple of
---     'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@shaderGroupBaseAlignment@
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-pMissShaderBindingTable-03683# If
---     the buffer from which @pMissShaderBindingTable->deviceAddress@ was
---     queried is non-sparse then it /must/ be bound completely and
---     contiguously to a single 'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-pMissShaderBindingTable-03684# The
---     buffer from which the @pMissShaderBindingTable->deviceAddress@ is
---     queried /must/ have been created with the
---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR'
---     usage flag
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-pMissShaderBindingTable-03685#
---     @pMissShaderBindingTable->deviceAddress@ /must/ be a multiple of
---     'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@shaderGroupBaseAlignment@
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-stride-03686#
---     @pMissShaderBindingTable->stride@ /must/ be a multiple of
---     'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@shaderGroupHandleAlignment@
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-stride-04029#
---     @pMissShaderBindingTable->stride@ /must/ be less than or equal to
---     'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@maxShaderGroupStride@
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-pHitShaderBindingTable-03687# If the
---     buffer from which @pHitShaderBindingTable->deviceAddress@ was
---     queried is non-sparse then it /must/ be bound completely and
---     contiguously to a single 'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-pHitShaderBindingTable-03688# The
---     buffer from which the @pHitShaderBindingTable->deviceAddress@ is
---     queried /must/ have been created with the
---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR'
---     usage flag
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-pHitShaderBindingTable-03689#
---     @pHitShaderBindingTable->deviceAddress@ /must/ be a multiple of
---     'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@shaderGroupBaseAlignment@
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-stride-03690#
---     @pHitShaderBindingTable->stride@ /must/ be a multiple of
---     'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@shaderGroupHandleAlignment@
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-stride-04035#
---     @pHitShaderBindingTable->stride@ /must/ be less than or equal to
---     'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@maxShaderGroupStride@
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-pCallableShaderBindingTable-03691#
---     If the buffer from which
---     @pCallableShaderBindingTable->deviceAddress@ was queried is
---     non-sparse then it /must/ be bound completely and contiguously to a
---     single 'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-pCallableShaderBindingTable-03692#
---     The buffer from which the
---     @pCallableShaderBindingTable->deviceAddress@ is queried /must/ have
---     been created with the
---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR'
---     usage flag
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-pCallableShaderBindingTable-03693#
---     @pCallableShaderBindingTable->deviceAddress@ /must/ be a multiple of
---     'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@shaderGroupBaseAlignment@
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-stride-03694#
---     @pCallableShaderBindingTable->stride@ /must/ be a multiple of
---     'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@shaderGroupHandleAlignment@
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-stride-04041#
---     @pCallableShaderBindingTable->stride@ /must/ be less than or equal
---     to
---     'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@maxShaderGroupStride@
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-flags-03696# If the bound ray
---     tracing pipeline was created with @flags@ that included
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR',
---     @pHitShaderBindingTable->deviceAddress@ /must/ not be zero
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-flags-03697# If the bound ray
---     tracing pipeline was created with @flags@ that included
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR',
---     @pHitShaderBindingTable->deviceAddress@ /must/ not be zero
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-flags-03511# If the bound ray
---     tracing pipeline was created with @flags@ that included
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR',
---     the shader group handle identified by
---     @pMissShaderBindingTable->deviceAddress@ /must/ not be zero
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-flags-03512# If the bound ray
---     tracing pipeline was created with @flags@ that included
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR',
---     entries in the table identified by
---     @pHitShaderBindingTable->deviceAddress@ accessed as a result of this
---     command in order to execute an any-hit shader /must/ not be zero
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-flags-03513# If the bound ray
---     tracing pipeline was created with @flags@ that included
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR',
---     entries in the table identified by
---     @pHitShaderBindingTable->deviceAddress@ accessed as a result of this
---     command in order to execute a closest hit shader /must/ not be zero
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-flags-03514# If the bound ray
---     tracing pipeline was created with @flags@ that included
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR',
---     entries in the table identified by
---     @pHitShaderBindingTable->deviceAddress@ accessed as a result of this
---     command in order to execute an intersection shader /must/ not be
---     zero
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-pHitShaderBindingTable-04735# Any
---     non-zero hit shader group entries in the table identified by
---     @pHitShaderBindingTable->deviceAddress@ accessed by this call from a
---     geometry with a @geometryType@ of
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.GEOMETRY_TYPE_TRIANGLES_KHR'
---     /must/ have been created with
---     'RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR'
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-pHitShaderBindingTable-04736# Any
---     non-zero hit shader group entries in the table identified by
---     @pHitShaderBindingTable->deviceAddress@ accessed by this call from a
---     geometry with a @geometryType@ of
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.GEOMETRY_TYPE_AABBS_KHR'
---     /must/ have been created with
---     'RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR'
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-indirectDeviceAddress-03632# If the
---     buffer from which @indirectDeviceAddress@ was queried is non-sparse
---     then it /must/ be bound completely and contiguously to a single
---     'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-indirectDeviceAddress-03633# The
---     buffer from which @indirectDeviceAddress@ was queried /must/ have
---     been created with the
---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'
---     bit set
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-indirectDeviceAddress-03634#
---     @indirectDeviceAddress@ /must/ be a multiple of @4@
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-indirectDeviceAddress-03636# All
---     device addresses between @indirectDeviceAddress@ and
---     @indirectDeviceAddress@ + @sizeof@('TraceRaysIndirectCommandKHR') -
---     1 /must/ be in the buffer device address range of the same buffer
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-rayTracingPipelineTraceRaysIndirect-03637#
---     The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayTracingPipelineTraceRaysIndirect rayTracingPipelineTraceRaysIndirect>
---     feature /must/ be enabled
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-rayTracingMotionBlurPipelineTraceRaysIndirect-04951#
---     If the bound ray tracing pipeline was created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV'
---     'Vulkan.Extensions.VK_NV_ray_tracing_motion_blur.PhysicalDeviceRayTracingMotionBlurFeaturesNV'::@rayTracingMotionBlurPipelineTraceRaysIndirect@
---     feature /must/ be enabled
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-pRaygenShaderBindingTable-parameter#
---     @pRaygenShaderBindingTable@ /must/ be a valid pointer to a valid
---     'StridedDeviceAddressRegionKHR' structure
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-pMissShaderBindingTable-parameter#
---     @pMissShaderBindingTable@ /must/ be a valid pointer to a valid
---     'StridedDeviceAddressRegionKHR' structure
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-pHitShaderBindingTable-parameter#
---     @pHitShaderBindingTable@ /must/ be a valid pointer to a valid
---     'StridedDeviceAddressRegionKHR' structure
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-pCallableShaderBindingTable-parameter#
---     @pCallableShaderBindingTable@ /must/ be a valid pointer to a valid
---     'StridedDeviceAddressRegionKHR' structure
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-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-vkCmdTraceRaysIndirectKHR-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support compute operations
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-renderpass# This command /must/ only
---     be called outside of a render pass instance
---
--- -   #VUID-vkCmdTraceRaysIndirectKHR-videocoding# This command /must/
---     only be called outside of a video coding scope
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
--- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | Compute                                                                                                               | Action                                                                                                                                 |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_ray_tracing_pipeline VK_KHR_ray_tracing_pipeline>,
--- 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.FundamentalTypes.DeviceAddress',
--- 'StridedDeviceAddressRegionKHR'
-cmdTraceRaysIndirectKHR :: forall io
-                         . (MonadIO io)
-                        => -- | @commandBuffer@ is the command buffer into which the command will be
-                           -- recorded.
-                           CommandBuffer
-                        -> -- | @pRaygenShaderBindingTable@ is a 'StridedDeviceAddressRegionKHR' that
-                           -- holds the shader binding table data for the ray generation shader stage.
-                           ("raygenShaderBindingTable" ::: StridedDeviceAddressRegionKHR)
-                        -> -- | @pMissShaderBindingTable@ is a 'StridedDeviceAddressRegionKHR' that
-                           -- holds the shader binding table data for the miss shader stage.
-                           ("missShaderBindingTable" ::: StridedDeviceAddressRegionKHR)
-                        -> -- | @pHitShaderBindingTable@ is a 'StridedDeviceAddressRegionKHR' that holds
-                           -- the shader binding table data for the hit shader stage.
-                           ("hitShaderBindingTable" ::: StridedDeviceAddressRegionKHR)
-                        -> -- | @pCallableShaderBindingTable@ is a 'StridedDeviceAddressRegionKHR' that
-                           -- holds the shader binding table data for the callable shader stage.
-                           ("callableShaderBindingTable" ::: StridedDeviceAddressRegionKHR)
-                        -> -- | @indirectDeviceAddress@ is a buffer device address which is a pointer to
-                           -- a 'TraceRaysIndirectCommandKHR' structure containing the trace ray
-                           -- parameters.
-                           ("indirectDeviceAddress" ::: DeviceAddress)
-                        -> io ()
-cmdTraceRaysIndirectKHR commandBuffer
-                          raygenShaderBindingTable
-                          missShaderBindingTable
-                          hitShaderBindingTable
-                          callableShaderBindingTable
-                          indirectDeviceAddress = liftIO . evalContT $ do
-  let vkCmdTraceRaysIndirectKHRPtr = pVkCmdTraceRaysIndirectKHR (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCmdTraceRaysIndirectKHRPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdTraceRaysIndirectKHR is null" Nothing Nothing
-  let vkCmdTraceRaysIndirectKHR' = mkVkCmdTraceRaysIndirectKHR vkCmdTraceRaysIndirectKHRPtr
-  pRaygenShaderBindingTable <- ContT $ withCStruct (raygenShaderBindingTable)
-  pMissShaderBindingTable <- ContT $ withCStruct (missShaderBindingTable)
-  pHitShaderBindingTable <- ContT $ withCStruct (hitShaderBindingTable)
-  pCallableShaderBindingTable <- ContT $ withCStruct (callableShaderBindingTable)
-  lift $ traceAroundEvent "vkCmdTraceRaysIndirectKHR" (vkCmdTraceRaysIndirectKHR'
-                                                         (commandBufferHandle (commandBuffer))
-                                                         pRaygenShaderBindingTable
-                                                         pMissShaderBindingTable
-                                                         pHitShaderBindingTable
-                                                         pCallableShaderBindingTable
-                                                         (indirectDeviceAddress))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkGetRayTracingShaderGroupStackSizeKHR
-  :: FunPtr (Ptr Device_T -> Pipeline -> Word32 -> ShaderGroupShaderKHR -> IO DeviceSize) -> Ptr Device_T -> Pipeline -> Word32 -> ShaderGroupShaderKHR -> IO DeviceSize
-
--- | vkGetRayTracingShaderGroupStackSizeKHR - Query ray tracing pipeline
--- shader group shader stack size
---
--- = Description
---
--- The return value is the ray tracing pipeline stack size in bytes for the
--- specified shader as called from the specified shader group.
---
--- == Valid Usage
---
--- -   #VUID-vkGetRayTracingShaderGroupStackSizeKHR-pipeline-04622#
---     @pipeline@ /must/ be a ray tracing pipeline
---
--- -   #VUID-vkGetRayTracingShaderGroupStackSizeKHR-group-03608# The value
---     of @group@ /must/ be less than the number of shader groups in
---     @pipeline@
---
--- -   #VUID-vkGetRayTracingShaderGroupStackSizeKHR-groupShader-03609# The
---     shader identified by @groupShader@ in @group@ /must/ not be
---     'Vulkan.Core10.APIConstants.SHADER_UNUSED_KHR'
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkGetRayTracingShaderGroupStackSizeKHR-device-parameter#
---     @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
---
--- -   #VUID-vkGetRayTracingShaderGroupStackSizeKHR-pipeline-parameter#
---     @pipeline@ /must/ be a valid 'Vulkan.Core10.Handles.Pipeline' handle
---
--- -   #VUID-vkGetRayTracingShaderGroupStackSizeKHR-groupShader-parameter#
---     @groupShader@ /must/ be a valid 'ShaderGroupShaderKHR' value
---
--- -   #VUID-vkGetRayTracingShaderGroupStackSizeKHR-pipeline-parent#
---     @pipeline@ /must/ have been created, allocated, or retrieved from
---     @device@
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_ray_tracing_pipeline VK_KHR_ray_tracing_pipeline>,
--- 'Vulkan.Core10.Handles.Device', 'Vulkan.Core10.Handles.Pipeline',
--- 'ShaderGroupShaderKHR'
-getRayTracingShaderGroupStackSizeKHR :: forall io
-                                      . (MonadIO io)
-                                     => -- | @device@ is the logical device containing the ray tracing pipeline.
-                                        Device
-                                     -> -- | @pipeline@ is the ray tracing pipeline object containing the shaders
-                                        -- groups.
-                                        Pipeline
-                                     -> -- | @group@ is the index of the shader group to query.
-                                        ("group" ::: Word32)
-                                     -> -- | @groupShader@ is the type of shader from the group to query.
-                                        ShaderGroupShaderKHR
-                                     -> io (DeviceSize)
-getRayTracingShaderGroupStackSizeKHR device
-                                       pipeline
-                                       group
-                                       groupShader = liftIO $ do
-  let vkGetRayTracingShaderGroupStackSizeKHRPtr = pVkGetRayTracingShaderGroupStackSizeKHR (case device of Device{deviceCmds} -> deviceCmds)
-  unless (vkGetRayTracingShaderGroupStackSizeKHRPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetRayTracingShaderGroupStackSizeKHR is null" Nothing Nothing
-  let vkGetRayTracingShaderGroupStackSizeKHR' = mkVkGetRayTracingShaderGroupStackSizeKHR vkGetRayTracingShaderGroupStackSizeKHRPtr
-  r <- traceAroundEvent "vkGetRayTracingShaderGroupStackSizeKHR" (vkGetRayTracingShaderGroupStackSizeKHR'
-                                                                    (deviceHandle (device))
-                                                                    (pipeline)
-                                                                    (group)
-                                                                    (groupShader))
-  pure $ (r)
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdSetRayTracingPipelineStackSizeKHR
-  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> IO ()
-
--- | vkCmdSetRayTracingPipelineStackSizeKHR - Set the stack size dynamically
--- for a ray tracing pipeline
---
--- = Description
---
--- This command sets the stack size for subsequent ray tracing commands
--- when the ray tracing pipeline is created with
--- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR'
--- set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
--- Otherwise, the stack size is computed as described in
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#ray-tracing-pipeline-stack Ray Tracing Pipeline Stack>.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdSetRayTracingPipelineStackSizeKHR-pipelineStackSize-03610#
---     @pipelineStackSize@ /must/ be large enough for any dynamic execution
---     through the shaders in the ray tracing pipeline used by a subsequent
---     trace call
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdSetRayTracingPipelineStackSizeKHR-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdSetRayTracingPipelineStackSizeKHR-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-vkCmdSetRayTracingPipelineStackSizeKHR-commandBuffer-cmdpool#
---     The 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support compute operations
---
--- -   #VUID-vkCmdSetRayTracingPipelineStackSizeKHR-renderpass# This
---     command /must/ only be called outside of a render pass instance
---
--- -   #VUID-vkCmdSetRayTracingPipelineStackSizeKHR-videocoding# This
---     command /must/ only be called outside of a video coding scope
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
--- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | Compute                                                                                                               | State                                                                                                                                  |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_ray_tracing_pipeline VK_KHR_ray_tracing_pipeline>,
--- 'Vulkan.Core10.Handles.CommandBuffer'
-cmdSetRayTracingPipelineStackSizeKHR :: forall io
-                                      . (MonadIO io)
-                                     => -- | @commandBuffer@ is the command buffer into which the command will be
-                                        -- recorded.
-                                        CommandBuffer
-                                     -> -- | @pipelineStackSize@ is the stack size to use for subsequent ray tracing
-                                        -- trace commands.
-                                        ("pipelineStackSize" ::: Word32)
-                                     -> io ()
-cmdSetRayTracingPipelineStackSizeKHR commandBuffer
-                                       pipelineStackSize = liftIO $ do
-  let vkCmdSetRayTracingPipelineStackSizeKHRPtr = pVkCmdSetRayTracingPipelineStackSizeKHR (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  unless (vkCmdSetRayTracingPipelineStackSizeKHRPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetRayTracingPipelineStackSizeKHR is null" Nothing Nothing
-  let vkCmdSetRayTracingPipelineStackSizeKHR' = mkVkCmdSetRayTracingPipelineStackSizeKHR vkCmdSetRayTracingPipelineStackSizeKHRPtr
-  traceAroundEvent "vkCmdSetRayTracingPipelineStackSizeKHR" (vkCmdSetRayTracingPipelineStackSizeKHR'
-                                                               (commandBufferHandle (commandBuffer))
-                                                               (pipelineStackSize))
-  pure $ ()
-
-
--- | VkRayTracingShaderGroupCreateInfoKHR - Structure specifying shaders in a
--- shader group
---
--- = Description
---
--- If the pipeline is created with
--- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR'
--- and the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-pipelineLibraryGroupHandles pipelineLibraryGroupHandles>
--- feature is enabled, @pShaderGroupCaptureReplayHandle@ is inherited by
--- all pipelines which link against this pipeline and remains bitwise
--- identical for any pipeline which references this pipeline library.
---
--- == Valid Usage
---
--- -   #VUID-VkRayTracingShaderGroupCreateInfoKHR-type-03474# If @type@ is
---     'RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR' then @generalShader@
---     /must/ be a valid index into
---     'RayTracingPipelineCreateInfoKHR'::@pStages@ referring to a shader
---     of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_RAYGEN_BIT_KHR',
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MISS_BIT_KHR',
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_CALLABLE_BIT_KHR'
---
--- -   #VUID-VkRayTracingShaderGroupCreateInfoKHR-type-03475# If @type@ is
---     'RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR' then @closestHitShader@,
---     @anyHitShader@, and @intersectionShader@ /must/ be
---     'Vulkan.Core10.APIConstants.SHADER_UNUSED_KHR'
---
--- -   #VUID-VkRayTracingShaderGroupCreateInfoKHR-type-03476# If @type@ is
---     'RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR' then
---     @intersectionShader@ /must/ be a valid index into
---     'RayTracingPipelineCreateInfoKHR'::@pStages@ referring to a shader
---     of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_INTERSECTION_BIT_KHR'
---
--- -   #VUID-VkRayTracingShaderGroupCreateInfoKHR-type-03477# If @type@ is
---     'RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR' then
---     @intersectionShader@ /must/ be
---     'Vulkan.Core10.APIConstants.SHADER_UNUSED_KHR'
---
--- -   #VUID-VkRayTracingShaderGroupCreateInfoKHR-closestHitShader-03478#
---     @closestHitShader@ /must/ be either
---     'Vulkan.Core10.APIConstants.SHADER_UNUSED_KHR' or a valid index into
---     'RayTracingPipelineCreateInfoKHR'::@pStages@ referring to a shader
---     of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_CLOSEST_HIT_BIT_KHR'
---
--- -   #VUID-VkRayTracingShaderGroupCreateInfoKHR-anyHitShader-03479#
---     @anyHitShader@ /must/ be either
---     'Vulkan.Core10.APIConstants.SHADER_UNUSED_KHR' or a valid index into
---     'RayTracingPipelineCreateInfoKHR'::@pStages@ referring to a shader
---     of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_ANY_HIT_BIT_KHR'
---
--- -   #VUID-VkRayTracingShaderGroupCreateInfoKHR-rayTracingPipelineShaderGroupHandleCaptureReplayMixed-03603#
---     If
---     'PhysicalDeviceRayTracingPipelineFeaturesKHR'::@rayTracingPipelineShaderGroupHandleCaptureReplayMixed@
---     is 'Vulkan.Core10.FundamentalTypes.FALSE' then
---     @pShaderGroupCaptureReplayHandle@ /must/ not be provided if it has
---     not been provided on a previous call to ray tracing pipeline
---     creation
---
--- -   #VUID-VkRayTracingShaderGroupCreateInfoKHR-rayTracingPipelineShaderGroupHandleCaptureReplayMixed-03604#
---     If
---     'PhysicalDeviceRayTracingPipelineFeaturesKHR'::@rayTracingPipelineShaderGroupHandleCaptureReplayMixed@
---     is 'Vulkan.Core10.FundamentalTypes.FALSE' then the caller /must/
---     guarantee that no ray tracing pipeline creation commands with
---     @pShaderGroupCaptureReplayHandle@ provided execute simultaneously
---     with ray tracing pipeline creation commands without
---     @pShaderGroupCaptureReplayHandle@ provided
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkRayTracingShaderGroupCreateInfoKHR-sType-sType# @sType@
---     /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR'
---
--- -   #VUID-VkRayTracingShaderGroupCreateInfoKHR-pNext-pNext# @pNext@
---     /must/ be @NULL@
---
--- -   #VUID-VkRayTracingShaderGroupCreateInfoKHR-type-parameter# @type@
---     /must/ be a valid 'RayTracingShaderGroupTypeKHR' value
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_ray_tracing_pipeline VK_KHR_ray_tracing_pipeline>,
--- 'RayTracingPipelineCreateInfoKHR', 'RayTracingShaderGroupTypeKHR',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data RayTracingShaderGroupCreateInfoKHR = RayTracingShaderGroupCreateInfoKHR
-  { -- | @type@ is the type of hit group specified in this structure.
-    type' :: RayTracingShaderGroupTypeKHR
-  , -- | @generalShader@ is the index of the ray generation, miss, or callable
-    -- shader from 'RayTracingPipelineCreateInfoKHR'::@pStages@ in the group if
-    -- the shader group has @type@ of
-    -- 'RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR', and
-    -- 'Vulkan.Core10.APIConstants.SHADER_UNUSED_KHR' otherwise.
-    generalShader :: Word32
-  , -- | @closestHitShader@ is the optional index of the closest hit shader from
-    -- 'RayTracingPipelineCreateInfoKHR'::@pStages@ in the group if the shader
-    -- group has @type@ of
-    -- 'RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR' or
-    -- 'RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR', and
-    -- 'Vulkan.Core10.APIConstants.SHADER_UNUSED_KHR' otherwise.
-    closestHitShader :: Word32
-  , -- | @anyHitShader@ is the optional index of the any-hit shader from
-    -- 'RayTracingPipelineCreateInfoKHR'::@pStages@ in the group if the shader
-    -- group has @type@ of
-    -- 'RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR' or
-    -- 'RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR', and
-    -- 'Vulkan.Core10.APIConstants.SHADER_UNUSED_KHR' otherwise.
-    anyHitShader :: Word32
-  , -- | @intersectionShader@ is the index of the intersection shader from
-    -- 'RayTracingPipelineCreateInfoKHR'::@pStages@ in the group if the shader
-    -- group has @type@ of
-    -- 'RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR', and
-    -- 'Vulkan.Core10.APIConstants.SHADER_UNUSED_KHR' otherwise.
-    intersectionShader :: Word32
-  , -- | @pShaderGroupCaptureReplayHandle@ is @NULL@ or a pointer to replay
-    -- information for this shader group queried from
-    -- 'getRayTracingCaptureReplayShaderGroupHandlesKHR', as described in
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#ray-tracing-capture-replay Ray Tracing Capture Replay>.
-    -- Ignored if
-    -- 'PhysicalDeviceRayTracingPipelineFeaturesKHR'::@rayTracingPipelineShaderGroupHandleCaptureReplay@
-    -- is 'Vulkan.Core10.FundamentalTypes.FALSE'.
-    shaderGroupCaptureReplayHandle :: Ptr ()
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (RayTracingShaderGroupCreateInfoKHR)
-#endif
-deriving instance Show RayTracingShaderGroupCreateInfoKHR
-
-instance ToCStruct RayTracingShaderGroupCreateInfoKHR where
-  withCStruct x f = allocaBytes 48 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p RayTracingShaderGroupCreateInfoKHR{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr RayTracingShaderGroupTypeKHR)) (type')
-    poke ((p `plusPtr` 20 :: Ptr Word32)) (generalShader)
-    poke ((p `plusPtr` 24 :: Ptr Word32)) (closestHitShader)
-    poke ((p `plusPtr` 28 :: Ptr Word32)) (anyHitShader)
-    poke ((p `plusPtr` 32 :: Ptr Word32)) (intersectionShader)
-    poke ((p `plusPtr` 40 :: Ptr (Ptr ()))) (shaderGroupCaptureReplayHandle)
-    f
-  cStructSize = 48
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr RayTracingShaderGroupTypeKHR)) (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 RayTracingShaderGroupCreateInfoKHR where
-  peekCStruct p = do
-    type' <- peek @RayTracingShaderGroupTypeKHR ((p `plusPtr` 16 :: Ptr RayTracingShaderGroupTypeKHR))
-    generalShader <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
-    closestHitShader <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))
-    anyHitShader <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))
-    intersectionShader <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))
-    pShaderGroupCaptureReplayHandle <- peek @(Ptr ()) ((p `plusPtr` 40 :: Ptr (Ptr ())))
-    pure $ RayTracingShaderGroupCreateInfoKHR
-             type'
-             generalShader
-             closestHitShader
-             anyHitShader
-             intersectionShader
-             pShaderGroupCaptureReplayHandle
-
-instance Storable RayTracingShaderGroupCreateInfoKHR where
-  sizeOf ~_ = 48
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero RayTracingShaderGroupCreateInfoKHR where
-  zero = RayTracingShaderGroupCreateInfoKHR
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-
-
--- | VkRayTracingPipelineCreateInfoKHR - Structure specifying parameters of a
--- newly created ray tracing pipeline
---
--- = Description
---
--- The parameters @basePipelineHandle@ and @basePipelineIndex@ are
--- described in more detail in
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-pipeline-derivatives Pipeline Derivatives>.
---
--- When
--- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR'
--- is specified, this pipeline defines a /pipeline library/ which /cannot/
--- be bound as a ray tracing pipeline directly. Instead, pipeline libraries
--- define common shaders and shader groups which /can/ be included in
--- future pipeline creation.
---
--- If pipeline libraries are included in @pLibraryInfo@, shaders defined in
--- those libraries are treated as if they were defined as additional
--- entries in @pStages@, appended in the order they appear in the
--- @pLibraries@ array and in the @pStages@ array when those libraries were
--- defined.
---
--- When referencing shader groups in order to obtain a shader group handle,
--- groups defined in those libraries are treated as if they were defined as
--- additional entries in @pGroups@, appended in the order they appear in
--- the @pLibraries@ array and in the @pGroups@ array when those libraries
--- were defined. The shaders these groups reference are set when the
--- pipeline library is created, referencing those specified in the pipeline
--- library, not in the pipeline that includes it.
---
--- 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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#ray-tracing-pipeline-stack Ray Tracing Pipeline Stack>.
---
--- If the @pNext@ chain includes a
--- 'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlags2CreateInfoKHR'
--- structure,
--- 'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlags2CreateInfoKHR'::@flags@
--- from that structure is used instead of @flags@ from this structure.
---
--- == Valid Usage
---
--- -   #VUID-VkRayTracingPipelineCreateInfoKHR-None-09497# If the @pNext@
---     chain does not include a
---     'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlags2CreateInfoKHR'
---     structure, @flags@ /must/ be a valid combination of
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits'
---     values
---
--- -   #VUID-VkRayTracingPipelineCreateInfoKHR-flags-07984# If @flags@
---     contains the
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'
---     flag, and @basePipelineIndex@ is -1, @basePipelineHandle@ /must/ be
---     a valid ray tracing 'Vulkan.Core10.Handles.Pipeline' handle
---
--- -   #VUID-VkRayTracingPipelineCreateInfoKHR-flags-07985# If @flags@
---     contains the
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'
---     flag, and @basePipelineHandle@ is
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', @basePipelineIndex@ /must/
---     be a valid index into the calling command’s @pCreateInfos@ parameter
---
--- -   #VUID-VkRayTracingPipelineCreateInfoKHR-flags-07986# If @flags@
---     contains the
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'
---     flag, @basePipelineIndex@ /must/ be -1 or @basePipelineHandle@
---     /must/ be 'Vulkan.Core10.APIConstants.NULL_HANDLE'
---
--- -   #VUID-VkRayTracingPipelineCreateInfoKHR-layout-07987# If a push
---     constant block is declared in a shader, a push constant range in
---     @layout@ /must/ match the shader stage
---
--- -   #VUID-VkRayTracingPipelineCreateInfoKHR-layout-10069# If a push
---     constant block is declared in a shader, the block must be contained
---     inside the push constant range in @layout@ that matches the stage
---
--- -   #VUID-VkRayTracingPipelineCreateInfoKHR-layout-07988# If a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-resources resource variables>
---     is declared in a shader, a descriptor slot in @layout@ /must/ match
---     the shader stage
---
--- -   #VUID-VkRayTracingPipelineCreateInfoKHR-layout-07990# If a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-resources resource variables>
---     is declared in a shader, and the descriptor type is not
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_MUTABLE_EXT', a
---     descriptor slot in @layout@ /must/ match the descriptor type
---
--- -   #VUID-VkRayTracingPipelineCreateInfoKHR-layout-07991# If a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-resources resource variables>
---     is declared in a shader as an array, a descriptor slot in @layout@
---     /must/ match the descriptor count
---
--- -   #VUID-VkRayTracingPipelineCreateInfoKHR-pStages-03426# The shader
---     code for the entry points identified by @pStages@, and the rest of
---     the state identified by this structure /must/ adhere to the pipeline
---     linking rules described in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces Shader Interfaces>
---     chapter
---
--- -   #VUID-VkRayTracingPipelineCreateInfoKHR-layout-03428# The number of
---     resources in @layout@ accessible to each shader stage that is used
---     by the pipeline /must/ be less than or equal to
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxPerStageResources@
---
--- -   #VUID-VkRayTracingPipelineCreateInfoKHR-flags-02904# @flags@ /must/
---     not include
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV'
---
--- -   #VUID-VkRayTracingPipelineCreateInfoKHR-pipelineCreationCacheControl-02905#
---     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'
---     or
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT'
---
--- -   #VUID-VkRayTracingPipelineCreateInfoKHR-stage-03425# If @flags@ does
---     not include
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR',
---     the @stage@ member of at least one element of @pStages@, including
---     those implicitly added by @pLibraryInfo@, /must/ be
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_RAYGEN_BIT_KHR'
---
--- -   #VUID-VkRayTracingPipelineCreateInfoKHR-maxPipelineRayRecursionDepth-03589#
---     @maxPipelineRayRecursionDepth@ /must/ be less than or equal to
---     'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@maxRayRecursionDepth@
---
--- -   #VUID-VkRayTracingPipelineCreateInfoKHR-flags-03465# If @flags@
---     includes
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR',
---     @pLibraryInterface@ /must/ not be @NULL@
---
--- -   #VUID-VkRayTracingPipelineCreateInfoKHR-pLibraryInfo-03590# If
---     @pLibraryInfo@ is not @NULL@ and its @libraryCount@ member is
---     greater than @0@, @pLibraryInterface@ /must/ not be @NULL@
---
--- -   #VUID-VkRayTracingPipelineCreateInfoKHR-pLibraries-03591# Each
---     element of @pLibraryInfo->pLibraries@ /must/ have been created with
---     the value of @maxPipelineRayRecursionDepth@ equal to that in this
---     pipeline
---
--- -   #VUID-VkRayTracingPipelineCreateInfoKHR-pLibraryInfo-03592# If
---     @pLibraryInfo@ is not @NULL@, each element of its @pLibraries@
---     member /must/ have been created with a @layout@ that is compatible
---     with the @layout@ in this pipeline
---
--- -   #VUID-VkRayTracingPipelineCreateInfoKHR-pLibraryInfo-03593# If
---     @pLibraryInfo@ is not @NULL@, each element of its @pLibraries@
---     member /must/ have been created with values of the
---     @maxPipelineRayPayloadSize@ and @maxPipelineRayHitAttributeSize@
---     members of @pLibraryInterface@ equal to those in this pipeline
---
--- -   #VUID-VkRayTracingPipelineCreateInfoKHR-flags-03594# If @flags@
---     includes
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR',
---     each element of @pLibraryInfo->pLibraries@ /must/ have been created
---     with the
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR'
---     bit set
---
--- -   #VUID-VkRayTracingPipelineCreateInfoKHR-flags-04718# If @flags@
---     includes
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR',
---     each element of @pLibraryInfo->pLibraries@ /must/ have been created
---     with the
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR'
---     bit set
---
--- -   #VUID-VkRayTracingPipelineCreateInfoKHR-flags-04719# If @flags@
---     includes
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR',
---     each element of @pLibraryInfo->pLibraries@ /must/ have been created
---     with the
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR'
---     bit set
---
--- -   #VUID-VkRayTracingPipelineCreateInfoKHR-flags-04720# If @flags@
---     includes
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR',
---     each element of @pLibraryInfo->pLibraries@ /must/ have been created
---     with the
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR'
---     bit set
---
--- -   #VUID-VkRayTracingPipelineCreateInfoKHR-flags-04721# If @flags@
---     includes
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR',
---     each element of @pLibraryInfo->pLibraries@ /must/ have been created
---     with the
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR'
---     bit set
---
--- -   #VUID-VkRayTracingPipelineCreateInfoKHR-flags-04722# If @flags@
---     includes
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR',
---     each element of @pLibraryInfo->pLibraries@ /must/ have been created
---     with the
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR'
---     bit set
---
--- -   #VUID-VkRayTracingPipelineCreateInfoKHR-flags-04723# If @flags@
---     includes
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR',
---     each element of @pLibraryInfo->pLibraries@ /must/ have been created
---     with the
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR'
---     bit set
---
--- -   #VUID-VkRayTracingPipelineCreateInfoKHR-pLibraryInfo-03595# If the
---     @VK_KHR_pipeline_library@ extension is not enabled, @pLibraryInfo@
---     and @pLibraryInterface@ /must/ be @NULL@
---
--- -   #VUID-VkRayTracingPipelineCreateInfoKHR-flags-03470# If @flags@
---     includes
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR',
---     for any element of @pGroups@ with a @type@ of
---     'RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR' or
---     'RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR', the
---     @anyHitShader@ of that element /must/ not be
---     'Vulkan.Core10.APIConstants.SHADER_UNUSED_KHR'
---
--- -   #VUID-VkRayTracingPipelineCreateInfoKHR-flags-03471# If @flags@
---     includes
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR',
---     for any element of @pGroups@ with a @type@ of
---     'RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR' or
---     'RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR', the
---     @closestHitShader@ of that element /must/ not be
---     'Vulkan.Core10.APIConstants.SHADER_UNUSED_KHR'
---
--- -   #VUID-VkRayTracingPipelineCreateInfoKHR-rayTraversalPrimitiveCulling-03596#
---     If the
---     <https://registry.khronos.org/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://registry.khronos.org/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-06546# @flags@ /must/
---     not include both
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR'
---     and
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-rayTracingPipelineShaderGroupHandleCaptureReplay rayTracingPipelineShaderGroupHandleCaptureReplay>
---     /must/ be enabled
---
--- -   #VUID-VkRayTracingPipelineCreateInfoKHR-rayTracingPipelineShaderGroupHandleCaptureReplay-03599#
---     If
---     'PhysicalDeviceRayTracingPipelineFeaturesKHR'::@rayTracingPipelineShaderGroupHandleCaptureReplay@
---     is 'Vulkan.Core10.FundamentalTypes.TRUE' and the
---     @pShaderGroupCaptureReplayHandle@ member of any element of @pGroups@
---     is not @NULL@, @flags@ /must/ include
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR'
---
--- -   #VUID-VkRayTracingPipelineCreateInfoKHR-pLibraryInfo-07999# If
---     @pLibraryInfo@ is @NULL@ or its @libraryCount@ is @0@, @stageCount@
---     /must/ not be @0@
---
--- -   #VUID-VkRayTracingPipelineCreateInfoKHR-flags-08700# If @flags@ does
---     not include
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR'
---     and either @pLibraryInfo@ is @NULL@ or its @libraryCount@ is @0@,
---     @groupCount@ /must/ not be @0@
---
--- -   #VUID-VkRayTracingPipelineCreateInfoKHR-pDynamicStates-03602# Any
---     element of the @pDynamicStates@ member of @pDynamicState@ /must/ be
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR'
---
--- -   #VUID-VkRayTracingPipelineCreateInfoKHR-pipelineStageCreationFeedbackCount-06652#
---     If
---     'Vulkan.Core13.Promoted_From_VK_EXT_pipeline_creation_feedback.PipelineCreationFeedbackCreateInfo'::@pipelineStageCreationFeedbackCount@
---     is not @0@, it /must/ be equal to @stageCount@
---
--- -   #VUID-VkRayTracingPipelineCreateInfoKHR-stage-06899# The @stage@
---     value in all @pStages@ elements /must/ be one of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_RAYGEN_BIT_KHR',
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_ANY_HIT_BIT_KHR',
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_CLOSEST_HIT_BIT_KHR',
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MISS_BIT_KHR',
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_INTERSECTION_BIT_KHR',
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_CALLABLE_BIT_KHR'
---
--- -   #VUID-VkRayTracingPipelineCreateInfoKHR-flags-07403# If @flags@
---     includes
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT',
---     each element of @pLibraryInfo->pLibraries@ /must/ have been created
---     with the
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT'
---     bit set
---
--- -   #VUID-VkRayTracingPipelineCreateInfoKHR-flags-08701# If @flags@
---     includes
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV',
---     each element of @pLibraryInfo->pLibraries@ /must/ have been created
---     with the
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV'
---     bit set
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkRayTracingPipelineCreateInfoKHR-sType-sType# @sType@ /must/
---     be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR'
---
--- -   #VUID-VkRayTracingPipelineCreateInfoKHR-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_pipeline_binary.PipelineBinaryInfoKHR',
---     'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlags2CreateInfoKHR',
---     'Vulkan.Core13.Promoted_From_VK_EXT_pipeline_creation_feedback.PipelineCreationFeedbackCreateInfo',
---     or
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PipelineRobustnessCreateInfoEXT'
---
--- -   #VUID-VkRayTracingPipelineCreateInfoKHR-sType-unique# The @sType@
---     value of each struct in the @pNext@ chain /must/ be unique
---
--- -   #VUID-VkRayTracingPipelineCreateInfoKHR-pStages-parameter# If
---     @stageCount@ is not @0@, @pStages@ /must/ be a valid pointer to an
---     array of @stageCount@ valid
---     'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo' structures
---
--- -   #VUID-VkRayTracingPipelineCreateInfoKHR-pGroups-parameter# If
---     @groupCount@ is not @0@, @pGroups@ /must/ be a valid pointer to an
---     array of @groupCount@ valid 'RayTracingShaderGroupCreateInfoKHR'
---     structures
---
--- -   #VUID-VkRayTracingPipelineCreateInfoKHR-pLibraryInfo-parameter# If
---     @pLibraryInfo@ is not @NULL@, @pLibraryInfo@ /must/ be a valid
---     pointer to a valid
---     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'
---     structure
---
--- -   #VUID-VkRayTracingPipelineCreateInfoKHR-pLibraryInterface-parameter#
---     If @pLibraryInterface@ is not @NULL@, @pLibraryInterface@ /must/ be
---     a valid pointer to a valid
---     'RayTracingPipelineInterfaceCreateInfoKHR' structure
---
--- -   #VUID-VkRayTracingPipelineCreateInfoKHR-pDynamicState-parameter# If
---     @pDynamicState@ is not @NULL@, @pDynamicState@ /must/ be a valid
---     pointer to a valid
---     'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo' structure
---
--- -   #VUID-VkRayTracingPipelineCreateInfoKHR-layout-parameter# @layout@
---     /must/ be a valid 'Vulkan.Core10.Handles.PipelineLayout' handle
---
--- -   #VUID-VkRayTracingPipelineCreateInfoKHR-commonparent# Both of
---     @basePipelineHandle@, and @layout@ 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_ray_tracing_pipeline VK_KHR_ray_tracing_pipeline>,
--- 'Vulkan.Core10.Handles.Pipeline',
--- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlags',
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo',
--- 'Vulkan.Core10.Handles.PipelineLayout',
--- 'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR',
--- 'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo',
--- 'RayTracingPipelineInterfaceCreateInfoKHR',
--- 'RayTracingShaderGroupCreateInfoKHR',
--- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'createRayTracingPipelinesKHR'
-data RayTracingPipelineCreateInfoKHR (es :: [Type]) = RayTracingPipelineCreateInfoKHR
-  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
-    next :: Chain es
-  , -- | @flags@ is a bitmask of
-    -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits'
-    -- specifying how the pipeline will be generated.
-    flags :: PipelineCreateFlags
-  , -- | @pStages@ is a pointer to an array of @stageCount@
-    -- 'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo' structures
-    -- describing the set of the shader stages to be included in the ray
-    -- tracing pipeline.
-    stages :: Vector (SomeStruct PipelineShaderStageCreateInfo)
-  , -- | @pGroups@ is a pointer to an array of @groupCount@
-    -- 'RayTracingShaderGroupCreateInfoKHR' structures describing the set of
-    -- the shader stages to be included in each shader group in the ray tracing
-    -- pipeline.
-    groups :: Vector RayTracingShaderGroupCreateInfoKHR
-  , -- | @maxPipelineRayRecursionDepth@ is the
-    -- <https://registry.khronos.org/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
-    -- 'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'
-    -- structure defining pipeline libraries to include.
-    libraryInfo :: Maybe PipelineLibraryCreateInfoKHR
-  , -- | @pLibraryInterface@ is a pointer to a
-    -- 'RayTracingPipelineInterfaceCreateInfoKHR' structure defining additional
-    -- information when using pipeline libraries.
-    libraryInterface :: Maybe RayTracingPipelineInterfaceCreateInfoKHR
-  , -- | @pDynamicState@ is a pointer to a
-    -- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo' structure, and
-    -- is used to indicate which properties of the pipeline state object are
-    -- dynamic and /can/ be changed independently of the pipeline state. This
-    -- /can/ be @NULL@, which means no state in the pipeline is considered
-    -- dynamic.
-    dynamicState :: Maybe PipelineDynamicStateCreateInfo
-  , -- | @layout@ is the description of binding locations used by both the
-    -- pipeline and descriptor sets used with the pipeline.
-    layout :: PipelineLayout
-  , -- | @basePipelineHandle@ is a pipeline to derive from.
-    basePipelineHandle :: Pipeline
-  , -- | @basePipelineIndex@ is an index into the @pCreateInfos@ parameter to use
-    -- as a pipeline to derive from.
-    basePipelineIndex :: Int32
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (RayTracingPipelineCreateInfoKHR (es :: [Type]))
-#endif
-deriving instance Show (Chain es) => Show (RayTracingPipelineCreateInfoKHR es)
-
-instance Extensible RayTracingPipelineCreateInfoKHR where
-  extensibleTypeName = "RayTracingPipelineCreateInfoKHR"
-  setNext RayTracingPipelineCreateInfoKHR{..} next' = RayTracingPipelineCreateInfoKHR{next = next', ..}
-  getNext RayTracingPipelineCreateInfoKHR{..} = next
-  extends :: forall e b proxy. Typeable e => proxy e -> (Extends RayTracingPipelineCreateInfoKHR e => b) -> Maybe b
-  extends _ f
-    | Just Refl <- eqT @e @PipelineRobustnessCreateInfoEXT = Just f
-    | Just Refl <- eqT @e @PipelineCreationFeedbackCreateInfo = Just f
-    | Just Refl <- eqT @e @PipelineBinaryInfoKHR = Just f
-    | Just Refl <- eqT @e @PipelineCreateFlags2CreateInfoKHR = Just f
-    | otherwise = Nothing
-
-instance ( Extendss RayTracingPipelineCreateInfoKHR es
-         , PokeChain es ) => ToCStruct (RayTracingPipelineCreateInfoKHR es) where
-  withCStruct x f = allocaBytes 104 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p RayTracingPipelineCreateInfoKHR{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR)
-    pNext'' <- fmap castPtr . ContT $ withChain (next)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
-    lift $ poke ((p `plusPtr` 16 :: Ptr PipelineCreateFlags)) (flags)
-    lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (stages)) :: Word32))
-    pPStages' <- ContT $ allocaBytes @(PipelineShaderStageCreateInfo _) ((Data.Vector.length (stages)) * 48)
-    Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPStages' `plusPtr` (48 * (i)) :: Ptr (PipelineShaderStageCreateInfo _))) (e) . ($ ())) (stages)
-    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr (PipelineShaderStageCreateInfo _)))) (pPStages')
-    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (groups)) :: Word32))
-    pPGroups' <- ContT $ allocaBytes @RayTracingShaderGroupCreateInfoKHR ((Data.Vector.length (groups)) * 48)
-    lift $ Data.Vector.imapM_ (\i e -> poke (pPGroups' `plusPtr` (48 * (i)) :: Ptr RayTracingShaderGroupCreateInfoKHR) (e)) (groups)
-    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr RayTracingShaderGroupCreateInfoKHR))) (pPGroups')
-    lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) (maxPipelineRayRecursionDepth)
-    pLibraryInfo'' <- case (libraryInfo) of
-      Nothing -> pure nullPtr
-      Just j -> ContT $ withCStruct (j)
-    lift $ poke ((p `plusPtr` 56 :: Ptr (Ptr PipelineLibraryCreateInfoKHR))) pLibraryInfo''
-    pLibraryInterface'' <- case (libraryInterface) of
-      Nothing -> pure nullPtr
-      Just j -> ContT $ withCStruct (j)
-    lift $ poke ((p `plusPtr` 64 :: Ptr (Ptr RayTracingPipelineInterfaceCreateInfoKHR))) pLibraryInterface''
-    pDynamicState'' <- case (dynamicState) of
-      Nothing -> pure nullPtr
-      Just j -> ContT $ withCStruct (j)
-    lift $ poke ((p `plusPtr` 72 :: Ptr (Ptr PipelineDynamicStateCreateInfo))) pDynamicState''
-    lift $ poke ((p `plusPtr` 80 :: Ptr PipelineLayout)) (layout)
-    lift $ poke ((p `plusPtr` 88 :: Ptr Pipeline)) (basePipelineHandle)
-    lift $ poke ((p `plusPtr` 96 :: Ptr Int32)) (basePipelineIndex)
-    lift $ f
-  cStructSize = 104
-  cStructAlignment = 8
-  pokeZeroCStruct p f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR)
-    pNext' <- fmap castPtr . ContT $ withZeroChain @es
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
-    lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) (zero)
-    lift $ poke ((p `plusPtr` 80 :: Ptr PipelineLayout)) (zero)
-    lift $ poke ((p `plusPtr` 96 :: Ptr Int32)) (zero)
-    lift $ f
-
-instance ( Extendss RayTracingPipelineCreateInfoKHR es
-         , PeekChain es ) => FromCStruct (RayTracingPipelineCreateInfoKHR es) where
-  peekCStruct p = do
-    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
-    next <- peekChain (castPtr pNext)
-    flags <- peek @PipelineCreateFlags ((p `plusPtr` 16 :: Ptr PipelineCreateFlags))
-    stageCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
-    pStages <- peek @(Ptr (PipelineShaderStageCreateInfo _)) ((p `plusPtr` 24 :: Ptr (Ptr (PipelineShaderStageCreateInfo _))))
-    pStages' <- generateM (fromIntegral stageCount) (\i -> peekSomeCStruct (forgetExtensions ((pStages `advancePtrBytes` (48 * (i)) :: Ptr (PipelineShaderStageCreateInfo _)))))
-    groupCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))
-    pGroups <- peek @(Ptr RayTracingShaderGroupCreateInfoKHR) ((p `plusPtr` 40 :: Ptr (Ptr RayTracingShaderGroupCreateInfoKHR)))
-    pGroups' <- generateM (fromIntegral groupCount) (\i -> peekCStruct @RayTracingShaderGroupCreateInfoKHR ((pGroups `advancePtrBytes` (48 * (i)) :: Ptr RayTracingShaderGroupCreateInfoKHR)))
-    maxPipelineRayRecursionDepth <- peek @Word32 ((p `plusPtr` 48 :: Ptr Word32))
-    pLibraryInfo <- peek @(Ptr PipelineLibraryCreateInfoKHR) ((p `plusPtr` 56 :: Ptr (Ptr PipelineLibraryCreateInfoKHR)))
-    pLibraryInfo' <- maybePeek (\j -> peekCStruct @PipelineLibraryCreateInfoKHR (j)) pLibraryInfo
-    pLibraryInterface <- peek @(Ptr RayTracingPipelineInterfaceCreateInfoKHR) ((p `plusPtr` 64 :: Ptr (Ptr RayTracingPipelineInterfaceCreateInfoKHR)))
-    pLibraryInterface' <- maybePeek (\j -> peekCStruct @RayTracingPipelineInterfaceCreateInfoKHR (j)) pLibraryInterface
-    pDynamicState <- peek @(Ptr PipelineDynamicStateCreateInfo) ((p `plusPtr` 72 :: Ptr (Ptr PipelineDynamicStateCreateInfo)))
-    pDynamicState' <- maybePeek (\j -> peekCStruct @PipelineDynamicStateCreateInfo (j)) pDynamicState
-    layout <- peek @PipelineLayout ((p `plusPtr` 80 :: Ptr PipelineLayout))
-    basePipelineHandle <- peek @Pipeline ((p `plusPtr` 88 :: Ptr Pipeline))
-    basePipelineIndex <- peek @Int32 ((p `plusPtr` 96 :: Ptr Int32))
-    pure $ RayTracingPipelineCreateInfoKHR
-             next
-             flags
-             pStages'
-             pGroups'
-             maxPipelineRayRecursionDepth
-             pLibraryInfo'
-             pLibraryInterface'
-             pDynamicState'
-             layout
-             basePipelineHandle
-             basePipelineIndex
-
-instance es ~ '[] => Zero (RayTracingPipelineCreateInfoKHR es) where
-  zero = RayTracingPipelineCreateInfoKHR
-           ()
-           zero
-           mempty
-           mempty
-           zero
-           Nothing
-           Nothing
-           Nothing
-           zero
-           zero
-           zero
-
-
--- | VkPhysicalDeviceRayTracingPipelineFeaturesKHR - Structure describing the
--- ray tracing features that can be supported by an implementation
---
--- = Members
---
--- This structure describes the following features:
---
--- = Description
---
--- If the 'PhysicalDeviceRayTracingPipelineFeaturesKHR' 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. 'PhysicalDeviceRayTracingPipelineFeaturesKHR' /can/ also be
--- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
---
--- == Valid Usage
---
--- -   #VUID-VkPhysicalDeviceRayTracingPipelineFeaturesKHR-rayTracingPipelineShaderGroupHandleCaptureReplayMixed-03575#
---     If @rayTracingPipelineShaderGroupHandleCaptureReplayMixed@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE',
---     @rayTracingPipelineShaderGroupHandleCaptureReplay@ /must/ also be
---     'Vulkan.Core10.FundamentalTypes.TRUE'
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkPhysicalDeviceRayTracingPipelineFeaturesKHR-sType-sType#
---     @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR'
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_ray_tracing_pipeline VK_KHR_ray_tracing_pipeline>,
--- 'Vulkan.Core10.FundamentalTypes.Bool32',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PhysicalDeviceRayTracingPipelineFeaturesKHR = PhysicalDeviceRayTracingPipelineFeaturesKHR
-  { -- | #features-rayTracingPipeline# @rayTracingPipeline@ indicates whether the
-    -- implementation supports the ray tracing pipeline functionality. See
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#ray-tracing Ray Tracing>.
-    rayTracingPipeline :: Bool
-  , -- | #features-rayTracingPipelineShaderGroupHandleCaptureReplay#
-    -- @rayTracingPipelineShaderGroupHandleCaptureReplay@ indicates whether the
-    -- implementation supports saving and reusing shader group handles, e.g.
-    -- for trace capture and replay.
-    rayTracingPipelineShaderGroupHandleCaptureReplay :: Bool
-  , -- | #features-rayTracingPipelineShaderGroupHandleCaptureReplayMixed#
-    -- @rayTracingPipelineShaderGroupHandleCaptureReplayMixed@ indicates
-    -- whether the implementation supports reuse of shader group handles being
-    -- arbitrarily mixed with creation of non-reused shader group handles. If
-    -- this is 'Vulkan.Core10.FundamentalTypes.FALSE', all reused shader group
-    -- handles /must/ be specified before any non-reused handles /may/ be
-    -- created.
-    rayTracingPipelineShaderGroupHandleCaptureReplayMixed :: Bool
-  , -- | #features-rayTracingPipelineTraceRaysIndirect#
-    -- @rayTracingPipelineTraceRaysIndirect@ indicates whether the
-    -- implementation supports indirect ray tracing commands, e.g.
-    -- 'cmdTraceRaysIndirectKHR'.
-    rayTracingPipelineTraceRaysIndirect :: Bool
-  , -- | #features-rayTraversalPrimitiveCulling# @rayTraversalPrimitiveCulling@
-    -- indicates whether the implementation supports
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#ray-traversal-culling-primitive primitive culling during ray traversal>.
-    rayTraversalPrimitiveCulling :: Bool
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PhysicalDeviceRayTracingPipelineFeaturesKHR)
-#endif
-deriving instance Show PhysicalDeviceRayTracingPipelineFeaturesKHR
-
-instance ToCStruct PhysicalDeviceRayTracingPipelineFeaturesKHR where
-  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PhysicalDeviceRayTracingPipelineFeaturesKHR{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (rayTracingPipeline))
-    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (rayTracingPipelineShaderGroupHandleCaptureReplay))
-    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (rayTracingPipelineShaderGroupHandleCaptureReplayMixed))
-    poke ((p `plusPtr` 28 :: Ptr Bool32)) (boolToBool32 (rayTracingPipelineTraceRaysIndirect))
-    poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (rayTraversalPrimitiveCulling))
-    f
-  cStructSize = 40
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_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))
-    f
-
-instance FromCStruct PhysicalDeviceRayTracingPipelineFeaturesKHR where
-  peekCStruct p = do
-    rayTracingPipeline <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
-    rayTracingPipelineShaderGroupHandleCaptureReplay <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
-    rayTracingPipelineShaderGroupHandleCaptureReplayMixed <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))
-    rayTracingPipelineTraceRaysIndirect <- peek @Bool32 ((p `plusPtr` 28 :: Ptr Bool32))
-    rayTraversalPrimitiveCulling <- peek @Bool32 ((p `plusPtr` 32 :: Ptr Bool32))
-    pure $ PhysicalDeviceRayTracingPipelineFeaturesKHR
-             (bool32ToBool rayTracingPipeline)
-             (bool32ToBool rayTracingPipelineShaderGroupHandleCaptureReplay)
-             (bool32ToBool rayTracingPipelineShaderGroupHandleCaptureReplayMixed)
-             (bool32ToBool rayTracingPipelineTraceRaysIndirect)
-             (bool32ToBool rayTraversalPrimitiveCulling)
-
-instance Storable PhysicalDeviceRayTracingPipelineFeaturesKHR where
-  sizeOf ~_ = 40
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero PhysicalDeviceRayTracingPipelineFeaturesKHR where
-  zero = PhysicalDeviceRayTracingPipelineFeaturesKHR
-           zero
-           zero
-           zero
-           zero
-           zero
-
-
--- | VkPhysicalDeviceRayTracingPipelinePropertiesKHR - Properties of the
--- physical device for ray tracing
---
--- = Description
---
--- If the 'PhysicalDeviceRayTracingPipelinePropertiesKHR' 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.
---
--- Limits specified by this structure /must/ match those specified with the
--- same name in
--- 'Vulkan.Extensions.VK_NV_ray_tracing.PhysicalDeviceRayTracingPropertiesNV'.
---
--- == Valid Usage (Implicit)
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_ray_tracing_pipeline VK_KHR_ray_tracing_pipeline>,
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PhysicalDeviceRayTracingPipelinePropertiesKHR = PhysicalDeviceRayTracingPipelinePropertiesKHR
-  { -- | @shaderGroupHandleSize@ is the size in bytes of the shader header.
-    shaderGroupHandleSize :: Word32
-  , -- | #limits-maxRayRecursionDepth# @maxRayRecursionDepth@ is the maximum
-    -- number of levels of ray recursion allowed in a trace command.
-    maxRayRecursionDepth :: Word32
-  , -- | @maxShaderGroupStride@ is the maximum stride in bytes allowed between
-    -- shader groups in the shader binding table.
-    maxShaderGroupStride :: Word32
-  , -- | @shaderGroupBaseAlignment@ is the /required/ alignment in bytes for the
-    -- base of the shader binding table.
-    shaderGroupBaseAlignment :: Word32
-  , -- | @shaderGroupHandleCaptureReplaySize@ is the number of bytes for the
-    -- information required to do capture and replay for shader group handles.
-    shaderGroupHandleCaptureReplaySize :: Word32
-  , -- | @maxRayDispatchInvocationCount@ is the maximum number of ray generation
-    -- shader invocations which /may/ be produced by a single
-    -- 'cmdTraceRaysIndirectKHR' or 'cmdTraceRaysKHR' command.
-    maxRayDispatchInvocationCount :: Word32
-  , -- | @shaderGroupHandleAlignment@ is the /required/ alignment in bytes for
-    -- each entry in a shader binding table. The value /must/ be a power of
-    -- two.
-    shaderGroupHandleAlignment :: Word32
-  , -- | @maxRayHitAttributeSize@ is the maximum size in bytes for a ray
-    -- attribute structure
-    maxRayHitAttributeSize :: Word32
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PhysicalDeviceRayTracingPipelinePropertiesKHR)
-#endif
-deriving instance Show PhysicalDeviceRayTracingPipelinePropertiesKHR
-
-instance ToCStruct PhysicalDeviceRayTracingPipelinePropertiesKHR where
-  withCStruct x f = allocaBytes 48 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PhysicalDeviceRayTracingPipelinePropertiesKHR{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Word32)) (shaderGroupHandleSize)
-    poke ((p `plusPtr` 20 :: Ptr Word32)) (maxRayRecursionDepth)
-    poke ((p `plusPtr` 24 :: Ptr Word32)) (maxShaderGroupStride)
-    poke ((p `plusPtr` 28 :: Ptr Word32)) (shaderGroupBaseAlignment)
-    poke ((p `plusPtr` 32 :: Ptr Word32)) (shaderGroupHandleCaptureReplaySize)
-    poke ((p `plusPtr` 36 :: Ptr Word32)) (maxRayDispatchInvocationCount)
-    poke ((p `plusPtr` 40 :: Ptr Word32)) (shaderGroupHandleAlignment)
-    poke ((p `plusPtr` 44 :: Ptr Word32)) (maxRayHitAttributeSize)
-    f
-  cStructSize = 48
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR)
-    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)
-    poke ((p `plusPtr` 36 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 40 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 44 :: Ptr Word32)) (zero)
-    f
-
-instance FromCStruct PhysicalDeviceRayTracingPipelinePropertiesKHR where
-  peekCStruct p = do
-    shaderGroupHandleSize <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
-    maxRayRecursionDepth <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
-    maxShaderGroupStride <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))
-    shaderGroupBaseAlignment <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))
-    shaderGroupHandleCaptureReplaySize <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))
-    maxRayDispatchInvocationCount <- peek @Word32 ((p `plusPtr` 36 :: Ptr Word32))
-    shaderGroupHandleAlignment <- peek @Word32 ((p `plusPtr` 40 :: Ptr Word32))
-    maxRayHitAttributeSize <- peek @Word32 ((p `plusPtr` 44 :: Ptr Word32))
-    pure $ PhysicalDeviceRayTracingPipelinePropertiesKHR
-             shaderGroupHandleSize
-             maxRayRecursionDepth
-             maxShaderGroupStride
-             shaderGroupBaseAlignment
-             shaderGroupHandleCaptureReplaySize
-             maxRayDispatchInvocationCount
-             shaderGroupHandleAlignment
-             maxRayHitAttributeSize
-
-instance Storable PhysicalDeviceRayTracingPipelinePropertiesKHR where
-  sizeOf ~_ = 48
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero PhysicalDeviceRayTracingPipelinePropertiesKHR where
-  zero = PhysicalDeviceRayTracingPipelinePropertiesKHR
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-
-
--- | VkStridedDeviceAddressRegionKHR - Structure specifying a region of
--- device addresses with a stride
---
--- == Valid Usage
---
--- -   #VUID-VkStridedDeviceAddressRegionKHR-size-04631# If @size@ is not
---     zero, all addresses between @deviceAddress@ and @deviceAddress@ +
---     @size@ - 1 /must/ be in the buffer device address range of the same
---     buffer
---
--- -   #VUID-VkStridedDeviceAddressRegionKHR-size-04632# If @size@ is not
---     zero, @stride@ /must/ be less than or equal to the size of the
---     buffer from which @deviceAddress@ was queried
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_ray_tracing_pipeline VK_KHR_ray_tracing_pipeline>,
--- 'Vulkan.Core10.FundamentalTypes.DeviceAddress',
--- 'Vulkan.Core10.FundamentalTypes.DeviceSize', 'cmdTraceRaysIndirectKHR',
--- 'cmdTraceRaysKHR'
-data StridedDeviceAddressRegionKHR = StridedDeviceAddressRegionKHR
-  { -- | @deviceAddress@ is the device address (as returned by the
-    -- 'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.getBufferDeviceAddress'
-    -- command) at which the region starts, or zero if the region is unused.
-    deviceAddress :: DeviceAddress
-  , -- | @stride@ is the byte stride between consecutive elements.
-    stride :: DeviceSize
-  , -- | @size@ is the size in bytes of the region starting at @deviceAddress@.
-    size :: DeviceSize
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (StridedDeviceAddressRegionKHR)
-#endif
-deriving instance Show StridedDeviceAddressRegionKHR
-
-instance ToCStruct StridedDeviceAddressRegionKHR where
-  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p StridedDeviceAddressRegionKHR{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr DeviceAddress)) (deviceAddress)
-    poke ((p `plusPtr` 8 :: Ptr DeviceSize)) (stride)
-    poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (size)
-    f
-  cStructSize = 24
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 8 :: Ptr DeviceSize)) (zero)
-    poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (zero)
-    f
-
-instance FromCStruct StridedDeviceAddressRegionKHR where
-  peekCStruct p = do
-    deviceAddress <- peek @DeviceAddress ((p `plusPtr` 0 :: Ptr DeviceAddress))
-    stride <- peek @DeviceSize ((p `plusPtr` 8 :: Ptr DeviceSize))
-    size <- peek @DeviceSize ((p `plusPtr` 16 :: Ptr DeviceSize))
-    pure $ StridedDeviceAddressRegionKHR
-             deviceAddress stride size
-
-instance Storable StridedDeviceAddressRegionKHR where
-  sizeOf ~_ = 24
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero StridedDeviceAddressRegionKHR where
-  zero = StridedDeviceAddressRegionKHR
-           zero
-           zero
-           zero
-
-
--- | VkTraceRaysIndirectCommandKHR - Structure specifying the parameters of
--- an indirect ray tracing command
---
--- = Description
---
--- The members of 'TraceRaysIndirectCommandKHR' have the same meaning as
--- the similarly named parameters of 'cmdTraceRaysKHR'.
---
--- == Valid Usage
---
--- -   #VUID-VkTraceRaysIndirectCommandKHR-width-03638# @width@ /must/ be
---     less than or equal to
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[0]
---     ×
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupSize@[0]
---
--- -   #VUID-VkTraceRaysIndirectCommandKHR-height-03639# @height@ /must/ be
---     less than or equal to
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[1]
---     ×
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupSize@[1]
---
--- -   #VUID-VkTraceRaysIndirectCommandKHR-depth-03640# @depth@ /must/ be
---     less than or equal to
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[2]
---     ×
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupSize@[2]
---
--- -   #VUID-VkTraceRaysIndirectCommandKHR-width-03641# @width@ × @height@
---     × @depth@ /must/ be less than or equal to
---     'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@maxRayDispatchInvocationCount@
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_ray_tracing_pipeline VK_KHR_ray_tracing_pipeline>
-data TraceRaysIndirectCommandKHR = TraceRaysIndirectCommandKHR
-  { -- | @width@ is the width of the ray trace query dimensions.
-    width :: Word32
-  , -- | @height@ is height of the ray trace query dimensions.
-    height :: Word32
-  , -- | @depth@ is depth of the ray trace query dimensions.
-    depth :: Word32
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (TraceRaysIndirectCommandKHR)
-#endif
-deriving instance Show TraceRaysIndirectCommandKHR
-
-instance ToCStruct TraceRaysIndirectCommandKHR where
-  withCStruct x f = allocaBytes 12 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p TraceRaysIndirectCommandKHR{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr Word32)) (width)
-    poke ((p `plusPtr` 4 :: Ptr Word32)) (height)
-    poke ((p `plusPtr` 8 :: Ptr Word32)) (depth)
-    f
-  cStructSize = 12
-  cStructAlignment = 4
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)
-    f
-
-instance FromCStruct TraceRaysIndirectCommandKHR where
-  peekCStruct p = do
-    width <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))
-    height <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))
-    depth <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))
-    pure $ TraceRaysIndirectCommandKHR
-             width height depth
-
-instance Storable TraceRaysIndirectCommandKHR where
-  sizeOf ~_ = 12
-  alignment ~_ = 4
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero TraceRaysIndirectCommandKHR where
-  zero = TraceRaysIndirectCommandKHR
-           zero
-           zero
-           zero
-
-
--- | VkRayTracingPipelineInterfaceCreateInfoKHR - Structure specifying
--- additional interface information when using libraries
---
--- = Description
---
--- @maxPipelineRayPayloadSize@ is calculated as the maximum number of bytes
--- used by any block declared in the @RayPayloadKHR@ or
--- @IncomingRayPayloadKHR@ storage classes.
--- @maxPipelineRayHitAttributeSize@ is calculated as the maximum number of
--- 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://registry.khronos.org/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.
---
--- There is no explicit upper limit for @maxPipelineRayPayloadSize@, but in
--- practice it should be kept as small as possible. Similar to invocation
--- local memory, it must be allocated for each shader invocation and for
--- devices which support many simultaneous invocations, this storage can
--- rapidly be exhausted, resulting in failure.
---
--- == Valid Usage (Implicit)
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_ray_tracing_pipeline VK_KHR_ray_tracing_pipeline>,
--- 'RayTracingPipelineCreateInfoKHR',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data RayTracingPipelineInterfaceCreateInfoKHR = RayTracingPipelineInterfaceCreateInfoKHR
-  { -- | @maxPipelineRayPayloadSize@ is the maximum payload size in bytes used by
-    -- any shader in the pipeline.
-    maxPipelineRayPayloadSize :: Word32
-  , -- | @maxPipelineRayHitAttributeSize@ is the maximum attribute structure size
-    -- in bytes used by any shader in the pipeline.
-    --
-    -- #VUID-VkRayTracingPipelineInterfaceCreateInfoKHR-maxPipelineRayHitAttributeSize-03605#
-    -- @maxPipelineRayHitAttributeSize@ /must/ be less than or equal to
-    -- 'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@maxRayHitAttributeSize@
-    maxPipelineRayHitAttributeSize :: Word32
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (RayTracingPipelineInterfaceCreateInfoKHR)
-#endif
-deriving instance Show RayTracingPipelineInterfaceCreateInfoKHR
-
-instance ToCStruct RayTracingPipelineInterfaceCreateInfoKHR where
-  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p RayTracingPipelineInterfaceCreateInfoKHR{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Word32)) (maxPipelineRayPayloadSize)
-    poke ((p `plusPtr` 20 :: Ptr Word32)) (maxPipelineRayHitAttributeSize)
-    f
-  cStructSize = 24
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)
-    f
-
-instance FromCStruct RayTracingPipelineInterfaceCreateInfoKHR where
-  peekCStruct p = do
-    maxPipelineRayPayloadSize <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
-    maxPipelineRayHitAttributeSize <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
-    pure $ RayTracingPipelineInterfaceCreateInfoKHR
-             maxPipelineRayPayloadSize maxPipelineRayHitAttributeSize
-
-instance Storable RayTracingPipelineInterfaceCreateInfoKHR where
-  sizeOf ~_ = 24
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero RayTracingPipelineInterfaceCreateInfoKHR where
-  zero = RayTracingPipelineInterfaceCreateInfoKHR
-           zero
-           zero
-
-
--- | VkRayTracingShaderGroupTypeKHR - Shader group types
---
--- = Description
---
--- For current group types, the hit group type could be inferred from the
--- presence or absence of the intersection shader, but we provide the type
--- explicitly for future hit groups that do not have that property.
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_ray_tracing_pipeline VK_KHR_ray_tracing_pipeline>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>,
--- 'RayTracingShaderGroupCreateInfoKHR',
--- 'Vulkan.Extensions.VK_NV_ray_tracing.RayTracingShaderGroupCreateInfoNV'
-newtype RayTracingShaderGroupTypeKHR = RayTracingShaderGroupTypeKHR Int32
-  deriving newtype (Eq, Ord, Storable, Zero)
-
--- | 'RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR' specifies that a shader
--- group with a single
--- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_RAYGEN_BIT_KHR',
--- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MISS_BIT_KHR', or
--- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_CALLABLE_BIT_KHR'
--- shader in it.
-pattern RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR = RayTracingShaderGroupTypeKHR 0
-
--- | 'RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR' specifies that a
--- shader group that only hits triangles and /must/ not contain an
--- intersection shader, only closest hit and any-hit shaders.
-pattern RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR = RayTracingShaderGroupTypeKHR 1
-
--- | 'RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR' specifies that
--- a shader group that only intersects with custom geometry and /must/
--- contain an intersection shader and /may/ contain closest hit and any-hit
--- shaders.
-pattern RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR = RayTracingShaderGroupTypeKHR 2
-
-{-# COMPLETE
-  RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR
-  , RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR
-  , RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR ::
-    RayTracingShaderGroupTypeKHR
-  #-}
-
-conNameRayTracingShaderGroupTypeKHR :: String
-conNameRayTracingShaderGroupTypeKHR = "RayTracingShaderGroupTypeKHR"
-
-enumPrefixRayTracingShaderGroupTypeKHR :: String
-enumPrefixRayTracingShaderGroupTypeKHR = "RAY_TRACING_SHADER_GROUP_TYPE_"
-
-showTableRayTracingShaderGroupTypeKHR :: [(RayTracingShaderGroupTypeKHR, String)]
-showTableRayTracingShaderGroupTypeKHR =
-  [
-    ( RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR
-    , "GENERAL_KHR"
-    )
-  ,
-    ( RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR
-    , "TRIANGLES_HIT_GROUP_KHR"
-    )
-  ,
-    ( RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR
-    , "PROCEDURAL_HIT_GROUP_KHR"
-    )
-  ]
-
-instance Show RayTracingShaderGroupTypeKHR where
-  showsPrec =
-    enumShowsPrec
-      enumPrefixRayTracingShaderGroupTypeKHR
-      showTableRayTracingShaderGroupTypeKHR
-      conNameRayTracingShaderGroupTypeKHR
-      (\(RayTracingShaderGroupTypeKHR x) -> x)
-      (showsPrec 11)
-
-instance Read RayTracingShaderGroupTypeKHR where
-  readPrec =
-    enumReadPrec
-      enumPrefixRayTracingShaderGroupTypeKHR
-      showTableRayTracingShaderGroupTypeKHR
-      conNameRayTracingShaderGroupTypeKHR
-      RayTracingShaderGroupTypeKHR
-
--- | VkShaderGroupShaderKHR - Shader group shaders
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_ray_tracing_pipeline VK_KHR_ray_tracing_pipeline>,
--- 'getRayTracingShaderGroupStackSizeKHR'
-newtype ShaderGroupShaderKHR = ShaderGroupShaderKHR Int32
-  deriving newtype (Eq, Ord, Storable, Zero)
-
--- | 'SHADER_GROUP_SHADER_GENERAL_KHR' uses the shader specified in the group
--- with 'RayTracingShaderGroupCreateInfoKHR'::@generalShader@
-pattern SHADER_GROUP_SHADER_GENERAL_KHR = ShaderGroupShaderKHR 0
-
--- | 'SHADER_GROUP_SHADER_CLOSEST_HIT_KHR' uses the shader specified in the
--- group with 'RayTracingShaderGroupCreateInfoKHR'::@closestHitShader@
-pattern SHADER_GROUP_SHADER_CLOSEST_HIT_KHR = ShaderGroupShaderKHR 1
-
--- | 'SHADER_GROUP_SHADER_ANY_HIT_KHR' uses the shader specified in the group
--- with 'RayTracingShaderGroupCreateInfoKHR'::@anyHitShader@
-pattern SHADER_GROUP_SHADER_ANY_HIT_KHR = ShaderGroupShaderKHR 2
-
--- | 'SHADER_GROUP_SHADER_INTERSECTION_KHR' uses the shader specified in the
--- group with 'RayTracingShaderGroupCreateInfoKHR'::@intersectionShader@
+--         
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_spirv_1_4 VK_KHR_spirv_1_4>
+--          or
+--         
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.2 Vulkan Version 1.2>
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>
+--
+-- [__API Interactions__]
+--
+--     -   Interacts with VK_KHR_ray_query
+--
+-- [__SPIR-V Dependencies__]
+--
+--     -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/KHR/SPV_KHR_ray_tracing.html SPV_KHR_ray_tracing>
+--
+-- [__Contact__]
+--
+--     -   Daniel Koch
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_ray_tracing_pipeline] @dgkoch%0A*Here describe the issue or question you have about the VK_KHR_ray_tracing_pipeline extension* >
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2020-11-12
+--
+-- [__Interactions and External Dependencies__]
+--
+--     -   This extension provides API support for
+--         <https://github.com/KhronosGroup/GLSL/blob/main/extensions/ext/GLSL_EXT_ray_tracing.txt GLSL_EXT_ray_tracing>
+--
+--     -   This extension interacts with
+--         <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#versions-1.2 Vulkan 1.2>
+--         and @VK_KHR_vulkan_memory_model@, adding the
+--         <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shader-call-related shader-call-related>
+--         relation of invocations,
+--         <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shader-call-order shader-call-order>
+--         partial order of dynamic instances of instructions, and the
+--         <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-scope-shadercall ShaderCallKHR>
+--         scope.
+--
+--     -   This extension interacts with @VK_KHR_pipeline_library@,
+--         enabling pipeline libraries to be used with ray tracing
+--         pipelines and enabling usage of
+--         'RayTracingPipelineInterfaceCreateInfoKHR'.
+--
+-- [__Contributors__]
+--
+--     -   Matthäus Chajdas, AMD
+--
+--     -   Greg Grebe, AMD
+--
+--     -   Nicolai Hähnle, AMD
+--
+--     -   Tobias Hector, AMD
+--
+--     -   Dave Oldcorn, AMD
+--
+--     -   Skyler Saleh, AMD
+--
+--     -   Mathieu Robart, Arm
+--
+--     -   Marius Bjorge, Arm
+--
+--     -   Tom Olson, Arm
+--
+--     -   Sebastian Tafuri, EA
+--
+--     -   Henrik Rydgard, Embark
+--
+--     -   Juan Cañada, Epic Games
+--
+--     -   Patrick Kelly, Epic Games
+--
+--     -   Yuriy O’Donnell, Epic Games
+--
+--     -   Michael Doggett, Facebook\/Oculus
+--
+--     -   Andrew Garrard, Imagination
+--
+--     -   Don Scorgie, Imagination
+--
+--     -   Dae Kim, Imagination
+--
+--     -   Joshua Barczak, Intel
+--
+--     -   Slawek Grajewski, Intel
+--
+--     -   Jeff Bolz, NVIDIA
+--
+--     -   Pascal Gautron, NVIDIA
+--
+--     -   Daniel Koch, NVIDIA
+--
+--     -   Christoph Kubisch, NVIDIA
+--
+--     -   Ashwin Lele, NVIDIA
+--
+--     -   Robert Stepinski, NVIDIA
+--
+--     -   Martin Stich, NVIDIA
+--
+--     -   Nuno Subtil, NVIDIA
+--
+--     -   Eric Werness, NVIDIA
+--
+--     -   Jon Leech, Khronos
+--
+--     -   Jeroen van Schijndel, OTOY
+--
+--     -   Juul Joosten, OTOY
+--
+--     -   Alex Bourd, Qualcomm
+--
+--     -   Roman Larionov, Qualcomm
+--
+--     -   David McAllister, Qualcomm
+--
+--     -   Spencer Fricke, Samsung
+--
+--     -   Lewis Gordon, Samsung
+--
+--     -   Ralph Potter, Samsung
+--
+--     -   Jasper Bekkers, Traverse Research
+--
+--     -   Jesse Barker, Unity
+--
+--     -   Baldur Karlsson, Valve
+--
+-- == Description
+--
+-- Rasterization has been the dominant method to produce interactive
+-- graphics, but increasing performance of graphics hardware has made ray
+-- tracing a viable option for interactive rendering. Being able to
+-- integrate ray tracing with traditional rasterization makes it easier for
+-- applications to incrementally add ray traced effects to existing
+-- applications or to do hybrid approaches with rasterization for primary
+-- visibility and ray tracing for secondary queries.
+--
+-- To enable ray tracing, this extension adds a few different categories of
+-- new functionality:
+--
+-- -   A new ray tracing pipeline type with new shader domains: ray
+--     generation, intersection, any-hit, closest hit, miss, and callable
+--
+-- -   A shader binding indirection table to link shader groups with
+--     acceleration structure items
+--
+-- -   Ray tracing commands which initiate the ray pipeline traversal and
+--     invocation of the various new shader domains depending on which
+--     traversal conditions are met
+--
+-- This extension adds support for the following SPIR-V extension in
+-- Vulkan:
+--
+-- -   @SPV_KHR_ray_tracing@
+--
+-- == New Commands
+--
+-- -   'cmdSetRayTracingPipelineStackSizeKHR'
+--
+-- -   'cmdTraceRaysIndirectKHR'
+--
+-- -   'cmdTraceRaysKHR'
+--
+-- -   'createRayTracingPipelinesKHR'
+--
+-- -   'getRayTracingCaptureReplayShaderGroupHandlesKHR'
+--
+-- -   'getRayTracingShaderGroupHandlesKHR'
+--
+-- -   'getRayTracingShaderGroupStackSizeKHR'
+--
+-- == New Structures
+--
+-- -   'RayTracingPipelineCreateInfoKHR'
+--
+-- -   'RayTracingPipelineInterfaceCreateInfoKHR'
+--
+-- -   'RayTracingShaderGroupCreateInfoKHR'
+--
+-- -   'StridedDeviceAddressRegionKHR'
+--
+-- -   'TraceRaysIndirectCommandKHR'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceRayTracingPipelineFeaturesKHR'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDeviceRayTracingPipelinePropertiesKHR'
+--
+-- == New Enums
+--
+-- -   'RayTracingShaderGroupTypeKHR'
+--
+-- -   'ShaderGroupShaderKHR'
+--
+-- == New Enum Constants
+--
+-- -   'KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME'
+--
+-- -   'KHR_RAY_TRACING_PIPELINE_SPEC_VERSION'
+--
+-- -   'Vulkan.Core10.APIConstants.SHADER_UNUSED_KHR'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BufferUsageFlagBits':
+--
+--     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR'
+--
+-- -   Extending 'Vulkan.Core10.Enums.DynamicState.DynamicState':
+--
+--     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR'
+--
+-- -   Extending 'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint':
+--
+--     -   'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_RAY_TRACING_KHR'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits':
+--
+--     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR'
+--
+--     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR'
+--
+--     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR'
+--
+--     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR'
+--
+--     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR'
+--
+--     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR'
+--
+--     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR'
+--
+-- -   Extending
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PipelineCreateFlagBits2':
+--
+--     -   'PIPELINE_CREATE_2_RAY_TRACING_SKIP_BUILT_IN_PRIMITIVES_BIT_KHR'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits':
+--
+--     -   'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits':
+--
+--     -   'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_ANY_HIT_BIT_KHR'
+--
+--     -   'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_CALLABLE_BIT_KHR'
+--
+--     -   'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_CLOSEST_HIT_BIT_KHR'
+--
+--     -   'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_INTERSECTION_BIT_KHR'
+--
+--     -   'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MISS_BIT_KHR'
+--
+--     -   'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_RAYGEN_BIT_KHR'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR'
+--
+-- == New or Modified Built-In Variables
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-launchid LaunchIdKHR>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-launchsize LaunchSizeKHR>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-worldrayorigin WorldRayOriginKHR>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-worldraydirection WorldRayDirectionKHR>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-objectrayorigin ObjectRayOriginKHR>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-objectraydirection ObjectRayDirectionKHR>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-raytmin RayTminKHR>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-raytmax RayTmaxKHR>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-instancecustomindex InstanceCustomIndexKHR>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-instanceid InstanceId>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-objecttoworld ObjectToWorldKHR>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-worldtoobject WorldToObjectKHR>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-hitkind HitKindKHR>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-incomingrayflags IncomingRayFlagsKHR>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-raygeometryindex RayGeometryIndexKHR>
+--
+-- -   (modified)@PrimitiveId@
+--
+-- == New SPIR-V Capabilities
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-RayTracingKHR RayTracingKHR>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-RayTraversalPrimitiveCullingKHR RayTraversalPrimitiveCullingKHR>
+--
+-- == Issues
+--
+-- (1) How does this extension differ from VK_NV_ray_tracing?
+--
+-- __DISCUSSION__:
+--
+-- The following is a summary of the main functional differences between
+-- VK_KHR_ray_tracing_pipeline and VK_NV_ray_tracing:
+--
+-- -   added support for indirect ray tracing ('cmdTraceRaysIndirectKHR')
+--
+-- -   uses SPV_KHR_ray_tracing instead of SPV_NV_ray_tracing
+--
+--     -   refer to KHR SPIR-V enums instead of NV SPIR-V enums (which are
+--         functionally equivalent and aliased to the same values).
+--
+--     -   added @RayGeometryIndexKHR@ built-in
+--
+-- -   removed vkCompileDeferredNV compilation functionality and replaced
+--     with
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#deferred-host-operations deferred host operations>
+--     interactions for ray tracing
+--
+-- -   added 'PhysicalDeviceRayTracingPipelineFeaturesKHR' structure
+--
+-- -   extended 'PhysicalDeviceRayTracingPipelinePropertiesKHR' structure
+--
+--     -   renamed @maxRecursionDepth@ to @maxRayRecursionDepth@ and it has
+--         a minimum of 1 instead of 31
+--
+--     -   require @shaderGroupHandleSize@ to be 32 bytes
+--
+--     -   added @maxRayDispatchInvocationCount@,
+--         @shaderGroupHandleAlignment@ and @maxRayHitAttributeSize@
+--
+-- -   reworked geometry structures so they could be better shared between
+--     device, host, and indirect builds
+--
+-- -   changed SBT parameters to a structure and added size
+--     ('StridedDeviceAddressRegionKHR')
+--
+-- -   add parameter for requesting memory requirements for host and\/or
+--     device build
+--
+-- -   added
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-library pipeline library>
+--     support for ray tracing
+--
+-- -   added
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/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 comparison of differences and
+-- similarities between VK_NV_ray_tracing and VK_KHR_ray_tracing_pipeline?
+--
+-- __DISCUSSION__:
+--
+-- The following is a more detailed comparison of which commands,
+-- structures, and enums are aliased, changed, or removed.
+--
+-- -   Aliased functionality — enums, structures, and commands that are
+--     considered equivalent:
+--
+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.RayTracingShaderGroupTypeNV'
+--         ↔ 'RayTracingShaderGroupTypeKHR'
+--
+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.getRayTracingShaderGroupHandlesNV'
+--         ↔ 'getRayTracingShaderGroupHandlesKHR'
+--
+-- -   Changed enums, structures, and commands:
+--
+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.RayTracingShaderGroupCreateInfoNV'
+--         → 'RayTracingShaderGroupCreateInfoKHR' (added
+--         @pShaderGroupCaptureReplayHandle@)
+--
+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.RayTracingPipelineCreateInfoNV'
+--         → 'RayTracingPipelineCreateInfoKHR' (changed type of @pGroups@,
+--         added @libraries@, @pLibraryInterface@, and @pDynamicState@)
+--
+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.PhysicalDeviceRayTracingPropertiesNV'
+--         → 'PhysicalDeviceRayTracingPipelinePropertiesKHR' (renamed
+--         @maxTriangleCount@ to @maxPrimitiveCount@, added
+--         @shaderGroupHandleCaptureReplaySize@)
+--
+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.cmdTraceRaysNV' →
+--         'cmdTraceRaysKHR' (params to struct)
+--
+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.createRayTracingPipelinesNV'
+--         → 'createRayTracingPipelinesKHR' (different struct, changed
+--         functionality)
+--
+-- -   Added enums, structures, and commands:
+--
+--     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR'
+--         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR',
+--         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR',
+--         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR',
+--         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR',
+--         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR'
+--         to
+--         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits'
+--
+--     -   'PhysicalDeviceRayTracingPipelineFeaturesKHR' structure
+--
+--     -   'Vulkan.Extensions.VK_KHR_acceleration_structure.DeviceOrHostAddressKHR'
+--         and
+--         'Vulkan.Extensions.VK_KHR_acceleration_structure.DeviceOrHostAddressConstKHR'
+--         unions
+--
+--     -   'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'
+--         struct
+--
+--     -   'RayTracingPipelineInterfaceCreateInfoKHR' struct
+--
+--     -   'StridedDeviceAddressRegionKHR' struct
+--
+--     -   'cmdTraceRaysIndirectKHR' command and
+--         'TraceRaysIndirectCommandKHR' struct
+--
+--     -   'getRayTracingCaptureReplayShaderGroupHandlesKHR' (shader group
+--         capture\/replay)
+--
+--     -   'cmdSetRayTracingPipelineStackSizeKHR' and
+--         'getRayTracingShaderGroupStackSizeKHR' commands for stack size
+--         control
+--
+-- -   Functionality removed:
+--
+--     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DEFER_COMPILE_BIT_NV'
+--
+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.compileDeferredNV' command
+--         (replaced with @VK_KHR_deferred_host_operations@)
+--
+-- (3) What are the changes between the public provisional
+-- (VK_KHR_ray_tracing v8) release and the internal provisional
+-- (VK_KHR_ray_tracing v9) release?
+--
+-- -   Require Vulkan 1.1 and SPIR-V 1.4
+--
+-- -   Added interactions with Vulkan 1.2 and @VK_KHR_vulkan_memory_model@
+--
+-- -   added creation time capture and replay flags
+--
+--     -   added
+--         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR'
+--         to
+--         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits'
+--
+-- -   replace @VkStridedBufferRegionKHR@ with
+--     'StridedDeviceAddressRegionKHR' and change 'cmdTraceRaysKHR',
+--     'cmdTraceRaysIndirectKHR', to take these for the shader binding
+--     table and use device addresses instead of buffers.
+--
+-- -   require the shader binding table buffers to have the
+--     @VK_BUFFER_USAGE_RAY_TRACING_BIT_KHR@ set
+--
+-- -   make @VK_KHR_pipeline_library@ an interaction instead of required
+--     extension
+--
+-- -   rename the @libraries@ member of 'RayTracingPipelineCreateInfoKHR'
+--     to @pLibraryInfo@ and make it a pointer
+--
+-- -   make @VK_KHR_deferred_host_operations@ an interaction instead of a
+--     required extension (later went back on this)
+--
+-- -   added explicit stack size management for ray tracing pipelines
+--
+--     -   removed the @maxCallableSize@ member of
+--         'RayTracingPipelineInterfaceCreateInfoKHR'
+--
+--     -   added the @pDynamicState@ member to
+--         'RayTracingPipelineCreateInfoKHR'
+--
+--     -   added
+--         'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR'
+--         dynamic state for ray tracing pipelines
+--
+--     -   added 'getRayTracingShaderGroupStackSizeKHR' and
+--         'cmdSetRayTracingPipelineStackSizeKHR' commands
+--
+--     -   added 'ShaderGroupShaderKHR' enum
+--
+-- -   Added @maxRayDispatchInvocationCount@ limit to
+--     'PhysicalDeviceRayTracingPipelinePropertiesKHR'
+--
+-- -   Added @shaderGroupHandleAlignment@ property to
+--     'PhysicalDeviceRayTracingPipelinePropertiesKHR'
+--
+-- -   Added @maxRayHitAttributeSize@ property to
+--     'PhysicalDeviceRayTracingPipelinePropertiesKHR'
+--
+-- -   Clarify deferred host ops for pipeline creation
+--
+--     -   'Vulkan.Extensions.Handles.DeferredOperationKHR' is now a
+--         top-level parameter for 'createRayTracingPipelinesKHR'
+--
+--     -   removed @VkDeferredOperationInfoKHR@ structure
+--
+--     -   change deferred host creation\/return parameter behavior such
+--         that the implementation can modify such parameters until the
+--         deferred host operation completes
+--
+--     -   @VK_KHR_deferred_host_operations@ is required again
+--
+-- (4) What are the changes between the internal provisional
+-- (VK_KHR_ray_tracing v9) release and the final
+-- (VK_KHR_acceleration_structure v11 \/ VK_KHR_ray_tracing_pipeline v1)
+-- release?
+--
+-- -   refactor VK_KHR_ray_tracing into 3 extensions, enabling
+--     implementation flexibility and decoupling ray query support from ray
+--     pipelines:
+--
+--     -   @VK_KHR_acceleration_structure@ (for acceleration structure
+--         operations)
+--
+--     -   @VK_KHR_ray_tracing_pipeline@ (for ray tracing pipeline and
+--         shader stages)
+--
+--     -   @VK_KHR_ray_query@ (for ray queries in existing shader stages)
+--
+-- -   Require @Volatile@ for the following builtins in the ray generation,
+--     closest hit, miss, intersection, and callable shader stages:
+--
+--     -   @SubgroupSize@, @SubgroupLocalInvocationId@, @SubgroupEqMask@,
+--         @SubgroupGeMask@, @SubgroupGtMask@, @SubgroupLeMask@,
+--         @SubgroupLtMask@
+--
+--     -   @SMIDNV@, @WarpIDNV@
+--
+-- -   clarify buffer usage flags for ray tracing
+--
+--     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR'
+--         is added as an alias of
+--         'Vulkan.Extensions.VK_NV_ray_tracing.BUFFER_USAGE_RAY_TRACING_BIT_NV'
+--         and is required on shader binding table buffers
+--
+--     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_STORAGE_BUFFER_BIT'
+--         is used in @VK_KHR_acceleration_structure@ for @scratchData@
+--
+-- -   rename @maxRecursionDepth@ to @maxRayPipelineRecursionDepth@
+--     (pipeline creation) and @maxRayRecursionDepth@ (limit) to reduce
+--     confusion
+--
+-- -   Add queryable @maxRayHitAttributeSize@ limit and rename members of
+--     'RayTracingPipelineInterfaceCreateInfoKHR' to
+--     @maxPipelineRayPayloadSize@ and @maxPipelineRayHitAttributeSize@ for
+--     clarity
+--
+-- -   Update SPIRV capabilities to use @RayTracingKHR@
+--
+-- -   extension is no longer provisional
+--
+-- -   define synchronization requirements for indirect trace rays and
+--     indirect buffer
+--
+-- (5) This extension adds gl_InstanceID for the intersection, any-hit, and
+-- closest hit shaders, but in KHR_vulkan_glsl, gl_InstanceID is replaced
+-- with gl_InstanceIndex. Which should be used for Vulkan in this
+-- extension?
+--
+-- __RESOLVED__: This extension uses gl_InstanceID and maps it to
+-- @InstanceId@ in SPIR-V. It is acknowledged that this is different than
+-- other shader stages in Vulkan. There are two main reasons for the
+-- difference here:
+--
+-- -   symmetry with gl_PrimitiveID which is also available in these
+--     shaders
+--
+-- -   there is no “baseInstance” relevant for these shaders, and so ID
+--     makes it more obvious that this is zero-based.
+--
+-- (6) Why is @VK_KHR_pipeline_library@ an interaction instead of a
+-- required dependency, particularly when the “Device Extensions” section
+-- says it is required to be supported anyhow?
+--
+-- __RESOLVED__: If the @VK_KHR_pipeline_library@ extension were a required
+-- dependency, then every application would need to enable the extension
+-- whether or not they actually want to use the pipeline library
+-- functionality. Developers found this to be annoying and unfriendly
+-- behavior. We do wish to require all __implementations__ to support it
+-- though, and thus it is listed as a requirement in device extensions
+-- section.
+--
+-- == Sample Code
+--
+-- Example ray generation GLSL shader
+--
+-- > #version 450 core
+-- > #extension GL_EXT_ray_tracing : require
+-- > layout(set = 0, binding = 0, rgba8) uniform image2D image;
+-- > layout(set = 0, binding = 1) uniform accelerationStructureEXT as;
+-- > layout(location = 0) rayPayloadEXT float payload;
+-- >
+-- > void main()
+-- > {
+-- >    vec4 col = vec4(0, 0, 0, 1);
+-- >
+-- >    vec3 origin = vec3(float(gl_LaunchIDEXT.x)/float(gl_LaunchSizeEXT.x), float(gl_LaunchIDEXT.y)/float(gl_LaunchSizeEXT.y), 1.0);
+-- >    vec3 dir = vec3(0.0, 0.0, -1.0);
+-- >
+-- >    traceRayEXT(as, 0, 0xff, 0, 1, 0, origin, 0.0, dir, 1000.0, 0);
+-- >
+-- >    col.y = payload;
+-- >
+-- >    imageStore(image, ivec2(gl_LaunchIDEXT.xy), col);
+-- > }
+--
+-- == Version History
+--
+-- -   Revision 1, 2020-11-12 (Mathieu Robart, Daniel Koch, Eric Werness,
+--     Tobias Hector)
+--
+--     -   Decomposition of the specification, from VK_KHR_ray_tracing to
+--         VK_KHR_ray_tracing_pipeline (#1918,!3912)
+--
+--     -   require certain subgroup and sm_shader_builtin shader builtins
+--         to be decorated as volatile in the ray generation, closest hit,
+--         miss, intersection, and callable stages (#1924,!3903,!3954)
+--
+--     -   clarify buffer usage flags for ray tracing (#2181,!3939)
+--
+--     -   rename maxRecursionDepth to maxRayPipelineRecursionDepth and
+--         maxRayRecursionDepth (#2203,!3937)
+--
+--     -   add queryable maxRayHitAttributeSize and rename members of
+--         VkRayTracingPipelineInterfaceCreateInfoKHR (#2102,!3966)
+--
+--     -   update to use @RayTracingKHR@ SPIR-V capability
+--
+--     -   add VUs for matching hit group type against geometry type
+--         (#2245,!3994)
+--
+--     -   require @RayTMaxKHR@ be volatile in intersection shaders
+--         (#2268,!4030)
+--
+--     -   add numerical limits for ray parameters (#2235,!3960)
+--
+--     -   fix SBT indexing rules for device addresses (#2308,!4079)
+--
+--     -   relax formula for ray intersection candidate determination
+--         (#2322,!4080)
+--
+--     -   add more details on @ShaderRecordBufferKHR@ variables
+--         (#2230,!4083)
+--
+--     -   clarify valid bits for @InstanceCustomIndexKHR@
+--         (GLSL\/GLSL#19,!4128)
+--
+--     -   allow at most one @IncomingRayPayloadKHR@,
+--         @IncomingCallableDataKHR@, and @HitAttributeKHR@ (!4129)
+--
+--     -   add minimum for maxShaderGroupStride (#2353,!4131)
+--
+--     -   require VK_KHR_pipeline_library extension to be supported
+--         (#2348,!4135)
+--
+--     -   clarify meaning of \'geometry index\' (#2272,!4137)
+--
+--     -   restrict traces to TLAS (#2239,!4141)
+--
+--     -   add note about maxPipelineRayPayloadSize (#2383,!4172)
+--
+--     -   do not require raygen shader in pipeline libraries (!4185)
+--
+--     -   define sync for indirect trace rays and indirect buffer
+--         (#2407,!4208)
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
+module Vulkan.Extensions.VK_KHR_ray_tracing_pipeline  ( cmdTraceRaysKHR
+                                                      , getRayTracingShaderGroupHandlesKHR
+                                                      , getRayTracingCaptureReplayShaderGroupHandlesKHR
+                                                      , createRayTracingPipelinesKHR
+                                                      , withRayTracingPipelinesKHR
+                                                      , cmdTraceRaysIndirectKHR
+                                                      , getRayTracingShaderGroupStackSizeKHR
+                                                      , cmdSetRayTracingPipelineStackSizeKHR
+                                                      , pattern PIPELINE_CREATE_2_RAY_TRACING_SKIP_BUILT_IN_PRIMITIVES_BIT_KHR
+                                                      , RayTracingShaderGroupCreateInfoKHR(..)
+                                                      , RayTracingPipelineCreateInfoKHR(..)
+                                                      , PhysicalDeviceRayTracingPipelineFeaturesKHR(..)
+                                                      , PhysicalDeviceRayTracingPipelinePropertiesKHR(..)
+                                                      , StridedDeviceAddressRegionKHR(..)
+                                                      , TraceRaysIndirectCommandKHR(..)
+                                                      , RayTracingPipelineInterfaceCreateInfoKHR(..)
+                                                      , RayTracingShaderGroupTypeKHR( RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR
+                                                                                    , RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR
+                                                                                    , RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR
+                                                                                    , ..
+                                                                                    )
+                                                      , ShaderGroupShaderKHR( SHADER_GROUP_SHADER_GENERAL_KHR
+                                                                            , SHADER_GROUP_SHADER_CLOSEST_HIT_KHR
+                                                                            , SHADER_GROUP_SHADER_ANY_HIT_KHR
+                                                                            , SHADER_GROUP_SHADER_INTERSECTION_KHR
+                                                                            , ..
+                                                                            )
+                                                      , KHR_RAY_TRACING_PIPELINE_SPEC_VERSION
+                                                      , pattern KHR_RAY_TRACING_PIPELINE_SPEC_VERSION
+                                                      , KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME
+                                                      , pattern KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME
+                                                      , DeferredOperationKHR(..)
+                                                      , PipelineLibraryCreateInfoKHR(..)
+                                                      , SHADER_UNUSED_KHR
+                                                      , pattern SHADER_UNUSED_KHR
+                                                      ) 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.Foldable (traverse_)
+import Data.Typeable (eqT)
+import Foreign.Marshal.Alloc (allocaBytes)
+import Foreign.Marshal.Alloc (callocBytes)
+import Foreign.Marshal.Alloc (free)
+import Foreign.Marshal.Utils (maybePeek)
+import 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 (showsPrec)
+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 Foreign.C.Types (CSize(..))
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (FromCStruct(..))
+import Vulkan.CStruct (ToCStruct)
+import Vulkan.CStruct (ToCStruct(..))
+import Vulkan.Zero (Zero)
+import Vulkan.Zero (Zero(..))
+import Control.Monad.IO.Class (MonadIO)
+import Data.String (IsString)
+import Data.Type.Equality ((:~:)(Refl))
+import Data.Typeable (Typeable)
+import Foreign.C.Types (CSize)
+import Foreign.C.Types (CSize(CSize))
+import Foreign.Storable (Storable)
+import Foreign.Storable (Storable(peek))
+import Foreign.Storable (Storable(poke))
+import qualified Foreign.Storable (Storable(..))
+import GHC.Generics (Generic)
+import GHC.IO.Exception (IOErrorType(..))
+import GHC.IO.Exception (IOException(..))
+import Data.Int (Int32)
+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.Core10.ComputePipeline (destroyPipeline)
+import Vulkan.CStruct.Extends (forgetExtensions)
+import Vulkan.CStruct.Extends (peekSomeCStruct)
+import Vulkan.CStruct.Extends (pokeSomeCStruct)
+import Vulkan.NamedType ((:::))
+import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)
+import Vulkan.Core10.FundamentalTypes (Bool32)
+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.Extensions.Handles (DeferredOperationKHR)
+import Vulkan.Extensions.Handles (DeferredOperationKHR(..))
+import Vulkan.Core10.Handles (Device)
+import Vulkan.Core10.Handles (Device(..))
+import Vulkan.Core10.Handles (Device(Device))
+import Vulkan.Core10.FundamentalTypes (DeviceAddress)
+import Vulkan.Dynamic (DeviceCmds(pVkCmdSetRayTracingPipelineStackSizeKHR))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdTraceRaysIndirectKHR))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdTraceRaysKHR))
+import Vulkan.Dynamic (DeviceCmds(pVkCreateRayTracingPipelinesKHR))
+import Vulkan.Dynamic (DeviceCmds(pVkGetRayTracingCaptureReplayShaderGroupHandlesKHR))
+import Vulkan.Dynamic (DeviceCmds(pVkGetRayTracingShaderGroupHandlesKHR))
+import Vulkan.Dynamic (DeviceCmds(pVkGetRayTracingShaderGroupStackSizeKHR))
+import Vulkan.Core10.FundamentalTypes (DeviceSize)
+import Vulkan.Core10.Handles (Device_T)
+import Vulkan.CStruct.Extends (Extends)
+import Vulkan.CStruct.Extends (Extendss)
+import Vulkan.CStruct.Extends (Extensible(..))
+import Vulkan.CStruct.Extends (PeekChain)
+import Vulkan.CStruct.Extends (PeekChain(..))
+import Vulkan.Core10.Handles (Pipeline)
+import Vulkan.Core10.Handles (Pipeline(..))
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_pipeline_binary (PipelineBinaryInfoKHR)
+import Vulkan.Core10.Handles (PipelineCache)
+import Vulkan.Core10.Handles (PipelineCache(..))
+import Vulkan.Core10.Enums.PipelineCreateFlagBits (PipelineCreateFlags)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_maintenance5 (PipelineCreateFlags2CreateInfo)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_pipeline_creation_feedback (PipelineCreationFeedbackCreateInfo)
+import Vulkan.Core10.GraphicsPipeline (PipelineDynamicStateCreateInfo)
+import Vulkan.Core10.Handles (PipelineLayout)
+import Vulkan.Extensions.VK_KHR_pipeline_library (PipelineLibraryCreateInfoKHR)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_EXT_pipeline_robustness (PipelineRobustnessCreateInfo)
+import Vulkan.Core10.ComputePipeline (PipelineShaderStageCreateInfo)
+import Vulkan.CStruct.Extends (PokeChain)
+import Vulkan.CStruct.Extends (PokeChain(..))
+import Vulkan.Core10.Enums.Result (Result)
+import Vulkan.Core10.Enums.Result (Result(..))
+import Vulkan.CStruct.Extends (SomeStruct)
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Exception (VulkanException(..))
+import Vulkan.Core14.Enums.PipelineCreateFlags2 (PipelineCreateFlags2)
+import Vulkan.Core14.Enums.PipelineCreateFlags2 (PipelineCreateFlagBits2(PIPELINE_CREATE_2_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR))
+import Vulkan.Core10.Enums.Result (Result(SUCCESS))
+import Vulkan.Extensions.Handles (DeferredOperationKHR(..))
+import Vulkan.Extensions.VK_KHR_pipeline_library (PipelineLibraryCreateInfoKHR(..))
+import Vulkan.Core10.APIConstants (SHADER_UNUSED_KHR)
+import Vulkan.Core10.APIConstants (pattern SHADER_UNUSED_KHR)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdTraceRaysKHR
+  :: FunPtr (Ptr CommandBuffer_T -> Ptr StridedDeviceAddressRegionKHR -> Ptr StridedDeviceAddressRegionKHR -> Ptr StridedDeviceAddressRegionKHR -> Ptr StridedDeviceAddressRegionKHR -> Word32 -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Ptr StridedDeviceAddressRegionKHR -> Ptr StridedDeviceAddressRegionKHR -> Ptr StridedDeviceAddressRegionKHR -> Ptr StridedDeviceAddressRegionKHR -> Word32 -> Word32 -> Word32 -> IO ()
+
+-- | vkCmdTraceRaysKHR - Initialize a ray tracing dispatch
+--
+-- = Description
+--
+-- When the command is executed, a ray generation group of @width@ ×
+-- @height@ × @depth@ rays is assembled.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdTraceRaysKHR-magFilter-04553# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
+--     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR',
+--     @reductionMode@ equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
+--     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-vkCmdTraceRaysKHR-magFilter-09598# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
+--     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR' and
+--     @reductionMode@ equal to either
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
+--     or
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
+--     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_MINMAX_BIT'
+--
+-- -   #VUID-vkCmdTraceRaysKHR-mipmapMode-04770# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
+--     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR',
+--     @reductionMode@ equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
+--     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-vkCmdTraceRaysKHR-mipmapMode-09599# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
+--     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'
+--     and @reductionMode@ equal to either
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
+--     or
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
+--     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_MINMAX_BIT'
+--
+-- -   #VUID-vkCmdTraceRaysKHR-unnormalizedCoordinates-09635# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the image view’s @levelCount@ and @layerCount@ /must/ be 1
+--
+-- -   #VUID-vkCmdTraceRaysKHR-None-08609# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the image view’s @viewType@ /must/ be
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D' or
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D'
+--
+-- -   #VUID-vkCmdTraceRaysKHR-None-08610# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the sampler /must/ not be used with any of the SPIR-V
+--     @OpImageSample*@ or @OpImageSparseSample*@ instructions with
+--     @ImplicitLod@, @Dref@ or @Proj@ in their name
+--
+-- -   #VUID-vkCmdTraceRaysKHR-None-08611# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the sampler /must/ not be used with any of the SPIR-V
+--     @OpImageSample*@ or @OpImageSparseSample*@ instructions that
+--     includes a LOD bias or any offset values
+--
+-- -   #VUID-vkCmdTraceRaysKHR-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-vkCmdTraceRaysKHR-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-vkCmdTraceRaysKHR-None-07888# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'
+--     descriptor is accessed using atomic operations as a result of this
+--     command, then the storage texel buffer’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-buffer-view-format-features format features>
+--     /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT'
+--
+-- -   #VUID-vkCmdTraceRaysKHR-None-02692# If a
+--     'Vulkan.Core10.Handles.ImageView' is sampled with
+--     'Vulkan.Core10.Enums.Filter.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.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'
+--
+-- -   #VUID-vkCmdTraceRaysKHR-None-02693# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_filter_cubic VK_EXT_filter_cubic>
+--     extension is not enabled and any 'Vulkan.Core10.Handles.ImageView'
+--     is sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as a
+--     result of this command, it /must/ not have a
+--     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' of
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE', or
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY'
+--
+-- -   #VUID-vkCmdTraceRaysKHR-filterCubic-02694# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with
+--     'Vulkan.Core10.Enums.Filter.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-vkCmdTraceRaysKHR-filterCubicMinmax-02695# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with
+--     'Vulkan.Core10.Enums.Filter.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-vkCmdTraceRaysKHR-cubicRangeClamp-09212# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-cubicRangeClamp cubicRangeClamp>
+--     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
+--     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
+--     a result of this command /must/ not have a
+--     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
+--     equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
+--
+-- -   #VUID-vkCmdTraceRaysKHR-reductionMode-09213# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with a
+--     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
+--     equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
+--     as a result of this command /must/ sample with
+--     'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT'
+--
+-- -   #VUID-vkCmdTraceRaysKHR-selectableCubicWeights-09214# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-selectableCubicWeights selectableCubicWeights>
+--     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
+--     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
+--     a result of this command /must/ have
+--     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.SamplerCubicWeightsCreateInfoQCOM'::@cubicWeights@
+--     equal to
+--     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM'
+--
+-- -   #VUID-vkCmdTraceRaysKHR-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-vkCmdTraceRaysKHR-OpTypeImage-07027# For any
+--     'Vulkan.Core10.Handles.ImageView' being written as a storage image
+--     where the image format field of the @OpTypeImage@ is @Unknown@, the
+--     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_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdTraceRaysKHR-OpTypeImage-07028# For any
+--     'Vulkan.Core10.Handles.ImageView' being read as a storage image
+--     where the image format field of the @OpTypeImage@ is @Unknown@, the
+--     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_STORAGE_READ_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdTraceRaysKHR-OpTypeImage-07029# For any
+--     'Vulkan.Core10.Handles.BufferView' being written as a storage texel
+--     buffer where the image format field of the @OpTypeImage@ is
+--     @Unknown@, the view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
+--     /must/ contain
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdTraceRaysKHR-OpTypeImage-07030# Any
+--     'Vulkan.Core10.Handles.BufferView' being read as a storage texel
+--     buffer where the image format field of the @OpTypeImage@ is
+--     @Unknown@ then the view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
+--     /must/ contain
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdTraceRaysKHR-None-08600# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
+--     was created with a pipeline layout and statically uses a set /n/, a
+--     descriptor set /must/ have been bound to /n/ at the same pipeline
+--     bind point, with layouts compatible for set /n/ with the layout(s)
+--     used to create the shader, as described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptors-compatibility ???>
+--
+-- -   #VUID-vkCmdTraceRaysKHR-None-08601# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
+--     was created with a pipeline layout or specified push constant ranges
+--     and statically uses a push constant value, that value /must/ have
+--     been set for the same pipeline bind point, with push constant ranges
+--     that are
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptors-compatibility compatible>
+--     with the push constant range used to create the shader
+--
+-- -   #VUID-vkCmdTraceRaysKHR-None-10068# For each array of resources that
+--     is used by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
+--     the indices used to access members of the array /must/ be less than
+--     the descriptor count for the identified binding in the descriptor
+--     sets used by this command
+--
+-- -   #VUID-vkCmdTraceRaysKHR-None-08114# Descriptors in each bound
+--     descriptor set, specified via
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
+--     be valid if they are accessed as described by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
+--     by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
+--     point used by this command and the bound
+--     'Vulkan.Core10.Handles.Pipeline' was not created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdTraceRaysKHR-imageLayout-00344# If an image descriptor is
+--     accessed by a shader, the
+--     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' /must/ match the
+--     subresource accessible from the 'Vulkan.Core10.Handles.ImageView' 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>
+--
+-- -   #VUID-vkCmdTraceRaysKHR-None-08115# If the descriptors used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     were specified via
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', the
+--     bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     without
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdTraceRaysKHR-None-08116# Descriptors in bound descriptor
+--     buffers, specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     /must/ be valid if they are dynamically used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
+--     was created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdTraceRaysKHR-None-08604# Descriptors in bound descriptor
+--     buffers, specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     /must/ be valid if they are dynamically used by any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     to the pipeline bind point used by this command
+--
+-- -   #VUID-vkCmdTraceRaysKHR-None-08117# If the descriptors used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     were specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdTraceRaysKHR-None-08119# If a descriptor is dynamically
+--     used with a 'Vulkan.Core10.Handles.Pipeline' created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     the descriptor memory /must/ be resident
+--
+-- -   #VUID-vkCmdTraceRaysKHR-None-08605# If a descriptor is dynamically
+--     used with a 'Vulkan.Extensions.Handles.ShaderEXT' created with a
+--     'Vulkan.Core10.Handles.DescriptorSetLayout' that was created with
+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     the descriptor memory /must/ be resident
+--
+-- -   #VUID-vkCmdTraceRaysKHR-None-08606# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject>
+--     feature is not enabled, a valid pipeline /must/ be bound to the
+--     pipeline bind point used by this command
+--
+-- -   #VUID-vkCmdTraceRaysKHR-None-08608# If a pipeline is bound to the
+--     pipeline bind point used by this command, there /must/ not have been
+--     any calls to dynamic state setting commands for any state specified
+--     statically in the 'Vulkan.Core10.Handles.Pipeline' object bound to
+--     the pipeline bind point used by this command, since that pipeline
+--     was bound
+--
+-- -   #VUID-vkCmdTraceRaysKHR-uniformBuffers-06935# If any stage of the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command accesses a uniform buffer, and that stage
+--     was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @uniformBuffers@, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /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-vkCmdTraceRaysKHR-None-08612# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, and any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     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-vkCmdTraceRaysKHR-storageBuffers-06936# If any stage of the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command accesses a storage buffer, and that stage
+--     was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @storageBuffers@, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /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-vkCmdTraceRaysKHR-None-08613# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, and any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     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-vkCmdTraceRaysKHR-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
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shaders>
+--     /must/ not be a protected resource
+--
+-- -   #VUID-vkCmdTraceRaysKHR-viewType-07752# If a
+--     'Vulkan.Core10.Handles.ImageView' is accessed as a result of this
+--     command, then the image view’s @viewType@ /must/ match the @Dim@
+--     operand of the @OpTypeImage@ as described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-image-dimensions ???>
+--
+-- -   #VUID-vkCmdTraceRaysKHR-format-07753# If a
+--     'Vulkan.Core10.Handles.ImageView' or
+--     'Vulkan.Core10.Handles.BufferView' is accessed as a result of this
+--     command, then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-numericformat numeric type>
+--     of the view’s @format@ and the @Sampled@ @Type@ operand of the
+--     @OpTypeImage@ /must/ match
+--
+-- -   #VUID-vkCmdTraceRaysKHR-OpImageWrite-08795# If a
+--     'Vulkan.Core10.Handles.ImageView' created with a format other than
+--     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM' 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-vkCmdTraceRaysKHR-OpImageWrite-08796# If a
+--     'Vulkan.Core10.Handles.ImageView' created with the format
+--     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM' is accessed using
+--     @OpImageWrite@ as a result of this command, then the @Type@ of the
+--     @Texel@ operand of that instruction /must/ have four components
+--
+-- -   #VUID-vkCmdTraceRaysKHR-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-vkCmdTraceRaysKHR-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-vkCmdTraceRaysKHR-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-vkCmdTraceRaysKHR-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-vkCmdTraceRaysKHR-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-vkCmdTraceRaysKHR-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-vkCmdTraceRaysKHR-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-vkCmdTraceRaysKHR-OpImageSampleWeightedQCOM-06971# If
+--     @OpImageSampleWeightedQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM'
+--
+-- -   #VUID-vkCmdTraceRaysKHR-OpImageSampleWeightedQCOM-06972# If
+--     @OpImageSampleWeightedQCOM@ uses a 'Vulkan.Core10.Handles.ImageView'
+--     as a sample weight image 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM'
+--
+-- -   #VUID-vkCmdTraceRaysKHR-OpImageBoxFilterQCOM-06973# If
+--     @OpImageBoxFilterQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM'
+--
+-- -   #VUID-vkCmdTraceRaysKHR-OpImageBlockMatchSSDQCOM-06974# If
+--     @OpImageBlockMatchSSDQCOM@ is used to read from an
+--     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
+--     or
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_SXD_BIT_QCOM'
+--
+-- -   #VUID-vkCmdTraceRaysKHR-OpImageBlockMatchSADQCOM-12420# If
+--     @OpImageBlockMatchSADQCOM@ is used to read from an
+--     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
+--     or
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_SXD_BIT_QCOM'
+--
+-- -   #VUID-vkCmdTraceRaysKHR-OpImageBlockMatchSADQCOM-06976# If
+--     @OpImageBlockMatchSADQCOM@ or OpImageBlockMatchSSDQCOM is used to
+--     read from a reference image as result of this command, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-blockMatchExtendedClampToEdge blockMatchExtendedClampToEdge>
+--     feature is not enabled or the /input/ sampler was not created with
+--     both @addressModeU@ and @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--     then the specified reference coordinates /must/ not fail
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
+--
+-- -   #VUID-vkCmdTraceRaysKHR-OpImageSampleWeightedQCOM-06977# If
+--     @OpImageSampleWeightedQCOM@, @OpImageBoxFilterQCOM@,
+--     @OpImageBlockMatchWindowSSDQCOM@, @OpImageBlockMatchWindowSADQCOM@,
+--     @OpImageBlockMatchGatherSSDQCOM@, @OpImageBlockMatchGatherSADQCOM@,
+--     @OpImageBlockMatchSSDQCOM@, or @OpImageBlockMatchSADQCOM@ uses a
+--     'Vulkan.Core10.Handles.Sampler' as a result of this command, then
+--     the sampler /must/ have been created with
+--     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
+--
+-- -   #VUID-vkCmdTraceRaysKHR-OpImageSampleWeightedQCOM-06978# If any
+--     command other than @OpImageSampleWeightedQCOM@,
+--     @OpImageBoxFilterQCOM@, @OpImageBlockMatchWindowSSDQCOM@,
+--     @OpImageBlockMatchWindowSADQCOM@, @OpImageBlockMatchGatherSSDQCOM@,
+--     @OpImageBlockMatchGatherSADQCOM@, @OpImageBlockMatchSSDQCOM@, or
+--     @OpImageBlockMatchSADQCOM@ uses a 'Vulkan.Core10.Handles.Sampler' as
+--     a result of this command, then the sampler /must/ not have been
+--     created with
+--     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
+--
+-- -   #VUID-vkCmdTraceRaysKHR-OpImageBlockMatchWindow-09215# If a
+--     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     instruction is used to read from an
+--     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
+--
+-- -   #VUID-vkCmdTraceRaysKHR-OpImageBlockMatchWindow-09216# If a
+--     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     instruction is used to read from an
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the image view’s format /must/ be a single-component format
+--
+-- -   #VUID-vkCmdTraceRaysKHR-OpImageBlockMatchWindow-09217# If a
+--     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     read from a reference image as result of this command, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-blockMatchExtendedClampToEdge blockMatchExtendedClampToEdge>
+--     feature is not enabled or the /input/ sampler was not created with
+--     both @addressModeU@ and @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--     then the specified reference coordinates /must/ not fail
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
+--
+-- -   #VUID-vkCmdTraceRaysKHR-OpImageBlockMatchWindow-12421# If a
+--     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     instruction uses a 'Vulkan.Core10.Handles.Sampler' as a result of
+--     this command, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-blockMatchExtendedClampToEdge blockMatchExtendedClampToEdge>
+--     is not enabled, the /input/ sampler /must/ not have been created
+--     with either @addressModeU@ or @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--
+-- -   #VUID-vkCmdTraceRaysKHR-addressModeU-12422# If a
+--     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     instruction uses a 'Vulkan.Core10.Handles.Sampler' as a result of
+--     this command, and the /input/ sampler was created with either
+--     @addressModeU@ or @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE',
+--     then the sampler /must/ have been created with both @addressModeU@
+--     and @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--
+-- -   #VUID-vkCmdTraceRaysKHR-None-07288# Any shader invocation executed
+--     by this command /must/
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-termination terminate>
+--
+-- -   #VUID-vkCmdTraceRaysKHR-None-09600# If a descriptor with type equal
+--     to any of
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',
+--     or
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'
+--     is accessed as a result of this command, all image subresources
+--     identified by that descriptor /must/ be in the image layout
+--     identified when the descriptor was written
+--
+-- -   #VUID-vkCmdTraceRaysKHR-micromap-11636# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command through an
+--     @OpRayQueryProceedKHR@ operation , the @VK_EXT_opacity_micromap@
+--     extension is not enabled, and the acceleration structure is built
+--     using geometry with a
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapKHR'
+--     structure included in its @pNext@ chain, the shader /must/ have
+--     specified a @OpacityMicromapIdKHR@ execution mode with its
+--     specialization constant operand equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdTraceRaysKHR-micromap-11637# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command and the
+--     acceleration structure was constructed through deserialization, all
+--     micromap arrays referenced by the acceleration structure that were
+--     not replaced by an acceleration structure update command /must/ have
+--     been deserialized using the serialized data of the corresponding
+--     micromaps used to originally build the acceleration structure prior
+--     to the execution of this command on the device
+--
+-- -   #VUID-vkCmdTraceRaysKHR-micromap-11638# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command and the
+--     acceleration structure is built using geometry with an @indexBuffer@
+--     containing both
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.OpacityMicromapSpecialIndexKHR'
+--     values and indices into an associated micromap array, any
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command /must/ not have been created with @flags@ that
+--     includes
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_KHR'
+--
+-- -   #VUID-vkCmdTraceRaysKHR-micromap-11639# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command and the
+--     acceleration structure is built using geometry with an @indexBuffer@
+--     containing both
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.OpacityMicromapSpecialIndexKHR'
+--     values and indices into an associated micromap array, any
+--     'Vulkan.Extensions.Handles.ShaderEXT' that accessed the descriptor
+--     /must/ not have been created with @flags@ that includes
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_EXT'
+--
+-- -   #VUID-vkCmdTraceRaysKHR-commandBuffer-10746# The
+--     'Vulkan.Core10.Handles.DeviceMemory' object allocated from a
+--     'Vulkan.Core10.DeviceInitialization.MemoryHeap' with the
+--     'Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_TILE_MEMORY_BIT_QCOM'
+--     property that is bound to a resource accessed as a result of this
+--     command /must/ be the active
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-bind-tile-memory bound tile memory object>
+--     in @commandBuffer@
+--
+-- -   #VUID-vkCmdTraceRaysKHR-None-10678# If this command is recorded
+--     inside a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-tile-shading tile shading render pass>
+--     instance, the stages corresponding to the pipeline bind point used
+--     by this command /must/ only include
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT',
+--     and\/or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT'
+--
+-- -   #VUID-vkCmdTraceRaysKHR-None-10679# If this command is recorded
+--     where
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model>
+--     is enabled, there /must/ be no access to any image while the image
+--     was be transitioned to the
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
+--     layout
+--
+-- -   #VUID-vkCmdTraceRaysKHR-pDescription-09900# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the
+--     underlying 'Vulkan.Extensions.Handles.TensorARM' object /must/ have
+--     been created with the
+--     'Vulkan.Extensions.VK_ARM_tensors.TENSOR_USAGE_SHADER_BIT_ARM' usage
+--     flag set
+--
+-- -   #VUID-vkCmdTraceRaysKHR-dimensionCount-09905# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the @Rank@
+--     of the @OpTypeTensorARM@ of the tensor resource variable /must/ be
+--     equal to the @dimensionCount@ provided via
+--     'Vulkan.Extensions.VK_ARM_tensors.TensorCreateInfoARM'::@pDescription@
+--     when creating the underlying 'Vulkan.Extensions.Handles.TensorARM'
+--     object
+--
+-- -   #VUID-vkCmdTraceRaysKHR-OpTypeTensorARM-09906# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the element
+--     type of the @OpTypeTensorARM@ of the tensor resource variable /must/
+--     be
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-tensor-formats compatible>
+--     with the 'Vulkan.Core10.Enums.Format.Format' of the
+--     'Vulkan.Extensions.Handles.TensorViewARM' used for the access
+--
+-- -   #VUID-vkCmdTraceRaysKHR-None-11297# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses a @OpTypeStruct@ decorated with @Block@ or
+--     @BufferBlock@ using that mapping, the calculated offset for the
+--     resource heap /must/ be a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-bufferDescriptorAlignment bufferDescriptorAlignment>
+--
+-- -   #VUID-vkCmdTraceRaysKHR-None-11298# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses an @OpTypeImage@ or @OpTypeSampledImage@ using
+--     that mapping, the calculated offset for the resource heap /must/ be
+--     a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-imageDescriptorAlignment imageDescriptorAlignment>
+--
+-- -   #VUID-vkCmdTraceRaysKHR-None-11299# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses an @OpTypeSampler@ or @OpTypeSampledImage@
+--     using that mapping, the calculated offset for the sampler heap
+--     /must/ be a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-samplerDescriptorAlignment samplerDescriptorAlignment>
+--
+-- -   #VUID-vkCmdTraceRaysKHR-None-11397# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses an @OpTypeTensorARM@ using that mapping, the
+--     calculated offset for the resource heap /must/ be a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-tensorDescriptorAlignment tensorDescriptorAlignment>
+--
+-- -   #VUID-vkCmdTraceRaysKHR-None-11300# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a
+--     multiple of 4
+--
+-- -   #VUID-vkCmdTraceRaysKHR-None-11301# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' backed by physical
+--     memory at every offset specified by each mapping
+--
+-- -   #VUID-vkCmdTraceRaysKHR-None-11302# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdTraceRaysKHR-None-11304# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a
+--     multiple of 8
+--
+-- -   #VUID-vkCmdTraceRaysKHR-None-11305# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' backed by physical
+--     memory at every offset specified by each mapping
+--
+-- -   #VUID-vkCmdTraceRaysKHR-None-11306# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address pointed to by the address in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdTraceRaysKHR-None-11308# For each
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps descriptor heap>
+--     that is statically used by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
+--     either directly or via a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>,
+--     a valid descriptor heap /must/ be bound
+--
+-- -   #VUID-vkCmdTraceRaysKHR-None-11309# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     was created as a 'Vulkan.Extensions.Handles.ShaderEXT' with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag or as part of a pipeline with the
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag, execution of this command /must/ not result in any descriptor
+--     read accessing data outside of the user range of the respective heap
+--     bound by @vkCmdBind*HeapEXT@ commands
+--
+-- -   #VUID-vkCmdTraceRaysKHR-None-11372# If any stage of the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command accesses a uniform buffer or uniform
+--     texel buffer through a descriptor in the bound resource heap, that
+--     stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @uniformBuffers@, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /must/ not access values outside
+--     of the range of the descriptor specified via
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+--     when the descriptor was written
+--
+-- -   #VUID-vkCmdTraceRaysKHR-None-11373# If any stage of the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command accesses a storage buffer or storage
+--     texel buffer through a descriptor in the bound resource heap, that
+--     stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @storageBuffers@, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /must/ not access values outside
+--     of the range of the descriptor specified by
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+--     when the descriptor was written
+--
+-- -   #VUID-vkCmdTraceRaysKHR-None-11374# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, and any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     to the pipeline bind point used by this command accesses a uniform
+--     buffer, uniform texel buffer, storage buffer, or storage texel
+--     buffer, that shader /must/ not access values outside of the range of
+--     the buffer as specified by
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+--     when the descriptor was written
+--
+-- -   #VUID-vkCmdTraceRaysKHR-pBindInfo-11375# If any
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     uses an embedded sampler via a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>,
+--     the value of @pBindInfo->reservedRangeSize@ set for
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.cmdBindSamplerHeapEXT'
+--     /must/ be greater than or equal to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minSamplerHeapReservedRangeWithEmbedded minSamplerHeapReservedRangeWithEmbedded>
+--
+-- -   #VUID-vkCmdTraceRaysKHR-None-11376# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     was created as a 'Vulkan.Extensions.Handles.ShaderEXT' with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag or as part of a pipeline with the
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag, and that shader statically uses a push constant value, that
+--     value /must/ have been set by
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.cmdPushDataEXT'
+--
+-- -   #VUID-vkCmdTraceRaysKHR-None-11398# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_DATA_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_DATA_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_RESOURCE_HEAP_DATA_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the access
+--     /must/ not be
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-execution-memory-access-bounds out of bounds>
+--
+-- -   #VUID-vkCmdTraceRaysKHR-None-11437# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the buffer from
+--     which the address in push data was queried /must/ have been created
+--     with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdTraceRaysKHR-None-11438# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a uniform buffer using that mapping, the
+--     address that the uniform buffer is mapped to /must/ have been
+--     queried from a buffer created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdTraceRaysKHR-None-11441# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a uniform buffer using that mapping, the
+--     address that the uniform buffer is mapped to /must/ be aligned to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minUniformBufferOffsetAlignment minUniformBufferOffsetAlignment>
+--
+-- -   #VUID-vkCmdTraceRaysKHR-None-11439# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a storage buffer using that mapping, the
+--     address that the storage buffer is mapped to /must/ have been
+--     queried from a buffer created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_STORAGE_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdTraceRaysKHR-None-11442# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a storage buffer using that mapping, the
+--     address that the storage buffer is mapped to /must/ be aligned to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minStorageBufferOffsetAlignment minStorageBufferOffsetAlignment>
+--
+-- -   #VUID-vkCmdTraceRaysKHR-None-11485# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses an acceleration structure using that mapping,
+--     the address that the acceleration structure is mapped to /must/ be
+--     an acceleration structure address retrieved from a
+--     'Vulkan.Extensions.Handles.AccelerationStructureKHR' object via
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.getAccelerationStructureDeviceAddressKHR'
+--     or handle retrieved from a
+--     'Vulkan.Extensions.Handles.AccelerationStructureNV' object via
+--     'Vulkan.Extensions.VK_NV_ray_tracing.getAccelerationStructureHandleNV'
+--
+-- -   #VUID-vkCmdTraceRaysKHR-index-11450# If a shader uses a sampler
+--     descriptor to sample an image as a result of this command, and that
+--     sampler descriptor uses a custom border color with an index defined
+--     by
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.SamplerCustomBorderColorIndexCreateInfoEXT',
+--     the value of
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.SamplerCustomBorderColorIndexCreateInfoEXT'::@index@
+--     /must/ have been registered before this command was recorded, and
+--     still be registered during the sampling operation, with an
+--     identically defined color
+--
+-- -   #VUID-vkCmdTraceRaysKHR-protectedNoFault-11455# If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, a pipeline is bound to the pipeline bind point
+--     used by this command, or a shader is bound to a shader stage used by
+--     this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     the address that the resource is mapped to /must/ have been queried
+--     from a buffer created without the
+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT'
+--     create flag set
+--
+-- -   #VUID-vkCmdTraceRaysKHR-protectedNoFault-11456# If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, a pipeline is bound to the pipeline bind point
+--     used by this command, or a shader is bound to a shader stage used by
+--     this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     the address of the indirect memory /must/ have been queried from a
+--     buffer created without the
+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT'
+--     create flag set
+--
+-- -   #VUID-vkCmdTraceRaysKHR-None-03429# Any shader group handle
+--     referenced by this call /must/ have been queried from the bound ray
+--     tracing pipeline
+--
+-- -   #VUID-vkCmdTraceRaysKHR-None-09458# If the bound ray tracing
+--     pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR'
+--     dynamic state enabled then 'cmdSetRayTracingPipelineStackSizeKHR'
+--     /must/ have been called in the current command buffer prior to this
+--     trace command
+--
+-- -   #VUID-vkCmdTraceRaysKHR-None-11319# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     the value of the address at the expected location in shader record
+--     data /must/ be a valid address
+--
+-- -   #VUID-vkCmdTraceRaysKHR-maxPipelineRayRecursionDepth-03679# This
+--     command /must/ not cause a shader call 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>
+--     greater than the value of @maxPipelineRayRecursionDepth@ used to
+--     create the bound ray tracing pipeline
+--
+-- -   #VUID-vkCmdTraceRaysKHR-commandBuffer-03635# @commandBuffer@ /must/
+--     not be a protected command buffer
+--
+-- -   #VUID-vkCmdTraceRaysKHR-micromap-11640# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command, the access is
+--     not through an @OpRayQueryProceedKHR@ operation, and the
+--     acceleration structure is built using geometry with a
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapKHR'
+--     or
+--     'Vulkan.Extensions.VK_EXT_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapEXT'
+--     structure included in its @pNext@ chain, the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command /must/ have been created with @flags@ that
+--     includes
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_KHR'
+--
+-- -   #VUID-vkCmdTraceRaysKHR-size-04023# The @size@ member of
+--     @pRayGenShaderBindingTable@ /must/ be equal to its @stride@ member
+--
+-- -   #VUID-vkCmdTraceRaysKHR-pRayGenShaderBindingTable-03681#
+--     @pRayGenShaderBindingTable->deviceAddress@ /must/ be a device
+--     address allocated to the application from a buffer created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR'
+--     usage flag set
+--
+-- -   #VUID-vkCmdTraceRaysKHR-pRayGenShaderBindingTable-03682#
+--     @pRayGenShaderBindingTable->deviceAddress@ /must/ be a multiple of
+--     'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@shaderGroupBaseAlignment@
+--
+-- -   #VUID-vkCmdTraceRaysKHR-pMissShaderBindingTable-03684#
+--     @pMissShaderBindingTable->deviceAddress@ /must/ be a device address
+--     allocated to the application from a buffer created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR'
+--     usage flag set
+--
+-- -   #VUID-vkCmdTraceRaysKHR-pMissShaderBindingTable-03685#
+--     @pMissShaderBindingTable->deviceAddress@ /must/ be a multiple of
+--     'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@shaderGroupBaseAlignment@
+--
+-- -   #VUID-vkCmdTraceRaysKHR-stride-03686#
+--     @pMissShaderBindingTable->stride@ /must/ be a multiple of
+--     'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@shaderGroupHandleAlignment@
+--
+-- -   #VUID-vkCmdTraceRaysKHR-stride-04029#
+--     @pMissShaderBindingTable->stride@ /must/ be less than or equal to
+--     'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@maxShaderGroupStride@
+--
+-- -   #VUID-vkCmdTraceRaysKHR-pHitShaderBindingTable-03688#
+--     @pHitShaderBindingTable->deviceAddress@ /must/ be a device address
+--     allocated to the application from a buffer created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR'
+--     usage flag set
+--
+-- -   #VUID-vkCmdTraceRaysKHR-pHitShaderBindingTable-03689#
+--     @pHitShaderBindingTable->deviceAddress@ /must/ be a multiple of
+--     'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@shaderGroupBaseAlignment@
+--
+-- -   #VUID-vkCmdTraceRaysKHR-stride-03690#
+--     @pHitShaderBindingTable->stride@ /must/ be a multiple of
+--     'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@shaderGroupHandleAlignment@
+--
+-- -   #VUID-vkCmdTraceRaysKHR-stride-04035#
+--     @pHitShaderBindingTable->stride@ /must/ be less than or equal to
+--     'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@maxShaderGroupStride@
+--
+-- -   #VUID-vkCmdTraceRaysKHR-pCallableShaderBindingTable-03692#
+--     @pCallableShaderBindingTable->deviceAddress@ /must/ be a device
+--     address allocated to the application from a buffer created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR'
+--     usage flag set
+--
+-- -   #VUID-vkCmdTraceRaysKHR-pCallableShaderBindingTable-03693#
+--     @pCallableShaderBindingTable->deviceAddress@ /must/ be a multiple of
+--     'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@shaderGroupBaseAlignment@
+--
+-- -   #VUID-vkCmdTraceRaysKHR-stride-03694#
+--     @pCallableShaderBindingTable->stride@ /must/ be a multiple of
+--     'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@shaderGroupHandleAlignment@
+--
+-- -   #VUID-vkCmdTraceRaysKHR-stride-04041#
+--     @pCallableShaderBindingTable->stride@ /must/ be less than or equal
+--     to
+--     'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@maxShaderGroupStride@
+--
+-- -   #VUID-vkCmdTraceRaysKHR-flags-03511# If the bound ray tracing
+--     pipeline was created with @flags@ that included
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR',
+--     the entries in the table identified by
+--     @pMissShaderBindingTable->deviceAddress@ accessed as a result of
+--     this command in order to execute a miss shader /must/ not be zero
+--
+-- -   #VUID-vkCmdTraceRaysKHR-flags-03512# If the bound ray tracing
+--     pipeline was created with @flags@ that included
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR',
+--     entries in the table identified by
+--     @pHitShaderBindingTable->deviceAddress@ accessed as a result of this
+--     command in order to execute an any-hit shader /must/ not be zero
+--
+-- -   #VUID-vkCmdTraceRaysKHR-flags-03513# If the bound ray tracing
+--     pipeline was created with @flags@ that included
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR',
+--     entries in the table identified by
+--     @pHitShaderBindingTable->deviceAddress@ accessed as a result of this
+--     command in order to execute a closest hit shader /must/ not be zero
+--
+-- -   #VUID-vkCmdTraceRaysKHR-flags-03514# If the bound ray tracing
+--     pipeline was created with @flags@ that included
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR',
+--     entries in the table identified by
+--     @pHitShaderBindingTable->deviceAddress@ accessed as a result of this
+--     command in order to execute an intersection shader /must/ not be
+--     zero
+--
+-- -   #VUID-vkCmdTraceRaysKHR-pHitShaderBindingTable-04735# Any non-zero
+--     hit shader group entries in the table identified by
+--     @pHitShaderBindingTable->deviceAddress@ accessed by this call from a
+--     geometry with a @geometryType@ of
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.GEOMETRY_TYPE_TRIANGLES_KHR'
+--     /must/ have been created with
+--     'RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR'
+--
+-- -   #VUID-vkCmdTraceRaysKHR-pHitShaderBindingTable-04736# Any non-zero
+--     hit shader group entries in the table identified by
+--     @pHitShaderBindingTable->deviceAddress@ accessed by this call from a
+--     geometry with a @geometryType@ of
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.GEOMETRY_TYPE_AABBS_KHR'
+--     /must/ have been created with
+--     'RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR'
+--
+-- -   #VUID-vkCmdTraceRaysKHR-width-03638# @width@ /must/ be less than or
+--     equal to
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[0]
+--     ×
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupSize@[0]
+--
+-- -   #VUID-vkCmdTraceRaysKHR-height-03639# @height@ /must/ be less than
+--     or equal to
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[1]
+--     ×
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupSize@[1]
+--
+-- -   #VUID-vkCmdTraceRaysKHR-depth-03640# @depth@ /must/ be less than or
+--     equal to
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[2]
+--     ×
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupSize@[2]
+--
+-- -   #VUID-vkCmdTraceRaysKHR-width-03641# @width@ × @height@ × @depth@
+--     /must/ be less than or equal to
+--     'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@maxRayDispatchInvocationCount@
+--
+-- -   #VUID-vkCmdTraceRaysKHR-allowClusterAccelerationStructure-10578# If
+--     the traced geometry contains a cluster acceleration structure, then
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkRayTracingPipelineClusterAccelerationStructureCreateInfoNV VkRayTracingPipelineClusterAccelerationStructureCreateInfoNV>::@allowClusterAccelerationStructure@
+--     /must/ have been set for that pipeline
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdTraceRaysKHR-commandBuffer-parameter# @commandBuffer@
+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdTraceRaysKHR-pRaygenShaderBindingTable-parameter#
+--     @pRaygenShaderBindingTable@ /must/ be a valid pointer to a valid
+--     'StridedDeviceAddressRegionKHR' structure
+--
+-- -   #VUID-vkCmdTraceRaysKHR-pMissShaderBindingTable-parameter#
+--     @pMissShaderBindingTable@ /must/ be a valid pointer to a valid
+--     'StridedDeviceAddressRegionKHR' structure
+--
+-- -   #VUID-vkCmdTraceRaysKHR-pHitShaderBindingTable-parameter#
+--     @pHitShaderBindingTable@ /must/ be a valid pointer to a valid
+--     'StridedDeviceAddressRegionKHR' structure
+--
+-- -   #VUID-vkCmdTraceRaysKHR-pCallableShaderBindingTable-parameter#
+--     @pCallableShaderBindingTable@ /must/ be a valid pointer to a valid
+--     'StridedDeviceAddressRegionKHR' structure
+--
+-- -   #VUID-vkCmdTraceRaysKHR-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-vkCmdTraceRaysKHR-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT' operations
+--
+-- -   #VUID-vkCmdTraceRaysKHR-renderpass# This command /must/ only be
+--     called outside of a render pass instance
+--
+-- -   #VUID-vkCmdTraceRaysKHR-suspended# This command /must/ not be called
+--     between suspended render pass instances
+--
+-- -   #VUID-vkCmdTraceRaysKHR-videocoding# This command /must/ only be
+--     called outside of a video coding scope
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdTraceRaysKHR is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_ray_tracing_pipeline VK_KHR_ray_tracing_pipeline>,
+-- 'Vulkan.Core10.Handles.CommandBuffer', 'StridedDeviceAddressRegionKHR'
+cmdTraceRaysKHR :: forall io
+                 . (MonadIO io)
+                => -- | @commandBuffer@ is the command buffer into which the command will be
+                   -- recorded.
+                   CommandBuffer
+                -> -- | @pRaygenShaderBindingTable@ is a 'StridedDeviceAddressRegionKHR' that
+                   -- holds the shader binding table data for the ray generation shader stage.
+                   ("raygenShaderBindingTable" ::: StridedDeviceAddressRegionKHR)
+                -> -- | @pMissShaderBindingTable@ is a 'StridedDeviceAddressRegionKHR' that
+                   -- holds the shader binding table data for the miss shader stage.
+                   ("missShaderBindingTable" ::: StridedDeviceAddressRegionKHR)
+                -> -- | @pHitShaderBindingTable@ is a 'StridedDeviceAddressRegionKHR' that holds
+                   -- the shader binding table data for the hit shader stage.
+                   ("hitShaderBindingTable" ::: StridedDeviceAddressRegionKHR)
+                -> -- | @pCallableShaderBindingTable@ is a 'StridedDeviceAddressRegionKHR' that
+                   -- holds the shader binding table data for the callable shader stage.
+                   ("callableShaderBindingTable" ::: StridedDeviceAddressRegionKHR)
+                -> -- | @width@ is the width of the ray trace query dimensions.
+                   ("width" ::: Word32)
+                -> -- | @height@ is height of the ray trace query dimensions.
+                   ("height" ::: Word32)
+                -> -- | @depth@ is depth of the ray trace query dimensions.
+                   ("depth" ::: Word32)
+                -> io ()
+cmdTraceRaysKHR commandBuffer
+                  raygenShaderBindingTable
+                  missShaderBindingTable
+                  hitShaderBindingTable
+                  callableShaderBindingTable
+                  width
+                  height
+                  depth = liftIO . evalContT $ do
+  let vkCmdTraceRaysKHRPtr = pVkCmdTraceRaysKHR (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdTraceRaysKHRPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdTraceRaysKHR is null" Nothing Nothing
+  let vkCmdTraceRaysKHR' = mkVkCmdTraceRaysKHR vkCmdTraceRaysKHRPtr
+  pRaygenShaderBindingTable <- ContT $ withCStruct (raygenShaderBindingTable)
+  pMissShaderBindingTable <- ContT $ withCStruct (missShaderBindingTable)
+  pHitShaderBindingTable <- ContT $ withCStruct (hitShaderBindingTable)
+  pCallableShaderBindingTable <- ContT $ withCStruct (callableShaderBindingTable)
+  lift $ traceAroundEvent "vkCmdTraceRaysKHR" (vkCmdTraceRaysKHR'
+                                                 (commandBufferHandle (commandBuffer))
+                                                 pRaygenShaderBindingTable
+                                                 pMissShaderBindingTable
+                                                 pHitShaderBindingTable
+                                                 pCallableShaderBindingTable
+                                                 (width)
+                                                 (height)
+                                                 (depth))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetRayTracingShaderGroupHandlesKHR
+  :: FunPtr (Ptr Device_T -> Pipeline -> Word32 -> Word32 -> CSize -> Ptr () -> IO Result) -> Ptr Device_T -> Pipeline -> Word32 -> Word32 -> CSize -> Ptr () -> IO Result
+
+-- | vkGetRayTracingShaderGroupHandlesKHR - Query ray tracing pipeline shader
+-- group handles
+--
+-- = Description
+--
+-- On success, an array of @groupCount@ shader handles will be written to
+-- @pData@, with each element being of size
+-- 'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@shaderGroupHandleSize@.
+-- The first handle written corresponds to the group identified by
+-- @firstGroup@, with subsequent handles corresponding to consecutive
+-- shader groups in the order they appear in the
+-- 'RayTracingPipelineCreateInfoKHR'::@pGroups@ or
+-- 'Vulkan.Extensions.VK_NV_ray_tracing.RayTracingPipelineCreateInfoNV'::@pGroups@
+-- array.
+--
+-- If @pipeline@ was created with
+-- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR'
+-- and the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-pipelineLibraryGroupHandles pipelineLibraryGroupHandles>
+-- feature is enabled applications /can/ query group handles from that
+-- pipeline, even if the pipeline is a library and is never bound to a
+-- command buffer. These group handles remain bitwise identical for any
+-- @pipeline@ which references the pipeline library. Group indices are
+-- assigned as-if the pipeline was created without
+-- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR'.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkGetRayTracingShaderGroupHandlesKHR-pipeline-04619#
+--     @pipeline@ /must/ be a ray tracing pipeline
+--
+-- -   #VUID-vkGetRayTracingShaderGroupHandlesKHR-firstGroup-04050#
+--     @firstGroup@ /must/ be less than the number of shader groups in
+--     @pipeline@
+--
+-- -   #VUID-vkGetRayTracingShaderGroupHandlesKHR-firstGroup-02419# The sum
+--     of @firstGroup@ and @groupCount@ /must/ be less than or equal to the
+--     number of shader groups in @pipeline@
+--
+-- -   #VUID-vkGetRayTracingShaderGroupHandlesKHR-dataSize-02420#
+--     @dataSize@ /must/ be at least
+--     'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@shaderGroupHandleSize@
+--     × @groupCount@
+--
+-- -   #VUID-vkGetRayTracingShaderGroupHandlesKHR-pipeline-07828# If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-pipelineLibraryGroupHandles pipelineLibraryGroupHandles>
+--     feature is not enabled, @pipeline@ /must/ not have been created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkGetRayTracingShaderGroupHandlesKHR-device-parameter#
+--     @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkGetRayTracingShaderGroupHandlesKHR-pipeline-parameter#
+--     @pipeline@ /must/ be a valid 'Vulkan.Core10.Handles.Pipeline' handle
+--
+-- -   #VUID-vkGetRayTracingShaderGroupHandlesKHR-pData-parameter# @pData@
+--     /must/ be a valid pointer to an array of @dataSize@ bytes
+--
+-- -   #VUID-vkGetRayTracingShaderGroupHandlesKHR-dataSize-arraylength#
+--     @dataSize@ /must/ be greater than @0@
+--
+-- -   #VUID-vkGetRayTracingShaderGroupHandlesKHR-pipeline-parent#
+--     @pipeline@ /must/ have been created, allocated, or retrieved from
+--     @device@
+--
+-- == 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_DEVICE_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_ray_tracing_pipeline VK_KHR_ray_tracing_pipeline>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>,
+-- 'Vulkan.Core10.Handles.Device', 'Vulkan.Core10.Handles.Pipeline'
+getRayTracingShaderGroupHandlesKHR :: forall io
+                                    . (MonadIO io)
+                                   => -- | @device@ is the logical device containing the ray tracing pipeline.
+                                      Device
+                                   -> -- | @pipeline@ is the ray tracing pipeline object containing the shaders.
+                                      Pipeline
+                                   -> -- | @firstGroup@ is the index of the first group to retrieve a handle for
+                                      -- from the 'RayTracingPipelineCreateInfoKHR'::@pGroups@ or
+                                      -- 'Vulkan.Extensions.VK_NV_ray_tracing.RayTracingPipelineCreateInfoNV'::@pGroups@
+                                      -- array.
+                                      ("firstGroup" ::: Word32)
+                                   -> -- | @groupCount@ is the number of shader handles to retrieve.
+                                      ("groupCount" ::: Word32)
+                                   -> -- | @dataSize@ is the size in bytes of the buffer pointed to by @pData@.
+                                      ("dataSize" ::: Word64)
+                                   -> -- | @pData@ is a pointer to an application-allocated buffer where the
+                                      -- results will be written.
+                                      ("data" ::: Ptr ())
+                                   -> io ()
+getRayTracingShaderGroupHandlesKHR device
+                                     pipeline
+                                     firstGroup
+                                     groupCount
+                                     dataSize
+                                     data' = liftIO $ do
+  let vkGetRayTracingShaderGroupHandlesKHRPtr = pVkGetRayTracingShaderGroupHandlesKHR (case device of Device{deviceCmds} -> deviceCmds)
+  unless (vkGetRayTracingShaderGroupHandlesKHRPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetRayTracingShaderGroupHandlesKHR is null" Nothing Nothing
+  let vkGetRayTracingShaderGroupHandlesKHR' = mkVkGetRayTracingShaderGroupHandlesKHR vkGetRayTracingShaderGroupHandlesKHRPtr
+  r <- traceAroundEvent "vkGetRayTracingShaderGroupHandlesKHR" (vkGetRayTracingShaderGroupHandlesKHR'
+                                                                  (deviceHandle (device))
+                                                                  (pipeline)
+                                                                  (firstGroup)
+                                                                  (groupCount)
+                                                                  (CSize (dataSize))
+                                                                  (data'))
+  when (r < SUCCESS) (throwIO (VulkanException r))
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetRayTracingCaptureReplayShaderGroupHandlesKHR
+  :: FunPtr (Ptr Device_T -> Pipeline -> Word32 -> Word32 -> CSize -> Ptr () -> IO Result) -> Ptr Device_T -> Pipeline -> Word32 -> Word32 -> CSize -> Ptr () -> IO Result
+
+-- | vkGetRayTracingCaptureReplayShaderGroupHandlesKHR - Query opaque capture
+-- replay data for pipeline shader group handles
+--
+-- = Description
+--
+-- On success, an array of @groupCount@ shader handles will be written to
+-- @pData@, with each element being of size
+-- 'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@shaderGroupHandleCaptureReplaySize@.
+-- The first handle written corresponds to the group identified by
+-- @firstGroup@, with subsequent handles corresponding to consecutive
+-- shader groups in the order they appear in the
+-- 'RayTracingPipelineCreateInfoKHR'::@pGroups@ array.
+--
+-- Once queried, this opaque data /can/ be provided at pipeline creation
+-- time (in a subsequent execution), using
+-- 'RayTracingShaderGroupCreateInfoKHR'::@pShaderGroupCaptureReplayHandle@,
+-- as described in
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#ray-tracing-capture-replay Ray Tracing Capture Replay>.
+--
+-- If @pipeline@ was created with
+-- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR'
+-- and the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-pipelineLibraryGroupHandles pipelineLibraryGroupHandles>
+-- feature is enabled applications /can/ query capture replay group handles
+-- from that pipeline. The capture replay handle remains bitwise identical
+-- for any @pipeline@ which references the pipeline library. Group indices
+-- are assigned as-if the pipeline was created without
+-- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR'.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-pipeline-04620#
+--     @pipeline@ /must/ be a ray tracing pipeline
+--
+-- -   #VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-firstGroup-04051#
+--     @firstGroup@ /must/ be less than the number of shader groups in
+--     @pipeline@
+--
+-- -   #VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-firstGroup-03483#
+--     The sum of @firstGroup@ and @groupCount@ /must/ be less than or
+--     equal to the number of shader groups in @pipeline@
+--
+-- -   #VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-dataSize-03484#
+--     @dataSize@ /must/ be at least
+--     'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@shaderGroupHandleCaptureReplaySize@
+--     × @groupCount@
+--
+-- -   #VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-rayTracingPipelineShaderGroupHandleCaptureReplay-03606#
+--     'PhysicalDeviceRayTracingPipelineFeaturesKHR'::@rayTracingPipelineShaderGroupHandleCaptureReplay@
+--     /must/ be enabled to call this function
+--
+-- -   #VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-pipeline-03607#
+--     @pipeline@ /must/ have been created with a @flags@ that included
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR'
+--
+-- -   #VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-pipeline-07829#
+--     If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-pipelineLibraryGroupHandles pipelineLibraryGroupHandles>
+--     feature is not enabled, @pipeline@ /must/ not have been created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-device-parameter#
+--     @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-pipeline-parameter#
+--     @pipeline@ /must/ be a valid 'Vulkan.Core10.Handles.Pipeline' handle
+--
+-- -   #VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-pData-parameter#
+--     @pData@ /must/ be a valid pointer to an array of @dataSize@ bytes
+--
+-- -   #VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-dataSize-arraylength#
+--     @dataSize@ /must/ be greater than @0@
+--
+-- -   #VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-pipeline-parent#
+--     @pipeline@ /must/ have been created, allocated, or retrieved from
+--     @device@
+--
+-- == 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_DEVICE_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_ray_tracing_pipeline VK_KHR_ray_tracing_pipeline>,
+-- 'Vulkan.Core10.Handles.Device', 'Vulkan.Core10.Handles.Pipeline'
+getRayTracingCaptureReplayShaderGroupHandlesKHR :: forall io
+                                                 . (MonadIO io)
+                                                => -- | @device@ is the logical device containing the ray tracing pipeline.
+                                                   Device
+                                                -> -- | @pipeline@ is the ray tracing pipeline object containing the shaders.
+                                                   Pipeline
+                                                -> -- | @firstGroup@ is the index of the first group to retrieve a handle for
+                                                   -- from the 'RayTracingPipelineCreateInfoKHR'::@pGroups@ array.
+                                                   ("firstGroup" ::: Word32)
+                                                -> -- | @groupCount@ is the number of shader handles to retrieve.
+                                                   ("groupCount" ::: Word32)
+                                                -> -- | @dataSize@ is the size in bytes of the buffer pointed to by @pData@.
+                                                   ("dataSize" ::: Word64)
+                                                -> -- | @pData@ is a pointer to an application-allocated buffer where the
+                                                   -- results will be written.
+                                                   ("data" ::: Ptr ())
+                                                -> io ()
+getRayTracingCaptureReplayShaderGroupHandlesKHR device
+                                                  pipeline
+                                                  firstGroup
+                                                  groupCount
+                                                  dataSize
+                                                  data' = liftIO $ do
+  let vkGetRayTracingCaptureReplayShaderGroupHandlesKHRPtr = pVkGetRayTracingCaptureReplayShaderGroupHandlesKHR (case device of Device{deviceCmds} -> deviceCmds)
+  unless (vkGetRayTracingCaptureReplayShaderGroupHandlesKHRPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetRayTracingCaptureReplayShaderGroupHandlesKHR is null" Nothing Nothing
+  let vkGetRayTracingCaptureReplayShaderGroupHandlesKHR' = mkVkGetRayTracingCaptureReplayShaderGroupHandlesKHR vkGetRayTracingCaptureReplayShaderGroupHandlesKHRPtr
+  r <- traceAroundEvent "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR" (vkGetRayTracingCaptureReplayShaderGroupHandlesKHR'
+                                                                               (deviceHandle (device))
+                                                                               (pipeline)
+                                                                               (firstGroup)
+                                                                               (groupCount)
+                                                                               (CSize (dataSize))
+                                                                               (data'))
+  when (r < SUCCESS) (throwIO (VulkanException r))
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCreateRayTracingPipelinesKHR
+  :: FunPtr (Ptr Device_T -> DeferredOperationKHR -> PipelineCache -> Word32 -> Ptr (SomeStruct RayTracingPipelineCreateInfoKHR) -> Ptr AllocationCallbacks -> Ptr Pipeline -> IO Result) -> Ptr Device_T -> DeferredOperationKHR -> PipelineCache -> Word32 -> Ptr (SomeStruct RayTracingPipelineCreateInfoKHR) -> Ptr AllocationCallbacks -> Ptr Pipeline -> IO Result
+
+-- | vkCreateRayTracingPipelinesKHR - Creates a new ray tracing pipeline
+-- object
+--
+-- = Description
+--
+-- The 'Vulkan.Core10.Enums.Result.ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS'
+-- error is returned if the implementation is unable to reuse the shader
+-- group handles provided in
+-- 'RayTracingShaderGroupCreateInfoKHR'::@pShaderGroupCaptureReplayHandle@
+-- when
+-- 'PhysicalDeviceRayTracingPipelineFeaturesKHR'::@rayTracingPipelineShaderGroupHandleCaptureReplay@
+-- is enabled.
+--
+-- Pipelines are created and returned as described for
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-multiple Multiple Pipeline Creation>.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCreateRayTracingPipelinesKHR-device-09677# @device@ /must/
+--     support at least one queue family with the
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT' capability
+--
+-- -   #VUID-vkCreateRayTracingPipelinesKHR-flags-03415# If the @flags@
+--     member of any element of @pCreateInfos@ contains the
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'
+--     flag, and the @basePipelineIndex@ member of that same element is not
+--     @-1@, @basePipelineIndex@ /must/ be less than the index into
+--     @pCreateInfos@ that corresponds to that element
+--
+-- -   #VUID-vkCreateRayTracingPipelinesKHR-flags-03416# If the @flags@
+--     member of any element of @pCreateInfos@ contains the
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'
+--     flag, the base pipeline /must/ have been created with the
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT'
+--     flag set
+--
+-- -   #VUID-vkCreateRayTracingPipelinesKHR-flags-03816# @flags@ /must/ not
+--     contain the
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DISPATCH_BASE_BIT'
+--     flag
+--
+-- -   #VUID-vkCreateRayTracingPipelinesKHR-pipelineCache-02903# If
+--     @pipelineCache@ was created with
+--     '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>
+--
+-- -   #VUID-vkCreateRayTracingPipelinesKHR-deferredOperation-03678# Any
+--     previous deferred operation that was associated with
+--     @deferredOperation@ /must/ be complete
+--
+-- -   #VUID-vkCreateRayTracingPipelinesKHR-pNext-09616# If
+--     'Vulkan.Extensions.VK_KHR_pipeline_binary.PipelineBinaryInfoKHR'::@binaryCount@
+--     is not @0@ for any element of @pCreateInfos@, @pipelineCache@ /must/
+--     be 'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-vkCreateRayTracingPipelinesKHR-pNext-09617# If a
+--     'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlags2CreateInfoKHR'
+--     structure with the
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR'
+--     flag set is included in the @pNext@ chain of any element of
+--     @pCreateInfos@, @pipelineCache@ /must/ be
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-vkCreateRayTracingPipelinesKHR-binaryCount-09620# If
+--     'Vulkan.Extensions.VK_KHR_pipeline_binary.PipelineBinaryInfoKHR'::@binaryCount@
+--     is not @0@ for any element of @pCreateInfos@,
+--     'Vulkan.Core13.Enums.PipelineCreationFeedbackFlagBits.PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT'
+--     /must/ not be set in the @flags@ of that element
+--
+-- -   #VUID-vkCreateRayTracingPipelinesKHR-binaryCount-09621# If
+--     'Vulkan.Extensions.VK_KHR_pipeline_binary.PipelineBinaryInfoKHR'::@binaryCount@
+--     is not @0@ for any element of @pCreateInfos@,
+--     'Vulkan.Core13.Enums.PipelineCreationFeedbackFlagBits.PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT'
+--     /must/ not be set in the @flags@ of that element
+--
+-- -   #VUID-vkCreateRayTracingPipelinesKHR-binaryCount-09622# If
+--     'Vulkan.Extensions.VK_KHR_pipeline_binary.PipelineBinaryInfoKHR'::@binaryCount@
+--     is not @0@ for any element of @pCreateInfos@,
+--     'Vulkan.Extensions.VK_EXT_pipeline_creation_cache_control.PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT'
+--     /must/ not be set in the @flags@ of that element
+--
+-- -   #VUID-vkCreateRayTracingPipelinesKHR-pCreateInfos-11414# If any
+--     element of @pCreateInfos@ sets
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT'
+--     and includes embedded sampler mappings, there /must/ be less than
+--     (<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxSamplerAllocationCount maxSamplerAllocationCount>
+--     -
+--     (<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minSamplerHeapReservedRangeWithEmbedded minSamplerHeapReservedRangeWithEmbedded>
+--     \/
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-samplerDescriptorSize samplerDescriptorSize>))
+--     'Vulkan.Core10.Handles.Sampler' objects currently created on the
+--     device
+--
+-- -   #VUID-vkCreateRayTracingPipelinesKHR-pCreateInfos-11429# If any
+--     element of @pCreateInfos@ sets
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT'
+--     and includes embedded sampler mappings, this command /must/ not
+--     cause the total number of unique embedded samplers in pipelines and
+--     shaders on this device to exceed
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxDescriptorHeapEmbeddedSamplers maxDescriptorHeapEmbeddedSamplers>
+--
+-- -   #VUID-vkCreateRayTracingPipelinesKHR-rayTracingPipeline-03586# The
+--     <https://registry.khronos.org/vulkan/specs/latest/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'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCreateRayTracingPipelinesKHR-device-parameter# @device@
+--     /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkCreateRayTracingPipelinesKHR-deferredOperation-parameter# If
+--     @deferredOperation@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
+--     @deferredOperation@ /must/ be a valid
+--     'Vulkan.Extensions.Handles.DeferredOperationKHR' handle
+--
+-- -   #VUID-vkCreateRayTracingPipelinesKHR-pipelineCache-parameter# If
+--     @pipelineCache@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
+--     @pipelineCache@ /must/ be a valid
+--     'Vulkan.Core10.Handles.PipelineCache' handle
+--
+-- -   #VUID-vkCreateRayTracingPipelinesKHR-pCreateInfos-parameter#
+--     @pCreateInfos@ /must/ be a valid pointer to an array of
+--     @createInfoCount@ valid 'RayTracingPipelineCreateInfoKHR' structures
+--
+-- -   #VUID-vkCreateRayTracingPipelinesKHR-pAllocator-parameter# If
+--     @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid pointer
+--     to a valid 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'
+--     structure
+--
+-- -   #VUID-vkCreateRayTracingPipelinesKHR-pPipelines-parameter#
+--     @pPipelines@ /must/ be a valid pointer to an array of
+--     @createInfoCount@ 'Vulkan.Core10.Handles.Pipeline' handles
+--
+-- -   #VUID-vkCreateRayTracingPipelinesKHR-createInfoCount-arraylength#
+--     @createInfoCount@ /must/ be greater than @0@
+--
+-- -   #VUID-vkCreateRayTracingPipelinesKHR-deferredOperation-parent# If
+--     @deferredOperation@ is a valid handle, it /must/ have been created,
+--     allocated, or retrieved from @device@
+--
+-- -   #VUID-vkCreateRayTracingPipelinesKHR-pipelineCache-parent# If
+--     @pipelineCache@ is a valid handle, it /must/ have been created,
+--     allocated, or retrieved from @device@
+--
+-- == Return Codes
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
+--
+--     -   'Vulkan.Core10.Enums.Result.OPERATION_DEFERRED_KHR'
+--
+--     -   'Vulkan.Core10.Enums.Result.OPERATION_NOT_DEFERRED_KHR'
+--
+--     -   'Vulkan.Extensions.VK_EXT_pipeline_creation_cache_control.PIPELINE_COMPILE_REQUIRED_EXT'
+--
+--     -   '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_INVALID_OPAQUE_CAPTURE_ADDRESS'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_ray_tracing_pipeline VK_KHR_ray_tracing_pipeline>,
+-- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',
+-- 'Vulkan.Extensions.Handles.DeferredOperationKHR',
+-- 'Vulkan.Core10.Handles.Device', 'Vulkan.Core10.Handles.Pipeline',
+-- 'Vulkan.Core10.Handles.PipelineCache', 'RayTracingPipelineCreateInfoKHR'
+createRayTracingPipelinesKHR :: forall io
+                              . (MonadIO io)
+                             => -- | @device@ is the logical device that creates the ray tracing pipelines.
+                                Device
+                             -> -- | @deferredOperation@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE' or the
+                                -- handle of a valid 'Vulkan.Extensions.Handles.DeferredOperationKHR'
+                                -- <https://registry.khronos.org/vulkan/specs/latest/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 to enable caching, the
+                                -- handle of a valid 'Vulkan.Core10.Handles.PipelineCache' object. The
+                                -- implementation /must/ not access this object outside of the duration of
+                                -- this command.
+                                PipelineCache
+                             -> -- | @pCreateInfos@ is a pointer to an array of
+                                -- 'RayTracingPipelineCreateInfoKHR' structures.
+                                ("createInfos" ::: Vector (SomeStruct RayTracingPipelineCreateInfoKHR))
+                             -> -- | @pAllocator@ controls host memory allocation as described in the
+                                -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
+                                -- chapter.
+                                ("allocator" ::: Maybe AllocationCallbacks)
+                             -> io (Result, ("pipelines" ::: Vector Pipeline))
+createRayTracingPipelinesKHR device
+                               deferredOperation
+                               pipelineCache
+                               createInfos
+                               allocator = liftIO . evalContT $ do
+  let vkCreateRayTracingPipelinesKHRPtr = pVkCreateRayTracingPipelinesKHR (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCreateRayTracingPipelinesKHRPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCreateRayTracingPipelinesKHR is null" Nothing Nothing
+  let vkCreateRayTracingPipelinesKHR' = mkVkCreateRayTracingPipelinesKHR vkCreateRayTracingPipelinesKHRPtr
+  pPCreateInfos <- ContT $ allocaBytes @(RayTracingPipelineCreateInfoKHR _) ((Data.Vector.length (createInfos)) * 104)
+  Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPCreateInfos `plusPtr` (104 * (i)) :: Ptr (RayTracingPipelineCreateInfoKHR _))) (e) . ($ ())) (createInfos)
+  pAllocator <- case (allocator) of
+    Nothing -> pure nullPtr
+    Just j -> ContT $ withCStruct (j)
+  pPPipelines <- ContT $ bracket (callocBytes @Pipeline ((fromIntegral ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32))) * 8)) free
+  r <- lift $ traceAroundEvent "vkCreateRayTracingPipelinesKHR" (vkCreateRayTracingPipelinesKHR'
+                                                                   (deviceHandle (device))
+                                                                   (deferredOperation)
+                                                                   (pipelineCache)
+                                                                   ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32))
+                                                                   (forgetExtensions (pPCreateInfos))
+                                                                   pAllocator
+                                                                   (pPPipelines))
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+  pPipelines <- lift $ generateM (fromIntegral ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32))) (\i -> peek @Pipeline ((pPPipelines `advancePtrBytes` (8 * (i)) :: Ptr Pipeline)))
+  pure $ (r, pPipelines)
+
+-- | A convenience wrapper to make a compatible pair of calls to
+-- 'createRayTracingPipelinesKHR' and 'destroyPipeline'
+--
+-- To ensure that 'destroyPipeline' 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.
+--
+withRayTracingPipelinesKHR :: forall io r . MonadIO io => Device -> DeferredOperationKHR -> PipelineCache -> Vector (SomeStruct RayTracingPipelineCreateInfoKHR) -> Maybe AllocationCallbacks -> (io (Result, Vector Pipeline) -> ((Result, Vector Pipeline) -> io ()) -> r) -> r
+withRayTracingPipelinesKHR device
+                             deferredOperation
+                             pipelineCache
+                             pCreateInfos
+                             pAllocator
+                             b =
+  b (createRayTracingPipelinesKHR device
+                                    deferredOperation
+                                    pipelineCache
+                                    pCreateInfos
+                                    pAllocator)
+    (\(_, o1) -> traverse_ (\o1Elem -> destroyPipeline device
+                                                         o1Elem
+                                                         pAllocator) o1)
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdTraceRaysIndirectKHR
+  :: FunPtr (Ptr CommandBuffer_T -> Ptr StridedDeviceAddressRegionKHR -> Ptr StridedDeviceAddressRegionKHR -> Ptr StridedDeviceAddressRegionKHR -> Ptr StridedDeviceAddressRegionKHR -> DeviceAddress -> IO ()) -> Ptr CommandBuffer_T -> Ptr StridedDeviceAddressRegionKHR -> Ptr StridedDeviceAddressRegionKHR -> Ptr StridedDeviceAddressRegionKHR -> Ptr StridedDeviceAddressRegionKHR -> DeviceAddress -> IO ()
+
+-- | vkCmdTraceRaysIndirectKHR - Initialize an indirect ray tracing dispatch
+--
+-- = Description
+--
+-- 'cmdTraceRaysIndirectKHR' behaves similarly to 'cmdTraceRaysKHR' except
+-- that the ray trace query dimensions are read by the device from
+-- @indirectDeviceAddress@ during execution.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-magFilter-04553# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
+--     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR',
+--     @reductionMode@ equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
+--     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-vkCmdTraceRaysIndirectKHR-magFilter-09598# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
+--     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR' and
+--     @reductionMode@ equal to either
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
+--     or
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
+--     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_MINMAX_BIT'
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-mipmapMode-04770# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
+--     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR',
+--     @reductionMode@ equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
+--     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-vkCmdTraceRaysIndirectKHR-mipmapMode-09599# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
+--     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'
+--     and @reductionMode@ equal to either
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
+--     or
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
+--     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_MINMAX_BIT'
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-unnormalizedCoordinates-09635# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the image view’s @levelCount@ and @layerCount@ /must/ be 1
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-None-08609# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the image view’s @viewType@ /must/ be
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D' or
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D'
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-None-08610# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the sampler /must/ not be used with any of the SPIR-V
+--     @OpImageSample*@ or @OpImageSparseSample*@ instructions with
+--     @ImplicitLod@, @Dref@ or @Proj@ in their name
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-None-08611# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the sampler /must/ not be used with any of the SPIR-V
+--     @OpImageSample*@ or @OpImageSparseSample*@ instructions that
+--     includes a LOD bias or any offset values
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-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-vkCmdTraceRaysIndirectKHR-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-vkCmdTraceRaysIndirectKHR-None-07888# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'
+--     descriptor is accessed using atomic operations as a result of this
+--     command, then the storage texel buffer’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-buffer-view-format-features format features>
+--     /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT'
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-None-02692# If a
+--     'Vulkan.Core10.Handles.ImageView' is sampled with
+--     'Vulkan.Core10.Enums.Filter.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.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-None-02693# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_filter_cubic VK_EXT_filter_cubic>
+--     extension is not enabled and any 'Vulkan.Core10.Handles.ImageView'
+--     is sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as a
+--     result of this command, it /must/ not have a
+--     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' of
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE', or
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY'
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-filterCubic-02694# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with
+--     'Vulkan.Core10.Enums.Filter.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-vkCmdTraceRaysIndirectKHR-filterCubicMinmax-02695# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with
+--     'Vulkan.Core10.Enums.Filter.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-vkCmdTraceRaysIndirectKHR-cubicRangeClamp-09212# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-cubicRangeClamp cubicRangeClamp>
+--     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
+--     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
+--     a result of this command /must/ not have a
+--     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
+--     equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-reductionMode-09213# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with a
+--     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
+--     equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
+--     as a result of this command /must/ sample with
+--     'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT'
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-selectableCubicWeights-09214# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-selectableCubicWeights selectableCubicWeights>
+--     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
+--     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
+--     a result of this command /must/ have
+--     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.SamplerCubicWeightsCreateInfoQCOM'::@cubicWeights@
+--     equal to
+--     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM'
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-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-vkCmdTraceRaysIndirectKHR-OpTypeImage-07027# For any
+--     'Vulkan.Core10.Handles.ImageView' being written as a storage image
+--     where the image format field of the @OpTypeImage@ is @Unknown@, the
+--     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_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-OpTypeImage-07028# For any
+--     'Vulkan.Core10.Handles.ImageView' being read as a storage image
+--     where the image format field of the @OpTypeImage@ is @Unknown@, the
+--     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_STORAGE_READ_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-OpTypeImage-07029# For any
+--     'Vulkan.Core10.Handles.BufferView' being written as a storage texel
+--     buffer where the image format field of the @OpTypeImage@ is
+--     @Unknown@, the view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
+--     /must/ contain
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-OpTypeImage-07030# Any
+--     'Vulkan.Core10.Handles.BufferView' being read as a storage texel
+--     buffer where the image format field of the @OpTypeImage@ is
+--     @Unknown@ then the view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
+--     /must/ contain
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-None-08600# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
+--     was created with a pipeline layout and statically uses a set /n/, a
+--     descriptor set /must/ have been bound to /n/ at the same pipeline
+--     bind point, with layouts compatible for set /n/ with the layout(s)
+--     used to create the shader, as described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptors-compatibility ???>
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-None-08601# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
+--     was created with a pipeline layout or specified push constant ranges
+--     and statically uses a push constant value, that value /must/ have
+--     been set for the same pipeline bind point, with push constant ranges
+--     that are
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptors-compatibility compatible>
+--     with the push constant range used to create the shader
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-None-10068# For each array of
+--     resources that is used by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
+--     the indices used to access members of the array /must/ be less than
+--     the descriptor count for the identified binding in the descriptor
+--     sets used by this command
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-None-08114# Descriptors in each
+--     bound descriptor set, specified via
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
+--     be valid if they are accessed as described by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
+--     by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
+--     point used by this command and the bound
+--     'Vulkan.Core10.Handles.Pipeline' was not created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-imageLayout-00344# If an image
+--     descriptor is accessed by a shader, the
+--     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' /must/ match the
+--     subresource accessible from the 'Vulkan.Core10.Handles.ImageView' 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>
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-None-08115# If the descriptors used
+--     by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
+--     point were specified via
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', the
+--     bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     without
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-None-08116# Descriptors in bound
+--     descriptor buffers, specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     /must/ be valid if they are dynamically used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
+--     was created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-None-08604# Descriptors in bound
+--     descriptor buffers, specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     /must/ be valid if they are dynamically used by any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     to the pipeline bind point used by this command
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-None-08117# If the descriptors used
+--     by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
+--     point were specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-None-08119# If a descriptor is
+--     dynamically used with a 'Vulkan.Core10.Handles.Pipeline' created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     the descriptor memory /must/ be resident
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-None-08605# If a descriptor is
+--     dynamically used with a 'Vulkan.Extensions.Handles.ShaderEXT'
+--     created with a 'Vulkan.Core10.Handles.DescriptorSetLayout' that was
+--     created with
+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     the descriptor memory /must/ be resident
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-None-08606# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject>
+--     feature is not enabled, a valid pipeline /must/ be bound to the
+--     pipeline bind point used by this command
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-None-08608# If a pipeline is bound
+--     to the pipeline bind point used by this command, there /must/ not
+--     have been any calls to dynamic state setting commands for any state
+--     specified statically in the 'Vulkan.Core10.Handles.Pipeline' object
+--     bound to the pipeline bind point used by this command, since that
+--     pipeline was bound
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-uniformBuffers-06935# If any stage
+--     of the 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline
+--     bind point used by this command accesses a uniform buffer, and that
+--     stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @uniformBuffers@, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /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-vkCmdTraceRaysIndirectKHR-None-08612# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, and any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     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-vkCmdTraceRaysIndirectKHR-storageBuffers-06936# If any stage
+--     of the 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline
+--     bind point used by this command accesses a storage buffer, and that
+--     stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @storageBuffers@, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /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-vkCmdTraceRaysIndirectKHR-None-08613# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, and any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     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-vkCmdTraceRaysIndirectKHR-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
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shaders>
+--     /must/ not be a protected resource
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-viewType-07752# If a
+--     'Vulkan.Core10.Handles.ImageView' is accessed as a result of this
+--     command, then the image view’s @viewType@ /must/ match the @Dim@
+--     operand of the @OpTypeImage@ as described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-image-dimensions ???>
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-format-07753# If a
+--     'Vulkan.Core10.Handles.ImageView' or
+--     'Vulkan.Core10.Handles.BufferView' is accessed as a result of this
+--     command, then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-numericformat numeric type>
+--     of the view’s @format@ and the @Sampled@ @Type@ operand of the
+--     @OpTypeImage@ /must/ match
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-OpImageWrite-08795# If a
+--     'Vulkan.Core10.Handles.ImageView' created with a format other than
+--     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM' 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-vkCmdTraceRaysIndirectKHR-OpImageWrite-08796# If a
+--     'Vulkan.Core10.Handles.ImageView' created with the format
+--     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM' is accessed using
+--     @OpImageWrite@ as a result of this command, then the @Type@ of the
+--     @Texel@ operand of that instruction /must/ have four components
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-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-vkCmdTraceRaysIndirectKHR-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-vkCmdTraceRaysIndirectKHR-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-vkCmdTraceRaysIndirectKHR-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-vkCmdTraceRaysIndirectKHR-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-vkCmdTraceRaysIndirectKHR-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-vkCmdTraceRaysIndirectKHR-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-vkCmdTraceRaysIndirectKHR-OpImageSampleWeightedQCOM-06971# If
+--     @OpImageSampleWeightedQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM'
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-OpImageSampleWeightedQCOM-06972# If
+--     @OpImageSampleWeightedQCOM@ uses a 'Vulkan.Core10.Handles.ImageView'
+--     as a sample weight image 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM'
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-OpImageBoxFilterQCOM-06973# If
+--     @OpImageBoxFilterQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM'
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-OpImageBlockMatchSSDQCOM-06974# If
+--     @OpImageBlockMatchSSDQCOM@ is used to read from an
+--     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
+--     or
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_SXD_BIT_QCOM'
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-OpImageBlockMatchSADQCOM-12420# If
+--     @OpImageBlockMatchSADQCOM@ is used to read from an
+--     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
+--     or
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_SXD_BIT_QCOM'
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-OpImageBlockMatchSADQCOM-06976# If
+--     @OpImageBlockMatchSADQCOM@ or OpImageBlockMatchSSDQCOM is used to
+--     read from a reference image as result of this command, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-blockMatchExtendedClampToEdge blockMatchExtendedClampToEdge>
+--     feature is not enabled or the /input/ sampler was not created with
+--     both @addressModeU@ and @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--     then the specified reference coordinates /must/ not fail
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-OpImageSampleWeightedQCOM-06977# If
+--     @OpImageSampleWeightedQCOM@, @OpImageBoxFilterQCOM@,
+--     @OpImageBlockMatchWindowSSDQCOM@, @OpImageBlockMatchWindowSADQCOM@,
+--     @OpImageBlockMatchGatherSSDQCOM@, @OpImageBlockMatchGatherSADQCOM@,
+--     @OpImageBlockMatchSSDQCOM@, or @OpImageBlockMatchSADQCOM@ uses a
+--     'Vulkan.Core10.Handles.Sampler' as a result of this command, then
+--     the sampler /must/ have been created with
+--     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-OpImageSampleWeightedQCOM-06978# If
+--     any command other than @OpImageSampleWeightedQCOM@,
+--     @OpImageBoxFilterQCOM@, @OpImageBlockMatchWindowSSDQCOM@,
+--     @OpImageBlockMatchWindowSADQCOM@, @OpImageBlockMatchGatherSSDQCOM@,
+--     @OpImageBlockMatchGatherSADQCOM@, @OpImageBlockMatchSSDQCOM@, or
+--     @OpImageBlockMatchSADQCOM@ uses a 'Vulkan.Core10.Handles.Sampler' as
+--     a result of this command, then the sampler /must/ not have been
+--     created with
+--     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-OpImageBlockMatchWindow-09215# If a
+--     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     instruction is used to read from an
+--     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-OpImageBlockMatchWindow-09216# If a
+--     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     instruction is used to read from an
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the image view’s format /must/ be a single-component format
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-OpImageBlockMatchWindow-09217# If a
+--     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     read from a reference image as result of this command, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-blockMatchExtendedClampToEdge blockMatchExtendedClampToEdge>
+--     feature is not enabled or the /input/ sampler was not created with
+--     both @addressModeU@ and @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--     then the specified reference coordinates /must/ not fail
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-OpImageBlockMatchWindow-12421# If a
+--     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     instruction uses a 'Vulkan.Core10.Handles.Sampler' as a result of
+--     this command, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-blockMatchExtendedClampToEdge blockMatchExtendedClampToEdge>
+--     is not enabled, the /input/ sampler /must/ not have been created
+--     with either @addressModeU@ or @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-addressModeU-12422# If a
+--     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     instruction uses a 'Vulkan.Core10.Handles.Sampler' as a result of
+--     this command, and the /input/ sampler was created with either
+--     @addressModeU@ or @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE',
+--     then the sampler /must/ have been created with both @addressModeU@
+--     and @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-None-07288# Any shader invocation
+--     executed by this command /must/
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-termination terminate>
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-None-09600# If a descriptor with
+--     type equal to any of
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',
+--     or
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'
+--     is accessed as a result of this command, all image subresources
+--     identified by that descriptor /must/ be in the image layout
+--     identified when the descriptor was written
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-micromap-11636# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command through an
+--     @OpRayQueryProceedKHR@ operation , the @VK_EXT_opacity_micromap@
+--     extension is not enabled, and the acceleration structure is built
+--     using geometry with a
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapKHR'
+--     structure included in its @pNext@ chain, the shader /must/ have
+--     specified a @OpacityMicromapIdKHR@ execution mode with its
+--     specialization constant operand equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-micromap-11637# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command and the
+--     acceleration structure was constructed through deserialization, all
+--     micromap arrays referenced by the acceleration structure that were
+--     not replaced by an acceleration structure update command /must/ have
+--     been deserialized using the serialized data of the corresponding
+--     micromaps used to originally build the acceleration structure prior
+--     to the execution of this command on the device
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-micromap-11638# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command and the
+--     acceleration structure is built using geometry with an @indexBuffer@
+--     containing both
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.OpacityMicromapSpecialIndexKHR'
+--     values and indices into an associated micromap array, any
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command /must/ not have been created with @flags@ that
+--     includes
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_KHR'
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-micromap-11639# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command and the
+--     acceleration structure is built using geometry with an @indexBuffer@
+--     containing both
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.OpacityMicromapSpecialIndexKHR'
+--     values and indices into an associated micromap array, any
+--     'Vulkan.Extensions.Handles.ShaderEXT' that accessed the descriptor
+--     /must/ not have been created with @flags@ that includes
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_EXT'
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-10746# The
+--     'Vulkan.Core10.Handles.DeviceMemory' object allocated from a
+--     'Vulkan.Core10.DeviceInitialization.MemoryHeap' with the
+--     'Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_TILE_MEMORY_BIT_QCOM'
+--     property that is bound to a resource accessed as a result of this
+--     command /must/ be the active
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-bind-tile-memory bound tile memory object>
+--     in @commandBuffer@
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-None-10678# If this command is
+--     recorded inside a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-tile-shading tile shading render pass>
+--     instance, the stages corresponding to the pipeline bind point used
+--     by this command /must/ only include
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT',
+--     and\/or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT'
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-None-10679# If this command is
+--     recorded where
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model>
+--     is enabled, there /must/ be no access to any image while the image
+--     was be transitioned to the
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
+--     layout
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-pDescription-09900# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the
+--     underlying 'Vulkan.Extensions.Handles.TensorARM' object /must/ have
+--     been created with the
+--     'Vulkan.Extensions.VK_ARM_tensors.TENSOR_USAGE_SHADER_BIT_ARM' usage
+--     flag set
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-dimensionCount-09905# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the @Rank@
+--     of the @OpTypeTensorARM@ of the tensor resource variable /must/ be
+--     equal to the @dimensionCount@ provided via
+--     'Vulkan.Extensions.VK_ARM_tensors.TensorCreateInfoARM'::@pDescription@
+--     when creating the underlying 'Vulkan.Extensions.Handles.TensorARM'
+--     object
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-OpTypeTensorARM-09906# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the element
+--     type of the @OpTypeTensorARM@ of the tensor resource variable /must/
+--     be
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-tensor-formats compatible>
+--     with the 'Vulkan.Core10.Enums.Format.Format' of the
+--     'Vulkan.Extensions.Handles.TensorViewARM' used for the access
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-None-11297# If a pipeline is bound
+--     to the pipeline bind point used by this command, or shader is bound
+--     to a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses a @OpTypeStruct@ decorated with @Block@ or
+--     @BufferBlock@ using that mapping, the calculated offset for the
+--     resource heap /must/ be a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-bufferDescriptorAlignment bufferDescriptorAlignment>
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-None-11298# If a pipeline is bound
+--     to the pipeline bind point used by this command, or shader is bound
+--     to a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses an @OpTypeImage@ or @OpTypeSampledImage@ using
+--     that mapping, the calculated offset for the resource heap /must/ be
+--     a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-imageDescriptorAlignment imageDescriptorAlignment>
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-None-11299# If a pipeline is bound
+--     to the pipeline bind point used by this command, or shader is bound
+--     to a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses an @OpTypeSampler@ or @OpTypeSampledImage@
+--     using that mapping, the calculated offset for the sampler heap
+--     /must/ be a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-samplerDescriptorAlignment samplerDescriptorAlignment>
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-None-11397# If a pipeline is bound
+--     to the pipeline bind point used by this command, or shader is bound
+--     to a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses an @OpTypeTensorARM@ using that mapping, the
+--     calculated offset for the resource heap /must/ be a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-tensorDescriptorAlignment tensorDescriptorAlignment>
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-None-11300# If a pipeline is bound
+--     to the pipeline bind point used by this command, or shader is bound
+--     to a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a
+--     multiple of 4
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-None-11301# If a pipeline is bound
+--     to the pipeline bind point used by this command, or shader is bound
+--     to a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' backed by physical
+--     memory at every offset specified by each mapping
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-None-11302# If a pipeline is bound
+--     to the pipeline bind point used by this command, or shader is bound
+--     to a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-None-11304# If a pipeline is bound
+--     to the pipeline bind point used by this command, or shader is bound
+--     to a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a
+--     multiple of 8
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-None-11305# If a pipeline is bound
+--     to the pipeline bind point used by this command, or shader is bound
+--     to a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' backed by physical
+--     memory at every offset specified by each mapping
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-None-11306# If a pipeline is bound
+--     to the pipeline bind point used by this command, or shader is bound
+--     to a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address pointed to by the address in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-None-11308# For each
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps descriptor heap>
+--     that is statically used by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
+--     either directly or via a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>,
+--     a valid descriptor heap /must/ be bound
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-None-11309# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     was created as a 'Vulkan.Extensions.Handles.ShaderEXT' with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag or as part of a pipeline with the
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag, execution of this command /must/ not result in any descriptor
+--     read accessing data outside of the user range of the respective heap
+--     bound by @vkCmdBind*HeapEXT@ commands
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-None-11372# If any stage of the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command accesses a uniform buffer or uniform
+--     texel buffer through a descriptor in the bound resource heap, that
+--     stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @uniformBuffers@, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /must/ not access values outside
+--     of the range of the descriptor specified via
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+--     when the descriptor was written
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-None-11373# If any stage of the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command accesses a storage buffer or storage
+--     texel buffer through a descriptor in the bound resource heap, that
+--     stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @storageBuffers@, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /must/ not access values outside
+--     of the range of the descriptor specified by
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+--     when the descriptor was written
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-None-11374# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, and any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     to the pipeline bind point used by this command accesses a uniform
+--     buffer, uniform texel buffer, storage buffer, or storage texel
+--     buffer, that shader /must/ not access values outside of the range of
+--     the buffer as specified by
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+--     when the descriptor was written
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-pBindInfo-11375# If any
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     uses an embedded sampler via a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>,
+--     the value of @pBindInfo->reservedRangeSize@ set for
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.cmdBindSamplerHeapEXT'
+--     /must/ be greater than or equal to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minSamplerHeapReservedRangeWithEmbedded minSamplerHeapReservedRangeWithEmbedded>
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-None-11376# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     was created as a 'Vulkan.Extensions.Handles.ShaderEXT' with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag or as part of a pipeline with the
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag, and that shader statically uses a push constant value, that
+--     value /must/ have been set by
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.cmdPushDataEXT'
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-None-11398# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_DATA_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_DATA_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_RESOURCE_HEAP_DATA_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the access
+--     /must/ not be
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-execution-memory-access-bounds out of bounds>
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-None-11437# If a pipeline is bound
+--     to the pipeline bind point used by this command, or shader is bound
+--     to a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the buffer from
+--     which the address in push data was queried /must/ have been created
+--     with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-None-11438# If a pipeline is bound
+--     to the pipeline bind point used by this command, or shader is bound
+--     to a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a uniform buffer using that mapping, the
+--     address that the uniform buffer is mapped to /must/ have been
+--     queried from a buffer created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-None-11441# If a pipeline is bound
+--     to the pipeline bind point used by this command, or shader is bound
+--     to a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a uniform buffer using that mapping, the
+--     address that the uniform buffer is mapped to /must/ be aligned to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minUniformBufferOffsetAlignment minUniformBufferOffsetAlignment>
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-None-11439# If a pipeline is bound
+--     to the pipeline bind point used by this command, or shader is bound
+--     to a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a storage buffer using that mapping, the
+--     address that the storage buffer is mapped to /must/ have been
+--     queried from a buffer created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_STORAGE_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-None-11442# If a pipeline is bound
+--     to the pipeline bind point used by this command, or shader is bound
+--     to a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a storage buffer using that mapping, the
+--     address that the storage buffer is mapped to /must/ be aligned to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minStorageBufferOffsetAlignment minStorageBufferOffsetAlignment>
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-None-11485# If a pipeline is bound
+--     to the pipeline bind point used by this command, or shader is bound
+--     to a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses an acceleration structure using that mapping,
+--     the address that the acceleration structure is mapped to /must/ be
+--     an acceleration structure address retrieved from a
+--     'Vulkan.Extensions.Handles.AccelerationStructureKHR' object via
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.getAccelerationStructureDeviceAddressKHR'
+--     or handle retrieved from a
+--     'Vulkan.Extensions.Handles.AccelerationStructureNV' object via
+--     'Vulkan.Extensions.VK_NV_ray_tracing.getAccelerationStructureHandleNV'
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-index-11450# If a shader uses a
+--     sampler descriptor to sample an image as a result of this command,
+--     and that sampler descriptor uses a custom border color with an index
+--     defined by
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.SamplerCustomBorderColorIndexCreateInfoEXT',
+--     the value of
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.SamplerCustomBorderColorIndexCreateInfoEXT'::@index@
+--     /must/ have been registered before this command was recorded, and
+--     still be registered during the sampling operation, with an
+--     identically defined color
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-protectedNoFault-11455# If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, a pipeline is bound to the pipeline bind point
+--     used by this command, or a shader is bound to a shader stage used by
+--     this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     the address that the resource is mapped to /must/ have been queried
+--     from a buffer created without the
+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT'
+--     create flag set
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-protectedNoFault-11456# If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, a pipeline is bound to the pipeline bind point
+--     used by this command, or a shader is bound to a shader stage used by
+--     this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     the address of the indirect memory /must/ have been queried from a
+--     buffer created without the
+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT'
+--     create flag set
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-None-03429# Any shader group handle
+--     referenced by this call /must/ have been queried from the bound ray
+--     tracing pipeline
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-None-09458# If the bound ray tracing
+--     pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR'
+--     dynamic state enabled then 'cmdSetRayTracingPipelineStackSizeKHR'
+--     /must/ have been called in the current command buffer prior to this
+--     trace command
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-None-11319# If a pipeline is bound
+--     to the pipeline bind point used by this command, or shader is bound
+--     to a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     the value of the address at the expected location in shader record
+--     data /must/ be a valid address
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-maxPipelineRayRecursionDepth-03679#
+--     This command /must/ not cause a shader call 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>
+--     greater than the value of @maxPipelineRayRecursionDepth@ used to
+--     create the bound ray tracing pipeline
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-03635# @commandBuffer@
+--     /must/ not be a protected command buffer
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-micromap-11640# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command, the access is
+--     not through an @OpRayQueryProceedKHR@ operation, and the
+--     acceleration structure is built using geometry with a
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapKHR'
+--     or
+--     'Vulkan.Extensions.VK_EXT_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapEXT'
+--     structure included in its @pNext@ chain, the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command /must/ have been created with @flags@ that
+--     includes
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_KHR'
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-size-04023# The @size@ member of
+--     @pRayGenShaderBindingTable@ /must/ be equal to its @stride@ member
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-pRayGenShaderBindingTable-03681#
+--     @pRayGenShaderBindingTable->deviceAddress@ /must/ be a device
+--     address allocated to the application from a buffer created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR'
+--     usage flag set
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-pRayGenShaderBindingTable-03682#
+--     @pRayGenShaderBindingTable->deviceAddress@ /must/ be a multiple of
+--     'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@shaderGroupBaseAlignment@
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-pMissShaderBindingTable-03684#
+--     @pMissShaderBindingTable->deviceAddress@ /must/ be a device address
+--     allocated to the application from a buffer created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR'
+--     usage flag set
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-pMissShaderBindingTable-03685#
+--     @pMissShaderBindingTable->deviceAddress@ /must/ be a multiple of
+--     'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@shaderGroupBaseAlignment@
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-stride-03686#
+--     @pMissShaderBindingTable->stride@ /must/ be a multiple of
+--     'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@shaderGroupHandleAlignment@
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-stride-04029#
+--     @pMissShaderBindingTable->stride@ /must/ be less than or equal to
+--     'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@maxShaderGroupStride@
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-pHitShaderBindingTable-03688#
+--     @pHitShaderBindingTable->deviceAddress@ /must/ be a device address
+--     allocated to the application from a buffer created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR'
+--     usage flag set
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-pHitShaderBindingTable-03689#
+--     @pHitShaderBindingTable->deviceAddress@ /must/ be a multiple of
+--     'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@shaderGroupBaseAlignment@
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-stride-03690#
+--     @pHitShaderBindingTable->stride@ /must/ be a multiple of
+--     'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@shaderGroupHandleAlignment@
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-stride-04035#
+--     @pHitShaderBindingTable->stride@ /must/ be less than or equal to
+--     'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@maxShaderGroupStride@
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-pCallableShaderBindingTable-03692#
+--     @pCallableShaderBindingTable->deviceAddress@ /must/ be a device
+--     address allocated to the application from a buffer created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR'
+--     usage flag set
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-pCallableShaderBindingTable-03693#
+--     @pCallableShaderBindingTable->deviceAddress@ /must/ be a multiple of
+--     'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@shaderGroupBaseAlignment@
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-stride-03694#
+--     @pCallableShaderBindingTable->stride@ /must/ be a multiple of
+--     'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@shaderGroupHandleAlignment@
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-stride-04041#
+--     @pCallableShaderBindingTable->stride@ /must/ be less than or equal
+--     to
+--     'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@maxShaderGroupStride@
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-flags-03511# If the bound ray
+--     tracing pipeline was created with @flags@ that included
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR',
+--     the entries in the table identified by
+--     @pMissShaderBindingTable->deviceAddress@ accessed as a result of
+--     this command in order to execute a miss shader /must/ not be zero
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-flags-03512# If the bound ray
+--     tracing pipeline was created with @flags@ that included
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR',
+--     entries in the table identified by
+--     @pHitShaderBindingTable->deviceAddress@ accessed as a result of this
+--     command in order to execute an any-hit shader /must/ not be zero
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-flags-03513# If the bound ray
+--     tracing pipeline was created with @flags@ that included
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR',
+--     entries in the table identified by
+--     @pHitShaderBindingTable->deviceAddress@ accessed as a result of this
+--     command in order to execute a closest hit shader /must/ not be zero
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-flags-03514# If the bound ray
+--     tracing pipeline was created with @flags@ that included
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR',
+--     entries in the table identified by
+--     @pHitShaderBindingTable->deviceAddress@ accessed as a result of this
+--     command in order to execute an intersection shader /must/ not be
+--     zero
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-pHitShaderBindingTable-04735# Any
+--     non-zero hit shader group entries in the table identified by
+--     @pHitShaderBindingTable->deviceAddress@ accessed by this call from a
+--     geometry with a @geometryType@ of
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.GEOMETRY_TYPE_TRIANGLES_KHR'
+--     /must/ have been created with
+--     'RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR'
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-pHitShaderBindingTable-04736# Any
+--     non-zero hit shader group entries in the table identified by
+--     @pHitShaderBindingTable->deviceAddress@ accessed by this call from a
+--     geometry with a @geometryType@ of
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.GEOMETRY_TYPE_AABBS_KHR'
+--     /must/ have been created with
+--     'RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR'
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-indirectDeviceAddress-03633#
+--     @indirectDeviceAddress@ /must/ be a device address allocated to the
+--     application from a buffer created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-indirectDeviceAddress-03634#
+--     @indirectDeviceAddress@ /must/ be a multiple of @4@
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-indirectDeviceAddress-03636# All
+--     device addresses between @indirectDeviceAddress@ and
+--     @indirectDeviceAddress@ + @sizeof@('TraceRaysIndirectCommandKHR') -
+--     1 /must/ be in the buffer device address range of the same buffer
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-rayTracingPipelineTraceRaysIndirect-03637#
+--     The
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayTracingPipelineTraceRaysIndirect rayTracingPipelineTraceRaysIndirect>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-rayTracingMotionBlurPipelineTraceRaysIndirect-04951#
+--     If the bound ray tracing pipeline was created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV'
+--     'Vulkan.Extensions.VK_NV_ray_tracing_motion_blur.PhysicalDeviceRayTracingMotionBlurFeaturesNV'::@rayTracingMotionBlurPipelineTraceRaysIndirect@
+--     feature /must/ be enabled
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-pRaygenShaderBindingTable-parameter#
+--     @pRaygenShaderBindingTable@ /must/ be a valid pointer to a valid
+--     'StridedDeviceAddressRegionKHR' structure
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-pMissShaderBindingTable-parameter#
+--     @pMissShaderBindingTable@ /must/ be a valid pointer to a valid
+--     'StridedDeviceAddressRegionKHR' structure
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-pHitShaderBindingTable-parameter#
+--     @pHitShaderBindingTable@ /must/ be a valid pointer to a valid
+--     'StridedDeviceAddressRegionKHR' structure
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-pCallableShaderBindingTable-parameter#
+--     @pCallableShaderBindingTable@ /must/ be a valid pointer to a valid
+--     'StridedDeviceAddressRegionKHR' structure
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-indirectDeviceAddress-parameter#
+--     @indirectDeviceAddress@ /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' value
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-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-vkCmdTraceRaysIndirectKHR-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT' operations
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-renderpass# This command /must/ only
+--     be called outside of a render pass instance
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-suspended# This command /must/ not
+--     be called between suspended render pass instances
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-videocoding# This command /must/
+--     only be called outside of a video coding scope
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdTraceRaysIndirectKHR is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_ray_tracing_pipeline VK_KHR_ray_tracing_pipeline>,
+-- 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceAddress',
+-- 'StridedDeviceAddressRegionKHR'
+cmdTraceRaysIndirectKHR :: forall io
+                         . (MonadIO io)
+                        => -- | @commandBuffer@ is the command buffer into which the command will be
+                           -- recorded.
+                           CommandBuffer
+                        -> -- | @pRaygenShaderBindingTable@ is a 'StridedDeviceAddressRegionKHR' that
+                           -- holds the shader binding table data for the ray generation shader stage.
+                           ("raygenShaderBindingTable" ::: StridedDeviceAddressRegionKHR)
+                        -> -- | @pMissShaderBindingTable@ is a 'StridedDeviceAddressRegionKHR' that
+                           -- holds the shader binding table data for the miss shader stage.
+                           ("missShaderBindingTable" ::: StridedDeviceAddressRegionKHR)
+                        -> -- | @pHitShaderBindingTable@ is a 'StridedDeviceAddressRegionKHR' that holds
+                           -- the shader binding table data for the hit shader stage.
+                           ("hitShaderBindingTable" ::: StridedDeviceAddressRegionKHR)
+                        -> -- | @pCallableShaderBindingTable@ is a 'StridedDeviceAddressRegionKHR' that
+                           -- holds the shader binding table data for the callable shader stage.
+                           ("callableShaderBindingTable" ::: StridedDeviceAddressRegionKHR)
+                        -> -- | @indirectDeviceAddress@ is a buffer device address which is a pointer to
+                           -- a 'TraceRaysIndirectCommandKHR' structure containing the trace ray
+                           -- parameters.
+                           ("indirectDeviceAddress" ::: DeviceAddress)
+                        -> io ()
+cmdTraceRaysIndirectKHR commandBuffer
+                          raygenShaderBindingTable
+                          missShaderBindingTable
+                          hitShaderBindingTable
+                          callableShaderBindingTable
+                          indirectDeviceAddress = liftIO . evalContT $ do
+  let vkCmdTraceRaysIndirectKHRPtr = pVkCmdTraceRaysIndirectKHR (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdTraceRaysIndirectKHRPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdTraceRaysIndirectKHR is null" Nothing Nothing
+  let vkCmdTraceRaysIndirectKHR' = mkVkCmdTraceRaysIndirectKHR vkCmdTraceRaysIndirectKHRPtr
+  pRaygenShaderBindingTable <- ContT $ withCStruct (raygenShaderBindingTable)
+  pMissShaderBindingTable <- ContT $ withCStruct (missShaderBindingTable)
+  pHitShaderBindingTable <- ContT $ withCStruct (hitShaderBindingTable)
+  pCallableShaderBindingTable <- ContT $ withCStruct (callableShaderBindingTable)
+  lift $ traceAroundEvent "vkCmdTraceRaysIndirectKHR" (vkCmdTraceRaysIndirectKHR'
+                                                         (commandBufferHandle (commandBuffer))
+                                                         pRaygenShaderBindingTable
+                                                         pMissShaderBindingTable
+                                                         pHitShaderBindingTable
+                                                         pCallableShaderBindingTable
+                                                         (indirectDeviceAddress))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetRayTracingShaderGroupStackSizeKHR
+  :: FunPtr (Ptr Device_T -> Pipeline -> Word32 -> ShaderGroupShaderKHR -> IO DeviceSize) -> Ptr Device_T -> Pipeline -> Word32 -> ShaderGroupShaderKHR -> IO DeviceSize
+
+-- | vkGetRayTracingShaderGroupStackSizeKHR - Query ray tracing pipeline
+-- shader group shader stack size
+--
+-- = Description
+--
+-- The return value is the ray tracing pipeline stack size in bytes for the
+-- specified shader as called from the specified shader group.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkGetRayTracingShaderGroupStackSizeKHR-pipeline-04622#
+--     @pipeline@ /must/ be a ray tracing pipeline
+--
+-- -   #VUID-vkGetRayTracingShaderGroupStackSizeKHR-group-03608# The value
+--     of @group@ /must/ be less than the number of shader groups in
+--     @pipeline@
+--
+-- -   #VUID-vkGetRayTracingShaderGroupStackSizeKHR-groupShader-03609# The
+--     shader identified by @groupShader@ in @group@ /must/ not be
+--     'Vulkan.Core10.APIConstants.SHADER_UNUSED_KHR'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkGetRayTracingShaderGroupStackSizeKHR-device-parameter#
+--     @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkGetRayTracingShaderGroupStackSizeKHR-pipeline-parameter#
+--     @pipeline@ /must/ be a valid 'Vulkan.Core10.Handles.Pipeline' handle
+--
+-- -   #VUID-vkGetRayTracingShaderGroupStackSizeKHR-groupShader-parameter#
+--     @groupShader@ /must/ be a valid 'ShaderGroupShaderKHR' value
+--
+-- -   #VUID-vkGetRayTracingShaderGroupStackSizeKHR-pipeline-parent#
+--     @pipeline@ /must/ have been created, allocated, or retrieved from
+--     @device@
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_ray_tracing_pipeline VK_KHR_ray_tracing_pipeline>,
+-- 'Vulkan.Core10.Handles.Device', 'Vulkan.Core10.Handles.Pipeline',
+-- 'ShaderGroupShaderKHR'
+getRayTracingShaderGroupStackSizeKHR :: forall io
+                                      . (MonadIO io)
+                                     => -- | @device@ is the logical device containing the ray tracing pipeline.
+                                        Device
+                                     -> -- | @pipeline@ is the ray tracing pipeline object containing the shaders
+                                        -- groups.
+                                        Pipeline
+                                     -> -- | @group@ is the index of the shader group to query.
+                                        ("group" ::: Word32)
+                                     -> -- | @groupShader@ is the type of shader from the group to query.
+                                        ShaderGroupShaderKHR
+                                     -> io (DeviceSize)
+getRayTracingShaderGroupStackSizeKHR device
+                                       pipeline
+                                       group
+                                       groupShader = liftIO $ do
+  let vkGetRayTracingShaderGroupStackSizeKHRPtr = pVkGetRayTracingShaderGroupStackSizeKHR (case device of Device{deviceCmds} -> deviceCmds)
+  unless (vkGetRayTracingShaderGroupStackSizeKHRPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetRayTracingShaderGroupStackSizeKHR is null" Nothing Nothing
+  let vkGetRayTracingShaderGroupStackSizeKHR' = mkVkGetRayTracingShaderGroupStackSizeKHR vkGetRayTracingShaderGroupStackSizeKHRPtr
+  r <- traceAroundEvent "vkGetRayTracingShaderGroupStackSizeKHR" (vkGetRayTracingShaderGroupStackSizeKHR'
+                                                                    (deviceHandle (device))
+                                                                    (pipeline)
+                                                                    (group)
+                                                                    (groupShader))
+  pure $ (r)
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdSetRayTracingPipelineStackSizeKHR
+  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> IO ()
+
+-- | vkCmdSetRayTracingPipelineStackSizeKHR - Set the stack size dynamically
+-- for a ray tracing pipeline
+--
+-- = Description
+--
+-- This command sets the stack size for subsequent ray tracing commands
+-- when the ray tracing pipeline is created with
+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR'
+-- set in
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- Otherwise, the stack size is computed as described in
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#ray-tracing-pipeline-stack Ray Tracing Pipeline Stack>.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdSetRayTracingPipelineStackSizeKHR-pipelineStackSize-03610#
+--     @pipelineStackSize@ /must/ be large enough for any dynamic execution
+--     through the shaders in the ray tracing pipeline used by a subsequent
+--     trace call
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdSetRayTracingPipelineStackSizeKHR-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdSetRayTracingPipelineStackSizeKHR-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-vkCmdSetRayTracingPipelineStackSizeKHR-commandBuffer-cmdpool#
+--     The 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT' operations
+--
+-- -   #VUID-vkCmdSetRayTracingPipelineStackSizeKHR-renderpass# This
+--     command /must/ only be called outside of a render pass instance
+--
+-- -   #VUID-vkCmdSetRayTracingPipelineStackSizeKHR-videocoding# This
+--     command /must/ only be called outside of a video coding scope
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | State                                                                                                                                  |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdSetRayTracingPipelineStackSizeKHR is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_ray_tracing_pipeline VK_KHR_ray_tracing_pipeline>,
+-- 'Vulkan.Core10.Handles.CommandBuffer'
+cmdSetRayTracingPipelineStackSizeKHR :: forall io
+                                      . (MonadIO io)
+                                     => -- | @commandBuffer@ is the command buffer into which the command will be
+                                        -- recorded.
+                                        CommandBuffer
+                                     -> -- | @pipelineStackSize@ is the stack size to use for subsequent ray tracing
+                                        -- trace commands.
+                                        ("pipelineStackSize" ::: Word32)
+                                     -> io ()
+cmdSetRayTracingPipelineStackSizeKHR commandBuffer
+                                       pipelineStackSize = liftIO $ do
+  let vkCmdSetRayTracingPipelineStackSizeKHRPtr = pVkCmdSetRayTracingPipelineStackSizeKHR (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  unless (vkCmdSetRayTracingPipelineStackSizeKHRPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetRayTracingPipelineStackSizeKHR is null" Nothing Nothing
+  let vkCmdSetRayTracingPipelineStackSizeKHR' = mkVkCmdSetRayTracingPipelineStackSizeKHR vkCmdSetRayTracingPipelineStackSizeKHRPtr
+  traceAroundEvent "vkCmdSetRayTracingPipelineStackSizeKHR" (vkCmdSetRayTracingPipelineStackSizeKHR'
+                                                               (commandBufferHandle (commandBuffer))
+                                                               (pipelineStackSize))
+  pure $ ()
+
+
+-- No documentation found for TopLevel "VK_PIPELINE_CREATE_2_RAY_TRACING_SKIP_BUILT_IN_PRIMITIVES_BIT_KHR"
+pattern PIPELINE_CREATE_2_RAY_TRACING_SKIP_BUILT_IN_PRIMITIVES_BIT_KHR = PIPELINE_CREATE_2_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR
+
+
+-- | VkRayTracingShaderGroupCreateInfoKHR - Structure specifying shaders in a
+-- shader group
+--
+-- = Description
+--
+-- If the pipeline is created with
+-- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR'
+-- and the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-pipelineLibraryGroupHandles pipelineLibraryGroupHandles>
+-- feature is enabled, @pShaderGroupCaptureReplayHandle@ is inherited by
+-- all pipelines which link against this pipeline and remains bitwise
+-- identical for any pipeline which references this pipeline library.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkRayTracingShaderGroupCreateInfoKHR-type-03474# If @type@ is
+--     'RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR' then @generalShader@
+--     /must/ be a valid index into the list of shaders, formed by shaders
+--     in 'RayTracingPipelineCreateInfoKHR'::@pStages@ and the shaders
+--     imported from pipeline libraries, referring to a shader of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_RAYGEN_BIT_KHR',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MISS_BIT_KHR',
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_CALLABLE_BIT_KHR'
+--
+-- -   #VUID-VkRayTracingShaderGroupCreateInfoKHR-type-03475# If @type@ is
+--     'RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR' then @closestHitShader@,
+--     @anyHitShader@, and @intersectionShader@ /must/ be
+--     'Vulkan.Core10.APIConstants.SHADER_UNUSED_KHR'
+--
+-- -   #VUID-VkRayTracingShaderGroupCreateInfoKHR-type-03476# If @type@ is
+--     'RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR' then
+--     @intersectionShader@ /must/ be a valid index into the list of
+--     shaders, formed by shaders in
+--     'RayTracingPipelineCreateInfoKHR'::@pStages@ and the shaders
+--     imported from pipeline libraries, referring to a shader of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_INTERSECTION_BIT_KHR'
+--
+-- -   #VUID-VkRayTracingShaderGroupCreateInfoKHR-type-03477# If @type@ is
+--     'RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR' then
+--     @intersectionShader@ /must/ be
+--     'Vulkan.Core10.APIConstants.SHADER_UNUSED_KHR'
+--
+-- -   #VUID-VkRayTracingShaderGroupCreateInfoKHR-closestHitShader-03478#
+--     @closestHitShader@ /must/ be either
+--     'Vulkan.Core10.APIConstants.SHADER_UNUSED_KHR' or a valid index into
+--     the list of shaders, formed by shaders in
+--     'RayTracingPipelineCreateInfoKHR'::@pStages@ and the shaders
+--     imported from pipeline libraries, referring to a shader of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_CLOSEST_HIT_BIT_KHR'
+--
+-- -   #VUID-VkRayTracingShaderGroupCreateInfoKHR-anyHitShader-03479#
+--     @anyHitShader@ /must/ be either
+--     'Vulkan.Core10.APIConstants.SHADER_UNUSED_KHR' or a valid index into
+--     the list of shaders, formed by shaders in
+--     'RayTracingPipelineCreateInfoKHR'::@pStages@ and the shaders
+--     imported from pipeline libraries, referring to a shader of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_ANY_HIT_BIT_KHR'
+--
+-- -   #VUID-VkRayTracingShaderGroupCreateInfoKHR-rayTracingPipelineShaderGroupHandleCaptureReplayMixed-03603#
+--     If
+--     'PhysicalDeviceRayTracingPipelineFeaturesKHR'::@rayTracingPipelineShaderGroupHandleCaptureReplayMixed@
+--     is 'Vulkan.Core10.FundamentalTypes.FALSE' then
+--     @pShaderGroupCaptureReplayHandle@ /must/ not be provided if it has
+--     not been provided on a previous call to ray tracing pipeline
+--     creation
+--
+-- -   #VUID-VkRayTracingShaderGroupCreateInfoKHR-rayTracingPipelineShaderGroupHandleCaptureReplayMixed-03604#
+--     If
+--     'PhysicalDeviceRayTracingPipelineFeaturesKHR'::@rayTracingPipelineShaderGroupHandleCaptureReplayMixed@
+--     is 'Vulkan.Core10.FundamentalTypes.FALSE' then the caller /must/
+--     guarantee that no ray tracing pipeline creation commands with
+--     @pShaderGroupCaptureReplayHandle@ provided execute simultaneously
+--     with ray tracing pipeline creation commands without
+--     @pShaderGroupCaptureReplayHandle@ provided
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkRayTracingShaderGroupCreateInfoKHR-sType-sType# @sType@
+--     /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR'
+--
+-- -   #VUID-VkRayTracingShaderGroupCreateInfoKHR-pNext-pNext# @pNext@
+--     /must/ be @NULL@
+--
+-- -   #VUID-VkRayTracingShaderGroupCreateInfoKHR-type-parameter# @type@
+--     /must/ be a valid 'RayTracingShaderGroupTypeKHR' value
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_ray_tracing_pipeline VK_KHR_ray_tracing_pipeline>,
+-- 'RayTracingPipelineCreateInfoKHR', 'RayTracingShaderGroupTypeKHR',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data RayTracingShaderGroupCreateInfoKHR = RayTracingShaderGroupCreateInfoKHR
+  { -- | @type@ is the type of hit group specified in this structure.
+    type' :: RayTracingShaderGroupTypeKHR
+  , -- | @generalShader@ is the index of the ray generation, miss, or callable
+    -- shader from 'RayTracingPipelineCreateInfoKHR'::@pStages@ in the group if
+    -- the shader group has @type@ of
+    -- 'RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR', and
+    -- 'Vulkan.Core10.APIConstants.SHADER_UNUSED_KHR' otherwise.
+    generalShader :: Word32
+  , -- | @closestHitShader@ is the optional index of the closest hit shader from
+    -- 'RayTracingPipelineCreateInfoKHR'::@pStages@ in the group if the shader
+    -- group has @type@ of
+    -- 'RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR' or
+    -- 'RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR', and
+    -- 'Vulkan.Core10.APIConstants.SHADER_UNUSED_KHR' otherwise.
+    closestHitShader :: Word32
+  , -- | @anyHitShader@ is the optional index of the any-hit shader from
+    -- 'RayTracingPipelineCreateInfoKHR'::@pStages@ in the group if the shader
+    -- group has @type@ of
+    -- 'RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR' or
+    -- 'RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR', and
+    -- 'Vulkan.Core10.APIConstants.SHADER_UNUSED_KHR' otherwise.
+    anyHitShader :: Word32
+  , -- | @intersectionShader@ is the index of the intersection shader from
+    -- 'RayTracingPipelineCreateInfoKHR'::@pStages@ in the group if the shader
+    -- group has @type@ of
+    -- 'RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR', and
+    -- 'Vulkan.Core10.APIConstants.SHADER_UNUSED_KHR' otherwise.
+    intersectionShader :: Word32
+  , -- | @pShaderGroupCaptureReplayHandle@ is @NULL@ or a pointer to replay
+    -- information for this shader group queried from
+    -- 'getRayTracingCaptureReplayShaderGroupHandlesKHR', as described in
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#ray-tracing-capture-replay Ray Tracing Capture Replay>.
+    -- Ignored if
+    -- 'PhysicalDeviceRayTracingPipelineFeaturesKHR'::@rayTracingPipelineShaderGroupHandleCaptureReplay@
+    -- is 'Vulkan.Core10.FundamentalTypes.FALSE'.
+    shaderGroupCaptureReplayHandle :: Ptr ()
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (RayTracingShaderGroupCreateInfoKHR)
+#endif
+deriving instance Show RayTracingShaderGroupCreateInfoKHR
+
+instance ToCStruct RayTracingShaderGroupCreateInfoKHR where
+  withCStruct x f = allocaBytes 48 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p RayTracingShaderGroupCreateInfoKHR{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr RayTracingShaderGroupTypeKHR)) (type')
+    poke ((p `plusPtr` 20 :: Ptr Word32)) (generalShader)
+    poke ((p `plusPtr` 24 :: Ptr Word32)) (closestHitShader)
+    poke ((p `plusPtr` 28 :: Ptr Word32)) (anyHitShader)
+    poke ((p `plusPtr` 32 :: Ptr Word32)) (intersectionShader)
+    poke ((p `plusPtr` 40 :: Ptr (Ptr ()))) (shaderGroupCaptureReplayHandle)
+    f
+  cStructSize = 48
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr RayTracingShaderGroupTypeKHR)) (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 RayTracingShaderGroupCreateInfoKHR where
+  peekCStruct p = do
+    type' <- peek @RayTracingShaderGroupTypeKHR ((p `plusPtr` 16 :: Ptr RayTracingShaderGroupTypeKHR))
+    generalShader <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
+    closestHitShader <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))
+    anyHitShader <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))
+    intersectionShader <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))
+    pShaderGroupCaptureReplayHandle <- peek @(Ptr ()) ((p `plusPtr` 40 :: Ptr (Ptr ())))
+    pure $ RayTracingShaderGroupCreateInfoKHR
+             type'
+             generalShader
+             closestHitShader
+             anyHitShader
+             intersectionShader
+             pShaderGroupCaptureReplayHandle
+
+instance Storable RayTracingShaderGroupCreateInfoKHR where
+  sizeOf ~_ = 48
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero RayTracingShaderGroupCreateInfoKHR where
+  zero = RayTracingShaderGroupCreateInfoKHR
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkRayTracingPipelineCreateInfoKHR - Structure specifying parameters of a
+-- newly created ray tracing pipeline
+--
+-- = Description
+--
+-- The parameters @basePipelineHandle@ and @basePipelineIndex@ are
+-- described in more detail in
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-pipeline-derivatives Pipeline Derivatives>.
+--
+-- When
+-- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR'
+-- is specified, this pipeline defines a /pipeline library/ which /cannot/
+-- be bound as a ray tracing pipeline directly. Instead, pipeline libraries
+-- define common shaders and shader groups which /can/ be included in
+-- future pipeline creation.
+--
+-- If pipeline libraries are included in @pLibraryInfo@, shaders defined in
+-- those libraries are treated as if they were defined as additional
+-- entries in @pStages@, appended in the order they appear in the
+-- @pLibraries@ array and in the @pStages@ array when those libraries were
+-- defined.
+--
+-- When referencing shader groups in order to obtain a shader group handle,
+-- groups defined in those libraries are treated as if they were defined as
+-- additional entries in @pGroups@, appended in the order they appear in
+-- the @pLibraries@ array and in the @pGroups@ array when those libraries
+-- were defined. The shaders these groups reference are set when the
+-- pipeline library is created, referencing those specified in the pipeline
+-- library, not in the pipeline that includes it.
+--
+-- 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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#ray-tracing-pipeline-stack Ray Tracing Pipeline Stack>.
+--
+-- If the @pNext@ chain includes a
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.PipelineCreateFlags2CreateInfo'
+-- structure,
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.PipelineCreateFlags2CreateInfo'::@flags@
+-- from that structure is used instead of @flags@ from this structure.
+--
+-- If the @pNext@ chain includes a
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkRayTracingPipelineClusterAccelerationStructureCreateInfoNV VkRayTracingPipelineClusterAccelerationStructureCreateInfoNV>
+-- structure, then that structure controls whether cluster acceleration
+-- structures are allowed in this ray tracing pipeline.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-None-09497# If the @pNext@
+--     chain does not include a
+--     'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.PipelineCreateFlags2CreateInfo'
+--     structure, @flags@ /must/ be a valid combination of
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits'
+--     values
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-flags-07984# If @flags@
+--     contains the
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'
+--     flag, and @basePipelineIndex@ is -1, @basePipelineHandle@ /must/ be
+--     a valid ray tracing 'Vulkan.Core10.Handles.Pipeline' handle
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-flags-07985# If @flags@
+--     contains the
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'
+--     flag, and @basePipelineHandle@ is
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', @basePipelineIndex@ /must/
+--     be a valid index into the calling command’s @pCreateInfos@ parameter
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-flags-07986# If @flags@
+--     contains the
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'
+--     flag, @basePipelineIndex@ /must/ be -1 or @basePipelineHandle@
+--     /must/ be 'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-layout-07987# If a push
+--     constant block is declared in a shader and @layout@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', a push constant range in
+--     @layout@ /must/ match the shader stage
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-layout-10069# If a push
+--     constant block is declared in a shader and @layout@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', the block must be
+--     contained inside the push constant range in @layout@ that matches
+--     the stage
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-layout-07988# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-resources resource variable>
+--     is declared in a shader and @layout@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', the corresponding
+--     descriptor set in @layout@ /must/ match the shader stage
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-layout-07990# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-resources resource variable>
+--     is declared in a shader, @layout@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the descriptor type is
+--     not
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_MUTABLE_EXT',
+--     the corresponding descriptor set in @layout@ /must/ match the
+--     descriptor type
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-layout-07991# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-resources resource variable>
+--     is declared in a shader as an array and @layout@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', the corresponding
+--     descriptor binding used to create @layout@ /must/ have a
+--     @descriptorCount@ that is greater than or equal to the length of the
+--     array
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-None-10391# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-resources resource variables>
+--     is declared in a shader as an array of descriptors, then the
+--     descriptor type of that variable /must/ not be
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK'
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-flags-11798# If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shader64BitIndexing shader64BitIndexing>
+--     feature is not enabled, @flags@ /must/ not contain
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_64_BIT_INDEXING_BIT_EXT'
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-pipelineCreationCacheControl-02878#
+--     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'
+--     nor
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT'
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-pipelineProtectedAccess-07368#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineProtectedAccess pipelineProtectedAccess>
+--     feature is not enabled, @flags@ /must/ not include
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT'
+--     nor
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT'
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-flags-07369# @flags@ /must/
+--     not include both
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT'
+--     and
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT'
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-flags-11311# If
+--     'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlags2CreateInfoKHR'::@flags@
+--     includes
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT',
+--     @layout@ /must/ be 'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-flags-11312# If
+--     'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlags2CreateInfoKHR'::@flags@
+--     includes
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT',
+--     all shader variables in the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-resources shader resource interface>
+--     with a 'Vulkan.Core10.Handles.DescriptorSet' and @Binding@
+--     decoration /must/ have a mapping declared in
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.ShaderDescriptorSetAndBindingMappingInfoEXT'::@pMappings@
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-pStages-03426# The shader
+--     code for the entry points identified by @pStages@, and the rest of
+--     the state identified by this structure /must/ adhere to the pipeline
+--     linking rules described in the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces Shader Interfaces>
+--     chapter
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-layout-03428# The number of
+--     resources in @layout@ accessible to each shader stage that is used
+--     by the pipeline /must/ be less than or equal to
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxPerStageResources@
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-flags-02904# @flags@ /must/
+--     not include
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV'
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-flags-12341# @flags@ /must/
+--     not include
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT'
+--     nor
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT'
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-layout-12402# If @layout@ is
+--     not 'Vulkan.Core10.APIConstants.NULL_HANDLE', it /must/ not have
+--     been created with
+--     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT'
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-stage-03425# If @flags@ does
+--     not include
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR',
+--     the @stage@ member of at least one element of @pStages@, including
+--     those implicitly added by @pLibraryInfo@, /must/ be
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_RAYGEN_BIT_KHR'
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-maxPipelineRayRecursionDepth-03589#
+--     @maxPipelineRayRecursionDepth@ /must/ be less than or equal to
+--     'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@maxRayRecursionDepth@
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-flags-03465# If @flags@
+--     includes
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR',
+--     @pLibraryInterface@ /must/ not be @NULL@
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-pLibraryInfo-03590# If
+--     @pLibraryInfo@ is not @NULL@ and its @libraryCount@ member is
+--     greater than @0@, @pLibraryInterface@ /must/ not be @NULL@
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-pLibraries-03591# Each
+--     element of @pLibraryInfo->pLibraries@ /must/ have been created with
+--     the value of @maxPipelineRayRecursionDepth@ equal to that in this
+--     pipeline
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-pLibraryInfo-03592# If
+--     @pLibraryInfo@ is not @NULL@ and @layout@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', each element of
+--     @pLibraryInfo->pLibraries@ /must/ have been created with a @layout@
+--     that is compatible with the @layout@ in this pipeline
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-pLibraryInfo-03593# If
+--     @pLibraryInfo@ is not @NULL@, each element of its @pLibraries@
+--     member /must/ have been created with values of the
+--     @maxPipelineRayPayloadSize@ and @maxPipelineRayHitAttributeSize@
+--     members of @pLibraryInterface@ equal to those in this pipeline
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-flags-03594# If @flags@
+--     includes
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR',
+--     each element of @pLibraryInfo->pLibraries@ /must/ have been created
+--     with the
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR'
+--     bit set
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-flags-04718# If @flags@
+--     includes
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR',
+--     each element of @pLibraryInfo->pLibraries@ /must/ have been created
+--     with the
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR'
+--     bit set
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-flags-04719# If @flags@
+--     includes
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR',
+--     each element of @pLibraryInfo->pLibraries@ /must/ have been created
+--     with the
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR'
+--     bit set
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-flags-04720# If @flags@
+--     includes
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR',
+--     each element of @pLibraryInfo->pLibraries@ /must/ have been created
+--     with the
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR'
+--     bit set
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-flags-04721# If @flags@
+--     includes
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR',
+--     each element of @pLibraryInfo->pLibraries@ /must/ have been created
+--     with the
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR'
+--     bit set
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-flags-04722# If @flags@
+--     includes
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR',
+--     each element of @pLibraryInfo->pLibraries@ /must/ have been created
+--     with the
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR'
+--     bit set
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-flags-04723# If @flags@
+--     includes
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR',
+--     each element of @pLibraryInfo->pLibraries@ /must/ have been created
+--     with the
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR'
+--     bit set
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-pLibraryInfo-03595# If the
+--     @VK_KHR_pipeline_library@ extension is not enabled, @pLibraryInfo@
+--     and @pLibraryInterface@ /must/ be @NULL@
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-flags-03470# If @flags@
+--     includes
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR',
+--     for each element of @pGroups@ with a @type@ of
+--     'RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR' or
+--     'RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR', the
+--     @anyHitShader@ of that element /must/ not be
+--     'Vulkan.Core10.APIConstants.SHADER_UNUSED_KHR'
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-flags-03471# If @flags@
+--     includes
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR',
+--     for each element of @pGroups@ with a @type@ of
+--     'RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR' or
+--     'RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR', the
+--     @closestHitShader@ of that element /must/ not be
+--     'Vulkan.Core10.APIConstants.SHADER_UNUSED_KHR'
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-rayTraversalPrimitiveCulling-03596#
+--     If the
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/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-06546# @flags@ /must/
+--     not include both
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR'
+--     and
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-rayTracingPipelineShaderGroupHandleCaptureReplay rayTracingPipelineShaderGroupHandleCaptureReplay>
+--     /must/ be enabled
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-rayTracingPipelineShaderGroupHandleCaptureReplay-03599#
+--     If
+--     'PhysicalDeviceRayTracingPipelineFeaturesKHR'::@rayTracingPipelineShaderGroupHandleCaptureReplay@
+--     is 'Vulkan.Core10.FundamentalTypes.TRUE' and the
+--     @pShaderGroupCaptureReplayHandle@ member of any element of @pGroups@
+--     is not @NULL@, @flags@ /must/ include
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR'
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-pLibraryInfo-07999# If
+--     @pLibraryInfo@ is @NULL@ or its @libraryCount@ is @0@, @stageCount@
+--     /must/ not be @0@
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-flags-08700# If @flags@ does
+--     not include
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR'
+--     and either @pLibraryInfo@ is @NULL@ or its @libraryCount@ is @0@,
+--     @groupCount@ /must/ not be @0@
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-pDynamicStates-03602# Any
+--     element of the @pDynamicStates@ member of @pDynamicState@ /must/ be
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR'
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-pipelineStageCreationFeedbackCount-06652#
+--     If
+--     'Vulkan.Core13.Promoted_From_VK_EXT_pipeline_creation_feedback.PipelineCreationFeedbackCreateInfo'::@pipelineStageCreationFeedbackCount@
+--     is not @0@, it /must/ be equal to @stageCount@
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-stage-06899# The @stage@
+--     value in all @pStages@ elements /must/ be one of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_RAYGEN_BIT_KHR',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_ANY_HIT_BIT_KHR',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_CLOSEST_HIT_BIT_KHR',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MISS_BIT_KHR',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_INTERSECTION_BIT_KHR',
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_CALLABLE_BIT_KHR'
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-flags-11597# If @flags@
+--     includes
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_KHR',
+--     at least one of the following features /must/ be enabled
+--
+--     -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-micromap ::micromap>
+--
+--     -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-micromapEXT ::micromap>
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-pLibraries-11598# If @flags@
+--     includes
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_KHR',
+--     each element of @pLibraryInfo->pLibraries@ /must/ have been created
+--     with the
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_KHR'
+--     bit set
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-flags-11599# If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-micromap ::micromap>
+--     feature is not enabled or @flags@ does not include
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_KHR',
+--     @flags@ /must/ not include
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_KHR'
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-flags-08701# If @flags@
+--     includes
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV',
+--     each element of @pLibraryInfo->pLibraries@ /must/ have been created
+--     with the
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV'
+--     bit set
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-flags-10392# If the @pNext@
+--     chain includes a
+--     'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.PipelineCreateFlags2CreateInfo'
+--     structure, @flags@ /must/ not include both
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_RAY_TRACING_OPACITY_MICROMAP_BIT_KHR'
+--     and
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DISALLOW_OPACITY_MICROMAP_BIT_ARM'
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-flags-11275# If
+--     'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlags2CreateInfoKHR'::@flags@
+--     includes
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT',
+--     all libraries linked to this pipeline /must/ also have that flag set
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-flags-11276# If
+--     'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlags2CreateInfoKHR'::@flags@
+--     does not include
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT',
+--     all libraries linked to this pipeline /must/ also not have that flag
+--     set
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-flags-12361# If @flags@
+--     includes
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     all libraries linked to this pipeline /must/ also have that flag set
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-flags-12362# If @flags@ does
+--     not include
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     all libraries linked to this pipeline /must/ also not have that flag
+--     set
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-None-11369# If
+--     'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlags2CreateInfoKHR'::@flags@
+--     does not include
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT',
+--     @layout@ /must/ not be 'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-sType-sType# @sType@ /must/
+--     be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR'
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-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_pipeline_binary.PipelineBinaryInfoKHR',
+--     'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.PipelineCreateFlags2CreateInfo',
+--     'Vulkan.Core13.Promoted_From_VK_EXT_pipeline_creation_feedback.PipelineCreationFeedbackCreateInfo',
+--     'Vulkan.Core14.Promoted_From_VK_EXT_pipeline_robustness.PipelineRobustnessCreateInfo',
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkRayTracingPipelineClusterAccelerationStructureCreateInfoNV VkRayTracingPipelineClusterAccelerationStructureCreateInfoNV>
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-sType-unique# The @sType@
+--     value of each structure in the @pNext@ chain /must/ be unique
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-pStages-parameter# If
+--     @stageCount@ is not @0@, @pStages@ /must/ be a valid pointer to an
+--     array of @stageCount@ valid
+--     'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo'
+--     structures
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-pGroups-parameter# If
+--     @groupCount@ is not @0@, @pGroups@ /must/ be a valid pointer to an
+--     array of @groupCount@ valid 'RayTracingShaderGroupCreateInfoKHR'
+--     structures
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-pLibraryInfo-parameter# If
+--     @pLibraryInfo@ is not @NULL@, @pLibraryInfo@ /must/ be a valid
+--     pointer to a valid
+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'
+--     structure
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-pLibraryInterface-parameter#
+--     If @pLibraryInterface@ is not @NULL@, @pLibraryInterface@ /must/ be
+--     a valid pointer to a valid
+--     'RayTracingPipelineInterfaceCreateInfoKHR' structure
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-pDynamicState-parameter# If
+--     @pDynamicState@ is not @NULL@, @pDynamicState@ /must/ be a valid
+--     pointer to a valid
+--     'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'
+--     structure
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-layout-parameter# If
+--     @layout@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @layout@
+--     /must/ be a valid 'Vulkan.Core10.Handles.PipelineLayout' handle
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-commonparent# Both of
+--     @basePipelineHandle@, and @layout@ 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_ray_tracing_pipeline VK_KHR_ray_tracing_pipeline>,
+-- 'Vulkan.Core10.Handles.Pipeline',
+-- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlags',
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo',
+-- 'Vulkan.Core10.Handles.PipelineLayout',
+-- 'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR',
+-- 'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo',
+-- 'RayTracingPipelineInterfaceCreateInfoKHR',
+-- 'RayTracingShaderGroupCreateInfoKHR',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'createRayTracingPipelinesKHR'
+data RayTracingPipelineCreateInfoKHR (es :: [Type]) = RayTracingPipelineCreateInfoKHR
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
+    next :: Chain es
+  , -- | @flags@ is a bitmask of
+    -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits'
+    -- specifying how the pipeline will be generated.
+    flags :: PipelineCreateFlags
+  , -- | @pStages@ is a pointer to an array of @stageCount@
+    -- 'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo' structures
+    -- describing the set of the shader stages to be included in the ray
+    -- tracing pipeline.
+    stages :: Vector (SomeStruct PipelineShaderStageCreateInfo)
+  , -- | @pGroups@ is a pointer to an array of @groupCount@
+    -- 'RayTracingShaderGroupCreateInfoKHR' structures describing the set of
+    -- the shader stages to be included in each shader group in the ray tracing
+    -- pipeline.
+    groups :: Vector RayTracingShaderGroupCreateInfoKHR
+  , -- | @maxPipelineRayRecursionDepth@ is the
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#ray-tracing-recursion-depth maximum recursion depth>
+    -- of shaders executed by this pipeline.
+    maxPipelineRayRecursionDepth :: Word32
+  , -- | @pLibraryInfo@ is a pointer to a
+    -- 'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'
+    -- structure defining pipeline libraries to include.
+    libraryInfo :: Maybe PipelineLibraryCreateInfoKHR
+  , -- | @pLibraryInterface@ is a pointer to a
+    -- 'RayTracingPipelineInterfaceCreateInfoKHR' structure defining additional
+    -- information when using pipeline libraries.
+    libraryInterface :: Maybe RayTracingPipelineInterfaceCreateInfoKHR
+  , -- | @pDynamicState@ is a pointer to a
+    -- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'
+    -- structure, and is used to indicate which properties of the pipeline
+    -- state object are dynamic and /can/ be changed independently of the
+    -- pipeline state. This /can/ be @NULL@, which means no state in the
+    -- pipeline is considered dynamic.
+    dynamicState :: Maybe PipelineDynamicStateCreateInfo
+  , -- | @layout@ is the description of binding locations used by both the
+    -- pipeline and descriptor sets used with the pipeline. If
+    -- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceProperties'::@apiVersion@
+    -- is greater than or equal to Vulkan 1.3 or
+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance4 VK_KHR_maintenance4>
+    -- is enabled @layout@ /must/ not be accessed by the implementation outside
+    -- of the duration of the command this structure is passed to.
+    layout :: PipelineLayout
+  , -- | @basePipelineHandle@ is a pipeline to derive from.
+    basePipelineHandle :: Pipeline
+  , -- | @basePipelineIndex@ is an index into the @pCreateInfos@ parameter to use
+    -- as a pipeline to derive from.
+    basePipelineIndex :: Int32
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (RayTracingPipelineCreateInfoKHR (es :: [Type]))
+#endif
+deriving instance Show (Chain es) => Show (RayTracingPipelineCreateInfoKHR es)
+
+instance Extensible RayTracingPipelineCreateInfoKHR where
+  extensibleTypeName = "RayTracingPipelineCreateInfoKHR"
+  setNext RayTracingPipelineCreateInfoKHR{..} next' = RayTracingPipelineCreateInfoKHR{next = next', ..}
+  getNext RayTracingPipelineCreateInfoKHR{..} = next
+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends RayTracingPipelineCreateInfoKHR e => b) -> Maybe b
+  extends _ f
+    | Just Refl <- eqT @e @PipelineRobustnessCreateInfo = Just f
+    | Just Refl <- eqT @e @PipelineCreationFeedbackCreateInfo = Just f
+    | Just Refl <- eqT @e @PipelineBinaryInfoKHR = Just f
+    | Just Refl <- eqT @e @PipelineCreateFlags2CreateInfo = Just f
+    | otherwise = Nothing
+
+instance ( Extendss RayTracingPipelineCreateInfoKHR es
+         , PokeChain es ) => ToCStruct (RayTracingPipelineCreateInfoKHR es) where
+  withCStruct x f = allocaBytes 104 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p RayTracingPipelineCreateInfoKHR{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR)
+    pNext'' <- fmap castPtr . ContT $ withChain (next)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
+    lift $ poke ((p `plusPtr` 16 :: Ptr PipelineCreateFlags)) (flags)
+    lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (stages)) :: Word32))
+    pPStages' <- ContT $ allocaBytes @(PipelineShaderStageCreateInfo _) ((Data.Vector.length (stages)) * 48)
+    Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPStages' `plusPtr` (48 * (i)) :: Ptr (PipelineShaderStageCreateInfo _))) (e) . ($ ())) (stages)
+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr (PipelineShaderStageCreateInfo _)))) (pPStages')
+    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (groups)) :: Word32))
+    pPGroups' <- ContT $ allocaBytes @RayTracingShaderGroupCreateInfoKHR ((Data.Vector.length (groups)) * 48)
+    lift $ Data.Vector.imapM_ (\i e -> poke (pPGroups' `plusPtr` (48 * (i)) :: Ptr RayTracingShaderGroupCreateInfoKHR) (e)) (groups)
+    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr RayTracingShaderGroupCreateInfoKHR))) (pPGroups')
+    lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) (maxPipelineRayRecursionDepth)
+    pLibraryInfo'' <- case (libraryInfo) of
+      Nothing -> pure nullPtr
+      Just j -> ContT $ withCStruct (j)
+    lift $ poke ((p `plusPtr` 56 :: Ptr (Ptr PipelineLibraryCreateInfoKHR))) pLibraryInfo''
+    pLibraryInterface'' <- case (libraryInterface) of
+      Nothing -> pure nullPtr
+      Just j -> ContT $ withCStruct (j)
+    lift $ poke ((p `plusPtr` 64 :: Ptr (Ptr RayTracingPipelineInterfaceCreateInfoKHR))) pLibraryInterface''
+    pDynamicState'' <- case (dynamicState) of
+      Nothing -> pure nullPtr
+      Just j -> ContT $ withCStruct (j)
+    lift $ poke ((p `plusPtr` 72 :: Ptr (Ptr PipelineDynamicStateCreateInfo))) pDynamicState''
+    lift $ poke ((p `plusPtr` 80 :: Ptr PipelineLayout)) (layout)
+    lift $ poke ((p `plusPtr` 88 :: Ptr Pipeline)) (basePipelineHandle)
+    lift $ poke ((p `plusPtr` 96 :: Ptr Int32)) (basePipelineIndex)
+    lift $ f
+  cStructSize = 104
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR)
+    pNext' <- fmap castPtr . ContT $ withZeroChain @es
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
+    lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) (zero)
+    lift $ poke ((p `plusPtr` 96 :: Ptr Int32)) (zero)
+    lift $ f
+
+instance ( Extendss RayTracingPipelineCreateInfoKHR es
+         , PeekChain es ) => FromCStruct (RayTracingPipelineCreateInfoKHR es) where
+  peekCStruct p = do
+    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
+    next <- peekChain (castPtr pNext)
+    flags <- peek @PipelineCreateFlags ((p `plusPtr` 16 :: Ptr PipelineCreateFlags))
+    stageCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
+    pStages <- peek @(Ptr (PipelineShaderStageCreateInfo _)) ((p `plusPtr` 24 :: Ptr (Ptr (PipelineShaderStageCreateInfo _))))
+    pStages' <- generateM (fromIntegral stageCount) (\i -> peekSomeCStruct (forgetExtensions ((pStages `advancePtrBytes` (48 * (i)) :: Ptr (PipelineShaderStageCreateInfo _)))))
+    groupCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))
+    pGroups <- peek @(Ptr RayTracingShaderGroupCreateInfoKHR) ((p `plusPtr` 40 :: Ptr (Ptr RayTracingShaderGroupCreateInfoKHR)))
+    pGroups' <- generateM (fromIntegral groupCount) (\i -> peekCStruct @RayTracingShaderGroupCreateInfoKHR ((pGroups `advancePtrBytes` (48 * (i)) :: Ptr RayTracingShaderGroupCreateInfoKHR)))
+    maxPipelineRayRecursionDepth <- peek @Word32 ((p `plusPtr` 48 :: Ptr Word32))
+    pLibraryInfo <- peek @(Ptr PipelineLibraryCreateInfoKHR) ((p `plusPtr` 56 :: Ptr (Ptr PipelineLibraryCreateInfoKHR)))
+    pLibraryInfo' <- maybePeek (\j -> peekCStruct @PipelineLibraryCreateInfoKHR (j)) pLibraryInfo
+    pLibraryInterface <- peek @(Ptr RayTracingPipelineInterfaceCreateInfoKHR) ((p `plusPtr` 64 :: Ptr (Ptr RayTracingPipelineInterfaceCreateInfoKHR)))
+    pLibraryInterface' <- maybePeek (\j -> peekCStruct @RayTracingPipelineInterfaceCreateInfoKHR (j)) pLibraryInterface
+    pDynamicState <- peek @(Ptr PipelineDynamicStateCreateInfo) ((p `plusPtr` 72 :: Ptr (Ptr PipelineDynamicStateCreateInfo)))
+    pDynamicState' <- maybePeek (\j -> peekCStruct @PipelineDynamicStateCreateInfo (j)) pDynamicState
+    layout <- peek @PipelineLayout ((p `plusPtr` 80 :: Ptr PipelineLayout))
+    basePipelineHandle <- peek @Pipeline ((p `plusPtr` 88 :: Ptr Pipeline))
+    basePipelineIndex <- peek @Int32 ((p `plusPtr` 96 :: Ptr Int32))
+    pure $ RayTracingPipelineCreateInfoKHR
+             next
+             flags
+             pStages'
+             pGroups'
+             maxPipelineRayRecursionDepth
+             pLibraryInfo'
+             pLibraryInterface'
+             pDynamicState'
+             layout
+             basePipelineHandle
+             basePipelineIndex
+
+instance es ~ '[] => Zero (RayTracingPipelineCreateInfoKHR es) where
+  zero = RayTracingPipelineCreateInfoKHR
+           ()
+           zero
+           mempty
+           mempty
+           zero
+           Nothing
+           Nothing
+           Nothing
+           zero
+           zero
+           zero
+
+
+-- | VkPhysicalDeviceRayTracingPipelineFeaturesKHR - Structure describing the
+-- ray tracing features that can be supported by an implementation
+--
+-- = Members
+--
+-- This structure describes the following features:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceRayTracingPipelineFeaturesKHR' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceRayTracingPipelineFeaturesKHR', it /must/ add an instance
+-- of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkPhysicalDeviceRayTracingPipelineFeaturesKHR-rayTracingPipelineShaderGroupHandleCaptureReplayMixed-03575#
+--     If @rayTracingPipelineShaderGroupHandleCaptureReplayMixed@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE',
+--     @rayTracingPipelineShaderGroupHandleCaptureReplay@ /must/ also be
+--     'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkPhysicalDeviceRayTracingPipelineFeaturesKHR-sType-sType#
+--     @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR'
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_ray_tracing_pipeline VK_KHR_ray_tracing_pipeline>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceRayTracingPipelineFeaturesKHR = PhysicalDeviceRayTracingPipelineFeaturesKHR
+  { -- | #features-rayTracingPipeline# @rayTracingPipeline@ indicates whether the
+    -- implementation supports the ray tracing pipeline functionality. See
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#ray-tracing Ray Tracing>.
+    rayTracingPipeline :: Bool
+  , -- | #features-rayTracingPipelineShaderGroupHandleCaptureReplay#
+    -- @rayTracingPipelineShaderGroupHandleCaptureReplay@ indicates whether the
+    -- implementation supports saving and reusing shader group handles, e.g.
+    -- for trace capture and replay.
+    rayTracingPipelineShaderGroupHandleCaptureReplay :: Bool
+  , -- | #features-rayTracingPipelineShaderGroupHandleCaptureReplayMixed#
+    -- @rayTracingPipelineShaderGroupHandleCaptureReplayMixed@ indicates
+    -- whether the implementation supports reuse of shader group handles being
+    -- arbitrarily mixed with creation of non-reused shader group handles. If
+    -- this is 'Vulkan.Core10.FundamentalTypes.FALSE', all reused shader group
+    -- handles /must/ be specified before any non-reused handles /may/ be
+    -- created.
+    rayTracingPipelineShaderGroupHandleCaptureReplayMixed :: Bool
+  , -- | #features-rayTracingPipelineTraceRaysIndirect#
+    -- @rayTracingPipelineTraceRaysIndirect@ indicates whether the
+    -- implementation supports indirect ray tracing commands, e.g.
+    -- 'cmdTraceRaysIndirectKHR'.
+    rayTracingPipelineTraceRaysIndirect :: Bool
+  , -- | #features-rayTraversalPrimitiveCulling# @rayTraversalPrimitiveCulling@
+    -- indicates whether the implementation supports
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#ray-traversal-culling-primitive primitive culling during ray traversal>.
+    rayTraversalPrimitiveCulling :: Bool
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceRayTracingPipelineFeaturesKHR)
+#endif
+deriving instance Show PhysicalDeviceRayTracingPipelineFeaturesKHR
+
+instance ToCStruct PhysicalDeviceRayTracingPipelineFeaturesKHR where
+  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceRayTracingPipelineFeaturesKHR{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (rayTracingPipeline))
+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (rayTracingPipelineShaderGroupHandleCaptureReplay))
+    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (rayTracingPipelineShaderGroupHandleCaptureReplayMixed))
+    poke ((p `plusPtr` 28 :: Ptr Bool32)) (boolToBool32 (rayTracingPipelineTraceRaysIndirect))
+    poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (rayTraversalPrimitiveCulling))
+    f
+  cStructSize = 40
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_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))
+    f
+
+instance FromCStruct PhysicalDeviceRayTracingPipelineFeaturesKHR where
+  peekCStruct p = do
+    rayTracingPipeline <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    rayTracingPipelineShaderGroupHandleCaptureReplay <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
+    rayTracingPipelineShaderGroupHandleCaptureReplayMixed <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))
+    rayTracingPipelineTraceRaysIndirect <- peek @Bool32 ((p `plusPtr` 28 :: Ptr Bool32))
+    rayTraversalPrimitiveCulling <- peek @Bool32 ((p `plusPtr` 32 :: Ptr Bool32))
+    pure $ PhysicalDeviceRayTracingPipelineFeaturesKHR
+             (bool32ToBool rayTracingPipeline)
+             (bool32ToBool rayTracingPipelineShaderGroupHandleCaptureReplay)
+             (bool32ToBool rayTracingPipelineShaderGroupHandleCaptureReplayMixed)
+             (bool32ToBool rayTracingPipelineTraceRaysIndirect)
+             (bool32ToBool rayTraversalPrimitiveCulling)
+
+instance Storable PhysicalDeviceRayTracingPipelineFeaturesKHR where
+  sizeOf ~_ = 40
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceRayTracingPipelineFeaturesKHR where
+  zero = PhysicalDeviceRayTracingPipelineFeaturesKHR
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkPhysicalDeviceRayTracingPipelinePropertiesKHR - Properties of the
+-- physical device for ray tracing
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceRayTracingPipelinePropertiesKHR' 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.
+--
+-- Limits specified by this structure /must/ match those specified with the
+-- same name in
+-- 'Vulkan.Extensions.VK_NV_ray_tracing.PhysicalDeviceRayTracingPropertiesNV'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_ray_tracing_pipeline VK_KHR_ray_tracing_pipeline>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceRayTracingPipelinePropertiesKHR = PhysicalDeviceRayTracingPipelinePropertiesKHR
+  { -- | @shaderGroupHandleSize@ is the size in bytes of the shader header.
+    shaderGroupHandleSize :: Word32
+  , -- | #limits-maxRayRecursionDepth# @maxRayRecursionDepth@ is the maximum
+    -- number of levels of ray recursion allowed in a trace command.
+    maxRayRecursionDepth :: Word32
+  , -- | #limits-maxShaderGroupStride# @maxShaderGroupStride@ is the maximum
+    -- stride in bytes allowed between shader groups in the shader binding
+    -- table.
+    maxShaderGroupStride :: Word32
+  , -- | @shaderGroupBaseAlignment@ is the /required/ alignment in bytes for the
+    -- base of the shader binding table.
+    shaderGroupBaseAlignment :: Word32
+  , -- | @shaderGroupHandleCaptureReplaySize@ is the number of bytes for the
+    -- information required to do capture and replay for shader group handles.
+    shaderGroupHandleCaptureReplaySize :: Word32
+  , -- | @maxRayDispatchInvocationCount@ is the maximum number of ray generation
+    -- shader invocations which /may/ be produced by a single
+    -- 'cmdTraceRaysIndirectKHR' or 'cmdTraceRaysKHR' command.
+    maxRayDispatchInvocationCount :: Word32
+  , -- | @shaderGroupHandleAlignment@ is the /required/ alignment in bytes for
+    -- each entry in a shader binding table. The value /must/ be a power of
+    -- two.
+    shaderGroupHandleAlignment :: Word32
+  , -- | @maxRayHitAttributeSize@ is the maximum size in bytes for a ray
+    -- attribute structure
+    maxRayHitAttributeSize :: Word32
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceRayTracingPipelinePropertiesKHR)
+#endif
+deriving instance Show PhysicalDeviceRayTracingPipelinePropertiesKHR
+
+instance ToCStruct PhysicalDeviceRayTracingPipelinePropertiesKHR where
+  withCStruct x f = allocaBytes 48 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceRayTracingPipelinePropertiesKHR{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (shaderGroupHandleSize)
+    poke ((p `plusPtr` 20 :: Ptr Word32)) (maxRayRecursionDepth)
+    poke ((p `plusPtr` 24 :: Ptr Word32)) (maxShaderGroupStride)
+    poke ((p `plusPtr` 28 :: Ptr Word32)) (shaderGroupBaseAlignment)
+    poke ((p `plusPtr` 32 :: Ptr Word32)) (shaderGroupHandleCaptureReplaySize)
+    poke ((p `plusPtr` 36 :: Ptr Word32)) (maxRayDispatchInvocationCount)
+    poke ((p `plusPtr` 40 :: Ptr Word32)) (shaderGroupHandleAlignment)
+    poke ((p `plusPtr` 44 :: Ptr Word32)) (maxRayHitAttributeSize)
+    f
+  cStructSize = 48
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR)
+    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)
+    poke ((p `plusPtr` 36 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 40 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 44 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct PhysicalDeviceRayTracingPipelinePropertiesKHR where
+  peekCStruct p = do
+    shaderGroupHandleSize <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    maxRayRecursionDepth <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
+    maxShaderGroupStride <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))
+    shaderGroupBaseAlignment <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))
+    shaderGroupHandleCaptureReplaySize <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))
+    maxRayDispatchInvocationCount <- peek @Word32 ((p `plusPtr` 36 :: Ptr Word32))
+    shaderGroupHandleAlignment <- peek @Word32 ((p `plusPtr` 40 :: Ptr Word32))
+    maxRayHitAttributeSize <- peek @Word32 ((p `plusPtr` 44 :: Ptr Word32))
+    pure $ PhysicalDeviceRayTracingPipelinePropertiesKHR
+             shaderGroupHandleSize
+             maxRayRecursionDepth
+             maxShaderGroupStride
+             shaderGroupBaseAlignment
+             shaderGroupHandleCaptureReplaySize
+             maxRayDispatchInvocationCount
+             shaderGroupHandleAlignment
+             maxRayHitAttributeSize
+
+instance Storable PhysicalDeviceRayTracingPipelinePropertiesKHR where
+  sizeOf ~_ = 48
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceRayTracingPipelinePropertiesKHR where
+  zero = PhysicalDeviceRayTracingPipelinePropertiesKHR
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkStridedDeviceAddressRegionKHR - Structure specifying a region of
+-- device addresses with a stride
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkStridedDeviceAddressRegionKHR-size-04631# If @size@ is not
+--     zero, all addresses between @deviceAddress@ and @deviceAddress@ +
+--     @size@ - 1 /must/ be in the buffer device address range of the same
+--     buffer
+--
+-- -   #VUID-VkStridedDeviceAddressRegionKHR-size-04632# If @size@ is not
+--     zero, @stride@ /must/ be less than or equal to the size of the
+--     buffer from which @deviceAddress@ was queried
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkStridedDeviceAddressRegionKHR-deviceAddress-parameter# If
+--     @deviceAddress@ is not @0@, @deviceAddress@ /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' value
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_ray_tracing_pipeline VK_KHR_ray_tracing_pipeline>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkClusterAccelerationStructureCommandsInfoNV VkClusterAccelerationStructureCommandsInfoNV>,
+-- 'Vulkan.Core10.FundamentalTypes.DeviceAddress',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize', 'cmdTraceRaysIndirectKHR',
+-- 'cmdTraceRaysKHR'
+data StridedDeviceAddressRegionKHR = StridedDeviceAddressRegionKHR
+  { -- | @deviceAddress@ is the device address (as returned by the
+    -- 'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.getBufferDeviceAddress'
+    -- command) at which the region starts, or zero if the region is unused.
+    deviceAddress :: DeviceAddress
+  , -- | @stride@ is the byte stride between consecutive elements.
+    stride :: DeviceSize
+  , -- | @size@ is the size in bytes of the region starting at @deviceAddress@.
+    size :: DeviceSize
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (StridedDeviceAddressRegionKHR)
+#endif
+deriving instance Show StridedDeviceAddressRegionKHR
+
+instance ToCStruct StridedDeviceAddressRegionKHR where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p StridedDeviceAddressRegionKHR{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr DeviceAddress)) (deviceAddress)
+    poke ((p `plusPtr` 8 :: Ptr DeviceSize)) (stride)
+    poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (size)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 8 :: Ptr DeviceSize)) (zero)
+    poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (zero)
+    f
+
+instance FromCStruct StridedDeviceAddressRegionKHR where
+  peekCStruct p = do
+    deviceAddress <- peek @DeviceAddress ((p `plusPtr` 0 :: Ptr DeviceAddress))
+    stride <- peek @DeviceSize ((p `plusPtr` 8 :: Ptr DeviceSize))
+    size <- peek @DeviceSize ((p `plusPtr` 16 :: Ptr DeviceSize))
+    pure $ StridedDeviceAddressRegionKHR
+             deviceAddress stride size
+
+instance Storable StridedDeviceAddressRegionKHR where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero StridedDeviceAddressRegionKHR where
+  zero = StridedDeviceAddressRegionKHR
+           zero
+           zero
+           zero
+
+
+-- | VkTraceRaysIndirectCommandKHR - Structure specifying the parameters of
+-- an indirect ray tracing command
+--
+-- = Description
+--
+-- The members of 'TraceRaysIndirectCommandKHR' have the same meaning as
+-- the similarly named parameters of 'cmdTraceRaysKHR'.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkTraceRaysIndirectCommandKHR-width-03638# @width@ /must/ be
+--     less than or equal to
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[0]
+--     ×
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupSize@[0]
+--
+-- -   #VUID-VkTraceRaysIndirectCommandKHR-height-03639# @height@ /must/ be
+--     less than or equal to
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[1]
+--     ×
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupSize@[1]
+--
+-- -   #VUID-VkTraceRaysIndirectCommandKHR-depth-03640# @depth@ /must/ be
+--     less than or equal to
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[2]
+--     ×
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupSize@[2]
+--
+-- -   #VUID-VkTraceRaysIndirectCommandKHR-width-03641# @width@ × @height@
+--     × @depth@ /must/ be less than or equal to
+--     'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@maxRayDispatchInvocationCount@
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_ray_tracing_pipeline VK_KHR_ray_tracing_pipeline>
+data TraceRaysIndirectCommandKHR = TraceRaysIndirectCommandKHR
+  { -- | @width@ is the width of the ray trace query dimensions.
+    width :: Word32
+  , -- | @height@ is height of the ray trace query dimensions.
+    height :: Word32
+  , -- | @depth@ is depth of the ray trace query dimensions.
+    depth :: Word32
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (TraceRaysIndirectCommandKHR)
+#endif
+deriving instance Show TraceRaysIndirectCommandKHR
+
+instance ToCStruct TraceRaysIndirectCommandKHR where
+  withCStruct x f = allocaBytes 12 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p TraceRaysIndirectCommandKHR{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr Word32)) (width)
+    poke ((p `plusPtr` 4 :: Ptr Word32)) (height)
+    poke ((p `plusPtr` 8 :: Ptr Word32)) (depth)
+    f
+  cStructSize = 12
+  cStructAlignment = 4
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct TraceRaysIndirectCommandKHR where
+  peekCStruct p = do
+    width <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))
+    height <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))
+    depth <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))
+    pure $ TraceRaysIndirectCommandKHR
+             width height depth
+
+instance Storable TraceRaysIndirectCommandKHR where
+  sizeOf ~_ = 12
+  alignment ~_ = 4
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero TraceRaysIndirectCommandKHR where
+  zero = TraceRaysIndirectCommandKHR
+           zero
+           zero
+           zero
+
+
+-- | VkRayTracingPipelineInterfaceCreateInfoKHR - Structure specifying
+-- additional interface information when using libraries
+--
+-- = Description
+--
+-- @maxPipelineRayPayloadSize@ is calculated as the maximum size of the
+-- block (in bytes) declared in the @RayPayloadKHR@ or
+-- @IncomingRayPayloadKHR@ storage classes.
+-- @maxPipelineRayHitAttributeSize@ is calculated as the maximum size of
+-- any block (in bytes) declared in the @HitAttributeKHR@ or
+-- @HitObjectAttributeEXT@ 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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-alignment-requirements scalar alignment>
+-- equal to the largest scalar alignment of any of the block’s members.
+--
+-- There is no explicit upper limit for @maxPipelineRayPayloadSize@, but in
+-- practice it should be kept as small as possible. Similar to invocation
+-- local memory, it must be allocated for each shader invocation and for
+-- devices which support many simultaneous invocations, this storage can
+-- rapidly be exhausted, resulting in failure.
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_ray_tracing_pipeline VK_KHR_ray_tracing_pipeline>,
+-- 'RayTracingPipelineCreateInfoKHR',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data RayTracingPipelineInterfaceCreateInfoKHR = RayTracingPipelineInterfaceCreateInfoKHR
+  { -- | @maxPipelineRayPayloadSize@ is the maximum payload size in bytes used by
+    -- any shader in the pipeline.
+    maxPipelineRayPayloadSize :: Word32
+  , -- | @maxPipelineRayHitAttributeSize@ is the maximum attribute structure size
+    -- in bytes used by any shader in the pipeline.
+    --
+    -- #VUID-VkRayTracingPipelineInterfaceCreateInfoKHR-maxPipelineRayHitAttributeSize-03605#
+    -- @maxPipelineRayHitAttributeSize@ /must/ be less than or equal to
+    -- 'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@maxRayHitAttributeSize@
+    maxPipelineRayHitAttributeSize :: Word32
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (RayTracingPipelineInterfaceCreateInfoKHR)
+#endif
+deriving instance Show RayTracingPipelineInterfaceCreateInfoKHR
+
+instance ToCStruct RayTracingPipelineInterfaceCreateInfoKHR where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p RayTracingPipelineInterfaceCreateInfoKHR{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (maxPipelineRayPayloadSize)
+    poke ((p `plusPtr` 20 :: Ptr Word32)) (maxPipelineRayHitAttributeSize)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct RayTracingPipelineInterfaceCreateInfoKHR where
+  peekCStruct p = do
+    maxPipelineRayPayloadSize <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    maxPipelineRayHitAttributeSize <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
+    pure $ RayTracingPipelineInterfaceCreateInfoKHR
+             maxPipelineRayPayloadSize maxPipelineRayHitAttributeSize
+
+instance Storable RayTracingPipelineInterfaceCreateInfoKHR where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero RayTracingPipelineInterfaceCreateInfoKHR where
+  zero = RayTracingPipelineInterfaceCreateInfoKHR
+           zero
+           zero
+
+
+-- | VkRayTracingShaderGroupTypeKHR - Shader group types
+--
+-- = Description
+--
+-- -   'RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR' specifies that a shader
+--     group with a single
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_RAYGEN_BIT_KHR',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MISS_BIT_KHR',
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_CALLABLE_BIT_KHR'
+--     shader in it.
+--
+-- -   'RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR' specifies
+--     that a shader group that only hits triangles and /must/ not contain
+--     an intersection shader, only closest hit and any-hit shaders.
+--
+-- -   'RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR' specifies
+--     that a shader group that only intersects with custom geometry and
+--     /must/ contain an intersection shader and /may/ contain closest hit
+--     and any-hit shaders.
+--
+-- For current group types, the hit group type could be inferred from the
+-- presence or absence of the intersection shader, but we provide the type
+-- explicitly for future hit groups that do not have that property.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_ray_tracing_pipeline VK_KHR_ray_tracing_pipeline>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>,
+-- 'RayTracingShaderGroupCreateInfoKHR',
+-- 'Vulkan.Extensions.VK_NV_ray_tracing.RayTracingShaderGroupCreateInfoNV'
+newtype RayTracingShaderGroupTypeKHR = RayTracingShaderGroupTypeKHR Int32
+  deriving newtype (Eq, Ord, Storable, Zero)
+
+-- No documentation found for Nested "VkRayTracingShaderGroupTypeKHR" "VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR"
+pattern RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR = RayTracingShaderGroupTypeKHR 0
+
+-- No documentation found for Nested "VkRayTracingShaderGroupTypeKHR" "VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR"
+pattern RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR = RayTracingShaderGroupTypeKHR 1
+
+-- No documentation found for Nested "VkRayTracingShaderGroupTypeKHR" "VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR"
+pattern RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR = RayTracingShaderGroupTypeKHR 2
+
+{-# COMPLETE
+  RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR
+  , RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR
+  , RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR ::
+    RayTracingShaderGroupTypeKHR
+  #-}
+
+conNameRayTracingShaderGroupTypeKHR :: String
+conNameRayTracingShaderGroupTypeKHR = "RayTracingShaderGroupTypeKHR"
+
+enumPrefixRayTracingShaderGroupTypeKHR :: String
+enumPrefixRayTracingShaderGroupTypeKHR = "RAY_TRACING_SHADER_GROUP_TYPE_"
+
+showTableRayTracingShaderGroupTypeKHR :: [(RayTracingShaderGroupTypeKHR, String)]
+showTableRayTracingShaderGroupTypeKHR =
+  [
+    ( RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR
+    , "GENERAL_KHR"
+    )
+  ,
+    ( RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR
+    , "TRIANGLES_HIT_GROUP_KHR"
+    )
+  ,
+    ( RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR
+    , "PROCEDURAL_HIT_GROUP_KHR"
+    )
+  ]
+
+instance Show RayTracingShaderGroupTypeKHR where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixRayTracingShaderGroupTypeKHR
+      showTableRayTracingShaderGroupTypeKHR
+      conNameRayTracingShaderGroupTypeKHR
+      (\(RayTracingShaderGroupTypeKHR x) -> x)
+      (showsPrec 11)
+
+instance Read RayTracingShaderGroupTypeKHR where
+  readPrec =
+    enumReadPrec
+      enumPrefixRayTracingShaderGroupTypeKHR
+      showTableRayTracingShaderGroupTypeKHR
+      conNameRayTracingShaderGroupTypeKHR
+      RayTracingShaderGroupTypeKHR
+
+-- | VkShaderGroupShaderKHR - Shader group shaders
+--
+-- = Description
+--
+-- -   'SHADER_GROUP_SHADER_GENERAL_KHR' uses the shader specified in the
+--     group with 'RayTracingShaderGroupCreateInfoKHR'::@generalShader@
+--
+-- -   'SHADER_GROUP_SHADER_CLOSEST_HIT_KHR' uses the shader specified in
+--     the group with
+--     'RayTracingShaderGroupCreateInfoKHR'::@closestHitShader@
+--
+-- -   'SHADER_GROUP_SHADER_ANY_HIT_KHR' uses the shader specified in the
+--     group with 'RayTracingShaderGroupCreateInfoKHR'::@anyHitShader@
+--
+-- -   'SHADER_GROUP_SHADER_INTERSECTION_KHR' uses the shader specified in
+--     the group with
+--     'RayTracingShaderGroupCreateInfoKHR'::@intersectionShader@
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_ray_tracing_pipeline VK_KHR_ray_tracing_pipeline>,
+-- 'getRayTracingShaderGroupStackSizeKHR'
+newtype ShaderGroupShaderKHR = ShaderGroupShaderKHR Int32
+  deriving newtype (Eq, Ord, Storable, Zero)
+
+-- No documentation found for Nested "VkShaderGroupShaderKHR" "VK_SHADER_GROUP_SHADER_GENERAL_KHR"
+pattern SHADER_GROUP_SHADER_GENERAL_KHR = ShaderGroupShaderKHR 0
+
+-- No documentation found for Nested "VkShaderGroupShaderKHR" "VK_SHADER_GROUP_SHADER_CLOSEST_HIT_KHR"
+pattern SHADER_GROUP_SHADER_CLOSEST_HIT_KHR = ShaderGroupShaderKHR 1
+
+-- No documentation found for Nested "VkShaderGroupShaderKHR" "VK_SHADER_GROUP_SHADER_ANY_HIT_KHR"
+pattern SHADER_GROUP_SHADER_ANY_HIT_KHR = ShaderGroupShaderKHR 2
+
+-- No documentation found for Nested "VkShaderGroupShaderKHR" "VK_SHADER_GROUP_SHADER_INTERSECTION_KHR"
 pattern SHADER_GROUP_SHADER_INTERSECTION_KHR = ShaderGroupShaderKHR 3
 
 {-# COMPLETE
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
@@ -21,7 +21,11 @@
 --     Ratified
 --
 -- [__Extension and Version Dependencies__]
+--         
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_spirv_1_4 VK_KHR_spirv_1_4>
+--          or
+--         
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.2 Vulkan Version 1.2>
 --     and
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>
 --
@@ -49,13 +53,13 @@
 --         <https://github.com/KhronosGroup/GLSL/blob/main/extensions/ext/GLSL_EXT_ray_tracing.txt GLSL_EXT_ray_tracing>
 --
 --     -   This extension interacts with
---         <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#versions-1.2 Vulkan 1.2>
+--         <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#versions-1.2 Vulkan 1.2>
 --         and @VK_KHR_vulkan_memory_model@, adding the
---         <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shader-call-related shader-call-related>
+--         <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shader-call-related shader-call-related>
 --         relation of invocations,
---         <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shader-call-order shader-call-order>
+--         <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shader-call-order shader-call-order>
 --         partial order of dynamic instances of instructions, and the
---         <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-scope-shadercall ShaderCallKHR>
+--         <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-scope-shadercall ShaderCallKHR>
 --         scope.
 --
 --     -   This extension interacts with @VK_KHR_pipeline_library@,
@@ -259,6 +263,11 @@
 --     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR'
 --
 -- -   Extending
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PipelineCreateFlagBits2':
+--
+--     -   'PIPELINE_CREATE_2_RAY_TRACING_SKIP_BUILT_IN_PRIMITIVES_BIT_KHR'
+--
+-- -   Extending
 --     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits':
 --
 --     -   'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR'
@@ -292,43 +301,43 @@
 --
 -- == New or Modified Built-In Variables
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-launchid LaunchIdKHR>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-launchid LaunchIdKHR>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-launchsize LaunchSizeKHR>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-launchsize LaunchSizeKHR>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-worldrayorigin WorldRayOriginKHR>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-worldrayorigin WorldRayOriginKHR>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-worldraydirection WorldRayDirectionKHR>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-worldraydirection WorldRayDirectionKHR>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-objectrayorigin ObjectRayOriginKHR>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-objectrayorigin ObjectRayOriginKHR>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-objectraydirection ObjectRayDirectionKHR>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-objectraydirection ObjectRayDirectionKHR>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-raytmin RayTminKHR>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-raytmin RayTminKHR>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-raytmax RayTmaxKHR>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-raytmax RayTmaxKHR>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-instancecustomindex InstanceCustomIndexKHR>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-instancecustomindex InstanceCustomIndexKHR>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-instanceid InstanceId>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-instanceid InstanceId>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-objecttoworld ObjectToWorldKHR>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-objecttoworld ObjectToWorldKHR>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-worldtoobject WorldToObjectKHR>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-worldtoobject WorldToObjectKHR>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-hitkind HitKindKHR>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-hitkind HitKindKHR>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-incomingrayflags IncomingRayFlagsKHR>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-incomingrayflags IncomingRayFlagsKHR>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-raygeometryindex RayGeometryIndexKHR>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-raygeometryindex RayGeometryIndexKHR>
 --
 -- -   (modified)@PrimitiveId@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-RayTracingKHR RayTracingKHR>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-RayTracingKHR RayTracingKHR>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-RayTraversalPrimitiveCullingKHR RayTraversalPrimitiveCullingKHR>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-RayTraversalPrimitiveCullingKHR RayTraversalPrimitiveCullingKHR>
 --
 -- == Issues
 --
@@ -350,7 +359,7 @@
 --
 -- -   removed vkCompileDeferredNV compilation functionality and replaced
 --     with
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#deferred-host-operations deferred host operations>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#deferred-host-operations deferred host operations>
 --     interactions for ray tracing
 --
 -- -   added 'PhysicalDeviceRayTracingPipelineFeaturesKHR' structure
@@ -375,17 +384,17 @@
 --     device build
 --
 -- -   added
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-library pipeline library>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-library pipeline library>
 --     support for ray tracing
 --
 -- -   added
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#ray-traversal-watertight watertightness guarantees>
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#ray-tracing-shader-call memory model interactions>
+--     <https://registry.khronos.org/vulkan/specs/latest/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 comparison of differences and
@@ -416,7 +425,7 @@
 --         added @libraries@, @pLibraryInterface@, and @pDynamicState@)
 --
 --     -   'Vulkan.Extensions.VK_NV_ray_tracing.PhysicalDeviceRayTracingPropertiesNV'
---         → VkPhysicalDeviceRayTracingPropertiesKHR (renamed
+--         → 'PhysicalDeviceRayTracingPipelinePropertiesKHR' (renamed
 --         @maxTriangleCount@ to @maxPrimitiveCount@, added
 --         @shaderGroupHandleCaptureReplaySize@)
 --
@@ -427,7 +436,7 @@
 --         → 'createRayTracingPipelinesKHR' (different struct, changed
 --         functionality)
 --
--- -   Added enums, structures and commands:
+-- -   Added enums, structures, and commands:
 --
 --     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR'
 --         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR',
@@ -609,15 +618,16 @@
 --     makes it more obvious that this is zero-based.
 --
 -- (6) Why is @VK_KHR_pipeline_library@ an interaction instead of a
--- required dependency, particularly when the “Feature Requirements”
--- section says it is required to be supported anyhow?
+-- required dependency, particularly when the “Device Extensions” section
+-- says it is required to be supported anyhow?
 --
--- __RESOLVED__: If the @VK_KHR_pipeline_library@ extensino were a required
+-- __RESOLVED__: If the @VK_KHR_pipeline_library@ extension were a required
 -- dependency, then every application would need to enable the extension
 -- whether or not they actually want to use the pipeline library
 -- functionality. Developers found this to be annoying and unfriendly
 -- behavior. We do wish to require all __implementations__ to support it
--- though, and thus it is listed in the feature requirements section.
+-- though, and thus it is listed as a requirement in device extensions
+-- section.
 --
 -- == Sample Code
 --
@@ -710,7 +720,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_ray_tracing_pipeline Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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_ray_tracing_position_fetch.hs b/src/Vulkan/Extensions/VK_KHR_ray_tracing_position_fetch.hs
--- a/src/Vulkan/Extensions/VK_KHR_ray_tracing_position_fetch.hs
+++ b/src/Vulkan/Extensions/VK_KHR_ray_tracing_position_fetch.hs
@@ -79,7 +79,7 @@
 -- acceleration structure.
 --
 -- An application adds
--- 'Vulkan.Extensions.VK_KHR_acceleration_structure.BUILD_ACCELERATION_STRUCTURE_ALLOW_DATA_ACCESS_KHR'
+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.BUILD_ACCELERATION_STRUCTURE_ALLOW_DATA_ACCESS_BIT_KHR'
 -- to the acceleration structure at build time. Then, if the hit is a
 -- triangle geometry, the shader (any-hit or closest hit for ray pipelines
 -- or using ray query) /can/ fetch the three, three-component vertex
@@ -102,21 +102,23 @@
 -- -   Extending
 --     'Vulkan.Extensions.VK_KHR_acceleration_structure.BuildAccelerationStructureFlagBitsKHR':
 --
---     -   'Vulkan.Extensions.VK_KHR_acceleration_structure.BUILD_ACCELERATION_STRUCTURE_ALLOW_DATA_ACCESS_KHR'
+--     -   'Vulkan.Extensions.VK_KHR_acceleration_structure.BUILD_ACCELERATION_STRUCTURE_ALLOW_DATA_ACCESS_BIT_KHR'
 --
+--     -   'BUILD_ACCELERATION_STRUCTURE_ALLOW_DATA_ACCESS_KHR'
+--
 -- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
 --
 --     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_POSITION_FETCH_FEATURES_KHR'
 --
 -- == New Built-In Variables
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-hittrianglevertexpositions HitTriangleVertexPositionsKHR>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-hittrianglevertexpositions HitTriangleVertexPositionsKHR>
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-RayTracingPositionFetchKHR RayTracingPositionFetchKHR>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-RayTracingPositionFetchKHR RayTracingPositionFetchKHR>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-RayQueryPositionFetchKHR RayQueryPositionFetchKHR>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-RayQueryPositionFetchKHR RayQueryPositionFetchKHR>
 --
 -- == Issues
 --
@@ -135,11 +137,12 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_ray_tracing_position_fetch Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_ray_tracing_position_fetch 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_ray_tracing_position_fetch  ( PhysicalDeviceRayTracingPositionFetchFeaturesKHR(..)
+module Vulkan.Extensions.VK_KHR_ray_tracing_position_fetch  ( pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_DATA_ACCESS_KHR
+                                                            , PhysicalDeviceRayTracingPositionFetchFeaturesKHR(..)
                                                             , KHR_RAY_TRACING_POSITION_FETCH_SPEC_VERSION
                                                             , pattern KHR_RAY_TRACING_POSITION_FETCH_SPEC_VERSION
                                                             , KHR_RAY_TRACING_POSITION_FETCH_EXTENSION_NAME
@@ -169,9 +172,15 @@
 import Vulkan.Core10.FundamentalTypes (boolToBool32)
 import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Extensions.VK_KHR_acceleration_structure (BuildAccelerationStructureFlagsKHR)
+import Vulkan.Extensions.VK_KHR_acceleration_structure (BuildAccelerationStructureFlagBitsKHR(BUILD_ACCELERATION_STRUCTURE_ALLOW_DATA_ACCESS_BIT_KHR))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_POSITION_FETCH_FEATURES_KHR))
 import Vulkan.Extensions.VK_KHR_acceleration_structure (BuildAccelerationStructureFlagBitsKHR(..))
 import Vulkan.Extensions.VK_KHR_acceleration_structure (BuildAccelerationStructureFlagsKHR)
+-- No documentation found for TopLevel "VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DATA_ACCESS_KHR"
+pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_DATA_ACCESS_KHR = BUILD_ACCELERATION_STRUCTURE_ALLOW_DATA_ACCESS_BIT_KHR
+
+
 -- | VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR - Structure
 -- describing support for fetching vertex positions of hit triangles
 --
@@ -187,11 +196,21 @@
 -- 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. 'PhysicalDeviceRayTracingPositionFetchFeaturesKHR' /can/ also
--- be used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo'
--- to selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceRayTracingPositionFetchFeaturesKHR', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Extensions/VK_KHR_ray_tracing_position_fetch.hs-boot b/src/Vulkan/Extensions/VK_KHR_ray_tracing_position_fetch.hs-boot
--- a/src/Vulkan/Extensions/VK_KHR_ray_tracing_position_fetch.hs-boot
+++ b/src/Vulkan/Extensions/VK_KHR_ray_tracing_position_fetch.hs-boot
@@ -79,7 +79,7 @@
 -- acceleration structure.
 --
 -- An application adds
--- 'Vulkan.Extensions.VK_KHR_acceleration_structure.BUILD_ACCELERATION_STRUCTURE_ALLOW_DATA_ACCESS_KHR'
+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.BUILD_ACCELERATION_STRUCTURE_ALLOW_DATA_ACCESS_BIT_KHR'
 -- to the acceleration structure at build time. Then, if the hit is a
 -- triangle geometry, the shader (any-hit or closest hit for ray pipelines
 -- or using ray query) /can/ fetch the three, three-component vertex
@@ -102,21 +102,23 @@
 -- -   Extending
 --     'Vulkan.Extensions.VK_KHR_acceleration_structure.BuildAccelerationStructureFlagBitsKHR':
 --
---     -   'Vulkan.Extensions.VK_KHR_acceleration_structure.BUILD_ACCELERATION_STRUCTURE_ALLOW_DATA_ACCESS_KHR'
+--     -   'Vulkan.Extensions.VK_KHR_acceleration_structure.BUILD_ACCELERATION_STRUCTURE_ALLOW_DATA_ACCESS_BIT_KHR'
 --
+--     -   'BUILD_ACCELERATION_STRUCTURE_ALLOW_DATA_ACCESS_KHR'
+--
 -- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
 --
 --     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_POSITION_FETCH_FEATURES_KHR'
 --
 -- == New Built-In Variables
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-hittrianglevertexpositions HitTriangleVertexPositionsKHR>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-hittrianglevertexpositions HitTriangleVertexPositionsKHR>
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-RayTracingPositionFetchKHR RayTracingPositionFetchKHR>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-RayTracingPositionFetchKHR RayTracingPositionFetchKHR>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-RayQueryPositionFetchKHR RayQueryPositionFetchKHR>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-RayQueryPositionFetchKHR RayQueryPositionFetchKHR>
 --
 -- == Issues
 --
@@ -135,7 +137,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_ray_tracing_position_fetch Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_ray_tracing_position_fetch Vulkan Specification>.
 --
 -- This 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
@@ -52,7 +52,7 @@
 -- For example, placing a vector of three floats at an offset of 16×N + 4.
 --
 -- See
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-resources-layout Offset and Stride Assignment>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-resources-layout Offset and Stride Assignment>
 -- for details.
 --
 -- == Promotion to Vulkan 1.1
@@ -78,7 +78,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_relaxed_block_layout Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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_robustness2.hs b/src/Vulkan/Extensions/VK_KHR_robustness2.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_KHR_robustness2.hs
@@ -0,0 +1,369 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_KHR_robustness2 - device extension
+--
+-- = VK_KHR_robustness2
+--
+-- [__Name String__]
+--     @VK_KHR_robustness2@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     613
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
+--
+-- [__Contact__]
+--
+--     -   Piers Daniell
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_robustness2] @pdaniell-nv%0A*Here describe the issue or question you have about the VK_KHR_robustness2 extension* >
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2025-01-10
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Contributors__]
+--
+--     -   Liam Middlebrook, NVIDIA
+--
+--     -   Jeff Bolz, NVIDIA
+--
+-- == Description
+--
+-- This extension is based on the @VK_EXT_robustness2@ extension. This
+-- extension adds stricter requirements for how out of bounds reads and
+-- writes are handled. Most accesses /must/ be tightly bounds-checked, out
+-- of bounds writes /must/ be discarded, out of bound reads /must/ 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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#images-component-substitution>
+-- and
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
+--
+-- This extension also adds support for “null descriptors”, where
+-- 'Vulkan.Core10.APIConstants.NULL_HANDLE' /can/ be used instead of a
+-- valid handle. Accesses to null descriptors have well-defined behavior,
+-- and do not rely on robustness.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceRobustness2FeaturesKHR'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDeviceRobustness2PropertiesKHR'
+--
+-- == New Enum Constants
+--
+-- -   'KHR_ROBUSTNESS_2_EXTENSION_NAME'
+--
+-- -   'KHR_ROBUSTNESS_2_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_KHR'
+--
+-- == Issues
+--
+-- 1.  Why do
+--     'PhysicalDeviceRobustness2PropertiesKHR'::@robustUniformBufferAccessSizeAlignment@
+--     and
+--     'PhysicalDeviceRobustness2PropertiesKHR'::@robustStorageBufferAccessSizeAlignment@
+--     exist?
+--
+-- __RESOLVED__: Some implementations cannot efficiently tightly
+-- bounds-check all buffer accesses. Rather, the size of the bound range is
+-- padded to some power of two multiple, up to 256 bytes for uniform
+-- buffers and up to 4 bytes for storage buffers, and that padded size is
+-- bounds-checked. This is sufficient to implement D3D-like behavior,
+-- because D3D only allows binding whole uniform buffers or ranges that are
+-- a multiple of 256 bytes, and D3D raw and structured buffers only support
+-- 32-bit accesses.
+--
+-- == Version History
+--
+-- -   Revision 1, 2025-01-10 (Piers Daniell)
+--
+--     -   Internal revisions
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_robustness2 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_robustness2  ( PhysicalDeviceRobustness2FeaturesKHR(..)
+                                             , PhysicalDeviceRobustness2PropertiesKHR(..)
+                                             , KHR_ROBUSTNESS_2_SPEC_VERSION
+                                             , pattern KHR_ROBUSTNESS_2_SPEC_VERSION
+                                             , KHR_ROBUSTNESS_2_EXTENSION_NAME
+                                             , pattern KHR_ROBUSTNESS_2_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.FundamentalTypes (DeviceSize)
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_KHR))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_KHR))
+-- | VkPhysicalDeviceRobustness2FeaturesKHR - Structure describing the
+-- out-of-bounds behavior for an implementation
+--
+-- = Members
+--
+-- This structure describes the following features:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceRobustness2FeaturesKHR' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceRobustness2FeaturesKHR', it /must/ add an instance of the
+-- structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkPhysicalDeviceRobustness2FeaturesKHR-robustBufferAccess2-04000#
+--     If @robustBufferAccess2@ is enabled then
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     /must/ also be enabled
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkPhysicalDeviceRobustness2FeaturesKHR-sType-sType# @sType@
+--     /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_KHR'
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_robustness2 VK_EXT_robustness2>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_robustness2 VK_KHR_robustness2>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceRobustness2FeaturesKHR = PhysicalDeviceRobustness2FeaturesKHR
+  { -- | #features-robustBufferAccess2# @robustBufferAccess2@ enables
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-robust-buffer-access2>
+    -- guarantees for shader buffer accesses.
+    robustBufferAccess2 :: Bool
+  , -- | #features-robustImageAccess2# @robustImageAccess2@ enables
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-robust-image-access2>
+    -- guarantees for shader image accesses.
+    robustImageAccess2 :: Bool
+  , -- | #features-nullDescriptor# @nullDescriptor@ indicates whether descriptors
+    -- /can/ be written with a 'Vulkan.Core10.APIConstants.NULL_HANDLE'
+    -- resource or view, which are considered valid to access and act as if the
+    -- descriptor were bound to nothing.
+    nullDescriptor :: Bool
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceRobustness2FeaturesKHR)
+#endif
+deriving instance Show PhysicalDeviceRobustness2FeaturesKHR
+
+instance ToCStruct PhysicalDeviceRobustness2FeaturesKHR where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceRobustness2FeaturesKHR{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (robustBufferAccess2))
+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (robustImageAccess2))
+    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (nullDescriptor))
+    f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_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))
+    f
+
+instance FromCStruct PhysicalDeviceRobustness2FeaturesKHR where
+  peekCStruct p = do
+    robustBufferAccess2 <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    robustImageAccess2 <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
+    nullDescriptor <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))
+    pure $ PhysicalDeviceRobustness2FeaturesKHR
+             (bool32ToBool robustBufferAccess2)
+             (bool32ToBool robustImageAccess2)
+             (bool32ToBool nullDescriptor)
+
+instance Storable PhysicalDeviceRobustness2FeaturesKHR where
+  sizeOf ~_ = 32
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceRobustness2FeaturesKHR where
+  zero = PhysicalDeviceRobustness2FeaturesKHR
+           zero
+           zero
+           zero
+
+
+-- | VkPhysicalDeviceRobustness2PropertiesKHR - Structure describing robust
+-- buffer access properties supported by an implementation
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceRobustness2PropertiesKHR' 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.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_robustness2 VK_EXT_robustness2>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_robustness2 VK_KHR_robustness2>,
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceRobustness2PropertiesKHR = PhysicalDeviceRobustness2PropertiesKHR
+  { -- | #limits-robustStorageBufferAccessSizeAlignment#
+    -- @robustStorageBufferAccessSizeAlignment@ is the number of bytes that the
+    -- range of a storage buffer descriptor is rounded up to when used for
+    -- bounds-checking when the
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+    -- feature 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 the
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+    -- feature is enabled. This value /must/ be a power of two in the range [1,
+    -- 256].
+    robustUniformBufferAccessSizeAlignment :: DeviceSize
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceRobustness2PropertiesKHR)
+#endif
+deriving instance Show PhysicalDeviceRobustness2PropertiesKHR
+
+instance ToCStruct PhysicalDeviceRobustness2PropertiesKHR where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceRobustness2PropertiesKHR{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (robustStorageBufferAccessSizeAlignment)
+    poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (robustUniformBufferAccessSizeAlignment)
+    f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (zero)
+    poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (zero)
+    f
+
+instance FromCStruct PhysicalDeviceRobustness2PropertiesKHR where
+  peekCStruct p = do
+    robustStorageBufferAccessSizeAlignment <- peek @DeviceSize ((p `plusPtr` 16 :: Ptr DeviceSize))
+    robustUniformBufferAccessSizeAlignment <- peek @DeviceSize ((p `plusPtr` 24 :: Ptr DeviceSize))
+    pure $ PhysicalDeviceRobustness2PropertiesKHR
+             robustStorageBufferAccessSizeAlignment
+             robustUniformBufferAccessSizeAlignment
+
+instance Storable PhysicalDeviceRobustness2PropertiesKHR where
+  sizeOf ~_ = 32
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceRobustness2PropertiesKHR where
+  zero = PhysicalDeviceRobustness2PropertiesKHR
+           zero
+           zero
+
+
+type KHR_ROBUSTNESS_2_SPEC_VERSION = 1
+
+-- No documentation found for TopLevel "VK_KHR_ROBUSTNESS_2_SPEC_VERSION"
+pattern KHR_ROBUSTNESS_2_SPEC_VERSION :: forall a . Integral a => a
+pattern KHR_ROBUSTNESS_2_SPEC_VERSION = 1
+
+
+type KHR_ROBUSTNESS_2_EXTENSION_NAME = "VK_KHR_robustness2"
+
+-- No documentation found for TopLevel "VK_KHR_ROBUSTNESS_2_EXTENSION_NAME"
+pattern KHR_ROBUSTNESS_2_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern KHR_ROBUSTNESS_2_EXTENSION_NAME = "VK_KHR_robustness2"
+
diff --git a/src/Vulkan/Extensions/VK_KHR_robustness2.hs-boot b/src/Vulkan/Extensions/VK_KHR_robustness2.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_KHR_robustness2.hs-boot
@@ -0,0 +1,149 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_KHR_robustness2 - device extension
+--
+-- = VK_KHR_robustness2
+--
+-- [__Name String__]
+--     @VK_KHR_robustness2@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     613
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
+--
+-- [__Contact__]
+--
+--     -   Piers Daniell
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_robustness2] @pdaniell-nv%0A*Here describe the issue or question you have about the VK_KHR_robustness2 extension* >
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2025-01-10
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Contributors__]
+--
+--     -   Liam Middlebrook, NVIDIA
+--
+--     -   Jeff Bolz, NVIDIA
+--
+-- == Description
+--
+-- This extension is based on the @VK_EXT_robustness2@ extension. This
+-- extension adds stricter requirements for how out of bounds reads and
+-- writes are handled. Most accesses /must/ be tightly bounds-checked, out
+-- of bounds writes /must/ be discarded, out of bound reads /must/ 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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#images-component-substitution>
+-- and
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
+--
+-- This extension also adds support for “null descriptors”, where
+-- 'Vulkan.Core10.APIConstants.NULL_HANDLE' /can/ be used instead of a
+-- valid handle. Accesses to null descriptors have well-defined behavior,
+-- and do not rely on robustness.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceRobustness2FeaturesKHR'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDeviceRobustness2PropertiesKHR'
+--
+-- == New Enum Constants
+--
+-- -   'KHR_ROBUSTNESS_2_EXTENSION_NAME'
+--
+-- -   'KHR_ROBUSTNESS_2_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_KHR'
+--
+-- == Issues
+--
+-- 1.  Why do
+--     'PhysicalDeviceRobustness2PropertiesKHR'::@robustUniformBufferAccessSizeAlignment@
+--     and
+--     'PhysicalDeviceRobustness2PropertiesKHR'::@robustStorageBufferAccessSizeAlignment@
+--     exist?
+--
+-- __RESOLVED__: Some implementations cannot efficiently tightly
+-- bounds-check all buffer accesses. Rather, the size of the bound range is
+-- padded to some power of two multiple, up to 256 bytes for uniform
+-- buffers and up to 4 bytes for storage buffers, and that padded size is
+-- bounds-checked. This is sufficient to implement D3D-like behavior,
+-- because D3D only allows binding whole uniform buffers or ranges that are
+-- a multiple of 256 bytes, and D3D raw and structured buffers only support
+-- 32-bit accesses.
+--
+-- == Version History
+--
+-- -   Revision 1, 2025-01-10 (Piers Daniell)
+--
+--     -   Internal revisions
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_robustness2 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_robustness2  ( PhysicalDeviceRobustness2FeaturesKHR
+                                             , PhysicalDeviceRobustness2PropertiesKHR
+                                             ) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data PhysicalDeviceRobustness2FeaturesKHR
+
+instance ToCStruct PhysicalDeviceRobustness2FeaturesKHR
+instance Show PhysicalDeviceRobustness2FeaturesKHR
+
+instance FromCStruct PhysicalDeviceRobustness2FeaturesKHR
+
+
+data PhysicalDeviceRobustness2PropertiesKHR
+
+instance ToCStruct PhysicalDeviceRobustness2PropertiesKHR
+instance Show PhysicalDeviceRobustness2PropertiesKHR
+
+instance FromCStruct PhysicalDeviceRobustness2PropertiesKHR
+
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
@@ -142,7 +142,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_sampler_mirror_clamp_to_edge Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -112,6 +112,11 @@
 -- The original type, enum, and command names are still available as
 -- aliases of the core functionality.
 --
+-- == Promotion to Vulkan 1.4
+--
+-- If Vulkan 1.4 is supported, support for the @samplerYcbcrConversion@
+-- capability is required.
+--
 -- == New Object Types
 --
 -- -   'SamplerYcbcrConversionKHR'
@@ -388,7 +393,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_sampler_ycbcr_conversion Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -129,7 +129,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_separate_depth_stencil_layouts Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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_abort.hs b/src/Vulkan/Extensions/VK_KHR_shader_abort.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_KHR_shader_abort.hs
@@ -0,0 +1,399 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_KHR_shader_abort - device extension
+--
+-- = VK_KHR_shader_abort
+--
+-- [__Name String__]
+--     @VK_KHR_shader_abort@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     234
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_device_fault VK_KHR_device_fault>
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_shader_constant_data VK_KHR_shader_constant_data>
+--
+-- [__SPIR-V Dependencies__]
+--
+--     -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/KHR/SPV_KHR_abort.html SPV_KHR_abort>
+--
+-- [__Contact__]
+--
+--     -   Tobias Hector
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_shader_abort] @tobski%0A*Here describe the issue or question you have about the VK_KHR_shader_abort extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_KHR_shader_abort.adoc VK_KHR_shader_abort>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2026-03-18
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Contributors__]
+--
+--     -   Tobias Hector, AMD
+--
+--     -   Piers Daniell, Nvidia
+--
+--     -   Craig Graham, Samsung
+--
+--     -   Erik Hogeman, ARM
+--
+--     -   Ralph Potter, Samsung
+--
+--     -   Vikram Tarikere, IMG
+--
+-- == Description
+--
+-- This extension enables the use of the @OpAbortKHR@ instruction in
+-- shaders.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_KHR_device_fault.DeviceFaultDebugInfoKHR':
+--
+--     -   'DeviceFaultShaderAbortMessageInfoKHR'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceShaderAbortFeaturesKHR'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDeviceShaderAbortPropertiesKHR'
+--
+-- == New Enum Constants
+--
+-- -   'KHR_SHADER_ABORT_EXTENSION_NAME'
+--
+-- -   'KHR_SHADER_ABORT_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEVICE_FAULT_SHADER_ABORT_MESSAGE_INFO_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ABORT_FEATURES_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ABORT_PROPERTIES_KHR'
+--
+-- == Version History
+--
+-- -   Revision 1, 2024-08-22 (Tobias Hector)
+--
+--     -   Initial revision
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_shader_abort 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_abort  ( PhysicalDeviceShaderAbortFeaturesKHR(..)
+                                              , PhysicalDeviceShaderAbortPropertiesKHR(..)
+                                              , DeviceFaultShaderAbortMessageInfoKHR(..)
+                                              , KHR_SHADER_ABORT_SPEC_VERSION
+                                              , pattern KHR_SHADER_ABORT_SPEC_VERSION
+                                              , KHR_SHADER_ABORT_EXTENSION_NAME
+                                              , pattern KHR_SHADER_ABORT_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 (Word64)
+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_DEVICE_FAULT_SHADER_ABORT_MESSAGE_INFO_KHR))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ABORT_FEATURES_KHR))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ABORT_PROPERTIES_KHR))
+-- | VkPhysicalDeviceShaderAbortFeaturesKHR - Structure describing whether
+-- shader abort is supported or not
+--
+-- = Members
+--
+-- This structure describes the following feature:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceShaderAbortFeaturesKHR' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceShaderAbortFeaturesKHR', it /must/ add an instance of the
+-- structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_shader_abort VK_KHR_shader_abort>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceShaderAbortFeaturesKHR = PhysicalDeviceShaderAbortFeaturesKHR
+  { -- | #features-shaderAbort# @shaderAbort@ specifies whether shaders /can/
+    -- declare the @AbortKHR@ capability.
+    shaderAbort :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceShaderAbortFeaturesKHR)
+#endif
+deriving instance Show PhysicalDeviceShaderAbortFeaturesKHR
+
+instance ToCStruct PhysicalDeviceShaderAbortFeaturesKHR where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceShaderAbortFeaturesKHR{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ABORT_FEATURES_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (shaderAbort))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ABORT_FEATURES_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceShaderAbortFeaturesKHR where
+  peekCStruct p = do
+    shaderAbort <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDeviceShaderAbortFeaturesKHR
+             (bool32ToBool shaderAbort)
+
+instance Storable PhysicalDeviceShaderAbortFeaturesKHR where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceShaderAbortFeaturesKHR where
+  zero = PhysicalDeviceShaderAbortFeaturesKHR
+           zero
+
+
+-- | VkPhysicalDeviceShaderAbortPropertiesKHR - Structure describing the
+-- maximum size of a shader abort message
+--
+-- = Members
+--
+-- The 'PhysicalDeviceShaderAbortPropertiesKHR' structure describes the
+-- following:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceShaderAbortPropertiesKHR' 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.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_shader_abort VK_KHR_shader_abort>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceShaderAbortPropertiesKHR = PhysicalDeviceShaderAbortPropertiesKHR
+  { -- | #limits-maxShaderAbortMessageSize# @maxShaderAbortMessageSize@ indicates
+    -- the maximum size of a shader abort message that the application /can/
+    -- specify.
+    maxShaderAbortMessageSize :: Word64 }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceShaderAbortPropertiesKHR)
+#endif
+deriving instance Show PhysicalDeviceShaderAbortPropertiesKHR
+
+instance ToCStruct PhysicalDeviceShaderAbortPropertiesKHR where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceShaderAbortPropertiesKHR{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ABORT_PROPERTIES_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word64)) (maxShaderAbortMessageSize)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ABORT_PROPERTIES_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word64)) (zero)
+    f
+
+instance FromCStruct PhysicalDeviceShaderAbortPropertiesKHR where
+  peekCStruct p = do
+    maxShaderAbortMessageSize <- peek @Word64 ((p `plusPtr` 16 :: Ptr Word64))
+    pure $ PhysicalDeviceShaderAbortPropertiesKHR
+             maxShaderAbortMessageSize
+
+instance Storable PhysicalDeviceShaderAbortPropertiesKHR where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceShaderAbortPropertiesKHR where
+  zero = PhysicalDeviceShaderAbortPropertiesKHR
+           zero
+
+
+-- | VkDeviceFaultShaderAbortMessageInfoKHR - Structure specifying message
+-- data from @OpAbortKHR@
+--
+-- = Description
+--
+-- This structure /can/ be included in the @pNext@ chain of
+-- 'Vulkan.Extensions.VK_KHR_device_fault.DeviceFaultDebugInfoKHR' to
+-- retrieve messages returned by @OpAbortKHR@ instructions.
+--
+-- @pMessageData@ is populated with a series of (size,payload) pairs, each
+-- aligned to 8-byte boundaries. The size in each pair is a 64-bit integer
+-- indicating the number of bytes in the subsequent payload. The data in
+-- payload is laid out in the exact manner specified in the @OpAbortKHR@
+-- instruction by the message type, with no modifications. If multiple
+-- messages are present, the next message size will always be at the
+-- following 8-byte aligned offset after the payload ends.
+--
+-- Implementations /must/ report the message reported by the first
+-- @OpAbortKHR@ instruction executed in an invocation for this device. They
+-- /may/ report additional messages if other invocations continued to
+-- execute after the abort instruction was executed.
+--
+-- Even though shading languages may provide definitions for printf-style
+-- abort commands, no formatting is performed by the Vulkan implementation.
+-- Applications should consult documentation for the shader language they
+-- are using on how abort messages are packed, so that they can unpack them
+-- after they are queried.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Extensions.VK_KHR_device_fault.DeviceFaultDebugInfoKHR'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_shader_abort VK_KHR_shader_abort>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data DeviceFaultShaderAbortMessageInfoKHR = DeviceFaultShaderAbortMessageInfoKHR
+  { -- | @messageDataSize@ is the size of @pMessageData@ in bytes. If
+    -- @pMessageData@ is @NULL@, this value is populated by the implementation.
+    messageDataSize :: Word64
+  , -- | @pMessageData@ is @NULL@ or a pointer to @messageDataSize@ bytes of
+    -- data, which will be populated with data for messages reported via
+    -- @OpAbortKHR@. If @pMessageData@ is @NULL@ then @messageDataSize@ will be
+    -- populated with the required size.
+    messageData :: Ptr ()
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (DeviceFaultShaderAbortMessageInfoKHR)
+#endif
+deriving instance Show DeviceFaultShaderAbortMessageInfoKHR
+
+instance ToCStruct DeviceFaultShaderAbortMessageInfoKHR where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p DeviceFaultShaderAbortMessageInfoKHR{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_FAULT_SHADER_ABORT_MESSAGE_INFO_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word64)) (messageDataSize)
+    poke ((p `plusPtr` 24 :: Ptr (Ptr ()))) (messageData)
+    f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_FAULT_SHADER_ABORT_MESSAGE_INFO_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    f
+
+instance FromCStruct DeviceFaultShaderAbortMessageInfoKHR where
+  peekCStruct p = do
+    messageDataSize <- peek @Word64 ((p `plusPtr` 16 :: Ptr Word64))
+    pMessageData <- peek @(Ptr ()) ((p `plusPtr` 24 :: Ptr (Ptr ())))
+    pure $ DeviceFaultShaderAbortMessageInfoKHR
+             messageDataSize pMessageData
+
+instance Storable DeviceFaultShaderAbortMessageInfoKHR where
+  sizeOf ~_ = 32
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero DeviceFaultShaderAbortMessageInfoKHR where
+  zero = DeviceFaultShaderAbortMessageInfoKHR
+           zero
+           zero
+
+
+type KHR_SHADER_ABORT_SPEC_VERSION = 1
+
+-- No documentation found for TopLevel "VK_KHR_SHADER_ABORT_SPEC_VERSION"
+pattern KHR_SHADER_ABORT_SPEC_VERSION :: forall a . Integral a => a
+pattern KHR_SHADER_ABORT_SPEC_VERSION = 1
+
+
+type KHR_SHADER_ABORT_EXTENSION_NAME = "VK_KHR_shader_abort"
+
+-- No documentation found for TopLevel "VK_KHR_SHADER_ABORT_EXTENSION_NAME"
+pattern KHR_SHADER_ABORT_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern KHR_SHADER_ABORT_EXTENSION_NAME = "VK_KHR_shader_abort"
+
diff --git a/src/Vulkan/Extensions/VK_KHR_shader_abort.hs-boot b/src/Vulkan/Extensions/VK_KHR_shader_abort.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_KHR_shader_abort.hs-boot
@@ -0,0 +1,147 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_KHR_shader_abort - device extension
+--
+-- = VK_KHR_shader_abort
+--
+-- [__Name String__]
+--     @VK_KHR_shader_abort@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     234
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_device_fault VK_KHR_device_fault>
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_shader_constant_data VK_KHR_shader_constant_data>
+--
+-- [__SPIR-V Dependencies__]
+--
+--     -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/KHR/SPV_KHR_abort.html SPV_KHR_abort>
+--
+-- [__Contact__]
+--
+--     -   Tobias Hector
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_shader_abort] @tobski%0A*Here describe the issue or question you have about the VK_KHR_shader_abort extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_KHR_shader_abort.adoc VK_KHR_shader_abort>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2026-03-18
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Contributors__]
+--
+--     -   Tobias Hector, AMD
+--
+--     -   Piers Daniell, Nvidia
+--
+--     -   Craig Graham, Samsung
+--
+--     -   Erik Hogeman, ARM
+--
+--     -   Ralph Potter, Samsung
+--
+--     -   Vikram Tarikere, IMG
+--
+-- == Description
+--
+-- This extension enables the use of the @OpAbortKHR@ instruction in
+-- shaders.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_KHR_device_fault.DeviceFaultDebugInfoKHR':
+--
+--     -   'DeviceFaultShaderAbortMessageInfoKHR'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceShaderAbortFeaturesKHR'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDeviceShaderAbortPropertiesKHR'
+--
+-- == New Enum Constants
+--
+-- -   'KHR_SHADER_ABORT_EXTENSION_NAME'
+--
+-- -   'KHR_SHADER_ABORT_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEVICE_FAULT_SHADER_ABORT_MESSAGE_INFO_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ABORT_FEATURES_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ABORT_PROPERTIES_KHR'
+--
+-- == Version History
+--
+-- -   Revision 1, 2024-08-22 (Tobias Hector)
+--
+--     -   Initial revision
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_shader_abort 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_abort  ( DeviceFaultShaderAbortMessageInfoKHR
+                                              , PhysicalDeviceShaderAbortFeaturesKHR
+                                              , PhysicalDeviceShaderAbortPropertiesKHR
+                                              ) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data DeviceFaultShaderAbortMessageInfoKHR
+
+instance ToCStruct DeviceFaultShaderAbortMessageInfoKHR
+instance Show DeviceFaultShaderAbortMessageInfoKHR
+
+instance FromCStruct DeviceFaultShaderAbortMessageInfoKHR
+
+
+data PhysicalDeviceShaderAbortFeaturesKHR
+
+instance ToCStruct PhysicalDeviceShaderAbortFeaturesKHR
+instance Show PhysicalDeviceShaderAbortFeaturesKHR
+
+instance FromCStruct PhysicalDeviceShaderAbortFeaturesKHR
+
+
+data PhysicalDeviceShaderAbortPropertiesKHR
+
+instance ToCStruct PhysicalDeviceShaderAbortPropertiesKHR
+instance Show PhysicalDeviceShaderAbortPropertiesKHR
+
+instance FromCStruct PhysicalDeviceShaderAbortPropertiesKHR
+
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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-Int64Atomics Int64Atomics>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-Int64Atomics Int64Atomics>
 --
 -- == Version History
 --
@@ -108,7 +108,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_shader_atomic_int64 Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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_bfloat16.hs b/src/Vulkan/Extensions/VK_KHR_shader_bfloat16.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_KHR_shader_bfloat16.hs
@@ -0,0 +1,273 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_KHR_shader_bfloat16 - device extension
+--
+-- = VK_KHR_shader_bfloat16
+--
+-- [__Name String__]
+--     @VK_KHR_shader_bfloat16@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     142
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
+--
+-- [__API Interactions__]
+--
+--     -   Interacts with VK_KHR_cooperative_matrix
+--
+-- [__SPIR-V Dependencies__]
+--
+--     -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/KHR/SPV_KHR_bfloat16.html SPV_KHR_bfloat16>
+--
+-- [__Contact__]
+--
+--     -   Tobias Hector
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_shader_bfloat16] @tobski%0A*Here describe the issue or question you have about the VK_KHR_shader_bfloat16 extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_KHR_shader_bfloat16.adoc VK_KHR_shader_bfloat16>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2024-04-09
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Contributors__]
+--
+--     -   Tobias Hector, AMD
+--
+--     -   Stu Smith, AMD
+--
+--     -   Jeff Bolz, Nvidia
+--
+--     -   Kévin Petit, Arm
+--
+--     -   David Neto, Google
+--
+--     -   Graeme Leese, Broadcom
+--
+--     -   Ruihao Zhang, Qualcomm
+--
+--     -   Mark Sheppard, Imagination
+--
+--     -   Ben Ashbaugh, Intel
+--
+--     -   Dmitry Sidorov, Intel
+--
+--     -   Victor Mustya, Intel
+--
+-- == Description
+--
+-- This extension enables support for bfloat16 (“brain float”) operations
+-- in shaders as defined in @SPV_KHR_bfloat16@.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceShaderBfloat16FeaturesKHR'
+--
+-- == New Enum Constants
+--
+-- -   'KHR_SHADER_BFLOAT16_EXTENSION_NAME'
+--
+-- -   'KHR_SHADER_BFLOAT16_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_BFLOAT16_FEATURES_KHR'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_cooperative_matrix VK_KHR_cooperative_matrix>
+-- is supported:
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_NV_cooperative_vector.ComponentTypeKHR':
+--
+--     -   'Vulkan.Extensions.VK_NV_cooperative_vector.COMPONENT_TYPE_BFLOAT16_KHR'
+--
+-- == New SPIR-V Capabilities
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-BFloat16TypeKHR BFloat16TypeKHR>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-BFloat16DotProductKHR BFloat16DotProductKHR>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-BFloat16CooperativeMatrixKHR BFloat16CooperativeMatrixKHR>
+--
+-- == Version History
+--
+-- -   Revision 1, 2024-04-09 (Stu Smith)
+--
+--     -   Initial draft
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_shader_bfloat16 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_bfloat16  ( PhysicalDeviceShaderBfloat16FeaturesKHR(..)
+                                                 , KHR_SHADER_BFLOAT16_SPEC_VERSION
+                                                 , pattern KHR_SHADER_BFLOAT16_SPEC_VERSION
+                                                 , KHR_SHADER_BFLOAT16_EXTENSION_NAME
+                                                 , pattern KHR_SHADER_BFLOAT16_EXTENSION_NAME
+                                                 , ComponentTypeKHR(..)
+                                                 ) 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_BFLOAT16_FEATURES_KHR))
+import Vulkan.Extensions.VK_NV_cooperative_vector (ComponentTypeKHR(..))
+-- | VkPhysicalDeviceShaderBfloat16FeaturesKHR - Structure describing
+-- bfloat16 features that can be supported by the implementation
+--
+-- = Members
+--
+-- This structure describes the following features:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceShaderBfloat16FeaturesKHR' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceShaderBfloat16FeaturesKHR', it /must/ add an instance of
+-- the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_shader_bfloat16 VK_KHR_shader_bfloat16>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceShaderBfloat16FeaturesKHR = PhysicalDeviceShaderBfloat16FeaturesKHR
+  { -- | #features-shaderBFloat16Type# @shaderBFloat16Type@ indicates whether the
+    -- implementation supports shaders with the @BFloat16TypeKHR@ capability.
+    shaderBFloat16Type :: Bool
+  , -- | #features-shaderBFloat16DotProduct# @shaderBFloat16DotProduct@ indicates
+    -- whether the implementation supports shaders with the
+    -- @BFloat16DotProductKHR@ capability.
+    shaderBFloat16DotProduct :: Bool
+  , -- | #features-shaderBFloat16CooperativeMatrix#
+    -- @shaderBFloat16CooperativeMatrix@ indicates whether the implementation
+    -- supports shaders with the @BFloat16CooperativeMatrixKHR@ capability.
+    shaderBFloat16CooperativeMatrix :: Bool
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceShaderBfloat16FeaturesKHR)
+#endif
+deriving instance Show PhysicalDeviceShaderBfloat16FeaturesKHR
+
+instance ToCStruct PhysicalDeviceShaderBfloat16FeaturesKHR where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceShaderBfloat16FeaturesKHR{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_BFLOAT16_FEATURES_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (shaderBFloat16Type))
+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (shaderBFloat16DotProduct))
+    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (shaderBFloat16CooperativeMatrix))
+    f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_BFLOAT16_FEATURES_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))
+    f
+
+instance FromCStruct PhysicalDeviceShaderBfloat16FeaturesKHR where
+  peekCStruct p = do
+    shaderBFloat16Type <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    shaderBFloat16DotProduct <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
+    shaderBFloat16CooperativeMatrix <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))
+    pure $ PhysicalDeviceShaderBfloat16FeaturesKHR
+             (bool32ToBool shaderBFloat16Type)
+             (bool32ToBool shaderBFloat16DotProduct)
+             (bool32ToBool shaderBFloat16CooperativeMatrix)
+
+instance Storable PhysicalDeviceShaderBfloat16FeaturesKHR where
+  sizeOf ~_ = 32
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceShaderBfloat16FeaturesKHR where
+  zero = PhysicalDeviceShaderBfloat16FeaturesKHR
+           zero
+           zero
+           zero
+
+
+type KHR_SHADER_BFLOAT16_SPEC_VERSION = 1
+
+-- No documentation found for TopLevel "VK_KHR_SHADER_BFLOAT16_SPEC_VERSION"
+pattern KHR_SHADER_BFLOAT16_SPEC_VERSION :: forall a . Integral a => a
+pattern KHR_SHADER_BFLOAT16_SPEC_VERSION = 1
+
+
+type KHR_SHADER_BFLOAT16_EXTENSION_NAME = "VK_KHR_shader_bfloat16"
+
+-- No documentation found for TopLevel "VK_KHR_SHADER_BFLOAT16_EXTENSION_NAME"
+pattern KHR_SHADER_BFLOAT16_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern KHR_SHADER_BFLOAT16_EXTENSION_NAME = "VK_KHR_shader_bfloat16"
+
diff --git a/src/Vulkan/Extensions/VK_KHR_shader_bfloat16.hs-boot b/src/Vulkan/Extensions/VK_KHR_shader_bfloat16.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_KHR_shader_bfloat16.hs-boot
@@ -0,0 +1,145 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_KHR_shader_bfloat16 - device extension
+--
+-- = VK_KHR_shader_bfloat16
+--
+-- [__Name String__]
+--     @VK_KHR_shader_bfloat16@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     142
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
+--
+-- [__API Interactions__]
+--
+--     -   Interacts with VK_KHR_cooperative_matrix
+--
+-- [__SPIR-V Dependencies__]
+--
+--     -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/KHR/SPV_KHR_bfloat16.html SPV_KHR_bfloat16>
+--
+-- [__Contact__]
+--
+--     -   Tobias Hector
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_shader_bfloat16] @tobski%0A*Here describe the issue or question you have about the VK_KHR_shader_bfloat16 extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_KHR_shader_bfloat16.adoc VK_KHR_shader_bfloat16>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2024-04-09
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Contributors__]
+--
+--     -   Tobias Hector, AMD
+--
+--     -   Stu Smith, AMD
+--
+--     -   Jeff Bolz, Nvidia
+--
+--     -   Kévin Petit, Arm
+--
+--     -   David Neto, Google
+--
+--     -   Graeme Leese, Broadcom
+--
+--     -   Ruihao Zhang, Qualcomm
+--
+--     -   Mark Sheppard, Imagination
+--
+--     -   Ben Ashbaugh, Intel
+--
+--     -   Dmitry Sidorov, Intel
+--
+--     -   Victor Mustya, Intel
+--
+-- == Description
+--
+-- This extension enables support for bfloat16 (“brain float”) operations
+-- in shaders as defined in @SPV_KHR_bfloat16@.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceShaderBfloat16FeaturesKHR'
+--
+-- == New Enum Constants
+--
+-- -   'KHR_SHADER_BFLOAT16_EXTENSION_NAME'
+--
+-- -   'KHR_SHADER_BFLOAT16_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_BFLOAT16_FEATURES_KHR'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_cooperative_matrix VK_KHR_cooperative_matrix>
+-- is supported:
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_NV_cooperative_vector.ComponentTypeKHR':
+--
+--     -   'Vulkan.Extensions.VK_NV_cooperative_vector.COMPONENT_TYPE_BFLOAT16_KHR'
+--
+-- == New SPIR-V Capabilities
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-BFloat16TypeKHR BFloat16TypeKHR>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-BFloat16DotProductKHR BFloat16DotProductKHR>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-BFloat16CooperativeMatrixKHR BFloat16CooperativeMatrixKHR>
+--
+-- == Version History
+--
+-- -   Revision 1, 2024-04-09 (Stu Smith)
+--
+--     -   Initial draft
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_shader_bfloat16 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_bfloat16  (PhysicalDeviceShaderBfloat16FeaturesKHR) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data PhysicalDeviceShaderBfloat16FeaturesKHR
+
+instance ToCStruct PhysicalDeviceShaderBfloat16FeaturesKHR
+instance Show PhysicalDeviceShaderBfloat16FeaturesKHR
+
+instance FromCStruct PhysicalDeviceShaderBfloat16FeaturesKHR
+
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
@@ -89,7 +89,7 @@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-ShaderClockKHR ShaderClockKHR>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-ShaderClockKHR ShaderClockKHR>
 --
 -- == Version History
 --
@@ -104,7 +104,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_shader_clock Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -152,11 +152,21 @@
 -- structure passed to
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
 -- it is filled in to indicate whether each corresponding feature is
--- supported. 'PhysicalDeviceShaderClockFeaturesKHR' /can/ also be used in
--- the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceShaderClockFeaturesKHR', it /must/ add an instance of the
+-- structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
 --
 -- = See Also
 --
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
@@ -89,7 +89,7 @@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-ShaderClockKHR ShaderClockKHR>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-ShaderClockKHR ShaderClockKHR>
 --
 -- == Version History
 --
@@ -104,7 +104,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_shader_clock Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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_constant_data.hs b/src/Vulkan/Extensions/VK_KHR_shader_constant_data.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_KHR_shader_constant_data.hs
@@ -0,0 +1,224 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_KHR_shader_constant_data - device extension
+--
+-- = VK_KHR_shader_constant_data
+--
+-- [__Name String__]
+--     @VK_KHR_shader_constant_data@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     232
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
+--
+-- [__SPIR-V Dependencies__]
+--
+--     -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/KHR/SPV_KHR_constant_data.html SPV_KHR_constant_data>
+--
+-- [__Contact__]
+--
+--     -   Tobias Hector
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_shader_constant_data] @tobski%0A*Here describe the issue or question you have about the VK_KHR_shader_constant_data extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_KHR_shader_constant_data.adoc VK_KHR_shader_constant_data>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2026-03-18
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Contributors__]
+--
+--     -   Tobias Hector, AMD
+--
+--     -   Piers Daniell, Nvidia
+--
+--     -   Craig Graham, Samsung
+--
+--     -   Vikram Tarikere, IMG
+--
+-- == Description
+--
+-- This extension allows the use of the
+-- <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/KHR/SPV_KHR_constant_data.html SPV_KHR_constant_data>
+-- extension in SPIR-V shader modules which enables the specification and
+-- specialization of arrays of constant data.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceShaderConstantDataFeaturesKHR'
+--
+-- == New Enum Constants
+--
+-- -   'KHR_SHADER_CONSTANT_DATA_EXTENSION_NAME'
+--
+-- -   'KHR_SHADER_CONSTANT_DATA_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CONSTANT_DATA_FEATURES_KHR'
+--
+-- == New SPIR-V Capabilities
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-ConstantDataKHR ConstantDataKHR>
+--
+-- == Version History
+--
+-- -   Revision 1, 2024-10-30 (Tobias Hector)
+--
+--     -   Initial revision
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_shader_constant_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_KHR_shader_constant_data  ( PhysicalDeviceShaderConstantDataFeaturesKHR(..)
+                                                      , KHR_SHADER_CONSTANT_DATA_SPEC_VERSION
+                                                      , pattern KHR_SHADER_CONSTANT_DATA_SPEC_VERSION
+                                                      , KHR_SHADER_CONSTANT_DATA_EXTENSION_NAME
+                                                      , pattern KHR_SHADER_CONSTANT_DATA_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_CONSTANT_DATA_FEATURES_KHR))
+-- | VkPhysicalDeviceShaderConstantDataFeaturesKHR - Structure describing
+-- support for VK_KHR_shader_constant_data in an implementation
+--
+-- = Members
+--
+-- This structure describes the following feature:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceShaderConstantDataFeaturesKHR' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceShaderConstantDataFeaturesKHR', it /must/ add an instance
+-- of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_shader_constant_data VK_KHR_shader_constant_data>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceShaderConstantDataFeaturesKHR = PhysicalDeviceShaderConstantDataFeaturesKHR
+  { -- | #features-shaderConstantData# @shaderConstantData@ specifies whether the
+    -- implementation supports SPIR-V modules that use the
+    -- @VK_KHR_shader_constant_data@ extension.
+    shaderConstantData :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceShaderConstantDataFeaturesKHR)
+#endif
+deriving instance Show PhysicalDeviceShaderConstantDataFeaturesKHR
+
+instance ToCStruct PhysicalDeviceShaderConstantDataFeaturesKHR where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceShaderConstantDataFeaturesKHR{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CONSTANT_DATA_FEATURES_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (shaderConstantData))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CONSTANT_DATA_FEATURES_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceShaderConstantDataFeaturesKHR where
+  peekCStruct p = do
+    shaderConstantData <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDeviceShaderConstantDataFeaturesKHR
+             (bool32ToBool shaderConstantData)
+
+instance Storable PhysicalDeviceShaderConstantDataFeaturesKHR where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceShaderConstantDataFeaturesKHR where
+  zero = PhysicalDeviceShaderConstantDataFeaturesKHR
+           zero
+
+
+type KHR_SHADER_CONSTANT_DATA_SPEC_VERSION = 1
+
+-- No documentation found for TopLevel "VK_KHR_SHADER_CONSTANT_DATA_SPEC_VERSION"
+pattern KHR_SHADER_CONSTANT_DATA_SPEC_VERSION :: forall a . Integral a => a
+pattern KHR_SHADER_CONSTANT_DATA_SPEC_VERSION = 1
+
+
+type KHR_SHADER_CONSTANT_DATA_EXTENSION_NAME = "VK_KHR_shader_constant_data"
+
+-- No documentation found for TopLevel "VK_KHR_SHADER_CONSTANT_DATA_EXTENSION_NAME"
+pattern KHR_SHADER_CONSTANT_DATA_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern KHR_SHADER_CONSTANT_DATA_EXTENSION_NAME = "VK_KHR_shader_constant_data"
+
diff --git a/src/Vulkan/Extensions/VK_KHR_shader_constant_data.hs-boot b/src/Vulkan/Extensions/VK_KHR_shader_constant_data.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_KHR_shader_constant_data.hs-boot
@@ -0,0 +1,116 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_KHR_shader_constant_data - device extension
+--
+-- = VK_KHR_shader_constant_data
+--
+-- [__Name String__]
+--     @VK_KHR_shader_constant_data@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     232
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
+--
+-- [__SPIR-V Dependencies__]
+--
+--     -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/KHR/SPV_KHR_constant_data.html SPV_KHR_constant_data>
+--
+-- [__Contact__]
+--
+--     -   Tobias Hector
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_shader_constant_data] @tobski%0A*Here describe the issue or question you have about the VK_KHR_shader_constant_data extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_KHR_shader_constant_data.adoc VK_KHR_shader_constant_data>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2026-03-18
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Contributors__]
+--
+--     -   Tobias Hector, AMD
+--
+--     -   Piers Daniell, Nvidia
+--
+--     -   Craig Graham, Samsung
+--
+--     -   Vikram Tarikere, IMG
+--
+-- == Description
+--
+-- This extension allows the use of the
+-- <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/KHR/SPV_KHR_constant_data.html SPV_KHR_constant_data>
+-- extension in SPIR-V shader modules which enables the specification and
+-- specialization of arrays of constant data.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceShaderConstantDataFeaturesKHR'
+--
+-- == New Enum Constants
+--
+-- -   'KHR_SHADER_CONSTANT_DATA_EXTENSION_NAME'
+--
+-- -   'KHR_SHADER_CONSTANT_DATA_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CONSTANT_DATA_FEATURES_KHR'
+--
+-- == New SPIR-V Capabilities
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-ConstantDataKHR ConstantDataKHR>
+--
+-- == Version History
+--
+-- -   Revision 1, 2024-10-30 (Tobias Hector)
+--
+--     -   Initial revision
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_shader_constant_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_KHR_shader_constant_data  (PhysicalDeviceShaderConstantDataFeaturesKHR) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data PhysicalDeviceShaderConstantDataFeaturesKHR
+
+instance ToCStruct PhysicalDeviceShaderConstantDataFeaturesKHR
+instance Show PhysicalDeviceShaderConstantDataFeaturesKHR
+
+instance FromCStruct PhysicalDeviceShaderConstantDataFeaturesKHR
+
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
@@ -97,7 +97,7 @@
 --
 -- All functionality in this extension is included in core Vulkan 1.1.
 -- However, the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-shaderDrawParameters shaderDrawParameters>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-shaderDrawParameters shaderDrawParameters>
 -- feature bit was added to distinguish whether it is actually available or
 -- not.
 --
@@ -109,15 +109,15 @@
 --
 -- == New Built-In Variables
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-baseinstance BaseInstance>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-baseinstance BaseInstance>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-basevertex BaseVertex>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-basevertex BaseVertex>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-drawindex DrawIndex>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-drawindex DrawIndex>
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-DrawParameters DrawParameters>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-DrawParameters DrawParameters>
 --
 -- == Issues
 --
@@ -151,7 +151,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_shader_draw_parameters Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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_expect_assume.hs b/src/Vulkan/Extensions/VK_KHR_shader_expect_assume.hs
--- a/src/Vulkan/Extensions/VK_KHR_shader_expect_assume.hs
+++ b/src/Vulkan/Extensions/VK_KHR_shader_expect_assume.hs
@@ -29,6 +29,11 @@
 --
 --     -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/KHR/SPV_KHR_expect_assume.html SPV_KHR_expect_assume>
 --
+-- [__Deprecation State__]
+--
+--     -   /Promoted/ to
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.4-promotions Vulkan 1.4>
+--
 -- [__Contact__]
 --
 --     -   Kevin Petit
@@ -75,12 +80,18 @@
 --
 -- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES_KHR'
+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES_KHR'
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-ExpectAssumeKHR ExpectAssumeKHR>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-ExpectAssumeKHR ExpectAssumeKHR>
 --
+-- == Promotion to Vulkan 1.4
+--
+-- Functionality in this extension is included in core Vulkan 1.4 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, 2023-12-06 (Kevin Petit)
@@ -94,101 +105,27 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_shader_expect_assume Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_shader_expect_assume 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_expect_assume  ( PhysicalDeviceShaderExpectAssumeFeaturesKHR(..)
+module Vulkan.Extensions.VK_KHR_shader_expect_assume  ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES_KHR
+                                                      , PhysicalDeviceShaderExpectAssumeFeaturesKHR
                                                       , KHR_SHADER_EXPECT_ASSUME_SPEC_VERSION
                                                       , pattern KHR_SHADER_EXPECT_ASSUME_SPEC_VERSION
                                                       , KHR_SHADER_EXPECT_ASSUME_EXTENSION_NAME
                                                       , pattern KHR_SHADER_EXPECT_ASSUME_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_EXPECT_ASSUME_FEATURES_KHR))
--- | VkPhysicalDeviceShaderExpectAssumeFeaturesKHR - Structure describing
--- shader expect assume features that can be supported by an implementation
---
--- = Description
---
--- If the 'PhysicalDeviceShaderExpectAssumeFeaturesKHR' 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. 'PhysicalDeviceShaderExpectAssumeFeaturesKHR' /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_expect_assume VK_KHR_shader_expect_assume>,
--- 'Vulkan.Core10.FundamentalTypes.Bool32',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PhysicalDeviceShaderExpectAssumeFeaturesKHR = PhysicalDeviceShaderExpectAssumeFeaturesKHR
-  { -- | #features-shaderExpectAssume# @shaderExpectAssume@ specifies whether
-    -- shader modules /can/ declare the @ExpectAssumeKHR@ capability.
-    shaderExpectAssume :: Bool }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PhysicalDeviceShaderExpectAssumeFeaturesKHR)
-#endif
-deriving instance Show PhysicalDeviceShaderExpectAssumeFeaturesKHR
+import Vulkan.Core14.Promoted_From_VK_KHR_shader_expect_assume (PhysicalDeviceShaderExpectAssumeFeatures)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES))
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES
 
-instance ToCStruct PhysicalDeviceShaderExpectAssumeFeaturesKHR where
-  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PhysicalDeviceShaderExpectAssumeFeaturesKHR{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (shaderExpectAssume))
-    f
-  cStructSize = 24
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
-    f
 
-instance FromCStruct PhysicalDeviceShaderExpectAssumeFeaturesKHR where
-  peekCStruct p = do
-    shaderExpectAssume <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
-    pure $ PhysicalDeviceShaderExpectAssumeFeaturesKHR
-             (bool32ToBool shaderExpectAssume)
-
-instance Storable PhysicalDeviceShaderExpectAssumeFeaturesKHR where
-  sizeOf ~_ = 24
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero PhysicalDeviceShaderExpectAssumeFeaturesKHR where
-  zero = PhysicalDeviceShaderExpectAssumeFeaturesKHR
-           zero
+-- No documentation found for TopLevel "VkPhysicalDeviceShaderExpectAssumeFeaturesKHR"
+type PhysicalDeviceShaderExpectAssumeFeaturesKHR = PhysicalDeviceShaderExpectAssumeFeatures
 
 
 type KHR_SHADER_EXPECT_ASSUME_SPEC_VERSION = 1
diff --git a/src/Vulkan/Extensions/VK_KHR_shader_expect_assume.hs-boot b/src/Vulkan/Extensions/VK_KHR_shader_expect_assume.hs-boot
deleted file mode 100644
--- a/src/Vulkan/Extensions/VK_KHR_shader_expect_assume.hs-boot
+++ /dev/null
@@ -1,113 +0,0 @@
-{-# language CPP #-}
--- | = Name
---
--- VK_KHR_shader_expect_assume - device extension
---
--- = VK_KHR_shader_expect_assume
---
--- [__Name String__]
---     @VK_KHR_shader_expect_assume@
---
--- [__Extension Type__]
---     Device extension
---
--- [__Registered Extension Number__]
---     545
---
--- [__Revision__]
---     1
---
--- [__Ratification Status__]
---     Ratified
---
--- [__Extension and Version Dependencies__]
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
---
--- [__SPIR-V Dependencies__]
---
---     -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/KHR/SPV_KHR_expect_assume.html SPV_KHR_expect_assume>
---
--- [__Contact__]
---
---     -   Kevin Petit
---         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_shader_expect_assume] @kpet%0A*Here describe the issue or question you have about the VK_KHR_shader_expect_assume extension* >
---
--- [__Extension Proposal__]
---     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_KHR_shader_expect_assume.adoc VK_KHR_shader_expect_assume>
---
--- == Other Extension Metadata
---
--- [__Last Modified Date__]
---     2023-12-06
---
--- [__IP Status__]
---     No known IP claims.
---
--- [__Contributors__]
---
---     -   Kevin Petit, Arm
---
---     -   Tobias Hector, AMD
---
---     -   James Fitzpatrick, Imagination Technologies
---
--- == Description
---
--- This extension allows the use of the @SPV_KHR_expect_assume@ extension
--- in SPIR-V shader modules which enables SPIR-V producers to provide
--- optimization hints to the Vulkan implementation.
---
--- == New Structures
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
---     'Vulkan.Core10.Device.DeviceCreateInfo':
---
---     -   'PhysicalDeviceShaderExpectAssumeFeaturesKHR'
---
--- == New Enum Constants
---
--- -   'KHR_SHADER_EXPECT_ASSUME_EXTENSION_NAME'
---
--- -   'KHR_SHADER_EXPECT_ASSUME_SPEC_VERSION'
---
--- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES_KHR'
---
--- == New SPIR-V Capabilities
---
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-ExpectAssumeKHR ExpectAssumeKHR>
---
--- == Version History
---
--- -   Revision 1, 2023-12-06 (Kevin Petit)
---
---     -   Initial revision
---
--- == See Also
---
--- No cross-references are available
---
--- == Document Notes
---
--- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_shader_expect_assume 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_expect_assume  (PhysicalDeviceShaderExpectAssumeFeaturesKHR) where
-
-import Vulkan.CStruct (FromCStruct)
-import Vulkan.CStruct (ToCStruct)
-import Data.Kind (Type)
-
-data PhysicalDeviceShaderExpectAssumeFeaturesKHR
-
-instance ToCStruct PhysicalDeviceShaderExpectAssumeFeaturesKHR
-instance Show PhysicalDeviceShaderExpectAssumeFeaturesKHR
-
-instance FromCStruct PhysicalDeviceShaderExpectAssumeFeaturesKHR
-
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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-iointerfaces shader input and output interfaces>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
 --
@@ -90,6 +90,11 @@
 -- are optional. The original type, enum, and command names are still
 -- available as aliases of the core functionality.
 --
+-- == Promotion to Vulkan 1.4
+--
+-- If Vulkan 1.4 is supported, support for the @shaderInt8@ capability is
+-- required.
+--
 -- == New Structures
 --
 -- -   Extending
@@ -125,7 +130,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_shader_float16_int8 Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -104,15 +104,15 @@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-DenormPreserve DenormPreserve>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-DenormPreserve DenormPreserve>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-DenormFlushToZero DenormFlushToZero>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-DenormFlushToZero DenormFlushToZero>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-SignedZeroInfNanPreserve SignedZeroInfNanPreserve>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-SignedZeroInfNanPreserve SignedZeroInfNanPreserve>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-RoundingModeRTE RoundingModeRTE>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-RoundingModeRTE RoundingModeRTE>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-RoundingModeRTZ RoundingModeRTZ>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-RoundingModeRTZ RoundingModeRTZ>
 --
 -- == Issues
 --
@@ -210,7 +210,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_shader_float_controls Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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_float_controls2.hs b/src/Vulkan/Extensions/VK_KHR_shader_float_controls2.hs
--- a/src/Vulkan/Extensions/VK_KHR_shader_float_controls2.hs
+++ b/src/Vulkan/Extensions/VK_KHR_shader_float_controls2.hs
@@ -29,6 +29,11 @@
 --
 --     -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/KHR/SPV_KHR_float_controls2.html SPV_KHR_float_controls2>
 --
+-- [__Deprecation State__]
+--
+--     -   /Promoted/ to
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.4-promotions Vulkan 1.4>
+--
 -- [__Contact__]
 --
 --     -   Graeme Leese
@@ -79,12 +84,18 @@
 --
 -- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES_KHR'
+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES_KHR'
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-FloatControls2 FloatControls2>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-FloatControls2 FloatControls2>
 --
+-- == Promotion to Vulkan 1.4
+--
+-- Functionality in this extension is included in core Vulkan 1.4 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, 2023-05-16 (Graeme Leese)
@@ -98,106 +109,27 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_shader_float_controls2 Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_shader_float_controls2 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_float_controls2  ( PhysicalDeviceShaderFloatControls2FeaturesKHR(..)
+module Vulkan.Extensions.VK_KHR_shader_float_controls2  ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES_KHR
+                                                        , PhysicalDeviceShaderFloatControls2FeaturesKHR
                                                         , KHR_SHADER_FLOAT_CONTROLS_2_SPEC_VERSION
                                                         , pattern KHR_SHADER_FLOAT_CONTROLS_2_SPEC_VERSION
                                                         , KHR_SHADER_FLOAT_CONTROLS_2_EXTENSION_NAME
                                                         , pattern KHR_SHADER_FLOAT_CONTROLS_2_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_FLOAT_CONTROLS_2_FEATURES_KHR))
--- | VkPhysicalDeviceShaderFloatControls2FeaturesKHR - Structure describing
--- shader float controls 2 features that can be supported by an
--- implementation
---
--- = Members
---
--- This structure describes the following feature:
---
--- = Description
---
--- If the 'PhysicalDeviceShaderFloatControls2FeaturesKHR' 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. 'PhysicalDeviceShaderFloatControls2FeaturesKHR' /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_float_controls2 VK_KHR_shader_float_controls2>,
--- 'Vulkan.Core10.FundamentalTypes.Bool32',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PhysicalDeviceShaderFloatControls2FeaturesKHR = PhysicalDeviceShaderFloatControls2FeaturesKHR
-  { -- | #features-shaderFloatControls2# @shaderFloatControls2@ specifies whether
-    -- shader modules /can/ declare the @FloatControls2@ capability.
-    shaderFloatControls2 :: Bool }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PhysicalDeviceShaderFloatControls2FeaturesKHR)
-#endif
-deriving instance Show PhysicalDeviceShaderFloatControls2FeaturesKHR
+import Vulkan.Core14.Promoted_From_VK_KHR_shader_float_controls2 (PhysicalDeviceShaderFloatControls2Features)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES))
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES
 
-instance ToCStruct PhysicalDeviceShaderFloatControls2FeaturesKHR where
-  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PhysicalDeviceShaderFloatControls2FeaturesKHR{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (shaderFloatControls2))
-    f
-  cStructSize = 24
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
-    f
 
-instance FromCStruct PhysicalDeviceShaderFloatControls2FeaturesKHR where
-  peekCStruct p = do
-    shaderFloatControls2 <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
-    pure $ PhysicalDeviceShaderFloatControls2FeaturesKHR
-             (bool32ToBool shaderFloatControls2)
-
-instance Storable PhysicalDeviceShaderFloatControls2FeaturesKHR where
-  sizeOf ~_ = 24
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero PhysicalDeviceShaderFloatControls2FeaturesKHR where
-  zero = PhysicalDeviceShaderFloatControls2FeaturesKHR
-           zero
+-- No documentation found for TopLevel "VkPhysicalDeviceShaderFloatControls2FeaturesKHR"
+type PhysicalDeviceShaderFloatControls2FeaturesKHR = PhysicalDeviceShaderFloatControls2Features
 
 
 type KHR_SHADER_FLOAT_CONTROLS_2_SPEC_VERSION = 1
diff --git a/src/Vulkan/Extensions/VK_KHR_shader_float_controls2.hs-boot b/src/Vulkan/Extensions/VK_KHR_shader_float_controls2.hs-boot
deleted file mode 100644
--- a/src/Vulkan/Extensions/VK_KHR_shader_float_controls2.hs-boot
+++ /dev/null
@@ -1,117 +0,0 @@
-{-# language CPP #-}
--- | = Name
---
--- VK_KHR_shader_float_controls2 - device extension
---
--- = VK_KHR_shader_float_controls2
---
--- [__Name String__]
---     @VK_KHR_shader_float_controls2@
---
--- [__Extension Type__]
---     Device extension
---
--- [__Registered Extension Number__]
---     529
---
--- [__Revision__]
---     1
---
--- [__Ratification Status__]
---     Ratified
---
--- [__Extension and Version Dependencies__]
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
---     and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_shader_float_controls VK_KHR_shader_float_controls>
---
--- [__SPIR-V Dependencies__]
---
---     -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/KHR/SPV_KHR_float_controls2.html SPV_KHR_float_controls2>
---
--- [__Contact__]
---
---     -   Graeme Leese
---         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_shader_float_controls2] @gnl21%0A*Here describe the issue or question you have about the VK_KHR_shader_float_controls2 extension* >
---
--- [__Extension Proposal__]
---     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_KHR_shader_float_controls2.adoc VK_KHR_shader_float_controls2>
---
--- == Other Extension Metadata
---
--- [__Last Modified Date__]
---     2023-05-16
---
--- [__Interactions and External Dependencies__]
---
---     -   This extension requires
---         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/KHR/SPV_KHR_float_controls2.html SPV_KHR_float_controls2>.
---
--- [__Contributors__]
---
---     -   Graeme Leese, Broadcom
---
--- == Description
---
--- This extension enables use of the more expressive fast floating-point
--- math flags in the SPV_KHR_float_controls2 extension. These flags give
--- finer- grained control over which optimizations compilers may apply,
--- potentially speeding up execution while retaining correct results.
---
--- The extension also adds control over the fast-math modes to the GLSL
--- extended instruction set, making these operations more consistent with
--- SPIR-V and allowing their use in situations where floating-point
--- conformance is important.
---
--- == New Structures
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
---     'Vulkan.Core10.Device.DeviceCreateInfo':
---
---     -   'PhysicalDeviceShaderFloatControls2FeaturesKHR'
---
--- == New Enum Constants
---
--- -   'KHR_SHADER_FLOAT_CONTROLS_2_EXTENSION_NAME'
---
--- -   'KHR_SHADER_FLOAT_CONTROLS_2_SPEC_VERSION'
---
--- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES_KHR'
---
--- == New SPIR-V Capabilities
---
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-FloatControls2 FloatControls2>
---
--- == Version History
---
--- -   Revision 1, 2023-05-16 (Graeme Leese)
---
---     -   Initial draft
---
--- == See Also
---
--- No cross-references are available
---
--- == Document Notes
---
--- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_shader_float_controls2 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_float_controls2  (PhysicalDeviceShaderFloatControls2FeaturesKHR) where
-
-import Vulkan.CStruct (FromCStruct)
-import Vulkan.CStruct (ToCStruct)
-import Data.Kind (Type)
-
-data PhysicalDeviceShaderFloatControls2FeaturesKHR
-
-instance ToCStruct PhysicalDeviceShaderFloatControls2FeaturesKHR
-instance Show PhysicalDeviceShaderFloatControls2FeaturesKHR
-
-instance FromCStruct PhysicalDeviceShaderFloatControls2FeaturesKHR
-
diff --git a/src/Vulkan/Extensions/VK_KHR_shader_fma.hs b/src/Vulkan/Extensions/VK_KHR_shader_fma.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_KHR_shader_fma.hs
@@ -0,0 +1,238 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_KHR_shader_fma - device extension
+--
+-- = VK_KHR_shader_fma
+--
+-- [__Name String__]
+--     @VK_KHR_shader_fma@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     580
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
+--
+-- [__SPIR-V Dependencies__]
+--
+--     -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/KHR/SPV_KHR_fma.html SPV_KHR_fma>
+--
+-- [__Contact__]
+--
+--     -   Graeme Leese
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_shader_fma] @gnl21%0A*Here describe the issue or question you have about the VK_KHR_shader_fma extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_KHR_shader_fma.adoc VK_KHR_shader_fma>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2025-06-10
+--
+-- [__Contributors__]
+--
+--     -   Graeme Leese, Broadcom
+--
+-- == Description
+--
+-- This extension allows applications to use the SPV_KHR_fma extension to
+-- obtain correctly-rounded results for fused-multiply add (fma)
+-- operations.
+--
+-- Fused-multiply add is a building block of many high-precision numerical
+-- functions. It provides better accuracy than separate operations, because
+-- of the removal of the intermediate rounding step, and often costs less
+-- than the pair of separate operations.
+--
+-- Vulkan currently exposes an fma primitive that can give the reduced
+-- cost, but it is not guaranteed to be a fused operation, so the accuracy
+-- cannot be relied on. For applications which require the high accuracy,
+-- therefore, the operation must be emulated or the algorithm changed so as
+-- not to require fma. This is often vastly more costly, even though fma is
+-- supported in much of the underlying hardware.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceShaderFmaFeaturesKHR'
+--
+-- == New Enum Constants
+--
+-- -   'KHR_SHADER_FMA_EXTENSION_NAME'
+--
+-- -   'KHR_SHADER_FMA_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FMA_FEATURES_KHR'
+--
+-- == Version History
+--
+-- -   Revision 1, 2025-06-10 (Graeme Leese)
+--
+--     -   Initial draft
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_shader_fma 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_fma  ( PhysicalDeviceShaderFmaFeaturesKHR(..)
+                                            , KHR_SHADER_FMA_SPEC_VERSION
+                                            , pattern KHR_SHADER_FMA_SPEC_VERSION
+                                            , KHR_SHADER_FMA_EXTENSION_NAME
+                                            , pattern KHR_SHADER_FMA_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_FMA_FEATURES_KHR))
+-- | VkPhysicalDeviceShaderFmaFeaturesKHR - Structure indicating support for
+-- SPV_KHR_fma OpFmaKHR
+--
+-- = Members
+--
+-- This structure describes the following feature:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceShaderFmaFeaturesKHR' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceShaderFmaFeaturesKHR', it /must/ add an instance of the
+-- structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_shader_fma VK_KHR_shader_fma>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceShaderFmaFeaturesKHR = PhysicalDeviceShaderFmaFeaturesKHR
+  { -- | #features-shaderFmaFloat16# @shaderFmaFloat16@ indicates whether the
+    -- implementation supports @OpFmaKHR@ for Float16 types in shaders.
+    shaderFmaFloat16 :: Bool
+  , -- | #features-shaderFmaFloat32# @shaderFmaFloat32@ indicates whether the
+    -- implementation supports @OpFmaKHR@ for Float32 types in shaders.
+    shaderFmaFloat32 :: Bool
+  , -- | #features-shaderFmaFloat64# @shaderFmaFloat64@ indicates whether the
+    -- implementation supports @OpFmaKHR@ for Float64 types in shaders.
+    shaderFmaFloat64 :: Bool
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceShaderFmaFeaturesKHR)
+#endif
+deriving instance Show PhysicalDeviceShaderFmaFeaturesKHR
+
+instance ToCStruct PhysicalDeviceShaderFmaFeaturesKHR where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceShaderFmaFeaturesKHR{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FMA_FEATURES_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (shaderFmaFloat16))
+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (shaderFmaFloat32))
+    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (shaderFmaFloat64))
+    f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FMA_FEATURES_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))
+    f
+
+instance FromCStruct PhysicalDeviceShaderFmaFeaturesKHR where
+  peekCStruct p = do
+    shaderFmaFloat16 <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    shaderFmaFloat32 <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
+    shaderFmaFloat64 <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))
+    pure $ PhysicalDeviceShaderFmaFeaturesKHR
+             (bool32ToBool shaderFmaFloat16)
+             (bool32ToBool shaderFmaFloat32)
+             (bool32ToBool shaderFmaFloat64)
+
+instance Storable PhysicalDeviceShaderFmaFeaturesKHR where
+  sizeOf ~_ = 32
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceShaderFmaFeaturesKHR where
+  zero = PhysicalDeviceShaderFmaFeaturesKHR
+           zero
+           zero
+           zero
+
+
+type KHR_SHADER_FMA_SPEC_VERSION = 1
+
+-- No documentation found for TopLevel "VK_KHR_SHADER_FMA_SPEC_VERSION"
+pattern KHR_SHADER_FMA_SPEC_VERSION :: forall a . Integral a => a
+pattern KHR_SHADER_FMA_SPEC_VERSION = 1
+
+
+type KHR_SHADER_FMA_EXTENSION_NAME = "VK_KHR_shader_fma"
+
+-- No documentation found for TopLevel "VK_KHR_SHADER_FMA_EXTENSION_NAME"
+pattern KHR_SHADER_FMA_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern KHR_SHADER_FMA_EXTENSION_NAME = "VK_KHR_shader_fma"
+
diff --git a/src/Vulkan/Extensions/VK_KHR_shader_fma.hs-boot b/src/Vulkan/Extensions/VK_KHR_shader_fma.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_KHR_shader_fma.hs-boot
@@ -0,0 +1,114 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_KHR_shader_fma - device extension
+--
+-- = VK_KHR_shader_fma
+--
+-- [__Name String__]
+--     @VK_KHR_shader_fma@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     580
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
+--
+-- [__SPIR-V Dependencies__]
+--
+--     -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/KHR/SPV_KHR_fma.html SPV_KHR_fma>
+--
+-- [__Contact__]
+--
+--     -   Graeme Leese
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_shader_fma] @gnl21%0A*Here describe the issue or question you have about the VK_KHR_shader_fma extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_KHR_shader_fma.adoc VK_KHR_shader_fma>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2025-06-10
+--
+-- [__Contributors__]
+--
+--     -   Graeme Leese, Broadcom
+--
+-- == Description
+--
+-- This extension allows applications to use the SPV_KHR_fma extension to
+-- obtain correctly-rounded results for fused-multiply add (fma)
+-- operations.
+--
+-- Fused-multiply add is a building block of many high-precision numerical
+-- functions. It provides better accuracy than separate operations, because
+-- of the removal of the intermediate rounding step, and often costs less
+-- than the pair of separate operations.
+--
+-- Vulkan currently exposes an fma primitive that can give the reduced
+-- cost, but it is not guaranteed to be a fused operation, so the accuracy
+-- cannot be relied on. For applications which require the high accuracy,
+-- therefore, the operation must be emulated or the algorithm changed so as
+-- not to require fma. This is often vastly more costly, even though fma is
+-- supported in much of the underlying hardware.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceShaderFmaFeaturesKHR'
+--
+-- == New Enum Constants
+--
+-- -   'KHR_SHADER_FMA_EXTENSION_NAME'
+--
+-- -   'KHR_SHADER_FMA_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FMA_FEATURES_KHR'
+--
+-- == Version History
+--
+-- -   Revision 1, 2025-06-10 (Graeme Leese)
+--
+--     -   Initial draft
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_shader_fma 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_fma  (PhysicalDeviceShaderFmaFeaturesKHR) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data PhysicalDeviceShaderFmaFeaturesKHR
+
+instance ToCStruct PhysicalDeviceShaderFmaFeaturesKHR
+instance Show PhysicalDeviceShaderFmaFeaturesKHR
+
+instance FromCStruct PhysicalDeviceShaderFmaFeaturesKHR
+
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
@@ -128,13 +128,13 @@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-DotProductInputAll DotProductInputAllKHR>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-DotProductInputAll DotProductInputAllKHR>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-DotProductInput4x8Bit DotProductInput4x8BitKHR>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-DotProductInput4x8Bit DotProductInput4x8BitKHR>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-DotProductInput4x8BitPacked DotProductInput4x8BitPackedKHR>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-DotProductInput4x8BitPacked DotProductInput4x8BitPackedKHR>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-DotProduct DotProductKHR>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-DotProduct DotProductKHR>
 --
 -- == Version History
 --
@@ -149,7 +149,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_shader_integer_dot_product Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
diff --git a/src/Vulkan/Extensions/VK_KHR_shader_maximal_reconvergence.hs b/src/Vulkan/Extensions/VK_KHR_shader_maximal_reconvergence.hs
--- a/src/Vulkan/Extensions/VK_KHR_shader_maximal_reconvergence.hs
+++ b/src/Vulkan/Extensions/VK_KHR_shader_maximal_reconvergence.hs
@@ -101,7 +101,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_shader_maximal_reconvergence Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_shader_maximal_reconvergence Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -150,13 +150,21 @@
 -- structure passed to
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
 -- it is filled in to indicate whether each corresponding feature is
--- supported.
--- 'Vulkan.Extensions.VK_EXT_private_data.PhysicalDevicePrivateDataFeaturesEXT'
--- /can/ also be used in the @pNext@ chain of
--- 'Vulkan.Core10.Device.DeviceCreateInfo' to selectively enable these
--- features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'Vulkan.Extensions.VK_EXT_private_data.PhysicalDevicePrivateDataFeaturesEXT',
+-- it /must/ add an instance of the structure, with the desired feature
+-- members set to 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@
+-- chain of 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Extensions/VK_KHR_shader_maximal_reconvergence.hs-boot b/src/Vulkan/Extensions/VK_KHR_shader_maximal_reconvergence.hs-boot
--- a/src/Vulkan/Extensions/VK_KHR_shader_maximal_reconvergence.hs-boot
+++ b/src/Vulkan/Extensions/VK_KHR_shader_maximal_reconvergence.hs-boot
@@ -101,7 +101,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_shader_maximal_reconvergence Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_shader_maximal_reconvergence Vulkan Specification>.
 --
 -- This 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_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
@@ -65,7 +65,7 @@
 -- 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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-extensions-table SPIR-V Extensions table>.
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-extensions-table SPIR-V Extensions table>.
 --
 -- == Version History
 --
@@ -80,7 +80,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_shader_non_semantic_info Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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_quad_control.hs b/src/Vulkan/Extensions/VK_KHR_shader_quad_control.hs
--- a/src/Vulkan/Extensions/VK_KHR_shader_quad_control.hs
+++ b/src/Vulkan/Extensions/VK_KHR_shader_quad_control.hs
@@ -21,9 +21,14 @@
 --     Ratified
 --
 -- [__Extension and Version Dependencies__]
+--             
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
---     and
+--              and
+--             
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_vulkan_memory_model VK_KHR_vulkan_memory_model>
+--          or
+--         
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.2 Vulkan Version 1.2>
 --     and
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_shader_maximal_reconvergence VK_KHR_shader_maximal_reconvergence>
 --
@@ -91,7 +96,7 @@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-QuadControlKHR QuadControlKHR>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-QuadControlKHR QuadControlKHR>
 --
 -- == Version History
 --
@@ -106,7 +111,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_shader_quad_control Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_shader_quad_control Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -154,11 +159,21 @@
 -- 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. 'PhysicalDeviceShaderQuadControlFeaturesKHR' /can/ also be
--- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceShaderQuadControlFeaturesKHR', it /must/ add an instance
+-- of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Extensions/VK_KHR_shader_quad_control.hs-boot b/src/Vulkan/Extensions/VK_KHR_shader_quad_control.hs-boot
--- a/src/Vulkan/Extensions/VK_KHR_shader_quad_control.hs-boot
+++ b/src/Vulkan/Extensions/VK_KHR_shader_quad_control.hs-boot
@@ -21,9 +21,14 @@
 --     Ratified
 --
 -- [__Extension and Version Dependencies__]
+--             
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
---     and
+--              and
+--             
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_vulkan_memory_model VK_KHR_vulkan_memory_model>
+--          or
+--         
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.2 Vulkan Version 1.2>
 --     and
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_shader_maximal_reconvergence VK_KHR_shader_maximal_reconvergence>
 --
@@ -91,7 +96,7 @@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-QuadControlKHR QuadControlKHR>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-QuadControlKHR QuadControlKHR>
 --
 -- == Version History
 --
@@ -106,7 +111,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_shader_quad_control Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_shader_quad_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_KHR_shader_relaxed_extended_instruction.hs b/src/Vulkan/Extensions/VK_KHR_shader_relaxed_extended_instruction.hs
--- a/src/Vulkan/Extensions/VK_KHR_shader_relaxed_extended_instruction.hs
+++ b/src/Vulkan/Extensions/VK_KHR_shader_relaxed_extended_instruction.hs
@@ -21,7 +21,9 @@
 --     Ratified
 --
 -- [__Extension and Version Dependencies__]
---     None
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
 --
 -- [__SPIR-V Dependencies__]
 --
@@ -91,7 +93,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_shader_relaxed_extended_instruction Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_shader_relaxed_extended_instruction Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -140,12 +142,21 @@
 -- 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. 'PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR'
--- /can/ also be used in the @pNext@ chain of
--- 'Vulkan.Core10.Device.DeviceCreateInfo' to selectively enable these
--- features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR', it /must/
+-- add an instance of the structure, with the desired feature members set
+-- to 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Extensions/VK_KHR_shader_relaxed_extended_instruction.hs-boot b/src/Vulkan/Extensions/VK_KHR_shader_relaxed_extended_instruction.hs-boot
--- a/src/Vulkan/Extensions/VK_KHR_shader_relaxed_extended_instruction.hs-boot
+++ b/src/Vulkan/Extensions/VK_KHR_shader_relaxed_extended_instruction.hs-boot
@@ -21,7 +21,9 @@
 --     Ratified
 --
 -- [__Extension and Version Dependencies__]
---     None
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
 --
 -- [__SPIR-V Dependencies__]
 --
@@ -91,7 +93,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_shader_relaxed_extended_instruction Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_shader_relaxed_extended_instruction Vulkan Specification>.
 --
 -- This 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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_shader_subgroup_extended_types Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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_rotate.hs b/src/Vulkan/Extensions/VK_KHR_shader_subgroup_rotate.hs
--- a/src/Vulkan/Extensions/VK_KHR_shader_subgroup_rotate.hs
+++ b/src/Vulkan/Extensions/VK_KHR_shader_subgroup_rotate.hs
@@ -21,12 +21,19 @@
 --     Ratified
 --
 -- [__Extension and Version Dependencies__]
---     None
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
 --
 -- [__SPIR-V Dependencies__]
 --
 --     -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/KHR/SPV_KHR_subgroup_rotate.html SPV_KHR_subgroup_rotate>
 --
+-- [__Deprecation State__]
+--
+--     -   /Promoted/ to
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.4-promotions Vulkan 1.4>
+--
 -- [__Contact__]
 --
 --     -   Kevin Petit
@@ -47,7 +54,7 @@
 --
 --     -   Tobias Hector, AMD
 --
---     -   John Leech, Khronos
+--     -   Jon Leech, Khronos
 --
 --     -   Matthew Netsch, Qualcomm
 --
@@ -78,27 +85,31 @@
 --
 -- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES_KHR'
+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES_KHR'
 --
 -- -   Extending
 --     'Vulkan.Core11.Enums.SubgroupFeatureFlagBits.SubgroupFeatureFlagBits':
 --
---     -   'Vulkan.Core11.Enums.SubgroupFeatureFlagBits.SUBGROUP_FEATURE_ROTATE_BIT_KHR'
+--     -   'SUBGROUP_FEATURE_ROTATE_BIT_KHR'
 --
---     -   'Vulkan.Core11.Enums.SubgroupFeatureFlagBits.SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT_KHR'
+--     -   'SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT_KHR'
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-GroupNonUniformRotateKHR GroupNonUniformRotateKHR>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-GroupNonUniformRotateKHR GroupNonUniformRotateKHR>
 --
+-- == Promotion to Vulkan 1.4
+--
+-- Functionality in this extension is included in core Vulkan 1.4 with the
+-- KHR suffix omitted. The original type, enum, and command names are still
+-- available as aliases of the core functionality.
+--
 -- == Version History
 --
 -- -   Revision 2, 2024-01-29 (Kévin Petit)
 --
---     -   Add
---         'Vulkan.Core11.Enums.SubgroupFeatureFlagBits.SUBGROUP_FEATURE_ROTATE_BIT_KHR'
---         and
---         'Vulkan.Core11.Enums.SubgroupFeatureFlagBits.SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT_KHR'
+--     -   Add 'SUBGROUP_FEATURE_ROTATE_BIT_KHR' and
+--         'SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT_KHR'
 --
 -- -   Revision 1, 2023-06-20 (Kévin Petit)
 --
@@ -111,111 +122,41 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_shader_subgroup_rotate Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_shader_subgroup_rotate 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_subgroup_rotate  ( PhysicalDeviceShaderSubgroupRotateFeaturesKHR(..)
+module Vulkan.Extensions.VK_KHR_shader_subgroup_rotate  ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES_KHR
+                                                        , pattern SUBGROUP_FEATURE_ROTATE_BIT_KHR
+                                                        , pattern SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT_KHR
+                                                        , PhysicalDeviceShaderSubgroupRotateFeaturesKHR
                                                         , KHR_SHADER_SUBGROUP_ROTATE_SPEC_VERSION
                                                         , pattern KHR_SHADER_SUBGROUP_ROTATE_SPEC_VERSION
                                                         , KHR_SHADER_SUBGROUP_ROTATE_EXTENSION_NAME
                                                         , pattern KHR_SHADER_SUBGROUP_ROTATE_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_SUBGROUP_ROTATE_FEATURES_KHR))
--- | VkPhysicalDeviceShaderSubgroupRotateFeaturesKHR - Structure describing
--- whether subgroup rotation is enabled
---
--- = Description
---
--- If the 'PhysicalDeviceShaderSubgroupRotateFeaturesKHR' 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. 'PhysicalDeviceShaderSubgroupRotateFeaturesKHR' /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_subgroup_rotate VK_KHR_shader_subgroup_rotate>,
--- 'Vulkan.Core10.FundamentalTypes.Bool32',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PhysicalDeviceShaderSubgroupRotateFeaturesKHR = PhysicalDeviceShaderSubgroupRotateFeaturesKHR
-  { -- | #features-shaderSubgroupRotate# @shaderSubgroupRotate@ specifies whether
-    -- shader modules /can/ declare the @GroupNonUniformRotateKHR@ capability.
-    shaderSubgroupRotate :: Bool
-  , -- | #features-shaderSubgroupRotateClustered# @shaderSubgroupRotateClustered@
-    -- specifies whether shader modules /can/ use the @ClusterSize@ operand to
-    -- @OpGroupNonUniformRotateKHR@.
-    shaderSubgroupRotateClustered :: Bool
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PhysicalDeviceShaderSubgroupRotateFeaturesKHR)
-#endif
-deriving instance Show PhysicalDeviceShaderSubgroupRotateFeaturesKHR
+import Vulkan.Core14.Promoted_From_VK_KHR_shader_subgroup_rotate (PhysicalDeviceShaderSubgroupRotateFeatures)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES))
+import Vulkan.Core11.Enums.SubgroupFeatureFlagBits (SubgroupFeatureFlags)
+import Vulkan.Core11.Enums.SubgroupFeatureFlagBits (SubgroupFeatureFlagBits(SUBGROUP_FEATURE_ROTATE_BIT))
+import Vulkan.Core11.Enums.SubgroupFeatureFlagBits (SubgroupFeatureFlags)
+import Vulkan.Core11.Enums.SubgroupFeatureFlagBits (SubgroupFeatureFlagBits(SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT))
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES
 
-instance ToCStruct PhysicalDeviceShaderSubgroupRotateFeaturesKHR where
-  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PhysicalDeviceShaderSubgroupRotateFeaturesKHR{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (shaderSubgroupRotate))
-    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (shaderSubgroupRotateClustered))
-    f
-  cStructSize = 24
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES_KHR)
-    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 PhysicalDeviceShaderSubgroupRotateFeaturesKHR where
-  peekCStruct p = do
-    shaderSubgroupRotate <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
-    shaderSubgroupRotateClustered <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
-    pure $ PhysicalDeviceShaderSubgroupRotateFeaturesKHR
-             (bool32ToBool shaderSubgroupRotate)
-             (bool32ToBool shaderSubgroupRotateClustered)
+-- No documentation found for TopLevel "VK_SUBGROUP_FEATURE_ROTATE_BIT_KHR"
+pattern SUBGROUP_FEATURE_ROTATE_BIT_KHR = SUBGROUP_FEATURE_ROTATE_BIT
 
-instance Storable PhysicalDeviceShaderSubgroupRotateFeaturesKHR where
-  sizeOf ~_ = 24
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
 
-instance Zero PhysicalDeviceShaderSubgroupRotateFeaturesKHR where
-  zero = PhysicalDeviceShaderSubgroupRotateFeaturesKHR
-           zero
-           zero
+-- No documentation found for TopLevel "VK_SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT_KHR"
+pattern SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT_KHR = SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT
+
+
+-- No documentation found for TopLevel "VkPhysicalDeviceShaderSubgroupRotateFeaturesKHR"
+type PhysicalDeviceShaderSubgroupRotateFeaturesKHR = PhysicalDeviceShaderSubgroupRotateFeatures
 
 
 type KHR_SHADER_SUBGROUP_ROTATE_SPEC_VERSION = 2
diff --git a/src/Vulkan/Extensions/VK_KHR_shader_subgroup_rotate.hs-boot b/src/Vulkan/Extensions/VK_KHR_shader_subgroup_rotate.hs-boot
deleted file mode 100644
--- a/src/Vulkan/Extensions/VK_KHR_shader_subgroup_rotate.hs-boot
+++ /dev/null
@@ -1,130 +0,0 @@
-{-# language CPP #-}
--- | = Name
---
--- VK_KHR_shader_subgroup_rotate - device extension
---
--- = VK_KHR_shader_subgroup_rotate
---
--- [__Name String__]
---     @VK_KHR_shader_subgroup_rotate@
---
--- [__Extension Type__]
---     Device extension
---
--- [__Registered Extension Number__]
---     417
---
--- [__Revision__]
---     2
---
--- [__Ratification Status__]
---     Ratified
---
--- [__Extension and Version Dependencies__]
---     None
---
--- [__SPIR-V Dependencies__]
---
---     -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/KHR/SPV_KHR_subgroup_rotate.html SPV_KHR_subgroup_rotate>
---
--- [__Contact__]
---
---     -   Kevin Petit
---         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_shader_subgroup_rotate] @kpet%0A*Here describe the issue or question you have about the VK_KHR_shader_subgroup_rotate extension* >
---
--- [__Extension Proposal__]
---     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_KHR_shader_subgroup_rotate.adoc VK_KHR_shader_subgroup_rotate>
---
--- [__Last Modified Date__]
---     2024-01-29
---
--- [__IP Status__]
---     No known IP claims.
---
--- [__Contributors__]
---
---     -   Kévin Petit, Arm Ltd.
---
---     -   Tobias Hector, AMD
---
---     -   John Leech, Khronos
---
---     -   Matthew Netsch, Qualcomm
---
---     -   Jan-Harald Fredriksen, Arm Ltd.
---
---     -   Graeme Leese, Broadcom
---
---     -   Tom Olson, Arm Ltd.
---
---     -   Spencer Fricke, LunarG Inc.
---
--- This extension adds support for the subgroup rotate instruction defined
--- in SPV_KHR_subgroup_rotate.
---
--- == New Structures
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
---     'Vulkan.Core10.Device.DeviceCreateInfo':
---
---     -   'PhysicalDeviceShaderSubgroupRotateFeaturesKHR'
---
--- == New Enum Constants
---
--- -   'KHR_SHADER_SUBGROUP_ROTATE_EXTENSION_NAME'
---
--- -   'KHR_SHADER_SUBGROUP_ROTATE_SPEC_VERSION'
---
--- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES_KHR'
---
--- -   Extending
---     'Vulkan.Core11.Enums.SubgroupFeatureFlagBits.SubgroupFeatureFlagBits':
---
---     -   'Vulkan.Core11.Enums.SubgroupFeatureFlagBits.SUBGROUP_FEATURE_ROTATE_BIT_KHR'
---
---     -   'Vulkan.Core11.Enums.SubgroupFeatureFlagBits.SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT_KHR'
---
--- == New SPIR-V Capabilities
---
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-GroupNonUniformRotateKHR GroupNonUniformRotateKHR>
---
--- == Version History
---
--- -   Revision 2, 2024-01-29 (Kévin Petit)
---
---     -   Add
---         'Vulkan.Core11.Enums.SubgroupFeatureFlagBits.SUBGROUP_FEATURE_ROTATE_BIT_KHR'
---         and
---         'Vulkan.Core11.Enums.SubgroupFeatureFlagBits.SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT_KHR'
---
--- -   Revision 1, 2023-06-20 (Kévin Petit)
---
---     -   Initial revision
---
--- == See Also
---
--- No cross-references are available
---
--- == Document Notes
---
--- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_shader_subgroup_rotate 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_subgroup_rotate  (PhysicalDeviceShaderSubgroupRotateFeaturesKHR) where
-
-import Vulkan.CStruct (FromCStruct)
-import Vulkan.CStruct (ToCStruct)
-import Data.Kind (Type)
-
-data PhysicalDeviceShaderSubgroupRotateFeaturesKHR
-
-instance ToCStruct PhysicalDeviceShaderSubgroupRotateFeaturesKHR
-instance Show PhysicalDeviceShaderSubgroupRotateFeaturesKHR
-
-instance FromCStruct PhysicalDeviceShaderSubgroupRotateFeaturesKHR
-
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
@@ -64,7 +64,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirv-spec Khronos SPIR-V Specification>).
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirv-spec Khronos SPIR-V Specification>).
 --
 -- == New Structures
 --
@@ -97,7 +97,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_shader_subgroup_uniform_control_flow Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -146,12 +146,21 @@
 -- 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. 'PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR'
--- /can/ also be used in the @pNext@ chain of
--- 'Vulkan.Core10.Device.DeviceCreateInfo' to selectively enable these
--- features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR', it /must/
+-- add an instance of the structure, with the desired feature members set
+-- to 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
 --
 -- = See Also
 --
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
@@ -64,7 +64,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirv-spec Khronos SPIR-V Specification>).
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirv-spec Khronos SPIR-V Specification>).
 --
 -- == New Structures
 --
@@ -97,7 +97,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_shader_subgroup_uniform_control_flow Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -112,7 +112,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_shader_terminate_invocation Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
diff --git a/src/Vulkan/Extensions/VK_KHR_shader_untyped_pointers.hs b/src/Vulkan/Extensions/VK_KHR_shader_untyped_pointers.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_KHR_shader_untyped_pointers.hs
@@ -0,0 +1,226 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_KHR_shader_untyped_pointers - device extension
+--
+-- = VK_KHR_shader_untyped_pointers
+--
+-- [__Name String__]
+--     @VK_KHR_shader_untyped_pointers@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     388
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--
+-- [__SPIR-V Dependencies__]
+--
+--     -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/KHR/SPV_KHR_untyped_pointers.html SPV_KHR_untyped_pointers>
+--
+-- [__Contact__]
+--
+--     -   Alan Baker
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_shader_untyped_pointers] @alan-baker%0A*Here describe the issue or question you have about the VK_KHR_shader_untyped_pointers extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_KHR_shader_untyped_pointers.adoc VK_KHR_shader_untyped_pointers>
+--
+-- [__Last Modified Date__]
+--     2024-03-26
+--
+-- [__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_untyped_pointers.html SPV_KHR_untyped_pointers>
+--         SPIR-V extension.
+--
+-- [__Contributors__]
+--
+--     -   Alan Baker, Google
+--
+--     -   Jan-Harald Fredriksen, Arm
+--
+--     -   Tom Olson, Arm
+--
+--     -   Spencer Fricke, LunarG
+--
+--     -   Shahbaz Youssefi, Google
+--
+--     -   Tobias Hector, AMD
+--
+-- This extension adds Vulkan support for the
+-- <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/KHR/SPV_KHR_untyped_pointers.html SPV_KHR_untyped_pointers>
+-- SPIR-V extension. It provides an alternative to strongly-typed pointers.
+-- Untyped pointers allow shader authors to reinterpret data accessed
+-- through memory and atomic instructions versus the data type declared in
+-- the variable without extra conversion instructions. Untyped pointers
+-- also provide an efficient translation from templated load\/store
+-- operations in high-level languages and simplify shaders that support
+-- operations, but not storage, on smaller data types (e.g. 16-bit
+-- floating-point types).
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceShaderUntypedPointersFeaturesKHR'
+--
+-- == New Enum Constants
+--
+-- -   'KHR_SHADER_UNTYPED_POINTERS_EXTENSION_NAME'
+--
+-- -   'KHR_SHADER_UNTYPED_POINTERS_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_UNTYPED_POINTERS_FEATURES_KHR'
+--
+-- == Version History
+--
+-- -   Revision 1, 2024-03-26 (Alan Baker)
+--
+--     -   Internal draft version
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_shader_untyped_pointers 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_untyped_pointers  ( PhysicalDeviceShaderUntypedPointersFeaturesKHR(..)
+                                                         , KHR_SHADER_UNTYPED_POINTERS_SPEC_VERSION
+                                                         , pattern KHR_SHADER_UNTYPED_POINTERS_SPEC_VERSION
+                                                         , KHR_SHADER_UNTYPED_POINTERS_EXTENSION_NAME
+                                                         , pattern KHR_SHADER_UNTYPED_POINTERS_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_UNTYPED_POINTERS_FEATURES_KHR))
+-- | VkPhysicalDeviceShaderUntypedPointersFeaturesKHR - Structure describing
+-- support for untyped pointers in shader by an implementation
+--
+-- = Members
+--
+-- The members of 'PhysicalDeviceShaderUntypedPointersFeaturesKHR' describe
+-- the following features:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceShaderUntypedPointersFeaturesKHR' structure is
+-- included in the @pNext@ chain of
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+-- it is filled with values indicating whether the features are supported.
+-- 'PhysicalDeviceShaderUntypedPointersFeaturesKHR' /can/ also be included
+-- in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
+-- enable the features.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_shader_untyped_pointers VK_KHR_shader_untyped_pointers>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceShaderUntypedPointersFeaturesKHR = PhysicalDeviceShaderUntypedPointersFeaturesKHR
+  { -- | #features-shaderUntypedPointers# @shaderUntypedPointers@ specifies
+    -- whether shader modules /can/ declare the @UntypedPointersKHR@ capability
+    -- and untyped pointers in any
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-resources-layout explicitly laid out storage class>.
+    shaderUntypedPointers :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceShaderUntypedPointersFeaturesKHR)
+#endif
+deriving instance Show PhysicalDeviceShaderUntypedPointersFeaturesKHR
+
+instance ToCStruct PhysicalDeviceShaderUntypedPointersFeaturesKHR where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceShaderUntypedPointersFeaturesKHR{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_UNTYPED_POINTERS_FEATURES_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (shaderUntypedPointers))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_UNTYPED_POINTERS_FEATURES_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceShaderUntypedPointersFeaturesKHR where
+  peekCStruct p = do
+    shaderUntypedPointers <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDeviceShaderUntypedPointersFeaturesKHR
+             (bool32ToBool shaderUntypedPointers)
+
+instance Storable PhysicalDeviceShaderUntypedPointersFeaturesKHR where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceShaderUntypedPointersFeaturesKHR where
+  zero = PhysicalDeviceShaderUntypedPointersFeaturesKHR
+           zero
+
+
+type KHR_SHADER_UNTYPED_POINTERS_SPEC_VERSION = 1
+
+-- No documentation found for TopLevel "VK_KHR_SHADER_UNTYPED_POINTERS_SPEC_VERSION"
+pattern KHR_SHADER_UNTYPED_POINTERS_SPEC_VERSION :: forall a . Integral a => a
+pattern KHR_SHADER_UNTYPED_POINTERS_SPEC_VERSION = 1
+
+
+type KHR_SHADER_UNTYPED_POINTERS_EXTENSION_NAME = "VK_KHR_shader_untyped_pointers"
+
+-- No documentation found for TopLevel "VK_KHR_SHADER_UNTYPED_POINTERS_EXTENSION_NAME"
+pattern KHR_SHADER_UNTYPED_POINTERS_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern KHR_SHADER_UNTYPED_POINTERS_EXTENSION_NAME = "VK_KHR_shader_untyped_pointers"
+
diff --git a/src/Vulkan/Extensions/VK_KHR_shader_untyped_pointers.hs-boot b/src/Vulkan/Extensions/VK_KHR_shader_untyped_pointers.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_KHR_shader_untyped_pointers.hs-boot
@@ -0,0 +1,122 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_KHR_shader_untyped_pointers - device extension
+--
+-- = VK_KHR_shader_untyped_pointers
+--
+-- [__Name String__]
+--     @VK_KHR_shader_untyped_pointers@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     388
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--
+-- [__SPIR-V Dependencies__]
+--
+--     -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/KHR/SPV_KHR_untyped_pointers.html SPV_KHR_untyped_pointers>
+--
+-- [__Contact__]
+--
+--     -   Alan Baker
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_shader_untyped_pointers] @alan-baker%0A*Here describe the issue or question you have about the VK_KHR_shader_untyped_pointers extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_KHR_shader_untyped_pointers.adoc VK_KHR_shader_untyped_pointers>
+--
+-- [__Last Modified Date__]
+--     2024-03-26
+--
+-- [__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_untyped_pointers.html SPV_KHR_untyped_pointers>
+--         SPIR-V extension.
+--
+-- [__Contributors__]
+--
+--     -   Alan Baker, Google
+--
+--     -   Jan-Harald Fredriksen, Arm
+--
+--     -   Tom Olson, Arm
+--
+--     -   Spencer Fricke, LunarG
+--
+--     -   Shahbaz Youssefi, Google
+--
+--     -   Tobias Hector, AMD
+--
+-- This extension adds Vulkan support for the
+-- <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/KHR/SPV_KHR_untyped_pointers.html SPV_KHR_untyped_pointers>
+-- SPIR-V extension. It provides an alternative to strongly-typed pointers.
+-- Untyped pointers allow shader authors to reinterpret data accessed
+-- through memory and atomic instructions versus the data type declared in
+-- the variable without extra conversion instructions. Untyped pointers
+-- also provide an efficient translation from templated load\/store
+-- operations in high-level languages and simplify shaders that support
+-- operations, but not storage, on smaller data types (e.g. 16-bit
+-- floating-point types).
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceShaderUntypedPointersFeaturesKHR'
+--
+-- == New Enum Constants
+--
+-- -   'KHR_SHADER_UNTYPED_POINTERS_EXTENSION_NAME'
+--
+-- -   'KHR_SHADER_UNTYPED_POINTERS_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_UNTYPED_POINTERS_FEATURES_KHR'
+--
+-- == Version History
+--
+-- -   Revision 1, 2024-03-26 (Alan Baker)
+--
+--     -   Internal draft version
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_shader_untyped_pointers 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_untyped_pointers  (PhysicalDeviceShaderUntypedPointersFeaturesKHR) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data PhysicalDeviceShaderUntypedPointersFeaturesKHR
+
+instance ToCStruct PhysicalDeviceShaderUntypedPointersFeaturesKHR
+instance Show PhysicalDeviceShaderUntypedPointersFeaturesKHR
+
+instance FromCStruct PhysicalDeviceShaderUntypedPointersFeaturesKHR
+
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
@@ -216,7 +216,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_shared_presentable_image Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -301,24 +301,28 @@
 --
 -- [<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.SUBOPTIMAL_KHR'
 --
--- [<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.SUCCESS'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DATE_KHR'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_SURFACE_LOST_KHR'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_shared_presentable_image VK_KHR_shared_presentable_image>,
@@ -345,7 +349,11 @@
 -- | VkSharedPresentSurfaceCapabilitiesKHR - Structure describing
 -- capabilities of a surface for shared presentation
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.SurfaceCapabilities2KHR'
 --
 -- = See Also
 --
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
@@ -216,7 +216,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_shared_presentable_image Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_spirv_1_4 Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -85,7 +85,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_storage_buffer_storage_class Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -114,6 +114,8 @@
 --
 -- -   'CompositeAlphaFlagsKHR'
 --
+-- -   'SurfaceTransformFlagsKHR'
+--
 -- == New Enum Constants
 --
 -- -   'KHR_SURFACE_EXTENSION_NAME'
@@ -166,8 +168,8 @@
 -- features) for the queries, Vulkan was released only with the
 -- 'Vulkan.Core10.Handles.PhysicalDevice' versions. Many cases can be
 -- resolved by a Valid Usage statement, and\/or by a separate @pNext@ chain
--- version of the query struct specific to a given extension or parameters,
--- via extensible versions of the queries:
+-- version of the query structure specific to a given extension or
+-- parameters, via extensible versions of the queries:
 -- 'Vulkan.Extensions.VK_EXT_full_screen_exclusive.getPhysicalDeviceSurfacePresentModes2EXT',
 -- 'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.getPhysicalDeviceSurfaceCapabilities2KHR',
 -- and
@@ -361,7 +363,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_surface Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -377,7 +379,7 @@
                                                          , PRESENT_MODE_MAILBOX_KHR
                                                          , PRESENT_MODE_FIFO_KHR
                                                          , PRESENT_MODE_FIFO_RELAXED_KHR
-                                                         , PRESENT_MODE_FIFO_LATEST_READY_EXT
+                                                         , PRESENT_MODE_FIFO_LATEST_READY_KHR
                                                          , PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR
                                                          , PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR
                                                          , ..
@@ -567,7 +569,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>).
+                     -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>).
                      ("allocator" ::: Maybe AllocationCallbacks)
                   -> io ()
 destroySurfaceKHR instance' surface allocator = liftIO . evalContT $ do
@@ -629,12 +631,16 @@
 --
 -- [<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_OUT_OF_HOST_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_SURFACE_LOST_KHR'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_surface VK_KHR_surface>,
@@ -679,10 +685,6 @@
 --
 -- == Valid Usage
 --
--- -   #VUID-vkGetPhysicalDeviceSurfaceCapabilitiesKHR-surface-06523#
---     @surface@ /must/ be a valid 'Vulkan.Extensions.Handles.SurfaceKHR'
---     handle
---
 -- -   #VUID-vkGetPhysicalDeviceSurfaceCapabilitiesKHR-surface-06211#
 --     @surface@ /must/ be supported by @physicalDevice@, as reported by
 --     'getPhysicalDeviceSurfaceSupportKHR' or an equivalent
@@ -715,12 +717,16 @@
 --
 -- [<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_OUT_OF_HOST_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_SURFACE_LOST_KHR'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_surface VK_KHR_surface>,
@@ -834,18 +840,22 @@
 --
 -- [<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.SUCCESS'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_SURFACE_LOST_KHR'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_surface VK_KHR_surface>,
@@ -960,18 +970,22 @@
 --
 -- [<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.SUCCESS'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_SURFACE_LOST_KHR'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_surface VK_KHR_surface>,
@@ -1092,7 +1106,7 @@
     -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlagBits' representing
     -- the ways the application /can/ use the presentable images of a swapchain
     -- created with 'PresentModeKHR' set to
-    -- 'PRESENT_MODE_FIFO_LATEST_READY_EXT', 'PRESENT_MODE_IMMEDIATE_KHR',
+    -- 'PRESENT_MODE_FIFO_LATEST_READY_KHR', 'PRESENT_MODE_IMMEDIATE_KHR',
     -- 'PRESENT_MODE_MAILBOX_KHR', 'PRESENT_MODE_FIFO_KHR' or
     -- 'PRESENT_MODE_FIFO_RELAXED_KHR' for the surface on the specified device.
     -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT'
@@ -1238,6 +1252,86 @@
 --
 -- = Description
 --
+-- -   'PRESENT_MODE_IMMEDIATE_KHR' specifies that the presentation engine
+--     does not wait for a vertical blanking period to update the current
+--     image, meaning this mode /may/ result in visible tearing. No
+--     internal queuing of presentation requests is needed, as the requests
+--     are applied immediately.
+--
+-- -   'PRESENT_MODE_MAILBOX_KHR' specifies that the presentation engine
+--     waits for the next vertical blanking period to update the current
+--     image. Tearing /cannot/ be observed. An internal single-entry queue
+--     is used to hold pending presentation requests. If the queue is full
+--     when a new presentation request is received, the new request
+--     replaces the existing entry, and any images associated with the
+--     prior entry become available for reuse by the application. One
+--     request is removed from the queue and processed during each vertical
+--     blanking period in which the queue is non-empty.
+--
+-- -   'PRESENT_MODE_FIFO_KHR' specifies that the presentation engine waits
+--     for the next vertical blanking period to update the current image.
+--     Tearing /cannot/ be observed. An internal queue is used to hold
+--     pending presentation requests. New requests are appended to the end
+--     of the queue, and one request is removed from the beginning of the
+--     queue and processed during each vertical blanking period in which
+--     the queue is non-empty. This is the only value of @presentMode@ that
+--     is /required/ to be supported.
+--
+-- -   'PRESENT_MODE_FIFO_RELAXED_KHR' specifies that the presentation
+--     engine generally waits for the next vertical blanking period to
+--     update the current image. If a vertical blanking period has already
+--     passed since the last update of the current image then the
+--     presentation engine does not wait for another vertical blanking
+--     period for the update, meaning this mode /may/ result in visible
+--     tearing in this case. This mode is useful for reducing visual
+--     stutter with an application that will mostly present a new image
+--     before the next vertical blanking period, but may occasionally be
+--     late, and present a new image just after the next vertical blanking
+--     period. An internal queue is used to hold pending presentation
+--     requests. New requests are appended to the end of the queue, and one
+--     request is removed from the beginning of the queue and processed
+--     during or after each vertical blanking period in which the queue is
+--     non-empty.
+--
+-- -   'PRESENT_MODE_FIFO_LATEST_READY_KHR' specifies that the presentation
+--     engine waits for the next vertical blanking period to update the
+--     current image. Tearing /cannot/ be observed. An internal queue is
+--     used to hold pending presentation requests. New requests are
+--     appended to the end of the queue. At each vertical blanking period,
+--     the presentation engine dequeues all successive requests that are
+--     ready to be presented from the beginning of the queue. If using the
+--     @VK_GOOGLE_display_timing@ extension or the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-presentAtAbsoluteTime presentAtAbsoluteTime>
+--     feature to provide a target present time, the presentation engine
+--     checks the specified time for each image. If the target present time
+--     is less-than or equal-to the current time, the presentation engine
+--     dequeues the image and checks the next one. The image of the last
+--     dequeued request is presented. The other dequeued requests are
+--     dropped.
+--
+-- -   'PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR' specifies that the
+--     presentation engine and application have concurrent access to a
+--     single image, which is referred to as a /shared presentable image/.
+--     The presentation engine is only required to update the current image
+--     after a new presentation request is received. Therefore the
+--     application /must/ make a presentation request whenever an update is
+--     required. However, the presentation engine /may/ update the current
+--     image at any point, meaning this mode /may/ result in visible
+--     tearing.
+--
+-- -   'PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR' specifies that the
+--     presentation engine and application have concurrent access to a
+--     single image, which is referred to as a /shared presentable image/.
+--     The presentation engine periodically updates the current image on
+--     its regular refresh cycle. The application is only required to make
+--     one initial presentation request, after which the presentation
+--     engine /must/ update the current image without any need for further
+--     presentation requests. The application /can/ indicate the image
+--     contents have been updated by making a presentation request, but
+--     this does not guarantee the timing of when it will be updated. This
+--     mode /may/ result in visible tearing if rendering to the image is
+--     not timed correctly.
+--
 -- The supported
 -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlagBits' of the
 -- presentable images of a swapchain created for a surface /may/ differ
@@ -1255,7 +1349,7 @@
 -- +----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+
 -- | 'PRESENT_MODE_FIFO_RELAXED_KHR'              | 'SurfaceCapabilitiesKHR'::@supportedUsageFlags@                                                                             |
 -- +----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+
--- | 'PRESENT_MODE_FIFO_LATEST_READY_EXT'         | 'SurfaceCapabilitiesKHR'::@supportedUsageFlags@                                                                             |
+-- | 'PRESENT_MODE_FIFO_LATEST_READY_KHR'         | 'SurfaceCapabilitiesKHR'::@supportedUsageFlags@                                                                             |
 -- +----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+
 -- | 'PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR'     | 'Vulkan.Extensions.VK_KHR_shared_presentable_image.SharedPresentSurfaceCapabilitiesKHR'::@sharedPresentSupportedUsageFlags@ |
 -- +----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+
@@ -1275,95 +1369,35 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_surface VK_KHR_surface>,
 -- 'Vulkan.Extensions.VK_NV_low_latency2.LatencySurfaceCapabilitiesNV',
--- 'Vulkan.Extensions.VK_EXT_surface_maintenance1.SurfacePresentModeCompatibilityEXT',
--- 'Vulkan.Extensions.VK_EXT_surface_maintenance1.SurfacePresentModeEXT',
+-- 'Vulkan.Extensions.VK_KHR_surface_maintenance1.SurfacePresentModeCompatibilityKHR',
+-- 'Vulkan.Extensions.VK_KHR_surface_maintenance1.SurfacePresentModeKHR',
 -- 'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR',
--- 'Vulkan.Extensions.VK_EXT_swapchain_maintenance1.SwapchainPresentModeInfoEXT',
--- 'Vulkan.Extensions.VK_EXT_swapchain_maintenance1.SwapchainPresentModesCreateInfoEXT',
+-- 'Vulkan.Extensions.VK_KHR_swapchain_maintenance1.SwapchainPresentModeInfoKHR',
+-- 'Vulkan.Extensions.VK_KHR_swapchain_maintenance1.SwapchainPresentModesCreateInfoKHR',
 -- 'Vulkan.Extensions.VK_EXT_full_screen_exclusive.getPhysicalDeviceSurfacePresentModes2EXT',
 -- 'getPhysicalDeviceSurfacePresentModesKHR'
 newtype PresentModeKHR = PresentModeKHR Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'PRESENT_MODE_IMMEDIATE_KHR' specifies that the presentation engine does
--- not wait for a vertical blanking period to update the current image,
--- meaning this mode /may/ result in visible tearing. No internal queuing
--- of presentation requests is needed, as the requests are applied
--- immediately.
+-- No documentation found for Nested "VkPresentModeKHR" "VK_PRESENT_MODE_IMMEDIATE_KHR"
 pattern PRESENT_MODE_IMMEDIATE_KHR = PresentModeKHR 0
 
--- | 'PRESENT_MODE_MAILBOX_KHR' specifies that the presentation engine waits
--- for the next vertical blanking period to update the current image.
--- Tearing /cannot/ be observed. An internal single-entry queue is used to
--- hold pending presentation requests. If the queue is full when a new
--- presentation request is received, the new request replaces the existing
--- entry, and any images associated with the prior entry become available
--- for reuse by the application. One request is removed from the queue and
--- processed during each vertical blanking period in which the queue is
--- non-empty.
+-- No documentation found for Nested "VkPresentModeKHR" "VK_PRESENT_MODE_MAILBOX_KHR"
 pattern PRESENT_MODE_MAILBOX_KHR = PresentModeKHR 1
 
--- | 'PRESENT_MODE_FIFO_KHR' specifies that the presentation engine waits for
--- the next vertical blanking period to update the current image. Tearing
--- /cannot/ be observed. An internal queue is used to hold pending
--- presentation requests. New requests are appended to the end of the
--- queue, and one request is removed from the beginning of the queue and
--- processed during each vertical blanking period in which the queue is
--- non-empty. This is the only value of @presentMode@ that is /required/ to
--- be supported.
+-- No documentation found for Nested "VkPresentModeKHR" "VK_PRESENT_MODE_FIFO_KHR"
 pattern PRESENT_MODE_FIFO_KHR = PresentModeKHR 2
 
--- | 'PRESENT_MODE_FIFO_RELAXED_KHR' specifies that the presentation engine
--- generally waits for the next vertical blanking period to update the
--- current image. If a vertical blanking period has already passed since
--- the last update of the current image then the presentation engine does
--- not wait for another vertical blanking period for the update, meaning
--- this mode /may/ result in visible tearing in this case. This mode is
--- useful for reducing visual stutter with an application that will mostly
--- present a new image before the next vertical blanking period, but may
--- occasionally be late, and present a new image just after the next
--- vertical blanking period. An internal queue is used to hold pending
--- presentation requests. New requests are appended to the end of the
--- queue, and one request is removed from the beginning of the queue and
--- processed during or after each vertical blanking period in which the
--- queue is non-empty.
+-- No documentation found for Nested "VkPresentModeKHR" "VK_PRESENT_MODE_FIFO_RELAXED_KHR"
 pattern PRESENT_MODE_FIFO_RELAXED_KHR = PresentModeKHR 3
 
--- | 'PRESENT_MODE_FIFO_LATEST_READY_EXT' specifies that the presentation
--- engine waits for the next vertical blanking period to update the current
--- image. Tearing /cannot/ be observed. An internal queue is used to hold
--- pending presentation requests. New requests are appended to the end of
--- the queue. At each vertical blanking period, the presentation engine
--- dequeues all successive requests that are ready to be presented from the
--- beginning of the queue. If using @VK_GOOGLE_display_timing@ to provide a
--- target present time, the presentation engine will check the specified
--- time for each image. If the target present time is less-than or equal-to
--- the current time, the presentation engine will dequeue the image and
--- check the next one. The image of the last dequeued request will be
--- presented. The other dequeued requests will be dropped.
-pattern PRESENT_MODE_FIFO_LATEST_READY_EXT = PresentModeKHR 1000361000
+-- No documentation found for Nested "VkPresentModeKHR" "VK_PRESENT_MODE_FIFO_LATEST_READY_KHR"
+pattern PRESENT_MODE_FIFO_LATEST_READY_KHR = PresentModeKHR 1000361000
 
--- | 'PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR' specifies that the
--- presentation engine and application have concurrent access to a single
--- image, which is referred to as a /shared presentable image/. The
--- presentation engine periodically updates the current image on its
--- regular refresh cycle. The application is only required to make one
--- initial presentation request, after which the presentation engine /must/
--- update the current image without any need for further presentation
--- requests. The application /can/ indicate the image contents have been
--- updated by making a presentation request, but this does not guarantee
--- the timing of when it will be updated. This mode /may/ result in visible
--- tearing if rendering to the image is not timed correctly.
+-- No documentation found for Nested "VkPresentModeKHR" "VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR"
 pattern PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR = PresentModeKHR 1000111001
 
--- | 'PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR' specifies that the presentation
--- engine and application have concurrent access to a single image, which
--- is referred to as a /shared presentable image/. The presentation engine
--- is only required to update the current image after a new presentation
--- request is received. Therefore the application /must/ make a
--- presentation request whenever an update is required. However, the
--- presentation engine /may/ update the current image at any point, meaning
--- this mode /may/ result in visible tearing.
+-- No documentation found for Nested "VkPresentModeKHR" "VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR"
 pattern PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR = PresentModeKHR 1000111000
 
 {-# COMPLETE
@@ -1371,7 +1405,7 @@
   , PRESENT_MODE_MAILBOX_KHR
   , PRESENT_MODE_FIFO_KHR
   , PRESENT_MODE_FIFO_RELAXED_KHR
-  , PRESENT_MODE_FIFO_LATEST_READY_EXT
+  , PRESENT_MODE_FIFO_LATEST_READY_KHR
   , PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR
   , PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR ::
     PresentModeKHR
@@ -1390,8 +1424,8 @@
   , (PRESENT_MODE_FIFO_KHR, "FIFO_KHR")
   , (PRESENT_MODE_FIFO_RELAXED_KHR, "FIFO_RELAXED_KHR")
   ,
-    ( PRESENT_MODE_FIFO_LATEST_READY_EXT
-    , "FIFO_LATEST_READY_EXT"
+    ( PRESENT_MODE_FIFO_LATEST_READY_KHR
+    , "FIFO_LATEST_READY_KHR"
     )
   ,
     ( PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR
@@ -1424,6 +1458,61 @@
 --
 -- = Description
 --
+-- -   'COLOR_SPACE_SRGB_NONLINEAR_KHR' specifies support for the images in
+--     sRGB color space, encoded according to the sRGB specification.
+--
+-- -   'COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT' specifies support for the
+--     images in Display-P3 color space, encoded using a Display-P3
+--     transfer function.
+--
+-- -   'COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT' specifies support for the
+--     images in extended sRGB color space, encoded using a linear transfer
+--     function.
+--
+-- -   'COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT' specifies support for the
+--     images in extended sRGB color space, encoded according to the scRGB
+--     specification.
+--
+-- -   'COLOR_SPACE_DISPLAY_P3_LINEAR_EXT' specifies support for the images
+--     in Display-P3 color space, encoded using a linear transfer function.
+--
+-- -   'COLOR_SPACE_DCI_P3_NONLINEAR_EXT' specifies support for the images
+--     in DCI-P3 color space, encoded according to the DCI-P3
+--     specification. Note that values in such an image are interpreted as
+--     XYZ encoded color data by the presentation engine.
+--
+-- -   'COLOR_SPACE_BT709_LINEAR_EXT' specifies support for the images in
+--     BT709 color space, encoded using a linear transfer function.
+--
+-- -   'COLOR_SPACE_BT709_NONLINEAR_EXT' specifies support for the images
+--     in BT709 color space, encoded according to the BT709 specification.
+--
+-- -   'COLOR_SPACE_BT2020_LINEAR_EXT' specifies support for the images in
+--     BT2020 color space, encoded using a linear transfer function.
+--
+-- -   'COLOR_SPACE_HDR10_ST2084_EXT' specifies support for the images in
+--     HDR10 (BT2020) color space, encoded according to SMPTE ST2084
+--     Perceptual Quantizer (PQ) specification.
+--
+-- -   'COLOR_SPACE_HDR10_HLG_EXT' specifies support for the images in
+--     HDR10 (BT2020) color space, encoded according to the Hybrid Log
+--     Gamma (HLG) specification.
+--
+-- -   'COLOR_SPACE_ADOBERGB_LINEAR_EXT' specifies support for images in
+--     Adobe RGB color space, encoded using a linear transfer function.
+--
+-- -   'COLOR_SPACE_ADOBERGB_NONLINEAR_EXT' specifies support for the
+--     images in Adobe RGB color space, encoded according to the Adobe RGB
+--     specification (approximately Gamma 2.2).
+--
+-- -   'COLOR_SPACE_PASS_THROUGH_EXT' specifies that color components are
+--     used “as is”. This is intended to allow applications to supply data
+--     for color spaces not described here.
+--
+-- -   'COLOR_SPACE_DISPLAY_NATIVE_AMD' specifies support for the display’s
+--     native color space. This matches the color space expectations of
+--     AMD’s FreeSync2 standard, for displays supporting it.
+--
 -- In the initial release of the @VK_KHR_surface@ and @VK_KHR_swapchain@
 -- extensions, the token 'COLORSPACE_SRGB_NONLINEAR_KHR' was used. Starting
 -- in the 2016-05-13 updates to the extension branches, matching release
@@ -1435,7 +1524,7 @@
 -- was misnamed
 -- 'Vulkan.Extensions.VK_EXT_swapchain_colorspace.COLOR_SPACE_DCI_P3_LINEAR_EXT'.
 -- This has been updated to indicate that it uses RGB color encoding, not
--- XYZ. The old name is deprecated but is maintained for backwards
+-- XYZ. The old name is legacy but is maintained for backwards
 -- compatibility.
 --
 -- In older versions of the @VK_EXT_swapchain_colorspace@ extension,
@@ -1445,19 +1534,24 @@
 -- process the image. However, Dolby Vision profile 8.4 describes an
 -- encoding using the Hybrid Log Gamma (HLG) OETF, and there is no
 -- swapchain extension for signaling Dolby Vision metadata to be used by a
--- proprietary OOTF. This enum is deprecated but is maintained for
--- backwards compatibility.
---
--- Note
+-- proprietary OOTF. This enum is legacy but is maintained for backwards
+-- compatibility.
 --
 -- For a traditional “Linear” or non-gamma transfer function color space
 -- use 'COLOR_SPACE_PASS_THROUGH_EXT'.
 --
+-- On Wayland, 'COLOR_SPACE_PASS_THROUGH_EXT' can be used to disable color
+-- management by the WSI on a surface, which makes it possible for the
+-- application to create a @wp_color_management_surface_v1@ object without
+-- triggering a @surface_exists@ protocol error.
+--
+-- See 'Vulkan.Extensions.VK_KHR_wayland_surface.createWaylandSurfaceKHR'
+--
 -- The presentation engine interprets the pixel values of the R, G, and B
 -- components as having been encoded using an appropriate transfer
 -- function. Applications /should/ ensure that the appropriate transfer
 -- function has been applied.
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#textures-output-format-conversion Textures Output Format Conversion>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#images-texel-encode Texel encode>
 -- requires that all implementations implicitly apply the sRGB EOTF-1 on R,
 -- G, and B components when shaders write to an sRGB pixel format image,
 -- which is useful for sRGB color spaces. For sRGB color spaces with other
@@ -1508,7 +1602,7 @@
 --
 -- The transfer functions are described in the “Transfer Functions” chapter
 -- of the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#data-format Khronos Data Format Specification>.
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#data-format Khronos Data Format Specification>.
 --
 -- Except Display-P3 OETF, which is:
 --
@@ -1533,75 +1627,52 @@
 newtype ColorSpaceKHR = ColorSpaceKHR Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'COLOR_SPACE_SRGB_NONLINEAR_KHR' specifies support for the images in
--- sRGB color space, encoded according to the sRGB specification.
+-- No documentation found for Nested "VkColorSpaceKHR" "VK_COLOR_SPACE_SRGB_NONLINEAR_KHR"
 pattern COLOR_SPACE_SRGB_NONLINEAR_KHR = ColorSpaceKHR 0
 
--- | 'COLOR_SPACE_DISPLAY_NATIVE_AMD' specifies support for the display’s
--- native color space. This matches the color space expectations of AMD’s
--- FreeSync2 standard, for displays supporting it.
+-- No documentation found for Nested "VkColorSpaceKHR" "VK_COLOR_SPACE_DISPLAY_NATIVE_AMD"
 pattern COLOR_SPACE_DISPLAY_NATIVE_AMD = ColorSpaceKHR 1000213000
 
--- | 'COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT' specifies support for the
--- images in extended sRGB color space, encoded according to the scRGB
--- specification.
+-- No documentation found for Nested "VkColorSpaceKHR" "VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT"
 pattern COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT = ColorSpaceKHR 1000104014
 
--- | 'COLOR_SPACE_PASS_THROUGH_EXT' specifies that color components are used
--- “as is”. This is intended to allow applications to supply data for color
--- spaces not described here.
+-- No documentation found for Nested "VkColorSpaceKHR" "VK_COLOR_SPACE_PASS_THROUGH_EXT"
 pattern COLOR_SPACE_PASS_THROUGH_EXT = ColorSpaceKHR 1000104013
 
--- | 'COLOR_SPACE_ADOBERGB_NONLINEAR_EXT' specifies support for the images in
--- Adobe RGB color space, encoded according to the Adobe RGB specification
--- (approximately Gamma 2.2).
+-- No documentation found for Nested "VkColorSpaceKHR" "VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT"
 pattern COLOR_SPACE_ADOBERGB_NONLINEAR_EXT = ColorSpaceKHR 1000104012
 
--- | 'COLOR_SPACE_ADOBERGB_LINEAR_EXT' specifies support for images in Adobe
--- RGB color space, encoded using a linear transfer function.
+-- No documentation found for Nested "VkColorSpaceKHR" "VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT"
 pattern COLOR_SPACE_ADOBERGB_LINEAR_EXT = ColorSpaceKHR 1000104011
 
--- | 'COLOR_SPACE_HDR10_HLG_EXT' specifies support for the images in HDR10
--- (BT2020) color space, encoded according to the Hybrid Log Gamma (HLG)
--- specification.
+-- No documentation found for Nested "VkColorSpaceKHR" "VK_COLOR_SPACE_HDR10_HLG_EXT"
 pattern COLOR_SPACE_HDR10_HLG_EXT = ColorSpaceKHR 1000104010
 
 -- No documentation found for Nested "VkColorSpaceKHR" "VK_COLOR_SPACE_DOLBYVISION_EXT"
 pattern COLOR_SPACE_DOLBYVISION_EXT = ColorSpaceKHR 1000104009
 
--- | 'COLOR_SPACE_HDR10_ST2084_EXT' specifies support for the images in HDR10
--- (BT2020) color space, encoded according to SMPTE ST2084 Perceptual
--- Quantizer (PQ) specification.
+-- No documentation found for Nested "VkColorSpaceKHR" "VK_COLOR_SPACE_HDR10_ST2084_EXT"
 pattern COLOR_SPACE_HDR10_ST2084_EXT = ColorSpaceKHR 1000104008
 
--- | 'COLOR_SPACE_BT2020_LINEAR_EXT' specifies support for the images in
--- BT2020 color space, encoded using a linear transfer function.
+-- No documentation found for Nested "VkColorSpaceKHR" "VK_COLOR_SPACE_BT2020_LINEAR_EXT"
 pattern COLOR_SPACE_BT2020_LINEAR_EXT = ColorSpaceKHR 1000104007
 
--- | 'COLOR_SPACE_BT709_NONLINEAR_EXT' specifies support for the images in
--- BT709 color space, encoded according to the BT709 specification.
+-- No documentation found for Nested "VkColorSpaceKHR" "VK_COLOR_SPACE_BT709_NONLINEAR_EXT"
 pattern COLOR_SPACE_BT709_NONLINEAR_EXT = ColorSpaceKHR 1000104006
 
--- | 'COLOR_SPACE_BT709_LINEAR_EXT' specifies support for the images in BT709
--- color space, encoded using a linear transfer function.
+-- No documentation found for Nested "VkColorSpaceKHR" "VK_COLOR_SPACE_BT709_LINEAR_EXT"
 pattern COLOR_SPACE_BT709_LINEAR_EXT = ColorSpaceKHR 1000104005
 
--- | 'COLOR_SPACE_DCI_P3_NONLINEAR_EXT' specifies support for the images in
--- DCI-P3 color space, encoded according to the DCI-P3 specification. Note
--- that values in such an image are interpreted as XYZ encoded color data
--- by the presentation engine.
+-- No documentation found for Nested "VkColorSpaceKHR" "VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT"
 pattern COLOR_SPACE_DCI_P3_NONLINEAR_EXT = ColorSpaceKHR 1000104004
 
--- | 'COLOR_SPACE_DISPLAY_P3_LINEAR_EXT' specifies support for the images in
--- Display-P3 color space, encoded using a linear transfer function.
+-- No documentation found for Nested "VkColorSpaceKHR" "VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT"
 pattern COLOR_SPACE_DISPLAY_P3_LINEAR_EXT = ColorSpaceKHR 1000104003
 
--- | 'COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT' specifies support for the images
--- in extended sRGB color space, encoded using a linear transfer function.
+-- No documentation found for Nested "VkColorSpaceKHR" "VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT"
 pattern COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT = ColorSpaceKHR 1000104002
 
--- | 'COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT' specifies support for the images
--- in Display-P3 color space, encoded using a Display-P3 transfer function.
+-- No documentation found for Nested "VkColorSpaceKHR" "VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT"
 pattern COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT = ColorSpaceKHR 1000104001
 
 {-# COMPLETE
@@ -1706,6 +1777,30 @@
 --
 -- These values are described as follows:
 --
+-- -   'COMPOSITE_ALPHA_OPAQUE_BIT_KHR': The alpha component, if it exists,
+--     of the images is ignored in the compositing process. Instead, the
+--     image is treated as if it has a constant alpha of 1.0.
+--
+-- -   'COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR': The alpha component, if it
+--     exists, of the images is respected in the compositing process. The
+--     non-alpha components of the image are expected to already be
+--     multiplied by the alpha component by the application.
+--
+-- -   'COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR': The alpha component, if
+--     it exists, of the images is respected in the compositing process.
+--     The non-alpha components of the image are not expected to already be
+--     multiplied by the alpha component by the application; instead, the
+--     compositor will multiply the non-alpha components of the image by
+--     the alpha component during compositing.
+--
+-- -   'COMPOSITE_ALPHA_INHERIT_BIT_KHR': The way in which the presentation
+--     engine treats the alpha component in the images is unknown to the
+--     Vulkan API. Instead, the application is responsible for setting the
+--     composite alpha blending mode using native window system commands.
+--     If the application does not set the blending mode using native
+--     window system commands, then a platform-specific default will be
+--     used.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_surface VK_KHR_surface>,
@@ -1714,31 +1809,16 @@
 newtype CompositeAlphaFlagBitsKHR = CompositeAlphaFlagBitsKHR Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'COMPOSITE_ALPHA_OPAQUE_BIT_KHR': The alpha component, if it exists, of
--- the images is ignored in the compositing process. Instead, the image is
--- treated as if it has a constant alpha of 1.0.
+-- No documentation found for Nested "VkCompositeAlphaFlagBitsKHR" "VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR"
 pattern COMPOSITE_ALPHA_OPAQUE_BIT_KHR = CompositeAlphaFlagBitsKHR 0x00000001
 
--- | 'COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR': The alpha component, if it
--- exists, of the images is respected in the compositing process. The
--- non-alpha components of the image are expected to already be multiplied
--- by the alpha component by the application.
+-- No documentation found for Nested "VkCompositeAlphaFlagBitsKHR" "VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR"
 pattern COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR = CompositeAlphaFlagBitsKHR 0x00000002
 
--- | 'COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR': The alpha component, if it
--- exists, of the images is respected in the compositing process. The
--- non-alpha components of the image are not expected to already be
--- multiplied by the alpha component by the application; instead, the
--- compositor will multiply the non-alpha components of the image by the
--- alpha component during compositing.
+-- No documentation found for Nested "VkCompositeAlphaFlagBitsKHR" "VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR"
 pattern COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR = CompositeAlphaFlagBitsKHR 0x00000004
 
--- | 'COMPOSITE_ALPHA_INHERIT_BIT_KHR': The way in which the presentation
--- engine treats the alpha component in the images is unknown to the Vulkan
--- API. Instead, the application is responsible for setting the composite
--- alpha blending mode using native window system commands. If the
--- application does not set the blending mode using native window system
--- commands, then a platform-specific default will be used.
+-- No documentation found for Nested "VkCompositeAlphaFlagBitsKHR" "VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR"
 pattern COMPOSITE_ALPHA_INHERIT_BIT_KHR = CompositeAlphaFlagBitsKHR 0x00000008
 
 conNameCompositeAlphaFlagBitsKHR :: String
@@ -1789,6 +1869,39 @@
 -- | VkSurfaceTransformFlagBitsKHR - Presentation transforms supported on a
 -- device
 --
+-- = Description
+--
+-- -   'SURFACE_TRANSFORM_IDENTITY_BIT_KHR' specifies that image content is
+--     presented without being transformed.
+--
+-- -   'SURFACE_TRANSFORM_ROTATE_90_BIT_KHR' specifies that image content
+--     is rotated 90 degrees clockwise.
+--
+-- -   'SURFACE_TRANSFORM_ROTATE_180_BIT_KHR' specifies that image content
+--     is rotated 180 degrees clockwise.
+--
+-- -   'SURFACE_TRANSFORM_ROTATE_270_BIT_KHR' specifies that image content
+--     is rotated 270 degrees clockwise.
+--
+-- -   'SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR' specifies that image
+--     content is mirrored horizontally.
+--
+-- -   'SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR' specifies
+--     that image content is mirrored horizontally, then rotated 90 degrees
+--     clockwise.
+--
+-- -   'SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR' specifies
+--     that image content is mirrored horizontally, then rotated 180
+--     degrees clockwise.
+--
+-- -   'SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR' specifies
+--     that image content is mirrored horizontally, then rotated 270
+--     degrees clockwise.
+--
+-- -   'SURFACE_TRANSFORM_INHERIT_BIT_KHR' specifies that the presentation
+--     transform is not specified, and is instead determined by
+--     platform-specific considerations and mechanisms outside Vulkan.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_surface VK_KHR_surface>,
@@ -1802,44 +1915,31 @@
 newtype SurfaceTransformFlagBitsKHR = SurfaceTransformFlagBitsKHR Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'SURFACE_TRANSFORM_IDENTITY_BIT_KHR' specifies that image content is
--- presented without being transformed.
+-- No documentation found for Nested "VkSurfaceTransformFlagBitsKHR" "VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR"
 pattern SURFACE_TRANSFORM_IDENTITY_BIT_KHR = SurfaceTransformFlagBitsKHR 0x00000001
 
--- | 'SURFACE_TRANSFORM_ROTATE_90_BIT_KHR' specifies that image content is
--- rotated 90 degrees clockwise.
+-- No documentation found for Nested "VkSurfaceTransformFlagBitsKHR" "VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR"
 pattern SURFACE_TRANSFORM_ROTATE_90_BIT_KHR = SurfaceTransformFlagBitsKHR 0x00000002
 
--- | 'SURFACE_TRANSFORM_ROTATE_180_BIT_KHR' specifies that image content is
--- rotated 180 degrees clockwise.
+-- No documentation found for Nested "VkSurfaceTransformFlagBitsKHR" "VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR"
 pattern SURFACE_TRANSFORM_ROTATE_180_BIT_KHR = SurfaceTransformFlagBitsKHR 0x00000004
 
--- | 'SURFACE_TRANSFORM_ROTATE_270_BIT_KHR' specifies that image content is
--- rotated 270 degrees clockwise.
+-- No documentation found for Nested "VkSurfaceTransformFlagBitsKHR" "VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR"
 pattern SURFACE_TRANSFORM_ROTATE_270_BIT_KHR = SurfaceTransformFlagBitsKHR 0x00000008
 
--- | 'SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR' specifies that image
--- content is mirrored horizontally.
+-- No documentation found for Nested "VkSurfaceTransformFlagBitsKHR" "VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR"
 pattern SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR = SurfaceTransformFlagBitsKHR 0x00000010
 
--- | 'SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR' specifies that
--- image content is mirrored horizontally, then rotated 90 degrees
--- clockwise.
+-- No documentation found for Nested "VkSurfaceTransformFlagBitsKHR" "VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR"
 pattern SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR = SurfaceTransformFlagBitsKHR 0x00000020
 
--- | 'SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR' specifies that
--- image content is mirrored horizontally, then rotated 180 degrees
--- clockwise.
+-- No documentation found for Nested "VkSurfaceTransformFlagBitsKHR" "VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR"
 pattern SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR = SurfaceTransformFlagBitsKHR 0x00000040
 
--- | 'SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR' specifies that
--- image content is mirrored horizontally, then rotated 270 degrees
--- clockwise.
+-- No documentation found for Nested "VkSurfaceTransformFlagBitsKHR" "VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR"
 pattern SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR = SurfaceTransformFlagBitsKHR 0x00000080
 
--- | 'SURFACE_TRANSFORM_INHERIT_BIT_KHR' specifies that the presentation
--- transform is not specified, and is instead determined by
--- platform-specific considerations and mechanisms outside Vulkan.
+-- No documentation found for Nested "VkSurfaceTransformFlagBitsKHR" "VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR"
 pattern SURFACE_TRANSFORM_INHERIT_BIT_KHR = SurfaceTransformFlagBitsKHR 0x00000100
 
 conNameSurfaceTransformFlagBitsKHR :: String
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
@@ -114,6 +114,8 @@
 --
 -- -   'CompositeAlphaFlagsKHR'
 --
+-- -   'SurfaceTransformFlagsKHR'
+--
 -- == New Enum Constants
 --
 -- -   'KHR_SURFACE_EXTENSION_NAME'
@@ -166,8 +168,8 @@
 -- features) for the queries, Vulkan was released only with the
 -- 'Vulkan.Core10.Handles.PhysicalDevice' versions. Many cases can be
 -- resolved by a Valid Usage statement, and\/or by a separate @pNext@ chain
--- version of the query struct specific to a given extension or parameters,
--- via extensible versions of the queries:
+-- version of the query structure specific to a given extension or
+-- parameters, via extensible versions of the queries:
 -- 'Vulkan.Extensions.VK_EXT_full_screen_exclusive.getPhysicalDeviceSurfacePresentModes2EXT',
 -- 'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.getPhysicalDeviceSurfaceCapabilities2KHR',
 -- and
@@ -361,7 +363,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_surface Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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_maintenance1.hs b/src/Vulkan/Extensions/VK_KHR_surface_maintenance1.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_KHR_surface_maintenance1.hs
@@ -0,0 +1,724 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_KHR_surface_maintenance1 - instance extension
+--
+-- = VK_KHR_surface_maintenance1
+--
+-- [__Name String__]
+--     @VK_KHR_surface_maintenance1@
+--
+-- [__Extension Type__]
+--     Instance extension
+--
+-- [__Registered Extension Number__]
+--     487
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_surface VK_KHR_surface>
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_surface_capabilities2 VK_KHR_get_surface_capabilities2>
+--
+-- [__Contact__]
+--
+--     -   Shahbaz Youssefi
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_surface_maintenance1] @syoussefi%0A*Here describe the issue or question you have about the VK_KHR_surface_maintenance1 extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_KHR_surface_maintenance1.adoc VK_KHR_surface_maintenance1>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2025-03-31
+--
+-- [__Contributors__]
+--
+--     -   James Jones, NVIDIA
+--
+--     -   Jeff Juliano, NVIDIA
+--
+--     -   Lionel Landwerlin, Intel
+--
+--     -   Shahbaz Youssefi, Google
+--
+--     -   Chris Forbes, Google
+--
+--     -   Ian Elliott, Google
+--
+--     -   Hans-Kristian Arntzen, Valve
+--
+--     -   Daniel Stone, Collabora
+--
+-- == Description
+--
+-- This extension is based off the @VK_EXT_surface_maintenance1@ extension.
+--
+-- @VK_KHR_surface_maintenance1@ adds a collection of window system
+-- integration features that were intentionally left out or overlooked in
+-- the original @VK_KHR_surface@ extension.
+--
+-- The new features are as follows:
+--
+-- -   Allow querying number of min\/max images from a surface for a
+--     particular presentation mode.
+--
+-- -   Allow querying a surface’s scaled presentation capabilities.
+--
+-- -   Allow querying a surface for the set of presentation modes which can
+--     be easily switched between without requiring swapchain recreation.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.PhysicalDeviceSurfaceInfo2KHR':
+--
+--     -   'SurfacePresentModeKHR'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.SurfaceCapabilities2KHR':
+--
+--     -   'SurfacePresentModeCompatibilityKHR'
+--
+--     -   'SurfacePresentScalingCapabilitiesKHR'
+--
+-- == New Enums
+--
+-- -   'PresentGravityFlagBitsKHR'
+--
+-- -   'PresentScalingFlagBitsKHR'
+--
+-- == New Bitmasks
+--
+-- -   'PresentGravityFlagsKHR'
+--
+-- -   'PresentScalingFlagsKHR'
+--
+-- == New Enum Constants
+--
+-- -   'KHR_SURFACE_MAINTENANCE_1_EXTENSION_NAME'
+--
+-- -   'KHR_SURFACE_MAINTENANCE_1_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SURFACE_PRESENT_MODE_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_KHR'
+--
+-- == Version History
+--
+-- -   Revision 1, 2025-03-31 (Shahbaz Youssefi)
+--
+--     -   Based on VK_EXT_surface_maintenance1
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_surface_maintenance1 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_surface_maintenance1  ( pattern PRESENT_SCALING_ONE_TO_ONE_BIT_EXT
+                                                      , pattern PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_EXT
+                                                      , pattern PRESENT_SCALING_STRETCH_BIT_EXT
+                                                      , pattern PRESENT_GRAVITY_MIN_BIT_EXT
+                                                      , pattern PRESENT_GRAVITY_MAX_BIT_EXT
+                                                      , pattern PRESENT_GRAVITY_CENTERED_BIT_EXT
+                                                      , SurfacePresentModeKHR(..)
+                                                      , SurfacePresentScalingCapabilitiesKHR(..)
+                                                      , SurfacePresentModeCompatibilityKHR(..)
+                                                      , PresentScalingFlagsKHR
+                                                      , PresentScalingFlagBitsKHR( PRESENT_SCALING_ONE_TO_ONE_BIT_KHR
+                                                                                 , PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_KHR
+                                                                                 , PRESENT_SCALING_STRETCH_BIT_KHR
+                                                                                 , ..
+                                                                                 )
+                                                      , PresentGravityFlagsKHR
+                                                      , PresentGravityFlagBitsKHR( PRESENT_GRAVITY_MIN_BIT_KHR
+                                                                                 , PRESENT_GRAVITY_MAX_BIT_KHR
+                                                                                 , PRESENT_GRAVITY_CENTERED_BIT_KHR
+                                                                                 , ..
+                                                                                 )
+                                                      , KHR_SURFACE_MAINTENANCE_1_SPEC_VERSION
+                                                      , pattern KHR_SURFACE_MAINTENANCE_1_SPEC_VERSION
+                                                      , KHR_SURFACE_MAINTENANCE_1_EXTENSION_NAME
+                                                      , pattern KHR_SURFACE_MAINTENANCE_1_EXTENSION_NAME
+                                                      , PresentModeKHR(..)
+                                                      ) where
+
+import Data.Bits (Bits)
+import Data.Bits (FiniteBits)
+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.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.Kind (Type)
+import Vulkan.Core10.FundamentalTypes (Extent2D)
+import Vulkan.Core10.FundamentalTypes (Flags)
+import Vulkan.Extensions.VK_KHR_surface (PresentModeKHR)
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_KHR))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SURFACE_PRESENT_MODE_KHR))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_KHR))
+import Vulkan.Extensions.VK_KHR_surface (PresentModeKHR(..))
+-- No documentation found for TopLevel "VK_PRESENT_SCALING_ONE_TO_ONE_BIT_EXT"
+pattern PRESENT_SCALING_ONE_TO_ONE_BIT_EXT = PRESENT_SCALING_ONE_TO_ONE_BIT_KHR
+
+
+-- No documentation found for TopLevel "VK_PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_EXT"
+pattern PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_EXT = PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_KHR
+
+
+-- No documentation found for TopLevel "VK_PRESENT_SCALING_STRETCH_BIT_EXT"
+pattern PRESENT_SCALING_STRETCH_BIT_EXT = PRESENT_SCALING_STRETCH_BIT_KHR
+
+
+-- No documentation found for TopLevel "VK_PRESENT_GRAVITY_MIN_BIT_EXT"
+pattern PRESENT_GRAVITY_MIN_BIT_EXT = PRESENT_GRAVITY_MIN_BIT_KHR
+
+
+-- No documentation found for TopLevel "VK_PRESENT_GRAVITY_MAX_BIT_EXT"
+pattern PRESENT_GRAVITY_MAX_BIT_EXT = PRESENT_GRAVITY_MAX_BIT_KHR
+
+
+-- No documentation found for TopLevel "VK_PRESENT_GRAVITY_CENTERED_BIT_EXT"
+pattern PRESENT_GRAVITY_CENTERED_BIT_EXT = PRESENT_GRAVITY_CENTERED_BIT_KHR
+
+
+-- | VkSurfacePresentModeKHR - Structure describing present mode of a surface
+--
+-- = Description
+--
+-- If the 'SurfacePresentModeKHR' structure is included in the @pNext@
+-- chain of
+-- 'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.PhysicalDeviceSurfaceInfo2KHR',
+-- the values returned in
+-- 'Vulkan.Extensions.VK_KHR_surface.SurfaceCapabilitiesKHR'::@minImageCount@,
+-- 'Vulkan.Extensions.VK_KHR_surface.SurfaceCapabilitiesKHR'::@maxImageCount@,
+-- 'SurfacePresentScalingCapabilitiesKHR'::@minScaledImageExtent@, and
+-- 'SurfacePresentScalingCapabilitiesKHR'::@maxScaledImageExtent@ are valid
+-- only for the specified @presentMode@. If @presentMode@ is
+-- 'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR'
+-- or
+-- 'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR',
+-- the per-present mode image counts /must/ both be one. The per-present
+-- mode image counts /may/ be less-than or greater-than the image counts
+-- returned when 'SurfacePresentModeKHR' is not provided.
+--
+-- If
+-- 'Vulkan.Extensions.VK_KHR_swapchain_maintenance1.SwapchainPresentModesCreateInfoKHR'
+-- is provided to swapchain creation, the requirements for forward progress
+-- may be less strict. For example, a FIFO swapchain might only require 2
+-- images to guarantee forward progress, but a MAILBOX one might require 4.
+-- Without the per-present image counts, such an implementation would have
+-- to return 4 in
+-- 'Vulkan.Extensions.VK_KHR_surface.SurfaceCapabilitiesKHR'::@minImageCount@,
+-- which pessimizes FIFO. Conversely, an implementation may return a low
+-- number for minImageCount, but internally bump the image count when
+-- application queries
+-- 'Vulkan.Extensions.VK_KHR_swapchain.getSwapchainImagesKHR', which can
+-- surprise applications, and is not discoverable until swapchain creation.
+-- Using 'SurfacePresentModeKHR' and
+-- 'Vulkan.Extensions.VK_KHR_swapchain_maintenance1.SwapchainPresentModesCreateInfoKHR'
+-- together effectively removes this problem.
+--
+-- 'Vulkan.Extensions.VK_KHR_swapchain_maintenance1.SwapchainPresentModesCreateInfoKHR'
+-- is required for the specification to be backwards compatible with
+-- applications that do not know about, or make use of this feature.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.PhysicalDeviceSurfaceInfo2KHR'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_surface_maintenance1 VK_EXT_surface_maintenance1>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_surface_maintenance1 VK_KHR_surface_maintenance1>,
+-- 'Vulkan.Extensions.VK_KHR_surface.PresentModeKHR',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data SurfacePresentModeKHR = SurfacePresentModeKHR
+  { -- | @presentMode@ is the presentation mode the swapchain will use.
+    --
+    -- #VUID-VkSurfacePresentModeKHR-presentMode-07780# @presentMode@ /must/ be
+    -- a value reported by
+    -- 'Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfacePresentModesKHR'
+    -- for the specified surface
+    --
+    -- #VUID-VkSurfacePresentModeKHR-presentMode-parameter# @presentMode@
+    -- /must/ be a valid 'Vulkan.Extensions.VK_KHR_surface.PresentModeKHR'
+    -- value
+    presentMode :: PresentModeKHR }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (SurfacePresentModeKHR)
+#endif
+deriving instance Show SurfacePresentModeKHR
+
+instance ToCStruct SurfacePresentModeKHR where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p SurfacePresentModeKHR{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SURFACE_PRESENT_MODE_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr PresentModeKHR)) (presentMode)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SURFACE_PRESENT_MODE_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr PresentModeKHR)) (zero)
+    f
+
+instance FromCStruct SurfacePresentModeKHR where
+  peekCStruct p = do
+    presentMode <- peek @PresentModeKHR ((p `plusPtr` 16 :: Ptr PresentModeKHR))
+    pure $ SurfacePresentModeKHR
+             presentMode
+
+instance Storable SurfacePresentModeKHR where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero SurfacePresentModeKHR where
+  zero = SurfacePresentModeKHR
+           zero
+
+
+-- | VkSurfacePresentScalingCapabilitiesKHR - Structure describing the
+-- presentation scaling capabilities of the surface
+--
+-- = Description
+--
+-- To query the set of supported scaling modes for a given present mode,
+-- add a 'SurfacePresentModeKHR' structure in the @pNext@ chain of
+-- 'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.PhysicalDeviceSurfaceInfo2KHR'
+-- when calling
+-- 'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.getPhysicalDeviceSurfaceCapabilities2KHR'.
+-- The implementation /must/ return the same values in
+-- 'SurfacePresentScalingCapabilitiesKHR' for any of the compatible present
+-- modes as obtained through 'SurfacePresentModeCompatibilityKHR'.
+--
+-- The application /can/ specify the scaling mode when creating a swapchain
+-- through the use of
+-- 'Vulkan.Extensions.VK_KHR_swapchain_maintenance1.SwapchainPresentScalingCreateInfoKHR'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.SurfaceCapabilities2KHR'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_surface_maintenance1 VK_EXT_surface_maintenance1>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_surface_maintenance1 VK_KHR_surface_maintenance1>,
+-- 'Vulkan.Core10.FundamentalTypes.Extent2D', 'PresentGravityFlagsKHR',
+-- 'PresentScalingFlagsKHR',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data SurfacePresentScalingCapabilitiesKHR = SurfacePresentScalingCapabilitiesKHR
+  { -- | @supportedPresentScaling@ is a bitmask of 'PresentScalingFlagBitsKHR'
+    -- representing the scaling methods supported by the surface, or @0@ if
+    -- application-defined scaling is not supported.
+    --
+    -- #VUID-VkSurfacePresentScalingCapabilitiesKHR-supportedPresentScaling-parameter#
+    -- @supportedPresentScaling@ /must/ be a valid combination of
+    -- 'PresentScalingFlagBitsKHR' values
+    supportedPresentScaling :: PresentScalingFlagsKHR
+  , -- | @supportedPresentGravityX@ is a bitmask of 'PresentGravityFlagBitsKHR'
+    -- representing the X-axis pixel gravity supported by the surface, or @0@
+    -- if Vulkan-defined pixel gravity is not supported for the X axis.
+    --
+    -- #VUID-VkSurfacePresentScalingCapabilitiesKHR-supportedPresentGravityX-parameter#
+    -- @supportedPresentGravityX@ /must/ be a valid combination of
+    -- 'PresentGravityFlagBitsKHR' values
+    supportedPresentGravityX :: PresentGravityFlagsKHR
+  , -- | @supportedPresentGravityY@ is a bitmask of 'PresentGravityFlagBitsKHR'
+    -- representing the Y-axis pixel gravity supported by the surface, or @0@
+    -- if Vulkan-defined pixel gravity is not supported for the Y axis.
+    --
+    -- #VUID-VkSurfacePresentScalingCapabilitiesKHR-supportedPresentGravityY-parameter#
+    -- @supportedPresentGravityY@ /must/ be a valid combination of
+    -- 'PresentGravityFlagBitsKHR' values
+    supportedPresentGravityY :: PresentGravityFlagsKHR
+  , -- | @minScaledImageExtent@ contains the smallest valid swapchain extent for
+    -- the surface on the specified device when one of the scaling methods
+    -- specified in @supportedPresentScaling@ is used, or the special value
+    -- (0xFFFFFFFF, 0xFFFFFFFF) indicating that the surface size will be
+    -- determined by the extent of a swapchain targeting the surface. The
+    -- @width@ and @height@ of the extent will each be smaller than or equal to
+    -- the corresponding @width@ and @height@ of
+    -- 'Vulkan.Extensions.VK_KHR_surface.SurfaceCapabilitiesKHR'::@minImageExtent@.
+    minScaledImageExtent :: Extent2D
+  , -- | @maxScaledImageExtent@ contains the largest valid swapchain extent for
+    -- the surface on the specified device when one of the scaling methods
+    -- specified in @supportedPresentScaling@ is used, or the special value
+    -- described above for @minScaledImageExtent@. The @width@ and @height@ of
+    -- the extent will each be greater than or equal to the corresponding
+    -- @width@ and @height@ of
+    -- 'Vulkan.Extensions.VK_KHR_surface.SurfaceCapabilitiesKHR'::@maxImageExtent@.
+    maxScaledImageExtent :: Extent2D
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (SurfacePresentScalingCapabilitiesKHR)
+#endif
+deriving instance Show SurfacePresentScalingCapabilitiesKHR
+
+instance ToCStruct SurfacePresentScalingCapabilitiesKHR where
+  withCStruct x f = allocaBytes 48 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p SurfacePresentScalingCapabilitiesKHR{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr PresentScalingFlagsKHR)) (supportedPresentScaling)
+    poke ((p `plusPtr` 20 :: Ptr PresentGravityFlagsKHR)) (supportedPresentGravityX)
+    poke ((p `plusPtr` 24 :: Ptr PresentGravityFlagsKHR)) (supportedPresentGravityY)
+    poke ((p `plusPtr` 28 :: Ptr Extent2D)) (minScaledImageExtent)
+    poke ((p `plusPtr` 36 :: Ptr Extent2D)) (maxScaledImageExtent)
+    f
+  cStructSize = 48
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    f
+
+instance FromCStruct SurfacePresentScalingCapabilitiesKHR where
+  peekCStruct p = do
+    supportedPresentScaling <- peek @PresentScalingFlagsKHR ((p `plusPtr` 16 :: Ptr PresentScalingFlagsKHR))
+    supportedPresentGravityX <- peek @PresentGravityFlagsKHR ((p `plusPtr` 20 :: Ptr PresentGravityFlagsKHR))
+    supportedPresentGravityY <- peek @PresentGravityFlagsKHR ((p `plusPtr` 24 :: Ptr PresentGravityFlagsKHR))
+    minScaledImageExtent <- peekCStruct @Extent2D ((p `plusPtr` 28 :: Ptr Extent2D))
+    maxScaledImageExtent <- peekCStruct @Extent2D ((p `plusPtr` 36 :: Ptr Extent2D))
+    pure $ SurfacePresentScalingCapabilitiesKHR
+             supportedPresentScaling
+             supportedPresentGravityX
+             supportedPresentGravityY
+             minScaledImageExtent
+             maxScaledImageExtent
+
+instance Storable SurfacePresentScalingCapabilitiesKHR where
+  sizeOf ~_ = 48
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero SurfacePresentScalingCapabilitiesKHR where
+  zero = SurfacePresentScalingCapabilitiesKHR
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkSurfacePresentModeCompatibilityKHR - Structure describing the subset
+-- of compatible presentation modes for the purposes of switching without
+-- swapchain recreation
+--
+-- = Description
+--
+-- If @pPresentModes@ is @NULL@, then the number of present modes that are
+-- compatible with the one specified in 'SurfacePresentModeKHR' is returned
+-- in @presentModeCount@. Otherwise, @presentModeCount@ /must/ be set by
+-- the application to the number of elements in the @pPresentModes@ array,
+-- and on return is overwritten with the number of values actually written
+-- to @pPresentModes@. If the value of @presentModeCount@ is less than the
+-- number of compatible present modes that are supported, at most
+-- @presentModeCount@ values will be written to @pPresentModes@. The
+-- implementation /must/ include the present mode passed to
+-- 'SurfacePresentModeKHR' in @pPresentModes@, unless @presentModeCount@ is
+-- zero.
+--
+-- To query the set of present modes compatible with a given initial
+-- present mode, add a 'SurfacePresentModeKHR' structure in the @pNext@
+-- chain of
+-- 'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.PhysicalDeviceSurfaceInfo2KHR'
+-- when calling
+-- 'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.getPhysicalDeviceSurfaceCapabilities2KHR'.
+--
+-- The application /can/ create a swapchain whose present mode /can/ be
+-- modified through the use of
+-- 'Vulkan.Extensions.VK_KHR_swapchain_maintenance1.SwapchainPresentModesCreateInfoKHR'.
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkSurfacePresentModeCompatibilityKHR-sType-sType# @sType@
+--     /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_KHR'
+--
+-- -   #VUID-VkSurfacePresentModeCompatibilityKHR-pPresentModes-parameter#
+--     If @presentModeCount@ is not @0@, and @pPresentModes@ is not @NULL@,
+--     @pPresentModes@ /must/ be a valid pointer to an array of
+--     @presentModeCount@ 'Vulkan.Extensions.VK_KHR_surface.PresentModeKHR'
+--     values
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.SurfaceCapabilities2KHR'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_surface_maintenance1 VK_EXT_surface_maintenance1>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_surface_maintenance1 VK_KHR_surface_maintenance1>,
+-- 'Vulkan.Extensions.VK_KHR_surface.PresentModeKHR',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data SurfacePresentModeCompatibilityKHR = SurfacePresentModeCompatibilityKHR
+  { -- | @presentModeCount@ is an integer related to the number of present modes
+    -- available or queried, as described below.
+    presentModeCount :: Word32
+  , -- | @pPresentModes@ is a pointer to an array of
+    -- 'Vulkan.Extensions.VK_KHR_surface.PresentModeKHR' in which present modes
+    -- compatible with a given present mode are returned.
+    presentModes :: Ptr PresentModeKHR
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (SurfacePresentModeCompatibilityKHR)
+#endif
+deriving instance Show SurfacePresentModeCompatibilityKHR
+
+instance ToCStruct SurfacePresentModeCompatibilityKHR where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p SurfacePresentModeCompatibilityKHR{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (presentModeCount)
+    poke ((p `plusPtr` 24 :: Ptr (Ptr PresentModeKHR))) (presentModes)
+    f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    f
+
+instance FromCStruct SurfacePresentModeCompatibilityKHR where
+  peekCStruct p = do
+    presentModeCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    pPresentModes <- peek @(Ptr PresentModeKHR) ((p `plusPtr` 24 :: Ptr (Ptr PresentModeKHR)))
+    pure $ SurfacePresentModeCompatibilityKHR
+             presentModeCount pPresentModes
+
+instance Storable SurfacePresentModeCompatibilityKHR where
+  sizeOf ~_ = 32
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero SurfacePresentModeCompatibilityKHR where
+  zero = SurfacePresentModeCompatibilityKHR
+           zero
+           zero
+
+
+type PresentScalingFlagsKHR = PresentScalingFlagBitsKHR
+
+-- | VkPresentScalingFlagBitsKHR - Bitmask specifying presentation scaling
+-- methods
+--
+-- = Description
+--
+-- -   'PRESENT_SCALING_ONE_TO_ONE_BIT_KHR' specifies that no scaling
+--     occurs, and pixels in the swapchain image are mapped to one and only
+--     one pixel in the surface. The mapping between pixels is defined by
+--     the chosen presentation gravity.
+--
+-- -   'PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_KHR' specifies that the
+--     swapchain image will be minified or magnified such that at least one
+--     of the resulting width or height is equal to the corresponding
+--     surface dimension, and the other resulting dimension is less than or
+--     equal to the corresponding surface dimension, with the aspect ratio
+--     of the resulting image being identical to that of the original
+--     swapchain image.
+--
+-- -   'PRESENT_SCALING_STRETCH_BIT_KHR' specifies that the swapchain image
+--     will be minified or magnified such that the resulting image
+--     dimensions are equal to those of the surface.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_surface_maintenance1 VK_EXT_surface_maintenance1>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_surface_maintenance1 VK_KHR_surface_maintenance1>,
+-- 'PresentScalingFlagsKHR'
+newtype PresentScalingFlagBitsKHR = PresentScalingFlagBitsKHR Flags
+  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
+
+-- No documentation found for Nested "VkPresentScalingFlagBitsKHR" "VK_PRESENT_SCALING_ONE_TO_ONE_BIT_KHR"
+pattern PRESENT_SCALING_ONE_TO_ONE_BIT_KHR = PresentScalingFlagBitsKHR 0x00000001
+
+-- No documentation found for Nested "VkPresentScalingFlagBitsKHR" "VK_PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_KHR"
+pattern PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_KHR = PresentScalingFlagBitsKHR 0x00000002
+
+-- No documentation found for Nested "VkPresentScalingFlagBitsKHR" "VK_PRESENT_SCALING_STRETCH_BIT_KHR"
+pattern PRESENT_SCALING_STRETCH_BIT_KHR = PresentScalingFlagBitsKHR 0x00000004
+
+conNamePresentScalingFlagBitsKHR :: String
+conNamePresentScalingFlagBitsKHR = "PresentScalingFlagBitsKHR"
+
+enumPrefixPresentScalingFlagBitsKHR :: String
+enumPrefixPresentScalingFlagBitsKHR = "PRESENT_SCALING_"
+
+showTablePresentScalingFlagBitsKHR :: [(PresentScalingFlagBitsKHR, String)]
+showTablePresentScalingFlagBitsKHR =
+  [
+    ( PRESENT_SCALING_ONE_TO_ONE_BIT_KHR
+    , "ONE_TO_ONE_BIT_KHR"
+    )
+  ,
+    ( PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_KHR
+    , "ASPECT_RATIO_STRETCH_BIT_KHR"
+    )
+  ,
+    ( PRESENT_SCALING_STRETCH_BIT_KHR
+    , "STRETCH_BIT_KHR"
+    )
+  ]
+
+instance Show PresentScalingFlagBitsKHR where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixPresentScalingFlagBitsKHR
+      showTablePresentScalingFlagBitsKHR
+      conNamePresentScalingFlagBitsKHR
+      (\(PresentScalingFlagBitsKHR x) -> x)
+      (\x -> showString "0x" . showHex x)
+
+instance Read PresentScalingFlagBitsKHR where
+  readPrec =
+    enumReadPrec
+      enumPrefixPresentScalingFlagBitsKHR
+      showTablePresentScalingFlagBitsKHR
+      conNamePresentScalingFlagBitsKHR
+      PresentScalingFlagBitsKHR
+
+type PresentGravityFlagsKHR = PresentGravityFlagBitsKHR
+
+-- | VkPresentGravityFlagBitsKHR - Bitmask specifying presentation pixel
+-- gravity on either the x or y axis
+--
+-- = Description
+--
+-- -   'PRESENT_GRAVITY_MIN_BIT_KHR' means that the pixels will gravitate
+--     towards the top or left side of the surface.
+--
+-- -   'PRESENT_GRAVITY_MAX_BIT_KHR' means that the pixels will gravitate
+--     towards the bottom or right side of the surface.
+--
+-- -   'PRESENT_GRAVITY_CENTERED_BIT_KHR' means that the pixels will be
+--     centered in the surface.
+--
+-- If the value in
+-- 'Vulkan.Extensions.VK_KHR_surface.SurfaceCapabilitiesKHR'::@currentTransform@
+-- is not
+-- 'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_IDENTITY_BIT_KHR',
+-- it is implementation-defined whether the gravity configuration applies
+-- to the presented image before or after transformation.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_surface_maintenance1 VK_EXT_surface_maintenance1>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_surface_maintenance1 VK_KHR_surface_maintenance1>,
+-- 'PresentGravityFlagsKHR'
+newtype PresentGravityFlagBitsKHR = PresentGravityFlagBitsKHR Flags
+  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
+
+-- No documentation found for Nested "VkPresentGravityFlagBitsKHR" "VK_PRESENT_GRAVITY_MIN_BIT_KHR"
+pattern PRESENT_GRAVITY_MIN_BIT_KHR = PresentGravityFlagBitsKHR 0x00000001
+
+-- No documentation found for Nested "VkPresentGravityFlagBitsKHR" "VK_PRESENT_GRAVITY_MAX_BIT_KHR"
+pattern PRESENT_GRAVITY_MAX_BIT_KHR = PresentGravityFlagBitsKHR 0x00000002
+
+-- No documentation found for Nested "VkPresentGravityFlagBitsKHR" "VK_PRESENT_GRAVITY_CENTERED_BIT_KHR"
+pattern PRESENT_GRAVITY_CENTERED_BIT_KHR = PresentGravityFlagBitsKHR 0x00000004
+
+conNamePresentGravityFlagBitsKHR :: String
+conNamePresentGravityFlagBitsKHR = "PresentGravityFlagBitsKHR"
+
+enumPrefixPresentGravityFlagBitsKHR :: String
+enumPrefixPresentGravityFlagBitsKHR = "PRESENT_GRAVITY_"
+
+showTablePresentGravityFlagBitsKHR :: [(PresentGravityFlagBitsKHR, String)]
+showTablePresentGravityFlagBitsKHR =
+  [
+    ( PRESENT_GRAVITY_MIN_BIT_KHR
+    , "MIN_BIT_KHR"
+    )
+  ,
+    ( PRESENT_GRAVITY_MAX_BIT_KHR
+    , "MAX_BIT_KHR"
+    )
+  ,
+    ( PRESENT_GRAVITY_CENTERED_BIT_KHR
+    , "CENTERED_BIT_KHR"
+    )
+  ]
+
+instance Show PresentGravityFlagBitsKHR where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixPresentGravityFlagBitsKHR
+      showTablePresentGravityFlagBitsKHR
+      conNamePresentGravityFlagBitsKHR
+      (\(PresentGravityFlagBitsKHR x) -> x)
+      (\x -> showString "0x" . showHex x)
+
+instance Read PresentGravityFlagBitsKHR where
+  readPrec =
+    enumReadPrec
+      enumPrefixPresentGravityFlagBitsKHR
+      showTablePresentGravityFlagBitsKHR
+      conNamePresentGravityFlagBitsKHR
+      PresentGravityFlagBitsKHR
+
+type KHR_SURFACE_MAINTENANCE_1_SPEC_VERSION = 1
+
+-- No documentation found for TopLevel "VK_KHR_SURFACE_MAINTENANCE_1_SPEC_VERSION"
+pattern KHR_SURFACE_MAINTENANCE_1_SPEC_VERSION :: forall a . Integral a => a
+pattern KHR_SURFACE_MAINTENANCE_1_SPEC_VERSION = 1
+
+
+type KHR_SURFACE_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_surface_maintenance1"
+
+-- No documentation found for TopLevel "VK_KHR_SURFACE_MAINTENANCE_1_EXTENSION_NAME"
+pattern KHR_SURFACE_MAINTENANCE_1_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern KHR_SURFACE_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_surface_maintenance1"
+
diff --git a/src/Vulkan/Extensions/VK_KHR_surface_maintenance1.hs-boot b/src/Vulkan/Extensions/VK_KHR_surface_maintenance1.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_KHR_surface_maintenance1.hs-boot
@@ -0,0 +1,179 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_KHR_surface_maintenance1 - instance extension
+--
+-- = VK_KHR_surface_maintenance1
+--
+-- [__Name String__]
+--     @VK_KHR_surface_maintenance1@
+--
+-- [__Extension Type__]
+--     Instance extension
+--
+-- [__Registered Extension Number__]
+--     487
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_surface VK_KHR_surface>
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_surface_capabilities2 VK_KHR_get_surface_capabilities2>
+--
+-- [__Contact__]
+--
+--     -   Shahbaz Youssefi
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_surface_maintenance1] @syoussefi%0A*Here describe the issue or question you have about the VK_KHR_surface_maintenance1 extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_KHR_surface_maintenance1.adoc VK_KHR_surface_maintenance1>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2025-03-31
+--
+-- [__Contributors__]
+--
+--     -   James Jones, NVIDIA
+--
+--     -   Jeff Juliano, NVIDIA
+--
+--     -   Lionel Landwerlin, Intel
+--
+--     -   Shahbaz Youssefi, Google
+--
+--     -   Chris Forbes, Google
+--
+--     -   Ian Elliott, Google
+--
+--     -   Hans-Kristian Arntzen, Valve
+--
+--     -   Daniel Stone, Collabora
+--
+-- == Description
+--
+-- This extension is based off the @VK_EXT_surface_maintenance1@ extension.
+--
+-- @VK_KHR_surface_maintenance1@ adds a collection of window system
+-- integration features that were intentionally left out or overlooked in
+-- the original @VK_KHR_surface@ extension.
+--
+-- The new features are as follows:
+--
+-- -   Allow querying number of min\/max images from a surface for a
+--     particular presentation mode.
+--
+-- -   Allow querying a surface’s scaled presentation capabilities.
+--
+-- -   Allow querying a surface for the set of presentation modes which can
+--     be easily switched between without requiring swapchain recreation.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.PhysicalDeviceSurfaceInfo2KHR':
+--
+--     -   'SurfacePresentModeKHR'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.SurfaceCapabilities2KHR':
+--
+--     -   'SurfacePresentModeCompatibilityKHR'
+--
+--     -   'SurfacePresentScalingCapabilitiesKHR'
+--
+-- == New Enums
+--
+-- -   'PresentGravityFlagBitsKHR'
+--
+-- -   'PresentScalingFlagBitsKHR'
+--
+-- == New Bitmasks
+--
+-- -   'PresentGravityFlagsKHR'
+--
+-- -   'PresentScalingFlagsKHR'
+--
+-- == New Enum Constants
+--
+-- -   'KHR_SURFACE_MAINTENANCE_1_EXTENSION_NAME'
+--
+-- -   'KHR_SURFACE_MAINTENANCE_1_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SURFACE_PRESENT_MODE_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_KHR'
+--
+-- == Version History
+--
+-- -   Revision 1, 2025-03-31 (Shahbaz Youssefi)
+--
+--     -   Based on VK_EXT_surface_maintenance1
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_surface_maintenance1 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_surface_maintenance1  ( SurfacePresentModeCompatibilityKHR
+                                                      , SurfacePresentModeKHR
+                                                      , SurfacePresentScalingCapabilitiesKHR
+                                                      , PresentScalingFlagsKHR
+                                                      , PresentScalingFlagBitsKHR
+                                                      , PresentGravityFlagsKHR
+                                                      , PresentGravityFlagBitsKHR
+                                                      ) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data SurfacePresentModeCompatibilityKHR
+
+instance ToCStruct SurfacePresentModeCompatibilityKHR
+instance Show SurfacePresentModeCompatibilityKHR
+
+instance FromCStruct SurfacePresentModeCompatibilityKHR
+
+
+data SurfacePresentModeKHR
+
+instance ToCStruct SurfacePresentModeKHR
+instance Show SurfacePresentModeKHR
+
+instance FromCStruct SurfacePresentModeKHR
+
+
+data SurfacePresentScalingCapabilitiesKHR
+
+instance ToCStruct SurfacePresentScalingCapabilitiesKHR
+instance Show SurfacePresentScalingCapabilitiesKHR
+
+instance FromCStruct SurfacePresentScalingCapabilitiesKHR
+
+
+type PresentScalingFlagsKHR = PresentScalingFlagBitsKHR
+
+data PresentScalingFlagBitsKHR
+
+
+type PresentGravityFlagsKHR = PresentGravityFlagBitsKHR
+
+data PresentGravityFlagBitsKHR
+
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
@@ -105,7 +105,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_surface_protected_capabilities Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -152,9 +152,13 @@
 -- /can/ be 'Vulkan.Core10.APIConstants.NULL_HANDLE'. In that case, the
 -- contents of
 -- 'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.SurfaceCapabilities2KHR'::@surfaceCapabilities@
--- as well as any other struct chained to it will be undefined.
+-- as well as any other structure chained to it will be undefined.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.SurfaceCapabilities2KHR'
 --
 -- = See Also
 --
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
@@ -105,7 +105,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_surface_protected_capabilities Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -499,7 +499,7 @@
 -- 'Vulkan.Core10.Enums.Format.Format' when creating a swapchain?
 --
 -- __RESOLVED__: While Vulkan itself is color space agnostic (e.g. even the
--- meaning of R, G, B and A can be freely defined by the rendering
+-- meaning of R, G, B, and A can be freely defined by the rendering
 -- application), the swapchain eventually will have to present the images
 -- on a display device with specific color reproduction characteristics. If
 -- any color space transformations are necessary before an image can be
@@ -913,8 +913,8 @@
 --
 --     -   Made improvements to several descriptions.
 --
---     -   Changed the status of several issues from PROPOSED to RESOLVED,
---         leaving no unresolved issues.
+--     -   Changed the status of several issues, leaving no unresolved
+--         issues.
 --
 --     -   Resolved several TODOs, did miscellaneous cleanup, etc.
 --
@@ -1069,7 +1069,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_swapchain Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -1101,7 +1101,10 @@
                                                                               , ..
                                                                               )
                                            , SwapchainCreateFlagsKHR
-                                           , SwapchainCreateFlagBitsKHR( SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_EXT
+                                           , SwapchainCreateFlagBitsKHR( SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_KHR
+                                                                       , SWAPCHAIN_CREATE_PRESENT_WAIT_2_BIT_KHR
+                                                                       , SWAPCHAIN_CREATE_PRESENT_ID_2_BIT_KHR
+                                                                       , SWAPCHAIN_CREATE_PRESENT_TIMING_BIT_EXT
                                                                        , SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR
                                                                        , SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR
                                                                        , SWAPCHAIN_CREATE_PROTECTED_BIT_KHR
@@ -1206,6 +1209,7 @@
 import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Core10.Enums.Format (Format)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_frame_boundary (FrameBoundaryEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_tensors (FrameBoundaryTensorsARM)
 import Vulkan.Core10.Handles (Image)
 import Vulkan.Core10.Handles (Image(..))
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_image_compression_control (ImageCompressionControlEXT)
@@ -1222,10 +1226,12 @@
 import Vulkan.CStruct.Extends (PokeChain)
 import Vulkan.CStruct.Extends (PokeChain(..))
 import {-# SOURCE #-} Vulkan.Extensions.VK_GGP_frame_token (PresentFrameTokenGGP)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_present_id2 (PresentId2KHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_present_id (PresentIdKHR)
 import Vulkan.Extensions.VK_KHR_surface (PresentModeKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_incremental_present (PresentRegionsKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_GOOGLE_display_timing (PresentTimesInfoGOOGLE)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_present_timing (PresentTimingsInfoEXT)
 import Vulkan.Core10.Handles (Queue)
 import Vulkan.Core10.Handles (Queue(..))
 import Vulkan.Core10.Handles (Queue(Queue))
@@ -1235,6 +1241,7 @@
 import Vulkan.Core10.Enums.Result (Result(..))
 import Vulkan.Core10.Handles (Semaphore)
 import Vulkan.Core10.Handles (Semaphore(..))
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_present_metering (SetPresentConfigNV)
 import Vulkan.Core10.Enums.SharingMode (SharingMode)
 import Vulkan.CStruct.Extends (SomeStruct)
 import Vulkan.Core10.Enums.StructureType (StructureType)
@@ -1249,10 +1256,10 @@
 import Vulkan.Extensions.Handles (SwapchainKHR(..))
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_low_latency2 (SwapchainLatencyCreateInfoNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_present_barrier (SwapchainPresentBarrierCreateInfoNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_swapchain_maintenance1 (SwapchainPresentFenceInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_swapchain_maintenance1 (SwapchainPresentModeInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_swapchain_maintenance1 (SwapchainPresentModesCreateInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_swapchain_maintenance1 (SwapchainPresentScalingCreateInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_swapchain_maintenance1 (SwapchainPresentFenceInfoKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_swapchain_maintenance1 (SwapchainPresentModeInfoKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_swapchain_maintenance1 (SwapchainPresentModesCreateInfoKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_swapchain_maintenance1 (SwapchainPresentScalingCreateInfoKHR)
 import Vulkan.Exception (VulkanException(..))
 import Vulkan.Core10.APIConstants (pattern MAX_DEVICE_GROUP_SIZE)
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR))
@@ -1342,6 +1349,10 @@
 -- 'Vulkan.Core10.Enums.Result.ERROR_NATIVE_WINDOW_IN_USE_KHR' /must/ be
 -- returned.
 --
+-- If @oldSwapchain@ is a valid swapchain and there are outstanding calls
+-- to 'Vulkan.Extensions.VK_KHR_present_wait2.waitForPresent2KHR', then
+-- 'createSwapchainKHR' /may/ block until those calls complete.
+--
 -- If the native window referred to by @pCreateInfo->surface@ is already
 -- associated with a non-Vulkan graphics API surface,
 -- 'Vulkan.Core10.Enums.Result.ERROR_NATIVE_WINDOW_IN_USE_KHR' /must/ be
@@ -1422,13 +1433,8 @@
 --     be a valid pointer to a 'Vulkan.Extensions.Handles.SwapchainKHR'
 --     handle
 --
--- == Host Synchronization
---
--- -   Host access to @pCreateInfo->surface@ /must/ be externally
---     synchronized
---
--- -   Host access to @pCreateInfo->oldSwapchain@ /must/ be externally
---     synchronized
+-- -   #VUID-vkCreateSwapchainKHR-device-queuecount# The device /must/ have
+--     been created with at least @1@ queue
 --
 -- == Return Codes
 --
@@ -1438,20 +1444,24 @@
 --
 -- [<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_COMPRESSION_EXHAUSTED_EXT'
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_SURFACE_LOST_KHR'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_INITIALIZATION_FAILED'
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_NATIVE_WINDOW_IN_USE_KHR'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_INITIALIZATION_FAILED'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_COMPRESSION_EXHAUSTED_EXT'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_SURFACE_LOST_KHR'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_swapchain VK_KHR_swapchain>,
@@ -1469,7 +1479,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>).
+                      -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>).
                       ("allocator" ::: Maybe AllocationCallbacks)
                    -> io (SwapchainKHR)
 createSwapchainKHR device createInfo allocator = liftIO . evalContT $ do
@@ -1589,7 +1599,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>).
+                       -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>).
                        ("allocator" ::: Maybe AllocationCallbacks)
                     -> io ()
 destroySwapchainKHR device swapchain allocator = liftIO . evalContT $ do
@@ -1656,16 +1666,20 @@
 --
 -- [<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'
 --
+--     -   '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_DEVICE_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_swapchain VK_KHR_swapchain>,
@@ -1728,7 +1742,8 @@
                                    -- image is available.
                                    ("timeout" ::: Word64)
                                 -> -- | @semaphore@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE' or a semaphore
-                                   -- to signal.
+                                   -- defining a
+                                   -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operation>.
                                    Semaphore
                                 -> -- | @fence@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE' or a fence to
                                    -- signal.
@@ -1761,12 +1776,18 @@
 -- = Description
 --
 -- If the @swapchain@ has been created with the
--- 'SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_EXT' flag, the image
+-- 'SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_KHR' flag, the image
 -- whose index is returned in @pImageIndex@ will be fully backed by memory
 -- before this call returns to the application, as if it is bound
 -- completely and contiguously to a single
 -- 'Vulkan.Core10.Handles.DeviceMemory' object.
 --
+-- If @semaphore@ defines a
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operation>,
+-- its first
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+-- includes acquisition of the image.
+--
 -- == Valid Usage
 --
 -- -   #VUID-vkAcquireNextImageKHR-swapchain-01285# @swapchain@ /must/ not
@@ -1792,7 +1813,7 @@
 --     /must/ not both be equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE'
 --
 -- -   #VUID-vkAcquireNextImageKHR-surface-07783# If
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#swapchain-acquire-forward-progress forward progress>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#swapchain-acquire-forward-progress forward progress>
 --     cannot be guaranteed for the @surface@ used to create the
 --     @swapchain@ member of @pAcquireInfo@, @timeout@ /must/ not be
 --     @UINT64_MAX@
@@ -1843,28 +1864,32 @@
 --
 -- [<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.TIMEOUT'
---
 --     -   'Vulkan.Core10.Enums.Result.NOT_READY'
 --
 --     -   'Vulkan.Core10.Enums.Result.SUBOPTIMAL_KHR'
 --
--- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
+--     -   'Vulkan.Core10.Enums.Result.SUCCESS'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.TIMEOUT'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DATE_KHR'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_SURFACE_LOST_KHR'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_swapchain VK_KHR_swapchain>,
@@ -1882,7 +1907,8 @@
                        -- image is available.
                        ("timeout" ::: Word64)
                     -> -- | @semaphore@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE' or a semaphore
-                       -- to signal.
+                       -- defining a
+                       -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operation>.
                        Semaphore
                     -> -- | @fence@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE' or a fence to
                        -- signal.
@@ -1902,7 +1928,8 @@
                            -- image is available.
                            ("timeout" ::: Word64)
                         -> -- | @semaphore@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE' or a semaphore
-                           -- to signal.
+                           -- defining a
+                           -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operation>.
                            Semaphore
                         -> -- | @fence@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE' or a fence to
                            -- signal.
@@ -1959,6 +1986,12 @@
 --     is returned.
 --
 -- -   If any of the presents would have a result of
+--     'Vulkan.Core10.Enums.Result.ERROR_PRESENT_TIMING_QUEUE_FULL_EXT' if
+--     issued separately then
+--     'Vulkan.Core10.Enums.Result.ERROR_PRESENT_TIMING_QUEUE_FULL_EXT' is
+--     returned.
+--
+-- -   If any of the presents would have a result of
 --     'Vulkan.Core10.Enums.Result.ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT'
 --     if issued separately then
 --     'Vulkan.Core10.Enums.Result.ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT'
@@ -1975,8 +2008,8 @@
 -- available before 'queuePresentKHR' is executed, are automatically made
 -- visible to the read access performed by the presentation engine. This
 -- automatic visibility operation for an image happens-after the semaphore
--- signal operation, and happens-before the presentation engine accesses
--- the image.
+-- wait operation, and happens-before the presentation engine accesses the
+-- image.
 --
 -- Presentation is a read-only operation that will not affect the content
 -- of the presentable images. Upon reacquiring the image and transitioning
@@ -2025,16 +2058,18 @@
 -- However, if the presentation request is rejected by the presentation
 -- engine with an error 'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DATE_KHR',
 -- 'Vulkan.Core10.Enums.Result.ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT',
--- or 'Vulkan.Core10.Enums.Result.ERROR_SURFACE_LOST_KHR', the set of queue
--- operations are still considered to be enqueued and thus any semaphore
--- wait operation specified in 'PresentInfoKHR' will execute when the
--- corresponding queue operation is complete.
+-- 'Vulkan.Core10.Enums.Result.ERROR_PRESENT_TIMING_QUEUE_FULL_EXT', or
+-- 'Vulkan.Core10.Enums.Result.ERROR_SURFACE_LOST_KHR', the set of queue
+-- operations are still considered to be enqueued and thus any
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-semaphores-waiting semaphore wait operation>
+-- specified in 'PresentInfoKHR' will execute when the corresponding queue
+-- operation is complete.
 --
 -- 'queuePresentKHR' releases the acquisition of the images referenced by
 -- @imageIndices@. The queue family corresponding to the queue
 -- 'queuePresentKHR' is executed on /must/ have ownership of the presented
 -- images as defined in
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-sharing Resource Sharing>.
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-sharing Resource Sharing>.
 -- 'queuePresentKHR' does not alter the queue family ownership, but the
 -- presented images /must/ not be used again before they have been
 -- reacquired using 'acquireNextImageKHR'.
@@ -2061,7 +2096,7 @@
 --     of @pSwapchains@ was created from a display surface, all display
 --     surfaces referenced that refer to the same display /must/ use the
 --     same
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#wsi-displaySurfaceStereoType stereoType>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#wsi-displaySurfaceStereoType stereoType>
 --
 -- -   #VUID-vkQueuePresentKHR-pWaitSemaphores-01294# When a semaphore wait
 --     operation referring to a binary semaphore defined by the elements of
@@ -2077,7 +2112,7 @@
 --     @pWaitSemaphores@ member of @pPresentInfo@ /must/ reference a
 --     semaphore signal operation that has been submitted for execution and
 --     any
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operations>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operations>
 --     on which it depends /must/ have also been submitted for execution
 --
 -- == Valid Usage (Implicit)
@@ -2090,13 +2125,9 @@
 --
 -- == Host Synchronization
 --
--- -   Host access to @queue@ /must/ be externally synchronized
---
--- -   Host access to @pPresentInfo->pWaitSemaphores@[] /must/ be
---     externally synchronized
---
--- -   Host access to @pPresentInfo->pSwapchains@[] /must/ be externally
---     synchronized
+-- -   Host access to @queue@ /must/ be externally synchronized if it was
+--     not created with
+--     'Vulkan.Core10.Enums.DeviceQueueCreateFlagBits.DEVICE_QUEUE_CREATE_INTERNALLY_SYNCHRONIZED_BIT_KHR'
 --
 -- == Command Properties
 --
@@ -2112,24 +2143,30 @@
 --
 -- [<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.SUBOPTIMAL_KHR'
 --
+--     -   '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_DEVICE_LOST'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DATE_KHR'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DATE_KHR'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_PRESENT_TIMING_QUEUE_FULL_EXT'
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_SURFACE_LOST_KHR'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_swapchain VK_KHR_swapchain>,
@@ -2174,10 +2211,14 @@
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_device_group VK_KHR_device_group>,
@@ -2261,12 +2302,16 @@
 --
 -- [<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_OUT_OF_HOST_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_SURFACE_LOST_KHR'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_device_group VK_KHR_device_group>,
@@ -2340,14 +2385,14 @@
 -- = Description
 --
 -- If the @swapchain@ has been created with the
--- 'SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_EXT' flag, the image
+-- 'SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_KHR' flag, the image
 -- whose index is returned in @pImageIndex@ will be fully backed by memory
 -- before this call returns to the application.
 --
 -- == Valid Usage
 --
 -- -   #VUID-vkAcquireNextImage2KHR-surface-07784# If
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#swapchain-acquire-forward-progress forward progress>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#swapchain-acquire-forward-progress forward progress>
 --     cannot be guaranteed for the @surface@ used to create @swapchain@,
 --     the @timeout@ member of @pAcquireInfo@ /must/ not be @UINT64_MAX@
 --
@@ -2367,28 +2412,32 @@
 --
 -- [<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.TIMEOUT'
---
 --     -   'Vulkan.Core10.Enums.Result.NOT_READY'
 --
 --     -   'Vulkan.Core10.Enums.Result.SUBOPTIMAL_KHR'
 --
--- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
+--     -   'Vulkan.Core10.Enums.Result.SUCCESS'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.TIMEOUT'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DATE_KHR'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_SURFACE_LOST_KHR'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_device_group VK_KHR_device_group>,
@@ -2447,10 +2496,6 @@
 --
 -- == Valid Usage
 --
--- -   #VUID-vkGetPhysicalDevicePresentRectanglesKHR-surface-06523#
---     @surface@ /must/ be a valid 'Vulkan.Extensions.Handles.SurfaceKHR'
---     handle
---
 -- -   #VUID-vkGetPhysicalDevicePresentRectanglesKHR-surface-06211#
 --     @surface@ /must/ be supported by @physicalDevice@, as reported by
 --     'Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceSupportKHR'
@@ -2486,16 +2531,20 @@
 --
 -- [<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'
 --
+--     -   '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_DEVICE_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_device_group VK_KHR_device_group>,
@@ -2590,9 +2639,9 @@
 --     for the surface if the returned @maxImageCount@ is not zero
 --
 -- -   #VUID-VkSwapchainCreateInfoKHR-swapchainMaintenance1-10155# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-swapchainMaintenance1 swapchainMaintenance1>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-swapchainMaintenance1 swapchainMaintenance1>
 --     feature is not enabled, then the @pNext@ chain /must/ not include a
---     'Vulkan.Extensions.VK_EXT_swapchain_maintenance1.SwapchainPresentModesCreateInfoEXT'
+--     'Vulkan.Extensions.VK_KHR_swapchain_maintenance1.SwapchainPresentModesCreateInfoKHR'
 --     structure
 --
 -- -   #VUID-VkSwapchainCreateInfoKHR-presentMode-02839# If @presentMode@
@@ -2622,10 +2671,10 @@
 --     for the surface
 --
 -- -   #VUID-VkSwapchainCreateInfoKHR-pNext-07781# If a
---     'Vulkan.Extensions.VK_EXT_swapchain_maintenance1.SwapchainPresentScalingCreateInfoEXT'
+--     'Vulkan.Extensions.VK_KHR_swapchain_maintenance1.SwapchainPresentScalingCreateInfoKHR'
 --     structure was not included in the @pNext@ chain, or it is included
 --     and
---     'Vulkan.Extensions.VK_EXT_swapchain_maintenance1.SwapchainPresentScalingCreateInfoEXT'::@scalingBehavior@
+--     'Vulkan.Extensions.VK_KHR_swapchain_maintenance1.SwapchainPresentScalingCreateInfoKHR'::@scalingBehavior@
 --     is zero then @imageExtent@ /must/ be between @minImageExtent@ and
 --     @maxImageExtent@, inclusive, where @minImageExtent@ and
 --     @maxImageExtent@ are members of the
@@ -2635,21 +2684,21 @@
 --     for the surface
 --
 -- -   #VUID-VkSwapchainCreateInfoKHR-pNext-07782# If a
---     'Vulkan.Extensions.VK_EXT_swapchain_maintenance1.SwapchainPresentScalingCreateInfoEXT'
+--     'Vulkan.Extensions.VK_KHR_swapchain_maintenance1.SwapchainPresentScalingCreateInfoKHR'
 --     structure was included in the @pNext@ chain and
---     'Vulkan.Extensions.VK_EXT_swapchain_maintenance1.SwapchainPresentScalingCreateInfoEXT'::@scalingBehavior@
+--     'Vulkan.Extensions.VK_KHR_swapchain_maintenance1.SwapchainPresentScalingCreateInfoKHR'::@scalingBehavior@
 --     is not zero then @imageExtent@ /must/ be between
 --     @minScaledImageExtent@ and @maxScaledImageExtent@, inclusive, where
 --     @minScaledImageExtent@ and @maxScaledImageExtent@ are members of the
---     'Vulkan.Extensions.VK_EXT_surface_maintenance1.SurfacePresentScalingCapabilitiesEXT'
+--     'Vulkan.Extensions.VK_KHR_surface_maintenance1.SurfacePresentScalingCapabilitiesKHR'
 --     structure returned by
 --     'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.getPhysicalDeviceSurfaceCapabilities2KHR'
 --     for the surface and @presentMode@
 --
 -- -   #VUID-VkSwapchainCreateInfoKHR-swapchainMaintenance1-10157# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-swapchainMaintenance1 swapchainMaintenance1>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-swapchainMaintenance1 swapchainMaintenance1>
 --     feature is not enabled, then @flags@ /must/ not include
---     'SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_EXT'
+--     'SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_KHR'
 --
 -- -   #VUID-VkSwapchainCreateInfoKHR-imageExtent-01689# @imageExtent@
 --     members @width@ and @height@ /must/ both be non-zero
@@ -2664,7 +2713,7 @@
 --
 -- -   #VUID-VkSwapchainCreateInfoKHR-presentMode-01427# If @presentMode@
 --     is
---     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_FIFO_LATEST_READY_EXT',
+--     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_FIFO_LATEST_READY_KHR',
 --     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_IMMEDIATE_KHR',
 --     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_MAILBOX_KHR',
 --     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_FIFO_KHR' or
@@ -2732,9 +2781,9 @@
 --
 -- -   #VUID-VkSwapchainCreateInfoKHR-presentModeFifoLatestReady-10161# If
 --     the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-presentModeFifoLatestReady presentModeFifoLatestReady>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-presentModeFifoLatestReady presentModeFifoLatestReady>
 --     feature is not enabled, @presentMode@ /must/ not be
---     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_FIFO_LATEST_READY_EXT'
+--     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_FIFO_LATEST_READY_KHR'
 --
 -- -   #VUID-VkSwapchainCreateInfoKHR-physicalDeviceCount-01429# If the
 --     logical device was created with
@@ -2748,7 +2797,7 @@
 --     referred to by @surface@
 --
 -- -   #VUID-VkSwapchainCreateInfoKHR-imageFormat-01778# The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#swapchain-wsi-image-create-info implied image creation parameters>
+--     <https://registry.khronos.org/vulkan/specs/latest/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'
 --
@@ -2766,7 +2815,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#formats-compatibility compatibility table>
+--     <https://registry.khronos.org/vulkan/specs/latest/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@
@@ -2796,11 +2845,19 @@
 --     structure /must/ be included in the @pNext@ chain
 --
 -- -   #VUID-VkSwapchainCreateInfoKHR-pNext-06752# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-imageCompressionControlSwapchain imageCompressionControlSwapchain>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-imageCompressionControlSwapchain imageCompressionControlSwapchain>
 --     feature is not enabled, the @pNext@ chain /must/ not include an
 --     'Vulkan.Extensions.VK_EXT_image_compression_control.ImageCompressionControlEXT'
 --     structure
 --
+-- -   #VUID-VkSwapchainCreateInfoKHR-presentTiming-12232# If none of the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-presentTiming presentTiming>,
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-presentAtAbsoluteTime presentAtAbsoluteTime>,
+--     or
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-presentAtRelativeTime presentAtRelativeTime>
+--     features are enabled, @flags@ /must/ not contain
+--     'SWAPCHAIN_CREATE_PRESENT_TIMING_BIT_EXT'
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-VkSwapchainCreateInfoKHR-sType-sType# @sType@ /must/ be
@@ -2818,12 +2875,12 @@
 --     'Vulkan.Extensions.VK_AMD_display_native_hdr.SwapchainDisplayNativeHdrCreateInfoAMD',
 --     'Vulkan.Extensions.VK_NV_low_latency2.SwapchainLatencyCreateInfoNV',
 --     'Vulkan.Extensions.VK_NV_present_barrier.SwapchainPresentBarrierCreateInfoNV',
---     'Vulkan.Extensions.VK_EXT_swapchain_maintenance1.SwapchainPresentModesCreateInfoEXT',
+--     'Vulkan.Extensions.VK_KHR_swapchain_maintenance1.SwapchainPresentModesCreateInfoKHR',
 --     or
---     'Vulkan.Extensions.VK_EXT_swapchain_maintenance1.SwapchainPresentScalingCreateInfoEXT'
+--     'Vulkan.Extensions.VK_KHR_swapchain_maintenance1.SwapchainPresentScalingCreateInfoKHR'
 --
 -- -   #VUID-VkSwapchainCreateInfoKHR-sType-unique# The @sType@ value of
---     each struct in the @pNext@ chain /must/ be unique
+--     each structure in the @pNext@ chain /must/ be unique
 --
 -- -   #VUID-VkSwapchainCreateInfoKHR-flags-parameter# @flags@ /must/ be a
 --     valid combination of 'SwapchainCreateFlagBitsKHR' values
@@ -2871,6 +2928,12 @@
 --     /must/ have been created, allocated, or retrieved from the same
 --     'Vulkan.Core10.Handles.Instance'
 --
+-- == Host Synchronization
+--
+-- -   Host access to @surface@ /must/ be externally synchronized
+--
+-- -   Host access to @oldSwapchain@ /must/ be externally synchronized
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_swapchain VK_KHR_swapchain>,
@@ -2917,7 +2980,7 @@
     -- @(0, 0)@, for example when the window is minimized. In such a case, it
     -- is not possible to create a swapchain due to the Valid Usage
     -- requirements , unless scaling is selected through
-    -- 'Vulkan.Extensions.VK_EXT_swapchain_maintenance1.SwapchainPresentScalingCreateInfoEXT',
+    -- 'Vulkan.Extensions.VK_KHR_swapchain_maintenance1.SwapchainPresentScalingCreateInfoKHR',
     -- if supported .
     imageExtent :: Extent2D
   , -- | @imageArrayLayers@ is the number of views in a multiview\/stereo
@@ -2998,8 +3061,8 @@
   extends :: forall e b proxy. Typeable e => proxy e -> (Extends SwapchainCreateInfoKHR e => b) -> Maybe b
   extends _ f
     | Just Refl <- eqT @e @SwapchainLatencyCreateInfoNV = Just f
-    | Just Refl <- eqT @e @SwapchainPresentScalingCreateInfoEXT = Just f
-    | Just Refl <- eqT @e @SwapchainPresentModesCreateInfoEXT = Just f
+    | Just Refl <- eqT @e @SwapchainPresentScalingCreateInfoKHR = Just f
+    | Just Refl <- eqT @e @SwapchainPresentModesCreateInfoKHR = Just f
     | Just Refl <- eqT @e @ImageCompressionControlEXT = Just f
     | Just Refl <- eqT @e @SwapchainPresentBarrierCreateInfoNV = Just f
     | Just Refl <- eqT @e @SurfaceFullScreenExclusiveWin32InfoEXT = Just f
@@ -3128,16 +3191,21 @@
 -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR'
 -- layout.
 --
--- When transitioning the image to
--- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR' or
--- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_PRESENT_SRC_KHR', there is
--- no need to delay subsequent processing, or perform any visibility
--- operations (as 'queuePresentKHR' performs automatic visibility
--- operations). To achieve this, the @dstAccessMask@ member of the
--- 'Vulkan.Core10.OtherTypes.ImageMemoryBarrier' /should/ be @0@, and the
--- @dstStageMask@ parameter /should/ be
+-- When transitioning the image to the appropriate layout, there is no need
+-- to delay subsequent processing, or perform any visibility operations (as
+-- 'queuePresentKHR' performs automatic visibility operations). To achieve
+-- this, the @dstAccessMask@ member of the
+-- 'Vulkan.Core10.CommandBufferBuilding.ImageMemoryBarrier' /should/ be
+-- @0@, and the @dstStageMask@ parameter /should/ be
 -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT'.
 --
+-- The second
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+-- of each
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-semaphores-waiting semaphore wait operation>
+-- defined by this structure includes presentation of each image indicated
+-- by @pSwapchains@ and @pImageIndices@.
+--
 -- == Valid Usage
 --
 -- -   #VUID-VkPresentInfoKHR-pSwapchain-09231# Elements of @pSwapchain@
@@ -3156,22 +3224,44 @@
 -- -   #VUID-VkPresentInfoKHR-pNext-06235# If a
 --     'Vulkan.Extensions.VK_KHR_present_id.PresentIdKHR' structure is
 --     included in the @pNext@ chain, and the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-presentId presentId>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-presentId presentId>
 --     feature is not enabled, each @presentIds@ entry in that structure
 --     /must/ be NULL
 --
 -- -   #VUID-VkPresentInfoKHR-swapchainMaintenance1-10158# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-swapchainMaintenance1 swapchainMaintenance1>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-swapchainMaintenance1 swapchainMaintenance1>
 --     feature is not enabled, then the @pNext@ chain /must/ not include a
---     'Vulkan.Extensions.VK_EXT_swapchain_maintenance1.SwapchainPresentFenceInfoEXT'
+--     'Vulkan.Extensions.VK_KHR_swapchain_maintenance1.SwapchainPresentFenceInfoKHR'
 --     structure
 --
 -- -   #VUID-VkPresentInfoKHR-pSwapchains-09199# If any element of the
 --     @pSwapchains@ array has been created with
---     'Vulkan.Extensions.VK_EXT_swapchain_maintenance1.SwapchainPresentModesCreateInfoEXT',
+--     'Vulkan.Extensions.VK_KHR_swapchain_maintenance1.SwapchainPresentModesCreateInfoKHR',
 --     all of the elements of this array /must/ be created with
---     'Vulkan.Extensions.VK_EXT_swapchain_maintenance1.SwapchainPresentModesCreateInfoEXT'
+--     'Vulkan.Extensions.VK_KHR_swapchain_maintenance1.SwapchainPresentModesCreateInfoKHR'
 --
+-- -   #VUID-VkPresentInfoKHR-pNext-09759# If the @pNext@ chain of this
+--     structure includes a
+--     'Vulkan.Extensions.VK_ARM_tensors.FrameBoundaryTensorsARM' structure
+--     then it /must/ also include a
+--     'Vulkan.Extensions.VK_EXT_frame_boundary.FrameBoundaryEXT' structure
+--
+-- -   #VUID-VkPresentInfoKHR-pNext-10821# If a
+--     'Vulkan.Extensions.VK_KHR_present_id2.PresentId2KHR' structure is
+--     included in the @pNext@ chain, and the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-presentId2 presentId2>
+--     feature is not enabled, each @presentIds@ entry in that structure
+--     /must/ be zero
+--
+-- -   #VUID-VkPresentInfoKHR-presentId2Supported-10822# If a
+--     'Vulkan.Extensions.VK_KHR_present_id2.PresentId2KHR' structure is
+--     included and contains non-zero presentIds, @presentId2Supported@
+--     /must/ be 'Vulkan.Core10.FundamentalTypes.TRUE' in the
+--     'Vulkan.Extensions.VK_KHR_present_id2.SurfaceCapabilitiesPresentId2KHR'
+--     structure returned by
+--     'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.getPhysicalDeviceSurfaceCapabilities2KHR'
+--     for the @surface@
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-VkPresentInfoKHR-sType-sType# @sType@ /must/ be
@@ -3183,16 +3273,20 @@
 --     'DeviceGroupPresentInfoKHR',
 --     'Vulkan.Extensions.VK_KHR_display_swapchain.DisplayPresentInfoKHR',
 --     'Vulkan.Extensions.VK_EXT_frame_boundary.FrameBoundaryEXT',
+--     'Vulkan.Extensions.VK_ARM_tensors.FrameBoundaryTensorsARM',
 --     'Vulkan.Extensions.VK_GGP_frame_token.PresentFrameTokenGGP',
+--     'Vulkan.Extensions.VK_KHR_present_id2.PresentId2KHR',
 --     'Vulkan.Extensions.VK_KHR_present_id.PresentIdKHR',
 --     'Vulkan.Extensions.VK_KHR_incremental_present.PresentRegionsKHR',
 --     'Vulkan.Extensions.VK_GOOGLE_display_timing.PresentTimesInfoGOOGLE',
---     'Vulkan.Extensions.VK_EXT_swapchain_maintenance1.SwapchainPresentFenceInfoEXT',
+--     'Vulkan.Extensions.VK_EXT_present_timing.PresentTimingsInfoEXT',
+--     'Vulkan.Extensions.VK_NV_present_metering.SetPresentConfigNV',
+--     'Vulkan.Extensions.VK_KHR_swapchain_maintenance1.SwapchainPresentFenceInfoKHR',
 --     or
---     'Vulkan.Extensions.VK_EXT_swapchain_maintenance1.SwapchainPresentModeInfoEXT'
+--     'Vulkan.Extensions.VK_KHR_swapchain_maintenance1.SwapchainPresentModeInfoKHR'
 --
 -- -   #VUID-VkPresentInfoKHR-sType-unique# The @sType@ value of each
---     struct in the @pNext@ chain /must/ be unique
+--     structure in the @pNext@ chain /must/ be unique
 --
 -- -   #VUID-VkPresentInfoKHR-pWaitSemaphores-parameter# If
 --     @waitSemaphoreCount@ is not @0@, @pWaitSemaphores@ /must/ be a valid
@@ -3219,6 +3313,14 @@
 --     handles of non-ignored parameters /must/ have been created,
 --     allocated, or retrieved from the same 'Vulkan.Core10.Handles.Device'
 --
+-- == Host Synchronization
+--
+-- -   Host access to each member of @pWaitSemaphores@ /must/ be externally
+--     synchronized
+--
+-- -   Host access to each member of @pSwapchains@ /must/ be externally
+--     synchronized
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_swapchain VK_KHR_swapchain>,
@@ -3262,11 +3364,15 @@
   getNext PresentInfoKHR{..} = next
   extends :: forall e b proxy. Typeable e => proxy e -> (Extends PresentInfoKHR e => b) -> Maybe b
   extends _ f
-    | Just Refl <- eqT @e @SwapchainPresentModeInfoEXT = Just f
-    | Just Refl <- eqT @e @SwapchainPresentFenceInfoEXT = Just f
+    | Just Refl <- eqT @e @FrameBoundaryTensorsARM = Just f
+    | Just Refl <- eqT @e @SetPresentConfigNV = Just f
+    | Just Refl <- eqT @e @SwapchainPresentModeInfoKHR = Just f
+    | Just Refl <- eqT @e @SwapchainPresentFenceInfoKHR = Just f
     | Just Refl <- eqT @e @FrameBoundaryEXT = Just f
     | Just Refl <- eqT @e @PresentFrameTokenGGP = Just f
     | Just Refl <- eqT @e @PresentTimesInfoGOOGLE = Just f
+    | Just Refl <- eqT @e @PresentTimingsInfoEXT = Just f
+    | Just Refl <- eqT @e @PresentId2KHR = Just f
     | Just Refl <- eqT @e @PresentIdKHR = Just f
     | Just Refl <- eqT @e @DeviceGroupPresentInfoKHR = Just f
     | Just Refl <- eqT @e @PresentRegionsKHR = Just f
@@ -3417,7 +3523,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#swapchain-wsi-image-create-info implied image creation parameters>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#swapchain-wsi-image-create-info implied image creation parameters>
 --     of the swapchain
 --
 -- == Valid Usage (Implicit)
@@ -3430,6 +3536,12 @@
 --     @swapchain@ /must/ be a valid
 --     'Vulkan.Extensions.Handles.SwapchainKHR' handle
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.Image.ImageCreateInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_device_group VK_KHR_device_group>,
@@ -3498,7 +3610,7 @@
 --
 -- -   #VUID-VkBindImageMemorySwapchainInfoKHR-swapchain-07756# If the
 --     @swapchain@ has been created with
---     'SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_EXT', @imageIndex@
+--     'SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_KHR', @imageIndex@
 --     /must/ be one that has previously been returned by
 --     'acquireNextImageKHR' or 'acquireNextImage2KHR'
 --
@@ -3516,6 +3628,12 @@
 --
 -- -   Host access to @swapchain@ /must/ be externally synchronized
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindImageMemoryInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_device_group VK_KHR_device_group>,
@@ -3673,7 +3791,8 @@
     -- image is available.
     timeout :: Word64
   , -- | @semaphore@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE' or a semaphore
-    -- to signal.
+    -- that defines a
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operation>.
     semaphore :: Semaphore
   , -- | @fence@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE' or a fence to
     -- signal.
@@ -3822,6 +3941,12 @@
 -- -   #VUID-VkDeviceGroupPresentInfoKHR-mode-parameter# @mode@ /must/ be a
 --     valid 'DeviceGroupPresentModeFlagBitsKHR' value
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'PresentInfoKHR'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_device_group VK_KHR_device_group>,
@@ -3885,8 +4010,12 @@
 -- If this structure is not present, @modes@ is considered to be
 -- 'DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'SwapchainCreateInfoKHR'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_device_group VK_KHR_device_group>,
@@ -3947,6 +4076,24 @@
 -- | VkDeviceGroupPresentModeFlagBitsKHR - Bitmask specifying supported
 -- device group present modes
 --
+-- = Description
+--
+-- -   'DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR' specifies that any
+--     physical device with a presentation engine /can/ present its own
+--     swapchain images.
+--
+-- -   'DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR' specifies that any
+--     physical device with a presentation engine /can/ present swapchain
+--     images from any physical device in its @presentMask@.
+--
+-- -   'DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR' specifies that any physical
+--     device with a presentation engine /can/ present the sum of swapchain
+--     images from any physical devices in its @presentMask@.
+--
+-- -   'DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR' specifies
+--     that multiple physical devices with a presentation engine /can/ each
+--     present their own swapchain images.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_device_group VK_KHR_device_group>,
@@ -3957,24 +4104,16 @@
 newtype DeviceGroupPresentModeFlagBitsKHR = DeviceGroupPresentModeFlagBitsKHR Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR' specifies that any physical
--- device with a presentation engine /can/ present its own swapchain
--- images.
+-- No documentation found for Nested "VkDeviceGroupPresentModeFlagBitsKHR" "VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR"
 pattern DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR = DeviceGroupPresentModeFlagBitsKHR 0x00000001
 
--- | 'DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR' specifies that any physical
--- device with a presentation engine /can/ present swapchain images from
--- any physical device in its @presentMask@.
+-- No documentation found for Nested "VkDeviceGroupPresentModeFlagBitsKHR" "VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR"
 pattern DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR = DeviceGroupPresentModeFlagBitsKHR 0x00000002
 
--- | 'DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR' specifies that any physical
--- device with a presentation engine /can/ present the sum of swapchain
--- images from any physical devices in its @presentMask@.
+-- No documentation found for Nested "VkDeviceGroupPresentModeFlagBitsKHR" "VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR"
 pattern DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR = DeviceGroupPresentModeFlagBitsKHR 0x00000004
 
--- | 'DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR' specifies that
--- multiple physical devices with a presentation engine /can/ each present
--- their own swapchain images.
+-- No documentation found for Nested "VkDeviceGroupPresentModeFlagBitsKHR" "VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR"
 pattern DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR = DeviceGroupPresentModeFlagBitsKHR 0x00000008
 
 conNameDeviceGroupPresentModeFlagBitsKHR :: String
@@ -4024,6 +4163,54 @@
 
 -- | VkSwapchainCreateFlagBitsKHR - Bitmask controlling swapchain creation
 --
+-- = Description
+--
+-- -   'SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR' specifies
+--     that images created from the swapchain (i.e. with the @swapchain@
+--     member of 'ImageSwapchainCreateInfoKHR' set to this swapchain’s
+--     handle) /must/ use
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT'.
+--
+-- -   'SWAPCHAIN_CREATE_PROTECTED_BIT_KHR' specifies that images created
+--     from the swapchain are protected images.
+--
+-- -   'SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR' specifies that the images
+--     of the swapchain /can/ be used to create a
+--     'Vulkan.Core10.Handles.ImageView' with a different format than what
+--     the swapchain was created with. The list of allowed image view
+--     formats is specified by adding a
+--     'Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo'
+--     structure to the @pNext@ chain of 'SwapchainCreateInfoKHR'. In
+--     addition, this flag also specifies that the swapchain /can/ be
+--     created with usage flags that are not supported for the format the
+--     swapchain is created with but are supported for at least one of the
+--     allowed image view formats.
+--
+-- -   'SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_KHR' specifies that
+--     the implementation /may/ defer allocation of memory associated with
+--     each swapchain image until its index is to be returned from
+--     'acquireNextImageKHR' or 'acquireNextImage2KHR' for the first time.
+--
+-- -   'SWAPCHAIN_CREATE_PRESENT_ID_2_BIT_KHR' specifies that applications
+--     /can/ include the
+--     'Vulkan.Extensions.VK_KHR_present_id2.PresentId2KHR' structure in
+--     the @pNext@ chain of the 'PresentInfoKHR' structure to associate an
+--     identifier with each presentation request.
+--
+-- -   'SWAPCHAIN_CREATE_PRESENT_WAIT_2_BIT_KHR' specifies that
+--     applications /can/ use
+--     'Vulkan.Extensions.VK_KHR_present_wait2.waitForPresent2KHR' to wait
+--     for the presentation engine to have begun presentation of the
+--     presentation request associated with
+--     'Vulkan.Extensions.VK_KHR_present_wait2.PresentWait2InfoKHR'::@presentId@
+--     on @swapchain@.
+--
+-- -   'SWAPCHAIN_CREATE_PRESENT_TIMING_BIT_EXT' specifies that features
+--     supported by the swapchain device in
+--     'Vulkan.Extensions.VK_EXT_present_timing.PhysicalDevicePresentTimingFeaturesEXT'
+--     /can/ be used to collect timing information or schedule presentation
+--     requests at specific times.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_swapchain VK_KHR_swapchain>,
@@ -4031,33 +4218,25 @@
 newtype SwapchainCreateFlagBitsKHR = SwapchainCreateFlagBitsKHR Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_EXT' specifies that the
--- implementation /may/ defer allocation of memory associated with each
--- swapchain image until its index is to be returned from
--- 'acquireNextImageKHR' or 'acquireNextImage2KHR' for the first time.
-pattern SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_EXT = SwapchainCreateFlagBitsKHR 0x00000008
+-- No documentation found for Nested "VkSwapchainCreateFlagBitsKHR" "VK_SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_KHR"
+pattern SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_KHR = SwapchainCreateFlagBitsKHR 0x00000008
 
--- | 'SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR' specifies that the images of
--- the swapchain /can/ be used to create a
--- 'Vulkan.Core10.Handles.ImageView' with a different format than what the
--- swapchain was created with. The list of allowed image view formats is
--- specified by adding a
--- 'Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo'
--- structure to the @pNext@ chain of 'SwapchainCreateInfoKHR'. In addition,
--- this flag also specifies that the swapchain /can/ be created with usage
--- flags that are not supported for the format the swapchain is created
--- with but are supported for at least one of the allowed image view
--- formats.
+-- No documentation found for Nested "VkSwapchainCreateFlagBitsKHR" "VK_SWAPCHAIN_CREATE_PRESENT_WAIT_2_BIT_KHR"
+pattern SWAPCHAIN_CREATE_PRESENT_WAIT_2_BIT_KHR = SwapchainCreateFlagBitsKHR 0x00000080
+
+-- No documentation found for Nested "VkSwapchainCreateFlagBitsKHR" "VK_SWAPCHAIN_CREATE_PRESENT_ID_2_BIT_KHR"
+pattern SWAPCHAIN_CREATE_PRESENT_ID_2_BIT_KHR = SwapchainCreateFlagBitsKHR 0x00000040
+
+-- No documentation found for Nested "VkSwapchainCreateFlagBitsKHR" "VK_SWAPCHAIN_CREATE_PRESENT_TIMING_BIT_EXT"
+pattern SWAPCHAIN_CREATE_PRESENT_TIMING_BIT_EXT = SwapchainCreateFlagBitsKHR 0x00000200
+
+-- No documentation found for Nested "VkSwapchainCreateFlagBitsKHR" "VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR"
 pattern SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR = SwapchainCreateFlagBitsKHR 0x00000004
 
--- | 'SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR' specifies that
--- images created from the swapchain (i.e. with the @swapchain@ member of
--- 'ImageSwapchainCreateInfoKHR' set to this swapchain’s handle) /must/ use
--- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT'.
+-- No documentation found for Nested "VkSwapchainCreateFlagBitsKHR" "VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR"
 pattern SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = SwapchainCreateFlagBitsKHR 0x00000001
 
--- | 'SWAPCHAIN_CREATE_PROTECTED_BIT_KHR' specifies that images created from
--- the swapchain are protected images.
+-- No documentation found for Nested "VkSwapchainCreateFlagBitsKHR" "VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR"
 pattern SWAPCHAIN_CREATE_PROTECTED_BIT_KHR = SwapchainCreateFlagBitsKHR 0x00000002
 
 conNameSwapchainCreateFlagBitsKHR :: String
@@ -4069,8 +4248,20 @@
 showTableSwapchainCreateFlagBitsKHR :: [(SwapchainCreateFlagBitsKHR, String)]
 showTableSwapchainCreateFlagBitsKHR =
   [
-    ( SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_EXT
-    , "DEFERRED_MEMORY_ALLOCATION_BIT_EXT"
+    ( SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_KHR
+    , "DEFERRED_MEMORY_ALLOCATION_BIT_KHR"
+    )
+  ,
+    ( SWAPCHAIN_CREATE_PRESENT_WAIT_2_BIT_KHR
+    , "PRESENT_WAIT_2_BIT_KHR"
+    )
+  ,
+    ( SWAPCHAIN_CREATE_PRESENT_ID_2_BIT_KHR
+    , "PRESENT_ID_2_BIT_KHR"
+    )
+  ,
+    ( SWAPCHAIN_CREATE_PRESENT_TIMING_BIT_EXT
+    , "PRESENT_TIMING_BIT_EXT"
     )
   ,
     ( SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR
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
@@ -499,7 +499,7 @@
 -- 'Vulkan.Core10.Enums.Format.Format' when creating a swapchain?
 --
 -- __RESOLVED__: While Vulkan itself is color space agnostic (e.g. even the
--- meaning of R, G, B and A can be freely defined by the rendering
+-- meaning of R, G, B, and A can be freely defined by the rendering
 -- application), the swapchain eventually will have to present the images
 -- on a display device with specific color reproduction characteristics. If
 -- any color space transformations are necessary before an image can be
@@ -913,8 +913,8 @@
 --
 --     -   Made improvements to several descriptions.
 --
---     -   Changed the status of several issues from PROPOSED to RESOLVED,
---         leaving no unresolved issues.
+--     -   Changed the status of several issues, leaving no unresolved
+--         issues.
 --
 --     -   Resolved several TODOs, did miscellaneous cleanup, etc.
 --
@@ -1069,7 +1069,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_swapchain Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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_maintenance1.hs b/src/Vulkan/Extensions/VK_KHR_swapchain_maintenance1.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_KHR_swapchain_maintenance1.hs
@@ -0,0 +1,1121 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_KHR_swapchain_maintenance1 - device extension
+--
+-- = VK_KHR_swapchain_maintenance1
+--
+-- [__Name String__]
+--     @VK_KHR_swapchain_maintenance1@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     488
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_swapchain VK_KHR_swapchain>
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_surface_maintenance1 VK_KHR_surface_maintenance1>
+--     and
+--         
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--          or
+--         
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
+--
+-- [__Contact__]
+--
+--     -   Shahbaz Youssefi
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_swapchain_maintenance1] @syoussefi%0A*Here describe the issue or question you have about the VK_KHR_swapchain_maintenance1 extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_KHR_swapchain_maintenance1.adoc VK_KHR_swapchain_maintenance1>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2025-03-31
+--
+-- [__Contributors__]
+--
+--     -   James Jones, NVIDIA
+--
+--     -   Jeff Juliano, NVIDIA
+--
+--     -   Shahbaz Youssefi, Google
+--
+--     -   Chris Forbes, Google
+--
+--     -   Ian Elliott, Google
+--
+--     -   Yiwei Zhang, Google
+--
+--     -   Charlie Lao, Google
+--
+--     -   Lina Versace, Google
+--
+--     -   Ralph Potter, Samsung
+--
+--     -   Igor Nazarov, Samsung
+--
+--     -   Hyunchang Kim, Samsung
+--
+--     -   Suenghwan Lee, Samsung
+--
+--     -   Munseong Kang, Samsung
+--
+--     -   Joonyong Park, Samsung
+--
+--     -   Hans-Kristian Arntzen, Valve
+--
+--     -   Lisa Wu, Arm
+--
+--     -   Daniel Stone, Collabora
+--
+--     -   Pan Gao, Huawei
+--
+-- == Description
+--
+-- This extension is based off the @VK_EXT_swapchain_maintenance1@
+-- extension.
+--
+-- @VK_KHR_swapchain_maintenance1@ adds a collection of window system
+-- integration features that were intentionally left out or overlooked in
+-- the original @VK_KHR_swapchain@ extension.
+--
+-- The new features are as follows:
+--
+-- -   Specify a fence that will be signaled when the resources associated
+--     with a present operation /can/ be safely destroyed.
+--
+-- -   Allow changing the present mode a swapchain is using at per-present
+--     granularity.
+--
+-- -   Allow applications to define the behavior when presenting a
+--     swapchain image to a surface with different dimensions than the
+--     image. Using this feature /may/ allow implementations to avoid
+--     returning 'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DATE_KHR' in this
+--     situation.
+--
+-- -   Allow applications to defer swapchain memory allocation for improved
+--     startup time and memory footprint.
+--
+-- -   Allow applications to release previously acquired images without
+--     presenting them.
+--
+-- == New Commands
+--
+-- -   'releaseSwapchainImagesKHR'
+--
+-- == New Structures
+--
+-- -   'ReleaseSwapchainImagesInfoKHR'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceSwapchainMaintenance1FeaturesKHR'
+--
+-- -   Extending 'Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR':
+--
+--     -   'SwapchainPresentFenceInfoKHR'
+--
+--     -   'SwapchainPresentModeInfoKHR'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR':
+--
+--     -   'SwapchainPresentModesCreateInfoKHR'
+--
+--     -   'SwapchainPresentScalingCreateInfoKHR'
+--
+-- == New Enum Constants
+--
+-- -   'KHR_SWAPCHAIN_MAINTENANCE_1_EXTENSION_NAME'
+--
+-- -   'KHR_SWAPCHAIN_MAINTENANCE_1_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_KHR'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateFlagBitsKHR':
+--
+--     -   'Vulkan.Extensions.VK_KHR_swapchain.SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_KHR'
+--
+-- == Version History
+--
+-- -   Revision 1, 2025-03-31 (Shahbaz Youssefi)
+--
+--     -   Based on VK_EXT_swapchain_maintenance1
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_swapchain_maintenance1 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_swapchain_maintenance1  ( releaseSwapchainImagesKHR
+                                                        , PhysicalDeviceSwapchainMaintenance1FeaturesKHR(..)
+                                                        , SwapchainPresentFenceInfoKHR(..)
+                                                        , SwapchainPresentModesCreateInfoKHR(..)
+                                                        , SwapchainPresentModeInfoKHR(..)
+                                                        , SwapchainPresentScalingCreateInfoKHR(..)
+                                                        , ReleaseSwapchainImagesInfoKHR(..)
+                                                        , KHR_SWAPCHAIN_MAINTENANCE_1_SPEC_VERSION
+                                                        , pattern KHR_SWAPCHAIN_MAINTENANCE_1_SPEC_VERSION
+                                                        , KHR_SWAPCHAIN_MAINTENANCE_1_EXTENSION_NAME
+                                                        , pattern KHR_SWAPCHAIN_MAINTENANCE_1_EXTENSION_NAME
+                                                        , SwapchainKHR(..)
+                                                        , PresentModeKHR(..)
+                                                        , SwapchainCreateFlagBitsKHR(..)
+                                                        , SwapchainCreateFlagsKHR
+                                                        , PresentScalingFlagBitsKHR(..)
+                                                        , PresentScalingFlagsKHR
+                                                        , PresentGravityFlagBitsKHR(..)
+                                                        , PresentGravityFlagsKHR
+                                                        ) where
+
+import Vulkan.Internal.Utils (traceAroundEvent)
+import Control.Monad (unless)
+import Control.Monad.IO.Class (liftIO)
+import Foreign.Marshal.Alloc (allocaBytes)
+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 Data.Vector (generateM)
+import qualified Data.Vector (imapM_)
+import qualified Data.Vector (length)
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (FromCStruct(..))
+import Vulkan.CStruct (ToCStruct)
+import Vulkan.CStruct (ToCStruct(..))
+import Vulkan.Zero (Zero(..))
+import Control.Monad.IO.Class (MonadIO)
+import Data.String (IsString)
+import Data.Typeable (Typeable)
+import Foreign.Storable (Storable)
+import Foreign.Storable (Storable(peek))
+import Foreign.Storable (Storable(poke))
+import qualified Foreign.Storable (Storable(..))
+import GHC.Generics (Generic)
+import GHC.IO.Exception (IOErrorType(..))
+import GHC.IO.Exception (IOException(..))
+import Foreign.Ptr (FunPtr)
+import Foreign.Ptr (Ptr)
+import Data.Word (Word32)
+import Data.Kind (Type)
+import Control.Monad.Trans.Cont (ContT(..))
+import Data.Vector (Vector)
+import Vulkan.CStruct.Utils (advancePtrBytes)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.NamedType ((:::))
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.Core10.Handles (Device)
+import Vulkan.Core10.Handles (Device(..))
+import Vulkan.Core10.Handles (Device(Device))
+import Vulkan.Dynamic (DeviceCmds(pVkReleaseSwapchainImagesKHR))
+import Vulkan.Core10.Handles (Device_T)
+import Vulkan.Core10.Handles (Fence)
+import Vulkan.Extensions.VK_KHR_surface_maintenance1 (PresentGravityFlagsKHR)
+import Vulkan.Extensions.VK_KHR_surface (PresentModeKHR)
+import Vulkan.Extensions.VK_KHR_surface_maintenance1 (PresentScalingFlagsKHR)
+import Vulkan.Core10.Enums.Result (Result)
+import Vulkan.Core10.Enums.Result (Result(..))
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Extensions.Handles (SwapchainKHR)
+import Vulkan.Exception (VulkanException(..))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_KHR))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_KHR))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_KHR))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_KHR))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_KHR))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_KHR))
+import Vulkan.Core10.Enums.Result (Result(SUCCESS))
+import Vulkan.Extensions.VK_KHR_surface_maintenance1 (PresentGravityFlagBitsKHR(..))
+import Vulkan.Extensions.VK_KHR_surface_maintenance1 (PresentGravityFlagsKHR)
+import Vulkan.Extensions.VK_KHR_surface (PresentModeKHR(..))
+import Vulkan.Extensions.VK_KHR_surface_maintenance1 (PresentScalingFlagBitsKHR(..))
+import Vulkan.Extensions.VK_KHR_surface_maintenance1 (PresentScalingFlagsKHR)
+import Vulkan.Extensions.VK_KHR_swapchain (SwapchainCreateFlagBitsKHR(..))
+import Vulkan.Extensions.VK_KHR_swapchain (SwapchainCreateFlagsKHR)
+import Vulkan.Extensions.Handles (SwapchainKHR(..))
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkReleaseSwapchainImagesKHR
+  :: FunPtr (Ptr Device_T -> Ptr ReleaseSwapchainImagesInfoKHR -> IO Result) -> Ptr Device_T -> Ptr ReleaseSwapchainImagesInfoKHR -> IO Result
+
+-- | vkReleaseSwapchainImagesKHR - Release previously acquired but unused
+-- images
+--
+-- = Description
+--
+-- Only images that are not in use by the device /can/ be released.
+--
+-- Releasing images is a read-only operation that will not affect the
+-- content of the released images. Upon reacquiring the image, the image
+-- contents and its layout will be the same as they were prior to releasing
+-- it. However, if a mechanism other than Vulkan is used to modify the
+-- platform window associated with the swapchain, the content of all
+-- presentable images in the swapchain becomes undefined.
+--
+-- This functionality is useful during swapchain recreation, where acquired
+-- images from the old swapchain can be released instead of presented.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkReleaseSwapchainImagesKHR-swapchainMaintenance1-10159#
+--     Feature
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-swapchainMaintenance1 swapchainMaintenance1>
+--     /must/ be enabled
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkReleaseSwapchainImagesKHR-device-parameter# @device@ /must/
+--     be a valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkReleaseSwapchainImagesKHR-pReleaseInfo-parameter#
+--     @pReleaseInfo@ /must/ be a valid pointer to a valid
+--     'ReleaseSwapchainImagesInfoKHR' structure
+--
+-- == 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_SURFACE_LOST_KHR'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_swapchain_maintenance1 VK_EXT_swapchain_maintenance1>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_swapchain_maintenance1 VK_KHR_swapchain_maintenance1>,
+-- 'Vulkan.Core10.Handles.Device', 'ReleaseSwapchainImagesInfoKHR'
+releaseSwapchainImagesKHR :: forall io
+                           . (MonadIO io)
+                          => -- | @device@ is the device associated with
+                             -- 'ReleaseSwapchainImagesInfoKHR'::@swapchain@.
+                             Device
+                          -> -- | @pReleaseInfo@ is a pointer to a 'ReleaseSwapchainImagesInfoKHR'
+                             -- structure containing parameters of the release.
+                             ("releaseInfo" ::: ReleaseSwapchainImagesInfoKHR)
+                          -> io ()
+releaseSwapchainImagesKHR device releaseInfo = liftIO . evalContT $ do
+  let vkReleaseSwapchainImagesKHRPtr = pVkReleaseSwapchainImagesKHR (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkReleaseSwapchainImagesKHRPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkReleaseSwapchainImagesKHR is null" Nothing Nothing
+  let vkReleaseSwapchainImagesKHR' = mkVkReleaseSwapchainImagesKHR vkReleaseSwapchainImagesKHRPtr
+  pReleaseInfo <- ContT $ withCStruct (releaseInfo)
+  r <- lift $ traceAroundEvent "vkReleaseSwapchainImagesKHR" (vkReleaseSwapchainImagesKHR'
+                                                                (deviceHandle (device))
+                                                                pReleaseInfo)
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+
+
+-- | VkPhysicalDeviceSwapchainMaintenance1FeaturesKHR - Structure describing
+-- whether implementation supports swapchain maintenance1 functionality
+--
+-- = Members
+--
+-- This structure describes the following feature:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceSwapchainMaintenance1FeaturesKHR' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceSwapchainMaintenance1FeaturesKHR', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_swapchain_maintenance1 VK_EXT_swapchain_maintenance1>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_swapchain_maintenance1 VK_KHR_swapchain_maintenance1>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceSwapchainMaintenance1FeaturesKHR = PhysicalDeviceSwapchainMaintenance1FeaturesKHR
+  { -- | #features-swapchainMaintenance1# @swapchainMaintenance1@ indicates that
+    -- the implementation supports the following:
+    --
+    -- -   'SwapchainPresentFenceInfoKHR', specifying a fence that is signaled
+    --     when the resources associated with a present operation /can/ be
+    --     safely destroyed.
+    --
+    -- -   'SwapchainPresentModesCreateInfoKHR' and
+    --     'SwapchainPresentModeInfoKHR', allowing the swapchain to switch
+    --     present modes without a need for recreation.
+    --
+    -- -   'SwapchainPresentScalingCreateInfoKHR', specifying the scaling
+    --     behavior of the swapchain in presence of window resizing.
+    --
+    -- -   The
+    --     'Vulkan.Extensions.VK_KHR_swapchain.SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_KHR'
+    --     flag, allowing the implementation to defer the allocation of
+    --     swapchain image memory until first acquisition.
+    --
+    -- -   'releaseSwapchainImagesKHR', allowing acquired swapchain images to
+    --     be released without presenting them.
+    swapchainMaintenance1 :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceSwapchainMaintenance1FeaturesKHR)
+#endif
+deriving instance Show PhysicalDeviceSwapchainMaintenance1FeaturesKHR
+
+instance ToCStruct PhysicalDeviceSwapchainMaintenance1FeaturesKHR where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceSwapchainMaintenance1FeaturesKHR{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (swapchainMaintenance1))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceSwapchainMaintenance1FeaturesKHR where
+  peekCStruct p = do
+    swapchainMaintenance1 <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDeviceSwapchainMaintenance1FeaturesKHR
+             (bool32ToBool swapchainMaintenance1)
+
+instance Storable PhysicalDeviceSwapchainMaintenance1FeaturesKHR where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceSwapchainMaintenance1FeaturesKHR where
+  zero = PhysicalDeviceSwapchainMaintenance1FeaturesKHR
+           zero
+
+
+-- | VkSwapchainPresentFenceInfoKHR - Fences associated with a
+-- vkQueuePresentKHR operation
+--
+-- = Description
+--
+-- The set of /queue operations/ defined by queuing an image for
+-- presentation, as well as operations performed by the presentation
+-- engine, access the payloads of objects associated with the presentation
+-- operation. The associated objects include:
+--
+-- -   The swapchain image, its implicitly bound memory, and any other
+--     resources bound to that memory.
+--
+-- -   The wait semaphores specified when queuing the image for
+--     presentation.
+--
+-- The application /can/ provide a fence that the implementation will
+-- signal after all such queue operations have completed, and after the
+-- presentation engine has taken a reference to the payloads of all objects
+-- provided in 'Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR' that the
+-- presentation engine accesses as part of the present operation. The fence
+-- /may/ not wait for the present operation to complete. For all binary
+-- wait semaphores imported by the presentation engine using the equivalent
+-- of reference transference, as described in
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-importing Importing Semaphore Payloads>,
+-- this fence /must/ not signal until all such semaphore payloads have been
+-- reset by the presentation engine.
+--
+-- The application /can/ destroy the wait semaphores associated with a
+-- given presentation operation when at least one of the associated fences
+-- is signaled, and /can/ destroy the swapchain when the fences associated
+-- with all past presentation requests referring to that swapchain have
+-- signaled.
+--
+-- Fences associated with presentations to the same swapchain on the same
+-- 'Vulkan.Core10.Handles.Queue' /must/ be signaled in the same order as
+-- the present operations.
+--
+-- To specify a fence for each swapchain in a present operation, include
+-- the 'SwapchainPresentFenceInfoKHR' structure in the @pNext@ chain of the
+-- 'Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR' structure.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkSwapchainPresentFenceInfoKHR-swapchainCount-07757#
+--     @swapchainCount@ /must/ be equal to
+--     'Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR'::@swapchainCount@
+--
+-- -   #VUID-VkSwapchainPresentFenceInfoKHR-pFences-07758# Each element of
+--     @pFences@ that is not 'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--     /must/ be unsignaled
+--
+-- -   #VUID-VkSwapchainPresentFenceInfoKHR-pFences-07759# Each element of
+--     @pFences@ that is not 'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--     /must/ not be associated with any other queue command that has not
+--     yet completed execution on that queue
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkSwapchainPresentFenceInfoKHR-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_KHR'
+--
+-- -   #VUID-VkSwapchainPresentFenceInfoKHR-pFences-parameter# @pFences@
+--     /must/ be a valid pointer to an array of @swapchainCount@ valid or
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--     'Vulkan.Core10.Handles.Fence' handles
+--
+-- -   #VUID-VkSwapchainPresentFenceInfoKHR-swapchainCount-arraylength#
+--     @swapchainCount@ /must/ be greater than @0@
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_swapchain_maintenance1 VK_EXT_swapchain_maintenance1>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_swapchain_maintenance1 VK_KHR_swapchain_maintenance1>,
+-- 'Vulkan.Core10.Handles.Fence',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data SwapchainPresentFenceInfoKHR = SwapchainPresentFenceInfoKHR
+  { -- | @pFences@ is a list of fences with @swapchainCount@ entries. Each entry
+    -- /must/ be 'Vulkan.Core10.APIConstants.NULL_HANDLE' or the handle of a
+    -- fence to signal when the relevant operations on the associated swapchain
+    -- have completed.
+    fences :: Vector Fence }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (SwapchainPresentFenceInfoKHR)
+#endif
+deriving instance Show SwapchainPresentFenceInfoKHR
+
+instance ToCStruct SwapchainPresentFenceInfoKHR where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p SwapchainPresentFenceInfoKHR{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_KHR)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (fences)) :: Word32))
+    pPFences' <- ContT $ allocaBytes @Fence ((Data.Vector.length (fences)) * 8)
+    lift $ Data.Vector.imapM_ (\i e -> poke (pPFences' `plusPtr` (8 * (i)) :: Ptr Fence) (e)) (fences)
+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Fence))) (pPFences')
+    lift $ f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    f
+
+instance FromCStruct SwapchainPresentFenceInfoKHR where
+  peekCStruct p = do
+    swapchainCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    pFences <- peek @(Ptr Fence) ((p `plusPtr` 24 :: Ptr (Ptr Fence)))
+    pFences' <- generateM (fromIntegral swapchainCount) (\i -> peek @Fence ((pFences `advancePtrBytes` (8 * (i)) :: Ptr Fence)))
+    pure $ SwapchainPresentFenceInfoKHR
+             pFences'
+
+instance Zero SwapchainPresentFenceInfoKHR where
+  zero = SwapchainPresentFenceInfoKHR
+           mempty
+
+
+-- | VkSwapchainPresentModesCreateInfoKHR - All presentation modes usable by
+-- the swapchain
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkSwapchainPresentModesCreateInfoKHR-None-07762# Each entry in
+--     pPresentModes /must/ be one of the
+--     'Vulkan.Extensions.VK_KHR_surface.PresentModeKHR' values returned by
+--     'Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfacePresentModesKHR'
+--     for the surface
+--
+-- -   #VUID-VkSwapchainPresentModesCreateInfoKHR-presentModeFifoLatestReady-10160#
+--     If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-presentModeFifoLatestReady presentModeFifoLatestReady>
+--     feature is not enabled, pPresentModes /must/ not contain
+--     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_FIFO_LATEST_READY_KHR'
+--
+-- -   #VUID-VkSwapchainPresentModesCreateInfoKHR-pPresentModes-07763# The
+--     entries in pPresentModes /must/ be a subset of the present modes
+--     returned in
+--     'Vulkan.Extensions.VK_KHR_surface_maintenance1.SurfacePresentModeCompatibilityKHR'::@pPresentModes@,
+--     given
+--     'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR'::@presentMode@
+--     in
+--     'Vulkan.Extensions.VK_KHR_surface_maintenance1.SurfacePresentModeKHR'
+--
+-- -   #VUID-VkSwapchainPresentModesCreateInfoKHR-presentMode-07764#
+--     'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR'::@presentMode@
+--     /must/ be included in @pPresentModes@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkSwapchainPresentModesCreateInfoKHR-sType-sType# @sType@
+--     /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_KHR'
+--
+-- -   #VUID-VkSwapchainPresentModesCreateInfoKHR-pPresentModes-parameter#
+--     @pPresentModes@ /must/ be a valid pointer to an array of
+--     @presentModeCount@ valid
+--     'Vulkan.Extensions.VK_KHR_surface.PresentModeKHR' values
+--
+-- -   #VUID-VkSwapchainPresentModesCreateInfoKHR-presentModeCount-arraylength#
+--     @presentModeCount@ /must/ be greater than @0@
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_swapchain_maintenance1 VK_EXT_swapchain_maintenance1>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_swapchain_maintenance1 VK_KHR_swapchain_maintenance1>,
+-- 'Vulkan.Extensions.VK_KHR_surface.PresentModeKHR',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data SwapchainPresentModesCreateInfoKHR = SwapchainPresentModesCreateInfoKHR
+  { -- | @pPresentModes@ is a list of presentation modes with @presentModeCount@
+    -- entries
+    presentModes :: Vector PresentModeKHR }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (SwapchainPresentModesCreateInfoKHR)
+#endif
+deriving instance Show SwapchainPresentModesCreateInfoKHR
+
+instance ToCStruct SwapchainPresentModesCreateInfoKHR where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p SwapchainPresentModesCreateInfoKHR{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_KHR)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (presentModes)) :: Word32))
+    pPPresentModes' <- ContT $ allocaBytes @PresentModeKHR ((Data.Vector.length (presentModes)) * 4)
+    lift $ Data.Vector.imapM_ (\i e -> poke (pPPresentModes' `plusPtr` (4 * (i)) :: Ptr PresentModeKHR) (e)) (presentModes)
+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr PresentModeKHR))) (pPPresentModes')
+    lift $ f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    f
+
+instance FromCStruct SwapchainPresentModesCreateInfoKHR where
+  peekCStruct p = do
+    presentModeCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    pPresentModes <- peek @(Ptr PresentModeKHR) ((p `plusPtr` 24 :: Ptr (Ptr PresentModeKHR)))
+    pPresentModes' <- generateM (fromIntegral presentModeCount) (\i -> peek @PresentModeKHR ((pPresentModes `advancePtrBytes` (4 * (i)) :: Ptr PresentModeKHR)))
+    pure $ SwapchainPresentModesCreateInfoKHR
+             pPresentModes'
+
+instance Zero SwapchainPresentModesCreateInfoKHR where
+  zero = SwapchainPresentModesCreateInfoKHR
+           mempty
+
+
+-- | VkSwapchainPresentModeInfoKHR - Presentation modes for a
+-- vkQueuePresentKHR operation
+--
+-- = Description
+--
+-- If the @pNext@ chain of
+-- 'Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR' includes a
+-- 'SwapchainPresentModeInfoKHR' structure, then that structure defines the
+-- presentation modes used for the current and subsequent presentation
+-- operations.
+--
+-- When the application changes present modes with
+-- 'SwapchainPresentModeInfoKHR', images that have already been queued for
+-- presentation will continue to be presented according to the previous
+-- present mode. The current image being queued for presentation and
+-- subsequent images will be presented according to the new present mode.
+-- The behavior during the transition between the two modes is defined as
+-- follows.
+--
+-- -   Transition from
+--     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR'
+--     to
+--     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR':
+--     the presentation engine updates the shared presentable image
+--     according to the behavior of
+--     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR'.
+--
+-- -   Transition from
+--     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR'
+--     to
+--     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR':
+--     the presentation engine /may/ update the shared presentable image or
+--     defer that to its regular refresh cycle, according to the behavior
+--     of
+--     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR'.
+--
+-- -   Transition between
+--     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_FIFO_KHR' and
+--     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_FIFO_RELAXED_KHR':
+--     Images continue to be appended to the same FIFO queue, and the
+--     behavior with respect to waiting for vertical blanking period will
+--     follow the new mode for current and subsequent images.
+--
+-- -   Transition from
+--     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_IMMEDIATE_KHR' to
+--     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_FIFO_KHR' or
+--     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_FIFO_RELAXED_KHR' or
+--     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_FIFO_LATEST_READY_KHR'
+--     : As all prior present requests in the
+--     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_IMMEDIATE_KHR' mode
+--     are applied immediately, there are no outstanding present operations
+--     in this mode, and current and subsequent images are appended to the
+--     FIFO queue and presented according to the new mode.
+--
+-- -   Transition from
+--     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_MAILBOX_KHR' to
+--     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_FIFO_KHR' or
+--     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_FIFO_RELAXED_KHR' or
+--     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_FIFO_LATEST_READY_KHR'
+--     : Presentation in FIFO modes require waiting for the next vertical
+--     blanking period, with
+--     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_MAILBOX_KHR' allowing
+--     the pending present operation to be replaced by a new one. In this
+--     case, the current present operation will replace the pending present
+--     operation and is applied according to the new mode.
+--
+-- -   Transition from
+--     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_FIFO_KHR' or
+--     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_FIFO_RELAXED_KHR' or
+--     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_FIFO_LATEST_READY_KHR'
+--     to 'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_IMMEDIATE_KHR' or
+--     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_MAILBOX_KHR': If the
+--     FIFO queue is empty, presentation is done according to the behavior
+--     of the new mode. If there are present operations in the FIFO queue,
+--     once the last present operation is performed based on the respective
+--     vertical blanking period, the current and subsequent updates are
+--     applied according to the new mode.
+--
+-- -   Transition between
+--     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_FIFO_KHR' or
+--     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_FIFO_RELAXED_KHR',
+--     and
+--     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_FIFO_LATEST_READY_KHR':
+--     Images continue to be appended to the same FIFO queue, and the
+--     behavior with respect to waiting for vertical blanking period and
+--     dequeuing requests will follow the new mode for current and
+--     subsequent images.
+--
+-- -   The behavior during transition between any other present modes, if
+--     possible, is implementation defined.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkSwapchainPresentModeInfoKHR-swapchainCount-07760#
+--     @swapchainCount@ /must/ be equal to
+--     'Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR'::@swapchainCount@
+--
+-- -   #VUID-VkSwapchainPresentModeInfoKHR-pPresentModes-07761# Each entry
+--     in @pPresentModes@ /must/ be a presentation mode specified in
+--     'SwapchainPresentModesCreateInfoKHR'::@pPresentModes@ when creating
+--     the entry’s corresponding swapchain
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkSwapchainPresentModeInfoKHR-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_KHR'
+--
+-- -   #VUID-VkSwapchainPresentModeInfoKHR-pPresentModes-parameter#
+--     @pPresentModes@ /must/ be a valid pointer to an array of
+--     @swapchainCount@ valid
+--     'Vulkan.Extensions.VK_KHR_surface.PresentModeKHR' values
+--
+-- -   #VUID-VkSwapchainPresentModeInfoKHR-swapchainCount-arraylength#
+--     @swapchainCount@ /must/ be greater than @0@
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_swapchain_maintenance1 VK_EXT_swapchain_maintenance1>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_swapchain_maintenance1 VK_KHR_swapchain_maintenance1>,
+-- 'Vulkan.Extensions.VK_KHR_surface.PresentModeKHR',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data SwapchainPresentModeInfoKHR = SwapchainPresentModeInfoKHR
+  { -- | @pPresentModes@ is a list of presentation modes with @swapchainCount@
+    -- entries.
+    presentModes :: Vector PresentModeKHR }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (SwapchainPresentModeInfoKHR)
+#endif
+deriving instance Show SwapchainPresentModeInfoKHR
+
+instance ToCStruct SwapchainPresentModeInfoKHR where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p SwapchainPresentModeInfoKHR{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_KHR)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (presentModes)) :: Word32))
+    pPPresentModes' <- ContT $ allocaBytes @PresentModeKHR ((Data.Vector.length (presentModes)) * 4)
+    lift $ Data.Vector.imapM_ (\i e -> poke (pPPresentModes' `plusPtr` (4 * (i)) :: Ptr PresentModeKHR) (e)) (presentModes)
+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr PresentModeKHR))) (pPPresentModes')
+    lift $ f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    f
+
+instance FromCStruct SwapchainPresentModeInfoKHR where
+  peekCStruct p = do
+    swapchainCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    pPresentModes <- peek @(Ptr PresentModeKHR) ((p `plusPtr` 24 :: Ptr (Ptr PresentModeKHR)))
+    pPresentModes' <- generateM (fromIntegral swapchainCount) (\i -> peek @PresentModeKHR ((pPresentModes `advancePtrBytes` (4 * (i)) :: Ptr PresentModeKHR)))
+    pure $ SwapchainPresentModeInfoKHR
+             pPresentModes'
+
+instance Zero SwapchainPresentModeInfoKHR where
+  zero = SwapchainPresentModeInfoKHR
+           mempty
+
+
+-- | VkSwapchainPresentScalingCreateInfoKHR - Scaling behavior when
+-- presenting to the surface
+--
+-- = Description
+--
+-- If @scalingBehavior@ is @0@, the result of presenting a swapchain image
+-- with dimensions that do not match the surface dimensions is
+-- implementation and platform-dependent. If @presentGravityX@ or
+-- @presentGravityY@ are @0@, the presentation gravity /must/ match that
+-- defined by the native platform surface on platforms which define surface
+-- gravity.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkSwapchainPresentScalingCreateInfoKHR-presentGravityX-07765#
+--     If @presentGravityX@ is @0@, @presentGravityY@ /must/ be @0@
+--
+-- -   #VUID-VkSwapchainPresentScalingCreateInfoKHR-presentGravityX-07766#
+--     If @presentGravityX@ is not @0@, @presentGravityY@ /must/ not be @0@
+--
+-- -   #VUID-VkSwapchainPresentScalingCreateInfoKHR-scalingBehavior-07767#
+--     @scalingBehavior@ /must/ not have more than one bit set
+--
+-- -   #VUID-VkSwapchainPresentScalingCreateInfoKHR-presentGravityX-07768#
+--     @presentGravityX@ /must/ not have more than one bit set
+--
+-- -   #VUID-VkSwapchainPresentScalingCreateInfoKHR-presentGravityY-07769#
+--     @presentGravityY@ /must/ not have more than one bit set
+--
+-- -   #VUID-VkSwapchainPresentScalingCreateInfoKHR-scalingBehavior-07770#
+--     @scalingBehavior@ /must/ be @0@ or a valid scaling method for the
+--     surface as returned in
+--     'Vulkan.Extensions.VK_KHR_surface_maintenance1.SurfacePresentScalingCapabilitiesKHR'::@supportedPresentScaling@,
+--     given
+--     'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR'::@presentMode@
+--     in
+--     'Vulkan.Extensions.VK_KHR_surface_maintenance1.SurfacePresentModeKHR'
+--
+-- -   #VUID-VkSwapchainPresentScalingCreateInfoKHR-scalingBehavior-07771#
+--     If the swapchain is created with
+--     'SwapchainPresentModesCreateInfoKHR', @scalingBehavior@ /must/ be
+--     @0@ or a valid scaling method for the surface as returned in
+--     'Vulkan.Extensions.VK_KHR_surface_maintenance1.SurfacePresentScalingCapabilitiesKHR'::@supportedPresentScaling@,
+--     given each present mode in
+--     'SwapchainPresentModesCreateInfoKHR'::@pPresentModes@ in
+--     'Vulkan.Extensions.VK_KHR_surface_maintenance1.SurfacePresentModeKHR'
+--
+-- -   #VUID-VkSwapchainPresentScalingCreateInfoKHR-presentGravityX-07772#
+--     @presentGravityX@ /must/ be @0@ or a valid x-axis present gravity
+--     for the surface as returned in
+--     'Vulkan.Extensions.VK_KHR_surface_maintenance1.SurfacePresentScalingCapabilitiesKHR'::@supportedPresentGravityX@,
+--     given
+--     'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR'::@presentMode@
+--     in
+--     'Vulkan.Extensions.VK_KHR_surface_maintenance1.SurfacePresentModeKHR'
+--
+-- -   #VUID-VkSwapchainPresentScalingCreateInfoKHR-presentGravityX-07773#
+--     If the swapchain is created with
+--     'SwapchainPresentModesCreateInfoKHR', @presentGravityX@ /must/ be
+--     @0@ or a valid x-axis present gravity for the surface as returned in
+--     'Vulkan.Extensions.VK_KHR_surface_maintenance1.SurfacePresentScalingCapabilitiesKHR'::@supportedPresentGravityX@,
+--     given each present mode in
+--     'SwapchainPresentModesCreateInfoKHR'::@pPresentModes@ in
+--     'Vulkan.Extensions.VK_KHR_surface_maintenance1.SurfacePresentModeKHR'
+--
+-- -   #VUID-VkSwapchainPresentScalingCreateInfoKHR-presentGravityY-07774#
+--     @presentGravityY@ /must/ be @0@ or a valid y-axis present gravity
+--     for the surface as returned in
+--     'Vulkan.Extensions.VK_KHR_surface_maintenance1.SurfacePresentScalingCapabilitiesKHR'::@supportedPresentGravityY@,
+--     given
+--     'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR'::@presentMode@
+--     in
+--     'Vulkan.Extensions.VK_KHR_surface_maintenance1.SurfacePresentModeKHR'
+--
+-- -   #VUID-VkSwapchainPresentScalingCreateInfoKHR-presentGravityY-07775#
+--     If the swapchain is created with
+--     'SwapchainPresentModesCreateInfoKHR', @presentGravityY@ /must/ be
+--     @0@ or a valid y-axis present gravity for the surface as returned in
+--     'Vulkan.Extensions.VK_KHR_surface_maintenance1.SurfacePresentScalingCapabilitiesKHR'::@supportedPresentGravityY@,
+--     given each present mode in
+--     'SwapchainPresentModesCreateInfoKHR'::@pPresentModes@ in
+--     'Vulkan.Extensions.VK_KHR_surface_maintenance1.SurfacePresentModeKHR'
+--
+-- -   #VUID-VkSwapchainPresentScalingCreateInfoKHR-swapchainMaintenance1-10154#
+--     If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-swapchainMaintenance1 swapchainMaintenance1>
+--     feature is not enabled, then @scalingBehavior@, @presentGravityX@,
+--     and @presentGravityY@ /must/ be @0@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkSwapchainPresentScalingCreateInfoKHR-sType-sType# @sType@
+--     /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_KHR'
+--
+-- -   #VUID-VkSwapchainPresentScalingCreateInfoKHR-scalingBehavior-parameter#
+--     @scalingBehavior@ /must/ be a valid combination of
+--     'Vulkan.Extensions.VK_KHR_surface_maintenance1.PresentScalingFlagBitsKHR'
+--     values
+--
+-- -   #VUID-VkSwapchainPresentScalingCreateInfoKHR-presentGravityX-parameter#
+--     @presentGravityX@ /must/ be a valid combination of
+--     'Vulkan.Extensions.VK_KHR_surface_maintenance1.PresentGravityFlagBitsKHR'
+--     values
+--
+-- -   #VUID-VkSwapchainPresentScalingCreateInfoKHR-presentGravityY-parameter#
+--     @presentGravityY@ /must/ be a valid combination of
+--     'Vulkan.Extensions.VK_KHR_surface_maintenance1.PresentGravityFlagBitsKHR'
+--     values
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_swapchain_maintenance1 VK_EXT_swapchain_maintenance1>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_swapchain_maintenance1 VK_KHR_swapchain_maintenance1>,
+-- 'Vulkan.Extensions.VK_KHR_surface_maintenance1.PresentGravityFlagsKHR',
+-- 'Vulkan.Extensions.VK_KHR_surface_maintenance1.PresentScalingFlagsKHR',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data SwapchainPresentScalingCreateInfoKHR = SwapchainPresentScalingCreateInfoKHR
+  { -- | @scalingBehavior@ is @0@ or the scaling method to use when the
+    -- dimensions of the surface and swapchain images differ.
+    scalingBehavior :: PresentScalingFlagsKHR
+  , -- | @presentGravityX@ is @0@ or the x-axis direction in which swapchain
+    -- image pixels gravitate relative to the surface when @scalingBehavior@
+    -- does not result in a one-to-one pixel mapping between the scaled
+    -- swapchain image and the surface.
+    presentGravityX :: PresentGravityFlagsKHR
+  , -- | @presentGravityY@ is @0@ or the y-axis direction in which swapchain
+    -- image pixels gravitate relative to the surface when @scalingBehavior@
+    -- does not result in a one-to-one pixel mapping between the scaled
+    -- swapchain image and the surface.
+    presentGravityY :: PresentGravityFlagsKHR
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (SwapchainPresentScalingCreateInfoKHR)
+#endif
+deriving instance Show SwapchainPresentScalingCreateInfoKHR
+
+instance ToCStruct SwapchainPresentScalingCreateInfoKHR where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p SwapchainPresentScalingCreateInfoKHR{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr PresentScalingFlagsKHR)) (scalingBehavior)
+    poke ((p `plusPtr` 20 :: Ptr PresentGravityFlagsKHR)) (presentGravityX)
+    poke ((p `plusPtr` 24 :: Ptr PresentGravityFlagsKHR)) (presentGravityY)
+    f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    f
+
+instance FromCStruct SwapchainPresentScalingCreateInfoKHR where
+  peekCStruct p = do
+    scalingBehavior <- peek @PresentScalingFlagsKHR ((p `plusPtr` 16 :: Ptr PresentScalingFlagsKHR))
+    presentGravityX <- peek @PresentGravityFlagsKHR ((p `plusPtr` 20 :: Ptr PresentGravityFlagsKHR))
+    presentGravityY <- peek @PresentGravityFlagsKHR ((p `plusPtr` 24 :: Ptr PresentGravityFlagsKHR))
+    pure $ SwapchainPresentScalingCreateInfoKHR
+             scalingBehavior presentGravityX presentGravityY
+
+instance Storable SwapchainPresentScalingCreateInfoKHR where
+  sizeOf ~_ = 32
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero SwapchainPresentScalingCreateInfoKHR where
+  zero = SwapchainPresentScalingCreateInfoKHR
+           zero
+           zero
+           zero
+
+
+-- | VkReleaseSwapchainImagesInfoKHR - Structure describing a list of
+-- swapchain image indices to be released
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkReleaseSwapchainImagesInfoKHR-pImageIndices-07785# Each
+--     element of @pImageIndices@ /must/ be the index of a presentable
+--     image acquired from the swapchain specified by @swapchain@
+--
+-- -   #VUID-VkReleaseSwapchainImagesInfoKHR-pImageIndices-07786# All uses
+--     of presentable images identified by elements of @pImageIndices@
+--     /must/ have completed execution
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkReleaseSwapchainImagesInfoKHR-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_KHR'
+--
+-- -   #VUID-VkReleaseSwapchainImagesInfoKHR-pNext-pNext# @pNext@ /must/ be
+--     @NULL@
+--
+-- -   #VUID-VkReleaseSwapchainImagesInfoKHR-swapchain-parameter#
+--     @swapchain@ /must/ be a valid
+--     'Vulkan.Extensions.Handles.SwapchainKHR' handle
+--
+-- -   #VUID-VkReleaseSwapchainImagesInfoKHR-pImageIndices-parameter#
+--     @pImageIndices@ /must/ be a valid pointer to an array of
+--     @imageIndexCount@ @uint32_t@ values
+--
+-- -   #VUID-VkReleaseSwapchainImagesInfoKHR-imageIndexCount-arraylength#
+--     @imageIndexCount@ /must/ be greater than @0@
+--
+-- == Host Synchronization
+--
+-- -   Host access to @swapchain@ /must/ be externally synchronized
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_swapchain_maintenance1 VK_EXT_swapchain_maintenance1>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_swapchain_maintenance1 VK_KHR_swapchain_maintenance1>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'Vulkan.Extensions.Handles.SwapchainKHR', 'releaseSwapchainImagesKHR',
+-- 'releaseSwapchainImagesKHR'
+data ReleaseSwapchainImagesInfoKHR = ReleaseSwapchainImagesInfoKHR
+  { -- | @swapchain@ is a swapchain to which images are being released.
+    swapchain :: SwapchainKHR
+  , -- | @pImageIndices@ is a pointer to an array of indices into the array of
+    -- @swapchain@’s presentable images, with @imageIndexCount@ entries.
+    imageIndices :: Vector Word32
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (ReleaseSwapchainImagesInfoKHR)
+#endif
+deriving instance Show ReleaseSwapchainImagesInfoKHR
+
+instance ToCStruct ReleaseSwapchainImagesInfoKHR where
+  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p ReleaseSwapchainImagesInfoKHR{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_KHR)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr SwapchainKHR)) (swapchain)
+    lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (imageIndices)) :: Word32))
+    pPImageIndices' <- ContT $ allocaBytes @Word32 ((Data.Vector.length (imageIndices)) * 4)
+    lift $ Data.Vector.imapM_ (\i e -> poke (pPImageIndices' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (imageIndices)
+    lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr Word32))) (pPImageIndices')
+    lift $ f
+  cStructSize = 40
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr SwapchainKHR)) (zero)
+    f
+
+instance FromCStruct ReleaseSwapchainImagesInfoKHR where
+  peekCStruct p = do
+    swapchain <- peek @SwapchainKHR ((p `plusPtr` 16 :: Ptr SwapchainKHR))
+    imageIndexCount <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))
+    pImageIndices <- peek @(Ptr Word32) ((p `plusPtr` 32 :: Ptr (Ptr Word32)))
+    pImageIndices' <- generateM (fromIntegral imageIndexCount) (\i -> peek @Word32 ((pImageIndices `advancePtrBytes` (4 * (i)) :: Ptr Word32)))
+    pure $ ReleaseSwapchainImagesInfoKHR
+             swapchain pImageIndices'
+
+instance Zero ReleaseSwapchainImagesInfoKHR where
+  zero = ReleaseSwapchainImagesInfoKHR
+           zero
+           mempty
+
+
+type KHR_SWAPCHAIN_MAINTENANCE_1_SPEC_VERSION = 1
+
+-- No documentation found for TopLevel "VK_KHR_SWAPCHAIN_MAINTENANCE_1_SPEC_VERSION"
+pattern KHR_SWAPCHAIN_MAINTENANCE_1_SPEC_VERSION :: forall a . Integral a => a
+pattern KHR_SWAPCHAIN_MAINTENANCE_1_SPEC_VERSION = 1
+
+
+type KHR_SWAPCHAIN_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_swapchain_maintenance1"
+
+-- No documentation found for TopLevel "VK_KHR_SWAPCHAIN_MAINTENANCE_1_EXTENSION_NAME"
+pattern KHR_SWAPCHAIN_MAINTENANCE_1_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern KHR_SWAPCHAIN_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_swapchain_maintenance1"
+
diff --git a/src/Vulkan/Extensions/VK_KHR_swapchain_maintenance1.hs-boot b/src/Vulkan/Extensions/VK_KHR_swapchain_maintenance1.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_KHR_swapchain_maintenance1.hs-boot
@@ -0,0 +1,241 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_KHR_swapchain_maintenance1 - device extension
+--
+-- = VK_KHR_swapchain_maintenance1
+--
+-- [__Name String__]
+--     @VK_KHR_swapchain_maintenance1@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     488
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_swapchain VK_KHR_swapchain>
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_surface_maintenance1 VK_KHR_surface_maintenance1>
+--     and
+--         
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--          or
+--         
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
+--
+-- [__Contact__]
+--
+--     -   Shahbaz Youssefi
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_swapchain_maintenance1] @syoussefi%0A*Here describe the issue or question you have about the VK_KHR_swapchain_maintenance1 extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_KHR_swapchain_maintenance1.adoc VK_KHR_swapchain_maintenance1>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2025-03-31
+--
+-- [__Contributors__]
+--
+--     -   James Jones, NVIDIA
+--
+--     -   Jeff Juliano, NVIDIA
+--
+--     -   Shahbaz Youssefi, Google
+--
+--     -   Chris Forbes, Google
+--
+--     -   Ian Elliott, Google
+--
+--     -   Yiwei Zhang, Google
+--
+--     -   Charlie Lao, Google
+--
+--     -   Lina Versace, Google
+--
+--     -   Ralph Potter, Samsung
+--
+--     -   Igor Nazarov, Samsung
+--
+--     -   Hyunchang Kim, Samsung
+--
+--     -   Suenghwan Lee, Samsung
+--
+--     -   Munseong Kang, Samsung
+--
+--     -   Joonyong Park, Samsung
+--
+--     -   Hans-Kristian Arntzen, Valve
+--
+--     -   Lisa Wu, Arm
+--
+--     -   Daniel Stone, Collabora
+--
+--     -   Pan Gao, Huawei
+--
+-- == Description
+--
+-- This extension is based off the @VK_EXT_swapchain_maintenance1@
+-- extension.
+--
+-- @VK_KHR_swapchain_maintenance1@ adds a collection of window system
+-- integration features that were intentionally left out or overlooked in
+-- the original @VK_KHR_swapchain@ extension.
+--
+-- The new features are as follows:
+--
+-- -   Specify a fence that will be signaled when the resources associated
+--     with a present operation /can/ be safely destroyed.
+--
+-- -   Allow changing the present mode a swapchain is using at per-present
+--     granularity.
+--
+-- -   Allow applications to define the behavior when presenting a
+--     swapchain image to a surface with different dimensions than the
+--     image. Using this feature /may/ allow implementations to avoid
+--     returning 'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DATE_KHR' in this
+--     situation.
+--
+-- -   Allow applications to defer swapchain memory allocation for improved
+--     startup time and memory footprint.
+--
+-- -   Allow applications to release previously acquired images without
+--     presenting them.
+--
+-- == New Commands
+--
+-- -   'releaseSwapchainImagesKHR'
+--
+-- == New Structures
+--
+-- -   'ReleaseSwapchainImagesInfoKHR'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceSwapchainMaintenance1FeaturesKHR'
+--
+-- -   Extending 'Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR':
+--
+--     -   'SwapchainPresentFenceInfoKHR'
+--
+--     -   'SwapchainPresentModeInfoKHR'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR':
+--
+--     -   'SwapchainPresentModesCreateInfoKHR'
+--
+--     -   'SwapchainPresentScalingCreateInfoKHR'
+--
+-- == New Enum Constants
+--
+-- -   'KHR_SWAPCHAIN_MAINTENANCE_1_EXTENSION_NAME'
+--
+-- -   'KHR_SWAPCHAIN_MAINTENANCE_1_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_KHR'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateFlagBitsKHR':
+--
+--     -   'Vulkan.Extensions.VK_KHR_swapchain.SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_KHR'
+--
+-- == Version History
+--
+-- -   Revision 1, 2025-03-31 (Shahbaz Youssefi)
+--
+--     -   Based on VK_EXT_swapchain_maintenance1
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_swapchain_maintenance1 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_swapchain_maintenance1  ( PhysicalDeviceSwapchainMaintenance1FeaturesKHR
+                                                        , ReleaseSwapchainImagesInfoKHR
+                                                        , SwapchainPresentFenceInfoKHR
+                                                        , SwapchainPresentModeInfoKHR
+                                                        , SwapchainPresentModesCreateInfoKHR
+                                                        , SwapchainPresentScalingCreateInfoKHR
+                                                        ) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data PhysicalDeviceSwapchainMaintenance1FeaturesKHR
+
+instance ToCStruct PhysicalDeviceSwapchainMaintenance1FeaturesKHR
+instance Show PhysicalDeviceSwapchainMaintenance1FeaturesKHR
+
+instance FromCStruct PhysicalDeviceSwapchainMaintenance1FeaturesKHR
+
+
+data ReleaseSwapchainImagesInfoKHR
+
+instance ToCStruct ReleaseSwapchainImagesInfoKHR
+instance Show ReleaseSwapchainImagesInfoKHR
+
+instance FromCStruct ReleaseSwapchainImagesInfoKHR
+
+
+data SwapchainPresentFenceInfoKHR
+
+instance ToCStruct SwapchainPresentFenceInfoKHR
+instance Show SwapchainPresentFenceInfoKHR
+
+instance FromCStruct SwapchainPresentFenceInfoKHR
+
+
+data SwapchainPresentModeInfoKHR
+
+instance ToCStruct SwapchainPresentModeInfoKHR
+instance Show SwapchainPresentModeInfoKHR
+
+instance FromCStruct SwapchainPresentModeInfoKHR
+
+
+data SwapchainPresentModesCreateInfoKHR
+
+instance ToCStruct SwapchainPresentModesCreateInfoKHR
+instance Show SwapchainPresentModesCreateInfoKHR
+
+instance FromCStruct SwapchainPresentModesCreateInfoKHR
+
+
+data SwapchainPresentScalingCreateInfoKHR
+
+instance ToCStruct SwapchainPresentScalingCreateInfoKHR
+instance Show SwapchainPresentScalingCreateInfoKHR
+
+instance FromCStruct SwapchainPresentScalingCreateInfoKHR
+
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
@@ -122,7 +122,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_swapchain_mutable_format Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -142,8 +142,7 @@
 --     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'
+--     new 'PIPELINE_STAGE_NONE_KHR' and 'PIPELINE_STAGE_2_NONE_KHR'
 --     values.
 --
 -- -   'MemoryBarrier2KHR' can be chained to
@@ -219,6 +218,50 @@
 --
 --     -   'ACCESS_NONE_KHR'
 --
+-- -   Extending 'Vulkan.Core13.Enums.AccessFlags2.AccessFlagBits2':
+--
+--     -   '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_HOST_READ_BIT_KHR'
+--
+--     -   'ACCESS_2_HOST_WRITE_BIT_KHR'
+--
+--     -   'ACCESS_2_INDEX_READ_BIT_KHR'
+--
+--     -   'ACCESS_2_INDIRECT_COMMAND_READ_BIT_KHR'
+--
+--     -   'ACCESS_2_INPUT_ATTACHMENT_READ_BIT_KHR'
+--
+--     -   'ACCESS_2_MEMORY_READ_BIT_KHR'
+--
+--     -   'ACCESS_2_MEMORY_WRITE_BIT_KHR'
+--
+--     -   'ACCESS_2_NONE_KHR'
+--
+--     -   'ACCESS_2_SHADER_READ_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_SHADER_WRITE_BIT_KHR'
+--
+--     -   'ACCESS_2_TRANSFER_READ_BIT_KHR'
+--
+--     -   'ACCESS_2_TRANSFER_WRITE_BIT_KHR'
+--
+--     -   'ACCESS_2_UNIFORM_READ_BIT_KHR'
+--
+--     -   'ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT_KHR'
+--
 -- -   Extending
 --     'Vulkan.Core10.Enums.EventCreateFlagBits.EventCreateFlagBits':
 --
@@ -235,6 +278,61 @@
 --
 --     -   'PIPELINE_STAGE_NONE_KHR'
 --
+-- -   Extending
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlagBits2':
+--
+--     -   'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
+--
+--     -   'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR'
+--
+--     -   'PIPELINE_STAGE_2_ALL_TRANSFER_BIT_KHR'
+--
+--     -   'PIPELINE_STAGE_2_BLIT_BIT_KHR'
+--
+--     -   'PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR'
+--
+--     -   'PIPELINE_STAGE_2_CLEAR_BIT_KHR'
+--
+--     -   'PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR'
+--
+--     -   'PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR'
+--
+--     -   'PIPELINE_STAGE_2_COPY_BIT_KHR'
+--
+--     -   'PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR'
+--
+--     -   'PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR'
+--
+--     -   'PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR'
+--
+--     -   'PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR'
+--
+--     -   'PIPELINE_STAGE_2_HOST_BIT_KHR'
+--
+--     -   'PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR'
+--
+--     -   'PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR'
+--
+--     -   'PIPELINE_STAGE_2_NONE_KHR'
+--
+--     -   'PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT_KHR'
+--
+--     -   'PIPELINE_STAGE_2_RESOLVE_BIT_KHR'
+--
+--     -   'PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR'
+--
+--     -   'PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR'
+--
+--     -   'PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR'
+--
+--     -   'PIPELINE_STAGE_2_TRANSFER_BIT_KHR'
+--
+--     -   'PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR'
+--
+--     -   'PIPELINE_STAGE_2_VERTEX_INPUT_BIT_KHR'
+--
+--     -   'PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR'
+--
 -- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
 --
 --     -   'STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2_KHR'
@@ -253,6 +351,10 @@
 --
 --     -   'STRUCTURE_TYPE_SUBMIT_INFO_2_KHR'
 --
+-- -   Extending 'Vulkan.Core13.Enums.SubmitFlagBits.SubmitFlagBits':
+--
+--     -   'SUBMIT_PROTECTED_BIT_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:
@@ -373,14 +475,14 @@
 --
 -- -   Extending 'Vulkan.Core13.Enums.AccessFlags2.AccessFlagBits2':
 --
---     -   'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV'
+--     -   'ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV'
 --
---     -   'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV'
+--     -   'ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV'
 --
 -- -   Extending
 --     'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlagBits2':
 --
---     -   'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV'
+--     -   '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>
@@ -449,7 +551,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_synchronization2 Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -466,6 +568,57 @@
                                                   , pattern IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR
                                                   , pattern PIPELINE_STAGE_NONE_KHR
                                                   , pattern ACCESS_NONE_KHR
+                                                  , 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
+                                                  , 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_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
+                                                  , pattern SUBMIT_PROTECTED_BIT_KHR
+                                                  , pattern PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV
+                                                  , pattern ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV
+                                                  , pattern ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV
                                                   , 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
@@ -498,9 +651,6 @@
                                                   , pattern KHR_SYNCHRONIZATION_2_SPEC_VERSION
                                                   , KHR_SYNCHRONIZATION_2_EXTENSION_NAME
                                                   , pattern KHR_SYNCHRONIZATION_2_EXTENSION_NAME
-                                                  , pattern PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_EXT
-                                                  , pattern ACCESS_2_COMMAND_PREPROCESS_READ_BIT_EXT
-                                                  , pattern ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_EXT
                                                   ) where
 
 import Data.String (IsString)
@@ -529,7 +679,53 @@
 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_COLOR_ATTACHMENT_READ_BIT))
+import Vulkan.Core13.Enums.AccessFlags2 (AccessFlags2)
+import Vulkan.Core13.Enums.AccessFlags2 (AccessFlagBits2(ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT))
+import Vulkan.Core13.Enums.AccessFlags2 (AccessFlags2)
+import Vulkan.Core13.Enums.AccessFlags2 (AccessFlagBits2(ACCESS_2_COMMAND_PREPROCESS_READ_BIT_EXT))
+import Vulkan.Core13.Enums.AccessFlags2 (AccessFlags2)
+import Vulkan.Core13.Enums.AccessFlags2 (AccessFlagBits2(ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_EXT))
+import Vulkan.Core13.Enums.AccessFlags2 (AccessFlags2)
+import Vulkan.Core13.Enums.AccessFlags2 (AccessFlagBits2(ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT))
+import Vulkan.Core13.Enums.AccessFlags2 (AccessFlags2)
+import Vulkan.Core13.Enums.AccessFlags2 (AccessFlagBits2(ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT))
+import Vulkan.Core13.Enums.AccessFlags2 (AccessFlags2)
 import Vulkan.Core13.Enums.AccessFlags2 (AccessFlagBits2(ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR))
+import Vulkan.Core13.Enums.AccessFlags2 (AccessFlags2)
+import Vulkan.Core13.Enums.AccessFlags2 (AccessFlagBits2(ACCESS_2_HOST_READ_BIT))
+import Vulkan.Core13.Enums.AccessFlags2 (AccessFlags2)
+import Vulkan.Core13.Enums.AccessFlags2 (AccessFlagBits2(ACCESS_2_HOST_WRITE_BIT))
+import Vulkan.Core13.Enums.AccessFlags2 (AccessFlags2)
+import Vulkan.Core13.Enums.AccessFlags2 (AccessFlagBits2(ACCESS_2_INDEX_READ_BIT))
+import Vulkan.Core13.Enums.AccessFlags2 (AccessFlags2)
+import Vulkan.Core13.Enums.AccessFlags2 (AccessFlagBits2(ACCESS_2_INDIRECT_COMMAND_READ_BIT))
+import Vulkan.Core13.Enums.AccessFlags2 (AccessFlags2)
+import Vulkan.Core13.Enums.AccessFlags2 (AccessFlagBits2(ACCESS_2_INPUT_ATTACHMENT_READ_BIT))
+import Vulkan.Core13.Enums.AccessFlags2 (AccessFlags2)
+import Vulkan.Core13.Enums.AccessFlags2 (AccessFlagBits2(ACCESS_2_MEMORY_READ_BIT))
+import Vulkan.Core13.Enums.AccessFlags2 (AccessFlags2)
+import Vulkan.Core13.Enums.AccessFlags2 (AccessFlagBits2(ACCESS_2_MEMORY_WRITE_BIT))
+import Vulkan.Core13.Enums.AccessFlags2 (AccessFlags2)
+import Vulkan.Core13.Enums.AccessFlags2 (AccessFlagBits2(ACCESS_2_NONE))
+import Vulkan.Core13.Enums.AccessFlags2 (AccessFlags2)
+import Vulkan.Core13.Enums.AccessFlags2 (AccessFlagBits2(ACCESS_2_SHADER_READ_BIT))
+import Vulkan.Core13.Enums.AccessFlags2 (AccessFlags2)
+import Vulkan.Core13.Enums.AccessFlags2 (AccessFlagBits2(ACCESS_2_SHADER_SAMPLED_READ_BIT))
+import Vulkan.Core13.Enums.AccessFlags2 (AccessFlags2)
+import Vulkan.Core13.Enums.AccessFlags2 (AccessFlagBits2(ACCESS_2_SHADER_STORAGE_READ_BIT))
+import Vulkan.Core13.Enums.AccessFlags2 (AccessFlags2)
+import Vulkan.Core13.Enums.AccessFlags2 (AccessFlagBits2(ACCESS_2_SHADER_STORAGE_WRITE_BIT))
+import Vulkan.Core13.Enums.AccessFlags2 (AccessFlags2)
+import Vulkan.Core13.Enums.AccessFlags2 (AccessFlagBits2(ACCESS_2_SHADER_WRITE_BIT))
+import Vulkan.Core13.Enums.AccessFlags2 (AccessFlags2)
+import Vulkan.Core13.Enums.AccessFlags2 (AccessFlagBits2(ACCESS_2_TRANSFER_READ_BIT))
+import Vulkan.Core13.Enums.AccessFlags2 (AccessFlags2)
+import Vulkan.Core13.Enums.AccessFlags2 (AccessFlagBits2(ACCESS_2_TRANSFER_WRITE_BIT))
+import Vulkan.Core13.Enums.AccessFlags2 (AccessFlags2)
+import Vulkan.Core13.Enums.AccessFlags2 (AccessFlagBits2(ACCESS_2_UNIFORM_READ_BIT))
+import Vulkan.Core13.Enums.AccessFlags2 (AccessFlags2)
+import Vulkan.Core13.Enums.AccessFlags2 (AccessFlagBits2(ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT))
 import Vulkan.Core10.Enums.AccessFlagBits (AccessFlags)
 import Vulkan.Core10.Enums.AccessFlagBits (AccessFlagBits(ACCESS_NONE))
 import Vulkan.Core10.Enums.EventCreateFlagBits (EventCreateFlags)
@@ -539,13 +735,65 @@
 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_ALL_COMMANDS_BIT))
+import Vulkan.Core13.Enums.PipelineStageFlags2 (PipelineStageFlags2)
+import Vulkan.Core13.Enums.PipelineStageFlags2 (PipelineStageFlagBits2(PIPELINE_STAGE_2_ALL_GRAPHICS_BIT))
+import Vulkan.Core13.Enums.PipelineStageFlags2 (PipelineStageFlags2)
+import Vulkan.Core13.Enums.PipelineStageFlags2 (PipelineStageFlagBits2(PIPELINE_STAGE_2_ALL_TRANSFER_BIT))
+import Vulkan.Core13.Enums.PipelineStageFlags2 (PipelineStageFlags2)
+import Vulkan.Core13.Enums.PipelineStageFlags2 (PipelineStageFlagBits2(PIPELINE_STAGE_2_BLIT_BIT))
+import Vulkan.Core13.Enums.PipelineStageFlags2 (PipelineStageFlags2)
+import Vulkan.Core13.Enums.PipelineStageFlags2 (PipelineStageFlagBits2(PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT))
+import Vulkan.Core13.Enums.PipelineStageFlags2 (PipelineStageFlags2)
+import Vulkan.Core13.Enums.PipelineStageFlags2 (PipelineStageFlagBits2(PIPELINE_STAGE_2_CLEAR_BIT))
+import Vulkan.Core13.Enums.PipelineStageFlags2 (PipelineStageFlags2)
+import Vulkan.Core13.Enums.PipelineStageFlags2 (PipelineStageFlagBits2(PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT))
+import Vulkan.Core13.Enums.PipelineStageFlags2 (PipelineStageFlags2)
+import Vulkan.Core13.Enums.PipelineStageFlags2 (PipelineStageFlagBits2(PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_EXT))
+import Vulkan.Core13.Enums.PipelineStageFlags2 (PipelineStageFlags2)
+import Vulkan.Core13.Enums.PipelineStageFlags2 (PipelineStageFlagBits2(PIPELINE_STAGE_2_COMPUTE_SHADER_BIT))
+import Vulkan.Core13.Enums.PipelineStageFlags2 (PipelineStageFlags2)
+import Vulkan.Core13.Enums.PipelineStageFlags2 (PipelineStageFlagBits2(PIPELINE_STAGE_2_COPY_BIT))
+import Vulkan.Core13.Enums.PipelineStageFlags2 (PipelineStageFlags2)
+import Vulkan.Core13.Enums.PipelineStageFlags2 (PipelineStageFlagBits2(PIPELINE_STAGE_2_DRAW_INDIRECT_BIT))
+import Vulkan.Core13.Enums.PipelineStageFlags2 (PipelineStageFlags2)
+import Vulkan.Core13.Enums.PipelineStageFlags2 (PipelineStageFlagBits2(PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT))
+import Vulkan.Core13.Enums.PipelineStageFlags2 (PipelineStageFlags2)
+import Vulkan.Core13.Enums.PipelineStageFlags2 (PipelineStageFlagBits2(PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT))
+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_GEOMETRY_SHADER_BIT))
+import Vulkan.Core13.Enums.PipelineStageFlags2 (PipelineStageFlags2)
+import Vulkan.Core13.Enums.PipelineStageFlags2 (PipelineStageFlagBits2(PIPELINE_STAGE_2_HOST_BIT))
+import Vulkan.Core13.Enums.PipelineStageFlags2 (PipelineStageFlags2)
+import Vulkan.Core13.Enums.PipelineStageFlags2 (PipelineStageFlagBits2(PIPELINE_STAGE_2_INDEX_INPUT_BIT))
+import Vulkan.Core13.Enums.PipelineStageFlags2 (PipelineStageFlags2)
+import Vulkan.Core13.Enums.PipelineStageFlags2 (PipelineStageFlagBits2(PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT))
+import Vulkan.Core13.Enums.PipelineStageFlags2 (PipelineStageFlags2)
 import Vulkan.Core13.Enums.PipelineStageFlags2 (PipelineStageFlagBits2(PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT))
 import Vulkan.Core13.Enums.PipelineStageFlags2 (PipelineStageFlags2)
+import Vulkan.Core13.Enums.PipelineStageFlags2 (PipelineStageFlagBits2(PIPELINE_STAGE_2_NONE))
+import Vulkan.Core13.Enums.PipelineStageFlags2 (PipelineStageFlags2)
+import Vulkan.Core13.Enums.PipelineStageFlags2 (PipelineStageFlagBits2(PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT))
+import Vulkan.Core13.Enums.PipelineStageFlags2 (PipelineStageFlags2)
 import Vulkan.Core13.Enums.PipelineStageFlags2 (PipelineStageFlagBits2(PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR))
 import Vulkan.Core13.Enums.PipelineStageFlags2 (PipelineStageFlags2)
+import Vulkan.Core13.Enums.PipelineStageFlags2 (PipelineStageFlagBits2(PIPELINE_STAGE_2_RESOLVE_BIT))
+import Vulkan.Core13.Enums.PipelineStageFlags2 (PipelineStageFlags2)
 import Vulkan.Core13.Enums.PipelineStageFlags2 (PipelineStageFlagBits2(PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT))
+import Vulkan.Core13.Enums.PipelineStageFlags2 (PipelineStageFlags2)
+import Vulkan.Core13.Enums.PipelineStageFlags2 (PipelineStageFlagBits2(PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT))
+import Vulkan.Core13.Enums.PipelineStageFlags2 (PipelineStageFlags2)
+import Vulkan.Core13.Enums.PipelineStageFlags2 (PipelineStageFlagBits2(PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT))
+import Vulkan.Core13.Enums.PipelineStageFlags2 (PipelineStageFlags2)
+import Vulkan.Core13.Enums.PipelineStageFlags2 (PipelineStageFlagBits2(PIPELINE_STAGE_2_TOP_OF_PIPE_BIT))
+import Vulkan.Core13.Enums.PipelineStageFlags2 (PipelineStageFlags2)
+import Vulkan.Core13.Enums.PipelineStageFlags2 (PipelineStageFlagBits2(PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT))
+import Vulkan.Core13.Enums.PipelineStageFlags2 (PipelineStageFlags2)
+import Vulkan.Core13.Enums.PipelineStageFlags2 (PipelineStageFlagBits2(PIPELINE_STAGE_2_VERTEX_INPUT_BIT))
+import Vulkan.Core13.Enums.PipelineStageFlags2 (PipelineStageFlags2)
+import Vulkan.Core13.Enums.PipelineStageFlags2 (PipelineStageFlagBits2(PIPELINE_STAGE_2_VERTEX_SHADER_BIT))
 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))
@@ -556,9 +804,8 @@
 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.Core13.Enums.AccessFlags2 (pattern ACCESS_2_COMMAND_PREPROCESS_READ_BIT_EXT)
-import Vulkan.Core13.Enums.AccessFlags2 (pattern ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_EXT)
-import Vulkan.Core13.Enums.PipelineStageFlags2 (pattern PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_EXT)
+import Vulkan.Core13.Enums.SubmitFlagBits (SubmitFlags)
+import Vulkan.Core13.Enums.SubmitFlagBits (SubmitFlagBits(SUBMIT_PROTECTED_BIT))
 -- No documentation found for TopLevel "VK_STRUCTURE_TYPE_MEMORY_BARRIER_2_KHR"
 pattern STRUCTURE_TYPE_MEMORY_BARRIER_2_KHR = STRUCTURE_TYPE_MEMORY_BARRIER_2
 
@@ -609,6 +856,210 @@
 
 -- No documentation found for TopLevel "VK_ACCESS_NONE_KHR"
 pattern ACCESS_NONE_KHR = ACCESS_NONE
+
+
+-- 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
+
+
+-- 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_KHR"
+pattern PIPELINE_STAGE_2_TRANSFER_BIT_KHR = PIPELINE_STAGE_2_ALL_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
+
+
+-- No documentation found for TopLevel "VK_SUBMIT_PROTECTED_BIT_KHR"
+pattern SUBMIT_PROTECTED_BIT_KHR = SUBMIT_PROTECTED_BIT
+
+
+-- No documentation found for TopLevel "VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV"
+pattern PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV = PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_EXT
+
+
+-- No documentation found for TopLevel "VK_ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV"
+pattern ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV = ACCESS_2_COMMAND_PREPROCESS_READ_BIT_EXT
+
+
+-- No documentation found for TopLevel "VK_ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV"
+pattern ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV = ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_EXT
 
 
 -- No documentation found for TopLevel "VK_PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV"
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
@@ -279,7 +279,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_timeline_semaphore Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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_unified_image_layouts.hs b/src/Vulkan/Extensions/VK_KHR_unified_image_layouts.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_KHR_unified_image_layouts.hs
@@ -0,0 +1,392 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_KHR_unified_image_layouts - device extension
+--
+-- = VK_KHR_unified_image_layouts
+--
+-- [__Name String__]
+--     @VK_KHR_unified_image_layouts@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     528
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
+--
+-- [__API Interactions__]
+--
+--     -   Interacts with VK_VERSION_1_3
+--
+--     -   Interacts with VK_EXT_attachment_feedback_loop_layout
+--
+--     -   Interacts with VK_KHR_dynamic_rendering
+--
+-- [__Contact__]
+--
+--     -   Shahbaz Youssefi
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_unified_image_layouts] @syoussefi%0A*Here describe the issue or question you have about the VK_KHR_unified_image_layouts extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_KHR_unified_image_layouts.adoc VK_KHR_unified_image_layouts>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2024-10-15
+--
+-- [__Interactions and External Dependencies__]
+--
+--     -   This extension interacts with
+--         @VK_EXT_attachment_feedback_loop_layout@
+--
+--     -   This extension interacts with @VK_KHR_video_decode_queue@
+--
+--     -   This extension interacts with @VK_KHR_video_encode_queue@
+--
+--     -   This extension interacts with
+--         @VK_KHR_video_encode_quantization_map@
+--
+-- [__Contributors__]
+--
+--     -   Ahmed Abdelkhalek, AMD
+--
+--     -   Tobias Hector, AMD
+--
+--     -   Jan-Harald Fredriksen, ARM
+--
+--     -   Ting Wei, ARM
+--
+--     -   Faith Ekstrand, Collabora
+--
+--     -   Lina Versace, Google
+--
+--     -   Shahbaz Youssefi, Google
+--
+--     -   James Fitzpatrick, Imagination
+--
+--     -   Daniel Story, Nintendo
+--
+--     -   James Jones, NVIDIA
+--
+--     -   Jeff Juliano, NVIDIA
+--
+--     -   Piers Daniell, NVIDIA
+--
+--     -   Tony Zlatinski, NVIDIA
+--
+--     -   Matthew Netsch, Qualcomm
+--
+--     -   Patrick Boyle, Qualcomm
+--
+--     -   Daniel Rakos, RasterGrid
+--
+--     -   Ralph Potter, Samsung
+--
+--     -   Hans-Kristian Arntzen, VALVE
+--
+--     -   Samuel Pitoiset, VALVE
+--
+-- == Description
+--
+-- This extension significantly simplifies synchronization in Vulkan by
+-- removing the need for image layout transitions in most cases. In
+-- particular, it guarantees that using the
+-- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL' layout everywhere
+-- possible is just as efficient as using the other layouts.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceUnifiedImageLayoutsFeaturesKHR'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_attachment_feedback_loop_layout VK_EXT_attachment_feedback_loop_layout>
+-- and
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3 Vulkan Version 1.3>
+-- or
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering VK_KHR_dynamic_rendering>
+-- is supported:
+--
+-- -   Extending
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingAttachmentInfo':
+--
+--     -   'AttachmentFeedbackLoopInfoEXT'
+--
+-- == New Enum Constants
+--
+-- -   'KHR_UNIFIED_IMAGE_LAYOUTS_EXTENSION_NAME'
+--
+-- -   'KHR_UNIFIED_IMAGE_LAYOUTS_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFIED_IMAGE_LAYOUTS_FEATURES_KHR'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_attachment_feedback_loop_layout VK_EXT_attachment_feedback_loop_layout>
+-- and
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3 Vulkan Version 1.3>
+-- or
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering VK_KHR_dynamic_rendering>
+-- is supported:
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ATTACHMENT_FEEDBACK_LOOP_INFO_EXT'
+--
+-- == Version History
+--
+-- -   Revision 1, 2024-10-15 (Shahbaz Youssefi)
+--
+--     -   Initial revision
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_unified_image_layouts 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_unified_image_layouts  ( PhysicalDeviceUnifiedImageLayoutsFeaturesKHR(..)
+                                                       , AttachmentFeedbackLoopInfoEXT(..)
+                                                       , KHR_UNIFIED_IMAGE_LAYOUTS_SPEC_VERSION
+                                                       , pattern KHR_UNIFIED_IMAGE_LAYOUTS_SPEC_VERSION
+                                                       , KHR_UNIFIED_IMAGE_LAYOUTS_EXTENSION_NAME
+                                                       , pattern KHR_UNIFIED_IMAGE_LAYOUTS_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_ATTACHMENT_FEEDBACK_LOOP_INFO_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFIED_IMAGE_LAYOUTS_FEATURES_KHR))
+-- | VkPhysicalDeviceUnifiedImageLayoutsFeaturesKHR - Structure describing
+-- whether the implementation provides unified image layouts
+--
+-- = Members
+--
+-- This structure describes the following feature:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceUnifiedImageLayoutsFeaturesKHR' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceUnifiedImageLayoutsFeaturesKHR', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_unified_image_layouts VK_KHR_unified_image_layouts>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceUnifiedImageLayoutsFeaturesKHR = PhysicalDeviceUnifiedImageLayoutsFeaturesKHR
+  { -- | #features-unifiedImageLayouts# @unifiedImageLayouts@ specifies whether
+    -- usage of 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL', where
+    -- valid, incurs no loss in efficiency. Additionally, it indicates whether
+    -- it /can/ be used in place of
+    -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'.
+    unifiedImageLayouts :: Bool
+  , -- | #features-unifiedImageLayoutsVideo# @unifiedImageLayoutsVideo@ specifies
+    -- whether 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL' can be
+    -- used in place of any of the following image layouts with no loss in
+    -- efficiency.
+    --
+    -- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageLayout VK_IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR>
+    --
+    -- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageLayout VK_IMAGE_LAYOUT_VIDEO_DECODE_SRC_KHR>
+    --
+    -- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageLayout VK_IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR>
+    --
+    -- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageLayout VK_IMAGE_LAYOUT_VIDEO_ENCODE_DST_KHR>
+    --
+    -- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageLayout VK_IMAGE_LAYOUT_VIDEO_ENCODE_SRC_KHR>
+    --
+    -- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageLayout VK_IMAGE_LAYOUT_VIDEO_ENCODE_DPB_KHR>
+    --
+    -- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageLayout VK_IMAGE_LAYOUT_VIDEO_ENCODE_QUANTIZATION_MAP_KHR>
+    unifiedImageLayoutsVideo :: Bool
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceUnifiedImageLayoutsFeaturesKHR)
+#endif
+deriving instance Show PhysicalDeviceUnifiedImageLayoutsFeaturesKHR
+
+instance ToCStruct PhysicalDeviceUnifiedImageLayoutsFeaturesKHR where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceUnifiedImageLayoutsFeaturesKHR{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFIED_IMAGE_LAYOUTS_FEATURES_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (unifiedImageLayouts))
+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (unifiedImageLayoutsVideo))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFIED_IMAGE_LAYOUTS_FEATURES_KHR)
+    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 PhysicalDeviceUnifiedImageLayoutsFeaturesKHR where
+  peekCStruct p = do
+    unifiedImageLayouts <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    unifiedImageLayoutsVideo <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
+    pure $ PhysicalDeviceUnifiedImageLayoutsFeaturesKHR
+             (bool32ToBool unifiedImageLayouts)
+             (bool32ToBool unifiedImageLayoutsVideo)
+
+instance Storable PhysicalDeviceUnifiedImageLayoutsFeaturesKHR where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceUnifiedImageLayoutsFeaturesKHR where
+  zero = PhysicalDeviceUnifiedImageLayoutsFeaturesKHR
+           zero
+           zero
+
+
+-- | VkAttachmentFeedbackLoopInfoEXT - Structure specifying whether feedback
+-- loop is enabled for an attachment
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkAttachmentFeedbackLoopInfoEXT-unifiedImageLayouts-10782# If
+--     the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-unifiedImageLayouts unifiedImageLayouts>
+--     feature is not enabled, @feedbackLoopEnable@ /must/ be
+--     'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkAttachmentFeedbackLoopInfoEXT-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ATTACHMENT_FEEDBACK_LOOP_INFO_EXT'
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingAttachmentInfo'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_attachment_feedback_loop_layout VK_EXT_attachment_feedback_loop_layout>,
+-- <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_unified_image_layouts VK_KHR_unified_image_layouts>,
+-- <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 AttachmentFeedbackLoopInfoEXT = AttachmentFeedbackLoopInfoEXT
+  { -- | @feedbackLoopEnable@ specifies that
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-feedbackloop feedback loop is enabled>
+    -- for the attachment identified by
+    -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingAttachmentInfo'::@imageView@.
+    feedbackLoopEnable :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (AttachmentFeedbackLoopInfoEXT)
+#endif
+deriving instance Show AttachmentFeedbackLoopInfoEXT
+
+instance ToCStruct AttachmentFeedbackLoopInfoEXT where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p AttachmentFeedbackLoopInfoEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ATTACHMENT_FEEDBACK_LOOP_INFO_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (feedbackLoopEnable))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ATTACHMENT_FEEDBACK_LOOP_INFO_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct AttachmentFeedbackLoopInfoEXT where
+  peekCStruct p = do
+    feedbackLoopEnable <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ AttachmentFeedbackLoopInfoEXT
+             (bool32ToBool feedbackLoopEnable)
+
+instance Storable AttachmentFeedbackLoopInfoEXT where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero AttachmentFeedbackLoopInfoEXT where
+  zero = AttachmentFeedbackLoopInfoEXT
+           zero
+
+
+type KHR_UNIFIED_IMAGE_LAYOUTS_SPEC_VERSION = 1
+
+-- No documentation found for TopLevel "VK_KHR_UNIFIED_IMAGE_LAYOUTS_SPEC_VERSION"
+pattern KHR_UNIFIED_IMAGE_LAYOUTS_SPEC_VERSION :: forall a . Integral a => a
+pattern KHR_UNIFIED_IMAGE_LAYOUTS_SPEC_VERSION = 1
+
+
+type KHR_UNIFIED_IMAGE_LAYOUTS_EXTENSION_NAME = "VK_KHR_unified_image_layouts"
+
+-- No documentation found for TopLevel "VK_KHR_UNIFIED_IMAGE_LAYOUTS_EXTENSION_NAME"
+pattern KHR_UNIFIED_IMAGE_LAYOUTS_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern KHR_UNIFIED_IMAGE_LAYOUTS_EXTENSION_NAME = "VK_KHR_unified_image_layouts"
+
diff --git a/src/Vulkan/Extensions/VK_KHR_unified_image_layouts.hs-boot b/src/Vulkan/Extensions/VK_KHR_unified_image_layouts.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_KHR_unified_image_layouts.hs-boot
@@ -0,0 +1,191 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_KHR_unified_image_layouts - device extension
+--
+-- = VK_KHR_unified_image_layouts
+--
+-- [__Name String__]
+--     @VK_KHR_unified_image_layouts@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     528
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
+--
+-- [__API Interactions__]
+--
+--     -   Interacts with VK_VERSION_1_3
+--
+--     -   Interacts with VK_EXT_attachment_feedback_loop_layout
+--
+--     -   Interacts with VK_KHR_dynamic_rendering
+--
+-- [__Contact__]
+--
+--     -   Shahbaz Youssefi
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_unified_image_layouts] @syoussefi%0A*Here describe the issue or question you have about the VK_KHR_unified_image_layouts extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_KHR_unified_image_layouts.adoc VK_KHR_unified_image_layouts>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2024-10-15
+--
+-- [__Interactions and External Dependencies__]
+--
+--     -   This extension interacts with
+--         @VK_EXT_attachment_feedback_loop_layout@
+--
+--     -   This extension interacts with @VK_KHR_video_decode_queue@
+--
+--     -   This extension interacts with @VK_KHR_video_encode_queue@
+--
+--     -   This extension interacts with
+--         @VK_KHR_video_encode_quantization_map@
+--
+-- [__Contributors__]
+--
+--     -   Ahmed Abdelkhalek, AMD
+--
+--     -   Tobias Hector, AMD
+--
+--     -   Jan-Harald Fredriksen, ARM
+--
+--     -   Ting Wei, ARM
+--
+--     -   Faith Ekstrand, Collabora
+--
+--     -   Lina Versace, Google
+--
+--     -   Shahbaz Youssefi, Google
+--
+--     -   James Fitzpatrick, Imagination
+--
+--     -   Daniel Story, Nintendo
+--
+--     -   James Jones, NVIDIA
+--
+--     -   Jeff Juliano, NVIDIA
+--
+--     -   Piers Daniell, NVIDIA
+--
+--     -   Tony Zlatinski, NVIDIA
+--
+--     -   Matthew Netsch, Qualcomm
+--
+--     -   Patrick Boyle, Qualcomm
+--
+--     -   Daniel Rakos, RasterGrid
+--
+--     -   Ralph Potter, Samsung
+--
+--     -   Hans-Kristian Arntzen, VALVE
+--
+--     -   Samuel Pitoiset, VALVE
+--
+-- == Description
+--
+-- This extension significantly simplifies synchronization in Vulkan by
+-- removing the need for image layout transitions in most cases. In
+-- particular, it guarantees that using the
+-- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL' layout everywhere
+-- possible is just as efficient as using the other layouts.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceUnifiedImageLayoutsFeaturesKHR'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_attachment_feedback_loop_layout VK_EXT_attachment_feedback_loop_layout>
+-- and
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3 Vulkan Version 1.3>
+-- or
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering VK_KHR_dynamic_rendering>
+-- is supported:
+--
+-- -   Extending
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingAttachmentInfo':
+--
+--     -   'AttachmentFeedbackLoopInfoEXT'
+--
+-- == New Enum Constants
+--
+-- -   'KHR_UNIFIED_IMAGE_LAYOUTS_EXTENSION_NAME'
+--
+-- -   'KHR_UNIFIED_IMAGE_LAYOUTS_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFIED_IMAGE_LAYOUTS_FEATURES_KHR'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_attachment_feedback_loop_layout VK_EXT_attachment_feedback_loop_layout>
+-- and
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3 Vulkan Version 1.3>
+-- or
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering VK_KHR_dynamic_rendering>
+-- is supported:
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ATTACHMENT_FEEDBACK_LOOP_INFO_EXT'
+--
+-- == Version History
+--
+-- -   Revision 1, 2024-10-15 (Shahbaz Youssefi)
+--
+--     -   Initial revision
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_unified_image_layouts 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_unified_image_layouts  ( AttachmentFeedbackLoopInfoEXT
+                                                       , PhysicalDeviceUnifiedImageLayoutsFeaturesKHR
+                                                       ) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data AttachmentFeedbackLoopInfoEXT
+
+instance ToCStruct AttachmentFeedbackLoopInfoEXT
+instance Show AttachmentFeedbackLoopInfoEXT
+
+instance FromCStruct AttachmentFeedbackLoopInfoEXT
+
+
+data PhysicalDeviceUnifiedImageLayoutsFeaturesKHR
+
+instance ToCStruct PhysicalDeviceUnifiedImageLayoutsFeaturesKHR
+instance Show PhysicalDeviceUnifiedImageLayoutsFeaturesKHR
+
+instance FromCStruct PhysicalDeviceUnifiedImageLayoutsFeaturesKHR
+
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
@@ -54,8 +54,8 @@
 --
 -- == Description
 --
--- This extension enables tighter array and struct packing to be used with
--- uniform buffers.
+-- This extension enables tighter array and structure packing to be used
+-- with uniform buffers.
 --
 -- It modifies the alignment rules for uniform buffers, allowing for
 -- tighter packing of arrays and structures. This allows, for example, the
@@ -100,7 +100,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_uniform_buffer_standard_layout Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -88,10 +88,18 @@
 --
 -- All functionality in this extension is included in core Vulkan 1.1, with
 -- the KHR suffix omitted, however support for the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-variablePointersStorageBuffer variablePointersStorageBuffer>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
 --
+-- == Promotion to Vulkan 1.4
+--
+-- If Vulkan 1.4 is supported, support for the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-variablePointers variablePointers>
+-- and
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-variablePointersStorageBuffer variablePointersStorageBuffer>
+-- features is required.
+--
 -- == New Structures
 --
 -- -   Extending
@@ -116,9 +124,9 @@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-VariablePointers VariablePointers>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-VariablePointers VariablePointers>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-VariablePointersStorageBuffer VariablePointersStorageBuffer>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-VariablePointersStorageBuffer VariablePointersStorageBuffer>
 --
 -- == Issues
 --
@@ -155,7 +163,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_variable_pointers Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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_vertex_attribute_divisor.hs b/src/Vulkan/Extensions/VK_KHR_vertex_attribute_divisor.hs
--- a/src/Vulkan/Extensions/VK_KHR_vertex_attribute_divisor.hs
+++ b/src/Vulkan/Extensions/VK_KHR_vertex_attribute_divisor.hs
@@ -25,6 +25,11 @@
 --     or
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
 --
+-- [__Deprecation State__]
+--
+--     -   /Promoted/ to
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.4-promotions Vulkan 1.4>
+--
 -- [__Contact__]
 --
 --     -   Shahbaz Youssefi
@@ -71,7 +76,7 @@
 --     -   'PhysicalDeviceVertexAttributeDivisorPropertiesKHR'
 --
 -- -   Extending
---     'Vulkan.Core10.Pipeline.PipelineVertexInputStateCreateInfo':
+--     'Vulkan.Core10.GraphicsPipeline.PipelineVertexInputStateCreateInfo':
 --
 --     -   'PipelineVertexInputDivisorStateCreateInfoKHR'
 --
@@ -83,12 +88,18 @@
 --
 -- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_KHR'
+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_KHR'
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_KHR'
+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_KHR'
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_KHR'
+--     -   'STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_KHR'
 --
+-- == Promotion to Vulkan 1.4
+--
+-- Functionality in this extension is included in core Vulkan 1.4 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, 2023-09-20 (Shahbaz Youssefi)
@@ -102,359 +113,57 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_vertex_attribute_divisor Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_vertex_attribute_divisor 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_vertex_attribute_divisor  ( VertexInputBindingDivisorDescriptionKHR(..)
-                                                          , PipelineVertexInputDivisorStateCreateInfoKHR(..)
-                                                          , PhysicalDeviceVertexAttributeDivisorPropertiesKHR(..)
-                                                          , PhysicalDeviceVertexAttributeDivisorFeaturesKHR(..)
+module Vulkan.Extensions.VK_KHR_vertex_attribute_divisor  ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_KHR
+                                                          , pattern STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_KHR
+                                                          , pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_KHR
+                                                          , VertexInputBindingDivisorDescriptionKHR
+                                                          , PipelineVertexInputDivisorStateCreateInfoKHR
+                                                          , PhysicalDeviceVertexAttributeDivisorPropertiesKHR
+                                                          , PhysicalDeviceVertexAttributeDivisorFeaturesKHR
                                                           , KHR_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION
                                                           , pattern KHR_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION
                                                           , KHR_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME
                                                           , pattern KHR_VERTEX_ATTRIBUTE_DIVISOR_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.Core10.FundamentalTypes (Bool32)
-import Vulkan.Core10.Enums.StructureType (StructureType)
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_KHR))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_KHR))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_KHR))
--- | VkVertexInputBindingDivisorDescriptionKHR - Structure specifying a
--- divisor used in instanced rendering
---
--- = Description
---
--- If this structure is not used to define a divisor value for an
--- attribute, then the divisor has a logical default value of 1.
---
--- == Valid Usage
---
--- -   #VUID-VkVertexInputBindingDivisorDescriptionKHR-binding-01869#
---     @binding@ /must/ be less than
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxVertexInputBindings@
---
--- -   #VUID-VkVertexInputBindingDivisorDescriptionKHR-vertexAttributeInstanceRateZeroDivisor-02228#
---     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-vertexAttributeInstanceRateZeroDivisor vertexAttributeInstanceRateZeroDivisor>
---     feature is not enabled, @divisor@ /must/ not be @0@
---
--- -   #VUID-VkVertexInputBindingDivisorDescriptionKHR-vertexAttributeInstanceRateDivisor-02229#
---     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-vertexAttributeInstanceRateDivisor vertexAttributeInstanceRateDivisor>
---     feature is not enabled, @divisor@ /must/ be @1@
---
--- -   #VUID-VkVertexInputBindingDivisorDescriptionKHR-divisor-01870#
---     @divisor@ /must/ be a value between @0@ and
---     'PhysicalDeviceVertexAttributeDivisorPropertiesKHR'::@maxVertexAttribDivisor@,
---     inclusive
---
--- -   #VUID-VkVertexInputBindingDivisorDescriptionKHR-inputRate-01871#
---     'Vulkan.Core10.Pipeline.VertexInputBindingDescription'::@inputRate@
---     /must/ be of type
---     'Vulkan.Core10.Enums.VertexInputRate.VERTEX_INPUT_RATE_INSTANCE' for
---     this @binding@
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_vertex_attribute_divisor VK_EXT_vertex_attribute_divisor>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_vertex_attribute_divisor VK_KHR_vertex_attribute_divisor>,
--- 'PipelineVertexInputDivisorStateCreateInfoKHR'
-data VertexInputBindingDivisorDescriptionKHR = VertexInputBindingDivisorDescriptionKHR
-  { -- | @binding@ is the binding number for which the divisor is specified.
-    binding :: Word32
-  , -- | @divisor@ is the number of successive instances that will use the same
-    -- value of the vertex attribute when instanced rendering 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
-    -- 'PhysicalDeviceVertexAttributeDivisorPropertiesKHR'::@maxVertexAttribDivisor@.
-    -- A value of @0@ /can/ be used for the divisor if the
-    -- <https://registry.khronos.org/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
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (VertexInputBindingDivisorDescriptionKHR)
-#endif
-deriving instance Show VertexInputBindingDivisorDescriptionKHR
+import Vulkan.Core14.Promoted_From_VK_KHR_vertex_attribute_divisor (PhysicalDeviceVertexAttributeDivisorFeatures)
+import Vulkan.Core14.Promoted_From_VK_KHR_vertex_attribute_divisor (PhysicalDeviceVertexAttributeDivisorProperties)
+import Vulkan.Core14.Promoted_From_VK_KHR_vertex_attribute_divisor (PipelineVertexInputDivisorStateCreateInfo)
+import Vulkan.Core14.Promoted_From_VK_KHR_vertex_attribute_divisor (VertexInputBindingDivisorDescription)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO))
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES
 
-instance ToCStruct VertexInputBindingDivisorDescriptionKHR where
-  withCStruct x f = allocaBytes 8 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p VertexInputBindingDivisorDescriptionKHR{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr Word32)) (binding)
-    poke ((p `plusPtr` 4 :: Ptr Word32)) (divisor)
-    f
-  cStructSize = 8
-  cStructAlignment = 4
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)
-    f
 
-instance FromCStruct VertexInputBindingDivisorDescriptionKHR where
-  peekCStruct p = do
-    binding <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))
-    divisor <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))
-    pure $ VertexInputBindingDivisorDescriptionKHR
-             binding divisor
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_KHR"
+pattern STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_KHR = STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO
 
-instance Storable VertexInputBindingDivisorDescriptionKHR where
-  sizeOf ~_ = 8
-  alignment ~_ = 4
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
 
-instance Zero VertexInputBindingDivisorDescriptionKHR where
-  zero = VertexInputBindingDivisorDescriptionKHR
-           zero
-           zero
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES
 
 
--- | VkPipelineVertexInputDivisorStateCreateInfoKHR - Structure specifying
--- vertex attributes assignment during instanced rendering
---
--- == Valid Usage (Implicit)
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_vertex_attribute_divisor VK_EXT_vertex_attribute_divisor>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_vertex_attribute_divisor VK_KHR_vertex_attribute_divisor>,
--- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'VertexInputBindingDivisorDescriptionKHR'
-data PipelineVertexInputDivisorStateCreateInfoKHR = PipelineVertexInputDivisorStateCreateInfoKHR
-  { -- | @pVertexBindingDivisors@ is a pointer to an array of
-    -- 'VertexInputBindingDivisorDescriptionKHR' structures specifying the
-    -- divisor value for each binding.
-    --
-    -- #VUID-VkPipelineVertexInputDivisorStateCreateInfoKHR-pVertexBindingDivisors-parameter#
-    -- @pVertexBindingDivisors@ /must/ be a valid pointer to an array of
-    -- @vertexBindingDivisorCount@ 'VertexInputBindingDivisorDescriptionKHR'
-    -- structures
-    vertexBindingDivisors :: Vector VertexInputBindingDivisorDescriptionKHR }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PipelineVertexInputDivisorStateCreateInfoKHR)
-#endif
-deriving instance Show PipelineVertexInputDivisorStateCreateInfoKHR
+-- No documentation found for TopLevel "VkVertexInputBindingDivisorDescriptionKHR"
+type VertexInputBindingDivisorDescriptionKHR = VertexInputBindingDivisorDescription
 
-instance ToCStruct PipelineVertexInputDivisorStateCreateInfoKHR where
-  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PipelineVertexInputDivisorStateCreateInfoKHR{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_KHR)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (vertexBindingDivisors)) :: Word32))
-    pPVertexBindingDivisors' <- ContT $ allocaBytes @VertexInputBindingDivisorDescriptionKHR ((Data.Vector.length (vertexBindingDivisors)) * 8)
-    lift $ Data.Vector.imapM_ (\i e -> poke (pPVertexBindingDivisors' `plusPtr` (8 * (i)) :: Ptr VertexInputBindingDivisorDescriptionKHR) (e)) (vertexBindingDivisors)
-    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr VertexInputBindingDivisorDescriptionKHR))) (pPVertexBindingDivisors')
-    lift $ f
-  cStructSize = 32
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    f
 
-instance FromCStruct PipelineVertexInputDivisorStateCreateInfoKHR where
-  peekCStruct p = do
-    vertexBindingDivisorCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
-    pVertexBindingDivisors <- peek @(Ptr VertexInputBindingDivisorDescriptionKHR) ((p `plusPtr` 24 :: Ptr (Ptr VertexInputBindingDivisorDescriptionKHR)))
-    pVertexBindingDivisors' <- generateM (fromIntegral vertexBindingDivisorCount) (\i -> peekCStruct @VertexInputBindingDivisorDescriptionKHR ((pVertexBindingDivisors `advancePtrBytes` (8 * (i)) :: Ptr VertexInputBindingDivisorDescriptionKHR)))
-    pure $ PipelineVertexInputDivisorStateCreateInfoKHR
-             pVertexBindingDivisors'
-
-instance Zero PipelineVertexInputDivisorStateCreateInfoKHR where
-  zero = PipelineVertexInputDivisorStateCreateInfoKHR
-           mempty
+-- No documentation found for TopLevel "VkPipelineVertexInputDivisorStateCreateInfoKHR"
+type PipelineVertexInputDivisorStateCreateInfoKHR = PipelineVertexInputDivisorStateCreateInfo
 
 
--- | VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR - Structure
--- describing max value of vertex attribute divisor that can be supported
--- by an implementation
---
--- = Description
---
--- If the 'PhysicalDeviceVertexAttributeDivisorPropertiesKHR' 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_vertex_attribute_divisor VK_KHR_vertex_attribute_divisor>,
--- 'Vulkan.Core10.FundamentalTypes.Bool32',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PhysicalDeviceVertexAttributeDivisorPropertiesKHR = PhysicalDeviceVertexAttributeDivisorPropertiesKHR
-  { -- | #limits-maxVertexAttribDivisor# @maxVertexAttribDivisor@ is the maximum
-    -- value of the number of instances that will repeat the value of vertex
-    -- attribute data when instanced rendering is enabled.
-    maxVertexAttribDivisor :: Word32
-  , -- | #limits-supportsNonZeroFirstInstance# @supportsNonZeroFirstInstance@
-    -- specifies whether a non-zero value for the @firstInstance@ parameter of
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#drawing drawing commands>
-    -- is supported when 'VertexInputBindingDivisorDescriptionKHR'::@divisor@
-    -- is not @1@.
-    supportsNonZeroFirstInstance :: Bool
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PhysicalDeviceVertexAttributeDivisorPropertiesKHR)
-#endif
-deriving instance Show PhysicalDeviceVertexAttributeDivisorPropertiesKHR
-
-instance ToCStruct PhysicalDeviceVertexAttributeDivisorPropertiesKHR where
-  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PhysicalDeviceVertexAttributeDivisorPropertiesKHR{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Word32)) (maxVertexAttribDivisor)
-    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (supportsNonZeroFirstInstance))
-    f
-  cStructSize = 24
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))
-    f
-
-instance FromCStruct PhysicalDeviceVertexAttributeDivisorPropertiesKHR where
-  peekCStruct p = do
-    maxVertexAttribDivisor <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
-    supportsNonZeroFirstInstance <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
-    pure $ PhysicalDeviceVertexAttributeDivisorPropertiesKHR
-             maxVertexAttribDivisor (bool32ToBool supportsNonZeroFirstInstance)
-
-instance Storable PhysicalDeviceVertexAttributeDivisorPropertiesKHR where
-  sizeOf ~_ = 24
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero PhysicalDeviceVertexAttributeDivisorPropertiesKHR where
-  zero = PhysicalDeviceVertexAttributeDivisorPropertiesKHR
-           zero
-           zero
+-- No documentation found for TopLevel "VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR"
+type PhysicalDeviceVertexAttributeDivisorPropertiesKHR = PhysicalDeviceVertexAttributeDivisorProperties
 
 
--- | VkPhysicalDeviceVertexAttributeDivisorFeaturesKHR - Structure describing
--- if fetching of vertex attribute may be repeated for instanced rendering
---
--- = Members
---
--- This structure describes the following features:
---
--- = Description
---
--- If the 'PhysicalDeviceVertexAttributeDivisorFeaturesKHR' 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. 'PhysicalDeviceVertexAttributeDivisorFeaturesKHR' /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_vertex_attribute_divisor VK_EXT_vertex_attribute_divisor>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_vertex_attribute_divisor VK_KHR_vertex_attribute_divisor>,
--- 'Vulkan.Core10.FundamentalTypes.Bool32',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PhysicalDeviceVertexAttributeDivisorFeaturesKHR = PhysicalDeviceVertexAttributeDivisorFeaturesKHR
-  { -- | #features-vertexAttributeInstanceRateDivisor#
-    -- @vertexAttributeInstanceRateDivisor@ specifies whether vertex attribute
-    -- fetching may be repeated in the case of instanced rendering.
-    vertexAttributeInstanceRateDivisor :: Bool
-  , -- | #features-vertexAttributeInstanceRateZeroDivisor#
-    -- @vertexAttributeInstanceRateZeroDivisor@ specifies whether a zero value
-    -- for
-    -- 'Vulkan.Extensions.VK_EXT_vertex_attribute_divisor.VertexInputBindingDivisorDescriptionEXT'::@divisor@
-    -- is supported.
-    vertexAttributeInstanceRateZeroDivisor :: Bool
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PhysicalDeviceVertexAttributeDivisorFeaturesKHR)
-#endif
-deriving instance Show PhysicalDeviceVertexAttributeDivisorFeaturesKHR
-
-instance ToCStruct PhysicalDeviceVertexAttributeDivisorFeaturesKHR where
-  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PhysicalDeviceVertexAttributeDivisorFeaturesKHR{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (vertexAttributeInstanceRateDivisor))
-    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (vertexAttributeInstanceRateZeroDivisor))
-    f
-  cStructSize = 24
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_KHR)
-    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 PhysicalDeviceVertexAttributeDivisorFeaturesKHR where
-  peekCStruct p = do
-    vertexAttributeInstanceRateDivisor <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
-    vertexAttributeInstanceRateZeroDivisor <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
-    pure $ PhysicalDeviceVertexAttributeDivisorFeaturesKHR
-             (bool32ToBool vertexAttributeInstanceRateDivisor)
-             (bool32ToBool vertexAttributeInstanceRateZeroDivisor)
-
-instance Storable PhysicalDeviceVertexAttributeDivisorFeaturesKHR where
-  sizeOf ~_ = 24
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero PhysicalDeviceVertexAttributeDivisorFeaturesKHR where
-  zero = PhysicalDeviceVertexAttributeDivisorFeaturesKHR
-           zero
-           zero
+-- No documentation found for TopLevel "VkPhysicalDeviceVertexAttributeDivisorFeaturesKHR"
+type PhysicalDeviceVertexAttributeDivisorFeaturesKHR = PhysicalDeviceVertexAttributeDivisorFeatures
 
 
 type KHR_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION = 1
diff --git a/src/Vulkan/Extensions/VK_KHR_vertex_attribute_divisor.hs-boot b/src/Vulkan/Extensions/VK_KHR_vertex_attribute_divisor.hs-boot
deleted file mode 100644
--- a/src/Vulkan/Extensions/VK_KHR_vertex_attribute_divisor.hs-boot
+++ /dev/null
@@ -1,149 +0,0 @@
-{-# language CPP #-}
--- | = Name
---
--- VK_KHR_vertex_attribute_divisor - device extension
---
--- = VK_KHR_vertex_attribute_divisor
---
--- [__Name String__]
---     @VK_KHR_vertex_attribute_divisor@
---
--- [__Extension Type__]
---     Device extension
---
--- [__Registered Extension Number__]
---     526
---
--- [__Revision__]
---     1
---
--- [__Ratification Status__]
---     Ratified
---
--- [__Extension and Version Dependencies__]
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
---
--- [__Contact__]
---
---     -   Shahbaz Youssefi
---         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_vertex_attribute_divisor] @syoussefi%0A*Here describe the issue or question you have about the VK_KHR_vertex_attribute_divisor extension* >
---
--- [__Extension Proposal__]
---     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_KHR_vertex_attribute_divisor.adoc VK_KHR_vertex_attribute_divisor>
---
--- == Other Extension Metadata
---
--- [__Last Modified Date__]
---     2023-09-20
---
--- [__IP Status__]
---     No known IP claims.
---
--- [__Contributors__]
---
---     -   Shahbaz Youssefi, Google
---
---     -   Contributors to @VK_EXT_vertex_attribute_divisor@
---
--- == Description
---
--- This extension is based on the @VK_EXT_vertex_attribute_divisor@
--- extension. The only difference is the new property
--- @supportsNonZeroFirstInstance@, which indicates support for non-zero
--- values in @firstInstance@. This allows the extension to be supported on
--- implementations that have traditionally only supported OpenGL ES.
---
--- == New Structures
---
--- -   'VertexInputBindingDivisorDescriptionKHR'
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
---     'Vulkan.Core10.Device.DeviceCreateInfo':
---
---     -   'PhysicalDeviceVertexAttributeDivisorFeaturesKHR'
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
---
---     -   'PhysicalDeviceVertexAttributeDivisorPropertiesKHR'
---
--- -   Extending
---     'Vulkan.Core10.Pipeline.PipelineVertexInputStateCreateInfo':
---
---     -   'PipelineVertexInputDivisorStateCreateInfoKHR'
---
--- == New Enum Constants
---
--- -   'KHR_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME'
---
--- -   'KHR_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION'
---
--- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_KHR'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_KHR'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_KHR'
---
--- == Version History
---
--- -   Revision 1, 2023-09-20 (Shahbaz Youssefi)
---
---     -   First Version, based on @VK_EXT_vertex_attribute_divisor@
---
--- == See Also
---
--- No cross-references are available
---
--- == Document Notes
---
--- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_vertex_attribute_divisor 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_vertex_attribute_divisor  ( PhysicalDeviceVertexAttributeDivisorFeaturesKHR
-                                                          , PhysicalDeviceVertexAttributeDivisorPropertiesKHR
-                                                          , PipelineVertexInputDivisorStateCreateInfoKHR
-                                                          , VertexInputBindingDivisorDescriptionKHR
-                                                          ) where
-
-import Vulkan.CStruct (FromCStruct)
-import Vulkan.CStruct (ToCStruct)
-import Data.Kind (Type)
-
-data PhysicalDeviceVertexAttributeDivisorFeaturesKHR
-
-instance ToCStruct PhysicalDeviceVertexAttributeDivisorFeaturesKHR
-instance Show PhysicalDeviceVertexAttributeDivisorFeaturesKHR
-
-instance FromCStruct PhysicalDeviceVertexAttributeDivisorFeaturesKHR
-
-
-data PhysicalDeviceVertexAttributeDivisorPropertiesKHR
-
-instance ToCStruct PhysicalDeviceVertexAttributeDivisorPropertiesKHR
-instance Show PhysicalDeviceVertexAttributeDivisorPropertiesKHR
-
-instance FromCStruct PhysicalDeviceVertexAttributeDivisorPropertiesKHR
-
-
-data PipelineVertexInputDivisorStateCreateInfoKHR
-
-instance ToCStruct PipelineVertexInputDivisorStateCreateInfoKHR
-instance Show PipelineVertexInputDivisorStateCreateInfoKHR
-
-instance FromCStruct PipelineVertexInputDivisorStateCreateInfoKHR
-
-
-data VertexInputBindingDivisorDescriptionKHR
-
-instance ToCStruct VertexInputBindingDivisorDescriptionKHR
-instance Show VertexInputBindingDivisorDescriptionKHR
-
-instance FromCStruct VertexInputBindingDivisorDescriptionKHR
-
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
@@ -69,7 +69,7 @@
 -- @VulkanMemoryModelDeviceScope@, and
 -- @VulkanMemoryModelAvailabilityVisibilityChains@ capabilities in shader
 -- modules. The
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-model Vulkan Memory Model>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-model Vulkan Memory Model>
 -- formally defines how to synchronize memory accesses to the same memory
 -- locations performed by multiple shader invocations.
 --
@@ -86,6 +86,11 @@
 -- original type, enum, and command names are still available as aliases of
 -- the core functionality.
 --
+-- == Promotion to Vulkan 1.3
+--
+-- If Vulkan 1.3 is supported, support for the @vulkanMemoryModel@ and
+-- @vulkanMemoryModelDeviceScope@ capabilities is required.
+--
 -- == New Structures
 --
 -- -   Extending
@@ -106,7 +111,7 @@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-VulkanMemoryModel VulkanMemoryModelKHR>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-VulkanMemoryModel VulkanMemoryModelKHR>
 --
 -- == Version History
 --
@@ -126,7 +131,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_vulkan_memory_model Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -180,7 +180,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_wayland_surface Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -301,10 +301,14 @@
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_wayland_surface VK_KHR_wayland_surface>,
@@ -320,7 +324,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>).
+                           -- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -180,7 +180,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_wayland_surface Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -83,7 +83,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_win32_keyed_mutex Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -173,6 +173,14 @@
 --     that are valid handles of non-ignored parameters /must/ have been
 --     created, allocated, or retrieved from the same
 --     'Vulkan.Core10.Handles.Device'
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Queue.SubmitInfo'
+--
+--     -   'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.SubmitInfo2'
 --
 -- = See Also
 --
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
@@ -83,7 +83,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_win32_keyed_mutex Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -207,7 +207,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_win32_surface Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -327,10 +327,14 @@
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- Some Vulkan functions /may/ call the @SendMessage@ system API when
 -- interacting with a 'Vulkan.Extensions.Handles.SurfaceKHR' through a
 -- 'Vulkan.Extensions.Handles.SwapchainKHR'. In a multithreaded
@@ -352,7 +356,7 @@
 --
 -- -   'Vulkan.Extensions.VK_KHR_swapchain.queuePresentKHR'
 --
--- -   'Vulkan.Extensions.VK_EXT_swapchain_maintenance1.releaseSwapchainImagesEXT'
+-- -   'Vulkan.Extensions.VK_KHR_swapchain_maintenance1.releaseSwapchainImagesKHR'
 --
 -- -   'Vulkan.Extensions.VK_EXT_full_screen_exclusive.acquireFullScreenExclusiveModeEXT'
 --
@@ -375,7 +379,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>).
+                         -- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -207,7 +207,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_win32_surface Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -97,11 +97,11 @@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-WorkgroupMemoryExplicitLayoutKHR WorkgroupMemoryExplicitLayoutKHR>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-WorkgroupMemoryExplicitLayoutKHR WorkgroupMemoryExplicitLayoutKHR>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-WorkgroupMemoryExplicitLayout8BitAccessKHR WorkgroupMemoryExplicitLayout8BitAccessKHR>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-WorkgroupMemoryExplicitLayout8BitAccessKHR WorkgroupMemoryExplicitLayout8BitAccessKHR>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-WorkgroupMemoryExplicitLayout16BitAccessKHR WorkgroupMemoryExplicitLayout16BitAccessKHR>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-WorkgroupMemoryExplicitLayout16BitAccessKHR WorkgroupMemoryExplicitLayout16BitAccessKHR>
 --
 -- == Version History
 --
@@ -116,7 +116,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_workgroup_memory_explicit_layout Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -165,12 +165,21 @@
 -- structure passed to
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
 -- it is filled in to indicate whether each corresponding feature is
--- supported. 'PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR'
--- /can/ also be used in the @pNext@ chain of
--- 'Vulkan.Core10.Device.DeviceCreateInfo' to selectively enable these
--- features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR', it /must/ add
+-- an instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
 --
 -- = See Also
 --
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
@@ -97,11 +97,11 @@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-WorkgroupMemoryExplicitLayoutKHR WorkgroupMemoryExplicitLayoutKHR>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-WorkgroupMemoryExplicitLayoutKHR WorkgroupMemoryExplicitLayoutKHR>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-WorkgroupMemoryExplicitLayout8BitAccessKHR WorkgroupMemoryExplicitLayout8BitAccessKHR>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-WorkgroupMemoryExplicitLayout8BitAccessKHR WorkgroupMemoryExplicitLayout8BitAccessKHR>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-WorkgroupMemoryExplicitLayout16BitAccessKHR WorkgroupMemoryExplicitLayout16BitAccessKHR>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-WorkgroupMemoryExplicitLayout16BitAccessKHR WorkgroupMemoryExplicitLayout16BitAccessKHR>
 --
 -- == Version History
 --
@@ -116,7 +116,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_workgroup_memory_explicit_layout Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -163,7 +163,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_xcb_surface Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -283,10 +283,14 @@
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_xcb_surface VK_KHR_xcb_surface>,
@@ -302,7 +306,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>).
+                       -- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -163,7 +163,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_xcb_surface Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -163,7 +163,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_xlib_surface Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -285,10 +285,14 @@
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_xlib_surface VK_KHR_xlib_surface>,
@@ -304,7 +308,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>).
+                        -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>).
                         ("allocator" ::: Maybe AllocationCallbacks)
                      -> io (SurfaceKHR)
 createXlibSurfaceKHR instance' createInfo allocator = liftIO . evalContT $ do
@@ -369,7 +373,7 @@
                                                -- #VUID-vkGetPhysicalDeviceXlibPresentationSupportKHR-dpy-parameter# @dpy@
                                                -- /must/ be a valid pointer to a 'Display' value
                                                ("dpy" ::: Ptr Display)
-                                            -> -- No documentation found for Nested "vkGetPhysicalDeviceXlibPresentationSupportKHR" "visualID"
+                                            -> -- | @visualID@ is an X11 visual ('VisualID').
                                                VisualID
                                             -> io (Bool)
 getPhysicalDeviceXlibPresentationSupportKHR physicalDevice
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
@@ -163,7 +163,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_xlib_surface Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -98,7 +98,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_zero_initialize_workgroup_memory Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
diff --git a/src/Vulkan/Extensions/VK_LUNARG_direct_driver_loading.hs b/src/Vulkan/Extensions/VK_LUNARG_direct_driver_loading.hs
--- a/src/Vulkan/Extensions/VK_LUNARG_direct_driver_loading.hs
+++ b/src/Vulkan/Extensions/VK_LUNARG_direct_driver_loading.hs
@@ -93,7 +93,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_LUNARG_direct_driver_loading Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_LUNARG_direct_driver_loading Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -234,8 +234,12 @@
 -- structures which contain the information necessary to load additional
 -- drivers.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.DeviceInitialization.InstanceCreateInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_LUNARG_direct_driver_loading VK_LUNARG_direct_driver_loading>,
@@ -338,6 +342,14 @@
 -- | VkDirectDriverLoadingModeLUNARG - Specify loader behavior of added
 -- drivers
 --
+-- = Description
+--
+-- -   'DIRECT_DRIVER_LOADING_MODE_EXCLUSIVE_LUNARG' specifies that the
+--     provided drivers are used instead of the system-loaded drivers.
+--
+-- -   'DIRECT_DRIVER_LOADING_MODE_INCLUSIVE_LUNARG' specifies that the
+--     provided drivers are used in addition to the system-loaded drivers.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_LUNARG_direct_driver_loading VK_LUNARG_direct_driver_loading>,
@@ -345,12 +357,10 @@
 newtype DirectDriverLoadingModeLUNARG = DirectDriverLoadingModeLUNARG Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'DIRECT_DRIVER_LOADING_MODE_EXCLUSIVE_LUNARG' specifies that the
--- provided drivers are used instead of the system-loaded drivers.
+-- No documentation found for Nested "VkDirectDriverLoadingModeLUNARG" "VK_DIRECT_DRIVER_LOADING_MODE_EXCLUSIVE_LUNARG"
 pattern DIRECT_DRIVER_LOADING_MODE_EXCLUSIVE_LUNARG = DirectDriverLoadingModeLUNARG 0
 
--- | 'DIRECT_DRIVER_LOADING_MODE_INCLUSIVE_LUNARG' specifies that the
--- provided drivers are used in addition to the system-loaded drivers.
+-- No documentation found for Nested "VkDirectDriverLoadingModeLUNARG" "VK_DIRECT_DRIVER_LOADING_MODE_INCLUSIVE_LUNARG"
 pattern DIRECT_DRIVER_LOADING_MODE_INCLUSIVE_LUNARG = DirectDriverLoadingModeLUNARG 1
 
 {-# COMPLETE
@@ -412,6 +422,7 @@
 --
 -- = See Also
 --
+-- 'Vulkan.Core10.FuncPointers.PFN_vkVoidFunction',
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_LUNARG_direct_driver_loading VK_LUNARG_direct_driver_loading>,
 -- 'DirectDriverLoadingInfoLUNARG', 'Vulkan.Core10.Handles.Instance'
 type PFN_vkGetInstanceProcAddrLUNARG = FunPtr FN_vkGetInstanceProcAddrLUNARG
diff --git a/src/Vulkan/Extensions/VK_LUNARG_direct_driver_loading.hs-boot b/src/Vulkan/Extensions/VK_LUNARG_direct_driver_loading.hs-boot
--- a/src/Vulkan/Extensions/VK_LUNARG_direct_driver_loading.hs-boot
+++ b/src/Vulkan/Extensions/VK_LUNARG_direct_driver_loading.hs-boot
@@ -93,7 +93,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_LUNARG_direct_driver_loading Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_LUNARG_direct_driver_loading Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_MESA_image_alignment_control.hs b/src/Vulkan/Extensions/VK_MESA_image_alignment_control.hs
--- a/src/Vulkan/Extensions/VK_MESA_image_alignment_control.hs
+++ b/src/Vulkan/Extensions/VK_MESA_image_alignment_control.hs
@@ -114,7 +114,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_MESA_image_alignment_control Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_MESA_image_alignment_control Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -167,12 +167,22 @@
 -- 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. 'PhysicalDeviceImageAlignmentControlFeaturesMESA' /can/ also
--- be used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo'
--- to selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceImageAlignmentControlFeaturesMESA', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_MESA_image_alignment_control VK_MESA_image_alignment_control>,
@@ -239,8 +249,12 @@
 -- it is filled in with each corresponding implementation-dependent
 -- property.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_MESA_image_alignment_control VK_MESA_image_alignment_control>,
@@ -312,7 +326,7 @@
 -- would enable image compression - the implementation /should/ not use
 -- @maximumRequestedAlignment@, and /should/ return the smallest alignment
 -- which does not compromise compression. If the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-imageCompressionControl imageCompressionControl>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-imageCompressionControl imageCompressionControl>
 -- feature is enabled, the application /can/ chain a
 -- 'Vulkan.Extensions.VK_EXT_image_compression_control.ImageCompressionControlEXT'
 -- with
@@ -329,11 +343,11 @@
 -- -   #VUID-VkImageAlignmentControlCreateInfoMESA-maximumRequestedAlignment-09656#
 --     If @maximumRequestedAlignment@ is not 0, the bitwise-and of
 --     @maximumRequestedAlignment@ and
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-supportedImageAlignmentMask supportedImageAlignmentMask>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-supportedImageAlignmentMask supportedImageAlignmentMask>
 --     /must/ be non-zero
 --
 -- -   #VUID-VkImageAlignmentControlCreateInfoMESA-imageAlignmentControl-09657#
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-imageAlignmentControl imageAlignmentControl>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-imageAlignmentControl imageAlignmentControl>
 --     /must/ be enabled
 --
 -- == Valid Usage (Implicit)
@@ -341,6 +355,12 @@
 -- -   #VUID-VkImageAlignmentControlCreateInfoMESA-sType-sType# @sType@
 --     /must/ be
 --     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_ALIGNMENT_CONTROL_CREATE_INFO_MESA'
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.Image.ImageCreateInfo'
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Extensions/VK_MESA_image_alignment_control.hs-boot b/src/Vulkan/Extensions/VK_MESA_image_alignment_control.hs-boot
--- a/src/Vulkan/Extensions/VK_MESA_image_alignment_control.hs-boot
+++ b/src/Vulkan/Extensions/VK_MESA_image_alignment_control.hs-boot
@@ -114,7 +114,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_MESA_image_alignment_control Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_MESA_image_alignment_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_MSFT_layered_driver.hs b/src/Vulkan/Extensions/VK_MSFT_layered_driver.hs
--- a/src/Vulkan/Extensions/VK_MSFT_layered_driver.hs
+++ b/src/Vulkan/Extensions/VK_MSFT_layered_driver.hs
@@ -89,7 +89,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_MSFT_layered_driver Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_MSFT_layered_driver Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -138,7 +138,11 @@
 -- These are properties of the driver layering information of a physical
 -- device.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Extensions/VK_MSFT_layered_driver.hs-boot b/src/Vulkan/Extensions/VK_MSFT_layered_driver.hs-boot
--- a/src/Vulkan/Extensions/VK_MSFT_layered_driver.hs-boot
+++ b/src/Vulkan/Extensions/VK_MSFT_layered_driver.hs-boot
@@ -89,7 +89,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_MSFT_layered_driver Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_MSFT_layered_driver Vulkan Specification>.
 --
 -- This 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_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
@@ -107,7 +107,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_MVK_ios_surface Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -191,7 +191,7 @@
 --
 -- = Description
 --
--- The 'createIOSSurfaceMVK' function is considered deprecated and has been
+-- The 'createIOSSurfaceMVK' function is considered legacy and has been
 -- superseded by
 -- 'Vulkan.Extensions.VK_EXT_metal_surface.createMetalSurfaceEXT' from the
 -- @VK_EXT_metal_surface@ extension.
@@ -220,12 +220,16 @@
 --
 -- [<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_NATIVE_WINDOW_IN_USE_KHR'
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_NATIVE_WINDOW_IN_USE_KHR'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_MVK_ios_surface VK_MVK_ios_surface>,
@@ -241,7 +245,7 @@
                        IOSSurfaceCreateInfoMVK
                     -> -- | @pAllocator@ is the allocator used for host memory allocated for the
                        -- surface object when there is no more specific allocator available (see
-                       -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>).
+                       -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>).
                        ("allocator" ::: Maybe AllocationCallbacks)
                     -> io (SurfaceKHR)
 createIOSSurfaceMVK instance' createInfo allocator = liftIO . evalContT $ do
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
@@ -107,7 +107,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_MVK_ios_surface Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -107,7 +107,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_MVK_macos_surface Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -192,8 +192,8 @@
 --
 -- = Description
 --
--- The 'createMacOSSurfaceMVK' function is considered deprecated and has
--- been superseded by
+-- The 'createMacOSSurfaceMVK' function is considered legacy and has been
+-- superseded by
 -- 'Vulkan.Extensions.VK_EXT_metal_surface.createMetalSurfaceEXT' from the
 -- @VK_EXT_metal_surface@ extension.
 --
@@ -222,12 +222,16 @@
 --
 -- [<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_NATIVE_WINDOW_IN_USE_KHR'
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_NATIVE_WINDOW_IN_USE_KHR'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_MVK_macos_surface VK_MVK_macos_surface>,
@@ -243,7 +247,7 @@
                          MacOSSurfaceCreateInfoMVK
                       -> -- | @pAllocator@ is the allocator used for host memory allocated for the
                          -- surface object when there is no more specific allocator available (see
-                         -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>).
+                         -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>).
                          ("allocator" ::: Maybe AllocationCallbacks)
                       -> io (SurfaceKHR)
 createMacOSSurfaceMVK instance' createInfo allocator = liftIO . evalContT $ do
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
@@ -107,7 +107,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_MVK_macos_surface Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -82,7 +82,7 @@
 -- __RESOLVED__: No. It is currently always assumed that the device and
 -- display will always be compatible.
 --
--- 2) 'ViSurfaceCreateInfoNN'::@pWindow@ is intended to store an
+-- 2) 'ViSurfaceCreateInfoNN'::@window@ is intended to store an
 -- @nn@::@vi@::@NativeWindowHandle@, but its declared type is a bare
 -- @void*@ to store the window handle. Why the discrepancy?
 --
@@ -105,7 +105,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NN_vi_surface Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -228,12 +228,16 @@
 --
 -- [<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_NATIVE_WINDOW_IN_USE_KHR'
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_NATIVE_WINDOW_IN_USE_KHR'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NN_vi_surface VK_NN_vi_surface>,
@@ -249,7 +253,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>).
+                     -- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -82,7 +82,7 @@
 -- __RESOLVED__: No. It is currently always assumed that the device and
 -- display will always be compatible.
 --
--- 2) 'ViSurfaceCreateInfoNN'::@pWindow@ is intended to store an
+-- 2) 'ViSurfaceCreateInfoNN'::@window@ is intended to store an
 -- @nn@::@vi@::@NativeWindowHandle@, but its declared type is a bare
 -- @void*@ to store the window handle. Why the discrepancy?
 --
@@ -105,7 +105,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NN_vi_surface Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -163,6 +163,9 @@
 --     be a valid pointer to a 'Vulkan.Extensions.Handles.CuFunctionNVX'
 --     handle
 --
+-- -   #VUID-vkCreateCuFunctionNVX-device-queuecount# The device /must/
+--     have been created with at least @1@ queue
+--
 -- === Return Codes
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
@@ -171,10 +174,14 @@
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_INITIALIZATION_FAILED'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_INITIALIZATION_FAILED'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- There is currently no specification language written for this type. This
 -- section acts only as placeholder and to avoid dead links in the
 -- specification and reference pages.
@@ -253,6 +260,9 @@
 -- -   #VUID-vkCreateCuModuleNVX-pModule-parameter# @pModule@ /must/ be a
 --     valid pointer to a 'Vulkan.Extensions.Handles.CuModuleNVX' handle
 --
+-- -   #VUID-vkCreateCuModuleNVX-device-queuecount# The device /must/ have
+--     been created with at least @1@ queue
+--
 -- === Return Codes
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
@@ -261,10 +271,14 @@
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_INITIALIZATION_FAILED'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_INITIALIZATION_FAILED'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- There is currently no specification language written for this type. This
 -- section acts only as placeholder and to avoid dead links in the
 -- specification and reference pages.
@@ -287,7 +301,7 @@
 --     'CuModuleTexturingModeCreateInfoNVX'
 --
 -- -   #VUID-VkCuModuleCreateInfoNVX-sType-unique# The @sType@ value of
---     each struct in the @pNext@ chain /must/ be unique
+--     each structure in the @pNext@ chain /must/ be unique
 --
 -- -   #VUID-VkCuModuleCreateInfoNVX-pData-parameter# If @dataSize@ is not
 --     @0@, @pData@ /must/ be a valid pointer to an array of @dataSize@
@@ -310,6 +324,12 @@
 --     /must/ be
 --     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_CU_MODULE_TEXTURING_MODE_CREATE_INFO_NVX'
 --
+-- === Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'CuModuleCreateInfoNVX'
+--
 -- There is currently no specification language written for this command.
 -- This section acts only as placeholder and to avoid dead links in the
 -- specification and reference pages.
@@ -359,8 +379,13 @@
 --
 -- -   #VUID-vkCmdCuLaunchKernelNVX-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics, or compute operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', or
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
+-- -   #VUID-vkCmdCuLaunchKernelNVX-suspended# This command /must/ not be
+--     called between suspended render pass instances
+--
 -- -   #VUID-vkCmdCuLaunchKernelNVX-videocoding# This command /must/ only
 --     be called outside of a video coding scope
 --
@@ -376,10 +401,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | Action                                                                                                                                 |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | Compute                                                                                                               |                                                                                                                                        |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | VK_QUEUE_GRAPHICS_BIT                                                                                                 |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- === Conditional Rendering
+--
+-- vkCmdCuLaunchKernelNVX is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- There is currently no specification language written for this type. This
 -- section acts only as placeholder and to avoid dead links in the
 -- specification and reference pages.
@@ -437,7 +467,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NVX_binary_import Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -581,6 +611,9 @@
 -- -   #VUID-vkCreateCuModuleNVX-pModule-parameter# @pModule@ /must/ be a
 --     valid pointer to a 'Vulkan.Extensions.Handles.CuModuleNVX' handle
 --
+-- -   #VUID-vkCreateCuModuleNVX-device-queuecount# The device /must/ have
+--     been created with at least @1@ queue
+--
 -- == Return Codes
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
@@ -589,10 +622,14 @@
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_INITIALIZATION_FAILED'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_INITIALIZATION_FAILED'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NVX_binary_import VK_NVX_binary_import>,
@@ -667,6 +704,9 @@
 --     be a valid pointer to a 'Vulkan.Extensions.Handles.CuFunctionNVX'
 --     handle
 --
+-- -   #VUID-vkCreateCuFunctionNVX-device-queuecount# The device /must/
+--     have been created with at least @1@ queue
+--
 -- == Return Codes
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
@@ -675,10 +715,14 @@
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_INITIALIZATION_FAILED'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_INITIALIZATION_FAILED'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NVX_binary_import VK_NVX_binary_import>,
@@ -858,8 +902,13 @@
 --
 -- -   #VUID-vkCmdCuLaunchKernelNVX-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics, or compute operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', or
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
+-- -   #VUID-vkCmdCuLaunchKernelNVX-suspended# This command /must/ not be
+--     called between suspended render pass instances
+--
 -- -   #VUID-vkCmdCuLaunchKernelNVX-videocoding# This command /must/ only
 --     be called outside of a video coding scope
 --
@@ -875,10 +924,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | Action                                                                                                                                 |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | Compute                                                                                                               |                                                                                                                                        |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | VK_QUEUE_GRAPHICS_BIT                                                                                                 |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdCuLaunchKernelNVX is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NVX_binary_import VK_NVX_binary_import>,
@@ -914,7 +968,7 @@
 --     'CuModuleTexturingModeCreateInfoNVX'
 --
 -- -   #VUID-VkCuModuleCreateInfoNVX-sType-unique# The @sType@ value of
---     each struct in the @pNext@ chain /must/ be unique
+--     each structure in the @pNext@ chain /must/ be unique
 --
 -- -   #VUID-VkCuModuleCreateInfoNVX-pData-parameter# If @dataSize@ is not
 --     @0@, @pData@ /must/ be a valid pointer to an array of @dataSize@
@@ -986,7 +1040,11 @@
 -- | VkCuModuleTexturingModeCreateInfoNVX - Stub description of
 -- VkCuModuleTexturingModeCreateInfoNVX
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'CuModuleCreateInfoNVX'
 --
 -- = See Also
 --
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
@@ -163,6 +163,9 @@
 --     be a valid pointer to a 'Vulkan.Extensions.Handles.CuFunctionNVX'
 --     handle
 --
+-- -   #VUID-vkCreateCuFunctionNVX-device-queuecount# The device /must/
+--     have been created with at least @1@ queue
+--
 -- === Return Codes
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
@@ -171,10 +174,14 @@
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_INITIALIZATION_FAILED'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_INITIALIZATION_FAILED'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- There is currently no specification language written for this type. This
 -- section acts only as placeholder and to avoid dead links in the
 -- specification and reference pages.
@@ -253,6 +260,9 @@
 -- -   #VUID-vkCreateCuModuleNVX-pModule-parameter# @pModule@ /must/ be a
 --     valid pointer to a 'Vulkan.Extensions.Handles.CuModuleNVX' handle
 --
+-- -   #VUID-vkCreateCuModuleNVX-device-queuecount# The device /must/ have
+--     been created with at least @1@ queue
+--
 -- === Return Codes
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
@@ -261,10 +271,14 @@
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_INITIALIZATION_FAILED'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_INITIALIZATION_FAILED'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- There is currently no specification language written for this type. This
 -- section acts only as placeholder and to avoid dead links in the
 -- specification and reference pages.
@@ -287,7 +301,7 @@
 --     'CuModuleTexturingModeCreateInfoNVX'
 --
 -- -   #VUID-VkCuModuleCreateInfoNVX-sType-unique# The @sType@ value of
---     each struct in the @pNext@ chain /must/ be unique
+--     each structure in the @pNext@ chain /must/ be unique
 --
 -- -   #VUID-VkCuModuleCreateInfoNVX-pData-parameter# If @dataSize@ is not
 --     @0@, @pData@ /must/ be a valid pointer to an array of @dataSize@
@@ -310,6 +324,12 @@
 --     /must/ be
 --     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_CU_MODULE_TEXTURING_MODE_CREATE_INFO_NVX'
 --
+-- === Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'CuModuleCreateInfoNVX'
+--
 -- There is currently no specification language written for this command.
 -- This section acts only as placeholder and to avoid dead links in the
 -- specification and reference pages.
@@ -359,8 +379,13 @@
 --
 -- -   #VUID-vkCmdCuLaunchKernelNVX-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics, or compute operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', or
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
+-- -   #VUID-vkCmdCuLaunchKernelNVX-suspended# This command /must/ not be
+--     called between suspended render pass instances
+--
 -- -   #VUID-vkCmdCuLaunchKernelNVX-videocoding# This command /must/ only
 --     be called outside of a video coding scope
 --
@@ -376,10 +401,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | Action                                                                                                                                 |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | Compute                                                                                                               |                                                                                                                                        |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | VK_QUEUE_GRAPHICS_BIT                                                                                                 |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- === Conditional Rendering
+--
+-- vkCmdCuLaunchKernelNVX is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- There is currently no specification language written for this type. This
 -- section acts only as placeholder and to avoid dead links in the
 -- specification and reference pages.
@@ -437,7 +467,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NVX_binary_import Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -15,7 +15,7 @@
 --     31
 --
 -- [__Revision__]
---     3
+--     4
 --
 -- [__Ratification Status__]
 --     Not ratified
@@ -31,7 +31,7 @@
 -- == Other Extension Metadata
 --
 -- [__Last Modified Date__]
---     2024-11-04
+--     2025-12-03
 --
 -- [__Contributors__]
 --
@@ -43,6 +43,8 @@
 --
 --     -   Liam Middlebrook, NVIDIA
 --
+--     -   Rodrigo Locatti, NVIDIA
+--
 -- == Description
 --
 -- This extension allows applications to query an opaque handle from an
@@ -51,6 +53,8 @@
 --
 -- == New Commands
 --
+-- -   'getDeviceCombinedImageSamplerIndexNVX'
+--
 -- -   'getImageViewAddressNVX'
 --
 -- -   'getImageViewHandle64NVX'
@@ -77,6 +81,10 @@
 --
 -- == Version History
 --
+-- -   Revision 4, 2025-12-03 (Rodrigo Locatti)
+--
+--     -   Add 'getDeviceCombinedImageSamplerIndexNVX'
+--
 -- -   Revision 3, 2024-11-04 (Liam Middlebrook)
 --
 --     -   Add 'getImageViewHandle64NVX'
@@ -96,13 +104,14 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NVX_image_view_handle Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
 module Vulkan.Extensions.VK_NVX_image_view_handle  ( getImageViewHandleNVX
                                                    , getImageViewHandle64NVX
                                                    , getImageViewAddressNVX
+                                                   , getDeviceCombinedImageSamplerIndexNVX
                                                    , ImageViewHandleInfoNVX(..)
                                                    , ImageViewAddressPropertiesNVX(..)
                                                    , NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION
@@ -143,11 +152,13 @@
 import Data.Word (Word64)
 import Data.Kind (Type)
 import Control.Monad.Trans.Cont (ContT(..))
+import Vulkan.NamedType ((:::))
 import Vulkan.Core10.Enums.DescriptorType (DescriptorType)
 import Vulkan.Core10.Handles (Device)
 import Vulkan.Core10.Handles (Device(..))
 import Vulkan.Core10.Handles (Device(Device))
 import Vulkan.Core10.FundamentalTypes (DeviceAddress)
+import Vulkan.Dynamic (DeviceCmds(pVkGetDeviceCombinedImageSamplerIndexNVX))
 import Vulkan.Dynamic (DeviceCmds(pVkGetImageViewAddressNVX))
 import Vulkan.Dynamic (DeviceCmds(pVkGetImageViewHandle64NVX))
 import Vulkan.Dynamic (DeviceCmds(pVkGetImageViewHandleNVX))
@@ -264,6 +275,10 @@
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NVX_image_view_handle VK_NVX_image_view_handle>,
@@ -300,6 +315,56 @@
   pure $ (pProperties)
 
 
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetDeviceCombinedImageSamplerIndexNVX
+  :: FunPtr (Ptr Device_T -> Word64 -> Word64 -> IO Word64) -> Ptr Device_T -> Word64 -> Word64 -> IO Word64
+
+-- | vkGetDeviceCombinedImageSamplerIndexNVX - Get the handle for an image
+-- view and sampler index
+--
+-- = Description
+--
+-- Shaders take @imageViewIndex@ and @samplerIndex@, and multiply it by
+-- 'Vulkan.Extensions.VK_EXT_descriptor_heap.PhysicalDeviceDescriptorHeapPropertiesEXT'::@imageDescriptorSize@
+-- and
+-- 'Vulkan.Extensions.VK_EXT_descriptor_heap.PhysicalDeviceDescriptorHeapPropertiesEXT'::@samplerDescriptorSize@
+-- respectively to obtain the descriptor offset in bytes.
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NVX_image_view_handle VK_NVX_image_view_handle>,
+-- 'Vulkan.Core10.Handles.Device'
+getDeviceCombinedImageSamplerIndexNVX :: forall io
+                                       . (MonadIO io)
+                                      => -- | @device@ is the logical device that will use the result handle.
+                                         --
+                                         -- #VUID-vkGetDeviceCombinedImageSamplerIndexNVX-device-parameter# @device@
+                                         -- /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+                                         Device
+                                      -> -- | @imageViewIndex@ is the index within the resource heap.
+                                         ("imageViewIndex" ::: Word64)
+                                      -> -- | @samplerIndex@ is the index within the sampler heap.
+                                         ("samplerIndex" ::: Word64)
+                                      -> io (Word64)
+getDeviceCombinedImageSamplerIndexNVX device
+                                        imageViewIndex
+                                        samplerIndex = liftIO $ do
+  let vkGetDeviceCombinedImageSamplerIndexNVXPtr = pVkGetDeviceCombinedImageSamplerIndexNVX (case device of Device{deviceCmds} -> deviceCmds)
+  unless (vkGetDeviceCombinedImageSamplerIndexNVXPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetDeviceCombinedImageSamplerIndexNVX is null" Nothing Nothing
+  let vkGetDeviceCombinedImageSamplerIndexNVX' = mkVkGetDeviceCombinedImageSamplerIndexNVX vkGetDeviceCombinedImageSamplerIndexNVXPtr
+  r <- traceAroundEvent "vkGetDeviceCombinedImageSamplerIndexNVX" (vkGetDeviceCombinedImageSamplerIndexNVX'
+                                                                     (deviceHandle (device))
+                                                                     (imageViewIndex)
+                                                                     (samplerIndex))
+  pure $ (r)
+
+
 -- | VkImageViewHandleInfoNVX - Structure specifying the image view for
 -- handle queries
 --
@@ -323,14 +388,14 @@
 --     the image that @imageView@ was created from /must/ have been created
 --     with the
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT'
---     usage bit set
+--     usage flag set
 --
 -- -   #VUID-VkImageViewHandleInfoNVX-imageView-02657# If descriptorType is
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',
 --     the image that @imageView@ was created from /must/ have been created
 --     with the
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_STORAGE_BIT'
---     usage bit set
+--     usage flag set
 --
 -- == Valid Usage (Implicit)
 --
@@ -476,11 +541,11 @@
            zero
 
 
-type NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION = 3
+type NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION = 4
 
 -- No documentation found for TopLevel "VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION"
 pattern NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION :: forall a . Integral a => a
-pattern NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION = 3
+pattern NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION = 4
 
 
 type NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME = "VK_NVX_image_view_handle"
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
@@ -15,7 +15,7 @@
 --     31
 --
 -- [__Revision__]
---     3
+--     4
 --
 -- [__Ratification Status__]
 --     Not ratified
@@ -31,7 +31,7 @@
 -- == Other Extension Metadata
 --
 -- [__Last Modified Date__]
---     2024-11-04
+--     2025-12-03
 --
 -- [__Contributors__]
 --
@@ -43,6 +43,8 @@
 --
 --     -   Liam Middlebrook, NVIDIA
 --
+--     -   Rodrigo Locatti, NVIDIA
+--
 -- == Description
 --
 -- This extension allows applications to query an opaque handle from an
@@ -51,6 +53,8 @@
 --
 -- == New Commands
 --
+-- -   'getDeviceCombinedImageSamplerIndexNVX'
+--
 -- -   'getImageViewAddressNVX'
 --
 -- -   'getImageViewHandle64NVX'
@@ -77,6 +81,10 @@
 --
 -- == Version History
 --
+-- -   Revision 4, 2025-12-03 (Rodrigo Locatti)
+--
+--     -   Add 'getDeviceCombinedImageSamplerIndexNVX'
+--
 -- -   Revision 3, 2024-11-04 (Liam Middlebrook)
 --
 --     -   Add 'getImageViewHandle64NVX'
@@ -96,7 +104,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NVX_image_view_handle Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -66,14 +66,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader stages>.
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader stages>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader stages>
 -- once for all views rather than once per-view, which reduces redundant
 -- shading work.
 --
@@ -111,7 +111,7 @@
 --
 -- -   Extending
 --     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo',
---     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo',
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo',
 --     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo':
 --
 --     -   'MultiviewPerViewAttributesInfoNVX'
@@ -145,13 +145,13 @@
 --
 -- == New Built-In Variables
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-positionperview PositionPerViewNV>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-positionperview PositionPerViewNV>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-viewportmaskperview ViewportMaskPerViewNV>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-viewportmaskperview ViewportMaskPerViewNV>
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-PerViewAttributesNV PerViewAttributesNV>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-PerViewAttributesNV PerViewAttributesNV>
 --
 -- == Examples
 --
@@ -185,7 +185,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NVX_multiview_per_view_attributes Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -233,8 +233,12 @@
 -- it is filled in with each corresponding implementation-dependent
 -- property.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
 -- = See Also
 --
 -- <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>,
@@ -297,15 +301,23 @@
 -- 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.Core10.GraphicsPipeline.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 (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo'
+--
+--     -   'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'
+--
+--     -   'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'
 --
 -- = See Also
 --
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
@@ -66,14 +66,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader stages>.
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader stages>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader stages>
 -- once for all views rather than once per-view, which reduces redundant
 -- shading work.
 --
@@ -111,7 +111,7 @@
 --
 -- -   Extending
 --     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo',
---     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo',
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo',
 --     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo':
 --
 --     -   'MultiviewPerViewAttributesInfoNVX'
@@ -145,13 +145,13 @@
 --
 -- == New Built-In Variables
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-positionperview PositionPerViewNV>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-positionperview PositionPerViewNV>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-viewportmaskperview ViewportMaskPerViewNV>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-viewportmaskperview ViewportMaskPerViewNV>
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-PerViewAttributesNV PerViewAttributesNV>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-PerViewAttributesNV PerViewAttributesNV>
 --
 -- == Examples
 --
@@ -185,7 +185,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NVX_multiview_per_view_attributes Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -106,8 +106,8 @@
 --
 -- The X11 acquire command does need to accept a platform-specific
 -- parameter. This could be handled by adding to a platform-independent
--- acquire command a params struct to which platform-dependent types can be
--- chained by @pNext@ pointer.
+-- acquire command a params structure to which platform-dependent types can
+-- be chained by @pNext@ pointer.
 --
 -- The prevailing opinion is that it would be odd to create a second
 -- platform-independent function that is used on the Windows 10 platform,
@@ -166,7 +166,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_acquire_winrt_display Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -259,12 +259,16 @@
 --
 -- [<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_DEVICE_LOST'
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_INITIALIZATION_FAILED'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_acquire_winrt_display VK_NV_acquire_winrt_display>,
@@ -322,11 +326,15 @@
 --
 -- [<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_DEVICE_LOST'
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_INITIALIZATION_FAILED'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
 --
 -- = See Also
 --
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
@@ -79,7 +79,8 @@
 --
 -- -   'ViewportWScalingNV'
 --
--- -   Extending 'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo':
+-- -   Extending
+--     'Vulkan.Core10.GraphicsPipeline.PipelineViewportStateCreateInfo':
 --
 --     -   'PipelineViewportWScalingStateCreateInfoNV'
 --
@@ -99,7 +100,7 @@
 --
 -- == Issues
 --
--- 1) Is the pipeline struct name too long?
+-- 1) Is the pipeline structure name too long?
 --
 -- __RESOLVED__: It fits with the naming convention.
 --
@@ -200,7 +201,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_clip_space_w_scaling Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -282,11 +283,11 @@
 --
 -- This command sets the viewport __W__ scaling for subsequent drawing
 -- commands when drawing using
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-objects shader objects>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader objects>,
 -- or when the graphics pipeline is created with
 -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_NV'
 -- set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
 -- Otherwise, this state is specified by the
 -- 'PipelineViewportWScalingStateCreateInfoNV'::@pViewportWScalings@ values
 -- used to create the currently active pipeline.
@@ -314,7 +315,8 @@
 --
 -- -   #VUID-vkCmdSetViewportWScalingNV-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdSetViewportWScalingNV-videocoding# This command /must/
 --     only be called outside of a video coding scope
@@ -336,10 +338,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
 -- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdSetViewportWScalingNV is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_clip_space_w_scaling VK_NV_clip_space_w_scaling>,
@@ -427,7 +434,11 @@
 -- | VkPipelineViewportWScalingStateCreateInfoNV - Structure specifying
 -- parameters of a newly created pipeline viewport W scaling state
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.GraphicsPipeline.PipelineViewportStateCreateInfo'
 --
 -- = See Also
 --
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
@@ -79,7 +79,8 @@
 --
 -- -   'ViewportWScalingNV'
 --
--- -   Extending 'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo':
+-- -   Extending
+--     'Vulkan.Core10.GraphicsPipeline.PipelineViewportStateCreateInfo':
 --
 --     -   'PipelineViewportWScalingStateCreateInfoNV'
 --
@@ -99,7 +100,7 @@
 --
 -- == Issues
 --
--- 1) Is the pipeline struct name too long?
+-- 1) Is the pipeline structure name too long?
 --
 -- __RESOLVED__: It fits with the naming convention.
 --
@@ -200,7 +201,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_clip_space_w_scaling Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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_command_buffer_inheritance.hs b/src/Vulkan/Extensions/VK_NV_command_buffer_inheritance.hs
--- a/src/Vulkan/Extensions/VK_NV_command_buffer_inheritance.hs
+++ b/src/Vulkan/Extensions/VK_NV_command_buffer_inheritance.hs
@@ -21,7 +21,9 @@
 --     Not ratified
 --
 -- [__Extension and Version Dependencies__]
---     None
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
 --
 -- [__Contact__]
 --
@@ -113,7 +115,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_command_buffer_inheritance Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_NV_command_buffer_inheritance Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -162,11 +164,21 @@
 -- 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. 'PhysicalDeviceCommandBufferInheritanceFeaturesNV' /can/ also
--- be used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo'
--- to selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceCommandBufferInheritanceFeaturesNV', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Extensions/VK_NV_command_buffer_inheritance.hs-boot b/src/Vulkan/Extensions/VK_NV_command_buffer_inheritance.hs-boot
--- a/src/Vulkan/Extensions/VK_NV_command_buffer_inheritance.hs-boot
+++ b/src/Vulkan/Extensions/VK_NV_command_buffer_inheritance.hs-boot
@@ -21,7 +21,9 @@
 --     Not ratified
 --
 -- [__Extension and Version Dependencies__]
---     None
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
 --
 -- [__Contact__]
 --
@@ -113,7 +115,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_command_buffer_inheritance Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_NV_command_buffer_inheritance Vulkan Specification>.
 --
 -- This 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_occupancy_priority.hs b/src/Vulkan/Extensions/VK_NV_compute_occupancy_priority.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_NV_compute_occupancy_priority.hs
@@ -0,0 +1,488 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_NV_compute_occupancy_priority - device extension
+--
+-- = VK_NV_compute_occupancy_priority
+--
+-- [__Name String__]
+--     @VK_NV_compute_occupancy_priority@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     646
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Not ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
+--
+-- [__Contact__]
+--
+--     -   Chris Lentini
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_NV_compute_occupancy_priority] @clentini%0A*Here describe the issue or question you have about the VK_NV_compute_occupancy_priority extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_NV_compute_occupancy_priority.adoc VK_NV_compute_occupancy_priority>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2025-12-01
+--
+-- [__Contributors__]
+--
+--     -   Chris Lentini, NVIDIA
+--
+--     -   Eric Werness, NVIDIA
+--
+--     -   Lionel Duc, NVIDIA
+--
+--     -   Peter Deayton, NVIDIA
+--
+-- == Description
+--
+-- This extension provides applications with control over how their compute
+-- workloads utilize GPU compute resources, specifically allowing
+-- prioritization relative to other simultaneously executing workloads.
+-- Applications can specify the priority with which compute workloads
+-- should occupy GPU compute resources, allowing for a fine-grained
+-- distinction between workloads that may want to execute at a background
+-- priority over a long period of time versus workloads with harder latency
+-- requirements.
+--
+-- The extension introduces a new command
+-- 'cmdSetComputeOccupancyPriorityNV' that allows applications to set the
+-- occupancy priority for subsequent compute dispatches. The occupancy
+-- priority affects how compute workloads utilize GPU compute resources
+-- relative to other simultaneously executing workloads.
+--
+-- The occupancy priority is stateful on a command buffer. All commands
+-- listed in the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#dispatch Dispatching Commands>
+-- chapter issued subsequent to a 'cmdSetComputeOccupancyPriorityNV' call
+-- will be executed with the specified priority parameters until another
+-- 'cmdSetComputeOccupancyPriorityNV' call is made.
+--
+-- For convenience, three named occupancy priority values are defined:
+--
+-- -   __VK_COMPUTE_OCCUPANCY_PRIORITY_LOW_NV__ - a constant value that can
+--     be used for
+--     'ComputeOccupancyPriorityParametersNV'::@occupancyPriority@ to
+--     specify a low priority level.
+--
+-- -   __VK_COMPUTE_OCCUPANCY_PRIORITY_NORMAL_NV__ - a constant value that
+--     can be used for
+--     'ComputeOccupancyPriorityParametersNV'::@occupancyPriority@ to
+--     specify a normal priority level. This represents the default
+--     priority level.
+--
+-- -   __VK_COMPUTE_OCCUPANCY_PRIORITY_HIGH_NV__ - a constant value that
+--     can be used for
+--     'ComputeOccupancyPriorityParametersNV'::@occupancyPriority@ to
+--     specify a high priority level.
+--
+-- All command buffers (primary and secondary) start with a priority level
+-- equal to the VK_COMPUTE_OCCUPANCY_PRIORITY_NORMAL_NV value. The priority
+-- state is not inherited by secondary command buffers - each command
+-- buffer maintains its own independent priority state.
+--
+-- == New Commands
+--
+-- -   'cmdSetComputeOccupancyPriorityNV'
+--
+-- == New Structures
+--
+-- -   'ComputeOccupancyPriorityParametersNV'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceComputeOccupancyPriorityFeaturesNV'
+--
+-- == New Enum Constants
+--
+-- -   'Vulkan.Core10.APIConstants.COMPUTE_OCCUPANCY_PRIORITY_HIGH_NV'
+--
+-- -   'Vulkan.Core10.APIConstants.COMPUTE_OCCUPANCY_PRIORITY_LOW_NV'
+--
+-- -   'Vulkan.Core10.APIConstants.COMPUTE_OCCUPANCY_PRIORITY_NORMAL_NV'
+--
+-- -   'NV_COMPUTE_OCCUPANCY_PRIORITY_EXTENSION_NAME'
+--
+-- -   'NV_COMPUTE_OCCUPANCY_PRIORITY_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COMPUTE_OCCUPANCY_PRIORITY_PARAMETERS_NV'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_OCCUPANCY_PRIORITY_FEATURES_NV'
+--
+-- The extension only allows specification of occupancy priority for
+-- compute workloads, however, the priorities will also impact the
+-- prioritization of compute workloads relative to simultaneously executing
+-- graphics workloads. In such a scenario, the graphics workload may be
+-- thought of as executing at VK_COMPUTE_OCCUPANCY_PRIORITY_NORMAL_NV
+-- priority, and so a simultaneously executing compute workload with
+-- VK_COMPUTE_OCCUPANCY_PRIORITY_HIGH_NV occupancy priority will
+-- preferentially utilize available compute resources.
+--
+-- Workloads specified with a higher priority may begin execution after
+-- workloads specified with a lower priority, at which point they may find
+-- GPU compute resources already occupied. So, while they will from that
+-- point forward preferentially occupy available compute resources, they
+-- may not ramp up to full occupancy until the already present lower
+-- priority work has reached a point where it can relinquish compute
+-- resources.
+--
+-- == Issues
+--
+-- None.
+--
+-- == Version History
+--
+-- -   Revision 1, 2025-08-06 (Chris Lentini)
+--
+--     -   Initial revision
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_NV_compute_occupancy_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_NV_compute_occupancy_priority  ( cmdSetComputeOccupancyPriorityNV
+                                                           , ComputeOccupancyPriorityParametersNV(..)
+                                                           , PhysicalDeviceComputeOccupancyPriorityFeaturesNV(..)
+                                                           , NV_COMPUTE_OCCUPANCY_PRIORITY_SPEC_VERSION
+                                                           , pattern NV_COMPUTE_OCCUPANCY_PRIORITY_SPEC_VERSION
+                                                           , NV_COMPUTE_OCCUPANCY_PRIORITY_EXTENSION_NAME
+                                                           , pattern NV_COMPUTE_OCCUPANCY_PRIORITY_EXTENSION_NAME
+                                                           , pattern COMPUTE_OCCUPANCY_PRIORITY_LOW_NV
+                                                           , pattern COMPUTE_OCCUPANCY_PRIORITY_NORMAL_NV
+                                                           , pattern COMPUTE_OCCUPANCY_PRIORITY_HIGH_NV
+                                                           ) 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 Data.Coerce (coerce)
+import Control.Monad.Trans.Class (lift)
+import Control.Monad.Trans.Cont (evalContT)
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (FromCStruct(..))
+import Vulkan.CStruct (ToCStruct)
+import Vulkan.CStruct (ToCStruct(..))
+import Vulkan.Zero (Zero(..))
+import Control.Monad.IO.Class (MonadIO)
+import Data.String (IsString)
+import Data.Typeable (Typeable)
+import Foreign.C.Types (CFloat)
+import Foreign.C.Types (CFloat(..))
+import Foreign.C.Types (CFloat(CFloat))
+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.Kind (Type)
+import Control.Monad.Trans.Cont (ContT(..))
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.Core10.Handles (CommandBuffer)
+import Vulkan.Core10.Handles (CommandBuffer(..))
+import Vulkan.Core10.Handles (CommandBuffer(CommandBuffer))
+import Vulkan.Core10.Handles (CommandBuffer_T)
+import Vulkan.Dynamic (DeviceCmds(pVkCmdSetComputeOccupancyPriorityNV))
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COMPUTE_OCCUPANCY_PRIORITY_PARAMETERS_NV))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_OCCUPANCY_PRIORITY_FEATURES_NV))
+import Vulkan.Core10.APIConstants (pattern COMPUTE_OCCUPANCY_PRIORITY_HIGH_NV)
+import Vulkan.Core10.APIConstants (pattern COMPUTE_OCCUPANCY_PRIORITY_LOW_NV)
+import Vulkan.Core10.APIConstants (pattern COMPUTE_OCCUPANCY_PRIORITY_NORMAL_NV)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdSetComputeOccupancyPriorityNV
+  :: FunPtr (Ptr CommandBuffer_T -> Ptr ComputeOccupancyPriorityParametersNV -> IO ()) -> Ptr CommandBuffer_T -> Ptr ComputeOccupancyPriorityParametersNV -> IO ()
+
+-- | vkCmdSetComputeOccupancyPriorityNV - Set the compute occupancy priority
+-- for subsequent compute dispatches
+--
+-- = Description
+--
+-- The occupancy priority affects how compute workloads utilize GPU compute
+-- resources relative to other simultaneously executing workloads. The
+-- priority is stateful on a command buffer. All compute dispatch commands
+-- issued subsequent to a 'cmdSetComputeOccupancyPriorityNV' call will be
+-- executed with the specified priority parameters until another
+-- 'cmdSetComputeOccupancyPriorityNV' call is made.
+--
+-- All command buffers (primary and secondary) start with a priority level
+-- equal to the
+-- 'Vulkan.Core10.APIConstants.COMPUTE_OCCUPANCY_PRIORITY_NORMAL_NV' value.
+-- The priority state is not inherited by secondary command buffers - each
+-- command buffer maintains its own independent priority state.
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdSetComputeOccupancyPriorityNV-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdSetComputeOccupancyPriorityNV-pParameters-parameter#
+--     @pParameters@ /must/ be a valid pointer to a valid
+--     'ComputeOccupancyPriorityParametersNV' structure
+--
+-- -   #VUID-vkCmdSetComputeOccupancyPriorityNV-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-vkCmdSetComputeOccupancyPriorityNV-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT' operations
+--
+-- -   #VUID-vkCmdSetComputeOccupancyPriorityNV-videocoding# This command
+--     /must/ only be called outside of a video coding scope
+--
+-- == Host Synchronization
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | State                                                                                                                                  |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdSetComputeOccupancyPriorityNV is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_compute_occupancy_priority VK_NV_compute_occupancy_priority>,
+-- 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'ComputeOccupancyPriorityParametersNV'
+cmdSetComputeOccupancyPriorityNV :: forall io
+                                  . (MonadIO io)
+                                 => -- | @commandBuffer@ is the command buffer into which the command will be
+                                    -- recorded.
+                                    CommandBuffer
+                                 -> -- | @pParameters@ is a pointer to a 'ComputeOccupancyPriorityParametersNV'
+                                    -- structure specifying the occupancy priority parameters.
+                                    ComputeOccupancyPriorityParametersNV
+                                 -> io ()
+cmdSetComputeOccupancyPriorityNV commandBuffer
+                                   parameters = liftIO . evalContT $ do
+  let vkCmdSetComputeOccupancyPriorityNVPtr = pVkCmdSetComputeOccupancyPriorityNV (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdSetComputeOccupancyPriorityNVPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetComputeOccupancyPriorityNV is null" Nothing Nothing
+  let vkCmdSetComputeOccupancyPriorityNV' = mkVkCmdSetComputeOccupancyPriorityNV vkCmdSetComputeOccupancyPriorityNVPtr
+  pParameters <- ContT $ withCStruct (parameters)
+  lift $ traceAroundEvent "vkCmdSetComputeOccupancyPriorityNV" (vkCmdSetComputeOccupancyPriorityNV'
+                                                                  (commandBufferHandle (commandBuffer))
+                                                                  pParameters)
+  pure $ ()
+
+
+-- | VkComputeOccupancyPriorityParametersNV - Structure specifying compute
+-- occupancy priority parameters
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_compute_occupancy_priority VK_NV_compute_occupancy_priority>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'cmdSetComputeOccupancyPriorityNV'
+data ComputeOccupancyPriorityParametersNV = ComputeOccupancyPriorityParametersNV
+  { -- | @occupancyPriority@ is a value specifying the occupancy priority for
+    -- subsequent compute workloads, with a valid range of [0.0, 1.0]. A value
+    -- of 0.0 represents the lowest priority, while a value of 1.0 is the
+    -- maximum priority. Default priority is specified by a value of 0.5.
+    --
+    -- #VUID-VkComputeOccupancyPriorityParametersNV-occupancyPriority-12298#
+    -- @occupancyPriority@ /must/ be between @0@ and @1@, inclusive
+    occupancyPriority :: Float
+  , -- | @occupancyThrottling@ is a value specifying the level of occupancy
+    -- throttling applied to subsequent workloads, with a valid range of [0.0,
+    -- 1.0]. A value of 0.0 (the default) means no throttling is applied,
+    -- allowing workloads to use the full available compute capacity. Non-zero
+    -- values represent increasing levels of throttling, with higher values
+    -- resulting in more restrictive occupancy limits. A value of 1.0
+    -- represents the maximum level of throttling supported by the
+    -- implementation.
+    --
+    -- #VUID-VkComputeOccupancyPriorityParametersNV-occupancyThrottling-12299#
+    -- @occupancyThrottling@ /must/ be between @0@ and @1@, inclusive
+    occupancyThrottling :: Float
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (ComputeOccupancyPriorityParametersNV)
+#endif
+deriving instance Show ComputeOccupancyPriorityParametersNV
+
+instance ToCStruct ComputeOccupancyPriorityParametersNV where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p ComputeOccupancyPriorityParametersNV{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COMPUTE_OCCUPANCY_PRIORITY_PARAMETERS_NV)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr CFloat)) (CFloat (occupancyPriority))
+    poke ((p `plusPtr` 20 :: Ptr CFloat)) (CFloat (occupancyThrottling))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COMPUTE_OCCUPANCY_PRIORITY_PARAMETERS_NV)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr CFloat)) (CFloat (zero))
+    poke ((p `plusPtr` 20 :: Ptr CFloat)) (CFloat (zero))
+    f
+
+instance FromCStruct ComputeOccupancyPriorityParametersNV where
+  peekCStruct p = do
+    occupancyPriority <- peek @CFloat ((p `plusPtr` 16 :: Ptr CFloat))
+    occupancyThrottling <- peek @CFloat ((p `plusPtr` 20 :: Ptr CFloat))
+    pure $ ComputeOccupancyPriorityParametersNV
+             (coerce @CFloat @Float occupancyPriority)
+             (coerce @CFloat @Float occupancyThrottling)
+
+instance Storable ComputeOccupancyPriorityParametersNV where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero ComputeOccupancyPriorityParametersNV where
+  zero = ComputeOccupancyPriorityParametersNV
+           zero
+           zero
+
+
+-- | VkPhysicalDeviceComputeOccupancyPriorityFeaturesNV - Structure
+-- describing whether compute occupancy priority is supported by the
+-- implementation
+--
+-- = Members
+--
+-- This structure describes the following features:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceComputeOccupancyPriorityFeaturesNV' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceComputeOccupancyPriorityFeaturesNV', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_compute_occupancy_priority VK_NV_compute_occupancy_priority>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceComputeOccupancyPriorityFeaturesNV = PhysicalDeviceComputeOccupancyPriorityFeaturesNV
+  { -- | #features-computeOccupancyPriority# @computeOccupancyPriority@ is true
+    -- if compute occupancy priority is supported.
+    computeOccupancyPriority :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceComputeOccupancyPriorityFeaturesNV)
+#endif
+deriving instance Show PhysicalDeviceComputeOccupancyPriorityFeaturesNV
+
+instance ToCStruct PhysicalDeviceComputeOccupancyPriorityFeaturesNV where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceComputeOccupancyPriorityFeaturesNV{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_OCCUPANCY_PRIORITY_FEATURES_NV)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (computeOccupancyPriority))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_OCCUPANCY_PRIORITY_FEATURES_NV)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceComputeOccupancyPriorityFeaturesNV where
+  peekCStruct p = do
+    computeOccupancyPriority <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDeviceComputeOccupancyPriorityFeaturesNV
+             (bool32ToBool computeOccupancyPriority)
+
+instance Storable PhysicalDeviceComputeOccupancyPriorityFeaturesNV where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceComputeOccupancyPriorityFeaturesNV where
+  zero = PhysicalDeviceComputeOccupancyPriorityFeaturesNV
+           zero
+
+
+type NV_COMPUTE_OCCUPANCY_PRIORITY_SPEC_VERSION = 1
+
+-- No documentation found for TopLevel "VK_NV_COMPUTE_OCCUPANCY_PRIORITY_SPEC_VERSION"
+pattern NV_COMPUTE_OCCUPANCY_PRIORITY_SPEC_VERSION :: forall a . Integral a => a
+pattern NV_COMPUTE_OCCUPANCY_PRIORITY_SPEC_VERSION = 1
+
+
+type NV_COMPUTE_OCCUPANCY_PRIORITY_EXTENSION_NAME = "VK_NV_compute_occupancy_priority"
+
+-- No documentation found for TopLevel "VK_NV_COMPUTE_OCCUPANCY_PRIORITY_EXTENSION_NAME"
+pattern NV_COMPUTE_OCCUPANCY_PRIORITY_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern NV_COMPUTE_OCCUPANCY_PRIORITY_EXTENSION_NAME = "VK_NV_compute_occupancy_priority"
+
diff --git a/src/Vulkan/Extensions/VK_NV_compute_occupancy_priority.hs-boot b/src/Vulkan/Extensions/VK_NV_compute_occupancy_priority.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_NV_compute_occupancy_priority.hs-boot
@@ -0,0 +1,190 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_NV_compute_occupancy_priority - device extension
+--
+-- = VK_NV_compute_occupancy_priority
+--
+-- [__Name String__]
+--     @VK_NV_compute_occupancy_priority@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     646
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Not ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
+--
+-- [__Contact__]
+--
+--     -   Chris Lentini
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_NV_compute_occupancy_priority] @clentini%0A*Here describe the issue or question you have about the VK_NV_compute_occupancy_priority extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_NV_compute_occupancy_priority.adoc VK_NV_compute_occupancy_priority>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2025-12-01
+--
+-- [__Contributors__]
+--
+--     -   Chris Lentini, NVIDIA
+--
+--     -   Eric Werness, NVIDIA
+--
+--     -   Lionel Duc, NVIDIA
+--
+--     -   Peter Deayton, NVIDIA
+--
+-- == Description
+--
+-- This extension provides applications with control over how their compute
+-- workloads utilize GPU compute resources, specifically allowing
+-- prioritization relative to other simultaneously executing workloads.
+-- Applications can specify the priority with which compute workloads
+-- should occupy GPU compute resources, allowing for a fine-grained
+-- distinction between workloads that may want to execute at a background
+-- priority over a long period of time versus workloads with harder latency
+-- requirements.
+--
+-- The extension introduces a new command
+-- 'cmdSetComputeOccupancyPriorityNV' that allows applications to set the
+-- occupancy priority for subsequent compute dispatches. The occupancy
+-- priority affects how compute workloads utilize GPU compute resources
+-- relative to other simultaneously executing workloads.
+--
+-- The occupancy priority is stateful on a command buffer. All commands
+-- listed in the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#dispatch Dispatching Commands>
+-- chapter issued subsequent to a 'cmdSetComputeOccupancyPriorityNV' call
+-- will be executed with the specified priority parameters until another
+-- 'cmdSetComputeOccupancyPriorityNV' call is made.
+--
+-- For convenience, three named occupancy priority values are defined:
+--
+-- -   __VK_COMPUTE_OCCUPANCY_PRIORITY_LOW_NV__ - a constant value that can
+--     be used for
+--     'ComputeOccupancyPriorityParametersNV'::@occupancyPriority@ to
+--     specify a low priority level.
+--
+-- -   __VK_COMPUTE_OCCUPANCY_PRIORITY_NORMAL_NV__ - a constant value that
+--     can be used for
+--     'ComputeOccupancyPriorityParametersNV'::@occupancyPriority@ to
+--     specify a normal priority level. This represents the default
+--     priority level.
+--
+-- -   __VK_COMPUTE_OCCUPANCY_PRIORITY_HIGH_NV__ - a constant value that
+--     can be used for
+--     'ComputeOccupancyPriorityParametersNV'::@occupancyPriority@ to
+--     specify a high priority level.
+--
+-- All command buffers (primary and secondary) start with a priority level
+-- equal to the VK_COMPUTE_OCCUPANCY_PRIORITY_NORMAL_NV value. The priority
+-- state is not inherited by secondary command buffers - each command
+-- buffer maintains its own independent priority state.
+--
+-- == New Commands
+--
+-- -   'cmdSetComputeOccupancyPriorityNV'
+--
+-- == New Structures
+--
+-- -   'ComputeOccupancyPriorityParametersNV'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceComputeOccupancyPriorityFeaturesNV'
+--
+-- == New Enum Constants
+--
+-- -   'Vulkan.Core10.APIConstants.COMPUTE_OCCUPANCY_PRIORITY_HIGH_NV'
+--
+-- -   'Vulkan.Core10.APIConstants.COMPUTE_OCCUPANCY_PRIORITY_LOW_NV'
+--
+-- -   'Vulkan.Core10.APIConstants.COMPUTE_OCCUPANCY_PRIORITY_NORMAL_NV'
+--
+-- -   'NV_COMPUTE_OCCUPANCY_PRIORITY_EXTENSION_NAME'
+--
+-- -   'NV_COMPUTE_OCCUPANCY_PRIORITY_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COMPUTE_OCCUPANCY_PRIORITY_PARAMETERS_NV'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_OCCUPANCY_PRIORITY_FEATURES_NV'
+--
+-- The extension only allows specification of occupancy priority for
+-- compute workloads, however, the priorities will also impact the
+-- prioritization of compute workloads relative to simultaneously executing
+-- graphics workloads. In such a scenario, the graphics workload may be
+-- thought of as executing at VK_COMPUTE_OCCUPANCY_PRIORITY_NORMAL_NV
+-- priority, and so a simultaneously executing compute workload with
+-- VK_COMPUTE_OCCUPANCY_PRIORITY_HIGH_NV occupancy priority will
+-- preferentially utilize available compute resources.
+--
+-- Workloads specified with a higher priority may begin execution after
+-- workloads specified with a lower priority, at which point they may find
+-- GPU compute resources already occupied. So, while they will from that
+-- point forward preferentially occupy available compute resources, they
+-- may not ramp up to full occupancy until the already present lower
+-- priority work has reached a point where it can relinquish compute
+-- resources.
+--
+-- == Issues
+--
+-- None.
+--
+-- == Version History
+--
+-- -   Revision 1, 2025-08-06 (Chris Lentini)
+--
+--     -   Initial revision
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_NV_compute_occupancy_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_NV_compute_occupancy_priority  ( ComputeOccupancyPriorityParametersNV
+                                                           , PhysicalDeviceComputeOccupancyPriorityFeaturesNV
+                                                           ) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data ComputeOccupancyPriorityParametersNV
+
+instance ToCStruct ComputeOccupancyPriorityParametersNV
+instance Show ComputeOccupancyPriorityParametersNV
+
+instance FromCStruct ComputeOccupancyPriorityParametersNV
+
+
+data PhysicalDeviceComputeOccupancyPriorityFeaturesNV
+
+instance ToCStruct PhysicalDeviceComputeOccupancyPriorityFeaturesNV
+instance Show PhysicalDeviceComputeOccupancyPriorityFeaturesNV
+
+instance FromCStruct PhysicalDeviceComputeOccupancyPriorityFeaturesNV
+
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
@@ -93,9 +93,9 @@
 --
 -- == New SPIR-V Capability
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-ComputeDerivativeGroupQuadsKHR ComputeDerivativeGroupQuadsNV>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-ComputeDerivativeGroupQuadsKHR ComputeDerivativeGroupQuadsNV>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-ComputeDerivativeGroupLinearKHR ComputeDerivativeGroupLinearNV>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-ComputeDerivativeGroupLinearKHR ComputeDerivativeGroupLinearNV>
 --
 -- == Issues
 --
@@ -122,7 +122,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_compute_shader_derivatives Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -101,7 +101,7 @@
 -- -   'NV_COOPERATIVE_MATRIX_SPEC_VERSION'
 --
 -- -   Extending
---     'Vulkan.Extensions.VK_KHR_cooperative_matrix.ComponentTypeKHR':
+--     'Vulkan.Extensions.VK_NV_cooperative_vector.ComponentTypeKHR':
 --
 --     -   'COMPONENT_TYPE_FLOAT16_NV'
 --
@@ -145,7 +145,7 @@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-CooperativeMatrixNV CooperativeMatrixNV>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-CooperativeMatrixNV CooperativeMatrixNV>
 --
 -- == Issues
 --
@@ -178,7 +178,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_cooperative_matrix Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -252,7 +252,7 @@
 import Vulkan.Core10.FundamentalTypes (boolToBool32)
 import Vulkan.NamedType ((:::))
 import Vulkan.Core10.FundamentalTypes (Bool32)
-import Vulkan.Extensions.VK_KHR_cooperative_matrix (ComponentTypeKHR)
+import Vulkan.Extensions.VK_NV_cooperative_vector (ComponentTypeKHR)
 import Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceCooperativeMatrixPropertiesNV))
 import Vulkan.Core10.Handles (PhysicalDevice)
 import Vulkan.Core10.Handles (PhysicalDevice(..))
@@ -264,17 +264,17 @@
 import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)
 import Vulkan.Core10.Enums.StructureType (StructureType)
 import Vulkan.Exception (VulkanException(..))
-import Vulkan.Extensions.VK_KHR_cooperative_matrix (ComponentTypeKHR(COMPONENT_TYPE_FLOAT16_KHR))
-import Vulkan.Extensions.VK_KHR_cooperative_matrix (ComponentTypeKHR(COMPONENT_TYPE_FLOAT32_KHR))
-import Vulkan.Extensions.VK_KHR_cooperative_matrix (ComponentTypeKHR(COMPONENT_TYPE_FLOAT64_KHR))
-import Vulkan.Extensions.VK_KHR_cooperative_matrix (ComponentTypeKHR(COMPONENT_TYPE_SINT16_KHR))
-import Vulkan.Extensions.VK_KHR_cooperative_matrix (ComponentTypeKHR(COMPONENT_TYPE_SINT32_KHR))
-import Vulkan.Extensions.VK_KHR_cooperative_matrix (ComponentTypeKHR(COMPONENT_TYPE_SINT64_KHR))
-import Vulkan.Extensions.VK_KHR_cooperative_matrix (ComponentTypeKHR(COMPONENT_TYPE_SINT8_KHR))
-import Vulkan.Extensions.VK_KHR_cooperative_matrix (ComponentTypeKHR(COMPONENT_TYPE_UINT16_KHR))
-import Vulkan.Extensions.VK_KHR_cooperative_matrix (ComponentTypeKHR(COMPONENT_TYPE_UINT32_KHR))
-import Vulkan.Extensions.VK_KHR_cooperative_matrix (ComponentTypeKHR(COMPONENT_TYPE_UINT64_KHR))
-import Vulkan.Extensions.VK_KHR_cooperative_matrix (ComponentTypeKHR(COMPONENT_TYPE_UINT8_KHR))
+import Vulkan.Extensions.VK_NV_cooperative_vector (ComponentTypeKHR(COMPONENT_TYPE_FLOAT16_KHR))
+import Vulkan.Extensions.VK_NV_cooperative_vector (ComponentTypeKHR(COMPONENT_TYPE_FLOAT32_KHR))
+import Vulkan.Extensions.VK_NV_cooperative_vector (ComponentTypeKHR(COMPONENT_TYPE_FLOAT64_KHR))
+import Vulkan.Extensions.VK_NV_cooperative_vector (ComponentTypeKHR(COMPONENT_TYPE_SINT16_KHR))
+import Vulkan.Extensions.VK_NV_cooperative_vector (ComponentTypeKHR(COMPONENT_TYPE_SINT32_KHR))
+import Vulkan.Extensions.VK_NV_cooperative_vector (ComponentTypeKHR(COMPONENT_TYPE_SINT64_KHR))
+import Vulkan.Extensions.VK_NV_cooperative_vector (ComponentTypeKHR(COMPONENT_TYPE_SINT8_KHR))
+import Vulkan.Extensions.VK_NV_cooperative_vector (ComponentTypeKHR(COMPONENT_TYPE_UINT16_KHR))
+import Vulkan.Extensions.VK_NV_cooperative_vector (ComponentTypeKHR(COMPONENT_TYPE_UINT32_KHR))
+import Vulkan.Extensions.VK_NV_cooperative_vector (ComponentTypeKHR(COMPONENT_TYPE_UINT64_KHR))
+import Vulkan.Extensions.VK_NV_cooperative_vector (ComponentTypeKHR(COMPONENT_TYPE_UINT8_KHR))
 import Vulkan.Extensions.VK_KHR_cooperative_matrix (ScopeKHR(SCOPE_DEVICE_KHR))
 import Vulkan.Extensions.VK_KHR_cooperative_matrix (ScopeKHR(SCOPE_QUEUE_FAMILY_KHR))
 import Vulkan.Extensions.VK_KHR_cooperative_matrix (ScopeKHR(SCOPE_SUBGROUP_KHR))
@@ -283,7 +283,7 @@
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV))
 import Vulkan.Core10.Enums.Result (Result(SUCCESS))
-import Vulkan.Extensions.VK_KHR_cooperative_matrix (ComponentTypeKHR(..))
+import Vulkan.Extensions.VK_NV_cooperative_vector (ComponentTypeKHR(..))
 import Vulkan.Extensions.VK_KHR_cooperative_matrix (ScopeKHR(..))
 foreign import ccall
 #if !defined(SAFE_FOREIGN_CALLS)
@@ -328,16 +328,20 @@
 --
 -- [<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'
 --
+--     -   '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_DEVICE_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_cooperative_matrix VK_NV_cooperative_matrix>,
@@ -447,12 +451,22 @@
 -- structure passed to
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
 -- it is filled in to indicate whether each corresponding feature is
--- supported. 'PhysicalDeviceCooperativeMatrixFeaturesNV' /can/ also be
--- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceCooperativeMatrixFeaturesNV', it /must/ add an instance
+-- of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_cooperative_matrix VK_NV_cooperative_matrix>,
@@ -464,8 +478,10 @@
     cooperativeMatrix :: Bool
   , -- | #features-cooperativeMatrixRobustBufferAccessNV#
     -- @cooperativeMatrixRobustBufferAccess@ indicates that the implementation
-    -- supports robust buffer access for SPIR-V @OpCooperativeMatrixLoadNV@ and
-    -- @OpCooperativeMatrixStoreNV@ instructions.
+    -- supports implementation supports
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-robust-buffer-access robust buffer access>
+    -- for SPIR-V @OpCooperativeMatrixLoadNV@ and @OpCooperativeMatrixStoreNV@
+    -- instructions.
     cooperativeMatrixRobustBufferAccess :: Bool
   }
   deriving (Typeable, Eq)
@@ -524,8 +540,12 @@
 -- it is filled in with each corresponding implementation-dependent
 -- property.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_cooperative_matrix VK_NV_cooperative_matrix>,
@@ -596,7 +616,8 @@
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_cooperative_matrix VK_NV_cooperative_matrix>,
--- 'ComponentTypeNV', 'ScopeNV',
+-- 'Vulkan.Extensions.VK_NV_cooperative_vector.ComponentTypeKHR',
+-- 'Vulkan.Extensions.VK_KHR_cooperative_matrix.ScopeKHR',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType',
 -- 'getPhysicalDeviceCooperativeMatrixPropertiesNV'
 data CooperativeMatrixPropertiesNV = CooperativeMatrixPropertiesNV
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
@@ -101,7 +101,7 @@
 -- -   'NV_COOPERATIVE_MATRIX_SPEC_VERSION'
 --
 -- -   Extending
---     'Vulkan.Extensions.VK_KHR_cooperative_matrix.ComponentTypeKHR':
+--     'Vulkan.Extensions.VK_NV_cooperative_vector.ComponentTypeKHR':
 --
 --     -   'COMPONENT_TYPE_FLOAT16_NV'
 --
@@ -145,7 +145,7 @@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-CooperativeMatrixNV CooperativeMatrixNV>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-CooperativeMatrixNV CooperativeMatrixNV>
 --
 -- == Issues
 --
@@ -178,7 +178,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_cooperative_matrix Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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_matrix2.hs b/src/Vulkan/Extensions/VK_NV_cooperative_matrix2.hs
--- a/src/Vulkan/Extensions/VK_NV_cooperative_matrix2.hs
+++ b/src/Vulkan/Extensions/VK_NV_cooperative_matrix2.hs
@@ -111,17 +111,17 @@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-TensorAddressingNV TensorAddressingNV>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-TensorAddressingNV TensorAddressingNV>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-CooperativeMatrixReductionsNV CooperativeMatrixReductionsNV>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-CooperativeMatrixReductionsNV CooperativeMatrixReductionsNV>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-CooperativeMatrixConversionsNV CooperativeMatrixConversionsNV>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-CooperativeMatrixConversionsNV CooperativeMatrixConversionsNV>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-CooperativeMatrixPerElementOperationsNV CooperativeMatrixPerElementOperationsNV>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-CooperativeMatrixPerElementOperationsNV CooperativeMatrixPerElementOperationsNV>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-CooperativeMatrixTensorAddressingNV CooperativeMatrixTensorAddressingNV>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-CooperativeMatrixTensorAddressingNV CooperativeMatrixTensorAddressingNV>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-CooperativeMatrixBlockLoadsNV CooperativeMatrixBlockLoadsNV>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-CooperativeMatrixBlockLoadsNV CooperativeMatrixBlockLoadsNV>
 --
 -- == Version History
 --
@@ -136,7 +136,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_cooperative_matrix2 Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_NV_cooperative_matrix2 Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -193,7 +193,7 @@
 import Vulkan.Core10.FundamentalTypes (boolToBool32)
 import Vulkan.NamedType ((:::))
 import Vulkan.Core10.FundamentalTypes (Bool32)
-import Vulkan.Extensions.VK_KHR_cooperative_matrix (ComponentTypeKHR)
+import Vulkan.Extensions.VK_NV_cooperative_vector (ComponentTypeKHR)
 import Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV))
 import Vulkan.Core10.Handles (PhysicalDevice)
 import Vulkan.Core10.Handles (PhysicalDevice(..))
@@ -208,7 +208,7 @@
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_FEATURES_NV))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_PROPERTIES_NV))
 import Vulkan.Core10.Enums.Result (Result(SUCCESS))
-import Vulkan.Extensions.VK_KHR_cooperative_matrix (ComponentTypeKHR(..))
+import Vulkan.Extensions.VK_NV_cooperative_vector (ComponentTypeKHR(..))
 import Vulkan.Extensions.VK_KHR_cooperative_matrix (ScopeKHR(..))
 foreign import ccall
 #if !defined(SAFE_FOREIGN_CALLS)
@@ -235,7 +235,7 @@
 -- that not all the available flexible dimensions properties were returned.
 --
 -- If the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-cooperativeMatrixFlexibleDimensions cooperativeMatrixFlexibleDimensions>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-cooperativeMatrixFlexibleDimensions cooperativeMatrixFlexibleDimensions>
 -- feature is not supported, the implementation /must/ advertise zero
 -- properties.
 --
@@ -258,16 +258,20 @@
 --
 -- [<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'
 --
+--     -   '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_DEVICE_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_cooperative_matrix2 VK_NV_cooperative_matrix2>,
@@ -318,12 +322,22 @@
 -- 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. 'PhysicalDeviceCooperativeMatrix2FeaturesNV' /can/ also be
--- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceCooperativeMatrix2FeaturesNV', it /must/ add an instance
+-- of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_cooperative_matrix2 VK_NV_cooperative_matrix2>,
@@ -449,8 +463,12 @@
 -- it is filled in with each corresponding implementation-dependent
 -- property.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_cooperative_matrix2 VK_NV_cooperative_matrix2>,
@@ -464,7 +482,7 @@
   , -- | #limits-cooperativeMatrixFlexibleDimensionsMaxDimension#
     -- @cooperativeMatrixFlexibleDimensionsMaxDimension@ is the maximum
     -- supported dimension for cooperative matrix types when the
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-cooperativeMatrixFlexibleDimensions cooperativeMatrixFlexibleDimensions>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-cooperativeMatrixFlexibleDimensions cooperativeMatrixFlexibleDimensions>
     -- feature is enabled.
     cooperativeMatrixFlexibleDimensionsMaxDimension :: Word32
   , -- | #limits-cooperativeMatrixWorkgroupScopeReservedSharedMemory#
@@ -552,7 +570,7 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_cooperative_matrix2 VK_NV_cooperative_matrix2>,
 -- 'Vulkan.Core10.FundamentalTypes.Bool32',
--- 'Vulkan.Extensions.VK_KHR_cooperative_matrix.ComponentTypeKHR',
+-- 'Vulkan.Extensions.VK_NV_cooperative_vector.ComponentTypeKHR',
 -- 'Vulkan.Extensions.VK_KHR_cooperative_matrix.ScopeKHR',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType',
 -- 'getPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV'
@@ -570,17 +588,17 @@
     -- value.
     kGranularity :: Word32
   , -- | @AType@ is the component type of matrix @A@, of type
-    -- 'Vulkan.Extensions.VK_KHR_cooperative_matrix.ComponentTypeKHR'.
+    -- 'Vulkan.Extensions.VK_NV_cooperative_vector.ComponentTypeKHR'.
     aType :: ComponentTypeKHR
   , -- | @BType@ is the component type of matrix @B@, of type
-    -- 'Vulkan.Extensions.VK_KHR_cooperative_matrix.ComponentTypeKHR'.
+    -- 'Vulkan.Extensions.VK_NV_cooperative_vector.ComponentTypeKHR'.
     bType :: ComponentTypeKHR
   , -- | @CType@ is the component type of matrix @C@, of type
-    -- 'Vulkan.Extensions.VK_KHR_cooperative_matrix.ComponentTypeKHR'.
+    -- 'Vulkan.Extensions.VK_NV_cooperative_vector.ComponentTypeKHR'.
     cType :: ComponentTypeKHR
   , -- | @ResultType@ is the component type of matrix
     -- 'Vulkan.Core10.Enums.Result.Result', of type
-    -- 'Vulkan.Extensions.VK_KHR_cooperative_matrix.ComponentTypeKHR'.
+    -- 'Vulkan.Extensions.VK_NV_cooperative_vector.ComponentTypeKHR'.
     resultType :: ComponentTypeKHR
   , -- | @saturatingAccumulation@ indicates whether the @SaturatingAccumulation@
     -- operand to @OpCooperativeMatrixMulAddKHR@ /must/ be present or not. If
diff --git a/src/Vulkan/Extensions/VK_NV_cooperative_matrix2.hs-boot b/src/Vulkan/Extensions/VK_NV_cooperative_matrix2.hs-boot
--- a/src/Vulkan/Extensions/VK_NV_cooperative_matrix2.hs-boot
+++ b/src/Vulkan/Extensions/VK_NV_cooperative_matrix2.hs-boot
@@ -111,17 +111,17 @@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-TensorAddressingNV TensorAddressingNV>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-TensorAddressingNV TensorAddressingNV>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-CooperativeMatrixReductionsNV CooperativeMatrixReductionsNV>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-CooperativeMatrixReductionsNV CooperativeMatrixReductionsNV>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-CooperativeMatrixConversionsNV CooperativeMatrixConversionsNV>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-CooperativeMatrixConversionsNV CooperativeMatrixConversionsNV>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-CooperativeMatrixPerElementOperationsNV CooperativeMatrixPerElementOperationsNV>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-CooperativeMatrixPerElementOperationsNV CooperativeMatrixPerElementOperationsNV>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-CooperativeMatrixTensorAddressingNV CooperativeMatrixTensorAddressingNV>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-CooperativeMatrixTensorAddressingNV CooperativeMatrixTensorAddressingNV>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-CooperativeMatrixBlockLoadsNV CooperativeMatrixBlockLoadsNV>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-CooperativeMatrixBlockLoadsNV CooperativeMatrixBlockLoadsNV>
 --
 -- == Version History
 --
@@ -136,7 +136,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_cooperative_matrix2 Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_NV_cooperative_matrix2 Vulkan Specification>.
 --
 -- This 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_vector.hs b/src/Vulkan/Extensions/VK_NV_cooperative_vector.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_NV_cooperative_vector.hs
@@ -0,0 +1,1468 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_NV_cooperative_vector - device extension
+--
+-- = VK_NV_cooperative_vector
+--
+-- [__Name String__]
+--     @VK_NV_cooperative_vector@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     492
+--
+-- [__Revision__]
+--     4
+--
+-- [__Ratification Status__]
+--     Not ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
+--
+-- [__SPIR-V Dependencies__]
+--
+--     -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/NV/SPV_NV_cooperative_vector.html SPV_NV_cooperative_vector>
+--
+-- [__Contact__]
+--
+--     -   Jeff Bolz
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_NV_cooperative_vector] @jeffbolznv%0A*Here describe the issue or question you have about the VK_NV_cooperative_vector extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_NV_cooperative_vector.adoc VK_NV_cooperative_vector>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2024-05-23
+--
+-- [__Interactions and External Dependencies__]
+--
+--     -   This extension requires
+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/NV/SPV_NV_cooperative_vector.html SPV_NV_cooperative_vector>
+--
+--     -   This extension provides API support for
+--         <https://github.com/KhronosGroup/GLSL/blob/main/extensions/nv/GLSL_NV_cooperative_vector.txt GL_NV_cooperative_vector>
+--
+-- [__Contributors__]
+--
+--     -   Jeff Bolz, NVIDIA
+--
+-- == Description
+--
+-- This extension adds support for using cooperative vector types in
+-- SPIR-V. Unlike cooperative matrix types, a variable with a cooperative
+-- vector type is logically stored in the invocation it belongs to, but
+-- they can cooperate behind the scenes when performing matrix-vector
+-- multiplies. Cooperative vectors do not require a fully occupied subgroup
+-- or uniform control flow like cooperative matrices, although these do
+-- increase the likelihood of being on the fast path. And unlike normal
+-- vector types, they have arbitrary length and support a relatively
+-- limited set of operations. These types are intended to help accelerate
+-- the evaluation of small neural networks, where each invocation is
+-- performing its own independent evaluation of the network.
+--
+-- Cooperative vector types are defined by the
+-- <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/NV/SPV_NV_cooperative_vector.html SPV_NV_cooperative_vector>
+-- SPIR-V extension and can be used with the
+-- <https://github.com/KhronosGroup/GLSL/blob/main/extensions/nv/GLSL_NV_cooperative_vector.txt GL_NV_cooperative_vector>
+-- GLSL extension.
+--
+-- This extension includes support for enumerating the combinations of
+-- types that are supported by the implementation, and for converting
+-- matrix data to and from an optimized opaque layout.
+--
+-- == New Commands
+--
+-- -   'cmdConvertCooperativeVectorMatrixNV'
+--
+-- -   'convertCooperativeVectorMatrixNV'
+--
+-- -   'getPhysicalDeviceCooperativeVectorPropertiesNV'
+--
+-- == New Structures
+--
+-- -   'ConvertCooperativeVectorMatrixInfoNV'
+--
+-- -   'CooperativeVectorPropertiesNV'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceCooperativeVectorFeaturesNV'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDeviceCooperativeVectorPropertiesNV'
+--
+-- == New Unions
+--
+-- -   'Vulkan.Extensions.VK_KHR_acceleration_structure.DeviceOrHostAddressConstKHR'
+--
+-- -   'Vulkan.Extensions.VK_KHR_acceleration_structure.DeviceOrHostAddressKHR'
+--
+-- == New Enums
+--
+-- -   'ComponentTypeKHR'
+--
+-- -   'CooperativeVectorMatrixLayoutNV'
+--
+-- == New Enum Constants
+--
+-- -   'NV_COOPERATIVE_VECTOR_EXTENSION_NAME'
+--
+-- -   'NV_COOPERATIVE_VECTOR_SPEC_VERSION'
+--
+-- -   Extending 'ComponentTypeKHR':
+--
+--     -   'COMPONENT_TYPE_FLOAT_E4M3_NV'
+--
+--     -   'COMPONENT_TYPE_FLOAT_E5M2_NV'
+--
+--     -   'COMPONENT_TYPE_SINT8_PACKED_NV'
+--
+--     -   'COMPONENT_TYPE_UINT8_PACKED_NV'
+--
+-- -   Extending
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlagBits2':
+--
+--     -   'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CONVERT_COOPERATIVE_VECTOR_MATRIX_BIT_NV'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_CONVERT_COOPERATIVE_VECTOR_MATRIX_INFO_NV'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COOPERATIVE_VECTOR_PROPERTIES_NV'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_VECTOR_FEATURES_NV'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_VECTOR_PROPERTIES_NV'
+--
+-- == New SPIR-V Capabilities
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-CooperativeVectorNV CooperativeVectorNV>
+--
+-- == Version History
+--
+-- -   Revision 4, 2024-05-23 (Jeff Bolz)
+--
+--     -   Add maxCooperativeVectorComponents
+--
+-- -   Revision 3, 2024-05-23 (Jeff Bolz)
+--
+--     -   Add training functions
+--
+-- -   Revision 2, 2024-02-10 (Jeff Bolz)
+--
+--     -   Add device-side matrix conversion
+--
+-- -   Revision 1, 2023-12-13 (Jeff Bolz)
+--
+--     -   Initial revisions
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_NV_cooperative_vector Vulkan Specification>.
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_NV_cooperative_vector  ( getPhysicalDeviceCooperativeVectorPropertiesNV
+                                                   , convertCooperativeVectorMatrixNV
+                                                   , cmdConvertCooperativeVectorMatrixNV
+                                                   , pattern COMPONENT_TYPE_FLOAT_E4M3_NV
+                                                   , pattern COMPONENT_TYPE_FLOAT_E5M2_NV
+                                                   , PhysicalDeviceCooperativeVectorFeaturesNV(..)
+                                                   , CooperativeVectorPropertiesNV(..)
+                                                   , PhysicalDeviceCooperativeVectorPropertiesNV(..)
+                                                   , ConvertCooperativeVectorMatrixInfoNV(..)
+                                                   , ComponentTypeKHR( COMPONENT_TYPE_FLOAT16_KHR
+                                                                     , COMPONENT_TYPE_FLOAT32_KHR
+                                                                     , COMPONENT_TYPE_FLOAT64_KHR
+                                                                     , COMPONENT_TYPE_SINT8_KHR
+                                                                     , COMPONENT_TYPE_SINT16_KHR
+                                                                     , COMPONENT_TYPE_SINT32_KHR
+                                                                     , COMPONENT_TYPE_SINT64_KHR
+                                                                     , COMPONENT_TYPE_UINT8_KHR
+                                                                     , COMPONENT_TYPE_UINT16_KHR
+                                                                     , COMPONENT_TYPE_UINT32_KHR
+                                                                     , COMPONENT_TYPE_UINT64_KHR
+                                                                     , COMPONENT_TYPE_FLOAT8_E5M2_EXT
+                                                                     , COMPONENT_TYPE_FLOAT8_E4M3_EXT
+                                                                     , COMPONENT_TYPE_UINT8_PACKED_NV
+                                                                     , COMPONENT_TYPE_SINT8_PACKED_NV
+                                                                     , COMPONENT_TYPE_BFLOAT16_KHR
+                                                                     , ..
+                                                                     )
+                                                   , CooperativeVectorMatrixLayoutNV( COOPERATIVE_VECTOR_MATRIX_LAYOUT_ROW_MAJOR_NV
+                                                                                    , COOPERATIVE_VECTOR_MATRIX_LAYOUT_COLUMN_MAJOR_NV
+                                                                                    , COOPERATIVE_VECTOR_MATRIX_LAYOUT_INFERENCING_OPTIMAL_NV
+                                                                                    , COOPERATIVE_VECTOR_MATRIX_LAYOUT_TRAINING_OPTIMAL_NV
+                                                                                    , ..
+                                                                                    )
+                                                   , NV_COOPERATIVE_VECTOR_SPEC_VERSION
+                                                   , pattern NV_COOPERATIVE_VECTOR_SPEC_VERSION
+                                                   , NV_COOPERATIVE_VECTOR_EXTENSION_NAME
+                                                   , pattern NV_COOPERATIVE_VECTOR_EXTENSION_NAME
+                                                   , DeviceOrHostAddressKHR(..)
+                                                   , DeviceOrHostAddressConstKHR(..)
+                                                   ) 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 (showsPrec)
+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.String (IsString)
+import Data.Typeable (Typeable)
+import Foreign.C.Types (CSize)
+import Foreign.C.Types (CSize(CSize))
+import Foreign.Storable (Storable)
+import Foreign.Storable (Storable(peek))
+import Foreign.Storable (Storable(poke))
+import qualified Foreign.Storable (Storable(..))
+import GHC.Generics (Generic)
+import GHC.IO.Exception (IOErrorType(..))
+import GHC.IO.Exception (IOException(..))
+import Data.Int (Int32)
+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.NamedType ((:::))
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.Core10.Handles (CommandBuffer)
+import Vulkan.Core10.Handles (CommandBuffer(..))
+import Vulkan.Core10.Handles (CommandBuffer(CommandBuffer))
+import Vulkan.Core10.Handles (CommandBuffer_T)
+import Vulkan.Core10.Handles (Device)
+import Vulkan.Core10.Handles (Device(..))
+import Vulkan.Core10.Handles (Device(Device))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdConvertCooperativeVectorMatrixNV))
+import Vulkan.Dynamic (DeviceCmds(pVkConvertCooperativeVectorMatrixNV))
+import Vulkan.Extensions.VK_KHR_acceleration_structure (DeviceOrHostAddressConstKHR)
+import Vulkan.Extensions.VK_KHR_acceleration_structure (DeviceOrHostAddressKHR)
+import Vulkan.Core10.Handles (Device_T)
+import Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceCooperativeVectorPropertiesNV))
+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.ShaderStageFlagBits (ShaderStageFlags)
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Exception (VulkanException(..))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_CONVERT_COOPERATIVE_VECTOR_MATRIX_INFO_NV))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COOPERATIVE_VECTOR_PROPERTIES_NV))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_VECTOR_FEATURES_NV))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_VECTOR_PROPERTIES_NV))
+import Vulkan.Core10.Enums.Result (Result(SUCCESS))
+import Vulkan.Extensions.VK_KHR_acceleration_structure (DeviceOrHostAddressConstKHR(..))
+import Vulkan.Extensions.VK_KHR_acceleration_structure (DeviceOrHostAddressKHR(..))
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetPhysicalDeviceCooperativeVectorPropertiesNV
+  :: FunPtr (Ptr PhysicalDevice_T -> Ptr Word32 -> Ptr CooperativeVectorPropertiesNV -> IO Result) -> Ptr PhysicalDevice_T -> Ptr Word32 -> Ptr CooperativeVectorPropertiesNV -> IO Result
+
+-- | vkGetPhysicalDeviceCooperativeVectorPropertiesNV - Returns properties
+-- describing what cooperative vector types are supported
+--
+-- = Description
+--
+-- If @pProperties@ is @NULL@, then the number of cooperative vector
+-- properties available is returned in @pPropertyCount@. Otherwise,
+-- @pPropertyCount@ /must/ point to a variable set by the user to the
+-- number of elements in the @pProperties@ array, and on return the
+-- variable is overwritten with the number of structures actually written
+-- to @pProperties@. If @pPropertyCount@ is less than the number of
+-- cooperative vector properties available, at most @pPropertyCount@
+-- structures will be written, and 'Vulkan.Core10.Enums.Result.INCOMPLETE'
+-- will be returned instead of 'Vulkan.Core10.Enums.Result.SUCCESS', to
+-- indicate that not all the available cooperative vector properties were
+-- returned.
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkGetPhysicalDeviceCooperativeVectorPropertiesNV-physicalDevice-parameter#
+--     @physicalDevice@ /must/ be a valid
+--     'Vulkan.Core10.Handles.PhysicalDevice' handle
+--
+-- -   #VUID-vkGetPhysicalDeviceCooperativeVectorPropertiesNV-pPropertyCount-parameter#
+--     @pPropertyCount@ /must/ be a valid pointer to a @uint32_t@ value
+--
+-- -   #VUID-vkGetPhysicalDeviceCooperativeVectorPropertiesNV-pProperties-parameter#
+--     If the value referenced by @pPropertyCount@ is not @0@, and
+--     @pProperties@ is not @NULL@, @pProperties@ /must/ be a valid pointer
+--     to an array of @pPropertyCount@ 'CooperativeVectorPropertiesNV'
+--     structures
+--
+-- == Return Codes
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
+--
+--     -   'Vulkan.Core10.Enums.Result.INCOMPLETE'
+--
+--     -   '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_DEVICE_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_cooperative_vector VK_NV_cooperative_vector>,
+-- 'CooperativeVectorPropertiesNV', 'Vulkan.Core10.Handles.PhysicalDevice'
+getPhysicalDeviceCooperativeVectorPropertiesNV :: forall io
+                                                . (MonadIO io)
+                                               => -- | @physicalDevice@ is the physical device.
+                                                  PhysicalDevice
+                                               -> io (Result, ("properties" ::: Vector CooperativeVectorPropertiesNV))
+getPhysicalDeviceCooperativeVectorPropertiesNV physicalDevice = liftIO . evalContT $ do
+  let vkGetPhysicalDeviceCooperativeVectorPropertiesNVPtr = pVkGetPhysicalDeviceCooperativeVectorPropertiesNV (case physicalDevice of PhysicalDevice{instanceCmds} -> instanceCmds)
+  lift $ unless (vkGetPhysicalDeviceCooperativeVectorPropertiesNVPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetPhysicalDeviceCooperativeVectorPropertiesNV is null" Nothing Nothing
+  let vkGetPhysicalDeviceCooperativeVectorPropertiesNV' = mkVkGetPhysicalDeviceCooperativeVectorPropertiesNV vkGetPhysicalDeviceCooperativeVectorPropertiesNVPtr
+  let physicalDevice' = physicalDeviceHandle (physicalDevice)
+  pPPropertyCount <- ContT $ bracket (callocBytes @Word32 4) free
+  r <- lift $ traceAroundEvent "vkGetPhysicalDeviceCooperativeVectorPropertiesNV" (vkGetPhysicalDeviceCooperativeVectorPropertiesNV'
+                                                                                     physicalDevice'
+                                                                                     (pPPropertyCount)
+                                                                                     (nullPtr))
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+  pPropertyCount <- lift $ peek @Word32 pPPropertyCount
+  pPProperties <- ContT $ bracket (callocBytes @CooperativeVectorPropertiesNV ((fromIntegral (pPropertyCount)) * 40)) free
+  _ <- traverse (\i -> ContT $ pokeZeroCStruct (pPProperties `advancePtrBytes` (i * 40) :: Ptr CooperativeVectorPropertiesNV) . ($ ())) [0..(fromIntegral (pPropertyCount)) - 1]
+  r' <- lift $ traceAroundEvent "vkGetPhysicalDeviceCooperativeVectorPropertiesNV" (vkGetPhysicalDeviceCooperativeVectorPropertiesNV'
+                                                                                      physicalDevice'
+                                                                                      (pPPropertyCount)
+                                                                                      ((pPProperties)))
+  lift $ when (r' < SUCCESS) (throwIO (VulkanException r'))
+  pPropertyCount' <- lift $ peek @Word32 pPPropertyCount
+  pProperties' <- lift $ generateM (fromIntegral (pPropertyCount')) (\i -> peekCStruct @CooperativeVectorPropertiesNV (((pPProperties) `advancePtrBytes` (40 * (i)) :: Ptr CooperativeVectorPropertiesNV)))
+  pure $ ((r'), pProperties')
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkConvertCooperativeVectorMatrixNV
+  :: FunPtr (Ptr Device_T -> Ptr ConvertCooperativeVectorMatrixInfoNV -> IO Result) -> Ptr Device_T -> Ptr ConvertCooperativeVectorMatrixInfoNV -> IO Result
+
+-- | vkConvertCooperativeVectorMatrixNV - Convert a cooperative vector matrix
+-- from one layout and type to another
+--
+-- = Description
+--
+-- If @pInfo->dstData@ is @NULL@, then the number of bytes required to
+-- store the converted matrix is returned in @pDstSize@. Otherwise,
+-- @pInfo->pDstSize@ /must/ point to a variable set by the user to the
+-- number of bytes in @pInfo->dstData@, and on return the variable is
+-- overwritten with the number of bytes actually written to
+-- @pInfo->dstData@. @pInfo->srcData@ /can/ be @NULL@ when @pInfo->dstData@
+-- is @NULL@. If @pInfo->pDstSize@ is less than the number of bytes
+-- required to store the converted matrix, no bytes will be written, and
+-- 'Vulkan.Core10.Enums.Result.INCOMPLETE' will be returned instead of
+-- 'Vulkan.Core10.Enums.Result.SUCCESS', to indicate that not enough space
+-- was provided.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkConvertCooperativeVectorMatrixNV-pInfo-10073# If
+--     @pInfo->srcData.hostAddress@ is @NULL@, then
+--     @pInfo->dstData.hostAddress@ /must/ be @NULL@
+--
+-- -   #VUID-vkConvertCooperativeVectorMatrixNV-pInfo-10074# If
+--     @pInfo->srcData.hostAddress@ is not @NULL@, then @pInfo->srcSize@
+--     /must/ be large enough to contain the source matrix, based either on
+--     the standard matrix layout or based on the size filled out by this
+--     command
+--
+-- -   #VUID-vkConvertCooperativeVectorMatrixNV-pInfo-10075# If
+--     @pInfo->dstData.hostAddress@ is not @NULL@, then the value pointed
+--     to by @pInfo->pDstSize@ /must/ be large enough to contain the
+--     destination matrix, based either on the standard matrix layout or
+--     based on the size filled out by this command
+--
+-- -   #VUID-vkConvertCooperativeVectorMatrixNV-pInfo-10076# If
+--     @pInfo->dstData.hostAddress@ is not @NULL@, the source and
+--     destination memory ranges /must/ not overlap
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkConvertCooperativeVectorMatrixNV-device-parameter# @device@
+--     /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkConvertCooperativeVectorMatrixNV-pInfo-parameter# @pInfo@
+--     /must/ be a valid pointer to a valid
+--     'ConvertCooperativeVectorMatrixInfoNV' structure
+--
+-- == Return Codes
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
+--
+--     -   'Vulkan.Core10.Enums.Result.INCOMPLETE'
+--
+--     -   '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_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_cooperative_vector VK_NV_cooperative_vector>,
+-- 'ConvertCooperativeVectorMatrixInfoNV', 'Vulkan.Core10.Handles.Device'
+convertCooperativeVectorMatrixNV :: forall io
+                                  . (MonadIO io)
+                                 => -- | @device@ is the device.
+                                    Device
+                                 -> -- | @pInfo@ is a pointer to a 'ConvertCooperativeVectorMatrixInfoNV'
+                                    -- structure containing information about the layout conversion.
+                                    ConvertCooperativeVectorMatrixInfoNV
+                                 -> io (Result)
+convertCooperativeVectorMatrixNV device info = liftIO . evalContT $ do
+  let vkConvertCooperativeVectorMatrixNVPtr = pVkConvertCooperativeVectorMatrixNV (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkConvertCooperativeVectorMatrixNVPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkConvertCooperativeVectorMatrixNV is null" Nothing Nothing
+  let vkConvertCooperativeVectorMatrixNV' = mkVkConvertCooperativeVectorMatrixNV vkConvertCooperativeVectorMatrixNVPtr
+  pInfo <- ContT $ withCStruct (info)
+  r <- lift $ traceAroundEvent "vkConvertCooperativeVectorMatrixNV" (vkConvertCooperativeVectorMatrixNV'
+                                                                       (deviceHandle (device))
+                                                                       pInfo)
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+  pure $ (r)
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdConvertCooperativeVectorMatrixNV
+  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Ptr ConvertCooperativeVectorMatrixInfoNV -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Ptr ConvertCooperativeVectorMatrixInfoNV -> IO ()
+
+-- | vkCmdConvertCooperativeVectorMatrixNV - Convert a cooperative vector
+-- matrix from one layout and type to another
+--
+-- = Description
+--
+-- This command does the same conversions as
+-- 'convertCooperativeVectorMatrixNV', but executes on the device. One
+-- conversion is performed for each of the @infoCount@ elements of
+-- @pInfos@.
+--
+-- This command’s execution is synchronized using
+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CONVERT_COOPERATIVE_VECTOR_MATRIX_BIT_NV'.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdConvertCooperativeVectorMatrixNV-pInfo-10083# For each
+--     element of @pInfo@, @srcData.deviceAddress@ /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdConvertCooperativeVectorMatrixNV-pInfo-10895# For each
+--     element of @pInfo@, @dstData.deviceAddress@ /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdConvertCooperativeVectorMatrixNV-pInfo-10084# For each
+--     element of @pInfo@, @srcData.deviceAddress@ /must/ be 64 byte
+--     aligned
+--
+-- -   #VUID-vkCmdConvertCooperativeVectorMatrixNV-pInfo-10085# For each
+--     element of @pInfo@, @dstData.deviceAddress@ /must/ be 64 byte
+--     aligned
+--
+-- -   #VUID-vkCmdConvertCooperativeVectorMatrixNV-pInfo-10086# For each
+--     element of @pInfo@, @srcSize@ /must/ be large enough to contain the
+--     source matrix, based either on the standard matrix layout or based
+--     on the size filled out by 'convertCooperativeVectorMatrixNV'
+--
+-- -   #VUID-vkCmdConvertCooperativeVectorMatrixNV-pInfo-10087# For each
+--     element of @pInfo@, the value pointed to by @pDstSize@ /must/ be
+--     large enough to contain the destination matrix, based either on the
+--     standard matrix layout or based on the size filled out by
+--     'convertCooperativeVectorMatrixNV'
+--
+-- -   #VUID-vkCmdConvertCooperativeVectorMatrixNV-None-10088# Memory
+--     accessed by the sources and destinations of all of the conversions
+--     /must/ not overlap
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdConvertCooperativeVectorMatrixNV-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdConvertCooperativeVectorMatrixNV-pInfos-parameter#
+--     @pInfos@ /must/ be a valid pointer to an array of @infoCount@ valid
+--     'ConvertCooperativeVectorMatrixInfoNV' structures
+--
+-- -   #VUID-vkCmdConvertCooperativeVectorMatrixNV-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-vkCmdConvertCooperativeVectorMatrixNV-commandBuffer-cmdpool#
+--     The 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', or
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
+--
+-- -   #VUID-vkCmdConvertCooperativeVectorMatrixNV-renderpass# This command
+--     /must/ only be called outside of a render pass instance
+--
+-- -   #VUID-vkCmdConvertCooperativeVectorMatrixNV-suspended# This command
+--     /must/ not be called between suspended render pass instances
+--
+-- -   #VUID-vkCmdConvertCooperativeVectorMatrixNV-videocoding# This
+--     command /must/ only be called outside of a video coding scope
+--
+-- -   #VUID-vkCmdConvertCooperativeVectorMatrixNV-infoCount-arraylength#
+--     @infoCount@ /must/ be greater than @0@
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | VK_QUEUE_GRAPHICS_BIT                                                                                                 |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdConvertCooperativeVectorMatrixNV is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_cooperative_vector VK_NV_cooperative_vector>,
+-- 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'ConvertCooperativeVectorMatrixInfoNV'
+cmdConvertCooperativeVectorMatrixNV :: forall io
+                                     . (MonadIO io)
+                                    => -- | @commandBuffer@ is the command buffer into which the command will be
+                                       -- recorded.
+                                       CommandBuffer
+                                    -> -- | @pInfos@ is a pointer to an array of
+                                       -- 'ConvertCooperativeVectorMatrixInfoNV' structures containing information
+                                       -- about the layout conversion.
+                                       ("infos" ::: Vector ConvertCooperativeVectorMatrixInfoNV)
+                                    -> io ()
+cmdConvertCooperativeVectorMatrixNV commandBuffer
+                                      infos = liftIO . evalContT $ do
+  let vkCmdConvertCooperativeVectorMatrixNVPtr = pVkCmdConvertCooperativeVectorMatrixNV (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdConvertCooperativeVectorMatrixNVPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdConvertCooperativeVectorMatrixNV is null" Nothing Nothing
+  let vkCmdConvertCooperativeVectorMatrixNV' = mkVkCmdConvertCooperativeVectorMatrixNV vkCmdConvertCooperativeVectorMatrixNVPtr
+  pPInfos <- ContT $ allocaBytes @ConvertCooperativeVectorMatrixInfoNV ((Data.Vector.length (infos)) * 96)
+  Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPInfos `plusPtr` (96 * (i)) :: Ptr ConvertCooperativeVectorMatrixInfoNV) (e) . ($ ())) (infos)
+  lift $ traceAroundEvent "vkCmdConvertCooperativeVectorMatrixNV" (vkCmdConvertCooperativeVectorMatrixNV'
+                                                                     (commandBufferHandle (commandBuffer))
+                                                                     ((fromIntegral (Data.Vector.length $ (infos)) :: Word32))
+                                                                     (pPInfos))
+  pure $ ()
+
+
+-- No documentation found for TopLevel "VK_COMPONENT_TYPE_FLOAT_E4M3_NV"
+pattern COMPONENT_TYPE_FLOAT_E4M3_NV = COMPONENT_TYPE_FLOAT8_E4M3_EXT
+
+
+-- No documentation found for TopLevel "VK_COMPONENT_TYPE_FLOAT_E5M2_NV"
+pattern COMPONENT_TYPE_FLOAT_E5M2_NV = COMPONENT_TYPE_FLOAT8_E5M2_EXT
+
+
+-- | VkPhysicalDeviceCooperativeVectorFeaturesNV - Structure describing
+-- cooperative vector features that can be supported by an implementation
+--
+-- = Members
+--
+-- This structure describes the following features:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceCooperativeVectorFeaturesNV' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceCooperativeVectorFeaturesNV', it /must/ add an instance
+-- of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_cooperative_vector VK_NV_cooperative_vector>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceCooperativeVectorFeaturesNV = PhysicalDeviceCooperativeVectorFeaturesNV
+  { -- | #features-cooperativeVector# @cooperativeVector@ indicates that the
+    -- implementation supports the @CooperativeVectorNV@ SPIR-V capability.
+    cooperativeVector :: Bool
+  , -- | #features-cooperativeVectorTraining# @cooperativeVectorTraining@
+    -- indicates that the implementation supports the
+    -- @CooperativeVectorTrainingNV@ SPIR-V capability.
+    cooperativeVectorTraining :: Bool
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceCooperativeVectorFeaturesNV)
+#endif
+deriving instance Show PhysicalDeviceCooperativeVectorFeaturesNV
+
+instance ToCStruct PhysicalDeviceCooperativeVectorFeaturesNV where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceCooperativeVectorFeaturesNV{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_VECTOR_FEATURES_NV)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (cooperativeVector))
+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (cooperativeVectorTraining))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_VECTOR_FEATURES_NV)
+    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 PhysicalDeviceCooperativeVectorFeaturesNV where
+  peekCStruct p = do
+    cooperativeVector <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    cooperativeVectorTraining <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
+    pure $ PhysicalDeviceCooperativeVectorFeaturesNV
+             (bool32ToBool cooperativeVector)
+             (bool32ToBool cooperativeVectorTraining)
+
+instance Storable PhysicalDeviceCooperativeVectorFeaturesNV where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceCooperativeVectorFeaturesNV where
+  zero = PhysicalDeviceCooperativeVectorFeaturesNV
+           zero
+           zero
+
+
+-- | VkCooperativeVectorPropertiesNV - Structure specifying cooperative
+-- vector properties
+--
+-- = Description
+--
+-- 'COMPONENT_TYPE_SINT8_PACKED_NV' and 'COMPONENT_TYPE_UINT8_PACKED_NV'
+-- /must/ not be used for members other than @inputInterpretation@.
+--
+-- The following combinations /must/ be supported (each row is a required
+-- combination):
+--
+-- +-------------+---------------------+----------------------+--------------------+-------------+
+-- | inputType   | inputInterpretation | matrixInterpretation | biasInterpretation | resultType  |
+-- +=============+=====================+======================+====================+=============+
+-- | FLOAT16     | FLOAT16             | FLOAT16              | FLOAT16            | FLOAT16     |
+-- +-------------+---------------------+----------------------+--------------------+-------------+
+-- | UINT32      | SINT8_PACKED        | SINT8                | SINT32             | SINT32      |
+-- +-------------+---------------------+----------------------+--------------------+-------------+
+-- | SINT8       | SINT8               | SINT8                | SINT32             | SINT32      |
+-- +-------------+---------------------+----------------------+--------------------+-------------+
+-- | FLOAT32     | SINT8               | SINT8                | SINT32             | SINT32      |
+-- +-------------+---------------------+----------------------+--------------------+-------------+
+-- | FLOAT16     | FLOAT_E4M3          | FLOAT_E4M3           | FLOAT16            | FLOAT16     |
+-- +-------------+---------------------+----------------------+--------------------+-------------+
+-- | FLOAT16     | FLOAT_E5M2          | FLOAT_E5M2           | FLOAT16            | FLOAT16     |
+-- +-------------+---------------------+----------------------+--------------------+-------------+
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_cooperative_vector VK_NV_cooperative_vector>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32', 'ComponentTypeKHR',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'getPhysicalDeviceCooperativeVectorPropertiesNV'
+data CooperativeVectorPropertiesNV = CooperativeVectorPropertiesNV
+  { -- | @inputType@ is the component type of vector @Input@, of type
+    -- 'ComponentTypeKHR'.
+    --
+    -- #VUID-VkCooperativeVectorPropertiesNV-inputType-parameter# @inputType@
+    -- /must/ be a valid 'ComponentTypeKHR' value
+    inputType :: ComponentTypeKHR
+  , -- | @inputInterpretation@ is the value of @InputInterpretation@, of type
+    -- 'ComponentTypeKHR'.
+    --
+    -- #VUID-VkCooperativeVectorPropertiesNV-inputInterpretation-parameter#
+    -- @inputInterpretation@ /must/ be a valid 'ComponentTypeKHR' value
+    inputInterpretation :: ComponentTypeKHR
+  , -- | @matrixInterpretation@ is the value of @MatrixInterpretation@, of type
+    -- 'ComponentTypeKHR'.
+    --
+    -- #VUID-VkCooperativeVectorPropertiesNV-matrixInterpretation-parameter#
+    -- @matrixInterpretation@ /must/ be a valid 'ComponentTypeKHR' value
+    matrixInterpretation :: ComponentTypeKHR
+  , -- | @biasInterpretation@ is the value of @BiasInterpretation@, of type
+    -- 'ComponentTypeKHR'.
+    --
+    -- #VUID-VkCooperativeVectorPropertiesNV-biasInterpretation-parameter#
+    -- @biasInterpretation@ /must/ be a valid 'ComponentTypeKHR' value
+    biasInterpretation :: ComponentTypeKHR
+  , -- | @resultType@ is the component type of
+    -- 'Vulkan.Core10.Enums.Result.Result' @Type@, of type 'ComponentTypeKHR'.
+    --
+    -- #VUID-VkCooperativeVectorPropertiesNV-resultType-parameter# @resultType@
+    -- /must/ be a valid 'ComponentTypeKHR' value
+    resultType :: ComponentTypeKHR
+  , -- | @transpose@ is a boolean indicating whether opaque layout matrices with
+    -- this combination of input and output types supports transposition.
+    transpose :: Bool
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (CooperativeVectorPropertiesNV)
+#endif
+deriving instance Show CooperativeVectorPropertiesNV
+
+instance ToCStruct CooperativeVectorPropertiesNV where
+  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p CooperativeVectorPropertiesNV{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COOPERATIVE_VECTOR_PROPERTIES_NV)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr ComponentTypeKHR)) (inputType)
+    poke ((p `plusPtr` 20 :: Ptr ComponentTypeKHR)) (inputInterpretation)
+    poke ((p `plusPtr` 24 :: Ptr ComponentTypeKHR)) (matrixInterpretation)
+    poke ((p `plusPtr` 28 :: Ptr ComponentTypeKHR)) (biasInterpretation)
+    poke ((p `plusPtr` 32 :: Ptr ComponentTypeKHR)) (resultType)
+    poke ((p `plusPtr` 36 :: Ptr Bool32)) (boolToBool32 (transpose))
+    f
+  cStructSize = 40
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COOPERATIVE_VECTOR_PROPERTIES_NV)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr ComponentTypeKHR)) (zero)
+    poke ((p `plusPtr` 20 :: Ptr ComponentTypeKHR)) (zero)
+    poke ((p `plusPtr` 24 :: Ptr ComponentTypeKHR)) (zero)
+    poke ((p `plusPtr` 28 :: Ptr ComponentTypeKHR)) (zero)
+    poke ((p `plusPtr` 32 :: Ptr ComponentTypeKHR)) (zero)
+    poke ((p `plusPtr` 36 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct CooperativeVectorPropertiesNV where
+  peekCStruct p = do
+    inputType <- peek @ComponentTypeKHR ((p `plusPtr` 16 :: Ptr ComponentTypeKHR))
+    inputInterpretation <- peek @ComponentTypeKHR ((p `plusPtr` 20 :: Ptr ComponentTypeKHR))
+    matrixInterpretation <- peek @ComponentTypeKHR ((p `plusPtr` 24 :: Ptr ComponentTypeKHR))
+    biasInterpretation <- peek @ComponentTypeKHR ((p `plusPtr` 28 :: Ptr ComponentTypeKHR))
+    resultType <- peek @ComponentTypeKHR ((p `plusPtr` 32 :: Ptr ComponentTypeKHR))
+    transpose <- peek @Bool32 ((p `plusPtr` 36 :: Ptr Bool32))
+    pure $ CooperativeVectorPropertiesNV
+             inputType
+             inputInterpretation
+             matrixInterpretation
+             biasInterpretation
+             resultType
+             (bool32ToBool transpose)
+
+instance Storable CooperativeVectorPropertiesNV where
+  sizeOf ~_ = 40
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero CooperativeVectorPropertiesNV where
+  zero = CooperativeVectorPropertiesNV
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkPhysicalDeviceCooperativeVectorPropertiesNV - Structure describing
+-- cooperative vector properties supported by an implementation
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceCooperativeVectorPropertiesNV' 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.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_cooperative_vector VK_NV_cooperative_vector>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlags',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceCooperativeVectorPropertiesNV = PhysicalDeviceCooperativeVectorPropertiesNV
+  { -- | #limits-cooperativeVectorSupportedStages#
+    -- @cooperativeVectorSupportedStages@ is a bitfield of
+    -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits' describing
+    -- the shader stages that cooperative vector instructions are supported in.
+    -- @cooperativeVectorSupportedStages@ will have the
+    -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT' bit
+    -- set if any of the physical device’s queues support
+    -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT'.
+    cooperativeVectorSupportedStages :: ShaderStageFlags
+  , -- | #limits-cooperativeVectorTrainingFloat16Accumulation#
+    -- @cooperativeVectorTrainingFloat16Accumulation@ is
+    -- 'Vulkan.Core10.FundamentalTypes.TRUE' if the implementation supports
+    -- cooperative vector training functions accumulating 16-bit floating-point
+    -- results.
+    cooperativeVectorTrainingFloat16Accumulation :: Bool
+  , -- | #limits-cooperativeVectorTrainingFloat32Accumulation#
+    -- @cooperativeVectorTrainingFloat32Accumulation@ is
+    -- 'Vulkan.Core10.FundamentalTypes.TRUE' if the implementation supports
+    -- cooperative vector training functions accumulating 32-bit floating-point
+    -- results.
+    cooperativeVectorTrainingFloat32Accumulation :: Bool
+  , -- | #limits-maxCooperativeVectorComponents# @maxCooperativeVectorComponents@
+    -- indicates the maximum number of components that /can/ be in a
+    -- cooperative vector.
+    maxCooperativeVectorComponents :: Word32
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceCooperativeVectorPropertiesNV)
+#endif
+deriving instance Show PhysicalDeviceCooperativeVectorPropertiesNV
+
+instance ToCStruct PhysicalDeviceCooperativeVectorPropertiesNV where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceCooperativeVectorPropertiesNV{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_VECTOR_PROPERTIES_NV)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr ShaderStageFlags)) (cooperativeVectorSupportedStages)
+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (cooperativeVectorTrainingFloat16Accumulation))
+    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (cooperativeVectorTrainingFloat32Accumulation))
+    poke ((p `plusPtr` 28 :: Ptr Word32)) (maxCooperativeVectorComponents)
+    f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_VECTOR_PROPERTIES_NV)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr ShaderStageFlags)) (zero)
+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 28 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct PhysicalDeviceCooperativeVectorPropertiesNV where
+  peekCStruct p = do
+    cooperativeVectorSupportedStages <- peek @ShaderStageFlags ((p `plusPtr` 16 :: Ptr ShaderStageFlags))
+    cooperativeVectorTrainingFloat16Accumulation <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
+    cooperativeVectorTrainingFloat32Accumulation <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))
+    maxCooperativeVectorComponents <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))
+    pure $ PhysicalDeviceCooperativeVectorPropertiesNV
+             cooperativeVectorSupportedStages
+             (bool32ToBool cooperativeVectorTrainingFloat16Accumulation)
+             (bool32ToBool cooperativeVectorTrainingFloat32Accumulation)
+             maxCooperativeVectorComponents
+
+instance Storable PhysicalDeviceCooperativeVectorPropertiesNV where
+  sizeOf ~_ = 32
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceCooperativeVectorPropertiesNV where
+  zero = PhysicalDeviceCooperativeVectorPropertiesNV
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkConvertCooperativeVectorMatrixInfoNV - Structure specifying a request
+-- to convert the layout and type of a cooperative vector matrix
+--
+-- = Description
+--
+-- When called from 'cmdConvertCooperativeVectorMatrixNV', the
+-- @deviceAddress@ members of @srcData@ and @dstData@ are used. When called
+-- from 'convertCooperativeVectorMatrixNV', the @hostAddress@ members of
+-- @srcData@ and @dstData@ are used.
+--
+-- For each of the source and destination matrix, if the layout is not
+-- either 'COOPERATIVE_VECTOR_MATRIX_LAYOUT_ROW_MAJOR_NV' or
+-- 'COOPERATIVE_VECTOR_MATRIX_LAYOUT_COLUMN_MAJOR_NV', then the
+-- corresponding stride parameter is ignored.
+--
+-- The size of the destination is only a function of the destination layout
+-- information, and does not depend on the source layout information.
+--
+-- Conversion /can/ be used to convert between 'COMPONENT_TYPE_FLOAT32_KHR'
+-- or 'COMPONENT_TYPE_FLOAT16_KHR' and any supported lower-precision
+-- floating-point type. In this case, the conversion uses
+-- round-to-nearest-even rounding.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkConvertCooperativeVectorMatrixInfoNV-srcLayout-10077# If
+--     @srcLayout@ is row-major or column-major, then @srcStride@ /must/ be
+--     greater than the length of a row\/column, and a multiple of the
+--     element size
+--
+-- -   #VUID-VkConvertCooperativeVectorMatrixInfoNV-dstLayout-10078# If
+--     @dstLayout@ is row-major or column-major, then @dstStride@ /must/ be
+--     greater than the length of a row\/column, and a multiple of the
+--     element size
+--
+-- -   #VUID-VkConvertCooperativeVectorMatrixInfoNV-srcComponentType-10079#
+--     If @srcComponentType@ is not a supported
+--     'CooperativeVectorPropertiesNV'::@matrixInterpretation@ value as
+--     reported by 'getPhysicalDeviceCooperativeVectorPropertiesNV', then
+--     @srcComponentType@ /must/ be 'COMPONENT_TYPE_FLOAT32_KHR'
+--
+-- -   #VUID-VkConvertCooperativeVectorMatrixInfoNV-dstComponentType-10080#
+--     If @dstComponentType@ is not a supported
+--     'CooperativeVectorPropertiesNV'::@matrixInterpretation@ value as
+--     reported by 'getPhysicalDeviceCooperativeVectorPropertiesNV', then
+--     @dstComponentType@ /must/ be 'COMPONENT_TYPE_FLOAT32_KHR'
+--
+-- -   #VUID-VkConvertCooperativeVectorMatrixInfoNV-srcComponentType-10081#
+--     If @srcComponentType@ and @dstComponentType@ are not equal, then one
+--     /must/ be 'COMPONENT_TYPE_FLOAT32_KHR' or
+--     'COMPONENT_TYPE_FLOAT16_KHR' and the other /must/ be a
+--     lower-precision floating-point type
+--
+-- -   #VUID-VkConvertCooperativeVectorMatrixInfoNV-dstComponentType-10082#
+--     If @dstComponentType@ is 'COMPONENT_TYPE_FLOAT_E4M3_NV' or
+--     'COMPONENT_TYPE_FLOAT_E5M2_NV', then @dstLayout@ /must/ be
+--     'COOPERATIVE_VECTOR_MATRIX_LAYOUT_INFERENCING_OPTIMAL_NV' or
+--     'COOPERATIVE_VECTOR_MATRIX_LAYOUT_TRAINING_OPTIMAL_NV'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkConvertCooperativeVectorMatrixInfoNV-sType-sType# @sType@
+--     /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_CONVERT_COOPERATIVE_VECTOR_MATRIX_INFO_NV'
+--
+-- -   #VUID-VkConvertCooperativeVectorMatrixInfoNV-pNext-pNext# @pNext@
+--     /must/ be @NULL@
+--
+-- -   #VUID-VkConvertCooperativeVectorMatrixInfoNV-srcData-parameter#
+--     @srcData@ /must/ be a valid
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.DeviceOrHostAddressConstKHR'
+--     union
+--
+-- -   #VUID-VkConvertCooperativeVectorMatrixInfoNV-pDstSize-parameter#
+--     @pDstSize@ /must/ be a valid pointer to a @size_t@ value
+--
+-- -   #VUID-VkConvertCooperativeVectorMatrixInfoNV-dstData-parameter#
+--     @dstData@ /must/ be a valid
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.DeviceOrHostAddressKHR'
+--     union
+--
+-- -   #VUID-VkConvertCooperativeVectorMatrixInfoNV-srcComponentType-parameter#
+--     @srcComponentType@ /must/ be a valid 'ComponentTypeKHR' value
+--
+-- -   #VUID-VkConvertCooperativeVectorMatrixInfoNV-dstComponentType-parameter#
+--     @dstComponentType@ /must/ be a valid 'ComponentTypeKHR' value
+--
+-- -   #VUID-VkConvertCooperativeVectorMatrixInfoNV-srcLayout-parameter#
+--     @srcLayout@ /must/ be a valid 'CooperativeVectorMatrixLayoutNV'
+--     value
+--
+-- -   #VUID-VkConvertCooperativeVectorMatrixInfoNV-dstLayout-parameter#
+--     @dstLayout@ /must/ be a valid 'CooperativeVectorMatrixLayoutNV'
+--     value
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_cooperative_vector VK_NV_cooperative_vector>,
+-- 'ComponentTypeKHR', 'CooperativeVectorMatrixLayoutNV',
+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.DeviceOrHostAddressConstKHR',
+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.DeviceOrHostAddressKHR',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'cmdConvertCooperativeVectorMatrixNV',
+-- 'convertCooperativeVectorMatrixNV'
+data ConvertCooperativeVectorMatrixInfoNV = ConvertCooperativeVectorMatrixInfoNV
+  { -- | @srcSize@ is the length in bytes of @srcData@.
+    srcSize :: Word64
+  , -- | @srcData@ is either @NULL@ or a pointer to the source data in the source
+    -- layout.
+    srcData :: DeviceOrHostAddressConstKHR
+  , -- | @pDstSize@ is a pointer to an integer related to the number of bytes
+    -- required or requested to convert.
+    dstSize :: Ptr CSize
+  , -- | @dstData@ is either @NULL@ or a pointer to the destination data in the
+    -- destination layout.
+    dstData :: DeviceOrHostAddressKHR
+  , -- | @srcComponentType@ is the type of a source matrix element.
+    srcComponentType :: ComponentTypeKHR
+  , -- | @dstComponentType@ is the type of a destination matrix element.
+    dstComponentType :: ComponentTypeKHR
+  , -- | @numRows@ is the number of rows in the matrix.
+    numRows :: Word32
+  , -- | @numColumns@ is the number of columns in the matrix.
+    numColumns :: Word32
+  , -- | @srcLayout@ is the layout of the source matrix.
+    srcLayout :: CooperativeVectorMatrixLayoutNV
+  , -- | @srcStride@ is the number of bytes between a consecutive row or column
+    -- (depending on @srcLayout@) of the source matrix, if it is row-major or
+    -- column-major.
+    srcStride :: Word64
+  , -- | @dstLayout@ is the layout the matrix is converted to.
+    dstLayout :: CooperativeVectorMatrixLayoutNV
+  , -- | @dstStride@ is the number of bytes between a consecutive row or column
+    -- (depending on @dstLayout@) of destination matrix, if it is row-major or
+    -- column-major.
+    dstStride :: Word64
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (ConvertCooperativeVectorMatrixInfoNV)
+#endif
+deriving instance Show ConvertCooperativeVectorMatrixInfoNV
+
+instance ToCStruct ConvertCooperativeVectorMatrixInfoNV where
+  withCStruct x f = allocaBytes 96 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p ConvertCooperativeVectorMatrixInfoNV{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_CONVERT_COOPERATIVE_VECTOR_MATRIX_INFO_NV)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr CSize)) (CSize (srcSize))
+    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr DeviceOrHostAddressConstKHR)) (srcData) . ($ ())
+    lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr CSize))) (dstSize)
+    ContT $ pokeCStruct ((p `plusPtr` 40 :: Ptr DeviceOrHostAddressKHR)) (dstData) . ($ ())
+    lift $ poke ((p `plusPtr` 48 :: Ptr ComponentTypeKHR)) (srcComponentType)
+    lift $ poke ((p `plusPtr` 52 :: Ptr ComponentTypeKHR)) (dstComponentType)
+    lift $ poke ((p `plusPtr` 56 :: Ptr Word32)) (numRows)
+    lift $ poke ((p `plusPtr` 60 :: Ptr Word32)) (numColumns)
+    lift $ poke ((p `plusPtr` 64 :: Ptr CooperativeVectorMatrixLayoutNV)) (srcLayout)
+    lift $ poke ((p `plusPtr` 72 :: Ptr CSize)) (CSize (srcStride))
+    lift $ poke ((p `plusPtr` 80 :: Ptr CooperativeVectorMatrixLayoutNV)) (dstLayout)
+    lift $ poke ((p `plusPtr` 88 :: Ptr CSize)) (CSize (dstStride))
+    lift $ f
+  cStructSize = 96
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_CONVERT_COOPERATIVE_VECTOR_MATRIX_INFO_NV)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr CSize)) (CSize (zero))
+    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr DeviceOrHostAddressConstKHR)) (zero) . ($ ())
+    lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr CSize))) (zero)
+    ContT $ pokeCStruct ((p `plusPtr` 40 :: Ptr DeviceOrHostAddressKHR)) (zero) . ($ ())
+    lift $ poke ((p `plusPtr` 48 :: Ptr ComponentTypeKHR)) (zero)
+    lift $ poke ((p `plusPtr` 52 :: Ptr ComponentTypeKHR)) (zero)
+    lift $ poke ((p `plusPtr` 56 :: Ptr Word32)) (zero)
+    lift $ poke ((p `plusPtr` 60 :: Ptr Word32)) (zero)
+    lift $ poke ((p `plusPtr` 64 :: Ptr CooperativeVectorMatrixLayoutNV)) (zero)
+    lift $ poke ((p `plusPtr` 72 :: Ptr CSize)) (CSize (zero))
+    lift $ poke ((p `plusPtr` 80 :: Ptr CooperativeVectorMatrixLayoutNV)) (zero)
+    lift $ poke ((p `plusPtr` 88 :: Ptr CSize)) (CSize (zero))
+    lift $ f
+
+instance Zero ConvertCooperativeVectorMatrixInfoNV where
+  zero = ConvertCooperativeVectorMatrixInfoNV
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkComponentTypeKHR - Specify SPIR-V cooperative matrix component type
+--
+-- = Description
+--
+-- -   'COMPONENT_TYPE_FLOAT16_KHR' corresponds to SPIR-V @OpTypeFloat@ 16.
+--
+-- -   'COMPONENT_TYPE_FLOAT32_KHR' corresponds to SPIR-V @OpTypeFloat@ 32.
+--
+-- -   'COMPONENT_TYPE_FLOAT64_KHR' corresponds to SPIR-V @OpTypeFloat@ 64.
+--
+-- -   'COMPONENT_TYPE_SINT8_KHR' corresponds to SPIR-V @OpTypeInt@ 8 0\/1.
+--
+-- -   'COMPONENT_TYPE_SINT16_KHR' corresponds to SPIR-V @OpTypeInt@ 16
+--     0\/1.
+--
+-- -   'COMPONENT_TYPE_SINT32_KHR' corresponds to SPIR-V @OpTypeInt@ 32
+--     0\/1.
+--
+-- -   'COMPONENT_TYPE_SINT64_KHR' corresponds to SPIR-V @OpTypeInt@ 64
+--     0\/1.
+--
+-- -   'COMPONENT_TYPE_UINT8_KHR' corresponds to SPIR-V @OpTypeInt@ 8 0\/1.
+--
+-- -   'COMPONENT_TYPE_UINT16_KHR' corresponds to SPIR-V @OpTypeInt@ 16
+--     0\/1.
+--
+-- -   'COMPONENT_TYPE_UINT32_KHR' corresponds to SPIR-V @OpTypeInt@ 32
+--     0\/1.
+--
+-- -   'COMPONENT_TYPE_UINT64_KHR' corresponds to SPIR-V @OpTypeInt@ 64
+--     0\/1.
+--
+-- -   'COMPONENT_TYPE_BFLOAT16_KHR' corresponds to SPIR-V @OpTypeFloat@ 16
+--     BFloat16KHR.
+--
+-- -   'COMPONENT_TYPE_SINT8_PACKED_NV' corresponds to four 8-bit signed
+--     integers packed in a 32-bit unsigned integer.
+--
+-- -   'COMPONENT_TYPE_UINT8_PACKED_NV' corresponds to four 8-bit unsigned
+--     integers packed in a 32-bit unsigned integer.
+--
+-- -   'COMPONENT_TYPE_FLOAT_E4M3_NV' corresponds to a floating-point type
+--     with a sign bit in the most significant bit, followed by four
+--     exponent bits, followed by three mantissa bits.
+--
+-- -   'COMPONENT_TYPE_FLOAT_E5M2_NV' corresponds to a floating-point type
+--     with a sign bit in the most significant bit, followed by five
+--     exponent bits, followed by two mantissa bits.
+--
+-- -   'COMPONENT_TYPE_FLOAT8_E4M3_EXT' corresponds to SPIR-V @OpTypeFloat@
+--     8 Float8E4M3EXT.
+--
+-- -   'COMPONENT_TYPE_FLOAT8_E5M2_EXT' corresponds to SPIR-V @OpTypeFloat@
+--     8 Float8E5M2EXT.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_cooperative_matrix VK_KHR_cooperative_matrix>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_cooperative_matrix VK_NV_cooperative_matrix>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_cooperative_vector VK_NV_cooperative_vector>,
+-- 'ConvertCooperativeVectorMatrixInfoNV',
+-- 'Vulkan.Extensions.VK_NV_cooperative_matrix2.CooperativeMatrixFlexibleDimensionsPropertiesNV',
+-- 'Vulkan.Extensions.VK_KHR_cooperative_matrix.CooperativeMatrixPropertiesKHR',
+-- 'Vulkan.Extensions.VK_NV_cooperative_matrix.CooperativeMatrixPropertiesNV',
+-- 'CooperativeVectorPropertiesNV'
+newtype ComponentTypeKHR = ComponentTypeKHR Int32
+  deriving newtype (Eq, Ord, Storable, Zero)
+
+-- No documentation found for Nested "VkComponentTypeKHR" "VK_COMPONENT_TYPE_FLOAT16_KHR"
+pattern COMPONENT_TYPE_FLOAT16_KHR = ComponentTypeKHR 0
+
+-- No documentation found for Nested "VkComponentTypeKHR" "VK_COMPONENT_TYPE_FLOAT32_KHR"
+pattern COMPONENT_TYPE_FLOAT32_KHR = ComponentTypeKHR 1
+
+-- No documentation found for Nested "VkComponentTypeKHR" "VK_COMPONENT_TYPE_FLOAT64_KHR"
+pattern COMPONENT_TYPE_FLOAT64_KHR = ComponentTypeKHR 2
+
+-- No documentation found for Nested "VkComponentTypeKHR" "VK_COMPONENT_TYPE_SINT8_KHR"
+pattern COMPONENT_TYPE_SINT8_KHR = ComponentTypeKHR 3
+
+-- No documentation found for Nested "VkComponentTypeKHR" "VK_COMPONENT_TYPE_SINT16_KHR"
+pattern COMPONENT_TYPE_SINT16_KHR = ComponentTypeKHR 4
+
+-- No documentation found for Nested "VkComponentTypeKHR" "VK_COMPONENT_TYPE_SINT32_KHR"
+pattern COMPONENT_TYPE_SINT32_KHR = ComponentTypeKHR 5
+
+-- No documentation found for Nested "VkComponentTypeKHR" "VK_COMPONENT_TYPE_SINT64_KHR"
+pattern COMPONENT_TYPE_SINT64_KHR = ComponentTypeKHR 6
+
+-- No documentation found for Nested "VkComponentTypeKHR" "VK_COMPONENT_TYPE_UINT8_KHR"
+pattern COMPONENT_TYPE_UINT8_KHR = ComponentTypeKHR 7
+
+-- No documentation found for Nested "VkComponentTypeKHR" "VK_COMPONENT_TYPE_UINT16_KHR"
+pattern COMPONENT_TYPE_UINT16_KHR = ComponentTypeKHR 8
+
+-- No documentation found for Nested "VkComponentTypeKHR" "VK_COMPONENT_TYPE_UINT32_KHR"
+pattern COMPONENT_TYPE_UINT32_KHR = ComponentTypeKHR 9
+
+-- No documentation found for Nested "VkComponentTypeKHR" "VK_COMPONENT_TYPE_UINT64_KHR"
+pattern COMPONENT_TYPE_UINT64_KHR = ComponentTypeKHR 10
+
+-- No documentation found for Nested "VkComponentTypeKHR" "VK_COMPONENT_TYPE_FLOAT8_E5M2_EXT"
+pattern COMPONENT_TYPE_FLOAT8_E5M2_EXT = ComponentTypeKHR 1000491003
+
+-- No documentation found for Nested "VkComponentTypeKHR" "VK_COMPONENT_TYPE_FLOAT8_E4M3_EXT"
+pattern COMPONENT_TYPE_FLOAT8_E4M3_EXT = ComponentTypeKHR 1000491002
+
+-- No documentation found for Nested "VkComponentTypeKHR" "VK_COMPONENT_TYPE_UINT8_PACKED_NV"
+pattern COMPONENT_TYPE_UINT8_PACKED_NV = ComponentTypeKHR 1000491001
+
+-- No documentation found for Nested "VkComponentTypeKHR" "VK_COMPONENT_TYPE_SINT8_PACKED_NV"
+pattern COMPONENT_TYPE_SINT8_PACKED_NV = ComponentTypeKHR 1000491000
+
+-- No documentation found for Nested "VkComponentTypeKHR" "VK_COMPONENT_TYPE_BFLOAT16_KHR"
+pattern COMPONENT_TYPE_BFLOAT16_KHR = ComponentTypeKHR 1000141000
+
+{-# COMPLETE
+  COMPONENT_TYPE_FLOAT16_KHR
+  , COMPONENT_TYPE_FLOAT32_KHR
+  , COMPONENT_TYPE_FLOAT64_KHR
+  , COMPONENT_TYPE_SINT8_KHR
+  , COMPONENT_TYPE_SINT16_KHR
+  , COMPONENT_TYPE_SINT32_KHR
+  , COMPONENT_TYPE_SINT64_KHR
+  , COMPONENT_TYPE_UINT8_KHR
+  , COMPONENT_TYPE_UINT16_KHR
+  , COMPONENT_TYPE_UINT32_KHR
+  , COMPONENT_TYPE_UINT64_KHR
+  , COMPONENT_TYPE_FLOAT8_E5M2_EXT
+  , COMPONENT_TYPE_FLOAT8_E4M3_EXT
+  , COMPONENT_TYPE_UINT8_PACKED_NV
+  , COMPONENT_TYPE_SINT8_PACKED_NV
+  , COMPONENT_TYPE_BFLOAT16_KHR ::
+    ComponentTypeKHR
+  #-}
+
+conNameComponentTypeKHR :: String
+conNameComponentTypeKHR = "ComponentTypeKHR"
+
+enumPrefixComponentTypeKHR :: String
+enumPrefixComponentTypeKHR = "COMPONENT_TYPE_"
+
+showTableComponentTypeKHR :: [(ComponentTypeKHR, String)]
+showTableComponentTypeKHR =
+  [ (COMPONENT_TYPE_FLOAT16_KHR, "FLOAT16_KHR")
+  , (COMPONENT_TYPE_FLOAT32_KHR, "FLOAT32_KHR")
+  , (COMPONENT_TYPE_FLOAT64_KHR, "FLOAT64_KHR")
+  , (COMPONENT_TYPE_SINT8_KHR, "SINT8_KHR")
+  , (COMPONENT_TYPE_SINT16_KHR, "SINT16_KHR")
+  , (COMPONENT_TYPE_SINT32_KHR, "SINT32_KHR")
+  , (COMPONENT_TYPE_SINT64_KHR, "SINT64_KHR")
+  , (COMPONENT_TYPE_UINT8_KHR, "UINT8_KHR")
+  , (COMPONENT_TYPE_UINT16_KHR, "UINT16_KHR")
+  , (COMPONENT_TYPE_UINT32_KHR, "UINT32_KHR")
+  , (COMPONENT_TYPE_UINT64_KHR, "UINT64_KHR")
+  ,
+    ( COMPONENT_TYPE_FLOAT8_E5M2_EXT
+    , "FLOAT8_E5M2_EXT"
+    )
+  ,
+    ( COMPONENT_TYPE_FLOAT8_E4M3_EXT
+    , "FLOAT8_E4M3_EXT"
+    )
+  ,
+    ( COMPONENT_TYPE_UINT8_PACKED_NV
+    , "UINT8_PACKED_NV"
+    )
+  ,
+    ( COMPONENT_TYPE_SINT8_PACKED_NV
+    , "SINT8_PACKED_NV"
+    )
+  , (COMPONENT_TYPE_BFLOAT16_KHR, "BFLOAT16_KHR")
+  ]
+
+instance Show ComponentTypeKHR where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixComponentTypeKHR
+      showTableComponentTypeKHR
+      conNameComponentTypeKHR
+      (\(ComponentTypeKHR x) -> x)
+      (showsPrec 11)
+
+instance Read ComponentTypeKHR where
+  readPrec =
+    enumReadPrec
+      enumPrefixComponentTypeKHR
+      showTableComponentTypeKHR
+      conNameComponentTypeKHR
+      ComponentTypeKHR
+
+-- | VkCooperativeVectorMatrixLayoutNV - Specify cooperative vector matrix
+-- layout
+--
+-- = Description
+--
+-- -   'COOPERATIVE_VECTOR_MATRIX_LAYOUT_ROW_MAJOR_NV' corresponds to
+--     SPIR-V @RowMajorNV@ layout.
+--
+-- -   'COOPERATIVE_VECTOR_MATRIX_LAYOUT_COLUMN_MAJOR_NV' corresponds to
+--     SPIR-V @ColumnMajorNV@ layout.
+--
+-- -   'COOPERATIVE_VECTOR_MATRIX_LAYOUT_INFERENCING_OPTIMAL_NV'
+--     corresponds to SPIR-V @InferencingOptimalNV@ layout.
+--
+-- -   'COOPERATIVE_VECTOR_MATRIX_LAYOUT_TRAINING_OPTIMAL_NV' corresponds
+--     to SPIR-V @TrainingOptimalNV@ layout.
+--
+-- All enum values match the corresponding SPIR-V value.
+--
+-- Row-major layout has elements of each row stored consecutively in
+-- memory, with a controllable stride from the start of one row to the
+-- start of the next row. Column-major layout has elements of each column
+-- stored consecutively in memory, with a controllable stride from the
+-- start of one column to the start of the next column. Inferencing-optimal
+-- and Training-optimal layouts are implementation-dependent, and the
+-- application /can/ convert a matrix to those layouts using
+-- 'convertCooperativeVectorMatrixNV' or
+-- 'cmdConvertCooperativeVectorMatrixNV'. Training-optimal layout with
+-- 'COMPONENT_TYPE_FLOAT16_KHR' or 'COMPONENT_TYPE_FLOAT32_KHR' type has
+-- the additional guarantee that the application /can/ reinterpret the data
+-- as an array of elements and perform element-wise operations on the data,
+-- and finite values in any padding elements do not affect the result of a
+-- matrix-vector multiply (inf\/NaN values /may/ still cause NaN values in
+-- the result).
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_cooperative_vector VK_NV_cooperative_vector>,
+-- 'ConvertCooperativeVectorMatrixInfoNV'
+newtype CooperativeVectorMatrixLayoutNV = CooperativeVectorMatrixLayoutNV Int32
+  deriving newtype (Eq, Ord, Storable, Zero)
+
+-- No documentation found for Nested "VkCooperativeVectorMatrixLayoutNV" "VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_ROW_MAJOR_NV"
+pattern COOPERATIVE_VECTOR_MATRIX_LAYOUT_ROW_MAJOR_NV = CooperativeVectorMatrixLayoutNV 0
+
+-- No documentation found for Nested "VkCooperativeVectorMatrixLayoutNV" "VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_COLUMN_MAJOR_NV"
+pattern COOPERATIVE_VECTOR_MATRIX_LAYOUT_COLUMN_MAJOR_NV = CooperativeVectorMatrixLayoutNV 1
+
+-- No documentation found for Nested "VkCooperativeVectorMatrixLayoutNV" "VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_INFERENCING_OPTIMAL_NV"
+pattern COOPERATIVE_VECTOR_MATRIX_LAYOUT_INFERENCING_OPTIMAL_NV = CooperativeVectorMatrixLayoutNV 2
+
+-- No documentation found for Nested "VkCooperativeVectorMatrixLayoutNV" "VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_TRAINING_OPTIMAL_NV"
+pattern COOPERATIVE_VECTOR_MATRIX_LAYOUT_TRAINING_OPTIMAL_NV = CooperativeVectorMatrixLayoutNV 3
+
+{-# COMPLETE
+  COOPERATIVE_VECTOR_MATRIX_LAYOUT_ROW_MAJOR_NV
+  , COOPERATIVE_VECTOR_MATRIX_LAYOUT_COLUMN_MAJOR_NV
+  , COOPERATIVE_VECTOR_MATRIX_LAYOUT_INFERENCING_OPTIMAL_NV
+  , COOPERATIVE_VECTOR_MATRIX_LAYOUT_TRAINING_OPTIMAL_NV ::
+    CooperativeVectorMatrixLayoutNV
+  #-}
+
+conNameCooperativeVectorMatrixLayoutNV :: String
+conNameCooperativeVectorMatrixLayoutNV = "CooperativeVectorMatrixLayoutNV"
+
+enumPrefixCooperativeVectorMatrixLayoutNV :: String
+enumPrefixCooperativeVectorMatrixLayoutNV = "COOPERATIVE_VECTOR_MATRIX_LAYOUT_"
+
+showTableCooperativeVectorMatrixLayoutNV :: [(CooperativeVectorMatrixLayoutNV, String)]
+showTableCooperativeVectorMatrixLayoutNV =
+  [
+    ( COOPERATIVE_VECTOR_MATRIX_LAYOUT_ROW_MAJOR_NV
+    , "ROW_MAJOR_NV"
+    )
+  ,
+    ( COOPERATIVE_VECTOR_MATRIX_LAYOUT_COLUMN_MAJOR_NV
+    , "COLUMN_MAJOR_NV"
+    )
+  ,
+    ( COOPERATIVE_VECTOR_MATRIX_LAYOUT_INFERENCING_OPTIMAL_NV
+    , "INFERENCING_OPTIMAL_NV"
+    )
+  ,
+    ( COOPERATIVE_VECTOR_MATRIX_LAYOUT_TRAINING_OPTIMAL_NV
+    , "TRAINING_OPTIMAL_NV"
+    )
+  ]
+
+instance Show CooperativeVectorMatrixLayoutNV where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixCooperativeVectorMatrixLayoutNV
+      showTableCooperativeVectorMatrixLayoutNV
+      conNameCooperativeVectorMatrixLayoutNV
+      (\(CooperativeVectorMatrixLayoutNV x) -> x)
+      (showsPrec 11)
+
+instance Read CooperativeVectorMatrixLayoutNV where
+  readPrec =
+    enumReadPrec
+      enumPrefixCooperativeVectorMatrixLayoutNV
+      showTableCooperativeVectorMatrixLayoutNV
+      conNameCooperativeVectorMatrixLayoutNV
+      CooperativeVectorMatrixLayoutNV
+
+type NV_COOPERATIVE_VECTOR_SPEC_VERSION = 4
+
+-- No documentation found for TopLevel "VK_NV_COOPERATIVE_VECTOR_SPEC_VERSION"
+pattern NV_COOPERATIVE_VECTOR_SPEC_VERSION :: forall a . Integral a => a
+pattern NV_COOPERATIVE_VECTOR_SPEC_VERSION = 4
+
+
+type NV_COOPERATIVE_VECTOR_EXTENSION_NAME = "VK_NV_cooperative_vector"
+
+-- No documentation found for TopLevel "VK_NV_COOPERATIVE_VECTOR_EXTENSION_NAME"
+pattern NV_COOPERATIVE_VECTOR_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern NV_COOPERATIVE_VECTOR_EXTENSION_NAME = "VK_NV_cooperative_vector"
+
diff --git a/src/Vulkan/Extensions/VK_NV_cooperative_vector.hs-boot b/src/Vulkan/Extensions/VK_NV_cooperative_vector.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_NV_cooperative_vector.hs-boot
@@ -0,0 +1,224 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_NV_cooperative_vector - device extension
+--
+-- = VK_NV_cooperative_vector
+--
+-- [__Name String__]
+--     @VK_NV_cooperative_vector@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     492
+--
+-- [__Revision__]
+--     4
+--
+-- [__Ratification Status__]
+--     Not ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
+--
+-- [__SPIR-V Dependencies__]
+--
+--     -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/NV/SPV_NV_cooperative_vector.html SPV_NV_cooperative_vector>
+--
+-- [__Contact__]
+--
+--     -   Jeff Bolz
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_NV_cooperative_vector] @jeffbolznv%0A*Here describe the issue or question you have about the VK_NV_cooperative_vector extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_NV_cooperative_vector.adoc VK_NV_cooperative_vector>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2024-05-23
+--
+-- [__Interactions and External Dependencies__]
+--
+--     -   This extension requires
+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/NV/SPV_NV_cooperative_vector.html SPV_NV_cooperative_vector>
+--
+--     -   This extension provides API support for
+--         <https://github.com/KhronosGroup/GLSL/blob/main/extensions/nv/GLSL_NV_cooperative_vector.txt GL_NV_cooperative_vector>
+--
+-- [__Contributors__]
+--
+--     -   Jeff Bolz, NVIDIA
+--
+-- == Description
+--
+-- This extension adds support for using cooperative vector types in
+-- SPIR-V. Unlike cooperative matrix types, a variable with a cooperative
+-- vector type is logically stored in the invocation it belongs to, but
+-- they can cooperate behind the scenes when performing matrix-vector
+-- multiplies. Cooperative vectors do not require a fully occupied subgroup
+-- or uniform control flow like cooperative matrices, although these do
+-- increase the likelihood of being on the fast path. And unlike normal
+-- vector types, they have arbitrary length and support a relatively
+-- limited set of operations. These types are intended to help accelerate
+-- the evaluation of small neural networks, where each invocation is
+-- performing its own independent evaluation of the network.
+--
+-- Cooperative vector types are defined by the
+-- <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/NV/SPV_NV_cooperative_vector.html SPV_NV_cooperative_vector>
+-- SPIR-V extension and can be used with the
+-- <https://github.com/KhronosGroup/GLSL/blob/main/extensions/nv/GLSL_NV_cooperative_vector.txt GL_NV_cooperative_vector>
+-- GLSL extension.
+--
+-- This extension includes support for enumerating the combinations of
+-- types that are supported by the implementation, and for converting
+-- matrix data to and from an optimized opaque layout.
+--
+-- == New Commands
+--
+-- -   'cmdConvertCooperativeVectorMatrixNV'
+--
+-- -   'convertCooperativeVectorMatrixNV'
+--
+-- -   'getPhysicalDeviceCooperativeVectorPropertiesNV'
+--
+-- == New Structures
+--
+-- -   'ConvertCooperativeVectorMatrixInfoNV'
+--
+-- -   'CooperativeVectorPropertiesNV'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceCooperativeVectorFeaturesNV'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDeviceCooperativeVectorPropertiesNV'
+--
+-- == New Unions
+--
+-- -   'Vulkan.Extensions.VK_KHR_acceleration_structure.DeviceOrHostAddressConstKHR'
+--
+-- -   'Vulkan.Extensions.VK_KHR_acceleration_structure.DeviceOrHostAddressKHR'
+--
+-- == New Enums
+--
+-- -   'ComponentTypeKHR'
+--
+-- -   'CooperativeVectorMatrixLayoutNV'
+--
+-- == New Enum Constants
+--
+-- -   'NV_COOPERATIVE_VECTOR_EXTENSION_NAME'
+--
+-- -   'NV_COOPERATIVE_VECTOR_SPEC_VERSION'
+--
+-- -   Extending 'ComponentTypeKHR':
+--
+--     -   'COMPONENT_TYPE_FLOAT_E4M3_NV'
+--
+--     -   'COMPONENT_TYPE_FLOAT_E5M2_NV'
+--
+--     -   'COMPONENT_TYPE_SINT8_PACKED_NV'
+--
+--     -   'COMPONENT_TYPE_UINT8_PACKED_NV'
+--
+-- -   Extending
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlagBits2':
+--
+--     -   'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CONVERT_COOPERATIVE_VECTOR_MATRIX_BIT_NV'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_CONVERT_COOPERATIVE_VECTOR_MATRIX_INFO_NV'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COOPERATIVE_VECTOR_PROPERTIES_NV'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_VECTOR_FEATURES_NV'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_VECTOR_PROPERTIES_NV'
+--
+-- == New SPIR-V Capabilities
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-CooperativeVectorNV CooperativeVectorNV>
+--
+-- == Version History
+--
+-- -   Revision 4, 2024-05-23 (Jeff Bolz)
+--
+--     -   Add maxCooperativeVectorComponents
+--
+-- -   Revision 3, 2024-05-23 (Jeff Bolz)
+--
+--     -   Add training functions
+--
+-- -   Revision 2, 2024-02-10 (Jeff Bolz)
+--
+--     -   Add device-side matrix conversion
+--
+-- -   Revision 1, 2023-12-13 (Jeff Bolz)
+--
+--     -   Initial revisions
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_NV_cooperative_vector Vulkan Specification>.
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_NV_cooperative_vector  ( ConvertCooperativeVectorMatrixInfoNV
+                                                   , CooperativeVectorPropertiesNV
+                                                   , PhysicalDeviceCooperativeVectorFeaturesNV
+                                                   , PhysicalDeviceCooperativeVectorPropertiesNV
+                                                   , ComponentTypeKHR
+                                                   ) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data ConvertCooperativeVectorMatrixInfoNV
+
+instance ToCStruct ConvertCooperativeVectorMatrixInfoNV
+instance Show ConvertCooperativeVectorMatrixInfoNV
+
+
+data CooperativeVectorPropertiesNV
+
+instance ToCStruct CooperativeVectorPropertiesNV
+instance Show CooperativeVectorPropertiesNV
+
+instance FromCStruct CooperativeVectorPropertiesNV
+
+
+data PhysicalDeviceCooperativeVectorFeaturesNV
+
+instance ToCStruct PhysicalDeviceCooperativeVectorFeaturesNV
+instance Show PhysicalDeviceCooperativeVectorFeaturesNV
+
+instance FromCStruct PhysicalDeviceCooperativeVectorFeaturesNV
+
+
+data PhysicalDeviceCooperativeVectorPropertiesNV
+
+instance ToCStruct PhysicalDeviceCooperativeVectorPropertiesNV
+instance Show PhysicalDeviceCooperativeVectorPropertiesNV
+
+instance FromCStruct PhysicalDeviceCooperativeVectorPropertiesNV
+
+
+data ComponentTypeKHR
+
diff --git a/src/Vulkan/Extensions/VK_NV_copy_memory_indirect.hs b/src/Vulkan/Extensions/VK_NV_copy_memory_indirect.hs
--- a/src/Vulkan/Extensions/VK_NV_copy_memory_indirect.hs
+++ b/src/Vulkan/Extensions/VK_NV_copy_memory_indirect.hs
@@ -32,6 +32,12 @@
 --     or
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.2 Vulkan Version 1.2>
 --
+-- [__Deprecation State__]
+--
+--     -   /Promoted/ to
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_copy_memory_indirect VK_KHR_copy_memory_indirect>
+--         extension
+--
 -- [__Contact__]
 --
 --     -   Vikram Kushwaha
@@ -93,7 +99,7 @@
 --
 --     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV'
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_NV'
+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_NV'
 --
 -- == Version History
 --
@@ -108,20 +114,24 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_copy_memory_indirect Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_NV_copy_memory_indirect Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
 module Vulkan.Extensions.VK_NV_copy_memory_indirect  ( cmdCopyMemoryIndirectNV
                                                      , cmdCopyMemoryToImageIndirectNV
-                                                     , CopyMemoryIndirectCommandNV(..)
-                                                     , CopyMemoryToImageIndirectCommandNV(..)
+                                                     , pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_NV
                                                      , PhysicalDeviceCopyMemoryIndirectFeaturesNV(..)
-                                                     , PhysicalDeviceCopyMemoryIndirectPropertiesNV(..)
+                                                     , CopyMemoryIndirectCommandNV
+                                                     , CopyMemoryToImageIndirectCommandNV
+                                                     , PhysicalDeviceCopyMemoryIndirectPropertiesNV
                                                      , NV_COPY_MEMORY_INDIRECT_SPEC_VERSION
                                                      , pattern NV_COPY_MEMORY_INDIRECT_SPEC_VERSION
                                                      , NV_COPY_MEMORY_INDIRECT_EXTENSION_NAME
                                                      , pattern NV_COPY_MEMORY_INDIRECT_EXTENSION_NAME
+                                                     , CopyMemoryIndirectCommandKHR(..)
+                                                     , CopyMemoryToImageIndirectCommandKHR(..)
+                                                     , PhysicalDeviceCopyMemoryIndirectPropertiesKHR(..)
                                                      ) where
 
 import Vulkan.Internal.Utils (traceAroundEvent)
@@ -165,21 +175,23 @@
 import Vulkan.Core10.Handles (CommandBuffer(..))
 import Vulkan.Core10.Handles (CommandBuffer(CommandBuffer))
 import Vulkan.Core10.Handles (CommandBuffer_T)
+import Vulkan.Extensions.VK_KHR_copy_memory_indirect (CopyMemoryIndirectCommandKHR)
+import Vulkan.Extensions.VK_KHR_copy_memory_indirect (CopyMemoryToImageIndirectCommandKHR)
 import Vulkan.Core10.FundamentalTypes (DeviceAddress)
 import Vulkan.Dynamic (DeviceCmds(pVkCmdCopyMemoryIndirectNV))
 import Vulkan.Dynamic (DeviceCmds(pVkCmdCopyMemoryToImageIndirectNV))
-import Vulkan.Core10.FundamentalTypes (DeviceSize)
-import Vulkan.Core10.FundamentalTypes (Extent3D)
 import Vulkan.Core10.Handles (Image)
 import Vulkan.Core10.Handles (Image(..))
 import Vulkan.Core10.Enums.ImageLayout (ImageLayout)
 import Vulkan.Core10.Enums.ImageLayout (ImageLayout(..))
 import Vulkan.Core10.CommandBufferBuilding (ImageSubresourceLayers)
-import Vulkan.Core10.FundamentalTypes (Offset3D)
-import Vulkan.Core10.Enums.QueueFlagBits (QueueFlags)
+import Vulkan.Extensions.VK_KHR_copy_memory_indirect (PhysicalDeviceCopyMemoryIndirectPropertiesKHR)
 import Vulkan.Core10.Enums.StructureType (StructureType)
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_NV))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_KHR))
+import Vulkan.Extensions.VK_KHR_copy_memory_indirect (CopyMemoryIndirectCommandKHR(..))
+import Vulkan.Extensions.VK_KHR_copy_memory_indirect (CopyMemoryToImageIndirectCommandKHR(..))
+import Vulkan.Extensions.VK_KHR_copy_memory_indirect (PhysicalDeviceCopyMemoryIndirectPropertiesKHR(..))
 foreign import ccall
 #if !defined(SAFE_FOREIGN_CALLS)
   unsafe
@@ -198,7 +210,7 @@
 -- == Valid Usage
 --
 -- -   #VUID-vkCmdCopyMemoryIndirectNV-None-07653# The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-indirectCopy indirectCopy>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-indirectCopy indirectCopy>
 --     feature /must/ be enabled
 --
 -- -   #VUID-vkCmdCopyMemoryIndirectNV-copyBufferAddress-07654#
@@ -210,27 +222,42 @@
 --
 -- -   #VUID-vkCmdCopyMemoryIndirectNV-commandBuffer-07656# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support at least one of the
---     'PhysicalDeviceCopyMemoryIndirectPropertiesNV'::@supportedQueues@
+--     allocated from /must/ support at least one of the queue types
+--     specified in
+--     'Vulkan.Extensions.VK_KHR_copy_memory_indirect.PhysicalDeviceCopyMemoryIndirectPropertiesKHR'::@supportedQueues@
 --
+-- -   #VUID-vkCmdCopyMemoryIndirectNV-copyBufferAddress-10946# Any of the
+--     source or destination memory regions specified in
+--     @copyBufferAddress@ /must/ not overlap with any of the specified
+--     destination memory regions
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-vkCmdCopyMemoryIndirectNV-commandBuffer-parameter#
 --     @commandBuffer@ /must/ be a valid
 --     'Vulkan.Core10.Handles.CommandBuffer' handle
 --
+-- -   #VUID-vkCmdCopyMemoryIndirectNV-copyBufferAddress-parameter#
+--     @copyBufferAddress@ /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' value
+--
 -- -   #VUID-vkCmdCopyMemoryIndirectNV-commandBuffer-recording#
 --     @commandBuffer@ /must/ be in the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>
 --
 -- -   #VUID-vkCmdCopyMemoryIndirectNV-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support transfer, graphics, or compute
---     operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT',
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT', or
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_TRANSFER_BIT' operations
 --
 -- -   #VUID-vkCmdCopyMemoryIndirectNV-renderpass# This command /must/ only
 --     be called outside of a render pass instance
 --
+-- -   #VUID-vkCmdCopyMemoryIndirectNV-suspended# This command /must/ not
+--     be called between suspended render pass instances
+--
 -- -   #VUID-vkCmdCopyMemoryIndirectNV-videocoding# This command /must/
 --     only be called outside of a video coding scope
 --
@@ -248,11 +275,16 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | Transfer                                                                                                              | Action                                                                                                                                 |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | Graphics                                                                                                              |                                                                                                                                        |
--- |                                                                                                                            |                                                                                                                        |                                                                                                                             | Compute                                                                                                               |                                                                                                                                        |
+-- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | VK_QUEUE_GRAPHICS_BIT                                                                                                 |                                                                                                                                        |
+-- |                                                                                                                            |                                                                                                                        |                                                                                                                             | VK_QUEUE_TRANSFER_BIT                                                                                                 |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdCopyMemoryIndirectNV is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_copy_memory_indirect VK_NV_copy_memory_indirect>,
@@ -263,11 +295,11 @@
                         => -- | @commandBuffer@ is the command buffer into which the command will be
                            -- recorded.
                            CommandBuffer
-                        -> -- | @copyBufferAddress@ is the buffer address specifying the copy
-                           -- parameters. This buffer is laid out in memory as an array of
-                           -- 'CopyMemoryIndirectCommandNV' structures.
+                        -> -- | @copyBufferAddress@ is the memory address specifying the copy
+                           -- parameters. It is laid out as an array of 'CopyMemoryIndirectCommandNV'
+                           -- structures.
                            ("copyBufferAddress" ::: DeviceAddress)
-                        -> -- | @copyCount@ is the number of copies to execute, and can be zero.
+                        -> -- | @copyCount@ is the number of copies to execute, and /can/ be zero.
                            ("copyCount" ::: Word32)
                         -> -- | @stride@ is the stride in bytes between successive sets of copy
                            -- parameters.
@@ -296,8 +328,8 @@
   "dynamic" mkVkCmdCopyMemoryToImageIndirectNV
   :: FunPtr (Ptr CommandBuffer_T -> DeviceAddress -> Word32 -> Word32 -> Image -> ImageLayout -> Ptr ImageSubresourceLayers -> IO ()) -> Ptr CommandBuffer_T -> DeviceAddress -> Word32 -> Word32 -> Image -> ImageLayout -> Ptr ImageSubresourceLayers -> IO ()
 
--- | vkCmdCopyMemoryToImageIndirectNV - Copy data from a memory region into
--- an image
+-- | vkCmdCopyMemoryToImageIndirectNV - Copy data from a memory region to an
+-- image object
 --
 -- = Description
 --
@@ -306,16 +338,27 @@
 -- image is of type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', the
 -- starting slice and number of slices to copy are specified in
 -- @pImageSubresources->baseArrayLayer@ and
--- @pImageSubresources->layerCount@ respectively. The copy /must/ be
--- performed on a queue that supports indirect copy operations, see
--- 'PhysicalDeviceCopyMemoryIndirectPropertiesNV'.
+-- @pImageSubresources->layerCount@ respectively.
 --
 -- == Valid Usage
 --
 -- -   #VUID-vkCmdCopyMemoryToImageIndirectNV-None-07660# The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-indirectCopy indirectCopy>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-indirectCopy indirectCopy>
 --     feature /must/ be enabled
 --
+-- -   #VUID-vkCmdCopyMemoryToImageIndirectNV-offset-07676#
+--     @copyBufferAddress@ /must/ be 4 byte aligned
+--
+-- -   #VUID-vkCmdCopyMemoryToImageIndirectNV-stride-07677# @stride@ /must/
+--     be a multiple of @4@ and /must/ be greater than or equal to
+--     sizeof('CopyMemoryToImageIndirectCommandNV')
+--
+-- -   #VUID-vkCmdCopyMemoryToImageIndirectNV-commandBuffer-10956# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support at least one of the queue types
+--     specified in
+--     'Vulkan.Extensions.VK_KHR_copy_memory_indirect.PhysicalDeviceCopyMemoryIndirectPropertiesKHR'::@supportedQueues@
+--
 -- -   #VUID-vkCmdCopyMemoryToImageIndirectNV-dstImage-07661# @dstImage@
 --     /must/ not be a protected image
 --
@@ -323,18 +366,19 @@
 --     @aspectMask@ member for every subresource in @pImageSubresources@
 --     /must/ only have a single bit set
 --
--- -   #VUID-vkCmdCopyMemoryToImageIndirectNV-dstImage-07663# The image
---     region specified by each element in @copyBufferAddress@ /must/ be a
---     region that is contained within @dstImage@
+-- -   #VUID-vkCmdCopyMemoryToImageIndirectNV-aspectMask-12287# The
+--     @aspectMask@ member for every subresource in @pImageSubresources@
+--     /must/ specify an aspect present in @dstImage@
 --
 -- -   #VUID-vkCmdCopyMemoryToImageIndirectNV-dstImage-07664# @dstImage@
---     /must/ have been created with
+--     /must/ have been created with the
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'
---     usage flag
+--     usage flag set
 --
 -- -   #VUID-vkCmdCopyMemoryToImageIndirectNV-dstImage-07665# If @dstImage@
---     is non-sparse then it /must/ be bound completely and contiguously to
---     a single 'Vulkan.Core10.Handles.DeviceMemory' object
+--     is non-sparse then the image or each specified /disjoint/ plane
+--     /must/ be bound completely and contiguously to a single
+--     'Vulkan.Core10.Handles.DeviceMemory' object
 --
 -- -   #VUID-vkCmdCopyMemoryToImageIndirectNV-dstImage-07973# @dstImage@
 --     /must/ have a sample count equal to
@@ -352,23 +396,50 @@
 --     or 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL'
 --
 -- -   #VUID-vkCmdCopyMemoryToImageIndirectNV-mipLevel-07670# The specified
---     @mipLevel@ of each region /must/ be less than the @mipLevels@
---     specified in 'Vulkan.Core10.Image.ImageCreateInfo' when @dstImage@
---     was created
---
--- -   #VUID-vkCmdCopyMemoryToImageIndirectNV-layerCount-08764# If
---     @layerCount@ is not
---     'Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS', the specified
---     @baseArrayLayer@ + @layerCount@ of each region /must/ be less than
---     or equal to the @arrayLayers@ specified in
+--     @mipLevel@ of each region in @pImageSubresources@ /must/ be less
+--     than the @mipLevels@ specified in
 --     'Vulkan.Core10.Image.ImageCreateInfo' when @dstImage@ was created
 --
--- -   #VUID-vkCmdCopyMemoryToImageIndirectNV-imageOffset-07672# The
---     @imageOffset@ and @imageExtent@ members of each region /must/
---     respect the image transfer granularity requirements of
---     @commandBuffer@’s command pool’s queue family, as described in
---     'Vulkan.Core10.DeviceInitialization.QueueFamilyProperties'
+-- -   #VUID-vkCmdCopyMemoryToImageIndirectNV-dstImage-12288# If @dstImage@
+--     is not of type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', and
+--     the specified @layerCount@ of each region in @pImageSubresources@ is
+--     not 'Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS', the
+--     specified @baseArrayLayer@ + @layerCount@ of each region in
+--     @pImageSubresources@ /must/ be less than or equal to the
+--     @arrayLayers@ specified in 'Vulkan.Core10.Image.ImageCreateInfo'
+--     when @dstImage@ was created
 --
+-- -   #VUID-vkCmdCopyMemoryToImageIndirectNV-dstImage-12289# If @dstImage@
+--     is of type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', and the
+--     specified @layerCount@ of each region in @pImageSubresources@ is not
+--     'Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS', for each
+--     destination region, (@imageSubresource.baseArrayLayer@ +
+--     @imageSubresource.layerCount@) /must/ be less than or equal to the
+--     depth of the specified subresource
+--
+-- -   #VUID-vkCmdCopyMemoryToImageIndirectNV-dstImage-12290# If @dstImage@
+--     is of type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', and the
+--     specified @layerCount@ of each region in @pImageSubresources@ is not
+--     'Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS', for each
+--     destination region, if (@imageSubresource.baseArrayLayer@ +
+--     @imageSubresource.layerCount@) does not equal the depth of the
+--     specified subresource, @imageSubresource.layerCount@ /must/ be a
+--     multiple of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent depth>
+--     of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@
+--
+-- -   #VUID-vkCmdCopyMemoryToImageIndirectNV-dstImage-12291# If @dstImage@
+--     is of type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', for each
+--     destination region, @imageSubresource.baseArrayLayer@ /must/ be a
+--     multiple of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes texel block extent depth>
+--     of the 'Vulkan.Core10.Enums.Format.Format' of @dstImage@
+--
+-- -   #VUID-vkCmdCopyMemoryToImageIndirectNV-dstImage-12292# If @dstImage@
+--     is of type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', for each
+--     destination region, @imageSubresource.baseArrayLayer@ /must/ be less
+--     than or equal to the depth of the specified subresource
+--
 -- -   #VUID-vkCmdCopyMemoryToImageIndirectNV-dstImage-07673# @dstImage@
 --     /must/ not have been created with @flags@ containing
 --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT'
@@ -382,18 +453,15 @@
 --     or
 --     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
 --
--- -   #VUID-vkCmdCopyMemoryToImageIndirectNV-imageOffset-07675# For each
---     region in @copyBufferAddress@, @imageOffset.y@ and
---     (@imageExtent.height@ + @imageOffset.y@) /must/ both be greater than
---     or equal to @0@ and less than or equal to the height of the
---     specified subresource
---
--- -   #VUID-vkCmdCopyMemoryToImageIndirectNV-offset-07676# @offset@ /must/
---     be 4 byte aligned
+-- -   #VUID-vkCmdCopyMemoryToImageIndirectNV-dstImage-10974# The format
+--     features of @dstImage@ /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_TRANSFER_DST_BIT'
 --
--- -   #VUID-vkCmdCopyMemoryToImageIndirectNV-stride-07677# @stride@ /must/
---     be a multiple of @4@ and /must/ be greater than or equal to
---     sizeof('CopyMemoryToImageIndirectCommandNV')
+-- -   #VUID-vkCmdCopyMemoryToImageIndirectNV-copyBufferAddress-10975# Any
+--     of the source or destination memory regions specified in
+--     @copyBufferAddress@ /must/ not overlap with any of the specified
+--     destination memory regions at the time this command is executed on
+--     device
 --
 -- == Valid Usage (Implicit)
 --
@@ -401,6 +469,10 @@
 --     @commandBuffer@ /must/ be a valid
 --     'Vulkan.Core10.Handles.CommandBuffer' handle
 --
+-- -   #VUID-vkCmdCopyMemoryToImageIndirectNV-copyBufferAddress-parameter#
+--     @copyBufferAddress@ /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' value
+--
 -- -   #VUID-vkCmdCopyMemoryToImageIndirectNV-dstImage-parameter#
 --     @dstImage@ /must/ be a valid 'Vulkan.Core10.Handles.Image' handle
 --
@@ -420,12 +492,17 @@
 --
 -- -   #VUID-vkCmdCopyMemoryToImageIndirectNV-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support transfer, graphics, or compute
---     operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT',
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT', or
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_TRANSFER_BIT' operations
 --
 -- -   #VUID-vkCmdCopyMemoryToImageIndirectNV-renderpass# This command
 --     /must/ only be called outside of a render pass instance
 --
+-- -   #VUID-vkCmdCopyMemoryToImageIndirectNV-suspended# This command
+--     /must/ not be called between suspended render pass instances
+--
 -- -   #VUID-vkCmdCopyMemoryToImageIndirectNV-videocoding# This command
 --     /must/ only be called outside of a video coding scope
 --
@@ -450,11 +527,16 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | Transfer                                                                                                              | Action                                                                                                                                 |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | Graphics                                                                                                              |                                                                                                                                        |
--- |                                                                                                                            |                                                                                                                        |                                                                                                                             | Compute                                                                                                               |                                                                                                                                        |
+-- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | VK_QUEUE_GRAPHICS_BIT                                                                                                 |                                                                                                                                        |
+-- |                                                                                                                            |                                                                                                                        |                                                                                                                             | VK_QUEUE_TRANSFER_BIT                                                                                                 |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdCopyMemoryToImageIndirectNV is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_copy_memory_indirect VK_NV_copy_memory_indirect>,
@@ -468,8 +550,8 @@
                                => -- | @commandBuffer@ is the command buffer into which the command will be
                                   -- recorded.
                                   CommandBuffer
-                               -> -- | @copyBufferAddress@ is the buffer address specifying the copy
-                                  -- parameters. This buffer is laid out in memory as an array of
+                               -> -- | @copyBufferAddress@ is the address specifying the copy parameters which
+                                  -- are laid out in memory as an array of
                                   -- 'CopyMemoryToImageIndirectCommandNV' structures.
                                   ("copyBufferAddress" ::: DeviceAddress)
                                -> -- | @stride@ is the byte stride between successive sets of copy parameters.
@@ -479,10 +561,10 @@
                                -> -- | @dstImageLayout@ is the layout of the destination image subresources for
                                   -- the copy.
                                   ("dstImageLayout" ::: ImageLayout)
-                               -> -- | @pImageSubresources@ is a pointer to an array of size @copyCount@ of
-                                  -- 'Vulkan.Core10.CommandBufferBuilding.ImageSubresourceLayers' used to
-                                  -- specify the specific image subresource of the destination image data for
-                                  -- that copy.
+                               -> -- | @pImageSubresources@ is a pointer to an array of @copyCount@
+                                  -- 'Vulkan.Core10.CommandBufferBuilding.ImageSubresourceLayers' structures,
+                                  -- specifying the image subresources of the destination image data for the
+                                  -- copy operation.
                                   ("imageSubresources" ::: Vector ImageSubresourceLayers)
                                -> io ()
 cmdCopyMemoryToImageIndirectNV commandBuffer
@@ -508,197 +590,8 @@
   pure $ ()
 
 
--- | VkCopyMemoryIndirectCommandNV - Structure specifying indirect memory
--- region copy operation
---
--- == Valid Usage
---
--- -   #VUID-VkCopyMemoryIndirectCommandNV-srcAddress-07657# The
---     @srcAddress@ /must/ be 4 byte aligned
---
--- -   #VUID-VkCopyMemoryIndirectCommandNV-dstAddress-07658# The
---     @dstAddress@ /must/ be 4 byte aligned
---
--- -   #VUID-VkCopyMemoryIndirectCommandNV-size-07659# The @size@ /must/ be
---     4 byte aligned
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_copy_memory_indirect VK_NV_copy_memory_indirect>,
--- 'Vulkan.Core10.FundamentalTypes.DeviceAddress',
--- 'Vulkan.Core10.FundamentalTypes.DeviceSize'
-data CopyMemoryIndirectCommandNV = CopyMemoryIndirectCommandNV
-  { -- | @srcAddress@ is the starting address of the source device memory to copy
-    -- from.
-    srcAddress :: DeviceAddress
-  , -- | @dstAddress@ is the starting address of the destination device memory to
-    -- copy to.
-    dstAddress :: DeviceAddress
-  , -- | @size@ is the size of the copy in bytes.
-    size :: DeviceSize
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (CopyMemoryIndirectCommandNV)
-#endif
-deriving instance Show CopyMemoryIndirectCommandNV
-
-instance ToCStruct CopyMemoryIndirectCommandNV where
-  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p CopyMemoryIndirectCommandNV{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr DeviceAddress)) (srcAddress)
-    poke ((p `plusPtr` 8 :: Ptr DeviceAddress)) (dstAddress)
-    poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (size)
-    f
-  cStructSize = 24
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr DeviceAddress)) (zero)
-    poke ((p `plusPtr` 8 :: Ptr DeviceAddress)) (zero)
-    poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (zero)
-    f
-
-instance FromCStruct CopyMemoryIndirectCommandNV where
-  peekCStruct p = do
-    srcAddress <- peek @DeviceAddress ((p `plusPtr` 0 :: Ptr DeviceAddress))
-    dstAddress <- peek @DeviceAddress ((p `plusPtr` 8 :: Ptr DeviceAddress))
-    size <- peek @DeviceSize ((p `plusPtr` 16 :: Ptr DeviceSize))
-    pure $ CopyMemoryIndirectCommandNV
-             srcAddress dstAddress size
-
-instance Storable CopyMemoryIndirectCommandNV where
-  sizeOf ~_ = 24
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero CopyMemoryIndirectCommandNV where
-  zero = CopyMemoryIndirectCommandNV
-           zero
-           zero
-           zero
-
-
--- | VkCopyMemoryToImageIndirectCommandNV - Structure specifying indirect
--- buffer image copy operation
---
--- == Valid Usage
---
--- -   #VUID-VkCopyMemoryToImageIndirectCommandNV-srcAddress-07678# The
---     @srcAddress@ /must/ be 4 byte aligned
---
--- -   #VUID-VkCopyMemoryToImageIndirectCommandNV-bufferRowLength-07679#
---     @bufferRowLength@ /must/ be @0@, or greater than or equal to the
---     @width@ member of @imageExtent@
---
--- -   #VUID-VkCopyMemoryToImageIndirectCommandNV-bufferImageHeight-07680#
---     @bufferImageHeight@ /must/ be @0@, or greater than or equal to the
---     @height@ member of @imageExtent@
---
--- -   #VUID-VkCopyMemoryToImageIndirectCommandNV-imageOffset-07681#
---     @imageOffset@ /must/ specify a valid offset in the destination image
---
--- -   #VUID-VkCopyMemoryToImageIndirectCommandNV-imageExtent-07682#
---     @imageExtent@ /must/ specify a valid region in the destination image
---     and can be @0@
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkCopyMemoryToImageIndirectCommandNV-imageSubresource-parameter#
---     @imageSubresource@ /must/ be a valid
---     'Vulkan.Core10.CommandBufferBuilding.ImageSubresourceLayers'
---     structure
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_copy_memory_indirect VK_NV_copy_memory_indirect>,
--- 'Vulkan.Core10.FundamentalTypes.DeviceAddress',
--- 'Vulkan.Core10.FundamentalTypes.Extent3D',
--- 'Vulkan.Core10.CommandBufferBuilding.ImageSubresourceLayers',
--- 'Vulkan.Core10.FundamentalTypes.Offset3D'
-data CopyMemoryToImageIndirectCommandNV = CopyMemoryToImageIndirectCommandNV
-  { -- | @srcAddress@ is the starting address of the source device memory to copy
-    -- from.
-    srcAddress :: DeviceAddress
-  , -- | @bufferRowLength@ and @bufferImageHeight@ specify in texels a subregion
-    -- of a larger two- or three-dimensional image in buffer memory, and
-    -- control the addressing calculations. If either of these values is zero,
-    -- that aspect of the buffer memory is considered to be tightly packed
-    -- according to the @imageExtent@.
-    bufferRowLength :: Word32
-  , -- No documentation found for Nested "VkCopyMemoryToImageIndirectCommandNV" "bufferImageHeight"
-    bufferImageHeight :: Word32
-  , -- | @imageSubresource@ is a
-    -- 'Vulkan.Core10.CommandBufferBuilding.ImageSubresourceLayers' used to
-    -- specify the specific image subresources of the image used for the
-    -- destination image data, which /must/ match the values specified in
-    -- @pImageSubresources@ parameter of 'cmdCopyMemoryToImageIndirectNV'
-    -- during command recording.
-    imageSubresource :: ImageSubresourceLayers
-  , -- | @imageOffset@ selects the initial @x@, @y@, @z@ offsets in texels of the
-    -- sub-region of the destination image data.
-    imageOffset :: Offset3D
-  , -- | @imageExtent@ is the size in texels of the destination image in @width@,
-    -- @height@ and @depth@.
-    imageExtent :: Extent3D
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (CopyMemoryToImageIndirectCommandNV)
-#endif
-deriving instance Show CopyMemoryToImageIndirectCommandNV
-
-instance ToCStruct CopyMemoryToImageIndirectCommandNV where
-  withCStruct x f = allocaBytes 56 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p CopyMemoryToImageIndirectCommandNV{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr DeviceAddress)) (srcAddress)
-    poke ((p `plusPtr` 8 :: Ptr Word32)) (bufferRowLength)
-    poke ((p `plusPtr` 12 :: Ptr Word32)) (bufferImageHeight)
-    poke ((p `plusPtr` 16 :: Ptr ImageSubresourceLayers)) (imageSubresource)
-    poke ((p `plusPtr` 32 :: Ptr Offset3D)) (imageOffset)
-    poke ((p `plusPtr` 44 :: Ptr Extent3D)) (imageExtent)
-    f
-  cStructSize = 56
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr DeviceAddress)) (zero)
-    poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 12 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 16 :: Ptr ImageSubresourceLayers)) (zero)
-    poke ((p `plusPtr` 32 :: Ptr Offset3D)) (zero)
-    poke ((p `plusPtr` 44 :: Ptr Extent3D)) (zero)
-    f
-
-instance FromCStruct CopyMemoryToImageIndirectCommandNV where
-  peekCStruct p = do
-    srcAddress <- peek @DeviceAddress ((p `plusPtr` 0 :: Ptr DeviceAddress))
-    bufferRowLength <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))
-    bufferImageHeight <- peek @Word32 ((p `plusPtr` 12 :: Ptr Word32))
-    imageSubresource <- peekCStruct @ImageSubresourceLayers ((p `plusPtr` 16 :: Ptr ImageSubresourceLayers))
-    imageOffset <- peekCStruct @Offset3D ((p `plusPtr` 32 :: Ptr Offset3D))
-    imageExtent <- peekCStruct @Extent3D ((p `plusPtr` 44 :: Ptr Extent3D))
-    pure $ CopyMemoryToImageIndirectCommandNV
-             srcAddress
-             bufferRowLength
-             bufferImageHeight
-             imageSubresource
-             imageOffset
-             imageExtent
-
-instance Storable CopyMemoryToImageIndirectCommandNV where
-  sizeOf ~_ = 56
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero CopyMemoryToImageIndirectCommandNV where
-  zero = CopyMemoryToImageIndirectCommandNV
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_NV"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_NV = STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_KHR
 
 
 -- | VkPhysicalDeviceCopyMemoryIndirectFeaturesNV - Structure describing
@@ -716,12 +609,22 @@
 -- structure passed to
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
 -- it is filled in to indicate whether each corresponding feature is
--- supported. 'PhysicalDeviceCopyMemoryIndirectFeaturesNV' /can/ also be
--- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceCopyMemoryIndirectFeaturesNV', it /must/ add an instance
+-- of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_copy_memory_indirect VK_NV_copy_memory_indirect>,
@@ -729,7 +632,7 @@
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceCopyMemoryIndirectFeaturesNV = PhysicalDeviceCopyMemoryIndirectFeaturesNV
   { -- | #features-indirectCopy# @indirectCopy@ indicates whether
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#indirect-copies indirect copies>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#indirect-copies indirect memory to memory or, memory to image copies>
     -- are supported.
     indirectCopy :: Bool }
   deriving (Typeable, Eq)
@@ -770,74 +673,16 @@
            zero
 
 
--- | VkPhysicalDeviceCopyMemoryIndirectPropertiesNV - Structure describing
--- supported queues for indirect copy
---
--- = Description
---
--- If the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-indirectCopy indirectCopy>
--- feature is supported, @supportedQueues@ /must/ return at least one
--- supported queue.
---
--- If the 'PhysicalDeviceCopyMemoryIndirectPropertiesNV' structure is
--- included in the @pNext@ chain of the
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
--- structure passed to
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceProperties2',
--- it is filled in with each corresponding implementation-dependent
--- property.
---
--- == Valid Usage (Implicit)
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_copy_memory_indirect VK_NV_copy_memory_indirect>,
--- 'Vulkan.Core10.Enums.QueueFlagBits.QueueFlags',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PhysicalDeviceCopyMemoryIndirectPropertiesNV = PhysicalDeviceCopyMemoryIndirectPropertiesNV
-  { -- | @supportedQueues@ is a bitmask of
-    -- 'Vulkan.Core10.Enums.QueueFlagBits.QueueFlagBits' indicating the queues
-    -- on which
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#indirect-copies indirect copy commands>
-    -- are supported.
-    supportedQueues :: QueueFlags }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PhysicalDeviceCopyMemoryIndirectPropertiesNV)
-#endif
-deriving instance Show PhysicalDeviceCopyMemoryIndirectPropertiesNV
+-- No documentation found for TopLevel "VkCopyMemoryIndirectCommandNV"
+type CopyMemoryIndirectCommandNV = CopyMemoryIndirectCommandKHR
 
-instance ToCStruct PhysicalDeviceCopyMemoryIndirectPropertiesNV where
-  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PhysicalDeviceCopyMemoryIndirectPropertiesNV{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_NV)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr QueueFlags)) (supportedQueues)
-    f
-  cStructSize = 24
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_NV)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr QueueFlags)) (zero)
-    f
 
-instance FromCStruct PhysicalDeviceCopyMemoryIndirectPropertiesNV where
-  peekCStruct p = do
-    supportedQueues <- peek @QueueFlags ((p `plusPtr` 16 :: Ptr QueueFlags))
-    pure $ PhysicalDeviceCopyMemoryIndirectPropertiesNV
-             supportedQueues
+-- No documentation found for TopLevel "VkCopyMemoryToImageIndirectCommandNV"
+type CopyMemoryToImageIndirectCommandNV = CopyMemoryToImageIndirectCommandKHR
 
-instance Storable PhysicalDeviceCopyMemoryIndirectPropertiesNV where
-  sizeOf ~_ = 24
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
 
-instance Zero PhysicalDeviceCopyMemoryIndirectPropertiesNV where
-  zero = PhysicalDeviceCopyMemoryIndirectPropertiesNV
-           zero
+-- No documentation found for TopLevel "VkPhysicalDeviceCopyMemoryIndirectPropertiesNV"
+type PhysicalDeviceCopyMemoryIndirectPropertiesNV = PhysicalDeviceCopyMemoryIndirectPropertiesKHR
 
 
 type NV_COPY_MEMORY_INDIRECT_SPEC_VERSION = 1
diff --git a/src/Vulkan/Extensions/VK_NV_copy_memory_indirect.hs-boot b/src/Vulkan/Extensions/VK_NV_copy_memory_indirect.hs-boot
--- a/src/Vulkan/Extensions/VK_NV_copy_memory_indirect.hs-boot
+++ b/src/Vulkan/Extensions/VK_NV_copy_memory_indirect.hs-boot
@@ -32,6 +32,12 @@
 --     or
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.2 Vulkan Version 1.2>
 --
+-- [__Deprecation State__]
+--
+--     -   /Promoted/ to
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_copy_memory_indirect VK_KHR_copy_memory_indirect>
+--         extension
+--
 -- [__Contact__]
 --
 --     -   Vikram Kushwaha
@@ -93,7 +99,7 @@
 --
 --     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV'
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_NV'
+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_NV'
 --
 -- == Version History
 --
@@ -108,48 +114,20 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_copy_memory_indirect Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_NV_copy_memory_indirect Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
-module Vulkan.Extensions.VK_NV_copy_memory_indirect  ( CopyMemoryIndirectCommandNV
-                                                     , CopyMemoryToImageIndirectCommandNV
-                                                     , PhysicalDeviceCopyMemoryIndirectFeaturesNV
-                                                     , PhysicalDeviceCopyMemoryIndirectPropertiesNV
-                                                     ) where
+module Vulkan.Extensions.VK_NV_copy_memory_indirect  (PhysicalDeviceCopyMemoryIndirectFeaturesNV) where
 
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (ToCStruct)
 import Data.Kind (Type)
 
-data CopyMemoryIndirectCommandNV
-
-instance ToCStruct CopyMemoryIndirectCommandNV
-instance Show CopyMemoryIndirectCommandNV
-
-instance FromCStruct CopyMemoryIndirectCommandNV
-
-
-data CopyMemoryToImageIndirectCommandNV
-
-instance ToCStruct CopyMemoryToImageIndirectCommandNV
-instance Show CopyMemoryToImageIndirectCommandNV
-
-instance FromCStruct CopyMemoryToImageIndirectCommandNV
-
-
 data PhysicalDeviceCopyMemoryIndirectFeaturesNV
 
 instance ToCStruct PhysicalDeviceCopyMemoryIndirectFeaturesNV
 instance Show PhysicalDeviceCopyMemoryIndirectFeaturesNV
 
 instance FromCStruct PhysicalDeviceCopyMemoryIndirectFeaturesNV
-
-
-data PhysicalDeviceCopyMemoryIndirectPropertiesNV
-
-instance ToCStruct PhysicalDeviceCopyMemoryIndirectPropertiesNV
-instance Show PhysicalDeviceCopyMemoryIndirectPropertiesNV
-
-instance FromCStruct PhysicalDeviceCopyMemoryIndirectPropertiesNV
 
diff --git a/src/Vulkan/Extensions/VK_NV_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
@@ -50,24 +50,24 @@
 -- differs from a conventional image in the following ways:
 --
 -- -   Texels are centered on integer coordinates. See
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#textures-unnormalized-to-integer Unnormalized Texel Coordinate Operations>
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#textures-normalized-to-unnormalized normalized texel coordinate transform>.
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#textures-scale-factor Scale Factor Operation>.
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-mip-level-sizing Image Mip Level Sizing>.
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-image-mip-level-sizing Image Mip Level Sizing>.
 --
 -- -   The minimum level size is 2x2 for 2D images and 2x2x2 for 3D images.
 --     See
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-mip-level-sizing Image Mip Level Sizing>.
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-image-mip-level-sizing Image Mip Level Sizing>.
 --
 -- This image organization is designed to facilitate a system like Ptex
 -- with separate textures for each face of a subdivision or polygon mesh.
@@ -131,7 +131,7 @@
 -- 5.  Should we have a diagram in the “Image Operations” chapter
 --     demonstrating different texel sampling locations?
 --
---     __UNRESOLVED__: Probably, but later.
+--     __RESOLVED__: Maybe later.
 --
 -- == Version History
 --
@@ -150,7 +150,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_corner_sampled_image Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -198,12 +198,22 @@
 -- structure passed to
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
 -- it is filled in to indicate whether each corresponding feature is
--- supported. 'PhysicalDeviceCornerSampledImageFeaturesNV' /can/ also be
--- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceCornerSampledImageFeaturesNV', it /must/ add an instance
+-- of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_corner_sampled_image VK_NV_corner_sampled_image>,
@@ -215,7 +225,7 @@
     -- 'Vulkan.Core10.Image.ImageCreateInfo'::@flags@ containing
     -- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_CORNER_SAMPLED_BIT_NV'.
     -- See
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-images-corner-sampled Corner-Sampled Images>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -50,24 +50,24 @@
 -- differs from a conventional image in the following ways:
 --
 -- -   Texels are centered on integer coordinates. See
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#textures-unnormalized-to-integer Unnormalized Texel Coordinate Operations>
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#textures-normalized-to-unnormalized normalized texel coordinate transform>.
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#textures-scale-factor Scale Factor Operation>.
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-mip-level-sizing Image Mip Level Sizing>.
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-image-mip-level-sizing Image Mip Level Sizing>.
 --
 -- -   The minimum level size is 2x2 for 2D images and 2x2x2 for 3D images.
 --     See
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-mip-level-sizing Image Mip Level Sizing>.
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-image-mip-level-sizing Image Mip Level Sizing>.
 --
 -- This image organization is designed to facilitate a system like Ptex
 -- with separate textures for each face of a subdivision or polygon mesh.
@@ -131,7 +131,7 @@
 -- 5.  Should we have a diagram in the “Image Operations” chapter
 --     demonstrating different texel sampling locations?
 --
---     __UNRESOLVED__: Probably, but later.
+--     __RESOLVED__: Maybe later.
 --
 -- == Version History
 --
@@ -150,7 +150,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_corner_sampled_image Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -59,9 +59,9 @@
 --     sample in the pixel coverage is covered, the color sample is
 --     covered. This is the default mode.
 --
--- -   Truncate: When there are more raster samples (N) than color
---     samples(M), there is one to one association of the first M raster
---     samples to the M color samples; other raster samples are ignored.
+-- -   Truncate: When there are more raster samples (N) than color samples
+--     (M), there is one to one association of the first M raster samples
+--     to the M color samples; other raster samples are ignored.
 --
 -- When the number of raster samples is equal to the color samples, there
 -- is a one to one mapping between them in either of the above modes.
@@ -89,7 +89,7 @@
 --     -   'PhysicalDeviceCoverageReductionModeFeaturesNV'
 --
 -- -   Extending
---     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo':
+--     'Vulkan.Core10.GraphicsPipeline.PipelineMultisampleStateCreateInfo':
 --
 --     -   'PipelineCoverageReductionStateCreateInfoNV'
 --
@@ -128,7 +128,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_coverage_reduction_mode Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -258,16 +258,20 @@
 --
 -- [<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'
 --
+--     -   '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_DEVICE_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_coverage_reduction_mode VK_NV_coverage_reduction_mode>,
@@ -320,12 +324,22 @@
 -- structure passed to
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
 -- it is filled in to indicate whether each corresponding feature is
--- supported. 'PhysicalDeviceCoverageReductionModeFeaturesNV' /can/ also be
--- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceCoverageReductionModeFeaturesNV', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_coverage_reduction_mode VK_NV_coverage_reduction_mode>,
@@ -334,7 +348,7 @@
 data PhysicalDeviceCoverageReductionModeFeaturesNV = PhysicalDeviceCoverageReductionModeFeaturesNV
   { -- | #features-coverageReductionMode# @coverageReductionMode@ indicates
     -- whether the implementation supports coverage reduction modes. See
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-coverage-reduction Coverage Reduction>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#fragops-coverage-reduction Coverage Reduction>.
     coverageReductionMode :: Bool }
   deriving (Typeable, Eq)
 #if defined(GENERIC_INSTANCES)
@@ -408,6 +422,12 @@
 --     @coverageReductionMode@ /must/ be a valid 'CoverageReductionModeNV'
 --     value
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.GraphicsPipeline.PipelineMultisampleStateCreateInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_coverage_reduction_mode VK_NV_coverage_reduction_mode>,
@@ -588,6 +608,19 @@
 
 -- | VkCoverageReductionModeNV - Specify the coverage reduction mode
 --
+-- = Description
+--
+-- -   'COVERAGE_REDUCTION_MODE_MERGE_NV' specifies that each color sample
+--     will be associated with an implementation-dependent subset of
+--     samples in the pixel coverage. If any of those associated samples
+--     are covered, the color sample is covered.
+--
+-- -   '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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-multisampling-coverage-mask sample index>
+--     i is covered; other pixel coverage samples are discarded.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_coverage_reduction_mode VK_NV_coverage_reduction_mode>,
@@ -597,17 +630,10 @@
 newtype CoverageReductionModeNV = CoverageReductionModeNV Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'COVERAGE_REDUCTION_MODE_MERGE_NV' specifies that each color sample will
--- be associated with an implementation-dependent subset of samples in the
--- pixel coverage. If any of those associated samples are covered, the
--- color sample is covered.
+-- No documentation found for Nested "VkCoverageReductionModeNV" "VK_COVERAGE_REDUCTION_MODE_MERGE_NV"
 pattern COVERAGE_REDUCTION_MODE_MERGE_NV = CoverageReductionModeNV 0
 
--- | '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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-multisampling-coverage-mask sample index>
--- i is covered; other pixel coverage samples are discarded.
+-- No documentation found for Nested "VkCoverageReductionModeNV" "VK_COVERAGE_REDUCTION_MODE_TRUNCATE_NV"
 pattern COVERAGE_REDUCTION_MODE_TRUNCATE_NV = CoverageReductionModeNV 1
 
 {-# COMPLETE
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
@@ -59,9 +59,9 @@
 --     sample in the pixel coverage is covered, the color sample is
 --     covered. This is the default mode.
 --
--- -   Truncate: When there are more raster samples (N) than color
---     samples(M), there is one to one association of the first M raster
---     samples to the M color samples; other raster samples are ignored.
+-- -   Truncate: When there are more raster samples (N) than color samples
+--     (M), there is one to one association of the first M raster samples
+--     to the M color samples; other raster samples are ignored.
 --
 -- When the number of raster samples is equal to the color samples, there
 -- is a one to one mapping between them in either of the above modes.
@@ -89,7 +89,7 @@
 --     -   'PhysicalDeviceCoverageReductionModeFeaturesNV'
 --
 -- -   Extending
---     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo':
+--     'Vulkan.Core10.GraphicsPipeline.PipelineMultisampleStateCreateInfo':
 --
 --     -   'PipelineCoverageReductionStateCreateInfoNV'
 --
@@ -128,7 +128,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_coverage_reduction_mode Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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_cuda_kernel_launch.hs b/src/Vulkan/Extensions/VK_NV_cuda_kernel_launch.hs
--- a/src/Vulkan/Extensions/VK_NV_cuda_kernel_launch.hs
+++ b/src/Vulkan/Extensions/VK_NV_cuda_kernel_launch.hs
@@ -21,7 +21,9 @@
 --     Not ratified
 --
 -- [__Extension and Version Dependencies__]
---     None
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
 --
 --     -   __This is a /provisional/ extension and /must/ be used with
 --         caution. See the
@@ -179,7 +181,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_cuda_kernel_launch Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_NV_cuda_kernel_launch Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -322,6 +324,9 @@
 -- -   #VUID-vkCreateCudaModuleNV-pModule-parameter# @pModule@ /must/ be a
 --     valid pointer to a 'Vulkan.Extensions.Handles.CudaModuleNV' handle
 --
+-- -   #VUID-vkCreateCudaModuleNV-device-queuecount# The device /must/ have
+--     been created with at least @1@ queue
+--
 -- == Return Codes
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
@@ -334,6 +339,10 @@
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_cuda_kernel_launch VK_NV_cuda_kernel_launch>,
@@ -347,7 +356,7 @@
                    -> -- | @pCreateInfo@ is a pointer to a 'CudaModuleCreateInfoNV' structure.
                       CudaModuleCreateInfoNV
                    -> -- | @pAllocator@ controls host memory allocation as described in the
-                      -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                      -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
                       -- chapter.
                       ("allocator" ::: Maybe AllocationCallbacks)
                    -> io (CudaModuleNV)
@@ -421,6 +430,15 @@
 -- event of a new driver version or if using a different device
 -- architecture, this cache /may/ become invalid.
 --
+-- This query does not behave consistently with the behavior described in
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#fundamentals-binaryresults Opaque Binary Data Results>,
+-- for historical reasons.
+--
+-- If the amount of data available is larger than the passed @pDataSize@,
+-- the query returns a 'Vulkan.Core10.Enums.Result.INCOMPLETE' success
+-- status instead of a
+-- 'Vulkan.Core10.Enums.Result.ERROR_NOT_ENOUGH_SPACE_KHR' error status.
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-vkGetCudaModuleCacheNV-device-parameter# @device@ /must/ be a
@@ -444,14 +462,18 @@
 --
 -- [<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'
 --
+--     -   '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_INITIALIZATION_FAILED'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_cuda_kernel_launch VK_NV_cuda_kernel_launch>,
@@ -516,6 +538,9 @@
 --     be a valid pointer to a 'Vulkan.Extensions.Handles.CudaFunctionNV'
 --     handle
 --
+-- -   #VUID-vkCreateCudaFunctionNV-device-queuecount# The device /must/
+--     have been created with at least @1@ queue
+--
 -- == Return Codes
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
@@ -528,6 +553,10 @@
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_cuda_kernel_launch VK_NV_cuda_kernel_launch>,
@@ -541,7 +570,7 @@
                      -> -- | @pCreateInfo@ is a pointer to a 'CudaFunctionCreateInfoNV' structure.
                         CudaFunctionCreateInfoNV
                      -> -- | @pAllocator@ controls host memory allocation as described in the
-                        -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                        -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
                         -- chapter.
                         ("allocator" ::: Maybe AllocationCallbacks)
                      -> io (CudaFunctionNV)
@@ -614,7 +643,7 @@
                     -> -- | @module@ is the handle of the CUDA module to destroy.
                        CudaModuleNV
                     -> -- | @pAllocator@ controls host memory allocation as described in the
-                       -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                       -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
                        -- chapter.
                        ("allocator" ::: Maybe AllocationCallbacks)
                     -> io ()
@@ -670,7 +699,7 @@
                       -> -- | @function@ is the handle of the CUDA function to destroy.
                          CudaFunctionNV
                       -> -- | @pAllocator@ controls host memory allocation as described in the
-                         -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                         -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
                          -- chapter.
                          ("allocator" ::: Maybe AllocationCallbacks)
                       -> io ()
@@ -718,8 +747,13 @@
 --
 -- -   #VUID-vkCmdCudaLaunchKernelNV-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics, or compute operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', or
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
+-- -   #VUID-vkCmdCudaLaunchKernelNV-suspended# This command /must/ not be
+--     called between suspended render pass instances
+--
 -- -   #VUID-vkCmdCudaLaunchKernelNV-videocoding# This command /must/ only
 --     be called outside of a video coding scope
 --
@@ -735,10 +769,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | Action                                                                                                                                 |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | Compute                                                                                                               |                                                                                                                                        |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | VK_QUEUE_GRAPHICS_BIT                                                                                                 |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdCudaLaunchKernelNV is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_cuda_kernel_launch VK_NV_cuda_kernel_launch>,
@@ -1074,12 +1113,22 @@
 -- 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. 'PhysicalDeviceCudaKernelLaunchFeaturesNV' /can/ also be used
--- in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceCudaKernelLaunchFeaturesNV', it /must/ add an instance of
+-- the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_cuda_kernel_launch VK_NV_cuda_kernel_launch>,
@@ -1145,7 +1194,11 @@
 -- it is filled in with each corresponding implementation-dependent
 -- property.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Extensions/VK_NV_cuda_kernel_launch.hs-boot b/src/Vulkan/Extensions/VK_NV_cuda_kernel_launch.hs-boot
--- a/src/Vulkan/Extensions/VK_NV_cuda_kernel_launch.hs-boot
+++ b/src/Vulkan/Extensions/VK_NV_cuda_kernel_launch.hs-boot
@@ -21,7 +21,9 @@
 --     Not ratified
 --
 -- [__Extension and Version Dependencies__]
---     None
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
 --
 --     -   __This is a /provisional/ extension and /must/ be used with
 --         caution. See the
@@ -179,7 +181,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_cuda_kernel_launch Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_NV_cuda_kernel_launch Vulkan Specification>.
 --
 -- This 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
@@ -173,7 +173,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_dedicated_allocation Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -236,6 +236,12 @@
 --     /must/ be
 --     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV'
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.Image.ImageCreateInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_dedicated_allocation VK_NV_dedicated_allocation>,
@@ -286,8 +292,12 @@
 -- | VkDedicatedAllocationBufferCreateInfoNV - Specify that a buffer is bound
 -- to a dedicated memory resource
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.Buffer.BufferCreateInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_dedicated_allocation VK_NV_dedicated_allocation>,
@@ -402,6 +412,12 @@
 --     of @buffer@, and @image@ that are valid handles of non-ignored
 --     parameters /must/ have been created, allocated, or retrieved from
 --     the same 'Vulkan.Core10.Handles.Device'
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.Memory.MemoryAllocateInfo'
 --
 -- = See Also
 --
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
@@ -173,7 +173,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_dedicated_allocation Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -88,7 +88,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_dedicated_allocation_image_aliasing Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -137,12 +137,21 @@
 -- structure passed to
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
 -- it is filled in to indicate whether each corresponding feature is
--- supported. 'PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV'
--- /can/ also be used in the @pNext@ chain of
--- 'Vulkan.Core10.Device.DeviceCreateInfo' to selectively enable these
--- features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV', it /must/
+-- add an instance of the structure, with the desired feature members set
+-- to 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
 --
 -- = See Also
 --
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
@@ -88,7 +88,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_dedicated_allocation_image_aliasing Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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_descriptor_pool_overallocation.hs b/src/Vulkan/Extensions/VK_NV_descriptor_pool_overallocation.hs
--- a/src/Vulkan/Extensions/VK_NV_descriptor_pool_overallocation.hs
+++ b/src/Vulkan/Extensions/VK_NV_descriptor_pool_overallocation.hs
@@ -97,7 +97,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_descriptor_pool_overallocation Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_NV_descriptor_pool_overallocation Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -145,12 +145,21 @@
 -- 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. 'PhysicalDeviceDescriptorPoolOverallocationFeaturesNV' /can/
--- also be used in the @pNext@ chain of
--- 'Vulkan.Core10.Device.DeviceCreateInfo' to selectively enable these
--- features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceDescriptorPoolOverallocationFeaturesNV', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Extensions/VK_NV_descriptor_pool_overallocation.hs-boot b/src/Vulkan/Extensions/VK_NV_descriptor_pool_overallocation.hs-boot
--- a/src/Vulkan/Extensions/VK_NV_descriptor_pool_overallocation.hs-boot
+++ b/src/Vulkan/Extensions/VK_NV_descriptor_pool_overallocation.hs-boot
@@ -97,7 +97,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_descriptor_pool_overallocation Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_NV_descriptor_pool_overallocation Vulkan Specification>.
 --
 -- This 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
@@ -140,7 +140,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_device_diagnostic_checkpoints Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -233,9 +233,14 @@
 --
 -- -   #VUID-vkCmdSetCheckpointNV-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics, compute, or transfer
---     operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT',
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT', or
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_TRANSFER_BIT' operations
 --
+-- -   #VUID-vkCmdSetCheckpointNV-suspended# This command /must/ not be
+--     called between suspended render pass instances
+--
 -- -   #VUID-vkCmdSetCheckpointNV-videocoding# This command /must/ only be
 --     called outside of a video coding scope
 --
@@ -253,11 +258,16 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | Action                                                                                                                                 |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | Compute                                                                                                               |                                                                                                                                        |
--- |                                                                                                                            |                                                                                                                        |                                                                                                                             | Transfer                                                                                                              |                                                                                                                                        |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | VK_QUEUE_GRAPHICS_BIT                                                                                                 |                                                                                                                                        |
+-- |                                                                                                                            |                                                                                                                        |                                                                                                                             | VK_QUEUE_TRANSFER_BIT                                                                                                 |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdSetCheckpointNV is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_diagnostic_checkpoints VK_NV_device_diagnostic_checkpoints>,
@@ -441,8 +451,12 @@
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.QueueFamilyProperties2'::@pNext@
 -- to point to a 'QueueFamilyCheckpointPropertiesNV' structure.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.QueueFamilyProperties2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_diagnostic_checkpoints VK_NV_device_diagnostic_checkpoints>,
@@ -566,7 +580,11 @@
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.QueueFamilyProperties2'::@pNext@
 -- to point to a 'QueueFamilyCheckpointProperties2NV' structure.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.QueueFamilyProperties2'
 --
 -- = See Also
 --
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
@@ -140,7 +140,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_device_diagnostic_checkpoints Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -101,7 +101,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_device_diagnostics_config Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -169,12 +169,22 @@
 -- structure passed to
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
 -- it is filled in to indicate whether each corresponding feature is
--- supported. 'PhysicalDeviceDiagnosticsConfigFeaturesNV' /can/ also be
--- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceDiagnosticsConfigFeaturesNV', it /must/ add an instance
+-- of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_diagnostics_config VK_NV_device_diagnostics_config>,
@@ -225,8 +235,12 @@
 -- | VkDeviceDiagnosticsConfigCreateInfoNV - Specify diagnostics config for a
 -- Vulkan device
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_diagnostics_config VK_NV_device_diagnostics_config>,
@@ -282,6 +296,25 @@
 -- | VkDeviceDiagnosticsConfigFlagBitsNV - Bitmask specifying diagnostics
 -- flags
 --
+-- = Description
+--
+-- -   'DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV' enables
+--     the generation of debug information for shaders.
+--
+-- -   'DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV' enables
+--     driver side tracking of resources (images, buffers, etc.) used to
+--     augment the device fault information.
+--
+-- -   'DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV'
+--     enables automatic insertion of
+--     <https://registry.khronos.org/vulkan/specs/latest/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.
+--
+-- -   'DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_ERROR_REPORTING_BIT_NV'
+--     enables shader error reporting.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_diagnostics_config VK_NV_device_diagnostics_config>,
@@ -289,25 +322,16 @@
 newtype DeviceDiagnosticsConfigFlagBitsNV = DeviceDiagnosticsConfigFlagBitsNV Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV' enables the
--- generation of debug information for shaders.
+-- No documentation found for Nested "VkDeviceDiagnosticsConfigFlagBitsNV" "VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV"
 pattern DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV = DeviceDiagnosticsConfigFlagBitsNV 0x00000001
 
--- | 'DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV' enables
--- driver side tracking of resources (images, buffers, etc.) used to
--- augment the device fault information.
+-- No documentation found for Nested "VkDeviceDiagnosticsConfigFlagBitsNV" "VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV"
 pattern DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV = DeviceDiagnosticsConfigFlagBitsNV 0x00000002
 
--- | 'DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV' enables
--- automatic insertion of
--- <https://registry.khronos.org/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.
+-- No documentation found for Nested "VkDeviceDiagnosticsConfigFlagBitsNV" "VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV"
 pattern DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV = DeviceDiagnosticsConfigFlagBitsNV 0x00000004
 
--- | 'DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_ERROR_REPORTING_BIT_NV' enables
--- shader error reporting.
+-- No documentation found for Nested "VkDeviceDiagnosticsConfigFlagBitsNV" "VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_ERROR_REPORTING_BIT_NV"
 pattern DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_ERROR_REPORTING_BIT_NV = DeviceDiagnosticsConfigFlagBitsNV 0x00000008
 
 conNameDeviceDiagnosticsConfigFlagBitsNV :: String
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
@@ -101,7 +101,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_device_diagnostics_config Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -123,6792 +123,7649 @@
 --
 -- -   optionally preprocess the generated content using
 --     'cmdPreprocessGeneratedCommandsNV', for example on an asynchronous
---     compute queue, or for the purpose of re-using the data in multiple
---     executions.
---
--- -   call 'cmdExecuteGeneratedCommandsNV' to create and execute the
---     actual device commands for all sequences based on the inputs
---     provided.
---
--- For each draw in a sequence, the following can be specified:
---
--- -   a different shader group
---
--- -   a number of vertex buffer bindings
---
--- -   a different index buffer, with an optional dynamic offset and index
---     type
---
--- -   a number of different push constants
---
--- -   a flag that encodes the primitive winding
---
--- While the GPU can be faster than a CPU to generate the commands, it will
--- not happen asynchronously to the device, therefore the primary use case
--- is generating “less” total work (occlusion culling, classification to
--- use specialized shaders, etc.).
---
--- == New Object Types
---
--- -   'Vulkan.Extensions.Handles.IndirectCommandsLayoutNV'
---
--- == New Commands
---
--- -   'cmdBindPipelineShaderGroupNV'
---
--- -   'cmdExecuteGeneratedCommandsNV'
---
--- -   'cmdPreprocessGeneratedCommandsNV'
---
--- -   'createIndirectCommandsLayoutNV'
---
--- -   'destroyIndirectCommandsLayoutNV'
---
--- -   'getGeneratedCommandsMemoryRequirementsNV'
---
--- == New Structures
---
--- -   'BindIndexBufferIndirectCommandNV'
---
--- -   'BindShaderGroupIndirectCommandNV'
---
--- -   'BindVertexBufferIndirectCommandNV'
---
--- -   'GeneratedCommandsInfoNV'
---
--- -   'GeneratedCommandsMemoryRequirementsInfoNV'
---
--- -   'GraphicsShaderGroupCreateInfoNV'
---
--- -   'IndirectCommandsLayoutCreateInfoNV'
---
--- -   'IndirectCommandsLayoutTokenNV'
---
--- -   'IndirectCommandsStreamNV'
---
--- -   'SetStateFlagsIndirectCommandNV'
---
--- -   Extending 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo':
---
---     -   'GraphicsPipelineShaderGroupsCreateInfoNV'
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
---     'Vulkan.Core10.Device.DeviceCreateInfo':
---
---     -   'PhysicalDeviceDeviceGeneratedCommandsFeaturesNV'
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
---
---     -   'PhysicalDeviceDeviceGeneratedCommandsPropertiesNV'
---
--- == New Enums
---
--- -   'IndirectCommandsLayoutUsageFlagBitsNV'
---
--- -   'IndirectCommandsTokenTypeNV'
---
--- -   'IndirectStateFlagBitsNV'
---
--- == New Bitmasks
---
--- -   'IndirectCommandsLayoutUsageFlagsNV'
---
--- -   'IndirectStateFlagsNV'
---
--- == New Enum Constants
---
--- -   'NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME'
---
--- -   'NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSION'
---
--- -   Extending 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits':
---
---     -   'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_COMMAND_PREPROCESS_READ_BIT_NV'
---
---     -   'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV'
---
--- -   Extending 'Vulkan.Core10.Enums.ObjectType.ObjectType':
---
---     -   'Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV'
---
--- -   Extending
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits':
---
---     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV'
---
--- -   Extending
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits':
---
---     -   'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV'
---
--- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV'
---
--- == Issues
---
--- 1) How to name this extension ?
---
--- @VK_NV_device_generated_commands@
---
--- As usual, one of the hardest issues ;)
---
--- Alternatives: @VK_gpu_commands@, @VK_execute_commands@,
--- @VK_device_commands@, @VK_device_execute_commands@, @VK_device_execute@,
--- @VK_device_created_commands@, @VK_device_recorded_commands@,
--- @VK_device_generated_commands@ @VK_indirect_generated_commands@
---
--- 2) Should we use a serial stateful token stream or stateless sequence
--- descriptions?
---
--- Similarly to 'Vulkan.Core10.Handles.Pipeline', fixed layouts have the
--- most likelihood to be cross-vendor adoptable. They also benefit from
--- being processable in parallel. This is a different design choice
--- compared to the serial command stream generated through
--- @GL_NV_command_list@.
---
--- 3) How to name a sequence description?
---
--- @VkIndirectCommandsLayout@ as in the NVX extension predecessor.
---
--- Alternative: @VkGeneratedCommandsLayout@
---
--- 4) Do we want to provide @indirectCommands@ inputs with layout or at
--- @indirectCommands@ time?
---
--- Separate layout from data as Vulkan does. Provide full flexibility for
--- @indirectCommands@.
---
--- 5) Should the input be provided as SoA or AoS?
---
--- Both ways are desirable. AoS can provide portability to other APIs and
--- easier to setup, while SoA allows to update individual inputs in a
--- cache-efficient manner, when others remain static.
---
--- 6) How do we make developers aware of the memory requirements of
--- implementation-dependent data used for the generated commands?
---
--- Make the API explicit and introduce a @preprocess@
--- 'Vulkan.Core10.Handles.Buffer'. Developers have to allocate it using
--- 'getGeneratedCommandsMemoryRequirementsNV'.
---
--- In the NVX version the requirements were hidden implicitly as part of
--- the command buffer reservation process, however as the memory
--- requirements can be substantial, we want to give developers the ability
--- to budget the memory themselves. By lowering the @maxSequencesCount@ the
--- memory consumption can be reduced. Furthermore reuse of the memory is
--- possible, for example for doing explicit preprocessing and execution in
--- a ping-pong fashion.
---
--- The actual buffer size is implementation-dependent and may be zero, i.e.
--- not always required.
---
--- When making use of Graphics Shader Groups, the programs should behave
--- similar with regards to vertex inputs, clipping and culling outputs of
--- the geometry stage, as well as sample shading behavior in fragment
--- shaders, to reduce the amount of the worst-case memory approximation.
---
--- 7) Should we allow additional per-sequence dynamic state changes?
---
--- Yes
---
--- Introduced a lightweight indirect state flag 'IndirectStateFlagBitsNV'.
--- So far only switching front face winding state is exposed. Especially in
--- CAD\/DCC mirrored transforms that require such changes are common, and
--- similar flexibility is given in the ray tracing instance description.
---
--- The flag could be extended further, for example to switch between
--- primitive-lists or -strips, or make other state modifications.
---
--- Furthermore, as new tokens can be added easily, future extension could
--- add the ability to change any
--- 'Vulkan.Core10.Enums.DynamicState.DynamicState'.
---
--- 8) How do we allow re-using already “generated” @indirectCommands@?
---
--- Expose a @preprocessBuffer@ to reuse implementation-dependencyFlags
--- data. Set @isPreprocessed@ to 'Vulkan.Core10.FundamentalTypes.TRUE' in
--- 'cmdExecuteGeneratedCommandsNV'.
---
--- 9) Under which conditions is 'cmdExecuteGeneratedCommandsNV' legal?
---
--- It behaves like a regular draw call command.
---
--- 10) Is 'cmdPreprocessGeneratedCommandsNV' copying the input data or
--- referencing it?
---
--- There are multiple implementations possible:
---
--- -   one could have some emulation code that parses the inputs, and
---     generates an output command buffer, therefore copying the inputs.
---
--- -   one could just reference the inputs, and have the processing done in
---     pipe at execution time.
---
--- If the data is mandated to be copied, then it puts a penalty on
--- implementation that could process the inputs directly in pipe. If the
--- data is “referenced”, then it allows both types of implementation.
---
--- The inputs are “referenced”, and /must/ not be modified after the call
--- to 'cmdExecuteGeneratedCommandsNV' has completed.
---
--- 11) Which buffer usage flags are required for the buffers referenced by
--- 'GeneratedCommandsInfoNV' ?
---
--- Reuse existing
--- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'
---
--- -   'GeneratedCommandsInfoNV'::@preprocessBuffer@
---
--- -   'GeneratedCommandsInfoNV'::@sequencesCountBuffer@
---
--- -   'GeneratedCommandsInfoNV'::@sequencesIndexBuffer@
---
--- -   'IndirectCommandsStreamNV'::@buffer@
---
--- 12) In which pipeline stage does the device generated command expansion
--- happen?
---
--- 'cmdPreprocessGeneratedCommandsNV' is treated as if it occurs in a
--- separate logical pipeline from either graphics or compute, and that
--- pipeline only includes
--- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TOP_OF_PIPE_BIT',
--- a new stage
--- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV',
--- and
--- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT'.
--- This new stage has two corresponding new access types,
--- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_COMMAND_PREPROCESS_READ_BIT_NV'
--- and
--- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV',
--- used to synchronize reading the buffer inputs and writing the preprocess
--- memory output.
---
--- The generated output written in the preprocess buffer memory by
--- 'cmdExecuteGeneratedCommandsNV' is considered to be consumed by the
--- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_DRAW_INDIRECT_BIT'
--- pipeline stage.
---
--- Thus, to synchronize from writing the input buffers to preprocessing via
--- 'cmdPreprocessGeneratedCommandsNV', use:
---
--- -   @dstStageMask@ =
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV'
---
--- -   @dstAccessMask@ =
---     'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_COMMAND_PREPROCESS_READ_BIT_NV'
---
--- To synchronize from 'cmdPreprocessGeneratedCommandsNV' to executing the
--- generated commands by 'cmdExecuteGeneratedCommandsNV', use:
---
--- -   @srcStageMask@ =
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV'
---
--- -   @srcAccessMask@ =
---     'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV'
---
--- -   @dstStageMask@ =
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_DRAW_INDIRECT_BIT'
---
--- -   @dstAccessMask@ =
---     'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_INDIRECT_COMMAND_READ_BIT'
---
--- When 'cmdExecuteGeneratedCommandsNV' is used with a @isPreprocessed@ of
--- 'Vulkan.Core10.FundamentalTypes.FALSE', the generated commands are
--- implicitly preprocessed, therefore one only needs to synchronize the
--- inputs via:
---
--- -   @dstStageMask@ =
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_DRAW_INDIRECT_BIT'
---
--- -   @dstAccessMask@ =
---     'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_INDIRECT_COMMAND_READ_BIT'
---
--- 13) What if most token data is “static”, but we frequently want to
--- render a subsection?
---
--- Added “sequencesIndexBuffer”. This allows to easier sort and filter what
--- should actually be executed.
---
--- 14) What are the changes compared to the previous NVX extension?
---
--- -   Compute dispatch support was removed (was never implemented in
---     drivers). There are different approaches how dispatching from the
---     device should work, hence we defer this to a future extension.
---
--- -   The @ObjectTableNVX@ was replaced by using physical buffer addresses
---     and introducing Shader Groups for the graphics pipeline.
---
--- -   Less state changes are possible overall, but the important
---     operations are still there (reduces complexity of implementation).
---
--- -   The API was redesigned so all inputs must be passed at both
---     preprocessing and execution time (this was implicit in NVX, now it
---     is explicit)
---
--- -   The reservation of intermediate command space is now mandatory and
---     explicit through a preprocess buffer.
---
--- -   The 'IndirectStateFlagBitsNV' were introduced
---
--- 15) When porting from other APIs, their indirect buffers may use
--- different enums, for example for index buffer types. How to solve this?
---
--- Added “pIndexTypeValues” to map custom @uint32_t@ values to
--- corresponding 'Vulkan.Core10.Enums.IndexType.IndexType'.
---
--- 16) Do we need more shader group state overrides?
---
--- The NVX version allowed all PSO states to be different, however as the
--- goal is not to replace all state setup, but focus on highly-frequent
--- state changes for drawing lots of objects, we reduced the amount of
--- state overrides. Especially VkPipelineLayout as well as VkRenderPass
--- configuration should be left static, the rest is still open for
--- discussion.
---
--- The current focus is just to allow VertexInput changes as well as
--- shaders, while all shader groups use the same shader stages.
---
--- Too much flexibility will increase the test coverage requirement as
--- well. However, further extensions could allow more dynamic state as
--- well.
---
--- 17) Do we need more detailed physical device feature queries\/enables?
---
--- An EXT version would need detailed implementor feedback to come up with
--- a good set of features. Please contact us if you are interested, we are
--- happy to make more features optional, or add further restrictions to
--- reduce the minimum feature set of an EXT.
---
--- 18) Is there an interaction with VK_KHR_pipeline_library planned?
---
--- Yes, a future version of this extension will detail the interaction,
--- once VK_KHR_pipeline_library is no longer provisional.
---
--- == Example Code
---
--- Open-Source samples illustrating the usage of the extension can be found
--- at the following location (may not yet exist at time of writing):
---
--- <https://github.com/nvpro-samples/vk_device_generated_cmds>
---
--- == Version History
---
--- -   Revision 1, 2020-02-20 (Christoph Kubisch)
---
---     -   Initial version
---
--- -   Revision 2, 2020-03-09 (Christoph Kubisch)
---
---     -   Remove VK_EXT_debug_report interactions
---
--- -   Revision 3, 2020-03-09 (Christoph Kubisch)
---
---     -   Fix naming VkPhysicalDeviceGenerated to
---         VkPhysicalDeviceDeviceGenerated
---
--- == See Also
---
--- No cross-references are available
---
--- == Document Notes
---
--- For more information, see the
--- <https://registry.khronos.org/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.
-module Vulkan.Extensions.VK_NV_device_generated_commands  ( cmdExecuteGeneratedCommandsNV
-                                                          , cmdPreprocessGeneratedCommandsNV
-                                                          , cmdBindPipelineShaderGroupNV
-                                                          , getGeneratedCommandsMemoryRequirementsNV
-                                                          , createIndirectCommandsLayoutNV
-                                                          , withIndirectCommandsLayoutNV
-                                                          , destroyIndirectCommandsLayoutNV
-                                                          , PhysicalDeviceDeviceGeneratedCommandsFeaturesNV(..)
-                                                          , PhysicalDeviceDeviceGeneratedCommandsPropertiesNV(..)
-                                                          , GraphicsShaderGroupCreateInfoNV(..)
-                                                          , GraphicsPipelineShaderGroupsCreateInfoNV(..)
-                                                          , BindShaderGroupIndirectCommandNV(..)
-                                                          , BindIndexBufferIndirectCommandNV(..)
-                                                          , BindVertexBufferIndirectCommandNV(..)
-                                                          , SetStateFlagsIndirectCommandNV(..)
-                                                          , IndirectCommandsStreamNV(..)
-                                                          , IndirectCommandsLayoutTokenNV(..)
-                                                          , IndirectCommandsLayoutCreateInfoNV(..)
-                                                          , GeneratedCommandsInfoNV(..)
-                                                          , GeneratedCommandsMemoryRequirementsInfoNV(..)
-                                                          , IndirectCommandsLayoutUsageFlagsNV
-                                                          , IndirectCommandsLayoutUsageFlagBitsNV( INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV
-                                                                                                 , INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV
-                                                                                                 , INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV
-                                                                                                 , ..
-                                                                                                 )
-                                                          , IndirectStateFlagsNV
-                                                          , IndirectStateFlagBitsNV( INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV
-                                                                                   , ..
-                                                                                   )
-                                                          , IndirectCommandsTokenTypeNV( INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV
-                                                                                       , INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV
-                                                                                       , INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV
-                                                                                       , INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV
-                                                                                       , INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV
-                                                                                       , INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV
-                                                                                       , INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV
-                                                                                       , INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV
-                                                                                       , INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NV
-                                                                                       , INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NV
-                                                                                       , INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV
-                                                                                       , ..
-                                                                                       )
-                                                          , NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSION
-                                                          , pattern NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSION
-                                                          , NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME
-                                                          , pattern NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME
-                                                          , IndirectCommandsLayoutNV(..)
-                                                          ) where
-
-import Data.Bits (Bits)
-import Data.Bits (FiniteBits)
-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 Foreign.Marshal.Utils (maybePeek)
-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 GHC.Show (showsPrec)
-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.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 (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.CStruct.Extends (peekSomeCStruct)
-import Vulkan.CStruct.Extends (pokeSomeCStruct)
-import Vulkan.CStruct.Extends (withSomeCStruct)
-import Vulkan.NamedType ((:::))
-import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)
-import Vulkan.Core10.FundamentalTypes (Bool32)
-import Vulkan.Core10.FundamentalTypes (Bool32(..))
-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.Handles (Device)
-import Vulkan.Core10.Handles (Device(..))
-import Vulkan.Core10.Handles (Device(Device))
-import Vulkan.Core10.FundamentalTypes (DeviceAddress)
-import Vulkan.Dynamic (DeviceCmds(pVkCmdBindPipelineShaderGroupNV))
-import Vulkan.Dynamic (DeviceCmds(pVkCmdExecuteGeneratedCommandsNV))
-import Vulkan.Dynamic (DeviceCmds(pVkCmdPreprocessGeneratedCommandsNV))
-import Vulkan.Dynamic (DeviceCmds(pVkCreateIndirectCommandsLayoutNV))
-import Vulkan.Dynamic (DeviceCmds(pVkDestroyIndirectCommandsLayoutNV))
-import Vulkan.Dynamic (DeviceCmds(pVkGetGeneratedCommandsMemoryRequirementsNV))
-import Vulkan.Core10.FundamentalTypes (DeviceSize)
-import Vulkan.Core10.Handles (Device_T)
-import Vulkan.CStruct.Extends (Extendss)
-import Vulkan.Core10.FundamentalTypes (Flags)
-import Vulkan.Core10.Enums.IndexType (IndexType)
-import Vulkan.Extensions.Handles (IndirectCommandsLayoutNV)
-import Vulkan.Extensions.Handles (IndirectCommandsLayoutNV(..))
-import Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2 (MemoryRequirements2)
-import Vulkan.CStruct.Extends (PeekChain)
-import Vulkan.Core10.Handles (Pipeline)
-import Vulkan.Core10.Handles (Pipeline(..))
-import Vulkan.Core10.Enums.PipelineBindPoint (PipelineBindPoint)
-import Vulkan.Core10.Enums.PipelineBindPoint (PipelineBindPoint(..))
-import Vulkan.Core10.Handles (PipelineLayout)
-import Vulkan.Core10.Pipeline (PipelineShaderStageCreateInfo)
-import Vulkan.Core10.Pipeline (PipelineTessellationStateCreateInfo)
-import Vulkan.Core10.Pipeline (PipelineVertexInputStateCreateInfo)
-import Vulkan.CStruct.Extends (PokeChain)
-import Vulkan.Core10.Enums.Result (Result)
-import Vulkan.Core10.Enums.Result (Result(..))
-import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)
-import Vulkan.CStruct.Extends (SomeStruct)
-import Vulkan.Core10.Enums.StructureType (StructureType)
-import Vulkan.Exception (VulkanException(..))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV))
-import Vulkan.Core10.Enums.Result (Result(SUCCESS))
-import Vulkan.Extensions.Handles (IndirectCommandsLayoutNV(..))
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdExecuteGeneratedCommandsNV
-  :: FunPtr (Ptr CommandBuffer_T -> Bool32 -> Ptr GeneratedCommandsInfoNV -> IO ()) -> Ptr CommandBuffer_T -> Bool32 -> Ptr GeneratedCommandsInfoNV -> IO ()
-
--- | vkCmdExecuteGeneratedCommandsNV - Generate and execute commands on the
--- device
---
--- = Description
---
--- If the 'INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV' flag
--- was used to create the
--- 'GeneratedCommandsInfoNV'::@indirectCommandsLayout@ then the order of
--- execution of individual draws through this command /may/ execute in any
--- order, and /may/ not necessarily be in the same order as specified in
--- 'GeneratedCommandsInfoNV'::@pStreams@.
---
--- The order of execution of individual dispatches through this command
--- /may/ execute in any order and /may/ not necessarily be in the same
--- order as specified in 'GeneratedCommandsInfoNV'::@pStreams@.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-magFilter-04553# If a
---     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
---     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR',
---     @reductionMode@ equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
---     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-vkCmdExecuteGeneratedCommandsNV-magFilter-09598# If a
---     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
---     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR' and
---     @reductionMode@ equal to either
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
---     or
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
---     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_MINMAX_BIT'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-mipmapMode-04770# If a
---     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
---     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR',
---     @reductionMode@ equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
---     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-vkCmdExecuteGeneratedCommandsNV-mipmapMode-09599# If a
---     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
---     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'
---     and @reductionMode@ equal to either
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
---     or
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
---     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_MINMAX_BIT'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-unnormalizedCoordinates-09635#
---     If a 'Vulkan.Core10.Handles.Sampler' created with
---     @unnormalizedCoordinates@ equal to
---     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
---     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
---     the image view’s @levelCount@ and @layerCount@ /must/ be 1
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-unnormalizedCoordinates-09636#
---     If a 'Vulkan.Core10.Handles.Sampler' created with
---     @unnormalizedCoordinates@ equal to
---     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
---     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
---     the image view’s @viewType@ /must/ be
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D' or
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-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-vkCmdExecuteGeneratedCommandsNV-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-vkCmdExecuteGeneratedCommandsNV-None-07888# If a
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'
---     descriptor is accessed using atomic operations as a result of this
---     command, then the storage texel buffer’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-buffer-view-format-features format features>
---     /must/ contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-02692# If a
---     'Vulkan.Core10.Handles.ImageView' is sampled with
---     'Vulkan.Core10.Enums.Filter.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.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-02693# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_filter_cubic VK_EXT_filter_cubic>
---     extension is not enabled and any 'Vulkan.Core10.Handles.ImageView'
---     is sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as a
---     result of this command, it /must/ not have a
---     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' of
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE', or
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-filterCubic-02694# Any
---     'Vulkan.Core10.Handles.ImageView' being sampled with
---     'Vulkan.Core10.Enums.Filter.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-vkCmdExecuteGeneratedCommandsNV-filterCubicMinmax-02695# Any
---     'Vulkan.Core10.Handles.ImageView' being sampled with
---     'Vulkan.Core10.Enums.Filter.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-vkCmdExecuteGeneratedCommandsNV-cubicRangeClamp-09212# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-cubicRangeClamp cubicRangeClamp>
---     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
---     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
---     a result of this command /must/ not have a
---     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
---     equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-reductionMode-09213# Any
---     'Vulkan.Core10.Handles.ImageView' being sampled with a
---     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
---     equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
---     as a result of this command /must/ sample with
---     'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-selectableCubicWeights-09214#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-selectableCubicWeights selectableCubicWeights>
---     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
---     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
---     a result of this command /must/ have
---     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.SamplerCubicWeightsCreateInfoQCOM'::@cubicWeights@
---     equal to
---     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-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-vkCmdExecuteGeneratedCommandsNV-OpTypeImage-07027# For any
---     'Vulkan.Core10.Handles.ImageView' being written as a storage image
---     where the image format field of the @OpTypeImage@ is @Unknown@, the
---     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_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-OpTypeImage-07028# For any
---     'Vulkan.Core10.Handles.ImageView' being read as a storage image
---     where the image format field of the @OpTypeImage@ is @Unknown@, the
---     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_STORAGE_READ_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-OpTypeImage-07029# For any
---     'Vulkan.Core10.Handles.BufferView' being written as a storage texel
---     buffer where the image format field of the @OpTypeImage@ is
---     @Unknown@, the view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
---     /must/ contain
---     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-OpTypeImage-07030# Any
---     'Vulkan.Core10.Handles.BufferView' being read as a storage texel
---     buffer where the image format field of the @OpTypeImage@ is
---     @Unknown@ then the view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
---     /must/ contain
---     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08600# For each set /n/
---     that is statically used by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     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' or the
---     'Vulkan.Core10.Handles.DescriptorSetLayout' array used to create the
---     current 'Vulkan.Extensions.Handles.ShaderEXT' , as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08601# For each push
---     constant that is statically used by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     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' or the
---     'Vulkan.Core10.Handles.DescriptorSetLayout' array used to create the
---     current 'Vulkan.Extensions.Handles.ShaderEXT' , as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-10068# For each array of
---     resources that is used by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     the indices used to access members of the array /must/ be less than
---     the descriptor count for the identified binding in the descriptor
---     sets used by this command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-maintenance4-08602# 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
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     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' or the
---     'Vulkan.Core10.Handles.DescriptorSetLayout' and
---     'Vulkan.Core10.PipelineLayout.PushConstantRange' arrays used to
---     create the current 'Vulkan.Extensions.Handles.ShaderEXT' , as
---     described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08114# Descriptors in
---     each bound descriptor set, specified via
---     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
---     be valid as described by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
---     if they are statically used by the 'Vulkan.Core10.Handles.Pipeline'
---     bound to the pipeline bind point used by this command and the bound
---     'Vulkan.Core10.Handles.Pipeline' was not created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08115# If the descriptors
---     used by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline
---     bind point were specified via
---     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', the
---     bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
---     without
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08116# Descriptors in
---     bound descriptor buffers, specified via
---     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
---     /must/ be valid if they are dynamically used by the
---     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
---     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
---     was created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08604# Descriptors in
---     bound descriptor buffers, specified via
---     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
---     /must/ be valid if they are dynamically used by any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     to the pipeline bind point used by this command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08117# If the descriptors
---     used by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline
---     bind point were specified via
---     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
---     the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
---     with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08119# If a descriptor is
---     dynamically used with a 'Vulkan.Core10.Handles.Pipeline' created
---     with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
---     the descriptor memory /must/ be resident
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08605# If a descriptor is
---     dynamically used with a 'Vulkan.Extensions.Handles.ShaderEXT'
---     created with a 'Vulkan.Core10.Handles.DescriptorSetLayout' that was
---     created with
---     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
---     the descriptor memory /must/ be resident
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08606# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject>
---     feature is not enabled, a valid pipeline /must/ be bound to the
---     pipeline bind point used by this command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08608# If a pipeline is
---     bound to the pipeline bind point used by this command, there /must/
---     not have been any calls to dynamic state setting commands for any
---     state specified statically in the 'Vulkan.Core10.Handles.Pipeline'
---     object bound to the pipeline bind point used by this command, since
---     that pipeline was bound
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08609# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command or any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdExecuteGeneratedCommandsNV-None-08610# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command or any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdExecuteGeneratedCommandsNV-None-08611# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command or any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdExecuteGeneratedCommandsNV-None-08607# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject>
---     feature is enabled, either a valid pipeline /must/ be bound to the
---     pipeline bind point used by this command, or a valid combination of
---     valid and 'Vulkan.Core10.APIConstants.NULL_HANDLE' shader objects
---     /must/ be bound to every supported shader stage corresponding to the
---     pipeline bind point used by this command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-uniformBuffers-06935# If any
---     stage of the 'Vulkan.Core10.Handles.Pipeline' object bound to the
---     pipeline bind point used by this command accesses a uniform buffer,
---     and that stage was created without enabling either
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT'
---     or
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT'
---     for @uniformBuffers@, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, that stage /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-vkCmdExecuteGeneratedCommandsNV-None-08612# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, and any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdExecuteGeneratedCommandsNV-storageBuffers-06936# If any
---     stage of the 'Vulkan.Core10.Handles.Pipeline' object bound to the
---     pipeline bind point used by this command accesses a storage buffer,
---     and that stage was created without enabling either
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT'
---     or
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT'
---     for @storageBuffers@, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, that stage /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-vkCmdExecuteGeneratedCommandsNV-None-08613# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, and any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdExecuteGeneratedCommandsNV-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
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shaders>
---     /must/ not be a protected resource
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-06550# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
---     accesses a 'Vulkan.Core10.Handles.Sampler' or
---     'Vulkan.Core10.Handles.ImageView' object that enables
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,
---     that object /must/ only be used with @OpImageSample*@ or
---     @OpImageSparseSample*@ instructions
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-ConstOffset-06551# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
---     accesses a 'Vulkan.Core10.Handles.Sampler' or
---     'Vulkan.Core10.Handles.ImageView' object that enables
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,
---     that object /must/ not use the @ConstOffset@ and @Offset@ operands
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-viewType-07752# If a
---     'Vulkan.Core10.Handles.ImageView' is accessed as a result of this
---     command, then the image view’s @viewType@ /must/ match the @Dim@
---     operand of the @OpTypeImage@ as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-image-dimensions ???>
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-format-07753# If a
---     'Vulkan.Core10.Handles.ImageView' is accessed as a result of this
---     command, then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-numericformat numeric type>
---     of the image view’s @format@ and the @Sampled@ @Type@ operand of the
---     @OpTypeImage@ /must/ match
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-OpImageWrite-08795# If a
---     'Vulkan.Core10.Handles.ImageView' created with a format other than
---     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM_KHR' 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-vkCmdExecuteGeneratedCommandsNV-OpImageWrite-08796# If a
---     'Vulkan.Core10.Handles.ImageView' created with the format
---     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM_KHR' is accessed using
---     @OpImageWrite@ as a result of this command, then the @Type@ of the
---     @Texel@ operand of that instruction /must/ have four components
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-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-vkCmdExecuteGeneratedCommandsNV-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-vkCmdExecuteGeneratedCommandsNV-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-vkCmdExecuteGeneratedCommandsNV-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-vkCmdExecuteGeneratedCommandsNV-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-vkCmdExecuteGeneratedCommandsNV-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-vkCmdExecuteGeneratedCommandsNV-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-vkCmdExecuteGeneratedCommandsNV-OpImageWeightedSampleQCOM-06971#
---     If @OpImageWeightedSampleQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-OpImageWeightedSampleQCOM-06972#
---     If @OpImageWeightedSampleQCOM@ uses a
---     'Vulkan.Core10.Handles.ImageView' as a sample weight image 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-OpImageBoxFilterQCOM-06973# If
---     @OpImageBoxFilterQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-OpImageBlockMatchSSDQCOM-06974#
---     If @OpImageBlockMatchSSDQCOM@ is used to read from an
---     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-OpImageBlockMatchSADQCOM-06975#
---     If @OpImageBlockMatchSADQCOM@ is used to read from an
---     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-OpImageBlockMatchSADQCOM-06976#
---     If @OpImageBlockMatchSADQCOM@ or OpImageBlockMatchSSDQCOM is used to
---     read from a reference image as result of this command, then the
---     specified reference coordinates /must/ not fail
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-OpImageWeightedSampleQCOM-06977#
---     If @OpImageWeightedSampleQCOM@, @OpImageBoxFilterQCOM@,
---     @OpImageBlockMatchWindowSSDQCOM@, @OpImageBlockMatchWindowSADQCOM@,
---     @OpImageBlockMatchGatherSSDQCOM@, @OpImageBlockMatchGatherSADQCOM@,
---     @OpImageBlockMatchSSDQCOM@, or @OpImageBlockMatchSADQCOM@ uses a
---     'Vulkan.Core10.Handles.Sampler' as a result of this command, then
---     the sampler /must/ have been created with
---     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-OpImageWeightedSampleQCOM-06978#
---     If any command other than @OpImageWeightedSampleQCOM@,
---     @OpImageBoxFilterQCOM@, @OpImageBlockMatchWindowSSDQCOM@,
---     @OpImageBlockMatchWindowSADQCOM@, @OpImageBlockMatchGatherSSDQCOM@,
---     @OpImageBlockMatchGatherSADQCOM@, @OpImageBlockMatchSSDQCOM@, or
---     @OpImageBlockMatchSADQCOM@ uses a 'Vulkan.Core10.Handles.Sampler' as
---     a result of this command, then the sampler /must/ not have been
---     created with
---     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-OpImageBlockMatchWindow-09215#
---     If a @OpImageBlockMatchWindow*QCOM@ or
---     @OpImageBlockMatchGather*QCOM@ instruction is used to read from an
---     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-OpImageBlockMatchWindow-09216#
---     If a @OpImageBlockMatchWindow*QCOM@ or
---     @OpImageBlockMatchGather*QCOM@ instruction is used to read from an
---     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
---     the image view’s format /must/ be a single-component format
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-OpImageBlockMatchWindow-09217#
---     If a @OpImageBlockMatchWindow*QCOM@ or
---     @OpImageBlockMatchGather*QCOM@ read from a reference image as result
---     of this command, then the specified reference coordinates /must/ not
---     fail
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07288# Any shader
---     invocation executed by this command /must/
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-termination terminate>
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-09600# If a descriptor
---     with type equal to any of
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM',
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM',
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',
---     or
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'
---     is accessed as a result of this command, the image subresource
---     identified by that descriptor /must/ be in the image layout
---     identified when the descriptor was written
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-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-vkCmdExecuteGeneratedCommandsNV-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-vkCmdExecuteGeneratedCommandsNV-None-07748# If any shader
---     statically accesses an input attachment, a valid descriptor /must/
---     be bound to the pipeline via a descriptor set
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-OpTypeImage-07468# If any
---     shader executed by this pipeline accesses an @OpTypeImage@ variable
---     with a @Dim@ operand of @SubpassData@, it /must/ be decorated with
---     an @InputAttachmentIndex@ that corresponds to a valid input
---     attachment in the current subpass
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07469# Input attachment
---     views accessed in a subpass /must/ be created with the same
---     'Vulkan.Core10.Enums.Format.Format' as the corresponding subpass
---     definition, and be created with a 'Vulkan.Core10.Handles.ImageView'
---     that is compatible with the attachment referenced by the subpass\'
---     @pInputAttachments@[@InputAttachmentIndex@] in the bound
---     'Vulkan.Core10.Handles.Framebuffer' as specified by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#compatibility-inputattachment Fragment Input Attachment Compatibility>
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-pDepthInputAttachmentIndex-09595#
---     Input attachment views accessed in a dynamic render pass with a
---     @InputAttachmentIndex@ referenced by
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR',
---     or no @InputAttachmentIndex@ if
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR':@pDepthInputAttachmentIndex@
---     or
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR':@pStencilInputAttachmentIndex@
---     are @NULL@, /must/ be created with a
---     'Vulkan.Core10.Handles.ImageView' that is compatible with the
---     corresponding color, depth, or stencil attachment in
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-pDepthInputAttachmentIndex-09596#
---     Input attachment views accessed in a dynamic render pass via a
---     shader object /must/ have an @InputAttachmentIndex@ if both
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR':@pDepthInputAttachmentIndex@
---     and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR':@pStencilInputAttachmentIndex@
---     are non-@NULL@
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-InputAttachmentIndex-09597# If
---     an input attachment view accessed in a dynamic render pass via a
---     shader object has an @InputAttachmentIndex@, the
---     @InputAttachmentIndex@ /must/ match an index in
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-06537# Memory backing
---     image subresources used as attachments in the current render pass
---     /must/ not be written in any way other than as an attachment by this
---     command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-09000# If a color
---     attachment is written by any prior command in this subpass or by the
---     load, store, or resolve operations for this subpass, it is not in
---     the
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
---     image layout, and either:
---
---     -   the
---         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT'
---         is set on the bound pipeline or
---
---     -   the last call to
---         'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
---         included
---         'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'
---         and
---
---         -   there is no bound graphics pipeline or
---
---         -   the bound graphics pipeline was created with
---             'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
---
---     it /must/ not be accessed in any way other than as an attachment by
---     this command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-09001# If a depth
---     attachment is written by any prior command in this subpass or by the
---     load, store, or resolve operations for this subpass, it is not in
---     the
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
---     image layout, and either:
---
---     -   the
---         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT'
---         is set on the bound pipeline or
---
---     -   the last call to
---         'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
---         included
---         'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT'
---         and
---
---         -   there is no bound graphics pipeline or
---
---         -   the bound graphics pipeline was created with
---             'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
---
---     it /must/ not be accessed in any way other than as an attachment by
---     this command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-09002# If a stencil
---     attachment is written by any prior command in this subpass or by the
---     load, store, or resolve operations for this subpass, it is not in
---     the
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
---     image layout, and either:
---
---     -   the
---         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT'
---         is set on the bound pipeline or
---
---     -   the last call to
---         'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
---         included
---         'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
---         and
---
---         -   there is no bound graphics pipeline or
---
---         -   the bound graphics pipeline was created with
---             'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
---
---     it /must/ not be accessed in any way other than as an attachment by
---     this command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-09003# If an attachment
---     is written by any prior command in this subpass or by the load,
---     store, or resolve operations for this subpass, it /must/ not be
---     accessed in any way other than as an attachment, storage image, or
---     sampled image by this command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-06539# If any previously
---     recorded command in the current subpass accessed an image
---     subresource used as an attachment in this subpass in any way other
---     than as an attachment, this command /must/ not write to that image
---     subresource as an attachment
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-06886# If the current
---     render pass instance uses a depth\/stencil attachment with a
---     read-only layout for the depth aspect,
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-depth-write depth writes>
---     /must/ be disabled
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-06887# If the current
---     render pass instance uses a depth\/stencil attachment with a
---     read-only layout for the stencil aspect, both front and back
---     @writeMask@ are not zero, and stencil test is enabled,
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-stencil all stencil ops>
---     /must/ be 'Vulkan.Core10.Enums.StencilOp.STENCIL_OP_KEEP'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07831# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT' dynamic
---     state enabled then
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetViewport' /must/ have
---     been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07832# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR' dynamic
---     state enabled then
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetScissor' /must/ have been
---     called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07833# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_WIDTH' dynamic
---     state enabled then
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth' /must/ have
---     been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08617# If a shader object
---     is bound to any graphics stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
---     in the current command buffer set @polygonMode@ to
---     'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_LINE',
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth' /must/ have
---     been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08618# If a shader object
---     is bound to any graphics stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
---     in the current command buffer set @primitiveTopology@ to any line
---     topology, 'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08619# If a shader object
---     that outputs line primitives is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE',
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth' /must/ have
---     been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07834# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS' dynamic
---     state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @depthBiasEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBounds' or
---     'Vulkan.Extensions.VK_EXT_depth_bias_control.cmdSetDepthBias2EXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07835# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_BLEND_CONSTANTS'
---     dynamic state enabled then
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetBlendConstants' /must/
---     have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08621# If a shader object
---     is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     in the current command buffer set any element of
---     @pColorBlendEnables@ to 'Vulkan.Core10.FundamentalTypes.TRUE', and
---     the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     in the current command buffer set the same element of
---     @pColorBlendEquations@ to a
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.ColorBlendEquationEXT'
---     structure with any 'Vulkan.Core10.Enums.BlendFactor.BlendFactor'
---     member with a value of
---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_COLOR',
---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR',
---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_ALPHA', or
---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA',
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetBlendConstants' /must/
---     have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07836# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @depthBoundsTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBounds' /must/
---     have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07837# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_COMPARE_MASK'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilCompareMask'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07838# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_WRITE_MASK'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilWriteMask'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07839# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_REFERENCE'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of and @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilReference'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-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-vkCmdExecuteGeneratedCommandsNV-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-vkCmdExecuteGeneratedCommandsNV-None-07634# If the
---     @VK_EXT_sample_locations@ extension is enabled, a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-06666# If the
---     @VK_EXT_sample_locations@ extension is enabled, a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then
---     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07840# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CULL_MODE' dynamic
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetCullMode'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07841# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRONT_FACE' dynamic
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetFrontFace'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07843# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_TEST_ENABLE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE',
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthTestEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07844# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthWriteEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07845# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_COMPARE_OP'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @depthTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthCompareOp'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07846# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthBounds depthBounds>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthBoundsTestEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07847# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_TEST_ENABLE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilTestEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07848# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_OP' dynamic
---     state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilOp'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-viewportCount-03417# If a
---     shader object is bound to any graphics stage or a graphics pipeline
---     is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
---     dynamic state enabled, and the state is not inherited, then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-scissorCount-03418# If a
---     shader object is bound to any graphics stage or a graphics pipeline
---     is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
---     dynamic state enabled, and the state is not inherited, then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-viewportCount-03419# If a
---     shader object is bound to any graphics stage or a graphics pipeline
---     is bound which 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, and the state is not inherited, then 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-vkCmdExecuteGeneratedCommandsNV-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-vkCmdExecuteGeneratedCommandsNV-viewportCount-04138# If the
---     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which 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 state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @viewportWScalingEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.cmdSetViewportWScalingNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08636# If the
---     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which 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 state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @viewportWScalingEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', 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-vkCmdExecuteGeneratedCommandsNV-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-vkCmdExecuteGeneratedCommandsNV-shadingRateImage-09233# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV'
---     and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetCoarseSampleOrderNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-shadingRateImage-09234# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which 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 state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @shadingRateImageEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetViewportShadingRatePaletteNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08637# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which 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 state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @shadingRateImageEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', 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-vkCmdExecuteGeneratedCommandsNV-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
---     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo', 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-vkCmdExecuteGeneratedCommandsNV-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
---     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo', 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-vkCmdExecuteGeneratedCommandsNV-None-07878# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-exclusiveScissor exclusiveScissor>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07879# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-exclusiveScissor exclusiveScissor>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV'
---     dynamic state enabled, and the most recent call to
---     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorEnableNV'
---     in the current command buffer set any element of
---     @pExclusiveScissorEnables@ to 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then
---     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-04876# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     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 and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-04877# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-logicOp-04878# If a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_EXT'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @logicOpEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetLogicOpEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-primitiveFragmentShadingRateWithMultipleViewports-04552#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
---     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-vkCmdExecuteGeneratedCommandsNV-primitiveFragmentShadingRateWithMultipleViewports-08642#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
---     limit is not supported, and any shader object bound to a graphics
---     stage writes 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-vkCmdExecuteGeneratedCommandsNV-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-vkCmdExecuteGeneratedCommandsNV-None-08643# If a shader object
---     is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then for each color
---     attachment in the render pass, 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 corresponding member of @pColorBlendEnables@ in the most
---     recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     in the current command buffer that affected that attachment index
---     /must/ have been 'Vulkan.Core10.FundamentalTypes.FALSE'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-multisampledRenderToSingleSampled-07284#
---     If rasterization is not disabled in the bound graphics pipeline, and
---     none of the following is enabled:
---
---     -   the @VK_AMD_mixed_attachment_samples@ extension
---
---     -   the @VK_NV_framebuffer_mixed_samples@ extension
---
---     -   the
---         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---         feature
---
---     then @rasterizationSamples@ for the bound graphics pipeline /must/
---     be the same as the current subpass color and\/or depth\/stencil
---     attachments
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08644# If a shader object
---     is bound to any graphics stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and none of the following is
---     enabled:
---
---     -   the @VK_AMD_mixed_attachment_samples@ extension
---
---     -   the @VK_NV_framebuffer_mixed_samples@ extension
---
---     -   the
---         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---         feature
---
---     then the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     in the current command buffer /must/ have set @rasterizationSamples@
---     to be the same as the number of samples for the current render pass
---     color and\/or depth\/stencil attachments
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08876# If a shader object
---     is bound to any graphics stage, the current render pass instance
---     /must/ have been begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-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-vkCmdExecuteGeneratedCommandsNV-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-vkCmdExecuteGeneratedCommandsNV-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-vkCmdExecuteGeneratedCommandsNV-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-vkCmdExecuteGeneratedCommandsNV-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-vkCmdExecuteGeneratedCommandsNV-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-vkCmdExecuteGeneratedCommandsNV-viewMask-06178# If the current
---     render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the 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-vkCmdExecuteGeneratedCommandsNV-colorAttachmentCount-06179# If
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled and the current render pass instance was
---     begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the 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-vkCmdExecuteGeneratedCommandsNV-dynamicRenderingUnusedAttachments-08910#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and 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 an @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 bound graphics pipeline
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-dynamicRenderingUnusedAttachments-08912#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and 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 an @imageView@ equal to
---     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have the
---     corresponding element of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
---     used to create the bound pipeline equal to
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-dynamicRenderingUnusedAttachments-08911#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is enabled, and 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 an @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 bound graphics pipeline, or the corresponding
---     element of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@,
---     if it exists, /must/ be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-colorAttachmentCount-09362# If
---     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@
---     equal to @1@, there is no shader object bound to any graphics stage,
---     and a color attachment with a resolve mode of
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID',
---     each element of the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
---     array with a @resolveImageView@ not equal to
---     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
---     with an image created with a
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value equal to the
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value used to create the bound graphics pipeline
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-09363# If there is no
---     shader object bound to any graphics stage, the current render pass
---     instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     and a
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
---     equal to @1@, and a color attachment with a resolve mode of
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID',
---     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 an image created with a
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value equal to the
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value used to create the bound graphics pipeline
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-09364# If the current
---     render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is no shader object bound to any graphics stage, and the bound
---     graphics pipeline was created with a non-zero
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value and with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have set the blend enable to
---     'Vulkan.Core10.FundamentalTypes.FALSE' prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-09365# If the current
---     render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is no shader object bound to any graphics stage, and the bound
---     graphics pipeline was created with a non-zero
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value and with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ have set @rasterizationSamples@ to
---     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' prior
---     to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-09366# If there is a
---     shader object bound to any graphics stage, and the current render
---     pass includes a color attachment that uses the
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID'
---     resolve mode, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have set blend enable to
---     'Vulkan.Core10.FundamentalTypes.FALSE' prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-rasterizationSamples-09367# If
---     there is a shader object bound to any graphics stage, and the
---     current render pass includes a color attachment that uses the
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID'
---     resolve mode, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ have set @rasterizationSamples@ to
---     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' prior
---     to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-09368# If the current
---     render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is no shader object bound to any graphics stage, and the bound
---     graphics pipeline was created with a non-zero
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value and with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
---     /must/ have set @pFragmentSize->width@ to @1@ prior to this drawing
---     command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-09369# If the current
---     render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is no shader object bound to any graphics stage, and the bound
---     graphics pipeline was created with a non-zero
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value and with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
---     /must/ have set @pFragmentSize->height@ to @1@ prior to this drawing
---     command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-pFragmentSize-09370# If there
---     is a shader object bound to any graphics stage, and the current
---     render pass includes a color attachment that uses the
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID'
---     resolve mode, then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
---     /must/ have set @pFragmentSize->width@ to @1@ prior to this drawing
---     command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-pFragmentSize-09371# If there
---     is a shader object bound to any graphics stage, and the current
---     render pass includes a color attachment that uses the
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID'
---     resolve mode, then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
---     /must/ have set @pFragmentSize->height@ to @1@ prior to this drawing
---     command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07749# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08646# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
---     feature is enabled, and a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-attachmentCount-07750# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'
---     dynamic state enabled then the @attachmentCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
---     /must/ be greater than or equal to the
---     'Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo'::@attachmentCount@
---     of the bound graphics pipeline
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08647# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
---     feature is enabled, and a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then the @attachmentCount@
---     parameter of most recent call to
---     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
---     in the current command buffer /must/ be greater than or equal to the
---     number of color attachments in the current render pass instance
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07751# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command for each
---     discard rectangle in
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'::@discardRectangleCount@
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07880# If the
---     @VK_EXT_discard_rectangles@ extension is enabled, a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07881# If the
---     @VK_EXT_discard_rectangles@ extension is enabled, a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @discardRectangleEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-rasterizerDiscardEnable-09236#
---     If the @VK_EXT_discard_rectangles@ extension is enabled, and a
---     shader object is bound to any graphics stage, and the most recent
---     call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEnableEXT'
---     in the current command buffer set @discardRectangleEnable@ to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-dynamicRenderingUnusedAttachments-08913#
---     If the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
---     used to create the bound graphics pipeline /must/ be equal to
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-dynamicRenderingUnusedAttachments-08914#
---     If current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->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 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->imageView@
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-dynamicRenderingUnusedAttachments-08915#
---     If the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is enabled,
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
---     used to create the bound graphics pipeline was not equal to the
---     'Vulkan.Core10.Enums.Format.Format' used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@,
---     the value of the format /must/ be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-dynamicRenderingUnusedAttachments-08916#
---     If the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
---     used to create the bound graphics pipeline /must/ be equal to
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-dynamicRenderingUnusedAttachments-08917#
---     If current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->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 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->imageView@
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-dynamicRenderingUnusedAttachments-08918#
---     If the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is enabled,
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
---     used to create the bound graphics pipeline was not equal to the
---     'Vulkan.Core10.Enums.Format.Format' used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@,
---     the value of the format /must/ be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-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_fragment_shading_rate.RenderingFragmentShadingRateAttachmentInfoKHR'::@imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the bound graphics
---     pipeline /must/ have been created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-imageView-06184# If the
---     current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     and
---     'Vulkan.Extensions.VK_EXT_fragment_density_map.RenderingFragmentDensityMapAttachmentInfoEXT'::@imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the bound graphics
---     pipeline /must/ have been created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-colorAttachmentCount-06185# If
---     the bound pipeline was created with a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.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_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     used to create the bound graphics pipeline
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-pDepthAttachment-06186# If the
---     current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the bound pipeline was created with a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     structure, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
---     @depthStencilAttachmentSamples@ member of
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     used to create the bound graphics pipeline /must/ be equal to the
---     sample count used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-pStencilAttachment-06187# If
---     the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the bound pipeline was created with a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     structure, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
---     @depthStencilAttachmentSamples@ member of
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     used to create the bound graphics pipeline /must/ be equal to the
---     sample count used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-multisampledRenderToSingleSampled-07285#
---     If the bound pipeline was created without a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     structure, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---     feature is not enabled, 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 @rasterizationSamples@ for
---     the bound graphics pipeline
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-multisampledRenderToSingleSampled-07286#
---     If the bound pipeline was created without a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     structure, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     @rasterizationSamples@ for the bound graphics pipeline /must/ be
---     equal to the sample count used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-multisampledRenderToSingleSampled-07287#
---     If the bound pipeline was created without a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     structure, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     @rasterizationSamples@ for the bound graphics pipeline /must/ be
---     equal to the sample count used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-pNext-07935# If this command
---     has been called inside a render pass instance started with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     and the @pNext@ chain of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'
---     includes a
---     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'
---     structure with @multisampledRenderToSingleSampledEnable@ equal to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the value of
---     @rasterizationSamples@ for the bound graphics pipeline /must/ be
---     equal to
---     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'::@rasterizationSamples@
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-renderPass-06198# If the
---     current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the bound pipeline /must/ have been created with a
---     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@renderPass@
---     equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-pColorAttachments-08963# If
---     the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is a graphics pipeline bound with a fragment shader that
---     statically writes to a color attachment, the color write mask is not
---     zero, color writes are enabled, and the corresponding element of the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
---     corresponding element of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
---     used to create the pipeline /must/ not be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-pDepthAttachment-08964# If the
---     current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is a graphics pipeline bound, depth test is enabled, depth
---     write is enabled, and the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
---     used to create the pipeline /must/ not be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-pStencilAttachment-08965# If
---     the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is a graphics pipeline bound, stencil test is enabled and the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
---     used to create the pipeline /must/ not be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-primitivesGeneratedQueryWithRasterizerDiscard-06708#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithRasterizerDiscard primitivesGeneratedQueryWithRasterizerDiscard>
---     feature is not enabled and the
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
---     query is active,
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-discard rasterization discard>
---     /must/ not be enabled
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-primitivesGeneratedQueryWithNonZeroStreams-06709#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>
---     feature is not enabled and the
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
---     query is active, the bound graphics pipeline /must/ not have been
---     created with a non-zero value in
---     'Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT'::@rasterizationStream@
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07619# If a shader object
---     is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetTessellationDomainOriginEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07620# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClamp depthClamp>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClampEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07621# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_POLYGON_MODE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07622# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07623# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-alphaToCoverageEnable-08919#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT'
---     dynamic state enabled, and @alphaToCoverageEnable@ was
---     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-fragmentoutput Fragment Output Interface>
---     /must/ contain a variable for the alpha @Component@ word in
---     @Location@ 0 at @Index@ 0
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-alphaToCoverageEnable-08920#
---     If a shader object is bound to any graphics stage, and the most
---     recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT'
---     in the current command buffer set @alphaToCoverageEnable@ to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-fragmentoutput Fragment Output Interface>
---     /must/ contain a variable for the alpha @Component@ word in
---     @Location@ 0 at @Index@ 0
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07624# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07625# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-alphaToOne alphaToOne>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToOneEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07626# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-logicOp logicOp>
---     feature is enabled, a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLogicOpEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07627# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08657# If a shader object
---     is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and both the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE' and there are color
---     attachments bound, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07628# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08658# If a shader object
---     is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     for any attachment set that attachment’s value in
---     @pColorBlendEnables@ to 'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07629# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08659# If a shader object
---     is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and both the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE' and there are color
---     attachments bound, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07630# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryStreams geometryStreams>
---     feature is enabled, and a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_STREAM_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationStreamEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07631# If the
---     @VK_EXT_conservative_rasterization@ extension is enabled, a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetConservativeRasterizationModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07632# If the
---     @VK_EXT_conservative_rasterization@ extension is enabled, a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @conservativeRasterizationMode@ is
---     'Vulkan.Extensions.VK_EXT_conservative_rasterization.CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT',
---     then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetExtraPrimitiveOverestimationSizeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07633# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClipEnable depthClipEnable>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT'
---     dynamic state, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07635# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-rasterizerDiscardEnable-09416#
---     If the @VK_EXT_blend_operation_advanced@ extension is enabled, and a
---     shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then at least one of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     and
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07636# If the
---     @VK_EXT_provoking_vertex@ extension is enabled, a shader object is
---     bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetProvokingVertexModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07637# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08666# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object is bound to any graphics
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
---     in the current command buffer set @polygonMode@ to
---     'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_LINE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08667# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
---     in the current command buffer set @primitiveTopology@ to any line
---     topology, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08668# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object that outputs line
---     primitives is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07638# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08669# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object is bound to any graphics
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
---     in the current command buffer set @polygonMode@ to
---     'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_LINE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08670# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
---     in the current command buffer set @primitiveTopology@ to any line
---     topology, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08671# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object that outputs line
---     primitives is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07849# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled and a shader object is bound to any graphics
---     stage, or a bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_KHR'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @stippledLineEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then
---     'Vulkan.Extensions.VK_KHR_line_rasterization.cmdSetLineStippleKHR'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07639# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClipControl depthClipControl>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipNegativeOneToOneEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-09650# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClampControl depthClampControl>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @depthClampEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_depth_clamp_control.cmdSetDepthClampRangeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07640# If the
---     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportWScalingEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07641# If the
---     @VK_NV_viewport_swizzle@ extension is enabled, and a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07642# If the
---     @VK_NV_fragment_coverage_to_color@ extension is enabled, a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07643# If the
---     @VK_NV_fragment_coverage_to_color@ extension is enabled, a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @coverageToColorEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07644# If the
---     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationModeNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07645# If the
---     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @coverageModulationMode@ is any value other than
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.COVERAGE_MODULATION_MODE_NONE_NV',
---     then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07646# If the
---     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @coverageModulationTableEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07647# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetShadingRateImageEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-pipelineFragmentShadingRate-09238#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate>
---     feature is enabled, a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07648# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-representativeFragmentTest representativeFragmentTest>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRepresentativeFragmentTestEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07649# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-coverageReductionMode coverageReductionMode>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageReductionModeNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-pColorBlendEnables-07470# If
---     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---     state enabled and the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     set @pColorBlendEnables@ for any attachment to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then for those attachments in
---     the subpass 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>
---     /must/ contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-rasterizationSamples-07471# If
---     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the current subpass does not use any color
---     and\/or depth\/stencil attachments, then the @rasterizationSamples@
---     in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ follow the rules for a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-noattachments zero-attachment subpass>
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-samples-07472# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
---     state enabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state disabled, then the @samples@ parameter in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
---     /must/ be greater or equal to the
---     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
---     parameter used to create the bound graphics pipeline
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-samples-07473# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
---     state and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     states enabled, then the @samples@ parameter in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
---     /must/ be greater or equal to the @rasterizationSamples@ parameter
---     in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-rasterizationSamples-07474# If
---     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---     feature is not enabled, and neither the
---     @VK_AMD_mixed_attachment_samples@ nor the
---     @VK_NV_framebuffer_mixed_samples@ extensions are enabled, then the
---     @rasterizationSamples@ in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ be the same as the current subpass color and\/or
---     depth\/stencil attachments
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-09211# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, or a shader object is bound to any graphics stage,
---     and the current render pass instance includes a
---     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'
---     structure with @multisampledRenderToSingleSampledEnable@ equal to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the
---     @rasterizationSamples@ in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ be the same as the @rasterizationSamples@ member of that
---     structure
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-firstAttachment-07476# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     calls /must/ specify an enable for all active color attachments in
---     the current subpass
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-rasterizerDiscardEnable-09417#
---     If a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     calls /must/ specify an enable for all active color attachments in
---     the current subpass
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-firstAttachment-07477# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     calls /must/ specify the blend equations for all active color
---     attachments in the current subpass where blending is enabled
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-rasterizerDiscardEnable-09418#
---     If a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and both the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE' and there are color
---     attachments bound, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     calls /must/ specify the blend equations for all active color
---     attachments in the current subpass where blending is enabled
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-firstAttachment-07478# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     calls /must/ specify the color write mask for all active color
---     attachments in the current subpass
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-rasterizerDiscardEnable-09419#
---     If a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     calls /must/ specify the color write mask for all active color
---     attachments in the current subpass
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-firstAttachment-07479# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
---     calls /must/ specify the advanced blend equations for all active
---     color attachments in the current subpass where blending is enabled
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-advancedBlendMaxColorAttachments-07480#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
---     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---     dynamic states enabled and the last calls to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     and
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
---     have enabled advanced blending, then the number of active color
---     attachments in the current subpass /must/ not exceed
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-advancedBlendMaxColorAttachments advancedBlendMaxColorAttachments>
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-primitivesGeneratedQueryWithNonZeroStreams-07481#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>
---     feature is not enabled and the
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
---     query is active, and the bound graphics pipeline was created with
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_STREAM_EXT'
---     state enabled, the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationStreamEXT'
---     /must/ have set the @rasterizationStream@ to zero
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-sampleLocationsPerPixel-07482#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state enabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state disabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then the @sampleLocationsPerPixel@ member of @pSampleLocationsInfo@
---     in the last call to
---     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
---     /must/ equal the @rasterizationSamples@ member of the
---     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'
---     structure the bound graphics pipeline has been created with
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-sampleLocationsPerPixel-07483#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state enabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then the @sampleLocationsPerPixel@ member of @pSampleLocationsInfo@
---     in the last call to
---     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
---     /must/ equal the @rasterizationSamples@ parameter of the last call
---     to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-sampleLocationsEnable-07484#
---     If a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, or the bound graphics pipeline was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     state enabled, and @sampleLocationsEnable@ was
---     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
---     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-vkCmdExecuteGeneratedCommandsNV-sampleLocationsEnable-07485#
---     If a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state enabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     state enabled, and if @sampleLocationsEnable@ was
---     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
---     then the @sampleLocationsInfo.sampleLocationGridSize.width@ in the
---     last call to
---     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
---     /must/ evenly divide
---     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@sampleLocationGridSize.width@
---     as returned by
---     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
---     with a @samples@ parameter equaling @rasterizationSamples@
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-sampleLocationsEnable-07486#
---     If a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state enabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     state enabled, and if @sampleLocationsEnable@ was
---     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
---     then the @sampleLocationsInfo.sampleLocationGridSize.height@ in the
---     last call to
---     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
---     /must/ evenly divide
---     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@sampleLocationGridSize.height@
---     as returned by
---     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
---     with a @samples@ parameter equaling @rasterizationSamples@
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-sampleLocationsEnable-07487#
---     If a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     state enabled, and if @sampleLocationsEnable@ was
---     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
---     the fragment shader code /must/ not statically use the extended
---     instruction @InterpolateAtSample@
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-sampleLocationsEnable-07936#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state disabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then @sampleLocationsInfo.sampleLocationGridSize.width@ /must/
---     evenly divide
---     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@sampleLocationGridSize.width@
---     as returned by
---     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
---     with a @samples@ parameter equaling the value of
---     @rasterizationSamples@ in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-sampleLocationsEnable-07937#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state disabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then @sampleLocationsInfo.sampleLocationGridSize.height@ /must/
---     evenly divide
---     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@sampleLocationGridSize.height@
---     as returned by
---     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
---     with a @samples@ parameter equaling the value of
---     @rasterizationSamples@ in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-sampleLocationsEnable-07938#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state disabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then @sampleLocationsInfo.sampleLocationsPerPixel@ /must/ equal
---     @rasterizationSamples@ in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-coverageModulationTableEnable-07488#
---     If a shader object is bound to any graphics stage or the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV'
---     state enabled, and the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV'
---     set @coverageModulationTableEnable@ to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the
---     @coverageModulationTableCount@ parameter in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableNV'
---     /must/ equal the current @rasterizationSamples@ divided by the
---     number of color samples in the current subpass
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-rasterizationSamples-07489# If
---     the @VK_NV_framebuffer_mixed_samples@ extension is enabled, and if
---     current subpass has a depth\/stencil attachment and depth test,
---     stencil test, or depth bounds test are enabled in the bound
---     pipeline, then the current @rasterizationSamples@ /must/ be the same
---     as the sample count of the depth\/stencil attachment
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-coverageToColorEnable-07490#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
---     state enabled and the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
---     set the @coverageToColorEnable@ to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the current subpass
---     /must/ have a color attachment at the location selected by the last
---     call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
---     @coverageToColorLocation@, with a
---     'Vulkan.Core10.Enums.Format.Format' of
---     'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R8_SINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R16_UINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R16_SINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R32_UINT', or
---     'Vulkan.Core10.Enums.Format.FORMAT_R32_SINT'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-rasterizerDiscardEnable-09420#
---     If the @VK_NV_fragment_coverage_to_color@ extension is enabled, and
---     a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
---     set the @coverageToColorEnable@ to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the current subpass
---     /must/ have a color attachment at the location selected by the last
---     call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
---     @coverageToColorLocation@, with a
---     'Vulkan.Core10.Enums.Format.Format' of
---     'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R8_SINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R16_UINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R16_SINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R32_UINT', or
---     'Vulkan.Core10.Enums.Format.FORMAT_R32_SINT'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-coverageReductionMode-07491#
---     If this @VK_NV_coverage_reduction_mode@ extension is enabled, the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
---     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     states enabled, the current coverage reduction mode
---     @coverageReductionMode@, then the current @rasterizationSamples@,
---     and the sample counts for the color and depth\/stencil attachments
---     (if the subpass has them) /must/ be a valid combination returned by
---     'Vulkan.Extensions.VK_NV_coverage_reduction_mode.getPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-viewportCount-07492# 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_SWIZZLE_NV'
---     dynamic state enabled, 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-vkCmdExecuteGeneratedCommandsNV-viewportCount-07493# 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_SWIZZLE_NV'
---     dynamic states enabled then the @viewportCount@ parameter in the
---     last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
---     /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-vkCmdExecuteGeneratedCommandsNV-viewportCount-09421# If the
---     @VK_NV_viewport_swizzle@ extension is enabled, and a shader object
---     is bound to any graphics stage, then the @viewportCount@ parameter
---     in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
---     /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-vkCmdExecuteGeneratedCommandsNV-rasterizationSamples-07494# If
---     the @VK_NV_framebuffer_mixed_samples@ extension is enabled, and if
---     the current subpass has any color attachments and
---     @rasterizationSamples@ of the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     is greater than the number of color samples, then the pipeline
---     @sampleShadingEnable@ /must/ be
---     'Vulkan.Core10.FundamentalTypes.FALSE'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-stippledLineEnable-07495# If
---     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---     or
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---     dynamic states enabled, and if the current @stippledLineEnable@
---     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
---     @lineRasterizationMode@ state is
---     'Vulkan.Extensions.VK_KHR_line_rasterization.LINE_RASTERIZATION_MODE_RECTANGULAR_KHR',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>
---     feature /must/ be enabled
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-stippledLineEnable-07496# If
---     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---     or
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---     dynamic states enabled, and if the current @stippledLineEnable@
---     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
---     @lineRasterizationMode@ state is
---     'Vulkan.Extensions.VK_KHR_line_rasterization.LINE_RASTERIZATION_MODE_BRESENHAM_KHR',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     feature /must/ be enabled
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-stippledLineEnable-07497# If
---     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---     or
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---     dynamic states enabled, and if the current @stippledLineEnable@
---     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
---     @lineRasterizationMode@ state is
---     'Vulkan.Extensions.VK_KHR_line_rasterization.LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     feature /must/ be enabled
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-stippledLineEnable-07498# If
---     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---     or
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---     dynamic states enabled, and if the current @stippledLineEnable@
---     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
---     @lineRasterizationMode@ state is
---     'Vulkan.Extensions.VK_KHR_line_rasterization.LINE_RASTERIZATION_MODE_DEFAULT_KHR',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>
---     feature /must/ be enabled and
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@strictLines@
---     /must/ be 'Vulkan.Core10.FundamentalTypes.TRUE'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-conservativePointAndLineRasterization-07499#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT'
---     dynamic state enabled,
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-conservativePointAndLineRasterization conservativePointAndLineRasterization>
---     is not supported, and the effective primitive topology output by the
---     last pre-rasterization shader stage is a line or point, then the
---     @conservativeRasterizationMode@ set by the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetConservativeRasterizationModeEXT'
---     /must/ be
---     'Vulkan.Extensions.VK_EXT_conservative_rasterization.CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-stage-07073# If the bound
---     pipeline was 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_VERTEX_BIT',
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT',
---     then
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-mesh-shader Mesh Shader Queries>
---     /must/ not be active
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08877# If a shader object
---     is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07850# If dynamic state
---     was inherited from
---     'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV',
---     it /must/ be set in the current command buffer prior to this drawing
---     command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08684# If there is no
---     bound graphics pipeline,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08685# If there is no
---     bound graphics pipeline, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellationShader>
---     feature is enabled,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08686# If there is no
---     bound graphics pipeline, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellationShader>
---     feature is enabled,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08687# If there is no
---     bound graphics pipeline, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometryShader>
---     feature is enabled,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08688# If there is no
---     bound graphics pipeline,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08689# If there is no
---     bound graphics pipeline, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
---     feature is enabled,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08690# If there is no
---     bound graphics pipeline, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
---     feature is enabled,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08693# If there is no
---     bound graphics pipeline, and at least one of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
---     and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
---     features is enabled, one of the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---     stages /must/ have a valid 'Vulkan.Extensions.Handles.ShaderEXT'
---     bound, and the other /must/ have no
---     'Vulkan.Extensions.Handles.ShaderEXT' bound
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08694# If there is no
---     bound graphics pipeline, and both the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
---     and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
---     features are enabled, and a valid
---     'Vulkan.Extensions.Handles.ShaderEXT' is bound the to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---     stage, and that 'Vulkan.Extensions.Handles.ShaderEXT' was created
---     without the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
---     flag, a valid 'Vulkan.Extensions.Handles.ShaderEXT' /must/ be bound
---     to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---     stage
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08695# If there is no
---     bound graphics pipeline, and both the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
---     and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
---     features are enabled, and a valid
---     'Vulkan.Extensions.Handles.ShaderEXT' is bound the to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---     stage, and that 'Vulkan.Extensions.Handles.ShaderEXT' was created
---     with the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
---     flag, there /must/ be no 'Vulkan.Extensions.Handles.ShaderEXT' bound
---     to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---     stage
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08696# If there is no
---     bound graphics pipeline, and a valid
---     'Vulkan.Extensions.Handles.ShaderEXT' is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage, there /must/ be no 'Vulkan.Extensions.Handles.ShaderEXT'
---     bound to either the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---     stage or the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---     stage
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08698# If any graphics
---     shader is bound which was created with the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
---     flag, then all shaders created with the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
---     flag in the same
---     'Vulkan.Extensions.VK_EXT_shader_object.createShadersEXT' call
---     /must/ also be bound
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08699# If any graphics
---     shader is bound which was created with the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
---     flag, any stages in between stages whose shaders which did not
---     create a shader with the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
---     flag as part of the same
---     'Vulkan.Extensions.VK_EXT_shader_object.createShadersEXT' call
---     /must/ not have any 'Vulkan.Extensions.Handles.ShaderEXT' bound
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08878# All bound graphics
---     shader objects /must/ have been created with identical or
---     identically defined push constant ranges
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08879# All bound graphics
---     shader objects /must/ have been created with identical or
---     identically defined arrays of descriptor set layouts
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-colorAttachmentCount-09372# If
---     the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     and a
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
---     equal to @1@, a color attachment with a resolve mode of
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID',
---     and a fragment shader is bound, it /must/ not declare the
---     @DepthReplacing@ or @StencilRefReplacingEXT@ execution modes
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-pDynamicStates-08715# If the
---     bound graphics pipeline state includes a fragment shader stage, was
---     created with
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE'
---     set in
---     'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@,
---     and the fragment shader declares the @EarlyFragmentTests@ execution
---     mode and uses @OpDepthAttachmentReadEXT@, the @depthWriteEnable@
---     parameter in the last call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthWriteEnable'
---     /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-pDynamicStates-08716# If the
---     bound graphics pipeline state includes a fragment shader stage, was
---     created with
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_WRITE_MASK'
---     set in
---     'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@,
---     and the fragment shader declares the @EarlyFragmentTests@ execution
---     mode and uses @OpStencilAttachmentReadEXT@, the @writeMask@
---     parameter in the last call to
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilWriteMask' /must/
---     be @0@
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-09116# If a shader object
---     is bound to any graphics stage or the bound graphics pipeline was
---     created with
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT',
---     and the format of any color attachment is
---     'Vulkan.Core10.Enums.Format.FORMAT_E5B9G9R9_UFLOAT_PACK32', the
---     corresponding element of the @pColorWriteMasks@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     /must/ either include all of
---     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_R_BIT',
---     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_G_BIT',
---     and
---     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_B_BIT',
---     or none of them
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-maxFragmentDualSrcAttachments-09239#
---     If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blending blending>
---     is enabled for any attachment where either the source or destination
---     blend factors for that attachment
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-dsb use the secondary color input>,
---     the maximum value of @Location@ for any output attachment
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-staticuse statically used>
---     in the @Fragment@ @Execution@ @Model@ executed by this command
---     /must/ be less than
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFragmentDualSrcAttachments maxFragmentDualSrcAttachments>
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-09548# If the current
---     render pass was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     and there is no shader object bound to any graphics stage, the value
---     of each element of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingAttachmentLocationInfoKHR'::@pColorAttachmentLocations@
---     set by
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.cmdSetRenderingAttachmentLocationsKHR'
---     /must/ match the value set for the corresponding element in the
---     bound pipeline
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-09549# If the current
---     render pass was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     and there is no shader object bound to any graphics stage, input
---     attachment index mappings in the bound pipeline /must/ match those
---     set for the current render pass instance via
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-09642# If the current
---     render pass was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     with the
---     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT'
---     flag, the bound graphics pipeline /must/ have been created with
---     'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-09643# If the bound
---     graphics pipeline was created with
---     'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT',
---     the current render pass /must/ have begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     with the
---     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT'
---     flag
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-04007# All vertex input
---     bindings accessed via vertex input variables declared in the vertex
---     shader entry point’s interface /must/ have either valid or
---     'Vulkan.Core10.APIConstants.NULL_HANDLE' buffers bound
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-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-vkCmdExecuteGeneratedCommandsNV-None-02721# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, and that pipeline was created without
---     enabling
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT'
---     for @vertexInputs@, then 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-vkCmdExecuteGeneratedCommandsNV-None-07842# If there is a
---     shader object bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY'
---     dynamic state enabled then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-dynamicPrimitiveTopologyUnrestricted-07500#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY'
---     dynamic state enabled and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-dynamicPrimitiveTopologyUnrestricted dynamicPrimitiveTopologyUnrestricted>
---     is 'Vulkan.Core10.FundamentalTypes.FALSE', then the
---     @primitiveTopology@ parameter of
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
---     /must/ be of the same
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-class topology class>
---     as the pipeline
---     'Vulkan.Core10.Pipeline.PipelineInputAssemblyStateCreateInfo'::@topology@
---     state
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-primitiveTopology-10286# If
---     there is a shader object bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
---     stage, then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
---     /must/ have set @primitiveTopology@ to
---     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST'
---     prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-pStrides-04913# If the bound
---     graphics pipeline was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE'
---     dynamic state enabled, but without the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
---     dynamic state enabled, then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this draw command, and the
---     @pStrides@ parameter of
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2'
---     /must/ not be @NULL@
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-04914# If there is a
---     shader object bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage or 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 and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this draw command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-Input-07939# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-vertexAttributeRobustness vertexAttributeRobustness>
---     is not enabled and there is a shader object bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
---     dynamic state enabled then all variables with the @Input@ storage
---     class decorated with @Location@ in the @Vertex@ @Execution@ @Model@
---     @OpEntryPoint@ /must/ contain a location in
---     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@location@
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-Input-08734# If there is a
---     shader object bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
---     dynamic state enabled and either the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-legacyVertexAttributes legacyVertexAttributes>
---     feature is not enabled or the SPIR-V Type associated with a given
---     @Input@ variable of the corresponding @Location@ in the @Vertex@
---     @Execution@ @Model@ @OpEntryPoint@ is 64-bit, then the numeric type
---     associated with all @Input@ variables of the corresponding
---     @Location@ in the @Vertex@ @Execution@ @Model@ @OpEntryPoint@ /must/
---     be the same as
---     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-format-08936# If there is a
---     shader object bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
---     dynamic state enabled and
---     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@
---     has a 64-bit component, then the scalar width associated with all
---     @Input@ variables of the corresponding @Location@ in the @Vertex@
---     @Execution@ @Model@ @OpEntryPoint@ /must/ be 64-bit
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-format-08937# If there is a
---     shader object bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
---     dynamic state enabled and the scalar width associated with a
---     @Location@ decorated @Input@ variable in the @Vertex@ @Execution@
---     @Model@ @OpEntryPoint@ is 64-bit, then the corresponding
---     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@
---     /must/ have a 64-bit component
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-09203# If there is a
---     shader object bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
---     dynamic state enabled and
---     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@
---     has a 64-bit component, then all @Input@ variables at the
---     corresponding @Location@ in the @Vertex@ @Execution@ @Model@
---     @OpEntryPoint@ /must/ not use components that are not present in the
---     format
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-04875# If there is a
---     shader object bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
---     stage or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @primitiveTopology@ is
---     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST',
---     then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPatchControlPointsEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-04879# If there is a
---     shader object bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE'
---     dynamic state enabled then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-09637# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitiveTopologyListRestart primitiveTopologyListRestart>
---     feature is not enabled, the topology is
---     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_POINT_LIST',
---     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_LINE_LIST',
---     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_TRIANGLE_LIST',
---     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY',
---     or
---     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY',
---     there is a shader object bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE'
---     dynamic state enabled then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnable'
---     /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-stage-06481# The bound
---     graphics pipeline /must/ not have been created with the
---     'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo'::@stage@
---     member of any element of
---     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@pStages@ set
---     to
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08885# There /must/ be no
---     shader object bound to either of the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---     stages
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-commandBuffer-02970#
---     @commandBuffer@ /must/ not be a protected command buffer
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-isPreprocessed-02908# If
---     @isPreprocessed@ is 'Vulkan.Core10.FundamentalTypes.TRUE' then
---     'cmdPreprocessGeneratedCommandsNV' /must/ have already been executed
---     on the device, using the same @pGeneratedCommandsInfo@ content as
---     well as the content of the input buffers it references (all except
---     'GeneratedCommandsInfoNV'::@preprocessBuffer@). Furthermore
---     @pGeneratedCommandsInfo@\`s @indirectCommandsLayout@ /must/ have
---     been created with the
---     'INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV' bit set
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-pipeline-02909#
---     'GeneratedCommandsInfoNV'::@pipeline@ /must/ match the current bound
---     pipeline at 'GeneratedCommandsInfoNV'::@pipelineBindPoint@
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-02910# Transform feedback
---     /must/ not be active
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-deviceGeneratedCommands-02911#
---     The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-deviceGeneratedCommandsNV ::deviceGeneratedCommands>
---     feature /must/ be enabled
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-pGeneratedCommandsInfo-parameter#
---     @pGeneratedCommandsInfo@ /must/ be a valid pointer to a valid
---     'GeneratedCommandsInfoNV' structure
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-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-vkCmdExecuteGeneratedCommandsNV-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics, or compute operations
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-renderpass# This command
---     /must/ only be called inside of a render pass instance
---
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-videocoding# This command
---     /must/ only be called outside of a video coding scope
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
--- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Inside                                                                                                                 | Outside                                                                                                                     | Graphics                                                                                                              | Action                                                                                                                                 |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | Compute                                                                                                               | Indirection                                                                                                                            |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_generated_commands VK_NV_device_generated_commands>,
--- 'Vulkan.Core10.FundamentalTypes.Bool32',
--- 'Vulkan.Core10.Handles.CommandBuffer', 'GeneratedCommandsInfoNV'
-cmdExecuteGeneratedCommandsNV :: forall io
-                               . (MonadIO io)
-                              => -- | @commandBuffer@ is the command buffer into which the command is
-                                 -- recorded.
-                                 CommandBuffer
-                              -> -- | @isPreprocessed@ represents whether the input data has already been
-                                 -- preprocessed on the device. If it is
-                                 -- 'Vulkan.Core10.FundamentalTypes.FALSE' this command will implicitly
-                                 -- trigger the preprocessing step, otherwise not.
-                                 ("isPreprocessed" ::: Bool)
-                              -> -- | @pGeneratedCommandsInfo@ is a pointer to a 'GeneratedCommandsInfoNV'
-                                 -- structure containing parameters affecting the generation of commands.
-                                 GeneratedCommandsInfoNV
-                              -> io ()
-cmdExecuteGeneratedCommandsNV commandBuffer
-                                isPreprocessed
-                                generatedCommandsInfo = liftIO . evalContT $ do
-  let vkCmdExecuteGeneratedCommandsNVPtr = pVkCmdExecuteGeneratedCommandsNV (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCmdExecuteGeneratedCommandsNVPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdExecuteGeneratedCommandsNV is null" Nothing Nothing
-  let vkCmdExecuteGeneratedCommandsNV' = mkVkCmdExecuteGeneratedCommandsNV vkCmdExecuteGeneratedCommandsNVPtr
-  pGeneratedCommandsInfo <- ContT $ withCStruct (generatedCommandsInfo)
-  lift $ traceAroundEvent "vkCmdExecuteGeneratedCommandsNV" (vkCmdExecuteGeneratedCommandsNV'
-                                                               (commandBufferHandle (commandBuffer))
-                                                               (boolToBool32 (isPreprocessed))
-                                                               pGeneratedCommandsInfo)
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdPreprocessGeneratedCommandsNV
-  :: FunPtr (Ptr CommandBuffer_T -> Ptr GeneratedCommandsInfoNV -> IO ()) -> Ptr CommandBuffer_T -> Ptr GeneratedCommandsInfoNV -> IO ()
-
--- | vkCmdPreprocessGeneratedCommandsNV - Performs preprocessing for
--- generated commands
---
--- == Valid Usage
---
--- -   #VUID-vkCmdPreprocessGeneratedCommandsNV-commandBuffer-02974#
---     @commandBuffer@ /must/ not be a protected command buffer
---
--- -   #VUID-vkCmdPreprocessGeneratedCommandsNV-pGeneratedCommandsInfo-02927#
---     @pGeneratedCommandsInfo@\`s @indirectCommandsLayout@ /must/ have
---     been created with the
---     'INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV' bit set
---
--- -   #VUID-vkCmdPreprocessGeneratedCommandsNV-deviceGeneratedCommands-02928#
---     The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-deviceGeneratedCommandsNV ::deviceGeneratedCommands>
---     feature /must/ be enabled
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdPreprocessGeneratedCommandsNV-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdPreprocessGeneratedCommandsNV-pGeneratedCommandsInfo-parameter#
---     @pGeneratedCommandsInfo@ /must/ be a valid pointer to a valid
---     'GeneratedCommandsInfoNV' structure
---
--- -   #VUID-vkCmdPreprocessGeneratedCommandsNV-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-vkCmdPreprocessGeneratedCommandsNV-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics, or compute operations
---
--- -   #VUID-vkCmdPreprocessGeneratedCommandsNV-renderpass# This command
---     /must/ only be called outside of a render pass instance
---
--- -   #VUID-vkCmdPreprocessGeneratedCommandsNV-videocoding# This command
---     /must/ only be called outside of a video coding scope
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
--- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | Graphics                                                                                                              | Action                                                                                                                                 |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | Compute                                                                                                               |                                                                                                                                        |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_generated_commands VK_NV_device_generated_commands>,
--- 'Vulkan.Core10.Handles.CommandBuffer', 'GeneratedCommandsInfoNV'
-cmdPreprocessGeneratedCommandsNV :: forall io
-                                  . (MonadIO io)
-                                 => -- | @commandBuffer@ is the command buffer which does the preprocessing.
-                                    CommandBuffer
-                                 -> -- | @pGeneratedCommandsInfo@ is a pointer to a 'GeneratedCommandsInfoNV'
-                                    -- structure containing parameters affecting the preprocessing step.
-                                    GeneratedCommandsInfoNV
-                                 -> io ()
-cmdPreprocessGeneratedCommandsNV commandBuffer
-                                   generatedCommandsInfo = liftIO . evalContT $ do
-  let vkCmdPreprocessGeneratedCommandsNVPtr = pVkCmdPreprocessGeneratedCommandsNV (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCmdPreprocessGeneratedCommandsNVPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdPreprocessGeneratedCommandsNV is null" Nothing Nothing
-  let vkCmdPreprocessGeneratedCommandsNV' = mkVkCmdPreprocessGeneratedCommandsNV vkCmdPreprocessGeneratedCommandsNVPtr
-  pGeneratedCommandsInfo <- ContT $ withCStruct (generatedCommandsInfo)
-  lift $ traceAroundEvent "vkCmdPreprocessGeneratedCommandsNV" (vkCmdPreprocessGeneratedCommandsNV'
-                                                                  (commandBufferHandle (commandBuffer))
-                                                                  pGeneratedCommandsInfo)
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdBindPipelineShaderGroupNV
-  :: FunPtr (Ptr CommandBuffer_T -> PipelineBindPoint -> Pipeline -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> PipelineBindPoint -> Pipeline -> Word32 -> IO ()
-
--- | vkCmdBindPipelineShaderGroupNV - Bind a pipeline object
---
--- == Valid Usage
---
--- -   #VUID-vkCmdBindPipelineShaderGroupNV-groupIndex-02893# @groupIndex@
---     /must/ be @0@ or less than the effective
---     'GraphicsPipelineShaderGroupsCreateInfoNV'::@groupCount@ including
---     the referenced pipelines
---
--- -   #VUID-vkCmdBindPipelineShaderGroupNV-pipelineBindPoint-02894# The
---     @pipelineBindPoint@ /must/ be
---     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
---
--- -   #VUID-vkCmdBindPipelineShaderGroupNV-groupIndex-02895# The same
---     restrictions as
---     'Vulkan.Core10.CommandBufferBuilding.cmdBindPipeline' apply as if
---     the bound pipeline was created only with the Shader Group from the
---     @groupIndex@ information
---
--- -   #VUID-vkCmdBindPipelineShaderGroupNV-deviceGeneratedCommands-02896#
---     The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-deviceGeneratedCommandsNV ::deviceGeneratedCommands>
---     feature /must/ be enabled
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdBindPipelineShaderGroupNV-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdBindPipelineShaderGroupNV-pipelineBindPoint-parameter#
---     @pipelineBindPoint@ /must/ be a valid
---     'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint' value
---
--- -   #VUID-vkCmdBindPipelineShaderGroupNV-pipeline-parameter# @pipeline@
---     /must/ be a valid 'Vulkan.Core10.Handles.Pipeline' handle
---
--- -   #VUID-vkCmdBindPipelineShaderGroupNV-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-vkCmdBindPipelineShaderGroupNV-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics, or compute operations
---
--- -   #VUID-vkCmdBindPipelineShaderGroupNV-videocoding# This command
---     /must/ only be called outside of a video coding scope
---
--- -   #VUID-vkCmdBindPipelineShaderGroupNV-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#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
--- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | Compute                                                                                                               |                                                                                                                                        |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_generated_commands VK_NV_device_generated_commands>,
--- 'Vulkan.Core10.Handles.CommandBuffer', 'Vulkan.Core10.Handles.Pipeline',
--- 'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint'
-cmdBindPipelineShaderGroupNV :: 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 the bind point to which the pipeline will be bound.
-                                PipelineBindPoint
-                             -> -- | @pipeline@ is the pipeline to be bound.
-                                Pipeline
-                             -> -- | @groupIndex@ is the shader group to be bound.
-                                ("groupIndex" ::: Word32)
-                             -> io ()
-cmdBindPipelineShaderGroupNV commandBuffer
-                               pipelineBindPoint
-                               pipeline
-                               groupIndex = liftIO $ do
-  let vkCmdBindPipelineShaderGroupNVPtr = pVkCmdBindPipelineShaderGroupNV (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  unless (vkCmdBindPipelineShaderGroupNVPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdBindPipelineShaderGroupNV is null" Nothing Nothing
-  let vkCmdBindPipelineShaderGroupNV' = mkVkCmdBindPipelineShaderGroupNV vkCmdBindPipelineShaderGroupNVPtr
-  traceAroundEvent "vkCmdBindPipelineShaderGroupNV" (vkCmdBindPipelineShaderGroupNV'
-                                                       (commandBufferHandle (commandBuffer))
-                                                       (pipelineBindPoint)
-                                                       (pipeline)
-                                                       (groupIndex))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkGetGeneratedCommandsMemoryRequirementsNV
-  :: FunPtr (Ptr Device_T -> Ptr GeneratedCommandsMemoryRequirementsInfoNV -> Ptr (SomeStruct MemoryRequirements2) -> IO ()) -> Ptr Device_T -> Ptr GeneratedCommandsMemoryRequirementsInfoNV -> Ptr (SomeStruct MemoryRequirements2) -> IO ()
-
--- | vkGetGeneratedCommandsMemoryRequirementsNV - Retrieve the buffer
--- allocation requirements for generated commands
---
--- == Valid Usage
---
--- -   #VUID-vkGetGeneratedCommandsMemoryRequirementsNV-deviceGeneratedCommands-02906#
---     The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-deviceGeneratedCommandsNV ::deviceGeneratedCommands>
---     feature /must/ be enabled
---
--- -   #VUID-vkGetGeneratedCommandsMemoryRequirementsNV-pInfo-09074# If
---     @pInfo->pipelineBindPoint@ is of type
---     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_COMPUTE',
---     then the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-deviceGeneratedCompute ::deviceGeneratedCompute>
---     feature /must/ be enabled
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkGetGeneratedCommandsMemoryRequirementsNV-device-parameter#
---     @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
---
--- -   #VUID-vkGetGeneratedCommandsMemoryRequirementsNV-pInfo-parameter#
---     @pInfo@ /must/ be a valid pointer to a valid
---     'GeneratedCommandsMemoryRequirementsInfoNV' structure
---
--- -   #VUID-vkGetGeneratedCommandsMemoryRequirementsNV-pMemoryRequirements-parameter#
---     @pMemoryRequirements@ /must/ be a valid pointer to a
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.MemoryRequirements2'
---     structure
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_generated_commands VK_NV_device_generated_commands>,
--- 'Vulkan.Core10.Handles.Device',
--- 'GeneratedCommandsMemoryRequirementsInfoNV',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.MemoryRequirements2'
-getGeneratedCommandsMemoryRequirementsNV :: forall a io
-                                          . ( Extendss MemoryRequirements2 a
-                                            , PokeChain a
-                                            , PeekChain a
-                                            , MonadIO io )
-                                         => -- | @device@ is the logical device that owns the buffer.
-                                            Device
-                                         -> -- | @pInfo@ is a pointer to a 'GeneratedCommandsMemoryRequirementsInfoNV'
-                                            -- structure containing parameters required for the memory requirements
-                                            -- query.
-                                            GeneratedCommandsMemoryRequirementsInfoNV
-                                         -> io (MemoryRequirements2 a)
-getGeneratedCommandsMemoryRequirementsNV device info = liftIO . evalContT $ do
-  let vkGetGeneratedCommandsMemoryRequirementsNVPtr = pVkGetGeneratedCommandsMemoryRequirementsNV (case device of Device{deviceCmds} -> deviceCmds)
-  lift $ unless (vkGetGeneratedCommandsMemoryRequirementsNVPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetGeneratedCommandsMemoryRequirementsNV is null" Nothing Nothing
-  let vkGetGeneratedCommandsMemoryRequirementsNV' = mkVkGetGeneratedCommandsMemoryRequirementsNV vkGetGeneratedCommandsMemoryRequirementsNVPtr
-  pInfo <- ContT $ withCStruct (info)
-  pPMemoryRequirements <- ContT (withZeroCStruct @(MemoryRequirements2 _))
-  lift $ traceAroundEvent "vkGetGeneratedCommandsMemoryRequirementsNV" (vkGetGeneratedCommandsMemoryRequirementsNV'
-                                                                          (deviceHandle (device))
-                                                                          pInfo
-                                                                          (forgetExtensions (pPMemoryRequirements)))
-  pMemoryRequirements <- lift $ peekCStruct @(MemoryRequirements2 _) pPMemoryRequirements
-  pure $ (pMemoryRequirements)
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCreateIndirectCommandsLayoutNV
-  :: FunPtr (Ptr Device_T -> Ptr IndirectCommandsLayoutCreateInfoNV -> Ptr AllocationCallbacks -> Ptr IndirectCommandsLayoutNV -> IO Result) -> Ptr Device_T -> Ptr IndirectCommandsLayoutCreateInfoNV -> Ptr AllocationCallbacks -> Ptr IndirectCommandsLayoutNV -> IO Result
-
--- | vkCreateIndirectCommandsLayoutNV - Create an indirect command layout
--- object
---
--- == Valid Usage
---
--- -   #VUID-vkCreateIndirectCommandsLayoutNV-deviceGeneratedCommands-02929#
---     The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-deviceGeneratedCommandsNV ::deviceGeneratedCommands>
---     feature /must/ be enabled
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCreateIndirectCommandsLayoutNV-device-parameter# @device@
---     /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
---
--- -   #VUID-vkCreateIndirectCommandsLayoutNV-pCreateInfo-parameter#
---     @pCreateInfo@ /must/ be a valid pointer to a valid
---     'IndirectCommandsLayoutCreateInfoNV' structure
---
--- -   #VUID-vkCreateIndirectCommandsLayoutNV-pAllocator-parameter# If
---     @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid pointer
---     to a valid 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'
---     structure
---
--- -   #VUID-vkCreateIndirectCommandsLayoutNV-pIndirectCommandsLayout-parameter#
---     @pIndirectCommandsLayout@ /must/ be a valid pointer to a
---     'Vulkan.Extensions.Handles.IndirectCommandsLayoutNV' 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'
---
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_generated_commands VK_NV_device_generated_commands>,
--- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',
--- 'Vulkan.Core10.Handles.Device', 'IndirectCommandsLayoutCreateInfoNV',
--- 'Vulkan.Extensions.Handles.IndirectCommandsLayoutNV'
-createIndirectCommandsLayoutNV :: forall io
-                                . (MonadIO io)
-                               => -- | @device@ is the logical device that creates the indirect command layout.
-                                  Device
-                               -> -- | @pCreateInfo@ is a pointer to a 'IndirectCommandsLayoutCreateInfoNV'
-                                  -- structure containing parameters affecting creation of the indirect
-                                  -- command layout.
-                                  IndirectCommandsLayoutCreateInfoNV
-                               -> -- | @pAllocator@ controls host memory allocation as described in the
-                                  -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
-                                  -- chapter.
-                                  ("allocator" ::: Maybe AllocationCallbacks)
-                               -> io (IndirectCommandsLayoutNV)
-createIndirectCommandsLayoutNV device
-                                 createInfo
-                                 allocator = liftIO . evalContT $ do
-  let vkCreateIndirectCommandsLayoutNVPtr = pVkCreateIndirectCommandsLayoutNV (case device of Device{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCreateIndirectCommandsLayoutNVPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCreateIndirectCommandsLayoutNV is null" Nothing Nothing
-  let vkCreateIndirectCommandsLayoutNV' = mkVkCreateIndirectCommandsLayoutNV vkCreateIndirectCommandsLayoutNVPtr
-  pCreateInfo <- ContT $ withCStruct (createInfo)
-  pAllocator <- case (allocator) of
-    Nothing -> pure nullPtr
-    Just j -> ContT $ withCStruct (j)
-  pPIndirectCommandsLayout <- ContT $ bracket (callocBytes @IndirectCommandsLayoutNV 8) free
-  r <- lift $ traceAroundEvent "vkCreateIndirectCommandsLayoutNV" (vkCreateIndirectCommandsLayoutNV'
-                                                                     (deviceHandle (device))
-                                                                     pCreateInfo
-                                                                     pAllocator
-                                                                     (pPIndirectCommandsLayout))
-  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
-  pIndirectCommandsLayout <- lift $ peek @IndirectCommandsLayoutNV pPIndirectCommandsLayout
-  pure $ (pIndirectCommandsLayout)
-
--- | A convenience wrapper to make a compatible pair of calls to
--- 'createIndirectCommandsLayoutNV' and 'destroyIndirectCommandsLayoutNV'
---
--- To ensure that 'destroyIndirectCommandsLayoutNV' 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.
---
-withIndirectCommandsLayoutNV :: forall io r . MonadIO io => Device -> IndirectCommandsLayoutCreateInfoNV -> Maybe AllocationCallbacks -> (io IndirectCommandsLayoutNV -> (IndirectCommandsLayoutNV -> io ()) -> r) -> r
-withIndirectCommandsLayoutNV device pCreateInfo pAllocator b =
-  b (createIndirectCommandsLayoutNV device pCreateInfo pAllocator)
-    (\(o0) -> destroyIndirectCommandsLayoutNV device o0 pAllocator)
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkDestroyIndirectCommandsLayoutNV
-  :: FunPtr (Ptr Device_T -> IndirectCommandsLayoutNV -> Ptr AllocationCallbacks -> IO ()) -> Ptr Device_T -> IndirectCommandsLayoutNV -> Ptr AllocationCallbacks -> IO ()
-
--- | vkDestroyIndirectCommandsLayoutNV - Destroy an indirect commands layout
---
--- == Valid Usage
---
--- -   #VUID-vkDestroyIndirectCommandsLayoutNV-indirectCommandsLayout-02938#
---     All submitted commands that refer to @indirectCommandsLayout@ /must/
---     have completed execution
---
--- -   #VUID-vkDestroyIndirectCommandsLayoutNV-indirectCommandsLayout-02939#
---     If 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' were
---     provided when @indirectCommandsLayout@ was created, a compatible set
---     of callbacks /must/ be provided here
---
--- -   #VUID-vkDestroyIndirectCommandsLayoutNV-indirectCommandsLayout-02940#
---     If no 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' were
---     provided when @indirectCommandsLayout@ was created, @pAllocator@
---     /must/ be @NULL@
---
--- -   #VUID-vkDestroyIndirectCommandsLayoutNV-deviceGeneratedCommands-02941#
---     The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-deviceGeneratedCommandsNV ::deviceGeneratedCommands>
---     feature /must/ be enabled
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkDestroyIndirectCommandsLayoutNV-device-parameter# @device@
---     /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
---
--- -   #VUID-vkDestroyIndirectCommandsLayoutNV-indirectCommandsLayout-parameter#
---     If @indirectCommandsLayout@ is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', @indirectCommandsLayout@
---     /must/ be a valid
---     'Vulkan.Extensions.Handles.IndirectCommandsLayoutNV' handle
---
--- -   #VUID-vkDestroyIndirectCommandsLayoutNV-pAllocator-parameter# If
---     @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid pointer
---     to a valid 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'
---     structure
---
--- -   #VUID-vkDestroyIndirectCommandsLayoutNV-indirectCommandsLayout-parent#
---     If @indirectCommandsLayout@ is a valid handle, it /must/ have been
---     created, allocated, or retrieved from @device@
---
--- == Host Synchronization
---
--- -   Host access to @indirectCommandsLayout@ /must/ be externally
---     synchronized
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_generated_commands VK_NV_device_generated_commands>,
--- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',
--- 'Vulkan.Core10.Handles.Device',
--- 'Vulkan.Extensions.Handles.IndirectCommandsLayoutNV'
-destroyIndirectCommandsLayoutNV :: forall io
-                                 . (MonadIO io)
-                                => -- | @device@ is the logical device that destroys the layout.
-                                   Device
-                                -> -- | @indirectCommandsLayout@ is the layout to destroy.
-                                   IndirectCommandsLayoutNV
-                                -> -- | @pAllocator@ controls host memory allocation as described in the
-                                   -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
-                                   -- chapter.
-                                   ("allocator" ::: Maybe AllocationCallbacks)
-                                -> io ()
-destroyIndirectCommandsLayoutNV device
-                                  indirectCommandsLayout
-                                  allocator = liftIO . evalContT $ do
-  let vkDestroyIndirectCommandsLayoutNVPtr = pVkDestroyIndirectCommandsLayoutNV (case device of Device{deviceCmds} -> deviceCmds)
-  lift $ unless (vkDestroyIndirectCommandsLayoutNVPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkDestroyIndirectCommandsLayoutNV is null" Nothing Nothing
-  let vkDestroyIndirectCommandsLayoutNV' = mkVkDestroyIndirectCommandsLayoutNV vkDestroyIndirectCommandsLayoutNVPtr
-  pAllocator <- case (allocator) of
-    Nothing -> pure nullPtr
-    Just j -> ContT $ withCStruct (j)
-  lift $ traceAroundEvent "vkDestroyIndirectCommandsLayoutNV" (vkDestroyIndirectCommandsLayoutNV'
-                                                                 (deviceHandle (device))
-                                                                 (indirectCommandsLayout)
-                                                                 pAllocator)
-  pure $ ()
-
-
--- | VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV - Structure describing
--- the device-generated commands features that can be supported by an
--- implementation
---
--- = Members
---
--- This structure describes the following feature:
---
--- = Description
---
--- If the 'PhysicalDeviceDeviceGeneratedCommandsFeaturesNV' 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. 'PhysicalDeviceDeviceGeneratedCommandsFeaturesNV' /can/ also
--- be used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo'
--- to selectively enable these features.
---
--- == Valid Usage (Implicit)
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_generated_commands VK_NV_device_generated_commands>,
--- 'Vulkan.Core10.FundamentalTypes.Bool32',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PhysicalDeviceDeviceGeneratedCommandsFeaturesNV = PhysicalDeviceDeviceGeneratedCommandsFeaturesNV
-  { -- | #features-deviceGeneratedCommandsNV# @deviceGeneratedCommands@ indicates
-    -- whether the implementation supports functionality to generate commands
-    -- on the device. See
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#device-generated-commands Device-Generated Commands>.
-    deviceGeneratedCommands :: Bool }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PhysicalDeviceDeviceGeneratedCommandsFeaturesNV)
-#endif
-deriving instance Show PhysicalDeviceDeviceGeneratedCommandsFeaturesNV
-
-instance ToCStruct PhysicalDeviceDeviceGeneratedCommandsFeaturesNV where
-  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PhysicalDeviceDeviceGeneratedCommandsFeaturesNV{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (deviceGeneratedCommands))
-    f
-  cStructSize = 24
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
-    f
-
-instance FromCStruct PhysicalDeviceDeviceGeneratedCommandsFeaturesNV where
-  peekCStruct p = do
-    deviceGeneratedCommands <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
-    pure $ PhysicalDeviceDeviceGeneratedCommandsFeaturesNV
-             (bool32ToBool deviceGeneratedCommands)
-
-instance Storable PhysicalDeviceDeviceGeneratedCommandsFeaturesNV where
-  sizeOf ~_ = 24
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero PhysicalDeviceDeviceGeneratedCommandsFeaturesNV where
-  zero = PhysicalDeviceDeviceGeneratedCommandsFeaturesNV
-           zero
-
-
--- | VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV - Structure
--- describing push descriptor limits that can be supported by an
--- implementation
---
--- = Description
---
--- If the 'PhysicalDeviceDeviceGeneratedCommandsPropertiesNV' structure is
--- included in the @pNext@ chain of the
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
--- structure passed to
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceProperties2',
--- it is filled in with each corresponding implementation-dependent
--- property.
---
--- == Valid Usage (Implicit)
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_generated_commands VK_NV_device_generated_commands>,
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PhysicalDeviceDeviceGeneratedCommandsPropertiesNV = PhysicalDeviceDeviceGeneratedCommandsPropertiesNV
-  { -- | @maxGraphicsShaderGroupCount@ is the maximum number of shader groups in
-    -- 'GraphicsPipelineShaderGroupsCreateInfoNV'.
-    maxGraphicsShaderGroupCount :: Word32
-  , -- | @maxIndirectSequenceCount@ is the maximum number of sequences in
-    -- 'GeneratedCommandsInfoNV' and in
-    -- 'GeneratedCommandsMemoryRequirementsInfoNV'.
-    maxIndirectSequenceCount :: Word32
-  , -- | @maxIndirectCommandsTokenCount@ is the maximum number of tokens in
-    -- 'IndirectCommandsLayoutCreateInfoNV'.
-    maxIndirectCommandsTokenCount :: Word32
-  , -- | @maxIndirectCommandsStreamCount@ is the maximum number of streams in
-    -- 'IndirectCommandsLayoutCreateInfoNV'.
-    maxIndirectCommandsStreamCount :: Word32
-  , -- | @maxIndirectCommandsTokenOffset@ is the maximum offset in
-    -- 'IndirectCommandsLayoutTokenNV'.
-    maxIndirectCommandsTokenOffset :: Word32
-  , -- | @maxIndirectCommandsStreamStride@ is the maximum stream stride in
-    -- 'IndirectCommandsLayoutCreateInfoNV'.
-    maxIndirectCommandsStreamStride :: Word32
-  , -- | @minSequencesCountBufferOffsetAlignment@ is the minimum alignment for
-    -- memory addresses which /can/ be used in 'GeneratedCommandsInfoNV'.
-    minSequencesCountBufferOffsetAlignment :: Word32
-  , -- | @minSequencesIndexBufferOffsetAlignment@ is the minimum alignment for
-    -- memory addresses which /can/ be used in 'GeneratedCommandsInfoNV'.
-    minSequencesIndexBufferOffsetAlignment :: Word32
-  , -- | @minIndirectCommandsBufferOffsetAlignment@ is the minimum alignment for
-    -- memory addresses used in 'IndirectCommandsStreamNV', and as preprocess
-    -- buffer in 'GeneratedCommandsInfoNV'.
-    minIndirectCommandsBufferOffsetAlignment :: Word32
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PhysicalDeviceDeviceGeneratedCommandsPropertiesNV)
-#endif
-deriving instance Show PhysicalDeviceDeviceGeneratedCommandsPropertiesNV
-
-instance ToCStruct PhysicalDeviceDeviceGeneratedCommandsPropertiesNV where
-  withCStruct x f = allocaBytes 56 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PhysicalDeviceDeviceGeneratedCommandsPropertiesNV{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Word32)) (maxGraphicsShaderGroupCount)
-    poke ((p `plusPtr` 20 :: Ptr Word32)) (maxIndirectSequenceCount)
-    poke ((p `plusPtr` 24 :: Ptr Word32)) (maxIndirectCommandsTokenCount)
-    poke ((p `plusPtr` 28 :: Ptr Word32)) (maxIndirectCommandsStreamCount)
-    poke ((p `plusPtr` 32 :: Ptr Word32)) (maxIndirectCommandsTokenOffset)
-    poke ((p `plusPtr` 36 :: Ptr Word32)) (maxIndirectCommandsStreamStride)
-    poke ((p `plusPtr` 40 :: Ptr Word32)) (minSequencesCountBufferOffsetAlignment)
-    poke ((p `plusPtr` 44 :: Ptr Word32)) (minSequencesIndexBufferOffsetAlignment)
-    poke ((p `plusPtr` 48 :: Ptr Word32)) (minIndirectCommandsBufferOffsetAlignment)
-    f
-  cStructSize = 56
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV)
-    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)
-    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)
-    f
-
-instance FromCStruct PhysicalDeviceDeviceGeneratedCommandsPropertiesNV where
-  peekCStruct p = do
-    maxGraphicsShaderGroupCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
-    maxIndirectSequenceCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
-    maxIndirectCommandsTokenCount <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))
-    maxIndirectCommandsStreamCount <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))
-    maxIndirectCommandsTokenOffset <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))
-    maxIndirectCommandsStreamStride <- peek @Word32 ((p `plusPtr` 36 :: Ptr Word32))
-    minSequencesCountBufferOffsetAlignment <- peek @Word32 ((p `plusPtr` 40 :: Ptr Word32))
-    minSequencesIndexBufferOffsetAlignment <- peek @Word32 ((p `plusPtr` 44 :: Ptr Word32))
-    minIndirectCommandsBufferOffsetAlignment <- peek @Word32 ((p `plusPtr` 48 :: Ptr Word32))
-    pure $ PhysicalDeviceDeviceGeneratedCommandsPropertiesNV
-             maxGraphicsShaderGroupCount
-             maxIndirectSequenceCount
-             maxIndirectCommandsTokenCount
-             maxIndirectCommandsStreamCount
-             maxIndirectCommandsTokenOffset
-             maxIndirectCommandsStreamStride
-             minSequencesCountBufferOffsetAlignment
-             minSequencesIndexBufferOffsetAlignment
-             minIndirectCommandsBufferOffsetAlignment
-
-instance Storable PhysicalDeviceDeviceGeneratedCommandsPropertiesNV where
-  sizeOf ~_ = 56
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero PhysicalDeviceDeviceGeneratedCommandsPropertiesNV where
-  zero = PhysicalDeviceDeviceGeneratedCommandsPropertiesNV
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-
-
--- | VkGraphicsShaderGroupCreateInfoNV - Structure specifying override
--- parameters for each shader group
---
--- == Valid Usage
---
--- -   #VUID-VkGraphicsShaderGroupCreateInfoNV-stageCount-02888# For
---     @stageCount@, the same restrictions as in
---     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@stageCount@
---     apply
---
--- -   #VUID-VkGraphicsShaderGroupCreateInfoNV-pStages-02889# For
---     @pStages@, the same restrictions as in
---     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@pStages@ apply
---
--- -   #VUID-VkGraphicsShaderGroupCreateInfoNV-pVertexInputState-02890# For
---     @pVertexInputState@, the same restrictions as in
---     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@pVertexInputState@
---     apply
---
--- -   #VUID-VkGraphicsShaderGroupCreateInfoNV-pTessellationState-02891#
---     For @pTessellationState@, the same restrictions as in
---     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@pTessellationState@
---     apply
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkGraphicsShaderGroupCreateInfoNV-sType-sType# @sType@ /must/
---     be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV'
---
--- -   #VUID-VkGraphicsShaderGroupCreateInfoNV-pNext-pNext# @pNext@ /must/
---     be @NULL@
---
--- -   #VUID-VkGraphicsShaderGroupCreateInfoNV-pStages-parameter# @pStages@
---     /must/ be a valid pointer to an array of @stageCount@ valid
---     'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo' structures
---
--- -   #VUID-VkGraphicsShaderGroupCreateInfoNV-stageCount-arraylength#
---     @stageCount@ /must/ be greater than @0@
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_generated_commands VK_NV_device_generated_commands>,
--- 'GraphicsPipelineShaderGroupsCreateInfoNV',
--- 'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo',
--- 'Vulkan.Core10.Pipeline.PipelineTessellationStateCreateInfo',
--- 'Vulkan.Core10.Pipeline.PipelineVertexInputStateCreateInfo',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data GraphicsShaderGroupCreateInfoNV = GraphicsShaderGroupCreateInfoNV
-  { -- | @pStages@ is a pointer to an array
-    -- 'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo' structures
-    -- specifying the set of the shader stages to be included in this shader
-    -- group.
-    stages :: Vector (SomeStruct PipelineShaderStageCreateInfo)
-  , -- | @pVertexInputState@ is a pointer to a
-    -- 'Vulkan.Core10.Pipeline.PipelineVertexInputStateCreateInfo' structure.
-    vertexInputState :: Maybe (SomeStruct PipelineVertexInputStateCreateInfo)
-  , -- | @pTessellationState@ is a pointer to a
-    -- 'Vulkan.Core10.Pipeline.PipelineTessellationStateCreateInfo' structure,
-    -- and is ignored if the shader group does not include a tessellation
-    -- control shader stage and tessellation evaluation shader stage.
-    tessellationState :: Maybe (SomeStruct PipelineTessellationStateCreateInfo)
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (GraphicsShaderGroupCreateInfoNV)
-#endif
-deriving instance Show GraphicsShaderGroupCreateInfoNV
-
-instance ToCStruct GraphicsShaderGroupCreateInfoNV where
-  withCStruct x f = allocaBytes 48 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p GraphicsShaderGroupCreateInfoNV{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (stages)) :: Word32))
-    pPStages' <- ContT $ allocaBytes @(PipelineShaderStageCreateInfo _) ((Data.Vector.length (stages)) * 48)
-    Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPStages' `plusPtr` (48 * (i)) :: Ptr (PipelineShaderStageCreateInfo _))) (e) . ($ ())) (stages)
-    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr (PipelineShaderStageCreateInfo _)))) (pPStages')
-    pVertexInputState'' <- case (vertexInputState) of
-      Nothing -> pure nullPtr
-      Just j -> ContT @_ @_ @(Ptr (PipelineVertexInputStateCreateInfo '[])) $ \cont -> withSomeCStruct @PipelineVertexInputStateCreateInfo (j) (cont . castPtr)
-    lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr (PipelineVertexInputStateCreateInfo _)))) pVertexInputState''
-    pTessellationState'' <- case (tessellationState) of
-      Nothing -> pure nullPtr
-      Just j -> ContT @_ @_ @(Ptr (PipelineTessellationStateCreateInfo '[])) $ \cont -> withSomeCStruct @PipelineTessellationStateCreateInfo (j) (cont . castPtr)
-    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr (PipelineTessellationStateCreateInfo _)))) pTessellationState''
-    lift $ f
-  cStructSize = 48
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    f
-
-instance FromCStruct GraphicsShaderGroupCreateInfoNV where
-  peekCStruct p = do
-    stageCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
-    pStages <- peek @(Ptr (PipelineShaderStageCreateInfo _)) ((p `plusPtr` 24 :: Ptr (Ptr (PipelineShaderStageCreateInfo _))))
-    pStages' <- generateM (fromIntegral stageCount) (\i -> peekSomeCStruct (forgetExtensions ((pStages `advancePtrBytes` (48 * (i)) :: Ptr (PipelineShaderStageCreateInfo _)))))
-    pVertexInputState <- peek @(Ptr (PipelineVertexInputStateCreateInfo _)) ((p `plusPtr` 32 :: Ptr (Ptr (PipelineVertexInputStateCreateInfo _))))
-    pVertexInputState' <- maybePeek (\j -> peekSomeCStruct (forgetExtensions (j))) pVertexInputState
-    pTessellationState <- peek @(Ptr (PipelineTessellationStateCreateInfo _)) ((p `plusPtr` 40 :: Ptr (Ptr (PipelineTessellationStateCreateInfo _))))
-    pTessellationState' <- maybePeek (\j -> peekSomeCStruct (forgetExtensions (j))) pTessellationState
-    pure $ GraphicsShaderGroupCreateInfoNV
-             pStages' pVertexInputState' pTessellationState'
-
-instance Zero GraphicsShaderGroupCreateInfoNV where
-  zero = GraphicsShaderGroupCreateInfoNV
-           mempty
-           Nothing
-           Nothing
-
-
--- | VkGraphicsPipelineShaderGroupsCreateInfoNV - Structure specifying
--- parameters of a newly created multi shader group pipeline
---
--- = Description
---
--- When referencing shader groups by index, groups defined in the
--- referenced pipelines are treated as if they were defined as additional
--- entries in @pGroups@. They are appended in the order they appear in the
--- @pPipelines@ array and in the @pGroups@ array when those pipelines were
--- defined.
---
--- The application /must/ maintain the lifetime of all such referenced
--- pipelines based on the pipelines that make use of them.
---
--- == Valid Usage
---
--- -   #VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-groupCount-02879#
---     @groupCount@ /must/ be at least @1@ and as maximum
---     'PhysicalDeviceDeviceGeneratedCommandsPropertiesNV'::@maxGraphicsShaderGroupCount@
---
--- -   #VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-groupCount-02880#
---     The sum of @groupCount@ including those groups added from referenced
---     @pPipelines@ /must/ also be as maximum
---     'PhysicalDeviceDeviceGeneratedCommandsPropertiesNV'::@maxGraphicsShaderGroupCount@
---
--- -   #VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-pGroups-02881# The
---     state of the first element of @pGroups@ /must/ match its equivalent
---     within the parent’s
---     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'
---
--- -   #VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-pGroups-02882# Each
---     element of @pGroups@ /must/ in combination with the rest of the
---     pipeline state yield a valid state configuration
---
--- -   #VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-pGroups-02884# All
---     elements of @pGroups@ /must/ use the same shader stage combinations
---     unless any mesh shader stage is used, then either combination of
---     task and mesh or just mesh shader is valid
---
--- -   #VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-pGroups-02885# Mesh
---     and regular primitive shading stages cannot be mixed across
---     @pGroups@
---
--- -   #VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-pPipelines-02886#
---     Each element of @pPipelines@ /must/ have been created with identical
---     state to the pipeline currently created except the state that can be
---     overridden by 'GraphicsShaderGroupCreateInfoNV'
---
--- -   #VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-deviceGeneratedCommands-02887#
---     The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-deviceGeneratedCommandsNV ::deviceGeneratedCommands>
---     feature /must/ be enabled
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-sType-sType#
---     @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV'
---
--- -   #VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-pGroups-parameter#
---     If @groupCount@ is not @0@, @pGroups@ /must/ be a valid pointer to
---     an array of @groupCount@ valid 'GraphicsShaderGroupCreateInfoNV'
---     structures
---
--- -   #VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-pPipelines-parameter#
---     If @pipelineCount@ is not @0@, @pPipelines@ /must/ be a valid
---     pointer to an array of @pipelineCount@ valid
---     'Vulkan.Core10.Handles.Pipeline' handles
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_generated_commands VK_NV_device_generated_commands>,
--- 'GraphicsShaderGroupCreateInfoNV', 'Vulkan.Core10.Handles.Pipeline',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data GraphicsPipelineShaderGroupsCreateInfoNV = GraphicsPipelineShaderGroupsCreateInfoNV
-  { -- | @pGroups@ is a pointer to an array of 'GraphicsShaderGroupCreateInfoNV'
-    -- structures specifying which state of the original
-    -- 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo' each shader group
-    -- overrides.
-    groups :: Vector GraphicsShaderGroupCreateInfoNV
-  , -- | @pPipelines@ is a pointer to an array of graphics
-    -- 'Vulkan.Core10.Handles.Pipeline' structures which are referenced within
-    -- the created pipeline, including all their shader groups.
-    pipelines :: Vector Pipeline
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (GraphicsPipelineShaderGroupsCreateInfoNV)
-#endif
-deriving instance Show GraphicsPipelineShaderGroupsCreateInfoNV
-
-instance ToCStruct GraphicsPipelineShaderGroupsCreateInfoNV where
-  withCStruct x f = allocaBytes 48 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p GraphicsPipelineShaderGroupsCreateInfoNV{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (groups)) :: Word32))
-    pPGroups' <- ContT $ allocaBytes @GraphicsShaderGroupCreateInfoNV ((Data.Vector.length (groups)) * 48)
-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPGroups' `plusPtr` (48 * (i)) :: Ptr GraphicsShaderGroupCreateInfoNV) (e) . ($ ())) (groups)
-    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr GraphicsShaderGroupCreateInfoNV))) (pPGroups')
-    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (pipelines)) :: Word32))
-    pPPipelines' <- ContT $ allocaBytes @Pipeline ((Data.Vector.length (pipelines)) * 8)
-    lift $ Data.Vector.imapM_ (\i e -> poke (pPPipelines' `plusPtr` (8 * (i)) :: Ptr Pipeline) (e)) (pipelines)
-    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr Pipeline))) (pPPipelines')
-    lift $ f
-  cStructSize = 48
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    f
-
-instance FromCStruct GraphicsPipelineShaderGroupsCreateInfoNV where
-  peekCStruct p = do
-    groupCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
-    pGroups <- peek @(Ptr GraphicsShaderGroupCreateInfoNV) ((p `plusPtr` 24 :: Ptr (Ptr GraphicsShaderGroupCreateInfoNV)))
-    pGroups' <- generateM (fromIntegral groupCount) (\i -> peekCStruct @GraphicsShaderGroupCreateInfoNV ((pGroups `advancePtrBytes` (48 * (i)) :: Ptr GraphicsShaderGroupCreateInfoNV)))
-    pipelineCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))
-    pPipelines <- peek @(Ptr Pipeline) ((p `plusPtr` 40 :: Ptr (Ptr Pipeline)))
-    pPipelines' <- generateM (fromIntegral pipelineCount) (\i -> peek @Pipeline ((pPipelines `advancePtrBytes` (8 * (i)) :: Ptr Pipeline)))
-    pure $ GraphicsPipelineShaderGroupsCreateInfoNV
-             pGroups' pPipelines'
-
-instance Zero GraphicsPipelineShaderGroupsCreateInfoNV where
-  zero = GraphicsPipelineShaderGroupsCreateInfoNV
-           mempty
-           mempty
-
-
--- | VkBindShaderGroupIndirectCommandNV - Structure specifying input data for
--- a single shader group command token
---
--- == Valid Usage
---
--- -   #VUID-VkBindShaderGroupIndirectCommandNV-None-02944# The current
---     bound graphics pipeline, as well as the pipelines it may reference,
---     /must/ have been created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV'
---
--- -   #VUID-VkBindShaderGroupIndirectCommandNV-index-02945# The @index@
---     /must/ be within range of the accessible shader groups of the
---     current bound graphics pipeline. See 'cmdBindPipelineShaderGroupNV'
---     for further details
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_generated_commands VK_NV_device_generated_commands>
-data BindShaderGroupIndirectCommandNV = BindShaderGroupIndirectCommandNV
-  { -- | @groupIndex@ specifies which shader group of the current bound graphics
-    -- pipeline is used.
-    groupIndex :: Word32 }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (BindShaderGroupIndirectCommandNV)
-#endif
-deriving instance Show BindShaderGroupIndirectCommandNV
-
-instance ToCStruct BindShaderGroupIndirectCommandNV where
-  withCStruct x f = allocaBytes 4 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p BindShaderGroupIndirectCommandNV{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr Word32)) (groupIndex)
-    f
-  cStructSize = 4
-  cStructAlignment = 4
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)
-    f
-
-instance FromCStruct BindShaderGroupIndirectCommandNV where
-  peekCStruct p = do
-    groupIndex <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))
-    pure $ BindShaderGroupIndirectCommandNV
-             groupIndex
-
-instance Storable BindShaderGroupIndirectCommandNV where
-  sizeOf ~_ = 4
-  alignment ~_ = 4
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero BindShaderGroupIndirectCommandNV where
-  zero = BindShaderGroupIndirectCommandNV
-           zero
-
-
--- | VkBindIndexBufferIndirectCommandNV - Structure specifying input data for
--- a single index buffer command token
---
--- == Valid Usage
---
--- -   #VUID-VkBindIndexBufferIndirectCommandNV-None-02946# The buffer’s
---     usage flag from which the address was acquired /must/ have the
---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDEX_BUFFER_BIT'
---     bit set
---
--- -   #VUID-VkBindIndexBufferIndirectCommandNV-bufferAddress-02947# The
---     @bufferAddress@ /must/ be aligned to the @indexType@ used
---
--- -   #VUID-VkBindIndexBufferIndirectCommandNV-None-02948# Each element of
---     the buffer from which the address was acquired and that is
---     non-sparse /must/ be bound completely and contiguously to a single
---     'Vulkan.Core10.Handles.DeviceMemory' object
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkBindIndexBufferIndirectCommandNV-indexType-parameter#
---     @indexType@ /must/ be a valid
---     'Vulkan.Core10.Enums.IndexType.IndexType' value
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_generated_commands VK_NV_device_generated_commands>,
--- 'Vulkan.Core10.FundamentalTypes.DeviceAddress',
--- 'Vulkan.Core10.Enums.IndexType.IndexType'
-data BindIndexBufferIndirectCommandNV = BindIndexBufferIndirectCommandNV
-  { -- | @bufferAddress@ specifies a physical address of the
-    -- 'Vulkan.Core10.Handles.Buffer' used as index buffer.
-    bufferAddress :: DeviceAddress
-  , -- | @size@ is the byte size range which is available for this operation from
-    -- the provided address.
-    size :: Word32
-  , -- | @indexType@ is a 'Vulkan.Core10.Enums.IndexType.IndexType' value
-    -- specifying how indices are treated. Instead of the Vulkan enum values, a
-    -- custom @uint32_t@ value /can/ be mapped to
-    -- 'Vulkan.Core10.Enums.IndexType.IndexType' by specifying the
-    -- 'IndirectCommandsLayoutTokenNV'::@pIndexTypes@ and
-    -- 'IndirectCommandsLayoutTokenNV'::@pIndexTypeValues@ arrays.
-    indexType :: IndexType
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (BindIndexBufferIndirectCommandNV)
-#endif
-deriving instance Show BindIndexBufferIndirectCommandNV
-
-instance ToCStruct BindIndexBufferIndirectCommandNV where
-  withCStruct x f = allocaBytes 16 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p BindIndexBufferIndirectCommandNV{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr DeviceAddress)) (bufferAddress)
-    poke ((p `plusPtr` 8 :: Ptr Word32)) (size)
-    poke ((p `plusPtr` 12 :: Ptr IndexType)) (indexType)
-    f
-  cStructSize = 16
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr DeviceAddress)) (zero)
-    poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 12 :: Ptr IndexType)) (zero)
-    f
-
-instance FromCStruct BindIndexBufferIndirectCommandNV where
-  peekCStruct p = do
-    bufferAddress <- peek @DeviceAddress ((p `plusPtr` 0 :: Ptr DeviceAddress))
-    size <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))
-    indexType <- peek @IndexType ((p `plusPtr` 12 :: Ptr IndexType))
-    pure $ BindIndexBufferIndirectCommandNV
-             bufferAddress size indexType
-
-instance Storable BindIndexBufferIndirectCommandNV where
-  sizeOf ~_ = 16
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero BindIndexBufferIndirectCommandNV where
-  zero = BindIndexBufferIndirectCommandNV
-           zero
-           zero
-           zero
-
-
--- | VkBindVertexBufferIndirectCommandNV - Structure specifying input data
--- for a single vertex buffer command token
---
--- == Valid Usage
---
--- -   #VUID-VkBindVertexBufferIndirectCommandNV-None-02949# The buffer’s
---     usage flag from which the address was acquired /must/ have the
---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_VERTEX_BUFFER_BIT'
---     bit set
---
--- -   #VUID-VkBindVertexBufferIndirectCommandNV-None-02950# Each element
---     of the buffer from which the address was acquired and that is
---     non-sparse /must/ be bound completely and contiguously to a single
---     'Vulkan.Core10.Handles.DeviceMemory' object
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_generated_commands VK_NV_device_generated_commands>,
--- 'Vulkan.Core10.FundamentalTypes.DeviceAddress'
-data BindVertexBufferIndirectCommandNV = BindVertexBufferIndirectCommandNV
-  { -- | @bufferAddress@ specifies a physical address of the
-    -- 'Vulkan.Core10.Handles.Buffer' used as vertex input binding.
-    bufferAddress :: DeviceAddress
-  , -- | @size@ is the byte size range which is available for this operation from
-    -- the provided address.
-    size :: Word32
-  , -- | @stride@ is the byte size stride for this vertex input binding as in
-    -- 'Vulkan.Core10.Pipeline.VertexInputBindingDescription'::@stride@. It is
-    -- only used if 'IndirectCommandsLayoutTokenNV'::@vertexDynamicStride@ was
-    -- set, otherwise the stride is inherited from the current bound graphics
-    -- pipeline.
-    stride :: Word32
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (BindVertexBufferIndirectCommandNV)
-#endif
-deriving instance Show BindVertexBufferIndirectCommandNV
-
-instance ToCStruct BindVertexBufferIndirectCommandNV where
-  withCStruct x f = allocaBytes 16 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p BindVertexBufferIndirectCommandNV{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr DeviceAddress)) (bufferAddress)
-    poke ((p `plusPtr` 8 :: Ptr Word32)) (size)
-    poke ((p `plusPtr` 12 :: Ptr Word32)) (stride)
-    f
-  cStructSize = 16
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr DeviceAddress)) (zero)
-    poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 12 :: Ptr Word32)) (zero)
-    f
-
-instance FromCStruct BindVertexBufferIndirectCommandNV where
-  peekCStruct p = do
-    bufferAddress <- peek @DeviceAddress ((p `plusPtr` 0 :: Ptr DeviceAddress))
-    size <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))
-    stride <- peek @Word32 ((p `plusPtr` 12 :: Ptr Word32))
-    pure $ BindVertexBufferIndirectCommandNV
-             bufferAddress size stride
-
-instance Storable BindVertexBufferIndirectCommandNV where
-  sizeOf ~_ = 16
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero BindVertexBufferIndirectCommandNV where
-  zero = BindVertexBufferIndirectCommandNV
-           zero
-           zero
-           zero
-
-
--- | VkSetStateFlagsIndirectCommandNV - Structure specifying input data for a
--- single state flag command token
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_generated_commands VK_NV_device_generated_commands>
-data SetStateFlagsIndirectCommandNV = SetStateFlagsIndirectCommandNV
-  { -- | @data@ encodes packed state that this command alters.
-    --
-    -- -   Bit @0@: If set represents
-    --     'Vulkan.Core10.Enums.FrontFace.FRONT_FACE_CLOCKWISE', otherwise
-    --     'Vulkan.Core10.Enums.FrontFace.FRONT_FACE_COUNTER_CLOCKWISE'
-    data' :: Word32 }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (SetStateFlagsIndirectCommandNV)
-#endif
-deriving instance Show SetStateFlagsIndirectCommandNV
-
-instance ToCStruct SetStateFlagsIndirectCommandNV where
-  withCStruct x f = allocaBytes 4 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p SetStateFlagsIndirectCommandNV{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr Word32)) (data')
-    f
-  cStructSize = 4
-  cStructAlignment = 4
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)
-    f
-
-instance FromCStruct SetStateFlagsIndirectCommandNV where
-  peekCStruct p = do
-    data' <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))
-    pure $ SetStateFlagsIndirectCommandNV
-             data'
-
-instance Storable SetStateFlagsIndirectCommandNV where
-  sizeOf ~_ = 4
-  alignment ~_ = 4
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero SetStateFlagsIndirectCommandNV where
-  zero = SetStateFlagsIndirectCommandNV
-           zero
-
-
--- | VkIndirectCommandsStreamNV - Structure specifying input streams for
--- generated command tokens
---
--- == Valid Usage
---
--- -   #VUID-VkIndirectCommandsStreamNV-buffer-02942# The @buffer@’s usage
---     flag /must/ have the
---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'
---     bit set
---
--- -   #VUID-VkIndirectCommandsStreamNV-offset-02943# The @offset@ /must/
---     be aligned to
---     'PhysicalDeviceDeviceGeneratedCommandsPropertiesNV'::@minIndirectCommandsBufferOffsetAlignment@
---
--- -   #VUID-VkIndirectCommandsStreamNV-buffer-02975# If @buffer@ is
---     non-sparse then it /must/ be bound completely and contiguously to a
---     single 'Vulkan.Core10.Handles.DeviceMemory' object
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkIndirectCommandsStreamNV-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_NV_device_generated_commands VK_NV_device_generated_commands>,
--- 'Vulkan.Core10.Handles.Buffer',
--- 'Vulkan.Core10.FundamentalTypes.DeviceSize', 'GeneratedCommandsInfoNV'
-data IndirectCommandsStreamNV = IndirectCommandsStreamNV
-  { -- | @buffer@ specifies the 'Vulkan.Core10.Handles.Buffer' storing the
-    -- functional arguments for each sequence. These arguments /can/ be written
-    -- by the device.
-    buffer :: Buffer
-  , -- | @offset@ specified an offset into @buffer@ where the arguments start.
-    offset :: DeviceSize
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (IndirectCommandsStreamNV)
-#endif
-deriving instance Show IndirectCommandsStreamNV
-
-instance ToCStruct IndirectCommandsStreamNV where
-  withCStruct x f = allocaBytes 16 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p IndirectCommandsStreamNV{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr Buffer)) (buffer)
-    poke ((p `plusPtr` 8 :: Ptr DeviceSize)) (offset)
-    f
-  cStructSize = 16
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr Buffer)) (zero)
-    poke ((p `plusPtr` 8 :: Ptr DeviceSize)) (zero)
-    f
-
-instance FromCStruct IndirectCommandsStreamNV where
-  peekCStruct p = do
-    buffer <- peek @Buffer ((p `plusPtr` 0 :: Ptr Buffer))
-    offset <- peek @DeviceSize ((p `plusPtr` 8 :: Ptr DeviceSize))
-    pure $ IndirectCommandsStreamNV
-             buffer offset
-
-instance Storable IndirectCommandsStreamNV where
-  sizeOf ~_ = 16
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero IndirectCommandsStreamNV where
-  zero = IndirectCommandsStreamNV
-           zero
-           zero
-
-
--- | VkIndirectCommandsLayoutTokenNV - Struct specifying the details of an
--- indirect command layout token
---
--- == Valid Usage
---
--- -   #VUID-VkIndirectCommandsLayoutTokenNV-stream-02951# @stream@ /must/
---     be smaller than 'IndirectCommandsLayoutCreateInfoNV'::@streamCount@
---
--- -   #VUID-VkIndirectCommandsLayoutTokenNV-offset-02952# @offset@ /must/
---     be less than or equal to
---     'PhysicalDeviceDeviceGeneratedCommandsPropertiesNV'::@maxIndirectCommandsTokenOffset@
---
--- -   #VUID-VkIndirectCommandsLayoutTokenNV-offset-06888# @offset@ /must/
---     be aligned to the scalar alignment of @tokenType@ or
---     @minIndirectCommandsBufferOffsetAlignment@, whichever is lower
---
--- -   #VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02976# If
---     @tokenType@ is 'INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV',
---     @vertexBindingUnit@ /must/ stay within device supported limits for
---     the appropriate commands
---
--- -   #VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02977# If
---     @tokenType@ is 'INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV',
---     @pushconstantPipelineLayout@ /must/ be valid
---
--- -   #VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02978# If
---     @tokenType@ is 'INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV',
---     @pushconstantOffset@ /must/ be a multiple of @4@
---
--- -   #VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02979# If
---     @tokenType@ is 'INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV',
---     @pushconstantSize@ /must/ be a multiple of @4@
---
--- -   #VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02980# If
---     @tokenType@ is 'INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV',
---     @pushconstantOffset@ /must/ be less than
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxPushConstantsSize@
---
--- -   #VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02981# If
---     @tokenType@ is 'INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV',
---     @pushconstantSize@ /must/ be less than or equal to
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxPushConstantsSize@
---     minus @pushconstantOffset@
---
--- -   #VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02982# If
---     @tokenType@ is 'INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV', for
---     each byte in the range specified by @pushconstantOffset@ and
---     @pushconstantSize@ and for each shader stage in
---     @pushconstantShaderStageFlags@, there /must/ be a push constant
---     range in @pushconstantPipelineLayout@ that includes that byte and
---     that stage
---
--- -   #VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02983# If
---     @tokenType@ is 'INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV', for
---     each byte in the range specified by @pushconstantOffset@ and
---     @pushconstantSize@ and for each push constant range that overlaps
---     that byte, @pushconstantShaderStageFlags@ /must/ include all stages
---     in that push constant range’s
---     'Vulkan.Core10.PipelineLayout.PushConstantRange'::@stageFlags@
---
--- -   #VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02984# If
---     @tokenType@ is 'INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV',
---     @indirectStateFlags@ /must/ not be @0@
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkIndirectCommandsLayoutTokenNV-sType-sType# @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV'
---
--- -   #VUID-VkIndirectCommandsLayoutTokenNV-pNext-pNext# @pNext@ /must/ be
---     @NULL@
---
--- -   #VUID-VkIndirectCommandsLayoutTokenNV-tokenType-parameter#
---     @tokenType@ /must/ be a valid 'IndirectCommandsTokenTypeNV' value
---
--- -   #VUID-VkIndirectCommandsLayoutTokenNV-pushconstantPipelineLayout-parameter#
---     If @pushconstantPipelineLayout@ is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE',
---     @pushconstantPipelineLayout@ /must/ be a valid
---     'Vulkan.Core10.Handles.PipelineLayout' handle
---
--- -   #VUID-VkIndirectCommandsLayoutTokenNV-pushconstantShaderStageFlags-parameter#
---     @pushconstantShaderStageFlags@ /must/ be a valid combination of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits' values
---
--- -   #VUID-VkIndirectCommandsLayoutTokenNV-indirectStateFlags-parameter#
---     @indirectStateFlags@ /must/ be a valid combination of
---     'IndirectStateFlagBitsNV' values
---
--- -   #VUID-VkIndirectCommandsLayoutTokenNV-pIndexTypes-parameter# If
---     @indexTypeCount@ is not @0@, @pIndexTypes@ /must/ be a valid pointer
---     to an array of @indexTypeCount@ valid
---     'Vulkan.Core10.Enums.IndexType.IndexType' values
---
--- -   #VUID-VkIndirectCommandsLayoutTokenNV-pIndexTypeValues-parameter# If
---     @indexTypeCount@ is not @0@, @pIndexTypeValues@ /must/ be a valid
---     pointer to an array of @indexTypeCount@ @uint32_t@ values
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_generated_commands VK_NV_device_generated_commands>,
--- 'Vulkan.Core10.FundamentalTypes.Bool32',
--- 'Vulkan.Core10.Enums.IndexType.IndexType',
--- 'IndirectCommandsLayoutCreateInfoNV', 'IndirectCommandsTokenTypeNV',
--- 'IndirectStateFlagsNV', 'Vulkan.Core10.Handles.PipelineLayout',
--- 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlags',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data IndirectCommandsLayoutTokenNV = IndirectCommandsLayoutTokenNV
-  { -- | @tokenType@ is a 'IndirectCommandsTokenTypeNV' specifying the token
-    -- command type.
-    tokenType :: IndirectCommandsTokenTypeNV
-  , -- | @stream@ is the index of the input stream containing the token argument
-    -- data.
-    stream :: Word32
-  , -- | @offset@ is a relative starting offset within the input stream memory
-    -- for the token argument data.
-    offset :: Word32
-  , -- | @vertexBindingUnit@ is used for the vertex buffer binding command.
-    vertexBindingUnit :: Word32
-  , -- | @vertexDynamicStride@ sets if the vertex buffer stride is provided by
-    -- the binding command rather than the current bound graphics pipeline
-    -- state.
-    vertexDynamicStride :: Bool
-  , -- | @pushconstantPipelineLayout@ is the
-    -- 'Vulkan.Core10.Handles.PipelineLayout' used for the push constant
-    -- command.
-    pushconstantPipelineLayout :: PipelineLayout
-  , -- | @pushconstantShaderStageFlags@ are the shader stage flags used for the
-    -- push constant command.
-    pushconstantShaderStageFlags :: ShaderStageFlags
-  , -- | @pushconstantOffset@ is the offset used for the push constant command.
-    pushconstantOffset :: Word32
-  , -- | @pushconstantSize@ is the size used for the push constant command.
-    pushconstantSize :: Word32
-  , -- | @indirectStateFlags@ is a 'IndirectStateFlagsNV' bitfield indicating the
-    -- active states for the state flag command.
-    indirectStateFlags :: IndirectStateFlagsNV
-  , -- | @pIndexTypes@ is the used 'Vulkan.Core10.Enums.IndexType.IndexType' for
-    -- the corresponding @uint32_t@ value entry in @pIndexTypeValues@.
-    indexTypes :: Vector IndexType
-  , -- No documentation found for Nested "VkIndirectCommandsLayoutTokenNV" "pIndexTypeValues"
-    indexTypeValues :: Vector Word32
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (IndirectCommandsLayoutTokenNV)
-#endif
-deriving instance Show IndirectCommandsLayoutTokenNV
-
-instance ToCStruct IndirectCommandsLayoutTokenNV where
-  withCStruct x f = allocaBytes 88 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p IndirectCommandsLayoutTokenNV{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    lift $ poke ((p `plusPtr` 16 :: Ptr IndirectCommandsTokenTypeNV)) (tokenType)
-    lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) (stream)
-    lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) (offset)
-    lift $ poke ((p `plusPtr` 28 :: Ptr Word32)) (vertexBindingUnit)
-    lift $ poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (vertexDynamicStride))
-    lift $ poke ((p `plusPtr` 40 :: Ptr PipelineLayout)) (pushconstantPipelineLayout)
-    lift $ poke ((p `plusPtr` 48 :: Ptr ShaderStageFlags)) (pushconstantShaderStageFlags)
-    lift $ poke ((p `plusPtr` 52 :: Ptr Word32)) (pushconstantOffset)
-    lift $ poke ((p `plusPtr` 56 :: Ptr Word32)) (pushconstantSize)
-    lift $ poke ((p `plusPtr` 60 :: Ptr IndirectStateFlagsNV)) (indirectStateFlags)
-    let pIndexTypesLength = Data.Vector.length $ (indexTypes)
-    lift $ unless ((Data.Vector.length $ (indexTypeValues)) == pIndexTypesLength) $
-      throwIO $ IOError Nothing InvalidArgument "" "pIndexTypeValues and pIndexTypes must have the same length" Nothing Nothing
-    lift $ poke ((p `plusPtr` 64 :: Ptr Word32)) ((fromIntegral pIndexTypesLength :: Word32))
-    pPIndexTypes' <- ContT $ allocaBytes @IndexType ((Data.Vector.length (indexTypes)) * 4)
-    lift $ Data.Vector.imapM_ (\i e -> poke (pPIndexTypes' `plusPtr` (4 * (i)) :: Ptr IndexType) (e)) (indexTypes)
-    lift $ poke ((p `plusPtr` 72 :: Ptr (Ptr IndexType))) (pPIndexTypes')
-    pPIndexTypeValues' <- ContT $ allocaBytes @Word32 ((Data.Vector.length (indexTypeValues)) * 4)
-    lift $ Data.Vector.imapM_ (\i e -> poke (pPIndexTypeValues' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (indexTypeValues)
-    lift $ poke ((p `plusPtr` 80 :: Ptr (Ptr Word32))) (pPIndexTypeValues')
-    lift $ f
-  cStructSize = 88
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr IndirectCommandsTokenTypeNV)) (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 Bool32)) (boolToBool32 (zero))
-    poke ((p `plusPtr` 52 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 56 :: Ptr Word32)) (zero)
-    f
-
-instance FromCStruct IndirectCommandsLayoutTokenNV where
-  peekCStruct p = do
-    tokenType <- peek @IndirectCommandsTokenTypeNV ((p `plusPtr` 16 :: Ptr IndirectCommandsTokenTypeNV))
-    stream <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
-    offset <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))
-    vertexBindingUnit <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))
-    vertexDynamicStride <- peek @Bool32 ((p `plusPtr` 32 :: Ptr Bool32))
-    pushconstantPipelineLayout <- peek @PipelineLayout ((p `plusPtr` 40 :: Ptr PipelineLayout))
-    pushconstantShaderStageFlags <- peek @ShaderStageFlags ((p `plusPtr` 48 :: Ptr ShaderStageFlags))
-    pushconstantOffset <- peek @Word32 ((p `plusPtr` 52 :: Ptr Word32))
-    pushconstantSize <- peek @Word32 ((p `plusPtr` 56 :: Ptr Word32))
-    indirectStateFlags <- peek @IndirectStateFlagsNV ((p `plusPtr` 60 :: Ptr IndirectStateFlagsNV))
-    indexTypeCount <- peek @Word32 ((p `plusPtr` 64 :: Ptr Word32))
-    pIndexTypes <- peek @(Ptr IndexType) ((p `plusPtr` 72 :: Ptr (Ptr IndexType)))
-    pIndexTypes' <- generateM (fromIntegral indexTypeCount) (\i -> peek @IndexType ((pIndexTypes `advancePtrBytes` (4 * (i)) :: Ptr IndexType)))
-    pIndexTypeValues <- peek @(Ptr Word32) ((p `plusPtr` 80 :: Ptr (Ptr Word32)))
-    pIndexTypeValues' <- generateM (fromIntegral indexTypeCount) (\i -> peek @Word32 ((pIndexTypeValues `advancePtrBytes` (4 * (i)) :: Ptr Word32)))
-    pure $ IndirectCommandsLayoutTokenNV
-             tokenType
-             stream
-             offset
-             vertexBindingUnit
-             (bool32ToBool vertexDynamicStride)
-             pushconstantPipelineLayout
-             pushconstantShaderStageFlags
-             pushconstantOffset
-             pushconstantSize
-             indirectStateFlags
-             pIndexTypes'
-             pIndexTypeValues'
-
-instance Zero IndirectCommandsLayoutTokenNV where
-  zero = IndirectCommandsLayoutTokenNV
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-           mempty
-           mempty
-
-
--- | VkIndirectCommandsLayoutCreateInfoNV - Structure specifying the
--- parameters of a newly created indirect commands layout object
---
--- = Description
---
--- The following code illustrates some of the flags:
---
--- > void cmdProcessAllSequences(cmd, pipeline, indirectCommandsLayout, pIndirectCommandsTokens, sequencesCount, indexbuffer, indexbufferOffset)
--- > {
--- >   for (s = 0; s < sequencesCount; s++)
--- >   {
--- >     sUsed = s;
--- >
--- >     if (indirectCommandsLayout.flags & VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV) {
--- >       sUsed = indexbuffer.load_uint32( sUsed * sizeof(uint32_t) + indexbufferOffset);
--- >     }
--- >
--- >     if (indirectCommandsLayout.flags & VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV) {
--- >       sUsed = incoherent_implementation_dependent_permutation[ sUsed ];
--- >     }
--- >
--- >     cmdProcessSequence( cmd, pipeline, indirectCommandsLayout, pIndirectCommandsTokens, sUsed );
--- >   }
--- > }
---
--- When tokens are consumed, an offset is computed based on token offset
--- and stream stride. The resulting offset is required to be aligned. The
--- alignment for a specific token is equal to the scalar alignment of the
--- data type as defined in
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-alignment-requirements Alignment Requirements>,
--- or
--- 'PhysicalDeviceDeviceGeneratedCommandsPropertiesNV'::@minIndirectCommandsBufferOffsetAlignment@,
--- whichever is lower.
---
--- A @minIndirectCommandsBufferOffsetAlignment@ of 4 allows
--- 'Vulkan.Core10.FundamentalTypes.DeviceAddress' to be packed as @uvec2@
--- with scalar layout instead of @uint64_t@ with 8 byte alignment. This
--- enables direct compatibility with D3D12 command signature layouts.
---
--- == Valid Usage
---
--- -   #VUID-VkIndirectCommandsLayoutCreateInfoNV-pipelineBindPoint-02930#
---     The @pipelineBindPoint@ /must/ be
---     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
---     or
---     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_COMPUTE'
---
--- -   #VUID-VkIndirectCommandsLayoutCreateInfoNV-tokenCount-02931#
---     @tokenCount@ /must/ be greater than @0@ and less than or equal to
---     'PhysicalDeviceDeviceGeneratedCommandsPropertiesNV'::@maxIndirectCommandsTokenCount@
---
--- -   #VUID-VkIndirectCommandsLayoutCreateInfoNV-pTokens-02932# If
---     @pTokens@ contains an entry of
---     'INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV' it /must/ be the
---     first element of the array and there /must/ be only a single element
---     of such token type
---
--- -   #VUID-VkIndirectCommandsLayoutCreateInfoNV-pTokens-09585# If
---     @pTokens@ contains an entry of
---     'INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NV' it /must/ be the first
---     element of the array and there /must/ be only a single element of
---     such token type
---
--- -   #VUID-VkIndirectCommandsLayoutCreateInfoNV-pTokens-02933# If
---     @pTokens@ contains an entry of
---     'INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV' there /must/ be only a
---     single element of such token type
---
--- -   #VUID-VkIndirectCommandsLayoutCreateInfoNV-pTokens-02934# All state
---     tokens in @pTokens@ /must/ occur before any action command tokens
---     ('INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV',
---     'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV',
---     'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV',
---     'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV' ,
---     'INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NV' )
---
--- -   #VUID-VkIndirectCommandsLayoutCreateInfoNV-pTokens-02935# The
---     content of @pTokens@ /must/ include one single action command token
---     that is compatible with the @pipelineBindPoint@
---
--- -   #VUID-VkIndirectCommandsLayoutCreateInfoNV-streamCount-02936#
---     @streamCount@ /must/ be greater than @0@ and less or equal to
---     'PhysicalDeviceDeviceGeneratedCommandsPropertiesNV'::@maxIndirectCommandsStreamCount@
---
--- -   #VUID-VkIndirectCommandsLayoutCreateInfoNV-pStreamStrides-02937#
---     each element of @pStreamStrides@ /must/ be greater than @0@ and less
---     than or equal to
---     'PhysicalDeviceDeviceGeneratedCommandsPropertiesNV'::@maxIndirectCommandsStreamStride@.
---     Furthermore the alignment of each token input /must/ be ensured
---
--- -   #VUID-VkIndirectCommandsLayoutCreateInfoNV-pipelineBindPoint-09088#
---     If @pipelineBindPoint@ is
---     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_COMPUTE'
---     then the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-deviceGeneratedCompute ::deviceGeneratedCompute>
---     feature /must/ be enabled
---
--- -   #VUID-VkIndirectCommandsLayoutCreateInfoNV-pipelineBindPoint-09089#
---     If @pipelineBindPoint@ is
---     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_COMPUTE'
---     then the state tokens in @pTokens@ /must/ only include
---     'INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NV',
---     'INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NV', or
---     'INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV'
---
--- -   #VUID-VkIndirectCommandsLayoutCreateInfoNV-pipelineBindPoint-09090#
---     If @pipelineBindPoint@ is
---     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_COMPUTE'
---     and @pTokens@ includes 'INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NV',
---     then the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-deviceGeneratedComputePipelines ::deviceGeneratedComputePipelines>
---     feature /must/ be enabled
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkIndirectCommandsLayoutCreateInfoNV-sType-sType# @sType@
---     /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV'
---
--- -   #VUID-VkIndirectCommandsLayoutCreateInfoNV-pNext-pNext# @pNext@
---     /must/ be @NULL@
---
--- -   #VUID-VkIndirectCommandsLayoutCreateInfoNV-flags-parameter# @flags@
---     /must/ be a valid combination of
---     'IndirectCommandsLayoutUsageFlagBitsNV' values
---
--- -   #VUID-VkIndirectCommandsLayoutCreateInfoNV-pipelineBindPoint-parameter#
---     @pipelineBindPoint@ /must/ be a valid
---     'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint' value
---
--- -   #VUID-VkIndirectCommandsLayoutCreateInfoNV-pTokens-parameter#
---     @pTokens@ /must/ be a valid pointer to an array of @tokenCount@
---     valid 'IndirectCommandsLayoutTokenNV' structures
---
--- -   #VUID-VkIndirectCommandsLayoutCreateInfoNV-pStreamStrides-parameter#
---     @pStreamStrides@ /must/ be a valid pointer to an array of
---     @streamCount@ @uint32_t@ values
---
--- -   #VUID-VkIndirectCommandsLayoutCreateInfoNV-tokenCount-arraylength#
---     @tokenCount@ /must/ be greater than @0@
---
--- -   #VUID-VkIndirectCommandsLayoutCreateInfoNV-streamCount-arraylength#
---     @streamCount@ /must/ be greater than @0@
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_generated_commands VK_NV_device_generated_commands>,
--- 'IndirectCommandsLayoutTokenNV', 'IndirectCommandsLayoutUsageFlagsNV',
--- 'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint',
--- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'createIndirectCommandsLayoutNV'
-data IndirectCommandsLayoutCreateInfoNV = IndirectCommandsLayoutCreateInfoNV
-  { -- | @flags@ is a bitmask of 'IndirectCommandsLayoutUsageFlagBitsNV'
-    -- specifying usage hints of this layout.
-    flags :: IndirectCommandsLayoutUsageFlagsNV
-  , -- | @pipelineBindPoint@ is the
-    -- 'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint' that this
-    -- layout targets.
-    pipelineBindPoint :: PipelineBindPoint
-  , -- | @pTokens@ is an array describing each command token in detail. See
-    -- 'IndirectCommandsTokenTypeNV' and 'IndirectCommandsLayoutTokenNV' below
-    -- for details.
-    tokens :: Vector IndirectCommandsLayoutTokenNV
-  , -- | @pStreamStrides@ is an array defining the byte stride for each input
-    -- stream.
-    streamStrides :: Vector Word32
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (IndirectCommandsLayoutCreateInfoNV)
-#endif
-deriving instance Show IndirectCommandsLayoutCreateInfoNV
-
-instance ToCStruct IndirectCommandsLayoutCreateInfoNV where
-  withCStruct x f = allocaBytes 56 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p IndirectCommandsLayoutCreateInfoNV{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    lift $ poke ((p `plusPtr` 16 :: Ptr IndirectCommandsLayoutUsageFlagsNV)) (flags)
-    lift $ poke ((p `plusPtr` 20 :: Ptr PipelineBindPoint)) (pipelineBindPoint)
-    lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (tokens)) :: Word32))
-    pPTokens' <- ContT $ allocaBytes @IndirectCommandsLayoutTokenNV ((Data.Vector.length (tokens)) * 88)
-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPTokens' `plusPtr` (88 * (i)) :: Ptr IndirectCommandsLayoutTokenNV) (e) . ($ ())) (tokens)
-    lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr IndirectCommandsLayoutTokenNV))) (pPTokens')
-    lift $ poke ((p `plusPtr` 40 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (streamStrides)) :: Word32))
-    pPStreamStrides' <- ContT $ allocaBytes @Word32 ((Data.Vector.length (streamStrides)) * 4)
-    lift $ Data.Vector.imapM_ (\i e -> poke (pPStreamStrides' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (streamStrides)
-    lift $ poke ((p `plusPtr` 48 :: Ptr (Ptr Word32))) (pPStreamStrides')
-    lift $ f
-  cStructSize = 56
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 20 :: Ptr PipelineBindPoint)) (zero)
-    f
-
-instance FromCStruct IndirectCommandsLayoutCreateInfoNV where
-  peekCStruct p = do
-    flags <- peek @IndirectCommandsLayoutUsageFlagsNV ((p `plusPtr` 16 :: Ptr IndirectCommandsLayoutUsageFlagsNV))
-    pipelineBindPoint <- peek @PipelineBindPoint ((p `plusPtr` 20 :: Ptr PipelineBindPoint))
-    tokenCount <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))
-    pTokens <- peek @(Ptr IndirectCommandsLayoutTokenNV) ((p `plusPtr` 32 :: Ptr (Ptr IndirectCommandsLayoutTokenNV)))
-    pTokens' <- generateM (fromIntegral tokenCount) (\i -> peekCStruct @IndirectCommandsLayoutTokenNV ((pTokens `advancePtrBytes` (88 * (i)) :: Ptr IndirectCommandsLayoutTokenNV)))
-    streamCount <- peek @Word32 ((p `plusPtr` 40 :: Ptr Word32))
-    pStreamStrides <- peek @(Ptr Word32) ((p `plusPtr` 48 :: Ptr (Ptr Word32)))
-    pStreamStrides' <- generateM (fromIntegral streamCount) (\i -> peek @Word32 ((pStreamStrides `advancePtrBytes` (4 * (i)) :: Ptr Word32)))
-    pure $ IndirectCommandsLayoutCreateInfoNV
-             flags pipelineBindPoint pTokens' pStreamStrides'
-
-instance Zero IndirectCommandsLayoutCreateInfoNV where
-  zero = IndirectCommandsLayoutCreateInfoNV
-           zero
-           zero
-           mempty
-           mempty
-
-
--- | VkGeneratedCommandsInfoNV - Structure specifying parameters for the
--- generation of commands
---
--- == Valid Usage
---
--- -   #VUID-VkGeneratedCommandsInfoNV-pipeline-02912# The provided
---     @pipeline@ /must/ match the pipeline bound at execution time
---
--- -   #VUID-VkGeneratedCommandsInfoNV-indirectCommandsLayout-02913# If the
---     @indirectCommandsLayout@ uses a token of
---     'INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV', then the @pipeline@
---     /must/ have been created with multiple shader groups
---
--- -   #VUID-VkGeneratedCommandsInfoNV-indirectCommandsLayout-02914# If the
---     @indirectCommandsLayout@ uses a token of
---     'INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV', then the @pipeline@
---     /must/ have been created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV'
---     set in 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@flags@
---
--- -   #VUID-VkGeneratedCommandsInfoNV-indirectCommandsLayout-02915# If the
---     @indirectCommandsLayout@ uses a token of
---     'INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV', then the
---     @pipeline@’s 'Vulkan.Core10.Handles.PipelineLayout' /must/ match the
---     'IndirectCommandsLayoutTokenNV'::@pushconstantPipelineLayout@
---
--- -   #VUID-VkGeneratedCommandsInfoNV-streamCount-02916# @streamCount@
---     /must/ match the @indirectCommandsLayout@’s @streamCount@
---
--- -   #VUID-VkGeneratedCommandsInfoNV-pipelineBindPoint-09084# If
---     @pipelineBindPoint@ is of type
---     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_COMPUTE',
---     then the @pipeline@ /must/ have been created with the flag
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV'
---
--- -   #VUID-VkGeneratedCommandsInfoNV-pipelineBindPoint-09085# If
---     @pipelineBindPoint@ is of type
---     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_COMPUTE',
---     then the @pipeline@ /must/ have been created with a
---     'Vulkan.Extensions.VK_NV_device_generated_commands_compute.ComputePipelineIndirectBufferInfoNV'
---     structure specifying a valid address where its metadata will be
---     saved
---
--- -   #VUID-VkGeneratedCommandsInfoNV-pipelineBindPoint-09086# If
---     @pipelineBindPoint@ is of type
---     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_COMPUTE',
---     then
---     'Vulkan.Extensions.VK_NV_device_generated_commands_compute.cmdUpdatePipelineIndirectBufferNV'
---     /must/ have been called on that pipeline to save its metadata to a
---     device address
---
--- -   #VUID-VkGeneratedCommandsInfoNV-pipelineBindPoint-09087# If
---     @pipelineBindPoint@ is of type
---     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_COMPUTE',
---     and if 'INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NV' is used, then
---     @pipeline@ /must/ be 'Vulkan.Core10.APIConstants.NULL_HANDLE'
---
--- -   #VUID-VkGeneratedCommandsInfoNV-sequencesCount-02917#
---     @sequencesCount@ /must/ be less or equal to
---     'PhysicalDeviceDeviceGeneratedCommandsPropertiesNV'::@maxIndirectSequenceCount@
---     and 'GeneratedCommandsMemoryRequirementsInfoNV'::@maxSequencesCount@
---     that was used to determine the @preprocessSize@
---
--- -   #VUID-VkGeneratedCommandsInfoNV-preprocessBuffer-02918#
---     @preprocessBuffer@ /must/ have the
---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'
---     bit set in its usage flag
---
--- -   #VUID-VkGeneratedCommandsInfoNV-preprocessOffset-02919#
---     @preprocessOffset@ /must/ be aligned to
---     'PhysicalDeviceDeviceGeneratedCommandsPropertiesNV'::@minIndirectCommandsBufferOffsetAlignment@
---
--- -   #VUID-VkGeneratedCommandsInfoNV-preprocessBuffer-02971# If
---     @preprocessBuffer@ is non-sparse then it /must/ be bound completely
---     and contiguously to a single 'Vulkan.Core10.Handles.DeviceMemory'
---     object
---
--- -   #VUID-VkGeneratedCommandsInfoNV-preprocessSize-02920#
---     @preprocessSize@ /must/ be at least equal to the memory
---     requirement\`s size returned by
---     'getGeneratedCommandsMemoryRequirementsNV' using the matching inputs
---     (@indirectCommandsLayout@, …​) as within this structure
---
--- -   #VUID-VkGeneratedCommandsInfoNV-sequencesCountBuffer-02921#
---     @sequencesCountBuffer@ /can/ be set if the actual used count of
---     sequences is sourced from the provided buffer. In that case the
---     @sequencesCount@ serves as upper bound
---
--- -   #VUID-VkGeneratedCommandsInfoNV-sequencesCountBuffer-02922# If
---     @sequencesCountBuffer@ is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', its usage flag /must/ have
---     the
---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'
---     bit set
---
--- -   #VUID-VkGeneratedCommandsInfoNV-sequencesCountBuffer-02923# If
---     @sequencesCountBuffer@ is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', @sequencesCountOffset@
---     /must/ be aligned to
---     'PhysicalDeviceDeviceGeneratedCommandsPropertiesNV'::@minSequencesCountBufferOffsetAlignment@
---
--- -   #VUID-VkGeneratedCommandsInfoNV-sequencesCountBuffer-02972# If
---     @sequencesCountBuffer@ is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE' and is non-sparse then it
---     /must/ be bound completely and contiguously to a single
---     'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-VkGeneratedCommandsInfoNV-sequencesIndexBuffer-02924# If
---     @indirectCommandsLayout@’s
---     'INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV' is set,
---     @sequencesIndexBuffer@ /must/ be set otherwise it /must/ be
---     'Vulkan.Core10.APIConstants.NULL_HANDLE'
---
--- -   #VUID-VkGeneratedCommandsInfoNV-sequencesIndexBuffer-02925# If
---     @sequencesIndexBuffer@ is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', its usage flag /must/ have
---     the
---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'
---     bit set
---
--- -   #VUID-VkGeneratedCommandsInfoNV-sequencesIndexBuffer-02926# If
---     @sequencesIndexBuffer@ is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', @sequencesIndexOffset@
---     /must/ be aligned to
---     'PhysicalDeviceDeviceGeneratedCommandsPropertiesNV'::@minSequencesIndexBufferOffsetAlignment@
---
--- -   #VUID-VkGeneratedCommandsInfoNV-sequencesIndexBuffer-02973# If
---     @sequencesIndexBuffer@ is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE' and is non-sparse then it
---     /must/ be bound completely and contiguously to a single
---     'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-VkGeneratedCommandsInfoNV-indirectCommandsLayout-07078# If the
---     @indirectCommandsLayout@ uses a token of
---     'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV', then the @pipeline@
---     /must/ contain a shader stage using the @MeshNV@ @Execution@ @Model@
---
--- -   #VUID-VkGeneratedCommandsInfoNV-indirectCommandsLayout-07079# If the
---     @indirectCommandsLayout@ uses a token of
---     'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV', then the
---     @pipeline@ /must/ contain a shader stage using the @MeshEXT@
---     @Execution@ @Model@
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkGeneratedCommandsInfoNV-sType-sType# @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV'
---
--- -   #VUID-VkGeneratedCommandsInfoNV-pNext-pNext# @pNext@ /must/ be
---     @NULL@
---
--- -   #VUID-VkGeneratedCommandsInfoNV-pipelineBindPoint-parameter#
---     @pipelineBindPoint@ /must/ be a valid
---     'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint' value
---
--- -   #VUID-VkGeneratedCommandsInfoNV-pipeline-parameter# If @pipeline@ is
---     not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @pipeline@ /must/ be a
---     valid 'Vulkan.Core10.Handles.Pipeline' handle
---
--- -   #VUID-VkGeneratedCommandsInfoNV-indirectCommandsLayout-parameter#
---     @indirectCommandsLayout@ /must/ be a valid
---     'Vulkan.Extensions.Handles.IndirectCommandsLayoutNV' handle
---
--- -   #VUID-VkGeneratedCommandsInfoNV-pStreams-parameter# @pStreams@
---     /must/ be a valid pointer to an array of @streamCount@ valid
---     'IndirectCommandsStreamNV' structures
---
--- -   #VUID-VkGeneratedCommandsInfoNV-preprocessBuffer-parameter#
---     @preprocessBuffer@ /must/ be a valid 'Vulkan.Core10.Handles.Buffer'
---     handle
---
--- -   #VUID-VkGeneratedCommandsInfoNV-sequencesCountBuffer-parameter# If
---     @sequencesCountBuffer@ is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', @sequencesCountBuffer@
---     /must/ be a valid 'Vulkan.Core10.Handles.Buffer' handle
---
--- -   #VUID-VkGeneratedCommandsInfoNV-sequencesIndexBuffer-parameter# If
---     @sequencesIndexBuffer@ is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', @sequencesIndexBuffer@
---     /must/ be a valid 'Vulkan.Core10.Handles.Buffer' handle
---
--- -   #VUID-VkGeneratedCommandsInfoNV-streamCount-arraylength#
---     @streamCount@ /must/ be greater than @0@
---
--- -   #VUID-VkGeneratedCommandsInfoNV-commonparent# Each of
---     @indirectCommandsLayout@, @pipeline@, @preprocessBuffer@,
---     @sequencesCountBuffer@, and @sequencesIndexBuffer@ 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_NV_device_generated_commands VK_NV_device_generated_commands>,
--- 'Vulkan.Core10.Handles.Buffer',
--- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
--- 'Vulkan.Extensions.Handles.IndirectCommandsLayoutNV',
--- 'IndirectCommandsStreamNV', 'Vulkan.Core10.Handles.Pipeline',
--- 'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint',
--- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'cmdExecuteGeneratedCommandsNV', 'cmdPreprocessGeneratedCommandsNV'
-data GeneratedCommandsInfoNV = GeneratedCommandsInfoNV
-  { -- | @pipelineBindPoint@ is the
-    -- 'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint' used for the
-    -- @pipeline@.
-    pipelineBindPoint :: PipelineBindPoint
-  , -- | @pipeline@ is the 'Vulkan.Core10.Handles.Pipeline' used in the
-    -- generation and execution process.
-    pipeline :: Pipeline
-  , -- | @indirectCommandsLayout@ is the
-    -- 'Vulkan.Extensions.Handles.IndirectCommandsLayoutNV' that provides the
-    -- command sequence to generate.
-    indirectCommandsLayout :: IndirectCommandsLayoutNV
-  , -- | @pStreams@ is a pointer to an array of @streamCount@
-    -- 'IndirectCommandsStreamNV' structures providing the input data for the
-    -- tokens used in @indirectCommandsLayout@.
-    streams :: Vector IndirectCommandsStreamNV
-  , -- | @sequencesCount@ is the maximum number of sequences to reserve. If
-    -- @sequencesCountBuffer@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', this
-    -- is also the actual number of sequences generated.
-    sequencesCount :: Word32
-  , -- | @preprocessBuffer@ is the 'Vulkan.Core10.Handles.Buffer' that is used
-    -- for preprocessing the input data for execution. If this structure is
-    -- used with 'cmdExecuteGeneratedCommandsNV' with its @isPreprocessed@ set
-    -- to 'Vulkan.Core10.FundamentalTypes.TRUE', then the preprocessing step is
-    -- skipped and data in this buffer will not be modified. The contents and
-    -- the layout of this buffer are opaque to applications and /must/ not be
-    -- modified outside functions related to device-generated commands or
-    -- copied to another buffer for reuse.
-    preprocessBuffer :: Buffer
-  , -- | @preprocessOffset@ is the byte offset into @preprocessBuffer@ where the
-    -- preprocessed data is stored.
-    preprocessOffset :: DeviceSize
-  , -- | @preprocessSize@ is the maximum byte size within the @preprocessBuffer@
-    -- after the @preprocessOffset@ that is available for preprocessing.
-    preprocessSize :: DeviceSize
-  , -- | @sequencesCountBuffer@ is a 'Vulkan.Core10.Handles.Buffer' in which the
-    -- actual number of sequences is provided as single @uint32_t@ value.
-    sequencesCountBuffer :: Buffer
-  , -- | @sequencesCountOffset@ is the byte offset into @sequencesCountBuffer@
-    -- where the count value is stored.
-    sequencesCountOffset :: DeviceSize
-  , -- | @sequencesIndexBuffer@ is a 'Vulkan.Core10.Handles.Buffer' that encodes
-    -- the used sequence indices as @uint32_t@ array.
-    sequencesIndexBuffer :: Buffer
-  , -- | @sequencesIndexOffset@ is the byte offset into @sequencesIndexBuffer@
-    -- where the index values start.
-    sequencesIndexOffset :: DeviceSize
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (GeneratedCommandsInfoNV)
-#endif
-deriving instance Show GeneratedCommandsInfoNV
-
-instance ToCStruct GeneratedCommandsInfoNV where
-  withCStruct x f = allocaBytes 120 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p GeneratedCommandsInfoNV{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    lift $ poke ((p `plusPtr` 16 :: Ptr PipelineBindPoint)) (pipelineBindPoint)
-    lift $ poke ((p `plusPtr` 24 :: Ptr Pipeline)) (pipeline)
-    lift $ poke ((p `plusPtr` 32 :: Ptr IndirectCommandsLayoutNV)) (indirectCommandsLayout)
-    lift $ poke ((p `plusPtr` 40 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (streams)) :: Word32))
-    pPStreams' <- ContT $ allocaBytes @IndirectCommandsStreamNV ((Data.Vector.length (streams)) * 16)
-    lift $ Data.Vector.imapM_ (\i e -> poke (pPStreams' `plusPtr` (16 * (i)) :: Ptr IndirectCommandsStreamNV) (e)) (streams)
-    lift $ poke ((p `plusPtr` 48 :: Ptr (Ptr IndirectCommandsStreamNV))) (pPStreams')
-    lift $ poke ((p `plusPtr` 56 :: Ptr Word32)) (sequencesCount)
-    lift $ poke ((p `plusPtr` 64 :: Ptr Buffer)) (preprocessBuffer)
-    lift $ poke ((p `plusPtr` 72 :: Ptr DeviceSize)) (preprocessOffset)
-    lift $ poke ((p `plusPtr` 80 :: Ptr DeviceSize)) (preprocessSize)
-    lift $ poke ((p `plusPtr` 88 :: Ptr Buffer)) (sequencesCountBuffer)
-    lift $ poke ((p `plusPtr` 96 :: Ptr DeviceSize)) (sequencesCountOffset)
-    lift $ poke ((p `plusPtr` 104 :: Ptr Buffer)) (sequencesIndexBuffer)
-    lift $ poke ((p `plusPtr` 112 :: Ptr DeviceSize)) (sequencesIndexOffset)
-    lift $ f
-  cStructSize = 120
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr PipelineBindPoint)) (zero)
-    poke ((p `plusPtr` 32 :: Ptr IndirectCommandsLayoutNV)) (zero)
-    poke ((p `plusPtr` 56 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 64 :: Ptr Buffer)) (zero)
-    poke ((p `plusPtr` 72 :: Ptr DeviceSize)) (zero)
-    poke ((p `plusPtr` 80 :: Ptr DeviceSize)) (zero)
-    poke ((p `plusPtr` 96 :: Ptr DeviceSize)) (zero)
-    poke ((p `plusPtr` 112 :: Ptr DeviceSize)) (zero)
-    f
-
-instance FromCStruct GeneratedCommandsInfoNV where
-  peekCStruct p = do
-    pipelineBindPoint <- peek @PipelineBindPoint ((p `plusPtr` 16 :: Ptr PipelineBindPoint))
-    pipeline <- peek @Pipeline ((p `plusPtr` 24 :: Ptr Pipeline))
-    indirectCommandsLayout <- peek @IndirectCommandsLayoutNV ((p `plusPtr` 32 :: Ptr IndirectCommandsLayoutNV))
-    streamCount <- peek @Word32 ((p `plusPtr` 40 :: Ptr Word32))
-    pStreams <- peek @(Ptr IndirectCommandsStreamNV) ((p `plusPtr` 48 :: Ptr (Ptr IndirectCommandsStreamNV)))
-    pStreams' <- generateM (fromIntegral streamCount) (\i -> peekCStruct @IndirectCommandsStreamNV ((pStreams `advancePtrBytes` (16 * (i)) :: Ptr IndirectCommandsStreamNV)))
-    sequencesCount <- peek @Word32 ((p `plusPtr` 56 :: Ptr Word32))
-    preprocessBuffer <- peek @Buffer ((p `plusPtr` 64 :: Ptr Buffer))
-    preprocessOffset <- peek @DeviceSize ((p `plusPtr` 72 :: Ptr DeviceSize))
-    preprocessSize <- peek @DeviceSize ((p `plusPtr` 80 :: Ptr DeviceSize))
-    sequencesCountBuffer <- peek @Buffer ((p `plusPtr` 88 :: Ptr Buffer))
-    sequencesCountOffset <- peek @DeviceSize ((p `plusPtr` 96 :: Ptr DeviceSize))
-    sequencesIndexBuffer <- peek @Buffer ((p `plusPtr` 104 :: Ptr Buffer))
-    sequencesIndexOffset <- peek @DeviceSize ((p `plusPtr` 112 :: Ptr DeviceSize))
-    pure $ GeneratedCommandsInfoNV
-             pipelineBindPoint
-             pipeline
-             indirectCommandsLayout
-             pStreams'
-             sequencesCount
-             preprocessBuffer
-             preprocessOffset
-             preprocessSize
-             sequencesCountBuffer
-             sequencesCountOffset
-             sequencesIndexBuffer
-             sequencesIndexOffset
-
-instance Zero GeneratedCommandsInfoNV where
-  zero = GeneratedCommandsInfoNV
-           zero
-           zero
-           zero
-           mempty
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-
-
--- | VkGeneratedCommandsMemoryRequirementsInfoNV - Structure specifying
--- parameters for the reservation of preprocess buffer space
---
--- == Valid Usage
---
--- -   #VUID-VkGeneratedCommandsMemoryRequirementsInfoNV-maxSequencesCount-02907#
---     @maxSequencesCount@ /must/ be less or equal to
---     'PhysicalDeviceDeviceGeneratedCommandsPropertiesNV'::@maxIndirectSequenceCount@
---
--- -   #VUID-VkGeneratedCommandsMemoryRequirementsInfoNV-pipelineBindPoint-09075#
---     If @pipelineBindPoint@ is of type
---     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS',
---     then @pipeline@ /must/ be a valid 'Vulkan.Core10.Handles.Pipeline'
---     handle
---
--- -   #VUID-VkGeneratedCommandsMemoryRequirementsInfoNV-pipelineBindPoint-09076#
---     If @pipelineBindPoint@ is of type
---     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_COMPUTE',
---     and the @indirectCommandsLayout@ was not created with a
---     'INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NV' token, then the
---     @pipeline@ /must/ be a valid 'Vulkan.Core10.Handles.Pipeline' handle
---
--- -   #VUID-VkGeneratedCommandsMemoryRequirementsInfoNV-pipelineBindPoint-09077#
---     If @pipelineBindPoint@ is of type
---     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_COMPUTE',
---     and the @indirectCommandsLayout@ contains a
---     'INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NV' token, then the
---     @pipeline@ /must/ be 'Vulkan.Core10.APIConstants.NULL_HANDLE'
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkGeneratedCommandsMemoryRequirementsInfoNV-sType-sType#
---     @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV'
---
--- -   #VUID-VkGeneratedCommandsMemoryRequirementsInfoNV-pNext-pNext#
---     @pNext@ /must/ be @NULL@
---
--- -   #VUID-VkGeneratedCommandsMemoryRequirementsInfoNV-pipelineBindPoint-parameter#
---     @pipelineBindPoint@ /must/ be a valid
---     'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint' value
---
--- -   #VUID-VkGeneratedCommandsMemoryRequirementsInfoNV-pipeline-parameter#
---     If @pipeline@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
---     @pipeline@ /must/ be a valid 'Vulkan.Core10.Handles.Pipeline' handle
---
--- -   #VUID-VkGeneratedCommandsMemoryRequirementsInfoNV-indirectCommandsLayout-parameter#
---     @indirectCommandsLayout@ /must/ be a valid
---     'Vulkan.Extensions.Handles.IndirectCommandsLayoutNV' handle
---
--- -   #VUID-VkGeneratedCommandsMemoryRequirementsInfoNV-commonparent# Both
---     of @indirectCommandsLayout@, and @pipeline@ 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_NV_device_generated_commands VK_NV_device_generated_commands>,
--- 'Vulkan.Extensions.Handles.IndirectCommandsLayoutNV',
--- 'Vulkan.Core10.Handles.Pipeline',
--- 'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint',
--- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'getGeneratedCommandsMemoryRequirementsNV'
-data GeneratedCommandsMemoryRequirementsInfoNV = GeneratedCommandsMemoryRequirementsInfoNV
-  { -- | @pipelineBindPoint@ is the
-    -- 'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint' of the
-    -- @pipeline@ that this buffer memory is intended to be used with during
-    -- the execution.
-    pipelineBindPoint :: PipelineBindPoint
-  , -- | @pipeline@ is the 'Vulkan.Core10.Handles.Pipeline' that this buffer
-    -- memory is intended to be used with during the execution.
-    pipeline :: Pipeline
-  , -- | @indirectCommandsLayout@ is the
-    -- 'Vulkan.Extensions.Handles.IndirectCommandsLayoutNV' that this buffer
-    -- memory is intended to be used with.
-    indirectCommandsLayout :: IndirectCommandsLayoutNV
-  , -- | @maxSequencesCount@ is the maximum number of sequences that this buffer
-    -- memory in combination with the other state provided /can/ be used with.
-    maxSequencesCount :: Word32
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (GeneratedCommandsMemoryRequirementsInfoNV)
-#endif
-deriving instance Show GeneratedCommandsMemoryRequirementsInfoNV
-
-instance ToCStruct GeneratedCommandsMemoryRequirementsInfoNV where
-  withCStruct x f = allocaBytes 48 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p GeneratedCommandsMemoryRequirementsInfoNV{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr PipelineBindPoint)) (pipelineBindPoint)
-    poke ((p `plusPtr` 24 :: Ptr Pipeline)) (pipeline)
-    poke ((p `plusPtr` 32 :: Ptr IndirectCommandsLayoutNV)) (indirectCommandsLayout)
-    poke ((p `plusPtr` 40 :: Ptr Word32)) (maxSequencesCount)
-    f
-  cStructSize = 48
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr PipelineBindPoint)) (zero)
-    poke ((p `plusPtr` 32 :: Ptr IndirectCommandsLayoutNV)) (zero)
-    poke ((p `plusPtr` 40 :: Ptr Word32)) (zero)
-    f
-
-instance FromCStruct GeneratedCommandsMemoryRequirementsInfoNV where
-  peekCStruct p = do
-    pipelineBindPoint <- peek @PipelineBindPoint ((p `plusPtr` 16 :: Ptr PipelineBindPoint))
-    pipeline <- peek @Pipeline ((p `plusPtr` 24 :: Ptr Pipeline))
-    indirectCommandsLayout <- peek @IndirectCommandsLayoutNV ((p `plusPtr` 32 :: Ptr IndirectCommandsLayoutNV))
-    maxSequencesCount <- peek @Word32 ((p `plusPtr` 40 :: Ptr Word32))
-    pure $ GeneratedCommandsMemoryRequirementsInfoNV
-             pipelineBindPoint pipeline indirectCommandsLayout maxSequencesCount
-
-instance Storable GeneratedCommandsMemoryRequirementsInfoNV where
-  sizeOf ~_ = 48
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero GeneratedCommandsMemoryRequirementsInfoNV where
-  zero = GeneratedCommandsMemoryRequirementsInfoNV
-           zero
-           zero
-           zero
-           zero
-
-
-type IndirectCommandsLayoutUsageFlagsNV = IndirectCommandsLayoutUsageFlagBitsNV
-
--- | VkIndirectCommandsLayoutUsageFlagBitsNV - Bitmask specifying allowed
--- usage of an indirect commands layout
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_generated_commands VK_NV_device_generated_commands>,
--- 'IndirectCommandsLayoutUsageFlagsNV'
-newtype IndirectCommandsLayoutUsageFlagBitsNV = IndirectCommandsLayoutUsageFlagBitsNV Flags
-  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
-
--- | 'INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV' specifies
--- that the layout is always used with the manual preprocessing step
--- through calling 'cmdPreprocessGeneratedCommandsNV' and executed by
--- 'cmdExecuteGeneratedCommandsNV' with @isPreprocessed@ set to
--- 'Vulkan.Core10.FundamentalTypes.TRUE'.
-pattern INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV = IndirectCommandsLayoutUsageFlagBitsNV 0x00000001
-
--- | 'INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV' specifies that
--- the input data for the sequences is not implicitly indexed from
--- 0..sequencesUsed, but an application-provided
--- 'Vulkan.Core10.Handles.Buffer' encoding the index is provided.
-pattern INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV = IndirectCommandsLayoutUsageFlagBitsNV 0x00000002
-
--- | 'INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV' specifies
--- that the processing of sequences /can/ happen at an
--- implementation-dependent order, which is not guaranteed to be coherent
--- using the same input data. This flag is ignored when the
--- @pipelineBindPoint@ is
--- 'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_COMPUTE' as
--- it is implied that the dispatch sequence is always unordered.
-pattern INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV = IndirectCommandsLayoutUsageFlagBitsNV 0x00000004
-
-conNameIndirectCommandsLayoutUsageFlagBitsNV :: String
-conNameIndirectCommandsLayoutUsageFlagBitsNV = "IndirectCommandsLayoutUsageFlagBitsNV"
-
-enumPrefixIndirectCommandsLayoutUsageFlagBitsNV :: String
-enumPrefixIndirectCommandsLayoutUsageFlagBitsNV = "INDIRECT_COMMANDS_LAYOUT_USAGE_"
-
-showTableIndirectCommandsLayoutUsageFlagBitsNV :: [(IndirectCommandsLayoutUsageFlagBitsNV, String)]
-showTableIndirectCommandsLayoutUsageFlagBitsNV =
-  [
-    ( INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV
-    , "EXPLICIT_PREPROCESS_BIT_NV"
-    )
-  ,
-    ( INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV
-    , "INDEXED_SEQUENCES_BIT_NV"
-    )
-  ,
-    ( INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV
-    , "UNORDERED_SEQUENCES_BIT_NV"
-    )
-  ]
-
-instance Show IndirectCommandsLayoutUsageFlagBitsNV where
-  showsPrec =
-    enumShowsPrec
-      enumPrefixIndirectCommandsLayoutUsageFlagBitsNV
-      showTableIndirectCommandsLayoutUsageFlagBitsNV
-      conNameIndirectCommandsLayoutUsageFlagBitsNV
-      (\(IndirectCommandsLayoutUsageFlagBitsNV x) -> x)
-      (\x -> showString "0x" . showHex x)
-
-instance Read IndirectCommandsLayoutUsageFlagBitsNV where
-  readPrec =
-    enumReadPrec
-      enumPrefixIndirectCommandsLayoutUsageFlagBitsNV
-      showTableIndirectCommandsLayoutUsageFlagBitsNV
-      conNameIndirectCommandsLayoutUsageFlagBitsNV
-      IndirectCommandsLayoutUsageFlagBitsNV
-
-type IndirectStateFlagsNV = IndirectStateFlagBitsNV
-
--- | VkIndirectStateFlagBitsNV - Bitmask specifying state that can be altered
--- on the device
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_generated_commands VK_NV_device_generated_commands>,
--- 'IndirectStateFlagsNV'
-newtype IndirectStateFlagBitsNV = IndirectStateFlagBitsNV Flags
-  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
-
--- | 'INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV' allows to toggle the
--- 'Vulkan.Core10.Enums.FrontFace.FrontFace' rasterization state for
--- subsequent drawing commands.
-pattern INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV = IndirectStateFlagBitsNV 0x00000001
-
-conNameIndirectStateFlagBitsNV :: String
-conNameIndirectStateFlagBitsNV = "IndirectStateFlagBitsNV"
-
-enumPrefixIndirectStateFlagBitsNV :: String
-enumPrefixIndirectStateFlagBitsNV = "INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV"
-
-showTableIndirectStateFlagBitsNV :: [(IndirectStateFlagBitsNV, String)]
-showTableIndirectStateFlagBitsNV = [(INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV, "")]
-
-instance Show IndirectStateFlagBitsNV where
-  showsPrec =
-    enumShowsPrec
-      enumPrefixIndirectStateFlagBitsNV
-      showTableIndirectStateFlagBitsNV
-      conNameIndirectStateFlagBitsNV
-      (\(IndirectStateFlagBitsNV x) -> x)
-      (\x -> showString "0x" . showHex x)
-
-instance Read IndirectStateFlagBitsNV where
-  readPrec =
-    enumReadPrec
-      enumPrefixIndirectStateFlagBitsNV
-      showTableIndirectStateFlagBitsNV
-      conNameIndirectStateFlagBitsNV
-      IndirectStateFlagBitsNV
-
--- | VkIndirectCommandsTokenTypeNV - Enum specifying token commands
---
--- = Description
---
--- \'
---
--- +---------------------------------------------------+--------------------------------------------------------------------+
--- | Token type                                        | Equivalent command                                                 |
--- +===================================================+====================================================================+
--- | 'INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV'    | 'cmdBindPipelineShaderGroupNV'                                     |
--- +---------------------------------------------------+--------------------------------------------------------------------+
--- | 'INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV'     | -                                                                  |
--- +---------------------------------------------------+--------------------------------------------------------------------+
--- | 'INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV'    | 'Vulkan.Core10.CommandBufferBuilding.cmdBindIndexBuffer'           |
--- +---------------------------------------------------+--------------------------------------------------------------------+
--- | 'INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV'   | 'Vulkan.Core10.CommandBufferBuilding.cmdBindVertexBuffers'         |
--- +---------------------------------------------------+--------------------------------------------------------------------+
--- | 'INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV'   | 'Vulkan.Core10.CommandBufferBuilding.cmdPushConstants'             |
--- +---------------------------------------------------+--------------------------------------------------------------------+
--- | 'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV'    | 'Vulkan.Core10.CommandBufferBuilding.cmdDrawIndexedIndirect'       |
--- +---------------------------------------------------+--------------------------------------------------------------------+
--- | 'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV'            | 'Vulkan.Core10.CommandBufferBuilding.cmdDrawIndirect'              |
--- +---------------------------------------------------+--------------------------------------------------------------------+
--- | 'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV'      | 'Vulkan.Extensions.VK_NV_mesh_shader.cmdDrawMeshTasksIndirectNV'   |
--- +---------------------------------------------------+--------------------------------------------------------------------+
--- | 'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV' | 'Vulkan.Extensions.VK_EXT_mesh_shader.cmdDrawMeshTasksIndirectEXT' |
--- +---------------------------------------------------+--------------------------------------------------------------------+
--- | 'INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NV'        | 'Vulkan.Core10.CommandBufferBuilding.cmdBindPipeline'              |
--- +---------------------------------------------------+--------------------------------------------------------------------+
--- | 'INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NV'        | 'Vulkan.Core10.CommandBufferBuilding.cmdDispatchIndirect'          |
--- +---------------------------------------------------+--------------------------------------------------------------------+
---
--- Supported Indirect Command Tokens
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_generated_commands VK_NV_device_generated_commands>,
--- 'IndirectCommandsLayoutTokenNV'
-newtype IndirectCommandsTokenTypeNV = IndirectCommandsTokenTypeNV Int32
-  deriving newtype (Eq, Ord, Storable, Zero)
-
--- No documentation found for Nested "VkIndirectCommandsTokenTypeNV" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV"
-pattern INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV = IndirectCommandsTokenTypeNV 0
-
--- No documentation found for Nested "VkIndirectCommandsTokenTypeNV" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV"
-pattern INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV = IndirectCommandsTokenTypeNV 1
-
--- No documentation found for Nested "VkIndirectCommandsTokenTypeNV" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV"
-pattern INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV = IndirectCommandsTokenTypeNV 2
-
--- No documentation found for Nested "VkIndirectCommandsTokenTypeNV" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV"
-pattern INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV = IndirectCommandsTokenTypeNV 3
-
--- No documentation found for Nested "VkIndirectCommandsTokenTypeNV" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV"
-pattern INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV = IndirectCommandsTokenTypeNV 4
-
--- No documentation found for Nested "VkIndirectCommandsTokenTypeNV" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV"
-pattern INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV = IndirectCommandsTokenTypeNV 5
-
--- No documentation found for Nested "VkIndirectCommandsTokenTypeNV" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV"
-pattern INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV = IndirectCommandsTokenTypeNV 6
-
--- No documentation found for Nested "VkIndirectCommandsTokenTypeNV" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV"
-pattern INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV = IndirectCommandsTokenTypeNV 7
-
--- No documentation found for Nested "VkIndirectCommandsTokenTypeNV" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NV"
-pattern INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NV = IndirectCommandsTokenTypeNV 1000428004
-
--- No documentation found for Nested "VkIndirectCommandsTokenTypeNV" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NV"
-pattern INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NV = IndirectCommandsTokenTypeNV 1000428003
-
--- No documentation found for Nested "VkIndirectCommandsTokenTypeNV" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV"
-pattern INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV = IndirectCommandsTokenTypeNV 1000328000
-
-{-# COMPLETE
-  INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV
-  , INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV
-  , INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV
-  , INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV
-  , INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV
-  , INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV
-  , INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV
-  , INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV
-  , INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NV
-  , INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NV
-  , INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV ::
-    IndirectCommandsTokenTypeNV
-  #-}
-
-conNameIndirectCommandsTokenTypeNV :: String
-conNameIndirectCommandsTokenTypeNV = "IndirectCommandsTokenTypeNV"
-
-enumPrefixIndirectCommandsTokenTypeNV :: String
-enumPrefixIndirectCommandsTokenTypeNV = "INDIRECT_COMMANDS_TOKEN_TYPE_"
-
-showTableIndirectCommandsTokenTypeNV :: [(IndirectCommandsTokenTypeNV, String)]
-showTableIndirectCommandsTokenTypeNV =
-  [
-    ( INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV
-    , "SHADER_GROUP_NV"
-    )
-  ,
-    ( INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV
-    , "STATE_FLAGS_NV"
-    )
-  ,
-    ( INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV
-    , "INDEX_BUFFER_NV"
-    )
-  ,
-    ( INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV
-    , "VERTEX_BUFFER_NV"
-    )
-  ,
-    ( INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV
-    , "PUSH_CONSTANT_NV"
-    )
-  ,
-    ( INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV
-    , "DRAW_INDEXED_NV"
-    )
-  ,
-    ( INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV
-    , "DRAW_NV"
-    )
-  ,
-    ( INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV
-    , "DRAW_TASKS_NV"
-    )
-  ,
-    ( INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NV
-    , "DISPATCH_NV"
-    )
-  ,
-    ( INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NV
-    , "PIPELINE_NV"
-    )
-  ,
-    ( INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV
-    , "DRAW_MESH_TASKS_NV"
+--     compute queue, or for the purpose of reusing the data in multiple
+--     executions.
+--
+-- -   call 'cmdExecuteGeneratedCommandsNV' to create and execute the
+--     actual device commands for all sequences based on the inputs
+--     provided.
+--
+-- For each draw in a sequence, the following can be specified:
+--
+-- -   a different shader group
+--
+-- -   a number of vertex buffer bindings
+--
+-- -   a different index buffer, with an optional dynamic offset and index
+--     type
+--
+-- -   a number of different push constants
+--
+-- -   a flag that encodes the primitive winding
+--
+-- While the GPU can be faster than a CPU to generate the commands, it will
+-- not happen asynchronously to the device, therefore the primary use case
+-- is generating “less” total work (occlusion culling, classification to
+-- use specialized shaders, etc.).
+--
+-- == New Object Types
+--
+-- -   'Vulkan.Extensions.Handles.IndirectCommandsLayoutNV'
+--
+-- == New Commands
+--
+-- -   'cmdBindPipelineShaderGroupNV'
+--
+-- -   'cmdExecuteGeneratedCommandsNV'
+--
+-- -   'cmdPreprocessGeneratedCommandsNV'
+--
+-- -   'createIndirectCommandsLayoutNV'
+--
+-- -   'destroyIndirectCommandsLayoutNV'
+--
+-- -   'getGeneratedCommandsMemoryRequirementsNV'
+--
+-- == New Structures
+--
+-- -   'BindIndexBufferIndirectCommandNV'
+--
+-- -   'BindShaderGroupIndirectCommandNV'
+--
+-- -   'BindVertexBufferIndirectCommandNV'
+--
+-- -   'GeneratedCommandsInfoNV'
+--
+-- -   'GeneratedCommandsMemoryRequirementsInfoNV'
+--
+-- -   'GraphicsShaderGroupCreateInfoNV'
+--
+-- -   'IndirectCommandsLayoutCreateInfoNV'
+--
+-- -   'IndirectCommandsLayoutTokenNV'
+--
+-- -   'IndirectCommandsStreamNV'
+--
+-- -   'SetStateFlagsIndirectCommandNV'
+--
+-- -   Extending
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo':
+--
+--     -   'GraphicsPipelineShaderGroupsCreateInfoNV'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceDeviceGeneratedCommandsFeaturesNV'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDeviceDeviceGeneratedCommandsPropertiesNV'
+--
+-- == New Enums
+--
+-- -   'IndirectCommandsLayoutUsageFlagBitsNV'
+--
+-- -   'IndirectCommandsTokenTypeNV'
+--
+-- -   'IndirectStateFlagBitsNV'
+--
+-- == New Bitmasks
+--
+-- -   'IndirectCommandsLayoutUsageFlagsNV'
+--
+-- -   'IndirectStateFlagsNV'
+--
+-- == New Enum Constants
+--
+-- -   'NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME'
+--
+-- -   'NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits':
+--
+--     -   'ACCESS_COMMAND_PREPROCESS_READ_BIT_NV'
+--
+--     -   'ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV'
+--
+-- -   Extending 'Vulkan.Core10.Enums.ObjectType.ObjectType':
+--
+--     -   'Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits':
+--
+--     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits':
+--
+--     -   'PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV'
+--
+-- == Issues
+--
+-- 1) How to name this extension ?
+--
+-- @VK_NV_device_generated_commands@
+--
+-- As usual, one of the hardest issues ;)
+--
+-- Alternatives: @VK_gpu_commands@, @VK_execute_commands@,
+-- @VK_device_commands@, @VK_device_execute_commands@, @VK_device_execute@,
+-- @VK_device_created_commands@, @VK_device_recorded_commands@,
+-- @VK_device_generated_commands@ @VK_indirect_generated_commands@
+--
+-- 2) Should we use a serial stateful token stream or stateless sequence
+-- descriptions?
+--
+-- Similarly to 'Vulkan.Core10.Handles.Pipeline', fixed layouts have the
+-- most likelihood to be cross-vendor adoptable. They also benefit from
+-- being processable in parallel. This is a different design choice
+-- compared to the serial command stream generated through
+-- @GL_NV_command_list@.
+--
+-- 3) How to name a sequence description?
+--
+-- @VkIndirectCommandsLayout@ as in the NVX extension predecessor.
+--
+-- Alternative: @VkGeneratedCommandsLayout@
+--
+-- 4) Do we want to provide @indirectCommands@ inputs with layout or at
+-- @indirectCommands@ time?
+--
+-- Separate layout from data as Vulkan does. Provide full flexibility for
+-- @indirectCommands@.
+--
+-- 5) Should the input be provided as SoA or AoS?
+--
+-- Both ways are desirable. AoS can provide portability to other APIs and
+-- easier to setup, while SoA allows to update individual inputs in a
+-- cache-efficient manner, when others remain static.
+--
+-- 6) How do we make developers aware of the memory requirements of
+-- implementation-dependent data used for the generated commands?
+--
+-- Make the API explicit and introduce a @preprocess@
+-- 'Vulkan.Core10.Handles.Buffer'. Developers have to allocate it using
+-- 'getGeneratedCommandsMemoryRequirementsNV'.
+--
+-- In the NVX version the requirements were hidden implicitly as part of
+-- the command buffer reservation process, however as the memory
+-- requirements can be substantial, we want to give developers the ability
+-- to budget the memory themselves. By lowering the @maxSequencesCount@ the
+-- memory consumption can be reduced. Furthermore reuse of the memory is
+-- possible, for example for doing explicit preprocessing and execution in
+-- a ping-pong fashion.
+--
+-- The actual buffer size is implementation-dependent and may be zero, i.e.
+-- not always required.
+--
+-- When making use of Graphics Shader Groups, the programs should behave
+-- similarly with regards to vertex inputs, clipping and culling outputs of
+-- the geometry stage, and sample shading behavior in fragment shaders, to
+-- reduce the amount of the worst-case memory approximation.
+--
+-- 7) Should we allow additional per-sequence dynamic state changes?
+--
+-- Yes
+--
+-- Introduced a lightweight indirect state flag 'IndirectStateFlagBitsNV'.
+-- So far only switching front face winding state is exposed. Especially in
+-- CAD\/DCC mirrored transforms that require such changes are common, and
+-- similar flexibility is given in the ray tracing instance description.
+--
+-- The flag could be extended further, for example to switch between
+-- primitive-lists or -strips, or make other state modifications.
+--
+-- Furthermore, as new tokens can be added easily, future extension could
+-- add the ability to change any
+-- 'Vulkan.Core10.Enums.DynamicState.DynamicState'.
+--
+-- 8) How do we allow reusing already “generated” @indirectCommands@?
+--
+-- Expose a @preprocessBuffer@ to reuse implementation-dependencyFlags
+-- data. Set @isPreprocessed@ to 'Vulkan.Core10.FundamentalTypes.TRUE' in
+-- 'cmdExecuteGeneratedCommandsNV'.
+--
+-- 9) Under which conditions is 'cmdExecuteGeneratedCommandsNV' legal?
+--
+-- It behaves like a regular draw call command.
+--
+-- 10) Is 'cmdPreprocessGeneratedCommandsNV' copying the input data or
+-- referencing it?
+--
+-- There are multiple implementations possible:
+--
+-- -   one could have some emulation code that parses the inputs, and
+--     generates an output command buffer, therefore copying the inputs.
+--
+-- -   one could just reference the inputs, and have the processing done in
+--     pipe at execution time.
+--
+-- If the data is mandated to be copied, then it puts a penalty on
+-- implementation that could process the inputs directly in pipe. If the
+-- data is “referenced”, then it allows both types of implementation.
+--
+-- The inputs are “referenced”, and /must/ not be modified after the call
+-- to 'cmdExecuteGeneratedCommandsNV' has completed.
+--
+-- 11) Which buffer usage flags are required for the buffers referenced by
+-- 'GeneratedCommandsInfoNV' ?
+--
+-- Reuse existing
+-- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'
+--
+-- -   'GeneratedCommandsInfoNV'::@preprocessBuffer@
+--
+-- -   'GeneratedCommandsInfoNV'::@sequencesCountBuffer@
+--
+-- -   'GeneratedCommandsInfoNV'::@sequencesIndexBuffer@
+--
+-- -   'IndirectCommandsStreamNV'::@buffer@
+--
+-- 12) In which pipeline stage does the device generated command expansion
+-- happen?
+--
+-- 'cmdPreprocessGeneratedCommandsNV' is treated as if it occurs in a
+-- separate logical pipeline from either graphics or compute, and that
+-- pipeline only includes
+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TOP_OF_PIPE_BIT',
+-- a new stage 'PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV', and
+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT'.
+-- This new stage has two corresponding new access types,
+-- 'ACCESS_COMMAND_PREPROCESS_READ_BIT_NV' and
+-- 'ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV', used to synchronize reading
+-- the buffer inputs and writing the preprocess memory output.
+--
+-- The generated output written in the preprocess buffer memory by
+-- 'cmdExecuteGeneratedCommandsNV' is considered to be consumed by the
+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_DRAW_INDIRECT_BIT'
+-- pipeline stage.
+--
+-- Thus, to synchronize from writing the input buffers to preprocessing via
+-- 'cmdPreprocessGeneratedCommandsNV', use:
+--
+-- -   @dstStageMask@ = 'PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV'
+--
+-- -   @dstAccessMask@ = 'ACCESS_COMMAND_PREPROCESS_READ_BIT_NV'
+--
+-- To synchronize from 'cmdPreprocessGeneratedCommandsNV' to executing the
+-- generated commands by 'cmdExecuteGeneratedCommandsNV', use:
+--
+-- -   @srcStageMask@ = 'PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV'
+--
+-- -   @srcAccessMask@ = 'ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV'
+--
+-- -   @dstStageMask@ =
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_DRAW_INDIRECT_BIT'
+--
+-- -   @dstAccessMask@ =
+--     'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_INDIRECT_COMMAND_READ_BIT'
+--
+-- When 'cmdExecuteGeneratedCommandsNV' is used with a @isPreprocessed@ of
+-- 'Vulkan.Core10.FundamentalTypes.FALSE', the generated commands are
+-- implicitly preprocessed, therefore one only needs to synchronize the
+-- inputs via:
+--
+-- -   @dstStageMask@ =
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_DRAW_INDIRECT_BIT'
+--
+-- -   @dstAccessMask@ =
+--     'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_INDIRECT_COMMAND_READ_BIT'
+--
+-- 13) What if most token data is “static”, but we frequently want to
+-- render a subsection?
+--
+-- Added “sequencesIndexBuffer”. This allows to easier sort and filter what
+-- should actually be executed.
+--
+-- 14) What are the changes compared to the previous NVX extension?
+--
+-- -   Compute dispatch support was removed (was never implemented in
+--     drivers). There are different approaches how dispatching from the
+--     device should work, hence we defer this to a future extension.
+--
+-- -   The @ObjectTableNVX@ was replaced by using physical buffer addresses
+--     and introducing Shader Groups for the graphics pipeline.
+--
+-- -   Less state changes are possible overall, but the important
+--     operations are still there (reduces complexity of implementation).
+--
+-- -   The API was redesigned so all inputs must be passed at both
+--     preprocessing and execution time (this was implicit in NVX, now it
+--     is explicit)
+--
+-- -   The reservation of intermediate command space is now mandatory and
+--     explicit through a preprocess buffer.
+--
+-- -   The 'IndirectStateFlagBitsNV' were introduced
+--
+-- 15) When porting from other APIs, their indirect buffers may use
+-- different enums, for example for index buffer types. How to solve this?
+--
+-- Added “pIndexTypeValues” to map custom @uint32_t@ values to
+-- corresponding 'Vulkan.Core10.Enums.IndexType.IndexType'.
+--
+-- 16) Do we need more shader group state overrides?
+--
+-- The NVX version allowed all PSO states to be different, however as the
+-- goal is not to replace all state setup, but focus on highly-frequent
+-- state changes for drawing lots of objects, we reduced the amount of
+-- state overrides. Especially VkPipelineLayout as well as VkRenderPass
+-- configuration should be left static, the rest is still open for
+-- discussion.
+--
+-- The current focus is just to allow VertexInput changes as well as
+-- shaders, while all shader groups use the same shader stages.
+--
+-- Too much flexibility will increase the test coverage requirement as
+-- well. However, further extensions could allow more dynamic state as
+-- well.
+--
+-- 17) Do we need more detailed physical device feature queries\/enables?
+--
+-- An EXT version would need detailed implementor feedback to come up with
+-- a good set of features. Please contact us if you are interested, we are
+-- happy to make more features optional, or add further restrictions to
+-- reduce the minimum feature set of an EXT.
+--
+-- 18) Is there an interaction with VK_KHR_pipeline_library planned?
+--
+-- Yes, a future version of this extension will detail the interaction,
+-- once VK_KHR_pipeline_library is no longer provisional.
+--
+-- == Example Code
+--
+-- Open-Source samples illustrating the usage of the extension can be found
+-- at the following location (may not yet exist at time of writing):
+--
+-- <https://github.com/nvpro-samples/vk_device_generated_cmds>
+--
+-- == Version History
+--
+-- -   Revision 1, 2020-02-20 (Christoph Kubisch)
+--
+--     -   Initial version
+--
+-- -   Revision 2, 2020-03-09 (Christoph Kubisch)
+--
+--     -   Remove VK_EXT_debug_report interactions
+--
+-- -   Revision 3, 2020-03-09 (Christoph Kubisch)
+--
+--     -   Fix naming VkPhysicalDeviceGenerated to
+--         VkPhysicalDeviceDeviceGenerated
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
+module Vulkan.Extensions.VK_NV_device_generated_commands  ( cmdExecuteGeneratedCommandsNV
+                                                          , cmdPreprocessGeneratedCommandsNV
+                                                          , cmdBindPipelineShaderGroupNV
+                                                          , getGeneratedCommandsMemoryRequirementsNV
+                                                          , createIndirectCommandsLayoutNV
+                                                          , withIndirectCommandsLayoutNV
+                                                          , destroyIndirectCommandsLayoutNV
+                                                          , pattern PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV
+                                                          , pattern ACCESS_COMMAND_PREPROCESS_READ_BIT_NV
+                                                          , pattern ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV
+                                                          , PhysicalDeviceDeviceGeneratedCommandsFeaturesNV(..)
+                                                          , PhysicalDeviceDeviceGeneratedCommandsPropertiesNV(..)
+                                                          , GraphicsShaderGroupCreateInfoNV(..)
+                                                          , GraphicsPipelineShaderGroupsCreateInfoNV(..)
+                                                          , BindShaderGroupIndirectCommandNV(..)
+                                                          , BindIndexBufferIndirectCommandNV(..)
+                                                          , BindVertexBufferIndirectCommandNV(..)
+                                                          , SetStateFlagsIndirectCommandNV(..)
+                                                          , IndirectCommandsStreamNV(..)
+                                                          , IndirectCommandsLayoutTokenNV(..)
+                                                          , IndirectCommandsLayoutCreateInfoNV(..)
+                                                          , GeneratedCommandsInfoNV(..)
+                                                          , GeneratedCommandsMemoryRequirementsInfoNV(..)
+                                                          , IndirectCommandsLayoutUsageFlagsNV
+                                                          , IndirectCommandsLayoutUsageFlagBitsNV( INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV
+                                                                                                 , INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV
+                                                                                                 , INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV
+                                                                                                 , ..
+                                                                                                 )
+                                                          , IndirectStateFlagsNV
+                                                          , IndirectStateFlagBitsNV( INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV
+                                                                                   , ..
+                                                                                   )
+                                                          , IndirectCommandsTokenTypeNV( INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV
+                                                                                       , INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV
+                                                                                       , INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV
+                                                                                       , INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV
+                                                                                       , INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV
+                                                                                       , INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV
+                                                                                       , INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV
+                                                                                       , INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV
+                                                                                       , INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NV
+                                                                                       , INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NV
+                                                                                       , INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV
+                                                                                       , INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_DATA_NV
+                                                                                       , ..
+                                                                                       )
+                                                          , NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSION
+                                                          , pattern NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSION
+                                                          , NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME
+                                                          , pattern NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME
+                                                          , IndirectCommandsLayoutNV(..)
+                                                          ) where
+
+import Data.Bits (Bits)
+import Data.Bits (FiniteBits)
+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 Foreign.Marshal.Utils (maybePeek)
+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 GHC.Show (showsPrec)
+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.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 Data.Int (Int32)
+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.CStruct.Extends (peekSomeCStruct)
+import Vulkan.CStruct.Extends (pokeSomeCStruct)
+import Vulkan.CStruct.Extends (withSomeCStruct)
+import Vulkan.NamedType ((:::))
+import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)
+import Vulkan.Core10.FundamentalTypes (Bool32)
+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.Handles (Device)
+import Vulkan.Core10.Handles (Device(..))
+import Vulkan.Core10.Handles (Device(Device))
+import Vulkan.Core10.FundamentalTypes (DeviceAddress)
+import Vulkan.Dynamic (DeviceCmds(pVkCmdBindPipelineShaderGroupNV))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdExecuteGeneratedCommandsNV))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdPreprocessGeneratedCommandsNV))
+import Vulkan.Dynamic (DeviceCmds(pVkCreateIndirectCommandsLayoutNV))
+import Vulkan.Dynamic (DeviceCmds(pVkDestroyIndirectCommandsLayoutNV))
+import Vulkan.Dynamic (DeviceCmds(pVkGetGeneratedCommandsMemoryRequirementsNV))
+import Vulkan.Core10.FundamentalTypes (DeviceSize)
+import Vulkan.Core10.Handles (Device_T)
+import Vulkan.CStruct.Extends (Extends)
+import Vulkan.CStruct.Extends (Extendss)
+import Vulkan.CStruct.Extends (Extensible(..))
+import Vulkan.Core10.FundamentalTypes (Flags)
+import Vulkan.Core10.Enums.IndexType (IndexType)
+import Vulkan.Extensions.Handles (IndirectCommandsLayoutNV)
+import Vulkan.Extensions.Handles (IndirectCommandsLayoutNV(..))
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_heap (IndirectCommandsLayoutPushDataTokenNV)
+import Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2 (MemoryRequirements2)
+import Vulkan.CStruct.Extends (PeekChain)
+import Vulkan.CStruct.Extends (PeekChain(..))
+import Vulkan.Core10.Handles (Pipeline)
+import Vulkan.Core10.Handles (Pipeline(..))
+import Vulkan.Core10.Enums.PipelineBindPoint (PipelineBindPoint)
+import Vulkan.Core10.Enums.PipelineBindPoint (PipelineBindPoint(..))
+import Vulkan.Core10.Handles (PipelineLayout)
+import Vulkan.Core10.ComputePipeline (PipelineShaderStageCreateInfo)
+import Vulkan.Core10.GraphicsPipeline (PipelineTessellationStateCreateInfo)
+import Vulkan.Core10.GraphicsPipeline (PipelineVertexInputStateCreateInfo)
+import Vulkan.CStruct.Extends (PokeChain)
+import Vulkan.CStruct.Extends (PokeChain(..))
+import Vulkan.Core10.Enums.Result (Result)
+import Vulkan.Core10.Enums.Result (Result(..))
+import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)
+import Vulkan.CStruct.Extends (SomeStruct)
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Exception (VulkanException(..))
+import Vulkan.Core10.Enums.AccessFlagBits (AccessFlags)
+import Vulkan.Core10.Enums.AccessFlagBits (AccessFlagBits(ACCESS_COMMAND_PREPROCESS_READ_BIT_EXT))
+import Vulkan.Core10.Enums.AccessFlagBits (AccessFlags)
+import Vulkan.Core10.Enums.AccessFlagBits (AccessFlagBits(ACCESS_COMMAND_PREPROCESS_WRITE_BIT_EXT))
+import Vulkan.Core10.Enums.PipelineStageFlagBits (PipelineStageFlags)
+import Vulkan.Core10.Enums.PipelineStageFlagBits (PipelineStageFlagBits(PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV))
+import Vulkan.Core10.Enums.Result (Result(SUCCESS))
+import Vulkan.Extensions.Handles (IndirectCommandsLayoutNV(..))
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdExecuteGeneratedCommandsNV
+  :: FunPtr (Ptr CommandBuffer_T -> Bool32 -> Ptr GeneratedCommandsInfoNV -> IO ()) -> Ptr CommandBuffer_T -> Bool32 -> Ptr GeneratedCommandsInfoNV -> IO ()
+
+-- | vkCmdExecuteGeneratedCommandsNV - Generate and execute commands on the
+-- device
+--
+-- = Description
+--
+-- If the 'INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV' flag
+-- was used to create the
+-- 'GeneratedCommandsInfoNV'::@indirectCommandsLayout@ then the order of
+-- execution of individual draws through this command /may/ execute in any
+-- order, and /may/ not necessarily be in the same order as specified in
+-- 'GeneratedCommandsInfoNV'::@pStreams@.
+--
+-- The order of execution of individual dispatches through this command
+-- /may/ execute in any order and /may/ not necessarily be in the same
+-- order as specified in 'GeneratedCommandsInfoNV'::@pStreams@.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-magFilter-04553# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
+--     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR',
+--     @reductionMode@ equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
+--     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-vkCmdExecuteGeneratedCommandsNV-magFilter-09598# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
+--     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR' and
+--     @reductionMode@ equal to either
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
+--     or
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
+--     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_MINMAX_BIT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-mipmapMode-04770# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
+--     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR',
+--     @reductionMode@ equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
+--     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-vkCmdExecuteGeneratedCommandsNV-mipmapMode-09599# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
+--     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'
+--     and @reductionMode@ equal to either
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
+--     or
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
+--     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_MINMAX_BIT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-unnormalizedCoordinates-09635#
+--     If a 'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the image view’s @levelCount@ and @layerCount@ /must/ be 1
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08609# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the image view’s @viewType@ /must/ be
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D' or
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08610# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the sampler /must/ not be used with any of the SPIR-V
+--     @OpImageSample*@ or @OpImageSparseSample*@ instructions with
+--     @ImplicitLod@, @Dref@ or @Proj@ in their name
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08611# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the sampler /must/ not be used with any of the SPIR-V
+--     @OpImageSample*@ or @OpImageSparseSample*@ instructions that
+--     includes a LOD bias or any offset values
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-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-vkCmdExecuteGeneratedCommandsNV-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-vkCmdExecuteGeneratedCommandsNV-None-07888# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'
+--     descriptor is accessed using atomic operations as a result of this
+--     command, then the storage texel buffer’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-buffer-view-format-features format features>
+--     /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-02692# If a
+--     'Vulkan.Core10.Handles.ImageView' is sampled with
+--     'Vulkan.Core10.Enums.Filter.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.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-02693# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_filter_cubic VK_EXT_filter_cubic>
+--     extension is not enabled and any 'Vulkan.Core10.Handles.ImageView'
+--     is sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as a
+--     result of this command, it /must/ not have a
+--     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' of
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE', or
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-filterCubic-02694# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with
+--     'Vulkan.Core10.Enums.Filter.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-vkCmdExecuteGeneratedCommandsNV-filterCubicMinmax-02695# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with
+--     'Vulkan.Core10.Enums.Filter.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-vkCmdExecuteGeneratedCommandsNV-cubicRangeClamp-09212# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-cubicRangeClamp cubicRangeClamp>
+--     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
+--     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
+--     a result of this command /must/ not have a
+--     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
+--     equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-reductionMode-09213# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with a
+--     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
+--     equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
+--     as a result of this command /must/ sample with
+--     'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-selectableCubicWeights-09214#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-selectableCubicWeights selectableCubicWeights>
+--     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
+--     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
+--     a result of this command /must/ have
+--     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.SamplerCubicWeightsCreateInfoQCOM'::@cubicWeights@
+--     equal to
+--     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-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-vkCmdExecuteGeneratedCommandsNV-OpTypeImage-07027# For any
+--     'Vulkan.Core10.Handles.ImageView' being written as a storage image
+--     where the image format field of the @OpTypeImage@ is @Unknown@, the
+--     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_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-OpTypeImage-07028# For any
+--     'Vulkan.Core10.Handles.ImageView' being read as a storage image
+--     where the image format field of the @OpTypeImage@ is @Unknown@, the
+--     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_STORAGE_READ_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-OpTypeImage-07029# For any
+--     'Vulkan.Core10.Handles.BufferView' being written as a storage texel
+--     buffer where the image format field of the @OpTypeImage@ is
+--     @Unknown@, the view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
+--     /must/ contain
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-OpTypeImage-07030# Any
+--     'Vulkan.Core10.Handles.BufferView' being read as a storage texel
+--     buffer where the image format field of the @OpTypeImage@ is
+--     @Unknown@ then the view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
+--     /must/ contain
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08600# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
+--     was created with a pipeline layout and statically uses a set /n/, a
+--     descriptor set /must/ have been bound to /n/ at the same pipeline
+--     bind point, with layouts compatible for set /n/ with the layout(s)
+--     used to create the shader, as described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptors-compatibility ???>
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08601# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
+--     was created with a pipeline layout or specified push constant ranges
+--     and statically uses a push constant value, that value /must/ have
+--     been set for the same pipeline bind point, with push constant ranges
+--     that are
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptors-compatibility compatible>
+--     with the push constant range used to create the shader
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-10068# For each array of
+--     resources that is used by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
+--     the indices used to access members of the array /must/ be less than
+--     the descriptor count for the identified binding in the descriptor
+--     sets used by this command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08114# Descriptors in
+--     each bound descriptor set, specified via
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
+--     be valid if they are accessed as described by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
+--     by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
+--     point used by this command and the bound
+--     'Vulkan.Core10.Handles.Pipeline' was not created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-imageLayout-00344# If an image
+--     descriptor is accessed by a shader, the
+--     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' /must/ match the
+--     subresource accessible from the 'Vulkan.Core10.Handles.ImageView' 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>
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08115# If the descriptors
+--     used by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline
+--     bind point were specified via
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', the
+--     bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     without
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08116# Descriptors in
+--     bound descriptor buffers, specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     /must/ be valid if they are dynamically used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
+--     was created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08604# Descriptors in
+--     bound descriptor buffers, specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     /must/ be valid if they are dynamically used by any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     to the pipeline bind point used by this command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08117# If the descriptors
+--     used by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline
+--     bind point were specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08119# If a descriptor is
+--     dynamically used with a 'Vulkan.Core10.Handles.Pipeline' created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     the descriptor memory /must/ be resident
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08605# If a descriptor is
+--     dynamically used with a 'Vulkan.Extensions.Handles.ShaderEXT'
+--     created with a 'Vulkan.Core10.Handles.DescriptorSetLayout' that was
+--     created with
+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     the descriptor memory /must/ be resident
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08606# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject>
+--     feature is not enabled, a valid pipeline /must/ be bound to the
+--     pipeline bind point used by this command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08608# If a pipeline is
+--     bound to the pipeline bind point used by this command, there /must/
+--     not have been any calls to dynamic state setting commands for any
+--     state specified statically in the 'Vulkan.Core10.Handles.Pipeline'
+--     object bound to the pipeline bind point used by this command, since
+--     that pipeline was bound
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-uniformBuffers-06935# If any
+--     stage of the 'Vulkan.Core10.Handles.Pipeline' object bound to the
+--     pipeline bind point used by this command accesses a uniform buffer,
+--     and that stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @uniformBuffers@, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /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-vkCmdExecuteGeneratedCommandsNV-None-08612# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, and any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     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-vkCmdExecuteGeneratedCommandsNV-storageBuffers-06936# If any
+--     stage of the 'Vulkan.Core10.Handles.Pipeline' object bound to the
+--     pipeline bind point used by this command accesses a storage buffer,
+--     and that stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @storageBuffers@, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /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-vkCmdExecuteGeneratedCommandsNV-None-08613# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, and any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     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-vkCmdExecuteGeneratedCommandsNV-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
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shaders>
+--     /must/ not be a protected resource
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-viewType-07752# If a
+--     'Vulkan.Core10.Handles.ImageView' is accessed as a result of this
+--     command, then the image view’s @viewType@ /must/ match the @Dim@
+--     operand of the @OpTypeImage@ as described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-image-dimensions ???>
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-format-07753# If a
+--     'Vulkan.Core10.Handles.ImageView' or
+--     'Vulkan.Core10.Handles.BufferView' is accessed as a result of this
+--     command, then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-numericformat numeric type>
+--     of the view’s @format@ and the @Sampled@ @Type@ operand of the
+--     @OpTypeImage@ /must/ match
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-OpImageWrite-08795# If a
+--     'Vulkan.Core10.Handles.ImageView' created with a format other than
+--     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM' 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-vkCmdExecuteGeneratedCommandsNV-OpImageWrite-08796# If a
+--     'Vulkan.Core10.Handles.ImageView' created with the format
+--     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM' is accessed using
+--     @OpImageWrite@ as a result of this command, then the @Type@ of the
+--     @Texel@ operand of that instruction /must/ have four components
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-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-vkCmdExecuteGeneratedCommandsNV-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-vkCmdExecuteGeneratedCommandsNV-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-vkCmdExecuteGeneratedCommandsNV-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-vkCmdExecuteGeneratedCommandsNV-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-vkCmdExecuteGeneratedCommandsNV-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-vkCmdExecuteGeneratedCommandsNV-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-vkCmdExecuteGeneratedCommandsNV-OpImageSampleWeightedQCOM-06971#
+--     If @OpImageSampleWeightedQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-OpImageSampleWeightedQCOM-06972#
+--     If @OpImageSampleWeightedQCOM@ uses a
+--     'Vulkan.Core10.Handles.ImageView' as a sample weight image 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-OpImageBoxFilterQCOM-06973# If
+--     @OpImageBoxFilterQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-OpImageBlockMatchSSDQCOM-06974#
+--     If @OpImageBlockMatchSSDQCOM@ is used to read from an
+--     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
+--     or
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_SXD_BIT_QCOM'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-OpImageBlockMatchSADQCOM-12420#
+--     If @OpImageBlockMatchSADQCOM@ is used to read from an
+--     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
+--     or
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_SXD_BIT_QCOM'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-OpImageBlockMatchSADQCOM-06976#
+--     If @OpImageBlockMatchSADQCOM@ or OpImageBlockMatchSSDQCOM is used to
+--     read from a reference image as result of this command, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-blockMatchExtendedClampToEdge blockMatchExtendedClampToEdge>
+--     feature is not enabled or the /input/ sampler was not created with
+--     both @addressModeU@ and @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--     then the specified reference coordinates /must/ not fail
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-OpImageSampleWeightedQCOM-06977#
+--     If @OpImageSampleWeightedQCOM@, @OpImageBoxFilterQCOM@,
+--     @OpImageBlockMatchWindowSSDQCOM@, @OpImageBlockMatchWindowSADQCOM@,
+--     @OpImageBlockMatchGatherSSDQCOM@, @OpImageBlockMatchGatherSADQCOM@,
+--     @OpImageBlockMatchSSDQCOM@, or @OpImageBlockMatchSADQCOM@ uses a
+--     'Vulkan.Core10.Handles.Sampler' as a result of this command, then
+--     the sampler /must/ have been created with
+--     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-OpImageSampleWeightedQCOM-06978#
+--     If any command other than @OpImageSampleWeightedQCOM@,
+--     @OpImageBoxFilterQCOM@, @OpImageBlockMatchWindowSSDQCOM@,
+--     @OpImageBlockMatchWindowSADQCOM@, @OpImageBlockMatchGatherSSDQCOM@,
+--     @OpImageBlockMatchGatherSADQCOM@, @OpImageBlockMatchSSDQCOM@, or
+--     @OpImageBlockMatchSADQCOM@ uses a 'Vulkan.Core10.Handles.Sampler' as
+--     a result of this command, then the sampler /must/ not have been
+--     created with
+--     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-OpImageBlockMatchWindow-09215#
+--     If a @OpImageBlockMatchWindow*QCOM@ or
+--     @OpImageBlockMatchGather*QCOM@ instruction is used to read from an
+--     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-OpImageBlockMatchWindow-09216#
+--     If a @OpImageBlockMatchWindow*QCOM@ or
+--     @OpImageBlockMatchGather*QCOM@ instruction is used to read from an
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the image view’s format /must/ be a single-component format
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-OpImageBlockMatchWindow-09217#
+--     If a @OpImageBlockMatchWindow*QCOM@ or
+--     @OpImageBlockMatchGather*QCOM@ read from a reference image as result
+--     of this command, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-blockMatchExtendedClampToEdge blockMatchExtendedClampToEdge>
+--     feature is not enabled or the /input/ sampler was not created with
+--     both @addressModeU@ and @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--     then the specified reference coordinates /must/ not fail
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-OpImageBlockMatchWindow-12421#
+--     If a @OpImageBlockMatchWindow*QCOM@ or
+--     @OpImageBlockMatchGather*QCOM@ instruction uses a
+--     'Vulkan.Core10.Handles.Sampler' as a result of this command, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-blockMatchExtendedClampToEdge blockMatchExtendedClampToEdge>
+--     is not enabled, the /input/ sampler /must/ not have been created
+--     with either @addressModeU@ or @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-addressModeU-12422# If a
+--     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     instruction uses a 'Vulkan.Core10.Handles.Sampler' as a result of
+--     this command, and the /input/ sampler was created with either
+--     @addressModeU@ or @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE',
+--     then the sampler /must/ have been created with both @addressModeU@
+--     and @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07288# Any shader
+--     invocation executed by this command /must/
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-termination terminate>
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-09600# If a descriptor
+--     with type equal to any of
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',
+--     or
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'
+--     is accessed as a result of this command, all image subresources
+--     identified by that descriptor /must/ be in the image layout
+--     identified when the descriptor was written
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-micromap-11636# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command through an
+--     @OpRayQueryProceedKHR@ operation , the @VK_EXT_opacity_micromap@
+--     extension is not enabled, and the acceleration structure is built
+--     using geometry with a
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapKHR'
+--     structure included in its @pNext@ chain, the shader /must/ have
+--     specified a @OpacityMicromapIdKHR@ execution mode with its
+--     specialization constant operand equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-micromap-11637# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command and the
+--     acceleration structure was constructed through deserialization, all
+--     micromap arrays referenced by the acceleration structure that were
+--     not replaced by an acceleration structure update command /must/ have
+--     been deserialized using the serialized data of the corresponding
+--     micromaps used to originally build the acceleration structure prior
+--     to the execution of this command on the device
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-micromap-11638# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command and the
+--     acceleration structure is built using geometry with an @indexBuffer@
+--     containing both
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.OpacityMicromapSpecialIndexKHR'
+--     values and indices into an associated micromap array, any
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command /must/ not have been created with @flags@ that
+--     includes
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_KHR'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-micromap-11639# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command and the
+--     acceleration structure is built using geometry with an @indexBuffer@
+--     containing both
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.OpacityMicromapSpecialIndexKHR'
+--     values and indices into an associated micromap array, any
+--     'Vulkan.Extensions.Handles.ShaderEXT' that accessed the descriptor
+--     /must/ not have been created with @flags@ that includes
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_EXT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-commandBuffer-10746# The
+--     'Vulkan.Core10.Handles.DeviceMemory' object allocated from a
+--     'Vulkan.Core10.DeviceInitialization.MemoryHeap' with the
+--     'Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_TILE_MEMORY_BIT_QCOM'
+--     property that is bound to a resource accessed as a result of this
+--     command /must/ be the active
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-bind-tile-memory bound tile memory object>
+--     in @commandBuffer@
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-10678# If this command is
+--     recorded inside a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-tile-shading tile shading render pass>
+--     instance, the stages corresponding to the pipeline bind point used
+--     by this command /must/ only include
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT',
+--     and\/or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-10679# If this command is
+--     recorded where
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model>
+--     is enabled, there /must/ be no access to any image while the image
+--     was be transitioned to the
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
+--     layout
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-pDescription-09900# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the
+--     underlying 'Vulkan.Extensions.Handles.TensorARM' object /must/ have
+--     been created with the
+--     'Vulkan.Extensions.VK_ARM_tensors.TENSOR_USAGE_SHADER_BIT_ARM' usage
+--     flag set
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-dimensionCount-09905# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the @Rank@
+--     of the @OpTypeTensorARM@ of the tensor resource variable /must/ be
+--     equal to the @dimensionCount@ provided via
+--     'Vulkan.Extensions.VK_ARM_tensors.TensorCreateInfoARM'::@pDescription@
+--     when creating the underlying 'Vulkan.Extensions.Handles.TensorARM'
+--     object
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-OpTypeTensorARM-09906# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the element
+--     type of the @OpTypeTensorARM@ of the tensor resource variable /must/
+--     be
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-tensor-formats compatible>
+--     with the 'Vulkan.Core10.Enums.Format.Format' of the
+--     'Vulkan.Extensions.Handles.TensorViewARM' used for the access
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-11297# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses a @OpTypeStruct@ decorated with @Block@ or
+--     @BufferBlock@ using that mapping, the calculated offset for the
+--     resource heap /must/ be a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-bufferDescriptorAlignment bufferDescriptorAlignment>
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-11298# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses an @OpTypeImage@ or @OpTypeSampledImage@ using
+--     that mapping, the calculated offset for the resource heap /must/ be
+--     a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-imageDescriptorAlignment imageDescriptorAlignment>
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-11299# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses an @OpTypeSampler@ or @OpTypeSampledImage@
+--     using that mapping, the calculated offset for the sampler heap
+--     /must/ be a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-samplerDescriptorAlignment samplerDescriptorAlignment>
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-11397# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses an @OpTypeTensorARM@ using that mapping, the
+--     calculated offset for the resource heap /must/ be a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-tensorDescriptorAlignment tensorDescriptorAlignment>
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-11300# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a
+--     multiple of 4
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-11301# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' backed by physical
+--     memory at every offset specified by each mapping
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-11302# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-11304# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a
+--     multiple of 8
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-11305# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' backed by physical
+--     memory at every offset specified by each mapping
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-11306# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address pointed to by the address in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-11308# For each
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps descriptor heap>
+--     that is statically used by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
+--     either directly or via a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>,
+--     a valid descriptor heap /must/ be bound
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-11309# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     was created as a 'Vulkan.Extensions.Handles.ShaderEXT' with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag or as part of a pipeline with the
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag, execution of this command /must/ not result in any descriptor
+--     read accessing data outside of the user range of the respective heap
+--     bound by @vkCmdBind*HeapEXT@ commands
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-11372# If any stage of
+--     the 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline
+--     bind point used by this command accesses a uniform buffer or uniform
+--     texel buffer through a descriptor in the bound resource heap, that
+--     stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @uniformBuffers@, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /must/ not access values outside
+--     of the range of the descriptor specified via
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+--     when the descriptor was written
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-11373# If any stage of
+--     the 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline
+--     bind point used by this command accesses a storage buffer or storage
+--     texel buffer through a descriptor in the bound resource heap, that
+--     stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @storageBuffers@, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /must/ not access values outside
+--     of the range of the descriptor specified by
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+--     when the descriptor was written
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-11374# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, and any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     to the pipeline bind point used by this command accesses a uniform
+--     buffer, uniform texel buffer, storage buffer, or storage texel
+--     buffer, that shader /must/ not access values outside of the range of
+--     the buffer as specified by
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+--     when the descriptor was written
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-pBindInfo-11375# If any
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     uses an embedded sampler via a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>,
+--     the value of @pBindInfo->reservedRangeSize@ set for
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.cmdBindSamplerHeapEXT'
+--     /must/ be greater than or equal to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minSamplerHeapReservedRangeWithEmbedded minSamplerHeapReservedRangeWithEmbedded>
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-11376# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     was created as a 'Vulkan.Extensions.Handles.ShaderEXT' with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag or as part of a pipeline with the
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag, and that shader statically uses a push constant value, that
+--     value /must/ have been set by
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.cmdPushDataEXT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-11398# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_DATA_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_DATA_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_RESOURCE_HEAP_DATA_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the access
+--     /must/ not be
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-execution-memory-access-bounds out of bounds>
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-11437# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the buffer from
+--     which the address in push data was queried /must/ have been created
+--     with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-11438# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a uniform buffer using that mapping, the
+--     address that the uniform buffer is mapped to /must/ have been
+--     queried from a buffer created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-11441# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a uniform buffer using that mapping, the
+--     address that the uniform buffer is mapped to /must/ be aligned to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minUniformBufferOffsetAlignment minUniformBufferOffsetAlignment>
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-11439# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a storage buffer using that mapping, the
+--     address that the storage buffer is mapped to /must/ have been
+--     queried from a buffer created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_STORAGE_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-11442# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a storage buffer using that mapping, the
+--     address that the storage buffer is mapped to /must/ be aligned to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minStorageBufferOffsetAlignment minStorageBufferOffsetAlignment>
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-11485# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses an acceleration structure using that mapping,
+--     the address that the acceleration structure is mapped to /must/ be
+--     an acceleration structure address retrieved from a
+--     'Vulkan.Extensions.Handles.AccelerationStructureKHR' object via
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.getAccelerationStructureDeviceAddressKHR'
+--     or handle retrieved from a
+--     'Vulkan.Extensions.Handles.AccelerationStructureNV' object via
+--     'Vulkan.Extensions.VK_NV_ray_tracing.getAccelerationStructureHandleNV'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-index-11450# If a shader uses
+--     a sampler descriptor to sample an image as a result of this command,
+--     and that sampler descriptor uses a custom border color with an index
+--     defined by
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.SamplerCustomBorderColorIndexCreateInfoEXT',
+--     the value of
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.SamplerCustomBorderColorIndexCreateInfoEXT'::@index@
+--     /must/ have been registered before this command was recorded, and
+--     still be registered during the sampling operation, with an
+--     identically defined color
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-protectedNoFault-11455# If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, a pipeline is bound to the pipeline bind point
+--     used by this command, or a shader is bound to a shader stage used by
+--     this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     the address that the resource is mapped to /must/ have been queried
+--     from a buffer created without the
+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT'
+--     create flag set
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-protectedNoFault-11456# If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, a pipeline is bound to the pipeline bind point
+--     used by this command, or a shader is bound to a shader stage used by
+--     this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     the address of the indirect memory /must/ have been queried from a
+--     buffer created without the
+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT'
+--     create flag set
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-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.GraphicsPipeline.GraphicsPipelineCreateInfo'
+--     structure specified when creating the
+--     'Vulkan.Core10.Handles.Pipeline' bound to
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-subpass-02685# The subpass
+--     index of the current render pass /must/ be equal to the @subpass@
+--     member of the
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'
+--     structure specified when creating the
+--     'Vulkan.Core10.Handles.Pipeline' bound to
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-OpTypeImage-07468# If any
+--     shader executed by this pipeline accesses an @OpTypeImage@ variable
+--     with a @Dim@ operand of @SubpassData@, it /must/ be decorated with
+--     an @InputAttachmentIndex@ that corresponds to a valid input
+--     attachment in the current subpass
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07469# Input attachment
+--     views accessed in a subpass /must/ be created with the same
+--     'Vulkan.Core10.Enums.Format.Format' as the corresponding subpass
+--     definition, and be created with a 'Vulkan.Core10.Handles.ImageView'
+--     that is compatible with the attachment referenced by the subpass\'
+--     @pInputAttachments@[@InputAttachmentIndex@] in the bound
+--     'Vulkan.Core10.Handles.Framebuffer' as specified by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#compatibility-inputattachment Fragment Input Attachment Compatibility>
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-pDepthInputAttachmentIndex-09595#
+--     Input attachment views accessed in a dynamic render pass with a
+--     @InputAttachmentIndex@ referenced by
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo',
+--     or no @InputAttachmentIndex@ if
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pDepthInputAttachmentIndex@
+--     or
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pStencilInputAttachmentIndex@
+--     are @NULL@, /must/ be created with a
+--     'Vulkan.Core10.Handles.ImageView' that is compatible with the
+--     corresponding color, depth, or stencil attachment in
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-pDepthInputAttachmentIndex-09596#
+--     Input attachment views accessed in a dynamic render pass via a
+--     shader object /must/ have an @InputAttachmentIndex@ if both
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pDepthInputAttachmentIndex@
+--     and
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pStencilInputAttachmentIndex@
+--     are non-@NULL@
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-InputAttachmentIndex-09597# If
+--     an input attachment view accessed in a dynamic render pass via a
+--     shader object has an @InputAttachmentIndex@, the
+--     @InputAttachmentIndex@ /must/ match an index in
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-06537# Memory backing
+--     image subresources used as attachments in the current render pass
+--     /must/ not be written in any way other than as an attachment by this
+--     command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-10795# If a color
+--     attachment is written by any prior command in this subpass or by the
+--     load, store, or resolve operations for this subpass, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT' on
+--     that attachment, it /must/ not be accessed in any way other than as
+--     an attachment by this command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-10796# If a depth
+--     attachment is written by any prior command in this subpass or by the
+--     load, store, or resolve operations for this subpass, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' on
+--     that attachment, it /must/ not be accessed in any way other than as
+--     an attachment by this command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-10797# If a stencil
+--     attachment is written by any prior command in this subpass or by the
+--     load, store, or resolve operations for this subpass, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
+--     on that attachment, it /must/ not be accessed in any way other than
+--     as an attachment by this command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-12338# If a color
+--     attachment is read in this command in any way other than as an
+--     attachment, or has been read by any prior command in this subpass as
+--     a non-attachment, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT' on
+--     that attachment, the color attachment /must/ not be written to by
+--     this command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-12339# If a depth
+--     attachment is read in this command in any way other than as an
+--     attachment, or has been read by any prior command in this subpass as
+--     a non-attachment, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' on
+--     that attachment, the depth attachment /must/ not be written to by
+--     this command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-12340# If a stencil
+--     attachment is read in this command in any way other than as an
+--     attachment, or has been read by any prior command in this subpass as
+--     a non-attachment, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
+--     on that attachment, the stencil attachment /must/ not be written to
+--     by this command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-09003# If an attachment
+--     is written by any prior command in this subpass or by the load,
+--     store, or resolve operations for this subpass, it /must/ not be
+--     accessed in any way other than as an attachment, storage image, or
+--     sampled image by this command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-06886# If the current
+--     render pass instance uses a depth\/stencil attachment with a
+--     read-only layout for the depth aspect,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-depth-write depth writes>
+--     /must/ be disabled
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-06887# If the current
+--     render pass instance uses a depth\/stencil attachment with a
+--     read-only layout for the stencil aspect, both front and back
+--     @writeMask@ are not zero, and stencil test is enabled,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-stencil all stencil ops>
+--     /must/ be 'Vulkan.Core10.Enums.StencilOp.STENCIL_OP_KEEP'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07831# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT' dynamic
+--     state enabled then
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetViewport' /must/ have
+--     been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07832# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR' dynamic
+--     state enabled then
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetScissor' /must/ have been
+--     called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08617# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_WIDTH' dynamic
+--     state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line topology class, then
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth' /must/ have
+--     been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07834# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS' dynamic
+--     state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @depthBiasEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBias' or
+--     'Vulkan.Extensions.VK_EXT_depth_bias_control.cmdSetDepthBias2EXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07835# If a shader object
+--     is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_BLEND_CONSTANTS'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and an active color
+--     attachment
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @blendEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE' with a
+--     blend equations where any
+--     'Vulkan.Core10.Enums.BlendFactor.BlendFactor' member is
+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_COLOR',
+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR',
+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_ALPHA', or
+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA',
+--     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetBlendConstants'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07836# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @depthBoundsTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBounds' /must/
+--     have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07837# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_COMPARE_MASK'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilCompareMask'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07838# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_WRITE_MASK'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilWriteMask'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07839# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_REFERENCE'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of and @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilReference'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-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-vkCmdExecuteGeneratedCommandsNV-sampleLocationsEnable-02689#
+--     If the bound graphics pipeline was created with
+--     'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@
+--     set to 'Vulkan.Core10.FundamentalTypes.TRUE', then the active depth
+--     attachment /must/ have been created with the
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'
+--     bit set
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07634# If the
+--     @VK_EXT_sample_locations@ extension is enabled, a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-06666# If the
+--     @VK_EXT_sample_locations@ extension is enabled, a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07840# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CULL_MODE' dynamic
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetCullMode'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07841# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRONT_FACE' dynamic
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetFrontFace'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07843# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_TEST_ENABLE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE',
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthTestEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07844# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @depthTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthWriteEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07845# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_COMPARE_OP'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @depthTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthCompareOp'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07846# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthBounds depthBounds>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthBoundsTestEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07847# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_TEST_ENABLE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilTestEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07848# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_OP' dynamic
+--     state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilOp'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-viewportCount-03417# If a
+--     shader object is bound to any graphics stage or a graphics pipeline
+--     is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
+--     dynamic state enabled, and the state is not inherited, then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-scissorCount-03418# If a
+--     shader object is bound to any graphics stage or a graphics pipeline
+--     is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
+--     dynamic state enabled, and the state is not inherited, then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-viewportCount-03419# If a
+--     shader object is bound to any graphics stage or a graphics pipeline
+--     is bound which 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, and the state is not inherited, then 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-vkCmdExecuteGeneratedCommandsNV-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-vkCmdExecuteGeneratedCommandsNV-viewportCount-04138# If the
+--     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which 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 state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @viewportWScalingEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.cmdSetViewportWScalingNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08636# If the
+--     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which 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 state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @viewportWScalingEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', 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-vkCmdExecuteGeneratedCommandsNV-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-vkCmdExecuteGeneratedCommandsNV-shadingRateImage-09233# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV'
+--     and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetCoarseSampleOrderNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-shadingRateImage-09234# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which 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 state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @shadingRateImageEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetViewportShadingRatePaletteNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08637# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which 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 state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @shadingRateImageEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', 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-vkCmdExecuteGeneratedCommandsNV-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
+--     'Vulkan.Core10.GraphicsPipeline.PipelineViewportStateCreateInfo',
+--     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-vkCmdExecuteGeneratedCommandsNV-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
+--     'Vulkan.Core10.GraphicsPipeline.PipelineViewportStateCreateInfo',
+--     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-vkCmdExecuteGeneratedCommandsNV-None-07878# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-exclusiveScissor exclusiveScissor>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07879# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-exclusiveScissor exclusiveScissor>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV'
+--     dynamic state enabled, and the most recent call to
+--     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorEnableNV'
+--     in the current command buffer set any element of
+--     @pExclusiveScissorEnables@ to 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then
+--     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-04876# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     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 and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-04877# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-logicOp-04878# If a shader
+--     object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @logicOpEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetLogicOpEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-primitiveFragmentShadingRateWithMultipleViewports-04552#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
+--     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-vkCmdExecuteGeneratedCommandsNV-primitiveFragmentShadingRateWithMultipleViewports-08642#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
+--     limit is not supported, and any shader object bound to a graphics
+--     stage writes 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-vkCmdExecuteGeneratedCommandsNV-blendEnable-04727# If a shader
+--     object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then for each color
+--     attachment, 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 corresponding
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @blendEnable@ /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08644# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and none of the following is
+--     enabled:
+--
+--     -   the @VK_AMD_mixed_attachment_samples@ extension
+--
+--     -   the @VK_NV_framebuffer_mixed_samples@ extension
+--
+--     -   the
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
+--         feature
+--
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizationSamples@ /must/ be the same as the current color
+--     and\/or depth\/stencil attachments
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08876# If a shader object
+--     is bound to any graphics stage, the current render pass instance
+--     /must/ have been begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-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-vkCmdExecuteGeneratedCommandsNV-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-vkCmdExecuteGeneratedCommandsNV-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-vkCmdExecuteGeneratedCommandsNV-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-vkCmdExecuteGeneratedCommandsNV-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-vkCmdExecuteGeneratedCommandsNV-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-vkCmdExecuteGeneratedCommandsNV-viewMask-06178# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the 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-vkCmdExecuteGeneratedCommandsNV-colorAttachmentCount-06179# If
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled and the current render pass instance was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the 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-vkCmdExecuteGeneratedCommandsNV-dynamicRenderingUnusedAttachments-08910#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and 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 an @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 bound graphics pipeline
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-dynamicRenderingUnusedAttachments-08912#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and 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 an @imageView@ equal to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have the
+--     corresponding element of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
+--     used to create the bound pipeline equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-dynamicRenderingUnusedAttachments-08911#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled, and 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 an @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 bound graphics pipeline, or the corresponding
+--     element of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@,
+--     if it exists, /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-colorAttachmentCount-09362# If
+--     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@
+--     equal to @1@, there is no shader object bound to any graphics stage,
+--     and a color attachment with a resolve mode of
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID',
+--     each element of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
+--     array with a @resolveImageView@ not equal to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
+--     with an image created with a
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value equal to the
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value used to create the bound graphics pipeline
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-09363# If there is no
+--     shader object bound to any graphics stage, the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and a
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
+--     equal to @1@, and a color attachment with a resolve mode of
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID',
+--     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 an image created with a
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value equal to the
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value used to create the bound graphics pipeline
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-09364# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there is no shader object bound to any graphics stage, and the bound
+--     graphics pipeline was created with a non-zero
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value and with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
+--     /must/ have set the blend enable to
+--     'Vulkan.Core10.FundamentalTypes.FALSE' prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-09365# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there is no shader object bound to any graphics stage, and the bound
+--     graphics pipeline was created with a non-zero
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value and with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     /must/ have set @rasterizationSamples@ to
+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' prior
+--     to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-09366# If there is a
+--     shader object bound to any graphics stage, and the current render
+--     pass includes a color attachment that uses the
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID'
+--     resolve mode, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
+--     /must/ have set blend enable to
+--     'Vulkan.Core10.FundamentalTypes.FALSE' prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-rasterizationSamples-09367# If
+--     there is a shader object bound to any graphics stage, and the
+--     current render pass includes a color attachment that uses the
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID'
+--     resolve mode, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     /must/ have set @rasterizationSamples@ to
+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' prior
+--     to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-09368# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there is no shader object bound to any graphics stage, and the bound
+--     graphics pipeline was created with a non-zero
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value and with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     /must/ have set @pFragmentSize->width@ to @1@ prior to this drawing
+--     command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-09369# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there is no shader object bound to any graphics stage, and the bound
+--     graphics pipeline was created with a non-zero
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value and with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     /must/ have set @pFragmentSize->height@ to @1@ prior to this drawing
+--     command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-pFragmentSize-09370# If there
+--     is a shader object bound to any graphics stage, and the current
+--     render pass includes a color attachment that uses the
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID'
+--     resolve mode, then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     /must/ have set @pFragmentSize->width@ to @1@ prior to this drawing
+--     command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-pFragmentSize-09371# If there
+--     is a shader object bound to any graphics stage, and the current
+--     render pass includes a color attachment that uses the
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID'
+--     resolve mode, then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     /must/ have set @pFragmentSize->height@ to @1@ prior to this drawing
+--     command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07749# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
+--     feature is enabled, a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-attachmentCount-07750# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
+--     feature is enabled, a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then the @attachmentCount@
+--     parameter of most recent call to
+--     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
+--     in the current command buffer /must/ be greater than or equal to the
+--     number of active color attachments
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07751# If the
+--     @VK_EXT_discard_rectangles@ extension is enabled, a graphics
+--     pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_EXT'
+--     dynamic state enabled and the @pNext@ chain of
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo' included
+--     a
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'
+--     structure, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @discardRectangleEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command for each
+--     discard rectangle in
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'::@discardRectangleCount@
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-rasterizerDiscardEnable-09236#
+--     If the @VK_EXT_discard_rectangles@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_EXT'
+--     dynamic state enabled and the @pNext@ chain of
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo' did not
+--     include a
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'
+--     structure, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @discardRectangleEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command for each
+--     discard rectangle in
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.PhysicalDeviceDiscardRectanglePropertiesEXT'::@maxDiscardRectangles@
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07880# If the
+--     @VK_EXT_discard_rectangles@ extension is enabled, a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07881# If the
+--     @VK_EXT_discard_rectangles@ extension is enabled, a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @discardRectangleEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleModeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-dynamicRenderingUnusedAttachments-08913#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
+--     used to create the bound graphics pipeline /must/ be equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-dynamicRenderingUnusedAttachments-08914#
+--     If current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->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 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->imageView@
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-dynamicRenderingUnusedAttachments-08915#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
+--     used to create the bound graphics pipeline was not equal to the
+--     'Vulkan.Core10.Enums.Format.Format' used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@,
+--     the value of the format /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-dynamicRenderingUnusedAttachments-08916#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
+--     used to create the bound graphics pipeline /must/ be equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-dynamicRenderingUnusedAttachments-08917#
+--     If current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->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 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->imageView@
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-dynamicRenderingUnusedAttachments-08918#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
+--     used to create the bound graphics pipeline was not equal to the
+--     'Vulkan.Core10.Enums.Format.Format' used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@,
+--     the value of the format /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-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_fragment_shading_rate.RenderingFragmentShadingRateAttachmentInfoKHR'::@imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the bound graphics
+--     pipeline /must/ have been created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-dynamicRenderingLocalRead-11797#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingLocalRead dynamicRenderingLocalRead>
+--     feature is enabled, the
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_LOCAL_READ_CONCURRENT_ACCESS_CONTROL_BIT_KHR'
+--     flag is specified, and an attachment is being used as a feedback
+--     loop as specified by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#rendering-attachment-input-attachment-feedback >,
+--     'Vulkan.Extensions.VK_KHR_maintenance10.RenderingAttachmentFlagsInfoKHR'::@flags@
+--     for that attachment /must/ include
+--     'Vulkan.Extensions.VK_KHR_maintenance10.RENDERING_ATTACHMENT_INPUT_ATTACHMENT_FEEDBACK_BIT_KHR'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-imageView-06184# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and
+--     'Vulkan.Extensions.VK_EXT_fragment_density_map.RenderingFragmentDensityMapAttachmentInfoEXT'::@imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the bound graphics
+--     pipeline /must/ have been created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-layers-10831# If the current
+--     render pass instance was created with
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE'
+--     or
+--     'Vulkan.Core10.Enums.RenderPassCreateFlagBits.RENDER_PASS_CREATE_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE',
+--     and the bound graphics pipeline was created with
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE',
+--     then the current render pass instance /must/ have a @layers@ value
+--     less than or equal to
+--     'Vulkan.Extensions.VK_VALVE_fragment_density_map_layered.PipelineFragmentDensityMapLayeredCreateInfoVALVE'::@maxFragmentDensityMapLayers@
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-colorAttachmentCount-06185# If
+--     the bound pipeline was created with a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.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_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     used to create the bound graphics pipeline
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-pDepthAttachment-06186# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the bound pipeline was created with a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     structure, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
+--     @depthStencilAttachmentSamples@ member of
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     used to create the bound graphics pipeline /must/ be equal to the
+--     sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-pStencilAttachment-06187# If
+--     the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the bound pipeline was created with a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     structure, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
+--     @depthStencilAttachmentSamples@ member of
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     used to create the bound graphics pipeline /must/ be equal to the
+--     sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-multisampledRenderToSingleSampled-07285#
+--     If the bound pipeline was created without a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     structure, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
+--     feature is not enabled, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, 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 @rasterizationSamples@ for
+--     the bound graphics pipeline
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-multisampledRenderToSingleSampled-07286#
+--     If the bound pipeline was created without a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     structure, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
+--     feature is not enabled, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     @rasterizationSamples@ for the bound graphics pipeline /must/ be
+--     equal to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-multisampledRenderToSingleSampled-07287#
+--     If the bound pipeline was created without a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     structure, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
+--     feature is not enabled, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     @rasterizationSamples@ for the bound graphics pipeline /must/ be
+--     equal to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-pNext-07935# If this command
+--     is called inside a render pass instance started with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     and the @pNext@ chain of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'
+--     includes a
+--     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'
+--     structure with @multisampledRenderToSingleSampledEnable@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then the value of
+--     @rasterizationSamples@ for the bound graphics pipeline /must/ be
+--     equal to
+--     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'::@rasterizationSamples@
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-renderPass-06198# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the bound pipeline /must/ have been created with a
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'::@renderPass@
+--     equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-pColorAttachments-08963# If
+--     the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, there is a
+--     graphics pipeline bound with a fragment shader that statically
+--     writes to a color attachment, the color write mask is not zero,
+--     color writes are enabled, and the corresponding element of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     corresponding element of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-pColorAttachments-11539# If
+--     the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, there is a graphics
+--     pipeline bound with a fragment shader that statically writes to a
+--     color attachment, the color write mask is not zero, color writes are
+--     enabled, and the corresponding element of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     corresponding element of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-pDepthAttachment-08964# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, there is a
+--     graphics pipeline bound, depth test is enabled, and the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-pDepthAttachment-11540# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, there is a graphics
+--     pipeline bound, depth test is enabled, and the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-pStencilAttachment-08965# If
+--     the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, there is a
+--     graphics pipeline bound, stencil test is enabled and the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-pStencilAttachment-11860# If
+--     the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, there is a graphics
+--     pipeline bound, stencil test is enabled and the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-flags-10582# If the current
+--     render pass instance was begun with a
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     call in @commandBuffer@, its
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@flags@
+--     parameter /must/ not have
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT'
+--     set unless
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_CONTENTS_INLINE_BIT_KHR'
+--     is also set
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-primitivesGeneratedQueryWithRasterizerDiscard-06708#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithRasterizerDiscard primitivesGeneratedQueryWithRasterizerDiscard>
+--     feature is not enabled and the
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
+--     query is active,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-discard rasterization discard>
+--     /must/ not be enabled
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-primitivesGeneratedQueryWithNonZeroStreams-06709#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>
+--     feature is not enabled and the
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
+--     query is active, the bound graphics pipeline /must/ not have been
+--     created with a non-zero value in
+--     'Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT'::@rasterizationStream@
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07620# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClamp depthClamp>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClampEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07621# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_POLYGON_MODE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07622# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07623# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-alphaToCoverageEnable-08919#
+--     If the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT'
+--     dynamic state enabled, and @alphaToCoverageEnable@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-fragmentoutput Fragment Output Interface>
+--     /must/ contain a variable for the alpha @Component@ word in
+--     @Location@ 0 at @Index@ 0
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-alphaToCoverageEnable-08920#
+--     If a shader object is bound to any graphics stage, and the most
+--     recent call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT'
+--     in the current command buffer set @alphaToCoverageEnable@ to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-fragmentoutput Fragment Output Interface>
+--     /must/ contain a variable for the alpha @Component@ word in
+--     @Location@ 0 at @Index@ 0
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07624# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07625# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-alphaToOne alphaToOne>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToOneEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07626# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-logicOp logicOp>
+--     feature is enabled, a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLogicOpEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07627# If a shader object
+--     is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and there are color
+--     attachments bound, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07629# If a shader object
+--     is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and there are color
+--     attachments bound, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07630# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryStreams geometryStreams>
+--     feature is enabled, and a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
+--     stage or a graphics pipeline is bound which was created with both a
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
+--     stage and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_STREAM_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationStreamEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07631# If the
+--     @VK_EXT_conservative_rasterization@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetConservativeRasterizationModeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07632# If the
+--     @VK_EXT_conservative_rasterization@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @conservativeRasterizationMode@ is
+--     'Vulkan.Extensions.VK_EXT_conservative_rasterization.CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT',
+--     then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetExtraPrimitiveOverestimationSizeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-conservativePointAndLineRasterization-07499#
+--     If the @VK_EXT_conservative_rasterization@ extension is enabled,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-conservativePointAndLineRasterization conservativePointAndLineRasterization>
+--     is not supported, a shader object is bound to any graphics stage or
+--     a graphics pipeline is bound, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line or point topology class, then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @conservativeRasterizationMode@ /must/ be
+--     'Vulkan.Extensions.VK_EXT_conservative_rasterization.CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07633# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClipEnable depthClipEnable>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT'
+--     dynamic state, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07636# If the
+--     @VK_EXT_provoking_vertex@ extension is enabled, a shader object is
+--     bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetProvokingVertexModeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08666# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
+--     features are enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line topology class, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08669# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
+--     features are enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line topology class, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07849# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
+--     features are enabled and a shader object is bound to any graphics
+--     stage, or a bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @stippledLineEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then
+--     'Vulkan.Core14.Promoted_From_VK_KHR_line_rasterization.cmdSetLineStipple'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-10608# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line topology class, and the current @lineRasterizationMode@
+--     is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_BRESENHAM'
+--     or
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH',
+--     then the current @alphaToCoverageEnable@, @alphaToOneEnable@ and
+--     @sampleShadingEnable@ states /must/ all be
+--     'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07639# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClipControl depthClipControl>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipNegativeOneToOneEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-09650# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClampControl depthClampControl>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @depthClampEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_depth_clamp_control.cmdSetDepthClampRangeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07640# If the
+--     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportWScalingEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07641# If the
+--     @VK_NV_viewport_swizzle@ extension is enabled, and a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07642# If the
+--     @VK_NV_fragment_coverage_to_color@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07643# If the
+--     @VK_NV_fragment_coverage_to_color@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @coverageToColorEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07644# If the
+--     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationModeNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07645# If the
+--     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @coverageModulationMode@ is any value other than
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.COVERAGE_MODULATION_MODE_NONE_NV',
+--     then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07646# If the
+--     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @coverageModulationTableEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07647# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetShadingRateImageEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-pipelineFragmentShadingRate-09238#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07648# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-representativeFragmentTest representativeFragmentTest>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRepresentativeFragmentTestEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07649# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-coverageReductionMode coverageReductionMode>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageReductionModeNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-rasterizationSamples-07471# If
+--     the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, and the current subpass does not use any color
+--     and\/or depth\/stencil attachments, then the @rasterizationSamples@
+--     in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     /must/ follow the rules for a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-noattachments zero-attachment subpass>
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-samples-07472# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
+--     state enabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state disabled, then the @samples@ parameter in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
+--     /must/ be greater or equal to the
+--     'Vulkan.Core10.GraphicsPipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
+--     parameter used to create the bound graphics pipeline
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-samples-07473# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
+--     state and
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     states enabled, then the @samples@ parameter in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
+--     /must/ be greater or equal to the @rasterizationSamples@ parameter
+--     in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-09211# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, or a shader object is bound to any graphics stage,
+--     and the current render pass instance includes a
+--     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'
+--     structure with @multisampledRenderToSingleSampledEnable@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then the
+--     @rasterizationSamples@ in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     /must/ be the same as the @rasterizationSamples@ member of that
+--     structure
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-firstAttachment-07476# If a
+--     shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--     dynamic states enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
+--     in the current command buffer prior to this drawing command /must/
+--     have set a value for all active color attachments
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-firstAttachment-07478# If a
+--     shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT'
+--     dynamic states enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
+--     in the current command buffer prior to this drawing command /must/
+--     have set a value for all active color attachments
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-advancedBlendMaxColorAttachments-07480#
+--     If a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
+--     and
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--     dynamic states enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and an active color
+--     attachment
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @blendEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then the
+--     number of active color attachments /must/ not exceed
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-advancedBlendMaxColorAttachments advancedBlendMaxColorAttachments>
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-10862# If a graphics
+--     pipeline is bound was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
+--     , but not the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command for all
+--     active color attachments with the @blendEnable@
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-rasterizerDiscardEnable-10863#
+--     If a graphics pipeline is bound was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT',
+--     but not the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command for all
+--     active color attachments with the @blendEnable@
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-10864# If a shader object
+--     is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
+--     and
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then either
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command for all
+--     active color attachments with the @blendEnable@
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-primitivesGeneratedQueryWithNonZeroStreams-07481#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>
+--     feature is not enabled and the
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
+--     query is active, and the bound graphics pipeline was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_STREAM_EXT'
+--     state enabled, the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationStreamEXT'
+--     /must/ have set the @rasterizationStream@ to zero
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-sampleLocationsPerPixel-07482#
+--     If the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state enabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state disabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then the @sampleLocationsPerPixel@ member of @pSampleLocationsInfo@
+--     in the last call to
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     /must/ equal the @rasterizationSamples@ member of the
+--     'Vulkan.Core10.GraphicsPipeline.PipelineMultisampleStateCreateInfo'
+--     structure the bound graphics pipeline has been created with
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-sampleLocationsPerPixel-07483#
+--     If the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state enabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then the @sampleLocationsPerPixel@ member of @pSampleLocationsInfo@
+--     in the last call to
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     /must/ equal the @rasterizationSamples@ parameter of the last call
+--     to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-sampleLocationsEnable-07484#
+--     If a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage, or the bound graphics pipeline was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     state enabled, and @sampleLocationsEnable@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT'
+--     then the current active depth attachment /must/ have been created
+--     with the
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'
+--     bit set
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-sampleLocationsEnable-07485#
+--     If a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage, or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state enabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     state enabled, and if @sampleLocationsEnable@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
+--     then the @sampleLocationsInfo.maxSampleLocationGridSize.width@ in
+--     the last call to
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     /must/ evenly divide
+--     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.width@
+--     as returned by
+--     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
+--     with a @samples@ parameter equaling @rasterizationSamples@
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-sampleLocationsEnable-07486#
+--     If a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage, or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state enabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     state enabled, and if @sampleLocationsEnable@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
+--     then the @sampleLocationsInfo.maxSampleLocationGridSize.height@ in
+--     the last call to
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     /must/ evenly divide
+--     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.height@
+--     as returned by
+--     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
+--     with a @samples@ parameter equaling @rasterizationSamples@
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-sampleLocationsEnable-07487#
+--     If a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage, or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     state enabled, and if @sampleLocationsEnable@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
+--     the fragment shader code /must/ not statically use the extended
+--     instruction @InterpolateAtSample@
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-sampleLocationsEnable-07936#
+--     If the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state disabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then @sampleLocationsInfo.sampleLocationGridSize.width@ /must/
+--     evenly divide
+--     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.width@
+--     as returned by
+--     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
+--     with a @samples@ parameter equaling the value of
+--     @rasterizationSamples@ in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-sampleLocationsEnable-07937#
+--     If the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state disabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then @sampleLocationsInfo.sampleLocationGridSize.height@ /must/
+--     evenly divide
+--     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.height@
+--     as returned by
+--     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
+--     with a @samples@ parameter equaling the value of
+--     @rasterizationSamples@ in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-sampleLocationsEnable-07938#
+--     If the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state disabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then @sampleLocationsInfo.sampleLocationsPerPixel@ /must/ equal
+--     @rasterizationSamples@ in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-coverageModulationTableEnable-07488#
+--     If a shader object is bound to any graphics stage or the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV'
+--     state enabled, and the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV'
+--     set @coverageModulationTableEnable@ to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then the
+--     @coverageModulationTableCount@ parameter in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableNV'
+--     /must/ equal the current @rasterizationSamples@ divided by the
+--     number of color samples in the current active color attachment
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-rasterizationSamples-07489# If
+--     the @VK_NV_framebuffer_mixed_samples@ extension is enabled, and if
+--     current subpass has a depth\/stencil attachment and depth test,
+--     stencil test, or depth bounds test are enabled in the bound
+--     pipeline, then the current @rasterizationSamples@ /must/ be the same
+--     as the sample count of the depth\/stencil attachment
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-coverageToColorEnable-07490#
+--     If the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
+--     state enabled and the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
+--     set the @coverageToColorEnable@ to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then there /must/ be an
+--     active color attachment at the location selected by the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
+--     @coverageToColorLocation@, with a
+--     'Vulkan.Core10.Enums.Format.Format' of
+--     'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R8_SINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R16_UINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R16_SINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R32_UINT', or
+--     'Vulkan.Core10.Enums.Format.FORMAT_R32_SINT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-rasterizerDiscardEnable-09420#
+--     If the @VK_NV_fragment_coverage_to_color@ extension is enabled, and
+--     a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage, and the most recent call to
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
+--     in the current command buffer set @rasterizerDiscardEnable@ to
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
+--     set the @coverageToColorEnable@ to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then there /must/ be an
+--     active color attachment at the location selected by the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
+--     @coverageToColorLocation@, with a
+--     'Vulkan.Core10.Enums.Format.Format' of
+--     'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R8_SINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R16_UINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R16_SINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R32_UINT', or
+--     'Vulkan.Core10.Enums.Format.FORMAT_R32_SINT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-coverageReductionMode-07491#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-coverageReductionMode coverageReductionMode>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV'
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     dynamic states enabled, then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current values>
+--     of @coverageReductionMode@, @rasterizationSamples@, the sample
+--     counts for the color and depth\/stencil attachments (if the subpass
+--     has them) /must/ be a valid combination returned by
+--     'Vulkan.Extensions.VK_NV_coverage_reduction_mode.getPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-viewportCount-07492# 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_SWIZZLE_NV'
+--     dynamic state enabled, 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-vkCmdExecuteGeneratedCommandsNV-viewportCount-07493# 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_SWIZZLE_NV'
+--     dynamic states enabled then the @viewportCount@ parameter in the
+--     last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
+--     /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-vkCmdExecuteGeneratedCommandsNV-viewportCount-09421# If the
+--     @VK_NV_viewport_swizzle@ extension is enabled, and a shader object
+--     is bound to any graphics stage, then the @viewportCount@ parameter
+--     in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
+--     /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-vkCmdExecuteGeneratedCommandsNV-rasterizationSamples-07494# If
+--     the @VK_NV_framebuffer_mixed_samples@ extension is enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-coverageReductionMode coverageReductionMode>
+--     feature is not enabled, or the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @coverageReductionMode@ is not
+--     'Vulkan.Extensions.VK_NV_coverage_reduction_mode.COVERAGE_REDUCTION_MODE_TRUNCATE_NV',
+--     and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizationSamples@ is greater than sample count of the color
+--     attachment, then
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-sampleshading sample shading>
+--     /must/ be disabled
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-stippledLineEnable-07495# If
+--     the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic states enabled, and if the current @stippledLineEnable@
+--     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
+--     @lineRasterizationMode@ state is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_RECTANGULAR',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-stippledLineEnable-07496# If
+--     the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic states enabled, and if the current @stippledLineEnable@
+--     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
+--     @lineRasterizationMode@ state is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_BRESENHAM',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-stippledLineEnable-07497# If
+--     the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic states enabled, and if the current @stippledLineEnable@
+--     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
+--     @lineRasterizationMode@ state is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-stippledLineEnable-07498# If
+--     the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic states enabled, and if the current @stippledLineEnable@
+--     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
+--     @lineRasterizationMode@ state is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_DEFAULT',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>
+--     feature /must/ be enabled and
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@strictLines@
+--     /must/ be 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-stage-07073# If the bound
+--     pipeline was created with the
+--     'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo'::@stage@
+--     member of an element of
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'::@pStages@
+--     set to
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT',
+--     then
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-mesh-shader Mesh Shader Queries>
+--     /must/ not be active
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08877# If a shader object
+--     is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07850# If dynamic state
+--     was inherited from
+--     'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV',
+--     it /must/ be set in the current command buffer prior to this drawing
+--     command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-nextStage-10745# For each
+--     shader object bound to a graphics stage, except for shader object
+--     bound to the last graphics stage in the logical pipeline, it /must/
+--     have been created with a @nextStage@ including the corresponding bit
+--     to the shader object bound to the following graphics stage in the
+--     logical pipeline
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08684# If there is no
+--     bound graphics pipeline,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08685# If there is no
+--     bound graphics pipeline, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellationShader>
+--     feature is enabled,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08686# If there is no
+--     bound graphics pipeline, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellationShader>
+--     feature is enabled,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08687# If there is no
+--     bound graphics pipeline, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometryShader>
+--     feature is enabled,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08688# If there is no
+--     bound graphics pipeline,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08689# If there is no
+--     bound graphics pipeline, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
+--     feature is enabled,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08690# If there is no
+--     bound graphics pipeline, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
+--     feature is enabled,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08693# If there is no
+--     bound graphics pipeline, and at least one of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
+--     features is enabled, one of the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--     stages /must/ have a valid 'Vulkan.Extensions.Handles.ShaderEXT'
+--     bound, and the other /must/ have no
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08696# If there is no
+--     bound graphics pipeline, and a valid
+--     'Vulkan.Extensions.Handles.ShaderEXT' is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage, there /must/ be no 'Vulkan.Extensions.Handles.ShaderEXT'
+--     bound to either the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--     stage or the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--     stage
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08698# If any graphics
+--     shader is bound which was created with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
+--     flag, then all shaders created with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
+--     flag in the same
+--     'Vulkan.Extensions.VK_EXT_shader_object.createShadersEXT' call
+--     /must/ also be bound
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08699# If any graphics
+--     shader is bound which was created with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
+--     flag, any stages in between stages whose shaders which did not
+--     create a shader with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
+--     flag as part of the same
+--     'Vulkan.Extensions.VK_EXT_shader_object.createShadersEXT' call
+--     /must/ not have any 'Vulkan.Extensions.Handles.ShaderEXT' bound
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08878# All bound graphics
+--     shader objects /must/ have been created with identical or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-identically-defined identically defined>
+--     push constant ranges
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08879# All bound graphics
+--     shader objects /must/ have either been created with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag set, or with identical or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-identically-defined identically defined>
+--     arrays of descriptor set layouts
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-colorAttachmentCount-09372# If
+--     the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and a
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
+--     equal to @1@, a color attachment with a resolve mode of
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID',
+--     and a fragment shader is bound, it /must/ not declare the
+--     @DepthReplacing@ or @StencilRefReplacingEXT@ execution modes
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-pDynamicStates-08715# If the
+--     bound graphics pipeline state includes a fragment shader stage, was
+--     created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE'
+--     set in
+--     'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@,
+--     and the fragment shader declares the @EarlyFragmentTests@ execution
+--     mode and uses @OpDepthAttachmentReadEXT@, the @depthWriteEnable@
+--     parameter in the last call to
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthWriteEnable'
+--     /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-pDynamicStates-08716# If the
+--     bound graphics pipeline state includes a fragment shader stage, was
+--     created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_WRITE_MASK'
+--     set in
+--     'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@,
+--     and the fragment shader declares the @EarlyFragmentTests@ execution
+--     mode and uses @OpStencilAttachmentReadEXT@, the @writeMask@
+--     parameter in the last call to
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilWriteMask' /must/
+--     be @0@
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-09116# If a shader object
+--     is bound to any graphics stage or the bound graphics pipeline was
+--     created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT',
+--     and the format of any color attachment is
+--     'Vulkan.Core10.Enums.Format.FORMAT_E5B9G9R9_UFLOAT_PACK32', the
+--     corresponding element of the @pColorWriteMasks@ parameter of
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
+--     /must/ either include all of
+--     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_R_BIT',
+--     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_G_BIT',
+--     and
+--     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_B_BIT',
+--     or none of them
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-maxFragmentDualSrcAttachments-09239#
+--     If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blending blending>
+--     is enabled for any attachment where either the source or destination
+--     blend factors for that attachment
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-dsb use the secondary color input>,
+--     the maximum value of @Location@ for any output attachment
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-staticuse statically used>
+--     in the @Fragment@ @Execution@ @Model@ executed by this command
+--     /must/ be less than
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFragmentDualSrcAttachments maxFragmentDualSrcAttachments>
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-09548# If the current
+--     render pass was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there is no shader object bound to any graphics stage, the value of
+--     each element of
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingAttachmentLocationInfo'::@pColorAttachmentLocations@
+--     in the bound pipeline /must/ match the value for the corresponding
+--     locations set currently in the current render pass instance
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-09549# If the current
+--     render pass was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     and there is no shader object bound to any graphics stage, the value
+--     of each element of
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pColorAttachmentInputIndices@
+--     in the bound pipeline /must/ match the value for the corresponding
+--     index set currently in the current render pass instance
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-10927# If the current
+--     render pass was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     and there is no shader object bound to any graphics stage, the value
+--     of
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pDepthInputAttachmentIndex@
+--     in the bound pipeline /must/ match the value set currently in the
+--     current render pass instance
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-10928# If the current
+--     render pass was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     and there is no shader object bound to any graphics stage, the value
+--     of
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pStencilInputAttachmentIndex@
+--     in the bound pipeline /must/ match the value set currently in the
+--     current render pass instance
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-09642# If the current
+--     render pass was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     with the
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT'
+--     flag, the bound graphics pipeline /must/ have been created with
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-09643# If the bound
+--     graphics pipeline was created with
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT',
+--     the current render pass /must/ have begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     with the
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT'
+--     flag
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-10677# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model>
+--     is enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tileShadingPerTileDraw tileShadingPerTileDraw>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-10772# If a shader object
+--     is bound to any graphics stage, /multiview/ functionality /must/ not
+--     be enabled in the current render pass
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-multiviewPerViewViewports-12262#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiviewPerViewViewports multiviewPerViewViewports>
+--     feature is enabled, then the index of the most significant bit in
+--     current render pass instance @viewMask@ /must/ be less than the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @viewportCount@
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-multiviewPerViewViewports-12263#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiviewPerViewViewports multiviewPerViewViewports>
+--     feature is enabled, then the index of the most significant bit in
+--     current render pass instance @viewMask@ /must/ be less than the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @scissorCount@
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-flags-11521# If current render
+--     pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@flags@
+--     which includes
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_FRAGMENT_REGION_BIT_EXT',
+--     and if
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-sampleshading sample shading>
+--     is enabled (explicitly or implicitly), then the minimum fraction for
+--     sample shading /must/ equal 0.0
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-11522# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and contains a custom resolve, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, the graphics pipeline bound /must/ have been
+--     created with a
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-11523# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and does not contain a custom resolve, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, the graphics pipeline bound /must/ not have
+--     been created with a
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-customResolve-11524# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, the graphics pipeline
+--     bound /must/ have been created with
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@
+--     as 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-customResolve-11525# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and contains a custom resolve, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not been recorded in the render pass instance, the graphics
+--     pipeline bound /must/ have been created with
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@
+--     as 'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-11861# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled and the current render pass instance was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and contains a custom resolve, the bound graphics pipeline /must/
+--     have been created with a
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@colorAttachmentCount@
+--     equal to
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-11862# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and the current render pass instance was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, 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 an @resolveImageView@ 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_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@
+--     used to create the bound graphics pipeline
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-11863# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and the current render pass instance was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, 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 an @resolveImageView@ equal to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have the
+--     corresponding element of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@
+--     used to create the bound pipeline equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-dynamicRenderingUnusedAttachments-11864#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled, the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, 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 an @resolveImageView@ 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_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@
+--     used to create the bound graphics pipeline, or the corresponding
+--     element of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@,
+--     if it exists, /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-11865# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@
+--     used to create the bound graphics pipeline /must/ be equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-11866# If current render
+--     pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@
+--     used to create the 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->resolveImageView@
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-dynamicRenderingUnusedAttachments-11867#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@
+--     used to create the bound graphics pipeline was not equal to the
+--     'Vulkan.Core10.Enums.Format.Format' used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@,
+--     the value of the format /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-11868# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@
+--     used to create the bound graphics pipeline /must/ be equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-11869# If current render
+--     pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@
+--     used to create the 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->resolveImageView@
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-dynamicRenderingUnusedAttachments-11870#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@
+--     used to create the bound graphics pipeline was not equal to the
+--     'Vulkan.Core10.Enums.Format.Format' used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@,
+--     the value of the format /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-colorAttachmentCount-11871# If
+--     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@ and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, then for each element
+--     of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
+--     array with a @resolveImageView@ not equal to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', the @resolveImageView@
+--     /must/ have been created with a sample count equal to the value of
+--     @rasterizationSamples@ for the bound graphics pipeline
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-pDepthAttachment-11872# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     @rasterizationSamples@ for the bound graphics pipeline /must/ be
+--     equal to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-pStencilAttachment-11873# If
+--     the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     @rasterizationSamples@ for the bound graphics pipeline /must/ be
+--     equal to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-customResolve-11529# If a
+--     shader object is bound to the fragment stage, the current render
+--     pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     a fragment density map attachment is active, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been called, then the fragment shader object bound /must/ have
+--     been created with
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@
+--     as 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-customResolve-11530# If a
+--     shader object is bound to the fragment stage, the current render
+--     pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and contains a custom resolve, a fragment density map attachment is
+--     active, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been called, then the fragment shader object bound
+--     /must/ have been created with
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@
+--     as 'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-flags-13361# If there are any
+--     shader objects bound that were created with @flags@ that includes
+--     the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     bit, then all bound shader objects /must/ have been created with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     bit
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-flags-13362# If there are any
+--     shader objects bound that were created with @flags@ that includes
+--     the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     bit, then the pipeline layout of the bound descriptor sets /must/
+--     have been created with
+--     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT'
+--     set
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-flags-13363# If there are any
+--     shader objects bound that were created with @flags@ that includes
+--     the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     bit, and any of the descriptor set layouts used to create the
+--     pipeline layout of the bound descriptor sets were created with any
+--     binding’s
+--     'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutBinding'::@stageFlags@
+--     set with
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT',
+--     then there /must/ be no binding with
+--     'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutBinding'::@stageFlags@
+--     set with
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-flags-13364# If there are any
+--     shader objects bound that were created with @flags@ that includes
+--     both the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     and
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
+--     bits, the pipeline layout of the bound descriptor sets /must/ have
+--     been created with
+--     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_NO_TASK_SHADER_BIT_KHR'
+--     set
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-flags-13365# If there are any
+--     shader objects bound that were created with @flags@ that includes
+--     both the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     and
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
+--     bits, there /must/ be no shader object bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--     stage
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-04007# All vertex input
+--     bindings accessed via vertex input variables declared in the vertex
+--     shader entry point’s interface /must/ have either valid or
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' buffers bound
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-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-vkCmdExecuteGeneratedCommandsNV-None-02721# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, and that pipeline was created without
+--     enabling
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     for @vertexInputs@, then 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-vkCmdExecuteGeneratedCommandsNV-format-10389# For each vertex
+--     attribute accessed by this command, if its
+--     'Vulkan.Core10.GraphicsPipeline.VertexInputAttributeDescription'::@format@
+--     or
+--     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@
+--     is a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-packed packed format>,
+--     and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-legacyVertexAttributes legacyVertexAttributes>
+--     feature is not enabled, the value of @attribAddress@, calculated as
+--     described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input-address-calculation Vertex Input Calculation>,
+--     /must/ be a multiple of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats size of the format>
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-format-10390# For each vertex
+--     attribute accessed by this command, if its
+--     'Vulkan.Core10.GraphicsPipeline.VertexInputAttributeDescription'::@format@
+--     or
+--     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@
+--     is not a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-packed packed format>,
+--     and either the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-legacyVertexAttributes legacyVertexAttributes>
+--     feature is not enabled or @format@ has 64-bit components, the value
+--     of @attribAddress@, calculated as described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input-address-calculation Vertex Input Calculation>,
+--     /must/ be a multiple of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats component size of the format>
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07842# If there is a
+--     shader object bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY'
+--     dynamic state enabled then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-dynamicPrimitiveTopologyUnrestricted-07500#
+--     If the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY'
+--     dynamic state enabled and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-dynamicPrimitiveTopologyUnrestricted dynamicPrimitiveTopologyUnrestricted>
+--     is 'Vulkan.Core10.FundamentalTypes.FALSE', then the
+--     @primitiveTopology@ parameter of
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
+--     /must/ be of the same
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-class topology class>
+--     as the pipeline
+--     'Vulkan.Core10.GraphicsPipeline.PipelineInputAssemblyStateCreateInfo'::@topology@
+--     state
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-primitiveTopology-10286# If a
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
+--     stage is bound, then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @primitiveTopology@ /must/ be
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST'
+--     prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-primitiveTopology-10747# If
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
+--     set @primitiveTopology@ to
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST'
+--     prior to this drawing command, then a
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
+--     stage /must/ be bound
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-primitiveTopology-10748# If
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
+--     set @primitiveTopology@ to
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_POINT_LIST'
+--     prior to this drawing command, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance5 maintenance5>
+--     feature is not enabled, both a
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     and
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
+--     stage are not bound, then the @Vertex@ @Execution@ @Model@ /must/
+--     have a @PointSize@ decorated variable that is statically written to
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-pStrides-04913# If the bound
+--     graphics pipeline was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE'
+--     dynamic state enabled, but without the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2'
+--     with a non-@NULL@ @pStrides@ parameter or
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.cmdBindVertexBuffers3KHR'
+--     with @setStride@ set to 'Vulkan.Core10.FundamentalTypes.TRUE' /must/
+--     have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this draw command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-13118# If the bound
+--     graphics pipeline was created without the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE'
+--     dynamic state enabled, without the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
+--     dynamic state enabled, and
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.cmdBindVertexBuffers3KHR'
+--     was called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this draw command, the value
+--     of @setStride@ in each of its @pBindInfos@ elements must have been
+--     'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-04914# If there is a
+--     shader object bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage or 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 and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this draw command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-Input-07939# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-vertexAttributeRobustness vertexAttributeRobustness>
+--     feature is not enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance9 maintenance9>
+--     feature is not enabled, and there is a shader object bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
+--     dynamic state enabled then all variables with the @Input@ storage
+--     class decorated with @Location@ in the @Vertex@ @Execution@ @Model@
+--     @OpEntryPoint@ /must/ contain a location in
+--     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@location@
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-Input-08734# If there is a
+--     shader object bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
+--     dynamic state enabled and either the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-legacyVertexAttributes legacyVertexAttributes>
+--     feature is not enabled or the SPIR-V Type associated with a given
+--     @Input@ variable of the corresponding @Location@ in the @Vertex@
+--     @Execution@ @Model@ @OpEntryPoint@ is 64-bit, then the numeric type
+--     associated with all @Input@ variables of the corresponding
+--     @Location@ in the @Vertex@ @Execution@ @Model@ @OpEntryPoint@ /must/
+--     be the same as
+--     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-format-08936# If there is a
+--     shader object bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
+--     dynamic state enabled and
+--     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@
+--     has a 64-bit component, then the scalar width associated with all
+--     @Input@ variables of the corresponding @Location@ in the @Vertex@
+--     @Execution@ @Model@ @OpEntryPoint@ /must/ be 64-bit
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-format-08937# If there is a
+--     shader object bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
+--     dynamic state enabled and the scalar width associated with a
+--     @Location@ decorated @Input@ variable in the @Vertex@ @Execution@
+--     @Model@ @OpEntryPoint@ is 64-bit, then the corresponding
+--     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@
+--     /must/ have a 64-bit component
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-09203# If there is a
+--     shader object bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
+--     dynamic state enabled and
+--     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT'::@format@
+--     has a 64-bit component, then all @Input@ variables at the
+--     corresponding @Location@ in the @Vertex@ @Execution@ @Model@
+--     @OpEntryPoint@ /must/ not use components that are not present in the
+--     format
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-04875# If there is a
+--     shader object bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
+--     stage or the bound graphics pipeline state was created with both a
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
+--     stage and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @primitiveTopology@ is
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST',
+--     then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPatchControlPointsEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-04879# If there is a
+--     shader object bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE'
+--     dynamic state enabled then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-09637# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitiveTopologyListRestart primitiveTopologyListRestart>
+--     feature is not enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-vertex-input-assembler-topology input assembly>
+--     is
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_POINT_LIST',
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_LINE_LIST',
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_TRIANGLE_LIST',
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY',
+--     or
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY',
+--     there is a shader object bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE'
+--     dynamic state enabled, then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnable'
+--     /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-10909# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitiveTopologyPatchListRestart primitiveTopologyPatchListRestart>
+--     feature is not enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-vertex-input-assembler-topology input assembly>
+--     is
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST',
+--     there is a shader object bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
+--     stage or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE'
+--     dynamic state enabled then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnable'
+--     /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-stage-06481# The bound
+--     graphics pipeline /must/ not have been created with the
+--     'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo'::@stage@
+--     member of any element of
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'::@pStages@
+--     set to
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08885# There /must/ be no
+--     shader object bound to either of the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--     stages
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-07619# If a shader object
+--     is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     stage or a graphics pipeline is bound which was created with both a
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     stage and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetTessellationDomainOriginEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-OpExecutionMode-12239# If a
+--     shader is bound to both the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
+--     and
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     stages, and if both stages contain an @OpExecutionMode@ instruction
+--     specifying the type of subdivision, they /must/ be the same
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-OpExecutionMode-12240# If a
+--     shader is bound to both the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
+--     and
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     stages, and if both stages contain an @OpExecutionMode@ instruction
+--     specifying the orientation of triangles, they /must/ be the same
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-OpExecutionMode-12241# If a
+--     shader is bound to both the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
+--     and
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     stages, and if both stages contain an @OpExecutionMode@ instruction
+--     specifying the segment spacing, they /must/ be the same
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-OpExecutionMode-12242# If a
+--     shader is bound to both the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
+--     and
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     stages, and if both stages contain an @OpExecutionMode@ instruction
+--     specifying the output patch size, they /must/ be the same
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-commandBuffer-02970#
+--     @commandBuffer@ /must/ not be a protected command buffer
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-isPreprocessed-02908# If
+--     @isPreprocessed@ is 'Vulkan.Core10.FundamentalTypes.TRUE' then
+--     'cmdPreprocessGeneratedCommandsNV' /must/ have already been executed
+--     on the device, using the same @pGeneratedCommandsInfo@ content as
+--     well as the content of the input buffers it references (all except
+--     'GeneratedCommandsInfoNV'::@preprocessBuffer@). Furthermore,
+--     @pGeneratedCommandsInfo@’s @indirectCommandsLayout@ /must/ have been
+--     created with the
+--     'INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV' bit set
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-pipeline-02909#
+--     'GeneratedCommandsInfoNV'::@pipeline@ /must/ match the current bound
+--     pipeline at 'GeneratedCommandsInfoNV'::@pipelineBindPoint@
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-02910# Transform feedback
+--     /must/ not be active
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-deviceGeneratedCommands-02911#
+--     The
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-deviceGeneratedCommandsNV ::deviceGeneratedCommands>
+--     feature /must/ be enabled
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-pGeneratedCommandsInfo-parameter#
+--     @pGeneratedCommandsInfo@ /must/ be a valid pointer to a valid
+--     'GeneratedCommandsInfoNV' structure
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-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-vkCmdExecuteGeneratedCommandsNV-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', or
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-renderpass# This command
+--     /must/ only be called inside of a render pass instance
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-suspended# This command /must/
+--     not be called between suspended render pass instances
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-videocoding# This command
+--     /must/ only be called outside of a video coding scope
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Inside                                                                                                                 | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | VK_QUEUE_GRAPHICS_BIT                                                                                                 | Indirection                                                                                                                            |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdExecuteGeneratedCommandsNV is affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_generated_commands VK_NV_device_generated_commands>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Handles.CommandBuffer', 'GeneratedCommandsInfoNV'
+cmdExecuteGeneratedCommandsNV :: forall io
+                               . (MonadIO io)
+                              => -- | @commandBuffer@ is the command buffer into which the command is
+                                 -- recorded.
+                                 CommandBuffer
+                              -> -- | @isPreprocessed@ represents whether the input data has already been
+                                 -- preprocessed on the device. If it is
+                                 -- 'Vulkan.Core10.FundamentalTypes.FALSE' this command will implicitly
+                                 -- trigger the preprocessing step, otherwise not.
+                                 ("isPreprocessed" ::: Bool)
+                              -> -- | @pGeneratedCommandsInfo@ is a pointer to a 'GeneratedCommandsInfoNV'
+                                 -- structure containing parameters affecting the generation of commands.
+                                 GeneratedCommandsInfoNV
+                              -> io ()
+cmdExecuteGeneratedCommandsNV commandBuffer
+                                isPreprocessed
+                                generatedCommandsInfo = liftIO . evalContT $ do
+  let vkCmdExecuteGeneratedCommandsNVPtr = pVkCmdExecuteGeneratedCommandsNV (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdExecuteGeneratedCommandsNVPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdExecuteGeneratedCommandsNV is null" Nothing Nothing
+  let vkCmdExecuteGeneratedCommandsNV' = mkVkCmdExecuteGeneratedCommandsNV vkCmdExecuteGeneratedCommandsNVPtr
+  pGeneratedCommandsInfo <- ContT $ withCStruct (generatedCommandsInfo)
+  lift $ traceAroundEvent "vkCmdExecuteGeneratedCommandsNV" (vkCmdExecuteGeneratedCommandsNV'
+                                                               (commandBufferHandle (commandBuffer))
+                                                               (boolToBool32 (isPreprocessed))
+                                                               pGeneratedCommandsInfo)
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdPreprocessGeneratedCommandsNV
+  :: FunPtr (Ptr CommandBuffer_T -> Ptr GeneratedCommandsInfoNV -> IO ()) -> Ptr CommandBuffer_T -> Ptr GeneratedCommandsInfoNV -> IO ()
+
+-- | vkCmdPreprocessGeneratedCommandsNV - Performs preprocessing for
+-- generated commands
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdPreprocessGeneratedCommandsNV-commandBuffer-02974#
+--     @commandBuffer@ /must/ not be a protected command buffer
+--
+-- -   #VUID-vkCmdPreprocessGeneratedCommandsNV-pGeneratedCommandsInfo-02927#
+--     @pGeneratedCommandsInfo->indirectCommandsLayout@ /must/ have been
+--     created with the
+--     'INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV' bit set
+--
+-- -   #VUID-vkCmdPreprocessGeneratedCommandsNV-deviceGeneratedCommands-02928#
+--     The
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-deviceGeneratedCommandsNV ::deviceGeneratedCommands>
+--     feature /must/ be enabled
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdPreprocessGeneratedCommandsNV-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdPreprocessGeneratedCommandsNV-pGeneratedCommandsInfo-parameter#
+--     @pGeneratedCommandsInfo@ /must/ be a valid pointer to a valid
+--     'GeneratedCommandsInfoNV' structure
+--
+-- -   #VUID-vkCmdPreprocessGeneratedCommandsNV-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-vkCmdPreprocessGeneratedCommandsNV-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', or
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
+--
+-- -   #VUID-vkCmdPreprocessGeneratedCommandsNV-renderpass# This command
+--     /must/ only be called outside of a render pass instance
+--
+-- -   #VUID-vkCmdPreprocessGeneratedCommandsNV-suspended# This command
+--     /must/ not be called between suspended render pass instances
+--
+-- -   #VUID-vkCmdPreprocessGeneratedCommandsNV-videocoding# This command
+--     /must/ only be called outside of a video coding scope
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | VK_QUEUE_GRAPHICS_BIT                                                                                                 |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdPreprocessGeneratedCommandsNV is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_generated_commands VK_NV_device_generated_commands>,
+-- 'Vulkan.Core10.Handles.CommandBuffer', 'GeneratedCommandsInfoNV'
+cmdPreprocessGeneratedCommandsNV :: forall io
+                                  . (MonadIO io)
+                                 => -- | @commandBuffer@ is the command buffer which does the preprocessing.
+                                    CommandBuffer
+                                 -> -- | @pGeneratedCommandsInfo@ is a pointer to a 'GeneratedCommandsInfoNV'
+                                    -- structure containing parameters affecting the preprocessing step.
+                                    GeneratedCommandsInfoNV
+                                 -> io ()
+cmdPreprocessGeneratedCommandsNV commandBuffer
+                                   generatedCommandsInfo = liftIO . evalContT $ do
+  let vkCmdPreprocessGeneratedCommandsNVPtr = pVkCmdPreprocessGeneratedCommandsNV (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdPreprocessGeneratedCommandsNVPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdPreprocessGeneratedCommandsNV is null" Nothing Nothing
+  let vkCmdPreprocessGeneratedCommandsNV' = mkVkCmdPreprocessGeneratedCommandsNV vkCmdPreprocessGeneratedCommandsNVPtr
+  pGeneratedCommandsInfo <- ContT $ withCStruct (generatedCommandsInfo)
+  lift $ traceAroundEvent "vkCmdPreprocessGeneratedCommandsNV" (vkCmdPreprocessGeneratedCommandsNV'
+                                                                  (commandBufferHandle (commandBuffer))
+                                                                  pGeneratedCommandsInfo)
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdBindPipelineShaderGroupNV
+  :: FunPtr (Ptr CommandBuffer_T -> PipelineBindPoint -> Pipeline -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> PipelineBindPoint -> Pipeline -> Word32 -> IO ()
+
+-- | vkCmdBindPipelineShaderGroupNV - Bind a pipeline object
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdBindPipelineShaderGroupNV-groupIndex-02893# @groupIndex@
+--     /must/ be @0@ or less than the effective
+--     'GraphicsPipelineShaderGroupsCreateInfoNV'::@groupCount@ including
+--     the referenced pipelines
+--
+-- -   #VUID-vkCmdBindPipelineShaderGroupNV-pipelineBindPoint-02894# The
+--     @pipelineBindPoint@ /must/ be
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
+--
+-- -   #VUID-vkCmdBindPipelineShaderGroupNV-groupIndex-02895# The same
+--     restrictions as
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBindPipeline' apply as if
+--     the bound pipeline was created only with the Shader Group from the
+--     @groupIndex@ information
+--
+-- -   #VUID-vkCmdBindPipelineShaderGroupNV-deviceGeneratedCommands-02896#
+--     The
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-deviceGeneratedCommandsNV ::deviceGeneratedCommands>
+--     feature /must/ be enabled
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdBindPipelineShaderGroupNV-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdBindPipelineShaderGroupNV-pipelineBindPoint-parameter#
+--     @pipelineBindPoint@ /must/ be a valid
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint' value
+--
+-- -   #VUID-vkCmdBindPipelineShaderGroupNV-pipeline-parameter# @pipeline@
+--     /must/ be a valid 'Vulkan.Core10.Handles.Pipeline' handle
+--
+-- -   #VUID-vkCmdBindPipelineShaderGroupNV-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-vkCmdBindPipelineShaderGroupNV-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', or
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
+--
+-- -   #VUID-vkCmdBindPipelineShaderGroupNV-videocoding# This command
+--     /must/ only be called outside of a video coding scope
+--
+-- -   #VUID-vkCmdBindPipelineShaderGroupNV-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#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | State                                                                                                                                  |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | VK_QUEUE_GRAPHICS_BIT                                                                                                 |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdBindPipelineShaderGroupNV is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_generated_commands VK_NV_device_generated_commands>,
+-- 'Vulkan.Core10.Handles.CommandBuffer', 'Vulkan.Core10.Handles.Pipeline',
+-- 'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint'
+cmdBindPipelineShaderGroupNV :: 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 the bind point to which the pipeline will be bound.
+                                PipelineBindPoint
+                             -> -- | @pipeline@ is the pipeline to be bound.
+                                Pipeline
+                             -> -- | @groupIndex@ is the shader group to be bound.
+                                ("groupIndex" ::: Word32)
+                             -> io ()
+cmdBindPipelineShaderGroupNV commandBuffer
+                               pipelineBindPoint
+                               pipeline
+                               groupIndex = liftIO $ do
+  let vkCmdBindPipelineShaderGroupNVPtr = pVkCmdBindPipelineShaderGroupNV (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  unless (vkCmdBindPipelineShaderGroupNVPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdBindPipelineShaderGroupNV is null" Nothing Nothing
+  let vkCmdBindPipelineShaderGroupNV' = mkVkCmdBindPipelineShaderGroupNV vkCmdBindPipelineShaderGroupNVPtr
+  traceAroundEvent "vkCmdBindPipelineShaderGroupNV" (vkCmdBindPipelineShaderGroupNV'
+                                                       (commandBufferHandle (commandBuffer))
+                                                       (pipelineBindPoint)
+                                                       (pipeline)
+                                                       (groupIndex))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetGeneratedCommandsMemoryRequirementsNV
+  :: FunPtr (Ptr Device_T -> Ptr GeneratedCommandsMemoryRequirementsInfoNV -> Ptr (SomeStruct MemoryRequirements2) -> IO ()) -> Ptr Device_T -> Ptr GeneratedCommandsMemoryRequirementsInfoNV -> Ptr (SomeStruct MemoryRequirements2) -> IO ()
+
+-- | vkGetGeneratedCommandsMemoryRequirementsNV - Retrieve the buffer
+-- allocation requirements for generated commands
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkGetGeneratedCommandsMemoryRequirementsNV-deviceGeneratedCommands-02906#
+--     The
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-deviceGeneratedCommandsNV ::deviceGeneratedCommands>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkGetGeneratedCommandsMemoryRequirementsNV-pInfo-09074# If
+--     @pInfo->pipelineBindPoint@ is of type
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_COMPUTE',
+--     then the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-deviceGeneratedCompute ::deviceGeneratedCompute>
+--     feature /must/ be enabled
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkGetGeneratedCommandsMemoryRequirementsNV-device-parameter#
+--     @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkGetGeneratedCommandsMemoryRequirementsNV-pInfo-parameter#
+--     @pInfo@ /must/ be a valid pointer to a valid
+--     'GeneratedCommandsMemoryRequirementsInfoNV' structure
+--
+-- -   #VUID-vkGetGeneratedCommandsMemoryRequirementsNV-pMemoryRequirements-parameter#
+--     @pMemoryRequirements@ /must/ be a valid pointer to a
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.MemoryRequirements2'
+--     structure
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_generated_commands VK_NV_device_generated_commands>,
+-- 'Vulkan.Core10.Handles.Device',
+-- 'GeneratedCommandsMemoryRequirementsInfoNV',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.MemoryRequirements2'
+getGeneratedCommandsMemoryRequirementsNV :: forall a io
+                                          . ( Extendss MemoryRequirements2 a
+                                            , PokeChain a
+                                            , PeekChain a
+                                            , MonadIO io )
+                                         => -- | @device@ is the logical device that owns the buffer.
+                                            Device
+                                         -> -- | @pInfo@ is a pointer to a 'GeneratedCommandsMemoryRequirementsInfoNV'
+                                            -- structure containing parameters required for the memory requirements
+                                            -- query.
+                                            GeneratedCommandsMemoryRequirementsInfoNV
+                                         -> io (MemoryRequirements2 a)
+getGeneratedCommandsMemoryRequirementsNV device info = liftIO . evalContT $ do
+  let vkGetGeneratedCommandsMemoryRequirementsNVPtr = pVkGetGeneratedCommandsMemoryRequirementsNV (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkGetGeneratedCommandsMemoryRequirementsNVPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetGeneratedCommandsMemoryRequirementsNV is null" Nothing Nothing
+  let vkGetGeneratedCommandsMemoryRequirementsNV' = mkVkGetGeneratedCommandsMemoryRequirementsNV vkGetGeneratedCommandsMemoryRequirementsNVPtr
+  pInfo <- ContT $ withCStruct (info)
+  pPMemoryRequirements <- ContT (withZeroCStruct @(MemoryRequirements2 _))
+  lift $ traceAroundEvent "vkGetGeneratedCommandsMemoryRequirementsNV" (vkGetGeneratedCommandsMemoryRequirementsNV'
+                                                                          (deviceHandle (device))
+                                                                          pInfo
+                                                                          (forgetExtensions (pPMemoryRequirements)))
+  pMemoryRequirements <- lift $ peekCStruct @(MemoryRequirements2 _) pPMemoryRequirements
+  pure $ (pMemoryRequirements)
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCreateIndirectCommandsLayoutNV
+  :: FunPtr (Ptr Device_T -> Ptr IndirectCommandsLayoutCreateInfoNV -> Ptr AllocationCallbacks -> Ptr IndirectCommandsLayoutNV -> IO Result) -> Ptr Device_T -> Ptr IndirectCommandsLayoutCreateInfoNV -> Ptr AllocationCallbacks -> Ptr IndirectCommandsLayoutNV -> IO Result
+
+-- | vkCreateIndirectCommandsLayoutNV - Create an indirect command layout
+-- object
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCreateIndirectCommandsLayoutNV-deviceGeneratedCommands-02929#
+--     The
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-deviceGeneratedCommandsNV ::deviceGeneratedCommands>
+--     feature /must/ be enabled
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCreateIndirectCommandsLayoutNV-device-parameter# @device@
+--     /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkCreateIndirectCommandsLayoutNV-pCreateInfo-parameter#
+--     @pCreateInfo@ /must/ be a valid pointer to a valid
+--     'IndirectCommandsLayoutCreateInfoNV' structure
+--
+-- -   #VUID-vkCreateIndirectCommandsLayoutNV-pAllocator-parameter# If
+--     @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid pointer
+--     to a valid 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'
+--     structure
+--
+-- -   #VUID-vkCreateIndirectCommandsLayoutNV-pIndirectCommandsLayout-parameter#
+--     @pIndirectCommandsLayout@ /must/ be a valid pointer to a
+--     'Vulkan.Extensions.Handles.IndirectCommandsLayoutNV' handle
+--
+-- -   #VUID-vkCreateIndirectCommandsLayoutNV-device-queuecount# The device
+--     /must/ have been created with at least @1@ queue
+--
+-- == 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_DEVICE_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_generated_commands VK_NV_device_generated_commands>,
+-- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',
+-- 'Vulkan.Core10.Handles.Device', 'IndirectCommandsLayoutCreateInfoNV',
+-- 'Vulkan.Extensions.Handles.IndirectCommandsLayoutNV'
+createIndirectCommandsLayoutNV :: forall io
+                                . (MonadIO io)
+                               => -- | @device@ is the logical device that creates the indirect command layout.
+                                  Device
+                               -> -- | @pCreateInfo@ is a pointer to a 'IndirectCommandsLayoutCreateInfoNV'
+                                  -- structure containing parameters affecting creation of the indirect
+                                  -- command layout.
+                                  IndirectCommandsLayoutCreateInfoNV
+                               -> -- | @pAllocator@ controls host memory allocation as described in the
+                                  -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
+                                  -- chapter.
+                                  ("allocator" ::: Maybe AllocationCallbacks)
+                               -> io (IndirectCommandsLayoutNV)
+createIndirectCommandsLayoutNV device
+                                 createInfo
+                                 allocator = liftIO . evalContT $ do
+  let vkCreateIndirectCommandsLayoutNVPtr = pVkCreateIndirectCommandsLayoutNV (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCreateIndirectCommandsLayoutNVPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCreateIndirectCommandsLayoutNV is null" Nothing Nothing
+  let vkCreateIndirectCommandsLayoutNV' = mkVkCreateIndirectCommandsLayoutNV vkCreateIndirectCommandsLayoutNVPtr
+  pCreateInfo <- ContT $ withCStruct (createInfo)
+  pAllocator <- case (allocator) of
+    Nothing -> pure nullPtr
+    Just j -> ContT $ withCStruct (j)
+  pPIndirectCommandsLayout <- ContT $ bracket (callocBytes @IndirectCommandsLayoutNV 8) free
+  r <- lift $ traceAroundEvent "vkCreateIndirectCommandsLayoutNV" (vkCreateIndirectCommandsLayoutNV'
+                                                                     (deviceHandle (device))
+                                                                     pCreateInfo
+                                                                     pAllocator
+                                                                     (pPIndirectCommandsLayout))
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+  pIndirectCommandsLayout <- lift $ peek @IndirectCommandsLayoutNV pPIndirectCommandsLayout
+  pure $ (pIndirectCommandsLayout)
+
+-- | A convenience wrapper to make a compatible pair of calls to
+-- 'createIndirectCommandsLayoutNV' and 'destroyIndirectCommandsLayoutNV'
+--
+-- To ensure that 'destroyIndirectCommandsLayoutNV' 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.
+--
+withIndirectCommandsLayoutNV :: forall io r . MonadIO io => Device -> IndirectCommandsLayoutCreateInfoNV -> Maybe AllocationCallbacks -> (io IndirectCommandsLayoutNV -> (IndirectCommandsLayoutNV -> io ()) -> r) -> r
+withIndirectCommandsLayoutNV device pCreateInfo pAllocator b =
+  b (createIndirectCommandsLayoutNV device pCreateInfo pAllocator)
+    (\(o0) -> destroyIndirectCommandsLayoutNV device o0 pAllocator)
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkDestroyIndirectCommandsLayoutNV
+  :: FunPtr (Ptr Device_T -> IndirectCommandsLayoutNV -> Ptr AllocationCallbacks -> IO ()) -> Ptr Device_T -> IndirectCommandsLayoutNV -> Ptr AllocationCallbacks -> IO ()
+
+-- | vkDestroyIndirectCommandsLayoutNV - Destroy an indirect commands layout
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkDestroyIndirectCommandsLayoutNV-indirectCommandsLayout-02938#
+--     All submitted commands that refer to @indirectCommandsLayout@ /must/
+--     have completed execution
+--
+-- -   #VUID-vkDestroyIndirectCommandsLayoutNV-indirectCommandsLayout-02939#
+--     If 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' were
+--     provided when @indirectCommandsLayout@ was created, a compatible set
+--     of callbacks /must/ be provided here
+--
+-- -   #VUID-vkDestroyIndirectCommandsLayoutNV-indirectCommandsLayout-02940#
+--     If no 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' were
+--     provided when @indirectCommandsLayout@ was created, @pAllocator@
+--     /must/ be @NULL@
+--
+-- -   #VUID-vkDestroyIndirectCommandsLayoutNV-deviceGeneratedCommands-02941#
+--     The
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-deviceGeneratedCommandsNV ::deviceGeneratedCommands>
+--     feature /must/ be enabled
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkDestroyIndirectCommandsLayoutNV-device-parameter# @device@
+--     /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkDestroyIndirectCommandsLayoutNV-indirectCommandsLayout-parameter#
+--     If @indirectCommandsLayout@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', @indirectCommandsLayout@
+--     /must/ be a valid
+--     'Vulkan.Extensions.Handles.IndirectCommandsLayoutNV' handle
+--
+-- -   #VUID-vkDestroyIndirectCommandsLayoutNV-pAllocator-parameter# If
+--     @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid pointer
+--     to a valid 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'
+--     structure
+--
+-- -   #VUID-vkDestroyIndirectCommandsLayoutNV-indirectCommandsLayout-parent#
+--     If @indirectCommandsLayout@ is a valid handle, it /must/ have been
+--     created, allocated, or retrieved from @device@
+--
+-- == Host Synchronization
+--
+-- -   Host access to @indirectCommandsLayout@ /must/ be externally
+--     synchronized
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_generated_commands VK_NV_device_generated_commands>,
+-- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',
+-- 'Vulkan.Core10.Handles.Device',
+-- 'Vulkan.Extensions.Handles.IndirectCommandsLayoutNV'
+destroyIndirectCommandsLayoutNV :: forall io
+                                 . (MonadIO io)
+                                => -- | @device@ is the logical device that destroys the layout.
+                                   Device
+                                -> -- | @indirectCommandsLayout@ is the layout to destroy.
+                                   IndirectCommandsLayoutNV
+                                -> -- | @pAllocator@ controls host memory allocation as described in the
+                                   -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
+                                   -- chapter.
+                                   ("allocator" ::: Maybe AllocationCallbacks)
+                                -> io ()
+destroyIndirectCommandsLayoutNV device
+                                  indirectCommandsLayout
+                                  allocator = liftIO . evalContT $ do
+  let vkDestroyIndirectCommandsLayoutNVPtr = pVkDestroyIndirectCommandsLayoutNV (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkDestroyIndirectCommandsLayoutNVPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkDestroyIndirectCommandsLayoutNV is null" Nothing Nothing
+  let vkDestroyIndirectCommandsLayoutNV' = mkVkDestroyIndirectCommandsLayoutNV vkDestroyIndirectCommandsLayoutNVPtr
+  pAllocator <- case (allocator) of
+    Nothing -> pure nullPtr
+    Just j -> ContT $ withCStruct (j)
+  lift $ traceAroundEvent "vkDestroyIndirectCommandsLayoutNV" (vkDestroyIndirectCommandsLayoutNV'
+                                                                 (deviceHandle (device))
+                                                                 (indirectCommandsLayout)
+                                                                 pAllocator)
+  pure $ ()
+
+
+-- No documentation found for TopLevel "VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV"
+pattern PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_EXT
+
+
+-- No documentation found for TopLevel "VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV"
+pattern ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = ACCESS_COMMAND_PREPROCESS_READ_BIT_EXT
+
+
+-- No documentation found for TopLevel "VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV"
+pattern ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = ACCESS_COMMAND_PREPROCESS_WRITE_BIT_EXT
+
+
+-- | VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV - Structure describing
+-- the device-generated commands features that can be supported by an
+-- implementation
+--
+-- = Members
+--
+-- This structure describes the following feature:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceDeviceGeneratedCommandsFeaturesNV' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceDeviceGeneratedCommandsFeaturesNV', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_generated_commands VK_NV_device_generated_commands>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceDeviceGeneratedCommandsFeaturesNV = PhysicalDeviceDeviceGeneratedCommandsFeaturesNV
+  { -- | #features-deviceGeneratedCommandsNV# @deviceGeneratedCommands@ indicates
+    -- whether the implementation supports functionality to generate commands
+    -- on the device. See
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#device-generated-commands Device-Generated Commands>.
+    deviceGeneratedCommands :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceDeviceGeneratedCommandsFeaturesNV)
+#endif
+deriving instance Show PhysicalDeviceDeviceGeneratedCommandsFeaturesNV
+
+instance ToCStruct PhysicalDeviceDeviceGeneratedCommandsFeaturesNV where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceDeviceGeneratedCommandsFeaturesNV{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (deviceGeneratedCommands))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceDeviceGeneratedCommandsFeaturesNV where
+  peekCStruct p = do
+    deviceGeneratedCommands <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDeviceDeviceGeneratedCommandsFeaturesNV
+             (bool32ToBool deviceGeneratedCommands)
+
+instance Storable PhysicalDeviceDeviceGeneratedCommandsFeaturesNV where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceDeviceGeneratedCommandsFeaturesNV where
+  zero = PhysicalDeviceDeviceGeneratedCommandsFeaturesNV
+           zero
+
+
+-- | VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV - Structure
+-- describing push descriptor limits that can be supported by an
+-- implementation
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceDeviceGeneratedCommandsPropertiesNV' structure is
+-- included in the @pNext@ chain of the
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+-- structure passed to
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceProperties2',
+-- it is filled in with each corresponding implementation-dependent
+-- property.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_generated_commands VK_NV_device_generated_commands>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceDeviceGeneratedCommandsPropertiesNV = PhysicalDeviceDeviceGeneratedCommandsPropertiesNV
+  { -- | @maxGraphicsShaderGroupCount@ is the maximum number of shader groups in
+    -- 'GraphicsPipelineShaderGroupsCreateInfoNV'.
+    maxGraphicsShaderGroupCount :: Word32
+  , -- | @maxIndirectSequenceCount@ is the maximum number of sequences in
+    -- 'GeneratedCommandsInfoNV' and in
+    -- 'GeneratedCommandsMemoryRequirementsInfoNV'.
+    maxIndirectSequenceCount :: Word32
+  , -- | @maxIndirectCommandsTokenCount@ is the maximum number of tokens in
+    -- 'IndirectCommandsLayoutCreateInfoNV'.
+    maxIndirectCommandsTokenCount :: Word32
+  , -- | @maxIndirectCommandsStreamCount@ is the maximum number of streams in
+    -- 'IndirectCommandsLayoutCreateInfoNV'.
+    maxIndirectCommandsStreamCount :: Word32
+  , -- | @maxIndirectCommandsTokenOffset@ is the maximum offset in
+    -- 'IndirectCommandsLayoutTokenNV'.
+    maxIndirectCommandsTokenOffset :: Word32
+  , -- | @maxIndirectCommandsStreamStride@ is the maximum stream stride in
+    -- 'IndirectCommandsLayoutCreateInfoNV'.
+    maxIndirectCommandsStreamStride :: Word32
+  , -- | @minSequencesCountBufferOffsetAlignment@ is the minimum alignment for
+    -- memory addresses which /can/ be used in 'GeneratedCommandsInfoNV'.
+    minSequencesCountBufferOffsetAlignment :: Word32
+  , -- | @minSequencesIndexBufferOffsetAlignment@ is the minimum alignment for
+    -- memory addresses which /can/ be used in 'GeneratedCommandsInfoNV'.
+    minSequencesIndexBufferOffsetAlignment :: Word32
+  , -- | @minIndirectCommandsBufferOffsetAlignment@ is the minimum alignment for
+    -- memory addresses used in 'IndirectCommandsStreamNV', and as preprocess
+    -- buffer in 'GeneratedCommandsInfoNV'.
+    minIndirectCommandsBufferOffsetAlignment :: Word32
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceDeviceGeneratedCommandsPropertiesNV)
+#endif
+deriving instance Show PhysicalDeviceDeviceGeneratedCommandsPropertiesNV
+
+instance ToCStruct PhysicalDeviceDeviceGeneratedCommandsPropertiesNV where
+  withCStruct x f = allocaBytes 56 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceDeviceGeneratedCommandsPropertiesNV{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (maxGraphicsShaderGroupCount)
+    poke ((p `plusPtr` 20 :: Ptr Word32)) (maxIndirectSequenceCount)
+    poke ((p `plusPtr` 24 :: Ptr Word32)) (maxIndirectCommandsTokenCount)
+    poke ((p `plusPtr` 28 :: Ptr Word32)) (maxIndirectCommandsStreamCount)
+    poke ((p `plusPtr` 32 :: Ptr Word32)) (maxIndirectCommandsTokenOffset)
+    poke ((p `plusPtr` 36 :: Ptr Word32)) (maxIndirectCommandsStreamStride)
+    poke ((p `plusPtr` 40 :: Ptr Word32)) (minSequencesCountBufferOffsetAlignment)
+    poke ((p `plusPtr` 44 :: Ptr Word32)) (minSequencesIndexBufferOffsetAlignment)
+    poke ((p `plusPtr` 48 :: Ptr Word32)) (minIndirectCommandsBufferOffsetAlignment)
+    f
+  cStructSize = 56
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV)
+    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)
+    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)
+    f
+
+instance FromCStruct PhysicalDeviceDeviceGeneratedCommandsPropertiesNV where
+  peekCStruct p = do
+    maxGraphicsShaderGroupCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    maxIndirectSequenceCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
+    maxIndirectCommandsTokenCount <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))
+    maxIndirectCommandsStreamCount <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))
+    maxIndirectCommandsTokenOffset <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))
+    maxIndirectCommandsStreamStride <- peek @Word32 ((p `plusPtr` 36 :: Ptr Word32))
+    minSequencesCountBufferOffsetAlignment <- peek @Word32 ((p `plusPtr` 40 :: Ptr Word32))
+    minSequencesIndexBufferOffsetAlignment <- peek @Word32 ((p `plusPtr` 44 :: Ptr Word32))
+    minIndirectCommandsBufferOffsetAlignment <- peek @Word32 ((p `plusPtr` 48 :: Ptr Word32))
+    pure $ PhysicalDeviceDeviceGeneratedCommandsPropertiesNV
+             maxGraphicsShaderGroupCount
+             maxIndirectSequenceCount
+             maxIndirectCommandsTokenCount
+             maxIndirectCommandsStreamCount
+             maxIndirectCommandsTokenOffset
+             maxIndirectCommandsStreamStride
+             minSequencesCountBufferOffsetAlignment
+             minSequencesIndexBufferOffsetAlignment
+             minIndirectCommandsBufferOffsetAlignment
+
+instance Storable PhysicalDeviceDeviceGeneratedCommandsPropertiesNV where
+  sizeOf ~_ = 56
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceDeviceGeneratedCommandsPropertiesNV where
+  zero = PhysicalDeviceDeviceGeneratedCommandsPropertiesNV
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkGraphicsShaderGroupCreateInfoNV - Structure specifying override
+-- parameters for each shader group
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkGraphicsShaderGroupCreateInfoNV-stageCount-02888# For
+--     @stageCount@, the same restrictions as in
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'::@stageCount@
+--     apply
+--
+-- -   #VUID-VkGraphicsShaderGroupCreateInfoNV-pStages-02889# For
+--     @pStages@, the same restrictions as in
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'::@pStages@
+--     apply
+--
+-- -   #VUID-VkGraphicsShaderGroupCreateInfoNV-pVertexInputState-02890# For
+--     @pVertexInputState@, the same restrictions as in
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'::@pVertexInputState@
+--     apply
+--
+-- -   #VUID-VkGraphicsShaderGroupCreateInfoNV-pTessellationState-02891#
+--     For @pTessellationState@, the same restrictions as in
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'::@pTessellationState@
+--     apply
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkGraphicsShaderGroupCreateInfoNV-sType-sType# @sType@ /must/
+--     be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV'
+--
+-- -   #VUID-VkGraphicsShaderGroupCreateInfoNV-pNext-pNext# @pNext@ /must/
+--     be @NULL@
+--
+-- -   #VUID-VkGraphicsShaderGroupCreateInfoNV-pStages-parameter# @pStages@
+--     /must/ be a valid pointer to an array of @stageCount@ valid
+--     'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo'
+--     structures
+--
+-- -   #VUID-VkGraphicsShaderGroupCreateInfoNV-stageCount-arraylength#
+--     @stageCount@ /must/ be greater than @0@
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_generated_commands VK_NV_device_generated_commands>,
+-- 'GraphicsPipelineShaderGroupsCreateInfoNV',
+-- 'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo',
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineTessellationStateCreateInfo',
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineVertexInputStateCreateInfo',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data GraphicsShaderGroupCreateInfoNV = GraphicsShaderGroupCreateInfoNV
+  { -- | @pStages@ is a pointer to an array
+    -- 'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo' structures
+    -- specifying the set of the shader stages to be included in this shader
+    -- group.
+    stages :: Vector (SomeStruct PipelineShaderStageCreateInfo)
+  , -- | @pVertexInputState@ is a pointer to a
+    -- 'Vulkan.Core10.GraphicsPipeline.PipelineVertexInputStateCreateInfo'
+    -- structure.
+    vertexInputState :: Maybe (SomeStruct PipelineVertexInputStateCreateInfo)
+  , -- | @pTessellationState@ is a pointer to a
+    -- 'Vulkan.Core10.GraphicsPipeline.PipelineTessellationStateCreateInfo'
+    -- structure, and is ignored if the shader group does not include a
+    -- tessellation control shader stage and tessellation evaluation shader
+    -- stage.
+    tessellationState :: Maybe (SomeStruct PipelineTessellationStateCreateInfo)
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (GraphicsShaderGroupCreateInfoNV)
+#endif
+deriving instance Show GraphicsShaderGroupCreateInfoNV
+
+instance ToCStruct GraphicsShaderGroupCreateInfoNV where
+  withCStruct x f = allocaBytes 48 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p GraphicsShaderGroupCreateInfoNV{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (stages)) :: Word32))
+    pPStages' <- ContT $ allocaBytes @(PipelineShaderStageCreateInfo _) ((Data.Vector.length (stages)) * 48)
+    Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPStages' `plusPtr` (48 * (i)) :: Ptr (PipelineShaderStageCreateInfo _))) (e) . ($ ())) (stages)
+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr (PipelineShaderStageCreateInfo _)))) (pPStages')
+    pVertexInputState'' <- case (vertexInputState) of
+      Nothing -> pure nullPtr
+      Just j -> ContT @_ @_ @(Ptr (PipelineVertexInputStateCreateInfo '[])) $ \cont -> withSomeCStruct @PipelineVertexInputStateCreateInfo (j) (cont . castPtr)
+    lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr (PipelineVertexInputStateCreateInfo _)))) pVertexInputState''
+    pTessellationState'' <- case (tessellationState) of
+      Nothing -> pure nullPtr
+      Just j -> ContT @_ @_ @(Ptr (PipelineTessellationStateCreateInfo '[])) $ \cont -> withSomeCStruct @PipelineTessellationStateCreateInfo (j) (cont . castPtr)
+    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr (PipelineTessellationStateCreateInfo _)))) pTessellationState''
+    lift $ f
+  cStructSize = 48
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    f
+
+instance FromCStruct GraphicsShaderGroupCreateInfoNV where
+  peekCStruct p = do
+    stageCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    pStages <- peek @(Ptr (PipelineShaderStageCreateInfo _)) ((p `plusPtr` 24 :: Ptr (Ptr (PipelineShaderStageCreateInfo _))))
+    pStages' <- generateM (fromIntegral stageCount) (\i -> peekSomeCStruct (forgetExtensions ((pStages `advancePtrBytes` (48 * (i)) :: Ptr (PipelineShaderStageCreateInfo _)))))
+    pVertexInputState <- peek @(Ptr (PipelineVertexInputStateCreateInfo _)) ((p `plusPtr` 32 :: Ptr (Ptr (PipelineVertexInputStateCreateInfo _))))
+    pVertexInputState' <- maybePeek (\j -> peekSomeCStruct (forgetExtensions (j))) pVertexInputState
+    pTessellationState <- peek @(Ptr (PipelineTessellationStateCreateInfo _)) ((p `plusPtr` 40 :: Ptr (Ptr (PipelineTessellationStateCreateInfo _))))
+    pTessellationState' <- maybePeek (\j -> peekSomeCStruct (forgetExtensions (j))) pTessellationState
+    pure $ GraphicsShaderGroupCreateInfoNV
+             pStages' pVertexInputState' pTessellationState'
+
+instance Zero GraphicsShaderGroupCreateInfoNV where
+  zero = GraphicsShaderGroupCreateInfoNV
+           mempty
+           Nothing
+           Nothing
+
+
+-- | VkGraphicsPipelineShaderGroupsCreateInfoNV - Structure specifying
+-- parameters of a newly created multi shader group pipeline
+--
+-- = Description
+--
+-- When referencing shader groups by index, groups defined in the
+-- referenced pipelines are treated as if they were defined as additional
+-- entries in @pGroups@. They are appended in the order they appear in the
+-- @pPipelines@ array and in the @pGroups@ array when those pipelines were
+-- defined.
+--
+-- The application /must/ maintain the lifetime of all such referenced
+-- pipelines based on the pipelines that make use of them.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-groupCount-02879#
+--     @groupCount@ /must/ be at least @1@ and as maximum
+--     'PhysicalDeviceDeviceGeneratedCommandsPropertiesNV'::@maxGraphicsShaderGroupCount@
+--
+-- -   #VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-groupCount-02880#
+--     The sum of @groupCount@ including those groups added from referenced
+--     @pPipelines@ /must/ also be as maximum
+--     'PhysicalDeviceDeviceGeneratedCommandsPropertiesNV'::@maxGraphicsShaderGroupCount@
+--
+-- -   #VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-pGroups-02881# The
+--     state of the first element of @pGroups@ /must/ match its equivalent
+--     within the parent’s
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'
+--
+-- -   #VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-pGroups-02882# Each
+--     element of @pGroups@ /must/ in combination with the rest of the
+--     pipeline state yield a valid state configuration
+--
+-- -   #VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-pGroups-02884# All
+--     elements of @pGroups@ /must/ use the same shader stage combinations
+--     unless any mesh shader stage is used, then either combination of
+--     task and mesh or just mesh shader is valid
+--
+-- -   #VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-pGroups-02885# Mesh
+--     and regular primitive shading stages cannot be mixed across
+--     @pGroups@
+--
+-- -   #VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-pPipelines-02886#
+--     Each element of @pPipelines@ /must/ have been created with identical
+--     state to the pipeline currently created except the state that can be
+--     overridden by 'GraphicsShaderGroupCreateInfoNV'
+--
+-- -   #VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-deviceGeneratedCommands-02887#
+--     The
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-deviceGeneratedCommandsNV ::deviceGeneratedCommands>
+--     feature /must/ be enabled
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-sType-sType#
+--     @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV'
+--
+-- -   #VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-pGroups-parameter#
+--     If @groupCount@ is not @0@, @pGroups@ /must/ be a valid pointer to
+--     an array of @groupCount@ valid 'GraphicsShaderGroupCreateInfoNV'
+--     structures
+--
+-- -   #VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-pPipelines-parameter#
+--     If @pipelineCount@ is not @0@, @pPipelines@ /must/ be a valid
+--     pointer to an array of @pipelineCount@ valid
+--     'Vulkan.Core10.Handles.Pipeline' handles
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_generated_commands VK_NV_device_generated_commands>,
+-- 'GraphicsShaderGroupCreateInfoNV', 'Vulkan.Core10.Handles.Pipeline',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data GraphicsPipelineShaderGroupsCreateInfoNV = GraphicsPipelineShaderGroupsCreateInfoNV
+  { -- | @pGroups@ is a pointer to an array of 'GraphicsShaderGroupCreateInfoNV'
+    -- structures specifying which state of the original
+    -- 'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo' each shader
+    -- group overrides.
+    groups :: Vector GraphicsShaderGroupCreateInfoNV
+  , -- | @pPipelines@ is a pointer to an array of graphics
+    -- 'Vulkan.Core10.Handles.Pipeline' structures which are referenced within
+    -- the created pipeline, including all their shader groups.
+    pipelines :: Vector Pipeline
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (GraphicsPipelineShaderGroupsCreateInfoNV)
+#endif
+deriving instance Show GraphicsPipelineShaderGroupsCreateInfoNV
+
+instance ToCStruct GraphicsPipelineShaderGroupsCreateInfoNV where
+  withCStruct x f = allocaBytes 48 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p GraphicsPipelineShaderGroupsCreateInfoNV{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (groups)) :: Word32))
+    pPGroups' <- ContT $ allocaBytes @GraphicsShaderGroupCreateInfoNV ((Data.Vector.length (groups)) * 48)
+    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPGroups' `plusPtr` (48 * (i)) :: Ptr GraphicsShaderGroupCreateInfoNV) (e) . ($ ())) (groups)
+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr GraphicsShaderGroupCreateInfoNV))) (pPGroups')
+    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (pipelines)) :: Word32))
+    pPPipelines' <- ContT $ allocaBytes @Pipeline ((Data.Vector.length (pipelines)) * 8)
+    lift $ Data.Vector.imapM_ (\i e -> poke (pPPipelines' `plusPtr` (8 * (i)) :: Ptr Pipeline) (e)) (pipelines)
+    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr Pipeline))) (pPPipelines')
+    lift $ f
+  cStructSize = 48
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    f
+
+instance FromCStruct GraphicsPipelineShaderGroupsCreateInfoNV where
+  peekCStruct p = do
+    groupCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    pGroups <- peek @(Ptr GraphicsShaderGroupCreateInfoNV) ((p `plusPtr` 24 :: Ptr (Ptr GraphicsShaderGroupCreateInfoNV)))
+    pGroups' <- generateM (fromIntegral groupCount) (\i -> peekCStruct @GraphicsShaderGroupCreateInfoNV ((pGroups `advancePtrBytes` (48 * (i)) :: Ptr GraphicsShaderGroupCreateInfoNV)))
+    pipelineCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))
+    pPipelines <- peek @(Ptr Pipeline) ((p `plusPtr` 40 :: Ptr (Ptr Pipeline)))
+    pPipelines' <- generateM (fromIntegral pipelineCount) (\i -> peek @Pipeline ((pPipelines `advancePtrBytes` (8 * (i)) :: Ptr Pipeline)))
+    pure $ GraphicsPipelineShaderGroupsCreateInfoNV
+             pGroups' pPipelines'
+
+instance Zero GraphicsPipelineShaderGroupsCreateInfoNV where
+  zero = GraphicsPipelineShaderGroupsCreateInfoNV
+           mempty
+           mempty
+
+
+-- | VkBindShaderGroupIndirectCommandNV - Structure specifying input data for
+-- a single shader group command token
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkBindShaderGroupIndirectCommandNV-None-02944# The current
+--     bound graphics pipeline, as well as the pipelines it may reference,
+--     /must/ have been created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV'
+--
+-- -   #VUID-VkBindShaderGroupIndirectCommandNV-index-02945# The @index@
+--     /must/ be within range of the accessible shader groups of the
+--     current bound graphics pipeline. See 'cmdBindPipelineShaderGroupNV'
+--     for further details
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_generated_commands VK_NV_device_generated_commands>
+data BindShaderGroupIndirectCommandNV = BindShaderGroupIndirectCommandNV
+  { -- | @groupIndex@ specifies which shader group of the current bound graphics
+    -- pipeline is used.
+    groupIndex :: Word32 }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (BindShaderGroupIndirectCommandNV)
+#endif
+deriving instance Show BindShaderGroupIndirectCommandNV
+
+instance ToCStruct BindShaderGroupIndirectCommandNV where
+  withCStruct x f = allocaBytes 4 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p BindShaderGroupIndirectCommandNV{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr Word32)) (groupIndex)
+    f
+  cStructSize = 4
+  cStructAlignment = 4
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct BindShaderGroupIndirectCommandNV where
+  peekCStruct p = do
+    groupIndex <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))
+    pure $ BindShaderGroupIndirectCommandNV
+             groupIndex
+
+instance Storable BindShaderGroupIndirectCommandNV where
+  sizeOf ~_ = 4
+  alignment ~_ = 4
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero BindShaderGroupIndirectCommandNV where
+  zero = BindShaderGroupIndirectCommandNV
+           zero
+
+
+-- | VkBindIndexBufferIndirectCommandNV - Structure specifying input data for
+-- a single index buffer command token
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkBindIndexBufferIndirectCommandNV-None-02946# The buffer’s
+--     usage flag from which the address was acquired /must/ have the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDEX_BUFFER_BIT'
+--     bit set
+--
+-- -   #VUID-VkBindIndexBufferIndirectCommandNV-bufferAddress-02947# The
+--     @bufferAddress@ /must/ be aligned to the @indexType@ used
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkBindIndexBufferIndirectCommandNV-bufferAddress-parameter#
+--     @bufferAddress@ /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' value
+--
+-- -   #VUID-VkBindIndexBufferIndirectCommandNV-indexType-parameter#
+--     @indexType@ /must/ be a valid
+--     'Vulkan.Core10.Enums.IndexType.IndexType' value
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_generated_commands VK_NV_device_generated_commands>,
+-- 'Vulkan.Core10.FundamentalTypes.DeviceAddress',
+-- 'Vulkan.Core10.Enums.IndexType.IndexType'
+data BindIndexBufferIndirectCommandNV = BindIndexBufferIndirectCommandNV
+  { -- | @bufferAddress@ specifies a physical address of the
+    -- 'Vulkan.Core10.Handles.Buffer' used as index buffer.
+    bufferAddress :: DeviceAddress
+  , -- | @size@ is the byte size range which is available for this operation from
+    -- the provided address.
+    size :: Word32
+  , -- | @indexType@ is a 'Vulkan.Core10.Enums.IndexType.IndexType' value
+    -- specifying how indices are treated. Instead of the Vulkan enum values, a
+    -- custom @uint32_t@ value /can/ be mapped to
+    -- 'Vulkan.Core10.Enums.IndexType.IndexType' by specifying the
+    -- 'IndirectCommandsLayoutTokenNV'::@pIndexTypes@ and
+    -- 'IndirectCommandsLayoutTokenNV'::@pIndexTypeValues@ arrays.
+    indexType :: IndexType
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (BindIndexBufferIndirectCommandNV)
+#endif
+deriving instance Show BindIndexBufferIndirectCommandNV
+
+instance ToCStruct BindIndexBufferIndirectCommandNV where
+  withCStruct x f = allocaBytes 16 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p BindIndexBufferIndirectCommandNV{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr DeviceAddress)) (bufferAddress)
+    poke ((p `plusPtr` 8 :: Ptr Word32)) (size)
+    poke ((p `plusPtr` 12 :: Ptr IndexType)) (indexType)
+    f
+  cStructSize = 16
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr DeviceAddress)) (zero)
+    poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 12 :: Ptr IndexType)) (zero)
+    f
+
+instance FromCStruct BindIndexBufferIndirectCommandNV where
+  peekCStruct p = do
+    bufferAddress <- peek @DeviceAddress ((p `plusPtr` 0 :: Ptr DeviceAddress))
+    size <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))
+    indexType <- peek @IndexType ((p `plusPtr` 12 :: Ptr IndexType))
+    pure $ BindIndexBufferIndirectCommandNV
+             bufferAddress size indexType
+
+instance Storable BindIndexBufferIndirectCommandNV where
+  sizeOf ~_ = 16
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero BindIndexBufferIndirectCommandNV where
+  zero = BindIndexBufferIndirectCommandNV
+           zero
+           zero
+           zero
+
+
+-- | VkBindVertexBufferIndirectCommandNV - Structure specifying input data
+-- for a single vertex buffer command token
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkBindVertexBufferIndirectCommandNV-None-02949# The buffer’s
+--     usage flag from which the address was acquired /must/ have the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_VERTEX_BUFFER_BIT'
+--     bit set
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkBindVertexBufferIndirectCommandNV-bufferAddress-parameter#
+--     @bufferAddress@ /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' value
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_generated_commands VK_NV_device_generated_commands>,
+-- 'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+data BindVertexBufferIndirectCommandNV = BindVertexBufferIndirectCommandNV
+  { -- | @bufferAddress@ specifies a physical address of the
+    -- 'Vulkan.Core10.Handles.Buffer' used as vertex input binding.
+    bufferAddress :: DeviceAddress
+  , -- | @size@ is the byte size range which is available for this operation from
+    -- the provided address.
+    size :: Word32
+  , -- | @stride@ is the byte size stride for this vertex input binding as in
+    -- 'Vulkan.Core10.GraphicsPipeline.VertexInputBindingDescription'::@stride@.
+    -- It is only used if
+    -- 'IndirectCommandsLayoutTokenNV'::@vertexDynamicStride@ was set,
+    -- otherwise the stride is inherited from the current bound graphics
+    -- pipeline.
+    stride :: Word32
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (BindVertexBufferIndirectCommandNV)
+#endif
+deriving instance Show BindVertexBufferIndirectCommandNV
+
+instance ToCStruct BindVertexBufferIndirectCommandNV where
+  withCStruct x f = allocaBytes 16 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p BindVertexBufferIndirectCommandNV{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr DeviceAddress)) (bufferAddress)
+    poke ((p `plusPtr` 8 :: Ptr Word32)) (size)
+    poke ((p `plusPtr` 12 :: Ptr Word32)) (stride)
+    f
+  cStructSize = 16
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr DeviceAddress)) (zero)
+    poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 12 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct BindVertexBufferIndirectCommandNV where
+  peekCStruct p = do
+    bufferAddress <- peek @DeviceAddress ((p `plusPtr` 0 :: Ptr DeviceAddress))
+    size <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))
+    stride <- peek @Word32 ((p `plusPtr` 12 :: Ptr Word32))
+    pure $ BindVertexBufferIndirectCommandNV
+             bufferAddress size stride
+
+instance Storable BindVertexBufferIndirectCommandNV where
+  sizeOf ~_ = 16
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero BindVertexBufferIndirectCommandNV where
+  zero = BindVertexBufferIndirectCommandNV
+           zero
+           zero
+           zero
+
+
+-- | VkSetStateFlagsIndirectCommandNV - Structure specifying input data for a
+-- single state flag command token
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_generated_commands VK_NV_device_generated_commands>
+data SetStateFlagsIndirectCommandNV = SetStateFlagsIndirectCommandNV
+  { -- | @data@ encodes packed state that this command alters.
+    --
+    -- -   Bit @0@: If set represents
+    --     'Vulkan.Core10.Enums.FrontFace.FRONT_FACE_CLOCKWISE', otherwise
+    --     'Vulkan.Core10.Enums.FrontFace.FRONT_FACE_COUNTER_CLOCKWISE'
+    data' :: Word32 }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (SetStateFlagsIndirectCommandNV)
+#endif
+deriving instance Show SetStateFlagsIndirectCommandNV
+
+instance ToCStruct SetStateFlagsIndirectCommandNV where
+  withCStruct x f = allocaBytes 4 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p SetStateFlagsIndirectCommandNV{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr Word32)) (data')
+    f
+  cStructSize = 4
+  cStructAlignment = 4
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct SetStateFlagsIndirectCommandNV where
+  peekCStruct p = do
+    data' <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))
+    pure $ SetStateFlagsIndirectCommandNV
+             data'
+
+instance Storable SetStateFlagsIndirectCommandNV where
+  sizeOf ~_ = 4
+  alignment ~_ = 4
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero SetStateFlagsIndirectCommandNV where
+  zero = SetStateFlagsIndirectCommandNV
+           zero
+
+
+-- | VkIndirectCommandsStreamNV - Structure specifying input streams for
+-- generated command tokens
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkIndirectCommandsStreamNV-buffer-02942# The @buffer@’s usage
+--     flag /must/ have the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'
+--     bit set
+--
+-- -   #VUID-VkIndirectCommandsStreamNV-offset-02943# The @offset@ /must/
+--     be aligned to
+--     'PhysicalDeviceDeviceGeneratedCommandsPropertiesNV'::@minIndirectCommandsBufferOffsetAlignment@
+--
+-- -   #VUID-VkIndirectCommandsStreamNV-buffer-02975# If @buffer@ is
+--     non-sparse then it /must/ be bound completely and contiguously to a
+--     single 'Vulkan.Core10.Handles.DeviceMemory' object
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkIndirectCommandsStreamNV-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_NV_device_generated_commands VK_NV_device_generated_commands>,
+-- 'Vulkan.Core10.Handles.Buffer',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize', 'GeneratedCommandsInfoNV'
+data IndirectCommandsStreamNV = IndirectCommandsStreamNV
+  { -- | @buffer@ specifies the 'Vulkan.Core10.Handles.Buffer' storing the
+    -- functional arguments for each sequence. These arguments /can/ be written
+    -- by the device.
+    buffer :: Buffer
+  , -- | @offset@ specified an offset into @buffer@ where the arguments start.
+    offset :: DeviceSize
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (IndirectCommandsStreamNV)
+#endif
+deriving instance Show IndirectCommandsStreamNV
+
+instance ToCStruct IndirectCommandsStreamNV where
+  withCStruct x f = allocaBytes 16 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p IndirectCommandsStreamNV{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr Buffer)) (buffer)
+    poke ((p `plusPtr` 8 :: Ptr DeviceSize)) (offset)
+    f
+  cStructSize = 16
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr Buffer)) (zero)
+    poke ((p `plusPtr` 8 :: Ptr DeviceSize)) (zero)
+    f
+
+instance FromCStruct IndirectCommandsStreamNV where
+  peekCStruct p = do
+    buffer <- peek @Buffer ((p `plusPtr` 0 :: Ptr Buffer))
+    offset <- peek @DeviceSize ((p `plusPtr` 8 :: Ptr DeviceSize))
+    pure $ IndirectCommandsStreamNV
+             buffer offset
+
+instance Storable IndirectCommandsStreamNV where
+  sizeOf ~_ = 16
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero IndirectCommandsStreamNV where
+  zero = IndirectCommandsStreamNV
+           zero
+           zero
+
+
+-- | VkIndirectCommandsLayoutTokenNV - Struct specifying the details of an
+-- indirect command layout token
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkIndirectCommandsLayoutTokenNV-stream-02951# @stream@ /must/
+--     be smaller than 'IndirectCommandsLayoutCreateInfoNV'::@streamCount@
+--
+-- -   #VUID-VkIndirectCommandsLayoutTokenNV-offset-02952# @offset@ /must/
+--     be less than or equal to
+--     'PhysicalDeviceDeviceGeneratedCommandsPropertiesNV'::@maxIndirectCommandsTokenOffset@
+--
+-- -   #VUID-VkIndirectCommandsLayoutTokenNV-offset-06888# @offset@ /must/
+--     be aligned to the scalar alignment of @tokenType@ or
+--     @minIndirectCommandsBufferOffsetAlignment@, whichever is lower
+--
+-- -   #VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02976# If
+--     @tokenType@ is 'INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV',
+--     @vertexBindingUnit@ /must/ stay within device supported limits for
+--     the appropriate commands
+--
+-- -   #VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02977# If
+--     @tokenType@ is 'INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV',
+--     @pushconstantPipelineLayout@ /must/ be valid
+--
+-- -   #VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02978# If
+--     @tokenType@ is 'INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV',
+--     @pushconstantOffset@ /must/ be a multiple of @4@
+--
+-- -   #VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02979# If
+--     @tokenType@ is 'INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV',
+--     @pushconstantSize@ /must/ be a multiple of @4@
+--
+-- -   #VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02980# If
+--     @tokenType@ is 'INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV',
+--     @pushconstantOffset@ /must/ be less than
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxPushConstantsSize@
+--
+-- -   #VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02981# If
+--     @tokenType@ is 'INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV',
+--     @pushconstantSize@ /must/ be less than or equal to
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxPushConstantsSize@
+--     minus @pushconstantOffset@
+--
+-- -   #VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02982# If
+--     @tokenType@ is 'INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV', for
+--     each byte in the range specified by @pushconstantOffset@ and
+--     @pushconstantSize@ and for each shader stage in
+--     @pushconstantShaderStageFlags@, there /must/ be a push constant
+--     range in @pushconstantPipelineLayout@ that includes that byte and
+--     that stage
+--
+-- -   #VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02983# If
+--     @tokenType@ is 'INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV', for
+--     each byte in the range specified by @pushconstantOffset@ and
+--     @pushconstantSize@ and for each push constant range that overlaps
+--     that byte, @pushconstantShaderStageFlags@ /must/ include all stages
+--     in that push constant range’s
+--     'Vulkan.Core10.PipelineLayout.PushConstantRange'::@stageFlags@
+--
+-- -   #VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02984# If
+--     @tokenType@ is 'INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV',
+--     @indirectStateFlags@ /must/ not be @0@
+--
+-- -   #VUID-VkIndirectCommandsLayoutTokenNV-tokenType-11334# If
+--     @tokenType@ is 'INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_DATA_NV',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.IndirectCommandsLayoutPushDataTokenNV'::@pushDataSize@
+--     /must/ be greater than @0@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkIndirectCommandsLayoutTokenNV-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV'
+--
+-- -   #VUID-VkIndirectCommandsLayoutTokenNV-pNext-pNext# @pNext@ /must/ be
+--     @NULL@ or a pointer to a valid instance of
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.IndirectCommandsLayoutPushDataTokenNV'
+--
+-- -   #VUID-VkIndirectCommandsLayoutTokenNV-sType-unique# The @sType@
+--     value of each structure in the @pNext@ chain /must/ be unique
+--
+-- -   #VUID-VkIndirectCommandsLayoutTokenNV-tokenType-parameter#
+--     @tokenType@ /must/ be a valid 'IndirectCommandsTokenTypeNV' value
+--
+-- -   #VUID-VkIndirectCommandsLayoutTokenNV-pushconstantPipelineLayout-parameter#
+--     If @pushconstantPipelineLayout@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE',
+--     @pushconstantPipelineLayout@ /must/ be a valid
+--     'Vulkan.Core10.Handles.PipelineLayout' handle
+--
+-- -   #VUID-VkIndirectCommandsLayoutTokenNV-pushconstantShaderStageFlags-parameter#
+--     @pushconstantShaderStageFlags@ /must/ be a valid combination of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits' values
+--
+-- -   #VUID-VkIndirectCommandsLayoutTokenNV-indirectStateFlags-parameter#
+--     @indirectStateFlags@ /must/ be a valid combination of
+--     'IndirectStateFlagBitsNV' values
+--
+-- -   #VUID-VkIndirectCommandsLayoutTokenNV-pIndexTypes-parameter# If
+--     @indexTypeCount@ is not @0@, @pIndexTypes@ /must/ be a valid pointer
+--     to an array of @indexTypeCount@ valid
+--     'Vulkan.Core10.Enums.IndexType.IndexType' values
+--
+-- -   #VUID-VkIndirectCommandsLayoutTokenNV-pIndexTypeValues-parameter# If
+--     @indexTypeCount@ is not @0@, @pIndexTypeValues@ /must/ be a valid
+--     pointer to an array of @indexTypeCount@ @uint32_t@ values
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_generated_commands VK_NV_device_generated_commands>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.IndexType.IndexType',
+-- 'IndirectCommandsLayoutCreateInfoNV', 'IndirectCommandsTokenTypeNV',
+-- 'IndirectStateFlagsNV', 'Vulkan.Core10.Handles.PipelineLayout',
+-- 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlags',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data IndirectCommandsLayoutTokenNV (es :: [Type]) = IndirectCommandsLayoutTokenNV
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
+    next :: Chain es
+  , -- | @tokenType@ is a 'IndirectCommandsTokenTypeNV' specifying the token
+    -- command type.
+    tokenType :: IndirectCommandsTokenTypeNV
+  , -- | @stream@ is the index of the input stream containing the token argument
+    -- data.
+    stream :: Word32
+  , -- | @offset@ is a relative starting offset within the input stream memory
+    -- for the token argument data.
+    offset :: Word32
+  , -- | @vertexBindingUnit@ is used for the vertex buffer binding command.
+    vertexBindingUnit :: Word32
+  , -- | @vertexDynamicStride@ sets if the vertex buffer stride is provided by
+    -- the binding command rather than the current bound graphics pipeline
+    -- state.
+    vertexDynamicStride :: Bool
+  , -- | @pushconstantPipelineLayout@ is the
+    -- 'Vulkan.Core10.Handles.PipelineLayout' used for the push constant
+    -- command.
+    pushconstantPipelineLayout :: PipelineLayout
+  , -- | @pushconstantShaderStageFlags@ are the shader stage flags used for the
+    -- push constant command.
+    pushconstantShaderStageFlags :: ShaderStageFlags
+  , -- | @pushconstantOffset@ is the offset used for the push constant command.
+    pushconstantOffset :: Word32
+  , -- | @pushconstantSize@ is the size used for the push constant command.
+    pushconstantSize :: Word32
+  , -- | @indirectStateFlags@ is a 'IndirectStateFlagsNV' bitfield indicating the
+    -- active states for the state flag command.
+    indirectStateFlags :: IndirectStateFlagsNV
+  , -- | @pIndexTypes@ is the used 'Vulkan.Core10.Enums.IndexType.IndexType' for
+    -- the corresponding @uint32_t@ value entry in @pIndexTypeValues@.
+    indexTypes :: Vector IndexType
+  , -- No documentation found for Nested "VkIndirectCommandsLayoutTokenNV" "pIndexTypeValues"
+    indexTypeValues :: Vector Word32
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (IndirectCommandsLayoutTokenNV (es :: [Type]))
+#endif
+deriving instance Show (Chain es) => Show (IndirectCommandsLayoutTokenNV es)
+
+instance Extensible IndirectCommandsLayoutTokenNV where
+  extensibleTypeName = "IndirectCommandsLayoutTokenNV"
+  setNext IndirectCommandsLayoutTokenNV{..} next' = IndirectCommandsLayoutTokenNV{next = next', ..}
+  getNext IndirectCommandsLayoutTokenNV{..} = next
+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends IndirectCommandsLayoutTokenNV e => b) -> Maybe b
+  extends _ f
+    | Just Refl <- eqT @e @IndirectCommandsLayoutPushDataTokenNV = Just f
+    | otherwise = Nothing
+
+instance ( Extendss IndirectCommandsLayoutTokenNV es
+         , PokeChain es ) => ToCStruct (IndirectCommandsLayoutTokenNV es) where
+  withCStruct x f = allocaBytes 88 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p IndirectCommandsLayoutTokenNV{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV)
+    pNext'' <- fmap castPtr . ContT $ withChain (next)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
+    lift $ poke ((p `plusPtr` 16 :: Ptr IndirectCommandsTokenTypeNV)) (tokenType)
+    lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) (stream)
+    lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) (offset)
+    lift $ poke ((p `plusPtr` 28 :: Ptr Word32)) (vertexBindingUnit)
+    lift $ poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (vertexDynamicStride))
+    lift $ poke ((p `plusPtr` 40 :: Ptr PipelineLayout)) (pushconstantPipelineLayout)
+    lift $ poke ((p `plusPtr` 48 :: Ptr ShaderStageFlags)) (pushconstantShaderStageFlags)
+    lift $ poke ((p `plusPtr` 52 :: Ptr Word32)) (pushconstantOffset)
+    lift $ poke ((p `plusPtr` 56 :: Ptr Word32)) (pushconstantSize)
+    lift $ poke ((p `plusPtr` 60 :: Ptr IndirectStateFlagsNV)) (indirectStateFlags)
+    let pIndexTypesLength = Data.Vector.length $ (indexTypes)
+    lift $ unless ((Data.Vector.length $ (indexTypeValues)) == pIndexTypesLength) $
+      throwIO $ IOError Nothing InvalidArgument "" "pIndexTypeValues and pIndexTypes must have the same length" Nothing Nothing
+    lift $ poke ((p `plusPtr` 64 :: Ptr Word32)) ((fromIntegral pIndexTypesLength :: Word32))
+    pPIndexTypes' <- ContT $ allocaBytes @IndexType ((Data.Vector.length (indexTypes)) * 4)
+    lift $ Data.Vector.imapM_ (\i e -> poke (pPIndexTypes' `plusPtr` (4 * (i)) :: Ptr IndexType) (e)) (indexTypes)
+    lift $ poke ((p `plusPtr` 72 :: Ptr (Ptr IndexType))) (pPIndexTypes')
+    pPIndexTypeValues' <- ContT $ allocaBytes @Word32 ((Data.Vector.length (indexTypeValues)) * 4)
+    lift $ Data.Vector.imapM_ (\i e -> poke (pPIndexTypeValues' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (indexTypeValues)
+    lift $ poke ((p `plusPtr` 80 :: Ptr (Ptr Word32))) (pPIndexTypeValues')
+    lift $ f
+  cStructSize = 88
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV)
+    pNext' <- fmap castPtr . ContT $ withZeroChain @es
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
+    lift $ poke ((p `plusPtr` 16 :: Ptr IndirectCommandsTokenTypeNV)) (zero)
+    lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)
+    lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)
+    lift $ poke ((p `plusPtr` 28 :: Ptr Word32)) (zero)
+    lift $ poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (zero))
+    lift $ poke ((p `plusPtr` 52 :: Ptr Word32)) (zero)
+    lift $ poke ((p `plusPtr` 56 :: Ptr Word32)) (zero)
+    lift $ f
+
+instance ( Extendss IndirectCommandsLayoutTokenNV es
+         , PeekChain es ) => FromCStruct (IndirectCommandsLayoutTokenNV es) where
+  peekCStruct p = do
+    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
+    next <- peekChain (castPtr pNext)
+    tokenType <- peek @IndirectCommandsTokenTypeNV ((p `plusPtr` 16 :: Ptr IndirectCommandsTokenTypeNV))
+    stream <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
+    offset <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))
+    vertexBindingUnit <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))
+    vertexDynamicStride <- peek @Bool32 ((p `plusPtr` 32 :: Ptr Bool32))
+    pushconstantPipelineLayout <- peek @PipelineLayout ((p `plusPtr` 40 :: Ptr PipelineLayout))
+    pushconstantShaderStageFlags <- peek @ShaderStageFlags ((p `plusPtr` 48 :: Ptr ShaderStageFlags))
+    pushconstantOffset <- peek @Word32 ((p `plusPtr` 52 :: Ptr Word32))
+    pushconstantSize <- peek @Word32 ((p `plusPtr` 56 :: Ptr Word32))
+    indirectStateFlags <- peek @IndirectStateFlagsNV ((p `plusPtr` 60 :: Ptr IndirectStateFlagsNV))
+    indexTypeCount <- peek @Word32 ((p `plusPtr` 64 :: Ptr Word32))
+    pIndexTypes <- peek @(Ptr IndexType) ((p `plusPtr` 72 :: Ptr (Ptr IndexType)))
+    pIndexTypes' <- generateM (fromIntegral indexTypeCount) (\i -> peek @IndexType ((pIndexTypes `advancePtrBytes` (4 * (i)) :: Ptr IndexType)))
+    pIndexTypeValues <- peek @(Ptr Word32) ((p `plusPtr` 80 :: Ptr (Ptr Word32)))
+    pIndexTypeValues' <- generateM (fromIntegral indexTypeCount) (\i -> peek @Word32 ((pIndexTypeValues `advancePtrBytes` (4 * (i)) :: Ptr Word32)))
+    pure $ IndirectCommandsLayoutTokenNV
+             next
+             tokenType
+             stream
+             offset
+             vertexBindingUnit
+             (bool32ToBool vertexDynamicStride)
+             pushconstantPipelineLayout
+             pushconstantShaderStageFlags
+             pushconstantOffset
+             pushconstantSize
+             indirectStateFlags
+             pIndexTypes'
+             pIndexTypeValues'
+
+instance es ~ '[] => Zero (IndirectCommandsLayoutTokenNV es) where
+  zero = IndirectCommandsLayoutTokenNV
+           ()
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           mempty
+           mempty
+
+
+-- | VkIndirectCommandsLayoutCreateInfoNV - Structure specifying the
+-- parameters of a newly created indirect commands layout object
+--
+-- = Description
+--
+-- The following code illustrates some of the flags:
+--
+-- > void cmdProcessAllSequences(cmd, pipeline, indirectCommandsLayout, pIndirectCommandsTokens, sequencesCount, indexbuffer, indexbufferOffset)
+-- > {
+-- >   for (s = 0; s < sequencesCount; s++)
+-- >   {
+-- >     sUsed = s;
+-- >
+-- >     if (indirectCommandsLayout.flags & VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV) {
+-- >       sUsed = indexbuffer.load_uint32( sUsed * sizeof(uint32_t) + indexbufferOffset);
+-- >     }
+-- >
+-- >     if (indirectCommandsLayout.flags & VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV) {
+-- >       sUsed = incoherent_implementation_dependent_permutation[ sUsed ];
+-- >     }
+-- >
+-- >     cmdProcessSequence( cmd, pipeline, indirectCommandsLayout, pIndirectCommandsTokens, sUsed );
+-- >   }
+-- > }
+--
+-- When tokens are consumed, an offset is computed based on token offset
+-- and stream stride. The resulting offset is required to be aligned. The
+-- alignment for a specific token is equal to the scalar alignment of the
+-- data type as defined in
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-alignment-requirements Alignment Requirements>,
+-- or
+-- 'PhysicalDeviceDeviceGeneratedCommandsPropertiesNV'::@minIndirectCommandsBufferOffsetAlignment@,
+-- whichever is lower.
+--
+-- A @minIndirectCommandsBufferOffsetAlignment@ of 4 allows
+-- 'Vulkan.Core10.FundamentalTypes.DeviceAddress' to be packed as @uvec2@
+-- with scalar layout instead of @uint64_t@ with 8 byte alignment. This
+-- enables direct compatibility with D3D12 command signature layouts.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkIndirectCommandsLayoutCreateInfoNV-pipelineBindPoint-02930#
+--     The @pipelineBindPoint@ /must/ be
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
+--     or
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_COMPUTE'
+--
+-- -   #VUID-VkIndirectCommandsLayoutCreateInfoNV-tokenCount-02931#
+--     @tokenCount@ /must/ be greater than @0@ and less than or equal to
+--     'PhysicalDeviceDeviceGeneratedCommandsPropertiesNV'::@maxIndirectCommandsTokenCount@
+--
+-- -   #VUID-VkIndirectCommandsLayoutCreateInfoNV-pTokens-02932# If
+--     @pTokens@ contains an entry of
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV' it /must/ be the
+--     first element of the array and there /must/ be only a single element
+--     of such token type
+--
+-- -   #VUID-VkIndirectCommandsLayoutCreateInfoNV-pTokens-09585# If
+--     @pTokens@ contains an entry of
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NV' it /must/ be the first
+--     element of the array and there /must/ be only a single element of
+--     such token type
+--
+-- -   #VUID-VkIndirectCommandsLayoutCreateInfoNV-pTokens-02933# If
+--     @pTokens@ contains an entry of
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV' there /must/ be only a
+--     single element of such token type
+--
+-- -   #VUID-VkIndirectCommandsLayoutCreateInfoNV-pTokens-02934# All state
+--     tokens in @pTokens@ /must/ occur before any action command tokens
+--     ('INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV',
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV',
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV',
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV' ,
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NV' )
+--
+-- -   #VUID-VkIndirectCommandsLayoutCreateInfoNV-pTokens-02935# The
+--     content of @pTokens@ /must/ include one single action command token
+--     that is compatible with the @pipelineBindPoint@
+--
+-- -   #VUID-VkIndirectCommandsLayoutCreateInfoNV-streamCount-02936#
+--     @streamCount@ /must/ be greater than @0@ and less or equal to
+--     'PhysicalDeviceDeviceGeneratedCommandsPropertiesNV'::@maxIndirectCommandsStreamCount@
+--
+-- -   #VUID-VkIndirectCommandsLayoutCreateInfoNV-pStreamStrides-02937#
+--     each element of @pStreamStrides@ /must/ be greater than @0@ and less
+--     than or equal to
+--     'PhysicalDeviceDeviceGeneratedCommandsPropertiesNV'::@maxIndirectCommandsStreamStride@.
+--     Furthermore the alignment of each token input /must/ be ensured
+--
+-- -   #VUID-VkIndirectCommandsLayoutCreateInfoNV-pipelineBindPoint-09088#
+--     If @pipelineBindPoint@ is
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_COMPUTE'
+--     then the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-deviceGeneratedCompute ::deviceGeneratedCompute>
+--     feature /must/ be enabled
+--
+-- -   #VUID-VkIndirectCommandsLayoutCreateInfoNV-pipelineBindPoint-09089#
+--     If @pipelineBindPoint@ is
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_COMPUTE'
+--     then the state tokens in @pTokens@ /must/ only include
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NV',
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NV',
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_DATA_NV', or
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV'
+--
+-- -   #VUID-VkIndirectCommandsLayoutCreateInfoNV-pipelineBindPoint-09090#
+--     If @pipelineBindPoint@ is
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_COMPUTE'
+--     and @pTokens@ includes 'INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NV',
+--     then the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-deviceGeneratedComputePipelines ::deviceGeneratedComputePipelines>
+--     feature /must/ be enabled
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkIndirectCommandsLayoutCreateInfoNV-sType-sType# @sType@
+--     /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV'
+--
+-- -   #VUID-VkIndirectCommandsLayoutCreateInfoNV-pNext-pNext# @pNext@
+--     /must/ be @NULL@
+--
+-- -   #VUID-VkIndirectCommandsLayoutCreateInfoNV-flags-parameter# @flags@
+--     /must/ be a valid combination of
+--     'IndirectCommandsLayoutUsageFlagBitsNV' values
+--
+-- -   #VUID-VkIndirectCommandsLayoutCreateInfoNV-pipelineBindPoint-parameter#
+--     @pipelineBindPoint@ /must/ be a valid
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint' value
+--
+-- -   #VUID-VkIndirectCommandsLayoutCreateInfoNV-pTokens-parameter#
+--     @pTokens@ /must/ be a valid pointer to an array of @tokenCount@
+--     valid 'IndirectCommandsLayoutTokenNV' structures
+--
+-- -   #VUID-VkIndirectCommandsLayoutCreateInfoNV-pStreamStrides-parameter#
+--     @pStreamStrides@ /must/ be a valid pointer to an array of
+--     @streamCount@ @uint32_t@ values
+--
+-- -   #VUID-VkIndirectCommandsLayoutCreateInfoNV-tokenCount-arraylength#
+--     @tokenCount@ /must/ be greater than @0@
+--
+-- -   #VUID-VkIndirectCommandsLayoutCreateInfoNV-streamCount-arraylength#
+--     @streamCount@ /must/ be greater than @0@
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_generated_commands VK_NV_device_generated_commands>,
+-- 'IndirectCommandsLayoutTokenNV', 'IndirectCommandsLayoutUsageFlagsNV',
+-- 'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'createIndirectCommandsLayoutNV'
+data IndirectCommandsLayoutCreateInfoNV = IndirectCommandsLayoutCreateInfoNV
+  { -- | @flags@ is a bitmask of 'IndirectCommandsLayoutUsageFlagBitsNV'
+    -- specifying usage hints of this layout.
+    flags :: IndirectCommandsLayoutUsageFlagsNV
+  , -- | @pipelineBindPoint@ is the
+    -- 'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint' that this
+    -- layout targets.
+    pipelineBindPoint :: PipelineBindPoint
+  , -- | @pTokens@ is an array describing each command token in detail. See
+    -- 'IndirectCommandsTokenTypeNV' and 'IndirectCommandsLayoutTokenNV' below
+    -- for details.
+    tokens :: Vector (SomeStruct IndirectCommandsLayoutTokenNV)
+  , -- | @pStreamStrides@ is an array defining the byte stride for each input
+    -- stream.
+    streamStrides :: Vector Word32
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (IndirectCommandsLayoutCreateInfoNV)
+#endif
+deriving instance Show IndirectCommandsLayoutCreateInfoNV
+
+instance ToCStruct IndirectCommandsLayoutCreateInfoNV where
+  withCStruct x f = allocaBytes 56 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p IndirectCommandsLayoutCreateInfoNV{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr IndirectCommandsLayoutUsageFlagsNV)) (flags)
+    lift $ poke ((p `plusPtr` 20 :: Ptr PipelineBindPoint)) (pipelineBindPoint)
+    lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (tokens)) :: Word32))
+    pPTokens' <- ContT $ allocaBytes @(IndirectCommandsLayoutTokenNV _) ((Data.Vector.length (tokens)) * 88)
+    Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPTokens' `plusPtr` (88 * (i)) :: Ptr (IndirectCommandsLayoutTokenNV _))) (e) . ($ ())) (tokens)
+    lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr (IndirectCommandsLayoutTokenNV _)))) (pPTokens')
+    lift $ poke ((p `plusPtr` 40 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (streamStrides)) :: Word32))
+    pPStreamStrides' <- ContT $ allocaBytes @Word32 ((Data.Vector.length (streamStrides)) * 4)
+    lift $ Data.Vector.imapM_ (\i e -> poke (pPStreamStrides' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (streamStrides)
+    lift $ poke ((p `plusPtr` 48 :: Ptr (Ptr Word32))) (pPStreamStrides')
+    lift $ f
+  cStructSize = 56
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 20 :: Ptr PipelineBindPoint)) (zero)
+    f
+
+instance FromCStruct IndirectCommandsLayoutCreateInfoNV where
+  peekCStruct p = do
+    flags <- peek @IndirectCommandsLayoutUsageFlagsNV ((p `plusPtr` 16 :: Ptr IndirectCommandsLayoutUsageFlagsNV))
+    pipelineBindPoint <- peek @PipelineBindPoint ((p `plusPtr` 20 :: Ptr PipelineBindPoint))
+    tokenCount <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))
+    pTokens <- peek @(Ptr (IndirectCommandsLayoutTokenNV _)) ((p `plusPtr` 32 :: Ptr (Ptr (IndirectCommandsLayoutTokenNV _))))
+    pTokens' <- generateM (fromIntegral tokenCount) (\i -> peekSomeCStruct (forgetExtensions ((pTokens `advancePtrBytes` (88 * (i)) :: Ptr (IndirectCommandsLayoutTokenNV _)))))
+    streamCount <- peek @Word32 ((p `plusPtr` 40 :: Ptr Word32))
+    pStreamStrides <- peek @(Ptr Word32) ((p `plusPtr` 48 :: Ptr (Ptr Word32)))
+    pStreamStrides' <- generateM (fromIntegral streamCount) (\i -> peek @Word32 ((pStreamStrides `advancePtrBytes` (4 * (i)) :: Ptr Word32)))
+    pure $ IndirectCommandsLayoutCreateInfoNV
+             flags pipelineBindPoint pTokens' pStreamStrides'
+
+instance Zero IndirectCommandsLayoutCreateInfoNV where
+  zero = IndirectCommandsLayoutCreateInfoNV
+           zero
+           zero
+           mempty
+           mempty
+
+
+-- | VkGeneratedCommandsInfoNV - Structure specifying parameters for the
+-- generation of commands
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkGeneratedCommandsInfoNV-pipeline-02912# The provided
+--     @pipeline@ /must/ match the pipeline bound at execution time
+--
+-- -   #VUID-VkGeneratedCommandsInfoNV-indirectCommandsLayout-02913# If the
+--     @indirectCommandsLayout@ uses a token of
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV', then the @pipeline@
+--     /must/ have been created with multiple shader groups
+--
+-- -   #VUID-VkGeneratedCommandsInfoNV-indirectCommandsLayout-02914# If the
+--     @indirectCommandsLayout@ uses a token of
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV', then the @pipeline@
+--     /must/ have been created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV'
+--     set in
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'::@flags@
+--
+-- -   #VUID-VkGeneratedCommandsInfoNV-indirectCommandsLayout-02915# If the
+--     @indirectCommandsLayout@ uses a token of
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV', then the
+--     @pipeline@’s 'Vulkan.Core10.Handles.PipelineLayout' /must/ match the
+--     'IndirectCommandsLayoutTokenNV'::@pushconstantPipelineLayout@
+--
+-- -   #VUID-VkGeneratedCommandsInfoNV-streamCount-02916# @streamCount@
+--     /must/ match the @indirectCommandsLayout@’s @streamCount@
+--
+-- -   #VUID-VkGeneratedCommandsInfoNV-pipelineBindPoint-09084# If
+--     @pipelineBindPoint@ is of type
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_COMPUTE',
+--     then the @pipeline@ /must/ have been created with the flag
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV'
+--
+-- -   #VUID-VkGeneratedCommandsInfoNV-pipelineBindPoint-09085# If
+--     @pipelineBindPoint@ is of type
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_COMPUTE',
+--     then the @pipeline@ /must/ have been created with a
+--     'Vulkan.Extensions.VK_NV_device_generated_commands_compute.ComputePipelineIndirectBufferInfoNV'
+--     structure specifying a valid address where its metadata will be
+--     saved
+--
+-- -   #VUID-VkGeneratedCommandsInfoNV-pipelineBindPoint-09086# If
+--     @pipelineBindPoint@ is of type
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_COMPUTE',
+--     then
+--     'Vulkan.Extensions.VK_NV_device_generated_commands_compute.cmdUpdatePipelineIndirectBufferNV'
+--     /must/ have been called on that pipeline to save its metadata to a
+--     device address
+--
+-- -   #VUID-VkGeneratedCommandsInfoNV-pipelineBindPoint-09087# If
+--     @pipelineBindPoint@ is of type
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_COMPUTE',
+--     and if 'INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NV' is used, then
+--     @pipeline@ /must/ be 'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-VkGeneratedCommandsInfoNV-sequencesCount-02917#
+--     @sequencesCount@ /must/ be less or equal to
+--     'PhysicalDeviceDeviceGeneratedCommandsPropertiesNV'::@maxIndirectSequenceCount@
+--     and 'GeneratedCommandsMemoryRequirementsInfoNV'::@maxSequencesCount@
+--     that was used to determine the @preprocessSize@
+--
+-- -   #VUID-VkGeneratedCommandsInfoNV-preprocessBuffer-02918#
+--     @preprocessBuffer@ /must/ have the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'
+--     bit set in its usage flag
+--
+-- -   #VUID-VkGeneratedCommandsInfoNV-preprocessOffset-02919#
+--     @preprocessOffset@ /must/ be aligned to
+--     'PhysicalDeviceDeviceGeneratedCommandsPropertiesNV'::@minIndirectCommandsBufferOffsetAlignment@
+--
+-- -   #VUID-VkGeneratedCommandsInfoNV-preprocessBuffer-02971# If
+--     @preprocessBuffer@ is non-sparse then it /must/ be bound completely
+--     and contiguously to a single 'Vulkan.Core10.Handles.DeviceMemory'
+--     object
+--
+-- -   #VUID-VkGeneratedCommandsInfoNV-preprocessSize-02920#
+--     @preprocessSize@ /must/ be at least equal to the memory
+--     requirement’s size returned by
+--     'getGeneratedCommandsMemoryRequirementsNV' using the matching inputs
+--     (@indirectCommandsLayout@, …​) as within this structure
+--
+-- -   #VUID-VkGeneratedCommandsInfoNV-sequencesCountBuffer-02921#
+--     @sequencesCountBuffer@ /can/ be set if the actual used count of
+--     sequences is sourced from the provided buffer. In that case the
+--     @sequencesCount@ serves as upper bound
+--
+-- -   #VUID-VkGeneratedCommandsInfoNV-sequencesCountBuffer-02922# If
+--     @sequencesCountBuffer@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', its usage flag /must/ have
+--     the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'
+--     bit set
+--
+-- -   #VUID-VkGeneratedCommandsInfoNV-sequencesCountBuffer-02923# If
+--     @sequencesCountBuffer@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', @sequencesCountOffset@
+--     /must/ be aligned to
+--     'PhysicalDeviceDeviceGeneratedCommandsPropertiesNV'::@minSequencesCountBufferOffsetAlignment@
+--
+-- -   #VUID-VkGeneratedCommandsInfoNV-sequencesCountBuffer-02972# If
+--     @sequencesCountBuffer@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' and is non-sparse then it
+--     /must/ be bound completely and contiguously to a single
+--     'Vulkan.Core10.Handles.DeviceMemory' object
+--
+-- -   #VUID-VkGeneratedCommandsInfoNV-sequencesIndexBuffer-02924# If
+--     @indirectCommandsLayout@’s
+--     'INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV' is set,
+--     @sequencesIndexBuffer@ /must/ be set otherwise it /must/ be
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-VkGeneratedCommandsInfoNV-sequencesIndexBuffer-02925# If
+--     @sequencesIndexBuffer@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', its usage flag /must/ have
+--     the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'
+--     bit set
+--
+-- -   #VUID-VkGeneratedCommandsInfoNV-sequencesIndexBuffer-02926# If
+--     @sequencesIndexBuffer@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', @sequencesIndexOffset@
+--     /must/ be aligned to
+--     'PhysicalDeviceDeviceGeneratedCommandsPropertiesNV'::@minSequencesIndexBufferOffsetAlignment@
+--
+-- -   #VUID-VkGeneratedCommandsInfoNV-sequencesIndexBuffer-02973# If
+--     @sequencesIndexBuffer@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' and is non-sparse then it
+--     /must/ be bound completely and contiguously to a single
+--     'Vulkan.Core10.Handles.DeviceMemory' object
+--
+-- -   #VUID-VkGeneratedCommandsInfoNV-indirectCommandsLayout-07078# If the
+--     @indirectCommandsLayout@ uses a token of
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV', then the @pipeline@
+--     /must/ contain a shader stage using the @MeshNV@ @Execution@ @Model@
+--
+-- -   #VUID-VkGeneratedCommandsInfoNV-indirectCommandsLayout-07079# If the
+--     @indirectCommandsLayout@ uses a token of
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV', then the
+--     @pipeline@ /must/ contain a shader stage using the @MeshEXT@
+--     @Execution@ @Model@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkGeneratedCommandsInfoNV-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV'
+--
+-- -   #VUID-VkGeneratedCommandsInfoNV-pNext-pNext# @pNext@ /must/ be
+--     @NULL@
+--
+-- -   #VUID-VkGeneratedCommandsInfoNV-pipelineBindPoint-parameter#
+--     @pipelineBindPoint@ /must/ be a valid
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint' value
+--
+-- -   #VUID-VkGeneratedCommandsInfoNV-pipeline-parameter# If @pipeline@ is
+--     not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @pipeline@ /must/ be a
+--     valid 'Vulkan.Core10.Handles.Pipeline' handle
+--
+-- -   #VUID-VkGeneratedCommandsInfoNV-indirectCommandsLayout-parameter#
+--     @indirectCommandsLayout@ /must/ be a valid
+--     'Vulkan.Extensions.Handles.IndirectCommandsLayoutNV' handle
+--
+-- -   #VUID-VkGeneratedCommandsInfoNV-pStreams-parameter# @pStreams@
+--     /must/ be a valid pointer to an array of @streamCount@ valid
+--     'IndirectCommandsStreamNV' structures
+--
+-- -   #VUID-VkGeneratedCommandsInfoNV-preprocessBuffer-parameter#
+--     @preprocessBuffer@ /must/ be a valid 'Vulkan.Core10.Handles.Buffer'
+--     handle
+--
+-- -   #VUID-VkGeneratedCommandsInfoNV-sequencesCountBuffer-parameter# If
+--     @sequencesCountBuffer@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', @sequencesCountBuffer@
+--     /must/ be a valid 'Vulkan.Core10.Handles.Buffer' handle
+--
+-- -   #VUID-VkGeneratedCommandsInfoNV-sequencesIndexBuffer-parameter# If
+--     @sequencesIndexBuffer@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', @sequencesIndexBuffer@
+--     /must/ be a valid 'Vulkan.Core10.Handles.Buffer' handle
+--
+-- -   #VUID-VkGeneratedCommandsInfoNV-streamCount-arraylength#
+--     @streamCount@ /must/ be greater than @0@
+--
+-- -   #VUID-VkGeneratedCommandsInfoNV-commonparent# Each of
+--     @indirectCommandsLayout@, @pipeline@, @preprocessBuffer@,
+--     @sequencesCountBuffer@, and @sequencesIndexBuffer@ 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_NV_device_generated_commands VK_NV_device_generated_commands>,
+-- 'Vulkan.Core10.Handles.Buffer',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
+-- 'Vulkan.Extensions.Handles.IndirectCommandsLayoutNV',
+-- 'IndirectCommandsStreamNV', 'Vulkan.Core10.Handles.Pipeline',
+-- 'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'cmdExecuteGeneratedCommandsNV', 'cmdPreprocessGeneratedCommandsNV'
+data GeneratedCommandsInfoNV = GeneratedCommandsInfoNV
+  { -- | @pipelineBindPoint@ is the
+    -- 'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint' used for the
+    -- @pipeline@.
+    pipelineBindPoint :: PipelineBindPoint
+  , -- | @pipeline@ is the 'Vulkan.Core10.Handles.Pipeline' used in the
+    -- generation and execution process.
+    pipeline :: Pipeline
+  , -- | @indirectCommandsLayout@ is the
+    -- 'Vulkan.Extensions.Handles.IndirectCommandsLayoutNV' that provides the
+    -- command sequence to generate.
+    indirectCommandsLayout :: IndirectCommandsLayoutNV
+  , -- | @pStreams@ is a pointer to an array of @streamCount@
+    -- 'IndirectCommandsStreamNV' structures providing the input data for the
+    -- tokens used in @indirectCommandsLayout@.
+    streams :: Vector IndirectCommandsStreamNV
+  , -- | @sequencesCount@ is the maximum number of sequences to reserve. If
+    -- @sequencesCountBuffer@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', this
+    -- is also the actual number of sequences generated.
+    sequencesCount :: Word32
+  , -- | @preprocessBuffer@ is the 'Vulkan.Core10.Handles.Buffer' that is used
+    -- for preprocessing the input data for execution. If this structure is
+    -- used with 'cmdExecuteGeneratedCommandsNV' with its @isPreprocessed@ set
+    -- to 'Vulkan.Core10.FundamentalTypes.TRUE', then the preprocessing step is
+    -- skipped and data in this buffer will not be modified. The contents and
+    -- the layout of this buffer are opaque to applications and /must/ not be
+    -- modified outside functions related to device-generated commands or
+    -- copied to another buffer for reuse.
+    preprocessBuffer :: Buffer
+  , -- | @preprocessOffset@ is the byte offset into @preprocessBuffer@ where the
+    -- preprocessed data is stored.
+    preprocessOffset :: DeviceSize
+  , -- | @preprocessSize@ is the maximum byte size within the @preprocessBuffer@
+    -- after the @preprocessOffset@ that is available for preprocessing.
+    preprocessSize :: DeviceSize
+  , -- | @sequencesCountBuffer@ is a 'Vulkan.Core10.Handles.Buffer' in which the
+    -- actual number of sequences is provided as single @uint32_t@ value.
+    sequencesCountBuffer :: Buffer
+  , -- | @sequencesCountOffset@ is the byte offset into @sequencesCountBuffer@
+    -- where the count value is stored.
+    sequencesCountOffset :: DeviceSize
+  , -- | @sequencesIndexBuffer@ is a 'Vulkan.Core10.Handles.Buffer' that encodes
+    -- the used sequence indices as @uint32_t@ array.
+    sequencesIndexBuffer :: Buffer
+  , -- | @sequencesIndexOffset@ is the byte offset into @sequencesIndexBuffer@
+    -- where the index values start.
+    sequencesIndexOffset :: DeviceSize
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (GeneratedCommandsInfoNV)
+#endif
+deriving instance Show GeneratedCommandsInfoNV
+
+instance ToCStruct GeneratedCommandsInfoNV where
+  withCStruct x f = allocaBytes 120 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p GeneratedCommandsInfoNV{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr PipelineBindPoint)) (pipelineBindPoint)
+    lift $ poke ((p `plusPtr` 24 :: Ptr Pipeline)) (pipeline)
+    lift $ poke ((p `plusPtr` 32 :: Ptr IndirectCommandsLayoutNV)) (indirectCommandsLayout)
+    lift $ poke ((p `plusPtr` 40 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (streams)) :: Word32))
+    pPStreams' <- ContT $ allocaBytes @IndirectCommandsStreamNV ((Data.Vector.length (streams)) * 16)
+    lift $ Data.Vector.imapM_ (\i e -> poke (pPStreams' `plusPtr` (16 * (i)) :: Ptr IndirectCommandsStreamNV) (e)) (streams)
+    lift $ poke ((p `plusPtr` 48 :: Ptr (Ptr IndirectCommandsStreamNV))) (pPStreams')
+    lift $ poke ((p `plusPtr` 56 :: Ptr Word32)) (sequencesCount)
+    lift $ poke ((p `plusPtr` 64 :: Ptr Buffer)) (preprocessBuffer)
+    lift $ poke ((p `plusPtr` 72 :: Ptr DeviceSize)) (preprocessOffset)
+    lift $ poke ((p `plusPtr` 80 :: Ptr DeviceSize)) (preprocessSize)
+    lift $ poke ((p `plusPtr` 88 :: Ptr Buffer)) (sequencesCountBuffer)
+    lift $ poke ((p `plusPtr` 96 :: Ptr DeviceSize)) (sequencesCountOffset)
+    lift $ poke ((p `plusPtr` 104 :: Ptr Buffer)) (sequencesIndexBuffer)
+    lift $ poke ((p `plusPtr` 112 :: Ptr DeviceSize)) (sequencesIndexOffset)
+    lift $ f
+  cStructSize = 120
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr PipelineBindPoint)) (zero)
+    poke ((p `plusPtr` 32 :: Ptr IndirectCommandsLayoutNV)) (zero)
+    poke ((p `plusPtr` 56 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 64 :: Ptr Buffer)) (zero)
+    poke ((p `plusPtr` 72 :: Ptr DeviceSize)) (zero)
+    poke ((p `plusPtr` 80 :: Ptr DeviceSize)) (zero)
+    poke ((p `plusPtr` 96 :: Ptr DeviceSize)) (zero)
+    poke ((p `plusPtr` 112 :: Ptr DeviceSize)) (zero)
+    f
+
+instance FromCStruct GeneratedCommandsInfoNV where
+  peekCStruct p = do
+    pipelineBindPoint <- peek @PipelineBindPoint ((p `plusPtr` 16 :: Ptr PipelineBindPoint))
+    pipeline <- peek @Pipeline ((p `plusPtr` 24 :: Ptr Pipeline))
+    indirectCommandsLayout <- peek @IndirectCommandsLayoutNV ((p `plusPtr` 32 :: Ptr IndirectCommandsLayoutNV))
+    streamCount <- peek @Word32 ((p `plusPtr` 40 :: Ptr Word32))
+    pStreams <- peek @(Ptr IndirectCommandsStreamNV) ((p `plusPtr` 48 :: Ptr (Ptr IndirectCommandsStreamNV)))
+    pStreams' <- generateM (fromIntegral streamCount) (\i -> peekCStruct @IndirectCommandsStreamNV ((pStreams `advancePtrBytes` (16 * (i)) :: Ptr IndirectCommandsStreamNV)))
+    sequencesCount <- peek @Word32 ((p `plusPtr` 56 :: Ptr Word32))
+    preprocessBuffer <- peek @Buffer ((p `plusPtr` 64 :: Ptr Buffer))
+    preprocessOffset <- peek @DeviceSize ((p `plusPtr` 72 :: Ptr DeviceSize))
+    preprocessSize <- peek @DeviceSize ((p `plusPtr` 80 :: Ptr DeviceSize))
+    sequencesCountBuffer <- peek @Buffer ((p `plusPtr` 88 :: Ptr Buffer))
+    sequencesCountOffset <- peek @DeviceSize ((p `plusPtr` 96 :: Ptr DeviceSize))
+    sequencesIndexBuffer <- peek @Buffer ((p `plusPtr` 104 :: Ptr Buffer))
+    sequencesIndexOffset <- peek @DeviceSize ((p `plusPtr` 112 :: Ptr DeviceSize))
+    pure $ GeneratedCommandsInfoNV
+             pipelineBindPoint
+             pipeline
+             indirectCommandsLayout
+             pStreams'
+             sequencesCount
+             preprocessBuffer
+             preprocessOffset
+             preprocessSize
+             sequencesCountBuffer
+             sequencesCountOffset
+             sequencesIndexBuffer
+             sequencesIndexOffset
+
+instance Zero GeneratedCommandsInfoNV where
+  zero = GeneratedCommandsInfoNV
+           zero
+           zero
+           zero
+           mempty
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkGeneratedCommandsMemoryRequirementsInfoNV - Structure specifying
+-- parameters for the reservation of preprocess buffer space
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkGeneratedCommandsMemoryRequirementsInfoNV-maxSequencesCount-02907#
+--     @maxSequencesCount@ /must/ be less or equal to
+--     'PhysicalDeviceDeviceGeneratedCommandsPropertiesNV'::@maxIndirectSequenceCount@
+--
+-- -   #VUID-VkGeneratedCommandsMemoryRequirementsInfoNV-pipelineBindPoint-09075#
+--     If @pipelineBindPoint@ is of type
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS',
+--     then @pipeline@ /must/ be a valid 'Vulkan.Core10.Handles.Pipeline'
+--     handle
+--
+-- -   #VUID-VkGeneratedCommandsMemoryRequirementsInfoNV-pipelineBindPoint-09076#
+--     If @pipelineBindPoint@ is of type
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_COMPUTE',
+--     and the @indirectCommandsLayout@ was not created with a
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NV' token, then the
+--     @pipeline@ /must/ be a valid 'Vulkan.Core10.Handles.Pipeline' handle
+--
+-- -   #VUID-VkGeneratedCommandsMemoryRequirementsInfoNV-pipelineBindPoint-09077#
+--     If @pipelineBindPoint@ is of type
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_COMPUTE',
+--     and the @indirectCommandsLayout@ contains a
+--     'INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NV' token, then the
+--     @pipeline@ /must/ be 'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkGeneratedCommandsMemoryRequirementsInfoNV-sType-sType#
+--     @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV'
+--
+-- -   #VUID-VkGeneratedCommandsMemoryRequirementsInfoNV-pNext-pNext#
+--     @pNext@ /must/ be @NULL@
+--
+-- -   #VUID-VkGeneratedCommandsMemoryRequirementsInfoNV-pipelineBindPoint-parameter#
+--     @pipelineBindPoint@ /must/ be a valid
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint' value
+--
+-- -   #VUID-VkGeneratedCommandsMemoryRequirementsInfoNV-pipeline-parameter#
+--     If @pipeline@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
+--     @pipeline@ /must/ be a valid 'Vulkan.Core10.Handles.Pipeline' handle
+--
+-- -   #VUID-VkGeneratedCommandsMemoryRequirementsInfoNV-indirectCommandsLayout-parameter#
+--     @indirectCommandsLayout@ /must/ be a valid
+--     'Vulkan.Extensions.Handles.IndirectCommandsLayoutNV' handle
+--
+-- -   #VUID-VkGeneratedCommandsMemoryRequirementsInfoNV-commonparent# Both
+--     of @indirectCommandsLayout@, and @pipeline@ 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_NV_device_generated_commands VK_NV_device_generated_commands>,
+-- 'Vulkan.Extensions.Handles.IndirectCommandsLayoutNV',
+-- 'Vulkan.Core10.Handles.Pipeline',
+-- 'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'getGeneratedCommandsMemoryRequirementsNV'
+data GeneratedCommandsMemoryRequirementsInfoNV = GeneratedCommandsMemoryRequirementsInfoNV
+  { -- | @pipelineBindPoint@ is the
+    -- 'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint' of the
+    -- @pipeline@ that this buffer memory is intended to be used with during
+    -- the execution.
+    pipelineBindPoint :: PipelineBindPoint
+  , -- | @pipeline@ is the 'Vulkan.Core10.Handles.Pipeline' that this buffer
+    -- memory is intended to be used with during the execution.
+    pipeline :: Pipeline
+  , -- | @indirectCommandsLayout@ is the
+    -- 'Vulkan.Extensions.Handles.IndirectCommandsLayoutNV' that this buffer
+    -- memory is intended to be used with.
+    indirectCommandsLayout :: IndirectCommandsLayoutNV
+  , -- | @maxSequencesCount@ is the maximum number of sequences that this buffer
+    -- memory in combination with the other state provided /can/ be used with.
+    maxSequencesCount :: Word32
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (GeneratedCommandsMemoryRequirementsInfoNV)
+#endif
+deriving instance Show GeneratedCommandsMemoryRequirementsInfoNV
+
+instance ToCStruct GeneratedCommandsMemoryRequirementsInfoNV where
+  withCStruct x f = allocaBytes 48 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p GeneratedCommandsMemoryRequirementsInfoNV{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr PipelineBindPoint)) (pipelineBindPoint)
+    poke ((p `plusPtr` 24 :: Ptr Pipeline)) (pipeline)
+    poke ((p `plusPtr` 32 :: Ptr IndirectCommandsLayoutNV)) (indirectCommandsLayout)
+    poke ((p `plusPtr` 40 :: Ptr Word32)) (maxSequencesCount)
+    f
+  cStructSize = 48
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr PipelineBindPoint)) (zero)
+    poke ((p `plusPtr` 32 :: Ptr IndirectCommandsLayoutNV)) (zero)
+    poke ((p `plusPtr` 40 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct GeneratedCommandsMemoryRequirementsInfoNV where
+  peekCStruct p = do
+    pipelineBindPoint <- peek @PipelineBindPoint ((p `plusPtr` 16 :: Ptr PipelineBindPoint))
+    pipeline <- peek @Pipeline ((p `plusPtr` 24 :: Ptr Pipeline))
+    indirectCommandsLayout <- peek @IndirectCommandsLayoutNV ((p `plusPtr` 32 :: Ptr IndirectCommandsLayoutNV))
+    maxSequencesCount <- peek @Word32 ((p `plusPtr` 40 :: Ptr Word32))
+    pure $ GeneratedCommandsMemoryRequirementsInfoNV
+             pipelineBindPoint pipeline indirectCommandsLayout maxSequencesCount
+
+instance Storable GeneratedCommandsMemoryRequirementsInfoNV where
+  sizeOf ~_ = 48
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero GeneratedCommandsMemoryRequirementsInfoNV where
+  zero = GeneratedCommandsMemoryRequirementsInfoNV
+           zero
+           zero
+           zero
+           zero
+
+
+type IndirectCommandsLayoutUsageFlagsNV = IndirectCommandsLayoutUsageFlagBitsNV
+
+-- | VkIndirectCommandsLayoutUsageFlagBitsNV - Bitmask specifying allowed
+-- usage of an indirect commands layout
+--
+-- = Description
+--
+-- -   'INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV'
+--     specifies that the layout is always used with the manual
+--     preprocessing step through calling
+--     'cmdPreprocessGeneratedCommandsNV' and executed by
+--     'cmdExecuteGeneratedCommandsNV' with @isPreprocessed@ set to
+--     'Vulkan.Core10.FundamentalTypes.TRUE'.
+--
+-- -   'INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV' specifies
+--     that the input data for the sequences is not implicitly indexed from
+--     0..sequencesUsed, but an application-provided
+--     'Vulkan.Core10.Handles.Buffer' encoding the index is provided.
+--
+-- -   'INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV'
+--     specifies that the processing of sequences /can/ happen at an
+--     implementation-dependent order, which is not guaranteed to be
+--     coherent using the same input data. This flag is ignored when the
+--     @pipelineBindPoint@ is
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_COMPUTE'
+--     as it is implied that the dispatch sequence is always unordered.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_generated_commands VK_NV_device_generated_commands>,
+-- 'IndirectCommandsLayoutUsageFlagsNV'
+newtype IndirectCommandsLayoutUsageFlagBitsNV = IndirectCommandsLayoutUsageFlagBitsNV Flags
+  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
+
+-- No documentation found for Nested "VkIndirectCommandsLayoutUsageFlagBitsNV" "VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV"
+pattern INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV = IndirectCommandsLayoutUsageFlagBitsNV 0x00000001
+
+-- No documentation found for Nested "VkIndirectCommandsLayoutUsageFlagBitsNV" "VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV"
+pattern INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV = IndirectCommandsLayoutUsageFlagBitsNV 0x00000002
+
+-- No documentation found for Nested "VkIndirectCommandsLayoutUsageFlagBitsNV" "VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV"
+pattern INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV = IndirectCommandsLayoutUsageFlagBitsNV 0x00000004
+
+conNameIndirectCommandsLayoutUsageFlagBitsNV :: String
+conNameIndirectCommandsLayoutUsageFlagBitsNV = "IndirectCommandsLayoutUsageFlagBitsNV"
+
+enumPrefixIndirectCommandsLayoutUsageFlagBitsNV :: String
+enumPrefixIndirectCommandsLayoutUsageFlagBitsNV = "INDIRECT_COMMANDS_LAYOUT_USAGE_"
+
+showTableIndirectCommandsLayoutUsageFlagBitsNV :: [(IndirectCommandsLayoutUsageFlagBitsNV, String)]
+showTableIndirectCommandsLayoutUsageFlagBitsNV =
+  [
+    ( INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV
+    , "EXPLICIT_PREPROCESS_BIT_NV"
+    )
+  ,
+    ( INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV
+    , "INDEXED_SEQUENCES_BIT_NV"
+    )
+  ,
+    ( INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV
+    , "UNORDERED_SEQUENCES_BIT_NV"
+    )
+  ]
+
+instance Show IndirectCommandsLayoutUsageFlagBitsNV where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixIndirectCommandsLayoutUsageFlagBitsNV
+      showTableIndirectCommandsLayoutUsageFlagBitsNV
+      conNameIndirectCommandsLayoutUsageFlagBitsNV
+      (\(IndirectCommandsLayoutUsageFlagBitsNV x) -> x)
+      (\x -> showString "0x" . showHex x)
+
+instance Read IndirectCommandsLayoutUsageFlagBitsNV where
+  readPrec =
+    enumReadPrec
+      enumPrefixIndirectCommandsLayoutUsageFlagBitsNV
+      showTableIndirectCommandsLayoutUsageFlagBitsNV
+      conNameIndirectCommandsLayoutUsageFlagBitsNV
+      IndirectCommandsLayoutUsageFlagBitsNV
+
+type IndirectStateFlagsNV = IndirectStateFlagBitsNV
+
+-- | VkIndirectStateFlagBitsNV - Bitmask specifying state that can be altered
+-- on the device
+--
+-- = Description
+--
+-- -   'INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV' allows to toggle the
+--     'Vulkan.Core10.Enums.FrontFace.FrontFace' rasterization state for
+--     subsequent drawing commands.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_generated_commands VK_NV_device_generated_commands>,
+-- 'IndirectStateFlagsNV'
+newtype IndirectStateFlagBitsNV = IndirectStateFlagBitsNV Flags
+  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
+
+-- No documentation found for Nested "VkIndirectStateFlagBitsNV" "VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV"
+pattern INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV = IndirectStateFlagBitsNV 0x00000001
+
+conNameIndirectStateFlagBitsNV :: String
+conNameIndirectStateFlagBitsNV = "IndirectStateFlagBitsNV"
+
+enumPrefixIndirectStateFlagBitsNV :: String
+enumPrefixIndirectStateFlagBitsNV = "INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV"
+
+showTableIndirectStateFlagBitsNV :: [(IndirectStateFlagBitsNV, String)]
+showTableIndirectStateFlagBitsNV = [(INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV, "")]
+
+instance Show IndirectStateFlagBitsNV where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixIndirectStateFlagBitsNV
+      showTableIndirectStateFlagBitsNV
+      conNameIndirectStateFlagBitsNV
+      (\(IndirectStateFlagBitsNV x) -> x)
+      (\x -> showString "0x" . showHex x)
+
+instance Read IndirectStateFlagBitsNV where
+  readPrec =
+    enumReadPrec
+      enumPrefixIndirectStateFlagBitsNV
+      showTableIndirectStateFlagBitsNV
+      conNameIndirectStateFlagBitsNV
+      IndirectStateFlagBitsNV
+
+-- | VkIndirectCommandsTokenTypeNV - Enum specifying token commands
+--
+-- = Description
+--
+-- \'
+--
+-- +---------------------------------------------------+--------------------------------------------------------------------+
+-- | Token type                                        | Equivalent command                                                 |
+-- +===================================================+====================================================================+
+-- | 'INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV'    | 'cmdBindPipelineShaderGroupNV'                                     |
+-- +---------------------------------------------------+--------------------------------------------------------------------+
+-- | 'INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV'     | -                                                                  |
+-- +---------------------------------------------------+--------------------------------------------------------------------+
+-- | 'INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV'    | 'Vulkan.Core10.CommandBufferBuilding.cmdBindIndexBuffer'           |
+-- +---------------------------------------------------+--------------------------------------------------------------------+
+-- | 'INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV'   | 'Vulkan.Core10.CommandBufferBuilding.cmdBindVertexBuffers'         |
+-- +---------------------------------------------------+--------------------------------------------------------------------+
+-- | 'INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV'   | 'Vulkan.Core10.CommandBufferBuilding.cmdPushConstants'             |
+-- +---------------------------------------------------+--------------------------------------------------------------------+
+-- | 'INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_DATA_NV'       | 'Vulkan.Extensions.VK_EXT_descriptor_heap.cmdPushDataEXT'          |
+-- +---------------------------------------------------+--------------------------------------------------------------------+
+-- | 'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV'    | 'Vulkan.Core10.CommandBufferBuilding.cmdDrawIndexedIndirect'       |
+-- +---------------------------------------------------+--------------------------------------------------------------------+
+-- | 'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV'            | 'Vulkan.Core10.CommandBufferBuilding.cmdDrawIndirect'              |
+-- +---------------------------------------------------+--------------------------------------------------------------------+
+-- | 'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV'      | 'Vulkan.Extensions.VK_NV_mesh_shader.cmdDrawMeshTasksIndirectNV'   |
+-- +---------------------------------------------------+--------------------------------------------------------------------+
+-- | 'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV' | 'Vulkan.Extensions.VK_EXT_mesh_shader.cmdDrawMeshTasksIndirectEXT' |
+-- +---------------------------------------------------+--------------------------------------------------------------------+
+-- | 'INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NV'        | 'Vulkan.Core10.CommandBufferBuilding.cmdBindPipeline'              |
+-- +---------------------------------------------------+--------------------------------------------------------------------+
+-- | 'INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NV'        | 'Vulkan.Core10.CommandBufferBuilding.cmdDispatchIndirect'          |
+-- +---------------------------------------------------+--------------------------------------------------------------------+
+--
+-- Supported Indirect Command Tokens
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_generated_commands VK_NV_device_generated_commands>,
+-- 'IndirectCommandsLayoutTokenNV'
+newtype IndirectCommandsTokenTypeNV = IndirectCommandsTokenTypeNV Int32
+  deriving newtype (Eq, Ord, Storable, Zero)
+
+-- No documentation found for Nested "VkIndirectCommandsTokenTypeNV" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV"
+pattern INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV = IndirectCommandsTokenTypeNV 0
+
+-- No documentation found for Nested "VkIndirectCommandsTokenTypeNV" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV"
+pattern INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV = IndirectCommandsTokenTypeNV 1
+
+-- No documentation found for Nested "VkIndirectCommandsTokenTypeNV" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV"
+pattern INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV = IndirectCommandsTokenTypeNV 2
+
+-- No documentation found for Nested "VkIndirectCommandsTokenTypeNV" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV"
+pattern INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV = IndirectCommandsTokenTypeNV 3
+
+-- No documentation found for Nested "VkIndirectCommandsTokenTypeNV" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV"
+pattern INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV = IndirectCommandsTokenTypeNV 4
+
+-- No documentation found for Nested "VkIndirectCommandsTokenTypeNV" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV"
+pattern INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV = IndirectCommandsTokenTypeNV 5
+
+-- No documentation found for Nested "VkIndirectCommandsTokenTypeNV" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV"
+pattern INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV = IndirectCommandsTokenTypeNV 6
+
+-- No documentation found for Nested "VkIndirectCommandsTokenTypeNV" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV"
+pattern INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV = IndirectCommandsTokenTypeNV 7
+
+-- No documentation found for Nested "VkIndirectCommandsTokenTypeNV" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NV"
+pattern INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NV = IndirectCommandsTokenTypeNV 1000428004
+
+-- No documentation found for Nested "VkIndirectCommandsTokenTypeNV" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NV"
+pattern INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NV = IndirectCommandsTokenTypeNV 1000428003
+
+-- No documentation found for Nested "VkIndirectCommandsTokenTypeNV" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV"
+pattern INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV = IndirectCommandsTokenTypeNV 1000328000
+
+-- No documentation found for Nested "VkIndirectCommandsTokenTypeNV" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_DATA_NV"
+pattern INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_DATA_NV = IndirectCommandsTokenTypeNV 1000135000
+
+{-# COMPLETE
+  INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV
+  , INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV
+  , INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV
+  , INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV
+  , INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV
+  , INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV
+  , INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV
+  , INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV
+  , INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NV
+  , INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NV
+  , INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV
+  , INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_DATA_NV ::
+    IndirectCommandsTokenTypeNV
+  #-}
+
+conNameIndirectCommandsTokenTypeNV :: String
+conNameIndirectCommandsTokenTypeNV = "IndirectCommandsTokenTypeNV"
+
+enumPrefixIndirectCommandsTokenTypeNV :: String
+enumPrefixIndirectCommandsTokenTypeNV = "INDIRECT_COMMANDS_TOKEN_TYPE_"
+
+showTableIndirectCommandsTokenTypeNV :: [(IndirectCommandsTokenTypeNV, String)]
+showTableIndirectCommandsTokenTypeNV =
+  [
+    ( INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV
+    , "SHADER_GROUP_NV"
+    )
+  ,
+    ( INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV
+    , "STATE_FLAGS_NV"
+    )
+  ,
+    ( INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV
+    , "INDEX_BUFFER_NV"
+    )
+  ,
+    ( INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV
+    , "VERTEX_BUFFER_NV"
+    )
+  ,
+    ( INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV
+    , "PUSH_CONSTANT_NV"
+    )
+  ,
+    ( INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV
+    , "DRAW_INDEXED_NV"
+    )
+  ,
+    ( INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV
+    , "DRAW_NV"
+    )
+  ,
+    ( INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV
+    , "DRAW_TASKS_NV"
+    )
+  ,
+    ( INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NV
+    , "DISPATCH_NV"
+    )
+  ,
+    ( INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NV
+    , "PIPELINE_NV"
+    )
+  ,
+    ( INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV
+    , "DRAW_MESH_TASKS_NV"
+    )
+  ,
+    ( INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_DATA_NV
+    , "PUSH_DATA_NV"
     )
   ]
 
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
@@ -123,7 +123,7 @@
 --
 -- -   optionally preprocess the generated content using
 --     'cmdPreprocessGeneratedCommandsNV', for example on an asynchronous
---     compute queue, or for the purpose of re-using the data in multiple
+--     compute queue, or for the purpose of reusing the data in multiple
 --     executions.
 --
 -- -   call 'cmdExecuteGeneratedCommandsNV' to create and execute the
@@ -188,7 +188,8 @@
 --
 -- -   'SetStateFlagsIndirectCommandNV'
 --
--- -   Extending 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo':
+-- -   Extending
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo':
 --
 --     -   'GraphicsPipelineShaderGroupsCreateInfoNV'
 --
@@ -225,9 +226,9 @@
 --
 -- -   Extending 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits':
 --
---     -   'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_COMMAND_PREPROCESS_READ_BIT_NV'
+--     -   'ACCESS_COMMAND_PREPROCESS_READ_BIT_NV'
 --
---     -   'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV'
+--     -   'ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV'
 --
 -- -   Extending 'Vulkan.Core10.Enums.ObjectType.ObjectType':
 --
@@ -241,7 +242,7 @@
 -- -   Extending
 --     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits':
 --
---     -   'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV'
+--     -   'PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV'
 --
 -- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
 --
@@ -320,9 +321,9 @@
 -- not always required.
 --
 -- When making use of Graphics Shader Groups, the programs should behave
--- similar with regards to vertex inputs, clipping and culling outputs of
--- the geometry stage, as well as sample shading behavior in fragment
--- shaders, to reduce the amount of the worst-case memory approximation.
+-- similarly with regards to vertex inputs, clipping and culling outputs of
+-- the geometry stage, and sample shading behavior in fragment shaders, to
+-- reduce the amount of the worst-case memory approximation.
 --
 -- 7) Should we allow additional per-sequence dynamic state changes?
 --
@@ -340,7 +341,7 @@
 -- add the ability to change any
 -- 'Vulkan.Core10.Enums.DynamicState.DynamicState'.
 --
--- 8) How do we allow re-using already “generated” @indirectCommands@?
+-- 8) How do we allow reusing already “generated” @indirectCommands@?
 --
 -- Expose a @preprocessBuffer@ to reuse implementation-dependencyFlags
 -- data. Set @isPreprocessed@ to 'Vulkan.Core10.FundamentalTypes.TRUE' in
@@ -389,16 +390,12 @@
 -- separate logical pipeline from either graphics or compute, and that
 -- pipeline only includes
 -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TOP_OF_PIPE_BIT',
--- a new stage
--- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV',
--- and
+-- a new stage 'PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV', and
 -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT'.
 -- This new stage has two corresponding new access types,
--- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_COMMAND_PREPROCESS_READ_BIT_NV'
--- and
--- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV',
--- used to synchronize reading the buffer inputs and writing the preprocess
--- memory output.
+-- 'ACCESS_COMMAND_PREPROCESS_READ_BIT_NV' and
+-- 'ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV', used to synchronize reading
+-- the buffer inputs and writing the preprocess memory output.
 --
 -- The generated output written in the preprocess buffer memory by
 -- 'cmdExecuteGeneratedCommandsNV' is considered to be consumed by the
@@ -408,20 +405,16 @@
 -- Thus, to synchronize from writing the input buffers to preprocessing via
 -- 'cmdPreprocessGeneratedCommandsNV', use:
 --
--- -   @dstStageMask@ =
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV'
+-- -   @dstStageMask@ = 'PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV'
 --
--- -   @dstAccessMask@ =
---     'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_COMMAND_PREPROCESS_READ_BIT_NV'
+-- -   @dstAccessMask@ = 'ACCESS_COMMAND_PREPROCESS_READ_BIT_NV'
 --
 -- To synchronize from 'cmdPreprocessGeneratedCommandsNV' to executing the
 -- generated commands by 'cmdExecuteGeneratedCommandsNV', use:
 --
--- -   @srcStageMask@ =
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV'
+-- -   @srcStageMask@ = 'PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV'
 --
--- -   @srcAccessMask@ =
---     'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV'
+-- -   @srcAccessMask@ = 'ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV'
 --
 -- -   @dstStageMask@ =
 --     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_DRAW_INDIRECT_BIT'
@@ -530,7 +523,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_device_generated_commands Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -552,7 +545,10 @@
 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 BindIndexBufferIndirectCommandNV
 
 instance ToCStruct BindIndexBufferIndirectCommandNV
@@ -617,12 +613,15 @@
 instance FromCStruct IndirectCommandsLayoutCreateInfoNV
 
 
-data IndirectCommandsLayoutTokenNV
+type role IndirectCommandsLayoutTokenNV nominal
+data IndirectCommandsLayoutTokenNV (es :: [Type])
 
-instance ToCStruct IndirectCommandsLayoutTokenNV
-instance Show IndirectCommandsLayoutTokenNV
+instance ( Extendss IndirectCommandsLayoutTokenNV es
+         , PokeChain es ) => ToCStruct (IndirectCommandsLayoutTokenNV es)
+instance Show (Chain es) => Show (IndirectCommandsLayoutTokenNV es)
 
-instance FromCStruct IndirectCommandsLayoutTokenNV
+instance ( Extendss IndirectCommandsLayoutTokenNV es
+         , PeekChain es ) => FromCStruct (IndirectCommandsLayoutTokenNV es)
 
 
 data IndirectCommandsStreamNV
diff --git a/src/Vulkan/Extensions/VK_NV_device_generated_commands_compute.hs b/src/Vulkan/Extensions/VK_NV_device_generated_commands_compute.hs
--- a/src/Vulkan/Extensions/VK_NV_device_generated_commands_compute.hs
+++ b/src/Vulkan/Extensions/VK_NV_device_generated_commands_compute.hs
@@ -69,7 +69,7 @@
 --
 -- -   'PipelineIndirectDeviceAddressInfoNV'
 --
--- -   Extending 'Vulkan.Core10.Pipeline.ComputePipelineCreateInfo':
+-- -   Extending 'Vulkan.Core10.ComputePipeline.ComputePipelineCreateInfo':
 --
 --     -   'ComputePipelineIndirectBufferInfoNV'
 --
@@ -123,7 +123,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_device_generated_commands_compute Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_NV_device_generated_commands_compute Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -178,7 +178,7 @@
 import Vulkan.Core10.Handles (CommandBuffer(..))
 import Vulkan.Core10.Handles (CommandBuffer(CommandBuffer))
 import Vulkan.Core10.Handles (CommandBuffer_T)
-import Vulkan.Core10.Pipeline (ComputePipelineCreateInfo)
+import Vulkan.Core10.ComputePipeline (ComputePipelineCreateInfo)
 import Vulkan.Core10.Handles (Device)
 import Vulkan.Core10.Handles (Device(..))
 import Vulkan.Core10.Handles (Device(Device))
@@ -219,10 +219,10 @@
 -- of synchronization barriers. The writes to the address /must/ be
 -- synchronized using stages
 -- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COPY_BIT' and
--- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV'
+-- 'Vulkan.Extensions.VK_NV_device_generated_commands.PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV'
 -- and with access masks
 -- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_MEMORY_WRITE_BIT' and
--- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_COMMAND_PREPROCESS_READ_BIT_NV'
+-- 'Vulkan.Extensions.VK_NV_device_generated_commands.ACCESS_COMMAND_PREPROCESS_READ_BIT_NV'
 -- respectively before using the results in preprocessing.
 --
 -- == Valid Usage
@@ -243,7 +243,7 @@
 --
 -- -   #VUID-vkCmdUpdatePipelineIndirectBufferNV-deviceGeneratedComputePipelines-09021#
 --     The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-deviceGeneratedComputePipelines ::deviceGeneratedComputePipelines>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-deviceGeneratedComputePipelines ::deviceGeneratedComputePipelines>
 --     feature /must/ be enabled
 --
 -- == Valid Usage (Implicit)
@@ -265,12 +265,17 @@
 --
 -- -   #VUID-vkCmdUpdatePipelineIndirectBufferNV-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support transfer, graphics, or compute
---     operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT',
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT', or
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_TRANSFER_BIT' operations
 --
 -- -   #VUID-vkCmdUpdatePipelineIndirectBufferNV-renderpass# This command
 --     /must/ only be called outside of a render pass instance
 --
+-- -   #VUID-vkCmdUpdatePipelineIndirectBufferNV-suspended# This command
+--     /must/ not be called between suspended render pass instances
+--
 -- -   #VUID-vkCmdUpdatePipelineIndirectBufferNV-videocoding# This command
 --     /must/ only be called outside of a video coding scope
 --
@@ -292,11 +297,16 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | Transfer                                                                                                              | Action                                                                                                                                 |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | Graphics                                                                                                              |                                                                                                                                        |
--- |                                                                                                                            |                                                                                                                        |                                                                                                                             | Compute                                                                                                               |                                                                                                                                        |
+-- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | VK_QUEUE_GRAPHICS_BIT                                                                                                 |                                                                                                                                        |
+-- |                                                                                                                            |                                                                                                                        |                                                                                                                             | VK_QUEUE_TRANSFER_BIT                                                                                                 |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdUpdatePipelineIndirectBufferNV is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_generated_commands_compute VK_NV_device_generated_commands_compute>,
@@ -348,7 +358,7 @@
 --
 -- -   #VUID-vkGetPipelineIndirectMemoryRequirementsNV-deviceGeneratedComputePipelines-09082#
 --     The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-deviceGeneratedComputePipelines ::deviceGeneratedComputePipelines>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-deviceGeneratedComputePipelines ::deviceGeneratedComputePipelines>
 --     feature /must/ be enabled
 --
 -- -   #VUID-vkGetPipelineIndirectMemoryRequirementsNV-pCreateInfo-09083#
@@ -362,7 +372,7 @@
 --
 -- -   #VUID-vkGetPipelineIndirectMemoryRequirementsNV-pCreateInfo-parameter#
 --     @pCreateInfo@ /must/ be a valid pointer to a valid
---     'Vulkan.Core10.Pipeline.ComputePipelineCreateInfo' structure
+--     'Vulkan.Core10.ComputePipeline.ComputePipelineCreateInfo' structure
 --
 -- -   #VUID-vkGetPipelineIndirectMemoryRequirementsNV-pMemoryRequirements-parameter#
 --     @pMemoryRequirements@ /must/ be a valid pointer to a
@@ -372,7 +382,7 @@
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_generated_commands_compute VK_NV_device_generated_commands_compute>,
--- 'Vulkan.Core10.Pipeline.ComputePipelineCreateInfo',
+-- 'Vulkan.Core10.ComputePipeline.ComputePipelineCreateInfo',
 -- 'Vulkan.Core10.Handles.Device',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.MemoryRequirements2'
 getPipelineIndirectMemoryRequirementsNV :: forall a b io
@@ -384,9 +394,10 @@
                                            , MonadIO io )
                                         => -- | @device@ is the logical device that owns the buffer.
                                            Device
-                                        -> -- | @pCreateInfo@ is a 'Vulkan.Core10.Pipeline.ComputePipelineCreateInfo'
-                                           -- structure specifying the creation parameters of the compute pipeline
-                                           -- whose memory requirements are being queried.
+                                        -> -- | @pCreateInfo@ is a
+                                           -- 'Vulkan.Core10.ComputePipeline.ComputePipelineCreateInfo' structure
+                                           -- specifying the creation parameters of the compute pipeline whose memory
+                                           -- requirements are being queried.
                                            (ComputePipelineCreateInfo a)
                                         -> io (MemoryRequirements2 b)
 getPipelineIndirectMemoryRequirementsNV device
@@ -419,7 +430,7 @@
 --
 -- -   #VUID-vkGetPipelineIndirectDeviceAddressNV-deviceGeneratedComputePipelines-09078#
 --     The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-deviceGeneratedComputePipelines ::deviceGeneratedComputePipelines>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-deviceGeneratedComputePipelines ::deviceGeneratedComputePipelines>
 --     feature /must/ be enabled
 --
 -- == Valid Usage (Implicit)
@@ -471,35 +482,36 @@
 --
 -- -   #VUID-VkComputePipelineIndirectBufferInfoNV-deviceGeneratedComputePipelines-09009#
 --     The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-deviceGeneratedComputePipelines ::deviceGeneratedComputePipelines>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-deviceGeneratedComputePipelines ::deviceGeneratedComputePipelines>
 --     feature /must/ be enabled
 --
 -- -   #VUID-VkComputePipelineIndirectBufferInfoNV-flags-09010# The
 --     pipeline creation flags in
---     'Vulkan.Core10.Pipeline.ComputePipelineCreateInfo'::@flags@ /must/
---     include
+--     'Vulkan.Core10.ComputePipeline.ComputePipelineCreateInfo'::@flags@
+--     /must/ include
 --     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV'
 --
 -- -   #VUID-VkComputePipelineIndirectBufferInfoNV-deviceAddress-09011#
 --     @deviceAddress@ /must/ be aligned to the
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.MemoryRequirements2'::@alignment@,
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.MemoryRequirements2'::@memoryRequirements.alignment@,
 --     as returned by 'getPipelineIndirectMemoryRequirementsNV'
 --
 -- -   #VUID-VkComputePipelineIndirectBufferInfoNV-deviceAddress-09012#
 --     @deviceAddress@ /must/ have been allocated from a buffer that was
---     created with usage
+--     created with both the
 --     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_DST_BIT'
 --     and
 --     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'
+--     usage flags set
 --
 -- -   #VUID-VkComputePipelineIndirectBufferInfoNV-size-09013# @size@
 --     /must/ be greater than or equal to the
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.MemoryRequirements2'::@size@,
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.MemoryRequirements2'::@memoryRequirements.size@,
 --     as returned by 'getPipelineIndirectMemoryRequirementsNV'
 --
 -- -   #VUID-VkComputePipelineIndirectBufferInfoNV-pipelineDeviceAddressCaptureReplay-09014#
 --     If @pipelineDeviceAddressCaptureReplay@ is non-zero then the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-deviceGeneratedComputePipelines ::deviceGeneratedComputeCaptureReplay>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-deviceGeneratedComputePipelines ::deviceGeneratedComputeCaptureReplay>
 --     feature /must/ be enabled
 --
 -- -   #VUID-VkComputePipelineIndirectBufferInfoNV-pipelineDeviceAddressCaptureReplay-09015#
@@ -522,6 +534,21 @@
 --     /must/ be
 --     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COMPUTE_PIPELINE_INDIRECT_BUFFER_INFO_NV'
 --
+-- -   #VUID-VkComputePipelineIndirectBufferInfoNV-deviceAddress-parameter#
+--     @deviceAddress@ /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' value
+--
+-- -   #VUID-VkComputePipelineIndirectBufferInfoNV-pipelineDeviceAddressCaptureReplay-parameter#
+--     If @pipelineDeviceAddressCaptureReplay@ is not @0@,
+--     @pipelineDeviceAddressCaptureReplay@ /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' value
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.ComputePipeline.ComputePipelineCreateInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_generated_commands_compute VK_NV_device_generated_commands_compute>,
@@ -562,7 +589,6 @@
     poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
     poke ((p `plusPtr` 16 :: Ptr DeviceAddress)) (zero)
     poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (zero)
-    poke ((p `plusPtr` 32 :: Ptr DeviceAddress)) (zero)
     f
 
 instance FromCStruct ComputePipelineIndirectBufferInfoNV where
@@ -602,13 +628,22 @@
 -- 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. 'PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV'
--- /can/ also be used in the @pNext@ chain of
--- 'Vulkan.Core10.Device.DeviceCreateInfo' to selectively enable these
--- features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV', it /must/ add
+-- an instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_generated_commands_compute VK_NV_device_generated_commands_compute>,
@@ -618,19 +653,19 @@
   { -- | #features-deviceGeneratedCompute# @deviceGeneratedCompute@ indicates
     -- whether the implementation supports functionality to generate dispatch
     -- commands and push constants for the compute pipeline on the device. See
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#device-generated-commands Device-Generated Commands>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#device-generated-commands Device-Generated Commands>.
     deviceGeneratedCompute :: Bool
   , -- | #features-deviceGeneratedComputePipelines#
     -- @deviceGeneratedComputePipelines@ indicates whether the implementation
     -- supports functionality to generate commands to bind compute pipelines on
     -- the device. See
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#device-generated-commands Device-Generated Commands>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#device-generated-commands Device-Generated Commands>.
     deviceGeneratedComputePipelines :: Bool
   , -- | #features-deviceGeneratedComputeCaptureReplay#
     -- @deviceGeneratedComputeCaptureReplay@ indicates whether the
     -- implementation supports functionality to capture compute pipeline
     -- address and reuse later for replay in
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#device-generated-commands Device-Generated Commands>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#device-generated-commands Device-Generated Commands>.
     deviceGeneratedComputeCaptureReplay :: Bool
   }
   deriving (Typeable, Eq)
@@ -780,7 +815,7 @@
 --
 -- -   #VUID-VkBindPipelineIndirectCommandNV-deviceGeneratedComputePipelines-09091#
 --     The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-deviceGeneratedComputePipelines ::deviceGeneratedComputePipelines>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-deviceGeneratedComputePipelines ::deviceGeneratedComputePipelines>
 --     feature /must/ be enabled
 --
 -- -   #VUID-VkBindPipelineIndirectCommandNV-None-09092# The referenced
@@ -794,6 +829,12 @@
 -- -   #VUID-VkBindPipelineIndirectCommandNV-None-09094# The referenced
 --     pipeline’s address /must/ have been queried with
 --     'getPipelineIndirectDeviceAddressNV'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkBindPipelineIndirectCommandNV-pipelineAddress-parameter#
+--     @pipelineAddress@ /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' value
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Extensions/VK_NV_device_generated_commands_compute.hs-boot b/src/Vulkan/Extensions/VK_NV_device_generated_commands_compute.hs-boot
--- a/src/Vulkan/Extensions/VK_NV_device_generated_commands_compute.hs-boot
+++ b/src/Vulkan/Extensions/VK_NV_device_generated_commands_compute.hs-boot
@@ -69,7 +69,7 @@
 --
 -- -   'PipelineIndirectDeviceAddressInfoNV'
 --
--- -   Extending 'Vulkan.Core10.Pipeline.ComputePipelineCreateInfo':
+-- -   Extending 'Vulkan.Core10.ComputePipeline.ComputePipelineCreateInfo':
 --
 --     -   'ComputePipelineIndirectBufferInfoNV'
 --
@@ -123,7 +123,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_device_generated_commands_compute Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_NV_device_generated_commands_compute Vulkan Specification>.
 --
 -- This 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_displacement_micromap.hs b/src/Vulkan/Extensions/VK_NV_displacement_micromap.hs
--- a/src/Vulkan/Extensions/VK_NV_displacement_micromap.hs
+++ b/src/Vulkan/Extensions/VK_NV_displacement_micromap.hs
@@ -29,6 +29,12 @@
 --         of provisional header files for enablement and stability
 --         details.__
 --
+-- [__Deprecation State__]
+--
+--     -   /Deprecated/ by
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_cluster_acceleration_structure VK_NV_cluster_acceleration_structure>
+--         extension
+--
 -- [__Contact__]
 --
 --     -   Christoph Kubisch
@@ -108,8 +114,10 @@
 -- -   Extending
 --     'Vulkan.Extensions.VK_KHR_acceleration_structure.BuildAccelerationStructureFlagBitsKHR':
 --
---     -   'Vulkan.Extensions.VK_KHR_acceleration_structure.BUILD_ACCELERATION_STRUCTURE_ALLOW_DISPLACEMENT_MICROMAP_UPDATE_NV'
+--     -   'Vulkan.Extensions.VK_KHR_acceleration_structure.BUILD_ACCELERATION_STRUCTURE_ALLOW_DISPLACEMENT_MICROMAP_UPDATE_BIT_NV'
 --
+--     -   'BUILD_ACCELERATION_STRUCTURE_ALLOW_DISPLACEMENT_MICROMAP_UPDATE_NV'
+--
 -- -   Extending
 --     'Vulkan.Extensions.VK_EXT_opacity_micromap.MicromapTypeEXT':
 --
@@ -132,9 +140,11 @@
 --
 -- (1) What is the status of this extension?
 --
--- -   Provisional and expected to change. The broad structure and encoding
---     format are stable, but there will likely be changes to the
---     structures, enumerant values, and shader interface.
+-- -   Deprecated. The VK_NV_cluster_acceleration_structure extension is
+--     not a one-to-one replacement for this extension but enables similar
+--     performance improvements for high-tessellation geometry and is
+--     considered the preferred direction to improve high-tessellation
+--     geometry performance.
 --
 -- == Version History
 --
@@ -153,11 +163,12 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_displacement_micromap Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_NV_displacement_micromap Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
-module Vulkan.Extensions.VK_NV_displacement_micromap  ( PhysicalDeviceDisplacementMicromapFeaturesNV(..)
+module Vulkan.Extensions.VK_NV_displacement_micromap  ( pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_DISPLACEMENT_MICROMAP_UPDATE_NV
+                                                      , PhysicalDeviceDisplacementMicromapFeaturesNV(..)
                                                       , PhysicalDeviceDisplacementMicromapPropertiesNV(..)
                                                       , AccelerationStructureTrianglesDisplacementMicromapNV(..)
                                                       , DisplacementMicromapFormatNV( DISPLACEMENT_MICROMAP_FORMAT_64_TRIANGLES_64_BYTES_NV
@@ -218,6 +229,8 @@
 import Vulkan.Extensions.Handles (MicromapEXT)
 import Vulkan.Extensions.VK_EXT_opacity_micromap (MicromapUsageEXT)
 import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Extensions.VK_KHR_acceleration_structure (BuildAccelerationStructureFlagsKHR)
+import Vulkan.Extensions.VK_KHR_acceleration_structure (BuildAccelerationStructureFlagBitsKHR(BUILD_ACCELERATION_STRUCTURE_ALLOW_DISPLACEMENT_MICROMAP_UPDATE_BIT_NV))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_DISPLACEMENT_MICROMAP_NV))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_FEATURES_NV))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_PROPERTIES_NV))
@@ -227,6 +240,10 @@
 import Vulkan.Extensions.Handles (MicromapEXT(..))
 import Vulkan.Extensions.VK_EXT_opacity_micromap (MicromapTypeEXT(..))
 import Vulkan.Extensions.VK_EXT_opacity_micromap (MicromapUsageEXT(..))
+-- No documentation found for TopLevel "VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISPLACEMENT_MICROMAP_UPDATE_NV"
+pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_DISPLACEMENT_MICROMAP_UPDATE_NV = BUILD_ACCELERATION_STRUCTURE_ALLOW_DISPLACEMENT_MICROMAP_UPDATE_BIT_NV
+
+
 -- | VkPhysicalDeviceDisplacementMicromapFeaturesNV - Structure describing
 -- the ray tracing displacement micromap features that can be supported by
 -- an implementation
@@ -243,12 +260,22 @@
 -- 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. 'PhysicalDeviceDisplacementMicromapFeaturesNV' /can/ also be
--- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceDisplacementMicromapFeaturesNV', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_displacement_micromap VK_NV_displacement_micromap>,
@@ -309,8 +336,12 @@
 -- it is filled in with each corresponding implementation-dependent
 -- property.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_displacement_micromap VK_NV_displacement_micromap>,
@@ -431,6 +462,12 @@
 --     @micromap@ /must/ be a valid 'Vulkan.Extensions.Handles.MicromapEXT'
 --     handle
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureGeometryTrianglesDataKHR'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_displacement_micromap VK_NV_displacement_micromap>,
@@ -469,7 +506,9 @@
   , -- | @indexType@ is the type of triangle indices used when indexing this
     -- micromap.
     indexType :: IndexType
-  , -- | @indexBuffer@ is the address containing the triangle indices.
+  , -- | @indexBuffer@ is a device or host address of memory containing the
+    -- triangle indices. When @indexType@ is
+    -- 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR' it /must/ be @NULL@.
     indexBuffer :: DeviceOrHostAddressConstKHR
   , -- | @indexStride@ is the byte stride between triangle indices.
     indexStride :: DeviceSize
@@ -555,6 +594,21 @@
 --
 -- = Description
 --
+-- -   'DISPLACEMENT_MICROMAP_FORMAT_64_TRIANGLES_64_BYTES_NV' specifies
+--     that the given micromap format encodes 64 micro-triangles worth of
+--     displacements in 64 bytes as described in
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#displacement-micromap-encoding Displacement Micromap Encoding>.
+--
+-- -   'DISPLACEMENT_MICROMAP_FORMAT_256_TRIANGLES_128_BYTES_NV' specifies
+--     that the given micromap format encodes 256 micro-triangles worth of
+--     displacements in 128 bytes as described in
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#displacement-micromap-encoding Displacement Micromap Encoding>.
+--
+-- -   'DISPLACEMENT_MICROMAP_FORMAT_1024_TRIANGLES_128_BYTES_NV' specifies
+--     that the given micromap format encodes 1024 micro-triangles worth of
+--     displacements in 128 bytes as described in
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#displacement-micromap-encoding Displacement Micromap Encoding>.
+--
 -- For compactness, these values are stored as 16-bit in some structures.
 --
 -- = See Also
@@ -565,22 +619,13 @@
 
 -- Note that the zero instance does not produce a valid value, passing 'zero' to Vulkan will result in an error
 
--- | 'DISPLACEMENT_MICROMAP_FORMAT_64_TRIANGLES_64_BYTES_NV' specifies that
--- the given micromap format encodes 64 micro-triangles worth of
--- displacements in 64 bytes as described in
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#displacement-micromap-encoding Displacement Micromap Encoding>.
+-- No documentation found for Nested "VkDisplacementMicromapFormatNV" "VK_DISPLACEMENT_MICROMAP_FORMAT_64_TRIANGLES_64_BYTES_NV"
 pattern DISPLACEMENT_MICROMAP_FORMAT_64_TRIANGLES_64_BYTES_NV = DisplacementMicromapFormatNV 1
 
--- | 'DISPLACEMENT_MICROMAP_FORMAT_256_TRIANGLES_128_BYTES_NV' specifies that
--- the given micromap format encodes 256 micro-triangles worth of
--- displacements in 128 bytes as described in
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#displacement-micromap-encoding Displacement Micromap Encoding>.
+-- No documentation found for Nested "VkDisplacementMicromapFormatNV" "VK_DISPLACEMENT_MICROMAP_FORMAT_256_TRIANGLES_128_BYTES_NV"
 pattern DISPLACEMENT_MICROMAP_FORMAT_256_TRIANGLES_128_BYTES_NV = DisplacementMicromapFormatNV 2
 
--- | 'DISPLACEMENT_MICROMAP_FORMAT_1024_TRIANGLES_128_BYTES_NV' specifies
--- that the given micromap format encodes 1024 micro-triangles worth of
--- displacements in 128 bytes as described in
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#displacement-micromap-encoding Displacement Micromap Encoding>.
+-- No documentation found for Nested "VkDisplacementMicromapFormatNV" "VK_DISPLACEMENT_MICROMAP_FORMAT_1024_TRIANGLES_128_BYTES_NV"
 pattern DISPLACEMENT_MICROMAP_FORMAT_1024_TRIANGLES_128_BYTES_NV = DisplacementMicromapFormatNV 3
 
 {-# COMPLETE
diff --git a/src/Vulkan/Extensions/VK_NV_displacement_micromap.hs-boot b/src/Vulkan/Extensions/VK_NV_displacement_micromap.hs-boot
--- a/src/Vulkan/Extensions/VK_NV_displacement_micromap.hs-boot
+++ b/src/Vulkan/Extensions/VK_NV_displacement_micromap.hs-boot
@@ -29,6 +29,12 @@
 --         of provisional header files for enablement and stability
 --         details.__
 --
+-- [__Deprecation State__]
+--
+--     -   /Deprecated/ by
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_cluster_acceleration_structure VK_NV_cluster_acceleration_structure>
+--         extension
+--
 -- [__Contact__]
 --
 --     -   Christoph Kubisch
@@ -108,8 +114,10 @@
 -- -   Extending
 --     'Vulkan.Extensions.VK_KHR_acceleration_structure.BuildAccelerationStructureFlagBitsKHR':
 --
---     -   'Vulkan.Extensions.VK_KHR_acceleration_structure.BUILD_ACCELERATION_STRUCTURE_ALLOW_DISPLACEMENT_MICROMAP_UPDATE_NV'
+--     -   'Vulkan.Extensions.VK_KHR_acceleration_structure.BUILD_ACCELERATION_STRUCTURE_ALLOW_DISPLACEMENT_MICROMAP_UPDATE_BIT_NV'
 --
+--     -   'BUILD_ACCELERATION_STRUCTURE_ALLOW_DISPLACEMENT_MICROMAP_UPDATE_NV'
+--
 -- -   Extending
 --     'Vulkan.Extensions.VK_EXT_opacity_micromap.MicromapTypeEXT':
 --
@@ -132,9 +140,11 @@
 --
 -- (1) What is the status of this extension?
 --
--- -   Provisional and expected to change. The broad structure and encoding
---     format are stable, but there will likely be changes to the
---     structures, enumerant values, and shader interface.
+-- -   Deprecated. The VK_NV_cluster_acceleration_structure extension is
+--     not a one-to-one replacement for this extension but enables similar
+--     performance improvements for high-tessellation geometry and is
+--     considered the preferred direction to improve high-tessellation
+--     geometry performance.
 --
 -- == Version History
 --
@@ -153,7 +163,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_displacement_micromap Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_NV_displacement_micromap Vulkan Specification>.
 --
 -- This 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_display_stereo.hs b/src/Vulkan/Extensions/VK_NV_display_stereo.hs
--- a/src/Vulkan/Extensions/VK_NV_display_stereo.hs
+++ b/src/Vulkan/Extensions/VK_NV_display_stereo.hs
@@ -99,7 +99,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_display_stereo Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_NV_display_stereo Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -150,8 +150,12 @@
 -- | VkDisplaySurfaceStereoCreateInfoNV - Structure specifying stereo
 -- parameters of a newly created display plane surface object
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Extensions.VK_KHR_display.DisplaySurfaceCreateInfoKHR'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_display_stereo VK_NV_display_stereo>,
@@ -206,8 +210,12 @@
 -- | VkDisplayModeStereoPropertiesNV - Structure describing the stereo
 -- properties of a display mode
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Extensions.VK_KHR_get_display_properties2.DisplayModeProperties2KHR'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_display_stereo VK_NV_display_stereo>,
@@ -257,6 +265,26 @@
 
 -- | VkDisplaySurfaceStereoTypeNV - 3D Stereo type
 --
+-- = Description
+--
+-- -   'DISPLAY_SURFACE_STEREO_TYPE_NONE_NV' specifies no configuration for
+--     stereo presentation. This is the default behavior if
+--     'DisplaySurfaceStereoCreateInfoNV' is not provided.
+--
+-- -   'DISPLAY_SURFACE_STEREO_TYPE_ONBOARD_DIN_NV' specifies configuration
+--     for glasses that connect via a DIN connector on the back of the
+--     graphics card.
+--
+-- -   'DISPLAY_SURFACE_STEREO_TYPE_HDMI_3D_NV' specifies configuration for
+--     HDMI 3D compatible display devices with their own stereo emitters.
+--     This is also known as HDMI Frame Packed Stereo, where the left and
+--     right eye images are stacked into a single frame with a doubled
+--     pixel clock and refresh rate.
+--
+-- -   'DISPLAY_SURFACE_STEREO_TYPE_INBAND_DISPLAYPORT_NV' specifies
+--     configuration for DisplayPort display devices with in-band stereo
+--     signaling and emitters.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_display_stereo VK_NV_display_stereo>,
@@ -264,26 +292,16 @@
 newtype DisplaySurfaceStereoTypeNV = DisplaySurfaceStereoTypeNV Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'DISPLAY_SURFACE_STEREO_TYPE_NONE_NV' specifies no configuration for
--- stereo presentation. This is the default behavior if
--- 'DisplaySurfaceStereoCreateInfoNV' is not provided.
+-- No documentation found for Nested "VkDisplaySurfaceStereoTypeNV" "VK_DISPLAY_SURFACE_STEREO_TYPE_NONE_NV"
 pattern DISPLAY_SURFACE_STEREO_TYPE_NONE_NV = DisplaySurfaceStereoTypeNV 0
 
--- | 'DISPLAY_SURFACE_STEREO_TYPE_ONBOARD_DIN_NV' specifies configuration for
--- glasses that connect via a DIN connector on the back of the graphics
--- card.
+-- No documentation found for Nested "VkDisplaySurfaceStereoTypeNV" "VK_DISPLAY_SURFACE_STEREO_TYPE_ONBOARD_DIN_NV"
 pattern DISPLAY_SURFACE_STEREO_TYPE_ONBOARD_DIN_NV = DisplaySurfaceStereoTypeNV 1
 
--- | 'DISPLAY_SURFACE_STEREO_TYPE_HDMI_3D_NV' specifies configuration for
--- HDMI 3D compatible display devices with their own stereo emitters. This
--- is also known as HDMI Frame Packed Stereo, where the left and right eye
--- images are stacked into a single frame with a doubled pixel clock and
--- refresh rate.
+-- No documentation found for Nested "VkDisplaySurfaceStereoTypeNV" "VK_DISPLAY_SURFACE_STEREO_TYPE_HDMI_3D_NV"
 pattern DISPLAY_SURFACE_STEREO_TYPE_HDMI_3D_NV = DisplaySurfaceStereoTypeNV 2
 
--- | 'DISPLAY_SURFACE_STEREO_TYPE_INBAND_DISPLAYPORT_NV' specifies
--- configuration for DisplayPort display devices with in-band stereo
--- signaling and emitters.
+-- No documentation found for Nested "VkDisplaySurfaceStereoTypeNV" "VK_DISPLAY_SURFACE_STEREO_TYPE_INBAND_DISPLAYPORT_NV"
 pattern DISPLAY_SURFACE_STEREO_TYPE_INBAND_DISPLAYPORT_NV = DisplaySurfaceStereoTypeNV 3
 
 {-# COMPLETE
diff --git a/src/Vulkan/Extensions/VK_NV_display_stereo.hs-boot b/src/Vulkan/Extensions/VK_NV_display_stereo.hs-boot
--- a/src/Vulkan/Extensions/VK_NV_display_stereo.hs-boot
+++ b/src/Vulkan/Extensions/VK_NV_display_stereo.hs-boot
@@ -99,7 +99,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_display_stereo Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_NV_display_stereo Vulkan Specification>.
 --
 -- This 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_extended_sparse_address_space.hs b/src/Vulkan/Extensions/VK_NV_extended_sparse_address_space.hs
--- a/src/Vulkan/Extensions/VK_NV_extended_sparse_address_space.hs
+++ b/src/Vulkan/Extensions/VK_NV_extended_sparse_address_space.hs
@@ -21,7 +21,9 @@
 --     Not ratified
 --
 -- [__Extension and Version Dependencies__]
---     None
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
 --
 -- [__Contact__]
 --
@@ -92,7 +94,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_extended_sparse_address_space Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_NV_extended_sparse_address_space Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -145,13 +147,22 @@
 -- 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. 'PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV' /can/
--- also be used in the @pNext@ chain of
--- 'Vulkan.Core10.Device.DeviceCreateInfo' to selectively enable these
--- features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_extended_sparse_address_space VK_NV_extended_sparse_address_space>,
@@ -215,8 +226,12 @@
 -- it is filled in with each corresponding implementation-dependent
 -- property.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_extended_sparse_address_space VK_NV_extended_sparse_address_space>,
@@ -228,7 +243,7 @@
   { -- | #limits-extendedSparseAddressSpaceSize# @extendedSparseAddressSpaceSize@
     -- is the total amount of address space available, in bytes, for sparse
     -- memory resources of all usages if the
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedSparseAddressSpace extendedSparseAddressSpace>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-extendedSparseAddressSpace extendedSparseAddressSpace>
     -- feature is enabled. This /must/ be greater than or equal to
     -- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@sparseAddressSpaceSize@,
     -- and the difference in space /must/ only be used with usages allowed
diff --git a/src/Vulkan/Extensions/VK_NV_extended_sparse_address_space.hs-boot b/src/Vulkan/Extensions/VK_NV_extended_sparse_address_space.hs-boot
--- a/src/Vulkan/Extensions/VK_NV_extended_sparse_address_space.hs-boot
+++ b/src/Vulkan/Extensions/VK_NV_extended_sparse_address_space.hs-boot
@@ -21,7 +21,9 @@
 --     Not ratified
 --
 -- [__Extension and Version Dependencies__]
---     None
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
 --
 -- [__Contact__]
 --
@@ -92,7 +94,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_extended_sparse_address_space Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_NV_extended_sparse_address_space Vulkan Specification>.
 --
 -- This 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_compute_queue.hs b/src/Vulkan/Extensions/VK_NV_external_compute_queue.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_NV_external_compute_queue.hs
@@ -0,0 +1,710 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_NV_external_compute_queue - device extension
+--
+-- = VK_NV_external_compute_queue
+--
+-- [__Name String__]
+--     @VK_NV_external_compute_queue@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     557
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Not ratified
+--
+-- [__Extension and Version Dependencies__]
+--     None
+--
+-- [__Contact__]
+--
+--     -   Chris Lentini
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_NV_external_compute_queue] @clentini%0A*Here describe the issue or question you have about the VK_NV_external_compute_queue extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_NV_external_compute_queue.adoc VK_NV_external_compute_queue>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2025-03-24
+--
+-- [__Contributors__]
+--
+--     -   Chris Lentini, NVIDIA
+--
+--     -   Eric Werness, NVIDIA
+--
+--     -   James Jones, NVIDIA
+--
+--     -   Jeff Juliano, NVIDIA
+--
+--     -   Liam Middlebrook, NVIDIA
+--
+--     -   Lionel Duc, NVIDIA
+--
+-- == Description
+--
+-- This extension gives applications the ability to join compatible
+-- external compute APIs to a 'Vulkan.Core10.Handles.Device'. In this way,
+-- the extension allows an application to achieve simultaneous execution
+-- between work submitted from these compatible external APIs and work that
+-- has been submitted through the Vulkan API.
+--
+-- At device creation time, an application /must/ supply a
+-- 'ExternalComputeQueueDeviceCreateInfoNV'. This communicates to the
+-- implementation the maximum number of external queues that the
+-- application /can/ create at once. This information /may/ be used by the
+-- implementation to aid in decisions made during device creation.
+--
+-- After device creation, the function 'createExternalComputeQueueNV' is
+-- used by an application to create a new
+-- 'Vulkan.Extensions.Handles.ExternalComputeQueueNV' object. The
+-- 'Vulkan.Extensions.Handles.ExternalComputeQueueNV' object holds
+-- information and reserves resources necessary for a compatible external
+-- API to be able to join a 'Vulkan.Core10.Handles.Device'. This
+-- information can be queried through the 'getExternalComputeQueueDataNV'
+-- function, returning an opaque blob of data which can be passed to
+-- compatible external APIs. The application /must/ finally call
+-- 'destroyExternalComputeQueueNV' when it is done in order to release the
+-- reserved resources.
+--
+-- This extension introduces a new properties structure,
+-- 'PhysicalDeviceExternalComputeQueuePropertiesNV', which can be queried
+-- through
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceProperties2'.
+-- The structure provides information on functional limits to the extension
+-- as well as a way of querying the size of the application allocated
+-- memory which /must/ be passed to the 'getExternalComputeQueueDataNV'
+-- function.
+--
+-- When creating a 'Vulkan.Extensions.Handles.ExternalComputeQueueNV'
+-- through 'createExternalComputeQueueNV', the
+-- 'ExternalComputeQueueCreateInfoNV' structure requires an application to
+-- supply a 'Vulkan.Core10.Handles.Queue' to aid in external compute queue
+-- creation. The supplied 'Vulkan.Core10.Handles.Queue' is a strong
+-- scheduling hint about which queue it expects to submit graphics
+-- workloads to and with which it expects simultaneous execution of compute
+-- workloads submitted through the external API.
+--
+-- == New Object Types
+--
+-- -   'Vulkan.Extensions.Handles.ExternalComputeQueueNV'
+--
+-- == New Commands
+--
+-- -   'createExternalComputeQueueNV'
+--
+-- -   'destroyExternalComputeQueueNV'
+--
+-- -   'getExternalComputeQueueDataNV'
+--
+-- == New Structures
+--
+-- -   'ExternalComputeQueueCreateInfoNV'
+--
+-- -   'ExternalComputeQueueDataParamsNV'
+--
+-- -   Extending 'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'ExternalComputeQueueDeviceCreateInfoNV'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDeviceExternalComputeQueuePropertiesNV'
+--
+-- == New Enum Constants
+--
+-- -   'NV_EXTERNAL_COMPUTE_QUEUE_EXTENSION_NAME'
+--
+-- -   'NV_EXTERNAL_COMPUTE_QUEUE_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.ObjectType.ObjectType':
+--
+--     -   'Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_EXTERNAL_COMPUTE_QUEUE_NV'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_CREATE_INFO_NV'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_DATA_PARAMS_NV'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_DEVICE_CREATE_INFO_NV'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_COMPUTE_QUEUE_PROPERTIES_NV'
+--
+-- While the external queue is now a part of a
+-- 'Vulkan.Core10.Handles.Device', idling the device through
+-- 'Vulkan.Core10.Queue.deviceWaitIdle' does not wait for the external
+-- queue. Draining the work on an external queue /must/ be done through its
+-- own external API. External queues /must/ be idled before destroying the
+-- associated 'Vulkan.Core10.Handles.Device'.
+--
+-- In general, synchronization and resource sharing between the external
+-- API and Vulkan must still be accomplished via existing cross-API interop
+-- mechanisms.
+--
+-- == Version History
+--
+-- -   Revision 1, 2024-05-20 (Chris Lentini)
+--
+--     -   Internal revisions
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_NV_external_compute_queue Vulkan Specification>.
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_NV_external_compute_queue  ( createExternalComputeQueueNV
+                                                       , withExternalComputeQueueNV
+                                                       , destroyExternalComputeQueueNV
+                                                       , getExternalComputeQueueDataNV
+                                                       , ExternalComputeQueueDeviceCreateInfoNV(..)
+                                                       , ExternalComputeQueueCreateInfoNV(..)
+                                                       , ExternalComputeQueueDataParamsNV(..)
+                                                       , PhysicalDeviceExternalComputeQueuePropertiesNV(..)
+                                                       , NV_EXTERNAL_COMPUTE_QUEUE_SPEC_VERSION
+                                                       , pattern NV_EXTERNAL_COMPUTE_QUEUE_SPEC_VERSION
+                                                       , NV_EXTERNAL_COMPUTE_QUEUE_EXTENSION_NAME
+                                                       , pattern NV_EXTERNAL_COMPUTE_QUEUE_EXTENSION_NAME
+                                                       , ExternalComputeQueueNV(..)
+                                                       ) 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.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 Vulkan.NamedType ((:::))
+import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)
+import Vulkan.Core10.Handles (Device)
+import Vulkan.Core10.Handles (Device(..))
+import Vulkan.Core10.Handles (Device(Device))
+import Vulkan.Dynamic (DeviceCmds(pVkCreateExternalComputeQueueNV))
+import Vulkan.Dynamic (DeviceCmds(pVkDestroyExternalComputeQueueNV))
+import Vulkan.Dynamic (DeviceCmds(pVkGetExternalComputeQueueDataNV))
+import Vulkan.Core10.Handles (Device_T)
+import Vulkan.Extensions.Handles (ExternalComputeQueueNV)
+import Vulkan.Extensions.Handles (ExternalComputeQueueNV(..))
+import Vulkan.Extensions.Handles (ExternalComputeQueueNV(ExternalComputeQueueNV))
+import Vulkan.Extensions.Handles (ExternalComputeQueueNV_T)
+import Vulkan.Core10.Handles (Queue_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_EXTERNAL_COMPUTE_QUEUE_CREATE_INFO_NV))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_DATA_PARAMS_NV))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_DEVICE_CREATE_INFO_NV))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_COMPUTE_QUEUE_PROPERTIES_NV))
+import Vulkan.Core10.Enums.Result (Result(SUCCESS))
+import Vulkan.Extensions.Handles (ExternalComputeQueueNV(..))
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCreateExternalComputeQueueNV
+  :: FunPtr (Ptr Device_T -> Ptr ExternalComputeQueueCreateInfoNV -> Ptr AllocationCallbacks -> Ptr (Ptr ExternalComputeQueueNV_T) -> IO Result) -> Ptr Device_T -> Ptr ExternalComputeQueueCreateInfoNV -> Ptr AllocationCallbacks -> Ptr (Ptr ExternalComputeQueueNV_T) -> IO Result
+
+-- | vkCreateExternalComputeQueueNV - Create an external compute queue for
+-- use by a compatible external API.
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCreateExternalComputeQueueNV-device-parameter# @device@
+--     /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkCreateExternalComputeQueueNV-pCreateInfo-parameter#
+--     @pCreateInfo@ /must/ be a valid pointer to a valid
+--     'ExternalComputeQueueCreateInfoNV' structure
+--
+-- -   #VUID-vkCreateExternalComputeQueueNV-pAllocator-parameter# If
+--     @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid pointer
+--     to a valid 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'
+--     structure
+--
+-- -   #VUID-vkCreateExternalComputeQueueNV-pExternalQueue-parameter#
+--     @pExternalQueue@ /must/ be a valid pointer to a
+--     'Vulkan.Extensions.Handles.ExternalComputeQueueNV' handle
+--
+-- -   #VUID-vkCreateExternalComputeQueueNV-device-queuecount# The device
+--     /must/ have been created with at least @1@ queue
+--
+-- == 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_TOO_MANY_OBJECTS'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_external_compute_queue VK_NV_external_compute_queue>,
+-- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',
+-- 'Vulkan.Core10.Handles.Device', 'ExternalComputeQueueCreateInfoNV',
+-- 'Vulkan.Extensions.Handles.ExternalComputeQueueNV'
+createExternalComputeQueueNV :: forall io
+                              . (MonadIO io)
+                             => -- | @device@ is the VkDevice that the external queue will be a part of.
+                                Device
+                             -> -- | @pCreateInfo@ is a pointer to a 'ExternalComputeQueueCreateInfoNV'
+                                -- structure specifying configuration info for creating the external queue.
+                                ExternalComputeQueueCreateInfoNV
+                             -> -- | @pAllocator@ controls host memory allocation as described in the
+                                -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
+                                -- chapter.
+                                ("allocator" ::: Maybe AllocationCallbacks)
+                             -> io (("externalQueue" ::: ExternalComputeQueueNV))
+createExternalComputeQueueNV device
+                               createInfo
+                               allocator = liftIO . evalContT $ do
+  let cmds = case device of Device{deviceCmds} -> deviceCmds
+  let vkCreateExternalComputeQueueNVPtr = pVkCreateExternalComputeQueueNV cmds
+  lift $ unless (vkCreateExternalComputeQueueNVPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCreateExternalComputeQueueNV is null" Nothing Nothing
+  let vkCreateExternalComputeQueueNV' = mkVkCreateExternalComputeQueueNV vkCreateExternalComputeQueueNVPtr
+  pCreateInfo <- ContT $ withCStruct (createInfo)
+  pAllocator <- case (allocator) of
+    Nothing -> pure nullPtr
+    Just j -> ContT $ withCStruct (j)
+  pPExternalQueue <- ContT $ bracket (callocBytes @(Ptr ExternalComputeQueueNV_T) 8) free
+  r <- lift $ traceAroundEvent "vkCreateExternalComputeQueueNV" (vkCreateExternalComputeQueueNV'
+                                                                   (deviceHandle (device))
+                                                                   pCreateInfo
+                                                                   pAllocator
+                                                                   (pPExternalQueue))
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+  pExternalQueue <- lift $ peek @(Ptr ExternalComputeQueueNV_T) pPExternalQueue
+  pure $ (((\h -> ExternalComputeQueueNV h cmds ) pExternalQueue))
+
+-- | A convenience wrapper to make a compatible pair of calls to
+-- 'createExternalComputeQueueNV' and 'destroyExternalComputeQueueNV'
+--
+-- To ensure that 'destroyExternalComputeQueueNV' 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.
+--
+withExternalComputeQueueNV :: forall io r . MonadIO io => Device -> ExternalComputeQueueCreateInfoNV -> Maybe AllocationCallbacks -> (io ExternalComputeQueueNV -> (ExternalComputeQueueNV -> io ()) -> r) -> r
+withExternalComputeQueueNV device pCreateInfo pAllocator b =
+  b (createExternalComputeQueueNV device pCreateInfo pAllocator)
+    (\(o0) -> destroyExternalComputeQueueNV device o0 pAllocator)
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkDestroyExternalComputeQueueNV
+  :: FunPtr (Ptr Device_T -> Ptr ExternalComputeQueueNV_T -> Ptr AllocationCallbacks -> IO ()) -> Ptr Device_T -> Ptr ExternalComputeQueueNV_T -> Ptr AllocationCallbacks -> IO ()
+
+-- | vkDestroyExternalComputeQueueNV - Destroys an external queue.
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkDestroyExternalComputeQueueNV-device-parameter# @device@
+--     /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkDestroyExternalComputeQueueNV-externalQueue-parameter#
+--     @externalQueue@ /must/ be a valid
+--     'Vulkan.Extensions.Handles.ExternalComputeQueueNV' handle
+--
+-- -   #VUID-vkDestroyExternalComputeQueueNV-pAllocator-parameter# If
+--     @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid pointer
+--     to a valid 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'
+--     structure
+--
+-- -   #VUID-vkDestroyExternalComputeQueueNV-externalQueue-parent#
+--     @externalQueue@ /must/ have been created, allocated, or retrieved
+--     from @device@
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_external_compute_queue VK_NV_external_compute_queue>,
+-- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',
+-- 'Vulkan.Core10.Handles.Device',
+-- 'Vulkan.Extensions.Handles.ExternalComputeQueueNV'
+destroyExternalComputeQueueNV :: forall io
+                               . (MonadIO io)
+                              => -- | @device@ is the logical device that destroys the external queue.
+                                 Device
+                              -> -- | @externalQueue@ is the
+                                 -- 'Vulkan.Extensions.Handles.ExternalComputeQueueNV' to destroy.
+                                 ("externalQueue" ::: ExternalComputeQueueNV)
+                              -> -- | @pAllocator@ controls host memory allocation as described in the
+                                 -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
+                                 -- chapter.
+                                 ("allocator" ::: Maybe AllocationCallbacks)
+                              -> io ()
+destroyExternalComputeQueueNV device
+                                externalQueue
+                                allocator = liftIO . evalContT $ do
+  let vkDestroyExternalComputeQueueNVPtr = pVkDestroyExternalComputeQueueNV (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkDestroyExternalComputeQueueNVPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkDestroyExternalComputeQueueNV is null" Nothing Nothing
+  let vkDestroyExternalComputeQueueNV' = mkVkDestroyExternalComputeQueueNV vkDestroyExternalComputeQueueNVPtr
+  pAllocator <- case (allocator) of
+    Nothing -> pure nullPtr
+    Just j -> ContT $ withCStruct (j)
+  lift $ traceAroundEvent "vkDestroyExternalComputeQueueNV" (vkDestroyExternalComputeQueueNV'
+                                                               (deviceHandle (device))
+                                                               (externalComputeQueueNVHandle (externalQueue))
+                                                               pAllocator)
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetExternalComputeQueueDataNV
+  :: FunPtr (Ptr ExternalComputeQueueNV_T -> Ptr ExternalComputeQueueDataParamsNV -> Ptr () -> IO ()) -> Ptr ExternalComputeQueueNV_T -> Ptr ExternalComputeQueueDataParamsNV -> Ptr () -> IO ()
+
+-- | vkGetExternalComputeQueueDataNV - Retrieves data necessary for
+-- compatible external API initialization
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_external_compute_queue VK_NV_external_compute_queue>,
+-- 'ExternalComputeQueueDataParamsNV',
+-- 'Vulkan.Extensions.Handles.ExternalComputeQueueNV'
+getExternalComputeQueueDataNV :: forall io
+                               . (MonadIO io)
+                              => -- | @externalQueue@ is the
+                                 -- 'Vulkan.Extensions.Handles.ExternalComputeQueueNV' to query the data
+                                 -- for.
+                                 --
+                                 -- #VUID-vkGetExternalComputeQueueDataNV-externalQueue-parameter#
+                                 -- @externalQueue@ /must/ be a valid
+                                 -- 'Vulkan.Extensions.Handles.ExternalComputeQueueNV' handle
+                                 ("externalQueue" ::: ExternalComputeQueueNV)
+                              -> -- | @pData@ is a pointer to application-allocated memory in which the
+                                 -- requested data will be returned.
+                                 --
+                                 -- #VUID-vkGetExternalComputeQueueDataNV-pData-08134# @pData@ /must/ be at
+                                 -- least the size specified by the externalDataSize field in the
+                                 -- 'PhysicalDeviceExternalComputeQueuePropertiesNV' structure
+                                 --
+                                 -- #VUID-vkGetExternalComputeQueueDataNV-pData-parameter# @pData@ /must/ be
+                                 -- a pointer value
+                                 ("data" ::: Ptr ())
+                              -> io (ExternalComputeQueueDataParamsNV)
+getExternalComputeQueueDataNV externalQueue data' = liftIO . evalContT $ do
+  let vkGetExternalComputeQueueDataNVPtr = pVkGetExternalComputeQueueDataNV (case externalQueue of ExternalComputeQueueNV{deviceCmds} -> deviceCmds)
+  lift $ unless (vkGetExternalComputeQueueDataNVPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetExternalComputeQueueDataNV is null" Nothing Nothing
+  let vkGetExternalComputeQueueDataNV' = mkVkGetExternalComputeQueueDataNV vkGetExternalComputeQueueDataNVPtr
+  pParams <- ContT (withZeroCStruct @ExternalComputeQueueDataParamsNV)
+  lift $ traceAroundEvent "vkGetExternalComputeQueueDataNV" (vkGetExternalComputeQueueDataNV'
+                                                               (externalComputeQueueNVHandle (externalQueue))
+                                                               (pParams)
+                                                               (data'))
+  params <- lift $ peekCStruct @ExternalComputeQueueDataParamsNV pParams
+  pure $ (params)
+
+
+-- | VkExternalComputeQueueDeviceCreateInfoNV - Structure specifying
+-- information about external compute queues relevant to device creation
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_external_compute_queue VK_NV_external_compute_queue>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data ExternalComputeQueueDeviceCreateInfoNV = ExternalComputeQueueDeviceCreateInfoNV
+  { -- | @reservedExternalQueues@ is the maximum number of external queues an
+    -- application /can/ create at once. This /must/ be less than or equal to
+    -- the @maxExternalQueues@ value reported by
+    -- 'PhysicalDeviceExternalComputeQueuePropertiesNV'
+    reservedExternalQueues :: Word32 }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (ExternalComputeQueueDeviceCreateInfoNV)
+#endif
+deriving instance Show ExternalComputeQueueDeviceCreateInfoNV
+
+instance ToCStruct ExternalComputeQueueDeviceCreateInfoNV where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p ExternalComputeQueueDeviceCreateInfoNV{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_DEVICE_CREATE_INFO_NV)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (reservedExternalQueues)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_DEVICE_CREATE_INFO_NV)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct ExternalComputeQueueDeviceCreateInfoNV where
+  peekCStruct p = do
+    reservedExternalQueues <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    pure $ ExternalComputeQueueDeviceCreateInfoNV
+             reservedExternalQueues
+
+instance Storable ExternalComputeQueueDeviceCreateInfoNV where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero ExternalComputeQueueDeviceCreateInfoNV where
+  zero = ExternalComputeQueueDeviceCreateInfoNV
+           zero
+
+
+-- | VkExternalComputeQueueCreateInfoNV - Structure specifying configuration
+-- parameters for external compute queue creation
+--
+-- = Description
+--
+-- When creating a 'Vulkan.Extensions.Handles.ExternalComputeQueueNV', the
+-- @preferredQueue@ field is a strong scheduling hint as to which
+-- 'Vulkan.Core10.Handles.Queue' Vulkan graphics workloads will be
+-- submitted to with the expectation that execution will overlap with
+-- execution of work submitted by the external API.
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_external_compute_queue VK_NV_external_compute_queue>,
+-- 'Vulkan.Core10.Handles.Queue',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'createExternalComputeQueueNV'
+data ExternalComputeQueueCreateInfoNV = ExternalComputeQueueCreateInfoNV
+  { -- | @preferredQueue@ is a 'Vulkan.Core10.Handles.Queue' supporting graphics
+    -- commands.
+    --
+    -- #VUID-VkExternalComputeQueueCreateInfoNV-preferredQueue-parameter#
+    -- @preferredQueue@ /must/ be a valid 'Vulkan.Core10.Handles.Queue' handle
+    preferredQueue :: Ptr Queue_T }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (ExternalComputeQueueCreateInfoNV)
+#endif
+deriving instance Show ExternalComputeQueueCreateInfoNV
+
+instance ToCStruct ExternalComputeQueueCreateInfoNV where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p ExternalComputeQueueCreateInfoNV{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_CREATE_INFO_NV)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr (Ptr Queue_T))) (preferredQueue)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_CREATE_INFO_NV)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr (Ptr Queue_T))) (zero)
+    f
+
+instance FromCStruct ExternalComputeQueueCreateInfoNV where
+  peekCStruct p = do
+    preferredQueue <- peek @(Ptr Queue_T) ((p `plusPtr` 16 :: Ptr (Ptr Queue_T)))
+    pure $ ExternalComputeQueueCreateInfoNV
+             preferredQueue
+
+instance Storable ExternalComputeQueueCreateInfoNV where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero ExternalComputeQueueCreateInfoNV where
+  zero = ExternalComputeQueueCreateInfoNV
+           zero
+
+
+-- | VkExternalComputeQueueDataParamsNV - Structure specifying parameters for
+-- implementation-specific data retrieval from the external compute queue
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_external_compute_queue VK_NV_external_compute_queue>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'getExternalComputeQueueDataNV'
+data ExternalComputeQueueDataParamsNV = ExternalComputeQueueDataParamsNV
+  { -- | @deviceIndex@ is the index of the device within a device group that the
+    -- data is being queried for. This is ignored if device groups are not
+    -- utilized.
+    deviceIndex :: Word32 }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (ExternalComputeQueueDataParamsNV)
+#endif
+deriving instance Show ExternalComputeQueueDataParamsNV
+
+instance ToCStruct ExternalComputeQueueDataParamsNV where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p ExternalComputeQueueDataParamsNV{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_DATA_PARAMS_NV)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (deviceIndex)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_DATA_PARAMS_NV)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct ExternalComputeQueueDataParamsNV where
+  peekCStruct p = do
+    deviceIndex <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    pure $ ExternalComputeQueueDataParamsNV
+             deviceIndex
+
+instance Storable ExternalComputeQueueDataParamsNV where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero ExternalComputeQueueDataParamsNV where
+  zero = ExternalComputeQueueDataParamsNV
+           zero
+
+
+-- | VkPhysicalDeviceExternalComputeQueuePropertiesNV - Structure specifying
+-- hardware specific information and limits for
+-- VK_NV_external_compute_queue functionality
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_external_compute_queue VK_NV_external_compute_queue>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceExternalComputeQueuePropertiesNV = PhysicalDeviceExternalComputeQueuePropertiesNV
+  { -- | @externalDataSize@ is the minimum size of the memory allocation that
+    -- applications /can/ pass to 'getExternalComputeQueueDataNV'.
+    externalDataSize :: Word32
+  , -- | @maxExternalQueues@ is the maximum number of external queues that an
+    -- application can create.
+    maxExternalQueues :: Word32
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceExternalComputeQueuePropertiesNV)
+#endif
+deriving instance Show PhysicalDeviceExternalComputeQueuePropertiesNV
+
+instance ToCStruct PhysicalDeviceExternalComputeQueuePropertiesNV where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceExternalComputeQueuePropertiesNV{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_COMPUTE_QUEUE_PROPERTIES_NV)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (externalDataSize)
+    poke ((p `plusPtr` 20 :: Ptr Word32)) (maxExternalQueues)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_COMPUTE_QUEUE_PROPERTIES_NV)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct PhysicalDeviceExternalComputeQueuePropertiesNV where
+  peekCStruct p = do
+    externalDataSize <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    maxExternalQueues <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
+    pure $ PhysicalDeviceExternalComputeQueuePropertiesNV
+             externalDataSize maxExternalQueues
+
+instance Storable PhysicalDeviceExternalComputeQueuePropertiesNV where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceExternalComputeQueuePropertiesNV where
+  zero = PhysicalDeviceExternalComputeQueuePropertiesNV
+           zero
+           zero
+
+
+type NV_EXTERNAL_COMPUTE_QUEUE_SPEC_VERSION = 1
+
+-- No documentation found for TopLevel "VK_NV_EXTERNAL_COMPUTE_QUEUE_SPEC_VERSION"
+pattern NV_EXTERNAL_COMPUTE_QUEUE_SPEC_VERSION :: forall a . Integral a => a
+pattern NV_EXTERNAL_COMPUTE_QUEUE_SPEC_VERSION = 1
+
+
+type NV_EXTERNAL_COMPUTE_QUEUE_EXTENSION_NAME = "VK_NV_external_compute_queue"
+
+-- No documentation found for TopLevel "VK_NV_EXTERNAL_COMPUTE_QUEUE_EXTENSION_NAME"
+pattern NV_EXTERNAL_COMPUTE_QUEUE_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern NV_EXTERNAL_COMPUTE_QUEUE_EXTENSION_NAME = "VK_NV_external_compute_queue"
+
diff --git a/src/Vulkan/Extensions/VK_NV_external_compute_queue.hs-boot b/src/Vulkan/Extensions/VK_NV_external_compute_queue.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_NV_external_compute_queue.hs-boot
@@ -0,0 +1,212 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_NV_external_compute_queue - device extension
+--
+-- = VK_NV_external_compute_queue
+--
+-- [__Name String__]
+--     @VK_NV_external_compute_queue@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     557
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Not ratified
+--
+-- [__Extension and Version Dependencies__]
+--     None
+--
+-- [__Contact__]
+--
+--     -   Chris Lentini
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_NV_external_compute_queue] @clentini%0A*Here describe the issue or question you have about the VK_NV_external_compute_queue extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_NV_external_compute_queue.adoc VK_NV_external_compute_queue>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2025-03-24
+--
+-- [__Contributors__]
+--
+--     -   Chris Lentini, NVIDIA
+--
+--     -   Eric Werness, NVIDIA
+--
+--     -   James Jones, NVIDIA
+--
+--     -   Jeff Juliano, NVIDIA
+--
+--     -   Liam Middlebrook, NVIDIA
+--
+--     -   Lionel Duc, NVIDIA
+--
+-- == Description
+--
+-- This extension gives applications the ability to join compatible
+-- external compute APIs to a 'Vulkan.Core10.Handles.Device'. In this way,
+-- the extension allows an application to achieve simultaneous execution
+-- between work submitted from these compatible external APIs and work that
+-- has been submitted through the Vulkan API.
+--
+-- At device creation time, an application /must/ supply a
+-- 'ExternalComputeQueueDeviceCreateInfoNV'. This communicates to the
+-- implementation the maximum number of external queues that the
+-- application /can/ create at once. This information /may/ be used by the
+-- implementation to aid in decisions made during device creation.
+--
+-- After device creation, the function 'createExternalComputeQueueNV' is
+-- used by an application to create a new
+-- 'Vulkan.Extensions.Handles.ExternalComputeQueueNV' object. The
+-- 'Vulkan.Extensions.Handles.ExternalComputeQueueNV' object holds
+-- information and reserves resources necessary for a compatible external
+-- API to be able to join a 'Vulkan.Core10.Handles.Device'. This
+-- information can be queried through the 'getExternalComputeQueueDataNV'
+-- function, returning an opaque blob of data which can be passed to
+-- compatible external APIs. The application /must/ finally call
+-- 'destroyExternalComputeQueueNV' when it is done in order to release the
+-- reserved resources.
+--
+-- This extension introduces a new properties structure,
+-- 'PhysicalDeviceExternalComputeQueuePropertiesNV', which can be queried
+-- through
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceProperties2'.
+-- The structure provides information on functional limits to the extension
+-- as well as a way of querying the size of the application allocated
+-- memory which /must/ be passed to the 'getExternalComputeQueueDataNV'
+-- function.
+--
+-- When creating a 'Vulkan.Extensions.Handles.ExternalComputeQueueNV'
+-- through 'createExternalComputeQueueNV', the
+-- 'ExternalComputeQueueCreateInfoNV' structure requires an application to
+-- supply a 'Vulkan.Core10.Handles.Queue' to aid in external compute queue
+-- creation. The supplied 'Vulkan.Core10.Handles.Queue' is a strong
+-- scheduling hint about which queue it expects to submit graphics
+-- workloads to and with which it expects simultaneous execution of compute
+-- workloads submitted through the external API.
+--
+-- == New Object Types
+--
+-- -   'Vulkan.Extensions.Handles.ExternalComputeQueueNV'
+--
+-- == New Commands
+--
+-- -   'createExternalComputeQueueNV'
+--
+-- -   'destroyExternalComputeQueueNV'
+--
+-- -   'getExternalComputeQueueDataNV'
+--
+-- == New Structures
+--
+-- -   'ExternalComputeQueueCreateInfoNV'
+--
+-- -   'ExternalComputeQueueDataParamsNV'
+--
+-- -   Extending 'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'ExternalComputeQueueDeviceCreateInfoNV'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDeviceExternalComputeQueuePropertiesNV'
+--
+-- == New Enum Constants
+--
+-- -   'NV_EXTERNAL_COMPUTE_QUEUE_EXTENSION_NAME'
+--
+-- -   'NV_EXTERNAL_COMPUTE_QUEUE_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.ObjectType.ObjectType':
+--
+--     -   'Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_EXTERNAL_COMPUTE_QUEUE_NV'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_CREATE_INFO_NV'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_DATA_PARAMS_NV'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_DEVICE_CREATE_INFO_NV'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_COMPUTE_QUEUE_PROPERTIES_NV'
+--
+-- While the external queue is now a part of a
+-- 'Vulkan.Core10.Handles.Device', idling the device through
+-- 'Vulkan.Core10.Queue.deviceWaitIdle' does not wait for the external
+-- queue. Draining the work on an external queue /must/ be done through its
+-- own external API. External queues /must/ be idled before destroying the
+-- associated 'Vulkan.Core10.Handles.Device'.
+--
+-- In general, synchronization and resource sharing between the external
+-- API and Vulkan must still be accomplished via existing cross-API interop
+-- mechanisms.
+--
+-- == Version History
+--
+-- -   Revision 1, 2024-05-20 (Chris Lentini)
+--
+--     -   Internal revisions
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_NV_external_compute_queue Vulkan Specification>.
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_NV_external_compute_queue  ( ExternalComputeQueueCreateInfoNV
+                                                       , ExternalComputeQueueDataParamsNV
+                                                       , ExternalComputeQueueDeviceCreateInfoNV
+                                                       , PhysicalDeviceExternalComputeQueuePropertiesNV
+                                                       ) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data ExternalComputeQueueCreateInfoNV
+
+instance ToCStruct ExternalComputeQueueCreateInfoNV
+instance Show ExternalComputeQueueCreateInfoNV
+
+instance FromCStruct ExternalComputeQueueCreateInfoNV
+
+
+data ExternalComputeQueueDataParamsNV
+
+instance ToCStruct ExternalComputeQueueDataParamsNV
+instance Show ExternalComputeQueueDataParamsNV
+
+instance FromCStruct ExternalComputeQueueDataParamsNV
+
+
+data ExternalComputeQueueDeviceCreateInfoNV
+
+instance ToCStruct ExternalComputeQueueDeviceCreateInfoNV
+instance Show ExternalComputeQueueDeviceCreateInfoNV
+
+instance FromCStruct ExternalComputeQueueDeviceCreateInfoNV
+
+
+data PhysicalDeviceExternalComputeQueuePropertiesNV
+
+instance ToCStruct PhysicalDeviceExternalComputeQueuePropertiesNV
+instance Show PhysicalDeviceExternalComputeQueuePropertiesNV
+
+instance FromCStruct PhysicalDeviceExternalComputeQueuePropertiesNV
+
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
@@ -87,7 +87,7 @@
 --
 -- 1) If memory objects are shared between processes and APIs, is this
 -- considered aliasing according to the rules outlined in the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-memory-aliasing Memory Aliasing>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-memory-aliasing Memory Aliasing>
 -- section?
 --
 -- __RESOLVED__: Yes, but strict exceptions to the rules are added to allow
@@ -132,7 +132,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_external_memory Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -172,8 +172,12 @@
 -- | VkExternalMemoryImageCreateInfoNV - Specify that an image may be backed
 -- by external memory
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.Image.ImageCreateInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_external_memory VK_NV_external_memory>,
@@ -229,7 +233,11 @@
 -- | VkExportMemoryAllocateInfoNV - Specify memory handle types that may be
 -- exported
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.Memory.MemoryAllocateInfo'
 --
 -- = See Also
 --
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
@@ -87,7 +87,7 @@
 --
 -- 1) If memory objects are shared between processes and APIs, is this
 -- considered aliasing according to the rules outlined in the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-memory-aliasing Memory Aliasing>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-memory-aliasing Memory Aliasing>
 -- section?
 --
 -- __RESOLVED__: Yes, but strict exceptions to the rules are added to allow
@@ -132,7 +132,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_external_memory Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -103,8 +103,8 @@
 -- and require specifying the image when allocating or importing the memory
 -- object.
 --
--- 2) Does the 'ExternalImageFormatPropertiesNV' struct need to include a
--- list of memory type bits that support the given handle type?
+-- 2) Does the 'ExternalImageFormatPropertiesNV' structure need to include
+-- a list of memory type bits that support the given handle type?
 --
 -- __RESOLVED__: No. The memory types that do not support the handle types
 -- will simply be filtered out of the results returned by
@@ -133,7 +133,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_external_memory_capabilities Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -246,12 +246,16 @@
 --
 -- [<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_FORMAT_NOT_SUPPORTED'
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_FORMAT_NOT_SUPPORTED'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_external_memory_capabilities VK_NV_external_memory_capabilities>,
@@ -433,6 +437,25 @@
 -- | VkExternalMemoryHandleTypeFlagBitsNV - Bitmask specifying external
 -- memory handle types
 --
+-- = Description
+--
+-- -   'EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV' specifies a
+--     handle to memory returned by
+--     'Vulkan.Extensions.VK_NV_external_memory_win32.getMemoryWin32HandleNV'.
+--
+-- -   'EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV' specifies a handle
+--     to memory returned by
+--     'Vulkan.Extensions.VK_NV_external_memory_win32.getMemoryWin32HandleNV',
+--     or one duplicated from such a handle using @DuplicateHandle()@.
+--
+-- -   'EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV' specifies a valid
+--     NT handle to memory returned by
+--     @IDXGIResource1::CreateSharedHandle@, or a handle duplicated from
+--     such a handle using @DuplicateHandle()@.
+--
+-- -   'EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV' specifies a
+--     handle to memory returned by @IDXGIResource::GetSharedHandle()@.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_external_memory_capabilities VK_NV_external_memory_capabilities>,
@@ -440,24 +463,16 @@
 newtype ExternalMemoryHandleTypeFlagBitsNV = ExternalMemoryHandleTypeFlagBitsNV Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV' specifies a handle to
--- memory returned by
--- 'Vulkan.Extensions.VK_NV_external_memory_win32.getMemoryWin32HandleNV',
--- or one duplicated from such a handle using @DuplicateHandle()@.
+-- No documentation found for Nested "VkExternalMemoryHandleTypeFlagBitsNV" "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV"
 pattern EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV = ExternalMemoryHandleTypeFlagBitsNV 0x00000001
 
--- | 'EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV' specifies a handle
--- to memory returned by
--- 'Vulkan.Extensions.VK_NV_external_memory_win32.getMemoryWin32HandleNV'.
+-- No documentation found for Nested "VkExternalMemoryHandleTypeFlagBitsNV" "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV"
 pattern EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV = ExternalMemoryHandleTypeFlagBitsNV 0x00000002
 
--- | 'EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV' specifies a valid NT
--- handle to memory returned by @IDXGIResource1::CreateSharedHandle@, or a
--- handle duplicated from such a handle using @DuplicateHandle()@.
+-- No documentation found for Nested "VkExternalMemoryHandleTypeFlagBitsNV" "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV"
 pattern EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV = ExternalMemoryHandleTypeFlagBitsNV 0x00000004
 
--- | 'EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV' specifies a handle
--- to memory returned by @IDXGIResource::GetSharedHandle()@.
+-- No documentation found for Nested "VkExternalMemoryHandleTypeFlagBitsNV" "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV"
 pattern EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV = ExternalMemoryHandleTypeFlagBitsNV 0x00000008
 
 conNameExternalMemoryHandleTypeFlagBitsNV :: String
@@ -508,6 +523,18 @@
 -- | VkExternalMemoryFeatureFlagBitsNV - Bitmask specifying external memory
 -- features
 --
+-- = Description
+--
+-- -   'EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV' specifies that
+--     external memory of the specified type /must/ be created as a
+--     dedicated allocation when used in the manner specified.
+--
+-- -   'EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV' specifies that the
+--     implementation supports exporting handles of the specified type.
+--
+-- -   'EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV' specifies that the
+--     implementation supports importing handles of the specified type.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_external_memory_capabilities VK_NV_external_memory_capabilities>,
@@ -516,17 +543,13 @@
 newtype ExternalMemoryFeatureFlagBitsNV = ExternalMemoryFeatureFlagBitsNV Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV' specifies that external
--- memory of the specified type /must/ be created as a dedicated allocation
--- when used in the manner specified.
+-- No documentation found for Nested "VkExternalMemoryFeatureFlagBitsNV" "VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV"
 pattern EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV = ExternalMemoryFeatureFlagBitsNV 0x00000001
 
--- | 'EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV' specifies that the
--- implementation supports exporting handles of the specified type.
+-- No documentation found for Nested "VkExternalMemoryFeatureFlagBitsNV" "VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV"
 pattern EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV = ExternalMemoryFeatureFlagBitsNV 0x00000002
 
--- | 'EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV' specifies that the
--- implementation supports importing handles of the specified type.
+-- No documentation found for Nested "VkExternalMemoryFeatureFlagBitsNV" "VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV"
 pattern EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV = ExternalMemoryFeatureFlagBitsNV 0x00000004
 
 conNameExternalMemoryFeatureFlagBitsNV :: String
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
@@ -103,8 +103,8 @@
 -- and require specifying the image when allocating or importing the memory
 -- object.
 --
--- 2) Does the 'ExternalImageFormatPropertiesNV' struct need to include a
--- list of memory type bits that support the given handle type?
+-- 2) Does the 'ExternalImageFormatPropertiesNV' structure need to include
+-- a list of memory type bits that support the given handle type?
 --
 -- __RESOLVED__: No. The memory types that do not support the handle types
 -- will simply be filtered out of the results returned by
@@ -133,7 +133,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_external_memory_capabilities Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_external_memory_rdma Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -256,6 +256,10 @@
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_INVALID_EXTERNAL_HANDLE'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_external_memory_rdma VK_NV_external_memory_rdma>,
@@ -310,11 +314,21 @@
 -- 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. 'PhysicalDeviceExternalMemoryRDMAFeaturesNV' /can/ also be
--- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceExternalMemoryRDMAFeaturesNV', it /must/ add an instance
+-- of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
 --
 -- = See Also
 --
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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_external_memory_rdma Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -87,7 +87,7 @@
 --
 -- 1) If memory objects are shared between processes and APIs, is this
 -- considered aliasing according to the rules outlined in the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-memory-aliasing Memory Aliasing>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-memory-aliasing Memory Aliasing>
 -- section?
 --
 -- __RESOLVED__: Yes, but strict exceptions to the rules are added to allow
@@ -272,7 +272,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_external_memory_win32 Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -360,10 +360,14 @@
 --
 -- [<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_TOO_MANY_OBJECTS'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_external_memory_win32 VK_NV_external_memory_win32>,
@@ -426,8 +430,12 @@
 -- If @handleType@ is @0@, this structure is ignored by consumers of the
 -- 'Vulkan.Core10.Memory.MemoryAllocateInfo' structure it is chained from.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.Memory.MemoryAllocateInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_external_memory_win32 VK_NV_external_memory_win32>,
@@ -516,6 +524,12 @@
 -- -   #VUID-VkExportMemoryWin32HandleInfoNV-pAttributes-parameter# If
 --     @pAttributes@ is not @NULL@, @pAttributes@ /must/ be a valid pointer
 --     to a valid 'SECURITY_ATTRIBUTES' value
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.Memory.MemoryAllocateInfo'
 --
 -- = See Also
 --
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
@@ -87,7 +87,7 @@
 --
 -- 1) If memory objects are shared between processes and APIs, is this
 -- considered aliasing according to the rules outlined in the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-memory-aliasing Memory Aliasing>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-memory-aliasing Memory Aliasing>
 -- section?
 --
 -- __RESOLVED__: Yes, but strict exceptions to the rules are added to allow
@@ -272,7 +272,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_external_memory_win32 Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -70,7 +70,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_fill_rectangle Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -56,7 +56,7 @@
 -- == New Structures
 --
 -- -   Extending
---     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo':
+--     'Vulkan.Core10.GraphicsPipeline.PipelineMultisampleStateCreateInfo':
 --
 --     -   'PipelineCoverageToColorStateCreateInfoNV'
 --
@@ -87,7 +87,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_fragment_coverage_to_color Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -138,13 +138,13 @@
 -- = Description
 --
 -- If the @pNext@ chain of
--- 'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo' includes a
--- 'PipelineCoverageToColorStateCreateInfoNV' structure, then that
--- structure controls whether the fragment coverage is substituted for a
--- fragment color output and, if so, which output is replaced.
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineMultisampleStateCreateInfo'
+-- includes a 'PipelineCoverageToColorStateCreateInfoNV' structure, then
+-- that structure controls whether the fragment coverage is substituted for
+-- a fragment color output and, if so, which output is replaced.
 --
 -- If @coverageToColorEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-multisampling-coverage-mask coverage mask>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -163,8 +163,9 @@
 -- -   #VUID-VkPipelineCoverageToColorStateCreateInfoNV-coverageToColorEnable-01404#
 --     If @coverageToColorEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
 --     then the render pass subpass indicated by
---     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@renderPass@
---     and 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@subpass@
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'::@renderPass@
+--     and
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'::@subpass@
 --     /must/ have a color attachment at the location selected by
 --     @coverageToColorLocation@, with a
 --     'Vulkan.Core10.Enums.Format.Format' of
@@ -183,6 +184,12 @@
 --
 -- -   #VUID-VkPipelineCoverageToColorStateCreateInfoNV-flags-zerobitmask#
 --     @flags@ /must/ be @0@
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.GraphicsPipeline.PipelineMultisampleStateCreateInfo'
 --
 -- = See Also
 --
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
@@ -56,7 +56,7 @@
 -- == New Structures
 --
 -- -   Extending
---     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo':
+--     'Vulkan.Core10.GraphicsPipeline.PipelineMultisampleStateCreateInfo':
 --
 --     -   'PipelineCoverageToColorStateCreateInfoNV'
 --
@@ -87,7 +87,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_fragment_coverage_to_color Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -118,17 +118,17 @@
 --
 -- == New Built-In Variables
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-barycoordkhr BaryCoordNV>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-barycoordkhr BaryCoordNV>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-barycoordnoperspkhr BaryCoordNoPerspNV>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-barycoordnoperspkhr BaryCoordNoPerspNV>
 --
 -- == New SPIR-V Decorations
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-interpolation-decorations-pervertexkhr PerVertexNV>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-interpolation-decorations-pervertexkhr PerVertexNV>
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-FragmentBarycentricKHR FragmentBarycentricNV>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-FragmentBarycentricKHR FragmentBarycentricNV>
 --
 -- == Issues
 --
@@ -190,7 +190,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_fragment_shader_barycentric Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -54,7 +54,8 @@
 --
 -- == New Structures
 --
--- -   Extending 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo':
+-- -   Extending
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo':
 --
 --     -   'PipelineFragmentShadingRateEnumStateCreateInfoNV'
 --
@@ -166,7 +167,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_fragment_shading_rate_enums Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -269,11 +270,11 @@
 --
 -- This command sets the pipeline fragment shading rate and combiner
 -- operation for subsequent drawing commands when drawing using
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-objects shader objects>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader objects>,
 -- or when the graphics pipeline is created with
 -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
 -- set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
 -- Otherwise, this state is specified by the
 -- 'PipelineFragmentShadingRateEnumStateCreateInfoNV' values used to create
 -- the currently active pipeline.
@@ -288,13 +289,13 @@
 --
 -- -   #VUID-vkCmdSetFragmentShadingRateEnumNV-pipelineFragmentShadingRate-04576#
 --     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate>
 --     feature is not enabled, @shadingRate@ /must/ be
 --     'FRAGMENT_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV'
 --
 -- -   #VUID-vkCmdSetFragmentShadingRateEnumNV-supersampleFragmentShadingRates-04577#
 --     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-supersampleFragmentShadingRates supersampleFragmentShadingRates>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-supersampleFragmentShadingRates supersampleFragmentShadingRates>
 --     feature is not enabled, @shadingRate@ /must/ not be
 --     'FRAGMENT_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV',
 --     'FRAGMENT_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV',
@@ -303,38 +304,38 @@
 --
 -- -   #VUID-vkCmdSetFragmentShadingRateEnumNV-noInvocationFragmentShadingRates-04578#
 --     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-noInvocationFragmentShadingRates noInvocationFragmentShadingRates>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-noInvocationFragmentShadingRates noInvocationFragmentShadingRates>
 --     feature is not enabled, @shadingRate@ /must/ not be
 --     'FRAGMENT_SHADING_RATE_NO_INVOCATIONS_NV'
 --
 -- -   #VUID-vkCmdSetFragmentShadingRateEnumNV-fragmentShadingRateEnums-04579#
 --     The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-fragmentShadingRateEnums fragmentShadingRateEnums>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-fragmentShadingRateEnums fragmentShadingRateEnums>
 --     feature /must/ be enabled
 --
 -- -   #VUID-vkCmdSetFragmentShadingRateEnumNV-pipelineFragmentShadingRate-04580#
 --     One of the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate>,
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-primitiveFragmentShadingRate primitiveFragmentShadingRate>,
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate>,
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-primitiveFragmentShadingRate primitiveFragmentShadingRate>,
 --     or
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate>
 --     features /must/ be enabled
 --
 -- -   #VUID-vkCmdSetFragmentShadingRateEnumNV-primitiveFragmentShadingRate-04581#
 --     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-primitiveFragmentShadingRate primitiveFragmentShadingRate>
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate>
+--     <https://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-fragmentShadingRateNonTrivialCombinerOps fragmentSizeNonTrivialCombinerOps>
+--     <https://registry.khronos.org/vulkan/specs/latest/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
@@ -360,7 +361,8 @@
 --
 -- -   #VUID-vkCmdSetFragmentShadingRateEnumNV-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdSetFragmentShadingRateEnumNV-videocoding# This command
 --     /must/ only be called outside of a video coding scope
@@ -379,10 +381,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
 -- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdSetFragmentShadingRateEnumNV is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_fragment_shading_rate_enums VK_NV_fragment_shading_rate_enums>,
@@ -400,12 +407,12 @@
                                 -> -- | @combinerOps@ specifies a
                                    -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FragmentShadingRateCombinerOpKHR'
                                    -- determining how the
-                                   -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-pipeline pipeline>,
-                                   -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-primitive primitive>,
+                                   -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-fragment-shading-rate-pipeline pipeline>,
+                                   -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-fragment-shading-rate-primitive primitive>,
                                    -- and
-                                   -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment attachment shading rates>
+                                   -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-fragment-shading-rate-attachment attachment shading rates>
                                    -- are
-                                   -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-combining combined>
+                                   -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-fragment-shading-rate-combining combined>
                                    -- for fragments generated by subsequent drawing commands.
                                    ("combinerOps" ::: (FragmentShadingRateCombinerOpKHR, FragmentShadingRateCombinerOpKHR))
                                 -> io ()
@@ -444,12 +451,22 @@
 -- structure passed to
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
 -- it is filled in to indicate whether each corresponding feature is
--- supported. 'PhysicalDeviceFragmentShadingRateEnumsFeaturesNV' /can/ also
--- be used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo'
--- to selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceFragmentShadingRateEnumsFeaturesNV', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_fragment_shading_rate_enums VK_NV_fragment_shading_rate_enums>,
@@ -534,10 +551,14 @@
 -- property.
 --
 -- These properties are related to
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate fragment shading rates>.
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-fragment-shading-rate fragment shading rates>.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_fragment_shading_rate_enums VK_NV_fragment_shading_rate_enums>,
@@ -550,10 +571,6 @@
     -- indicating the maximum number of fragment shader invocations per
     -- fragment supported in pipeline, primitive, and attachment fragment
     -- shading rates.
-    --
-    -- #VUID-VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV-maxFragmentShadingRateInvocationCount-parameter#
-    -- @maxFragmentShadingRateInvocationCount@ /must/ be a valid
-    -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' value
     maxFragmentShadingRateInvocationCount :: SampleCountFlagBits }
   deriving (Typeable, Eq)
 #if defined(GENERIC_INSTANCES)
@@ -600,7 +617,7 @@
 -- = Description
 --
 -- If the @pNext@ chain of
--- 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo' includes a
+-- 'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo' includes a
 -- 'PipelineFragmentShadingRateEnumStateCreateInfoNV' structure, then that
 -- structure includes parameters controlling the pipeline fragment shading
 -- rate.
@@ -612,8 +629,12 @@
 -- @combinerOps@ are considered to be equal to
 -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_fragment_shading_rate_enums VK_NV_fragment_shading_rate_enums>,
@@ -631,12 +652,12 @@
   , -- | @combinerOps@ specifies
     -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FragmentShadingRateCombinerOpKHR'
     -- values determining how the
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-pipeline pipeline>,
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-primitive primitive>,
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-fragment-shading-rate-pipeline pipeline>,
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-fragment-shading-rate-primitive primitive>,
     -- and
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment attachment shading rates>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-fragment-shading-rate-attachment attachment shading rates>
     -- are
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-combining combined>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-fragment-shading-rate-combining combined>
     -- for fragments generated by drawing commands using the created pipeline.
     combinerOps :: (FragmentShadingRateCombinerOpKHR, FragmentShadingRateCombinerOpKHR)
   }
@@ -700,17 +721,58 @@
 --
 -- = Description
 --
+-- -   'FRAGMENT_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV' specifies a
+--     fragment size of 1x1 pixels.
+--
+-- -   'FRAGMENT_SHADING_RATE_1_INVOCATION_PER_1X2_PIXELS_NV' specifies a
+--     fragment size of 1x2 pixels.
+--
+-- -   'FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X1_PIXELS_NV' specifies a
+--     fragment size of 2x1 pixels.
+--
+-- -   'FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X2_PIXELS_NV' specifies a
+--     fragment size of 2x2 pixels.
+--
+-- -   'FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X4_PIXELS_NV' specifies a
+--     fragment size of 2x4 pixels.
+--
+-- -   'FRAGMENT_SHADING_RATE_1_INVOCATION_PER_4X2_PIXELS_NV' specifies a
+--     fragment size of 4x2 pixels.
+--
+-- -   'FRAGMENT_SHADING_RATE_1_INVOCATION_PER_4X4_PIXELS_NV' specifies a
+--     fragment size of 4x4 pixels.
+--
+-- -   'FRAGMENT_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV' specifies a
+--     fragment size of 1x1 pixels, with two fragment shader invocations
+--     per fragment.
+--
+-- -   'FRAGMENT_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV' specifies a
+--     fragment size of 1x1 pixels, with four fragment shader invocations
+--     per fragment.
+--
+-- -   'FRAGMENT_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV' specifies a
+--     fragment size of 1x1 pixels, with eight fragment shader invocations
+--     per fragment.
+--
+-- -   'FRAGMENT_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV' specifies a
+--     fragment size of 1x1 pixels, with sixteen fragment shader
+--     invocations per fragment.
+--
+-- -   'FRAGMENT_SHADING_RATE_NO_INVOCATIONS_NV' specifies that any
+--     portions of a primitive that use that shading rate should be
+--     discarded without invoking any fragment shader.
+--
 -- To use the shading rates
 -- 'FRAGMENT_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV',
 -- 'FRAGMENT_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV',
 -- 'FRAGMENT_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV', and
 -- 'FRAGMENT_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV' as a pipeline,
 -- primitive, or attachment shading rate, the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-supersampleFragmentShadingRates supersampleFragmentShadingRates>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-supersampleFragmentShadingRates supersampleFragmentShadingRates>
 -- feature /must/ be enabled. To use the shading rate
 -- 'FRAGMENT_SHADING_RATE_NO_INVOCATIONS_NV' as a pipeline, primitive, or
 -- attachment shading rate, the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-noInvocationFragmentShadingRates noInvocationFragmentShadingRates>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-noInvocationFragmentShadingRates noInvocationFragmentShadingRates>
 -- feature /must/ be enabled.
 --
 -- = See Also
@@ -721,54 +783,40 @@
 newtype FragmentShadingRateNV = FragmentShadingRateNV Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'FRAGMENT_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV' specifies a fragment
--- size of 1x1 pixels.
+-- No documentation found for Nested "VkFragmentShadingRateNV" "VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV"
 pattern FRAGMENT_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV = FragmentShadingRateNV 0
 
--- | 'FRAGMENT_SHADING_RATE_1_INVOCATION_PER_1X2_PIXELS_NV' specifies a
--- fragment size of 1x2 pixels.
+-- No documentation found for Nested "VkFragmentShadingRateNV" "VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_1X2_PIXELS_NV"
 pattern FRAGMENT_SHADING_RATE_1_INVOCATION_PER_1X2_PIXELS_NV = FragmentShadingRateNV 1
 
--- | 'FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X1_PIXELS_NV' specifies a
--- fragment size of 2x1 pixels.
+-- No documentation found for Nested "VkFragmentShadingRateNV" "VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X1_PIXELS_NV"
 pattern FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X1_PIXELS_NV = FragmentShadingRateNV 4
 
--- | 'FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X2_PIXELS_NV' specifies a
--- fragment size of 2x2 pixels.
+-- No documentation found for Nested "VkFragmentShadingRateNV" "VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X2_PIXELS_NV"
 pattern FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X2_PIXELS_NV = FragmentShadingRateNV 5
 
--- | 'FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X4_PIXELS_NV' specifies a
--- fragment size of 2x4 pixels.
+-- No documentation found for Nested "VkFragmentShadingRateNV" "VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X4_PIXELS_NV"
 pattern FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X4_PIXELS_NV = FragmentShadingRateNV 6
 
--- | 'FRAGMENT_SHADING_RATE_1_INVOCATION_PER_4X2_PIXELS_NV' specifies a
--- fragment size of 4x2 pixels.
+-- No documentation found for Nested "VkFragmentShadingRateNV" "VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_4X2_PIXELS_NV"
 pattern FRAGMENT_SHADING_RATE_1_INVOCATION_PER_4X2_PIXELS_NV = FragmentShadingRateNV 9
 
--- | 'FRAGMENT_SHADING_RATE_1_INVOCATION_PER_4X4_PIXELS_NV' specifies a
--- fragment size of 4x4 pixels.
+-- No documentation found for Nested "VkFragmentShadingRateNV" "VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_4X4_PIXELS_NV"
 pattern FRAGMENT_SHADING_RATE_1_INVOCATION_PER_4X4_PIXELS_NV = FragmentShadingRateNV 10
 
--- | 'FRAGMENT_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV' specifies a fragment
--- size of 1x1 pixels, with two fragment shader invocations per fragment.
+-- No documentation found for Nested "VkFragmentShadingRateNV" "VK_FRAGMENT_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV"
 pattern FRAGMENT_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV = FragmentShadingRateNV 11
 
--- | 'FRAGMENT_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV' specifies a fragment
--- size of 1x1 pixels, with four fragment shader invocations per fragment.
+-- No documentation found for Nested "VkFragmentShadingRateNV" "VK_FRAGMENT_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV"
 pattern FRAGMENT_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV = FragmentShadingRateNV 12
 
--- | 'FRAGMENT_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV' specifies a fragment
--- size of 1x1 pixels, with eight fragment shader invocations per fragment.
+-- No documentation found for Nested "VkFragmentShadingRateNV" "VK_FRAGMENT_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV"
 pattern FRAGMENT_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV = FragmentShadingRateNV 13
 
--- | 'FRAGMENT_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV' specifies a fragment
--- size of 1x1 pixels, with sixteen fragment shader invocations per
--- fragment.
+-- No documentation found for Nested "VkFragmentShadingRateNV" "VK_FRAGMENT_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV"
 pattern FRAGMENT_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV = FragmentShadingRateNV 14
 
--- | 'FRAGMENT_SHADING_RATE_NO_INVOCATIONS_NV' specifies that any portions of
--- a primitive that use that shading rate should be discarded without
--- invoking any fragment shader.
+-- No documentation found for Nested "VkFragmentShadingRateNV" "VK_FRAGMENT_SHADING_RATE_NO_INVOCATIONS_NV"
 pattern FRAGMENT_SHADING_RATE_NO_INVOCATIONS_NV = FragmentShadingRateNV 15
 
 {-# COMPLETE
@@ -865,6 +913,24 @@
 -- | VkFragmentShadingRateTypeNV - Enumeration with fragment shading rate
 -- types
 --
+-- = Description
+--
+-- -   'FRAGMENT_SHADING_RATE_TYPE_FRAGMENT_SIZE_NV' specifies that a
+--     graphics pipeline should obtain its pipeline fragment shading rate
+--     and shading rate combiner state from the
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'
+--     structure and that any state specified by the
+--     'PipelineFragmentShadingRateEnumStateCreateInfoNV' structure should
+--     be ignored.
+--
+-- -   'FRAGMENT_SHADING_RATE_TYPE_ENUMS_NV' specifies that a graphics
+--     pipeline should obtain its pipeline fragment shading rate and
+--     shading rate combiner state from the
+--     'PipelineFragmentShadingRateEnumStateCreateInfoNV' structure and
+--     that any state specified by the
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'
+--     structure should be ignored.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_fragment_shading_rate_enums VK_NV_fragment_shading_rate_enums>,
@@ -872,22 +938,10 @@
 newtype FragmentShadingRateTypeNV = FragmentShadingRateTypeNV Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'FRAGMENT_SHADING_RATE_TYPE_FRAGMENT_SIZE_NV' specifies that a graphics
--- pipeline should obtain its pipeline fragment shading rate and shading
--- rate combiner state from the
--- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'
--- structure and that any state specified by the
--- 'PipelineFragmentShadingRateEnumStateCreateInfoNV' structure should be
--- ignored.
+-- No documentation found for Nested "VkFragmentShadingRateTypeNV" "VK_FRAGMENT_SHADING_RATE_TYPE_FRAGMENT_SIZE_NV"
 pattern FRAGMENT_SHADING_RATE_TYPE_FRAGMENT_SIZE_NV = FragmentShadingRateTypeNV 0
 
--- | 'FRAGMENT_SHADING_RATE_TYPE_ENUMS_NV' specifies that a graphics pipeline
--- should obtain its pipeline fragment shading rate and shading rate
--- combiner state from the
--- 'PipelineFragmentShadingRateEnumStateCreateInfoNV' structure and that
--- any state specified by the
--- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'
--- structure should be ignored.
+-- No documentation found for Nested "VkFragmentShadingRateTypeNV" "VK_FRAGMENT_SHADING_RATE_TYPE_ENUMS_NV"
 pattern FRAGMENT_SHADING_RATE_TYPE_ENUMS_NV = FragmentShadingRateTypeNV 1
 
 {-# COMPLETE
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
@@ -54,7 +54,8 @@
 --
 -- == New Structures
 --
--- -   Extending 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo':
+-- -   Extending
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo':
 --
 --     -   'PipelineFragmentShadingRateEnumStateCreateInfoNV'
 --
@@ -166,7 +167,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_fragment_shading_rate_enums Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -87,7 +87,7 @@
 -- == New Structures
 --
 -- -   Extending
---     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo':
+--     'Vulkan.Core10.GraphicsPipeline.PipelineMultisampleStateCreateInfo':
 --
 --     -   'PipelineCoverageModulationStateCreateInfoNV'
 --
@@ -99,7 +99,7 @@
 --
 -- -   Extending
 --     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo',
---     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo':
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo':
 --
 --     -   'AttachmentSampleCountInfoNV'
 --
@@ -144,7 +144,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_framebuffer_mixed_samples Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -266,7 +266,7 @@
 -- @coverageModulationMode@ is 'COVERAGE_MODULATION_MODE_NONE_NV'.
 --
 -- If the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-coverage-reduction coverage reduction mode>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -295,6 +295,12 @@
 --     @coverageModulationMode@ /must/ be a valid
 --     'CoverageModulationModeNV' value
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.GraphicsPipeline.PipelineMultisampleStateCreateInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_framebuffer_mixed_samples VK_NV_framebuffer_mixed_samples>,
@@ -426,6 +432,20 @@
 
 -- | VkCoverageModulationModeNV - Specify the coverage modulation mode
 --
+-- = Description
+--
+-- -   'COVERAGE_MODULATION_MODE_NONE_NV' specifies that no components are
+--     multiplied by the modulation factor.
+--
+-- -   'COVERAGE_MODULATION_MODE_RGB_NV' specifies that the red, green, and
+--     blue components are multiplied by the modulation factor.
+--
+-- -   'COVERAGE_MODULATION_MODE_ALPHA_NV' specifies that the alpha
+--     component is multiplied by the modulation factor.
+--
+-- -   'COVERAGE_MODULATION_MODE_RGBA_NV' specifies that all components are
+--     multiplied by the modulation factor.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_framebuffer_mixed_samples VK_NV_framebuffer_mixed_samples>,
@@ -434,20 +454,16 @@
 newtype CoverageModulationModeNV = CoverageModulationModeNV Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'COVERAGE_MODULATION_MODE_NONE_NV' specifies that no components are
--- multiplied by the modulation factor.
+-- No documentation found for Nested "VkCoverageModulationModeNV" "VK_COVERAGE_MODULATION_MODE_NONE_NV"
 pattern COVERAGE_MODULATION_MODE_NONE_NV = CoverageModulationModeNV 0
 
--- | 'COVERAGE_MODULATION_MODE_RGB_NV' specifies that the red, green, and
--- blue components are multiplied by the modulation factor.
+-- No documentation found for Nested "VkCoverageModulationModeNV" "VK_COVERAGE_MODULATION_MODE_RGB_NV"
 pattern COVERAGE_MODULATION_MODE_RGB_NV = CoverageModulationModeNV 1
 
--- | 'COVERAGE_MODULATION_MODE_ALPHA_NV' specifies that the alpha component
--- is multiplied by the modulation factor.
+-- No documentation found for Nested "VkCoverageModulationModeNV" "VK_COVERAGE_MODULATION_MODE_ALPHA_NV"
 pattern COVERAGE_MODULATION_MODE_ALPHA_NV = CoverageModulationModeNV 2
 
--- | 'COVERAGE_MODULATION_MODE_RGBA_NV' specifies that all components are
--- multiplied by the modulation factor.
+-- No documentation found for Nested "VkCoverageModulationModeNV" "VK_COVERAGE_MODULATION_MODE_RGBA_NV"
 pattern COVERAGE_MODULATION_MODE_RGBA_NV = CoverageModulationModeNV 3
 
 {-# COMPLETE
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
@@ -87,7 +87,7 @@
 -- == New Structures
 --
 -- -   Extending
---     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo':
+--     'Vulkan.Core10.GraphicsPipeline.PipelineMultisampleStateCreateInfo':
 --
 --     -   'PipelineCoverageModulationStateCreateInfoNV'
 --
@@ -99,7 +99,7 @@
 --
 -- -   Extending
 --     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo',
---     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo':
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo':
 --
 --     -   'AttachmentSampleCountInfoNV'
 --
@@ -144,7 +144,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_framebuffer_mixed_samples Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -43,7 +43,7 @@
 --         <https://registry.khronos.org/OpenGL/extensions/NV/NV_geometry_shader_passthrough.txt GL_NV_geometry_shader_passthrough>
 --
 --     -   This extension requires the
---         <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-geometryShader geometryShader>
+--         <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-geometryShader geometryShader>
 --         feature.
 --
 -- [__Contributors__]
@@ -89,13 +89,13 @@
 --
 -- == New Variable Decoration
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#geometry-passthrough-passthrough PassthroughNV>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#geometry-passthrough-passthrough PassthroughNV>
 --     in
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#geometry-passthrough Geometry Shader Passthrough>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#geometry-passthrough Geometry Shader Passthrough>
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-GeometryShaderPassthroughNV GeometryShaderPassthroughNV>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-GeometryShaderPassthroughNV GeometryShaderPassthroughNV>
 --
 -- == Issues
 --
@@ -122,7 +122,7 @@
 -- 2) How does interface matching work with passthrough geometry shaders?
 --
 -- __RESOLVED__: This is described in
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#geometry-passthrough-interface Passthrough Interface Matching>.
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#geometry-passthrough-interface Passthrough Interface Matching>.
 -- In GL when using passthrough 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
@@ -206,7 +206,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_geometry_shader_passthrough Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -105,7 +105,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_glsl_shader Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -121,7 +121,7 @@
 -- 'Vulkan.Core10.Handles.CommandBuffer' that must be re-initialized.
 --
 -- (2) Why are viewport depth values specified as a partial
--- 'Vulkan.Core10.Pipeline.Viewport' struct, rather than a leaner
+-- 'Vulkan.Core10.GraphicsPipeline.Viewport' struct, rather than a leaner
 -- depth-only struct?
 --
 -- __DISCUSSION__:
@@ -130,11 +130,11 @@
 -- @minDepth@ and @maxDepth@. However, as application developers would need
 -- to maintain both a @VK_NV_inherited_viewport_scissor@ code path and a
 -- fallback code path (at least in the short term), we ultimately chose to
--- continue using the existing 'Vulkan.Core10.Pipeline.Viewport' structure.
--- Doing so would allow application developers to reuse the same
--- 'Vulkan.Core10.Pipeline.Viewport' array for both code paths, rather than
--- constructing separate @VkViewportDepthNV@ and
--- 'Vulkan.Core10.Pipeline.Viewport' arrays for each code path.
+-- continue using the existing 'Vulkan.Core10.GraphicsPipeline.Viewport'
+-- structure. Doing so would allow application developers to reuse the same
+-- 'Vulkan.Core10.GraphicsPipeline.Viewport' array for both code paths,
+-- rather than constructing separate @VkViewportDepthNV@ and
+-- 'Vulkan.Core10.GraphicsPipeline.Viewport' arrays for each code path.
 --
 -- == Version History
 --
@@ -149,7 +149,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_inherited_viewport_scissor Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -186,7 +186,7 @@
 import Vulkan.Core10.FundamentalTypes (boolToBool32)
 import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.Core10.Enums.StructureType (StructureType)
-import Vulkan.Core10.Pipeline (Viewport)
+import Vulkan.Core10.GraphicsPipeline (Viewport)
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV))
 -- | VkPhysicalDeviceInheritedViewportScissorFeaturesNV - Structure
@@ -205,12 +205,22 @@
 -- structure passed to
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
 -- it is filled in to indicate whether each corresponding feature is
--- supported. 'PhysicalDeviceInheritedViewportScissorFeaturesNV' /can/ also
--- be used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo'
--- to selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceInheritedViewportScissorFeaturesNV', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_inherited_viewport_scissor VK_NV_inherited_viewport_scissor>,
@@ -338,10 +348,10 @@
 --
 -- -   If the provisional inherited state is a viewport, with n being its
 --     viewport index, then if n ≥ @viewportDepthCount@, or if either
---     'Vulkan.Core10.Pipeline.Viewport'::@minDepth@ or
---     'Vulkan.Core10.Pipeline.Viewport'::@maxDepth@ are not equal to the
---     respective values of the nth element of @pViewportDepths@, then the
---     state is not inherited.
+--     'Vulkan.Core10.GraphicsPipeline.Viewport'::@minDepth@ or
+--     'Vulkan.Core10.GraphicsPipeline.Viewport'::@maxDepth@ are not equal
+--     to the respective values of the nth element of @pViewportDepths@,
+--     then the state is not inherited.
 --
 -- -   If the provisional inherited state passes both checks, then it
 --     becomes the actual inherited state.
@@ -354,13 +364,13 @@
 --
 -- -   #VUID-VkCommandBufferInheritanceViewportScissorInfoNV-viewportScissor2D-04782#
 --     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-inheritedViewportScissor2D inheritedViewportScissor2D>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-inheritedViewportScissor2D inheritedViewportScissor2D>
 --     feature is not enabled, @viewportScissor2D@ /must/ be
 --     'Vulkan.Core10.FundamentalTypes.FALSE'
 --
 -- -   #VUID-VkCommandBufferInheritanceViewportScissorInfoNV-viewportScissor2D-04783#
 --     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-multiViewport multiViewport>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-multiViewport multiViewport>
 --     feature is not enabled and @viewportScissor2D@ is
 --     'Vulkan.Core10.FundamentalTypes.TRUE', then @viewportDepthCount@
 --     /must/ be @1@
@@ -372,7 +382,7 @@
 -- -   #VUID-VkCommandBufferInheritanceViewportScissorInfoNV-viewportScissor2D-04785#
 --     If @viewportScissor2D@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
 --     then @pViewportDepths@ /must/ be a valid pointer to an array of
---     @viewportDepthCount@ valid 'Vulkan.Core10.Pipeline.Viewport'
+--     @viewportDepthCount@ valid 'Vulkan.Core10.GraphicsPipeline.Viewport'
 --     structures, except any requirements on @x@, @y@, @width@, and
 --     @height@ do not apply
 --
@@ -387,12 +397,18 @@
 --     @sType@ /must/ be
 --     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV'
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_inherited_viewport_scissor VK_NV_inherited_viewport_scissor>,
 -- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'Vulkan.Core10.Pipeline.Viewport'
+-- 'Vulkan.Core10.GraphicsPipeline.Viewport'
 data CommandBufferInheritanceViewportScissorInfoNV = CommandBufferInheritanceViewportScissorInfoNV
   { -- | @viewportScissor2D@ specifies whether the listed dynamic state is
     -- inherited.
@@ -402,9 +418,9 @@
     -- 'Vulkan.Core10.FundamentalTypes.FALSE', the behavior is as if this value
     -- is zero.
     viewportDepthCount :: Word32
-  , -- | @pViewportDepths@ is a pointer to a 'Vulkan.Core10.Pipeline.Viewport'
-    -- structure specifying the expected depth range for each inherited
-    -- viewport.
+  , -- | @pViewportDepths@ is a pointer to a
+    -- 'Vulkan.Core10.GraphicsPipeline.Viewport' structure specifying the
+    -- expected depth range for each inherited viewport.
     viewportDepths :: Viewport
   }
   deriving (Typeable)
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
@@ -121,7 +121,7 @@
 -- 'Vulkan.Core10.Handles.CommandBuffer' that must be re-initialized.
 --
 -- (2) Why are viewport depth values specified as a partial
--- 'Vulkan.Core10.Pipeline.Viewport' struct, rather than a leaner
+-- 'Vulkan.Core10.GraphicsPipeline.Viewport' struct, rather than a leaner
 -- depth-only struct?
 --
 -- __DISCUSSION__:
@@ -130,11 +130,11 @@
 -- @minDepth@ and @maxDepth@. However, as application developers would need
 -- to maintain both a @VK_NV_inherited_viewport_scissor@ code path and a
 -- fallback code path (at least in the short term), we ultimately chose to
--- continue using the existing 'Vulkan.Core10.Pipeline.Viewport' structure.
--- Doing so would allow application developers to reuse the same
--- 'Vulkan.Core10.Pipeline.Viewport' array for both code paths, rather than
--- constructing separate @VkViewportDepthNV@ and
--- 'Vulkan.Core10.Pipeline.Viewport' arrays for each code path.
+-- continue using the existing 'Vulkan.Core10.GraphicsPipeline.Viewport'
+-- structure. Doing so would allow application developers to reuse the same
+-- 'Vulkan.Core10.GraphicsPipeline.Viewport' array for both code paths,
+-- rather than constructing separate @VkViewportDepthNV@ and
+-- 'Vulkan.Core10.GraphicsPipeline.Viewport' arrays for each code path.
 --
 -- == Version History
 --
@@ -149,7 +149,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_inherited_viewport_scissor Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -119,7 +119,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_linear_color_attachment Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -169,12 +169,22 @@
 -- 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. 'PhysicalDeviceLinearColorAttachmentFeaturesNV' /can/ also be
--- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceLinearColorAttachmentFeaturesNV', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_linear_color_attachment VK_NV_linear_color_attachment>,
@@ -183,7 +193,7 @@
 data PhysicalDeviceLinearColorAttachmentFeaturesNV = PhysicalDeviceLinearColorAttachmentFeaturesNV
   { -- | #features-linearColorAttachment# @linearColorAttachment@ indicates
     -- whether the implementation supports renderable
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#glossary-linear-color-attachment Linear Color Attachment>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#glossary-linear-color-attachment Linear Color Attachment>
     linearColorAttachment :: Bool }
   deriving (Typeable, Eq)
 #if defined(GENERIC_INSTANCES)
diff --git a/src/Vulkan/Extensions/VK_NV_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
@@ -119,7 +119,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_linear_color_attachment Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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_low_latency.hs b/src/Vulkan/Extensions/VK_NV_low_latency.hs
--- a/src/Vulkan/Extensions/VK_NV_low_latency.hs
+++ b/src/Vulkan/Extensions/VK_NV_low_latency.hs
@@ -80,7 +80,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_low_latency Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_NV_low_latency Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -116,7 +116,11 @@
 --
 -- This structure describes the following feature:
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.QueueSemaphore.SemaphoreCreateInfo'
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Extensions/VK_NV_low_latency.hs-boot b/src/Vulkan/Extensions/VK_NV_low_latency.hs-boot
--- a/src/Vulkan/Extensions/VK_NV_low_latency.hs-boot
+++ b/src/Vulkan/Extensions/VK_NV_low_latency.hs-boot
@@ -80,7 +80,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_low_latency Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_NV_low_latency Vulkan Specification>.
 --
 -- This 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_low_latency2.hs b/src/Vulkan/Extensions/VK_NV_low_latency2.hs
--- a/src/Vulkan/Extensions/VK_NV_low_latency2.hs
+++ b/src/Vulkan/Extensions/VK_NV_low_latency2.hs
@@ -21,9 +21,17 @@
 --     Not ratified
 --
 -- [__Extension and Version Dependencies__]
+--         
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.2 Vulkan Version 1.2>
---     or
+--          or
+--         
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_timeline_semaphore VK_KHR_timeline_semaphore>
+--     and
+--         
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_present_id VK_KHR_present_id>
+--          or
+--         
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_present_id2 VK_KHR_present_id2>
 --
 -- [__Contact__]
 --
@@ -161,7 +169,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_low_latency2 Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_NV_low_latency2 Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -312,6 +320,10 @@
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_INITIALIZATION_FAILED'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_low_latency2 VK_NV_low_latency2>,
@@ -379,8 +391,11 @@
 --     -   'Vulkan.Core10.Enums.Result.SUCCESS'
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
---     None
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_low_latency2 VK_NV_low_latency2>,
@@ -415,11 +430,11 @@
     throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkLatencySleepNV is null" Nothing Nothing
   let vkLatencySleepNV' = mkVkLatencySleepNV vkLatencySleepNVPtr
   pSleepInfo <- ContT $ withCStruct (sleepInfo)
-  _ <- lift $ traceAroundEvent "vkLatencySleepNV" (vkLatencySleepNV'
+  r <- lift $ traceAroundEvent "vkLatencySleepNV" (vkLatencySleepNV'
                                                      (deviceHandle (device))
                                                      (swapchain)
                                                      pSleepInfo)
-  pure $ ()
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
 
 
 foreign import ccall
@@ -750,8 +765,9 @@
   { -- | @presentID@ is an application provided value that is used to associate
     -- the timestamp with a
     -- 'Vulkan.Extensions.VK_KHR_swapchain.queuePresentKHR' command using
-    -- 'Vulkan.Extensions.VK_KHR_present_id.PresentIdKHR'::@pPresentIds@ for a
-    -- given present.
+    -- 'Vulkan.Extensions.VK_KHR_present_id.PresentIdKHR'::@pPresentIds@ or
+    -- 'Vulkan.Extensions.VK_KHR_present_id2.PresentId2KHR'::@pPresentIds@ for
+    -- a given present.
     presentID :: Word64
   , -- | @marker@ is the type of timestamp to be recorded.
     --
@@ -809,9 +825,9 @@
 -- If @pTimings@ is @NULL@ then the maximum number of queryable frame data
 -- is returned in @timingCount@. Otherwise, @timingCount@ /must/ be set by
 -- the application to the number of elements in the @pTimings@ array, and
--- on return the variable is overwritten with the number of values actually
--- written to @pTimings@. The elements of @pTimings@ are arranged in the
--- order they were requested in, with the oldest data in the first entry.
+-- on return is overwritten with the number of values actually written to
+-- @pTimings@. The elements of @pTimings@ are arranged in the order they
+-- were requested in, with the oldest data in the first entry.
 --
 -- == Valid Usage (Implicit)
 --
@@ -894,8 +910,9 @@
   { -- | @presentID@ is the application provided value that is used to associate
     -- the timestamp with a
     -- 'Vulkan.Extensions.VK_KHR_swapchain.queuePresentKHR' command using
-    -- 'Vulkan.Extensions.VK_KHR_present_id.PresentIdKHR'::@pPresentIds@ for a
-    -- given present.
+    -- 'Vulkan.Extensions.VK_KHR_present_id.PresentIdKHR'::@pPresentIds@ or
+    -- 'Vulkan.Extensions.VK_KHR_present_id2.PresentId2KHR'::@pPresentIds@ for
+    -- a given present.
     presentID :: Word64
   , -- No documentation found for Nested "VkLatencyTimingsFrameReportNV" "inputSampleTimeUs"
     inputSampleTimeUs :: Word64
@@ -1107,8 +1124,14 @@
 -- 'Vulkan.Core10.Queue.queueSubmit' /must/ include a
 -- 'LatencySubmissionPresentIdNV' structure.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Queue.SubmitInfo'
+--
+--     -   'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.SubmitInfo2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_low_latency2 VK_NV_low_latency2>,
@@ -1117,7 +1140,8 @@
   { -- | @presentID@ is used to associate the 'Vulkan.Core10.Queue.queueSubmit'
     -- with the presentId used for a given
     -- 'Vulkan.Extensions.VK_KHR_swapchain.queuePresentKHR' via
-    -- 'Vulkan.Extensions.VK_KHR_present_id.PresentIdKHR'::@pPresentIds@.
+    -- 'Vulkan.Extensions.VK_KHR_present_id.PresentIdKHR'::@pPresentIds@ or
+    -- 'Vulkan.Extensions.VK_KHR_present_id2.PresentId2KHR'::@pPresentIds@.
     presentID :: Word64 }
   deriving (Typeable, Eq)
 #if defined(GENERIC_INSTANCES)
@@ -1160,8 +1184,12 @@
 -- | VkSwapchainLatencyCreateInfoNV - Specify that a swapchain will use low
 -- latency mode
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_low_latency2 VK_NV_low_latency2>,
@@ -1217,8 +1245,8 @@
 -- If @pPresentModes@ is @NULL@, then the number of present modes that are
 -- optimized for use with low latency mode returned in @presentModeCount@.
 -- Otherwise, @presentModeCount@ /must/ be set by the application to the
--- number of elements in the @pPresentModes@ array, and on return the
--- variable is overwritten with the number of values actually written to
+-- number of elements in the @pPresentModes@ array, and on return is
+-- overwritten with the number of values actually written to
 -- @pPresentModes@. If the value of @presentModeCount@ is less than the
 -- number of optimized present modes, at most @presentModeCount@ values
 -- will be written to @pPresentModes@.
@@ -1234,6 +1262,12 @@
 --     @presentModeCount@ 'Vulkan.Extensions.VK_KHR_surface.PresentModeKHR'
 --     values
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.SurfaceCapabilities2KHR'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_low_latency2 VK_NV_low_latency2>,
@@ -1293,6 +1327,35 @@
 -- The members of the 'LatencyMarkerNV' are used as arguments for
 -- 'setLatencyMarkerNV' in the use cases described below:
 --
+-- -   'LATENCY_MARKER_SIMULATION_START_NV' /should/ be called at the start
+--     of the simulation execution each frame, but after the call to
+--     'latencySleepNV'.
+--
+-- -   'LATENCY_MARKER_SIMULATION_END_NV' /should/ be called at the end of
+--     the simulation execution each frame.
+--
+-- -   'LATENCY_MARKER_RENDERSUBMIT_START_NV' /should/ be called at the
+--     beginning of the render submission execution each frame. This
+--     /should/ be wherever Vulkan API calls are made and /must/ not span
+--     into asynchronous rendering.
+--
+-- -   'LATENCY_MARKER_RENDERSUBMIT_END_NV' /should/ be called at the end
+--     of the render submission execution each frame.
+--
+-- -   'LATENCY_MARKER_PRESENT_START_NV' /should/ be called just before
+--     'Vulkan.Extensions.VK_KHR_swapchain.queuePresentKHR'.
+--
+-- -   'LATENCY_MARKER_PRESENT_END_NV' /should/ be called when
+--     'Vulkan.Extensions.VK_KHR_swapchain.queuePresentKHR' returns.
+--
+-- -   'LATENCY_MARKER_INPUT_SAMPLE_NV' /should/ be called just before the
+--     application gathers input data.
+--
+-- -   'LATENCY_MARKER_TRIGGER_FLASH_NV' /should/ be called anywhere
+--     between 'LATENCY_MARKER_SIMULATION_START_NV' and
+--     'LATENCY_MARKER_SIMULATION_END_NV' whenever a left mouse click
+--     occurs.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_low_latency2 VK_NV_low_latency2>,
@@ -1300,40 +1363,28 @@
 newtype LatencyMarkerNV = LatencyMarkerNV Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'LATENCY_MARKER_SIMULATION_START_NV' /should/ be called at the start of
--- the simulation execution each frame, but after the call to
--- 'latencySleepNV'.
+-- No documentation found for Nested "VkLatencyMarkerNV" "VK_LATENCY_MARKER_SIMULATION_START_NV"
 pattern LATENCY_MARKER_SIMULATION_START_NV = LatencyMarkerNV 0
 
--- | 'LATENCY_MARKER_SIMULATION_END_NV' /should/ be called at the end of the
--- simulation execution each frame.
+-- No documentation found for Nested "VkLatencyMarkerNV" "VK_LATENCY_MARKER_SIMULATION_END_NV"
 pattern LATENCY_MARKER_SIMULATION_END_NV = LatencyMarkerNV 1
 
--- | 'LATENCY_MARKER_RENDERSUBMIT_START_NV' /should/ be called at the
--- beginning of the render submission execution each frame. This /should/
--- be wherever Vulkan API calls are made and /must/ not span into
--- asynchronous rendering.
+-- No documentation found for Nested "VkLatencyMarkerNV" "VK_LATENCY_MARKER_RENDERSUBMIT_START_NV"
 pattern LATENCY_MARKER_RENDERSUBMIT_START_NV = LatencyMarkerNV 2
 
--- | 'LATENCY_MARKER_RENDERSUBMIT_END_NV' /should/ be called at the end of
--- the render submission execution each frame.
+-- No documentation found for Nested "VkLatencyMarkerNV" "VK_LATENCY_MARKER_RENDERSUBMIT_END_NV"
 pattern LATENCY_MARKER_RENDERSUBMIT_END_NV = LatencyMarkerNV 3
 
--- | 'LATENCY_MARKER_PRESENT_START_NV' /should/ be called just before
--- 'Vulkan.Extensions.VK_KHR_swapchain.queuePresentKHR'.
+-- No documentation found for Nested "VkLatencyMarkerNV" "VK_LATENCY_MARKER_PRESENT_START_NV"
 pattern LATENCY_MARKER_PRESENT_START_NV = LatencyMarkerNV 4
 
--- | 'LATENCY_MARKER_PRESENT_END_NV' /should/ be called when
--- 'Vulkan.Extensions.VK_KHR_swapchain.queuePresentKHR' returns.
+-- No documentation found for Nested "VkLatencyMarkerNV" "VK_LATENCY_MARKER_PRESENT_END_NV"
 pattern LATENCY_MARKER_PRESENT_END_NV = LatencyMarkerNV 5
 
--- | 'LATENCY_MARKER_INPUT_SAMPLE_NV' /should/ be called just before the
--- application gathers input data.
+-- No documentation found for Nested "VkLatencyMarkerNV" "VK_LATENCY_MARKER_INPUT_SAMPLE_NV"
 pattern LATENCY_MARKER_INPUT_SAMPLE_NV = LatencyMarkerNV 6
 
--- | 'LATENCY_MARKER_TRIGGER_FLASH_NV' /should/ be called anywhere between
--- 'LATENCY_MARKER_SIMULATION_START_NV' and
--- 'LATENCY_MARKER_SIMULATION_END_NV' whenever a left mouse click occurs.
+-- No documentation found for Nested "VkLatencyMarkerNV" "VK_LATENCY_MARKER_TRIGGER_FLASH_NV"
 pattern LATENCY_MARKER_TRIGGER_FLASH_NV = LatencyMarkerNV 7
 
 -- No documentation found for Nested "VkLatencyMarkerNV" "VK_LATENCY_MARKER_OUT_OF_BAND_RENDERSUBMIT_START_NV"
@@ -1440,6 +1491,12 @@
 -- The members of the 'OutOfBandQueueTypeNV' are used to describe the queue
 -- type in 'OutOfBandQueueTypeInfoNV' as described below:
 --
+-- -   'OUT_OF_BAND_QUEUE_TYPE_RENDER_NV' specifies that work will be
+--     submitted to this queue.
+--
+-- -   'OUT_OF_BAND_QUEUE_TYPE_PRESENT_NV' specifies that this queue will
+--     be presented from.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_low_latency2 VK_NV_low_latency2>,
@@ -1447,12 +1504,10 @@
 newtype OutOfBandQueueTypeNV = OutOfBandQueueTypeNV Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'OUT_OF_BAND_QUEUE_TYPE_RENDER_NV' specifies that work will be submitted
--- to this queue.
+-- No documentation found for Nested "VkOutOfBandQueueTypeNV" "VK_OUT_OF_BAND_QUEUE_TYPE_RENDER_NV"
 pattern OUT_OF_BAND_QUEUE_TYPE_RENDER_NV = OutOfBandQueueTypeNV 0
 
--- | 'OUT_OF_BAND_QUEUE_TYPE_PRESENT_NV' specifies that this queue will be
--- presented from.
+-- No documentation found for Nested "VkOutOfBandQueueTypeNV" "VK_OUT_OF_BAND_QUEUE_TYPE_PRESENT_NV"
 pattern OUT_OF_BAND_QUEUE_TYPE_PRESENT_NV = OutOfBandQueueTypeNV 1
 
 {-# COMPLETE
diff --git a/src/Vulkan/Extensions/VK_NV_low_latency2.hs-boot b/src/Vulkan/Extensions/VK_NV_low_latency2.hs-boot
--- a/src/Vulkan/Extensions/VK_NV_low_latency2.hs-boot
+++ b/src/Vulkan/Extensions/VK_NV_low_latency2.hs-boot
@@ -21,9 +21,17 @@
 --     Not ratified
 --
 -- [__Extension and Version Dependencies__]
+--         
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.2 Vulkan Version 1.2>
---     or
+--          or
+--         
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_timeline_semaphore VK_KHR_timeline_semaphore>
+--     and
+--         
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_present_id VK_KHR_present_id>
+--          or
+--         
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_present_id2 VK_KHR_present_id2>
 --
 -- [__Contact__]
 --
@@ -161,7 +169,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_low_latency2 Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_NV_low_latency2 Vulkan Specification>.
 --
 -- This 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_memory_decompression.hs b/src/Vulkan/Extensions/VK_NV_memory_decompression.hs
--- a/src/Vulkan/Extensions/VK_NV_memory_decompression.hs
+++ b/src/Vulkan/Extensions/VK_NV_memory_decompression.hs
@@ -32,6 +32,12 @@
 --     or
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.2 Vulkan Version 1.2>
 --
+-- [__Deprecation State__]
+--
+--     -   /Promoted/ to
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_memory_decompression VK_EXT_memory_decompression>
+--         extension
+--
 -- [__Contact__]
 --
 --     -   Vikram Kushwaha
@@ -94,9 +100,9 @@
 --
 -- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV'
+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV'
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NV'
+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NV'
 --
 -- == Version History
 --
@@ -111,39 +117,36 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_memory_decompression Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_NV_memory_decompression Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
 module Vulkan.Extensions.VK_NV_memory_decompression  ( cmdDecompressMemoryNV
                                                      , cmdDecompressMemoryIndirectCountNV
-                                                     , PhysicalDeviceMemoryDecompressionFeaturesNV(..)
-                                                     , PhysicalDeviceMemoryDecompressionPropertiesNV(..)
+                                                     , pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV
+                                                     , pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NV
                                                      , DecompressMemoryRegionNV(..)
                                                      , MemoryDecompressionMethodFlagsNV
-                                                     , MemoryDecompressionMethodFlagBitsNV( MEMORY_DECOMPRESSION_METHOD_GDEFLATE_1_0_BIT_NV
-                                                                                          , ..
-                                                                                          )
+                                                     , MemoryDecompressionMethodFlagBitsNV
+                                                     , PhysicalDeviceMemoryDecompressionFeaturesNV
+                                                     , PhysicalDeviceMemoryDecompressionPropertiesNV
                                                      , NV_MEMORY_DECOMPRESSION_SPEC_VERSION
                                                      , pattern NV_MEMORY_DECOMPRESSION_SPEC_VERSION
                                                      , NV_MEMORY_DECOMPRESSION_EXTENSION_NAME
                                                      , pattern NV_MEMORY_DECOMPRESSION_EXTENSION_NAME
+                                                     , PhysicalDeviceMemoryDecompressionFeaturesEXT(..)
+                                                     , PhysicalDeviceMemoryDecompressionPropertiesEXT(..)
+                                                     , MemoryDecompressionMethodFlagBitsEXT(..)
+                                                     , MemoryDecompressionMethodFlagsEXT
                                                      ) where
 
-import Data.Bits (Bits)
-import Data.Bits (FiniteBits)
-import Vulkan.Internal.Utils (enumReadPrec)
-import Vulkan.Internal.Utils (enumShowsPrec)
 import Vulkan.Internal.Utils (traceAroundEvent)
 import Control.Monad (unless)
 import Control.Monad.IO.Class (liftIO)
 import Foreign.Marshal.Alloc (allocaBytes)
 import GHC.IO (throwIO)
 import GHC.Ptr (nullFunPtr)
-import Foreign.Ptr (nullPtr)
 import Foreign.Ptr (plusPtr)
-import GHC.Show (showString)
-import Numeric (showHex)
 import Control.Monad.Trans.Class (lift)
 import Control.Monad.Trans.Cont (evalContT)
 import qualified Data.Vector (imapM_)
@@ -152,7 +155,6 @@
 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.String (IsString)
@@ -166,17 +168,11 @@
 import GHC.IO.Exception (IOException(..))
 import Foreign.Ptr (FunPtr)
 import Foreign.Ptr (Ptr)
-import GHC.Read (Read(readPrec))
-import GHC.Show (Show(showsPrec))
 import Data.Word (Word32)
-import Data.Word (Word64)
 import Data.Kind (Type)
 import Control.Monad.Trans.Cont (ContT(..))
 import Data.Vector (Vector)
-import Vulkan.Core10.FundamentalTypes (bool32ToBool)
-import Vulkan.Core10.FundamentalTypes (boolToBool32)
 import Vulkan.NamedType ((:::))
-import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.Core10.Handles (CommandBuffer)
 import Vulkan.Core10.Handles (CommandBuffer(..))
 import Vulkan.Core10.Handles (CommandBuffer(CommandBuffer))
@@ -185,10 +181,16 @@
 import Vulkan.Dynamic (DeviceCmds(pVkCmdDecompressMemoryIndirectCountNV))
 import Vulkan.Dynamic (DeviceCmds(pVkCmdDecompressMemoryNV))
 import Vulkan.Core10.FundamentalTypes (DeviceSize)
-import Vulkan.Core10.FundamentalTypes (Flags64)
-import Vulkan.Core10.Enums.StructureType (StructureType)
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NV))
+import Vulkan.Extensions.VK_EXT_memory_decompression (MemoryDecompressionMethodFlagBitsEXT)
+import Vulkan.Extensions.VK_EXT_memory_decompression (MemoryDecompressionMethodFlagsEXT)
+import Vulkan.Extensions.VK_EXT_memory_decompression (PhysicalDeviceMemoryDecompressionFeaturesEXT)
+import Vulkan.Extensions.VK_EXT_memory_decompression (PhysicalDeviceMemoryDecompressionPropertiesEXT)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_EXT))
+import Vulkan.Extensions.VK_EXT_memory_decompression (MemoryDecompressionMethodFlagBitsEXT(..))
+import Vulkan.Extensions.VK_EXT_memory_decompression (MemoryDecompressionMethodFlagsEXT)
+import Vulkan.Extensions.VK_EXT_memory_decompression (PhysicalDeviceMemoryDecompressionFeaturesEXT(..))
+import Vulkan.Extensions.VK_EXT_memory_decompression (PhysicalDeviceMemoryDecompressionPropertiesEXT(..))
 foreign import ccall
 #if !defined(SAFE_FOREIGN_CALLS)
   unsafe
@@ -196,18 +198,20 @@
   "dynamic" mkVkCmdDecompressMemoryNV
   :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Ptr DecompressMemoryRegionNV -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Ptr DecompressMemoryRegionNV -> IO ()
 
--- | vkCmdDecompressMemoryNV - Decompress data between memory regions
+-- | vkCmdDecompressMemoryNV - Decompress memory containing compressed data
 --
 -- = Description
 --
 -- Each region specified in @pDecompressMemoryRegions@ is decompressed from
--- the source to destination region based on the specified decompression
--- method.
+-- the compressed to decompressed region based on the decompression method
+-- specified in 'DecompressMemoryRegionNV'::@decompressionMethod@. If the
+-- regions containing compressed and decompressed data overlap, the
+-- decompression behavior is undefined.
 --
 -- == Valid Usage
 --
 -- -   #VUID-vkCmdDecompressMemoryNV-None-07684# The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-memoryDecompression memoryDecompression>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-memoryDecompression memoryDecompression>
 --     feature /must/ be enabled
 --
 -- == Valid Usage (Implicit)
@@ -226,11 +230,16 @@
 --
 -- -   #VUID-vkCmdDecompressMemoryNV-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics, or compute operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', or
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdDecompressMemoryNV-renderpass# This command /must/ only
 --     be called outside of a render pass instance
 --
+-- -   #VUID-vkCmdDecompressMemoryNV-suspended# This command /must/ not be
+--     called between suspended render pass instances
+--
 -- -   #VUID-vkCmdDecompressMemoryNV-videocoding# This command /must/ only
 --     be called outside of a video coding scope
 --
@@ -251,10 +260,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | Graphics                                                                                                              | Action                                                                                                                                 |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | Compute                                                                                                               |                                                                                                                                        |
+-- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | VK_QUEUE_GRAPHICS_BIT                                                                                                 |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdDecompressMemoryNV is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_memory_decompression VK_NV_memory_decompression>,
@@ -297,40 +311,29 @@
 -- = Description
 --
 -- Each region specified in @indirectCommandsAddress@ is decompressed from
--- the source to destination region based on the specified decompression
--- method.
+-- the source to destination region based on the specified
+-- @decompressionMethod@.
 --
 -- == Valid Usage
 --
 -- -   #VUID-vkCmdDecompressMemoryIndirectCountNV-None-07692# The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-memoryDecompression memoryDecompression>
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-memoryDecompression memoryDecompression>
 --     feature /must/ be enabled
 --
--- -   #VUID-vkCmdDecompressMemoryIndirectCountNV-indirectCommandsAddress-07693#
---     If @indirectCommandsAddress@ comes from a non-sparse buffer then it
---     /must/ be bound completely and contiguously to a single
---     'Vulkan.Core10.Handles.DeviceMemory' object
---
 -- -   #VUID-vkCmdDecompressMemoryIndirectCountNV-indirectCommandsAddress-07694#
---     The 'Vulkan.Core10.Handles.Buffer' that @indirectCommandsAddress@
---     comes from /must/ have been created with the
+--     @indirectCommandsAddress@ /must/ be a device address allocated to
+--     the application from a buffer created with the
 --     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'
---     bit set
---
--- -   #VUID-vkCmdDecompressMemoryIndirectCountNV-offset-07695# @offset@
---     /must/ be a multiple of @4@
+--     usage flag set
 --
--- -   #VUID-vkCmdDecompressMemoryIndirectCountNV-indirectCommandsCountAddress-07696#
---     If @indirectCommandsCountAddress@ comes from a non-sparse buffer
---     then it /must/ be bound completely and contiguously to a single
---     'Vulkan.Core10.Handles.DeviceMemory' object
+-- -   #VUID-vkCmdDecompressMemoryIndirectCountNV-indirectCommandsAddress-07695#
+--     @indirectCommandsAddress@ /must/ be a multiple of @4@
 --
 -- -   #VUID-vkCmdDecompressMemoryIndirectCountNV-indirectCommandsCountAddress-07697#
---     The 'Vulkan.Core10.Handles.Buffer' that
---     @indirectCommandsCountAddress@ comes from /must/ have been created
---     with the
+--     @indirectCommandsCountAddress@ /must/ be a device address allocated
+--     to the application from a buffer created with the
 --     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'
---     bit set
+--     usage flag set
 --
 -- -   #VUID-vkCmdDecompressMemoryIndirectCountNV-indirectCommandsCountAddress-07698#
 --     @indirectCommandsCountAddress@ /must/ be a multiple of @4@
@@ -338,43 +341,48 @@
 -- -   #VUID-vkCmdDecompressMemoryIndirectCountNV-indirectCommandsCountAddress-07699#
 --     The count stored in @indirectCommandsCountAddress@ /must/ be less
 --     than or equal to
---     'PhysicalDeviceMemoryDecompressionPropertiesNV'::@maxDecompressionIndirectCount@
+--     'Vulkan.Extensions.VK_EXT_memory_decompression.PhysicalDeviceMemoryDecompressionPropertiesEXT'::@maxDecompressionIndirectCount@
 --
--- -   #VUID-vkCmdDecompressMemoryIndirectCountNV-stride-07700# @stride@
+-- -   #VUID-vkCmdDecompressMemoryIndirectCountNV-indirectCommandsAddress-11794#
+--     All device addresses between @indirectCommandsAddress@ and
+--     @indirectCommandsAddress@ + (@stride@ × (count stored in
+--     @indirectCommandsCountAddress@)) - 1 /must/ be in the buffer device
+--     address range of the same buffer
+--
+-- -   #VUID-vkCmdDecompressMemoryIndirectCountNV-stride-11770# @stride@
 --     /must/ be a multiple of @4@ and /must/ be greater than or equal to
 --     sizeof('DecompressMemoryRegionNV')
 --
--- -   #VUID-vkCmdDecompressMemoryIndirectCountNV-indirectCommandsCountAddress-07701#
---     If the count stored in @indirectCommandsCountAddress@ is equal to
---     @1@, (@offset@ + sizeof('DecompressMemoryRegionNV')) /must/ be less
---     than or equal to the size of the 'Vulkan.Core10.Handles.Buffer' that
---     @indirectCommandsAddress@ comes from
---
--- -   #VUID-vkCmdDecompressMemoryIndirectCountNV-indirectCommandsCountAddress-07702#
---     If the count stored in @indirectCommandsCountAddress@ is greater
---     than @1@, @indirectCommandsAddress@ +
---     sizeof('DecompressMemoryRegionNV') + (@stride@ × (count stored in
---     @countBuffer@ - 1)) /must/ be less than or equal to the last valid
---     address in the 'Vulkan.Core10.Handles.Buffer' that
---     @indirectCommandsAddress@ was created from
---
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-vkCmdDecompressMemoryIndirectCountNV-commandBuffer-parameter#
 --     @commandBuffer@ /must/ be a valid
 --     'Vulkan.Core10.Handles.CommandBuffer' handle
 --
+-- -   #VUID-vkCmdDecompressMemoryIndirectCountNV-indirectCommandsAddress-parameter#
+--     @indirectCommandsAddress@ /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' value
+--
+-- -   #VUID-vkCmdDecompressMemoryIndirectCountNV-indirectCommandsCountAddress-parameter#
+--     @indirectCommandsCountAddress@ /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' value
+--
 -- -   #VUID-vkCmdDecompressMemoryIndirectCountNV-commandBuffer-recording#
 --     @commandBuffer@ /must/ be in the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>
 --
 -- -   #VUID-vkCmdDecompressMemoryIndirectCountNV-commandBuffer-cmdpool#
 --     The 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics, or compute operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', or
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdDecompressMemoryIndirectCountNV-renderpass# This command
 --     /must/ only be called outside of a render pass instance
 --
+-- -   #VUID-vkCmdDecompressMemoryIndirectCountNV-suspended# This command
+--     /must/ not be called between suspended render pass instances
+--
 -- -   #VUID-vkCmdDecompressMemoryIndirectCountNV-videocoding# This command
 --     /must/ only be called outside of a video coding scope
 --
@@ -392,10 +400,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | Graphics                                                                                                              | Action                                                                                                                                 |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | Compute                                                                                                               |                                                                                                                                        |
+-- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | VK_QUEUE_GRAPHICS_BIT                                                                                                 |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdDecompressMemoryIndirectCountNV is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_memory_decompression VK_NV_memory_decompression>,
@@ -410,8 +423,8 @@
                                       -- parameters laid out as an array of 'DecompressMemoryRegionNV'
                                       -- structures.
                                       ("indirectCommandsAddress" ::: DeviceAddress)
-                                   -> -- | @indirectCommandsCountAddress@ is the device address containing the
-                                      -- decompression count.
+                                   -> -- | @indirectCommandsCountAddress@ is the device address containing a 32-bit
+                                      -- integer value specifying the decompression count.
                                       ("indirectCommandsCountAddress" ::: DeviceAddress)
                                    -> -- | @stride@ is the byte stride between successive sets of decompression
                                       -- parameters located starting from @indirectCommandsAddress@.
@@ -433,195 +446,68 @@
   pure $ ()
 
 
--- | VkPhysicalDeviceMemoryDecompressionFeaturesNV - Structure describing if
--- memory decompression is supported by an implementation
---
--- = Members
---
--- This structure describes the following features:
---
--- = Description
---
--- If the 'PhysicalDeviceMemoryDecompressionFeaturesNV' structure is
--- included in the @pNext@ chain of the
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
--- structure passed to
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
--- it is filled in to indicate whether each corresponding feature is
--- supported. 'PhysicalDeviceMemoryDecompressionFeaturesNV' /can/ also be
--- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
---
--- == Valid Usage (Implicit)
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_memory_decompression VK_NV_memory_decompression>,
--- 'Vulkan.Core10.FundamentalTypes.Bool32',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PhysicalDeviceMemoryDecompressionFeaturesNV = PhysicalDeviceMemoryDecompressionFeaturesNV
-  { -- | #features-memoryDecompression# @memoryDecompression@ indicates whether
-    -- memory decompression is supported.
-    memoryDecompression :: Bool }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PhysicalDeviceMemoryDecompressionFeaturesNV)
-#endif
-deriving instance Show PhysicalDeviceMemoryDecompressionFeaturesNV
-
-instance ToCStruct PhysicalDeviceMemoryDecompressionFeaturesNV where
-  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PhysicalDeviceMemoryDecompressionFeaturesNV{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (memoryDecompression))
-    f
-  cStructSize = 24
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
-    f
-
-instance FromCStruct PhysicalDeviceMemoryDecompressionFeaturesNV where
-  peekCStruct p = do
-    memoryDecompression <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
-    pure $ PhysicalDeviceMemoryDecompressionFeaturesNV
-             (bool32ToBool memoryDecompression)
-
-instance Storable PhysicalDeviceMemoryDecompressionFeaturesNV where
-  sizeOf ~_ = 24
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero PhysicalDeviceMemoryDecompressionFeaturesNV where
-  zero = PhysicalDeviceMemoryDecompressionFeaturesNV
-           zero
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV = STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_EXT
 
 
--- | VkPhysicalDeviceMemoryDecompressionPropertiesNV - Structure describing
--- supported memory decompression methods by an implementation
---
--- = Description
---
--- If the 'PhysicalDeviceMemoryDecompressionPropertiesNV' structure is
--- included in the @pNext@ chain of the
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
--- structure passed to
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceProperties2',
--- it is filled in with each corresponding implementation-dependent
--- property.
---
--- == Valid Usage (Implicit)
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_memory_decompression VK_NV_memory_decompression>,
--- 'MemoryDecompressionMethodFlagsNV',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PhysicalDeviceMemoryDecompressionPropertiesNV = PhysicalDeviceMemoryDecompressionPropertiesNV
-  { -- | @decompressionMethods@ is a bitmask of
-    -- 'MemoryDecompressionMethodFlagBitsNV' specifying memory decompression
-    -- methods supported by the implementation.
-    decompressionMethods :: MemoryDecompressionMethodFlagsNV
-  , -- | @maxDecompressionIndirectCount@ specifies the maximum supported count
-    -- value in the @countBuffer@ of 'cmdDecompressMemoryIndirectCountNV'
-    maxDecompressionIndirectCount :: Word64
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PhysicalDeviceMemoryDecompressionPropertiesNV)
-#endif
-deriving instance Show PhysicalDeviceMemoryDecompressionPropertiesNV
-
-instance ToCStruct PhysicalDeviceMemoryDecompressionPropertiesNV where
-  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PhysicalDeviceMemoryDecompressionPropertiesNV{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NV)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr MemoryDecompressionMethodFlagsNV)) (decompressionMethods)
-    poke ((p `plusPtr` 24 :: Ptr Word64)) (maxDecompressionIndirectCount)
-    f
-  cStructSize = 32
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NV)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr MemoryDecompressionMethodFlagsNV)) (zero)
-    poke ((p `plusPtr` 24 :: Ptr Word64)) (zero)
-    f
-
-instance FromCStruct PhysicalDeviceMemoryDecompressionPropertiesNV where
-  peekCStruct p = do
-    decompressionMethods <- peek @MemoryDecompressionMethodFlagsNV ((p `plusPtr` 16 :: Ptr MemoryDecompressionMethodFlagsNV))
-    maxDecompressionIndirectCount <- peek @Word64 ((p `plusPtr` 24 :: Ptr Word64))
-    pure $ PhysicalDeviceMemoryDecompressionPropertiesNV
-             decompressionMethods maxDecompressionIndirectCount
-
-instance Storable PhysicalDeviceMemoryDecompressionPropertiesNV where
-  sizeOf ~_ = 32
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero PhysicalDeviceMemoryDecompressionPropertiesNV where
-  zero = PhysicalDeviceMemoryDecompressionPropertiesNV
-           zero
-           zero
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NV"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NV = STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_EXT
 
 
--- | VkDecompressMemoryRegionNV - Structure specifying decompression
+-- | VkDecompressMemoryRegionNV - Structure specifying decompression region
 -- parameters
 --
 -- == Valid Usage
 --
--- -   #VUID-VkDecompressMemoryRegionNV-srcAddress-07685# The @srcAddress@
+-- -   #VUID-VkDecompressMemoryRegionNV-decompressionMethod-07690# The
+--     @decompressionMethod@ /must/ have a single bit set
+--
+-- -   #VUID-VkDecompressMemoryRegionNV-srcAddress-07685# @srcAddress@
 --     /must/ be 4 byte aligned
 --
--- -   #VUID-VkDecompressMemoryRegionNV-srcAddress-07686# The memory in
---     range @srcAddress@ and @srcAddress@ + @compressedSize@ /must/ be
---     valid and bound to a 'Vulkan.Core10.Handles.DeviceMemory' object
+-- -   #VUID-VkDecompressMemoryRegionNV-srcAddress-07686# The memory range
+--     defined by @srcAddress@ and @compressedSize@ /must/ be contained
+--     within the size of the buffer bound to @srcAddress@, minus the
+--     offset of @srcAddress@ from the base address of that buffer
 --
--- -   #VUID-VkDecompressMemoryRegionNV-dstAddress-07687# The @dstAddress@
+-- -   #VUID-VkDecompressMemoryRegionNV-dstAddress-07687# @dstAddress@
 --     /must/ be 4 byte aligned
 --
--- -   #VUID-VkDecompressMemoryRegionNV-decompressionMethod-09395# If
---     @decompressionMethod@ is
---     'MEMORY_DECOMPRESSION_METHOD_GDEFLATE_1_0_BIT_NV', then
---     @decompressedSize@ /must/ be less than or equal to 65536 bytes
---
--- -   #VUID-VkDecompressMemoryRegionNV-dstAddress-07688# The memory in
---     range @dstAddress@ and @dstAddress@ + @decompressedSize@ /must/ be
---     valid and bound to a 'Vulkan.Core10.Handles.DeviceMemory' object
+-- -   #VUID-VkDecompressMemoryRegionNV-dstAddress-07688# The memory range
+--     defined by @dstAddress@ and @decompressedSize@ /must/ be contained
+--     within the size of the buffer bound to @dstAddress@, minus the
+--     offset of @dstAddress@ from the base address of that buffer
 --
--- -   #VUID-VkDecompressMemoryRegionNV-decompressedSize-07689# The
+-- -   #VUID-VkDecompressMemoryRegionNV-decompressedSize-07689#
 --     @decompressedSize@ /must/ be large enough to hold the decompressed
 --     data based on the @decompressionMethod@
 --
--- -   #VUID-VkDecompressMemoryRegionNV-decompressionMethod-07690# The
---     @decompressionMethod@ /must/ have a single bit set
+-- -   #VUID-VkDecompressMemoryRegionNV-compressedSize-11795#
+--     @compressedSize@ /must/ not be zero
 --
--- -   #VUID-VkDecompressMemoryRegionNV-srcAddress-07691# The @srcAddress@
---     to @srcAddress@ + @compressedSize@ region /must/ not overlap with
---     the @dstAddress@ and @dstAddress@ + @decompressedSize@ region
+-- -   #VUID-VkDecompressMemoryRegionNV-decompressedSize-11796#
+--     @decompressedSize@ /must/ not be zero
 --
--- == Valid Usage (Implicit)
+-- -   #VUID-VkDecompressMemoryRegionNV-srcAddress-07691# The memory range
+--     defined by @srcAddress@ and @compressedSize@ /must/ not overlap the
+--     memory range defined by @dstAddress@ and @decompressedSize@
 --
--- -   #VUID-VkDecompressMemoryRegionNV-decompressionMethod-parameter#
---     @decompressionMethod@ /must/ be a valid combination of
---     'MemoryDecompressionMethodFlagBitsNV' values
+-- -   #VUID-VkDecompressMemoryRegionNV-decompressionMethod-09395# If
+--     @decompressionMethod@ is
+--     'Vulkan.Extensions.VK_EXT_memory_decompression.MEMORY_DECOMPRESSION_METHOD_GDEFLATE_1_0_BIT_EXT',
+--     then @decompressedSize@ /must/ be less than or equal to 65536 bytes
 --
--- -   #VUID-VkDecompressMemoryRegionNV-decompressionMethod-requiredbitmask#
---     @decompressionMethod@ /must/ not be @0@
+-- -   #VUID-vkCmdDecompressMemoryNV-memoryDecompression-11766# The
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-memoryDecompression memoryDecompression>
+--     feature /must/ be enabled
 --
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_memory_decompression VK_NV_memory_decompression>,
 -- 'Vulkan.Core10.FundamentalTypes.DeviceAddress',
 -- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
--- 'MemoryDecompressionMethodFlagsNV', 'cmdDecompressMemoryNV'
+-- 'Vulkan.Extensions.VK_EXT_memory_decompression.MemoryDecompressionMethodFlagsEXT',
+-- 'cmdDecompressMemoryNV'
 data DecompressMemoryRegionNV = DecompressMemoryRegionNV
   { -- | @srcAddress@ is the address where compressed data is stored.
     srcAddress :: DeviceAddress
@@ -635,7 +521,7 @@
   , -- | @decompressionMethod@ is a bitmask of
     -- 'MemoryDecompressionMethodFlagBitsNV' with a single bit set specifying
     -- the method used to decompress data.
-    decompressionMethod :: MemoryDecompressionMethodFlagsNV
+    decompressionMethod :: MemoryDecompressionMethodFlagsEXT
   }
   deriving (Typeable, Eq)
 #if defined(GENERIC_INSTANCES)
@@ -650,7 +536,7 @@
     poke ((p `plusPtr` 8 :: Ptr DeviceAddress)) (dstAddress)
     poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (compressedSize)
     poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (decompressedSize)
-    poke ((p `plusPtr` 32 :: Ptr MemoryDecompressionMethodFlagsNV)) (decompressionMethod)
+    poke ((p `plusPtr` 32 :: Ptr MemoryDecompressionMethodFlagsEXT)) (decompressionMethod)
     f
   cStructSize = 40
   cStructAlignment = 8
@@ -659,7 +545,7 @@
     poke ((p `plusPtr` 8 :: Ptr DeviceAddress)) (zero)
     poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (zero)
     poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (zero)
-    poke ((p `plusPtr` 32 :: Ptr MemoryDecompressionMethodFlagsNV)) (zero)
+    poke ((p `plusPtr` 32 :: Ptr MemoryDecompressionMethodFlagsEXT)) (zero)
     f
 
 instance FromCStruct DecompressMemoryRegionNV where
@@ -668,7 +554,7 @@
     dstAddress <- peek @DeviceAddress ((p `plusPtr` 8 :: Ptr DeviceAddress))
     compressedSize <- peek @DeviceSize ((p `plusPtr` 16 :: Ptr DeviceSize))
     decompressedSize <- peek @DeviceSize ((p `plusPtr` 24 :: Ptr DeviceSize))
-    decompressionMethod <- peek @MemoryDecompressionMethodFlagsNV ((p `plusPtr` 32 :: Ptr MemoryDecompressionMethodFlagsNV))
+    decompressionMethod <- peek @MemoryDecompressionMethodFlagsEXT ((p `plusPtr` 32 :: Ptr MemoryDecompressionMethodFlagsEXT))
     pure $ DecompressMemoryRegionNV
              srcAddress
              dstAddress
@@ -691,52 +577,21 @@
            zero
 
 
-type MemoryDecompressionMethodFlagsNV = MemoryDecompressionMethodFlagBitsNV
+-- No documentation found for TopLevel "VkMemoryDecompressionMethodFlagsNV"
+type MemoryDecompressionMethodFlagsNV = MemoryDecompressionMethodFlagsEXT
 
--- | VkMemoryDecompressionMethodFlagBitsNV - List the supported memory
--- decompression methods
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_memory_decompression VK_NV_memory_decompression>,
--- 'MemoryDecompressionMethodFlagsNV'
-newtype MemoryDecompressionMethodFlagBitsNV = MemoryDecompressionMethodFlagBitsNV Flags64
-  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'MEMORY_DECOMPRESSION_METHOD_GDEFLATE_1_0_BIT_NV' specifies that the
--- GDeflate 1.0 algorithm is used to decompress data.
-pattern MEMORY_DECOMPRESSION_METHOD_GDEFLATE_1_0_BIT_NV = MemoryDecompressionMethodFlagBitsNV 0x0000000000000001
+-- No documentation found for TopLevel "VkMemoryDecompressionMethodFlagBitsNV"
+type MemoryDecompressionMethodFlagBitsNV = MemoryDecompressionMethodFlagBitsEXT
 
-conNameMemoryDecompressionMethodFlagBitsNV :: String
-conNameMemoryDecompressionMethodFlagBitsNV = "MemoryDecompressionMethodFlagBitsNV"
 
-enumPrefixMemoryDecompressionMethodFlagBitsNV :: String
-enumPrefixMemoryDecompressionMethodFlagBitsNV = "MEMORY_DECOMPRESSION_METHOD_GDEFLATE_1_0_BIT_NV"
+-- No documentation found for TopLevel "VkPhysicalDeviceMemoryDecompressionFeaturesNV"
+type PhysicalDeviceMemoryDecompressionFeaturesNV = PhysicalDeviceMemoryDecompressionFeaturesEXT
 
-showTableMemoryDecompressionMethodFlagBitsNV :: [(MemoryDecompressionMethodFlagBitsNV, String)]
-showTableMemoryDecompressionMethodFlagBitsNV =
-  [
-    ( MEMORY_DECOMPRESSION_METHOD_GDEFLATE_1_0_BIT_NV
-    , ""
-    )
-  ]
 
-instance Show MemoryDecompressionMethodFlagBitsNV where
-  showsPrec =
-    enumShowsPrec
-      enumPrefixMemoryDecompressionMethodFlagBitsNV
-      showTableMemoryDecompressionMethodFlagBitsNV
-      conNameMemoryDecompressionMethodFlagBitsNV
-      (\(MemoryDecompressionMethodFlagBitsNV x) -> x)
-      (\x -> showString "0x" . showHex x)
+-- No documentation found for TopLevel "VkPhysicalDeviceMemoryDecompressionPropertiesNV"
+type PhysicalDeviceMemoryDecompressionPropertiesNV = PhysicalDeviceMemoryDecompressionPropertiesEXT
 
-instance Read MemoryDecompressionMethodFlagBitsNV where
-  readPrec =
-    enumReadPrec
-      enumPrefixMemoryDecompressionMethodFlagBitsNV
-      showTableMemoryDecompressionMethodFlagBitsNV
-      conNameMemoryDecompressionMethodFlagBitsNV
-      MemoryDecompressionMethodFlagBitsNV
 
 type NV_MEMORY_DECOMPRESSION_SPEC_VERSION = 1
 
diff --git a/src/Vulkan/Extensions/VK_NV_memory_decompression.hs-boot b/src/Vulkan/Extensions/VK_NV_memory_decompression.hs-boot
--- a/src/Vulkan/Extensions/VK_NV_memory_decompression.hs-boot
+++ b/src/Vulkan/Extensions/VK_NV_memory_decompression.hs-boot
@@ -32,6 +32,12 @@
 --     or
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.2 Vulkan Version 1.2>
 --
+-- [__Deprecation State__]
+--
+--     -   /Promoted/ to
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_memory_decompression VK_EXT_memory_decompression>
+--         extension
+--
 -- [__Contact__]
 --
 --     -   Vikram Kushwaha
@@ -94,9 +100,9 @@
 --
 -- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV'
+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV'
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NV'
+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NV'
 --
 -- == Version History
 --
@@ -111,14 +117,11 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_memory_decompression Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_NV_memory_decompression Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
-module Vulkan.Extensions.VK_NV_memory_decompression  ( DecompressMemoryRegionNV
-                                                     , PhysicalDeviceMemoryDecompressionFeaturesNV
-                                                     , PhysicalDeviceMemoryDecompressionPropertiesNV
-                                                     ) where
+module Vulkan.Extensions.VK_NV_memory_decompression  (DecompressMemoryRegionNV) where
 
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (ToCStruct)
@@ -130,20 +133,4 @@
 instance Show DecompressMemoryRegionNV
 
 instance FromCStruct DecompressMemoryRegionNV
-
-
-data PhysicalDeviceMemoryDecompressionFeaturesNV
-
-instance ToCStruct PhysicalDeviceMemoryDecompressionFeaturesNV
-instance Show PhysicalDeviceMemoryDecompressionFeaturesNV
-
-instance FromCStruct PhysicalDeviceMemoryDecompressionFeaturesNV
-
-
-data PhysicalDeviceMemoryDecompressionPropertiesNV
-
-instance ToCStruct PhysicalDeviceMemoryDecompressionPropertiesNV
-instance Show PhysicalDeviceMemoryDecompressionPropertiesNV
-
-instance FromCStruct PhysicalDeviceMemoryDecompressionPropertiesNV
 
diff --git a/src/Vulkan/Extensions/VK_NV_mesh_shader.hs b/src/Vulkan/Extensions/VK_NV_mesh_shader.hs
--- a/src/Vulkan/Extensions/VK_NV_mesh_shader.hs
+++ b/src/Vulkan/Extensions/VK_NV_mesh_shader.hs
@@ -27,11343 +27,13298 @@
 --
 -- [__API Interactions__]
 --
---     -   Interacts with VK_EXT_device_generated_commands
---
--- [__SPIR-V Dependencies__]
---
---     -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/NV/SPV_NV_mesh_shader.html SPV_NV_mesh_shader>
---
--- [__Contact__]
---
---     -   Christoph Kubisch
---         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_NV_mesh_shader] @pixeljetstream%0A*Here describe the issue or question you have about the VK_NV_mesh_shader extension* >
---
--- == Other Extension Metadata
---
--- [__Last Modified Date__]
---     2018-07-19
---
--- [__Interactions and External Dependencies__]
---
---     -   This extension provides API support for
---         <https://github.com/KhronosGroup/GLSL/blob/main/extensions/nv/GLSL_NV_mesh_shader.txt GLSL_NV_mesh_shader>
---
--- [__Contributors__]
---
---     -   Pat Brown, NVIDIA
---
---     -   Jeff Bolz, NVIDIA
---
---     -   Daniel Koch, NVIDIA
---
---     -   Piers Daniell, NVIDIA
---
---     -   Pierre Boudier, NVIDIA
---
--- == Description
---
--- This extension provides a new mechanism allowing applications to
--- generate collections of geometric primitives via programmable mesh
--- shading. It is an alternative to the existing programmable primitive
--- shading pipeline, which relied on generating input primitives by a fixed
--- function assembler as well as fixed function vertex fetch.
---
--- There are new programmable shader types — the task and mesh shader — to
--- generate these collections to be processed by fixed-function primitive
--- assembly and rasterization logic. When task and mesh shaders are
--- dispatched, they replace the core
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization stages>,
--- including vertex array attribute fetching, vertex shader processing,
--- tessellation, and geometry shader processing.
---
--- This extension also adds support for the following SPIR-V extension in
--- Vulkan:
---
--- -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/NV/SPV_NV_mesh_shader.html SPV_NV_mesh_shader>
---
--- == New Commands
---
--- -   'cmdDrawMeshTasksIndirectCountNV'
---
--- -   'cmdDrawMeshTasksIndirectNV'
---
--- -   'cmdDrawMeshTasksNV'
---
--- == New Structures
---
--- -   'DrawMeshTasksIndirectCommandNV'
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
---     'Vulkan.Core10.Device.DeviceCreateInfo':
---
---     -   'PhysicalDeviceMeshShaderFeaturesNV'
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
---
---     -   'PhysicalDeviceMeshShaderPropertiesNV'
---
--- == New Enum Constants
---
--- -   'NV_MESH_SHADER_EXTENSION_NAME'
---
--- -   'NV_MESH_SHADER_SPEC_VERSION'
---
--- -   Extending
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits':
---
---     -   'PIPELINE_STAGE_MESH_SHADER_BIT_NV'
---
---     -   'PIPELINE_STAGE_TASK_SHADER_BIT_NV'
---
--- -   Extending
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits':
---
---     -   'SHADER_STAGE_MESH_BIT_NV'
---
---     -   'SHADER_STAGE_TASK_BIT_NV'
---
--- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV'
---
--- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_generated_commands VK_EXT_device_generated_commands>
--- is supported:
---
--- -   Extending
---     'Vulkan.Extensions.VK_EXT_device_generated_commands.IndirectCommandsTokenTypeEXT':
---
---     -   'Vulkan.Extensions.VK_EXT_device_generated_commands.INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_NV_EXT'
---
---     -   'Vulkan.Extensions.VK_EXT_device_generated_commands.INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV_EXT'
---
--- == New or Modified Built-In Variables
---
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-taskcount TaskCountNV>
---
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-primitivecount PrimitiveCountNV>
---
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-primitiveindices PrimitiveIndicesNV>
---
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-clipdistancepv ClipDistancePerViewNV>
---
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-culldistancepv CullDistancePerViewNV>
---
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-layerpv LayerPerViewNV>
---
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-meshviewcount MeshViewCountNV>
---
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-meshviewindices MeshViewIndicesNV>
---
--- -   (modified)@Position@
---
--- -   (modified)@PointSize@
---
--- -   (modified)@ClipDistance@
---
--- -   (modified)@CullDistance@
---
--- -   (modified)@PrimitiveId@
---
--- -   (modified)@Layer@
---
--- -   (modified)@ViewportIndex@
---
--- -   (modified)@WorkgroupSize@
---
--- -   (modified)@WorkgroupId@
---
--- -   (modified)@LocalInvocationId@
---
--- -   (modified)@GlobalInvocationId@
---
--- -   (modified)@LocalInvocationIndex@
---
--- -   (modified)@DrawIndex@
---
--- -   (modified)@ViewportMaskNV@
---
--- -   (modified)@PositionPerViewNV@
---
--- -   (modified)@ViewportMaskPerViewNV@
---
--- == New SPIR-V Capability
---
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-MeshShadingNV MeshShadingNV>
---
--- == Issues
---
--- 1.  How to name this extension?
---
---     __RESOLVED__: VK_NV_mesh_shader
---
---     Other options considered:
---
---     -   VK_NV_mesh_shading
---
---     -   VK_NV_programmable_mesh_shading
---
---     -   VK_NV_primitive_group_shading
---
---     -   VK_NV_grouped_drawing
---
--- 2.  Do we need a new VkPrimitiveTopology?
---
---     __RESOLVED__: No. We skip the InputAssembler stage.
---
--- 3.  Should we allow Instancing?
---
---     __RESOLVED__: No. There is no fixed function input, other than the
---     IDs. However, allow offsetting with a “first” value.
---
--- 4.  Should we use existing vkCmdDraw or introduce new functions?
---
---     __RESOLVED__: Introduce new functions.
---
---     New functions make it easier to separate from “programmable
---     primitive shading” chapter, less “dual use” language about existing
---     functions having alternative behavior. The text around the existing
---     “draws” is heavily based around emitting vertices.
---
--- 5.  If new functions, how to name?
---
---     __RESOLVED__: CmdDrawMeshTasks*
---
---     Other options considered:
---
---     -   CmdDrawMeshed
---
---     -   CmdDrawTasked
---
---     -   CmdDrawGrouped
---
--- 6.  Should VK_SHADER_STAGE_ALL_GRAPHICS be updated to include the new
---     stages?
---
---     __RESOLVED__: No. If an application were to be recompiled with
---     headers that include additional shader stage bits in
---     VK_SHADER_STAGE_ALL_GRAPHICS, then the previously valid application
---     would no longer be valid on implementations that do not support mesh
---     or task shaders. This means the change would not be backwards
---     compatible. It is too bad VkShaderStageFlagBits does not have a
---     dedicated “all supported graphics stages” bit like
---     VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT, which would have avoided this
---     problem.
---
--- == Version History
---
--- -   Revision 1, 2018-07-19 (Christoph Kubisch, Daniel Koch)
---
---     -   Internal revisions
---
--- == See Also
---
--- No cross-references are available
---
--- == Document Notes
---
--- For more information, see the
--- <https://registry.khronos.org/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.
-module Vulkan.Extensions.VK_NV_mesh_shader  ( cmdDrawMeshTasksNV
-                                            , cmdDrawMeshTasksIndirectNV
-                                            , cmdDrawMeshTasksIndirectCountNV
-                                            , pattern SHADER_STAGE_TASK_BIT_NV
-                                            , pattern SHADER_STAGE_MESH_BIT_NV
-                                            , pattern PIPELINE_STAGE_TASK_SHADER_BIT_NV
-                                            , pattern PIPELINE_STAGE_MESH_SHADER_BIT_NV
-                                            , PhysicalDeviceMeshShaderFeaturesNV(..)
-                                            , PhysicalDeviceMeshShaderPropertiesNV(..)
-                                            , DrawMeshTasksIndirectCommandNV(..)
-                                            , NV_MESH_SHADER_SPEC_VERSION
-                                            , pattern NV_MESH_SHADER_SPEC_VERSION
-                                            , NV_MESH_SHADER_EXTENSION_NAME
-                                            , pattern NV_MESH_SHADER_EXTENSION_NAME
-                                            , IndirectCommandsTokenTypeEXT(..)
-                                            ) where
-
-import Vulkan.CStruct.Utils (FixedArray)
-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 Vulkan.CStruct (FromCStruct)
-import Vulkan.CStruct (FromCStruct(..))
-import Vulkan.CStruct (ToCStruct)
-import Vulkan.CStruct (ToCStruct(..))
-import Vulkan.Zero (Zero(..))
-import Control.Monad.IO.Class (MonadIO)
-import Data.String (IsString)
-import Data.Typeable (Typeable)
-import Foreign.Storable (Storable)
-import Foreign.Storable (Storable(peek))
-import Foreign.Storable (Storable(poke))
-import qualified Foreign.Storable (Storable(..))
-import GHC.Generics (Generic)
-import GHC.IO.Exception (IOErrorType(..))
-import GHC.IO.Exception (IOException(..))
-import Foreign.Ptr (FunPtr)
-import Foreign.Ptr (Ptr)
-import Data.Word (Word32)
-import Data.Kind (Type)
-import Vulkan.CStruct.Utils (advancePtrBytes)
-import Vulkan.Core10.FundamentalTypes (bool32ToBool)
-import Vulkan.Core10.FundamentalTypes (boolToBool32)
-import Vulkan.CStruct.Utils (lowerArrayPtr)
-import Vulkan.NamedType ((:::))
-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.Dynamic (DeviceCmds(pVkCmdDrawMeshTasksIndirectCountNV))
-import Vulkan.Dynamic (DeviceCmds(pVkCmdDrawMeshTasksIndirectNV))
-import Vulkan.Dynamic (DeviceCmds(pVkCmdDrawMeshTasksNV))
-import Vulkan.Core10.FundamentalTypes (DeviceSize)
-import Vulkan.Core10.Enums.StructureType (StructureType)
-import Vulkan.Core10.Enums.PipelineStageFlagBits (PipelineStageFlags)
-import Vulkan.Core10.Enums.PipelineStageFlagBits (PipelineStageFlagBits(PIPELINE_STAGE_MESH_SHADER_BIT_EXT))
-import Vulkan.Core10.Enums.PipelineStageFlagBits (PipelineStageFlags)
-import Vulkan.Core10.Enums.PipelineStageFlagBits (PipelineStageFlagBits(PIPELINE_STAGE_TASK_SHADER_BIT_EXT))
-import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)
-import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlagBits(SHADER_STAGE_MESH_BIT_EXT))
-import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)
-import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlagBits(SHADER_STAGE_TASK_BIT_EXT))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV))
-import Vulkan.Extensions.VK_EXT_device_generated_commands (IndirectCommandsTokenTypeEXT(..))
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdDrawMeshTasksNV
-  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Word32 -> IO ()
-
--- | vkCmdDrawMeshTasksNV - Draw mesh task work items
---
--- = Description
---
--- When the command is executed, a global workgroup consisting of
--- @taskCount@ local workgroups is assembled.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdDrawMeshTasksNV-magFilter-04553# If a
---     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
---     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR',
---     @reductionMode@ equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
---     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-vkCmdDrawMeshTasksNV-magFilter-09598# If a
---     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
---     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR' and
---     @reductionMode@ equal to either
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
---     or
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
---     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_MINMAX_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksNV-mipmapMode-04770# If a
---     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
---     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR',
---     @reductionMode@ equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
---     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-vkCmdDrawMeshTasksNV-mipmapMode-09599# If a
---     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
---     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'
---     and @reductionMode@ equal to either
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
---     or
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
---     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_MINMAX_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksNV-unnormalizedCoordinates-09635# If a
---     'Vulkan.Core10.Handles.Sampler' created with
---     @unnormalizedCoordinates@ equal to
---     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
---     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
---     the image view’s @levelCount@ and @layerCount@ /must/ be 1
---
--- -   #VUID-vkCmdDrawMeshTasksNV-unnormalizedCoordinates-09636# If a
---     'Vulkan.Core10.Handles.Sampler' created with
---     @unnormalizedCoordinates@ equal to
---     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
---     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
---     the image view’s @viewType@ /must/ be
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D' or
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D'
---
--- -   #VUID-vkCmdDrawMeshTasksNV-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-vkCmdDrawMeshTasksNV-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-vkCmdDrawMeshTasksNV-None-07888# If a
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'
---     descriptor is accessed using atomic operations as a result of this
---     command, then the storage texel buffer’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-buffer-view-format-features format features>
---     /must/ contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-02692# If a
---     'Vulkan.Core10.Handles.ImageView' is sampled with
---     'Vulkan.Core10.Enums.Filter.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.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-02693# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_filter_cubic VK_EXT_filter_cubic>
---     extension is not enabled and any 'Vulkan.Core10.Handles.ImageView'
---     is sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as a
---     result of this command, it /must/ not have a
---     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' of
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE', or
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY'
---
--- -   #VUID-vkCmdDrawMeshTasksNV-filterCubic-02694# Any
---     'Vulkan.Core10.Handles.ImageView' being sampled with
---     'Vulkan.Core10.Enums.Filter.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-vkCmdDrawMeshTasksNV-filterCubicMinmax-02695# Any
---     'Vulkan.Core10.Handles.ImageView' being sampled with
---     'Vulkan.Core10.Enums.Filter.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-vkCmdDrawMeshTasksNV-cubicRangeClamp-09212# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-cubicRangeClamp cubicRangeClamp>
---     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
---     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
---     a result of this command /must/ not have a
---     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
---     equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
---
--- -   #VUID-vkCmdDrawMeshTasksNV-reductionMode-09213# Any
---     'Vulkan.Core10.Handles.ImageView' being sampled with a
---     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
---     equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
---     as a result of this command /must/ sample with
---     'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT'
---
--- -   #VUID-vkCmdDrawMeshTasksNV-selectableCubicWeights-09214# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-selectableCubicWeights selectableCubicWeights>
---     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
---     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
---     a result of this command /must/ have
---     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.SamplerCubicWeightsCreateInfoQCOM'::@cubicWeights@
---     equal to
---     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM'
---
--- -   #VUID-vkCmdDrawMeshTasksNV-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-vkCmdDrawMeshTasksNV-OpTypeImage-07027# For any
---     'Vulkan.Core10.Handles.ImageView' being written as a storage image
---     where the image format field of the @OpTypeImage@ is @Unknown@, the
---     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_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksNV-OpTypeImage-07028# For any
---     'Vulkan.Core10.Handles.ImageView' being read as a storage image
---     where the image format field of the @OpTypeImage@ is @Unknown@, the
---     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_STORAGE_READ_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksNV-OpTypeImage-07029# For any
---     'Vulkan.Core10.Handles.BufferView' being written as a storage texel
---     buffer where the image format field of the @OpTypeImage@ is
---     @Unknown@, the view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
---     /must/ contain
---     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksNV-OpTypeImage-07030# Any
---     'Vulkan.Core10.Handles.BufferView' being read as a storage texel
---     buffer where the image format field of the @OpTypeImage@ is
---     @Unknown@ then the view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
---     /must/ contain
---     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-08600# For each set /n/ that is
---     statically used by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     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' or the
---     'Vulkan.Core10.Handles.DescriptorSetLayout' array used to create the
---     current 'Vulkan.Extensions.Handles.ShaderEXT' , as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-08601# For each push constant that
---     is statically used by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     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' or the
---     'Vulkan.Core10.Handles.DescriptorSetLayout' array used to create the
---     current 'Vulkan.Extensions.Handles.ShaderEXT' , as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-10068# For each array of resources
---     that is used by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     the indices used to access members of the array /must/ be less than
---     the descriptor count for the identified binding in the descriptor
---     sets used by this command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-maintenance4-08602# 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
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     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' or the
---     'Vulkan.Core10.Handles.DescriptorSetLayout' and
---     'Vulkan.Core10.PipelineLayout.PushConstantRange' arrays used to
---     create the current 'Vulkan.Extensions.Handles.ShaderEXT' , as
---     described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-08114# Descriptors in each bound
---     descriptor set, specified via
---     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
---     be valid as described by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
---     if they are statically used by the 'Vulkan.Core10.Handles.Pipeline'
---     bound to the pipeline bind point used by this command and the bound
---     'Vulkan.Core10.Handles.Pipeline' was not created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-08115# If the descriptors used by
---     the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
---     point were specified via
---     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', the
---     bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
---     without
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-08116# Descriptors in bound
---     descriptor buffers, specified via
---     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
---     /must/ be valid if they are dynamically used by the
---     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
---     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
---     was created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-08604# Descriptors in bound
---     descriptor buffers, specified via
---     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
---     /must/ be valid if they are dynamically used by any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     to the pipeline bind point used by this command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-08117# If the descriptors used by
---     the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
---     point were specified via
---     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
---     the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
---     with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-08119# If a descriptor is
---     dynamically used with a 'Vulkan.Core10.Handles.Pipeline' created
---     with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
---     the descriptor memory /must/ be resident
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-08605# If a descriptor is
---     dynamically used with a 'Vulkan.Extensions.Handles.ShaderEXT'
---     created with a 'Vulkan.Core10.Handles.DescriptorSetLayout' that was
---     created with
---     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
---     the descriptor memory /must/ be resident
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-08606# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject>
---     feature is not enabled, a valid pipeline /must/ be bound to the
---     pipeline bind point used by this command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-08608# If a pipeline is bound to the
---     pipeline bind point used by this command, there /must/ not have been
---     any calls to dynamic state setting commands for any state specified
---     statically in the 'Vulkan.Core10.Handles.Pipeline' object bound to
---     the pipeline bind point used by this command, since that pipeline
---     was bound
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-08609# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command or any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDrawMeshTasksNV-None-08610# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command or any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDrawMeshTasksNV-None-08611# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command or any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDrawMeshTasksNV-None-08607# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject>
---     feature is enabled, either a valid pipeline /must/ be bound to the
---     pipeline bind point used by this command, or a valid combination of
---     valid and 'Vulkan.Core10.APIConstants.NULL_HANDLE' shader objects
---     /must/ be bound to every supported shader stage corresponding to the
---     pipeline bind point used by this command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-uniformBuffers-06935# If any stage of the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command accesses a uniform buffer, and that stage
---     was created without enabling either
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT'
---     or
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT'
---     for @uniformBuffers@, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, that stage /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-vkCmdDrawMeshTasksNV-None-08612# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, and any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDrawMeshTasksNV-storageBuffers-06936# If any stage of the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command accesses a storage buffer, and that stage
---     was created without enabling either
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT'
---     or
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT'
---     for @storageBuffers@, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, that stage /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-vkCmdDrawMeshTasksNV-None-08613# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, and any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDrawMeshTasksNV-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
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shaders>
---     /must/ not be a protected resource
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-06550# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
---     accesses a 'Vulkan.Core10.Handles.Sampler' or
---     'Vulkan.Core10.Handles.ImageView' object that enables
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,
---     that object /must/ only be used with @OpImageSample*@ or
---     @OpImageSparseSample*@ instructions
---
--- -   #VUID-vkCmdDrawMeshTasksNV-ConstOffset-06551# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
---     accesses a 'Vulkan.Core10.Handles.Sampler' or
---     'Vulkan.Core10.Handles.ImageView' object that enables
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,
---     that object /must/ not use the @ConstOffset@ and @Offset@ operands
---
--- -   #VUID-vkCmdDrawMeshTasksNV-viewType-07752# If a
---     'Vulkan.Core10.Handles.ImageView' is accessed as a result of this
---     command, then the image view’s @viewType@ /must/ match the @Dim@
---     operand of the @OpTypeImage@ as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-image-dimensions ???>
---
--- -   #VUID-vkCmdDrawMeshTasksNV-format-07753# If a
---     'Vulkan.Core10.Handles.ImageView' is accessed as a result of this
---     command, then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-numericformat numeric type>
---     of the image view’s @format@ and the @Sampled@ @Type@ operand of the
---     @OpTypeImage@ /must/ match
---
--- -   #VUID-vkCmdDrawMeshTasksNV-OpImageWrite-08795# If a
---     'Vulkan.Core10.Handles.ImageView' created with a format other than
---     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM_KHR' 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-vkCmdDrawMeshTasksNV-OpImageWrite-08796# If a
---     'Vulkan.Core10.Handles.ImageView' created with the format
---     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM_KHR' is accessed using
---     @OpImageWrite@ as a result of this command, then the @Type@ of the
---     @Texel@ operand of that instruction /must/ have four components
---
--- -   #VUID-vkCmdDrawMeshTasksNV-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-vkCmdDrawMeshTasksNV-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-vkCmdDrawMeshTasksNV-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-vkCmdDrawMeshTasksNV-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-vkCmdDrawMeshTasksNV-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-vkCmdDrawMeshTasksNV-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-vkCmdDrawMeshTasksNV-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-vkCmdDrawMeshTasksNV-OpImageWeightedSampleQCOM-06971# If
---     @OpImageWeightedSampleQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawMeshTasksNV-OpImageWeightedSampleQCOM-06972# If
---     @OpImageWeightedSampleQCOM@ uses a 'Vulkan.Core10.Handles.ImageView'
---     as a sample weight image 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawMeshTasksNV-OpImageBoxFilterQCOM-06973# If
---     @OpImageBoxFilterQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawMeshTasksNV-OpImageBlockMatchSSDQCOM-06974# If
---     @OpImageBlockMatchSSDQCOM@ is used to read from an
---     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawMeshTasksNV-OpImageBlockMatchSADQCOM-06975# If
---     @OpImageBlockMatchSADQCOM@ is used to read from an
---     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawMeshTasksNV-OpImageBlockMatchSADQCOM-06976# If
---     @OpImageBlockMatchSADQCOM@ or OpImageBlockMatchSSDQCOM is used to
---     read from a reference image as result of this command, then the
---     specified reference coordinates /must/ not fail
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
---
--- -   #VUID-vkCmdDrawMeshTasksNV-OpImageWeightedSampleQCOM-06977# If
---     @OpImageWeightedSampleQCOM@, @OpImageBoxFilterQCOM@,
---     @OpImageBlockMatchWindowSSDQCOM@, @OpImageBlockMatchWindowSADQCOM@,
---     @OpImageBlockMatchGatherSSDQCOM@, @OpImageBlockMatchGatherSADQCOM@,
---     @OpImageBlockMatchSSDQCOM@, or @OpImageBlockMatchSADQCOM@ uses a
---     'Vulkan.Core10.Handles.Sampler' as a result of this command, then
---     the sampler /must/ have been created with
---     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawMeshTasksNV-OpImageWeightedSampleQCOM-06978# If any
---     command other than @OpImageWeightedSampleQCOM@,
---     @OpImageBoxFilterQCOM@, @OpImageBlockMatchWindowSSDQCOM@,
---     @OpImageBlockMatchWindowSADQCOM@, @OpImageBlockMatchGatherSSDQCOM@,
---     @OpImageBlockMatchGatherSADQCOM@, @OpImageBlockMatchSSDQCOM@, or
---     @OpImageBlockMatchSADQCOM@ uses a 'Vulkan.Core10.Handles.Sampler' as
---     a result of this command, then the sampler /must/ not have been
---     created with
---     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawMeshTasksNV-OpImageBlockMatchWindow-09215# If a
---     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
---     instruction is used to read from an
---     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawMeshTasksNV-OpImageBlockMatchWindow-09216# If a
---     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
---     instruction is used to read from an
---     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
---     the image view’s format /must/ be a single-component format
---
--- -   #VUID-vkCmdDrawMeshTasksNV-OpImageBlockMatchWindow-09217# If a
---     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
---     read from a reference image as result of this command, then the
---     specified reference coordinates /must/ not fail
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-07288# Any shader invocation
---     executed by this command /must/
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-termination terminate>
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-09600# If a descriptor with type
---     equal to any of
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM',
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM',
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',
---     or
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'
---     is accessed as a result of this command, the image subresource
---     identified by that descriptor /must/ be in the image layout
---     identified when the descriptor was written
---
--- -   #VUID-vkCmdDrawMeshTasksNV-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-vkCmdDrawMeshTasksNV-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-vkCmdDrawMeshTasksNV-None-07748# If any shader statically
---     accesses an input attachment, a valid descriptor /must/ be bound to
---     the pipeline via a descriptor set
---
--- -   #VUID-vkCmdDrawMeshTasksNV-OpTypeImage-07468# If any shader executed
---     by this pipeline accesses an @OpTypeImage@ variable with a @Dim@
---     operand of @SubpassData@, it /must/ be decorated with an
---     @InputAttachmentIndex@ that corresponds to a valid input attachment
---     in the current subpass
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-07469# Input attachment views
---     accessed in a subpass /must/ be created with the same
---     'Vulkan.Core10.Enums.Format.Format' as the corresponding subpass
---     definition, and be created with a 'Vulkan.Core10.Handles.ImageView'
---     that is compatible with the attachment referenced by the subpass\'
---     @pInputAttachments@[@InputAttachmentIndex@] in the bound
---     'Vulkan.Core10.Handles.Framebuffer' as specified by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#compatibility-inputattachment Fragment Input Attachment Compatibility>
---
--- -   #VUID-vkCmdDrawMeshTasksNV-pDepthInputAttachmentIndex-09595# Input
---     attachment views accessed in a dynamic render pass with a
---     @InputAttachmentIndex@ referenced by
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR',
---     or no @InputAttachmentIndex@ if
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR':@pDepthInputAttachmentIndex@
---     or
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR':@pStencilInputAttachmentIndex@
---     are @NULL@, /must/ be created with a
---     'Vulkan.Core10.Handles.ImageView' that is compatible with the
---     corresponding color, depth, or stencil attachment in
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'
---
--- -   #VUID-vkCmdDrawMeshTasksNV-pDepthInputAttachmentIndex-09596# Input
---     attachment views accessed in a dynamic render pass via a shader
---     object /must/ have an @InputAttachmentIndex@ if both
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR':@pDepthInputAttachmentIndex@
---     and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR':@pStencilInputAttachmentIndex@
---     are non-@NULL@
---
--- -   #VUID-vkCmdDrawMeshTasksNV-InputAttachmentIndex-09597# If an input
---     attachment view accessed in a dynamic render pass via a shader
---     object has an @InputAttachmentIndex@, the @InputAttachmentIndex@
---     /must/ match an index in
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR'
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-06537# Memory backing image
---     subresources used as attachments in the current render pass /must/
---     not be written in any way other than as an attachment by this
---     command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-09000# If a color attachment is
---     written by any prior command in this subpass or by the load, store,
---     or resolve operations for this subpass, it is not in the
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
---     image layout, and either:
---
---     -   the
---         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT'
---         is set on the bound pipeline or
---
---     -   the last call to
---         'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
---         included
---         'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'
---         and
---
---         -   there is no bound graphics pipeline or
---
---         -   the bound graphics pipeline was created with
---             'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
---
---     it /must/ not be accessed in any way other than as an attachment by
---     this command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-09001# If a depth attachment is
---     written by any prior command in this subpass or by the load, store,
---     or resolve operations for this subpass, it is not in the
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
---     image layout, and either:
---
---     -   the
---         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT'
---         is set on the bound pipeline or
---
---     -   the last call to
---         'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
---         included
---         'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT'
---         and
---
---         -   there is no bound graphics pipeline or
---
---         -   the bound graphics pipeline was created with
---             'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
---
---     it /must/ not be accessed in any way other than as an attachment by
---     this command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-09002# If a stencil attachment is
---     written by any prior command in this subpass or by the load, store,
---     or resolve operations for this subpass, it is not in the
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
---     image layout, and either:
---
---     -   the
---         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT'
---         is set on the bound pipeline or
---
---     -   the last call to
---         'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
---         included
---         'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
---         and
---
---         -   there is no bound graphics pipeline or
---
---         -   the bound graphics pipeline was created with
---             'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
---
---     it /must/ not be accessed in any way other than as an attachment by
---     this command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-09003# If an attachment is written
---     by any prior command in this subpass or by the load, store, or
---     resolve operations for this subpass, it /must/ not be accessed in
---     any way other than as an attachment, storage image, or sampled image
---     by this command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-06539# If any previously recorded
---     command in the current subpass accessed an image subresource used as
---     an attachment in this subpass in any way other than as an
---     attachment, this command /must/ not write to that image subresource
---     as an attachment
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-06886# If the current render pass
---     instance uses a depth\/stencil attachment with a read-only layout
---     for the depth aspect,
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-depth-write depth writes>
---     /must/ be disabled
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-06887# If the current render pass
---     instance uses a depth\/stencil attachment with a read-only layout
---     for the stencil aspect, both front and back @writeMask@ are not
---     zero, and stencil test is enabled,
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-stencil all stencil ops>
---     /must/ be 'Vulkan.Core10.Enums.StencilOp.STENCIL_OP_KEEP'
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-07831# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT' dynamic
---     state enabled then
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetViewport' /must/ have
---     been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-07832# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR' dynamic
---     state enabled then
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetScissor' /must/ have been
---     called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-07833# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_WIDTH' dynamic
---     state enabled then
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth' /must/ have
---     been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-08617# If a shader object is bound
---     to any graphics stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
---     in the current command buffer set @polygonMode@ to
---     'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_LINE',
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth' /must/ have
---     been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-08618# If a shader object is bound
---     to any graphics stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
---     in the current command buffer set @primitiveTopology@ to any line
---     topology, 'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-08619# If a shader object that
---     outputs line primitives is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE',
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth' /must/ have
---     been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-07834# If a shader object is bound
---     to any graphics stage or a graphics pipeline is bound which was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS' dynamic
---     state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @depthBiasEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBounds' or
---     'Vulkan.Extensions.VK_EXT_depth_bias_control.cmdSetDepthBias2EXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-07835# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_BLEND_CONSTANTS'
---     dynamic state enabled then
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetBlendConstants' /must/
---     have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-08621# If a shader object is bound
---     to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     in the current command buffer set any element of
---     @pColorBlendEnables@ to 'Vulkan.Core10.FundamentalTypes.TRUE', and
---     the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     in the current command buffer set the same element of
---     @pColorBlendEquations@ to a
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.ColorBlendEquationEXT'
---     structure with any 'Vulkan.Core10.Enums.BlendFactor.BlendFactor'
---     member with a value of
---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_COLOR',
---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR',
---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_ALPHA', or
---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA',
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetBlendConstants' /must/
---     have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-07836# If a shader object is bound
---     to any graphics stage or a graphics pipeline is bound which was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @depthBoundsTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBounds' /must/
---     have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-07837# If a shader object is bound
---     to any graphics stage or a graphics pipeline is bound which was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_COMPARE_MASK'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilCompareMask'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-07838# If a shader object is bound
---     to any graphics stage or a graphics pipeline is bound which was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_WRITE_MASK'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilWriteMask'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-07839# If a shader object is bound
---     to any graphics stage or a graphics pipeline is bound which was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_REFERENCE'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of and @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilReference'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-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-vkCmdDrawMeshTasksNV-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-vkCmdDrawMeshTasksNV-None-07634# If the
---     @VK_EXT_sample_locations@ extension is enabled, a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-06666# If the
---     @VK_EXT_sample_locations@ extension is enabled, a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then
---     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-07840# If a shader object is bound
---     to any graphics stage or a graphics pipeline is bound which was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CULL_MODE' dynamic
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetCullMode'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-07841# If a shader object is bound
---     to any graphics stage or a graphics pipeline is bound which was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRONT_FACE' dynamic
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetFrontFace'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-07843# If a shader object is bound
---     to any graphics stage or a graphics pipeline is bound which was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_TEST_ENABLE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE',
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthTestEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-07844# If a shader object is bound
---     to any graphics stage or a graphics pipeline is bound which was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthWriteEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-07845# If a shader object is bound
---     to any graphics stage or a graphics pipeline is bound which was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_COMPARE_OP'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @depthTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthCompareOp'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-07846# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthBounds depthBounds>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthBoundsTestEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-07847# If a shader object is bound
---     to any graphics stage or a graphics pipeline is bound which was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_TEST_ENABLE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilTestEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-07848# If a shader object is bound
---     to any graphics stage or a graphics pipeline is bound which was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_OP' dynamic
---     state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilOp'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-viewportCount-03417# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
---     dynamic state enabled, and the state is not inherited, then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-scissorCount-03418# If a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
---     dynamic state enabled, and the state is not inherited, then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing
---
--- -   #VUID-vkCmdDrawMeshTasksNV-viewportCount-03419# If a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     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, and the state is not inherited, then 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-vkCmdDrawMeshTasksNV-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-vkCmdDrawMeshTasksNV-viewportCount-04138# If the
---     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which 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 state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @viewportWScalingEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.cmdSetViewportWScalingNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-08636# If the
---     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which 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 state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @viewportWScalingEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', 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-vkCmdDrawMeshTasksNV-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-vkCmdDrawMeshTasksNV-shadingRateImage-09233# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV'
---     and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetCoarseSampleOrderNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-shadingRateImage-09234# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which 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 state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @shadingRateImageEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetViewportShadingRatePaletteNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-08637# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which 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 state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @shadingRateImageEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', 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-vkCmdDrawMeshTasksNV-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
---     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo', 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-vkCmdDrawMeshTasksNV-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
---     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo', 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-vkCmdDrawMeshTasksNV-None-07878# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-exclusiveScissor exclusiveScissor>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-07879# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-exclusiveScissor exclusiveScissor>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV'
---     dynamic state enabled, and the most recent call to
---     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorEnableNV'
---     in the current command buffer set any element of
---     @pExclusiveScissorEnables@ to 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then
---     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-04876# If a shader object is bound
---     to any graphics stage or a graphics pipeline is bound which 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 and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-04877# If a shader object is bound
---     to any graphics stage or a graphics pipeline is bound which was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-logicOp-04878# If a shader object is
---     bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_EXT'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @logicOpEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetLogicOpEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-primitiveFragmentShadingRateWithMultipleViewports-04552#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
---     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-vkCmdDrawMeshTasksNV-primitiveFragmentShadingRateWithMultipleViewports-08642#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
---     limit is not supported, and any shader object bound to a graphics
---     stage writes 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-vkCmdDrawMeshTasksNV-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-vkCmdDrawMeshTasksNV-None-08643# If a shader object is bound
---     to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then for each color
---     attachment in the render pass, 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 corresponding member of @pColorBlendEnables@ in the most
---     recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     in the current command buffer that affected that attachment index
---     /must/ have been 'Vulkan.Core10.FundamentalTypes.FALSE'
---
--- -   #VUID-vkCmdDrawMeshTasksNV-multisampledRenderToSingleSampled-07284#
---     If rasterization is not disabled in the bound graphics pipeline, and
---     none of the following is enabled:
---
---     -   the @VK_AMD_mixed_attachment_samples@ extension
---
---     -   the @VK_NV_framebuffer_mixed_samples@ extension
---
---     -   the
---         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---         feature
---
---     then @rasterizationSamples@ for the bound graphics pipeline /must/
---     be the same as the current subpass color and\/or depth\/stencil
---     attachments
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-08644# If a shader object is bound
---     to any graphics stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and none of the following is
---     enabled:
---
---     -   the @VK_AMD_mixed_attachment_samples@ extension
---
---     -   the @VK_NV_framebuffer_mixed_samples@ extension
---
---     -   the
---         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---         feature
---
---     then the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     in the current command buffer /must/ have set @rasterizationSamples@
---     to be the same as the number of samples for the current render pass
---     color and\/or depth\/stencil attachments
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-08876# If a shader object is bound
---     to any graphics stage, the current render pass instance /must/ have
---     been begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---
--- -   #VUID-vkCmdDrawMeshTasksNV-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-vkCmdDrawMeshTasksNV-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-vkCmdDrawMeshTasksNV-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-vkCmdDrawMeshTasksNV-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-vkCmdDrawMeshTasksNV-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-vkCmdDrawMeshTasksNV-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-vkCmdDrawMeshTasksNV-viewMask-06178# If the current render
---     pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the 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-vkCmdDrawMeshTasksNV-colorAttachmentCount-06179# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled and the current render pass instance was
---     begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the 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-vkCmdDrawMeshTasksNV-dynamicRenderingUnusedAttachments-08910#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and 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 an @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 bound graphics pipeline
---
--- -   #VUID-vkCmdDrawMeshTasksNV-dynamicRenderingUnusedAttachments-08912#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and 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 an @imageView@ equal to
---     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have the
---     corresponding element of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
---     used to create the bound pipeline equal to
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawMeshTasksNV-dynamicRenderingUnusedAttachments-08911#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is enabled, and 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 an @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 bound graphics pipeline, or the corresponding
---     element of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@,
---     if it exists, /must/ be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawMeshTasksNV-colorAttachmentCount-09362# If 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@
---     equal to @1@, there is no shader object bound to any graphics stage,
---     and a color attachment with a resolve mode of
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID',
---     each element of the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
---     array with a @resolveImageView@ not equal to
---     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
---     with an image created with a
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value equal to the
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value used to create the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-09363# If there is no shader object
---     bound to any graphics stage, the current render pass instance was
---     begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     and a
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
---     equal to @1@, and a color attachment with a resolve mode of
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID',
---     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 an image created with a
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value equal to the
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value used to create the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-09364# If the current render pass
---     instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is no shader object bound to any graphics stage, and the bound
---     graphics pipeline was created with a non-zero
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value and with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have set the blend enable to
---     'Vulkan.Core10.FundamentalTypes.FALSE' prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-09365# If the current render pass
---     instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is no shader object bound to any graphics stage, and the bound
---     graphics pipeline was created with a non-zero
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value and with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ have set @rasterizationSamples@ to
---     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' prior
---     to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-09366# If there is a shader object
---     bound to any graphics stage, and the current render pass includes a
---     color attachment that uses the
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID'
---     resolve mode, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have set blend enable to
---     'Vulkan.Core10.FundamentalTypes.FALSE' prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-rasterizationSamples-09367# If there is a
---     shader object bound to any graphics stage, and the current render
---     pass includes a color attachment that uses the
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID'
---     resolve mode, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ have set @rasterizationSamples@ to
---     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' prior
---     to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-09368# If the current render pass
---     instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is no shader object bound to any graphics stage, and the bound
---     graphics pipeline was created with a non-zero
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value and with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
---     /must/ have set @pFragmentSize->width@ to @1@ prior to this drawing
---     command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-09369# If the current render pass
---     instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is no shader object bound to any graphics stage, and the bound
---     graphics pipeline was created with a non-zero
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value and with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
---     /must/ have set @pFragmentSize->height@ to @1@ prior to this drawing
---     command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-pFragmentSize-09370# If there is a shader
---     object bound to any graphics stage, and the current render pass
---     includes a color attachment that uses the
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID'
---     resolve mode, then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
---     /must/ have set @pFragmentSize->width@ to @1@ prior to this drawing
---     command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-pFragmentSize-09371# If there is a shader
---     object bound to any graphics stage, and the current render pass
---     includes a color attachment that uses the
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID'
---     resolve mode, then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
---     /must/ have set @pFragmentSize->height@ to @1@ prior to this drawing
---     command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-07749# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-08646# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
---     feature is enabled, and a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-attachmentCount-07750# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'
---     dynamic state enabled then the @attachmentCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
---     /must/ be greater than or equal to the
---     'Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo'::@attachmentCount@
---     of the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-08647# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
---     feature is enabled, and a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then the @attachmentCount@
---     parameter of most recent call to
---     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
---     in the current command buffer /must/ be greater than or equal to the
---     number of color attachments in the current render pass instance
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-07751# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command for each
---     discard rectangle in
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'::@discardRectangleCount@
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-07880# If the
---     @VK_EXT_discard_rectangles@ extension is enabled, a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-07881# If the
---     @VK_EXT_discard_rectangles@ extension is enabled, a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @discardRectangleEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-rasterizerDiscardEnable-09236# If the
---     @VK_EXT_discard_rectangles@ extension is enabled, and a shader
---     object is bound to any graphics stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEnableEXT'
---     in the current command buffer set @discardRectangleEnable@ to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-dynamicRenderingUnusedAttachments-08913#
---     If the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
---     used to create the bound graphics pipeline /must/ be equal to
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawMeshTasksNV-dynamicRenderingUnusedAttachments-08914#
---     If current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->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 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->imageView@
---
--- -   #VUID-vkCmdDrawMeshTasksNV-dynamicRenderingUnusedAttachments-08915#
---     If the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is enabled,
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
---     used to create the bound graphics pipeline was not equal to the
---     'Vulkan.Core10.Enums.Format.Format' used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@,
---     the value of the format /must/ be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawMeshTasksNV-dynamicRenderingUnusedAttachments-08916#
---     If the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
---     used to create the bound graphics pipeline /must/ be equal to
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawMeshTasksNV-dynamicRenderingUnusedAttachments-08917#
---     If current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->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 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->imageView@
---
--- -   #VUID-vkCmdDrawMeshTasksNV-dynamicRenderingUnusedAttachments-08918#
---     If the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is enabled,
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
---     used to create the bound graphics pipeline was not equal to the
---     'Vulkan.Core10.Enums.Format.Format' used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@,
---     the value of the format /must/ be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawMeshTasksNV-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_fragment_shading_rate.RenderingFragmentShadingRateAttachmentInfoKHR'::@imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the bound graphics
---     pipeline /must/ have been created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
---
--- -   #VUID-vkCmdDrawMeshTasksNV-imageView-06184# If the current render
---     pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     and
---     'Vulkan.Extensions.VK_EXT_fragment_density_map.RenderingFragmentDensityMapAttachmentInfoEXT'::@imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the bound graphics
---     pipeline /must/ have been created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT'
---
--- -   #VUID-vkCmdDrawMeshTasksNV-colorAttachmentCount-06185# If the bound
---     pipeline was created with a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.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_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     used to create the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawMeshTasksNV-pDepthAttachment-06186# If the current
---     render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the bound pipeline was created with a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     structure, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
---     @depthStencilAttachmentSamples@ member of
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     used to create the bound graphics pipeline /must/ be equal to the
---     sample count used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---
--- -   #VUID-vkCmdDrawMeshTasksNV-pStencilAttachment-06187# If the current
---     render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the bound pipeline was created with a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     structure, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
---     @depthStencilAttachmentSamples@ member of
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     used to create the bound graphics pipeline /must/ be equal to the
---     sample count used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---
--- -   #VUID-vkCmdDrawMeshTasksNV-multisampledRenderToSingleSampled-07285#
---     If the bound pipeline was created without a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     structure, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---     feature is not enabled, 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 @rasterizationSamples@ for
---     the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawMeshTasksNV-multisampledRenderToSingleSampled-07286#
---     If the bound pipeline was created without a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     structure, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     @rasterizationSamples@ for the bound graphics pipeline /must/ be
---     equal to the sample count used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---
--- -   #VUID-vkCmdDrawMeshTasksNV-multisampledRenderToSingleSampled-07287#
---     If the bound pipeline was created without a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     structure, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     @rasterizationSamples@ for the bound graphics pipeline /must/ be
---     equal to the sample count used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---
--- -   #VUID-vkCmdDrawMeshTasksNV-pNext-07935# If this command has been
---     called inside a render pass instance started with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     and the @pNext@ chain of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'
---     includes a
---     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'
---     structure with @multisampledRenderToSingleSampledEnable@ equal to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the value of
---     @rasterizationSamples@ for the bound graphics pipeline /must/ be
---     equal to
---     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'::@rasterizationSamples@
---
--- -   #VUID-vkCmdDrawMeshTasksNV-renderPass-06198# If the current render
---     pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the bound pipeline /must/ have been created with a
---     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@renderPass@
---     equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE'
---
--- -   #VUID-vkCmdDrawMeshTasksNV-pColorAttachments-08963# If the current
---     render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is a graphics pipeline bound with a fragment shader that
---     statically writes to a color attachment, the color write mask is not
---     zero, color writes are enabled, and the corresponding element of the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
---     corresponding element of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
---     used to create the pipeline /must/ not be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawMeshTasksNV-pDepthAttachment-08964# If the current
---     render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is a graphics pipeline bound, depth test is enabled, depth
---     write is enabled, and the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
---     used to create the pipeline /must/ not be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawMeshTasksNV-pStencilAttachment-08965# If the current
---     render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is a graphics pipeline bound, stencil test is enabled and the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
---     used to create the pipeline /must/ not be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawMeshTasksNV-primitivesGeneratedQueryWithRasterizerDiscard-06708#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithRasterizerDiscard primitivesGeneratedQueryWithRasterizerDiscard>
---     feature is not enabled and the
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
---     query is active,
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-discard rasterization discard>
---     /must/ not be enabled
---
--- -   #VUID-vkCmdDrawMeshTasksNV-primitivesGeneratedQueryWithNonZeroStreams-06709#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>
---     feature is not enabled and the
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
---     query is active, the bound graphics pipeline /must/ not have been
---     created with a non-zero value in
---     'Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT'::@rasterizationStream@
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-07619# If a shader object is bound
---     to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetTessellationDomainOriginEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-07620# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClamp depthClamp>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClampEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-07621# If a shader object is bound
---     to any graphics stage or a graphics pipeline is bound which was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_POLYGON_MODE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-07622# If a shader object is bound
---     to any graphics stage or a graphics pipeline is bound which was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-07623# If a shader object is bound
---     to any graphics stage or a graphics pipeline is bound which was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-alphaToCoverageEnable-08919# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT'
---     dynamic state enabled, and @alphaToCoverageEnable@ was
---     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-fragmentoutput Fragment Output Interface>
---     /must/ contain a variable for the alpha @Component@ word in
---     @Location@ 0 at @Index@ 0
---
--- -   #VUID-vkCmdDrawMeshTasksNV-alphaToCoverageEnable-08920# If a shader
---     object is bound to any graphics stage, and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT'
---     in the current command buffer set @alphaToCoverageEnable@ to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-fragmentoutput Fragment Output Interface>
---     /must/ contain a variable for the alpha @Component@ word in
---     @Location@ 0 at @Index@ 0
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-07624# If a shader object is bound
---     to any graphics stage or a graphics pipeline is bound which was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-07625# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-alphaToOne alphaToOne>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToOneEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-07626# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-logicOp logicOp>
---     feature is enabled, a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLogicOpEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-07627# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-08657# If a shader object is bound
---     to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and both the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE' and there are color
---     attachments bound, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-07628# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-08658# If a shader object is bound
---     to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     for any attachment set that attachment’s value in
---     @pColorBlendEnables@ to 'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-07629# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-08659# If a shader object is bound
---     to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and both the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE' and there are color
---     attachments bound, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-07630# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryStreams geometryStreams>
---     feature is enabled, and a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_STREAM_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationStreamEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-07631# If the
---     @VK_EXT_conservative_rasterization@ extension is enabled, a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetConservativeRasterizationModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-07632# If the
---     @VK_EXT_conservative_rasterization@ extension is enabled, a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @conservativeRasterizationMode@ is
---     'Vulkan.Extensions.VK_EXT_conservative_rasterization.CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT',
---     then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetExtraPrimitiveOverestimationSizeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-07633# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClipEnable depthClipEnable>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT'
---     dynamic state, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-07635# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-rasterizerDiscardEnable-09416# If the
---     @VK_EXT_blend_operation_advanced@ extension is enabled, and a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then at least one of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     and
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-07636# If the
---     @VK_EXT_provoking_vertex@ extension is enabled, a shader object is
---     bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetProvokingVertexModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-07637# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-08666# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object is bound to any graphics
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
---     in the current command buffer set @polygonMode@ to
---     'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_LINE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-08667# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
---     in the current command buffer set @primitiveTopology@ to any line
---     topology, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-08668# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object that outputs line
---     primitives is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-07638# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-08669# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object is bound to any graphics
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
---     in the current command buffer set @polygonMode@ to
---     'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_LINE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-08670# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
---     in the current command buffer set @primitiveTopology@ to any line
---     topology, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-08671# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object that outputs line
---     primitives is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-07849# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled and a shader object is bound to any graphics
---     stage, or a bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_KHR'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @stippledLineEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then
---     'Vulkan.Extensions.VK_KHR_line_rasterization.cmdSetLineStippleKHR'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-07639# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClipControl depthClipControl>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipNegativeOneToOneEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-09650# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClampControl depthClampControl>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @depthClampEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_depth_clamp_control.cmdSetDepthClampRangeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-07640# If the
---     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportWScalingEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-07641# If the
---     @VK_NV_viewport_swizzle@ extension is enabled, and a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-07642# If the
---     @VK_NV_fragment_coverage_to_color@ extension is enabled, a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-07643# If the
---     @VK_NV_fragment_coverage_to_color@ extension is enabled, a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @coverageToColorEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-07644# If the
---     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationModeNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-07645# If the
---     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @coverageModulationMode@ is any value other than
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.COVERAGE_MODULATION_MODE_NONE_NV',
---     then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-07646# If the
---     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @coverageModulationTableEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-07647# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetShadingRateImageEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-pipelineFragmentShadingRate-09238# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate>
---     feature is enabled, a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-07648# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-representativeFragmentTest representativeFragmentTest>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRepresentativeFragmentTestEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-07649# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-coverageReductionMode coverageReductionMode>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageReductionModeNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-pColorBlendEnables-07470# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---     state enabled and the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     set @pColorBlendEnables@ for any attachment to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then for those attachments in
---     the subpass 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>
---     /must/ contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksNV-rasterizationSamples-07471# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the current subpass does not use any color
---     and\/or depth\/stencil attachments, then the @rasterizationSamples@
---     in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ follow the rules for a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-noattachments zero-attachment subpass>
---
--- -   #VUID-vkCmdDrawMeshTasksNV-samples-07472# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
---     state enabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state disabled, then the @samples@ parameter in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
---     /must/ be greater or equal to the
---     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
---     parameter used to create the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawMeshTasksNV-samples-07473# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
---     state and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     states enabled, then the @samples@ parameter in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
---     /must/ be greater or equal to the @rasterizationSamples@ parameter
---     in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---
--- -   #VUID-vkCmdDrawMeshTasksNV-rasterizationSamples-07474# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---     feature is not enabled, and neither the
---     @VK_AMD_mixed_attachment_samples@ nor the
---     @VK_NV_framebuffer_mixed_samples@ extensions are enabled, then the
---     @rasterizationSamples@ in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ be the same as the current subpass color and\/or
---     depth\/stencil attachments
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-09211# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, or a shader object is bound to any graphics stage,
---     and the current render pass instance includes a
---     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'
---     structure with @multisampledRenderToSingleSampledEnable@ equal to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the
---     @rasterizationSamples@ in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ be the same as the @rasterizationSamples@ member of that
---     structure
---
--- -   #VUID-vkCmdDrawMeshTasksNV-firstAttachment-07476# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     calls /must/ specify an enable for all active color attachments in
---     the current subpass
---
--- -   #VUID-vkCmdDrawMeshTasksNV-rasterizerDiscardEnable-09417# If a
---     shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     calls /must/ specify an enable for all active color attachments in
---     the current subpass
---
--- -   #VUID-vkCmdDrawMeshTasksNV-firstAttachment-07477# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     calls /must/ specify the blend equations for all active color
---     attachments in the current subpass where blending is enabled
---
--- -   #VUID-vkCmdDrawMeshTasksNV-rasterizerDiscardEnable-09418# If a
---     shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and both the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE' and there are color
---     attachments bound, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     calls /must/ specify the blend equations for all active color
---     attachments in the current subpass where blending is enabled
---
--- -   #VUID-vkCmdDrawMeshTasksNV-firstAttachment-07478# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     calls /must/ specify the color write mask for all active color
---     attachments in the current subpass
---
--- -   #VUID-vkCmdDrawMeshTasksNV-rasterizerDiscardEnable-09419# If a
---     shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     calls /must/ specify the color write mask for all active color
---     attachments in the current subpass
---
--- -   #VUID-vkCmdDrawMeshTasksNV-firstAttachment-07479# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
---     calls /must/ specify the advanced blend equations for all active
---     color attachments in the current subpass where blending is enabled
---
--- -   #VUID-vkCmdDrawMeshTasksNV-advancedBlendMaxColorAttachments-07480#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
---     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---     dynamic states enabled and the last calls to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     and
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
---     have enabled advanced blending, then the number of active color
---     attachments in the current subpass /must/ not exceed
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-advancedBlendMaxColorAttachments advancedBlendMaxColorAttachments>
---
--- -   #VUID-vkCmdDrawMeshTasksNV-primitivesGeneratedQueryWithNonZeroStreams-07481#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>
---     feature is not enabled and the
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
---     query is active, and the bound graphics pipeline was created with
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_STREAM_EXT'
---     state enabled, the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationStreamEXT'
---     /must/ have set the @rasterizationStream@ to zero
---
--- -   #VUID-vkCmdDrawMeshTasksNV-sampleLocationsPerPixel-07482# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state enabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state disabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then the @sampleLocationsPerPixel@ member of @pSampleLocationsInfo@
---     in the last call to
---     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
---     /must/ equal the @rasterizationSamples@ member of the
---     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'
---     structure the bound graphics pipeline has been created with
---
--- -   #VUID-vkCmdDrawMeshTasksNV-sampleLocationsPerPixel-07483# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state enabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then the @sampleLocationsPerPixel@ member of @pSampleLocationsInfo@
---     in the last call to
---     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
---     /must/ equal the @rasterizationSamples@ parameter of the last call
---     to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---
--- -   #VUID-vkCmdDrawMeshTasksNV-sampleLocationsEnable-07484# If a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, or the bound graphics pipeline was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     state enabled, and @sampleLocationsEnable@ was
---     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
---     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-vkCmdDrawMeshTasksNV-sampleLocationsEnable-07485# If a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state enabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     state enabled, and if @sampleLocationsEnable@ was
---     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
---     then the @sampleLocationsInfo.sampleLocationGridSize.width@ in the
---     last call to
---     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
---     /must/ evenly divide
---     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@sampleLocationGridSize.width@
---     as returned by
---     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
---     with a @samples@ parameter equaling @rasterizationSamples@
---
--- -   #VUID-vkCmdDrawMeshTasksNV-sampleLocationsEnable-07486# If a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state enabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     state enabled, and if @sampleLocationsEnable@ was
---     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
---     then the @sampleLocationsInfo.sampleLocationGridSize.height@ in the
---     last call to
---     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
---     /must/ evenly divide
---     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@sampleLocationGridSize.height@
---     as returned by
---     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
---     with a @samples@ parameter equaling @rasterizationSamples@
---
--- -   #VUID-vkCmdDrawMeshTasksNV-sampleLocationsEnable-07487# If a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     state enabled, and if @sampleLocationsEnable@ was
---     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
---     the fragment shader code /must/ not statically use the extended
---     instruction @InterpolateAtSample@
---
--- -   #VUID-vkCmdDrawMeshTasksNV-sampleLocationsEnable-07936# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state disabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then @sampleLocationsInfo.sampleLocationGridSize.width@ /must/
---     evenly divide
---     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@sampleLocationGridSize.width@
---     as returned by
---     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
---     with a @samples@ parameter equaling the value of
---     @rasterizationSamples@ in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---
--- -   #VUID-vkCmdDrawMeshTasksNV-sampleLocationsEnable-07937# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state disabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then @sampleLocationsInfo.sampleLocationGridSize.height@ /must/
---     evenly divide
---     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@sampleLocationGridSize.height@
---     as returned by
---     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
---     with a @samples@ parameter equaling the value of
---     @rasterizationSamples@ in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---
--- -   #VUID-vkCmdDrawMeshTasksNV-sampleLocationsEnable-07938# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state disabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then @sampleLocationsInfo.sampleLocationsPerPixel@ /must/ equal
---     @rasterizationSamples@ in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---
--- -   #VUID-vkCmdDrawMeshTasksNV-coverageModulationTableEnable-07488# If a
---     shader object is bound to any graphics stage or the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV'
---     state enabled, and the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV'
---     set @coverageModulationTableEnable@ to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the
---     @coverageModulationTableCount@ parameter in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableNV'
---     /must/ equal the current @rasterizationSamples@ divided by the
---     number of color samples in the current subpass
---
--- -   #VUID-vkCmdDrawMeshTasksNV-rasterizationSamples-07489# If the
---     @VK_NV_framebuffer_mixed_samples@ extension is enabled, and if
---     current subpass has a depth\/stencil attachment and depth test,
---     stencil test, or depth bounds test are enabled in the bound
---     pipeline, then the current @rasterizationSamples@ /must/ be the same
---     as the sample count of the depth\/stencil attachment
---
--- -   #VUID-vkCmdDrawMeshTasksNV-coverageToColorEnable-07490# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
---     state enabled and the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
---     set the @coverageToColorEnable@ to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the current subpass
---     /must/ have a color attachment at the location selected by the last
---     call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
---     @coverageToColorLocation@, with a
---     'Vulkan.Core10.Enums.Format.Format' of
---     'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R8_SINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R16_UINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R16_SINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R32_UINT', or
---     'Vulkan.Core10.Enums.Format.FORMAT_R32_SINT'
---
--- -   #VUID-vkCmdDrawMeshTasksNV-rasterizerDiscardEnable-09420# If the
---     @VK_NV_fragment_coverage_to_color@ extension is enabled, and a
---     shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
---     set the @coverageToColorEnable@ to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the current subpass
---     /must/ have a color attachment at the location selected by the last
---     call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
---     @coverageToColorLocation@, with a
---     'Vulkan.Core10.Enums.Format.Format' of
---     'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R8_SINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R16_UINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R16_SINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R32_UINT', or
---     'Vulkan.Core10.Enums.Format.FORMAT_R32_SINT'
---
--- -   #VUID-vkCmdDrawMeshTasksNV-coverageReductionMode-07491# If this
---     @VK_NV_coverage_reduction_mode@ extension is enabled, the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
---     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     states enabled, the current coverage reduction mode
---     @coverageReductionMode@, then the current @rasterizationSamples@,
---     and the sample counts for the color and depth\/stencil attachments
---     (if the subpass has them) /must/ be a valid combination returned by
---     'Vulkan.Extensions.VK_NV_coverage_reduction_mode.getPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV'
---
--- -   #VUID-vkCmdDrawMeshTasksNV-viewportCount-07492# 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_SWIZZLE_NV'
---     dynamic state enabled, 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-vkCmdDrawMeshTasksNV-viewportCount-07493# 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_SWIZZLE_NV'
---     dynamic states enabled then the @viewportCount@ parameter in the
---     last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
---     /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-vkCmdDrawMeshTasksNV-viewportCount-09421# If the
---     @VK_NV_viewport_swizzle@ extension is enabled, and a shader object
---     is bound to any graphics stage, then the @viewportCount@ parameter
---     in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
---     /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-vkCmdDrawMeshTasksNV-rasterizationSamples-07494# If the
---     @VK_NV_framebuffer_mixed_samples@ extension is enabled, and if the
---     current subpass has any color attachments and @rasterizationSamples@
---     of the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     is greater than the number of color samples, then the pipeline
---     @sampleShadingEnable@ /must/ be
---     'Vulkan.Core10.FundamentalTypes.FALSE'
---
--- -   #VUID-vkCmdDrawMeshTasksNV-stippledLineEnable-07495# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---     or
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---     dynamic states enabled, and if the current @stippledLineEnable@
---     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
---     @lineRasterizationMode@ state is
---     'Vulkan.Extensions.VK_KHR_line_rasterization.LINE_RASTERIZATION_MODE_RECTANGULAR_KHR',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>
---     feature /must/ be enabled
---
--- -   #VUID-vkCmdDrawMeshTasksNV-stippledLineEnable-07496# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---     or
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---     dynamic states enabled, and if the current @stippledLineEnable@
---     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
---     @lineRasterizationMode@ state is
---     'Vulkan.Extensions.VK_KHR_line_rasterization.LINE_RASTERIZATION_MODE_BRESENHAM_KHR',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     feature /must/ be enabled
---
--- -   #VUID-vkCmdDrawMeshTasksNV-stippledLineEnable-07497# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---     or
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---     dynamic states enabled, and if the current @stippledLineEnable@
---     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
---     @lineRasterizationMode@ state is
---     'Vulkan.Extensions.VK_KHR_line_rasterization.LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     feature /must/ be enabled
---
--- -   #VUID-vkCmdDrawMeshTasksNV-stippledLineEnable-07498# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---     or
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---     dynamic states enabled, and if the current @stippledLineEnable@
---     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
---     @lineRasterizationMode@ state is
---     'Vulkan.Extensions.VK_KHR_line_rasterization.LINE_RASTERIZATION_MODE_DEFAULT_KHR',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>
---     feature /must/ be enabled and
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@strictLines@
---     /must/ be 'Vulkan.Core10.FundamentalTypes.TRUE'
---
--- -   #VUID-vkCmdDrawMeshTasksNV-conservativePointAndLineRasterization-07499#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT'
---     dynamic state enabled,
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-conservativePointAndLineRasterization conservativePointAndLineRasterization>
---     is not supported, and the effective primitive topology output by the
---     last pre-rasterization shader stage is a line or point, then the
---     @conservativeRasterizationMode@ set by the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetConservativeRasterizationModeEXT'
---     /must/ be
---     'Vulkan.Extensions.VK_EXT_conservative_rasterization.CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT'
---
--- -   #VUID-vkCmdDrawMeshTasksNV-stage-07073# If the bound pipeline was
---     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_VERTEX_BIT',
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT',
---     then
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-mesh-shader Mesh Shader Queries>
---     /must/ not be active
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-08877# If a shader object is bound
---     to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-07850# If dynamic state was
---     inherited from
---     'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV',
---     it /must/ be set in the current command buffer prior to this drawing
---     command
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-08684# If there is no bound graphics
---     pipeline, 'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT'
---     /must/ have been called in the current command buffer with @pStages@
---     with an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-08685# If there is no bound graphics
---     pipeline, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellationShader>
---     feature is enabled,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-08686# If there is no bound graphics
---     pipeline, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellationShader>
---     feature is enabled,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-08687# If there is no bound graphics
---     pipeline, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometryShader>
---     feature is enabled,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-08688# If there is no bound graphics
---     pipeline, 'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT'
---     /must/ have been called in the current command buffer with @pStages@
---     with an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-08689# If there is no bound graphics
---     pipeline, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
---     feature is enabled,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-08690# If there is no bound graphics
---     pipeline, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
---     feature is enabled,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-08693# If there is no bound graphics
---     pipeline, and at least one of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
---     and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
---     features is enabled, one of the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---     stages /must/ have a valid 'Vulkan.Extensions.Handles.ShaderEXT'
---     bound, and the other /must/ have no
---     'Vulkan.Extensions.Handles.ShaderEXT' bound
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-08694# If there is no bound graphics
---     pipeline, and both the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
---     and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
---     features are enabled, and a valid
---     'Vulkan.Extensions.Handles.ShaderEXT' is bound the to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---     stage, and that 'Vulkan.Extensions.Handles.ShaderEXT' was created
---     without the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
---     flag, a valid 'Vulkan.Extensions.Handles.ShaderEXT' /must/ be bound
---     to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---     stage
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-08695# If there is no bound graphics
---     pipeline, and both the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
---     and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
---     features are enabled, and a valid
---     'Vulkan.Extensions.Handles.ShaderEXT' is bound the to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---     stage, and that 'Vulkan.Extensions.Handles.ShaderEXT' was created
---     with the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
---     flag, there /must/ be no 'Vulkan.Extensions.Handles.ShaderEXT' bound
---     to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---     stage
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-08696# If there is no bound graphics
---     pipeline, and a valid 'Vulkan.Extensions.Handles.ShaderEXT' is bound
---     to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage, there /must/ be no 'Vulkan.Extensions.Handles.ShaderEXT'
---     bound to either the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---     stage or the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---     stage
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-08698# If any graphics shader is
---     bound which was created with the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
---     flag, then all shaders created with the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
---     flag in the same
---     'Vulkan.Extensions.VK_EXT_shader_object.createShadersEXT' call
---     /must/ also be bound
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-08699# If any graphics shader is
---     bound which was created with the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
---     flag, any stages in between stages whose shaders which did not
---     create a shader with the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
---     flag as part of the same
---     'Vulkan.Extensions.VK_EXT_shader_object.createShadersEXT' call
---     /must/ not have any 'Vulkan.Extensions.Handles.ShaderEXT' bound
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-08878# All bound graphics shader
---     objects /must/ have been created with identical or identically
---     defined push constant ranges
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-08879# All bound graphics shader
---     objects /must/ have been created with identical or identically
---     defined arrays of descriptor set layouts
---
--- -   #VUID-vkCmdDrawMeshTasksNV-colorAttachmentCount-09372# If the
---     current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     and a
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
---     equal to @1@, a color attachment with a resolve mode of
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID',
---     and a fragment shader is bound, it /must/ not declare the
---     @DepthReplacing@ or @StencilRefReplacingEXT@ execution modes
---
--- -   #VUID-vkCmdDrawMeshTasksNV-pDynamicStates-08715# If the bound
---     graphics pipeline state includes a fragment shader stage, was
---     created with
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE'
---     set in
---     'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@,
---     and the fragment shader declares the @EarlyFragmentTests@ execution
---     mode and uses @OpDepthAttachmentReadEXT@, the @depthWriteEnable@
---     parameter in the last call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthWriteEnable'
---     /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
---
--- -   #VUID-vkCmdDrawMeshTasksNV-pDynamicStates-08716# If the bound
---     graphics pipeline state includes a fragment shader stage, was
---     created with
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_WRITE_MASK'
---     set in
---     'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@,
---     and the fragment shader declares the @EarlyFragmentTests@ execution
---     mode and uses @OpStencilAttachmentReadEXT@, the @writeMask@
---     parameter in the last call to
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilWriteMask' /must/
---     be @0@
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-09116# If a shader object is bound
---     to any graphics stage or the bound graphics pipeline was created
---     with
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT',
---     and the format of any color attachment is
---     'Vulkan.Core10.Enums.Format.FORMAT_E5B9G9R9_UFLOAT_PACK32', the
---     corresponding element of the @pColorWriteMasks@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     /must/ either include all of
---     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_R_BIT',
---     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_G_BIT',
---     and
---     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_B_BIT',
---     or none of them
---
--- -   #VUID-vkCmdDrawMeshTasksNV-maxFragmentDualSrcAttachments-09239# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blending blending>
---     is enabled for any attachment where either the source or destination
---     blend factors for that attachment
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-dsb use the secondary color input>,
---     the maximum value of @Location@ for any output attachment
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-staticuse statically used>
---     in the @Fragment@ @Execution@ @Model@ executed by this command
---     /must/ be less than
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFragmentDualSrcAttachments maxFragmentDualSrcAttachments>
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-09548# If the current render pass
---     was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     and there is no shader object bound to any graphics stage, the value
---     of each element of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingAttachmentLocationInfoKHR'::@pColorAttachmentLocations@
---     set by
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.cmdSetRenderingAttachmentLocationsKHR'
---     /must/ match the value set for the corresponding element in the
---     bound pipeline
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-09549# If the current render pass
---     was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     and there is no shader object bound to any graphics stage, input
---     attachment index mappings in the bound pipeline /must/ match those
---     set for the current render pass instance via
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR'
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-09642# If the current render pass
---     was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     with the
---     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT'
---     flag, the bound graphics pipeline /must/ have been created with
---     'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT'
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-09643# If the bound graphics
---     pipeline was created with
---     'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT',
---     the current render pass /must/ have begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     with the
---     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT'
---     flag
---
--- -   #VUID-vkCmdDrawMeshTasksNV-stage-06480# The bound graphics pipeline
---     /must/ not have been created with the
---     'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo'::@stage@
---     member of any element of
---     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@pStages@ set
---     to
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-07074#
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-transform-feedback Transform Feedback Queries>
---     /must/ not be active
---
--- -   #VUID-vkCmdDrawMeshTasksNV-None-07075#
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-primitives-generated Primitives Generated Queries>
---     /must/ not be active
---
--- -   #VUID-vkCmdDrawMeshTasksNV-pipelineStatistics-07076# The
---     @pipelineStatistics@ member used to create any active
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-pipestats Pipeline Statistics Query>
---     /must/ not contain
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT',
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT',
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT',
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT',
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT',
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT',
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT',
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT',
---     or
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksNV-taskCount-02119# @taskCount@ /must/ be
---     less than or equal to
---     'PhysicalDeviceMeshShaderPropertiesNV'::@maxDrawMeshTasksCount@
---
--- -   #VUID-vkCmdDrawMeshTasksNV-MeshNV-07080# The current pipeline bound
---     to
---     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
---     /must/ contain a shader stage using the @MeshNV@ @Execution@ @Model@
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdDrawMeshTasksNV-commandBuffer-parameter# @commandBuffer@
---     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdDrawMeshTasksNV-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-vkCmdDrawMeshTasksNV-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
---
--- -   #VUID-vkCmdDrawMeshTasksNV-renderpass# This command /must/ only be
---     called inside of a render pass instance
---
--- -   #VUID-vkCmdDrawMeshTasksNV-videocoding# This command /must/ only be
---     called outside of a video coding scope
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
--- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Inside                                                                                                                 | Outside                                                                                                                     | Graphics                                                                                                              | Action                                                                                                                                 |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_mesh_shader VK_NV_mesh_shader>,
--- 'Vulkan.Core10.Handles.CommandBuffer'
-cmdDrawMeshTasksNV :: forall io
-                    . (MonadIO io)
-                   => -- | @commandBuffer@ is the command buffer into which the command will be
-                      -- recorded.
-                      CommandBuffer
-                   -> -- | @taskCount@ is the number of local workgroups to dispatch in the X
-                      -- dimension. Y and Z dimension are implicitly set to one.
-                      ("taskCount" ::: Word32)
-                   -> -- | @firstTask@ is the X component of the first workgroup ID.
-                      ("firstTask" ::: Word32)
-                   -> io ()
-cmdDrawMeshTasksNV commandBuffer taskCount firstTask = liftIO $ do
-  let vkCmdDrawMeshTasksNVPtr = pVkCmdDrawMeshTasksNV (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  unless (vkCmdDrawMeshTasksNVPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdDrawMeshTasksNV is null" Nothing Nothing
-  let vkCmdDrawMeshTasksNV' = mkVkCmdDrawMeshTasksNV vkCmdDrawMeshTasksNVPtr
-  traceAroundEvent "vkCmdDrawMeshTasksNV" (vkCmdDrawMeshTasksNV'
-                                             (commandBufferHandle (commandBuffer))
-                                             (taskCount)
-                                             (firstTask))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdDrawMeshTasksIndirectNV
-  :: FunPtr (Ptr CommandBuffer_T -> Buffer -> DeviceSize -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> DeviceSize -> Word32 -> Word32 -> IO ()
-
--- | vkCmdDrawMeshTasksIndirectNV - Issue an indirect mesh tasks draw into a
--- command buffer
---
--- = Description
---
--- 'cmdDrawMeshTasksIndirectNV' behaves similarly to 'cmdDrawMeshTasksNV'
--- 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 'DrawMeshTasksIndirectCommandNV' structures. If
--- @drawCount@ is less than or equal to one, @stride@ is ignored.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-magFilter-04553# If a
---     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
---     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR',
---     @reductionMode@ equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
---     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-vkCmdDrawMeshTasksIndirectNV-magFilter-09598# If a
---     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
---     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR' and
---     @reductionMode@ equal to either
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
---     or
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
---     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_MINMAX_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-mipmapMode-04770# If a
---     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
---     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR',
---     @reductionMode@ equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
---     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-vkCmdDrawMeshTasksIndirectNV-mipmapMode-09599# If a
---     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
---     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'
---     and @reductionMode@ equal to either
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
---     or
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
---     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_MINMAX_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-unnormalizedCoordinates-09635# If
---     a 'Vulkan.Core10.Handles.Sampler' created with
---     @unnormalizedCoordinates@ equal to
---     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
---     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
---     the image view’s @levelCount@ and @layerCount@ /must/ be 1
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-unnormalizedCoordinates-09636# If
---     a 'Vulkan.Core10.Handles.Sampler' created with
---     @unnormalizedCoordinates@ equal to
---     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
---     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
---     the image view’s @viewType@ /must/ be
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D' or
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-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-vkCmdDrawMeshTasksIndirectNV-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-vkCmdDrawMeshTasksIndirectNV-None-07888# If a
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'
---     descriptor is accessed using atomic operations as a result of this
---     command, then the storage texel buffer’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-buffer-view-format-features format features>
---     /must/ contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-02692# If a
---     'Vulkan.Core10.Handles.ImageView' is sampled with
---     'Vulkan.Core10.Enums.Filter.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.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-02693# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_filter_cubic VK_EXT_filter_cubic>
---     extension is not enabled and any 'Vulkan.Core10.Handles.ImageView'
---     is sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as a
---     result of this command, it /must/ not have a
---     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' of
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE', or
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-filterCubic-02694# Any
---     'Vulkan.Core10.Handles.ImageView' being sampled with
---     'Vulkan.Core10.Enums.Filter.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-vkCmdDrawMeshTasksIndirectNV-filterCubicMinmax-02695# Any
---     'Vulkan.Core10.Handles.ImageView' being sampled with
---     'Vulkan.Core10.Enums.Filter.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-vkCmdDrawMeshTasksIndirectNV-cubicRangeClamp-09212# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-cubicRangeClamp cubicRangeClamp>
---     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
---     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
---     a result of this command /must/ not have a
---     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
---     equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-reductionMode-09213# Any
---     'Vulkan.Core10.Handles.ImageView' being sampled with a
---     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
---     equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
---     as a result of this command /must/ sample with
---     'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-selectableCubicWeights-09214# If
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-selectableCubicWeights selectableCubicWeights>
---     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
---     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
---     a result of this command /must/ have
---     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.SamplerCubicWeightsCreateInfoQCOM'::@cubicWeights@
---     equal to
---     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-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-vkCmdDrawMeshTasksIndirectNV-OpTypeImage-07027# For any
---     'Vulkan.Core10.Handles.ImageView' being written as a storage image
---     where the image format field of the @OpTypeImage@ is @Unknown@, the
---     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_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-OpTypeImage-07028# For any
---     'Vulkan.Core10.Handles.ImageView' being read as a storage image
---     where the image format field of the @OpTypeImage@ is @Unknown@, the
---     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_STORAGE_READ_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-OpTypeImage-07029# For any
---     'Vulkan.Core10.Handles.BufferView' being written as a storage texel
---     buffer where the image format field of the @OpTypeImage@ is
---     @Unknown@, the view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
---     /must/ contain
---     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-OpTypeImage-07030# Any
---     'Vulkan.Core10.Handles.BufferView' being read as a storage texel
---     buffer where the image format field of the @OpTypeImage@ is
---     @Unknown@ then the view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
---     /must/ contain
---     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08600# For each set /n/ that
---     is statically used by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     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' or the
---     'Vulkan.Core10.Handles.DescriptorSetLayout' array used to create the
---     current 'Vulkan.Extensions.Handles.ShaderEXT' , as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08601# For each push
---     constant that is statically used by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     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' or the
---     'Vulkan.Core10.Handles.DescriptorSetLayout' array used to create the
---     current 'Vulkan.Extensions.Handles.ShaderEXT' , as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-10068# For each array of
---     resources that is used by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     the indices used to access members of the array /must/ be less than
---     the descriptor count for the identified binding in the descriptor
---     sets used by this command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-maintenance4-08602# 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
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     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' or the
---     'Vulkan.Core10.Handles.DescriptorSetLayout' and
---     'Vulkan.Core10.PipelineLayout.PushConstantRange' arrays used to
---     create the current 'Vulkan.Extensions.Handles.ShaderEXT' , as
---     described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08114# Descriptors in each
---     bound descriptor set, specified via
---     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
---     be valid as described by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
---     if they are statically used by the 'Vulkan.Core10.Handles.Pipeline'
---     bound to the pipeline bind point used by this command and the bound
---     'Vulkan.Core10.Handles.Pipeline' was not created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08115# If the descriptors
---     used by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline
---     bind point were specified via
---     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', the
---     bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
---     without
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08116# Descriptors in bound
---     descriptor buffers, specified via
---     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
---     /must/ be valid if they are dynamically used by the
---     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
---     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
---     was created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08604# Descriptors in bound
---     descriptor buffers, specified via
---     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
---     /must/ be valid if they are dynamically used by any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     to the pipeline bind point used by this command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08117# If the descriptors
---     used by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline
---     bind point were specified via
---     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
---     the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
---     with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08119# If a descriptor is
---     dynamically used with a 'Vulkan.Core10.Handles.Pipeline' created
---     with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
---     the descriptor memory /must/ be resident
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08605# If a descriptor is
---     dynamically used with a 'Vulkan.Extensions.Handles.ShaderEXT'
---     created with a 'Vulkan.Core10.Handles.DescriptorSetLayout' that was
---     created with
---     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
---     the descriptor memory /must/ be resident
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08606# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject>
---     feature is not enabled, a valid pipeline /must/ be bound to the
---     pipeline bind point used by this command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08608# If a pipeline is
---     bound to the pipeline bind point used by this command, there /must/
---     not have been any calls to dynamic state setting commands for any
---     state specified statically in the 'Vulkan.Core10.Handles.Pipeline'
---     object bound to the pipeline bind point used by this command, since
---     that pipeline was bound
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08609# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command or any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDrawMeshTasksIndirectNV-None-08610# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command or any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDrawMeshTasksIndirectNV-None-08611# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command or any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDrawMeshTasksIndirectNV-None-08607# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject>
---     feature is enabled, either a valid pipeline /must/ be bound to the
---     pipeline bind point used by this command, or a valid combination of
---     valid and 'Vulkan.Core10.APIConstants.NULL_HANDLE' shader objects
---     /must/ be bound to every supported shader stage corresponding to the
---     pipeline bind point used by this command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-uniformBuffers-06935# If any
---     stage of the 'Vulkan.Core10.Handles.Pipeline' object bound to the
---     pipeline bind point used by this command accesses a uniform buffer,
---     and that stage was created without enabling either
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT'
---     or
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT'
---     for @uniformBuffers@, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, that stage /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-vkCmdDrawMeshTasksIndirectNV-None-08612# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, and any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDrawMeshTasksIndirectNV-storageBuffers-06936# If any
---     stage of the 'Vulkan.Core10.Handles.Pipeline' object bound to the
---     pipeline bind point used by this command accesses a storage buffer,
---     and that stage was created without enabling either
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT'
---     or
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT'
---     for @storageBuffers@, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, that stage /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-vkCmdDrawMeshTasksIndirectNV-None-08613# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, and any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDrawMeshTasksIndirectNV-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
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shaders>
---     /must/ not be a protected resource
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-06550# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
---     accesses a 'Vulkan.Core10.Handles.Sampler' or
---     'Vulkan.Core10.Handles.ImageView' object that enables
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,
---     that object /must/ only be used with @OpImageSample*@ or
---     @OpImageSparseSample*@ instructions
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-ConstOffset-06551# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
---     accesses a 'Vulkan.Core10.Handles.Sampler' or
---     'Vulkan.Core10.Handles.ImageView' object that enables
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,
---     that object /must/ not use the @ConstOffset@ and @Offset@ operands
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-viewType-07752# If a
---     'Vulkan.Core10.Handles.ImageView' is accessed as a result of this
---     command, then the image view’s @viewType@ /must/ match the @Dim@
---     operand of the @OpTypeImage@ as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-image-dimensions ???>
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-format-07753# If a
---     'Vulkan.Core10.Handles.ImageView' is accessed as a result of this
---     command, then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-numericformat numeric type>
---     of the image view’s @format@ and the @Sampled@ @Type@ operand of the
---     @OpTypeImage@ /must/ match
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-OpImageWrite-08795# If a
---     'Vulkan.Core10.Handles.ImageView' created with a format other than
---     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM_KHR' 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-vkCmdDrawMeshTasksIndirectNV-OpImageWrite-08796# If a
---     'Vulkan.Core10.Handles.ImageView' created with the format
---     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM_KHR' is accessed using
---     @OpImageWrite@ as a result of this command, then the @Type@ of the
---     @Texel@ operand of that instruction /must/ have four components
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-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-vkCmdDrawMeshTasksIndirectNV-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-vkCmdDrawMeshTasksIndirectNV-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-vkCmdDrawMeshTasksIndirectNV-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-vkCmdDrawMeshTasksIndirectNV-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-vkCmdDrawMeshTasksIndirectNV-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-vkCmdDrawMeshTasksIndirectNV-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-vkCmdDrawMeshTasksIndirectNV-OpImageWeightedSampleQCOM-06971#
---     If @OpImageWeightedSampleQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-OpImageWeightedSampleQCOM-06972#
---     If @OpImageWeightedSampleQCOM@ uses a
---     'Vulkan.Core10.Handles.ImageView' as a sample weight image 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-OpImageBoxFilterQCOM-06973# If
---     @OpImageBoxFilterQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-OpImageBlockMatchSSDQCOM-06974#
---     If @OpImageBlockMatchSSDQCOM@ is used to read from an
---     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-OpImageBlockMatchSADQCOM-06975#
---     If @OpImageBlockMatchSADQCOM@ is used to read from an
---     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-OpImageBlockMatchSADQCOM-06976#
---     If @OpImageBlockMatchSADQCOM@ or OpImageBlockMatchSSDQCOM is used to
---     read from a reference image as result of this command, then the
---     specified reference coordinates /must/ not fail
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-OpImageWeightedSampleQCOM-06977#
---     If @OpImageWeightedSampleQCOM@, @OpImageBoxFilterQCOM@,
---     @OpImageBlockMatchWindowSSDQCOM@, @OpImageBlockMatchWindowSADQCOM@,
---     @OpImageBlockMatchGatherSSDQCOM@, @OpImageBlockMatchGatherSADQCOM@,
---     @OpImageBlockMatchSSDQCOM@, or @OpImageBlockMatchSADQCOM@ uses a
---     'Vulkan.Core10.Handles.Sampler' as a result of this command, then
---     the sampler /must/ have been created with
---     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-OpImageWeightedSampleQCOM-06978#
---     If any command other than @OpImageWeightedSampleQCOM@,
---     @OpImageBoxFilterQCOM@, @OpImageBlockMatchWindowSSDQCOM@,
---     @OpImageBlockMatchWindowSADQCOM@, @OpImageBlockMatchGatherSSDQCOM@,
---     @OpImageBlockMatchGatherSADQCOM@, @OpImageBlockMatchSSDQCOM@, or
---     @OpImageBlockMatchSADQCOM@ uses a 'Vulkan.Core10.Handles.Sampler' as
---     a result of this command, then the sampler /must/ not have been
---     created with
---     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-OpImageBlockMatchWindow-09215# If
---     a @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
---     instruction is used to read from an
---     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-OpImageBlockMatchWindow-09216# If
---     a @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
---     instruction is used to read from an
---     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
---     the image view’s format /must/ be a single-component format
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-OpImageBlockMatchWindow-09217# If
---     a @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
---     read from a reference image as result of this command, then the
---     specified reference coordinates /must/ not fail
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07288# Any shader invocation
---     executed by this command /must/
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-termination terminate>
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-09600# If a descriptor with
---     type equal to any of
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM',
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM',
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',
---     or
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'
---     is accessed as a result of this command, the image subresource
---     identified by that descriptor /must/ be in the image layout
---     identified when the descriptor was written
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-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-vkCmdDrawMeshTasksIndirectNV-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-vkCmdDrawMeshTasksIndirectNV-None-07748# If any shader
---     statically accesses an input attachment, a valid descriptor /must/
---     be bound to the pipeline via a descriptor set
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-OpTypeImage-07468# If any shader
---     executed by this pipeline accesses an @OpTypeImage@ variable with a
---     @Dim@ operand of @SubpassData@, it /must/ be decorated with an
---     @InputAttachmentIndex@ that corresponds to a valid input attachment
---     in the current subpass
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07469# Input attachment
---     views accessed in a subpass /must/ be created with the same
---     'Vulkan.Core10.Enums.Format.Format' as the corresponding subpass
---     definition, and be created with a 'Vulkan.Core10.Handles.ImageView'
---     that is compatible with the attachment referenced by the subpass\'
---     @pInputAttachments@[@InputAttachmentIndex@] in the bound
---     'Vulkan.Core10.Handles.Framebuffer' as specified by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#compatibility-inputattachment Fragment Input Attachment Compatibility>
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-pDepthInputAttachmentIndex-09595#
---     Input attachment views accessed in a dynamic render pass with a
---     @InputAttachmentIndex@ referenced by
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR',
---     or no @InputAttachmentIndex@ if
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR':@pDepthInputAttachmentIndex@
---     or
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR':@pStencilInputAttachmentIndex@
---     are @NULL@, /must/ be created with a
---     'Vulkan.Core10.Handles.ImageView' that is compatible with the
---     corresponding color, depth, or stencil attachment in
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-pDepthInputAttachmentIndex-09596#
---     Input attachment views accessed in a dynamic render pass via a
---     shader object /must/ have an @InputAttachmentIndex@ if both
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR':@pDepthInputAttachmentIndex@
---     and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR':@pStencilInputAttachmentIndex@
---     are non-@NULL@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-InputAttachmentIndex-09597# If an
---     input attachment view accessed in a dynamic render pass via a shader
---     object has an @InputAttachmentIndex@, the @InputAttachmentIndex@
---     /must/ match an index in
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-06537# Memory backing image
---     subresources used as attachments in the current render pass /must/
---     not be written in any way other than as an attachment by this
---     command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-09000# If a color attachment
---     is written by any prior command in this subpass or by the load,
---     store, or resolve operations for this subpass, it is not in the
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
---     image layout, and either:
---
---     -   the
---         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT'
---         is set on the bound pipeline or
---
---     -   the last call to
---         'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
---         included
---         'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'
---         and
---
---         -   there is no bound graphics pipeline or
---
---         -   the bound graphics pipeline was created with
---             'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
---
---     it /must/ not be accessed in any way other than as an attachment by
---     this command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-09001# If a depth attachment
---     is written by any prior command in this subpass or by the load,
---     store, or resolve operations for this subpass, it is not in the
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
---     image layout, and either:
---
---     -   the
---         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT'
---         is set on the bound pipeline or
---
---     -   the last call to
---         'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
---         included
---         'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT'
---         and
---
---         -   there is no bound graphics pipeline or
---
---         -   the bound graphics pipeline was created with
---             'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
---
---     it /must/ not be accessed in any way other than as an attachment by
---     this command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-09002# If a stencil
---     attachment is written by any prior command in this subpass or by the
---     load, store, or resolve operations for this subpass, it is not in
---     the
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
---     image layout, and either:
---
---     -   the
---         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT'
---         is set on the bound pipeline or
---
---     -   the last call to
---         'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
---         included
---         'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
---         and
---
---         -   there is no bound graphics pipeline or
---
---         -   the bound graphics pipeline was created with
---             'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
---
---     it /must/ not be accessed in any way other than as an attachment by
---     this command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-09003# If an attachment is
---     written by any prior command in this subpass or by the load, store,
---     or resolve operations for this subpass, it /must/ not be accessed in
---     any way other than as an attachment, storage image, or sampled image
---     by this command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-06539# If any previously
---     recorded command in the current subpass accessed an image
---     subresource used as an attachment in this subpass in any way other
---     than as an attachment, this command /must/ not write to that image
---     subresource as an attachment
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-06886# If the current render
---     pass instance uses a depth\/stencil attachment with a read-only
---     layout for the depth aspect,
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-depth-write depth writes>
---     /must/ be disabled
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-06887# If the current render
---     pass instance uses a depth\/stencil attachment with a read-only
---     layout for the stencil aspect, both front and back @writeMask@ are
---     not zero, and stencil test is enabled,
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-stencil all stencil ops>
---     /must/ be 'Vulkan.Core10.Enums.StencilOp.STENCIL_OP_KEEP'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07831# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT' dynamic
---     state enabled then
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetViewport' /must/ have
---     been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07832# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR' dynamic
---     state enabled then
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetScissor' /must/ have been
---     called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07833# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_WIDTH' dynamic
---     state enabled then
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth' /must/ have
---     been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08617# If a shader object is
---     bound to any graphics stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
---     in the current command buffer set @polygonMode@ to
---     'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_LINE',
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth' /must/ have
---     been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08618# If a shader object is
---     bound to any graphics stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
---     in the current command buffer set @primitiveTopology@ to any line
---     topology, 'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08619# If a shader object
---     that outputs line primitives is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE',
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth' /must/ have
---     been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07834# If a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS' dynamic
---     state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @depthBiasEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBounds' or
---     'Vulkan.Extensions.VK_EXT_depth_bias_control.cmdSetDepthBias2EXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07835# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_BLEND_CONSTANTS'
---     dynamic state enabled then
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetBlendConstants' /must/
---     have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08621# If a shader object is
---     bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     in the current command buffer set any element of
---     @pColorBlendEnables@ to 'Vulkan.Core10.FundamentalTypes.TRUE', and
---     the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     in the current command buffer set the same element of
---     @pColorBlendEquations@ to a
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.ColorBlendEquationEXT'
---     structure with any 'Vulkan.Core10.Enums.BlendFactor.BlendFactor'
---     member with a value of
---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_COLOR',
---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR',
---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_ALPHA', or
---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA',
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetBlendConstants' /must/
---     have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07836# If a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @depthBoundsTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBounds' /must/
---     have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07837# If a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_COMPARE_MASK'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilCompareMask'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07838# If a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_WRITE_MASK'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilWriteMask'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07839# If a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_REFERENCE'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of and @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilReference'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-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-vkCmdDrawMeshTasksIndirectNV-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-vkCmdDrawMeshTasksIndirectNV-None-07634# If the
---     @VK_EXT_sample_locations@ extension is enabled, a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-06666# If the
---     @VK_EXT_sample_locations@ extension is enabled, a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then
---     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07840# If a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CULL_MODE' dynamic
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetCullMode'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07841# If a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRONT_FACE' dynamic
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetFrontFace'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07843# If a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_TEST_ENABLE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE',
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthTestEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07844# If a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthWriteEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07845# If a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_COMPARE_OP'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @depthTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthCompareOp'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07846# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthBounds depthBounds>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthBoundsTestEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07847# If a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_TEST_ENABLE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilTestEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07848# If a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_OP' dynamic
---     state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilOp'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-viewportCount-03417# If a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
---     dynamic state enabled, and the state is not inherited, then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-scissorCount-03418# If a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
---     dynamic state enabled, and the state is not inherited, then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-viewportCount-03419# If a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which 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, and the state is not inherited, then 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-vkCmdDrawMeshTasksIndirectNV-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-vkCmdDrawMeshTasksIndirectNV-viewportCount-04138# If the
---     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which 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 state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @viewportWScalingEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.cmdSetViewportWScalingNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08636# If the
---     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which 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 state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @viewportWScalingEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', 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-vkCmdDrawMeshTasksIndirectNV-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-vkCmdDrawMeshTasksIndirectNV-shadingRateImage-09233# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV'
---     and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetCoarseSampleOrderNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-shadingRateImage-09234# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which 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 state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @shadingRateImageEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetViewportShadingRatePaletteNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08637# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which 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 state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @shadingRateImageEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', 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-vkCmdDrawMeshTasksIndirectNV-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
---     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo', 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-vkCmdDrawMeshTasksIndirectNV-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
---     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo', 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-vkCmdDrawMeshTasksIndirectNV-None-07878# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-exclusiveScissor exclusiveScissor>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07879# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-exclusiveScissor exclusiveScissor>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV'
---     dynamic state enabled, and the most recent call to
---     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorEnableNV'
---     in the current command buffer set any element of
---     @pExclusiveScissorEnables@ to 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then
---     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-04876# If a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     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 and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-04877# If a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-logicOp-04878# If a shader object
---     is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_EXT'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @logicOpEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetLogicOpEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-primitiveFragmentShadingRateWithMultipleViewports-04552#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
---     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-vkCmdDrawMeshTasksIndirectNV-primitiveFragmentShadingRateWithMultipleViewports-08642#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
---     limit is not supported, and any shader object bound to a graphics
---     stage writes 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-vkCmdDrawMeshTasksIndirectNV-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-vkCmdDrawMeshTasksIndirectNV-None-08643# If a shader object is
---     bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then for each color
---     attachment in the render pass, 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 corresponding member of @pColorBlendEnables@ in the most
---     recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     in the current command buffer that affected that attachment index
---     /must/ have been 'Vulkan.Core10.FundamentalTypes.FALSE'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-multisampledRenderToSingleSampled-07284#
---     If rasterization is not disabled in the bound graphics pipeline, and
---     none of the following is enabled:
---
---     -   the @VK_AMD_mixed_attachment_samples@ extension
---
---     -   the @VK_NV_framebuffer_mixed_samples@ extension
---
---     -   the
---         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---         feature
---
---     then @rasterizationSamples@ for the bound graphics pipeline /must/
---     be the same as the current subpass color and\/or depth\/stencil
---     attachments
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08644# If a shader object is
---     bound to any graphics stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and none of the following is
---     enabled:
---
---     -   the @VK_AMD_mixed_attachment_samples@ extension
---
---     -   the @VK_NV_framebuffer_mixed_samples@ extension
---
---     -   the
---         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---         feature
---
---     then the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     in the current command buffer /must/ have set @rasterizationSamples@
---     to be the same as the number of samples for the current render pass
---     color and\/or depth\/stencil attachments
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08876# If a shader object is
---     bound to any graphics stage, the current render pass instance /must/
---     have been begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-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-vkCmdDrawMeshTasksIndirectNV-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-vkCmdDrawMeshTasksIndirectNV-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-vkCmdDrawMeshTasksIndirectNV-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-vkCmdDrawMeshTasksIndirectNV-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-vkCmdDrawMeshTasksIndirectNV-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-vkCmdDrawMeshTasksIndirectNV-viewMask-06178# If the current
---     render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the 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-vkCmdDrawMeshTasksIndirectNV-colorAttachmentCount-06179# If
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled and the current render pass instance was
---     begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the 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-vkCmdDrawMeshTasksIndirectNV-dynamicRenderingUnusedAttachments-08910#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and 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 an @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 bound graphics pipeline
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-dynamicRenderingUnusedAttachments-08912#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and 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 an @imageView@ equal to
---     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have the
---     corresponding element of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
---     used to create the bound pipeline equal to
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-dynamicRenderingUnusedAttachments-08911#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is enabled, and 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 an @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 bound graphics pipeline, or the corresponding
---     element of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@,
---     if it exists, /must/ be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-colorAttachmentCount-09362# If
---     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@
---     equal to @1@, there is no shader object bound to any graphics stage,
---     and a color attachment with a resolve mode of
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID',
---     each element of the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
---     array with a @resolveImageView@ not equal to
---     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
---     with an image created with a
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value equal to the
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value used to create the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-09363# If there is no shader
---     object bound to any graphics stage, the current render pass instance
---     was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     and a
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
---     equal to @1@, and a color attachment with a resolve mode of
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID',
---     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 an image created with a
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value equal to the
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value used to create the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-09364# If the current render
---     pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is no shader object bound to any graphics stage, and the bound
---     graphics pipeline was created with a non-zero
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value and with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have set the blend enable to
---     'Vulkan.Core10.FundamentalTypes.FALSE' prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-09365# If the current render
---     pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is no shader object bound to any graphics stage, and the bound
---     graphics pipeline was created with a non-zero
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value and with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ have set @rasterizationSamples@ to
---     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' prior
---     to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-09366# If there is a shader
---     object bound to any graphics stage, and the current render pass
---     includes a color attachment that uses the
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID'
---     resolve mode, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have set blend enable to
---     'Vulkan.Core10.FundamentalTypes.FALSE' prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-rasterizationSamples-09367# If
---     there is a shader object bound to any graphics stage, and the
---     current render pass includes a color attachment that uses the
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID'
---     resolve mode, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ have set @rasterizationSamples@ to
---     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' prior
---     to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-09368# If the current render
---     pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is no shader object bound to any graphics stage, and the bound
---     graphics pipeline was created with a non-zero
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value and with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
---     /must/ have set @pFragmentSize->width@ to @1@ prior to this drawing
---     command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-09369# If the current render
---     pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is no shader object bound to any graphics stage, and the bound
---     graphics pipeline was created with a non-zero
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value and with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
---     /must/ have set @pFragmentSize->height@ to @1@ prior to this drawing
---     command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-pFragmentSize-09370# If there is
---     a shader object bound to any graphics stage, and the current render
---     pass includes a color attachment that uses the
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID'
---     resolve mode, then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
---     /must/ have set @pFragmentSize->width@ to @1@ prior to this drawing
---     command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-pFragmentSize-09371# If there is
---     a shader object bound to any graphics stage, and the current render
---     pass includes a color attachment that uses the
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID'
---     resolve mode, then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
---     /must/ have set @pFragmentSize->height@ to @1@ prior to this drawing
---     command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07749# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08646# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
---     feature is enabled, and a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-attachmentCount-07750# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'
---     dynamic state enabled then the @attachmentCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
---     /must/ be greater than or equal to the
---     'Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo'::@attachmentCount@
---     of the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08647# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
---     feature is enabled, and a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then the @attachmentCount@
---     parameter of most recent call to
---     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
---     in the current command buffer /must/ be greater than or equal to the
---     number of color attachments in the current render pass instance
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07751# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command for each
---     discard rectangle in
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'::@discardRectangleCount@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07880# If the
---     @VK_EXT_discard_rectangles@ extension is enabled, a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07881# If the
---     @VK_EXT_discard_rectangles@ extension is enabled, a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @discardRectangleEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-rasterizerDiscardEnable-09236# If
---     the @VK_EXT_discard_rectangles@ extension is enabled, and a shader
---     object is bound to any graphics stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEnableEXT'
---     in the current command buffer set @discardRectangleEnable@ to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-dynamicRenderingUnusedAttachments-08913#
---     If the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
---     used to create the bound graphics pipeline /must/ be equal to
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-dynamicRenderingUnusedAttachments-08914#
---     If current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->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 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->imageView@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-dynamicRenderingUnusedAttachments-08915#
---     If the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is enabled,
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
---     used to create the bound graphics pipeline was not equal to the
---     'Vulkan.Core10.Enums.Format.Format' used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@,
---     the value of the format /must/ be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-dynamicRenderingUnusedAttachments-08916#
---     If the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
---     used to create the bound graphics pipeline /must/ be equal to
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-dynamicRenderingUnusedAttachments-08917#
---     If current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->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 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->imageView@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-dynamicRenderingUnusedAttachments-08918#
---     If the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is enabled,
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
---     used to create the bound graphics pipeline was not equal to the
---     'Vulkan.Core10.Enums.Format.Format' used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@,
---     the value of the format /must/ be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-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_fragment_shading_rate.RenderingFragmentShadingRateAttachmentInfoKHR'::@imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the bound graphics
---     pipeline /must/ have been created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-imageView-06184# If the current
---     render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     and
---     'Vulkan.Extensions.VK_EXT_fragment_density_map.RenderingFragmentDensityMapAttachmentInfoEXT'::@imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the bound graphics
---     pipeline /must/ have been created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-colorAttachmentCount-06185# If
---     the bound pipeline was created with a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.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_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     used to create the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-pDepthAttachment-06186# If the
---     current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the bound pipeline was created with a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     structure, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
---     @depthStencilAttachmentSamples@ member of
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     used to create the bound graphics pipeline /must/ be equal to the
---     sample count used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-pStencilAttachment-06187# If the
---     current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the bound pipeline was created with a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     structure, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
---     @depthStencilAttachmentSamples@ member of
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     used to create the bound graphics pipeline /must/ be equal to the
---     sample count used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-multisampledRenderToSingleSampled-07285#
---     If the bound pipeline was created without a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     structure, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---     feature is not enabled, 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 @rasterizationSamples@ for
---     the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-multisampledRenderToSingleSampled-07286#
---     If the bound pipeline was created without a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     structure, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     @rasterizationSamples@ for the bound graphics pipeline /must/ be
---     equal to the sample count used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-multisampledRenderToSingleSampled-07287#
---     If the bound pipeline was created without a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     structure, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     @rasterizationSamples@ for the bound graphics pipeline /must/ be
---     equal to the sample count used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-pNext-07935# If this command has
---     been called inside a render pass instance started with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     and the @pNext@ chain of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'
---     includes a
---     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'
---     structure with @multisampledRenderToSingleSampledEnable@ equal to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the value of
---     @rasterizationSamples@ for the bound graphics pipeline /must/ be
---     equal to
---     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'::@rasterizationSamples@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-renderPass-06198# If the current
---     render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the bound pipeline /must/ have been created with a
---     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@renderPass@
---     equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-pColorAttachments-08963# If the
---     current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is a graphics pipeline bound with a fragment shader that
---     statically writes to a color attachment, the color write mask is not
---     zero, color writes are enabled, and the corresponding element of the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
---     corresponding element of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
---     used to create the pipeline /must/ not be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-pDepthAttachment-08964# If the
---     current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is a graphics pipeline bound, depth test is enabled, depth
---     write is enabled, and the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
---     used to create the pipeline /must/ not be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-pStencilAttachment-08965# If the
---     current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is a graphics pipeline bound, stencil test is enabled and the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
---     used to create the pipeline /must/ not be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-primitivesGeneratedQueryWithRasterizerDiscard-06708#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithRasterizerDiscard primitivesGeneratedQueryWithRasterizerDiscard>
---     feature is not enabled and the
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
---     query is active,
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-discard rasterization discard>
---     /must/ not be enabled
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-primitivesGeneratedQueryWithNonZeroStreams-06709#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>
---     feature is not enabled and the
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
---     query is active, the bound graphics pipeline /must/ not have been
---     created with a non-zero value in
---     'Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT'::@rasterizationStream@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07619# If a shader object is
---     bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetTessellationDomainOriginEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07620# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClamp depthClamp>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClampEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07621# If a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_POLYGON_MODE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07622# If a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07623# If a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-alphaToCoverageEnable-08919# If
---     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT'
---     dynamic state enabled, and @alphaToCoverageEnable@ was
---     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-fragmentoutput Fragment Output Interface>
---     /must/ contain a variable for the alpha @Component@ word in
---     @Location@ 0 at @Index@ 0
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-alphaToCoverageEnable-08920# If a
---     shader object is bound to any graphics stage, and the most recent
---     call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT'
---     in the current command buffer set @alphaToCoverageEnable@ to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-fragmentoutput Fragment Output Interface>
---     /must/ contain a variable for the alpha @Component@ word in
---     @Location@ 0 at @Index@ 0
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07624# If a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07625# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-alphaToOne alphaToOne>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToOneEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07626# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-logicOp logicOp>
---     feature is enabled, a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLogicOpEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07627# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08657# If a shader object is
---     bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and both the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE' and there are color
---     attachments bound, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07628# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08658# If a shader object is
---     bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     for any attachment set that attachment’s value in
---     @pColorBlendEnables@ to 'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07629# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08659# If a shader object is
---     bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and both the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE' and there are color
---     attachments bound, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07630# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryStreams geometryStreams>
---     feature is enabled, and a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_STREAM_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationStreamEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07631# If the
---     @VK_EXT_conservative_rasterization@ extension is enabled, a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetConservativeRasterizationModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07632# If the
---     @VK_EXT_conservative_rasterization@ extension is enabled, a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @conservativeRasterizationMode@ is
---     'Vulkan.Extensions.VK_EXT_conservative_rasterization.CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT',
---     then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetExtraPrimitiveOverestimationSizeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07633# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClipEnable depthClipEnable>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT'
---     dynamic state, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07635# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-rasterizerDiscardEnable-09416# If
---     the @VK_EXT_blend_operation_advanced@ extension is enabled, and a
---     shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then at least one of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     and
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07636# If the
---     @VK_EXT_provoking_vertex@ extension is enabled, a shader object is
---     bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetProvokingVertexModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07637# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08666# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object is bound to any graphics
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
---     in the current command buffer set @polygonMode@ to
---     'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_LINE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08667# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
---     in the current command buffer set @primitiveTopology@ to any line
---     topology, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08668# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object that outputs line
---     primitives is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07638# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08669# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object is bound to any graphics
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
---     in the current command buffer set @polygonMode@ to
---     'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_LINE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08670# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
---     in the current command buffer set @primitiveTopology@ to any line
---     topology, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08671# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object that outputs line
---     primitives is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07849# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled and a shader object is bound to any graphics
---     stage, or a bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_KHR'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @stippledLineEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then
---     'Vulkan.Extensions.VK_KHR_line_rasterization.cmdSetLineStippleKHR'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07639# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClipControl depthClipControl>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipNegativeOneToOneEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-09650# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClampControl depthClampControl>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @depthClampEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_depth_clamp_control.cmdSetDepthClampRangeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07640# If the
---     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportWScalingEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07641# If the
---     @VK_NV_viewport_swizzle@ extension is enabled, and a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07642# If the
---     @VK_NV_fragment_coverage_to_color@ extension is enabled, a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07643# If the
---     @VK_NV_fragment_coverage_to_color@ extension is enabled, a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @coverageToColorEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07644# If the
---     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationModeNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07645# If the
---     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @coverageModulationMode@ is any value other than
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.COVERAGE_MODULATION_MODE_NONE_NV',
---     then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07646# If the
---     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @coverageModulationTableEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07647# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetShadingRateImageEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-pipelineFragmentShadingRate-09238#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate>
---     feature is enabled, a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07648# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-representativeFragmentTest representativeFragmentTest>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRepresentativeFragmentTestEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07649# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-coverageReductionMode coverageReductionMode>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageReductionModeNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-pColorBlendEnables-07470# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---     state enabled and the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     set @pColorBlendEnables@ for any attachment to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then for those attachments in
---     the subpass 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>
---     /must/ contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-rasterizationSamples-07471# If
---     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the current subpass does not use any color
---     and\/or depth\/stencil attachments, then the @rasterizationSamples@
---     in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ follow the rules for a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-noattachments zero-attachment subpass>
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-samples-07472# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
---     state enabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state disabled, then the @samples@ parameter in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
---     /must/ be greater or equal to the
---     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
---     parameter used to create the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-samples-07473# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
---     state and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     states enabled, then the @samples@ parameter in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
---     /must/ be greater or equal to the @rasterizationSamples@ parameter
---     in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-rasterizationSamples-07474# If
---     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---     feature is not enabled, and neither the
---     @VK_AMD_mixed_attachment_samples@ nor the
---     @VK_NV_framebuffer_mixed_samples@ extensions are enabled, then the
---     @rasterizationSamples@ in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ be the same as the current subpass color and\/or
---     depth\/stencil attachments
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-09211# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, or a shader object is bound to any graphics stage,
---     and the current render pass instance includes a
---     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'
---     structure with @multisampledRenderToSingleSampledEnable@ equal to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the
---     @rasterizationSamples@ in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ be the same as the @rasterizationSamples@ member of that
---     structure
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-firstAttachment-07476# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     calls /must/ specify an enable for all active color attachments in
---     the current subpass
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-rasterizerDiscardEnable-09417# If
---     a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     calls /must/ specify an enable for all active color attachments in
---     the current subpass
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-firstAttachment-07477# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     calls /must/ specify the blend equations for all active color
---     attachments in the current subpass where blending is enabled
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-rasterizerDiscardEnable-09418# If
---     a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and both the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE' and there are color
---     attachments bound, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     calls /must/ specify the blend equations for all active color
---     attachments in the current subpass where blending is enabled
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-firstAttachment-07478# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     calls /must/ specify the color write mask for all active color
---     attachments in the current subpass
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-rasterizerDiscardEnable-09419# If
---     a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     calls /must/ specify the color write mask for all active color
---     attachments in the current subpass
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-firstAttachment-07479# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
---     calls /must/ specify the advanced blend equations for all active
---     color attachments in the current subpass where blending is enabled
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-advancedBlendMaxColorAttachments-07480#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
---     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---     dynamic states enabled and the last calls to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     and
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
---     have enabled advanced blending, then the number of active color
---     attachments in the current subpass /must/ not exceed
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-advancedBlendMaxColorAttachments advancedBlendMaxColorAttachments>
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-primitivesGeneratedQueryWithNonZeroStreams-07481#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>
---     feature is not enabled and the
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
---     query is active, and the bound graphics pipeline was created with
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_STREAM_EXT'
---     state enabled, the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationStreamEXT'
---     /must/ have set the @rasterizationStream@ to zero
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-sampleLocationsPerPixel-07482# If
---     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state enabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state disabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then the @sampleLocationsPerPixel@ member of @pSampleLocationsInfo@
---     in the last call to
---     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
---     /must/ equal the @rasterizationSamples@ member of the
---     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'
---     structure the bound graphics pipeline has been created with
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-sampleLocationsPerPixel-07483# If
---     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state enabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then the @sampleLocationsPerPixel@ member of @pSampleLocationsInfo@
---     in the last call to
---     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
---     /must/ equal the @rasterizationSamples@ parameter of the last call
---     to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-sampleLocationsEnable-07484# If a
---     shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, or the bound graphics pipeline was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     state enabled, and @sampleLocationsEnable@ was
---     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
---     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-vkCmdDrawMeshTasksIndirectNV-sampleLocationsEnable-07485# If a
---     shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state enabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     state enabled, and if @sampleLocationsEnable@ was
---     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
---     then the @sampleLocationsInfo.sampleLocationGridSize.width@ in the
---     last call to
---     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
---     /must/ evenly divide
---     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@sampleLocationGridSize.width@
---     as returned by
---     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
---     with a @samples@ parameter equaling @rasterizationSamples@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-sampleLocationsEnable-07486# If a
---     shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state enabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     state enabled, and if @sampleLocationsEnable@ was
---     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
---     then the @sampleLocationsInfo.sampleLocationGridSize.height@ in the
---     last call to
---     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
---     /must/ evenly divide
---     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@sampleLocationGridSize.height@
---     as returned by
---     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
---     with a @samples@ parameter equaling @rasterizationSamples@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-sampleLocationsEnable-07487# If a
---     shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     state enabled, and if @sampleLocationsEnable@ was
---     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
---     the fragment shader code /must/ not statically use the extended
---     instruction @InterpolateAtSample@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-sampleLocationsEnable-07936# If
---     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state disabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then @sampleLocationsInfo.sampleLocationGridSize.width@ /must/
---     evenly divide
---     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@sampleLocationGridSize.width@
---     as returned by
---     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
---     with a @samples@ parameter equaling the value of
---     @rasterizationSamples@ in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-sampleLocationsEnable-07937# If
---     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state disabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then @sampleLocationsInfo.sampleLocationGridSize.height@ /must/
---     evenly divide
---     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@sampleLocationGridSize.height@
---     as returned by
---     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
---     with a @samples@ parameter equaling the value of
---     @rasterizationSamples@ in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-sampleLocationsEnable-07938# If
---     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state disabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then @sampleLocationsInfo.sampleLocationsPerPixel@ /must/ equal
---     @rasterizationSamples@ in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-coverageModulationTableEnable-07488#
---     If a shader object is bound to any graphics stage or the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV'
---     state enabled, and the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV'
---     set @coverageModulationTableEnable@ to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the
---     @coverageModulationTableCount@ parameter in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableNV'
---     /must/ equal the current @rasterizationSamples@ divided by the
---     number of color samples in the current subpass
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-rasterizationSamples-07489# If
---     the @VK_NV_framebuffer_mixed_samples@ extension is enabled, and if
---     current subpass has a depth\/stencil attachment and depth test,
---     stencil test, or depth bounds test are enabled in the bound
---     pipeline, then the current @rasterizationSamples@ /must/ be the same
---     as the sample count of the depth\/stencil attachment
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-coverageToColorEnable-07490# If
---     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
---     state enabled and the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
---     set the @coverageToColorEnable@ to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the current subpass
---     /must/ have a color attachment at the location selected by the last
---     call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
---     @coverageToColorLocation@, with a
---     'Vulkan.Core10.Enums.Format.Format' of
---     'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R8_SINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R16_UINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R16_SINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R32_UINT', or
---     'Vulkan.Core10.Enums.Format.FORMAT_R32_SINT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-rasterizerDiscardEnable-09420# If
---     the @VK_NV_fragment_coverage_to_color@ extension is enabled, and a
---     shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
---     set the @coverageToColorEnable@ to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the current subpass
---     /must/ have a color attachment at the location selected by the last
---     call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
---     @coverageToColorLocation@, with a
---     'Vulkan.Core10.Enums.Format.Format' of
---     'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R8_SINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R16_UINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R16_SINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R32_UINT', or
---     'Vulkan.Core10.Enums.Format.FORMAT_R32_SINT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-coverageReductionMode-07491# If
---     this @VK_NV_coverage_reduction_mode@ extension is enabled, the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
---     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     states enabled, the current coverage reduction mode
---     @coverageReductionMode@, then the current @rasterizationSamples@,
---     and the sample counts for the color and depth\/stencil attachments
---     (if the subpass has them) /must/ be a valid combination returned by
---     'Vulkan.Extensions.VK_NV_coverage_reduction_mode.getPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-viewportCount-07492# 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_SWIZZLE_NV'
---     dynamic state enabled, 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-vkCmdDrawMeshTasksIndirectNV-viewportCount-07493# 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_SWIZZLE_NV'
---     dynamic states enabled then the @viewportCount@ parameter in the
---     last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
---     /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-vkCmdDrawMeshTasksIndirectNV-viewportCount-09421# If the
---     @VK_NV_viewport_swizzle@ extension is enabled, and a shader object
---     is bound to any graphics stage, then the @viewportCount@ parameter
---     in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
---     /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-vkCmdDrawMeshTasksIndirectNV-rasterizationSamples-07494# If
---     the @VK_NV_framebuffer_mixed_samples@ extension is enabled, and if
---     the current subpass has any color attachments and
---     @rasterizationSamples@ of the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     is greater than the number of color samples, then the pipeline
---     @sampleShadingEnable@ /must/ be
---     'Vulkan.Core10.FundamentalTypes.FALSE'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-stippledLineEnable-07495# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---     or
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---     dynamic states enabled, and if the current @stippledLineEnable@
---     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
---     @lineRasterizationMode@ state is
---     'Vulkan.Extensions.VK_KHR_line_rasterization.LINE_RASTERIZATION_MODE_RECTANGULAR_KHR',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>
---     feature /must/ be enabled
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-stippledLineEnable-07496# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---     or
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---     dynamic states enabled, and if the current @stippledLineEnable@
---     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
---     @lineRasterizationMode@ state is
---     'Vulkan.Extensions.VK_KHR_line_rasterization.LINE_RASTERIZATION_MODE_BRESENHAM_KHR',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     feature /must/ be enabled
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-stippledLineEnable-07497# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---     or
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---     dynamic states enabled, and if the current @stippledLineEnable@
---     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
---     @lineRasterizationMode@ state is
---     'Vulkan.Extensions.VK_KHR_line_rasterization.LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     feature /must/ be enabled
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-stippledLineEnable-07498# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---     or
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---     dynamic states enabled, and if the current @stippledLineEnable@
---     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
---     @lineRasterizationMode@ state is
---     'Vulkan.Extensions.VK_KHR_line_rasterization.LINE_RASTERIZATION_MODE_DEFAULT_KHR',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>
---     feature /must/ be enabled and
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@strictLines@
---     /must/ be 'Vulkan.Core10.FundamentalTypes.TRUE'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-conservativePointAndLineRasterization-07499#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT'
---     dynamic state enabled,
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-conservativePointAndLineRasterization conservativePointAndLineRasterization>
---     is not supported, and the effective primitive topology output by the
---     last pre-rasterization shader stage is a line or point, then the
---     @conservativeRasterizationMode@ set by the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetConservativeRasterizationModeEXT'
---     /must/ be
---     'Vulkan.Extensions.VK_EXT_conservative_rasterization.CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-stage-07073# If the bound
---     pipeline was 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_VERTEX_BIT',
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT',
---     then
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-mesh-shader Mesh Shader Queries>
---     /must/ not be active
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08877# If a shader object is
---     bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07850# If dynamic state was
---     inherited from
---     'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV',
---     it /must/ be set in the current command buffer prior to this drawing
---     command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08684# If there is no bound
---     graphics pipeline,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08685# If there is no bound
---     graphics pipeline, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellationShader>
---     feature is enabled,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08686# If there is no bound
---     graphics pipeline, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellationShader>
---     feature is enabled,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08687# If there is no bound
---     graphics pipeline, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometryShader>
---     feature is enabled,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08688# If there is no bound
---     graphics pipeline,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08689# If there is no bound
---     graphics pipeline, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
---     feature is enabled,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08690# If there is no bound
---     graphics pipeline, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
---     feature is enabled,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08693# If there is no bound
---     graphics pipeline, and at least one of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
---     and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
---     features is enabled, one of the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---     stages /must/ have a valid 'Vulkan.Extensions.Handles.ShaderEXT'
---     bound, and the other /must/ have no
---     'Vulkan.Extensions.Handles.ShaderEXT' bound
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08694# If there is no bound
---     graphics pipeline, and both the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
---     and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
---     features are enabled, and a valid
---     'Vulkan.Extensions.Handles.ShaderEXT' is bound the to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---     stage, and that 'Vulkan.Extensions.Handles.ShaderEXT' was created
---     without the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
---     flag, a valid 'Vulkan.Extensions.Handles.ShaderEXT' /must/ be bound
---     to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---     stage
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08695# If there is no bound
---     graphics pipeline, and both the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
---     and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
---     features are enabled, and a valid
---     'Vulkan.Extensions.Handles.ShaderEXT' is bound the to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---     stage, and that 'Vulkan.Extensions.Handles.ShaderEXT' was created
---     with the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
---     flag, there /must/ be no 'Vulkan.Extensions.Handles.ShaderEXT' bound
---     to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---     stage
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08696# If there is no bound
---     graphics pipeline, and a valid 'Vulkan.Extensions.Handles.ShaderEXT'
---     is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage, there /must/ be no 'Vulkan.Extensions.Handles.ShaderEXT'
---     bound to either the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---     stage or the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---     stage
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08698# If any graphics
---     shader is bound which was created with the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
---     flag, then all shaders created with the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
---     flag in the same
---     'Vulkan.Extensions.VK_EXT_shader_object.createShadersEXT' call
---     /must/ also be bound
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08699# If any graphics
---     shader is bound which was created with the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
---     flag, any stages in between stages whose shaders which did not
---     create a shader with the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
---     flag as part of the same
---     'Vulkan.Extensions.VK_EXT_shader_object.createShadersEXT' call
---     /must/ not have any 'Vulkan.Extensions.Handles.ShaderEXT' bound
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08878# All bound graphics
---     shader objects /must/ have been created with identical or
---     identically defined push constant ranges
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08879# All bound graphics
---     shader objects /must/ have been created with identical or
---     identically defined arrays of descriptor set layouts
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-colorAttachmentCount-09372# If
---     the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     and a
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
---     equal to @1@, a color attachment with a resolve mode of
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID',
---     and a fragment shader is bound, it /must/ not declare the
---     @DepthReplacing@ or @StencilRefReplacingEXT@ execution modes
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-pDynamicStates-08715# If the
---     bound graphics pipeline state includes a fragment shader stage, was
---     created with
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE'
---     set in
---     'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@,
---     and the fragment shader declares the @EarlyFragmentTests@ execution
---     mode and uses @OpDepthAttachmentReadEXT@, the @depthWriteEnable@
---     parameter in the last call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthWriteEnable'
---     /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-pDynamicStates-08716# If the
---     bound graphics pipeline state includes a fragment shader stage, was
---     created with
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_WRITE_MASK'
---     set in
---     'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@,
---     and the fragment shader declares the @EarlyFragmentTests@ execution
---     mode and uses @OpStencilAttachmentReadEXT@, the @writeMask@
---     parameter in the last call to
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilWriteMask' /must/
---     be @0@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-09116# If a shader object is
---     bound to any graphics stage or the bound graphics pipeline was
---     created with
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT',
---     and the format of any color attachment is
---     'Vulkan.Core10.Enums.Format.FORMAT_E5B9G9R9_UFLOAT_PACK32', the
---     corresponding element of the @pColorWriteMasks@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     /must/ either include all of
---     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_R_BIT',
---     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_G_BIT',
---     and
---     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_B_BIT',
---     or none of them
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-maxFragmentDualSrcAttachments-09239#
---     If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blending blending>
---     is enabled for any attachment where either the source or destination
---     blend factors for that attachment
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-dsb use the secondary color input>,
---     the maximum value of @Location@ for any output attachment
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-staticuse statically used>
---     in the @Fragment@ @Execution@ @Model@ executed by this command
---     /must/ be less than
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFragmentDualSrcAttachments maxFragmentDualSrcAttachments>
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-09548# If the current render
---     pass was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     and there is no shader object bound to any graphics stage, the value
---     of each element of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingAttachmentLocationInfoKHR'::@pColorAttachmentLocations@
---     set by
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.cmdSetRenderingAttachmentLocationsKHR'
---     /must/ match the value set for the corresponding element in the
---     bound pipeline
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-09549# If the current render
---     pass was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     and there is no shader object bound to any graphics stage, input
---     attachment index mappings in the bound pipeline /must/ match those
---     set for the current render pass instance via
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-09642# If the current render
---     pass was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     with the
---     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT'
---     flag, the bound graphics pipeline /must/ have been created with
---     'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-09643# If the bound graphics
---     pipeline was created with
---     'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT',
---     the current render pass /must/ have begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     with the
---     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT'
---     flag
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-stage-06480# The bound graphics
---     pipeline /must/ not have been created with the
---     'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo'::@stage@
---     member of any element of
---     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@pStages@ set
---     to
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07074#
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-transform-feedback Transform Feedback Queries>
---     /must/ not be active
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07075#
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-primitives-generated Primitives Generated Queries>
---     /must/ not be active
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-pipelineStatistics-07076# The
---     @pipelineStatistics@ member used to create any active
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-pipestats Pipeline Statistics Query>
---     /must/ not contain
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT',
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT',
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT',
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT',
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT',
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT',
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT',
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT',
---     or
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-buffer-02708# If @buffer@ is
---     non-sparse then it /must/ be bound completely and contiguously to a
---     single 'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-buffer-02709# @buffer@ /must/
---     have been created with the
---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'
---     bit set
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-offset-02710# @offset@ /must/ be
---     a multiple of @4@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-02711#
---     @commandBuffer@ /must/ not be a protected command buffer
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-drawCount-02718# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiDrawIndirect multiDrawIndirect>
---     feature is not enabled, @drawCount@ /must/ be @0@ or @1@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-drawCount-02719# @drawCount@
---     /must/ be less than or equal to
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxDrawIndirectCount@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-drawCount-02146# If @drawCount@
---     is greater than @1@, @stride@ /must/ be a multiple of @4@ and /must/
---     be greater than or equal to
---     @sizeof@('DrawMeshTasksIndirectCommandNV')
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-drawCount-02156# If @drawCount@
---     is equal to @1@, (@offset@ +
---     @sizeof@('DrawMeshTasksIndirectCommandNV')) /must/ be less than or
---     equal to the size of @buffer@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-drawCount-02157# If @drawCount@
---     is greater than @1@, (@stride@ × (@drawCount@ - 1) + @offset@ +
---     @sizeof@('DrawMeshTasksIndirectCommandNV')) /must/ be less than or
---     equal to the size of @buffer@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-MeshNV-07081# The current
---     pipeline bound to
---     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
---     /must/ contain a shader stage using the @MeshNV@ @Execution@ @Model@
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-buffer-parameter# @buffer@ /must/
---     be a valid 'Vulkan.Core10.Handles.Buffer' handle
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-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-vkCmdDrawMeshTasksIndirectNV-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-renderpass# This command /must/
---     only be called inside of a render pass instance
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-videocoding# This command /must/
---     only be called outside of a video coding scope
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-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#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
--- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Inside                                                                                                                 | Outside                                                                                                                     | Graphics                                                                                                              | Action                                                                                                                                 |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_mesh_shader VK_NV_mesh_shader>,
--- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.FundamentalTypes.DeviceSize'
-cmdDrawMeshTasksIndirectNV :: 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 ()
-cmdDrawMeshTasksIndirectNV commandBuffer
-                             buffer
-                             offset
-                             drawCount
-                             stride = liftIO $ do
-  let vkCmdDrawMeshTasksIndirectNVPtr = pVkCmdDrawMeshTasksIndirectNV (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  unless (vkCmdDrawMeshTasksIndirectNVPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdDrawMeshTasksIndirectNV is null" Nothing Nothing
-  let vkCmdDrawMeshTasksIndirectNV' = mkVkCmdDrawMeshTasksIndirectNV vkCmdDrawMeshTasksIndirectNVPtr
-  traceAroundEvent "vkCmdDrawMeshTasksIndirectNV" (vkCmdDrawMeshTasksIndirectNV'
-                                                     (commandBufferHandle (commandBuffer))
-                                                     (buffer)
-                                                     (offset)
-                                                     (drawCount)
-                                                     (stride))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdDrawMeshTasksIndirectCountNV
-  :: FunPtr (Ptr CommandBuffer_T -> Buffer -> DeviceSize -> Buffer -> DeviceSize -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> DeviceSize -> Buffer -> DeviceSize -> Word32 -> Word32 -> IO ()
-
--- | vkCmdDrawMeshTasksIndirectCountNV - Perform an indirect mesh tasks draw
--- with the draw count sourced from a buffer
---
--- = Description
---
--- 'cmdDrawMeshTasksIndirectCountNV' behaves similarly to
--- 'cmdDrawMeshTasksIndirectNV' except that the draw count is read by the
--- device from a buffer during execution. The command will read an unsigned
--- 32-bit integer from @countBuffer@ located at @countBufferOffset@ and use
--- this as the draw count.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-magFilter-04553# If a
---     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
---     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR',
---     @reductionMode@ equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
---     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-vkCmdDrawMeshTasksIndirectCountNV-magFilter-09598# If a
---     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
---     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR' and
---     @reductionMode@ equal to either
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
---     or
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
---     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_MINMAX_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-mipmapMode-04770# If a
---     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
---     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR',
---     @reductionMode@ equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
---     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-vkCmdDrawMeshTasksIndirectCountNV-mipmapMode-09599# If a
---     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
---     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'
---     and @reductionMode@ equal to either
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
---     or
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
---     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_MINMAX_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-unnormalizedCoordinates-09635#
---     If a 'Vulkan.Core10.Handles.Sampler' created with
---     @unnormalizedCoordinates@ equal to
---     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
---     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
---     the image view’s @levelCount@ and @layerCount@ /must/ be 1
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-unnormalizedCoordinates-09636#
---     If a 'Vulkan.Core10.Handles.Sampler' created with
---     @unnormalizedCoordinates@ equal to
---     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
---     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
---     the image view’s @viewType@ /must/ be
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D' or
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-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-vkCmdDrawMeshTasksIndirectCountNV-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-vkCmdDrawMeshTasksIndirectCountNV-None-07888# If a
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'
---     descriptor is accessed using atomic operations as a result of this
---     command, then the storage texel buffer’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-buffer-view-format-features format features>
---     /must/ contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02692# If a
---     'Vulkan.Core10.Handles.ImageView' is sampled with
---     'Vulkan.Core10.Enums.Filter.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.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02693# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_filter_cubic VK_EXT_filter_cubic>
---     extension is not enabled and any 'Vulkan.Core10.Handles.ImageView'
---     is sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as a
---     result of this command, it /must/ not have a
---     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' of
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE', or
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-filterCubic-02694# Any
---     'Vulkan.Core10.Handles.ImageView' being sampled with
---     'Vulkan.Core10.Enums.Filter.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-vkCmdDrawMeshTasksIndirectCountNV-filterCubicMinmax-02695# Any
---     'Vulkan.Core10.Handles.ImageView' being sampled with
---     'Vulkan.Core10.Enums.Filter.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-vkCmdDrawMeshTasksIndirectCountNV-cubicRangeClamp-09212# If
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-cubicRangeClamp cubicRangeClamp>
---     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
---     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
---     a result of this command /must/ not have a
---     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
---     equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-reductionMode-09213# Any
---     'Vulkan.Core10.Handles.ImageView' being sampled with a
---     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
---     equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
---     as a result of this command /must/ sample with
---     'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-selectableCubicWeights-09214#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-selectableCubicWeights selectableCubicWeights>
---     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
---     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
---     a result of this command /must/ have
---     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.SamplerCubicWeightsCreateInfoQCOM'::@cubicWeights@
---     equal to
---     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-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-vkCmdDrawMeshTasksIndirectCountNV-OpTypeImage-07027# For any
---     'Vulkan.Core10.Handles.ImageView' being written as a storage image
---     where the image format field of the @OpTypeImage@ is @Unknown@, the
---     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_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-OpTypeImage-07028# For any
---     'Vulkan.Core10.Handles.ImageView' being read as a storage image
---     where the image format field of the @OpTypeImage@ is @Unknown@, the
---     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_STORAGE_READ_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-OpTypeImage-07029# For any
---     'Vulkan.Core10.Handles.BufferView' being written as a storage texel
---     buffer where the image format field of the @OpTypeImage@ is
---     @Unknown@, the view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
---     /must/ contain
---     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-OpTypeImage-07030# Any
---     'Vulkan.Core10.Handles.BufferView' being read as a storage texel
---     buffer where the image format field of the @OpTypeImage@ is
---     @Unknown@ then the view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
---     /must/ contain
---     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08600# For each set /n/
---     that is statically used by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     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' or the
---     'Vulkan.Core10.Handles.DescriptorSetLayout' array used to create the
---     current 'Vulkan.Extensions.Handles.ShaderEXT' , as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08601# For each push
---     constant that is statically used by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     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' or the
---     'Vulkan.Core10.Handles.DescriptorSetLayout' array used to create the
---     current 'Vulkan.Extensions.Handles.ShaderEXT' , as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-10068# For each array
---     of resources that is used by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     the indices used to access members of the array /must/ be less than
---     the descriptor count for the identified binding in the descriptor
---     sets used by this command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-maintenance4-08602# 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
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     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' or the
---     'Vulkan.Core10.Handles.DescriptorSetLayout' and
---     'Vulkan.Core10.PipelineLayout.PushConstantRange' arrays used to
---     create the current 'Vulkan.Extensions.Handles.ShaderEXT' , as
---     described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08114# Descriptors in
---     each bound descriptor set, specified via
---     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
---     be valid as described by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
---     if they are statically used by the 'Vulkan.Core10.Handles.Pipeline'
---     bound to the pipeline bind point used by this command and the bound
---     'Vulkan.Core10.Handles.Pipeline' was not created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08115# If the
---     descriptors used by the 'Vulkan.Core10.Handles.Pipeline' bound to
---     the pipeline bind point were specified via
---     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', the
---     bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
---     without
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08116# Descriptors in
---     bound descriptor buffers, specified via
---     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
---     /must/ be valid if they are dynamically used by the
---     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
---     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
---     was created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08604# Descriptors in
---     bound descriptor buffers, specified via
---     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
---     /must/ be valid if they are dynamically used by any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     to the pipeline bind point used by this command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08117# If the
---     descriptors used by the 'Vulkan.Core10.Handles.Pipeline' bound to
---     the pipeline bind point were specified via
---     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
---     the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
---     with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08119# If a descriptor
---     is dynamically used with a 'Vulkan.Core10.Handles.Pipeline' created
---     with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
---     the descriptor memory /must/ be resident
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08605# If a descriptor
---     is dynamically used with a 'Vulkan.Extensions.Handles.ShaderEXT'
---     created with a 'Vulkan.Core10.Handles.DescriptorSetLayout' that was
---     created with
---     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
---     the descriptor memory /must/ be resident
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08606# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject>
---     feature is not enabled, a valid pipeline /must/ be bound to the
---     pipeline bind point used by this command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08608# If a pipeline is
---     bound to the pipeline bind point used by this command, there /must/
---     not have been any calls to dynamic state setting commands for any
---     state specified statically in the 'Vulkan.Core10.Handles.Pipeline'
---     object bound to the pipeline bind point used by this command, since
---     that pipeline was bound
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08609# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command or any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDrawMeshTasksIndirectCountNV-None-08610# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command or any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDrawMeshTasksIndirectCountNV-None-08611# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command or any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDrawMeshTasksIndirectCountNV-None-08607# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject>
---     feature is enabled, either a valid pipeline /must/ be bound to the
---     pipeline bind point used by this command, or a valid combination of
---     valid and 'Vulkan.Core10.APIConstants.NULL_HANDLE' shader objects
---     /must/ be bound to every supported shader stage corresponding to the
---     pipeline bind point used by this command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-uniformBuffers-06935# If any
---     stage of the 'Vulkan.Core10.Handles.Pipeline' object bound to the
---     pipeline bind point used by this command accesses a uniform buffer,
---     and that stage was created without enabling either
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT'
---     or
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT'
---     for @uniformBuffers@, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, that stage /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-vkCmdDrawMeshTasksIndirectCountNV-None-08612# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, and any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDrawMeshTasksIndirectCountNV-storageBuffers-06936# If any
---     stage of the 'Vulkan.Core10.Handles.Pipeline' object bound to the
---     pipeline bind point used by this command accesses a storage buffer,
---     and that stage was created without enabling either
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT'
---     or
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT'
---     for @storageBuffers@, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, that stage /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-vkCmdDrawMeshTasksIndirectCountNV-None-08613# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, and any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdDrawMeshTasksIndirectCountNV-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
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shaders>
---     /must/ not be a protected resource
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-06550# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
---     accesses a 'Vulkan.Core10.Handles.Sampler' or
---     'Vulkan.Core10.Handles.ImageView' object that enables
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,
---     that object /must/ only be used with @OpImageSample*@ or
---     @OpImageSparseSample*@ instructions
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-ConstOffset-06551# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
---     accesses a 'Vulkan.Core10.Handles.Sampler' or
---     'Vulkan.Core10.Handles.ImageView' object that enables
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,
---     that object /must/ not use the @ConstOffset@ and @Offset@ operands
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-viewType-07752# If a
---     'Vulkan.Core10.Handles.ImageView' is accessed as a result of this
---     command, then the image view’s @viewType@ /must/ match the @Dim@
---     operand of the @OpTypeImage@ as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-image-dimensions ???>
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-format-07753# If a
---     'Vulkan.Core10.Handles.ImageView' is accessed as a result of this
---     command, then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-numericformat numeric type>
---     of the image view’s @format@ and the @Sampled@ @Type@ operand of the
---     @OpTypeImage@ /must/ match
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-OpImageWrite-08795# If a
---     'Vulkan.Core10.Handles.ImageView' created with a format other than
---     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM_KHR' 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-vkCmdDrawMeshTasksIndirectCountNV-OpImageWrite-08796# If a
---     'Vulkan.Core10.Handles.ImageView' created with the format
---     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM_KHR' is accessed using
---     @OpImageWrite@ as a result of this command, then the @Type@ of the
---     @Texel@ operand of that instruction /must/ have four components
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-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-vkCmdDrawMeshTasksIndirectCountNV-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-vkCmdDrawMeshTasksIndirectCountNV-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-vkCmdDrawMeshTasksIndirectCountNV-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-vkCmdDrawMeshTasksIndirectCountNV-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-vkCmdDrawMeshTasksIndirectCountNV-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-vkCmdDrawMeshTasksIndirectCountNV-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-vkCmdDrawMeshTasksIndirectCountNV-OpImageWeightedSampleQCOM-06971#
---     If @OpImageWeightedSampleQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-OpImageWeightedSampleQCOM-06972#
---     If @OpImageWeightedSampleQCOM@ uses a
---     'Vulkan.Core10.Handles.ImageView' as a sample weight image 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-OpImageBoxFilterQCOM-06973#
---     If @OpImageBoxFilterQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-OpImageBlockMatchSSDQCOM-06974#
---     If @OpImageBlockMatchSSDQCOM@ is used to read from an
---     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-OpImageBlockMatchSADQCOM-06975#
---     If @OpImageBlockMatchSADQCOM@ is used to read from an
---     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-OpImageBlockMatchSADQCOM-06976#
---     If @OpImageBlockMatchSADQCOM@ or OpImageBlockMatchSSDQCOM is used to
---     read from a reference image as result of this command, then the
---     specified reference coordinates /must/ not fail
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-OpImageWeightedSampleQCOM-06977#
---     If @OpImageWeightedSampleQCOM@, @OpImageBoxFilterQCOM@,
---     @OpImageBlockMatchWindowSSDQCOM@, @OpImageBlockMatchWindowSADQCOM@,
---     @OpImageBlockMatchGatherSSDQCOM@, @OpImageBlockMatchGatherSADQCOM@,
---     @OpImageBlockMatchSSDQCOM@, or @OpImageBlockMatchSADQCOM@ uses a
---     'Vulkan.Core10.Handles.Sampler' as a result of this command, then
---     the sampler /must/ have been created with
---     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-OpImageWeightedSampleQCOM-06978#
---     If any command other than @OpImageWeightedSampleQCOM@,
---     @OpImageBoxFilterQCOM@, @OpImageBlockMatchWindowSSDQCOM@,
---     @OpImageBlockMatchWindowSADQCOM@, @OpImageBlockMatchGatherSSDQCOM@,
---     @OpImageBlockMatchGatherSADQCOM@, @OpImageBlockMatchSSDQCOM@, or
---     @OpImageBlockMatchSADQCOM@ uses a 'Vulkan.Core10.Handles.Sampler' as
---     a result of this command, then the sampler /must/ not have been
---     created with
---     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-OpImageBlockMatchWindow-09215#
---     If a @OpImageBlockMatchWindow*QCOM@ or
---     @OpImageBlockMatchGather*QCOM@ instruction is used to read from an
---     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-OpImageBlockMatchWindow-09216#
---     If a @OpImageBlockMatchWindow*QCOM@ or
---     @OpImageBlockMatchGather*QCOM@ instruction is used to read from an
---     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
---     the image view’s format /must/ be a single-component format
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-OpImageBlockMatchWindow-09217#
---     If a @OpImageBlockMatchWindow*QCOM@ or
---     @OpImageBlockMatchGather*QCOM@ read from a reference image as result
---     of this command, then the specified reference coordinates /must/ not
---     fail
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07288# Any shader
---     invocation executed by this command /must/
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-termination terminate>
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09600# If a descriptor
---     with type equal to any of
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM',
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM',
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',
---     or
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'
---     is accessed as a result of this command, the image subresource
---     identified by that descriptor /must/ be in the image layout
---     identified when the descriptor was written
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-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-vkCmdDrawMeshTasksIndirectCountNV-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-vkCmdDrawMeshTasksIndirectCountNV-None-07748# If any shader
---     statically accesses an input attachment, a valid descriptor /must/
---     be bound to the pipeline via a descriptor set
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-OpTypeImage-07468# If any
---     shader executed by this pipeline accesses an @OpTypeImage@ variable
---     with a @Dim@ operand of @SubpassData@, it /must/ be decorated with
---     an @InputAttachmentIndex@ that corresponds to a valid input
---     attachment in the current subpass
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07469# Input attachment
---     views accessed in a subpass /must/ be created with the same
---     'Vulkan.Core10.Enums.Format.Format' as the corresponding subpass
---     definition, and be created with a 'Vulkan.Core10.Handles.ImageView'
---     that is compatible with the attachment referenced by the subpass\'
---     @pInputAttachments@[@InputAttachmentIndex@] in the bound
---     'Vulkan.Core10.Handles.Framebuffer' as specified by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#compatibility-inputattachment Fragment Input Attachment Compatibility>
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-pDepthInputAttachmentIndex-09595#
---     Input attachment views accessed in a dynamic render pass with a
---     @InputAttachmentIndex@ referenced by
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR',
---     or no @InputAttachmentIndex@ if
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR':@pDepthInputAttachmentIndex@
---     or
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR':@pStencilInputAttachmentIndex@
---     are @NULL@, /must/ be created with a
---     'Vulkan.Core10.Handles.ImageView' that is compatible with the
---     corresponding color, depth, or stencil attachment in
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-pDepthInputAttachmentIndex-09596#
---     Input attachment views accessed in a dynamic render pass via a
---     shader object /must/ have an @InputAttachmentIndex@ if both
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR':@pDepthInputAttachmentIndex@
---     and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR':@pStencilInputAttachmentIndex@
---     are non-@NULL@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-InputAttachmentIndex-09597#
---     If an input attachment view accessed in a dynamic render pass via a
---     shader object has an @InputAttachmentIndex@, the
---     @InputAttachmentIndex@ /must/ match an index in
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-06537# Memory backing
---     image subresources used as attachments in the current render pass
---     /must/ not be written in any way other than as an attachment by this
---     command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09000# If a color
---     attachment is written by any prior command in this subpass or by the
---     load, store, or resolve operations for this subpass, it is not in
---     the
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
---     image layout, and either:
---
---     -   the
---         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT'
---         is set on the bound pipeline or
---
---     -   the last call to
---         'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
---         included
---         'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'
---         and
---
---         -   there is no bound graphics pipeline or
---
---         -   the bound graphics pipeline was created with
---             'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
---
---     it /must/ not be accessed in any way other than as an attachment by
---     this command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09001# If a depth
---     attachment is written by any prior command in this subpass or by the
---     load, store, or resolve operations for this subpass, it is not in
---     the
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
---     image layout, and either:
---
---     -   the
---         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT'
---         is set on the bound pipeline or
---
---     -   the last call to
---         'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
---         included
---         'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT'
---         and
---
---         -   there is no bound graphics pipeline or
---
---         -   the bound graphics pipeline was created with
---             'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
---
---     it /must/ not be accessed in any way other than as an attachment by
---     this command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09002# If a stencil
---     attachment is written by any prior command in this subpass or by the
---     load, store, or resolve operations for this subpass, it is not in
---     the
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
---     image layout, and either:
---
---     -   the
---         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT'
---         is set on the bound pipeline or
---
---     -   the last call to
---         'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
---         included
---         'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
---         and
---
---         -   there is no bound graphics pipeline or
---
---         -   the bound graphics pipeline was created with
---             'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
---
---     it /must/ not be accessed in any way other than as an attachment by
---     this command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09003# If an attachment
---     is written by any prior command in this subpass or by the load,
---     store, or resolve operations for this subpass, it /must/ not be
---     accessed in any way other than as an attachment, storage image, or
---     sampled image by this command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-06539# If any
---     previously recorded command in the current subpass accessed an image
---     subresource used as an attachment in this subpass in any way other
---     than as an attachment, this command /must/ not write to that image
---     subresource as an attachment
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-06886# If the current
---     render pass instance uses a depth\/stencil attachment with a
---     read-only layout for the depth aspect,
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-depth-write depth writes>
---     /must/ be disabled
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-06887# If the current
---     render pass instance uses a depth\/stencil attachment with a
---     read-only layout for the stencil aspect, both front and back
---     @writeMask@ are not zero, and stencil test is enabled,
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-stencil all stencil ops>
---     /must/ be 'Vulkan.Core10.Enums.StencilOp.STENCIL_OP_KEEP'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07831# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT' dynamic
---     state enabled then
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetViewport' /must/ have
---     been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07832# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR' dynamic
---     state enabled then
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetScissor' /must/ have been
---     called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07833# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_WIDTH' dynamic
---     state enabled then
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth' /must/ have
---     been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08617# If a shader
---     object is bound to any graphics stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
---     in the current command buffer set @polygonMode@ to
---     'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_LINE',
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth' /must/ have
---     been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08618# If a shader
---     object is bound to any graphics stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
---     in the current command buffer set @primitiveTopology@ to any line
---     topology, 'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08619# If a shader
---     object that outputs line primitives is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE',
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth' /must/ have
---     been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07834# If a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS' dynamic
---     state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @depthBiasEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBounds' or
---     'Vulkan.Extensions.VK_EXT_depth_bias_control.cmdSetDepthBias2EXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07835# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_BLEND_CONSTANTS'
---     dynamic state enabled then
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetBlendConstants' /must/
---     have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08621# If a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     in the current command buffer set any element of
---     @pColorBlendEnables@ to 'Vulkan.Core10.FundamentalTypes.TRUE', and
---     the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     in the current command buffer set the same element of
---     @pColorBlendEquations@ to a
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.ColorBlendEquationEXT'
---     structure with any 'Vulkan.Core10.Enums.BlendFactor.BlendFactor'
---     member with a value of
---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_COLOR',
---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR',
---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_ALPHA', or
---     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA',
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetBlendConstants' /must/
---     have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07836# If a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @depthBoundsTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBounds' /must/
---     have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07837# If a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_COMPARE_MASK'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilCompareMask'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07838# If a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_WRITE_MASK'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilWriteMask'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07839# If a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_REFERENCE'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of and @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilReference'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-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-vkCmdDrawMeshTasksIndirectCountNV-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-vkCmdDrawMeshTasksIndirectCountNV-None-07634# If the
---     @VK_EXT_sample_locations@ extension is enabled, a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-06666# If the
---     @VK_EXT_sample_locations@ extension is enabled, a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then
---     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07840# If a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CULL_MODE' dynamic
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetCullMode'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07841# If a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRONT_FACE' dynamic
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetFrontFace'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07843# If a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_TEST_ENABLE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE',
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthTestEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07844# If a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthWriteEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07845# If a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_COMPARE_OP'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @depthTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthCompareOp'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07846# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthBounds depthBounds>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthBoundsTestEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07847# If a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_TEST_ENABLE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilTestEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07848# If a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_OP' dynamic
---     state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilOp'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-03417# If a
---     shader object is bound to any graphics stage or a graphics pipeline
---     is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
---     dynamic state enabled, and the state is not inherited, then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-scissorCount-03418# If a
---     shader object is bound to any graphics stage or a graphics pipeline
---     is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
---     dynamic state enabled, and the state is not inherited, then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-03419# If a
---     shader object is bound to any graphics stage or a graphics pipeline
---     is bound which 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, and the state is not inherited, then 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-vkCmdDrawMeshTasksIndirectCountNV-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-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-04138# If the
---     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which 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 state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @viewportWScalingEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.cmdSetViewportWScalingNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08636# If the
---     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which 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 state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @viewportWScalingEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', 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-vkCmdDrawMeshTasksIndirectCountNV-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-vkCmdDrawMeshTasksIndirectCountNV-shadingRateImage-09233# If
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV'
---     and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetCoarseSampleOrderNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-shadingRateImage-09234# If
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which 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 state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @shadingRateImageEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetViewportShadingRatePaletteNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08637# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which 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 state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @shadingRateImageEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', 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-vkCmdDrawMeshTasksIndirectCountNV-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
---     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo', 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-vkCmdDrawMeshTasksIndirectCountNV-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
---     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo', 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-vkCmdDrawMeshTasksIndirectCountNV-None-07878# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-exclusiveScissor exclusiveScissor>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07879# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-exclusiveScissor exclusiveScissor>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV'
---     dynamic state enabled, and the most recent call to
---     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorEnableNV'
---     in the current command buffer set any element of
---     @pExclusiveScissorEnables@ to 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then
---     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-04876# If a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which 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 and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-04877# If a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnable'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-logicOp-04878# If a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_EXT'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @logicOpEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetLogicOpEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-primitiveFragmentShadingRateWithMultipleViewports-04552#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
---     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-vkCmdDrawMeshTasksIndirectCountNV-primitiveFragmentShadingRateWithMultipleViewports-08642#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
---     limit is not supported, and any shader object bound to a graphics
---     stage writes 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-vkCmdDrawMeshTasksIndirectCountNV-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-vkCmdDrawMeshTasksIndirectCountNV-None-08643# If a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then for each color
---     attachment in the render pass, 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 corresponding member of @pColorBlendEnables@ in the most
---     recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     in the current command buffer that affected that attachment index
---     /must/ have been 'Vulkan.Core10.FundamentalTypes.FALSE'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-multisampledRenderToSingleSampled-07284#
---     If rasterization is not disabled in the bound graphics pipeline, and
---     none of the following is enabled:
---
---     -   the @VK_AMD_mixed_attachment_samples@ extension
---
---     -   the @VK_NV_framebuffer_mixed_samples@ extension
---
---     -   the
---         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---         feature
---
---     then @rasterizationSamples@ for the bound graphics pipeline /must/
---     be the same as the current subpass color and\/or depth\/stencil
---     attachments
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08644# If a shader
---     object is bound to any graphics stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and none of the following is
---     enabled:
---
---     -   the @VK_AMD_mixed_attachment_samples@ extension
---
---     -   the @VK_NV_framebuffer_mixed_samples@ extension
---
---     -   the
---         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---         feature
---
---     then the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     in the current command buffer /must/ have set @rasterizationSamples@
---     to be the same as the number of samples for the current render pass
---     color and\/or depth\/stencil attachments
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08876# If a shader
---     object is bound to any graphics stage, the current render pass
---     instance /must/ have been begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-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-vkCmdDrawMeshTasksIndirectCountNV-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-vkCmdDrawMeshTasksIndirectCountNV-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-vkCmdDrawMeshTasksIndirectCountNV-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-vkCmdDrawMeshTasksIndirectCountNV-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-vkCmdDrawMeshTasksIndirectCountNV-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-vkCmdDrawMeshTasksIndirectCountNV-viewMask-06178# If the
---     current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the 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-vkCmdDrawMeshTasksIndirectCountNV-colorAttachmentCount-06179#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled and the current render pass instance was
---     begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the 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-vkCmdDrawMeshTasksIndirectCountNV-dynamicRenderingUnusedAttachments-08910#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and 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 an @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 bound graphics pipeline
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-dynamicRenderingUnusedAttachments-08912#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and 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 an @imageView@ equal to
---     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have the
---     corresponding element of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
---     used to create the bound pipeline equal to
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-dynamicRenderingUnusedAttachments-08911#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is enabled, and 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 an @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 bound graphics pipeline, or the corresponding
---     element of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@,
---     if it exists, /must/ be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-colorAttachmentCount-09362#
---     If 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@
---     equal to @1@, there is no shader object bound to any graphics stage,
---     and a color attachment with a resolve mode of
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID',
---     each element of the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
---     array with a @resolveImageView@ not equal to
---     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
---     with an image created with a
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value equal to the
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value used to create the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09363# If there is no
---     shader object bound to any graphics stage, the current render pass
---     instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     and a
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
---     equal to @1@, and a color attachment with a resolve mode of
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID',
---     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 an image created with a
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value equal to the
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value used to create the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09364# If the current
---     render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is no shader object bound to any graphics stage, and the bound
---     graphics pipeline was created with a non-zero
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value and with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have set the blend enable to
---     'Vulkan.Core10.FundamentalTypes.FALSE' prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09365# If the current
---     render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is no shader object bound to any graphics stage, and the bound
---     graphics pipeline was created with a non-zero
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value and with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ have set @rasterizationSamples@ to
---     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' prior
---     to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09366# If there is a
---     shader object bound to any graphics stage, and the current render
---     pass includes a color attachment that uses the
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID'
---     resolve mode, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have set blend enable to
---     'Vulkan.Core10.FundamentalTypes.FALSE' prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-rasterizationSamples-09367#
---     If there is a shader object bound to any graphics stage, and the
---     current render pass includes a color attachment that uses the
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID'
---     resolve mode, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ have set @rasterizationSamples@ to
---     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' prior
---     to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09368# If the current
---     render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is no shader object bound to any graphics stage, and the bound
---     graphics pipeline was created with a non-zero
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value and with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
---     /must/ have set @pFragmentSize->width@ to @1@ prior to this drawing
---     command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09369# If the current
---     render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is no shader object bound to any graphics stage, and the bound
---     graphics pipeline was created with a non-zero
---     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
---     value and with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
---     /must/ have set @pFragmentSize->height@ to @1@ prior to this drawing
---     command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-pFragmentSize-09370# If
---     there is a shader object bound to any graphics stage, and the
---     current render pass includes a color attachment that uses the
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID'
---     resolve mode, then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
---     /must/ have set @pFragmentSize->width@ to @1@ prior to this drawing
---     command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-pFragmentSize-09371# If
---     there is a shader object bound to any graphics stage, and the
---     current render pass includes a color attachment that uses the
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID'
---     resolve mode, then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
---     /must/ have set @pFragmentSize->height@ to @1@ prior to this drawing
---     command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07749# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08646# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
---     feature is enabled, and a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-attachmentCount-07750# If
---     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'
---     dynamic state enabled then the @attachmentCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
---     /must/ be greater than or equal to the
---     'Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo'::@attachmentCount@
---     of the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08647# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
---     feature is enabled, and a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then the @attachmentCount@
---     parameter of most recent call to
---     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
---     in the current command buffer /must/ be greater than or equal to the
---     number of color attachments in the current render pass instance
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07751# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command for each
---     discard rectangle in
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'::@discardRectangleCount@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07880# If the
---     @VK_EXT_discard_rectangles@ extension is enabled, a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07881# If the
---     @VK_EXT_discard_rectangles@ extension is enabled, a shader object is
---     bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @discardRectangleEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-rasterizerDiscardEnable-09236#
---     If the @VK_EXT_discard_rectangles@ extension is enabled, and a
---     shader object is bound to any graphics stage, and the most recent
---     call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEnableEXT'
---     in the current command buffer set @discardRectangleEnable@ to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-dynamicRenderingUnusedAttachments-08913#
---     If the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
---     used to create the bound graphics pipeline /must/ be equal to
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-dynamicRenderingUnusedAttachments-08914#
---     If current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->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 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->imageView@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-dynamicRenderingUnusedAttachments-08915#
---     If the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is enabled,
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
---     used to create the bound graphics pipeline was not equal to the
---     'Vulkan.Core10.Enums.Format.Format' used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@,
---     the value of the format /must/ be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-dynamicRenderingUnusedAttachments-08916#
---     If the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
---     used to create the bound graphics pipeline /must/ be equal to
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-dynamicRenderingUnusedAttachments-08917#
---     If current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->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 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->imageView@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-dynamicRenderingUnusedAttachments-08918#
---     If the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
---     feature is enabled,
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
---     used to create the bound graphics pipeline was not equal to the
---     'Vulkan.Core10.Enums.Format.Format' used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@,
---     the value of the format /must/ be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-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_fragment_shading_rate.RenderingFragmentShadingRateAttachmentInfoKHR'::@imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the bound graphics
---     pipeline /must/ have been created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-imageView-06184# If the
---     current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     and
---     'Vulkan.Extensions.VK_EXT_fragment_density_map.RenderingFragmentDensityMapAttachmentInfoEXT'::@imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the bound graphics
---     pipeline /must/ have been created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-colorAttachmentCount-06185#
---     If the bound pipeline was created with a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.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_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     used to create the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-pDepthAttachment-06186# If
---     the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the bound pipeline was created with a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     structure, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
---     @depthStencilAttachmentSamples@ member of
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     used to create the bound graphics pipeline /must/ be equal to the
---     sample count used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-pStencilAttachment-06187# If
---     the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the bound pipeline was created with a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     structure, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
---     @depthStencilAttachmentSamples@ member of
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     used to create the bound graphics pipeline /must/ be equal to the
---     sample count used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-multisampledRenderToSingleSampled-07285#
---     If the bound pipeline was created without a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     structure, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---     feature is not enabled, 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 @rasterizationSamples@ for
---     the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-multisampledRenderToSingleSampled-07286#
---     If the bound pipeline was created without a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     structure, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     @rasterizationSamples@ for the bound graphics pipeline /must/ be
---     equal to the sample count used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-multisampledRenderToSingleSampled-07287#
---     If the bound pipeline was created without a
---     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
---     structure, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---     feature is not enabled, and
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     @rasterizationSamples@ for the bound graphics pipeline /must/ be
---     equal to the sample count used to create
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-pNext-07935# If this command
---     has been called inside a render pass instance started with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     and the @pNext@ chain of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'
---     includes a
---     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'
---     structure with @multisampledRenderToSingleSampledEnable@ equal to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the value of
---     @rasterizationSamples@ for the bound graphics pipeline /must/ be
---     equal to
---     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'::@rasterizationSamples@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-renderPass-06198# If the
---     current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     the bound pipeline /must/ have been created with a
---     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@renderPass@
---     equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-pColorAttachments-08963# If
---     the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is a graphics pipeline bound with a fragment shader that
---     statically writes to a color attachment, the color write mask is not
---     zero, color writes are enabled, and the corresponding element of the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
---     corresponding element of
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
---     used to create the pipeline /must/ not be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-pDepthAttachment-08964# If
---     the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is a graphics pipeline bound, depth test is enabled, depth
---     write is enabled, and the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
---     used to create the pipeline /must/ not be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-pStencilAttachment-08965# If
---     the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     there is a graphics pipeline bound, stencil test is enabled and the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
---     used to create the pipeline /must/ not be
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-primitivesGeneratedQueryWithRasterizerDiscard-06708#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithRasterizerDiscard primitivesGeneratedQueryWithRasterizerDiscard>
---     feature is not enabled and the
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
---     query is active,
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-discard rasterization discard>
---     /must/ not be enabled
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-primitivesGeneratedQueryWithNonZeroStreams-06709#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>
---     feature is not enabled and the
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
---     query is active, the bound graphics pipeline /must/ not have been
---     created with a non-zero value in
---     'Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT'::@rasterizationStream@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07619# If a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetTessellationDomainOriginEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07620# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClamp depthClamp>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClampEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07621# If a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_POLYGON_MODE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07622# If a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07623# If a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-alphaToCoverageEnable-08919#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT'
---     dynamic state enabled, and @alphaToCoverageEnable@ was
---     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-fragmentoutput Fragment Output Interface>
---     /must/ contain a variable for the alpha @Component@ word in
---     @Location@ 0 at @Index@ 0
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-alphaToCoverageEnable-08920#
---     If a shader object is bound to any graphics stage, and the most
---     recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT'
---     in the current command buffer set @alphaToCoverageEnable@ to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-fragmentoutput Fragment Output Interface>
---     /must/ contain a variable for the alpha @Component@ word in
---     @Location@ 0 at @Index@ 0
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07624# If a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07625# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-alphaToOne alphaToOne>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToOneEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07626# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-logicOp logicOp>
---     feature is enabled, a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLogicOpEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07627# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08657# If a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and both the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE' and there are color
---     attachments bound, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07628# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08658# If a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     for any attachment set that attachment’s value in
---     @pColorBlendEnables@ to 'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07629# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08659# If a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and both the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE' and there are color
---     attachments bound, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07630# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryStreams geometryStreams>
---     feature is enabled, and a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_STREAM_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationStreamEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07631# If the
---     @VK_EXT_conservative_rasterization@ extension is enabled, a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetConservativeRasterizationModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07632# If the
---     @VK_EXT_conservative_rasterization@ extension is enabled, a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @conservativeRasterizationMode@ is
---     'Vulkan.Extensions.VK_EXT_conservative_rasterization.CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT',
---     then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetExtraPrimitiveOverestimationSizeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07633# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClipEnable depthClipEnable>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT'
---     dynamic state, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07635# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-rasterizerDiscardEnable-09416#
---     If the @VK_EXT_blend_operation_advanced@ extension is enabled, and a
---     shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then at least one of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     and
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07636# If the
---     @VK_EXT_provoking_vertex@ extension is enabled, a shader object is
---     bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetProvokingVertexModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07637# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08666# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object is bound to any graphics
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
---     in the current command buffer set @polygonMode@ to
---     'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_LINE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08667# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
---     in the current command buffer set @primitiveTopology@ to any line
---     topology, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08668# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object that outputs line
---     primitives is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07638# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08669# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object is bound to any graphics
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
---     in the current command buffer set @polygonMode@ to
---     'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_LINE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08670# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
---     in the current command buffer set @primitiveTopology@ to any line
---     topology, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08671# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled, and a shader object that outputs line
---     primitives is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07849# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     features are enabled and a shader object is bound to any graphics
---     stage, or a bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_KHR'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @stippledLineEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then
---     'Vulkan.Extensions.VK_KHR_line_rasterization.cmdSetLineStippleKHR'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07639# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClipControl depthClipControl>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipNegativeOneToOneEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09650# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClampControl depthClampControl>
---     feature is enabled, and a shader object is bound to any graphics
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @depthClampEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_depth_clamp_control.cmdSetDepthClampRangeEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07640# If the
---     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportWScalingEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07641# If the
---     @VK_NV_viewport_swizzle@ extension is enabled, and a shader object
---     is bound to any graphics stage or a graphics pipeline is bound which
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07642# If the
---     @VK_NV_fragment_coverage_to_color@ extension is enabled, a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07643# If the
---     @VK_NV_fragment_coverage_to_color@ extension is enabled, a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @coverageToColorEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07644# If the
---     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationModeNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07645# If the
---     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @coverageModulationMode@ is any value other than
---     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.COVERAGE_MODULATION_MODE_NONE_NV',
---     then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07646# If the
---     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
---     object is bound to any graphics stage or a graphics pipeline is
---     bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV'
---     dynamic state enabled, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @coverageModulationTableEnable@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07647# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetShadingRateImageEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-pipelineFragmentShadingRate-09238#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate>
---     feature is enabled, a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07648# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-representativeFragmentTest representativeFragmentTest>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRepresentativeFragmentTestEnableNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07649# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-coverageReductionMode coverageReductionMode>
---     feature is enabled, a shader object is bound to any graphics stage
---     or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageReductionModeNV'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-pColorBlendEnables-07470# If
---     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---     state enabled and the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     set @pColorBlendEnables@ for any attachment to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then for those attachments in
---     the subpass 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>
---     /must/ contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-rasterizationSamples-07471#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the current subpass does not use any color
---     and\/or depth\/stencil attachments, then the @rasterizationSamples@
---     in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ follow the rules for a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-noattachments zero-attachment subpass>
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-samples-07472# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
---     state enabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state disabled, then the @samples@ parameter in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
---     /must/ be greater or equal to the
---     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
---     parameter used to create the bound graphics pipeline
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-samples-07473# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
---     state and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     states enabled, then the @samples@ parameter in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
---     /must/ be greater or equal to the @rasterizationSamples@ parameter
---     in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-rasterizationSamples-07474#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
---     feature is not enabled, and neither the
---     @VK_AMD_mixed_attachment_samples@ nor the
---     @VK_NV_framebuffer_mixed_samples@ extensions are enabled, then the
---     @rasterizationSamples@ in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ be the same as the current subpass color and\/or
---     depth\/stencil attachments
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09211# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, or a shader object is bound to any graphics stage,
---     and the current render pass instance includes a
---     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'
---     structure with @multisampledRenderToSingleSampledEnable@ equal to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the
---     @rasterizationSamples@ in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     /must/ be the same as the @rasterizationSamples@ member of that
---     structure
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-firstAttachment-07476# If
---     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     calls /must/ specify an enable for all active color attachments in
---     the current subpass
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-rasterizerDiscardEnable-09417#
---     If a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     calls /must/ specify an enable for all active color attachments in
---     the current subpass
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-firstAttachment-07477# If
---     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     calls /must/ specify the blend equations for all active color
---     attachments in the current subpass where blending is enabled
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-rasterizerDiscardEnable-09418#
---     If a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and both the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE' and there are color
---     attachments bound, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
---     calls /must/ specify the blend equations for all active color
---     attachments in the current subpass where blending is enabled
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-firstAttachment-07478# If
---     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     calls /must/ specify the color write mask for all active color
---     attachments in the current subpass
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-rasterizerDiscardEnable-09419#
---     If a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     calls /must/ specify the color write mask for all active color
---     attachments in the current subpass
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-firstAttachment-07479# If
---     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the attachments specified by the
---     @firstAttachment@ and @attachmentCount@ parameters of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
---     calls /must/ specify the advanced blend equations for all active
---     color attachments in the current subpass where blending is enabled
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-advancedBlendMaxColorAttachments-07480#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
---     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
---     dynamic states enabled and the last calls to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
---     and
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
---     have enabled advanced blending, then the number of active color
---     attachments in the current subpass /must/ not exceed
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-advancedBlendMaxColorAttachments advancedBlendMaxColorAttachments>
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-primitivesGeneratedQueryWithNonZeroStreams-07481#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>
---     feature is not enabled and the
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
---     query is active, and the bound graphics pipeline was created with
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_STREAM_EXT'
---     state enabled, the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationStreamEXT'
---     /must/ have set the @rasterizationStream@ to zero
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-sampleLocationsPerPixel-07482#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state enabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state disabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then the @sampleLocationsPerPixel@ member of @pSampleLocationsInfo@
---     in the last call to
---     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
---     /must/ equal the @rasterizationSamples@ member of the
---     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'
---     structure the bound graphics pipeline has been created with
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-sampleLocationsPerPixel-07483#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state enabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then the @sampleLocationsPerPixel@ member of @pSampleLocationsInfo@
---     in the last call to
---     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
---     /must/ equal the @rasterizationSamples@ parameter of the last call
---     to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-sampleLocationsEnable-07484#
---     If a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, or the bound graphics pipeline was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     state enabled, and @sampleLocationsEnable@ was
---     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
---     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-vkCmdDrawMeshTasksIndirectCountNV-sampleLocationsEnable-07485#
---     If a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state enabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     state enabled, and if @sampleLocationsEnable@ was
---     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
---     then the @sampleLocationsInfo.sampleLocationGridSize.width@ in the
---     last call to
---     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
---     /must/ evenly divide
---     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@sampleLocationGridSize.width@
---     as returned by
---     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
---     with a @samples@ parameter equaling @rasterizationSamples@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-sampleLocationsEnable-07486#
---     If a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state enabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     state enabled, and if @sampleLocationsEnable@ was
---     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
---     then the @sampleLocationsInfo.sampleLocationGridSize.height@ in the
---     last call to
---     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
---     /must/ evenly divide
---     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@sampleLocationGridSize.height@
---     as returned by
---     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
---     with a @samples@ parameter equaling @rasterizationSamples@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-sampleLocationsEnable-07487#
---     If a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, or the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
---     state enabled, and if @sampleLocationsEnable@ was
---     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
---     the fragment shader code /must/ not statically use the extended
---     instruction @InterpolateAtSample@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-sampleLocationsEnable-07936#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state disabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then @sampleLocationsInfo.sampleLocationGridSize.width@ /must/
---     evenly divide
---     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@sampleLocationGridSize.width@
---     as returned by
---     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
---     with a @samples@ parameter equaling the value of
---     @rasterizationSamples@ in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-sampleLocationsEnable-07937#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state disabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then @sampleLocationsInfo.sampleLocationGridSize.height@ /must/
---     evenly divide
---     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@sampleLocationGridSize.height@
---     as returned by
---     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
---     with a @samples@ parameter equaling the value of
---     @rasterizationSamples@ in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-sampleLocationsEnable-07938#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     state disabled and the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
---     then @sampleLocationsInfo.sampleLocationsPerPixel@ /must/ equal
---     @rasterizationSamples@ in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-coverageModulationTableEnable-07488#
---     If a shader object is bound to any graphics stage or the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV'
---     state enabled, and the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV'
---     set @coverageModulationTableEnable@ to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the
---     @coverageModulationTableCount@ parameter in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableNV'
---     /must/ equal the current @rasterizationSamples@ divided by the
---     number of color samples in the current subpass
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-rasterizationSamples-07489#
---     If the @VK_NV_framebuffer_mixed_samples@ extension is enabled, and
---     if current subpass has a depth\/stencil attachment and depth test,
---     stencil test, or depth bounds test are enabled in the bound
---     pipeline, then the current @rasterizationSamples@ /must/ be the same
---     as the sample count of the depth\/stencil attachment
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-coverageToColorEnable-07490#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
---     state enabled and the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
---     set the @coverageToColorEnable@ to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the current subpass
---     /must/ have a color attachment at the location selected by the last
---     call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
---     @coverageToColorLocation@, with a
---     'Vulkan.Core10.Enums.Format.Format' of
---     'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R8_SINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R16_UINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R16_SINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R32_UINT', or
---     'Vulkan.Core10.Enums.Format.FORMAT_R32_SINT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-rasterizerDiscardEnable-09420#
---     If the @VK_NV_fragment_coverage_to_color@ extension is enabled, and
---     a shader object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage, and the most recent call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
---     in the current command buffer set @rasterizerDiscardEnable@ to
---     'Vulkan.Core10.FundamentalTypes.FALSE', and the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
---     set the @coverageToColorEnable@ to
---     'Vulkan.Core10.FundamentalTypes.TRUE', then the current subpass
---     /must/ have a color attachment at the location selected by the last
---     call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
---     @coverageToColorLocation@, with a
---     'Vulkan.Core10.Enums.Format.Format' of
---     'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R8_SINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R16_UINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R16_SINT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R32_UINT', or
---     'Vulkan.Core10.Enums.Format.FORMAT_R32_SINT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-coverageReductionMode-07491#
---     If this @VK_NV_coverage_reduction_mode@ extension is enabled, the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
---     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
---     states enabled, the current coverage reduction mode
---     @coverageReductionMode@, then the current @rasterizationSamples@,
---     and the sample counts for the color and depth\/stencil attachments
---     (if the subpass has them) /must/ be a valid combination returned by
---     'Vulkan.Extensions.VK_NV_coverage_reduction_mode.getPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-07492# 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_SWIZZLE_NV'
---     dynamic state enabled, 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-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-07493# 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_SWIZZLE_NV'
---     dynamic states enabled then the @viewportCount@ parameter in the
---     last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
---     /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-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-09421# If the
---     @VK_NV_viewport_swizzle@ extension is enabled, and a shader object
---     is bound to any graphics stage, then the @viewportCount@ parameter
---     in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
---     /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-vkCmdDrawMeshTasksIndirectCountNV-rasterizationSamples-07494#
---     If the @VK_NV_framebuffer_mixed_samples@ extension is enabled, and
---     if the current subpass has any color attachments and
---     @rasterizationSamples@ of the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
---     is greater than the number of color samples, then the pipeline
---     @sampleShadingEnable@ /must/ be
---     'Vulkan.Core10.FundamentalTypes.FALSE'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-stippledLineEnable-07495# If
---     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---     or
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---     dynamic states enabled, and if the current @stippledLineEnable@
---     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
---     @lineRasterizationMode@ state is
---     'Vulkan.Extensions.VK_KHR_line_rasterization.LINE_RASTERIZATION_MODE_RECTANGULAR_KHR',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>
---     feature /must/ be enabled
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-stippledLineEnable-07496# If
---     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---     or
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---     dynamic states enabled, and if the current @stippledLineEnable@
---     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
---     @lineRasterizationMode@ state is
---     'Vulkan.Extensions.VK_KHR_line_rasterization.LINE_RASTERIZATION_MODE_BRESENHAM_KHR',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
---     feature /must/ be enabled
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-stippledLineEnable-07497# If
---     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---     or
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---     dynamic states enabled, and if the current @stippledLineEnable@
---     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
---     @lineRasterizationMode@ state is
---     'Vulkan.Extensions.VK_KHR_line_rasterization.LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
---     feature /must/ be enabled
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-stippledLineEnable-07498# If
---     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
---     or
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
---     dynamic states enabled, and if the current @stippledLineEnable@
---     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
---     @lineRasterizationMode@ state is
---     'Vulkan.Extensions.VK_KHR_line_rasterization.LINE_RASTERIZATION_MODE_DEFAULT_KHR',
---     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>
---     feature /must/ be enabled and
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@strictLines@
---     /must/ be 'Vulkan.Core10.FundamentalTypes.TRUE'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-conservativePointAndLineRasterization-07499#
---     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT'
---     dynamic state enabled,
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-conservativePointAndLineRasterization conservativePointAndLineRasterization>
---     is not supported, and the effective primitive topology output by the
---     last pre-rasterization shader stage is a line or point, then the
---     @conservativeRasterizationMode@ set by the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetConservativeRasterizationModeEXT'
---     /must/ be
---     'Vulkan.Extensions.VK_EXT_conservative_rasterization.CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-stage-07073# If the bound
---     pipeline was 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_VERTEX_BIT',
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT',
---     then
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-mesh-shader Mesh Shader Queries>
---     /must/ not be active
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08877# If a shader
---     object is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---     stage or a graphics pipeline is bound which was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
---     dynamic state enabled, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
---     of @rasterizerDiscardEnable@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', then
---     'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
---     /must/ have been called and not subsequently
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
---     in the current command buffer prior to this drawing command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07850# If dynamic state
---     was inherited from
---     'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV',
---     it /must/ be set in the current command buffer prior to this drawing
---     command
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08684# If there is no
---     bound graphics pipeline,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08685# If there is no
---     bound graphics pipeline, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellationShader>
---     feature is enabled,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08686# If there is no
---     bound graphics pipeline, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellationShader>
---     feature is enabled,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08687# If there is no
---     bound graphics pipeline, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometryShader>
---     feature is enabled,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08688# If there is no
---     bound graphics pipeline,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08689# If there is no
---     bound graphics pipeline, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
---     feature is enabled,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08690# If there is no
---     bound graphics pipeline, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
---     feature is enabled,
---     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
---     have been called in the current command buffer with @pStages@ with
---     an element of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08693# If there is no
---     bound graphics pipeline, and at least one of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
---     and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
---     features is enabled, one of the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---     stages /must/ have a valid 'Vulkan.Extensions.Handles.ShaderEXT'
---     bound, and the other /must/ have no
---     'Vulkan.Extensions.Handles.ShaderEXT' bound
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08694# If there is no
---     bound graphics pipeline, and both the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
---     and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
---     features are enabled, and a valid
---     'Vulkan.Extensions.Handles.ShaderEXT' is bound the to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---     stage, and that 'Vulkan.Extensions.Handles.ShaderEXT' was created
---     without the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
---     flag, a valid 'Vulkan.Extensions.Handles.ShaderEXT' /must/ be bound
---     to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---     stage
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08695# If there is no
---     bound graphics pipeline, and both the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
---     and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
---     features are enabled, and a valid
---     'Vulkan.Extensions.Handles.ShaderEXT' is bound the to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---     stage, and that 'Vulkan.Extensions.Handles.ShaderEXT' was created
---     with the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
---     flag, there /must/ be no 'Vulkan.Extensions.Handles.ShaderEXT' bound
---     to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---     stage
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08696# If there is no
---     bound graphics pipeline, and a valid
---     'Vulkan.Extensions.Handles.ShaderEXT' is bound to the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
---     stage, there /must/ be no 'Vulkan.Extensions.Handles.ShaderEXT'
---     bound to either the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
---     stage or the
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
---     stage
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08698# If any graphics
---     shader is bound which was created with the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
---     flag, then all shaders created with the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
---     flag in the same
---     'Vulkan.Extensions.VK_EXT_shader_object.createShadersEXT' call
---     /must/ also be bound
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08699# If any graphics
---     shader is bound which was created with the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
---     flag, any stages in between stages whose shaders which did not
---     create a shader with the
---     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
---     flag as part of the same
---     'Vulkan.Extensions.VK_EXT_shader_object.createShadersEXT' call
---     /must/ not have any 'Vulkan.Extensions.Handles.ShaderEXT' bound
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08878# All bound
---     graphics shader objects /must/ have been created with identical or
---     identically defined push constant ranges
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08879# All bound
---     graphics shader objects /must/ have been created with identical or
---     identically defined arrays of descriptor set layouts
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-colorAttachmentCount-09372#
---     If the current render pass instance was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     and a
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
---     equal to @1@, a color attachment with a resolve mode of
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID',
---     and a fragment shader is bound, it /must/ not declare the
---     @DepthReplacing@ or @StencilRefReplacingEXT@ execution modes
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-pDynamicStates-08715# If the
---     bound graphics pipeline state includes a fragment shader stage, was
---     created with
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE'
---     set in
---     'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@,
---     and the fragment shader declares the @EarlyFragmentTests@ execution
---     mode and uses @OpDepthAttachmentReadEXT@, the @depthWriteEnable@
---     parameter in the last call to
---     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthWriteEnable'
---     /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-pDynamicStates-08716# If the
---     bound graphics pipeline state includes a fragment shader stage, was
---     created with
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_WRITE_MASK'
---     set in
---     'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@,
---     and the fragment shader declares the @EarlyFragmentTests@ execution
---     mode and uses @OpStencilAttachmentReadEXT@, the @writeMask@
---     parameter in the last call to
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilWriteMask' /must/
---     be @0@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09116# If a shader
---     object is bound to any graphics stage or the bound graphics pipeline
---     was created with
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT',
---     and the format of any color attachment is
---     'Vulkan.Core10.Enums.Format.FORMAT_E5B9G9R9_UFLOAT_PACK32', the
---     corresponding element of the @pColorWriteMasks@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
---     /must/ either include all of
---     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_R_BIT',
---     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_G_BIT',
---     and
---     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_B_BIT',
---     or none of them
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-maxFragmentDualSrcAttachments-09239#
---     If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blending blending>
---     is enabled for any attachment where either the source or destination
---     blend factors for that attachment
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-dsb use the secondary color input>,
---     the maximum value of @Location@ for any output attachment
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-staticuse statically used>
---     in the @Fragment@ @Execution@ @Model@ executed by this command
---     /must/ be less than
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFragmentDualSrcAttachments maxFragmentDualSrcAttachments>
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09548# If the current
---     render pass was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     and there is no shader object bound to any graphics stage, the value
---     of each element of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingAttachmentLocationInfoKHR'::@pColorAttachmentLocations@
---     set by
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.cmdSetRenderingAttachmentLocationsKHR'
---     /must/ match the value set for the corresponding element in the
---     bound pipeline
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09549# If the current
---     render pass was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
---     and there is no shader object bound to any graphics stage, input
---     attachment index mappings in the bound pipeline /must/ match those
---     set for the current render pass instance via
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfoKHR'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09642# If the current
---     render pass was begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     with the
---     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT'
---     flag, the bound graphics pipeline /must/ have been created with
---     'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09643# If the bound
---     graphics pipeline was created with
---     'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT',
---     the current render pass /must/ have begun with
---     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
---     with the
---     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT'
---     flag
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-stage-06480# The bound
---     graphics pipeline /must/ not have been created with the
---     'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo'::@stage@
---     member of any element of
---     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@pStages@ set
---     to
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07074#
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-transform-feedback Transform Feedback Queries>
---     /must/ not be active
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07075#
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-primitives-generated Primitives Generated Queries>
---     /must/ not be active
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-pipelineStatistics-07076#
---     The @pipelineStatistics@ member used to create any active
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-pipestats Pipeline Statistics Query>
---     /must/ not contain
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT',
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT',
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT',
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT',
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT',
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT',
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT',
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT',
---     or
---     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT'
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-buffer-02708# If @buffer@ is
---     non-sparse then it /must/ be bound completely and contiguously to a
---     single 'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-buffer-02709# @buffer@
---     /must/ have been created with the
---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'
---     bit set
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-offset-02710# @offset@
---     /must/ be a multiple of @4@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-02711#
---     @commandBuffer@ /must/ not be a protected command buffer
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-02714# If
---     @countBuffer@ is non-sparse then it /must/ be bound completely and
---     contiguously to a single 'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-02715#
---     @countBuffer@ /must/ have been created with the
---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'
---     bit set
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-countBufferOffset-02716#
---     @countBufferOffset@ /must/ be a multiple of @4@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-02717# The count
---     stored in @countBuffer@ /must/ be less than or equal to
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxDrawIndirectCount@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-countBufferOffset-04129#
---     (@countBufferOffset@ + @sizeof@(uint32_t)) /must/ be less than or
---     equal to the size of @countBuffer@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-04445# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-drawIndirectCount drawIndirectCount>
---     feature is not enabled this function /must/ not be used
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-stride-02182# @stride@
---     /must/ be a multiple of @4@ and /must/ be greater than or equal to
---     @sizeof@('DrawMeshTasksIndirectCommandNV')
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-maxDrawCount-02183# If
---     @maxDrawCount@ is greater than or equal to @1@, (@stride@ ×
---     (@maxDrawCount@ - 1) + @offset@ +
---     @sizeof@('DrawMeshTasksIndirectCommandNV')) /must/ be less than or
---     equal to the size of @buffer@
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-MeshNV-07082# The current
---     pipeline bound to
---     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
---     /must/ contain a shader stage using the @MeshNV@ @Execution@ @Model@
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-buffer-parameter# @buffer@
---     /must/ be a valid 'Vulkan.Core10.Handles.Buffer' handle
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-parameter#
---     @countBuffer@ /must/ be a valid 'Vulkan.Core10.Handles.Buffer'
---     handle
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-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-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-renderpass# This command
---     /must/ only be called inside of a render pass instance
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-videocoding# This command
---     /must/ only be called outside of a video coding scope
---
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-commonparent# Each of
---     @buffer@, @commandBuffer@, and @countBuffer@ /must/ have been
---     created, allocated, or retrieved from the same
---     'Vulkan.Core10.Handles.Device'
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
--- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Inside                                                                                                                 | Outside                                                                                                                     | Graphics                                                                                                              | Action                                                                                                                                 |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_mesh_shader VK_NV_mesh_shader>,
--- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.FundamentalTypes.DeviceSize'
-cmdDrawMeshTasksIndirectCountNV :: 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)
-                                -> -- | @countBuffer@ is the buffer containing the draw count.
-                                   ("countBuffer" ::: Buffer)
-                                -> -- | @countBufferOffset@ is the byte offset into @countBuffer@ where the draw
-                                   -- count begins.
-                                   ("countBufferOffset" ::: DeviceSize)
-                                -> -- | @maxDrawCount@ specifies the maximum number of draws that will be
-                                   -- executed. The actual number of executed draw calls is the minimum of the
-                                   -- count specified in @countBuffer@ and @maxDrawCount@.
-                                   ("maxDrawCount" ::: Word32)
-                                -> -- | @stride@ is the byte stride between successive sets of draw parameters.
-                                   ("stride" ::: Word32)
-                                -> io ()
-cmdDrawMeshTasksIndirectCountNV commandBuffer
-                                  buffer
-                                  offset
-                                  countBuffer
-                                  countBufferOffset
-                                  maxDrawCount
-                                  stride = liftIO $ do
-  let vkCmdDrawMeshTasksIndirectCountNVPtr = pVkCmdDrawMeshTasksIndirectCountNV (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  unless (vkCmdDrawMeshTasksIndirectCountNVPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdDrawMeshTasksIndirectCountNV is null" Nothing Nothing
-  let vkCmdDrawMeshTasksIndirectCountNV' = mkVkCmdDrawMeshTasksIndirectCountNV vkCmdDrawMeshTasksIndirectCountNVPtr
-  traceAroundEvent "vkCmdDrawMeshTasksIndirectCountNV" (vkCmdDrawMeshTasksIndirectCountNV'
-                                                          (commandBufferHandle (commandBuffer))
-                                                          (buffer)
-                                                          (offset)
-                                                          (countBuffer)
-                                                          (countBufferOffset)
-                                                          (maxDrawCount)
-                                                          (stride))
-  pure $ ()
-
-
--- No documentation found for TopLevel "VK_SHADER_STAGE_TASK_BIT_NV"
-pattern SHADER_STAGE_TASK_BIT_NV = SHADER_STAGE_TASK_BIT_EXT
-
-
--- No documentation found for TopLevel "VK_SHADER_STAGE_MESH_BIT_NV"
-pattern SHADER_STAGE_MESH_BIT_NV = SHADER_STAGE_MESH_BIT_EXT
-
-
--- No documentation found for TopLevel "VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV"
-pattern PIPELINE_STAGE_TASK_SHADER_BIT_NV = PIPELINE_STAGE_TASK_SHADER_BIT_EXT
-
-
--- No documentation found for TopLevel "VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV"
-pattern PIPELINE_STAGE_MESH_SHADER_BIT_NV = PIPELINE_STAGE_MESH_SHADER_BIT_EXT
-
-
--- | VkPhysicalDeviceMeshShaderFeaturesNV - Structure describing mesh shading
--- features that can be supported by an implementation
---
--- = Members
---
--- This structure describes the following features:
---
--- = Description
---
--- If the 'PhysicalDeviceMeshShaderFeaturesNV' structure is included in the
--- @pNext@ chain of the
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
--- structure passed to
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
--- it is filled in to indicate whether each corresponding feature is
--- supported. 'PhysicalDeviceMeshShaderFeaturesNV' /can/ also be used in
--- the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
---
--- == Valid Usage (Implicit)
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_mesh_shader VK_NV_mesh_shader>,
--- 'Vulkan.Core10.FundamentalTypes.Bool32',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PhysicalDeviceMeshShaderFeaturesNV = PhysicalDeviceMeshShaderFeaturesNV
-  { -- | #features-taskShaderNV# @taskShader@ specifies whether task shaders are
-    -- supported. If this feature is not enabled, the
-    -- 'SHADER_STAGE_TASK_BIT_NV' and 'PIPELINE_STAGE_TASK_SHADER_BIT_NV' enum
-    -- values /must/ not be used.
-    taskShader :: Bool
-  , -- | #features-meshShaderNV# @meshShader@ specifies whether mesh shaders are
-    -- supported. If this feature is not enabled, the
-    -- 'SHADER_STAGE_MESH_BIT_NV' and 'PIPELINE_STAGE_MESH_SHADER_BIT_NV' enum
-    -- values /must/ not be used.
-    meshShader :: Bool
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PhysicalDeviceMeshShaderFeaturesNV)
-#endif
-deriving instance Show PhysicalDeviceMeshShaderFeaturesNV
-
-instance ToCStruct PhysicalDeviceMeshShaderFeaturesNV where
-  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PhysicalDeviceMeshShaderFeaturesNV{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (taskShader))
-    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (meshShader))
-    f
-  cStructSize = 24
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV)
-    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 PhysicalDeviceMeshShaderFeaturesNV where
-  peekCStruct p = do
-    taskShader <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
-    meshShader <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
-    pure $ PhysicalDeviceMeshShaderFeaturesNV
-             (bool32ToBool taskShader) (bool32ToBool meshShader)
-
-instance Storable PhysicalDeviceMeshShaderFeaturesNV where
-  sizeOf ~_ = 24
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero PhysicalDeviceMeshShaderFeaturesNV where
-  zero = PhysicalDeviceMeshShaderFeaturesNV
-           zero
-           zero
-
-
--- | VkPhysicalDeviceMeshShaderPropertiesNV - Structure describing mesh
--- shading properties
---
--- = Description
---
--- If the 'PhysicalDeviceMeshShaderPropertiesNV' structure is included in
--- the @pNext@ chain of the
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
--- structure passed to
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceProperties2',
--- it is filled in with each corresponding implementation-dependent
--- property.
---
--- == Valid Usage (Implicit)
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_mesh_shader VK_NV_mesh_shader>,
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PhysicalDeviceMeshShaderPropertiesNV = PhysicalDeviceMeshShaderPropertiesNV
-  { -- | @maxDrawMeshTasksCount@ is the maximum number of local workgroups that
-    -- /can/ be launched by a single draw mesh tasks command. See
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#drawing-mesh-shading>.
+--     -   Interacts with VK_VERSION_1_2
+--
+--     -   Interacts with VK_AMD_draw_indirect_count
+--
+--     -   Interacts with VK_EXT_device_generated_commands
+--
+--     -   Interacts with VK_KHR_draw_indirect_count
+--
+-- [__SPIR-V Dependencies__]
+--
+--     -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/NV/SPV_NV_mesh_shader.html SPV_NV_mesh_shader>
+--
+-- [__Contact__]
+--
+--     -   Christoph Kubisch
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_NV_mesh_shader] @pixeljetstream%0A*Here describe the issue or question you have about the VK_NV_mesh_shader extension* >
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2018-07-19
+--
+-- [__Interactions and External Dependencies__]
+--
+--     -   This extension provides API support for
+--         <https://github.com/KhronosGroup/GLSL/blob/main/extensions/nv/GLSL_NV_mesh_shader.txt GLSL_NV_mesh_shader>
+--
+-- [__Contributors__]
+--
+--     -   Pat Brown, NVIDIA
+--
+--     -   Jeff Bolz, NVIDIA
+--
+--     -   Daniel Koch, NVIDIA
+--
+--     -   Piers Daniell, NVIDIA
+--
+--     -   Pierre Boudier, NVIDIA
+--
+-- == Description
+--
+-- This extension provides a new mechanism allowing applications to
+-- generate collections of geometric primitives via programmable mesh
+-- shading. It is an alternative to the existing programmable primitive
+-- shading pipeline, which relied on generating input primitives by a fixed
+-- function assembler as well as fixed function vertex fetch.
+--
+-- There are new programmable shader types — the task and mesh shader — to
+-- generate these collections to be processed by fixed-function primitive
+-- assembly and rasterization logic. When task and mesh shaders are
+-- dispatched, they replace the core
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization stages>,
+-- including vertex array attribute fetching, vertex shader processing,
+-- tessellation, and geometry shader processing.
+--
+-- This extension also adds support for the following SPIR-V extension in
+-- Vulkan:
+--
+-- -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/NV/SPV_NV_mesh_shader.html SPV_NV_mesh_shader>
+--
+-- == New Commands
+--
+-- -   'cmdDrawMeshTasksIndirectNV'
+--
+-- -   'cmdDrawMeshTasksNV'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.2 Vulkan Version 1.2>
+-- or
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_draw_indirect_count VK_KHR_draw_indirect_count>
+-- or
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_draw_indirect_count VK_AMD_draw_indirect_count>
+-- is supported:
+--
+-- -   'cmdDrawMeshTasksIndirectCountNV'
+--
+-- == New Structures
+--
+-- -   'DrawMeshTasksIndirectCommandNV'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceMeshShaderFeaturesNV'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDeviceMeshShaderPropertiesNV'
+--
+-- == New Enum Constants
+--
+-- -   'NV_MESH_SHADER_EXTENSION_NAME'
+--
+-- -   'NV_MESH_SHADER_SPEC_VERSION'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits':
+--
+--     -   'PIPELINE_STAGE_MESH_SHADER_BIT_NV'
+--
+--     -   'PIPELINE_STAGE_TASK_SHADER_BIT_NV'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits':
+--
+--     -   'SHADER_STAGE_MESH_BIT_NV'
+--
+--     -   'SHADER_STAGE_TASK_BIT_NV'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_generated_commands VK_EXT_device_generated_commands>
+-- is supported:
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_EXT_device_generated_commands.IndirectCommandsTokenTypeEXT':
+--
+--     -   'Vulkan.Extensions.VK_EXT_device_generated_commands.INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_NV_EXT'
+--
+--     -   'Vulkan.Extensions.VK_EXT_device_generated_commands.INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV_EXT'
+--
+-- == New or Modified Built-In Variables
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-taskcount TaskCountNV>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-primitivecount PrimitiveCountNV>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-primitiveindices PrimitiveIndicesNV>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-clipdistancepv ClipDistancePerViewNV>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-culldistancepv CullDistancePerViewNV>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-layerpv LayerPerViewNV>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-meshviewcount MeshViewCountNV>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-meshviewindices MeshViewIndicesNV>
+--
+-- -   (modified)@Position@
+--
+-- -   (modified)@PointSize@
+--
+-- -   (modified)@ClipDistance@
+--
+-- -   (modified)@CullDistance@
+--
+-- -   (modified)@PrimitiveId@
+--
+-- -   (modified)@Layer@
+--
+-- -   (modified)@ViewportIndex@
+--
+-- -   (modified)@WorkgroupSize@
+--
+-- -   (modified)@WorkgroupId@
+--
+-- -   (modified)@LocalInvocationId@
+--
+-- -   (modified)@GlobalInvocationId@
+--
+-- -   (modified)@LocalInvocationIndex@
+--
+-- -   (modified)@DrawIndex@
+--
+-- -   (modified)@ViewportMaskNV@
+--
+-- -   (modified)@PositionPerViewNV@
+--
+-- -   (modified)@ViewportMaskPerViewNV@
+--
+-- == New SPIR-V Capability
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-MeshShadingNV MeshShadingNV>
+--
+-- == Issues
+--
+-- 1.  How to name this extension?
+--
+--     __RESOLVED__: VK_NV_mesh_shader
+--
+--     Other options considered:
+--
+--     -   VK_NV_mesh_shading
+--
+--     -   VK_NV_programmable_mesh_shading
+--
+--     -   VK_NV_primitive_group_shading
+--
+--     -   VK_NV_grouped_drawing
+--
+-- 2.  Do we need a new VkPrimitiveTopology?
+--
+--     __RESOLVED__: No. We skip the InputAssembler stage.
+--
+-- 3.  Should we allow Instancing?
+--
+--     __RESOLVED__: No. There is no fixed function input, other than the
+--     IDs. However, allow offsetting with a “first” value.
+--
+-- 4.  Should we use existing vkCmdDraw or introduce new functions?
+--
+--     __RESOLVED__: Introduce new functions.
+--
+--     New functions make it easier to separate from “programmable
+--     primitive shading” chapter, less “dual use” language about existing
+--     functions having alternative behavior. The text around the existing
+--     “draws” is heavily based around emitting vertices.
+--
+-- 5.  If new functions, how to name?
+--
+--     __RESOLVED__: CmdDrawMeshTasks*
+--
+--     Other options considered:
+--
+--     -   CmdDrawMeshed
+--
+--     -   CmdDrawTasked
+--
+--     -   CmdDrawGrouped
+--
+-- 6.  Should VK_SHADER_STAGE_ALL_GRAPHICS be updated to include the new
+--     stages?
+--
+--     __RESOLVED__: No. If an application were to be recompiled with
+--     headers that include additional shader stage bits in
+--     VK_SHADER_STAGE_ALL_GRAPHICS, then the previously valid application
+--     would no longer be valid on implementations that do not support mesh
+--     or task shaders. This means the change would not be backwards
+--     compatible. It is too bad VkShaderStageFlagBits does not have a
+--     dedicated “all supported graphics stages” bit like
+--     VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT, which would have avoided this
+--     problem.
+--
+-- == Version History
+--
+-- -   Revision 1, 2018-07-19 (Christoph Kubisch, Daniel Koch)
+--
+--     -   Internal revisions
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
+module Vulkan.Extensions.VK_NV_mesh_shader  ( cmdDrawMeshTasksNV
+                                            , cmdDrawMeshTasksIndirectNV
+                                            , cmdDrawMeshTasksIndirectCountNV
+                                            , pattern SHADER_STAGE_TASK_BIT_NV
+                                            , pattern SHADER_STAGE_MESH_BIT_NV
+                                            , pattern PIPELINE_STAGE_TASK_SHADER_BIT_NV
+                                            , pattern PIPELINE_STAGE_MESH_SHADER_BIT_NV
+                                            , PhysicalDeviceMeshShaderFeaturesNV(..)
+                                            , PhysicalDeviceMeshShaderPropertiesNV(..)
+                                            , DrawMeshTasksIndirectCommandNV(..)
+                                            , NV_MESH_SHADER_SPEC_VERSION
+                                            , pattern NV_MESH_SHADER_SPEC_VERSION
+                                            , NV_MESH_SHADER_EXTENSION_NAME
+                                            , pattern NV_MESH_SHADER_EXTENSION_NAME
+                                            , IndirectCommandsTokenTypeEXT(..)
+                                            ) where
+
+import Vulkan.CStruct.Utils (FixedArray)
+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 Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (FromCStruct(..))
+import Vulkan.CStruct (ToCStruct)
+import Vulkan.CStruct (ToCStruct(..))
+import Vulkan.Zero (Zero(..))
+import Control.Monad.IO.Class (MonadIO)
+import Data.String (IsString)
+import Data.Typeable (Typeable)
+import Foreign.Storable (Storable)
+import Foreign.Storable (Storable(peek))
+import Foreign.Storable (Storable(poke))
+import qualified Foreign.Storable (Storable(..))
+import GHC.Generics (Generic)
+import GHC.IO.Exception (IOErrorType(..))
+import GHC.IO.Exception (IOException(..))
+import Foreign.Ptr (FunPtr)
+import Foreign.Ptr (Ptr)
+import Data.Word (Word32)
+import Data.Kind (Type)
+import Vulkan.CStruct.Utils (advancePtrBytes)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.CStruct.Utils (lowerArrayPtr)
+import Vulkan.NamedType ((:::))
+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.Dynamic (DeviceCmds(pVkCmdDrawMeshTasksIndirectCountNV))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdDrawMeshTasksIndirectNV))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdDrawMeshTasksNV))
+import Vulkan.Core10.FundamentalTypes (DeviceSize)
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Core10.Enums.PipelineStageFlagBits (PipelineStageFlags)
+import Vulkan.Core10.Enums.PipelineStageFlagBits (PipelineStageFlagBits(PIPELINE_STAGE_MESH_SHADER_BIT_EXT))
+import Vulkan.Core10.Enums.PipelineStageFlagBits (PipelineStageFlags)
+import Vulkan.Core10.Enums.PipelineStageFlagBits (PipelineStageFlagBits(PIPELINE_STAGE_TASK_SHADER_BIT_EXT))
+import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)
+import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlagBits(SHADER_STAGE_MESH_BIT_EXT))
+import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)
+import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlagBits(SHADER_STAGE_TASK_BIT_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV))
+import Vulkan.Extensions.VK_EXT_device_generated_commands (IndirectCommandsTokenTypeEXT(..))
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdDrawMeshTasksNV
+  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Word32 -> IO ()
+
+-- | vkCmdDrawMeshTasksNV - Draw mesh task work items
+--
+-- = Description
+--
+-- When the command is executed, a global workgroup consisting of
+-- @taskCount@ local workgroups is assembled.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-magFilter-04553# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
+--     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR',
+--     @reductionMode@ equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
+--     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-vkCmdDrawMeshTasksNV-magFilter-09598# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
+--     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR' and
+--     @reductionMode@ equal to either
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
+--     or
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
+--     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_MINMAX_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-mipmapMode-04770# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
+--     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR',
+--     @reductionMode@ equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
+--     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-vkCmdDrawMeshTasksNV-mipmapMode-09599# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
+--     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'
+--     and @reductionMode@ equal to either
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
+--     or
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
+--     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_MINMAX_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-unnormalizedCoordinates-09635# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the image view’s @levelCount@ and @layerCount@ /must/ be 1
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-08609# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the image view’s @viewType@ /must/ be
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D' or
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-08610# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the sampler /must/ not be used with any of the SPIR-V
+--     @OpImageSample*@ or @OpImageSparseSample*@ instructions with
+--     @ImplicitLod@, @Dref@ or @Proj@ in their name
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-08611# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the sampler /must/ not be used with any of the SPIR-V
+--     @OpImageSample*@ or @OpImageSparseSample*@ instructions that
+--     includes a LOD bias or any offset values
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-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-vkCmdDrawMeshTasksNV-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-vkCmdDrawMeshTasksNV-None-07888# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'
+--     descriptor is accessed using atomic operations as a result of this
+--     command, then the storage texel buffer’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-buffer-view-format-features format features>
+--     /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-02692# If a
+--     'Vulkan.Core10.Handles.ImageView' is sampled with
+--     'Vulkan.Core10.Enums.Filter.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.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-02693# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_filter_cubic VK_EXT_filter_cubic>
+--     extension is not enabled and any 'Vulkan.Core10.Handles.ImageView'
+--     is sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as a
+--     result of this command, it /must/ not have a
+--     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' of
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE', or
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-filterCubic-02694# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with
+--     'Vulkan.Core10.Enums.Filter.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-vkCmdDrawMeshTasksNV-filterCubicMinmax-02695# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with
+--     'Vulkan.Core10.Enums.Filter.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-vkCmdDrawMeshTasksNV-cubicRangeClamp-09212# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-cubicRangeClamp cubicRangeClamp>
+--     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
+--     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
+--     a result of this command /must/ not have a
+--     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
+--     equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-reductionMode-09213# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with a
+--     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
+--     equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
+--     as a result of this command /must/ sample with
+--     'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-selectableCubicWeights-09214# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-selectableCubicWeights selectableCubicWeights>
+--     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
+--     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
+--     a result of this command /must/ have
+--     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.SamplerCubicWeightsCreateInfoQCOM'::@cubicWeights@
+--     equal to
+--     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-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-vkCmdDrawMeshTasksNV-OpTypeImage-07027# For any
+--     'Vulkan.Core10.Handles.ImageView' being written as a storage image
+--     where the image format field of the @OpTypeImage@ is @Unknown@, the
+--     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_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-OpTypeImage-07028# For any
+--     'Vulkan.Core10.Handles.ImageView' being read as a storage image
+--     where the image format field of the @OpTypeImage@ is @Unknown@, the
+--     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_STORAGE_READ_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-OpTypeImage-07029# For any
+--     'Vulkan.Core10.Handles.BufferView' being written as a storage texel
+--     buffer where the image format field of the @OpTypeImage@ is
+--     @Unknown@, the view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
+--     /must/ contain
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-OpTypeImage-07030# Any
+--     'Vulkan.Core10.Handles.BufferView' being read as a storage texel
+--     buffer where the image format field of the @OpTypeImage@ is
+--     @Unknown@ then the view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
+--     /must/ contain
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-08600# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
+--     was created with a pipeline layout and statically uses a set /n/, a
+--     descriptor set /must/ have been bound to /n/ at the same pipeline
+--     bind point, with layouts compatible for set /n/ with the layout(s)
+--     used to create the shader, as described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptors-compatibility ???>
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-08601# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
+--     was created with a pipeline layout or specified push constant ranges
+--     and statically uses a push constant value, that value /must/ have
+--     been set for the same pipeline bind point, with push constant ranges
+--     that are
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptors-compatibility compatible>
+--     with the push constant range used to create the shader
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-10068# For each array of resources
+--     that is used by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
+--     the indices used to access members of the array /must/ be less than
+--     the descriptor count for the identified binding in the descriptor
+--     sets used by this command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-08114# Descriptors in each bound
+--     descriptor set, specified via
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
+--     be valid if they are accessed as described by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
+--     by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
+--     point used by this command and the bound
+--     'Vulkan.Core10.Handles.Pipeline' was not created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-imageLayout-00344# If an image descriptor
+--     is accessed by a shader, the
+--     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' /must/ match the
+--     subresource accessible from the 'Vulkan.Core10.Handles.ImageView' 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>
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-08115# If the descriptors used by
+--     the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
+--     point were specified via
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', the
+--     bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     without
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-08116# Descriptors in bound
+--     descriptor buffers, specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     /must/ be valid if they are dynamically used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
+--     was created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-08604# Descriptors in bound
+--     descriptor buffers, specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     /must/ be valid if they are dynamically used by any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     to the pipeline bind point used by this command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-08117# If the descriptors used by
+--     the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
+--     point were specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-08119# If a descriptor is
+--     dynamically used with a 'Vulkan.Core10.Handles.Pipeline' created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     the descriptor memory /must/ be resident
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-08605# If a descriptor is
+--     dynamically used with a 'Vulkan.Extensions.Handles.ShaderEXT'
+--     created with a 'Vulkan.Core10.Handles.DescriptorSetLayout' that was
+--     created with
+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     the descriptor memory /must/ be resident
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-08606# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject>
+--     feature is not enabled, a valid pipeline /must/ be bound to the
+--     pipeline bind point used by this command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-08608# If a pipeline is bound to the
+--     pipeline bind point used by this command, there /must/ not have been
+--     any calls to dynamic state setting commands for any state specified
+--     statically in the 'Vulkan.Core10.Handles.Pipeline' object bound to
+--     the pipeline bind point used by this command, since that pipeline
+--     was bound
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-uniformBuffers-06935# If any stage of the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command accesses a uniform buffer, and that stage
+--     was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @uniformBuffers@, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /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-vkCmdDrawMeshTasksNV-None-08612# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, and any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     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-vkCmdDrawMeshTasksNV-storageBuffers-06936# If any stage of the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command accesses a storage buffer, and that stage
+--     was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @storageBuffers@, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /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-vkCmdDrawMeshTasksNV-None-08613# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, and any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     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-vkCmdDrawMeshTasksNV-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
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shaders>
+--     /must/ not be a protected resource
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-viewType-07752# If a
+--     'Vulkan.Core10.Handles.ImageView' is accessed as a result of this
+--     command, then the image view’s @viewType@ /must/ match the @Dim@
+--     operand of the @OpTypeImage@ as described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-image-dimensions ???>
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-format-07753# If a
+--     'Vulkan.Core10.Handles.ImageView' or
+--     'Vulkan.Core10.Handles.BufferView' is accessed as a result of this
+--     command, then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-numericformat numeric type>
+--     of the view’s @format@ and the @Sampled@ @Type@ operand of the
+--     @OpTypeImage@ /must/ match
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-OpImageWrite-08795# If a
+--     'Vulkan.Core10.Handles.ImageView' created with a format other than
+--     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM' 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-vkCmdDrawMeshTasksNV-OpImageWrite-08796# If a
+--     'Vulkan.Core10.Handles.ImageView' created with the format
+--     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM' is accessed using
+--     @OpImageWrite@ as a result of this command, then the @Type@ of the
+--     @Texel@ operand of that instruction /must/ have four components
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-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-vkCmdDrawMeshTasksNV-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-vkCmdDrawMeshTasksNV-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-vkCmdDrawMeshTasksNV-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-vkCmdDrawMeshTasksNV-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-vkCmdDrawMeshTasksNV-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-vkCmdDrawMeshTasksNV-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-vkCmdDrawMeshTasksNV-OpImageSampleWeightedQCOM-06971# If
+--     @OpImageSampleWeightedQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-OpImageSampleWeightedQCOM-06972# If
+--     @OpImageSampleWeightedQCOM@ uses a 'Vulkan.Core10.Handles.ImageView'
+--     as a sample weight image 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-OpImageBoxFilterQCOM-06973# If
+--     @OpImageBoxFilterQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-OpImageBlockMatchSSDQCOM-06974# If
+--     @OpImageBlockMatchSSDQCOM@ is used to read from an
+--     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
+--     or
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_SXD_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-OpImageBlockMatchSADQCOM-12420# If
+--     @OpImageBlockMatchSADQCOM@ is used to read from an
+--     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
+--     or
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_SXD_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-OpImageBlockMatchSADQCOM-06976# If
+--     @OpImageBlockMatchSADQCOM@ or OpImageBlockMatchSSDQCOM is used to
+--     read from a reference image as result of this command, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-blockMatchExtendedClampToEdge blockMatchExtendedClampToEdge>
+--     feature is not enabled or the /input/ sampler was not created with
+--     both @addressModeU@ and @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--     then the specified reference coordinates /must/ not fail
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-OpImageSampleWeightedQCOM-06977# If
+--     @OpImageSampleWeightedQCOM@, @OpImageBoxFilterQCOM@,
+--     @OpImageBlockMatchWindowSSDQCOM@, @OpImageBlockMatchWindowSADQCOM@,
+--     @OpImageBlockMatchGatherSSDQCOM@, @OpImageBlockMatchGatherSADQCOM@,
+--     @OpImageBlockMatchSSDQCOM@, or @OpImageBlockMatchSADQCOM@ uses a
+--     'Vulkan.Core10.Handles.Sampler' as a result of this command, then
+--     the sampler /must/ have been created with
+--     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-OpImageSampleWeightedQCOM-06978# If any
+--     command other than @OpImageSampleWeightedQCOM@,
+--     @OpImageBoxFilterQCOM@, @OpImageBlockMatchWindowSSDQCOM@,
+--     @OpImageBlockMatchWindowSADQCOM@, @OpImageBlockMatchGatherSSDQCOM@,
+--     @OpImageBlockMatchGatherSADQCOM@, @OpImageBlockMatchSSDQCOM@, or
+--     @OpImageBlockMatchSADQCOM@ uses a 'Vulkan.Core10.Handles.Sampler' as
+--     a result of this command, then the sampler /must/ not have been
+--     created with
+--     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-OpImageBlockMatchWindow-09215# If a
+--     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     instruction is used to read from an
+--     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-OpImageBlockMatchWindow-09216# If a
+--     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     instruction is used to read from an
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the image view’s format /must/ be a single-component format
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-OpImageBlockMatchWindow-09217# If a
+--     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     read from a reference image as result of this command, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-blockMatchExtendedClampToEdge blockMatchExtendedClampToEdge>
+--     feature is not enabled or the /input/ sampler was not created with
+--     both @addressModeU@ and @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--     then the specified reference coordinates /must/ not fail
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-OpImageBlockMatchWindow-12421# If a
+--     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     instruction uses a 'Vulkan.Core10.Handles.Sampler' as a result of
+--     this command, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-blockMatchExtendedClampToEdge blockMatchExtendedClampToEdge>
+--     is not enabled, the /input/ sampler /must/ not have been created
+--     with either @addressModeU@ or @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-addressModeU-12422# If a
+--     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     instruction uses a 'Vulkan.Core10.Handles.Sampler' as a result of
+--     this command, and the /input/ sampler was created with either
+--     @addressModeU@ or @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE',
+--     then the sampler /must/ have been created with both @addressModeU@
+--     and @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-07288# Any shader invocation
+--     executed by this command /must/
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-termination terminate>
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-09600# If a descriptor with type
+--     equal to any of
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',
+--     or
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'
+--     is accessed as a result of this command, all image subresources
+--     identified by that descriptor /must/ be in the image layout
+--     identified when the descriptor was written
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-micromap-11636# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command through an
+--     @OpRayQueryProceedKHR@ operation , the @VK_EXT_opacity_micromap@
+--     extension is not enabled, and the acceleration structure is built
+--     using geometry with a
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapKHR'
+--     structure included in its @pNext@ chain, the shader /must/ have
+--     specified a @OpacityMicromapIdKHR@ execution mode with its
+--     specialization constant operand equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-micromap-11637# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command and the
+--     acceleration structure was constructed through deserialization, all
+--     micromap arrays referenced by the acceleration structure that were
+--     not replaced by an acceleration structure update command /must/ have
+--     been deserialized using the serialized data of the corresponding
+--     micromaps used to originally build the acceleration structure prior
+--     to the execution of this command on the device
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-micromap-11638# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command and the
+--     acceleration structure is built using geometry with an @indexBuffer@
+--     containing both
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.OpacityMicromapSpecialIndexKHR'
+--     values and indices into an associated micromap array, any
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command /must/ not have been created with @flags@ that
+--     includes
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_KHR'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-micromap-11639# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command and the
+--     acceleration structure is built using geometry with an @indexBuffer@
+--     containing both
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.OpacityMicromapSpecialIndexKHR'
+--     values and indices into an associated micromap array, any
+--     'Vulkan.Extensions.Handles.ShaderEXT' that accessed the descriptor
+--     /must/ not have been created with @flags@ that includes
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-commandBuffer-10746# The
+--     'Vulkan.Core10.Handles.DeviceMemory' object allocated from a
+--     'Vulkan.Core10.DeviceInitialization.MemoryHeap' with the
+--     'Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_TILE_MEMORY_BIT_QCOM'
+--     property that is bound to a resource accessed as a result of this
+--     command /must/ be the active
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-bind-tile-memory bound tile memory object>
+--     in @commandBuffer@
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-10678# If this command is recorded
+--     inside a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-tile-shading tile shading render pass>
+--     instance, the stages corresponding to the pipeline bind point used
+--     by this command /must/ only include
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT',
+--     and\/or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-10679# If this command is recorded
+--     where
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model>
+--     is enabled, there /must/ be no access to any image while the image
+--     was be transitioned to the
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
+--     layout
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-pDescription-09900# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the
+--     underlying 'Vulkan.Extensions.Handles.TensorARM' object /must/ have
+--     been created with the
+--     'Vulkan.Extensions.VK_ARM_tensors.TENSOR_USAGE_SHADER_BIT_ARM' usage
+--     flag set
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-dimensionCount-09905# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the @Rank@
+--     of the @OpTypeTensorARM@ of the tensor resource variable /must/ be
+--     equal to the @dimensionCount@ provided via
+--     'Vulkan.Extensions.VK_ARM_tensors.TensorCreateInfoARM'::@pDescription@
+--     when creating the underlying 'Vulkan.Extensions.Handles.TensorARM'
+--     object
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-OpTypeTensorARM-09906# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the element
+--     type of the @OpTypeTensorARM@ of the tensor resource variable /must/
+--     be
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-tensor-formats compatible>
+--     with the 'Vulkan.Core10.Enums.Format.Format' of the
+--     'Vulkan.Extensions.Handles.TensorViewARM' used for the access
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-11297# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses a @OpTypeStruct@ decorated with @Block@ or
+--     @BufferBlock@ using that mapping, the calculated offset for the
+--     resource heap /must/ be a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-bufferDescriptorAlignment bufferDescriptorAlignment>
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-11298# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses an @OpTypeImage@ or @OpTypeSampledImage@ using
+--     that mapping, the calculated offset for the resource heap /must/ be
+--     a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-imageDescriptorAlignment imageDescriptorAlignment>
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-11299# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses an @OpTypeSampler@ or @OpTypeSampledImage@
+--     using that mapping, the calculated offset for the sampler heap
+--     /must/ be a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-samplerDescriptorAlignment samplerDescriptorAlignment>
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-11397# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses an @OpTypeTensorARM@ using that mapping, the
+--     calculated offset for the resource heap /must/ be a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-tensorDescriptorAlignment tensorDescriptorAlignment>
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-11300# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a
+--     multiple of 4
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-11301# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' backed by physical
+--     memory at every offset specified by each mapping
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-11302# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-11304# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a
+--     multiple of 8
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-11305# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' backed by physical
+--     memory at every offset specified by each mapping
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-11306# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address pointed to by the address in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-11308# For each
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps descriptor heap>
+--     that is statically used by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
+--     either directly or via a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>,
+--     a valid descriptor heap /must/ be bound
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-11309# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     was created as a 'Vulkan.Extensions.Handles.ShaderEXT' with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag or as part of a pipeline with the
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag, execution of this command /must/ not result in any descriptor
+--     read accessing data outside of the user range of the respective heap
+--     bound by @vkCmdBind*HeapEXT@ commands
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-11372# If any stage of the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command accesses a uniform buffer or uniform
+--     texel buffer through a descriptor in the bound resource heap, that
+--     stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @uniformBuffers@, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /must/ not access values outside
+--     of the range of the descriptor specified via
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+--     when the descriptor was written
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-11373# If any stage of the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command accesses a storage buffer or storage
+--     texel buffer through a descriptor in the bound resource heap, that
+--     stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @storageBuffers@, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /must/ not access values outside
+--     of the range of the descriptor specified by
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+--     when the descriptor was written
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-11374# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, and any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     to the pipeline bind point used by this command accesses a uniform
+--     buffer, uniform texel buffer, storage buffer, or storage texel
+--     buffer, that shader /must/ not access values outside of the range of
+--     the buffer as specified by
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+--     when the descriptor was written
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-pBindInfo-11375# If any
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     uses an embedded sampler via a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>,
+--     the value of @pBindInfo->reservedRangeSize@ set for
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.cmdBindSamplerHeapEXT'
+--     /must/ be greater than or equal to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minSamplerHeapReservedRangeWithEmbedded minSamplerHeapReservedRangeWithEmbedded>
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-11376# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     was created as a 'Vulkan.Extensions.Handles.ShaderEXT' with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag or as part of a pipeline with the
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag, and that shader statically uses a push constant value, that
+--     value /must/ have been set by
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.cmdPushDataEXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-11398# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_DATA_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_DATA_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_RESOURCE_HEAP_DATA_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the access
+--     /must/ not be
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-execution-memory-access-bounds out of bounds>
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-11437# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the buffer from
+--     which the address in push data was queried /must/ have been created
+--     with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-11438# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a uniform buffer using that mapping, the
+--     address that the uniform buffer is mapped to /must/ have been
+--     queried from a buffer created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-11441# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a uniform buffer using that mapping, the
+--     address that the uniform buffer is mapped to /must/ be aligned to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minUniformBufferOffsetAlignment minUniformBufferOffsetAlignment>
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-11439# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a storage buffer using that mapping, the
+--     address that the storage buffer is mapped to /must/ have been
+--     queried from a buffer created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_STORAGE_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-11442# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a storage buffer using that mapping, the
+--     address that the storage buffer is mapped to /must/ be aligned to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minStorageBufferOffsetAlignment minStorageBufferOffsetAlignment>
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-11485# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses an acceleration structure using that mapping,
+--     the address that the acceleration structure is mapped to /must/ be
+--     an acceleration structure address retrieved from a
+--     'Vulkan.Extensions.Handles.AccelerationStructureKHR' object via
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.getAccelerationStructureDeviceAddressKHR'
+--     or handle retrieved from a
+--     'Vulkan.Extensions.Handles.AccelerationStructureNV' object via
+--     'Vulkan.Extensions.VK_NV_ray_tracing.getAccelerationStructureHandleNV'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-index-11450# If a shader uses a sampler
+--     descriptor to sample an image as a result of this command, and that
+--     sampler descriptor uses a custom border color with an index defined
+--     by
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.SamplerCustomBorderColorIndexCreateInfoEXT',
+--     the value of
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.SamplerCustomBorderColorIndexCreateInfoEXT'::@index@
+--     /must/ have been registered before this command was recorded, and
+--     still be registered during the sampling operation, with an
+--     identically defined color
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-protectedNoFault-11455# If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, a pipeline is bound to the pipeline bind point
+--     used by this command, or a shader is bound to a shader stage used by
+--     this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     the address that the resource is mapped to /must/ have been queried
+--     from a buffer created without the
+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT'
+--     create flag set
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-protectedNoFault-11456# If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, a pipeline is bound to the pipeline bind point
+--     used by this command, or a shader is bound to a shader stage used by
+--     this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     the address of the indirect memory /must/ have been queried from a
+--     buffer created without the
+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT'
+--     create flag set
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-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.GraphicsPipeline.GraphicsPipelineCreateInfo'
+--     structure specified when creating the
+--     'Vulkan.Core10.Handles.Pipeline' bound to
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-subpass-02685# The subpass index of the
+--     current render pass /must/ be equal to the @subpass@ member of the
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'
+--     structure specified when creating the
+--     'Vulkan.Core10.Handles.Pipeline' bound to
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-OpTypeImage-07468# If any shader executed
+--     by this pipeline accesses an @OpTypeImage@ variable with a @Dim@
+--     operand of @SubpassData@, it /must/ be decorated with an
+--     @InputAttachmentIndex@ that corresponds to a valid input attachment
+--     in the current subpass
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-07469# Input attachment views
+--     accessed in a subpass /must/ be created with the same
+--     'Vulkan.Core10.Enums.Format.Format' as the corresponding subpass
+--     definition, and be created with a 'Vulkan.Core10.Handles.ImageView'
+--     that is compatible with the attachment referenced by the subpass\'
+--     @pInputAttachments@[@InputAttachmentIndex@] in the bound
+--     'Vulkan.Core10.Handles.Framebuffer' as specified by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#compatibility-inputattachment Fragment Input Attachment Compatibility>
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-pDepthInputAttachmentIndex-09595# Input
+--     attachment views accessed in a dynamic render pass with a
+--     @InputAttachmentIndex@ referenced by
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo',
+--     or no @InputAttachmentIndex@ if
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pDepthInputAttachmentIndex@
+--     or
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pStencilInputAttachmentIndex@
+--     are @NULL@, /must/ be created with a
+--     'Vulkan.Core10.Handles.ImageView' that is compatible with the
+--     corresponding color, depth, or stencil attachment in
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-pDepthInputAttachmentIndex-09596# Input
+--     attachment views accessed in a dynamic render pass via a shader
+--     object /must/ have an @InputAttachmentIndex@ if both
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pDepthInputAttachmentIndex@
+--     and
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pStencilInputAttachmentIndex@
+--     are non-@NULL@
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-InputAttachmentIndex-09597# If an input
+--     attachment view accessed in a dynamic render pass via a shader
+--     object has an @InputAttachmentIndex@, the @InputAttachmentIndex@
+--     /must/ match an index in
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-06537# Memory backing image
+--     subresources used as attachments in the current render pass /must/
+--     not be written in any way other than as an attachment by this
+--     command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-10795# If a color attachment is
+--     written by any prior command in this subpass or by the load, store,
+--     or resolve operations for this subpass, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT' on
+--     that attachment, it /must/ not be accessed in any way other than as
+--     an attachment by this command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-10796# If a depth attachment is
+--     written by any prior command in this subpass or by the load, store,
+--     or resolve operations for this subpass, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' on
+--     that attachment, it /must/ not be accessed in any way other than as
+--     an attachment by this command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-10797# If a stencil attachment is
+--     written by any prior command in this subpass or by the load, store,
+--     or resolve operations for this subpass, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
+--     on that attachment, it /must/ not be accessed in any way other than
+--     as an attachment by this command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-12338# If a color attachment is read
+--     in this command in any way other than as an attachment, or has been
+--     read by any prior command in this subpass as a non-attachment, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT' on
+--     that attachment, the color attachment /must/ not be written to by
+--     this command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-12339# If a depth attachment is read
+--     in this command in any way other than as an attachment, or has been
+--     read by any prior command in this subpass as a non-attachment, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' on
+--     that attachment, the depth attachment /must/ not be written to by
+--     this command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-12340# If a stencil attachment is
+--     read in this command in any way other than as an attachment, or has
+--     been read by any prior command in this subpass as a non-attachment,
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
+--     on that attachment, the stencil attachment /must/ not be written to
+--     by this command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-09003# If an attachment is written
+--     by any prior command in this subpass or by the load, store, or
+--     resolve operations for this subpass, it /must/ not be accessed in
+--     any way other than as an attachment, storage image, or sampled image
+--     by this command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-06886# If the current render pass
+--     instance uses a depth\/stencil attachment with a read-only layout
+--     for the depth aspect,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-depth-write depth writes>
+--     /must/ be disabled
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-06887# If the current render pass
+--     instance uses a depth\/stencil attachment with a read-only layout
+--     for the stencil aspect, both front and back @writeMask@ are not
+--     zero, and stencil test is enabled,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-stencil all stencil ops>
+--     /must/ be 'Vulkan.Core10.Enums.StencilOp.STENCIL_OP_KEEP'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-07831# If the bound graphics
+--     pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT' dynamic
+--     state enabled then
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetViewport' /must/ have
+--     been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-07832# If the bound graphics
+--     pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR' dynamic
+--     state enabled then
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetScissor' /must/ have been
+--     called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-08617# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_WIDTH' dynamic
+--     state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line topology class, then
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth' /must/ have
+--     been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-07834# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS' dynamic
+--     state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @depthBiasEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBias' or
+--     'Vulkan.Extensions.VK_EXT_depth_bias_control.cmdSetDepthBias2EXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-07835# If a shader object is bound
+--     to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_BLEND_CONSTANTS'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and an active color
+--     attachment
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @blendEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE' with a
+--     blend equations where any
+--     'Vulkan.Core10.Enums.BlendFactor.BlendFactor' member is
+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_COLOR',
+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR',
+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_ALPHA', or
+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA',
+--     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetBlendConstants'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-07836# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @depthBoundsTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBounds' /must/
+--     have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-07837# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_COMPARE_MASK'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilCompareMask'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-07838# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_WRITE_MASK'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilWriteMask'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-07839# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_REFERENCE'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of and @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilReference'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-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-vkCmdDrawMeshTasksNV-sampleLocationsEnable-02689# If the bound
+--     graphics pipeline was created with
+--     'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@
+--     set to 'Vulkan.Core10.FundamentalTypes.TRUE', then the active depth
+--     attachment /must/ have been created with the
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'
+--     bit set
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-07634# If the
+--     @VK_EXT_sample_locations@ extension is enabled, a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-06666# If the
+--     @VK_EXT_sample_locations@ extension is enabled, a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-07840# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CULL_MODE' dynamic
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetCullMode'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-07841# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRONT_FACE' dynamic
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetFrontFace'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-07843# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_TEST_ENABLE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE',
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthTestEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-07844# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @depthTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthWriteEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-07845# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_COMPARE_OP'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @depthTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthCompareOp'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-07846# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthBounds depthBounds>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthBoundsTestEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-07847# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_TEST_ENABLE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilTestEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-07848# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_OP' dynamic
+--     state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilOp'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-viewportCount-03417# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
+--     dynamic state enabled, and the state is not inherited, then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-scissorCount-03418# If a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
+--     dynamic state enabled, and the state is not inherited, then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-viewportCount-03419# If a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     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, and the state is not inherited, then 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-vkCmdDrawMeshTasksNV-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-vkCmdDrawMeshTasksNV-viewportCount-04138# If the
+--     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which 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 state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @viewportWScalingEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.cmdSetViewportWScalingNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-08636# If the
+--     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which 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 state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @viewportWScalingEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', 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-vkCmdDrawMeshTasksNV-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-vkCmdDrawMeshTasksNV-shadingRateImage-09233# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV'
+--     and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetCoarseSampleOrderNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-shadingRateImage-09234# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which 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 state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @shadingRateImageEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetViewportShadingRatePaletteNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-08637# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which 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 state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @shadingRateImageEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', 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-vkCmdDrawMeshTasksNV-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
+--     'Vulkan.Core10.GraphicsPipeline.PipelineViewportStateCreateInfo',
+--     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-vkCmdDrawMeshTasksNV-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
+--     'Vulkan.Core10.GraphicsPipeline.PipelineViewportStateCreateInfo',
+--     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-vkCmdDrawMeshTasksNV-None-07878# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-exclusiveScissor exclusiveScissor>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-07879# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-exclusiveScissor exclusiveScissor>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV'
+--     dynamic state enabled, and the most recent call to
+--     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorEnableNV'
+--     in the current command buffer set any element of
+--     @pExclusiveScissorEnables@ to 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then
+--     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-04876# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which 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 and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-04877# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-logicOp-04878# If a shader object is
+--     bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @logicOpEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetLogicOpEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-primitiveFragmentShadingRateWithMultipleViewports-04552#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
+--     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-vkCmdDrawMeshTasksNV-primitiveFragmentShadingRateWithMultipleViewports-08642#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
+--     limit is not supported, and any shader object bound to a graphics
+--     stage writes 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-vkCmdDrawMeshTasksNV-blendEnable-04727# If a shader object is
+--     bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then for each color
+--     attachment, 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 corresponding
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @blendEnable@ /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-08644# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and none of the following is
+--     enabled:
+--
+--     -   the @VK_AMD_mixed_attachment_samples@ extension
+--
+--     -   the @VK_NV_framebuffer_mixed_samples@ extension
+--
+--     -   the
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
+--         feature
+--
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizationSamples@ /must/ be the same as the current color
+--     and\/or depth\/stencil attachments
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-08876# If a shader object is bound
+--     to any graphics stage, the current render pass instance /must/ have
+--     been begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-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-vkCmdDrawMeshTasksNV-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-vkCmdDrawMeshTasksNV-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-vkCmdDrawMeshTasksNV-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-vkCmdDrawMeshTasksNV-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-vkCmdDrawMeshTasksNV-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-vkCmdDrawMeshTasksNV-viewMask-06178# If the current render
+--     pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the 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-vkCmdDrawMeshTasksNV-colorAttachmentCount-06179# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled and the current render pass instance was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the 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-vkCmdDrawMeshTasksNV-dynamicRenderingUnusedAttachments-08910#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and 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 an @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 bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-dynamicRenderingUnusedAttachments-08912#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and 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 an @imageView@ equal to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have the
+--     corresponding element of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
+--     used to create the bound pipeline equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-dynamicRenderingUnusedAttachments-08911#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled, and 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 an @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 bound graphics pipeline, or the corresponding
+--     element of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@,
+--     if it exists, /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-colorAttachmentCount-09362# If 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@
+--     equal to @1@, there is no shader object bound to any graphics stage,
+--     and a color attachment with a resolve mode of
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID',
+--     each element of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
+--     array with a @resolveImageView@ not equal to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
+--     with an image created with a
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value equal to the
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value used to create the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-09363# If there is no shader object
+--     bound to any graphics stage, the current render pass instance was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and a
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
+--     equal to @1@, and a color attachment with a resolve mode of
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID',
+--     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 an image created with a
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value equal to the
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value used to create the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-09364# If the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there is no shader object bound to any graphics stage, and the bound
+--     graphics pipeline was created with a non-zero
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value and with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
+--     /must/ have set the blend enable to
+--     'Vulkan.Core10.FundamentalTypes.FALSE' prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-09365# If the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there is no shader object bound to any graphics stage, and the bound
+--     graphics pipeline was created with a non-zero
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value and with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     /must/ have set @rasterizationSamples@ to
+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' prior
+--     to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-09366# If there is a shader object
+--     bound to any graphics stage, and the current render pass includes a
+--     color attachment that uses the
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID'
+--     resolve mode, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
+--     /must/ have set blend enable to
+--     'Vulkan.Core10.FundamentalTypes.FALSE' prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-rasterizationSamples-09367# If there is a
+--     shader object bound to any graphics stage, and the current render
+--     pass includes a color attachment that uses the
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID'
+--     resolve mode, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     /must/ have set @rasterizationSamples@ to
+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' prior
+--     to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-09368# If the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there is no shader object bound to any graphics stage, and the bound
+--     graphics pipeline was created with a non-zero
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value and with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     /must/ have set @pFragmentSize->width@ to @1@ prior to this drawing
+--     command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-09369# If the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there is no shader object bound to any graphics stage, and the bound
+--     graphics pipeline was created with a non-zero
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value and with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     /must/ have set @pFragmentSize->height@ to @1@ prior to this drawing
+--     command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-pFragmentSize-09370# If there is a shader
+--     object bound to any graphics stage, and the current render pass
+--     includes a color attachment that uses the
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID'
+--     resolve mode, then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     /must/ have set @pFragmentSize->width@ to @1@ prior to this drawing
+--     command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-pFragmentSize-09371# If there is a shader
+--     object bound to any graphics stage, and the current render pass
+--     includes a color attachment that uses the
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID'
+--     resolve mode, then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     /must/ have set @pFragmentSize->height@ to @1@ prior to this drawing
+--     command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-07749# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
+--     feature is enabled, a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-attachmentCount-07750# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
+--     feature is enabled, a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then the @attachmentCount@
+--     parameter of most recent call to
+--     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
+--     in the current command buffer /must/ be greater than or equal to the
+--     number of active color attachments
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-07751# If the
+--     @VK_EXT_discard_rectangles@ extension is enabled, a graphics
+--     pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_EXT'
+--     dynamic state enabled and the @pNext@ chain of
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo' included
+--     a
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'
+--     structure, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @discardRectangleEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command for each
+--     discard rectangle in
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'::@discardRectangleCount@
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-rasterizerDiscardEnable-09236# If the
+--     @VK_EXT_discard_rectangles@ extension is enabled, a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_EXT'
+--     dynamic state enabled and the @pNext@ chain of
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo' did not
+--     include a
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'
+--     structure, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @discardRectangleEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command for each
+--     discard rectangle in
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.PhysicalDeviceDiscardRectanglePropertiesEXT'::@maxDiscardRectangles@
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-07880# If the
+--     @VK_EXT_discard_rectangles@ extension is enabled, a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-07881# If the
+--     @VK_EXT_discard_rectangles@ extension is enabled, a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @discardRectangleEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleModeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-dynamicRenderingUnusedAttachments-08913#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
+--     used to create the bound graphics pipeline /must/ be equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-dynamicRenderingUnusedAttachments-08914#
+--     If current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->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 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->imageView@
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-dynamicRenderingUnusedAttachments-08915#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
+--     used to create the bound graphics pipeline was not equal to the
+--     'Vulkan.Core10.Enums.Format.Format' used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@,
+--     the value of the format /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-dynamicRenderingUnusedAttachments-08916#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
+--     used to create the bound graphics pipeline /must/ be equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-dynamicRenderingUnusedAttachments-08917#
+--     If current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->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 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->imageView@
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-dynamicRenderingUnusedAttachments-08918#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
+--     used to create the bound graphics pipeline was not equal to the
+--     'Vulkan.Core10.Enums.Format.Format' used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@,
+--     the value of the format /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-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_fragment_shading_rate.RenderingFragmentShadingRateAttachmentInfoKHR'::@imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the bound graphics
+--     pipeline /must/ have been created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-dynamicRenderingLocalRead-11797# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingLocalRead dynamicRenderingLocalRead>
+--     feature is enabled, the
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_LOCAL_READ_CONCURRENT_ACCESS_CONTROL_BIT_KHR'
+--     flag is specified, and an attachment is being used as a feedback
+--     loop as specified by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#rendering-attachment-input-attachment-feedback >,
+--     'Vulkan.Extensions.VK_KHR_maintenance10.RenderingAttachmentFlagsInfoKHR'::@flags@
+--     for that attachment /must/ include
+--     'Vulkan.Extensions.VK_KHR_maintenance10.RENDERING_ATTACHMENT_INPUT_ATTACHMENT_FEEDBACK_BIT_KHR'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-imageView-06184# If the current render
+--     pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and
+--     'Vulkan.Extensions.VK_EXT_fragment_density_map.RenderingFragmentDensityMapAttachmentInfoEXT'::@imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the bound graphics
+--     pipeline /must/ have been created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-layers-10831# If the current render pass
+--     instance was created with
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE'
+--     or
+--     'Vulkan.Core10.Enums.RenderPassCreateFlagBits.RENDER_PASS_CREATE_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE',
+--     and the bound graphics pipeline was created with
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE',
+--     then the current render pass instance /must/ have a @layers@ value
+--     less than or equal to
+--     'Vulkan.Extensions.VK_VALVE_fragment_density_map_layered.PipelineFragmentDensityMapLayeredCreateInfoVALVE'::@maxFragmentDensityMapLayers@
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-colorAttachmentCount-06185# If the bound
+--     pipeline was created with a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.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_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     used to create the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-pDepthAttachment-06186# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the bound pipeline was created with a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     structure, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
+--     @depthStencilAttachmentSamples@ member of
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     used to create the bound graphics pipeline /must/ be equal to the
+--     sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-pStencilAttachment-06187# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the bound pipeline was created with a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     structure, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
+--     @depthStencilAttachmentSamples@ member of
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     used to create the bound graphics pipeline /must/ be equal to the
+--     sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-multisampledRenderToSingleSampled-07285#
+--     If the bound pipeline was created without a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     structure, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
+--     feature is not enabled, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, 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 @rasterizationSamples@ for
+--     the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-multisampledRenderToSingleSampled-07286#
+--     If the bound pipeline was created without a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     structure, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
+--     feature is not enabled, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     @rasterizationSamples@ for the bound graphics pipeline /must/ be
+--     equal to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-multisampledRenderToSingleSampled-07287#
+--     If the bound pipeline was created without a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     structure, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
+--     feature is not enabled, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     @rasterizationSamples@ for the bound graphics pipeline /must/ be
+--     equal to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-pNext-07935# If this command is called
+--     inside a render pass instance started with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     and the @pNext@ chain of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'
+--     includes a
+--     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'
+--     structure with @multisampledRenderToSingleSampledEnable@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then the value of
+--     @rasterizationSamples@ for the bound graphics pipeline /must/ be
+--     equal to
+--     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'::@rasterizationSamples@
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-renderPass-06198# If the current render
+--     pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the bound pipeline /must/ have been created with a
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'::@renderPass@
+--     equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-pColorAttachments-08963# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, there is a
+--     graphics pipeline bound with a fragment shader that statically
+--     writes to a color attachment, the color write mask is not zero,
+--     color writes are enabled, and the corresponding element of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     corresponding element of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-pColorAttachments-11539# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, there is a graphics
+--     pipeline bound with a fragment shader that statically writes to a
+--     color attachment, the color write mask is not zero, color writes are
+--     enabled, and the corresponding element of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     corresponding element of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-pDepthAttachment-08964# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, there is a
+--     graphics pipeline bound, depth test is enabled, and the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-pDepthAttachment-11540# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, there is a graphics
+--     pipeline bound, depth test is enabled, and the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-pStencilAttachment-08965# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, there is a
+--     graphics pipeline bound, stencil test is enabled and the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-pStencilAttachment-11860# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, there is a graphics
+--     pipeline bound, stencil test is enabled and the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-flags-10582# If the current render pass
+--     instance was begun with a
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     call in @commandBuffer@, its
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@flags@
+--     parameter /must/ not have
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT'
+--     set unless
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_CONTENTS_INLINE_BIT_KHR'
+--     is also set
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-primitivesGeneratedQueryWithRasterizerDiscard-06708#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithRasterizerDiscard primitivesGeneratedQueryWithRasterizerDiscard>
+--     feature is not enabled and the
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
+--     query is active,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-discard rasterization discard>
+--     /must/ not be enabled
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-primitivesGeneratedQueryWithNonZeroStreams-06709#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>
+--     feature is not enabled and the
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
+--     query is active, the bound graphics pipeline /must/ not have been
+--     created with a non-zero value in
+--     'Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT'::@rasterizationStream@
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-07620# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClamp depthClamp>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClampEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-07621# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_POLYGON_MODE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-07622# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-07623# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-alphaToCoverageEnable-08919# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT'
+--     dynamic state enabled, and @alphaToCoverageEnable@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-fragmentoutput Fragment Output Interface>
+--     /must/ contain a variable for the alpha @Component@ word in
+--     @Location@ 0 at @Index@ 0
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-alphaToCoverageEnable-08920# If a shader
+--     object is bound to any graphics stage, and the most recent call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT'
+--     in the current command buffer set @alphaToCoverageEnable@ to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-fragmentoutput Fragment Output Interface>
+--     /must/ contain a variable for the alpha @Component@ word in
+--     @Location@ 0 at @Index@ 0
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-07624# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-07625# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-alphaToOne alphaToOne>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToOneEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-07626# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-logicOp logicOp>
+--     feature is enabled, a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLogicOpEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-07627# If a shader object is bound
+--     to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and there are color
+--     attachments bound, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-07629# If a shader object is bound
+--     to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and there are color
+--     attachments bound, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-07630# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryStreams geometryStreams>
+--     feature is enabled, and a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
+--     stage or a graphics pipeline is bound which was created with both a
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
+--     stage and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_STREAM_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationStreamEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-07631# If the
+--     @VK_EXT_conservative_rasterization@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetConservativeRasterizationModeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-07632# If the
+--     @VK_EXT_conservative_rasterization@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @conservativeRasterizationMode@ is
+--     'Vulkan.Extensions.VK_EXT_conservative_rasterization.CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT',
+--     then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetExtraPrimitiveOverestimationSizeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-conservativePointAndLineRasterization-07499#
+--     If the @VK_EXT_conservative_rasterization@ extension is enabled,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-conservativePointAndLineRasterization conservativePointAndLineRasterization>
+--     is not supported, a shader object is bound to any graphics stage or
+--     a graphics pipeline is bound, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line or point topology class, then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @conservativeRasterizationMode@ /must/ be
+--     'Vulkan.Extensions.VK_EXT_conservative_rasterization.CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-07633# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClipEnable depthClipEnable>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT'
+--     dynamic state, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-07636# If the
+--     @VK_EXT_provoking_vertex@ extension is enabled, a shader object is
+--     bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetProvokingVertexModeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-08666# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
+--     features are enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line topology class, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-08669# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
+--     features are enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line topology class, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-07849# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
+--     features are enabled and a shader object is bound to any graphics
+--     stage, or a bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @stippledLineEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then
+--     'Vulkan.Core14.Promoted_From_VK_KHR_line_rasterization.cmdSetLineStipple'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-10608# If a shader object is bound
+--     to any graphics stage or a graphics pipeline is bound which was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line topology class, and the current @lineRasterizationMode@
+--     is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_BRESENHAM'
+--     or
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH',
+--     then the current @alphaToCoverageEnable@, @alphaToOneEnable@ and
+--     @sampleShadingEnable@ states /must/ all be
+--     'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-07639# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClipControl depthClipControl>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipNegativeOneToOneEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-09650# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClampControl depthClampControl>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @depthClampEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_depth_clamp_control.cmdSetDepthClampRangeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-07640# If the
+--     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportWScalingEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-07641# If the
+--     @VK_NV_viewport_swizzle@ extension is enabled, and a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-07642# If the
+--     @VK_NV_fragment_coverage_to_color@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-07643# If the
+--     @VK_NV_fragment_coverage_to_color@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @coverageToColorEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-07644# If the
+--     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationModeNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-07645# If the
+--     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @coverageModulationMode@ is any value other than
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.COVERAGE_MODULATION_MODE_NONE_NV',
+--     then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-07646# If the
+--     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @coverageModulationTableEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-07647# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetShadingRateImageEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-pipelineFragmentShadingRate-09238# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-07648# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-representativeFragmentTest representativeFragmentTest>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRepresentativeFragmentTestEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-07649# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-coverageReductionMode coverageReductionMode>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageReductionModeNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-rasterizationSamples-07471# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, and the current subpass does not use any color
+--     and\/or depth\/stencil attachments, then the @rasterizationSamples@
+--     in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     /must/ follow the rules for a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-noattachments zero-attachment subpass>
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-samples-07472# If the bound graphics
+--     pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
+--     state enabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state disabled, then the @samples@ parameter in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
+--     /must/ be greater or equal to the
+--     'Vulkan.Core10.GraphicsPipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
+--     parameter used to create the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-samples-07473# If the bound graphics
+--     pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
+--     state and
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     states enabled, then the @samples@ parameter in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
+--     /must/ be greater or equal to the @rasterizationSamples@ parameter
+--     in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-09211# If the bound graphics
+--     pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, or a shader object is bound to any graphics stage,
+--     and the current render pass instance includes a
+--     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'
+--     structure with @multisampledRenderToSingleSampledEnable@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then the
+--     @rasterizationSamples@ in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     /must/ be the same as the @rasterizationSamples@ member of that
+--     structure
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-firstAttachment-07476# If a shader object
+--     is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--     dynamic states enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
+--     in the current command buffer prior to this drawing command /must/
+--     have set a value for all active color attachments
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-firstAttachment-07478# If a shader object
+--     is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT'
+--     dynamic states enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
+--     in the current command buffer prior to this drawing command /must/
+--     have set a value for all active color attachments
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-advancedBlendMaxColorAttachments-07480#
+--     If a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
+--     and
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--     dynamic states enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and an active color
+--     attachment
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @blendEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then the
+--     number of active color attachments /must/ not exceed
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-advancedBlendMaxColorAttachments advancedBlendMaxColorAttachments>
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-10862# If a graphics pipeline is
+--     bound was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
+--     , but not the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command for all
+--     active color attachments with the @blendEnable@
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-rasterizerDiscardEnable-10863# If a
+--     graphics pipeline is bound was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT',
+--     but not the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command for all
+--     active color attachments with the @blendEnable@
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-10864# If a shader object is bound
+--     to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
+--     and
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then either
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command for all
+--     active color attachments with the @blendEnable@
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-primitivesGeneratedQueryWithNonZeroStreams-07481#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>
+--     feature is not enabled and the
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
+--     query is active, and the bound graphics pipeline was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_STREAM_EXT'
+--     state enabled, the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationStreamEXT'
+--     /must/ have set the @rasterizationStream@ to zero
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-sampleLocationsPerPixel-07482# If the
+--     bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state enabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state disabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then the @sampleLocationsPerPixel@ member of @pSampleLocationsInfo@
+--     in the last call to
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     /must/ equal the @rasterizationSamples@ member of the
+--     'Vulkan.Core10.GraphicsPipeline.PipelineMultisampleStateCreateInfo'
+--     structure the bound graphics pipeline has been created with
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-sampleLocationsPerPixel-07483# If the
+--     bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state enabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then the @sampleLocationsPerPixel@ member of @pSampleLocationsInfo@
+--     in the last call to
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     /must/ equal the @rasterizationSamples@ parameter of the last call
+--     to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-sampleLocationsEnable-07484# If a shader
+--     object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage, or the bound graphics pipeline was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     state enabled, and @sampleLocationsEnable@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT'
+--     then the current active depth attachment /must/ have been created
+--     with the
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'
+--     bit set
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-sampleLocationsEnable-07485# If a shader
+--     object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage, or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state enabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     state enabled, and if @sampleLocationsEnable@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
+--     then the @sampleLocationsInfo.maxSampleLocationGridSize.width@ in
+--     the last call to
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     /must/ evenly divide
+--     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.width@
+--     as returned by
+--     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
+--     with a @samples@ parameter equaling @rasterizationSamples@
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-sampleLocationsEnable-07486# If a shader
+--     object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage, or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state enabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     state enabled, and if @sampleLocationsEnable@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
+--     then the @sampleLocationsInfo.maxSampleLocationGridSize.height@ in
+--     the last call to
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     /must/ evenly divide
+--     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.height@
+--     as returned by
+--     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
+--     with a @samples@ parameter equaling @rasterizationSamples@
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-sampleLocationsEnable-07487# If a shader
+--     object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage, or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     state enabled, and if @sampleLocationsEnable@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
+--     the fragment shader code /must/ not statically use the extended
+--     instruction @InterpolateAtSample@
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-sampleLocationsEnable-07936# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state disabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then @sampleLocationsInfo.sampleLocationGridSize.width@ /must/
+--     evenly divide
+--     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.width@
+--     as returned by
+--     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
+--     with a @samples@ parameter equaling the value of
+--     @rasterizationSamples@ in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-sampleLocationsEnable-07937# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state disabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then @sampleLocationsInfo.sampleLocationGridSize.height@ /must/
+--     evenly divide
+--     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.height@
+--     as returned by
+--     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
+--     with a @samples@ parameter equaling the value of
+--     @rasterizationSamples@ in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-sampleLocationsEnable-07938# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state disabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then @sampleLocationsInfo.sampleLocationsPerPixel@ /must/ equal
+--     @rasterizationSamples@ in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-coverageModulationTableEnable-07488# If a
+--     shader object is bound to any graphics stage or the bound graphics
+--     pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV'
+--     state enabled, and the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV'
+--     set @coverageModulationTableEnable@ to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then the
+--     @coverageModulationTableCount@ parameter in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableNV'
+--     /must/ equal the current @rasterizationSamples@ divided by the
+--     number of color samples in the current active color attachment
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-rasterizationSamples-07489# If the
+--     @VK_NV_framebuffer_mixed_samples@ extension is enabled, and if
+--     current subpass has a depth\/stencil attachment and depth test,
+--     stencil test, or depth bounds test are enabled in the bound
+--     pipeline, then the current @rasterizationSamples@ /must/ be the same
+--     as the sample count of the depth\/stencil attachment
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-coverageToColorEnable-07490# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
+--     state enabled and the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
+--     set the @coverageToColorEnable@ to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then there /must/ be an
+--     active color attachment at the location selected by the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
+--     @coverageToColorLocation@, with a
+--     'Vulkan.Core10.Enums.Format.Format' of
+--     'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R8_SINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R16_UINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R16_SINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R32_UINT', or
+--     'Vulkan.Core10.Enums.Format.FORMAT_R32_SINT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-rasterizerDiscardEnable-09420# If the
+--     @VK_NV_fragment_coverage_to_color@ extension is enabled, and a
+--     shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage, and the most recent call to
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
+--     in the current command buffer set @rasterizerDiscardEnable@ to
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
+--     set the @coverageToColorEnable@ to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then there /must/ be an
+--     active color attachment at the location selected by the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
+--     @coverageToColorLocation@, with a
+--     'Vulkan.Core10.Enums.Format.Format' of
+--     'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R8_SINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R16_UINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R16_SINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R32_UINT', or
+--     'Vulkan.Core10.Enums.Format.FORMAT_R32_SINT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-coverageReductionMode-07491# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-coverageReductionMode coverageReductionMode>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV'
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     dynamic states enabled, then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current values>
+--     of @coverageReductionMode@, @rasterizationSamples@, the sample
+--     counts for the color and depth\/stencil attachments (if the subpass
+--     has them) /must/ be a valid combination returned by
+--     'Vulkan.Extensions.VK_NV_coverage_reduction_mode.getPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-viewportCount-07492# 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_SWIZZLE_NV'
+--     dynamic state enabled, 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-vkCmdDrawMeshTasksNV-viewportCount-07493# 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_SWIZZLE_NV'
+--     dynamic states enabled then the @viewportCount@ parameter in the
+--     last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
+--     /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-vkCmdDrawMeshTasksNV-viewportCount-09421# If the
+--     @VK_NV_viewport_swizzle@ extension is enabled, and a shader object
+--     is bound to any graphics stage, then the @viewportCount@ parameter
+--     in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
+--     /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-vkCmdDrawMeshTasksNV-rasterizationSamples-07494# If the
+--     @VK_NV_framebuffer_mixed_samples@ extension is enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-coverageReductionMode coverageReductionMode>
+--     feature is not enabled, or the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @coverageReductionMode@ is not
+--     'Vulkan.Extensions.VK_NV_coverage_reduction_mode.COVERAGE_REDUCTION_MODE_TRUNCATE_NV',
+--     and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizationSamples@ is greater than sample count of the color
+--     attachment, then
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-sampleshading sample shading>
+--     /must/ be disabled
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-stippledLineEnable-07495# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic states enabled, and if the current @stippledLineEnable@
+--     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
+--     @lineRasterizationMode@ state is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_RECTANGULAR',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-stippledLineEnable-07496# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic states enabled, and if the current @stippledLineEnable@
+--     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
+--     @lineRasterizationMode@ state is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_BRESENHAM',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-stippledLineEnable-07497# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic states enabled, and if the current @stippledLineEnable@
+--     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
+--     @lineRasterizationMode@ state is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-stippledLineEnable-07498# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic states enabled, and if the current @stippledLineEnable@
+--     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
+--     @lineRasterizationMode@ state is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_DEFAULT',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>
+--     feature /must/ be enabled and
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@strictLines@
+--     /must/ be 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-stage-07073# If the bound pipeline was
+--     created with the
+--     'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo'::@stage@
+--     member of an element of
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'::@pStages@
+--     set to
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT',
+--     then
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-mesh-shader Mesh Shader Queries>
+--     /must/ not be active
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-08877# If a shader object is bound
+--     to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-07850# If dynamic state was
+--     inherited from
+--     'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV',
+--     it /must/ be set in the current command buffer prior to this drawing
+--     command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-nextStage-10745# For each shader object
+--     bound to a graphics stage, except for shader object bound to the
+--     last graphics stage in the logical pipeline, it /must/ have been
+--     created with a @nextStage@ including the corresponding bit to the
+--     shader object bound to the following graphics stage in the logical
+--     pipeline
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-08684# If there is no bound graphics
+--     pipeline, 'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT'
+--     /must/ have been called in the current command buffer with @pStages@
+--     with an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-08685# If there is no bound graphics
+--     pipeline, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellationShader>
+--     feature is enabled,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-08686# If there is no bound graphics
+--     pipeline, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellationShader>
+--     feature is enabled,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-08687# If there is no bound graphics
+--     pipeline, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometryShader>
+--     feature is enabled,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-08688# If there is no bound graphics
+--     pipeline, 'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT'
+--     /must/ have been called in the current command buffer with @pStages@
+--     with an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-08689# If there is no bound graphics
+--     pipeline, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
+--     feature is enabled,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-08690# If there is no bound graphics
+--     pipeline, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
+--     feature is enabled,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-08693# If there is no bound graphics
+--     pipeline, and at least one of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
+--     features is enabled, one of the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--     stages /must/ have a valid 'Vulkan.Extensions.Handles.ShaderEXT'
+--     bound, and the other /must/ have no
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-08696# If there is no bound graphics
+--     pipeline, and a valid 'Vulkan.Extensions.Handles.ShaderEXT' is bound
+--     to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage, there /must/ be no 'Vulkan.Extensions.Handles.ShaderEXT'
+--     bound to either the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--     stage or the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--     stage
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-08698# If any graphics shader is
+--     bound which was created with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
+--     flag, then all shaders created with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
+--     flag in the same
+--     'Vulkan.Extensions.VK_EXT_shader_object.createShadersEXT' call
+--     /must/ also be bound
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-08699# If any graphics shader is
+--     bound which was created with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
+--     flag, any stages in between stages whose shaders which did not
+--     create a shader with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
+--     flag as part of the same
+--     'Vulkan.Extensions.VK_EXT_shader_object.createShadersEXT' call
+--     /must/ not have any 'Vulkan.Extensions.Handles.ShaderEXT' bound
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-08878# All bound graphics shader
+--     objects /must/ have been created with identical or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-identically-defined identically defined>
+--     push constant ranges
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-08879# All bound graphics shader
+--     objects /must/ have either been created with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag set, or with identical or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-identically-defined identically defined>
+--     arrays of descriptor set layouts
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-colorAttachmentCount-09372# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and a
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
+--     equal to @1@, a color attachment with a resolve mode of
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID',
+--     and a fragment shader is bound, it /must/ not declare the
+--     @DepthReplacing@ or @StencilRefReplacingEXT@ execution modes
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-pDynamicStates-08715# If the bound
+--     graphics pipeline state includes a fragment shader stage, was
+--     created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE'
+--     set in
+--     'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@,
+--     and the fragment shader declares the @EarlyFragmentTests@ execution
+--     mode and uses @OpDepthAttachmentReadEXT@, the @depthWriteEnable@
+--     parameter in the last call to
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthWriteEnable'
+--     /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-pDynamicStates-08716# If the bound
+--     graphics pipeline state includes a fragment shader stage, was
+--     created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_WRITE_MASK'
+--     set in
+--     'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@,
+--     and the fragment shader declares the @EarlyFragmentTests@ execution
+--     mode and uses @OpStencilAttachmentReadEXT@, the @writeMask@
+--     parameter in the last call to
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilWriteMask' /must/
+--     be @0@
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-09116# If a shader object is bound
+--     to any graphics stage or the bound graphics pipeline was created
+--     with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT',
+--     and the format of any color attachment is
+--     'Vulkan.Core10.Enums.Format.FORMAT_E5B9G9R9_UFLOAT_PACK32', the
+--     corresponding element of the @pColorWriteMasks@ parameter of
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
+--     /must/ either include all of
+--     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_R_BIT',
+--     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_G_BIT',
+--     and
+--     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_B_BIT',
+--     or none of them
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-maxFragmentDualSrcAttachments-09239# If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blending blending>
+--     is enabled for any attachment where either the source or destination
+--     blend factors for that attachment
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-dsb use the secondary color input>,
+--     the maximum value of @Location@ for any output attachment
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-staticuse statically used>
+--     in the @Fragment@ @Execution@ @Model@ executed by this command
+--     /must/ be less than
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFragmentDualSrcAttachments maxFragmentDualSrcAttachments>
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-09548# If the current render pass
+--     was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there is no shader object bound to any graphics stage, the value of
+--     each element of
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingAttachmentLocationInfo'::@pColorAttachmentLocations@
+--     in the bound pipeline /must/ match the value for the corresponding
+--     locations set currently in the current render pass instance
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-09549# If the current render pass
+--     was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     and there is no shader object bound to any graphics stage, the value
+--     of each element of
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pColorAttachmentInputIndices@
+--     in the bound pipeline /must/ match the value for the corresponding
+--     index set currently in the current render pass instance
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-10927# If the current render pass
+--     was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     and there is no shader object bound to any graphics stage, the value
+--     of
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pDepthInputAttachmentIndex@
+--     in the bound pipeline /must/ match the value set currently in the
+--     current render pass instance
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-10928# If the current render pass
+--     was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     and there is no shader object bound to any graphics stage, the value
+--     of
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pStencilInputAttachmentIndex@
+--     in the bound pipeline /must/ match the value set currently in the
+--     current render pass instance
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-09642# If the current render pass
+--     was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     with the
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT'
+--     flag, the bound graphics pipeline /must/ have been created with
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-09643# If the bound graphics
+--     pipeline was created with
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT',
+--     the current render pass /must/ have begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     with the
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT'
+--     flag
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-10677# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model>
+--     is enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tileShadingPerTileDraw tileShadingPerTileDraw>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-10772# If a shader object is bound
+--     to any graphics stage, /multiview/ functionality /must/ not be
+--     enabled in the current render pass
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-multiviewPerViewViewports-12262# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiviewPerViewViewports multiviewPerViewViewports>
+--     feature is enabled, then the index of the most significant bit in
+--     current render pass instance @viewMask@ /must/ be less than the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @viewportCount@
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-multiviewPerViewViewports-12263# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiviewPerViewViewports multiviewPerViewViewports>
+--     feature is enabled, then the index of the most significant bit in
+--     current render pass instance @viewMask@ /must/ be less than the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @scissorCount@
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-flags-11521# If current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@flags@
+--     which includes
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_FRAGMENT_REGION_BIT_EXT',
+--     and if
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-sampleshading sample shading>
+--     is enabled (explicitly or implicitly), then the minimum fraction for
+--     sample shading /must/ equal 0.0
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-11522# If the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and contains a custom resolve, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, the graphics pipeline bound /must/ have been
+--     created with a
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-11523# If the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and does not contain a custom resolve, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, the graphics pipeline bound /must/ not have
+--     been created with a
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-customResolve-11524# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, the graphics pipeline
+--     bound /must/ have been created with
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@
+--     as 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-customResolve-11525# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and contains a custom resolve, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not been recorded in the render pass instance, the graphics
+--     pipeline bound /must/ have been created with
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@
+--     as 'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-11861# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled and the current render pass instance was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and contains a custom resolve, the bound graphics pipeline /must/
+--     have been created with a
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@colorAttachmentCount@
+--     equal to
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-11862# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and the current render pass instance was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, 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 an @resolveImageView@ 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_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@
+--     used to create the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-11863# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and the current render pass instance was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, 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 an @resolveImageView@ equal to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have the
+--     corresponding element of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@
+--     used to create the bound pipeline equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-dynamicRenderingUnusedAttachments-11864#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled, the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, 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 an @resolveImageView@ 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_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@
+--     used to create the bound graphics pipeline, or the corresponding
+--     element of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@,
+--     if it exists, /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-11865# If the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@
+--     used to create the bound graphics pipeline /must/ be equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-11866# If current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@
+--     used to create the 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->resolveImageView@
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-dynamicRenderingUnusedAttachments-11867#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@
+--     used to create the bound graphics pipeline was not equal to the
+--     'Vulkan.Core10.Enums.Format.Format' used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@,
+--     the value of the format /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-11868# If the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@
+--     used to create the bound graphics pipeline /must/ be equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-11869# If current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@
+--     used to create the 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->resolveImageView@
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-dynamicRenderingUnusedAttachments-11870#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@
+--     used to create the bound graphics pipeline was not equal to the
+--     'Vulkan.Core10.Enums.Format.Format' used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@,
+--     the value of the format /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-colorAttachmentCount-11871# If 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@ and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, then for each element
+--     of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
+--     array with a @resolveImageView@ not equal to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', the @resolveImageView@
+--     /must/ have been created with a sample count equal to the value of
+--     @rasterizationSamples@ for the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-pDepthAttachment-11872# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     @rasterizationSamples@ for the bound graphics pipeline /must/ be
+--     equal to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-pStencilAttachment-11873# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     @rasterizationSamples@ for the bound graphics pipeline /must/ be
+--     equal to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-customResolve-11529# If a shader object
+--     is bound to the fragment stage, the current render pass instance was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     a fragment density map attachment is active, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been called, then the fragment shader object bound /must/ have
+--     been created with
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@
+--     as 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-customResolve-11530# If a shader object
+--     is bound to the fragment stage, the current render pass instance was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and contains a custom resolve, a fragment density map attachment is
+--     active, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been called, then the fragment shader object bound
+--     /must/ have been created with
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@
+--     as 'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-flags-13361# If there are any shader
+--     objects bound that were created with @flags@ that includes the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     bit, then all bound shader objects /must/ have been created with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     bit
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-flags-13362# If there are any shader
+--     objects bound that were created with @flags@ that includes the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     bit, then the pipeline layout of the bound descriptor sets /must/
+--     have been created with
+--     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT'
+--     set
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-flags-13363# If there are any shader
+--     objects bound that were created with @flags@ that includes the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     bit, and any of the descriptor set layouts used to create the
+--     pipeline layout of the bound descriptor sets were created with any
+--     binding’s
+--     'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutBinding'::@stageFlags@
+--     set with
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT',
+--     then there /must/ be no binding with
+--     'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutBinding'::@stageFlags@
+--     set with
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-flags-13364# If there are any shader
+--     objects bound that were created with @flags@ that includes both the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     and
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
+--     bits, the pipeline layout of the bound descriptor sets /must/ have
+--     been created with
+--     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_NO_TASK_SHADER_BIT_KHR'
+--     set
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-flags-13365# If there are any shader
+--     objects bound that were created with @flags@ that includes both the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     and
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
+--     bits, there /must/ be no shader object bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--     stage
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-stage-06480# The bound graphics pipeline
+--     /must/ not have been created with the
+--     'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo'::@stage@
+--     member of any element of
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'::@pStages@
+--     set to
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-pStages-10680# If there is no bound
+--     graphics pipeline,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     not have last bound the @pStages@ element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
+--     with a valid shader object other than
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-07074#
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-transform-feedback Transform Feedback Queries>
+--     /must/ not be active
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-07075#
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-primitives-generated Primitives Generated Queries>
+--     /must/ not be active
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-pipelineStatistics-07076# The
+--     @pipelineStatistics@ member used to create any active
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-pipestats Pipeline Statistics Query>
+--     /must/ not contain
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT',
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT',
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT',
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT',
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT',
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT',
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT',
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT',
+--     or
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-08694# If there is no bound graphics
+--     pipeline, and both the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
+--     features are enabled, and a valid
+--     'Vulkan.Extensions.Handles.ShaderEXT' is bound the to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--     stage, and that 'Vulkan.Extensions.Handles.ShaderEXT' was created
+--     without the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
+--     flag, a valid 'Vulkan.Extensions.Handles.ShaderEXT' /must/ be bound
+--     to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--     stage
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-08695# If there is no bound graphics
+--     pipeline, and both the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
+--     features are enabled, and a valid
+--     'Vulkan.Extensions.Handles.ShaderEXT' is bound the to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--     stage, and that 'Vulkan.Extensions.Handles.ShaderEXT' was created
+--     with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
+--     flag, there /must/ be no 'Vulkan.Extensions.Handles.ShaderEXT' bound
+--     to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--     stage
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-taskCount-02119# @taskCount@ /must/ be
+--     less than or equal to
+--     'PhysicalDeviceMeshShaderPropertiesNV'::@maxDrawMeshTasksCount@
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-MeshNV-07080# The current pipeline bound
+--     to
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
+--     /must/ contain a shader stage using the @MeshNV@ @Execution@ @Model@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-commandBuffer-parameter# @commandBuffer@
+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-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-vkCmdDrawMeshTasksNV-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-renderpass# This command /must/ only be
+--     called inside of a render pass instance
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-suspended# This command /must/ not be
+--     called between suspended render pass instances
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-videocoding# This command /must/ only be
+--     called outside of a video coding scope
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Inside                                                                                                                 | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdDrawMeshTasksNV is affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_mesh_shader VK_NV_mesh_shader>,
+-- 'Vulkan.Core10.Handles.CommandBuffer'
+cmdDrawMeshTasksNV :: forall io
+                    . (MonadIO io)
+                   => -- | @commandBuffer@ is the command buffer into which the command will be
+                      -- recorded.
+                      CommandBuffer
+                   -> -- | @taskCount@ is the number of local workgroups to dispatch in the X
+                      -- dimension. Y and Z dimension are implicitly set to one.
+                      ("taskCount" ::: Word32)
+                   -> -- | @firstTask@ is the X component of the first workgroup ID.
+                      ("firstTask" ::: Word32)
+                   -> io ()
+cmdDrawMeshTasksNV commandBuffer taskCount firstTask = liftIO $ do
+  let vkCmdDrawMeshTasksNVPtr = pVkCmdDrawMeshTasksNV (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  unless (vkCmdDrawMeshTasksNVPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdDrawMeshTasksNV is null" Nothing Nothing
+  let vkCmdDrawMeshTasksNV' = mkVkCmdDrawMeshTasksNV vkCmdDrawMeshTasksNVPtr
+  traceAroundEvent "vkCmdDrawMeshTasksNV" (vkCmdDrawMeshTasksNV'
+                                             (commandBufferHandle (commandBuffer))
+                                             (taskCount)
+                                             (firstTask))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdDrawMeshTasksIndirectNV
+  :: FunPtr (Ptr CommandBuffer_T -> Buffer -> DeviceSize -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> DeviceSize -> Word32 -> Word32 -> IO ()
+
+-- | vkCmdDrawMeshTasksIndirectNV - Issue an indirect mesh tasks draw into a
+-- command buffer
+--
+-- = Description
+--
+-- 'cmdDrawMeshTasksIndirectNV' behaves similarly to 'cmdDrawMeshTasksNV'
+-- 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 'DrawMeshTasksIndirectCommandNV' structures. If
+-- @drawCount@ is less than or equal to one, @stride@ is ignored.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-magFilter-04553# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
+--     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR',
+--     @reductionMode@ equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
+--     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-vkCmdDrawMeshTasksIndirectNV-magFilter-09598# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
+--     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR' and
+--     @reductionMode@ equal to either
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
+--     or
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
+--     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_MINMAX_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-mipmapMode-04770# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
+--     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR',
+--     @reductionMode@ equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
+--     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-vkCmdDrawMeshTasksIndirectNV-mipmapMode-09599# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
+--     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'
+--     and @reductionMode@ equal to either
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
+--     or
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
+--     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_MINMAX_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-unnormalizedCoordinates-09635# If
+--     a 'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the image view’s @levelCount@ and @layerCount@ /must/ be 1
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08609# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the image view’s @viewType@ /must/ be
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D' or
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08610# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the sampler /must/ not be used with any of the SPIR-V
+--     @OpImageSample*@ or @OpImageSparseSample*@ instructions with
+--     @ImplicitLod@, @Dref@ or @Proj@ in their name
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08611# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the sampler /must/ not be used with any of the SPIR-V
+--     @OpImageSample*@ or @OpImageSparseSample*@ instructions that
+--     includes a LOD bias or any offset values
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-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-vkCmdDrawMeshTasksIndirectNV-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-vkCmdDrawMeshTasksIndirectNV-None-07888# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'
+--     descriptor is accessed using atomic operations as a result of this
+--     command, then the storage texel buffer’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-buffer-view-format-features format features>
+--     /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-02692# If a
+--     'Vulkan.Core10.Handles.ImageView' is sampled with
+--     'Vulkan.Core10.Enums.Filter.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.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-02693# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_filter_cubic VK_EXT_filter_cubic>
+--     extension is not enabled and any 'Vulkan.Core10.Handles.ImageView'
+--     is sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as a
+--     result of this command, it /must/ not have a
+--     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' of
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE', or
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-filterCubic-02694# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with
+--     'Vulkan.Core10.Enums.Filter.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-vkCmdDrawMeshTasksIndirectNV-filterCubicMinmax-02695# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with
+--     'Vulkan.Core10.Enums.Filter.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-vkCmdDrawMeshTasksIndirectNV-cubicRangeClamp-09212# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-cubicRangeClamp cubicRangeClamp>
+--     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
+--     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
+--     a result of this command /must/ not have a
+--     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
+--     equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-reductionMode-09213# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with a
+--     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
+--     equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
+--     as a result of this command /must/ sample with
+--     'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-selectableCubicWeights-09214# If
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-selectableCubicWeights selectableCubicWeights>
+--     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
+--     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
+--     a result of this command /must/ have
+--     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.SamplerCubicWeightsCreateInfoQCOM'::@cubicWeights@
+--     equal to
+--     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-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-vkCmdDrawMeshTasksIndirectNV-OpTypeImage-07027# For any
+--     'Vulkan.Core10.Handles.ImageView' being written as a storage image
+--     where the image format field of the @OpTypeImage@ is @Unknown@, the
+--     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_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-OpTypeImage-07028# For any
+--     'Vulkan.Core10.Handles.ImageView' being read as a storage image
+--     where the image format field of the @OpTypeImage@ is @Unknown@, the
+--     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_STORAGE_READ_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-OpTypeImage-07029# For any
+--     'Vulkan.Core10.Handles.BufferView' being written as a storage texel
+--     buffer where the image format field of the @OpTypeImage@ is
+--     @Unknown@, the view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
+--     /must/ contain
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-OpTypeImage-07030# Any
+--     'Vulkan.Core10.Handles.BufferView' being read as a storage texel
+--     buffer where the image format field of the @OpTypeImage@ is
+--     @Unknown@ then the view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
+--     /must/ contain
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08600# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
+--     was created with a pipeline layout and statically uses a set /n/, a
+--     descriptor set /must/ have been bound to /n/ at the same pipeline
+--     bind point, with layouts compatible for set /n/ with the layout(s)
+--     used to create the shader, as described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptors-compatibility ???>
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08601# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
+--     was created with a pipeline layout or specified push constant ranges
+--     and statically uses a push constant value, that value /must/ have
+--     been set for the same pipeline bind point, with push constant ranges
+--     that are
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptors-compatibility compatible>
+--     with the push constant range used to create the shader
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-10068# For each array of
+--     resources that is used by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
+--     the indices used to access members of the array /must/ be less than
+--     the descriptor count for the identified binding in the descriptor
+--     sets used by this command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08114# Descriptors in each
+--     bound descriptor set, specified via
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
+--     be valid if they are accessed as described by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
+--     by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
+--     point used by this command and the bound
+--     'Vulkan.Core10.Handles.Pipeline' was not created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-imageLayout-00344# If an image
+--     descriptor is accessed by a shader, the
+--     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' /must/ match the
+--     subresource accessible from the 'Vulkan.Core10.Handles.ImageView' 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>
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08115# If the descriptors
+--     used by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline
+--     bind point were specified via
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', the
+--     bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     without
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08116# Descriptors in bound
+--     descriptor buffers, specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     /must/ be valid if they are dynamically used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
+--     was created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08604# Descriptors in bound
+--     descriptor buffers, specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     /must/ be valid if they are dynamically used by any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     to the pipeline bind point used by this command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08117# If the descriptors
+--     used by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline
+--     bind point were specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08119# If a descriptor is
+--     dynamically used with a 'Vulkan.Core10.Handles.Pipeline' created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     the descriptor memory /must/ be resident
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08605# If a descriptor is
+--     dynamically used with a 'Vulkan.Extensions.Handles.ShaderEXT'
+--     created with a 'Vulkan.Core10.Handles.DescriptorSetLayout' that was
+--     created with
+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     the descriptor memory /must/ be resident
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08606# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject>
+--     feature is not enabled, a valid pipeline /must/ be bound to the
+--     pipeline bind point used by this command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08608# If a pipeline is
+--     bound to the pipeline bind point used by this command, there /must/
+--     not have been any calls to dynamic state setting commands for any
+--     state specified statically in the 'Vulkan.Core10.Handles.Pipeline'
+--     object bound to the pipeline bind point used by this command, since
+--     that pipeline was bound
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-uniformBuffers-06935# If any
+--     stage of the 'Vulkan.Core10.Handles.Pipeline' object bound to the
+--     pipeline bind point used by this command accesses a uniform buffer,
+--     and that stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @uniformBuffers@, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /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-vkCmdDrawMeshTasksIndirectNV-None-08612# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, and any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     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-vkCmdDrawMeshTasksIndirectNV-storageBuffers-06936# If any
+--     stage of the 'Vulkan.Core10.Handles.Pipeline' object bound to the
+--     pipeline bind point used by this command accesses a storage buffer,
+--     and that stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @storageBuffers@, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /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-vkCmdDrawMeshTasksIndirectNV-None-08613# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, and any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     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-vkCmdDrawMeshTasksIndirectNV-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
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shaders>
+--     /must/ not be a protected resource
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-viewType-07752# If a
+--     'Vulkan.Core10.Handles.ImageView' is accessed as a result of this
+--     command, then the image view’s @viewType@ /must/ match the @Dim@
+--     operand of the @OpTypeImage@ as described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-image-dimensions ???>
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-format-07753# If a
+--     'Vulkan.Core10.Handles.ImageView' or
+--     'Vulkan.Core10.Handles.BufferView' is accessed as a result of this
+--     command, then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-numericformat numeric type>
+--     of the view’s @format@ and the @Sampled@ @Type@ operand of the
+--     @OpTypeImage@ /must/ match
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-OpImageWrite-08795# If a
+--     'Vulkan.Core10.Handles.ImageView' created with a format other than
+--     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM' 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-vkCmdDrawMeshTasksIndirectNV-OpImageWrite-08796# If a
+--     'Vulkan.Core10.Handles.ImageView' created with the format
+--     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM' is accessed using
+--     @OpImageWrite@ as a result of this command, then the @Type@ of the
+--     @Texel@ operand of that instruction /must/ have four components
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-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-vkCmdDrawMeshTasksIndirectNV-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-vkCmdDrawMeshTasksIndirectNV-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-vkCmdDrawMeshTasksIndirectNV-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-vkCmdDrawMeshTasksIndirectNV-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-vkCmdDrawMeshTasksIndirectNV-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-vkCmdDrawMeshTasksIndirectNV-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-vkCmdDrawMeshTasksIndirectNV-OpImageSampleWeightedQCOM-06971#
+--     If @OpImageSampleWeightedQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-OpImageSampleWeightedQCOM-06972#
+--     If @OpImageSampleWeightedQCOM@ uses a
+--     'Vulkan.Core10.Handles.ImageView' as a sample weight image 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-OpImageBoxFilterQCOM-06973# If
+--     @OpImageBoxFilterQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-OpImageBlockMatchSSDQCOM-06974#
+--     If @OpImageBlockMatchSSDQCOM@ is used to read from an
+--     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
+--     or
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_SXD_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-OpImageBlockMatchSADQCOM-12420#
+--     If @OpImageBlockMatchSADQCOM@ is used to read from an
+--     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
+--     or
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_SXD_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-OpImageBlockMatchSADQCOM-06976#
+--     If @OpImageBlockMatchSADQCOM@ or OpImageBlockMatchSSDQCOM is used to
+--     read from a reference image as result of this command, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-blockMatchExtendedClampToEdge blockMatchExtendedClampToEdge>
+--     feature is not enabled or the /input/ sampler was not created with
+--     both @addressModeU@ and @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--     then the specified reference coordinates /must/ not fail
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-OpImageSampleWeightedQCOM-06977#
+--     If @OpImageSampleWeightedQCOM@, @OpImageBoxFilterQCOM@,
+--     @OpImageBlockMatchWindowSSDQCOM@, @OpImageBlockMatchWindowSADQCOM@,
+--     @OpImageBlockMatchGatherSSDQCOM@, @OpImageBlockMatchGatherSADQCOM@,
+--     @OpImageBlockMatchSSDQCOM@, or @OpImageBlockMatchSADQCOM@ uses a
+--     'Vulkan.Core10.Handles.Sampler' as a result of this command, then
+--     the sampler /must/ have been created with
+--     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-OpImageSampleWeightedQCOM-06978#
+--     If any command other than @OpImageSampleWeightedQCOM@,
+--     @OpImageBoxFilterQCOM@, @OpImageBlockMatchWindowSSDQCOM@,
+--     @OpImageBlockMatchWindowSADQCOM@, @OpImageBlockMatchGatherSSDQCOM@,
+--     @OpImageBlockMatchGatherSADQCOM@, @OpImageBlockMatchSSDQCOM@, or
+--     @OpImageBlockMatchSADQCOM@ uses a 'Vulkan.Core10.Handles.Sampler' as
+--     a result of this command, then the sampler /must/ not have been
+--     created with
+--     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-OpImageBlockMatchWindow-09215# If
+--     a @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     instruction is used to read from an
+--     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-OpImageBlockMatchWindow-09216# If
+--     a @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     instruction is used to read from an
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the image view’s format /must/ be a single-component format
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-OpImageBlockMatchWindow-09217# If
+--     a @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     read from a reference image as result of this command, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-blockMatchExtendedClampToEdge blockMatchExtendedClampToEdge>
+--     feature is not enabled or the /input/ sampler was not created with
+--     both @addressModeU@ and @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--     then the specified reference coordinates /must/ not fail
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-OpImageBlockMatchWindow-12421# If
+--     a @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     instruction uses a 'Vulkan.Core10.Handles.Sampler' as a result of
+--     this command, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-blockMatchExtendedClampToEdge blockMatchExtendedClampToEdge>
+--     is not enabled, the /input/ sampler /must/ not have been created
+--     with either @addressModeU@ or @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-addressModeU-12422# If a
+--     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     instruction uses a 'Vulkan.Core10.Handles.Sampler' as a result of
+--     this command, and the /input/ sampler was created with either
+--     @addressModeU@ or @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE',
+--     then the sampler /must/ have been created with both @addressModeU@
+--     and @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07288# Any shader invocation
+--     executed by this command /must/
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-termination terminate>
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-09600# If a descriptor with
+--     type equal to any of
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',
+--     or
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'
+--     is accessed as a result of this command, all image subresources
+--     identified by that descriptor /must/ be in the image layout
+--     identified when the descriptor was written
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-micromap-11636# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command through an
+--     @OpRayQueryProceedKHR@ operation , the @VK_EXT_opacity_micromap@
+--     extension is not enabled, and the acceleration structure is built
+--     using geometry with a
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapKHR'
+--     structure included in its @pNext@ chain, the shader /must/ have
+--     specified a @OpacityMicromapIdKHR@ execution mode with its
+--     specialization constant operand equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-micromap-11637# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command and the
+--     acceleration structure was constructed through deserialization, all
+--     micromap arrays referenced by the acceleration structure that were
+--     not replaced by an acceleration structure update command /must/ have
+--     been deserialized using the serialized data of the corresponding
+--     micromaps used to originally build the acceleration structure prior
+--     to the execution of this command on the device
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-micromap-11638# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command and the
+--     acceleration structure is built using geometry with an @indexBuffer@
+--     containing both
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.OpacityMicromapSpecialIndexKHR'
+--     values and indices into an associated micromap array, any
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command /must/ not have been created with @flags@ that
+--     includes
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_KHR'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-micromap-11639# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command and the
+--     acceleration structure is built using geometry with an @indexBuffer@
+--     containing both
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.OpacityMicromapSpecialIndexKHR'
+--     values and indices into an associated micromap array, any
+--     'Vulkan.Extensions.Handles.ShaderEXT' that accessed the descriptor
+--     /must/ not have been created with @flags@ that includes
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-10746# The
+--     'Vulkan.Core10.Handles.DeviceMemory' object allocated from a
+--     'Vulkan.Core10.DeviceInitialization.MemoryHeap' with the
+--     'Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_TILE_MEMORY_BIT_QCOM'
+--     property that is bound to a resource accessed as a result of this
+--     command /must/ be the active
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-bind-tile-memory bound tile memory object>
+--     in @commandBuffer@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-10678# If this command is
+--     recorded inside a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-tile-shading tile shading render pass>
+--     instance, the stages corresponding to the pipeline bind point used
+--     by this command /must/ only include
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT',
+--     and\/or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-10679# If this command is
+--     recorded where
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model>
+--     is enabled, there /must/ be no access to any image while the image
+--     was be transitioned to the
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
+--     layout
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-pDescription-09900# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the
+--     underlying 'Vulkan.Extensions.Handles.TensorARM' object /must/ have
+--     been created with the
+--     'Vulkan.Extensions.VK_ARM_tensors.TENSOR_USAGE_SHADER_BIT_ARM' usage
+--     flag set
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-dimensionCount-09905# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the @Rank@
+--     of the @OpTypeTensorARM@ of the tensor resource variable /must/ be
+--     equal to the @dimensionCount@ provided via
+--     'Vulkan.Extensions.VK_ARM_tensors.TensorCreateInfoARM'::@pDescription@
+--     when creating the underlying 'Vulkan.Extensions.Handles.TensorARM'
+--     object
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-OpTypeTensorARM-09906# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the element
+--     type of the @OpTypeTensorARM@ of the tensor resource variable /must/
+--     be
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-tensor-formats compatible>
+--     with the 'Vulkan.Core10.Enums.Format.Format' of the
+--     'Vulkan.Extensions.Handles.TensorViewARM' used for the access
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-11297# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses a @OpTypeStruct@ decorated with @Block@ or
+--     @BufferBlock@ using that mapping, the calculated offset for the
+--     resource heap /must/ be a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-bufferDescriptorAlignment bufferDescriptorAlignment>
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-11298# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses an @OpTypeImage@ or @OpTypeSampledImage@ using
+--     that mapping, the calculated offset for the resource heap /must/ be
+--     a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-imageDescriptorAlignment imageDescriptorAlignment>
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-11299# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses an @OpTypeSampler@ or @OpTypeSampledImage@
+--     using that mapping, the calculated offset for the sampler heap
+--     /must/ be a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-samplerDescriptorAlignment samplerDescriptorAlignment>
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-11397# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses an @OpTypeTensorARM@ using that mapping, the
+--     calculated offset for the resource heap /must/ be a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-tensorDescriptorAlignment tensorDescriptorAlignment>
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-11300# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a
+--     multiple of 4
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-11301# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' backed by physical
+--     memory at every offset specified by each mapping
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-11302# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-11304# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a
+--     multiple of 8
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-11305# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' backed by physical
+--     memory at every offset specified by each mapping
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-11306# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address pointed to by the address in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-11308# For each
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps descriptor heap>
+--     that is statically used by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
+--     either directly or via a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>,
+--     a valid descriptor heap /must/ be bound
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-11309# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     was created as a 'Vulkan.Extensions.Handles.ShaderEXT' with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag or as part of a pipeline with the
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag, execution of this command /must/ not result in any descriptor
+--     read accessing data outside of the user range of the respective heap
+--     bound by @vkCmdBind*HeapEXT@ commands
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-11372# If any stage of the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command accesses a uniform buffer or uniform
+--     texel buffer through a descriptor in the bound resource heap, that
+--     stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @uniformBuffers@, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /must/ not access values outside
+--     of the range of the descriptor specified via
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+--     when the descriptor was written
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-11373# If any stage of the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command accesses a storage buffer or storage
+--     texel buffer through a descriptor in the bound resource heap, that
+--     stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @storageBuffers@, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /must/ not access values outside
+--     of the range of the descriptor specified by
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+--     when the descriptor was written
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-11374# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, and any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     to the pipeline bind point used by this command accesses a uniform
+--     buffer, uniform texel buffer, storage buffer, or storage texel
+--     buffer, that shader /must/ not access values outside of the range of
+--     the buffer as specified by
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+--     when the descriptor was written
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-pBindInfo-11375# If any
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     uses an embedded sampler via a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>,
+--     the value of @pBindInfo->reservedRangeSize@ set for
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.cmdBindSamplerHeapEXT'
+--     /must/ be greater than or equal to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minSamplerHeapReservedRangeWithEmbedded minSamplerHeapReservedRangeWithEmbedded>
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-11376# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     was created as a 'Vulkan.Extensions.Handles.ShaderEXT' with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag or as part of a pipeline with the
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag, and that shader statically uses a push constant value, that
+--     value /must/ have been set by
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.cmdPushDataEXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-11398# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_DATA_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_DATA_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_RESOURCE_HEAP_DATA_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the access
+--     /must/ not be
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-execution-memory-access-bounds out of bounds>
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-11437# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the buffer from
+--     which the address in push data was queried /must/ have been created
+--     with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-11438# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a uniform buffer using that mapping, the
+--     address that the uniform buffer is mapped to /must/ have been
+--     queried from a buffer created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-11441# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a uniform buffer using that mapping, the
+--     address that the uniform buffer is mapped to /must/ be aligned to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minUniformBufferOffsetAlignment minUniformBufferOffsetAlignment>
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-11439# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a storage buffer using that mapping, the
+--     address that the storage buffer is mapped to /must/ have been
+--     queried from a buffer created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_STORAGE_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-11442# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a storage buffer using that mapping, the
+--     address that the storage buffer is mapped to /must/ be aligned to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minStorageBufferOffsetAlignment minStorageBufferOffsetAlignment>
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-11485# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses an acceleration structure using that mapping,
+--     the address that the acceleration structure is mapped to /must/ be
+--     an acceleration structure address retrieved from a
+--     'Vulkan.Extensions.Handles.AccelerationStructureKHR' object via
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.getAccelerationStructureDeviceAddressKHR'
+--     or handle retrieved from a
+--     'Vulkan.Extensions.Handles.AccelerationStructureNV' object via
+--     'Vulkan.Extensions.VK_NV_ray_tracing.getAccelerationStructureHandleNV'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-index-11450# If a shader uses a
+--     sampler descriptor to sample an image as a result of this command,
+--     and that sampler descriptor uses a custom border color with an index
+--     defined by
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.SamplerCustomBorderColorIndexCreateInfoEXT',
+--     the value of
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.SamplerCustomBorderColorIndexCreateInfoEXT'::@index@
+--     /must/ have been registered before this command was recorded, and
+--     still be registered during the sampling operation, with an
+--     identically defined color
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-protectedNoFault-11455# If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, a pipeline is bound to the pipeline bind point
+--     used by this command, or a shader is bound to a shader stage used by
+--     this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     the address that the resource is mapped to /must/ have been queried
+--     from a buffer created without the
+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT'
+--     create flag set
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-protectedNoFault-11456# If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, a pipeline is bound to the pipeline bind point
+--     used by this command, or a shader is bound to a shader stage used by
+--     this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     the address of the indirect memory /must/ have been queried from a
+--     buffer created without the
+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT'
+--     create flag set
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-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.GraphicsPipeline.GraphicsPipelineCreateInfo'
+--     structure specified when creating the
+--     'Vulkan.Core10.Handles.Pipeline' bound to
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-subpass-02685# The subpass index
+--     of the current render pass /must/ be equal to the @subpass@ member
+--     of the 'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'
+--     structure specified when creating the
+--     'Vulkan.Core10.Handles.Pipeline' bound to
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-OpTypeImage-07468# If any shader
+--     executed by this pipeline accesses an @OpTypeImage@ variable with a
+--     @Dim@ operand of @SubpassData@, it /must/ be decorated with an
+--     @InputAttachmentIndex@ that corresponds to a valid input attachment
+--     in the current subpass
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07469# Input attachment
+--     views accessed in a subpass /must/ be created with the same
+--     'Vulkan.Core10.Enums.Format.Format' as the corresponding subpass
+--     definition, and be created with a 'Vulkan.Core10.Handles.ImageView'
+--     that is compatible with the attachment referenced by the subpass\'
+--     @pInputAttachments@[@InputAttachmentIndex@] in the bound
+--     'Vulkan.Core10.Handles.Framebuffer' as specified by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#compatibility-inputattachment Fragment Input Attachment Compatibility>
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-pDepthInputAttachmentIndex-09595#
+--     Input attachment views accessed in a dynamic render pass with a
+--     @InputAttachmentIndex@ referenced by
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo',
+--     or no @InputAttachmentIndex@ if
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pDepthInputAttachmentIndex@
+--     or
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pStencilInputAttachmentIndex@
+--     are @NULL@, /must/ be created with a
+--     'Vulkan.Core10.Handles.ImageView' that is compatible with the
+--     corresponding color, depth, or stencil attachment in
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-pDepthInputAttachmentIndex-09596#
+--     Input attachment views accessed in a dynamic render pass via a
+--     shader object /must/ have an @InputAttachmentIndex@ if both
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pDepthInputAttachmentIndex@
+--     and
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pStencilInputAttachmentIndex@
+--     are non-@NULL@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-InputAttachmentIndex-09597# If an
+--     input attachment view accessed in a dynamic render pass via a shader
+--     object has an @InputAttachmentIndex@, the @InputAttachmentIndex@
+--     /must/ match an index in
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-06537# Memory backing image
+--     subresources used as attachments in the current render pass /must/
+--     not be written in any way other than as an attachment by this
+--     command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-10795# If a color attachment
+--     is written by any prior command in this subpass or by the load,
+--     store, or resolve operations for this subpass, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT' on
+--     that attachment, it /must/ not be accessed in any way other than as
+--     an attachment by this command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-10796# If a depth attachment
+--     is written by any prior command in this subpass or by the load,
+--     store, or resolve operations for this subpass, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' on
+--     that attachment, it /must/ not be accessed in any way other than as
+--     an attachment by this command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-10797# If a stencil
+--     attachment is written by any prior command in this subpass or by the
+--     load, store, or resolve operations for this subpass, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
+--     on that attachment, it /must/ not be accessed in any way other than
+--     as an attachment by this command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-12338# If a color attachment
+--     is read in this command in any way other than as an attachment, or
+--     has been read by any prior command in this subpass as a
+--     non-attachment, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT' on
+--     that attachment, the color attachment /must/ not be written to by
+--     this command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-12339# If a depth attachment
+--     is read in this command in any way other than as an attachment, or
+--     has been read by any prior command in this subpass as a
+--     non-attachment, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' on
+--     that attachment, the depth attachment /must/ not be written to by
+--     this command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-12340# If a stencil
+--     attachment is read in this command in any way other than as an
+--     attachment, or has been read by any prior command in this subpass as
+--     a non-attachment, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
+--     on that attachment, the stencil attachment /must/ not be written to
+--     by this command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-09003# If an attachment is
+--     written by any prior command in this subpass or by the load, store,
+--     or resolve operations for this subpass, it /must/ not be accessed in
+--     any way other than as an attachment, storage image, or sampled image
+--     by this command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-06886# If the current render
+--     pass instance uses a depth\/stencil attachment with a read-only
+--     layout for the depth aspect,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-depth-write depth writes>
+--     /must/ be disabled
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-06887# If the current render
+--     pass instance uses a depth\/stencil attachment with a read-only
+--     layout for the stencil aspect, both front and back @writeMask@ are
+--     not zero, and stencil test is enabled,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-stencil all stencil ops>
+--     /must/ be 'Vulkan.Core10.Enums.StencilOp.STENCIL_OP_KEEP'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07831# If the bound graphics
+--     pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT' dynamic
+--     state enabled then
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetViewport' /must/ have
+--     been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07832# If the bound graphics
+--     pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR' dynamic
+--     state enabled then
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetScissor' /must/ have been
+--     called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08617# If a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_WIDTH' dynamic
+--     state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line topology class, then
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth' /must/ have
+--     been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07834# If a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS' dynamic
+--     state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @depthBiasEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBias' or
+--     'Vulkan.Extensions.VK_EXT_depth_bias_control.cmdSetDepthBias2EXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07835# If a shader object is
+--     bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_BLEND_CONSTANTS'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and an active color
+--     attachment
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @blendEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE' with a
+--     blend equations where any
+--     'Vulkan.Core10.Enums.BlendFactor.BlendFactor' member is
+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_COLOR',
+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR',
+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_ALPHA', or
+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA',
+--     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetBlendConstants'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07836# If a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @depthBoundsTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBounds' /must/
+--     have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07837# If a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_COMPARE_MASK'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilCompareMask'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07838# If a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_WRITE_MASK'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilWriteMask'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07839# If a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_REFERENCE'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of and @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilReference'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-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-vkCmdDrawMeshTasksIndirectNV-sampleLocationsEnable-02689# If
+--     the bound graphics pipeline was created with
+--     'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@
+--     set to 'Vulkan.Core10.FundamentalTypes.TRUE', then the active depth
+--     attachment /must/ have been created with the
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'
+--     bit set
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07634# If the
+--     @VK_EXT_sample_locations@ extension is enabled, a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-06666# If the
+--     @VK_EXT_sample_locations@ extension is enabled, a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07840# If a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CULL_MODE' dynamic
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetCullMode'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07841# If a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRONT_FACE' dynamic
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetFrontFace'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07843# If a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_TEST_ENABLE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE',
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthTestEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07844# If a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @depthTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthWriteEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07845# If a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_COMPARE_OP'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @depthTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthCompareOp'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07846# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthBounds depthBounds>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthBoundsTestEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07847# If a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_TEST_ENABLE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilTestEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07848# If a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_OP' dynamic
+--     state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilOp'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-viewportCount-03417# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
+--     dynamic state enabled, and the state is not inherited, then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-scissorCount-03418# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
+--     dynamic state enabled, and the state is not inherited, then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-viewportCount-03419# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which 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, and the state is not inherited, then 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-vkCmdDrawMeshTasksIndirectNV-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-vkCmdDrawMeshTasksIndirectNV-viewportCount-04138# If the
+--     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which 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 state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @viewportWScalingEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.cmdSetViewportWScalingNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08636# If the
+--     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which 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 state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @viewportWScalingEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', 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-vkCmdDrawMeshTasksIndirectNV-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-vkCmdDrawMeshTasksIndirectNV-shadingRateImage-09233# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV'
+--     and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetCoarseSampleOrderNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-shadingRateImage-09234# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which 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 state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @shadingRateImageEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetViewportShadingRatePaletteNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08637# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which 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 state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @shadingRateImageEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', 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-vkCmdDrawMeshTasksIndirectNV-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
+--     'Vulkan.Core10.GraphicsPipeline.PipelineViewportStateCreateInfo',
+--     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-vkCmdDrawMeshTasksIndirectNV-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
+--     'Vulkan.Core10.GraphicsPipeline.PipelineViewportStateCreateInfo',
+--     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-vkCmdDrawMeshTasksIndirectNV-None-07878# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-exclusiveScissor exclusiveScissor>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07879# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-exclusiveScissor exclusiveScissor>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV'
+--     dynamic state enabled, and the most recent call to
+--     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorEnableNV'
+--     in the current command buffer set any element of
+--     @pExclusiveScissorEnables@ to 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then
+--     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-04876# If a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     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 and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-04877# If a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-logicOp-04878# If a shader object
+--     is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @logicOpEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetLogicOpEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-primitiveFragmentShadingRateWithMultipleViewports-04552#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
+--     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-vkCmdDrawMeshTasksIndirectNV-primitiveFragmentShadingRateWithMultipleViewports-08642#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
+--     limit is not supported, and any shader object bound to a graphics
+--     stage writes 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-vkCmdDrawMeshTasksIndirectNV-blendEnable-04727# If a shader
+--     object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then for each color
+--     attachment, 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 corresponding
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @blendEnable@ /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08644# If a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and none of the following is
+--     enabled:
+--
+--     -   the @VK_AMD_mixed_attachment_samples@ extension
+--
+--     -   the @VK_NV_framebuffer_mixed_samples@ extension
+--
+--     -   the
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
+--         feature
+--
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizationSamples@ /must/ be the same as the current color
+--     and\/or depth\/stencil attachments
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08876# If a shader object is
+--     bound to any graphics stage, the current render pass instance /must/
+--     have been begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-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-vkCmdDrawMeshTasksIndirectNV-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-vkCmdDrawMeshTasksIndirectNV-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-vkCmdDrawMeshTasksIndirectNV-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-vkCmdDrawMeshTasksIndirectNV-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-vkCmdDrawMeshTasksIndirectNV-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-vkCmdDrawMeshTasksIndirectNV-viewMask-06178# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the 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-vkCmdDrawMeshTasksIndirectNV-colorAttachmentCount-06179# If
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled and the current render pass instance was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the 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-vkCmdDrawMeshTasksIndirectNV-dynamicRenderingUnusedAttachments-08910#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and 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 an @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 bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-dynamicRenderingUnusedAttachments-08912#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and 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 an @imageView@ equal to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have the
+--     corresponding element of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
+--     used to create the bound pipeline equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-dynamicRenderingUnusedAttachments-08911#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled, and 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 an @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 bound graphics pipeline, or the corresponding
+--     element of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@,
+--     if it exists, /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-colorAttachmentCount-09362# If
+--     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@
+--     equal to @1@, there is no shader object bound to any graphics stage,
+--     and a color attachment with a resolve mode of
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID',
+--     each element of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
+--     array with a @resolveImageView@ not equal to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
+--     with an image created with a
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value equal to the
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value used to create the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-09363# If there is no shader
+--     object bound to any graphics stage, the current render pass instance
+--     was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and a
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
+--     equal to @1@, and a color attachment with a resolve mode of
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID',
+--     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 an image created with a
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value equal to the
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value used to create the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-09364# If the current render
+--     pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there is no shader object bound to any graphics stage, and the bound
+--     graphics pipeline was created with a non-zero
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value and with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
+--     /must/ have set the blend enable to
+--     'Vulkan.Core10.FundamentalTypes.FALSE' prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-09365# If the current render
+--     pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there is no shader object bound to any graphics stage, and the bound
+--     graphics pipeline was created with a non-zero
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value and with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     /must/ have set @rasterizationSamples@ to
+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' prior
+--     to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-09366# If there is a shader
+--     object bound to any graphics stage, and the current render pass
+--     includes a color attachment that uses the
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID'
+--     resolve mode, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
+--     /must/ have set blend enable to
+--     'Vulkan.Core10.FundamentalTypes.FALSE' prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-rasterizationSamples-09367# If
+--     there is a shader object bound to any graphics stage, and the
+--     current render pass includes a color attachment that uses the
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID'
+--     resolve mode, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     /must/ have set @rasterizationSamples@ to
+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' prior
+--     to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-09368# If the current render
+--     pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there is no shader object bound to any graphics stage, and the bound
+--     graphics pipeline was created with a non-zero
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value and with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     /must/ have set @pFragmentSize->width@ to @1@ prior to this drawing
+--     command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-09369# If the current render
+--     pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there is no shader object bound to any graphics stage, and the bound
+--     graphics pipeline was created with a non-zero
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value and with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     /must/ have set @pFragmentSize->height@ to @1@ prior to this drawing
+--     command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-pFragmentSize-09370# If there is
+--     a shader object bound to any graphics stage, and the current render
+--     pass includes a color attachment that uses the
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID'
+--     resolve mode, then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     /must/ have set @pFragmentSize->width@ to @1@ prior to this drawing
+--     command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-pFragmentSize-09371# If there is
+--     a shader object bound to any graphics stage, and the current render
+--     pass includes a color attachment that uses the
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID'
+--     resolve mode, then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     /must/ have set @pFragmentSize->height@ to @1@ prior to this drawing
+--     command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07749# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
+--     feature is enabled, a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-attachmentCount-07750# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
+--     feature is enabled, a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then the @attachmentCount@
+--     parameter of most recent call to
+--     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
+--     in the current command buffer /must/ be greater than or equal to the
+--     number of active color attachments
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07751# If the
+--     @VK_EXT_discard_rectangles@ extension is enabled, a graphics
+--     pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_EXT'
+--     dynamic state enabled and the @pNext@ chain of
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo' included
+--     a
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'
+--     structure, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @discardRectangleEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command for each
+--     discard rectangle in
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'::@discardRectangleCount@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-rasterizerDiscardEnable-09236# If
+--     the @VK_EXT_discard_rectangles@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_EXT'
+--     dynamic state enabled and the @pNext@ chain of
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo' did not
+--     include a
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'
+--     structure, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @discardRectangleEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command for each
+--     discard rectangle in
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.PhysicalDeviceDiscardRectanglePropertiesEXT'::@maxDiscardRectangles@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07880# If the
+--     @VK_EXT_discard_rectangles@ extension is enabled, a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07881# If the
+--     @VK_EXT_discard_rectangles@ extension is enabled, a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @discardRectangleEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleModeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-dynamicRenderingUnusedAttachments-08913#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
+--     used to create the bound graphics pipeline /must/ be equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-dynamicRenderingUnusedAttachments-08914#
+--     If current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->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 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->imageView@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-dynamicRenderingUnusedAttachments-08915#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
+--     used to create the bound graphics pipeline was not equal to the
+--     'Vulkan.Core10.Enums.Format.Format' used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@,
+--     the value of the format /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-dynamicRenderingUnusedAttachments-08916#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
+--     used to create the bound graphics pipeline /must/ be equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-dynamicRenderingUnusedAttachments-08917#
+--     If current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->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 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->imageView@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-dynamicRenderingUnusedAttachments-08918#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
+--     used to create the bound graphics pipeline was not equal to the
+--     'Vulkan.Core10.Enums.Format.Format' used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@,
+--     the value of the format /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-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_fragment_shading_rate.RenderingFragmentShadingRateAttachmentInfoKHR'::@imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the bound graphics
+--     pipeline /must/ have been created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-dynamicRenderingLocalRead-11797#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingLocalRead dynamicRenderingLocalRead>
+--     feature is enabled, the
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_LOCAL_READ_CONCURRENT_ACCESS_CONTROL_BIT_KHR'
+--     flag is specified, and an attachment is being used as a feedback
+--     loop as specified by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#rendering-attachment-input-attachment-feedback >,
+--     'Vulkan.Extensions.VK_KHR_maintenance10.RenderingAttachmentFlagsInfoKHR'::@flags@
+--     for that attachment /must/ include
+--     'Vulkan.Extensions.VK_KHR_maintenance10.RENDERING_ATTACHMENT_INPUT_ATTACHMENT_FEEDBACK_BIT_KHR'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-imageView-06184# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and
+--     'Vulkan.Extensions.VK_EXT_fragment_density_map.RenderingFragmentDensityMapAttachmentInfoEXT'::@imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the bound graphics
+--     pipeline /must/ have been created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-layers-10831# If the current
+--     render pass instance was created with
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE'
+--     or
+--     'Vulkan.Core10.Enums.RenderPassCreateFlagBits.RENDER_PASS_CREATE_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE',
+--     and the bound graphics pipeline was created with
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE',
+--     then the current render pass instance /must/ have a @layers@ value
+--     less than or equal to
+--     'Vulkan.Extensions.VK_VALVE_fragment_density_map_layered.PipelineFragmentDensityMapLayeredCreateInfoVALVE'::@maxFragmentDensityMapLayers@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-colorAttachmentCount-06185# If
+--     the bound pipeline was created with a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.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_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     used to create the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-pDepthAttachment-06186# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the bound pipeline was created with a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     structure, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
+--     @depthStencilAttachmentSamples@ member of
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     used to create the bound graphics pipeline /must/ be equal to the
+--     sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-pStencilAttachment-06187# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the bound pipeline was created with a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     structure, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
+--     @depthStencilAttachmentSamples@ member of
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     used to create the bound graphics pipeline /must/ be equal to the
+--     sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-multisampledRenderToSingleSampled-07285#
+--     If the bound pipeline was created without a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     structure, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
+--     feature is not enabled, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, 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 @rasterizationSamples@ for
+--     the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-multisampledRenderToSingleSampled-07286#
+--     If the bound pipeline was created without a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     structure, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
+--     feature is not enabled, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     @rasterizationSamples@ for the bound graphics pipeline /must/ be
+--     equal to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-multisampledRenderToSingleSampled-07287#
+--     If the bound pipeline was created without a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     structure, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
+--     feature is not enabled, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     @rasterizationSamples@ for the bound graphics pipeline /must/ be
+--     equal to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-pNext-07935# If this command is
+--     called inside a render pass instance started with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     and the @pNext@ chain of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'
+--     includes a
+--     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'
+--     structure with @multisampledRenderToSingleSampledEnable@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then the value of
+--     @rasterizationSamples@ for the bound graphics pipeline /must/ be
+--     equal to
+--     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'::@rasterizationSamples@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-renderPass-06198# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the bound pipeline /must/ have been created with a
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'::@renderPass@
+--     equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-pColorAttachments-08963# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, there is a
+--     graphics pipeline bound with a fragment shader that statically
+--     writes to a color attachment, the color write mask is not zero,
+--     color writes are enabled, and the corresponding element of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     corresponding element of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-pColorAttachments-11539# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, there is a graphics
+--     pipeline bound with a fragment shader that statically writes to a
+--     color attachment, the color write mask is not zero, color writes are
+--     enabled, and the corresponding element of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     corresponding element of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-pDepthAttachment-08964# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, there is a
+--     graphics pipeline bound, depth test is enabled, and the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-pDepthAttachment-11540# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, there is a graphics
+--     pipeline bound, depth test is enabled, and the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-pStencilAttachment-08965# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, there is a
+--     graphics pipeline bound, stencil test is enabled and the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-pStencilAttachment-11860# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, there is a graphics
+--     pipeline bound, stencil test is enabled and the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-flags-10582# If the current
+--     render pass instance was begun with a
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     call in @commandBuffer@, its
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@flags@
+--     parameter /must/ not have
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT'
+--     set unless
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_CONTENTS_INLINE_BIT_KHR'
+--     is also set
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-primitivesGeneratedQueryWithRasterizerDiscard-06708#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithRasterizerDiscard primitivesGeneratedQueryWithRasterizerDiscard>
+--     feature is not enabled and the
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
+--     query is active,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-discard rasterization discard>
+--     /must/ not be enabled
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-primitivesGeneratedQueryWithNonZeroStreams-06709#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>
+--     feature is not enabled and the
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
+--     query is active, the bound graphics pipeline /must/ not have been
+--     created with a non-zero value in
+--     'Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT'::@rasterizationStream@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07620# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClamp depthClamp>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClampEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07621# If a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_POLYGON_MODE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07622# If a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07623# If a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-alphaToCoverageEnable-08919# If
+--     the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT'
+--     dynamic state enabled, and @alphaToCoverageEnable@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-fragmentoutput Fragment Output Interface>
+--     /must/ contain a variable for the alpha @Component@ word in
+--     @Location@ 0 at @Index@ 0
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-alphaToCoverageEnable-08920# If a
+--     shader object is bound to any graphics stage, and the most recent
+--     call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT'
+--     in the current command buffer set @alphaToCoverageEnable@ to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-fragmentoutput Fragment Output Interface>
+--     /must/ contain a variable for the alpha @Component@ word in
+--     @Location@ 0 at @Index@ 0
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07624# If a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07625# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-alphaToOne alphaToOne>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToOneEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07626# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-logicOp logicOp>
+--     feature is enabled, a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLogicOpEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07627# If a shader object is
+--     bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and there are color
+--     attachments bound, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07629# If a shader object is
+--     bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and there are color
+--     attachments bound, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07630# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryStreams geometryStreams>
+--     feature is enabled, and a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
+--     stage or a graphics pipeline is bound which was created with both a
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
+--     stage and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_STREAM_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationStreamEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07631# If the
+--     @VK_EXT_conservative_rasterization@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetConservativeRasterizationModeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07632# If the
+--     @VK_EXT_conservative_rasterization@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @conservativeRasterizationMode@ is
+--     'Vulkan.Extensions.VK_EXT_conservative_rasterization.CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT',
+--     then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetExtraPrimitiveOverestimationSizeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-conservativePointAndLineRasterization-07499#
+--     If the @VK_EXT_conservative_rasterization@ extension is enabled,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-conservativePointAndLineRasterization conservativePointAndLineRasterization>
+--     is not supported, a shader object is bound to any graphics stage or
+--     a graphics pipeline is bound, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line or point topology class, then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @conservativeRasterizationMode@ /must/ be
+--     'Vulkan.Extensions.VK_EXT_conservative_rasterization.CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07633# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClipEnable depthClipEnable>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT'
+--     dynamic state, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07636# If the
+--     @VK_EXT_provoking_vertex@ extension is enabled, a shader object is
+--     bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetProvokingVertexModeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08666# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
+--     features are enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line topology class, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08669# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
+--     features are enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line topology class, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07849# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
+--     features are enabled and a shader object is bound to any graphics
+--     stage, or a bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @stippledLineEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then
+--     'Vulkan.Core14.Promoted_From_VK_KHR_line_rasterization.cmdSetLineStipple'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-10608# If a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line topology class, and the current @lineRasterizationMode@
+--     is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_BRESENHAM'
+--     or
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH',
+--     then the current @alphaToCoverageEnable@, @alphaToOneEnable@ and
+--     @sampleShadingEnable@ states /must/ all be
+--     'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07639# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClipControl depthClipControl>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipNegativeOneToOneEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-09650# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClampControl depthClampControl>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @depthClampEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_depth_clamp_control.cmdSetDepthClampRangeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07640# If the
+--     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportWScalingEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07641# If the
+--     @VK_NV_viewport_swizzle@ extension is enabled, and a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07642# If the
+--     @VK_NV_fragment_coverage_to_color@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07643# If the
+--     @VK_NV_fragment_coverage_to_color@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @coverageToColorEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07644# If the
+--     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationModeNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07645# If the
+--     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @coverageModulationMode@ is any value other than
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.COVERAGE_MODULATION_MODE_NONE_NV',
+--     then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07646# If the
+--     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @coverageModulationTableEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07647# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetShadingRateImageEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-pipelineFragmentShadingRate-09238#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07648# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-representativeFragmentTest representativeFragmentTest>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRepresentativeFragmentTestEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07649# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-coverageReductionMode coverageReductionMode>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageReductionModeNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-rasterizationSamples-07471# If
+--     the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, and the current subpass does not use any color
+--     and\/or depth\/stencil attachments, then the @rasterizationSamples@
+--     in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     /must/ follow the rules for a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-noattachments zero-attachment subpass>
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-samples-07472# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
+--     state enabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state disabled, then the @samples@ parameter in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
+--     /must/ be greater or equal to the
+--     'Vulkan.Core10.GraphicsPipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
+--     parameter used to create the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-samples-07473# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
+--     state and
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     states enabled, then the @samples@ parameter in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
+--     /must/ be greater or equal to the @rasterizationSamples@ parameter
+--     in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-09211# If the bound graphics
+--     pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, or a shader object is bound to any graphics stage,
+--     and the current render pass instance includes a
+--     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'
+--     structure with @multisampledRenderToSingleSampledEnable@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then the
+--     @rasterizationSamples@ in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     /must/ be the same as the @rasterizationSamples@ member of that
+--     structure
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-firstAttachment-07476# If a
+--     shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--     dynamic states enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
+--     in the current command buffer prior to this drawing command /must/
+--     have set a value for all active color attachments
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-firstAttachment-07478# If a
+--     shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT'
+--     dynamic states enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
+--     in the current command buffer prior to this drawing command /must/
+--     have set a value for all active color attachments
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-advancedBlendMaxColorAttachments-07480#
+--     If a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
+--     and
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--     dynamic states enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and an active color
+--     attachment
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @blendEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then the
+--     number of active color attachments /must/ not exceed
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-advancedBlendMaxColorAttachments advancedBlendMaxColorAttachments>
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-10862# If a graphics
+--     pipeline is bound was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
+--     , but not the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command for all
+--     active color attachments with the @blendEnable@
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-rasterizerDiscardEnable-10863# If
+--     a graphics pipeline is bound was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT',
+--     but not the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command for all
+--     active color attachments with the @blendEnable@
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-10864# If a shader object is
+--     bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
+--     and
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then either
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command for all
+--     active color attachments with the @blendEnable@
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-primitivesGeneratedQueryWithNonZeroStreams-07481#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>
+--     feature is not enabled and the
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
+--     query is active, and the bound graphics pipeline was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_STREAM_EXT'
+--     state enabled, the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationStreamEXT'
+--     /must/ have set the @rasterizationStream@ to zero
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-sampleLocationsPerPixel-07482# If
+--     the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state enabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state disabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then the @sampleLocationsPerPixel@ member of @pSampleLocationsInfo@
+--     in the last call to
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     /must/ equal the @rasterizationSamples@ member of the
+--     'Vulkan.Core10.GraphicsPipeline.PipelineMultisampleStateCreateInfo'
+--     structure the bound graphics pipeline has been created with
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-sampleLocationsPerPixel-07483# If
+--     the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state enabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then the @sampleLocationsPerPixel@ member of @pSampleLocationsInfo@
+--     in the last call to
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     /must/ equal the @rasterizationSamples@ parameter of the last call
+--     to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-sampleLocationsEnable-07484# If a
+--     shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage, or the bound graphics pipeline was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     state enabled, and @sampleLocationsEnable@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT'
+--     then the current active depth attachment /must/ have been created
+--     with the
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'
+--     bit set
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-sampleLocationsEnable-07485# If a
+--     shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage, or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state enabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     state enabled, and if @sampleLocationsEnable@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
+--     then the @sampleLocationsInfo.maxSampleLocationGridSize.width@ in
+--     the last call to
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     /must/ evenly divide
+--     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.width@
+--     as returned by
+--     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
+--     with a @samples@ parameter equaling @rasterizationSamples@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-sampleLocationsEnable-07486# If a
+--     shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage, or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state enabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     state enabled, and if @sampleLocationsEnable@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
+--     then the @sampleLocationsInfo.maxSampleLocationGridSize.height@ in
+--     the last call to
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     /must/ evenly divide
+--     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.height@
+--     as returned by
+--     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
+--     with a @samples@ parameter equaling @rasterizationSamples@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-sampleLocationsEnable-07487# If a
+--     shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage, or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     state enabled, and if @sampleLocationsEnable@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
+--     the fragment shader code /must/ not statically use the extended
+--     instruction @InterpolateAtSample@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-sampleLocationsEnable-07936# If
+--     the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state disabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then @sampleLocationsInfo.sampleLocationGridSize.width@ /must/
+--     evenly divide
+--     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.width@
+--     as returned by
+--     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
+--     with a @samples@ parameter equaling the value of
+--     @rasterizationSamples@ in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-sampleLocationsEnable-07937# If
+--     the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state disabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then @sampleLocationsInfo.sampleLocationGridSize.height@ /must/
+--     evenly divide
+--     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.height@
+--     as returned by
+--     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
+--     with a @samples@ parameter equaling the value of
+--     @rasterizationSamples@ in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-sampleLocationsEnable-07938# If
+--     the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state disabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then @sampleLocationsInfo.sampleLocationsPerPixel@ /must/ equal
+--     @rasterizationSamples@ in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-coverageModulationTableEnable-07488#
+--     If a shader object is bound to any graphics stage or the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV'
+--     state enabled, and the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV'
+--     set @coverageModulationTableEnable@ to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then the
+--     @coverageModulationTableCount@ parameter in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableNV'
+--     /must/ equal the current @rasterizationSamples@ divided by the
+--     number of color samples in the current active color attachment
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-rasterizationSamples-07489# If
+--     the @VK_NV_framebuffer_mixed_samples@ extension is enabled, and if
+--     current subpass has a depth\/stencil attachment and depth test,
+--     stencil test, or depth bounds test are enabled in the bound
+--     pipeline, then the current @rasterizationSamples@ /must/ be the same
+--     as the sample count of the depth\/stencil attachment
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-coverageToColorEnable-07490# If
+--     the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
+--     state enabled and the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
+--     set the @coverageToColorEnable@ to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then there /must/ be an
+--     active color attachment at the location selected by the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
+--     @coverageToColorLocation@, with a
+--     'Vulkan.Core10.Enums.Format.Format' of
+--     'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R8_SINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R16_UINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R16_SINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R32_UINT', or
+--     'Vulkan.Core10.Enums.Format.FORMAT_R32_SINT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-rasterizerDiscardEnable-09420# If
+--     the @VK_NV_fragment_coverage_to_color@ extension is enabled, and a
+--     shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage, and the most recent call to
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
+--     in the current command buffer set @rasterizerDiscardEnable@ to
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
+--     set the @coverageToColorEnable@ to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then there /must/ be an
+--     active color attachment at the location selected by the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
+--     @coverageToColorLocation@, with a
+--     'Vulkan.Core10.Enums.Format.Format' of
+--     'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R8_SINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R16_UINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R16_SINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R32_UINT', or
+--     'Vulkan.Core10.Enums.Format.FORMAT_R32_SINT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-coverageReductionMode-07491# If
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-coverageReductionMode coverageReductionMode>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV'
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     dynamic states enabled, then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current values>
+--     of @coverageReductionMode@, @rasterizationSamples@, the sample
+--     counts for the color and depth\/stencil attachments (if the subpass
+--     has them) /must/ be a valid combination returned by
+--     'Vulkan.Extensions.VK_NV_coverage_reduction_mode.getPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-viewportCount-07492# 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_SWIZZLE_NV'
+--     dynamic state enabled, 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-vkCmdDrawMeshTasksIndirectNV-viewportCount-07493# 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_SWIZZLE_NV'
+--     dynamic states enabled then the @viewportCount@ parameter in the
+--     last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
+--     /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-vkCmdDrawMeshTasksIndirectNV-viewportCount-09421# If the
+--     @VK_NV_viewport_swizzle@ extension is enabled, and a shader object
+--     is bound to any graphics stage, then the @viewportCount@ parameter
+--     in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
+--     /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-vkCmdDrawMeshTasksIndirectNV-rasterizationSamples-07494# If
+--     the @VK_NV_framebuffer_mixed_samples@ extension is enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-coverageReductionMode coverageReductionMode>
+--     feature is not enabled, or the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @coverageReductionMode@ is not
+--     'Vulkan.Extensions.VK_NV_coverage_reduction_mode.COVERAGE_REDUCTION_MODE_TRUNCATE_NV',
+--     and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizationSamples@ is greater than sample count of the color
+--     attachment, then
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-sampleshading sample shading>
+--     /must/ be disabled
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-stippledLineEnable-07495# If the
+--     bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic states enabled, and if the current @stippledLineEnable@
+--     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
+--     @lineRasterizationMode@ state is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_RECTANGULAR',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-stippledLineEnable-07496# If the
+--     bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic states enabled, and if the current @stippledLineEnable@
+--     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
+--     @lineRasterizationMode@ state is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_BRESENHAM',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-stippledLineEnable-07497# If the
+--     bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic states enabled, and if the current @stippledLineEnable@
+--     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
+--     @lineRasterizationMode@ state is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-stippledLineEnable-07498# If the
+--     bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic states enabled, and if the current @stippledLineEnable@
+--     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
+--     @lineRasterizationMode@ state is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_DEFAULT',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>
+--     feature /must/ be enabled and
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@strictLines@
+--     /must/ be 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-stage-07073# If the bound
+--     pipeline was created with the
+--     'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo'::@stage@
+--     member of an element of
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'::@pStages@
+--     set to
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT',
+--     then
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-mesh-shader Mesh Shader Queries>
+--     /must/ not be active
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08877# If a shader object is
+--     bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07850# If dynamic state was
+--     inherited from
+--     'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV',
+--     it /must/ be set in the current command buffer prior to this drawing
+--     command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-nextStage-10745# For each shader
+--     object bound to a graphics stage, except for shader object bound to
+--     the last graphics stage in the logical pipeline, it /must/ have been
+--     created with a @nextStage@ including the corresponding bit to the
+--     shader object bound to the following graphics stage in the logical
+--     pipeline
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08684# If there is no bound
+--     graphics pipeline,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08685# If there is no bound
+--     graphics pipeline, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellationShader>
+--     feature is enabled,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08686# If there is no bound
+--     graphics pipeline, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellationShader>
+--     feature is enabled,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08687# If there is no bound
+--     graphics pipeline, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometryShader>
+--     feature is enabled,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08688# If there is no bound
+--     graphics pipeline,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08689# If there is no bound
+--     graphics pipeline, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
+--     feature is enabled,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08690# If there is no bound
+--     graphics pipeline, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
+--     feature is enabled,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08693# If there is no bound
+--     graphics pipeline, and at least one of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
+--     features is enabled, one of the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--     stages /must/ have a valid 'Vulkan.Extensions.Handles.ShaderEXT'
+--     bound, and the other /must/ have no
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08696# If there is no bound
+--     graphics pipeline, and a valid 'Vulkan.Extensions.Handles.ShaderEXT'
+--     is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage, there /must/ be no 'Vulkan.Extensions.Handles.ShaderEXT'
+--     bound to either the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--     stage or the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--     stage
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08698# If any graphics
+--     shader is bound which was created with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
+--     flag, then all shaders created with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
+--     flag in the same
+--     'Vulkan.Extensions.VK_EXT_shader_object.createShadersEXT' call
+--     /must/ also be bound
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08699# If any graphics
+--     shader is bound which was created with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
+--     flag, any stages in between stages whose shaders which did not
+--     create a shader with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
+--     flag as part of the same
+--     'Vulkan.Extensions.VK_EXT_shader_object.createShadersEXT' call
+--     /must/ not have any 'Vulkan.Extensions.Handles.ShaderEXT' bound
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08878# All bound graphics
+--     shader objects /must/ have been created with identical or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-identically-defined identically defined>
+--     push constant ranges
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08879# All bound graphics
+--     shader objects /must/ have either been created with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag set, or with identical or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-identically-defined identically defined>
+--     arrays of descriptor set layouts
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-colorAttachmentCount-09372# If
+--     the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and a
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
+--     equal to @1@, a color attachment with a resolve mode of
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID',
+--     and a fragment shader is bound, it /must/ not declare the
+--     @DepthReplacing@ or @StencilRefReplacingEXT@ execution modes
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-pDynamicStates-08715# If the
+--     bound graphics pipeline state includes a fragment shader stage, was
+--     created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE'
+--     set in
+--     'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@,
+--     and the fragment shader declares the @EarlyFragmentTests@ execution
+--     mode and uses @OpDepthAttachmentReadEXT@, the @depthWriteEnable@
+--     parameter in the last call to
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthWriteEnable'
+--     /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-pDynamicStates-08716# If the
+--     bound graphics pipeline state includes a fragment shader stage, was
+--     created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_WRITE_MASK'
+--     set in
+--     'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@,
+--     and the fragment shader declares the @EarlyFragmentTests@ execution
+--     mode and uses @OpStencilAttachmentReadEXT@, the @writeMask@
+--     parameter in the last call to
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilWriteMask' /must/
+--     be @0@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-09116# If a shader object is
+--     bound to any graphics stage or the bound graphics pipeline was
+--     created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT',
+--     and the format of any color attachment is
+--     'Vulkan.Core10.Enums.Format.FORMAT_E5B9G9R9_UFLOAT_PACK32', the
+--     corresponding element of the @pColorWriteMasks@ parameter of
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
+--     /must/ either include all of
+--     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_R_BIT',
+--     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_G_BIT',
+--     and
+--     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_B_BIT',
+--     or none of them
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-maxFragmentDualSrcAttachments-09239#
+--     If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blending blending>
+--     is enabled for any attachment where either the source or destination
+--     blend factors for that attachment
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-dsb use the secondary color input>,
+--     the maximum value of @Location@ for any output attachment
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-staticuse statically used>
+--     in the @Fragment@ @Execution@ @Model@ executed by this command
+--     /must/ be less than
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFragmentDualSrcAttachments maxFragmentDualSrcAttachments>
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-09548# If the current render
+--     pass was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there is no shader object bound to any graphics stage, the value of
+--     each element of
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingAttachmentLocationInfo'::@pColorAttachmentLocations@
+--     in the bound pipeline /must/ match the value for the corresponding
+--     locations set currently in the current render pass instance
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-09549# If the current render
+--     pass was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     and there is no shader object bound to any graphics stage, the value
+--     of each element of
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pColorAttachmentInputIndices@
+--     in the bound pipeline /must/ match the value for the corresponding
+--     index set currently in the current render pass instance
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-10927# If the current render
+--     pass was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     and there is no shader object bound to any graphics stage, the value
+--     of
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pDepthInputAttachmentIndex@
+--     in the bound pipeline /must/ match the value set currently in the
+--     current render pass instance
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-10928# If the current render
+--     pass was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     and there is no shader object bound to any graphics stage, the value
+--     of
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pStencilInputAttachmentIndex@
+--     in the bound pipeline /must/ match the value set currently in the
+--     current render pass instance
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-09642# If the current render
+--     pass was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     with the
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT'
+--     flag, the bound graphics pipeline /must/ have been created with
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-09643# If the bound graphics
+--     pipeline was created with
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT',
+--     the current render pass /must/ have begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     with the
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT'
+--     flag
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-10677# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model>
+--     is enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tileShadingPerTileDraw tileShadingPerTileDraw>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-10772# If a shader object is
+--     bound to any graphics stage, /multiview/ functionality /must/ not be
+--     enabled in the current render pass
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-multiviewPerViewViewports-12262#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiviewPerViewViewports multiviewPerViewViewports>
+--     feature is enabled, then the index of the most significant bit in
+--     current render pass instance @viewMask@ /must/ be less than the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @viewportCount@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-multiviewPerViewViewports-12263#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiviewPerViewViewports multiviewPerViewViewports>
+--     feature is enabled, then the index of the most significant bit in
+--     current render pass instance @viewMask@ /must/ be less than the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @scissorCount@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-flags-11521# If current render
+--     pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@flags@
+--     which includes
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_FRAGMENT_REGION_BIT_EXT',
+--     and if
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-sampleshading sample shading>
+--     is enabled (explicitly or implicitly), then the minimum fraction for
+--     sample shading /must/ equal 0.0
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-11522# If the current render
+--     pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and contains a custom resolve, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, the graphics pipeline bound /must/ have been
+--     created with a
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-11523# If the current render
+--     pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and does not contain a custom resolve, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, the graphics pipeline bound /must/ not have
+--     been created with a
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-customResolve-11524# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, the graphics pipeline
+--     bound /must/ have been created with
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@
+--     as 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-customResolve-11525# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and contains a custom resolve, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not been recorded in the render pass instance, the graphics
+--     pipeline bound /must/ have been created with
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@
+--     as 'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-11861# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled and the current render pass instance was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and contains a custom resolve, the bound graphics pipeline /must/
+--     have been created with a
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@colorAttachmentCount@
+--     equal to
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-11862# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and the current render pass instance was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, 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 an @resolveImageView@ 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_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@
+--     used to create the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-11863# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and the current render pass instance was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, 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 an @resolveImageView@ equal to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have the
+--     corresponding element of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@
+--     used to create the bound pipeline equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-dynamicRenderingUnusedAttachments-11864#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled, the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, 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 an @resolveImageView@ 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_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@
+--     used to create the bound graphics pipeline, or the corresponding
+--     element of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@,
+--     if it exists, /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-11865# If the current render
+--     pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@
+--     used to create the bound graphics pipeline /must/ be equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-11866# If current render
+--     pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@
+--     used to create the 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->resolveImageView@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-dynamicRenderingUnusedAttachments-11867#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@
+--     used to create the bound graphics pipeline was not equal to the
+--     'Vulkan.Core10.Enums.Format.Format' used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@,
+--     the value of the format /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-11868# If the current render
+--     pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@
+--     used to create the bound graphics pipeline /must/ be equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-11869# If current render
+--     pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@
+--     used to create the 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->resolveImageView@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-dynamicRenderingUnusedAttachments-11870#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@
+--     used to create the bound graphics pipeline was not equal to the
+--     'Vulkan.Core10.Enums.Format.Format' used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@,
+--     the value of the format /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-colorAttachmentCount-11871# If
+--     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@ and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, then for each element
+--     of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
+--     array with a @resolveImageView@ not equal to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', the @resolveImageView@
+--     /must/ have been created with a sample count equal to the value of
+--     @rasterizationSamples@ for the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-pDepthAttachment-11872# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     @rasterizationSamples@ for the bound graphics pipeline /must/ be
+--     equal to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-pStencilAttachment-11873# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     @rasterizationSamples@ for the bound graphics pipeline /must/ be
+--     equal to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-customResolve-11529# If a shader
+--     object is bound to the fragment stage, the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     a fragment density map attachment is active, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been called, then the fragment shader object bound /must/ have
+--     been created with
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@
+--     as 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-customResolve-11530# If a shader
+--     object is bound to the fragment stage, the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and contains a custom resolve, a fragment density map attachment is
+--     active, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been called, then the fragment shader object bound
+--     /must/ have been created with
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@
+--     as 'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-flags-13361# If there are any
+--     shader objects bound that were created with @flags@ that includes
+--     the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     bit, then all bound shader objects /must/ have been created with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     bit
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-flags-13362# If there are any
+--     shader objects bound that were created with @flags@ that includes
+--     the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     bit, then the pipeline layout of the bound descriptor sets /must/
+--     have been created with
+--     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT'
+--     set
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-flags-13363# If there are any
+--     shader objects bound that were created with @flags@ that includes
+--     the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     bit, and any of the descriptor set layouts used to create the
+--     pipeline layout of the bound descriptor sets were created with any
+--     binding’s
+--     'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutBinding'::@stageFlags@
+--     set with
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT',
+--     then there /must/ be no binding with
+--     'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutBinding'::@stageFlags@
+--     set with
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-flags-13364# If there are any
+--     shader objects bound that were created with @flags@ that includes
+--     both the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     and
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
+--     bits, the pipeline layout of the bound descriptor sets /must/ have
+--     been created with
+--     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_NO_TASK_SHADER_BIT_KHR'
+--     set
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-flags-13365# If there are any
+--     shader objects bound that were created with @flags@ that includes
+--     both the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     and
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
+--     bits, there /must/ be no shader object bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--     stage
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-stage-06480# The bound graphics
+--     pipeline /must/ not have been created with the
+--     'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo'::@stage@
+--     member of any element of
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'::@pStages@
+--     set to
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-pStages-10680# If there is no
+--     bound graphics pipeline,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     not have last bound the @pStages@ element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
+--     with a valid shader object other than
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07074#
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-transform-feedback Transform Feedback Queries>
+--     /must/ not be active
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-07075#
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-primitives-generated Primitives Generated Queries>
+--     /must/ not be active
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-pipelineStatistics-07076# The
+--     @pipelineStatistics@ member used to create any active
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-pipestats Pipeline Statistics Query>
+--     /must/ not contain
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT',
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT',
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT',
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT',
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT',
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT',
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT',
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT',
+--     or
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08694# If there is no bound
+--     graphics pipeline, and both the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
+--     features are enabled, and a valid
+--     'Vulkan.Extensions.Handles.ShaderEXT' is bound the to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--     stage, and that 'Vulkan.Extensions.Handles.ShaderEXT' was created
+--     without the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
+--     flag, a valid 'Vulkan.Extensions.Handles.ShaderEXT' /must/ be bound
+--     to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--     stage
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08695# If there is no bound
+--     graphics pipeline, and both the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
+--     features are enabled, and a valid
+--     'Vulkan.Extensions.Handles.ShaderEXT' is bound the to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--     stage, and that 'Vulkan.Extensions.Handles.ShaderEXT' was created
+--     with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
+--     flag, there /must/ be no 'Vulkan.Extensions.Handles.ShaderEXT' bound
+--     to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--     stage
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-buffer-02708# If @buffer@ is
+--     non-sparse then it /must/ be bound completely and contiguously to a
+--     single 'Vulkan.Core10.Handles.DeviceMemory' object
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-buffer-02709# @buffer@ /must/
+--     have been created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-offset-02710# @offset@ /must/ be
+--     a multiple of @4@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-02711#
+--     @commandBuffer@ /must/ not be a protected command buffer
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-drawCount-02718# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiDrawIndirect multiDrawIndirect>
+--     feature is not enabled, @drawCount@ /must/ be @0@ or @1@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-drawCount-02719# @drawCount@
+--     /must/ be less than or equal to
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxDrawIndirectCount@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-drawCount-02146# If @drawCount@
+--     is greater than @1@, @stride@ /must/ be a multiple of @4@ and /must/
+--     be greater than or equal to
+--     @sizeof@('DrawMeshTasksIndirectCommandNV')
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-drawCount-02156# If @drawCount@
+--     is equal to @1@, (@offset@ +
+--     @sizeof@('DrawMeshTasksIndirectCommandNV')) /must/ be less than or
+--     equal to the size of @buffer@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-drawCount-02157# If @drawCount@
+--     is greater than @1@, (@stride@ × (@drawCount@ - 1) + @offset@ +
+--     @sizeof@('DrawMeshTasksIndirectCommandNV')) /must/ be less than or
+--     equal to the size of @buffer@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-MeshNV-07081# The current
+--     pipeline bound to
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
+--     /must/ contain a shader stage using the @MeshNV@ @Execution@ @Model@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-buffer-parameter# @buffer@ /must/
+--     be a valid 'Vulkan.Core10.Handles.Buffer' handle
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-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-vkCmdDrawMeshTasksIndirectNV-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-renderpass# This command /must/
+--     only be called inside of a render pass instance
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-suspended# This command /must/
+--     not be called between suspended render pass instances
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-videocoding# This command /must/
+--     only be called outside of a video coding scope
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-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#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Inside                                                                                                                 | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdDrawMeshTasksIndirectNV is affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_mesh_shader VK_NV_mesh_shader>,
+-- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize'
+cmdDrawMeshTasksIndirectNV :: 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 ()
+cmdDrawMeshTasksIndirectNV commandBuffer
+                             buffer
+                             offset
+                             drawCount
+                             stride = liftIO $ do
+  let vkCmdDrawMeshTasksIndirectNVPtr = pVkCmdDrawMeshTasksIndirectNV (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  unless (vkCmdDrawMeshTasksIndirectNVPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdDrawMeshTasksIndirectNV is null" Nothing Nothing
+  let vkCmdDrawMeshTasksIndirectNV' = mkVkCmdDrawMeshTasksIndirectNV vkCmdDrawMeshTasksIndirectNVPtr
+  traceAroundEvent "vkCmdDrawMeshTasksIndirectNV" (vkCmdDrawMeshTasksIndirectNV'
+                                                     (commandBufferHandle (commandBuffer))
+                                                     (buffer)
+                                                     (offset)
+                                                     (drawCount)
+                                                     (stride))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdDrawMeshTasksIndirectCountNV
+  :: FunPtr (Ptr CommandBuffer_T -> Buffer -> DeviceSize -> Buffer -> DeviceSize -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> DeviceSize -> Buffer -> DeviceSize -> Word32 -> Word32 -> IO ()
+
+-- | vkCmdDrawMeshTasksIndirectCountNV - Perform an indirect mesh tasks draw
+-- with the draw count sourced from a buffer
+--
+-- = Description
+--
+-- 'cmdDrawMeshTasksIndirectCountNV' behaves similarly to
+-- 'cmdDrawMeshTasksIndirectNV' except that the draw count is read by the
+-- device from a buffer during execution. The command will read an unsigned
+-- 32-bit integer from @countBuffer@ located at @countBufferOffset@ and use
+-- this as the draw count.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-magFilter-04553# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
+--     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR',
+--     @reductionMode@ equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
+--     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-vkCmdDrawMeshTasksIndirectCountNV-magFilter-09598# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
+--     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR' and
+--     @reductionMode@ equal to either
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
+--     or
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
+--     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_MINMAX_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-mipmapMode-04770# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
+--     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR',
+--     @reductionMode@ equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
+--     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-vkCmdDrawMeshTasksIndirectCountNV-mipmapMode-09599# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
+--     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'
+--     and @reductionMode@ equal to either
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
+--     or
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
+--     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_MINMAX_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-unnormalizedCoordinates-09635#
+--     If a 'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the image view’s @levelCount@ and @layerCount@ /must/ be 1
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08609# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the image view’s @viewType@ /must/ be
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D' or
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08610# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the sampler /must/ not be used with any of the SPIR-V
+--     @OpImageSample*@ or @OpImageSparseSample*@ instructions with
+--     @ImplicitLod@, @Dref@ or @Proj@ in their name
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08611# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the sampler /must/ not be used with any of the SPIR-V
+--     @OpImageSample*@ or @OpImageSparseSample*@ instructions that
+--     includes a LOD bias or any offset values
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-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-vkCmdDrawMeshTasksIndirectCountNV-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-vkCmdDrawMeshTasksIndirectCountNV-None-07888# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'
+--     descriptor is accessed using atomic operations as a result of this
+--     command, then the storage texel buffer’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-buffer-view-format-features format features>
+--     /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02692# If a
+--     'Vulkan.Core10.Handles.ImageView' is sampled with
+--     'Vulkan.Core10.Enums.Filter.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.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02693# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_filter_cubic VK_EXT_filter_cubic>
+--     extension is not enabled and any 'Vulkan.Core10.Handles.ImageView'
+--     is sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as a
+--     result of this command, it /must/ not have a
+--     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' of
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE', or
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-filterCubic-02694# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with
+--     'Vulkan.Core10.Enums.Filter.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-vkCmdDrawMeshTasksIndirectCountNV-filterCubicMinmax-02695# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with
+--     'Vulkan.Core10.Enums.Filter.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-vkCmdDrawMeshTasksIndirectCountNV-cubicRangeClamp-09212# If
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-cubicRangeClamp cubicRangeClamp>
+--     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
+--     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
+--     a result of this command /must/ not have a
+--     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
+--     equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-reductionMode-09213# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with a
+--     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
+--     equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
+--     as a result of this command /must/ sample with
+--     'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-selectableCubicWeights-09214#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-selectableCubicWeights selectableCubicWeights>
+--     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
+--     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
+--     a result of this command /must/ have
+--     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.SamplerCubicWeightsCreateInfoQCOM'::@cubicWeights@
+--     equal to
+--     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-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-vkCmdDrawMeshTasksIndirectCountNV-OpTypeImage-07027# For any
+--     'Vulkan.Core10.Handles.ImageView' being written as a storage image
+--     where the image format field of the @OpTypeImage@ is @Unknown@, the
+--     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_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-OpTypeImage-07028# For any
+--     'Vulkan.Core10.Handles.ImageView' being read as a storage image
+--     where the image format field of the @OpTypeImage@ is @Unknown@, the
+--     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_STORAGE_READ_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-OpTypeImage-07029# For any
+--     'Vulkan.Core10.Handles.BufferView' being written as a storage texel
+--     buffer where the image format field of the @OpTypeImage@ is
+--     @Unknown@, the view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
+--     /must/ contain
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-OpTypeImage-07030# Any
+--     'Vulkan.Core10.Handles.BufferView' being read as a storage texel
+--     buffer where the image format field of the @OpTypeImage@ is
+--     @Unknown@ then the view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
+--     /must/ contain
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08600# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
+--     was created with a pipeline layout and statically uses a set /n/, a
+--     descriptor set /must/ have been bound to /n/ at the same pipeline
+--     bind point, with layouts compatible for set /n/ with the layout(s)
+--     used to create the shader, as described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptors-compatibility ???>
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08601# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
+--     was created with a pipeline layout or specified push constant ranges
+--     and statically uses a push constant value, that value /must/ have
+--     been set for the same pipeline bind point, with push constant ranges
+--     that are
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptors-compatibility compatible>
+--     with the push constant range used to create the shader
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-10068# For each array
+--     of resources that is used by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
+--     the indices used to access members of the array /must/ be less than
+--     the descriptor count for the identified binding in the descriptor
+--     sets used by this command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08114# Descriptors in
+--     each bound descriptor set, specified via
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
+--     be valid if they are accessed as described by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
+--     by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
+--     point used by this command and the bound
+--     'Vulkan.Core10.Handles.Pipeline' was not created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-imageLayout-00344# If an
+--     image descriptor is accessed by a shader, the
+--     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' /must/ match the
+--     subresource accessible from the 'Vulkan.Core10.Handles.ImageView' 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>
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08115# If the
+--     descriptors used by the 'Vulkan.Core10.Handles.Pipeline' bound to
+--     the pipeline bind point were specified via
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', the
+--     bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     without
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08116# Descriptors in
+--     bound descriptor buffers, specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     /must/ be valid if they are dynamically used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
+--     was created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08604# Descriptors in
+--     bound descriptor buffers, specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     /must/ be valid if they are dynamically used by any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     to the pipeline bind point used by this command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08117# If the
+--     descriptors used by the 'Vulkan.Core10.Handles.Pipeline' bound to
+--     the pipeline bind point were specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08119# If a descriptor
+--     is dynamically used with a 'Vulkan.Core10.Handles.Pipeline' created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     the descriptor memory /must/ be resident
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08605# If a descriptor
+--     is dynamically used with a 'Vulkan.Extensions.Handles.ShaderEXT'
+--     created with a 'Vulkan.Core10.Handles.DescriptorSetLayout' that was
+--     created with
+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     the descriptor memory /must/ be resident
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08606# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject>
+--     feature is not enabled, a valid pipeline /must/ be bound to the
+--     pipeline bind point used by this command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08608# If a pipeline is
+--     bound to the pipeline bind point used by this command, there /must/
+--     not have been any calls to dynamic state setting commands for any
+--     state specified statically in the 'Vulkan.Core10.Handles.Pipeline'
+--     object bound to the pipeline bind point used by this command, since
+--     that pipeline was bound
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-uniformBuffers-06935# If any
+--     stage of the 'Vulkan.Core10.Handles.Pipeline' object bound to the
+--     pipeline bind point used by this command accesses a uniform buffer,
+--     and that stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @uniformBuffers@, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /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-vkCmdDrawMeshTasksIndirectCountNV-None-08612# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, and any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     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-vkCmdDrawMeshTasksIndirectCountNV-storageBuffers-06936# If any
+--     stage of the 'Vulkan.Core10.Handles.Pipeline' object bound to the
+--     pipeline bind point used by this command accesses a storage buffer,
+--     and that stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @storageBuffers@, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /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-vkCmdDrawMeshTasksIndirectCountNV-None-08613# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, and any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     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-vkCmdDrawMeshTasksIndirectCountNV-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
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shaders>
+--     /must/ not be a protected resource
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-viewType-07752# If a
+--     'Vulkan.Core10.Handles.ImageView' is accessed as a result of this
+--     command, then the image view’s @viewType@ /must/ match the @Dim@
+--     operand of the @OpTypeImage@ as described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-image-dimensions ???>
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-format-07753# If a
+--     'Vulkan.Core10.Handles.ImageView' or
+--     'Vulkan.Core10.Handles.BufferView' is accessed as a result of this
+--     command, then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-numericformat numeric type>
+--     of the view’s @format@ and the @Sampled@ @Type@ operand of the
+--     @OpTypeImage@ /must/ match
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-OpImageWrite-08795# If a
+--     'Vulkan.Core10.Handles.ImageView' created with a format other than
+--     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM' 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-vkCmdDrawMeshTasksIndirectCountNV-OpImageWrite-08796# If a
+--     'Vulkan.Core10.Handles.ImageView' created with the format
+--     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM' is accessed using
+--     @OpImageWrite@ as a result of this command, then the @Type@ of the
+--     @Texel@ operand of that instruction /must/ have four components
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-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-vkCmdDrawMeshTasksIndirectCountNV-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-vkCmdDrawMeshTasksIndirectCountNV-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-vkCmdDrawMeshTasksIndirectCountNV-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-vkCmdDrawMeshTasksIndirectCountNV-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-vkCmdDrawMeshTasksIndirectCountNV-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-vkCmdDrawMeshTasksIndirectCountNV-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-vkCmdDrawMeshTasksIndirectCountNV-OpImageSampleWeightedQCOM-06971#
+--     If @OpImageSampleWeightedQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-OpImageSampleWeightedQCOM-06972#
+--     If @OpImageSampleWeightedQCOM@ uses a
+--     'Vulkan.Core10.Handles.ImageView' as a sample weight image 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-OpImageBoxFilterQCOM-06973#
+--     If @OpImageBoxFilterQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-OpImageBlockMatchSSDQCOM-06974#
+--     If @OpImageBlockMatchSSDQCOM@ is used to read from an
+--     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
+--     or
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_SXD_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-OpImageBlockMatchSADQCOM-12420#
+--     If @OpImageBlockMatchSADQCOM@ is used to read from an
+--     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
+--     or
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_SXD_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-OpImageBlockMatchSADQCOM-06976#
+--     If @OpImageBlockMatchSADQCOM@ or OpImageBlockMatchSSDQCOM is used to
+--     read from a reference image as result of this command, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-blockMatchExtendedClampToEdge blockMatchExtendedClampToEdge>
+--     feature is not enabled or the /input/ sampler was not created with
+--     both @addressModeU@ and @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--     then the specified reference coordinates /must/ not fail
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-OpImageSampleWeightedQCOM-06977#
+--     If @OpImageSampleWeightedQCOM@, @OpImageBoxFilterQCOM@,
+--     @OpImageBlockMatchWindowSSDQCOM@, @OpImageBlockMatchWindowSADQCOM@,
+--     @OpImageBlockMatchGatherSSDQCOM@, @OpImageBlockMatchGatherSADQCOM@,
+--     @OpImageBlockMatchSSDQCOM@, or @OpImageBlockMatchSADQCOM@ uses a
+--     'Vulkan.Core10.Handles.Sampler' as a result of this command, then
+--     the sampler /must/ have been created with
+--     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-OpImageSampleWeightedQCOM-06978#
+--     If any command other than @OpImageSampleWeightedQCOM@,
+--     @OpImageBoxFilterQCOM@, @OpImageBlockMatchWindowSSDQCOM@,
+--     @OpImageBlockMatchWindowSADQCOM@, @OpImageBlockMatchGatherSSDQCOM@,
+--     @OpImageBlockMatchGatherSADQCOM@, @OpImageBlockMatchSSDQCOM@, or
+--     @OpImageBlockMatchSADQCOM@ uses a 'Vulkan.Core10.Handles.Sampler' as
+--     a result of this command, then the sampler /must/ not have been
+--     created with
+--     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-OpImageBlockMatchWindow-09215#
+--     If a @OpImageBlockMatchWindow*QCOM@ or
+--     @OpImageBlockMatchGather*QCOM@ instruction is used to read from an
+--     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-OpImageBlockMatchWindow-09216#
+--     If a @OpImageBlockMatchWindow*QCOM@ or
+--     @OpImageBlockMatchGather*QCOM@ instruction is used to read from an
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the image view’s format /must/ be a single-component format
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-OpImageBlockMatchWindow-09217#
+--     If a @OpImageBlockMatchWindow*QCOM@ or
+--     @OpImageBlockMatchGather*QCOM@ read from a reference image as result
+--     of this command, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-blockMatchExtendedClampToEdge blockMatchExtendedClampToEdge>
+--     feature is not enabled or the /input/ sampler was not created with
+--     both @addressModeU@ and @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--     then the specified reference coordinates /must/ not fail
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-OpImageBlockMatchWindow-12421#
+--     If a @OpImageBlockMatchWindow*QCOM@ or
+--     @OpImageBlockMatchGather*QCOM@ instruction uses a
+--     'Vulkan.Core10.Handles.Sampler' as a result of this command, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-blockMatchExtendedClampToEdge blockMatchExtendedClampToEdge>
+--     is not enabled, the /input/ sampler /must/ not have been created
+--     with either @addressModeU@ or @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-addressModeU-12422# If a
+--     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     instruction uses a 'Vulkan.Core10.Handles.Sampler' as a result of
+--     this command, and the /input/ sampler was created with either
+--     @addressModeU@ or @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE',
+--     then the sampler /must/ have been created with both @addressModeU@
+--     and @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07288# Any shader
+--     invocation executed by this command /must/
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-termination terminate>
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09600# If a descriptor
+--     with type equal to any of
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',
+--     or
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'
+--     is accessed as a result of this command, all image subresources
+--     identified by that descriptor /must/ be in the image layout
+--     identified when the descriptor was written
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-micromap-11636# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command through an
+--     @OpRayQueryProceedKHR@ operation , the @VK_EXT_opacity_micromap@
+--     extension is not enabled, and the acceleration structure is built
+--     using geometry with a
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapKHR'
+--     structure included in its @pNext@ chain, the shader /must/ have
+--     specified a @OpacityMicromapIdKHR@ execution mode with its
+--     specialization constant operand equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-micromap-11637# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command and the
+--     acceleration structure was constructed through deserialization, all
+--     micromap arrays referenced by the acceleration structure that were
+--     not replaced by an acceleration structure update command /must/ have
+--     been deserialized using the serialized data of the corresponding
+--     micromaps used to originally build the acceleration structure prior
+--     to the execution of this command on the device
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-micromap-11638# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command and the
+--     acceleration structure is built using geometry with an @indexBuffer@
+--     containing both
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.OpacityMicromapSpecialIndexKHR'
+--     values and indices into an associated micromap array, any
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command /must/ not have been created with @flags@ that
+--     includes
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_KHR'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-micromap-11639# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command and the
+--     acceleration structure is built using geometry with an @indexBuffer@
+--     containing both
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.OpacityMicromapSpecialIndexKHR'
+--     values and indices into an associated micromap array, any
+--     'Vulkan.Extensions.Handles.ShaderEXT' that accessed the descriptor
+--     /must/ not have been created with @flags@ that includes
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-10746# The
+--     'Vulkan.Core10.Handles.DeviceMemory' object allocated from a
+--     'Vulkan.Core10.DeviceInitialization.MemoryHeap' with the
+--     'Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_TILE_MEMORY_BIT_QCOM'
+--     property that is bound to a resource accessed as a result of this
+--     command /must/ be the active
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-bind-tile-memory bound tile memory object>
+--     in @commandBuffer@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-10678# If this command
+--     is recorded inside a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-tile-shading tile shading render pass>
+--     instance, the stages corresponding to the pipeline bind point used
+--     by this command /must/ only include
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT',
+--     and\/or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-10679# If this command
+--     is recorded where
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model>
+--     is enabled, there /must/ be no access to any image while the image
+--     was be transitioned to the
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
+--     layout
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-pDescription-09900# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the
+--     underlying 'Vulkan.Extensions.Handles.TensorARM' object /must/ have
+--     been created with the
+--     'Vulkan.Extensions.VK_ARM_tensors.TENSOR_USAGE_SHADER_BIT_ARM' usage
+--     flag set
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-dimensionCount-09905# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the @Rank@
+--     of the @OpTypeTensorARM@ of the tensor resource variable /must/ be
+--     equal to the @dimensionCount@ provided via
+--     'Vulkan.Extensions.VK_ARM_tensors.TensorCreateInfoARM'::@pDescription@
+--     when creating the underlying 'Vulkan.Extensions.Handles.TensorARM'
+--     object
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-OpTypeTensorARM-09906# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the element
+--     type of the @OpTypeTensorARM@ of the tensor resource variable /must/
+--     be
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-tensor-formats compatible>
+--     with the 'Vulkan.Core10.Enums.Format.Format' of the
+--     'Vulkan.Extensions.Handles.TensorViewARM' used for the access
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-11297# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses a @OpTypeStruct@ decorated with @Block@ or
+--     @BufferBlock@ using that mapping, the calculated offset for the
+--     resource heap /must/ be a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-bufferDescriptorAlignment bufferDescriptorAlignment>
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-11298# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses an @OpTypeImage@ or @OpTypeSampledImage@ using
+--     that mapping, the calculated offset for the resource heap /must/ be
+--     a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-imageDescriptorAlignment imageDescriptorAlignment>
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-11299# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses an @OpTypeSampler@ or @OpTypeSampledImage@
+--     using that mapping, the calculated offset for the sampler heap
+--     /must/ be a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-samplerDescriptorAlignment samplerDescriptorAlignment>
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-11397# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses an @OpTypeTensorARM@ using that mapping, the
+--     calculated offset for the resource heap /must/ be a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-tensorDescriptorAlignment tensorDescriptorAlignment>
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-11300# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a
+--     multiple of 4
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-11301# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' backed by physical
+--     memory at every offset specified by each mapping
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-11302# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-11304# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a
+--     multiple of 8
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-11305# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' backed by physical
+--     memory at every offset specified by each mapping
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-11306# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address pointed to by the address in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-11308# For each
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps descriptor heap>
+--     that is statically used by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
+--     either directly or via a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>,
+--     a valid descriptor heap /must/ be bound
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-11309# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     was created as a 'Vulkan.Extensions.Handles.ShaderEXT' with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag or as part of a pipeline with the
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag, execution of this command /must/ not result in any descriptor
+--     read accessing data outside of the user range of the respective heap
+--     bound by @vkCmdBind*HeapEXT@ commands
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-11372# If any stage of
+--     the 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline
+--     bind point used by this command accesses a uniform buffer or uniform
+--     texel buffer through a descriptor in the bound resource heap, that
+--     stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @uniformBuffers@, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /must/ not access values outside
+--     of the range of the descriptor specified via
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+--     when the descriptor was written
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-11373# If any stage of
+--     the 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline
+--     bind point used by this command accesses a storage buffer or storage
+--     texel buffer through a descriptor in the bound resource heap, that
+--     stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @storageBuffers@, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /must/ not access values outside
+--     of the range of the descriptor specified by
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+--     when the descriptor was written
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-11374# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, and any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     to the pipeline bind point used by this command accesses a uniform
+--     buffer, uniform texel buffer, storage buffer, or storage texel
+--     buffer, that shader /must/ not access values outside of the range of
+--     the buffer as specified by
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+--     when the descriptor was written
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-pBindInfo-11375# If any
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     uses an embedded sampler via a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>,
+--     the value of @pBindInfo->reservedRangeSize@ set for
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.cmdBindSamplerHeapEXT'
+--     /must/ be greater than or equal to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minSamplerHeapReservedRangeWithEmbedded minSamplerHeapReservedRangeWithEmbedded>
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-11376# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     was created as a 'Vulkan.Extensions.Handles.ShaderEXT' with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag or as part of a pipeline with the
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag, and that shader statically uses a push constant value, that
+--     value /must/ have been set by
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.cmdPushDataEXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-11398# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_DATA_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_DATA_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_RESOURCE_HEAP_DATA_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the access
+--     /must/ not be
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-execution-memory-access-bounds out of bounds>
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-11437# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the buffer from
+--     which the address in push data was queried /must/ have been created
+--     with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-11438# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a uniform buffer using that mapping, the
+--     address that the uniform buffer is mapped to /must/ have been
+--     queried from a buffer created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-11441# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a uniform buffer using that mapping, the
+--     address that the uniform buffer is mapped to /must/ be aligned to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minUniformBufferOffsetAlignment minUniformBufferOffsetAlignment>
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-11439# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a storage buffer using that mapping, the
+--     address that the storage buffer is mapped to /must/ have been
+--     queried from a buffer created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_STORAGE_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-11442# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a storage buffer using that mapping, the
+--     address that the storage buffer is mapped to /must/ be aligned to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minStorageBufferOffsetAlignment minStorageBufferOffsetAlignment>
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-11485# If a pipeline is
+--     bound to the pipeline bind point used by this command, or shader is
+--     bound to a shader stage used by this command, and it was created
+--     with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses an acceleration structure using that mapping,
+--     the address that the acceleration structure is mapped to /must/ be
+--     an acceleration structure address retrieved from a
+--     'Vulkan.Extensions.Handles.AccelerationStructureKHR' object via
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.getAccelerationStructureDeviceAddressKHR'
+--     or handle retrieved from a
+--     'Vulkan.Extensions.Handles.AccelerationStructureNV' object via
+--     'Vulkan.Extensions.VK_NV_ray_tracing.getAccelerationStructureHandleNV'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-index-11450# If a shader
+--     uses a sampler descriptor to sample an image as a result of this
+--     command, and that sampler descriptor uses a custom border color with
+--     an index defined by
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.SamplerCustomBorderColorIndexCreateInfoEXT',
+--     the value of
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.SamplerCustomBorderColorIndexCreateInfoEXT'::@index@
+--     /must/ have been registered before this command was recorded, and
+--     still be registered during the sampling operation, with an
+--     identically defined color
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-protectedNoFault-11455# If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, a pipeline is bound to the pipeline bind point
+--     used by this command, or a shader is bound to a shader stage used by
+--     this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     the address that the resource is mapped to /must/ have been queried
+--     from a buffer created without the
+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT'
+--     create flag set
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-protectedNoFault-11456# If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, a pipeline is bound to the pipeline bind point
+--     used by this command, or a shader is bound to a shader stage used by
+--     this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     the address of the indirect memory /must/ have been queried from a
+--     buffer created without the
+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT'
+--     create flag set
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-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.GraphicsPipeline.GraphicsPipelineCreateInfo'
+--     structure specified when creating the
+--     'Vulkan.Core10.Handles.Pipeline' bound to
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-subpass-02685# The subpass
+--     index of the current render pass /must/ be equal to the @subpass@
+--     member of the
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'
+--     structure specified when creating the
+--     'Vulkan.Core10.Handles.Pipeline' bound to
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-OpTypeImage-07468# If any
+--     shader executed by this pipeline accesses an @OpTypeImage@ variable
+--     with a @Dim@ operand of @SubpassData@, it /must/ be decorated with
+--     an @InputAttachmentIndex@ that corresponds to a valid input
+--     attachment in the current subpass
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07469# Input attachment
+--     views accessed in a subpass /must/ be created with the same
+--     'Vulkan.Core10.Enums.Format.Format' as the corresponding subpass
+--     definition, and be created with a 'Vulkan.Core10.Handles.ImageView'
+--     that is compatible with the attachment referenced by the subpass\'
+--     @pInputAttachments@[@InputAttachmentIndex@] in the bound
+--     'Vulkan.Core10.Handles.Framebuffer' as specified by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#compatibility-inputattachment Fragment Input Attachment Compatibility>
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-pDepthInputAttachmentIndex-09595#
+--     Input attachment views accessed in a dynamic render pass with a
+--     @InputAttachmentIndex@ referenced by
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo',
+--     or no @InputAttachmentIndex@ if
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pDepthInputAttachmentIndex@
+--     or
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pStencilInputAttachmentIndex@
+--     are @NULL@, /must/ be created with a
+--     'Vulkan.Core10.Handles.ImageView' that is compatible with the
+--     corresponding color, depth, or stencil attachment in
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-pDepthInputAttachmentIndex-09596#
+--     Input attachment views accessed in a dynamic render pass via a
+--     shader object /must/ have an @InputAttachmentIndex@ if both
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pDepthInputAttachmentIndex@
+--     and
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pStencilInputAttachmentIndex@
+--     are non-@NULL@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-InputAttachmentIndex-09597#
+--     If an input attachment view accessed in a dynamic render pass via a
+--     shader object has an @InputAttachmentIndex@, the
+--     @InputAttachmentIndex@ /must/ match an index in
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-06537# Memory backing
+--     image subresources used as attachments in the current render pass
+--     /must/ not be written in any way other than as an attachment by this
+--     command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-10795# If a color
+--     attachment is written by any prior command in this subpass or by the
+--     load, store, or resolve operations for this subpass, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT' on
+--     that attachment, it /must/ not be accessed in any way other than as
+--     an attachment by this command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-10796# If a depth
+--     attachment is written by any prior command in this subpass or by the
+--     load, store, or resolve operations for this subpass, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' on
+--     that attachment, it /must/ not be accessed in any way other than as
+--     an attachment by this command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-10797# If a stencil
+--     attachment is written by any prior command in this subpass or by the
+--     load, store, or resolve operations for this subpass, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
+--     on that attachment, it /must/ not be accessed in any way other than
+--     as an attachment by this command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-12338# If a color
+--     attachment is read in this command in any way other than as an
+--     attachment, or has been read by any prior command in this subpass as
+--     a non-attachment, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT' on
+--     that attachment, the color attachment /must/ not be written to by
+--     this command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-12339# If a depth
+--     attachment is read in this command in any way other than as an
+--     attachment, or has been read by any prior command in this subpass as
+--     a non-attachment, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' on
+--     that attachment, the depth attachment /must/ not be written to by
+--     this command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-12340# If a stencil
+--     attachment is read in this command in any way other than as an
+--     attachment, or has been read by any prior command in this subpass as
+--     a non-attachment, and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop feedback loop>
+--     is not enabled for
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
+--     on that attachment, the stencil attachment /must/ not be written to
+--     by this command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09003# If an attachment
+--     is written by any prior command in this subpass or by the load,
+--     store, or resolve operations for this subpass, it /must/ not be
+--     accessed in any way other than as an attachment, storage image, or
+--     sampled image by this command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-06886# If the current
+--     render pass instance uses a depth\/stencil attachment with a
+--     read-only layout for the depth aspect,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-depth-write depth writes>
+--     /must/ be disabled
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-06887# If the current
+--     render pass instance uses a depth\/stencil attachment with a
+--     read-only layout for the stencil aspect, both front and back
+--     @writeMask@ are not zero, and stencil test is enabled,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-stencil all stencil ops>
+--     /must/ be 'Vulkan.Core10.Enums.StencilOp.STENCIL_OP_KEEP'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07831# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT' dynamic
+--     state enabled then
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetViewport' /must/ have
+--     been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07832# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR' dynamic
+--     state enabled then
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetScissor' /must/ have been
+--     called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08617# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_WIDTH' dynamic
+--     state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line topology class, then
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth' /must/ have
+--     been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07834# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS' dynamic
+--     state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @depthBiasEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBias' or
+--     'Vulkan.Extensions.VK_EXT_depth_bias_control.cmdSetDepthBias2EXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07835# If a shader
+--     object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_BLEND_CONSTANTS'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and an active color
+--     attachment
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @blendEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE' with a
+--     blend equations where any
+--     'Vulkan.Core10.Enums.BlendFactor.BlendFactor' member is
+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_COLOR',
+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR',
+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_CONSTANT_ALPHA', or
+--     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA',
+--     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetBlendConstants'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07836# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @depthBoundsTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBounds' /must/
+--     have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07837# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_COMPARE_MASK'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilCompareMask'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07838# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_WRITE_MASK'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilWriteMask'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07839# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_REFERENCE'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of and @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilReference'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-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-vkCmdDrawMeshTasksIndirectCountNV-sampleLocationsEnable-02689#
+--     If the bound graphics pipeline was created with
+--     'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@
+--     set to 'Vulkan.Core10.FundamentalTypes.TRUE', then the active depth
+--     attachment /must/ have been created with the
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'
+--     bit set
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07634# If the
+--     @VK_EXT_sample_locations@ extension is enabled, a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-06666# If the
+--     @VK_EXT_sample_locations@ extension is enabled, a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07840# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CULL_MODE' dynamic
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetCullMode'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07841# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRONT_FACE' dynamic
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetFrontFace'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07843# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_TEST_ENABLE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE',
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthTestEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07844# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @depthTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthWriteEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07845# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_COMPARE_OP'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @depthTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthCompareOp'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07846# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthBounds depthBounds>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthBoundsTestEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07847# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_TEST_ENABLE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilTestEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07848# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_OP' dynamic
+--     state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @stencilTestEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilOp'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-03417# If a
+--     shader object is bound to any graphics stage or a graphics pipeline
+--     is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
+--     dynamic state enabled, and the state is not inherited, then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-scissorCount-03418# If a
+--     shader object is bound to any graphics stage or a graphics pipeline
+--     is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
+--     dynamic state enabled, and the state is not inherited, then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-03419# If a
+--     shader object is bound to any graphics stage or a graphics pipeline
+--     is bound which 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, and the state is not inherited, then 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-vkCmdDrawMeshTasksIndirectCountNV-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-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-04138# If the
+--     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which 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 state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @viewportWScalingEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.cmdSetViewportWScalingNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08636# If the
+--     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which 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 state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @viewportWScalingEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', 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-vkCmdDrawMeshTasksIndirectCountNV-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-vkCmdDrawMeshTasksIndirectCountNV-shadingRateImage-09233# If
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV'
+--     and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetCoarseSampleOrderNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-shadingRateImage-09234# If
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which 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 state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @shadingRateImageEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetViewportShadingRatePaletteNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08637# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which 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 state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @shadingRateImageEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', 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-vkCmdDrawMeshTasksIndirectCountNV-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
+--     'Vulkan.Core10.GraphicsPipeline.PipelineViewportStateCreateInfo',
+--     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-vkCmdDrawMeshTasksIndirectCountNV-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
+--     'Vulkan.Core10.GraphicsPipeline.PipelineViewportStateCreateInfo',
+--     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-vkCmdDrawMeshTasksIndirectCountNV-None-07878# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-exclusiveScissor exclusiveScissor>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07879# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-exclusiveScissor exclusiveScissor>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV'
+--     dynamic state enabled, and the most recent call to
+--     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorEnableNV'
+--     in the current command buffer set any element of
+--     @pExclusiveScissorEnables@ to 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then
+--     'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-04876# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which 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 and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-04877# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnable'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-logicOp-04878# If a shader
+--     object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @logicOpEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetLogicOpEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-primitiveFragmentShadingRateWithMultipleViewports-04552#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
+--     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-vkCmdDrawMeshTasksIndirectCountNV-primitiveFragmentShadingRateWithMultipleViewports-08642#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
+--     limit is not supported, and any shader object bound to a graphics
+--     stage writes 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-vkCmdDrawMeshTasksIndirectCountNV-blendEnable-04727# If a
+--     shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then for each color
+--     attachment, 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 corresponding
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @blendEnable@ /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08644# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and none of the following is
+--     enabled:
+--
+--     -   the @VK_AMD_mixed_attachment_samples@ extension
+--
+--     -   the @VK_NV_framebuffer_mixed_samples@ extension
+--
+--     -   the
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
+--         feature
+--
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizationSamples@ /must/ be the same as the current color
+--     and\/or depth\/stencil attachments
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08876# If a shader
+--     object is bound to any graphics stage, the current render pass
+--     instance /must/ have been begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-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-vkCmdDrawMeshTasksIndirectCountNV-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-vkCmdDrawMeshTasksIndirectCountNV-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-vkCmdDrawMeshTasksIndirectCountNV-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-vkCmdDrawMeshTasksIndirectCountNV-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-vkCmdDrawMeshTasksIndirectCountNV-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-vkCmdDrawMeshTasksIndirectCountNV-viewMask-06178# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the 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-vkCmdDrawMeshTasksIndirectCountNV-colorAttachmentCount-06179#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled and the current render pass instance was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the 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-vkCmdDrawMeshTasksIndirectCountNV-dynamicRenderingUnusedAttachments-08910#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and 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 an @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 bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-dynamicRenderingUnusedAttachments-08912#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and 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 an @imageView@ equal to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have the
+--     corresponding element of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
+--     used to create the bound pipeline equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-dynamicRenderingUnusedAttachments-08911#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled, and 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 an @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 bound graphics pipeline, or the corresponding
+--     element of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@,
+--     if it exists, /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-colorAttachmentCount-09362#
+--     If 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@
+--     equal to @1@, there is no shader object bound to any graphics stage,
+--     and a color attachment with a resolve mode of
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID',
+--     each element of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
+--     array with a @resolveImageView@ not equal to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
+--     with an image created with a
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value equal to the
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value used to create the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09363# If there is no
+--     shader object bound to any graphics stage, the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and a
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
+--     equal to @1@, and a color attachment with a resolve mode of
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID',
+--     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 an image created with a
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value equal to the
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value used to create the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09364# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there is no shader object bound to any graphics stage, and the bound
+--     graphics pipeline was created with a non-zero
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value and with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
+--     /must/ have set the blend enable to
+--     'Vulkan.Core10.FundamentalTypes.FALSE' prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09365# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there is no shader object bound to any graphics stage, and the bound
+--     graphics pipeline was created with a non-zero
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value and with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     /must/ have set @rasterizationSamples@ to
+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' prior
+--     to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09366# If there is a
+--     shader object bound to any graphics stage, and the current render
+--     pass includes a color attachment that uses the
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID'
+--     resolve mode, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
+--     /must/ have set blend enable to
+--     'Vulkan.Core10.FundamentalTypes.FALSE' prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-rasterizationSamples-09367#
+--     If there is a shader object bound to any graphics stage, and the
+--     current render pass includes a color attachment that uses the
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID'
+--     resolve mode, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     /must/ have set @rasterizationSamples@ to
+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' prior
+--     to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09368# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there is no shader object bound to any graphics stage, and the bound
+--     graphics pipeline was created with a non-zero
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value and with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     /must/ have set @pFragmentSize->width@ to @1@ prior to this drawing
+--     command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09369# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there is no shader object bound to any graphics stage, and the bound
+--     graphics pipeline was created with a non-zero
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'::@externalFormat@
+--     value and with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     /must/ have set @pFragmentSize->height@ to @1@ prior to this drawing
+--     command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-pFragmentSize-09370# If
+--     there is a shader object bound to any graphics stage, and the
+--     current render pass includes a color attachment that uses the
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID'
+--     resolve mode, then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     /must/ have set @pFragmentSize->width@ to @1@ prior to this drawing
+--     command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-pFragmentSize-09371# If
+--     there is a shader object bound to any graphics stage, and the
+--     current render pass includes a color attachment that uses the
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID'
+--     resolve mode, then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     /must/ have set @pFragmentSize->height@ to @1@ prior to this drawing
+--     command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07749# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
+--     feature is enabled, a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-attachmentCount-07750# If
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
+--     feature is enabled, a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then the @attachmentCount@
+--     parameter of most recent call to
+--     'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
+--     in the current command buffer /must/ be greater than or equal to the
+--     number of active color attachments
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07751# If the
+--     @VK_EXT_discard_rectangles@ extension is enabled, a graphics
+--     pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_EXT'
+--     dynamic state enabled and the @pNext@ chain of
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo' included
+--     a
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'
+--     structure, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @discardRectangleEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command for each
+--     discard rectangle in
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'::@discardRectangleCount@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-rasterizerDiscardEnable-09236#
+--     If the @VK_EXT_discard_rectangles@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_EXT'
+--     dynamic state enabled and the @pNext@ chain of
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo' did not
+--     include a
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'
+--     structure, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @discardRectangleEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command for each
+--     discard rectangle in
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.PhysicalDeviceDiscardRectanglePropertiesEXT'::@maxDiscardRectangles@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07880# If the
+--     @VK_EXT_discard_rectangles@ extension is enabled, a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07881# If the
+--     @VK_EXT_discard_rectangles@ extension is enabled, a shader object is
+--     bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @discardRectangleEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleModeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-dynamicRenderingUnusedAttachments-08913#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
+--     used to create the bound graphics pipeline /must/ be equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-dynamicRenderingUnusedAttachments-08914#
+--     If current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->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 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->imageView@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-dynamicRenderingUnusedAttachments-08915#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
+--     used to create the bound graphics pipeline was not equal to the
+--     'Vulkan.Core10.Enums.Format.Format' used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@,
+--     the value of the format /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-dynamicRenderingUnusedAttachments-08916#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
+--     used to create the bound graphics pipeline /must/ be equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-dynamicRenderingUnusedAttachments-08917#
+--     If current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->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 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->imageView@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-dynamicRenderingUnusedAttachments-08918#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
+--     used to create the bound graphics pipeline was not equal to the
+--     'Vulkan.Core10.Enums.Format.Format' used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@,
+--     the value of the format /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-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_fragment_shading_rate.RenderingFragmentShadingRateAttachmentInfoKHR'::@imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the bound graphics
+--     pipeline /must/ have been created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-dynamicRenderingLocalRead-11797#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingLocalRead dynamicRenderingLocalRead>
+--     feature is enabled, the
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_LOCAL_READ_CONCURRENT_ACCESS_CONTROL_BIT_KHR'
+--     flag is specified, and an attachment is being used as a feedback
+--     loop as specified by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#rendering-attachment-input-attachment-feedback >,
+--     'Vulkan.Extensions.VK_KHR_maintenance10.RenderingAttachmentFlagsInfoKHR'::@flags@
+--     for that attachment /must/ include
+--     'Vulkan.Extensions.VK_KHR_maintenance10.RENDERING_ATTACHMENT_INPUT_ATTACHMENT_FEEDBACK_BIT_KHR'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-imageView-06184# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and
+--     'Vulkan.Extensions.VK_EXT_fragment_density_map.RenderingFragmentDensityMapAttachmentInfoEXT'::@imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the bound graphics
+--     pipeline /must/ have been created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-layers-10831# If the current
+--     render pass instance was created with
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE'
+--     or
+--     'Vulkan.Core10.Enums.RenderPassCreateFlagBits.RENDER_PASS_CREATE_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE',
+--     and the bound graphics pipeline was created with
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE',
+--     then the current render pass instance /must/ have a @layers@ value
+--     less than or equal to
+--     'Vulkan.Extensions.VK_VALVE_fragment_density_map_layered.PipelineFragmentDensityMapLayeredCreateInfoVALVE'::@maxFragmentDensityMapLayers@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-colorAttachmentCount-06185#
+--     If the bound pipeline was created with a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.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_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     used to create the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-pDepthAttachment-06186# If
+--     the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the bound pipeline was created with a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     structure, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
+--     @depthStencilAttachmentSamples@ member of
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     used to create the bound graphics pipeline /must/ be equal to the
+--     sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-pStencilAttachment-06187# If
+--     the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the bound pipeline was created with a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     structure, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
+--     @depthStencilAttachmentSamples@ member of
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     used to create the bound graphics pipeline /must/ be equal to the
+--     sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-multisampledRenderToSingleSampled-07285#
+--     If the bound pipeline was created without a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     structure, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
+--     feature is not enabled, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, 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 @rasterizationSamples@ for
+--     the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-multisampledRenderToSingleSampled-07286#
+--     If the bound pipeline was created without a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     structure, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
+--     feature is not enabled, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     @rasterizationSamples@ for the bound graphics pipeline /must/ be
+--     equal to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-multisampledRenderToSingleSampled-07287#
+--     If the bound pipeline was created without a
+--     'Vulkan.Extensions.VK_AMD_mixed_attachment_samples.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.AttachmentSampleCountInfoNV'
+--     structure, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled>
+--     feature is not enabled, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     @rasterizationSamples@ for the bound graphics pipeline /must/ be
+--     equal to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-pNext-07935# If this command
+--     is called inside a render pass instance started with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     and the @pNext@ chain of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'
+--     includes a
+--     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'
+--     structure with @multisampledRenderToSingleSampledEnable@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then the value of
+--     @rasterizationSamples@ for the bound graphics pipeline /must/ be
+--     equal to
+--     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'::@rasterizationSamples@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-renderPass-06198# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the bound pipeline /must/ have been created with a
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'::@renderPass@
+--     equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-pColorAttachments-08963# If
+--     the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, there is a
+--     graphics pipeline bound with a fragment shader that statically
+--     writes to a color attachment, the color write mask is not zero,
+--     color writes are enabled, and the corresponding element of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     corresponding element of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-pColorAttachments-11539# If
+--     the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, there is a graphics
+--     pipeline bound with a fragment shader that statically writes to a
+--     color attachment, the color write mask is not zero, color writes are
+--     enabled, and the corresponding element of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     corresponding element of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-pDepthAttachment-08964# If
+--     the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, there is a
+--     graphics pipeline bound, depth test is enabled, and the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-pDepthAttachment-11540# If
+--     the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, there is a graphics
+--     pipeline bound, depth test is enabled, and the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-pStencilAttachment-08965# If
+--     the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been recorded in the render pass instance, there is a
+--     graphics pipeline bound, stencil test is enabled and the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-pStencilAttachment-11860# If
+--     the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, there is a graphics
+--     pipeline bound, stencil test is enabled and the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@
+--     used to create the pipeline /must/ not be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-flags-10582# If the current
+--     render pass instance was begun with a
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     call in @commandBuffer@, its
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@flags@
+--     parameter /must/ not have
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT'
+--     set unless
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_CONTENTS_INLINE_BIT_KHR'
+--     is also set
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-primitivesGeneratedQueryWithRasterizerDiscard-06708#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithRasterizerDiscard primitivesGeneratedQueryWithRasterizerDiscard>
+--     feature is not enabled and the
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
+--     query is active,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-discard rasterization discard>
+--     /must/ not be enabled
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-primitivesGeneratedQueryWithNonZeroStreams-06709#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>
+--     feature is not enabled and the
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
+--     query is active, the bound graphics pipeline /must/ not have been
+--     created with a non-zero value in
+--     'Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT'::@rasterizationStream@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07620# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClamp depthClamp>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClampEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07621# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_POLYGON_MODE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetPolygonModeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07622# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07623# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-alphaToCoverageEnable-08919#
+--     If the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT'
+--     dynamic state enabled, and @alphaToCoverageEnable@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-fragmentoutput Fragment Output Interface>
+--     /must/ contain a variable for the alpha @Component@ word in
+--     @Location@ 0 at @Index@ 0
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-alphaToCoverageEnable-08920#
+--     If a shader object is bound to any graphics stage, and the most
+--     recent call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT'
+--     in the current command buffer set @alphaToCoverageEnable@ to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-fragmentoutput Fragment Output Interface>
+--     /must/ contain a variable for the alpha @Component@ word in
+--     @Location@ 0 at @Index@ 0
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07624# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToCoverageEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07625# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-alphaToOne alphaToOne>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetAlphaToOneEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07626# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-logicOp logicOp>
+--     feature is enabled, a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLogicOpEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07627# If a shader
+--     object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and there are color
+--     attachments bound, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07629# If a shader
+--     object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and there are color
+--     attachments bound, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07630# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryStreams geometryStreams>
+--     feature is enabled, and a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
+--     stage or a graphics pipeline is bound which was created with both a
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
+--     stage and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_STREAM_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationStreamEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07631# If the
+--     @VK_EXT_conservative_rasterization@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetConservativeRasterizationModeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07632# If the
+--     @VK_EXT_conservative_rasterization@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @conservativeRasterizationMode@ is
+--     'Vulkan.Extensions.VK_EXT_conservative_rasterization.CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT',
+--     then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetExtraPrimitiveOverestimationSizeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-conservativePointAndLineRasterization-07499#
+--     If the @VK_EXT_conservative_rasterization@ extension is enabled,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-conservativePointAndLineRasterization conservativePointAndLineRasterization>
+--     is not supported, a shader object is bound to any graphics stage or
+--     a graphics pipeline is bound, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line or point topology class, then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @conservativeRasterizationMode@ /must/ be
+--     'Vulkan.Extensions.VK_EXT_conservative_rasterization.CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07633# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClipEnable depthClipEnable>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT'
+--     dynamic state, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07636# If the
+--     @VK_EXT_provoking_vertex@ extension is enabled, a shader object is
+--     bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetProvokingVertexModeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08666# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
+--     features are enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line topology class, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineRasterizationModeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08669# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
+--     features are enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line topology class, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetLineStippleEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07849# If any of 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.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
+--     features are enabled and a shader object is bound to any graphics
+--     stage, or a bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @stippledLineEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then
+--     'Vulkan.Core14.Promoted_From_VK_KHR_line_rasterization.cmdSetLineStipple'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-10608# If a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-rasterization-input-topology effective rasterization input topology>
+--     is in line topology class, and the current @lineRasterizationMode@
+--     is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_BRESENHAM'
+--     or
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH',
+--     then the current @alphaToCoverageEnable@, @alphaToOneEnable@ and
+--     @sampleShadingEnable@ states /must/ all be
+--     'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07639# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClipControl depthClipControl>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetDepthClipNegativeOneToOneEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09650# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClampControl depthClampControl>
+--     feature is enabled, and a shader object is bound to any graphics
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @depthClampEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_depth_clamp_control.cmdSetDepthClampRangeEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07640# If the
+--     @VK_NV_clip_space_w_scaling@ extension is enabled, and a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportWScalingEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07641# If the
+--     @VK_NV_viewport_swizzle@ extension is enabled, and a shader object
+--     is bound to any graphics stage or a graphics pipeline is bound which
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07642# If the
+--     @VK_NV_fragment_coverage_to_color@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07643# If the
+--     @VK_NV_fragment_coverage_to_color@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @coverageToColorEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07644# If the
+--     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationModeNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07645# If the
+--     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @coverageModulationMode@ is any value other than
+--     'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.COVERAGE_MODULATION_MODE_NONE_NV',
+--     then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07646# If the
+--     @VK_NV_framebuffer_mixed_samples@ extension is enabled, a shader
+--     object is bound to any graphics stage or a graphics pipeline is
+--     bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV'
+--     dynamic state enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @coverageModulationTableEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07647# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetShadingRateImageEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-pipelineFragmentShadingRate-09238#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07648# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-representativeFragmentTest representativeFragmentTest>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRepresentativeFragmentTestEnableNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07649# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-coverageReductionMode coverageReductionMode>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageReductionModeNV'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-rasterizationSamples-07471#
+--     If the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, and the current subpass does not use any color
+--     and\/or depth\/stencil attachments, then the @rasterizationSamples@
+--     in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     /must/ follow the rules for a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-noattachments zero-attachment subpass>
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-samples-07472# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
+--     state enabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state disabled, then the @samples@ parameter in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
+--     /must/ be greater or equal to the
+--     'Vulkan.Core10.GraphicsPipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
+--     parameter used to create the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-samples-07473# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_MASK_EXT'
+--     state and
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     states enabled, then the @samples@ parameter in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
+--     /must/ be greater or equal to the @rasterizationSamples@ parameter
+--     in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09211# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, or a shader object is bound to any graphics stage,
+--     and the current render pass instance includes a
+--     'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'
+--     structure with @multisampledRenderToSingleSampledEnable@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then the
+--     @rasterizationSamples@ in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--     /must/ be the same as the @rasterizationSamples@ member of that
+--     structure
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-firstAttachment-07476# If a
+--     shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--     dynamic states enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEnableEXT'
+--     in the current command buffer prior to this drawing command /must/
+--     have set a value for all active color attachments
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-firstAttachment-07478# If a
+--     shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT'
+--     dynamic states enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
+--     in the current command buffer prior to this drawing command /must/
+--     have set a value for all active color attachments
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-advancedBlendMaxColorAttachments-07480#
+--     If a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
+--     and
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT'
+--     dynamic states enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and an active color
+--     attachment
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @blendEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then the
+--     number of active color attachments /must/ not exceed
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-advancedBlendMaxColorAttachments advancedBlendMaxColorAttachments>
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-10862# If a graphics
+--     pipeline is bound was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
+--     , but not the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command for all
+--     active color attachments with the @blendEnable@
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-rasterizerDiscardEnable-10863#
+--     If a graphics pipeline is bound was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT',
+--     but not the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command for all
+--     active color attachments with the @blendEnable@
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-10864# If a shader
+--     object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT'
+--     and
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then either
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendAdvancedEXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorBlendEquationEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command for all
+--     active color attachments with the @blendEnable@
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-primitivesGeneratedQueryWithNonZeroStreams-07481#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitivesGeneratedQueryWithNonZeroStreams primitivesGeneratedQueryWithNonZeroStreams>
+--     feature is not enabled and the
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PRIMITIVES_GENERATED_EXT'
+--     query is active, and the bound graphics pipeline was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_STREAM_EXT'
+--     state enabled, the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationStreamEXT'
+--     /must/ have set the @rasterizationStream@ to zero
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-sampleLocationsPerPixel-07482#
+--     If the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state enabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state disabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then the @sampleLocationsPerPixel@ member of @pSampleLocationsInfo@
+--     in the last call to
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     /must/ equal the @rasterizationSamples@ member of the
+--     'Vulkan.Core10.GraphicsPipeline.PipelineMultisampleStateCreateInfo'
+--     structure the bound graphics pipeline has been created with
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-sampleLocationsPerPixel-07483#
+--     If the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state enabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then the @sampleLocationsPerPixel@ member of @pSampleLocationsInfo@
+--     in the last call to
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     /must/ equal the @rasterizationSamples@ parameter of the last call
+--     to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-sampleLocationsEnable-07484#
+--     If a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage, or the bound graphics pipeline was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     state enabled, and @sampleLocationsEnable@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT'
+--     then the current active depth attachment /must/ have been created
+--     with the
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'
+--     bit set
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-sampleLocationsEnable-07485#
+--     If a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage, or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state enabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     state enabled, and if @sampleLocationsEnable@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
+--     then the @sampleLocationsInfo.maxSampleLocationGridSize.width@ in
+--     the last call to
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     /must/ evenly divide
+--     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.width@
+--     as returned by
+--     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
+--     with a @samples@ parameter equaling @rasterizationSamples@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-sampleLocationsEnable-07486#
+--     If a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage, or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state enabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     state enabled, and if @sampleLocationsEnable@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
+--     then the @sampleLocationsInfo.maxSampleLocationGridSize.height@ in
+--     the last call to
+--     'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'
+--     /must/ evenly divide
+--     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.height@
+--     as returned by
+--     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
+--     with a @samples@ parameter equaling @rasterizationSamples@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-sampleLocationsEnable-07487#
+--     If a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage, or the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT'
+--     state enabled, and if @sampleLocationsEnable@ was
+--     'Vulkan.Core10.FundamentalTypes.TRUE' in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleLocationsEnableEXT',
+--     the fragment shader code /must/ not statically use the extended
+--     instruction @InterpolateAtSample@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-sampleLocationsEnable-07936#
+--     If the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state disabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then @sampleLocationsInfo.sampleLocationGridSize.width@ /must/
+--     evenly divide
+--     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.width@
+--     as returned by
+--     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
+--     with a @samples@ parameter equaling the value of
+--     @rasterizationSamples@ in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-sampleLocationsEnable-07937#
+--     If the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state disabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then @sampleLocationsInfo.sampleLocationGridSize.height@ /must/
+--     evenly divide
+--     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@maxSampleLocationGridSize.height@
+--     as returned by
+--     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
+--     with a @samples@ parameter equaling the value of
+--     @rasterizationSamples@ in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-sampleLocationsEnable-07938#
+--     If the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     state disabled and the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @sampleLocationsEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then @sampleLocationsInfo.sampleLocationsPerPixel@ /must/ equal
+--     @rasterizationSamples@ in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-coverageModulationTableEnable-07488#
+--     If a shader object is bound to any graphics stage or the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV'
+--     state enabled, and the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableEnableNV'
+--     set @coverageModulationTableEnable@ to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then the
+--     @coverageModulationTableCount@ parameter in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageModulationTableNV'
+--     /must/ equal the current @rasterizationSamples@ divided by the
+--     number of color samples in the current active color attachment
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-rasterizationSamples-07489#
+--     If the @VK_NV_framebuffer_mixed_samples@ extension is enabled, and
+--     if current subpass has a depth\/stencil attachment and depth test,
+--     stencil test, or depth bounds test are enabled in the bound
+--     pipeline, then the current @rasterizationSamples@ /must/ be the same
+--     as the sample count of the depth\/stencil attachment
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-coverageToColorEnable-07490#
+--     If the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV'
+--     state enabled and the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
+--     set the @coverageToColorEnable@ to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then there /must/ be an
+--     active color attachment at the location selected by the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
+--     @coverageToColorLocation@, with a
+--     'Vulkan.Core10.Enums.Format.Format' of
+--     'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R8_SINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R16_UINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R16_SINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R32_UINT', or
+--     'Vulkan.Core10.Enums.Format.FORMAT_R32_SINT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-rasterizerDiscardEnable-09420#
+--     If the @VK_NV_fragment_coverage_to_color@ extension is enabled, and
+--     a shader object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage, and the most recent call to
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
+--     in the current command buffer set @rasterizerDiscardEnable@ to
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorEnableNV'
+--     set the @coverageToColorEnable@ to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then there /must/ be an
+--     active color attachment at the location selected by the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetCoverageToColorLocationNV'
+--     @coverageToColorLocation@, with a
+--     'Vulkan.Core10.Enums.Format.Format' of
+--     'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R8_SINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R16_UINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R16_SINT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R32_UINT', or
+--     'Vulkan.Core10.Enums.Format.FORMAT_R32_SINT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-coverageReductionMode-07491#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-coverageReductionMode coverageReductionMode>
+--     feature is enabled, a shader object is bound to any graphics stage
+--     or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV'
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT'
+--     dynamic states enabled, then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current values>
+--     of @coverageReductionMode@, @rasterizationSamples@, the sample
+--     counts for the color and depth\/stencil attachments (if the subpass
+--     has them) /must/ be a valid combination returned by
+--     'Vulkan.Extensions.VK_NV_coverage_reduction_mode.getPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-07492# 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_SWIZZLE_NV'
+--     dynamic state enabled, 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-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-07493# 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_SWIZZLE_NV'
+--     dynamic states enabled then the @viewportCount@ parameter in the
+--     last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
+--     /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-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-09421# If the
+--     @VK_NV_viewport_swizzle@ extension is enabled, and a shader object
+--     is bound to any graphics stage, then the @viewportCount@ parameter
+--     in the last call to
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetViewportSwizzleNV'
+--     /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-vkCmdDrawMeshTasksIndirectCountNV-rasterizationSamples-07494#
+--     If the @VK_NV_framebuffer_mixed_samples@ extension is enabled, and
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-coverageReductionMode coverageReductionMode>
+--     feature is not enabled, or the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @coverageReductionMode@ is not
+--     'Vulkan.Extensions.VK_NV_coverage_reduction_mode.COVERAGE_REDUCTION_MODE_TRUNCATE_NV',
+--     and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizationSamples@ is greater than sample count of the color
+--     attachment, then
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-sampleshading sample shading>
+--     /must/ be disabled
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-stippledLineEnable-07495# If
+--     the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic states enabled, and if the current @stippledLineEnable@
+--     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
+--     @lineRasterizationMode@ state is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_RECTANGULAR',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-stippledLineEnable-07496# If
+--     the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic states enabled, and if the current @stippledLineEnable@
+--     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
+--     @lineRasterizationMode@ state is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_BRESENHAM',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-stippledLineEnable-07497# If
+--     the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic states enabled, and if the current @stippledLineEnable@
+--     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
+--     @lineRasterizationMode@ state is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-stippledLineEnable-07498# If
+--     the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT'
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT'
+--     dynamic states enabled, and if the current @stippledLineEnable@
+--     state is 'Vulkan.Core10.FundamentalTypes.TRUE' and the current
+--     @lineRasterizationMode@ state is
+--     'Vulkan.Core14.Enums.LineRasterizationMode.LINE_RASTERIZATION_MODE_DEFAULT',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>
+--     feature /must/ be enabled and
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@strictLines@
+--     /must/ be 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-stage-07073# If the bound
+--     pipeline was created with the
+--     'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo'::@stage@
+--     member of an element of
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'::@pStages@
+--     set to
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT',
+--     then
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-mesh-shader Mesh Shader Queries>
+--     /must/ not be active
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08877# If a shader
+--     object is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--     stage or a graphics pipeline is bound which was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT'
+--     dynamic state enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @rasterizerDiscardEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     'Vulkan.Extensions.VK_EXT_attachment_feedback_loop_dynamic_state.cmdSetAttachmentFeedbackLoopEnableEXT'
+--     /must/ have been called and not subsequently
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-lifetime invalidated>
+--     in the current command buffer prior to this drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07850# If dynamic state
+--     was inherited from
+--     'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV',
+--     it /must/ be set in the current command buffer prior to this drawing
+--     command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-nextStage-10745# For each
+--     shader object bound to a graphics stage, except for shader object
+--     bound to the last graphics stage in the logical pipeline, it /must/
+--     have been created with a @nextStage@ including the corresponding bit
+--     to the shader object bound to the following graphics stage in the
+--     logical pipeline
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08684# If there is no
+--     bound graphics pipeline,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08685# If there is no
+--     bound graphics pipeline, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellationShader>
+--     feature is enabled,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08686# If there is no
+--     bound graphics pipeline, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellationShader>
+--     feature is enabled,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08687# If there is no
+--     bound graphics pipeline, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometryShader>
+--     feature is enabled,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08688# If there is no
+--     bound graphics pipeline,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08689# If there is no
+--     bound graphics pipeline, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
+--     feature is enabled,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08690# If there is no
+--     bound graphics pipeline, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
+--     feature is enabled,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     have been called in the current command buffer with @pStages@ with
+--     an element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08693# If there is no
+--     bound graphics pipeline, and at least one of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
+--     features is enabled, one of the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--     stages /must/ have a valid 'Vulkan.Extensions.Handles.ShaderEXT'
+--     bound, and the other /must/ have no
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08696# If there is no
+--     bound graphics pipeline, and a valid
+--     'Vulkan.Extensions.Handles.ShaderEXT' is bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'
+--     stage, there /must/ be no 'Vulkan.Extensions.Handles.ShaderEXT'
+--     bound to either the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--     stage or the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--     stage
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08698# If any graphics
+--     shader is bound which was created with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
+--     flag, then all shaders created with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
+--     flag in the same
+--     'Vulkan.Extensions.VK_EXT_shader_object.createShadersEXT' call
+--     /must/ also be bound
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08699# If any graphics
+--     shader is bound which was created with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
+--     flag, any stages in between stages whose shaders which did not
+--     create a shader with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_LINK_STAGE_BIT_EXT'
+--     flag as part of the same
+--     'Vulkan.Extensions.VK_EXT_shader_object.createShadersEXT' call
+--     /must/ not have any 'Vulkan.Extensions.Handles.ShaderEXT' bound
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08878# All bound
+--     graphics shader objects /must/ have been created with identical or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-identically-defined identically defined>
+--     push constant ranges
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08879# All bound
+--     graphics shader objects /must/ have either been created with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag set, or with identical or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-identically-defined identically defined>
+--     arrays of descriptor set layouts
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-colorAttachmentCount-09372#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and a
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
+--     equal to @1@, a color attachment with a resolve mode of
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID',
+--     and a fragment shader is bound, it /must/ not declare the
+--     @DepthReplacing@ or @StencilRefReplacingEXT@ execution modes
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-pDynamicStates-08715# If the
+--     bound graphics pipeline state includes a fragment shader stage, was
+--     created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE'
+--     set in
+--     'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@,
+--     and the fragment shader declares the @EarlyFragmentTests@ execution
+--     mode and uses @OpDepthAttachmentReadEXT@, the @depthWriteEnable@
+--     parameter in the last call to
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthWriteEnable'
+--     /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-pDynamicStates-08716# If the
+--     bound graphics pipeline state includes a fragment shader stage, was
+--     created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_WRITE_MASK'
+--     set in
+--     'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@,
+--     and the fragment shader declares the @EarlyFragmentTests@ execution
+--     mode and uses @OpStencilAttachmentReadEXT@, the @writeMask@
+--     parameter in the last call to
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilWriteMask' /must/
+--     be @0@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09116# If a shader
+--     object is bound to any graphics stage or the bound graphics pipeline
+--     was created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_MASK_EXT',
+--     and the format of any color attachment is
+--     'Vulkan.Core10.Enums.Format.FORMAT_E5B9G9R9_UFLOAT_PACK32', the
+--     corresponding element of the @pColorWriteMasks@ parameter of
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetColorWriteMaskEXT'
+--     /must/ either include all of
+--     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_R_BIT',
+--     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_G_BIT',
+--     and
+--     'Vulkan.Core10.Enums.ColorComponentFlagBits.COLOR_COMPONENT_B_BIT',
+--     or none of them
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-maxFragmentDualSrcAttachments-09239#
+--     If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blending blending>
+--     is enabled for any attachment where either the source or destination
+--     blend factors for that attachment
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-dsb use the secondary color input>,
+--     the maximum value of @Location@ for any output attachment
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-staticuse statically used>
+--     in the @Fragment@ @Execution@ @Model@ executed by this command
+--     /must/ be less than
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFragmentDualSrcAttachments maxFragmentDualSrcAttachments>
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09548# If the current
+--     render pass was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     there is no shader object bound to any graphics stage, the value of
+--     each element of
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingAttachmentLocationInfo'::@pColorAttachmentLocations@
+--     in the bound pipeline /must/ match the value for the corresponding
+--     locations set currently in the current render pass instance
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09549# If the current
+--     render pass was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     and there is no shader object bound to any graphics stage, the value
+--     of each element of
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pColorAttachmentInputIndices@
+--     in the bound pipeline /must/ match the value for the corresponding
+--     index set currently in the current render pass instance
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-10927# If the current
+--     render pass was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     and there is no shader object bound to any graphics stage, the value
+--     of
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pDepthInputAttachmentIndex@
+--     in the bound pipeline /must/ match the value set currently in the
+--     current render pass instance
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-10928# If the current
+--     render pass was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     and there is no shader object bound to any graphics stage, the value
+--     of
+--     'Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read.RenderingInputAttachmentIndexInfo'::@pStencilInputAttachmentIndex@
+--     in the bound pipeline /must/ match the value set currently in the
+--     current render pass instance
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09642# If the current
+--     render pass was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     with the
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT'
+--     flag, the bound graphics pipeline /must/ have been created with
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09643# If the bound
+--     graphics pipeline was created with
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT',
+--     the current render pass /must/ have begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     with the
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT'
+--     flag
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-10677# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model>
+--     is enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tileShadingPerTileDraw tileShadingPerTileDraw>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-10772# If a shader
+--     object is bound to any graphics stage, /multiview/ functionality
+--     /must/ not be enabled in the current render pass
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-multiviewPerViewViewports-12262#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiviewPerViewViewports multiviewPerViewViewports>
+--     feature is enabled, then the index of the most significant bit in
+--     current render pass instance @viewMask@ /must/ be less than the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @viewportCount@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-multiviewPerViewViewports-12263#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiviewPerViewViewports multiviewPerViewViewports>
+--     feature is enabled, then the index of the most significant bit in
+--     current render pass instance @viewMask@ /must/ be less than the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dynamic-state-current-value current value>
+--     of @scissorCount@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-flags-11521# If current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@flags@
+--     which includes
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_FRAGMENT_REGION_BIT_EXT',
+--     and if
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-sampleshading sample shading>
+--     is enabled (explicitly or implicitly), then the minimum fraction for
+--     sample shading /must/ equal 0.0
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-11522# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and contains a custom resolve, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, the graphics pipeline bound /must/ have been
+--     created with a
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-11523# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and does not contain a custom resolve, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, the graphics pipeline bound /must/ not have
+--     been created with a
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-customResolve-11524# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, the graphics pipeline
+--     bound /must/ have been created with
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@
+--     as 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-customResolve-11525# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and contains a custom resolve, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not been recorded in the render pass instance, the graphics
+--     pipeline bound /must/ have been created with
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@
+--     as 'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-11861# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled and the current render pass instance was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and contains a custom resolve, the bound graphics pipeline /must/
+--     have been created with a
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@colorAttachmentCount@
+--     equal to
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-11862# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and the current render pass instance was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, 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 an @resolveImageView@ 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_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@
+--     used to create the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-11863# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and the current render pass instance was
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, 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 an @resolveImageView@ equal to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have the
+--     corresponding element of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@
+--     used to create the bound pipeline equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-dynamicRenderingUnusedAttachments-11864#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled, the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, 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 an @resolveImageView@ 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_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@
+--     used to create the bound graphics pipeline, or the corresponding
+--     element of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@pColorAttachmentFormats@,
+--     if it exists, /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-11865# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@
+--     used to create the bound graphics pipeline /must/ be equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-11866# If current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@
+--     used to create the 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->resolveImageView@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-dynamicRenderingUnusedAttachments-11867#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@depthAttachmentFormat@
+--     used to create the bound graphics pipeline was not equal to the
+--     'Vulkan.Core10.Enums.Format.Format' used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@,
+--     the value of the format /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-11868# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--     was 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@
+--     used to create the bound graphics pipeline /must/ be equal to
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-11869# If current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is not enabled, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@
+--     used to create the 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->resolveImageView@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-dynamicRenderingUnusedAttachments-11870#
+--     If the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     it contains a custom resolve, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRenderingUnusedAttachments dynamicRenderingUnusedAttachments>
+--     feature is enabled,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the value of
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@stencilAttachmentFormat@
+--     used to create the bound graphics pipeline was not equal to the
+--     'Vulkan.Core10.Enums.Format.Format' used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@,
+--     the value of the format /must/ be
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-colorAttachmentCount-11871#
+--     If 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@ and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, then for each element
+--     of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
+--     array with a @resolveImageView@ not equal to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', the @resolveImageView@
+--     /must/ have been created with a sample count equal to the value of
+--     @rasterizationSamples@ for the bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-pDepthAttachment-11872# If
+--     the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     @rasterizationSamples@ for the bound graphics pipeline /must/ be
+--     equal to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->resolveImageView@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-pStencilAttachment-11873# If
+--     the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been recorded in the render pass instance,
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     @rasterizationSamples@ for the bound graphics pipeline /must/ be
+--     equal to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->resolveImageView@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-customResolve-11529# If a
+--     shader object is bound to the fragment stage, the current render
+--     pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     a fragment density map attachment is active, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has been called, then the fragment shader object bound /must/ have
+--     been created with
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@
+--     as 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-customResolve-11530# If a
+--     shader object is bound to the fragment stage, the current render
+--     pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and contains a custom resolve, a fragment density map attachment is
+--     active, and
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'
+--     has not yet been called, then the fragment shader object bound
+--     /must/ have been created with
+--     'Vulkan.Extensions.VK_EXT_custom_resolve.CustomResolveCreateInfoEXT'::@customResolve@
+--     as 'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-flags-13361# If there are
+--     any shader objects bound that were created with @flags@ that
+--     includes the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     bit, then all bound shader objects /must/ have been created with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     bit
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-flags-13362# If there are
+--     any shader objects bound that were created with @flags@ that
+--     includes the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     bit, then the pipeline layout of the bound descriptor sets /must/
+--     have been created with
+--     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT'
+--     set
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-flags-13363# If there are
+--     any shader objects bound that were created with @flags@ that
+--     includes the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     bit, and any of the descriptor set layouts used to create the
+--     pipeline layout of the bound descriptor sets were created with any
+--     binding’s
+--     'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutBinding'::@stageFlags@
+--     set with
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT',
+--     then there /must/ be no binding with
+--     'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutBinding'::@stageFlags@
+--     set with
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-flags-13364# If there are
+--     any shader objects bound that were created with @flags@ that
+--     includes both the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     and
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
+--     bits, the pipeline layout of the bound descriptor sets /must/ have
+--     been created with
+--     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_NO_TASK_SHADER_BIT_KHR'
+--     set
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-flags-13365# If there are
+--     any shader objects bound that were created with @flags@ that
+--     includes both the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR'
+--     and
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
+--     bits, there /must/ be no shader object bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--     stage
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-stage-06480# The bound
+--     graphics pipeline /must/ not have been created with the
+--     'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo'::@stage@
+--     member of any element of
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'::@pStages@
+--     set to
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-pStages-10680# If there is
+--     no bound graphics pipeline,
+--     'Vulkan.Extensions.VK_EXT_shader_object.cmdBindShadersEXT' /must/
+--     not have last bound the @pStages@ element of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
+--     with a valid shader object other than
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07074#
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-transform-feedback Transform Feedback Queries>
+--     /must/ not be active
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07075#
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-primitives-generated Primitives Generated Queries>
+--     /must/ not be active
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-pipelineStatistics-07076#
+--     The @pipelineStatistics@ member used to create any active
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-pipestats Pipeline Statistics Query>
+--     /must/ not contain
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT',
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT',
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT',
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT',
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT',
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT',
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT',
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT',
+--     or
+--     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08694# If there is no
+--     bound graphics pipeline, and both the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
+--     features are enabled, and a valid
+--     'Vulkan.Extensions.Handles.ShaderEXT' is bound the to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--     stage, and that 'Vulkan.Extensions.Handles.ShaderEXT' was created
+--     without the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
+--     flag, a valid 'Vulkan.Extensions.Handles.ShaderEXT' /must/ be bound
+--     to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--     stage
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08695# If there is no
+--     bound graphics pipeline, and both the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader taskShader>
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader meshShader>
+--     features are enabled, and a valid
+--     'Vulkan.Extensions.Handles.ShaderEXT' is bound the to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_EXT'
+--     stage, and that 'Vulkan.Extensions.Handles.ShaderEXT' was created
+--     with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_NO_TASK_SHADER_BIT_EXT'
+--     flag, there /must/ be no 'Vulkan.Extensions.Handles.ShaderEXT' bound
+--     to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_EXT'
+--     stage
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-buffer-02708# If @buffer@ is
+--     non-sparse then it /must/ be bound completely and contiguously to a
+--     single 'Vulkan.Core10.Handles.DeviceMemory' object
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-buffer-02709# @buffer@
+--     /must/ have been created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-offset-02710# @offset@
+--     /must/ be a multiple of @4@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-02711#
+--     @commandBuffer@ /must/ not be a protected command buffer
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-02714# If
+--     @countBuffer@ is non-sparse then it /must/ be bound completely and
+--     contiguously to a single 'Vulkan.Core10.Handles.DeviceMemory' object
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-02715#
+--     @countBuffer@ /must/ have been created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-countBufferOffset-02716#
+--     @countBufferOffset@ /must/ be a multiple of @4@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-02717# The count
+--     stored in @countBuffer@ /must/ be less than or equal to
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxDrawIndirectCount@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-countBufferOffset-04129#
+--     (@countBufferOffset@ + @sizeof@(uint32_t)) /must/ be less than or
+--     equal to the size of @countBuffer@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-04445# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-drawIndirectCount drawIndirectCount>
+--     feature is not enabled this function /must/ not be used
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-stride-02182# @stride@
+--     /must/ be a multiple of @4@ and /must/ be greater than or equal to
+--     @sizeof@('DrawMeshTasksIndirectCommandNV')
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-maxDrawCount-02183# If
+--     @maxDrawCount@ is greater than or equal to @1@, (@stride@ ×
+--     (@maxDrawCount@ - 1) + @offset@ +
+--     @sizeof@('DrawMeshTasksIndirectCommandNV')) /must/ be less than or
+--     equal to the size of @buffer@
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-MeshNV-07082# The current
+--     pipeline bound to
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
+--     /must/ contain a shader stage using the @MeshNV@ @Execution@ @Model@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-buffer-parameter# @buffer@
+--     /must/ be a valid 'Vulkan.Core10.Handles.Buffer' handle
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-parameter#
+--     @countBuffer@ /must/ be a valid 'Vulkan.Core10.Handles.Buffer'
+--     handle
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-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-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-renderpass# This command
+--     /must/ only be called inside of a render pass instance
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-suspended# This command
+--     /must/ not be called between suspended render pass instances
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-videocoding# This command
+--     /must/ only be called outside of a video coding scope
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-commonparent# Each of
+--     @buffer@, @commandBuffer@, and @countBuffer@ /must/ have been
+--     created, allocated, or retrieved from the same
+--     'Vulkan.Core10.Handles.Device'
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Inside                                                                                                                 | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdDrawMeshTasksIndirectCountNV is affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_draw_indirect_count VK_AMD_draw_indirect_count>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_draw_indirect_count VK_KHR_draw_indirect_count>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_mesh_shader VK_NV_mesh_shader>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_2 VK_VERSION_1_2>,
+-- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize'
+cmdDrawMeshTasksIndirectCountNV :: 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)
+                                -> -- | @countBuffer@ is the buffer containing the draw count.
+                                   ("countBuffer" ::: Buffer)
+                                -> -- | @countBufferOffset@ is the byte offset into @countBuffer@ where the draw
+                                   -- count begins.
+                                   ("countBufferOffset" ::: DeviceSize)
+                                -> -- | @maxDrawCount@ specifies the maximum number of draws that will be
+                                   -- executed. The actual number of executed draw calls is the minimum of the
+                                   -- count specified in @countBuffer@ and @maxDrawCount@.
+                                   ("maxDrawCount" ::: Word32)
+                                -> -- | @stride@ is the byte stride between successive sets of draw parameters.
+                                   ("stride" ::: Word32)
+                                -> io ()
+cmdDrawMeshTasksIndirectCountNV commandBuffer
+                                  buffer
+                                  offset
+                                  countBuffer
+                                  countBufferOffset
+                                  maxDrawCount
+                                  stride = liftIO $ do
+  let vkCmdDrawMeshTasksIndirectCountNVPtr = pVkCmdDrawMeshTasksIndirectCountNV (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  unless (vkCmdDrawMeshTasksIndirectCountNVPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdDrawMeshTasksIndirectCountNV is null" Nothing Nothing
+  let vkCmdDrawMeshTasksIndirectCountNV' = mkVkCmdDrawMeshTasksIndirectCountNV vkCmdDrawMeshTasksIndirectCountNVPtr
+  traceAroundEvent "vkCmdDrawMeshTasksIndirectCountNV" (vkCmdDrawMeshTasksIndirectCountNV'
+                                                          (commandBufferHandle (commandBuffer))
+                                                          (buffer)
+                                                          (offset)
+                                                          (countBuffer)
+                                                          (countBufferOffset)
+                                                          (maxDrawCount)
+                                                          (stride))
+  pure $ ()
+
+
+-- No documentation found for TopLevel "VK_SHADER_STAGE_TASK_BIT_NV"
+pattern SHADER_STAGE_TASK_BIT_NV = SHADER_STAGE_TASK_BIT_EXT
+
+
+-- No documentation found for TopLevel "VK_SHADER_STAGE_MESH_BIT_NV"
+pattern SHADER_STAGE_MESH_BIT_NV = SHADER_STAGE_MESH_BIT_EXT
+
+
+-- No documentation found for TopLevel "VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV"
+pattern PIPELINE_STAGE_TASK_SHADER_BIT_NV = PIPELINE_STAGE_TASK_SHADER_BIT_EXT
+
+
+-- No documentation found for TopLevel "VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV"
+pattern PIPELINE_STAGE_MESH_SHADER_BIT_NV = PIPELINE_STAGE_MESH_SHADER_BIT_EXT
+
+
+-- | VkPhysicalDeviceMeshShaderFeaturesNV - Structure describing mesh shading
+-- features that can be supported by an implementation
+--
+-- = Members
+--
+-- This structure describes the following features:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceMeshShaderFeaturesNV' structure is included in the
+-- @pNext@ chain of 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceMeshShaderFeaturesNV', it /must/ add an instance of the
+-- structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_mesh_shader VK_NV_mesh_shader>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceMeshShaderFeaturesNV = PhysicalDeviceMeshShaderFeaturesNV
+  { -- | #features-taskShaderNV# @taskShader@ specifies whether task shaders are
+    -- supported. If this feature is not enabled, the
+    -- 'SHADER_STAGE_TASK_BIT_NV' and 'PIPELINE_STAGE_TASK_SHADER_BIT_NV' enum
+    -- values /must/ not be used.
+    taskShader :: Bool
+  , -- | #features-meshShaderNV# @meshShader@ specifies whether mesh shaders are
+    -- supported. If this feature is not enabled, the
+    -- 'SHADER_STAGE_MESH_BIT_NV' and 'PIPELINE_STAGE_MESH_SHADER_BIT_NV' enum
+    -- values /must/ not be used.
+    meshShader :: Bool
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceMeshShaderFeaturesNV)
+#endif
+deriving instance Show PhysicalDeviceMeshShaderFeaturesNV
+
+instance ToCStruct PhysicalDeviceMeshShaderFeaturesNV where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceMeshShaderFeaturesNV{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (taskShader))
+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (meshShader))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV)
+    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 PhysicalDeviceMeshShaderFeaturesNV where
+  peekCStruct p = do
+    taskShader <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    meshShader <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
+    pure $ PhysicalDeviceMeshShaderFeaturesNV
+             (bool32ToBool taskShader) (bool32ToBool meshShader)
+
+instance Storable PhysicalDeviceMeshShaderFeaturesNV where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceMeshShaderFeaturesNV where
+  zero = PhysicalDeviceMeshShaderFeaturesNV
+           zero
+           zero
+
+
+-- | VkPhysicalDeviceMeshShaderPropertiesNV - Structure describing mesh
+-- shading properties
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceMeshShaderPropertiesNV' 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.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_mesh_shader VK_NV_mesh_shader>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceMeshShaderPropertiesNV = PhysicalDeviceMeshShaderPropertiesNV
+  { -- | @maxDrawMeshTasksCount@ is the maximum number of local workgroups that
+    -- /can/ be launched by a single draw mesh tasks command. See
+    -- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -27,8 +27,14 @@
 --
 -- [__API Interactions__]
 --
+--     -   Interacts with VK_VERSION_1_2
+--
+--     -   Interacts with VK_AMD_draw_indirect_count
+--
 --     -   Interacts with VK_EXT_device_generated_commands
 --
+--     -   Interacts with VK_KHR_draw_indirect_count
+--
 -- [__SPIR-V Dependencies__]
 --
 --     -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/NV/SPV_NV_mesh_shader.html SPV_NV_mesh_shader>
@@ -72,7 +78,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization stages>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization stages>,
 -- including vertex array attribute fetching, vertex shader processing,
 -- tessellation, and geometry shader processing.
 --
@@ -83,12 +89,20 @@
 --
 -- == New Commands
 --
--- -   'cmdDrawMeshTasksIndirectCountNV'
---
 -- -   'cmdDrawMeshTasksIndirectNV'
 --
 -- -   'cmdDrawMeshTasksNV'
 --
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.2 Vulkan Version 1.2>
+-- or
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_draw_indirect_count VK_KHR_draw_indirect_count>
+-- or
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_draw_indirect_count VK_AMD_draw_indirect_count>
+-- is supported:
+--
+-- -   'cmdDrawMeshTasksIndirectCountNV'
+--
 -- == New Structures
 --
 -- -   'DrawMeshTasksIndirectCommandNV'
@@ -143,21 +157,21 @@
 --
 -- == New or Modified Built-In Variables
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-taskcount TaskCountNV>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-taskcount TaskCountNV>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-primitivecount PrimitiveCountNV>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-primitivecount PrimitiveCountNV>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-primitiveindices PrimitiveIndicesNV>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-primitiveindices PrimitiveIndicesNV>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-clipdistancepv ClipDistancePerViewNV>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-clipdistancepv ClipDistancePerViewNV>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-culldistancepv CullDistancePerViewNV>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-culldistancepv CullDistancePerViewNV>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-layerpv LayerPerViewNV>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-layerpv LayerPerViewNV>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-meshviewcount MeshViewCountNV>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-meshviewcount MeshViewCountNV>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-meshviewindices MeshViewIndicesNV>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-meshviewindices MeshViewIndicesNV>
 --
 -- -   (modified)@Position@
 --
@@ -193,7 +207,7 @@
 --
 -- == New SPIR-V Capability
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-MeshShadingNV MeshShadingNV>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-MeshShadingNV MeshShadingNV>
 --
 -- == Issues
 --
@@ -267,7 +281,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_mesh_shader Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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_optical_flow.hs b/src/Vulkan/Extensions/VK_NV_optical_flow.hs
--- a/src/Vulkan/Extensions/VK_NV_optical_flow.hs
+++ b/src/Vulkan/Extensions/VK_NV_optical_flow.hs
@@ -234,7 +234,7 @@
 -- > imageCreateInfo.mipLevels = 1;
 -- > imageCreateInfo.arrayLayers = 1;
 -- > imageCreateInfo.samples = VK_SAMPLE_COUNT_1_BIT;
--- > imageCreateInfo.usage = VK_IMAGE_USAGE_SAMPLED_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT;;
+-- > imageCreateInfo.usage = VK_IMAGE_USAGE_SAMPLED_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT;
 -- > imageCreateInfo.tiling = VK_IMAGE_TILING_OPTIMAL;
 -- >
 -- > vkCreateImage(device, &imageCreateInfo, NULL, &input);
@@ -280,7 +280,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_optical_flow Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_NV_optical_flow Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -522,35 +522,39 @@
 --
 -- [<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'
 --
+--     -   '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_EXTENSION_NOT_PRESENT'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_FORMAT_NOT_SUPPORTED'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_INITIALIZATION_FAILED'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_FORMAT_NOT_SUPPORTED'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- 'Vulkan.Core10.Enums.Format.FORMAT_B8G8R8A8_UNORM',
 -- 'Vulkan.Core10.Enums.Format.FORMAT_R8_UNORM' and
 -- 'Vulkan.Core10.Enums.Format.FORMAT_G8_B8R8_2PLANE_420_UNORM' are
 -- initially supported for images with
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#opticalflow-usage optical usage>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#opticalflow-usage optical usage>
 -- 'OPTICAL_FLOW_USAGE_INPUT_BIT_NV'.
 --
 -- 'Vulkan.Core10.Enums.Format.FORMAT_R16G16_SFIXED5_NV' is initially
 -- supported for images with
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#opticalflow-usage optical flow usage>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#opticalflow-usage optical flow usage>
 -- 'OPTICAL_FLOW_USAGE_OUTPUT_BIT_NV', 'OPTICAL_FLOW_USAGE_HINT_BIT_NV' and
 -- 'OPTICAL_FLOW_USAGE_GLOBAL_FLOW_BIT_NV'.
 --
 -- 'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT' and
 -- 'Vulkan.Core10.Enums.Format.FORMAT_R32_UINT' are initially supported for
 -- images with
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#opticalflow-usage optical flow usage>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#opticalflow-usage optical flow usage>
 -- 'OPTICAL_FLOW_USAGE_COST_BIT_NV'. It is recommended to use
 -- 'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT' because of the lower
 -- bandwidth.
@@ -626,6 +630,9 @@
 --     /must/ be a valid pointer to a
 --     'Vulkan.Extensions.Handles.OpticalFlowSessionNV' handle
 --
+-- -   #VUID-vkCreateOpticalFlowSessionNV-device-queuecount# The device
+--     /must/ have been created with at least @1@ queue
+--
 -- == Return Codes
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
@@ -634,10 +641,14 @@
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_INITIALIZATION_FAILED'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_INITIALIZATION_FAILED'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_optical_flow VK_NV_optical_flow>,
@@ -656,7 +667,7 @@
                               -- flow session.
                               (OpticalFlowSessionCreateInfoNV a)
                            -> -- | @pAllocator@ controls host memory allocation as described in the
-                              -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                              -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
                               -- chapter.
                               ("allocator" ::: Maybe AllocationCallbacks)
                            -> io (OpticalFlowSessionNV)
@@ -733,7 +744,7 @@
                             -> -- | @session@ is the optical flow session to be destroyed.
                                OpticalFlowSessionNV
                             -> -- | @pAllocator@ controls host memory allocation as described in the
-                               -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                               -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
                                -- chapter.
                                ("allocator" ::: Maybe AllocationCallbacks)
                             -> io ()
@@ -761,24 +772,6 @@
 
 -- | vkBindOpticalFlowSessionImageNV - Bind image to an optical flow session
 --
--- = Parameters
---
--- -   @device@ is the device which owns the optical flow session object
---     @session@.
---
--- -   @session@ is the optical flow session object to which the image view
---     is to be bound.
---
--- -   @bindingPoint@ specifies the binding point
---     'OpticalFlowSessionBindingPointNV' to which the image view is bound.
---
--- -   @view@ is a 'Vulkan.Core10.Handles.ImageView' to be bound.
---
--- -   layout /must/ specify the layout that the image subresources
---     accessible from @view@ will be in at the time the optical flow
---     vectors are calculated with 'cmdOpticalFlowExecuteNV' on a
---     'Vulkan.Core10.Handles.Device'.
---
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-vkBindOpticalFlowSessionImageNV-device-parameter# @device@
@@ -815,10 +808,14 @@
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_INITIALIZATION_FAILED'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_INITIALIZATION_FAILED'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_optical_flow VK_NV_optical_flow>,
@@ -828,15 +825,21 @@
 -- 'Vulkan.Extensions.Handles.OpticalFlowSessionNV'
 bindOpticalFlowSessionImageNV :: forall io
                                . (MonadIO io)
-                              => -- No documentation found for Nested "vkBindOpticalFlowSessionImageNV" "device"
+                              => -- | @device@ is the device which owns the optical flow session object
+                                 -- @session@.
                                  Device
-                              -> -- No documentation found for Nested "vkBindOpticalFlowSessionImageNV" "session"
+                              -> -- | @session@ is the optical flow session object to which the image view is
+                                 -- to be bound.
                                  OpticalFlowSessionNV
-                              -> -- No documentation found for Nested "vkBindOpticalFlowSessionImageNV" "bindingPoint"
+                              -> -- | @bindingPoint@ specifies the binding point
+                                 -- 'OpticalFlowSessionBindingPointNV' to which the image view is bound.
                                  OpticalFlowSessionBindingPointNV
-                              -> -- No documentation found for Nested "vkBindOpticalFlowSessionImageNV" "view"
+                              -> -- | @view@ is a 'Vulkan.Core10.Handles.ImageView' to be bound.
                                  ImageView
-                              -> -- No documentation found for Nested "vkBindOpticalFlowSessionImageNV" "layout"
+                              -> -- | @layout@ /must/ specify the layout that the image subresources
+                                 -- accessible from @view@ will be in at the time the optical flow vectors
+                                 -- are calculated with 'cmdOpticalFlowExecuteNV' on a
+                                 -- 'Vulkan.Core10.Handles.Device'.
                                  ImageLayout
                               -> io ()
 bindOpticalFlowSessionImageNV device
@@ -885,11 +888,16 @@
 --
 -- -   #VUID-vkCmdOpticalFlowExecuteNV-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support optical flow operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_OPTICAL_FLOW_BIT_NV'
+--     operations
 --
 -- -   #VUID-vkCmdOpticalFlowExecuteNV-renderpass# This command /must/ only
 --     be called outside of a render pass instance
 --
+-- -   #VUID-vkCmdOpticalFlowExecuteNV-suspended# This command /must/ not
+--     be called between suspended render pass instances
+--
 -- -   #VUID-vkCmdOpticalFlowExecuteNV-videocoding# This command /must/
 --     only be called outside of a video coding scope
 --
@@ -909,10 +917,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | Opticalflow                                                                                                           | Action                                                                                                                                 |
+-- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | VK_QUEUE_OPTICAL_FLOW_BIT_NV                                                                                          | Action                                                                                                                                 |
 -- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdOpticalFlowExecuteNV is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_optical_flow VK_NV_optical_flow>,
@@ -963,12 +976,22 @@
 -- 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. 'PhysicalDeviceOpticalFlowFeaturesNV' /can/ also be used in
--- the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceOpticalFlowFeaturesNV', it /must/ add an instance of the
+-- structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_optical_flow VK_NV_optical_flow>,
@@ -1029,8 +1052,12 @@
 -- it is filled in with each corresponding implementation-dependent
 -- property.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_optical_flow VK_NV_optical_flow>,
@@ -1168,8 +1195,14 @@
 -- | VkOpticalFlowImageFormatInfoNV - Structure describing optical flow image
 -- format info
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Image.ImageCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceImageFormatInfo2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_optical_flow VK_NV_optical_flow>,
@@ -1359,7 +1392,7 @@
 --     'OpticalFlowSessionCreatePrivateDataInfoNV'
 --
 -- -   #VUID-VkOpticalFlowSessionCreateInfoNV-sType-unique# The @sType@
---     value of each struct in the @pNext@ chain /must/ be unique
+--     value of each structure in the @pNext@ chain /must/ be unique
 --
 -- -   #VUID-VkOpticalFlowSessionCreateInfoNV-imageFormat-parameter#
 --     @imageFormat@ /must/ be a valid 'Vulkan.Core10.Enums.Format.Format'
@@ -1527,8 +1560,12 @@
 -- | VkOpticalFlowSessionCreatePrivateDataInfoNV - Structure for NV internal
 -- use only
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'OpticalFlowSessionCreateInfoNV'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_optical_flow VK_NV_optical_flow>,
@@ -1677,6 +1714,20 @@
 -- | VkOpticalFlowGridSizeFlagBitsNV - Bits specifying grid sizes for optical
 -- flow operations
 --
+-- = Description
+--
+-- -   'OPTICAL_FLOW_GRID_SIZE_1X1_BIT_NV' specifies that grid is 1x1
+--     pixel.
+--
+-- -   'OPTICAL_FLOW_GRID_SIZE_2X2_BIT_NV' specifies that grid is 2x2
+--     pixel.
+--
+-- -   'OPTICAL_FLOW_GRID_SIZE_4X4_BIT_NV' specifies that grid is 4x4
+--     pixel.
+--
+-- -   'OPTICAL_FLOW_GRID_SIZE_8X8_BIT_NV' specifies that grid is 8x8
+--     pixel.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_optical_flow VK_NV_optical_flow>,
@@ -1687,16 +1738,16 @@
 -- No documentation found for Nested "VkOpticalFlowGridSizeFlagBitsNV" "VK_OPTICAL_FLOW_GRID_SIZE_UNKNOWN_NV"
 pattern OPTICAL_FLOW_GRID_SIZE_UNKNOWN_NV = OpticalFlowGridSizeFlagBitsNV 0x00000000
 
--- | 'OPTICAL_FLOW_GRID_SIZE_1X1_BIT_NV' specifies that grid is 1x1 pixel.
+-- No documentation found for Nested "VkOpticalFlowGridSizeFlagBitsNV" "VK_OPTICAL_FLOW_GRID_SIZE_1X1_BIT_NV"
 pattern OPTICAL_FLOW_GRID_SIZE_1X1_BIT_NV = OpticalFlowGridSizeFlagBitsNV 0x00000001
 
--- | 'OPTICAL_FLOW_GRID_SIZE_2X2_BIT_NV' specifies that grid is 2x2 pixel.
+-- No documentation found for Nested "VkOpticalFlowGridSizeFlagBitsNV" "VK_OPTICAL_FLOW_GRID_SIZE_2X2_BIT_NV"
 pattern OPTICAL_FLOW_GRID_SIZE_2X2_BIT_NV = OpticalFlowGridSizeFlagBitsNV 0x00000002
 
--- | 'OPTICAL_FLOW_GRID_SIZE_4X4_BIT_NV' specifies that grid is 4x4 pixel.
+-- No documentation found for Nested "VkOpticalFlowGridSizeFlagBitsNV" "VK_OPTICAL_FLOW_GRID_SIZE_4X4_BIT_NV"
 pattern OPTICAL_FLOW_GRID_SIZE_4X4_BIT_NV = OpticalFlowGridSizeFlagBitsNV 0x00000004
 
--- | 'OPTICAL_FLOW_GRID_SIZE_8X8_BIT_NV' specifies that grid is 8x8 pixel.
+-- No documentation found for Nested "VkOpticalFlowGridSizeFlagBitsNV" "VK_OPTICAL_FLOW_GRID_SIZE_8X8_BIT_NV"
 pattern OPTICAL_FLOW_GRID_SIZE_8X8_BIT_NV = OpticalFlowGridSizeFlagBitsNV 0x00000008
 
 conNameOpticalFlowGridSizeFlagBitsNV :: String
@@ -1751,6 +1802,23 @@
 -- | VkOpticalFlowUsageFlagBitsNV - Bits specifying usage for optical flow
 -- operations
 --
+-- = Description
+--
+-- -   'OPTICAL_FLOW_USAGE_INPUT_BIT_NV' specifies that the image /can/ be
+--     used as input or reference frame for an optical flow operation.
+--
+-- -   'OPTICAL_FLOW_USAGE_OUTPUT_BIT_NV' specifies that the image /can/ be
+--     used as output flow vector map for an optical flow operation.
+--
+-- -   'OPTICAL_FLOW_USAGE_HINT_BIT_NV' specifies that the image /can/ be
+--     used as hint flow vector map for an optical flow operation.
+--
+-- -   'OPTICAL_FLOW_USAGE_COST_BIT_NV' specifies that the image /can/ be
+--     used as output cost map for an optical flow operation.
+--
+-- -   'OPTICAL_FLOW_USAGE_GLOBAL_FLOW_BIT_NV' specifies that the image
+--     /can/ be used as global flow vector for an optical flow operation.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_optical_flow VK_NV_optical_flow>,
@@ -1761,24 +1829,19 @@
 -- No documentation found for Nested "VkOpticalFlowUsageFlagBitsNV" "VK_OPTICAL_FLOW_USAGE_UNKNOWN_NV"
 pattern OPTICAL_FLOW_USAGE_UNKNOWN_NV = OpticalFlowUsageFlagBitsNV 0x00000000
 
--- | 'OPTICAL_FLOW_USAGE_INPUT_BIT_NV' specifies that the image /can/ be used
--- as input or reference frame for an optical flow operation.
+-- No documentation found for Nested "VkOpticalFlowUsageFlagBitsNV" "VK_OPTICAL_FLOW_USAGE_INPUT_BIT_NV"
 pattern OPTICAL_FLOW_USAGE_INPUT_BIT_NV = OpticalFlowUsageFlagBitsNV 0x00000001
 
--- | 'OPTICAL_FLOW_USAGE_OUTPUT_BIT_NV' specifies that the image /can/ be
--- used as output flow vector map for an optical flow operation.
+-- No documentation found for Nested "VkOpticalFlowUsageFlagBitsNV" "VK_OPTICAL_FLOW_USAGE_OUTPUT_BIT_NV"
 pattern OPTICAL_FLOW_USAGE_OUTPUT_BIT_NV = OpticalFlowUsageFlagBitsNV 0x00000002
 
--- | 'OPTICAL_FLOW_USAGE_HINT_BIT_NV' specifies that the image /can/ be used
--- as hint flow vector map for an optical flow operation.
+-- No documentation found for Nested "VkOpticalFlowUsageFlagBitsNV" "VK_OPTICAL_FLOW_USAGE_HINT_BIT_NV"
 pattern OPTICAL_FLOW_USAGE_HINT_BIT_NV = OpticalFlowUsageFlagBitsNV 0x00000004
 
--- | 'OPTICAL_FLOW_USAGE_COST_BIT_NV' specifies that the image /can/ be used
--- as output cost map for an optical flow operation.
+-- No documentation found for Nested "VkOpticalFlowUsageFlagBitsNV" "VK_OPTICAL_FLOW_USAGE_COST_BIT_NV"
 pattern OPTICAL_FLOW_USAGE_COST_BIT_NV = OpticalFlowUsageFlagBitsNV 0x00000008
 
--- | 'OPTICAL_FLOW_USAGE_GLOBAL_FLOW_BIT_NV' specifies that the image /can/
--- be used as global flow vector for an optical flow operation.
+-- No documentation found for Nested "VkOpticalFlowUsageFlagBitsNV" "VK_OPTICAL_FLOW_USAGE_GLOBAL_FLOW_BIT_NV"
 pattern OPTICAL_FLOW_USAGE_GLOBAL_FLOW_BIT_NV = OpticalFlowUsageFlagBitsNV 0x00000010
 
 conNameOpticalFlowUsageFlagBitsNV :: String
@@ -1834,6 +1897,17 @@
 
 -- | VkOpticalFlowPerformanceLevelNV - Optical flow performance level types
 --
+-- = Description
+--
+-- -   'OPTICAL_FLOW_PERFORMANCE_LEVEL_SLOW_NV' is a level with slower
+--     performance but higher quality.
+--
+-- -   'OPTICAL_FLOW_PERFORMANCE_LEVEL_MEDIUM_NV' is a level with medium
+--     performance and medium quality.
+--
+-- -   'OPTICAL_FLOW_PERFORMANCE_LEVEL_FAST_NV' is a preset with higher
+--     performance but lower quality.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_optical_flow VK_NV_optical_flow>,
@@ -1844,16 +1918,13 @@
 -- No documentation found for Nested "VkOpticalFlowPerformanceLevelNV" "VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_UNKNOWN_NV"
 pattern OPTICAL_FLOW_PERFORMANCE_LEVEL_UNKNOWN_NV = OpticalFlowPerformanceLevelNV 0
 
--- | 'OPTICAL_FLOW_PERFORMANCE_LEVEL_SLOW_NV' is a level with slower
--- performance but higher quality.
+-- No documentation found for Nested "VkOpticalFlowPerformanceLevelNV" "VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_SLOW_NV"
 pattern OPTICAL_FLOW_PERFORMANCE_LEVEL_SLOW_NV = OpticalFlowPerformanceLevelNV 1
 
--- | 'OPTICAL_FLOW_PERFORMANCE_LEVEL_MEDIUM_NV' is a level with medium
--- performance and medium quality.
+-- No documentation found for Nested "VkOpticalFlowPerformanceLevelNV" "VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_MEDIUM_NV"
 pattern OPTICAL_FLOW_PERFORMANCE_LEVEL_MEDIUM_NV = OpticalFlowPerformanceLevelNV 2
 
--- | 'OPTICAL_FLOW_PERFORMANCE_LEVEL_FAST_NV' is a preset with higher
--- performance but lower quality.
+-- No documentation found for Nested "VkOpticalFlowPerformanceLevelNV" "VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_FAST_NV"
 pattern OPTICAL_FLOW_PERFORMANCE_LEVEL_FAST_NV = OpticalFlowPerformanceLevelNV 3
 
 {-# COMPLETE
@@ -1910,6 +1981,37 @@
 -- | VkOpticalFlowSessionBindingPointNV - Binding points of an optical flow
 -- session
 --
+-- = Description
+--
+-- -   'OPTICAL_FLOW_SESSION_BINDING_POINT_INPUT_NV' specifies the binding
+--     point for the input frame.
+--
+-- -   'OPTICAL_FLOW_SESSION_BINDING_POINT_REFERENCE_NV' specifies the
+--     binding point for the input reference frame.
+--
+-- -   'OPTICAL_FLOW_SESSION_BINDING_POINT_HINT_NV' specifies the binding
+--     point for the optional external hint flow vectors.
+--
+-- -   'OPTICAL_FLOW_SESSION_BINDING_POINT_FLOW_VECTOR_NV' specifies the
+--     binding point for output flow vectors of default forward flow
+--     calculation.
+--
+-- -   'OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_FLOW_VECTOR_NV'
+--     specifies the binding point for the optional output flow vector map
+--     of optional backward flow calculation.
+--
+-- -   'OPTICAL_FLOW_SESSION_BINDING_POINT_COST_NV' specifies the binding
+--     point for the optional output cost map of default forward flow
+--     calculation.
+--
+-- -   'OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_COST_NV' specifies the
+--     binding point for the optional output cost map of optional backward
+--     flow calculation.
+--
+-- -   'OPTICAL_FLOW_SESSION_BINDING_POINT_GLOBAL_FLOW_NV' specifies the
+--     binding point for the optional global flow value of default forward
+--     flow calculation.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_optical_flow VK_NV_optical_flow>,
@@ -1920,40 +2022,28 @@
 -- No documentation found for Nested "VkOpticalFlowSessionBindingPointNV" "VK_OPTICAL_FLOW_SESSION_BINDING_POINT_UNKNOWN_NV"
 pattern OPTICAL_FLOW_SESSION_BINDING_POINT_UNKNOWN_NV = OpticalFlowSessionBindingPointNV 0
 
--- | 'OPTICAL_FLOW_SESSION_BINDING_POINT_INPUT_NV' specifies the binding
--- point for the input frame.
+-- No documentation found for Nested "VkOpticalFlowSessionBindingPointNV" "VK_OPTICAL_FLOW_SESSION_BINDING_POINT_INPUT_NV"
 pattern OPTICAL_FLOW_SESSION_BINDING_POINT_INPUT_NV = OpticalFlowSessionBindingPointNV 1
 
--- | 'OPTICAL_FLOW_SESSION_BINDING_POINT_REFERENCE_NV' specifies the binding
--- point for the input reference frame.
+-- No documentation found for Nested "VkOpticalFlowSessionBindingPointNV" "VK_OPTICAL_FLOW_SESSION_BINDING_POINT_REFERENCE_NV"
 pattern OPTICAL_FLOW_SESSION_BINDING_POINT_REFERENCE_NV = OpticalFlowSessionBindingPointNV 2
 
--- | 'OPTICAL_FLOW_SESSION_BINDING_POINT_HINT_NV' specifies the binding point
--- for the optional external hint flow vectors.
+-- No documentation found for Nested "VkOpticalFlowSessionBindingPointNV" "VK_OPTICAL_FLOW_SESSION_BINDING_POINT_HINT_NV"
 pattern OPTICAL_FLOW_SESSION_BINDING_POINT_HINT_NV = OpticalFlowSessionBindingPointNV 3
 
--- | 'OPTICAL_FLOW_SESSION_BINDING_POINT_FLOW_VECTOR_NV' specifies the
--- binding point for output flow vectors of default forward flow
--- calculation.
+-- No documentation found for Nested "VkOpticalFlowSessionBindingPointNV" "VK_OPTICAL_FLOW_SESSION_BINDING_POINT_FLOW_VECTOR_NV"
 pattern OPTICAL_FLOW_SESSION_BINDING_POINT_FLOW_VECTOR_NV = OpticalFlowSessionBindingPointNV 4
 
--- | 'OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_FLOW_VECTOR_NV' specifies
--- the binding point for the optional output flow vector map of optional
--- backward flow calculation.
+-- No documentation found for Nested "VkOpticalFlowSessionBindingPointNV" "VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_FLOW_VECTOR_NV"
 pattern OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_FLOW_VECTOR_NV = OpticalFlowSessionBindingPointNV 5
 
--- | 'OPTICAL_FLOW_SESSION_BINDING_POINT_COST_NV' specifies the binding point
--- for the optional output cost map of default forward flow calculation.
+-- No documentation found for Nested "VkOpticalFlowSessionBindingPointNV" "VK_OPTICAL_FLOW_SESSION_BINDING_POINT_COST_NV"
 pattern OPTICAL_FLOW_SESSION_BINDING_POINT_COST_NV = OpticalFlowSessionBindingPointNV 6
 
--- | 'OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_COST_NV' specifies the
--- binding point for the optional output cost map of optional backward flow
--- calculation.
+-- No documentation found for Nested "VkOpticalFlowSessionBindingPointNV" "VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_COST_NV"
 pattern OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_COST_NV = OpticalFlowSessionBindingPointNV 7
 
--- | 'OPTICAL_FLOW_SESSION_BINDING_POINT_GLOBAL_FLOW_NV' specifies the
--- binding point for the optional global flow value of default forward flow
--- calculation.
+-- No documentation found for Nested "VkOpticalFlowSessionBindingPointNV" "VK_OPTICAL_FLOW_SESSION_BINDING_POINT_GLOBAL_FLOW_NV"
 pattern OPTICAL_FLOW_SESSION_BINDING_POINT_GLOBAL_FLOW_NV = OpticalFlowSessionBindingPointNV 8
 
 {-# COMPLETE
@@ -2037,6 +2127,38 @@
 -- | VkOpticalFlowSessionCreateFlagBitsNV - Bits specifying flags for optical
 -- flow session
 --
+-- = Description
+--
+-- -   'OPTICAL_FLOW_SESSION_CREATE_ENABLE_HINT_BIT_NV' specifies that a
+--     'Vulkan.Core10.Handles.ImageView' with external flow vectors will be
+--     used as hints in performing the motion search and /must/ be bound to
+--     'OPTICAL_FLOW_SESSION_BINDING_POINT_HINT_NV'.
+--
+-- -   'OPTICAL_FLOW_SESSION_CREATE_ENABLE_COST_BIT_NV' specifies that the
+--     cost for the forward flow is generated in a
+--     'Vulkan.Core10.Handles.ImageView' which /must/ be bound to
+--     'OPTICAL_FLOW_SESSION_BINDING_POINT_COST_NV'. Additionally, if
+--     'OPTICAL_FLOW_SESSION_CREATE_BOTH_DIRECTIONS_BIT_NV' is also set,
+--     the cost for backward flow is generated in a
+--     'Vulkan.Core10.Handles.ImageView' which /must/ be bound to
+--     'OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_COST_NV'. The cost is
+--     the confidence level of the flow vector for each grid in the frame.
+--     The Cost implies how (in)accurate the flow vector is. Higher cost
+--     value implies the flow vector to be less accurate and vice-versa.
+--
+-- -   'OPTICAL_FLOW_SESSION_CREATE_ENABLE_GLOBAL_FLOW_BIT_NV' specifies
+--     that a global flow vector is estimated from forward flow in a single
+--     pixel 'Vulkan.Core10.Handles.ImageView' which /must/ be bound to
+--     'OPTICAL_FLOW_SESSION_BINDING_POINT_GLOBAL_FLOW_NV'.
+--
+-- -   'OPTICAL_FLOW_SESSION_CREATE_ALLOW_REGIONS_BIT_NV' specifies that
+--     regions of interest /can/ be specified in
+--     'OpticalFlowExecuteInfoNV'.
+--
+-- -   'OPTICAL_FLOW_SESSION_CREATE_BOTH_DIRECTIONS_BIT_NV' specifies that
+--     backward flow is generated in addition to forward flow which is
+--     always generated.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_optical_flow VK_NV_optical_flow>,
@@ -2044,37 +2166,19 @@
 newtype OpticalFlowSessionCreateFlagBitsNV = OpticalFlowSessionCreateFlagBitsNV Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'OPTICAL_FLOW_SESSION_CREATE_ENABLE_HINT_BIT_NV' specifies that a
--- 'Vulkan.Core10.Handles.ImageView' with external flow vectors will be
--- used as hints in performing the motion search and /must/ be bound to
--- 'OPTICAL_FLOW_SESSION_BINDING_POINT_HINT_NV'.
+-- No documentation found for Nested "VkOpticalFlowSessionCreateFlagBitsNV" "VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_HINT_BIT_NV"
 pattern OPTICAL_FLOW_SESSION_CREATE_ENABLE_HINT_BIT_NV = OpticalFlowSessionCreateFlagBitsNV 0x00000001
 
--- | 'OPTICAL_FLOW_SESSION_CREATE_ENABLE_COST_BIT_NV' specifies that the cost
--- for the forward flow is generated in a 'Vulkan.Core10.Handles.ImageView'
--- which /must/ be bound to 'OPTICAL_FLOW_SESSION_BINDING_POINT_COST_NV'.
--- Additionally, if 'OPTICAL_FLOW_SESSION_CREATE_BOTH_DIRECTIONS_BIT_NV' is
--- also set, the cost for backward flow is generated in a
--- 'Vulkan.Core10.Handles.ImageView' which /must/ be bound to
--- 'OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_COST_NV'. The cost is the
--- confidence level of the flow vector for each grid in the frame. The Cost
--- implies how (in)accurate the flow vector is. Higher cost value implies
--- the flow vector to be less accurate and vice-versa.
+-- No documentation found for Nested "VkOpticalFlowSessionCreateFlagBitsNV" "VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_COST_BIT_NV"
 pattern OPTICAL_FLOW_SESSION_CREATE_ENABLE_COST_BIT_NV = OpticalFlowSessionCreateFlagBitsNV 0x00000002
 
--- | 'OPTICAL_FLOW_SESSION_CREATE_ENABLE_GLOBAL_FLOW_BIT_NV' specifies that a
--- global flow vector is estimated from forward flow in a single pixel
--- 'Vulkan.Core10.Handles.ImageView' which /must/ be bound to
--- 'OPTICAL_FLOW_SESSION_BINDING_POINT_GLOBAL_FLOW_NV'.
+-- No documentation found for Nested "VkOpticalFlowSessionCreateFlagBitsNV" "VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_GLOBAL_FLOW_BIT_NV"
 pattern OPTICAL_FLOW_SESSION_CREATE_ENABLE_GLOBAL_FLOW_BIT_NV = OpticalFlowSessionCreateFlagBitsNV 0x00000004
 
--- | 'OPTICAL_FLOW_SESSION_CREATE_ALLOW_REGIONS_BIT_NV' specifies that
--- regions of interest /can/ be specified in 'OpticalFlowExecuteInfoNV'.
+-- No documentation found for Nested "VkOpticalFlowSessionCreateFlagBitsNV" "VK_OPTICAL_FLOW_SESSION_CREATE_ALLOW_REGIONS_BIT_NV"
 pattern OPTICAL_FLOW_SESSION_CREATE_ALLOW_REGIONS_BIT_NV = OpticalFlowSessionCreateFlagBitsNV 0x00000008
 
--- | 'OPTICAL_FLOW_SESSION_CREATE_BOTH_DIRECTIONS_BIT_NV' specifies that
--- backward flow is generated in addition to forward flow which is always
--- generated.
+-- No documentation found for Nested "VkOpticalFlowSessionCreateFlagBitsNV" "VK_OPTICAL_FLOW_SESSION_CREATE_BOTH_DIRECTIONS_BIT_NV"
 pattern OPTICAL_FLOW_SESSION_CREATE_BOTH_DIRECTIONS_BIT_NV = OpticalFlowSessionCreateFlagBitsNV 0x00000010
 
 conNameOpticalFlowSessionCreateFlagBitsNV :: String
@@ -2129,6 +2233,17 @@
 -- | VkOpticalFlowExecuteFlagBitsNV - Bits specifying flags for an optical
 -- flow vector calculation
 --
+-- = Description
+--
+-- -   'OPTICAL_FLOW_EXECUTE_DISABLE_TEMPORAL_HINTS_BIT_NV' specifies that
+--     temporal hints from previously generated flow vectors are not used.
+--     If temporal hints are enabled, optical flow vectors from previous
+--     'cmdOpticalFlowExecuteNV' call are automatically used as hints for
+--     the current 'cmdOpticalFlowExecuteNV' call, to take advantage of
+--     temporal correlation in a video sequence. Temporal hints should be
+--     disabled if there is a-priori knowledge of no temporal correlation
+--     (e.g. a scene change, independent successive frame pairs).
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_optical_flow VK_NV_optical_flow>,
@@ -2136,14 +2251,7 @@
 newtype OpticalFlowExecuteFlagBitsNV = OpticalFlowExecuteFlagBitsNV Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'OPTICAL_FLOW_EXECUTE_DISABLE_TEMPORAL_HINTS_BIT_NV' specifies that
--- temporal hints from previously generated flow vectors are not used. If
--- temporal hints are enabled, optical flow vectors from previous
--- 'cmdOpticalFlowExecuteNV' call are automatically used as hints for the
--- current 'cmdOpticalFlowExecuteNV' call, to take advantage of temporal
--- correlation in a video sequence. Temporal hints should be disabled if
--- there is a-priori knowledge of no temporal correlation (e.g. a scene
--- change, independent successive frame pairs).
+-- No documentation found for Nested "VkOpticalFlowExecuteFlagBitsNV" "VK_OPTICAL_FLOW_EXECUTE_DISABLE_TEMPORAL_HINTS_BIT_NV"
 pattern OPTICAL_FLOW_EXECUTE_DISABLE_TEMPORAL_HINTS_BIT_NV = OpticalFlowExecuteFlagBitsNV 0x00000001
 
 conNameOpticalFlowExecuteFlagBitsNV :: String
diff --git a/src/Vulkan/Extensions/VK_NV_optical_flow.hs-boot b/src/Vulkan/Extensions/VK_NV_optical_flow.hs-boot
--- a/src/Vulkan/Extensions/VK_NV_optical_flow.hs-boot
+++ b/src/Vulkan/Extensions/VK_NV_optical_flow.hs-boot
@@ -234,7 +234,7 @@
 -- > imageCreateInfo.mipLevels = 1;
 -- > imageCreateInfo.arrayLayers = 1;
 -- > imageCreateInfo.samples = VK_SAMPLE_COUNT_1_BIT;
--- > imageCreateInfo.usage = VK_IMAGE_USAGE_SAMPLED_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT;;
+-- > imageCreateInfo.usage = VK_IMAGE_USAGE_SAMPLED_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT;
 -- > imageCreateInfo.tiling = VK_IMAGE_TILING_OPTIMAL;
 -- >
 -- > vkCreateImage(device, &imageCreateInfo, NULL, &input);
@@ -280,7 +280,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_optical_flow Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_NV_optical_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_NV_per_stage_descriptor_set.hs b/src/Vulkan/Extensions/VK_NV_per_stage_descriptor_set.hs
--- a/src/Vulkan/Extensions/VK_NV_per_stage_descriptor_set.hs
+++ b/src/Vulkan/Extensions/VK_NV_per_stage_descriptor_set.hs
@@ -22,7 +22,15 @@
 --
 -- [__Extension and Version Dependencies__]
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance6 VK_KHR_maintenance6>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.4 Vulkan Version 1.4>
 --
+-- [__Deprecation State__]
+--
+--     -   /Deprecated/ by
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_heap VK_EXT_descriptor_heap>
+--         extension
+--
 -- [__Contact__]
 --
 --     -   Piers Daniell
@@ -104,7 +112,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_per_stage_descriptor_set Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_NV_per_stage_descriptor_set Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -152,12 +160,22 @@
 -- 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. 'PhysicalDevicePerStageDescriptorSetFeaturesNV' /can/ also be
--- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDevicePerStageDescriptorSetFeaturesNV', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_per_stage_descriptor_set VK_NV_per_stage_descriptor_set>,
@@ -172,10 +190,10 @@
     perStageDescriptorSet :: Bool
   , -- | #features-dynamicPipelineLayout# @dynamicPipelineLayout@ indicates the
     -- implementation allows the @layout@ member of
-    -- 'Vulkan.Extensions.VK_KHR_maintenance6.BindDescriptorSetsInfoKHR',
-    -- 'Vulkan.Extensions.VK_KHR_maintenance6.PushConstantsInfoKHR',
-    -- 'Vulkan.Extensions.VK_KHR_maintenance6.PushDescriptorSetInfoKHR',
-    -- 'Vulkan.Extensions.VK_KHR_maintenance6.PushDescriptorSetWithTemplateInfoKHR',
+    -- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance6.BindDescriptorSetsInfo',
+    -- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance6.PushConstantsInfo',
+    -- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance6.PushDescriptorSetInfo',
+    -- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance6.PushDescriptorSetWithTemplateInfo',
     -- 'Vulkan.Extensions.VK_KHR_maintenance6.SetDescriptorBufferOffsetsInfoEXT'
     -- and
     -- 'Vulkan.Extensions.VK_KHR_maintenance6.BindDescriptorBufferEmbeddedSamplersInfoEXT'
diff --git a/src/Vulkan/Extensions/VK_NV_per_stage_descriptor_set.hs-boot b/src/Vulkan/Extensions/VK_NV_per_stage_descriptor_set.hs-boot
--- a/src/Vulkan/Extensions/VK_NV_per_stage_descriptor_set.hs-boot
+++ b/src/Vulkan/Extensions/VK_NV_per_stage_descriptor_set.hs-boot
@@ -22,7 +22,15 @@
 --
 -- [__Extension and Version Dependencies__]
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance6 VK_KHR_maintenance6>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.4 Vulkan Version 1.4>
 --
+-- [__Deprecation State__]
+--
+--     -   /Deprecated/ by
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_heap VK_EXT_descriptor_heap>
+--         extension
+--
 -- [__Contact__]
 --
 --     -   Piers Daniell
@@ -104,7 +112,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_per_stage_descriptor_set Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_NV_per_stage_descriptor_set Vulkan Specification>.
 --
 -- This 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_present_barrier.hs b/src/Vulkan/Extensions/VK_NV_present_barrier.hs
--- a/src/Vulkan/Extensions/VK_NV_present_barrier.hs
+++ b/src/Vulkan/Extensions/VK_NV_present_barrier.hs
@@ -127,7 +127,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_present_barrier Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_NV_present_barrier Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -179,12 +179,22 @@
 -- 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. 'PhysicalDevicePresentBarrierFeaturesNV' /can/ also be used
--- in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDevicePresentBarrierFeaturesNV', it /must/ add an instance of
+-- the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_present_barrier VK_NV_present_barrier>,
@@ -244,8 +254,12 @@
 -- indicates that the present barrier feature is not obtainable for this
 -- surface.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.SurfaceCapabilities2KHR'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_present_barrier VK_NV_present_barrier>,
@@ -308,7 +322,11 @@
 -- include this structure, it means the swapchain will stop using the
 -- present barrier.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR'
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Extensions/VK_NV_present_barrier.hs-boot b/src/Vulkan/Extensions/VK_NV_present_barrier.hs-boot
--- a/src/Vulkan/Extensions/VK_NV_present_barrier.hs-boot
+++ b/src/Vulkan/Extensions/VK_NV_present_barrier.hs-boot
@@ -127,7 +127,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_present_barrier Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_NV_present_barrier Vulkan Specification>.
 --
 -- This 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_present_metering.hs b/src/Vulkan/Extensions/VK_NV_present_metering.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_NV_present_metering.hs
@@ -0,0 +1,291 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_NV_present_metering - device extension
+--
+-- = VK_NV_present_metering
+--
+-- [__Name String__]
+--     @VK_NV_present_metering@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     614
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Not ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
+--
+-- [__Contact__]
+--
+--     -   Charles Hansen
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_NV_present_metering] @chansen%0A*Here describe the issue or question you have about the VK_NV_present_metering extension* >
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2025-01-08
+--
+-- [__Provisional__]
+--     *This extension is /provisional/ and /should/ not be used in
+--     production applications. The functionality defined by this extension
+--     /may/ change in ways that break backwards compatibility between
+--     revisions, and before the final release of the non-provisional
+--     version of this extension.
+--
+-- [__Contributors__]
+--
+--     -   Charles Hansen, NVIDIA
+--
+--     -   Lionel Duc, NVIDIA
+--
+-- == Description
+--
+-- This extension is used to evenly meter presents.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDevicePresentMeteringFeaturesNV'
+--
+-- -   Extending 'Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR':
+--
+--     -   'SetPresentConfigNV'
+--
+-- == New Enum Constants
+--
+-- -   'NV_PRESENT_METERING_EXTENSION_NAME'
+--
+-- -   'NV_PRESENT_METERING_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_METERING_FEATURES_NV'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SET_PRESENT_CONFIG_NV'
+--
+-- == Version History
+--
+-- -   Revision 1, 2025-01-08 (Charles Hansen)
+--
+--     -   Internal revisions
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_NV_present_metering Vulkan Specification>.
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_NV_present_metering  ( SetPresentConfigNV(..)
+                                                 , PhysicalDevicePresentMeteringFeaturesNV(..)
+                                                 , NV_PRESENT_METERING_SPEC_VERSION
+                                                 , pattern NV_PRESENT_METERING_SPEC_VERSION
+                                                 , NV_PRESENT_METERING_EXTENSION_NAME
+                                                 , pattern NV_PRESENT_METERING_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_PHYSICAL_DEVICE_PRESENT_METERING_FEATURES_NV))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SET_PRESENT_CONFIG_NV))
+-- | VkSetPresentConfigNV - Structure specifying present metering
+-- configuration
+--
+-- = Description
+--
+-- The metering configuration applies to all swapchains in the array in
+-- 'Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR'. The configuration
+-- specified by 'SetPresentConfigNV' applies to the next
+-- @numFramesPerBatch@ calls to
+-- 'Vulkan.Extensions.VK_KHR_swapchain.queuePresentKHR' and needs to be
+-- updated every @numFramesPerBatch@ presents.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_present_metering VK_NV_present_metering>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data SetPresentConfigNV = SetPresentConfigNV
+  { -- | @numFramesPerBatch@ is the number of frames to batch
+    --
+    -- #VUID-VkSetPresentConfigNV-numFramesPerBatch-10581# @numFramesPerBatch@
+    -- /must/ not be larger than 8
+    numFramesPerBatch :: Word32
+  , -- | @presentConfigFeedback@ will return the success or error status
+    presentConfigFeedback :: Word32
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (SetPresentConfigNV)
+#endif
+deriving instance Show SetPresentConfigNV
+
+instance ToCStruct SetPresentConfigNV where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p SetPresentConfigNV{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SET_PRESENT_CONFIG_NV)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (numFramesPerBatch)
+    poke ((p `plusPtr` 20 :: Ptr Word32)) (presentConfigFeedback)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SET_PRESENT_CONFIG_NV)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct SetPresentConfigNV where
+  peekCStruct p = do
+    numFramesPerBatch <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    presentConfigFeedback <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
+    pure $ SetPresentConfigNV
+             numFramesPerBatch presentConfigFeedback
+
+instance Storable SetPresentConfigNV where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero SetPresentConfigNV where
+  zero = SetPresentConfigNV
+           zero
+           zero
+
+
+-- | VkPhysicalDevicePresentMeteringFeaturesNV - Structure describing whether
+-- the present metering features can be supported by an implementation
+--
+-- = Members
+--
+-- This structure describes the following features:
+--
+-- = Description
+--
+-- If the 'PhysicalDevicePresentMeteringFeaturesNV' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDevicePresentMeteringFeaturesNV', it /must/ add an instance of
+-- the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_present_metering VK_NV_present_metering>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDevicePresentMeteringFeaturesNV = PhysicalDevicePresentMeteringFeaturesNV
+  { -- | #features-presentMetering# @presentMetering@ indicates whether the
+    -- implementation supports present metering capability.
+    presentMetering :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDevicePresentMeteringFeaturesNV)
+#endif
+deriving instance Show PhysicalDevicePresentMeteringFeaturesNV
+
+instance ToCStruct PhysicalDevicePresentMeteringFeaturesNV where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDevicePresentMeteringFeaturesNV{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_METERING_FEATURES_NV)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (presentMetering))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_METERING_FEATURES_NV)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDevicePresentMeteringFeaturesNV where
+  peekCStruct p = do
+    presentMetering <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDevicePresentMeteringFeaturesNV
+             (bool32ToBool presentMetering)
+
+instance Storable PhysicalDevicePresentMeteringFeaturesNV where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDevicePresentMeteringFeaturesNV where
+  zero = PhysicalDevicePresentMeteringFeaturesNV
+           zero
+
+
+type NV_PRESENT_METERING_SPEC_VERSION = 1
+
+-- No documentation found for TopLevel "VK_NV_PRESENT_METERING_SPEC_VERSION"
+pattern NV_PRESENT_METERING_SPEC_VERSION :: forall a . Integral a => a
+pattern NV_PRESENT_METERING_SPEC_VERSION = 1
+
+
+type NV_PRESENT_METERING_EXTENSION_NAME = "VK_NV_present_metering"
+
+-- No documentation found for TopLevel "VK_NV_PRESENT_METERING_EXTENSION_NAME"
+pattern NV_PRESENT_METERING_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern NV_PRESENT_METERING_EXTENSION_NAME = "VK_NV_present_metering"
+
diff --git a/src/Vulkan/Extensions/VK_NV_present_metering.hs-boot b/src/Vulkan/Extensions/VK_NV_present_metering.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_NV_present_metering.hs-boot
@@ -0,0 +1,118 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_NV_present_metering - device extension
+--
+-- = VK_NV_present_metering
+--
+-- [__Name String__]
+--     @VK_NV_present_metering@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     614
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Not ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
+--
+-- [__Contact__]
+--
+--     -   Charles Hansen
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_NV_present_metering] @chansen%0A*Here describe the issue or question you have about the VK_NV_present_metering extension* >
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2025-01-08
+--
+-- [__Provisional__]
+--     *This extension is /provisional/ and /should/ not be used in
+--     production applications. The functionality defined by this extension
+--     /may/ change in ways that break backwards compatibility between
+--     revisions, and before the final release of the non-provisional
+--     version of this extension.
+--
+-- [__Contributors__]
+--
+--     -   Charles Hansen, NVIDIA
+--
+--     -   Lionel Duc, NVIDIA
+--
+-- == Description
+--
+-- This extension is used to evenly meter presents.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDevicePresentMeteringFeaturesNV'
+--
+-- -   Extending 'Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR':
+--
+--     -   'SetPresentConfigNV'
+--
+-- == New Enum Constants
+--
+-- -   'NV_PRESENT_METERING_EXTENSION_NAME'
+--
+-- -   'NV_PRESENT_METERING_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_METERING_FEATURES_NV'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SET_PRESENT_CONFIG_NV'
+--
+-- == Version History
+--
+-- -   Revision 1, 2025-01-08 (Charles Hansen)
+--
+--     -   Internal revisions
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_NV_present_metering Vulkan Specification>.
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_NV_present_metering  ( PhysicalDevicePresentMeteringFeaturesNV
+                                                 , SetPresentConfigNV
+                                                 ) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data PhysicalDevicePresentMeteringFeaturesNV
+
+instance ToCStruct PhysicalDevicePresentMeteringFeaturesNV
+instance Show PhysicalDevicePresentMeteringFeaturesNV
+
+instance FromCStruct PhysicalDevicePresentMeteringFeaturesNV
+
+
+data SetPresentConfigNV
+
+instance ToCStruct SetPresentConfigNV
+instance Show SetPresentConfigNV
+
+instance FromCStruct SetPresentConfigNV
+
diff --git a/src/Vulkan/Extensions/VK_NV_push_constant_bank.hs b/src/Vulkan/Extensions/VK_NV_push_constant_bank.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_NV_push_constant_bank.hs
@@ -0,0 +1,541 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_NV_push_constant_bank - device extension
+--
+-- = VK_NV_push_constant_bank
+--
+-- [__Name String__]
+--     @VK_NV_push_constant_bank@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     581
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Not ratified
+--
+-- [__Extension and Version Dependencies__]
+--     None
+--
+-- [__SPIR-V Dependencies__]
+--
+--     -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/NV/SPV_NV_push_constant_bank.html SPV_NV_push_constant_bank>
+--
+-- [__Contact__]
+--
+--     -   Vassili Nikolaev
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_NV_push_constant_bank] @vasnik1%0A*Here describe the issue or question you have about the VK_NV_push_constant_bank extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_NV_push_constant_bank.adoc VK_NV_push_constant_bank>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2025-09-15
+--
+-- [__Contributors__]
+--
+--     -   Pat Brown, NVIDIA
+--
+--     -   Piers Daniell, NVIDIA
+--
+--     -   Rodrigo Locatti, NVIDIA
+--
+--     -   Daniel Story, Nintendo
+--
+-- == Description
+--
+-- The
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_push_constant_bank VK_NV_push_constant_bank>
+-- extension allows applications to specify a bank and offset for push
+-- constants, enabling more flexible push constant management in descriptor
+-- heap scenarios where shaders are able to access different root
+-- descriptors.
+--
+-- Traditional push constants are placed in a default location, but this
+-- extension allows applications to specify which hardware constant bank to
+-- use and at what offset within that bank. This provides greater control
+-- over memory layout and enables more efficient use of hardware resources
+-- in advanced descriptor heap configurations.
+--
+-- The extension integrates with
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_heap VK_EXT_descriptor_heap>
+-- by allowing 'PushConstantBankInfoNV' structures to be chained to
+-- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DescriptorSetAndBindingMappingEXT',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_heap.PushDataInfoEXT',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance6.PushConstantsInfo', or
+-- 'Vulkan.Extensions.VK_EXT_device_generated_commands.IndirectCommandsLayoutTokenEXT'
+-- structures, specifying the hardware bank where push constants should be
+-- placed as part of the descriptor heap mapping configuration or push data
+-- operations.
+--
+-- Key features include:
+--
+-- -   Bank and offset specification for push constant placement
+--
+-- -   Integration with descriptor heap mapping through structure chaining
+--
+-- -   Support for GLSL shader qualifiers for bank and offset specification
+--     in SPIR-V
+--
+-- -   Validation of bank bounds and alignment requirements
+--
+-- -   Compatibility with existing push constant API
+--
+-- The number of available push constant banks is implementation-dependent
+-- and can be queried through separate limits in
+-- 'PhysicalDevicePushConstantBankPropertiesNV':
+-- @maxGraphicsPushConstantBanks@ and @maxComputePushConstantBanks@ for
+-- non-descriptor heap usage, and @maxGraphicsPushDataBanks@ and
+-- @maxComputePushDataBanks@ for descriptor heap scenarios. Applications
+-- must ensure bank indices remain within the appropriate
+-- implementation-defined range based on the shader type and usage context.
+--
+-- Shader support for banks and member offsets are defined by the
+-- <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/NV/SPV_NV_push_constant_bank.html SPV_NV_push_constant_bank>
+-- SPIR-V extension, which can be used with the
+-- <https://github.com/KhronosGroup/GLSL/blob/main/extensions/nv/GLSL_NV_push_constant_bank.txt GLSL_NV_push_constant_bank>
+-- GLSL extension.
+--
+-- == New SPIR-V Capabilities
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-PushConstantBanksNV PushConstantBanksNV>
+--
+-- == New SPIR-V Decorations
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-pushconstant-decorations-banknv BankNV>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-pushconstant-decorations-memberoffsetnv MemberOffsetNV>
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DescriptorSetAndBindingMappingEXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.PushDataInfoEXT',
+--     'Vulkan.Core14.Promoted_From_VK_KHR_maintenance6.PushConstantsInfo',
+--     'Vulkan.Extensions.VK_EXT_device_generated_commands.IndirectCommandsLayoutTokenEXT':
+--
+--     -   'PushConstantBankInfoNV'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDevicePushConstantBankFeaturesNV'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDevicePushConstantBankPropertiesNV'
+--
+-- == New Enum Constants
+--
+-- -   'NV_PUSH_CONSTANT_BANK_EXTENSION_NAME'
+--
+-- -   'NV_PUSH_CONSTANT_BANK_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_CONSTANT_BANK_FEATURES_NV'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_CONSTANT_BANK_PROPERTIES_NV'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PUSH_CONSTANT_BANK_INFO_NV'
+--
+-- == Issues
+--
+-- None.
+--
+-- == Version History
+--
+-- -   Revision 1, 2025-09-15 (NVIDIA Vassili Nikolaev)
+--
+--     -   Initial draft
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_NV_push_constant_bank Vulkan Specification>.
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_NV_push_constant_bank  ( PushConstantBankInfoNV(..)
+                                                   , PhysicalDevicePushConstantBankFeaturesNV(..)
+                                                   , PhysicalDevicePushConstantBankPropertiesNV(..)
+                                                   , NV_PUSH_CONSTANT_BANK_SPEC_VERSION
+                                                   , pattern NV_PUSH_CONSTANT_BANK_SPEC_VERSION
+                                                   , NV_PUSH_CONSTANT_BANK_EXTENSION_NAME
+                                                   , pattern NV_PUSH_CONSTANT_BANK_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_PHYSICAL_DEVICE_PUSH_CONSTANT_BANK_FEATURES_NV))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_CONSTANT_BANK_PROPERTIES_NV))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PUSH_CONSTANT_BANK_INFO_NV))
+-- | VkPushConstantBankInfoNV - Structure specifying push constant bank
+-- information
+--
+-- = Description
+--
+-- This structure /can/ be chained to
+-- 'Vulkan.Extensions.VK_EXT_descriptor_heap.PushDataInfoEXT',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance6.PushConstantsInfo',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DescriptorSetAndBindingMappingEXT',
+-- and
+-- 'Vulkan.Extensions.VK_EXT_device_generated_commands.IndirectCommandsLayoutTokenEXT'
+-- via the @pNext@ chain to specify push constant bank placement:
+--
+-- -   When chained to
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.PushDataInfoEXT', it
+--     specifies the hardware bank into which
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.cmdPushDataEXT' pushes the
+--     data.
+--
+-- -   When chained to
+--     'Vulkan.Core14.Promoted_From_VK_KHR_maintenance6.PushConstantsInfo',
+--     it specifies the hardware bank into which
+--     'Vulkan.Core14.Promoted_From_VK_KHR_maintenance6.cmdPushConstants2'
+--     pushes the constants.
+--
+-- -   When chained to
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DescriptorSetAndBindingMappingEXT',
+--     it specifies the hardware push data bank from which the push data is
+--     read.
+--
+-- -   When chained to
+--     'Vulkan.Extensions.VK_EXT_device_generated_commands.IndirectCommandsLayoutTokenEXT'
+--     with
+--     'Vulkan.Extensions.VK_EXT_device_generated_commands.INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_DATA_EXT',
+--     it specifies the hardware bank into which indirect push data is
+--     placed.
+--
+-- This allows for more flexible push constant management in descriptor
+-- heap scenarios where shaders access different root descriptors with
+-- specific bank requirements.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkPushConstantBankInfoNV-bank-12342# When chained to
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.PushDataInfoEXT', if the
+--     command buffer is executing graphics operations, @bank@ /must/ be
+--     less than
+--     'PhysicalDevicePushConstantBankPropertiesNV'::@maxGraphicsPushDataBanks@
+--
+-- -   #VUID-VkPushConstantBankInfoNV-bank-12343# When chained to
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.PushDataInfoEXT', if the
+--     command buffer is executing compute operations, @bank@ /must/ be
+--     less than
+--     'PhysicalDevicePushConstantBankPropertiesNV'::@maxComputePushDataBanks@
+--
+-- -   #VUID-VkPushConstantBankInfoNV-bank-12344# When chained to
+--     'Vulkan.Core14.Promoted_From_VK_KHR_maintenance6.PushConstantsInfo',
+--     if VkPushConstantsInfo::stageFlags includes a graphics stage then
+--     @bank@ /must/ be less than
+--     'PhysicalDevicePushConstantBankPropertiesNV'::@maxGraphicsPushConstantBanks@
+--
+-- -   #VUID-VkPushConstantBankInfoNV-bank-12345# When chained to
+--     'Vulkan.Core14.Promoted_From_VK_KHR_maintenance6.PushConstantsInfo',
+--     if VkPushConstantsInfo::stageFlags includes a compute stage then
+--     @bank@ /must/ be less than
+--     'PhysicalDevicePushConstantBankPropertiesNV'::@maxComputePushConstantBanks@
+--
+-- -   #VUID-VkPushConstantBankInfoNV-bank-12346# When chained to
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DescriptorSetAndBindingMappingEXT'
+--     for a graphics shader stage, @bank@ /must/ be less than
+--     'PhysicalDevicePushConstantBankPropertiesNV'::@maxGraphicsPushDataBanks@
+--
+-- -   #VUID-VkPushConstantBankInfoNV-bank-12347# When chained to
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DescriptorSetAndBindingMappingEXT'
+--     for a compute shader stage, @bank@ /must/ be less than
+--     'PhysicalDevicePushConstantBankPropertiesNV'::@maxComputePushDataBanks@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkPushConstantBankInfoNV-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PUSH_CONSTANT_BANK_INFO_NV'
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Extensions.VK_EXT_descriptor_heap.DescriptorSetAndBindingMappingEXT'
+--
+--     -   'Vulkan.Extensions.VK_EXT_device_generated_commands.IndirectCommandsLayoutTokenEXT'
+--
+--     -   'Vulkan.Core14.Promoted_From_VK_KHR_maintenance6.PushConstantsInfo'
+--
+--     -   'Vulkan.Extensions.VK_EXT_descriptor_heap.PushDataInfoEXT'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_push_constant_bank VK_NV_push_constant_bank>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PushConstantBankInfoNV = PushConstantBankInfoNV
+  { -- | @bank@ is the index of the hardware bank into which the data is pushed.
+    bank :: Word32 }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PushConstantBankInfoNV)
+#endif
+deriving instance Show PushConstantBankInfoNV
+
+instance ToCStruct PushConstantBankInfoNV where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PushConstantBankInfoNV{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PUSH_CONSTANT_BANK_INFO_NV)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (bank)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PUSH_CONSTANT_BANK_INFO_NV)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct PushConstantBankInfoNV where
+  peekCStruct p = do
+    bank <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    pure $ PushConstantBankInfoNV
+             bank
+
+instance Storable PushConstantBankInfoNV where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PushConstantBankInfoNV where
+  zero = PushConstantBankInfoNV
+           zero
+
+
+-- | VkPhysicalDevicePushConstantBankFeaturesNV - Structure describing push
+-- constant bank features
+--
+-- = Members
+--
+-- This structure describes the following features:
+--
+-- = Description
+--
+-- If the 'PhysicalDevicePushConstantBankFeaturesNV' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDevicePushConstantBankFeaturesNV', it /must/ add an instance of
+-- the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_push_constant_bank VK_NV_push_constant_bank>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDevicePushConstantBankFeaturesNV = PhysicalDevicePushConstantBankFeaturesNV
+  { -- | #features-pushConstantBank# @pushConstantBank@ indicates whether push
+    -- constant bank functionality is supported.
+    pushConstantBank :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDevicePushConstantBankFeaturesNV)
+#endif
+deriving instance Show PhysicalDevicePushConstantBankFeaturesNV
+
+instance ToCStruct PhysicalDevicePushConstantBankFeaturesNV where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDevicePushConstantBankFeaturesNV{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_CONSTANT_BANK_FEATURES_NV)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (pushConstantBank))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_CONSTANT_BANK_FEATURES_NV)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDevicePushConstantBankFeaturesNV where
+  peekCStruct p = do
+    pushConstantBank <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDevicePushConstantBankFeaturesNV
+             (bool32ToBool pushConstantBank)
+
+instance Storable PhysicalDevicePushConstantBankFeaturesNV where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDevicePushConstantBankFeaturesNV where
+  zero = PhysicalDevicePushConstantBankFeaturesNV
+           zero
+
+
+-- | VkPhysicalDevicePushConstantBankPropertiesNV - Structure describing push
+-- constant bank properties
+--
+-- = Members
+--
+-- This structure describes the following implementation-dependent limits:
+--
+-- = Description
+--
+-- If the 'PhysicalDevicePushConstantBankPropertiesNV' 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.
+--
+-- The number of banks available for descriptor heap usage
+-- (@maxGraphicsPushDataBanks@ and @maxComputePushDataBanks@) is equal or
+-- greater than the number of banks available for non-descriptor heap usage
+-- (@maxGraphicsPushConstantBanks@ and @maxComputePushConstantBanks@).
+--
+-- For graphics shaders, both descriptor heap and non-descriptor heap
+-- limits are greater than 1. For compute shaders, the number of banks is
+-- equal to or greater than 1.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_push_constant_bank VK_NV_push_constant_bank>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDevicePushConstantBankPropertiesNV = PhysicalDevicePushConstantBankPropertiesNV
+  { -- | @maxGraphicsPushConstantBanks@ indicates the maximum number of push
+    -- constant banks supported for graphics pipelines when used with
+    -- non-descriptor heap scenarios.
+    maxGraphicsPushConstantBanks :: Word32
+  , -- | @maxComputePushConstantBanks@ indicates the maximum number of push
+    -- constant banks supported for compute pipelines when used with
+    -- non-descriptor heap scenarios.
+    maxComputePushConstantBanks :: Word32
+  , -- | @maxGraphicsPushDataBanks@ indicates the maximum number of push data
+    -- banks supported for graphics pipelines when using descriptor heaps.
+    maxGraphicsPushDataBanks :: Word32
+  , -- | @maxComputePushDataBanks@ indicates the maximum number of push data
+    -- banks supported for compute pipelines when using descriptor heaps.
+    maxComputePushDataBanks :: Word32
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDevicePushConstantBankPropertiesNV)
+#endif
+deriving instance Show PhysicalDevicePushConstantBankPropertiesNV
+
+instance ToCStruct PhysicalDevicePushConstantBankPropertiesNV where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDevicePushConstantBankPropertiesNV{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_CONSTANT_BANK_PROPERTIES_NV)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (maxGraphicsPushConstantBanks)
+    poke ((p `plusPtr` 20 :: Ptr Word32)) (maxComputePushConstantBanks)
+    poke ((p `plusPtr` 24 :: Ptr Word32)) (maxGraphicsPushDataBanks)
+    poke ((p `plusPtr` 28 :: Ptr Word32)) (maxComputePushDataBanks)
+    f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_CONSTANT_BANK_PROPERTIES_NV)
+    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)
+    f
+
+instance FromCStruct PhysicalDevicePushConstantBankPropertiesNV where
+  peekCStruct p = do
+    maxGraphicsPushConstantBanks <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    maxComputePushConstantBanks <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
+    maxGraphicsPushDataBanks <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))
+    maxComputePushDataBanks <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))
+    pure $ PhysicalDevicePushConstantBankPropertiesNV
+             maxGraphicsPushConstantBanks
+             maxComputePushConstantBanks
+             maxGraphicsPushDataBanks
+             maxComputePushDataBanks
+
+instance Storable PhysicalDevicePushConstantBankPropertiesNV where
+  sizeOf ~_ = 32
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDevicePushConstantBankPropertiesNV where
+  zero = PhysicalDevicePushConstantBankPropertiesNV
+           zero
+           zero
+           zero
+           zero
+
+
+type NV_PUSH_CONSTANT_BANK_SPEC_VERSION = 1
+
+-- No documentation found for TopLevel "VK_NV_PUSH_CONSTANT_BANK_SPEC_VERSION"
+pattern NV_PUSH_CONSTANT_BANK_SPEC_VERSION :: forall a . Integral a => a
+pattern NV_PUSH_CONSTANT_BANK_SPEC_VERSION = 1
+
+
+type NV_PUSH_CONSTANT_BANK_EXTENSION_NAME = "VK_NV_push_constant_bank"
+
+-- No documentation found for TopLevel "VK_NV_PUSH_CONSTANT_BANK_EXTENSION_NAME"
+pattern NV_PUSH_CONSTANT_BANK_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern NV_PUSH_CONSTANT_BANK_EXTENSION_NAME = "VK_NV_push_constant_bank"
+
diff --git a/src/Vulkan/Extensions/VK_NV_push_constant_bank.hs-boot b/src/Vulkan/Extensions/VK_NV_push_constant_bank.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_NV_push_constant_bank.hs-boot
@@ -0,0 +1,204 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_NV_push_constant_bank - device extension
+--
+-- = VK_NV_push_constant_bank
+--
+-- [__Name String__]
+--     @VK_NV_push_constant_bank@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     581
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Not ratified
+--
+-- [__Extension and Version Dependencies__]
+--     None
+--
+-- [__SPIR-V Dependencies__]
+--
+--     -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/NV/SPV_NV_push_constant_bank.html SPV_NV_push_constant_bank>
+--
+-- [__Contact__]
+--
+--     -   Vassili Nikolaev
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_NV_push_constant_bank] @vasnik1%0A*Here describe the issue or question you have about the VK_NV_push_constant_bank extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_NV_push_constant_bank.adoc VK_NV_push_constant_bank>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2025-09-15
+--
+-- [__Contributors__]
+--
+--     -   Pat Brown, NVIDIA
+--
+--     -   Piers Daniell, NVIDIA
+--
+--     -   Rodrigo Locatti, NVIDIA
+--
+--     -   Daniel Story, Nintendo
+--
+-- == Description
+--
+-- The
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_push_constant_bank VK_NV_push_constant_bank>
+-- extension allows applications to specify a bank and offset for push
+-- constants, enabling more flexible push constant management in descriptor
+-- heap scenarios where shaders are able to access different root
+-- descriptors.
+--
+-- Traditional push constants are placed in a default location, but this
+-- extension allows applications to specify which hardware constant bank to
+-- use and at what offset within that bank. This provides greater control
+-- over memory layout and enables more efficient use of hardware resources
+-- in advanced descriptor heap configurations.
+--
+-- The extension integrates with
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_heap VK_EXT_descriptor_heap>
+-- by allowing 'PushConstantBankInfoNV' structures to be chained to
+-- 'Vulkan.Extensions.VK_EXT_descriptor_heap.DescriptorSetAndBindingMappingEXT',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_heap.PushDataInfoEXT',
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance6.PushConstantsInfo', or
+-- 'Vulkan.Extensions.VK_EXT_device_generated_commands.IndirectCommandsLayoutTokenEXT'
+-- structures, specifying the hardware bank where push constants should be
+-- placed as part of the descriptor heap mapping configuration or push data
+-- operations.
+--
+-- Key features include:
+--
+-- -   Bank and offset specification for push constant placement
+--
+-- -   Integration with descriptor heap mapping through structure chaining
+--
+-- -   Support for GLSL shader qualifiers for bank and offset specification
+--     in SPIR-V
+--
+-- -   Validation of bank bounds and alignment requirements
+--
+-- -   Compatibility with existing push constant API
+--
+-- The number of available push constant banks is implementation-dependent
+-- and can be queried through separate limits in
+-- 'PhysicalDevicePushConstantBankPropertiesNV':
+-- @maxGraphicsPushConstantBanks@ and @maxComputePushConstantBanks@ for
+-- non-descriptor heap usage, and @maxGraphicsPushDataBanks@ and
+-- @maxComputePushDataBanks@ for descriptor heap scenarios. Applications
+-- must ensure bank indices remain within the appropriate
+-- implementation-defined range based on the shader type and usage context.
+--
+-- Shader support for banks and member offsets are defined by the
+-- <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/NV/SPV_NV_push_constant_bank.html SPV_NV_push_constant_bank>
+-- SPIR-V extension, which can be used with the
+-- <https://github.com/KhronosGroup/GLSL/blob/main/extensions/nv/GLSL_NV_push_constant_bank.txt GLSL_NV_push_constant_bank>
+-- GLSL extension.
+--
+-- == New SPIR-V Capabilities
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-PushConstantBanksNV PushConstantBanksNV>
+--
+-- == New SPIR-V Decorations
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-pushconstant-decorations-banknv BankNV>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-pushconstant-decorations-memberoffsetnv MemberOffsetNV>
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DescriptorSetAndBindingMappingEXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.PushDataInfoEXT',
+--     'Vulkan.Core14.Promoted_From_VK_KHR_maintenance6.PushConstantsInfo',
+--     'Vulkan.Extensions.VK_EXT_device_generated_commands.IndirectCommandsLayoutTokenEXT':
+--
+--     -   'PushConstantBankInfoNV'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDevicePushConstantBankFeaturesNV'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDevicePushConstantBankPropertiesNV'
+--
+-- == New Enum Constants
+--
+-- -   'NV_PUSH_CONSTANT_BANK_EXTENSION_NAME'
+--
+-- -   'NV_PUSH_CONSTANT_BANK_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_CONSTANT_BANK_FEATURES_NV'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_CONSTANT_BANK_PROPERTIES_NV'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PUSH_CONSTANT_BANK_INFO_NV'
+--
+-- == Issues
+--
+-- None.
+--
+-- == Version History
+--
+-- -   Revision 1, 2025-09-15 (NVIDIA Vassili Nikolaev)
+--
+--     -   Initial draft
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_NV_push_constant_bank Vulkan Specification>.
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_NV_push_constant_bank  ( PhysicalDevicePushConstantBankFeaturesNV
+                                                   , PhysicalDevicePushConstantBankPropertiesNV
+                                                   , PushConstantBankInfoNV
+                                                   ) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data PhysicalDevicePushConstantBankFeaturesNV
+
+instance ToCStruct PhysicalDevicePushConstantBankFeaturesNV
+instance Show PhysicalDevicePushConstantBankFeaturesNV
+
+instance FromCStruct PhysicalDevicePushConstantBankFeaturesNV
+
+
+data PhysicalDevicePushConstantBankPropertiesNV
+
+instance ToCStruct PhysicalDevicePushConstantBankPropertiesNV
+instance Show PhysicalDevicePushConstantBankPropertiesNV
+
+instance FromCStruct PhysicalDevicePushConstantBankPropertiesNV
+
+
+data PushConstantBankInfoNV
+
+instance ToCStruct PushConstantBankInfoNV
+instance Show PushConstantBankInfoNV
+
+instance FromCStruct PushConstantBankInfoNV
+
diff --git a/src/Vulkan/Extensions/VK_NV_raw_access_chains.hs b/src/Vulkan/Extensions/VK_NV_raw_access_chains.hs
--- a/src/Vulkan/Extensions/VK_NV_raw_access_chains.hs
+++ b/src/Vulkan/Extensions/VK_NV_raw_access_chains.hs
@@ -21,7 +21,9 @@
 --     Not ratified
 --
 -- [__Extension and Version Dependencies__]
---     None
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
 --
 -- [__SPIR-V Dependencies__]
 --
@@ -58,7 +60,7 @@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-RawAccessChainsNV RawAccessChainsNV>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-RawAccessChainsNV RawAccessChainsNV>
 --
 -- == Version History
 --
@@ -73,7 +75,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_raw_access_chains Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_NV_raw_access_chains Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -121,11 +123,21 @@
 -- 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. 'PhysicalDeviceRawAccessChainsFeaturesNV' /can/ also be used
--- in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceRawAccessChainsFeaturesNV', it /must/ add an instance of
+-- the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Extensions/VK_NV_raw_access_chains.hs-boot b/src/Vulkan/Extensions/VK_NV_raw_access_chains.hs-boot
--- a/src/Vulkan/Extensions/VK_NV_raw_access_chains.hs-boot
+++ b/src/Vulkan/Extensions/VK_NV_raw_access_chains.hs-boot
@@ -21,7 +21,9 @@
 --     Not ratified
 --
 -- [__Extension and Version Dependencies__]
---     None
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
 --
 -- [__SPIR-V Dependencies__]
 --
@@ -58,7 +60,7 @@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-RawAccessChainsNV RawAccessChainsNV>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-RawAccessChainsNV RawAccessChainsNV>
 --
 -- == Version History
 --
@@ -73,7 +75,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_raw_access_chains Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_NV_raw_access_chains Vulkan Specification>.
 --
 -- This 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
@@ -220,4401 +220,5036 @@
 --
 -- -   'NV_RAY_TRACING_SPEC_VERSION'
 --
--- -   'Vulkan.Core10.APIConstants.SHADER_UNUSED_NV'
---
--- -   Extending
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureTypeKHR':
---
---     -   'ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV'
---
---     -   'ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV'
---
--- -   Extending 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits':
---
---     -   'ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV'
---
---     -   'ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV'
---
--- -   Extending
---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BufferUsageFlagBits':
---
---     -   'BUFFER_USAGE_RAY_TRACING_BIT_NV'
---
--- -   Extending
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.BuildAccelerationStructureFlagBitsKHR':
---
---     -   'BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV'
---
---     -   'BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV'
---
---     -   'BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV'
---
---     -   'BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV'
---
---     -   'BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV'
---
--- -   Extending
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.CopyAccelerationStructureModeKHR':
---
---     -   'COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV'
---
---     -   'COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV'
---
--- -   Extending 'Vulkan.Core10.Enums.DescriptorType.DescriptorType':
---
---     -   'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV'
---
--- -   Extending
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.GeometryFlagBitsKHR':
---
---     -   'GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV'
---
---     -   'GEOMETRY_OPAQUE_BIT_NV'
---
--- -   Extending
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.GeometryInstanceFlagBitsKHR':
---
---     -   'GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV'
---
---     -   'GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV'
---
---     -   'GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV'
---
---     -   'GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV'
---
--- -   Extending
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.GeometryTypeKHR':
---
---     -   'GEOMETRY_TYPE_AABBS_NV'
---
---     -   'GEOMETRY_TYPE_TRIANGLES_NV'
---
--- -   Extending 'Vulkan.Core10.Enums.IndexType.IndexType':
---
---     -   'INDEX_TYPE_NONE_NV'
---
--- -   Extending 'Vulkan.Core10.Enums.ObjectType.ObjectType':
---
---     -   'Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_ACCELERATION_STRUCTURE_NV'
---
--- -   Extending 'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint':
---
---     -   'PIPELINE_BIND_POINT_RAY_TRACING_NV'
---
--- -   Extending
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits':
---
---     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DEFER_COMPILE_BIT_NV'
---
--- -   Extending
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits':
---
---     -   'PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV'
---
---     -   'PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV'
---
--- -   Extending 'Vulkan.Core10.Enums.QueryType.QueryType':
---
---     -   'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV'
---
--- -   Extending
---     'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingShaderGroupTypeKHR':
---
---     -   'RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV'
---
---     -   'RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV'
---
---     -   'RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV'
---
--- -   Extending
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits':
---
---     -   'SHADER_STAGE_ANY_HIT_BIT_NV'
---
---     -   'SHADER_STAGE_CALLABLE_BIT_NV'
---
---     -   'SHADER_STAGE_CLOSEST_HIT_BIT_NV'
---
---     -   'SHADER_STAGE_INTERSECTION_BIT_NV'
---
---     -   'SHADER_STAGE_MISS_BIT_NV'
---
---     -   'SHADER_STAGE_RAYGEN_BIT_NV'
---
--- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GEOMETRY_AABB_NV'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GEOMETRY_NV'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV'
---
--- 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
---     'Vulkan.Extensions.VK_EXT_debug_report.DebugReportObjectTypeEXT':
---
---     -   'Vulkan.Extensions.VK_EXT_debug_report.DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT'
---
--- == New or Modified Built-In Variables
---
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-launchid LaunchIdNV>
---
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-launchsize LaunchSizeNV>
---
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-worldrayorigin WorldRayOriginNV>
---
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-worldraydirection WorldRayDirectionNV>
---
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-objectrayorigin ObjectRayOriginNV>
---
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-objectraydirection ObjectRayDirectionNV>
---
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-raytmin RayTminNV>
---
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-raytmax RayTmaxNV>
---
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-instancecustomindex InstanceCustomIndexNV>
---
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-instanceid InstanceId>
---
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-objecttoworld ObjectToWorldNV>
---
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-worldtoobject WorldToObjectNV>
---
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-hitt HitTNV>
---
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-hitkind HitKindNV>
---
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-incomingrayflags IncomingRayFlagsNV>
---
--- -   (modified)@PrimitiveId@
---
--- == New SPIR-V Capabilities
---
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-RayTracingNV RayTracingNV>
---
--- == Issues
---
--- 1) Are there issues?
---
--- __RESOLVED__: Yes.
---
--- == Sample Code
---
--- Example ray generation GLSL shader
---
--- > #version 450 core
--- > #extension GL_NV_ray_tracing : require
--- > layout(set = 0, binding = 0, rgba8) uniform image2D image;
--- > layout(set = 0, binding = 1) uniform accelerationStructureNV as;
--- > layout(location = 0) rayPayloadNV float payload;
--- >
--- > void main()
--- > {
--- >    vec4 col = vec4(0, 0, 0, 1);
--- >
--- >    vec3 origin = vec3(float(gl_LaunchIDNV.x)/float(gl_LaunchSizeNV.x), float(gl_LaunchIDNV.y)/float(gl_LaunchSizeNV.y), 1.0);
--- >    vec3 dir = vec3(0.0, 0.0, -1.0);
--- >
--- >    traceNV(as, 0, 0xff, 0, 1, 0, origin, 0.0, dir, 1000.0, 0);
--- >
--- >    col.y = payload;
--- >
--- >    imageStore(image, ivec2(gl_LaunchIDNV.xy), col);
--- > }
---
--- == Version History
---
--- -   Revision 1, 2018-09-11 (Robert Stepinski, Nuno Subtil, Eric Werness)
---
---     -   Internal revisions
---
--- -   Revision 2, 2018-10-19 (Eric Werness)
---
---     -   rename to VK_NV_ray_tracing, add support for callables.
---
---     -   too many updates to list
---
--- -   Revision 3, 2018-11-20 (Daniel Koch)
---
---     -   update to use InstanceId instead of InstanceIndex as
---         implemented.
---
--- == See Also
---
--- No cross-references are available
---
--- == Document Notes
---
--- For more information, see the
--- <https://registry.khronos.org/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.
-module Vulkan.Extensions.VK_NV_ray_tracing  ( compileDeferredNV
-                                            , createAccelerationStructureNV
-                                            , withAccelerationStructureNV
-                                            , destroyAccelerationStructureNV
-                                            , getAccelerationStructureMemoryRequirementsNV
-                                            , bindAccelerationStructureMemoryNV
-                                            , cmdCopyAccelerationStructureNV
-                                            , cmdWriteAccelerationStructuresPropertiesNV
-                                            , cmdBuildAccelerationStructureNV
-                                            , cmdTraceRaysNV
-                                            , getAccelerationStructureHandleNV
-                                            , createRayTracingPipelinesNV
-                                            , withRayTracingPipelinesNV
-                                            , pattern SHADER_STAGE_RAYGEN_BIT_NV
-                                            , pattern SHADER_STAGE_ANY_HIT_BIT_NV
-                                            , pattern SHADER_STAGE_CLOSEST_HIT_BIT_NV
-                                            , pattern SHADER_STAGE_MISS_BIT_NV
-                                            , pattern SHADER_STAGE_INTERSECTION_BIT_NV
-                                            , pattern SHADER_STAGE_CALLABLE_BIT_NV
-                                            , pattern PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV
-                                            , pattern PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV
-                                            , pattern BUFFER_USAGE_RAY_TRACING_BIT_NV
-                                            , pattern PIPELINE_BIND_POINT_RAY_TRACING_NV
-                                            , pattern ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV
-                                            , pattern ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV
-                                            , pattern INDEX_TYPE_NONE_NV
-                                            , pattern RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV
-                                            , pattern RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV
-                                            , pattern RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV
-                                            , pattern GEOMETRY_TYPE_TRIANGLES_NV
-                                            , pattern GEOMETRY_TYPE_AABBS_NV
-                                            , pattern ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV
-                                            , pattern ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV
-                                            , pattern GEOMETRY_OPAQUE_BIT_NV
-                                            , pattern GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV
-                                            , pattern GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV
-                                            , pattern GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV
-                                            , pattern GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV
-                                            , pattern GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV
-                                            , pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV
-                                            , pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV
-                                            , pattern BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV
-                                            , pattern BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV
-                                            , pattern BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV
-                                            , pattern COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV
-                                            , pattern COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV
-                                            , pattern SHADER_UNUSED_NV
-                                            , getRayTracingShaderGroupHandlesNV
-                                            , RayTracingShaderGroupCreateInfoNV(..)
-                                            , RayTracingPipelineCreateInfoNV(..)
-                                            , GeometryTrianglesNV(..)
-                                            , GeometryAABBNV(..)
-                                            , GeometryDataNV(..)
-                                            , GeometryNV(..)
-                                            , AccelerationStructureInfoNV(..)
-                                            , AccelerationStructureCreateInfoNV(..)
-                                            , BindAccelerationStructureMemoryInfoNV(..)
-                                            , WriteDescriptorSetAccelerationStructureNV(..)
-                                            , AccelerationStructureMemoryRequirementsInfoNV(..)
-                                            , PhysicalDeviceRayTracingPropertiesNV(..)
-                                            , AccelerationStructureMemoryRequirementsTypeNV( ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV
-                                                                                           , ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV
-                                                                                           , ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV
-                                                                                           , ..
-                                                                                           )
-                                            , GeometryFlagsNV
-                                            , GeometryInstanceFlagsNV
-                                            , BuildAccelerationStructureFlagsNV
-                                            , GeometryFlagBitsNV
-                                            , GeometryInstanceFlagBitsNV
-                                            , BuildAccelerationStructureFlagBitsNV
-                                            , CopyAccelerationStructureModeNV
-                                            , AccelerationStructureTypeNV
-                                            , GeometryTypeNV
-                                            , RayTracingShaderGroupTypeNV
-                                            , AabbPositionsNV
-                                            , TransformMatrixNV
-                                            , AccelerationStructureInstanceNV
-                                            , NV_RAY_TRACING_SPEC_VERSION
-                                            , pattern NV_RAY_TRACING_SPEC_VERSION
-                                            , NV_RAY_TRACING_EXTENSION_NAME
-                                            , pattern NV_RAY_TRACING_EXTENSION_NAME
-                                            , AccelerationStructureNV(..)
-                                            , AabbPositionsKHR(..)
-                                            , TransformMatrixKHR(..)
-                                            , AccelerationStructureInstanceKHR(..)
-                                            , getRayTracingShaderGroupHandlesKHR
-                                            , DebugReportObjectTypeEXT(..)
-                                            , GeometryInstanceFlagBitsKHR(..)
-                                            , GeometryInstanceFlagsKHR
-                                            , GeometryFlagBitsKHR(..)
-                                            , GeometryFlagsKHR
-                                            , BuildAccelerationStructureFlagBitsKHR(..)
-                                            , BuildAccelerationStructureFlagsKHR
-                                            , CopyAccelerationStructureModeKHR(..)
-                                            , AccelerationStructureTypeKHR(..)
-                                            , GeometryTypeKHR(..)
-                                            , RayTracingShaderGroupTypeKHR(..)
-                                            , MemoryRequirements2KHR
-                                            , pattern GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR
-                                            , SHADER_UNUSED_KHR
-                                            , pattern SHADER_UNUSED_KHR
-                                            ) 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.Foldable (traverse_)
-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 (showsPrec)
-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 Foreign.C.Types (CSize(..))
-import Vulkan.CStruct (FromCStruct)
-import Vulkan.CStruct (FromCStruct(..))
-import Vulkan.CStruct (ToCStruct)
-import Vulkan.CStruct (ToCStruct(..))
-import Vulkan.Zero (Zero)
-import Vulkan.Zero (Zero(..))
-import Control.Monad.IO.Class (MonadIO)
-import Data.String (IsString)
-import Data.Type.Equality ((:~:)(Refl))
-import Data.Typeable (Typeable)
-import Foreign.C.Types (CSize)
-import Foreign.C.Types (CSize(CSize))
-import Foreign.Storable (Storable)
-import Foreign.Storable (Storable(peek))
-import Foreign.Storable (Storable(poke))
-import qualified Foreign.Storable (Storable(..))
-import GHC.Generics (Generic)
-import GHC.IO.Exception (IOErrorType(..))
-import GHC.IO.Exception (IOException(..))
-import Data.Int (Int32)
-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 (boolToBool32)
-import Vulkan.Core10.Pipeline (destroyPipeline)
-import Vulkan.CStruct.Extends (forgetExtensions)
-import Vulkan.Extensions.VK_KHR_ray_tracing_pipeline (getRayTracingShaderGroupHandlesKHR)
-import Vulkan.CStruct.Extends (peekSomeCStruct)
-import Vulkan.CStruct.Extends (pokeSomeCStruct)
-import Vulkan.NamedType ((:::))
-import Vulkan.Extensions.VK_KHR_acceleration_structure (AabbPositionsKHR)
-import Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureInstanceKHR)
-import Vulkan.Extensions.Handles (AccelerationStructureNV)
-import Vulkan.Extensions.Handles (AccelerationStructureNV(..))
-import Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureTypeKHR)
-import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)
-import Vulkan.Core10.FundamentalTypes (Bool32)
-import Vulkan.Core10.FundamentalTypes (Bool32(..))
-import Vulkan.Core10.Handles (Buffer)
-import Vulkan.Core10.Handles (Buffer(..))
-import Vulkan.Extensions.VK_KHR_acceleration_structure (BuildAccelerationStructureFlagBitsKHR)
-import Vulkan.Extensions.VK_KHR_acceleration_structure (BuildAccelerationStructureFlagsKHR)
-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.Extensions.VK_KHR_acceleration_structure (CopyAccelerationStructureModeKHR)
-import Vulkan.Extensions.VK_KHR_acceleration_structure (CopyAccelerationStructureModeKHR(..))
-import Vulkan.Core10.Handles (Device)
-import Vulkan.Core10.Handles (Device(..))
-import Vulkan.Core10.Handles (Device(Device))
-import Vulkan.Dynamic (DeviceCmds(pVkBindAccelerationStructureMemoryNV))
-import Vulkan.Dynamic (DeviceCmds(pVkCmdBuildAccelerationStructureNV))
-import Vulkan.Dynamic (DeviceCmds(pVkCmdCopyAccelerationStructureNV))
-import Vulkan.Dynamic (DeviceCmds(pVkCmdTraceRaysNV))
-import Vulkan.Dynamic (DeviceCmds(pVkCmdWriteAccelerationStructuresPropertiesNV))
-import Vulkan.Dynamic (DeviceCmds(pVkCompileDeferredNV))
-import Vulkan.Dynamic (DeviceCmds(pVkCreateAccelerationStructureNV))
-import Vulkan.Dynamic (DeviceCmds(pVkCreateRayTracingPipelinesNV))
-import Vulkan.Dynamic (DeviceCmds(pVkDestroyAccelerationStructureNV))
-import Vulkan.Dynamic (DeviceCmds(pVkGetAccelerationStructureHandleNV))
-import Vulkan.Dynamic (DeviceCmds(pVkGetAccelerationStructureMemoryRequirementsNV))
-import Vulkan.Core10.Handles (DeviceMemory)
-import Vulkan.Core10.FundamentalTypes (DeviceSize)
-import Vulkan.Core10.Handles (Device_T)
-import Vulkan.CStruct.Extends (Extends)
-import Vulkan.CStruct.Extends (Extendss)
-import Vulkan.CStruct.Extends (Extensible(..))
-import Vulkan.Core10.Enums.Format (Format)
-import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryFlagBitsKHR)
-import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryFlagsKHR)
-import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryInstanceFlagBitsKHR)
-import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryInstanceFlagsKHR)
-import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryTypeKHR)
-import Vulkan.Core10.Enums.IndexType (IndexType)
-import Vulkan.Extensions.VK_KHR_get_memory_requirements2 (MemoryRequirements2KHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_buffer (OpaqueCaptureDescriptorDataCreateInfoEXT)
-import Vulkan.CStruct.Extends (PeekChain)
-import Vulkan.CStruct.Extends (PeekChain(..))
-import Vulkan.Core10.Handles (Pipeline)
-import Vulkan.Core10.Handles (Pipeline(..))
-import Vulkan.Core10.Handles (PipelineCache)
-import Vulkan.Core10.Handles (PipelineCache(..))
-import Vulkan.Core10.Enums.PipelineCreateFlagBits (PipelineCreateFlags)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance5 (PipelineCreateFlags2CreateInfoKHR)
-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)
-import Vulkan.CStruct.Extends (PokeChain(..))
-import Vulkan.Core10.Handles (QueryPool)
-import Vulkan.Core10.Handles (QueryPool(..))
-import Vulkan.Core10.Enums.QueryType (QueryType)
-import Vulkan.Core10.Enums.QueryType (QueryType(..))
-import Vulkan.Extensions.VK_KHR_ray_tracing_pipeline (RayTracingShaderGroupTypeKHR)
-import Vulkan.Core10.Enums.Result (Result)
-import Vulkan.Core10.Enums.Result (Result(..))
-import Vulkan.CStruct.Extends (SomeStruct)
-import Vulkan.Core10.Enums.StructureType (StructureType)
-import Vulkan.Extensions.VK_KHR_acceleration_structure (TransformMatrixKHR)
-import Vulkan.Exception (VulkanException(..))
-import Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureTypeKHR(ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR))
-import Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureTypeKHR(ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR))
-import Vulkan.Core10.Enums.AccessFlagBits (AccessFlags)
-import Vulkan.Core10.Enums.AccessFlagBits (AccessFlagBits(ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR))
-import Vulkan.Core10.Enums.AccessFlagBits (AccessFlags)
-import Vulkan.Core10.Enums.AccessFlagBits (AccessFlagBits(ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR))
-import Vulkan.Core10.Enums.BufferUsageFlagBits (BufferUsageFlags)
-import Vulkan.Core10.Enums.BufferUsageFlagBits (BufferUsageFlagBits(BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR))
-import Vulkan.Extensions.VK_KHR_acceleration_structure (BuildAccelerationStructureFlagsKHR)
-import Vulkan.Extensions.VK_KHR_acceleration_structure (BuildAccelerationStructureFlagBitsKHR(BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR))
-import Vulkan.Extensions.VK_KHR_acceleration_structure (BuildAccelerationStructureFlagsKHR)
-import Vulkan.Extensions.VK_KHR_acceleration_structure (BuildAccelerationStructureFlagBitsKHR(BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR))
-import Vulkan.Extensions.VK_KHR_acceleration_structure (BuildAccelerationStructureFlagsKHR)
-import Vulkan.Extensions.VK_KHR_acceleration_structure (BuildAccelerationStructureFlagBitsKHR(BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR))
-import Vulkan.Extensions.VK_KHR_acceleration_structure (BuildAccelerationStructureFlagsKHR)
-import Vulkan.Extensions.VK_KHR_acceleration_structure (BuildAccelerationStructureFlagBitsKHR(BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR))
-import Vulkan.Extensions.VK_KHR_acceleration_structure (BuildAccelerationStructureFlagsKHR)
-import Vulkan.Extensions.VK_KHR_acceleration_structure (BuildAccelerationStructureFlagBitsKHR(BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR))
-import Vulkan.Extensions.VK_KHR_acceleration_structure (CopyAccelerationStructureModeKHR(COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR))
-import Vulkan.Extensions.VK_KHR_acceleration_structure (CopyAccelerationStructureModeKHR(COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR))
-import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryInstanceFlagsKHR)
-import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryInstanceFlagBitsKHR(GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR))
-import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryInstanceFlagsKHR)
-import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryInstanceFlagBitsKHR(GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR))
-import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryInstanceFlagsKHR)
-import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryInstanceFlagBitsKHR(GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR))
-import Vulkan.Extensions.VK_KHR_acceleration_structure (pattern GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR)
-import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryFlagsKHR)
-import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryFlagBitsKHR(GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR))
-import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryFlagsKHR)
-import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryFlagBitsKHR(GEOMETRY_OPAQUE_BIT_KHR))
-import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryTypeKHR(GEOMETRY_TYPE_AABBS_KHR))
-import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryTypeKHR(GEOMETRY_TYPE_TRIANGLES_KHR))
-import Vulkan.Core10.Enums.IndexType (IndexType(INDEX_TYPE_NONE_KHR))
-import Vulkan.Core10.Enums.PipelineBindPoint (PipelineBindPoint(PIPELINE_BIND_POINT_RAY_TRACING_KHR))
-import Vulkan.Core10.Enums.PipelineStageFlagBits (PipelineStageFlags)
-import Vulkan.Core10.Enums.PipelineStageFlagBits (PipelineStageFlagBits(PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR))
-import Vulkan.Core10.Enums.PipelineStageFlagBits (PipelineStageFlags)
-import Vulkan.Core10.Enums.PipelineStageFlagBits (PipelineStageFlagBits(PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR))
-import Vulkan.Extensions.VK_KHR_ray_tracing_pipeline (RayTracingShaderGroupTypeKHR(RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR))
-import Vulkan.Extensions.VK_KHR_ray_tracing_pipeline (RayTracingShaderGroupTypeKHR(RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR))
-import Vulkan.Extensions.VK_KHR_ray_tracing_pipeline (RayTracingShaderGroupTypeKHR(RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR))
-import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)
-import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlagBits(SHADER_STAGE_ANY_HIT_BIT_KHR))
-import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)
-import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlagBits(SHADER_STAGE_CALLABLE_BIT_KHR))
-import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)
-import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlagBits(SHADER_STAGE_CLOSEST_HIT_BIT_KHR))
-import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)
-import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlagBits(SHADER_STAGE_INTERSECTION_BIT_KHR))
-import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)
-import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlagBits(SHADER_STAGE_MISS_BIT_KHR))
-import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)
-import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlagBits(SHADER_STAGE_RAYGEN_BIT_KHR))
-import Vulkan.Core10.APIConstants (pattern SHADER_UNUSED_KHR)
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_GEOMETRY_AABB_NV))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_GEOMETRY_NV))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV))
-import Vulkan.Core10.Enums.Result (Result(SUCCESS))
-import Vulkan.Extensions.VK_KHR_ray_tracing_pipeline (getRayTracingShaderGroupHandlesKHR)
-import Vulkan.Extensions.VK_KHR_acceleration_structure (AabbPositionsKHR(..))
-import Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureInstanceKHR(..))
-import Vulkan.Extensions.Handles (AccelerationStructureNV(..))
-import Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureTypeKHR(..))
-import Vulkan.Extensions.VK_KHR_acceleration_structure (BuildAccelerationStructureFlagBitsKHR(..))
-import Vulkan.Extensions.VK_KHR_acceleration_structure (BuildAccelerationStructureFlagsKHR)
-import Vulkan.Extensions.VK_KHR_acceleration_structure (CopyAccelerationStructureModeKHR(..))
-import Vulkan.Extensions.VK_EXT_debug_report (DebugReportObjectTypeEXT(..))
-import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryFlagBitsKHR(..))
-import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryFlagsKHR)
-import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryInstanceFlagBitsKHR(..))
-import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryInstanceFlagsKHR)
-import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryTypeKHR(..))
-import Vulkan.Extensions.VK_KHR_get_memory_requirements2 (MemoryRequirements2KHR)
-import Vulkan.Extensions.VK_KHR_ray_tracing_pipeline (RayTracingShaderGroupTypeKHR(..))
-import Vulkan.Core10.APIConstants (SHADER_UNUSED_KHR)
-import Vulkan.Extensions.VK_KHR_acceleration_structure (TransformMatrixKHR(..))
-import Vulkan.Extensions.VK_KHR_acceleration_structure (pattern GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR)
-import Vulkan.Core10.APIConstants (pattern SHADER_UNUSED_KHR)
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCompileDeferredNV
-  :: FunPtr (Ptr Device_T -> Pipeline -> Word32 -> IO Result) -> Ptr Device_T -> Pipeline -> Word32 -> IO Result
-
--- | vkCompileDeferredNV - Deferred compilation of shaders
---
--- == Return Codes
---
--- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
---
---     -   'Vulkan.Core10.Enums.Result.SUCCESS'
---
--- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
---
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
---
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>,
--- 'Vulkan.Core10.Handles.Device', 'Vulkan.Core10.Handles.Pipeline'
-compileDeferredNV :: forall io
-                   . (MonadIO io)
-                  => -- | @device@ is the logical device containing the ray tracing pipeline.
-                     --
-                     -- #VUID-vkCompileDeferredNV-device-parameter# @device@ /must/ be a valid
-                     -- 'Vulkan.Core10.Handles.Device' handle
-                     Device
-                  -> -- | @pipeline@ is the ray tracing pipeline object containing the shaders.
-                     --
-                     -- #VUID-vkCompileDeferredNV-pipeline-04621# @pipeline@ /must/ be a ray
-                     -- tracing pipeline
-                     --
-                     -- #VUID-vkCompileDeferredNV-pipeline-02237# @pipeline@ /must/ have been
-                     -- created with
-                     -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DEFER_COMPILE_BIT_NV'
-                     --
-                     -- #VUID-vkCompileDeferredNV-pipeline-parameter# @pipeline@ /must/ be a
-                     -- valid 'Vulkan.Core10.Handles.Pipeline' handle
-                     --
-                     -- #VUID-vkCompileDeferredNV-pipeline-parent# @pipeline@ /must/ have been
-                     -- created, allocated, or retrieved from @device@
-                     Pipeline
-                  -> -- | @shader@ is the index of the shader to compile.
-                     --
-                     -- #VUID-vkCompileDeferredNV-shader-02238# @shader@ /must/ not have been
-                     -- called as a deferred compile before
-                     ("shader" ::: Word32)
-                  -> io ()
-compileDeferredNV device pipeline shader = liftIO $ do
-  let vkCompileDeferredNVPtr = pVkCompileDeferredNV (case device of Device{deviceCmds} -> deviceCmds)
-  unless (vkCompileDeferredNVPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCompileDeferredNV is null" Nothing Nothing
-  let vkCompileDeferredNV' = mkVkCompileDeferredNV vkCompileDeferredNVPtr
-  r <- traceAroundEvent "vkCompileDeferredNV" (vkCompileDeferredNV'
-                                                 (deviceHandle (device))
-                                                 (pipeline)
-                                                 (shader))
-  when (r < SUCCESS) (throwIO (VulkanException r))
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCreateAccelerationStructureNV
-  :: FunPtr (Ptr Device_T -> Ptr (SomeStruct AccelerationStructureCreateInfoNV) -> Ptr AllocationCallbacks -> Ptr AccelerationStructureNV -> IO Result) -> Ptr Device_T -> Ptr (SomeStruct AccelerationStructureCreateInfoNV) -> Ptr AllocationCallbacks -> Ptr AccelerationStructureNV -> IO Result
-
--- | vkCreateAccelerationStructureNV - Create a new acceleration structure
--- object
---
--- = Description
---
--- Similarly to other objects in Vulkan, the acceleration structure
--- creation merely creates an object with a specific “shape” as specified
--- by the information in 'AccelerationStructureInfoNV' and @compactedSize@
--- in @pCreateInfo@.
---
--- Once memory has been bound to the acceleration structure using
--- 'bindAccelerationStructureMemoryNV', that memory is populated by calls
--- to 'cmdBuildAccelerationStructureNV' and
--- 'cmdCopyAccelerationStructureNV'.
---
--- Acceleration structure creation uses the count and type information from
--- the geometries, but does not use the data references in the structures.
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCreateAccelerationStructureNV-device-parameter# @device@
---     /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
---
--- -   #VUID-vkCreateAccelerationStructureNV-pCreateInfo-parameter#
---     @pCreateInfo@ /must/ be a valid pointer to a valid
---     'AccelerationStructureCreateInfoNV' structure
---
--- -   #VUID-vkCreateAccelerationStructureNV-pAllocator-parameter# If
---     @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid pointer
---     to a valid 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'
---     structure
---
--- -   #VUID-vkCreateAccelerationStructureNV-pAccelerationStructure-parameter#
---     @pAccelerationStructure@ /must/ be a valid pointer to a
---     'Vulkan.Extensions.Handles.AccelerationStructureNV' 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_NV_ray_tracing VK_NV_ray_tracing>,
--- 'AccelerationStructureCreateInfoNV',
--- 'Vulkan.Extensions.Handles.AccelerationStructureNV',
--- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',
--- 'Vulkan.Core10.Handles.Device'
-createAccelerationStructureNV :: forall a io
-                               . ( Extendss AccelerationStructureCreateInfoNV a
-                                 , PokeChain a
-                                 , MonadIO io )
-                              => -- | @device@ is the logical device that creates the buffer object.
-                                 Device
-                              -> -- | @pCreateInfo@ is a pointer to a 'AccelerationStructureCreateInfoNV'
-                                 -- structure containing parameters affecting creation of the acceleration
-                                 -- structure.
-                                 (AccelerationStructureCreateInfoNV a)
-                              -> -- | @pAllocator@ controls host memory allocation as described in the
-                                 -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
-                                 -- chapter.
-                                 ("allocator" ::: Maybe AllocationCallbacks)
-                              -> io (AccelerationStructureNV)
-createAccelerationStructureNV device
-                                createInfo
-                                allocator = liftIO . evalContT $ do
-  let vkCreateAccelerationStructureNVPtr = pVkCreateAccelerationStructureNV (case device of Device{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCreateAccelerationStructureNVPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCreateAccelerationStructureNV is null" Nothing Nothing
-  let vkCreateAccelerationStructureNV' = mkVkCreateAccelerationStructureNV vkCreateAccelerationStructureNVPtr
-  pCreateInfo <- ContT $ withCStruct (createInfo)
-  pAllocator <- case (allocator) of
-    Nothing -> pure nullPtr
-    Just j -> ContT $ withCStruct (j)
-  pPAccelerationStructure <- ContT $ bracket (callocBytes @AccelerationStructureNV 8) free
-  r <- lift $ traceAroundEvent "vkCreateAccelerationStructureNV" (vkCreateAccelerationStructureNV'
-                                                                    (deviceHandle (device))
-                                                                    (forgetExtensions pCreateInfo)
-                                                                    pAllocator
-                                                                    (pPAccelerationStructure))
-  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
-  pAccelerationStructure <- lift $ peek @AccelerationStructureNV pPAccelerationStructure
-  pure $ (pAccelerationStructure)
-
--- | A convenience wrapper to make a compatible pair of calls to
--- 'createAccelerationStructureNV' and 'destroyAccelerationStructureNV'
---
--- To ensure that 'destroyAccelerationStructureNV' 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.
---
-withAccelerationStructureNV :: forall a io r . (Extendss AccelerationStructureCreateInfoNV a, PokeChain a, MonadIO io) => Device -> AccelerationStructureCreateInfoNV a -> Maybe AllocationCallbacks -> (io AccelerationStructureNV -> (AccelerationStructureNV -> io ()) -> r) -> r
-withAccelerationStructureNV device pCreateInfo pAllocator b =
-  b (createAccelerationStructureNV device pCreateInfo pAllocator)
-    (\(o0) -> destroyAccelerationStructureNV device o0 pAllocator)
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkDestroyAccelerationStructureNV
-  :: FunPtr (Ptr Device_T -> AccelerationStructureNV -> Ptr AllocationCallbacks -> IO ()) -> Ptr Device_T -> AccelerationStructureNV -> Ptr AllocationCallbacks -> IO ()
-
--- | vkDestroyAccelerationStructureNV - Destroy an acceleration structure
--- object
---
--- == Valid Usage
---
--- -   #VUID-vkDestroyAccelerationStructureNV-accelerationStructure-03752#
---     All submitted commands that refer to @accelerationStructure@ /must/
---     have completed execution
---
--- -   #VUID-vkDestroyAccelerationStructureNV-accelerationStructure-03753#
---     If 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' were
---     provided when @accelerationStructure@ was created, a compatible set
---     of callbacks /must/ be provided here
---
--- -   #VUID-vkDestroyAccelerationStructureNV-accelerationStructure-03754#
---     If no 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' were
---     provided when @accelerationStructure@ was created, @pAllocator@
---     /must/ be @NULL@
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkDestroyAccelerationStructureNV-device-parameter# @device@
---     /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
---
--- -   #VUID-vkDestroyAccelerationStructureNV-accelerationStructure-parameter#
---     If @accelerationStructure@ is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', @accelerationStructure@
---     /must/ be a valid
---     'Vulkan.Extensions.Handles.AccelerationStructureNV' handle
---
--- -   #VUID-vkDestroyAccelerationStructureNV-pAllocator-parameter# If
---     @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid pointer
---     to a valid 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'
---     structure
---
--- -   #VUID-vkDestroyAccelerationStructureNV-accelerationStructure-parent#
---     If @accelerationStructure@ is a valid handle, it /must/ have been
---     created, allocated, or retrieved from @device@
---
--- == Host Synchronization
---
--- -   Host access to @accelerationStructure@ /must/ be externally
---     synchronized
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>,
--- 'Vulkan.Extensions.Handles.AccelerationStructureNV',
--- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',
--- 'Vulkan.Core10.Handles.Device'
-destroyAccelerationStructureNV :: forall io
-                                . (MonadIO io)
-                               => -- | @device@ is the logical device that destroys the buffer.
-                                  Device
-                               -> -- | @accelerationStructure@ is the acceleration structure to destroy.
-                                  AccelerationStructureNV
-                               -> -- | @pAllocator@ controls host memory allocation as described in the
-                                  -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
-                                  -- chapter.
-                                  ("allocator" ::: Maybe AllocationCallbacks)
-                               -> io ()
-destroyAccelerationStructureNV device
-                                 accelerationStructure
-                                 allocator = liftIO . evalContT $ do
-  let vkDestroyAccelerationStructureNVPtr = pVkDestroyAccelerationStructureNV (case device of Device{deviceCmds} -> deviceCmds)
-  lift $ unless (vkDestroyAccelerationStructureNVPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkDestroyAccelerationStructureNV is null" Nothing Nothing
-  let vkDestroyAccelerationStructureNV' = mkVkDestroyAccelerationStructureNV vkDestroyAccelerationStructureNVPtr
-  pAllocator <- case (allocator) of
-    Nothing -> pure nullPtr
-    Just j -> ContT $ withCStruct (j)
-  lift $ traceAroundEvent "vkDestroyAccelerationStructureNV" (vkDestroyAccelerationStructureNV'
-                                                                (deviceHandle (device))
-                                                                (accelerationStructure)
-                                                                pAllocator)
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkGetAccelerationStructureMemoryRequirementsNV
-  :: FunPtr (Ptr Device_T -> Ptr AccelerationStructureMemoryRequirementsInfoNV -> Ptr (SomeStruct MemoryRequirements2KHR) -> IO ()) -> Ptr Device_T -> Ptr AccelerationStructureMemoryRequirementsInfoNV -> Ptr (SomeStruct MemoryRequirements2KHR) -> IO ()
-
--- | vkGetAccelerationStructureMemoryRequirementsNV - Get acceleration
--- structure memory requirements
---
--- == Valid Usage (Implicit)
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>,
--- 'AccelerationStructureMemoryRequirementsInfoNV',
--- 'Vulkan.Core10.Handles.Device',
--- 'Vulkan.Extensions.VK_KHR_get_memory_requirements2.MemoryRequirements2KHR'
-getAccelerationStructureMemoryRequirementsNV :: forall a io
-                                              . ( Extendss MemoryRequirements2KHR a
-                                                , PokeChain a
-                                                , PeekChain a
-                                                , MonadIO io )
-                                             => -- | @device@ is the logical device on which the acceleration structure was
-                                                -- created.
-                                                --
-                                                -- #VUID-vkGetAccelerationStructureMemoryRequirementsNV-device-parameter#
-                                                -- @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
-                                                Device
-                                             -> -- | @pInfo@ is a pointer to a
-                                                -- 'AccelerationStructureMemoryRequirementsInfoNV' structure specifying the
-                                                -- acceleration structure to get memory requirements for.
-                                                --
-                                                -- #VUID-vkGetAccelerationStructureMemoryRequirementsNV-pInfo-parameter#
-                                                -- @pInfo@ /must/ be a valid pointer to a valid
-                                                -- 'AccelerationStructureMemoryRequirementsInfoNV' structure
-                                                AccelerationStructureMemoryRequirementsInfoNV
-                                             -> io (MemoryRequirements2KHR a)
-getAccelerationStructureMemoryRequirementsNV device
-                                               info = liftIO . evalContT $ do
-  let vkGetAccelerationStructureMemoryRequirementsNVPtr = pVkGetAccelerationStructureMemoryRequirementsNV (case device of Device{deviceCmds} -> deviceCmds)
-  lift $ unless (vkGetAccelerationStructureMemoryRequirementsNVPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetAccelerationStructureMemoryRequirementsNV is null" Nothing Nothing
-  let vkGetAccelerationStructureMemoryRequirementsNV' = mkVkGetAccelerationStructureMemoryRequirementsNV vkGetAccelerationStructureMemoryRequirementsNVPtr
-  pInfo <- ContT $ withCStruct (info)
-  pPMemoryRequirements <- ContT (withZeroCStruct @(MemoryRequirements2KHR _))
-  lift $ traceAroundEvent "vkGetAccelerationStructureMemoryRequirementsNV" (vkGetAccelerationStructureMemoryRequirementsNV'
-                                                                              (deviceHandle (device))
-                                                                              pInfo
-                                                                              (forgetExtensions (pPMemoryRequirements)))
-  pMemoryRequirements <- lift $ peekCStruct @(MemoryRequirements2KHR _) pPMemoryRequirements
-  pure $ (pMemoryRequirements)
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkBindAccelerationStructureMemoryNV
-  :: FunPtr (Ptr Device_T -> Word32 -> Ptr BindAccelerationStructureMemoryInfoNV -> IO Result) -> Ptr Device_T -> Word32 -> Ptr BindAccelerationStructureMemoryInfoNV -> IO Result
-
--- | vkBindAccelerationStructureMemoryNV - Bind acceleration structure memory
---
--- == Return Codes
---
--- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
---
---     -   'Vulkan.Core10.Enums.Result.SUCCESS'
---
--- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
---
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
---
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>,
--- 'BindAccelerationStructureMemoryInfoNV', 'Vulkan.Core10.Handles.Device'
-bindAccelerationStructureMemoryNV :: forall io
-                                   . (MonadIO io)
-                                  => -- | @device@ is the logical device that owns the acceleration structures and
-                                     -- memory.
-                                     --
-                                     -- #VUID-vkBindAccelerationStructureMemoryNV-device-parameter# @device@
-                                     -- /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
-                                     Device
-                                  -> -- | @pBindInfos@ is a pointer to an array of
-                                     -- 'BindAccelerationStructureMemoryInfoNV' structures describing
-                                     -- acceleration structures and memory to bind.
-                                     --
-                                     -- #VUID-vkBindAccelerationStructureMemoryNV-pBindInfos-parameter#
-                                     -- @pBindInfos@ /must/ be a valid pointer to an array of @bindInfoCount@
-                                     -- valid 'BindAccelerationStructureMemoryInfoNV' structures
-                                     ("bindInfos" ::: Vector BindAccelerationStructureMemoryInfoNV)
-                                  -> io ()
-bindAccelerationStructureMemoryNV device bindInfos = liftIO . evalContT $ do
-  let vkBindAccelerationStructureMemoryNVPtr = pVkBindAccelerationStructureMemoryNV (case device of Device{deviceCmds} -> deviceCmds)
-  lift $ unless (vkBindAccelerationStructureMemoryNVPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkBindAccelerationStructureMemoryNV is null" Nothing Nothing
-  let vkBindAccelerationStructureMemoryNV' = mkVkBindAccelerationStructureMemoryNV vkBindAccelerationStructureMemoryNVPtr
-  pPBindInfos <- ContT $ allocaBytes @BindAccelerationStructureMemoryInfoNV ((Data.Vector.length (bindInfos)) * 56)
-  Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPBindInfos `plusPtr` (56 * (i)) :: Ptr BindAccelerationStructureMemoryInfoNV) (e) . ($ ())) (bindInfos)
-  r <- lift $ traceAroundEvent "vkBindAccelerationStructureMemoryNV" (vkBindAccelerationStructureMemoryNV'
-                                                                        (deviceHandle (device))
-                                                                        ((fromIntegral (Data.Vector.length $ (bindInfos)) :: Word32))
-                                                                        (pPBindInfos))
-  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdCopyAccelerationStructureNV
-  :: FunPtr (Ptr CommandBuffer_T -> AccelerationStructureNV -> AccelerationStructureNV -> CopyAccelerationStructureModeKHR -> IO ()) -> Ptr CommandBuffer_T -> AccelerationStructureNV -> AccelerationStructureNV -> CopyAccelerationStructureModeKHR -> IO ()
-
--- | vkCmdCopyAccelerationStructureNV - Copy an acceleration structure
---
--- = Description
---
--- Accesses to @src@ and @dst@ /must/ be
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies synchronized>
--- with the
--- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR'
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages pipeline stage>
--- or the
--- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages pipeline stage>,
--- and an
--- <https://registry.khronos.org/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
--- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR'
--- as appropriate.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdCopyAccelerationStructureNV-mode-03410# @mode@ /must/ be
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR'
---     or
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR'
---
--- -   #VUID-vkCmdCopyAccelerationStructureNV-src-04963# The source
---     acceleration structure @src@ /must/ have been constructed prior to
---     the execution of this command
---
--- -   #VUID-vkCmdCopyAccelerationStructureNV-src-03411# If @mode@ is
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR',
---     @src@ /must/ have been constructed with
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR'
---     in the build
---
--- -   #VUID-vkCmdCopyAccelerationStructureNV-buffer-03718# The @buffer@
---     used to create @src@ /must/ be bound to device memory
---
--- -   #VUID-vkCmdCopyAccelerationStructureNV-buffer-03719# The @buffer@
---     used to create @dst@ /must/ be bound to device memory
---
--- -   #VUID-vkCmdCopyAccelerationStructureNV-dst-07791# The range of
---     memory backing @dst@ that is accessed by this command /must/ not
---     overlap the memory backing @src@ that is accessed by this command
---
--- -   #VUID-vkCmdCopyAccelerationStructureNV-dst-07792# @dst@ /must/ be
---     bound completely and contiguously to a single
---     'Vulkan.Core10.Handles.DeviceMemory' object via
---     'bindAccelerationStructureMemoryNV'
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdCopyAccelerationStructureNV-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdCopyAccelerationStructureNV-dst-parameter# @dst@ /must/
---     be a valid 'Vulkan.Extensions.Handles.AccelerationStructureNV'
---     handle
---
--- -   #VUID-vkCmdCopyAccelerationStructureNV-src-parameter# @src@ /must/
---     be a valid 'Vulkan.Extensions.Handles.AccelerationStructureNV'
---     handle
---
--- -   #VUID-vkCmdCopyAccelerationStructureNV-mode-parameter# @mode@ /must/
---     be a valid
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.CopyAccelerationStructureModeKHR'
---     value
---
--- -   #VUID-vkCmdCopyAccelerationStructureNV-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-vkCmdCopyAccelerationStructureNV-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support compute operations
---
--- -   #VUID-vkCmdCopyAccelerationStructureNV-renderpass# This command
---     /must/ only be called outside of a render pass instance
---
--- -   #VUID-vkCmdCopyAccelerationStructureNV-videocoding# This command
---     /must/ only be called outside of a video coding scope
---
--- -   #VUID-vkCmdCopyAccelerationStructureNV-commonparent# Each of
---     @commandBuffer@, @dst@, and @src@ /must/ have been created,
---     allocated, or retrieved from the same 'Vulkan.Core10.Handles.Device'
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
--- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | Compute                                                                                                               | Action                                                                                                                                 |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>,
--- 'Vulkan.Extensions.Handles.AccelerationStructureNV',
--- 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Extensions.VK_KHR_acceleration_structure.CopyAccelerationStructureModeKHR'
-cmdCopyAccelerationStructureNV :: forall io
-                                . (MonadIO io)
-                               => -- | @commandBuffer@ is the command buffer into which the command will be
-                                  -- recorded.
-                                  CommandBuffer
-                               -> -- | @dst@ is the target acceleration structure for the copy.
-                                  ("dst" ::: AccelerationStructureNV)
-                               -> -- | @src@ is the source acceleration structure for the copy.
-                                  ("src" ::: AccelerationStructureNV)
-                               -> -- | @mode@ is a
-                                  -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.CopyAccelerationStructureModeKHR'
-                                  -- value specifying additional operations to perform during the copy.
-                                  CopyAccelerationStructureModeKHR
-                               -> io ()
-cmdCopyAccelerationStructureNV commandBuffer dst src mode = liftIO $ do
-  let vkCmdCopyAccelerationStructureNVPtr = pVkCmdCopyAccelerationStructureNV (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  unless (vkCmdCopyAccelerationStructureNVPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdCopyAccelerationStructureNV is null" Nothing Nothing
-  let vkCmdCopyAccelerationStructureNV' = mkVkCmdCopyAccelerationStructureNV vkCmdCopyAccelerationStructureNVPtr
-  traceAroundEvent "vkCmdCopyAccelerationStructureNV" (vkCmdCopyAccelerationStructureNV'
-                                                         (commandBufferHandle (commandBuffer))
-                                                         (dst)
-                                                         (src)
-                                                         (mode))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdWriteAccelerationStructuresPropertiesNV
-  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Ptr AccelerationStructureNV -> QueryType -> QueryPool -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Ptr AccelerationStructureNV -> QueryType -> QueryPool -> Word32 -> IO ()
-
--- | vkCmdWriteAccelerationStructuresPropertiesNV - Write acceleration
--- structure result parameters to query results.
---
--- = Description
---
--- Accesses to any of the acceleration structures listed in
--- @pAccelerationStructures@ /must/ be
--- <https://registry.khronos.org/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages pipeline stage>
--- and an
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-access-types access type>
--- of
--- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR'.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesNV-queryPool-03755#
---     @queryPool@ /must/ have been created with a @queryType@ matching
---     @queryType@
---
--- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesNV-queryPool-03756#
---     The queries identified by @queryPool@ and @firstQuery@ /must/ be
---     /unavailable/
---
--- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesNV-accelerationStructure-03757#
---     @accelerationStructure@ /must/ be bound completely and contiguously
---     to a single 'Vulkan.Core10.Handles.DeviceMemory' object via
---     'bindAccelerationStructureMemoryNV'
---
--- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesNV-pAccelerationStructures-04958#
---     All acceleration structures in @pAccelerationStructures@ /must/ have
---     been built prior to the execution of this command
---
--- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesNV-pAccelerationStructures-06215#
---     All acceleration structures in @pAccelerationStructures@ /must/ have
---     been built with
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR'
---     if @queryType@ is
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV'
---
--- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesNV-queryType-06216#
---     @queryType@ /must/ be
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV'
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesNV-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesNV-pAccelerationStructures-parameter#
---     @pAccelerationStructures@ /must/ be a valid pointer to an array of
---     @accelerationStructureCount@ valid
---     'Vulkan.Extensions.Handles.AccelerationStructureNV' handles
---
--- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesNV-queryType-parameter#
---     @queryType@ /must/ be a valid
---     'Vulkan.Core10.Enums.QueryType.QueryType' value
---
--- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesNV-queryPool-parameter#
---     @queryPool@ /must/ be a valid 'Vulkan.Core10.Handles.QueryPool'
---     handle
---
--- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesNV-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-vkCmdWriteAccelerationStructuresPropertiesNV-commandBuffer-cmdpool#
---     The 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support compute operations
---
--- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesNV-renderpass# This
---     command /must/ only be called outside of a render pass instance
---
--- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesNV-videocoding# This
---     command /must/ only be called outside of a video coding scope
---
--- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesNV-accelerationStructureCount-arraylength#
---     @accelerationStructureCount@ /must/ be greater than @0@
---
--- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesNV-commonparent#
---     Each of @commandBuffer@, @queryPool@, and the elements of
---     @pAccelerationStructures@ /must/ have been created, allocated, or
---     retrieved from the same 'Vulkan.Core10.Handles.Device'
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
--- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | Compute                                                                                                               | Action                                                                                                                                 |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>,
--- 'Vulkan.Extensions.Handles.AccelerationStructureNV',
--- 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.Handles.QueryPool',
--- 'Vulkan.Core10.Enums.QueryType.QueryType'
-cmdWriteAccelerationStructuresPropertiesNV :: forall io
-                                            . (MonadIO io)
-                                           => -- | @commandBuffer@ is the command buffer into which the command will be
-                                              -- recorded.
-                                              CommandBuffer
-                                           -> -- | @pAccelerationStructures@ is a pointer to an array of existing
-                                              -- previously built acceleration structures.
-                                              ("accelerationStructures" ::: Vector AccelerationStructureNV)
-                                           -> -- | @queryType@ is a 'Vulkan.Core10.Enums.QueryType.QueryType' value
-                                              -- specifying the type of queries managed by the pool.
-                                              QueryType
-                                           -> -- | @queryPool@ is the query pool that will manage the results of the query.
-                                              QueryPool
-                                           -> -- | @firstQuery@ is the first query index within the query pool that will
-                                              -- contain the @accelerationStructureCount@ number of results.
-                                              ("firstQuery" ::: Word32)
-                                           -> io ()
-cmdWriteAccelerationStructuresPropertiesNV commandBuffer
-                                             accelerationStructures
-                                             queryType
-                                             queryPool
-                                             firstQuery = liftIO . evalContT $ do
-  let vkCmdWriteAccelerationStructuresPropertiesNVPtr = pVkCmdWriteAccelerationStructuresPropertiesNV (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCmdWriteAccelerationStructuresPropertiesNVPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdWriteAccelerationStructuresPropertiesNV is null" Nothing Nothing
-  let vkCmdWriteAccelerationStructuresPropertiesNV' = mkVkCmdWriteAccelerationStructuresPropertiesNV vkCmdWriteAccelerationStructuresPropertiesNVPtr
-  pPAccelerationStructures <- ContT $ allocaBytes @AccelerationStructureNV ((Data.Vector.length (accelerationStructures)) * 8)
-  lift $ Data.Vector.imapM_ (\i e -> poke (pPAccelerationStructures `plusPtr` (8 * (i)) :: Ptr AccelerationStructureNV) (e)) (accelerationStructures)
-  lift $ traceAroundEvent "vkCmdWriteAccelerationStructuresPropertiesNV" (vkCmdWriteAccelerationStructuresPropertiesNV'
-                                                                            (commandBufferHandle (commandBuffer))
-                                                                            ((fromIntegral (Data.Vector.length $ (accelerationStructures)) :: Word32))
-                                                                            (pPAccelerationStructures)
-                                                                            (queryType)
-                                                                            (queryPool)
-                                                                            (firstQuery))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdBuildAccelerationStructureNV
-  :: FunPtr (Ptr CommandBuffer_T -> Ptr AccelerationStructureInfoNV -> Buffer -> DeviceSize -> Bool32 -> AccelerationStructureNV -> AccelerationStructureNV -> Buffer -> DeviceSize -> IO ()) -> Ptr CommandBuffer_T -> Ptr AccelerationStructureInfoNV -> Buffer -> DeviceSize -> Bool32 -> AccelerationStructureNV -> AccelerationStructureNV -> Buffer -> DeviceSize -> IO ()
-
--- | vkCmdBuildAccelerationStructureNV - Build an acceleration structure
---
--- = Description
---
--- Accesses to @dst@, @src@, and @scratch@ /must/ be
--- <https://registry.khronos.org/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages pipeline stage>
--- and an
--- <https://registry.khronos.org/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
--- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR'.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdBuildAccelerationStructureNV-geometryCount-02241#
---     @geometryCount@ /must/ be less than or equal to
---     'PhysicalDeviceRayTracingPropertiesNV'::@maxGeometryCount@
---
--- -   #VUID-vkCmdBuildAccelerationStructureNV-dst-02488# @dst@ /must/ have
---     been created with compatible 'AccelerationStructureInfoNV' where
---     'AccelerationStructureInfoNV'::@type@ and
---     'AccelerationStructureInfoNV'::@flags@ are identical,
---     'AccelerationStructureInfoNV'::@instanceCount@ and
---     'AccelerationStructureInfoNV'::@geometryCount@ for @dst@ are greater
---     than or equal to the build size and each geometry in
---     'AccelerationStructureInfoNV'::@pGeometries@ for @dst@ has greater
---     than or equal to the number of vertices, indices, and AABBs
---
--- -   #VUID-vkCmdBuildAccelerationStructureNV-update-02489# If @update@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', @src@ /must/ not be
---     'Vulkan.Core10.APIConstants.NULL_HANDLE'
---
--- -   #VUID-vkCmdBuildAccelerationStructureNV-update-02490# If @update@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', @src@ /must/ have previously
---     been constructed with
---     'BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV' set in
---     'AccelerationStructureInfoNV'::@flags@ in the original build
---
--- -   #VUID-vkCmdBuildAccelerationStructureNV-update-02491# If @update@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', the @size@ member of the
---     'Vulkan.Core10.MemoryManagement.MemoryRequirements' structure
---     returned from a call to
---     'getAccelerationStructureMemoryRequirementsNV' with
---     'AccelerationStructureMemoryRequirementsInfoNV'::@accelerationStructure@
---     set to @dst@ and
---     'AccelerationStructureMemoryRequirementsInfoNV'::@type@ set to
---     'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV'
---     /must/ be less than or equal to the size of @scratch@ minus
---     @scratchOffset@
---
--- -   #VUID-vkCmdBuildAccelerationStructureNV-update-02492# If @update@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE', the @size@ member of the
---     'Vulkan.Core10.MemoryManagement.MemoryRequirements' structure
---     returned from a call to
---     'getAccelerationStructureMemoryRequirementsNV' with
---     'AccelerationStructureMemoryRequirementsInfoNV'::@accelerationStructure@
---     set to @dst@ and
---     'AccelerationStructureMemoryRequirementsInfoNV'::@type@ set to
---     'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV'
---     /must/ be less than or equal to the size of @scratch@ minus
---     @scratchOffset@
---
--- -   #VUID-vkCmdBuildAccelerationStructureNV-scratch-03522# @scratch@
---     /must/ have been created with 'BUFFER_USAGE_RAY_TRACING_BIT_NV'
---     usage flag
---
--- -   #VUID-vkCmdBuildAccelerationStructureNV-instanceData-03523# If
---     @instanceData@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
---     @instanceData@ /must/ have been created with
---     'BUFFER_USAGE_RAY_TRACING_BIT_NV' usage flag
---
--- -   #VUID-vkCmdBuildAccelerationStructureNV-accelerationStructureReference-03786#
---     Each
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureInstanceKHR'::@accelerationStructureReference@
---     value in @instanceData@ /must/ be a valid device address containing
---     a value obtained from 'getAccelerationStructureHandleNV'
---
--- -   #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://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-memory-aliasing memory aliasing>
---
--- -   #VUID-vkCmdBuildAccelerationStructureNV-dst-07787# @dst@ /must/ be
---     bound completely and contiguously to a single
---     'Vulkan.Core10.Handles.DeviceMemory' object via
---     'bindAccelerationStructureMemoryNV'
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdBuildAccelerationStructureNV-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdBuildAccelerationStructureNV-pInfo-parameter# @pInfo@
---     /must/ be a valid pointer to a valid 'AccelerationStructureInfoNV'
---     structure
---
--- -   #VUID-vkCmdBuildAccelerationStructureNV-instanceData-parameter# If
---     @instanceData@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
---     @instanceData@ /must/ be a valid 'Vulkan.Core10.Handles.Buffer'
---     handle
---
--- -   #VUID-vkCmdBuildAccelerationStructureNV-dst-parameter# @dst@ /must/
---     be a valid 'Vulkan.Extensions.Handles.AccelerationStructureNV'
---     handle
---
--- -   #VUID-vkCmdBuildAccelerationStructureNV-src-parameter# If @src@ is
---     not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @src@ /must/ be a
---     valid 'Vulkan.Extensions.Handles.AccelerationStructureNV' handle
---
--- -   #VUID-vkCmdBuildAccelerationStructureNV-scratch-parameter# @scratch@
---     /must/ be a valid 'Vulkan.Core10.Handles.Buffer' handle
---
--- -   #VUID-vkCmdBuildAccelerationStructureNV-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-vkCmdBuildAccelerationStructureNV-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support compute operations
---
--- -   #VUID-vkCmdBuildAccelerationStructureNV-renderpass# This command
---     /must/ only be called outside of a render pass instance
---
--- -   #VUID-vkCmdBuildAccelerationStructureNV-videocoding# This command
---     /must/ only be called outside of a video coding scope
---
--- -   #VUID-vkCmdBuildAccelerationStructureNV-commonparent# Each of
---     @commandBuffer@, @dst@, @instanceData@, @scratch@, and @src@ 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#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
--- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | Compute                                                                                                               | Action                                                                                                                                 |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>,
--- 'AccelerationStructureInfoNV',
--- 'Vulkan.Extensions.Handles.AccelerationStructureNV',
--- 'Vulkan.Core10.FundamentalTypes.Bool32', 'Vulkan.Core10.Handles.Buffer',
--- 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.FundamentalTypes.DeviceSize'
-cmdBuildAccelerationStructureNV :: forall io
-                                 . (MonadIO io)
-                                => -- | @commandBuffer@ is the command buffer into which the command will be
-                                   -- recorded.
-                                   CommandBuffer
-                                -> -- | @pInfo@ contains the shared information for the acceleration structure’s
-                                   -- structure.
-                                   AccelerationStructureInfoNV
-                                -> -- | @instanceData@ is the buffer containing an array of
-                                   -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureInstanceKHR'
-                                   -- structures defining acceleration structures. This parameter /must/ be
-                                   -- @NULL@ for bottom level acceleration structures.
-                                   ("instanceData" ::: Buffer)
-                                -> -- | @instanceOffset@ is the offset in bytes (relative to the start of
-                                   -- @instanceData@) at which the instance data is located.
-                                   ("instanceOffset" ::: DeviceSize)
-                                -> -- | @update@ specifies whether to update the @dst@ acceleration structure
-                                   -- with the data in @src@.
-                                   ("update" ::: Bool)
-                                -> -- | @dst@ is a pointer to the target acceleration structure for the build.
-                                   ("dst" ::: AccelerationStructureNV)
-                                -> -- | @src@ is a pointer to an existing acceleration structure that is to be
-                                   -- used to update the @dst@ acceleration structure.
-                                   ("src" ::: AccelerationStructureNV)
-                                -> -- | @scratch@ is the 'Vulkan.Core10.Handles.Buffer' that will be used as
-                                   -- scratch memory for the build.
-                                   ("scratch" ::: Buffer)
-                                -> -- | @scratchOffset@ is the offset in bytes relative to the start of
-                                   -- @scratch@ that will be used as a scratch memory.
-                                   ("scratchOffset" ::: DeviceSize)
-                                -> io ()
-cmdBuildAccelerationStructureNV commandBuffer
-                                  info
-                                  instanceData
-                                  instanceOffset
-                                  update
-                                  dst
-                                  src
-                                  scratch
-                                  scratchOffset = liftIO . evalContT $ do
-  let vkCmdBuildAccelerationStructureNVPtr = pVkCmdBuildAccelerationStructureNV (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCmdBuildAccelerationStructureNVPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdBuildAccelerationStructureNV is null" Nothing Nothing
-  let vkCmdBuildAccelerationStructureNV' = mkVkCmdBuildAccelerationStructureNV vkCmdBuildAccelerationStructureNVPtr
-  pInfo <- ContT $ withCStruct (info)
-  lift $ traceAroundEvent "vkCmdBuildAccelerationStructureNV" (vkCmdBuildAccelerationStructureNV'
-                                                                 (commandBufferHandle (commandBuffer))
-                                                                 pInfo
-                                                                 (instanceData)
-                                                                 (instanceOffset)
-                                                                 (boolToBool32 (update))
-                                                                 (dst)
-                                                                 (src)
-                                                                 (scratch)
-                                                                 (scratchOffset))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdTraceRaysNV
-  :: FunPtr (Ptr CommandBuffer_T -> Buffer -> DeviceSize -> Buffer -> DeviceSize -> DeviceSize -> Buffer -> DeviceSize -> DeviceSize -> Buffer -> DeviceSize -> DeviceSize -> Word32 -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> DeviceSize -> Buffer -> DeviceSize -> DeviceSize -> Buffer -> DeviceSize -> DeviceSize -> Buffer -> DeviceSize -> DeviceSize -> Word32 -> Word32 -> Word32 -> IO ()
-
--- | vkCmdTraceRaysNV - Initialize a ray tracing dispatch
---
--- = Description
---
--- When the command is executed, a ray generation group of @width@ ×
--- @height@ × @depth@ rays is assembled.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdTraceRaysNV-magFilter-04553# If a
---     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
---     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR',
---     @reductionMode@ equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
---     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-vkCmdTraceRaysNV-magFilter-09598# If a
---     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
---     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR' and
---     @reductionMode@ equal to either
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
---     or
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
---     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_MINMAX_BIT'
---
--- -   #VUID-vkCmdTraceRaysNV-mipmapMode-04770# If a
---     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
---     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR',
---     @reductionMode@ equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
---     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-vkCmdTraceRaysNV-mipmapMode-09599# If a
---     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
---     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'
---     and @reductionMode@ equal to either
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
---     or
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
---     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_MINMAX_BIT'
---
--- -   #VUID-vkCmdTraceRaysNV-unnormalizedCoordinates-09635# If a
---     'Vulkan.Core10.Handles.Sampler' created with
---     @unnormalizedCoordinates@ equal to
---     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
---     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
---     the image view’s @levelCount@ and @layerCount@ /must/ be 1
---
--- -   #VUID-vkCmdTraceRaysNV-unnormalizedCoordinates-09636# If a
---     'Vulkan.Core10.Handles.Sampler' created with
---     @unnormalizedCoordinates@ equal to
---     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
---     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
---     the image view’s @viewType@ /must/ be
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D' or
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D'
---
--- -   #VUID-vkCmdTraceRaysNV-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-vkCmdTraceRaysNV-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-vkCmdTraceRaysNV-None-07888# If a
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'
---     descriptor is accessed using atomic operations as a result of this
---     command, then the storage texel buffer’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-buffer-view-format-features format features>
---     /must/ contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT'
---
--- -   #VUID-vkCmdTraceRaysNV-None-02692# If a
---     'Vulkan.Core10.Handles.ImageView' is sampled with
---     'Vulkan.Core10.Enums.Filter.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.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'
---
--- -   #VUID-vkCmdTraceRaysNV-None-02693# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_filter_cubic VK_EXT_filter_cubic>
---     extension is not enabled and any 'Vulkan.Core10.Handles.ImageView'
---     is sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as a
---     result of this command, it /must/ not have a
---     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' of
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE', or
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY'
---
--- -   #VUID-vkCmdTraceRaysNV-filterCubic-02694# Any
---     'Vulkan.Core10.Handles.ImageView' being sampled with
---     'Vulkan.Core10.Enums.Filter.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-vkCmdTraceRaysNV-filterCubicMinmax-02695# Any
---     'Vulkan.Core10.Handles.ImageView' being sampled with
---     'Vulkan.Core10.Enums.Filter.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-vkCmdTraceRaysNV-cubicRangeClamp-09212# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-cubicRangeClamp cubicRangeClamp>
---     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
---     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
---     a result of this command /must/ not have a
---     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
---     equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
---
--- -   #VUID-vkCmdTraceRaysNV-reductionMode-09213# Any
---     'Vulkan.Core10.Handles.ImageView' being sampled with a
---     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
---     equal to
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
---     as a result of this command /must/ sample with
---     'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT'
---
--- -   #VUID-vkCmdTraceRaysNV-selectableCubicWeights-09214# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-selectableCubicWeights selectableCubicWeights>
---     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
---     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
---     a result of this command /must/ have
---     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.SamplerCubicWeightsCreateInfoQCOM'::@cubicWeights@
---     equal to
---     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM'
---
--- -   #VUID-vkCmdTraceRaysNV-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-vkCmdTraceRaysNV-OpTypeImage-07027# For any
---     'Vulkan.Core10.Handles.ImageView' being written as a storage image
---     where the image format field of the @OpTypeImage@ is @Unknown@, the
---     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_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdTraceRaysNV-OpTypeImage-07028# For any
---     'Vulkan.Core10.Handles.ImageView' being read as a storage image
---     where the image format field of the @OpTypeImage@ is @Unknown@, the
---     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_STORAGE_READ_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdTraceRaysNV-OpTypeImage-07029# For any
---     'Vulkan.Core10.Handles.BufferView' being written as a storage texel
---     buffer where the image format field of the @OpTypeImage@ is
---     @Unknown@, the view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
---     /must/ contain
---     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdTraceRaysNV-OpTypeImage-07030# Any
---     'Vulkan.Core10.Handles.BufferView' being read as a storage texel
---     buffer where the image format field of the @OpTypeImage@ is
---     @Unknown@ then the view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
---     /must/ contain
---     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT'
---
--- -   #VUID-vkCmdTraceRaysNV-None-08600# For each set /n/ that is
---     statically used by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     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' or the
---     'Vulkan.Core10.Handles.DescriptorSetLayout' array used to create the
---     current 'Vulkan.Extensions.Handles.ShaderEXT' , as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
---
--- -   #VUID-vkCmdTraceRaysNV-None-08601# For each push constant that is
---     statically used by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     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' or the
---     'Vulkan.Core10.Handles.DescriptorSetLayout' array used to create the
---     current 'Vulkan.Extensions.Handles.ShaderEXT' , as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
---
--- -   #VUID-vkCmdTraceRaysNV-None-10068# For each array of resources that
---     is used by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     the indices used to access members of the array /must/ be less than
---     the descriptor count for the identified binding in the descriptor
---     sets used by this command
---
--- -   #VUID-vkCmdTraceRaysNV-maintenance4-08602# 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
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
---     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' or the
---     'Vulkan.Core10.Handles.DescriptorSetLayout' and
---     'Vulkan.Core10.PipelineLayout.PushConstantRange' arrays used to
---     create the current 'Vulkan.Extensions.Handles.ShaderEXT' , as
---     described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
---
--- -   #VUID-vkCmdTraceRaysNV-None-08114# Descriptors in each bound
---     descriptor set, specified via
---     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
---     be valid as described by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
---     if they are statically used by the 'Vulkan.Core10.Handles.Pipeline'
---     bound to the pipeline bind point used by this command and the bound
---     'Vulkan.Core10.Handles.Pipeline' was not created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdTraceRaysNV-None-08115# If the descriptors used by the
---     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
---     were specified via
---     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', the
---     bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
---     without
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdTraceRaysNV-None-08116# Descriptors in bound descriptor
---     buffers, specified via
---     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
---     /must/ be valid if they are dynamically used by the
---     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
---     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
---     was created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdTraceRaysNV-None-08604# Descriptors in bound descriptor
---     buffers, specified via
---     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
---     /must/ be valid if they are dynamically used by any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     to the pipeline bind point used by this command
---
--- -   #VUID-vkCmdTraceRaysNV-None-08117# If the descriptors used by the
---     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
---     were specified via
---     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
---     the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
---     with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
---
--- -   #VUID-vkCmdTraceRaysNV-None-08119# If a descriptor is dynamically
---     used with a 'Vulkan.Core10.Handles.Pipeline' created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
---     the descriptor memory /must/ be resident
---
--- -   #VUID-vkCmdTraceRaysNV-None-08605# If a descriptor is dynamically
---     used with a 'Vulkan.Extensions.Handles.ShaderEXT' created with a
---     'Vulkan.Core10.Handles.DescriptorSetLayout' that was created with
---     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
---     the descriptor memory /must/ be resident
---
--- -   #VUID-vkCmdTraceRaysNV-None-08606# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject>
---     feature is not enabled, a valid pipeline /must/ be bound to the
---     pipeline bind point used by this command
---
--- -   #VUID-vkCmdTraceRaysNV-None-08608# If a pipeline is bound to the
---     pipeline bind point used by this command, there /must/ not have been
---     any calls to dynamic state setting commands for any state specified
---     statically in the 'Vulkan.Core10.Handles.Pipeline' object bound to
---     the pipeline bind point used by this command, since that pipeline
---     was bound
---
--- -   #VUID-vkCmdTraceRaysNV-None-08609# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command or any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdTraceRaysNV-None-08610# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command or any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdTraceRaysNV-None-08611# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command or any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdTraceRaysNV-None-08607# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject>
---     feature is enabled, either a valid pipeline /must/ be bound to the
---     pipeline bind point used by this command, or a valid combination of
---     valid and 'Vulkan.Core10.APIConstants.NULL_HANDLE' shader objects
---     /must/ be bound to every supported shader stage corresponding to the
---     pipeline bind point used by this command
---
--- -   #VUID-vkCmdTraceRaysNV-uniformBuffers-06935# If any stage of the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command accesses a uniform buffer, and that stage
---     was created without enabling either
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT'
---     or
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT'
---     for @uniformBuffers@, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, that stage /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-vkCmdTraceRaysNV-None-08612# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, and any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdTraceRaysNV-storageBuffers-06936# If any stage of the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command accesses a storage buffer, and that stage
---     was created without enabling either
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT'
---     or
---     'Vulkan.Extensions.VK_EXT_pipeline_robustness.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT'
---     for @storageBuffers@, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, that stage /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-vkCmdTraceRaysNV-None-08613# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
---     feature is not enabled, and any
---     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
---     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-vkCmdTraceRaysNV-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
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shaders>
---     /must/ not be a protected resource
---
--- -   #VUID-vkCmdTraceRaysNV-None-06550# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
---     accesses a 'Vulkan.Core10.Handles.Sampler' or
---     'Vulkan.Core10.Handles.ImageView' object that enables
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,
---     that object /must/ only be used with @OpImageSample*@ or
---     @OpImageSparseSample*@ instructions
---
--- -   #VUID-vkCmdTraceRaysNV-ConstOffset-06551# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
---     accesses a 'Vulkan.Core10.Handles.Sampler' or
---     'Vulkan.Core10.Handles.ImageView' object that enables
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,
---     that object /must/ not use the @ConstOffset@ and @Offset@ operands
---
--- -   #VUID-vkCmdTraceRaysNV-viewType-07752# If a
---     'Vulkan.Core10.Handles.ImageView' is accessed as a result of this
---     command, then the image view’s @viewType@ /must/ match the @Dim@
---     operand of the @OpTypeImage@ as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-image-dimensions ???>
---
--- -   #VUID-vkCmdTraceRaysNV-format-07753# If a
---     'Vulkan.Core10.Handles.ImageView' is accessed as a result of this
---     command, then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-numericformat numeric type>
---     of the image view’s @format@ and the @Sampled@ @Type@ operand of the
---     @OpTypeImage@ /must/ match
---
--- -   #VUID-vkCmdTraceRaysNV-OpImageWrite-08795# If a
---     'Vulkan.Core10.Handles.ImageView' created with a format other than
---     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM_KHR' 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-vkCmdTraceRaysNV-OpImageWrite-08796# If a
---     'Vulkan.Core10.Handles.ImageView' created with the format
---     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM_KHR' is accessed using
---     @OpImageWrite@ as a result of this command, then the @Type@ of the
---     @Texel@ operand of that instruction /must/ have four components
---
--- -   #VUID-vkCmdTraceRaysNV-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-vkCmdTraceRaysNV-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-vkCmdTraceRaysNV-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-vkCmdTraceRaysNV-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-vkCmdTraceRaysNV-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-vkCmdTraceRaysNV-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-vkCmdTraceRaysNV-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-vkCmdTraceRaysNV-OpImageWeightedSampleQCOM-06971# If
---     @OpImageWeightedSampleQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM'
---
--- -   #VUID-vkCmdTraceRaysNV-OpImageWeightedSampleQCOM-06972# If
---     @OpImageWeightedSampleQCOM@ uses a 'Vulkan.Core10.Handles.ImageView'
---     as a sample weight image 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM'
---
--- -   #VUID-vkCmdTraceRaysNV-OpImageBoxFilterQCOM-06973# If
---     @OpImageBoxFilterQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM'
---
--- -   #VUID-vkCmdTraceRaysNV-OpImageBlockMatchSSDQCOM-06974# If
---     @OpImageBlockMatchSSDQCOM@ is used to read from an
---     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
---
--- -   #VUID-vkCmdTraceRaysNV-OpImageBlockMatchSADQCOM-06975# If
---     @OpImageBlockMatchSADQCOM@ is used to read from an
---     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
---
--- -   #VUID-vkCmdTraceRaysNV-OpImageBlockMatchSADQCOM-06976# If
---     @OpImageBlockMatchSADQCOM@ or OpImageBlockMatchSSDQCOM is used to
---     read from a reference image as result of this command, then the
---     specified reference coordinates /must/ not fail
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
---
--- -   #VUID-vkCmdTraceRaysNV-OpImageWeightedSampleQCOM-06977# If
---     @OpImageWeightedSampleQCOM@, @OpImageBoxFilterQCOM@,
---     @OpImageBlockMatchWindowSSDQCOM@, @OpImageBlockMatchWindowSADQCOM@,
---     @OpImageBlockMatchGatherSSDQCOM@, @OpImageBlockMatchGatherSADQCOM@,
---     @OpImageBlockMatchSSDQCOM@, or @OpImageBlockMatchSADQCOM@ uses a
---     'Vulkan.Core10.Handles.Sampler' as a result of this command, then
---     the sampler /must/ have been created with
---     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
---
--- -   #VUID-vkCmdTraceRaysNV-OpImageWeightedSampleQCOM-06978# If any
---     command other than @OpImageWeightedSampleQCOM@,
---     @OpImageBoxFilterQCOM@, @OpImageBlockMatchWindowSSDQCOM@,
---     @OpImageBlockMatchWindowSADQCOM@, @OpImageBlockMatchGatherSSDQCOM@,
---     @OpImageBlockMatchGatherSADQCOM@, @OpImageBlockMatchSSDQCOM@, or
---     @OpImageBlockMatchSADQCOM@ uses a 'Vulkan.Core10.Handles.Sampler' as
---     a result of this command, then the sampler /must/ not have been
---     created with
---     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
---
--- -   #VUID-vkCmdTraceRaysNV-OpImageBlockMatchWindow-09215# If a
---     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
---     instruction is used to read from an
---     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
---
--- -   #VUID-vkCmdTraceRaysNV-OpImageBlockMatchWindow-09216# If a
---     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
---     instruction is used to read from an
---     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
---     the image view’s format /must/ be a single-component format
---
--- -   #VUID-vkCmdTraceRaysNV-OpImageBlockMatchWindow-09217# If a
---     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
---     read from a reference image as result of this command, then the
---     specified reference coordinates /must/ not fail
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
---
--- -   #VUID-vkCmdTraceRaysNV-None-07288# Any shader invocation executed by
---     this command /must/
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-termination terminate>
---
--- -   #VUID-vkCmdTraceRaysNV-None-09600# If a descriptor with type equal
---     to any of
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM',
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM',
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',
---     or
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'
---     is accessed as a result of this command, the image subresource
---     identified by that descriptor /must/ be in the image layout
---     identified when the descriptor was written
---
--- -   #VUID-vkCmdTraceRaysNV-None-03429# Any shader group handle
---     referenced by this call /must/ have been queried from the bound ray
---     tracing pipeline
---
--- -   #VUID-vkCmdTraceRaysNV-None-09458# If the bound ray tracing pipeline
---     state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.cmdSetRayTracingPipelineStackSizeKHR'
---     /must/ have been called in the current command buffer prior to this
---     trace command
---
--- -   #VUID-vkCmdTraceRaysNV-commandBuffer-04624# @commandBuffer@ /must/
---     not be a protected command buffer
---
--- -   #VUID-vkCmdTraceRaysNV-maxRecursionDepth-03625# This command /must/
---     not cause a pipeline trace ray instruction to be executed from a
---     shader invocation with a
---     <https://registry.khronos.org/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
---
--- -   #VUID-vkCmdTraceRaysNV-raygenShaderBindingTableBuffer-04042# If
---     @raygenShaderBindingTableBuffer@ is non-sparse then it /must/ be
---     bound completely and contiguously to a single
---     'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-vkCmdTraceRaysNV-raygenShaderBindingOffset-02455#
---     @raygenShaderBindingOffset@ /must/ be less than the size of
---     @raygenShaderBindingTableBuffer@
---
--- -   #VUID-vkCmdTraceRaysNV-raygenShaderBindingOffset-02456#
---     @raygenShaderBindingOffset@ /must/ be a multiple of
---     'PhysicalDeviceRayTracingPropertiesNV'::@shaderGroupBaseAlignment@
---
--- -   #VUID-vkCmdTraceRaysNV-missShaderBindingTableBuffer-04043# If
---     @missShaderBindingTableBuffer@ is non-sparse then it /must/ be bound
---     completely and contiguously to a single
---     'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-vkCmdTraceRaysNV-missShaderBindingOffset-02457#
---     @missShaderBindingOffset@ /must/ be less than the size of
---     @missShaderBindingTableBuffer@
---
--- -   #VUID-vkCmdTraceRaysNV-missShaderBindingOffset-02458#
---     @missShaderBindingOffset@ /must/ be a multiple of
---     'PhysicalDeviceRayTracingPropertiesNV'::@shaderGroupBaseAlignment@
---
--- -   #VUID-vkCmdTraceRaysNV-hitShaderBindingTableBuffer-04044# If
---     @hitShaderBindingTableBuffer@ is non-sparse then it /must/ be bound
---     completely and contiguously to a single
---     'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-vkCmdTraceRaysNV-hitShaderBindingOffset-02459#
---     @hitShaderBindingOffset@ /must/ be less than the size of
---     @hitShaderBindingTableBuffer@
---
--- -   #VUID-vkCmdTraceRaysNV-hitShaderBindingOffset-02460#
---     @hitShaderBindingOffset@ /must/ be a multiple of
---     'PhysicalDeviceRayTracingPropertiesNV'::@shaderGroupBaseAlignment@
---
--- -   #VUID-vkCmdTraceRaysNV-callableShaderBindingTableBuffer-04045# If
---     @callableShaderBindingTableBuffer@ is non-sparse then it /must/ be
---     bound completely and contiguously to a single
---     'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-vkCmdTraceRaysNV-callableShaderBindingOffset-02461#
---     @callableShaderBindingOffset@ /must/ be less than the size of
---     @callableShaderBindingTableBuffer@
---
--- -   #VUID-vkCmdTraceRaysNV-callableShaderBindingOffset-02462#
---     @callableShaderBindingOffset@ /must/ be a multiple of
---     'PhysicalDeviceRayTracingPropertiesNV'::@shaderGroupBaseAlignment@
---
--- -   #VUID-vkCmdTraceRaysNV-missShaderBindingStride-02463#
---     @missShaderBindingStride@ /must/ be a multiple of
---     'PhysicalDeviceRayTracingPropertiesNV'::@shaderGroupHandleSize@
---
--- -   #VUID-vkCmdTraceRaysNV-hitShaderBindingStride-02464#
---     @hitShaderBindingStride@ /must/ be a multiple of
---     'PhysicalDeviceRayTracingPropertiesNV'::@shaderGroupHandleSize@
---
--- -   #VUID-vkCmdTraceRaysNV-callableShaderBindingStride-02465#
---     @callableShaderBindingStride@ /must/ be a multiple of
---     'PhysicalDeviceRayTracingPropertiesNV'::@shaderGroupHandleSize@
---
--- -   #VUID-vkCmdTraceRaysNV-missShaderBindingStride-02466#
---     @missShaderBindingStride@ /must/ be less than or equal to
---     'PhysicalDeviceRayTracingPropertiesNV'::@maxShaderGroupStride@
---
--- -   #VUID-vkCmdTraceRaysNV-hitShaderBindingStride-02467#
---     @hitShaderBindingStride@ /must/ be less than or equal to
---     'PhysicalDeviceRayTracingPropertiesNV'::@maxShaderGroupStride@
---
--- -   #VUID-vkCmdTraceRaysNV-callableShaderBindingStride-02468#
---     @callableShaderBindingStride@ /must/ be less than or equal to
---     'PhysicalDeviceRayTracingPropertiesNV'::@maxShaderGroupStride@
---
--- -   #VUID-vkCmdTraceRaysNV-width-02469# @width@ /must/ be less than or
---     equal to
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[0]
---
--- -   #VUID-vkCmdTraceRaysNV-height-02470# @height@ /must/ be less than or
---     equal to
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[1]
---
--- -   #VUID-vkCmdTraceRaysNV-depth-02471# @depth@ /must/ be less than or
---     equal to
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[2]
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdTraceRaysNV-commandBuffer-parameter# @commandBuffer@
---     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdTraceRaysNV-raygenShaderBindingTableBuffer-parameter#
---     @raygenShaderBindingTableBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.Buffer' handle
---
--- -   #VUID-vkCmdTraceRaysNV-missShaderBindingTableBuffer-parameter# If
---     @missShaderBindingTableBuffer@ is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE',
---     @missShaderBindingTableBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.Buffer' handle
---
--- -   #VUID-vkCmdTraceRaysNV-hitShaderBindingTableBuffer-parameter# If
---     @hitShaderBindingTableBuffer@ is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE',
---     @hitShaderBindingTableBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.Buffer' handle
---
--- -   #VUID-vkCmdTraceRaysNV-callableShaderBindingTableBuffer-parameter#
---     If @callableShaderBindingTableBuffer@ is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE',
---     @callableShaderBindingTableBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.Buffer' handle
---
--- -   #VUID-vkCmdTraceRaysNV-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-vkCmdTraceRaysNV-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support compute operations
---
--- -   #VUID-vkCmdTraceRaysNV-renderpass# This command /must/ only be
---     called outside of a render pass instance
---
--- -   #VUID-vkCmdTraceRaysNV-videocoding# This command /must/ only be
---     called outside of a video coding scope
---
--- -   #VUID-vkCmdTraceRaysNV-commonparent# Each of
---     @callableShaderBindingTableBuffer@, @commandBuffer@,
---     @hitShaderBindingTableBuffer@, @missShaderBindingTableBuffer@, and
---     @raygenShaderBindingTableBuffer@ 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#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
--- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | Compute                                                                                                               | Action                                                                                                                                 |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>,
--- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.FundamentalTypes.DeviceSize'
-cmdTraceRaysNV :: forall io
-                . (MonadIO io)
-               => -- | @commandBuffer@ is the command buffer into which the command will be
-                  -- recorded.
-                  CommandBuffer
-               -> -- | @raygenShaderBindingTableBuffer@ is the buffer object that holds the
-                  -- shader binding table data for the ray generation shader stage.
-                  ("raygenShaderBindingTableBuffer" ::: Buffer)
-               -> -- | @raygenShaderBindingOffset@ is the offset in bytes (relative to
-                  -- @raygenShaderBindingTableBuffer@) of the ray generation shader being
-                  -- used for the trace.
-                  ("raygenShaderBindingOffset" ::: DeviceSize)
-               -> -- | @missShaderBindingTableBuffer@ is the buffer object that holds the
-                  -- shader binding table data for the miss shader stage.
-                  ("missShaderBindingTableBuffer" ::: Buffer)
-               -> -- | @missShaderBindingOffset@ is the offset in bytes (relative to
-                  -- @missShaderBindingTableBuffer@) of the miss shader being used for the
-                  -- trace.
-                  ("missShaderBindingOffset" ::: DeviceSize)
-               -> -- | @missShaderBindingStride@ is the size in bytes of each shader binding
-                  -- table record in @missShaderBindingTableBuffer@.
-                  ("missShaderBindingStride" ::: DeviceSize)
-               -> -- | @hitShaderBindingTableBuffer@ is the buffer object that holds the shader
-                  -- binding table data for the hit shader stages.
-                  ("hitShaderBindingTableBuffer" ::: Buffer)
-               -> -- | @hitShaderBindingOffset@ is the offset in bytes (relative to
-                  -- @hitShaderBindingTableBuffer@) of the hit shader group being used for
-                  -- the trace.
-                  ("hitShaderBindingOffset" ::: DeviceSize)
-               -> -- | @hitShaderBindingStride@ is the size in bytes of each shader binding
-                  -- table record in @hitShaderBindingTableBuffer@.
-                  ("hitShaderBindingStride" ::: DeviceSize)
-               -> -- | @callableShaderBindingTableBuffer@ is the buffer object that holds the
-                  -- shader binding table data for the callable shader stage.
-                  ("callableShaderBindingTableBuffer" ::: Buffer)
-               -> -- | @callableShaderBindingOffset@ is the offset in bytes (relative to
-                  -- @callableShaderBindingTableBuffer@) of the callable shader being used
-                  -- for the trace.
-                  ("callableShaderBindingOffset" ::: DeviceSize)
-               -> -- | @callableShaderBindingStride@ is the size in bytes of each shader
-                  -- binding table record in @callableShaderBindingTableBuffer@.
-                  ("callableShaderBindingStride" ::: DeviceSize)
-               -> -- | @width@ is the width of the ray trace query dimensions.
-                  ("width" ::: Word32)
-               -> -- | @height@ is height of the ray trace query dimensions.
-                  ("height" ::: Word32)
-               -> -- | @depth@ is depth of the ray trace query dimensions.
-                  ("depth" ::: Word32)
-               -> io ()
-cmdTraceRaysNV commandBuffer
-                 raygenShaderBindingTableBuffer
-                 raygenShaderBindingOffset
-                 missShaderBindingTableBuffer
-                 missShaderBindingOffset
-                 missShaderBindingStride
-                 hitShaderBindingTableBuffer
-                 hitShaderBindingOffset
-                 hitShaderBindingStride
-                 callableShaderBindingTableBuffer
-                 callableShaderBindingOffset
-                 callableShaderBindingStride
-                 width
-                 height
-                 depth = liftIO $ do
-  let vkCmdTraceRaysNVPtr = pVkCmdTraceRaysNV (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  unless (vkCmdTraceRaysNVPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdTraceRaysNV is null" Nothing Nothing
-  let vkCmdTraceRaysNV' = mkVkCmdTraceRaysNV vkCmdTraceRaysNVPtr
-  traceAroundEvent "vkCmdTraceRaysNV" (vkCmdTraceRaysNV'
-                                         (commandBufferHandle (commandBuffer))
-                                         (raygenShaderBindingTableBuffer)
-                                         (raygenShaderBindingOffset)
-                                         (missShaderBindingTableBuffer)
-                                         (missShaderBindingOffset)
-                                         (missShaderBindingStride)
-                                         (hitShaderBindingTableBuffer)
-                                         (hitShaderBindingOffset)
-                                         (hitShaderBindingStride)
-                                         (callableShaderBindingTableBuffer)
-                                         (callableShaderBindingOffset)
-                                         (callableShaderBindingStride)
-                                         (width)
-                                         (height)
-                                         (depth))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkGetAccelerationStructureHandleNV
-  :: FunPtr (Ptr Device_T -> AccelerationStructureNV -> CSize -> Ptr () -> IO Result) -> Ptr Device_T -> AccelerationStructureNV -> CSize -> Ptr () -> IO Result
-
--- | vkGetAccelerationStructureHandleNV - Get opaque acceleration structure
--- 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'
---
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>,
--- 'Vulkan.Extensions.Handles.AccelerationStructureNV',
--- 'Vulkan.Core10.Handles.Device'
-getAccelerationStructureHandleNV :: forall io
-                                  . (MonadIO io)
-                                 => -- | @device@ is the logical device that owns the acceleration structures.
-                                    --
-                                    -- #VUID-vkGetAccelerationStructureHandleNV-device-parameter# @device@
-                                    -- /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
-                                    Device
-                                 -> -- | @accelerationStructure@ is the acceleration structure.
-                                    --
-                                    -- #VUID-vkGetAccelerationStructureHandleNV-accelerationStructure-02787#
-                                    -- @accelerationStructure@ /must/ be bound completely and contiguously to a
-                                    -- single 'Vulkan.Core10.Handles.DeviceMemory' object via
-                                    -- 'bindAccelerationStructureMemoryNV'
-                                    --
-                                    -- #VUID-vkGetAccelerationStructureHandleNV-accelerationStructure-parameter#
-                                    -- @accelerationStructure@ /must/ be a valid
-                                    -- 'Vulkan.Extensions.Handles.AccelerationStructureNV' handle
-                                    --
-                                    -- #VUID-vkGetAccelerationStructureHandleNV-accelerationStructure-parent#
-                                    -- @accelerationStructure@ /must/ have been created, allocated, or
-                                    -- retrieved from @device@
-                                    AccelerationStructureNV
-                                 -> -- | @dataSize@ is the size in bytes of the buffer pointed to by @pData@.
-                                    --
-                                    -- #VUID-vkGetAccelerationStructureHandleNV-dataSize-02240# @dataSize@
-                                    -- /must/ be large enough to contain the result of the query, as described
-                                    -- above
-                                    --
-                                    -- #VUID-vkGetAccelerationStructureHandleNV-dataSize-arraylength#
-                                    -- @dataSize@ /must/ be greater than @0@
-                                    ("dataSize" ::: Word64)
-                                 -> -- | @pData@ is a pointer to an application-allocated buffer where the
-                                    -- results will be written.
-                                    --
-                                    -- #VUID-vkGetAccelerationStructureHandleNV-pData-parameter# @pData@ /must/
-                                    -- be a valid pointer to an array of @dataSize@ bytes
-                                    ("data" ::: Ptr ())
-                                 -> io ()
-getAccelerationStructureHandleNV device
-                                   accelerationStructure
-                                   dataSize
-                                   data' = liftIO $ do
-  let vkGetAccelerationStructureHandleNVPtr = pVkGetAccelerationStructureHandleNV (case device of Device{deviceCmds} -> deviceCmds)
-  unless (vkGetAccelerationStructureHandleNVPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetAccelerationStructureHandleNV is null" Nothing Nothing
-  let vkGetAccelerationStructureHandleNV' = mkVkGetAccelerationStructureHandleNV vkGetAccelerationStructureHandleNVPtr
-  r <- traceAroundEvent "vkGetAccelerationStructureHandleNV" (vkGetAccelerationStructureHandleNV'
-                                                                (deviceHandle (device))
-                                                                (accelerationStructure)
-                                                                (CSize (dataSize))
-                                                                (data'))
-  when (r < SUCCESS) (throwIO (VulkanException r))
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCreateRayTracingPipelinesNV
-  :: FunPtr (Ptr Device_T -> PipelineCache -> Word32 -> Ptr (SomeStruct RayTracingPipelineCreateInfoNV) -> Ptr AllocationCallbacks -> Ptr Pipeline -> IO Result) -> Ptr Device_T -> PipelineCache -> Word32 -> Ptr (SomeStruct RayTracingPipelineCreateInfoNV) -> Ptr AllocationCallbacks -> Ptr Pipeline -> IO Result
-
--- | vkCreateRayTracingPipelinesNV - Creates a new ray tracing pipeline
--- object
---
--- = Description
---
--- Pipelines are created and returned as described for
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-multiple Multiple Pipeline Creation>.
---
--- == Valid Usage
---
--- -   #VUID-vkCreateRayTracingPipelinesNV-device-09677# @device@ /must/
---     support at least one queue family with the
---     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT' capability
---
--- -   #VUID-vkCreateRayTracingPipelinesNV-flags-03415# If the @flags@
---     member of any element of @pCreateInfos@ contains the
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'
---     flag, and the @basePipelineIndex@ member of that same element is not
---     @-1@, @basePipelineIndex@ /must/ be less than the index into
---     @pCreateInfos@ that corresponds to that element
---
--- -   #VUID-vkCreateRayTracingPipelinesNV-flags-03416# If the @flags@
---     member of any element of @pCreateInfos@ contains the
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'
---     flag, the base pipeline /must/ have been created with the
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT'
---     flag set
---
--- -   #VUID-vkCreateRayTracingPipelinesNV-flags-03816# @flags@ /must/ not
---     contain the
---     'Vulkan.Core11.Promoted_From_VK_KHR_device_group.PIPELINE_CREATE_DISPATCH_BASE'
---     flag
---
--- -   #VUID-vkCreateRayTracingPipelinesNV-pipelineCache-02903# If
---     @pipelineCache@ was created with
---     '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>
---
--- -   #VUID-vkCreateRayTracingPipelinesNV-pNext-09616# If
---     'Vulkan.Extensions.VK_KHR_pipeline_binary.PipelineBinaryInfoKHR'::@binaryCount@
---     is not @0@ for any element of @pCreateInfos@, @pipelineCache@ /must/
---     be 'Vulkan.Core10.APIConstants.NULL_HANDLE'
---
--- -   #VUID-vkCreateRayTracingPipelinesNV-pNext-09617# If a
---     'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlags2CreateInfoKHR'
---     structure with the
---     'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR'
---     flag set is included in the @pNext@ chain of any element of
---     @pCreateInfos@, @pipelineCache@ /must/ be
---     'Vulkan.Core10.APIConstants.NULL_HANDLE'
---
--- -   #VUID-vkCreateRayTracingPipelinesNV-binaryCount-09620# If
---     'Vulkan.Extensions.VK_KHR_pipeline_binary.PipelineBinaryInfoKHR'::@binaryCount@
---     is not @0@ for any element of @pCreateInfos@,
---     'Vulkan.Core13.Enums.PipelineCreationFeedbackFlagBits.PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT'
---     /must/ not be set in the @flags@ of that element
---
--- -   #VUID-vkCreateRayTracingPipelinesNV-binaryCount-09621# If
---     'Vulkan.Extensions.VK_KHR_pipeline_binary.PipelineBinaryInfoKHR'::@binaryCount@
---     is not @0@ for any element of @pCreateInfos@,
---     'Vulkan.Core13.Enums.PipelineCreationFeedbackFlagBits.PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT'
---     /must/ not be set in the @flags@ of that element
---
--- -   #VUID-vkCreateRayTracingPipelinesNV-binaryCount-09622# If
---     'Vulkan.Extensions.VK_KHR_pipeline_binary.PipelineBinaryInfoKHR'::@binaryCount@
---     is not @0@ for any element of @pCreateInfos@,
---     'Vulkan.Extensions.VK_EXT_pipeline_creation_cache_control.PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT'
---     /must/ not be set in the @flags@ of that element
---
--- -   #VUID-vkCreateRayTracingPipelinesNV-pNext-10150# If a
---     'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlags2CreateInfoKHR'
---     structure is included in the @pNext@ chain of any element of
---     @pCreateInfos@,
---     'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR'
---     flag /must/ not be set
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCreateRayTracingPipelinesNV-device-parameter# @device@
---     /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
---
--- -   #VUID-vkCreateRayTracingPipelinesNV-pipelineCache-parameter# If
---     @pipelineCache@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
---     @pipelineCache@ /must/ be a valid
---     'Vulkan.Core10.Handles.PipelineCache' handle
---
--- -   #VUID-vkCreateRayTracingPipelinesNV-pCreateInfos-parameter#
---     @pCreateInfos@ /must/ be a valid pointer to an array of
---     @createInfoCount@ valid 'RayTracingPipelineCreateInfoNV' structures
---
--- -   #VUID-vkCreateRayTracingPipelinesNV-pAllocator-parameter# If
---     @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid pointer
---     to a valid 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'
---     structure
---
--- -   #VUID-vkCreateRayTracingPipelinesNV-pPipelines-parameter#
---     @pPipelines@ /must/ be a valid pointer to an array of
---     @createInfoCount@ 'Vulkan.Core10.Handles.Pipeline' handles
---
--- -   #VUID-vkCreateRayTracingPipelinesNV-createInfoCount-arraylength#
---     @createInfoCount@ /must/ be greater than @0@
---
--- -   #VUID-vkCreateRayTracingPipelinesNV-pipelineCache-parent# If
---     @pipelineCache@ is a valid handle, it /must/ have been created,
---     allocated, or retrieved from @device@
---
--- == Return Codes
---
--- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
---
---     -   'Vulkan.Core10.Enums.Result.SUCCESS'
---
---     -   '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>]
---
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
---
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
---
---     -   'Vulkan.Core10.Enums.Result.ERROR_INVALID_SHADER_NV'
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>,
--- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',
--- 'Vulkan.Core10.Handles.Device', 'Vulkan.Core10.Handles.Pipeline',
--- 'Vulkan.Core10.Handles.PipelineCache', 'RayTracingPipelineCreateInfoNV'
-createRayTracingPipelinesNV :: forall io
-                             . (MonadIO io)
-                            => -- | @device@ is the logical device that creates the ray tracing pipelines.
-                               Device
-                            -> -- | @pipelineCache@ is either 'Vulkan.Core10.APIConstants.NULL_HANDLE',
-                               -- indicating that pipeline caching is disabled, or the handle of a valid
-                               -- <https://registry.khronos.org/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
-                            -> -- | @pCreateInfos@ is a pointer to an array of
-                               -- 'RayTracingPipelineCreateInfoNV' structures.
-                               ("createInfos" ::: Vector (SomeStruct RayTracingPipelineCreateInfoNV))
-                            -> -- | @pAllocator@ controls host memory allocation as described in the
-                               -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
-                               -- chapter.
-                               ("allocator" ::: Maybe AllocationCallbacks)
-                            -> io (Result, ("pipelines" ::: Vector Pipeline))
-createRayTracingPipelinesNV device
-                              pipelineCache
-                              createInfos
-                              allocator = liftIO . evalContT $ do
-  let vkCreateRayTracingPipelinesNVPtr = pVkCreateRayTracingPipelinesNV (case device of Device{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCreateRayTracingPipelinesNVPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCreateRayTracingPipelinesNV is null" Nothing Nothing
-  let vkCreateRayTracingPipelinesNV' = mkVkCreateRayTracingPipelinesNV vkCreateRayTracingPipelinesNVPtr
-  pPCreateInfos <- ContT $ allocaBytes @(RayTracingPipelineCreateInfoNV _) ((Data.Vector.length (createInfos)) * 80)
-  Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPCreateInfos `plusPtr` (80 * (i)) :: Ptr (RayTracingPipelineCreateInfoNV _))) (e) . ($ ())) (createInfos)
-  pAllocator <- case (allocator) of
-    Nothing -> pure nullPtr
-    Just j -> ContT $ withCStruct (j)
-  pPPipelines <- ContT $ bracket (callocBytes @Pipeline ((fromIntegral ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32))) * 8)) free
-  r <- lift $ traceAroundEvent "vkCreateRayTracingPipelinesNV" (vkCreateRayTracingPipelinesNV'
-                                                                  (deviceHandle (device))
-                                                                  (pipelineCache)
-                                                                  ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32))
-                                                                  (forgetExtensions (pPCreateInfos))
-                                                                  pAllocator
-                                                                  (pPPipelines))
-  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
-  pPipelines <- lift $ generateM (fromIntegral ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32))) (\i -> peek @Pipeline ((pPPipelines `advancePtrBytes` (8 * (i)) :: Ptr Pipeline)))
-  pure $ (r, pPipelines)
-
--- | A convenience wrapper to make a compatible pair of calls to
--- 'createRayTracingPipelinesNV' and 'destroyPipeline'
---
--- To ensure that 'destroyPipeline' 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.
---
-withRayTracingPipelinesNV :: forall io r . MonadIO io => Device -> PipelineCache -> Vector (SomeStruct RayTracingPipelineCreateInfoNV) -> Maybe AllocationCallbacks -> (io (Result, Vector Pipeline) -> ((Result, Vector Pipeline) -> io ()) -> r) -> r
-withRayTracingPipelinesNV device pipelineCache pCreateInfos pAllocator b =
-  b (createRayTracingPipelinesNV device pipelineCache pCreateInfos pAllocator)
-    (\(_, o1) -> traverse_ (\o1Elem -> destroyPipeline device
-                                                         o1Elem
-                                                         pAllocator) o1)
-
-
--- No documentation found for TopLevel "VK_SHADER_STAGE_RAYGEN_BIT_NV"
-pattern SHADER_STAGE_RAYGEN_BIT_NV = SHADER_STAGE_RAYGEN_BIT_KHR
-
-
--- No documentation found for TopLevel "VK_SHADER_STAGE_ANY_HIT_BIT_NV"
-pattern SHADER_STAGE_ANY_HIT_BIT_NV = SHADER_STAGE_ANY_HIT_BIT_KHR
-
-
--- No documentation found for TopLevel "VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV"
-pattern SHADER_STAGE_CLOSEST_HIT_BIT_NV = SHADER_STAGE_CLOSEST_HIT_BIT_KHR
-
-
--- No documentation found for TopLevel "VK_SHADER_STAGE_MISS_BIT_NV"
-pattern SHADER_STAGE_MISS_BIT_NV = SHADER_STAGE_MISS_BIT_KHR
-
-
--- No documentation found for TopLevel "VK_SHADER_STAGE_INTERSECTION_BIT_NV"
-pattern SHADER_STAGE_INTERSECTION_BIT_NV = SHADER_STAGE_INTERSECTION_BIT_KHR
-
-
--- No documentation found for TopLevel "VK_SHADER_STAGE_CALLABLE_BIT_NV"
-pattern SHADER_STAGE_CALLABLE_BIT_NV = SHADER_STAGE_CALLABLE_BIT_KHR
-
-
--- No documentation found for TopLevel "VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV"
-pattern PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV = PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR
-
-
--- No documentation found for TopLevel "VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV"
-pattern PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV = PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR
-
-
--- No documentation found for TopLevel "VK_BUFFER_USAGE_RAY_TRACING_BIT_NV"
-pattern BUFFER_USAGE_RAY_TRACING_BIT_NV = BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR
-
-
--- No documentation found for TopLevel "VK_PIPELINE_BIND_POINT_RAY_TRACING_NV"
-pattern PIPELINE_BIND_POINT_RAY_TRACING_NV = PIPELINE_BIND_POINT_RAY_TRACING_KHR
-
-
--- No documentation found for TopLevel "VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV"
-pattern ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV = ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR
-
-
--- No documentation found for TopLevel "VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV"
-pattern ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV = ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR
-
-
--- No documentation found for TopLevel "VK_INDEX_TYPE_NONE_NV"
-pattern INDEX_TYPE_NONE_NV = INDEX_TYPE_NONE_KHR
-
-
--- No documentation found for TopLevel "VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV"
-pattern RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV = RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR
-
-
--- No documentation found for TopLevel "VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV"
-pattern RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV = RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR
-
-
--- No documentation found for TopLevel "VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV"
-pattern RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV = RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR
-
-
--- No documentation found for TopLevel "VK_GEOMETRY_TYPE_TRIANGLES_NV"
-pattern GEOMETRY_TYPE_TRIANGLES_NV = GEOMETRY_TYPE_TRIANGLES_KHR
-
-
--- No documentation found for TopLevel "VK_GEOMETRY_TYPE_AABBS_NV"
-pattern GEOMETRY_TYPE_AABBS_NV = GEOMETRY_TYPE_AABBS_KHR
-
-
--- No documentation found for TopLevel "VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV"
-pattern ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV = ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR
-
-
--- No documentation found for TopLevel "VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV"
-pattern ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV = ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR
-
-
--- No documentation found for TopLevel "VK_GEOMETRY_OPAQUE_BIT_NV"
-pattern GEOMETRY_OPAQUE_BIT_NV = GEOMETRY_OPAQUE_BIT_KHR
-
-
--- No documentation found for TopLevel "VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV"
-pattern GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV = GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR
-
-
--- No documentation found for TopLevel "VK_GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV"
-pattern GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV = GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR
-
-
--- No documentation found for TopLevel "VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV"
-pattern GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV = GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR
-
-
--- No documentation found for TopLevel "VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV"
-pattern GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV = GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR
-
-
--- No documentation found for TopLevel "VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV"
-pattern GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV = GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR
-
-
--- No documentation found for TopLevel "VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV"
-pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV = BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR
-
-
--- No documentation found for TopLevel "VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV"
-pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV = BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR
-
-
--- No documentation found for TopLevel "VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV"
-pattern BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV = BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR
-
-
--- No documentation found for TopLevel "VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV"
-pattern BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV = BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR
-
-
--- No documentation found for TopLevel "VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV"
-pattern BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV = BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR
-
-
--- No documentation found for TopLevel "VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV"
-pattern COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV = COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR
-
-
--- No documentation found for TopLevel "VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV"
-pattern COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV = COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR
-
-
--- No documentation found for TopLevel "VK_SHADER_UNUSED_NV"
-pattern SHADER_UNUSED_NV = SHADER_UNUSED_KHR
-
-
--- No documentation found for TopLevel "vkGetRayTracingShaderGroupHandlesNV"
-getRayTracingShaderGroupHandlesNV = getRayTracingShaderGroupHandlesKHR
-
-
--- | VkRayTracingShaderGroupCreateInfoNV - Structure specifying shaders in a
--- shader group
---
--- == Valid Usage
---
--- -   #VUID-VkRayTracingShaderGroupCreateInfoNV-type-02413# If @type@ is
---     'RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV' then @generalShader@
---     /must/ be a valid index into
---     'RayTracingPipelineCreateInfoNV'::@pStages@ referring to a shader of
---     'SHADER_STAGE_RAYGEN_BIT_NV', 'SHADER_STAGE_MISS_BIT_NV', or
---     'SHADER_STAGE_CALLABLE_BIT_NV'
---
--- -   #VUID-VkRayTracingShaderGroupCreateInfoNV-type-02414# If @type@ is
---     'RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV' then @closestHitShader@,
---     @anyHitShader@, and @intersectionShader@ /must/ be
---     'Vulkan.Core10.APIConstants.SHADER_UNUSED_NV'
---
--- -   #VUID-VkRayTracingShaderGroupCreateInfoNV-type-02415# If @type@ is
---     'RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV' then
---     @intersectionShader@ /must/ be a valid index into
---     'RayTracingPipelineCreateInfoNV'::@pStages@ referring to a shader of
---     'SHADER_STAGE_INTERSECTION_BIT_NV'
---
--- -   #VUID-VkRayTracingShaderGroupCreateInfoNV-type-02416# If @type@ is
---     'RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV' then
---     @intersectionShader@ /must/ be
---     'Vulkan.Core10.APIConstants.SHADER_UNUSED_NV'
---
--- -   #VUID-VkRayTracingShaderGroupCreateInfoNV-closestHitShader-02417#
---     @closestHitShader@ /must/ be either
---     'Vulkan.Core10.APIConstants.SHADER_UNUSED_NV' or a valid index into
---     'RayTracingPipelineCreateInfoNV'::@pStages@ referring to a shader of
---     'SHADER_STAGE_CLOSEST_HIT_BIT_NV'
---
--- -   #VUID-VkRayTracingShaderGroupCreateInfoNV-anyHitShader-02418#
---     @anyHitShader@ /must/ be either
---     'Vulkan.Core10.APIConstants.SHADER_UNUSED_NV' or a valid index into
---     'RayTracingPipelineCreateInfoNV'::@pStages@ referring to a shader of
---     'SHADER_STAGE_ANY_HIT_BIT_NV'
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkRayTracingShaderGroupCreateInfoNV-sType-sType# @sType@
---     /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV'
---
--- -   #VUID-VkRayTracingShaderGroupCreateInfoNV-pNext-pNext# @pNext@
---     /must/ be @NULL@
---
--- -   #VUID-VkRayTracingShaderGroupCreateInfoNV-type-parameter# @type@
---     /must/ be a valid
---     'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingShaderGroupTypeKHR'
---     value
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>,
--- 'RayTracingPipelineCreateInfoNV',
--- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingShaderGroupTypeKHR',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data RayTracingShaderGroupCreateInfoNV = RayTracingShaderGroupCreateInfoNV
-  { -- | @type@ is the type of hit group specified in this structure.
-    type' :: RayTracingShaderGroupTypeKHR
-  , -- | @generalShader@ is the index of the ray generation, miss, or callable
-    -- shader from 'RayTracingPipelineCreateInfoNV'::@pStages@ in the group if
-    -- the shader group has @type@ of
-    -- 'RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV', and
-    -- 'Vulkan.Core10.APIConstants.SHADER_UNUSED_NV' otherwise.
-    generalShader :: Word32
-  , -- | @closestHitShader@ is the optional index of the closest hit shader from
-    -- 'RayTracingPipelineCreateInfoNV'::@pStages@ in the group if the shader
-    -- group has @type@ of
-    -- 'RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV' or
-    -- 'RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV', and
-    -- 'Vulkan.Core10.APIConstants.SHADER_UNUSED_NV' otherwise.
-    closestHitShader :: Word32
-  , -- | @anyHitShader@ is the optional index of the any-hit shader from
-    -- 'RayTracingPipelineCreateInfoNV'::@pStages@ in the group if the shader
-    -- group has @type@ of
-    -- 'RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV' or
-    -- 'RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV', and
-    -- 'Vulkan.Core10.APIConstants.SHADER_UNUSED_NV' otherwise.
-    anyHitShader :: Word32
-  , -- | @intersectionShader@ is the index of the intersection shader from
-    -- 'RayTracingPipelineCreateInfoNV'::@pStages@ in the group if the shader
-    -- group has @type@ of
-    -- 'RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV', and
-    -- 'Vulkan.Core10.APIConstants.SHADER_UNUSED_NV' otherwise.
-    intersectionShader :: Word32
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (RayTracingShaderGroupCreateInfoNV)
-#endif
-deriving instance Show RayTracingShaderGroupCreateInfoNV
-
-instance ToCStruct RayTracingShaderGroupCreateInfoNV where
-  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p RayTracingShaderGroupCreateInfoNV{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr RayTracingShaderGroupTypeKHR)) (type')
-    poke ((p `plusPtr` 20 :: Ptr Word32)) (generalShader)
-    poke ((p `plusPtr` 24 :: Ptr Word32)) (closestHitShader)
-    poke ((p `plusPtr` 28 :: Ptr Word32)) (anyHitShader)
-    poke ((p `plusPtr` 32 :: Ptr Word32)) (intersectionShader)
-    f
-  cStructSize = 40
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr RayTracingShaderGroupTypeKHR)) (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 RayTracingShaderGroupCreateInfoNV where
-  peekCStruct p = do
-    type' <- peek @RayTracingShaderGroupTypeKHR ((p `plusPtr` 16 :: Ptr RayTracingShaderGroupTypeKHR))
-    generalShader <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
-    closestHitShader <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))
-    anyHitShader <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))
-    intersectionShader <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))
-    pure $ RayTracingShaderGroupCreateInfoNV
-             type'
-             generalShader
-             closestHitShader
-             anyHitShader
-             intersectionShader
-
-instance Storable RayTracingShaderGroupCreateInfoNV where
-  sizeOf ~_ = 40
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero RayTracingShaderGroupCreateInfoNV where
-  zero = RayTracingShaderGroupCreateInfoNV
-           zero
-           zero
-           zero
-           zero
-           zero
-
-
--- | VkRayTracingPipelineCreateInfoNV - Structure specifying parameters of a
--- newly created ray tracing pipeline
---
--- = Description
---
--- The parameters @basePipelineHandle@ and @basePipelineIndex@ are
--- described in more detail in
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-pipeline-derivatives Pipeline Derivatives>.
---
--- If the @pNext@ chain includes a
--- 'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlags2CreateInfoKHR'
--- structure,
--- 'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlags2CreateInfoKHR'::@flags@
--- from that structure is used instead of @flags@ from this structure.
---
--- == Valid Usage
---
--- -   #VUID-VkRayTracingPipelineCreateInfoNV-None-09497# If the @pNext@
---     chain does not include a
---     'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlags2CreateInfoKHR'
---     structure, @flags@ /must/ be a valid combination of
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits'
---     values
---
--- -   #VUID-VkRayTracingPipelineCreateInfoNV-flags-07984# If @flags@
---     contains the
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'
---     flag, and @basePipelineIndex@ is -1, @basePipelineHandle@ /must/ be
---     a valid ray tracing 'Vulkan.Core10.Handles.Pipeline' handle
---
--- -   #VUID-VkRayTracingPipelineCreateInfoNV-flags-07985# If @flags@
---     contains the
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'
---     flag, and @basePipelineHandle@ is
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', @basePipelineIndex@ /must/
---     be a valid index into the calling command’s @pCreateInfos@ parameter
---
--- -   #VUID-VkRayTracingPipelineCreateInfoNV-flags-07986# If @flags@
---     contains the
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'
---     flag, @basePipelineIndex@ /must/ be -1 or @basePipelineHandle@
---     /must/ be 'Vulkan.Core10.APIConstants.NULL_HANDLE'
---
--- -   #VUID-VkRayTracingPipelineCreateInfoNV-layout-07987# If a push
---     constant block is declared in a shader, a push constant range in
---     @layout@ /must/ match the shader stage
---
--- -   #VUID-VkRayTracingPipelineCreateInfoNV-layout-10069# If a push
---     constant block is declared in a shader, the block must be contained
---     inside the push constant range in @layout@ that matches the stage
---
--- -   #VUID-VkRayTracingPipelineCreateInfoNV-layout-07988# If a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-resources resource variables>
---     is declared in a shader, a descriptor slot in @layout@ /must/ match
---     the shader stage
---
--- -   #VUID-VkRayTracingPipelineCreateInfoNV-layout-07990# If a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-resources resource variables>
---     is declared in a shader, and the descriptor type is not
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_MUTABLE_EXT', a
---     descriptor slot in @layout@ /must/ match the descriptor type
---
--- -   #VUID-VkRayTracingPipelineCreateInfoNV-layout-07991# If a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-resources resource variables>
---     is declared in a shader as an array, a descriptor slot in @layout@
---     /must/ match the descriptor count
---
--- -   #VUID-VkRayTracingPipelineCreateInfoNV-pStages-03426# The shader
---     code for the entry points identified by @pStages@, and the rest of
---     the state identified by this structure /must/ adhere to the pipeline
---     linking rules described in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces Shader Interfaces>
---     chapter
---
--- -   #VUID-VkRayTracingPipelineCreateInfoNV-layout-03428# The number of
---     resources in @layout@ accessible to each shader stage that is used
---     by the pipeline /must/ be less than or equal to
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxPerStageResources@
---
--- -   #VUID-VkRayTracingPipelineCreateInfoNV-flags-02904# @flags@ /must/
---     not include
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV'
---
--- -   #VUID-VkRayTracingPipelineCreateInfoNV-pipelineCreationCacheControl-02905#
---     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'
---     or
---     '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
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_RAYGEN_BIT_KHR'
---
--- -   #VUID-VkRayTracingPipelineCreateInfoNV-flags-03456# @flags@ /must/
---     not include
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR'
---
--- -   #VUID-VkRayTracingPipelineCreateInfoNV-maxRecursionDepth-03457#
---     @maxRecursionDepth@ /must/ be less than or equal to
---     'PhysicalDeviceRayTracingPropertiesNV'::@maxRecursionDepth@
---
--- -   #VUID-VkRayTracingPipelineCreateInfoNV-flags-03458# @flags@ /must/
---     not include
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR'
---
--- -   #VUID-VkRayTracingPipelineCreateInfoNV-flags-03459# @flags@ /must/
---     not include
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR'
---
--- -   #VUID-VkRayTracingPipelineCreateInfoNV-flags-03460# @flags@ /must/
---     not include
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR'
---
--- -   #VUID-VkRayTracingPipelineCreateInfoNV-flags-03461# @flags@ /must/
---     not include
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR'
---
--- -   #VUID-VkRayTracingPipelineCreateInfoNV-flags-03462# @flags@ /must/
---     not include
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR'
---
--- -   #VUID-VkRayTracingPipelineCreateInfoNV-flags-03463# @flags@ /must/
---     not include
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR'
---
--- -   #VUID-VkRayTracingPipelineCreateInfoNV-flags-03588# @flags@ /must/
---     not include
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR'
---
--- -   #VUID-VkRayTracingPipelineCreateInfoNV-flags-04948# @flags@ /must/
---     not include
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV'
---
--- -   #VUID-VkRayTracingPipelineCreateInfoNV-flags-02957# @flags@ /must/
---     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'
---     at the same time
---
--- -   #VUID-VkRayTracingPipelineCreateInfoNV-pipelineStageCreationFeedbackCount-06651#
---     If
---     'Vulkan.Core13.Promoted_From_VK_EXT_pipeline_creation_feedback.PipelineCreationFeedbackCreateInfo'::@pipelineStageCreationFeedbackCount@
---     is not @0@, it /must/ be equal to @stageCount@
---
--- -   #VUID-VkRayTracingPipelineCreateInfoNV-stage-06898# The @stage@
---     value in all @pStages@ elements /must/ be one of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_RAYGEN_BIT_KHR',
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_ANY_HIT_BIT_KHR',
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_CLOSEST_HIT_BIT_KHR',
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MISS_BIT_KHR',
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_INTERSECTION_BIT_KHR',
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_CALLABLE_BIT_KHR'
---
--- -   #VUID-VkRayTracingPipelineCreateInfoNV-flags-07402# @flags@ /must/
---     not include
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT'
---
--- -   #VUID-VkRayTracingPipelineCreateInfoNV-flags-07998# @flags@ /must/
---     not include
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV'
---
--- -   #VUID-VkRayTracingPipelineCreateInfoNV-flags-11008# @flags@ /must/
---     not include
---     'Vulkan.Extensions.VK_KHR_maintenance5.PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXT'
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkRayTracingPipelineCreateInfoNV-sType-sType# @sType@ /must/
---     be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV'
---
--- -   #VUID-VkRayTracingPipelineCreateInfoNV-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_maintenance5.PipelineCreateFlags2CreateInfoKHR'
---     or
---     '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
---
--- -   #VUID-VkRayTracingPipelineCreateInfoNV-pStages-parameter# @pStages@
---     /must/ be a valid pointer to an array of @stageCount@ valid
---     'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo' structures
---
--- -   #VUID-VkRayTracingPipelineCreateInfoNV-pGroups-parameter# @pGroups@
---     /must/ be a valid pointer to an array of @groupCount@ valid
---     'RayTracingShaderGroupCreateInfoNV' structures
---
--- -   #VUID-VkRayTracingPipelineCreateInfoNV-layout-parameter# @layout@
---     /must/ be a valid 'Vulkan.Core10.Handles.PipelineLayout' handle
---
--- -   #VUID-VkRayTracingPipelineCreateInfoNV-stageCount-arraylength#
---     @stageCount@ /must/ be greater than @0@
---
--- -   #VUID-VkRayTracingPipelineCreateInfoNV-groupCount-arraylength#
---     @groupCount@ /must/ be greater than @0@
---
--- -   #VUID-VkRayTracingPipelineCreateInfoNV-commonparent# Both of
---     @basePipelineHandle@, and @layout@ 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_NV_ray_tracing VK_NV_ray_tracing>,
--- 'Vulkan.Core10.Handles.Pipeline',
--- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlags',
--- 'Vulkan.Core10.Handles.PipelineLayout',
--- 'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo',
--- 'RayTracingShaderGroupCreateInfoNV',
--- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'createRayTracingPipelinesNV'
-data RayTracingPipelineCreateInfoNV (es :: [Type]) = RayTracingPipelineCreateInfoNV
-  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
-    next :: Chain es
-  , -- | @flags@ is a bitmask of
-    -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits'
-    -- specifying how the pipeline will be generated.
-    flags :: PipelineCreateFlags
-  , -- | @pStages@ is a pointer to an array of
-    -- 'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo' structures
-    -- specifying the set of the shader stages to be included in the ray
-    -- tracing pipeline.
-    stages :: Vector (SomeStruct PipelineShaderStageCreateInfo)
-  , -- | @pGroups@ is a pointer to an array of
-    -- 'RayTracingShaderGroupCreateInfoNV' structures describing the set of the
-    -- shader stages to be included in each shader group in the ray tracing
-    -- pipeline.
-    groups :: Vector RayTracingShaderGroupCreateInfoNV
-  , -- | @maxRecursionDepth@ is the
-    -- <https://registry.khronos.org/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
-    -- pipeline and descriptor sets used with the pipeline.
-    layout :: PipelineLayout
-  , -- | @basePipelineHandle@ is a pipeline to derive from.
-    basePipelineHandle :: Pipeline
-  , -- | @basePipelineIndex@ is an index into the @pCreateInfos@ parameter to use
-    -- as a pipeline to derive from.
-    basePipelineIndex :: Int32
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (RayTracingPipelineCreateInfoNV (es :: [Type]))
-#endif
-deriving instance Show (Chain es) => Show (RayTracingPipelineCreateInfoNV es)
-
-instance Extensible RayTracingPipelineCreateInfoNV where
-  extensibleTypeName = "RayTracingPipelineCreateInfoNV"
-  setNext RayTracingPipelineCreateInfoNV{..} next' = RayTracingPipelineCreateInfoNV{next = next', ..}
-  getNext RayTracingPipelineCreateInfoNV{..} = next
-  extends :: forall e b proxy. Typeable e => proxy e -> (Extends RayTracingPipelineCreateInfoNV e => b) -> Maybe b
-  extends _ f
-    | Just Refl <- eqT @e @PipelineCreationFeedbackCreateInfo = Just f
-    | Just Refl <- eqT @e @PipelineCreateFlags2CreateInfoKHR = Just f
-    | otherwise = Nothing
-
-instance ( Extendss RayTracingPipelineCreateInfoNV es
-         , PokeChain es ) => ToCStruct (RayTracingPipelineCreateInfoNV es) where
-  withCStruct x f = allocaBytes 80 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p RayTracingPipelineCreateInfoNV{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV)
-    pNext'' <- fmap castPtr . ContT $ withChain (next)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
-    lift $ poke ((p `plusPtr` 16 :: Ptr PipelineCreateFlags)) (flags)
-    lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (stages)) :: Word32))
-    pPStages' <- ContT $ allocaBytes @(PipelineShaderStageCreateInfo _) ((Data.Vector.length (stages)) * 48)
-    Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPStages' `plusPtr` (48 * (i)) :: Ptr (PipelineShaderStageCreateInfo _))) (e) . ($ ())) (stages)
-    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr (PipelineShaderStageCreateInfo _)))) (pPStages')
-    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (groups)) :: Word32))
-    pPGroups' <- ContT $ allocaBytes @RayTracingShaderGroupCreateInfoNV ((Data.Vector.length (groups)) * 40)
-    lift $ Data.Vector.imapM_ (\i e -> poke (pPGroups' `plusPtr` (40 * (i)) :: Ptr RayTracingShaderGroupCreateInfoNV) (e)) (groups)
-    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr RayTracingShaderGroupCreateInfoNV))) (pPGroups')
-    lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) (maxRecursionDepth)
-    lift $ poke ((p `plusPtr` 56 :: Ptr PipelineLayout)) (layout)
-    lift $ poke ((p `plusPtr` 64 :: Ptr Pipeline)) (basePipelineHandle)
-    lift $ poke ((p `plusPtr` 72 :: Ptr Int32)) (basePipelineIndex)
-    lift $ f
-  cStructSize = 80
-  cStructAlignment = 8
-  pokeZeroCStruct p f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV)
-    pNext' <- fmap castPtr . ContT $ withZeroChain @es
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
-    lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) (zero)
-    lift $ poke ((p `plusPtr` 56 :: Ptr PipelineLayout)) (zero)
-    lift $ poke ((p `plusPtr` 72 :: Ptr Int32)) (zero)
-    lift $ f
-
-instance ( Extendss RayTracingPipelineCreateInfoNV es
-         , PeekChain es ) => FromCStruct (RayTracingPipelineCreateInfoNV es) where
-  peekCStruct p = do
-    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
-    next <- peekChain (castPtr pNext)
-    flags <- peek @PipelineCreateFlags ((p `plusPtr` 16 :: Ptr PipelineCreateFlags))
-    stageCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
-    pStages <- peek @(Ptr (PipelineShaderStageCreateInfo _)) ((p `plusPtr` 24 :: Ptr (Ptr (PipelineShaderStageCreateInfo _))))
-    pStages' <- generateM (fromIntegral stageCount) (\i -> peekSomeCStruct (forgetExtensions ((pStages `advancePtrBytes` (48 * (i)) :: Ptr (PipelineShaderStageCreateInfo _)))))
-    groupCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))
-    pGroups <- peek @(Ptr RayTracingShaderGroupCreateInfoNV) ((p `plusPtr` 40 :: Ptr (Ptr RayTracingShaderGroupCreateInfoNV)))
-    pGroups' <- generateM (fromIntegral groupCount) (\i -> peekCStruct @RayTracingShaderGroupCreateInfoNV ((pGroups `advancePtrBytes` (40 * (i)) :: Ptr RayTracingShaderGroupCreateInfoNV)))
-    maxRecursionDepth <- peek @Word32 ((p `plusPtr` 48 :: Ptr Word32))
-    layout <- peek @PipelineLayout ((p `plusPtr` 56 :: Ptr PipelineLayout))
-    basePipelineHandle <- peek @Pipeline ((p `plusPtr` 64 :: Ptr Pipeline))
-    basePipelineIndex <- peek @Int32 ((p `plusPtr` 72 :: Ptr Int32))
-    pure $ RayTracingPipelineCreateInfoNV
-             next
-             flags
-             pStages'
-             pGroups'
-             maxRecursionDepth
-             layout
-             basePipelineHandle
-             basePipelineIndex
-
-instance es ~ '[] => Zero (RayTracingPipelineCreateInfoNV es) where
-  zero = RayTracingPipelineCreateInfoNV
-           ()
-           zero
-           mempty
-           mempty
-           zero
-           zero
-           zero
-           zero
-
-
--- | VkGeometryTrianglesNV - Structure specifying a triangle geometry in a
--- bottom-level acceleration structure
---
--- = Description
---
--- If @indexType@ is 'INDEX_TYPE_NONE_NV', then this structure describes a
--- set of triangles determined by @vertexCount@. Otherwise, this structure
--- describes a set of indexed triangles determined by @indexCount@.
---
--- == Valid Usage
---
--- -   #VUID-VkGeometryTrianglesNV-vertexOffset-02428# @vertexOffset@
---     /must/ be less than the size of @vertexData@
---
--- -   #VUID-VkGeometryTrianglesNV-vertexOffset-02429# @vertexOffset@
---     /must/ be a multiple of the component size of @vertexFormat@
---
--- -   #VUID-VkGeometryTrianglesNV-vertexFormat-02430# @vertexFormat@
---     /must/ be one of
---     'Vulkan.Core10.Enums.Format.FORMAT_R32G32B32_SFLOAT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R32G32_SFLOAT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R16G16B16_SFLOAT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R16G16_SFLOAT',
---     'Vulkan.Core10.Enums.Format.FORMAT_R16G16_SNORM', or
---     'Vulkan.Core10.Enums.Format.FORMAT_R16G16B16_SNORM'
---
--- -   #VUID-VkGeometryTrianglesNV-vertexStride-03818# @vertexStride@
---     /must/ be less than or equal to 232-1
---
--- -   #VUID-VkGeometryTrianglesNV-indexOffset-02431# @indexOffset@ /must/
---     be less than the size of @indexData@
---
--- -   #VUID-VkGeometryTrianglesNV-indexOffset-02432# @indexOffset@ /must/
---     be a multiple of the element size of @indexType@
---
--- -   #VUID-VkGeometryTrianglesNV-indexType-02433# @indexType@ /must/ be
---     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT16',
---     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT32', or
---     'INDEX_TYPE_NONE_NV'
---
--- -   #VUID-VkGeometryTrianglesNV-indexData-02434# @indexData@ /must/ be
---     'Vulkan.Core10.APIConstants.NULL_HANDLE' if @indexType@ is
---     'INDEX_TYPE_NONE_NV'
---
--- -   #VUID-VkGeometryTrianglesNV-indexData-02435# @indexData@ /must/ be a
---     valid 'Vulkan.Core10.Handles.Buffer' handle if @indexType@ is not
---     'INDEX_TYPE_NONE_NV'
---
--- -   #VUID-VkGeometryTrianglesNV-indexCount-02436# @indexCount@ /must/ be
---     @0@ if @indexType@ is 'INDEX_TYPE_NONE_NV'
---
--- -   #VUID-VkGeometryTrianglesNV-transformOffset-02437# @transformOffset@
---     /must/ be less than the size of @transformData@
---
--- -   #VUID-VkGeometryTrianglesNV-transformOffset-02438# @transformOffset@
---     /must/ be a multiple of @16@
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkGeometryTrianglesNV-sType-sType# @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV'
---
--- -   #VUID-VkGeometryTrianglesNV-pNext-pNext# @pNext@ /must/ be @NULL@
---
--- -   #VUID-VkGeometryTrianglesNV-vertexData-parameter# If @vertexData@ is
---     not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @vertexData@ /must/ be
---     a valid 'Vulkan.Core10.Handles.Buffer' handle
---
--- -   #VUID-VkGeometryTrianglesNV-vertexFormat-parameter# @vertexFormat@
---     /must/ be a valid 'Vulkan.Core10.Enums.Format.Format' value
---
--- -   #VUID-VkGeometryTrianglesNV-indexData-parameter# If @indexData@ is
---     not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @indexData@ /must/ be
---     a valid 'Vulkan.Core10.Handles.Buffer' handle
---
--- -   #VUID-VkGeometryTrianglesNV-indexType-parameter# @indexType@ /must/
---     be a valid 'Vulkan.Core10.Enums.IndexType.IndexType' value
---
--- -   #VUID-VkGeometryTrianglesNV-transformData-parameter# If
---     @transformData@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
---     @transformData@ /must/ be a valid 'Vulkan.Core10.Handles.Buffer'
---     handle
---
--- -   #VUID-VkGeometryTrianglesNV-commonparent# Each of @indexData@,
---     @transformData@, and @vertexData@ 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_NV_ray_tracing VK_NV_ray_tracing>,
--- 'Vulkan.Core10.Handles.Buffer',
--- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
--- 'Vulkan.Core10.Enums.Format.Format', 'GeometryDataNV',
--- 'Vulkan.Core10.Enums.IndexType.IndexType',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data GeometryTrianglesNV = GeometryTrianglesNV
-  { -- | @vertexData@ is the buffer containing vertex data for this geometry.
-    vertexData :: Buffer
-  , -- | @vertexOffset@ is the offset in bytes within @vertexData@ containing
-    -- vertex data for this geometry.
-    vertexOffset :: DeviceSize
-  , -- | @vertexCount@ is the number of valid vertices.
-    vertexCount :: Word32
-  , -- | @vertexStride@ is the stride in bytes between each vertex.
-    vertexStride :: DeviceSize
-  , -- | @vertexFormat@ is a 'Vulkan.Core10.Enums.Format.Format' describing the
-    -- format of each vertex element.
-    vertexFormat :: Format
-  , -- | @indexData@ is the buffer containing index data for this geometry.
-    indexData :: Buffer
-  , -- | @indexOffset@ is the offset in bytes within @indexData@ containing index
-    -- data for this geometry.
-    indexOffset :: DeviceSize
-  , -- | @indexCount@ is the number of indices to include in this geometry.
-    indexCount :: Word32
-  , -- | @indexType@ is a 'Vulkan.Core10.Enums.IndexType.IndexType' describing
-    -- the format of each index.
-    indexType :: IndexType
-  , -- | @transformData@ is an optional buffer containing an 'TransformMatrixNV'
-    -- structure defining a transformation to be applied to this geometry.
-    transformData :: Buffer
-  , -- | @transformOffset@ is the offset in bytes in @transformData@ of the
-    -- transform information described above.
-    transformOffset :: DeviceSize
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (GeometryTrianglesNV)
-#endif
-deriving instance Show GeometryTrianglesNV
-
-instance ToCStruct GeometryTrianglesNV where
-  withCStruct x f = allocaBytes 96 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p GeometryTrianglesNV{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Buffer)) (vertexData)
-    poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (vertexOffset)
-    poke ((p `plusPtr` 32 :: Ptr Word32)) (vertexCount)
-    poke ((p `plusPtr` 40 :: Ptr DeviceSize)) (vertexStride)
-    poke ((p `plusPtr` 48 :: Ptr Format)) (vertexFormat)
-    poke ((p `plusPtr` 56 :: Ptr Buffer)) (indexData)
-    poke ((p `plusPtr` 64 :: Ptr DeviceSize)) (indexOffset)
-    poke ((p `plusPtr` 72 :: Ptr Word32)) (indexCount)
-    poke ((p `plusPtr` 76 :: Ptr IndexType)) (indexType)
-    poke ((p `plusPtr` 80 :: Ptr Buffer)) (transformData)
-    poke ((p `plusPtr` 88 :: Ptr DeviceSize)) (transformOffset)
-    f
-  cStructSize = 96
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (zero)
-    poke ((p `plusPtr` 32 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 40 :: Ptr DeviceSize)) (zero)
-    poke ((p `plusPtr` 48 :: Ptr Format)) (zero)
-    poke ((p `plusPtr` 64 :: Ptr DeviceSize)) (zero)
-    poke ((p `plusPtr` 72 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 76 :: Ptr IndexType)) (zero)
-    poke ((p `plusPtr` 88 :: Ptr DeviceSize)) (zero)
-    f
-
-instance FromCStruct GeometryTrianglesNV where
-  peekCStruct p = do
-    vertexData <- peek @Buffer ((p `plusPtr` 16 :: Ptr Buffer))
-    vertexOffset <- peek @DeviceSize ((p `plusPtr` 24 :: Ptr DeviceSize))
-    vertexCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))
-    vertexStride <- peek @DeviceSize ((p `plusPtr` 40 :: Ptr DeviceSize))
-    vertexFormat <- peek @Format ((p `plusPtr` 48 :: Ptr Format))
-    indexData <- peek @Buffer ((p `plusPtr` 56 :: Ptr Buffer))
-    indexOffset <- peek @DeviceSize ((p `plusPtr` 64 :: Ptr DeviceSize))
-    indexCount <- peek @Word32 ((p `plusPtr` 72 :: Ptr Word32))
-    indexType <- peek @IndexType ((p `plusPtr` 76 :: Ptr IndexType))
-    transformData <- peek @Buffer ((p `plusPtr` 80 :: Ptr Buffer))
-    transformOffset <- peek @DeviceSize ((p `plusPtr` 88 :: Ptr DeviceSize))
-    pure $ GeometryTrianglesNV
-             vertexData
-             vertexOffset
-             vertexCount
-             vertexStride
-             vertexFormat
-             indexData
-             indexOffset
-             indexCount
-             indexType
-             transformData
-             transformOffset
-
-instance Storable GeometryTrianglesNV where
-  sizeOf ~_ = 96
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero GeometryTrianglesNV where
-  zero = GeometryTrianglesNV
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-
-
--- | VkGeometryAABBNV - Structure specifying axis-aligned bounding box
--- geometry in a bottom-level acceleration structure
---
--- = Description
---
--- The AABB data in memory is six 32-bit floats consisting of the minimum
--- x, y, and z values followed by the maximum x, y, and z values.
---
--- == Valid Usage
---
--- -   #VUID-VkGeometryAABBNV-offset-02439# @offset@ /must/ be less than
---     the size of @aabbData@
---
--- -   #VUID-VkGeometryAABBNV-offset-02440# @offset@ /must/ be a multiple
---     of @8@
---
--- -   #VUID-VkGeometryAABBNV-stride-02441# @stride@ /must/ be a multiple
---     of @8@
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkGeometryAABBNV-sType-sType# @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GEOMETRY_AABB_NV'
---
--- -   #VUID-VkGeometryAABBNV-pNext-pNext# @pNext@ /must/ be @NULL@
---
--- -   #VUID-VkGeometryAABBNV-aabbData-parameter# If @aabbData@ is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', @aabbData@ /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_NV_ray_tracing VK_NV_ray_tracing>,
--- 'Vulkan.Core10.Handles.Buffer',
--- 'Vulkan.Core10.FundamentalTypes.DeviceSize', 'GeometryDataNV',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data GeometryAABBNV = GeometryAABBNV
-  { -- | @aabbData@ is the buffer containing axis-aligned bounding box data.
-    aabbData :: Buffer
-  , -- | @numAABBs@ is the number of AABBs in this geometry.
-    numAABBs :: Word32
-  , -- | @stride@ is the stride in bytes between AABBs in @aabbData@.
-    stride :: Word32
-  , -- | @offset@ is the offset in bytes of the first AABB in @aabbData@.
-    offset :: DeviceSize
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (GeometryAABBNV)
-#endif
-deriving instance Show GeometryAABBNV
-
-instance ToCStruct GeometryAABBNV where
-  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p GeometryAABBNV{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GEOMETRY_AABB_NV)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Buffer)) (aabbData)
-    poke ((p `plusPtr` 24 :: Ptr Word32)) (numAABBs)
-    poke ((p `plusPtr` 28 :: Ptr Word32)) (stride)
-    poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (offset)
-    f
-  cStructSize = 40
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GEOMETRY_AABB_NV)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 28 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (zero)
-    f
-
-instance FromCStruct GeometryAABBNV where
-  peekCStruct p = do
-    aabbData <- peek @Buffer ((p `plusPtr` 16 :: Ptr Buffer))
-    numAABBs <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))
-    stride <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))
-    offset <- peek @DeviceSize ((p `plusPtr` 32 :: Ptr DeviceSize))
-    pure $ GeometryAABBNV
-             aabbData numAABBs stride offset
-
-instance Storable GeometryAABBNV where
-  sizeOf ~_ = 40
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero GeometryAABBNV where
-  zero = GeometryAABBNV
-           zero
-           zero
-           zero
-           zero
-
-
--- | VkGeometryDataNV - Structure specifying geometry in a bottom-level
--- acceleration structure
---
--- == Valid Usage (Implicit)
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>,
--- 'GeometryAABBNV', 'GeometryNV', 'GeometryTrianglesNV'
-data GeometryDataNV = GeometryDataNV
-  { -- | @triangles@ contains triangle data if 'GeometryNV'::@geometryType@ is
-    -- 'GEOMETRY_TYPE_TRIANGLES_NV'.
-    --
-    -- #VUID-VkGeometryDataNV-triangles-parameter# @triangles@ /must/ be a
-    -- valid 'GeometryTrianglesNV' structure
-    triangles :: GeometryTrianglesNV
-  , -- | @aabbs@ contains axis-aligned bounding box data if
-    -- 'GeometryNV'::@geometryType@ is 'GEOMETRY_TYPE_AABBS_NV'.
-    --
-    -- #VUID-VkGeometryDataNV-aabbs-parameter# @aabbs@ /must/ be a valid
-    -- 'GeometryAABBNV' structure
-    aabbs :: GeometryAABBNV
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (GeometryDataNV)
-#endif
-deriving instance Show GeometryDataNV
-
-instance ToCStruct GeometryDataNV where
-  withCStruct x f = allocaBytes 136 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p GeometryDataNV{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr GeometryTrianglesNV)) (triangles)
-    poke ((p `plusPtr` 96 :: Ptr GeometryAABBNV)) (aabbs)
-    f
-  cStructSize = 136
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr GeometryTrianglesNV)) (zero)
-    poke ((p `plusPtr` 96 :: Ptr GeometryAABBNV)) (zero)
-    f
-
-instance FromCStruct GeometryDataNV where
-  peekCStruct p = do
-    triangles <- peekCStruct @GeometryTrianglesNV ((p `plusPtr` 0 :: Ptr GeometryTrianglesNV))
-    aabbs <- peekCStruct @GeometryAABBNV ((p `plusPtr` 96 :: Ptr GeometryAABBNV))
-    pure $ GeometryDataNV
-             triangles aabbs
-
-instance Storable GeometryDataNV where
-  sizeOf ~_ = 136
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero GeometryDataNV where
-  zero = GeometryDataNV
-           zero
-           zero
-
-
--- | VkGeometryNV - Structure specifying a geometry in a bottom-level
--- acceleration structure
---
--- == Valid Usage (Implicit)
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>,
--- 'AccelerationStructureInfoNV', 'GeometryDataNV',
--- 'Vulkan.Extensions.VK_KHR_acceleration_structure.GeometryFlagsKHR',
--- 'Vulkan.Extensions.VK_KHR_acceleration_structure.GeometryTypeKHR',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data GeometryNV = GeometryNV
-  { -- | @geometryType@ specifies the
-    -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.GeometryTypeKHR' which
-    -- this geometry refers to.
-    --
-    -- #VUID-VkGeometryNV-geometryType-03503# @geometryType@ /must/ be
-    -- 'GEOMETRY_TYPE_TRIANGLES_NV' or 'GEOMETRY_TYPE_AABBS_NV'
-    --
-    -- #VUID-VkGeometryNV-geometryType-parameter# @geometryType@ /must/ be a
-    -- valid 'Vulkan.Extensions.VK_KHR_acceleration_structure.GeometryTypeKHR'
-    -- value
-    geometryType :: GeometryTypeKHR
-  , -- | @geometry@ contains the geometry data as described in 'GeometryDataNV'.
-    --
-    -- #VUID-VkGeometryNV-geometry-parameter# @geometry@ /must/ be a valid
-    -- 'GeometryDataNV' structure
-    geometry :: GeometryDataNV
-  , -- | @flags@ has
-    -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.GeometryFlagBitsKHR'
-    -- describing options for this geometry.
-    --
-    -- #VUID-VkGeometryNV-flags-parameter# @flags@ /must/ be a valid
-    -- combination of
-    -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.GeometryFlagBitsKHR'
-    -- values
-    flags :: GeometryFlagsKHR
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (GeometryNV)
-#endif
-deriving instance Show GeometryNV
-
-instance ToCStruct GeometryNV where
-  withCStruct x f = allocaBytes 168 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p GeometryNV{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GEOMETRY_NV)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr GeometryTypeKHR)) (geometryType)
-    poke ((p `plusPtr` 24 :: Ptr GeometryDataNV)) (geometry)
-    poke ((p `plusPtr` 160 :: Ptr GeometryFlagsKHR)) (flags)
-    f
-  cStructSize = 168
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GEOMETRY_NV)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr GeometryTypeKHR)) (zero)
-    poke ((p `plusPtr` 24 :: Ptr GeometryDataNV)) (zero)
-    f
-
-instance FromCStruct GeometryNV where
-  peekCStruct p = do
-    geometryType <- peek @GeometryTypeKHR ((p `plusPtr` 16 :: Ptr GeometryTypeKHR))
-    geometry <- peekCStruct @GeometryDataNV ((p `plusPtr` 24 :: Ptr GeometryDataNV))
-    flags <- peek @GeometryFlagsKHR ((p `plusPtr` 160 :: Ptr GeometryFlagsKHR))
-    pure $ GeometryNV
-             geometryType geometry flags
-
-instance Storable GeometryNV where
-  sizeOf ~_ = 168
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero GeometryNV where
-  zero = GeometryNV
-           zero
-           zero
-           zero
-
-
--- | VkAccelerationStructureInfoNV - Structure specifying the parameters of
--- acceleration structure object
---
--- = Description
---
--- 'AccelerationStructureInfoNV' contains information that is used both for
--- acceleration structure creation with 'createAccelerationStructureNV' and
--- in combination with the actual geometric data to build the acceleration
--- structure with 'cmdBuildAccelerationStructureNV'.
---
--- == Valid Usage
---
--- -   #VUID-VkAccelerationStructureInfoNV-geometryCount-02422#
---     @geometryCount@ /must/ be less than or equal to
---     'PhysicalDeviceRayTracingPropertiesNV'::@maxGeometryCount@
---
--- -   #VUID-VkAccelerationStructureInfoNV-instanceCount-02423#
---     @instanceCount@ /must/ be less than or equal to
---     'PhysicalDeviceRayTracingPropertiesNV'::@maxInstanceCount@
---
--- -   #VUID-VkAccelerationStructureInfoNV-maxTriangleCount-02424# The
---     total number of triangles in all geometries /must/ be less than or
---     equal to 'PhysicalDeviceRayTracingPropertiesNV'::@maxTriangleCount@
---
--- -   #VUID-VkAccelerationStructureInfoNV-type-02425# If @type@ is
---     'ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV' then @geometryCount@
---     /must/ be @0@
---
--- -   #VUID-VkAccelerationStructureInfoNV-type-02426# If @type@ is
---     'ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV' then @instanceCount@
---     /must/ be @0@
---
--- -   #VUID-VkAccelerationStructureInfoNV-type-02786# If @type@ is
---     'ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV' then the
---     @geometryType@ member of each geometry in @pGeometries@ /must/ be
---     the same
---
--- -   #VUID-VkAccelerationStructureInfoNV-type-04623# @type@ /must/ not be
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR'
---
--- -   #VUID-VkAccelerationStructureInfoNV-flags-02592# If @flags@ has the
---     'BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV' bit set,
---     then it /must/ not have the
---     'BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV' bit set
---
--- -   #VUID-VkAccelerationStructureInfoNV-scratch-02781# @scratch@ /must/
---     have been created with 'BUFFER_USAGE_RAY_TRACING_BIT_NV' usage flag
---
--- -   #VUID-VkAccelerationStructureInfoNV-instanceData-02782# If
---     @instanceData@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
---     @instanceData@ /must/ have been created with
---     'BUFFER_USAGE_RAY_TRACING_BIT_NV' usage flag
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkAccelerationStructureInfoNV-sType-sType# @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV'
---
--- -   #VUID-VkAccelerationStructureInfoNV-pNext-pNext# @pNext@ /must/ be
---     @NULL@
---
--- -   #VUID-VkAccelerationStructureInfoNV-type-parameter# @type@ /must/ be
---     a valid 'AccelerationStructureTypeNV' value
---
--- -   #VUID-VkAccelerationStructureInfoNV-flags-parameter# @flags@ /must/
---     be a valid combination of 'BuildAccelerationStructureFlagBitsNV'
---     values
---
--- -   #VUID-VkAccelerationStructureInfoNV-pGeometries-parameter# If
---     @geometryCount@ is not @0@, @pGeometries@ /must/ be a valid pointer
---     to an array of @geometryCount@ valid 'GeometryNV' structures
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>,
--- 'AccelerationStructureCreateInfoNV', 'AccelerationStructureTypeNV',
--- 'BuildAccelerationStructureFlagsNV', 'GeometryNV',
--- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'cmdBuildAccelerationStructureNV'
-data AccelerationStructureInfoNV = AccelerationStructureInfoNV
-  { -- | @type@ is a 'AccelerationStructureTypeNV' value specifying the type of
-    -- acceleration structure that will be created.
-    type' :: AccelerationStructureTypeNV
-  , -- | @flags@ is a bitmask of 'BuildAccelerationStructureFlagBitsNV'
-    -- specifying additional parameters of the acceleration structure.
-    flags :: BuildAccelerationStructureFlagsNV
-  , -- | @instanceCount@ specifies the number of instances that will be in the
-    -- new acceleration structure.
-    instanceCount :: Word32
-  , -- | @pGeometries@ is a pointer to an array of @geometryCount@ 'GeometryNV'
-    -- structures containing the scene data being passed into the acceleration
-    -- structure.
-    geometries :: Vector GeometryNV
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (AccelerationStructureInfoNV)
-#endif
-deriving instance Show AccelerationStructureInfoNV
-
-instance ToCStruct AccelerationStructureInfoNV where
-  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p AccelerationStructureInfoNV{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    lift $ poke ((p `plusPtr` 16 :: Ptr AccelerationStructureTypeNV)) (type')
-    lift $ poke ((p `plusPtr` 20 :: Ptr BuildAccelerationStructureFlagsNV)) (flags)
-    lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) (instanceCount)
-    lift $ poke ((p `plusPtr` 28 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (geometries)) :: Word32))
-    pPGeometries' <- ContT $ allocaBytes @GeometryNV ((Data.Vector.length (geometries)) * 168)
-    lift $ Data.Vector.imapM_ (\i e -> poke (pPGeometries' `plusPtr` (168 * (i)) :: Ptr GeometryNV) (e)) (geometries)
-    lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr GeometryNV))) (pPGeometries')
-    lift $ f
-  cStructSize = 40
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr AccelerationStructureTypeNV)) (zero)
-    f
-
-instance FromCStruct AccelerationStructureInfoNV where
-  peekCStruct p = do
-    type' <- peek @AccelerationStructureTypeNV ((p `plusPtr` 16 :: Ptr AccelerationStructureTypeNV))
-    flags <- peek @BuildAccelerationStructureFlagsNV ((p `plusPtr` 20 :: Ptr BuildAccelerationStructureFlagsNV))
-    instanceCount <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))
-    geometryCount <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))
-    pGeometries <- peek @(Ptr GeometryNV) ((p `plusPtr` 32 :: Ptr (Ptr GeometryNV)))
-    pGeometries' <- generateM (fromIntegral geometryCount) (\i -> peekCStruct @GeometryNV ((pGeometries `advancePtrBytes` (168 * (i)) :: Ptr GeometryNV)))
-    pure $ AccelerationStructureInfoNV
-             type' flags instanceCount pGeometries'
-
-instance Zero AccelerationStructureInfoNV where
-  zero = AccelerationStructureInfoNV
-           zero
-           zero
-           zero
-           mempty
-
-
--- | VkAccelerationStructureCreateInfoNV - Structure specifying the
--- parameters of a newly created acceleration structure object
---
--- == Valid Usage
---
--- -   #VUID-VkAccelerationStructureCreateInfoNV-compactedSize-02421# If
---     @compactedSize@ is not @0@ then both @info.geometryCount@ and
---     @info.instanceCount@ /must/ be @0@
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkAccelerationStructureCreateInfoNV-sType-sType# @sType@
---     /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV'
---
--- -   #VUID-VkAccelerationStructureCreateInfoNV-pNext-pNext# @pNext@
---     /must/ be @NULL@ or a pointer to a valid instance of
---     'Vulkan.Extensions.VK_EXT_descriptor_buffer.OpaqueCaptureDescriptorDataCreateInfoEXT'
---
--- -   #VUID-VkAccelerationStructureCreateInfoNV-sType-unique# The @sType@
---     value of each struct in the @pNext@ chain /must/ be unique
---
--- -   #VUID-VkAccelerationStructureCreateInfoNV-info-parameter# @info@
---     /must/ be a valid 'AccelerationStructureInfoNV' structure
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>,
--- 'AccelerationStructureInfoNV',
--- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
--- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'createAccelerationStructureNV'
-data AccelerationStructureCreateInfoNV (es :: [Type]) = AccelerationStructureCreateInfoNV
-  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
-    next :: Chain es
-  , -- | @compactedSize@ is the size from the result of
-    -- 'cmdWriteAccelerationStructuresPropertiesNV' if this acceleration
-    -- structure is going to be the target of a compacting copy.
-    compactedSize :: DeviceSize
-  , -- | @info@ is the 'AccelerationStructureInfoNV' structure specifying further
-    -- parameters of the created acceleration structure.
-    info :: AccelerationStructureInfoNV
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (AccelerationStructureCreateInfoNV (es :: [Type]))
-#endif
-deriving instance Show (Chain es) => Show (AccelerationStructureCreateInfoNV es)
-
-instance Extensible AccelerationStructureCreateInfoNV where
-  extensibleTypeName = "AccelerationStructureCreateInfoNV"
-  setNext AccelerationStructureCreateInfoNV{..} next' = AccelerationStructureCreateInfoNV{next = next', ..}
-  getNext AccelerationStructureCreateInfoNV{..} = next
-  extends :: forall e b proxy. Typeable e => proxy e -> (Extends AccelerationStructureCreateInfoNV e => b) -> Maybe b
-  extends _ f
-    | Just Refl <- eqT @e @OpaqueCaptureDescriptorDataCreateInfoEXT = Just f
-    | otherwise = Nothing
-
-instance ( Extendss AccelerationStructureCreateInfoNV es
-         , PokeChain es ) => ToCStruct (AccelerationStructureCreateInfoNV es) where
-  withCStruct x f = allocaBytes 64 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p AccelerationStructureCreateInfoNV{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV)
-    pNext'' <- fmap castPtr . ContT $ withChain (next)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
-    lift $ poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (compactedSize)
-    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr AccelerationStructureInfoNV)) (info) . ($ ())
-    lift $ f
-  cStructSize = 64
-  cStructAlignment = 8
-  pokeZeroCStruct p f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV)
-    pNext' <- fmap castPtr . ContT $ withZeroChain @es
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
-    lift $ poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (zero)
-    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr AccelerationStructureInfoNV)) (zero) . ($ ())
-    lift $ f
-
-instance ( Extendss AccelerationStructureCreateInfoNV es
-         , PeekChain es ) => FromCStruct (AccelerationStructureCreateInfoNV es) where
-  peekCStruct p = do
-    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
-    next <- peekChain (castPtr pNext)
-    compactedSize <- peek @DeviceSize ((p `plusPtr` 16 :: Ptr DeviceSize))
-    info <- peekCStruct @AccelerationStructureInfoNV ((p `plusPtr` 24 :: Ptr AccelerationStructureInfoNV))
-    pure $ AccelerationStructureCreateInfoNV
-             next compactedSize info
-
-instance es ~ '[] => Zero (AccelerationStructureCreateInfoNV es) where
-  zero = AccelerationStructureCreateInfoNV
-           ()
-           zero
-           zero
-
-
--- | VkBindAccelerationStructureMemoryInfoNV - Structure specifying
--- acceleration structure memory binding
---
--- == Valid Usage
---
--- -   #VUID-VkBindAccelerationStructureMemoryInfoNV-accelerationStructure-03620#
---     @accelerationStructure@ /must/ not already be backed by a memory
---     object
---
--- -   #VUID-VkBindAccelerationStructureMemoryInfoNV-memoryOffset-03621#
---     @memoryOffset@ /must/ be less than the size of @memory@
---
--- -   #VUID-VkBindAccelerationStructureMemoryInfoNV-memory-03622# @memory@
---     /must/ have been allocated using one of the memory types allowed in
---     the @memoryTypeBits@ member of the
---     'Vulkan.Core10.MemoryManagement.MemoryRequirements' structure
---     returned from a call to
---     'getAccelerationStructureMemoryRequirementsNV' with
---     @accelerationStructure@ and @type@ of
---     'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV'
---
--- -   #VUID-VkBindAccelerationStructureMemoryInfoNV-memoryOffset-03623#
---     @memoryOffset@ /must/ be an integer multiple of the @alignment@
---     member of the 'Vulkan.Core10.MemoryManagement.MemoryRequirements'
---     structure returned from a call to
---     'getAccelerationStructureMemoryRequirementsNV' with
---     @accelerationStructure@ and @type@ of
---     'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV'
---
--- -   #VUID-VkBindAccelerationStructureMemoryInfoNV-size-03624# The @size@
---     member of the 'Vulkan.Core10.MemoryManagement.MemoryRequirements'
---     structure returned from a call to
---     'getAccelerationStructureMemoryRequirementsNV' with
---     @accelerationStructure@ and @type@ of
---     'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV' /must/
---     be less than or equal to the size of @memory@ minus @memoryOffset@
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkBindAccelerationStructureMemoryInfoNV-sType-sType# @sType@
---     /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV'
---
--- -   #VUID-VkBindAccelerationStructureMemoryInfoNV-pNext-pNext# @pNext@
---     /must/ be @NULL@
---
--- -   #VUID-VkBindAccelerationStructureMemoryInfoNV-accelerationStructure-parameter#
---     @accelerationStructure@ /must/ be a valid
---     'Vulkan.Extensions.Handles.AccelerationStructureNV' handle
---
--- -   #VUID-VkBindAccelerationStructureMemoryInfoNV-memory-parameter#
---     @memory@ /must/ be a valid 'Vulkan.Core10.Handles.DeviceMemory'
---     handle
---
--- -   #VUID-VkBindAccelerationStructureMemoryInfoNV-pDeviceIndices-parameter#
---     If @deviceIndexCount@ is not @0@, @pDeviceIndices@ /must/ be a valid
---     pointer to an array of @deviceIndexCount@ @uint32_t@ values
---
--- -   #VUID-VkBindAccelerationStructureMemoryInfoNV-commonparent# Both of
---     @accelerationStructure@, and @memory@ /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_NV_ray_tracing VK_NV_ray_tracing>,
--- 'Vulkan.Extensions.Handles.AccelerationStructureNV',
--- 'Vulkan.Core10.Handles.DeviceMemory',
--- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
--- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'bindAccelerationStructureMemoryNV'
-data BindAccelerationStructureMemoryInfoNV = BindAccelerationStructureMemoryInfoNV
-  { -- | @accelerationStructure@ is the acceleration structure to be attached to
-    -- memory.
-    accelerationStructure :: AccelerationStructureNV
-  , -- | @memory@ is a 'Vulkan.Core10.Handles.DeviceMemory' object describing the
-    -- device memory to attach.
-    memory :: DeviceMemory
-  , -- | @memoryOffset@ is the start offset of the region of memory that is to be
-    -- bound to the acceleration structure. The number of bytes returned in the
-    -- 'Vulkan.Core10.MemoryManagement.MemoryRequirements'::@size@ member in
-    -- @memory@, starting from @memoryOffset@ bytes, will be bound to the
-    -- specified acceleration structure.
-    memoryOffset :: DeviceSize
-  , -- | @pDeviceIndices@ is a pointer to an array of device indices.
-    deviceIndices :: Vector Word32
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (BindAccelerationStructureMemoryInfoNV)
-#endif
-deriving instance Show BindAccelerationStructureMemoryInfoNV
-
-instance ToCStruct BindAccelerationStructureMemoryInfoNV where
-  withCStruct x f = allocaBytes 56 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p BindAccelerationStructureMemoryInfoNV{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    lift $ poke ((p `plusPtr` 16 :: Ptr AccelerationStructureNV)) (accelerationStructure)
-    lift $ poke ((p `plusPtr` 24 :: Ptr DeviceMemory)) (memory)
-    lift $ poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (memoryOffset)
-    lift $ poke ((p `plusPtr` 40 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (deviceIndices)) :: Word32))
-    pPDeviceIndices' <- ContT $ allocaBytes @Word32 ((Data.Vector.length (deviceIndices)) * 4)
-    lift $ Data.Vector.imapM_ (\i e -> poke (pPDeviceIndices' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (deviceIndices)
-    lift $ poke ((p `plusPtr` 48 :: Ptr (Ptr Word32))) (pPDeviceIndices')
-    lift $ f
-  cStructSize = 56
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr AccelerationStructureNV)) (zero)
-    poke ((p `plusPtr` 24 :: Ptr DeviceMemory)) (zero)
-    poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (zero)
-    f
-
-instance FromCStruct BindAccelerationStructureMemoryInfoNV where
-  peekCStruct p = do
-    accelerationStructure <- peek @AccelerationStructureNV ((p `plusPtr` 16 :: Ptr AccelerationStructureNV))
-    memory <- peek @DeviceMemory ((p `plusPtr` 24 :: Ptr DeviceMemory))
-    memoryOffset <- peek @DeviceSize ((p `plusPtr` 32 :: Ptr DeviceSize))
-    deviceIndexCount <- peek @Word32 ((p `plusPtr` 40 :: Ptr Word32))
-    pDeviceIndices <- peek @(Ptr Word32) ((p `plusPtr` 48 :: Ptr (Ptr Word32)))
-    pDeviceIndices' <- generateM (fromIntegral deviceIndexCount) (\i -> peek @Word32 ((pDeviceIndices `advancePtrBytes` (4 * (i)) :: Ptr Word32)))
-    pure $ BindAccelerationStructureMemoryInfoNV
-             accelerationStructure memory memoryOffset pDeviceIndices'
-
-instance Zero BindAccelerationStructureMemoryInfoNV where
-  zero = BindAccelerationStructureMemoryInfoNV
-           zero
-           zero
-           zero
-           mempty
-
-
--- | VkWriteDescriptorSetAccelerationStructureNV - Structure specifying
--- acceleration structure descriptor information
---
--- == Valid Usage
---
--- -   #VUID-VkWriteDescriptorSetAccelerationStructureNV-accelerationStructureCount-03747#
---     @accelerationStructureCount@ /must/ be equal to @descriptorCount@ in
---     the extended structure
---
--- -   #VUID-VkWriteDescriptorSetAccelerationStructureNV-pAccelerationStructures-03748#
---     Each acceleration structure in @pAccelerationStructures@ /must/ have
---     been created with
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR'
---
--- -   #VUID-VkWriteDescriptorSetAccelerationStructureNV-pAccelerationStructures-03749#
---     If the
---     <https://registry.khronos.org/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'
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkWriteDescriptorSetAccelerationStructureNV-sType-sType#
---     @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV'
---
--- -   #VUID-VkWriteDescriptorSetAccelerationStructureNV-pAccelerationStructures-parameter#
---     @pAccelerationStructures@ /must/ be a valid pointer to an array of
---     @accelerationStructureCount@ valid or
---     'Vulkan.Core10.APIConstants.NULL_HANDLE'
---     'Vulkan.Extensions.Handles.AccelerationStructureNV' handles
---
--- -   #VUID-VkWriteDescriptorSetAccelerationStructureNV-accelerationStructureCount-arraylength#
---     @accelerationStructureCount@ /must/ be greater than @0@
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>,
--- 'Vulkan.Extensions.Handles.AccelerationStructureNV',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data WriteDescriptorSetAccelerationStructureNV = WriteDescriptorSetAccelerationStructureNV
-  { -- | @pAccelerationStructures@ is a pointer to an array of
-    -- 'Vulkan.Extensions.Handles.AccelerationStructureNV' structures
-    -- specifying the acceleration structures to update.
-    accelerationStructures :: Vector AccelerationStructureNV }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (WriteDescriptorSetAccelerationStructureNV)
-#endif
-deriving instance Show WriteDescriptorSetAccelerationStructureNV
-
-instance ToCStruct WriteDescriptorSetAccelerationStructureNV where
-  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p WriteDescriptorSetAccelerationStructureNV{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (accelerationStructures)) :: Word32))
-    pPAccelerationStructures' <- ContT $ allocaBytes @AccelerationStructureNV ((Data.Vector.length (accelerationStructures)) * 8)
-    lift $ Data.Vector.imapM_ (\i e -> poke (pPAccelerationStructures' `plusPtr` (8 * (i)) :: Ptr AccelerationStructureNV) (e)) (accelerationStructures)
-    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr AccelerationStructureNV))) (pPAccelerationStructures')
-    lift $ f
-  cStructSize = 32
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    f
-
-instance FromCStruct WriteDescriptorSetAccelerationStructureNV where
-  peekCStruct p = do
-    accelerationStructureCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
-    pAccelerationStructures <- peek @(Ptr AccelerationStructureNV) ((p `plusPtr` 24 :: Ptr (Ptr AccelerationStructureNV)))
-    pAccelerationStructures' <- generateM (fromIntegral accelerationStructureCount) (\i -> peek @AccelerationStructureNV ((pAccelerationStructures `advancePtrBytes` (8 * (i)) :: Ptr AccelerationStructureNV)))
-    pure $ WriteDescriptorSetAccelerationStructureNV
-             pAccelerationStructures'
-
-instance Zero WriteDescriptorSetAccelerationStructureNV where
-  zero = WriteDescriptorSetAccelerationStructureNV
-           mempty
-
-
--- | VkAccelerationStructureMemoryRequirementsInfoNV - Structure specifying
--- acceleration to query for memory requirements
---
--- == Valid Usage (Implicit)
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>,
--- 'AccelerationStructureMemoryRequirementsTypeNV',
--- 'Vulkan.Extensions.Handles.AccelerationStructureNV',
--- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'getAccelerationStructureMemoryRequirementsNV'
-data AccelerationStructureMemoryRequirementsInfoNV = AccelerationStructureMemoryRequirementsInfoNV
-  { -- | @type@ selects the type of memory requirement being queried.
-    -- 'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV' returns the
-    -- memory requirements for the object itself.
-    -- 'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV'
-    -- returns the memory requirements for the scratch memory when doing a
-    -- build.
-    -- 'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV'
-    -- returns the memory requirements for the scratch memory when doing an
-    -- update.
-    --
-    -- #VUID-VkAccelerationStructureMemoryRequirementsInfoNV-type-parameter#
-    -- @type@ /must/ be a valid 'AccelerationStructureMemoryRequirementsTypeNV'
-    -- value
-    type' :: AccelerationStructureMemoryRequirementsTypeNV
-  , -- | @accelerationStructure@ is the acceleration structure to be queried for
-    -- memory requirements.
-    --
-    -- #VUID-VkAccelerationStructureMemoryRequirementsInfoNV-accelerationStructure-parameter#
-    -- @accelerationStructure@ /must/ be a valid
-    -- 'Vulkan.Extensions.Handles.AccelerationStructureNV' handle
-    accelerationStructure :: AccelerationStructureNV
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (AccelerationStructureMemoryRequirementsInfoNV)
-#endif
-deriving instance Show AccelerationStructureMemoryRequirementsInfoNV
-
-instance ToCStruct AccelerationStructureMemoryRequirementsInfoNV where
-  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p AccelerationStructureMemoryRequirementsInfoNV{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr AccelerationStructureMemoryRequirementsTypeNV)) (type')
-    poke ((p `plusPtr` 24 :: Ptr AccelerationStructureNV)) (accelerationStructure)
-    f
-  cStructSize = 32
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr AccelerationStructureMemoryRequirementsTypeNV)) (zero)
-    poke ((p `plusPtr` 24 :: Ptr AccelerationStructureNV)) (zero)
-    f
-
-instance FromCStruct AccelerationStructureMemoryRequirementsInfoNV where
-  peekCStruct p = do
-    type' <- peek @AccelerationStructureMemoryRequirementsTypeNV ((p `plusPtr` 16 :: Ptr AccelerationStructureMemoryRequirementsTypeNV))
-    accelerationStructure <- peek @AccelerationStructureNV ((p `plusPtr` 24 :: Ptr AccelerationStructureNV))
-    pure $ AccelerationStructureMemoryRequirementsInfoNV
-             type' accelerationStructure
-
-instance Storable AccelerationStructureMemoryRequirementsInfoNV where
-  sizeOf ~_ = 32
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero AccelerationStructureMemoryRequirementsInfoNV where
-  zero = AccelerationStructureMemoryRequirementsInfoNV
-           zero
-           zero
-
-
--- | VkPhysicalDeviceRayTracingPropertiesNV - Properties of the physical
--- device for ray tracing
---
--- = Description
---
--- Due to the fact that the geometry, instance, and triangle counts are
--- specified at acceleration structure creation as 32-bit values,
--- @maxGeometryCount@, @maxInstanceCount@, and @maxTriangleCount@ /must/
--- not exceed 232-1.
---
--- If the 'PhysicalDeviceRayTracingPropertiesNV' 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.
---
--- Limits specified by this structure /must/ match those specified with the
--- same name in
--- 'Vulkan.Extensions.VK_KHR_acceleration_structure.PhysicalDeviceAccelerationStructurePropertiesKHR'
--- and
--- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.PhysicalDeviceRayTracingPipelinePropertiesKHR'.
---
--- == Valid Usage (Implicit)
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>,
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PhysicalDeviceRayTracingPropertiesNV = PhysicalDeviceRayTracingPropertiesNV
-  { -- | @shaderGroupHandleSize@ is the size in bytes of the shader header.
-    shaderGroupHandleSize :: Word32
-  , -- | #limits-maxRecursionDepth# @maxRecursionDepth@ is the maximum number of
-    -- levels of recursion allowed in a trace command.
-    maxRecursionDepth :: Word32
-  , -- | @maxShaderGroupStride@ is the maximum stride in bytes allowed between
-    -- shader groups in the shader binding table.
-    maxShaderGroupStride :: Word32
-  , -- | @shaderGroupBaseAlignment@ is the /required/ alignment in bytes for the
-    -- base of the shader binding table.
-    shaderGroupBaseAlignment :: Word32
-  , -- | @maxGeometryCount@ is the maximum number of geometries in the bottom
-    -- level acceleration structure.
-    maxGeometryCount :: Word64
-  , -- | @maxInstanceCount@ is the maximum number of instances in the top level
-    -- acceleration structure.
-    maxInstanceCount :: Word64
-  , -- | @maxTriangleCount@ is the maximum number of triangles in all geometries
-    -- in the bottom level acceleration structure.
-    maxTriangleCount :: Word64
-  , -- | @maxDescriptorSetAccelerationStructures@ is the maximum number of
-    -- acceleration structure descriptors that are allowed in a descriptor set.
-    maxDescriptorSetAccelerationStructures :: Word32
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PhysicalDeviceRayTracingPropertiesNV)
-#endif
-deriving instance Show PhysicalDeviceRayTracingPropertiesNV
-
-instance ToCStruct PhysicalDeviceRayTracingPropertiesNV where
-  withCStruct x f = allocaBytes 64 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PhysicalDeviceRayTracingPropertiesNV{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Word32)) (shaderGroupHandleSize)
-    poke ((p `plusPtr` 20 :: Ptr Word32)) (maxRecursionDepth)
-    poke ((p `plusPtr` 24 :: Ptr Word32)) (maxShaderGroupStride)
-    poke ((p `plusPtr` 28 :: Ptr Word32)) (shaderGroupBaseAlignment)
-    poke ((p `plusPtr` 32 :: Ptr Word64)) (maxGeometryCount)
-    poke ((p `plusPtr` 40 :: Ptr Word64)) (maxInstanceCount)
-    poke ((p `plusPtr` 48 :: Ptr Word64)) (maxTriangleCount)
-    poke ((p `plusPtr` 56 :: Ptr Word32)) (maxDescriptorSetAccelerationStructures)
-    f
-  cStructSize = 64
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV)
-    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 Word64)) (zero)
-    poke ((p `plusPtr` 40 :: Ptr Word64)) (zero)
-    poke ((p `plusPtr` 48 :: Ptr Word64)) (zero)
-    poke ((p `plusPtr` 56 :: Ptr Word32)) (zero)
-    f
-
-instance FromCStruct PhysicalDeviceRayTracingPropertiesNV where
-  peekCStruct p = do
-    shaderGroupHandleSize <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
-    maxRecursionDepth <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
-    maxShaderGroupStride <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))
-    shaderGroupBaseAlignment <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))
-    maxGeometryCount <- peek @Word64 ((p `plusPtr` 32 :: Ptr Word64))
-    maxInstanceCount <- peek @Word64 ((p `plusPtr` 40 :: Ptr Word64))
-    maxTriangleCount <- peek @Word64 ((p `plusPtr` 48 :: Ptr Word64))
-    maxDescriptorSetAccelerationStructures <- peek @Word32 ((p `plusPtr` 56 :: Ptr Word32))
-    pure $ PhysicalDeviceRayTracingPropertiesNV
-             shaderGroupHandleSize
-             maxRecursionDepth
-             maxShaderGroupStride
-             shaderGroupBaseAlignment
-             maxGeometryCount
-             maxInstanceCount
-             maxTriangleCount
-             maxDescriptorSetAccelerationStructures
-
-instance Storable PhysicalDeviceRayTracingPropertiesNV where
-  sizeOf ~_ = 64
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero PhysicalDeviceRayTracingPropertiesNV where
-  zero = PhysicalDeviceRayTracingPropertiesNV
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-
-
--- | VkAccelerationStructureMemoryRequirementsTypeNV - Acceleration structure
--- memory requirement type
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>,
--- 'AccelerationStructureMemoryRequirementsInfoNV'
-newtype AccelerationStructureMemoryRequirementsTypeNV = AccelerationStructureMemoryRequirementsTypeNV Int32
-  deriving newtype (Eq, Ord, Storable, Zero)
-
--- | 'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV' requests the
--- memory requirement for the
--- 'Vulkan.Extensions.Handles.AccelerationStructureNV' backing store.
-pattern ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV = AccelerationStructureMemoryRequirementsTypeNV 0
-
--- | 'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV'
--- requests the memory requirement for scratch space during the initial
--- build.
-pattern ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV = AccelerationStructureMemoryRequirementsTypeNV 1
-
--- | 'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV'
--- requests the memory requirement for scratch space during an update.
+-- -   'SHADER_UNUSED_NV'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureTypeKHR':
+--
+--     -   'ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV'
+--
+--     -   'ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV'
+--
+-- -   Extending 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits':
+--
+--     -   'ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV'
+--
+--     -   'ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BufferUsageFlagBits':
+--
+--     -   'BUFFER_USAGE_RAY_TRACING_BIT_NV'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.BuildAccelerationStructureFlagBitsKHR':
+--
+--     -   'BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV'
+--
+--     -   'BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV'
+--
+--     -   'BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV'
+--
+--     -   'BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV'
+--
+--     -   'BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.CopyAccelerationStructureModeKHR':
+--
+--     -   'COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV'
+--
+--     -   'COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV'
+--
+-- -   Extending 'Vulkan.Core10.Enums.DescriptorType.DescriptorType':
+--
+--     -   'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.GeometryFlagBitsKHR':
+--
+--     -   'GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV'
+--
+--     -   'GEOMETRY_OPAQUE_BIT_NV'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.GeometryInstanceFlagBitsKHR':
+--
+--     -   'GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV'
+--
+--     -   'GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV'
+--
+--     -   'GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV'
+--
+--     -   'GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.GeometryTypeKHR':
+--
+--     -   'GEOMETRY_TYPE_AABBS_NV'
+--
+--     -   'GEOMETRY_TYPE_TRIANGLES_NV'
+--
+-- -   Extending 'Vulkan.Core10.Enums.IndexType.IndexType':
+--
+--     -   'INDEX_TYPE_NONE_NV'
+--
+-- -   Extending 'Vulkan.Core10.Enums.ObjectType.ObjectType':
+--
+--     -   'Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_ACCELERATION_STRUCTURE_NV'
+--
+-- -   Extending 'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint':
+--
+--     -   'PIPELINE_BIND_POINT_RAY_TRACING_NV'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits':
+--
+--     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DEFER_COMPILE_BIT_NV'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits':
+--
+--     -   'PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV'
+--
+--     -   'PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV'
+--
+-- -   Extending 'Vulkan.Core10.Enums.QueryType.QueryType':
+--
+--     -   'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingShaderGroupTypeKHR':
+--
+--     -   'RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV'
+--
+--     -   'RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV'
+--
+--     -   'RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits':
+--
+--     -   'SHADER_STAGE_ANY_HIT_BIT_NV'
+--
+--     -   'SHADER_STAGE_CALLABLE_BIT_NV'
+--
+--     -   'SHADER_STAGE_CLOSEST_HIT_BIT_NV'
+--
+--     -   'SHADER_STAGE_INTERSECTION_BIT_NV'
+--
+--     -   'SHADER_STAGE_MISS_BIT_NV'
+--
+--     -   'SHADER_STAGE_RAYGEN_BIT_NV'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GEOMETRY_AABB_NV'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GEOMETRY_NV'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV'
+--
+-- 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
+--     'Vulkan.Extensions.VK_EXT_debug_report.DebugReportObjectTypeEXT':
+--
+--     -   'Vulkan.Extensions.VK_EXT_debug_report.DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT'
+--
+-- == New or Modified Built-In Variables
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-launchid LaunchIdNV>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-launchsize LaunchSizeNV>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-worldrayorigin WorldRayOriginNV>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-worldraydirection WorldRayDirectionNV>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-objectrayorigin ObjectRayOriginNV>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-objectraydirection ObjectRayDirectionNV>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-raytmin RayTminNV>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-raytmax RayTmaxNV>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-instancecustomindex InstanceCustomIndexNV>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-instanceid InstanceId>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-objecttoworld ObjectToWorldNV>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-worldtoobject WorldToObjectNV>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-hitt HitTNV>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-hitkind HitKindNV>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-incomingrayflags IncomingRayFlagsNV>
+--
+-- -   (modified)@PrimitiveId@
+--
+-- == New SPIR-V Capabilities
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-RayTracingNV RayTracingNV>
+--
+-- == Issues
+--
+-- 1) Are there issues?
+--
+-- __RESOLVED__: Yes.
+--
+-- == Sample Code
+--
+-- Example ray generation GLSL shader
+--
+-- > #version 450 core
+-- > #extension GL_NV_ray_tracing : require
+-- > layout(set = 0, binding = 0, rgba8) uniform image2D image;
+-- > layout(set = 0, binding = 1) uniform accelerationStructureNV as;
+-- > layout(location = 0) rayPayloadNV float payload;
+-- >
+-- > void main()
+-- > {
+-- >    vec4 col = vec4(0, 0, 0, 1);
+-- >
+-- >    vec3 origin = vec3(float(gl_LaunchIDNV.x)/float(gl_LaunchSizeNV.x), float(gl_LaunchIDNV.y)/float(gl_LaunchSizeNV.y), 1.0);
+-- >    vec3 dir = vec3(0.0, 0.0, -1.0);
+-- >
+-- >    traceNV(as, 0, 0xff, 0, 1, 0, origin, 0.0, dir, 1000.0, 0);
+-- >
+-- >    col.y = payload;
+-- >
+-- >    imageStore(image, ivec2(gl_LaunchIDNV.xy), col);
+-- > }
+--
+-- == Version History
+--
+-- -   Revision 1, 2018-09-11 (Robert Stepinski, Nuno Subtil, Eric Werness)
+--
+--     -   Internal revisions
+--
+-- -   Revision 2, 2018-10-19 (Eric Werness)
+--
+--     -   rename to VK_NV_ray_tracing, add support for callables.
+--
+--     -   too many updates to list
+--
+-- -   Revision 3, 2018-11-20 (Daniel Koch)
+--
+--     -   update to use InstanceId instead of InstanceIndex as
+--         implemented.
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
+module Vulkan.Extensions.VK_NV_ray_tracing  ( compileDeferredNV
+                                            , createAccelerationStructureNV
+                                            , withAccelerationStructureNV
+                                            , destroyAccelerationStructureNV
+                                            , getAccelerationStructureMemoryRequirementsNV
+                                            , bindAccelerationStructureMemoryNV
+                                            , cmdCopyAccelerationStructureNV
+                                            , cmdWriteAccelerationStructuresPropertiesNV
+                                            , cmdBuildAccelerationStructureNV
+                                            , cmdTraceRaysNV
+                                            , getAccelerationStructureHandleNV
+                                            , createRayTracingPipelinesNV
+                                            , withRayTracingPipelinesNV
+                                            , pattern SHADER_UNUSED_NV
+                                            , pattern SHADER_STAGE_RAYGEN_BIT_NV
+                                            , pattern SHADER_STAGE_ANY_HIT_BIT_NV
+                                            , pattern SHADER_STAGE_CLOSEST_HIT_BIT_NV
+                                            , pattern SHADER_STAGE_MISS_BIT_NV
+                                            , pattern SHADER_STAGE_INTERSECTION_BIT_NV
+                                            , pattern SHADER_STAGE_CALLABLE_BIT_NV
+                                            , pattern PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV
+                                            , pattern PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV
+                                            , pattern BUFFER_USAGE_RAY_TRACING_BIT_NV
+                                            , pattern PIPELINE_BIND_POINT_RAY_TRACING_NV
+                                            , pattern ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV
+                                            , pattern ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV
+                                            , pattern INDEX_TYPE_NONE_NV
+                                            , pattern RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV
+                                            , pattern RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV
+                                            , pattern RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV
+                                            , pattern GEOMETRY_TYPE_TRIANGLES_NV
+                                            , pattern GEOMETRY_TYPE_AABBS_NV
+                                            , pattern ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV
+                                            , pattern ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV
+                                            , pattern GEOMETRY_OPAQUE_BIT_NV
+                                            , pattern GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV
+                                            , pattern GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV
+                                            , pattern GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV
+                                            , pattern GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV
+                                            , pattern GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV
+                                            , pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV
+                                            , pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV
+                                            , pattern BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV
+                                            , pattern BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV
+                                            , pattern BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV
+                                            , pattern COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV
+                                            , pattern COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV
+                                            , getRayTracingShaderGroupHandlesNV
+                                            , RayTracingShaderGroupCreateInfoNV(..)
+                                            , RayTracingPipelineCreateInfoNV(..)
+                                            , GeometryTrianglesNV(..)
+                                            , GeometryAABBNV(..)
+                                            , GeometryDataNV(..)
+                                            , GeometryNV(..)
+                                            , AccelerationStructureInfoNV(..)
+                                            , AccelerationStructureCreateInfoNV(..)
+                                            , BindAccelerationStructureMemoryInfoNV(..)
+                                            , WriteDescriptorSetAccelerationStructureNV(..)
+                                            , AccelerationStructureMemoryRequirementsInfoNV(..)
+                                            , PhysicalDeviceRayTracingPropertiesNV(..)
+                                            , AccelerationStructureMemoryRequirementsTypeNV( ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV
+                                                                                           , ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV
+                                                                                           , ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV
+                                                                                           , ..
+                                                                                           )
+                                            , GeometryFlagsNV
+                                            , GeometryInstanceFlagsNV
+                                            , BuildAccelerationStructureFlagsNV
+                                            , GeometryFlagBitsNV
+                                            , GeometryInstanceFlagBitsNV
+                                            , BuildAccelerationStructureFlagBitsNV
+                                            , CopyAccelerationStructureModeNV
+                                            , AccelerationStructureTypeNV
+                                            , GeometryTypeNV
+                                            , RayTracingShaderGroupTypeNV
+                                            , AabbPositionsNV
+                                            , TransformMatrixNV
+                                            , AccelerationStructureInstanceNV
+                                            , NV_RAY_TRACING_SPEC_VERSION
+                                            , pattern NV_RAY_TRACING_SPEC_VERSION
+                                            , NV_RAY_TRACING_EXTENSION_NAME
+                                            , pattern NV_RAY_TRACING_EXTENSION_NAME
+                                            , AccelerationStructureNV(..)
+                                            , AabbPositionsKHR(..)
+                                            , TransformMatrixKHR(..)
+                                            , AccelerationStructureInstanceKHR(..)
+                                            , getRayTracingShaderGroupHandlesKHR
+                                            , DebugReportObjectTypeEXT(..)
+                                            , GeometryInstanceFlagBitsKHR(..)
+                                            , GeometryInstanceFlagsKHR
+                                            , GeometryFlagBitsKHR(..)
+                                            , GeometryFlagsKHR
+                                            , BuildAccelerationStructureFlagBitsKHR(..)
+                                            , BuildAccelerationStructureFlagsKHR
+                                            , CopyAccelerationStructureModeKHR(..)
+                                            , AccelerationStructureTypeKHR(..)
+                                            , GeometryTypeKHR(..)
+                                            , RayTracingShaderGroupTypeKHR(..)
+                                            , MemoryRequirements2KHR
+                                            , pattern GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR
+                                            , SHADER_UNUSED_KHR
+                                            , pattern SHADER_UNUSED_KHR
+                                            ) 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.Foldable (traverse_)
+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 (showsPrec)
+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 Foreign.C.Types (CSize(..))
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (FromCStruct(..))
+import Vulkan.CStruct (ToCStruct)
+import Vulkan.CStruct (ToCStruct(..))
+import Vulkan.Zero (Zero)
+import Vulkan.Zero (Zero(..))
+import Control.Monad.IO.Class (MonadIO)
+import Data.String (IsString)
+import Data.Type.Equality ((:~:)(Refl))
+import Data.Typeable (Typeable)
+import Foreign.C.Types (CSize)
+import Foreign.C.Types (CSize(CSize))
+import Foreign.Storable (Storable)
+import Foreign.Storable (Storable(peek))
+import Foreign.Storable (Storable(poke))
+import qualified Foreign.Storable (Storable(..))
+import GHC.Generics (Generic)
+import GHC.IO.Exception (IOErrorType(..))
+import GHC.IO.Exception (IOException(..))
+import Data.Int (Int32)
+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 (boolToBool32)
+import Vulkan.Core10.ComputePipeline (destroyPipeline)
+import Vulkan.CStruct.Extends (forgetExtensions)
+import Vulkan.Extensions.VK_KHR_ray_tracing_pipeline (getRayTracingShaderGroupHandlesKHR)
+import Vulkan.CStruct.Extends (peekSomeCStruct)
+import Vulkan.CStruct.Extends (pokeSomeCStruct)
+import Vulkan.NamedType ((:::))
+import Vulkan.Extensions.VK_KHR_acceleration_structure (AabbPositionsKHR)
+import Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureInstanceKHR)
+import Vulkan.Extensions.Handles (AccelerationStructureNV)
+import Vulkan.Extensions.Handles (AccelerationStructureNV(..))
+import Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureTypeKHR)
+import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.Core10.FundamentalTypes (Bool32(..))
+import Vulkan.Core10.Handles (Buffer)
+import Vulkan.Core10.Handles (Buffer(..))
+import Vulkan.Extensions.VK_KHR_acceleration_structure (BuildAccelerationStructureFlagBitsKHR)
+import Vulkan.Extensions.VK_KHR_acceleration_structure (BuildAccelerationStructureFlagsKHR)
+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.Extensions.VK_KHR_acceleration_structure (CopyAccelerationStructureModeKHR)
+import Vulkan.Extensions.VK_KHR_acceleration_structure (CopyAccelerationStructureModeKHR(..))
+import Vulkan.Core10.Handles (Device)
+import Vulkan.Core10.Handles (Device(..))
+import Vulkan.Core10.Handles (Device(Device))
+import Vulkan.Dynamic (DeviceCmds(pVkBindAccelerationStructureMemoryNV))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdBuildAccelerationStructureNV))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdCopyAccelerationStructureNV))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdTraceRaysNV))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdWriteAccelerationStructuresPropertiesNV))
+import Vulkan.Dynamic (DeviceCmds(pVkCompileDeferredNV))
+import Vulkan.Dynamic (DeviceCmds(pVkCreateAccelerationStructureNV))
+import Vulkan.Dynamic (DeviceCmds(pVkCreateRayTracingPipelinesNV))
+import Vulkan.Dynamic (DeviceCmds(pVkDestroyAccelerationStructureNV))
+import Vulkan.Dynamic (DeviceCmds(pVkGetAccelerationStructureHandleNV))
+import Vulkan.Dynamic (DeviceCmds(pVkGetAccelerationStructureMemoryRequirementsNV))
+import Vulkan.Core10.Handles (DeviceMemory)
+import Vulkan.Core10.FundamentalTypes (DeviceSize)
+import Vulkan.Core10.Handles (Device_T)
+import Vulkan.CStruct.Extends (Extends)
+import Vulkan.CStruct.Extends (Extendss)
+import Vulkan.CStruct.Extends (Extensible(..))
+import Vulkan.Core10.Enums.Format (Format)
+import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryFlagBitsKHR)
+import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryFlagsKHR)
+import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryInstanceFlagBitsKHR)
+import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryInstanceFlagsKHR)
+import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryTypeKHR)
+import Vulkan.Core10.Enums.IndexType (IndexType)
+import Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2 (MemoryRequirements2)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_buffer (OpaqueCaptureDescriptorDataCreateInfoEXT)
+import Vulkan.CStruct.Extends (PeekChain)
+import Vulkan.CStruct.Extends (PeekChain(..))
+import Vulkan.Core10.Handles (Pipeline)
+import Vulkan.Core10.Handles (Pipeline(..))
+import Vulkan.Core10.Handles (PipelineCache)
+import Vulkan.Core10.Handles (PipelineCache(..))
+import Vulkan.Core10.Enums.PipelineCreateFlagBits (PipelineCreateFlags)
+import {-# SOURCE #-} Vulkan.Core14.Promoted_From_VK_KHR_maintenance5 (PipelineCreateFlags2CreateInfo)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_pipeline_creation_feedback (PipelineCreationFeedbackCreateInfo)
+import Vulkan.Core10.Handles (PipelineLayout)
+import Vulkan.Core10.ComputePipeline (PipelineShaderStageCreateInfo)
+import Vulkan.CStruct.Extends (PokeChain)
+import Vulkan.CStruct.Extends (PokeChain(..))
+import Vulkan.Core10.Handles (QueryPool)
+import Vulkan.Core10.Handles (QueryPool(..))
+import Vulkan.Core10.Enums.QueryType (QueryType)
+import Vulkan.Core10.Enums.QueryType (QueryType(..))
+import Vulkan.Extensions.VK_KHR_ray_tracing_pipeline (RayTracingShaderGroupTypeKHR)
+import Vulkan.Core10.Enums.Result (Result)
+import Vulkan.Core10.Enums.Result (Result(..))
+import Vulkan.CStruct.Extends (SomeStruct)
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Extensions.VK_KHR_acceleration_structure (TransformMatrixKHR)
+import Vulkan.Exception (VulkanException(..))
+import Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureTypeKHR(ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR))
+import Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureTypeKHR(ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR))
+import Vulkan.Core10.Enums.AccessFlagBits (AccessFlags)
+import Vulkan.Core10.Enums.AccessFlagBits (AccessFlagBits(ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR))
+import Vulkan.Core10.Enums.AccessFlagBits (AccessFlags)
+import Vulkan.Core10.Enums.AccessFlagBits (AccessFlagBits(ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR))
+import Vulkan.Core10.Enums.BufferUsageFlagBits (BufferUsageFlags)
+import Vulkan.Core10.Enums.BufferUsageFlagBits (BufferUsageFlagBits(BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR))
+import Vulkan.Extensions.VK_KHR_acceleration_structure (BuildAccelerationStructureFlagsKHR)
+import Vulkan.Extensions.VK_KHR_acceleration_structure (BuildAccelerationStructureFlagBitsKHR(BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR))
+import Vulkan.Extensions.VK_KHR_acceleration_structure (BuildAccelerationStructureFlagsKHR)
+import Vulkan.Extensions.VK_KHR_acceleration_structure (BuildAccelerationStructureFlagBitsKHR(BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR))
+import Vulkan.Extensions.VK_KHR_acceleration_structure (BuildAccelerationStructureFlagsKHR)
+import Vulkan.Extensions.VK_KHR_acceleration_structure (BuildAccelerationStructureFlagBitsKHR(BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR))
+import Vulkan.Extensions.VK_KHR_acceleration_structure (BuildAccelerationStructureFlagsKHR)
+import Vulkan.Extensions.VK_KHR_acceleration_structure (BuildAccelerationStructureFlagBitsKHR(BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR))
+import Vulkan.Extensions.VK_KHR_acceleration_structure (BuildAccelerationStructureFlagsKHR)
+import Vulkan.Extensions.VK_KHR_acceleration_structure (BuildAccelerationStructureFlagBitsKHR(BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR))
+import Vulkan.Extensions.VK_KHR_acceleration_structure (CopyAccelerationStructureModeKHR(COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR))
+import Vulkan.Extensions.VK_KHR_acceleration_structure (CopyAccelerationStructureModeKHR(COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR))
+import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryInstanceFlagsKHR)
+import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryInstanceFlagBitsKHR(GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR))
+import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryInstanceFlagsKHR)
+import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryInstanceFlagBitsKHR(GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR))
+import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryInstanceFlagsKHR)
+import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryInstanceFlagBitsKHR(GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR))
+import Vulkan.Extensions.VK_KHR_acceleration_structure (pattern GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR)
+import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryFlagsKHR)
+import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryFlagBitsKHR(GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR))
+import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryFlagsKHR)
+import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryFlagBitsKHR(GEOMETRY_OPAQUE_BIT_KHR))
+import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryTypeKHR(GEOMETRY_TYPE_AABBS_KHR))
+import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryTypeKHR(GEOMETRY_TYPE_TRIANGLES_KHR))
+import Vulkan.Core10.Enums.IndexType (IndexType(INDEX_TYPE_NONE_KHR))
+import Vulkan.Core10.Enums.PipelineBindPoint (PipelineBindPoint(PIPELINE_BIND_POINT_RAY_TRACING_KHR))
+import Vulkan.Core10.Enums.PipelineStageFlagBits (PipelineStageFlags)
+import Vulkan.Core10.Enums.PipelineStageFlagBits (PipelineStageFlagBits(PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR))
+import Vulkan.Core10.Enums.PipelineStageFlagBits (PipelineStageFlags)
+import Vulkan.Core10.Enums.PipelineStageFlagBits (PipelineStageFlagBits(PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR))
+import Vulkan.Extensions.VK_KHR_ray_tracing_pipeline (RayTracingShaderGroupTypeKHR(RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR))
+import Vulkan.Extensions.VK_KHR_ray_tracing_pipeline (RayTracingShaderGroupTypeKHR(RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR))
+import Vulkan.Extensions.VK_KHR_ray_tracing_pipeline (RayTracingShaderGroupTypeKHR(RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR))
+import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)
+import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlagBits(SHADER_STAGE_ANY_HIT_BIT_KHR))
+import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)
+import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlagBits(SHADER_STAGE_CALLABLE_BIT_KHR))
+import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)
+import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlagBits(SHADER_STAGE_CLOSEST_HIT_BIT_KHR))
+import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)
+import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlagBits(SHADER_STAGE_INTERSECTION_BIT_KHR))
+import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)
+import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlagBits(SHADER_STAGE_MISS_BIT_KHR))
+import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)
+import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlagBits(SHADER_STAGE_RAYGEN_BIT_KHR))
+import Vulkan.Core10.APIConstants (pattern SHADER_UNUSED_KHR)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_GEOMETRY_AABB_NV))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_GEOMETRY_NV))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV))
+import Vulkan.Core10.Enums.Result (Result(SUCCESS))
+import Vulkan.Extensions.VK_KHR_ray_tracing_pipeline (getRayTracingShaderGroupHandlesKHR)
+import Vulkan.Extensions.VK_KHR_acceleration_structure (AabbPositionsKHR(..))
+import Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureInstanceKHR(..))
+import Vulkan.Extensions.Handles (AccelerationStructureNV(..))
+import Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureTypeKHR(..))
+import Vulkan.Extensions.VK_KHR_acceleration_structure (BuildAccelerationStructureFlagBitsKHR(..))
+import Vulkan.Extensions.VK_KHR_acceleration_structure (BuildAccelerationStructureFlagsKHR)
+import Vulkan.Extensions.VK_KHR_acceleration_structure (CopyAccelerationStructureModeKHR(..))
+import Vulkan.Extensions.VK_EXT_debug_report (DebugReportObjectTypeEXT(..))
+import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryFlagBitsKHR(..))
+import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryFlagsKHR)
+import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryInstanceFlagBitsKHR(..))
+import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryInstanceFlagsKHR)
+import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryTypeKHR(..))
+import Vulkan.Extensions.VK_KHR_get_memory_requirements2 (MemoryRequirements2KHR)
+import Vulkan.Extensions.VK_KHR_ray_tracing_pipeline (RayTracingShaderGroupTypeKHR(..))
+import Vulkan.Core10.APIConstants (SHADER_UNUSED_KHR)
+import Vulkan.Extensions.VK_KHR_acceleration_structure (TransformMatrixKHR(..))
+import Vulkan.Extensions.VK_KHR_acceleration_structure (pattern GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR)
+import Vulkan.Core10.APIConstants (pattern SHADER_UNUSED_KHR)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCompileDeferredNV
+  :: FunPtr (Ptr Device_T -> Pipeline -> Word32 -> IO Result) -> Ptr Device_T -> Pipeline -> Word32 -> IO Result
+
+-- | vkCompileDeferredNV - Deferred compilation of shaders
+--
+-- == 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_DEVICE_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>,
+-- 'Vulkan.Core10.Handles.Device', 'Vulkan.Core10.Handles.Pipeline'
+compileDeferredNV :: forall io
+                   . (MonadIO io)
+                  => -- | @device@ is the logical device containing the ray tracing pipeline.
+                     --
+                     -- #VUID-vkCompileDeferredNV-device-parameter# @device@ /must/ be a valid
+                     -- 'Vulkan.Core10.Handles.Device' handle
+                     Device
+                  -> -- | @pipeline@ is the ray tracing pipeline object containing the shaders.
+                     --
+                     -- #VUID-vkCompileDeferredNV-pipeline-04621# @pipeline@ /must/ be a ray
+                     -- tracing pipeline
+                     --
+                     -- #VUID-vkCompileDeferredNV-pipeline-02237# @pipeline@ /must/ have been
+                     -- created with
+                     -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DEFER_COMPILE_BIT_NV'
+                     --
+                     -- #VUID-vkCompileDeferredNV-pipeline-parameter# @pipeline@ /must/ be a
+                     -- valid 'Vulkan.Core10.Handles.Pipeline' handle
+                     --
+                     -- #VUID-vkCompileDeferredNV-pipeline-parent# @pipeline@ /must/ have been
+                     -- created, allocated, or retrieved from @device@
+                     Pipeline
+                  -> -- | @shader@ is the index of the shader to compile.
+                     --
+                     -- #VUID-vkCompileDeferredNV-shader-02238# @shader@ /must/ not have been
+                     -- called as a deferred compile before
+                     ("shader" ::: Word32)
+                  -> io ()
+compileDeferredNV device pipeline shader = liftIO $ do
+  let vkCompileDeferredNVPtr = pVkCompileDeferredNV (case device of Device{deviceCmds} -> deviceCmds)
+  unless (vkCompileDeferredNVPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCompileDeferredNV is null" Nothing Nothing
+  let vkCompileDeferredNV' = mkVkCompileDeferredNV vkCompileDeferredNVPtr
+  r <- traceAroundEvent "vkCompileDeferredNV" (vkCompileDeferredNV'
+                                                 (deviceHandle (device))
+                                                 (pipeline)
+                                                 (shader))
+  when (r < SUCCESS) (throwIO (VulkanException r))
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCreateAccelerationStructureNV
+  :: FunPtr (Ptr Device_T -> Ptr (SomeStruct AccelerationStructureCreateInfoNV) -> Ptr AllocationCallbacks -> Ptr AccelerationStructureNV -> IO Result) -> Ptr Device_T -> Ptr (SomeStruct AccelerationStructureCreateInfoNV) -> Ptr AllocationCallbacks -> Ptr AccelerationStructureNV -> IO Result
+
+-- | vkCreateAccelerationStructureNV - Create a new acceleration structure
+-- object
+--
+-- = Description
+--
+-- Similarly to other objects in Vulkan, the acceleration structure
+-- creation merely creates an object with a specific “shape” as specified
+-- by the information in 'AccelerationStructureInfoNV' and @compactedSize@
+-- in @pCreateInfo@.
+--
+-- Once memory has been bound to the acceleration structure using
+-- 'bindAccelerationStructureMemoryNV', that memory is populated by calls
+-- to 'cmdBuildAccelerationStructureNV' and
+-- 'cmdCopyAccelerationStructureNV'.
+--
+-- Acceleration structure creation uses the count and type information from
+-- the geometries, but does not use the data references in the structures.
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCreateAccelerationStructureNV-device-parameter# @device@
+--     /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkCreateAccelerationStructureNV-pCreateInfo-parameter#
+--     @pCreateInfo@ /must/ be a valid pointer to a valid
+--     'AccelerationStructureCreateInfoNV' structure
+--
+-- -   #VUID-vkCreateAccelerationStructureNV-pAllocator-parameter# If
+--     @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid pointer
+--     to a valid 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'
+--     structure
+--
+-- -   #VUID-vkCreateAccelerationStructureNV-pAccelerationStructure-parameter#
+--     @pAccelerationStructure@ /must/ be a valid pointer to a
+--     'Vulkan.Extensions.Handles.AccelerationStructureNV' handle
+--
+-- -   #VUID-vkCreateAccelerationStructureNV-device-queuecount# The device
+--     /must/ have been created with at least @1@ queue
+--
+-- == 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_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>,
+-- 'AccelerationStructureCreateInfoNV',
+-- 'Vulkan.Extensions.Handles.AccelerationStructureNV',
+-- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',
+-- 'Vulkan.Core10.Handles.Device'
+createAccelerationStructureNV :: forall a io
+                               . ( Extendss AccelerationStructureCreateInfoNV a
+                                 , PokeChain a
+                                 , MonadIO io )
+                              => -- | @device@ is the logical device that creates the buffer object.
+                                 Device
+                              -> -- | @pCreateInfo@ is a pointer to a 'AccelerationStructureCreateInfoNV'
+                                 -- structure containing parameters affecting creation of the acceleration
+                                 -- structure.
+                                 (AccelerationStructureCreateInfoNV a)
+                              -> -- | @pAllocator@ controls host memory allocation as described in the
+                                 -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
+                                 -- chapter.
+                                 ("allocator" ::: Maybe AllocationCallbacks)
+                              -> io (AccelerationStructureNV)
+createAccelerationStructureNV device
+                                createInfo
+                                allocator = liftIO . evalContT $ do
+  let vkCreateAccelerationStructureNVPtr = pVkCreateAccelerationStructureNV (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCreateAccelerationStructureNVPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCreateAccelerationStructureNV is null" Nothing Nothing
+  let vkCreateAccelerationStructureNV' = mkVkCreateAccelerationStructureNV vkCreateAccelerationStructureNVPtr
+  pCreateInfo <- ContT $ withCStruct (createInfo)
+  pAllocator <- case (allocator) of
+    Nothing -> pure nullPtr
+    Just j -> ContT $ withCStruct (j)
+  pPAccelerationStructure <- ContT $ bracket (callocBytes @AccelerationStructureNV 8) free
+  r <- lift $ traceAroundEvent "vkCreateAccelerationStructureNV" (vkCreateAccelerationStructureNV'
+                                                                    (deviceHandle (device))
+                                                                    (forgetExtensions pCreateInfo)
+                                                                    pAllocator
+                                                                    (pPAccelerationStructure))
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+  pAccelerationStructure <- lift $ peek @AccelerationStructureNV pPAccelerationStructure
+  pure $ (pAccelerationStructure)
+
+-- | A convenience wrapper to make a compatible pair of calls to
+-- 'createAccelerationStructureNV' and 'destroyAccelerationStructureNV'
+--
+-- To ensure that 'destroyAccelerationStructureNV' 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.
+--
+withAccelerationStructureNV :: forall a io r . (Extendss AccelerationStructureCreateInfoNV a, PokeChain a, MonadIO io) => Device -> AccelerationStructureCreateInfoNV a -> Maybe AllocationCallbacks -> (io AccelerationStructureNV -> (AccelerationStructureNV -> io ()) -> r) -> r
+withAccelerationStructureNV device pCreateInfo pAllocator b =
+  b (createAccelerationStructureNV device pCreateInfo pAllocator)
+    (\(o0) -> destroyAccelerationStructureNV device o0 pAllocator)
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkDestroyAccelerationStructureNV
+  :: FunPtr (Ptr Device_T -> AccelerationStructureNV -> Ptr AllocationCallbacks -> IO ()) -> Ptr Device_T -> AccelerationStructureNV -> Ptr AllocationCallbacks -> IO ()
+
+-- | vkDestroyAccelerationStructureNV - Destroy an acceleration structure
+-- object
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkDestroyAccelerationStructureNV-accelerationStructure-03752#
+--     All submitted commands that refer to @accelerationStructure@ /must/
+--     have completed execution
+--
+-- -   #VUID-vkDestroyAccelerationStructureNV-accelerationStructure-03753#
+--     If 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' were
+--     provided when @accelerationStructure@ was created, a compatible set
+--     of callbacks /must/ be provided here
+--
+-- -   #VUID-vkDestroyAccelerationStructureNV-accelerationStructure-03754#
+--     If no 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' were
+--     provided when @accelerationStructure@ was created, @pAllocator@
+--     /must/ be @NULL@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkDestroyAccelerationStructureNV-device-parameter# @device@
+--     /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkDestroyAccelerationStructureNV-accelerationStructure-parameter#
+--     If @accelerationStructure@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', @accelerationStructure@
+--     /must/ be a valid
+--     'Vulkan.Extensions.Handles.AccelerationStructureNV' handle
+--
+-- -   #VUID-vkDestroyAccelerationStructureNV-pAllocator-parameter# If
+--     @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid pointer
+--     to a valid 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'
+--     structure
+--
+-- -   #VUID-vkDestroyAccelerationStructureNV-accelerationStructure-parent#
+--     If @accelerationStructure@ is a valid handle, it /must/ have been
+--     created, allocated, or retrieved from @device@
+--
+-- == Host Synchronization
+--
+-- -   Host access to @accelerationStructure@ /must/ be externally
+--     synchronized
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>,
+-- 'Vulkan.Extensions.Handles.AccelerationStructureNV',
+-- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',
+-- 'Vulkan.Core10.Handles.Device'
+destroyAccelerationStructureNV :: forall io
+                                . (MonadIO io)
+                               => -- | @device@ is the logical device that destroys the buffer.
+                                  Device
+                               -> -- | @accelerationStructure@ is the acceleration structure to destroy.
+                                  AccelerationStructureNV
+                               -> -- | @pAllocator@ controls host memory allocation as described in the
+                                  -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
+                                  -- chapter.
+                                  ("allocator" ::: Maybe AllocationCallbacks)
+                               -> io ()
+destroyAccelerationStructureNV device
+                                 accelerationStructure
+                                 allocator = liftIO . evalContT $ do
+  let vkDestroyAccelerationStructureNVPtr = pVkDestroyAccelerationStructureNV (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkDestroyAccelerationStructureNVPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkDestroyAccelerationStructureNV is null" Nothing Nothing
+  let vkDestroyAccelerationStructureNV' = mkVkDestroyAccelerationStructureNV vkDestroyAccelerationStructureNVPtr
+  pAllocator <- case (allocator) of
+    Nothing -> pure nullPtr
+    Just j -> ContT $ withCStruct (j)
+  lift $ traceAroundEvent "vkDestroyAccelerationStructureNV" (vkDestroyAccelerationStructureNV'
+                                                                (deviceHandle (device))
+                                                                (accelerationStructure)
+                                                                pAllocator)
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetAccelerationStructureMemoryRequirementsNV
+  :: FunPtr (Ptr Device_T -> Ptr AccelerationStructureMemoryRequirementsInfoNV -> Ptr (SomeStruct MemoryRequirements2) -> IO ()) -> Ptr Device_T -> Ptr AccelerationStructureMemoryRequirementsInfoNV -> Ptr (SomeStruct MemoryRequirements2) -> IO ()
+
+-- | vkGetAccelerationStructureMemoryRequirementsNV - Get acceleration
+-- structure memory requirements
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>,
+-- 'AccelerationStructureMemoryRequirementsInfoNV',
+-- 'Vulkan.Core10.Handles.Device',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.MemoryRequirements2'
+getAccelerationStructureMemoryRequirementsNV :: forall a io
+                                              . ( Extendss MemoryRequirements2 a
+                                                , PokeChain a
+                                                , PeekChain a
+                                                , MonadIO io )
+                                             => -- | @device@ is the logical device on which the acceleration structure was
+                                                -- created.
+                                                --
+                                                -- #VUID-vkGetAccelerationStructureMemoryRequirementsNV-device-parameter#
+                                                -- @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+                                                Device
+                                             -> -- | @pInfo@ is a pointer to a
+                                                -- 'AccelerationStructureMemoryRequirementsInfoNV' structure specifying the
+                                                -- acceleration structure to get memory requirements for.
+                                                --
+                                                -- #VUID-vkGetAccelerationStructureMemoryRequirementsNV-pInfo-parameter#
+                                                -- @pInfo@ /must/ be a valid pointer to a valid
+                                                -- 'AccelerationStructureMemoryRequirementsInfoNV' structure
+                                                AccelerationStructureMemoryRequirementsInfoNV
+                                             -> io (MemoryRequirements2 a)
+getAccelerationStructureMemoryRequirementsNV device
+                                               info = liftIO . evalContT $ do
+  let vkGetAccelerationStructureMemoryRequirementsNVPtr = pVkGetAccelerationStructureMemoryRequirementsNV (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkGetAccelerationStructureMemoryRequirementsNVPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetAccelerationStructureMemoryRequirementsNV is null" Nothing Nothing
+  let vkGetAccelerationStructureMemoryRequirementsNV' = mkVkGetAccelerationStructureMemoryRequirementsNV vkGetAccelerationStructureMemoryRequirementsNVPtr
+  pInfo <- ContT $ withCStruct (info)
+  pPMemoryRequirements <- ContT (withZeroCStruct @(MemoryRequirements2 _))
+  lift $ traceAroundEvent "vkGetAccelerationStructureMemoryRequirementsNV" (vkGetAccelerationStructureMemoryRequirementsNV'
+                                                                              (deviceHandle (device))
+                                                                              pInfo
+                                                                              (forgetExtensions (pPMemoryRequirements)))
+  pMemoryRequirements <- lift $ peekCStruct @(MemoryRequirements2 _) pPMemoryRequirements
+  pure $ (pMemoryRequirements)
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkBindAccelerationStructureMemoryNV
+  :: FunPtr (Ptr Device_T -> Word32 -> Ptr BindAccelerationStructureMemoryInfoNV -> IO Result) -> Ptr Device_T -> Word32 -> Ptr BindAccelerationStructureMemoryInfoNV -> IO Result
+
+-- | vkBindAccelerationStructureMemoryNV - Bind acceleration structure memory
+--
+-- == 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_DEVICE_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>,
+-- 'BindAccelerationStructureMemoryInfoNV', 'Vulkan.Core10.Handles.Device'
+bindAccelerationStructureMemoryNV :: forall io
+                                   . (MonadIO io)
+                                  => -- | @device@ is the logical device that owns the acceleration structures and
+                                     -- memory.
+                                     --
+                                     -- #VUID-vkBindAccelerationStructureMemoryNV-device-parameter# @device@
+                                     -- /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+                                     Device
+                                  -> -- | @pBindInfos@ is a pointer to an array of
+                                     -- 'BindAccelerationStructureMemoryInfoNV' structures describing
+                                     -- acceleration structures and memory to bind.
+                                     --
+                                     -- #VUID-vkBindAccelerationStructureMemoryNV-pBindInfos-parameter#
+                                     -- @pBindInfos@ /must/ be a valid pointer to an array of @bindInfoCount@
+                                     -- valid 'BindAccelerationStructureMemoryInfoNV' structures
+                                     ("bindInfos" ::: Vector BindAccelerationStructureMemoryInfoNV)
+                                  -> io ()
+bindAccelerationStructureMemoryNV device bindInfos = liftIO . evalContT $ do
+  let vkBindAccelerationStructureMemoryNVPtr = pVkBindAccelerationStructureMemoryNV (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkBindAccelerationStructureMemoryNVPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkBindAccelerationStructureMemoryNV is null" Nothing Nothing
+  let vkBindAccelerationStructureMemoryNV' = mkVkBindAccelerationStructureMemoryNV vkBindAccelerationStructureMemoryNVPtr
+  pPBindInfos <- ContT $ allocaBytes @BindAccelerationStructureMemoryInfoNV ((Data.Vector.length (bindInfos)) * 56)
+  Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPBindInfos `plusPtr` (56 * (i)) :: Ptr BindAccelerationStructureMemoryInfoNV) (e) . ($ ())) (bindInfos)
+  r <- lift $ traceAroundEvent "vkBindAccelerationStructureMemoryNV" (vkBindAccelerationStructureMemoryNV'
+                                                                        (deviceHandle (device))
+                                                                        ((fromIntegral (Data.Vector.length $ (bindInfos)) :: Word32))
+                                                                        (pPBindInfos))
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdCopyAccelerationStructureNV
+  :: FunPtr (Ptr CommandBuffer_T -> AccelerationStructureNV -> AccelerationStructureNV -> CopyAccelerationStructureModeKHR -> IO ()) -> Ptr CommandBuffer_T -> AccelerationStructureNV -> AccelerationStructureNV -> CopyAccelerationStructureModeKHR -> IO ()
+
+-- | vkCmdCopyAccelerationStructureNV - Copy an acceleration structure
+--
+-- = Description
+--
+-- Accesses to @src@ and @dst@ /must/ be
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies synchronized>
+-- with the
+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR'
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-pipeline-stages pipeline stage>
+-- or the
+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-pipeline-stages pipeline stage>,
+-- and an
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-access-types access type>
+-- of
+-- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR'
+-- or
+-- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR'
+-- as appropriate.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdCopyAccelerationStructureNV-mode-03410# @mode@ /must/ be
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR'
+--     or
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR'
+--
+-- -   #VUID-vkCmdCopyAccelerationStructureNV-src-03411# If @mode@ is
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR',
+--     @src@ /must/ have been constructed with
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR'
+--     in the build
+--
+-- -   #VUID-vkCmdCopyAccelerationStructureNV-buffer-03718# The range of
+--     @src@ accessed by this command /must/ be fully backed by physical
+--     memory
+--
+-- -   #VUID-vkCmdCopyAccelerationStructureNV-buffer-03719# The range of
+--     @dst@ accessed by this command /must/ be fully backed by physical
+--     memory
+--
+-- -   #VUID-vkCmdCopyAccelerationStructureNV-dst-07791# The range of
+--     memory backing @dst@ that is accessed by this command /must/ not
+--     overlap the memory backing @src@ that is accessed by this command
+--
+-- -   #VUID-vkCmdCopyAccelerationStructureNV-mode-12418# If @mode@ is
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR',
+--     the memory pointed to by @dst@ /must/ be at least as large as the
+--     size of @src@, as reported by
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.writeAccelerationStructuresPropertiesKHR'
+--     or
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.cmdWriteAccelerationStructuresPropertiesKHR'
+--     with a query type of
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_SIZE_KHR'
+--
+-- -   #VUID-vkCmdCopyAccelerationStructureNV-mode-12419# If @mode@ is
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR',
+--     the memory pointed to by @dst@ /must/ be at least as large as the
+--     compacted size of @src@, as reported by
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.writeAccelerationStructuresPropertiesKHR'
+--     or
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.cmdWriteAccelerationStructuresPropertiesKHR'
+--     with a query type of
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdCopyAccelerationStructureNV-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdCopyAccelerationStructureNV-dst-parameter# @dst@ /must/
+--     be a valid 'Vulkan.Extensions.Handles.AccelerationStructureNV'
+--     handle
+--
+-- -   #VUID-vkCmdCopyAccelerationStructureNV-src-parameter# @src@ /must/
+--     be a valid 'Vulkan.Extensions.Handles.AccelerationStructureNV'
+--     handle
+--
+-- -   #VUID-vkCmdCopyAccelerationStructureNV-mode-parameter# @mode@ /must/
+--     be a valid
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.CopyAccelerationStructureModeKHR'
+--     value
+--
+-- -   #VUID-vkCmdCopyAccelerationStructureNV-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-vkCmdCopyAccelerationStructureNV-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT' operations
+--
+-- -   #VUID-vkCmdCopyAccelerationStructureNV-renderpass# This command
+--     /must/ only be called outside of a render pass instance
+--
+-- -   #VUID-vkCmdCopyAccelerationStructureNV-suspended# This command
+--     /must/ not be called between suspended render pass instances
+--
+-- -   #VUID-vkCmdCopyAccelerationStructureNV-videocoding# This command
+--     /must/ only be called outside of a video coding scope
+--
+-- -   #VUID-vkCmdCopyAccelerationStructureNV-commonparent# Each of
+--     @commandBuffer@, @dst@, and @src@ /must/ have been created,
+--     allocated, or retrieved from the same 'Vulkan.Core10.Handles.Device'
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdCopyAccelerationStructureNV is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>,
+-- 'Vulkan.Extensions.Handles.AccelerationStructureNV',
+-- 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.CopyAccelerationStructureModeKHR'
+cmdCopyAccelerationStructureNV :: forall io
+                                . (MonadIO io)
+                               => -- | @commandBuffer@ is the command buffer into which the command will be
+                                  -- recorded.
+                                  CommandBuffer
+                               -> -- | @dst@ is the target acceleration structure for the copy.
+                                  ("dst" ::: AccelerationStructureNV)
+                               -> -- | @src@ is the source acceleration structure for the copy.
+                                  ("src" ::: AccelerationStructureNV)
+                               -> -- | @mode@ is a
+                                  -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.CopyAccelerationStructureModeKHR'
+                                  -- value specifying additional operations to perform during the copy.
+                                  CopyAccelerationStructureModeKHR
+                               -> io ()
+cmdCopyAccelerationStructureNV commandBuffer dst src mode = liftIO $ do
+  let vkCmdCopyAccelerationStructureNVPtr = pVkCmdCopyAccelerationStructureNV (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  unless (vkCmdCopyAccelerationStructureNVPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdCopyAccelerationStructureNV is null" Nothing Nothing
+  let vkCmdCopyAccelerationStructureNV' = mkVkCmdCopyAccelerationStructureNV vkCmdCopyAccelerationStructureNVPtr
+  traceAroundEvent "vkCmdCopyAccelerationStructureNV" (vkCmdCopyAccelerationStructureNV'
+                                                         (commandBufferHandle (commandBuffer))
+                                                         (dst)
+                                                         (src)
+                                                         (mode))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdWriteAccelerationStructuresPropertiesNV
+  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Ptr AccelerationStructureNV -> QueryType -> QueryPool -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Ptr AccelerationStructureNV -> QueryType -> QueryPool -> Word32 -> IO ()
+
+-- | vkCmdWriteAccelerationStructuresPropertiesNV - Write acceleration
+-- structure result parameters to query results.
+--
+-- = Description
+--
+-- Accesses to any of the acceleration structures listed in
+-- @pAccelerationStructures@ /must/ be
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies synchronized>
+-- with the
+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-pipeline-stages pipeline stage>
+-- and an
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-access-types access type>
+-- of
+-- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR'.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesNV-queryPool-03755#
+--     @queryPool@ /must/ have been created with a @queryType@ matching
+--     @queryType@
+--
+-- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesNV-queryPool-03756#
+--     The queries identified by @queryPool@ and @firstQuery@ /must/ be
+--     /unavailable/
+--
+-- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesNV-accelerationStructure-03757#
+--     @accelerationStructure@ /must/ be bound completely and contiguously
+--     to a single 'Vulkan.Core10.Handles.DeviceMemory' object via
+--     'bindAccelerationStructureMemoryNV'
+--
+-- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesNV-pAccelerationStructures-04958#
+--     All acceleration structures in @pAccelerationStructures@ /must/ have
+--     been built prior to the execution of this command
+--
+-- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesNV-pAccelerationStructures-06215#
+--     All acceleration structures in @pAccelerationStructures@ /must/ have
+--     been built with
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR'
+--     if @queryType@ is
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV'
+--
+-- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesNV-queryType-06216#
+--     @queryType@ /must/ be
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV'
+--
+-- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesNV-pAccelerationStructures-11685#
+--     All acceleration structures in @pAccelerationStructures@ /must/ have
+--     been constructed prior to the execution of this command on the
+--     device
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesNV-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesNV-pAccelerationStructures-parameter#
+--     @pAccelerationStructures@ /must/ be a valid pointer to an array of
+--     @accelerationStructureCount@ valid
+--     'Vulkan.Extensions.Handles.AccelerationStructureNV' handles
+--
+-- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesNV-queryType-parameter#
+--     @queryType@ /must/ be a valid
+--     'Vulkan.Core10.Enums.QueryType.QueryType' value
+--
+-- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesNV-queryPool-parameter#
+--     @queryPool@ /must/ be a valid 'Vulkan.Core10.Handles.QueryPool'
+--     handle
+--
+-- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesNV-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-vkCmdWriteAccelerationStructuresPropertiesNV-commandBuffer-cmdpool#
+--     The 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT' operations
+--
+-- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesNV-renderpass# This
+--     command /must/ only be called outside of a render pass instance
+--
+-- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesNV-suspended# This
+--     command /must/ not be called between suspended render pass instances
+--
+-- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesNV-videocoding# This
+--     command /must/ only be called outside of a video coding scope
+--
+-- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesNV-accelerationStructureCount-arraylength#
+--     @accelerationStructureCount@ /must/ be greater than @0@
+--
+-- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesNV-commonparent#
+--     Each of @commandBuffer@, @queryPool@, and the elements of
+--     @pAccelerationStructures@ /must/ have been created, allocated, or
+--     retrieved from the same 'Vulkan.Core10.Handles.Device'
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdWriteAccelerationStructuresPropertiesNV is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>,
+-- 'Vulkan.Extensions.Handles.AccelerationStructureNV',
+-- 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'Vulkan.Core10.Handles.QueryPool',
+-- 'Vulkan.Core10.Enums.QueryType.QueryType'
+cmdWriteAccelerationStructuresPropertiesNV :: forall io
+                                            . (MonadIO io)
+                                           => -- | @commandBuffer@ is the command buffer into which the command will be
+                                              -- recorded.
+                                              CommandBuffer
+                                           -> -- | @pAccelerationStructures@ is a pointer to an array of existing
+                                              -- previously built acceleration structures.
+                                              ("accelerationStructures" ::: Vector AccelerationStructureNV)
+                                           -> -- | @queryType@ is a 'Vulkan.Core10.Enums.QueryType.QueryType' value
+                                              -- specifying the type of queries managed by the pool.
+                                              QueryType
+                                           -> -- | @queryPool@ is the query pool that will manage the results of the query.
+                                              QueryPool
+                                           -> -- | @firstQuery@ is the first query index within the query pool that will
+                                              -- contain the @accelerationStructureCount@ number of results.
+                                              ("firstQuery" ::: Word32)
+                                           -> io ()
+cmdWriteAccelerationStructuresPropertiesNV commandBuffer
+                                             accelerationStructures
+                                             queryType
+                                             queryPool
+                                             firstQuery = liftIO . evalContT $ do
+  let vkCmdWriteAccelerationStructuresPropertiesNVPtr = pVkCmdWriteAccelerationStructuresPropertiesNV (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdWriteAccelerationStructuresPropertiesNVPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdWriteAccelerationStructuresPropertiesNV is null" Nothing Nothing
+  let vkCmdWriteAccelerationStructuresPropertiesNV' = mkVkCmdWriteAccelerationStructuresPropertiesNV vkCmdWriteAccelerationStructuresPropertiesNVPtr
+  pPAccelerationStructures <- ContT $ allocaBytes @AccelerationStructureNV ((Data.Vector.length (accelerationStructures)) * 8)
+  lift $ Data.Vector.imapM_ (\i e -> poke (pPAccelerationStructures `plusPtr` (8 * (i)) :: Ptr AccelerationStructureNV) (e)) (accelerationStructures)
+  lift $ traceAroundEvent "vkCmdWriteAccelerationStructuresPropertiesNV" (vkCmdWriteAccelerationStructuresPropertiesNV'
+                                                                            (commandBufferHandle (commandBuffer))
+                                                                            ((fromIntegral (Data.Vector.length $ (accelerationStructures)) :: Word32))
+                                                                            (pPAccelerationStructures)
+                                                                            (queryType)
+                                                                            (queryPool)
+                                                                            (firstQuery))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdBuildAccelerationStructureNV
+  :: FunPtr (Ptr CommandBuffer_T -> Ptr AccelerationStructureInfoNV -> Buffer -> DeviceSize -> Bool32 -> AccelerationStructureNV -> AccelerationStructureNV -> Buffer -> DeviceSize -> IO ()) -> Ptr CommandBuffer_T -> Ptr AccelerationStructureInfoNV -> Buffer -> DeviceSize -> Bool32 -> AccelerationStructureNV -> AccelerationStructureNV -> Buffer -> DeviceSize -> IO ()
+
+-- | vkCmdBuildAccelerationStructureNV - Build an acceleration structure
+--
+-- = Description
+--
+-- Accesses to @dst@, @src@, and @scratch@ /must/ be
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies synchronized>
+-- with the
+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-pipeline-stages pipeline stage>
+-- and an
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-access-types access type>
+-- of
+-- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR'
+-- or
+-- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR'.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdBuildAccelerationStructureNV-geometryCount-02241#
+--     @geometryCount@ /must/ be less than or equal to
+--     'PhysicalDeviceRayTracingPropertiesNV'::@maxGeometryCount@
+--
+-- -   #VUID-vkCmdBuildAccelerationStructureNV-dst-02488# @dst@ /must/ have
+--     been created with compatible 'AccelerationStructureInfoNV' where
+--     'AccelerationStructureInfoNV'::@type@ and
+--     'AccelerationStructureInfoNV'::@flags@ are identical,
+--     'AccelerationStructureInfoNV'::@instanceCount@ and
+--     'AccelerationStructureInfoNV'::@geometryCount@ for @dst@ are greater
+--     than or equal to the build size and each geometry in
+--     'AccelerationStructureInfoNV'::@pGeometries@ for @dst@ has greater
+--     than or equal to the number of vertices, indices, and AABBs
+--
+-- -   #VUID-vkCmdBuildAccelerationStructureNV-update-02489# If @update@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', @src@ /must/ not be
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-vkCmdBuildAccelerationStructureNV-update-02490# If @update@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', @src@ /must/ have previously
+--     been constructed with
+--     'BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV' set in
+--     'AccelerationStructureInfoNV'::@flags@ in the original build
+--
+-- -   #VUID-vkCmdBuildAccelerationStructureNV-update-02491# If @update@ is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', the @size@ member of the
+--     'Vulkan.Core10.MemoryManagement.MemoryRequirements' structure
+--     returned from a call to
+--     'getAccelerationStructureMemoryRequirementsNV' with
+--     'AccelerationStructureMemoryRequirementsInfoNV'::@accelerationStructure@
+--     set to @dst@ and
+--     'AccelerationStructureMemoryRequirementsInfoNV'::@type@ set to
+--     'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV'
+--     /must/ be less than or equal to the size of @scratch@ minus
+--     @scratchOffset@
+--
+-- -   #VUID-vkCmdBuildAccelerationStructureNV-update-02492# If @update@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', the @size@ member of the
+--     'Vulkan.Core10.MemoryManagement.MemoryRequirements' structure
+--     returned from a call to
+--     'getAccelerationStructureMemoryRequirementsNV' with
+--     'AccelerationStructureMemoryRequirementsInfoNV'::@accelerationStructure@
+--     set to @dst@ and
+--     'AccelerationStructureMemoryRequirementsInfoNV'::@type@ set to
+--     'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV'
+--     /must/ be less than or equal to the size of @scratch@ minus
+--     @scratchOffset@
+--
+-- -   #VUID-vkCmdBuildAccelerationStructureNV-scratch-03522# @scratch@
+--     /must/ have been created with the 'BUFFER_USAGE_RAY_TRACING_BIT_NV'
+--     usage flag set
+--
+-- -   #VUID-vkCmdBuildAccelerationStructureNV-instanceData-03523# If
+--     @instanceData@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
+--     @instanceData@ /must/ have been created with the
+--     'BUFFER_USAGE_RAY_TRACING_BIT_NV' usage flag set
+--
+-- -   #VUID-vkCmdBuildAccelerationStructureNV-accelerationStructureReference-12264#
+--     Each
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureInstanceKHR'::@accelerationStructureReference@
+--     value in @instanceData@ /must/ be a value obtained from
+--     'getAccelerationStructureHandleNV' for a bottom level acceleration
+--     structure
+--
+-- -   #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://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-memory-aliasing memory aliasing>
+--
+-- -   #VUID-vkCmdBuildAccelerationStructureNV-dst-07787# @dst@ /must/ be
+--     bound completely and contiguously to a single
+--     'Vulkan.Core10.Handles.DeviceMemory' object via
+--     'bindAccelerationStructureMemoryNV'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdBuildAccelerationStructureNV-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdBuildAccelerationStructureNV-pInfo-parameter# @pInfo@
+--     /must/ be a valid pointer to a valid 'AccelerationStructureInfoNV'
+--     structure
+--
+-- -   #VUID-vkCmdBuildAccelerationStructureNV-instanceData-parameter# If
+--     @instanceData@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
+--     @instanceData@ /must/ be a valid 'Vulkan.Core10.Handles.Buffer'
+--     handle
+--
+-- -   #VUID-vkCmdBuildAccelerationStructureNV-dst-parameter# @dst@ /must/
+--     be a valid 'Vulkan.Extensions.Handles.AccelerationStructureNV'
+--     handle
+--
+-- -   #VUID-vkCmdBuildAccelerationStructureNV-src-parameter# If @src@ is
+--     not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @src@ /must/ be a
+--     valid 'Vulkan.Extensions.Handles.AccelerationStructureNV' handle
+--
+-- -   #VUID-vkCmdBuildAccelerationStructureNV-scratch-parameter# @scratch@
+--     /must/ be a valid 'Vulkan.Core10.Handles.Buffer' handle
+--
+-- -   #VUID-vkCmdBuildAccelerationStructureNV-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-vkCmdBuildAccelerationStructureNV-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT' operations
+--
+-- -   #VUID-vkCmdBuildAccelerationStructureNV-renderpass# This command
+--     /must/ only be called outside of a render pass instance
+--
+-- -   #VUID-vkCmdBuildAccelerationStructureNV-suspended# This command
+--     /must/ not be called between suspended render pass instances
+--
+-- -   #VUID-vkCmdBuildAccelerationStructureNV-videocoding# This command
+--     /must/ only be called outside of a video coding scope
+--
+-- -   #VUID-vkCmdBuildAccelerationStructureNV-commonparent# Each of
+--     @commandBuffer@, @dst@, @instanceData@, @scratch@, and @src@ 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#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdBuildAccelerationStructureNV is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>,
+-- 'AccelerationStructureInfoNV',
+-- 'Vulkan.Extensions.Handles.AccelerationStructureNV',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32', 'Vulkan.Core10.Handles.Buffer',
+-- 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize'
+cmdBuildAccelerationStructureNV :: forall io
+                                 . (MonadIO io)
+                                => -- | @commandBuffer@ is the command buffer into which the command will be
+                                   -- recorded.
+                                   CommandBuffer
+                                -> -- | @pInfo@ contains the shared information for the acceleration structure’s
+                                   -- structure.
+                                   AccelerationStructureInfoNV
+                                -> -- | @instanceData@ is the buffer containing an array of
+                                   -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureInstanceKHR'
+                                   -- structures defining acceleration structures. This parameter /must/ be
+                                   -- @NULL@ for bottom level acceleration structures.
+                                   ("instanceData" ::: Buffer)
+                                -> -- | @instanceOffset@ is the offset in bytes (relative to the start of
+                                   -- @instanceData@) at which the instance data is located.
+                                   ("instanceOffset" ::: DeviceSize)
+                                -> -- | @update@ specifies whether to update the @dst@ acceleration structure
+                                   -- with the data in @src@.
+                                   ("update" ::: Bool)
+                                -> -- | @dst@ is a pointer to the target acceleration structure for the build.
+                                   ("dst" ::: AccelerationStructureNV)
+                                -> -- | @src@ is a pointer to an existing acceleration structure that is to be
+                                   -- used to update the @dst@ acceleration structure.
+                                   ("src" ::: AccelerationStructureNV)
+                                -> -- | @scratch@ is the 'Vulkan.Core10.Handles.Buffer' that will be used as
+                                   -- scratch memory for the build.
+                                   ("scratch" ::: Buffer)
+                                -> -- | @scratchOffset@ is the offset in bytes relative to the start of
+                                   -- @scratch@ that will be used as a scratch memory.
+                                   ("scratchOffset" ::: DeviceSize)
+                                -> io ()
+cmdBuildAccelerationStructureNV commandBuffer
+                                  info
+                                  instanceData
+                                  instanceOffset
+                                  update
+                                  dst
+                                  src
+                                  scratch
+                                  scratchOffset = liftIO . evalContT $ do
+  let vkCmdBuildAccelerationStructureNVPtr = pVkCmdBuildAccelerationStructureNV (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdBuildAccelerationStructureNVPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdBuildAccelerationStructureNV is null" Nothing Nothing
+  let vkCmdBuildAccelerationStructureNV' = mkVkCmdBuildAccelerationStructureNV vkCmdBuildAccelerationStructureNVPtr
+  pInfo <- ContT $ withCStruct (info)
+  lift $ traceAroundEvent "vkCmdBuildAccelerationStructureNV" (vkCmdBuildAccelerationStructureNV'
+                                                                 (commandBufferHandle (commandBuffer))
+                                                                 pInfo
+                                                                 (instanceData)
+                                                                 (instanceOffset)
+                                                                 (boolToBool32 (update))
+                                                                 (dst)
+                                                                 (src)
+                                                                 (scratch)
+                                                                 (scratchOffset))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdTraceRaysNV
+  :: FunPtr (Ptr CommandBuffer_T -> Buffer -> DeviceSize -> Buffer -> DeviceSize -> DeviceSize -> Buffer -> DeviceSize -> DeviceSize -> Buffer -> DeviceSize -> DeviceSize -> Word32 -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> DeviceSize -> Buffer -> DeviceSize -> DeviceSize -> Buffer -> DeviceSize -> DeviceSize -> Buffer -> DeviceSize -> DeviceSize -> Word32 -> Word32 -> Word32 -> IO ()
+
+-- | vkCmdTraceRaysNV - Initialize a ray tracing dispatch
+--
+-- = Description
+--
+-- When the command is executed, a ray generation group of @width@ ×
+-- @height@ × @depth@ rays is assembled.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdTraceRaysNV-magFilter-04553# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
+--     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR',
+--     @reductionMode@ equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
+--     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-vkCmdTraceRaysNV-magFilter-09598# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
+--     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR' and
+--     @reductionMode@ equal to either
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
+--     or
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
+--     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_MINMAX_BIT'
+--
+-- -   #VUID-vkCmdTraceRaysNV-mipmapMode-04770# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
+--     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR',
+--     @reductionMode@ equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
+--     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-vkCmdTraceRaysNV-mipmapMode-09599# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
+--     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'
+--     and @reductionMode@ equal to either
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
+--     or
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
+--     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_MINMAX_BIT'
+--
+-- -   #VUID-vkCmdTraceRaysNV-unnormalizedCoordinates-09635# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the image view’s @levelCount@ and @layerCount@ /must/ be 1
+--
+-- -   #VUID-vkCmdTraceRaysNV-None-08609# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the image view’s @viewType@ /must/ be
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D' or
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D'
+--
+-- -   #VUID-vkCmdTraceRaysNV-None-08610# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the sampler /must/ not be used with any of the SPIR-V
+--     @OpImageSample*@ or @OpImageSparseSample*@ instructions with
+--     @ImplicitLod@, @Dref@ or @Proj@ in their name
+--
+-- -   #VUID-vkCmdTraceRaysNV-None-08611# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the sampler /must/ not be used with any of the SPIR-V
+--     @OpImageSample*@ or @OpImageSparseSample*@ instructions that
+--     includes a LOD bias or any offset values
+--
+-- -   #VUID-vkCmdTraceRaysNV-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-vkCmdTraceRaysNV-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-vkCmdTraceRaysNV-None-07888# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'
+--     descriptor is accessed using atomic operations as a result of this
+--     command, then the storage texel buffer’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-buffer-view-format-features format features>
+--     /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT'
+--
+-- -   #VUID-vkCmdTraceRaysNV-None-02692# If a
+--     'Vulkan.Core10.Handles.ImageView' is sampled with
+--     'Vulkan.Core10.Enums.Filter.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.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'
+--
+-- -   #VUID-vkCmdTraceRaysNV-None-02693# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_filter_cubic VK_EXT_filter_cubic>
+--     extension is not enabled and any 'Vulkan.Core10.Handles.ImageView'
+--     is sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as a
+--     result of this command, it /must/ not have a
+--     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' of
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE', or
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY'
+--
+-- -   #VUID-vkCmdTraceRaysNV-filterCubic-02694# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with
+--     'Vulkan.Core10.Enums.Filter.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-vkCmdTraceRaysNV-filterCubicMinmax-02695# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with
+--     'Vulkan.Core10.Enums.Filter.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-vkCmdTraceRaysNV-cubicRangeClamp-09212# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-cubicRangeClamp cubicRangeClamp>
+--     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
+--     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
+--     a result of this command /must/ not have a
+--     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
+--     equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
+--
+-- -   #VUID-vkCmdTraceRaysNV-reductionMode-09213# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with a
+--     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
+--     equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
+--     as a result of this command /must/ sample with
+--     'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT'
+--
+-- -   #VUID-vkCmdTraceRaysNV-selectableCubicWeights-09214# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-selectableCubicWeights selectableCubicWeights>
+--     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
+--     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
+--     a result of this command /must/ have
+--     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.SamplerCubicWeightsCreateInfoQCOM'::@cubicWeights@
+--     equal to
+--     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM'
+--
+-- -   #VUID-vkCmdTraceRaysNV-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-vkCmdTraceRaysNV-OpTypeImage-07027# For any
+--     'Vulkan.Core10.Handles.ImageView' being written as a storage image
+--     where the image format field of the @OpTypeImage@ is @Unknown@, the
+--     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_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdTraceRaysNV-OpTypeImage-07028# For any
+--     'Vulkan.Core10.Handles.ImageView' being read as a storage image
+--     where the image format field of the @OpTypeImage@ is @Unknown@, the
+--     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_STORAGE_READ_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdTraceRaysNV-OpTypeImage-07029# For any
+--     'Vulkan.Core10.Handles.BufferView' being written as a storage texel
+--     buffer where the image format field of the @OpTypeImage@ is
+--     @Unknown@, the view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
+--     /must/ contain
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdTraceRaysNV-OpTypeImage-07030# Any
+--     'Vulkan.Core10.Handles.BufferView' being read as a storage texel
+--     buffer where the image format field of the @OpTypeImage@ is
+--     @Unknown@ then the view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
+--     /must/ contain
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdTraceRaysNV-None-08600# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
+--     was created with a pipeline layout and statically uses a set /n/, a
+--     descriptor set /must/ have been bound to /n/ at the same pipeline
+--     bind point, with layouts compatible for set /n/ with the layout(s)
+--     used to create the shader, as described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptors-compatibility ???>
+--
+-- -   #VUID-vkCmdTraceRaysNV-None-08601# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
+--     was created with a pipeline layout or specified push constant ranges
+--     and statically uses a push constant value, that value /must/ have
+--     been set for the same pipeline bind point, with push constant ranges
+--     that are
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptors-compatibility compatible>
+--     with the push constant range used to create the shader
+--
+-- -   #VUID-vkCmdTraceRaysNV-None-10068# For each array of resources that
+--     is used by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
+--     the indices used to access members of the array /must/ be less than
+--     the descriptor count for the identified binding in the descriptor
+--     sets used by this command
+--
+-- -   #VUID-vkCmdTraceRaysNV-None-08114# Descriptors in each bound
+--     descriptor set, specified via
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
+--     be valid if they are accessed as described by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
+--     by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
+--     point used by this command and the bound
+--     'Vulkan.Core10.Handles.Pipeline' was not created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdTraceRaysNV-imageLayout-00344# If an image descriptor is
+--     accessed by a shader, the
+--     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' /must/ match the
+--     subresource accessible from the 'Vulkan.Core10.Handles.ImageView' 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>
+--
+-- -   #VUID-vkCmdTraceRaysNV-None-08115# If the descriptors used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     were specified via
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', the
+--     bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     without
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdTraceRaysNV-None-08116# Descriptors in bound descriptor
+--     buffers, specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     /must/ be valid if they are dynamically used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
+--     was created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdTraceRaysNV-None-08604# Descriptors in bound descriptor
+--     buffers, specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     /must/ be valid if they are dynamically used by any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     to the pipeline bind point used by this command
+--
+-- -   #VUID-vkCmdTraceRaysNV-None-08117# If the descriptors used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     were specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdTraceRaysNV-None-08119# If a descriptor is dynamically
+--     used with a 'Vulkan.Core10.Handles.Pipeline' created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     the descriptor memory /must/ be resident
+--
+-- -   #VUID-vkCmdTraceRaysNV-None-08605# If a descriptor is dynamically
+--     used with a 'Vulkan.Extensions.Handles.ShaderEXT' created with a
+--     'Vulkan.Core10.Handles.DescriptorSetLayout' that was created with
+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     the descriptor memory /must/ be resident
+--
+-- -   #VUID-vkCmdTraceRaysNV-None-08606# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject>
+--     feature is not enabled, a valid pipeline /must/ be bound to the
+--     pipeline bind point used by this command
+--
+-- -   #VUID-vkCmdTraceRaysNV-None-08608# If a pipeline is bound to the
+--     pipeline bind point used by this command, there /must/ not have been
+--     any calls to dynamic state setting commands for any state specified
+--     statically in the 'Vulkan.Core10.Handles.Pipeline' object bound to
+--     the pipeline bind point used by this command, since that pipeline
+--     was bound
+--
+-- -   #VUID-vkCmdTraceRaysNV-uniformBuffers-06935# If any stage of the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command accesses a uniform buffer, and that stage
+--     was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @uniformBuffers@, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /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-vkCmdTraceRaysNV-None-08612# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, and any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     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-vkCmdTraceRaysNV-storageBuffers-06936# If any stage of the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command accesses a storage buffer, and that stage
+--     was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @storageBuffers@, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /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-vkCmdTraceRaysNV-None-08613# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, and any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     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-vkCmdTraceRaysNV-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
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shaders>
+--     /must/ not be a protected resource
+--
+-- -   #VUID-vkCmdTraceRaysNV-viewType-07752# If a
+--     'Vulkan.Core10.Handles.ImageView' is accessed as a result of this
+--     command, then the image view’s @viewType@ /must/ match the @Dim@
+--     operand of the @OpTypeImage@ as described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-image-dimensions ???>
+--
+-- -   #VUID-vkCmdTraceRaysNV-format-07753# If a
+--     'Vulkan.Core10.Handles.ImageView' or
+--     'Vulkan.Core10.Handles.BufferView' is accessed as a result of this
+--     command, then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-numericformat numeric type>
+--     of the view’s @format@ and the @Sampled@ @Type@ operand of the
+--     @OpTypeImage@ /must/ match
+--
+-- -   #VUID-vkCmdTraceRaysNV-OpImageWrite-08795# If a
+--     'Vulkan.Core10.Handles.ImageView' created with a format other than
+--     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM' 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-vkCmdTraceRaysNV-OpImageWrite-08796# If a
+--     'Vulkan.Core10.Handles.ImageView' created with the format
+--     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM' is accessed using
+--     @OpImageWrite@ as a result of this command, then the @Type@ of the
+--     @Texel@ operand of that instruction /must/ have four components
+--
+-- -   #VUID-vkCmdTraceRaysNV-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-vkCmdTraceRaysNV-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-vkCmdTraceRaysNV-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-vkCmdTraceRaysNV-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-vkCmdTraceRaysNV-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-vkCmdTraceRaysNV-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-vkCmdTraceRaysNV-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-vkCmdTraceRaysNV-OpImageSampleWeightedQCOM-06971# If
+--     @OpImageSampleWeightedQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM'
+--
+-- -   #VUID-vkCmdTraceRaysNV-OpImageSampleWeightedQCOM-06972# If
+--     @OpImageSampleWeightedQCOM@ uses a 'Vulkan.Core10.Handles.ImageView'
+--     as a sample weight image 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM'
+--
+-- -   #VUID-vkCmdTraceRaysNV-OpImageBoxFilterQCOM-06973# If
+--     @OpImageBoxFilterQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM'
+--
+-- -   #VUID-vkCmdTraceRaysNV-OpImageBlockMatchSSDQCOM-06974# If
+--     @OpImageBlockMatchSSDQCOM@ is used to read from an
+--     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
+--     or
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_SXD_BIT_QCOM'
+--
+-- -   #VUID-vkCmdTraceRaysNV-OpImageBlockMatchSADQCOM-12420# If
+--     @OpImageBlockMatchSADQCOM@ is used to read from an
+--     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
+--     or
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_SXD_BIT_QCOM'
+--
+-- -   #VUID-vkCmdTraceRaysNV-OpImageBlockMatchSADQCOM-06976# If
+--     @OpImageBlockMatchSADQCOM@ or OpImageBlockMatchSSDQCOM is used to
+--     read from a reference image as result of this command, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-blockMatchExtendedClampToEdge blockMatchExtendedClampToEdge>
+--     feature is not enabled or the /input/ sampler was not created with
+--     both @addressModeU@ and @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--     then the specified reference coordinates /must/ not fail
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
+--
+-- -   #VUID-vkCmdTraceRaysNV-OpImageSampleWeightedQCOM-06977# If
+--     @OpImageSampleWeightedQCOM@, @OpImageBoxFilterQCOM@,
+--     @OpImageBlockMatchWindowSSDQCOM@, @OpImageBlockMatchWindowSADQCOM@,
+--     @OpImageBlockMatchGatherSSDQCOM@, @OpImageBlockMatchGatherSADQCOM@,
+--     @OpImageBlockMatchSSDQCOM@, or @OpImageBlockMatchSADQCOM@ uses a
+--     'Vulkan.Core10.Handles.Sampler' as a result of this command, then
+--     the sampler /must/ have been created with
+--     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
+--
+-- -   #VUID-vkCmdTraceRaysNV-OpImageSampleWeightedQCOM-06978# If any
+--     command other than @OpImageSampleWeightedQCOM@,
+--     @OpImageBoxFilterQCOM@, @OpImageBlockMatchWindowSSDQCOM@,
+--     @OpImageBlockMatchWindowSADQCOM@, @OpImageBlockMatchGatherSSDQCOM@,
+--     @OpImageBlockMatchGatherSADQCOM@, @OpImageBlockMatchSSDQCOM@, or
+--     @OpImageBlockMatchSADQCOM@ uses a 'Vulkan.Core10.Handles.Sampler' as
+--     a result of this command, then the sampler /must/ not have been
+--     created with
+--     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
+--
+-- -   #VUID-vkCmdTraceRaysNV-OpImageBlockMatchWindow-09215# If a
+--     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     instruction is used to read from an
+--     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
+--
+-- -   #VUID-vkCmdTraceRaysNV-OpImageBlockMatchWindow-09216# If a
+--     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     instruction is used to read from an
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the image view’s format /must/ be a single-component format
+--
+-- -   #VUID-vkCmdTraceRaysNV-OpImageBlockMatchWindow-09217# If a
+--     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     read from a reference image as result of this command, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-blockMatchExtendedClampToEdge blockMatchExtendedClampToEdge>
+--     feature is not enabled or the /input/ sampler was not created with
+--     both @addressModeU@ and @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--     then the specified reference coordinates /must/ not fail
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
+--
+-- -   #VUID-vkCmdTraceRaysNV-OpImageBlockMatchWindow-12421# If a
+--     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     instruction uses a 'Vulkan.Core10.Handles.Sampler' as a result of
+--     this command, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-blockMatchExtendedClampToEdge blockMatchExtendedClampToEdge>
+--     is not enabled, the /input/ sampler /must/ not have been created
+--     with either @addressModeU@ or @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--
+-- -   #VUID-vkCmdTraceRaysNV-addressModeU-12422# If a
+--     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     instruction uses a 'Vulkan.Core10.Handles.Sampler' as a result of
+--     this command, and the /input/ sampler was created with either
+--     @addressModeU@ or @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE',
+--     then the sampler /must/ have been created with both @addressModeU@
+--     and @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--
+-- -   #VUID-vkCmdTraceRaysNV-None-07288# Any shader invocation executed by
+--     this command /must/
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-termination terminate>
+--
+-- -   #VUID-vkCmdTraceRaysNV-None-09600# If a descriptor with type equal
+--     to any of
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',
+--     or
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'
+--     is accessed as a result of this command, all image subresources
+--     identified by that descriptor /must/ be in the image layout
+--     identified when the descriptor was written
+--
+-- -   #VUID-vkCmdTraceRaysNV-micromap-11636# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command through an
+--     @OpRayQueryProceedKHR@ operation , the @VK_EXT_opacity_micromap@
+--     extension is not enabled, and the acceleration structure is built
+--     using geometry with a
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapKHR'
+--     structure included in its @pNext@ chain, the shader /must/ have
+--     specified a @OpacityMicromapIdKHR@ execution mode with its
+--     specialization constant operand equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdTraceRaysNV-micromap-11637# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command and the
+--     acceleration structure was constructed through deserialization, all
+--     micromap arrays referenced by the acceleration structure that were
+--     not replaced by an acceleration structure update command /must/ have
+--     been deserialized using the serialized data of the corresponding
+--     micromaps used to originally build the acceleration structure prior
+--     to the execution of this command on the device
+--
+-- -   #VUID-vkCmdTraceRaysNV-micromap-11638# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command and the
+--     acceleration structure is built using geometry with an @indexBuffer@
+--     containing both
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.OpacityMicromapSpecialIndexKHR'
+--     values and indices into an associated micromap array, any
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command /must/ not have been created with @flags@ that
+--     includes
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_KHR'
+--
+-- -   #VUID-vkCmdTraceRaysNV-micromap-11639# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command and the
+--     acceleration structure is built using geometry with an @indexBuffer@
+--     containing both
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.OpacityMicromapSpecialIndexKHR'
+--     values and indices into an associated micromap array, any
+--     'Vulkan.Extensions.Handles.ShaderEXT' that accessed the descriptor
+--     /must/ not have been created with @flags@ that includes
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_EXT'
+--
+-- -   #VUID-vkCmdTraceRaysNV-commandBuffer-10746# The
+--     'Vulkan.Core10.Handles.DeviceMemory' object allocated from a
+--     'Vulkan.Core10.DeviceInitialization.MemoryHeap' with the
+--     'Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_TILE_MEMORY_BIT_QCOM'
+--     property that is bound to a resource accessed as a result of this
+--     command /must/ be the active
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-bind-tile-memory bound tile memory object>
+--     in @commandBuffer@
+--
+-- -   #VUID-vkCmdTraceRaysNV-None-10678# If this command is recorded
+--     inside a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-tile-shading tile shading render pass>
+--     instance, the stages corresponding to the pipeline bind point used
+--     by this command /must/ only include
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT',
+--     and\/or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT'
+--
+-- -   #VUID-vkCmdTraceRaysNV-None-10679# If this command is recorded where
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model>
+--     is enabled, there /must/ be no access to any image while the image
+--     was be transitioned to the
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
+--     layout
+--
+-- -   #VUID-vkCmdTraceRaysNV-pDescription-09900# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the
+--     underlying 'Vulkan.Extensions.Handles.TensorARM' object /must/ have
+--     been created with the
+--     'Vulkan.Extensions.VK_ARM_tensors.TENSOR_USAGE_SHADER_BIT_ARM' usage
+--     flag set
+--
+-- -   #VUID-vkCmdTraceRaysNV-dimensionCount-09905# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the @Rank@
+--     of the @OpTypeTensorARM@ of the tensor resource variable /must/ be
+--     equal to the @dimensionCount@ provided via
+--     'Vulkan.Extensions.VK_ARM_tensors.TensorCreateInfoARM'::@pDescription@
+--     when creating the underlying 'Vulkan.Extensions.Handles.TensorARM'
+--     object
+--
+-- -   #VUID-vkCmdTraceRaysNV-OpTypeTensorARM-09906# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the element
+--     type of the @OpTypeTensorARM@ of the tensor resource variable /must/
+--     be
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-tensor-formats compatible>
+--     with the 'Vulkan.Core10.Enums.Format.Format' of the
+--     'Vulkan.Extensions.Handles.TensorViewARM' used for the access
+--
+-- -   #VUID-vkCmdTraceRaysNV-None-11297# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses a @OpTypeStruct@ decorated with @Block@ or
+--     @BufferBlock@ using that mapping, the calculated offset for the
+--     resource heap /must/ be a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-bufferDescriptorAlignment bufferDescriptorAlignment>
+--
+-- -   #VUID-vkCmdTraceRaysNV-None-11298# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses an @OpTypeImage@ or @OpTypeSampledImage@ using
+--     that mapping, the calculated offset for the resource heap /must/ be
+--     a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-imageDescriptorAlignment imageDescriptorAlignment>
+--
+-- -   #VUID-vkCmdTraceRaysNV-None-11299# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses an @OpTypeSampler@ or @OpTypeSampledImage@
+--     using that mapping, the calculated offset for the sampler heap
+--     /must/ be a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-samplerDescriptorAlignment samplerDescriptorAlignment>
+--
+-- -   #VUID-vkCmdTraceRaysNV-None-11397# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses an @OpTypeTensorARM@ using that mapping, the
+--     calculated offset for the resource heap /must/ be a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-tensorDescriptorAlignment tensorDescriptorAlignment>
+--
+-- -   #VUID-vkCmdTraceRaysNV-None-11300# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a
+--     multiple of 4
+--
+-- -   #VUID-vkCmdTraceRaysNV-None-11301# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' backed by physical
+--     memory at every offset specified by each mapping
+--
+-- -   #VUID-vkCmdTraceRaysNV-None-11302# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdTraceRaysNV-None-11304# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a
+--     multiple of 8
+--
+-- -   #VUID-vkCmdTraceRaysNV-None-11305# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' backed by physical
+--     memory at every offset specified by each mapping
+--
+-- -   #VUID-vkCmdTraceRaysNV-None-11306# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address pointed to by the address in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdTraceRaysNV-None-11308# For each
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps descriptor heap>
+--     that is statically used by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
+--     either directly or via a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>,
+--     a valid descriptor heap /must/ be bound
+--
+-- -   #VUID-vkCmdTraceRaysNV-None-11309# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     was created as a 'Vulkan.Extensions.Handles.ShaderEXT' with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag or as part of a pipeline with the
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag, execution of this command /must/ not result in any descriptor
+--     read accessing data outside of the user range of the respective heap
+--     bound by @vkCmdBind*HeapEXT@ commands
+--
+-- -   #VUID-vkCmdTraceRaysNV-None-11372# If any stage of the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command accesses a uniform buffer or uniform
+--     texel buffer through a descriptor in the bound resource heap, that
+--     stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @uniformBuffers@, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /must/ not access values outside
+--     of the range of the descriptor specified via
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+--     when the descriptor was written
+--
+-- -   #VUID-vkCmdTraceRaysNV-None-11373# If any stage of the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command accesses a storage buffer or storage
+--     texel buffer through a descriptor in the bound resource heap, that
+--     stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @storageBuffers@, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /must/ not access values outside
+--     of the range of the descriptor specified by
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+--     when the descriptor was written
+--
+-- -   #VUID-vkCmdTraceRaysNV-None-11374# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, and any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     to the pipeline bind point used by this command accesses a uniform
+--     buffer, uniform texel buffer, storage buffer, or storage texel
+--     buffer, that shader /must/ not access values outside of the range of
+--     the buffer as specified by
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+--     when the descriptor was written
+--
+-- -   #VUID-vkCmdTraceRaysNV-pBindInfo-11375# If any
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     uses an embedded sampler via a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>,
+--     the value of @pBindInfo->reservedRangeSize@ set for
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.cmdBindSamplerHeapEXT'
+--     /must/ be greater than or equal to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minSamplerHeapReservedRangeWithEmbedded minSamplerHeapReservedRangeWithEmbedded>
+--
+-- -   #VUID-vkCmdTraceRaysNV-None-11376# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     was created as a 'Vulkan.Extensions.Handles.ShaderEXT' with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag or as part of a pipeline with the
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag, and that shader statically uses a push constant value, that
+--     value /must/ have been set by
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.cmdPushDataEXT'
+--
+-- -   #VUID-vkCmdTraceRaysNV-None-11398# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_DATA_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_DATA_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_RESOURCE_HEAP_DATA_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the access
+--     /must/ not be
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-execution-memory-access-bounds out of bounds>
+--
+-- -   #VUID-vkCmdTraceRaysNV-None-11437# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the buffer from
+--     which the address in push data was queried /must/ have been created
+--     with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdTraceRaysNV-None-11438# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a uniform buffer using that mapping, the
+--     address that the uniform buffer is mapped to /must/ have been
+--     queried from a buffer created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdTraceRaysNV-None-11441# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a uniform buffer using that mapping, the
+--     address that the uniform buffer is mapped to /must/ be aligned to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minUniformBufferOffsetAlignment minUniformBufferOffsetAlignment>
+--
+-- -   #VUID-vkCmdTraceRaysNV-None-11439# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a storage buffer using that mapping, the
+--     address that the storage buffer is mapped to /must/ have been
+--     queried from a buffer created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_STORAGE_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdTraceRaysNV-None-11442# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a storage buffer using that mapping, the
+--     address that the storage buffer is mapped to /must/ be aligned to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minStorageBufferOffsetAlignment minStorageBufferOffsetAlignment>
+--
+-- -   #VUID-vkCmdTraceRaysNV-None-11485# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses an acceleration structure using that mapping,
+--     the address that the acceleration structure is mapped to /must/ be
+--     an acceleration structure address retrieved from a
+--     'Vulkan.Extensions.Handles.AccelerationStructureKHR' object via
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.getAccelerationStructureDeviceAddressKHR'
+--     or handle retrieved from a
+--     'Vulkan.Extensions.Handles.AccelerationStructureNV' object via
+--     'getAccelerationStructureHandleNV'
+--
+-- -   #VUID-vkCmdTraceRaysNV-index-11450# If a shader uses a sampler
+--     descriptor to sample an image as a result of this command, and that
+--     sampler descriptor uses a custom border color with an index defined
+--     by
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.SamplerCustomBorderColorIndexCreateInfoEXT',
+--     the value of
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.SamplerCustomBorderColorIndexCreateInfoEXT'::@index@
+--     /must/ have been registered before this command was recorded, and
+--     still be registered during the sampling operation, with an
+--     identically defined color
+--
+-- -   #VUID-vkCmdTraceRaysNV-protectedNoFault-11455# If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, a pipeline is bound to the pipeline bind point
+--     used by this command, or a shader is bound to a shader stage used by
+--     this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     the address that the resource is mapped to /must/ have been queried
+--     from a buffer created without the
+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT'
+--     create flag set
+--
+-- -   #VUID-vkCmdTraceRaysNV-protectedNoFault-11456# If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, a pipeline is bound to the pipeline bind point
+--     used by this command, or a shader is bound to a shader stage used by
+--     this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     the address of the indirect memory /must/ have been queried from a
+--     buffer created without the
+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT'
+--     create flag set
+--
+-- -   #VUID-vkCmdTraceRaysNV-None-03429# Any shader group handle
+--     referenced by this call /must/ have been queried from the bound ray
+--     tracing pipeline
+--
+-- -   #VUID-vkCmdTraceRaysNV-None-09458# If the bound ray tracing pipeline
+--     state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR'
+--     dynamic state enabled then
+--     'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.cmdSetRayTracingPipelineStackSizeKHR'
+--     /must/ have been called in the current command buffer prior to this
+--     trace command
+--
+-- -   #VUID-vkCmdTraceRaysNV-None-11319# If a pipeline is bound to the
+--     pipeline bind point used by this command, or shader is bound to a
+--     shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     the value of the address at the expected location in shader record
+--     data /must/ be a valid address
+--
+-- -   #VUID-vkCmdTraceRaysNV-commandBuffer-04624# @commandBuffer@ /must/
+--     not be a protected command buffer
+--
+-- -   #VUID-vkCmdTraceRaysNV-maxRecursionDepth-03625# This command /must/
+--     not cause a pipeline trace ray instruction to be executed from a
+--     shader invocation with a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#ray-tracing-recursion-depth recursion depth>
+--     greater than the value of @maxRecursionDepth@ used to create the
+--     bound ray tracing pipeline
+--
+-- -   #VUID-vkCmdTraceRaysNV-raygenShaderBindingTableBuffer-04042# If
+--     @raygenShaderBindingTableBuffer@ is non-sparse then it /must/ be
+--     bound completely and contiguously to a single
+--     'Vulkan.Core10.Handles.DeviceMemory' object
+--
+-- -   #VUID-vkCmdTraceRaysNV-raygenShaderBindingOffset-02455#
+--     @raygenShaderBindingOffset@ /must/ be less than the size of
+--     @raygenShaderBindingTableBuffer@
+--
+-- -   #VUID-vkCmdTraceRaysNV-raygenShaderBindingOffset-02456#
+--     @raygenShaderBindingOffset@ /must/ be a multiple of
+--     'PhysicalDeviceRayTracingPropertiesNV'::@shaderGroupBaseAlignment@
+--
+-- -   #VUID-vkCmdTraceRaysNV-missShaderBindingTableBuffer-04043# If
+--     @missShaderBindingTableBuffer@ is non-sparse then it /must/ be bound
+--     completely and contiguously to a single
+--     'Vulkan.Core10.Handles.DeviceMemory' object
+--
+-- -   #VUID-vkCmdTraceRaysNV-missShaderBindingOffset-02457#
+--     @missShaderBindingOffset@ /must/ be less than the size of
+--     @missShaderBindingTableBuffer@
+--
+-- -   #VUID-vkCmdTraceRaysNV-missShaderBindingOffset-02458#
+--     @missShaderBindingOffset@ /must/ be a multiple of
+--     'PhysicalDeviceRayTracingPropertiesNV'::@shaderGroupBaseAlignment@
+--
+-- -   #VUID-vkCmdTraceRaysNV-hitShaderBindingTableBuffer-04044# If
+--     @hitShaderBindingTableBuffer@ is non-sparse then it /must/ be bound
+--     completely and contiguously to a single
+--     'Vulkan.Core10.Handles.DeviceMemory' object
+--
+-- -   #VUID-vkCmdTraceRaysNV-hitShaderBindingOffset-02459#
+--     @hitShaderBindingOffset@ /must/ be less than the size of
+--     @hitShaderBindingTableBuffer@
+--
+-- -   #VUID-vkCmdTraceRaysNV-hitShaderBindingOffset-02460#
+--     @hitShaderBindingOffset@ /must/ be a multiple of
+--     'PhysicalDeviceRayTracingPropertiesNV'::@shaderGroupBaseAlignment@
+--
+-- -   #VUID-vkCmdTraceRaysNV-callableShaderBindingTableBuffer-04045# If
+--     @callableShaderBindingTableBuffer@ is non-sparse then it /must/ be
+--     bound completely and contiguously to a single
+--     'Vulkan.Core10.Handles.DeviceMemory' object
+--
+-- -   #VUID-vkCmdTraceRaysNV-callableShaderBindingOffset-02461#
+--     @callableShaderBindingOffset@ /must/ be less than the size of
+--     @callableShaderBindingTableBuffer@
+--
+-- -   #VUID-vkCmdTraceRaysNV-callableShaderBindingOffset-02462#
+--     @callableShaderBindingOffset@ /must/ be a multiple of
+--     'PhysicalDeviceRayTracingPropertiesNV'::@shaderGroupBaseAlignment@
+--
+-- -   #VUID-vkCmdTraceRaysNV-missShaderBindingStride-02463#
+--     @missShaderBindingStride@ /must/ be a multiple of
+--     'PhysicalDeviceRayTracingPropertiesNV'::@shaderGroupHandleSize@
+--
+-- -   #VUID-vkCmdTraceRaysNV-hitShaderBindingStride-02464#
+--     @hitShaderBindingStride@ /must/ be a multiple of
+--     'PhysicalDeviceRayTracingPropertiesNV'::@shaderGroupHandleSize@
+--
+-- -   #VUID-vkCmdTraceRaysNV-callableShaderBindingStride-02465#
+--     @callableShaderBindingStride@ /must/ be a multiple of
+--     'PhysicalDeviceRayTracingPropertiesNV'::@shaderGroupHandleSize@
+--
+-- -   #VUID-vkCmdTraceRaysNV-missShaderBindingStride-02466#
+--     @missShaderBindingStride@ /must/ be less than or equal to
+--     'PhysicalDeviceRayTracingPropertiesNV'::@maxShaderGroupStride@
+--
+-- -   #VUID-vkCmdTraceRaysNV-hitShaderBindingStride-02467#
+--     @hitShaderBindingStride@ /must/ be less than or equal to
+--     'PhysicalDeviceRayTracingPropertiesNV'::@maxShaderGroupStride@
+--
+-- -   #VUID-vkCmdTraceRaysNV-callableShaderBindingStride-02468#
+--     @callableShaderBindingStride@ /must/ be less than or equal to
+--     'PhysicalDeviceRayTracingPropertiesNV'::@maxShaderGroupStride@
+--
+-- -   #VUID-vkCmdTraceRaysNV-width-02469# @width@ /must/ be less than or
+--     equal to
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[0]
+--
+-- -   #VUID-vkCmdTraceRaysNV-height-02470# @height@ /must/ be less than or
+--     equal to
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[1]
+--
+-- -   #VUID-vkCmdTraceRaysNV-depth-02471# @depth@ /must/ be less than or
+--     equal to
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[2]
+--
+-- -   #VUID-vkCmdTraceRaysNV-allowClusterAccelerationStructure-10577# If
+--     the traced geometry contains a cluster acceleration structure, then
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkRayTracingPipelineClusterAccelerationStructureCreateInfoNV VkRayTracingPipelineClusterAccelerationStructureCreateInfoNV>::@allowClusterAccelerationStructure@
+--     /must/ have been set for that pipeline
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdTraceRaysNV-commandBuffer-parameter# @commandBuffer@
+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdTraceRaysNV-raygenShaderBindingTableBuffer-parameter#
+--     @raygenShaderBindingTableBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.Buffer' handle
+--
+-- -   #VUID-vkCmdTraceRaysNV-missShaderBindingTableBuffer-parameter# If
+--     @missShaderBindingTableBuffer@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE',
+--     @missShaderBindingTableBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.Buffer' handle
+--
+-- -   #VUID-vkCmdTraceRaysNV-hitShaderBindingTableBuffer-parameter# If
+--     @hitShaderBindingTableBuffer@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE',
+--     @hitShaderBindingTableBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.Buffer' handle
+--
+-- -   #VUID-vkCmdTraceRaysNV-callableShaderBindingTableBuffer-parameter#
+--     If @callableShaderBindingTableBuffer@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE',
+--     @callableShaderBindingTableBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.Buffer' handle
+--
+-- -   #VUID-vkCmdTraceRaysNV-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-vkCmdTraceRaysNV-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT' operations
+--
+-- -   #VUID-vkCmdTraceRaysNV-renderpass# This command /must/ only be
+--     called outside of a render pass instance
+--
+-- -   #VUID-vkCmdTraceRaysNV-suspended# This command /must/ not be called
+--     between suspended render pass instances
+--
+-- -   #VUID-vkCmdTraceRaysNV-videocoding# This command /must/ only be
+--     called outside of a video coding scope
+--
+-- -   #VUID-vkCmdTraceRaysNV-commonparent# Each of
+--     @callableShaderBindingTableBuffer@, @commandBuffer@,
+--     @hitShaderBindingTableBuffer@, @missShaderBindingTableBuffer@, and
+--     @raygenShaderBindingTableBuffer@ 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#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdTraceRaysNV is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>,
+-- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize'
+cmdTraceRaysNV :: forall io
+                . (MonadIO io)
+               => -- | @commandBuffer@ is the command buffer into which the command will be
+                  -- recorded.
+                  CommandBuffer
+               -> -- | @raygenShaderBindingTableBuffer@ is the buffer object that holds the
+                  -- shader binding table data for the ray generation shader stage.
+                  ("raygenShaderBindingTableBuffer" ::: Buffer)
+               -> -- | @raygenShaderBindingOffset@ is the offset in bytes (relative to
+                  -- @raygenShaderBindingTableBuffer@) of the ray generation shader being
+                  -- used for the trace.
+                  ("raygenShaderBindingOffset" ::: DeviceSize)
+               -> -- | @missShaderBindingTableBuffer@ is the buffer object that holds the
+                  -- shader binding table data for the miss shader stage.
+                  ("missShaderBindingTableBuffer" ::: Buffer)
+               -> -- | @missShaderBindingOffset@ is the offset in bytes (relative to
+                  -- @missShaderBindingTableBuffer@) of the miss shader being used for the
+                  -- trace.
+                  ("missShaderBindingOffset" ::: DeviceSize)
+               -> -- | @missShaderBindingStride@ is the size in bytes of each shader binding
+                  -- table record in @missShaderBindingTableBuffer@.
+                  ("missShaderBindingStride" ::: DeviceSize)
+               -> -- | @hitShaderBindingTableBuffer@ is the buffer object that holds the shader
+                  -- binding table data for the hit shader stages.
+                  ("hitShaderBindingTableBuffer" ::: Buffer)
+               -> -- | @hitShaderBindingOffset@ is the offset in bytes (relative to
+                  -- @hitShaderBindingTableBuffer@) of the hit shader group being used for
+                  -- the trace.
+                  ("hitShaderBindingOffset" ::: DeviceSize)
+               -> -- | @hitShaderBindingStride@ is the size in bytes of each shader binding
+                  -- table record in @hitShaderBindingTableBuffer@.
+                  ("hitShaderBindingStride" ::: DeviceSize)
+               -> -- | @callableShaderBindingTableBuffer@ is the buffer object that holds the
+                  -- shader binding table data for the callable shader stage.
+                  ("callableShaderBindingTableBuffer" ::: Buffer)
+               -> -- | @callableShaderBindingOffset@ is the offset in bytes (relative to
+                  -- @callableShaderBindingTableBuffer@) of the callable shader being used
+                  -- for the trace.
+                  ("callableShaderBindingOffset" ::: DeviceSize)
+               -> -- | @callableShaderBindingStride@ is the size in bytes of each shader
+                  -- binding table record in @callableShaderBindingTableBuffer@.
+                  ("callableShaderBindingStride" ::: DeviceSize)
+               -> -- | @width@ is the width of the ray trace query dimensions.
+                  ("width" ::: Word32)
+               -> -- | @height@ is height of the ray trace query dimensions.
+                  ("height" ::: Word32)
+               -> -- | @depth@ is depth of the ray trace query dimensions.
+                  ("depth" ::: Word32)
+               -> io ()
+cmdTraceRaysNV commandBuffer
+                 raygenShaderBindingTableBuffer
+                 raygenShaderBindingOffset
+                 missShaderBindingTableBuffer
+                 missShaderBindingOffset
+                 missShaderBindingStride
+                 hitShaderBindingTableBuffer
+                 hitShaderBindingOffset
+                 hitShaderBindingStride
+                 callableShaderBindingTableBuffer
+                 callableShaderBindingOffset
+                 callableShaderBindingStride
+                 width
+                 height
+                 depth = liftIO $ do
+  let vkCmdTraceRaysNVPtr = pVkCmdTraceRaysNV (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  unless (vkCmdTraceRaysNVPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdTraceRaysNV is null" Nothing Nothing
+  let vkCmdTraceRaysNV' = mkVkCmdTraceRaysNV vkCmdTraceRaysNVPtr
+  traceAroundEvent "vkCmdTraceRaysNV" (vkCmdTraceRaysNV'
+                                         (commandBufferHandle (commandBuffer))
+                                         (raygenShaderBindingTableBuffer)
+                                         (raygenShaderBindingOffset)
+                                         (missShaderBindingTableBuffer)
+                                         (missShaderBindingOffset)
+                                         (missShaderBindingStride)
+                                         (hitShaderBindingTableBuffer)
+                                         (hitShaderBindingOffset)
+                                         (hitShaderBindingStride)
+                                         (callableShaderBindingTableBuffer)
+                                         (callableShaderBindingOffset)
+                                         (callableShaderBindingStride)
+                                         (width)
+                                         (height)
+                                         (depth))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetAccelerationStructureHandleNV
+  :: FunPtr (Ptr Device_T -> AccelerationStructureNV -> CSize -> Ptr () -> IO Result) -> Ptr Device_T -> AccelerationStructureNV -> CSize -> Ptr () -> IO Result
+
+-- | vkGetAccelerationStructureHandleNV - Get opaque acceleration structure
+-- 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_DEVICE_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>,
+-- 'Vulkan.Extensions.Handles.AccelerationStructureNV',
+-- 'Vulkan.Core10.Handles.Device'
+getAccelerationStructureHandleNV :: forall io
+                                  . (MonadIO io)
+                                 => -- | @device@ is the logical device that owns the acceleration structures.
+                                    --
+                                    -- #VUID-vkGetAccelerationStructureHandleNV-device-parameter# @device@
+                                    -- /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+                                    Device
+                                 -> -- | @accelerationStructure@ is the acceleration structure.
+                                    --
+                                    -- #VUID-vkGetAccelerationStructureHandleNV-accelerationStructure-02787#
+                                    -- @accelerationStructure@ /must/ be bound completely and contiguously to a
+                                    -- single 'Vulkan.Core10.Handles.DeviceMemory' object via
+                                    -- 'bindAccelerationStructureMemoryNV'
+                                    --
+                                    -- #VUID-vkGetAccelerationStructureHandleNV-accelerationStructure-parameter#
+                                    -- @accelerationStructure@ /must/ be a valid
+                                    -- 'Vulkan.Extensions.Handles.AccelerationStructureNV' handle
+                                    --
+                                    -- #VUID-vkGetAccelerationStructureHandleNV-accelerationStructure-parent#
+                                    -- @accelerationStructure@ /must/ have been created, allocated, or
+                                    -- retrieved from @device@
+                                    AccelerationStructureNV
+                                 -> -- | @dataSize@ is the size in bytes of the buffer pointed to by @pData@.
+                                    --
+                                    -- #VUID-vkGetAccelerationStructureHandleNV-dataSize-02240# @dataSize@
+                                    -- /must/ be large enough to contain the result of the query, as described
+                                    -- above
+                                    --
+                                    -- #VUID-vkGetAccelerationStructureHandleNV-dataSize-arraylength#
+                                    -- @dataSize@ /must/ be greater than @0@
+                                    ("dataSize" ::: Word64)
+                                 -> -- | @pData@ is a pointer to an application-allocated buffer where the
+                                    -- results will be written.
+                                    --
+                                    -- #VUID-vkGetAccelerationStructureHandleNV-pData-parameter# @pData@ /must/
+                                    -- be a valid pointer to an array of @dataSize@ bytes
+                                    ("data" ::: Ptr ())
+                                 -> io ()
+getAccelerationStructureHandleNV device
+                                   accelerationStructure
+                                   dataSize
+                                   data' = liftIO $ do
+  let vkGetAccelerationStructureHandleNVPtr = pVkGetAccelerationStructureHandleNV (case device of Device{deviceCmds} -> deviceCmds)
+  unless (vkGetAccelerationStructureHandleNVPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetAccelerationStructureHandleNV is null" Nothing Nothing
+  let vkGetAccelerationStructureHandleNV' = mkVkGetAccelerationStructureHandleNV vkGetAccelerationStructureHandleNVPtr
+  r <- traceAroundEvent "vkGetAccelerationStructureHandleNV" (vkGetAccelerationStructureHandleNV'
+                                                                (deviceHandle (device))
+                                                                (accelerationStructure)
+                                                                (CSize (dataSize))
+                                                                (data'))
+  when (r < SUCCESS) (throwIO (VulkanException r))
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCreateRayTracingPipelinesNV
+  :: FunPtr (Ptr Device_T -> PipelineCache -> Word32 -> Ptr (SomeStruct RayTracingPipelineCreateInfoNV) -> Ptr AllocationCallbacks -> Ptr Pipeline -> IO Result) -> Ptr Device_T -> PipelineCache -> Word32 -> Ptr (SomeStruct RayTracingPipelineCreateInfoNV) -> Ptr AllocationCallbacks -> Ptr Pipeline -> IO Result
+
+-- | vkCreateRayTracingPipelinesNV - Creates a new ray tracing pipeline
+-- object
+--
+-- = Description
+--
+-- Pipelines are created and returned as described for
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-multiple Multiple Pipeline Creation>.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCreateRayTracingPipelinesNV-device-09677# @device@ /must/
+--     support at least one queue family with the
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT' capability
+--
+-- -   #VUID-vkCreateRayTracingPipelinesNV-flags-03415# If the @flags@
+--     member of any element of @pCreateInfos@ contains the
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'
+--     flag, and the @basePipelineIndex@ member of that same element is not
+--     @-1@, @basePipelineIndex@ /must/ be less than the index into
+--     @pCreateInfos@ that corresponds to that element
+--
+-- -   #VUID-vkCreateRayTracingPipelinesNV-flags-03416# If the @flags@
+--     member of any element of @pCreateInfos@ contains the
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'
+--     flag, the base pipeline /must/ have been created with the
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT'
+--     flag set
+--
+-- -   #VUID-vkCreateRayTracingPipelinesNV-flags-03816# @flags@ /must/ not
+--     contain the
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DISPATCH_BASE_BIT'
+--     flag
+--
+-- -   #VUID-vkCreateRayTracingPipelinesNV-pipelineCache-02903# If
+--     @pipelineCache@ was created with
+--     '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>
+--
+-- -   #VUID-vkCreateRayTracingPipelinesNV-pNext-09616# If
+--     'Vulkan.Extensions.VK_KHR_pipeline_binary.PipelineBinaryInfoKHR'::@binaryCount@
+--     is not @0@ for any element of @pCreateInfos@, @pipelineCache@ /must/
+--     be 'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-vkCreateRayTracingPipelinesNV-pNext-09617# If a
+--     'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlags2CreateInfoKHR'
+--     structure with the
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR'
+--     flag set is included in the @pNext@ chain of any element of
+--     @pCreateInfos@, @pipelineCache@ /must/ be
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-vkCreateRayTracingPipelinesNV-binaryCount-09620# If
+--     'Vulkan.Extensions.VK_KHR_pipeline_binary.PipelineBinaryInfoKHR'::@binaryCount@
+--     is not @0@ for any element of @pCreateInfos@,
+--     'Vulkan.Core13.Enums.PipelineCreationFeedbackFlagBits.PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT'
+--     /must/ not be set in the @flags@ of that element
+--
+-- -   #VUID-vkCreateRayTracingPipelinesNV-binaryCount-09621# If
+--     'Vulkan.Extensions.VK_KHR_pipeline_binary.PipelineBinaryInfoKHR'::@binaryCount@
+--     is not @0@ for any element of @pCreateInfos@,
+--     'Vulkan.Core13.Enums.PipelineCreationFeedbackFlagBits.PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT'
+--     /must/ not be set in the @flags@ of that element
+--
+-- -   #VUID-vkCreateRayTracingPipelinesNV-binaryCount-09622# If
+--     'Vulkan.Extensions.VK_KHR_pipeline_binary.PipelineBinaryInfoKHR'::@binaryCount@
+--     is not @0@ for any element of @pCreateInfos@,
+--     'Vulkan.Extensions.VK_EXT_pipeline_creation_cache_control.PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT'
+--     /must/ not be set in the @flags@ of that element
+--
+-- -   #VUID-vkCreateRayTracingPipelinesNV-pCreateInfos-11414# If any
+--     element of @pCreateInfos@ sets
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT'
+--     and includes embedded sampler mappings, there /must/ be less than
+--     (<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxSamplerAllocationCount maxSamplerAllocationCount>
+--     -
+--     (<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minSamplerHeapReservedRangeWithEmbedded minSamplerHeapReservedRangeWithEmbedded>
+--     \/
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-samplerDescriptorSize samplerDescriptorSize>))
+--     'Vulkan.Core10.Handles.Sampler' objects currently created on the
+--     device
+--
+-- -   #VUID-vkCreateRayTracingPipelinesNV-pCreateInfos-11429# If any
+--     element of @pCreateInfos@ sets
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT'
+--     and includes embedded sampler mappings, this command /must/ not
+--     cause the total number of unique embedded samplers in pipelines and
+--     shaders on this device to exceed
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxDescriptorHeapEmbeddedSamplers maxDescriptorHeapEmbeddedSamplers>
+--
+-- -   #VUID-vkCreateRayTracingPipelinesNV-pNext-10150# If a
+--     'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlags2CreateInfoKHR'
+--     structure is included in the @pNext@ chain of any element of
+--     @pCreateInfos@,
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR'
+--     flag /must/ not be set
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCreateRayTracingPipelinesNV-device-parameter# @device@
+--     /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkCreateRayTracingPipelinesNV-pipelineCache-parameter# If
+--     @pipelineCache@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
+--     @pipelineCache@ /must/ be a valid
+--     'Vulkan.Core10.Handles.PipelineCache' handle
+--
+-- -   #VUID-vkCreateRayTracingPipelinesNV-pCreateInfos-parameter#
+--     @pCreateInfos@ /must/ be a valid pointer to an array of
+--     @createInfoCount@ valid 'RayTracingPipelineCreateInfoNV' structures
+--
+-- -   #VUID-vkCreateRayTracingPipelinesNV-pAllocator-parameter# If
+--     @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid pointer
+--     to a valid 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'
+--     structure
+--
+-- -   #VUID-vkCreateRayTracingPipelinesNV-pPipelines-parameter#
+--     @pPipelines@ /must/ be a valid pointer to an array of
+--     @createInfoCount@ 'Vulkan.Core10.Handles.Pipeline' handles
+--
+-- -   #VUID-vkCreateRayTracingPipelinesNV-createInfoCount-arraylength#
+--     @createInfoCount@ /must/ be greater than @0@
+--
+-- -   #VUID-vkCreateRayTracingPipelinesNV-pipelineCache-parent# If
+--     @pipelineCache@ is a valid handle, it /must/ have been created,
+--     allocated, or retrieved from @device@
+--
+-- == Return Codes
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
+--
+--     -   'Vulkan.Extensions.VK_EXT_pipeline_creation_cache_control.PIPELINE_COMPILE_REQUIRED_EXT'
+--
+--     -   '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_INVALID_SHADER_NV'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>,
+-- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',
+-- 'Vulkan.Core10.Handles.Device', 'Vulkan.Core10.Handles.Pipeline',
+-- 'Vulkan.Core10.Handles.PipelineCache', 'RayTracingPipelineCreateInfoNV'
+createRayTracingPipelinesNV :: forall io
+                             . (MonadIO io)
+                            => -- | @device@ is the logical device that creates the ray tracing pipelines.
+                               Device
+                            -> -- | @pipelineCache@ is either 'Vulkan.Core10.APIConstants.NULL_HANDLE',
+                               -- indicating that pipeline caching is disabled, or to enable caching, the
+                               -- handle of a valid 'Vulkan.Core10.Handles.PipelineCache' object. The
+                               -- implementation /must/ not access this object outside of the duration of
+                               -- this command.
+                               PipelineCache
+                            -> -- | @pCreateInfos@ is a pointer to an array of
+                               -- 'RayTracingPipelineCreateInfoNV' structures.
+                               ("createInfos" ::: Vector (SomeStruct RayTracingPipelineCreateInfoNV))
+                            -> -- | @pAllocator@ controls host memory allocation as described in the
+                               -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>
+                               -- chapter.
+                               ("allocator" ::: Maybe AllocationCallbacks)
+                            -> io (Result, ("pipelines" ::: Vector Pipeline))
+createRayTracingPipelinesNV device
+                              pipelineCache
+                              createInfos
+                              allocator = liftIO . evalContT $ do
+  let vkCreateRayTracingPipelinesNVPtr = pVkCreateRayTracingPipelinesNV (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCreateRayTracingPipelinesNVPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCreateRayTracingPipelinesNV is null" Nothing Nothing
+  let vkCreateRayTracingPipelinesNV' = mkVkCreateRayTracingPipelinesNV vkCreateRayTracingPipelinesNVPtr
+  pPCreateInfos <- ContT $ allocaBytes @(RayTracingPipelineCreateInfoNV _) ((Data.Vector.length (createInfos)) * 80)
+  Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPCreateInfos `plusPtr` (80 * (i)) :: Ptr (RayTracingPipelineCreateInfoNV _))) (e) . ($ ())) (createInfos)
+  pAllocator <- case (allocator) of
+    Nothing -> pure nullPtr
+    Just j -> ContT $ withCStruct (j)
+  pPPipelines <- ContT $ bracket (callocBytes @Pipeline ((fromIntegral ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32))) * 8)) free
+  r <- lift $ traceAroundEvent "vkCreateRayTracingPipelinesNV" (vkCreateRayTracingPipelinesNV'
+                                                                  (deviceHandle (device))
+                                                                  (pipelineCache)
+                                                                  ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32))
+                                                                  (forgetExtensions (pPCreateInfos))
+                                                                  pAllocator
+                                                                  (pPPipelines))
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+  pPipelines <- lift $ generateM (fromIntegral ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32))) (\i -> peek @Pipeline ((pPPipelines `advancePtrBytes` (8 * (i)) :: Ptr Pipeline)))
+  pure $ (r, pPipelines)
+
+-- | A convenience wrapper to make a compatible pair of calls to
+-- 'createRayTracingPipelinesNV' and 'destroyPipeline'
+--
+-- To ensure that 'destroyPipeline' 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.
+--
+withRayTracingPipelinesNV :: forall io r . MonadIO io => Device -> PipelineCache -> Vector (SomeStruct RayTracingPipelineCreateInfoNV) -> Maybe AllocationCallbacks -> (io (Result, Vector Pipeline) -> ((Result, Vector Pipeline) -> io ()) -> r) -> r
+withRayTracingPipelinesNV device pipelineCache pCreateInfos pAllocator b =
+  b (createRayTracingPipelinesNV device pipelineCache pCreateInfos pAllocator)
+    (\(_, o1) -> traverse_ (\o1Elem -> destroyPipeline device
+                                                         o1Elem
+                                                         pAllocator) o1)
+
+
+-- No documentation found for TopLevel "VK_SHADER_UNUSED_NV"
+pattern SHADER_UNUSED_NV = SHADER_UNUSED_KHR
+
+
+-- No documentation found for TopLevel "VK_SHADER_STAGE_RAYGEN_BIT_NV"
+pattern SHADER_STAGE_RAYGEN_BIT_NV = SHADER_STAGE_RAYGEN_BIT_KHR
+
+
+-- No documentation found for TopLevel "VK_SHADER_STAGE_ANY_HIT_BIT_NV"
+pattern SHADER_STAGE_ANY_HIT_BIT_NV = SHADER_STAGE_ANY_HIT_BIT_KHR
+
+
+-- No documentation found for TopLevel "VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV"
+pattern SHADER_STAGE_CLOSEST_HIT_BIT_NV = SHADER_STAGE_CLOSEST_HIT_BIT_KHR
+
+
+-- No documentation found for TopLevel "VK_SHADER_STAGE_MISS_BIT_NV"
+pattern SHADER_STAGE_MISS_BIT_NV = SHADER_STAGE_MISS_BIT_KHR
+
+
+-- No documentation found for TopLevel "VK_SHADER_STAGE_INTERSECTION_BIT_NV"
+pattern SHADER_STAGE_INTERSECTION_BIT_NV = SHADER_STAGE_INTERSECTION_BIT_KHR
+
+
+-- No documentation found for TopLevel "VK_SHADER_STAGE_CALLABLE_BIT_NV"
+pattern SHADER_STAGE_CALLABLE_BIT_NV = SHADER_STAGE_CALLABLE_BIT_KHR
+
+
+-- No documentation found for TopLevel "VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV"
+pattern PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV = PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR
+
+
+-- No documentation found for TopLevel "VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV"
+pattern PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV = PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR
+
+
+-- No documentation found for TopLevel "VK_BUFFER_USAGE_RAY_TRACING_BIT_NV"
+pattern BUFFER_USAGE_RAY_TRACING_BIT_NV = BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR
+
+
+-- No documentation found for TopLevel "VK_PIPELINE_BIND_POINT_RAY_TRACING_NV"
+pattern PIPELINE_BIND_POINT_RAY_TRACING_NV = PIPELINE_BIND_POINT_RAY_TRACING_KHR
+
+
+-- No documentation found for TopLevel "VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV"
+pattern ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV = ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR
+
+
+-- No documentation found for TopLevel "VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV"
+pattern ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV = ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR
+
+
+-- No documentation found for TopLevel "VK_INDEX_TYPE_NONE_NV"
+pattern INDEX_TYPE_NONE_NV = INDEX_TYPE_NONE_KHR
+
+
+-- No documentation found for TopLevel "VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV"
+pattern RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV = RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR
+
+
+-- No documentation found for TopLevel "VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV"
+pattern RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV = RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR
+
+
+-- No documentation found for TopLevel "VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV"
+pattern RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV = RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR
+
+
+-- No documentation found for TopLevel "VK_GEOMETRY_TYPE_TRIANGLES_NV"
+pattern GEOMETRY_TYPE_TRIANGLES_NV = GEOMETRY_TYPE_TRIANGLES_KHR
+
+
+-- No documentation found for TopLevel "VK_GEOMETRY_TYPE_AABBS_NV"
+pattern GEOMETRY_TYPE_AABBS_NV = GEOMETRY_TYPE_AABBS_KHR
+
+
+-- No documentation found for TopLevel "VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV"
+pattern ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV = ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR
+
+
+-- No documentation found for TopLevel "VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV"
+pattern ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV = ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR
+
+
+-- No documentation found for TopLevel "VK_GEOMETRY_OPAQUE_BIT_NV"
+pattern GEOMETRY_OPAQUE_BIT_NV = GEOMETRY_OPAQUE_BIT_KHR
+
+
+-- No documentation found for TopLevel "VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV"
+pattern GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV = GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR
+
+
+-- No documentation found for TopLevel "VK_GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV"
+pattern GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV = GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR
+
+
+-- No documentation found for TopLevel "VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV"
+pattern GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV = GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR
+
+
+-- No documentation found for TopLevel "VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV"
+pattern GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV = GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR
+
+
+-- No documentation found for TopLevel "VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV"
+pattern GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV = GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR
+
+
+-- No documentation found for TopLevel "VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV"
+pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV = BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR
+
+
+-- No documentation found for TopLevel "VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV"
+pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV = BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR
+
+
+-- No documentation found for TopLevel "VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV"
+pattern BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV = BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR
+
+
+-- No documentation found for TopLevel "VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV"
+pattern BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV = BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR
+
+
+-- No documentation found for TopLevel "VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV"
+pattern BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV = BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR
+
+
+-- No documentation found for TopLevel "VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV"
+pattern COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV = COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR
+
+
+-- No documentation found for TopLevel "VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV"
+pattern COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV = COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR
+
+
+-- No documentation found for TopLevel "vkGetRayTracingShaderGroupHandlesNV"
+getRayTracingShaderGroupHandlesNV = getRayTracingShaderGroupHandlesKHR
+
+
+-- | VkRayTracingShaderGroupCreateInfoNV - Structure specifying shaders in a
+-- shader group
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkRayTracingShaderGroupCreateInfoNV-type-02413# If @type@ is
+--     'RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV' then @generalShader@
+--     /must/ be a valid index into
+--     'RayTracingPipelineCreateInfoNV'::@pStages@ referring to a shader of
+--     'SHADER_STAGE_RAYGEN_BIT_NV', 'SHADER_STAGE_MISS_BIT_NV', or
+--     'SHADER_STAGE_CALLABLE_BIT_NV'
+--
+-- -   #VUID-VkRayTracingShaderGroupCreateInfoNV-type-02414# If @type@ is
+--     'RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV' then @closestHitShader@,
+--     @anyHitShader@, and @intersectionShader@ /must/ be
+--     'SHADER_UNUSED_NV'
+--
+-- -   #VUID-VkRayTracingShaderGroupCreateInfoNV-type-02415# If @type@ is
+--     'RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV' then
+--     @intersectionShader@ /must/ be a valid index into
+--     'RayTracingPipelineCreateInfoNV'::@pStages@ referring to a shader of
+--     'SHADER_STAGE_INTERSECTION_BIT_NV'
+--
+-- -   #VUID-VkRayTracingShaderGroupCreateInfoNV-type-02416# If @type@ is
+--     'RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV' then
+--     @intersectionShader@ /must/ be 'SHADER_UNUSED_NV'
+--
+-- -   #VUID-VkRayTracingShaderGroupCreateInfoNV-closestHitShader-02417#
+--     @closestHitShader@ /must/ be either 'SHADER_UNUSED_NV' or a valid
+--     index into 'RayTracingPipelineCreateInfoNV'::@pStages@ referring to
+--     a shader of 'SHADER_STAGE_CLOSEST_HIT_BIT_NV'
+--
+-- -   #VUID-VkRayTracingShaderGroupCreateInfoNV-anyHitShader-02418#
+--     @anyHitShader@ /must/ be either 'SHADER_UNUSED_NV' or a valid index
+--     into 'RayTracingPipelineCreateInfoNV'::@pStages@ referring to a
+--     shader of 'SHADER_STAGE_ANY_HIT_BIT_NV'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkRayTracingShaderGroupCreateInfoNV-sType-sType# @sType@
+--     /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV'
+--
+-- -   #VUID-VkRayTracingShaderGroupCreateInfoNV-pNext-pNext# @pNext@
+--     /must/ be @NULL@
+--
+-- -   #VUID-VkRayTracingShaderGroupCreateInfoNV-type-parameter# @type@
+--     /must/ be a valid
+--     'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingShaderGroupTypeKHR'
+--     value
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>,
+-- 'RayTracingPipelineCreateInfoNV',
+-- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingShaderGroupTypeKHR',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data RayTracingShaderGroupCreateInfoNV = RayTracingShaderGroupCreateInfoNV
+  { -- | @type@ is the type of hit group specified in this structure.
+    type' :: RayTracingShaderGroupTypeKHR
+  , -- | @generalShader@ is the index of the ray generation, miss, or callable
+    -- shader from 'RayTracingPipelineCreateInfoNV'::@pStages@ in the group if
+    -- the shader group has @type@ of
+    -- 'RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV', and 'SHADER_UNUSED_NV'
+    -- otherwise.
+    generalShader :: Word32
+  , -- | @closestHitShader@ is the optional index of the closest hit shader from
+    -- 'RayTracingPipelineCreateInfoNV'::@pStages@ in the group if the shader
+    -- group has @type@ of
+    -- 'RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV' or
+    -- 'RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV', and
+    -- 'SHADER_UNUSED_NV' otherwise.
+    closestHitShader :: Word32
+  , -- | @anyHitShader@ is the optional index of the any-hit shader from
+    -- 'RayTracingPipelineCreateInfoNV'::@pStages@ in the group if the shader
+    -- group has @type@ of
+    -- 'RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV' or
+    -- 'RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV', and
+    -- 'SHADER_UNUSED_NV' otherwise.
+    anyHitShader :: Word32
+  , -- | @intersectionShader@ is the index of the intersection shader from
+    -- 'RayTracingPipelineCreateInfoNV'::@pStages@ in the group if the shader
+    -- group has @type@ of
+    -- 'RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV', and
+    -- 'SHADER_UNUSED_NV' otherwise.
+    intersectionShader :: Word32
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (RayTracingShaderGroupCreateInfoNV)
+#endif
+deriving instance Show RayTracingShaderGroupCreateInfoNV
+
+instance ToCStruct RayTracingShaderGroupCreateInfoNV where
+  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p RayTracingShaderGroupCreateInfoNV{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr RayTracingShaderGroupTypeKHR)) (type')
+    poke ((p `plusPtr` 20 :: Ptr Word32)) (generalShader)
+    poke ((p `plusPtr` 24 :: Ptr Word32)) (closestHitShader)
+    poke ((p `plusPtr` 28 :: Ptr Word32)) (anyHitShader)
+    poke ((p `plusPtr` 32 :: Ptr Word32)) (intersectionShader)
+    f
+  cStructSize = 40
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr RayTracingShaderGroupTypeKHR)) (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 RayTracingShaderGroupCreateInfoNV where
+  peekCStruct p = do
+    type' <- peek @RayTracingShaderGroupTypeKHR ((p `plusPtr` 16 :: Ptr RayTracingShaderGroupTypeKHR))
+    generalShader <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
+    closestHitShader <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))
+    anyHitShader <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))
+    intersectionShader <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))
+    pure $ RayTracingShaderGroupCreateInfoNV
+             type'
+             generalShader
+             closestHitShader
+             anyHitShader
+             intersectionShader
+
+instance Storable RayTracingShaderGroupCreateInfoNV where
+  sizeOf ~_ = 40
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero RayTracingShaderGroupCreateInfoNV where
+  zero = RayTracingShaderGroupCreateInfoNV
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkRayTracingPipelineCreateInfoNV - Structure specifying parameters of a
+-- newly created ray tracing pipeline
+--
+-- = Description
+--
+-- The parameters @basePipelineHandle@ and @basePipelineIndex@ are
+-- described in more detail in
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-pipeline-derivatives Pipeline Derivatives>.
+--
+-- If the @pNext@ chain includes a
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.PipelineCreateFlags2CreateInfo'
+-- structure,
+-- 'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.PipelineCreateFlags2CreateInfo'::@flags@
+-- from that structure is used instead of @flags@ from this structure.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-None-09497# If the @pNext@
+--     chain does not include a
+--     'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5.PipelineCreateFlags2CreateInfo'
+--     structure, @flags@ /must/ be a valid combination of
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits'
+--     values
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-flags-07984# If @flags@
+--     contains the
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'
+--     flag, and @basePipelineIndex@ is -1, @basePipelineHandle@ /must/ be
+--     a valid ray tracing 'Vulkan.Core10.Handles.Pipeline' handle
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-flags-07985# If @flags@
+--     contains the
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'
+--     flag, and @basePipelineHandle@ is
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', @basePipelineIndex@ /must/
+--     be a valid index into the calling command’s @pCreateInfos@ parameter
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-flags-07986# If @flags@
+--     contains the
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'
+--     flag, @basePipelineIndex@ /must/ be -1 or @basePipelineHandle@
+--     /must/ be 'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-layout-07987# If a push
+--     constant block is declared in a shader and @layout@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', a push constant range in
+--     @layout@ /must/ match the shader stage
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-layout-10069# If a push
+--     constant block is declared in a shader and @layout@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', the block must be
+--     contained inside the push constant range in @layout@ that matches
+--     the stage
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-layout-07988# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-resources resource variable>
+--     is declared in a shader and @layout@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', the corresponding
+--     descriptor set in @layout@ /must/ match the shader stage
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-layout-07990# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-resources resource variable>
+--     is declared in a shader, @layout@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the descriptor type is
+--     not
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_MUTABLE_EXT',
+--     the corresponding descriptor set in @layout@ /must/ match the
+--     descriptor type
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-layout-07991# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-resources resource variable>
+--     is declared in a shader as an array and @layout@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', the corresponding
+--     descriptor binding used to create @layout@ /must/ have a
+--     @descriptorCount@ that is greater than or equal to the length of the
+--     array
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-None-10391# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-resources resource variables>
+--     is declared in a shader as an array of descriptors, then the
+--     descriptor type of that variable /must/ not be
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK'
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-flags-11798# If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shader64BitIndexing shader64BitIndexing>
+--     feature is not enabled, @flags@ /must/ not contain
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_64_BIT_INDEXING_BIT_EXT'
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-pipelineCreationCacheControl-02878#
+--     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'
+--     nor
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT'
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-pipelineProtectedAccess-07368#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineProtectedAccess pipelineProtectedAccess>
+--     feature is not enabled, @flags@ /must/ not include
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT'
+--     nor
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT'
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-flags-07369# @flags@ /must/
+--     not include both
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT'
+--     and
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT'
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-flags-11311# If
+--     'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlags2CreateInfoKHR'::@flags@
+--     includes
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT',
+--     @layout@ /must/ be 'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-flags-11312# If
+--     'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlags2CreateInfoKHR'::@flags@
+--     includes
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT',
+--     all shader variables in the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-resources shader resource interface>
+--     with a 'Vulkan.Core10.Handles.DescriptorSet' and @Binding@
+--     decoration /must/ have a mapping declared in
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.ShaderDescriptorSetAndBindingMappingInfoEXT'::@pMappings@
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-pStages-03426# The shader
+--     code for the entry points identified by @pStages@, and the rest of
+--     the state identified by this structure /must/ adhere to the pipeline
+--     linking rules described in the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces Shader Interfaces>
+--     chapter
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-layout-03428# The number of
+--     resources in @layout@ accessible to each shader stage that is used
+--     by the pipeline /must/ be less than or equal to
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxPerStageResources@
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-flags-02904# @flags@ /must/
+--     not include
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV'
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-flags-12341# @flags@ /must/
+--     not include
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT'
+--     nor
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT'
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-layout-12402# If @layout@ is
+--     not 'Vulkan.Core10.APIConstants.NULL_HANDLE', it /must/ not have
+--     been created with
+--     'Vulkan.Core10.Enums.PipelineLayoutCreateFlagBits.PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT'
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-stage-06232# The @stage@
+--     member of at least one element of @pStages@ /must/ be
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_RAYGEN_BIT_KHR'
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-flags-03456# @flags@ /must/
+--     not include
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR'
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-maxRecursionDepth-03457#
+--     @maxRecursionDepth@ /must/ be less than or equal to
+--     'PhysicalDeviceRayTracingPropertiesNV'::@maxRecursionDepth@
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-flags-03458# @flags@ /must/
+--     not include
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR'
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-flags-03459# @flags@ /must/
+--     not include
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR'
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-flags-03460# @flags@ /must/
+--     not include
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR'
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-flags-03461# @flags@ /must/
+--     not include
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR'
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-flags-03462# @flags@ /must/
+--     not include
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR'
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-flags-03463# @flags@ /must/
+--     not include
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR'
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-flags-03588# @flags@ /must/
+--     not include
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR'
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-flags-04948# @flags@ /must/
+--     not include
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV'
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-flags-02957# @flags@ /must/
+--     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'
+--     at the same time
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-pipelineStageCreationFeedbackCount-06651#
+--     If
+--     'Vulkan.Core13.Promoted_From_VK_EXT_pipeline_creation_feedback.PipelineCreationFeedbackCreateInfo'::@pipelineStageCreationFeedbackCount@
+--     is not @0@, it /must/ be equal to @stageCount@
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-stage-06898# The @stage@
+--     value in all @pStages@ elements /must/ be one of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_RAYGEN_BIT_KHR',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_ANY_HIT_BIT_KHR',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_CLOSEST_HIT_BIT_KHR',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MISS_BIT_KHR',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_INTERSECTION_BIT_KHR',
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_CALLABLE_BIT_KHR'
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-flags-11596# @flags@ /must/
+--     not include any of the following bits
+--
+--     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_KHR'
+--
+--     -   'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_KHR'
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-flags-07402# @flags@ /must/
+--     not include
+--     'Vulkan.Extensions.VK_EXT_opacity_micromap.PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT'
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-flags-07998# @flags@ /must/
+--     not include
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV'
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-flags-11008# @flags@ /must/
+--     not include
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXT'
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-None-11368# If
+--     'Vulkan.Extensions.VK_KHR_maintenance5.PipelineCreateFlags2CreateInfoKHR'::@flags@
+--     does not include
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT',
+--     @layout@ /must/ not be 'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-sType-sType# @sType@ /must/
+--     be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV'
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-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.Core14.Promoted_From_VK_KHR_maintenance5.PipelineCreateFlags2CreateInfo'
+--     or
+--     'Vulkan.Core13.Promoted_From_VK_EXT_pipeline_creation_feedback.PipelineCreationFeedbackCreateInfo'
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-sType-unique# The @sType@
+--     value of each structure in the @pNext@ chain /must/ be unique
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-pStages-parameter# @pStages@
+--     /must/ be a valid pointer to an array of @stageCount@ valid
+--     'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo'
+--     structures
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-pGroups-parameter# @pGroups@
+--     /must/ be a valid pointer to an array of @groupCount@ valid
+--     'RayTracingShaderGroupCreateInfoNV' structures
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-layout-parameter# If @layout@
+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @layout@ /must/ be
+--     a valid 'Vulkan.Core10.Handles.PipelineLayout' handle
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-stageCount-arraylength#
+--     @stageCount@ /must/ be greater than @0@
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-groupCount-arraylength#
+--     @groupCount@ /must/ be greater than @0@
+--
+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-commonparent# Both of
+--     @basePipelineHandle@, and @layout@ 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_NV_ray_tracing VK_NV_ray_tracing>,
+-- 'Vulkan.Core10.Handles.Pipeline',
+-- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlags',
+-- 'Vulkan.Core10.Handles.PipelineLayout',
+-- 'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo',
+-- 'RayTracingShaderGroupCreateInfoNV',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'createRayTracingPipelinesNV'
+data RayTracingPipelineCreateInfoNV (es :: [Type]) = RayTracingPipelineCreateInfoNV
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
+    next :: Chain es
+  , -- | @flags@ is a bitmask of
+    -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits'
+    -- specifying how the pipeline will be generated.
+    flags :: PipelineCreateFlags
+  , -- | @pStages@ is a pointer to an array of
+    -- 'Vulkan.Core10.ComputePipeline.PipelineShaderStageCreateInfo' structures
+    -- specifying the set of the shader stages to be included in the ray
+    -- tracing pipeline.
+    stages :: Vector (SomeStruct PipelineShaderStageCreateInfo)
+  , -- | @pGroups@ is a pointer to an array of
+    -- 'RayTracingShaderGroupCreateInfoNV' structures describing the set of the
+    -- shader stages to be included in each shader group in the ray tracing
+    -- pipeline.
+    groups :: Vector RayTracingShaderGroupCreateInfoNV
+  , -- | @maxRecursionDepth@ is the
+    -- <https://registry.khronos.org/vulkan/specs/latest/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
+    -- pipeline and descriptor sets used with the pipeline. If
+    -- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceProperties'::@apiVersion@
+    -- is greater than or equal to Vulkan 1.3 or
+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance4 VK_KHR_maintenance4>
+    -- is enabled @layout@ /must/ not be accessed by the implementation outside
+    -- of the duration of the command this structure is passed to.
+    layout :: PipelineLayout
+  , -- | @basePipelineHandle@ is a pipeline to derive from.
+    basePipelineHandle :: Pipeline
+  , -- | @basePipelineIndex@ is an index into the @pCreateInfos@ parameter to use
+    -- as a pipeline to derive from.
+    basePipelineIndex :: Int32
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (RayTracingPipelineCreateInfoNV (es :: [Type]))
+#endif
+deriving instance Show (Chain es) => Show (RayTracingPipelineCreateInfoNV es)
+
+instance Extensible RayTracingPipelineCreateInfoNV where
+  extensibleTypeName = "RayTracingPipelineCreateInfoNV"
+  setNext RayTracingPipelineCreateInfoNV{..} next' = RayTracingPipelineCreateInfoNV{next = next', ..}
+  getNext RayTracingPipelineCreateInfoNV{..} = next
+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends RayTracingPipelineCreateInfoNV e => b) -> Maybe b
+  extends _ f
+    | Just Refl <- eqT @e @PipelineCreationFeedbackCreateInfo = Just f
+    | Just Refl <- eqT @e @PipelineCreateFlags2CreateInfo = Just f
+    | otherwise = Nothing
+
+instance ( Extendss RayTracingPipelineCreateInfoNV es
+         , PokeChain es ) => ToCStruct (RayTracingPipelineCreateInfoNV es) where
+  withCStruct x f = allocaBytes 80 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p RayTracingPipelineCreateInfoNV{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV)
+    pNext'' <- fmap castPtr . ContT $ withChain (next)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
+    lift $ poke ((p `plusPtr` 16 :: Ptr PipelineCreateFlags)) (flags)
+    lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (stages)) :: Word32))
+    pPStages' <- ContT $ allocaBytes @(PipelineShaderStageCreateInfo _) ((Data.Vector.length (stages)) * 48)
+    Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPStages' `plusPtr` (48 * (i)) :: Ptr (PipelineShaderStageCreateInfo _))) (e) . ($ ())) (stages)
+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr (PipelineShaderStageCreateInfo _)))) (pPStages')
+    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (groups)) :: Word32))
+    pPGroups' <- ContT $ allocaBytes @RayTracingShaderGroupCreateInfoNV ((Data.Vector.length (groups)) * 40)
+    lift $ Data.Vector.imapM_ (\i e -> poke (pPGroups' `plusPtr` (40 * (i)) :: Ptr RayTracingShaderGroupCreateInfoNV) (e)) (groups)
+    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr RayTracingShaderGroupCreateInfoNV))) (pPGroups')
+    lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) (maxRecursionDepth)
+    lift $ poke ((p `plusPtr` 56 :: Ptr PipelineLayout)) (layout)
+    lift $ poke ((p `plusPtr` 64 :: Ptr Pipeline)) (basePipelineHandle)
+    lift $ poke ((p `plusPtr` 72 :: Ptr Int32)) (basePipelineIndex)
+    lift $ f
+  cStructSize = 80
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV)
+    pNext' <- fmap castPtr . ContT $ withZeroChain @es
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
+    lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) (zero)
+    lift $ poke ((p `plusPtr` 72 :: Ptr Int32)) (zero)
+    lift $ f
+
+instance ( Extendss RayTracingPipelineCreateInfoNV es
+         , PeekChain es ) => FromCStruct (RayTracingPipelineCreateInfoNV es) where
+  peekCStruct p = do
+    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
+    next <- peekChain (castPtr pNext)
+    flags <- peek @PipelineCreateFlags ((p `plusPtr` 16 :: Ptr PipelineCreateFlags))
+    stageCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
+    pStages <- peek @(Ptr (PipelineShaderStageCreateInfo _)) ((p `plusPtr` 24 :: Ptr (Ptr (PipelineShaderStageCreateInfo _))))
+    pStages' <- generateM (fromIntegral stageCount) (\i -> peekSomeCStruct (forgetExtensions ((pStages `advancePtrBytes` (48 * (i)) :: Ptr (PipelineShaderStageCreateInfo _)))))
+    groupCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))
+    pGroups <- peek @(Ptr RayTracingShaderGroupCreateInfoNV) ((p `plusPtr` 40 :: Ptr (Ptr RayTracingShaderGroupCreateInfoNV)))
+    pGroups' <- generateM (fromIntegral groupCount) (\i -> peekCStruct @RayTracingShaderGroupCreateInfoNV ((pGroups `advancePtrBytes` (40 * (i)) :: Ptr RayTracingShaderGroupCreateInfoNV)))
+    maxRecursionDepth <- peek @Word32 ((p `plusPtr` 48 :: Ptr Word32))
+    layout <- peek @PipelineLayout ((p `plusPtr` 56 :: Ptr PipelineLayout))
+    basePipelineHandle <- peek @Pipeline ((p `plusPtr` 64 :: Ptr Pipeline))
+    basePipelineIndex <- peek @Int32 ((p `plusPtr` 72 :: Ptr Int32))
+    pure $ RayTracingPipelineCreateInfoNV
+             next
+             flags
+             pStages'
+             pGroups'
+             maxRecursionDepth
+             layout
+             basePipelineHandle
+             basePipelineIndex
+
+instance es ~ '[] => Zero (RayTracingPipelineCreateInfoNV es) where
+  zero = RayTracingPipelineCreateInfoNV
+           ()
+           zero
+           mempty
+           mempty
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkGeometryTrianglesNV - Structure specifying a triangle geometry in a
+-- bottom-level acceleration structure
+--
+-- = Description
+--
+-- If @indexType@ is 'INDEX_TYPE_NONE_NV', then this structure describes a
+-- set of triangles determined by @vertexCount@. Otherwise, this structure
+-- describes a set of indexed triangles determined by @indexCount@.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkGeometryTrianglesNV-vertexOffset-02428# @vertexOffset@
+--     /must/ be less than the size of @vertexData@
+--
+-- -   #VUID-VkGeometryTrianglesNV-vertexOffset-02429# @vertexOffset@
+--     /must/ be a multiple of the component size of @vertexFormat@
+--
+-- -   #VUID-VkGeometryTrianglesNV-vertexFormat-02430# @vertexFormat@
+--     /must/ be one of
+--     'Vulkan.Core10.Enums.Format.FORMAT_R32G32B32_SFLOAT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R32G32_SFLOAT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R16G16B16_SFLOAT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R16G16_SFLOAT',
+--     'Vulkan.Core10.Enums.Format.FORMAT_R16G16_SNORM', or
+--     'Vulkan.Core10.Enums.Format.FORMAT_R16G16B16_SNORM'
+--
+-- -   #VUID-VkGeometryTrianglesNV-vertexStride-03818# @vertexStride@
+--     /must/ be less than or equal to 232-1
+--
+-- -   #VUID-VkGeometryTrianglesNV-indexOffset-02431# @indexOffset@ /must/
+--     be less than the size of @indexData@
+--
+-- -   #VUID-VkGeometryTrianglesNV-indexOffset-02432# @indexOffset@ /must/
+--     be a multiple of the element size of @indexType@
+--
+-- -   #VUID-VkGeometryTrianglesNV-indexType-02433# @indexType@ /must/ be
+--     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT16',
+--     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT32', or
+--     'INDEX_TYPE_NONE_NV'
+--
+-- -   #VUID-VkGeometryTrianglesNV-indexData-02434# @indexData@ /must/ be
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' if @indexType@ is
+--     'INDEX_TYPE_NONE_NV'
+--
+-- -   #VUID-VkGeometryTrianglesNV-indexData-02435# @indexData@ /must/ be a
+--     valid 'Vulkan.Core10.Handles.Buffer' handle if @indexType@ is not
+--     'INDEX_TYPE_NONE_NV'
+--
+-- -   #VUID-VkGeometryTrianglesNV-indexCount-02436# @indexCount@ /must/ be
+--     @0@ if @indexType@ is 'INDEX_TYPE_NONE_NV'
+--
+-- -   #VUID-VkGeometryTrianglesNV-transformOffset-02437# @transformOffset@
+--     /must/ be less than the size of @transformData@
+--
+-- -   #VUID-VkGeometryTrianglesNV-transformOffset-02438# @transformOffset@
+--     /must/ be a multiple of @16@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkGeometryTrianglesNV-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV'
+--
+-- -   #VUID-VkGeometryTrianglesNV-pNext-pNext# @pNext@ /must/ be @NULL@
+--
+-- -   #VUID-VkGeometryTrianglesNV-vertexData-parameter# If @vertexData@ is
+--     not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @vertexData@ /must/ be
+--     a valid 'Vulkan.Core10.Handles.Buffer' handle
+--
+-- -   #VUID-VkGeometryTrianglesNV-vertexFormat-parameter# @vertexFormat@
+--     /must/ be a valid 'Vulkan.Core10.Enums.Format.Format' value
+--
+-- -   #VUID-VkGeometryTrianglesNV-indexData-parameter# If @indexData@ is
+--     not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @indexData@ /must/ be
+--     a valid 'Vulkan.Core10.Handles.Buffer' handle
+--
+-- -   #VUID-VkGeometryTrianglesNV-indexType-parameter# @indexType@ /must/
+--     be a valid 'Vulkan.Core10.Enums.IndexType.IndexType' value
+--
+-- -   #VUID-VkGeometryTrianglesNV-transformData-parameter# If
+--     @transformData@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
+--     @transformData@ /must/ be a valid 'Vulkan.Core10.Handles.Buffer'
+--     handle
+--
+-- -   #VUID-VkGeometryTrianglesNV-commonparent# Each of @indexData@,
+--     @transformData@, and @vertexData@ 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_NV_ray_tracing VK_NV_ray_tracing>,
+-- 'Vulkan.Core10.Handles.Buffer',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
+-- 'Vulkan.Core10.Enums.Format.Format', 'GeometryDataNV',
+-- 'Vulkan.Core10.Enums.IndexType.IndexType',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data GeometryTrianglesNV = GeometryTrianglesNV
+  { -- | @vertexData@ is the buffer containing vertex data for this geometry.
+    vertexData :: Buffer
+  , -- | @vertexOffset@ is the offset in bytes within @vertexData@ containing
+    -- vertex data for this geometry.
+    vertexOffset :: DeviceSize
+  , -- | @vertexCount@ is the number of valid vertices.
+    vertexCount :: Word32
+  , -- | @vertexStride@ is the stride in bytes between each vertex.
+    vertexStride :: DeviceSize
+  , -- | @vertexFormat@ is a 'Vulkan.Core10.Enums.Format.Format' describing the
+    -- format of each vertex element.
+    vertexFormat :: Format
+  , -- | @indexData@ is the buffer containing index data for this geometry.
+    indexData :: Buffer
+  , -- | @indexOffset@ is the offset in bytes within @indexData@ containing index
+    -- data for this geometry.
+    indexOffset :: DeviceSize
+  , -- | @indexCount@ is the number of indices to include in this geometry.
+    indexCount :: Word32
+  , -- | @indexType@ is a 'Vulkan.Core10.Enums.IndexType.IndexType' describing
+    -- the format of each index.
+    indexType :: IndexType
+  , -- | @transformData@ is an optional buffer containing an 'TransformMatrixNV'
+    -- structure defining a transformation to be applied to this geometry.
+    transformData :: Buffer
+  , -- | @transformOffset@ is the offset in bytes in @transformData@ of the
+    -- transform information described above.
+    transformOffset :: DeviceSize
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (GeometryTrianglesNV)
+#endif
+deriving instance Show GeometryTrianglesNV
+
+instance ToCStruct GeometryTrianglesNV where
+  withCStruct x f = allocaBytes 96 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p GeometryTrianglesNV{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Buffer)) (vertexData)
+    poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (vertexOffset)
+    poke ((p `plusPtr` 32 :: Ptr Word32)) (vertexCount)
+    poke ((p `plusPtr` 40 :: Ptr DeviceSize)) (vertexStride)
+    poke ((p `plusPtr` 48 :: Ptr Format)) (vertexFormat)
+    poke ((p `plusPtr` 56 :: Ptr Buffer)) (indexData)
+    poke ((p `plusPtr` 64 :: Ptr DeviceSize)) (indexOffset)
+    poke ((p `plusPtr` 72 :: Ptr Word32)) (indexCount)
+    poke ((p `plusPtr` 76 :: Ptr IndexType)) (indexType)
+    poke ((p `plusPtr` 80 :: Ptr Buffer)) (transformData)
+    poke ((p `plusPtr` 88 :: Ptr DeviceSize)) (transformOffset)
+    f
+  cStructSize = 96
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (zero)
+    poke ((p `plusPtr` 32 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 40 :: Ptr DeviceSize)) (zero)
+    poke ((p `plusPtr` 48 :: Ptr Format)) (zero)
+    poke ((p `plusPtr` 64 :: Ptr DeviceSize)) (zero)
+    poke ((p `plusPtr` 72 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 76 :: Ptr IndexType)) (zero)
+    poke ((p `plusPtr` 88 :: Ptr DeviceSize)) (zero)
+    f
+
+instance FromCStruct GeometryTrianglesNV where
+  peekCStruct p = do
+    vertexData <- peek @Buffer ((p `plusPtr` 16 :: Ptr Buffer))
+    vertexOffset <- peek @DeviceSize ((p `plusPtr` 24 :: Ptr DeviceSize))
+    vertexCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))
+    vertexStride <- peek @DeviceSize ((p `plusPtr` 40 :: Ptr DeviceSize))
+    vertexFormat <- peek @Format ((p `plusPtr` 48 :: Ptr Format))
+    indexData <- peek @Buffer ((p `plusPtr` 56 :: Ptr Buffer))
+    indexOffset <- peek @DeviceSize ((p `plusPtr` 64 :: Ptr DeviceSize))
+    indexCount <- peek @Word32 ((p `plusPtr` 72 :: Ptr Word32))
+    indexType <- peek @IndexType ((p `plusPtr` 76 :: Ptr IndexType))
+    transformData <- peek @Buffer ((p `plusPtr` 80 :: Ptr Buffer))
+    transformOffset <- peek @DeviceSize ((p `plusPtr` 88 :: Ptr DeviceSize))
+    pure $ GeometryTrianglesNV
+             vertexData
+             vertexOffset
+             vertexCount
+             vertexStride
+             vertexFormat
+             indexData
+             indexOffset
+             indexCount
+             indexType
+             transformData
+             transformOffset
+
+instance Storable GeometryTrianglesNV where
+  sizeOf ~_ = 96
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero GeometryTrianglesNV where
+  zero = GeometryTrianglesNV
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkGeometryAABBNV - Structure specifying axis-aligned bounding box
+-- geometry in a bottom-level acceleration structure
+--
+-- = Description
+--
+-- The AABB data in memory is six 32-bit floats consisting of the minimum
+-- x, y, and z values followed by the maximum x, y, and z values.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkGeometryAABBNV-offset-02439# @offset@ /must/ be less than
+--     the size of @aabbData@
+--
+-- -   #VUID-VkGeometryAABBNV-offset-02440# @offset@ /must/ be a multiple
+--     of @8@
+--
+-- -   #VUID-VkGeometryAABBNV-stride-02441# @stride@ /must/ be a multiple
+--     of @8@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkGeometryAABBNV-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GEOMETRY_AABB_NV'
+--
+-- -   #VUID-VkGeometryAABBNV-pNext-pNext# @pNext@ /must/ be @NULL@
+--
+-- -   #VUID-VkGeometryAABBNV-aabbData-parameter# If @aabbData@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', @aabbData@ /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_NV_ray_tracing VK_NV_ray_tracing>,
+-- 'Vulkan.Core10.Handles.Buffer',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize', 'GeometryDataNV',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data GeometryAABBNV = GeometryAABBNV
+  { -- | @aabbData@ is the buffer containing axis-aligned bounding box data.
+    aabbData :: Buffer
+  , -- | @numAABBs@ is the number of AABBs in this geometry.
+    numAABBs :: Word32
+  , -- | @stride@ is the stride in bytes between AABBs in @aabbData@.
+    stride :: Word32
+  , -- | @offset@ is the offset in bytes of the first AABB in @aabbData@.
+    offset :: DeviceSize
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (GeometryAABBNV)
+#endif
+deriving instance Show GeometryAABBNV
+
+instance ToCStruct GeometryAABBNV where
+  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p GeometryAABBNV{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GEOMETRY_AABB_NV)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Buffer)) (aabbData)
+    poke ((p `plusPtr` 24 :: Ptr Word32)) (numAABBs)
+    poke ((p `plusPtr` 28 :: Ptr Word32)) (stride)
+    poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (offset)
+    f
+  cStructSize = 40
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GEOMETRY_AABB_NV)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 28 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (zero)
+    f
+
+instance FromCStruct GeometryAABBNV where
+  peekCStruct p = do
+    aabbData <- peek @Buffer ((p `plusPtr` 16 :: Ptr Buffer))
+    numAABBs <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))
+    stride <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))
+    offset <- peek @DeviceSize ((p `plusPtr` 32 :: Ptr DeviceSize))
+    pure $ GeometryAABBNV
+             aabbData numAABBs stride offset
+
+instance Storable GeometryAABBNV where
+  sizeOf ~_ = 40
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero GeometryAABBNV where
+  zero = GeometryAABBNV
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkGeometryDataNV - Structure specifying geometry in a bottom-level
+-- acceleration structure
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>,
+-- 'GeometryAABBNV', 'GeometryNV', 'GeometryTrianglesNV'
+data GeometryDataNV = GeometryDataNV
+  { -- | @triangles@ contains triangle data if 'GeometryNV'::@geometryType@ is
+    -- 'GEOMETRY_TYPE_TRIANGLES_NV'.
+    --
+    -- #VUID-VkGeometryDataNV-triangles-parameter# @triangles@ /must/ be a
+    -- valid 'GeometryTrianglesNV' structure
+    triangles :: GeometryTrianglesNV
+  , -- | @aabbs@ contains axis-aligned bounding box data if
+    -- 'GeometryNV'::@geometryType@ is 'GEOMETRY_TYPE_AABBS_NV'.
+    --
+    -- #VUID-VkGeometryDataNV-aabbs-parameter# @aabbs@ /must/ be a valid
+    -- 'GeometryAABBNV' structure
+    aabbs :: GeometryAABBNV
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (GeometryDataNV)
+#endif
+deriving instance Show GeometryDataNV
+
+instance ToCStruct GeometryDataNV where
+  withCStruct x f = allocaBytes 136 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p GeometryDataNV{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr GeometryTrianglesNV)) (triangles)
+    poke ((p `plusPtr` 96 :: Ptr GeometryAABBNV)) (aabbs)
+    f
+  cStructSize = 136
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr GeometryTrianglesNV)) (zero)
+    poke ((p `plusPtr` 96 :: Ptr GeometryAABBNV)) (zero)
+    f
+
+instance FromCStruct GeometryDataNV where
+  peekCStruct p = do
+    triangles <- peekCStruct @GeometryTrianglesNV ((p `plusPtr` 0 :: Ptr GeometryTrianglesNV))
+    aabbs <- peekCStruct @GeometryAABBNV ((p `plusPtr` 96 :: Ptr GeometryAABBNV))
+    pure $ GeometryDataNV
+             triangles aabbs
+
+instance Storable GeometryDataNV where
+  sizeOf ~_ = 136
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero GeometryDataNV where
+  zero = GeometryDataNV
+           zero
+           zero
+
+
+-- | VkGeometryNV - Structure specifying a geometry in a bottom-level
+-- acceleration structure
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>,
+-- 'AccelerationStructureInfoNV', 'GeometryDataNV',
+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.GeometryFlagsKHR',
+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.GeometryTypeKHR',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data GeometryNV = GeometryNV
+  { -- | @geometryType@ specifies the
+    -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.GeometryTypeKHR' which
+    -- this geometry refers to.
+    --
+    -- #VUID-VkGeometryNV-geometryType-03503# @geometryType@ /must/ be
+    -- 'GEOMETRY_TYPE_TRIANGLES_NV' or 'GEOMETRY_TYPE_AABBS_NV'
+    --
+    -- #VUID-VkGeometryNV-geometryType-parameter# @geometryType@ /must/ be a
+    -- valid 'Vulkan.Extensions.VK_KHR_acceleration_structure.GeometryTypeKHR'
+    -- value
+    geometryType :: GeometryTypeKHR
+  , -- | @geometry@ contains the geometry data as described in 'GeometryDataNV'.
+    --
+    -- #VUID-VkGeometryNV-geometry-parameter# @geometry@ /must/ be a valid
+    -- 'GeometryDataNV' structure
+    geometry :: GeometryDataNV
+  , -- | @flags@ has
+    -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.GeometryFlagBitsKHR'
+    -- describing options for this geometry.
+    --
+    -- #VUID-VkGeometryNV-flags-parameter# @flags@ /must/ be a valid
+    -- combination of
+    -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.GeometryFlagBitsKHR'
+    -- values
+    flags :: GeometryFlagsKHR
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (GeometryNV)
+#endif
+deriving instance Show GeometryNV
+
+instance ToCStruct GeometryNV where
+  withCStruct x f = allocaBytes 168 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p GeometryNV{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GEOMETRY_NV)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr GeometryTypeKHR)) (geometryType)
+    poke ((p `plusPtr` 24 :: Ptr GeometryDataNV)) (geometry)
+    poke ((p `plusPtr` 160 :: Ptr GeometryFlagsKHR)) (flags)
+    f
+  cStructSize = 168
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GEOMETRY_NV)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr GeometryTypeKHR)) (zero)
+    poke ((p `plusPtr` 24 :: Ptr GeometryDataNV)) (zero)
+    f
+
+instance FromCStruct GeometryNV where
+  peekCStruct p = do
+    geometryType <- peek @GeometryTypeKHR ((p `plusPtr` 16 :: Ptr GeometryTypeKHR))
+    geometry <- peekCStruct @GeometryDataNV ((p `plusPtr` 24 :: Ptr GeometryDataNV))
+    flags <- peek @GeometryFlagsKHR ((p `plusPtr` 160 :: Ptr GeometryFlagsKHR))
+    pure $ GeometryNV
+             geometryType geometry flags
+
+instance Storable GeometryNV where
+  sizeOf ~_ = 168
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero GeometryNV where
+  zero = GeometryNV
+           zero
+           zero
+           zero
+
+
+-- | VkAccelerationStructureInfoNV - Structure specifying the parameters of
+-- acceleration structure object
+--
+-- = Description
+--
+-- 'AccelerationStructureInfoNV' contains information that is used both for
+-- acceleration structure creation with 'createAccelerationStructureNV' and
+-- in combination with the actual geometric data to build the acceleration
+-- structure with 'cmdBuildAccelerationStructureNV'.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkAccelerationStructureInfoNV-geometryCount-02422#
+--     @geometryCount@ /must/ be less than or equal to
+--     'PhysicalDeviceRayTracingPropertiesNV'::@maxGeometryCount@
+--
+-- -   #VUID-VkAccelerationStructureInfoNV-instanceCount-02423#
+--     @instanceCount@ /must/ be less than or equal to
+--     'PhysicalDeviceRayTracingPropertiesNV'::@maxInstanceCount@
+--
+-- -   #VUID-VkAccelerationStructureInfoNV-maxTriangleCount-02424# The
+--     total number of triangles in all geometries /must/ be less than or
+--     equal to 'PhysicalDeviceRayTracingPropertiesNV'::@maxTriangleCount@
+--
+-- -   #VUID-VkAccelerationStructureInfoNV-type-02425# If @type@ is
+--     'ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV' then @geometryCount@
+--     /must/ be @0@
+--
+-- -   #VUID-VkAccelerationStructureInfoNV-type-02426# If @type@ is
+--     'ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV' then @instanceCount@
+--     /must/ be @0@
+--
+-- -   #VUID-VkAccelerationStructureInfoNV-type-02786# If @type@ is
+--     'ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV' then the
+--     @geometryType@ member of each geometry in @pGeometries@ /must/ be
+--     the same
+--
+-- -   #VUID-VkAccelerationStructureInfoNV-type-04623# @type@ /must/ not be
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR'
+--
+-- -   #VUID-VkAccelerationStructureInfoNV-flags-02592# If @flags@ has the
+--     'BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV' bit set,
+--     then it /must/ not have the
+--     'BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV' bit set
+--
+-- -   #VUID-VkAccelerationStructureInfoNV-scratch-02781# @scratch@ /must/
+--     have been created with the 'BUFFER_USAGE_RAY_TRACING_BIT_NV' usage
+--     flag set
+--
+-- -   #VUID-VkAccelerationStructureInfoNV-instanceData-02782# If
+--     @instanceData@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
+--     @instanceData@ /must/ have been created with the
+--     'BUFFER_USAGE_RAY_TRACING_BIT_NV' usage flag set
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkAccelerationStructureInfoNV-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV'
+--
+-- -   #VUID-VkAccelerationStructureInfoNV-pNext-pNext# @pNext@ /must/ be
+--     @NULL@
+--
+-- -   #VUID-VkAccelerationStructureInfoNV-type-parameter# @type@ /must/ be
+--     a valid 'AccelerationStructureTypeNV' value
+--
+-- -   #VUID-VkAccelerationStructureInfoNV-flags-parameter# @flags@ /must/
+--     be a valid combination of
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.BuildAccelerationStructureFlagBitsKHR'
+--     values
+--
+-- -   #VUID-VkAccelerationStructureInfoNV-pGeometries-parameter# If
+--     @geometryCount@ is not @0@, @pGeometries@ /must/ be a valid pointer
+--     to an array of @geometryCount@ valid 'GeometryNV' structures
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>,
+-- 'AccelerationStructureCreateInfoNV',
+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureTypeKHR',
+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.BuildAccelerationStructureFlagsKHR',
+-- 'GeometryNV', 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'cmdBuildAccelerationStructureNV'
+data AccelerationStructureInfoNV = AccelerationStructureInfoNV
+  { -- | @type@ is a 'AccelerationStructureTypeNV' value specifying the type of
+    -- acceleration structure that will be created.
+    type' :: AccelerationStructureTypeNV
+  , -- | @flags@ is a bitmask of 'BuildAccelerationStructureFlagBitsNV'
+    -- specifying additional parameters of the acceleration structure.
+    flags :: BuildAccelerationStructureFlagsKHR
+  , -- | @instanceCount@ specifies the number of instances that will be in the
+    -- new acceleration structure.
+    instanceCount :: Word32
+  , -- | @pGeometries@ is a pointer to an array of @geometryCount@ 'GeometryNV'
+    -- structures containing the scene data being passed into the acceleration
+    -- structure.
+    geometries :: Vector GeometryNV
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (AccelerationStructureInfoNV)
+#endif
+deriving instance Show AccelerationStructureInfoNV
+
+instance ToCStruct AccelerationStructureInfoNV where
+  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p AccelerationStructureInfoNV{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr AccelerationStructureTypeNV)) (type')
+    lift $ poke ((p `plusPtr` 20 :: Ptr BuildAccelerationStructureFlagsKHR)) (flags)
+    lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) (instanceCount)
+    lift $ poke ((p `plusPtr` 28 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (geometries)) :: Word32))
+    pPGeometries' <- ContT $ allocaBytes @GeometryNV ((Data.Vector.length (geometries)) * 168)
+    lift $ Data.Vector.imapM_ (\i e -> poke (pPGeometries' `plusPtr` (168 * (i)) :: Ptr GeometryNV) (e)) (geometries)
+    lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr GeometryNV))) (pPGeometries')
+    lift $ f
+  cStructSize = 40
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr AccelerationStructureTypeNV)) (zero)
+    f
+
+instance FromCStruct AccelerationStructureInfoNV where
+  peekCStruct p = do
+    type' <- peek @AccelerationStructureTypeNV ((p `plusPtr` 16 :: Ptr AccelerationStructureTypeNV))
+    flags <- peek @BuildAccelerationStructureFlagsKHR ((p `plusPtr` 20 :: Ptr BuildAccelerationStructureFlagsKHR))
+    instanceCount <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))
+    geometryCount <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))
+    pGeometries <- peek @(Ptr GeometryNV) ((p `plusPtr` 32 :: Ptr (Ptr GeometryNV)))
+    pGeometries' <- generateM (fromIntegral geometryCount) (\i -> peekCStruct @GeometryNV ((pGeometries `advancePtrBytes` (168 * (i)) :: Ptr GeometryNV)))
+    pure $ AccelerationStructureInfoNV
+             type' flags instanceCount pGeometries'
+
+instance Zero AccelerationStructureInfoNV where
+  zero = AccelerationStructureInfoNV
+           zero
+           zero
+           zero
+           mempty
+
+
+-- | VkAccelerationStructureCreateInfoNV - Structure specifying the
+-- parameters of a newly created acceleration structure object
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkAccelerationStructureCreateInfoNV-compactedSize-02421# If
+--     @compactedSize@ is not @0@ then both @info.geometryCount@ and
+--     @info.instanceCount@ /must/ be @0@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkAccelerationStructureCreateInfoNV-sType-sType# @sType@
+--     /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV'
+--
+-- -   #VUID-VkAccelerationStructureCreateInfoNV-pNext-pNext# @pNext@
+--     /must/ be @NULL@ or a pointer to a valid instance of
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.OpaqueCaptureDescriptorDataCreateInfoEXT'
+--
+-- -   #VUID-VkAccelerationStructureCreateInfoNV-sType-unique# The @sType@
+--     value of each structure in the @pNext@ chain /must/ be unique
+--
+-- -   #VUID-VkAccelerationStructureCreateInfoNV-info-parameter# @info@
+--     /must/ be a valid 'AccelerationStructureInfoNV' structure
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>,
+-- 'AccelerationStructureInfoNV',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'createAccelerationStructureNV'
+data AccelerationStructureCreateInfoNV (es :: [Type]) = AccelerationStructureCreateInfoNV
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
+    next :: Chain es
+  , -- | @compactedSize@ is the size from the result of
+    -- 'cmdWriteAccelerationStructuresPropertiesNV' if this acceleration
+    -- structure is going to be the target of a compacting copy.
+    compactedSize :: DeviceSize
+  , -- | @info@ is the 'AccelerationStructureInfoNV' structure specifying further
+    -- parameters of the created acceleration structure.
+    info :: AccelerationStructureInfoNV
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (AccelerationStructureCreateInfoNV (es :: [Type]))
+#endif
+deriving instance Show (Chain es) => Show (AccelerationStructureCreateInfoNV es)
+
+instance Extensible AccelerationStructureCreateInfoNV where
+  extensibleTypeName = "AccelerationStructureCreateInfoNV"
+  setNext AccelerationStructureCreateInfoNV{..} next' = AccelerationStructureCreateInfoNV{next = next', ..}
+  getNext AccelerationStructureCreateInfoNV{..} = next
+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends AccelerationStructureCreateInfoNV e => b) -> Maybe b
+  extends _ f
+    | Just Refl <- eqT @e @OpaqueCaptureDescriptorDataCreateInfoEXT = Just f
+    | otherwise = Nothing
+
+instance ( Extendss AccelerationStructureCreateInfoNV es
+         , PokeChain es ) => ToCStruct (AccelerationStructureCreateInfoNV es) where
+  withCStruct x f = allocaBytes 64 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p AccelerationStructureCreateInfoNV{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV)
+    pNext'' <- fmap castPtr . ContT $ withChain (next)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
+    lift $ poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (compactedSize)
+    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr AccelerationStructureInfoNV)) (info) . ($ ())
+    lift $ f
+  cStructSize = 64
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV)
+    pNext' <- fmap castPtr . ContT $ withZeroChain @es
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
+    lift $ poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (zero)
+    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr AccelerationStructureInfoNV)) (zero) . ($ ())
+    lift $ f
+
+instance ( Extendss AccelerationStructureCreateInfoNV es
+         , PeekChain es ) => FromCStruct (AccelerationStructureCreateInfoNV es) where
+  peekCStruct p = do
+    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
+    next <- peekChain (castPtr pNext)
+    compactedSize <- peek @DeviceSize ((p `plusPtr` 16 :: Ptr DeviceSize))
+    info <- peekCStruct @AccelerationStructureInfoNV ((p `plusPtr` 24 :: Ptr AccelerationStructureInfoNV))
+    pure $ AccelerationStructureCreateInfoNV
+             next compactedSize info
+
+instance es ~ '[] => Zero (AccelerationStructureCreateInfoNV es) where
+  zero = AccelerationStructureCreateInfoNV
+           ()
+           zero
+           zero
+
+
+-- | VkBindAccelerationStructureMemoryInfoNV - Structure specifying
+-- acceleration structure memory binding
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkBindAccelerationStructureMemoryInfoNV-accelerationStructure-03620#
+--     @accelerationStructure@ /must/ not already be backed by a memory
+--     object
+--
+-- -   #VUID-VkBindAccelerationStructureMemoryInfoNV-memoryOffset-03621#
+--     @memoryOffset@ /must/ be less than the size of @memory@
+--
+-- -   #VUID-VkBindAccelerationStructureMemoryInfoNV-memory-03622# @memory@
+--     /must/ have been allocated using one of the memory types allowed in
+--     the @memoryTypeBits@ member of the
+--     'Vulkan.Core10.MemoryManagement.MemoryRequirements' structure
+--     returned from a call to
+--     'getAccelerationStructureMemoryRequirementsNV' with
+--     @accelerationStructure@ and @type@ of
+--     'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV'
+--
+-- -   #VUID-VkBindAccelerationStructureMemoryInfoNV-memoryOffset-03623#
+--     @memoryOffset@ /must/ be an integer multiple of the @alignment@
+--     member of the 'Vulkan.Core10.MemoryManagement.MemoryRequirements'
+--     structure returned from a call to
+--     'getAccelerationStructureMemoryRequirementsNV' with
+--     @accelerationStructure@ and @type@ of
+--     'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV'
+--
+-- -   #VUID-VkBindAccelerationStructureMemoryInfoNV-size-03624# The @size@
+--     member of the 'Vulkan.Core10.MemoryManagement.MemoryRequirements'
+--     structure returned from a call to
+--     'getAccelerationStructureMemoryRequirementsNV' with
+--     @accelerationStructure@ and @type@ of
+--     'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV' /must/
+--     be less than or equal to the size of @memory@ minus @memoryOffset@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkBindAccelerationStructureMemoryInfoNV-sType-sType# @sType@
+--     /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV'
+--
+-- -   #VUID-VkBindAccelerationStructureMemoryInfoNV-pNext-pNext# @pNext@
+--     /must/ be @NULL@
+--
+-- -   #VUID-VkBindAccelerationStructureMemoryInfoNV-accelerationStructure-parameter#
+--     @accelerationStructure@ /must/ be a valid
+--     'Vulkan.Extensions.Handles.AccelerationStructureNV' handle
+--
+-- -   #VUID-VkBindAccelerationStructureMemoryInfoNV-memory-parameter#
+--     @memory@ /must/ be a valid 'Vulkan.Core10.Handles.DeviceMemory'
+--     handle
+--
+-- -   #VUID-VkBindAccelerationStructureMemoryInfoNV-pDeviceIndices-parameter#
+--     If @deviceIndexCount@ is not @0@, @pDeviceIndices@ /must/ be a valid
+--     pointer to an array of @deviceIndexCount@ @uint32_t@ values
+--
+-- -   #VUID-VkBindAccelerationStructureMemoryInfoNV-commonparent# Both of
+--     @accelerationStructure@, and @memory@ /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_NV_ray_tracing VK_NV_ray_tracing>,
+-- 'Vulkan.Extensions.Handles.AccelerationStructureNV',
+-- 'Vulkan.Core10.Handles.DeviceMemory',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'bindAccelerationStructureMemoryNV'
+data BindAccelerationStructureMemoryInfoNV = BindAccelerationStructureMemoryInfoNV
+  { -- | @accelerationStructure@ is the acceleration structure to be attached to
+    -- memory.
+    accelerationStructure :: AccelerationStructureNV
+  , -- | @memory@ is a 'Vulkan.Core10.Handles.DeviceMemory' object describing the
+    -- device memory to attach.
+    memory :: DeviceMemory
+  , -- | @memoryOffset@ is the start offset of the region of memory that is to be
+    -- bound to the acceleration structure. The number of bytes returned in the
+    -- 'Vulkan.Core10.MemoryManagement.MemoryRequirements'::@size@ member in
+    -- @memory@, starting from @memoryOffset@ bytes, will be bound to the
+    -- specified acceleration structure.
+    memoryOffset :: DeviceSize
+  , -- | @pDeviceIndices@ is a pointer to an array of device indices.
+    deviceIndices :: Vector Word32
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (BindAccelerationStructureMemoryInfoNV)
+#endif
+deriving instance Show BindAccelerationStructureMemoryInfoNV
+
+instance ToCStruct BindAccelerationStructureMemoryInfoNV where
+  withCStruct x f = allocaBytes 56 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p BindAccelerationStructureMemoryInfoNV{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr AccelerationStructureNV)) (accelerationStructure)
+    lift $ poke ((p `plusPtr` 24 :: Ptr DeviceMemory)) (memory)
+    lift $ poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (memoryOffset)
+    lift $ poke ((p `plusPtr` 40 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (deviceIndices)) :: Word32))
+    pPDeviceIndices' <- ContT $ allocaBytes @Word32 ((Data.Vector.length (deviceIndices)) * 4)
+    lift $ Data.Vector.imapM_ (\i e -> poke (pPDeviceIndices' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (deviceIndices)
+    lift $ poke ((p `plusPtr` 48 :: Ptr (Ptr Word32))) (pPDeviceIndices')
+    lift $ f
+  cStructSize = 56
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr AccelerationStructureNV)) (zero)
+    poke ((p `plusPtr` 24 :: Ptr DeviceMemory)) (zero)
+    poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (zero)
+    f
+
+instance FromCStruct BindAccelerationStructureMemoryInfoNV where
+  peekCStruct p = do
+    accelerationStructure <- peek @AccelerationStructureNV ((p `plusPtr` 16 :: Ptr AccelerationStructureNV))
+    memory <- peek @DeviceMemory ((p `plusPtr` 24 :: Ptr DeviceMemory))
+    memoryOffset <- peek @DeviceSize ((p `plusPtr` 32 :: Ptr DeviceSize))
+    deviceIndexCount <- peek @Word32 ((p `plusPtr` 40 :: Ptr Word32))
+    pDeviceIndices <- peek @(Ptr Word32) ((p `plusPtr` 48 :: Ptr (Ptr Word32)))
+    pDeviceIndices' <- generateM (fromIntegral deviceIndexCount) (\i -> peek @Word32 ((pDeviceIndices `advancePtrBytes` (4 * (i)) :: Ptr Word32)))
+    pure $ BindAccelerationStructureMemoryInfoNV
+             accelerationStructure memory memoryOffset pDeviceIndices'
+
+instance Zero BindAccelerationStructureMemoryInfoNV where
+  zero = BindAccelerationStructureMemoryInfoNV
+           zero
+           zero
+           zero
+           mempty
+
+
+-- | VkWriteDescriptorSetAccelerationStructureNV - Structure specifying
+-- acceleration structure descriptor information
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkWriteDescriptorSetAccelerationStructureNV-pAccelerationStructures-03748#
+--     Each acceleration structure in @pAccelerationStructures@ /must/ have
+--     been created with
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR'
+--
+-- -   #VUID-VkWriteDescriptorSetAccelerationStructureNV-pAccelerationStructures-03749#
+--     If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-nullDescriptor nullDescriptor>
+--     feature is not enabled, each member of @pAccelerationStructures@
+--     /must/ not be 'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkWriteDescriptorSetAccelerationStructureNV-sType-sType#
+--     @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV'
+--
+-- -   #VUID-VkWriteDescriptorSetAccelerationStructureNV-pAccelerationStructures-parameter#
+--     @pAccelerationStructures@ /must/ be a valid pointer to an array of
+--     @accelerationStructureCount@ valid or
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--     'Vulkan.Extensions.Handles.AccelerationStructureNV' handles
+--
+-- -   #VUID-VkWriteDescriptorSetAccelerationStructureNV-accelerationStructureCount-arraylength#
+--     @accelerationStructureCount@ /must/ be greater than @0@
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.DescriptorSet.WriteDescriptorSet'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>,
+-- 'Vulkan.Extensions.Handles.AccelerationStructureNV',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data WriteDescriptorSetAccelerationStructureNV = WriteDescriptorSetAccelerationStructureNV
+  { -- | @pAccelerationStructures@ is a pointer to an array of
+    -- 'Vulkan.Extensions.Handles.AccelerationStructureNV' structures
+    -- specifying the acceleration structures to update.
+    accelerationStructures :: Vector AccelerationStructureNV }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (WriteDescriptorSetAccelerationStructureNV)
+#endif
+deriving instance Show WriteDescriptorSetAccelerationStructureNV
+
+instance ToCStruct WriteDescriptorSetAccelerationStructureNV where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p WriteDescriptorSetAccelerationStructureNV{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (accelerationStructures)) :: Word32))
+    pPAccelerationStructures' <- ContT $ allocaBytes @AccelerationStructureNV ((Data.Vector.length (accelerationStructures)) * 8)
+    lift $ Data.Vector.imapM_ (\i e -> poke (pPAccelerationStructures' `plusPtr` (8 * (i)) :: Ptr AccelerationStructureNV) (e)) (accelerationStructures)
+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr AccelerationStructureNV))) (pPAccelerationStructures')
+    lift $ f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    f
+
+instance FromCStruct WriteDescriptorSetAccelerationStructureNV where
+  peekCStruct p = do
+    accelerationStructureCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    pAccelerationStructures <- peek @(Ptr AccelerationStructureNV) ((p `plusPtr` 24 :: Ptr (Ptr AccelerationStructureNV)))
+    pAccelerationStructures' <- generateM (fromIntegral accelerationStructureCount) (\i -> peek @AccelerationStructureNV ((pAccelerationStructures `advancePtrBytes` (8 * (i)) :: Ptr AccelerationStructureNV)))
+    pure $ WriteDescriptorSetAccelerationStructureNV
+             pAccelerationStructures'
+
+instance Zero WriteDescriptorSetAccelerationStructureNV where
+  zero = WriteDescriptorSetAccelerationStructureNV
+           mempty
+
+
+-- | VkAccelerationStructureMemoryRequirementsInfoNV - Structure specifying
+-- acceleration to query for memory requirements
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>,
+-- 'AccelerationStructureMemoryRequirementsTypeNV',
+-- 'Vulkan.Extensions.Handles.AccelerationStructureNV',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'getAccelerationStructureMemoryRequirementsNV'
+data AccelerationStructureMemoryRequirementsInfoNV = AccelerationStructureMemoryRequirementsInfoNV
+  { -- | @type@ selects the type of memory requirement being queried.
+    -- 'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV' returns the
+    -- memory requirements for the object itself.
+    -- 'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV'
+    -- returns the memory requirements for the scratch memory when doing a
+    -- build.
+    -- 'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV'
+    -- returns the memory requirements for the scratch memory when doing an
+    -- update.
+    --
+    -- #VUID-VkAccelerationStructureMemoryRequirementsInfoNV-type-parameter#
+    -- @type@ /must/ be a valid 'AccelerationStructureMemoryRequirementsTypeNV'
+    -- value
+    type' :: AccelerationStructureMemoryRequirementsTypeNV
+  , -- | @accelerationStructure@ is the acceleration structure to be queried for
+    -- memory requirements.
+    --
+    -- #VUID-VkAccelerationStructureMemoryRequirementsInfoNV-accelerationStructure-parameter#
+    -- @accelerationStructure@ /must/ be a valid
+    -- 'Vulkan.Extensions.Handles.AccelerationStructureNV' handle
+    accelerationStructure :: AccelerationStructureNV
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (AccelerationStructureMemoryRequirementsInfoNV)
+#endif
+deriving instance Show AccelerationStructureMemoryRequirementsInfoNV
+
+instance ToCStruct AccelerationStructureMemoryRequirementsInfoNV where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p AccelerationStructureMemoryRequirementsInfoNV{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr AccelerationStructureMemoryRequirementsTypeNV)) (type')
+    poke ((p `plusPtr` 24 :: Ptr AccelerationStructureNV)) (accelerationStructure)
+    f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr AccelerationStructureMemoryRequirementsTypeNV)) (zero)
+    poke ((p `plusPtr` 24 :: Ptr AccelerationStructureNV)) (zero)
+    f
+
+instance FromCStruct AccelerationStructureMemoryRequirementsInfoNV where
+  peekCStruct p = do
+    type' <- peek @AccelerationStructureMemoryRequirementsTypeNV ((p `plusPtr` 16 :: Ptr AccelerationStructureMemoryRequirementsTypeNV))
+    accelerationStructure <- peek @AccelerationStructureNV ((p `plusPtr` 24 :: Ptr AccelerationStructureNV))
+    pure $ AccelerationStructureMemoryRequirementsInfoNV
+             type' accelerationStructure
+
+instance Storable AccelerationStructureMemoryRequirementsInfoNV where
+  sizeOf ~_ = 32
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero AccelerationStructureMemoryRequirementsInfoNV where
+  zero = AccelerationStructureMemoryRequirementsInfoNV
+           zero
+           zero
+
+
+-- | VkPhysicalDeviceRayTracingPropertiesNV - Properties of the physical
+-- device for ray tracing
+--
+-- = Description
+--
+-- Due to the fact that the geometry, instance, and triangle counts are
+-- specified at acceleration structure creation as 32-bit values,
+-- @maxGeometryCount@, @maxInstanceCount@, and @maxTriangleCount@ /must/
+-- not exceed 232-1.
+--
+-- If the 'PhysicalDeviceRayTracingPropertiesNV' 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.
+--
+-- Limits specified by this structure /must/ match those specified with the
+-- same name in
+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.PhysicalDeviceAccelerationStructurePropertiesKHR'
+-- and
+-- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.PhysicalDeviceRayTracingPipelinePropertiesKHR'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceRayTracingPropertiesNV = PhysicalDeviceRayTracingPropertiesNV
+  { -- | @shaderGroupHandleSize@ is the size in bytes of the shader header.
+    shaderGroupHandleSize :: Word32
+  , -- | #limits-maxRecursionDepth# @maxRecursionDepth@ is the maximum number of
+    -- levels of recursion allowed in a trace command.
+    maxRecursionDepth :: Word32
+  , -- | @maxShaderGroupStride@ is the maximum stride in bytes allowed between
+    -- shader groups in the shader binding table.
+    maxShaderGroupStride :: Word32
+  , -- | @shaderGroupBaseAlignment@ is the /required/ alignment in bytes for the
+    -- base of the shader binding table.
+    shaderGroupBaseAlignment :: Word32
+  , -- | @maxGeometryCount@ is the maximum number of geometries in the bottom
+    -- level acceleration structure.
+    maxGeometryCount :: Word64
+  , -- | @maxInstanceCount@ is the maximum number of instances in the top level
+    -- acceleration structure.
+    maxInstanceCount :: Word64
+  , -- | @maxTriangleCount@ is the maximum number of triangles in all geometries
+    -- in the bottom level acceleration structure.
+    maxTriangleCount :: Word64
+  , -- | @maxDescriptorSetAccelerationStructures@ is the maximum number of
+    -- acceleration structure descriptors that are allowed in a descriptor set.
+    maxDescriptorSetAccelerationStructures :: Word32
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceRayTracingPropertiesNV)
+#endif
+deriving instance Show PhysicalDeviceRayTracingPropertiesNV
+
+instance ToCStruct PhysicalDeviceRayTracingPropertiesNV where
+  withCStruct x f = allocaBytes 64 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceRayTracingPropertiesNV{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (shaderGroupHandleSize)
+    poke ((p `plusPtr` 20 :: Ptr Word32)) (maxRecursionDepth)
+    poke ((p `plusPtr` 24 :: Ptr Word32)) (maxShaderGroupStride)
+    poke ((p `plusPtr` 28 :: Ptr Word32)) (shaderGroupBaseAlignment)
+    poke ((p `plusPtr` 32 :: Ptr Word64)) (maxGeometryCount)
+    poke ((p `plusPtr` 40 :: Ptr Word64)) (maxInstanceCount)
+    poke ((p `plusPtr` 48 :: Ptr Word64)) (maxTriangleCount)
+    poke ((p `plusPtr` 56 :: Ptr Word32)) (maxDescriptorSetAccelerationStructures)
+    f
+  cStructSize = 64
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV)
+    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 Word64)) (zero)
+    poke ((p `plusPtr` 40 :: Ptr Word64)) (zero)
+    poke ((p `plusPtr` 48 :: Ptr Word64)) (zero)
+    poke ((p `plusPtr` 56 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct PhysicalDeviceRayTracingPropertiesNV where
+  peekCStruct p = do
+    shaderGroupHandleSize <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    maxRecursionDepth <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
+    maxShaderGroupStride <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))
+    shaderGroupBaseAlignment <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))
+    maxGeometryCount <- peek @Word64 ((p `plusPtr` 32 :: Ptr Word64))
+    maxInstanceCount <- peek @Word64 ((p `plusPtr` 40 :: Ptr Word64))
+    maxTriangleCount <- peek @Word64 ((p `plusPtr` 48 :: Ptr Word64))
+    maxDescriptorSetAccelerationStructures <- peek @Word32 ((p `plusPtr` 56 :: Ptr Word32))
+    pure $ PhysicalDeviceRayTracingPropertiesNV
+             shaderGroupHandleSize
+             maxRecursionDepth
+             maxShaderGroupStride
+             shaderGroupBaseAlignment
+             maxGeometryCount
+             maxInstanceCount
+             maxTriangleCount
+             maxDescriptorSetAccelerationStructures
+
+instance Storable PhysicalDeviceRayTracingPropertiesNV where
+  sizeOf ~_ = 64
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceRayTracingPropertiesNV where
+  zero = PhysicalDeviceRayTracingPropertiesNV
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkAccelerationStructureMemoryRequirementsTypeNV - Acceleration structure
+-- memory requirement type
+--
+-- = Description
+--
+-- -   'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV' requests
+--     the memory requirement for the
+--     'Vulkan.Extensions.Handles.AccelerationStructureNV' backing store.
+--
+-- -   'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV'
+--     requests the memory requirement for scratch space during the initial
+--     build.
+--
+-- -   'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV'
+--     requests the memory requirement for scratch space during an update.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>,
+-- 'AccelerationStructureMemoryRequirementsInfoNV'
+newtype AccelerationStructureMemoryRequirementsTypeNV = AccelerationStructureMemoryRequirementsTypeNV Int32
+  deriving newtype (Eq, Ord, Storable, Zero)
+
+-- No documentation found for Nested "VkAccelerationStructureMemoryRequirementsTypeNV" "VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV"
+pattern ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV = AccelerationStructureMemoryRequirementsTypeNV 0
+
+-- No documentation found for Nested "VkAccelerationStructureMemoryRequirementsTypeNV" "VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV"
+pattern ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV = AccelerationStructureMemoryRequirementsTypeNV 1
+
+-- No documentation found for Nested "VkAccelerationStructureMemoryRequirementsTypeNV" "VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV"
 pattern ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV = AccelerationStructureMemoryRequirementsTypeNV 2
 
 {-# COMPLETE
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
@@ -220,7 +220,7 @@
 --
 -- -   'NV_RAY_TRACING_SPEC_VERSION'
 --
--- -   'Vulkan.Core10.APIConstants.SHADER_UNUSED_NV'
+-- -   'SHADER_UNUSED_NV'
 --
 -- -   Extending
 --     'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureTypeKHR':
@@ -376,41 +376,41 @@
 --
 -- == New or Modified Built-In Variables
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-launchid LaunchIdNV>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-launchid LaunchIdNV>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-launchsize LaunchSizeNV>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-launchsize LaunchSizeNV>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-worldrayorigin WorldRayOriginNV>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-worldrayorigin WorldRayOriginNV>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-worldraydirection WorldRayDirectionNV>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-worldraydirection WorldRayDirectionNV>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-objectrayorigin ObjectRayOriginNV>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-objectrayorigin ObjectRayOriginNV>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-objectraydirection ObjectRayDirectionNV>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-objectraydirection ObjectRayDirectionNV>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-raytmin RayTminNV>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-raytmin RayTminNV>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-raytmax RayTmaxNV>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-raytmax RayTmaxNV>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-instancecustomindex InstanceCustomIndexNV>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-instancecustomindex InstanceCustomIndexNV>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-instanceid InstanceId>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-instanceid InstanceId>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-objecttoworld ObjectToWorldNV>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-objecttoworld ObjectToWorldNV>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-worldtoobject WorldToObjectNV>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-worldtoobject WorldToObjectNV>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-hitt HitTNV>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-hitt HitTNV>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-hitkind HitKindNV>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-hitkind HitKindNV>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-incomingrayflags IncomingRayFlagsNV>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-incomingrayflags IncomingRayFlagsNV>
 --
 -- -   (modified)@PrimitiveId@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-RayTracingNV RayTracingNV>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-RayTracingNV RayTracingNV>
 --
 -- == Issues
 --
@@ -466,7 +466,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_ray_tracing Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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_invocation_reorder.hs b/src/Vulkan/Extensions/VK_NV_ray_tracing_invocation_reorder.hs
--- a/src/Vulkan/Extensions/VK_NV_ray_tracing_invocation_reorder.hs
+++ b/src/Vulkan/Extensions/VK_NV_ray_tracing_invocation_reorder.hs
@@ -27,6 +27,12 @@
 --
 --     -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/NV/SPV_NV_shader_invocation_reorder.html SPV_NV_shader_invocation_reorder>
 --
+-- [__Deprecation State__]
+--
+--     -   /Promoted/ to
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_ray_tracing_invocation_reorder VK_EXT_ray_tracing_invocation_reorder>
+--         extension
+--
 -- [__Contact__]
 --
 --     -   Eric Werness
@@ -80,6 +86,13 @@
 --
 -- -   'NV_RAY_TRACING_INVOCATION_REORDER_SPEC_VERSION'
 --
+-- -   Extending
+--     'Vulkan.Extensions.VK_EXT_ray_tracing_invocation_reorder.RayTracingInvocationReorderModeEXT':
+--
+--     -   'RAY_TRACING_INVOCATION_REORDER_MODE_NONE_NV'
+--
+--     -   'RAY_TRACING_INVOCATION_REORDER_MODE_REORDER_NV'
+--
 -- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
 --
 --     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV'
@@ -94,7 +107,7 @@
 -- <https://github.com/microsoft/DirectXShaderCompiler/wiki/GL_EXT_spirv_intrinsics-for-SPIR-V-code-gen SPIR-V Intrinsics>.
 --
 -- The codes for shader invocation reorder are obtained from
--- <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/main/extensions/NV/SPV_NV_shader_invocation_reorder.html this page>:
+-- <https://github.khronos.org/SPIRV-Registry/extensions/NV/SPV_NV_shader_invocation_reorder.html this page>:
 --
 -- > #define ShaderInvocationReorderNV 5383
 -- > #define HitObjectAttributeNV 5385
@@ -227,33 +240,29 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_ray_tracing_invocation_reorder Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_NV_ray_tracing_invocation_reorder Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
-module Vulkan.Extensions.VK_NV_ray_tracing_invocation_reorder  ( PhysicalDeviceRayTracingInvocationReorderFeaturesNV(..)
+module Vulkan.Extensions.VK_NV_ray_tracing_invocation_reorder  ( pattern RAY_TRACING_INVOCATION_REORDER_MODE_NONE_NV
+                                                               , pattern RAY_TRACING_INVOCATION_REORDER_MODE_REORDER_NV
+                                                               , PhysicalDeviceRayTracingInvocationReorderFeaturesNV(..)
                                                                , PhysicalDeviceRayTracingInvocationReorderPropertiesNV(..)
-                                                               , RayTracingInvocationReorderModeNV( RAY_TRACING_INVOCATION_REORDER_MODE_NONE_NV
-                                                                                                  , RAY_TRACING_INVOCATION_REORDER_MODE_REORDER_NV
-                                                                                                  , ..
-                                                                                                  )
+                                                               , RayTracingInvocationReorderModeNV
                                                                , NV_RAY_TRACING_INVOCATION_REORDER_SPEC_VERSION
                                                                , pattern NV_RAY_TRACING_INVOCATION_REORDER_SPEC_VERSION
                                                                , NV_RAY_TRACING_INVOCATION_REORDER_EXTENSION_NAME
                                                                , pattern NV_RAY_TRACING_INVOCATION_REORDER_EXTENSION_NAME
+                                                               , RayTracingInvocationReorderModeEXT(..)
                                                                ) 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)
@@ -262,17 +271,26 @@
 import Foreign.Storable (Storable(poke))
 import qualified Foreign.Storable (Storable(..))
 import GHC.Generics (Generic)
-import Data.Int (Int32)
 import Foreign.Ptr (Ptr)
-import GHC.Read (Read(readPrec))
-import GHC.Show (Show(showsPrec))
 import Data.Kind (Type)
 import Vulkan.Core10.FundamentalTypes (bool32ToBool)
 import Vulkan.Core10.FundamentalTypes (boolToBool32)
 import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.Extensions.VK_EXT_ray_tracing_invocation_reorder (RayTracingInvocationReorderModeEXT)
 import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Extensions.VK_EXT_ray_tracing_invocation_reorder (RayTracingInvocationReorderModeEXT(RAY_TRACING_INVOCATION_REORDER_MODE_NONE_EXT))
+import Vulkan.Extensions.VK_EXT_ray_tracing_invocation_reorder (RayTracingInvocationReorderModeEXT(RAY_TRACING_INVOCATION_REORDER_MODE_REORDER_EXT))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV))
+import Vulkan.Extensions.VK_EXT_ray_tracing_invocation_reorder (RayTracingInvocationReorderModeEXT(..))
+-- No documentation found for TopLevel "VK_RAY_TRACING_INVOCATION_REORDER_MODE_NONE_NV"
+pattern RAY_TRACING_INVOCATION_REORDER_MODE_NONE_NV = RAY_TRACING_INVOCATION_REORDER_MODE_NONE_EXT
+
+
+-- No documentation found for TopLevel "VK_RAY_TRACING_INVOCATION_REORDER_MODE_REORDER_NV"
+pattern RAY_TRACING_INVOCATION_REORDER_MODE_REORDER_NV = RAY_TRACING_INVOCATION_REORDER_MODE_REORDER_EXT
+
+
 -- | VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV - Structure
 -- describing feature to control ray tracing invocation reordering
 --
@@ -288,20 +306,29 @@
 -- structure passed to
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
 -- it is filled in to indicate whether each corresponding feature is
--- supported. 'PhysicalDeviceRayTracingInvocationReorderFeaturesNV' /can/
--- also be used in the @pNext@ chain of
--- 'Vulkan.Core10.Device.DeviceCreateInfo' to selectively enable these
--- features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceRayTracingInvocationReorderFeaturesNV', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing_invocation_reorder VK_NV_ray_tracing_invocation_reorder>,
 -- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceRayTracingInvocationReorderFeaturesNV = PhysicalDeviceRayTracingInvocationReorderFeaturesNV
-  { -- | #features-rayTracingInvocationReorder# @rayTracingInvocationReorder@
+  { -- | #features-rayTracingInvocationReorderNV# @rayTracingInvocationReorder@
     -- indicates that the implementation supports
     -- @SPV_NV_shader_invocation_reorder@.
     rayTracingInvocationReorder :: Bool }
@@ -360,17 +387,21 @@
 -- it is filled in with each corresponding implementation-dependent
 -- property.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing_invocation_reorder VK_NV_ray_tracing_invocation_reorder>,
--- 'RayTracingInvocationReorderModeNV',
+-- 'Vulkan.Extensions.VK_EXT_ray_tracing_invocation_reorder.RayTracingInvocationReorderModeEXT',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceRayTracingInvocationReorderPropertiesNV = PhysicalDeviceRayTracingInvocationReorderPropertiesNV
   { -- | @rayTracingInvocationReorderReorderingHint@ is a hint indicating if the
     -- implementation will actually reorder at the reorder calls.
-    rayTracingInvocationReorderReorderingHint :: RayTracingInvocationReorderModeNV }
+    rayTracingInvocationReorderReorderingHint :: RayTracingInvocationReorderModeEXT }
   deriving (Typeable, Eq)
 #if defined(GENERIC_INSTANCES)
 deriving instance Generic (PhysicalDeviceRayTracingInvocationReorderPropertiesNV)
@@ -382,19 +413,19 @@
   pokeCStruct p PhysicalDeviceRayTracingInvocationReorderPropertiesNV{..} f = do
     poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV)
     poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr RayTracingInvocationReorderModeNV)) (rayTracingInvocationReorderReorderingHint)
+    poke ((p `plusPtr` 16 :: Ptr RayTracingInvocationReorderModeEXT)) (rayTracingInvocationReorderReorderingHint)
     f
   cStructSize = 24
   cStructAlignment = 8
   pokeZeroCStruct p f = do
     poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV)
     poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr RayTracingInvocationReorderModeNV)) (zero)
+    poke ((p `plusPtr` 16 :: Ptr RayTracingInvocationReorderModeEXT)) (zero)
     f
 
 instance FromCStruct PhysicalDeviceRayTracingInvocationReorderPropertiesNV where
   peekCStruct p = do
-    rayTracingInvocationReorderReorderingHint <- peek @RayTracingInvocationReorderModeNV ((p `plusPtr` 16 :: Ptr RayTracingInvocationReorderModeNV))
+    rayTracingInvocationReorderReorderingHint <- peek @RayTracingInvocationReorderModeEXT ((p `plusPtr` 16 :: Ptr RayTracingInvocationReorderModeEXT))
     pure $ PhysicalDeviceRayTracingInvocationReorderPropertiesNV
              rayTracingInvocationReorderReorderingHint
 
@@ -409,64 +440,9 @@
            zero
 
 
--- | VkRayTracingInvocationReorderModeNV - Enum providing a hint on how the
--- application /may/ reorder
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing_invocation_reorder VK_NV_ray_tracing_invocation_reorder>,
--- 'PhysicalDeviceRayTracingInvocationReorderPropertiesNV'
-newtype RayTracingInvocationReorderModeNV = RayTracingInvocationReorderModeNV Int32
-  deriving newtype (Eq, Ord, Storable, Zero)
-
--- | 'RAY_TRACING_INVOCATION_REORDER_MODE_NONE_NV' specifies that the
--- implementation is likely to not reorder at reorder calls.
-pattern RAY_TRACING_INVOCATION_REORDER_MODE_NONE_NV = RayTracingInvocationReorderModeNV 0
-
--- | 'RAY_TRACING_INVOCATION_REORDER_MODE_REORDER_NV' specifies that the
--- implementation is likely to reorder at reorder calls.
-pattern RAY_TRACING_INVOCATION_REORDER_MODE_REORDER_NV = RayTracingInvocationReorderModeNV 1
-
-{-# COMPLETE
-  RAY_TRACING_INVOCATION_REORDER_MODE_NONE_NV
-  , RAY_TRACING_INVOCATION_REORDER_MODE_REORDER_NV ::
-    RayTracingInvocationReorderModeNV
-  #-}
-
-conNameRayTracingInvocationReorderModeNV :: String
-conNameRayTracingInvocationReorderModeNV = "RayTracingInvocationReorderModeNV"
-
-enumPrefixRayTracingInvocationReorderModeNV :: String
-enumPrefixRayTracingInvocationReorderModeNV = "RAY_TRACING_INVOCATION_REORDER_MODE_"
-
-showTableRayTracingInvocationReorderModeNV :: [(RayTracingInvocationReorderModeNV, String)]
-showTableRayTracingInvocationReorderModeNV =
-  [
-    ( RAY_TRACING_INVOCATION_REORDER_MODE_NONE_NV
-    , "NONE_NV"
-    )
-  ,
-    ( RAY_TRACING_INVOCATION_REORDER_MODE_REORDER_NV
-    , "REORDER_NV"
-    )
-  ]
-
-instance Show RayTracingInvocationReorderModeNV where
-  showsPrec =
-    enumShowsPrec
-      enumPrefixRayTracingInvocationReorderModeNV
-      showTableRayTracingInvocationReorderModeNV
-      conNameRayTracingInvocationReorderModeNV
-      (\(RayTracingInvocationReorderModeNV x) -> x)
-      (showsPrec 11)
+-- No documentation found for TopLevel "VkRayTracingInvocationReorderModeNV"
+type RayTracingInvocationReorderModeNV = RayTracingInvocationReorderModeEXT
 
-instance Read RayTracingInvocationReorderModeNV where
-  readPrec =
-    enumReadPrec
-      enumPrefixRayTracingInvocationReorderModeNV
-      showTableRayTracingInvocationReorderModeNV
-      conNameRayTracingInvocationReorderModeNV
-      RayTracingInvocationReorderModeNV
 
 type NV_RAY_TRACING_INVOCATION_REORDER_SPEC_VERSION = 1
 
diff --git a/src/Vulkan/Extensions/VK_NV_ray_tracing_invocation_reorder.hs-boot b/src/Vulkan/Extensions/VK_NV_ray_tracing_invocation_reorder.hs-boot
--- a/src/Vulkan/Extensions/VK_NV_ray_tracing_invocation_reorder.hs-boot
+++ b/src/Vulkan/Extensions/VK_NV_ray_tracing_invocation_reorder.hs-boot
@@ -27,6 +27,12 @@
 --
 --     -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/NV/SPV_NV_shader_invocation_reorder.html SPV_NV_shader_invocation_reorder>
 --
+-- [__Deprecation State__]
+--
+--     -   /Promoted/ to
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_ray_tracing_invocation_reorder VK_EXT_ray_tracing_invocation_reorder>
+--         extension
+--
 -- [__Contact__]
 --
 --     -   Eric Werness
@@ -80,6 +86,13 @@
 --
 -- -   'NV_RAY_TRACING_INVOCATION_REORDER_SPEC_VERSION'
 --
+-- -   Extending
+--     'Vulkan.Extensions.VK_EXT_ray_tracing_invocation_reorder.RayTracingInvocationReorderModeEXT':
+--
+--     -   'RAY_TRACING_INVOCATION_REORDER_MODE_NONE_NV'
+--
+--     -   'RAY_TRACING_INVOCATION_REORDER_MODE_REORDER_NV'
+--
 -- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
 --
 --     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV'
@@ -94,7 +107,7 @@
 -- <https://github.com/microsoft/DirectXShaderCompiler/wiki/GL_EXT_spirv_intrinsics-for-SPIR-V-code-gen SPIR-V Intrinsics>.
 --
 -- The codes for shader invocation reorder are obtained from
--- <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/main/extensions/NV/SPV_NV_shader_invocation_reorder.html this page>:
+-- <https://github.khronos.org/SPIRV-Registry/extensions/NV/SPV_NV_shader_invocation_reorder.html this page>:
 --
 -- > #define ShaderInvocationReorderNV 5383
 -- > #define HitObjectAttributeNV 5385
@@ -227,7 +240,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_ray_tracing_invocation_reorder Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_NV_ray_tracing_invocation_reorder Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_NV_ray_tracing_linear_swept_spheres.hs b/src/Vulkan/Extensions/VK_NV_ray_tracing_linear_swept_spheres.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_NV_ray_tracing_linear_swept_spheres.hs
@@ -0,0 +1,837 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_NV_ray_tracing_linear_swept_spheres - device extension
+--
+-- = VK_NV_ray_tracing_linear_swept_spheres
+--
+-- [__Name String__]
+--     @VK_NV_ray_tracing_linear_swept_spheres@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     430
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Not ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_ray_tracing_pipeline VK_KHR_ray_tracing_pipeline>
+--
+-- [__SPIR-V Dependencies__]
+--
+--     -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/NV/SPV_NV_linear_swept_spheres.html SPV_NV_linear_swept_spheres>
+--
+-- [__Contact__]
+--
+--     -   Vikram Kushwaha
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_NV_ray_tracing_linear_swept_spheres] @vkushwaha%0A*Here describe the issue or question you have about the VK_NV_ray_tracing_linear_swept_spheres extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_NV_ray_tracing_linear_swept_spheres.adoc VK_NV_ray_tracing_linear_swept_spheres>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2025-01-03
+--
+-- [__Interactions and External Dependencies__]
+--
+--     -   This extension requires
+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/NV/SPV_NV_linear_swept_spheres.html SPV_NV_linear_swept_spheres>
+--
+--     -   This extension provides API support for
+--         <https://github.com/KhronosGroup/GLSL/blob/main/extensions/nv/GLSL_NV_linear_swept_spheres.txt GL_NV_linear_swept_spheres>
+--
+-- [__Contributors__]
+--
+--     -   Vikram Kushwaha, NVIDIA
+--
+--     -   Eric Werness, NVIDIA
+--
+--     -   Daniel Koch, NVIDIA
+--
+--     -   Ashwin Lele, NVIDIA
+--
+--     -   Nathan Morrical, NVIDIA
+--
+-- == Description
+--
+-- This extension adds two new primitives for ray tracing: a sphere
+-- primitive and a linear swept sphere (LSS) primitive. The purpose of the
+-- LSS primitive is to enable rendering of high quality hair and fur using
+-- a compact primitive representation encoded in the acceleration
+-- structure. Sphere primitives are defined by a position and a radius and
+-- are a subset of LSS, but are useful in their own right, for example for
+-- particle systems.
+--
+-- This extension adds support for the following SPIR-V extension in
+-- Vulkan:
+--
+-- -   @SPV_NV_linear_swept_spheres@
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureGeometryKHR':
+--
+--     -   'AccelerationStructureGeometryLinearSweptSpheresDataNV'
+--
+--     -   'AccelerationStructureGeometrySpheresDataNV'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV'
+--
+-- == New Enums
+--
+-- -   'RayTracingLssIndexingModeNV'
+--
+-- -   'RayTracingLssPrimitiveEndCapsModeNV'
+--
+-- == New Enum Constants
+--
+-- -   'NV_RAY_TRACING_LINEAR_SWEPT_SPHERES_EXTENSION_NAME'
+--
+-- -   'NV_RAY_TRACING_LINEAR_SWEPT_SPHERES_SPEC_VERSION'
+--
+-- -   Extending
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FormatFeatureFlagBits2':
+--
+--     -   'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_ACCELERATION_STRUCTURE_RADIUS_BUFFER_BIT_NV'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.GeometryTypeKHR':
+--
+--     -   'Vulkan.Extensions.VK_KHR_acceleration_structure.GEOMETRY_TYPE_LINEAR_SWEPT_SPHERES_NV'
+--
+--     -   'Vulkan.Extensions.VK_KHR_acceleration_structure.GEOMETRY_TYPE_SPHERES_NV'
+--
+-- -   Extending
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PipelineCreateFlagBits2':
+--
+--     -   'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_RAY_TRACING_ALLOW_SPHERES_AND_LINEAR_SWEPT_SPHERES_BIT_NV'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_LINEAR_SWEPT_SPHERES_DATA_NV'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_SPHERES_DATA_NV'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_LINEAR_SWEPT_SPHERES_FEATURES_NV'
+--
+-- == New or Modified Built-In Variables
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-hitissphere HitIsSphereNV>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-hitislss HitIsLSSNV>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-hitsphereposition HitSpherePositionNV>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-hitsphereradius HitSphereRadiusNV>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-hitlsspositions HitLSSPositionsNV>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-hitlssradii HitLSSRadiiNV>
+--
+-- == New SPIR-V Capabilities
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-RayTracingSpheresGeometryNV RayTracingSpheresGeometryNV>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-RayTracingLinearSweptSpheresGeometryNV RayTracingLinearSweptSpheresGeometryNV>
+--
+-- == Version History
+--
+-- -   Revision 1, 2025-01-03 (Vikram Kushwaha)
+--
+--     -   Initial draft
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_NV_ray_tracing_linear_swept_spheres Vulkan Specification>.
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_NV_ray_tracing_linear_swept_spheres  ( AccelerationStructureGeometryLinearSweptSpheresDataNV(..)
+                                                                 , AccelerationStructureGeometrySpheresDataNV(..)
+                                                                 , PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV(..)
+                                                                 , RayTracingLssIndexingModeNV( RAY_TRACING_LSS_INDEXING_MODE_LIST_NV
+                                                                                              , RAY_TRACING_LSS_INDEXING_MODE_SUCCESSIVE_NV
+                                                                                              , ..
+                                                                                              )
+                                                                 , RayTracingLssPrimitiveEndCapsModeNV( RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_NONE_NV
+                                                                                                      , RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_CHAINED_NV
+                                                                                                      , ..
+                                                                                                      )
+                                                                 , NV_RAY_TRACING_LINEAR_SWEPT_SPHERES_SPEC_VERSION
+                                                                 , pattern NV_RAY_TRACING_LINEAR_SWEPT_SPHERES_SPEC_VERSION
+                                                                 , NV_RAY_TRACING_LINEAR_SWEPT_SPHERES_EXTENSION_NAME
+                                                                 , pattern NV_RAY_TRACING_LINEAR_SWEPT_SPHERES_EXTENSION_NAME
+                                                                 , DeviceOrHostAddressConstKHR(..)
+                                                                 , GeometryTypeKHR(..)
+                                                                 ) 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 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 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 Control.Monad.Trans.Cont (ContT(..))
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.Extensions.VK_KHR_acceleration_structure (DeviceOrHostAddressConstKHR)
+import Vulkan.Core10.FundamentalTypes (DeviceSize)
+import Vulkan.Core10.Enums.Format (Format)
+import Vulkan.Core10.Enums.IndexType (IndexType)
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_LINEAR_SWEPT_SPHERES_DATA_NV))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_SPHERES_DATA_NV))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_LINEAR_SWEPT_SPHERES_FEATURES_NV))
+import Vulkan.Extensions.VK_KHR_acceleration_structure (DeviceOrHostAddressConstKHR(..))
+import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryTypeKHR(..))
+-- | VkAccelerationStructureGeometryLinearSweptSpheresDataNV - Structure
+-- specifying a LSS geometry in a bottom-level acceleration structure
+--
+-- = Description
+--
+-- If an index buffer is not specified in @indexData@, LSS primitives are
+-- rendered individually using subsequent pairs of vertices similar to
+-- 'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_LINE_LIST'.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkAccelerationStructureGeometryLinearSweptSpheresDataNV-None-10419#
+--     The
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-linearSweptSpheres linearSweptSpheres>
+--     feature /must/ be enabled
+--
+-- -   #VUID-VkAccelerationStructureGeometryLinearSweptSpheresDataNV-vertexStride-10421#
+--     @vertexStride@ /must/ be a multiple of:
+--
+--     -   the
+--         <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats size of the format>
+--         specified in @vertexFormat@ if that format is a
+--         <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-packed packed format>
+--
+--     -   the
+--         <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats component size>
+--         specified in @vertexFormat@ if that format is not a
+--         <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-packed packed format>
+--
+-- -   #VUID-VkAccelerationStructureGeometryLinearSweptSpheresDataNV-vertexStride-10422#
+--     @vertexStride@ and @radiusStride@ /must/ be less than or equal to
+--     232-1
+--
+-- -   #VUID-VkAccelerationStructureGeometryLinearSweptSpheresDataNV-vertexFormat-10423#
+--     The
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-buffer-view-format-features format features>
+--     of @vertexFormat@ /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR'
+--
+-- -   #VUID-VkAccelerationStructureGeometryLinearSweptSpheresDataNV-radiusFormat-10424#
+--     The
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-buffer-view-format-features format features>
+--     of @radiusFormat@ /must/ contain
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_ACCELERATION_STRUCTURE_RADIUS_BUFFER_BIT_NV'
+--
+-- -   #VUID-VkAccelerationStructureGeometryLinearSweptSpheresDataNV-radiusData-10426#
+--     All values referenced in @radiusData@ /must/ be greater than or
+--     equal to @0@
+--
+-- -   #VUID-VkAccelerationStructureGeometryLinearSweptSpheresDataNV-indexingMode-10427#
+--     If @indexingMode@ is 'RAY_TRACING_LSS_INDEXING_MODE_SUCCESSIVE_NV',
+--     @indexData@ /must/ not be @NULL@
+--
+-- -   #VUID-VkAccelerationStructureGeometryLinearSweptSpheresDataNV-indexData-10428#
+--     @indexType@ /must/ be
+--     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT16',
+--     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT32', or
+--     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkAccelerationStructureGeometryLinearSweptSpheresDataNV-sType-sType#
+--     @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_LINEAR_SWEPT_SPHERES_DATA_NV'
+--
+-- -   #VUID-VkAccelerationStructureGeometryLinearSweptSpheresDataNV-vertexFormat-parameter#
+--     @vertexFormat@ /must/ be a valid 'Vulkan.Core10.Enums.Format.Format'
+--     value
+--
+-- -   #VUID-VkAccelerationStructureGeometryLinearSweptSpheresDataNV-vertexData-parameter#
+--     @vertexData@ /must/ be a valid
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.DeviceOrHostAddressConstKHR'
+--     union
+--
+-- -   #VUID-VkAccelerationStructureGeometryLinearSweptSpheresDataNV-radiusFormat-parameter#
+--     @radiusFormat@ /must/ be a valid 'Vulkan.Core10.Enums.Format.Format'
+--     value
+--
+-- -   #VUID-VkAccelerationStructureGeometryLinearSweptSpheresDataNV-radiusData-parameter#
+--     @radiusData@ /must/ be a valid
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.DeviceOrHostAddressConstKHR'
+--     union
+--
+-- -   #VUID-VkAccelerationStructureGeometryLinearSweptSpheresDataNV-indexType-parameter#
+--     @indexType@ /must/ be a valid
+--     'Vulkan.Core10.Enums.IndexType.IndexType' value
+--
+-- -   #VUID-VkAccelerationStructureGeometryLinearSweptSpheresDataNV-indexData-parameter#
+--     @indexData@ /must/ be a valid
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.DeviceOrHostAddressConstKHR'
+--     union
+--
+-- -   #VUID-VkAccelerationStructureGeometryLinearSweptSpheresDataNV-indexingMode-parameter#
+--     @indexingMode@ /must/ be a valid 'RayTracingLssIndexingModeNV' value
+--
+-- -   #VUID-VkAccelerationStructureGeometryLinearSweptSpheresDataNV-endCapsMode-parameter#
+--     @endCapsMode@ /must/ be a valid
+--     'RayTracingLssPrimitiveEndCapsModeNV' value
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureGeometryKHR'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing_linear_swept_spheres VK_NV_ray_tracing_linear_swept_spheres>,
+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.DeviceOrHostAddressConstKHR',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
+-- 'Vulkan.Core10.Enums.Format.Format',
+-- 'Vulkan.Core10.Enums.IndexType.IndexType',
+-- 'RayTracingLssIndexingModeNV', 'RayTracingLssPrimitiveEndCapsModeNV',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data AccelerationStructureGeometryLinearSweptSpheresDataNV = AccelerationStructureGeometryLinearSweptSpheresDataNV
+  { -- | @vertexFormat@ is the 'Vulkan.Core10.Enums.Format.Format' of each LSS
+    -- vertex element.
+    vertexFormat :: Format
+  , -- | @vertexData@ is a device or host address of memory containing vertex
+    -- data for this geometry.
+    vertexData :: DeviceOrHostAddressConstKHR
+  , -- | @vertexStride@ is the stride in bytes between each vertex element.
+    vertexStride :: DeviceSize
+  , -- | @radiusFormat@ is the 'Vulkan.Core10.Enums.Format.Format' of each LSS
+    -- radius.
+    radiusFormat :: Format
+  , -- | @radiusData@ is a device or host address of memory containing LSS radius
+    -- data value.
+    radiusData :: DeviceOrHostAddressConstKHR
+  , -- | @radiusStride@ is the stride in bytes between each radius value.
+    radiusStride :: DeviceSize
+  , -- | @indexType@ is the 'Vulkan.Core10.Enums.IndexType.IndexType' of each
+    -- index element.
+    indexType :: IndexType
+  , -- | @indexData@ is a device or host address of memory containing index data
+    -- for vertex and radius buffers for this geometry. When @indexType@ is
+    -- 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR' it /must/ be @NULL@.
+    indexData :: DeviceOrHostAddressConstKHR
+  , -- | @indexStride@ is the stride in bytes between each index element.
+    indexStride :: DeviceSize
+  , -- | @indexingMode@ is a 'RayTracingLssIndexingModeNV' value specifying the
+    -- mode of indexing.
+    indexingMode :: RayTracingLssIndexingModeNV
+  , -- | @endCapsMode@ is a 'RayTracingLssPrimitiveEndCapsModeNV' value
+    -- specifying the endcaps mode for LSS primitives.
+    endCapsMode :: RayTracingLssPrimitiveEndCapsModeNV
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (AccelerationStructureGeometryLinearSweptSpheresDataNV)
+#endif
+deriving instance Show AccelerationStructureGeometryLinearSweptSpheresDataNV
+
+instance ToCStruct AccelerationStructureGeometryLinearSweptSpheresDataNV where
+  withCStruct x f = allocaBytes 96 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p AccelerationStructureGeometryLinearSweptSpheresDataNV{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_LINEAR_SWEPT_SPHERES_DATA_NV)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr Format)) (vertexFormat)
+    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr DeviceOrHostAddressConstKHR)) (vertexData) . ($ ())
+    lift $ poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (vertexStride)
+    lift $ poke ((p `plusPtr` 40 :: Ptr Format)) (radiusFormat)
+    ContT $ pokeCStruct ((p `plusPtr` 48 :: Ptr DeviceOrHostAddressConstKHR)) (radiusData) . ($ ())
+    lift $ poke ((p `plusPtr` 56 :: Ptr DeviceSize)) (radiusStride)
+    lift $ poke ((p `plusPtr` 64 :: Ptr IndexType)) (indexType)
+    ContT $ pokeCStruct ((p `plusPtr` 72 :: Ptr DeviceOrHostAddressConstKHR)) (indexData) . ($ ())
+    lift $ poke ((p `plusPtr` 80 :: Ptr DeviceSize)) (indexStride)
+    lift $ poke ((p `plusPtr` 88 :: Ptr RayTracingLssIndexingModeNV)) (indexingMode)
+    lift $ poke ((p `plusPtr` 92 :: Ptr RayTracingLssPrimitiveEndCapsModeNV)) (endCapsMode)
+    lift $ f
+  cStructSize = 96
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_LINEAR_SWEPT_SPHERES_DATA_NV)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr Format)) (zero)
+    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr DeviceOrHostAddressConstKHR)) (zero) . ($ ())
+    lift $ poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (zero)
+    lift $ poke ((p `plusPtr` 40 :: Ptr Format)) (zero)
+    ContT $ pokeCStruct ((p `plusPtr` 48 :: Ptr DeviceOrHostAddressConstKHR)) (zero) . ($ ())
+    lift $ poke ((p `plusPtr` 56 :: Ptr DeviceSize)) (zero)
+    lift $ poke ((p `plusPtr` 64 :: Ptr IndexType)) (zero)
+    ContT $ pokeCStruct ((p `plusPtr` 72 :: Ptr DeviceOrHostAddressConstKHR)) (zero) . ($ ())
+    lift $ poke ((p `plusPtr` 80 :: Ptr DeviceSize)) (zero)
+    lift $ poke ((p `plusPtr` 88 :: Ptr RayTracingLssIndexingModeNV)) (zero)
+    lift $ poke ((p `plusPtr` 92 :: Ptr RayTracingLssPrimitiveEndCapsModeNV)) (zero)
+    lift $ f
+
+instance Zero AccelerationStructureGeometryLinearSweptSpheresDataNV where
+  zero = AccelerationStructureGeometryLinearSweptSpheresDataNV
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkAccelerationStructureGeometrySpheresDataNV - Structure specifying a
+-- sphere geometry in a bottom-level acceleration structure
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkAccelerationStructureGeometrySpheresDataNV-None-10429# The
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-spheres spheres>
+--     feature /must/ be enabled
+--
+-- -   #VUID-VkAccelerationStructureGeometrySpheresDataNV-vertexStride-10431#
+--     @vertexStride@ /must/ be a multiple of:
+--
+--     -   the
+--         <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats size of the format>
+--         specified in @vertexFormat@ if that format is a
+--         <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-packed packed format>
+--
+--     -   the smallest
+--         <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats component size>
+--         specified in @vertexFormat@ if that format is not a
+--         <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-packed packed format>
+--
+-- -   #VUID-VkAccelerationStructureGeometrySpheresDataNV-vertexStride-10432#
+--     @vertexStride@ and @radiusStride@ /must/ be less than or equal to
+--     232-1
+--
+-- -   #VUID-VkAccelerationStructureGeometrySpheresDataNV-vertexFormat-10434#
+--     The
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-buffer-view-format-features format features>
+--     of @vertexFormat@ /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR'
+--
+-- -   #VUID-VkAccelerationStructureGeometrySpheresDataNV-radiusFormat-10435#
+--     The
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-buffer-view-format-features format features>
+--     of @radiusFormat@ /must/ contain
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_ACCELERATION_STRUCTURE_RADIUS_BUFFER_BIT_NV'
+--
+-- -   #VUID-VkAccelerationStructureGeometrySpheresDataNV-radiusData-10436#
+--     All values referenced in @radiusData@ /must/ be greater than or
+--     equal to @0@
+--
+-- -   #VUID-VkAccelerationStructureGeometrySpheresDataNV-indexData-10437#
+--     @indexType@ /must/ be
+--     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT16',
+--     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT32',
+--     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkAccelerationStructureGeometrySpheresDataNV-sType-sType#
+--     @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_SPHERES_DATA_NV'
+--
+-- -   #VUID-VkAccelerationStructureGeometrySpheresDataNV-vertexFormat-parameter#
+--     @vertexFormat@ /must/ be a valid 'Vulkan.Core10.Enums.Format.Format'
+--     value
+--
+-- -   #VUID-VkAccelerationStructureGeometrySpheresDataNV-vertexData-parameter#
+--     @vertexData@ /must/ be a valid
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.DeviceOrHostAddressConstKHR'
+--     union
+--
+-- -   #VUID-VkAccelerationStructureGeometrySpheresDataNV-radiusFormat-parameter#
+--     @radiusFormat@ /must/ be a valid 'Vulkan.Core10.Enums.Format.Format'
+--     value
+--
+-- -   #VUID-VkAccelerationStructureGeometrySpheresDataNV-radiusData-parameter#
+--     @radiusData@ /must/ be a valid
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.DeviceOrHostAddressConstKHR'
+--     union
+--
+-- -   #VUID-VkAccelerationStructureGeometrySpheresDataNV-indexType-parameter#
+--     @indexType@ /must/ be a valid
+--     'Vulkan.Core10.Enums.IndexType.IndexType' value
+--
+-- -   #VUID-VkAccelerationStructureGeometrySpheresDataNV-indexData-parameter#
+--     @indexData@ /must/ be a valid
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.DeviceOrHostAddressConstKHR'
+--     union
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureGeometryKHR'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing_linear_swept_spheres VK_NV_ray_tracing_linear_swept_spheres>,
+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.DeviceOrHostAddressConstKHR',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
+-- 'Vulkan.Core10.Enums.Format.Format',
+-- 'Vulkan.Core10.Enums.IndexType.IndexType',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data AccelerationStructureGeometrySpheresDataNV = AccelerationStructureGeometrySpheresDataNV
+  { -- | @vertexFormat@ is the 'Vulkan.Core10.Enums.Format.Format' of each
+    -- sphere’s vertex element.
+    vertexFormat :: Format
+  , -- | @vertexData@ is a device or host address of memory containing vertex
+    -- data in form of pairs of centers of spheres that define all sphere
+    -- geometry.
+    vertexData :: DeviceOrHostAddressConstKHR
+  , -- | @vertexStride@ is the stride in bytes between each vertex element.
+    vertexStride :: DeviceSize
+  , -- | @radiusFormat@ is the 'Vulkan.Core10.Enums.Format.Format' of each
+    -- sphere’s radius.
+    radiusFormat :: Format
+  , -- | @radiusData@ is a device or host address of memory containing sphere’s
+    -- radius data value.
+    radiusData :: DeviceOrHostAddressConstKHR
+  , -- | @radiusStride@ is the stride in bytes between each radius value.
+    radiusStride :: DeviceSize
+  , -- | @indexType@ is the 'Vulkan.Core10.Enums.IndexType.IndexType' of each
+    -- index element.
+    indexType :: IndexType
+  , -- | @indexData@ is a device or host address of memory containing index data
+    -- for vertex and radius buffers for this geometry. When @indexType@ is
+    -- 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR' it /must/ be @NULL@.
+    indexData :: DeviceOrHostAddressConstKHR
+  , -- | @indexStride@ is the stride in bytes between each index element.
+    indexStride :: DeviceSize
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (AccelerationStructureGeometrySpheresDataNV)
+#endif
+deriving instance Show AccelerationStructureGeometrySpheresDataNV
+
+instance ToCStruct AccelerationStructureGeometrySpheresDataNV where
+  withCStruct x f = allocaBytes 88 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p AccelerationStructureGeometrySpheresDataNV{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_SPHERES_DATA_NV)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr Format)) (vertexFormat)
+    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr DeviceOrHostAddressConstKHR)) (vertexData) . ($ ())
+    lift $ poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (vertexStride)
+    lift $ poke ((p `plusPtr` 40 :: Ptr Format)) (radiusFormat)
+    ContT $ pokeCStruct ((p `plusPtr` 48 :: Ptr DeviceOrHostAddressConstKHR)) (radiusData) . ($ ())
+    lift $ poke ((p `plusPtr` 56 :: Ptr DeviceSize)) (radiusStride)
+    lift $ poke ((p `plusPtr` 64 :: Ptr IndexType)) (indexType)
+    ContT $ pokeCStruct ((p `plusPtr` 72 :: Ptr DeviceOrHostAddressConstKHR)) (indexData) . ($ ())
+    lift $ poke ((p `plusPtr` 80 :: Ptr DeviceSize)) (indexStride)
+    lift $ f
+  cStructSize = 88
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_SPHERES_DATA_NV)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr Format)) (zero)
+    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr DeviceOrHostAddressConstKHR)) (zero) . ($ ())
+    lift $ poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (zero)
+    lift $ poke ((p `plusPtr` 40 :: Ptr Format)) (zero)
+    ContT $ pokeCStruct ((p `plusPtr` 48 :: Ptr DeviceOrHostAddressConstKHR)) (zero) . ($ ())
+    lift $ poke ((p `plusPtr` 56 :: Ptr DeviceSize)) (zero)
+    lift $ poke ((p `plusPtr` 64 :: Ptr IndexType)) (zero)
+    ContT $ pokeCStruct ((p `plusPtr` 72 :: Ptr DeviceOrHostAddressConstKHR)) (zero) . ($ ())
+    lift $ poke ((p `plusPtr` 80 :: Ptr DeviceSize)) (zero)
+    lift $ f
+
+instance Zero AccelerationStructureGeometrySpheresDataNV where
+  zero = AccelerationStructureGeometrySpheresDataNV
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkPhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV - Structure
+-- describing the ray tracing linear swept spheres features that can be
+-- supported by an implementation
+--
+-- = Members
+--
+-- This structure describes the following features:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing_linear_swept_spheres VK_NV_ray_tracing_linear_swept_spheres>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV = PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
+  { -- | #features-spheres# @spheres@ indicates whether the implementation
+    -- supports sphere primitives in ray tracing.
+    spheres :: Bool
+  , -- | #features-linearSweptSpheres# @linearSweptSpheres@ indicates whether the
+    -- implementation supports linear swept sphere primitives in ray tracing.
+    linearSweptSpheres :: Bool
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV)
+#endif
+deriving instance Show PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
+
+instance ToCStruct PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_LINEAR_SWEPT_SPHERES_FEATURES_NV)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (spheres))
+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (linearSweptSpheres))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_LINEAR_SWEPT_SPHERES_FEATURES_NV)
+    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 PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV where
+  peekCStruct p = do
+    spheres <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    linearSweptSpheres <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
+    pure $ PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
+             (bool32ToBool spheres) (bool32ToBool linearSweptSpheres)
+
+instance Storable PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV where
+  zero = PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
+           zero
+           zero
+
+
+-- | VkRayTracingLssIndexingModeNV - LSS indexing mode
+--
+-- = Description
+--
+-- -   'RAY_TRACING_LSS_INDEXING_MODE_LIST_NV' specifies that a list of
+--     indices is provided where each consecutive pair of indices define a
+--     LSS primitive.
+--
+-- -   'RAY_TRACING_LSS_INDEXING_MODE_SUCCESSIVE_NV' specifies a successive
+--     implicit indexing format, in which each LSS primitive is defined by
+--     two successive positions and radii, (k, k + 1), where k is a single
+--     index provided in the index buffer. In this indexing scheme, there
+--     is a 1:1 mapping between the index buffer and primitive index within
+--     the geometry.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing_linear_swept_spheres VK_NV_ray_tracing_linear_swept_spheres>,
+-- 'AccelerationStructureGeometryLinearSweptSpheresDataNV'
+newtype RayTracingLssIndexingModeNV = RayTracingLssIndexingModeNV Int32
+  deriving newtype (Eq, Ord, Storable, Zero)
+
+-- No documentation found for Nested "VkRayTracingLssIndexingModeNV" "VK_RAY_TRACING_LSS_INDEXING_MODE_LIST_NV"
+pattern RAY_TRACING_LSS_INDEXING_MODE_LIST_NV = RayTracingLssIndexingModeNV 0
+
+-- No documentation found for Nested "VkRayTracingLssIndexingModeNV" "VK_RAY_TRACING_LSS_INDEXING_MODE_SUCCESSIVE_NV"
+pattern RAY_TRACING_LSS_INDEXING_MODE_SUCCESSIVE_NV = RayTracingLssIndexingModeNV 1
+
+{-# COMPLETE
+  RAY_TRACING_LSS_INDEXING_MODE_LIST_NV
+  , RAY_TRACING_LSS_INDEXING_MODE_SUCCESSIVE_NV ::
+    RayTracingLssIndexingModeNV
+  #-}
+
+conNameRayTracingLssIndexingModeNV :: String
+conNameRayTracingLssIndexingModeNV = "RayTracingLssIndexingModeNV"
+
+enumPrefixRayTracingLssIndexingModeNV :: String
+enumPrefixRayTracingLssIndexingModeNV = "RAY_TRACING_LSS_INDEXING_MODE_"
+
+showTableRayTracingLssIndexingModeNV :: [(RayTracingLssIndexingModeNV, String)]
+showTableRayTracingLssIndexingModeNV =
+  [
+    ( RAY_TRACING_LSS_INDEXING_MODE_LIST_NV
+    , "LIST_NV"
+    )
+  ,
+    ( RAY_TRACING_LSS_INDEXING_MODE_SUCCESSIVE_NV
+    , "SUCCESSIVE_NV"
+    )
+  ]
+
+instance Show RayTracingLssIndexingModeNV where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixRayTracingLssIndexingModeNV
+      showTableRayTracingLssIndexingModeNV
+      conNameRayTracingLssIndexingModeNV
+      (\(RayTracingLssIndexingModeNV x) -> x)
+      (showsPrec 11)
+
+instance Read RayTracingLssIndexingModeNV where
+  readPrec =
+    enumReadPrec
+      enumPrefixRayTracingLssIndexingModeNV
+      showTableRayTracingLssIndexingModeNV
+      conNameRayTracingLssIndexingModeNV
+      RayTracingLssIndexingModeNV
+
+-- | VkRayTracingLssPrimitiveEndCapsModeNV - LSS endcaps mode
+--
+-- = Description
+--
+-- -   'RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_NONE_NV' disables all
+--     endcaps and the chain boundaries have no influence.
+--
+-- -   'RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_CHAINED_NV' specifies that
+--     when 'RAY_TRACING_LSS_INDEXING_MODE_SUCCESSIVE_NV' is used as
+--     indexing mode for the LSS primitive, the first primitive in each
+--     chain will have both endcaps enabled, and every following primitive
+--     in the chain only has endcaps at the trailing position enabled.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing_linear_swept_spheres VK_NV_ray_tracing_linear_swept_spheres>,
+-- 'AccelerationStructureGeometryLinearSweptSpheresDataNV'
+newtype RayTracingLssPrimitiveEndCapsModeNV = RayTracingLssPrimitiveEndCapsModeNV Int32
+  deriving newtype (Eq, Ord, Storable, Zero)
+
+-- No documentation found for Nested "VkRayTracingLssPrimitiveEndCapsModeNV" "VK_RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_NONE_NV"
+pattern RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_NONE_NV = RayTracingLssPrimitiveEndCapsModeNV 0
+
+-- No documentation found for Nested "VkRayTracingLssPrimitiveEndCapsModeNV" "VK_RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_CHAINED_NV"
+pattern RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_CHAINED_NV = RayTracingLssPrimitiveEndCapsModeNV 1
+
+{-# COMPLETE
+  RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_NONE_NV
+  , RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_CHAINED_NV ::
+    RayTracingLssPrimitiveEndCapsModeNV
+  #-}
+
+conNameRayTracingLssPrimitiveEndCapsModeNV :: String
+conNameRayTracingLssPrimitiveEndCapsModeNV = "RayTracingLssPrimitiveEndCapsModeNV"
+
+enumPrefixRayTracingLssPrimitiveEndCapsModeNV :: String
+enumPrefixRayTracingLssPrimitiveEndCapsModeNV = "RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_"
+
+showTableRayTracingLssPrimitiveEndCapsModeNV :: [(RayTracingLssPrimitiveEndCapsModeNV, String)]
+showTableRayTracingLssPrimitiveEndCapsModeNV =
+  [
+    ( RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_NONE_NV
+    , "NONE_NV"
+    )
+  ,
+    ( RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_CHAINED_NV
+    , "CHAINED_NV"
+    )
+  ]
+
+instance Show RayTracingLssPrimitiveEndCapsModeNV where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixRayTracingLssPrimitiveEndCapsModeNV
+      showTableRayTracingLssPrimitiveEndCapsModeNV
+      conNameRayTracingLssPrimitiveEndCapsModeNV
+      (\(RayTracingLssPrimitiveEndCapsModeNV x) -> x)
+      (showsPrec 11)
+
+instance Read RayTracingLssPrimitiveEndCapsModeNV where
+  readPrec =
+    enumReadPrec
+      enumPrefixRayTracingLssPrimitiveEndCapsModeNV
+      showTableRayTracingLssPrimitiveEndCapsModeNV
+      conNameRayTracingLssPrimitiveEndCapsModeNV
+      RayTracingLssPrimitiveEndCapsModeNV
+
+type NV_RAY_TRACING_LINEAR_SWEPT_SPHERES_SPEC_VERSION = 1
+
+-- No documentation found for TopLevel "VK_NV_RAY_TRACING_LINEAR_SWEPT_SPHERES_SPEC_VERSION"
+pattern NV_RAY_TRACING_LINEAR_SWEPT_SPHERES_SPEC_VERSION :: forall a . Integral a => a
+pattern NV_RAY_TRACING_LINEAR_SWEPT_SPHERES_SPEC_VERSION = 1
+
+
+type NV_RAY_TRACING_LINEAR_SWEPT_SPHERES_EXTENSION_NAME = "VK_NV_ray_tracing_linear_swept_spheres"
+
+-- No documentation found for TopLevel "VK_NV_RAY_TRACING_LINEAR_SWEPT_SPHERES_EXTENSION_NAME"
+pattern NV_RAY_TRACING_LINEAR_SWEPT_SPHERES_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern NV_RAY_TRACING_LINEAR_SWEPT_SPHERES_EXTENSION_NAME = "VK_NV_ray_tracing_linear_swept_spheres"
+
diff --git a/src/Vulkan/Extensions/VK_NV_ray_tracing_linear_swept_spheres.hs-boot b/src/Vulkan/Extensions/VK_NV_ray_tracing_linear_swept_spheres.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_NV_ray_tracing_linear_swept_spheres.hs-boot
@@ -0,0 +1,194 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_NV_ray_tracing_linear_swept_spheres - device extension
+--
+-- = VK_NV_ray_tracing_linear_swept_spheres
+--
+-- [__Name String__]
+--     @VK_NV_ray_tracing_linear_swept_spheres@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     430
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Not ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_ray_tracing_pipeline VK_KHR_ray_tracing_pipeline>
+--
+-- [__SPIR-V Dependencies__]
+--
+--     -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/NV/SPV_NV_linear_swept_spheres.html SPV_NV_linear_swept_spheres>
+--
+-- [__Contact__]
+--
+--     -   Vikram Kushwaha
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_NV_ray_tracing_linear_swept_spheres] @vkushwaha%0A*Here describe the issue or question you have about the VK_NV_ray_tracing_linear_swept_spheres extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_NV_ray_tracing_linear_swept_spheres.adoc VK_NV_ray_tracing_linear_swept_spheres>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2025-01-03
+--
+-- [__Interactions and External Dependencies__]
+--
+--     -   This extension requires
+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/NV/SPV_NV_linear_swept_spheres.html SPV_NV_linear_swept_spheres>
+--
+--     -   This extension provides API support for
+--         <https://github.com/KhronosGroup/GLSL/blob/main/extensions/nv/GLSL_NV_linear_swept_spheres.txt GL_NV_linear_swept_spheres>
+--
+-- [__Contributors__]
+--
+--     -   Vikram Kushwaha, NVIDIA
+--
+--     -   Eric Werness, NVIDIA
+--
+--     -   Daniel Koch, NVIDIA
+--
+--     -   Ashwin Lele, NVIDIA
+--
+--     -   Nathan Morrical, NVIDIA
+--
+-- == Description
+--
+-- This extension adds two new primitives for ray tracing: a sphere
+-- primitive and a linear swept sphere (LSS) primitive. The purpose of the
+-- LSS primitive is to enable rendering of high quality hair and fur using
+-- a compact primitive representation encoded in the acceleration
+-- structure. Sphere primitives are defined by a position and a radius and
+-- are a subset of LSS, but are useful in their own right, for example for
+-- particle systems.
+--
+-- This extension adds support for the following SPIR-V extension in
+-- Vulkan:
+--
+-- -   @SPV_NV_linear_swept_spheres@
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureGeometryKHR':
+--
+--     -   'AccelerationStructureGeometryLinearSweptSpheresDataNV'
+--
+--     -   'AccelerationStructureGeometrySpheresDataNV'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV'
+--
+-- == New Enums
+--
+-- -   'RayTracingLssIndexingModeNV'
+--
+-- -   'RayTracingLssPrimitiveEndCapsModeNV'
+--
+-- == New Enum Constants
+--
+-- -   'NV_RAY_TRACING_LINEAR_SWEPT_SPHERES_EXTENSION_NAME'
+--
+-- -   'NV_RAY_TRACING_LINEAR_SWEPT_SPHERES_SPEC_VERSION'
+--
+-- -   Extending
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FormatFeatureFlagBits2':
+--
+--     -   'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_ACCELERATION_STRUCTURE_RADIUS_BUFFER_BIT_NV'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.GeometryTypeKHR':
+--
+--     -   'Vulkan.Extensions.VK_KHR_acceleration_structure.GEOMETRY_TYPE_LINEAR_SWEPT_SPHERES_NV'
+--
+--     -   'Vulkan.Extensions.VK_KHR_acceleration_structure.GEOMETRY_TYPE_SPHERES_NV'
+--
+-- -   Extending
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PipelineCreateFlagBits2':
+--
+--     -   'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_RAY_TRACING_ALLOW_SPHERES_AND_LINEAR_SWEPT_SPHERES_BIT_NV'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_LINEAR_SWEPT_SPHERES_DATA_NV'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_SPHERES_DATA_NV'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_LINEAR_SWEPT_SPHERES_FEATURES_NV'
+--
+-- == New or Modified Built-In Variables
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-hitissphere HitIsSphereNV>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-hitislss HitIsLSSNV>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-hitsphereposition HitSpherePositionNV>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-hitsphereradius HitSphereRadiusNV>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-hitlsspositions HitLSSPositionsNV>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-hitlssradii HitLSSRadiiNV>
+--
+-- == New SPIR-V Capabilities
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-RayTracingSpheresGeometryNV RayTracingSpheresGeometryNV>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-RayTracingLinearSweptSpheresGeometryNV RayTracingLinearSweptSpheresGeometryNV>
+--
+-- == Version History
+--
+-- -   Revision 1, 2025-01-03 (Vikram Kushwaha)
+--
+--     -   Initial draft
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_NV_ray_tracing_linear_swept_spheres Vulkan Specification>.
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_NV_ray_tracing_linear_swept_spheres  ( AccelerationStructureGeometryLinearSweptSpheresDataNV
+                                                                 , AccelerationStructureGeometrySpheresDataNV
+                                                                 , PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
+                                                                 ) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data AccelerationStructureGeometryLinearSweptSpheresDataNV
+
+instance ToCStruct AccelerationStructureGeometryLinearSweptSpheresDataNV
+instance Show AccelerationStructureGeometryLinearSweptSpheresDataNV
+
+
+data AccelerationStructureGeometrySpheresDataNV
+
+instance ToCStruct AccelerationStructureGeometrySpheresDataNV
+instance Show AccelerationStructureGeometrySpheresDataNV
+
+
+data PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
+
+instance ToCStruct PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
+instance Show PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
+
+instance FromCStruct PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
+
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
@@ -166,7 +166,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_ray_tracing_motion_blur Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -283,12 +283,22 @@
 -- 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. 'PhysicalDeviceRayTracingMotionBlurFeaturesNV' /can/ also be
--- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceRayTracingMotionBlurFeaturesNV', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing_motion_blur VK_NV_ray_tracing_motion_blur>,
@@ -364,8 +374,12 @@
 -- Indexing for 'AccelerationStructureGeometryMotionTrianglesDataNV'
 -- @vertexData@ is equivalent to the basic vertex position data.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureGeometryTrianglesDataKHR'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing_motion_blur VK_NV_ray_tracing_motion_blur>,
@@ -403,8 +417,12 @@
 -- | VkAccelerationStructureMotionInfoNV - Structure specifying the
 -- parameters of a newly created acceleration structure object
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureCreateInfoKHR'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing_motion_blur VK_NV_ray_tracing_motion_blur>,
@@ -662,8 +680,8 @@
 -- = Description
 --
 -- The C language specification does not define the ordering of bit-fields,
--- but in practice, this struct produces the correct layout with existing
--- compilers. The intended bit pattern is for the following:
+-- but in practice, this structure produces the correct layout with
+-- existing compilers. The intended bit pattern is for the following:
 --
 -- If a compiler produces code that diverges from that pattern,
 -- applications /must/ employ another method to set values according to the
@@ -806,8 +824,8 @@
 -- = Description
 --
 -- The C language specification does not define the ordering of bit-fields,
--- but in practice, this struct produces the correct layout with existing
--- compilers. The intended bit pattern is for the following:
+-- but in practice, this structure produces the correct layout with
+-- existing compilers. The intended bit pattern is for the following:
 --
 -- If a compiler produces code that diverges from that pattern,
 -- applications /must/ employ another method to set values according to the
@@ -1136,6 +1154,19 @@
 -- acceleration structure motion instance data for building into an
 -- acceleration structure geometry
 --
+-- = Description
+--
+-- -   'ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_STATIC_NV' specifies
+--     that the instance is a static instance with no instance motion.
+--
+-- -   'ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MATRIX_MOTION_NV'
+--     specifies that the instance is a motion instance with motion
+--     specified by interpolation between two matrices.
+--
+-- -   'ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_SRT_MOTION_NV'
+--     specifies that the instance is a motion instance with motion
+--     specified by interpolation in the SRT decomposition.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing_motion_blur VK_NV_ray_tracing_motion_blur>,
@@ -1143,18 +1174,13 @@
 newtype AccelerationStructureMotionInstanceTypeNV = AccelerationStructureMotionInstanceTypeNV Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_STATIC_NV' specifies that
--- the instance is a static instance with no instance motion.
+-- No documentation found for Nested "VkAccelerationStructureMotionInstanceTypeNV" "VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_STATIC_NV"
 pattern ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_STATIC_NV = AccelerationStructureMotionInstanceTypeNV 0
 
--- | 'ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MATRIX_MOTION_NV' specifies
--- that the instance is a motion instance with motion specified by
--- interpolation between two matrices.
+-- No documentation found for Nested "VkAccelerationStructureMotionInstanceTypeNV" "VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MATRIX_MOTION_NV"
 pattern ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MATRIX_MOTION_NV = AccelerationStructureMotionInstanceTypeNV 1
 
--- | 'ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_SRT_MOTION_NV' specifies
--- that the instance is a motion instance with motion specified by
--- interpolation in the SRT decomposition.
+-- No documentation found for Nested "VkAccelerationStructureMotionInstanceTypeNV" "VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_SRT_MOTION_NV"
 pattern ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_SRT_MOTION_NV = AccelerationStructureMotionInstanceTypeNV 2
 
 {-# COMPLETE
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
@@ -166,7 +166,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_ray_tracing_motion_blur Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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_validation.hs b/src/Vulkan/Extensions/VK_NV_ray_tracing_validation.hs
--- a/src/Vulkan/Extensions/VK_NV_ray_tracing_validation.hs
+++ b/src/Vulkan/Extensions/VK_NV_ray_tracing_validation.hs
@@ -21,7 +21,9 @@
 --     Not ratified
 --
 -- [__Extension and Version Dependencies__]
---     None
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
 --
 -- [__Contact__]
 --
@@ -80,7 +82,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_ray_tracing_validation Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_NV_ray_tracing_validation Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -129,11 +131,21 @@
 -- 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. 'PhysicalDeviceRayTracingValidationFeaturesNV' /can/ also be
--- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceRayTracingValidationFeaturesNV', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Extensions/VK_NV_ray_tracing_validation.hs-boot b/src/Vulkan/Extensions/VK_NV_ray_tracing_validation.hs-boot
--- a/src/Vulkan/Extensions/VK_NV_ray_tracing_validation.hs-boot
+++ b/src/Vulkan/Extensions/VK_NV_ray_tracing_validation.hs-boot
@@ -21,7 +21,9 @@
 --     Not ratified
 --
 -- [__Extension and Version Dependencies__]
---     None
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
 --
 -- [__Contact__]
 --
@@ -80,7 +82,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_ray_tracing_validation Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_NV_ray_tracing_validation Vulkan Specification>.
 --
 -- This 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
@@ -79,7 +79,8 @@
 --
 -- == New Structures
 --
--- -   Extending 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo':
+-- -   Extending
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo':
 --
 --     -   'PipelineRepresentativeFragmentTestStateCreateInfoNV'
 --
@@ -159,7 +160,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_representative_fragment_test Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -210,13 +211,22 @@
 -- structure passed to
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
 -- it is filled in to indicate whether each corresponding feature is
--- supported. 'PhysicalDeviceRepresentativeFragmentTestFeaturesNV' /can/
--- also be used in the @pNext@ chain of
--- 'Vulkan.Core10.Device.DeviceCreateInfo' to selectively enable these
--- features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceRepresentativeFragmentTestFeaturesNV', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_representative_fragment_test VK_NV_representative_fragment_test>,
@@ -226,7 +236,7 @@
   { -- | #features-representativeFragmentTest# @representativeFragmentTest@
     -- indicates whether the implementation supports the representative
     -- fragment test. See
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-rep-frag-test Representative Fragment Test>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#fragops-rep-frag-test Representative Fragment Test>.
     representativeFragmentTest :: Bool }
   deriving (Typeable, Eq)
 #if defined(GENERIC_INSTANCES)
@@ -280,7 +290,11 @@
 -- execution mode, the representative fragment shader test has no effect,
 -- even if enabled.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'
 --
 -- = See Also
 --
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
@@ -79,7 +79,8 @@
 --
 -- == New Structures
 --
--- -   Extending 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo':
+-- -   Extending
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo':
 --
 --     -   'PipelineRepresentativeFragmentTestStateCreateInfoNV'
 --
@@ -159,7 +160,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_representative_fragment_test Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -80,11 +80,11 @@
 --
 -- == New Variable Decoration
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-samplemask OverrideCoverageNV in SampleMask>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-samplemask OverrideCoverageNV in SampleMask>
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-SampleMaskOverrideCoverageNV SampleMaskOverrideCoverageNV>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-SampleMaskOverrideCoverageNV SampleMaskOverrideCoverageNV>
 --
 -- == Version History
 --
@@ -99,7 +99,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_sample_mask_override_coverage Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -80,7 +80,8 @@
 --
 --     -   'PhysicalDeviceExclusiveScissorFeaturesNV'
 --
--- -   Extending 'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo':
+-- -   Extending
+--     'Vulkan.Core10.GraphicsPipeline.PipelineViewportStateCreateInfo':
 --
 --     -   'PipelineViewportExclusiveScissorStateCreateInfoNV'
 --
@@ -131,7 +132,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_scissor_exclusive Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -213,11 +214,11 @@
 --
 -- This command sets the exclusive scissor rectangles for subsequent
 -- drawing commands when drawing using
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-objects shader objects>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader objects>,
 -- or when the graphics pipeline is created with
 -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV'
 -- set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
 -- Otherwise, this state is specified by the
 -- 'PipelineViewportExclusiveScissorStateCreateInfoNV'::@pExclusiveScissors@
 -- values used to create the currently active pipeline.
@@ -225,7 +226,7 @@
 -- == Valid Usage
 --
 -- -   #VUID-vkCmdSetExclusiveScissorNV-None-02031# The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-exclusiveScissor exclusiveScissor>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-exclusiveScissor exclusiveScissor>
 --     feature /must/ be enabled
 --
 -- -   #VUID-vkCmdSetExclusiveScissorNV-firstExclusiveScissor-02034# The
@@ -235,11 +236,11 @@
 --     inclusive
 --
 -- -   #VUID-vkCmdSetExclusiveScissorNV-firstExclusiveScissor-02035# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-multiViewport multiViewport>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-multiViewport multiViewport>
 --     feature is not enabled, @firstExclusiveScissor@ /must/ be @0@
 --
 -- -   #VUID-vkCmdSetExclusiveScissorNV-exclusiveScissorCount-02036# If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-multiViewport multiViewport>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-multiViewport multiViewport>
 --     feature is not enabled, @exclusiveScissorCount@ /must/ be @1@
 --
 -- -   #VUID-vkCmdSetExclusiveScissorNV-x-02037# The @x@ and @y@ members of
@@ -273,7 +274,8 @@
 --
 -- -   #VUID-vkCmdSetExclusiveScissorNV-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdSetExclusiveScissorNV-videocoding# This command /must/
 --     only be called outside of a video coding scope
@@ -295,10 +297,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
 -- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdSetExclusiveScissorNV is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_scissor_exclusive VK_NV_scissor_exclusive>,
@@ -353,11 +360,11 @@
 --
 -- This command sets the exclusive scissor enable for subsequent drawing
 -- commands when drawing using
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-objects shader objects>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader objects>,
 -- or when the graphics pipeline is created with
 -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV'
 -- set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
 -- Otherwise, this state is implied by the
 -- 'PipelineViewportExclusiveScissorStateCreateInfoNV'::@exclusiveScissorCount@
 -- value used to create the currently active pipeline, where all
@@ -369,7 +376,7 @@
 -- == Valid Usage
 --
 -- -   #VUID-vkCmdSetExclusiveScissorEnableNV-exclusiveScissor-07853# The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-exclusiveScissor exclusiveScissor>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-exclusiveScissor exclusiveScissor>
 --     feature /must/ be enabled, and the implementation /must/ support at
 --     least @specVersion@ @2@ of the @VK_NV_scissor_exclusive@ extension
 --
@@ -390,7 +397,8 @@
 --
 -- -   #VUID-vkCmdSetExclusiveScissorEnableNV-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdSetExclusiveScissorEnableNV-videocoding# This command
 --     /must/ only be called outside of a video coding scope
@@ -412,10 +420,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
 -- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdSetExclusiveScissorEnableNV is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_scissor_exclusive VK_NV_scissor_exclusive>,
@@ -461,7 +474,7 @@
 -- = Description
 --
 -- See
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-exclusive-scissor Exclusive Scissor Test>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#fragops-exclusive-scissor Exclusive Scissor Test>
 -- for more information.
 --
 -- If the 'PhysicalDeviceExclusiveScissorFeaturesNV' structure is included
@@ -470,12 +483,22 @@
 -- structure passed to
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
 -- it is filled in to indicate whether each corresponding feature is
--- supported. 'PhysicalDeviceExclusiveScissorFeaturesNV' /can/ also be used
--- in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceExclusiveScissorFeaturesNV', it /must/ add an instance of
+-- the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_scissor_exclusive VK_NV_scissor_exclusive>,
@@ -534,7 +557,7 @@
 -- is ignored.
 --
 -- When this structure is included in the @pNext@ chain of
--- 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo', it defines
+-- 'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo', it defines
 -- parameters of the exclusive scissor test. If this structure is not
 -- included in the @pNext@ chain, it is equivalent to specifying this
 -- structure with an @exclusiveScissorCount@ of @0@.
@@ -543,7 +566,7 @@
 --
 -- -   #VUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-exclusiveScissorCount-02027#
 --     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-multiViewport multiViewport>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-multiViewport multiViewport>
 --     feature is not enabled, @exclusiveScissorCount@ /must/ be @0@ or @1@
 --
 -- -   #VUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-exclusiveScissorCount-02028#
@@ -553,13 +576,19 @@
 -- -   #VUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-exclusiveScissorCount-02029#
 --     @exclusiveScissorCount@ /must/ be @0@ or greater than or equal to
 --     the @viewportCount@ member of
---     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'
+--     'Vulkan.Core10.GraphicsPipeline.PipelineViewportStateCreateInfo'
 --
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-sType-sType#
 --     @sType@ /must/ be
 --     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV'
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.GraphicsPipeline.PipelineViewportStateCreateInfo'
 --
 -- = See Also
 --
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
@@ -80,7 +80,8 @@
 --
 --     -   'PhysicalDeviceExclusiveScissorFeaturesNV'
 --
--- -   Extending 'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo':
+-- -   Extending
+--     'Vulkan.Core10.GraphicsPipeline.PipelineViewportStateCreateInfo':
 --
 --     -   'PipelineViewportExclusiveScissorStateCreateInfoNV'
 --
@@ -131,7 +132,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_scissor_exclusive Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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_atomic_float16_vector.hs b/src/Vulkan/Extensions/VK_NV_shader_atomic_float16_vector.hs
--- a/src/Vulkan/Extensions/VK_NV_shader_atomic_float16_vector.hs
+++ b/src/Vulkan/Extensions/VK_NV_shader_atomic_float16_vector.hs
@@ -21,7 +21,9 @@
 --     Not ratified
 --
 -- [__Extension and Version Dependencies__]
---     None
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
 --
 -- [__SPIR-V Dependencies__]
 --
@@ -79,7 +81,7 @@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-AtomicFloat16VectorNV AtomicFloat16VectorNV>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-AtomicFloat16VectorNV AtomicFloat16VectorNV>
 --
 -- == Version History
 --
@@ -94,7 +96,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_shader_atomic_float16_vector Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_NV_shader_atomic_float16_vector Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -142,12 +144,21 @@
 -- 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. 'PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV' /can/
--- also be used in the @pNext@ chain of
--- 'Vulkan.Core10.Device.DeviceCreateInfo' to selectively enable these
--- features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Extensions/VK_NV_shader_atomic_float16_vector.hs-boot b/src/Vulkan/Extensions/VK_NV_shader_atomic_float16_vector.hs-boot
--- a/src/Vulkan/Extensions/VK_NV_shader_atomic_float16_vector.hs-boot
+++ b/src/Vulkan/Extensions/VK_NV_shader_atomic_float16_vector.hs-boot
@@ -21,7 +21,9 @@
 --     Not ratified
 --
 -- [__Extension and Version Dependencies__]
---     None
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
 --
 -- [__SPIR-V Dependencies__]
 --
@@ -79,7 +81,7 @@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-AtomicFloat16VectorNV AtomicFloat16VectorNV>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-AtomicFloat16VectorNV AtomicFloat16VectorNV>
 --
 -- == Version History
 --
@@ -94,7 +96,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_shader_atomic_float16_vector Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_NV_shader_atomic_float16_vector Vulkan Specification>.
 --
 -- This 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
@@ -101,7 +101,7 @@
 -- This extension has a number of limitations. The
 -- @OpImageSampleFootprintNV@ instruction only supports for two- and
 -- three-dimensional textures. Footprint evaluation only supports the
--- CLAMP_TO_EDGE wrap mode; results are undefined for all other wrap modes.
+-- CLAMP_TO_EDGE wrap mode; results are poison for all other wrap modes.
 -- Only a limited set of granularity values and that set does not support
 -- separate coverage information for each texel in the original image.
 --
@@ -130,7 +130,7 @@
 --
 -- == New SPIR-V Capability
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-ImageFootprintNV ImageFootprintNV>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-ImageFootprintNV ImageFootprintNV>
 --
 -- == Issues
 --
@@ -265,7 +265,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_shader_image_footprint Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -309,7 +309,7 @@
 -- = Description
 --
 -- See
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#textures-footprint Texel Footprint Evaluation>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#textures-footprint Texel Footprint Evaluation>
 -- for more information.
 --
 -- If the 'PhysicalDeviceShaderImageFootprintFeaturesNV' structure is
@@ -318,11 +318,21 @@
 -- structure passed to
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
 -- it is filled in to indicate whether each corresponding feature is
--- supported. 'PhysicalDeviceShaderImageFootprintFeaturesNV' /can/ also be
--- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceShaderImageFootprintFeaturesNV', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
 --
 -- = See Also
 --
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
@@ -101,7 +101,7 @@
 -- This extension has a number of limitations. The
 -- @OpImageSampleFootprintNV@ instruction only supports for two- and
 -- three-dimensional textures. Footprint evaluation only supports the
--- CLAMP_TO_EDGE wrap mode; results are undefined for all other wrap modes.
+-- CLAMP_TO_EDGE wrap mode; results are poison for all other wrap modes.
 -- Only a limited set of granularity values and that set does not support
 -- separate coverage information for each texel in the original image.
 --
@@ -130,7 +130,7 @@
 --
 -- == New SPIR-V Capability
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-ImageFootprintNV ImageFootprintNV>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-ImageFootprintNV ImageFootprintNV>
 --
 -- == Issues
 --
@@ -265,7 +265,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_shader_image_footprint Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -89,17 +89,17 @@
 --
 -- == New or Modified Built-In Variables
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-warpspersmnv WarpsPerSMNV>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-warpspersmnv WarpsPerSMNV>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-smcountnv SMCountNV>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-smcountnv SMCountNV>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-warpidnv WarpIDNV>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-warpidnv WarpIDNV>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-smidnv SMIDNV>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-smidnv SMIDNV>
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-ShaderSMBuiltinsNV ShaderSMBuiltinsNV>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-ShaderSMBuiltinsNV ShaderSMBuiltinsNV>
 --
 -- == Issues
 --
@@ -127,7 +127,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_shader_sm_builtins Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -176,8 +176,12 @@
 -- it is filled in with each corresponding implementation-dependent
 -- property.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_shader_sm_builtins VK_NV_shader_sm_builtins>,
@@ -247,11 +251,21 @@
 -- structure passed to
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
 -- it is filled in to indicate whether each corresponding feature is
--- supported. 'PhysicalDeviceShaderSMBuiltinsFeaturesNV' /can/ also be used
--- in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceShaderSMBuiltinsFeaturesNV', it /must/ add an instance of
+-- the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
 --
 -- = See Also
 --
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
@@ -89,17 +89,17 @@
 --
 -- == New or Modified Built-In Variables
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-warpspersmnv WarpsPerSMNV>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-warpspersmnv WarpsPerSMNV>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-smcountnv SMCountNV>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-smcountnv SMCountNV>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-warpidnv WarpIDNV>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-warpidnv WarpIDNV>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-smidnv SMIDNV>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-smidnv SMIDNV>
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-ShaderSMBuiltinsNV ShaderSMBuiltinsNV>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-ShaderSMBuiltinsNV ShaderSMBuiltinsNV>
 --
 -- == Issues
 --
@@ -127,7 +127,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_shader_sm_builtins Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -27,6 +27,12 @@
 --
 --     -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/NV/SPV_NV_shader_subgroup_partitioned.html SPV_NV_shader_subgroup_partitioned>
 --
+-- [__Deprecation State__]
+--
+--     -   /Promoted/ to
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_shader_subgroup_partitioned VK_EXT_shader_subgroup_partitioned>
+--         extension
+--
 -- [__Contact__]
 --
 --     -   Jeff Bolz
@@ -35,7 +41,7 @@
 -- == Other Extension Metadata
 --
 -- [__Last Modified Date__]
---     2018-03-17
+--     2025-11-12
 --
 -- [__Interactions and External Dependencies__]
 --
@@ -49,19 +55,25 @@
 -- == Description
 --
 -- This extension enables support for a new class of
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-group-operations group operations>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-group-operations group operations>
 -- on
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-scope-subgroup subgroups>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-scope-subgroup subgroups>
 -- via the
 -- <https://github.com/KhronosGroup/GLSL/blob/main/extensions/nv/GL_NV_shader_subgroup_partitioned.txt GL_NV_shader_subgroup_partitioned>
 -- GLSL extension and
 -- <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/NV/SPV_NV_shader_subgroup_partitioned.html SPV_NV_shader_subgroup_partitioned>
 -- SPIR-V extension. Support for these new operations is advertised via the
--- 'Vulkan.Core11.Enums.SubgroupFeatureFlagBits.SUBGROUP_FEATURE_PARTITIONED_BIT_NV'
--- bit.
+-- 'SUBGROUP_FEATURE_PARTITIONED_BIT_NV' bit.
 --
 -- This extension requires Vulkan 1.1, for general subgroup support.
 --
+-- == Promotion to @VK_EXT_shader_subgroup_partitioned@
+--
+-- All functionality in this extension is included in
+-- @VK_EXT_shader_subgroup_partitioned@, with the suffix changed to EXT.
+-- The original type, enum, and command names are still available as
+-- aliases of the core functionality.
+--
 -- == New Enum Constants
 --
 -- -   'NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME'
@@ -71,7 +83,7 @@
 -- -   Extending
 --     'Vulkan.Core11.Enums.SubgroupFeatureFlagBits.SubgroupFeatureFlagBits':
 --
---     -   'Vulkan.Core11.Enums.SubgroupFeatureFlagBits.SUBGROUP_FEATURE_PARTITIONED_BIT_NV'
+--     -   'SUBGROUP_FEATURE_PARTITIONED_BIT_NV'
 --
 -- == Version History
 --
@@ -86,17 +98,23 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_shader_subgroup_partitioned Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
-module Vulkan.Extensions.VK_NV_shader_subgroup_partitioned  ( NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION
+module Vulkan.Extensions.VK_NV_shader_subgroup_partitioned  ( pattern SUBGROUP_FEATURE_PARTITIONED_BIT_NV
+                                                            , NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION
                                                             , pattern NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION
                                                             , NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME
                                                             , pattern NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME
                                                             ) where
 
 import Data.String (IsString)
+import Vulkan.Core11.Enums.SubgroupFeatureFlagBits (SubgroupFeatureFlags)
+import Vulkan.Core11.Enums.SubgroupFeatureFlagBits (SubgroupFeatureFlagBits(SUBGROUP_FEATURE_PARTITIONED_BIT_EXT))
+-- No documentation found for TopLevel "VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV"
+pattern SUBGROUP_FEATURE_PARTITIONED_BIT_NV = SUBGROUP_FEATURE_PARTITIONED_BIT_EXT
+
 
 type NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION = 1
 
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
@@ -125,7 +125,8 @@
 --
 --     -   'PhysicalDeviceShadingRateImagePropertiesNV'
 --
--- -   Extending 'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo':
+-- -   Extending
+--     'Vulkan.Core10.GraphicsPipeline.PipelineViewportStateCreateInfo':
 --
 --     -   'PipelineViewportCoarseSampleOrderStateCreateInfoNV'
 --
@@ -212,7 +213,7 @@
 --
 -- __RESOLVED__ We are specifying the pipeline stage to be between the
 -- final
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader stage>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-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'),
@@ -266,7 +267,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_shading_rate_image Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -393,7 +394,7 @@
 -- == Valid Usage
 --
 -- -   #VUID-vkCmdBindShadingRateImageNV-None-02058# The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-shadingRateImage shadingRateImage>
 --     feature /must/ be enabled
 --
 -- -   #VUID-vkCmdBindShadingRateImageNV-imageView-02059# If @imageView@ is
@@ -408,8 +409,8 @@
 --
 -- -   #VUID-vkCmdBindShadingRateImageNV-imageView-02061# If @imageView@ is
 --     not 'Vulkan.Core10.APIConstants.NULL_HANDLE', it /must/ have been
---     created with a @usage@ value including
---     'IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV'
+--     created with the 'IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV' usage flag
+--     set
 --
 -- -   #VUID-vkCmdBindShadingRateImageNV-imageView-02062# If @imageView@ is
 --     not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @imageLayout@ /must/
@@ -443,7 +444,8 @@
 --
 -- -   #VUID-vkCmdBindShadingRateImageNV-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdBindShadingRateImageNV-videocoding# This command /must/
 --     only be called outside of a video coding scope
@@ -467,10 +469,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
 -- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdBindShadingRateImageNV is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_shading_rate_image VK_NV_shading_rate_image>,
@@ -516,11 +523,11 @@
 --
 -- This command sets the per-viewport shading rate image palettes for
 -- subsequent drawing commands when drawing using
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-objects shader objects>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader objects>,
 -- or when the graphics pipeline is created with
 -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV'
 -- set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
 -- Otherwise, this state is specified by the
 -- 'PipelineViewportShadingRateImageStateCreateInfoNV'::@pShadingRatePalettes@
 -- values used to create the currently active pipeline.
@@ -528,7 +535,7 @@
 -- == Valid Usage
 --
 -- -   #VUID-vkCmdSetViewportShadingRatePaletteNV-None-02064# The
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-shadingRateImage shadingRateImage>
 --     feature /must/ be enabled
 --
 -- -   #VUID-vkCmdSetViewportShadingRatePaletteNV-firstViewport-02067# The
@@ -538,12 +545,12 @@
 --
 -- -   #VUID-vkCmdSetViewportShadingRatePaletteNV-firstViewport-02068# If
 --     the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-multiViewport multiViewport>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-multiViewport multiViewport>
 --     feature is not enabled, @firstViewport@ /must/ be @0@
 --
 -- -   #VUID-vkCmdSetViewportShadingRatePaletteNV-viewportCount-02069# If
 --     the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-multiViewport multiViewport>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-multiViewport multiViewport>
 --     feature is not enabled, @viewportCount@ /must/ be @1@
 --
 -- == Valid Usage (Implicit)
@@ -562,7 +569,8 @@
 --
 -- -   #VUID-vkCmdSetViewportShadingRatePaletteNV-commandBuffer-cmdpool#
 --     The 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdSetViewportShadingRatePaletteNV-videocoding# This command
 --     /must/ only be called outside of a video coding scope
@@ -584,10 +592,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
 -- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdSetViewportShadingRatePaletteNV is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_shading_rate_image VK_NV_shading_rate_image>,
@@ -641,11 +654,11 @@
 --
 -- This command sets the order of coverage samples for subsequent drawing
 -- commands when drawing using
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-objects shader objects>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#shaders-objects shader objects>,
 -- or when the graphics pipeline is created with
 -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV'
 -- set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- 'Vulkan.Core10.GraphicsPipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
 -- Otherwise, this state is specified by the
 -- 'PipelineViewportCoarseSampleOrderStateCreateInfoNV' values used to
 -- create the currently active pipeline.
@@ -680,7 +693,8 @@
 --
 -- -   #VUID-vkCmdSetCoarseSampleOrderNV-commandBuffer-cmdpool# The
 --     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
 --
 -- -   #VUID-vkCmdSetCoarseSampleOrderNV-videocoding# This command /must/
 --     only be called outside of a video coding scope
@@ -699,10 +713,15 @@
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
 -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | State                                                                                                                                  |
 -- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
 -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 --
+-- == Conditional Rendering
+--
+-- vkCmdSetCoarseSampleOrderNV is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_shading_rate_image VK_NV_shading_rate_image>,
@@ -818,7 +837,7 @@
 --
 -- -   #VUID-VkPipelineViewportShadingRateImageStateCreateInfoNV-viewportCount-02054#
 --     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-multiViewport multiViewport>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-multiViewport multiViewport>
 --     feature is not enabled, @viewportCount@ /must/ be @0@ or @1@
 --
 -- -   #VUID-VkPipelineViewportShadingRateImageStateCreateInfoNV-viewportCount-02055#
@@ -829,7 +848,7 @@
 --     If @shadingRateImageEnable@ is
 --     'Vulkan.Core10.FundamentalTypes.TRUE', @viewportCount@ /must/ be
 --     greater or equal to the @viewportCount@ member of
---     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'
+--     'Vulkan.Core10.GraphicsPipeline.PipelineViewportStateCreateInfo'
 --
 -- == Valid Usage (Implicit)
 --
@@ -837,6 +856,12 @@
 --     @sType@ /must/ be
 --     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV'
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.GraphicsPipeline.PipelineViewportStateCreateInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_shading_rate_image VK_NV_shading_rate_image>,
@@ -902,7 +927,7 @@
 -- = Description
 --
 -- See
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-shading-rate-image Shading Rate Image>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-shading-rate-image Shading Rate Image>
 -- for more information.
 --
 -- If the 'PhysicalDeviceShadingRateImageFeaturesNV' structure is included
@@ -911,12 +936,22 @@
 -- structure passed to
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
 -- it is filled in to indicate whether each corresponding feature is
--- supported. 'PhysicalDeviceShadingRateImageFeaturesNV' /can/ also be used
--- in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceShadingRateImageFeaturesNV', it /must/ add an instance of
+-- the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_shading_rate_image VK_NV_shading_rate_image>,
@@ -990,11 +1025,15 @@
 -- property.
 --
 -- These properties are related to the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-shading-rate-image shading rate image>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-shading-rate-image shading rate image>
 -- feature.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_shading_rate_image VK_NV_shading_rate_image>,
@@ -1148,9 +1187,9 @@
 --
 -- When using a custom sample ordering, element /j/ in @pSampleLocations@
 -- specifies a specific pixel location and
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-multisampling-coverage-mask sample index>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-multisampling-coverage-mask sample index>
 -- that corresponds to
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-multisampling-coverage-mask coverage index>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-multisampling-coverage-mask coverage index>
 -- /j/ in the multi-pixel fragment.
 --
 -- == Valid Usage
@@ -1294,6 +1333,12 @@
 --     be a valid pointer to an array of @customSampleOrderCount@ valid
 --     'CoarseSampleOrderCustomNV' structures
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.GraphicsPipeline.PipelineViewportStateCreateInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_shading_rate_image VK_NV_shading_rate_image>,
@@ -1524,6 +1569,27 @@
 
 -- | VkCoarseSampleOrderTypeNV - Shading rate image sample ordering types
 --
+-- = Description
+--
+-- -   'COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV' specifies that coverage
+--     samples will be ordered in an implementation-dependent manner.
+--
+-- -   'COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV' specifies that coverage samples
+--     will be ordered according to the array of custom orderings provided
+--     in either the @pCustomSampleOrders@ member of
+--     'PipelineViewportCoarseSampleOrderStateCreateInfoNV' or the
+--     @pCustomSampleOrders@ member of 'cmdSetCoarseSampleOrderNV'.
+--
+-- -   '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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-multisampling-coverage-mask sample index>.
+--
+-- -   'COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV' specifies that coverage
+--     samples will be ordered sequentially, sorted first by
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-multisampling-coverage-mask sample index>
+--     and then by pixel coordinate (in row-major order).
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_shading_rate_image VK_NV_shading_rate_image>,
@@ -1532,27 +1598,16 @@
 newtype CoarseSampleOrderTypeNV = CoarseSampleOrderTypeNV Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV' specifies that coverage samples
--- will be ordered in an implementation-dependent manner.
+-- No documentation found for Nested "VkCoarseSampleOrderTypeNV" "VK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV"
 pattern COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV = CoarseSampleOrderTypeNV 0
 
--- | 'COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV' specifies that coverage samples
--- will be ordered according to the array of custom orderings provided in
--- either the @pCustomSampleOrders@ member of
--- 'PipelineViewportCoarseSampleOrderStateCreateInfoNV' or the
--- @pCustomSampleOrders@ member of 'cmdSetCoarseSampleOrderNV'.
+-- No documentation found for Nested "VkCoarseSampleOrderTypeNV" "VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV"
 pattern COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV = CoarseSampleOrderTypeNV 1
 
--- | '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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-multisampling-coverage-mask sample index>.
+-- No documentation found for Nested "VkCoarseSampleOrderTypeNV" "VK_COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV"
 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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-multisampling-coverage-mask sample index>
--- and then by pixel coordinate (in row-major order).
+-- No documentation found for Nested "VkCoarseSampleOrderTypeNV" "VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV"
 pattern COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV = CoarseSampleOrderTypeNV 3
 
 {-# COMPLETE
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
@@ -125,7 +125,8 @@
 --
 --     -   'PhysicalDeviceShadingRateImagePropertiesNV'
 --
--- -   Extending 'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo':
+-- -   Extending
+--     'Vulkan.Core10.GraphicsPipeline.PipelineViewportStateCreateInfo':
 --
 --     -   'PipelineViewportCoarseSampleOrderStateCreateInfoNV'
 --
@@ -212,7 +213,7 @@
 --
 -- __RESOLVED__ We are specifying the pipeline stage to be between the
 -- final
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader stage>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-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'),
@@ -266,7 +267,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_shading_rate_image Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -43,13 +43,13 @@
 --         <https://registry.khronos.org/OpenGL/extensions/NV/NV_viewport_array2.txt GL_NV_viewport_array2>
 --
 --     -   This extension requires the
---         <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-geometryShader geometryShader>
+--         <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-geometryShader geometryShader>
 --         and
---         <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-multiViewport multiViewport>
+--         <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-multiViewport multiViewport>
 --         features.
 --
 --     -   This extension interacts with the
---         <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-tessellationShader tessellationShader>
+--         <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-tessellationShader tessellationShader>
 --         feature.
 --
 -- [__Contributors__]
@@ -106,22 +106,22 @@
 -- == New or Modified Built-In Variables
 --
 -- -   (modified)
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-layer Layer>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-layer Layer>
 --
 -- -   (modified)
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-viewportindex ViewportIndex>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-viewportindex ViewportIndex>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-viewportmask ViewportMaskNV>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-viewportmask ViewportMaskNV>
 --
 -- == New Variable Decoration
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-layer ViewportRelativeNV in Layer>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-layer ViewportRelativeNV in Layer>
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-ShaderViewportIndexLayerEXT ShaderViewportIndexLayerNV>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-ShaderViewportIndexLayerEXT ShaderViewportIndexLayerNV>
 --
--- -   <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-ShaderViewportMaskNV ShaderViewportMaskNV>
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-ShaderViewportMaskNV ShaderViewportMaskNV>
 --
 -- == Version History
 --
@@ -136,7 +136,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_viewport_array2 Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -66,7 +66,8 @@
 --
 -- -   'ViewportSwizzleNV'
 --
--- -   Extending 'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo':
+-- -   Extending
+--     'Vulkan.Core10.GraphicsPipeline.PipelineViewportStateCreateInfo':
 --
 --     -   'PipelineViewportSwizzleStateCreateInfoNV'
 --
@@ -259,7 +260,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_viewport_swizzle Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -407,8 +408,12 @@
 -- | VkPipelineViewportSwizzleStateCreateInfoNV - Structure specifying
 -- swizzle applied to primitive clip coordinates
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.GraphicsPipeline.PipelineViewportStateCreateInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_viewport_swizzle VK_NV_viewport_swizzle>,
@@ -514,7 +519,7 @@
 -- = Description
 --
 -- These values are described in detail in
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#vertexpostproc-viewport-swizzle Viewport Swizzle>.
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -66,7 +66,8 @@
 --
 -- -   'ViewportSwizzleNV'
 --
--- -   Extending 'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo':
+-- -   Extending
+--     'Vulkan.Core10.GraphicsPipeline.PipelineViewportStateCreateInfo':
 --
 --     -   'PipelineViewportSwizzleStateCreateInfoNV'
 --
@@ -259,7 +260,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_viewport_swizzle Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -228,7 +228,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_win32_keyed_mutex Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -307,6 +307,14 @@
 --     that are valid handles of non-ignored parameters /must/ have been
 --     created, allocated, or retrieved from the same
 --     'Vulkan.Core10.Handles.Device'
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Queue.SubmitInfo'
+--
+--     -   'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.SubmitInfo2'
 --
 -- = See Also
 --
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
@@ -228,7 +228,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_win32_keyed_mutex Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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_cooperative_matrix_conversion.hs b/src/Vulkan/Extensions/VK_QCOM_cooperative_matrix_conversion.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_QCOM_cooperative_matrix_conversion.hs
@@ -0,0 +1,232 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_QCOM_cooperative_matrix_conversion - device extension
+--
+-- = VK_QCOM_cooperative_matrix_conversion
+--
+-- [__Name String__]
+--     @VK_QCOM_cooperative_matrix_conversion@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     173
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Not ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_cooperative_matrix VK_KHR_cooperative_matrix>
+--
+-- [__SPIR-V Dependencies__]
+--
+--     -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/QCOM/SPV_QCOM_cooperative_matrix_conversion.html SPV_QCOM_cooperative_matrix_conversion>
+--
+-- [__Contact__]
+--
+--     -   Matthew Netsch
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_QCOM_cooperative_matrix_conversion] @mnetsch%0A*Here describe the issue or question you have about the VK_QCOM_cooperative_matrix_conversion extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_QCOM_cooperative_matrix_conversion.adoc VK_QCOM_cooperative_matrix_conversion>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2026-01-28
+--
+-- [__Interactions and External Dependencies__]
+--
+--     -   This extension provides API support for
+--         <https://github.com/KhronosGroup/GLSL/blob/main/extensions/qcom/GLSL_QCOM_cooperative_matrix_conversion.txt GLSL_QCOM_cooperative_matrix_conversion>
+--
+-- [__Contributors__]
+--
+--     -   Matthew Netsch, Qualcomm Technologies, Inc
+--
+--     -   Elina Kamenetskaya, Qualcomm Technologies, Inc
+--
+--     -   Alex Bourd, Qualcomm Technologies, Inc
+--
+--     -   Ruihao Zhang, Qualcomm Technologies, Inc
+--
+--     -   Wooyoung Kim, Qualcomm Technologies, Inc
+--
+-- == Description
+--
+-- This extension adds support for new SPIR-V shader instructions that
+-- allow loading and storing a cooperative matrix without needing to stage
+-- through shared memory and to allow bit casting arrays.
+--
+-- These instructions are defined by the
+-- <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/QCOM/SPV_QCOM_cooperative_matrix_conversion.html SPV_QCOM_cooperative_matrix_conversion>
+-- SPIR-V extension and can be used with the
+-- <https://github.com/KhronosGroup/GLSL/blob/main/extensions/qcom/GLSL_QCOM_cooperative_matrix_conversion.txt GLSL_QCOM_cooperative_matrix_conversion>
+-- GLSL extension.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM'
+--
+-- == New Enum Constants
+--
+-- -   'QCOM_COOPERATIVE_MATRIX_CONVERSION_EXTENSION_NAME'
+--
+-- -   'QCOM_COOPERATIVE_MATRIX_CONVERSION_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_CONVERSION_FEATURES_QCOM'
+--
+-- == New SPIR-V Capabilities
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-CooperativeMatrixConversionQCOM CooperativeMatrixConversionQCOM>
+--
+-- == Version History
+--
+-- -   Revision 1, 2026-01-28 (Matthew Netsch)
+--
+--     -   Initial draft
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_QCOM_cooperative_matrix_conversion Vulkan Specification>.
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_QCOM_cooperative_matrix_conversion  ( PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM(..)
+                                                                , QCOM_COOPERATIVE_MATRIX_CONVERSION_SPEC_VERSION
+                                                                , pattern QCOM_COOPERATIVE_MATRIX_CONVERSION_SPEC_VERSION
+                                                                , QCOM_COOPERATIVE_MATRIX_CONVERSION_EXTENSION_NAME
+                                                                , pattern QCOM_COOPERATIVE_MATRIX_CONVERSION_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_COOPERATIVE_MATRIX_CONVERSION_FEATURES_QCOM))
+-- | VkPhysicalDeviceCooperativeMatrixConversionFeaturesQCOM - Structure
+-- describing cooperative matrix conversion features that can be supported
+-- by an implementation
+--
+-- = Members
+--
+-- This structure describes the following features:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM', it /must/ add
+-- an instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_cooperative_matrix_conversion VK_QCOM_cooperative_matrix_conversion>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM = PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM
+  { -- | #features-cooperativeMatrixConversion# @cooperativeMatrixConversion@
+    -- indicates that the implementation supports the
+    -- @CooperativeMatrixConversionQCOM@ SPIR-V capability.
+    cooperativeMatrixConversion :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM)
+#endif
+deriving instance Show PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM
+
+instance ToCStruct PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_CONVERSION_FEATURES_QCOM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (cooperativeMatrixConversion))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_CONVERSION_FEATURES_QCOM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM where
+  peekCStruct p = do
+    cooperativeMatrixConversion <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM
+             (bool32ToBool cooperativeMatrixConversion)
+
+instance Storable PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM where
+  zero = PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM
+           zero
+
+
+type QCOM_COOPERATIVE_MATRIX_CONVERSION_SPEC_VERSION = 1
+
+-- No documentation found for TopLevel "VK_QCOM_COOPERATIVE_MATRIX_CONVERSION_SPEC_VERSION"
+pattern QCOM_COOPERATIVE_MATRIX_CONVERSION_SPEC_VERSION :: forall a . Integral a => a
+pattern QCOM_COOPERATIVE_MATRIX_CONVERSION_SPEC_VERSION = 1
+
+
+type QCOM_COOPERATIVE_MATRIX_CONVERSION_EXTENSION_NAME = "VK_QCOM_cooperative_matrix_conversion"
+
+-- No documentation found for TopLevel "VK_QCOM_COOPERATIVE_MATRIX_CONVERSION_EXTENSION_NAME"
+pattern QCOM_COOPERATIVE_MATRIX_CONVERSION_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern QCOM_COOPERATIVE_MATRIX_CONVERSION_EXTENSION_NAME = "VK_QCOM_cooperative_matrix_conversion"
+
diff --git a/src/Vulkan/Extensions/VK_QCOM_cooperative_matrix_conversion.hs-boot b/src/Vulkan/Extensions/VK_QCOM_cooperative_matrix_conversion.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_QCOM_cooperative_matrix_conversion.hs-boot
@@ -0,0 +1,123 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_QCOM_cooperative_matrix_conversion - device extension
+--
+-- = VK_QCOM_cooperative_matrix_conversion
+--
+-- [__Name String__]
+--     @VK_QCOM_cooperative_matrix_conversion@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     173
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Not ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_cooperative_matrix VK_KHR_cooperative_matrix>
+--
+-- [__SPIR-V Dependencies__]
+--
+--     -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/QCOM/SPV_QCOM_cooperative_matrix_conversion.html SPV_QCOM_cooperative_matrix_conversion>
+--
+-- [__Contact__]
+--
+--     -   Matthew Netsch
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_QCOM_cooperative_matrix_conversion] @mnetsch%0A*Here describe the issue or question you have about the VK_QCOM_cooperative_matrix_conversion extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_QCOM_cooperative_matrix_conversion.adoc VK_QCOM_cooperative_matrix_conversion>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2026-01-28
+--
+-- [__Interactions and External Dependencies__]
+--
+--     -   This extension provides API support for
+--         <https://github.com/KhronosGroup/GLSL/blob/main/extensions/qcom/GLSL_QCOM_cooperative_matrix_conversion.txt GLSL_QCOM_cooperative_matrix_conversion>
+--
+-- [__Contributors__]
+--
+--     -   Matthew Netsch, Qualcomm Technologies, Inc
+--
+--     -   Elina Kamenetskaya, Qualcomm Technologies, Inc
+--
+--     -   Alex Bourd, Qualcomm Technologies, Inc
+--
+--     -   Ruihao Zhang, Qualcomm Technologies, Inc
+--
+--     -   Wooyoung Kim, Qualcomm Technologies, Inc
+--
+-- == Description
+--
+-- This extension adds support for new SPIR-V shader instructions that
+-- allow loading and storing a cooperative matrix without needing to stage
+-- through shared memory and to allow bit casting arrays.
+--
+-- These instructions are defined by the
+-- <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/QCOM/SPV_QCOM_cooperative_matrix_conversion.html SPV_QCOM_cooperative_matrix_conversion>
+-- SPIR-V extension and can be used with the
+-- <https://github.com/KhronosGroup/GLSL/blob/main/extensions/qcom/GLSL_QCOM_cooperative_matrix_conversion.txt GLSL_QCOM_cooperative_matrix_conversion>
+-- GLSL extension.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM'
+--
+-- == New Enum Constants
+--
+-- -   'QCOM_COOPERATIVE_MATRIX_CONVERSION_EXTENSION_NAME'
+--
+-- -   'QCOM_COOPERATIVE_MATRIX_CONVERSION_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_CONVERSION_FEATURES_QCOM'
+--
+-- == New SPIR-V Capabilities
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-CooperativeMatrixConversionQCOM CooperativeMatrixConversionQCOM>
+--
+-- == Version History
+--
+-- -   Revision 1, 2026-01-28 (Matthew Netsch)
+--
+--     -   Initial draft
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_QCOM_cooperative_matrix_conversion Vulkan Specification>.
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_QCOM_cooperative_matrix_conversion  (PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM
+
+instance ToCStruct PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM
+instance Show PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM
+
+instance FromCStruct PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM
+
diff --git a/src/Vulkan/Extensions/VK_QCOM_data_graph_model.hs b/src/Vulkan/Extensions/VK_QCOM_data_graph_model.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_QCOM_data_graph_model.hs
@@ -0,0 +1,577 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_QCOM_data_graph_model - device extension
+--
+-- = VK_QCOM_data_graph_model
+--
+-- [__Name String__]
+--     @VK_QCOM_data_graph_model@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     630
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Not ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_data_graph VK_ARM_data_graph>
+--
+-- [__Contact__]
+--
+--     -   Matthew Netsch
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_QCOM_data_graph_model] @mnetsch%0A*Here describe the issue or question you have about the VK_QCOM_data_graph_model extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_QCOM_data_graph_model.adoc VK_QCOM_data_graph_model>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2025-06-24
+--
+-- [__Interactions and External Dependencies__]
+--
+--     -   This extension interacts with @VK_ARM_tensors@
+--
+-- [__Contributors__]
+--
+--     -   Matthew Netsch, Qualcomm Technologies, Inc
+--
+--     -   Rob VanReenen, Qualcomm Technologies, Inc
+--
+--     -   Balaji Calidas, Qualcomm Technologies, Inc
+--
+--     -   Jacob Yenney, Qualcomm Technologies, Inc
+--
+--     -   Kévin Petit, Arm Ltd.
+--
+-- == Description
+--
+-- This extension supports new
+-- 'Vulkan.Extensions.VK_ARM_data_graph.PhysicalDeviceDataGraphProcessingEngineTypeARM',
+-- and
+-- 'Vulkan.Extensions.VK_ARM_data_graph.PhysicalDeviceDataGraphOperationTypeARM'
+-- types for data graph pipelines added in @VK_ARM_data_graph@.
+--
+-- A new pipeline cache type is also added to seamlessly import ML models
+-- such as ONNX through QNN workflow, and run them on the device or an
+-- external compute engine.
+--
+-- == New Structures
+--
+-- -   'PipelineCacheHeaderVersionDataGraphQCOM'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_ARM_data_graph.DataGraphPipelineCreateInfoARM':
+--
+--     -   'DataGraphPipelineBuiltinModelCreateInfoQCOM'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceDataGraphModelFeaturesQCOM'
+--
+-- == New Enums
+--
+-- -   'DataGraphModelCacheTypeQCOM'
+--
+-- == New Enum Constants
+--
+-- -   'Vulkan.Core10.APIConstants.DATA_GRAPH_MODEL_TOOLCHAIN_VERSION_LENGTH_QCOM'
+--
+-- -   'QCOM_DATA_GRAPH_MODEL_EXTENSION_NAME'
+--
+-- -   'QCOM_DATA_GRAPH_MODEL_SPEC_VERSION'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_ARM_data_graph.PhysicalDeviceDataGraphOperationTypeARM':
+--
+--     -   'Vulkan.Extensions.VK_ARM_data_graph.PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_BUILTIN_MODEL_QCOM'
+--
+--     -   'Vulkan.Extensions.VK_ARM_data_graph.PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_NEURAL_MODEL_QCOM'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_ARM_data_graph.PhysicalDeviceDataGraphProcessingEngineTypeARM':
+--
+--     -   'Vulkan.Extensions.VK_ARM_data_graph.PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_COMPUTE_QCOM'
+--
+--     -   'Vulkan.Extensions.VK_ARM_data_graph.PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_NEURAL_QCOM'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.PipelineCacheHeaderVersion.PipelineCacheHeaderVersion':
+--
+--     -   'Vulkan.Core10.Enums.PipelineCacheHeaderVersion.PIPELINE_CACHE_HEADER_VERSION_DATA_GRAPH_QCOM'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_BUILTIN_MODEL_CREATE_INFO_QCOM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_MODEL_FEATURES_QCOM'
+--
+-- == Version History
+--
+-- -   Revision 1, 2025-06-24 (Matthew Netsch)
+--
+--     -   Initial revision
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_QCOM_data_graph_model Vulkan Specification>.
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_QCOM_data_graph_model  ( PipelineCacheHeaderVersionDataGraphQCOM(..)
+                                                   , DataGraphPipelineBuiltinModelCreateInfoQCOM(..)
+                                                   , PhysicalDeviceDataGraphModelFeaturesQCOM(..)
+                                                   , DataGraphModelCacheTypeQCOM( DATA_GRAPH_MODEL_CACHE_TYPE_GENERIC_BINARY_QCOM
+                                                                                , ..
+                                                                                )
+                                                   , QCOM_DATA_GRAPH_MODEL_SPEC_VERSION
+                                                   , pattern QCOM_DATA_GRAPH_MODEL_SPEC_VERSION
+                                                   , QCOM_DATA_GRAPH_MODEL_EXTENSION_NAME
+                                                   , pattern QCOM_DATA_GRAPH_MODEL_EXTENSION_NAME
+                                                   , PhysicalDeviceDataGraphOperationSupportARM(..)
+                                                   , PhysicalDeviceDataGraphProcessingEngineTypeARM(..)
+                                                   , PhysicalDeviceDataGraphOperationTypeARM(..)
+                                                   , MAX_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_SET_NAME_SIZE_ARM
+                                                   , pattern MAX_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_SET_NAME_SIZE_ARM
+                                                   , DATA_GRAPH_MODEL_TOOLCHAIN_VERSION_LENGTH_QCOM
+                                                   , pattern DATA_GRAPH_MODEL_TOOLCHAIN_VERSION_LENGTH_QCOM
+                                                   ) 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 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 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 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.Utils (lowerArrayPtr)
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.Core10.APIConstants (DATA_GRAPH_MODEL_TOOLCHAIN_VERSION_LENGTH_QCOM)
+import Vulkan.Extensions.VK_ARM_data_graph (PhysicalDeviceDataGraphOperationSupportARM)
+import Vulkan.Core10.Enums.PipelineCacheHeaderVersion (PipelineCacheHeaderVersion)
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Core10.APIConstants (pattern DATA_GRAPH_MODEL_TOOLCHAIN_VERSION_LENGTH_QCOM)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_BUILTIN_MODEL_CREATE_INFO_QCOM))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_MODEL_FEATURES_QCOM))
+import Vulkan.Core10.APIConstants (DATA_GRAPH_MODEL_TOOLCHAIN_VERSION_LENGTH_QCOM)
+import Vulkan.Core10.APIConstants (MAX_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_SET_NAME_SIZE_ARM)
+import Vulkan.Extensions.VK_ARM_data_graph (PhysicalDeviceDataGraphOperationSupportARM(..))
+import Vulkan.Extensions.VK_ARM_data_graph (PhysicalDeviceDataGraphOperationTypeARM(..))
+import Vulkan.Extensions.VK_ARM_data_graph (PhysicalDeviceDataGraphProcessingEngineTypeARM(..))
+import Vulkan.Core10.APIConstants (pattern DATA_GRAPH_MODEL_TOOLCHAIN_VERSION_LENGTH_QCOM)
+import Vulkan.Core10.APIConstants (pattern MAX_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_SET_NAME_SIZE_ARM)
+-- | VkPipelineCacheHeaderVersionDataGraphQCOM - Structure describing the
+-- layout of the pipeline cache header for data graphs
+--
+-- = Description
+--
+-- The application /should/ verify that the header info is compatible with
+-- the
+-- 'Vulkan.Extensions.VK_ARM_data_graph.DataGraphProcessingEngineCreateInfoARM'
+-- passed during pipeline creation. Implementations /may/ return
+-- 'Vulkan.Extensions.VK_EXT_pipeline_creation_cache_control.PIPELINE_COMPILE_REQUIRED_EXT'
+-- from 'Vulkan.Extensions.VK_ARM_data_graph.createDataGraphPipelinesARM'
+-- if the cache is not compatible.
+--
+-- This cache type is built using offline compilation, therefore Vulkan
+-- does not define engine compatibility. The application should refer to
+-- the offline compiler used to create the cache for guidance on
+-- compatibility.
+--
+-- Unlike most structures declared by the Vulkan API, all fields of this
+-- structure are written with the least significant byte first, regardless
+-- of host byte-order.
+--
+-- The C language specification does not define the packing of structure
+-- members. This layout assumes tight structure member packing, with
+-- members laid out in the order listed in the structure, and the intended
+-- size of the structure is 28 bytes. If a compiler produces code that
+-- diverges from that pattern, applications /must/ employ another method to
+-- set values at the correct offsets.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkPipelineCacheHeaderVersionDataGraphQCOM-None-11835# The
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-dataGraphModelQCOM dataGraphModel>
+--     feature /must/ be enabled
+--
+-- -   #VUID-VkPipelineCacheHeaderVersionDataGraphQCOM-headerSize-11836#
+--     @headerSize@ /must/ be 28
+--
+-- -   #VUID-VkPipelineCacheHeaderVersionDataGraphQCOM-headerVersion-11837#
+--     @headerVersion@ /must/ be
+--     'Vulkan.Core10.Enums.PipelineCacheHeaderVersion.PIPELINE_CACHE_HEADER_VERSION_DATA_GRAPH_QCOM'
+--
+-- -   #VUID-VkPipelineCacheHeaderVersionDataGraphQCOM-headerSize-11838#
+--     @headerSize@ /must/ not exceed the size of the pipeline cache
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkPipelineCacheHeaderVersionDataGraphQCOM-headerVersion-parameter#
+--     @headerVersion@ /must/ be a valid
+--     'Vulkan.Core10.Enums.PipelineCacheHeaderVersion.PipelineCacheHeaderVersion'
+--     value
+--
+-- -   #VUID-VkPipelineCacheHeaderVersionDataGraphQCOM-cacheType-parameter#
+--     @cacheType@ /must/ be a valid 'DataGraphModelCacheTypeQCOM' value
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_data_graph_model VK_QCOM_data_graph_model>,
+-- 'DataGraphModelCacheTypeQCOM',
+-- 'Vulkan.Core10.Enums.PipelineCacheHeaderVersion.PipelineCacheHeaderVersion'
+data PipelineCacheHeaderVersionDataGraphQCOM = PipelineCacheHeaderVersionDataGraphQCOM
+  { -- | @headerSize@ is the length in bytes of the pipeline cache header.
+    headerSize :: Word32
+  , -- | @headerVersion@ is a
+    -- 'Vulkan.Core10.Enums.PipelineCacheHeaderVersion.PipelineCacheHeaderVersion'
+    -- value specifying the version of the header. A consumer of the pipeline
+    -- cache /should/ use the cache version to interpret the remainder of the
+    -- cache header. @headerVersion@ /must/ be written as exactly 4 bytes.
+    headerVersion :: PipelineCacheHeaderVersion
+  , -- | @cacheType@ is the 'DataGraphModelCacheTypeQCOM' type of data graph
+    -- cache encoded in the data.
+    cacheType :: DataGraphModelCacheTypeQCOM
+  , -- | @cacheVersion@ is the version of the encoding of the data graph cache.
+    cacheVersion :: Word32
+  , -- | @toolchainVersion@ is a null-terminated UTF-8 string specifying the
+    -- version of the compiler that built the data graph cache.
+    toolchainVersion :: Vector Word32
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PipelineCacheHeaderVersionDataGraphQCOM)
+#endif
+deriving instance Show PipelineCacheHeaderVersionDataGraphQCOM
+
+instance ToCStruct PipelineCacheHeaderVersionDataGraphQCOM where
+  withCStruct x f = allocaBytes 28 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PipelineCacheHeaderVersionDataGraphQCOM{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr Word32)) (headerSize)
+    poke ((p `plusPtr` 4 :: Ptr PipelineCacheHeaderVersion)) (headerVersion)
+    poke ((p `plusPtr` 8 :: Ptr DataGraphModelCacheTypeQCOM)) (cacheType)
+    poke ((p `plusPtr` 12 :: Ptr Word32)) (cacheVersion)
+    unless ((Data.Vector.length $ (toolchainVersion)) <= DATA_GRAPH_MODEL_TOOLCHAIN_VERSION_LENGTH_QCOM) $
+      throwIO $ IOError Nothing InvalidArgument "" "toolchainVersion is too long, a maximum of DATA_GRAPH_MODEL_TOOLCHAIN_VERSION_LENGTH_QCOM elements are allowed" Nothing Nothing
+    Data.Vector.imapM_ (\i e -> poke ((lowerArrayPtr ((p `plusPtr` 16 :: Ptr (FixedArray DATA_GRAPH_MODEL_TOOLCHAIN_VERSION_LENGTH_QCOM Word32)))) `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (toolchainVersion)
+    f
+  cStructSize = 28
+  cStructAlignment = 4
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 4 :: Ptr PipelineCacheHeaderVersion)) (zero)
+    poke ((p `plusPtr` 8 :: Ptr DataGraphModelCacheTypeQCOM)) (zero)
+    poke ((p `plusPtr` 12 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct PipelineCacheHeaderVersionDataGraphQCOM where
+  peekCStruct p = do
+    headerSize <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))
+    headerVersion <- peek @PipelineCacheHeaderVersion ((p `plusPtr` 4 :: Ptr PipelineCacheHeaderVersion))
+    cacheType <- peek @DataGraphModelCacheTypeQCOM ((p `plusPtr` 8 :: Ptr DataGraphModelCacheTypeQCOM))
+    cacheVersion <- peek @Word32 ((p `plusPtr` 12 :: Ptr Word32))
+    toolchainVersion <- generateM (DATA_GRAPH_MODEL_TOOLCHAIN_VERSION_LENGTH_QCOM) (\i -> peek @Word32 (((lowerArrayPtr @Word32 ((p `plusPtr` 16 :: Ptr (FixedArray DATA_GRAPH_MODEL_TOOLCHAIN_VERSION_LENGTH_QCOM Word32)))) `advancePtrBytes` (4 * (i)) :: Ptr Word32)))
+    pure $ PipelineCacheHeaderVersionDataGraphQCOM
+             headerSize headerVersion cacheType cacheVersion toolchainVersion
+
+instance Storable PipelineCacheHeaderVersionDataGraphQCOM where
+  sizeOf ~_ = 28
+  alignment ~_ = 4
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PipelineCacheHeaderVersionDataGraphQCOM where
+  zero = PipelineCacheHeaderVersionDataGraphQCOM
+           zero
+           zero
+           zero
+           zero
+           mempty
+
+
+-- | VkDataGraphPipelineBuiltinModelCreateInfoQCOM - Structure specifying a
+-- built-in model for the newly created data graph pipeline
+--
+-- = Description
+--
+-- The @pipelineCache@ is ignored for the creation of this pipeline.
+--
+-- Applications /can/ specify arguments to the built-in operation named in
+-- @pOperation@ with
+-- 'Vulkan.Extensions.VK_ARM_data_graph.DataGraphPipelineCompilerControlCreateInfoARM'.
+--
+-- Applications /should/ verify that the @pVendorOptions@, @layout@, and
+-- other state included with this pipeline creation are compatible with the
+-- @pOperation@. Implementations /may/ fail if any state is not compatible
+-- and return 'Vulkan.Core10.Enums.Result.PIPELINE_COMPILE_REQUIRED'.
+--
+-- Built-in models are defined by the provider of the model, therefore
+-- Vulkan does not define model compatibility. The application should refer
+-- to the provider of the built-in model for guidance on compatibility.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkDataGraphPipelineBuiltinModelCreateInfoQCOM-pOperation-11842#
+--     All members of @pOperation@ /must/ be identical to a
+--     'Vulkan.Extensions.VK_ARM_data_graph.QueueFamilyDataGraphPropertiesARM'::@operation@
+--     retrieved from
+--     'Vulkan.Extensions.VK_ARM_data_graph.getPhysicalDeviceQueueFamilyDataGraphPropertiesARM'
+--     with the @physicalDevice@ that was used to create @device@ and
+--     paired in the retrieved results with a
+--     'Vulkan.Extensions.VK_ARM_data_graph.QueueFamilyDataGraphPropertiesARM'::@engine@
+--     identical to an element of
+--     'Vulkan.Extensions.VK_ARM_data_graph.DataGraphProcessingEngineCreateInfoARM'::@pProcessingEngines@
+--     provided in the @pNext@ chain
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkDataGraphPipelineBuiltinModelCreateInfoQCOM-sType-sType#
+--     @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_BUILTIN_MODEL_CREATE_INFO_QCOM'
+--
+-- -   #VUID-VkDataGraphPipelineBuiltinModelCreateInfoQCOM-pOperation-parameter#
+--     @pOperation@ /must/ be a valid pointer to a valid
+--     'Vulkan.Extensions.VK_ARM_data_graph.PhysicalDeviceDataGraphOperationSupportARM'
+--     structure
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Extensions.VK_ARM_data_graph.DataGraphPipelineCreateInfoARM'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_data_graph_model VK_QCOM_data_graph_model>,
+-- 'Vulkan.Extensions.VK_ARM_data_graph.PhysicalDeviceDataGraphOperationSupportARM',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data DataGraphPipelineBuiltinModelCreateInfoQCOM = DataGraphPipelineBuiltinModelCreateInfoQCOM
+  { -- | @pOperation@ is a
+    -- 'Vulkan.Extensions.VK_ARM_data_graph.PhysicalDeviceDataGraphOperationSupportARM'
+    -- specifying the built-in operation.
+    operation :: PhysicalDeviceDataGraphOperationSupportARM }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (DataGraphPipelineBuiltinModelCreateInfoQCOM)
+#endif
+deriving instance Show DataGraphPipelineBuiltinModelCreateInfoQCOM
+
+instance ToCStruct DataGraphPipelineBuiltinModelCreateInfoQCOM where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p DataGraphPipelineBuiltinModelCreateInfoQCOM{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_BUILTIN_MODEL_CREATE_INFO_QCOM)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    pOperation'' <- ContT $ withCStruct (operation)
+    lift $ poke ((p `plusPtr` 16 :: Ptr (Ptr PhysicalDeviceDataGraphOperationSupportARM))) pOperation''
+    lift $ f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_BUILTIN_MODEL_CREATE_INFO_QCOM)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    pOperation'' <- ContT $ withCStruct (zero)
+    lift $ poke ((p `plusPtr` 16 :: Ptr (Ptr PhysicalDeviceDataGraphOperationSupportARM))) pOperation''
+    lift $ f
+
+instance FromCStruct DataGraphPipelineBuiltinModelCreateInfoQCOM where
+  peekCStruct p = do
+    pOperation <- peekCStruct @PhysicalDeviceDataGraphOperationSupportARM =<< peek ((p `plusPtr` 16 :: Ptr (Ptr PhysicalDeviceDataGraphOperationSupportARM)))
+    pure $ DataGraphPipelineBuiltinModelCreateInfoQCOM
+             pOperation
+
+instance Zero DataGraphPipelineBuiltinModelCreateInfoQCOM where
+  zero = DataGraphPipelineBuiltinModelCreateInfoQCOM
+           zero
+
+
+-- | VkPhysicalDeviceDataGraphModelFeaturesQCOM - Structure describing
+-- features to control data graph model
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceDataGraphModelFeaturesQCOM' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceDataGraphModelFeaturesQCOM', it /must/ add an instance of
+-- the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_data_graph_model VK_QCOM_data_graph_model>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceDataGraphModelFeaturesQCOM = PhysicalDeviceDataGraphModelFeaturesQCOM
+  { -- | #features-dataGraphModelQCOM# @dataGraphModel@ specifies whether the
+    -- functionality defined by this extension is available, and guarantees
+    -- that the implementation supports a data graph queue family with at least
+    -- one of the following engine types:
+    --
+    -- -   'Vulkan.Extensions.VK_ARM_data_graph.PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_NEURAL_QCOM'
+    --
+    -- -   'Vulkan.Extensions.VK_ARM_data_graph.PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_COMPUTE_QCOM'
+    dataGraphModel :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceDataGraphModelFeaturesQCOM)
+#endif
+deriving instance Show PhysicalDeviceDataGraphModelFeaturesQCOM
+
+instance ToCStruct PhysicalDeviceDataGraphModelFeaturesQCOM where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceDataGraphModelFeaturesQCOM{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_MODEL_FEATURES_QCOM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (dataGraphModel))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_MODEL_FEATURES_QCOM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceDataGraphModelFeaturesQCOM where
+  peekCStruct p = do
+    dataGraphModel <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDeviceDataGraphModelFeaturesQCOM
+             (bool32ToBool dataGraphModel)
+
+instance Storable PhysicalDeviceDataGraphModelFeaturesQCOM where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceDataGraphModelFeaturesQCOM where
+  zero = PhysicalDeviceDataGraphModelFeaturesQCOM
+           zero
+
+
+-- | VkDataGraphModelCacheTypeQCOM - Encode pipeline data graph cache type
+--
+-- = Description
+--
+-- -   'DATA_GRAPH_MODEL_CACHE_TYPE_GENERIC_BINARY_QCOM' specifies a
+--     general binary layout type.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_data_graph_model VK_QCOM_data_graph_model>,
+-- 'PipelineCacheHeaderVersionDataGraphQCOM'
+newtype DataGraphModelCacheTypeQCOM = DataGraphModelCacheTypeQCOM Int32
+  deriving newtype (Eq, Ord, Storable, Zero)
+
+-- No documentation found for Nested "VkDataGraphModelCacheTypeQCOM" "VK_DATA_GRAPH_MODEL_CACHE_TYPE_GENERIC_BINARY_QCOM"
+pattern DATA_GRAPH_MODEL_CACHE_TYPE_GENERIC_BINARY_QCOM = DataGraphModelCacheTypeQCOM 0
+
+{-# COMPLETE DATA_GRAPH_MODEL_CACHE_TYPE_GENERIC_BINARY_QCOM :: DataGraphModelCacheTypeQCOM #-}
+
+conNameDataGraphModelCacheTypeQCOM :: String
+conNameDataGraphModelCacheTypeQCOM = "DataGraphModelCacheTypeQCOM"
+
+enumPrefixDataGraphModelCacheTypeQCOM :: String
+enumPrefixDataGraphModelCacheTypeQCOM = "DATA_GRAPH_MODEL_CACHE_TYPE_GENERIC_BINARY_QCOM"
+
+showTableDataGraphModelCacheTypeQCOM :: [(DataGraphModelCacheTypeQCOM, String)]
+showTableDataGraphModelCacheTypeQCOM =
+  [
+    ( DATA_GRAPH_MODEL_CACHE_TYPE_GENERIC_BINARY_QCOM
+    , ""
+    )
+  ]
+
+instance Show DataGraphModelCacheTypeQCOM where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixDataGraphModelCacheTypeQCOM
+      showTableDataGraphModelCacheTypeQCOM
+      conNameDataGraphModelCacheTypeQCOM
+      (\(DataGraphModelCacheTypeQCOM x) -> x)
+      (showsPrec 11)
+
+instance Read DataGraphModelCacheTypeQCOM where
+  readPrec =
+    enumReadPrec
+      enumPrefixDataGraphModelCacheTypeQCOM
+      showTableDataGraphModelCacheTypeQCOM
+      conNameDataGraphModelCacheTypeQCOM
+      DataGraphModelCacheTypeQCOM
+
+type QCOM_DATA_GRAPH_MODEL_SPEC_VERSION = 1
+
+-- No documentation found for TopLevel "VK_QCOM_DATA_GRAPH_MODEL_SPEC_VERSION"
+pattern QCOM_DATA_GRAPH_MODEL_SPEC_VERSION :: forall a . Integral a => a
+pattern QCOM_DATA_GRAPH_MODEL_SPEC_VERSION = 1
+
+
+type QCOM_DATA_GRAPH_MODEL_EXTENSION_NAME = "VK_QCOM_data_graph_model"
+
+-- No documentation found for TopLevel "VK_QCOM_DATA_GRAPH_MODEL_EXTENSION_NAME"
+pattern QCOM_DATA_GRAPH_MODEL_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern QCOM_DATA_GRAPH_MODEL_EXTENSION_NAME = "VK_QCOM_data_graph_model"
+
diff --git a/src/Vulkan/Extensions/VK_QCOM_data_graph_model.hs-boot b/src/Vulkan/Extensions/VK_QCOM_data_graph_model.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_QCOM_data_graph_model.hs-boot
@@ -0,0 +1,167 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_QCOM_data_graph_model - device extension
+--
+-- = VK_QCOM_data_graph_model
+--
+-- [__Name String__]
+--     @VK_QCOM_data_graph_model@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     630
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Not ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_data_graph VK_ARM_data_graph>
+--
+-- [__Contact__]
+--
+--     -   Matthew Netsch
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_QCOM_data_graph_model] @mnetsch%0A*Here describe the issue or question you have about the VK_QCOM_data_graph_model extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_QCOM_data_graph_model.adoc VK_QCOM_data_graph_model>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2025-06-24
+--
+-- [__Interactions and External Dependencies__]
+--
+--     -   This extension interacts with @VK_ARM_tensors@
+--
+-- [__Contributors__]
+--
+--     -   Matthew Netsch, Qualcomm Technologies, Inc
+--
+--     -   Rob VanReenen, Qualcomm Technologies, Inc
+--
+--     -   Balaji Calidas, Qualcomm Technologies, Inc
+--
+--     -   Jacob Yenney, Qualcomm Technologies, Inc
+--
+--     -   Kévin Petit, Arm Ltd.
+--
+-- == Description
+--
+-- This extension supports new
+-- 'Vulkan.Extensions.VK_ARM_data_graph.PhysicalDeviceDataGraphProcessingEngineTypeARM',
+-- and
+-- 'Vulkan.Extensions.VK_ARM_data_graph.PhysicalDeviceDataGraphOperationTypeARM'
+-- types for data graph pipelines added in @VK_ARM_data_graph@.
+--
+-- A new pipeline cache type is also added to seamlessly import ML models
+-- such as ONNX through QNN workflow, and run them on the device or an
+-- external compute engine.
+--
+-- == New Structures
+--
+-- -   'PipelineCacheHeaderVersionDataGraphQCOM'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_ARM_data_graph.DataGraphPipelineCreateInfoARM':
+--
+--     -   'DataGraphPipelineBuiltinModelCreateInfoQCOM'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceDataGraphModelFeaturesQCOM'
+--
+-- == New Enums
+--
+-- -   'DataGraphModelCacheTypeQCOM'
+--
+-- == New Enum Constants
+--
+-- -   'Vulkan.Core10.APIConstants.DATA_GRAPH_MODEL_TOOLCHAIN_VERSION_LENGTH_QCOM'
+--
+-- -   'QCOM_DATA_GRAPH_MODEL_EXTENSION_NAME'
+--
+-- -   'QCOM_DATA_GRAPH_MODEL_SPEC_VERSION'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_ARM_data_graph.PhysicalDeviceDataGraphOperationTypeARM':
+--
+--     -   'Vulkan.Extensions.VK_ARM_data_graph.PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_BUILTIN_MODEL_QCOM'
+--
+--     -   'Vulkan.Extensions.VK_ARM_data_graph.PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_NEURAL_MODEL_QCOM'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_ARM_data_graph.PhysicalDeviceDataGraphProcessingEngineTypeARM':
+--
+--     -   'Vulkan.Extensions.VK_ARM_data_graph.PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_COMPUTE_QCOM'
+--
+--     -   'Vulkan.Extensions.VK_ARM_data_graph.PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_NEURAL_QCOM'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.PipelineCacheHeaderVersion.PipelineCacheHeaderVersion':
+--
+--     -   'Vulkan.Core10.Enums.PipelineCacheHeaderVersion.PIPELINE_CACHE_HEADER_VERSION_DATA_GRAPH_QCOM'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_BUILTIN_MODEL_CREATE_INFO_QCOM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_MODEL_FEATURES_QCOM'
+--
+-- == Version History
+--
+-- -   Revision 1, 2025-06-24 (Matthew Netsch)
+--
+--     -   Initial revision
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_QCOM_data_graph_model Vulkan Specification>.
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_QCOM_data_graph_model  ( DataGraphPipelineBuiltinModelCreateInfoQCOM
+                                                   , PhysicalDeviceDataGraphModelFeaturesQCOM
+                                                   , PipelineCacheHeaderVersionDataGraphQCOM
+                                                   ) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data DataGraphPipelineBuiltinModelCreateInfoQCOM
+
+instance ToCStruct DataGraphPipelineBuiltinModelCreateInfoQCOM
+instance Show DataGraphPipelineBuiltinModelCreateInfoQCOM
+
+instance FromCStruct DataGraphPipelineBuiltinModelCreateInfoQCOM
+
+
+data PhysicalDeviceDataGraphModelFeaturesQCOM
+
+instance ToCStruct PhysicalDeviceDataGraphModelFeaturesQCOM
+instance Show PhysicalDeviceDataGraphModelFeaturesQCOM
+
+instance FromCStruct PhysicalDeviceDataGraphModelFeaturesQCOM
+
+
+data PipelineCacheHeaderVersionDataGraphQCOM
+
+instance ToCStruct PipelineCacheHeaderVersionDataGraphQCOM
+instance Show PipelineCacheHeaderVersionDataGraphQCOM
+
+instance FromCStruct PipelineCacheHeaderVersionDataGraphQCOM
+
diff --git a/src/Vulkan/Extensions/VK_QCOM_elapsed_timer_query.hs b/src/Vulkan/Extensions/VK_QCOM_elapsed_timer_query.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_QCOM_elapsed_timer_query.hs
@@ -0,0 +1,248 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_QCOM_elapsed_timer_query - device extension
+--
+-- = VK_QCOM_elapsed_timer_query
+--
+-- [__Name String__]
+--     @VK_QCOM_elapsed_timer_query@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     174
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Not ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
+--
+-- [__Contact__]
+--
+--     -   Matthew Netsch
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_QCOM_elapsed_timer_query] @mnetsch%0A*Here describe the issue or question you have about the VK_QCOM_elapsed_timer_query extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_QCOM_elapsed_timer_query.adoc VK_QCOM_elapsed_timer_query>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2026-05-08
+--
+-- [__Interactions and External Dependencies__]
+--
+--     -   Interacts with @apiExt:VK_KHR_calibrated_timestamps@
+--
+--     -   Interacts with @apiExt:VK_KHR_maintenance7@
+--
+--     -   Interacts with @apiExt:VK_EXT_transform_feedback@
+--
+-- [__Contributors__]
+--
+--     -   Matthew Netsch, Qualcomm Technologies, Inc
+--
+--     -   Jacob Garcia, Qualcomm Technologies, Inc
+--
+--     -   Patrick Boyle, Qualcomm Technologies, Inc
+--
+-- == Description
+--
+-- This extension adds a new query type to write out the elapsed time
+-- between a set of commands, providing similar functionality to
+-- @GL_ARB_timer_query@.
+--
+-- There is no existing solution on tilers for measuring commands inside
+-- render pass instances, as comparing query timestamps will not give valid
+-- results.
+--
+-- This extension, solves the issue by adding a new query type that can be
+-- used to measure time between a begin and end query and works inside
+-- render pass instances. The implementation is responsible for
+-- accumulating the correct elapsed time for the commands across all tiles.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceElapsedTimerQueryFeaturesQCOM'
+--
+-- == New Enum Constants
+--
+-- -   'QCOM_ELAPSED_TIMER_QUERY_EXTENSION_NAME'
+--
+-- -   'QCOM_ELAPSED_TIMER_QUERY_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.QueryType.QueryType':
+--
+--     -   'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TIME_ELAPSED_QCOM'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_ELAPSED_TIMER_QUERY_FEATURES_QCOM'
+--
+-- == Issues
+--
+-- (1) How to handle overflows?
+--
+-- -   Resolved: While
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueryResultFlagBits VK_QUERY_RESULT_WITH_STATUS_BIT_KHR>
+--     could have been used to indicate an overflow, it is difficult for an
+--     implementation to detect this. The accumulation occurs on the
+--     device, and overflow detection requires calculations prior to
+--     accumulation which may not be supported by the device. Instead, if
+--     the application rejects outliers as part of the profiling process,
+--     this issue should be exceedingly rare. If an application is
+--     sensitive to this in production, it will need to implement some
+--     mechanism to reject bad results. For example, measuring the
+--     timestamp before and after the render pass could give a clue about
+--     an overflow.
+--
+-- == Version History
+--
+-- -   Revision 1, 2026-05-08 (Matthew Netsch)
+--
+--     -   Initial revision
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_QCOM_elapsed_timer_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_QCOM_elapsed_timer_query  ( PhysicalDeviceElapsedTimerQueryFeaturesQCOM(..)
+                                                      , QCOM_ELAPSED_TIMER_QUERY_SPEC_VERSION
+                                                      , pattern QCOM_ELAPSED_TIMER_QUERY_SPEC_VERSION
+                                                      , QCOM_ELAPSED_TIMER_QUERY_EXTENSION_NAME
+                                                      , pattern QCOM_ELAPSED_TIMER_QUERY_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_ELAPSED_TIMER_QUERY_FEATURES_QCOM))
+-- | VkPhysicalDeviceElapsedTimerQueryFeaturesQCOM - Structure describing
+-- elapsed timer query features that can be supported by an implementation
+--
+-- = Members
+--
+-- This structure describes the following feature:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceElapsedTimerQueryFeaturesQCOM' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceElapsedTimerQueryFeaturesQCOM', it /must/ add an instance
+-- of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_elapsed_timer_query VK_QCOM_elapsed_timer_query>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceElapsedTimerQueryFeaturesQCOM = PhysicalDeviceElapsedTimerQueryFeaturesQCOM
+  { -- | #features-elapsedTimerQuery# @elapsedTimerQuery@ indicates that the
+    -- implementation supports
+    -- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TIME_ELAPSED_QCOM' queries.
+    elapsedTimerQuery :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceElapsedTimerQueryFeaturesQCOM)
+#endif
+deriving instance Show PhysicalDeviceElapsedTimerQueryFeaturesQCOM
+
+instance ToCStruct PhysicalDeviceElapsedTimerQueryFeaturesQCOM where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceElapsedTimerQueryFeaturesQCOM{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_ELAPSED_TIMER_QUERY_FEATURES_QCOM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (elapsedTimerQuery))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_ELAPSED_TIMER_QUERY_FEATURES_QCOM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceElapsedTimerQueryFeaturesQCOM where
+  peekCStruct p = do
+    elapsedTimerQuery <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDeviceElapsedTimerQueryFeaturesQCOM
+             (bool32ToBool elapsedTimerQuery)
+
+instance Storable PhysicalDeviceElapsedTimerQueryFeaturesQCOM where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceElapsedTimerQueryFeaturesQCOM where
+  zero = PhysicalDeviceElapsedTimerQueryFeaturesQCOM
+           zero
+
+
+type QCOM_ELAPSED_TIMER_QUERY_SPEC_VERSION = 1
+
+-- No documentation found for TopLevel "VK_QCOM_ELAPSED_TIMER_QUERY_SPEC_VERSION"
+pattern QCOM_ELAPSED_TIMER_QUERY_SPEC_VERSION :: forall a . Integral a => a
+pattern QCOM_ELAPSED_TIMER_QUERY_SPEC_VERSION = 1
+
+
+type QCOM_ELAPSED_TIMER_QUERY_EXTENSION_NAME = "VK_QCOM_elapsed_timer_query"
+
+-- No documentation found for TopLevel "VK_QCOM_ELAPSED_TIMER_QUERY_EXTENSION_NAME"
+pattern QCOM_ELAPSED_TIMER_QUERY_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern QCOM_ELAPSED_TIMER_QUERY_EXTENSION_NAME = "VK_QCOM_elapsed_timer_query"
+
diff --git a/src/Vulkan/Extensions/VK_QCOM_elapsed_timer_query.hs-boot b/src/Vulkan/Extensions/VK_QCOM_elapsed_timer_query.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_QCOM_elapsed_timer_query.hs-boot
@@ -0,0 +1,140 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_QCOM_elapsed_timer_query - device extension
+--
+-- = VK_QCOM_elapsed_timer_query
+--
+-- [__Name String__]
+--     @VK_QCOM_elapsed_timer_query@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     174
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Not ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
+--
+-- [__Contact__]
+--
+--     -   Matthew Netsch
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_QCOM_elapsed_timer_query] @mnetsch%0A*Here describe the issue or question you have about the VK_QCOM_elapsed_timer_query extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_QCOM_elapsed_timer_query.adoc VK_QCOM_elapsed_timer_query>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2026-05-08
+--
+-- [__Interactions and External Dependencies__]
+--
+--     -   Interacts with @apiExt:VK_KHR_calibrated_timestamps@
+--
+--     -   Interacts with @apiExt:VK_KHR_maintenance7@
+--
+--     -   Interacts with @apiExt:VK_EXT_transform_feedback@
+--
+-- [__Contributors__]
+--
+--     -   Matthew Netsch, Qualcomm Technologies, Inc
+--
+--     -   Jacob Garcia, Qualcomm Technologies, Inc
+--
+--     -   Patrick Boyle, Qualcomm Technologies, Inc
+--
+-- == Description
+--
+-- This extension adds a new query type to write out the elapsed time
+-- between a set of commands, providing similar functionality to
+-- @GL_ARB_timer_query@.
+--
+-- There is no existing solution on tilers for measuring commands inside
+-- render pass instances, as comparing query timestamps will not give valid
+-- results.
+--
+-- This extension, solves the issue by adding a new query type that can be
+-- used to measure time between a begin and end query and works inside
+-- render pass instances. The implementation is responsible for
+-- accumulating the correct elapsed time for the commands across all tiles.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceElapsedTimerQueryFeaturesQCOM'
+--
+-- == New Enum Constants
+--
+-- -   'QCOM_ELAPSED_TIMER_QUERY_EXTENSION_NAME'
+--
+-- -   'QCOM_ELAPSED_TIMER_QUERY_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.QueryType.QueryType':
+--
+--     -   'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TIME_ELAPSED_QCOM'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_ELAPSED_TIMER_QUERY_FEATURES_QCOM'
+--
+-- == Issues
+--
+-- (1) How to handle overflows?
+--
+-- -   Resolved: While
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueryResultFlagBits VK_QUERY_RESULT_WITH_STATUS_BIT_KHR>
+--     could have been used to indicate an overflow, it is difficult for an
+--     implementation to detect this. The accumulation occurs on the
+--     device, and overflow detection requires calculations prior to
+--     accumulation which may not be supported by the device. Instead, if
+--     the application rejects outliers as part of the profiling process,
+--     this issue should be exceedingly rare. If an application is
+--     sensitive to this in production, it will need to implement some
+--     mechanism to reject bad results. For example, measuring the
+--     timestamp before and after the render pass could give a clue about
+--     an overflow.
+--
+-- == Version History
+--
+-- -   Revision 1, 2026-05-08 (Matthew Netsch)
+--
+--     -   Initial revision
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_QCOM_elapsed_timer_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_QCOM_elapsed_timer_query  (PhysicalDeviceElapsedTimerQueryFeaturesQCOM) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data PhysicalDeviceElapsedTimerQueryFeaturesQCOM
+
+instance ToCStruct PhysicalDeviceElapsedTimerQueryFeaturesQCOM
+instance Show PhysicalDeviceElapsedTimerQueryFeaturesQCOM
+
+instance FromCStruct PhysicalDeviceElapsedTimerQueryFeaturesQCOM
+
diff --git a/src/Vulkan/Extensions/VK_QCOM_filter_cubic_clamp.hs b/src/Vulkan/Extensions/VK_QCOM_filter_cubic_clamp.hs
--- a/src/Vulkan/Extensions/VK_QCOM_filter_cubic_clamp.hs
+++ b/src/Vulkan/Extensions/VK_QCOM_filter_cubic_clamp.hs
@@ -105,7 +105,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_QCOM_filter_cubic_clamp Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_QCOM_filter_cubic_clamp Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -153,12 +153,22 @@
 -- 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. 'PhysicalDeviceCubicClampFeaturesQCOM' /can/ also be used in
--- the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceCubicClampFeaturesQCOM', it /must/ add an instance of the
+-- structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_filter_cubic_clamp VK_QCOM_filter_cubic_clamp>,
@@ -167,7 +177,7 @@
 data PhysicalDeviceCubicClampFeaturesQCOM = PhysicalDeviceCubicClampFeaturesQCOM
   { -- | #features-cubicRangeClamp# @cubicRangeClamp@ indicates that the
     -- implementation supports cubic filtering in combination with a
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#textures-texel-range-clamp texel range clamp>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#textures-texel-range-clamp texel range clamp>.
     cubicRangeClamp :: Bool }
   deriving (Typeable, Eq)
 #if defined(GENERIC_INSTANCES)
diff --git a/src/Vulkan/Extensions/VK_QCOM_filter_cubic_clamp.hs-boot b/src/Vulkan/Extensions/VK_QCOM_filter_cubic_clamp.hs-boot
--- a/src/Vulkan/Extensions/VK_QCOM_filter_cubic_clamp.hs-boot
+++ b/src/Vulkan/Extensions/VK_QCOM_filter_cubic_clamp.hs-boot
@@ -105,7 +105,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_QCOM_filter_cubic_clamp Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_QCOM_filter_cubic_clamp Vulkan Specification>.
 --
 -- This 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_filter_cubic_weights.hs b/src/Vulkan/Extensions/VK_QCOM_filter_cubic_weights.hs
--- a/src/Vulkan/Extensions/VK_QCOM_filter_cubic_weights.hs
+++ b/src/Vulkan/Extensions/VK_QCOM_filter_cubic_weights.hs
@@ -110,7 +110,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_QCOM_filter_cubic_weights Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_QCOM_filter_cubic_weights Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -175,12 +175,22 @@
 -- 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. 'PhysicalDeviceCubicWeightsFeaturesQCOM' /can/ also be used
--- in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceCubicWeightsFeaturesQCOM', it /must/ add an instance of
+-- the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_filter_cubic_weights VK_QCOM_filter_cubic_weights>,
@@ -240,8 +250,12 @@
 -- If that structure is not present, @cubicWeights@ is considered to be
 -- 'CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.Sampler.SamplerCreateInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_filter_cubic_weights VK_QCOM_filter_cubic_weights>,
@@ -295,13 +309,17 @@
 -- | VkBlitImageCubicWeightsInfoQCOM - Structure specifying image blit cubic
 -- weight info
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.BlitImageInfo2'
+--
 -- = 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_QCOM_filter_cubic_weights VK_QCOM_filter_cubic_weights>,
 -- 'CubicFilterWeightsQCOM',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.ImageBlit2',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data BlitImageCubicWeightsInfoQCOM = BlitImageCubicWeightsInfoQCOM
   { -- | @cubicWeights@ is a 'CubicFilterWeightsQCOM' value controlling cubic
@@ -350,6 +368,19 @@
 
 -- | VkCubicFilterWeightsQCOM - Specify cubic weights for texture filtering
 --
+-- = Description
+--
+-- -   'CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM' specifies Catmull-Rom
+--     weights.
+--
+-- -   'CUBIC_FILTER_WEIGHTS_ZERO_TANGENT_CARDINAL_QCOM' specifies Zero
+--     Tangent Cardinal weights.
+--
+-- -   'CUBIC_FILTER_WEIGHTS_B_SPLINE_QCOM' specifies B-Spline weights.
+--
+-- -   'CUBIC_FILTER_WEIGHTS_MITCHELL_NETRAVALI_QCOM' specifies
+--     Mitchell-Netravali weights.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_filter_cubic_weights VK_QCOM_filter_cubic_weights>,
@@ -357,18 +388,16 @@
 newtype CubicFilterWeightsQCOM = CubicFilterWeightsQCOM Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM' specifies Catmull-Rom weights.
+-- No documentation found for Nested "VkCubicFilterWeightsQCOM" "VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM"
 pattern CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM = CubicFilterWeightsQCOM 0
 
--- | 'CUBIC_FILTER_WEIGHTS_ZERO_TANGENT_CARDINAL_QCOM' specifies Zero Tangent
--- Cardinal weights.
+-- No documentation found for Nested "VkCubicFilterWeightsQCOM" "VK_CUBIC_FILTER_WEIGHTS_ZERO_TANGENT_CARDINAL_QCOM"
 pattern CUBIC_FILTER_WEIGHTS_ZERO_TANGENT_CARDINAL_QCOM = CubicFilterWeightsQCOM 1
 
--- | 'CUBIC_FILTER_WEIGHTS_B_SPLINE_QCOM' specifies B-Spline weights.
+-- No documentation found for Nested "VkCubicFilterWeightsQCOM" "VK_CUBIC_FILTER_WEIGHTS_B_SPLINE_QCOM"
 pattern CUBIC_FILTER_WEIGHTS_B_SPLINE_QCOM = CubicFilterWeightsQCOM 2
 
--- | 'CUBIC_FILTER_WEIGHTS_MITCHELL_NETRAVALI_QCOM' specifies
--- Mitchell-Netravali weights.
+-- No documentation found for Nested "VkCubicFilterWeightsQCOM" "VK_CUBIC_FILTER_WEIGHTS_MITCHELL_NETRAVALI_QCOM"
 pattern CUBIC_FILTER_WEIGHTS_MITCHELL_NETRAVALI_QCOM = CubicFilterWeightsQCOM 3
 
 {-# COMPLETE
diff --git a/src/Vulkan/Extensions/VK_QCOM_filter_cubic_weights.hs-boot b/src/Vulkan/Extensions/VK_QCOM_filter_cubic_weights.hs-boot
--- a/src/Vulkan/Extensions/VK_QCOM_filter_cubic_weights.hs-boot
+++ b/src/Vulkan/Extensions/VK_QCOM_filter_cubic_weights.hs-boot
@@ -110,7 +110,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_QCOM_filter_cubic_weights Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_QCOM_filter_cubic_weights Vulkan Specification>.
 --
 -- This 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
@@ -15,7 +15,7 @@
 --     426
 --
 -- [__Revision__]
---     2
+--     3
 --
 -- [__Ratification Status__]
 --     Not ratified
@@ -29,6 +29,12 @@
 --     and
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_fragment_density_map VK_EXT_fragment_density_map>
 --
+-- [__Deprecation State__]
+--
+--     -   /Promoted/ to
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_fragment_density_map_offset VK_EXT_fragment_density_map_offset>
+--         extension
+--
 -- [__Contact__]
 --
 --     -   Matthew Netsch
@@ -51,12 +57,15 @@
 --
 --     -   Manan Katwala, Qualcomm Technologies, Inc.
 --
+--     -   Connor Abbott, Valve Corporation
+--
 -- == Description
 --
 -- This extension allows an application to specify offsets to a fragment
--- density map attachment, changing the framebuffer location where density
--- values are applied to without having to regenerate the fragment density
--- map.
+-- density map attachment, changing the location where the fragment density
+-- map is applied to the framebuffer. This is helpful for eye-tracking use
+-- cases where the fovea needs to be moved around the framebuffer to match
+-- the eye pose.
 --
 -- == New Structures
 --
@@ -72,7 +81,8 @@
 --     -   'PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM'
 --
 -- -   Extending
---     'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.SubpassEndInfo':
+--     'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.SubpassEndInfo',
+--     'Vulkan.Extensions.VK_KHR_maintenance10.RenderingEndInfoKHR':
 --
 --     -   'SubpassFragmentDensityMapOffsetEndInfoQCOM'
 --
@@ -85,18 +95,23 @@
 -- -   Extending
 --     'Vulkan.Core10.Enums.ImageCreateFlagBits.ImageCreateFlagBits':
 --
---     -   'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM'
+--     -   'IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM'
 --
 -- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM'
+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM'
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM'
+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM'
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM'
+--     -   'STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM'
 --
 -- == Version History
 --
+-- -   Revision 3, 2025-03-20 (Connor Abbott\/Matthew Netsch)
+--
+--     -   Fix clamp equation and clarify the offsets are FDM relative
+--         (editorial only)
+--
 -- -   Revision 2, 2024-06-17 (Matthew Netsch)
 --
 --     -   Fix typo in spec regarding fragmentDensityMapOffset feature
@@ -112,346 +127,71 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_QCOM_fragment_density_map_offset Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
-module Vulkan.Extensions.VK_QCOM_fragment_density_map_offset  ( PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM(..)
-                                                              , PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM(..)
-                                                              , SubpassFragmentDensityMapOffsetEndInfoQCOM(..)
+module Vulkan.Extensions.VK_QCOM_fragment_density_map_offset  ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM
+                                                              , pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM
+                                                              , pattern STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM
+                                                              , pattern IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM
+                                                              , PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM
+                                                              , PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM
+                                                              , SubpassFragmentDensityMapOffsetEndInfoQCOM
                                                               , QCOM_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION
                                                               , pattern QCOM_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION
                                                               , QCOM_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME
                                                               , pattern QCOM_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME
+                                                              , PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT(..)
+                                                              , PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT(..)
+                                                              , RenderPassFragmentDensityMapOffsetEndInfoEXT(..)
                                                               ) 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.Core10.FundamentalTypes (Bool32)
-import Vulkan.Core10.FundamentalTypes (Extent2D)
-import Vulkan.Core10.FundamentalTypes (Offset2D)
-import Vulkan.Core10.Enums.StructureType (StructureType)
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM))
--- | VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM - Structure
--- describing fragment density map offset features that can be supported by
--- an implementation
---
--- = Members
---
--- This structure describes the following feature:
---
--- = Description
---
--- If the 'PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM' 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. 'PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM' /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_QCOM_fragment_density_map_offset VK_QCOM_fragment_density_map_offset>,
--- 'Vulkan.Core10.FundamentalTypes.Bool32',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM = PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM
-  { -- | #features-fragmentDensityMapOffset# @fragmentDensityMapOffset@ specifies
-    -- whether the implementation supports
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-fragmentdensitymapoffsets fragment density map offsets>
-    fragmentDensityMapOffset :: Bool }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM)
-#endif
-deriving instance Show PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM
+import Vulkan.Extensions.VK_EXT_fragment_density_map_offset (PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT)
+import Vulkan.Extensions.VK_EXT_fragment_density_map_offset (PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT)
+import Vulkan.Extensions.VK_EXT_fragment_density_map_offset (RenderPassFragmentDensityMapOffsetEndInfoEXT)
+import Vulkan.Core10.Enums.ImageCreateFlagBits (ImageCreateFlags)
+import Vulkan.Core10.Enums.ImageCreateFlagBits (ImageCreateFlagBits(IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_EXT))
+import Vulkan.Extensions.VK_EXT_fragment_density_map_offset (PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT(..))
+import Vulkan.Extensions.VK_EXT_fragment_density_map_offset (PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT(..))
+import Vulkan.Extensions.VK_EXT_fragment_density_map_offset (RenderPassFragmentDensityMapOffsetEndInfoEXT(..))
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM = STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_EXT
 
-instance ToCStruct PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM where
-  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (fragmentDensityMapOffset))
-    f
-  cStructSize = 24
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
-    f
 
-instance FromCStruct PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM where
-  peekCStruct p = do
-    fragmentDensityMapOffset <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
-    pure $ PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM
-             (bool32ToBool fragmentDensityMapOffset)
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM = STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_EXT
 
-instance Storable PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM where
-  sizeOf ~_ = 24
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
 
-instance Zero PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM where
-  zero = PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM
-           zero
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM"
+pattern STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM = STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_EXT
 
 
--- | VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM - Structure
--- describing fragment density map offset properties that can be supported
--- by an implementation
---
--- = Description
---
--- If the 'PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM' 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_QCOM_fragment_density_map_offset VK_QCOM_fragment_density_map_offset>,
--- 'Vulkan.Core10.FundamentalTypes.Extent2D',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM = PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM
-  { -- | #limits-fragmentdensityoffsetgranularity#
-    -- @fragmentDensityOffsetGranularity@ is the granularity for
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-fragmentdensitymapoffsets fragment density offsets>.
-    fragmentDensityOffsetGranularity :: Extent2D }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM)
-#endif
-deriving instance Show PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM
+-- No documentation found for TopLevel "VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM"
+pattern IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM = IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_EXT
 
-instance ToCStruct PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM where
-  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Extent2D)) (fragmentDensityOffsetGranularity)
-    f
-  cStructSize = 24
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Extent2D)) (zero)
-    f
 
-instance FromCStruct PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM where
-  peekCStruct p = do
-    fragmentDensityOffsetGranularity <- peekCStruct @Extent2D ((p `plusPtr` 16 :: Ptr Extent2D))
-    pure $ PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM
-             fragmentDensityOffsetGranularity
+-- No documentation found for TopLevel "VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM"
+type PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM = PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT
 
-instance Storable PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM where
-  sizeOf ~_ = 24
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
 
-instance Zero PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM where
-  zero = PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM
-           zero
+-- No documentation found for TopLevel "VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM"
+type PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM = PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT
 
 
--- | VkSubpassFragmentDensityMapOffsetEndInfoQCOM - Structure specifying
--- fragment density map offset subpass end information
---
--- = Description
---
--- The array elements are given per @layer@ as defined by
--- <https://registry.khronos.org/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.
---
--- Offset values specified for any subpass that is not the last subpass in
--- the render pass are ignored. If the
--- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.SubpassEndInfo'::@pNext@
--- chain for the last subpass of a render pass does not include
--- 'SubpassFragmentDensityMapOffsetEndInfoQCOM', or if
--- @fragmentDensityOffsetCount@ is zero, then the offset (0,0) is used for
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#fragmentdensitymap-fetch-density-value Fetch Density Value>.
---
--- == Valid Usage
---
--- -   #VUID-VkSubpassFragmentDensityMapOffsetEndInfoQCOM-fragmentDensityMapOffsets-06503#
---     If the
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-fragmentDensityMapOffset fragmentDensityMapOffset>
---     feature is not enabled or fragment density map is not enabled in the
---     render pass, @fragmentDensityOffsetCount@ /must/ equal @0@
---
--- -   #VUID-VkSubpassFragmentDensityMapOffsetEndInfoQCOM-fragmentDensityMapAttachment-06504#
---     If
---     'Vulkan.Core10.Pass.SubpassDescription'::@fragmentDensityMapAttachment@
---     is not is not 'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' and was
---     not created with
---     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM',
---     @fragmentDensityOffsetCount@ /must/ equal @0@
---
--- -   #VUID-VkSubpassFragmentDensityMapOffsetEndInfoQCOM-pDepthStencilAttachment-06505#
---     If
---     'Vulkan.Core10.Pass.SubpassDescription'::@pDepthStencilAttachment@
---     is not is not 'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' and was
---     not created with
---     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM',
---     @fragmentDensityOffsetCount@ /must/ equal @0@
---
--- -   #VUID-VkSubpassFragmentDensityMapOffsetEndInfoQCOM-pInputAttachments-06506#
---     If any element of
---     'Vulkan.Core10.Pass.SubpassDescription'::@pInputAttachments@ is not
---     is not 'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' and was not
---     created with
---     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM',
---     @fragmentDensityOffsetCount@ /must/ equal @0@
---
--- -   #VUID-VkSubpassFragmentDensityMapOffsetEndInfoQCOM-pColorAttachments-06507#
---     If any element of
---     'Vulkan.Core10.Pass.SubpassDescription'::@pColorAttachments@ is not
---     is not 'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' and was not
---     created with
---     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM',
---     @fragmentDensityOffsetCount@ /must/ equal @0@
---
--- -   #VUID-VkSubpassFragmentDensityMapOffsetEndInfoQCOM-pResolveAttachments-06508#
---     If any element of
---     'Vulkan.Core10.Pass.SubpassDescription'::@pResolveAttachments@ is
---     not is not 'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' and was
---     not created with
---     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM',
---     @fragmentDensityOffsetCount@ /must/ equal @0@
---
--- -   #VUID-VkSubpassFragmentDensityMapOffsetEndInfoQCOM-pPreserveAttachments-06509#
---     If any element of
---     'Vulkan.Core10.Pass.SubpassDescription'::@pPreserveAttachments@ is
---     not is not 'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' and was
---     not created with
---     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM',
---     @fragmentDensityOffsetCount@ /must/ equal @0@
---
--- -   #VUID-VkSubpassFragmentDensityMapOffsetEndInfoQCOM-fragmentDensityOffsetCount-06510#
---     If @fragmentDensityOffsetCount@ is not @0@ and multiview is enabled
---     for the render pass, @fragmentDensityOffsetCount@ /must/ equal the
---     @layerCount@ that was specified in creating the fragment density map
---     attachment view
---
--- -   #VUID-VkSubpassFragmentDensityMapOffsetEndInfoQCOM-fragmentDensityOffsetCount-06511#
---     If @fragmentDensityOffsetCount@ is not @0@ and multiview is not
---     enabled for the render pass, @fragmentDensityOffsetCount@ /must/
---     equal @1@
---
--- -   #VUID-VkSubpassFragmentDensityMapOffsetEndInfoQCOM-x-06512# The @x@
---     component of each element of @pFragmentDensityOffsets@ /must/ be an
---     integer multiple of @fragmentDensityOffsetGranularity.width@
---
--- -   #VUID-VkSubpassFragmentDensityMapOffsetEndInfoQCOM-y-06513# The @y@
---     component of each element of @pFragmentDensityOffsets@ /must/ be an
---     integer multiple of @fragmentDensityOffsetGranularity.height@
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkSubpassFragmentDensityMapOffsetEndInfoQCOM-sType-sType#
---     @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM'
---
--- -   #VUID-VkSubpassFragmentDensityMapOffsetEndInfoQCOM-pFragmentDensityOffsets-parameter#
---     If @fragmentDensityOffsetCount@ is not @0@,
---     @pFragmentDensityOffsets@ /must/ be a valid pointer to an array of
---     @fragmentDensityOffsetCount@
---     'Vulkan.Core10.FundamentalTypes.Offset2D' structures
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_fragment_density_map_offset VK_QCOM_fragment_density_map_offset>,
--- 'Vulkan.Core10.FundamentalTypes.Offset2D',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data SubpassFragmentDensityMapOffsetEndInfoQCOM = SubpassFragmentDensityMapOffsetEndInfoQCOM
-  { -- | @pFragmentDensityOffsets@ is a pointer to an array of
-    -- 'Vulkan.Core10.FundamentalTypes.Offset2D' structs, each of which
-    -- describes the offset per layer.
-    fragmentDensityOffsets :: Vector Offset2D }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (SubpassFragmentDensityMapOffsetEndInfoQCOM)
-#endif
-deriving instance Show SubpassFragmentDensityMapOffsetEndInfoQCOM
-
-instance ToCStruct SubpassFragmentDensityMapOffsetEndInfoQCOM where
-  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p SubpassFragmentDensityMapOffsetEndInfoQCOM{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (fragmentDensityOffsets)) :: Word32))
-    pPFragmentDensityOffsets' <- ContT $ allocaBytes @Offset2D ((Data.Vector.length (fragmentDensityOffsets)) * 8)
-    lift $ Data.Vector.imapM_ (\i e -> poke (pPFragmentDensityOffsets' `plusPtr` (8 * (i)) :: Ptr Offset2D) (e)) (fragmentDensityOffsets)
-    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Offset2D))) (pPFragmentDensityOffsets')
-    lift $ f
-  cStructSize = 32
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    f
-
-instance FromCStruct SubpassFragmentDensityMapOffsetEndInfoQCOM where
-  peekCStruct p = do
-    fragmentDensityOffsetCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
-    pFragmentDensityOffsets <- peek @(Ptr Offset2D) ((p `plusPtr` 24 :: Ptr (Ptr Offset2D)))
-    pFragmentDensityOffsets' <- generateM (fromIntegral fragmentDensityOffsetCount) (\i -> peekCStruct @Offset2D ((pFragmentDensityOffsets `advancePtrBytes` (8 * (i)) :: Ptr Offset2D)))
-    pure $ SubpassFragmentDensityMapOffsetEndInfoQCOM
-             pFragmentDensityOffsets'
-
-instance Zero SubpassFragmentDensityMapOffsetEndInfoQCOM where
-  zero = SubpassFragmentDensityMapOffsetEndInfoQCOM
-           mempty
+-- No documentation found for TopLevel "VkSubpassFragmentDensityMapOffsetEndInfoQCOM"
+type SubpassFragmentDensityMapOffsetEndInfoQCOM = RenderPassFragmentDensityMapOffsetEndInfoEXT
 
 
-type QCOM_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION = 2
+type QCOM_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION = 3
 
 -- No documentation found for TopLevel "VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION"
 pattern QCOM_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION :: forall a . Integral a => a
-pattern QCOM_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION = 2
+pattern QCOM_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION = 3
 
 
 type QCOM_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME = "VK_QCOM_fragment_density_map_offset"
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
deleted file mode 100644
--- a/src/Vulkan/Extensions/VK_QCOM_fragment_density_map_offset.hs-boot
+++ /dev/null
@@ -1,150 +0,0 @@
-{-# language CPP #-}
--- | = Name
---
--- VK_QCOM_fragment_density_map_offset - device extension
---
--- = VK_QCOM_fragment_density_map_offset
---
--- [__Name String__]
---     @VK_QCOM_fragment_density_map_offset@
---
--- [__Extension Type__]
---     Device extension
---
--- [__Registered Extension Number__]
---     426
---
--- [__Revision__]
---     2
---
--- [__Ratification Status__]
---     Not ratified
---
--- [__Extension and Version Dependencies__]
---         
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
---          or
---         
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
---     and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_fragment_density_map VK_EXT_fragment_density_map>
---
--- [__Contact__]
---
---     -   Matthew Netsch
---         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_QCOM_fragment_density_map_offset] @mnetsch%0A*Here describe the issue or question you have about the VK_QCOM_fragment_density_map_offset extension* >
---
--- == Other Extension Metadata
---
--- [__Last Modified Date__]
---     2024-06-17
---
--- [__Contributors__]
---
---     -   Matthew Netsch, Qualcomm Technologies, Inc.
---
---     -   Jonathan Wicks, Qualcomm Technologies, Inc.
---
---     -   Jonathan Tinkham, Qualcomm Technologies, Inc.
---
---     -   Jeff Leger, Qualcomm Technologies, Inc.
---
---     -   Manan Katwala, Qualcomm Technologies, Inc.
---
--- == Description
---
--- This extension allows an application to specify offsets to a fragment
--- density map attachment, changing the framebuffer location where density
--- values are applied to without having to regenerate the fragment density
--- map.
---
--- == New Structures
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
---     'Vulkan.Core10.Device.DeviceCreateInfo':
---
---     -   'PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM'
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
---
---     -   'PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM'
---
--- -   Extending
---     'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.SubpassEndInfo':
---
---     -   'SubpassFragmentDensityMapOffsetEndInfoQCOM'
---
--- == New Enum Constants
---
--- -   'QCOM_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME'
---
--- -   'QCOM_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION'
---
--- -   Extending
---     'Vulkan.Core10.Enums.ImageCreateFlagBits.ImageCreateFlagBits':
---
---     -   'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM'
---
--- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM'
---
--- == Version History
---
--- -   Revision 2, 2024-06-17 (Matthew Netsch)
---
---     -   Fix typo in spec regarding fragmentDensityMapOffset feature
---
--- -   Revision 1, 2021-09-03 (Matthew Netsch)
---
---     -   Initial version
---
--- == See Also
---
--- No cross-references are available
---
--- == Document Notes
---
--- For more information, see the
--- <https://registry.khronos.org/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.
-module Vulkan.Extensions.VK_QCOM_fragment_density_map_offset  ( PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM
-                                                              , PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM
-                                                              , SubpassFragmentDensityMapOffsetEndInfoQCOM
-                                                              ) where
-
-import Vulkan.CStruct (FromCStruct)
-import Vulkan.CStruct (ToCStruct)
-import Data.Kind (Type)
-
-data PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM
-
-instance ToCStruct PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM
-instance Show PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM
-
-instance FromCStruct PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM
-
-
-data PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM
-
-instance ToCStruct PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM
-instance Show PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM
-
-instance FromCStruct PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM
-
-
-data SubpassFragmentDensityMapOffsetEndInfoQCOM
-
-instance ToCStruct SubpassFragmentDensityMapOffsetEndInfoQCOM
-instance Show SubpassFragmentDensityMapOffsetEndInfoQCOM
-
-instance FromCStruct SubpassFragmentDensityMapOffsetEndInfoQCOM
-
diff --git a/src/Vulkan/Extensions/VK_QCOM_image_processing.hs b/src/Vulkan/Extensions/VK_QCOM_image_processing.hs
--- a/src/Vulkan/Extensions/VK_QCOM_image_processing.hs
+++ b/src/Vulkan/Extensions/VK_QCOM_image_processing.hs
@@ -93,8 +93,8 @@
 --     whether a block of texels in the /target image/ matches a
 --     corresponding block of texels in the /reference image/. The error
 --     metric is computed per-component. @OpImageBlockMatchSADQCOM@
---     computes \"Sum Of Absolute Difference\" and
---     @OpImageBlockMatchSSDQCOM@ computes \"Sum of Squared Difference\".
+--     computes “Sum Of Absolute Difference” and @OpImageBlockMatchSSDQCOM@
+--     computes “Sum of Squared Difference”.
 --
 -- Each of the image processing instructions operate only on 2D images. The
 -- instructions do not-support sampling of mipmap, multi-plane,
@@ -182,7 +182,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_QCOM_image_processing Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_QCOM_image_processing Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -229,13 +229,17 @@
 --
 -- The @filterCenter@ specifies the origin or center of the filter kernel,
 -- as described in
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#textures-weightimage-filteroperation Weight Sampling Operation>.
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#textures-weightimage-filteroperation Weight Sampling Operation>.
 -- The @numPhases@ describes the number of sub-pixel filter phases as
 -- described in
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#textures-weightimage-filterphases Weight Sampling Phases>.
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#textures-weightimage-filterphases Weight Sampling Phases>.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.ImageView.ImageViewCreateInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_image_processing VK_QCOM_image_processing>,
@@ -249,14 +253,14 @@
   , -- | @filterSize@ is a 'Vulkan.Core10.FundamentalTypes.Extent2D' specifying
     -- weight filter dimensions.
     filterSize :: Extent2D
-  , -- | @numPhases@ is number of sub-pixel filter phases.
+  , -- | @numPhases@ is the number of sub-pixel filter phases.
     --
     -- #VUID-VkImageViewSampleWeightCreateInfoQCOM-numPhases-06962# @numPhases@
     -- /must/ be a power of two squared value (i.e., 1, 4, 16, 64, 256, etc.)
     --
     -- #VUID-VkImageViewSampleWeightCreateInfoQCOM-numPhases-06963# @numPhases@
     -- /must/ be less than or equal to
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-weightfilter-phases ::maxWeightFilterPhases>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-weightfilter-phases ::maxWeightFilterPhases>
     numPhases :: Word32
   }
   deriving (Typeable)
@@ -320,12 +324,22 @@
 -- 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. 'PhysicalDeviceImageProcessingFeaturesQCOM' /can/ also be
--- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceImageProcessingFeaturesQCOM', it /must/ add an instance
+-- of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_image_processing VK_QCOM_image_processing>,
@@ -409,8 +423,12 @@
 -- These are properties of the image processing information of a physical
 -- device.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_image_processing VK_QCOM_image_processing>,
@@ -420,7 +438,7 @@
   { -- | #limits-weightfilter-phases# @maxWeightFilterPhases@ is the maximum
     -- value that /can/ be specified for
     -- 'ImageViewSampleWeightCreateInfoQCOM'::@numPhases@ in
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#textures-weightimage-filterphases weight image sampling>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#textures-weightimage-filterphases weight image sampling>
     -- operations.
     maxWeightFilterPhases :: Word32
   , -- | #limits-weightfilter-maxdimension# @maxWeightFilterDimension@ is a
@@ -432,14 +450,14 @@
     -- 'Vulkan.Core10.FundamentalTypes.Extent2D' describing the largest
     -- dimensions (@width@ and @height@) that /can/ be specified for
     -- @blockSize@ in
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#textures-blockmatch block matching>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#textures-blockmatch block matching>
     -- operations.
     maxBlockMatchRegion :: Extent2D
   , -- | #limits-boxfilter-maxblocksize# @maxBoxFilterBlockSize@ is a
     -- 'Vulkan.Core10.FundamentalTypes.Extent2D' describing the maximum
     -- dimensions (@width@ and @height@) that /can/ be specified for
     -- @blocksize@ in
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#textures-boxfilter box filter sampling>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#textures-boxfilter box filter sampling>
     -- operations.
     maxBoxFilterBlockSize :: Extent2D
   }
diff --git a/src/Vulkan/Extensions/VK_QCOM_image_processing.hs-boot b/src/Vulkan/Extensions/VK_QCOM_image_processing.hs-boot
--- a/src/Vulkan/Extensions/VK_QCOM_image_processing.hs-boot
+++ b/src/Vulkan/Extensions/VK_QCOM_image_processing.hs-boot
@@ -93,8 +93,8 @@
 --     whether a block of texels in the /target image/ matches a
 --     corresponding block of texels in the /reference image/. The error
 --     metric is computed per-component. @OpImageBlockMatchSADQCOM@
---     computes \"Sum Of Absolute Difference\" and
---     @OpImageBlockMatchSSDQCOM@ computes \"Sum of Squared Difference\".
+--     computes “Sum Of Absolute Difference” and @OpImageBlockMatchSSDQCOM@
+--     computes “Sum of Squared Difference”.
 --
 -- Each of the image processing instructions operate only on 2D images. The
 -- instructions do not-support sampling of mipmap, multi-plane,
@@ -182,7 +182,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_QCOM_image_processing Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_QCOM_image_processing Vulkan Specification>.
 --
 -- This 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_image_processing2.hs b/src/Vulkan/Extensions/VK_QCOM_image_processing2.hs
--- a/src/Vulkan/Extensions/VK_QCOM_image_processing2.hs
+++ b/src/Vulkan/Extensions/VK_QCOM_image_processing2.hs
@@ -93,7 +93,7 @@
 --
 -- > vec4 textureBlockMatchWindowSAD( sampler2D target,
 -- >                                  uvec2 targetCoord,
--- >                                  samler2D reference,
+-- >                                  sampler2D reference,
 -- >                                  uvec2 refCoord,
 -- >                                  uvec2 blocksize) {
 -- >     // compareMode (MIN or MAX) comes from the vkSampler associated with `target`
@@ -135,7 +135,7 @@
 --
 -- > vec4 textureBlockMatchGatherSAD( sampler2D target,
 -- >                                  uvec2 targetCoord,
--- >                                  samler2D reference,
+-- >                                  sampler2D reference,
 -- >                                  uvec2 refCoord,
 -- >                                  uvec2 blocksize) {
 -- >     vec4 out;
@@ -205,7 +205,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_QCOM_image_processing2 Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_QCOM_image_processing2 Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -269,12 +269,22 @@
 -- 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. 'PhysicalDeviceImageProcessing2FeaturesQCOM' /can/ also be
--- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceImageProcessing2FeaturesQCOM', it /must/ add an instance
+-- of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_image_processing2 VK_QCOM_image_processing2>,
@@ -339,8 +349,12 @@
 -- These are properties of the image processing2 information of a physical
 -- device.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_image_processing2 VK_QCOM_image_processing2>,
@@ -392,8 +406,12 @@
 -- | VkSamplerBlockMatchWindowCreateInfoQCOM - Structure specifying the block
 -- match window parameters
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.Sampler.SamplerCreateInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_image_processing2 VK_QCOM_image_processing2>,
@@ -456,6 +474,14 @@
 
 -- | VkBlockMatchWindowCompareModeQCOM - Block match window compare modes
 --
+-- = Description
+--
+-- -   'BLOCK_MATCH_WINDOW_COMPARE_MODE_MIN_QCOM' specifies that windowed
+--     block match operations return the minimum error within the window.
+--
+-- -   'BLOCK_MATCH_WINDOW_COMPARE_MODE_MAX_QCOM' specifies that windowed
+--     block match operations return the maximum error within the window.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_image_processing2 VK_QCOM_image_processing2>,
@@ -463,12 +489,10 @@
 newtype BlockMatchWindowCompareModeQCOM = BlockMatchWindowCompareModeQCOM Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'BLOCK_MATCH_WINDOW_COMPARE_MODE_MIN_QCOM' specifies that windowed block
--- match operations return the minimum error within the window.
+-- No documentation found for Nested "VkBlockMatchWindowCompareModeQCOM" "VK_BLOCK_MATCH_WINDOW_COMPARE_MODE_MIN_QCOM"
 pattern BLOCK_MATCH_WINDOW_COMPARE_MODE_MIN_QCOM = BlockMatchWindowCompareModeQCOM 0
 
--- | 'BLOCK_MATCH_WINDOW_COMPARE_MODE_MAX_QCOM' specifies that windowed block
--- match operations return the maximum error within the window.
+-- No documentation found for Nested "VkBlockMatchWindowCompareModeQCOM" "VK_BLOCK_MATCH_WINDOW_COMPARE_MODE_MAX_QCOM"
 pattern BLOCK_MATCH_WINDOW_COMPARE_MODE_MAX_QCOM = BlockMatchWindowCompareModeQCOM 1
 
 {-# COMPLETE
diff --git a/src/Vulkan/Extensions/VK_QCOM_image_processing2.hs-boot b/src/Vulkan/Extensions/VK_QCOM_image_processing2.hs-boot
--- a/src/Vulkan/Extensions/VK_QCOM_image_processing2.hs-boot
+++ b/src/Vulkan/Extensions/VK_QCOM_image_processing2.hs-boot
@@ -93,7 +93,7 @@
 --
 -- > vec4 textureBlockMatchWindowSAD( sampler2D target,
 -- >                                  uvec2 targetCoord,
--- >                                  samler2D reference,
+-- >                                  sampler2D reference,
 -- >                                  uvec2 refCoord,
 -- >                                  uvec2 blocksize) {
 -- >     // compareMode (MIN or MAX) comes from the vkSampler associated with `target`
@@ -135,7 +135,7 @@
 --
 -- > vec4 textureBlockMatchGatherSAD( sampler2D target,
 -- >                                  uvec2 targetCoord,
--- >                                  samler2D reference,
+-- >                                  sampler2D reference,
 -- >                                  uvec2 refCoord,
 -- >                                  uvec2 blocksize) {
 -- >     vec4 out;
@@ -205,7 +205,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_QCOM_image_processing2 Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_QCOM_image_processing2 Vulkan Specification>.
 --
 -- This 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_image_processing3.hs b/src/Vulkan/Extensions/VK_QCOM_image_processing3.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_QCOM_image_processing3.hs
@@ -0,0 +1,296 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_QCOM_image_processing3 - device extension
+--
+-- = VK_QCOM_image_processing3
+--
+-- [__Name String__]
+--     @VK_QCOM_image_processing3@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     304
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Not ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
+--
+-- [__API Interactions__]
+--
+--     -   Interacts with VK_QCOM_image_processing
+--
+-- [__SPIR-V Dependencies__]
+--
+--     -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/QCOM/SPV_QCOM_image_processing3.html SPV_QCOM_image_processing3>
+--
+-- [__Contact__]
+--
+--     -   Matthew Netsch
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_QCOM_image_processing3] @mnetsch%0A*Here describe the issue or question you have about the VK_QCOM_image_processing3 extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_QCOM_image_processing3.adoc VK_QCOM_image_processing3>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2026-05-08
+--
+-- [__Interactions and External Dependencies__]
+--
+--     -   This extension provides API support for
+--         <https://github.com/KhronosGroup/GLSL/blob/main/extensions/qcom/GLSL_QCOM_image_processing3.txt GL_QCOM_image_processing3>
+--
+--     -   Interacts with @VK_QCOM_tile_shading@
+--
+--     -   Interacts with @VK_QCOM_image_processing@
+--
+--     -   Interacts with @VK_QCOM_image_processing2@
+--
+-- [__Contributors__]
+--
+--     -   Matthew Netsch, Qualcomm Technologies, Inc.
+--
+--     -   Jonathan Wicks, Qualcomm Technologies, Inc.
+--
+--     -   Liang Li, Qualcomm Technologies, Inc.
+--
+--     -   Wooyoung Kim, Qualcomm Technologies, Inc.
+--
+-- == Description
+--
+-- This extension introduces a new SPIR-V built-in function to support
+-- predefined image gather operations used in popular image processing
+-- algorithms such as super resolution upscaling and contrast-adaptive
+-- sharpening.
+--
+-- The @OpImageGatherQCOM@ instruction supports the following modes:
+--
+-- -   @GatherH2QCOM@ - produces an image gather with an extra horizontal
+--     offset
+--
+-- -   @GatherV2QCOM@ - produces an image gather with an extra vertical
+--     offset. Combined with @OpImageGather@ and @GatherH2QCOM@, this is
+--     useful for creating a 12-tap filter for upscaling.
+--
+-- -   @GatherDQCOM@ - produces an image gather by sampling the cardinal
+--     offsets. Combined with a point sample of the center texel, this is
+--     useful for creating a 5-tap sharpening filter (eg. CAS).
+--
+-- -   @Gather4x1QCOM@ - produces an image gather by sampling 4 texels in a
+--     horizontal row. This is useful for kernels requiring vectorized
+--     loads, and can help with cache locality for linear access.
+--
+-- Each of the image processing instructions operate on the same sampled
+-- images that the @OpImage*Gather@ instructions support with the exception
+-- of cube-maps, depth comparison, @ConstOffsets@, and sparse residency
+-- check.
+--
+-- Implementations of this extension should support these operations
+-- natively at the HW instruction level, offering potential performance
+-- gains as well as ease of development.
+--
+-- This extension also adds some block matching improvements over
+-- @VK_QCOM_image_processing@ and @VK_QCOM_image_processing2@ by exposing
+-- more formats and wrap modes.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceImageProcessing3FeaturesQCOM'
+--
+-- == New Enum Constants
+--
+-- -   'QCOM_IMAGE_PROCESSING_3_EXTENSION_NAME'
+--
+-- -   'QCOM_IMAGE_PROCESSING_3_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_3_FEATURES_QCOM'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_image_processing VK_QCOM_image_processing>
+-- is supported:
+--
+-- -   Extending
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FormatFeatureFlagBits2':
+--
+--     -   'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_SXD_BIT_QCOM'
+--
+-- == New SPIR-V Capabilities
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-ImageGatherLinearQCOM ImageGatherLinearQCOM>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-ImageGatherExtendedModesQCOM ImageGatherExtendedModesQCOM>
+--
+-- == Version History
+--
+-- -   Revision 1, 2026-05-08 (Matthew Netsch)
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_QCOM_image_processing3 Vulkan Specification>.
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_QCOM_image_processing3  ( PhysicalDeviceImageProcessing3FeaturesQCOM(..)
+                                                    , QCOM_IMAGE_PROCESSING_3_SPEC_VERSION
+                                                    , pattern QCOM_IMAGE_PROCESSING_3_SPEC_VERSION
+                                                    , QCOM_IMAGE_PROCESSING_3_EXTENSION_NAME
+                                                    , pattern QCOM_IMAGE_PROCESSING_3_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_PROCESSING_3_FEATURES_QCOM))
+-- | VkPhysicalDeviceImageProcessing3FeaturesQCOM - Structure describing
+-- image processing features that can be supported by an implementation
+--
+-- = Members
+--
+-- This structure describes the following features:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceImageProcessing3FeaturesQCOM' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceImageProcessing3FeaturesQCOM', it /must/ add an instance
+-- of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_image_processing3 VK_QCOM_image_processing3>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceImageProcessing3FeaturesQCOM = PhysicalDeviceImageProcessing3FeaturesQCOM
+  { -- | #features-imageGatherLinear# @imageGatherLinear@ indicates that the
+    -- implementation supports shader modules that declare the
+    -- @ImageGatherLinearQCOM@ capability.
+    imageGatherLinear :: Bool
+  , -- | #features-imageGatherExtendedModes# @imageGatherExtendedModes@ indicates
+    -- that the implementation supports shader modules that declare the
+    -- @ImageGatherExtendedModesQCOM@ capability.
+    imageGatherExtendedModes :: Bool
+  , -- | #features-blockMatchExtendedClampToEdge# @blockMatchExtendedClampToEdge@
+    -- indicates that the implementation extends support for
+    -- 'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+    -- to both input images of all
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#textures-blockmatch block matching operations>.
+    blockMatchExtendedClampToEdge :: Bool
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceImageProcessing3FeaturesQCOM)
+#endif
+deriving instance Show PhysicalDeviceImageProcessing3FeaturesQCOM
+
+instance ToCStruct PhysicalDeviceImageProcessing3FeaturesQCOM where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceImageProcessing3FeaturesQCOM{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_3_FEATURES_QCOM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (imageGatherLinear))
+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (imageGatherExtendedModes))
+    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (blockMatchExtendedClampToEdge))
+    f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_3_FEATURES_QCOM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceImageProcessing3FeaturesQCOM where
+  peekCStruct p = do
+    imageGatherLinear <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    imageGatherExtendedModes <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
+    blockMatchExtendedClampToEdge <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))
+    pure $ PhysicalDeviceImageProcessing3FeaturesQCOM
+             (bool32ToBool imageGatherLinear)
+             (bool32ToBool imageGatherExtendedModes)
+             (bool32ToBool blockMatchExtendedClampToEdge)
+
+instance Storable PhysicalDeviceImageProcessing3FeaturesQCOM where
+  sizeOf ~_ = 32
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceImageProcessing3FeaturesQCOM where
+  zero = PhysicalDeviceImageProcessing3FeaturesQCOM
+           zero
+           zero
+           zero
+
+
+type QCOM_IMAGE_PROCESSING_3_SPEC_VERSION = 1
+
+-- No documentation found for TopLevel "VK_QCOM_IMAGE_PROCESSING_3_SPEC_VERSION"
+pattern QCOM_IMAGE_PROCESSING_3_SPEC_VERSION :: forall a . Integral a => a
+pattern QCOM_IMAGE_PROCESSING_3_SPEC_VERSION = 1
+
+
+type QCOM_IMAGE_PROCESSING_3_EXTENSION_NAME = "VK_QCOM_image_processing3"
+
+-- No documentation found for TopLevel "VK_QCOM_IMAGE_PROCESSING_3_EXTENSION_NAME"
+pattern QCOM_IMAGE_PROCESSING_3_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern QCOM_IMAGE_PROCESSING_3_EXTENSION_NAME = "VK_QCOM_image_processing3"
+
diff --git a/src/Vulkan/Extensions/VK_QCOM_image_processing3.hs-boot b/src/Vulkan/Extensions/VK_QCOM_image_processing3.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_QCOM_image_processing3.hs-boot
@@ -0,0 +1,167 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_QCOM_image_processing3 - device extension
+--
+-- = VK_QCOM_image_processing3
+--
+-- [__Name String__]
+--     @VK_QCOM_image_processing3@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     304
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Not ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
+--
+-- [__API Interactions__]
+--
+--     -   Interacts with VK_QCOM_image_processing
+--
+-- [__SPIR-V Dependencies__]
+--
+--     -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/QCOM/SPV_QCOM_image_processing3.html SPV_QCOM_image_processing3>
+--
+-- [__Contact__]
+--
+--     -   Matthew Netsch
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_QCOM_image_processing3] @mnetsch%0A*Here describe the issue or question you have about the VK_QCOM_image_processing3 extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_QCOM_image_processing3.adoc VK_QCOM_image_processing3>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2026-05-08
+--
+-- [__Interactions and External Dependencies__]
+--
+--     -   This extension provides API support for
+--         <https://github.com/KhronosGroup/GLSL/blob/main/extensions/qcom/GLSL_QCOM_image_processing3.txt GL_QCOM_image_processing3>
+--
+--     -   Interacts with @VK_QCOM_tile_shading@
+--
+--     -   Interacts with @VK_QCOM_image_processing@
+--
+--     -   Interacts with @VK_QCOM_image_processing2@
+--
+-- [__Contributors__]
+--
+--     -   Matthew Netsch, Qualcomm Technologies, Inc.
+--
+--     -   Jonathan Wicks, Qualcomm Technologies, Inc.
+--
+--     -   Liang Li, Qualcomm Technologies, Inc.
+--
+--     -   Wooyoung Kim, Qualcomm Technologies, Inc.
+--
+-- == Description
+--
+-- This extension introduces a new SPIR-V built-in function to support
+-- predefined image gather operations used in popular image processing
+-- algorithms such as super resolution upscaling and contrast-adaptive
+-- sharpening.
+--
+-- The @OpImageGatherQCOM@ instruction supports the following modes:
+--
+-- -   @GatherH2QCOM@ - produces an image gather with an extra horizontal
+--     offset
+--
+-- -   @GatherV2QCOM@ - produces an image gather with an extra vertical
+--     offset. Combined with @OpImageGather@ and @GatherH2QCOM@, this is
+--     useful for creating a 12-tap filter for upscaling.
+--
+-- -   @GatherDQCOM@ - produces an image gather by sampling the cardinal
+--     offsets. Combined with a point sample of the center texel, this is
+--     useful for creating a 5-tap sharpening filter (eg. CAS).
+--
+-- -   @Gather4x1QCOM@ - produces an image gather by sampling 4 texels in a
+--     horizontal row. This is useful for kernels requiring vectorized
+--     loads, and can help with cache locality for linear access.
+--
+-- Each of the image processing instructions operate on the same sampled
+-- images that the @OpImage*Gather@ instructions support with the exception
+-- of cube-maps, depth comparison, @ConstOffsets@, and sparse residency
+-- check.
+--
+-- Implementations of this extension should support these operations
+-- natively at the HW instruction level, offering potential performance
+-- gains as well as ease of development.
+--
+-- This extension also adds some block matching improvements over
+-- @VK_QCOM_image_processing@ and @VK_QCOM_image_processing2@ by exposing
+-- more formats and wrap modes.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceImageProcessing3FeaturesQCOM'
+--
+-- == New Enum Constants
+--
+-- -   'QCOM_IMAGE_PROCESSING_3_EXTENSION_NAME'
+--
+-- -   'QCOM_IMAGE_PROCESSING_3_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_3_FEATURES_QCOM'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_image_processing VK_QCOM_image_processing>
+-- is supported:
+--
+-- -   Extending
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FormatFeatureFlagBits2':
+--
+--     -   'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_SXD_BIT_QCOM'
+--
+-- == New SPIR-V Capabilities
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-ImageGatherLinearQCOM ImageGatherLinearQCOM>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-ImageGatherExtendedModesQCOM ImageGatherExtendedModesQCOM>
+--
+-- == Version History
+--
+-- -   Revision 1, 2026-05-08 (Matthew Netsch)
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_QCOM_image_processing3 Vulkan Specification>.
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_QCOM_image_processing3  (PhysicalDeviceImageProcessing3FeaturesQCOM) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data PhysicalDeviceImageProcessing3FeaturesQCOM
+
+instance ToCStruct PhysicalDeviceImageProcessing3FeaturesQCOM
+instance Show PhysicalDeviceImageProcessing3FeaturesQCOM
+
+instance FromCStruct PhysicalDeviceImageProcessing3FeaturesQCOM
+
diff --git a/src/Vulkan/Extensions/VK_QCOM_multiview_per_view_render_areas.hs b/src/Vulkan/Extensions/VK_QCOM_multiview_per_view_render_areas.hs
--- a/src/Vulkan/Extensions/VK_QCOM_multiview_per_view_render_areas.hs
+++ b/src/Vulkan/Extensions/VK_QCOM_multiview_per_view_render_areas.hs
@@ -21,7 +21,9 @@
 --     Not ratified
 --
 -- [__Extension and Version Dependencies__]
---     None
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
 --
 -- [__Contact__]
 --
@@ -62,7 +64,7 @@
 -- The extension enables a multiview render pass instance to define
 -- per-view render areas. For each view of a multiview render pass
 -- instance, only those pixels in the per-view render area are affected by
--- load, store and resolve operations.
+-- load, store, and resolve operations.
 --
 -- == New Structures
 --
@@ -154,7 +156,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_QCOM_multiview_per_view_render_areas Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_QCOM_multiview_per_view_render_areas Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -215,13 +217,22 @@
 -- 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. 'PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM' /can/
--- also be used in the @pNext@ chain of
--- 'Vulkan.Core10.Device.DeviceCreateInfo' to selectively enable these
--- features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM', it /must/ add
+-- an instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_multiview_per_view_render_areas VK_QCOM_multiview_per_view_render_areas>,
@@ -321,12 +332,12 @@
 -- -   #VUID-VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM-offset-07863#
 --     The sum of the @offset.x@ and @extent.width@ members of any element
 --     of @pPerViewRenderAreas@ /must/ be less than or equal to
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxFramebufferWidth maxFramebufferWidth>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxFramebufferWidth maxFramebufferWidth>
 --
 -- -   #VUID-VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM-offset-07864#
 --     The sum of the @offset.y@ and @extent.height@ members of any element
 --     of @pPerViewRenderAreas@ /must/ be less than or equal to
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxFramebufferHeight maxFramebufferHeight>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxFramebufferHeight maxFramebufferHeight>
 --
 -- -   #VUID-VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM-pNext-07865#
 --     If this structure is in the @pNext@ chain of
@@ -354,6 +365,14 @@
 --     If @perViewRenderAreaCount@ is not @0@, @pPerViewRenderAreas@ /must/
 --     be a valid pointer to an array of @perViewRenderAreaCount@
 --     'Vulkan.Core10.FundamentalTypes.Rect2D' structures
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.CommandBufferBuilding.RenderPassBeginInfo'
+--
+--     -   'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Extensions/VK_QCOM_multiview_per_view_render_areas.hs-boot b/src/Vulkan/Extensions/VK_QCOM_multiview_per_view_render_areas.hs-boot
--- a/src/Vulkan/Extensions/VK_QCOM_multiview_per_view_render_areas.hs-boot
+++ b/src/Vulkan/Extensions/VK_QCOM_multiview_per_view_render_areas.hs-boot
@@ -21,7 +21,9 @@
 --     Not ratified
 --
 -- [__Extension and Version Dependencies__]
---     None
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
 --
 -- [__Contact__]
 --
@@ -62,7 +64,7 @@
 -- The extension enables a multiview render pass instance to define
 -- per-view render areas. For each view of a multiview render pass
 -- instance, only those pixels in the per-view render area are affected by
--- load, store and resolve operations.
+-- load, store, and resolve operations.
 --
 -- == New Structures
 --
@@ -154,7 +156,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_QCOM_multiview_per_view_render_areas Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_QCOM_multiview_per_view_render_areas Vulkan Specification>.
 --
 -- This 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_multiview_per_view_viewports.hs b/src/Vulkan/Extensions/VK_QCOM_multiview_per_view_viewports.hs
--- a/src/Vulkan/Extensions/VK_QCOM_multiview_per_view_viewports.hs
+++ b/src/Vulkan/Extensions/VK_QCOM_multiview_per_view_viewports.hs
@@ -60,7 +60,7 @@
 --
 -- This extension adds a new way to control ViewportIndex with multiview.
 -- When the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-multiviewPerViewViewports multiviewPerViewViewports>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-multiviewPerViewViewports multiviewPerViewViewports>
 -- feature is enabled and if the last pre-rasterization shader entry
 -- point’s interface does not use the @ViewportIndex@ built-in decoration,
 -- then each view of a multiview render pass instance will use a viewport
@@ -87,7 +87,7 @@
 -- == Issues
 --
 -- 1) Is it possible to enable\/disable the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-multiviewPerViewViewports multiviewPerViewViewports>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-multiviewPerViewViewports multiviewPerViewViewports>
 -- feature for individual render pass instances?
 --
 -- __RESOLVED__: No, when the multiviewPerViewViewports feature is enabled
@@ -116,7 +116,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_QCOM_multiview_per_view_viewports Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_QCOM_multiview_per_view_viewports Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -165,12 +165,21 @@
 -- 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. 'PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM' /can/
--- also be used in the @pNext@ chain of
--- 'Vulkan.Core10.Device.DeviceCreateInfo' to selectively enable these
--- features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Extensions/VK_QCOM_multiview_per_view_viewports.hs-boot b/src/Vulkan/Extensions/VK_QCOM_multiview_per_view_viewports.hs-boot
--- a/src/Vulkan/Extensions/VK_QCOM_multiview_per_view_viewports.hs-boot
+++ b/src/Vulkan/Extensions/VK_QCOM_multiview_per_view_viewports.hs-boot
@@ -60,7 +60,7 @@
 --
 -- This extension adds a new way to control ViewportIndex with multiview.
 -- When the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-multiviewPerViewViewports multiviewPerViewViewports>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-multiviewPerViewViewports multiviewPerViewViewports>
 -- feature is enabled and if the last pre-rasterization shader entry
 -- point’s interface does not use the @ViewportIndex@ built-in decoration,
 -- then each view of a multiview render pass instance will use a viewport
@@ -87,7 +87,7 @@
 -- == Issues
 --
 -- 1) Is it possible to enable\/disable the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-multiviewPerViewViewports multiviewPerViewViewports>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-multiviewPerViewViewports multiviewPerViewViewports>
 -- feature for individual render pass instances?
 --
 -- __RESOLVED__: No, when the multiviewPerViewViewports feature is enabled
@@ -116,7 +116,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_QCOM_multiview_per_view_viewports Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_QCOM_multiview_per_view_viewports Vulkan Specification>.
 --
 -- This 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_queue_perf_hint.hs b/src/Vulkan/Extensions/VK_QCOM_queue_perf_hint.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_QCOM_queue_perf_hint.hs
@@ -0,0 +1,656 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_QCOM_queue_perf_hint - device extension
+--
+-- = VK_QCOM_queue_perf_hint
+--
+-- [__Name String__]
+--     @VK_QCOM_queue_perf_hint@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     303
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Not ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
+--
+-- [__Contact__]
+--
+--     -   Matthew Netsch
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_QCOM_queue_perf_hint] @mnetsch%0A*Here describe the issue or question you have about the VK_QCOM_queue_perf_hint extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_QCOM_queue_perf_hint.adoc VK_QCOM_queue_perf_hint>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2026-02-26
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Interactions and External Dependencies__]
+--
+--     -   Interacts with @VK_KHR_internally_synchronized_queues@
+--
+-- [__Contributors__]
+--
+--     -   Matthew Netsch, Qualcomm Technologies, Inc
+--
+-- == Description
+--
+-- This extension exposes power constraints to the application, allowing it
+-- to provide hints for influencing the device’s clock frequency.
+--
+-- These hints are 'Vulkan.Core10.Handles.Queue' state and are persistent
+-- across the life of the queue until the app updates or removes the
+-- constraint. The kernel combines the constraints across the active queues
+-- from all processes to determine the actual clock frequency levels.
+--
+-- == New Commands
+--
+-- -   'queueSetPerfHintQCOM'
+--
+-- == New Structures
+--
+-- -   'PerfHintInfoQCOM'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceQueuePerfHintFeaturesQCOM'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDeviceQueuePerfHintPropertiesQCOM'
+--
+-- == New Enums
+--
+-- -   'PerfHintTypeQCOM'
+--
+-- == New Enum Constants
+--
+-- -   'QCOM_QUEUE_PERF_HINT_EXTENSION_NAME'
+--
+-- -   'QCOM_QUEUE_PERF_HINT_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PERF_HINT_INFO_QCOM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_QUEUE_PERF_HINT_FEATURES_QCOM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_QUEUE_PERF_HINT_PROPERTIES_QCOM'
+--
+-- == Issues
+--
+-- None.
+--
+-- == Version History
+--
+-- -   Revision 1, 2026-02-26 (Matthew Netsch)
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_QCOM_queue_perf_hint Vulkan Specification>.
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_QCOM_queue_perf_hint  ( queueSetPerfHintQCOM
+                                                  , PerfHintInfoQCOM(..)
+                                                  , PhysicalDeviceQueuePerfHintFeaturesQCOM(..)
+                                                  , PhysicalDeviceQueuePerfHintPropertiesQCOM(..)
+                                                  , PerfHintTypeQCOM( PERF_HINT_TYPE_DEFAULT_QCOM
+                                                                    , PERF_HINT_TYPE_FREQUENCY_MIN_QCOM
+                                                                    , PERF_HINT_TYPE_FREQUENCY_MAX_QCOM
+                                                                    , PERF_HINT_TYPE_FREQUENCY_SCALED_QCOM
+                                                                    , ..
+                                                                    )
+                                                  , QCOM_QUEUE_PERF_HINT_SPEC_VERSION
+                                                  , pattern QCOM_QUEUE_PERF_HINT_SPEC_VERSION
+                                                  , QCOM_QUEUE_PERF_HINT_EXTENSION_NAME
+                                                  , pattern QCOM_QUEUE_PERF_HINT_EXTENSION_NAME
+                                                  ) where
+
+import Vulkan.Internal.Utils (enumReadPrec)
+import Vulkan.Internal.Utils (enumShowsPrec)
+import Vulkan.Internal.Utils (traceAroundEvent)
+import Control.Monad (unless)
+import Control.Monad.IO.Class (liftIO)
+import Foreign.Marshal.Alloc (allocaBytes)
+import GHC.Base (when)
+import GHC.IO (throwIO)
+import GHC.Ptr (nullFunPtr)
+import Foreign.Ptr (nullPtr)
+import Foreign.Ptr (plusPtr)
+import GHC.Show (showsPrec)
+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.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 (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 Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.Dynamic (DeviceCmds(pVkQueueSetPerfHintQCOM))
+import Vulkan.Core10.Handles (Queue)
+import Vulkan.Core10.Handles (Queue(..))
+import Vulkan.Core10.Handles (Queue(Queue))
+import Vulkan.Core10.Enums.QueueFlagBits (QueueFlags)
+import Vulkan.Core10.Handles (Queue_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_PERF_HINT_INFO_QCOM))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_QUEUE_PERF_HINT_FEATURES_QCOM))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_QUEUE_PERF_HINT_PROPERTIES_QCOM))
+import Vulkan.Core10.Enums.Result (Result(SUCCESS))
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkQueueSetPerfHintQCOM
+  :: FunPtr (Ptr Queue_T -> Ptr PerfHintInfoQCOM -> IO Result) -> Ptr Queue_T -> Ptr PerfHintInfoQCOM -> IO Result
+
+-- | vkQueueSetPerfHintQCOM - Set a performance hint on a queue
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkQueueSetPerfHintQCOM-queuePerfHint-12387# The
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-queuePerfHint queuePerfHint>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkQueueSetPerfHintQCOM-queue-12388# @queue@ /must/ support at
+--     least one of the queue types specified in
+--     'PhysicalDeviceQueuePerfHintPropertiesQCOM'::@supportedQueues@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkQueueSetPerfHintQCOM-queue-parameter# @queue@ /must/ be a
+--     valid 'Vulkan.Core10.Handles.Queue' handle
+--
+-- -   #VUID-vkQueueSetPerfHintQCOM-pPerfHintInfo-parameter#
+--     @pPerfHintInfo@ /must/ be a valid pointer to a valid
+--     'PerfHintInfoQCOM' structure
+--
+-- == Host Synchronization
+--
+-- -   Host access to @queue@ /must/ be externally synchronized if it was
+--     not created with
+--     'Vulkan.Core10.Enums.DeviceQueueCreateFlagBits.DEVICE_QUEUE_CREATE_INTERNALLY_SYNCHRONIZED_BIT_KHR'
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | -                                                                                                                          | -                                                                                                                      | -                                                                                                                           | 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_DEVICE_LOST'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_queue_perf_hint VK_QCOM_queue_perf_hint>,
+-- 'PerfHintInfoQCOM', 'Vulkan.Core10.Handles.Queue'
+queueSetPerfHintQCOM :: forall io
+                      . (MonadIO io)
+                     => -- | @queue@ is the queue to set the performance hint on.
+                        Queue
+                     -> -- | @pPerfHintInfo@ is a pointer to a 'PerfHintInfoQCOM' structure,
+                        -- describing the performance hint to set.
+                        PerfHintInfoQCOM
+                     -> io ()
+queueSetPerfHintQCOM queue perfHintInfo = liftIO . evalContT $ do
+  let vkQueueSetPerfHintQCOMPtr = pVkQueueSetPerfHintQCOM (case queue of Queue{deviceCmds} -> deviceCmds)
+  lift $ unless (vkQueueSetPerfHintQCOMPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkQueueSetPerfHintQCOM is null" Nothing Nothing
+  let vkQueueSetPerfHintQCOM' = mkVkQueueSetPerfHintQCOM vkQueueSetPerfHintQCOMPtr
+  pPerfHintInfo <- ContT $ withCStruct (perfHintInfo)
+  r <- lift $ traceAroundEvent "vkQueueSetPerfHintQCOM" (vkQueueSetPerfHintQCOM'
+                                                           (queueHandle (queue))
+                                                           pPerfHintInfo)
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+
+
+-- | VkPerfHintInfoQCOM - Structure specifying the parameters used for
+-- setting a performance hint on a queue
+--
+-- = Description
+--
+-- The device has two global frequency constraints, @fmin@ and @fmax@, that
+-- can be influenced by the 'PERF_HINT_TYPE_FREQUENCY_MIN_QCOM',
+-- 'PERF_HINT_TYPE_FREQUENCY_MAX_QCOM', and
+-- 'PERF_HINT_TYPE_FREQUENCY_SCALED_QCOM' performance hints. These
+-- constraints determine the range of clock frequencies that the platform
+-- performance algorithms /may/ select from. If no constraints are set,
+-- @fmin@ and @fmax@ are set to the minimum and maximum frequencies the
+-- device can support, @Fmin@ and @Fmax@ respectively.
+--
+-- The @fmin@ constraint applied by 'PERF_HINT_TYPE_FREQUENCY_SCALED_QCOM'
+-- is calculated with the following:
+--
+-- -   \(f_{min} = \lfloor\frac{scale}{100} \times
+--     F_{max}\rfloor\)
+--
+-- The implementation rounds @fmin@ down to the next available lower
+-- frequency the device supports, clamped to @Fmin@.
+--
+-- The global frequency constraints are determined by combining the
+-- performance hints from all of the device’s active queues of all
+-- processes on the host. Performance hints that influence device frequency
+-- are ranked, where a higher ranked hint supersedes all lower ranked
+-- hints. These are listed in order of highest rank to lowest:
+--
+-- -   'PERF_HINT_TYPE_FREQUENCY_MAX_QCOM'
+--
+-- -   'PERF_HINT_TYPE_FREQUENCY_SCALED_QCOM' and @scale@ equal to @100@
+--
+-- -   'PERF_HINT_TYPE_FREQUENCY_SCALED_QCOM' and @scale@ equal to @99@
+--
+-- -   'PERF_HINT_TYPE_FREQUENCY_SCALED_QCOM' and @scale@ equal to @98@
+--
+-- -   …​
+--
+-- -   'PERF_HINT_TYPE_FREQUENCY_SCALED_QCOM' and @scale@ equal to @0@
+--
+-- -   'PERF_HINT_TYPE_DEFAULT_QCOM'
+--
+-- -   'PERF_HINT_TYPE_FREQUENCY_MIN_QCOM'
+--
+-- This means that 'PERF_HINT_TYPE_FREQUENCY_MIN_QCOM' only takes effect if
+-- all of the device’s other active queues running on the host also have
+-- the 'PERF_HINT_TYPE_FREQUENCY_MIN_QCOM' hint applied.
+--
+-- If any queue is active that never had a performance hint applied and
+-- therefore is in the 'PERF_HINT_TYPE_DEFAULT_QCOM' state, it will
+-- supersede in setting the constraints over
+-- 'PERF_HINT_TYPE_FREQUENCY_MIN_QCOM'. This is necessary to avoid
+-- negatively impacting performance for normal queues while a low power
+-- queue is active.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkPerfHintInfoQCOM-type-12389# If @type@ is not
+--     'PERF_HINT_TYPE_FREQUENCY_SCALED_QCOM', @scale@ /must/ equal @0@
+--
+-- -   #VUID-VkPerfHintInfoQCOM-scale-12390# @scale@ /must/ be less than or
+--     equal to @100@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkPerfHintInfoQCOM-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PERF_HINT_INFO_QCOM'
+--
+-- -   #VUID-VkPerfHintInfoQCOM-pNext-pNext# @pNext@ /must/ be @NULL@
+--
+-- -   #VUID-VkPerfHintInfoQCOM-type-parameter# @type@ /must/ be a valid
+--     'PerfHintTypeQCOM' value
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_queue_perf_hint VK_QCOM_queue_perf_hint>,
+-- 'PerfHintTypeQCOM', 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'queueSetPerfHintQCOM'
+data PerfHintInfoQCOM = PerfHintInfoQCOM
+  { -- | @type@ is a 'PerfHintTypeQCOM' value indicating the type of performance
+    -- hint to apply.
+    type' :: PerfHintTypeQCOM
+  , -- | @scale@ is a normalized fixed-point scale factor.
+    scale :: Word32
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PerfHintInfoQCOM)
+#endif
+deriving instance Show PerfHintInfoQCOM
+
+instance ToCStruct PerfHintInfoQCOM where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PerfHintInfoQCOM{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PERF_HINT_INFO_QCOM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr PerfHintTypeQCOM)) (type')
+    poke ((p `plusPtr` 20 :: Ptr Word32)) (scale)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PERF_HINT_INFO_QCOM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr PerfHintTypeQCOM)) (zero)
+    poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct PerfHintInfoQCOM where
+  peekCStruct p = do
+    type' <- peek @PerfHintTypeQCOM ((p `plusPtr` 16 :: Ptr PerfHintTypeQCOM))
+    scale <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
+    pure $ PerfHintInfoQCOM
+             type' scale
+
+instance Storable PerfHintInfoQCOM where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PerfHintInfoQCOM where
+  zero = PerfHintInfoQCOM
+           zero
+           zero
+
+
+-- | VkPhysicalDeviceQueuePerfHintFeaturesQCOM - Structure describing queue
+-- perf hint features that can be supported by an implementation
+--
+-- = Members
+--
+-- This structure describes the following features:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceQueuePerfHintFeaturesQCOM' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceQueuePerfHintFeaturesQCOM', it /must/ add an instance of
+-- the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_queue_perf_hint VK_QCOM_queue_perf_hint>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceQueuePerfHintFeaturesQCOM = PhysicalDeviceQueuePerfHintFeaturesQCOM
+  { -- | #features-queuePerfHint# @queuePerfHint@ specifies whether the
+    -- implementation supports setting
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#devsandqueues-perfhint queue perf hints>.
+    queuePerfHint :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceQueuePerfHintFeaturesQCOM)
+#endif
+deriving instance Show PhysicalDeviceQueuePerfHintFeaturesQCOM
+
+instance ToCStruct PhysicalDeviceQueuePerfHintFeaturesQCOM where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceQueuePerfHintFeaturesQCOM{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_QUEUE_PERF_HINT_FEATURES_QCOM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (queuePerfHint))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_QUEUE_PERF_HINT_FEATURES_QCOM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceQueuePerfHintFeaturesQCOM where
+  peekCStruct p = do
+    queuePerfHint <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDeviceQueuePerfHintFeaturesQCOM
+             (bool32ToBool queuePerfHint)
+
+instance Storable PhysicalDeviceQueuePerfHintFeaturesQCOM where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceQueuePerfHintFeaturesQCOM where
+  zero = PhysicalDeviceQueuePerfHintFeaturesQCOM
+           zero
+
+
+-- | VkPhysicalDeviceQueuePerfHintPropertiesQCOM - Structure describing queue
+-- perf hint properties for a physical device
+--
+-- = Members
+--
+-- The members of the 'PhysicalDeviceQueuePerfHintPropertiesQCOM' structure
+-- describe the following:
+--
+-- = Description
+--
+-- If the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-queuePerfHint queuePerfHint>
+-- feature is supported by @physicalDevice@, @supportedQueues@ /must/
+-- return at least one supported queue type.
+--
+-- If the 'PhysicalDeviceQueuePerfHintPropertiesQCOM' 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.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_queue_perf_hint VK_QCOM_queue_perf_hint>,
+-- 'Vulkan.Core10.Enums.QueueFlagBits.QueueFlags',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceQueuePerfHintPropertiesQCOM = PhysicalDeviceQueuePerfHintPropertiesQCOM
+  { -- | @supportedQueues@ is a bitmask of
+    -- 'Vulkan.Core10.Enums.QueueFlagBits.QueueFlagBits' indicating the types
+    -- of queues on which
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#devsandqueues-perfhint setting perf hints>
+    -- are supported.
+    supportedQueues :: QueueFlags }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceQueuePerfHintPropertiesQCOM)
+#endif
+deriving instance Show PhysicalDeviceQueuePerfHintPropertiesQCOM
+
+instance ToCStruct PhysicalDeviceQueuePerfHintPropertiesQCOM where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceQueuePerfHintPropertiesQCOM{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_QUEUE_PERF_HINT_PROPERTIES_QCOM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr QueueFlags)) (supportedQueues)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_QUEUE_PERF_HINT_PROPERTIES_QCOM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr QueueFlags)) (zero)
+    f
+
+instance FromCStruct PhysicalDeviceQueuePerfHintPropertiesQCOM where
+  peekCStruct p = do
+    supportedQueues <- peek @QueueFlags ((p `plusPtr` 16 :: Ptr QueueFlags))
+    pure $ PhysicalDeviceQueuePerfHintPropertiesQCOM
+             supportedQueues
+
+instance Storable PhysicalDeviceQueuePerfHintPropertiesQCOM where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceQueuePerfHintPropertiesQCOM where
+  zero = PhysicalDeviceQueuePerfHintPropertiesQCOM
+           zero
+
+
+-- | VkPerfHintTypeQCOM - Specifies the performance hint type
+--
+-- = Description
+--
+-- -   'PERF_HINT_TYPE_DEFAULT_QCOM' resets the performance hint state back
+--     to default for the queue.
+--
+-- -   'PERF_HINT_TYPE_FREQUENCY_MIN_QCOM' specifies the queue /should/
+--     prioritize power and sets the frequency constraints @fmin@ and
+--     @fmax@ to @Fmin@.
+--
+-- -   'PERF_HINT_TYPE_FREQUENCY_MAX_QCOM' specifies the queue /should/
+--     prioritize performance and sets the frequency constraints @fmin@ and
+--     @fmax@ to @Fmax@.
+--
+-- -   'PERF_HINT_TYPE_FREQUENCY_SCALED_QCOM' specifies the queue /should/
+--     be balanced between performance and power and sets the frequency
+--     constraint @fmin@ by applying a scale factor to @Fmax@. No
+--     constraint is applied to @fmax@.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_queue_perf_hint VK_QCOM_queue_perf_hint>,
+-- 'PerfHintInfoQCOM'
+newtype PerfHintTypeQCOM = PerfHintTypeQCOM Int32
+  deriving newtype (Eq, Ord, Storable, Zero)
+
+-- No documentation found for Nested "VkPerfHintTypeQCOM" "VK_PERF_HINT_TYPE_DEFAULT_QCOM"
+pattern PERF_HINT_TYPE_DEFAULT_QCOM = PerfHintTypeQCOM 0
+
+-- No documentation found for Nested "VkPerfHintTypeQCOM" "VK_PERF_HINT_TYPE_FREQUENCY_MIN_QCOM"
+pattern PERF_HINT_TYPE_FREQUENCY_MIN_QCOM = PerfHintTypeQCOM 1
+
+-- No documentation found for Nested "VkPerfHintTypeQCOM" "VK_PERF_HINT_TYPE_FREQUENCY_MAX_QCOM"
+pattern PERF_HINT_TYPE_FREQUENCY_MAX_QCOM = PerfHintTypeQCOM 2
+
+-- No documentation found for Nested "VkPerfHintTypeQCOM" "VK_PERF_HINT_TYPE_FREQUENCY_SCALED_QCOM"
+pattern PERF_HINT_TYPE_FREQUENCY_SCALED_QCOM = PerfHintTypeQCOM 3
+
+{-# COMPLETE
+  PERF_HINT_TYPE_DEFAULT_QCOM
+  , PERF_HINT_TYPE_FREQUENCY_MIN_QCOM
+  , PERF_HINT_TYPE_FREQUENCY_MAX_QCOM
+  , PERF_HINT_TYPE_FREQUENCY_SCALED_QCOM ::
+    PerfHintTypeQCOM
+  #-}
+
+conNamePerfHintTypeQCOM :: String
+conNamePerfHintTypeQCOM = "PerfHintTypeQCOM"
+
+enumPrefixPerfHintTypeQCOM :: String
+enumPrefixPerfHintTypeQCOM = "PERF_HINT_TYPE_"
+
+showTablePerfHintTypeQCOM :: [(PerfHintTypeQCOM, String)]
+showTablePerfHintTypeQCOM =
+  [ (PERF_HINT_TYPE_DEFAULT_QCOM, "DEFAULT_QCOM")
+  ,
+    ( PERF_HINT_TYPE_FREQUENCY_MIN_QCOM
+    , "FREQUENCY_MIN_QCOM"
+    )
+  ,
+    ( PERF_HINT_TYPE_FREQUENCY_MAX_QCOM
+    , "FREQUENCY_MAX_QCOM"
+    )
+  ,
+    ( PERF_HINT_TYPE_FREQUENCY_SCALED_QCOM
+    , "FREQUENCY_SCALED_QCOM"
+    )
+  ]
+
+instance Show PerfHintTypeQCOM where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixPerfHintTypeQCOM
+      showTablePerfHintTypeQCOM
+      conNamePerfHintTypeQCOM
+      (\(PerfHintTypeQCOM x) -> x)
+      (showsPrec 11)
+
+instance Read PerfHintTypeQCOM where
+  readPrec =
+    enumReadPrec
+      enumPrefixPerfHintTypeQCOM
+      showTablePerfHintTypeQCOM
+      conNamePerfHintTypeQCOM
+      PerfHintTypeQCOM
+
+type QCOM_QUEUE_PERF_HINT_SPEC_VERSION = 1
+
+-- No documentation found for TopLevel "VK_QCOM_QUEUE_PERF_HINT_SPEC_VERSION"
+pattern QCOM_QUEUE_PERF_HINT_SPEC_VERSION :: forall a . Integral a => a
+pattern QCOM_QUEUE_PERF_HINT_SPEC_VERSION = 1
+
+
+type QCOM_QUEUE_PERF_HINT_EXTENSION_NAME = "VK_QCOM_queue_perf_hint"
+
+-- No documentation found for TopLevel "VK_QCOM_QUEUE_PERF_HINT_EXTENSION_NAME"
+pattern QCOM_QUEUE_PERF_HINT_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern QCOM_QUEUE_PERF_HINT_EXTENSION_NAME = "VK_QCOM_queue_perf_hint"
+
diff --git a/src/Vulkan/Extensions/VK_QCOM_queue_perf_hint.hs-boot b/src/Vulkan/Extensions/VK_QCOM_queue_perf_hint.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_QCOM_queue_perf_hint.hs-boot
@@ -0,0 +1,149 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_QCOM_queue_perf_hint - device extension
+--
+-- = VK_QCOM_queue_perf_hint
+--
+-- [__Name String__]
+--     @VK_QCOM_queue_perf_hint@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     303
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Not ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
+--
+-- [__Contact__]
+--
+--     -   Matthew Netsch
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_QCOM_queue_perf_hint] @mnetsch%0A*Here describe the issue or question you have about the VK_QCOM_queue_perf_hint extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_QCOM_queue_perf_hint.adoc VK_QCOM_queue_perf_hint>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2026-02-26
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Interactions and External Dependencies__]
+--
+--     -   Interacts with @VK_KHR_internally_synchronized_queues@
+--
+-- [__Contributors__]
+--
+--     -   Matthew Netsch, Qualcomm Technologies, Inc
+--
+-- == Description
+--
+-- This extension exposes power constraints to the application, allowing it
+-- to provide hints for influencing the device’s clock frequency.
+--
+-- These hints are 'Vulkan.Core10.Handles.Queue' state and are persistent
+-- across the life of the queue until the app updates or removes the
+-- constraint. The kernel combines the constraints across the active queues
+-- from all processes to determine the actual clock frequency levels.
+--
+-- == New Commands
+--
+-- -   'queueSetPerfHintQCOM'
+--
+-- == New Structures
+--
+-- -   'PerfHintInfoQCOM'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceQueuePerfHintFeaturesQCOM'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDeviceQueuePerfHintPropertiesQCOM'
+--
+-- == New Enums
+--
+-- -   'PerfHintTypeQCOM'
+--
+-- == New Enum Constants
+--
+-- -   'QCOM_QUEUE_PERF_HINT_EXTENSION_NAME'
+--
+-- -   'QCOM_QUEUE_PERF_HINT_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PERF_HINT_INFO_QCOM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_QUEUE_PERF_HINT_FEATURES_QCOM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_QUEUE_PERF_HINT_PROPERTIES_QCOM'
+--
+-- == Issues
+--
+-- None.
+--
+-- == Version History
+--
+-- -   Revision 1, 2026-02-26 (Matthew Netsch)
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_QCOM_queue_perf_hint Vulkan Specification>.
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_QCOM_queue_perf_hint  ( PerfHintInfoQCOM
+                                                  , PhysicalDeviceQueuePerfHintFeaturesQCOM
+                                                  , PhysicalDeviceQueuePerfHintPropertiesQCOM
+                                                  ) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data PerfHintInfoQCOM
+
+instance ToCStruct PerfHintInfoQCOM
+instance Show PerfHintInfoQCOM
+
+instance FromCStruct PerfHintInfoQCOM
+
+
+data PhysicalDeviceQueuePerfHintFeaturesQCOM
+
+instance ToCStruct PhysicalDeviceQueuePerfHintFeaturesQCOM
+instance Show PhysicalDeviceQueuePerfHintFeaturesQCOM
+
+instance FromCStruct PhysicalDeviceQueuePerfHintFeaturesQCOM
+
+
+data PhysicalDeviceQueuePerfHintPropertiesQCOM
+
+instance ToCStruct PhysicalDeviceQueuePerfHintPropertiesQCOM
+instance Show PhysicalDeviceQueuePerfHintPropertiesQCOM
+
+instance FromCStruct PhysicalDeviceQueuePerfHintPropertiesQCOM
+
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
@@ -23,6 +23,12 @@
 -- [__Extension and Version Dependencies__]
 --     None
 --
+-- [__Deprecation State__]
+--
+--     -   /Promoted/ to
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_custom_resolve VK_EXT_custom_resolve>
+--         extension
+--
 -- [__Contact__]
 --
 --     -   Matthew Netsch
@@ -76,9 +82,9 @@
 -- -   Extending
 --     'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SubpassDescriptionFlagBits':
 --
---     -   'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM'
+--     -   'SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM'
 --
---     -   'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM'
+--     -   'SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM'
 --
 -- == Issues
 --
@@ -92,7 +98,7 @@
 -- VK_KHR_create_renderpass2.
 --
 -- 2) Should the VK_SAMPLE_COUNT_1_BIT be required for each
--- pColorAttachment and the DepthStencilAttachent?
+-- pColorAttachment and the DepthStencilAttachment?
 --
 -- __RESOLVED__ No.
 --
@@ -107,9 +113,7 @@
 -- To be more specific, it should be the last subpass in a subpass
 -- dependency chain.
 --
--- 4) Do we need the
--- 'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM'
--- bit?
+-- 4) Do we need the 'SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM' bit?
 --
 -- __RESOLVED__ Yes.
 --
@@ -152,17 +156,30 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_QCOM_render_pass_shader_resolve Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
-module Vulkan.Extensions.VK_QCOM_render_pass_shader_resolve  ( QCOM_RENDER_PASS_SHADER_RESOLVE_SPEC_VERSION
+module Vulkan.Extensions.VK_QCOM_render_pass_shader_resolve  ( pattern SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM
+                                                             , pattern SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM
+                                                             , QCOM_RENDER_PASS_SHADER_RESOLVE_SPEC_VERSION
                                                              , pattern QCOM_RENDER_PASS_SHADER_RESOLVE_SPEC_VERSION
                                                              , QCOM_RENDER_PASS_SHADER_RESOLVE_EXTENSION_NAME
                                                              , pattern QCOM_RENDER_PASS_SHADER_RESOLVE_EXTENSION_NAME
                                                              ) where
 
 import Data.String (IsString)
+import Vulkan.Core10.Enums.SubpassDescriptionFlagBits (SubpassDescriptionFlags)
+import Vulkan.Core10.Enums.SubpassDescriptionFlagBits (SubpassDescriptionFlagBits(SUBPASS_DESCRIPTION_CUSTOM_RESOLVE_BIT_EXT))
+import Vulkan.Core10.Enums.SubpassDescriptionFlagBits (SubpassDescriptionFlags)
+import Vulkan.Core10.Enums.SubpassDescriptionFlagBits (SubpassDescriptionFlagBits(SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_EXT))
+-- No documentation found for TopLevel "VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM"
+pattern SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM = SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_EXT
+
+
+-- No documentation found for TopLevel "VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM"
+pattern SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM = SUBPASS_DESCRIPTION_CUSTOM_RESOLVE_BIT_EXT
+
 
 type QCOM_RENDER_PASS_SHADER_RESOLVE_SPEC_VERSION = 4
 
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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_QCOM_render_pass_store_ops Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
diff --git a/src/Vulkan/Extensions/VK_QCOM_render_pass_transform.hs b/src/Vulkan/Extensions/VK_QCOM_render_pass_transform.hs
--- a/src/Vulkan/Extensions/VK_QCOM_render_pass_transform.hs
+++ b/src/Vulkan/Extensions/VK_QCOM_render_pass_transform.hs
@@ -15,7 +15,7 @@
 --     283
 --
 -- [__Revision__]
---     4
+--     5
 --
 -- [__Ratification Status__]
 --     Not ratified
@@ -31,7 +31,7 @@
 -- == Other Extension Metadata
 --
 -- [__Last Modified Date__]
---     2023-12-13
+--     2025-06-30
 --
 -- [__Interactions and External Dependencies__]
 --
@@ -55,11 +55,13 @@
 --
 --     -   Arpit Agarwal, Qualcomm Technologies, Inc.
 --
+--     -   Žiga Markuš, LunarG, Inc.
+--
 -- == Description
 --
 -- This extension provides a mechanism for applications to enable driver
 -- support for
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#vertexpostproc-renderpass-transform render pass transform>.
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -81,7 +83,7 @@
 -- and “pre-rotate” the rendering content to match the device’s current
 -- orientation. The burden is more than adjusting the Model View Projection
 -- (MVP) matrix in the vertex shader to account for rotation and aspect
--- ratio. The coordinate systems of scissors, viewports, derivatives and
+-- ratio. The coordinate systems of scissors, viewports, derivatives, and
 -- several shader built-ins may need to be adapted to produce the correct
 -- result.
 --
@@ -162,7 +164,7 @@
 --
 -- 1) Some early Adreno drivers (October 2019 through March 2020)
 -- advertised support for this extension but expected VK_STRUCTURE_TYPE
--- values different from those in the vukan headers. To cover all Adreno
+-- values different from those in the vulkan headers. To cover all Adreno
 -- devices on the market, applications need to detect the driver version
 -- and use the appropriate VK_STRUCTURE_TYPE values from the table below.
 --
@@ -235,7 +237,7 @@
 -- coordinate system.
 --
 -- The
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate set of supported shading rates>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -258,6 +260,10 @@
 --
 --     -   Relax dependencies on VK_KHR_surface and VK_KHR_swapchain
 --
+-- -   Revision 5, 2025-06-30 (Matthew Netsch)
+--
+--     -   Fix pNext const on info structs
+--
 -- == See Also
 --
 -- No cross-references are available
@@ -265,7 +271,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_QCOM_render_pass_transform Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -327,6 +333,12 @@
 --     be
 --     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM'
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.CommandBufferBuilding.RenderPassBeginInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_render_pass_transform VK_QCOM_render_pass_transform>,
@@ -388,8 +400,12 @@
 -- @renderArea@ for command buffer /must/ be identical to the @transform@
 -- and @renderArea@ of the render pass instance.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_render_pass_transform VK_QCOM_render_pass_transform>,
@@ -454,11 +470,11 @@
            zero
 
 
-type QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION = 4
+type QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION = 5
 
 -- No documentation found for TopLevel "VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION"
 pattern QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION :: forall a . Integral a => a
-pattern QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION = 4
+pattern QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION = 5
 
 
 type QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME = "VK_QCOM_render_pass_transform"
diff --git a/src/Vulkan/Extensions/VK_QCOM_render_pass_transform.hs-boot b/src/Vulkan/Extensions/VK_QCOM_render_pass_transform.hs-boot
--- a/src/Vulkan/Extensions/VK_QCOM_render_pass_transform.hs-boot
+++ b/src/Vulkan/Extensions/VK_QCOM_render_pass_transform.hs-boot
@@ -15,7 +15,7 @@
 --     283
 --
 -- [__Revision__]
---     4
+--     5
 --
 -- [__Ratification Status__]
 --     Not ratified
@@ -31,7 +31,7 @@
 -- == Other Extension Metadata
 --
 -- [__Last Modified Date__]
---     2023-12-13
+--     2025-06-30
 --
 -- [__Interactions and External Dependencies__]
 --
@@ -55,11 +55,13 @@
 --
 --     -   Arpit Agarwal, Qualcomm Technologies, Inc.
 --
+--     -   Žiga Markuš, LunarG, Inc.
+--
 -- == Description
 --
 -- This extension provides a mechanism for applications to enable driver
 -- support for
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#vertexpostproc-renderpass-transform render pass transform>.
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -81,7 +83,7 @@
 -- and “pre-rotate” the rendering content to match the device’s current
 -- orientation. The burden is more than adjusting the Model View Projection
 -- (MVP) matrix in the vertex shader to account for rotation and aspect
--- ratio. The coordinate systems of scissors, viewports, derivatives and
+-- ratio. The coordinate systems of scissors, viewports, derivatives, and
 -- several shader built-ins may need to be adapted to produce the correct
 -- result.
 --
@@ -162,7 +164,7 @@
 --
 -- 1) Some early Adreno drivers (October 2019 through March 2020)
 -- advertised support for this extension but expected VK_STRUCTURE_TYPE
--- values different from those in the vukan headers. To cover all Adreno
+-- values different from those in the vulkan headers. To cover all Adreno
 -- devices on the market, applications need to detect the driver version
 -- and use the appropriate VK_STRUCTURE_TYPE values from the table below.
 --
@@ -235,7 +237,7 @@
 -- coordinate system.
 --
 -- The
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate set of supported shading rates>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -258,6 +260,10 @@
 --
 --     -   Relax dependencies on VK_KHR_surface and VK_KHR_swapchain
 --
+-- -   Revision 5, 2025-06-30 (Matthew Netsch)
+--
+--     -   Fix pNext const on info structs
+--
 -- == See Also
 --
 -- No cross-references are available
@@ -265,7 +271,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_QCOM_render_pass_transform Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -58,9 +58,10 @@
 -- extension may be used in combination with VK_QCOM_render_pass_transform
 -- which adds rotated render passes.
 --
--- This extension adds an extension structure to the following commands:
--- vkCmdBlitImage2KHR, vkCmdCopyImageToBuffer2KHR and
--- vkCmdCopyBufferToImage2KHR
+-- This extension adds an extension structure to the commands
+-- 'Vulkan.Extensions.VK_KHR_copy_commands2.cmdBlitImage2KHR',
+-- 'Vulkan.Extensions.VK_KHR_copy_commands2.cmdCopyImageToBuffer2KHR', and
+-- 'Vulkan.Extensions.VK_KHR_copy_commands2.cmdCopyBufferToImage2KHR'
 --
 -- == Issues
 --
@@ -69,7 +70,7 @@
 -- @pNext@ chain should reflect the name of the base structure they
 -- extend.”, but in this case a single extension structure is used to
 -- extend three base structures (vkCmdBlitImage2KHR,
--- vkCmdCopyImageToBuffer2KHR and vkCmdCopyBufferToImage2KHR). Creating
+-- vkCmdCopyImageToBuffer2KHR, and vkCmdCopyBufferToImage2KHR). Creating
 -- three identical structures with unique names seemed undesirable.
 --
 -- __RESOLVED__: Deviate from the style guide for extension structure
@@ -94,7 +95,8 @@
 --
 -- -   Extending
 --     'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.BufferImageCopy2',
---     'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.ImageBlit2':
+--     'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.ImageBlit2',
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceMemoryImageCopyKHR':
 --
 --     -   'CopyCommandTransformInfoQCOM'
 --
@@ -123,7 +125,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_QCOM_rotated_copy_commands Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -174,17 +176,25 @@
 -- 'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_IDENTITY_BIT_KHR'.
 --
 -- Specifying a transform for a copy between an image and a buffer
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#copies-buffers-images-rotation-addressing rotates the region accessed in the image around the offset>.
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#copies-buffers-images-rotation-addressing rotates the region accessed in the image around the offset>.
 -- Specifying a transform for a blit performs a similar transform as
 -- described in
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#copies-images-scaling-rotation Image Blits with Scaling and Rotation>.
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#copies-images-scaling-rotation Image Blits with Scaling and Rotation>.
 --
 -- Rotations other than
 -- 'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_IDENTITY_BIT_KHR'
 -- /can/ only be specified for single-plane 2D images with a 1x1x1
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#formats-compatibility-classes texel block extent>.
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-compatibility-classes texel block extent>.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.BufferImageCopy2'
+--
+--     -   'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceMemoryImageCopyKHR'
+--
+--     -   'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.ImageBlit2'
 --
 -- = See Also
 --
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
@@ -58,9 +58,10 @@
 -- extension may be used in combination with VK_QCOM_render_pass_transform
 -- which adds rotated render passes.
 --
--- This extension adds an extension structure to the following commands:
--- vkCmdBlitImage2KHR, vkCmdCopyImageToBuffer2KHR and
--- vkCmdCopyBufferToImage2KHR
+-- This extension adds an extension structure to the commands
+-- 'Vulkan.Extensions.VK_KHR_copy_commands2.cmdBlitImage2KHR',
+-- 'Vulkan.Extensions.VK_KHR_copy_commands2.cmdCopyImageToBuffer2KHR', and
+-- 'Vulkan.Extensions.VK_KHR_copy_commands2.cmdCopyBufferToImage2KHR'
 --
 -- == Issues
 --
@@ -69,7 +70,7 @@
 -- @pNext@ chain should reflect the name of the base structure they
 -- extend.”, but in this case a single extension structure is used to
 -- extend three base structures (vkCmdBlitImage2KHR,
--- vkCmdCopyImageToBuffer2KHR and vkCmdCopyBufferToImage2KHR). Creating
+-- vkCmdCopyImageToBuffer2KHR, and vkCmdCopyBufferToImage2KHR). Creating
 -- three identical structures with unique names seemed undesirable.
 --
 -- __RESOLVED__: Deviate from the style guide for extension structure
@@ -94,7 +95,8 @@
 --
 -- -   Extending
 --     'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.BufferImageCopy2',
---     'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.ImageBlit2':
+--     'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.ImageBlit2',
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceMemoryImageCopyKHR':
 --
 --     -   'CopyCommandTransformInfoQCOM'
 --
@@ -123,7 +125,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_QCOM_rotated_copy_commands Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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_shader_multiple_wait_queues.hs b/src/Vulkan/Extensions/VK_QCOM_shader_multiple_wait_queues.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_QCOM_shader_multiple_wait_queues.hs
@@ -0,0 +1,299 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_QCOM_shader_multiple_wait_queues - device extension
+--
+-- = VK_QCOM_shader_multiple_wait_queues
+--
+-- [__Name String__]
+--     @VK_QCOM_shader_multiple_wait_queues@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     305
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Not ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
+--
+-- [__SPIR-V Dependencies__]
+--
+--     -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/QCOM/SPV_QCOM_multiple_wait_queues.html SPV_QCOM_multiple_wait_queues>
+--
+-- [__Contact__]
+--
+--     -   Matthew Netsch
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_QCOM_shader_multiple_wait_queues] @mnetsch%0A*Here describe the issue or question you have about the VK_QCOM_shader_multiple_wait_queues extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_QCOM_shader_multiple_wait_queues.adoc VK_QCOM_shader_multiple_wait_queues>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2026-05-04
+--
+-- [__Interactions and External Dependencies__]
+--
+--     -   This extension provides API support for
+--         <https://github.com/KhronosGroup/GLSL/blob/main/extensions/qcom/GLSL_QCOM_multiple_wait_queues.txt GLSL_QCOM_multiple_wait_queues>
+--
+-- [__Contributors__]
+--
+--     -   Matthew Netsch, Qualcomm Technologies, Inc.
+--
+--     -   Elina Kamenetskaya, Qualcomm Technologies, Inc.
+--
+--     -   Wooyoung Kim, Qualcomm Technologies, Inc.
+--
+-- == Description
+--
+-- This extension adds a new loop control hint to the SPIR-V execution
+-- environment, instructing the compiler that it should use multiple wait
+-- queues to optimize a loop.
+--
+-- This can improve performance for loops that have high latency
+-- instructions such as for @VK_KHR_cooperative_matrix@ operations, by
+-- allowing the compiler to issue instructions for future iterations while
+-- waiting for the current iteration to complete.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceShaderMultipleWaitQueuesFeaturesQCOM'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDeviceShaderMultipleWaitQueuesPropertiesQCOM'
+--
+-- == New Enum Constants
+--
+-- -   'QCOM_SHADER_MULTIPLE_WAIT_QUEUES_EXTENSION_NAME'
+--
+-- -   'QCOM_SHADER_MULTIPLE_WAIT_QUEUES_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MULTIPLE_WAIT_QUEUES_FEATURES_QCOM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MULTIPLE_WAIT_QUEUES_PROPERTIES_QCOM'
+--
+-- == Version History
+--
+-- -   Revision 1, 2026-05-04 (Matthew Netsch)
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_QCOM_shader_multiple_wait_queues Vulkan Specification>.
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_QCOM_shader_multiple_wait_queues  ( PhysicalDeviceShaderMultipleWaitQueuesFeaturesQCOM(..)
+                                                              , PhysicalDeviceShaderMultipleWaitQueuesPropertiesQCOM(..)
+                                                              , QCOM_SHADER_MULTIPLE_WAIT_QUEUES_SPEC_VERSION
+                                                              , pattern QCOM_SHADER_MULTIPLE_WAIT_QUEUES_SPEC_VERSION
+                                                              , QCOM_SHADER_MULTIPLE_WAIT_QUEUES_EXTENSION_NAME
+                                                              , pattern QCOM_SHADER_MULTIPLE_WAIT_QUEUES_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_PHYSICAL_DEVICE_SHADER_MULTIPLE_WAIT_QUEUES_FEATURES_QCOM))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MULTIPLE_WAIT_QUEUES_PROPERTIES_QCOM))
+-- | VkPhysicalDeviceShaderMultipleWaitQueuesFeaturesQCOM - Structure
+-- describing whether shader multiple wait queues can be supported by an
+-- implementation
+--
+-- = Members
+--
+-- This structure describes the following feature:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceShaderMultipleWaitQueuesFeaturesQCOM' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceShaderMultipleWaitQueuesFeaturesQCOM', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_shader_multiple_wait_queues VK_QCOM_shader_multiple_wait_queues>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceShaderMultipleWaitQueuesFeaturesQCOM = PhysicalDeviceShaderMultipleWaitQueuesFeaturesQCOM
+  { -- | #features-shaderMultipleWaitQueues# @shaderMultipleWaitQueues@ indicates
+    -- that the implementation supports SPIR-V modules declaring the
+    -- @MultipleWaitQueuesQCOM@ capability.
+    shaderMultipleWaitQueues :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceShaderMultipleWaitQueuesFeaturesQCOM)
+#endif
+deriving instance Show PhysicalDeviceShaderMultipleWaitQueuesFeaturesQCOM
+
+instance ToCStruct PhysicalDeviceShaderMultipleWaitQueuesFeaturesQCOM where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceShaderMultipleWaitQueuesFeaturesQCOM{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MULTIPLE_WAIT_QUEUES_FEATURES_QCOM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (shaderMultipleWaitQueues))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MULTIPLE_WAIT_QUEUES_FEATURES_QCOM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceShaderMultipleWaitQueuesFeaturesQCOM where
+  peekCStruct p = do
+    shaderMultipleWaitQueues <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDeviceShaderMultipleWaitQueuesFeaturesQCOM
+             (bool32ToBool shaderMultipleWaitQueues)
+
+instance Storable PhysicalDeviceShaderMultipleWaitQueuesFeaturesQCOM where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceShaderMultipleWaitQueuesFeaturesQCOM where
+  zero = PhysicalDeviceShaderMultipleWaitQueuesFeaturesQCOM
+           zero
+
+
+-- | VkPhysicalDeviceShaderMultipleWaitQueuesPropertiesQCOM - Structure
+-- describing shader multiple wait queues properties that can be supported
+-- by an implementation
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceShaderMultipleWaitQueuesPropertiesQCOM' 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.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_shader_multiple_wait_queues VK_QCOM_shader_multiple_wait_queues>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceShaderMultipleWaitQueuesPropertiesQCOM = PhysicalDeviceShaderMultipleWaitQueuesPropertiesQCOM
+  { -- | #limits-maxShaderWaitQueues# @maxShaderWaitQueues@ is the maximum number
+    -- of wait queues that /can/ be set for a @MultipleWaitQueuesQCOM@ loop
+    -- control hint.
+    maxShaderWaitQueues :: Word32 }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceShaderMultipleWaitQueuesPropertiesQCOM)
+#endif
+deriving instance Show PhysicalDeviceShaderMultipleWaitQueuesPropertiesQCOM
+
+instance ToCStruct PhysicalDeviceShaderMultipleWaitQueuesPropertiesQCOM where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceShaderMultipleWaitQueuesPropertiesQCOM{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MULTIPLE_WAIT_QUEUES_PROPERTIES_QCOM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (maxShaderWaitQueues)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MULTIPLE_WAIT_QUEUES_PROPERTIES_QCOM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    f
+
+instance FromCStruct PhysicalDeviceShaderMultipleWaitQueuesPropertiesQCOM where
+  peekCStruct p = do
+    maxShaderWaitQueues <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    pure $ PhysicalDeviceShaderMultipleWaitQueuesPropertiesQCOM
+             maxShaderWaitQueues
+
+instance Storable PhysicalDeviceShaderMultipleWaitQueuesPropertiesQCOM where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceShaderMultipleWaitQueuesPropertiesQCOM where
+  zero = PhysicalDeviceShaderMultipleWaitQueuesPropertiesQCOM
+           zero
+
+
+type QCOM_SHADER_MULTIPLE_WAIT_QUEUES_SPEC_VERSION = 1
+
+-- No documentation found for TopLevel "VK_QCOM_SHADER_MULTIPLE_WAIT_QUEUES_SPEC_VERSION"
+pattern QCOM_SHADER_MULTIPLE_WAIT_QUEUES_SPEC_VERSION :: forall a . Integral a => a
+pattern QCOM_SHADER_MULTIPLE_WAIT_QUEUES_SPEC_VERSION = 1
+
+
+type QCOM_SHADER_MULTIPLE_WAIT_QUEUES_EXTENSION_NAME = "VK_QCOM_shader_multiple_wait_queues"
+
+-- No documentation found for TopLevel "VK_QCOM_SHADER_MULTIPLE_WAIT_QUEUES_EXTENSION_NAME"
+pattern QCOM_SHADER_MULTIPLE_WAIT_QUEUES_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern QCOM_SHADER_MULTIPLE_WAIT_QUEUES_EXTENSION_NAME = "VK_QCOM_shader_multiple_wait_queues"
+
diff --git a/src/Vulkan/Extensions/VK_QCOM_shader_multiple_wait_queues.hs-boot b/src/Vulkan/Extensions/VK_QCOM_shader_multiple_wait_queues.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_QCOM_shader_multiple_wait_queues.hs-boot
@@ -0,0 +1,131 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_QCOM_shader_multiple_wait_queues - device extension
+--
+-- = VK_QCOM_shader_multiple_wait_queues
+--
+-- [__Name String__]
+--     @VK_QCOM_shader_multiple_wait_queues@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     305
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Not ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
+--
+-- [__SPIR-V Dependencies__]
+--
+--     -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/QCOM/SPV_QCOM_multiple_wait_queues.html SPV_QCOM_multiple_wait_queues>
+--
+-- [__Contact__]
+--
+--     -   Matthew Netsch
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_QCOM_shader_multiple_wait_queues] @mnetsch%0A*Here describe the issue or question you have about the VK_QCOM_shader_multiple_wait_queues extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_QCOM_shader_multiple_wait_queues.adoc VK_QCOM_shader_multiple_wait_queues>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2026-05-04
+--
+-- [__Interactions and External Dependencies__]
+--
+--     -   This extension provides API support for
+--         <https://github.com/KhronosGroup/GLSL/blob/main/extensions/qcom/GLSL_QCOM_multiple_wait_queues.txt GLSL_QCOM_multiple_wait_queues>
+--
+-- [__Contributors__]
+--
+--     -   Matthew Netsch, Qualcomm Technologies, Inc.
+--
+--     -   Elina Kamenetskaya, Qualcomm Technologies, Inc.
+--
+--     -   Wooyoung Kim, Qualcomm Technologies, Inc.
+--
+-- == Description
+--
+-- This extension adds a new loop control hint to the SPIR-V execution
+-- environment, instructing the compiler that it should use multiple wait
+-- queues to optimize a loop.
+--
+-- This can improve performance for loops that have high latency
+-- instructions such as for @VK_KHR_cooperative_matrix@ operations, by
+-- allowing the compiler to issue instructions for future iterations while
+-- waiting for the current iteration to complete.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceShaderMultipleWaitQueuesFeaturesQCOM'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDeviceShaderMultipleWaitQueuesPropertiesQCOM'
+--
+-- == New Enum Constants
+--
+-- -   'QCOM_SHADER_MULTIPLE_WAIT_QUEUES_EXTENSION_NAME'
+--
+-- -   'QCOM_SHADER_MULTIPLE_WAIT_QUEUES_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MULTIPLE_WAIT_QUEUES_FEATURES_QCOM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MULTIPLE_WAIT_QUEUES_PROPERTIES_QCOM'
+--
+-- == Version History
+--
+-- -   Revision 1, 2026-05-04 (Matthew Netsch)
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_QCOM_shader_multiple_wait_queues Vulkan Specification>.
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_QCOM_shader_multiple_wait_queues  ( PhysicalDeviceShaderMultipleWaitQueuesFeaturesQCOM
+                                                              , PhysicalDeviceShaderMultipleWaitQueuesPropertiesQCOM
+                                                              ) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data PhysicalDeviceShaderMultipleWaitQueuesFeaturesQCOM
+
+instance ToCStruct PhysicalDeviceShaderMultipleWaitQueuesFeaturesQCOM
+instance Show PhysicalDeviceShaderMultipleWaitQueuesFeaturesQCOM
+
+instance FromCStruct PhysicalDeviceShaderMultipleWaitQueuesFeaturesQCOM
+
+
+data PhysicalDeviceShaderMultipleWaitQueuesPropertiesQCOM
+
+instance ToCStruct PhysicalDeviceShaderMultipleWaitQueuesPropertiesQCOM
+instance Show PhysicalDeviceShaderMultipleWaitQueuesPropertiesQCOM
+
+instance FromCStruct PhysicalDeviceShaderMultipleWaitQueuesPropertiesQCOM
+
diff --git a/src/Vulkan/Extensions/VK_QCOM_tile_memory_heap.hs b/src/Vulkan/Extensions/VK_QCOM_tile_memory_heap.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_QCOM_tile_memory_heap.hs
@@ -0,0 +1,754 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_QCOM_tile_memory_heap - device extension
+--
+-- = VK_QCOM_tile_memory_heap
+--
+-- [__Name String__]
+--     @VK_QCOM_tile_memory_heap@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     548
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Not ratified
+--
+-- [__Extension and Version Dependencies__]
+--         
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_memory_requirements2 VK_KHR_get_memory_requirements2>
+--          and
+--         
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
+--
+-- [__API Interactions__]
+--
+--     -   Interacts with VK_QCOM_tile_properties
+--
+-- [__Contact__]
+--
+--     -   Patrick Boyle
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_QCOM_tile_memory_heap] @pboyleQCOM%0A*Here describe the issue or question you have about the VK_QCOM_tile_memory_heap extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_QCOM_tile_memory_heap.adoc VK_QCOM_tile_memory_heap>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2025-05-05
+--
+-- [__Interactions and External Dependencies__]
+--
+--     -   Interacts with @VK_QCOM_tile_properties@
+--
+--     -   Interacts with @VK_QCOM_tile_shading@
+--
+-- [__Contributors__]
+--
+--     -   Patrick Boyle, Qualcomm Technologies, Inc.
+--
+--     -   Matthew Netsch, Qualcomm Technologies, Inc.
+--
+--     -   Srihari Babu Alla, Qualcomm Technologies, Inc.
+--
+--     -   Kevin Matlage, Qualcomm Technologies, Inc.
+--
+-- == Description
+--
+-- This extension adds a new memory heap which allows applications to
+-- allocate and manage tile memory. A tile memory heap is denoted by the
+-- new
+-- 'Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_TILE_MEMORY_BIT_QCOM'
+-- property. Memory contents within this heap behave differently than other
+-- heaps and only persist its memory contents within a command buffer
+-- submission batch boundary. This boundary may be extended to a queue
+-- submit boundary by querying @queueSubmitBoundary@ in the new
+-- 'PhysicalDeviceTileMemoryHeapPropertiesQCOM' structure.
+--
+-- Tile memory from this heap can be bound to VkImages or VkBuffers. The
+-- following new usage flags
+-- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TILE_MEMORY_BIT_QCOM',
+-- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TILE_MEMORY_BIT_QCOM',
+-- 'Vulkan.Core14.Enums.BufferUsageFlags2.BUFFER_USAGE_2_TILE_MEMORY_BIT_QCOM'
+-- were added for this. A new extended structure is added to get memory
+-- requirements for tile memory 'TileMemoryRequirementsQCOM'.
+--
+-- A new command is added to bind tile memory to a command buffer in order
+-- to access and persist tile memory contents while executing commands
+-- 'cmdBindTileMemoryQCOM'.
+--
+-- This extension can be used in combination with
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_tile_properties VK_QCOM_tile_properties>
+-- with the new structure 'TileMemorySizeInfoQCOM'.
+--
+-- == Issues
+--
+-- None.
+--
+-- == New Commands
+--
+-- -   'cmdBindTileMemoryQCOM'
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo':
+--
+--     -   'TileMemoryBindInfoQCOM'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.MemoryRequirements2':
+--
+--     -   'TileMemoryRequirementsQCOM'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceTileMemoryHeapFeaturesQCOM'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDeviceTileMemoryHeapPropertiesQCOM'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_tile_properties VK_QCOM_tile_properties>
+-- is supported:
+--
+-- -   Extending 'Vulkan.Core10.Pass.RenderPassCreateInfo',
+--     'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.RenderPassCreateInfo2',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo':
+--
+--     -   'TileMemorySizeInfoQCOM'
+--
+-- == New Enum Constants
+--
+-- -   'QCOM_TILE_MEMORY_HEAP_EXTENSION_NAME'
+--
+-- -   'QCOM_TILE_MEMORY_HEAP_SPEC_VERSION'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BufferUsageFlagBits':
+--
+--     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TILE_MEMORY_BIT_QCOM'
+--
+-- -   Extending
+--     'Vulkan.Core14.Enums.BufferUsageFlags2.BufferUsageFlagBits2':
+--
+--     -   'Vulkan.Core14.Enums.BufferUsageFlags2.BUFFER_USAGE_2_TILE_MEMORY_BIT_QCOM'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlagBits':
+--
+--     -   'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TILE_MEMORY_BIT_QCOM'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.MemoryHeapFlagBits.MemoryHeapFlagBits':
+--
+--     -   'Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_TILE_MEMORY_BIT_QCOM'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_MEMORY_HEAP_FEATURES_QCOM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_MEMORY_HEAP_PROPERTIES_QCOM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_TILE_MEMORY_BIND_INFO_QCOM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_TILE_MEMORY_REQUIREMENTS_QCOM'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_tile_properties VK_QCOM_tile_properties>
+-- is supported:
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_TILE_MEMORY_SIZE_INFO_QCOM'
+--
+-- == Version History
+--
+-- -   Revision 1, 2025-03-26 (Patrick Boyle)
+--
+--     -   Initial version
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_QCOM_tile_memory_heap Vulkan Specification>.
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_QCOM_tile_memory_heap  ( cmdBindTileMemoryQCOM
+                                                   , TileMemoryBindInfoQCOM(..)
+                                                   , PhysicalDeviceTileMemoryHeapFeaturesQCOM(..)
+                                                   , PhysicalDeviceTileMemoryHeapPropertiesQCOM(..)
+                                                   , TileMemorySizeInfoQCOM(..)
+                                                   , TileMemoryRequirementsQCOM(..)
+                                                   , QCOM_TILE_MEMORY_HEAP_SPEC_VERSION
+                                                   , pattern QCOM_TILE_MEMORY_HEAP_SPEC_VERSION
+                                                   , QCOM_TILE_MEMORY_HEAP_EXTENSION_NAME
+                                                   , pattern QCOM_TILE_MEMORY_HEAP_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 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.Kind (Type)
+import Control.Monad.Trans.Cont (ContT(..))
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.NamedType ((:::))
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.Core10.Handles (CommandBuffer)
+import Vulkan.Core10.Handles (CommandBuffer(..))
+import Vulkan.Core10.Handles (CommandBuffer(CommandBuffer))
+import Vulkan.Core10.Handles (CommandBuffer_T)
+import Vulkan.Dynamic (DeviceCmds(pVkCmdBindTileMemoryQCOM))
+import Vulkan.Core10.Handles (DeviceMemory)
+import Vulkan.Core10.FundamentalTypes (DeviceSize)
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_MEMORY_HEAP_FEATURES_QCOM))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_MEMORY_HEAP_PROPERTIES_QCOM))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_TILE_MEMORY_BIND_INFO_QCOM))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_TILE_MEMORY_REQUIREMENTS_QCOM))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_TILE_MEMORY_SIZE_INFO_QCOM))
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdBindTileMemoryQCOM
+  :: FunPtr (Ptr CommandBuffer_T -> Ptr TileMemoryBindInfoQCOM -> IO ()) -> Ptr CommandBuffer_T -> Ptr TileMemoryBindInfoQCOM -> IO ()
+
+-- | vkCmdBindTileMemoryQCOM - Bind tile memory to a command buffer
+--
+-- = Description
+--
+-- Calling 'cmdBindTileMemoryQCOM' when @pTileMemoryBindInfo@ is @NULL@ is
+-- equivalent to binding no tile memory to the command buffer.
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdBindTileMemoryQCOM-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdBindTileMemoryQCOM-pTileMemoryBindInfo-parameter# If
+--     @pTileMemoryBindInfo@ is not @NULL@, @pTileMemoryBindInfo@ /must/ be
+--     a valid pointer to a valid 'TileMemoryBindInfoQCOM' structure
+--
+-- -   #VUID-vkCmdBindTileMemoryQCOM-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-vkCmdBindTileMemoryQCOM-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', or
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
+--
+-- -   #VUID-vkCmdBindTileMemoryQCOM-renderpass# This command /must/ only
+--     be called outside of a render pass instance
+--
+-- -   #VUID-vkCmdBindTileMemoryQCOM-videocoding# This command /must/ only
+--     be called outside of a video coding scope
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | State                                                                                                                                  |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | VK_QUEUE_GRAPHICS_BIT                                                                                                 |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdBindTileMemoryQCOM is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_tile_memory_heap VK_QCOM_tile_memory_heap>,
+-- 'Vulkan.Core10.Handles.CommandBuffer', 'TileMemoryBindInfoQCOM'
+cmdBindTileMemoryQCOM :: forall io
+                       . (MonadIO io)
+                      => -- | @commandBuffer@ is the command buffer that the tile memory will be bound
+                         -- to.
+                         CommandBuffer
+                      -> -- | @pTileMemoryBindInfo@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE' or a
+                         -- pointer to a 'TileMemoryBindInfoQCOM' structure defining how tile memory
+                         -- is bound.
+                         ("tileMemoryBindInfo" ::: Maybe TileMemoryBindInfoQCOM)
+                      -> io ()
+cmdBindTileMemoryQCOM commandBuffer tileMemoryBindInfo = liftIO . evalContT $ do
+  let vkCmdBindTileMemoryQCOMPtr = pVkCmdBindTileMemoryQCOM (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdBindTileMemoryQCOMPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdBindTileMemoryQCOM is null" Nothing Nothing
+  let vkCmdBindTileMemoryQCOM' = mkVkCmdBindTileMemoryQCOM vkCmdBindTileMemoryQCOMPtr
+  pTileMemoryBindInfo <- case (tileMemoryBindInfo) of
+    Nothing -> pure nullPtr
+    Just j -> ContT $ withCStruct (j)
+  lift $ traceAroundEvent "vkCmdBindTileMemoryQCOM" (vkCmdBindTileMemoryQCOM'
+                                                       (commandBufferHandle (commandBuffer))
+                                                       pTileMemoryBindInfo)
+  pure $ ()
+
+
+-- | VkTileMemoryBindInfoQCOM - Structure specifying tile memory to bind
+--
+-- = Description
+--
+-- @memory@ is used to bind this memory object to tile memory for all
+-- subsequent commands in the @commandBuffer@. Tile memory contents for
+-- ranges in the heap outside the bound @memory@ are discarded and become
+-- undefined for the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-tile-heaps active tile memory scope>
+-- if an action command is executed.
+--
+-- For secondary command buffers executing within a render pass instance,
+-- the active bound tile memory object is provided with this structure
+-- included in the @pNext@ chain of
+-- 'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo'.
+--
+-- If this structure was not specified since recording started for
+-- @commandBuffer@, no tile memory is bound to the command buffer and all
+-- contents become undefined for the /tile memory scope/ if an action
+-- command is executed.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_tile_memory_heap VK_QCOM_tile_memory_heap>,
+-- 'Vulkan.Core10.Handles.DeviceMemory',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'cmdBindTileMemoryQCOM'
+data TileMemoryBindInfoQCOM = TileMemoryBindInfoQCOM
+  { -- | @memory@ is the tile memory object to be bound.
+    --
+    -- #VUID-VkTileMemoryBindInfoQCOM-memory-10726# @memory@ /must/ have been
+    -- allocated from a 'Vulkan.Core10.DeviceInitialization.MemoryHeap' with
+    -- the
+    -- 'Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_TILE_MEMORY_BIT_QCOM'
+    -- property
+    --
+    -- #VUID-VkTileMemoryBindInfoQCOM-memory-parameter# @memory@ /must/ be a
+    -- valid 'Vulkan.Core10.Handles.DeviceMemory' handle
+    memory :: DeviceMemory }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (TileMemoryBindInfoQCOM)
+#endif
+deriving instance Show TileMemoryBindInfoQCOM
+
+instance ToCStruct TileMemoryBindInfoQCOM where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p TileMemoryBindInfoQCOM{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_TILE_MEMORY_BIND_INFO_QCOM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr DeviceMemory)) (memory)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_TILE_MEMORY_BIND_INFO_QCOM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr DeviceMemory)) (zero)
+    f
+
+instance FromCStruct TileMemoryBindInfoQCOM where
+  peekCStruct p = do
+    memory <- peek @DeviceMemory ((p `plusPtr` 16 :: Ptr DeviceMemory))
+    pure $ TileMemoryBindInfoQCOM
+             memory
+
+instance Storable TileMemoryBindInfoQCOM where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero TileMemoryBindInfoQCOM where
+  zero = TileMemoryBindInfoQCOM
+           zero
+
+
+-- | VkPhysicalDeviceTileMemoryHeapFeaturesQCOM - Structure describing
+-- whether the tile memory heap features can be supported by an
+-- implementation
+--
+-- = Members
+--
+-- This structure describes the following features:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceTileMemoryHeapFeaturesQCOM' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceTileMemoryHeapFeaturesQCOM', it /must/ add an instance of
+-- the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_tile_memory_heap VK_QCOM_tile_memory_heap>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceTileMemoryHeapFeaturesQCOM = PhysicalDeviceTileMemoryHeapFeaturesQCOM
+  { -- | #features-tileMemoryHeap# @tileMemoryHeap@ indicates whether the
+    -- implementation supports tile memory heap functionality.
+    tileMemoryHeap :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceTileMemoryHeapFeaturesQCOM)
+#endif
+deriving instance Show PhysicalDeviceTileMemoryHeapFeaturesQCOM
+
+instance ToCStruct PhysicalDeviceTileMemoryHeapFeaturesQCOM where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceTileMemoryHeapFeaturesQCOM{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_MEMORY_HEAP_FEATURES_QCOM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (tileMemoryHeap))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_MEMORY_HEAP_FEATURES_QCOM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceTileMemoryHeapFeaturesQCOM where
+  peekCStruct p = do
+    tileMemoryHeap <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDeviceTileMemoryHeapFeaturesQCOM
+             (bool32ToBool tileMemoryHeap)
+
+instance Storable PhysicalDeviceTileMemoryHeapFeaturesQCOM where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceTileMemoryHeapFeaturesQCOM where
+  zero = PhysicalDeviceTileMemoryHeapFeaturesQCOM
+           zero
+
+
+-- | VkPhysicalDeviceTileMemoryHeapPropertiesQCOM - Structure describing tile
+-- memory heap properties that can be supported by an implementation
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceTileMemoryHeapPropertiesQCOM' 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.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_tile_memory_heap VK_QCOM_tile_memory_heap>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceTileMemoryHeapPropertiesQCOM = PhysicalDeviceTileMemoryHeapPropertiesQCOM
+  { -- | #limits-queueSubmitBoundary# @queueSubmitBoundary@ is a boolean
+    -- describing if tile memory becomes undefined at a queue submit boundary
+    -- instead of the default command buffer submission batch boundary.
+    queueSubmitBoundary :: Bool
+  , -- | #limits-tileBufferTransfers# @tileBufferTransfers@ is a boolean
+    -- describing if buffers bound to tile memory support transfer operations.
+    tileBufferTransfers :: Bool
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceTileMemoryHeapPropertiesQCOM)
+#endif
+deriving instance Show PhysicalDeviceTileMemoryHeapPropertiesQCOM
+
+instance ToCStruct PhysicalDeviceTileMemoryHeapPropertiesQCOM where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceTileMemoryHeapPropertiesQCOM{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_MEMORY_HEAP_PROPERTIES_QCOM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (queueSubmitBoundary))
+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (tileBufferTransfers))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_MEMORY_HEAP_PROPERTIES_QCOM)
+    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 PhysicalDeviceTileMemoryHeapPropertiesQCOM where
+  peekCStruct p = do
+    queueSubmitBoundary <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    tileBufferTransfers <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
+    pure $ PhysicalDeviceTileMemoryHeapPropertiesQCOM
+             (bool32ToBool queueSubmitBoundary)
+             (bool32ToBool tileBufferTransfers)
+
+instance Storable PhysicalDeviceTileMemoryHeapPropertiesQCOM where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceTileMemoryHeapPropertiesQCOM where
+  zero = PhysicalDeviceTileMemoryHeapPropertiesQCOM
+           zero
+           zero
+
+
+-- | VkTileMemorySizeInfoQCOM - Structure describing tile memory size in use
+-- in a render pass instance
+--
+-- = Description
+--
+-- The returned tile properties are invalid if the @size@ is not equal to
+-- the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-bind-tile-memory bound tile memory’s>
+-- allocation size when the render pass is executed.
+--
+-- If this structure is not provided, the @size@ of the reserved region
+-- defaults to @0@.
+--
+-- Tile memory is reserved for application use by binding tile memory
+-- objects to the command buffer.
+--
+-- The size provided by this command is informational only for use when
+-- evaluating tile properties. If the application does not need to query
+-- the tile properties, then this size /can/ be safely omitted.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Pass.RenderPassCreateInfo'
+--
+--     -   'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.RenderPassCreateInfo2'
+--
+--     -   'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_tile_memory_heap VK_QCOM_tile_memory_heap>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_tile_properties VK_QCOM_tile_properties>,
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data TileMemorySizeInfoQCOM = TileMemorySizeInfoQCOM
+  { -- | @size@ is the size in bytes of tile memory used by the render pass or
+    -- preserved for later use.
+    --
+    -- #VUID-VkTileMemorySizeInfoQCOM-size-10729# @size@ must be less than or
+    -- equal to the largest size memory heap with the
+    -- 'Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_TILE_MEMORY_BIT_QCOM'
+    -- property
+    size :: DeviceSize }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (TileMemorySizeInfoQCOM)
+#endif
+deriving instance Show TileMemorySizeInfoQCOM
+
+instance ToCStruct TileMemorySizeInfoQCOM where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p TileMemorySizeInfoQCOM{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_TILE_MEMORY_SIZE_INFO_QCOM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (size)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_TILE_MEMORY_SIZE_INFO_QCOM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (zero)
+    f
+
+instance FromCStruct TileMemorySizeInfoQCOM where
+  peekCStruct p = do
+    size <- peek @DeviceSize ((p `plusPtr` 16 :: Ptr DeviceSize))
+    pure $ TileMemorySizeInfoQCOM
+             size
+
+instance Storable TileMemorySizeInfoQCOM where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero TileMemorySizeInfoQCOM where
+  zero = TileMemorySizeInfoQCOM
+           zero
+
+
+-- | VkTileMemoryRequirementsQCOM - Structure specifying tile memory
+-- requirements
+--
+-- = Description
+--
+-- The @size@ and @alignment@ /must/ be used when the resource is bound to
+-- a 'Vulkan.Core10.Handles.DeviceMemory' object that was allocated from a
+-- 'Vulkan.Core10.DeviceInitialization.MemoryType' that has a @heapIndex@
+-- that corresponds to a 'Vulkan.Core10.DeviceInitialization.MemoryHeap'
+-- with the
+-- 'Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_TILE_MEMORY_BIT_QCOM'
+-- property.
+--
+-- If the resource cannot be bound to tile memory, then @size@ and
+-- @alignment@ is filled with zero by the implementation.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.MemoryRequirements2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_tile_memory_heap VK_QCOM_tile_memory_heap>,
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data TileMemoryRequirementsQCOM = TileMemoryRequirementsQCOM
+  { -- | @size@ is the size, in bytes, of the tile memory allocation required for
+    -- the resource.
+    size :: DeviceSize
+  , -- | @alignment@ is the alignment, in bytes, of the offset within the tile
+    -- memory allocation required for the resource.
+    alignment :: DeviceSize
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (TileMemoryRequirementsQCOM)
+#endif
+deriving instance Show TileMemoryRequirementsQCOM
+
+instance ToCStruct TileMemoryRequirementsQCOM where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p TileMemoryRequirementsQCOM{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_TILE_MEMORY_REQUIREMENTS_QCOM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (size)
+    poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (alignment)
+    f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_TILE_MEMORY_REQUIREMENTS_QCOM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (zero)
+    poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (zero)
+    f
+
+instance FromCStruct TileMemoryRequirementsQCOM where
+  peekCStruct p = do
+    size <- peek @DeviceSize ((p `plusPtr` 16 :: Ptr DeviceSize))
+    alignment <- peek @DeviceSize ((p `plusPtr` 24 :: Ptr DeviceSize))
+    pure $ TileMemoryRequirementsQCOM
+             size alignment
+
+instance Storable TileMemoryRequirementsQCOM where
+  sizeOf ~_ = 32
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero TileMemoryRequirementsQCOM where
+  zero = TileMemoryRequirementsQCOM
+           zero
+           zero
+
+
+type QCOM_TILE_MEMORY_HEAP_SPEC_VERSION = 1
+
+-- No documentation found for TopLevel "VK_QCOM_TILE_MEMORY_HEAP_SPEC_VERSION"
+pattern QCOM_TILE_MEMORY_HEAP_SPEC_VERSION :: forall a . Integral a => a
+pattern QCOM_TILE_MEMORY_HEAP_SPEC_VERSION = 1
+
+
+type QCOM_TILE_MEMORY_HEAP_EXTENSION_NAME = "VK_QCOM_tile_memory_heap"
+
+-- No documentation found for TopLevel "VK_QCOM_TILE_MEMORY_HEAP_EXTENSION_NAME"
+pattern QCOM_TILE_MEMORY_HEAP_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern QCOM_TILE_MEMORY_HEAP_EXTENSION_NAME = "VK_QCOM_tile_memory_heap"
+
diff --git a/src/Vulkan/Extensions/VK_QCOM_tile_memory_heap.hs-boot b/src/Vulkan/Extensions/VK_QCOM_tile_memory_heap.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_QCOM_tile_memory_heap.hs-boot
@@ -0,0 +1,244 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_QCOM_tile_memory_heap - device extension
+--
+-- = VK_QCOM_tile_memory_heap
+--
+-- [__Name String__]
+--     @VK_QCOM_tile_memory_heap@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     548
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Not ratified
+--
+-- [__Extension and Version Dependencies__]
+--         
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_memory_requirements2 VK_KHR_get_memory_requirements2>
+--          and
+--         
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
+--
+-- [__API Interactions__]
+--
+--     -   Interacts with VK_QCOM_tile_properties
+--
+-- [__Contact__]
+--
+--     -   Patrick Boyle
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_QCOM_tile_memory_heap] @pboyleQCOM%0A*Here describe the issue or question you have about the VK_QCOM_tile_memory_heap extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_QCOM_tile_memory_heap.adoc VK_QCOM_tile_memory_heap>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2025-05-05
+--
+-- [__Interactions and External Dependencies__]
+--
+--     -   Interacts with @VK_QCOM_tile_properties@
+--
+--     -   Interacts with @VK_QCOM_tile_shading@
+--
+-- [__Contributors__]
+--
+--     -   Patrick Boyle, Qualcomm Technologies, Inc.
+--
+--     -   Matthew Netsch, Qualcomm Technologies, Inc.
+--
+--     -   Srihari Babu Alla, Qualcomm Technologies, Inc.
+--
+--     -   Kevin Matlage, Qualcomm Technologies, Inc.
+--
+-- == Description
+--
+-- This extension adds a new memory heap which allows applications to
+-- allocate and manage tile memory. A tile memory heap is denoted by the
+-- new
+-- 'Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_TILE_MEMORY_BIT_QCOM'
+-- property. Memory contents within this heap behave differently than other
+-- heaps and only persist its memory contents within a command buffer
+-- submission batch boundary. This boundary may be extended to a queue
+-- submit boundary by querying @queueSubmitBoundary@ in the new
+-- 'PhysicalDeviceTileMemoryHeapPropertiesQCOM' structure.
+--
+-- Tile memory from this heap can be bound to VkImages or VkBuffers. The
+-- following new usage flags
+-- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TILE_MEMORY_BIT_QCOM',
+-- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TILE_MEMORY_BIT_QCOM',
+-- 'Vulkan.Core14.Enums.BufferUsageFlags2.BUFFER_USAGE_2_TILE_MEMORY_BIT_QCOM'
+-- were added for this. A new extended structure is added to get memory
+-- requirements for tile memory 'TileMemoryRequirementsQCOM'.
+--
+-- A new command is added to bind tile memory to a command buffer in order
+-- to access and persist tile memory contents while executing commands
+-- 'cmdBindTileMemoryQCOM'.
+--
+-- This extension can be used in combination with
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_tile_properties VK_QCOM_tile_properties>
+-- with the new structure 'TileMemorySizeInfoQCOM'.
+--
+-- == Issues
+--
+-- None.
+--
+-- == New Commands
+--
+-- -   'cmdBindTileMemoryQCOM'
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo':
+--
+--     -   'TileMemoryBindInfoQCOM'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.MemoryRequirements2':
+--
+--     -   'TileMemoryRequirementsQCOM'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceTileMemoryHeapFeaturesQCOM'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDeviceTileMemoryHeapPropertiesQCOM'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_tile_properties VK_QCOM_tile_properties>
+-- is supported:
+--
+-- -   Extending 'Vulkan.Core10.Pass.RenderPassCreateInfo',
+--     'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.RenderPassCreateInfo2',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo':
+--
+--     -   'TileMemorySizeInfoQCOM'
+--
+-- == New Enum Constants
+--
+-- -   'QCOM_TILE_MEMORY_HEAP_EXTENSION_NAME'
+--
+-- -   'QCOM_TILE_MEMORY_HEAP_SPEC_VERSION'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BufferUsageFlagBits':
+--
+--     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TILE_MEMORY_BIT_QCOM'
+--
+-- -   Extending
+--     'Vulkan.Core14.Enums.BufferUsageFlags2.BufferUsageFlagBits2':
+--
+--     -   'Vulkan.Core14.Enums.BufferUsageFlags2.BUFFER_USAGE_2_TILE_MEMORY_BIT_QCOM'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlagBits':
+--
+--     -   'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TILE_MEMORY_BIT_QCOM'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.MemoryHeapFlagBits.MemoryHeapFlagBits':
+--
+--     -   'Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_TILE_MEMORY_BIT_QCOM'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_MEMORY_HEAP_FEATURES_QCOM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_MEMORY_HEAP_PROPERTIES_QCOM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_TILE_MEMORY_BIND_INFO_QCOM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_TILE_MEMORY_REQUIREMENTS_QCOM'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_tile_properties VK_QCOM_tile_properties>
+-- is supported:
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_TILE_MEMORY_SIZE_INFO_QCOM'
+--
+-- == Version History
+--
+-- -   Revision 1, 2025-03-26 (Patrick Boyle)
+--
+--     -   Initial version
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_QCOM_tile_memory_heap Vulkan Specification>.
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_QCOM_tile_memory_heap  ( PhysicalDeviceTileMemoryHeapFeaturesQCOM
+                                                   , PhysicalDeviceTileMemoryHeapPropertiesQCOM
+                                                   , TileMemoryBindInfoQCOM
+                                                   , TileMemoryRequirementsQCOM
+                                                   , TileMemorySizeInfoQCOM
+                                                   ) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data PhysicalDeviceTileMemoryHeapFeaturesQCOM
+
+instance ToCStruct PhysicalDeviceTileMemoryHeapFeaturesQCOM
+instance Show PhysicalDeviceTileMemoryHeapFeaturesQCOM
+
+instance FromCStruct PhysicalDeviceTileMemoryHeapFeaturesQCOM
+
+
+data PhysicalDeviceTileMemoryHeapPropertiesQCOM
+
+instance ToCStruct PhysicalDeviceTileMemoryHeapPropertiesQCOM
+instance Show PhysicalDeviceTileMemoryHeapPropertiesQCOM
+
+instance FromCStruct PhysicalDeviceTileMemoryHeapPropertiesQCOM
+
+
+data TileMemoryBindInfoQCOM
+
+instance ToCStruct TileMemoryBindInfoQCOM
+instance Show TileMemoryBindInfoQCOM
+
+instance FromCStruct TileMemoryBindInfoQCOM
+
+
+data TileMemoryRequirementsQCOM
+
+instance ToCStruct TileMemoryRequirementsQCOM
+instance Show TileMemoryRequirementsQCOM
+
+instance FromCStruct TileMemoryRequirementsQCOM
+
+
+data TileMemorySizeInfoQCOM
+
+instance ToCStruct TileMemorySizeInfoQCOM
+instance Show TileMemorySizeInfoQCOM
+
+instance FromCStruct TileMemorySizeInfoQCOM
+
diff --git a/src/Vulkan/Extensions/VK_QCOM_tile_properties.hs b/src/Vulkan/Extensions/VK_QCOM_tile_properties.hs
--- a/src/Vulkan/Extensions/VK_QCOM_tile_properties.hs
+++ b/src/Vulkan/Extensions/VK_QCOM_tile_properties.hs
@@ -112,7 +112,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_QCOM_tile_properties Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_QCOM_tile_properties Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -134,6 +134,7 @@
 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)
@@ -186,8 +187,10 @@
 import Vulkan.Core10.Enums.Result (Result(..))
 import Vulkan.CStruct.Extends (SomeStruct)
 import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Exception (VulkanException(..))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_TILE_PROPERTIES_QCOM))
+import Vulkan.Core10.Enums.Result (Result(SUCCESS))
 import Vulkan.Extensions.VK_KHR_dynamic_rendering (RenderingInfoKHR)
 foreign import ccall
 #if !defined(SAFE_FOREIGN_CALLS)
@@ -245,13 +248,16 @@
 --
 -- [<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'
 --
+--     -   'Vulkan.Core10.Enums.Result.SUCCESS'
+--
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
---     None
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_tile_properties VK_QCOM_tile_properties>,
@@ -271,22 +277,24 @@
   let vkGetFramebufferTilePropertiesQCOM' = mkVkGetFramebufferTilePropertiesQCOM vkGetFramebufferTilePropertiesQCOMPtr
   let device' = deviceHandle (device)
   pPPropertiesCount <- ContT $ bracket (callocBytes @Word32 4) free
-  _ <- lift $ traceAroundEvent "vkGetFramebufferTilePropertiesQCOM" (vkGetFramebufferTilePropertiesQCOM'
+  r <- lift $ traceAroundEvent "vkGetFramebufferTilePropertiesQCOM" (vkGetFramebufferTilePropertiesQCOM'
                                                                        device'
                                                                        (framebuffer)
                                                                        (pPPropertiesCount)
                                                                        (nullPtr))
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
   pPropertiesCount <- lift $ peek @Word32 pPPropertiesCount
   pPProperties <- ContT $ bracket (callocBytes @TilePropertiesQCOM ((fromIntegral (pPropertiesCount)) * 48)) free
   _ <- traverse (\i -> ContT $ pokeZeroCStruct (pPProperties `advancePtrBytes` (i * 48) :: Ptr TilePropertiesQCOM) . ($ ())) [0..(fromIntegral (pPropertiesCount)) - 1]
-  r <- lift $ traceAroundEvent "vkGetFramebufferTilePropertiesQCOM" (vkGetFramebufferTilePropertiesQCOM'
-                                                                       device'
-                                                                       (framebuffer)
-                                                                       (pPPropertiesCount)
-                                                                       ((pPProperties)))
+  r' <- lift $ traceAroundEvent "vkGetFramebufferTilePropertiesQCOM" (vkGetFramebufferTilePropertiesQCOM'
+                                                                        device'
+                                                                        (framebuffer)
+                                                                        (pPPropertiesCount)
+                                                                        ((pPProperties)))
+  lift $ when (r' < SUCCESS) (throwIO (VulkanException r'))
   pPropertiesCount' <- lift $ peek @Word32 pPPropertiesCount
   pProperties' <- lift $ generateM (fromIntegral (pPropertiesCount')) (\i -> peekCStruct @TilePropertiesQCOM (((pPProperties) `advancePtrBytes` (48 * (i)) :: Ptr TilePropertiesQCOM)))
-  pure $ (r, pProperties')
+  pure $ ((r'), pProperties')
 
 
 foreign import ccall
@@ -306,8 +314,11 @@
 --     -   'Vulkan.Core10.Enums.Result.SUCCESS'
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
---     None
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_tile_properties VK_QCOM_tile_properties>,
@@ -342,10 +353,11 @@
   let vkGetDynamicRenderingTilePropertiesQCOM' = mkVkGetDynamicRenderingTilePropertiesQCOM vkGetDynamicRenderingTilePropertiesQCOMPtr
   pRenderingInfo <- ContT $ withCStruct (renderingInfo)
   pPProperties <- ContT (withZeroCStruct @TilePropertiesQCOM)
-  _ <- lift $ traceAroundEvent "vkGetDynamicRenderingTilePropertiesQCOM" (vkGetDynamicRenderingTilePropertiesQCOM'
+  r <- lift $ traceAroundEvent "vkGetDynamicRenderingTilePropertiesQCOM" (vkGetDynamicRenderingTilePropertiesQCOM'
                                                                             (deviceHandle (device))
                                                                             (forgetExtensions pRenderingInfo)
                                                                             (pPProperties))
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
   pProperties <- lift $ peekCStruct @TilePropertiesQCOM pPProperties
   pure $ (pProperties)
 
@@ -365,12 +377,22 @@
 -- 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. 'PhysicalDeviceTilePropertiesFeaturesQCOM' /can/ also be used
--- in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceTilePropertiesFeaturesQCOM', it /must/ add an instance of
+-- the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_tile_properties VK_QCOM_tile_properties>,
@@ -425,8 +447,8 @@
 -- All tiles will be tightly packed around the first tile, with edges being
 -- multiples of tile width and\/or height from the origin.
 --
--- Reported value for @apronSize@ will be zero and its functionality will
--- be described in a future extension.
+-- The @tileSize@ is guaranteed to be a multiple of
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-tileGranularity tileGranularity>.
 --
 -- == Valid Usage (Implicit)
 --
@@ -444,7 +466,8 @@
     -- the width and height of a tile in pixels, and depth corresponding to the
     -- number of slices the tile spans.
     tileSize :: Extent3D
-  , -- | @apronSize@ is the dimension of the apron.
+  , -- | @apronSize@ is the dimension of the
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-tile-shading-aprons apron>.
     apronSize :: Extent2D
   , -- | @origin@ is the top-left corner of the first tile in attachment space.
     origin :: Offset2D
diff --git a/src/Vulkan/Extensions/VK_QCOM_tile_properties.hs-boot b/src/Vulkan/Extensions/VK_QCOM_tile_properties.hs-boot
--- a/src/Vulkan/Extensions/VK_QCOM_tile_properties.hs-boot
+++ b/src/Vulkan/Extensions/VK_QCOM_tile_properties.hs-boot
@@ -112,7 +112,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_QCOM_tile_properties Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_QCOM_tile_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_QCOM_tile_shading.hs b/src/Vulkan/Extensions/VK_QCOM_tile_shading.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_QCOM_tile_shading.hs
@@ -0,0 +1,2432 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_QCOM_tile_shading - device extension
+--
+-- = VK_QCOM_tile_shading
+--
+-- [__Name String__]
+--     @VK_QCOM_tile_shading@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     310
+--
+-- [__Revision__]
+--     2
+--
+-- [__Ratification Status__]
+--     Not ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_tile_properties VK_QCOM_tile_properties>
+--
+-- [__SPIR-V Dependencies__]
+--
+--     -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/QCOM/SPV_QCOM_tile_shading.html SPV_QCOM_tile_shading>
+--
+-- [__Contact__]
+--
+--     -   Matthew Netsch
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_QCOM_tile_shading] @mnetsch%0A*Here describe the issue or question you have about the VK_QCOM_tile_shading extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_QCOM_tile_shading.adoc VK_QCOM_tile_shading>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2025-8-13
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Interactions and External Dependencies__]
+--
+--     -   This extension interacts with @VK_KHR_dynamic_rendering@
+--
+--     -   This extension interacts with @VK_EXT_transform_feedback@
+--
+--     -   This extension interacts with @VK_EXT_debug_marker@
+--
+--     -   This extension interacts with
+--         @VK_EXT_attachment_feedback_loop_layout@
+--
+--     -   This extension interacts with
+--         @VK_KHR_dynamic_rendering_local_read@
+--
+--     -   This extension interacts with @VK_QCOM_image_processing@
+--
+-- [__Contributors__]
+--
+--     -   Jeff Leger, Qualcomm
+--
+--     -   Matt Netsch, Qualcomm
+--
+--     -   Srihari Babu Alla, Qualcomm
+--
+--     -   Matthew Smith, Qualcomm
+--
+--     -   Kevin Matlage, Qualcomm
+--
+--     -   Alex Bourd, Qualcomm
+--
+-- == Description
+--
+-- This extension exposes tile shading in Vulkan. Many mobile GPUs utilize
+-- Tile-Based Deferred Rendering (TBDR) to optimize for power and
+-- performance. Conversely, most desktop GPUs use immediate-mode rendering
+-- (IM). Adreno ™ GPUs uniquely have the ability to operate in either mode,
+-- and when this extension is not enabled, the Adreno driver will select
+-- the most optimal mode (TBDR or IM) based on the workload; this feature
+-- is called FlexRender ™. When this extension is in use, FlexRender is
+-- disabled and the GPU operates exclusively in TBDR wherever possible.
+--
+-- The TBDR mode divides the color and depth\/stencil buffer attachments
+-- into a regular grid of smaller regions called “tiles”. When a render
+-- pass instance is submitted for execution on an Adreno GPU, the rendering
+-- is split into two phases: a single “visibility pass” followed by
+-- multiple “rendering passes” where a separate render pass is issued for
+-- each tile in the framebuffer.
+--
+-- The “visibility pass” processes the geometry: identifies which tiles are
+-- covered by each primitive, eliminates occluded primitives and unneeded
+-- state changes, and performs other tile-specific optimizations. The
+-- primitive coverage information collected during the visibility pass is
+-- used in the subsequent “rendering pass” for each tile. During the
+-- rendering pass for each tile, any primitives that were determined not to
+-- cover the current tile are skipped.
+--
+-- This deferred rasterization additionally utilizes a specialized
+-- high-bandwidth on-die memory, “tile memory”. Tile memory is dramatically
+-- more efficient than other device memory. The tile memory temporarily
+-- stores the color and other attachments for each tile during
+-- rasterization. After each tile is fully rasterized, the resulting tile
+-- is typically copied to device memory backing the attachment as specified
+-- by the render pass STORE_OP. The per-tile rendering passes occur
+-- independently for each tile, with multiple tiles potentially being
+-- processed in parallel.
+--
+-- This extension enables applications to leverage the power and
+-- performance of tile memory in new ways:
+--
+-- -   Adds a mechanism for recording dispatches or draws that are
+--     guaranteed to be executed per-tile.
+--
+-- -   Such draws bypass the above-mentioned visibility-based skipping and
+--     are guaranteed to be executed for every tile in the rendering pass.
+--
+-- -   Shaders can declare “tile attachments” variables, providing shader
+--     access to color, depth\/stencil, and input attachment pixels.
+--
+-- -   Fragment and compute shaders can read these render pass attachments
+--     at any location within the tile. Compute shaders can also write to
+--     color attachments at any location within the tile.
+--
+-- -   Shaders can use new built-in variables that provide the location,
+--     size, and apron region of the tile.
+--
+-- -   A new tile dispatch command automatically scales workgroup sizes and
+--     counts to the tile size, given a desired shading rate.
+--
+-- -   Framebuffer-local dependencies are expanded to tile-sized regions,
+--     rather than a single pixel or sample.
+--
+-- -   A tile shading render pass can also enable tiling “aprons”. This is
+--     a specialized rendering mode where the GPU renders overlapping tiles
+--     that enable specific use cases.
+--
+-- == New Commands
+--
+-- -   'cmdBeginPerTileExecutionQCOM'
+--
+-- -   'cmdDispatchTileQCOM'
+--
+-- -   'cmdEndPerTileExecutionQCOM'
+--
+-- == New Structures
+--
+-- -   'DispatchTileInfoQCOM'
+--
+-- -   'PerTileBeginInfoQCOM'
+--
+-- -   'PerTileEndInfoQCOM'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceTileShadingFeaturesQCOM'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDeviceTileShadingPropertiesQCOM'
+--
+-- -   Extending 'Vulkan.Core10.Pass.RenderPassCreateInfo',
+--     'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.RenderPassCreateInfo2',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo',
+--     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo':
+--
+--     -   'RenderPassTileShadingCreateInfoQCOM'
+--
+-- == New Enums
+--
+-- -   'TileShadingRenderPassFlagBitsQCOM'
+--
+-- == New Bitmasks
+--
+-- -   'TileShadingRenderPassFlagsQCOM'
+--
+-- == New Enum Constants
+--
+-- -   'QCOM_TILE_SHADING_EXTENSION_NAME'
+--
+-- -   'QCOM_TILE_SHADING_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core13.Enums.AccessFlags2.AccessFlagBits2':
+--
+--     -   'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_TILE_ATTACHMENT_READ_BIT_QCOM'
+--
+--     -   'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_TILE_ATTACHMENT_WRITE_BIT_QCOM'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DISPATCH_TILE_INFO_QCOM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PER_TILE_BEGIN_INFO_QCOM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PER_TILE_END_INFO_QCOM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_SHADING_FEATURES_QCOM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_SHADING_PROPERTIES_QCOM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDER_PASS_TILE_SHADING_CREATE_INFO_QCOM'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SubpassDescriptionFlagBits':
+--
+--     -   'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_TILE_SHADING_APRON_BIT_QCOM'
+--
+-- == New or Modified Built-In Variables
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-tileoffset TileOffsetQCOM>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-tilesize TileDimensionQCOM>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-tileapronsize TileApronSizeQCOM>
+--
+-- == New SPIR-V Capabilities
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-TileShadingQCOM TileShadingQCOM>
+--
+-- == Issues
+--
+-- 1) Some early Adreno drivers advertised support for version 1 of this
+-- extension without supporting the required
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-tileShadingApron tileShadingApron>
+-- feature. To cover all Adreno devices on the market, applications should
+-- not assume any version of this extension supports the @tileShadingApron@
+-- feature without performing a feature query.
+--
+-- == Version History
+--
+-- -   Revision 2, 2025-08-13 (Matthew Netsch)
+--
+--     -   Make the @tileShadingApron@ feature optional
+--
+-- -   Revision 1, 2023-10-12 (Jeff Leger)
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_QCOM_tile_shading Vulkan Specification>.
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_QCOM_tile_shading  ( cmdDispatchTileQCOM
+                                               , cmdBeginPerTileExecutionQCOM
+                                               , cmdEndPerTileExecutionQCOM
+                                               , PhysicalDeviceTileShadingFeaturesQCOM(..)
+                                               , PhysicalDeviceTileShadingPropertiesQCOM(..)
+                                               , RenderPassTileShadingCreateInfoQCOM(..)
+                                               , PerTileBeginInfoQCOM(..)
+                                               , PerTileEndInfoQCOM(..)
+                                               , DispatchTileInfoQCOM(..)
+                                               , TileShadingRenderPassFlagsQCOM
+                                               , TileShadingRenderPassFlagBitsQCOM( TILE_SHADING_RENDER_PASS_ENABLE_BIT_QCOM
+                                                                                  , TILE_SHADING_RENDER_PASS_PER_TILE_EXECUTION_BIT_QCOM
+                                                                                  , ..
+                                                                                  )
+                                               , QCOM_TILE_SHADING_SPEC_VERSION
+                                               , pattern QCOM_TILE_SHADING_SPEC_VERSION
+                                               , QCOM_TILE_SHADING_EXTENSION_NAME
+                                               , pattern QCOM_TILE_SHADING_EXTENSION_NAME
+                                               ) where
+
+import Data.Bits (Bits)
+import Data.Bits (FiniteBits)
+import Vulkan.Internal.Utils (enumReadPrec)
+import Vulkan.Internal.Utils (enumShowsPrec)
+import Vulkan.Internal.Utils (traceAroundEvent)
+import Control.Monad (unless)
+import Control.Monad.IO.Class (liftIO)
+import Foreign.Marshal.Alloc (allocaBytes)
+import GHC.IO (throwIO)
+import GHC.Ptr (nullFunPtr)
+import Foreign.Ptr (nullPtr)
+import Foreign.Ptr (plusPtr)
+import GHC.Show (showString)
+import Numeric (showHex)
+import Control.Monad.Trans.Class (lift)
+import Control.Monad.Trans.Cont (evalContT)
+import 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.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.Kind (Type)
+import Control.Monad.Trans.Cont (ContT(..))
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.Core10.Handles (CommandBuffer)
+import Vulkan.Core10.Handles (CommandBuffer(..))
+import Vulkan.Core10.Handles (CommandBuffer(CommandBuffer))
+import Vulkan.Core10.Handles (CommandBuffer_T)
+import Vulkan.Dynamic (DeviceCmds(pVkCmdBeginPerTileExecutionQCOM))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdDispatchTileQCOM))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdEndPerTileExecutionQCOM))
+import Vulkan.Core10.FundamentalTypes (Extent2D)
+import Vulkan.Core10.FundamentalTypes (Flags)
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DISPATCH_TILE_INFO_QCOM))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PER_TILE_BEGIN_INFO_QCOM))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PER_TILE_END_INFO_QCOM))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_SHADING_FEATURES_QCOM))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_SHADING_PROPERTIES_QCOM))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RENDER_PASS_TILE_SHADING_CREATE_INFO_QCOM))
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdDispatchTileQCOM
+  :: FunPtr (Ptr CommandBuffer_T -> Ptr DispatchTileInfoQCOM -> IO ()) -> Ptr CommandBuffer_T -> Ptr DispatchTileInfoQCOM -> IO ()
+
+-- | vkCmdDispatchTileQCOM - Dispatch per-tile work items
+--
+-- = Description
+--
+-- This command operates in the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model>,
+-- invoking a separate dispatch for each /covered tile/. The global
+-- workgroup count and local workgroup size of each dispatch are defined by
+-- the implementation to efficiently iterate over a uniform grid of pixel
+-- blocks within the area of its /active tile/.
+--
+-- Each shader invocation operates on a single pixel block and its size is
+-- determined by the shader’s tiling rate, which /must/ be defined by
+-- shaders executed by this command. The @TileShadingRateQCOM@ execution
+-- mode operand defines the shader’s tiling rate. Its @x@ and @y@ /must/ be
+-- a power of two and less than or equal to the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxTileShadingRate maxTileShadingRate>
+-- limit. Its @z@ /must/ be less than or equal to the active tile’s depth
+-- as reported by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_tile_properties VK_QCOM_tile_properties>,
+-- and
+-- 'Vulkan.Extensions.VK_QCOM_tile_properties.TilePropertiesQCOM'.tileSize.z
+-- % @TileShadingRateQCOM@::@z@ /must/ equal @0@.
+--
+-- The start location of the shader invocation’s pixel block is
+-- vec3(@TileOffsetQCOM@, 0) + (@GlobalInvocationId@ *
+-- @TileShadingRateQCOM@)
+--
+-- Shader invocations /can/ perform tile attachment load\/store operations
+-- at any location within the /active tile/, but the most efficient access
+-- /may/ be limited to fragment locations within and local to the shader
+-- invocation’s pixel block.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-magFilter-04553# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
+--     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR',
+--     @reductionMode@ equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
+--     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-vkCmdDispatchTileQCOM-magFilter-09598# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
+--     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR' and
+--     @reductionMode@ equal to either
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
+--     or
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
+--     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_MINMAX_BIT'
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-mipmapMode-04770# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
+--     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR',
+--     @reductionMode@ equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE',
+--     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-vkCmdDispatchTileQCOM-mipmapMode-09599# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
+--     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'
+--     and @reductionMode@ equal to either
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
+--     or
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
+--     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_MINMAX_BIT'
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-unnormalizedCoordinates-09635# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the image view’s @levelCount@ and @layerCount@ /must/ be 1
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-None-08609# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the image view’s @viewType@ /must/ be
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D' or
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D'
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-None-08610# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the sampler /must/ not be used with any of the SPIR-V
+--     @OpImageSample*@ or @OpImageSparseSample*@ instructions with
+--     @ImplicitLod@, @Dref@ or @Proj@ in their name
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-None-08611# If a
+--     'Vulkan.Core10.Handles.Sampler' created with
+--     @unnormalizedCoordinates@ equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' is used to sample a
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the sampler /must/ not be used with any of the SPIR-V
+--     @OpImageSample*@ or @OpImageSparseSample*@ instructions that
+--     includes a LOD bias or any offset values
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-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-vkCmdDispatchTileQCOM-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-vkCmdDispatchTileQCOM-None-07888# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'
+--     descriptor is accessed using atomic operations as a result of this
+--     command, then the storage texel buffer’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-buffer-view-format-features format features>
+--     /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT'
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-None-02692# If a
+--     'Vulkan.Core10.Handles.ImageView' is sampled with
+--     'Vulkan.Core10.Enums.Filter.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.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-None-02693# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_filter_cubic VK_EXT_filter_cubic>
+--     extension is not enabled and any 'Vulkan.Core10.Handles.ImageView'
+--     is sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as a
+--     result of this command, it /must/ not have a
+--     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' of
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE', or
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY'
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-filterCubic-02694# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with
+--     'Vulkan.Core10.Enums.Filter.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-vkCmdDispatchTileQCOM-filterCubicMinmax-02695# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with
+--     'Vulkan.Core10.Enums.Filter.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-vkCmdDispatchTileQCOM-cubicRangeClamp-09212# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-cubicRangeClamp cubicRangeClamp>
+--     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
+--     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
+--     a result of this command /must/ not have a
+--     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
+--     equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-reductionMode-09213# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with a
+--     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'::@reductionMode@
+--     equal to
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM'
+--     as a result of this command /must/ sample with
+--     'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT'
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-selectableCubicWeights-09214# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-selectableCubicWeights selectableCubicWeights>
+--     feature is not enabled, then any 'Vulkan.Core10.Handles.ImageView'
+--     being sampled with 'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_EXT' as
+--     a result of this command /must/ have
+--     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.SamplerCubicWeightsCreateInfoQCOM'::@cubicWeights@
+--     equal to
+--     'Vulkan.Extensions.VK_QCOM_filter_cubic_weights.CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM'
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-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-vkCmdDispatchTileQCOM-OpTypeImage-07027# For any
+--     'Vulkan.Core10.Handles.ImageView' being written as a storage image
+--     where the image format field of the @OpTypeImage@ is @Unknown@, the
+--     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_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-OpTypeImage-07028# For any
+--     'Vulkan.Core10.Handles.ImageView' being read as a storage image
+--     where the image format field of the @OpTypeImage@ is @Unknown@, the
+--     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_STORAGE_READ_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-OpTypeImage-07029# For any
+--     'Vulkan.Core10.Handles.BufferView' being written as a storage texel
+--     buffer where the image format field of the @OpTypeImage@ is
+--     @Unknown@, the view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
+--     /must/ contain
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-OpTypeImage-07030# Any
+--     'Vulkan.Core10.Handles.BufferView' being read as a storage texel
+--     buffer where the image format field of the @OpTypeImage@ is
+--     @Unknown@ then the view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFormatProperties3 buffer features>
+--     /must/ contain
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-None-08600# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
+--     was created with a pipeline layout and statically uses a set /n/, a
+--     descriptor set /must/ have been bound to /n/ at the same pipeline
+--     bind point, with layouts compatible for set /n/ with the layout(s)
+--     used to create the shader, as described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptors-compatibility ???>
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-None-08601# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>
+--     was created with a pipeline layout or specified push constant ranges
+--     and statically uses a push constant value, that value /must/ have
+--     been set for the same pipeline bind point, with push constant ranges
+--     that are
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptors-compatibility compatible>
+--     with the push constant range used to create the shader
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-None-10068# For each array of resources
+--     that is used by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
+--     the indices used to access members of the array /must/ be less than
+--     the descriptor count for the identified binding in the descriptor
+--     sets used by this command
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-None-08114# Descriptors in each bound
+--     descriptor set, specified via
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
+--     be valid if they are accessed as described by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
+--     by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
+--     point used by this command and the bound
+--     'Vulkan.Core10.Handles.Pipeline' was not created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-imageLayout-00344# If an image
+--     descriptor is accessed by a shader, the
+--     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' /must/ match the
+--     subresource accessible from the 'Vulkan.Core10.Handles.ImageView' 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>
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-None-08115# If the descriptors used by
+--     the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
+--     point were specified via
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', the
+--     bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     without
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-None-08116# Descriptors in bound
+--     descriptor buffers, specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     /must/ be valid if they are dynamically used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
+--     was created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-None-08604# Descriptors in bound
+--     descriptor buffers, specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     /must/ be valid if they are dynamically used by any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     to the pipeline bind point used by this command
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-None-08117# If the descriptors used by
+--     the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
+--     point were specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-None-08119# If a descriptor is
+--     dynamically used with a 'Vulkan.Core10.Handles.Pipeline' created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     the descriptor memory /must/ be resident
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-None-08605# If a descriptor is
+--     dynamically used with a 'Vulkan.Extensions.Handles.ShaderEXT'
+--     created with a 'Vulkan.Core10.Handles.DescriptorSetLayout' that was
+--     created with
+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     the descriptor memory /must/ be resident
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-None-08606# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderObject shaderObject>
+--     feature is not enabled, a valid pipeline /must/ be bound to the
+--     pipeline bind point used by this command
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-None-08608# If a pipeline is bound to
+--     the pipeline bind point used by this command, there /must/ not have
+--     been any calls to dynamic state setting commands for any state
+--     specified statically in the 'Vulkan.Core10.Handles.Pipeline' object
+--     bound to the pipeline bind point used by this command, since that
+--     pipeline was bound
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-uniformBuffers-06935# If any stage of
+--     the 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline
+--     bind point used by this command accesses a uniform buffer, and that
+--     stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @uniformBuffers@, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /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-vkCmdDispatchTileQCOM-None-08612# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, and any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     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-vkCmdDispatchTileQCOM-storageBuffers-06936# If any stage of
+--     the 'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline
+--     bind point used by this command accesses a storage buffer, and that
+--     stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @storageBuffers@, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /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-vkCmdDispatchTileQCOM-None-08613# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, and any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     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-vkCmdDispatchTileQCOM-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
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shaders>
+--     /must/ not be a protected resource
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-viewType-07752# If a
+--     'Vulkan.Core10.Handles.ImageView' is accessed as a result of this
+--     command, then the image view’s @viewType@ /must/ match the @Dim@
+--     operand of the @OpTypeImage@ as described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-image-dimensions ???>
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-format-07753# If a
+--     'Vulkan.Core10.Handles.ImageView' or
+--     'Vulkan.Core10.Handles.BufferView' is accessed as a result of this
+--     command, then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-numericformat numeric type>
+--     of the view’s @format@ and the @Sampled@ @Type@ operand of the
+--     @OpTypeImage@ /must/ match
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-OpImageWrite-08795# If a
+--     'Vulkan.Core10.Handles.ImageView' created with a format other than
+--     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM' 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-vkCmdDispatchTileQCOM-OpImageWrite-08796# If a
+--     'Vulkan.Core10.Handles.ImageView' created with the format
+--     'Vulkan.Core10.Enums.Format.FORMAT_A8_UNORM' is accessed using
+--     @OpImageWrite@ as a result of this command, then the @Type@ of the
+--     @Texel@ operand of that instruction /must/ have four components
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-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-vkCmdDispatchTileQCOM-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-vkCmdDispatchTileQCOM-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-vkCmdDispatchTileQCOM-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-vkCmdDispatchTileQCOM-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-vkCmdDispatchTileQCOM-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-vkCmdDispatchTileQCOM-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-vkCmdDispatchTileQCOM-OpImageSampleWeightedQCOM-06971# If
+--     @OpImageSampleWeightedQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-OpImageSampleWeightedQCOM-06972# If
+--     @OpImageSampleWeightedQCOM@ uses a 'Vulkan.Core10.Handles.ImageView'
+--     as a sample weight image 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-OpImageBoxFilterQCOM-06973# If
+--     @OpImageBoxFilterQCOM@ 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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-OpImageBlockMatchSSDQCOM-06974# If
+--     @OpImageBlockMatchSSDQCOM@ is used to read from an
+--     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
+--     or
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_SXD_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-OpImageBlockMatchSADQCOM-12420# If
+--     @OpImageBlockMatchSADQCOM@ is used to read from an
+--     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
+--     or
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_SXD_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-OpImageBlockMatchSADQCOM-06976# If
+--     @OpImageBlockMatchSADQCOM@ or OpImageBlockMatchSSDQCOM is used to
+--     read from a reference image as result of this command, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-blockMatchExtendedClampToEdge blockMatchExtendedClampToEdge>
+--     feature is not enabled or the /input/ sampler was not created with
+--     both @addressModeU@ and @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--     then the specified reference coordinates /must/ not fail
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-OpImageSampleWeightedQCOM-06977# If
+--     @OpImageSampleWeightedQCOM@, @OpImageBoxFilterQCOM@,
+--     @OpImageBlockMatchWindowSSDQCOM@, @OpImageBlockMatchWindowSADQCOM@,
+--     @OpImageBlockMatchGatherSSDQCOM@, @OpImageBlockMatchGatherSADQCOM@,
+--     @OpImageBlockMatchSSDQCOM@, or @OpImageBlockMatchSADQCOM@ uses a
+--     'Vulkan.Core10.Handles.Sampler' as a result of this command, then
+--     the sampler /must/ have been created with
+--     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-OpImageSampleWeightedQCOM-06978# If any
+--     command other than @OpImageSampleWeightedQCOM@,
+--     @OpImageBoxFilterQCOM@, @OpImageBlockMatchWindowSSDQCOM@,
+--     @OpImageBlockMatchWindowSADQCOM@, @OpImageBlockMatchGatherSSDQCOM@,
+--     @OpImageBlockMatchGatherSADQCOM@, @OpImageBlockMatchSSDQCOM@, or
+--     @OpImageBlockMatchSADQCOM@ uses a 'Vulkan.Core10.Handles.Sampler' as
+--     a result of this command, then the sampler /must/ not have been
+--     created with
+--     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-OpImageBlockMatchWindow-09215# If a
+--     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     instruction is used to read from an
+--     '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.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM'
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-OpImageBlockMatchWindow-09216# If a
+--     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     instruction is used to read from an
+--     'Vulkan.Core10.Handles.ImageView' as a result of this command, then
+--     the image view’s format /must/ be a single-component format
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-OpImageBlockMatchWindow-09217# If a
+--     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     read from a reference image as result of this command, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-blockMatchExtendedClampToEdge blockMatchExtendedClampToEdge>
+--     feature is not enabled or the /input/ sampler was not created with
+--     both @addressModeU@ and @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--     then the specified reference coordinates /must/ not fail
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-validation integer texel coordinate validation>
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-OpImageBlockMatchWindow-12421# If a
+--     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     instruction uses a 'Vulkan.Core10.Handles.Sampler' as a result of
+--     this command, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-blockMatchExtendedClampToEdge blockMatchExtendedClampToEdge>
+--     is not enabled, the /input/ sampler /must/ not have been created
+--     with either @addressModeU@ or @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-addressModeU-12422# If a
+--     @OpImageBlockMatchWindow*QCOM@ or @OpImageBlockMatchGather*QCOM@
+--     instruction uses a 'Vulkan.Core10.Handles.Sampler' as a result of
+--     this command, and the /input/ sampler was created with either
+--     @addressModeU@ or @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE',
+--     then the sampler /must/ have been created with both @addressModeU@
+--     and @addressModeV@ equal to
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-None-07288# Any shader invocation
+--     executed by this command /must/
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-termination terminate>
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-None-09600# If a descriptor with type
+--     equal to any of
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',
+--     or
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'
+--     is accessed as a result of this command, all image subresources
+--     identified by that descriptor /must/ be in the image layout
+--     identified when the descriptor was written
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-micromap-11636# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command through an
+--     @OpRayQueryProceedKHR@ operation , the @VK_EXT_opacity_micromap@
+--     extension is not enabled, and the acceleration structure is built
+--     using geometry with a
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.AccelerationStructureTrianglesOpacityMicromapKHR'
+--     structure included in its @pNext@ chain, the shader /must/ have
+--     specified a @OpacityMicromapIdKHR@ execution mode with its
+--     specialization constant operand equal to
+--     'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-micromap-11637# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command and the
+--     acceleration structure was constructed through deserialization, all
+--     micromap arrays referenced by the acceleration structure that were
+--     not replaced by an acceleration structure update command /must/ have
+--     been deserialized using the serialized data of the corresponding
+--     micromaps used to originally build the acceleration structure prior
+--     to the execution of this command on the device
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-micromap-11638# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command and the
+--     acceleration structure is built using geometry with an @indexBuffer@
+--     containing both
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.OpacityMicromapSpecialIndexKHR'
+--     values and indices into an associated micromap array, any
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command /must/ not have been created with @flags@ that
+--     includes
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_KHR'
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-micromap-11639# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     descriptor is accessed as a result of this command and the
+--     acceleration structure is built using geometry with an @indexBuffer@
+--     containing both
+--     'Vulkan.Extensions.VK_KHR_opacity_micromap.OpacityMicromapSpecialIndexKHR'
+--     values and indices into an associated micromap array, any
+--     'Vulkan.Extensions.Handles.ShaderEXT' that accessed the descriptor
+--     /must/ not have been created with @flags@ that includes
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_EXT'
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-commandBuffer-10746# The
+--     'Vulkan.Core10.Handles.DeviceMemory' object allocated from a
+--     'Vulkan.Core10.DeviceInitialization.MemoryHeap' with the
+--     'Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_TILE_MEMORY_BIT_QCOM'
+--     property that is bound to a resource accessed as a result of this
+--     command /must/ be the active
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-bind-tile-memory bound tile memory object>
+--     in @commandBuffer@
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-None-10678# If this command is recorded
+--     inside a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-tile-shading tile shading render pass>
+--     instance, the stages corresponding to the pipeline bind point used
+--     by this command /must/ only include
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT',
+--     and\/or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT'
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-None-10679# If this command is recorded
+--     where
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model>
+--     is enabled, there /must/ be no access to any image while the image
+--     was be transitioned to the
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
+--     layout
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-pDescription-09900# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the
+--     underlying 'Vulkan.Extensions.Handles.TensorARM' object /must/ have
+--     been created with the
+--     'Vulkan.Extensions.VK_ARM_tensors.TENSOR_USAGE_SHADER_BIT_ARM' usage
+--     flag set
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-dimensionCount-09905# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the @Rank@
+--     of the @OpTypeTensorARM@ of the tensor resource variable /must/ be
+--     equal to the @dimensionCount@ provided via
+--     'Vulkan.Extensions.VK_ARM_tensors.TensorCreateInfoARM'::@pDescription@
+--     when creating the underlying 'Vulkan.Extensions.Handles.TensorARM'
+--     object
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-OpTypeTensorARM-09906# If a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_TENSOR_ARM'
+--     descriptor is accessed as a result of this command, then the element
+--     type of the @OpTypeTensorARM@ of the tensor resource variable /must/
+--     be
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-tensor-formats compatible>
+--     with the 'Vulkan.Core10.Enums.Format.Format' of the
+--     'Vulkan.Extensions.Handles.TensorViewARM' used for the access
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-None-11297# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses a @OpTypeStruct@ decorated with @Block@ or
+--     @BufferBlock@ using that mapping, the calculated offset for the
+--     resource heap /must/ be a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-bufferDescriptorAlignment bufferDescriptorAlignment>
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-None-11298# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses an @OpTypeImage@ or @OpTypeSampledImage@ using
+--     that mapping, the calculated offset for the resource heap /must/ be
+--     a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-imageDescriptorAlignment imageDescriptorAlignment>
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-None-11299# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses an @OpTypeSampler@ or @OpTypeSampledImage@
+--     using that mapping, the calculated offset for the sampler heap
+--     /must/ be a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-samplerDescriptorAlignment samplerDescriptorAlignment>
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-None-11397# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses an @OpTypeTensorARM@ using that mapping, the
+--     calculated offset for the resource heap /must/ be a multiple of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-tensorDescriptorAlignment tensorDescriptorAlignment>
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-None-11300# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a
+--     multiple of 4
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-None-11301# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' backed by physical
+--     memory at every offset specified by each mapping
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-None-11302# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-None-11304# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a
+--     multiple of 8
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-None-11305# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address at the expected location in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress' backed by physical
+--     memory at every offset specified by each mapping
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-None-11306# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the value of
+--     the address pointed to by the address in push data /must/ be a valid
+--     'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-None-11308# For each
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps descriptor heap>
+--     that is statically used by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding a bound shader>,
+--     either directly or via a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>,
+--     a valid descriptor heap /must/ be bound
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-None-11309# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     was created as a 'Vulkan.Extensions.Handles.ShaderEXT' with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag or as part of a pipeline with the
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag, execution of this command /must/ not result in any descriptor
+--     read accessing data outside of the user range of the respective heap
+--     bound by @vkCmdBind*HeapEXT@ commands
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-None-11372# If any stage of the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command accesses a uniform buffer or uniform
+--     texel buffer through a descriptor in the bound resource heap, that
+--     stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @uniformBuffers@, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /must/ not access values outside
+--     of the range of the descriptor specified via
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+--     when the descriptor was written
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-None-11373# If any stage of the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command accesses a storage buffer or storage
+--     texel buffer through a descriptor in the bound resource heap, that
+--     stage was created without enabling either
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS'
+--     or
+--     'Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior.PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2'
+--     for @storageBuffers@, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, that stage /must/ not access values outside
+--     of the range of the descriptor specified by
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+--     when the descriptor was written
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-None-11374# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+--     feature is not enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     feature is not enabled, and any
+--     'Vulkan.Extensions.Handles.ShaderEXT' bound to a stage corresponding
+--     to the pipeline bind point used by this command accesses a uniform
+--     buffer, uniform texel buffer, storage buffer, or storage texel
+--     buffer, that shader /must/ not access values outside of the range of
+--     the buffer as specified by
+--     'Vulkan.Extensions.VK_KHR_device_address_commands.DeviceAddressRangeKHR'
+--     when the descriptor was written
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-pBindInfo-11375# If any
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     uses an embedded sampler via a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>,
+--     the value of @pBindInfo->reservedRangeSize@ set for
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.cmdBindSamplerHeapEXT'
+--     /must/ be greater than or equal to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minSamplerHeapReservedRangeWithEmbedded minSamplerHeapReservedRangeWithEmbedded>
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-None-11376# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     was created as a 'Vulkan.Extensions.Handles.ShaderEXT' with the
+--     'Vulkan.Extensions.VK_EXT_shader_object.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag or as part of a pipeline with the
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT'
+--     flag, and that shader statically uses a push constant value, that
+--     value /must/ have been set by
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.cmdPushDataEXT'
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-None-11398# If a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-binding bound shader>
+--     was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_DATA_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_DATA_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_RESOURCE_HEAP_DATA_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the access
+--     /must/ not be
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-execution-memory-access-bounds out of bounds>
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-None-11437# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a resource using that mapping, the buffer from
+--     which the address in push data was queried /must/ have been created
+--     with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-None-11438# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a uniform buffer using that mapping, the
+--     address that the uniform buffer is mapped to /must/ have been
+--     queried from a buffer created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-None-11441# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a uniform buffer using that mapping, the
+--     address that the uniform buffer is mapped to /must/ be aligned to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minUniformBufferOffsetAlignment minUniformBufferOffsetAlignment>
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-None-11439# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a storage buffer using that mapping, the
+--     address that the storage buffer is mapped to /must/ have been
+--     queried from a buffer created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_STORAGE_BUFFER_BIT'
+--     usage flag set
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-None-11442# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses a storage buffer using that mapping, the
+--     address that the storage buffer is mapped to /must/ be aligned to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minStorageBufferOffsetAlignment minStorageBufferOffsetAlignment>
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-None-11485# If a pipeline is bound to
+--     the pipeline bind point used by this command, or shader is bound to
+--     a shader stage used by this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     and a shader accesses an acceleration structure using that mapping,
+--     the address that the acceleration structure is mapped to /must/ be
+--     an acceleration structure address retrieved from a
+--     'Vulkan.Extensions.Handles.AccelerationStructureKHR' object via
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.getAccelerationStructureDeviceAddressKHR'
+--     or handle retrieved from a
+--     'Vulkan.Extensions.Handles.AccelerationStructureNV' object via
+--     'Vulkan.Extensions.VK_NV_ray_tracing.getAccelerationStructureHandleNV'
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-index-11450# If a shader uses a sampler
+--     descriptor to sample an image as a result of this command, and that
+--     sampler descriptor uses a custom border color with an index defined
+--     by
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.SamplerCustomBorderColorIndexCreateInfoEXT',
+--     the value of
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.SamplerCustomBorderColorIndexCreateInfoEXT'::@index@
+--     /must/ have been registered before this command was recorded, and
+--     still be registered during the sampling operation, with an
+--     identically defined color
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-protectedNoFault-11455# If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, a pipeline is bound to the pipeline bind point
+--     used by this command, or a shader is bound to a shader stage used by
+--     this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT',
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT',
+--     the address that the resource is mapped to /must/ have been queried
+--     from a buffer created without the
+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT'
+--     create flag set
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-protectedNoFault-11456# If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, a pipeline is bound to the pipeline bind point
+--     used by this command, or a shader is bound to a shader stage used by
+--     this command, and it was created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorheaps-bindings descriptor mapping>
+--     using
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_heap.DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT',
+--     the address of the indirect memory /must/ have been queried from a
+--     buffer created without the
+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT'
+--     create flag set
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-None-10672# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model>
+--     is not enabled, this command /must/ be called outside of a render
+--     pass instance
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-aspectMask-10673# If this command is
+--     recorded where
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model>
+--     is enabled, and if the 'Vulkan.Core10.Handles.Pipeline' object bound
+--     to the pipeline bind point used by this command writes to a variable
+--     of storage class @Storage@ @Class@ @TileAttachmentQCOM@, the
+--     corresponding 'Vulkan.Core10.Handles.ImageView' using /must/ not
+--     have been created with an @aspectMask@ that contains
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' or
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-None-10674# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model>
+--     is enabled, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tileShadingPerTileDispatch tileShadingPerTileDispatch>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-None-10675# Memory backing image
+--     subresources used as
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-tile-shading-attachment-access tile attachments>
+--     in the current render pass /must/ not be written in any way other
+--     than as a tile attachment by this command
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-None-10676# If any recorded command in
+--     the current subpass will write to an image subresource as a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-tile-shading-attachment-access tile attachment>,
+--     this command /must/ not read from the memory backing that image
+--     subresource in any other way than as a tile attachment
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-None-10743# If there is no bound compute
+--     pipeline, a valid 'Vulkan.Extensions.Handles.ShaderEXT' /must/ be
+--     bound to the
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT'
+--     stage
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-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-vkCmdDispatchTileQCOM-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-vkCmdDispatchTileQCOM-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-vkCmdDispatchTileQCOM-None-10668# When this command is
+--     recorded
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model>
+--     /must/ be enabled
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-None-10669# The
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-tileShadingDispatchTile tileShadingDispatchTile>
+--     /must/ enabled
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-commandBuffer-parameter# @commandBuffer@
+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-pDispatchTileInfo-parameter#
+--     @pDispatchTileInfo@ /must/ be a valid pointer to a valid
+--     'DispatchTileInfoQCOM' structure
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-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-vkCmdDispatchTileQCOM-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT' operations
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-renderpass# This command /must/ only be
+--     called inside of a render pass instance
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-suspended# This command /must/ not be
+--     called between suspended render pass instances
+--
+-- -   #VUID-vkCmdDispatchTileQCOM-videocoding# This command /must/ only be
+--     called outside of a video coding scope
+--
+-- == Host Synchronization
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Inside                                                                                                                 | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdDispatchTileQCOM is affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_tile_shading VK_QCOM_tile_shading>,
+-- 'Vulkan.Core10.Handles.CommandBuffer', 'DispatchTileInfoQCOM'
+cmdDispatchTileQCOM :: forall io
+                     . (MonadIO io)
+                    => -- | @commandBuffer@ is the command buffer into which the command will be
+                       -- recorded.
+                       CommandBuffer
+                    -> -- | @pDispatchTileInfo@ is a pointer to a 'DispatchTileInfoQCOM' structure
+                       -- containing information about the area-based dispatch.
+                       DispatchTileInfoQCOM
+                    -> io ()
+cmdDispatchTileQCOM commandBuffer dispatchTileInfo = liftIO . evalContT $ do
+  let vkCmdDispatchTileQCOMPtr = pVkCmdDispatchTileQCOM (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdDispatchTileQCOMPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdDispatchTileQCOM is null" Nothing Nothing
+  let vkCmdDispatchTileQCOM' = mkVkCmdDispatchTileQCOM vkCmdDispatchTileQCOMPtr
+  pDispatchTileInfo <- ContT $ withCStruct (dispatchTileInfo)
+  lift $ traceAroundEvent "vkCmdDispatchTileQCOM" (vkCmdDispatchTileQCOM'
+                                                     (commandBufferHandle (commandBuffer))
+                                                     pDispatchTileInfo)
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdBeginPerTileExecutionQCOM
+  :: FunPtr (Ptr CommandBuffer_T -> Ptr PerTileBeginInfoQCOM -> IO ()) -> Ptr CommandBuffer_T -> Ptr PerTileBeginInfoQCOM -> IO ()
+
+-- | vkCmdBeginPerTileExecutionQCOM - Begin per-tile execution mode
+--
+-- = Description
+--
+-- When /per-tile execution model/ is enabled, recorded @vkCmdDraw*@ or
+-- @vkCmdDispatch*@ commands are invoked per tile. That is, the recorded
+-- draw or dispatch is invoked exactly once for each /covered tile/. The
+-- set of /covered tiles/ for a given render pass instance consists of the
+-- set of render pass tiles, which /can/ be queried with
+-- @VK_QCOM_tile_properties@, that are completely or partially covered by
+-- the @renderArea@ for the render pass instance. The draw or dispatch
+-- commands /may/ be invoked for uncovered tiles.
+--
+-- Each per-tile command invocation is associated with a single tile, the
+-- /active tile/. These per-tile invocations are not specified to execute
+-- in any particular order, but the size and offset of the /active tile/ is
+-- available via shader built-ins.
+--
+-- When /per-tile execution model/ is enabled, the following restrictions
+-- apply:
+--
+-- -   Transform feedback commands such as
+--     'Vulkan.Extensions.VK_EXT_transform_feedback.cmdBeginTransformFeedbackEXT',
+--     'Vulkan.Extensions.VK_EXT_transform_feedback.cmdEndTransformFeedbackEXT',
+--     'Vulkan.Extensions.VK_EXT_transform_feedback.cmdBeginQueryIndexedEXT',
+--     and
+--     'Vulkan.Extensions.VK_EXT_transform_feedback.cmdEndQueryIndexedEXT',
+--     /must/ not be recorded.
+--
+-- -   Query commands such as
+--     'Vulkan.Core10.CommandBufferBuilding.cmdWriteTimestamp',
+--     'Vulkan.Extensions.VK_EXT_debug_marker.cmdDebugMarkerBeginEXT',
+--     'Vulkan.Extensions.VK_EXT_debug_marker.cmdDebugMarkerEndEXT',
+--     'Vulkan.Extensions.VK_EXT_debug_marker.cmdDebugMarkerInsertEXT',
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBeginQuery', and
+--     'Vulkan.Core10.CommandBufferBuilding.cmdEndQuery', /must/ not be
+--     recorded.
+--
+-- -   Event commands such as
+--     'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.cmdWaitEvents2'
+--     and 'Vulkan.Core10.CommandBufferBuilding.cmdWaitEvents' /must/ not
+--     be recorded.
+--
+-- -   Render pass clears like
+--     'Vulkan.Core10.CommandBufferBuilding.cmdClearAttachments' /must/ not
+--     be recorded
+--
+-- -   Access of an attachment with layout
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
+--     as provided by @VK_EXT_attachment_feedback_loop_layout@ is
+--     disallowed
+--
+-- -   Any commands that would cause a invocations of one of the following
+--     shader stages are not allowed
+--
+--     -   tessellation
+--
+--     -   geometry
+--
+--     -   ray tracing
+--
+--     -   mesh shading
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdBeginPerTileExecutionQCOM-None-10664# The current render
+--     pass /must/ be a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-tile-shading tile shading render pass>
+--
+-- -   #VUID-vkCmdBeginPerTileExecutionQCOM-None-10665# The
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-tileShadingPerTileDispatch tileShadingPerTileDispatch>
+--     or
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-tileShadingPerTileDraw tileShadingPerTileDraw>
+--     feature must be enabled
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdBeginPerTileExecutionQCOM-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdBeginPerTileExecutionQCOM-pPerTileBeginInfo-parameter#
+--     @pPerTileBeginInfo@ /must/ be a valid pointer to a valid
+--     'PerTileBeginInfoQCOM' structure
+--
+-- -   #VUID-vkCmdBeginPerTileExecutionQCOM-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-vkCmdBeginPerTileExecutionQCOM-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', or
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
+--
+-- -   #VUID-vkCmdBeginPerTileExecutionQCOM-renderpass# This command /must/
+--     only be called inside of a render pass instance
+--
+-- -   #VUID-vkCmdBeginPerTileExecutionQCOM-videocoding# This command
+--     /must/ only be called outside of a video coding scope
+--
+-- == Host Synchronization
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Inside                                                                                                                 | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | State                                                                                                                                  |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | VK_QUEUE_GRAPHICS_BIT                                                                                                 |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdBeginPerTileExecutionQCOM is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_tile_shading VK_QCOM_tile_shading>,
+-- 'Vulkan.Core10.Handles.CommandBuffer', 'PerTileBeginInfoQCOM'
+cmdBeginPerTileExecutionQCOM :: forall io
+                              . (MonadIO io)
+                             => -- | @commandBuffer@ is the command buffer in which to record the command.
+                                CommandBuffer
+                             -> -- | @pPerTileBeginInfo@ is a pointer to a 'PerTileBeginInfoQCOM' structure
+                                -- containing information about how the /per-tile execution model/ is
+                                -- started.
+                                PerTileBeginInfoQCOM
+                             -> io ()
+cmdBeginPerTileExecutionQCOM commandBuffer
+                               perTileBeginInfo = liftIO . evalContT $ do
+  let vkCmdBeginPerTileExecutionQCOMPtr = pVkCmdBeginPerTileExecutionQCOM (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdBeginPerTileExecutionQCOMPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdBeginPerTileExecutionQCOM is null" Nothing Nothing
+  let vkCmdBeginPerTileExecutionQCOM' = mkVkCmdBeginPerTileExecutionQCOM vkCmdBeginPerTileExecutionQCOMPtr
+  pPerTileBeginInfo <- ContT $ withCStruct (perTileBeginInfo)
+  lift $ traceAroundEvent "vkCmdBeginPerTileExecutionQCOM" (vkCmdBeginPerTileExecutionQCOM'
+                                                              (commandBufferHandle (commandBuffer))
+                                                              pPerTileBeginInfo)
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdEndPerTileExecutionQCOM
+  :: FunPtr (Ptr CommandBuffer_T -> Ptr PerTileEndInfoQCOM -> IO ()) -> Ptr CommandBuffer_T -> Ptr PerTileEndInfoQCOM -> IO ()
+
+-- | vkCmdEndPerTileExecutionQCOM - End per-tile execution mode
+--
+-- = Description
+--
+-- This command disables /per-tile execution model/.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdEndPerTileExecutionQCOM-None-10666# The /per-tile
+--     execution model/ /must/ have been enabled in the current render pass
+--
+-- -   #VUID-vkCmdEndPerTileExecutionQCOM-None-10667# The current render
+--     pass /must/ be a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-tile-shading tile shading render pass>
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdEndPerTileExecutionQCOM-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdEndPerTileExecutionQCOM-pPerTileEndInfo-parameter#
+--     @pPerTileEndInfo@ /must/ be a valid pointer to a valid
+--     'PerTileEndInfoQCOM' structure
+--
+-- -   #VUID-vkCmdEndPerTileExecutionQCOM-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-vkCmdEndPerTileExecutionQCOM-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', or
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
+--
+-- -   #VUID-vkCmdEndPerTileExecutionQCOM-renderpass# This command /must/
+--     only be called inside of a render pass instance
+--
+-- -   #VUID-vkCmdEndPerTileExecutionQCOM-videocoding# This command /must/
+--     only be called outside of a video coding scope
+--
+-- == Host Synchronization
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Inside                                                                                                                 | Outside                                                                                                                     | VK_QUEUE_COMPUTE_BIT                                                                                                  | State                                                                                                                                  |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | VK_QUEUE_GRAPHICS_BIT                                                                                                 |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- == Conditional Rendering
+--
+-- vkCmdEndPerTileExecutionQCOM is not affected by
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_tile_shading VK_QCOM_tile_shading>,
+-- 'Vulkan.Core10.Handles.CommandBuffer', 'PerTileEndInfoQCOM'
+cmdEndPerTileExecutionQCOM :: forall io
+                            . (MonadIO io)
+                           => -- | @commandBuffer@ is the command buffer in which to record the command.
+                              CommandBuffer
+                           -> -- | @pPerTileEndInfo@ is a pointer to a 'PerTileEndInfoQCOM' structure
+                              -- containing information about how the /per-tile execution model/ is
+                              -- ended.
+                              PerTileEndInfoQCOM
+                           -> io ()
+cmdEndPerTileExecutionQCOM commandBuffer
+                             perTileEndInfo = liftIO . evalContT $ do
+  let vkCmdEndPerTileExecutionQCOMPtr = pVkCmdEndPerTileExecutionQCOM (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdEndPerTileExecutionQCOMPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdEndPerTileExecutionQCOM is null" Nothing Nothing
+  let vkCmdEndPerTileExecutionQCOM' = mkVkCmdEndPerTileExecutionQCOM vkCmdEndPerTileExecutionQCOMPtr
+  pPerTileEndInfo <- ContT $ withCStruct (perTileEndInfo)
+  lift $ traceAroundEvent "vkCmdEndPerTileExecutionQCOM" (vkCmdEndPerTileExecutionQCOM'
+                                                            (commandBufferHandle (commandBuffer))
+                                                            pPerTileEndInfo)
+  pure $ ()
+
+
+-- | VkPhysicalDeviceTileShadingFeaturesQCOM - Structure describing tile
+-- shading features that can be supported by an implementation
+--
+-- = Members
+--
+-- This structure describes the following features:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceTileShadingFeaturesQCOM' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceTileShadingFeaturesQCOM', it /must/ add an instance of
+-- the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_tile_shading VK_QCOM_tile_shading>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceTileShadingFeaturesQCOM = PhysicalDeviceTileShadingFeaturesQCOM
+  { -- | #features-tileShading# @tileShading@ indicates that the implementation
+    -- supports
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-tile-shading tile shading render pass>
+    -- instances.
+    tileShading :: Bool
+  , -- | #features-tileShadingFragmentStage# @tileShadingFragmentStage@ indicates
+    -- that the implementation supports tile shading in the fragment stage.
+    tileShadingFragmentStage :: Bool
+  , -- | #features-tileShadingColorAttachments# @tileShadingColorAttachments@
+    -- indicates that the implementation supports access to color attachments
+    -- in a tile shader.
+    tileShadingColorAttachments :: Bool
+  , -- | #features-tileShadingDepthAttachments# @tileShadingDepthAttachments@
+    -- indicates that the implementation supports access to depth aspect of
+    -- depth stencil attachments.
+    tileShadingDepthAttachments :: Bool
+  , -- | #features-tileShadingStencilAttachments# @tileShadingStencilAttachments@
+    -- indicates that the implementation supports access to stencil aspect of
+    -- depth stencil attachments.
+    tileShadingStencilAttachments :: Bool
+  , -- | #features-tileShadingInputAttachments# @tileShadingInputAttachments@
+    -- indicates that the implementation supports access to input attachments.
+    tileShadingInputAttachments :: Bool
+  , -- | #features-tileShadingSampledAttachments# @tileShadingSampledAttachments@
+    -- indicates that the implementation supports access to sampling of tile
+    -- attachments.
+    tileShadingSampledAttachments :: Bool
+  , -- | #features-tileShadingPerTileDraw# @tileShadingPerTileDraw@ indicates
+    -- that the implementation supports the recording of vkCmdDraw* commands
+    -- when
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model>
+    -- is enabled.
+    tileShadingPerTileDraw :: Bool
+  , -- | #features-tileShadingPerTileDispatch# @tileShadingPerTileDispatch@
+    -- indicates that the implementation supports the recording of
+    -- 'Vulkan.Core10.CommandBufferBuilding.cmdDispatch'* commands within those
+    -- regions of a command buffer where the
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model>
+    -- is enabled.
+    tileShadingPerTileDispatch :: Bool
+  , -- | #features-tileShadingDispatchTile# @tileShadingDispatchTile@ indicates
+    -- that the implementation supports the recording of 'cmdDispatchTileQCOM'
+    -- commands.
+    tileShadingDispatchTile :: Bool
+  , -- | #features-tileShadingApron# @tileShadingApron@ indicates that the
+    -- implementation supports
+    -- 'RenderPassTileShadingCreateInfoQCOM'::@apronSize@ value other than
+    -- (0,0). See
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-tile-shading-aprons Tiling Aprons>
+    -- for more information.
+    tileShadingApron :: Bool
+  , -- | #features-tileShadingAnisotropicApron# @tileShadingAnisotropicApron@
+    -- indicates that the implementation supports
+    -- 'RenderPassTileShadingCreateInfoQCOM'::@apronSize@ set to a value where
+    -- @apronSize.width@ differs from @apronSize.height@.
+    tileShadingAnisotropicApron :: Bool
+  , -- | #features-tileShadingAtomicOps# @tileShadingAtomicOps@ indicates that
+    -- the implementation supports atomic operations on
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-tile-attachment tile attachment variables>.
+    tileShadingAtomicOps :: Bool
+  , -- | #features-tileShadingImageProcessing# @tileShadingImageProcessing@
+    -- indicates that the implementation supports
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#textures-weightimage image processing operations>
+    -- with tile attachments.
+    tileShadingImageProcessing :: Bool
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceTileShadingFeaturesQCOM)
+#endif
+deriving instance Show PhysicalDeviceTileShadingFeaturesQCOM
+
+instance ToCStruct PhysicalDeviceTileShadingFeaturesQCOM where
+  withCStruct x f = allocaBytes 72 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceTileShadingFeaturesQCOM{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_SHADING_FEATURES_QCOM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (tileShading))
+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (tileShadingFragmentStage))
+    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (tileShadingColorAttachments))
+    poke ((p `plusPtr` 28 :: Ptr Bool32)) (boolToBool32 (tileShadingDepthAttachments))
+    poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (tileShadingStencilAttachments))
+    poke ((p `plusPtr` 36 :: Ptr Bool32)) (boolToBool32 (tileShadingInputAttachments))
+    poke ((p `plusPtr` 40 :: Ptr Bool32)) (boolToBool32 (tileShadingSampledAttachments))
+    poke ((p `plusPtr` 44 :: Ptr Bool32)) (boolToBool32 (tileShadingPerTileDraw))
+    poke ((p `plusPtr` 48 :: Ptr Bool32)) (boolToBool32 (tileShadingPerTileDispatch))
+    poke ((p `plusPtr` 52 :: Ptr Bool32)) (boolToBool32 (tileShadingDispatchTile))
+    poke ((p `plusPtr` 56 :: Ptr Bool32)) (boolToBool32 (tileShadingApron))
+    poke ((p `plusPtr` 60 :: Ptr Bool32)) (boolToBool32 (tileShadingAnisotropicApron))
+    poke ((p `plusPtr` 64 :: Ptr Bool32)) (boolToBool32 (tileShadingAtomicOps))
+    poke ((p `plusPtr` 68 :: Ptr Bool32)) (boolToBool32 (tileShadingImageProcessing))
+    f
+  cStructSize = 72
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_SHADING_FEATURES_QCOM)
+    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))
+    f
+
+instance FromCStruct PhysicalDeviceTileShadingFeaturesQCOM where
+  peekCStruct p = do
+    tileShading <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    tileShadingFragmentStage <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
+    tileShadingColorAttachments <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))
+    tileShadingDepthAttachments <- peek @Bool32 ((p `plusPtr` 28 :: Ptr Bool32))
+    tileShadingStencilAttachments <- peek @Bool32 ((p `plusPtr` 32 :: Ptr Bool32))
+    tileShadingInputAttachments <- peek @Bool32 ((p `plusPtr` 36 :: Ptr Bool32))
+    tileShadingSampledAttachments <- peek @Bool32 ((p `plusPtr` 40 :: Ptr Bool32))
+    tileShadingPerTileDraw <- peek @Bool32 ((p `plusPtr` 44 :: Ptr Bool32))
+    tileShadingPerTileDispatch <- peek @Bool32 ((p `plusPtr` 48 :: Ptr Bool32))
+    tileShadingDispatchTile <- peek @Bool32 ((p `plusPtr` 52 :: Ptr Bool32))
+    tileShadingApron <- peek @Bool32 ((p `plusPtr` 56 :: Ptr Bool32))
+    tileShadingAnisotropicApron <- peek @Bool32 ((p `plusPtr` 60 :: Ptr Bool32))
+    tileShadingAtomicOps <- peek @Bool32 ((p `plusPtr` 64 :: Ptr Bool32))
+    tileShadingImageProcessing <- peek @Bool32 ((p `plusPtr` 68 :: Ptr Bool32))
+    pure $ PhysicalDeviceTileShadingFeaturesQCOM
+             (bool32ToBool tileShading)
+             (bool32ToBool tileShadingFragmentStage)
+             (bool32ToBool tileShadingColorAttachments)
+             (bool32ToBool tileShadingDepthAttachments)
+             (bool32ToBool tileShadingStencilAttachments)
+             (bool32ToBool tileShadingInputAttachments)
+             (bool32ToBool tileShadingSampledAttachments)
+             (bool32ToBool tileShadingPerTileDraw)
+             (bool32ToBool tileShadingPerTileDispatch)
+             (bool32ToBool tileShadingDispatchTile)
+             (bool32ToBool tileShadingApron)
+             (bool32ToBool tileShadingAnisotropicApron)
+             (bool32ToBool tileShadingAtomicOps)
+             (bool32ToBool tileShadingImageProcessing)
+
+instance Storable PhysicalDeviceTileShadingFeaturesQCOM where
+  sizeOf ~_ = 72
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceTileShadingFeaturesQCOM where
+  zero = PhysicalDeviceTileShadingFeaturesQCOM
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkPhysicalDeviceTileShadingPropertiesQCOM - Structure describing
+-- properties supported by VK_QCOM_tile_shading
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceTileShadingPropertiesQCOM' 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.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_tile_shading VK_QCOM_tile_shading>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Extent2D',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceTileShadingPropertiesQCOM = PhysicalDeviceTileShadingPropertiesQCOM
+  { -- | #limits-maxApronSize# @maxApronSize@ is the maximum value supported
+    -- which can be specified for
+    -- 'RenderPassTileShadingCreateInfoQCOM'::@apronSize@ or @width@ and
+    -- @height@.
+    maxApronSize :: Word32
+  , -- | #limits-preferNonCoherent# @preferNonCoherent@ indicates that the
+    -- implementation prefers tile attachments declared in shaders with the
+    -- @NonCoherentTileAttachmentReadQCOM@ decoration. Use of the decoration
+    -- /may/ offer performance or power advantages.
+    preferNonCoherent :: Bool
+  , -- | #limits-tileGranularity# @tileGranularity@ provides a guarantee on the
+    -- granularity of each tile. Each tile will have dimensions that are a
+    -- multiple of this granularity in width and height.
+    tileGranularity :: Extent2D
+  , -- | #limits-maxTileShadingRate# @maxTileShadingRate@ is the maximum value of
+    -- @TileShadingRateQCOM@ and /must/ be a power of 2.
+    maxTileShadingRate :: Extent2D
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceTileShadingPropertiesQCOM)
+#endif
+deriving instance Show PhysicalDeviceTileShadingPropertiesQCOM
+
+instance ToCStruct PhysicalDeviceTileShadingPropertiesQCOM where
+  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceTileShadingPropertiesQCOM{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_SHADING_PROPERTIES_QCOM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (maxApronSize)
+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (preferNonCoherent))
+    poke ((p `plusPtr` 24 :: Ptr Extent2D)) (tileGranularity)
+    poke ((p `plusPtr` 32 :: Ptr Extent2D)) (maxTileShadingRate)
+    f
+  cStructSize = 40
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_SHADING_PROPERTIES_QCOM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 24 :: Ptr Extent2D)) (zero)
+    poke ((p `plusPtr` 32 :: Ptr Extent2D)) (zero)
+    f
+
+instance FromCStruct PhysicalDeviceTileShadingPropertiesQCOM where
+  peekCStruct p = do
+    maxApronSize <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    preferNonCoherent <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
+    tileGranularity <- peekCStruct @Extent2D ((p `plusPtr` 24 :: Ptr Extent2D))
+    maxTileShadingRate <- peekCStruct @Extent2D ((p `plusPtr` 32 :: Ptr Extent2D))
+    pure $ PhysicalDeviceTileShadingPropertiesQCOM
+             maxApronSize
+             (bool32ToBool preferNonCoherent)
+             tileGranularity
+             maxTileShadingRate
+
+instance Storable PhysicalDeviceTileShadingPropertiesQCOM where
+  sizeOf ~_ = 40
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceTileShadingPropertiesQCOM where
+  zero = PhysicalDeviceTileShadingPropertiesQCOM
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkRenderPassTileShadingCreateInfoQCOM - Structure specifying, tile
+-- shading information for a render pass object.
+--
+-- = Description
+--
+-- If this structure is not present, the render pass will have @flags@ set
+-- to @0@ and @tileApronSize@ is set to @(0,0)@.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkRenderPassTileShadingCreateInfoQCOM-tileShading-10658# If
+--     the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-tileShading tileShading>
+--     feature is not enabled, 'TILE_SHADING_RENDER_PASS_ENABLE_BIT_QCOM'
+--     /must/ not be included in @flags@
+--
+-- -   #VUID-VkRenderPassTileShadingCreateInfoQCOM-flags-10659# If
+--     'TILE_SHADING_RENDER_PASS_ENABLE_BIT_QCOM' is not included in
+--     @flags@ or the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-tileShadingApron tileShadingApron>
+--     feature is not enabled, @tileApronSize@ /must/ be @(0,0)@
+--
+-- -   #VUID-VkRenderPassTileShadingCreateInfoQCOM-flags-10660# If
+--     'TILE_SHADING_RENDER_PASS_ENABLE_BIT_QCOM' is not included in
+--     @flags@, or neither the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-tileShadingPerTileDispatch tileShadingPerTileDispatch>
+--     and
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-tileShadingPerTileDraw tileShadingPerTileDraw>
+--     features are enabled, @flags@ /must/ not include
+--     'TILE_SHADING_RENDER_PASS_PER_TILE_EXECUTION_BIT_QCOM'
+--
+-- -   #VUID-VkRenderPassTileShadingCreateInfoQCOM-tileShadingAnisotropicApron-10661#
+--     If the
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-tileShadingAnisotropicApron tileShadingAnisotropicApron>
+--     feature is not enabled, @tileApronSize.x@ and /must/ be equal to
+--     @tileApronSize.y@
+--
+-- -   #VUID-VkRenderPassTileShadingCreateInfoQCOM-tileApronSize-10662#
+--     @tileApronSize.x@ /must/ be less than or equal to
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxApronSize maxApronSize>
+--
+-- -   #VUID-VkRenderPassTileShadingCreateInfoQCOM-tileApronSize-10663#
+--     @tileApronSize.y@ /must/ be less than or equal to
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxApronSize maxApronSize>
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkRenderPassTileShadingCreateInfoQCOM-sType-sType# @sType@
+--     /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDER_PASS_TILE_SHADING_CREATE_INFO_QCOM'
+--
+-- -   #VUID-VkRenderPassTileShadingCreateInfoQCOM-flags-parameter# @flags@
+--     /must/ be a valid combination of 'TileShadingRenderPassFlagBitsQCOM'
+--     values
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo'
+--
+--     -   'Vulkan.Core10.Pass.RenderPassCreateInfo'
+--
+--     -   'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.RenderPassCreateInfo2'
+--
+--     -   'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_tile_shading VK_QCOM_tile_shading>,
+-- 'Vulkan.Core10.FundamentalTypes.Extent2D',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'TileShadingRenderPassFlagsQCOM'
+data RenderPassTileShadingCreateInfoQCOM = RenderPassTileShadingCreateInfoQCOM
+  { -- | @flags@ is a bitmask of 'TileShadingRenderPassFlagBitsQCOM'.
+    flags :: TileShadingRenderPassFlagsQCOM
+  , -- | @tileApronSize@ is a 'Vulkan.Core10.FundamentalTypes.Extent2D'
+    -- describing the is size of the
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-tile-shading-aprons tiling apron>
+    -- in each dimension.
+    tileApronSize :: Extent2D
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (RenderPassTileShadingCreateInfoQCOM)
+#endif
+deriving instance Show RenderPassTileShadingCreateInfoQCOM
+
+instance ToCStruct RenderPassTileShadingCreateInfoQCOM where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p RenderPassTileShadingCreateInfoQCOM{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RENDER_PASS_TILE_SHADING_CREATE_INFO_QCOM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr TileShadingRenderPassFlagsQCOM)) (flags)
+    poke ((p `plusPtr` 20 :: Ptr Extent2D)) (tileApronSize)
+    f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RENDER_PASS_TILE_SHADING_CREATE_INFO_QCOM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    f
+
+instance FromCStruct RenderPassTileShadingCreateInfoQCOM where
+  peekCStruct p = do
+    flags <- peek @TileShadingRenderPassFlagsQCOM ((p `plusPtr` 16 :: Ptr TileShadingRenderPassFlagsQCOM))
+    tileApronSize <- peekCStruct @Extent2D ((p `plusPtr` 20 :: Ptr Extent2D))
+    pure $ RenderPassTileShadingCreateInfoQCOM
+             flags tileApronSize
+
+instance Storable RenderPassTileShadingCreateInfoQCOM where
+  sizeOf ~_ = 32
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero RenderPassTileShadingCreateInfoQCOM where
+  zero = RenderPassTileShadingCreateInfoQCOM
+           zero
+           zero
+
+
+-- | VkPerTileBeginInfoQCOM - Structure specifying per-tile begin information
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_tile_shading VK_QCOM_tile_shading>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'cmdBeginPerTileExecutionQCOM'
+data PerTileBeginInfoQCOM = PerTileBeginInfoQCOM
+  {}
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PerTileBeginInfoQCOM)
+#endif
+deriving instance Show PerTileBeginInfoQCOM
+
+instance ToCStruct PerTileBeginInfoQCOM where
+  withCStruct x f = allocaBytes 16 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PerTileBeginInfoQCOM f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PER_TILE_BEGIN_INFO_QCOM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    f
+  cStructSize = 16
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PER_TILE_BEGIN_INFO_QCOM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    f
+
+instance FromCStruct PerTileBeginInfoQCOM where
+  peekCStruct _ = pure $ PerTileBeginInfoQCOM
+                           
+
+instance Storable PerTileBeginInfoQCOM where
+  sizeOf ~_ = 16
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PerTileBeginInfoQCOM where
+  zero = PerTileBeginInfoQCOM
+           
+
+
+-- | VkPerTileEndInfoQCOM - Structure specifying per-tile end information
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_tile_shading VK_QCOM_tile_shading>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'cmdEndPerTileExecutionQCOM'
+data PerTileEndInfoQCOM = PerTileEndInfoQCOM
+  {}
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PerTileEndInfoQCOM)
+#endif
+deriving instance Show PerTileEndInfoQCOM
+
+instance ToCStruct PerTileEndInfoQCOM where
+  withCStruct x f = allocaBytes 16 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PerTileEndInfoQCOM f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PER_TILE_END_INFO_QCOM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    f
+  cStructSize = 16
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PER_TILE_END_INFO_QCOM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    f
+
+instance FromCStruct PerTileEndInfoQCOM where
+  peekCStruct _ = pure $ PerTileEndInfoQCOM
+                           
+
+instance Storable PerTileEndInfoQCOM where
+  sizeOf ~_ = 16
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PerTileEndInfoQCOM where
+  zero = PerTileEndInfoQCOM
+           
+
+
+-- | VkDispatchTileInfoQCOM - Structure specifying dispatch tile info
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_tile_shading VK_QCOM_tile_shading>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType', 'cmdDispatchTileQCOM'
+data DispatchTileInfoQCOM = DispatchTileInfoQCOM
+  {}
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (DispatchTileInfoQCOM)
+#endif
+deriving instance Show DispatchTileInfoQCOM
+
+instance ToCStruct DispatchTileInfoQCOM where
+  withCStruct x f = allocaBytes 16 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p DispatchTileInfoQCOM f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DISPATCH_TILE_INFO_QCOM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    f
+  cStructSize = 16
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DISPATCH_TILE_INFO_QCOM)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    f
+
+instance FromCStruct DispatchTileInfoQCOM where
+  peekCStruct _ = pure $ DispatchTileInfoQCOM
+                           
+
+instance Storable DispatchTileInfoQCOM where
+  sizeOf ~_ = 16
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero DispatchTileInfoQCOM where
+  zero = DispatchTileInfoQCOM
+           
+
+
+type TileShadingRenderPassFlagsQCOM = TileShadingRenderPassFlagBitsQCOM
+
+-- | VkTileShadingRenderPassFlagBitsQCOM - Bitmask specifying flags for tile
+-- shading
+--
+-- = Description
+--
+-- -   'TILE_SHADING_RENDER_PASS_ENABLE_BIT_QCOM' specifies that the render
+--     pass has tile shading enabled.
+--
+-- -   'TILE_SHADING_RENDER_PASS_PER_TILE_EXECUTION_BIT_QCOM' specifies
+--     that the secondary command buffer will be executed within a
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution block>.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_tile_shading VK_QCOM_tile_shading>,
+-- 'TileShadingRenderPassFlagsQCOM'
+newtype TileShadingRenderPassFlagBitsQCOM = TileShadingRenderPassFlagBitsQCOM Flags
+  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
+
+-- No documentation found for Nested "VkTileShadingRenderPassFlagBitsQCOM" "VK_TILE_SHADING_RENDER_PASS_ENABLE_BIT_QCOM"
+pattern TILE_SHADING_RENDER_PASS_ENABLE_BIT_QCOM = TileShadingRenderPassFlagBitsQCOM 0x00000001
+
+-- No documentation found for Nested "VkTileShadingRenderPassFlagBitsQCOM" "VK_TILE_SHADING_RENDER_PASS_PER_TILE_EXECUTION_BIT_QCOM"
+pattern TILE_SHADING_RENDER_PASS_PER_TILE_EXECUTION_BIT_QCOM = TileShadingRenderPassFlagBitsQCOM 0x00000002
+
+conNameTileShadingRenderPassFlagBitsQCOM :: String
+conNameTileShadingRenderPassFlagBitsQCOM = "TileShadingRenderPassFlagBitsQCOM"
+
+enumPrefixTileShadingRenderPassFlagBitsQCOM :: String
+enumPrefixTileShadingRenderPassFlagBitsQCOM = "TILE_SHADING_RENDER_PASS_"
+
+showTableTileShadingRenderPassFlagBitsQCOM :: [(TileShadingRenderPassFlagBitsQCOM, String)]
+showTableTileShadingRenderPassFlagBitsQCOM =
+  [
+    ( TILE_SHADING_RENDER_PASS_ENABLE_BIT_QCOM
+    , "ENABLE_BIT_QCOM"
+    )
+  ,
+    ( TILE_SHADING_RENDER_PASS_PER_TILE_EXECUTION_BIT_QCOM
+    , "PER_TILE_EXECUTION_BIT_QCOM"
+    )
+  ]
+
+instance Show TileShadingRenderPassFlagBitsQCOM where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixTileShadingRenderPassFlagBitsQCOM
+      showTableTileShadingRenderPassFlagBitsQCOM
+      conNameTileShadingRenderPassFlagBitsQCOM
+      (\(TileShadingRenderPassFlagBitsQCOM x) -> x)
+      (\x -> showString "0x" . showHex x)
+
+instance Read TileShadingRenderPassFlagBitsQCOM where
+  readPrec =
+    enumReadPrec
+      enumPrefixTileShadingRenderPassFlagBitsQCOM
+      showTableTileShadingRenderPassFlagBitsQCOM
+      conNameTileShadingRenderPassFlagBitsQCOM
+      TileShadingRenderPassFlagBitsQCOM
+
+type QCOM_TILE_SHADING_SPEC_VERSION = 2
+
+-- No documentation found for TopLevel "VK_QCOM_TILE_SHADING_SPEC_VERSION"
+pattern QCOM_TILE_SHADING_SPEC_VERSION :: forall a . Integral a => a
+pattern QCOM_TILE_SHADING_SPEC_VERSION = 2
+
+
+type QCOM_TILE_SHADING_EXTENSION_NAME = "VK_QCOM_tile_shading"
+
+-- No documentation found for TopLevel "VK_QCOM_TILE_SHADING_EXTENSION_NAME"
+pattern QCOM_TILE_SHADING_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern QCOM_TILE_SHADING_EXTENSION_NAME = "VK_QCOM_tile_shading"
+
diff --git a/src/Vulkan/Extensions/VK_QCOM_tile_shading.hs-boot b/src/Vulkan/Extensions/VK_QCOM_tile_shading.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_QCOM_tile_shading.hs-boot
@@ -0,0 +1,312 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_QCOM_tile_shading - device extension
+--
+-- = VK_QCOM_tile_shading
+--
+-- [__Name String__]
+--     @VK_QCOM_tile_shading@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     310
+--
+-- [__Revision__]
+--     2
+--
+-- [__Ratification Status__]
+--     Not ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_tile_properties VK_QCOM_tile_properties>
+--
+-- [__SPIR-V Dependencies__]
+--
+--     -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/QCOM/SPV_QCOM_tile_shading.html SPV_QCOM_tile_shading>
+--
+-- [__Contact__]
+--
+--     -   Matthew Netsch
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_QCOM_tile_shading] @mnetsch%0A*Here describe the issue or question you have about the VK_QCOM_tile_shading extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_QCOM_tile_shading.adoc VK_QCOM_tile_shading>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2025-8-13
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Interactions and External Dependencies__]
+--
+--     -   This extension interacts with @VK_KHR_dynamic_rendering@
+--
+--     -   This extension interacts with @VK_EXT_transform_feedback@
+--
+--     -   This extension interacts with @VK_EXT_debug_marker@
+--
+--     -   This extension interacts with
+--         @VK_EXT_attachment_feedback_loop_layout@
+--
+--     -   This extension interacts with
+--         @VK_KHR_dynamic_rendering_local_read@
+--
+--     -   This extension interacts with @VK_QCOM_image_processing@
+--
+-- [__Contributors__]
+--
+--     -   Jeff Leger, Qualcomm
+--
+--     -   Matt Netsch, Qualcomm
+--
+--     -   Srihari Babu Alla, Qualcomm
+--
+--     -   Matthew Smith, Qualcomm
+--
+--     -   Kevin Matlage, Qualcomm
+--
+--     -   Alex Bourd, Qualcomm
+--
+-- == Description
+--
+-- This extension exposes tile shading in Vulkan. Many mobile GPUs utilize
+-- Tile-Based Deferred Rendering (TBDR) to optimize for power and
+-- performance. Conversely, most desktop GPUs use immediate-mode rendering
+-- (IM). Adreno ™ GPUs uniquely have the ability to operate in either mode,
+-- and when this extension is not enabled, the Adreno driver will select
+-- the most optimal mode (TBDR or IM) based on the workload; this feature
+-- is called FlexRender ™. When this extension is in use, FlexRender is
+-- disabled and the GPU operates exclusively in TBDR wherever possible.
+--
+-- The TBDR mode divides the color and depth\/stencil buffer attachments
+-- into a regular grid of smaller regions called “tiles”. When a render
+-- pass instance is submitted for execution on an Adreno GPU, the rendering
+-- is split into two phases: a single “visibility pass” followed by
+-- multiple “rendering passes” where a separate render pass is issued for
+-- each tile in the framebuffer.
+--
+-- The “visibility pass” processes the geometry: identifies which tiles are
+-- covered by each primitive, eliminates occluded primitives and unneeded
+-- state changes, and performs other tile-specific optimizations. The
+-- primitive coverage information collected during the visibility pass is
+-- used in the subsequent “rendering pass” for each tile. During the
+-- rendering pass for each tile, any primitives that were determined not to
+-- cover the current tile are skipped.
+--
+-- This deferred rasterization additionally utilizes a specialized
+-- high-bandwidth on-die memory, “tile memory”. Tile memory is dramatically
+-- more efficient than other device memory. The tile memory temporarily
+-- stores the color and other attachments for each tile during
+-- rasterization. After each tile is fully rasterized, the resulting tile
+-- is typically copied to device memory backing the attachment as specified
+-- by the render pass STORE_OP. The per-tile rendering passes occur
+-- independently for each tile, with multiple tiles potentially being
+-- processed in parallel.
+--
+-- This extension enables applications to leverage the power and
+-- performance of tile memory in new ways:
+--
+-- -   Adds a mechanism for recording dispatches or draws that are
+--     guaranteed to be executed per-tile.
+--
+-- -   Such draws bypass the above-mentioned visibility-based skipping and
+--     are guaranteed to be executed for every tile in the rendering pass.
+--
+-- -   Shaders can declare “tile attachments” variables, providing shader
+--     access to color, depth\/stencil, and input attachment pixels.
+--
+-- -   Fragment and compute shaders can read these render pass attachments
+--     at any location within the tile. Compute shaders can also write to
+--     color attachments at any location within the tile.
+--
+-- -   Shaders can use new built-in variables that provide the location,
+--     size, and apron region of the tile.
+--
+-- -   A new tile dispatch command automatically scales workgroup sizes and
+--     counts to the tile size, given a desired shading rate.
+--
+-- -   Framebuffer-local dependencies are expanded to tile-sized regions,
+--     rather than a single pixel or sample.
+--
+-- -   A tile shading render pass can also enable tiling “aprons”. This is
+--     a specialized rendering mode where the GPU renders overlapping tiles
+--     that enable specific use cases.
+--
+-- == New Commands
+--
+-- -   'cmdBeginPerTileExecutionQCOM'
+--
+-- -   'cmdDispatchTileQCOM'
+--
+-- -   'cmdEndPerTileExecutionQCOM'
+--
+-- == New Structures
+--
+-- -   'DispatchTileInfoQCOM'
+--
+-- -   'PerTileBeginInfoQCOM'
+--
+-- -   'PerTileEndInfoQCOM'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceTileShadingFeaturesQCOM'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDeviceTileShadingPropertiesQCOM'
+--
+-- -   Extending 'Vulkan.Core10.Pass.RenderPassCreateInfo',
+--     'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.RenderPassCreateInfo2',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo',
+--     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo':
+--
+--     -   'RenderPassTileShadingCreateInfoQCOM'
+--
+-- == New Enums
+--
+-- -   'TileShadingRenderPassFlagBitsQCOM'
+--
+-- == New Bitmasks
+--
+-- -   'TileShadingRenderPassFlagsQCOM'
+--
+-- == New Enum Constants
+--
+-- -   'QCOM_TILE_SHADING_EXTENSION_NAME'
+--
+-- -   'QCOM_TILE_SHADING_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core13.Enums.AccessFlags2.AccessFlagBits2':
+--
+--     -   'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_TILE_ATTACHMENT_READ_BIT_QCOM'
+--
+--     -   'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_TILE_ATTACHMENT_WRITE_BIT_QCOM'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DISPATCH_TILE_INFO_QCOM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PER_TILE_BEGIN_INFO_QCOM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PER_TILE_END_INFO_QCOM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_SHADING_FEATURES_QCOM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_SHADING_PROPERTIES_QCOM'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDER_PASS_TILE_SHADING_CREATE_INFO_QCOM'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SubpassDescriptionFlagBits':
+--
+--     -   'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_TILE_SHADING_APRON_BIT_QCOM'
+--
+-- == New or Modified Built-In Variables
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-tileoffset TileOffsetQCOM>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-tilesize TileDimensionQCOM>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-tileapronsize TileApronSizeQCOM>
+--
+-- == New SPIR-V Capabilities
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-TileShadingQCOM TileShadingQCOM>
+--
+-- == Issues
+--
+-- 1) Some early Adreno drivers advertised support for version 1 of this
+-- extension without supporting the required
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-tileShadingApron tileShadingApron>
+-- feature. To cover all Adreno devices on the market, applications should
+-- not assume any version of this extension supports the @tileShadingApron@
+-- feature without performing a feature query.
+--
+-- == Version History
+--
+-- -   Revision 2, 2025-08-13 (Matthew Netsch)
+--
+--     -   Make the @tileShadingApron@ feature optional
+--
+-- -   Revision 1, 2023-10-12 (Jeff Leger)
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_QCOM_tile_shading Vulkan Specification>.
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_QCOM_tile_shading  ( DispatchTileInfoQCOM
+                                               , PerTileBeginInfoQCOM
+                                               , PerTileEndInfoQCOM
+                                               , PhysicalDeviceTileShadingFeaturesQCOM
+                                               , PhysicalDeviceTileShadingPropertiesQCOM
+                                               , RenderPassTileShadingCreateInfoQCOM
+                                               ) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data DispatchTileInfoQCOM
+
+instance ToCStruct DispatchTileInfoQCOM
+instance Show DispatchTileInfoQCOM
+
+instance FromCStruct DispatchTileInfoQCOM
+
+
+data PerTileBeginInfoQCOM
+
+instance ToCStruct PerTileBeginInfoQCOM
+instance Show PerTileBeginInfoQCOM
+
+instance FromCStruct PerTileBeginInfoQCOM
+
+
+data PerTileEndInfoQCOM
+
+instance ToCStruct PerTileEndInfoQCOM
+instance Show PerTileEndInfoQCOM
+
+instance FromCStruct PerTileEndInfoQCOM
+
+
+data PhysicalDeviceTileShadingFeaturesQCOM
+
+instance ToCStruct PhysicalDeviceTileShadingFeaturesQCOM
+instance Show PhysicalDeviceTileShadingFeaturesQCOM
+
+instance FromCStruct PhysicalDeviceTileShadingFeaturesQCOM
+
+
+data PhysicalDeviceTileShadingPropertiesQCOM
+
+instance ToCStruct PhysicalDeviceTileShadingPropertiesQCOM
+instance Show PhysicalDeviceTileShadingPropertiesQCOM
+
+instance FromCStruct PhysicalDeviceTileShadingPropertiesQCOM
+
+
+data RenderPassTileShadingCreateInfoQCOM
+
+instance ToCStruct RenderPassTileShadingCreateInfoQCOM
+instance Show RenderPassTileShadingCreateInfoQCOM
+
+instance FromCStruct RenderPassTileShadingCreateInfoQCOM
+
diff --git a/src/Vulkan/Extensions/VK_QCOM_ycbcr_degamma.hs b/src/Vulkan/Extensions/VK_QCOM_ycbcr_degamma.hs
--- a/src/Vulkan/Extensions/VK_QCOM_ycbcr_degamma.hs
+++ b/src/Vulkan/Extensions/VK_QCOM_ycbcr_degamma.hs
@@ -21,7 +21,9 @@
 --     Not ratified
 --
 -- [__Extension and Version Dependencies__]
---     None
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
 --
 -- [__Contact__]
 --
@@ -146,7 +148,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_QCOM_ycbcr_degamma Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_QCOM_ycbcr_degamma Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -196,12 +198,22 @@
 -- 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. 'PhysicalDeviceYcbcrDegammaFeaturesQCOM' /can/ also be used
--- in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceYcbcrDegammaFeaturesQCOM', it /must/ add an instance of
+-- the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_ycbcr_degamma VK_QCOM_ycbcr_degamma>,
@@ -210,7 +222,7 @@
 data PhysicalDeviceYcbcrDegammaFeaturesQCOM = PhysicalDeviceYcbcrDegammaFeaturesQCOM
   { -- | #features-ycbcrDegamma# @ycbcrDegamma@ indicates whether the
     -- implementation supports
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#textures-ycbcr-degamma Y′CBCR degamma>.
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#textures-YCbCr-degamma Y′CBCR degamma>.
     ycbcrDegamma :: Bool }
   deriving (Typeable, Eq)
 #if defined(GENERIC_INSTANCES)
@@ -253,8 +265,12 @@
 -- | VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM - Structure
 -- specifying Y′CBCR degamma parameters
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionCreateInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_ycbcr_degamma VK_QCOM_ycbcr_degamma>,
@@ -262,11 +278,11 @@
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM = SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM
   { -- | @enableYDegamma@ indicates
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#textures-ycbcr-degamma sRGB to linear>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#textures-YCbCr-degamma sRGB to linear>
     -- conversion is enabled for the G component.
     enableYDegamma :: Bool
   , -- | @enableCbCrDegamma@ indicates
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#textures-ycbcr-degamma sRGB to linear>
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#textures-YCbCr-degamma sRGB to linear>
     -- conversion is enabled for the R and B components.
     enableCbCrDegamma :: Bool
   }
diff --git a/src/Vulkan/Extensions/VK_QCOM_ycbcr_degamma.hs-boot b/src/Vulkan/Extensions/VK_QCOM_ycbcr_degamma.hs-boot
--- a/src/Vulkan/Extensions/VK_QCOM_ycbcr_degamma.hs-boot
+++ b/src/Vulkan/Extensions/VK_QCOM_ycbcr_degamma.hs-boot
@@ -21,7 +21,9 @@
 --     Not ratified
 --
 -- [__Extension and Version Dependencies__]
---     None
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
 --
 -- [__Contact__]
 --
@@ -146,7 +148,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_QCOM_ycbcr_degamma Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_QCOM_ycbcr_degamma Vulkan Specification>.
 --
 -- This 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_external_memory_screen_buffer.hs b/src/Vulkan/Extensions/VK_QNX_external_memory_screen_buffer.hs
--- a/src/Vulkan/Extensions/VK_QNX_external_memory_screen_buffer.hs
+++ b/src/Vulkan/Extensions/VK_QNX_external_memory_screen_buffer.hs
@@ -136,7 +136,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_QNX_external_memory_screen_buffer Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_QNX_external_memory_screen_buffer Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -241,10 +241,14 @@
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
+--     -   'Vulkan.Extensions.VK_KHR_external_memory.ERROR_INVALID_EXTERNAL_HANDLE_KHR'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Extensions.VK_KHR_external_memory.ERROR_INVALID_EXTERNAL_HANDLE_KHR'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QNX_external_memory_screen_buffer VK_QNX_external_memory_screen_buffer>,
@@ -262,7 +266,7 @@
                              -> -- | @buffer@ is the QNX Screen buffer which will be imported.
                                 --
                                 -- #VUID-vkGetScreenBufferPropertiesQNX-buffer-08968# @buffer@ /must/ be a
-                                -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-external-screen-buffer-validity valid QNX Screen buffer>
+                                -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-external-screen-buffer-validity valid QNX Screen buffer>
                                 --
                                 -- #VUID-vkGetScreenBufferPropertiesQNX-buffer-parameter# @buffer@ /must/
                                 -- be a valid pointer to a valid 'Screen_buffer' value
@@ -303,13 +307,19 @@
 --
 -- -   #VUID-VkImportScreenBufferInfoQNX-buffer-08967# @buffer@ is not
 --     @NULL@, it /must/ be a pointer to
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-external-screen-buffer-validity valid QNX Screen buffer>
+--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-external-screen-buffer-validity valid QNX Screen buffer>
 --
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-VkImportScreenBufferInfoQNX-sType-sType# @sType@ /must/ be
 --     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMPORT_SCREEN_BUFFER_INFO_QNX'
 --
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.Memory.MemoryAllocateInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QNX_external_memory_screen_buffer VK_QNX_external_memory_screen_buffer>,
@@ -369,7 +379,7 @@
 --     'ScreenBufferFormatPropertiesQNX'
 --
 -- -   #VUID-VkScreenBufferPropertiesQNX-sType-unique# The @sType@ value of
---     each struct in the @pNext@ chain /must/ be unique
+--     each structure in the @pNext@ chain /must/ be unique
 --
 -- = See Also
 --
@@ -444,7 +454,7 @@
 -- = Description
 --
 -- If the QNX Screen buffer has one of the formats listed in the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-external-qnx-screen-buffer-formats QNX Screen Format Equivalence table>,
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-external-qnx-screen-buffer-formats QNX Screen 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 QNX Screen
@@ -456,8 +466,12 @@
 -- and
 -- 'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'ScreenBufferPropertiesQNX'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QNX_external_memory_screen_buffer VK_QNX_external_memory_screen_buffer>,
@@ -586,8 +600,14 @@
 -- structure was not present. Otherwise, the @image@ will have the
 -- specified external format.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Image.ImageCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionCreateInfo'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QNX_external_memory_screen_buffer VK_QNX_external_memory_screen_buffer>,
@@ -669,7 +689,7 @@
 --     Functionality in this row is always available.
 --
 -- The
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-externalscreenbuffer-table Functionality supported for QNX Screen buffer features>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-externalscreenbuffer-table Functionality supported for QNX Screen buffer features>
 -- table summarizes the functionality enabled by the
 -- 'PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX' structure. Each
 -- entry in the body of the table summarizes the functionality that /can/
@@ -683,12 +703,21 @@
 -- 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. 'PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX' /can/
--- also be used in the @pNext@ chain of
--- 'Vulkan.Core10.Device.DeviceCreateInfo' to selectively enable these
--- features.
+-- supported. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Extensions/VK_QNX_external_memory_screen_buffer.hs-boot b/src/Vulkan/Extensions/VK_QNX_external_memory_screen_buffer.hs-boot
--- a/src/Vulkan/Extensions/VK_QNX_external_memory_screen_buffer.hs-boot
+++ b/src/Vulkan/Extensions/VK_QNX_external_memory_screen_buffer.hs-boot
@@ -136,7 +136,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_QNX_external_memory_screen_buffer Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_QNX_external_memory_screen_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_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
@@ -85,7 +85,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_QNX_screen_surface Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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.
@@ -205,10 +205,14 @@
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--     -   'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
 --
+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QNX_screen_surface VK_QNX_screen_surface>,
@@ -224,7 +228,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://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>).
+                          -- <https://registry.khronos.org/vulkan/specs/latest/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
@@ -85,7 +85,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_QNX_screen_surface Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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_SEC_amigo_profiling.hs b/src/Vulkan/Extensions/VK_SEC_amigo_profiling.hs
--- a/src/Vulkan/Extensions/VK_SEC_amigo_profiling.hs
+++ b/src/Vulkan/Extensions/VK_SEC_amigo_profiling.hs
@@ -108,6 +108,14 @@
 --     /must/ be
 --     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_AMIGO_PROFILING_FEATURES_SEC'
 --
+-- === Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- There is currently no specification language written for this type. This
 -- section acts only as placeholder and to avoid dead links in the
 -- specification and reference pages.
@@ -125,6 +133,12 @@
 -- -   #VUID-VkAmigoProfilingSubmitInfoSEC-sType-sType# @sType@ /must/ be
 --     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_AMIGO_PROFILING_SUBMIT_INFO_SEC'
 --
+-- === Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.Queue.SubmitInfo'
+--
 -- == Version History
 --
 -- -   Revision 1, 2022-07-29 (Ralph Potter)
@@ -138,7 +152,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_SEC_amigo_profiling Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_SEC_amigo_profiling Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -177,8 +191,14 @@
 -- | VkPhysicalDeviceAmigoProfilingFeaturesSEC - Stub description of
 -- VkPhysicalDeviceAmigoProfilingFeaturesSEC
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
 --
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_SEC_amigo_profiling VK_SEC_amigo_profiling>,
@@ -228,7 +248,11 @@
 -- | VkAmigoProfilingSubmitInfoSEC - Stub description of
 -- VkAmigoProfilingSubmitInfoSEC
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.Queue.SubmitInfo'
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Extensions/VK_SEC_amigo_profiling.hs-boot b/src/Vulkan/Extensions/VK_SEC_amigo_profiling.hs-boot
--- a/src/Vulkan/Extensions/VK_SEC_amigo_profiling.hs-boot
+++ b/src/Vulkan/Extensions/VK_SEC_amigo_profiling.hs-boot
@@ -108,6 +108,14 @@
 --     /must/ be
 --     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_AMIGO_PROFILING_FEATURES_SEC'
 --
+-- === Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- There is currently no specification language written for this type. This
 -- section acts only as placeholder and to avoid dead links in the
 -- specification and reference pages.
@@ -125,6 +133,12 @@
 -- -   #VUID-VkAmigoProfilingSubmitInfoSEC-sType-sType# @sType@ /must/ be
 --     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_AMIGO_PROFILING_SUBMIT_INFO_SEC'
 --
+-- === Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.Queue.SubmitInfo'
+--
 -- == Version History
 --
 -- -   Revision 1, 2022-07-29 (Ralph Potter)
@@ -138,7 +152,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_SEC_amigo_profiling Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_SEC_amigo_profiling Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_SEC_pipeline_cache_incremental_mode.hs b/src/Vulkan/Extensions/VK_SEC_pipeline_cache_incremental_mode.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_SEC_pipeline_cache_incremental_mode.hs
@@ -0,0 +1,225 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_SEC_pipeline_cache_incremental_mode - device extension
+--
+-- = VK_SEC_pipeline_cache_incremental_mode
+--
+-- [__Name String__]
+--     @VK_SEC_pipeline_cache_incremental_mode@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     638
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Not ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
+--
+-- [__Contact__]
+--
+--     -   Chris Hambacher
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_SEC_pipeline_cache_incremental_mode] @chambacher%0A*Here describe the issue or question you have about the VK_SEC_pipeline_cache_incremental_mode extension* >
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2025-06-24
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Contributors__]
+--
+--     -   Chris Hambacher, Samsung
+--
+--     -   Mohan Maiya, Samsung
+--
+--     -   Brandon Schade, Samsung
+--
+-- == Description
+--
+-- This extension allows layered implementations such as ANGLE to modify
+-- the default behavior of VkPipelineCache to return only the incremental
+-- data from the previous call to vkGetPipelineCacheData. Application
+-- developers should avoid using this extension.
+--
+-- There is currently no specification language written for this extension.
+-- The links to APIs defined by the extension are to stubs that only
+-- include generated content such as API declarations and implicit valid
+-- usage statements.
+--
+-- This extension is only intended for use in specific embedded
+-- environments with known implementation details, and is therefore
+-- undocumented.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC'
+--
+-- == New Enum Constants
+--
+-- -   'SEC_PIPELINE_CACHE_INCREMENTAL_MODE_EXTENSION_NAME'
+--
+-- -   'SEC_PIPELINE_CACHE_INCREMENTAL_MODE_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CACHE_INCREMENTAL_MODE_FEATURES_SEC'
+--
+-- == Stub API References
+--
+-- There is currently no specification language written for this type. This
+-- section acts only as placeholder and to avoid dead links in the
+-- specification and reference pages.
+--
+-- > // Provided by VK_SEC_pipeline_cache_incremental_mode
+-- > typedef struct VkPhysicalDevicePipelineCacheIncrementalModeFeaturesSEC {
+-- >     VkStructureType    sType;
+-- >     void*              pNext;
+-- >     VkBool32           pipelineCacheIncrementalMode;
+-- > } VkPhysicalDevicePipelineCacheIncrementalModeFeaturesSEC;
+--
+-- === Valid Usage (Implicit)
+--
+-- -   #VUID-VkPhysicalDevicePipelineCacheIncrementalModeFeaturesSEC-sType-sType#
+--     @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CACHE_INCREMENTAL_MODE_FEATURES_SEC'
+--
+-- === Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- == Version History
+--
+-- -   Revision 1, 2025-06-24 (Chris Hambacher)
+--
+--     -   Initial specification
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_SEC_pipeline_cache_incremental_mode Vulkan Specification>.
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_SEC_pipeline_cache_incremental_mode  ( PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC(..)
+                                                                 , SEC_PIPELINE_CACHE_INCREMENTAL_MODE_SPEC_VERSION
+                                                                 , pattern SEC_PIPELINE_CACHE_INCREMENTAL_MODE_SPEC_VERSION
+                                                                 , SEC_PIPELINE_CACHE_INCREMENTAL_MODE_EXTENSION_NAME
+                                                                 , pattern SEC_PIPELINE_CACHE_INCREMENTAL_MODE_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_PIPELINE_CACHE_INCREMENTAL_MODE_FEATURES_SEC))
+-- | VkPhysicalDevicePipelineCacheIncrementalModeFeaturesSEC - Stub
+-- description of VkPhysicalDevicePipelineCacheIncrementalModeFeaturesSEC
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_SEC_pipeline_cache_incremental_mode VK_SEC_pipeline_cache_incremental_mode>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC = PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC
+  { -- No documentation found for Nested "VkPhysicalDevicePipelineCacheIncrementalModeFeaturesSEC" "pipelineCacheIncrementalMode"
+    pipelineCacheIncrementalMode :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC)
+#endif
+deriving instance Show PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC
+
+instance ToCStruct PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CACHE_INCREMENTAL_MODE_FEATURES_SEC)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (pipelineCacheIncrementalMode))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CACHE_INCREMENTAL_MODE_FEATURES_SEC)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC where
+  peekCStruct p = do
+    pipelineCacheIncrementalMode <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC
+             (bool32ToBool pipelineCacheIncrementalMode)
+
+instance Storable PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC where
+  zero = PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC
+           zero
+
+
+type SEC_PIPELINE_CACHE_INCREMENTAL_MODE_SPEC_VERSION = 1
+
+-- No documentation found for TopLevel "VK_SEC_PIPELINE_CACHE_INCREMENTAL_MODE_SPEC_VERSION"
+pattern SEC_PIPELINE_CACHE_INCREMENTAL_MODE_SPEC_VERSION :: forall a . Integral a => a
+pattern SEC_PIPELINE_CACHE_INCREMENTAL_MODE_SPEC_VERSION = 1
+
+
+type SEC_PIPELINE_CACHE_INCREMENTAL_MODE_EXTENSION_NAME = "VK_SEC_pipeline_cache_incremental_mode"
+
+-- No documentation found for TopLevel "VK_SEC_PIPELINE_CACHE_INCREMENTAL_MODE_EXTENSION_NAME"
+pattern SEC_PIPELINE_CACHE_INCREMENTAL_MODE_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern SEC_PIPELINE_CACHE_INCREMENTAL_MODE_EXTENSION_NAME = "VK_SEC_pipeline_cache_incremental_mode"
+
diff --git a/src/Vulkan/Extensions/VK_SEC_pipeline_cache_incremental_mode.hs-boot b/src/Vulkan/Extensions/VK_SEC_pipeline_cache_incremental_mode.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_SEC_pipeline_cache_incremental_mode.hs-boot
@@ -0,0 +1,139 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_SEC_pipeline_cache_incremental_mode - device extension
+--
+-- = VK_SEC_pipeline_cache_incremental_mode
+--
+-- [__Name String__]
+--     @VK_SEC_pipeline_cache_incremental_mode@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     638
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Not ratified
+--
+-- [__Extension and Version Dependencies__]
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
+--
+-- [__Contact__]
+--
+--     -   Chris Hambacher
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_SEC_pipeline_cache_incremental_mode] @chambacher%0A*Here describe the issue or question you have about the VK_SEC_pipeline_cache_incremental_mode extension* >
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2025-06-24
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Contributors__]
+--
+--     -   Chris Hambacher, Samsung
+--
+--     -   Mohan Maiya, Samsung
+--
+--     -   Brandon Schade, Samsung
+--
+-- == Description
+--
+-- This extension allows layered implementations such as ANGLE to modify
+-- the default behavior of VkPipelineCache to return only the incremental
+-- data from the previous call to vkGetPipelineCacheData. Application
+-- developers should avoid using this extension.
+--
+-- There is currently no specification language written for this extension.
+-- The links to APIs defined by the extension are to stubs that only
+-- include generated content such as API declarations and implicit valid
+-- usage statements.
+--
+-- This extension is only intended for use in specific embedded
+-- environments with known implementation details, and is therefore
+-- undocumented.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC'
+--
+-- == New Enum Constants
+--
+-- -   'SEC_PIPELINE_CACHE_INCREMENTAL_MODE_EXTENSION_NAME'
+--
+-- -   'SEC_PIPELINE_CACHE_INCREMENTAL_MODE_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CACHE_INCREMENTAL_MODE_FEATURES_SEC'
+--
+-- == Stub API References
+--
+-- There is currently no specification language written for this type. This
+-- section acts only as placeholder and to avoid dead links in the
+-- specification and reference pages.
+--
+-- > // Provided by VK_SEC_pipeline_cache_incremental_mode
+-- > typedef struct VkPhysicalDevicePipelineCacheIncrementalModeFeaturesSEC {
+-- >     VkStructureType    sType;
+-- >     void*              pNext;
+-- >     VkBool32           pipelineCacheIncrementalMode;
+-- > } VkPhysicalDevicePipelineCacheIncrementalModeFeaturesSEC;
+--
+-- === Valid Usage (Implicit)
+--
+-- -   #VUID-VkPhysicalDevicePipelineCacheIncrementalModeFeaturesSEC-sType-sType#
+--     @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CACHE_INCREMENTAL_MODE_FEATURES_SEC'
+--
+-- === Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- == Version History
+--
+-- -   Revision 1, 2025-06-24 (Chris Hambacher)
+--
+--     -   Initial specification
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_SEC_pipeline_cache_incremental_mode Vulkan Specification>.
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_SEC_pipeline_cache_incremental_mode  (PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC
+
+instance ToCStruct PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC
+instance Show PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC
+
+instance FromCStruct PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC
+
diff --git a/src/Vulkan/Extensions/VK_SEC_throttle_hint.hs b/src/Vulkan/Extensions/VK_SEC_throttle_hint.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_SEC_throttle_hint.hs
@@ -0,0 +1,403 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_SEC_throttle_hint - device extension
+--
+-- = VK_SEC_throttle_hint
+--
+-- [__Name String__]
+--     @VK_SEC_throttle_hint@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     675
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Not ratified
+--
+-- [__Extension and Version Dependencies__]
+--     None
+--
+-- [__Contact__]
+--
+--     -   Ralph Potter <<data:image/png;base64, GitLab>>r_potter
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2026-04-09
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Contributors__]
+--
+--     -   Jonghyuk Eun, Samsung
+--
+--     -   Minyoung Son, Samsung
+--
+--     -   Jihyoung Hong, Samsung
+--
+--     -   Pavan Lanka, Samsung
+--
+--     -   Ralph Potter, Samsung
+--
+-- == Description
+--
+-- This extension is intended to convey throttle hints to the device, but
+-- does not specify the throttling behavior or any minimum guarantees. This
+-- extension is intended to communicate information from layered API
+-- implementations such as ANGLE to internal proprietary system schedulers.
+--
+-- It has no behavioral implications beyond enabling more intelligent
+-- behavior from the system scheduler.
+--
+-- Application developers should avoid using this extension. It is
+-- documented solely for the benefit of tools and layer developers, who may
+-- need to manipulate @pNext@ chains that include these structures.
+--
+-- There is currently no specification language written for this extension.
+-- The links to APIs defined by the extension are to stubs that only
+-- include generated content such as API declarations and implicit valid
+-- usage statements.
+--
+-- This extension is only intended for use in specific embedded
+-- environments with known implementation details, and is therefore
+-- undocumented.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceThrottleHintFeaturesSEC'
+--
+-- -   Extending 'Vulkan.Core10.Queue.SubmitInfo':
+--
+--     -   'ThrottleHintSubmitInfoSEC'
+--
+-- == New Enums
+--
+-- -   'ThrottleHintTypeSEC'
+--
+-- == New Enum Constants
+--
+-- -   'SEC_THROTTLE_HINT_EXTENSION_NAME'
+--
+-- -   'SEC_THROTTLE_HINT_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_THROTTLE_HINT_FEATURES_SEC'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_THROTTLE_HINT_SUBMIT_INFO_SEC'
+--
+-- == Stub API References
+--
+-- There is currently no specification language written for this type. This
+-- section acts only as placeholder and to avoid dead links in the
+-- specification and reference pages.
+--
+-- > // Provided by VK_SEC_throttle_hint
+-- > typedef struct VkPhysicalDeviceThrottleHintFeaturesSEC {
+-- >     VkStructureType    sType;
+-- >     void*              pNext;
+-- >     VkBool32           throttleHint;
+-- > } VkPhysicalDeviceThrottleHintFeaturesSEC;
+--
+-- === Valid Usage (Implicit)
+--
+-- -   #VUID-VkPhysicalDeviceThrottleHintFeaturesSEC-sType-sType# @sType@
+--     /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_THROTTLE_HINT_FEATURES_SEC'
+--
+-- === Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- There is currently no specification language written for this type. This
+-- section acts only as placeholder and to avoid dead links in the
+-- specification and reference pages.
+--
+-- > // Provided by VK_SEC_throttle_hint
+-- > typedef struct VkThrottleHintSubmitInfoSEC {
+-- >     VkStructureType          sType;
+-- >     const void*              pNext;
+-- >     VkThrottleHintTypeSEC    throttleHint;
+-- > } VkThrottleHintSubmitInfoSEC;
+--
+-- === Valid Usage (Implicit)
+--
+-- -   #VUID-VkThrottleHintSubmitInfoSEC-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_THROTTLE_HINT_SUBMIT_INFO_SEC'
+--
+-- -   #VUID-VkThrottleHintSubmitInfoSEC-throttleHint-parameter#
+--     @throttleHint@ /must/ be a valid 'ThrottleHintTypeSEC' value
+--
+-- === Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.Queue.SubmitInfo'
+--
+-- There is currently no specification language written for this type. This
+-- section acts only as placeholder and to avoid dead links in the
+-- specification and reference pages.
+--
+-- > // Provided by VK_SEC_throttle_hint
+-- > typedef enum VkThrottleHintTypeSEC {
+-- >     VK_THROTTLE_HINT_TYPE_DEFAULT_SEC = 0,
+-- >     VK_THROTTLE_HINT_TYPE_LOW_SEC = 1,
+-- >     VK_THROTTLE_HINT_TYPE_HIGH_SEC = 2,
+-- > } VkThrottleHintTypeSEC;
+--
+-- == Version History
+--
+-- -   Revision 1, 2026-04-09 (Ralph Potter)
+--
+--     -   Initial specification
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_SEC_throttle_hint Vulkan Specification>.
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_SEC_throttle_hint  ( PhysicalDeviceThrottleHintFeaturesSEC(..)
+                                               , ThrottleHintSubmitInfoSEC(..)
+                                               , ThrottleHintTypeSEC( THROTTLE_HINT_TYPE_DEFAULT_SEC
+                                                                    , THROTTLE_HINT_TYPE_LOW_SEC
+                                                                    , THROTTLE_HINT_TYPE_HIGH_SEC
+                                                                    , ..
+                                                                    )
+                                               , SEC_THROTTLE_HINT_SPEC_VERSION
+                                               , pattern SEC_THROTTLE_HINT_SPEC_VERSION
+                                               , SEC_THROTTLE_HINT_EXTENSION_NAME
+                                               , pattern SEC_THROTTLE_HINT_EXTENSION_NAME
+                                               ) where
+
+import Vulkan.Internal.Utils (enumReadPrec)
+import Vulkan.Internal.Utils (enumShowsPrec)
+import Foreign.Marshal.Alloc (allocaBytes)
+import Foreign.Ptr (nullPtr)
+import Foreign.Ptr (plusPtr)
+import GHC.Show (showsPrec)
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (FromCStruct(..))
+import Vulkan.CStruct (ToCStruct)
+import Vulkan.CStruct (ToCStruct(..))
+import Vulkan.Zero (Zero)
+import Vulkan.Zero (Zero(..))
+import Data.String (IsString)
+import Data.Typeable (Typeable)
+import Foreign.Storable (Storable)
+import Foreign.Storable (Storable(peek))
+import Foreign.Storable (Storable(poke))
+import qualified Foreign.Storable (Storable(..))
+import GHC.Generics (Generic)
+import Data.Int (Int32)
+import Foreign.Ptr (Ptr)
+import GHC.Read (Read(readPrec))
+import GHC.Show (Show(showsPrec))
+import Data.Kind (Type)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_THROTTLE_HINT_FEATURES_SEC))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_THROTTLE_HINT_SUBMIT_INFO_SEC))
+-- | VkPhysicalDeviceThrottleHintFeaturesSEC - Stub description of
+-- VkPhysicalDeviceThrottleHintFeaturesSEC
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_SEC_throttle_hint VK_SEC_throttle_hint>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceThrottleHintFeaturesSEC = PhysicalDeviceThrottleHintFeaturesSEC
+  { -- No documentation found for Nested "VkPhysicalDeviceThrottleHintFeaturesSEC" "throttleHint"
+    throttleHint :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceThrottleHintFeaturesSEC)
+#endif
+deriving instance Show PhysicalDeviceThrottleHintFeaturesSEC
+
+instance ToCStruct PhysicalDeviceThrottleHintFeaturesSEC where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceThrottleHintFeaturesSEC{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_THROTTLE_HINT_FEATURES_SEC)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (throttleHint))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_THROTTLE_HINT_FEATURES_SEC)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceThrottleHintFeaturesSEC where
+  peekCStruct p = do
+    throttleHint <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDeviceThrottleHintFeaturesSEC
+             (bool32ToBool throttleHint)
+
+instance Storable PhysicalDeviceThrottleHintFeaturesSEC where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceThrottleHintFeaturesSEC where
+  zero = PhysicalDeviceThrottleHintFeaturesSEC
+           zero
+
+
+-- | VkThrottleHintSubmitInfoSEC - Stub description of
+-- VkThrottleHintSubmitInfoSEC
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.Queue.SubmitInfo'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_SEC_throttle_hint VK_SEC_throttle_hint>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType', 'ThrottleHintTypeSEC'
+data ThrottleHintSubmitInfoSEC = ThrottleHintSubmitInfoSEC
+  { -- | #VUID-VkThrottleHintSubmitInfoSEC-throttleHint-parameter# @throttleHint@
+    -- /must/ be a valid 'ThrottleHintTypeSEC' value
+    throttleHint :: ThrottleHintTypeSEC }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (ThrottleHintSubmitInfoSEC)
+#endif
+deriving instance Show ThrottleHintSubmitInfoSEC
+
+instance ToCStruct ThrottleHintSubmitInfoSEC where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p ThrottleHintSubmitInfoSEC{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_THROTTLE_HINT_SUBMIT_INFO_SEC)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr ThrottleHintTypeSEC)) (throttleHint)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_THROTTLE_HINT_SUBMIT_INFO_SEC)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr ThrottleHintTypeSEC)) (zero)
+    f
+
+instance FromCStruct ThrottleHintSubmitInfoSEC where
+  peekCStruct p = do
+    throttleHint <- peek @ThrottleHintTypeSEC ((p `plusPtr` 16 :: Ptr ThrottleHintTypeSEC))
+    pure $ ThrottleHintSubmitInfoSEC
+             throttleHint
+
+instance Storable ThrottleHintSubmitInfoSEC where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero ThrottleHintSubmitInfoSEC where
+  zero = ThrottleHintSubmitInfoSEC
+           zero
+
+
+-- | VkThrottleHintTypeSEC - Stub description of VkThrottleHintTypeSEC
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_SEC_throttle_hint VK_SEC_throttle_hint>,
+-- 'ThrottleHintSubmitInfoSEC'
+newtype ThrottleHintTypeSEC = ThrottleHintTypeSEC Int32
+  deriving newtype (Eq, Ord, Storable, Zero)
+
+-- No documentation found for Nested "VkThrottleHintTypeSEC" "VK_THROTTLE_HINT_TYPE_DEFAULT_SEC"
+pattern THROTTLE_HINT_TYPE_DEFAULT_SEC = ThrottleHintTypeSEC 0
+
+-- No documentation found for Nested "VkThrottleHintTypeSEC" "VK_THROTTLE_HINT_TYPE_LOW_SEC"
+pattern THROTTLE_HINT_TYPE_LOW_SEC = ThrottleHintTypeSEC 1
+
+-- No documentation found for Nested "VkThrottleHintTypeSEC" "VK_THROTTLE_HINT_TYPE_HIGH_SEC"
+pattern THROTTLE_HINT_TYPE_HIGH_SEC = ThrottleHintTypeSEC 2
+
+{-# COMPLETE
+  THROTTLE_HINT_TYPE_DEFAULT_SEC
+  , THROTTLE_HINT_TYPE_LOW_SEC
+  , THROTTLE_HINT_TYPE_HIGH_SEC ::
+    ThrottleHintTypeSEC
+  #-}
+
+conNameThrottleHintTypeSEC :: String
+conNameThrottleHintTypeSEC = "ThrottleHintTypeSEC"
+
+enumPrefixThrottleHintTypeSEC :: String
+enumPrefixThrottleHintTypeSEC = "THROTTLE_HINT_TYPE_"
+
+showTableThrottleHintTypeSEC :: [(ThrottleHintTypeSEC, String)]
+showTableThrottleHintTypeSEC =
+  [ (THROTTLE_HINT_TYPE_DEFAULT_SEC, "DEFAULT_SEC")
+  , (THROTTLE_HINT_TYPE_LOW_SEC, "LOW_SEC")
+  , (THROTTLE_HINT_TYPE_HIGH_SEC, "HIGH_SEC")
+  ]
+
+instance Show ThrottleHintTypeSEC where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixThrottleHintTypeSEC
+      showTableThrottleHintTypeSEC
+      conNameThrottleHintTypeSEC
+      (\(ThrottleHintTypeSEC x) -> x)
+      (showsPrec 11)
+
+instance Read ThrottleHintTypeSEC where
+  readPrec =
+    enumReadPrec
+      enumPrefixThrottleHintTypeSEC
+      showTableThrottleHintTypeSEC
+      conNameThrottleHintTypeSEC
+      ThrottleHintTypeSEC
+
+type SEC_THROTTLE_HINT_SPEC_VERSION = 1
+
+-- No documentation found for TopLevel "VK_SEC_THROTTLE_HINT_SPEC_VERSION"
+pattern SEC_THROTTLE_HINT_SPEC_VERSION :: forall a . Integral a => a
+pattern SEC_THROTTLE_HINT_SPEC_VERSION = 1
+
+
+type SEC_THROTTLE_HINT_EXTENSION_NAME = "VK_SEC_throttle_hint"
+
+-- No documentation found for TopLevel "VK_SEC_THROTTLE_HINT_EXTENSION_NAME"
+pattern SEC_THROTTLE_HINT_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern SEC_THROTTLE_HINT_EXTENSION_NAME = "VK_SEC_throttle_hint"
+
diff --git a/src/Vulkan/Extensions/VK_SEC_throttle_hint.hs-boot b/src/Vulkan/Extensions/VK_SEC_throttle_hint.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_SEC_throttle_hint.hs-boot
@@ -0,0 +1,203 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_SEC_throttle_hint - device extension
+--
+-- = VK_SEC_throttle_hint
+--
+-- [__Name String__]
+--     @VK_SEC_throttle_hint@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     675
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Not ratified
+--
+-- [__Extension and Version Dependencies__]
+--     None
+--
+-- [__Contact__]
+--
+--     -   Ralph Potter <<data:image/png;base64, GitLab>>r_potter
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2026-04-09
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Contributors__]
+--
+--     -   Jonghyuk Eun, Samsung
+--
+--     -   Minyoung Son, Samsung
+--
+--     -   Jihyoung Hong, Samsung
+--
+--     -   Pavan Lanka, Samsung
+--
+--     -   Ralph Potter, Samsung
+--
+-- == Description
+--
+-- This extension is intended to convey throttle hints to the device, but
+-- does not specify the throttling behavior or any minimum guarantees. This
+-- extension is intended to communicate information from layered API
+-- implementations such as ANGLE to internal proprietary system schedulers.
+--
+-- It has no behavioral implications beyond enabling more intelligent
+-- behavior from the system scheduler.
+--
+-- Application developers should avoid using this extension. It is
+-- documented solely for the benefit of tools and layer developers, who may
+-- need to manipulate @pNext@ chains that include these structures.
+--
+-- There is currently no specification language written for this extension.
+-- The links to APIs defined by the extension are to stubs that only
+-- include generated content such as API declarations and implicit valid
+-- usage statements.
+--
+-- This extension is only intended for use in specific embedded
+-- environments with known implementation details, and is therefore
+-- undocumented.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceThrottleHintFeaturesSEC'
+--
+-- -   Extending 'Vulkan.Core10.Queue.SubmitInfo':
+--
+--     -   'ThrottleHintSubmitInfoSEC'
+--
+-- == New Enums
+--
+-- -   'ThrottleHintTypeSEC'
+--
+-- == New Enum Constants
+--
+-- -   'SEC_THROTTLE_HINT_EXTENSION_NAME'
+--
+-- -   'SEC_THROTTLE_HINT_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_THROTTLE_HINT_FEATURES_SEC'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_THROTTLE_HINT_SUBMIT_INFO_SEC'
+--
+-- == Stub API References
+--
+-- There is currently no specification language written for this type. This
+-- section acts only as placeholder and to avoid dead links in the
+-- specification and reference pages.
+--
+-- > // Provided by VK_SEC_throttle_hint
+-- > typedef struct VkPhysicalDeviceThrottleHintFeaturesSEC {
+-- >     VkStructureType    sType;
+-- >     void*              pNext;
+-- >     VkBool32           throttleHint;
+-- > } VkPhysicalDeviceThrottleHintFeaturesSEC;
+--
+-- === Valid Usage (Implicit)
+--
+-- -   #VUID-VkPhysicalDeviceThrottleHintFeaturesSEC-sType-sType# @sType@
+--     /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_THROTTLE_HINT_FEATURES_SEC'
+--
+-- === Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- There is currently no specification language written for this type. This
+-- section acts only as placeholder and to avoid dead links in the
+-- specification and reference pages.
+--
+-- > // Provided by VK_SEC_throttle_hint
+-- > typedef struct VkThrottleHintSubmitInfoSEC {
+-- >     VkStructureType          sType;
+-- >     const void*              pNext;
+-- >     VkThrottleHintTypeSEC    throttleHint;
+-- > } VkThrottleHintSubmitInfoSEC;
+--
+-- === Valid Usage (Implicit)
+--
+-- -   #VUID-VkThrottleHintSubmitInfoSEC-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_THROTTLE_HINT_SUBMIT_INFO_SEC'
+--
+-- -   #VUID-VkThrottleHintSubmitInfoSEC-throttleHint-parameter#
+--     @throttleHint@ /must/ be a valid 'ThrottleHintTypeSEC' value
+--
+-- === Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.Queue.SubmitInfo'
+--
+-- There is currently no specification language written for this type. This
+-- section acts only as placeholder and to avoid dead links in the
+-- specification and reference pages.
+--
+-- > // Provided by VK_SEC_throttle_hint
+-- > typedef enum VkThrottleHintTypeSEC {
+-- >     VK_THROTTLE_HINT_TYPE_DEFAULT_SEC = 0,
+-- >     VK_THROTTLE_HINT_TYPE_LOW_SEC = 1,
+-- >     VK_THROTTLE_HINT_TYPE_HIGH_SEC = 2,
+-- > } VkThrottleHintTypeSEC;
+--
+-- == Version History
+--
+-- -   Revision 1, 2026-04-09 (Ralph Potter)
+--
+--     -   Initial specification
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_SEC_throttle_hint Vulkan Specification>.
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_SEC_throttle_hint  ( PhysicalDeviceThrottleHintFeaturesSEC
+                                               , ThrottleHintSubmitInfoSEC
+                                               ) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data PhysicalDeviceThrottleHintFeaturesSEC
+
+instance ToCStruct PhysicalDeviceThrottleHintFeaturesSEC
+instance Show PhysicalDeviceThrottleHintFeaturesSEC
+
+instance FromCStruct PhysicalDeviceThrottleHintFeaturesSEC
+
+
+data ThrottleHintSubmitInfoSEC
+
+instance ToCStruct ThrottleHintSubmitInfoSEC
+instance Show ThrottleHintSubmitInfoSEC
+
+instance FromCStruct ThrottleHintSubmitInfoSEC
+
diff --git a/src/Vulkan/Extensions/VK_VALVE_descriptor_set_host_mapping.hs b/src/Vulkan/Extensions/VK_VALVE_descriptor_set_host_mapping.hs
--- a/src/Vulkan/Extensions/VK_VALVE_descriptor_set_host_mapping.hs
+++ b/src/Vulkan/Extensions/VK_VALVE_descriptor_set_host_mapping.hs
@@ -163,6 +163,14 @@
 --     @sType@ /must/ be
 --     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE'
 --
+-- === Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- There is currently no specification language written for this type. This
 -- section acts only as placeholder and to avoid dead links in the
 -- specification and reference pages.
@@ -222,7 +230,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_VALVE_descriptor_set_host_mapping Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_VALVE_descriptor_set_host_mapping Vulkan Specification>.
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -383,7 +391,13 @@
 -- | VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE - Stub description
 -- of VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE
 --
--- == Valid Usage (Implicit)
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Extensions/VK_VALVE_descriptor_set_host_mapping.hs-boot b/src/Vulkan/Extensions/VK_VALVE_descriptor_set_host_mapping.hs-boot
--- a/src/Vulkan/Extensions/VK_VALVE_descriptor_set_host_mapping.hs-boot
+++ b/src/Vulkan/Extensions/VK_VALVE_descriptor_set_host_mapping.hs-boot
@@ -163,6 +163,14 @@
 --     @sType@ /must/ be
 --     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE'
 --
+-- === Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
 -- There is currently no specification language written for this type. This
 -- section acts only as placeholder and to avoid dead links in the
 -- specification and reference pages.
@@ -222,7 +230,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_VALVE_descriptor_set_host_mapping Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_VALVE_descriptor_set_host_mapping Vulkan Specification>.
 --
 -- This 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_fragment_density_map_layered.hs b/src/Vulkan/Extensions/VK_VALVE_fragment_density_map_layered.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_VALVE_fragment_density_map_layered.hs
@@ -0,0 +1,379 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_VALVE_fragment_density_map_layered - device extension
+--
+-- = VK_VALVE_fragment_density_map_layered
+--
+-- [__Name String__]
+--     @VK_VALVE_fragment_density_map_layered@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     612
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Not ratified
+--
+-- [__Extension and Version Dependencies__]
+--         
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance5 VK_KHR_maintenance5>
+--          or
+--         
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.4 Vulkan Version 1.4>
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_fragment_density_map VK_EXT_fragment_density_map>
+--
+-- [__Contact__]
+--
+--     -   Connor Abbott
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_VALVE_fragment_density_map_layered] @cwabbott0%0A*Here describe the issue or question you have about the VK_VALVE_fragment_density_map_layered extension* >
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2025-06-06
+--
+-- [__Interactions and External Dependencies__]
+--
+--     -   Interacts with Vulkan 1.1.
+--
+--     -   Interacts with Vulkan 1.3.
+--
+--     -   Interacts with Vulkan 1.4.
+--
+--     -   Interacts with @VK_EXT_fragment_density_map@.
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Contributors__]
+--
+--     -   Connor Abbott, VALVE
+--
+--     -   Mike Blumenkrantz, VALVE
+--
+-- == Description
+--
+-- This extension enables the use of layered fragment density maps.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo':
+--
+--     -   'PipelineFragmentDensityMapLayeredCreateInfoVALVE'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE'
+--
+-- == New Enum Constants
+--
+-- -   'VALVE_FRAGMENT_DENSITY_MAP_LAYERED_EXTENSION_NAME'
+--
+-- -   'VALVE_FRAGMENT_DENSITY_MAP_LAYERED_SPEC_VERSION'
+--
+-- -   Extending
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PipelineCreateFlagBits2':
+--
+--     -   'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE'
+--
+-- -   Extending 'Vulkan.Core13.Enums.RenderingFlagBits.RenderingFlagBits':
+--
+--     -   'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.RenderPassCreateFlagBits.RenderPassCreateFlagBits':
+--
+--     -   'Vulkan.Core10.Enums.RenderPassCreateFlagBits.RENDER_PASS_CREATE_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_FEATURES_VALVE'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_PROPERTIES_VALVE'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_FRAGMENT_DENSITY_MAP_LAYERED_CREATE_INFO_VALVE'
+--
+-- == Version History
+--
+-- -   Revision 1, 2025-06-06 (Mike Blumenkrantz)
+--
+--     -   Initial version
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_VALVE_fragment_density_map_layered Vulkan Specification>.
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_VALVE_fragment_density_map_layered  ( PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE(..)
+                                                                , PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE(..)
+                                                                , PipelineFragmentDensityMapLayeredCreateInfoVALVE(..)
+                                                                , VALVE_FRAGMENT_DENSITY_MAP_LAYERED_SPEC_VERSION
+                                                                , pattern VALVE_FRAGMENT_DENSITY_MAP_LAYERED_SPEC_VERSION
+                                                                , VALVE_FRAGMENT_DENSITY_MAP_LAYERED_EXTENSION_NAME
+                                                                , pattern VALVE_FRAGMENT_DENSITY_MAP_LAYERED_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_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_FEATURES_VALVE))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_PROPERTIES_VALVE))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_FRAGMENT_DENSITY_MAP_LAYERED_CREATE_INFO_VALVE))
+-- | VkPhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE - Structure
+-- describing fragment density map layered properties that can be supported
+-- by an implementation
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE'
+-- 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.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VALVE_fragment_density_map_layered VK_VALVE_fragment_density_map_layered>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE = PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE
+  { -- | #limits-maxFragmentDensityMapLayers# @maxFragmentDensityMapLayers@ is
+    -- the maximum number of layers to use with a layered fragment density map.
+    maxFragmentDensityMapLayers :: Word32 }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE)
+#endif
+deriving instance Show PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE
+
+instance ToCStruct PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_PROPERTIES_VALVE)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (maxFragmentDensityMapLayers)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_PROPERTIES_VALVE)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE where
+  peekCStruct p = do
+    maxFragmentDensityMapLayers <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    pure $ PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE
+             maxFragmentDensityMapLayers
+
+instance Storable PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE where
+  zero = PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE
+           zero
+
+
+-- | VkPhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE - Structure
+-- describing additional layered fragment density map features that can be
+-- supported by an implementation
+--
+-- = Members
+--
+-- This structure describes the following feature:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE', it /must/ add an
+-- instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VALVE_fragment_density_map_layered VK_VALVE_fragment_density_map_layered>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE = PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE
+  { -- | #features-fragmentDensityMapLayered# @fragmentDensityMapLayered@
+    -- specifies whether the implementation supports layered fragment density
+    -- maps.
+    fragmentDensityMapLayered :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE)
+#endif
+deriving instance Show PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE
+
+instance ToCStruct PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_FEATURES_VALVE)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (fragmentDensityMapLayered))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_FEATURES_VALVE)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE where
+  peekCStruct p = do
+    fragmentDensityMapLayered <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE
+             (bool32ToBool fragmentDensityMapLayered)
+
+instance Storable PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE where
+  zero = PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE
+           zero
+
+
+-- | VkPipelineFragmentDensityMapLayeredCreateInfoVALVE - Structure
+-- specifying layered fragment density map info
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structure>]
+--
+--     -   'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VALVE_fragment_density_map_layered VK_VALVE_fragment_density_map_layered>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PipelineFragmentDensityMapLayeredCreateInfoVALVE = PipelineFragmentDensityMapLayeredCreateInfoVALVE
+  { -- | @maxFragmentDensityMapLayers@ is the maximum number of layers which can
+    -- be used with a fragment density map.
+    --
+    -- #VUID-VkPipelineFragmentDensityMapLayeredCreateInfoVALVE-maxFragmentDensityMapLayers-10825#
+    -- @maxFragmentDensityMapLayers@ /must/ be less than or equal to
+    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxFragmentDensityMapLayers maxFragmentDensityMapLayers>
+    maxFragmentDensityMapLayers :: Word32 }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PipelineFragmentDensityMapLayeredCreateInfoVALVE)
+#endif
+deriving instance Show PipelineFragmentDensityMapLayeredCreateInfoVALVE
+
+instance ToCStruct PipelineFragmentDensityMapLayeredCreateInfoVALVE where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PipelineFragmentDensityMapLayeredCreateInfoVALVE{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_FRAGMENT_DENSITY_MAP_LAYERED_CREATE_INFO_VALVE)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (maxFragmentDensityMapLayers)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_FRAGMENT_DENSITY_MAP_LAYERED_CREATE_INFO_VALVE)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct PipelineFragmentDensityMapLayeredCreateInfoVALVE where
+  peekCStruct p = do
+    maxFragmentDensityMapLayers <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    pure $ PipelineFragmentDensityMapLayeredCreateInfoVALVE
+             maxFragmentDensityMapLayers
+
+instance Storable PipelineFragmentDensityMapLayeredCreateInfoVALVE where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PipelineFragmentDensityMapLayeredCreateInfoVALVE where
+  zero = PipelineFragmentDensityMapLayeredCreateInfoVALVE
+           zero
+
+
+type VALVE_FRAGMENT_DENSITY_MAP_LAYERED_SPEC_VERSION = 1
+
+-- No documentation found for TopLevel "VK_VALVE_FRAGMENT_DENSITY_MAP_LAYERED_SPEC_VERSION"
+pattern VALVE_FRAGMENT_DENSITY_MAP_LAYERED_SPEC_VERSION :: forall a . Integral a => a
+pattern VALVE_FRAGMENT_DENSITY_MAP_LAYERED_SPEC_VERSION = 1
+
+
+type VALVE_FRAGMENT_DENSITY_MAP_LAYERED_EXTENSION_NAME = "VK_VALVE_fragment_density_map_layered"
+
+-- No documentation found for TopLevel "VK_VALVE_FRAGMENT_DENSITY_MAP_LAYERED_EXTENSION_NAME"
+pattern VALVE_FRAGMENT_DENSITY_MAP_LAYERED_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern VALVE_FRAGMENT_DENSITY_MAP_LAYERED_EXTENSION_NAME = "VK_VALVE_fragment_density_map_layered"
+
diff --git a/src/Vulkan/Extensions/VK_VALVE_fragment_density_map_layered.hs-boot b/src/Vulkan/Extensions/VK_VALVE_fragment_density_map_layered.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_VALVE_fragment_density_map_layered.hs-boot
@@ -0,0 +1,159 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_VALVE_fragment_density_map_layered - device extension
+--
+-- = VK_VALVE_fragment_density_map_layered
+--
+-- [__Name String__]
+--     @VK_VALVE_fragment_density_map_layered@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     612
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Not ratified
+--
+-- [__Extension and Version Dependencies__]
+--         
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance5 VK_KHR_maintenance5>
+--          or
+--         
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.4 Vulkan Version 1.4>
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_fragment_density_map VK_EXT_fragment_density_map>
+--
+-- [__Contact__]
+--
+--     -   Connor Abbott
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_VALVE_fragment_density_map_layered] @cwabbott0%0A*Here describe the issue or question you have about the VK_VALVE_fragment_density_map_layered extension* >
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2025-06-06
+--
+-- [__Interactions and External Dependencies__]
+--
+--     -   Interacts with Vulkan 1.1.
+--
+--     -   Interacts with Vulkan 1.3.
+--
+--     -   Interacts with Vulkan 1.4.
+--
+--     -   Interacts with @VK_EXT_fragment_density_map@.
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Contributors__]
+--
+--     -   Connor Abbott, VALVE
+--
+--     -   Mike Blumenkrantz, VALVE
+--
+-- == Description
+--
+-- This extension enables the use of layered fragment density maps.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo':
+--
+--     -   'PipelineFragmentDensityMapLayeredCreateInfoVALVE'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE'
+--
+-- == New Enum Constants
+--
+-- -   'VALVE_FRAGMENT_DENSITY_MAP_LAYERED_EXTENSION_NAME'
+--
+-- -   'VALVE_FRAGMENT_DENSITY_MAP_LAYERED_SPEC_VERSION'
+--
+-- -   Extending
+--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PipelineCreateFlagBits2':
+--
+--     -   'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE'
+--
+-- -   Extending 'Vulkan.Core13.Enums.RenderingFlagBits.RenderingFlagBits':
+--
+--     -   'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.RenderPassCreateFlagBits.RenderPassCreateFlagBits':
+--
+--     -   'Vulkan.Core10.Enums.RenderPassCreateFlagBits.RENDER_PASS_CREATE_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_FEATURES_VALVE'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_PROPERTIES_VALVE'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_FRAGMENT_DENSITY_MAP_LAYERED_CREATE_INFO_VALVE'
+--
+-- == Version History
+--
+-- -   Revision 1, 2025-06-06 (Mike Blumenkrantz)
+--
+--     -   Initial version
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_VALVE_fragment_density_map_layered Vulkan Specification>.
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_VALVE_fragment_density_map_layered  ( PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE
+                                                                , PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE
+                                                                , PipelineFragmentDensityMapLayeredCreateInfoVALVE
+                                                                ) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE
+
+instance ToCStruct PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE
+instance Show PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE
+
+instance FromCStruct PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE
+
+
+data PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE
+
+instance ToCStruct PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE
+instance Show PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE
+
+instance FromCStruct PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE
+
+
+data PipelineFragmentDensityMapLayeredCreateInfoVALVE
+
+instance ToCStruct PipelineFragmentDensityMapLayeredCreateInfoVALVE
+instance Show PipelineFragmentDensityMapLayeredCreateInfoVALVE
+
+instance FromCStruct PipelineFragmentDensityMapLayeredCreateInfoVALVE
+
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
@@ -134,7 +134,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_VALVE_mutable_descriptor_type Vulkan Specification>
+-- <https://registry.khronos.org/vulkan/specs/latest/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/Extensions/VK_VALVE_shader_mixed_float_dot_product.hs b/src/Vulkan/Extensions/VK_VALVE_shader_mixed_float_dot_product.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_VALVE_shader_mixed_float_dot_product.hs
@@ -0,0 +1,258 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_VALVE_shader_mixed_float_dot_product - device extension
+--
+-- = VK_VALVE_shader_mixed_float_dot_product
+--
+-- [__Name String__]
+--     @VK_VALVE_shader_mixed_float_dot_product@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     674
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Not ratified
+--
+-- [__Extension and Version Dependencies__]
+--         
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--          or
+--         
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
+--     and
+--         
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_shader_float16_int8 VK_KHR_shader_float16_int8>
+--          or
+--         
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.2 Vulkan Version 1.2>
+--
+-- [__SPIR-V Dependencies__]
+--
+--     -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/VALVE/SPV_VALVE_mixed_float_dot_product.html SPV_VALVE_mixed_float_dot_product>
+--
+-- [__Contact__]
+--
+--     -   Georg Lehmann
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_VALVE_shader_mixed_float_dot_product] @DadSchoorse%0A*Here describe the issue or question you have about the VK_VALVE_shader_mixed_float_dot_product extension* >
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2026-02-04
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Contributors__]
+--
+--     -   Georg Lehmann, Valve
+--
+--     -   Mike Blumenkrantz, Valve
+--
+-- == Description
+--
+-- This extension enables support for mixed precision dot product
+-- accumulate operations in shaders as defined in
+-- @SPV_VALVE_mixed_float_dot_product@.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE'
+--
+-- == New Enum Constants
+--
+-- -   'VALVE_SHADER_MIXED_FLOAT_DOT_PRODUCT_EXTENSION_NAME'
+--
+-- -   'VALVE_SHADER_MIXED_FLOAT_DOT_PRODUCT_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MIXED_FLOAT_DOT_PRODUCT_FEATURES_VALVE'
+--
+-- == New SPIR-V Capabilities
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-DotProductFloat16AccFloat32VALVE DotProductFloat16AccFloat32VALVE>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-DotProductFloat16AccFloat16VALVE DotProductFloat16AccFloat16VALVE>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-DotProductBFloat16AccVALVE DotProductBFloat16AccVALVE>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-DotProductFloat8AccFloat32VALVE DotProductFloat8AccFloat32VALVE>
+--
+-- == Version History
+--
+-- -   Revision 1, 2026-02-04 (Georg Lehmann)
+--
+--     -   Initial specification
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_VALVE_shader_mixed_float_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_VALVE_shader_mixed_float_dot_product  ( PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE(..)
+                                                                  , VALVE_SHADER_MIXED_FLOAT_DOT_PRODUCT_SPEC_VERSION
+                                                                  , pattern VALVE_SHADER_MIXED_FLOAT_DOT_PRODUCT_SPEC_VERSION
+                                                                  , VALVE_SHADER_MIXED_FLOAT_DOT_PRODUCT_EXTENSION_NAME
+                                                                  , pattern VALVE_SHADER_MIXED_FLOAT_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_MIXED_FLOAT_DOT_PRODUCT_FEATURES_VALVE))
+-- | VkPhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE - Structure
+-- describing support for mixed float dot products
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE' 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. If the application wishes to use a
+-- 'Vulkan.Core10.Handles.Device' with any features described by
+-- 'PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE', it /must/ add
+-- an instance of the structure, with the desired feature members set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
+-- 'Vulkan.Core10.Handles.Device'.
+--
+-- == Structure Chaining
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-validusage-pNext Extends the structures>]
+--
+--     -   'Vulkan.Core10.Device.DeviceCreateInfo'
+--
+--     -   'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VALVE_shader_mixed_float_dot_product VK_VALVE_shader_mixed_float_dot_product>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE = PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE
+  { -- | #features-shaderMixedFloatDotProductFloat16AccFloat32#
+    -- @shaderMixedFloatDotProductFloat16AccFloat32@ indicates whether the
+    -- implementation supports shaders with the
+    -- @DotProductFloat16AccFloat32VALVE@ capability.
+    shaderMixedFloatDotProductFloat16AccFloat32 :: Bool
+  , -- | #features-shaderMixedFloatDotProductFloat16AccFloat16#
+    -- @shaderMixedFloatDotProductFloat16AccFloat16@ indicates whether the
+    -- implementation supports shaders with the
+    -- @DotProductFloat16AccFloat16VALVE@ capability.
+    shaderMixedFloatDotProductFloat16AccFloat16 :: Bool
+  , -- | #features-shaderMixedFloatDotProductBFloat16Acc#
+    -- @shaderMixedFloatDotProductBFloat16Acc@ indicates whether the
+    -- implementation supports shaders with the @DotProductBFloat16AccVALVE@
+    -- capability.
+    shaderMixedFloatDotProductBFloat16Acc :: Bool
+  , -- | #features-shaderMixedFloatDotProductFloat8AccFloat32#
+    -- @shaderMixedFloatDotProductFloat8AccFloat32@ indicates whether the
+    -- implementation supports shaders with the
+    -- @DotProductFloat8AccFloat32VALVE@ capability.
+    shaderMixedFloatDotProductFloat8AccFloat32 :: Bool
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE)
+#endif
+deriving instance Show PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE
+
+instance ToCStruct PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MIXED_FLOAT_DOT_PRODUCT_FEATURES_VALVE)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (shaderMixedFloatDotProductFloat16AccFloat32))
+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (shaderMixedFloatDotProductFloat16AccFloat16))
+    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (shaderMixedFloatDotProductBFloat16Acc))
+    poke ((p `plusPtr` 28 :: Ptr Bool32)) (boolToBool32 (shaderMixedFloatDotProductFloat8AccFloat32))
+    f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MIXED_FLOAT_DOT_PRODUCT_FEATURES_VALVE)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 28 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE where
+  peekCStruct p = do
+    shaderMixedFloatDotProductFloat16AccFloat32 <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    shaderMixedFloatDotProductFloat16AccFloat16 <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
+    shaderMixedFloatDotProductBFloat16Acc <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))
+    shaderMixedFloatDotProductFloat8AccFloat32 <- peek @Bool32 ((p `plusPtr` 28 :: Ptr Bool32))
+    pure $ PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE
+             (bool32ToBool shaderMixedFloatDotProductFloat16AccFloat32)
+             (bool32ToBool shaderMixedFloatDotProductFloat16AccFloat16)
+             (bool32ToBool shaderMixedFloatDotProductBFloat16Acc)
+             (bool32ToBool shaderMixedFloatDotProductFloat8AccFloat32)
+
+instance Storable PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE where
+  sizeOf ~_ = 32
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE where
+  zero = PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE
+           zero
+           zero
+           zero
+           zero
+
+
+type VALVE_SHADER_MIXED_FLOAT_DOT_PRODUCT_SPEC_VERSION = 1
+
+-- No documentation found for TopLevel "VK_VALVE_SHADER_MIXED_FLOAT_DOT_PRODUCT_SPEC_VERSION"
+pattern VALVE_SHADER_MIXED_FLOAT_DOT_PRODUCT_SPEC_VERSION :: forall a . Integral a => a
+pattern VALVE_SHADER_MIXED_FLOAT_DOT_PRODUCT_SPEC_VERSION = 1
+
+
+type VALVE_SHADER_MIXED_FLOAT_DOT_PRODUCT_EXTENSION_NAME = "VK_VALVE_shader_mixed_float_dot_product"
+
+-- No documentation found for TopLevel "VK_VALVE_SHADER_MIXED_FLOAT_DOT_PRODUCT_EXTENSION_NAME"
+pattern VALVE_SHADER_MIXED_FLOAT_DOT_PRODUCT_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern VALVE_SHADER_MIXED_FLOAT_DOT_PRODUCT_EXTENSION_NAME = "VK_VALVE_shader_mixed_float_dot_product"
+
diff --git a/src/Vulkan/Extensions/VK_VALVE_shader_mixed_float_dot_product.hs-boot b/src/Vulkan/Extensions/VK_VALVE_shader_mixed_float_dot_product.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_VALVE_shader_mixed_float_dot_product.hs-boot
@@ -0,0 +1,122 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_VALVE_shader_mixed_float_dot_product - device extension
+--
+-- = VK_VALVE_shader_mixed_float_dot_product
+--
+-- [__Name String__]
+--     @VK_VALVE_shader_mixed_float_dot_product@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     674
+--
+-- [__Revision__]
+--     1
+--
+-- [__Ratification Status__]
+--     Not ratified
+--
+-- [__Extension and Version Dependencies__]
+--         
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
+--          or
+--         
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
+--     and
+--         
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_shader_float16_int8 VK_KHR_shader_float16_int8>
+--          or
+--         
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.2 Vulkan Version 1.2>
+--
+-- [__SPIR-V Dependencies__]
+--
+--     -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/VALVE/SPV_VALVE_mixed_float_dot_product.html SPV_VALVE_mixed_float_dot_product>
+--
+-- [__Contact__]
+--
+--     -   Georg Lehmann
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_VALVE_shader_mixed_float_dot_product] @DadSchoorse%0A*Here describe the issue or question you have about the VK_VALVE_shader_mixed_float_dot_product extension* >
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2026-02-04
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Contributors__]
+--
+--     -   Georg Lehmann, Valve
+--
+--     -   Mike Blumenkrantz, Valve
+--
+-- == Description
+--
+-- This extension enables support for mixed precision dot product
+-- accumulate operations in shaders as defined in
+-- @SPV_VALVE_mixed_float_dot_product@.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE'
+--
+-- == New Enum Constants
+--
+-- -   'VALVE_SHADER_MIXED_FLOAT_DOT_PRODUCT_EXTENSION_NAME'
+--
+-- -   'VALVE_SHADER_MIXED_FLOAT_DOT_PRODUCT_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MIXED_FLOAT_DOT_PRODUCT_FEATURES_VALVE'
+--
+-- == New SPIR-V Capabilities
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-DotProductFloat16AccFloat32VALVE DotProductFloat16AccFloat32VALVE>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-DotProductFloat16AccFloat16VALVE DotProductFloat16AccFloat16VALVE>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-DotProductBFloat16AccVALVE DotProductBFloat16AccVALVE>
+--
+-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-DotProductFloat8AccFloat32VALVE DotProductFloat8AccFloat32VALVE>
+--
+-- == Version History
+--
+-- -   Revision 1, 2026-02-04 (Georg Lehmann)
+--
+--     -   Initial specification
+--
+-- == See Also
+--
+-- No cross-references are available
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_VALVE_shader_mixed_float_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_VALVE_shader_mixed_float_dot_product  (PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE
+
+instance ToCStruct PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE
+instance Show PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE
+
+instance FromCStruct PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE
+
diff --git a/src/Vulkan/SPIRVRequirements.hs b/src/Vulkan/SPIRVRequirements.hs
--- a/src/Vulkan/SPIRVRequirements.hs
+++ b/src/Vulkan/SPIRVRequirements.hs
@@ -14,2755 +14,815 @@
 import Data.ByteString (ByteString)
 import Vulkan.Core10.Handles (Instance)
 import Vulkan.Core10.Handles (PhysicalDevice)
-import Vulkan.Core11.Promoted_From_VK_KHR_16bit_storage (PhysicalDevice16BitStorageFeatures(..))
-import Vulkan.Extensions.VK_EXT_buffer_device_address (PhysicalDeviceBufferDeviceAddressFeaturesEXT(..))
-import Vulkan.Extensions.VK_HUAWEI_cluster_culling_shader (PhysicalDeviceClusterCullingShaderFeaturesHUAWEI(..))
-import Vulkan.Extensions.VK_KHR_compute_shader_derivatives (PhysicalDeviceComputeShaderDerivativesFeaturesKHR(..))
-import Vulkan.Extensions.VK_NV_compute_shader_derivatives (PhysicalDeviceComputeShaderDerivativesFeaturesNV)
-import Vulkan.Extensions.VK_KHR_compute_shader_derivatives (PhysicalDeviceComputeShaderDerivativesFeaturesKHR(..))
-import Vulkan.Extensions.VK_NV_cooperative_matrix2 (PhysicalDeviceCooperativeMatrix2FeaturesNV(..))
-import Vulkan.Extensions.VK_KHR_cooperative_matrix (PhysicalDeviceCooperativeMatrixFeaturesKHR(..))
-import Vulkan.Extensions.VK_NV_cooperative_matrix (PhysicalDeviceCooperativeMatrixFeaturesNV(..))
-import Vulkan.Core10.DeviceInitialization (PhysicalDeviceFeatures(..))
-import Vulkan.Extensions.VK_EXT_fragment_density_map (PhysicalDeviceFragmentDensityMapFeaturesEXT(..))
-import Vulkan.Extensions.VK_KHR_fragment_shader_barycentric (PhysicalDeviceFragmentShaderBarycentricFeaturesKHR(..))
-import Vulkan.Extensions.VK_NV_fragment_shader_barycentric (PhysicalDeviceFragmentShaderBarycentricFeaturesNV)
-import Vulkan.Extensions.VK_KHR_fragment_shader_barycentric (PhysicalDeviceFragmentShaderBarycentricFeaturesKHR(..))
-import Vulkan.Extensions.VK_EXT_fragment_shader_interlock (PhysicalDeviceFragmentShaderInterlockFeaturesEXT(..))
-import Vulkan.Extensions.VK_KHR_fragment_shading_rate (PhysicalDeviceFragmentShadingRateFeaturesKHR(..))
-import Vulkan.Extensions.VK_QCOM_image_processing2 (PhysicalDeviceImageProcessing2FeaturesQCOM(..))
-import Vulkan.Extensions.VK_QCOM_image_processing (PhysicalDeviceImageProcessingFeaturesQCOM(..))
-import Vulkan.Core11.Promoted_From_VK_KHR_multiview (PhysicalDeviceMultiviewFeatures(..))
-import Vulkan.Extensions.VK_NV_raw_access_chains (PhysicalDeviceRawAccessChainsFeaturesNV(..))
-import Vulkan.Extensions.VK_KHR_ray_query (PhysicalDeviceRayQueryFeaturesKHR(..))
-import Vulkan.Extensions.VK_KHR_ray_tracing_maintenance1 (PhysicalDeviceRayTracingMaintenance1FeaturesKHR(..))
-import Vulkan.Extensions.VK_NV_ray_tracing_motion_blur (PhysicalDeviceRayTracingMotionBlurFeaturesNV(..))
-import Vulkan.Extensions.VK_KHR_ray_tracing_pipeline (PhysicalDeviceRayTracingPipelineFeaturesKHR(..))
-import Vulkan.Extensions.VK_KHR_ray_tracing_position_fetch (PhysicalDeviceRayTracingPositionFetchFeaturesKHR(..))
-import Vulkan.Extensions.VK_NV_shader_atomic_float16_vector (PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV(..))
-import Vulkan.Extensions.VK_EXT_shader_atomic_float2 (PhysicalDeviceShaderAtomicFloat2FeaturesEXT(..))
-import Vulkan.Extensions.VK_EXT_shader_atomic_float (PhysicalDeviceShaderAtomicFloatFeaturesEXT(..))
-import Vulkan.Extensions.VK_ARM_shader_core_builtins (PhysicalDeviceShaderCoreBuiltinsFeaturesARM(..))
-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_AMDX_shader_enqueue (PhysicalDeviceShaderEnqueueFeaturesAMDX(..))
-import Vulkan.Extensions.VK_KHR_shader_expect_assume (PhysicalDeviceShaderExpectAssumeFeaturesKHR(..))
-import Vulkan.Extensions.VK_KHR_shader_float_controls2 (PhysicalDeviceShaderFloatControls2FeaturesKHR(..))
-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.Core13.Promoted_From_VK_KHR_shader_integer_dot_product (PhysicalDeviceShaderIntegerDotProductFeatures(..))
-import Vulkan.Extensions.VK_INTEL_shader_integer_functions2 (PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL(..))
-import Vulkan.Extensions.VK_KHR_shader_quad_control (PhysicalDeviceShaderQuadControlFeaturesKHR(..))
-import Vulkan.Extensions.VK_EXT_shader_replicated_composites (PhysicalDeviceShaderReplicatedCompositesFeaturesEXT(..))
-import Vulkan.Extensions.VK_NV_shader_sm_builtins (PhysicalDeviceShaderSMBuiltinsFeaturesNV(..))
-import Vulkan.Extensions.VK_KHR_shader_subgroup_rotate (PhysicalDeviceShaderSubgroupRotateFeaturesKHR(..))
-import Vulkan.Extensions.VK_EXT_shader_tile_image (PhysicalDeviceShaderTileImageFeaturesEXT(..))
-import Vulkan.Extensions.VK_NV_shading_rate_image (PhysicalDeviceShadingRateImageFeaturesNV(..))
-import Vulkan.Extensions.VK_EXT_transform_feedback (PhysicalDeviceTransformFeedbackFeaturesEXT(..))
-import Vulkan.Core11.Promoted_From_VK_KHR_variable_pointers (PhysicalDeviceVariablePointersFeatures(..))
-import Vulkan.Core12 (PhysicalDeviceVulkan11Features(..))
-import Vulkan.Core12 (PhysicalDeviceVulkan11Properties)
-import Vulkan.Core12 (PhysicalDeviceVulkan11Properties(..))
-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_AMDX_shader_enqueue (pattern AMDX_SHADER_ENQUEUE_EXTENSION_NAME)
-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)
-import Vulkan.Extensions.VK_AMD_gpu_shader_int16 (pattern AMD_GPU_SHADER_INT16_EXTENSION_NAME)
-import Vulkan.Extensions.VK_AMD_shader_ballot (pattern AMD_SHADER_BALLOT_EXTENSION_NAME)
-import Vulkan.Extensions.VK_AMD_shader_early_and_late_fragment_tests (pattern AMD_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_EXTENSION_NAME)
-import Vulkan.Extensions.VK_AMD_shader_explicit_vertex_parameter (pattern AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME)
-import Vulkan.Extensions.VK_AMD_shader_fragment_mask (pattern AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME)
-import Vulkan.Extensions.VK_AMD_shader_image_load_store_lod (pattern AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME)
-import Vulkan.Extensions.VK_AMD_shader_trinary_minmax (pattern AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME)
-import Vulkan.Extensions.VK_AMD_texture_gather_bias_lod (pattern AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME)
-import Vulkan.Extensions.VK_ARM_shader_core_builtins (pattern ARM_SHADER_CORE_BUILTINS_EXTENSION_NAME)
-import Vulkan.Extensions.VK_EXT_buffer_device_address (pattern EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME)
-import Vulkan.Extensions.VK_EXT_conservative_rasterization (pattern EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME)
-import Vulkan.Extensions.VK_EXT_descriptor_indexing (pattern EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME)
-import Vulkan.Extensions.VK_EXT_fragment_density_map (pattern EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME)
-import Vulkan.Extensions.VK_EXT_fragment_shader_interlock (pattern EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME)
-import Vulkan.Extensions.VK_EXT_mesh_shader (pattern EXT_MESH_SHADER_EXTENSION_NAME)
-import Vulkan.Extensions.VK_EXT_opacity_micromap (pattern EXT_OPACITY_MICROMAP_EXTENSION_NAME)
-import Vulkan.Extensions.VK_EXT_post_depth_coverage (pattern EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME)
-import Vulkan.Extensions.VK_EXT_shader_atomic_float2 (pattern EXT_SHADER_ATOMIC_FLOAT_2_EXTENSION_NAME)
-import Vulkan.Extensions.VK_EXT_shader_atomic_float (pattern EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME)
-import Vulkan.Extensions.VK_EXT_shader_demote_to_helper_invocation (pattern EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME)
-import Vulkan.Extensions.VK_EXT_shader_image_atomic_int64 (pattern EXT_SHADER_IMAGE_ATOMIC_INT64_EXTENSION_NAME)
-import Vulkan.Extensions.VK_EXT_shader_replicated_composites (pattern EXT_SHADER_REPLICATED_COMPOSITES_EXTENSION_NAME)
-import Vulkan.Extensions.VK_EXT_shader_stencil_export (pattern EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME)
-import Vulkan.Extensions.VK_EXT_shader_subgroup_ballot (pattern EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME)
-import Vulkan.Extensions.VK_EXT_shader_subgroup_vote (pattern EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME)
-import Vulkan.Extensions.VK_EXT_shader_tile_image (pattern EXT_SHADER_TILE_IMAGE_EXTENSION_NAME)
-import Vulkan.Extensions.VK_EXT_shader_viewport_index_layer (pattern EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME)
-import Vulkan.Extensions.VK_EXT_transform_feedback (pattern EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME)
-import Vulkan.Extensions.VK_GOOGLE_decorate_string (pattern GOOGLE_DECORATE_STRING_EXTENSION_NAME)
-import Vulkan.Extensions.VK_GOOGLE_hlsl_functionality1 (pattern GOOGLE_HLSL_FUNCTIONALITY_1_EXTENSION_NAME)
-import Vulkan.Extensions.VK_GOOGLE_user_type (pattern GOOGLE_USER_TYPE_EXTENSION_NAME)
-import Vulkan.Extensions.VK_HUAWEI_cluster_culling_shader (pattern HUAWEI_CLUSTER_CULLING_SHADER_EXTENSION_NAME)
-import Vulkan.Extensions.VK_HUAWEI_subpass_shading (pattern HUAWEI_SUBPASS_SHADING_EXTENSION_NAME)
-import Vulkan.Extensions.VK_INTEL_shader_integer_functions2 (pattern INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME)
-import Vulkan.Extensions.VK_KHR_16bit_storage (pattern KHR_16BIT_STORAGE_EXTENSION_NAME)
-import Vulkan.Extensions.VK_KHR_8bit_storage (pattern KHR_8BIT_STORAGE_EXTENSION_NAME)
-import Vulkan.Extensions.VK_KHR_buffer_device_address (pattern KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME)
-import Vulkan.Extensions.VK_KHR_compute_shader_derivatives (pattern KHR_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME)
-import Vulkan.Extensions.VK_KHR_cooperative_matrix (pattern KHR_COOPERATIVE_MATRIX_EXTENSION_NAME)
-import Vulkan.Extensions.VK_KHR_device_group (pattern KHR_DEVICE_GROUP_EXTENSION_NAME)
-import Vulkan.Extensions.VK_KHR_format_feature_flags2 (pattern KHR_FORMAT_FEATURE_FLAGS_2_EXTENSION_NAME)
-import Vulkan.Extensions.VK_KHR_fragment_shader_barycentric (pattern KHR_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME)
-import Vulkan.Extensions.VK_KHR_fragment_shading_rate (pattern KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME)
-import Vulkan.Extensions.VK_KHR_multiview (pattern KHR_MULTIVIEW_EXTENSION_NAME)
-import Vulkan.Extensions.VK_KHR_ray_query (pattern KHR_RAY_QUERY_EXTENSION_NAME)
-import Vulkan.Extensions.VK_KHR_ray_tracing_maintenance1 (pattern KHR_RAY_TRACING_MAINTENANCE_1_EXTENSION_NAME)
-import Vulkan.Extensions.VK_KHR_ray_tracing_pipeline (pattern KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME)
-import Vulkan.Extensions.VK_KHR_ray_tracing_position_fetch (pattern KHR_RAY_TRACING_POSITION_FETCH_EXTENSION_NAME)
-import Vulkan.Extensions.VK_KHR_shader_atomic_int64 (pattern KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME)
-import Vulkan.Extensions.VK_KHR_shader_clock (pattern KHR_SHADER_CLOCK_EXTENSION_NAME)
-import Vulkan.Extensions.VK_KHR_shader_draw_parameters (pattern KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME)
-import Vulkan.Extensions.VK_KHR_shader_expect_assume (pattern KHR_SHADER_EXPECT_ASSUME_EXTENSION_NAME)
-import Vulkan.Extensions.VK_KHR_shader_float16_int8 (pattern KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME)
-import Vulkan.Extensions.VK_KHR_shader_float_controls2 (pattern KHR_SHADER_FLOAT_CONTROLS_2_EXTENSION_NAME)
-import Vulkan.Extensions.VK_KHR_shader_float_controls (pattern KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME)
-import Vulkan.Extensions.VK_KHR_shader_integer_dot_product (pattern KHR_SHADER_INTEGER_DOT_PRODUCT_EXTENSION_NAME)
-import Vulkan.Extensions.VK_KHR_shader_maximal_reconvergence (pattern KHR_SHADER_MAXIMAL_RECONVERGENCE_EXTENSION_NAME)
-import Vulkan.Extensions.VK_KHR_shader_non_semantic_info (pattern KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME)
-import Vulkan.Extensions.VK_KHR_shader_quad_control (pattern KHR_SHADER_QUAD_CONTROL_EXTENSION_NAME)
-import Vulkan.Extensions.VK_KHR_shader_relaxed_extended_instruction (pattern KHR_SHADER_RELAXED_EXTENDED_INSTRUCTION_EXTENSION_NAME)
-import Vulkan.Extensions.VK_KHR_shader_subgroup_rotate (pattern KHR_SHADER_SUBGROUP_ROTATE_EXTENSION_NAME)
-import Vulkan.Extensions.VK_KHR_shader_subgroup_uniform_control_flow (pattern KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_EXTENSION_NAME)
-import Vulkan.Extensions.VK_KHR_shader_terminate_invocation (pattern KHR_SHADER_TERMINATE_INVOCATION_EXTENSION_NAME)
-import Vulkan.Extensions.VK_KHR_storage_buffer_storage_class (pattern KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME)
-import Vulkan.Extensions.VK_KHR_variable_pointers (pattern KHR_VARIABLE_POINTERS_EXTENSION_NAME)
-import Vulkan.Extensions.VK_KHR_vulkan_memory_model (pattern KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME)
-import Vulkan.Extensions.VK_KHR_workgroup_memory_explicit_layout (pattern KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_EXTENSION_NAME)
-import Vulkan.Version (pattern MAKE_API_VERSION)
-import Vulkan.Extensions.VK_NVX_multiview_per_view_attributes (pattern NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME)
-import Vulkan.Extensions.VK_NV_compute_shader_derivatives (pattern NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME)
-import Vulkan.Extensions.VK_NV_cooperative_matrix2 (pattern NV_COOPERATIVE_MATRIX_2_EXTENSION_NAME)
-import Vulkan.Extensions.VK_NV_cooperative_matrix (pattern NV_COOPERATIVE_MATRIX_EXTENSION_NAME)
-import Vulkan.Extensions.VK_NV_fragment_shader_barycentric (pattern NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME)
-import Vulkan.Extensions.VK_NV_geometry_shader_passthrough (pattern NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME)
-import Vulkan.Extensions.VK_NV_mesh_shader (pattern NV_MESH_SHADER_EXTENSION_NAME)
-import Vulkan.Extensions.VK_NV_raw_access_chains (pattern NV_RAW_ACCESS_CHAINS_EXTENSION_NAME)
-import Vulkan.Extensions.VK_NV_ray_tracing (pattern NV_RAY_TRACING_EXTENSION_NAME)
-import Vulkan.Extensions.VK_NV_ray_tracing_invocation_reorder (pattern NV_RAY_TRACING_INVOCATION_REORDER_EXTENSION_NAME)
-import Vulkan.Extensions.VK_NV_ray_tracing_motion_blur (pattern NV_RAY_TRACING_MOTION_BLUR_EXTENSION_NAME)
-import Vulkan.Extensions.VK_NV_sample_mask_override_coverage (pattern NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME)
-import Vulkan.Extensions.VK_NV_shader_atomic_float16_vector (pattern NV_SHADER_ATOMIC_FLOAT16_VECTOR_EXTENSION_NAME)
-import Vulkan.Extensions.VK_NV_shader_image_footprint (pattern NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME)
-import Vulkan.Extensions.VK_NV_shader_sm_builtins (pattern NV_SHADER_SM_BUILTINS_EXTENSION_NAME)
-import Vulkan.Extensions.VK_NV_shader_subgroup_partitioned (pattern NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME)
-import Vulkan.Extensions.VK_NV_shading_rate_image (pattern NV_SHADING_RATE_IMAGE_EXTENSION_NAME)
-import Vulkan.Extensions.VK_NV_viewport_array2 (pattern NV_VIEWPORT_ARRAY_2_EXTENSION_NAME)
-import Vulkan.Extensions.VK_QCOM_image_processing2 (pattern QCOM_IMAGE_PROCESSING_2_EXTENSION_NAME)
-import Vulkan.Extensions.VK_QCOM_image_processing (pattern QCOM_IMAGE_PROCESSING_EXTENSION_NAME)
-import Vulkan.Core11.Enums.SubgroupFeatureFlagBits (SubgroupFeatureFlags)
-import Vulkan.Core11.Enums.SubgroupFeatureFlagBits (SubgroupFeatureFlagBits(SUBGROUP_FEATURE_ARITHMETIC_BIT))
-import Vulkan.Core11.Enums.SubgroupFeatureFlagBits (SubgroupFeatureFlags)
-import Vulkan.Core11.Enums.SubgroupFeatureFlagBits (SubgroupFeatureFlagBits(SUBGROUP_FEATURE_BALLOT_BIT))
-import Vulkan.Core11.Enums.SubgroupFeatureFlagBits (SubgroupFeatureFlags)
-import Vulkan.Core11.Enums.SubgroupFeatureFlagBits (SubgroupFeatureFlagBits(SUBGROUP_FEATURE_BASIC_BIT))
-import Vulkan.Core11.Enums.SubgroupFeatureFlagBits (SubgroupFeatureFlags)
-import Vulkan.Core11.Enums.SubgroupFeatureFlagBits (SubgroupFeatureFlagBits(SUBGROUP_FEATURE_CLUSTERED_BIT))
-import Vulkan.Core11.Enums.SubgroupFeatureFlagBits (SubgroupFeatureFlags)
-import Vulkan.Core11.Enums.SubgroupFeatureFlagBits (SubgroupFeatureFlagBits(SUBGROUP_FEATURE_PARTITIONED_BIT_NV))
-import Vulkan.Core11.Enums.SubgroupFeatureFlagBits (SubgroupFeatureFlags)
-import Vulkan.Core11.Enums.SubgroupFeatureFlagBits (SubgroupFeatureFlagBits(SUBGROUP_FEATURE_QUAD_BIT))
-import Vulkan.Core11.Enums.SubgroupFeatureFlagBits (SubgroupFeatureFlags)
-import Vulkan.Core11.Enums.SubgroupFeatureFlagBits (SubgroupFeatureFlagBits(SUBGROUP_FEATURE_SHUFFLE_BIT))
-import Vulkan.Core11.Enums.SubgroupFeatureFlagBits (SubgroupFeatureFlags)
-import Vulkan.Core11.Enums.SubgroupFeatureFlagBits (SubgroupFeatureFlagBits(SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT))
-import Vulkan.Core11.Enums.SubgroupFeatureFlagBits (SubgroupFeatureFlags)
-import Vulkan.Core11.Enums.SubgroupFeatureFlagBits (SubgroupFeatureFlagBits(SUBGROUP_FEATURE_VOTE_BIT))
--- | Check if the intersection of bits is non-zero
-(.&&.) :: Bits a => a -> a -> Bool
-x .&&. y = (x .&. y) /= zeroBits
-
-spirvExtensionRequirements :: ByteString -> ([InstanceRequirement], [DeviceRequirement])
-spirvExtensionRequirements = \case
-  "SPV_KHR_variable_pointers" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 1 0]
-      [RequireDeviceVersion $ MAKE_API_VERSION 1 1 0]
-  "SPV_AMD_shader_explicit_vertex_parameter" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "SPV_AMD_gcn_shader" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = AMD_GCN_SHADER_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "SPV_AMD_gpu_shader_half_float" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "SPV_AMD_gpu_shader_int16" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = AMD_GPU_SHADER_INT16_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "SPV_AMD_shader_ballot" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = AMD_SHADER_BALLOT_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "SPV_AMD_shader_fragment_mask" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "SPV_AMD_shader_image_load_store_lod" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "SPV_AMD_shader_trinary_minmax" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "SPV_AMD_texture_gather_bias_lod" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "SPV_AMD_shader_early_and_late_fragment_tests" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = AMD_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "SPV_KHR_shader_draw_parameters" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 1 0]
-      [RequireDeviceVersion $ MAKE_API_VERSION 1 1 0]
-  "SPV_KHR_8bit_storage" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0]
-      [RequireDeviceVersion $ MAKE_API_VERSION 1 2 0]
-  "SPV_KHR_16bit_storage" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 1 0]
-      [RequireDeviceVersion $ MAKE_API_VERSION 1 1 0]
-  "SPV_KHR_shader_clock" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = KHR_SHADER_CLOCK_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "SPV_KHR_float_controls" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0]
-      [RequireDeviceVersion $ MAKE_API_VERSION 1 2 0]
-  "SPV_KHR_storage_buffer_storage_class" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 1 0]
-      [RequireDeviceVersion $ MAKE_API_VERSION 1 1 0]
-  "SPV_KHR_post_depth_coverage" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "SPV_EXT_shader_stencil_export" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "SPV_KHR_shader_ballot" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "SPV_KHR_subgroup_vote" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "SPV_NV_sample_mask_override_coverage" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "SPV_NV_geometry_shader_passthrough" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "SPV_NV_mesh_shader" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = NV_MESH_SHADER_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "SPV_NV_viewport_array2" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = NV_VIEWPORT_ARRAY_2_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "SPV_NV_shader_subgroup_partitioned" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "SPV_NV_shader_invocation_reorder" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = NV_RAY_TRACING_INVOCATION_REORDER_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "SPV_EXT_shader_viewport_index_layer" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0]
-      [RequireDeviceVersion $ MAKE_API_VERSION 1 2 0]
-  "SPV_NVX_multiview_per_view_attributes" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "SPV_EXT_descriptor_indexing" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0]
-      [RequireDeviceVersion $ MAKE_API_VERSION 1 2 0]
-  "SPV_KHR_vulkan_memory_model" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0]
-      [RequireDeviceVersion $ MAKE_API_VERSION 1 2 0]
-  "SPV_NV_compute_shader_derivatives" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "SPV_NV_fragment_shader_barycentric" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "SPV_NV_shader_image_footprint" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "SPV_NV_shading_rate" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = NV_SHADING_RATE_IMAGE_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "SPV_NV_ray_tracing" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = NV_RAY_TRACING_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "SPV_KHR_ray_tracing" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "SPV_KHR_ray_query" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = KHR_RAY_QUERY_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "SPV_KHR_ray_cull_mask" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = KHR_RAY_TRACING_MAINTENANCE_1_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "SPV_GOOGLE_hlsl_functionality1" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = GOOGLE_HLSL_FUNCTIONALITY_1_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "SPV_GOOGLE_user_type" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = GOOGLE_USER_TYPE_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "SPV_GOOGLE_decorate_string" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = GOOGLE_DECORATE_STRING_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "SPV_EXT_fragment_invocation_density" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "SPV_KHR_physical_storage_buffer" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0]
-      [RequireDeviceVersion $ MAKE_API_VERSION 1 2 0]
-  "SPV_EXT_physical_storage_buffer" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "SPV_NV_cooperative_matrix" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = NV_COOPERATIVE_MATRIX_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "SPV_NV_shader_sm_builtins" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = NV_SHADER_SM_BUILTINS_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "SPV_EXT_fragment_shader_interlock" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = EXT_FRAGMENT_SHADER_INTERLOCK_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" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = KHR_FRAGMENT_SHADING_RATE_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" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = EXT_SHADER_IMAGE_ATOMIC_INT64_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" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "SPV_EXT_shader_atomic_float_add" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "SPV_KHR_fragment_shader_barycentric" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = KHR_FRAGMENT_SHADER_BARYCENTRIC_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" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = EXT_SHADER_ATOMIC_FLOAT_2_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "SPV_EXT_shader_atomic_float16_add" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = EXT_SHADER_ATOMIC_FLOAT_2_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "SPV_NV_shader_atomic_fp16_vector" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = NV_SHADER_ATOMIC_FLOAT16_VECTOR_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "SPV_EXT_fragment_fully_covered" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "SPV_KHR_integer_dot_product" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 3 0]
-      [RequireDeviceVersion $ MAKE_API_VERSION 1 3 0]
-  "SPV_INTEL_shader_integer_functions2" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "SPV_KHR_device_group" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 1 0]
-      [RequireDeviceVersion $ MAKE_API_VERSION 1 1 0]
-  "SPV_QCOM_image_processing" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = QCOM_IMAGE_PROCESSING_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "SPV_QCOM_image_processing2" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = QCOM_IMAGE_PROCESSING_2_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "SPV_EXT_mesh_shader" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = EXT_MESH_SHADER_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "SPV_KHR_ray_tracing_position_fetch" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = KHR_RAY_TRACING_POSITION_FETCH_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "SPV_EXT_shader_tile_image" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = EXT_SHADER_TILE_IMAGE_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "SPV_EXT_opacity_micromap" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = EXT_OPACITY_MICROMAP_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "SPV_KHR_cooperative_matrix" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = KHR_COOPERATIVE_MATRIX_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "SPV_ARM_core_builtins" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = ARM_SHADER_CORE_BUILTINS_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "SPV_AMDX_shader_enqueue" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = AMDX_SHADER_ENQUEUE_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "SPV_HUAWEI_cluster_culling_shader" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = HUAWEI_CLUSTER_CULLING_SHADER_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "SPV_HUAWEI_subpass_shading" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = HUAWEI_SUBPASS_SHADING_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "SPV_NV_ray_tracing_motion_blur" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = NV_RAY_TRACING_MOTION_BLUR_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "SPV_KHR_maximal_reconvergence" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = KHR_SHADER_MAXIMAL_RECONVERGENCE_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "SPV_KHR_subgroup_rotate" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = KHR_SHADER_SUBGROUP_ROTATE_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "SPV_KHR_expect_assume" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = KHR_SHADER_EXPECT_ASSUME_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "SPV_KHR_float_controls2" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = KHR_SHADER_FLOAT_CONTROLS_2_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "SPV_KHR_quad_control" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = KHR_SHADER_QUAD_CONTROL_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "SPV_NV_raw_access_chains" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = NV_RAW_ACCESS_CHAINS_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "SPV_KHR_compute_shader_derivatives" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = KHR_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "SPV_EXT_replicated_composites" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = EXT_SHADER_REPLICATED_COMPOSITES_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "SPV_KHR_relaxed_extended_instruction" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = KHR_SHADER_RELAXED_EXTENDED_INSTRUCTION_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "SPV_NV_cooperative_matrix2" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = NV_COOPERATIVE_MATRIX_2_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "SPV_NV_tensor_addressing" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = NV_COOPERATIVE_MATRIX_2_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  _ -> ([], [])
-
-spirvCapabilityRequirements :: ByteString -> ([InstanceRequirement], [DeviceRequirement])
-spirvCapabilityRequirements = \case
-  "Matrix" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]
-      [RequireDeviceVersion $ MAKE_API_VERSION 1 0 0]
-  "Shader" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]
-      [RequireDeviceVersion $ MAKE_API_VERSION 1 0 0]
-  "InputAttachment" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]
-      [RequireDeviceVersion $ MAKE_API_VERSION 1 0 0]
-  "Sampled1D" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]
-      [RequireDeviceVersion $ MAKE_API_VERSION 1 0 0]
-  "Image1D" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]
-      [RequireDeviceVersion $ MAKE_API_VERSION 1 0 0]
-  "SampledBuffer" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]
-      [RequireDeviceVersion $ MAKE_API_VERSION 1 0 0]
-  "ImageBuffer" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]
-      [RequireDeviceVersion $ MAKE_API_VERSION 1 0 0]
-  "ImageQuery" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]
-      [RequireDeviceVersion $ MAKE_API_VERSION 1 0 0]
-  "DerivativeControl" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]
-      [RequireDeviceVersion $ MAKE_API_VERSION 1 0 0]
-  "Geometry" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]
-      [ RequireDeviceFeature
-          { featureName = "geometryShader"
-          , checkFeature = \PhysicalDeviceFeatures{geometryShader} -> geometryShader
-          , enableFeature = \PhysicalDeviceFeatures{..} -> PhysicalDeviceFeatures{geometryShader = True, ..}
-          }
-      , RequireDeviceVersion $ MAKE_API_VERSION 1 0 0
-      ]
-  "Tessellation" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]
-      [ RequireDeviceFeature
-          { featureName = "tessellationShader"
-          , checkFeature = \PhysicalDeviceFeatures{tessellationShader} -> tessellationShader
-          , enableFeature = \PhysicalDeviceFeatures{..} -> PhysicalDeviceFeatures{tessellationShader = True, ..}
-          }
-      , RequireDeviceVersion $ MAKE_API_VERSION 1 0 0
-      ]
-  "Float64" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]
-      [ RequireDeviceFeature
-          { featureName = "shaderFloat64"
-          , checkFeature = \PhysicalDeviceFeatures{shaderFloat64} -> shaderFloat64
-          , enableFeature = \PhysicalDeviceFeatures{..} -> PhysicalDeviceFeatures{shaderFloat64 = True, ..}
-          }
-      , RequireDeviceVersion $ MAKE_API_VERSION 1 0 0
-      ]
-  "Int64" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]
-      [ RequireDeviceFeature
-          { featureName = "shaderInt64"
-          , checkFeature = \PhysicalDeviceFeatures{shaderInt64} -> shaderInt64
-          , enableFeature = \PhysicalDeviceFeatures{..} -> PhysicalDeviceFeatures{shaderInt64 = True, ..}
-          }
-      , RequireDeviceVersion $ MAKE_API_VERSION 1 0 0
-      ]
-  "Int64Atomics" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0]
-      [ RequireDeviceFeature
-          { featureName = "shaderBufferInt64Atomics"
-          , checkFeature = \PhysicalDeviceVulkan12Features{shaderBufferInt64Atomics} -> shaderBufferInt64Atomics
-          , enableFeature = \PhysicalDeviceVulkan12Features{..} -> PhysicalDeviceVulkan12Features{shaderBufferInt64Atomics = True, ..}
-          }
-      , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "AtomicFloat16AddEXT" ->
-    (,)
-      []
-      [ RequireDeviceFeature
-          { featureName = "shaderBufferFloat16AtomicAdd"
-          , checkFeature = \PhysicalDeviceShaderAtomicFloat2FeaturesEXT{shaderBufferFloat16AtomicAdd} -> shaderBufferFloat16AtomicAdd
-          , enableFeature = \PhysicalDeviceShaderAtomicFloat2FeaturesEXT{..} -> PhysicalDeviceShaderAtomicFloat2FeaturesEXT{shaderBufferFloat16AtomicAdd = True, ..}
-          }
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = EXT_SHADER_ATOMIC_FLOAT_2_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "AtomicFloat32AddEXT" ->
-    (,)
-      []
-      [ RequireDeviceFeature
-          { featureName = "shaderBufferFloat32AtomicAdd"
-          , checkFeature = \PhysicalDeviceShaderAtomicFloatFeaturesEXT{shaderBufferFloat32AtomicAdd} -> shaderBufferFloat32AtomicAdd
-          , enableFeature = \PhysicalDeviceShaderAtomicFloatFeaturesEXT{..} -> PhysicalDeviceShaderAtomicFloatFeaturesEXT{shaderBufferFloat32AtomicAdd = True, ..}
-          }
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "AtomicFloat64AddEXT" ->
-    (,)
-      []
-      [ RequireDeviceFeature
-          { featureName = "shaderBufferFloat64AtomicAdd"
-          , checkFeature = \PhysicalDeviceShaderAtomicFloatFeaturesEXT{shaderBufferFloat64AtomicAdd} -> shaderBufferFloat64AtomicAdd
-          , enableFeature = \PhysicalDeviceShaderAtomicFloatFeaturesEXT{..} -> PhysicalDeviceShaderAtomicFloatFeaturesEXT{shaderBufferFloat64AtomicAdd = True, ..}
-          }
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "AtomicFloat16MinMaxEXT" ->
-    (,)
-      []
-      [ RequireDeviceFeature
-          { featureName = "shaderBufferFloat16AtomicMinMax"
-          , checkFeature = \PhysicalDeviceShaderAtomicFloat2FeaturesEXT{shaderBufferFloat16AtomicMinMax} -> shaderBufferFloat16AtomicMinMax
-          , enableFeature = \PhysicalDeviceShaderAtomicFloat2FeaturesEXT{..} -> PhysicalDeviceShaderAtomicFloat2FeaturesEXT{shaderBufferFloat16AtomicMinMax = True, ..}
-          }
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = EXT_SHADER_ATOMIC_FLOAT_2_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "AtomicFloat32MinMaxEXT" ->
-    (,)
-      []
-      [ RequireDeviceFeature
-          { featureName = "shaderBufferFloat32AtomicMinMax"
-          , checkFeature = \PhysicalDeviceShaderAtomicFloat2FeaturesEXT{shaderBufferFloat32AtomicMinMax} -> shaderBufferFloat32AtomicMinMax
-          , enableFeature = \PhysicalDeviceShaderAtomicFloat2FeaturesEXT{..} -> PhysicalDeviceShaderAtomicFloat2FeaturesEXT{shaderBufferFloat32AtomicMinMax = True, ..}
-          }
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = EXT_SHADER_ATOMIC_FLOAT_2_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "AtomicFloat64MinMaxEXT" ->
-    (,)
-      []
-      [ RequireDeviceFeature
-          { featureName = "shaderBufferFloat64AtomicMinMax"
-          , checkFeature = \PhysicalDeviceShaderAtomicFloat2FeaturesEXT{shaderBufferFloat64AtomicMinMax} -> shaderBufferFloat64AtomicMinMax
-          , enableFeature = \PhysicalDeviceShaderAtomicFloat2FeaturesEXT{..} -> PhysicalDeviceShaderAtomicFloat2FeaturesEXT{shaderBufferFloat64AtomicMinMax = True, ..}
-          }
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = EXT_SHADER_ATOMIC_FLOAT_2_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "AtomicFloat16VectorNV" ->
-    (,)
-      []
-      [ RequireDeviceFeature
-          { featureName = "shaderFloat16VectorAtomics"
-          , checkFeature = \PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV{shaderFloat16VectorAtomics} -> shaderFloat16VectorAtomics
-          , enableFeature = \_ -> PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV{shaderFloat16VectorAtomics = True}
-          }
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = NV_SHADER_ATOMIC_FLOAT16_VECTOR_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "Int64ImageEXT" ->
-    (,)
-      []
-      [ RequireDeviceFeature
-          { featureName = "shaderImageInt64Atomics"
-          , checkFeature = \PhysicalDeviceShaderImageAtomicInt64FeaturesEXT{shaderImageInt64Atomics} -> shaderImageInt64Atomics
-          , enableFeature = \PhysicalDeviceShaderImageAtomicInt64FeaturesEXT{..} -> PhysicalDeviceShaderImageAtomicInt64FeaturesEXT{shaderImageInt64Atomics = True, ..}
-          }
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = EXT_SHADER_IMAGE_ATOMIC_INT64_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "Int16" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]
-      [ RequireDeviceFeature
-          { featureName = "shaderInt16"
-          , checkFeature = \PhysicalDeviceFeatures{shaderInt16} -> shaderInt16
-          , enableFeature = \PhysicalDeviceFeatures{..} -> PhysicalDeviceFeatures{shaderInt16 = True, ..}
-          }
-      , RequireDeviceVersion $ MAKE_API_VERSION 1 0 0
-      ]
-  "TessellationPointSize" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]
-      [ RequireDeviceFeature
-          { featureName = "shaderTessellationAndGeometryPointSize"
-          , checkFeature = \PhysicalDeviceFeatures{shaderTessellationAndGeometryPointSize} -> shaderTessellationAndGeometryPointSize
-          , enableFeature = \PhysicalDeviceFeatures{..} -> PhysicalDeviceFeatures{shaderTessellationAndGeometryPointSize = True, ..}
-          }
-      , RequireDeviceVersion $ MAKE_API_VERSION 1 0 0
-      ]
-  "GeometryPointSize" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]
-      [ RequireDeviceFeature
-          { featureName = "shaderTessellationAndGeometryPointSize"
-          , checkFeature = \PhysicalDeviceFeatures{shaderTessellationAndGeometryPointSize} -> shaderTessellationAndGeometryPointSize
-          , enableFeature = \PhysicalDeviceFeatures{..} -> PhysicalDeviceFeatures{shaderTessellationAndGeometryPointSize = True, ..}
-          }
-      , RequireDeviceVersion $ MAKE_API_VERSION 1 0 0
-      ]
-  "ImageGatherExtended" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]
-      [ RequireDeviceFeature
-          { featureName = "shaderImageGatherExtended"
-          , checkFeature = \PhysicalDeviceFeatures{shaderImageGatherExtended} -> shaderImageGatherExtended
-          , enableFeature = \PhysicalDeviceFeatures{..} -> PhysicalDeviceFeatures{shaderImageGatherExtended = True, ..}
-          }
-      , RequireDeviceVersion $ MAKE_API_VERSION 1 0 0
-      ]
-  "StorageImageMultisample" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]
-      [ RequireDeviceFeature
-          { featureName = "shaderStorageImageMultisample"
-          , checkFeature = \PhysicalDeviceFeatures{shaderStorageImageMultisample} -> shaderStorageImageMultisample
-          , enableFeature = \PhysicalDeviceFeatures{..} -> PhysicalDeviceFeatures{shaderStorageImageMultisample = True, ..}
-          }
-      , RequireDeviceVersion $ MAKE_API_VERSION 1 0 0
-      ]
-  "UniformBufferArrayDynamicIndexing" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]
-      [ RequireDeviceFeature
-          { featureName = "shaderUniformBufferArrayDynamicIndexing"
-          , checkFeature = \PhysicalDeviceFeatures{shaderUniformBufferArrayDynamicIndexing} -> shaderUniformBufferArrayDynamicIndexing
-          , enableFeature = \PhysicalDeviceFeatures{..} -> PhysicalDeviceFeatures{shaderUniformBufferArrayDynamicIndexing = True, ..}
-          }
-      , RequireDeviceVersion $ MAKE_API_VERSION 1 0 0
-      ]
-  "SampledImageArrayDynamicIndexing" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]
-      [ RequireDeviceFeature
-          { featureName = "shaderSampledImageArrayDynamicIndexing"
-          , checkFeature = \PhysicalDeviceFeatures{shaderSampledImageArrayDynamicIndexing} -> shaderSampledImageArrayDynamicIndexing
-          , enableFeature = \PhysicalDeviceFeatures{..} -> PhysicalDeviceFeatures{shaderSampledImageArrayDynamicIndexing = True, ..}
-          }
-      , RequireDeviceVersion $ MAKE_API_VERSION 1 0 0
-      ]
-  "StorageBufferArrayDynamicIndexing" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]
-      [ RequireDeviceFeature
-          { featureName = "shaderStorageBufferArrayDynamicIndexing"
-          , checkFeature = \PhysicalDeviceFeatures{shaderStorageBufferArrayDynamicIndexing} -> shaderStorageBufferArrayDynamicIndexing
-          , enableFeature = \PhysicalDeviceFeatures{..} -> PhysicalDeviceFeatures{shaderStorageBufferArrayDynamicIndexing = True, ..}
-          }
-      , RequireDeviceVersion $ MAKE_API_VERSION 1 0 0
-      ]
-  "StorageImageArrayDynamicIndexing" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]
-      [ RequireDeviceFeature
-          { featureName = "shaderStorageImageArrayDynamicIndexing"
-          , checkFeature = \PhysicalDeviceFeatures{shaderStorageImageArrayDynamicIndexing} -> shaderStorageImageArrayDynamicIndexing
-          , enableFeature = \PhysicalDeviceFeatures{..} -> PhysicalDeviceFeatures{shaderStorageImageArrayDynamicIndexing = True, ..}
-          }
-      , RequireDeviceVersion $ MAKE_API_VERSION 1 0 0
-      ]
-  "ClipDistance" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]
-      [ RequireDeviceFeature
-          { featureName = "shaderClipDistance"
-          , checkFeature = \PhysicalDeviceFeatures{shaderClipDistance} -> shaderClipDistance
-          , enableFeature = \PhysicalDeviceFeatures{..} -> PhysicalDeviceFeatures{shaderClipDistance = True, ..}
-          }
-      , RequireDeviceVersion $ MAKE_API_VERSION 1 0 0
-      ]
-  "CullDistance" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]
-      [ RequireDeviceFeature
-          { featureName = "shaderCullDistance"
-          , checkFeature = \PhysicalDeviceFeatures{shaderCullDistance} -> shaderCullDistance
-          , enableFeature = \PhysicalDeviceFeatures{..} -> PhysicalDeviceFeatures{shaderCullDistance = True, ..}
-          }
-      , RequireDeviceVersion $ MAKE_API_VERSION 1 0 0
-      ]
-  "ImageCubeArray" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]
-      [ RequireDeviceFeature
-          { featureName = "imageCubeArray"
-          , checkFeature = \PhysicalDeviceFeatures{imageCubeArray} -> imageCubeArray
-          , enableFeature = \PhysicalDeviceFeatures{..} -> PhysicalDeviceFeatures{imageCubeArray = True, ..}
-          }
-      , RequireDeviceVersion $ MAKE_API_VERSION 1 0 0
-      ]
-  "SampleRateShading" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]
-      [ RequireDeviceFeature
-          { featureName = "sampleRateShading"
-          , checkFeature = \PhysicalDeviceFeatures{sampleRateShading} -> sampleRateShading
-          , enableFeature = \PhysicalDeviceFeatures{..} -> PhysicalDeviceFeatures{sampleRateShading = True, ..}
-          }
-      , RequireDeviceVersion $ MAKE_API_VERSION 1 0 0
-      ]
-  "SparseResidency" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]
-      [ RequireDeviceFeature
-          { featureName = "shaderResourceResidency"
-          , checkFeature = \PhysicalDeviceFeatures{shaderResourceResidency} -> shaderResourceResidency
-          , enableFeature = \PhysicalDeviceFeatures{..} -> PhysicalDeviceFeatures{shaderResourceResidency = True, ..}
-          }
-      , RequireDeviceVersion $ MAKE_API_VERSION 1 0 0
-      ]
-  "MinLod" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]
-      [ RequireDeviceFeature
-          { featureName = "shaderResourceMinLod"
-          , checkFeature = \PhysicalDeviceFeatures{shaderResourceMinLod} -> shaderResourceMinLod
-          , enableFeature = \PhysicalDeviceFeatures{..} -> PhysicalDeviceFeatures{shaderResourceMinLod = True, ..}
-          }
-      , RequireDeviceVersion $ MAKE_API_VERSION 1 0 0
-      ]
-  "SampledCubeArray" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]
-      [ RequireDeviceFeature
-          { featureName = "imageCubeArray"
-          , checkFeature = \PhysicalDeviceFeatures{imageCubeArray} -> imageCubeArray
-          , enableFeature = \PhysicalDeviceFeatures{..} -> PhysicalDeviceFeatures{imageCubeArray = True, ..}
-          }
-      , RequireDeviceVersion $ MAKE_API_VERSION 1 0 0
-      ]
-  "ImageMSArray" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]
-      [ RequireDeviceFeature
-          { featureName = "shaderStorageImageMultisample"
-          , checkFeature = \PhysicalDeviceFeatures{shaderStorageImageMultisample} -> shaderStorageImageMultisample
-          , enableFeature = \PhysicalDeviceFeatures{..} -> PhysicalDeviceFeatures{shaderStorageImageMultisample = True, ..}
-          }
-      , RequireDeviceVersion $ MAKE_API_VERSION 1 0 0
-      ]
-  "StorageImageExtendedFormats" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]
-      [RequireDeviceVersion $ MAKE_API_VERSION 1 0 0]
-  "InterpolationFunction" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]
-      [ RequireDeviceFeature
-          { featureName = "sampleRateShading"
-          , checkFeature = \PhysicalDeviceFeatures{sampleRateShading} -> sampleRateShading
-          , enableFeature = \PhysicalDeviceFeatures{..} -> PhysicalDeviceFeatures{sampleRateShading = True, ..}
-          }
-      , RequireDeviceVersion $ MAKE_API_VERSION 1 0 0
-      ]
-  "StorageImageReadWithoutFormat" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]
-      [ RequireDeviceFeature
-          { featureName = "shaderStorageImageReadWithoutFormat"
-          , checkFeature = \PhysicalDeviceFeatures{shaderStorageImageReadWithoutFormat} -> shaderStorageImageReadWithoutFormat
-          , enableFeature = \PhysicalDeviceFeatures{..} -> PhysicalDeviceFeatures{shaderStorageImageReadWithoutFormat = True, ..}
-          }
-      , RequireDeviceVersion $ MAKE_API_VERSION 1 0 0
-      ]
-  "StorageImageWriteWithoutFormat" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]
-      [ RequireDeviceFeature
-          { featureName = "shaderStorageImageWriteWithoutFormat"
-          , checkFeature = \PhysicalDeviceFeatures{shaderStorageImageWriteWithoutFormat} -> shaderStorageImageWriteWithoutFormat
-          , enableFeature = \PhysicalDeviceFeatures{..} -> PhysicalDeviceFeatures{shaderStorageImageWriteWithoutFormat = True, ..}
-          }
-      , RequireDeviceVersion $ MAKE_API_VERSION 1 0 0
-      ]
-  "MultiViewport" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]
-      [ RequireDeviceFeature
-          { featureName = "multiViewport"
-          , checkFeature = \PhysicalDeviceFeatures{multiViewport} -> multiViewport
-          , enableFeature = \PhysicalDeviceFeatures{..} -> PhysicalDeviceFeatures{multiViewport = True, ..}
-          }
-      , RequireDeviceVersion $ MAKE_API_VERSION 1 0 0
-      ]
-  "DrawParameters" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0]
-      [ RequireDeviceFeature
-          { featureName = "shaderDrawParameters"
-          , checkFeature = \PhysicalDeviceVulkan11Features{shaderDrawParameters} -> shaderDrawParameters
-          , enableFeature = \PhysicalDeviceVulkan11Features{..} -> PhysicalDeviceVulkan11Features{shaderDrawParameters = True, ..}
-          }
-      , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
-      ]
-  "MultiView" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0]
-      [ RequireDeviceFeature
-          { featureName = "multiview"
-          , checkFeature = \PhysicalDeviceVulkan11Features{multiview} -> multiview
-          , enableFeature = \PhysicalDeviceVulkan11Features{..} -> PhysicalDeviceVulkan11Features{multiview = True, ..}
-          }
-      , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
-      ]
-  "DeviceGroup" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 1 0]
-      [RequireDeviceVersion $ MAKE_API_VERSION 1 1 0]
-  "VariablePointersStorageBuffer" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0]
-      [ RequireDeviceFeature
-          { featureName = "variablePointersStorageBuffer"
-          , checkFeature = \PhysicalDeviceVulkan11Features{variablePointersStorageBuffer} -> variablePointersStorageBuffer
-          , enableFeature = \PhysicalDeviceVulkan11Features{..} -> PhysicalDeviceVulkan11Features{variablePointersStorageBuffer = True, ..}
-          }
-      , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
-      ]
-  "VariablePointers" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0]
-      [ RequireDeviceFeature
-          { featureName = "variablePointers"
-          , checkFeature = \PhysicalDeviceVulkan11Features{variablePointers} -> variablePointers
-          , enableFeature = \PhysicalDeviceVulkan11Features{..} -> PhysicalDeviceVulkan11Features{variablePointers = True, ..}
-          }
-      , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
-      ]
-  "ShaderClockKHR" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = KHR_SHADER_CLOCK_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "StencilExportEXT" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "SubgroupBallotKHR" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "SubgroupVoteKHR" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "ImageReadWriteLodAMD" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "ImageGatherBiasLodAMD" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "FragmentMaskAMD" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "SampleMaskOverrideCoverageNV" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "GeometryShaderPassthroughNV" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "ShaderViewportIndex" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0]
-      [ RequireDeviceFeature
-          { featureName = "shaderOutputViewportIndex"
-          , checkFeature = \PhysicalDeviceVulkan12Features{shaderOutputViewportIndex} -> shaderOutputViewportIndex
-          , enableFeature = \PhysicalDeviceVulkan12Features{..} -> PhysicalDeviceVulkan12Features{shaderOutputViewportIndex = True, ..}
-          }
-      , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
-      ]
-  "ShaderLayer" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0]
-      [ RequireDeviceFeature
-          { featureName = "shaderOutputLayer"
-          , checkFeature = \PhysicalDeviceVulkan12Features{shaderOutputLayer} -> shaderOutputLayer
-          , enableFeature = \PhysicalDeviceVulkan12Features{..} -> PhysicalDeviceVulkan12Features{shaderOutputLayer = True, ..}
-          }
-      , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
-      ]
-  "ShaderViewportIndexLayerEXT" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "ShaderViewportMaskNV" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = NV_VIEWPORT_ARRAY_2_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "PerViewAttributesNV" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "StorageBuffer16BitAccess" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0]
-      [ RequireDeviceFeature
-          { featureName = "storageBuffer16BitAccess"
-          , checkFeature = \PhysicalDeviceVulkan11Features{storageBuffer16BitAccess} -> storageBuffer16BitAccess
-          , enableFeature = \PhysicalDeviceVulkan11Features{..} -> PhysicalDeviceVulkan11Features{storageBuffer16BitAccess = True, ..}
-          }
-      , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
-      ]
-  "UniformAndStorageBuffer16BitAccess" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0]
-      [ RequireDeviceFeature
-          { featureName = "uniformAndStorageBuffer16BitAccess"
-          , checkFeature = \PhysicalDeviceVulkan11Features{uniformAndStorageBuffer16BitAccess} -> uniformAndStorageBuffer16BitAccess
-          , enableFeature = \PhysicalDeviceVulkan11Features{..} -> PhysicalDeviceVulkan11Features{uniformAndStorageBuffer16BitAccess = True, ..}
-          }
-      , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
-      ]
-  "StoragePushConstant16" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0]
-      [ RequireDeviceFeature
-          { featureName = "storagePushConstant16"
-          , checkFeature = \PhysicalDeviceVulkan11Features{storagePushConstant16} -> storagePushConstant16
-          , enableFeature = \PhysicalDeviceVulkan11Features{..} -> PhysicalDeviceVulkan11Features{storagePushConstant16 = True, ..}
-          }
-      , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
-      ]
-  "StorageInputOutput16" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0]
-      [ RequireDeviceFeature
-          { featureName = "storageInputOutput16"
-          , checkFeature = \PhysicalDeviceVulkan11Features{storageInputOutput16} -> storageInputOutput16
-          , enableFeature = \PhysicalDeviceVulkan11Features{..} -> PhysicalDeviceVulkan11Features{storageInputOutput16 = True, ..}
-          }
-      , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
-      ]
-  "GroupNonUniform" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 1 0]
-      [ RequireDeviceProperty
-          { propertyName = "VkPhysicalDeviceVulkan11Properties"
-          , checkProperty = \p -> SUBGROUP_FEATURE_BASIC_BIT .&&. subgroupSupportedOperations (p :: PhysicalDeviceVulkan11Properties)
-          }
-      , RequireDeviceVersion $ MAKE_API_VERSION 1 1 0
-      ]
-  "GroupNonUniformVote" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 1 0]
-      [ RequireDeviceProperty
-          { propertyName = "VkPhysicalDeviceVulkan11Properties"
-          , checkProperty = \p -> SUBGROUP_FEATURE_VOTE_BIT .&&. subgroupSupportedOperations (p :: PhysicalDeviceVulkan11Properties)
-          }
-      , RequireDeviceVersion $ MAKE_API_VERSION 1 1 0
-      ]
-  "GroupNonUniformArithmetic" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 1 0]
-      [ RequireDeviceProperty
-          { propertyName = "VkPhysicalDeviceVulkan11Properties"
-          , checkProperty = \p -> SUBGROUP_FEATURE_ARITHMETIC_BIT .&&. subgroupSupportedOperations (p :: PhysicalDeviceVulkan11Properties)
-          }
-      , RequireDeviceVersion $ MAKE_API_VERSION 1 1 0
-      ]
-  "GroupNonUniformBallot" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 1 0]
-      [ RequireDeviceProperty
-          { propertyName = "VkPhysicalDeviceVulkan11Properties"
-          , checkProperty = \p -> SUBGROUP_FEATURE_BALLOT_BIT .&&. subgroupSupportedOperations (p :: PhysicalDeviceVulkan11Properties)
-          }
-      , RequireDeviceVersion $ MAKE_API_VERSION 1 1 0
-      ]
-  "GroupNonUniformShuffle" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 1 0]
-      [ RequireDeviceProperty
-          { propertyName = "VkPhysicalDeviceVulkan11Properties"
-          , checkProperty = \p -> SUBGROUP_FEATURE_SHUFFLE_BIT .&&. subgroupSupportedOperations (p :: PhysicalDeviceVulkan11Properties)
-          }
-      , RequireDeviceVersion $ MAKE_API_VERSION 1 1 0
-      ]
-  "GroupNonUniformShuffleRelative" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 1 0]
-      [ RequireDeviceProperty
-          { propertyName = "VkPhysicalDeviceVulkan11Properties"
-          , checkProperty = \p -> SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT .&&. subgroupSupportedOperations (p :: PhysicalDeviceVulkan11Properties)
-          }
-      , RequireDeviceVersion $ MAKE_API_VERSION 1 1 0
-      ]
-  "GroupNonUniformClustered" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 1 0]
-      [ RequireDeviceProperty
-          { propertyName = "VkPhysicalDeviceVulkan11Properties"
-          , checkProperty = \p -> SUBGROUP_FEATURE_CLUSTERED_BIT .&&. subgroupSupportedOperations (p :: PhysicalDeviceVulkan11Properties)
-          }
-      , RequireDeviceVersion $ MAKE_API_VERSION 1 1 0
-      ]
-  "GroupNonUniformQuad" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 1 0]
-      [ RequireDeviceProperty
-          { propertyName = "VkPhysicalDeviceVulkan11Properties"
-          , checkProperty = \p -> SUBGROUP_FEATURE_QUAD_BIT .&&. subgroupSupportedOperations (p :: PhysicalDeviceVulkan11Properties)
-          }
-      , RequireDeviceVersion $ MAKE_API_VERSION 1 1 0
-      ]
-  "GroupNonUniformPartitionedNV" ->
-    (,)
-      []
-      [ RequireDeviceProperty
-          { propertyName = "VkPhysicalDeviceVulkan11Properties"
-          , checkProperty = \p -> SUBGROUP_FEATURE_PARTITIONED_BIT_NV .&&. subgroupSupportedOperations (p :: PhysicalDeviceVulkan11Properties)
-          }
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "SampleMaskPostDepthCoverage" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "ShaderNonUniform" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0]
-      [RequireDeviceVersion $ MAKE_API_VERSION 1 2 0]
-  "RuntimeDescriptorArray" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0]
-      [ RequireDeviceFeature
-          { featureName = "runtimeDescriptorArray"
-          , checkFeature = \PhysicalDeviceVulkan12Features{runtimeDescriptorArray} -> runtimeDescriptorArray
-          , enableFeature = \PhysicalDeviceVulkan12Features{..} -> PhysicalDeviceVulkan12Features{runtimeDescriptorArray = True, ..}
-          }
-      , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "InputAttachmentArrayDynamicIndexing" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0]
-      [ RequireDeviceFeature
-          { featureName = "shaderInputAttachmentArrayDynamicIndexing"
-          , checkFeature = \PhysicalDeviceVulkan12Features{shaderInputAttachmentArrayDynamicIndexing} -> shaderInputAttachmentArrayDynamicIndexing
-          , enableFeature = \PhysicalDeviceVulkan12Features{..} -> PhysicalDeviceVulkan12Features{shaderInputAttachmentArrayDynamicIndexing = True, ..}
-          }
-      , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "UniformTexelBufferArrayDynamicIndexing" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0]
-      [ RequireDeviceFeature
-          { featureName = "shaderUniformTexelBufferArrayDynamicIndexing"
-          , checkFeature = \PhysicalDeviceVulkan12Features{shaderUniformTexelBufferArrayDynamicIndexing} -> shaderUniformTexelBufferArrayDynamicIndexing
-          , enableFeature = \PhysicalDeviceVulkan12Features{..} -> PhysicalDeviceVulkan12Features{shaderUniformTexelBufferArrayDynamicIndexing = True, ..}
-          }
-      , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "StorageTexelBufferArrayDynamicIndexing" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0]
-      [ RequireDeviceFeature
-          { featureName = "shaderStorageTexelBufferArrayDynamicIndexing"
-          , checkFeature = \PhysicalDeviceVulkan12Features{shaderStorageTexelBufferArrayDynamicIndexing} -> shaderStorageTexelBufferArrayDynamicIndexing
-          , enableFeature = \PhysicalDeviceVulkan12Features{..} -> PhysicalDeviceVulkan12Features{shaderStorageTexelBufferArrayDynamicIndexing = True, ..}
-          }
-      , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "UniformBufferArrayNonUniformIndexing" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0]
-      [ RequireDeviceFeature
-          { featureName = "shaderUniformBufferArrayNonUniformIndexing"
-          , checkFeature = \PhysicalDeviceVulkan12Features{shaderUniformBufferArrayNonUniformIndexing} -> shaderUniformBufferArrayNonUniformIndexing
-          , enableFeature = \PhysicalDeviceVulkan12Features{..} -> PhysicalDeviceVulkan12Features{shaderUniformBufferArrayNonUniformIndexing = True, ..}
-          }
-      , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "SampledImageArrayNonUniformIndexing" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0]
-      [ RequireDeviceFeature
-          { featureName = "shaderSampledImageArrayNonUniformIndexing"
-          , checkFeature = \PhysicalDeviceVulkan12Features{shaderSampledImageArrayNonUniformIndexing} -> shaderSampledImageArrayNonUniformIndexing
-          , enableFeature = \PhysicalDeviceVulkan12Features{..} -> PhysicalDeviceVulkan12Features{shaderSampledImageArrayNonUniformIndexing = True, ..}
-          }
-      , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "StorageBufferArrayNonUniformIndexing" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0]
-      [ RequireDeviceFeature
-          { featureName = "shaderStorageBufferArrayNonUniformIndexing"
-          , checkFeature = \PhysicalDeviceVulkan12Features{shaderStorageBufferArrayNonUniformIndexing} -> shaderStorageBufferArrayNonUniformIndexing
-          , enableFeature = \PhysicalDeviceVulkan12Features{..} -> PhysicalDeviceVulkan12Features{shaderStorageBufferArrayNonUniformIndexing = True, ..}
-          }
-      , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "StorageImageArrayNonUniformIndexing" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0]
-      [ RequireDeviceFeature
-          { featureName = "shaderStorageImageArrayNonUniformIndexing"
-          , checkFeature = \PhysicalDeviceVulkan12Features{shaderStorageImageArrayNonUniformIndexing} -> shaderStorageImageArrayNonUniformIndexing
-          , enableFeature = \PhysicalDeviceVulkan12Features{..} -> PhysicalDeviceVulkan12Features{shaderStorageImageArrayNonUniformIndexing = True, ..}
-          }
-      , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "InputAttachmentArrayNonUniformIndexing" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0]
-      [ RequireDeviceFeature
-          { featureName = "shaderInputAttachmentArrayNonUniformIndexing"
-          , checkFeature = \PhysicalDeviceVulkan12Features{shaderInputAttachmentArrayNonUniformIndexing} -> shaderInputAttachmentArrayNonUniformIndexing
-          , enableFeature = \PhysicalDeviceVulkan12Features{..} -> PhysicalDeviceVulkan12Features{shaderInputAttachmentArrayNonUniformIndexing = True, ..}
-          }
-      , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "UniformTexelBufferArrayNonUniformIndexing" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0]
-      [ RequireDeviceFeature
-          { featureName = "shaderUniformTexelBufferArrayNonUniformIndexing"
-          , checkFeature = \PhysicalDeviceVulkan12Features{shaderUniformTexelBufferArrayNonUniformIndexing} -> shaderUniformTexelBufferArrayNonUniformIndexing
-          , enableFeature = \PhysicalDeviceVulkan12Features{..} -> PhysicalDeviceVulkan12Features{shaderUniformTexelBufferArrayNonUniformIndexing = True, ..}
-          }
-      , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "StorageTexelBufferArrayNonUniformIndexing" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0]
-      [ RequireDeviceFeature
-          { featureName = "shaderStorageTexelBufferArrayNonUniformIndexing"
-          , checkFeature = \PhysicalDeviceVulkan12Features{shaderStorageTexelBufferArrayNonUniformIndexing} -> shaderStorageTexelBufferArrayNonUniformIndexing
-          , enableFeature = \PhysicalDeviceVulkan12Features{..} -> PhysicalDeviceVulkan12Features{shaderStorageTexelBufferArrayNonUniformIndexing = True, ..}
-          }
-      , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "FragmentFullyCoveredEXT" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "Float16" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0]
-      [ RequireDeviceFeature
-          { featureName = "shaderFloat16"
-          , checkFeature = \PhysicalDeviceVulkan12Features{shaderFloat16} -> shaderFloat16
-          , enableFeature = \PhysicalDeviceVulkan12Features{..} -> PhysicalDeviceVulkan12Features{shaderFloat16 = True, ..}
-          }
-      , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "Int8" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0]
-      [ RequireDeviceFeature
-          { featureName = "shaderInt8"
-          , checkFeature = \PhysicalDeviceVulkan12Features{shaderInt8} -> shaderInt8
-          , enableFeature = \PhysicalDeviceVulkan12Features{..} -> PhysicalDeviceVulkan12Features{shaderInt8 = True, ..}
-          }
-      , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "StorageBuffer8BitAccess" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0]
-      [ RequireDeviceFeature
-          { featureName = "storageBuffer8BitAccess"
-          , checkFeature = \PhysicalDeviceVulkan12Features{storageBuffer8BitAccess} -> storageBuffer8BitAccess
-          , enableFeature = \PhysicalDeviceVulkan12Features{..} -> PhysicalDeviceVulkan12Features{storageBuffer8BitAccess = True, ..}
-          }
-      , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = KHR_8BIT_STORAGE_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "UniformAndStorageBuffer8BitAccess" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0]
-      [ RequireDeviceFeature
-          { featureName = "uniformAndStorageBuffer8BitAccess"
-          , checkFeature = \PhysicalDeviceVulkan12Features{uniformAndStorageBuffer8BitAccess} -> uniformAndStorageBuffer8BitAccess
-          , enableFeature = \PhysicalDeviceVulkan12Features{..} -> PhysicalDeviceVulkan12Features{uniformAndStorageBuffer8BitAccess = True, ..}
-          }
-      , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = KHR_8BIT_STORAGE_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "StoragePushConstant8" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0]
-      [ RequireDeviceFeature
-          { featureName = "storagePushConstant8"
-          , checkFeature = \PhysicalDeviceVulkan12Features{storagePushConstant8} -> storagePushConstant8
-          , enableFeature = \PhysicalDeviceVulkan12Features{..} -> PhysicalDeviceVulkan12Features{storagePushConstant8 = True, ..}
-          }
-      , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = KHR_8BIT_STORAGE_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "VulkanMemoryModel" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0]
-      [ RequireDeviceFeature
-          { featureName = "vulkanMemoryModel"
-          , checkFeature = \PhysicalDeviceVulkan12Features{vulkanMemoryModel} -> vulkanMemoryModel
-          , enableFeature = \PhysicalDeviceVulkan12Features{..} -> PhysicalDeviceVulkan12Features{vulkanMemoryModel = True, ..}
-          }
-      , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "VulkanMemoryModelDeviceScope" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0]
-      [ RequireDeviceFeature
-          { featureName = "vulkanMemoryModelDeviceScope"
-          , checkFeature = \PhysicalDeviceVulkan12Features{vulkanMemoryModelDeviceScope} -> vulkanMemoryModelDeviceScope
-          , enableFeature = \PhysicalDeviceVulkan12Features{..} -> PhysicalDeviceVulkan12Features{vulkanMemoryModelDeviceScope = True, ..}
-          }
-      , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "DenormPreserve" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0]
-      [ RequireDeviceProperty
-          { propertyName = "VkPhysicalDeviceVulkan12Properties"
-          , checkProperty = \p -> shaderDenormPreserveFloat16 (p :: PhysicalDeviceVulkan12Properties)
-          }
-      , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "DenormFlushToZero" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0]
-      [ RequireDeviceProperty
-          { propertyName = "VkPhysicalDeviceVulkan12Properties"
-          , checkProperty = \p -> shaderDenormFlushToZeroFloat16 (p :: PhysicalDeviceVulkan12Properties)
-          }
-      , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "SignedZeroInfNanPreserve" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0]
-      [ RequireDeviceProperty
-          { propertyName = "VkPhysicalDeviceVulkan12Properties"
-          , checkProperty = \p -> shaderSignedZeroInfNanPreserveFloat16 (p :: PhysicalDeviceVulkan12Properties)
-          }
-      , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "RoundingModeRTE" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0]
-      [ RequireDeviceProperty
-          { propertyName = "VkPhysicalDeviceVulkan12Properties"
-          , checkProperty = \p -> shaderRoundingModeRTEFloat16 (p :: PhysicalDeviceVulkan12Properties)
-          }
-      , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "RoundingModeRTZ" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0]
-      [ RequireDeviceProperty
-          { propertyName = "VkPhysicalDeviceVulkan12Properties"
-          , checkProperty = \p -> shaderRoundingModeRTZFloat16 (p :: PhysicalDeviceVulkan12Properties)
-          }
-      , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "ComputeDerivativeGroupQuadsKHR" ->
-    (,)
-      []
-      [ RequireDeviceFeature
-          { featureName = "computeDerivativeGroupQuads"
-          , checkFeature = \PhysicalDeviceComputeShaderDerivativesFeaturesKHR{computeDerivativeGroupQuads} -> computeDerivativeGroupQuads
-          , enableFeature = \PhysicalDeviceComputeShaderDerivativesFeaturesKHR{..} -> PhysicalDeviceComputeShaderDerivativesFeaturesKHR{computeDerivativeGroupQuads = True, ..}
-          }
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = KHR_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "ComputeDerivativeGroupLinearKHR" ->
-    (,)
-      []
-      [ RequireDeviceFeature
-          { featureName = "computeDerivativeGroupLinear"
-          , checkFeature = \PhysicalDeviceComputeShaderDerivativesFeaturesKHR{computeDerivativeGroupLinear} -> computeDerivativeGroupLinear
-          , enableFeature = \PhysicalDeviceComputeShaderDerivativesFeaturesKHR{..} -> PhysicalDeviceComputeShaderDerivativesFeaturesKHR{computeDerivativeGroupLinear = True, ..}
-          }
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = KHR_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "ImageFootprintNV" ->
-    (,)
-      []
-      [ RequireDeviceFeature
-          { featureName = "imageFootprint"
-          , checkFeature = \PhysicalDeviceShaderImageFootprintFeaturesNV{imageFootprint} -> imageFootprint
-          , enableFeature = \_ -> PhysicalDeviceShaderImageFootprintFeaturesNV{imageFootprint = True}
-          }
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "MeshShadingNV" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = NV_MESH_SHADER_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "RayTracingKHR" ->
-    (,)
-      []
-      [ RequireDeviceFeature
-          { featureName = "rayTracingPipeline"
-          , checkFeature = \PhysicalDeviceRayTracingPipelineFeaturesKHR{rayTracingPipeline} -> rayTracingPipeline
-          , enableFeature = \PhysicalDeviceRayTracingPipelineFeaturesKHR{..} -> PhysicalDeviceRayTracingPipelineFeaturesKHR{rayTracingPipeline = True, ..}
-          }
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "RayQueryKHR" ->
-    (,)
-      []
-      [ RequireDeviceFeature
-          { featureName = "rayQuery"
-          , checkFeature = \PhysicalDeviceRayQueryFeaturesKHR{rayQuery} -> rayQuery
-          , enableFeature = \_ -> PhysicalDeviceRayQueryFeaturesKHR{rayQuery = True}
-          }
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = KHR_RAY_QUERY_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "RayTraversalPrimitiveCullingKHR" ->
-    (,)
-      []
-      [ RequireDeviceFeature
-          { featureName = "rayTraversalPrimitiveCulling"
-          , checkFeature = \PhysicalDeviceRayTracingPipelineFeaturesKHR{rayTraversalPrimitiveCulling} -> rayTraversalPrimitiveCulling
-          , enableFeature = \PhysicalDeviceRayTracingPipelineFeaturesKHR{..} -> PhysicalDeviceRayTracingPipelineFeaturesKHR{rayTraversalPrimitiveCulling = True, ..}
-          }
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "RayCullMaskKHR" ->
-    (,)
-      []
-      [ RequireDeviceFeature
-          { featureName = "rayTracingMaintenance1"
-          , checkFeature = \PhysicalDeviceRayTracingMaintenance1FeaturesKHR{rayTracingMaintenance1} -> rayTracingMaintenance1
-          , enableFeature = \PhysicalDeviceRayTracingMaintenance1FeaturesKHR{..} -> PhysicalDeviceRayTracingMaintenance1FeaturesKHR{rayTracingMaintenance1 = True, ..}
-          }
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = KHR_RAY_TRACING_MAINTENANCE_1_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "RayTracingNV" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = NV_RAY_TRACING_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "RayTracingMotionBlurNV" ->
-    (,)
-      []
-      [ RequireDeviceFeature
-          { featureName = "rayTracingMotionBlur"
-          , checkFeature = \PhysicalDeviceRayTracingMotionBlurFeaturesNV{rayTracingMotionBlur} -> rayTracingMotionBlur
-          , enableFeature = \PhysicalDeviceRayTracingMotionBlurFeaturesNV{..} -> PhysicalDeviceRayTracingMotionBlurFeaturesNV{rayTracingMotionBlur = True, ..}
-          }
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = NV_RAY_TRACING_MOTION_BLUR_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "TransformFeedback" ->
-    (,)
-      []
-      [ RequireDeviceFeature
-          { featureName = "transformFeedback"
-          , checkFeature = \PhysicalDeviceTransformFeedbackFeaturesEXT{transformFeedback} -> transformFeedback
-          , enableFeature = \PhysicalDeviceTransformFeedbackFeaturesEXT{..} -> PhysicalDeviceTransformFeedbackFeaturesEXT{transformFeedback = True, ..}
-          }
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "GeometryStreams" ->
-    (,)
-      []
-      [ RequireDeviceFeature
-          { featureName = "geometryStreams"
-          , checkFeature = \PhysicalDeviceTransformFeedbackFeaturesEXT{geometryStreams} -> geometryStreams
-          , enableFeature = \PhysicalDeviceTransformFeedbackFeaturesEXT{..} -> PhysicalDeviceTransformFeedbackFeaturesEXT{geometryStreams = True, ..}
-          }
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "FragmentDensityEXT" ->
-    (,)
-      []
-      [ RequireDeviceFeature
-          { featureName = "fragmentDensityMap"
-          , checkFeature = \PhysicalDeviceFragmentDensityMapFeaturesEXT{fragmentDensityMap} -> fragmentDensityMap
-          , enableFeature = \PhysicalDeviceFragmentDensityMapFeaturesEXT{..} -> PhysicalDeviceFragmentDensityMapFeaturesEXT{fragmentDensityMap = True, ..}
-          }
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "PhysicalStorageBufferAddresses" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0]
-      [ RequireDeviceFeature
-          { featureName = "bufferDeviceAddress"
-          , checkFeature = \PhysicalDeviceVulkan12Features{bufferDeviceAddress} -> bufferDeviceAddress
-          , enableFeature = \PhysicalDeviceVulkan12Features{..} -> PhysicalDeviceVulkan12Features{bufferDeviceAddress = True, ..}
-          }
-      , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "CooperativeMatrixNV" ->
-    (,)
-      []
-      [ RequireDeviceFeature
-          { featureName = "cooperativeMatrix"
-          , checkFeature = \PhysicalDeviceCooperativeMatrixFeaturesNV{cooperativeMatrix} -> cooperativeMatrix
-          , enableFeature = \PhysicalDeviceCooperativeMatrixFeaturesNV{..} -> PhysicalDeviceCooperativeMatrixFeaturesNV{cooperativeMatrix = True, ..}
-          }
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = NV_COOPERATIVE_MATRIX_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "IntegerFunctions2INTEL" ->
-    (,)
-      []
-      [ RequireDeviceFeature
-          { featureName = "shaderIntegerFunctions2"
-          , checkFeature = \PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL{shaderIntegerFunctions2} -> shaderIntegerFunctions2
-          , enableFeature = \_ -> PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL{shaderIntegerFunctions2 = True}
-          }
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "ShaderSMBuiltinsNV" ->
-    (,)
-      []
-      [ RequireDeviceFeature
-          { featureName = "shaderSMBuiltins"
-          , checkFeature = \PhysicalDeviceShaderSMBuiltinsFeaturesNV{shaderSMBuiltins} -> shaderSMBuiltins
-          , enableFeature = \_ -> PhysicalDeviceShaderSMBuiltinsFeaturesNV{shaderSMBuiltins = True}
-          }
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = NV_SHADER_SM_BUILTINS_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "FragmentShaderSampleInterlockEXT" ->
-    (,)
-      []
-      [ RequireDeviceFeature
-          { featureName = "fragmentShaderSampleInterlock"
-          , checkFeature = \PhysicalDeviceFragmentShaderInterlockFeaturesEXT{fragmentShaderSampleInterlock} -> fragmentShaderSampleInterlock
-          , enableFeature = \PhysicalDeviceFragmentShaderInterlockFeaturesEXT{..} -> PhysicalDeviceFragmentShaderInterlockFeaturesEXT{fragmentShaderSampleInterlock = True, ..}
-          }
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "FragmentShaderPixelInterlockEXT" ->
-    (,)
-      []
-      [ RequireDeviceFeature
-          { featureName = "fragmentShaderPixelInterlock"
-          , checkFeature = \PhysicalDeviceFragmentShaderInterlockFeaturesEXT{fragmentShaderPixelInterlock} -> fragmentShaderPixelInterlock
-          , enableFeature = \PhysicalDeviceFragmentShaderInterlockFeaturesEXT{..} -> PhysicalDeviceFragmentShaderInterlockFeaturesEXT{fragmentShaderPixelInterlock = True, ..}
-          }
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "FragmentShaderShadingRateInterlockEXT" ->
-    (,)
-      []
-      [ RequireDeviceFeature
-          { featureName = "fragmentShaderShadingRateInterlock"
-          , checkFeature = \PhysicalDeviceFragmentShaderInterlockFeaturesEXT{fragmentShaderShadingRateInterlock} -> fragmentShaderShadingRateInterlock
-          , enableFeature = \PhysicalDeviceFragmentShaderInterlockFeaturesEXT{..} -> PhysicalDeviceFragmentShaderInterlockFeaturesEXT{fragmentShaderShadingRateInterlock = True, ..}
-          }
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "DemoteToHelperInvocation" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 3 0]
-      [ RequireDeviceFeature
-          { featureName = "shaderDemoteToHelperInvocation"
-          , checkFeature = \PhysicalDeviceVulkan13Features{shaderDemoteToHelperInvocation} -> shaderDemoteToHelperInvocation
-          , 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
-          }
-      ]
-  "FragmentShadingRateKHR" ->
-    (,)
-      []
-      [ RequireDeviceFeature
-          { featureName = "pipelineFragmentShadingRate"
-          , checkFeature = \PhysicalDeviceFragmentShadingRateFeaturesKHR{pipelineFragmentShadingRate} -> pipelineFragmentShadingRate
-          , enableFeature = \PhysicalDeviceFragmentShadingRateFeaturesKHR{..} -> PhysicalDeviceFragmentShadingRateFeaturesKHR{pipelineFragmentShadingRate = True, ..}
-          }
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "WorkgroupMemoryExplicitLayoutKHR" ->
-    (,)
-      []
-      [ RequireDeviceFeature
-          { featureName = "workgroupMemoryExplicitLayout"
-          , checkFeature = \PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR{workgroupMemoryExplicitLayout} -> workgroupMemoryExplicitLayout
-          , enableFeature = \PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR{..} -> PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR{workgroupMemoryExplicitLayout = True, ..}
-          }
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "WorkgroupMemoryExplicitLayout8BitAccessKHR" ->
-    (,)
-      []
-      [ RequireDeviceFeature
-          { featureName = "workgroupMemoryExplicitLayout8BitAccess"
-          , checkFeature = \PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR{workgroupMemoryExplicitLayout8BitAccess} -> workgroupMemoryExplicitLayout8BitAccess
-          , enableFeature = \PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR{..} -> PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR{workgroupMemoryExplicitLayout8BitAccess = True, ..}
-          }
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "WorkgroupMemoryExplicitLayout16BitAccessKHR" ->
-    (,)
-      []
-      [ RequireDeviceFeature
-          { featureName = "workgroupMemoryExplicitLayout16BitAccess"
-          , checkFeature = \PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR{workgroupMemoryExplicitLayout16BitAccess} -> workgroupMemoryExplicitLayout16BitAccess
-          , enableFeature = \PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR{..} -> PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR{workgroupMemoryExplicitLayout16BitAccess = True, ..}
-          }
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "DotProductInputAll" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 3 0]
-      [ RequireDeviceFeature
-          { featureName = "shaderIntegerDotProduct"
-          , 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
-          }
-      ]
-  "DotProductInput4x8Bit" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 3 0]
-      [ RequireDeviceFeature
-          { featureName = "shaderIntegerDotProduct"
-          , 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
-          }
-      ]
-  "DotProductInput4x8BitPacked" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 3 0]
-      [ RequireDeviceFeature
-          { featureName = "shaderIntegerDotProduct"
-          , 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
-          }
-      ]
-  "DotProduct" ->
-    (,)
-      [RequireInstanceVersion $ MAKE_API_VERSION 1 3 0]
-      [ RequireDeviceFeature
-          { featureName = "shaderIntegerDotProduct"
-          , 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
-          }
-      ]
-  "FragmentBarycentricKHR" ->
-    (,)
-      []
-      [ RequireDeviceFeature
-          { featureName = "fragmentShaderBarycentric"
-          , checkFeature = \PhysicalDeviceFragmentShaderBarycentricFeaturesKHR{fragmentShaderBarycentric} -> fragmentShaderBarycentric
-          , enableFeature = \_ -> PhysicalDeviceFragmentShaderBarycentricFeaturesKHR{fragmentShaderBarycentric = True}
-          }
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = KHR_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "TextureSampleWeightedQCOM" ->
-    (,)
-      []
-      [ RequireDeviceFeature
-          { featureName = "textureSampleWeighted"
-          , checkFeature = \PhysicalDeviceImageProcessingFeaturesQCOM{textureSampleWeighted} -> textureSampleWeighted
-          , enableFeature = \PhysicalDeviceImageProcessingFeaturesQCOM{..} -> PhysicalDeviceImageProcessingFeaturesQCOM{textureSampleWeighted = True, ..}
-          }
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = QCOM_IMAGE_PROCESSING_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "TextureBoxFilterQCOM" ->
-    (,)
-      []
-      [ RequireDeviceFeature
-          { featureName = "textureBoxFilter"
-          , checkFeature = \PhysicalDeviceImageProcessingFeaturesQCOM{textureBoxFilter} -> textureBoxFilter
-          , enableFeature = \PhysicalDeviceImageProcessingFeaturesQCOM{..} -> PhysicalDeviceImageProcessingFeaturesQCOM{textureBoxFilter = True, ..}
-          }
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = QCOM_IMAGE_PROCESSING_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "TextureBlockMatchQCOM" ->
-    (,)
-      []
-      [ RequireDeviceFeature
-          { featureName = "textureBlockMatch"
-          , checkFeature = \PhysicalDeviceImageProcessingFeaturesQCOM{textureBlockMatch} -> textureBlockMatch
-          , enableFeature = \PhysicalDeviceImageProcessingFeaturesQCOM{..} -> PhysicalDeviceImageProcessingFeaturesQCOM{textureBlockMatch = True, ..}
-          }
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = QCOM_IMAGE_PROCESSING_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "TextureBlockMatch2QCOM" ->
-    (,)
-      []
-      [ RequireDeviceFeature
-          { featureName = "textureBlockMatch2"
-          , checkFeature = \PhysicalDeviceImageProcessing2FeaturesQCOM{textureBlockMatch2} -> textureBlockMatch2
-          , enableFeature = \_ -> PhysicalDeviceImageProcessing2FeaturesQCOM{textureBlockMatch2 = True}
-          }
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = QCOM_IMAGE_PROCESSING_2_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "MeshShadingEXT" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = EXT_MESH_SHADER_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "RayTracingOpacityMicromapEXT" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = EXT_OPACITY_MICROMAP_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "CoreBuiltinsARM" ->
-    (,)
-      []
-      [ RequireDeviceFeature
-          { featureName = "shaderCoreBuiltins"
-          , checkFeature = \PhysicalDeviceShaderCoreBuiltinsFeaturesARM{shaderCoreBuiltins} -> shaderCoreBuiltins
-          , enableFeature = \_ -> PhysicalDeviceShaderCoreBuiltinsFeaturesARM{shaderCoreBuiltins = True}
-          }
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = ARM_SHADER_CORE_BUILTINS_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "ShaderInvocationReorderNV" ->
-    (,)
-      []
-      [ RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = NV_RAY_TRACING_INVOCATION_REORDER_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "ClusterCullingShadingHUAWEI" ->
-    (,)
-      []
-      [ RequireDeviceFeature
-          { featureName = "clustercullingShader"
-          , checkFeature = \PhysicalDeviceClusterCullingShaderFeaturesHUAWEI{clustercullingShader} -> clustercullingShader
-          , enableFeature = \PhysicalDeviceClusterCullingShaderFeaturesHUAWEI{..} -> PhysicalDeviceClusterCullingShaderFeaturesHUAWEI{clustercullingShader = True, ..}
-          }
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = HUAWEI_CLUSTER_CULLING_SHADER_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "RayTracingPositionFetchKHR" ->
-    (,)
-      []
-      [ RequireDeviceFeature
-          { featureName = "rayTracingPositionFetch"
-          , checkFeature = \PhysicalDeviceRayTracingPositionFetchFeaturesKHR{rayTracingPositionFetch} -> rayTracingPositionFetch
-          , enableFeature = \_ -> PhysicalDeviceRayTracingPositionFetchFeaturesKHR{rayTracingPositionFetch = True}
-          }
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = KHR_RAY_TRACING_POSITION_FETCH_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "RayQueryPositionFetchKHR" ->
-    (,)
-      []
-      [ RequireDeviceFeature
-          { featureName = "rayTracingPositionFetch"
-          , checkFeature = \PhysicalDeviceRayTracingPositionFetchFeaturesKHR{rayTracingPositionFetch} -> rayTracingPositionFetch
-          , enableFeature = \_ -> PhysicalDeviceRayTracingPositionFetchFeaturesKHR{rayTracingPositionFetch = True}
-          }
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = KHR_RAY_TRACING_POSITION_FETCH_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "TileImageColorReadAccessEXT" ->
-    (,)
-      []
-      [ RequireDeviceFeature
-          { featureName = "shaderTileImageColorReadAccess"
-          , checkFeature = \PhysicalDeviceShaderTileImageFeaturesEXT{shaderTileImageColorReadAccess} -> shaderTileImageColorReadAccess
-          , enableFeature = \PhysicalDeviceShaderTileImageFeaturesEXT{..} -> PhysicalDeviceShaderTileImageFeaturesEXT{shaderTileImageColorReadAccess = True, ..}
-          }
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = EXT_SHADER_TILE_IMAGE_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "TileImageDepthReadAccessEXT" ->
-    (,)
-      []
-      [ RequireDeviceFeature
-          { featureName = "shaderTileImageDepthReadAccess"
-          , checkFeature = \PhysicalDeviceShaderTileImageFeaturesEXT{shaderTileImageDepthReadAccess} -> shaderTileImageDepthReadAccess
-          , enableFeature = \PhysicalDeviceShaderTileImageFeaturesEXT{..} -> PhysicalDeviceShaderTileImageFeaturesEXT{shaderTileImageDepthReadAccess = True, ..}
-          }
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = EXT_SHADER_TILE_IMAGE_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "TileImageStencilReadAccessEXT" ->
-    (,)
-      []
-      [ RequireDeviceFeature
-          { featureName = "shaderTileImageStencilReadAccess"
-          , checkFeature = \PhysicalDeviceShaderTileImageFeaturesEXT{shaderTileImageStencilReadAccess} -> shaderTileImageStencilReadAccess
-          , enableFeature = \PhysicalDeviceShaderTileImageFeaturesEXT{..} -> PhysicalDeviceShaderTileImageFeaturesEXT{shaderTileImageStencilReadAccess = True, ..}
-          }
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = EXT_SHADER_TILE_IMAGE_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "CooperativeMatrixKHR" ->
-    (,)
-      []
-      [ RequireDeviceFeature
-          { featureName = "cooperativeMatrix"
-          , checkFeature = \PhysicalDeviceCooperativeMatrixFeaturesKHR{cooperativeMatrix} -> cooperativeMatrix
-          , enableFeature = \PhysicalDeviceCooperativeMatrixFeaturesKHR{..} -> PhysicalDeviceCooperativeMatrixFeaturesKHR{cooperativeMatrix = True, ..}
-          }
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = KHR_COOPERATIVE_MATRIX_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "ShaderEnqueueAMDX" ->
-    (,)
-      []
-      [ RequireDeviceFeature
-          { featureName = "shaderEnqueue"
-          , checkFeature = \PhysicalDeviceShaderEnqueueFeaturesAMDX{shaderEnqueue} -> shaderEnqueue
-          , enableFeature = \PhysicalDeviceShaderEnqueueFeaturesAMDX{..} -> PhysicalDeviceShaderEnqueueFeaturesAMDX{shaderEnqueue = True, ..}
-          }
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = AMDX_SHADER_ENQUEUE_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "GroupNonUniformRotateKHR" ->
-    (,)
-      []
-      [ RequireDeviceFeature
-          { featureName = "shaderSubgroupRotate"
-          , checkFeature = \PhysicalDeviceShaderSubgroupRotateFeaturesKHR{shaderSubgroupRotate} -> shaderSubgroupRotate
-          , enableFeature = \PhysicalDeviceShaderSubgroupRotateFeaturesKHR{..} -> PhysicalDeviceShaderSubgroupRotateFeaturesKHR{shaderSubgroupRotate = True, ..}
-          }
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = KHR_SHADER_SUBGROUP_ROTATE_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "ExpectAssumeKHR" ->
-    (,)
-      []
-      [ RequireDeviceFeature
-          { featureName = "shaderExpectAssume"
-          , checkFeature = \PhysicalDeviceShaderExpectAssumeFeaturesKHR{shaderExpectAssume} -> shaderExpectAssume
-          , enableFeature = \_ -> PhysicalDeviceShaderExpectAssumeFeaturesKHR{shaderExpectAssume = True}
-          }
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = KHR_SHADER_EXPECT_ASSUME_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "FloatControls2" ->
-    (,)
-      []
-      [ RequireDeviceFeature
-          { featureName = "shaderFloatControls2"
-          , checkFeature = \PhysicalDeviceShaderFloatControls2FeaturesKHR{shaderFloatControls2} -> shaderFloatControls2
-          , enableFeature = \_ -> PhysicalDeviceShaderFloatControls2FeaturesKHR{shaderFloatControls2 = True}
-          }
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = KHR_SHADER_FLOAT_CONTROLS_2_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "QuadControlKHR" ->
-    (,)
-      []
-      [ RequireDeviceFeature
-          { featureName = "shaderQuadControl"
-          , checkFeature = \PhysicalDeviceShaderQuadControlFeaturesKHR{shaderQuadControl} -> shaderQuadControl
-          , enableFeature = \_ -> PhysicalDeviceShaderQuadControlFeaturesKHR{shaderQuadControl = True}
-          }
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = KHR_SHADER_QUAD_CONTROL_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "RawAccessChainsNV" ->
-    (,)
-      []
-      [ RequireDeviceFeature
-          { featureName = "shaderRawAccessChains"
-          , checkFeature = \PhysicalDeviceRawAccessChainsFeaturesNV{shaderRawAccessChains} -> shaderRawAccessChains
-          , enableFeature = \_ -> PhysicalDeviceRawAccessChainsFeaturesNV{shaderRawAccessChains = True}
-          }
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = NV_RAW_ACCESS_CHAINS_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "ReplicatedCompositesEXT" ->
-    (,)
-      []
-      [ RequireDeviceFeature
-          { featureName = "shaderReplicatedComposites"
-          , checkFeature = \PhysicalDeviceShaderReplicatedCompositesFeaturesEXT{shaderReplicatedComposites} -> shaderReplicatedComposites
-          , enableFeature = \_ -> PhysicalDeviceShaderReplicatedCompositesFeaturesEXT{shaderReplicatedComposites = True}
-          }
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = EXT_SHADER_REPLICATED_COMPOSITES_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "TensorAddressingNV" ->
-    (,)
-      []
-      [ RequireDeviceFeature
-          { featureName = "cooperativeMatrixTensorAddressing"
-          , checkFeature = \PhysicalDeviceCooperativeMatrix2FeaturesNV{cooperativeMatrixTensorAddressing} -> cooperativeMatrixTensorAddressing
-          , enableFeature = \PhysicalDeviceCooperativeMatrix2FeaturesNV{..} -> PhysicalDeviceCooperativeMatrix2FeaturesNV{cooperativeMatrixTensorAddressing = True, ..}
-          }
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = NV_COOPERATIVE_MATRIX_2_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "CooperativeMatrixReductionsNV" ->
-    (,)
-      []
-      [ RequireDeviceFeature
-          { featureName = "cooperativeMatrixReductions"
-          , checkFeature = \PhysicalDeviceCooperativeMatrix2FeaturesNV{cooperativeMatrixReductions} -> cooperativeMatrixReductions
-          , enableFeature = \PhysicalDeviceCooperativeMatrix2FeaturesNV{..} -> PhysicalDeviceCooperativeMatrix2FeaturesNV{cooperativeMatrixReductions = True, ..}
-          }
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = NV_COOPERATIVE_MATRIX_2_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "CooperativeMatrixConversionsNV" ->
-    (,)
-      []
-      [ RequireDeviceFeature
-          { featureName = "cooperativeMatrixConversions"
-          , checkFeature = \PhysicalDeviceCooperativeMatrix2FeaturesNV{cooperativeMatrixConversions} -> cooperativeMatrixConversions
-          , enableFeature = \PhysicalDeviceCooperativeMatrix2FeaturesNV{..} -> PhysicalDeviceCooperativeMatrix2FeaturesNV{cooperativeMatrixConversions = True, ..}
-          }
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = NV_COOPERATIVE_MATRIX_2_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "CooperativeMatrixPerElementOperationsNV" ->
-    (,)
-      []
-      [ RequireDeviceFeature
-          { featureName = "cooperativeMatrixPerElementOperations"
-          , checkFeature = \PhysicalDeviceCooperativeMatrix2FeaturesNV{cooperativeMatrixPerElementOperations} -> cooperativeMatrixPerElementOperations
-          , enableFeature = \PhysicalDeviceCooperativeMatrix2FeaturesNV{..} -> PhysicalDeviceCooperativeMatrix2FeaturesNV{cooperativeMatrixPerElementOperations = True, ..}
-          }
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = NV_COOPERATIVE_MATRIX_2_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "CooperativeMatrixTensorAddressingNV" ->
-    (,)
-      []
-      [ RequireDeviceFeature
-          { featureName = "cooperativeMatrixTensorAddressing"
-          , checkFeature = \PhysicalDeviceCooperativeMatrix2FeaturesNV{cooperativeMatrixTensorAddressing} -> cooperativeMatrixTensorAddressing
-          , enableFeature = \PhysicalDeviceCooperativeMatrix2FeaturesNV{..} -> PhysicalDeviceCooperativeMatrix2FeaturesNV{cooperativeMatrixTensorAddressing = True, ..}
-          }
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = NV_COOPERATIVE_MATRIX_2_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
-  "CooperativeMatrixBlockLoadsNV" ->
-    (,)
-      []
-      [ RequireDeviceFeature
-          { featureName = "cooperativeMatrixBlockLoads"
-          , checkFeature = \PhysicalDeviceCooperativeMatrix2FeaturesNV{cooperativeMatrixBlockLoads} -> cooperativeMatrixBlockLoads
-          , enableFeature = \PhysicalDeviceCooperativeMatrix2FeaturesNV{..} -> PhysicalDeviceCooperativeMatrix2FeaturesNV{cooperativeMatrixBlockLoads = True, ..}
-          }
-      , RequireDeviceExtension
-          { deviceExtensionLayerName = Nothing
-          , deviceExtensionName = NV_COOPERATIVE_MATRIX_2_EXTENSION_NAME
-          , deviceExtensionMinVersion = 0
-          }
-      ]
+import Vulkan.Core10.DeviceInitialization (PhysicalDeviceFeatures(..))
+import Vulkan.Core11.Promoted_From_VK_KHR_shader_draw_parameters (PhysicalDeviceShaderDrawParametersFeatures(..))
+import Vulkan.Core12 (PhysicalDeviceVulkan11Features(..))
+import Vulkan.Core12 (PhysicalDeviceVulkan11Properties)
+import Vulkan.Core12 (PhysicalDeviceVulkan11Properties(..))
+import Vulkan.Core12 (PhysicalDeviceVulkan12Features(..))
+import Vulkan.Version (pattern MAKE_API_VERSION)
+import Vulkan.Core11.Enums.SubgroupFeatureFlagBits (SubgroupFeatureFlags)
+import Vulkan.Core11.Enums.SubgroupFeatureFlagBits (SubgroupFeatureFlagBits(SUBGROUP_FEATURE_ARITHMETIC_BIT))
+import Vulkan.Core11.Enums.SubgroupFeatureFlagBits (SubgroupFeatureFlags)
+import Vulkan.Core11.Enums.SubgroupFeatureFlagBits (SubgroupFeatureFlagBits(SUBGROUP_FEATURE_BALLOT_BIT))
+import Vulkan.Core11.Enums.SubgroupFeatureFlagBits (SubgroupFeatureFlags)
+import Vulkan.Core11.Enums.SubgroupFeatureFlagBits (SubgroupFeatureFlagBits(SUBGROUP_FEATURE_BASIC_BIT))
+import Vulkan.Core11.Enums.SubgroupFeatureFlagBits (SubgroupFeatureFlags)
+import Vulkan.Core11.Enums.SubgroupFeatureFlagBits (SubgroupFeatureFlagBits(SUBGROUP_FEATURE_CLUSTERED_BIT))
+import Vulkan.Core11.Enums.SubgroupFeatureFlagBits (SubgroupFeatureFlags)
+import Vulkan.Core11.Enums.SubgroupFeatureFlagBits (SubgroupFeatureFlagBits(SUBGROUP_FEATURE_QUAD_BIT))
+import Vulkan.Core11.Enums.SubgroupFeatureFlagBits (SubgroupFeatureFlags)
+import Vulkan.Core11.Enums.SubgroupFeatureFlagBits (SubgroupFeatureFlagBits(SUBGROUP_FEATURE_SHUFFLE_BIT))
+import Vulkan.Core11.Enums.SubgroupFeatureFlagBits (SubgroupFeatureFlags)
+import Vulkan.Core11.Enums.SubgroupFeatureFlagBits (SubgroupFeatureFlagBits(SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT))
+import Vulkan.Core11.Enums.SubgroupFeatureFlagBits (SubgroupFeatureFlags)
+import Vulkan.Core11.Enums.SubgroupFeatureFlagBits (SubgroupFeatureFlagBits(SUBGROUP_FEATURE_VOTE_BIT))
+-- | Check if the intersection of bits is non-zero
+(.&&.) :: Bits a => a -> a -> Bool
+x .&&. y = (x .&. y) /= zeroBits
+
+spirvExtensionRequirements :: ByteString -> ([InstanceRequirement], [DeviceRequirement])
+spirvExtensionRequirements = \case
+  "SPV_KHR_variable_pointers" ->
+    (,)
+      [RequireInstanceVersion $ MAKE_API_VERSION 1 1 0]
+      [RequireDeviceVersion $ MAKE_API_VERSION 1 1 0]
+  "SPV_AMD_shader_explicit_vertex_parameter" -> (,) [] []
+  "SPV_AMD_gcn_shader" -> (,) [] []
+  "SPV_AMD_gpu_shader_half_float" -> (,) [] []
+  "SPV_AMD_gpu_shader_int16" -> (,) [] []
+  "SPV_AMD_shader_ballot" -> (,) [] []
+  "SPV_AMD_shader_fragment_mask" -> (,) [] []
+  "SPV_AMD_shader_image_load_store_lod" -> (,) [] []
+  "SPV_AMD_shader_trinary_minmax" -> (,) [] []
+  "SPV_AMD_texture_gather_bias_lod" -> (,) [] []
+  "SPV_AMD_shader_early_and_late_fragment_tests" -> (,) [] []
+  "SPV_KHR_shader_draw_parameters" ->
+    (,)
+      [RequireInstanceVersion $ MAKE_API_VERSION 1 1 0]
+      [RequireDeviceVersion $ MAKE_API_VERSION 1 1 0]
+  "SPV_KHR_8bit_storage" ->
+    (,)
+      [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0]
+      [RequireDeviceVersion $ MAKE_API_VERSION 1 2 0]
+  "SPV_KHR_16bit_storage" ->
+    (,)
+      [RequireInstanceVersion $ MAKE_API_VERSION 1 1 0]
+      [RequireDeviceVersion $ MAKE_API_VERSION 1 1 0]
+  "SPV_KHR_shader_clock" -> (,) [] []
+  "SPV_KHR_float_controls" ->
+    (,)
+      [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0]
+      [RequireDeviceVersion $ MAKE_API_VERSION 1 2 0]
+  "SPV_KHR_storage_buffer_storage_class" ->
+    (,)
+      [RequireInstanceVersion $ MAKE_API_VERSION 1 1 0]
+      [RequireDeviceVersion $ MAKE_API_VERSION 1 1 0]
+  "SPV_KHR_post_depth_coverage" -> (,) [] []
+  "SPV_EXT_shader_stencil_export" -> (,) [] []
+  "SPV_KHR_shader_ballot" -> (,) [] []
+  "SPV_KHR_subgroup_vote" -> (,) [] []
+  "SPV_NV_sample_mask_override_coverage" -> (,) [] []
+  "SPV_NV_geometry_shader_passthrough" -> (,) [] []
+  "SPV_NV_mesh_shader" -> (,) [] []
+  "SPV_NV_viewport_array2" -> (,) [] []
+  "SPV_NV_shader_subgroup_partitioned" -> (,) [] []
+  "SPV_EXT_shader_subgroup_partitioned" -> (,) [] []
+  "SPV_NV_shader_invocation_reorder" -> (,) [] []
+  "SPV_EXT_shader_viewport_index_layer" ->
+    (,)
+      [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0]
+      [RequireDeviceVersion $ MAKE_API_VERSION 1 2 0]
+  "SPV_NVX_multiview_per_view_attributes" -> (,) [] []
+  "SPV_EXT_descriptor_indexing" ->
+    (,)
+      [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0]
+      [RequireDeviceVersion $ MAKE_API_VERSION 1 2 0]
+  "SPV_KHR_vulkan_memory_model" ->
+    (,)
+      [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0]
+      [RequireDeviceVersion $ MAKE_API_VERSION 1 2 0]
+  "SPV_NV_compute_shader_derivatives" -> (,) [] []
+  "SPV_NV_fragment_shader_barycentric" -> (,) [] []
+  "SPV_NV_shader_image_footprint" -> (,) [] []
+  "SPV_NV_shading_rate" -> (,) [] []
+  "SPV_NV_ray_tracing" -> (,) [] []
+  "SPV_KHR_ray_tracing" -> (,) [] []
+  "SPV_KHR_ray_query" -> (,) [] []
+  "SPV_KHR_ray_cull_mask" -> (,) [] []
+  "SPV_GOOGLE_hlsl_functionality1" -> (,) [] []
+  "SPV_GOOGLE_user_type" -> (,) [] []
+  "SPV_GOOGLE_decorate_string" -> (,) [] []
+  "SPV_EXT_fragment_invocation_density" -> (,) [] []
+  "SPV_KHR_physical_storage_buffer" ->
+    (,)
+      [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0]
+      [RequireDeviceVersion $ MAKE_API_VERSION 1 2 0]
+  "SPV_EXT_physical_storage_buffer" -> (,) [] []
+  "SPV_NV_cooperative_matrix" -> (,) [] []
+  "SPV_NV_shader_sm_builtins" -> (,) [] []
+  "SPV_EXT_fragment_shader_interlock" -> (,) [] []
+  "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" -> (,) [] []
+  "SPV_KHR_non_semantic_info" ->
+    (,)
+      [RequireInstanceVersion $ MAKE_API_VERSION 1 3 0]
+      [RequireDeviceVersion $ MAKE_API_VERSION 1 3 0]
+  "SPV_EXT_shader_image_int64" -> (,) [] []
+  "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" -> (,) [] []
+  "SPV_EXT_shader_atomic_float_add" -> (,) [] []
+  "SPV_KHR_fragment_shader_barycentric" -> (,) [] []
+  "SPV_KHR_subgroup_uniform_control_flow" -> (,) [] []
+  "SPV_EXT_shader_atomic_float_min_max" -> (,) [] []
+  "SPV_EXT_shader_atomic_float16_add" -> (,) [] []
+  "SPV_NV_shader_atomic_fp16_vector" -> (,) [] []
+  "SPV_EXT_fragment_fully_covered" -> (,) [] []
+  "SPV_KHR_integer_dot_product" ->
+    (,)
+      [RequireInstanceVersion $ MAKE_API_VERSION 1 3 0]
+      [RequireDeviceVersion $ MAKE_API_VERSION 1 3 0]
+  "SPV_INTEL_shader_integer_functions2" -> (,) [] []
+  "SPV_KHR_device_group" ->
+    (,)
+      [RequireInstanceVersion $ MAKE_API_VERSION 1 1 0]
+      [RequireDeviceVersion $ MAKE_API_VERSION 1 1 0]
+  "SPV_QCOM_image_processing" -> (,) [] []
+  "SPV_QCOM_image_processing2" -> (,) [] []
+  "SPV_QCOM_image_processing3" -> (,) [] []
+  "SPV_QCOM_cooperative_matrix_conversion" -> (,) [] []
+  "SPV_QCOM_multiple_wait_queues" -> (,) [] []
+  "SPV_EXT_mesh_shader" -> (,) [] []
+  "SPV_KHR_ray_tracing_position_fetch" -> (,) [] []
+  "SPV_EXT_shader_tile_image" -> (,) [] []
+  "SPV_EXT_opacity_micromap" -> (,) [] []
+  "SPV_KHR_opacity_micromap" -> (,) [] []
+  "SPV_EXT_split_barrier" -> (,) [] []
+  "SPV_KHR_cooperative_matrix" -> (,) [] []
+  "SPV_ARM_core_builtins" -> (,) [] []
+  "SPV_HUAWEI_cluster_culling_shader" -> (,) [] []
+  "SPV_HUAWEI_subpass_shading" -> (,) [] []
+  "SPV_NV_ray_tracing_motion_blur" -> (,) [] []
+  "SPV_KHR_maximal_reconvergence" -> (,) [] []
+  "SPV_KHR_subgroup_rotate" ->
+    (,)
+      [RequireInstanceVersion $ MAKE_API_VERSION 1 4 0]
+      [RequireDeviceVersion $ MAKE_API_VERSION 1 4 0]
+  "SPV_KHR_expect_assume" ->
+    (,)
+      [RequireInstanceVersion $ MAKE_API_VERSION 1 4 0]
+      [RequireDeviceVersion $ MAKE_API_VERSION 1 4 0]
+  "SPV_KHR_float_controls2" ->
+    (,)
+      [RequireInstanceVersion $ MAKE_API_VERSION 1 4 0]
+      [RequireDeviceVersion $ MAKE_API_VERSION 1 4 0]
+  "SPV_KHR_fma" -> (,) [] []
+  "SPV_KHR_quad_control" -> (,) [] []
+  "SPV_KHR_bfloat16" -> (,) [] []
+  "SPV_NV_raw_access_chains" -> (,) [] []
+  "SPV_KHR_compute_shader_derivatives" -> (,) [] []
+  "SPV_EXT_replicated_composites" -> (,) [] []
+  "SPV_KHR_relaxed_extended_instruction" -> (,) [] []
+  "SPV_NV_cooperative_matrix2" -> (,) [] []
+  "SPV_NV_tensor_addressing" -> (,) [] []
+  "SPV_NV_linear_swept_spheres" -> (,) [] []
+  "SPV_NV_cluster_acceleration_structure" -> (,) [] []
+  "SPV_NV_cooperative_vector" -> (,) [] []
+  "SPV_NV_push_constant_bank" -> (,) [] []
+  "SPV_EXT_shader_invocation_reorder" -> (,) [] []
+  "SPV_QCOM_tile_shading" -> (,) [] []
+  "SPV_ARM_tensors" -> (,) [] []
+  "SPV_EXT_float8" -> (,) [] []
+  "SPV_ARM_graph" -> (,) [] []
+  "SPV_KHR_untyped_pointers" -> (,) [] []
+  "SPV_EXT_shader_64bit_indexing" -> (,) [] []
+  "SPV_EXT_long_vector" -> (,) [] []
+  "SPV_EXT_descriptor_heap" -> (,) [] []
+  "SPV_VALVE_mixed_float_dot_product" -> (,) [] []
+  "SPV_KHR_abort" -> (,) [] []
+  "SPV_KHR_constant_data" -> (,) [] []
+  _ -> ([], [])
+
+spirvCapabilityRequirements :: ByteString -> ([InstanceRequirement], [DeviceRequirement])
+spirvCapabilityRequirements = \case
+  "Matrix" ->
+    (,)
+      [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]
+      [RequireDeviceVersion $ MAKE_API_VERSION 1 0 0]
+  "Shader" ->
+    (,)
+      [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]
+      [RequireDeviceVersion $ MAKE_API_VERSION 1 0 0]
+  "InputAttachment" ->
+    (,)
+      [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]
+      [RequireDeviceVersion $ MAKE_API_VERSION 1 0 0]
+  "Sampled1D" ->
+    (,)
+      [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]
+      [RequireDeviceVersion $ MAKE_API_VERSION 1 0 0]
+  "Image1D" ->
+    (,)
+      [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]
+      [RequireDeviceVersion $ MAKE_API_VERSION 1 0 0]
+  "SampledBuffer" ->
+    (,)
+      [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]
+      [RequireDeviceVersion $ MAKE_API_VERSION 1 0 0]
+  "ImageBuffer" ->
+    (,)
+      [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]
+      [RequireDeviceVersion $ MAKE_API_VERSION 1 0 0]
+  "ImageQuery" ->
+    (,)
+      [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]
+      [RequireDeviceVersion $ MAKE_API_VERSION 1 0 0]
+  "DerivativeControl" ->
+    (,)
+      [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]
+      [RequireDeviceVersion $ MAKE_API_VERSION 1 0 0]
+  "Geometry" ->
+    (,)
+      [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]
+      [ RequireDeviceFeature
+          { featureName = "geometryShader"
+          , checkFeature = \PhysicalDeviceFeatures{geometryShader} -> geometryShader
+          , enableFeature = \PhysicalDeviceFeatures{..} -> PhysicalDeviceFeatures{geometryShader = True, ..}
+          }
+      , RequireDeviceVersion $ MAKE_API_VERSION 1 0 0
+      ]
+  "Tessellation" ->
+    (,)
+      [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]
+      [ RequireDeviceFeature
+          { featureName = "tessellationShader"
+          , checkFeature = \PhysicalDeviceFeatures{tessellationShader} -> tessellationShader
+          , enableFeature = \PhysicalDeviceFeatures{..} -> PhysicalDeviceFeatures{tessellationShader = True, ..}
+          }
+      , RequireDeviceVersion $ MAKE_API_VERSION 1 0 0
+      ]
+  "Float64" ->
+    (,)
+      [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]
+      [ RequireDeviceFeature
+          { featureName = "shaderFloat64"
+          , checkFeature = \PhysicalDeviceFeatures{shaderFloat64} -> shaderFloat64
+          , enableFeature = \PhysicalDeviceFeatures{..} -> PhysicalDeviceFeatures{shaderFloat64 = True, ..}
+          }
+      , RequireDeviceVersion $ MAKE_API_VERSION 1 0 0
+      ]
+  "Int64" ->
+    (,)
+      [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]
+      [ RequireDeviceFeature
+          { featureName = "shaderInt64"
+          , checkFeature = \PhysicalDeviceFeatures{shaderInt64} -> shaderInt64
+          , enableFeature = \PhysicalDeviceFeatures{..} -> PhysicalDeviceFeatures{shaderInt64 = True, ..}
+          }
+      , RequireDeviceVersion $ MAKE_API_VERSION 1 0 0
+      ]
+  "Int64Atomics" -> (,) [] []
+  "AtomicFloat16AddEXT" -> (,) [] []
+  "AtomicFloat32AddEXT" -> (,) [] []
+  "AtomicFloat64AddEXT" -> (,) [] []
+  "AtomicFloat16MinMaxEXT" -> (,) [] []
+  "AtomicFloat32MinMaxEXT" -> (,) [] []
+  "AtomicFloat64MinMaxEXT" -> (,) [] []
+  "AtomicFloat16VectorNV" -> (,) [] []
+  "Int64ImageEXT" -> (,) [] []
+  "Int16" ->
+    (,)
+      [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]
+      [ RequireDeviceFeature
+          { featureName = "shaderInt16"
+          , checkFeature = \PhysicalDeviceFeatures{shaderInt16} -> shaderInt16
+          , enableFeature = \PhysicalDeviceFeatures{..} -> PhysicalDeviceFeatures{shaderInt16 = True, ..}
+          }
+      , RequireDeviceVersion $ MAKE_API_VERSION 1 0 0
+      ]
+  "TessellationPointSize" ->
+    (,)
+      [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]
+      [ RequireDeviceFeature
+          { featureName = "shaderTessellationAndGeometryPointSize"
+          , checkFeature = \PhysicalDeviceFeatures{shaderTessellationAndGeometryPointSize} -> shaderTessellationAndGeometryPointSize
+          , enableFeature = \PhysicalDeviceFeatures{..} -> PhysicalDeviceFeatures{shaderTessellationAndGeometryPointSize = True, ..}
+          }
+      , RequireDeviceVersion $ MAKE_API_VERSION 1 0 0
+      ]
+  "GeometryPointSize" ->
+    (,)
+      [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]
+      [ RequireDeviceFeature
+          { featureName = "shaderTessellationAndGeometryPointSize"
+          , checkFeature = \PhysicalDeviceFeatures{shaderTessellationAndGeometryPointSize} -> shaderTessellationAndGeometryPointSize
+          , enableFeature = \PhysicalDeviceFeatures{..} -> PhysicalDeviceFeatures{shaderTessellationAndGeometryPointSize = True, ..}
+          }
+      , RequireDeviceVersion $ MAKE_API_VERSION 1 0 0
+      ]
+  "ImageGatherExtended" ->
+    (,)
+      [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]
+      [ RequireDeviceFeature
+          { featureName = "shaderImageGatherExtended"
+          , checkFeature = \PhysicalDeviceFeatures{shaderImageGatherExtended} -> shaderImageGatherExtended
+          , enableFeature = \PhysicalDeviceFeatures{..} -> PhysicalDeviceFeatures{shaderImageGatherExtended = True, ..}
+          }
+      , RequireDeviceVersion $ MAKE_API_VERSION 1 0 0
+      ]
+  "StorageImageMultisample" ->
+    (,)
+      [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]
+      [ RequireDeviceFeature
+          { featureName = "shaderStorageImageMultisample"
+          , checkFeature = \PhysicalDeviceFeatures{shaderStorageImageMultisample} -> shaderStorageImageMultisample
+          , enableFeature = \PhysicalDeviceFeatures{..} -> PhysicalDeviceFeatures{shaderStorageImageMultisample = True, ..}
+          }
+      , RequireDeviceVersion $ MAKE_API_VERSION 1 0 0
+      ]
+  "UniformBufferArrayDynamicIndexing" ->
+    (,)
+      [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]
+      [ RequireDeviceFeature
+          { featureName = "shaderUniformBufferArrayDynamicIndexing"
+          , checkFeature = \PhysicalDeviceFeatures{shaderUniformBufferArrayDynamicIndexing} -> shaderUniformBufferArrayDynamicIndexing
+          , enableFeature = \PhysicalDeviceFeatures{..} -> PhysicalDeviceFeatures{shaderUniformBufferArrayDynamicIndexing = True, ..}
+          }
+      , RequireDeviceVersion $ MAKE_API_VERSION 1 0 0
+      ]
+  "SampledImageArrayDynamicIndexing" ->
+    (,)
+      [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]
+      [ RequireDeviceFeature
+          { featureName = "shaderSampledImageArrayDynamicIndexing"
+          , checkFeature = \PhysicalDeviceFeatures{shaderSampledImageArrayDynamicIndexing} -> shaderSampledImageArrayDynamicIndexing
+          , enableFeature = \PhysicalDeviceFeatures{..} -> PhysicalDeviceFeatures{shaderSampledImageArrayDynamicIndexing = True, ..}
+          }
+      , RequireDeviceVersion $ MAKE_API_VERSION 1 0 0
+      ]
+  "StorageBufferArrayDynamicIndexing" ->
+    (,)
+      [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]
+      [ RequireDeviceFeature
+          { featureName = "shaderStorageBufferArrayDynamicIndexing"
+          , checkFeature = \PhysicalDeviceFeatures{shaderStorageBufferArrayDynamicIndexing} -> shaderStorageBufferArrayDynamicIndexing
+          , enableFeature = \PhysicalDeviceFeatures{..} -> PhysicalDeviceFeatures{shaderStorageBufferArrayDynamicIndexing = True, ..}
+          }
+      , RequireDeviceVersion $ MAKE_API_VERSION 1 0 0
+      ]
+  "StorageImageArrayDynamicIndexing" ->
+    (,)
+      [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]
+      [ RequireDeviceFeature
+          { featureName = "shaderStorageImageArrayDynamicIndexing"
+          , checkFeature = \PhysicalDeviceFeatures{shaderStorageImageArrayDynamicIndexing} -> shaderStorageImageArrayDynamicIndexing
+          , enableFeature = \PhysicalDeviceFeatures{..} -> PhysicalDeviceFeatures{shaderStorageImageArrayDynamicIndexing = True, ..}
+          }
+      , RequireDeviceVersion $ MAKE_API_VERSION 1 0 0
+      ]
+  "ClipDistance" ->
+    (,)
+      [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]
+      [ RequireDeviceFeature
+          { featureName = "shaderClipDistance"
+          , checkFeature = \PhysicalDeviceFeatures{shaderClipDistance} -> shaderClipDistance
+          , enableFeature = \PhysicalDeviceFeatures{..} -> PhysicalDeviceFeatures{shaderClipDistance = True, ..}
+          }
+      , RequireDeviceVersion $ MAKE_API_VERSION 1 0 0
+      ]
+  "CullDistance" ->
+    (,)
+      [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]
+      [ RequireDeviceFeature
+          { featureName = "shaderCullDistance"
+          , checkFeature = \PhysicalDeviceFeatures{shaderCullDistance} -> shaderCullDistance
+          , enableFeature = \PhysicalDeviceFeatures{..} -> PhysicalDeviceFeatures{shaderCullDistance = True, ..}
+          }
+      , RequireDeviceVersion $ MAKE_API_VERSION 1 0 0
+      ]
+  "ImageCubeArray" ->
+    (,)
+      [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]
+      [ RequireDeviceFeature
+          { featureName = "imageCubeArray"
+          , checkFeature = \PhysicalDeviceFeatures{imageCubeArray} -> imageCubeArray
+          , enableFeature = \PhysicalDeviceFeatures{..} -> PhysicalDeviceFeatures{imageCubeArray = True, ..}
+          }
+      , RequireDeviceVersion $ MAKE_API_VERSION 1 0 0
+      ]
+  "SampleRateShading" ->
+    (,)
+      [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]
+      [ RequireDeviceFeature
+          { featureName = "sampleRateShading"
+          , checkFeature = \PhysicalDeviceFeatures{sampleRateShading} -> sampleRateShading
+          , enableFeature = \PhysicalDeviceFeatures{..} -> PhysicalDeviceFeatures{sampleRateShading = True, ..}
+          }
+      , RequireDeviceVersion $ MAKE_API_VERSION 1 0 0
+      ]
+  "SparseResidency" ->
+    (,)
+      [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]
+      [ RequireDeviceFeature
+          { featureName = "shaderResourceResidency"
+          , checkFeature = \PhysicalDeviceFeatures{shaderResourceResidency} -> shaderResourceResidency
+          , enableFeature = \PhysicalDeviceFeatures{..} -> PhysicalDeviceFeatures{shaderResourceResidency = True, ..}
+          }
+      , RequireDeviceVersion $ MAKE_API_VERSION 1 0 0
+      ]
+  "MinLod" ->
+    (,)
+      [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]
+      [ RequireDeviceFeature
+          { featureName = "shaderResourceMinLod"
+          , checkFeature = \PhysicalDeviceFeatures{shaderResourceMinLod} -> shaderResourceMinLod
+          , enableFeature = \PhysicalDeviceFeatures{..} -> PhysicalDeviceFeatures{shaderResourceMinLod = True, ..}
+          }
+      , RequireDeviceVersion $ MAKE_API_VERSION 1 0 0
+      ]
+  "SampledCubeArray" ->
+    (,)
+      [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]
+      [ RequireDeviceFeature
+          { featureName = "imageCubeArray"
+          , checkFeature = \PhysicalDeviceFeatures{imageCubeArray} -> imageCubeArray
+          , enableFeature = \PhysicalDeviceFeatures{..} -> PhysicalDeviceFeatures{imageCubeArray = True, ..}
+          }
+      , RequireDeviceVersion $ MAKE_API_VERSION 1 0 0
+      ]
+  "ImageMSArray" ->
+    (,)
+      [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]
+      [ RequireDeviceFeature
+          { featureName = "shaderStorageImageMultisample"
+          , checkFeature = \PhysicalDeviceFeatures{shaderStorageImageMultisample} -> shaderStorageImageMultisample
+          , enableFeature = \PhysicalDeviceFeatures{..} -> PhysicalDeviceFeatures{shaderStorageImageMultisample = True, ..}
+          }
+      , RequireDeviceVersion $ MAKE_API_VERSION 1 0 0
+      ]
+  "StorageImageExtendedFormats" ->
+    (,)
+      [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]
+      [RequireDeviceVersion $ MAKE_API_VERSION 1 0 0]
+  "InterpolationFunction" ->
+    (,)
+      [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]
+      [ RequireDeviceFeature
+          { featureName = "sampleRateShading"
+          , checkFeature = \PhysicalDeviceFeatures{sampleRateShading} -> sampleRateShading
+          , enableFeature = \PhysicalDeviceFeatures{..} -> PhysicalDeviceFeatures{sampleRateShading = True, ..}
+          }
+      , RequireDeviceVersion $ MAKE_API_VERSION 1 0 0
+      ]
+  "StorageImageReadWithoutFormat" ->
+    (,)
+      [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]
+      [ RequireDeviceFeature
+          { featureName = "shaderStorageImageReadWithoutFormat"
+          , checkFeature = \PhysicalDeviceFeatures{shaderStorageImageReadWithoutFormat} -> shaderStorageImageReadWithoutFormat
+          , enableFeature = \PhysicalDeviceFeatures{..} -> PhysicalDeviceFeatures{shaderStorageImageReadWithoutFormat = True, ..}
+          }
+      , RequireDeviceVersion $ MAKE_API_VERSION 1 0 0
+      ]
+  "StorageImageWriteWithoutFormat" ->
+    (,)
+      [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]
+      [ RequireDeviceFeature
+          { featureName = "shaderStorageImageWriteWithoutFormat"
+          , checkFeature = \PhysicalDeviceFeatures{shaderStorageImageWriteWithoutFormat} -> shaderStorageImageWriteWithoutFormat
+          , enableFeature = \PhysicalDeviceFeatures{..} -> PhysicalDeviceFeatures{shaderStorageImageWriteWithoutFormat = True, ..}
+          }
+      , RequireDeviceVersion $ MAKE_API_VERSION 1 0 0
+      ]
+  "MultiViewport" ->
+    (,)
+      [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]
+      [ RequireDeviceFeature
+          { featureName = "multiViewport"
+          , checkFeature = \PhysicalDeviceFeatures{multiViewport} -> multiViewport
+          , enableFeature = \PhysicalDeviceFeatures{..} -> PhysicalDeviceFeatures{multiViewport = True, ..}
+          }
+      , RequireDeviceVersion $ MAKE_API_VERSION 1 0 0
+      ]
+  "DrawParameters" ->
+    (,)
+      [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0]
+      [ RequireDeviceFeature
+          { featureName = "shaderDrawParameters"
+          , checkFeature = \PhysicalDeviceVulkan11Features{shaderDrawParameters} -> shaderDrawParameters
+          , enableFeature = \PhysicalDeviceVulkan11Features{..} -> PhysicalDeviceVulkan11Features{shaderDrawParameters = True, ..}
+          }
+      , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
+      ]
+  "MultiView" ->
+    (,)
+      [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0]
+      [ RequireDeviceFeature
+          { featureName = "multiview"
+          , checkFeature = \PhysicalDeviceVulkan11Features{multiview} -> multiview
+          , enableFeature = \PhysicalDeviceVulkan11Features{..} -> PhysicalDeviceVulkan11Features{multiview = True, ..}
+          }
+      , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
+      ]
+  "DeviceGroup" ->
+    (,)
+      [RequireInstanceVersion $ MAKE_API_VERSION 1 1 0]
+      [RequireDeviceVersion $ MAKE_API_VERSION 1 1 0]
+  "VariablePointersStorageBuffer" ->
+    (,)
+      [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0]
+      [ RequireDeviceFeature
+          { featureName = "variablePointersStorageBuffer"
+          , checkFeature = \PhysicalDeviceVulkan11Features{variablePointersStorageBuffer} -> variablePointersStorageBuffer
+          , enableFeature = \PhysicalDeviceVulkan11Features{..} -> PhysicalDeviceVulkan11Features{variablePointersStorageBuffer = True, ..}
+          }
+      , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
+      ]
+  "VariablePointers" ->
+    (,)
+      [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0]
+      [ RequireDeviceFeature
+          { featureName = "variablePointers"
+          , checkFeature = \PhysicalDeviceVulkan11Features{variablePointers} -> variablePointers
+          , enableFeature = \PhysicalDeviceVulkan11Features{..} -> PhysicalDeviceVulkan11Features{variablePointers = True, ..}
+          }
+      , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
+      ]
+  "ShaderClockKHR" -> (,) [] []
+  "StencilExportEXT" -> (,) [] []
+  "SubgroupBallotKHR" -> (,) [] []
+  "SubgroupVoteKHR" -> (,) [] []
+  "ImageReadWriteLodAMD" -> (,) [] []
+  "ImageGatherBiasLodAMD" -> (,) [] []
+  "FragmentMaskAMD" -> (,) [] []
+  "SampleMaskOverrideCoverageNV" -> (,) [] []
+  "GeometryShaderPassthroughNV" -> (,) [] []
+  "ShaderViewportIndex" ->
+    (,)
+      [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0]
+      [ RequireDeviceFeature
+          { featureName = "shaderOutputViewportIndex"
+          , checkFeature = \PhysicalDeviceVulkan12Features{shaderOutputViewportIndex} -> shaderOutputViewportIndex
+          , enableFeature = \PhysicalDeviceVulkan12Features{..} -> PhysicalDeviceVulkan12Features{shaderOutputViewportIndex = True, ..}
+          }
+      , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
+      ]
+  "ShaderLayer" ->
+    (,)
+      [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0]
+      [ RequireDeviceFeature
+          { featureName = "shaderOutputLayer"
+          , checkFeature = \PhysicalDeviceVulkan12Features{shaderOutputLayer} -> shaderOutputLayer
+          , enableFeature = \PhysicalDeviceVulkan12Features{..} -> PhysicalDeviceVulkan12Features{shaderOutputLayer = True, ..}
+          }
+      , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
+      ]
+  "ShaderViewportIndexLayerEXT" -> (,) [] []
+  "ShaderViewportMaskNV" -> (,) [] []
+  "PerViewAttributesNV" -> (,) [] []
+  "StorageBuffer16BitAccess" ->
+    (,)
+      [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0]
+      [ RequireDeviceFeature
+          { featureName = "storageBuffer16BitAccess"
+          , checkFeature = \PhysicalDeviceVulkan11Features{storageBuffer16BitAccess} -> storageBuffer16BitAccess
+          , enableFeature = \PhysicalDeviceVulkan11Features{..} -> PhysicalDeviceVulkan11Features{storageBuffer16BitAccess = True, ..}
+          }
+      , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
+      ]
+  "UniformAndStorageBuffer16BitAccess" ->
+    (,)
+      [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0]
+      [ RequireDeviceFeature
+          { featureName = "uniformAndStorageBuffer16BitAccess"
+          , checkFeature = \PhysicalDeviceVulkan11Features{uniformAndStorageBuffer16BitAccess} -> uniformAndStorageBuffer16BitAccess
+          , enableFeature = \PhysicalDeviceVulkan11Features{..} -> PhysicalDeviceVulkan11Features{uniformAndStorageBuffer16BitAccess = True, ..}
+          }
+      , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
+      ]
+  "StoragePushConstant16" ->
+    (,)
+      [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0]
+      [ RequireDeviceFeature
+          { featureName = "storagePushConstant16"
+          , checkFeature = \PhysicalDeviceVulkan11Features{storagePushConstant16} -> storagePushConstant16
+          , enableFeature = \PhysicalDeviceVulkan11Features{..} -> PhysicalDeviceVulkan11Features{storagePushConstant16 = True, ..}
+          }
+      , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
+      ]
+  "StorageInputOutput16" ->
+    (,)
+      [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0]
+      [ RequireDeviceFeature
+          { featureName = "storageInputOutput16"
+          , checkFeature = \PhysicalDeviceVulkan11Features{storageInputOutput16} -> storageInputOutput16
+          , enableFeature = \PhysicalDeviceVulkan11Features{..} -> PhysicalDeviceVulkan11Features{storageInputOutput16 = True, ..}
+          }
+      , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
+      ]
+  "GroupNonUniform" ->
+    (,)
+      [RequireInstanceVersion $ MAKE_API_VERSION 1 1 0]
+      [ RequireDeviceProperty
+          { propertyName = "VkPhysicalDeviceVulkan11Properties"
+          , checkProperty = \p -> SUBGROUP_FEATURE_BASIC_BIT .&&. subgroupSupportedOperations (p :: PhysicalDeviceVulkan11Properties)
+          }
+      , RequireDeviceVersion $ MAKE_API_VERSION 1 1 0
+      ]
+  "GroupNonUniformVote" ->
+    (,)
+      [RequireInstanceVersion $ MAKE_API_VERSION 1 1 0]
+      [ RequireDeviceProperty
+          { propertyName = "VkPhysicalDeviceVulkan11Properties"
+          , checkProperty = \p -> SUBGROUP_FEATURE_VOTE_BIT .&&. subgroupSupportedOperations (p :: PhysicalDeviceVulkan11Properties)
+          }
+      , RequireDeviceVersion $ MAKE_API_VERSION 1 1 0
+      ]
+  "GroupNonUniformArithmetic" ->
+    (,)
+      [RequireInstanceVersion $ MAKE_API_VERSION 1 1 0]
+      [ RequireDeviceProperty
+          { propertyName = "VkPhysicalDeviceVulkan11Properties"
+          , checkProperty = \p -> SUBGROUP_FEATURE_ARITHMETIC_BIT .&&. subgroupSupportedOperations (p :: PhysicalDeviceVulkan11Properties)
+          }
+      , RequireDeviceVersion $ MAKE_API_VERSION 1 1 0
+      ]
+  "GroupNonUniformBallot" ->
+    (,)
+      [RequireInstanceVersion $ MAKE_API_VERSION 1 1 0]
+      [ RequireDeviceProperty
+          { propertyName = "VkPhysicalDeviceVulkan11Properties"
+          , checkProperty = \p -> SUBGROUP_FEATURE_BALLOT_BIT .&&. subgroupSupportedOperations (p :: PhysicalDeviceVulkan11Properties)
+          }
+      , RequireDeviceVersion $ MAKE_API_VERSION 1 1 0
+      ]
+  "GroupNonUniformShuffle" ->
+    (,)
+      [RequireInstanceVersion $ MAKE_API_VERSION 1 1 0]
+      [ RequireDeviceProperty
+          { propertyName = "VkPhysicalDeviceVulkan11Properties"
+          , checkProperty = \p -> SUBGROUP_FEATURE_SHUFFLE_BIT .&&. subgroupSupportedOperations (p :: PhysicalDeviceVulkan11Properties)
+          }
+      , RequireDeviceVersion $ MAKE_API_VERSION 1 1 0
+      ]
+  "GroupNonUniformShuffleRelative" ->
+    (,)
+      [RequireInstanceVersion $ MAKE_API_VERSION 1 1 0]
+      [ RequireDeviceProperty
+          { propertyName = "VkPhysicalDeviceVulkan11Properties"
+          , checkProperty = \p -> SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT .&&. subgroupSupportedOperations (p :: PhysicalDeviceVulkan11Properties)
+          }
+      , RequireDeviceVersion $ MAKE_API_VERSION 1 1 0
+      ]
+  "GroupNonUniformClustered" ->
+    (,)
+      [RequireInstanceVersion $ MAKE_API_VERSION 1 1 0]
+      [ RequireDeviceProperty
+          { propertyName = "VkPhysicalDeviceVulkan11Properties"
+          , checkProperty = \p -> SUBGROUP_FEATURE_CLUSTERED_BIT .&&. subgroupSupportedOperations (p :: PhysicalDeviceVulkan11Properties)
+          }
+      , RequireDeviceVersion $ MAKE_API_VERSION 1 1 0
+      ]
+  "GroupNonUniformQuad" ->
+    (,)
+      [RequireInstanceVersion $ MAKE_API_VERSION 1 1 0]
+      [ RequireDeviceProperty
+          { propertyName = "VkPhysicalDeviceVulkan11Properties"
+          , checkProperty = \p -> SUBGROUP_FEATURE_QUAD_BIT .&&. subgroupSupportedOperations (p :: PhysicalDeviceVulkan11Properties)
+          }
+      , RequireDeviceVersion $ MAKE_API_VERSION 1 1 0
+      ]
+  "GroupNonUniformPartitionedEXT" -> (,) [] []
+  "SampleMaskPostDepthCoverage" -> (,) [] []
+  "ShaderNonUniform" ->
+    (,)
+      [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0]
+      [RequireDeviceVersion $ MAKE_API_VERSION 1 2 0]
+  "RuntimeDescriptorArray" -> (,) [] []
+  "InputAttachmentArrayDynamicIndexing" -> (,) [] []
+  "UniformTexelBufferArrayDynamicIndexing" -> (,) [] []
+  "StorageTexelBufferArrayDynamicIndexing" -> (,) [] []
+  "UniformBufferArrayNonUniformIndexing" -> (,) [] []
+  "SampledImageArrayNonUniformIndexing" -> (,) [] []
+  "StorageBufferArrayNonUniformIndexing" -> (,) [] []
+  "StorageImageArrayNonUniformIndexing" -> (,) [] []
+  "InputAttachmentArrayNonUniformIndexing" -> (,) [] []
+  "UniformTexelBufferArrayNonUniformIndexing" -> (,) [] []
+  "StorageTexelBufferArrayNonUniformIndexing" -> (,) [] []
+  "FragmentFullyCoveredEXT" -> (,) [] []
+  "Float16" -> (,) [] []
+  "Int8" -> (,) [] []
+  "StorageBuffer8BitAccess" -> (,) [] []
+  "UniformAndStorageBuffer8BitAccess" -> (,) [] []
+  "StoragePushConstant8" -> (,) [] []
+  "VulkanMemoryModel" -> (,) [] []
+  "VulkanMemoryModelDeviceScope" -> (,) [] []
+  "DenormPreserve" -> (,) [] []
+  "DenormFlushToZero" -> (,) [] []
+  "SignedZeroInfNanPreserve" -> (,) [] []
+  "RoundingModeRTE" -> (,) [] []
+  "RoundingModeRTZ" -> (,) [] []
+  "ComputeDerivativeGroupQuadsKHR" -> (,) [] []
+  "ComputeDerivativeGroupLinearKHR" -> (,) [] []
+  "ImageFootprintNV" -> (,) [] []
+  "MeshShadingNV" -> (,) [] []
+  "RayTracingKHR" -> (,) [] []
+  "RayQueryKHR" -> (,) [] []
+  "RayTraversalPrimitiveCullingKHR" -> (,) [] []
+  "RayCullMaskKHR" -> (,) [] []
+  "RayTracingNV" -> (,) [] []
+  "RayTracingMotionBlurNV" -> (,) [] []
+  "TransformFeedback" -> (,) [] []
+  "GeometryStreams" -> (,) [] []
+  "FragmentDensityEXT" -> (,) [] []
+  "PhysicalStorageBufferAddresses" -> (,) [] []
+  "CooperativeMatrixNV" -> (,) [] []
+  "IntegerFunctions2INTEL" -> (,) [] []
+  "ShaderSMBuiltinsNV" -> (,) [] []
+  "FragmentShaderSampleInterlockEXT" -> (,) [] []
+  "FragmentShaderPixelInterlockEXT" -> (,) [] []
+  "FragmentShaderShadingRateInterlockEXT" -> (,) [] []
+  "DemoteToHelperInvocation" -> (,) [] []
+  "FragmentShadingRateKHR" -> (,) [] []
+  "WorkgroupMemoryExplicitLayoutKHR" -> (,) [] []
+  "WorkgroupMemoryExplicitLayout8BitAccessKHR" -> (,) [] []
+  "WorkgroupMemoryExplicitLayout16BitAccessKHR" -> (,) [] []
+  "DotProductInputAll" -> (,) [] []
+  "DotProductInput4x8Bit" -> (,) [] []
+  "DotProductInput4x8BitPacked" -> (,) [] []
+  "DotProduct" -> (,) [] []
+  "FragmentBarycentricKHR" -> (,) [] []
+  "TextureSampleWeightedQCOM" -> (,) [] []
+  "TextureBoxFilterQCOM" -> (,) [] []
+  "TextureBlockMatchQCOM" -> (,) [] []
+  "TextureBlockMatch2QCOM" -> (,) [] []
+  "ImageGatherLinearQCOM" -> (,) [] []
+  "ImageGatherExtendedModesQCOM" -> (,) [] []
+  "MeshShadingEXT" -> (,) [] []
+  "RayTracingOpacityMicromapEXT" -> (,) [] []
+  "RayTracingOpacityMicromapKHR" -> (,) [] []
+  "RayTracingOpacityMicromapExecutionModeKHR" -> (,) [] []
+  "CoreBuiltinsARM" -> (,) [] []
+  "ShaderInvocationReorderNV" -> (,) [] []
+  "ClusterCullingShadingHUAWEI" -> (,) [] []
+  "RayTracingPositionFetchKHR" -> (,) [] []
+  "RayQueryPositionFetchKHR" -> (,) [] []
+  "TileImageColorReadAccessEXT" -> (,) [] []
+  "TileImageDepthReadAccessEXT" -> (,) [] []
+  "TileImageStencilReadAccessEXT" -> (,) [] []
+  "CooperativeMatrixKHR" -> (,) [] []
+  "CooperativeMatrixConversionQCOM" -> (,) [] []
+  "ShaderEnqueueAMDX" -> (,) [] []
+  "GroupNonUniformRotateKHR" -> (,) [] []
+  "ExpectAssumeKHR" -> (,) [] []
+  "FloatControls2" -> (,) [] []
+  "QuadControlKHR" -> (,) [] []
+  "BFloat16TypeKHR" -> (,) [] []
+  "BFloat16DotProductKHR" -> (,) [] []
+  "BFloat16CooperativeMatrixKHR" -> (,) [] []
+  "RawAccessChainsNV" -> (,) [] []
+  "ReplicatedCompositesEXT" -> (,) [] []
+  "TensorAddressingNV" -> (,) [] []
+  "CooperativeMatrixReductionsNV" -> (,) [] []
+  "CooperativeMatrixConversionsNV" -> (,) [] []
+  "CooperativeMatrixPerElementOperationsNV" -> (,) [] []
+  "CooperativeMatrixTensorAddressingNV" -> (,) [] []
+  "CooperativeMatrixBlockLoadsNV" -> (,) [] []
+  "RayTracingSpheresGeometryNV" -> (,) [] []
+  "RayTracingLinearSweptSpheresGeometryNV" -> (,) [] []
+  "RayTracingClusterAccelerationStructureNV" -> (,) [] []
+  "CooperativeVectorNV" -> (,) [] []
+  "CooperativeVectorTrainingNV" -> (,) [] []
+  "PushConstantBanksNV" -> (,) [] []
+  "ShaderInvocationReorderEXT" -> (,) [] []
+  "TileShadingQCOM" -> (,) [] []
+  "SplitBarrierEXT" -> (,) [] []
+  "MultipleWaitQueuesQCOM" -> (,) [] []
+  "TensorsARM" -> (,) [] []
+  "StorageTensorArrayDynamicIndexingARM" -> (,) [] []
+  "StorageTensorArrayNonUniformIndexingARM" -> (,) [] []
+  "Float8EXT" -> (,) [] []
+  "Float8CooperativeMatrixEXT" -> (,) [] []
+  "GraphARM" -> (,) [] []
+  "UntypedPointersKHR" -> (,) [] []
+  "FMAKHR" -> (,) [] []
+  "Shader64BitIndexingEXT" -> (,) [] []
+  "LongVectorEXT" -> (,) [] []
+  "DescriptorHeapEXT" -> (,) [] []
+  "DotProductFloat16AccFloat32VALVE" -> (,) [] []
+  "DotProductFloat16AccFloat16VALVE" -> (,) [] []
+  "DotProductBFloat16AccVALVE" -> (,) [] []
+  "DotProductFloat8AccFloat32VALVE" -> (,) [] []
+  "ConstantDataKHR" -> (,) [] []
+  "AbortKHR" -> (,) [] []
   _ -> ([], [])
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 = 302
+pattern HEADER_VERSION = 351
 
 
 pattern HEADER_VERSION_COMPLETE :: Word32
-pattern HEADER_VERSION_COMPLETE = MAKE_API_VERSION 1 3 302
+pattern HEADER_VERSION_COMPLETE = MAKE_API_VERSION 1 4 351
 
 
 pattern MAKE_API_VERSION :: Word32 -> Word32 -> Word32 -> Word32
diff --git a/vulkan.cabal b/vulkan.cabal
--- a/vulkan.cabal
+++ b/vulkan.cabal
@@ -1,11 +1,11 @@
 cabal-version: 2.2
 
--- This file has been generated from package.yaml by hpack version 0.36.1.
+-- This file has been generated from package.yaml by hpack version 0.39.1.
 --
 -- see: https://github.com/sol/hpack
 
 name:           vulkan
-version:        3.26.6
+version:        3.27
 synopsis:       Bindings to the Vulkan graphics API.
 description:    Please see [the readme](https://github.com/expipiplus1/vulkan/#readme)
 category:       Graphics
@@ -55,6 +55,7 @@
       Vulkan.Core10.CommandBuffer
       Vulkan.Core10.CommandBufferBuilding
       Vulkan.Core10.CommandPool
+      Vulkan.Core10.ComputePipeline
       Vulkan.Core10.DescriptorSet
       Vulkan.Core10.Device
       Vulkan.Core10.DeviceInitialization
@@ -130,7 +131,7 @@
       Vulkan.Core10.Enums.PrimitiveTopology
       Vulkan.Core10.Enums.QueryControlFlagBits
       Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits
-      Vulkan.Core10.Enums.QueryPoolCreateFlags
+      Vulkan.Core10.Enums.QueryPoolCreateFlagBits
       Vulkan.Core10.Enums.QueryResultFlagBits
       Vulkan.Core10.Enums.QueryType
       Vulkan.Core10.Enums.QueueFlagBits
@@ -159,6 +160,7 @@
       Vulkan.Core10.Fence
       Vulkan.Core10.FuncPointers
       Vulkan.Core10.FundamentalTypes
+      Vulkan.Core10.GraphicsPipeline
       Vulkan.Core10.Handles
       Vulkan.Core10.Image
       Vulkan.Core10.ImageView
@@ -167,7 +169,6 @@
       Vulkan.Core10.MemoryManagement
       Vulkan.Core10.OtherTypes
       Vulkan.Core10.Pass
-      Vulkan.Core10.Pipeline
       Vulkan.Core10.PipelineCache
       Vulkan.Core10.PipelineLayout
       Vulkan.Core10.Query
@@ -284,6 +285,31 @@
       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.Core14
+      Vulkan.Core14.Enums
+      Vulkan.Core14.Enums.BufferUsageFlags2
+      Vulkan.Core14.Enums.HostImageCopyFlagBits
+      Vulkan.Core14.Enums.LineRasterizationMode
+      Vulkan.Core14.Enums.MemoryUnmapFlagBits
+      Vulkan.Core14.Enums.PipelineCreateFlags2
+      Vulkan.Core14.Enums.PipelineRobustnessBufferBehavior
+      Vulkan.Core14.Enums.PipelineRobustnessImageBehavior
+      Vulkan.Core14.Enums.QueueGlobalPriority
+      Vulkan.Core14.Promoted_From_VK_EXT_host_image_copy
+      Vulkan.Core14.Promoted_From_VK_EXT_pipeline_protected_access
+      Vulkan.Core14.Promoted_From_VK_EXT_pipeline_robustness
+      Vulkan.Core14.Promoted_From_VK_KHR_dynamic_rendering_local_read
+      Vulkan.Core14.Promoted_From_VK_KHR_global_priority
+      Vulkan.Core14.Promoted_From_VK_KHR_index_type_uint8
+      Vulkan.Core14.Promoted_From_VK_KHR_line_rasterization
+      Vulkan.Core14.Promoted_From_VK_KHR_maintenance5
+      Vulkan.Core14.Promoted_From_VK_KHR_maintenance6
+      Vulkan.Core14.Promoted_From_VK_KHR_map_memory2
+      Vulkan.Core14.Promoted_From_VK_KHR_push_descriptor
+      Vulkan.Core14.Promoted_From_VK_KHR_shader_expect_assume
+      Vulkan.Core14.Promoted_From_VK_KHR_shader_float_controls2
+      Vulkan.Core14.Promoted_From_VK_KHR_shader_subgroup_rotate
+      Vulkan.Core14.Promoted_From_VK_KHR_vertex_attribute_divisor
       Vulkan.CStruct.Extends
       Vulkan.CStruct.Utils
       Vulkan.Dynamic
@@ -297,6 +323,7 @@
       Vulkan.Extensions.VK_AMD_display_native_hdr
       Vulkan.Extensions.VK_AMD_draw_indirect_count
       Vulkan.Extensions.VK_AMD_gcn_shader
+      Vulkan.Extensions.VK_AMD_gpa_interface
       Vulkan.Extensions.VK_AMD_gpu_shader_half_float
       Vulkan.Extensions.VK_AMD_gpu_shader_int16
       Vulkan.Extensions.VK_AMD_memory_overallocation_behavior
@@ -314,14 +341,23 @@
       Vulkan.Extensions.VK_AMD_shader_info
       Vulkan.Extensions.VK_AMD_shader_trinary_minmax
       Vulkan.Extensions.VK_AMD_texture_gather_bias_lod
+      Vulkan.Extensions.VK_AMDX_dense_geometry_format
       Vulkan.Extensions.VK_AMDX_shader_enqueue
       Vulkan.Extensions.VK_ANDROID_external_format_resolve
       Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer
+      Vulkan.Extensions.VK_ARM_data_graph
+      Vulkan.Extensions.VK_ARM_data_graph_instruction_set_tosa
+      Vulkan.Extensions.VK_ARM_data_graph_neural_accelerator_statistics
+      Vulkan.Extensions.VK_ARM_data_graph_optical_flow
+      Vulkan.Extensions.VK_ARM_format_pack
+      Vulkan.Extensions.VK_ARM_pipeline_opacity_micromap
       Vulkan.Extensions.VK_ARM_rasterization_order_attachment_access
       Vulkan.Extensions.VK_ARM_render_pass_striped
       Vulkan.Extensions.VK_ARM_scheduling_controls
       Vulkan.Extensions.VK_ARM_shader_core_builtins
       Vulkan.Extensions.VK_ARM_shader_core_properties
+      Vulkan.Extensions.VK_ARM_shader_instrumentation
+      Vulkan.Extensions.VK_ARM_tensors
       Vulkan.Extensions.VK_EXT_4444_formats
       Vulkan.Extensions.VK_EXT_acquire_drm_display
       Vulkan.Extensions.VK_EXT_acquire_xlib_display
@@ -336,6 +372,7 @@
       Vulkan.Extensions.VK_EXT_conditional_rendering
       Vulkan.Extensions.VK_EXT_conservative_rasterization
       Vulkan.Extensions.VK_EXT_custom_border_color
+      Vulkan.Extensions.VK_EXT_custom_resolve
       Vulkan.Extensions.VK_EXT_debug_marker
       Vulkan.Extensions.VK_EXT_debug_report
       Vulkan.Extensions.VK_EXT_debug_utils
@@ -346,6 +383,7 @@
       Vulkan.Extensions.VK_EXT_depth_clip_enable
       Vulkan.Extensions.VK_EXT_depth_range_unrestricted
       Vulkan.Extensions.VK_EXT_descriptor_buffer
+      Vulkan.Extensions.VK_EXT_descriptor_heap
       Vulkan.Extensions.VK_EXT_descriptor_indexing
       Vulkan.Extensions.VK_EXT_device_address_binding_report
       Vulkan.Extensions.VK_EXT_device_fault
@@ -363,9 +401,11 @@
       Vulkan.Extensions.VK_EXT_external_memory_acquire_unmodified
       Vulkan.Extensions.VK_EXT_external_memory_dma_buf
       Vulkan.Extensions.VK_EXT_external_memory_host
+      Vulkan.Extensions.VK_EXT_external_memory_metal
       Vulkan.Extensions.VK_EXT_filter_cubic
       Vulkan.Extensions.VK_EXT_fragment_density_map
       Vulkan.Extensions.VK_EXT_fragment_density_map2
+      Vulkan.Extensions.VK_EXT_fragment_density_map_offset
       Vulkan.Extensions.VK_EXT_fragment_shader_interlock
       Vulkan.Extensions.VK_EXT_frame_boundary
       Vulkan.Extensions.VK_EXT_full_screen_exclusive
@@ -392,6 +432,7 @@
       Vulkan.Extensions.VK_EXT_load_store_op_none
       Vulkan.Extensions.VK_EXT_map_memory_placed
       Vulkan.Extensions.VK_EXT_memory_budget
+      Vulkan.Extensions.VK_EXT_memory_decompression
       Vulkan.Extensions.VK_EXT_memory_priority
       Vulkan.Extensions.VK_EXT_mesh_shader
       Vulkan.Extensions.VK_EXT_metal_objects
@@ -413,29 +454,38 @@
       Vulkan.Extensions.VK_EXT_pipeline_robustness
       Vulkan.Extensions.VK_EXT_post_depth_coverage
       Vulkan.Extensions.VK_EXT_present_mode_fifo_latest_ready
+      Vulkan.Extensions.VK_EXT_present_timing
+      Vulkan.Extensions.VK_EXT_primitive_restart_index
       Vulkan.Extensions.VK_EXT_primitive_topology_list_restart
       Vulkan.Extensions.VK_EXT_primitives_generated_query
       Vulkan.Extensions.VK_EXT_private_data
       Vulkan.Extensions.VK_EXT_provoking_vertex
       Vulkan.Extensions.VK_EXT_queue_family_foreign
       Vulkan.Extensions.VK_EXT_rasterization_order_attachment_access
+      Vulkan.Extensions.VK_EXT_ray_tracing_invocation_reorder
       Vulkan.Extensions.VK_EXT_rgba10x6_formats
       Vulkan.Extensions.VK_EXT_robustness2
       Vulkan.Extensions.VK_EXT_sample_locations
       Vulkan.Extensions.VK_EXT_sampler_filter_minmax
       Vulkan.Extensions.VK_EXT_scalar_block_layout
       Vulkan.Extensions.VK_EXT_separate_stencil_usage
+      Vulkan.Extensions.VK_EXT_shader_64bit_indexing
       Vulkan.Extensions.VK_EXT_shader_atomic_float
       Vulkan.Extensions.VK_EXT_shader_atomic_float2
       Vulkan.Extensions.VK_EXT_shader_demote_to_helper_invocation
+      Vulkan.Extensions.VK_EXT_shader_float8
       Vulkan.Extensions.VK_EXT_shader_image_atomic_int64
+      Vulkan.Extensions.VK_EXT_shader_long_vector
       Vulkan.Extensions.VK_EXT_shader_module_identifier
       Vulkan.Extensions.VK_EXT_shader_object
       Vulkan.Extensions.VK_EXT_shader_replicated_composites
+      Vulkan.Extensions.VK_EXT_shader_split_barrier
       Vulkan.Extensions.VK_EXT_shader_stencil_export
       Vulkan.Extensions.VK_EXT_shader_subgroup_ballot
+      Vulkan.Extensions.VK_EXT_shader_subgroup_partitioned
       Vulkan.Extensions.VK_EXT_shader_subgroup_vote
       Vulkan.Extensions.VK_EXT_shader_tile_image
+      Vulkan.Extensions.VK_EXT_shader_uniform_buffer_unsized_array
       Vulkan.Extensions.VK_EXT_shader_viewport_index_layer
       Vulkan.Extensions.VK_EXT_subgroup_size_control
       Vulkan.Extensions.VK_EXT_subpass_merge_feedback
@@ -443,6 +493,7 @@
       Vulkan.Extensions.VK_EXT_swapchain_colorspace
       Vulkan.Extensions.VK_EXT_swapchain_maintenance1
       Vulkan.Extensions.VK_EXT_texel_buffer_alignment
+      Vulkan.Extensions.VK_EXT_texture_compression_astc_3d
       Vulkan.Extensions.VK_EXT_texture_compression_astc_hdr
       Vulkan.Extensions.VK_EXT_tooling_info
       Vulkan.Extensions.VK_EXT_transform_feedback
@@ -454,6 +505,7 @@
       Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state
       Vulkan.Extensions.VK_EXT_ycbcr_2plane_444_formats
       Vulkan.Extensions.VK_EXT_ycbcr_image_arrays
+      Vulkan.Extensions.VK_EXT_zero_initialize_device_memory
       Vulkan.Extensions.VK_FUCHSIA_buffer_collection
       Vulkan.Extensions.VK_FUCHSIA_external_memory
       Vulkan.Extensions.VK_FUCHSIA_external_semaphore
@@ -484,11 +536,15 @@
       Vulkan.Extensions.VK_KHR_compute_shader_derivatives
       Vulkan.Extensions.VK_KHR_cooperative_matrix
       Vulkan.Extensions.VK_KHR_copy_commands2
+      Vulkan.Extensions.VK_KHR_copy_memory_indirect
       Vulkan.Extensions.VK_KHR_create_renderpass2
       Vulkan.Extensions.VK_KHR_dedicated_allocation
       Vulkan.Extensions.VK_KHR_deferred_host_operations
+      Vulkan.Extensions.VK_KHR_depth_clamp_zero_one
       Vulkan.Extensions.VK_KHR_depth_stencil_resolve
       Vulkan.Extensions.VK_KHR_descriptor_update_template
+      Vulkan.Extensions.VK_KHR_device_address_commands
+      Vulkan.Extensions.VK_KHR_device_fault
       Vulkan.Extensions.VK_KHR_device_group
       Vulkan.Extensions.VK_KHR_device_group_creation
       Vulkan.Extensions.VK_KHR_display
@@ -521,17 +577,23 @@
       Vulkan.Extensions.VK_KHR_imageless_framebuffer
       Vulkan.Extensions.VK_KHR_incremental_present
       Vulkan.Extensions.VK_KHR_index_type_uint8
+      Vulkan.Extensions.VK_KHR_internally_synchronized_queues
       Vulkan.Extensions.VK_KHR_line_rasterization
       Vulkan.Extensions.VK_KHR_load_store_op_none
       Vulkan.Extensions.VK_KHR_maintenance1
+      Vulkan.Extensions.VK_KHR_maintenance10
+      Vulkan.Extensions.VK_KHR_maintenance11
       Vulkan.Extensions.VK_KHR_maintenance2
       Vulkan.Extensions.VK_KHR_maintenance3
       Vulkan.Extensions.VK_KHR_maintenance4
       Vulkan.Extensions.VK_KHR_maintenance5
       Vulkan.Extensions.VK_KHR_maintenance6
       Vulkan.Extensions.VK_KHR_maintenance7
+      Vulkan.Extensions.VK_KHR_maintenance8
+      Vulkan.Extensions.VK_KHR_maintenance9
       Vulkan.Extensions.VK_KHR_map_memory2
       Vulkan.Extensions.VK_KHR_multiview
+      Vulkan.Extensions.VK_KHR_opacity_micromap
       Vulkan.Extensions.VK_KHR_performance_query
       Vulkan.Extensions.VK_KHR_pipeline_binary
       Vulkan.Extensions.VK_KHR_pipeline_executable_properties
@@ -539,23 +601,31 @@
       Vulkan.Extensions.VK_KHR_portability_enumeration
       Vulkan.Extensions.VK_KHR_portability_subset
       Vulkan.Extensions.VK_KHR_present_id
+      Vulkan.Extensions.VK_KHR_present_id2
+      Vulkan.Extensions.VK_KHR_present_mode_fifo_latest_ready
       Vulkan.Extensions.VK_KHR_present_wait
+      Vulkan.Extensions.VK_KHR_present_wait2
       Vulkan.Extensions.VK_KHR_push_descriptor
       Vulkan.Extensions.VK_KHR_ray_query
       Vulkan.Extensions.VK_KHR_ray_tracing_maintenance1
       Vulkan.Extensions.VK_KHR_ray_tracing_pipeline
       Vulkan.Extensions.VK_KHR_ray_tracing_position_fetch
       Vulkan.Extensions.VK_KHR_relaxed_block_layout
+      Vulkan.Extensions.VK_KHR_robustness2
       Vulkan.Extensions.VK_KHR_sampler_mirror_clamp_to_edge
       Vulkan.Extensions.VK_KHR_sampler_ycbcr_conversion
       Vulkan.Extensions.VK_KHR_separate_depth_stencil_layouts
+      Vulkan.Extensions.VK_KHR_shader_abort
       Vulkan.Extensions.VK_KHR_shader_atomic_int64
+      Vulkan.Extensions.VK_KHR_shader_bfloat16
       Vulkan.Extensions.VK_KHR_shader_clock
+      Vulkan.Extensions.VK_KHR_shader_constant_data
       Vulkan.Extensions.VK_KHR_shader_draw_parameters
       Vulkan.Extensions.VK_KHR_shader_expect_assume
       Vulkan.Extensions.VK_KHR_shader_float16_int8
       Vulkan.Extensions.VK_KHR_shader_float_controls
       Vulkan.Extensions.VK_KHR_shader_float_controls2
+      Vulkan.Extensions.VK_KHR_shader_fma
       Vulkan.Extensions.VK_KHR_shader_integer_dot_product
       Vulkan.Extensions.VK_KHR_shader_maximal_reconvergence
       Vulkan.Extensions.VK_KHR_shader_non_semantic_info
@@ -565,15 +635,19 @@
       Vulkan.Extensions.VK_KHR_shader_subgroup_rotate
       Vulkan.Extensions.VK_KHR_shader_subgroup_uniform_control_flow
       Vulkan.Extensions.VK_KHR_shader_terminate_invocation
+      Vulkan.Extensions.VK_KHR_shader_untyped_pointers
       Vulkan.Extensions.VK_KHR_shared_presentable_image
       Vulkan.Extensions.VK_KHR_spirv_1_4
       Vulkan.Extensions.VK_KHR_storage_buffer_storage_class
       Vulkan.Extensions.VK_KHR_surface
+      Vulkan.Extensions.VK_KHR_surface_maintenance1
       Vulkan.Extensions.VK_KHR_surface_protected_capabilities
       Vulkan.Extensions.VK_KHR_swapchain
+      Vulkan.Extensions.VK_KHR_swapchain_maintenance1
       Vulkan.Extensions.VK_KHR_swapchain_mutable_format
       Vulkan.Extensions.VK_KHR_synchronization2
       Vulkan.Extensions.VK_KHR_timeline_semaphore
+      Vulkan.Extensions.VK_KHR_unified_image_layouts
       Vulkan.Extensions.VK_KHR_uniform_buffer_standard_layout
       Vulkan.Extensions.VK_KHR_variable_pointers
       Vulkan.Extensions.VK_KHR_vertex_attribute_divisor
@@ -594,9 +668,11 @@
       Vulkan.Extensions.VK_NV_acquire_winrt_display
       Vulkan.Extensions.VK_NV_clip_space_w_scaling
       Vulkan.Extensions.VK_NV_command_buffer_inheritance
+      Vulkan.Extensions.VK_NV_compute_occupancy_priority
       Vulkan.Extensions.VK_NV_compute_shader_derivatives
       Vulkan.Extensions.VK_NV_cooperative_matrix
       Vulkan.Extensions.VK_NV_cooperative_matrix2
+      Vulkan.Extensions.VK_NV_cooperative_vector
       Vulkan.Extensions.VK_NV_copy_memory_indirect
       Vulkan.Extensions.VK_NV_corner_sampled_image
       Vulkan.Extensions.VK_NV_coverage_reduction_mode
@@ -611,6 +687,7 @@
       Vulkan.Extensions.VK_NV_displacement_micromap
       Vulkan.Extensions.VK_NV_display_stereo
       Vulkan.Extensions.VK_NV_extended_sparse_address_space
+      Vulkan.Extensions.VK_NV_external_compute_queue
       Vulkan.Extensions.VK_NV_external_memory
       Vulkan.Extensions.VK_NV_external_memory_capabilities
       Vulkan.Extensions.VK_NV_external_memory_rdma
@@ -631,9 +708,12 @@
       Vulkan.Extensions.VK_NV_optical_flow
       Vulkan.Extensions.VK_NV_per_stage_descriptor_set
       Vulkan.Extensions.VK_NV_present_barrier
+      Vulkan.Extensions.VK_NV_present_metering
+      Vulkan.Extensions.VK_NV_push_constant_bank
       Vulkan.Extensions.VK_NV_raw_access_chains
       Vulkan.Extensions.VK_NV_ray_tracing
       Vulkan.Extensions.VK_NV_ray_tracing_invocation_reorder
+      Vulkan.Extensions.VK_NV_ray_tracing_linear_swept_spheres
       Vulkan.Extensions.VK_NV_ray_tracing_motion_blur
       Vulkan.Extensions.VK_NV_ray_tracing_validation
       Vulkan.Extensions.VK_NV_representative_fragment_test
@@ -650,24 +730,36 @@
       Vulkan.Extensions.VK_NVX_binary_import
       Vulkan.Extensions.VK_NVX_image_view_handle
       Vulkan.Extensions.VK_NVX_multiview_per_view_attributes
+      Vulkan.Extensions.VK_QCOM_cooperative_matrix_conversion
+      Vulkan.Extensions.VK_QCOM_data_graph_model
+      Vulkan.Extensions.VK_QCOM_elapsed_timer_query
       Vulkan.Extensions.VK_QCOM_filter_cubic_clamp
       Vulkan.Extensions.VK_QCOM_filter_cubic_weights
       Vulkan.Extensions.VK_QCOM_fragment_density_map_offset
       Vulkan.Extensions.VK_QCOM_image_processing
       Vulkan.Extensions.VK_QCOM_image_processing2
+      Vulkan.Extensions.VK_QCOM_image_processing3
       Vulkan.Extensions.VK_QCOM_multiview_per_view_render_areas
       Vulkan.Extensions.VK_QCOM_multiview_per_view_viewports
+      Vulkan.Extensions.VK_QCOM_queue_perf_hint
       Vulkan.Extensions.VK_QCOM_render_pass_shader_resolve
       Vulkan.Extensions.VK_QCOM_render_pass_store_ops
       Vulkan.Extensions.VK_QCOM_render_pass_transform
       Vulkan.Extensions.VK_QCOM_rotated_copy_commands
+      Vulkan.Extensions.VK_QCOM_shader_multiple_wait_queues
+      Vulkan.Extensions.VK_QCOM_tile_memory_heap
       Vulkan.Extensions.VK_QCOM_tile_properties
+      Vulkan.Extensions.VK_QCOM_tile_shading
       Vulkan.Extensions.VK_QCOM_ycbcr_degamma
       Vulkan.Extensions.VK_QNX_external_memory_screen_buffer
       Vulkan.Extensions.VK_QNX_screen_surface
       Vulkan.Extensions.VK_SEC_amigo_profiling
+      Vulkan.Extensions.VK_SEC_pipeline_cache_incremental_mode
+      Vulkan.Extensions.VK_SEC_throttle_hint
       Vulkan.Extensions.VK_VALVE_descriptor_set_host_mapping
+      Vulkan.Extensions.VK_VALVE_fragment_density_map_layered
       Vulkan.Extensions.VK_VALVE_mutable_descriptor_type
+      Vulkan.Extensions.VK_VALVE_shader_mixed_float_dot_product
       Vulkan.NamedType
       Vulkan.SPIRVRequirements
       Vulkan.Version
@@ -684,42 +776,29 @@
       DataKinds
       DefaultSignatures
       DeriveAnyClass
-      DeriveGeneric
       DerivingStrategies
       DuplicateRecordFields
-      FlexibleContexts
-      FlexibleInstances
       GADTs
-      GeneralizedNewtypeDeriving
-      InstanceSigs
       LambdaCase
       MagicHash
-      NamedFieldPuns
       NoMonomorphismRestriction
       OverloadedStrings
       PartialTypeSignatures
       PatternSynonyms
-      PolyKinds
       QuantifiedConstraints
-      RankNTypes
       RecordWildCards
       RoleAnnotations
-      ScopedTypeVariables
-      StandaloneDeriving
       Strict
-      TypeApplications
       TypeFamilyDependencies
-      TypeOperators
-      TypeSynonymInstances
       UndecidableInstances
       ViewPatterns
   ghc-options: -Wall -Wno-unticked-promoted-constructors -Wno-missing-pattern-synonym-signatures -Wno-unused-imports -Wno-missing-signatures -Wno-partial-type-signatures
   build-depends:
-      base <5
+      base >=4.16 && <5
     , bytestring
     , transformers
     , vector
-  default-language: Haskell2010
+  default-language: GHC2021
   if os(windows)
     extra-libraries:
         vulkan-1
@@ -753,33 +832,20 @@
       DataKinds
       DefaultSignatures
       DeriveAnyClass
-      DeriveGeneric
       DerivingStrategies
       DuplicateRecordFields
-      FlexibleContexts
-      FlexibleInstances
       GADTs
-      GeneralizedNewtypeDeriving
-      InstanceSigs
       LambdaCase
       MagicHash
-      NamedFieldPuns
       NoMonomorphismRestriction
       OverloadedStrings
       PartialTypeSignatures
       PatternSynonyms
-      PolyKinds
       QuantifiedConstraints
-      RankNTypes
       RecordWildCards
       RoleAnnotations
-      ScopedTypeVariables
-      StandaloneDeriving
       Strict
-      TypeApplications
       TypeFamilyDependencies
-      TypeOperators
-      TypeSynonymInstances
       UndecidableInstances
       ViewPatterns
   build-tool-depends:
@@ -792,4 +858,4 @@
     , tasty-hunit
     , template-haskell
     , vulkan
-  default-language: Haskell2010
+  default-language: GHC2021
